blk-mq: idle all hardware contexts before freeing a queue
Without this we can leak the active_queues reference if a command is freed while it is considered active. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
		
					parent
					
						
							
								c22d9d8a60
							
						
					
				
			
			
				commit
				
					
						19c5d84f14
					
				
			
		
					 1 changed files with 1 additions and 0 deletions
				
			
		|  | @ -1844,6 +1844,7 @@ void blk_mq_free_queue(struct request_queue *q) | ||||||
| 	blk_mq_del_queue_tag_set(q); | 	blk_mq_del_queue_tag_set(q); | ||||||
| 
 | 
 | ||||||
| 	queue_for_each_hw_ctx(q, hctx, i) { | 	queue_for_each_hw_ctx(q, hctx, i) { | ||||||
|  | 		blk_mq_tag_idle(hctx); | ||||||
| 		kfree(hctx->ctxs); | 		kfree(hctx->ctxs); | ||||||
| 		blk_mq_unregister_cpu_notifier(&hctx->cpu_notifier); | 		blk_mq_unregister_cpu_notifier(&hctx->cpu_notifier); | ||||||
| 		if (q->mq_ops->exit_hctx) | 		if (q->mq_ops->exit_hctx) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Christoph Hellwig
				Christoph Hellwig