Commit 01929a65 authored by John Garry's avatar John Garry Committed by Martin K. Petersen

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: default avatarJian Luo <luojian5@huawei.com>
Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent ff525b6e
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment