[PATCH 30/62] megaraid: Protect more code with instance->reset_mutex
From: Bart Van Assche
Date: Mon Feb 23 2026 - 17:10:52 EST
From: Bart Van Assche <bvanassche@xxxxxxx>
megasas_get_device_list() and megasas_get_snapdump_properties() may
unlock instance->reset_mutex indirectly. Hence, hold reset_mutex while
calling these functions.
Cc: Kashyap Desai <kashyap.desai@xxxxxxxxxxxx>
Cc: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>
Cc: Shivasharan S <shivasharan.srikanteshwara@xxxxxxxxxxxx>
Cc: Chandrakanth patil <chandrakanth.patil@xxxxxxxxxxxx>
Cc: James E.J. Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
Cc: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
Cc: megaraidlinux.pdl@xxxxxxxxxxxx
Cc: linux-scsi@xxxxxxxxxxxxxxx
Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>
---
drivers/scsi/megaraid/megaraid_sas_base.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index ac71ea4898b2..ecd365d78ae3 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -6365,11 +6365,13 @@ static int megasas_init_fw(struct megasas_instance *instance)
megasas_setup_jbod_map(instance);
- if (megasas_get_device_list(instance) != SUCCESS) {
- dev_err(&instance->pdev->dev,
- "%s: megasas_get_device_list failed\n",
- __func__);
- goto fail_get_ld_pd_list;
+ scoped_guard(mutex, &instance->reset_mutex) {
+ if (megasas_get_device_list(instance) != SUCCESS) {
+ dev_err(&instance->pdev->dev,
+ "%s: megasas_get_device_list failed\n",
+ __func__);
+ goto fail_get_ld_pd_list;
+ }
}
/* stream detection initialization */
@@ -6468,7 +6470,8 @@ static int megasas_init_fw(struct megasas_instance *instance)
}
if (instance->snapdump_wait_time) {
- megasas_get_snapdump_properties(instance);
+ scoped_guard(mutex, &instance->reset_mutex)
+ megasas_get_snapdump_properties(instance);
dev_info(&instance->pdev->dev, "Snap dump wait time\t: %d\n",
instance->snapdump_wait_time);
}