Skip to content

Commit

Permalink
jfs: Fix do_div precision in commit b40c2e6
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Tino Reichardt <[email protected]>
  • Loading branch information
kleikamp committed Sep 18, 2012
1 parent 550d6da commit 84f4141
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions fs/jfs/jfs_dmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 84f4141

Please sign in to comment.