iscsi-target: Fix potential dead-lock during node acl delete
authorNicholas Bellinger <nab@linux-iscsi.org>
Wed, 20 Jan 2016 00:15:27 +0000 (16:15 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 20 Jan 2016 09:33:55 +0000 (01:33 -0800)
commit26a99c19f810b2593410899a5b304b21b47428a6
tree50cac8c52b719b753b30c5d275bc803d44e07049
parentf246c941549c715a66a4477c3053569b2f5b8823
iscsi-target: Fix potential dead-lock during node acl delete

This patch is a iscsi-target specific bug-fix for a dead-lock
that can occur during explicit struct se_node_acl->acl_group
se_session deletion via configfs rmdir(2), when iscsi-target
time2retain timer is still active.

It changes iscsi-target to obtain se_portal_group->session_lock
internally using spin_in_locked() to check for the specific
se_node_acl configfs shutdown rmdir(2) case.

Note this patch is intended for stable, and the subsequent
v4.5-rc patch converts target_core_tpg.c to use proper
se_sess->sess_kref reference counting for both se_node_acl
deletion + se_node_acl->queue_depth se_session restart.

Reported-by:: Sagi Grimberg <sagig@mellanox.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Andy Grover <agrover@redhat.com>
Cc: Mike Christie <michaelc@cs.wisc.edu>
Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/iscsi/iscsi_target_configfs.c