From: Namjae Jeon <linkinjeon@kernel.org>
To: gregkh@linuxfoundation.org, stable@vger.kernel.org
Cc: smfrench@gmail.com, Namjae Jeon <linkinjeon@kernel.org>,
zdi-disclosures@trendmicro.com,
Steve French <stfrench@microsoft.com>
Subject: [PATCH 5.15.y 088/154] ksmbd: fix racy issue from session setup and logoff
Date: Tue, 19 Dec 2023 00:33:48 +0900 [thread overview]
Message-ID: <20231218153454.8090-89-linkinjeon@kernel.org> (raw)
In-Reply-To: <20231218153454.8090-1-linkinjeon@kernel.org>
[ Upstream commit f5c779b7ddbda30866cf2a27c63e34158f858c73 ]
This racy issue is triggered by sending concurrent session setup and
logoff requests. This patch does not set connection status as
KSMBD_SESS_GOOD if state is KSMBD_SESS_NEED_RECONNECT in session setup.
And relookup session to validate if session is deleted in logoff.
Cc: stable@vger.kernel.org
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-20481, ZDI-CAN-20590, ZDI-CAN-20596
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
---
fs/ksmbd/connection.c | 14 ++++----
fs/ksmbd/connection.h | 39 ++++++++++++---------
fs/ksmbd/mgmt/user_session.c | 1 +
fs/ksmbd/server.c | 3 +-
fs/ksmbd/smb2pdu.c | 67 +++++++++++++++++++++++-------------
fs/ksmbd/transport_tcp.c | 2 +-
6 files changed, 77 insertions(+), 49 deletions(-)
diff --git a/fs/ksmbd/connection.c b/fs/ksmbd/connection.c
index 54888f2819e6..c47b80759603 100644
--- a/fs/ksmbd/connection.c
+++ b/fs/ksmbd/connection.c
@@ -56,7 +56,7 @@ struct ksmbd_conn *ksmbd_conn_alloc(void)
return NULL;
conn->need_neg = true;
- conn->status = KSMBD_SESS_NEW;
+ ksmbd_conn_set_new(conn);
conn->local_nls = load_nls("utf8");
if (!conn->local_nls)
conn->local_nls = load_nls_default();
@@ -147,12 +147,12 @@ int ksmbd_conn_try_dequeue_request(struct ksmbd_work *work)
return ret;
}
-static void ksmbd_conn_lock(struct ksmbd_conn *conn)
+void ksmbd_conn_lock(struct ksmbd_conn *conn)
{
mutex_lock(&conn->srv_mutex);
}
-static void ksmbd_conn_unlock(struct ksmbd_conn *conn)
+void ksmbd_conn_unlock(struct ksmbd_conn *conn)
{
mutex_unlock(&conn->srv_mutex);
}
@@ -243,7 +243,7 @@ bool ksmbd_conn_alive(struct ksmbd_conn *conn)
if (!ksmbd_server_running())
return false;
- if (conn->status == KSMBD_SESS_EXITING)
+ if (ksmbd_conn_exiting(conn))
return false;
if (kthread_should_stop())
@@ -303,7 +303,7 @@ int ksmbd_conn_handler_loop(void *p)
pdu_size = get_rfc1002_len(hdr_buf);
ksmbd_debug(CONN, "RFC1002 header %u bytes\n", pdu_size);
- if (conn->status == KSMBD_SESS_GOOD)
+ if (ksmbd_conn_good(conn))
max_allowed_pdu_size =
SMB3_MAX_MSGSIZE + conn->vals->max_write_size;
else
@@ -312,7 +312,7 @@ int ksmbd_conn_handler_loop(void *p)
if (pdu_size > max_allowed_pdu_size) {
pr_err_ratelimited("PDU length(%u) exceeded maximum allowed pdu size(%u) on connection(%d)\n",
pdu_size, max_allowed_pdu_size,
- conn->status);
+ READ_ONCE(conn->status));
break;
}
@@ -417,7 +417,7 @@ static void stop_sessions(void)
if (task)
ksmbd_debug(CONN, "Stop session handler %s/%d\n",
task->comm, task_pid_nr(task));
- conn->status = KSMBD_SESS_EXITING;
+ ksmbd_conn_set_exiting(conn);
if (t->ops->shutdown) {
read_unlock(&conn_list_lock);
t->ops->shutdown(t);
diff --git a/fs/ksmbd/connection.h b/fs/ksmbd/connection.h
index 0e3a848defaf..98bb5f199fa2 100644
--- a/fs/ksmbd/connection.h
+++ b/fs/ksmbd/connection.h
@@ -162,6 +162,8 @@ void ksmbd_conn_init_server_callbacks(struct ksmbd_conn_ops *ops);
int ksmbd_conn_handler_loop(void *p);
int ksmbd_conn_transport_init(void);
void ksmbd_conn_transport_destroy(void);
+void ksmbd_conn_lock(struct ksmbd_conn *conn);
+void ksmbd_conn_unlock(struct ksmbd_conn *conn);
/*
* WARNING
@@ -169,43 +171,48 @@ void ksmbd_conn_transport_destroy(void);
* This is a hack. We will move status to a proper place once we land
* a multi-sessions support.
*/
-static inline bool ksmbd_conn_good(struct ksmbd_work *work)
+static inline bool ksmbd_conn_good(struct ksmbd_conn *conn)
{
- return work->conn->status == KSMBD_SESS_GOOD;
+ return READ_ONCE(conn->status) == KSMBD_SESS_GOOD;
}
-static inline bool ksmbd_conn_need_negotiate(struct ksmbd_work *work)
+static inline bool ksmbd_conn_need_negotiate(struct ksmbd_conn *conn)
{
- return work->conn->status == KSMBD_SESS_NEED_NEGOTIATE;
+ return READ_ONCE(conn->status) == KSMBD_SESS_NEED_NEGOTIATE;
}
-static inline bool ksmbd_conn_need_reconnect(struct ksmbd_work *work)
+static inline bool ksmbd_conn_need_reconnect(struct ksmbd_conn *conn)
{
- return work->conn->status == KSMBD_SESS_NEED_RECONNECT;
+ return READ_ONCE(conn->status) == KSMBD_SESS_NEED_RECONNECT;
}
-static inline bool ksmbd_conn_exiting(struct ksmbd_work *work)
+static inline bool ksmbd_conn_exiting(struct ksmbd_conn *conn)
{
- return work->conn->status == KSMBD_SESS_EXITING;
+ return READ_ONCE(conn->status) == KSMBD_SESS_EXITING;
}
-static inline void ksmbd_conn_set_good(struct ksmbd_work *work)
+static inline void ksmbd_conn_set_new(struct ksmbd_conn *conn)
{
- work->conn->status = KSMBD_SESS_GOOD;
+ WRITE_ONCE(conn->status, KSMBD_SESS_NEW);
}
-static inline void ksmbd_conn_set_need_negotiate(struct ksmbd_work *work)
+static inline void ksmbd_conn_set_good(struct ksmbd_conn *conn)
{
- work->conn->status = KSMBD_SESS_NEED_NEGOTIATE;
+ WRITE_ONCE(conn->status, KSMBD_SESS_GOOD);
}
-static inline void ksmbd_conn_set_need_reconnect(struct ksmbd_work *work)
+static inline void ksmbd_conn_set_need_negotiate(struct ksmbd_conn *conn)
{
- work->conn->status = KSMBD_SESS_NEED_RECONNECT;
+ WRITE_ONCE(conn->status, KSMBD_SESS_NEED_NEGOTIATE);
}
-static inline void ksmbd_conn_set_exiting(struct ksmbd_work *work)
+static inline void ksmbd_conn_set_need_reconnect(struct ksmbd_conn *conn)
{
- work->conn->status = KSMBD_SESS_EXITING;
+ WRITE_ONCE(conn->status, KSMBD_SESS_NEED_RECONNECT);
+}
+
+static inline void ksmbd_conn_set_exiting(struct ksmbd_conn *conn)
+{
+ WRITE_ONCE(conn->status, KSMBD_SESS_EXITING);
}
#endif /* __CONNECTION_H__ */
diff --git a/fs/ksmbd/mgmt/user_session.c b/fs/ksmbd/mgmt/user_session.c
index 1ca2aae4c299..68d40025cfbf 100644
--- a/fs/ksmbd/mgmt/user_session.c
+++ b/fs/ksmbd/mgmt/user_session.c
@@ -315,6 +315,7 @@ static struct ksmbd_session *__session_create(int protocol)
if (ksmbd_init_file_table(&sess->file_table))
goto error;
+ sess->state = SMB2_SESSION_IN_PROGRESS;
set_session_flag(sess, protocol);
xa_init(&sess->tree_conns);
xa_init(&sess->ksmbd_chann_list);
diff --git a/fs/ksmbd/server.c b/fs/ksmbd/server.c
index 586f948976c8..14df83c20557 100644
--- a/fs/ksmbd/server.c
+++ b/fs/ksmbd/server.c
@@ -93,7 +93,8 @@ static inline int check_conn_state(struct ksmbd_work *work)
{
struct smb_hdr *rsp_hdr;
- if (ksmbd_conn_exiting(work) || ksmbd_conn_need_reconnect(work)) {
+ if (ksmbd_conn_exiting(work->conn) ||
+ ksmbd_conn_need_reconnect(work->conn)) {
rsp_hdr = work->response_buf;
rsp_hdr->Status.CifsError = STATUS_CONNECTION_DISCONNECTED;
return 1;
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index d39412f1ddb2..ef4550152721 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -265,7 +265,7 @@ int init_smb2_neg_rsp(struct ksmbd_work *work)
rsp = smb2_get_msg(work->response_buf);
- WARN_ON(ksmbd_conn_good(work));
+ WARN_ON(ksmbd_conn_good(conn));
rsp->StructureSize = cpu_to_le16(65);
ksmbd_debug(SMB, "conn->dialect 0x%x\n", conn->dialect);
@@ -295,7 +295,7 @@ int init_smb2_neg_rsp(struct ksmbd_work *work)
rsp->SecurityMode |= SMB2_NEGOTIATE_SIGNING_REQUIRED_LE;
conn->use_spnego = true;
- ksmbd_conn_set_need_negotiate(work);
+ ksmbd_conn_set_need_negotiate(conn);
return 0;
}
@@ -574,7 +574,7 @@ int smb2_check_user_session(struct ksmbd_work *work)
cmd == SMB2_SESSION_SETUP_HE)
return 0;
- if (!ksmbd_conn_good(work))
+ if (!ksmbd_conn_good(conn))
return -EIO;
sess_id = le64_to_cpu(req_hdr->SessionId);
@@ -625,7 +625,7 @@ static void destroy_previous_session(struct ksmbd_conn *conn,
prev_sess->state = SMB2_SESSION_EXPIRED;
xa_for_each(&prev_sess->ksmbd_chann_list, index, chann)
- chann->conn->status = KSMBD_SESS_EXITING;
+ ksmbd_conn_set_exiting(chann->conn);
}
/**
@@ -1081,7 +1081,7 @@ int smb2_handle_negotiate(struct ksmbd_work *work)
ksmbd_debug(SMB, "Received negotiate request\n");
conn->need_neg = false;
- if (ksmbd_conn_good(work)) {
+ if (ksmbd_conn_good(conn)) {
pr_err("conn->tcp_status is already in CifsGood State\n");
work->send_no_response = 1;
return rc;
@@ -1236,7 +1236,7 @@ int smb2_handle_negotiate(struct ksmbd_work *work)
}
conn->srv_sec_mode = le16_to_cpu(rsp->SecurityMode);
- ksmbd_conn_set_need_negotiate(work);
+ ksmbd_conn_set_need_negotiate(conn);
err_out:
if (rc < 0)
@@ -1658,6 +1658,7 @@ int smb2_sess_setup(struct ksmbd_work *work)
rsp->SecurityBufferLength = 0;
inc_rfc1001_len(work->response_buf, 9);
+ ksmbd_conn_lock(conn);
if (!req->hdr.SessionId) {
sess = ksmbd_smb2_session_create();
if (!sess) {
@@ -1705,6 +1706,12 @@ int smb2_sess_setup(struct ksmbd_work *work)
goto out_err;
}
+ if (ksmbd_conn_need_reconnect(conn)) {
+ rc = -EFAULT;
+ sess = NULL;
+ goto out_err;
+ }
+
if (ksmbd_session_lookup(conn, sess_id)) {
rc = -EACCES;
goto out_err;
@@ -1729,12 +1736,20 @@ int smb2_sess_setup(struct ksmbd_work *work)
rc = -ENOENT;
goto out_err;
}
+
+ if (sess->state == SMB2_SESSION_EXPIRED) {
+ rc = -EFAULT;
+ goto out_err;
+ }
+
+ if (ksmbd_conn_need_reconnect(conn)) {
+ rc = -EFAULT;
+ sess = NULL;
+ goto out_err;
+ }
}
work->sess = sess;
- if (sess->state == SMB2_SESSION_EXPIRED)
- sess->state = SMB2_SESSION_IN_PROGRESS;
-
negblob_off = le16_to_cpu(req->SecurityBufferOffset);
negblob_len = le16_to_cpu(req->SecurityBufferLength);
if (negblob_off < offsetof(struct smb2_sess_setup_req, Buffer) ||
@@ -1764,8 +1779,10 @@ int smb2_sess_setup(struct ksmbd_work *work)
goto out_err;
}
- ksmbd_conn_set_good(work);
- sess->state = SMB2_SESSION_VALID;
+ if (!ksmbd_conn_need_reconnect(conn)) {
+ ksmbd_conn_set_good(conn);
+ sess->state = SMB2_SESSION_VALID;
+ }
kfree(sess->Preauth_HashValue);
sess->Preauth_HashValue = NULL;
} else if (conn->preferred_auth_mech == KSMBD_AUTH_NTLMSSP) {
@@ -1787,8 +1804,10 @@ int smb2_sess_setup(struct ksmbd_work *work)
if (rc)
goto out_err;
- ksmbd_conn_set_good(work);
- sess->state = SMB2_SESSION_VALID;
+ if (!ksmbd_conn_need_reconnect(conn)) {
+ ksmbd_conn_set_good(conn);
+ sess->state = SMB2_SESSION_VALID;
+ }
if (conn->binding) {
struct preauth_session *preauth_sess;
@@ -1856,14 +1875,13 @@ int smb2_sess_setup(struct ksmbd_work *work)
if (sess->user && sess->user->flags & KSMBD_USER_FLAG_DELAY_SESSION)
try_delay = true;
- xa_erase(&conn->sessions, sess->id);
- ksmbd_session_destroy(sess);
- work->sess = NULL;
+ sess->state = SMB2_SESSION_EXPIRED;
if (try_delay)
ssleep(5);
}
}
+ ksmbd_conn_unlock(conn);
return rc;
}
@@ -2087,21 +2105,24 @@ int smb2_session_logoff(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
struct smb2_logoff_rsp *rsp = smb2_get_msg(work->response_buf);
- struct ksmbd_session *sess = work->sess;
+ struct ksmbd_session *sess;
+ struct smb2_logoff_req *req = smb2_get_msg(work->request_buf);
rsp->StructureSize = cpu_to_le16(4);
inc_rfc1001_len(work->response_buf, 4);
ksmbd_debug(SMB, "request\n");
- /* setting CifsExiting here may race with start_tcp_sess */
- ksmbd_conn_set_need_reconnect(work);
+ ksmbd_conn_set_need_reconnect(conn);
ksmbd_close_session_fds(work);
ksmbd_conn_wait_idle(conn);
+ /*
+ * Re-lookup session to validate if session is deleted
+ * while waiting request complete
+ */
+ sess = ksmbd_session_lookup(conn, le64_to_cpu(req->hdr.SessionId));
if (ksmbd_tree_conn_session_logoff(sess)) {
- struct smb2_logoff_req *req = smb2_get_msg(work->request_buf);
-
ksmbd_debug(SMB, "Invalid tid %d\n", req->hdr.Id.SyncId.TreeId);
rsp->hdr.Status = STATUS_NETWORK_NAME_DELETED;
smb2_set_err_rsp(work);
@@ -2113,9 +2134,7 @@ int smb2_session_logoff(struct ksmbd_work *work)
ksmbd_free_user(sess->user);
sess->user = NULL;
-
- /* let start_tcp_sess free connection info now */
- ksmbd_conn_set_need_negotiate(work);
+ ksmbd_conn_set_need_negotiate(conn);
return 0;
}
diff --git a/fs/ksmbd/transport_tcp.c b/fs/ksmbd/transport_tcp.c
index 20e85e2701f2..eff7a1d793f0 100644
--- a/fs/ksmbd/transport_tcp.c
+++ b/fs/ksmbd/transport_tcp.c
@@ -333,7 +333,7 @@ static int ksmbd_tcp_readv(struct tcp_transport *t, struct kvec *iov_orig,
if (length == -EINTR) {
total_read = -ESHUTDOWN;
break;
- } else if (conn->status == KSMBD_SESS_NEED_RECONNECT) {
+ } else if (ksmbd_conn_need_reconnect(conn)) {
total_read = -EAGAIN;
break;
} else if (length == -ERESTARTSYS || length == -EAGAIN) {
--
2.25.1
next prev parent reply other threads:[~2023-12-18 15:40 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-18 15:32 [PATCH 5.15.y 000/154] ksmbd backport patches for 5.15.y Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 001/154] ksmbd: use ksmbd_req_buf_next() in ksmbd_verify_smb_message() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 002/154] ksmdb: use cmd helper variable in smb2_get_ksmbd_tcon() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 003/154] ksmbd: Remove redundant 'flush_workqueue()' calls Namjae Jeon
2023-12-18 17:56 ` Christophe JAILLET
2023-12-18 20:31 ` Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 004/154] ksmbd: remove md4 leftovers Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 005/154] ksmbd: remove smb2_buf_length in smb2_hdr Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 006/154] ksmbd: remove smb2_buf_length in smb2_transform_hdr Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 007/154] ksmbd: change LeaseKey data type to u8 array Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 008/154] ksmbd: use oid registry functions to decode OIDs Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 009/154] ksmbd: Remove unused parameter from smb2_get_name() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 010/154] ksmbd: Remove unused fields from ksmbd_file struct definition Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 011/154] ksmbd: set both ipv4 and ipv6 in FSCTL_QUERY_NETWORK_INTERFACE_INFO Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 012/154] ksmbd: Fix buffer_check_err() kernel-doc comment Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 013/154] ksmbd: Fix smb2_set_info_file() " Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 014/154] ksmbd: Delete an invalid argument description in smb2_populate_readdir_entry() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 015/154] ksmbd: Fix smb2_get_name() kernel-doc comment Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 016/154] ksmbd: register ksmbd ib client with ib_register_client() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 017/154] ksmbd: set 445 port to smbdirect port by default Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 018/154] ksmbd: smbd: call rdma_accept() under CM handler Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 019/154] ksmbd: smbd: create MR pool Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 020/154] ksmbd: smbd: change the default maximum read/write, receive size Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 021/154] ksmbd: add smb-direct shutdown Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 022/154] ksmbd: smbd: fix missing client's memory region invalidation Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 023/154] ksmbd: smbd: validate buffer descriptor structures Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 024/154] ksmbd: add support for key exchange Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 025/154] ksmbd: use netif_is_bridge_port Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 026/154] ksmbd: store fids as opaque u64 integers Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 027/154] ksmbd: shorten experimental warning on loading the module Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 028/154] ksmbd: Remove a redundant zeroing of memory Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 029/154] ksmbd: replace usage of found with dedicated list iterator variable Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 030/154] smb3: fix ksmbd bigendian bug in oplock break, and move its struct to smbfs_common Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 031/154] ksmbd: remove filename in ksmbd_file Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 032/154] ksmbd: validate length in smb2_write() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 033/154] ksmbd: smbd: change prototypes of RDMA read/write related functions Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 034/154] ksmbd: smbd: introduce read/write credits for RDMA read/write Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 035/154] ksmbd: smbd: simplify tracking pending packets Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 036/154] ksmbd: smbd: change the return value of get_sg_list Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 037/154] ksmbd: smbd: handle multiple Buffer descriptors Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 038/154] ksmbd: fix wrong smbd max read/write size check Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 039/154] ksmbd: Fix some kernel-doc comments Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 040/154] ksmbd: smbd: fix connection dropped issue Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 041/154] ksmbd: smbd: relax the count of sges required Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 042/154] ksmbd: smbd: Remove useless license text when SPDX-License-Identifier is already used Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 043/154] ksmbd: remove duplicate flag set in smb2_write Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 044/154] ksmbd: remove unused ksmbd_share_configs_cleanup function Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 045/154] ksmbd: use wait_event instead of schedule_timeout() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 046/154] ksmbd: request update to stale share config Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 047/154] ksmbd: remove unnecessary generic_fillattr in smb2_open Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 048/154] ksmbd: don't open-code file_path() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 049/154] ksmbd: don't open-code %pD Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 050/154] ksmbd: constify struct path Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 051/154] ksmbd: remove generic_fillattr use in smb2_open() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 052/154] ksmbd: casefold utf-8 share names and fix ascii lowercase conversion Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 053/154] ksmbd: change security id to the one samba used for posix extension Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 054/154] ksmbd: set file permission mode to match Samba server posix extension behavior Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 055/154] ksmbd: fill sids in SMB_FIND_FILE_POSIX_INFO response Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 056/154] ksmbd: fix encryption failure issue for session logoff response Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 057/154] ksmbd: set NTLMSSP_NEGOTIATE_SEAL flag to challenge blob Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 058/154] ksmbd: decrease the number of SMB3 smbdirect server SGEs Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 059/154] ksmbd: reduce server smbdirect max send/receive segment sizes Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 060/154] ksmbd: hide socket error message when ipv6 config is disable Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 061/154] ksmbd: make utf-8 file name comparison work in __caseless_lookup() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 062/154] ksmbd: call ib_drain_qp when disconnected Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 063/154] ksmbd: validate share name from share config response Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 064/154] ksmbd: replace one-element arrays with flexible-array members Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 065/154] ksmbd: set SMB2_SESSION_FLAG_ENCRYPT_DATA when enforcing data encryption for this share Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 066/154] ksmbd: use F_SETLK when unlocking a file Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 067/154] ksmbd: Fix resource leak in smb2_lock() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 068/154] ksmbd: Convert to use sysfs_emit()/sysfs_emit_at() APIs Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 069/154] ksmbd: send proper error response in smb2_tree_connect() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 070/154] ksmbd: Implements sess->ksmbd_chann_list as xarray Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 071/154] ksmbd: Implements sess->rpc_handle_list " Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 072/154] ksmbd: fix typo, syncronous->synchronous Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 073/154] ksmbd: Remove duplicated codes Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 074/154] ksmbd: update Kconfig to note Kerberos support and fix indentation Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 075/154] ksmbd: Fix spelling mistake "excceed" -> "exceeded" Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 076/154] ksmbd: Fix parameter name and comment mismatch Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 077/154] ksmbd: fix possible memory leak in smb2_lock() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 078/154] ksmbd: fix wrong signingkey creation when encryption is AES256 Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 079/154] ksmbd: remove unused is_char_allowed function Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 080/154] ksmbd: delete asynchronous work from list Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 081/154] ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 082/154] ksmbd: avoid out of bounds access in decode_preauth_ctxt() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 083/154] ksmbd: set NegotiateContextCount once instead of every inc Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 084/154] ksmbd: avoid duplicate negotiate ctx offset increments Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 085/154] ksmbd: remove unused compression negotiate ctx packing Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 086/154] fs: introduce lock_rename_child() helper Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 087/154] ksmbd: fix racy issue from using ->d_parent and ->d_name Namjae Jeon
2023-12-18 15:33 ` Namjae Jeon [this message]
2023-12-18 15:33 ` [PATCH 5.15.y 089/154] ksmbd: destroy expired sessions Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 090/154] ksmbd: block asynchronous requests when making a delay on session setup Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 091/154] ksmbd: fix racy issue from smb2 close and logoff with multichannel Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 092/154] ksmbd: fix racy issue under cocurrent smb2 tree disconnect Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 093/154] ksmbd: fix uninitialized pointer read in ksmbd_vfs_rename() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 094/154] ksmbd: fix uninitialized pointer read in smb2_create_link() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 095/154] ksmbd: fix multiple out-of-bounds read during context decoding Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 096/154] ksmbd: fix UAF issue from opinfo->conn Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 097/154] ksmbd: call putname after using the last component Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 098/154] ksmbd: fix out-of-bound read in deassemble_neg_contexts() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 099/154] ksmbd: fix out-of-bound read in parse_lease_state() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 100/154] ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 101/154] ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 102/154] ksmbd: validate smb request protocol id Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 103/154] ksmbd: add mnt_want_write to ksmbd vfs functions Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 104/154] ksmbd: remove unused ksmbd_tree_conn_share function Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 105/154] ksmbd: use kzalloc() instead of __GFP_ZERO Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 106/154] ksmbd: return a literal instead of 'err' in ksmbd_vfs_kern_path_locked() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 107/154] ksmbd: Change the return value of ksmbd_vfs_query_maximal_access to void Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 108/154] ksmbd: use kvzalloc instead of kvmalloc Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 109/154] ksmbd: Replace the ternary conditional operator with min() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 110/154] ksmbd: fix out of bounds read in smb2_sess_setup Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 111/154] ksmbd: add missing compound request handing in some commands Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 112/154] ksmbd: Use struct_size() helper in ksmbd_negotiate_smb_dialect() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 113/154] ksmbd: Replace one-element array with flexible-array member Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 114/154] ksmbd: Fix unsigned expression compared with zero Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 115/154] ksmbd: check if a mount point is crossed during path lookup Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 116/154] ksmbd: validate session id and tree id in compound request Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 117/154] ksmbd: fix out of bounds in init_smb2_rsp_hdr() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 118/154] ksmbd: switch to use kmemdup_nul() helper Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 119/154] ksmbd: add support for read compound Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 120/154] ksmbd: fix wrong interim response on compound Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 121/154] ksmbd: fix `force create mode' and `force directory mode' Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 122/154] ksmbd: reduce descriptor size if remaining bytes is less than request size Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 123/154] ksmbd: Fix one kernel-doc comment Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 124/154] ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 125/154] ksmbd: add missing calling smb2_set_err_rsp() on error Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 126/154] ksmbd: remove experimental warning Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 127/154] ksmbd: remove unneeded mark_inode_dirty in set_info_sec() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 128/154] ksmbd: fix passing freed memory 'aux_payload_buf' Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 129/154] ksmbd: return invalid parameter error response if smb2 request is invalid Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 130/154] ksmbd: check iov vector index in ksmbd_conn_write() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 131/154] ksmbd: fix race condition between session lookup and expire Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 132/154] ksmbd: fix race condition with fp Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 133/154] ksmbd: fix race condition from parallel smb2 logoff requests Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 134/154] ksmbd: fix race condition from parallel smb2 lock requests Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 135/154] ksmbd: fix race condition between tree conn lookup and disconnect Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 136/154] ksmbd: fix wrong error response status by using set_smb2_rsp_status() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 137/154] ksmbd: fix Null pointer dereferences in ksmbd_update_fstate() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 138/154] ksmbd: fix potential double free on smb2_read_pipe() error path Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 139/154] ksmbd: Remove unused field in ksmbd_user struct Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 140/154] ksmbd: reorganize ksmbd_iov_pin_rsp() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 141/154] ksmbd: fix kernel-doc comment of ksmbd_vfs_setxattr() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 142/154] ksmbd: fix recursive locking in vfs helpers Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 143/154] ksmbd: fix missing RDMA-capable flag for IPoIB device in ksmbd_rdma_capable_netdev() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 144/154] ksmbd: add support for surrogate pair conversion Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 145/154] ksmbd: no need to wait for binded connection termination at logoff Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 146/154] ksmbd: fix kernel-doc comment of ksmbd_vfs_kern_path_locked() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 147/154] ksmbd: handle malformed smb1 message Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 148/154] ksmbd: prevent memory leak on error return Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 149/154] ksmbd: fix possible deadlock in smb2_open Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 150/154] ksmbd: separately allocate ci per dentry Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 151/154] ksmbd: move oplock handling after unlock parent dir Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 152/154] ksmbd: release interim response after sending status pending response Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 153/154] ksmbd: move setting SMB2_FLAGS_ASYNC_COMMAND and AsyncId Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 154/154] ksmbd: don't update ->op_state as OPLOCK_STATE_NONE on error Namjae Jeon
2023-12-20 14:41 ` [PATCH 5.15.y 000/154] ksmbd backport patches for 5.15.y Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231218153454.8090-89-linkinjeon@kernel.org \
--to=linkinjeon@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=smfrench@gmail.com \
--cc=stable@vger.kernel.org \
--cc=stfrench@microsoft.com \
--cc=zdi-disclosures@trendmicro.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox