diff -urNp x-ref/fs/intermezzo/super.c x/fs/intermezzo/super.c --- x-ref/fs/intermezzo/super.c Wed Oct 16 02:13:15 2002 +++ x/fs/intermezzo/super.c Wed Oct 16 16:56:35 2002 @@ -279,6 +279,7 @@ struct super_block * presto_read_super(s EXIT; goto out_err; } + sb_limit_maxbytes(sb); cache->cache_sb = sb; cache->cache_root = dget(sb->s_root); diff -urNp x-ref/fs/super.c x/fs/super.c --- x-ref/fs/super.c Wed Oct 16 16:53:57 2002 +++ x/fs/super.c Wed Oct 16 16:54:03 2002 @@ -648,6 +648,12 @@ retry: 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) { @@ -725,6 +731,7 @@ restart: 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; @@ -755,6 +762,7 @@ static struct super_block *get_sb_nodev( remove_super(s); return ERR_PTR(-EINVAL); } + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; return s; } @@ -778,6 +786,7 @@ static struct super_block *get_sb_single remove_super(s); return ERR_PTR(-EINVAL); } + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; } do_remount_sb(s, flags, data); diff -urNp x-ref/include/linux/fs.h x/include/linux/fs.h --- x-ref/include/linux/fs.h Wed Oct 16 16:53:57 2002 +++ x/include/linux/fs.h Wed Oct 16 16:54:03 2002 @@ -562,6 +562,8 @@ extern int init_private_file(struct file #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 -urNp x-ref/kernel/ksyms.c x/kernel/ksyms.c --- x-ref/kernel/ksyms.c Wed Oct 16 16:53:57 2002 +++ x/kernel/ksyms.c Wed Oct 16 16:54:03 2002 @@ -533,6 +533,7 @@ EXPORT_SYMBOL(is_bad_inode); EXPORT_SYMBOL(event); EXPORT_SYMBOL(brw_page); EXPORT_SYMBOL(__inode_dir_notify); +EXPORT_SYMBOL(sb_limit_maxbytes); #ifdef CONFIG_UID16 EXPORT_SYMBOL(overflowuid);