summaryrefslogtreecommitdiff
path: root/fs/fat
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2014-11-24 11:50:46 -0500
committerTom Rini <trini@ti.com>2014-12-01 15:21:57 -0500
commit9e374e7b729dc9f68be89cd3e3b1d4d48c768ecf (patch)
tree159d3795f8fd20087fa4123a26c3e2efdde02121 /fs/fat
parente17e998d7fee2e7d381b7bff21aca3714387d5d7 (diff)
downloadu-boot-imx-9e374e7b729dc9f68be89cd3e3b1d4d48c768ecf.zip
u-boot-imx-9e374e7b729dc9f68be89cd3e3b1d4d48c768ecf.tar.gz
u-boot-imx-9e374e7b729dc9f68be89cd3e3b1d4d48c768ecf.tar.bz2
fs/ext4/ext4fs.c, fs/fs.c fs/fat/fat_write.c: Adjust 64bit math methods
The changes to introduce loff_t into filesize means that we need to do 64bit math on 32bit platforms. Make sure we use the right wrappers for these operations. Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Suriyan Ramasami <suriyan.r@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@ti.com> Tested-by: Pierre Aubert <p.aubert@staubli.com>
Diffstat (limited to 'fs/fat')
-rw-r--r--fs/fat/fat_write.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
index 88dd495..98b88ad 100644
--- a/fs/fat/fat_write.c
+++ b/fs/fat/fat_write.c
@@ -13,6 +13,8 @@
#include <asm/byteorder.h>
#include <part.h>
#include <linux/ctype.h>
+#include <div64.h>
+#include <linux/math64.h>
#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;
}