Replace kill_litter_super with litter_shutdown_sb, which is wired up to
the ->shutdown_sb method.  For file systems that wrapped
kill_litter_super, ->kill_sb is replaced with ->shutdown and ->free_sb
methods as needed.

Signed-off-by: Christoph Hellwig <h...@lst.de>
---
 arch/powerpc/platforms/cell/spufs/inode.c | 10 +++++-----
 arch/s390/hypfs/inode.c                   |  6 +++---
 drivers/android/binderfs.c                | 12 +++---------
 drivers/base/devtmpfs.c                   |  8 ++++----
 drivers/infiniband/hw/qib/qib_fs.c        |  2 +-
 drivers/misc/ibmasm/ibmasmfs.c            |  8 ++++----
 drivers/usb/gadget/function/f_fs.c        |  6 +++---
 drivers/usb/gadget/legacy/inode.c         | 12 ++++++------
 drivers/xen/xenfs/super.c                 |  8 ++++----
 fs/binfmt_misc.c                          |  8 ++++----
 fs/configfs/mount.c                       |  8 ++++----
 fs/debugfs/inode.c                        |  8 ++++----
 fs/devpts/inode.c                         |  6 +++---
 fs/efivarfs/super.c                       | 13 ++++++-------
 fs/fuse/control.c                         | 12 ++++++------
 fs/hugetlbfs/inode.c                      |  2 +-
 fs/nfsd/nfsctl.c                          | 22 ++++++++++++----------
 fs/ocfs2/dlmfs/dlmfs.c                    |  2 +-
 fs/pstore/inode.c                         |  7 +++----
 fs/ramfs/inode.c                          |  6 +++---
 fs/super.c                                | 14 +++++++++++---
 fs/tracefs/inode.c                        |  2 +-
 include/linux/fs.h                        |  2 +-
 include/linux/ramfs.h                     |  2 +-
 init/do_mounts.c                          |  6 +++---
 ipc/mqueue.c                              |  2 +-
 kernel/bpf/inode.c                        |  2 +-
 mm/shmem.c                                |  5 +++--
 net/sunrpc/rpc_pipe.c                     | 19 ++++++++++++-------
 security/inode.c                          |  8 ++++----
 security/selinux/selinuxfs.c              | 15 +++++----------
 security/smack/smackfs.c                  |  6 +++---
 32 files changed, 126 insertions(+), 123 deletions(-)

