We need such a sanity check for wrong start, otherwise, even with a wrong start that''s larger than file size, we can end up not only changing inode''s force compress flag but also FS''s incompat flags. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> --- fs/btrfs/ioctl.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 69cd80d..262d9db 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -1152,8 +1152,11 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, u64 new_align = ~((u64)128 * 1024 - 1); struct page **pages = NULL; - if (extent_thresh == 0) - extent_thresh = 256 * 1024; + if (isize == 0) + return 0; + + if (range->start >= isize) + return -EINVAL; if (range->flags & BTRFS_DEFRAG_RANGE_COMPRESS) { if (range->compress_type > BTRFS_COMPRESS_TYPES) @@ -1162,8 +1165,8 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, compress_type = range->compress_type; } - if (isize == 0) - return 0; + if (extent_thresh == 0) + extent_thresh = 256 * 1024; /* * if we were not given a file, allocate a readahead -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Jan Schmidt
2013-Apr-16 08:44 UTC
Re: [PATCH] Btrfs: return error when we specify wrong start
On Tue, April 16, 2013 at 10:40 (+0200), Liu Bo wrote:> We need such a sanity check for wrong start, otherwise, even with > a wrong start that''s larger than file size, we can end up not only > changing inode''s force compress flag but also FS''s incompat flags.That reads out very cryptic. Can you please add something hinting at "defrag" to the title or at least the description? Thanks, -Jan -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Apr 16, 2013 at 10:44:33AM +0200, Jan Schmidt wrote:> On Tue, April 16, 2013 at 10:40 (+0200), Liu Bo wrote: > > We need such a sanity check for wrong start, otherwise, even with > > a wrong start that''s larger than file size, we can end up not only > > changing inode''s force compress flag but also FS''s incompat flags. > > That reads out very cryptic. Can you please add something hinting at "defrag" to > the title or at least the description?Oh yeah, my bad. thanks, liubo> > Thanks, > -Jan-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html