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:
Chaohai Chen 2025-01-24 16:55:42 +08:00 committed by Martin K. Petersen
parent b505323187
commit 04ad06e41d
1 changed files with 10 additions and 4 deletions

View File

@ -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