Patch "scsi: ufs: qcom: Only free platform MSIs when ESI is enabled" has been added to the 6.6-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: ufs: qcom: Only free platform MSIs when ESI is enabled

to the 6.6-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-ufs-qcom-only-free-platform-msis-when-esi-is-en.patch
and it can be found in the queue-6.6 subdirectory.

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



commit fa58fa5bb0bd735892f87767755f409f2e7dd7f9
Author: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
Date:   Mon Nov 11 23:18:31 2024 +0530

    scsi: ufs: qcom: Only free platform MSIs when ESI is enabled
    
    [ Upstream commit 64506b3d23a337e98a74b18dcb10c8619365f2bd ]
    
    Otherwise, it will result in a NULL pointer dereference as below:
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
    Call trace:
     mutex_lock+0xc/0x54
     platform_device_msi_free_irqs_all+0x14/0x20
     ufs_qcom_remove+0x34/0x48 [ufs_qcom]
     platform_remove+0x28/0x44
     device_remove+0x4c/0x80
     device_release_driver_internal+0xd8/0x178
     driver_detach+0x50/0x9c
     bus_remove_driver+0x6c/0xbc
     driver_unregister+0x30/0x60
     platform_driver_unregister+0x14/0x20
     ufs_qcom_pltform_exit+0x18/0xb94 [ufs_qcom]
     __arm64_sys_delete_module+0x180/0x260
     invoke_syscall+0x44/0x100
     el0_svc_common.constprop.0+0xc0/0xe0
     do_el0_svc+0x1c/0x28
     el0_svc+0x34/0xdc
     el0t_64_sync_handler+0xc0/0xc4
     el0t_64_sync+0x190/0x194
    
    Cc: stable@xxxxxxxxxxxxxxx # 6.3
    Fixes: 519b6274a777 ("scsi: ufs: qcom: Add MCQ ESI config vendor specific ops")
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20241111-ufs_bug_fix-v1-2-45ad8b62f02e@xxxxxxxxxx
    Reviewed-by: Bean Huo <beanhuo@xxxxxxxxxx>
    Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index d77cfb2ab1acd..1e75368930d99 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -1923,10 +1923,12 @@ static int ufs_qcom_probe(struct platform_device *pdev)
 static void ufs_qcom_remove(struct platform_device *pdev)
 {
 	struct ufs_hba *hba =  platform_get_drvdata(pdev);
+	struct ufs_qcom_host *host = ufshcd_get_variant(hba);
 
 	pm_runtime_get_sync(&(pdev)->dev);
 	ufshcd_remove(hba);
-	platform_device_msi_free_irqs_all(hba->dev);
+	if (host->esi_enabled)
+		platform_device_msi_free_irqs_all(hba->dev);
 }
 
 static const struct of_device_id ufs_qcom_of_match[] __maybe_unused = {




[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