Linux CIFS filesystem development
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Namjae Jeon <linkinjeon@kernel.org>,
	Sasha Levin <sashal@kernel.org>,
	linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH AUTOSEL 6.18-5.15] ksmbd: fix SMB2 byte-range lock end offset
Date: Mon, 19 Oct 2026 09:53:29 -0400	[thread overview]
Message-ID: <20261019135441.1420968-518-sashal@kernel.org> (raw)
In-Reply-To: <20261019135441.1420968-1-sashal@kernel.org>

From: Namjae Jeon <linkinjeon@kernel.org>

[ Upstream commit 54d90311f9b4eb23f3b0b62650b0cfddb11a12ef ]

SMB2 describes a byte-range lock using an offset and a length, while
Linux file_lock uses an inclusive end offset. smb2_lock() currently sets
fl_end to start + length and consequently locks one extra byte for every
nonzero-length request.

Translate nonzero lengths to start + length - 1 and reject ranges that
cannot be represented by loff_t instead of silently truncating them at
OFFSET_MAX. Track zero-length locks from the request length so one-byte
ranges are not mistaken for zero-length locks after endpoint conversion.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

The local tree is **6.12.111** (`pending-6.12`). The candidate is
mainline `54d90311f9b4e` (`ksmbd: fix SMB2 byte-range lock end offset`).
It is not in this checkout, and the buggy `smb2_lock()` conversion is.

===============================================================
PHASE 1: COMMIT MESSAGE FORENSICS
===============================================================

Step 1.1: PARSE THE SUBJECT LINE
Record: [ksmbd] [fix] [SMB2 byte-range lock end offset is off by one vs
Linux file_lock inclusive ends]

Step 1.2: PARSE ALL COMMIT MESSAGE TAGS
Record:
- Signed-off-by: Namjae Jeon \<linkinjeon@kernel.org\> (ksmbd
  maintainer)
- No Fixes:
- No Reported-by / Tested-by / Reviewed-by / Acked-by
- No Link:
- No Cc: stable
Absence of Fixes/Cc:stable is expected for this review pipeline and is
not a negative signal.

Step 1.3: ANALYZE THE COMMIT BODY TEXT
Record:
- Bug: SMB2 describes a lock as (offset, length). Linux `file_lock` uses
  an inclusive `fl_end`. `smb2_lock()` sets `fl_end = start + length`,
  so every nonzero-length lock covers one extra byte.
- Symptom: adjacent-byte I/O or locks can hit a false conflict;
  unlock/lock ranges disagree with Windows/Samba; huge ranges are
  silently truncated at `OFFSET_MAX` instead of being rejected.
- Root cause: missing `length - 1` conversion, plus `start == end` used
  as a zero-length detector (that becomes wrong once 1-byte locks
  correctly get `start == end`).
- No kernel version called out in the message. Pull text for 7.3-rc1
  lists this among protocol-compatibility lock fixes.

Step 1.4: DETECT HIDDEN BUG FIXES
Record: Not disguised. It is an explicit off-by-one / range-translation
bug fix, plus a necessary zero-length tracking correction so the
conversion does not reclassify 1-byte locks as empty.

===============================================================
PHASE 2: DIFF ANALYSIS - LINE BY LINE
===============================================================

Step 2.1: INVENTORY THE CHANGES
Record:
- File: `fs/smb/server/smb2pdu.c` only (+14 / -30)
- Functions: `smb2_lock_init()`, `smb2_lock()`
- Scope: single-file surgical fix

Step 2.2: UNDERSTAND THE CODE FLOW CHANGE
Record:
1. `smb2_lock_init()`: stop inferring `zero_len` from `start == end`;
   take it from the SMB2 request length (`!lock_length`).
2. Range setup in `smb2_lock()`:
   - Before: clamp start/length to `OFFSET_MAX`, set `fl_end = start +
     length`, then reject wrap with `fl_end < fl_start`.
   - After: reject if start or inclusive end cannot be represented in
     `loff_t`; set `fl_end = start + length - 1` (or `start` if length
     is 0).
3. Zero-byte conflict tests: `< end` → `<= end` so the last locked byte
   is included.
4. Non-zero overlap test: ad-hoc half-open checks → standard inclusive
   overlap (`start1 <= end2 && start2 <= end1`), matching VFS
   `locks_overlap()`.

