FAILED: patch "[PATCH] ksmbd: zero pipe read compound padding" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 73f860489e3be2245598d1819226304fc5b87291
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026091125-profusely-shortcut-0dad@gregkh' --subject-prefix 'PATCH 5.15.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 73f860489e3be2245598d1819226304fc5b87291 Mon Sep 17 00:00:00 2001
From: Namjae Jeon <[email protected]>
Date: Tue, 25 Aug 2026 09:31:35 +0900
Subject: [PATCH] ksmbd: zero pipe read compound padding
Compound response handling extends the last response iov to an eight-byte boundary.
smb2_read_pipe() allocates only the payload size, so the alignment padding can expose up to seven bytes of uninitialized kernel heap memory.
Allocate the aligned size and clear the unused tail before pinning the response buffer.
fs/smb/server/smb2pdu.c +6 -1
@@ -8657,13 +8657,18 @@ static noinline int smb2_read_pipe(struct ksmbd_work *work) } aux_payload_buf = -kvmalloc (rpc_resp->payload_sz,KSMBD_DEFAULT_GFP ); +kvmalloc (ALIGN (rpc_resp->payload_sz,8 ), +KSMBD_DEFAULT_GFP );if (!aux_payload_buf) { err = -ENOMEM ; goto out; }memcpy (aux_payload_buf, rpc_resp->payload, rpc_resp->payload_sz); +if (rpc_resp->payload_sz &7 ) +memset (aux_payload_buf + rpc_resp->payload_sz,0 , +ALIGN (rpc_resp->payload_sz,8 ) - + rpc_resp->payload_sz); nbytes = rpc_resp->payload_sz; err = ksmbd_iov_pin_rsp_read(work, (void *)rsp,
Sasha Levin
maintainerPATCH 1/2 ksmbd: use __GFP_RETRY_MAYFAIL
From: Namjae Jeon <[email protected]>
[ Upstream commit 0066f623bce8f98b69b752ee03d46a5047c281b8 ]
Prefer to report ENOMEM rather than incur the oom for allocations in ksmbd. __GFP_NORETRY could not achieve that, It would fail the allocations just too easily. __GFP_RETRY_MAYFAIL will keep retrying the allocation until there is no more progress and fail the allocation instead go OOM and let the caller to deal with it.
[Stable dependency adaptation for 73f860489e3be2245598d1819226304fc5b87291] Retain only the KSMBD_DEFAULT_GFP definition and its use for the existing smb2_read_pipe() payload allocation. These two hunks provide the allocation policy and exact patch context needed by "ksmbd: zero pipe read compound padding" on Linux 6.6.
Drop the other allocation conversions, which are unrelated to the target. This preserves the stable tree's IDA helper, RPC locking, preallocated lease tables, ACL scratch sizing, and network-interface lifecycle changes instead of importing obsolete upstream context. No functions are added. The target's aligned allocation and padding initialization remain in the target commit.
[ sashal: Reduced backport -- upstream 0066f623bce8f touches 24 file(s), this
backport carries 2. Not backported here:
fs/smb/server/asn1.c
fs/smb/server/auth.c
fs/smb/server/connection.c
fs/smb/server/crypto_ctx.c
fs/smb/server/ksmbd_work.c
fs/smb/server/mgmt/ksmbd_ida.c fs/smb/server/mgmt/share_config.c fs/smb/server/mgmt/tree_connect.c
... and 14 more
This note is generated from the file lists only; see the resolution record for the reasoning. ]
Stable-dep-of: 73f860489e3b ("ksmbd: zero pipe read compound padding")
--- fs/ksmbd/glob.h | 2 ++ fs/ksmbd/smb2pdu.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-)
fs/ksmbd/glob.h +2 -0
@@ -46,4 +46,6 @@ extern int ksmbd_debug_types;#define UNICODE_LEN (x) ((x) * 2) +#define KSMBD_DEFAULT_GFP (GFP_KERNEL | __GFP_RETRY_MAYFAIL) +#endif /* __KSMBD_GLOB_H */
fs/ksmbd/smb2pdu.c +1 -1
@@ -6234,7 +6234,7 @@ static noinline int smb2_read_pipe(struct ksmbd_work *work) } aux_payload_buf = -kvmalloc (rpc_resp->payload_sz,GFP_KERNEL ); +kvmalloc (rpc_resp->payload_sz,KSMBD_DEFAULT_GFP );if (!aux_payload_buf) { err = -ENOMEM ; goto out;
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 ksmbd: zero pipe read compound padding
From: Namjae Jeon <[email protected]>
[ Upstream commit 73f860489e3be2245598d1819226304fc5b87291 ]
Compound response handling extends the last response iov to an eight-byte boundary.
smb2_read_pipe() allocates only the payload size, so the alignment padding can expose up to seven bytes of uninitialized kernel heap memory.
Allocate the aligned size and clear the unused tail before pinning the response buffer.
--- fs/ksmbd/smb2pdu.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
fs/ksmbd/smb2pdu.c +6 -1
@@ -6234,13 +6234,18 @@ static noinline int smb2_read_pipe(struct ksmbd_work *work) } aux_payload_buf = -kvmalloc (rpc_resp->payload_sz,KSMBD_DEFAULT_GFP ); +kvmalloc (ALIGN (rpc_resp->payload_sz,8 ), +KSMBD_DEFAULT_GFP );if (!aux_payload_buf) { err = -ENOMEM ; goto out; }memcpy (aux_payload_buf, rpc_resp->payload, rpc_resp->payload_sz); +if (rpc_resp->payload_sz &7 ) +memset (aux_payload_buf + rpc_resp->payload_sz,0 , +ALIGN (rpc_resp->payload_sz,8 ) - + rpc_resp->payload_sz); nbytes = rpc_resp->payload_sz; err = ksmbd_iov_pin_rsp_read(work, (void *)rsp,
Signature · 1 line
2.53.0