Commit 2053a1db41193c2b5e1f47a91aaba0fd63ba7102

Authored by Roland Dreier
Committed by Nicholas Bellinger
1 parent acb3f2600e

target: Fix assignment of LUN in tracepoints

The unpacked_lun field in the SCSI target tracepoints should be
initialized with cmd->orig_fe_lun rather than cmd->se_lun->unpacked_lun
for two reasons:

 - most importantly, if we are in the cmd_complete tracepoint
   returning a check condition due to no LUN found, cmd->se_lun will
   be NULL and we'll crash trying to dereference it.

 - also, in any case, cmd->se_lun->unpacked_lun is an internal index
   into the target's internal set of LUNs; cmd->orig_fe_lun is much
   more useful and interesting, since it's the value the initiator
   actually sent.

Signed-off-by: Roland Dreier <roland@purestorage.com>
Cc: <stable@vger.kernel.org> # 3.11+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

include/trace/events/target.h
... ... @@ -144,7 +144,7 @@
144 144 ),
145 145  
146 146 TP_fast_assign(
147   - __entry->unpacked_lun = cmd->se_lun->unpacked_lun;
  147 + __entry->unpacked_lun = cmd->orig_fe_lun;
148 148 __entry->opcode = cmd->t_task_cdb[0];
149 149 __entry->data_length = cmd->data_length;
150 150 __entry->task_attribute = cmd->sam_task_attr;
... ... @@ -182,7 +182,7 @@
182 182 ),
183 183  
184 184 TP_fast_assign(
185   - __entry->unpacked_lun = cmd->se_lun->unpacked_lun;
  185 + __entry->unpacked_lun = cmd->orig_fe_lun;
186 186 __entry->opcode = cmd->t_task_cdb[0];
187 187 __entry->data_length = cmd->data_length;
188 188 __entry->task_attribute = cmd->sam_task_attr;