From e8c5cb610a17fdfefb7af0ef1ada9d5b51fa1a0c Mon Sep 17 00:00:00 2001 From: Manish Bhardwaj Date: Fri, 20 Oct 2023 06:17:44 +0000 Subject: [PATCH] vsc: use max supported ioctl size target is getting crash while triggering multiple ioctl call from userpsace due to miscalculation of mempool_virt and mempool_offset for each slot. So use max supported ioctl size macro instead of max supported read and write operation size. Bug 4336445 Change-Id: I438ff50cb0dfba845f4d7852e74314c66dab196c Signed-off-by: Manish Bhardwaj Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3001185 Reviewed-by: Kasinadha Dendukuri Reviewed-by: Sumeet Gupta Tested-by: Tonny Liang GVS: Gerrit_Virtual_Submit --- drivers/block/tegra_virt_storage/tegra_hv_vblk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c index 19f24dee..9bbc3de9 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c @@ -1145,8 +1145,8 @@ static void setup_device(struct vblk_dev *vblkdev) } else { if (vblkdev->config.blk_config.req_ops_supported & VS_BLK_IOCTL_OP_F) { req->mempool_virt = (void *)((uintptr_t)vblkdev->shared_buffer + - (uintptr_t)((req_id % max_ioctl_requests) * max_io_bytes)); - req->mempool_offset = (req_id % max_ioctl_requests) * max_io_bytes; + (uintptr_t)((req_id % max_ioctl_requests) * UFS_IOCTL_MAX_SIZE_SUPPORTED)); + req->mempool_offset = (req_id % max_ioctl_requests) * UFS_IOCTL_MAX_SIZE_SUPPORTED; } } req->mempool_len = max_io_bytes;