diff options
| author | Namjae Jeon <linkinjeon@kernel.org> | 2026-10-16 23:17:36 +0900 |
|---|---|---|
| committer | Namjae Jeon <linkinjeon@kernel.org> | 2026-10-21 08:55:34 +0900 |
| commit | b4bae7af1154089be87c7475218264fcbfd16d10 (patch) | |
| tree | e7359a5fa466d927abfe8230a68102962168b2f5 /scripts/Makefile.thinlto | |
| parent | 4f1ce9ffb996a524acf864316479a7806ae500c6 (diff) | |
| download | linux-b4bae7af1154089be87c7475218264fcbfd16d10.tar.gz linux-b4bae7af1154089be87c7475218264fcbfd16d10.zip | |
ksmbd: defer connection scavenging while session locks are busy
The expiration worker holds conn_list_lock for reading while checking
for authenticated sessions. Without this change, the check can wait for
conn->session_lock or sessions_table_lock.
In destroy_previous_session(), the status updates after
ksmbd_conn_wait_idle_sess() run with both session locks held for
writing. Both the KSMBD_SESS_GOOD error path and the
KSMBD_SESS_NEED_SETUP success path call ksmbd_all_conn_set_status(),
which takes conn_list_lock for reading.
A writer queued on conn_list_lock can block these new read acquisitions.
The worker then waits for a session lock held by
destroy_previous_session(), which waits behind the writer. The writer
cannot proceed until the worker releases conn_list_lock.
Try both session locks instead of waiting in the scavenging check. Keep
the connection when either lock is busy and let the periodic worker
retry later.
Fixes: d7fd1f98607f ("ksmbd: follow SMB2 session expiration semantics")
Cc: stable@vger.kernel.org
Reported-by: Abdifatah Suruur <suruurism@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
