From: Tao Ma <tm@tao.ma>
To: linux-ext4@vger.kernel.org
Cc: tytso@mit.edu, Lukas Czerner <lczerner@redhat.com>
Subject: [PATCH 1/5] ext4: fix trim length underflow with small trim length.
Date: Fri, 1 Jul 2011 23:27:52 +0800 [thread overview]
Message-ID: <1309534076-2784-1-git-send-email-tm@tao.ma> (raw)
In-Reply-To: <4E0DE63A.7030103@tao.ma>
From: Tao Ma <boyu.mt@taobao.com>
In 0f0a25b, we adjust 'len' with s_first_data_block - start, but
it could underflow in case blocksize=1K, fstrim_range.len=512 and
fstrim_range.start = 0. In this case, when we run the code:
len -= first_data_blk - start; len will be underflow to -1ULL.
In the end, although we are safe that last_group check later will limit
the trim to the whole volume, but that isn't what the user really want.
So this patch fix it. It also adds the check for 'start' like ext3 so that
we can break immediately if the start is invalid.
Cc: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
---
fs/ext4/mballoc.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 6ed859d..604b706 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -4904,6 +4904,8 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
if (unlikely(minlen > EXT4_BLOCKS_PER_GROUP(sb)))
return -EINVAL;
+ if (start + len <= first_data_blk)
+ goto out;
if (start < first_data_blk) {
len -= first_data_blk - start;
start = first_data_blk;
@@ -4952,5 +4954,6 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
}
range->len = trimmed * sb->s_blocksize;
+out:
return ret;
}
--
1.7.4
next prev parent reply other threads:[~2011-07-01 15:30 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-01 15:22 [PATCH 0/5 RESEND V2] ext4: trim bug fixes and improvements Tao Ma
2011-07-01 15:27 ` Tao Ma [this message]
2011-07-01 15:27 ` [PATCH 2/5] ext4: speed up group trim with the right free block count Tao Ma
2011-07-11 4:06 ` Ted Ts'o
2011-07-01 15:27 ` [PATCH 3/5] ext4: Add new ext4 trim tracepoints Tao Ma
2011-07-11 4:07 ` Ted Ts'o
2011-07-01 15:27 ` [PATCH 4/5] ext4: Speed up FITRIM by recording flags in ext4_group_info Tao Ma
2011-07-11 4:07 ` Ted Ts'o
2011-07-01 15:27 ` [PATCH 5/5] ext4: Change the wrong param comment for ext4_trim_all_free Tao Ma
2011-07-11 4:07 ` Ted Ts'o
2011-07-11 4:06 ` [PATCH 1/5] ext4: fix trim length underflow with small trim length Ted Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1309534076-2784-1-git-send-email-tm@tao.ma \
--to=tm@tao.ma \
--cc=lczerner@redhat.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).