diff --git a/arch/powerpc/platforms/cell/spufs/inode.c 
b/arch/powerpc/platforms/cell/spufs/inode.c
index 38c5be34c8951f..2610a0731ea242 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -763,11 +763,11 @@ static int spufs_init_fs_context(struct fs_context *fc)
 }
 
 static struct file_system_type spufs_type = {
-       .owner = THIS_MODULE,
-       .name = "spufs",
-       .init_fs_context = spufs_init_fs_context,
-       .parameters     = spufs_fs_parameters,
-       .kill_sb = kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "spufs",
+       .init_fs_context        = spufs_init_fs_context,
+       .parameters             = spufs_fs_parameters,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("spufs");
 
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index 3261fb9cade648..f18e3b844c5d9b 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -294,9 +294,8 @@ static int hypfs_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-static void hypfs_kill_super(struct super_block *sb)
+static void hypfs_free_sb(struct super_block *sb)
 {
-       kill_litter_super(sb);
        kfree(sb->s_fs_info);
 }
 
@@ -417,7 +416,8 @@ static struct file_system_type hypfs_type = {
        .name           = "s390_hypfs",
        .init_fs_context = hypfs_init_fs_context,
        .parameters     = hypfs_fs_parameters,
-       .kill_sb        = hypfs_kill_super
+       .shutdown_sb    = litter_shutdown_sb,
+       .free_sb        = hypfs_free_sb,
 };
 
 static const struct super_operations hypfs_s_ops = {
diff --git a/drivers/android/binderfs.c b/drivers/android/binderfs.c
index 81effec17b3d63..f48196391239c0 100644
--- a/drivers/android/binderfs.c
+++ b/drivers/android/binderfs.c
@@ -771,19 +771,12 @@ static int binderfs_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-static void binderfs_kill_super(struct super_block *sb)
+static void binderfs_free_sb(struct super_block *sb)
 {
        struct binderfs_info *info = sb->s_fs_info;
 
-       /*
-        * During inode eviction struct binderfs_info is needed.
-        * So first wipe the super_block then free struct binderfs_info.
-        */
-       kill_litter_super(sb);
-
        if (info && info->ipc_ns)
                put_ipc_ns(info->ipc_ns);
-
        kfree(info);
 }
 
@@ -791,7 +784,8 @@ static struct file_system_type binder_fs_type = {
        .name                   = "binder",
        .init_fs_context        = binderfs_init_fs_context,
        .parameters             = binderfs_fs_parameters,
-       .kill_sb                = binderfs_kill_super,
+       .shutdown_sb            = litter_shutdown_sb,
+       .free_sb                = binderfs_free_sb,
        .fs_flags               = FS_USERNS_MOUNT,
 };
 
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index b848764ef0187f..f5b43c7877815b 100644
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -80,13 +80,13 @@ static struct dentry *public_dev_mount(struct 
file_system_type *fs_type, int fla
 }
 
 static struct file_system_type internal_fs_type = {
-       .name = "devtmpfs",
+       .name                   = "devtmpfs",
 #ifdef CONFIG_TMPFS
-       .init_fs_context = shmem_init_fs_context,
+       .init_fs_context        = shmem_init_fs_context,
 #else
-       .init_fs_context = ramfs_init_fs_context,
+       .init_fs_context        = ramfs_init_fs_context,
 #endif
-       .kill_sb = kill_litter_super,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 
 static struct file_system_type dev_fs_type = {
diff --git a/drivers/infiniband/hw/qib/qib_fs.c 
b/drivers/infiniband/hw/qib/qib_fs.c
index c52ca34b32e67d..ea0aeade92bbd0 100644
--- a/drivers/infiniband/hw/qib/qib_fs.c
+++ b/drivers/infiniband/hw/qib/qib_fs.c
@@ -473,7 +473,7 @@ static struct file_system_type qibfs_fs_type = {
        .owner                  = THIS_MODULE,
        .name                   = "ipathfs",
        .init_fs_context        = qibfs_init_fs_context,
-       .kill_sb                = kill_litter_super,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("ipathfs");
 
diff --git a/drivers/misc/ibmasm/ibmasmfs.c b/drivers/misc/ibmasm/ibmasmfs.c
index 5867af9f592cdb..05d03f9b600366 100644
--- a/drivers/misc/ibmasm/ibmasmfs.c
+++ b/drivers/misc/ibmasm/ibmasmfs.c
@@ -100,10 +100,10 @@ static const struct super_operations ibmasmfs_s_ops = {
 static const struct file_operations *ibmasmfs_dir_ops = &simple_dir_operations;
 
 static struct file_system_type ibmasmfs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "ibmasmfs",
-       .init_fs_context = ibmasmfs_init_fs_context,
-       .kill_sb        = kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "ibmasmfs",
+       .init_fs_context        = ibmasmfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("ibmasmfs");
 
diff --git a/drivers/usb/gadget/function/f_fs.c 
b/drivers/usb/gadget/function/f_fs.c
index 6e9ef35a43a7ba..83eaed3f1a8e0b 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1602,9 +1602,8 @@ static int ffs_fs_init_fs_context(struct fs_context *fc)
 }
 
 static void
-ffs_fs_kill_sb(struct super_block *sb)
+ffs_fs_free_sb(struct super_block *sb)
 {
-       kill_litter_super(sb);
        if (sb->s_fs_info)
                ffs_data_closed(sb->s_fs_info);
 }
@@ -1614,7 +1613,8 @@ static struct file_system_type ffs_fs_type = {
        .name           = "functionfs",
        .init_fs_context = ffs_fs_init_fs_context,
        .parameters     = ffs_fs_fs_parameters,
-       .kill_sb        = ffs_fs_kill_sb,
+       .shutdown_sb    = litter_shutdown_sb,
+       .free_sb        = ffs_fs_free_sb,
 };
 MODULE_ALIAS_FS("functionfs");
 
diff --git a/drivers/usb/gadget/legacy/inode.c 
b/drivers/usb/gadget/legacy/inode.c
index a203266bc0dc82..e79e907b0a065e 100644
--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -2086,9 +2086,8 @@ static int gadgetfs_init_fs_context(struct fs_context *fc)
 }
 
 static void
-gadgetfs_kill_sb (struct super_block *sb)
+gadgetfs_free_sb(struct super_block *sb)
 {
-       kill_litter_super (sb);
        if (the_device) {
                put_dev (the_device);
                the_device = NULL;
@@ -2100,10 +2099,11 @@ gadgetfs_kill_sb (struct super_block *sb)
 /*----------------------------------------------------------------------*/
 
 static struct file_system_type gadgetfs_type = {
-       .owner          = THIS_MODULE,
-       .name           = shortname,
-       .init_fs_context = gadgetfs_init_fs_context,
-       .kill_sb        = gadgetfs_kill_sb,
+       .owner                  = THIS_MODULE,
+       .name                   = shortname,
+       .init_fs_context        = gadgetfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
+       .free_sb                = gadgetfs_free_sb,
 };
 MODULE_ALIAS_FS("gadgetfs");
 
diff --git a/drivers/xen/xenfs/super.c b/drivers/xen/xenfs/super.c
index d7d64235010d41..ab2e3d3d05bb2e 100644
--- a/drivers/xen/xenfs/super.c
+++ b/drivers/xen/xenfs/super.c
@@ -85,10 +85,10 @@ static int xenfs_init_fs_context(struct fs_context *fc)
 }
 
 static struct file_system_type xenfs_type = {
-       .owner =        THIS_MODULE,
-       .name =         "xenfs",
-       .init_fs_context = xenfs_init_fs_context,
-       .kill_sb =      kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "xenfs",
+       .init_fs_context        = xenfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("xenfs");
 
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index e0108d17b085cf..0eb5bd91cfeafb 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -809,10 +809,10 @@ static struct linux_binfmt misc_format = {
 };
 
 static struct file_system_type bm_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "binfmt_misc",
-       .init_fs_context = bm_init_fs_context,
-       .kill_sb        = kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "binfmt_misc",
+       .init_fs_context        = bm_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("binfmt_misc");
 
diff --git a/fs/configfs/mount.c b/fs/configfs/mount.c
index c2d820063ec49a..87043caf048a2c 100644
--- a/fs/configfs/mount.c
+++ b/fs/configfs/mount.c
@@ -112,10 +112,10 @@ static int configfs_init_fs_context(struct fs_context *fc)
 }
 
 static struct file_system_type configfs_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "configfs",
-       .init_fs_context = configfs_init_fs_context,
-       .kill_sb        = kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "configfs",
+       .init_fs_context        = configfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("configfs");
 
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index 83e57e9f9fa037..a4955c8f6638ae 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -300,10 +300,10 @@ static struct dentry *debug_mount(struct file_system_type 
*fs_type,
 }
 
 static struct file_system_type debug_fs_type = {
-       .owner =        THIS_MODULE,
-       .name =         "debugfs",
-       .mount =        debug_mount,
-       .kill_sb =      kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "debugfs",
+       .mount                  = debug_mount,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("debugfs");
 
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index d46cea36c026ad..bc7ff574dbbf90 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -487,11 +487,10 @@ static struct dentry *devpts_mount(struct 
file_system_type *fs_type,
        return mount_nodev(fs_type, flags, data, devpts_fill_super);
 }
 
-static void devpts_kill_sb(struct super_block *sb)
+static void devpts_free_sb(struct super_block *sb)
 {
        struct pts_fs_info *fsi = DEVPTS_SB(sb);
 
-       kill_litter_super(sb);
        if (fsi)
                ida_destroy(&fsi->allocated_ptys);
        kfree(fsi);
@@ -500,7 +499,8 @@ static void devpts_kill_sb(struct super_block *sb)
 static struct file_system_type devpts_fs_type = {
        .name           = "devpts",
        .mount          = devpts_mount,
-       .kill_sb        = devpts_kill_sb,
+       .shutdown_sb    = litter_shutdown_sb,
+       .free_sb        = devpts_free_sb,
        .fs_flags       = FS_USERNS_MOUNT,
 };
 
diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
index e028fafa04f38c..f9e8df15c35067 100644
--- a/fs/efivarfs/super.c
+++ b/fs/efivarfs/super.c
@@ -279,10 +279,8 @@ static int efivarfs_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-static void efivarfs_kill_sb(struct super_block *sb)
+static void efivarfs_free_sb(struct super_block *sb)
 {
-       kill_litter_super(sb);
-
        if (!efivar_is_available())
                return;
 
@@ -291,10 +289,11 @@ static void efivarfs_kill_sb(struct super_block *sb)
 }
 
 static struct file_system_type efivarfs_type = {
-       .owner   = THIS_MODULE,
-       .name    = "efivarfs",
-       .init_fs_context = efivarfs_init_fs_context,
-       .kill_sb = efivarfs_kill_sb,
+       .owner                  = THIS_MODULE,
+       .name                   = "efivarfs",
+       .init_fs_context        = efivarfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
+       .free_sb                = efivarfs_free_sb,
 };
 
 static __init int efivarfs_init(void)
diff --git a/fs/fuse/control.c b/fs/fuse/control.c
index ab62e46242568a..3a24d00a165971 100644
--- a/fs/fuse/control.c
+++ b/fs/fuse/control.c
@@ -352,7 +352,7 @@ static int fuse_ctl_init_fs_context(struct fs_context *fsc)
        return 0;
 }
 
-static void fuse_ctl_kill_sb(struct super_block *sb)
+static void fuse_ctl_shutdown_sb(struct super_block *sb)
 {
        struct fuse_conn *fc;
 
@@ -362,14 +362,14 @@ static void fuse_ctl_kill_sb(struct super_block *sb)
                fc->ctl_ndents = 0;
        mutex_unlock(&fuse_mutex);
 
-       kill_litter_super(sb);
+       litter_shutdown_sb(sb);
 }
 
 static struct file_system_type fuse_ctl_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "fusectl",
-       .init_fs_context = fuse_ctl_init_fs_context,
-       .kill_sb        = fuse_ctl_kill_sb,
+       .owner                  = THIS_MODULE,
+       .name                   = "fusectl",
+       .init_fs_context        = fuse_ctl_init_fs_context,
+       .shutdown_sb            = fuse_ctl_shutdown_sb,
 };
 MODULE_ALIAS_FS("fusectl");
 
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 316c4cebd3f3de..1a722aba8c6645 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -1588,7 +1588,7 @@ static struct file_system_type hugetlbfs_fs_type = {
        .name                   = "hugetlbfs",
        .init_fs_context        = hugetlbfs_init_fs_context,
        .parameters             = hugetlb_fs_parameters,
-       .kill_sb                = kill_litter_super,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 
 static struct vfsmount *hugetlbfs_vfsmount[HUGE_MAX_HSTATE];
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 7ed02fb88a362c..a2be86da4efa15 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -1440,21 +1440,23 @@ static int nfsd_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-static void nfsd_umount(struct super_block *sb)
+static void nfsd_shutdown_sb(struct super_block *sb)
 {
-       struct net *net = sb->s_fs_info;
-
-       nfsd_shutdown_threads(net);
+       nfsd_shutdown_threads(sb->s_fs_info);
+       litter_shutdown_sb(sb);
+}
 
-       kill_litter_super(sb);
-       put_net(net);
+static void nfsd_free_sb(struct super_block *sb)
+{
+       put_net(sb->s_fs_info);
 }
 
 static struct file_system_type nfsd_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "nfsd",
-       .init_fs_context = nfsd_init_fs_context,
-       .kill_sb        = nfsd_umount,
+       .owner                  = THIS_MODULE,
+       .name                   = "nfsd",
+       .init_fs_context        = nfsd_init_fs_context,
+       .shutdown_sb            = nfsd_shutdown_sb,
+       .free_sb                = nfsd_free_sb,
 };
 MODULE_ALIAS_FS("nfsd");
 
diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c
index 81265123ce6ce5..b987653f6ec070 100644
--- a/fs/ocfs2/dlmfs/dlmfs.c
+++ b/fs/ocfs2/dlmfs/dlmfs.c
@@ -567,7 +567,7 @@ static struct file_system_type dlmfs_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "ocfs2_dlmfs",
        .mount          = dlmfs_mount,
-       .kill_sb        = kill_litter_super,
+       .shutdown_sb    = litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("ocfs2_dlmfs");
 
diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
index fd1d24b47160d0..36635ed77b6873 100644
--- a/fs/pstore/inode.c
+++ b/fs/pstore/inode.c
@@ -465,10 +465,8 @@ static struct dentry *pstore_mount(struct file_system_type 
*fs_type,
        return mount_single(fs_type, flags, data, pstore_fill_super);
 }
 
-static void pstore_kill_sb(struct super_block *sb)
+static void pstore_free_sb(struct super_block *sb)
 {
-       kill_litter_super(sb);
-
        mutex_lock(&pstore_sb_lock);
        pstore_sb = NULL;
 
@@ -483,7 +481,8 @@ static struct file_system_type pstore_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "pstore",
        .mount          = pstore_mount,
-       .kill_sb        = pstore_kill_sb,
+       .shutdown_sb    = litter_shutdown_sb,
+       .free_sb        = pstore_free_sb,
 };
 
 int __init pstore_init_fs(void)
diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
index 0f37ecbae59dad..51eade68ae06f8 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -278,9 +278,8 @@ int ramfs_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-void ramfs_kill_sb(struct super_block *sb)
+void ramfs_free_sb(struct super_block *sb)
 {
-       kill_litter_super(sb);
        kfree(sb->s_fs_info);
 }
 
@@ -288,7 +287,8 @@ static struct file_system_type ramfs_fs_type = {
        .name           = "ramfs",
        .init_fs_context = ramfs_init_fs_context,
        .parameters     = ramfs_fs_parameters,
-       .kill_sb        = ramfs_kill_sb,
+       .shutdown_sb    = litter_shutdown_sb,
+       .free_sb        = ramfs_free_sb,
        .fs_flags       = FS_USERNS_MOUNT,
 };
 
diff --git a/fs/super.c b/fs/super.c
index 8e173eccc8c113..1173a272bd086a 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -1319,13 +1319,21 @@ void free_anon_bdev(dev_t dev)
 }
 EXPORT_SYMBOL(free_anon_bdev);
 
-void kill_litter_super(struct super_block *sb)
+/**
+ * litter_shutdown_sb - shut down a super_block that only has synthetic files
+ * @sb:                super_block to shut down
+ *
+ * This function is a drop in ->shutdown_sb method and calls d_genocide() to
+ * drop all entries in the dcache.  It is used for file systems that only
+ * contained synthetic, that is kernel-generated, entries created by helpers
+ * like simple_fill_super().
+ */
+void litter_shutdown_sb(struct super_block *sb)
 {
        if (sb->s_root)
                d_genocide(sb->s_root);
-       generic_shutdown_super(sb);
 }
-EXPORT_SYMBOL(kill_litter_super);
+EXPORT_SYMBOL(litter_shutdown_sb);
 
 static int test_keyed_super(struct super_block *sb, struct fs_context *fc)
 {
diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
index de5b72216b1a70..7cde49dd76c5f7 100644
--- a/fs/tracefs/inode.c
+++ b/fs/tracefs/inode.c
@@ -438,7 +438,7 @@ static struct file_system_type trace_fs_type = {
        .owner =        THIS_MODULE,
        .name =         "tracefs",
        .mount =        trace_mount,
-       .kill_sb =      kill_litter_super,
+       .shutdown_sb =  litter_shutdown_sb,
 };
 MODULE_ALIAS_FS("tracefs");
 
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 12fff7df3cc46b..c44c6fe9fc045b 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2384,7 +2384,7 @@ extern struct dentry *mount_subtree(struct vfsmount *mnt, 
const char *path);
 void retire_super(struct super_block *sb);
 void generic_shutdown_super(struct super_block *sb);
 void kill_block_super(struct super_block *sb);
-void kill_litter_super(struct super_block *sb);
+void litter_shutdown_sb(struct super_block *sb);
 void deactivate_super(struct super_block *sb);
 void deactivate_locked_super(struct super_block *sb);
 int get_anon_bdev(dev_t *);
diff --git a/include/linux/ramfs.h b/include/linux/ramfs.h
index d506dc63dd47c5..9065f3bc8c9e94 100644
--- a/include/linux/ramfs.h
+++ b/include/linux/ramfs.h
@@ -7,7 +7,7 @@
 struct inode *ramfs_get_inode(struct super_block *sb, const struct inode *dir,
         umode_t mode, dev_t dev);
 extern int ramfs_init_fs_context(struct fs_context *fc);
-extern void ramfs_kill_sb(struct super_block *sb);
+void ramfs_free_sb(struct super_block *sb);
 
 #ifdef CONFIG_MMU
 static inline int
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 5dfd30b13f4857..95f40b8784d9aa 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -503,9 +503,9 @@ static int rootfs_init_fs_context(struct fs_context *fc)
 }
 
 struct file_system_type rootfs_fs_type = {
-       .name           = "rootfs",
-       .init_fs_context = rootfs_init_fs_context,
-       .kill_sb        = kill_litter_super,
+       .name                   = "rootfs",
+       .init_fs_context        = rootfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 
 void __init init_rootfs(void)
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index ba8215ed663a43..e2e2fa6ffb901c 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -1681,7 +1681,7 @@ static const struct fs_context_operations 
mqueue_fs_context_ops = {
 static struct file_system_type mqueue_fs_type = {
        .name                   = "mqueue",
        .init_fs_context        = mqueue_init_fs_context,
-       .kill_sb                = kill_litter_super,
+       .shutdown_sb            = litter_shutdown_sb,
        .fs_flags               = FS_USERNS_MOUNT,
 };
 
diff --git a/kernel/bpf/inode.c b/kernel/bpf/inode.c
index 99d0625b6c828f..877a2a6a5729ba 100644
--- a/kernel/bpf/inode.c
+++ b/kernel/bpf/inode.c
@@ -797,7 +797,7 @@ static struct file_system_type bpf_fs_type = {
        .name           = "bpf",
        .init_fs_context = bpf_init_fs_context,
        .parameters     = bpf_fs_parameters,
-       .kill_sb        = kill_litter_super,
+       .shutdown_sb    = litter_shutdown_sb,
 };
 
 static int __init bpf_init(void)
diff --git a/mm/shmem.c b/mm/shmem.c
index 02e62fccc80d49..53a39134e863f3 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -4584,7 +4584,7 @@ static struct file_system_type shmem_fs_type = {
 #ifdef CONFIG_TMPFS
        .parameters     = shmem_fs_parameters,
 #endif
-       .kill_sb        = kill_litter_super,
+       .shutdown_sb    = litter_shutdown_sb,
 #ifdef CONFIG_SHMEM
        .fs_flags       = FS_USERNS_MOUNT | FS_ALLOW_IDMAP | FS_MGTIME,
 #else
@@ -4709,7 +4709,8 @@ static struct file_system_type shmem_fs_type = {
        .name           = "tmpfs",
        .init_fs_context = ramfs_init_fs_context,
        .parameters     = ramfs_fs_parameters,
-       .kill_sb        = ramfs_kill_sb,
+       .shutdown_sb    = litter_shutdown_sb,
+       .free_sb        = ramfs_free_sb,
        .fs_flags       = FS_USERNS_MOUNT,
 };
 
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index f420d845734513..c285cbe1a821a8 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -1441,7 +1441,7 @@ static int rpc_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-static void rpc_kill_sb(struct super_block *sb)
+static void rpc_shutdown_sb(struct super_block *sb)
 {
        struct net *net = sb->s_fs_info;
        struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
@@ -1459,15 +1459,20 @@ static void rpc_kill_sb(struct super_block *sb)
                                           sb);
        mutex_unlock(&sn->pipefs_sb_lock);
 out:
-       kill_litter_super(sb);
-       put_net(net);
+       litter_shutdown_sb(sb);
+}
+
+static void rpc_free_sb(struct super_block *sb)
+{
+       put_net(sb->s_fs_info);
 }
 
 static struct file_system_type rpc_pipe_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "rpc_pipefs",
-       .init_fs_context = rpc_init_fs_context,
-       .kill_sb        = rpc_kill_sb,
+       .owner                  = THIS_MODULE,
+       .name                   = "rpc_pipefs",
+       .init_fs_context        = rpc_init_fs_context,
+       .shutdown_sb            = rpc_shutdown_sb,
+       .free_sb                = rpc_free_sb,
 };
 MODULE_ALIAS_FS("rpc_pipefs");
 MODULE_ALIAS("rpc_pipefs");
diff --git a/security/inode.c b/security/inode.c
index 3aa75fffa8c929..84779f998e76c5 100644
--- a/security/inode.c
+++ b/security/inode.c
@@ -67,10 +67,10 @@ static int securityfs_init_fs_context(struct fs_context *fc)
 }
 
 static struct file_system_type fs_type = {
-       .owner =        THIS_MODULE,
-       .name =         "securityfs",
-       .init_fs_context = securityfs_init_fs_context,
-       .kill_sb =      kill_litter_super,
+       .owner                  = THIS_MODULE,
+       .name                   = "securityfs",
+       .init_fs_context        = securityfs_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 
 /**
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 08fbb0f89d2659..e619eedefca373 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -94,7 +94,7 @@ static int selinux_fs_info_create(struct super_block *sb)
        return 0;
 }
 
-static void selinux_fs_info_free(struct super_block *sb)
+static void sel_free_sb(struct super_block *sb)
 {
        struct selinux_fs_info *fsi = sb->s_fs_info;
        unsigned int i;
@@ -2120,16 +2120,11 @@ static int sel_init_fs_context(struct fs_context *fc)
        return 0;
 }
 
-static void sel_kill_sb(struct super_block *sb)
-{
-       kill_litter_super(sb);
-       selinux_fs_info_free(sb);
-}
-
 static struct file_system_type sel_fs_type = {
-       .name           = "selinuxfs",
-       .init_fs_context = sel_init_fs_context,
-       .kill_sb        = sel_kill_sb,
+       .name                   = "selinuxfs",
+       .init_fs_context        = sel_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
+       .free_sb                = sel_free_sb,
 };
 
 static struct vfsmount *selinuxfs_mount __ro_after_init;
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index e22aad7604e8ac..9e60e927d02deb 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -2979,9 +2979,9 @@ static int smk_init_fs_context(struct fs_context *fc)
 }
 
 static struct file_system_type smk_fs_type = {
-       .name           = "smackfs",
-       .init_fs_context = smk_init_fs_context,
-       .kill_sb        = kill_litter_super,
+       .name                   = "smackfs",
+       .init_fs_context        = smk_init_fs_context,
+       .shutdown_sb            = litter_shutdown_sb,
 };
 
 static struct vfsmount *smackfs_mount;
-- 
2.39.2

Reply via email to