From 4e5838f8297cc12b470d0c2c34651aa5f3c18ed0 Mon Sep 17 00:00:00 2001 From: Chris Dragan Date: Mon, 21 Feb 2022 01:00:13 -0800 Subject: [PATCH] misc: mods: fix issues from Coverity CID 368887 CID 382069 CID 490237 Bug 3512545 Change-Id: I955bb2cf14a64127cb5243d46ea964cb94ff4f2d Signed-off-by: Chris Dragan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2673080 Tested-by: mobile promotions Reviewed-by: mobile promotions --- drivers/misc/mods/mods_irq.c | 26 +++++++++++++++++--------- drivers/misc/mods/mods_krnl.c | 6 ++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/misc/mods/mods_irq.c b/drivers/misc/mods/mods_irq.c index 85d6c5b0..4eff6f9a 100644 --- a/drivers/misc/mods/mods_irq.c +++ b/drivers/misc/mods/mods_irq.c @@ -1526,21 +1526,29 @@ int esc_mods_map_irq(struct mods_client *client, } hwirq = oirq.args[1]; + /* Get the platform device handle */ pdev = of_find_device_by_node(np); if (of_node_cmp(p->dt_name, "watchdog") == 0) { /* Enable and unmask interrupt for watchdog */ - struct resource *res_src = platform_get_resource(pdev, - IORESOURCE_MEM, 0); - struct resource *res_tke = platform_get_resource(pdev, - IORESOURCE_MEM, 2); - void __iomem *wdt_tke = devm_ioremap(&pdev->dev, - res_tke->start, resource_size(res_tke)); - int wdt_index = ((res_src->start >> 16) & 0xF) - 0xc; + struct resource *res_src = + platform_get_resource(pdev, IORESOURCE_MEM, 0); + struct resource *res_tke = + platform_get_resource(pdev, IORESOURCE_MEM, 2); + void __iomem *wdt_tke = NULL; + int wdt_index; - writel(TOP_TKE_TKEIE_WDT_MASK(wdt_index), wdt_tke + - TOP_TKE_TKEIE(hwirq)); + if (res_tke && res_src) { + wdt_tke = devm_ioremap(&pdev->dev, res_tke->start, + resource_size(res_tke)); + wdt_index = ((res_src->start >> 16) & 0xF) - 0xc; + } + + if (wdt_tke) { + writel(TOP_TKE_TKEIE_WDT_MASK(wdt_index), + wdt_tke + TOP_TKE_TKEIE(hwirq)); + } } error: diff --git a/drivers/misc/mods/mods_krnl.c b/drivers/misc/mods/mods_krnl.c index 75cc284e..c3a20d4a 100644 --- a/drivers/misc/mods/mods_krnl.c +++ b/drivers/misc/mods/mods_krnl.c @@ -1733,6 +1733,11 @@ static int esc_mods_sysctl_write_int(struct mods_client *client, data_size = snprintf(data, sizeof(data), "%lld", (long long)pdata->value); + if (unlikely(data_size < 0)) { + err = data_size; + goto error; + } + memset(&task, 0, sizeof(task)); task.path = pdata->path; task.data = data; @@ -1740,6 +1745,7 @@ static int esc_mods_sysctl_write_int(struct mods_client *client, err = run_write_task(client, &task); +error: LOG_EXT(); return err; }