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-6.1] ksmbd: honor byte-range locks for zero data
Date: Mon, 19 Oct 2026 09:51:45 -0400	[thread overview]
Message-ID: <20261019135441.1420968-414-sashal@kernel.org> (raw)
In-Reply-To: <20261019135441.1420968-1-sashal@kernel.org>

From: Namjae Jeon <linkinjeon@kernel.org>

[ Upstream commit 8b57448a147d2378088e63cd473e7f2a967d6802 ]

FSCTL_SET_ZERO_DATA changes file allocation state and must respect
byte-range locks over the affected part of the file. Check the requested
range, clipped to EOF, before issuing the fallocate operation.

Return STATUS_FILE_LOCK_CONFLICT when the range conflicts with an
existing lock. Ranges starting past EOF are left untouched by the lock
check so they continue to succeed.

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 buggy
`FSCTL_SET_ZERO_DATA` path is present here, the lock helper already
exists, and the patch applies cleanly. This is a real lock-bypass data-
integrity bug, not a new feature.

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

**Step 1.1: PARSE THE SUBJECT LINE**
Record: `[ksmbd] [honor] honor byte-range locks for FSCTL_SET_ZERO_DATA`

**Step 1.2: PARSE ALL COMMIT MESSAGE TAGS**
Original commit: `8b57448a147d2378088e63cd473e7f2a967d6802` (Namjae
Jeon, 2026-08-17)

Tags present:
- `Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>` (author + ksmbd
  maintainer)
- No `Fixes:`, `Cc: stable`, `Reported-by`, `Tested-by`, `Reviewed-by`,
  `Acked-by`, or `Link:` (absence of Fixes/Cc:stable is expected for
  this review)

Record: Maintainer-authored; no user/syzbot report tags.

**Step 1.3: ANALYZE THE COMMIT BODY TEXT**
Record:
- Bug: `FSCTL_SET_ZERO_DATA` changes allocation (punch-hole / zero-
  range) without checking SMB byte-range locks.
- Symptom: a client can zero or punch a range another handle has locked;
  the locker does not get `STATUS_FILE_LOCK_CONFLICT`.
- Root cause: `ksmbd_vfs_zero_data()` calls `vfs_fallocate()` with no
  `check_lock_range()`.
- Intentional edge: ranges starting past EOF skip the lock check so they
  still succeed.

**Step 1.4: DETECT HIDDEN BUG FIXES**
Record: Not a disguised cleanup. Explicit protocol/correctness fix:
missing lock enforcement on a mutating FSCTL.

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

**Step 2.1: INVENTORY THE CHANGES**
Record:
- `fs/smb/server/vfs.c`: +12 in `ksmbd_vfs_zero_data()`
- `fs/smb/server/smb2pdu.c`: +6/-1 in `smb2_ioctl()`
  `FSCTL_SET_ZERO_DATA`
- Total: 18 insertions, 1 deletion
- Scope: single-subsystem, two-file surgical fix

**Step 2.2: UNDERSTAND THE CODE FLOW CHANGE**
Record:
- **vfs.c before:** break Level II oplocks, then
  `vfs_fallocate(PUNCH_HOLE or ZERO_RANGE | KEEP_SIZE)` with no lock
  check.
- **vfs.c after:** same, but for non-POSIX shares, if `off < i_size`,
  call `check_lock_range(filp, off, min(off+len, size)-1, WRITE)` and
  return `-EAGAIN` on conflict.
- **smb2pdu.c before:** any `ret < 0` goes to ioctl `out`, which maps
  unknown errors to `STATUS_INVALID_PARAMETER`.
- **smb2pdu.c after:** `-EAGAIN` sets `STATUS_FILE_LOCK_CONFLICT`, `ret
  = 0`, then `goto out` so the generic mapper does not overwrite the
  status.

**Step 2.3: IDENTIFY THE BUG MECHANISM**
Record:
- Category: logic / protocol correctness, with data-integrity impact.
- Mechanism: SMB byte-range locks in ksmbd are POSIX locks;
  `vfs_fallocate()` does not consult them (verified in `fs/open.c`:
  permission/lease/overflow checks only). Read, write, truncate, and
  copychunk already call `check_lock_range()`; zero-data did not. A
  WRITE lock on another handle, or a READ lock vs this WRITE, is ignored
  and the range is zeroed/punched.

