diff -urN 2.4.19pre7/fs/intermezzo/super.c maxbytes/fs/intermezzo/super.c --- 2.4.19pre7/fs/intermezzo/super.c Mon Feb 25 22:05:08 2002 +++ maxbytes/fs/intermezzo/super.c Mon Apr 29 14:30:23 2002 @@ -318,6 +318,7 @@ EXIT; goto out_err; } + sb_limit_maxbytes(presto_sb); cache->cache_sb = mysb; diff -urN 2.4.19pre7/fs/super.c maxbytes/fs/super.c --- 2.4.19pre7/fs/super.c Tue Apr 16 08:11:57 2002 +++ maxbytes/fs/super.c Mon Apr 29 14:30:23 2002 @@ -642,6 +642,12 @@ return s; } +void sb_limit_maxbytes(struct super_block * s) +{ + if (s->s_maxbytes > MAX_LFS_FILESIZE) + s->s_maxbytes = MAX_LFS_FILESIZE; +} + static struct super_block *get_sb_bdev(struct file_system_type *fs_type, int flags, char *dev_name, void * data) { @@ -720,6 +726,7 @@ insert_super(s, fs_type); if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) goto Einval; + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; path_release(&nd); return s; @@ -750,6 +757,7 @@ remove_super(s); return ERR_PTR(-EINVAL); } + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; return s; } @@ -773,6 +781,7 @@ remove_super(s); return ERR_PTR(-EINVAL); } + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; } do_remount_sb(s, flags, data); diff -urN 2.4.19pre7/include/linux/fs.h maxbytes/include/linux/fs.h --- 2.4.19pre7/include/linux/fs.h Tue Apr 16 08:12:05 2002 +++ maxbytes/include/linux/fs.h Mon Apr 29 14:30:23 2002 @@ -559,6 +559,8 @@ #define MAX_LFS_FILESIZE 0x7fffffffffffffff #endif +extern void sb_limit_maxbytes(struct super_block * s); + #define FL_POSIX 1 #define FL_FLOCK 2 #define FL_BROKEN 4 /* broken flock() emulation */ diff -urN 2.4.19pre7/kernel/ksyms.c maxbytes/kernel/ksyms.c --- 2.4.19pre7/kernel/ksyms.c Tue Apr 16 08:12:09 2002 +++ maxbytes/kernel/ksyms.c Mon Apr 29 14:30:29 2002 @@ -519,6 +519,7 @@ EXPORT_SYMBOL(is_bad_inode); EXPORT_SYMBOL(event); EXPORT_SYMBOL(brw_page); +EXPORT_SYMBOL(sb_limit_maxbytes); #ifdef CONFIG_UID16 EXPORT_SYMBOL(overflowuid);