Merge tag 'nfsd-6.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux

Pull nfsd fix from Chuck Lever:

- Fix another regression in the NFSD administrative API

* tag 'nfsd-6.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
nfsd: drop the nfsd_put helper

Changed files
+17 -21
fs
+17 -14
fs/nfsd/nfsctl.c
··· 693 693 char *mesg = buf; 694 694 int fd, err; 695 695 struct nfsd_net *nn = net_generic(net, nfsd_net_id); 696 + struct svc_serv *serv; 696 697 697 698 err = get_int(&mesg, &fd); 698 699 if (err != 0 || fd < 0) ··· 704 703 if (err != 0) 705 704 return err; 706 705 707 - err = svc_addsock(nn->nfsd_serv, net, fd, buf, SIMPLE_TRANSACTION_LIMIT, cred); 706 + serv = nn->nfsd_serv; 707 + err = svc_addsock(serv, net, fd, buf, SIMPLE_TRANSACTION_LIMIT, cred); 708 708 709 - if (err < 0 && !nn->nfsd_serv->sv_nrthreads && !nn->keep_active) 709 + if (err < 0 && !serv->sv_nrthreads && !nn->keep_active) 710 710 nfsd_last_thread(net); 711 - else if (err >= 0 && 712 - !nn->nfsd_serv->sv_nrthreads && !xchg(&nn->keep_active, 1)) 713 - svc_get(nn->nfsd_serv); 711 + else if (err >= 0 && !serv->sv_nrthreads && !xchg(&nn->keep_active, 1)) 712 + svc_get(serv); 714 713 715 - nfsd_put(net); 714 + svc_put(serv); 716 715 return err; 717 716 } 718 717 ··· 726 725 struct svc_xprt *xprt; 727 726 int port, err; 728 727 struct nfsd_net *nn = net_generic(net, nfsd_net_id); 728 + struct svc_serv *serv; 729 729 730 730 if (sscanf(buf, "%15s %5u", transport, &port) != 2) 731 731 return -EINVAL; ··· 739 737 if (err != 0) 740 738 return err; 741 739 742 - err = svc_xprt_create(nn->nfsd_serv, transport, net, 740 + serv = nn->nfsd_serv; 741 + err = svc_xprt_create(serv, transport, net, 743 742 PF_INET, port, SVC_SOCK_ANONYMOUS, cred); 744 743 if (err < 0) 745 744 goto out_err; 746 745 747 - err = svc_xprt_create(nn->nfsd_serv, transport, net, 746 + err = svc_xprt_create(serv, transport, net, 748 747 PF_INET6, port, SVC_SOCK_ANONYMOUS, cred); 749 748 if (err < 0 && err != -EAFNOSUPPORT) 750 749 goto out_close; 751 750 752 - if (!nn->nfsd_serv->sv_nrthreads && !xchg(&nn->keep_active, 1)) 753 - svc_get(nn->nfsd_serv); 751 + if (!serv->sv_nrthreads && !xchg(&nn->keep_active, 1)) 752 + svc_get(serv); 754 753 755 - nfsd_put(net); 754 + svc_put(serv); 756 755 return 0; 757 756 out_close: 758 - xprt = svc_find_xprt(nn->nfsd_serv, transport, net, PF_INET, port); 757 + xprt = svc_find_xprt(serv, transport, net, PF_INET, port); 759 758 if (xprt != NULL) { 760 759 svc_xprt_close(xprt); 761 760 svc_xprt_put(xprt); 762 761 } 763 762 out_err: 764 - if (!nn->nfsd_serv->sv_nrthreads && !nn->keep_active) 763 + if (!serv->sv_nrthreads && !nn->keep_active) 765 764 nfsd_last_thread(net); 766 765 767 - nfsd_put(net); 766 + svc_put(serv); 768 767 return err; 769 768 } 770 769
-7
fs/nfsd/nfsd.h
··· 113 113 int nfsd_pool_stats_release(struct inode *, struct file *); 114 114 void nfsd_shutdown_threads(struct net *net); 115 115 116 - static inline void nfsd_put(struct net *net) 117 - { 118 - struct nfsd_net *nn = net_generic(net, nfsd_net_id); 119 - 120 - svc_put(nn->nfsd_serv); 121 - } 122 - 123 116 bool i_am_nfsd(void); 124 117 125 118 struct nfsdfs_client {