scsi: pm8001: Reject firmware update in fatal error state

pm8001_store_update_fw() allows a firmware update request even when the
controller has already entered a fatal error state.

Firmware update is not valid once the controller is in that state, and
attempting it can lead to a call trace. Reject the request early by
checking controller_fatal_error, set the firmware status to
FAIL_PARAMETERS, and return -EINVAL.

Signed-off-by: Kumar Meiyappan <kumar.meiyappan@microchip.com>
Signed-off-by: Sagar Biradar <sagar.biradar@microchip.com>
Link: https://patch.msgid.link/20260416153757.414896-1-sagar.biradar@microchip.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Kumar Meiyappan 2026-04-16 15:37:57 +00:00 committed by Martin K. Petersen
parent 67b85a8826
commit 2a8fbcfb04

View File

@ -826,6 +826,14 @@ static ssize_t pm8001_store_update_fw(struct device *cdev,
goto out;
}
if (pm8001_ha->controller_fatal_error) {
pm8001_dbg(pm8001_ha, FAIL,
"controller in fatal error state, firmware update rejected\n");
pm8001_ha->fw_status = FAIL_PARAMETERS;
ret = -EINVAL;
goto out;
}
for (i = 0; flash_command_table[i].code != FLASH_CMD_NONE; i++) {
if (!memcmp(flash_command_table[i].command,
cmd_ptr, strlen(cmd_ptr))) {