Messages in this thread Patch in this message | | | Date | Tue, 02 Dec 2008 22:01:14 +0100 | From | Roel Kluin <> | Subject | [PATCH v4] ext3, ext4: make i signed in do_split() |
| |
Andrew Morton wrote: > On Sat, 29 Nov 2008 04:40:42 -0500 > roel kluin <roel.kluin@gmail.com> wrote: > >> unsigned i >= 0 is always true
>> - for (i = count-1; i >= 0; i--) { >> + for (i = count-1; i < count; i--) { break;
> A local variable called `i' should always have signed type. In fact, > it should have `int' type.
You are right. although count is unsigned, dx_make_map() returns int, which is assigned to count, so this should fit in an int. (If you ack this, make sure to get this patch, and not one of the others.) --------------->8----------------8<-------------------- Make i signed, otherwise the loop will not end when it becomes negative.
Signed-off-by: Roel Kluin <roel.kluin@gmail.com> --- diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c index 3e5edc9..4846327 100644 --- a/fs/ext3/namei.c +++ b/fs/ext3/namei.c @@ -1156,9 +1156,9 @@ static struct ext3_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, u32 hash2; struct dx_map_entry *map; char *data1 = (*bh)->b_data, *data2; - unsigned split, move, size, i; + unsigned split, move, size; struct ext3_dir_entry_2 *de = NULL, *de2; - int err = 0; + int err = 0, i; bh2 = ext3_append (handle, dir, &newblock, &err); if (!(bh2)) { diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 63adcb7..bca90c1 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -1166,9 +1166,9 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, u32 hash2; struct dx_map_entry *map; char *data1 = (*bh)->b_data, *data2; - unsigned split, move, size, i; + unsigned split, move, size; struct ext4_dir_entry_2 *de = NULL, *de2; - int err = 0; + int err = 0, i; bh2 = ext4_append (handle, dir, &newblock, &err); if (!(bh2)) {
| |