From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7326196961559231780==" MIME-Version: 1.0 From: kernel test robot Subject: [avpatel:riscv_aia_v1 9/18] drivers/irqchip/irq-aclint-swi.c:262 aclint_swi_init() warn: 'base' not released on lines: 257. Date: Thu, 08 Jul 2021 09:44:33 +0800 Message-ID: <202107080927.vpWBnLoc-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============7326196961559231780== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Anup Patel tree: https://github.com/avpatel/linux.git riscv_aia_v1 head: e4b6f153340e5471c82603f7b08226ba6e2c6249 commit: 5fc4912d191fc3f4c620e76d500ce19e136d54bf [9/18] irqchip: Add ACLINT= software interrupt driver :::::: branch date: 22 hours ago :::::: commit date: 3 weeks ago config: riscv-randconfig-m031-20210707 (attached as .config) compiler: riscv64-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/irqchip/irq-aclint-swi.c:262 aclint_swi_init() warn: 'base' not rel= eased on lines: 257. vim +/base +262 drivers/irqchip/irq-aclint-swi.c 5fc4912d191fc3 Anup Patel 2021-05-13 188 = 5fc4912d191fc3 Anup Patel 2021-05-13 189 static int __init aclint_swi_ini= t(struct device_node *node, 5fc4912d191fc3 Anup Patel 2021-05-13 190 struct device_node *parent) 5fc4912d191fc3 Anup Patel 2021-05-13 191 { 5fc4912d191fc3 Anup Patel 2021-05-13 192 int rc; 5fc4912d191fc3 Anup Patel 2021-05-13 193 void __iomem *base; 5fc4912d191fc3 Anup Patel 2021-05-13 194 struct aclint_swi *swi; 5fc4912d191fc3 Anup Patel 2021-05-13 195 u32 i, nr_irqs, nr_cpus =3D 0; 5fc4912d191fc3 Anup Patel 2021-05-13 196 = 5fc4912d191fc3 Anup Patel 2021-05-13 197 /* Map the registers */ 5fc4912d191fc3 Anup Patel 2021-05-13 198 base =3D of_iomap(node, 0); 5fc4912d191fc3 Anup Patel 2021-05-13 199 if (!base) { 5fc4912d191fc3 Anup Patel 2021-05-13 200 pr_err("%pOFP: could not map r= egisters\n", node); 5fc4912d191fc3 Anup Patel 2021-05-13 201 return -ENODEV; 5fc4912d191fc3 Anup Patel 2021-05-13 202 } 5fc4912d191fc3 Anup Patel 2021-05-13 203 = 5fc4912d191fc3 Anup Patel 2021-05-13 204 /* Iterarte over each target CP= U connected with this ACLINT */ 5fc4912d191fc3 Anup Patel 2021-05-13 205 nr_irqs =3D of_irq_count(node); 5fc4912d191fc3 Anup Patel 2021-05-13 206 for (i =3D 0; i < nr_irqs; i++)= { 5fc4912d191fc3 Anup Patel 2021-05-13 207 struct of_phandle_args parent; 5fc4912d191fc3 Anup Patel 2021-05-13 208 int cpu, hartid; 5fc4912d191fc3 Anup Patel 2021-05-13 209 = 5fc4912d191fc3 Anup Patel 2021-05-13 210 if (of_irq_parse_one(node, i, = &parent)) { 5fc4912d191fc3 Anup Patel 2021-05-13 211 pr_err("%pOFP: failed to pars= e irq %d.\n", 5fc4912d191fc3 Anup Patel 2021-05-13 212 node, i); 5fc4912d191fc3 Anup Patel 2021-05-13 213 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 214 } 5fc4912d191fc3 Anup Patel 2021-05-13 215 = 5fc4912d191fc3 Anup Patel 2021-05-13 216 if (parent.args[0] !=3D RV_IRQ= _SOFT) { 5fc4912d191fc3 Anup Patel 2021-05-13 217 pr_err("%pOFP: invalid irq %d= (hwirq %d)\n", 5fc4912d191fc3 Anup Patel 2021-05-13 218 node, i, parent.args[0= ]); 5fc4912d191fc3 Anup Patel 2021-05-13 219 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 220 } 5fc4912d191fc3 Anup Patel 2021-05-13 221 = 5fc4912d191fc3 Anup Patel 2021-05-13 222 hartid =3D riscv_of_parent_har= tid(parent.np); 5fc4912d191fc3 Anup Patel 2021-05-13 223 if (hartid < 0) { 5fc4912d191fc3 Anup Patel 2021-05-13 224 pr_warn("failed to parse hart= ID for irq %d.\n", i); 5fc4912d191fc3 Anup Patel 2021-05-13 225 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 226 } 5fc4912d191fc3 Anup Patel 2021-05-13 227 = 5fc4912d191fc3 Anup Patel 2021-05-13 228 cpu =3D riscv_hartid_to_cpuid(= hartid); 5fc4912d191fc3 Anup Patel 2021-05-13 229 if (cpu < 0) { 5fc4912d191fc3 Anup Patel 2021-05-13 230 pr_warn("Invalid cpuid for ir= q %d\n", i); 5fc4912d191fc3 Anup Patel 2021-05-13 231 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 232 } 5fc4912d191fc3 Anup Patel 2021-05-13 233 = 5fc4912d191fc3 Anup Patel 2021-05-13 234 /* Find parent domain and regi= ster chained handler */ 5fc4912d191fc3 Anup Patel 2021-05-13 235 if (!aclint_swi_parent_irq && = irq_find_host(parent.np)) { 5fc4912d191fc3 Anup Patel 2021-05-13 236 aclint_swi_parent_irq =3D irq= _of_parse_and_map(node, i); 5fc4912d191fc3 Anup Patel 2021-05-13 237 if (aclint_swi_parent_irq) { 5fc4912d191fc3 Anup Patel 2021-05-13 238 irq_set_chained_handler(acli= nt_swi_parent_irq, 5fc4912d191fc3 Anup Patel 2021-05-13 239 aclint_swi_handle_irq); 5fc4912d191fc3 Anup Patel 2021-05-13 240 cpuhp_setup_state(CPUHP_AP_O= NLINE_DYN, 5fc4912d191fc3 Anup Patel 2021-05-13 241 "irqchip/riscv/aclint-swi:s= tarting", 5fc4912d191fc3 Anup Patel 2021-05-13 242 aclint_swi_starting_cpu, 5fc4912d191fc3 Anup Patel 2021-05-13 243 aclint_swi_dying_cpu); 5fc4912d191fc3 Anup Patel 2021-05-13 244 } 5fc4912d191fc3 Anup Patel 2021-05-13 245 } 5fc4912d191fc3 Anup Patel 2021-05-13 246 = 5fc4912d191fc3 Anup Patel 2021-05-13 247 swi =3D per_cpu_ptr(&aclint_sw= is, cpu); 5fc4912d191fc3 Anup Patel 2021-05-13 248 swi->sip_reg =3D base + i * si= zeof(u32); 5fc4912d191fc3 Anup Patel 2021-05-13 249 writel(0, swi->sip_reg); 5fc4912d191fc3 Anup Patel 2021-05-13 250 = 5fc4912d191fc3 Anup Patel 2021-05-13 251 nr_cpus++; 5fc4912d191fc3 Anup Patel 2021-05-13 252 } 5fc4912d191fc3 Anup Patel 2021-05-13 253 = 5fc4912d191fc3 Anup Patel 2021-05-13 254 /* Create the IPI domain for AC= LINT SWI device */ 5fc4912d191fc3 Anup Patel 2021-05-13 255 rc =3D aclint_swi_domain_init(n= ode); 5fc4912d191fc3 Anup Patel 2021-05-13 256 if (rc) 5fc4912d191fc3 Anup Patel 2021-05-13 257 return rc; 5fc4912d191fc3 Anup Patel 2021-05-13 258 = 5fc4912d191fc3 Anup Patel 2021-05-13 259 /* Announce the ACLINT SWI devi= ce */ 5fc4912d191fc3 Anup Patel 2021-05-13 260 pr_info("%pOFP: providing IPIs = for %d CPUs\n", node, nr_cpus); 5fc4912d191fc3 Anup Patel 2021-05-13 261 = 5fc4912d191fc3 Anup Patel 2021-05-13 @262 return 0; 5fc4912d191fc3 Anup Patel 2021-05-13 263 } 5fc4912d191fc3 Anup Patel 2021-05-13 264 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============7326196961559231780== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============7326196961559231780==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2856975628114745453==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: [avpatel:riscv_aia_v1 9/18] drivers/irqchip/irq-aclint-swi.c:262 aclint_swi_init() warn: 'base' not released on lines: 257. Date: Thu, 08 Jul 2021 15:06:18 +0300 Message-ID: <202107080927.vpWBnLoc-lkp@intel.com> List-Id: --===============2856975628114745453== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: https://github.com/avpatel/linux.git riscv_aia_v1 head: e4b6f153340e5471c82603f7b08226ba6e2c6249 commit: 5fc4912d191fc3f4c620e76d500ce19e136d54bf [9/18] irqchip: Add ACLINT= software interrupt driver config: riscv-randconfig-m031-20210707 (attached as .config) compiler: riscv64-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/irqchip/irq-aclint-swi.c:262 aclint_swi_init() warn: 'base' not rel= eased on lines: 257. vim +/base +262 drivers/irqchip/irq-aclint-swi.c 5fc4912d191fc3 Anup Patel 2021-05-13 189 static int __init aclint_swi_ini= t(struct device_node *node, 5fc4912d191fc3 Anup Patel 2021-05-13 190 struct device_node *parent) 5fc4912d191fc3 Anup Patel 2021-05-13 191 { 5fc4912d191fc3 Anup Patel 2021-05-13 192 int rc; 5fc4912d191fc3 Anup Patel 2021-05-13 193 void __iomem *base; 5fc4912d191fc3 Anup Patel 2021-05-13 194 struct aclint_swi *swi; 5fc4912d191fc3 Anup Patel 2021-05-13 195 u32 i, nr_irqs, nr_cpus =3D 0; 5fc4912d191fc3 Anup Patel 2021-05-13 196 = 5fc4912d191fc3 Anup Patel 2021-05-13 197 /* Map the registers */ 5fc4912d191fc3 Anup Patel 2021-05-13 198 base =3D of_iomap(node, 0); ^^^^^^^^^^^^^^^^^^^^^^^^^ 5fc4912d191fc3 Anup Patel 2021-05-13 199 if (!base) { 5fc4912d191fc3 Anup Patel 2021-05-13 200 pr_err("%pOFP: could not map r= egisters\n", node); 5fc4912d191fc3 Anup Patel 2021-05-13 201 return -ENODEV; 5fc4912d191fc3 Anup Patel 2021-05-13 202 } 5fc4912d191fc3 Anup Patel 2021-05-13 203 = 5fc4912d191fc3 Anup Patel 2021-05-13 204 /* Iterarte over each target CP= U connected with this ACLINT */ 5fc4912d191fc3 Anup Patel 2021-05-13 205 nr_irqs =3D of_irq_count(node); 5fc4912d191fc3 Anup Patel 2021-05-13 206 for (i =3D 0; i < nr_irqs; i++)= { 5fc4912d191fc3 Anup Patel 2021-05-13 207 struct of_phandle_args parent; 5fc4912d191fc3 Anup Patel 2021-05-13 208 int cpu, hartid; 5fc4912d191fc3 Anup Patel 2021-05-13 209 = 5fc4912d191fc3 Anup Patel 2021-05-13 210 if (of_irq_parse_one(node, i, = &parent)) { 5fc4912d191fc3 Anup Patel 2021-05-13 211 pr_err("%pOFP: failed to pars= e irq %d.\n", 5fc4912d191fc3 Anup Patel 2021-05-13 212 node, i); 5fc4912d191fc3 Anup Patel 2021-05-13 213 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 214 } 5fc4912d191fc3 Anup Patel 2021-05-13 215 = 5fc4912d191fc3 Anup Patel 2021-05-13 216 if (parent.args[0] !=3D RV_IRQ= _SOFT) { 5fc4912d191fc3 Anup Patel 2021-05-13 217 pr_err("%pOFP: invalid irq %d= (hwirq %d)\n", 5fc4912d191fc3 Anup Patel 2021-05-13 218 node, i, parent.args[0= ]); 5fc4912d191fc3 Anup Patel 2021-05-13 219 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 220 } 5fc4912d191fc3 Anup Patel 2021-05-13 221 = 5fc4912d191fc3 Anup Patel 2021-05-13 222 hartid =3D riscv_of_parent_har= tid(parent.np); 5fc4912d191fc3 Anup Patel 2021-05-13 223 if (hartid < 0) { 5fc4912d191fc3 Anup Patel 2021-05-13 224 pr_warn("failed to parse hart= ID for irq %d.\n", i); 5fc4912d191fc3 Anup Patel 2021-05-13 225 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 226 } 5fc4912d191fc3 Anup Patel 2021-05-13 227 = 5fc4912d191fc3 Anup Patel 2021-05-13 228 cpu =3D riscv_hartid_to_cpuid(= hartid); 5fc4912d191fc3 Anup Patel 2021-05-13 229 if (cpu < 0) { 5fc4912d191fc3 Anup Patel 2021-05-13 230 pr_warn("Invalid cpuid for ir= q %d\n", i); 5fc4912d191fc3 Anup Patel 2021-05-13 231 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 232 } 5fc4912d191fc3 Anup Patel 2021-05-13 233 = 5fc4912d191fc3 Anup Patel 2021-05-13 234 /* Find parent domain and regi= ster chained handler */ 5fc4912d191fc3 Anup Patel 2021-05-13 235 if (!aclint_swi_parent_irq && = irq_find_host(parent.np)) { 5fc4912d191fc3 Anup Patel 2021-05-13 236 aclint_swi_parent_irq =3D irq= _of_parse_and_map(node, i); 5fc4912d191fc3 Anup Patel 2021-05-13 237 if (aclint_swi_parent_irq) { 5fc4912d191fc3 Anup Patel 2021-05-13 238 irq_set_chained_handler(acli= nt_swi_parent_irq, 5fc4912d191fc3 Anup Patel 2021-05-13 239 aclint_swi_handle_irq); 5fc4912d191fc3 Anup Patel 2021-05-13 240 cpuhp_setup_state(CPUHP_AP_O= NLINE_DYN, 5fc4912d191fc3 Anup Patel 2021-05-13 241 "irqchip/riscv/aclint-swi:s= tarting", 5fc4912d191fc3 Anup Patel 2021-05-13 242 aclint_swi_starting_cpu, 5fc4912d191fc3 Anup Patel 2021-05-13 243 aclint_swi_dying_cpu); 5fc4912d191fc3 Anup Patel 2021-05-13 244 } 5fc4912d191fc3 Anup Patel 2021-05-13 245 } 5fc4912d191fc3 Anup Patel 2021-05-13 246 = 5fc4912d191fc3 Anup Patel 2021-05-13 247 swi =3D per_cpu_ptr(&aclint_sw= is, cpu); 5fc4912d191fc3 Anup Patel 2021-05-13 248 swi->sip_reg =3D base + i * si= zeof(u32); 5fc4912d191fc3 Anup Patel 2021-05-13 249 writel(0, swi->sip_reg); 5fc4912d191fc3 Anup Patel 2021-05-13 250 = 5fc4912d191fc3 Anup Patel 2021-05-13 251 nr_cpus++; 5fc4912d191fc3 Anup Patel 2021-05-13 252 } 5fc4912d191fc3 Anup Patel 2021-05-13 253 = 5fc4912d191fc3 Anup Patel 2021-05-13 254 /* Create the IPI domain for AC= LINT SWI device */ 5fc4912d191fc3 Anup Patel 2021-05-13 255 rc =3D aclint_swi_domain_init(n= ode); 5fc4912d191fc3 Anup Patel 2021-05-13 256 if (rc) 5fc4912d191fc3 Anup Patel 2021-05-13 257 return rc; This code doesn't do any cleanup. 5fc4912d191fc3 Anup Patel 2021-05-13 258 = 5fc4912d191fc3 Anup Patel 2021-05-13 259 /* Announce the ACLINT SWI devi= ce */ 5fc4912d191fc3 Anup Patel 2021-05-13 260 pr_info("%pOFP: providing IPIs = for %d CPUs\n", node, nr_cpus); 5fc4912d191fc3 Anup Patel 2021-05-13 261 = 5fc4912d191fc3 Anup Patel 2021-05-13 @262 return 0; 5fc4912d191fc3 Anup Patel 2021-05-13 263 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2856975628114745453==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05F7AC07E96 for ; Thu, 8 Jul 2021 12:07:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D9B0E61483 for ; Thu, 8 Jul 2021 12:07:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231882AbhGHMKF (ORCPT ); Thu, 8 Jul 2021 08:10:05 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:50564 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231795AbhGHMKE (ORCPT ); Thu, 8 Jul 2021 08:10:04 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 168Bv1Ca012170; Thu, 8 Jul 2021 12:06:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : mime-version; s=corp-2020-01-29; bh=NtN8YnO0A3CU0EUvDp3W7MmuM/OLLh5QOipwUnRhlNA=; b=ObirnAUOsVeFVKzY3+T+jiHS5CU8KHMlKW/l6bwjUikEPc7nhr3rsEvSMVJrRM38aRQM hI3wFPiQnHOtuXT8FiUNxXquctwmtOoG/kPo7wI+DqkCmDUaXe9V+xH3VlLUny5J5+/t ihv0Gt500y2KO80luzjoH4fylT+QLrWB/wq0BrPIPe3hvYge4XORBhRJcbNF8CnpUb8b bPzfhKYpyOjBMsnSDEhhX78+HY1Sb21UMjC94MiUZa3zNPnC0Nj04No05Goc/+7IRqcL XLEkW6v4yzQhQCWJ6UVemxXkF1eVkWpKz3aWvgVBtXlHJcBw07TX8/1oa219IfDkh5x1 zg== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 39n7wrttax-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 08 Jul 2021 12:06:43 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 168C6Dis129885; Thu, 8 Jul 2021 12:06:42 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2042.outbound.protection.outlook.com [104.47.74.42]) by userp3030.oracle.com with ESMTP id 39jd15fqqc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 08 Jul 2021 12:06:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GIB6JgtkYzScy3DEwzzyl8bqQCf4E7NmrTuaXeWkP2zqUeJnpYrb8D4j6X7wLLgGsiOb+fl3eah3T7sWHCE9fgVpiUARen6ufBTAf9qFbwtJi9BWDjNnl92MCMSKlUVGYGH0eIvA5+nxIX3oQk/784Fs2UdX5s+6XIWExTJoHMXr7CKPnL0VYwbydDi3EQqnSgwiweciyEhbhOprMqGcMJOXoWTQ61iLfAoZBjcBi8IV16TABB3/fUajNSd4A9T7a/TnJGLsjuRMDzFwvtUbqBRyCYDnSt7Cu36lX9y7viJfM2fHTBlitw9tDqjIBkB1U9roIVj4tircb1pJsB4QQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NtN8YnO0A3CU0EUvDp3W7MmuM/OLLh5QOipwUnRhlNA=; b=B+kMROoMfsnD0waAkeMRlVHy+lxXI9QyhM3XJiVhjYuo738gVOJ/LKCKtzS1cVlE00Kx8ESOcv4mADgUi/6jMDzd+8Vw9AT25ShJaZPjTP0DfOdhs3dkI9xYbpEClWYnXQOYFDsXTEmB/7Hn3vFu6p068q7naaQl9DtMdSQmQ9IMAjx9WTy8k8n5D8oY3iA7Hex5P7HGK8ea1e3YBOLSXIOlYl/uxN2KOZ+h5mw0+g3+oMj8ziUM0A7LT7Z4tlwSOtozDlR2Tn0MaxNYD+cfKgRT82/uOrFPnkUe5/PlC6kbU3IsDjD/Buv9Nf+YkXT+yCToWxkHpimogLNrdjKc5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NtN8YnO0A3CU0EUvDp3W7MmuM/OLLh5QOipwUnRhlNA=; b=ENYBjeUZrYkfuCbXg/xeoIIsQAkdsaF7JK9tpfA0wpKUmtSnKtm8HUKpB87k3/OOTrGYjKUEwDrE44jaakYlKscNmLFxAdaTYOlkdoTOPSbI0/nY0YJClQKsSkXTXMwrrlO52yQzZbbbOUu2ueLJ1/Rxtm8pHljsOT6JaGBSexs= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by MWHPR1001MB2398.namprd10.prod.outlook.com (2603:10b6:301:2f::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.23; Thu, 8 Jul 2021 12:06:40 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::3413:3c61:5067:ba73]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::3413:3c61:5067:ba73%5]) with mapi id 15.20.4287.033; Thu, 8 Jul 2021 12:06:40 +0000 Date: Thu, 8 Jul 2021 15:06:18 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Anup Patel Cc: lkp@intel.com, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org Subject: [avpatel:riscv_aia_v1 9/18] drivers/irqchip/irq-aclint-swi.c:262 aclint_swi_init() warn: 'base' not released on lines: 257. Message-ID: <202107080927.vpWBnLoc-lkp@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: JNXP275CA0034.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:18::22) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kadam (102.222.70.252) by JNXP275CA0034.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:18::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.19 via Frontend Transport; Thu, 8 Jul 2021 12:06:34 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8315b9c2-f2d0-447b-fb3a-08d94208d7eb X-MS-TrafficTypeDiagnostic: MWHPR1001MB2398: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:425; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7UoK3ALSFIRZch/RZZsQoSYRhr/il5XuQxtbdMs5T3dmR+g8sSwzGJ1MEUr81OzVWXOH1IT3CWWfVKBLvwaAAZii4ti0cuKZ1i8CUPmYclKIr1nc6ahImhIEAkYXN6u3OQAqH9CWLgC110aznAiFdZNh5OYXLEdTf5bb3FXlEaCUC739UVMmAtD9BpEdmAgmOYdhLJhHeuh5hDqegreEw9juMaJ1jDGcnT4Z9A2/TB4YnRORQetzSkDPEyi7ICnB1b9xG3yV4DkqDDrV/oIis0n3pcLMHehHC9I8FqIWFl0zTzupM5bolo8E9uriI1hVqAiZHqOsDO3WFCQWL9pJS2TLWBbbP/N84+XkVFdOkMA6hsqcCNNUeQJ4ZvzL82gEpvPMcZGdbkTPw4Y7pHJvnitghv7dnQp4MkHGK/rKYlu2nU0QHxuIpSB4Wl+6kkv9jsqM0HygYCpMN5ra9OESR29Xv2Myeg/nSdSrp4nHNqKhZlh4o7CC6cDfUpi8FjCeFlhrMh/i4OIYt0WEl6v9WV0q6Ca3npxEJ8kCjLvAZ3F92Sr38CHBVbzLQTmSxOCA34b/N2NcP9M9AgFplqwYCCZfhZJpwBGIKeIYrXGsHZrOi830OGyVVfZY4f2TkCzpPecJkTYyosXBC9hwxEzxM4tmdqXApIqoNgSweDlyMQZrHE1Wg/3m2ew0mSIxYGPCKsPvhjX8O2Ib3SOLGmIdxuyocRliDZgmxvdz9WFEPZT6AruRe7EG/sNqSGkPqd0Nw2FwAoN/jrGr1NUUQpVjIW7y8Sxlr6uN2kkedYLEvXiu5S2DTN6V2dbQiwWVpeGwGnUW/yP7YGH0ZI4/P2DTjw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2365.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(396003)(136003)(376002)(346002)(39860400002)(8936002)(6916009)(5660300002)(966005)(186003)(6666004)(83380400001)(6486002)(66476007)(316002)(9686003)(38100700002)(26005)(478600001)(36756003)(44832011)(38350700002)(86362001)(956004)(8676002)(66946007)(2906002)(6496006)(52116002)(66556008)(4326008)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o/IIsQxZ+frVJ0lkLtlvPz3vvdNi4QJGJ/45xYqBnEtcIrd+/iEceWNeYwI+?= =?us-ascii?Q?fuxXPawnhwVnECSfs24YXBrhfpp8mF6vcUcIkbbrDQq8+dOCm5/AKq4RhJS7?= =?us-ascii?Q?hnfbjKocOF/JeHrNt+tHvpbYsnukQqNz0VzA6eZ6ytpnYmW7QxWEyk8t28U8?= =?us-ascii?Q?ASZOVUtjc8m+XmmmfFyhNM2EK4dJhGQEAG3Sa7MN8XquVOOjZUGNW0f9soBl?= =?us-ascii?Q?idAVy5fHqoBpkiMjiC7NV4x0mp2NZqrKdwc5K5JI381h45j+0cytlKA27a1r?= =?us-ascii?Q?Y55pjJT0Q6u5tcxrKt5sQ5CpL4q/nY1LII4FECXNqwXPvHIB2upEwTEyTO/s?= =?us-ascii?Q?EwhdjH6e/77i0quuFoQkAuwflBBDJ6Jpwsi07kdrss+Qj+7119dXHOK8Th3w?= =?us-ascii?Q?yWR6iE/Jy0RJvaIXiuwj+A/lVPuYDxjlqPeMw/eXWcS2r7qjMmzmm3LriBe1?= =?us-ascii?Q?bOyJ0NPlOCVx3KWm1Gbd7oMKQ+p1N3cuUh+BdCvH4Jd8x9d8o7uu9p5mDrba?= =?us-ascii?Q?L8qmULt+bsdK/351nCouamtElFXXrldzFVfPFr2J0DFBLjivI4mw6NNOaked?= =?us-ascii?Q?/ggopRKNxzGctGsIXI1qpSSh+J15Ln1166eDC33WpJZT5TPmCdafy6jCtSMu?= =?us-ascii?Q?bd9hzziTht6apB/wmzYwDRIvp4VxYKQEOiKpFQ0sW8nMM5uVnfCzga6kWpJ2?= =?us-ascii?Q?dxkvHgMLyKYomn+hoDFpq43HG2hue5TsAF9CkLnjZcG1X+zmbV8qWxR/BlDW?= =?us-ascii?Q?ehUwwTj9LN4qPxcDV5DimO2tEIw+rs8Kmg8uqyU8S3VLo4YLPoP7E5+9MQwI?= =?us-ascii?Q?BryiXNtfI7GRNnV0b5yW2XgOqosc99BKZpBFYNMLm7TJpgMOg73KySWId48w?= =?us-ascii?Q?zUEpDNP9b2tkK9RGTQaeGUqfvX/gmRlakzQuhDGHO1dc/kAez8Rfjfwp5pAb?= =?us-ascii?Q?QUyFSNckJ5wgarkB2wfy7P694C8XkZaYPrO3s6s2APjPEtmcCWzesj7NHBar?= =?us-ascii?Q?XT3p8DkaaakoYFai7XVT/tKAvZvBj2nduN6MiD1UkH8/vYI2K23dEk5zuOsM?= =?us-ascii?Q?gvPpgZw4/YHttanywVW8KvoEFRQkaGlne9t/pIViGokm5t8xuG8/qQ8HbC3o?= =?us-ascii?Q?q6Hv30qbGieaFUjiNgHuv9dVgIQwvB2Eoq1jq8tEJpbhfTLUQltHqXTss7fw?= =?us-ascii?Q?2PT0veXqAnszI36ulst/vxZEbMAdmyCcXPupcnsxm/gKR9ynwhfxxq4Ie8qH?= =?us-ascii?Q?UgW1VB/Thk8Lk/7LNrYiUNkLZ2o3sX8DD5CkADNVHON6g/NQ3CbMxbh/WUb5?= =?us-ascii?Q?Ki9cuDqxt82zCFarWUR84Hak?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8315b9c2-f2d0-447b-fb3a-08d94208d7eb X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2021 12:06:40.0793 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Yr+6ppdbKfJKm18V34esWVosixRsHKmVRRWscrRsfyEqvONO29+5DChitBgUTNU+dpDYSJ14gaErhtmjr6zrAKOSB/xzdgKNkW3qj5sHu4k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1001MB2398 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10038 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 suspectscore=0 phishscore=0 mlxscore=0 bulkscore=0 adultscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107080068 X-Proofpoint-ORIG-GUID: ZATGdsCOZuMR9S6MEfNXrQnhOQ-m13mu X-Proofpoint-GUID: ZATGdsCOZuMR9S6MEfNXrQnhOQ-m13mu Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org tree: https://github.com/avpatel/linux.git riscv_aia_v1 head: e4b6f153340e5471c82603f7b08226ba6e2c6249 commit: 5fc4912d191fc3f4c620e76d500ce19e136d54bf [9/18] irqchip: Add ACLINT software interrupt driver config: riscv-randconfig-m031-20210707 (attached as .config) compiler: riscv64-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/irqchip/irq-aclint-swi.c:262 aclint_swi_init() warn: 'base' not released on lines: 257. vim +/base +262 drivers/irqchip/irq-aclint-swi.c 5fc4912d191fc3 Anup Patel 2021-05-13 189 static int __init aclint_swi_init(struct device_node *node, 5fc4912d191fc3 Anup Patel 2021-05-13 190 struct device_node *parent) 5fc4912d191fc3 Anup Patel 2021-05-13 191 { 5fc4912d191fc3 Anup Patel 2021-05-13 192 int rc; 5fc4912d191fc3 Anup Patel 2021-05-13 193 void __iomem *base; 5fc4912d191fc3 Anup Patel 2021-05-13 194 struct aclint_swi *swi; 5fc4912d191fc3 Anup Patel 2021-05-13 195 u32 i, nr_irqs, nr_cpus = 0; 5fc4912d191fc3 Anup Patel 2021-05-13 196 5fc4912d191fc3 Anup Patel 2021-05-13 197 /* Map the registers */ 5fc4912d191fc3 Anup Patel 2021-05-13 198 base = of_iomap(node, 0); ^^^^^^^^^^^^^^^^^^^^^^^^^ 5fc4912d191fc3 Anup Patel 2021-05-13 199 if (!base) { 5fc4912d191fc3 Anup Patel 2021-05-13 200 pr_err("%pOFP: could not map registers\n", node); 5fc4912d191fc3 Anup Patel 2021-05-13 201 return -ENODEV; 5fc4912d191fc3 Anup Patel 2021-05-13 202 } 5fc4912d191fc3 Anup Patel 2021-05-13 203 5fc4912d191fc3 Anup Patel 2021-05-13 204 /* Iterarte over each target CPU connected with this ACLINT */ 5fc4912d191fc3 Anup Patel 2021-05-13 205 nr_irqs = of_irq_count(node); 5fc4912d191fc3 Anup Patel 2021-05-13 206 for (i = 0; i < nr_irqs; i++) { 5fc4912d191fc3 Anup Patel 2021-05-13 207 struct of_phandle_args parent; 5fc4912d191fc3 Anup Patel 2021-05-13 208 int cpu, hartid; 5fc4912d191fc3 Anup Patel 2021-05-13 209 5fc4912d191fc3 Anup Patel 2021-05-13 210 if (of_irq_parse_one(node, i, &parent)) { 5fc4912d191fc3 Anup Patel 2021-05-13 211 pr_err("%pOFP: failed to parse irq %d.\n", 5fc4912d191fc3 Anup Patel 2021-05-13 212 node, i); 5fc4912d191fc3 Anup Patel 2021-05-13 213 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 214 } 5fc4912d191fc3 Anup Patel 2021-05-13 215 5fc4912d191fc3 Anup Patel 2021-05-13 216 if (parent.args[0] != RV_IRQ_SOFT) { 5fc4912d191fc3 Anup Patel 2021-05-13 217 pr_err("%pOFP: invalid irq %d (hwirq %d)\n", 5fc4912d191fc3 Anup Patel 2021-05-13 218 node, i, parent.args[0]); 5fc4912d191fc3 Anup Patel 2021-05-13 219 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 220 } 5fc4912d191fc3 Anup Patel 2021-05-13 221 5fc4912d191fc3 Anup Patel 2021-05-13 222 hartid = riscv_of_parent_hartid(parent.np); 5fc4912d191fc3 Anup Patel 2021-05-13 223 if (hartid < 0) { 5fc4912d191fc3 Anup Patel 2021-05-13 224 pr_warn("failed to parse hart ID for irq %d.\n", i); 5fc4912d191fc3 Anup Patel 2021-05-13 225 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 226 } 5fc4912d191fc3 Anup Patel 2021-05-13 227 5fc4912d191fc3 Anup Patel 2021-05-13 228 cpu = riscv_hartid_to_cpuid(hartid); 5fc4912d191fc3 Anup Patel 2021-05-13 229 if (cpu < 0) { 5fc4912d191fc3 Anup Patel 2021-05-13 230 pr_warn("Invalid cpuid for irq %d\n", i); 5fc4912d191fc3 Anup Patel 2021-05-13 231 continue; 5fc4912d191fc3 Anup Patel 2021-05-13 232 } 5fc4912d191fc3 Anup Patel 2021-05-13 233 5fc4912d191fc3 Anup Patel 2021-05-13 234 /* Find parent domain and register chained handler */ 5fc4912d191fc3 Anup Patel 2021-05-13 235 if (!aclint_swi_parent_irq && irq_find_host(parent.np)) { 5fc4912d191fc3 Anup Patel 2021-05-13 236 aclint_swi_parent_irq = irq_of_parse_and_map(node, i); 5fc4912d191fc3 Anup Patel 2021-05-13 237 if (aclint_swi_parent_irq) { 5fc4912d191fc3 Anup Patel 2021-05-13 238 irq_set_chained_handler(aclint_swi_parent_irq, 5fc4912d191fc3 Anup Patel 2021-05-13 239 aclint_swi_handle_irq); 5fc4912d191fc3 Anup Patel 2021-05-13 240 cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, 5fc4912d191fc3 Anup Patel 2021-05-13 241 "irqchip/riscv/aclint-swi:starting", 5fc4912d191fc3 Anup Patel 2021-05-13 242 aclint_swi_starting_cpu, 5fc4912d191fc3 Anup Patel 2021-05-13 243 aclint_swi_dying_cpu); 5fc4912d191fc3 Anup Patel 2021-05-13 244 } 5fc4912d191fc3 Anup Patel 2021-05-13 245 } 5fc4912d191fc3 Anup Patel 2021-05-13 246 5fc4912d191fc3 Anup Patel 2021-05-13 247 swi = per_cpu_ptr(&aclint_swis, cpu); 5fc4912d191fc3 Anup Patel 2021-05-13 248 swi->sip_reg = base + i * sizeof(u32); 5fc4912d191fc3 Anup Patel 2021-05-13 249 writel(0, swi->sip_reg); 5fc4912d191fc3 Anup Patel 2021-05-13 250 5fc4912d191fc3 Anup Patel 2021-05-13 251 nr_cpus++; 5fc4912d191fc3 Anup Patel 2021-05-13 252 } 5fc4912d191fc3 Anup Patel 2021-05-13 253 5fc4912d191fc3 Anup Patel 2021-05-13 254 /* Create the IPI domain for ACLINT SWI device */ 5fc4912d191fc3 Anup Patel 2021-05-13 255 rc = aclint_swi_domain_init(node); 5fc4912d191fc3 Anup Patel 2021-05-13 256 if (rc) 5fc4912d191fc3 Anup Patel 2021-05-13 257 return rc; This code doesn't do any cleanup. 5fc4912d191fc3 Anup Patel 2021-05-13 258 5fc4912d191fc3 Anup Patel 2021-05-13 259 /* Announce the ACLINT SWI device */ 5fc4912d191fc3 Anup Patel 2021-05-13 260 pr_info("%pOFP: providing IPIs for %d CPUs\n", node, nr_cpus); 5fc4912d191fc3 Anup Patel 2021-05-13 261 5fc4912d191fc3 Anup Patel 2021-05-13 @262 return 0; 5fc4912d191fc3 Anup Patel 2021-05-13 263 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org