[PATCH] scsi: rdac: preserve controller allocation errors

From: Slavin Liu

Date: Sun Sep 13 2026 - 08:54:32 EST


initialize_controller() overwrites its allocation failure with
SCSI_DH_OK. Only set success after obtaining and linking a controller,
so the caller cannot reach ownership checks or cleanup with NULL ctlr.

Detected by static analysis and reviewed with AI-assisted source auditing.

Fixes: 327825574132 ("scsi_dh_rdac: switch to scsi_execute_req_flags()")
Assisted-by: LLM
Signed-off-by: Slavin Liu <bolin.liu@xxxxxxxxxx>
---
drivers/scsi/device_handler/scsi_dh_rdac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c
index 88c8e36b221e..ed02e1737bd7 100644
--- a/drivers/scsi/device_handler/scsi_dh_rdac.c
+++ b/drivers/scsi/device_handler/scsi_dh_rdac.c
@@ -455,9 +455,9 @@ static int initialize_controller(struct scsi_device *sdev,
else {
h->sdev = sdev;
list_add_rcu(&h->node, &h->ctlr->dh_list);
+ err = SCSI_DH_OK;
}
spin_unlock(&list_lock);
- err = SCSI_DH_OK;
}
return err;
}