**Step 2.4: ASSESS THE FIX QUALITY**
Record:
- Quality: high. Same pattern as `ksmbd_vfs_write()` /
  `ksmbd_vfs_truncate()` / `ksmbd_vfs_copy_file_ranges()`.
- `posix_extensions` skip matches those callers.
- Clipping to EOF avoids `start > end` if the request extends past EOF.
- Regression risk: low. Only behavioral change is rejecting previously-
  illegal zeroing of locked ranges. `ret = 0` plus pre-set status is a
  bit awkward versus adding `-EAGAIN` in the ioctl `out` mapper, but it
  works: `out` only overwrites status when `ret < 0 || Status == 0`, so
  `STATUS_FILE_LOCK_CONFLICT` is preserved and `smb2_set_err_rsp()`
  still runs.

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

**Step 3.1: BLAME THE CHANGED LINES**
Record:
- `ksmbd_vfs_zero_data()` introduced by Namjae Jeon in 2021
  (`fs/cifsd/vfs.c`, blame `f44158485826c0` / `64b39f4a2fd293`).
- Never had a lock check. Present throughout 6.12.
- `override_creds` wrapper already in this tree via `fb1cae6302d58`
  (`ksmbd: use opener credentials for FSCTL mutations`).

**Step 3.2: FOLLOW THE FIXES: TAG**
Record: No `Fixes:` tag. Buggy code is the original zero-data
implementation, not a later regression.

**Step 3.3: CHECK FILE HISTORY FOR RELATED CHANGES**
Record:
- Already in this tree: `f751d6e39d4c9` “Do not skip lock checks for
  single-byte ranges”; `ca53bb17f4e82` “add a permission check for
  FSCTL_SET_ZERO_DATA”; `fe20d492a69a6` lock-owner tracking.
- On `origin/master`, parent `3c707d4b3f926` (“fix permission checks for
  file allocation ioctls”) is independent (SPARSE/QUERY_ALLOCATED_RANGES
  access bits), not required for this lock check.
- No `patch X/Y` in the subject. Standalone.

**Step 3.4: CHECK THE AUTHOR'S OTHER COMMITS**
Record: Namjae Jeon is the ksmbd maintainer (`Signed-off-by` on both
authorship and merge). This tree already carries many of his ksmbd
stable fixes.

**Step 3.5: CHECK FOR DEPENDENT/PREREQUISITE COMMITS**
Record: None. `check_lock_range()` is `static` in the same `vfs.c`
(lines 325–358). `STATUS_FILE_LOCK_CONFLICT` already exists.
`posix_extensions` and `i_size_read`/`min()` are present. `git apply
--check` of `8b57448a147d2` succeeded (smb2pdu offset −1234, vfs.c
offset +71).

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

**Step 4.1: FIND THE ORIGINAL PATCH DISCUSSION**
Record:
- `b4 dig -c 8b57448a147d2`: lore returned server errors; no thread URL.
- WebFetch of lore.kernel.org search URLs: HTTP 403.
- UNVERIFIED: reviewer comments, v2/v3 history, explicit Cc:stable in
  review.

**Step 4.2: CHECK WHO REVIEWED THE PATCH**
Record: UNVERIFIED via b4. Commit is maintainer-authored and merged to
`origin/master`.

**Step 4.3: SEARCH FOR THE BUG REPORT**
Record: No `Reported-by` / bugzilla / syzbot. Bug is identified from
protocol analysis, not a crash report.

**Step 4.4: CHECK FOR RELATED PATCHES AND SERIES**
Record: Nearby `origin/master` ksmbd FSCTL work (`support file level
trim`, allocation ioctl permission, allocated-range holes) is related
thematically, not a hard dependency. Samba’s `fsctl_zero_data()` takes a
WRITE strict lock and returns `NT_STATUS_FILE_LOCK_CONFLICT` on failure
(source3/smbd/smb2_ioctl_filesys.c). That matches this fix.

