diff options
Diffstat (limited to 'fs/smb/client/sess.c')
-rw-r--r-- | fs/smb/client/sess.c | 6 |
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; |