Skip to content

Commit 64506b3

Browse files
Mani-Sadhasivammartinkpetersen
authored andcommitted
scsi: ufs: qcom: Only free platform MSIs when ESI is enabled
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: [email protected] # 6.3 Fixes: 519b627 ("scsi: ufs: qcom: Add MCQ ESI config vendor specific ops") Signed-off-by: Manivannan Sadhasivam <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Bean Huo <[email protected]> Reviewed-by: Bart Van Assche <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 1695c43 commit 64506b3

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

drivers/ufs/host/ufs-qcom.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1861,10 +1861,12 @@ static int ufs_qcom_probe(struct platform_device *pdev)
18611861
static void ufs_qcom_remove(struct platform_device *pdev)
18621862
{
18631863
struct ufs_hba *hba = platform_get_drvdata(pdev);
1864+
struct ufs_qcom_host *host = ufshcd_get_variant(hba);
18641865

18651866
pm_runtime_get_sync(&(pdev)->dev);
18661867
ufshcd_remove(hba);
1867-
platform_device_msi_free_irqs_all(hba->dev);
1868+
if (host->esi_enabled)
1869+
platform_device_msi_free_irqs_all(hba->dev);
18681870
}
18691871

18701872
static const struct of_device_id ufs_qcom_of_match[] __maybe_unused = {

0 commit comments

Comments
 (0)