mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
btrfs: async-thread: Fix a use-after-free error for trace
commit 0a95b85137 upstream.
Parameter of trace_btrfs_work_queued() can be freed in its workqueue.
So no one use use that pointer after queue_work().
Fix the user-after-free bug by move the trace line before queue_work().
Reported-by: Dave Jones <davej@codemonkey.org.uk>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
08acfd9dd8
commit
d60a374907
@@ -328,8 +328,8 @@ static inline void __btrfs_queue_work(struct __btrfs_workqueue *wq,
|
||||
list_add_tail(&work->ordered_list, &wq->ordered_list);
|
||||
spin_unlock_irqrestore(&wq->list_lock, flags);
|
||||
}
|
||||
queue_work(wq->normal_wq, &work->normal_work);
|
||||
trace_btrfs_work_queued(work);
|
||||
queue_work(wq->normal_wq, &work->normal_work);
|
||||
}
|
||||
|
||||
void btrfs_queue_work(struct btrfs_workqueue *wq,
|
||||
|
||||
Reference in New Issue
Block a user