From: Dave Kleikamp Date: Tue, 18 Sep 2012 16:27:22 +0000 (-0500) Subject: jfs: Fix do_div precision in commit b40c2e66 X-Git-Tag: firefly_0821_release~3680^2~1928^2 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=84f4141ee3ea11035f741d4298cb6bbad1850fcf;p=firefly-linux-kernel-4.4.55.git jfs: Fix do_div precision in commit b40c2e66 In a hasty fix to replace a 64-bit division with do_div, I unintentionally assigned the divisor to a 32-bit variable. Signed-off-by: Dave Kleikamp Cc: Tino Reichardt --- diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index 174feb6a73c1..9a55f53be5ff 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c @@ -1641,14 +1641,15 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen) /* max blkno / nblocks pairs to trim */ int count = 0, range_cnt; + u64 max_ranges; /* prevent others from writing new stuff here, while trimming */ IWRITE_LOCK(ipbmap, RDWRLOCK_DMAP); nblocks = bmp->db_agfree[agno]; - range_cnt = nblocks; - do_div(range_cnt, (int)minlen); - range_cnt = min(range_cnt + 1, 32 * 1024); + max_ranges = nblocks; + do_div(max_ranges, minlen); + range_cnt = min_t(u64, max_ranges + 1, 32 * 1024); totrim = kmalloc(sizeof(struct range2trim) * range_cnt, GFP_NOFS); if (totrim == NULL) { jfs_error(bmp->db_ipbmap->i_sb,