Linux/linux 89a3129fs/smb/client transport.c connect.c

Merge tag 'cifs-fixes-7.3-rc2' of https://git.manguebit.org/linux

Pull smb client fixes from Paulo Alcantara:

 - Fixes for fallocate range operations (insert, collapse, zero, punch
   hole)

   The insert range implementation copied overlapping chunks in the
   wrong direction, corrupting file data on every server except Windows.

   Several related issues in the same area are also addressed — stale
   page cache and FS-Cache readback, an integer truncation on large
   files, missing RLIMIT_FSIZE validation and missing sparse file
   marking.

 - Data corruption fixes in the O_TRUNC open path: one where i_size was
   zeroed before the server confirmed the truncate and another where the
   lack of locking allowed concurrent buffered writes to be silently
   discarded

    [26 lines not shown]
DeltaFile
+159-36fs/smb/client/smb2ops.c
+30-6fs/smb/client/file.c
+21-3fs/smb/client/cifssmb.c
+16-5fs/smb/client/connect.c
+5-6fs/smb/client/transport.c
+231-565 files

Linux/linux 9a58da8fs/smb/server vfs_cache.c transport_ipc.c, fs/smb/server/mgmt share_config.c

Merge tag 'ksmbd-for-7.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/smb

Pull smb server fixes from Namjae Jeon:

 - Prevent unintended data exposure by clearing pipe compound padding
   and the response buffer

 - Initialize missing fields in FS_OBJECT_ID_INFORMATION,
   FS_CONTROL_INFORMATION, and FS_POSIX_INFORMATION

 - Propagate DACL parsing and allocation failures so malformed security
   descriptors are rejected

 - Rate-limit errors for unmapped SIDs to prevent kernel log flooding

 - Drain multichannel sessions during LOGOFF, wake deferred locks and
   cancellable requests, and ensure cancellation callbacks run only once

 - Fix listener kthread reference handling and teardown ordering during

    [20 lines not shown]
DeltaFile
+64-8fs/smb/server/smb2pdu.c
+40-27fs/smb/server/smbacl.c
+27-13fs/smb/server/mgmt/share_config.c
+27-9fs/smb/server/transport_tcp.c
+14-7fs/smb/server/transport_ipc.c
+15-2fs/smb/server/vfs_cache.c
+187-665 files not shown
+208-7311 files

Linux/linux 786262b. MAINTAINERS, drivers/edac ie31200_edac.c edac_device_sysfs.c

Merge tag 'edac_updates_for_v7.3_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras

Pull forgotten EDAC updates from Borislav Petkov:
 "Somewhat belated (and forgotten :-\) EDAC updates lineup for v7.3:

   - Mark the mpc85xx and ThunderX EDAC drivers as orphaned due to lack
     of access to hardware

   - Remove the unused fake error injection interface from the EDAC
     debugfs code due to potential races between logging a fake and a
     real hw error

   - edac_mc_sysfs: Use sysfs_emit_at() for proper bounds checking

   - Remove Mark Gross from maintainer entries and move him to CREDITS

   - Load the AMD address translation library only on systems which can
     actually make use of it (have ECC memory) instead of on every AMD
     Zen system out there

    [40 lines not shown]
DeltaFile
+268-205drivers/edac/igen6_edac.c
+62-65drivers/edac/altera_edac.c
+1-64drivers/edac/debugfs.c
+14-9drivers/edac/edac_device_sysfs.c
+17-1drivers/edac/ie31200_edac.c
+7-9MAINTAINERS
+369-35314 files not shown
+388-39520 files

Linux/linux 68c9077drivers/edac al_mc_edac.c ie31200_edac.c, drivers/ras/amd/atl map.c

Merge remote-tracking branches 'ras/edac-misc', 'ras/edac-drivers' and 'ras/edac-amd-atl' into edac-updates

* ras/edac-misc:
  EDAC/thunderx: Orphan it
  EDAC/device_sysfs: Cleanup around edac_device_ctl_poll_msec_store()
  EDAC/device_sysfs: Use kstrtouint() for poll_msec to prevent truncation
  MAINTAINERS: Add Radhey Shyam Pandey as Xilinx EDAC reviewer
  MAINTAINERS: Remove Mark Gross from relevant entries
  EDAC/sysfs: Use sysfs_emit_at() in dimmdev_location_show()
  EDAC/mpc85xx: Orphan it

* ras/edac-drivers:
  EDAC/igen6: Add Intel Starfire SoCs support
  EDAC/igen6: Refactor address translation logic
  EDAC/igen6: Remove redundant resource configuration tables
  EDAC/igen6: Detect present memory controllers at runtime
  EDAC/igen6: Simplify compute die ID comments
  EDAC/igen6: Remove unnecessary XOR on the zero-valued interleave bit
  EDAC/igen6: Fix Raptor Lake-P logged error address

    [14 lines not shown]
DeltaFile
+268-205drivers/edac/igen6_edac.c
+62-65drivers/edac/altera_edac.c
+1-64drivers/edac/debugfs.c
+17-1drivers/edac/ie31200_edac.c
+2-10drivers/edac/al_mc_edac.c
+1-5drivers/ras/amd/atl/map.c
+351-3508 files not shown
+358-36714 files

Linux/linux abdf623kernel workqueue.c, tools/workqueue wq_dump.py

Merge tag 'wq-for-7.3-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq

Pull workqueue fixes from Tejun Heo:

 - An unbound worker pool could be freed while still reachable through
   the pending-activation list, leading to a use-after-free. Unlink
   before dropping the reference

 - On PREEMPT_RT, the BH workqueue kick raised softirqs from preemptible
   context, tripping a lockdep assertion and possibly losing
   concurrently raised softirq bits

 - Draining BH work off a dead CPU nests two pools' callback locks,
   which lockdep misreported as recursive locking. The nesting cannot
   deadlock. Annotate it

 - Reject watchdog thresholds that overflow the conversion to jiffies

 - Make the drgn workqueue dump script work again on kernels and vmcores

    [8 lines not shown]
DeltaFile
+21-9kernel/workqueue.c
+8-2tools/workqueue/wq_dump.py
+29-112 files

Linux/linux c3b510dinclude/linux cgroup-defs.h, kernel/cgroup cgroup.c cpuset.c

Merge tag 'cgroup-for-7.3-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup

Pull cgroup fixes from Tejun Heo:

 - After cgroup.kill was written to a cgroup, every child cloned into it
   with CLONE_INTO_CGROUP was spuriously killed because the fork path
   snapshotted the kill counter before resolving the target cgroup

 - Releasing an isolated cpuset partition dropped the isolation of CPUs
   isolated on the kernel command line

 - Selftest and documentation fixes

* tag 'cgroup-for-7.3-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
  selftests/cgroup: test clone3() into a previously killed cgroup
  cgroup: fix spurious SIGKILL of CLONE_INTO_CGROUP children
  selftests/cgroup: Add test for preserving boot-isolated CPUs
  cgroup/cpuset: Preserve boot-isolated CPUs on partition release
  selftests/cgroup: Drop invalid boot isolation comparison

    [3 lines not shown]
DeltaFile
+58-6tools/testing/selftests/cgroup/test_cpuset_prs.sh
+56-1tools/testing/selftests/cgroup/test_kill.c
+29-10kernel/cgroup/cpuset.c
+2-4kernel/cgroup/cgroup.c
+4-1include/linux/cgroup-defs.h
+2-2tools/testing/selftests/cgroup/test_kmem.c
+151-248 files not shown
+159-3214 files

Linux/linux 93e2579tools/workqueue wq_dump.py

tools/workqueue/wq_dump.py: Support backward compatibility for wq->attrs rename

