Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | From | Edward Adam Davis <> | Subject | Re: [syzbot] [block?] [trace?] INFO: task hung in blk_trace_remove (2) | Date | Tue, 30 Jan 2024 21:38:45 +0800 |
| |
please test task hung in blk_trace_remove
#syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index d5d94510afd3..81e48f841764 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -327,7 +327,7 @@ static void blk_trace_free(struct request_queue *q, struct blk_trace *bt) } free_percpu(bt->sequence); free_percpu(bt->msg_data); - kfree(bt); + kfree_rcu(bt, rcu); } static void get_probe_ref(void) @@ -380,7 +380,6 @@ static int blk_trace_stop(struct blk_trace *bt) static void blk_trace_cleanup(struct request_queue *q, struct blk_trace *bt) { blk_trace_stop(bt); - synchronize_rcu(); blk_trace_free(q, bt); put_probe_ref(); } diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 122c62e561fc..5f927328b7e6 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h @@ -26,6 +26,7 @@ struct blk_trace { struct dentry *dir; struct list_head running_list; atomic_t dropped; + struct rcu_head rcu; }; extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
| ![\](/images/icornerr.gif) |