diff options
author | Brian Foster <bfoster@redhat.com> | 2013-02-22 13:32:56 -0500 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2013-03-07 13:21:39 -0500 |
commit | e78c420bfc2608bb5f9a0b9165b1071c1e31166a (patch) | |
tree | 1d780da1a8a49c9eed1d390b92ece519f1fe9c3f /fs/xfs/xfs_iomap.c | |
parent | 6dbe51c251a327e012439c4772097a13df43c5b8 (diff) |
xfs: fix potential infinite loop in xfs_iomap_prealloc_size()
If freesp == 0, we could end up in an infinite loop while squashing
the preallocation. Break the loop when we've killed the prealloc
entirely.
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_iomap.c')
-rw-r--r-- | fs/xfs/xfs_iomap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 912d83d8860a..b0b0f448e843 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c | |||
@@ -413,7 +413,7 @@ xfs_iomap_prealloc_size( | |||
413 | * have a large file on a small filesystem and the above | 413 | * have a large file on a small filesystem and the above |
414 | * lowspace thresholds are smaller than MAXEXTLEN. | 414 | * lowspace thresholds are smaller than MAXEXTLEN. |
415 | */ | 415 | */ |
416 | while (alloc_blocks >= freesp) | 416 | while (alloc_blocks && alloc_blocks >= freesp) |
417 | alloc_blocks >>= 4; | 417 | alloc_blocks >>= 4; |
418 | } | 418 | } |
419 | 419 | ||