From 9dc6d85c84571ff1143b969986019a8fe17eb655 Mon Sep 17 00:00:00 2001 From: Marc Guillaume Date: Wed, 19 Jul 2023 16:24:12 -0700 Subject: [PATCH] uio: msm_sharedmem: Added checks to catch failed kcalloc calls Added checks to catch failed kcalloc allocations. The function now returns without proceeding in cases where NULL is returned by kcalloc. Change-Id: Ia9f4d6e059ea0623c3e9bed49ab60f3c30edf9ac Signed-off-by: Marc Guillaume --- drivers/uio/msm_sharedmem/msm_sharedmem.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/uio/msm_sharedmem/msm_sharedmem.c b/drivers/uio/msm_sharedmem/msm_sharedmem.c index 241bc869ce8a..1ea3300827bb 100644 --- a/drivers/uio/msm_sharedmem/msm_sharedmem.c +++ b/drivers/uio/msm_sharedmem/msm_sharedmem.c @@ -83,12 +83,21 @@ static void setup_shared_ram_perms(u32 client_id, phys_addr_t addr, u32 size, if (vm_nav_path) { nr = 3; dest_vmids = kcalloc(nr, sizeof(struct qcom_scm_vmperm), GFP_KERNEL); + if (!dest_vmids) { + pr_err("failed to alloc memory when vm_nav_path=true\n"); + return; + } + *dest_vmids = (struct qcom_scm_vmperm){VMID_HLOS, PERM_READ|PERM_WRITE}; *(dest_vmids + 1) = (struct qcom_scm_vmperm){VMID_MSS_MSA, PERM_READ|PERM_WRITE}; *(dest_vmids + 2) = (struct qcom_scm_vmperm){VMID_NAV, PERM_READ|PERM_WRITE}; } else { nr = 2; dest_vmids = kcalloc(nr, sizeof(struct qcom_scm_vmperm), GFP_KERNEL); + if (!dest_vmids) { + pr_err("failed to alloc memory when vm_nav_path=false\n"); + return; + } *dest_vmids = (struct qcom_scm_vmperm){VMID_HLOS, PERM_READ|PERM_WRITE}; *(dest_vmids + 1) = (struct qcom_scm_vmperm){VMID_MSS_MSA, PERM_READ|PERM_WRITE}; }