**Step 4.5: CHECK STABLE MAILING LIST HISTORY**
Record: UNVERIFIED (lore 403). No local evidence this was rejected for
stable.

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

**Step 5.1: IDENTIFY KEY FUNCTIONS IN THE DIFF**
Record: `ksmbd_vfs_zero_data()`, `smb2_ioctl()` (`FSCTL_SET_ZERO_DATA`),
callee `check_lock_range()`.

**Step 5.2: TRACE CALLERS**
Record:
- `ksmbd_vfs_zero_data()`: only `smb2_ioctl()` FSCTL_SET_ZERO_DATA
  (`fs/smb/server/smb2pdu.c:8548`).
- `smb2_ioctl()`: SMB2 command table `SMB2_IOCTL_HE` in
  `fs/smb/server/smb2ops.c`.
- Reachable from authenticated SMB clients issuing ioctl on an open
  writable handle.

**Step 5.3: TRACE CALLEES**
Record: `check_lock_range()` walks `flc_posix` under `flc_lock`;
conflicts if overlapping READ lock vs WRITE, or WRITE lock owned by
another `filp`. `vfs_fallocate()` does not check those locks.

**Step 5.4: FOLLOW THE CALL CHAIN**
Record: SMB2 IOCTL → `smb2_ioctl` → `ksmbd_vfs_zero_data` →
`vfs_fallocate` (punch/zero). Userspace/network reachable on any ksmbd
share without POSIX extensions (the common Windows-client case).

**Step 5.5: SEARCH FOR SIMILAR PATTERNS**
Record: Same `!posix_extensions` + `check_lock_range` + `-EAGAIN`
pattern in `ksmbd_vfs_read` (396–400), `ksmbd_vfs_write` (521–527),
`ksmbd_vfs_truncate` (835–849), `ksmbd_vfs_copy_file_ranges`
(1854–1866). Zero-data was the missing sibling. Read/write/setinfo
already map `-EAGAIN` to `STATUS_FILE_LOCK_CONFLICT`; ioctl did not,
which is why smb2pdu.c is patched.

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

**Step 6.1: DOES THE BUGGY CODE EXIST IN THIS TREE?**
Record: Yes. Local `ksmbd_vfs_zero_data()` at
`fs/smb/server/vfs.c:995-1013` has no lock check. `git merge-base --is-
ancestor 8b57448a147d2 HEAD` failed (not in this tree). Bug present
since ksmbd’s 2021 introduction; well before 6.12.

**Step 6.2: CHECK FOR BACKPORT COMPLICATIONS**
Record: Clean apply with line offset. Local ioctl `out` mapper still
lacks `-EAGAIN`, so both hunks are required. No refactor blocking the
patch.

**Step 6.3: CHECK IF RELATED FIXES ARE ALREADY HERE**
Record: Permission check for SET_ZERO_DATA is here (`ca53bb17f4e82`);
lock-check skip-for-1-byte fix is here (`f751d6e39d4c9`). Neither
implements this FSCTL lock check. No duplicate fix.

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

**Step 7.1: IDENTIFY THE SUBSYSTEM AND ITS CRITICALITY**
Record: ksmbd (`fs/smb/server`, `CONFIG_SMB_SERVER`, default n).
Criticality: IMPORTANT for ksmbd deployments (NAS, distros), not core
mm/VFS. File-server data path.

**Step 7.2: ASSESS SUBSYSTEM ACTIVITY**
Record: Actively maintained; this 6.12 tree already backports many ksmbd
protocol, lock, and UAF fixes. Mature enough that missing lock checks
are long-standing, not new-code churn.

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

**Step 8.1: DETERMINE WHO IS AFFECTED**
Record: ksmbd users, non-POSIX SMB shares, clients that use byte-range
locks and `FSCTL_SET_ZERO_DATA` (Windows sparse/zero APIs, some
databases/backup tools).

**Step 8.2: DETERMINE THE TRIGGER CONDITIONS**
Record: Handle A holds an SMB lock; handle B (or another client) issues
`FSCTL_SET_ZERO_DATA` overlapping that range with `FILE_WRITE_DATA`. Not
every I/O, but a realistic multi-client/multi-handle case. Authenticated
SMB user; not unprivileged local syscall.

