diff options
| author | sonotri <sono7ri@gmail.com> | 2026-10-15 21:06:54 +0900 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2026-10-16 08:25:27 -0600 |
| commit | afc9cde716b29ce814798d649a95f9128ba42b43 (patch) | |
| tree | 8c21e3590e01aff4d0295b69c129512103b30b72 /tools/lib/python/kdoc/python_version.py | |
| parent | 5f702d4bd61be29f11d07dc1c4a6953d39b28f9f (diff) | |
ublk: pin module while release work is pending
ublk_ch_release() takes a device reference and queues exit_work. The VFS
module reference held through the file operations is dropped after
->release() returns. A queued work item does not acquire its own module
reference for the callback.
Consequently, normal module removal can start while exit_work is pending or
executing. In addition to the worker callback itself, the final device put
can invoke ublk_cdev_rel(), which is also module code.
Take a module reference while ->release() is still covered by the file
operations reference and drop it only after the worker has completed its
final device put. A rearming worker retains the same reference.
Merely canceling exit_work during module exit is insufficient. The worker
is the terminal path for the device reference taken by ublk_ch_release(),
so its cancellation would strand that reference and skip the associated
cleanup.
Fixes: c5c5eb24ed61 ("ublk: avoid ublk_io_release() called after ublk char dev is closed")
Cc: stable@vger.kernel.org
Signed-off-by: sonotri <sono7ri@gmail.com>
Reviewed-by: Ming Lei <tom.leiming@gmail.com>
Link: https://patch.msgid.link/20261015120654.241354-1-sono7ri@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
