summaryrefslogtreecommitdiff
path: root/fs/smb/client/sess.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/smb/client/sess.c')
-rw-r--r--fs/smb/client/sess.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/smb/client/sess.c b/fs/smb/client/sess.c
index 335c078c42fb..220e0a578cff 100644
--- a/fs/smb/client/sess.c
+++ b/fs/smb/client/sess.c
@@ -430,6 +430,10 @@ cifs_ses_add_channel(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses,
ctx.rdma = iface->rdma_capable;
memcpy(&ctx.dstaddr, &iface->sockaddr, sizeof(struct sockaddr_storage));
+ spin_lock(&ses->server->srv_lock);
+ ctx.iface_names[0] = smb_get_next_iface_name_rr(ses->server);
+ spin_unlock(&ses->server->srv_lock);
+
/* reuse master con client guid */
memcpy(&ctx.client_guid, ses->server->client_guid,
SMB2_CLIENT_GUID_SIZE);
@@ -444,6 +448,8 @@ cifs_ses_add_channel(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses,
rc = PTR_ERR(chan->server);
chan->server = NULL;
spin_unlock(&ses->chan_lock);
+ if (ctx.iface_names[0])
+ kfree(ctx.iface_names[0]);
goto out;
}
chan->iface = iface;