2000-12-13 08:45:07

by Andreas Dilger

[permalink] [raw]
Subject: [PATCH] 2.2.18 ext2 large file bug?

Hello,
while looking at the COMPAT flag patches I made, I noticed the following
in the ext2/ext3 code. I believe that this bug is fixed in 2.4, but it
also needs to be fixed in 2.2. Basically, we are checking for an ext2
large file, which would be a file > 2GB on systems that don't support
such. However, we are checking for a file > 8GB which is clearly wrong.
The ext3 version of the patch is also attached.

Cheers, Andreas
==========================================================================
--- linux-2.2.18pre27-TL/fs/ext2/file.c.orig Mon Dec 11 22:43:17 2000
+++ linux-2.2.18pre27-TL/fs/ext2/file.c Wed Dec 13 00:13:00 2000
@@ -208,7 +208,7 @@
if (!count)
return -EFBIG;
}
- if (((pos + count) >> 31) &&
+ if (((pos + count) >> 33) &&
!(sb->u.ext2_sb.s_es->s_feature_ro_compat &
cpu_to_le32(EXT2_FEATURE_RO_COMPAT_LARGE_FILE))) {
/* If this is the first large file created, add a flag

--- linux-2.2.18pre27-TL/fs/ext3/file.c.orig Mon Dec 11 22:43:17 2000
+++ linux-2.2.18pre27-TL/fs/ext3/file.c Wed Dec 13 00:13:00 2000
@@ -208,7 +208,7 @@
if (!count)
return -EFBIG;
}
- if (((pos + count) >> 31) &&
+ if (((pos + count) >> 33) &&
!EXT3_HAS_RO_COMPAT_FEATURE(sb,
EXT3_FEATURE_RO_COMPAT_LARGE_FILE)) {
/* If this is the first large file created, add a flag
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert


2000-12-13 09:13:41

by Alexander Viro

[permalink] [raw]
Subject: Re: [PATCH] 2.2.18 ext2 large file bug?



On Wed, 13 Dec 2000, Andreas Dilger wrote:

> Hello,
> while looking at the COMPAT flag patches I made, I noticed the following
> in the ext2/ext3 code. I believe that this bug is fixed in 2.4, but it
> also needs to be fixed in 2.2. Basically, we are checking for an ext2
> large file, which would be a file > 2GB on systems that don't support
> such. However, we are checking for a file > 8GB which is clearly wrong.
> The ext3 version of the patch is also attached.

> Cheers, Andreas
> ==========================================================================
> --- linux-2.2.18pre27-TL/fs/ext2/file.c.orig Mon Dec 11 22:43:17 2000
> +++ linux-2.2.18pre27-TL/fs/ext2/file.c Wed Dec 13 00:13:00 2000
> @@ -208,7 +208,7 @@
> if (!count)
> return -EFBIG;
> }
> - if (((pos + count) >> 31) &&
> + if (((pos + count) >> 33) &&

(x>>33) is the same as (x / (1LL<<33)). I.e. _with_ your change it
becomes "file >= 8Gb", instead of the current (correct) "file >= 2Gb".

Cheers,
Al
PS: Guys, 'fess up, who had written the following line?
for (i = 0, ino = SYSV_ROOT_INO+1, block = sb->sv_firstinodezone, j = SYSV_ROOT_INO ; i < sb->sv_fic_size && block < sb->sv_firstdatazone ; block++, j = 0) {
And yes, that's one line. fs/sysv/ialloc.c...

--
Exercise 1-3. Read this code aloud:
? if ((falloc(SMRHSHSCRTCH, S_IFEXT|0644, MAXRODDHSH)) < 0)
? ...
K&P

2000-12-13 09:24:23

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH] 2.2.18 ext2 large file bug?

Al Viro writes:
> (x>>33) is the same as (x / (1LL<<33)). I.e. _with_ your change it
> becomes "file >= 8Gb", instead of the current (correct) "file >= 2Gb".

OOPS. My bad. You are right. Time to hide head in sand.

Cheers, Andreas
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert

2000-12-13 15:15:35

by Alan

[permalink] [raw]
Subject: Re: [PATCH] 2.2.18 ext2 large file bug?

> also needs to be fixed in 2.2. Basically, we are checking for an ext2
> large file, which would be a file > 2GB on systems that don't support
> such. However, we are checking for a file > 8GB which is clearly wrong.
> The ext3 version of the patch is also attached.

Umm..

x>>33

is checking 8Gig

x>>31

is checking 2Gig

So your patch seems backwards

2000-12-13 15:16:15

by Alan

[permalink] [raw]
Subject: Re: [PATCH] 2.2.18 ext2 large file bug?

Umm ignore that my brain is backwards.

Alan