Patch "scsi: megaraid_sas: Fix for a potential deadlock" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: megaraid_sas: Fix for a potential deadlock

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-megaraid_sas-fix-for-a-potential-deadlock.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1e6457deacce90c3ad58c29639264b0ea17e06b1
Author: Tomas Henzl <thenzl@xxxxxxxxxx>
Date:   Mon Sep 23 19:48:33 2024 +0200

    scsi: megaraid_sas: Fix for a potential deadlock
    
    [ Upstream commit 50740f4dc78b41dec7c8e39772619d5ba841ddd7 ]
    
    This fixes a 'possible circular locking dependency detected' warning
          CPU0                    CPU1
          ----                    ----
     lock(&instance->reset_mutex);
                                  lock(&shost->scan_mutex);
                                  lock(&instance->reset_mutex);
     lock(&shost->scan_mutex);
    
    Fix this by temporarily releasing the reset_mutex.
    
    Signed-off-by: Tomas Henzl <thenzl@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240923174833.45345-1-thenzl@xxxxxxxxxx
    Acked-by: Chandrakanth Patil <chandrakanth.patil@xxxxxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 603c99fcb74e..7f2d12c5dc4b 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -8802,8 +8802,11 @@ megasas_aen_polling(struct work_struct *work)
 						   (ld_target_id / MEGASAS_MAX_DEV_PER_CHANNEL),
 						   (ld_target_id - MEGASAS_MAX_DEV_PER_CHANNEL),
 						   0);
-			if (sdev1)
+			if (sdev1) {
+				mutex_unlock(&instance->reset_mutex);
 				megasas_remove_scsi_device(sdev1);
+				mutex_lock(&instance->reset_mutex);
+			}
 
 			event_type = SCAN_VD_CHANNEL;
 			break;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux