blk-throttle: fix UAF by deleteing timer in blk_throtl_exit()
Subsystems (3)
Sasha Levin
maintainerPATCH 1/1 blk-throttle: fix UAF by deleteing timer in blk_throtl_exit()
From: Li Jinlin <[email protected]>
[ Upstream commit 884f0e84f1e3195b801319c8ec3d5774e9bf2710 ]
The pending timer has been set up in blk_throtl_init(). However, the timer is not deleted in blk_throtl_exit(). This means that the timer handler may still be running after freeing the timer, which would result in a use-after-free.
Fix by calling del_timer_sync() to delete the timer in blk_throtl_exit().
Signed-off-by Li Jinlin <[email protected]>
Link https://lore.kernel.org/r/20210907121242.2885564-1-lijinlin3-hv44wF8Li93QT0dZR+AlfA@public.gmane.org open here
Signed-off-by Jens Axboe <axboe-tSWWG44O7X1aa/[email protected]>
Signed-off-by Sasha Levin <[email protected]>
--- block/blk-throttle.c | 1 + 1 file changed, 1 insertion(+)
block/blk-throttle.c +1 -0
@@ -1584,6 +1584,7 @@ int blk_throtl_init(struct request_queue *q)void blk_throtl_exit (struct request_queue *q) {BUG_ON (!q->td); +del_timer_sync (&q->td->service_queue.pending_timer);throtl_shutdown_wq (q);blkcg_deactivate_policy (q, &blkcg_policy_throtl);kfree (q->td);
Signature · 1 line
2.30.2