.. | .. |
---|
41 | 41 | |
---|
42 | 42 | static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net) |
---|
43 | 43 | { |
---|
| 44 | + const struct cred *cred = current_cred(); |
---|
44 | 45 | int ret; |
---|
45 | 46 | struct nfs_net *nn = net_generic(net, nfs_net_id); |
---|
46 | 47 | |
---|
47 | 48 | ret = svc_create_xprt(serv, "tcp", net, PF_INET, |
---|
48 | | - nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS); |
---|
| 49 | + nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS, |
---|
| 50 | + cred); |
---|
49 | 51 | if (ret <= 0) |
---|
50 | 52 | goto out_err; |
---|
51 | 53 | nn->nfs_callback_tcpport = ret; |
---|
.. | .. |
---|
53 | 55 | nn->nfs_callback_tcpport, PF_INET, net->ns.inum); |
---|
54 | 56 | |
---|
55 | 57 | ret = svc_create_xprt(serv, "tcp", net, PF_INET6, |
---|
56 | | - nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS); |
---|
| 58 | + nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS, |
---|
| 59 | + cred); |
---|
57 | 60 | if (ret > 0) { |
---|
58 | 61 | nn->nfs_callback_tcpport6 = ret; |
---|
59 | | - dprintk("NFS: Callback listener port = %u (af %u, net %x\n", |
---|
| 62 | + dprintk("NFS: Callback listener port = %u (af %u, net %x)\n", |
---|
60 | 63 | nn->nfs_callback_tcpport6, PF_INET6, net->ns.inum); |
---|
61 | 64 | } else if (ret != -EAFNOSUPPORT) |
---|
62 | 65 | goto out_err; |
---|
.. | .. |
---|
206 | 209 | goto err_bind; |
---|
207 | 210 | } |
---|
208 | 211 | |
---|
209 | | - ret = -EPROTONOSUPPORT; |
---|
| 212 | + ret = 0; |
---|
210 | 213 | if (!IS_ENABLED(CONFIG_NFS_V4_1) || minorversion == 0) |
---|
211 | 214 | ret = nfs4_callback_up_net(serv, net); |
---|
212 | | - else if (xprt->ops->bc_up) |
---|
213 | | - ret = xprt->ops->bc_up(serv, net); |
---|
| 215 | + else if (xprt->ops->bc_setup) |
---|
| 216 | + set_bc_enabled(serv); |
---|
| 217 | + else |
---|
| 218 | + ret = -EPROTONOSUPPORT; |
---|
214 | 219 | |
---|
215 | 220 | if (ret < 0) { |
---|
216 | 221 | printk(KERN_ERR "NFS: callback service start failed\n"); |
---|
.. | .. |
---|
455 | 460 | .pg_class = "nfs", /* authentication class */ |
---|
456 | 461 | .pg_stats = &nfs4_callback_stats, |
---|
457 | 462 | .pg_authenticate = nfs_callback_authenticate, |
---|
| 463 | + .pg_init_request = svc_generic_init_request, |
---|
| 464 | + .pg_rpcbind_set = svc_generic_rpcbind_set, |
---|
458 | 465 | }; |
---|