Step 2.3: IDENTIFY THE BUG MECHANISM
Record: [Logic / correctness, plus bounds]
- Off-by-one: POSIX `fl_end` is inclusive (`fs/locks.c` uses `fl_end =
  fl_start + (l_len - 1)`).
- Classification: after that conversion, a 1-byte lock has `start ==
  end`. Using that as `zero_len` would skip `vfs_lock_file()` (`if
  (smb_lock->zero_len) goto skip`).
- Overflow: old code silently truncated at `OFFSET_MAX`; new code
  returns `STATUS_INVALID_LOCK_RANGE`.
- Conflict checks: old comparisons assumed exclusive-ish ends and missed
  some inclusive overlaps.

Step 2.4: ASSESS THE FIX QUALITY
Record: Obviously correct. Same conversion as VFS
`flock_to_posix_lock()` and the CIFS client (`fl_end = start + (length ?
length - 1 : 0)`). Overlap test matches `locks_overlap()`. Minimal, no
API change. Regression risk is low: adjacent-byte I/O that was wrongly
denied will now succeed; unrepresentable ranges that were clamped will
now fail, which matches the spec.

===============================================================
PHASE 3: GIT HISTORY INVESTIGATION
===============================================================

Step 3.1: BLAME THE CHANGED LINES
Record:
- Core `fl_end = fl_start + lock_length` comes from `e2f34481b24db2`
  (“cifsd: add server-side procedures for SMB3”, 2021-05-10), first in
  v5.15-rc1.
- `OFFSET_MAX` clamping: `50bf80a553ccb5` (“cifsd: fix xfstests
  generic/504 test failure”).
- `zero_len` / conflict checks: `d63528eb0d43c4` (Hyunchul Lee,
  2021-07-10).
The bug has been in ksmbd since the server was merged.

Step 3.2: FOLLOW THE FIXES: TAG
Record: No Fixes: tag. The introducing commit is in this tree (`git
merge-base --is-ancestor e2f34481b24db2 HEAD` succeeded).

Step 3.3: CHECK FILE HISTORY FOR RELATED CHANGES
Record:
- Already in this tree: `f751d6e39d4c9` “ksmbd: Do not skip lock checks
  for single-byte ranges” — `check_lock_range()` uses inclusive `start +
  length - 1`. That makes the remaining `smb2_lock()` off-by-one more
  inconsistent, not less.
- Later on fs-next, not required here: `5ce5227cd60b7` “recognize
  replayed SMB2 lock sequences” (replay feature, not a prerequisite).
Standalone.

Step 3.4: CHECK THE AUTHOR'S OTHER COMMITS
Record: Namjae Jeon is the ksmbd maintainer (MAINTAINERS + Git). This is
not a drive-by change.

Step 3.5: CHECK FOR DEPENDENT/PREREQUISITE COMMITS
Record: No new helpers. `smb2_lock_init()` has a single caller. `git
apply --check` of `54d90311f9b4e` succeeds on this tree (hunk offsets
only). Standalone.

===============================================================
PHASE 4: MAILING LIST AND EXTERNAL RESEARCH
===============================================================

Step 4.1: FIND THE ORIGINAL PATCH DISCUSSION
Record:
- `b4 dig -c 54d90311f9b4e` (with and without `-C`/`-a`):
  lore.kernel.org returned errors; no thread URL.
- WebFetch of lore.kernel.org: HTTP 403.
- LKML `[GIT PULL] ksmbd server update for 7.3-rc1` lists this commit in
  Namjae’s 7.3-rc1 pull, among lock/protocol-compatibility fixes.
UNVERIFIED: individual review comments, v2/v3 revisions, reviewer
Cc:stable.

Step 4.2: CHECK WHO REVIEWED THE PATCH
Record: Only the maintainer SOB is on the commit. `b4 dig -w` failed.
Subsystem maintainer authored it.

Step 4.3: SEARCH FOR THE BUG REPORT
Record: No Reported-by on this commit. Older ksmbd-tools issue #68 shows
real users hitting `smb2_lock` “end offset(ffffffffffffffff) is smaller
than the start offset” — the overflow path this patch now rejects
instead of wrapping. That report is historical (cifsd era), not a direct
report of this patch.

