summaryrefslogtreecommitdiff
path: root/scripts/basic/split-include.c
diff options
context:
space:
mode:
authorWang Zhaolong <wangzhaolong3@outlook.com>2026-10-27 22:43:23 +0800
committerNamjae Jeon <linkinjeon@kernel.org>2026-10-28 07:44:57 +0900
commita43e0718a4abed7f859a67bd7b154acf213589fa (patch)
tree99cf0ef65b406f1178d60e01a2017d94134af550 /scripts/basic/split-include.c
parent248b5819591c577727930e4e255a455235fab50a (diff)
downloadlinux-a43e0718a4abed7f859a67bd7b154acf213589fa.tar.gz
linux-a43e0718a4abed7f859a67bd7b154acf213589fa.zip
ksmbd: avoid races between named-pipe operations
RPC IPC replies are matched by pipe handle. READ, WRITE, TRANSCEIVE and CLOSE on the same pipe all use that handle. The session RPC lock protects the handle table, but is dropped before a pipe I/O request waits for its reply. Another operation, including CLOSE, can issue a request with the same handle while that wait is still in progress. These requests have no separate IPC correlation ID, so overlapping waits can interfere with reply delivery. CLOSE can also release the handle before an earlier operation finishes. Protecting table access alone does not provide the serialization or lifetime needed by an active pipe. Serialize operations per pipe and keep its state and handle alive until all users finish. Avoid holding the session table lock across IPC waits, so a blocked pipe does not hold up unrelated pipes. This also provides the lifetime needed to retain unread replies in the following patch. Recheck cancellation, connection release and session teardown after taking the pipe lock, and mark a removed pipe closed before waiting for its active operation. Close all session RPC pipes on logoff after the other requests have drained; keeping the TCP connection open must not retain old handles. Use standard SMB2 error replies for failed pipe operations while preserving the selected status. Link: https://bugzilla.kernel.org/show_bug.cgi?id=222197 Signed-off-by: Wang Zhaolong <wangzhaolong3@outlook.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Diffstat (limited to 'scripts/basic/split-include.c')
0 files changed, 0 insertions, 0 deletions