diff options
Diffstat (limited to 'kernel/trace/blktrace.c')
| -rw-r--r-- | kernel/trace/blktrace.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index c221e4c3f625..fa91f398f28b 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -1605,6 +1605,14 @@ static int blk_trace_remove_queue(struct request_queue *q)  	if (bt == NULL)  		return -EINVAL; +	if (bt->trace_state == Blktrace_running) { +		bt->trace_state = Blktrace_stopped; +		spin_lock_irq(&running_trace_lock); +		list_del_init(&bt->running_list); +		spin_unlock_irq(&running_trace_lock); +		relay_flush(bt->rchan); +	} +  	put_probe_ref();  	synchronize_rcu();  	blk_trace_free(bt); |