Step 4.4: CHECK FOR RELATED PATCHES AND SERIES
Record: Adjacent 7.3 lock patches are replay/UAF/compound features. This
conversion fix does not depend on them. Related inclusive-range I/O fix
is already in this tree.

Step 4.5: CHECK STABLE MAILING LIST HISTORY
Record: lore.kernel.org/stable search could not be fetched (403). No
verified stable NAK. This tree does not already contain “lock end
offset”.

===============================================================
PHASE 5: CODE SEMANTIC ANALYSIS
===============================================================

Step 5.1: IDENTIFY KEY FUNCTIONS IN THE DIFF
Record: `smb2_lock_init()`, `smb2_lock()`

Step 5.2: TRACE CALLERS
Record:
- `smb2_lock()` is the SMB2_LOCK handler
  (`smb2_0_server_cmds[SMB2_LOCK_HE]` in `fs/smb/server/smb2ops.c`).
- `smb2_lock_init()` is only called from `smb2_lock()`.
Reachable from any SMB2/SMB3 client that issues LOCK.

Step 5.3: TRACE CALLEES
Record: `vfs_lock_file()`, `locks_free_lock()`, `smb_flock_init()`,
ksmbd connection lock-list walk. Zero-length locks still skip
`vfs_lock_file()` by design (POSIX `l_len == 0` means lock-to-EOF, which
is not SMB zero-byte lock semantics).

Step 5.4: FOLLOW THE CALL CHAIN
Record: Network SMB2 LOCK → `smb2_lock()` → VFS POSIX locks / ksmbd lock
list → later `check_lock_range()` on read/write/truncate. Userspace-
reachable over the network. Not a rare config path if
`CONFIG_SMB_SERVER` is enabled.

Step 5.5: SEARCH FOR SIMILAR PATTERNS
Record: Same inclusive conversion already exists in `fs/locks.c` and
`fs/smb/client/cifssmb.c`. I/O-side `check_lock_range()` in this tree
already uses `pos + count - 1`. Only the LOCK request path was still off
by one.

===============================================================
PHASE 6: CROSS-REFERENCING AGAINST THE LOCAL TREE
===============================================================

Step 6.1: DOES THE BUGGY CODE EXIST IN THIS TREE?
Record: Yes. `fs/smb/server/smb2pdu.c` around 7584–7602 still does
`fl_end = fl_start + lock_length` and `if (lock->start == lock->end)
lock->zero_len = 1`. Introduced with cifsd in v5.15, present in
6.12.111.
`git merge-base --is-ancestor 54d90311f9b4e HEAD` failed — the fix is
not here.

Step 6.2: CHECK FOR BACKPORT COMPLICATIONS
Record: Clean apply (`git apply --check` succeeded; hunks at 7488+).
Nearby mainline-only context (`lock_count > 64`, `kzalloc_obj`) is not
part of this commit’s hunks. Expected difficulty: clean apply.

Step 6.3: CHECK IF RELATED FIXES ARE ALREADY HERE
Record: Inclusive I/O lock checks (`f751d6e39d4c9`) are here. No prior
“lock end offset” fix. Applying this makes LOCK and I/O use the same
inclusive model.

===============================================================
PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT
===============================================================

Step 7.1: IDENTIFY THE SUBSYSTEM AND ITS CRITICALITY
Record: [fs/smb/server (ksmbd)] [IMPORTANT for ksmbd users / PERIPHERAL
vs core VFS]. Byte-range locks are a core SMB feature for Windows apps,
databases, and exclusive file access. `CONFIG_SMB_SERVER` defaults to n.

Step 7.2: ASSESS SUBSYSTEM ACTIVITY
Record: Actively maintained; this 6.12 tree already carries many ksmbd
stable backports. The author is the maintainer.

===============================================================
PHASE 8: IMPACT AND RISK ASSESSMENT
===============================================================

Step 8.1: DETERMINE WHO IS AFFECTED
Record: ksmbd/SMB3 server users (`CONFIG_SMB_SERVER`). Every SMB2 LOCK
with nonzero length.

Step 8.2: DETERMINE THE TRIGGER CONDITIONS
Record: Common for any client using byte-range locks (Office, databases,
installers, some build tools). Network-facing; an unprivileged SMB user
who can open a file can issue LOCK. Not a rare race.

