diff options
author | Salah Triki <salah.triki@gmail.com> | 2025-04-16 22:26:25 +0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2025-04-23 04:45:43 +0300 |
commit | af5226abb40cae959f424f7ca614787a1c87ce48 (patch) | |
tree | b33ede37f8df6ce1595073cffb9f597e9147ddac | |
parent | 9c32cda43eb78f78c73aee4aa344b777714e259b (diff) | |
download | linux-af5226abb40cae959f424f7ca614787a1c87ce48.tar.xz |
smb: server: smb2pdu: check return value of xa_store()
xa_store() may fail so check its return value and return error code if
error occurred.
Signed-off-by: Salah Triki <salah.triki@gmail.com>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r-- | fs/smb/server/smb2pdu.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 57839f9708bb..372021b3f263 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -1445,7 +1445,7 @@ static int ntlm_authenticate(struct ksmbd_work *work, { struct ksmbd_conn *conn = work->conn; struct ksmbd_session *sess = work->sess; - struct channel *chann = NULL; + struct channel *chann = NULL, *old; struct ksmbd_user *user; u64 prev_id; int sz, rc; @@ -1557,7 +1557,12 @@ binding_session: return -ENOMEM; chann->conn = conn; - xa_store(&sess->ksmbd_chann_list, (long)conn, chann, KSMBD_DEFAULT_GFP); + old = xa_store(&sess->ksmbd_chann_list, (long)conn, chann, + KSMBD_DEFAULT_GFP); + if (xa_is_err(old)) { + kfree(chann); + return xa_err(old); + } } } |