diff options
Diffstat (limited to 'fs/xfs/xfs_bmap_util.c')
-rw-r--r-- | fs/xfs/xfs_bmap_util.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index 8b75dcea5966..828532ce0adc 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c | |||
@@ -1311,8 +1311,16 @@ xfs_free_file_space( | |||
1311 | /* | 1311 | /* |
1312 | * Now that we've unmap all full blocks we'll have to zero out any | 1312 | * Now that we've unmap all full blocks we'll have to zero out any |
1313 | * partial block at the beginning and/or end. xfs_zero_range is | 1313 | * partial block at the beginning and/or end. xfs_zero_range is |
1314 | * smart enough to skip any holes, including those we just created. | 1314 | * smart enough to skip any holes, including those we just created, |
1315 | * but we must take care not to zero beyond EOF and enlarge i_size. | ||
1315 | */ | 1316 | */ |
1317 | |||
1318 | if (offset >= XFS_ISIZE(ip)) | ||
1319 | return 0; | ||
1320 | |||
1321 | if (offset + len > XFS_ISIZE(ip)) | ||
1322 | len = XFS_ISIZE(ip) - offset; | ||
1323 | |||
1316 | return xfs_zero_range(ip, offset, len, NULL); | 1324 | return xfs_zero_range(ip, offset, len, NULL); |
1317 | } | 1325 | } |
1318 | 1326 | ||