From: Nicholas Bellinger Date: Mon, 13 Feb 2012 10:35:01 +0000 (-0800) Subject: target: Make target_release_cmd_kref release on empty list X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=ffc32d5259d107a3aa1b822e22f20b69cb9ec0a5;p=mv-sheeva.git target: Make target_release_cmd_kref release on empty list This patch changes target_release_cmd_kref() to make TFO->release_cmd() call when list_empty(&se_cmd->se_cmd_list) is TRUE. This is required for TMR_ABORT_TASK operation where the referenced tag descriptor may have already been pulled of the session command list. Reported-by: Roland Dreier Cc: Christoph Hellwig Signed-off-by: Nicholas Bellinger --- diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index c6b8b823339..52a66710a29 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -4051,7 +4051,7 @@ static void target_release_cmd_kref(struct kref *kref) spin_lock_irqsave(&se_sess->sess_cmd_lock, flags); if (list_empty(&se_cmd->se_cmd_list)) { spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); - WARN_ON(1); + se_cmd->se_tfo->release_cmd(se_cmd); return; } if (se_sess->sess_tearing_down && se_cmd->cmd_wait_set) {