Step 8.3: DETERMINE THE FAILURE MODE SEVERITY
Record:
- Over-lock of one extra byte → false `STATUS_FILE_LOCK_CONFLICT` /
  denied I/O on the adjacent byte; apps can fail or block. HIGH for
  ksmbd shares that use locking.
- Silent clamp of huge ranges → requested bytes past `OFFSET_MAX` stay
  unlocked. Integrity hole, rare offsets. MEDIUM.
- If this conversion were done without passing original `zero_len`,
  1-byte locks would skip VFS — that would be under-lock / data-race.
  The patch prevents that. HIGH if mishandled; the patch handles it.
Severity overall: HIGH for locking correctness, not a kernel oops.

Step 8.4: CALCULATE RISK-BENEFIT RATIO
Record:
- Benefit: correct exclusive ranges vs Windows/Samba/VFS; fewer false
  conflicts; no silent truncation.
- Risk: very low (14/30 lines, one file, applies cleanly, matches
  established conversion).
- Ratio: strongly favors backporting.

===============================================================
PHASE 9: FINAL SYNTHESIS
===============================================================

Step 9.1: COMPILE THE EVIDENCE
FOR:
- Real, long-standing off-by-one in mandatory SMB byte-range locks
  (since v5.15).
- User-visible false conflicts on the extra byte; protocol mismatch with
  Windows/Samba.
- Silent `OFFSET_MAX` truncation replaced by a spec-style invalid-range
  error.
- Zero-length vs 1-byte classification fixed so inclusive ends do not
  skip `vfs_lock_file()`.
- Overlap tests aligned with VFS `locks_overlap()`.
- Small, maintainer-authored, applies cleanly here.
- This tree already uses inclusive ends on the I/O path, so leaving LOCK
  wrong is inconsistent.

AGAINST:
- No crash/UAF/CVE; no Reported-by on this commit.
- ksmbd is opt-in, not core VFS.
- Could not retrieve the original review thread (lore errors).

UNRESOLVED:
- Original mailing-list review comments / explicit stable nomination.

Step 9.2: APPLY THE STABLE RULES CHECKLIST
1. Obviously correct and tested? PASS — matches VFS and CIFS client
   math; maintainer SOB; in the 7.3-rc1 ksmbd pull.
2. Fixes a real bug that affects users? PASS — wrong lock coverage on
   every nonzero SMB2 LOCK.
3. Important issue? PASS — mandatory lock correctness (false conflicts;
   possible under-lock on truncated huge ranges). Not a panic, but it is
   data-access / sharing integrity.
4. Small and contained? PASS — one file, +14/-30.
5. No new features or APIs? PASS.
6. Can apply to the local tree? PASS — `git apply --check` clean; buggy
   code present.

Step 9.3: CHECK FOR EXCEPTION CATEGORIES
Record: Not a device-ID/quirk/DT/build/docs exception. Ordinary
correctness fix.

Step 9.4: MAKE YOUR DECISION
This should be backported to this 6.12 tree. The extra locked byte is a
real protocol bug on a path every locking SMB client hits. The patch is
small, correct, has no prerequisites that this tree lacks, and applies
cleanly.

Verification:
- [Phase 1] Parsed subject/body/tags on `54d90311f9b4e`; maintainer SOB
  only; no Fixes/Reported-by/Cc:stable.
- [Phase 2] Diff: `smb2_lock_init` + `smb2_lock` in
  `fs/smb/server/smb2pdu.c`, +14/-30; inclusive `fl_end`, request-based
  `zero_len`, overlap `<=`.
- [Phase 2] Confirmed VFS conversion at `fs/locks.c:515-518` (`fl_end =
  fl_start + (l_len - 1)`) and `locks_overlap()` at 621-624.
- [Phase 2] Confirmed CIFS client uses the same formula at
  `fs/smb/client/cifssmb.c:2122-2124`.
- [Phase 2] Confirmed zero-len locks skip `vfs_lock_file()` at
  `smb2pdu.c:7742-7748` in this tree.
- [Phase 3] `git blame`: buggy `fl_end = start + length` from
  `e2f34481b24db2` (v5.15-rc1); clamp from `50bf80a553ccb5`.
