]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
jfs: Fix do_div precision in commit b40c2e66
authorDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 18 Sep 2012 16:27:22 +0000 (11:27 -0500)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 18 Sep 2012 16:27:22 +0000 (11:27 -0500)
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 <dave.kleikamp@oracle.com>
Cc: Tino Reichardt <milky-kernel@mcmilk.de>
fs/jfs/jfs_dmap.c

index 174feb6a73c1dc9c45db5f20da9fb9eceee4c31f..9a55f53be5ff6a38678a8d52253b14c7e8004941 100644 (file)
@@ -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,