+7
−6
Loading
Now target is removed from nvme_fc_ctrl_free() which is the ctrl->ref release handler. And even admin queue is unquiesced there, this way is definitely wrong because the ctr->ref is grabbed when submitting command. And Marco observed that nvme_fc_ctrl_free() can be called from request completion code path, and trigger kernel warning since request completes from softirq context. Fix the issue by moveing target removal into nvme_fc_delete_ctrl(), which is also aligned with nvme-tcp and nvme-rdma. Patch originally proposed by Ming Lei, then modified to move the tagset removal down to after nvme_fc_delete_association() after further testing. Cc: Marco Patalano <mpatalan@redhat.com> Cc: Ewan Milne <emilne@redhat.com> Cc: James Smart <james.smart@broadcom.com> Cc: Sagi Grimberg <sagi@grimberg.me> Signed-off-by:Ming Lei <ming.lei@redhat.com> Cc: stable@vger.kernel.org Tested-by:
Marco Patalano <mpatalan@redhat.com> Reviewed-by:
Justin Tee <justin.tee@broadcom.com> Signed-off-by:
Ewan D. Milne <emilne@redhat.com> Signed-off-by:
Keith Busch <kbusch@kernel.org>