From: Namjae Jeon Date: Mon, 21 Jul 2025 05:29:43 +0000 (+0900) Subject: ksmbd: check return value of xa_store() in krb5_authenticate X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ecd9d6bf88ddd64e3dc7beb9a065fd5fa4714f72;p=thirdparty%2Flinux.git ksmbd: check return value of xa_store() in krb5_authenticate xa_store() may fail so check its return value and return error code if error occurred. Signed-off-by: Namjae Jeon Signed-off-by: Steve French --- diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 0caf30fb1df19..b46fbc8087e0c 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -1594,7 +1594,7 @@ static int krb5_authenticate(struct ksmbd_work *work, struct ksmbd_conn *conn = work->conn; struct ksmbd_session *sess = work->sess; char *in_blob, *out_blob; - struct channel *chann = NULL; + struct channel *chann = NULL, *old; u64 prev_sess_id; int in_len, out_len; int retval; @@ -1660,7 +1660,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); + } } }