{"id":2227811,"url":"http://patchwork.ozlabs.org/api/patches/2227811/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260424094913.522123-3-mahesh.vaidya@altera.com/","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/projects/28/?format=json","name":"Linux PCI development","link_name":"linux-pci","list_id":"linux-pci.vger.kernel.org","list_email":"linux-pci@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260424094913.522123-3-mahesh.vaidya@altera.com>","list_archive_url":null,"date":"2026-04-24T09:49:12","name":"[2/3] PCI: altera: fix resource leaks on probe failure","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"112f2cdb692c9af54da6c54af1d6a33561f08047","submitter":{"id":92067,"url":"http://patchwork.ozlabs.org/api/people/92067/?format=json","name":"Mahesh Vaidya","email":"mahesh.vaidya@altera.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260424094913.522123-3-mahesh.vaidya@altera.com/mbox/","series":[{"id":501332,"url":"http://patchwork.ozlabs.org/api/series/501332/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/list/?series=501332","date":"2026-04-24T09:49:10","name":"PCI: altera: Add Agilex 5 PCIe Root Port support","version":1,"mbox":"http://patchwork.ozlabs.org/series/501332/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227811/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227811/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-pci+bounces-53130-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=altera.com header.i=@altera.com header.a=rsa-sha256\n header.s=selector2 header.b=r0lft6Pp;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53130-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com\n header.b=\"r0lft6Pp\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.61.34","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=altera.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=altera.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=altera.com;"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g27Ws3ZDGz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 19:51:21 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 60E33303204B\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 09:49:46 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id AA1B72E7F2C;\n\tFri, 24 Apr 2026 09:49:45 +0000 (UTC)","from DM1PR04CU001.outbound.protection.outlook.com\n (mail-centralusazon11010034.outbound.protection.outlook.com [52.101.61.34])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EC663090C6;\n\tFri, 24 Apr 2026 09:49:44 +0000 (UTC)","from SA1PR03MB6498.namprd03.prod.outlook.com (2603:10b6:806:1c5::7)\n by DM4PR03MB5982.namprd03.prod.outlook.com (2603:10b6:5:389::21) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Fri, 24 Apr\n 2026 09:49:42 +0000","from SA1PR03MB6498.namprd03.prod.outlook.com\n ([fe80::feea:da58:faeb:9ebc]) by SA1PR03MB6498.namprd03.prod.outlook.com\n ([fe80::feea:da58:faeb:9ebc%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 09:49:42 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777024185; cv=fail;\n b=ZZV+prETRY1RCeI3MdbYCJYZpGaiRMwGMDJufDdKmgMaYFuFEIjuB/uJ/qeosd9Pl2clRofRULgvF1uOvAkVgPAbCIzseHhmAFo0+1L54Yx/D9WdyUVXmU5zOvQBTpnygdJc79sf4MS6VSlHKgcLPeBLfznJxU0YTetZpCAn+/s=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Hg30sTlnOA+5CZ+nlT8VZSaOm3Ca+Rquwn0vW7Xv+GIq/ylzWvU02+SJo7wdL0d7KA9Fplpp2Uhlgjn+l3MjIHINd/JGnPayWCUYmzrtS7/0VQ3KIzdVXktuNL50l2s2Ujf5LpOLSvbM/sAxwByoPwomVMzJRuvUU0u57M38Q5AkYz3ncqDfVMruN/+DY0zra8h5DbwAPaD85SpoGXTZonvywu2DZHeGEazqpxeHnaevBakKtiQphhjyEda45YkLNiqsXRRHfWKFpO3d5GaKVJwpKBYSnQgZdFudB18ALrjW+jbje64b85yHOeiBf8kPmsxqGMkjp9kBtLer3fTYmw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777024185; c=relaxed/simple;\n\tbh=bhRFNaJqkPWBqwBF6NWfYI1pH0nREqZplwYGqVUASh4=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=qzefznjJcICeJvz1DC0xNJDg4otXrWLM7WX/sLwAU5gPkTe6P0WBSZ/hhcnjgohACYnkH/D+JELljiPXVFYLTMMGddckAVfBepOpTwCjquEyyIt49cz6CBSi0KqX/AQ6k4gdOdrXyCpHQTRTIkUjkfrUWQJdMHgHGbypjjyGplQ=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=ivJMs2Y76+V7A/H3pm3TU3muagmoXA8CrAUAszpgFRk=;\n b=drm4Wi1BgqpoGfjVmRM5LYhGvGyWgu8gbp4d+dagY8wU13CatCQHTDFtSe6lw3eszQOMIs4S93dpcUIWaEE3BQa8ZvKLYMJPnITjzM1ujAjjnbEqtNZTFO9679ASwA75+xQMRkaJY3bSnwKDU65F8IBOAz25r3cASLfEnWvnJoLT016/+U+3iUltbX4G106wR/k3gqNonyit/I9jMk+UXD0d5S6L/HxEhbWgdCUflZRCh2VHBnU2eboIdaegf0Dcsf9wemmi8AIKcVE5ASn4AVI6TNci+DEHdc98IGK2v15Z1aOGCzkSB31Cophkrl3p0rt+s0FiSh//gr6OJrCQag=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=altera.com;\n spf=pass smtp.mailfrom=altera.com;\n dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com\n header.b=r0lft6Pp; arc=fail smtp.client-ip=52.101.61.34","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com;\n dkim=pass header.d=altera.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=ivJMs2Y76+V7A/H3pm3TU3muagmoXA8CrAUAszpgFRk=;\n b=r0lft6Ppq3BW8YoK2iNrB4XstRAXsgkkA6sHtp2k7Ms6NQoAkB12UNZodC0S1dEFirNxuS20XKKOEWXE+TQSGeR3uFxFVH13tco2mtTlOQVel0Zj0OPsO8E/taIhJyUWaAirz9SjIACcnh2RMm30dYS8Wni+j5yay7WtyB/maM6LD4dYLryxlI8B1HUJ1CAr9HLciEqmp6wHl6slc9wCKkAW7oZyH0l+Q0yDFGU31YS+U3TJcNiRf331SD+80BqzJywp+3djrIj9kfKBz8xcOxgyWMbNE+5Pg1HE35Tn+D1lFvfhkM0apPkPsgqY1QARDbi+We2lWWUfElckDsSXOg==","From":"Mahesh Vaidya <mahesh.vaidya@altera.com>","To":"joyce.ooi@intel.com,\n\tlpieralisi@kernel.org,\n\tkwilczynski@kernel.org,\n\tmani@kernel.org,\n\trobh@kernel.org,\n\tbhelgaas@google.com,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org","Cc":"linux-pci@vger.kernel.org,\n\tdevicetree@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tsubhransu.sekhar.prusty@altera.com,\n\tdinguyen@kernel.org,\n\tMahesh Vaidya <mahesh.vaidya@altera.com>","Subject":"[PATCH 2/3] PCI: altera: fix resource leaks on probe failure","Date":"Fri, 24 Apr 2026 02:49:12 -0700","Message-Id":"<20260424094913.522123-3-mahesh.vaidya@altera.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20260424094913.522123-1-mahesh.vaidya@altera.com>","References":"<20260424094913.522123-1-mahesh.vaidya@altera.com>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"SI2PR02CA0014.apcprd02.prod.outlook.com\n (2603:1096:4:194::19) To SA1PR03MB6498.namprd03.prod.outlook.com\n (2603:10b6:806:1c5::7)","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"SA1PR03MB6498:EE_|DM4PR03MB5982:EE_","X-MS-Office365-Filtering-Correlation-Id":"7695c205-8be5-463a-6110-08dea1e6cf12","X-MS-Exchange-AtpMessageProperties":"SA","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|376014|7416014|366016|1800799024|55112099003|56012099003|18002099003|22082099003;","X-Microsoft-Antispam-Message-Info":"\n\t5dh3eQEWyKduXqsMBOus5Z5rbKpuXRUpjqxlFge96usXCy/eVN21fx6LHL6hyNgjGjyz5Z2lZJ3eKQYoNWJMFlNGSTrEJZuYAeMWv2bUhIkw20UMaY9uTL8bqzaqVx51HfWMVGhe7WWaEwXJ5o9j6EkqPskYKhjcJRXd85N6jAL3/pWSsMiOuTFbt6iWdLwzTQwv/SCwHQsROMt8l8oLR0yxkL9DJmXBSSU7Oi6qr3RWqFP7q9yoBXcmRNWnc/06cc3BNUB557w0RT1gmGyTWmhMX+aOZz7CNBDpJ++kOpFZ+l9CuKrWfjwakRi7amTittgMpRAoifAA9FZTnR3c8pQ9045pK01p0mb44tI11o4yZVtNS0UevX27cQZCZOcJAJKMQVPO/7Dyjmz4RaMaaXHdKbbfaJt6HGxjPOGnadYeoouNszAL8UaW9MJc1lAZM6VmfNzvbLzATbWkhJqpcCjuli5FGV4FxKask3lWPNbjiLXWNzipAyWE7SzqXtrV7XjrfwtO+70HWCsHHj4/joNFl/fhUkFpOumgEDvszjudG/Xsdlmgvza26kaK2RnWN2AIfdWMjx8KmppDwTCxnBdzdNvRw7hHtK20NM/kYg7UjFrDg+B2llwRUE+naKvckNsuNdjxcM0MNPSYgv1kl/aGZ/kxh79tMblQMV0s1vPRUOPK/pVtQAgUPLtVPlQAqQ3MXi9BigNoY4Ep4oy18xbl4bGAN32D0v8TnJflxUg=","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR03MB6498.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(55112099003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n uMTrJAwOhTWdcpKfIrrbwugkA9I/lV3PsM0WfjG1J4sXWLdKLPVUTdmbdM1tuKw/ESBBQi7KKTrztUBoX+3qie5VCZXTNd9LkA/zUYeVB5paXK8ndOWvFZRxoTAB16QHo9iVsT+KiggrRM2gx4V/oEuLdvQXkhMVMncqfBKPgMbmpOt0XYCMIXWoZzW3E2xzY/V6CKDsKrKFrJ/HFho6aHDD0O5iUt3uDBtOx8/3ggRC+b/wUzQoi6Edrfib3+hnT7+9+KiTQgKy5OPzylqdC2yEYp4e6mBF0siPc4LSm1fF87ByrPnFcYwcUZF2YSYiNHOKESK5x0VpGCL0detvhb1oKPJf0KcjV7CbxrV2SUMFUNhklL4CdbO7jK5rQthYDOgeLpc79AlaWh2QSX18whcu9b1Gvy/CfH5K41REv7pByAqamVS+CzTdQS5T7V7aMzCZ4a81VMOPJ+4XkUsN5Zfja9FWVgg0bMxcC2JMZgKK07CunYKHE7OxndD7XRUS/RfLCIXYZJmj+B696ISatiJT2arIzsIi/+JZCZoeiKF1XoliCW+2LJj4zmmRGRFoSHCEXI6xCDfh+D6RCfl6qMGrmlTnUIn2isc7eBZeA0QSUHMmUy19dcePYwelsGCTAdrf3M3PND9PBMOd699GNWyu3iGjvRBusEv6RRrrPUush9iIsrBgUgRUqdGJCtnzmGrBSX5J5FUmpCitm7+NkbiBkld/SWC3pnTIjBxEQFy+HCJ2zXTsf19VdwnMLyAawdxmi7g0+EsiBngnMv4jvv7yhrnDTtd13z8Sx6E/71OR/ZmicaxKXEZsDnb6kYjAWCmx6Ppi4/jyBvZmHg9jbriRPlmJoyHdp4nd6+rmwuNOmKiA3194ddIRnrhdjI38APdzhgwAPbSUX2RaJcUm29UhomkaYzfnZ9gDFcmo6YbBnKWo+2W0SMjUDYYeO1tJcjePh/iKpF9yoCF9BB79EcitIQHp6JEz43LTiH9lwSXzzYrYOwWfnBQG0jUWzbdo9iLMY0yi0xwun+WL10NMU/TllVvICVnK9EV9omrZLrT6k6EHLzrcM1L3CtS2MmO2NI2BfO0tpXUmvNIxPUZUtKG95OnDmgd/7gXQN75hpqCFGym8rUJcTsDg4jtp4TLPx9QbK1kNt7RMqMphGdButYRIFQfGSUXZW5rHljNfKvlxPjg8GvebmALfjG4yPmDHCNTBBEBTXatYxpEEgQjc1T+t9j0O2kwA9jyGIeCkv7CMTTbyaG7GnAyJRA6CeB25DecWMonDm4vomisVbuPnJyfQQem/YW24SVLEUpWRiZrVAlP/voQsN4cYjDhq4Vy5YnnozXMdxrSMdXeWaSNY7WhHezh4bi9Ew3PbDuVv1NUtaqbYUUnm7MF9Dkj3MuOMgTBn+smZUdcRdAy+oEXhf1FnsdffrMoj/Px7mpWG64mWE+afDylIc5VKbq/ZyWiJbC6TTpiCbJSXUpif6T4wgLkzhYtpJx8uLtuK7aC7mddYy9aev8eA8UqxZqeJal/HN+aymr/OhR9S0/zyVizVJg36ZN8izi7Gz8f3xPcS0E+G4GIX5M+bBO1oS2NAxPFslqiWYBiptWjUaMyL4S0l1a5+aatlnN+Jap7V1bChGKxVeIJAFWljpKKZifMRHu34L9HlCIAB8X8ol3GJnlmLMOgaH6gpHpv9pBWrmFNz8WAqjHMa/WdkggzbBF50FpNGQ98hITIjXgW+RPBnBAlN1g==","X-OriginatorOrg":"altera.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 7695c205-8be5-463a-6110-08dea1e6cf12","X-MS-Exchange-CrossTenant-AuthSource":"SA1PR03MB6498.namprd03.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"24 Apr 2026 09:49:42.4570\n (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"fbd72e03-d4a5-4110-adce-614d51f2077a","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n zdoNl3AvNR/lkYrTC9M8XOS5gPbl1fvw+jxjWtUKn3iekUfJpcHhqXJ1jcsDSCem5aI4y1JsYk9Mp/xdP5qyy+IWZ6BxZ5wwnWuIBAzeN4E=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DM4PR03MB5982"},"content":"The chained IRQ handler is installed in altera_pcie_parse_dt() but\nnever unregistered on probe failure. If any subsequent step in\naltera_pcie_probe() fails, devm frees the pcie struct while the\nhandler still references it. A subsequent interrupt would trigger\na use-after-free.\n\nThe INTx IRQ domain created in altera_pcie_init_irq_domain() is\nsimilarly leaked on probe failure, since the existing cleanup via\naltera_pcie_irq_teardown() is only invoked from the remove path.\n\nMove the handler installation from altera_pcie_parse_dt() into\naltera_pcie_probe() after the IRQ domain is created, and add a\ngoto-based error path so altera_pcie_irq_teardown() is called on\nany failure after handler installation.\n\nFixes: 60f2ee5f1472 (\"PCI: altera: Add Agilex support\")\nSigned-off-by: Mahesh Vaidya <mahesh.vaidya@altera.com>\n---\n drivers/pci/controller/pcie-altera.c | 17 +++++++++++++++--\n 1 file changed, 15 insertions(+), 2 deletions(-)","diff":"diff --git a/drivers/pci/controller/pcie-altera.c b/drivers/pci/controller/pcie-altera.c\nindex 3dbb7adc421c..025ba74d1ee2 100644\n--- a/drivers/pci/controller/pcie-altera.c\n+++ b/drivers/pci/controller/pcie-altera.c\n@@ -891,7 +891,6 @@ static int altera_pcie_parse_dt(struct altera_pcie *pcie)\n \tif (pcie->irq < 0)\n \t\treturn pcie->irq;\n \n-\tirq_set_chained_handler_and_data(pcie->irq, pcie->pcie_data->ops->rp_isr, pcie);\n \treturn 0;\n }\n \n@@ -1020,6 +1019,11 @@ static int altera_pcie_probe(struct platform_device *pdev)\n \t\treturn ret;\n \t}\n \n+\t/* Install chained handler after domain is ready */\n+\tirq_set_chained_handler_and_data(pcie->irq,\n+\t\t\t\t\t pcie->pcie_data->ops->rp_isr,\n+\t\t\t\t\t pcie);\n+\n \tif (pcie->pcie_data->version == ALTERA_PCIE_V1 ||\n \t    pcie->pcie_data->version == ALTERA_PCIE_V2) {\n \t\t/* clear all interrupts */\n@@ -1037,7 +1041,16 @@ static int altera_pcie_probe(struct platform_device *pdev)\n \tbridge->busnr = pcie->root_bus_nr;\n \tbridge->ops = &altera_pcie_ops;\n \n-\treturn pci_host_probe(bridge);\n+\tret = pci_host_probe(bridge);\n+\tif (ret)\n+\t\tgoto err_teardown_irq;\n+\n+\treturn 0;\n+\n+err_teardown_irq:\n+\taltera_pcie_irq_teardown(pcie);\n+\n+\treturn ret;\n }\n \n static void altera_pcie_remove(struct platform_device *pdev)\n","prefixes":["2/3"]}