**Step 8.3: DETERMINE THE FAILURE MODE SEVERITY**
Record: Locked file data can be silently zeroed or punched. Failure
mode: data corruption / lock-semantics violation. Severity: HIGH (not a
kernel oops).

**Step 8.4: CALCULATE RISK-BENEFIT RATIO**
Record:
- Benefit: high for ksmbd — restores lock integrity on a data-destroying
  FSCTL; aligns with Samba/Windows.
- Risk: very low — 18 lines, existing helper, applies cleanly, only
  rejects operations that should have failed.
- Ratio: strongly favors backport.

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

**Step 9.1: COMPILE THE EVIDENCE**

FOR:
- Real bug: SET_ZERO_DATA ignores byte-range locks while
  read/write/truncate/copychunk do not.
- User-visible: silent zero/punch of locked ranges (data integrity).
- Samba returns `NT_STATUS_FILE_LOCK_CONFLICT` for the same FSCTL.
- Small, obviously correct, maintainer-authored.
- Helpers and surrounding lock policy already in 6.12; patch applies
  cleanly.
- This tree already backported the same class (`f751d6e39d4c9`) and
  SET_ZERO_DATA access control (`ca53bb17f4e82`).

AGAINST:
- No crash/UAF/syzbot report.
- ksmbd is optional (`CONFIG_SMB_SERVER`).
- No mailing-list confirmation (lore unreachable).
- Slightly weaker than Samba on past-EOF ranges (intentional per commit
  message).

UNRESOLVED:
- Original lore thread / reviewer NAKs (b4 and lore failed).

**Step 9.2: APPLY THE STABLE RULES CHECKLIST**
1. Obviously correct and tested? **PASS** — matches existing ksmbd lock
   checks; maintainer SOB. (No extra Tested-by.)
2. Fixes a real bug that affects users? **PASS** — lock bypass on a
   mutating FSCTL.
3. Important issue (crash, security, corruption, deadlock)? **PASS** —
   data corruption / exclusive-lock violation. HIGH, not panic.
4. Small and contained? **PASS** — 18/+1 lines, two files, one FSCTL.
5. No new features or APIs? **PASS** — enforces existing SMB lock rules.
6. Can apply to the local tree? **PASS** — `git apply --check`
   succeeded.

**Step 9.3: CHECK FOR EXCEPTION CATEGORIES**
Record: None (not a device-ID/quirk/DT/build/doc exception). Qualifies
as a normal important bugfix.

**Step 9.4: MAKE YOUR DECISION**
Backport. The 6.12 tree has the buggy path, the same
`check_lock_range()` policy, and already takes ksmbd lock-correctness
fixes. Benefit is lock-integrity on a data-destroying ioctl; risk is
minimal.

### What the commit solves
On this 6.12 tree, `FSCTL_SET_ZERO_DATA` breaks oplocks and calls
`vfs_fallocate()` without `check_lock_range()`. POSIX/SMB locks are not
enforced by `vfs_fallocate()`, so another handle can zero or punch a
locked range. The patch checks the range clipped to EOF and returns
`STATUS_FILE_LOCK_CONFLICT`, matching Samba and ksmbd’s other mutating
paths.

### Stable rules
Surgical, no new API, applies here, fixes real data-integrity/protocol
failure. Not a feature add.

### Risk vs benefit
Benefit: prevent silent destruction of locked file data on ksmbd. Risk:
low; only newly failed requests are ones that violated locks.

### Concerns
Mailing-list review could not be fetched. Parent permission-ioctl commit
is not required. `ret = 0` before `goto out` is slightly unusual but
correct given this ioctl error mapper.

Verification:
- [Phase 1] Parsed tags on `8b57448a147d2`: only Namjae Jeon SOB; no
  Fixes/Cc:stable/Reported-by
- [Phase 1] `git describe HEAD` / Makefile: `p-6.12-3-gc504cf0baa3d8`,
  VERSION 6.12.111, branch `pending-6.12`