Commit 464e454e1cb4 ("workqueue: rename wq->unbound_attrs to wq->attrs")
renamed wq->unbound_attrs to wq->attrs. When running wq_dump.py against
older running kernels or vmcores where struct workqueue_struct still
contains unbound_attrs, drgn raises an AttributeError.

Add a wq_attrs() helper to allow wq_dump.py to inspect both older and newer
kernel versions seamlessly.

Fixes: 464e454e1cb4 ("workqueue: rename wq->unbound_attrs to wq->attrs")
Signed-off-by: Aaron Tomlin <atomlin at atomlin.com>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+8-2tools/workqueue/wq_dump.py
+8-21 files

Linux/linux bf10795kernel/sched/ext internal.h ext.c, tools/sched_ext/include/scx compat.bpf.h compat.h

Merge tag 'sched_ext-for-7.3-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext

Pull sched_ext fixes from Tejun Heo:

 - The task ownership check in the dispatch queue move operation raced
   against the task exiting or moving to a different sub-scheduler,
   spuriously triggering scheduler aborts. Fix by moving the check under
   the queue lock

 - The cgroup bandwidth change callback runs in a sleepable context but
   sleepable implementations were rejected at load time. Allow them and
   add a marker so userspace can detect the capability

 - Sync tooling headers with the scx repo for accumulated compatibility
   improvements

 - Example scheduler fixes: ignored timer re-arm failures and vtime
   credit loss on cgroup migration


    [15 lines not shown]
DeltaFile
+223-0tools/sched_ext/include/scx/enums_abi.autogen.h
+120-20tools/sched_ext/include/scx/common.bpf.h
+97-0tools/sched_ext/include/scx/compat.h
+57-11tools/sched_ext/include/scx/compat.bpf.h
+34-13kernel/sched/ext/ext.c
+23-2kernel/sched/ext/internal.h
+554-466 files not shown
+597-5812 files

Linux/linux a7f25dcfs/xfs xfs_icache.c xfs_zone_alloc.c, fs/xfs/libxfs xfs_sb.c

Merge tag 'xfs-fixes-7.3-rc2' of gitolite.kernel.org:/pub/scm/fs/xfs/xfs-linux

Pull xfs fixes from Carlos Maiolino:
 "This contains a few fixes for the zoned storage support, a possible
  deadlock vector fix, some code refactoring patches and a quota evasion
  fix on XFS while exporting it via NFS.

  Please note that for the quota evasion fix, a couple patches for the
  capability subsystem are included in the pull request. Those have been
  ack'ed by the respective maintainer which also agreed to have them
  going through the xfs tree.

  This also includes a patch for the quota subsystem to stop issuing
  audit messages during quota enforcing. Quota maintainer also ack'ed
  and agreed with this going through xfs tree"

* tag 'xfs-fixes-7.3-rc2' of gitolite.kernel.org:/pub/scm/fs/xfs/xfs-linux:
  capability: unexport has_capability_noaudit
  xfs: replace ns_capable_noaudit

    [14 lines not shown]
DeltaFile
+3-185fs/xfs/xfs_aops.c
+184-0fs/xfs/xfs_ioend.c
+56-16fs/xfs/xfs_zone_alloc.c
+17-20fs/xfs/libxfs/xfs_sb.c
+18-1kernel/capability.c
+6-10fs/xfs/xfs_icache.c
+284-23216 files not shown
+339-25922 files

Linux/linux 068c35bkernel workqueue.c

workqueue: reject watchdog thresholds that overflow jiffies

The watchdog threshold is supplied in seconds but is multiplied by HZ
before being used as a jiffies interval. Reject values that exceed
MAX_JIFFY_OFFSET / HZ so the multiplication cannot wrap and the
time_after() comparisons remain within their supported range.

The check is performed before changing the threshold or watchdog timer.
Zero remains the value used to disable the watchdog.

Fixes: 82607adcf9cdf ("workqueue: implement lockup detector")
Signed-off-by: Jiacheng Xu <stitch at zju.edu.cn>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+3-0kernel/workqueue.c
+3-01 files

