From patchwork Tue Feb 28 21:49:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Asmaa Mnebhi X-Patchwork-Id: 1749691 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=Qr/mFguG; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PR9yL1L3Tz2468 for ; Wed, 1 Mar 2023 08:50:00 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1pX7r1-0000HN-AC; Tue, 28 Feb 2023 21:49:47 +0000 Received: from mail-dm6nam12on2068.outbound.protection.outlook.com ([40.107.243.68] helo=NAM12-DM6-obe.outbound.protection.outlook.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1pX7qz-0000Gx-5o for kernel-team@lists.ubuntu.com; Tue, 28 Feb 2023 21:49:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EtQQHstUwkzt4Wh11pcuwuNIySpVxe5n03ydEe0wH0YWaTwew63/p71xZM8OzdMF1JQLl0fRx4GQcXrEpujbg5vi4yRUnv51bxt9pUT7XerjXmKDoObjmzDldKvOE9oxcGj0XpUzdqQm1CrN60SgR5NGpge9EawHtrTLYCP0c3C8fGh5atU+UylRxX3LEKrUcPZ1dcqDp54NQ22u7f/oHEYTotcsPzbq1L1DAlJn5Q8CPf1d81lVfrcVHn4QBoxlBTl293Z+n1HMzTZc3aLjJwHXSF5ENhu0ZniB5wAbyZ7c5mFPRBeZsQkATZMIZV6J22za+nxf5PtZ8hVud2pkOA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IT93bEHZK70Sx+jQLBlVzdpGVGktjsmQhnP2agUEpu8=; b=XuSgKbvHWFfsdNEFx55w0M0RNjcM/c/IHEnYE3StELt73muDEm4Le8jFZPmQxxAvRPsuB7oRY919dItajFcsRWeeoicgGJOi2RLgEG2tJWVDZnecLqY13PEBw2A5HLs3cLiFLWI0ENgBQED58sdcUmkk8KWrCsWG9UwlKqZw5EGLo3dEgLYfBoSQ9HlY2crBenXzammtg4jXI6LSGiroKoKdDgKGiBJqS6I8ykyUcEpoCknKCoT8Of8duWGrtlR/OiP/sdReSjYh1hnnp48D3SVX2ktjOqy3xoxzTjvi0SeusGD30CBdSGJVdYdTOY9sppppNPEi9aEYIm/W5OOsPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=lists.ubuntu.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IT93bEHZK70Sx+jQLBlVzdpGVGktjsmQhnP2agUEpu8=; b=Qr/mFguGvYMmVQJhbKrqr0zEjgK0nX5AQgTmUVwXv4eGKaTJ+q6InOzGwjcC9kLxTk6PDR54YbA3V0tkqA0ubLxnugoUk9xVoqeXtZY49BAyxpPEud6VpsUckbOv6xEsPyP4IE0zk65U0vuYCOwuXXhhQe3LBhdHPRkvs4LPO3fqQ8ShTmNGAVxEdqsvQCZ0P8gz30FwwirbM/Jk33vL33jDVYSWwHfFgretoLDqRdbbczm6Zzv7CntkU2EVH0J1CwZTz0p4Qge3EIIk8asPWvZ+yudn408h5fl0FwyE4owSXjU+FoABe8iKW/DwTEDmcnPBnFyqZ+ld7UnpOqxCgQ== Received: from DM6PR02CA0054.namprd02.prod.outlook.com (2603:10b6:5:177::31) by PH7PR12MB6417.namprd12.prod.outlook.com (2603:10b6:510:1ff::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.30; Tue, 28 Feb 2023 21:49:42 +0000 Received: from DS1PEPF0000E63A.namprd02.prod.outlook.com (2603:10b6:5:177:cafe::be) by DM6PR02CA0054.outlook.office365.com (2603:10b6:5:177::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.30 via Frontend Transport; Tue, 28 Feb 2023 21:49:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by DS1PEPF0000E63A.mail.protection.outlook.com (10.167.17.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.12 via Frontend Transport; Tue, 28 Feb 2023 21:49:41 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Tue, 28 Feb 2023 13:49:35 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Tue, 28 Feb 2023 13:49:35 -0800 Received: from vdi.nvidia.com (10.127.8.14) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.5 via Frontend Transport; Tue, 28 Feb 2023 13:49:35 -0800 From: Asmaa Mnebhi To: Subject: [SRU][F:linux-bluefield][PATCH v3 1/2] gpio: Restrict usage of GPIO chip irq members before initialization Date: Tue, 28 Feb 2023 16:49:33 -0500 Message-ID: <20230228214934.9321-2-asmaa@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230228214934.9321-1-asmaa@nvidia.com> References: <20230228214934.9321-1-asmaa@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0000E63A:EE_|PH7PR12MB6417:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f25fb3d-f5f0-4b81-3725-08db19d5b2b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: se50YvGjOqfoSrpWdb2SPDynZmmy0B9nLEalMxRcktaciNMtTmQktT90L0JZ2yZaYr2T5ZYE6lpGWW24sCmLCpw9BpwivUZ1o5DhJj8PhAM5LpszFq5wfO5xh/oitOOlcx8R/PyP/vrpLJr7RHk8x4ZRxN8aijExAU5Xwr2+qTJVWDVj54yxrc152lGwY9rKpxVBgyL6cooYf9Lam6cD1xtnyl5Uo5m8h1oJAFTh4FsDkKeFEJnUZl/JK1CPF/ZUPcVEBJpYYaGHiX38rVzUm8DAhHKuThXOAFVTTx+7f68eGwmQIq6WbIG1BtOMNuV0NKIesX7EHJOCgN7mBGND1A/lm3xh4AYsLmlm38FqsXCjsFaadpCyedbB8VNT1Cz+VyPwSycVAasl8lPQpuYYk1aW5iqZ60cK8p66BMIaBdhWLk21PmclM0aDXVPgp2U639U5c/fAT94f4tIeO1yXYcsfk7o4rDzX9aXIK0jYYDjPjlLsHms1ioR7MxzXLL1SxGVC5jTSKVOKxOZuv0t6icj1vmFZqLvjHB3sjAxlBvVaee46BRqJrTAvWUmF/jE/A2LZr84j5Tg09zMuMaHyXMPwV6m6DBNuMplMwtBrMgmXkXMs6771opeGZoSeGoj6l/CHdxsD6An1UJwW0d6K2U7LTyIvPljcKV9s6ScG/8tSMxY+eIZCZR2GbN2HCi2iWZltuFsPoJhKeAq7QA//3Nb5X91V+AGlzwSc0Y4lw2QztQCOSorEhJT3WF49bL/i X-Forefront-Antispam-Report: CIP:216.228.118.232; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge1.nvidia.com; CAT:NONE; SFS:(13230025)(4636009)(376002)(346002)(136003)(39860400002)(396003)(451199018)(40470700004)(36840700001)(46966006)(36860700001)(36756003)(82740400003)(7636003)(86362001)(356005)(5660300002)(2906002)(40480700001)(70206006)(8676002)(6916009)(70586007)(8936002)(41300700001)(82310400005)(426003)(40460700003)(2616005)(336012)(186003)(26005)(47076005)(83380400001)(7696005)(1076003)(478600001)(966005)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2023 21:49:41.8731 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f25fb3d-f5f0-4b81-3725-08db19d5b2b7 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.232]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0000E63A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6417 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2007581 GPIO chip irq members are exposed before they could be completely initialized and this leads to race conditions. One such issue was observed for the gc->irq.domain variable which was accessed through the I2C interface in gpiochip_to_irq() before it could be initialized by gpiochip_add_irqchip(). This resulted in Kernel NULL pointer dereference. Following are the logs for reference :- kernel: Call Trace: kernel: gpiod_to_irq+0x53/0x70 kernel: acpi_dev_gpio_irq_get_by+0x113/0x1f0 kernel: i2c_acpi_get_irq+0xc0/0xd0 kernel: i2c_device_probe+0x28a/0x2a0 kernel: really_probe+0xf2/0x460 kernel: RIP: 0010:gpiochip_to_irq+0x47/0xc0 To avoid such scenarios, restrict usage of GPIO chip irq members before they are completely initialized. Signed-off-by: Shreeya Patel Reviewed-by: Andy Shevchenko Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski (backported from commit 5467801f1fcbdc46bc7298a84dbf3ca1ff2a7320) Signed-off-by: Asmaa Mnebhi --- drivers/gpio/gpiolib.c | 19 +++++++++++++++++++ include/linux/gpio/driver.h | 9 +++++++++ 2 files changed, 28 insertions(+) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index abdf448b11a3..e4d47e00c392 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2146,6 +2146,16 @@ static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset) { struct irq_domain *domain = chip->irq.domain; +#ifdef CONFIG_GPIOLIB_IRQCHIP + /* + * Avoid race condition with other code, which tries to lookup + * an IRQ before the irqchip has been properly registered, + * i.e. while gpiochip is still being brought up. + */ + if (!chip->irq.initialized) + return -EPROBE_DEFER; +#endif + if (!gpiochip_irqchip_irq_valid(chip, offset)) return -ENXIO; @@ -2321,6 +2331,15 @@ static int gpiochip_add_irqchip(struct gpio_chip *gpiochip, acpi_gpiochip_request_interrupts(gpiochip); + /* + * Using barrier() here to prevent compiler from reordering + * gc->irq.initialized before initialization of above + * GPIO chip irq members. + */ + barrier(); + + gpiochip->irq.initialized = true; + return 0; } diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index 5dd9c982e2cb..15418caf76fc 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -201,6 +201,15 @@ struct gpio_irq_chip { */ bool threaded; + /** + * @initialized: + * + * Flag to track GPIO chip irq member's initialization. + * This flag will make sure GPIO chip irq members are not used + * before they are initialized. + */ + bool initialized; + /** * @init_hw: optional routine to initialize hardware before * an IRQ chip will be added. This is quite useful when From patchwork Tue Feb 28 21:49:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Asmaa Mnebhi X-Patchwork-Id: 1749690 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=YfB0Ukr2; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PR9yL0lB0z1yWy for ; Wed, 1 Mar 2023 08:50:00 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1pX7r5-0000Ja-NC; Tue, 28 Feb 2023 21:49:51 +0000 Received: from mail-bn7nam10on2069.outbound.protection.outlook.com ([40.107.92.69] helo=NAM10-BN7-obe.outbound.protection.outlook.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1pX7qz-0000Gy-Oz for kernel-team@lists.ubuntu.com; Tue, 28 Feb 2023 21:49:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ToN9Iz3BTvKHupmAN4a5gFk+WSRErlU3L4Y2q+JI+rfgRHdWTvB3eG6K1XTuRo40Sfp0kHe2uQR9OthXfGfhYedV5bhQW3G1womeHNrZJrh18hwRgNtCk6JaoUZBvgW/vu44fU1fevH+ZsWrxE+10ZnEqkLzp2iCuBcLAx9yK0jbstVB7P1Qlj1Y1j3HJvfFq635ve29MnTjn1dpeXJ/c60RGgugMN/P/7BeX0ZyIMRVjPxTG+J6HouHq4/oVI8OgVnLmtuA8YNcEYN14oPVIFg3/Zs3NxSUbRjOrX/FXiPnc0wPow/ZAocXt9l8DfhzgqEbBvez4oK7QQavSfTy5A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i42uGt3UV0s5rPv+Iis46dA3rNnq+v8mk/re7XZUVww=; b=l3vOWjhYo3qCNPZkcIxmmCiWnUcMOHJN/S215tiJU8CybXeNkwIoe6savGbAU+8oT7G4MkjtGQ/VaUEhvsn+RjtY9SJCEnk5jHl/8jOzUEr5Zsh7PkXXla9Z0t0yuPMTf3GDefV5rbxcBvtFuYV+VxDDpS7LtbIcBwv6jqKwaoBMyxPliiew4ZxEoPXJLo30aZhRT55BZNqbp9Chsu2EWXfM6hLsp9RSK77miJTgtFcagdLJNIQ2JQaW/zlp8vg/SgtFwbU9Hh387tZMA+diDfz/D/EuzRMUI0gCrSmOXfxuy4ThzsrkGAt5Zupr2+AEmzzP1QjMgdewzzK/e9Xmuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=lists.ubuntu.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i42uGt3UV0s5rPv+Iis46dA3rNnq+v8mk/re7XZUVww=; b=YfB0Ukr2l/HRiDML7V2D+/OIw0A49Dtrv5mOz/UPMk9STfhaO0Js1p2Ge4dJngc+xzVSfYkBywJ2Ge69JpbRPiizgdMLWfmhpP38uBggFZm/Vf7lxzMBZZNveL65U/hvL/5nv+VnoNlaLnS/wg1K6L1UbYUti0yRhFadJo6PCg47mhcSPhfm9iMturOivOP/rPrdKuwQiyFcHX5hBqWMYrd1wd/JwJJDs8YFF3upPJvL93qjQIvFClEeKRUMl5dMP2FaRTMkMd1+1LIDHkpf0dMq1EwQpn3pbZ3dNIen5cxppyDErEFW++oGYWQmJleUo+tkzwpR2wu+sgQtwk5WqQ== Received: from DM6PR02CA0059.namprd02.prod.outlook.com (2603:10b6:5:177::36) by DS0PR12MB8365.namprd12.prod.outlook.com (2603:10b6:8:f8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29; Tue, 28 Feb 2023 21:49:43 +0000 Received: from DS1PEPF0000E63A.namprd02.prod.outlook.com (2603:10b6:5:177:cafe::db) by DM6PR02CA0059.outlook.office365.com (2603:10b6:5:177::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.30 via Frontend Transport; Tue, 28 Feb 2023 21:49:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by DS1PEPF0000E63A.mail.protection.outlook.com (10.167.17.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.12 via Frontend Transport; Tue, 28 Feb 2023 21:49:43 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Tue, 28 Feb 2023 13:49:36 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Tue, 28 Feb 2023 13:49:36 -0800 Received: from vdi.nvidia.com (10.127.8.14) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.5 via Frontend Transport; Tue, 28 Feb 2023 13:49:35 -0800 From: Asmaa Mnebhi To: Subject: [SRU][F:linux-bluefield][PATCH v3 2/2] gpio: Request interrupts after IRQ is initialized Date: Tue, 28 Feb 2023 16:49:34 -0500 Message-ID: <20230228214934.9321-3-asmaa@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230228214934.9321-1-asmaa@nvidia.com> References: <20230228214934.9321-1-asmaa@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0000E63A:EE_|DS0PR12MB8365:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ac76a67-d98c-47cc-edb6-08db19d5b3d2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: C5yFgps49dxD/plVfPNr4wzMkNYSLg7MUvVM3zOgsNCayIXqV+4SJa7GNMhBpCaQtHjXDQpo+DK24Wjdm+8a3fQZTvQnSKd1jEOHRT5BWW7zBEcGUzrLs3sldaXn2F6fQUcZhcfZknaubU5c17zYUtbm8BrUP0U4+WmIJJNlqZXLIO6V5xKl04WXioydNql07UXZYB01LrmHWhTOwUf2LycgnpqppWVPFVSPLanVadgYh8NKaoLBPPZhllZ632VVx1j4fgCNFIhMdNf2geogWQvSYQcG85S8hOZpiVJZhHf/64kudbnkU//n1uTHnZtr92Kz1ZSCuH7Q9/1Mtkz7rNA2Kqblqm30MsFpP20ZoOu+b10JBIb92qwKFkfMwj8oxRnHYSeiq0BHEJyzkHxHF+4YUXZwMFyrGMnD1AS3KQWrBw+tQqydqtjltkEOFppySkLwayBWXNqCNhSKJWOA/PBhatFgI6hwAgbfPdvw2c5O8omWygPTGtuCSjIeo7X4ubypuwhGMP3TJQUJYCWo2nJ66S784Hn3yGvEDakMP/v+Qxi+j28RTbUke9ZqmXAnj/Hh9uTrwcxBgsMdKIQtDjMGLYd/ph8Tw/FWws8d5cY8+bicvgA9Qa503VAkD50cjAGbVTfx5bLIDwKsOe8o4EG3SNJD+PjUIqCNqM8fPD7Ub+aQnnizq1BDLTf9YYQ2+c/sxl0Z1kIHYpKkG5hTTyoqeknY2m8iXFx2TfhXY2hQfKMneiTt8sa5HXqPyvndwVtHtOkra79M2o+IZwy7p5DbFrlSUfzOn2CDYD2bTqc= X-Forefront-Antispam-Report: CIP:216.228.118.232; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge1.nvidia.com; CAT:NONE; SFS:(13230025)(4636009)(396003)(346002)(136003)(376002)(39860400002)(451199018)(36840700001)(40470700004)(46966006)(45080400002)(186003)(26005)(1076003)(82310400005)(36860700001)(426003)(66574015)(47076005)(7636003)(40480700001)(356005)(40460700003)(86362001)(82740400003)(83380400001)(36756003)(2616005)(336012)(70206006)(70586007)(8676002)(6916009)(2906002)(8936002)(7696005)(5660300002)(966005)(41300700001)(478600001)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2023 21:49:43.7324 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4ac76a67-d98c-47cc-edb6-08db19d5b3d2 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.232]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0000E63A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8365 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2007581 Commit 5467801f1fcb ("gpio: Restrict usage of GPIO chip irq members before initialization") attempted to fix a race condition that lead to a NULL pointer, but in the process caused a regression for _AEI/_EVT declared GPIOs. This manifests in messages showing deferred probing while trying to allocate IRQs like so: amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x0000 to IRQ, err -517 amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x002C to IRQ, err -517 amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x003D to IRQ, err -517 [ .. more of the same .. ] The code for walking _AEI doesn't handle deferred probing and so this leads to non-functional GPIO interrupts. Fix this issue by moving the call to `acpi_gpiochip_request_interrupts` to occur after gc->irc.initialized is set. Fixes: 5467801f1fcb ("gpio: Restrict usage of GPIO chip irq members before initialization") Link: https://lore.kernel.org/linux-gpio/BL1PR12MB51577A77F000A008AA694675E2EF9@BL1PR12MB5157.namprd12.prod.outlook.com/ Link: https://bugzilla.suse.com/show_bug.cgi?id=1198697 Link: https://bugzilla.kernel.org/show_bug.cgi?id=215850 Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1979 Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1976 Reported-by: Mario Limonciello Signed-off-by: Mario Limonciello Reviewed-by: Shreeya Patel Tested-By: Samuel Čavoj Tested-By: lukeluk498@gmail.com Link: Reviewed-by: Andy Shevchenko Acked-by: Linus Walleij Reviewed-and-tested-by: Takashi Iwai Signed-off-by: Linus Torvalds (backported from commit 06fb4ecfeac7e00d6704fa5ed19299f2fefb3cc9) Signed-off-by: Asmaa Mnebhi --- drivers/gpio/gpiolib.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e4d47e00c392..049cdfc975b3 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2329,8 +2329,6 @@ static int gpiochip_add_irqchip(struct gpio_chip *gpiochip, gpiochip_set_irq_hooks(gpiochip); - acpi_gpiochip_request_interrupts(gpiochip); - /* * Using barrier() here to prevent compiler from reordering * gc->irq.initialized before initialization of above @@ -2340,6 +2338,8 @@ static int gpiochip_add_irqchip(struct gpio_chip *gpiochip, gpiochip->irq.initialized = true; + acpi_gpiochip_request_interrupts(gpiochip); + return 0; }