Loading fs/nfsd/nfsctl.c +34 −30 Original line number Diff line number Diff line Loading @@ -910,6 +910,37 @@ static ssize_t write_versions(struct file *file, char *buf, size_t size) return rv; } /* * A single 'fd' number was written, in which case it must be for * a socket of a supported family/protocol, and we use it as an * nfsd listener. */ static ssize_t __write_ports_addfd(char *buf) { char *mesg = buf; int fd, err; err = get_int(&mesg, &fd); if (err != 0 || fd < 0) return -EINVAL; err = nfsd_create_serv(); if (err != 0) return err; err = svc_addsock(nfsd_serv, fd, buf); if (err >= 0) { err = lockd_up(); if (err < 0) svc_sock_names(buf + strlen(buf) + 1, nfsd_serv, buf); /* Decrease the count, but don't shut down the service */ nfsd_serv->sv_nrthreads--; } return err < 0 ? err : 0; } /* * A '-' followed by the 'name' of a socket means we close the socket. */ Loading Loading @@ -995,36 +1026,9 @@ static ssize_t __write_ports(struct file *file, char *buf, size_t size) len = svc_xprt_names(nfsd_serv, buf, 0); return len; } /* Either a single 'fd' number is written, in which * case it must be for a socket of a supported family/protocol, * and we use it as an nfsd socket, or * A '-' followed by the 'name' of a socket in which case * we close the socket. */ if (isdigit(buf[0])) { char *mesg = buf; int fd; int err; err = get_int(&mesg, &fd); if (err) return -EINVAL; if (fd < 0) return -EINVAL; err = nfsd_create_serv(); if (!err) { err = svc_addsock(nfsd_serv, fd, buf); if (err >= 0) { err = lockd_up(); if (err < 0) svc_sock_names(buf+strlen(buf)+1, nfsd_serv, buf); } /* Decrease the count, but don't shutdown the * the service */ nfsd_serv->sv_nrthreads--; } return err < 0 ? err : 0; } if (isdigit(buf[0])) return __write_ports_addfd(buf); if (buf[0] == '-' && isdigit(buf[1])) return __write_ports_delfd(buf); Loading Loading
fs/nfsd/nfsctl.c +34 −30 Original line number Diff line number Diff line Loading @@ -910,6 +910,37 @@ static ssize_t write_versions(struct file *file, char *buf, size_t size) return rv; } /* * A single 'fd' number was written, in which case it must be for * a socket of a supported family/protocol, and we use it as an * nfsd listener. */ static ssize_t __write_ports_addfd(char *buf) { char *mesg = buf; int fd, err; err = get_int(&mesg, &fd); if (err != 0 || fd < 0) return -EINVAL; err = nfsd_create_serv(); if (err != 0) return err; err = svc_addsock(nfsd_serv, fd, buf); if (err >= 0) { err = lockd_up(); if (err < 0) svc_sock_names(buf + strlen(buf) + 1, nfsd_serv, buf); /* Decrease the count, but don't shut down the service */ nfsd_serv->sv_nrthreads--; } return err < 0 ? err : 0; } /* * A '-' followed by the 'name' of a socket means we close the socket. */ Loading Loading @@ -995,36 +1026,9 @@ static ssize_t __write_ports(struct file *file, char *buf, size_t size) len = svc_xprt_names(nfsd_serv, buf, 0); return len; } /* Either a single 'fd' number is written, in which * case it must be for a socket of a supported family/protocol, * and we use it as an nfsd socket, or * A '-' followed by the 'name' of a socket in which case * we close the socket. */ if (isdigit(buf[0])) { char *mesg = buf; int fd; int err; err = get_int(&mesg, &fd); if (err) return -EINVAL; if (fd < 0) return -EINVAL; err = nfsd_create_serv(); if (!err) { err = svc_addsock(nfsd_serv, fd, buf); if (err >= 0) { err = lockd_up(); if (err < 0) svc_sock_names(buf+strlen(buf)+1, nfsd_serv, buf); } /* Decrease the count, but don't shutdown the * the service */ nfsd_serv->sv_nrthreads--; } return err < 0 ? err : 0; } if (isdigit(buf[0])) return __write_ports_addfd(buf); if (buf[0] == '-' && isdigit(buf[1])) return __write_ports_delfd(buf); Loading