Message ID | 20241111-ufs_bug_fix-v1-2-45ad8b62f02e@linaro.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | scsi: ufs: Bug fixes for ufs core and platform drivers | expand |
On Mon, 2024-11-11 at 23:18 +0530, Manivannan Sadhasivam via B4 Relay wrote: > 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@vger.kernel.org # 6.3 > Fixes: 519b6274a777 ("scsi: ufs: qcom: Add MCQ ESI config vendor > specific ops") > Signed-off-by: Manivannan Sadhasivam > <manivannan.sadhasivam@linaro.org> Reviewed-by: Bean Huo <beanhuo@micron.com>
diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index ecdfff2456e3..1bcc538ef8af 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -1843,10 +1843,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 = {