CVE-2026-64437
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/07/2026
Última modificación:
25/07/2026
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL<br />
<br />
Commit f580d27e8928 ("ksmbd: fix use-after-free of a deferred file_lock on<br />
double SMB2_CANCEL") made smb2_cancel() skip a work whose state is<br />
KSMBD_WORK_CANCELLED, so its cancel_fn cannot be fired a second time. But<br />
KSMBD_WORK has three states (ACTIVE, CANCELLED, CLOSED), and the same<br />
freeing producer path is reached for CLOSED too:<br />
<br />
SMB2_CLOSE on the locking handle -> set_close_state_blocked_works() sets<br />
the deferred work&#39;s state to KSMBD_WORK_CLOSED and wakes the smb2_lock()<br />
worker. The worker takes the non-ACTIVE early-exit, locks_free_lock()s<br />
the file_lock and, because the state is not KSMBD_WORK_CANCELLED, takes<br />
the STATUS_RANGE_NOT_LOCKED branch with "goto out2" -- which, like the<br />
cancelled branch, skips release_async_work(). The work stays on<br />
conn->async_requests with a live cancel_fn = smb2_remove_blocked_lock<br />
pointing at the freed file_lock.<br />
<br />
A subsequent SMB2_CANCEL for the same AsyncId then passes the<br />
KSMBD_WORK_CANCELLED-only guard (its state is KSMBD_WORK_CLOSED), so<br />
smb2_cancel() fires cancel_fn again over the freed file_lock -- the same<br />
use-after-free fixed, via SMB2_CLOSE instead of a first SMB2_CANCEL:<br />
<br />
BUG: KASAN: slab-use-after-free in __locks_delete_block<br />
__locks_delete_block<br />
locks_delete_block<br />
ksmbd_vfs_posix_lock_unblock<br />
smb2_remove_blocked_lock<br />
smb2_cancel
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/10f293a07f9e10e988b0ae44e2e99c631f5a68e0
- https://git.kernel.org/stable/c/12c36c99655f325befe50c26842f7deca414c381
- https://git.kernel.org/stable/c/94083db751930b1540ddff2b54d4677549c57f81
- https://git.kernel.org/stable/c/a796ba4e61d5e14e07b79a359faac69f8f9b22a3
- https://git.kernel.org/stable/c/b8e274e69ab09222c7a552c7c0c1eef9ce627fc1
- https://git.kernel.org/stable/c/ddb9239828336b36d8a3ef5943fdffb2f55b6508



