Skip to content

Commit 28e1973

Browse files
Trond MyklebustAnna Schumaker
authored andcommitted
pnfs: Fix TLS logic in _nfs4_pnfs_v4_ds_connect()
Don't try to add an RDMA transport to a client that is already marked as being a TCP/TLS transport. Fixes: a35518c ("NFSv4.1/pnfs: fix NFS with TLS in pnfs") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
1 parent 7aca00d commit 28e1973

1 file changed

Lines changed: 17 additions & 17 deletions

File tree

fs/nfs/pnfs_nfs.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,10 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
884884
u32 minor_version)
885885
{
886886
struct nfs_client *clp = ERR_PTR(-EIO);
887+
struct nfs_client *mds_clp = mds_srv->nfs_client;
888+
enum xprtsec_policies xprtsec_policy = mds_clp->cl_xprtsec.policy;
887889
struct nfs4_pnfs_ds_addr *da;
890+
int ds_proto;
888891
int status = 0;
889892

890893
dprintk("--> %s DS %s\n", __func__, ds->ds_remotestr);
@@ -912,12 +915,8 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
912915
.data = &xprtdata,
913916
};
914917

915-
if (da->da_transport != clp->cl_proto &&
916-
clp->cl_proto != XPRT_TRANSPORT_TCP_TLS)
917-
continue;
918-
if (da->da_transport == XPRT_TRANSPORT_TCP &&
919-
mds_srv->nfs_client->cl_proto ==
920-
XPRT_TRANSPORT_TCP_TLS) {
918+
if (xprt_args.ident == XPRT_TRANSPORT_TCP &&
919+
clp->cl_proto == XPRT_TRANSPORT_TCP_TLS) {
921920
struct sockaddr *addr =
922921
(struct sockaddr *)&da->da_addr;
923922
struct sockaddr_in *sin =
@@ -948,7 +947,10 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
948947
xprt_args.ident = XPRT_TRANSPORT_TCP_TLS;
949948
xprt_args.servername = servername;
950949
}
951-
if (da->da_addr.ss_family != clp->cl_addr.ss_family)
950+
if (xprt_args.ident != clp->cl_proto)
951+
continue;
952+
if (xprt_args.dstaddr->sa_family !=
953+
clp->cl_addr.ss_family)
952954
continue;
953955

954956
/**
@@ -962,15 +964,14 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
962964
if (xprtdata.cred)
963965
put_cred(xprtdata.cred);
964966
} else {
965-
if (da->da_transport == XPRT_TRANSPORT_TCP &&
966-
mds_srv->nfs_client->cl_proto ==
967-
XPRT_TRANSPORT_TCP_TLS)
968-
da->da_transport = XPRT_TRANSPORT_TCP_TLS;
969-
clp = nfs4_set_ds_client(mds_srv,
970-
&da->da_addr,
971-
da->da_addrlen,
972-
da->da_transport, timeo,
973-
retrans, minor_version);
967+
ds_proto = da->da_transport;
968+
if (ds_proto == XPRT_TRANSPORT_TCP &&
969+
xprtsec_policy != RPC_XPRTSEC_NONE)
970+
ds_proto = XPRT_TRANSPORT_TCP_TLS;
971+
972+
clp = nfs4_set_ds_client(mds_srv, &da->da_addr,
973+
da->da_addrlen, ds_proto,
974+
timeo, retrans, minor_version);
974975
if (IS_ERR(clp))
975976
continue;
976977

@@ -981,7 +982,6 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
981982
clp = ERR_PTR(-EIO);
982983
continue;
983984
}
984-
985985
}
986986
}
987987

0 commit comments

Comments
 (0)