]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: client: fix smbdirect_recv_io leak in smbd_negotiate() error path
authorStefan Metzmacher <metze@samba.org>
Thu, 18 Sep 2025 01:06:46 +0000 (03:06 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Sep 2025 09:13:49 +0000 (11:13 +0200)
[ Upstream commit daac51c7032036a0ca5f1aa419ad1b0471d1c6e0 ]

During tests of another unrelated patch I was able to trigger this
error: Objects remaining on __kmem_cache_shutdown()

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Fixes: f198186aa9bb ("CIFS: SMBD: Establish SMB Direct connection")
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/smb/client/smbdirect.c

index 6284252aa48820a431b10fe89f70dd896d9cde80..b1548269c308a13af3832013c077e9576d02f557 100644 (file)
@@ -1075,8 +1075,10 @@ static int smbd_negotiate(struct smbd_connection *info)
        log_rdma_event(INFO, "smbd_post_recv rc=%d iov.addr=0x%llx iov.length=%u iov.lkey=0x%x\n",
                       rc, response->sge.addr,
                       response->sge.length, response->sge.lkey);
-       if (rc)
+       if (rc) {
+               put_receive_buffer(info, response);
                return rc;
+       }
 
        init_completion(&info->negotiate_completion);
        info->negotiate_done = false;