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)
|
if (descr->serv_action_valid)
|
||||||
return TCM_INVALID_CDB_FIELD;
|
return TCM_INVALID_CDB_FIELD;
|
||||||
|
|
||||||
if (!descr->enabled || descr->enabled(descr, cmd))
|
if (!descr->enabled || descr->enabled(descr, cmd)) {
|
||||||
*opcode = descr;
|
*opcode = descr;
|
||||||
|
return TCM_NO_SENSE;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x2:
|
case 0x2:
|
||||||
/*
|
/*
|
||||||
|
|
@ -2166,8 +2168,10 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode)
|
||||||
if (descr->serv_action_valid &&
|
if (descr->serv_action_valid &&
|
||||||
descr->service_action == requested_sa) {
|
descr->service_action == requested_sa) {
|
||||||
if (!descr->enabled || descr->enabled(descr,
|
if (!descr->enabled || descr->enabled(descr,
|
||||||
cmd))
|
cmd)) {
|
||||||
*opcode = descr;
|
*opcode = descr;
|
||||||
|
return TCM_NO_SENSE;
|
||||||
|
}
|
||||||
} else if (!descr->serv_action_valid)
|
} else if (!descr->serv_action_valid)
|
||||||
return TCM_INVALID_CDB_FIELD;
|
return TCM_INVALID_CDB_FIELD;
|
||||||
break;
|
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->service_action == requested_sa)
|
||||||
if (!descr->enabled || descr->enabled(descr,
|
if (!descr->enabled || descr->enabled(descr,
|
||||||
cmd))
|
cmd)) {
|
||||||
*opcode = descr;
|
*opcode = descr;
|
||||||
|
return TCM_NO_SENSE;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return TCM_NO_SENSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static sense_reason_t
|
static sense_reason_t
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue