From a0c0b2f21283c9e093caf7e4997112b70fc2953c Mon Sep 17 00:00:00 2001 From: Manish Bhardwaj Date: Mon, 20 Feb 2023 11:10:21 +0530 Subject: [PATCH] nvidia-oot: fix crash issue in vblk driver Using this patch we are fixing kernel crash issue which is observed when we are unbinding the UFS driver, and we are trying to unreserved the mempool which was never reserved. Bug 3960718 Signed-off-by: Manish Bhardwaj Change-Id: Ib684cc99b9e61aa945ef406af0889aebe57e1a75 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2860634 Reviewed-by: svcacv Reviewed-by: Sanjith T D Reviewed-by: Sandeep Trasi GVS: Gerrit_Virtual_Submit --- drivers/block/tegra_virt_storage/tegra_hv_vblk.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c index dc975f1a..92b3f987 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c @@ -1358,7 +1358,12 @@ static int tegra_hv_vblk_remove(struct platform_device *pdev) destroy_workqueue(vblkdev->wq); tegra_hv_ivc_unreserve(vblkdev->ivck); - tegra_hv_mempool_unreserve(vblkdev->ivmk); + + if ((vblkdev->config.blk_config.use_vm_address == 1U + && vblkdev->config.blk_config.req_ops_supported & VS_BLK_IOCTL_OP_F) + || vblkdev->config.blk_config.use_vm_address == 0U) { + tegra_hv_mempool_unreserve(vblkdev->ivmk); + } #if (IS_ENABLED(CONFIG_TEGRA_HSIERRRPTINJ)) if (vblkdev->epl_id == IP_SDMMC)