- [Phase 3] `git merge-base --is-ancestor e2f34481b24db2 HEAD`
  succeeded; `54d90311f9b4e` is not an ancestor of HEAD.
- [Phase 3] Follow-up `5ce5227cd60b7` is lock-replay, not a
  prerequisite.
- [Phase 4] `b4 dig -c 54d90311f9b4e` failed (lore errors). LKML 7.3-rc1
  ksmbd pull lists this commit.
- [Phase 4] UNVERIFIED: original lore review thread (403/server error).
- [Phase 5] `smb2_lock` is `SMB2_LOCK_HE` proc; `smb2_lock_init` has one
  caller.
- [Phase 6] `make kernelversion` / Makefile: 6.12.111, branch
  `pending-6.12`, `git describe HEAD` = `p-6.12-3-gc504cf0baa3d8`.
- [Phase 6] Live code at `smb2pdu.c:7602` still uses `fl_start +
  lock_length`.
- [Phase 6] `git show 54d90311f9b4e | git apply --check` succeeded.
- [Phase 6] Related `f751d6e39d4c9` (inclusive I/O checks) is already in
  HEAD.
- [Phase 7] MAINTAINERS: ksmbd maintained by Namjae Jeon;
  `CONFIG_SMB_SERVER` default n.
- [Phase 8] Failure mode: false lock conflicts / incorrect coverage on
  SMB2 LOCK; severity HIGH for ksmbd locking users, not a kernel oops.
- UNVERIFIED: Could not read lore.kernel.org patch review or stable@
  discussion.

The extra-byte lock is a real, old ksmbd protocol bug. The fix is small,
matches VFS, and applies cleanly to 6.12.111.

**YES**

 fs/smb/server/smb2pdu.c | 44 +++++++++++++----------------------------
 1 file changed, 14 insertions(+), 30 deletions(-)

diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 277c03fe2a4e4..ea5a130ef83ce 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -7604,7 +7604,7 @@ static int smb2_set_flock_flags(struct file_lock *flock, int flags)
 }
 
 static struct ksmbd_lock *smb2_lock_init(struct file_lock *flock,
-					 unsigned int cmd, int flags,
+					 unsigned int cmd, int flags, bool zero_len,
 					 struct list_head *lock_list)
 {
 	struct ksmbd_lock *lock;
@@ -7618,8 +7618,7 @@ static struct ksmbd_lock *smb2_lock_init(struct file_lock *flock,
 	lock->start = flock->fl_start;
 	lock->end = flock->fl_end;
 	lock->flags = flags;
-	if (lock->start == lock->end)
-		lock->zero_len = 1;
+	lock->zero_len = zero_len;
 	INIT_LIST_HEAD(&lock->clist);
 	INIT_LIST_HEAD(&lock->flist);
 	INIT_LIST_HEAD(&lock->llist);
@@ -7712,32 +7711,18 @@ int smb2_lock(struct ksmbd_work *work)
 
 		lock_start = le64_to_cpu(lock_ele[i].Offset);
 		lock_length = le64_to_cpu(lock_ele[i].Length);
-		if (lock_start > U64_MAX - lock_length) {
+		if (lock_start > OFFSET_MAX ||
+		    (lock_length &&
+		     lock_length - 1 > OFFSET_MAX - lock_start)) {
 			pr_err("Invalid lock range requested\n");
 			rsp->hdr.Status = STATUS_INVALID_LOCK_RANGE;
 			locks_free_lock(flock);
 			goto out;
 		}
 
-		if (lock_start > OFFSET_MAX)
-			flock->fl_start = OFFSET_MAX;
-		else
-			flock->fl_start = lock_start;
-
-		lock_length = le64_to_cpu(lock_ele[i].Length);
-		if (lock_length > OFFSET_MAX - flock->fl_start)
-			lock_length = OFFSET_MAX - flock->fl_start;
-
-		flock->fl_end = flock->fl_start + lock_length;
-
-		if (flock->fl_end < flock->fl_start) {
-			ksmbd_debug(SMB,
-				    "the end offset(%llx) is smaller than the start offset(%llx)\n",
-				    flock->fl_end, flock->fl_start);
-			rsp->hdr.Status = STATUS_INVALID_LOCK_RANGE;
-			locks_free_lock(flock);
-			goto out;
-		}
+		flock->fl_start = lock_start;
+		flock->fl_end = lock_length ?
+			flock->fl_start + lock_length - 1 : flock->fl_start;
 
 		/* Check conflict locks in one request */
 		list_for_each_entry(cmp_lock, &lock_list, llist) {
@@ -7753,7 +7738,8 @@ int smb2_lock(struct ksmbd_work *work)
 			}
 		}
 
-		smb_lock = smb2_lock_init(flock, cmd, flags, &lock_list);
+		smb_lock = smb2_lock_init(flock, cmd, flags, !lock_length,
+					   &lock_list);
 		if (!smb_lock) {
 			err = -EINVAL;
 			locks_free_lock(flock);
@@ -7827,7 +7813,7 @@ int smb2_lock(struct ksmbd_work *work)
 				/* check zero byte lock range */
 				if (cmp_lock->zero_len && !smb_lock->zero_len &&
 				    cmp_lock->start > smb_lock->start &&
-				    cmp_lock->start < smb_lock->end) {
+				    cmp_lock->start <= smb_lock->end) {
 					spin_unlock(&conn->llist_lock);
 					up_read(&conn_list_lock);
 					pr_err("previous lock conflict with zero byte lock range\n");
@@ -7836,17 +7822,15 @@ int smb2_lock(struct ksmbd_work *work)
 
 				if (smb_lock->zero_len && !cmp_lock->zero_len &&
 				    smb_lock->start > cmp_lock->start &&
-				    smb_lock->start < cmp_lock->end) {
+				    smb_lock->start <= cmp_lock->end) {
 					spin_unlock(&conn->llist_lock);
 					up_read(&conn_list_lock);
 					pr_err("current lock conflict with zero byte lock range\n");
 					goto out;
 				}
 
-				if (((cmp_lock->start <= smb_lock->start &&
-				      cmp_lock->end > smb_lock->start) ||
-				     (cmp_lock->start < smb_lock->end &&
-				      cmp_lock->end >= smb_lock->end)) &&
+				if (cmp_lock->start <= smb_lock->end &&
+				    smb_lock->start <= cmp_lock->end &&
 				    !cmp_lock->zero_len && !smb_lock->zero_len) {
 					spin_unlock(&conn->llist_lock);
 					up_read(&conn_list_lock);
-- 
2.53.0


      parent reply	other threads:[~2026-10-19 14:06 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20261019135441.1420968-1-sashal@kernel.org>
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: skip fallocate for SMB2_CREATE_ALLOCATION_SIZE on a stream handle Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-6.12] ksmbd: fix off-by-one rejecting minimal COPYCHUNK query-limits request Sasha Levin
2026-10-19 13:46 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: handle empty QUERY_ALLOCATED_RANGES output Sasha Levin
2026-10-19 13:46 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: notify parent directory leases on child create Sasha Levin
2026-10-19 13:46 ` [PATCH AUTOSEL 6.18-6.1] ksmbd: handle allocated range queries on dense files Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18-6.6] ksmbd: report actual xattr value length in stream enumeration Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-5.15] smb/server: cancel async requests when closing connection Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: allow FSCTL_SET_SPARSE without input buffer Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: protect private extended attributes Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-6.1] ksmbd: allow I/O on directory named streams Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18-5.15] smb: server: Free session data in user_session.c with kfree_sensitive() Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-6.6] ksmbd: return buffer too small for short security queries Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: honor client signing-required in all modes Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: preserve access denied status for copychunk Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: fix heap out-of-bounds write in krb5_authenticate() Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18-6.6] smb: server: Make sure that passkey is not leaked on the heap in user_config.c Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18-6.1] ksmbd: honor byte-range locks for zero data Sasha Levin
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: reject blocking compound lock requests Sasha Levin
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-6.12] ksmbd: reject SMB3.1.1 binding with mismatched cipher Sasha Levin
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-6.1] ksmbd: fix AsyncId zeroed before use in smb2_lock() cancel response Sasha Levin
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-6.6] ksmbd: fix durable handle v2 default timeout units (60 -> 60000) Sasha Levin
2026-10-19 13:53 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: enable TCP keepalive for accepted connections Sasha Levin
2026-10-19 13:53 ` Sasha Levin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261019135441.1420968-518-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linkinjeon@kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox