qla2xxx: fix crash due to task mgmt cmd type
authorHimanshu Madhani <himanshu.madhani@qlogic.com>
Thu, 25 Sep 2014 10:14:50 +0000 (06:14 -0400)
committerChristoph Hellwig <hch@lst.de>
Thu, 25 Sep 2014 12:25:07 +0000 (14:25 +0200)
tcm_qla2xxx_get_task_tag incorrectly assume command is
qla_tgt_cmd.  Add check to see if it's a scsi cmd or
task mgmt command.

Signed-off-by: Quinn Tran <quinn.tran@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/qla2xxx/tcm_qla2xxx.c

index 09d2931774f298c58f87d24e07492a128d202f28..9f954074acd9b414d3fbc0306bc9ef02da4f094e 100644 (file)
@@ -515,8 +515,13 @@ static void tcm_qla2xxx_set_default_node_attrs(struct se_node_acl *nacl)
 
 static u32 tcm_qla2xxx_get_task_tag(struct se_cmd *se_cmd)
 {
-       struct qla_tgt_cmd *cmd = container_of(se_cmd,
-                               struct qla_tgt_cmd, se_cmd);
+       struct qla_tgt_cmd *cmd;
+
+       /* check for task mgmt cmd */
+       if (se_cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)
+               return 0xffffffff;
+
+       cmd = container_of(se_cmd, struct qla_tgt_cmd, se_cmd);
 
        return cmd->tag;
 }