mirror of https://github.com/torvalds/linux.git
scsi: target: spc: Fix loop traversal in spc_rsoc_get_descr()
Stop traversing after finding the appropriate descriptor. Signed-off-by: Chaohai Chen <wdhh66@163.com> Link: https://lore.kernel.org/r/20250124085542.109088-1-wdhh66@163.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
b505323187
commit
04ad06e41d
|
|
@ -2151,8 +2151,10 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode)
|
|||
if (descr->serv_action_valid)
|
||||
return TCM_INVALID_CDB_FIELD;
|
||||
|
||||
if (!descr->enabled || descr->enabled(descr, cmd))
|
||||
if (!descr->enabled || descr->enabled(descr, cmd)) {
|
||||
*opcode = descr;
|
||||
return TCM_NO_SENSE;
|
||||
}
|
||||
break;
|
||||
case 0x2:
|
||||
/*
|
||||
|
|
@ -2166,8 +2168,10 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode)
|
|||
if (descr->serv_action_valid &&
|
||||
descr->service_action == requested_sa) {
|
||||
if (!descr->enabled || descr->enabled(descr,
|
||||
cmd))
|
||||
cmd)) {
|
||||
*opcode = descr;
|
||||
return TCM_NO_SENSE;
|
||||
}
|
||||
} else if (!descr->serv_action_valid)
|
||||
return TCM_INVALID_CDB_FIELD;
|
||||
break;
|
||||
|
|
@ -2180,13 +2184,15 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode)
|
|||
*/
|
||||
if (descr->service_action == requested_sa)
|
||||
if (!descr->enabled || descr->enabled(descr,
|
||||
cmd))
|
||||
cmd)) {
|
||||
*opcode = descr;
|
||||
return TCM_NO_SENSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return TCM_NO_SENSE;
|
||||
}
|
||||
|
||||
static sense_reason_t
|
||||
|
|
|
|||
Loading…
Reference in New Issue