]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ksmbd: fix durable reconnect context parsing
authorNamjae Jeon <linkinjeon@kernel.org>
Sun, 21 Jun 2026 10:34:37 +0000 (19:34 +0900)
committerSteve French <stfrench@microsoft.com>
Tue, 23 Jun 2026 01:15:05 +0000 (20:15 -0500)
commit73cd6295d01d8d49abaa03472878ef133e43d26a
tree6e6ffca033a6fb5f190fec632d21f8018fce32ff
parent26fa88dc877ccd2736e9125d37c22e058a4c7b86
ksmbd: fix durable reconnect context parsing

SMB2 create context DataLength describes only the create context data
payload. It does not include the create context header, name field, or
any local padding that exists in ksmbd's helper structures.

ksmbd validated durable reconnect contexts by comparing
DataOffset + DataLength against sizeof the whole helper structure. This
rejects a valid durable v2 reconnect context because the wire DH2C data
is 36 bytes while struct create_durable_handle_reconnect_v2 contains an
extra four byte pad.

Validate the durable context payload length against the corresponding
payload member instead. Also keep the reconnect context authoritative
when a later durable request context is present, matching the existing
durable v1 reconnect behavior.

This fixes smbtorture smb2.durable-v2-open.durable-v2-setinfo, where
the durable v2 reconnect after SET_INFO was rejected with
STATUS_INVALID_PARAMETER.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/smb2pdu.c