Skip to contentSkip to conversation

FAILED: patch "[PATCH] smb: client: split cifsFileInfo bitfields to avoid" failed to apply to 6.1-stable tree

PATCH Applied [email protected] 3 participants 3 messages Oct 5 – Oct 6

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 6.1-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.1.y
git checkout FETCH_HEAD
git cherry-pick -x 19465a9aeb664f1d710d0d22c07c31bfb7c85446
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026100537-childlike-directory-22a4@gregkh' --subject-prefix 'PATCH 6.1.y' 'HEAD^..'

Possible dependencies:

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 19465a9aeb664f1d710d0d22c07c31bfb7c85446 Mon Sep 17 00:00:00 2001
From: Frank Sorenson <[email protected]>
Date: Wed, 30 Sep 2026 15:47:15 -0500
Subject: [PATCH] smb: client: split cifsFileInfo bitfields to avoid
shared-byte RMW races

The invalidHandle, swapfile, oplock_break_cancelled, offload, and status_file_deleted fields are stored in the same bitfield byte in struct cifsFileInfo, but are updated in different code paths that may run simultaneously, and are protected by different locks. Since bitfield assignments generate byte-level read-modify-write operations, a modification to one flag can overwrite a concurrent modification to another flag.

To avoid these races, convert these flags from a bitfield to separate bool fields.

Fixes 3bc303c254335 ("cifs: convert oplock breaks to use slow_work facility (try #4)")
Fixes 4e8aea30f7751 ("smb3: enable swap on SMB3 mounts")
Fixes ffceb7640cbfe ("smb: client: do not defer close open handles to deleted files")
Fixes 173217bd73365 ("smb3: retrying on failed server close")
fs/smb/client/cifsglob.h +5 -5
index 79e4e84f8985..5c5b76a9e9fe 100644
@@ -1450,11 +1450,11 @@ struct cifsFileInfo {
 	struct dentry *dentry;
 	struct tcon_link *tlink;
 	unsigned int f_flags;
-	bool invalidHandle:1;	/* file closed via session abend */
-	bool swapfile:1;
-	bool oplock_break_cancelled:1;
-	bool status_file_deleted:1; /* file has been deleted */
-	bool offload:1; /* offload final part of _put to a wq */
+	bool invalidHandle;	/* file closed via session abend */
+	bool swapfile;
+	bool oplock_break_cancelled;
+	bool status_file_deleted; /* file has been deleted */
+	bool offload; /* offload final part of _put to a wq */
 	__u16 oplock_epoch; /* epoch from the lease break */
 	__u32 oplock_level; /* oplock/lease level from the lease break */
 	int count;
#1 lore raw

PATCH 1/1 smb: client: split cifsFileInfo bitfields to avoid shared-byte RMW races

[ Upstream commit 19465a9aeb664f1d710d0d22c07c31bfb7c85446 ]

The invalidHandle, swapfile, oplock_break_cancelled, offload, and status_file_deleted fields are stored in the same bitfield byte in struct cifsFileInfo, but are updated in different code paths that may run simultaneously, and are protected by different locks. Since bitfield assignments generate byte-level read-modify-write operations, a modification to one flag can overwrite a concurrent modification to another flag.

To avoid these races, convert these flags from a bitfield to separate bool fields.

Fixes 3bc303c254335 ("cifs: convert oplock breaks to use slow_work facility (try #4)")
Fixes 4e8aea30f7751 ("smb3: enable swap on SMB3 mounts")
Fixes ffceb7640cbfe ("smb: client: do not defer close open handles to deleted files")
Fixes 173217bd73365 ("smb3: retrying on failed server close")
(cherry picked from commit 19465a9aeb664f1d710d0d22c07c31bfb7c85446)
[ status_file_deleted not present in kernel 6.1 ]
---
 fs/smb/client/cifsglob.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
fs/smb/client/cifsglob.h +4 -4
index a5e9f79c10f9..c37f10eedddf 100644
@@ -1337,10 +1337,10 @@ struct cifsFileInfo {
 	struct dentry *dentry;
 	struct tcon_link *tlink;
 	unsigned int f_flags;
-	bool invalidHandle:1;	/* file closed via session abend */
-	bool swapfile:1;
-	bool oplock_break_cancelled:1;
-	bool offload:1; /* offload final part of _put to a wq */
+	bool invalidHandle;	/* file closed via session abend */
+	bool swapfile;
+	bool oplock_break_cancelled;
+	bool offload; /* offload final part of _put to a wq */
 	__u16 oplock_epoch; /* epoch from the lease break */
 	__u32 oplock_level; /* oplock/lease level from the lease break */
 	int count;
Signature · 1 line
2.55.0
maintainer Applied
#2 lore raw

Re: [PATCH 6.1.y] smb: client: split cifsFileInfo bitfields to avoid shared-byte RMW races

Quoted 1 line

[ Upstream commit 19465a9aeb664f1d710d0d22c07c31bfb7c85446 ]

Queued for 6.1, thanks.

Signature · 2 lines
Thanks,
Sasha