From: Tao Ma <tm@tao.ma>
To: linux-ext4@vger.kernel.org
Cc: tytso@mit.edu
Subject: [PATCH 1/4] ext4: fix trim length underflow with small trim length.
Date: Thu, 30 Jun 2011 22:50:36 +0800 [thread overview]
Message-ID: <1309445439-3753-1-git-send-email-tm@tao.ma> (raw)
In-Reply-To: <4E0C8B6C.8030403@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.
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
---
fs/ext4/mballoc.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 6ed859d..2336424 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -4904,6 +4904,9 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
if (unlikely(minlen > EXT4_BLOCKS_PER_GROUP(sb)))
return -EINVAL;
+ if (start >= ext4_blocks_count(EXT4_SB(sb)->s_es) ||
+ start + len <= first_data_blk)
+ goto out;
if (start < first_data_blk) {
len -= first_data_blk - start;
start = first_data_blk;
@@ -4952,5 +4955,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-06-30 14:50 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-30 14:42 [PATCH 0/4 RESEND] ext4 trim bug fixes and improvement Tao Ma
2011-06-30 14:50 ` Tao Ma [this message]
2011-07-01 9:45 ` [PATCH 1/4] ext4: fix trim length underflow with small trim length Lukas Czerner
2011-07-01 10:15 ` Tao Ma
2011-07-01 10:20 ` Lukas Czerner
2011-06-30 14:50 ` [PATCH 2/4] ext4: speed up group trim with the right free block count Tao Ma
2011-06-30 16:35 ` Andreas Dilger
2011-07-01 9:48 ` Lukas Czerner
2011-06-30 14:50 ` [PATCH 3/4] ext4: Add new ext4 trim tracepoints Tao Ma
2011-07-01 9:54 ` Lukas Czerner
2011-06-30 14:50 ` [PATCH 4/4] ext4: Speed up FITRIM by recording flags in ext4_group_info Tao Ma
2011-07-01 10:09 ` Lukas Czerner
2011-07-01 10:46 ` Tao Ma
2011-07-01 11:03 ` Lukas Czerner
-- strict thread matches above, loose matches on Subject: below --
2011-02-09 5:52 [PATCH 0/4] EXT4 trim bug fixes and improvement Tao Ma
2011-02-09 5:57 ` [PATCH 1/4] ext4: fix trim length underflow with small trim length Tao Ma
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=1309445439-3753-1-git-send-email-tm@tao.ma \
--to=tm@tao.ma \
--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).