- [Phase 2] Diff: +12 vfs.c `ksmbd_vfs_zero_data`, +6/-1 smb2pdu.c
  FSCTL_SET_ZERO_DATA
- [Phase 2] Local `smb2_ioctl` `out` (8694–8708) maps unknown errors to
  `STATUS_INVALID_PARAMETER`, not lock conflict — smb2pdu hunk required
- [Phase 2] `vfs_fallocate()` in `fs/open.c:246` has no posix-lock check
- [Phase 3] Blame: zero_data from 2021 cifsd; no lock check ever; `git
  merge-base --is-ancestor 8b57448a147d2 HEAD` → not ancestor
- [Phase 3] Related in-tree: `f751d6e39d4c9` (1-byte lock skip),
  `ca53bb17f4e82` (SET_ZERO_DATA FILE_WRITE_DATA)
- [Phase 3] Parent `3c707d4b3f926` is independent permission tweak, not
  a prerequisite
- [Phase 3] `git apply --check` of `8b57448a147d2`: both hunks apply
  (offsets −1234 / +71)
- [Phase 4] `b4 dig -c 8b57448a147d2`: lore errors, no thread —
  UNVERIFIED review discussion
- [Phase 4] lore WebFetch 403 — UNVERIFIED stable-list discussion
- [Phase 4] Samba `fsctl_zero_data` uses STRICT_LOCK WRITE and returns
  `NT_STATUS_FILE_LOCK_CONFLICT` (web/source confirmation)
- [Phase 5] Only caller of `ksmbd_vfs_zero_data` is `smb2_ioctl`;
  dispatched via `SMB2_IOCTL_HE`
- [Phase 5] `check_lock_range` already used for
  read/write/truncate/copychunk in this tree
- [Phase 6] Local `ksmbd_vfs_zero_data` (vfs.c:995–1013) matches pre-
  patch; bug exists here
- [Phase 8] Failure mode: zero/punch of locked ranges → data integrity
  HIGH
- UNVERIFIED: original lore review comments and whether anyone nominated
  this for stable on the list

**YES**

 fs/smb/server/smb2pdu.c |  7 ++++++-
 fs/smb/server/vfs.c     | 12 ++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index c18590d8ee2b9..6b3cf2dadeecd 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -8665,8 +8665,13 @@ int smb2_ioctl(struct ksmbd_work *work)
 
 			ret = ksmbd_vfs_zero_data(work, fp, off, len);
 			ksmbd_fd_put(work, fp);
-			if (ret < 0)
+			if (ret == -EAGAIN) {
+				rsp->hdr.Status = STATUS_FILE_LOCK_CONFLICT;
+				ret = 0;
 				goto out;
+			} else if (ret < 0) {
+				goto out;
+			}
 		}
 		break;
 	}
diff --git a/fs/smb/server/vfs.c b/fs/smb/server/vfs.c
index 47c289ad9c3dc..f894092901bc5 100644
--- a/fs/smb/server/vfs.c
+++ b/fs/smb/server/vfs.c
@@ -1003,6 +1003,18 @@ int ksmbd_vfs_zero_data(struct ksmbd_work *work, struct ksmbd_file *fp,
 	int err;
 
 	smb_break_all_levII_oplock(work, fp, 1);
+	if (!work->tcon->posix_extensions) {
+		loff_t size = i_size_read(file_inode(fp->filp));
+
+		if (off < size) {
+			err = check_lock_range(fp->filp, off,
+					       min(off + len, size) - 1,
+					       WRITE);
+			if (err)
+				return -EAGAIN;
+		}
+	}
+
 	saved_cred = override_creds(fp->filp->f_cred);
 	if (fp->f_ci->m_fattr & FILE_ATTRIBUTE_SPARSE_FILE_LE)
 		err = vfs_fallocate(fp->filp,
-- 
2.53.0


  parent reply	other threads:[~2026-10-19 14:04 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 ` Sasha Levin [this message]
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 ` [PATCH AUTOSEL 6.18-5.15] ksmbd: fix SMB2 byte-range lock end offset Sasha Levin

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-414-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