Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08160352 authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by J. Bruce Fields
Browse files

nfsd: pass net to __write_ports() and down



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

Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 3938a0d5
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -657,11 +657,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)
@@ -686,12 +685,11 @@ static ssize_t __write_ports_addfd(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 %5u", transport, &port) != 2)
		return -EINVAL;
@@ -727,16 +725,17 @@ static ssize_t __write_ports_addxprt(char *buf)
	return err;
}

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 (isalpha(buf[0]))
		return __write_ports_addxprt(buf);
		return __write_ports_addxprt(buf, net);

	return -EINVAL;
}
@@ -787,9 +786,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;
}