scsi: libsas: Check SMP PHY control function result
Currently the SMP PHY control execution result is checked, however the function result for the command is not. As such, we may be missing all potential errors, like SMP FUNCTION FAILED, INVALID REQUEST FRAME LENGTH, etc., meaning the PHY control request has failed. In some scenarios we need to ensure the function result is accepted, so add a check for this. Tested-by: Jian Luo <luojian5@huawei.com> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
ff525b6e2d
commit
01929a65df
|
@ -614,7 +614,14 @@ int sas_smp_phy_control(struct domain_device *dev, int phy_id,
|
|||
}
|
||||
|
||||
res = smp_execute_task(dev, pc_req, PC_REQ_SIZE, pc_resp,PC_RESP_SIZE);
|
||||
|
||||
if (res) {
|
||||
pr_err("ex %016llx phy%02d PHY control failed: %d\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, res);
|
||||
} else if (pc_resp[2] != SMP_RESP_FUNC_ACC) {
|
||||
pr_err("ex %016llx phy%02d PHY control failed: function result 0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, pc_resp[2]);
|
||||
res = pc_resp[2];
|
||||
}
|
||||
kfree(pc_resp);
|
||||
kfree(pc_req);
|
||||
return res;
|
||||
|
|
Loading…
Reference in New Issue