FAILED: patch "[PATCH] smb: client: require stable pages for SMB compression" failed to apply to 6.18-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.18-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-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x 8667061cf99394526dd9c0ea2662e6bbc7ae7848
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026110441-ethically-speech-8e44@gregkh' --subject-prefix 'PATCH 6.18.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8667061cf99394526dd9c0ea2662e6bbc7ae7848 Mon Sep 17 00:00:00 2001
From: Paulo Alcantara <[email protected]>
Date: Tue, 13 Oct 2026 10:33:41 -0300
Subject: [PATCH] smb: client: require stable pages for SMB compression
Like signing, SMB compression builds the write payload from the pagecache
folios: should_compress() lets a write request through and smb_compress() compresses those folios on the way to the socket. If a buffered write mutates a folio while a write subrequest is still in flight, the compressed bytes no longer correspond to a consistent view of the data, and the server silently stores corrupted contents - worse than the signed case, which at least fails loudly with STATUS_ACCESS_DENIED.
Mark the mapping for stable writes when a write may be compressed, i.e. the same condition should_compress() tests (compression negotiated and the share allows compressed data), so netfs_perform_write() waits for writeback to complete before modifying an in-flight folio.
fs/smb/client/inode.c +3 -1
@@ -88,7 +88,9 @@ static void cifs_set_ops(struct inode *inode)else inode->i_data.a_ops = &cifs_addr_ops;mapping_set_large_folios (inode->i_mapping); -if (tcon->ses->server->sign) +if (tcon->ses->server->sign || + (tcon->ses->server->compression.enabled && + (tcon->share_flags &SMB2_SHAREFLAG_COMPRESS_DATA )))mapping_set_stable_writes (inode->i_mapping);break ;case S_IFDIR :
Sasha Levin
maintainerPATCH 1/1 smb: client: require stable pages for SMB compression
From: Paulo Alcantara <[email protected]>
[ Upstream commit 8667061cf99394526dd9c0ea2662e6bbc7ae7848 ]
Like signing, SMB compression builds the write payload from the pagecache
folios: should_compress() lets a write request through and smb_compress() compresses those folios on the way to the socket. If a buffered write mutates a folio while a write subrequest is still in flight, the compressed bytes no longer correspond to a consistent view of the data, and the server silently stores corrupted contents - worse than the signed case, which at least fails loudly with STATUS_ACCESS_DENIED.
Mark the mapping for stable writes when a write may be compressed, i.e. the same condition should_compress() tests (compression negotiated and the share allows compressed data), so netfs_perform_write() waits for writeback to complete before modifying an in-flight folio.
--- fs/smb/client/inode.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/smb/client/inode.c +3 -1
@@ -87,7 +87,9 @@ static void cifs_set_ops(struct inode *inode)else inode->i_data.a_ops = &cifs_addr_ops;mapping_set_large_folios (inode->i_mapping); -if (cifs_sb_master_tcon (cifs_sb)->ses->server->sign) +if (cifs_sb_master_tcon (cifs_sb)->ses->server->sign || + (cifs_sb_master_tcon (cifs_sb)->ses->server->compression.enabled && + (cifs_sb_master_tcon (cifs_sb)->share_flags &SMB2_SHAREFLAG_COMPRESS_DATA )))mapping_set_stable_writes (inode->i_mapping);break ;case S_IFDIR :
Signature · 1 line
2.53.0