aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Madhani <[email protected]>2014-09-25 06:14:50 -0400
committerChristoph Hellwig <[email protected]>2014-09-25 14:25:07 +0200
commitdd9c4eff77fc7412fa79a1a05a2dec2469cc8ca8 (patch)
tree30dd0d40c8eed803149bf2783b95b5165ea1ba1c
parentd29fb7360ee61ec02257e9c49848c9d2a05345a0 (diff)
qla2xxx: fix crash due to task mgmt cmd type
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 <[email protected]> Signed-off-by: Saurav Kashyap <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]>
-rw-r--r--drivers/scsi/qla2xxx/tcm_qla2xxx.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index 09d2931774f2..9f954074acd9 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -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;
}