diff options
| author | DaeMyung Kang <charsyam@gmail.com> | 2026-04-19 14:02:54 +0300 |
|---|---|---|
| committer | Steve French <stfrench@microsoft.com> | 2026-04-22 16:11:23 +0300 |
| commit | c049ee14eb4343b69b6f7755563f961f5e153423 (patch) | |
| tree | 380420a2b7d13a274d25f68a6cd7d79b41234fa3 /include/linux/timerqueue.h | |
| parent | cc92b479b6ed1d7d1a6eb13aba472badb836a832 (diff) | |
| download | linux-c049ee14eb4343b69b6f7755563f961f5e153423.tar.xz | |
ksmbd: destroy tree_conn_ida in ksmbd_session_destroy()
When per-session tree_conn_ida was converted from a dynamically
allocated ksmbd_ida to an embedded struct ida, ksmbd_ida_free() was
removed from ksmbd_session_destroy() but no matching ida_destroy()
was added. The session is therefore freed with the IDA's backing
xarray still intact.
The kernel IDA API expects ida_init() and ida_destroy() to be paired
over an object's lifetime, so add the missing cleanup before the
enclosing session is freed.
Also move ida_init() to right after the session is allocated so that
it is always paired with the destroy call even on the early error
paths of __session_create() (ksmbd_init_file_table() or
__init_smb2_session() failures), both of which jump to the error
label and invoke ksmbd_session_destroy() on a partially initialised
session.
No leak has been observed in testing; this is a pairing fix to match
the IDA lifetime rules, not a response to a reproduced regression.
Fixes: d40012a83f87 ("cifsd: declare ida statically")
Signed-off-by: DaeMyung Kang <charsyam@gmail.com>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions
