{"id":2197125,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2197125/?format=json","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/1.0/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},"msgid":"<20260217063856.3759713-4-den@valinux.co.jp>","date":"2026-02-17T06:38:56","name":"[v2,3/3] PCI: endpoint: pci-ep-msi: Fix error unwind and prevent double alloc","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"ed2e6142329df71269fd0cf8e0def145d970d3b4","submitter":{"id":91573,"url":"http://patchwork.ozlabs.org/api/1.0/people/91573/?format=json","name":"Koichiro Den","email":"den@valinux.co.jp"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260217063856.3759713-4-den@valinux.co.jp/mbox/","series":[{"id":492380,"url":"http://patchwork.ozlabs.org/api/1.0/series/492380/?format=json","date":"2026-02-17T06:38:53","name":"PCI: endpoint: Doorbell-related fixes","version":2,"mbox":"http://patchwork.ozlabs.org/series/492380/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2197125/checks/","tags":{},"headers":{"Return-Path":"\n <linux-pci+bounces-47418-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 (1024-bit key;\n unprotected) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.a=rsa-sha256 header.s=selector1 header.b=N0plAydD;\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-47418-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=\"N0plAydD\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.125.97","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=valinux.co.jp","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=valinux.co.jp;"],"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 4fFVPx2cvbz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 17:40:21 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 478E7303C4DE\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 06:39:13 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 35D5F2C21C5;\n\tTue, 17 Feb 2026 06:39:12 +0000 (UTC)","from TYVP286CU001.outbound.protection.outlook.com\n (mail-japaneastazon11021097.outbound.protection.outlook.com [52.101.125.97])\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 7C8C42C0F8E;\n\tTue, 17 Feb 2026 06:39:09 +0000 (UTC)","from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by TY4P286MB7477.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:356::17) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb\n 2026 06:39:05 +0000","from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026\n 06:39:05 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771310352; cv=fail;\n b=H02uEmQy44qH6FSp2o+q+fqprb+RysnBmyuXQU3bFfYjLZ5GNo6r3yv1GCQ2AcS8myDSaLl4o2Ngodz2uGbTnc8JC6VMQZtrURyAKI8y7x6xd3v5zXsxOkqz4GRbUpJ/A21QptgLgf3bUwrilK+dMoPCcEpig8VrVwLMzIskSPo=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=tbosxVjp1zjRnKbi3SVdAn5Orp9JaBDgbwTf/T1vuh79rhH3Y4jH16OFMUTwr5xa1bUz6KrXrq2F67DdHNedN6hvGQHccMFqwE7D0fduIA/3ENgXVVxj1ScMDo5ZtG9Y6tP6xwf5rldLm6eDJhRoeFVb894ICY9wEkp7GWYlz2kcH3Y9lFNjldoifbYJ37L3acf6D5vE8p/4SvriPbjWy5FuSxk7ifMWj8pyFEyC4OV80lr50DSAtk/tnUPRp0wJsbLNnv6Y4w4mAam6BDO1UbaHkb9Sn86GRVoB43wAqMyI738r9sRq8PHYqn8F3EHtDoJAf3yd3Fme5HIe+g9GDw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771310352; c=relaxed/simple;\n\tbh=yplZ7MfaBOegIpjf1jWx7zJzCu3QxUeMgxwUqPkqwCo=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=sxB7ZfntESZ1fe6DzkmQQnxXDJRSDsPMEwvXNDNzRRQAjNlpNNsR7XhpoMeD/5qTkpC8A/EnIOEpBb0YoqhEgUa6N1nvalf8FTLTOQ+DiQJHpr5j99FNyh9FqV1R/K5AqOUbVp9Aqllyy8gntND5ec8jT3aIZwWUxlOGTzlLq64=","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=1UaumhoG0Mc5jj3re5SQuj+5eOfdE38/HMjFKCjENW4=;\n b=qi8SJgMFPJRWRvsVVOE2CFAXUfAtbGphWIDSWTiBWZPqGvA8oiI8uDHtLsiSDxnZfLaeHzOvXz5zIvsJiZIdjjkfic6w1mppKDKKvdSvcCBlezGG7CjyKMccbbK4ITT1EcvBLFaziMn8Yu/SIDKq9aCprl4Jp2LnnIjKo2aQYXjiMqN1Q/EbZsCiIrzd7JhwbJenXadtpsFQ4BWgy67DtzwagJhgS9LHixS5KhKsA9kBJSR2PJHG6ThBaPrED7MvP9s7ZtFmf3o26DfchMuBmJEq9Zf27rsU67En6PS6ZtgbhfrdQ2r6pPZGjwOOZ+hOd5UzNgTqdS31JUUQseB+jQ=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp;\n spf=pass smtp.mailfrom=valinux.co.jp;\n dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=N0plAydD; arc=fail smtp.client-ip=52.101.125.97","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=valinux.co.jp; dmarc=pass action=none\n header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=1UaumhoG0Mc5jj3re5SQuj+5eOfdE38/HMjFKCjENW4=;\n b=N0plAydDTFSEeWYsau30jaDOYDw3cZQpQ5X9GduBVKM5ojH3czTvg28eaDm0PykgGiyRrTFFJfOlSlWnQ/orM6h9N+sbYzHvNbyTQeWLnmTfQs7plzcypbdCoqN6aiUY0f3+MpGR+J4U42lI843wVf590fKkMag4hrnxJ8rv0qE=","From":"Koichiro Den <den@valinux.co.jp>","To":"mani@kernel.org,\n\tkwilczynski@kernel.org,\n\tkishon@kernel.org,\n\tbhelgaas@google.com,\n\tjdmason@kudzu.us,\n\tdave.jiang@intel.com,\n\tallenbh@gmail.com,\n\tcassel@kernel.org,\n\tFrank.Li@nxp.com","Cc":"linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tntb@lists.linux.dev","Subject":"[PATCH v2 3/3] PCI: endpoint: pci-ep-msi: Fix error unwind and\n prevent double alloc","Date":"Tue, 17 Feb 2026 15:38:56 +0900","Message-ID":"<20260217063856.3759713-4-den@valinux.co.jp>","X-Mailer":"git-send-email 2.51.0","In-Reply-To":"<20260217063856.3759713-1-den@valinux.co.jp>","References":"<20260217063856.3759713-1-den@valinux.co.jp>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"TY4PR01CA0034.jpnprd01.prod.outlook.com\n (2603:1096:405:2bd::19) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:38f::10)","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":"TY7P286MB7722:EE_|TY4P286MB7477:EE_","X-MS-Office365-Filtering-Correlation-Id":"28d90795-e7f9-4110-5b0a-08de6def3ee1","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014;","X-Microsoft-Antispam-Message-Info":"\n MuOaMs2n93ufOrghNB67bgvHqNhTq7G+1exzFqWByy62lY31swyXJG/WkCMy9duyk+9UMM9ij1ougmkNN67QPBd8JBSQXgUYuGwD1QkXK6GcnzQEvU/DFi4t7PLNXWC5M7L7fKc9skZGNIAhOEYbTrrEN3SlxKeONBYcezU5/JA91Bk/KECOs+Dnh5NRmvaJwo77scbaSiHYLN719e8DHd4hSJeDBH7Y8wQXU7j/SUFfYj1KJbsuLOm6DOLa6ii36RrWTVgaQ2AxubY2roEkAyXafORgV+qYlxRL0I5IeRi8+UOHKaSnhsAK/QN8yxirBoIxl1gfWpE/rVq8RTWxWu6utlI6dg+dOAW0eWKdX4PD3KO2IxOVzne3rCjpX6IiRl0b44QmEqyNYKhnYIvCHfuQkrC6u4wYNvLv4LP76HoJ6St5HeTSP+2phrNFM8p9y2Cs2vMo4tDn3PVViEyLXPLQIcj6sXrmQSqssNMvW/YV6Mao4VMXof1uUzvteREEoH6thXr+Pfq7ulWd8sBGOLfCwEDxdbOJloPohFh0UYMBtn3VpmjuuXsI5IJ4it+t5Xue/DHLPosTJWHA1HV1RZQonrql4yHlhblXbBUNa6AsNMeLHw3CZoGI1d9mX/ozgniWeETebOUUrALPty0i83iK9t5PWLjMxiN9dFLrmGTAOC14vSfOxhVwqmhCBwVAQUEeY7dyhYX2HahsNplELCuULp9VS7a8MGSU8V9roWHx+Wl28SA0zUcpgamtXXfUeN0bvoAR4CBNqUTZpNT3FK5G8tao335JHIG89j7BUTqKXSkoAFsfJwDAh11dfQAd3mKE0p8X9QnT7pSvTvWfyqvO376E+Q+l70hxoE2aNhzo90mq23ne0vSh2V7PEzRVU4vUgCDpHzttKGRci0HwdBKfsSC49pRySCJ2D0EZTHp+4+2ld2ohj7xEKLEo2snUcenzZdNHrB6zAI299OW6u25msjpVidu2r6+UhgvAuoRhuFoxLYiBwdfPJwbHN8dBLbL6OhVp+oGeljTxI8cz8r+TrQ5bocX9P0bVJ1MHuZVBDVyxGGR9pcQTJ9o93rcdXTi3fP+9B+OZ6lmWO5XNgxOCxjlCr38r6Oc7Gc2PP3h39tw0CsM5iR9MkF4wjELSnya3aED+5K94fjqEyrwKdvcmm7V7GwcaNjnJew1Pr6Hu3IfUOnBwYRMvYYDux3xTbMHYCslmfo7hcdKfzqsGrFhFlGuVM7efXy2Ugnenkm5xPzMufdEKdNpgbkWs2t/f5pOVDwxnQ7jLRLcrA72RWdtRf+baA5lGh16+zG7zfOtWPHnDKsZLRlDqK3kmBm2IRL65HPZkWAnkjNDbFwT5M3ojRmWnMLaXLZAxyjVq0TY5+POCxtzMCV7RrG0j8cOZcYeWmOahfiQOwuUG59p1/F/EcT9DRCr8qcASPvUh/JhU+stxHX53B3eKY+ufENcEZM18yiGecHDos1wsic3tKxwzhvRK4c3OmepVy069bcGSw+0Wnj0BYsE0zFzSxWJCsKB3Zsm9BzwaKl5czuFW85PDd9XW2JudCn5lG8kuSS0=","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(7416014);DIR:OUT;SFP:1102;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n akKL3DeQx/zfY9YR0yQEtZHDtBCaOUgijsbadFsKqo2vHG+bjVtAckQ6FemvFrh6by84XgI+A9CvR520SyvVD66wnZlEh2OmqbQN8RmnOJIh8giG+pdo88Xdo3yHqrUFKulEgpMS0UDVbEzCRRtJdG25XCcV85ycvrbeoRZ2P3Gc//q+ZhvVmooMUZzIY9tJmaH3qqzTMeVALRqOI2VsVVzILO5DkmDujOoD9wpYmaOGmDMnEA0/z5HgVt/SrNdx2Wuc0lB6BlE7D3AO+lFHsE3eA2cjUIpnEN0g2S5BleSz0mUHwnNAGK3zI4XX4+bcXg4jMzB6cA0gltaFMQDAFMzUm2m21KaShkT+n1nNHsXl5vsmOV7YE/SEhw1f+TALwr4WPVBW9ldkCzWCzgz2eTr3cVMsZbbS76AHa6qOTu4f4/6cqmDznSUbN1Y4N2BMho418W2n+yxTShiBCTxvTgdK498yOQC/6FHxNa9ziIqVFs1qLbdWEcRyJ/TTpYHvKckxkexo9MWpDkuo68qbKeNWIT2gGOyIsLPIelU1eLoH6j9uewBg2omcyi8874QGhzm1c2W9+No937KCcPbylIeihDRL+B296X/+j0lKHguT2r9EaoDjrl5sLt0l1SHjmuAUkVh5QhkMlzjXqglxIBKbAPiwp+AuaN/cvr6I8+7hAw4uXwPkqEc//725JsZjlhrFFJASZqRT1KuneFXSqCKN3UaL22pSbdXD7mp3yIJgT3ukirof6jiq6FdFcu+89A9AeqWJfZJ/U+qFxJFlWDBO+92SXlV4KmJyqbzCREawAGX7opBB/3g/7GBfBp+5DklicjJsL72ZQFs3EKaIsoRJjI9nRcK3GwLS2Y73Jyy4XjzJETh/eA3pO+5/KtyZfklNtiPUPxwC7qYq55CUqQBcHTU/T449SIZcGHKnMYO9/yQKkTC+jzkUviBniao7uynxejS0MJCg+ubTMkkg3XRp/uktiocOkPgeul86GdtIiK2+rIXrrJXHOKEte3VISu1i1Ns8kxsTw5Z+ny2GDsDWhlc80T1PdY1Q70qE7z2uEnBTVhC+AufprVaeDjABl0h9Yq02cEfz+2pO6wd8OjeJPIgp2Hk27Rei+u4CJIhqMmjb12EyjNg9moUesWBYHl74dHchbmOdoEPHuBBbN9W0dkDLzkenmfRW1qRiWBvI6Aro59gAoI0HaKU5RUdwJI5rxiprDOl7K9tdynuDpPA2wgtmhExcIwjwUAsqTRia8Pil5/jv3HxIKu0MJlSGxrfG6xSK+hmq8e4u9RCVKZyFFbyPzWy5KIADq/BV+z9CBYZ0pr2BvQKJtrdpq9Xl97uqfMyyZP/Y6vVjcFmZXm+wt5yOFFWt93bohQD59YWVqW7iiWSR5x0ZVPs6LtQuzBi0l03nUoRoUrZl6Oh+TynSOtoLMYboVsCapPwWIFTcAi43ESg6TdPkU6N8u4pK9qcEN1oDOAGUceGk/kqP+fNra0Op1jNyqyFyLimMeGp3Tf/FaKs/8pJp4wxhwumC9If9oiELax9UN6u4kzrmeq3RNpskhRid0j9/AA7+e/k7LaLzPSmBH8pKFDk7VuERRFpWSNdaWH3kbP+bFVOd4diNnW0nl8ihQbWtFu+70YTgRBCyIfXG9VRJ/IYKWyjP6TE8f7W3EbIiFQDSKw42yr6naht3+d+IvevAEyKXaW1/bkhzTHbCVJjhYBq5WKqE1tU56pkcfL4FCNHRq9gh5a+Cj45S/YP7MguHIwJZoG32fR/Adis6jUy/JHenHhCl","X-OriginatorOrg":"valinux.co.jp","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 28d90795-e7f9-4110-5b0a-08de6def3ee1","X-MS-Exchange-CrossTenant-AuthSource":"TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Feb 2026 06:39:05.3459\n (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"7a57bee8-f73d-4c5f-a4f7-d72c91c8c111","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n h45QNgNo6/ftK6rJVZ3sE05c/9TQ26JTXBYVLb7XA4i41dVJZLnuA2Nx+EPRx9Cxd5OBbmhz5zkj2so+Q9j9bQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"TY4P286MB7477"},"content":"pci_epf_alloc_doorbell() stores the allocated doorbell message array in\nepf->db_msg/epf->num_db before requesting MSI vectors. If MSI allocation\nfails, the array is freed but the EPF state may still point to freed\nmemory.\n\nClear epf->db_msg and epf->num_db on the MSI allocation failure path so\nthat later cleanup cannot double-free the array and callers can retry\nallocation.\n\nAlso return -EBUSY when doorbells have already been allocated to prevent\nleaking or overwriting an existing allocation.\n\nFixes: 1c3b002c6bf6 (\"PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controller\")\nReviewed-by: Frank Li <Frank.Li@nxp.com>\nReviewed-by: Niklas Cassel <cassel@kernel.org>\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/pci/endpoint/pci-ep-msi.c | 5 +++++\n 1 file changed, 5 insertions(+)","diff":"diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-ep-msi.c\nindex 1b58357b905f..ad8a81d6ad77 100644\n--- a/drivers/pci/endpoint/pci-ep-msi.c\n+++ b/drivers/pci/endpoint/pci-ep-msi.c\n@@ -50,6 +50,9 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)\n \t\treturn -EINVAL;\n \t}\n \n+\tif (epf->db_msg)\n+\t\treturn -EBUSY;\n+\n \tdomain = of_msi_map_get_device_domain(epc->dev.parent, 0,\n \t\t\t\t\t      DOMAIN_BUS_PLATFORM_MSI);\n \tif (!domain) {\n@@ -79,6 +82,8 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)\n \tif (ret) {\n \t\tdev_err(dev, \"Failed to allocate MSI\\n\");\n \t\tkfree(msg);\n+\t\tepf->db_msg = NULL;\n+\t\tepf->num_db = 0;\n \t\treturn ret;\n \t}\n \n","prefixes":["v2","3/3"]}