mbox series

[V2,0/3] blk-mq: allow to run queue if queue refcount is held

Message ID 20190401044247.29881-1-ming.lei@redhat.com (mailing list archive)
Headers show
Series blk-mq: allow to run queue if queue refcount is held | expand

Message

Ming Lei April 1, 2019, 4:42 a.m. UTC
Hi,

Since 45a9c9d909b2 ("blk-mq: Fix a use-after-free"), run queue isn't
allowed during cleanup queue even though queue refcount is held.

This change has caused lots of kernel oops triggered in run queue path,
turns out it isn't easy to fix them all.

So move freeing of hw queue resources into hctx's release handler, then
the above issue is fixed. Meantime, this way is safe given freeing hw
queue resource doesn't require tags.


V2:
	- moving freeing hw queue resources into hctx's release handler


Ming Lei (3):
  blk-mq: free hw queue's resource in hctx's release handler
  block: don't drain in-progress dispatch in blk_cleanup_queue()
  SCSI: don't grab queue usage counter before run queue

 block/blk-core.c        | 14 +-------------
 block/blk-mq-sysfs.c    |  6 ++++++
 block/blk-mq.c          |  8 ++------
 block/blk-mq.h          |  2 +-
 drivers/scsi/scsi_lib.c |  7 -------
 5 files changed, 10 insertions(+), 27 deletions(-)

Cc: Dongli Zhang <dongli.zhang@oracle.com>
Cc: James Smart <james.smart@broadcom.com>
Cc: Bart Van Assche <bart.vanassche@wdc.com>
Cc: linux-scsi@vger.kernel.org,
Cc: Martin K . Petersen <martin.petersen@oracle.com>,
Cc: Christoph Hellwig <hch@lst.de>,
Cc: James E . J . Bottomley <jejb@linux.vnet.ibm.com>,
Cc: jianchao wang <jianchao.w.wang@oracle.com>