]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
delete nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Sep 2014 23:24:10 +0000 (16:24 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Sep 2014 23:24:10 +0000 (16:24 -0700)
queue-3.14/nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch [deleted file]
queue-3.14/series
queue-3.16/nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch [deleted file]
queue-3.16/series

diff --git a/queue-3.14/nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch b/queue-3.14/nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch
deleted file mode 100644 (file)
index b9c7c77..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-From 65b38851a17472d31fec9019fc3a55b0802dab88 Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Thu, 31 Jul 2014 04:35:20 -0700
-Subject: NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes
-
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-
-commit 65b38851a17472d31fec9019fc3a55b0802dab88 upstream.
-
-The usage of pid_ns->child_reaper->nsproxy->net_ns in
-nfs_server_list_open and nfs_client_list_open is not safe.
-
-/proc for a pid namespace can remain mounted after the all of the
-process in that pid namespace have exited.  There are also times
-before the initial process in a pid namespace has started or after the
-initial process in a pid namespace has exited where
-pid_ns->child_reaper can be NULL or stale.  Making the idiom
-pid_ns->child_reaper->nsproxy a double whammy of problems.
-
-Luckily all that needs to happen is to move /proc/fs/nfsfs/servers and
-/proc/fs/nfsfs/volumes under /proc/net to /proc/net/nfsfs/servers and
-/proc/net/nfsfs/volumes and add a symlink from the original location,
-and to use seq_open_net as it has been designed.
-
-Cc: Trond Myklebust <trond.myklebust@primarydata.com>
-Cc: Stanislav Kinsbursky <skinsbursky@parallels.com>
-Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- fs/nfs/client.c   |   95 +++++++++++++++++++++++++++++++-----------------------
- fs/nfs/inode.c    |    3 +
- fs/nfs/internal.h |    9 +++++
- fs/nfs/netns.h    |    3 +
- 4 files changed, 69 insertions(+), 41 deletions(-)
-
---- a/fs/nfs/client.c
-+++ b/fs/nfs/client.c
-@@ -1205,7 +1205,7 @@ static const struct file_operations nfs_
-       .open           = nfs_server_list_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
--      .release        = seq_release,
-+      .release        = seq_release_net,
-       .owner          = THIS_MODULE,
- };
-@@ -1226,7 +1226,7 @@ static const struct file_operations nfs_
-       .open           = nfs_volume_list_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
--      .release        = seq_release,
-+      .release        = seq_release_net,
-       .owner          = THIS_MODULE,
- };
-@@ -1236,19 +1236,8 @@ static const struct file_operations nfs_
-  */
- static int nfs_server_list_open(struct inode *inode, struct file *file)
- {
--      struct seq_file *m;
--      int ret;
--      struct pid_namespace *pid_ns = file->f_dentry->d_sb->s_fs_info;
--      struct net *net = pid_ns->child_reaper->nsproxy->net_ns;
--
--      ret = seq_open(file, &nfs_server_list_ops);
--      if (ret < 0)
--              return ret;
--
--      m = file->private_data;
--      m->private = net;
--
--      return 0;
-+      return seq_open_net(inode, file, &nfs_server_list_ops,
-+                         sizeof(struct seq_net_private));
- }
- /*
-@@ -1256,7 +1245,7 @@ static int nfs_server_list_open(struct i
-  */
- static void *nfs_server_list_start(struct seq_file *m, loff_t *_pos)
- {
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* lock the list against modification */
-       spin_lock(&nn->nfs_client_lock);
-@@ -1268,7 +1257,7 @@ static void *nfs_server_list_start(struc
-  */
- static void *nfs_server_list_next(struct seq_file *p, void *v, loff_t *pos)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       return seq_list_next(v, &nn->nfs_client_list, pos);
- }
-@@ -1278,7 +1267,7 @@ static void *nfs_server_list_next(struct
-  */
- static void nfs_server_list_stop(struct seq_file *p, void *v)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       spin_unlock(&nn->nfs_client_lock);
- }
-@@ -1289,7 +1278,7 @@ static void nfs_server_list_stop(struct
- static int nfs_server_list_show(struct seq_file *m, void *v)
- {
-       struct nfs_client *clp;
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* display header on line 1 */
-       if (v == &nn->nfs_client_list) {
-@@ -1321,19 +1310,8 @@ static int nfs_server_list_show(struct s
-  */
- static int nfs_volume_list_open(struct inode *inode, struct file *file)
- {
--      struct seq_file *m;
--      int ret;
--      struct pid_namespace *pid_ns = file->f_dentry->d_sb->s_fs_info;
--      struct net *net = pid_ns->child_reaper->nsproxy->net_ns;
--
--      ret = seq_open(file, &nfs_volume_list_ops);
--      if (ret < 0)
--              return ret;
--
--      m = file->private_data;
--      m->private = net;
--
--      return 0;
-+      return seq_open_net(inode, file, &nfs_server_list_ops,
-+                         sizeof(struct seq_net_private));
- }
- /*
-@@ -1341,7 +1319,7 @@ static int nfs_volume_list_open(struct i
-  */
- static void *nfs_volume_list_start(struct seq_file *m, loff_t *_pos)
- {
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* lock the list against modification */
-       spin_lock(&nn->nfs_client_lock);
-@@ -1353,7 +1331,7 @@ static void *nfs_volume_list_start(struc
-  */
- static void *nfs_volume_list_next(struct seq_file *p, void *v, loff_t *pos)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       return seq_list_next(v, &nn->nfs_volume_list, pos);
- }
-@@ -1363,7 +1341,7 @@ static void *nfs_volume_list_next(struct
-  */
- static void nfs_volume_list_stop(struct seq_file *p, void *v)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       spin_unlock(&nn->nfs_client_lock);
- }
-@@ -1376,7 +1354,7 @@ static int nfs_volume_list_show(struct s
-       struct nfs_server *server;
-       struct nfs_client *clp;
-       char dev[8], fsid[17];
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* display header on line 1 */
-       if (v == &nn->nfs_volume_list) {
-@@ -1407,6 +1385,45 @@ static int nfs_volume_list_show(struct s
-       return 0;
- }
-+int nfs_fs_proc_net_init(struct net *net)
-+{
-+      struct nfs_net *nn = net_generic(net, nfs_net_id);
-+      struct proc_dir_entry *p;
-+
-+      nn->proc_nfsfs = proc_net_mkdir(net, "nfsfs", net->proc_net);
-+      if (!nn->proc_nfsfs)
-+              goto error_0;
-+
-+      /* a file of servers with which we're dealing */
-+      p = proc_create("servers", S_IFREG|S_IRUGO,
-+                      nn->proc_nfsfs, &nfs_server_list_fops);
-+      if (!p)
-+              goto error_1;
-+
-+      /* a file of volumes that we have mounted */
-+      p = proc_create("volumes", S_IFREG|S_IRUGO,
-+                      nn->proc_nfsfs, &nfs_volume_list_fops);
-+      if (!p)
-+              goto error_2;
-+      return 0;
-+
-+error_2:
-+      remove_proc_entry("servers", nn->proc_nfsfs);
-+error_1:
-+      remove_proc_entry("fs/nfsfs", NULL);
-+error_0:
-+      return -ENOMEM;
-+}
-+
-+void nfs_fs_proc_net_exit(struct net *net)
-+{
-+      struct nfs_net *nn = net_generic(net, nfs_net_id);
-+
-+      remove_proc_entry("volumes", nn->proc_nfsfs);
-+      remove_proc_entry("servers", nn->proc_nfsfs);
-+      remove_proc_entry("fs/nfsfs", NULL);
-+}
-+
- /*
-  * initialise the /proc/fs/nfsfs/ directory
-  */
-@@ -1419,14 +1436,12 @@ int __init nfs_fs_proc_init(void)
-               goto error_0;
-       /* a file of servers with which we're dealing */
--      p = proc_create("servers", S_IFREG|S_IRUGO,
--                      proc_fs_nfs, &nfs_server_list_fops);
-+      p = proc_symlink("servers", proc_fs_nfs, "../../net/nfsfs/servers");
-       if (!p)
-               goto error_1;
-       /* a file of volumes that we have mounted */
--      p = proc_create("volumes", S_IFREG|S_IRUGO,
--                      proc_fs_nfs, &nfs_volume_list_fops);
-+      p = proc_symlink("volumes", proc_fs_nfs, "../../net/nfsfs/volumes");
-       if (!p)
-               goto error_2;
-       return 0;
---- a/fs/nfs/inode.c
-+++ b/fs/nfs/inode.c
-@@ -1814,11 +1814,12 @@ EXPORT_SYMBOL_GPL(nfs_net_id);
- static int nfs_net_init(struct net *net)
- {
-       nfs_clients_init(net);
--      return 0;
-+      return nfs_fs_proc_net_init(net);
- }
- static void nfs_net_exit(struct net *net)
- {
-+      nfs_fs_proc_net_exit(net);
-       nfs_cleanup_cb_ident_idr(net);
- }
---- a/fs/nfs/internal.h
-+++ b/fs/nfs/internal.h
-@@ -195,7 +195,16 @@ extern struct rpc_clnt *nfs4_find_or_cre
- #ifdef CONFIG_PROC_FS
- extern int __init nfs_fs_proc_init(void);
- extern void nfs_fs_proc_exit(void);
-+extern int nfs_fs_proc_net_init(struct net *net);
-+extern void nfs_fs_proc_net_exit(struct net *net);
- #else
-+static inline int nfs_fs_proc_net_init(struct net *net)
-+{
-+      return 0;
-+}
-+static inline void nfs_fs_proc_net_exit(struct net *net)
-+{
-+}
- static inline int nfs_fs_proc_init(void)
- {
-       return 0;
---- a/fs/nfs/netns.h
-+++ b/fs/nfs/netns.h
-@@ -29,6 +29,9 @@ struct nfs_net {
- #endif
-       spinlock_t nfs_client_lock;
-       struct timespec boot_time;
-+#ifdef CONFIG_PROC_FS
-+      struct proc_dir_entry *proc_nfsfs;
-+#endif
- };
- extern int nfs_net_id;
index 9515bd7ff85d56f189a680fe0c38cbbe70efbfb4..f773e5ebf7c45d999011414aa1eb551197275179 100644 (file)
@@ -80,7 +80,6 @@ usb-whiteheat-added-bounds-checking-for-bulk-command-response.patch
 usb-ehci-using-windex-1-for-hub-port.patch
 usb-hub-prevent-hub-autosuspend-if-usbcore.autosuspend-is-1.patch
 nfsd-decrease-nfsd_users-in-nfsd_startup_generic-fail.patch
-nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch
 nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null.patch
 svcrdma-select-nfsv4.1-backchannel-transport-based-on-forward-channel.patch
 nfsv3-fix-another-acl-regression.patch
diff --git a/queue-3.16/nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch b/queue-3.16/nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch
deleted file mode 100644 (file)
index 56dc4af..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-From 65b38851a17472d31fec9019fc3a55b0802dab88 Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Thu, 31 Jul 2014 04:35:20 -0700
-Subject: NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes
-
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-
-commit 65b38851a17472d31fec9019fc3a55b0802dab88 upstream.
-
-The usage of pid_ns->child_reaper->nsproxy->net_ns in
-nfs_server_list_open and nfs_client_list_open is not safe.
-
-/proc for a pid namespace can remain mounted after the all of the
-process in that pid namespace have exited.  There are also times
-before the initial process in a pid namespace has started or after the
-initial process in a pid namespace has exited where
-pid_ns->child_reaper can be NULL or stale.  Making the idiom
-pid_ns->child_reaper->nsproxy a double whammy of problems.
-
-Luckily all that needs to happen is to move /proc/fs/nfsfs/servers and
-/proc/fs/nfsfs/volumes under /proc/net to /proc/net/nfsfs/servers and
-/proc/net/nfsfs/volumes and add a symlink from the original location,
-and to use seq_open_net as it has been designed.
-
-Cc: Trond Myklebust <trond.myklebust@primarydata.com>
-Cc: Stanislav Kinsbursky <skinsbursky@parallels.com>
-Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- fs/nfs/client.c   |   95 +++++++++++++++++++++++++++++++-----------------------
- fs/nfs/inode.c    |    3 +
- fs/nfs/internal.h |    9 +++++
- fs/nfs/netns.h    |    3 +
- 4 files changed, 69 insertions(+), 41 deletions(-)
-
---- a/fs/nfs/client.c
-+++ b/fs/nfs/client.c
-@@ -1205,7 +1205,7 @@ static const struct file_operations nfs_
-       .open           = nfs_server_list_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
--      .release        = seq_release,
-+      .release        = seq_release_net,
-       .owner          = THIS_MODULE,
- };
-@@ -1226,7 +1226,7 @@ static const struct file_operations nfs_
-       .open           = nfs_volume_list_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
--      .release        = seq_release,
-+      .release        = seq_release_net,
-       .owner          = THIS_MODULE,
- };
-@@ -1236,19 +1236,8 @@ static const struct file_operations nfs_
-  */
- static int nfs_server_list_open(struct inode *inode, struct file *file)
- {
--      struct seq_file *m;
--      int ret;
--      struct pid_namespace *pid_ns = file->f_dentry->d_sb->s_fs_info;
--      struct net *net = pid_ns->child_reaper->nsproxy->net_ns;
--
--      ret = seq_open(file, &nfs_server_list_ops);
--      if (ret < 0)
--              return ret;
--
--      m = file->private_data;
--      m->private = net;
--
--      return 0;
-+      return seq_open_net(inode, file, &nfs_server_list_ops,
-+                         sizeof(struct seq_net_private));
- }
- /*
-@@ -1256,7 +1245,7 @@ static int nfs_server_list_open(struct i
-  */
- static void *nfs_server_list_start(struct seq_file *m, loff_t *_pos)
- {
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* lock the list against modification */
-       spin_lock(&nn->nfs_client_lock);
-@@ -1268,7 +1257,7 @@ static void *nfs_server_list_start(struc
-  */
- static void *nfs_server_list_next(struct seq_file *p, void *v, loff_t *pos)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       return seq_list_next(v, &nn->nfs_client_list, pos);
- }
-@@ -1278,7 +1267,7 @@ static void *nfs_server_list_next(struct
-  */
- static void nfs_server_list_stop(struct seq_file *p, void *v)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       spin_unlock(&nn->nfs_client_lock);
- }
-@@ -1289,7 +1278,7 @@ static void nfs_server_list_stop(struct
- static int nfs_server_list_show(struct seq_file *m, void *v)
- {
-       struct nfs_client *clp;
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* display header on line 1 */
-       if (v == &nn->nfs_client_list) {
-@@ -1321,19 +1310,8 @@ static int nfs_server_list_show(struct s
-  */
- static int nfs_volume_list_open(struct inode *inode, struct file *file)
- {
--      struct seq_file *m;
--      int ret;
--      struct pid_namespace *pid_ns = file->f_dentry->d_sb->s_fs_info;
--      struct net *net = pid_ns->child_reaper->nsproxy->net_ns;
--
--      ret = seq_open(file, &nfs_volume_list_ops);
--      if (ret < 0)
--              return ret;
--
--      m = file->private_data;
--      m->private = net;
--
--      return 0;
-+      return seq_open_net(inode, file, &nfs_server_list_ops,
-+                         sizeof(struct seq_net_private));
- }
- /*
-@@ -1341,7 +1319,7 @@ static int nfs_volume_list_open(struct i
-  */
- static void *nfs_volume_list_start(struct seq_file *m, loff_t *_pos)
- {
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* lock the list against modification */
-       spin_lock(&nn->nfs_client_lock);
-@@ -1353,7 +1331,7 @@ static void *nfs_volume_list_start(struc
-  */
- static void *nfs_volume_list_next(struct seq_file *p, void *v, loff_t *pos)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       return seq_list_next(v, &nn->nfs_volume_list, pos);
- }
-@@ -1363,7 +1341,7 @@ static void *nfs_volume_list_next(struct
-  */
- static void nfs_volume_list_stop(struct seq_file *p, void *v)
- {
--      struct nfs_net *nn = net_generic(p->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(p), nfs_net_id);
-       spin_unlock(&nn->nfs_client_lock);
- }
-@@ -1376,7 +1354,7 @@ static int nfs_volume_list_show(struct s
-       struct nfs_server *server;
-       struct nfs_client *clp;
-       char dev[8], fsid[17];
--      struct nfs_net *nn = net_generic(m->private, nfs_net_id);
-+      struct nfs_net *nn = net_generic(seq_file_net(m), nfs_net_id);
-       /* display header on line 1 */
-       if (v == &nn->nfs_volume_list) {
-@@ -1407,6 +1385,45 @@ static int nfs_volume_list_show(struct s
-       return 0;
- }
-+int nfs_fs_proc_net_init(struct net *net)
-+{
-+      struct nfs_net *nn = net_generic(net, nfs_net_id);
-+      struct proc_dir_entry *p;
-+
-+      nn->proc_nfsfs = proc_net_mkdir(net, "nfsfs", net->proc_net);
-+      if (!nn->proc_nfsfs)
-+              goto error_0;
-+
-+      /* a file of servers with which we're dealing */
-+      p = proc_create("servers", S_IFREG|S_IRUGO,
-+                      nn->proc_nfsfs, &nfs_server_list_fops);
-+      if (!p)
-+              goto error_1;
-+
-+      /* a file of volumes that we have mounted */
-+      p = proc_create("volumes", S_IFREG|S_IRUGO,
-+                      nn->proc_nfsfs, &nfs_volume_list_fops);
-+      if (!p)
-+              goto error_2;
-+      return 0;
-+
-+error_2:
-+      remove_proc_entry("servers", nn->proc_nfsfs);
-+error_1:
-+      remove_proc_entry("fs/nfsfs", NULL);
-+error_0:
-+      return -ENOMEM;
-+}
-+
-+void nfs_fs_proc_net_exit(struct net *net)
-+{
-+      struct nfs_net *nn = net_generic(net, nfs_net_id);
-+
-+      remove_proc_entry("volumes", nn->proc_nfsfs);
-+      remove_proc_entry("servers", nn->proc_nfsfs);
-+      remove_proc_entry("fs/nfsfs", NULL);
-+}
-+
- /*
-  * initialise the /proc/fs/nfsfs/ directory
-  */
-@@ -1419,14 +1436,12 @@ int __init nfs_fs_proc_init(void)
-               goto error_0;
-       /* a file of servers with which we're dealing */
--      p = proc_create("servers", S_IFREG|S_IRUGO,
--                      proc_fs_nfs, &nfs_server_list_fops);
-+      p = proc_symlink("servers", proc_fs_nfs, "../../net/nfsfs/servers");
-       if (!p)
-               goto error_1;
-       /* a file of volumes that we have mounted */
--      p = proc_create("volumes", S_IFREG|S_IRUGO,
--                      proc_fs_nfs, &nfs_volume_list_fops);
-+      p = proc_symlink("volumes", proc_fs_nfs, "../../net/nfsfs/volumes");
-       if (!p)
-               goto error_2;
-       return 0;
---- a/fs/nfs/inode.c
-+++ b/fs/nfs/inode.c
-@@ -1840,11 +1840,12 @@ EXPORT_SYMBOL_GPL(nfs_net_id);
- static int nfs_net_init(struct net *net)
- {
-       nfs_clients_init(net);
--      return 0;
-+      return nfs_fs_proc_net_init(net);
- }
- static void nfs_net_exit(struct net *net)
- {
-+      nfs_fs_proc_net_exit(net);
-       nfs_cleanup_cb_ident_idr(net);
- }
---- a/fs/nfs/internal.h
-+++ b/fs/nfs/internal.h
-@@ -195,7 +195,16 @@ extern struct rpc_clnt *nfs4_find_or_cre
- #ifdef CONFIG_PROC_FS
- extern int __init nfs_fs_proc_init(void);
- extern void nfs_fs_proc_exit(void);
-+extern int nfs_fs_proc_net_init(struct net *net);
-+extern void nfs_fs_proc_net_exit(struct net *net);
- #else
-+static inline int nfs_fs_proc_net_init(struct net *net)
-+{
-+      return 0;
-+}
-+static inline void nfs_fs_proc_net_exit(struct net *net)
-+{
-+}
- static inline int nfs_fs_proc_init(void)
- {
-       return 0;
---- a/fs/nfs/netns.h
-+++ b/fs/nfs/netns.h
-@@ -29,6 +29,9 @@ struct nfs_net {
- #endif
-       spinlock_t nfs_client_lock;
-       struct timespec boot_time;
-+#ifdef CONFIG_PROC_FS
-+      struct proc_dir_entry *proc_nfsfs;
-+#endif
- };
- extern int nfs_net_id;
index 63a49a53d865fb35efddb444bb305aa9c568c04e..2ec9daa30200e7b751ba1c5c595b711dfd7e7eb6 100644 (file)
@@ -115,7 +115,6 @@ usb-ehci-using-windex-1-for-hub-port.patch
 usb-hub-prevent-hub-autosuspend-if-usbcore.autosuspend-is-1.patch
 usbcore-fix-wrong-device-in-an-error-message-in-hub_port_connect.patch
 nfsd-decrease-nfsd_users-in-nfsd_startup_generic-fail.patch
-nfs-fix-proc-fs-nfsfs-servers-and-proc-fs-nfsfs-volumes.patch
 nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null.patch
 nfs-reject-changes-to-resvport-and-sharecache-during-remount.patch
 svcrdma-select-nfsv4.1-backchannel-transport-based-on-forward-channel.patch