nfsd: pass net to __write_ports() and down
authorStanislav Kinsbursky <skinsbursky@parallels.com>
Mon, 10 Dec 2012 09:19:35 +0000 (12:19 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 11 Jun 2014 19:04:19 +0000 (12:04 -0700)
commit 081603520b25f7b35ef63a363376a17c36ef74ed upstream.

Precursor patch. Hard-coded "init_net" will be replaced by proper one in
future.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
[wengmeiling: backport to 3.4:
 - adjust context
 - add net_ns parameter to __write_ports_delxprt()]
Signed-off-by: Weng Meiling <wengmeiling.weng@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfsd/nfsctl.c

index f58e0f9ebc151d95e63980a5f81c847eb1161f2d..1d74af2566eb695c11efbe55b195a9b2f158faa3 100644 (file)
@@ -650,11 +650,10 @@ static ssize_t __write_ports_names(char *buf)
  * a socket of a supported family/protocol, and we use it as an
  * nfsd listener.
  */
-static ssize_t __write_ports_addfd(char *buf)
+static ssize_t __write_ports_addfd(char *buf, struct net *net)
 {
        char *mesg = buf;
        int fd, err;
-       struct net *net = &init_net;
 
        err = get_int(&mesg, &fd);
        if (err != 0 || fd < 0)
@@ -698,12 +697,11 @@ static ssize_t __write_ports_delfd(char *buf)
  * A transport listener is added by writing it's transport name and
  * a port number.
  */
-static ssize_t __write_ports_addxprt(char *buf)
+static ssize_t __write_ports_addxprt(char *buf, struct net *net)
 {
        char transport[16];
        struct svc_xprt *xprt;
        int port, err;
-       struct net *net = &init_net;
 
        if (sscanf(buf, "%15s %4u", transport, &port) != 2)
                return -EINVAL;
@@ -743,7 +741,7 @@ out_err:
  * A transport listener is removed by writing a "-", it's transport
  * name, and it's port number.
  */
-static ssize_t __write_ports_delxprt(char *buf)
+static ssize_t __write_ports_delxprt(char *buf, struct net *net)
 {
        struct svc_xprt *xprt;
        char transport[16];
@@ -755,7 +753,7 @@ static ssize_t __write_ports_delxprt(char *buf)
        if (port < 1 || port > USHRT_MAX || nfsd_serv == NULL)
                return -EINVAL;
 
-       xprt = svc_find_xprt(nfsd_serv, transport, &init_net, AF_UNSPEC, port);
+       xprt = svc_find_xprt(nfsd_serv, transport, net, AF_UNSPEC, port);
        if (xprt == NULL)
                return -ENOTCONN;
 
@@ -764,22 +762,23 @@ static ssize_t __write_ports_delxprt(char *buf)
        return 0;
 }
 
-static ssize_t __write_ports(struct file *file, char *buf, size_t size)
+static ssize_t __write_ports(struct file *file, char *buf, size_t size,
+                               struct net *net)
 {
        if (size == 0)
                return __write_ports_names(buf);
 
        if (isdigit(buf[0]))
-               return __write_ports_addfd(buf);
+               return __write_ports_addfd(buf, net);
 
        if (buf[0] == '-' && isdigit(buf[1]))
                return __write_ports_delfd(buf);
 
        if (isalpha(buf[0]))
-               return __write_ports_addxprt(buf);
+               return __write_ports_addxprt(buf, net);
 
        if (buf[0] == '-' && isalpha(buf[1]))
-               return __write_ports_delxprt(buf);
+               return __write_ports_delxprt(buf, net);
 
        return -EINVAL;
 }
@@ -858,9 +857,10 @@ static ssize_t __write_ports(struct file *file, char *buf, size_t size)
 static ssize_t write_ports(struct file *file, char *buf, size_t size)
 {
        ssize_t rv;
+       struct net *net = &init_net;
 
        mutex_lock(&nfsd_mutex);
-       rv = __write_ports(file, buf, size);
+       rv = __write_ports(file, buf, size, net);
        mutex_unlock(&nfsd_mutex);
        return rv;
 }