lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 3 Mar 2013 09:29:34 -0600
From:	"Serge E. Hallyn" <serge@...lyn.com>
To:	"Eric W. Biederman" <ebiederm@...ssion.com>
Cc:	"Serge E. Hallyn" <serge@...lyn.com>,
	Kees Cook <keescook@...gle.com>,
	LKML <linux-kernel@...r.kernel.org>,
	Serge Hallyn <serge.hallyn@...onical.com>,
	Brad Spengler <spender@...ecurity.net>,
	Al Viro <viro@...iv.linux.org.uk>,
	Eric Paris <eparis@...hat.com>,
	Rusty Russell <rusty@...tcorp.com.au>,
	linux-fsdevel@...r.kernel.org
Subject: Re: [RFC][PATCH] fs: Limit sys_mount to only loading filesystem
 modules.

Quoting Eric W. Biederman (ebiederm@...ssion.com):
> 
> Modify the request_module to prefix the file system type with "fs-"
> and add aliases to all of the filesystems that can be built as modules
> to match.
> 
> A common practice is to build all of the kernel code and leave code
> that is not commonly needed as modules, with the result that many
> users are exposed to any bug anywhere in the kernel.
> 
> Looking for filesystems with a fs- prefix limits the pool of possible
> modules that can be loaded by mount to just filesystems trivially
> making things safer with no real cost.
> 
> Using aliases means user space can control the policy of which
> filesystem modules are auto-loaded by editing /etc/modprobe.d/*.conf
> with blacklist and alias directives.  Allowing simple, safe,
> well understood work-arounds to known problematic software.
> 
> This also addresses a rare but unfortunate problem where the filesystem
> name is not the same as it's module name and module auto-loading
> would not work.  While writing this patch I saw a handful of such
> cases.  The most significant being autofs that lives in the module
> autofs4.
> 
> Signed-off-by: "Eric W. Biederman" <ebiederm@...ssion.com>

Acked-by: Serge Hallyn <serge.hallyn@...onical.com>

> ---
>  arch/ia64/kernel/perfmon.c                |    1 +
>  arch/powerpc/platforms/cell/spufs/inode.c |    1 +
>  arch/s390/hypfs/inode.c                   |    1 +
>  drivers/firmware/efivars.c                |    1 +
>  drivers/infiniband/hw/ipath/ipath_fs.c    |    1 +
>  drivers/infiniband/hw/qib/qib_fs.c        |    1 +
>  drivers/misc/ibmasm/ibmasmfs.c            |    1 +
>  drivers/mtd/mtdchar.c                     |    1 +
>  drivers/oprofile/oprofilefs.c             |    1 +
>  drivers/staging/ccg/f_fs.c                |    1 +
>  drivers/usb/gadget/f_fs.c                 |    1 +
>  drivers/usb/gadget/inode.c                |    1 +
>  drivers/xen/xenfs/super.c                 |    1 +
>  fs/9p/vfs_super.c                         |    1 +
>  fs/adfs/super.c                           |    1 +
>  fs/affs/super.c                           |    1 +
>  fs/afs/super.c                            |    1 +
>  fs/autofs4/init.c                         |    1 +
>  fs/befs/linuxvfs.c                        |    1 +
>  fs/bfs/inode.c                            |    1 +
>  fs/binfmt_misc.c                          |    1 +
>  fs/btrfs/super.c                          |    1 +
>  fs/ceph/super.c                           |    1 +
>  fs/coda/inode.c                           |    1 +
>  fs/configfs/mount.c                       |    1 +
>  fs/cramfs/inode.c                         |    1 +
>  fs/debugfs/inode.c                        |    1 +
>  fs/devpts/inode.c                         |    1 +
>  fs/ecryptfs/main.c                        |    1 +
>  fs/efs/super.c                            |    1 +
>  fs/exofs/super.c                          |    1 +
>  fs/ext2/super.c                           |    1 +
>  fs/ext3/super.c                           |    1 +
>  fs/ext4/super.c                           |    5 +++--
>  fs/f2fs/super.c                           |    1 +
>  fs/fat/namei_msdos.c                      |    1 +
>  fs/fat/namei_vfat.c                       |    1 +
>  fs/filesystems.c                          |    2 +-
>  fs/freevxfs/vxfs_super.c                  |    2 +-
>  fs/fuse/control.c                         |    1 +
>  fs/fuse/inode.c                           |    2 ++
>  fs/gfs2/ops_fstype.c                      |    4 +++-
>  fs/hfs/super.c                            |    1 +
>  fs/hfsplus/super.c                        |    1 +
>  fs/hppfs/hppfs.c                          |    1 +
>  fs/hugetlbfs/inode.c                      |    1 +
>  fs/isofs/inode.c                          |    3 +--
>  fs/jffs2/super.c                          |    1 +
>  fs/jfs/super.c                            |    1 +
>  fs/logfs/super.c                          |    1 +
>  fs/minix/inode.c                          |    1 +
>  fs/ncpfs/inode.c                          |    1 +
>  fs/nfs/super.c                            |    3 ++-
>  fs/nfsd/nfsctl.c                          |    1 +
>  fs/nilfs2/super.c                         |    1 +
>  fs/ntfs/super.c                           |    1 +
>  fs/ocfs2/dlmfs/dlmfs.c                    |    1 +
>  fs/omfs/inode.c                           |    1 +
>  fs/openpromfs/inode.c                     |    1 +
>  fs/qnx4/inode.c                           |    1 +
>  fs/qnx6/inode.c                           |    1 +
>  fs/reiserfs/super.c                       |    1 +
>  fs/romfs/super.c                          |    1 +
>  fs/sysv/super.c                           |    3 ++-
>  fs/ubifs/super.c                          |    1 +
>  fs/ufs/super.c                            |    1 +
>  fs/xfs/xfs_super.c                        |    1 +
>  include/linux/fs.h                        |    2 ++
>  net/sunrpc/rpc_pipe.c                     |    4 +---
>  69 files changed, 77 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
> index ea39eba..db6e866 100644
> --- a/arch/ia64/kernel/perfmon.c
> +++ b/arch/ia64/kernel/perfmon.c
> @@ -619,6 +619,7 @@ static struct file_system_type pfm_fs_type = {
>  	.mount    = pfmfs_mount,
>  	.kill_sb  = kill_anon_super,
>  };
> +MODULE_ALIAS_FS("pfmfs");
>  
>  DEFINE_PER_CPU(unsigned long, pfm_syst_info);
>  DEFINE_PER_CPU(struct task_struct *, pmu_owner);
> diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
> index dba1ce2..db6d080 100644
> --- a/arch/powerpc/platforms/cell/spufs/inode.c
> +++ b/arch/powerpc/platforms/cell/spufs/inode.c
> @@ -771,6 +771,7 @@ static struct file_system_type spufs_type = {
>  	.mount = spufs_mount,
>  	.kill_sb = kill_litter_super,
>  };
> +MODULE_ALIAS_FS("spufs");
>  
>  static int __init spufs_init(void)
>  {
> diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
> index 06ea69b..50d9bde 100644
> --- a/arch/s390/hypfs/inode.c
> +++ b/arch/s390/hypfs/inode.c
> @@ -458,6 +458,7 @@ static struct file_system_type hypfs_type = {
>  	.mount		= hypfs_mount,
>  	.kill_sb	= hypfs_kill_super
>  };
> +MODULE_ALIAS_FS("s390_hypfs");
>  
>  static const struct super_operations hypfs_s_ops = {
>  	.statfs		= simple_statfs,
> diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
> index fed08b6..6881e2e 100644
> --- a/drivers/firmware/efivars.c
> +++ b/drivers/firmware/efivars.c
> @@ -1116,6 +1116,7 @@ static struct file_system_type efivarfs_type = {
>  	.mount   = efivarfs_mount,
>  	.kill_sb = efivarfs_kill_sb,
>  };
> +MODULE_ALIAS_FS("efivarfs");
>  
>  static const struct inode_operations efivarfs_dir_inode_operations = {
>  	.lookup = simple_lookup,
> diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c
> index a4de9d5..2c082cd 100644
> --- a/drivers/infiniband/hw/ipath/ipath_fs.c
> +++ b/drivers/infiniband/hw/ipath/ipath_fs.c
> @@ -410,6 +410,7 @@ static struct file_system_type ipathfs_fs_type = {
>  	.mount =	ipathfs_mount,
>  	.kill_sb =	ipathfs_kill_super,
>  };
> +MODULE_ALIAS_FS("ipathfs");
>  
>  int __init ipath_init_ipathfs(void)
>  {
> diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c
> index 65a2a23..9566ceb 100644
> --- a/drivers/infiniband/hw/qib/qib_fs.c
> +++ b/drivers/infiniband/hw/qib/qib_fs.c
> @@ -604,6 +604,7 @@ static struct file_system_type qibfs_fs_type = {
>  	.mount =        qibfs_mount,
>  	.kill_sb =      qibfs_kill_super,
>  };
> +MODULE_ALIAS_FS("ipathfs");
>  
>  int __init qib_init_qibfs(void)
>  {
> diff --git a/drivers/misc/ibmasm/ibmasmfs.c b/drivers/misc/ibmasm/ibmasmfs.c
> index 6673e57..ce5b756 100644
> --- a/drivers/misc/ibmasm/ibmasmfs.c
> +++ b/drivers/misc/ibmasm/ibmasmfs.c
> @@ -110,6 +110,7 @@ static struct file_system_type ibmasmfs_type = {
>  	.mount          = ibmasmfs_mount,
>  	.kill_sb        = kill_litter_super,
>  };
> +MODULE_ALIAS_FS("ibmasmfs");
>  
>  static int ibmasmfs_fill_super (struct super_block *sb, void *data, int silent)
>  {
> diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
> index 82c0616..92ab30a 100644
> --- a/drivers/mtd/mtdchar.c
> +++ b/drivers/mtd/mtdchar.c
> @@ -1238,6 +1238,7 @@ static struct file_system_type mtd_inodefs_type = {
>         .mount = mtd_inodefs_mount,
>         .kill_sb = kill_anon_super,
>  };
> +MODULE_ALIAS_FS("mtd_inodefs");
>  
>  static int __init init_mtdchar(void)
>  {
> diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c
> index 849357c..55e3646 100644
> --- a/drivers/oprofile/oprofilefs.c
> +++ b/drivers/oprofile/oprofilefs.c
> @@ -266,6 +266,7 @@ static struct file_system_type oprofilefs_type = {
>  	.mount		= oprofilefs_mount,
>  	.kill_sb	= kill_litter_super,
>  };
> +MODULE_ALIAS_FS("oprofilefs");
>  
>  
>  int __init oprofilefs_register(void)
> diff --git a/drivers/staging/ccg/f_fs.c b/drivers/staging/ccg/f_fs.c
> index 8adc79d..f6373da 100644
> --- a/drivers/staging/ccg/f_fs.c
> +++ b/drivers/staging/ccg/f_fs.c
> @@ -1223,6 +1223,7 @@ static struct file_system_type ffs_fs_type = {
>  	.mount		= ffs_fs_mount,
>  	.kill_sb	= ffs_fs_kill_sb,
>  };
> +MODULE_ALIAS_FS("functionfs");
>  
>  
>  /* Driver's main init/cleanup functions *************************************/
> diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
> index 38388d7..c377ff8 100644
> --- a/drivers/usb/gadget/f_fs.c
> +++ b/drivers/usb/gadget/f_fs.c
> @@ -1235,6 +1235,7 @@ static struct file_system_type ffs_fs_type = {
>  	.mount		= ffs_fs_mount,
>  	.kill_sb	= ffs_fs_kill_sb,
>  };
> +MODULE_ALIAS_FS("functionfs");
>  
>  
>  /* Driver's main init/cleanup functions *************************************/
> diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
> index 8ac840f..e2b2e9c 100644
> --- a/drivers/usb/gadget/inode.c
> +++ b/drivers/usb/gadget/inode.c
> @@ -2105,6 +2105,7 @@ static struct file_system_type gadgetfs_type = {
>  	.mount		= gadgetfs_mount,
>  	.kill_sb	= gadgetfs_kill_sb,
>  };
> +MODULE_ALIAS_FS("gadgetfs");
>  
>  /*----------------------------------------------------------------------*/
>  
> diff --git a/drivers/xen/xenfs/super.c b/drivers/xen/xenfs/super.c
> index 459b9ac..891d83f 100644
> --- a/drivers/xen/xenfs/super.c
> +++ b/drivers/xen/xenfs/super.c
> @@ -119,6 +119,7 @@ static struct file_system_type xenfs_type = {
>  	.mount =	xenfs_mount,
>  	.kill_sb =	kill_litter_super,
>  };
> +MODULE_ALIAS_FS("xenfs");
>  
>  static int __init xenfs_init(void)
>  {
> diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c
> index 137d503..17368f4 100644
> --- a/fs/9p/vfs_super.c
> +++ b/fs/9p/vfs_super.c
> @@ -365,3 +365,4 @@ struct file_system_type v9fs_fs_type = {
>  	.owner = THIS_MODULE,
>  	.fs_flags = FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT,
>  };
> +MODULE_ALIAS_FS("9p");
> diff --git a/fs/adfs/super.c b/fs/adfs/super.c
> index d571229..0ff4bae 100644
> --- a/fs/adfs/super.c
> +++ b/fs/adfs/super.c
> @@ -524,6 +524,7 @@ static struct file_system_type adfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("adfs");
>  
>  static int __init init_adfs_fs(void)
>  {
> diff --git a/fs/affs/super.c b/fs/affs/super.c
> index b84dc73..45161a8 100644
> --- a/fs/affs/super.c
> +++ b/fs/affs/super.c
> @@ -622,6 +622,7 @@ static struct file_system_type affs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("affs");
>  
>  static int __init init_affs_fs(void)
>  {
> diff --git a/fs/afs/super.c b/fs/afs/super.c
> index 7c31ec3..c486155 100644
> --- a/fs/afs/super.c
> +++ b/fs/afs/super.c
> @@ -45,6 +45,7 @@ struct file_system_type afs_fs_type = {
>  	.kill_sb	= afs_kill_super,
>  	.fs_flags	= 0,
>  };
> +MODULE_ALIAS_FS("afs");
>  
>  static const struct super_operations afs_super_ops = {
>  	.statfs		= afs_statfs,
> diff --git a/fs/autofs4/init.c b/fs/autofs4/init.c
> index cddc74b..b3db517 100644
> --- a/fs/autofs4/init.c
> +++ b/fs/autofs4/init.c
> @@ -26,6 +26,7 @@ static struct file_system_type autofs_fs_type = {
>  	.mount		= autofs_mount,
>  	.kill_sb	= autofs4_kill_sb,
>  };
> +MODULE_ALIAS_FS("autofs");
>  
>  static int __init init_autofs4_fs(void)
>  {
> diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
> index 2b3bda8..8613785 100644
> --- a/fs/befs/linuxvfs.c
> +++ b/fs/befs/linuxvfs.c
> @@ -951,6 +951,7 @@ static struct file_system_type befs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,	
>  };
> +MODULE_ALIAS_FS("befs");
>  
>  static int __init
>  init_befs_fs(void)
> diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c
> index 737aaa3..5e376bb 100644
> --- a/fs/bfs/inode.c
> +++ b/fs/bfs/inode.c
> @@ -473,6 +473,7 @@ static struct file_system_type bfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("bfs");
>  
>  static int __init init_bfs_fs(void)
>  {
> diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
> index 0c8869f..65f91ec 100644
> --- a/fs/binfmt_misc.c
> +++ b/fs/binfmt_misc.c
> @@ -720,6 +720,7 @@ static struct file_system_type bm_fs_type = {
>  	.mount		= bm_mount,
>  	.kill_sb	= kill_litter_super,
>  };
> +MODULE_ALIAS_FS("binfmt_misc");
>  
>  static int __init init_misc_binfmt(void)
>  {
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index d8982e9..fe51afd 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -1518,6 +1518,7 @@ static struct file_system_type btrfs_fs_type = {
>  	.kill_sb	= btrfs_kill_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("btrfs");
>  
>  /*
>   * used by btrfsctl to scan devices when no FS is mounted
> diff --git a/fs/ceph/super.c b/fs/ceph/super.c
> index e86aa994..0a25c04 100644
> --- a/fs/ceph/super.c
> +++ b/fs/ceph/super.c
> @@ -947,6 +947,7 @@ static struct file_system_type ceph_fs_type = {
>  	.kill_sb	= ceph_kill_sb,
>  	.fs_flags	= FS_RENAME_DOES_D_MOVE,
>  };
> +MODULE_ALIAS_FS("ceph");
>  
>  #define _STRINGIFY(x) #x
>  #define STRINGIFY(x) _STRINGIFY(x)
> diff --git a/fs/coda/inode.c b/fs/coda/inode.c
> index cf674e9..5075f81 100644
> --- a/fs/coda/inode.c
> +++ b/fs/coda/inode.c
> @@ -329,4 +329,5 @@ struct file_system_type coda_fs_type = {
>  	.kill_sb	= kill_anon_super,
>  	.fs_flags	= FS_BINARY_MOUNTDATA,
>  };
> +MODULE_ALIAS_FS("coda");
>  
> diff --git a/fs/configfs/mount.c b/fs/configfs/mount.c
> index aee0a7e..7f26c3c 100644
> --- a/fs/configfs/mount.c
> +++ b/fs/configfs/mount.c
> @@ -114,6 +114,7 @@ static struct file_system_type configfs_fs_type = {
>  	.mount		= configfs_do_mount,
>  	.kill_sb	= kill_litter_super,
>  };
> +MODULE_ALIAS_FS("configfs");
>  
>  struct dentry *configfs_pin_fs(void)
>  {
> diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
> index c6c3f91..3f79599 100644
> --- a/fs/cramfs/inode.c
> +++ b/fs/cramfs/inode.c
> @@ -573,6 +573,7 @@ static struct file_system_type cramfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("cramfs");
>  
>  static int __init init_cramfs_fs(void)
>  {
> diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
> index 0c4f80b..4888cb3 100644
> --- a/fs/debugfs/inode.c
> +++ b/fs/debugfs/inode.c
> @@ -299,6 +299,7 @@ static struct file_system_type debug_fs_type = {
>  	.mount =	debug_mount,
>  	.kill_sb =	kill_litter_super,
>  };
> +MODULE_ALIAS_FS("debugfs");
>  
>  static struct dentry *__create_file(const char *name, umode_t mode,
>  				    struct dentry *parent, void *data,
> diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
> index f0f0faa..741626f 100644
> --- a/fs/devpts/inode.c
> +++ b/fs/devpts/inode.c
> @@ -380,6 +380,7 @@ static struct file_system_type devpts_fs_type = {
>  	.kill_sb	= devpts_kill_sb,
>  	.fs_flags	= FS_USERNS_MOUNT | FS_USERNS_DEV_MOUNT,
>  };
> +MODULE_ALIAS_FS("devpts");
>  
>  struct vfsmount *devpts_mntget(struct file *filp)
>  {
> diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
> index 4e0886c..e924cf4 100644
> --- a/fs/ecryptfs/main.c
> +++ b/fs/ecryptfs/main.c
> @@ -629,6 +629,7 @@ static struct file_system_type ecryptfs_fs_type = {
>  	.kill_sb = ecryptfs_kill_block_super,
>  	.fs_flags = 0
>  };
> +MODULE_ALIAS_FS("ecryptfs");
>  
>  /**
>   * inode_info_init_once
> diff --git a/fs/efs/super.c b/fs/efs/super.c
> index 2002431..c6f57a7 100644
> --- a/fs/efs/super.c
> +++ b/fs/efs/super.c
> @@ -33,6 +33,7 @@ static struct file_system_type efs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("efs");
>  
>  static struct pt_types sgi_pt_types[] = {
>  	{0x00,		"SGI vh"},
> diff --git a/fs/exofs/super.c b/fs/exofs/super.c
> index 5e59280..9d97633 100644
> --- a/fs/exofs/super.c
> +++ b/fs/exofs/super.c
> @@ -1010,6 +1010,7 @@ static struct file_system_type exofs_type = {
>  	.mount          = exofs_mount,
>  	.kill_sb        = generic_shutdown_super,
>  };
> +MODULE_ALIAS_FS("exofs");
>  
>  static int __init init_exofs(void)
>  {
> diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> index c25c56b..6438912 100644
> --- a/fs/ext2/super.c
> +++ b/fs/ext2/super.c
> @@ -1542,6 +1542,7 @@ static struct file_system_type ext2_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV | FS_USERNS_MOUNT,
>  };
> +MODULE_ALIAS_FS("ext2");
>  
>  static int __init init_ext2_fs(void)
>  {
> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
> index 4ba2683..d59852d 100644
> --- a/fs/ext3/super.c
> +++ b/fs/ext3/super.c
> @@ -3059,6 +3059,7 @@ static struct file_system_type ext3_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("ext3");
>  
>  static int __init init_ext3_fs(void)
>  {
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 3d4fb81..b3264ba 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -92,6 +92,7 @@ static struct file_system_type ext2_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("ext2");
>  #define IS_EXT2_SB(sb) ((sb)->s_bdev->bd_holder == &ext2_fs_type)
>  #else
>  #define IS_EXT2_SB(sb) (0)
> @@ -106,6 +107,7 @@ static struct file_system_type ext3_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("ext3");
>  #define IS_EXT3_SB(sb) ((sb)->s_bdev->bd_holder == &ext3_fs_type)
>  #else
>  #define IS_EXT3_SB(sb) (0)
> @@ -5194,7 +5196,6 @@ static inline int ext2_feature_set_ok(struct super_block *sb)
>  		return 0;
>  	return 1;
>  }
> -MODULE_ALIAS("ext2");
>  #else
>  static inline void register_as_ext2(void) { }
>  static inline void unregister_as_ext2(void) { }
> @@ -5227,7 +5228,6 @@ static inline int ext3_feature_set_ok(struct super_block *sb)
>  		return 0;
>  	return 1;
>  }
> -MODULE_ALIAS("ext3");
>  #else
>  static inline void register_as_ext3(void) { }
>  static inline void unregister_as_ext3(void) { }
> @@ -5241,6 +5241,7 @@ static struct file_system_type ext4_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("ext4");
>  
>  static int __init ext4_init_feat_adverts(void)
>  {
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 37fad04..45ebdb6 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -639,6 +639,7 @@ static struct file_system_type f2fs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("f2fs");
>  
>  static int __init init_inodecache(void)
>  {
> diff --git a/fs/fat/namei_msdos.c b/fs/fat/namei_msdos.c
> index e2cfda9..081b759 100644
> --- a/fs/fat/namei_msdos.c
> +++ b/fs/fat/namei_msdos.c
> @@ -668,6 +668,7 @@ static struct file_system_type msdos_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("msdos");
>  
>  static int __init init_msdos_fs(void)
>  {
> diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c
> index ac959d6..2da9520 100644
> --- a/fs/fat/namei_vfat.c
> +++ b/fs/fat/namei_vfat.c
> @@ -1073,6 +1073,7 @@ static struct file_system_type vfat_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("vfat");
>  
>  static int __init init_vfat_fs(void)
>  {
> diff --git a/fs/filesystems.c b/fs/filesystems.c
> index 71f9be2..490f48c 100644
> --- a/fs/filesystems.c
> +++ b/fs/filesystems.c
> @@ -274,7 +274,7 @@ struct file_system_type *get_fs_type(const char *name)
>  
>  	fs = __get_fs_type(name, len);
>  	if (!fs && capable(CAP_SYS_ADMIN) &&
> -	    (request_module("%.*s", len, name) == 0))
> +	    (request_module("fs-%.*s", len, name) == 0))
>  		fs = __get_fs_type(name, len);
>  
>  	if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
> diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c
> index fed2c8a..4550743 100644
> --- a/fs/freevxfs/vxfs_super.c
> +++ b/fs/freevxfs/vxfs_super.c
> @@ -52,7 +52,6 @@ MODULE_AUTHOR("Christoph Hellwig");
>  MODULE_DESCRIPTION("Veritas Filesystem (VxFS) driver");
>  MODULE_LICENSE("Dual BSD/GPL");
>  
> -MODULE_ALIAS("vxfs"); /* makes mount -t vxfs autoload the module */
>  
>  
>  static void		vxfs_put_super(struct super_block *);
> @@ -258,6 +257,7 @@ static struct file_system_type vxfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("vxfs"); /* makes mount -t vxfs autoload the module */
>  
>  static int __init
>  vxfs_init(void)
> diff --git a/fs/fuse/control.c b/fs/fuse/control.c
> index 75a20c0..895cc91 100644
> --- a/fs/fuse/control.c
> +++ b/fs/fuse/control.c
> @@ -341,6 +341,7 @@ static struct file_system_type fuse_ctl_fs_type = {
>  	.mount		= fuse_ctl_mount,
>  	.kill_sb	= fuse_ctl_kill_sb,
>  };
> +MODULE_ALIAS_FS("fusectl");
>  
>  int __init fuse_ctl_init(void)
>  {
> diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
> index d022569..6ab1666 100644
> --- a/fs/fuse/inode.c
> +++ b/fs/fuse/inode.c
> @@ -1127,6 +1127,7 @@ static struct file_system_type fuse_fs_type = {
>  	.mount		= fuse_mount,
>  	.kill_sb	= fuse_kill_sb_anon,
>  };
> +MODULE_ALIAS_FS("fuse");
>  
>  #ifdef CONFIG_BLOCK
>  static struct dentry *fuse_mount_blk(struct file_system_type *fs_type,
> @@ -1156,6 +1157,7 @@ static struct file_system_type fuseblk_fs_type = {
>  	.kill_sb	= fuse_kill_sb_blk,
>  	.fs_flags	= FS_REQUIRES_DEV | FS_HAS_SUBTYPE,
>  };
> +MODULE_ALIAS_FS("fuseblk");
>  
>  static inline int register_fuseblk(void)
>  {
> diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
> index 1b612be..60ede2a 100644
> --- a/fs/gfs2/ops_fstype.c
> +++ b/fs/gfs2/ops_fstype.c
> @@ -20,6 +20,7 @@
>  #include <linux/gfs2_ondisk.h>
>  #include <linux/quotaops.h>
>  #include <linux/lockdep.h>
> +#include <linux/module.h>
>  
>  #include "gfs2.h"
>  #include "incore.h"
> @@ -1425,6 +1426,7 @@ struct file_system_type gfs2_fs_type = {
>  	.kill_sb = gfs2_kill_sb,
>  	.owner = THIS_MODULE,
>  };
> +MODULE_ALIAS_FS("gfs2");
>  
>  struct file_system_type gfs2meta_fs_type = {
>  	.name = "gfs2meta",
> @@ -1432,4 +1434,4 @@ struct file_system_type gfs2meta_fs_type = {
>  	.mount = gfs2_mount_meta,
>  	.owner = THIS_MODULE,
>  };
> -
> +MODULE_ALIAS_FS("gfs2meta");
> diff --git a/fs/hfs/super.c b/fs/hfs/super.c
> index e93ddaa..bbaaa8a 100644
> --- a/fs/hfs/super.c
> +++ b/fs/hfs/super.c
> @@ -466,6 +466,7 @@ static struct file_system_type hfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("hfs");
>  
>  static void hfs_init_once(void *p)
>  {
> diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
> index 796198d..d2e1718 100644
> --- a/fs/hfsplus/super.c
> +++ b/fs/hfsplus/super.c
> @@ -618,6 +618,7 @@ static struct file_system_type hfsplus_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("hfsplus");
>  
>  static void hfsplus_init_once(void *p)
>  {
> diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c
> index 43b315f..3eefbcc 100644
> --- a/fs/hppfs/hppfs.c
> +++ b/fs/hppfs/hppfs.c
> @@ -748,6 +748,7 @@ static struct file_system_type hppfs_type = {
>  	.kill_sb	= kill_anon_super,
>  	.fs_flags 	= 0,
>  };
> +MODULE_ALIAS_FS("hppfs");
>  
>  static int __init init_hppfs(void)
>  {
> diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
> index 78bde32..81d1cb4 100644
> --- a/fs/hugetlbfs/inode.c
> +++ b/fs/hugetlbfs/inode.c
> @@ -896,6 +896,7 @@ static struct file_system_type hugetlbfs_fs_type = {
>  	.mount		= hugetlbfs_mount,
>  	.kill_sb	= kill_litter_super,
>  };
> +MODULE_ALIAS_FS("hugetlbfs");
>  
>  static struct vfsmount *hugetlbfs_vfsmount[HUGE_MAX_HSTATE];
>  
> diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
> index 67ce525..a67f16e 100644
> --- a/fs/isofs/inode.c
> +++ b/fs/isofs/inode.c
> @@ -1556,6 +1556,7 @@ static struct file_system_type iso9660_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("iso9660");
>  
>  static int __init init_iso9660_fs(void)
>  {
> @@ -1593,5 +1594,3 @@ static void __exit exit_iso9660_fs(void)
>  module_init(init_iso9660_fs)
>  module_exit(exit_iso9660_fs)
>  MODULE_LICENSE("GPL");
> -/* Actual filesystem name is iso9660, as requested in filesystems.c */
> -MODULE_ALIAS("iso9660");
> diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
> index d3d8799..0defb1c 100644
> --- a/fs/jffs2/super.c
> +++ b/fs/jffs2/super.c
> @@ -356,6 +356,7 @@ static struct file_system_type jffs2_fs_type = {
>  	.mount =	jffs2_mount,
>  	.kill_sb =	jffs2_kill_sb,
>  };
> +MODULE_ALIAS_FS("jffs2");
>  
>  static int __init init_jffs2_fs(void)
>  {
> diff --git a/fs/jfs/super.c b/fs/jfs/super.c
> index 060ba63..2003e83 100644
> --- a/fs/jfs/super.c
> +++ b/fs/jfs/super.c
> @@ -833,6 +833,7 @@ static struct file_system_type jfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("jfs");
>  
>  static void init_once(void *foo)
>  {
> diff --git a/fs/logfs/super.c b/fs/logfs/super.c
> index 345c24b..5436029 100644
> --- a/fs/logfs/super.c
> +++ b/fs/logfs/super.c
> @@ -608,6 +608,7 @@ static struct file_system_type logfs_fs_type = {
>  	.fs_flags	= FS_REQUIRES_DEV,
>  
>  };
> +MODULE_ALIAS_FS("logfs");
>  
>  static int __init logfs_init(void)
>  {
> diff --git a/fs/minix/inode.c b/fs/minix/inode.c
> index 99541cc..df12249 100644
> --- a/fs/minix/inode.c
> +++ b/fs/minix/inode.c
> @@ -660,6 +660,7 @@ static struct file_system_type minix_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("minix");
>  
>  static int __init init_minix_fs(void)
>  {
> diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
> index e2be336..38b4fe1 100644
> --- a/fs/ncpfs/inode.c
> +++ b/fs/ncpfs/inode.c
> @@ -1051,6 +1051,7 @@ static struct file_system_type ncp_fs_type = {
>  	.kill_sb	= kill_anon_super,
>  	.fs_flags	= FS_BINARY_MOUNTDATA,
>  };
> +MODULE_ALIAS_FS("ncpfs");
>  
>  static int __init init_ncp_fs(void)
>  {
> diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> index befbae0..e11a863 100644
> --- a/fs/nfs/super.c
> +++ b/fs/nfs/super.c
> @@ -293,6 +293,7 @@ struct file_system_type nfs_fs_type = {
>  	.kill_sb	= nfs_kill_super,
>  	.fs_flags	= FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
>  };
> +MODULE_ALIAS_FS("nfs");
>  EXPORT_SYMBOL_GPL(nfs_fs_type);
>  
>  struct file_system_type nfs_xdev_fs_type = {
> @@ -332,6 +333,7 @@ struct file_system_type nfs4_fs_type = {
>  	.kill_sb	= nfs_kill_super,
>  	.fs_flags	= FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
>  };
> +MODULE_ALIAS_FS("nfs4");
>  EXPORT_SYMBOL_GPL(nfs4_fs_type);
>  
>  static int __init register_nfs4_fs(void)
> @@ -2716,6 +2718,5 @@ module_param(send_implementation_id, ushort, 0644);
>  MODULE_PARM_DESC(send_implementation_id,
>  		"Send implementation ID with NFSv4.1 exchange_id");
>  MODULE_PARM_DESC(nfs4_unique_id, "nfs_client_id4 uniquifier string");
> -MODULE_ALIAS("nfs4");
>  
>  #endif /* CONFIG_NFS_V4 */
> diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> index 7493428..939bfd9 100644
> --- a/fs/nfsd/nfsctl.c
> +++ b/fs/nfsd/nfsctl.c
> @@ -1052,6 +1052,7 @@ static struct file_system_type nfsd_fs_type = {
>  	.mount		= nfsd_mount,
>  	.kill_sb	= kill_litter_super,
>  };
> +MODULE_ALIAS_FS("nfsd");
>  
>  #ifdef CONFIG_PROC_FS
>  static int create_proc_exports_entry(void)
> diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
> index 3c991dc..c7d1f9f 100644
> --- a/fs/nilfs2/super.c
> +++ b/fs/nilfs2/super.c
> @@ -1361,6 +1361,7 @@ struct file_system_type nilfs_fs_type = {
>  	.kill_sb  = kill_block_super,
>  	.fs_flags = FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("nilfs2");
>  
>  static void nilfs_inode_init_once(void *obj)
>  {
> diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
> index 4a8289f8..82650d5 100644
> --- a/fs/ntfs/super.c
> +++ b/fs/ntfs/super.c
> @@ -3079,6 +3079,7 @@ static struct file_system_type ntfs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("ntfs");
>  
>  /* Stable names for the slab caches. */
>  static const char ntfs_index_ctx_cache_name[] = "ntfs_index_ctx_cache";
> diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c
> index 16b712d..9259d78 100644
> --- a/fs/ocfs2/dlmfs/dlmfs.c
> +++ b/fs/ocfs2/dlmfs/dlmfs.c
> @@ -640,6 +640,7 @@ static struct file_system_type dlmfs_fs_type = {
>  	.mount		= dlmfs_mount,
>  	.kill_sb	= kill_litter_super,
>  };
> +MODULE_ALIAS_FS("ocfs2_dlmfs");
>  
>  static int __init init_dlmfs_fs(void)
>  {
> diff --git a/fs/omfs/inode.c b/fs/omfs/inode.c
> index 25d715c..d8b0afd 100644
> --- a/fs/omfs/inode.c
> +++ b/fs/omfs/inode.c
> @@ -572,6 +572,7 @@ static struct file_system_type omfs_fs_type = {
>  	.kill_sb = kill_block_super,
>  	.fs_flags = FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("omfs");
>  
>  static int __init init_omfs_fs(void)
>  {
> diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c
> index 2ad080f..66abc26 100644
> --- a/fs/openpromfs/inode.c
> +++ b/fs/openpromfs/inode.c
> @@ -432,6 +432,7 @@ static struct file_system_type openprom_fs_type = {
>  	.mount		= openprom_mount,
>  	.kill_sb	= kill_anon_super,
>  };
> +MODULE_ALIAS_FS("openpromfs");
>  
>  static void op_inode_init_once(void *data)
>  {
> diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
> index 43098bb..2e8caa6 100644
> --- a/fs/qnx4/inode.c
> +++ b/fs/qnx4/inode.c
> @@ -412,6 +412,7 @@ static struct file_system_type qnx4_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("qnx4");
>  
>  static int __init init_qnx4_fs(void)
>  {
> diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c
> index 57199a5..8d941ed 100644
> --- a/fs/qnx6/inode.c
> +++ b/fs/qnx6/inode.c
> @@ -672,6 +672,7 @@ static struct file_system_type qnx6_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("qnx6");
>  
>  static int __init init_qnx6_fs(void)
>  {
> diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
> index 418bdc3..194113b 100644
> --- a/fs/reiserfs/super.c
> +++ b/fs/reiserfs/super.c
> @@ -2434,6 +2434,7 @@ struct file_system_type reiserfs_fs_type = {
>  	.kill_sb = reiserfs_kill_sb,
>  	.fs_flags = FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("reiserfs");
>  
>  MODULE_DESCRIPTION("ReiserFS journaled filesystem");
>  MODULE_AUTHOR("Hans Reiser <reiser@...esys.com>");
> diff --git a/fs/romfs/super.c b/fs/romfs/super.c
> index fd7c5f6..42e3d06 100644
> --- a/fs/romfs/super.c
> +++ b/fs/romfs/super.c
> @@ -599,6 +599,7 @@ static struct file_system_type romfs_fs_type = {
>  	.kill_sb	= romfs_kill_sb,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("romfs");
>  
>  /*
>   * inode storage initialiser
> diff --git a/fs/sysv/super.c b/fs/sysv/super.c
> index a38e87b..a39938b 100644
> --- a/fs/sysv/super.c
> +++ b/fs/sysv/super.c
> @@ -545,6 +545,7 @@ static struct file_system_type sysv_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("sysv");
>  
>  static struct file_system_type v7_fs_type = {
>  	.owner		= THIS_MODULE,
> @@ -553,6 +554,7 @@ static struct file_system_type v7_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("v7");
>  
>  static int __init init_sysv_fs(void)
>  {
> @@ -586,5 +588,4 @@ static void __exit exit_sysv_fs(void)
>  
>  module_init(init_sysv_fs)
>  module_exit(exit_sysv_fs)
> -MODULE_ALIAS("v7");
>  MODULE_LICENSE("GPL");
> diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
> index ddc0f6a..ac838b8 100644
> --- a/fs/ubifs/super.c
> +++ b/fs/ubifs/super.c
> @@ -2174,6 +2174,7 @@ static struct file_system_type ubifs_fs_type = {
>  	.mount   = ubifs_mount,
>  	.kill_sb = kill_ubifs_super,
>  };
> +MODULE_ALIAS_FS("ubifs");
>  
>  /*
>   * Inode slab cache constructor.
> diff --git a/fs/ufs/super.c b/fs/ufs/super.c
> index dc8e3a8..329f2f5 100644
> --- a/fs/ufs/super.c
> +++ b/fs/ufs/super.c
> @@ -1500,6 +1500,7 @@ static struct file_system_type ufs_fs_type = {
>  	.kill_sb	= kill_block_super,
>  	.fs_flags	= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("ufs");
>  
>  static int __init init_ufs_fs(void)
>  {
> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> index c407121..ea341ce 100644
> --- a/fs/xfs/xfs_super.c
> +++ b/fs/xfs/xfs_super.c
> @@ -1561,6 +1561,7 @@ static struct file_system_type xfs_fs_type = {
>  	.kill_sb		= kill_block_super,
>  	.fs_flags		= FS_REQUIRES_DEV,
>  };
> +MODULE_ALIAS_FS("xfs");
>  
>  STATIC int __init
>  xfs_init_zones(void)
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index d0a246d..f4b68f5 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -1829,6 +1829,8 @@ struct file_system_type {
>  	struct lock_class_key i_mutex_dir_key;
>  };
>  
> +#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
> +
>  extern struct dentry *mount_ns(struct file_system_type *fs_type, int flags,
>  	void *data, int (*fill_super)(struct super_block *, void *, int));
>  extern struct dentry *mount_bdev(struct file_system_type *fs_type,
> diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
> index fd10981..6e86b2c 100644
> --- a/net/sunrpc/rpc_pipe.c
> +++ b/net/sunrpc/rpc_pipe.c
> @@ -1174,6 +1174,7 @@ static struct file_system_type rpc_pipe_fs_type = {
>  	.mount		= rpc_mount,
>  	.kill_sb	= rpc_kill_sb,
>  };
> +MODULE_ALIAS_FS("rpc_pipefs");
>  
>  static void
>  init_once(void *foo)
> @@ -1218,6 +1219,3 @@ void unregister_rpc_pipefs(void)
>  	kmem_cache_destroy(rpc_inode_cachep);
>  	unregister_filesystem(&rpc_pipe_fs_type);
>  }
> -
> -/* Make 'mount -t rpc_pipefs ...' autoload this module. */
> -MODULE_ALIAS("rpc_pipefs");
> -- 
> 1.7.5.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