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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to