]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
target: Make target_release_cmd_kref release on empty list
authorNicholas Bellinger <nab@linux-iscsi.org>
Mon, 13 Feb 2012 10:35:01 +0000 (02:35 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Sat, 25 Feb 2012 22:37:49 +0000 (14:37 -0800)
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 <roland@purestorage.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_transport.c

index c6b8b82333994e40fdf82da16a40d991f60a1d74..52a66710a293f720f9fb9a1b5f6e9c53273d4865 100644 (file)
@@ -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) {