X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Ffat%2Ffat_write.c;h=98b88add83c507116bfa05a7927983c785a13a2c;hb=e2ffee6356a235aa779fb289970beccff48791aa;hp=88dd4959ccde28f0e541dfc31f5fb924988685c1;hpb=746667f1e56bf08d03e66a178df3c4f4f6c806e1;p=karo-tx-uboot.git diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index 88dd4959cc..98b88add83 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -13,6 +13,8 @@ #include #include #include +#include +#include #include "fat.c" static void uppercase(char *str, int len) @@ -770,7 +772,7 @@ static void fill_dentry(fsdata *mydata, dir_entry *dentptr, */ static int check_overflow(fsdata *mydata, __u32 clustnum, loff_t size) { - __u32 startsect, sect_num; + __u32 startsect, sect_num, offset; if (clustnum > 0) { startsect = mydata->data_begin + @@ -779,13 +781,13 @@ static int check_overflow(fsdata *mydata, __u32 clustnum, loff_t size) startsect = mydata->rootdir_sect; } - sect_num = size / mydata->sect_size; - if (size % mydata->sect_size) + sect_num = div_u64_rem(size, mydata->sect_size, &offset); + + if (offset != 0) sect_num++; if (startsect + sect_num > cur_part_info.start + total_sector) return -1; - return 0; }