diff options
author | Nathan Scott <nathans@sgi.com> | 2006-09-27 20:56:26 -0400 |
---|---|---|
committer | Tim Shimmin <tes@sgi.com> | 2006-09-27 20:56:26 -0400 |
commit | 673cdf5c72ff9551df08a71f2ac1a8fe02888e8d (patch) | |
tree | 94857685aa78d1b1edc7f526a961ff59549cf415 /fs | |
parent | 87395deb0b3d174ffcc7f66569764f0715ac5174 (diff) |
[XFS] Fix rounding bug in xfs_free_file_space found by sparse checking.
SGI-PV: 954580
SGI-Modid: xfs-linux-melb:xfs-kern:26551a
Signed-off-by: Nathan Scott <nathans@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 23cfa5837728..4fbc3e1cac00 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -4272,7 +4272,7 @@ xfs_free_file_space( | |||
4272 | xfs_mount_t *mp; | 4272 | xfs_mount_t *mp; |
4273 | int nimap; | 4273 | int nimap; |
4274 | uint resblks; | 4274 | uint resblks; |
4275 | int rounding; | 4275 | uint rounding; |
4276 | int rt; | 4276 | int rt; |
4277 | xfs_fileoff_t startoffset_fsb; | 4277 | xfs_fileoff_t startoffset_fsb; |
4278 | xfs_trans_t *tp; | 4278 | xfs_trans_t *tp; |
@@ -4313,8 +4313,7 @@ xfs_free_file_space( | |||
4313 | vn_iowait(vp); /* wait for the completion of any pending DIOs */ | 4313 | vn_iowait(vp); /* wait for the completion of any pending DIOs */ |
4314 | } | 4314 | } |
4315 | 4315 | ||
4316 | rounding = MAX((__uint8_t)(1 << mp->m_sb.sb_blocklog), | 4316 | rounding = max_t(uint, 1 << mp->m_sb.sb_blocklog, NBPP); |
4317 | (__uint8_t)NBPP); | ||
4318 | ilen = len + (offset & (rounding - 1)); | 4317 | ilen = len + (offset & (rounding - 1)); |
4319 | ioffset = offset & ~(rounding - 1); | 4318 | ioffset = offset & ~(rounding - 1); |
4320 | if (ilen & (rounding - 1)) | 4319 | if (ilen & (rounding - 1)) |