Linux/linux 068e5a0kernel/sched/ext ext.c

sched_ext: Fix missing @slice and @vtime descriptions in finish_dispatch() kernel-doc

Commit 13f1eae3b662 ("sched_ext: Synchronize slice and dsq_vtime
writes") added the slice and vtime parameters to finish_dispatch() but
did not update its kernel-doc, which produces warnings:

  Warning: function parameter 'slice' not described in 'finish_dispatch'
  Warning: function parameter 'vtime' not described in 'finish_dispatch'

Describe both parameters using the same wording as
dispatch_to_local_dsq(), which receives the same values.

Signed-off-by: Liang Luo <luoliang at kylinos.cn>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+2-0kernel/sched/ext/ext.c
+2-01 files

Linux/linux 4881a13kernel/sched/ext internal.h ext.c

sched_ext: Fix several comment issues

Fix several comment issues found during review:
__setschduler_prio() -> __setscheduler_class()
scx_iter_scx_dsq_new() -> bpf_iter_scx_dsq_new()
scx_next_task_scx() -> set_next_task_scx()

Signed-off-by: Wanwu Li <liwanwu at kylinos.cn>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+5-5kernel/sched/ext/ext.c
+1-1kernel/sched/ext/internal.h
+6-62 files

Linux/linux 84590dbtools/sched_ext scx_qmap.bpf.c

sched_ext: Check bpf_timer_start return values in scx_qmap

monitor_timerfn(), lowpri_timerfn() and round_robin_timerfn() ignore
bpf_timer_start()'s return value: a failed re-arm silently stops the
periodic heartbeat, starving every task parked in LOWPRI_DSQ (lowpri)
or freezing cid rotation (round-robin).  Check the returns and raise
scx_bpf_error(), matching the init paths.

Signed-off-by: Wanwu Li <liwanwu at kylinos.cn>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+6-3tools/sched_ext/scx_qmap.bpf.c
+6-31 files

Linux/linux b6ee92dtools/sched_ext scx_flatcg.bpf.c

sched_ext: Fix vtime delta loss in scx_flatcg cgroup migration

fcg_cgroup_move() lost the signed vtime offset across cgroup
migration in the mechanical conversion to time helpers:
time_delta() clamps negative deltas to 0, so a queued task (whose
dsq_vtime is normally behind the source frontier) loses its
accumulated vtime credit and lands exactly at the destination
frontier instead of keeping its relative position.  Restore the
wrapping signed subtraction.

Fixes: 62addc6dbf36 ("sched_ext: Use time helpers in BPF schedulers")
Signed-off-by: Wanwu Li <liwanwu at kylinos.cn>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+1-1tools/sched_ext/scx_flatcg.bpf.c
+1-11 files

Linux/linux 2376135tools/sched_ext scx_central.bpf.c

sched_ext: Fix timer pinning and return value in scx_central

central_timerfn() re-arms the timer with a hardcoded
BPF_F_TIMER_CPU_PIN flag and ignores the return value, defeating
start_central_timer()'s -EINVAL fallback for kernels without the flag
(<6.7): on such kernels the first tick kills the timer permanently
with no diagnostic.  Honor timer_pinned and check the return like
the initial arm does.

Fixes: 22a920209ab6 ("sched_ext: Implement tickless support")
Signed-off-by: Wanwu Li <liwanwu at kylinos.cn>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+5-1tools/sched_ext/scx_central.bpf.c
+5-11 files

Linux/linux 3f4b7d1tools/testing/selftests/cgroup test_kill.c

selftests/cgroup: test clone3() into a previously killed cgroup

Once cgroup.kill had been written to a cgroup, a stale kill_seq
snapshot (taken in cgroup_css_set_fork() before the target cgroup was
resolved) caused every child subsequently cloned into that cgroup with
clone3(CLONE_INTO_CGROUP) to be SIGKILLed on the spot.

Add a regression test: create a cgroup, kill it while it is empty,
then clone a child into it and check that the child runs and exits
cleanly. On a kernel without the fix, the test fails:

  not ok 4 test_cgkill_clone_into_killed

The test is skipped on kernels without clone3() or without
CLONE_INTO_CGROUP.

Cc: Shakeel Butt <shakeel.butt at linux.dev>
Assisted-by: LLM
Signed-off-by: Etienne Perot <eperot at google.com>
Signed-off-by: Tejun Heo <tj at kernel.org>
DeltaFile
+55-0tools/testing/selftests/cgroup/test_kill.c
+55-01 files

Linux/linux 8e35992include/linux cgroup-defs.h, kernel/cgroup cgroup.c

cgroup: fix spurious SIGKILL of CLONE_INTO_CGROUP children

Since commit b69bb476dee9 ("cgroup: fix race between fork and
cgroup.kill"), the fork path snapshots the kill_seq of the child's
future cgroup into kargs->kill_seq, and cgroup_post_fork() SIGKILLs
the child if that cgroup's kill_seq has changed in the meantime, to
catch forks racing with a cgroup.kill sweep.

For CLONE_INTO_CGROUP, however, the snapshot in cgroup_css_set_fork()
is taken before the target cgroup has been resolved: kargs->cgrp is
always NULL at this point (it is only set at the end of the function).
So the "if (kargs->cgrp)" branch is dead code and the snapshot always
records the kill_seq of the parent's cgroup. cgroup_post_fork() then
compares it with the kill_seq of the target cgroup, so the child gets
SIGKILLed whenever the two cgroups have been killed a different number
of times.

As a result, once cgroup.kill has been written to a cgroup, every
child subsequently cloned into it with clone3(CLONE_INTO_CGROUP) is

    [20 lines not shown]
DeltaFile
+2-4kernel/cgroup/cgroup.c
+4-1include/linux/cgroup-defs.h
+6-52 files

Linux/linux 4aa2c10fs/smb/client cifssmb.c

smb: client: reject SetEA requests that do not fit the request buffer

CIFSSMBSetEA() copies the caller's extended attribute value into the
SMB request buffer without checking that it fits.  The requirement is
stated in the source but was never implemented:

        /*BB add length check to see if it would fit in
             negotiated SMB buffer size BB */
        /* if (ea_value_len > buffer_size - 512 (enough for header)) */
        if (ea_value_len)
                memcpy(parm_data->list.name + name_len + 1,
                       ea_value, ea_value_len);

The only bound applied on the way in is in cifs_xattr_set():

        #define MAX_EA_VALUE_SIZE CIFSMaxBufSize
        ...
        if (size > MAX_EA_VALUE_SIZE)


    [48 lines not shown]
DeltaFile
+10-1fs/smb/client/cifssmb.c
+10-11 files

Linux/linux a8603b5fs/smb/client file.c

smb: client: fix data corruption with concurrent writes and O_TRUNC

cifs_do_truncate() flushes dirty pages with filemap_write_and_wait()
and truncates the file on the server, but in the old code both
operations ran without holding i_rwsem or invalidate_lock.  A
concurrent buffered write via netfs_perform_write() -- which only
needs i_rwsem shared -- could dirty new pages after the flush but
before the local truncation, and those pages would be silently
discarded by cifs_setsize() -> truncate_pagecache().

Fix by acquiring inode_lock (exclusive i_rwsem) and
filemap_invalidate_lock at the top of cifs_do_truncate(), so the
entire flush-truncate-resize sequence is atomic with respect to:

  - buffered writes (blocked by exclusive i_rwsem, since
    netfs_start_io_write takes i_rwsem shared),
  - read page faults (blocked by exclusive invalidate_lock, since
    filemap_fault takes it shared),
  - writeback collection (blocked by netfs_wb_begin/netfs_wb_end

    [11 lines not shown]
DeltaFile
+18-10fs/smb/client/file.c
+18-101 files

Linux/linux ba9572bfs/smb/server smb2pdu.c

ksmbd: validate normalized name response length

FILE_NORMALIZED_NAME_INFORMATION converts the open file path to UTF-16.
smb2_allocate_rsp_buf() leaves these responses in the 448-byte small
buffer, and get_file_normalized_name_info() converts the path without
checking the remaining space.

An authenticated client can query a long path and make
smbConvertToUTF16() write beyond work->response_buf.

Use the large response buffer for normalized-name queries. Before
conversion, verify that the response has room for the worst-case UTF-16
output and its terminator.

Fixes: 10aeff72ab82 ("ksmbd: support normalized name information")
Assisted-by: Antiproof:GPT-5.6-Sol
Signed-off-by: Alon Shakevsky <shakevsky at berkeley.edu>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+11-2fs/smb/server/smb2pdu.c
+11-21 files

Linux/linux a506290fs/smb/server transport_tcp.c

ksmbd: fix listener task lifetime on netdev events

The listener thread exits when its listening socket is shutdown. The
netdevice notifier shuts down the socket before calling kthread_stop(), so
the task_struct can be freed before kthread_stop() gets its reference.

Create the listener in a stopped state and hold an extra task_struct
reference until kthread_stop_put() completes. Also stop and release
listeners before freeing their interface records during TCP teardown.

Fixes: 3316a8fc840d ("ksmbd: server: avoid busy polling in accept loop")
Reported-by: Farhad Alemi <farhad.alemi at berkeley.edu>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+27-9fs/smb/server/transport_tcp.c
+27-91 files

Linux/linux f25e937fs/smb/server transport_ipc.c, fs/smb/server/mgmt share_config.c

ksmbd: prevent out-of-bounds reads in share config responses

Validate IPC share configuration payload sizes before consuming
variable-length fields. Bound veto list parsing and account for
the separator byte when deriving the path length.

Fixes: a677ebd8ca2f ("ksmbd: validate payload size in ipc response")
Reported-by: Kanishka De Silva <kpskanna1915 at gmail.com>
Reported-by: Farhad Alemi <farhad.alemi at berkeley.edu>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+27-13fs/smb/server/mgmt/share_config.c
+14-7fs/smb/server/transport_ipc.c
+41-202 files

Linux/linux feca5e7fs/smb/server smbacl.c

ksmbd: rate limit unmapped SID errors

A client can include many structurally valid but unmapped SIDs in a DACL.
Logging every mapping failure lets one request generate hundreds of kernel
error messages.

Rate limit the message to prevent an authenticated client from flooding
the kernel log.

Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3")
Reported-by: Cheryl Babcock <cheryl at renat.io>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+2-2fs/smb/server/smbacl.c
+2-21 files

Linux/linux c61dc7bfs/smb/server smbacl.c

ksmbd: propagate DACL parsing errors

parse_dacl() silently accepts truncated ACEs and allocation failures,
allowing set_info_sec() to continue with an incomplete ACL conversion.

Return parsing and allocation errors to parse_sec_desc() so malformed
security descriptors are rejected before inode attributes or ACL xattrs
are updated.

Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3")
Reported-by: Cheryl Babcock <cheryl at renat.io>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+38-25fs/smb/server/smbacl.c
+38-251 files

Linux/linux 73f8604fs/smb/server smb2pdu.c

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.

Fixes: e2b76ab8b5c9 ("ksmbd: add support for read compound")
Reported-by: Cheryl Babcock <cheryl at renat.io>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+6-1fs/smb/server/smb2pdu.c
+6-11 files

Linux/linux d121680fs/smb/server vfs_cache.h connection.c, fs/smb/server/mgmt user_session.h user_session.c

ksmbd: safely drain sessions during logoff

SMB3 multichannel allows requests for one session to run on multiple
connections. Wait for all channels bound to a session before freeing
shared session objects.

A deferred byte-range lock remains counted as a running request and only
wakes when its file closes. Wake blocked locks during the drain without
unpublishing or modifying their file objects. Synchronous CANCEL requests
must invoke their cancellation callback to wake pending operations, while
CHANGE_NOTIFY completion remains specific to the asynchronous path.

Serialize session teardown with channel registration and previous-session
cleanup, and use atomic work-state transitions so LOGOFF, CANCEL, and
connection teardown invoke cancellation callbacks only once.

Fixes: 76e98a158b20 ("ksmbd: fix race condition between destroy_previous_session() and smb2 operations()")
Reported-by: Cheryl Babcock <cheryl at renat.io>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+42-5fs/smb/server/smb2pdu.c
+15-2fs/smb/server/vfs_cache.c
+12-1fs/smb/server/mgmt/user_session.c
+6-2fs/smb/server/connection.c
+1-0fs/smb/server/vfs_cache.h
+1-0fs/smb/server/mgmt/user_session.h
+77-106 files

Linux/linux 5c94489. MAINTAINERS

MAINTAINERS: Update the KSMBD entry

Steve French passed away recently. He was a long-time maintainer
of Linux's SMB support and will be greatly missed.

Update the KSMBD entry to no longer list Steve French as a
maintainer.

Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+0-2MAINTAINERS
+0-21 files

Linux/linux edcd92d. MAINTAINERS

MAINTAINERS: Add Paulo Alcantara as an SMBDIRECT co-maintainer

Steve French passed away recently. He was a long-time maintainer
of Linux's SMB support and will be greatly missed.

Add Paulo Alcantara as a co-maintainer of SMBDIRECT.

Acked-by: Paulo Alcantara <pc at manguebit.org>
Signed-off-by: Paulo Alcantara <pc at manguebit.org>
Acked-by: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+1-2MAINTAINERS
+1-21 files

Linux/linux db2267bfs/smb/server smb2pdu.c

ksmbd: fill in FileSysIdentifier in FS_POSIX_INFORMATION

smb2_get_info_filesystem() reports 56 bytes for FS_POSIX_INFORMATION,
that is the whole of FILE_SYSTEM_POSIX_INFO, but never assigns
FileSysIdentifier.  Those eight bytes go to the client as they are found
in the response buffer.

The buffer is zeroed on allocation, so a standalone request leaks
nothing.  A compound request can leak: the offset of the next response
is advanced by the length pinned for the previous one, so a reply that
was written into the buffer and then dropped in favour of the short
error response of smb2_set_err_rsp() stays there, and the next reply is
laid over it with only the header cleared.

Report the file system id statfs() returned, which is what the field is
for.  FileSysIdentifier is __le64 and f_fsid is a pair of ints, so
assemble the value first, val[0] as the low half, and convert it on the
way out.


    [4 lines not shown]
DeltaFile
+3-0fs/smb/server/smb2pdu.c
+3-01 files

Linux/linux c0cd3fcfs/smb/server smb2pdu.c

ksmbd: initialize FileSystemControlFlags in FS_CONTROL_INFORMATION

smb2_get_info_filesystem() reports 48 bytes for FS_CONTROL_INFORMATION,
that is the whole of struct smb2_fs_control_info, but never assigns
FileSystemControlFlags.  Those four bytes go to the client as they are
found in the response buffer.

The buffer is zeroed on allocation, so a standalone request leaks
nothing.  A compound request can leak: the offset of the next response
is advanced by the length pinned for the previous one, so a reply that
was written into the buffer and then dropped in favour of the short
error response of smb2_set_err_rsp() stays there, and the next reply is
laid over it with only the header cleared.

ksmbd does not implement quota tracking, so report no control flags.

Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3")
Cc: stable at vger.kernel.org
Signed-off-by: Aleksandr Khromov <haa at amicon.ru>
Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
DeltaFile
+1-0fs/smb/server/smb2pdu.c
+1-01 files