aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/callback.c6
-rw-r--r--fs/nfs/callback.h1
-rw-r--r--fs/nfs/netns.h1
-rw-r--r--fs/nfs/nfs4state.c2
4 files changed, 4 insertions, 6 deletions
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index 94aa9d8f3086..baafa0f1e555 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -38,8 +38,6 @@ static struct nfs_callback_data nfs_callback_info[NFS4_MAX_MINOR_VERSION + 1];
38static DEFINE_MUTEX(nfs_callback_mutex); 38static DEFINE_MUTEX(nfs_callback_mutex);
39static struct svc_program nfs4_callback_program; 39static struct svc_program nfs4_callback_program;
40 40
41unsigned short nfs_callback_tcpport6;
42
43static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net) 41static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net)
44{ 42{
45 int ret; 43 int ret;
@@ -56,9 +54,9 @@ static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net)
56 ret = svc_create_xprt(serv, "tcp", net, PF_INET6, 54 ret = svc_create_xprt(serv, "tcp", net, PF_INET6,
57 nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS); 55 nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS);
58 if (ret > 0) { 56 if (ret > 0) {
59 nfs_callback_tcpport6 = ret; 57 nn->nfs_callback_tcpport6 = ret;
60 dprintk("NFS: Callback listener port = %u (af %u, net %p)\n", 58 dprintk("NFS: Callback listener port = %u (af %u, net %p)\n",
61 nfs_callback_tcpport6, PF_INET6, net); 59 nn->nfs_callback_tcpport6, PF_INET6, net);
62 } else if (ret != -EAFNOSUPPORT) 60 } else if (ret != -EAFNOSUPPORT)
63 goto out_err; 61 goto out_err;
64 return 0; 62 return 0;
diff --git a/fs/nfs/callback.h b/fs/nfs/callback.h
index 1c167d163683..c07a8d460d36 100644
--- a/fs/nfs/callback.h
+++ b/fs/nfs/callback.h
@@ -208,6 +208,5 @@ extern int nfs4_set_callback_sessionid(struct nfs_client *clp);
208#define NFS41_BC_MAX_CALLBACKS 1 208#define NFS41_BC_MAX_CALLBACKS 1
209 209
210extern unsigned int nfs_callback_set_tcpport; 210extern unsigned int nfs_callback_set_tcpport;
211extern unsigned short nfs_callback_tcpport6;
212 211
213#endif /* __LINUX_FS_NFS_CALLBACK_H */ 212#endif /* __LINUX_FS_NFS_CALLBACK_H */
diff --git a/fs/nfs/netns.h b/fs/nfs/netns.h
index 1538d3a83cde..137238b012fb 100644
--- a/fs/nfs/netns.h
+++ b/fs/nfs/netns.h
@@ -23,6 +23,7 @@ struct nfs_net {
23#if IS_ENABLED(CONFIG_NFS_V4) 23#if IS_ENABLED(CONFIG_NFS_V4)
24 struct idr cb_ident_idr; /* Protected by nfs_client_lock */ 24 struct idr cb_ident_idr; /* Protected by nfs_client_lock */
25 unsigned short nfs_callback_tcpport; 25 unsigned short nfs_callback_tcpport;
26 unsigned short nfs_callback_tcpport6;
26#endif 27#endif
27 spinlock_t nfs_client_lock; 28 spinlock_t nfs_client_lock;
28 struct timespec boot_time; 29 struct timespec boot_time;
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 716cdc20475f..bd8ed01cb0ea 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -80,7 +80,7 @@ int nfs4_init_clientid(struct nfs_client *clp, struct rpc_cred *cred)
80 goto do_confirm; 80 goto do_confirm;
81 port = nn->nfs_callback_tcpport; 81 port = nn->nfs_callback_tcpport;
82 if (clp->cl_addr.ss_family == AF_INET6) 82 if (clp->cl_addr.ss_family == AF_INET6)
83 port = nfs_callback_tcpport6; 83 port = nn->nfs_callback_tcpport6;
84 84
85 status = nfs4_proc_setclientid(clp, NFS4_CALLBACK, port, cred, &clid); 85 status = nfs4_proc_setclientid(clp, NFS4_CALLBACK, port, cred, &clid);
86 if (status != 0) 86 if (status != 0)