summaryrefslogtreecommitdiff
path: root/drivers/message/i2o/git@git.tavy.me:linux.git
diff options
context:
space:
mode:
authorHyungJung Joo <jhj140711@gmail.com>2026-03-17 14:45:56 +0900
committerChristian Brauner <brauner@kernel.org>2026-03-17 15:36:06 +0100
commitd227786ab1119669df4dc333a61510c52047cce4 (patch)
tree9d7e0fb48898026cceabaef9bfbce0eb7a09c8fe /drivers/message/i2o/git@git.tavy.me:linux.git
parent0621c385fda1376e967f37ccd534c26c3e511d14 (diff)
fs/mbcache: cancel shrink work before destroying the cache
mb_cache_destroy() calls shrinker_free() and then frees all cache entries and the cache itself, but it does not cancel the pending c_shrink_work work item first. If mb_cache_entry_create() schedules c_shrink_work via schedule_work() and the work item is still pending or running when mb_cache_destroy() runs, mb_cache_shrink_worker() will access the cache after its memory has been freed, causing a use-after-free. This is only reachable by a privileged user (root or CAP_SYS_ADMIN) who can trigger the last put of a mounted ext2/ext4/ocfs2 filesystem. Cancel the work item with cancel_work_sync() before calling shrinker_free(), ensuring the worker has finished and will not be rescheduled before the cache is torn down. Fixes: c2f3140fe2ec ("mbcache2: limit cache size") Signed-off-by: Hyungjung Joo <jhj140711@gmail.com> Link: https://patch.msgid.link/20260317054556.1821600-1-jhj140711@gmail.com Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'drivers/message/i2o/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions