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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D4FDEC5B543 for ; Wed, 4 Jun 2025 03:48:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tt+dbp+s8a3zcBXR25e7fOnBa8a0x0h5X1lIZXgfp2w=; b=f2XmIUe+kvwQLtei3jYFVt5aYE L0pJ0seBxUkrsISAQyYABkBXbmUK1Y4xgnKPop8tXFeK2IERffag11oxisbk2v4I6jtTK6nTZk0J7 0caCap1F/aykX/ITcrs3S9jnt6Dy90NnFRP5xAWXZu3Ci5FEsE85fNu9fzk29rWN51RU0iXoyQx05 s7rEE0jg2XVMOUJ3cPhZ67+rO/0aXZQNR318UYwfmqRDGQATYp23F7bhHFditpEikggKLaoD3CN0Q pFXSz18agcoJu86Pb4RV1Oi7p5dkygEdS0FH5g5vnFEK/q0gjTCBGMeAelBoBGcBkj2vLTR8fl0wF mlRzDaLw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uMf6m-0000000CTYZ-1EnF; Wed, 04 Jun 2025 03:48:08 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uMcbJ-0000000C9EB-1R31 for linux-arm-kernel@lists.infradead.org; Wed, 04 Jun 2025 01:07:30 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 1156E449D1; Wed, 4 Jun 2025 01:07:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 954DFC4CEF2; Wed, 4 Jun 2025 01:07:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748999248; bh=dn6nh6OYRBrhWv47o2duj5vKQ7bTQyPVnZzppSU1oeY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=geJBK+Lue5qeixe/Izbxmt7Zq3UHvACUCKvO+E9EmCYP6MNNedAnK2f4J5IR2Lw1Y k0Rl0XwY/KmpZd0Bj04TsUEVVv4qSrwkv4gtptAGVFXt2geEK44uX9PaBqifOFDOVe zcZWGjs24VkfCoDdW74Y/51BVkNbZS1LWbKOkKLCEfW120+yrVPNqN+AYpzFns2Sj6 wSss0Ws5fxKA6F85GedaNwqc7BST6Ss3w6UAOu1bfxd5mn1v+qoCBvT3SBFR6/8MVL if401G3eDnk6A2Te2l+0VwTmzJ2bDTLYgp8qWeZDZ6fqq/yOjvmcFFtYDS2oQYeRRT XsdXU6bDOIRpg== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Gabor Juhos , Imre Kaloz , Andrew Lunn , Linus Walleij , Sasha Levin , gregory.clement@bootlin.com, sebastian.hesselbarth@gmail.com, brgl@bgdev.pl, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org Subject: [PATCH AUTOSEL 5.4 13/20] pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get() Date: Tue, 3 Jun 2025 21:06:59 -0400 Message-Id: <20250604010706.7395-13-sashal@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250604010706.7395-1-sashal@kernel.org> References: <20250604010706.7395-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 5.4.293 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250603_180729_424407_E31C7980 X-CRM114-Status: GOOD ( 19.03 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Gabor Juhos [ Upstream commit 57273ff8bb16f3842c2597b5bbcd49e7fa12edf7 ] The regmap_read() function can fail, so propagate its error up to the stack instead of silently ignoring that. Signed-off-by: Imre Kaloz Reviewed-by: Andrew Lunn Signed-off-by: Gabor Juhos Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-4-07e9ac1ab737@gmail.com Signed-off-by: Linus Walleij Signed-off-by: Sasha Levin --- Based on my comprehensive analysis, here is my determination: **YES** This commit should be backported to stable kernel trees. Here's my detailed analysis: ## Analysis of the Code Change The commit fixes a clear bug in the `armada_37xx_gpio_get()` function in `drivers/pinctrl/mvebu/pinctrl-armada-37xx.c`. The specific changes are: 1. **Before**: `regmap_read(info->regmap, reg, &val);` - ignores return value 2. **After**: `ret = regmap_read(info->regmap, reg, &val); if (ret) return ret;` - properly handles errors ## Backport Suitability Assessment ### ✅ **Meets Stable Tree Criteria:** 1. **Bug Fix**: This clearly fixes a real bug where regmap read failures are silently ignored, potentially returning garbage data to userspace. 2. **Small and Contained**: The change is minimal (3 lines added) and extremely focused, affecting only error handling in a single function. 3. **Low Regression Risk**: The change only adds error checking where none existed before. It cannot introduce new bugs - it can only prevent incorrect behavior. 4. **No Architectural Changes**: This is purely error handling improvement with no changes to the driver's architecture or interfaces. 5. **Important Subsystem**: GPIO operations are fundamental and used by many kernel subsystems and userspace applications. ### ✅ **Follows Established Kernel Patterns:** My analysis of other GPIO drivers shows this error handling pattern is **universal** across the kernel: - `gpio-arizona.c`, `gpio-bd71828.c`, `gpio- madera.c`, `gpio-max77620.c`, `pinctrl-axp209.c`, and many others - **Every examined driver** checks `regmap_read` return values in GPIO get functions - The armada-37xx driver was an outlier in ignoring these errors ### ✅ **Real-World Impact:** This fix addresses scenarios where: - **Hardware communication failures** (I2C/SPI bus errors, device power issues) - **Device disconnect events** (hot-plug scenarios, power management) - **Timing/electrical issues** causing intermittent regmap failures Without this fix, `gpio_get()` would return potentially garbage values (using uninitialized `val`) when hardware communication fails, leading to incorrect GPIO state reporting to userspace. ### ✅ **Reference Similar Commits:** Looking at the provided examples, this commit closely resembles: - **Similar Commit #3 (Status: YES)**: "Fix irq_of_parse_and_map() return value" - fixes incorrect error handling - **Similar Commit #1 (Status: YES)**: "Convert to use dev_err_probe()" - improves error handling patterns Both are small, focused error handling improvements that were deemed suitable for backporting. ## Conclusion This is a textbook example of a stable tree candidate: it's a small, safe bug fix that brings the driver in line with kernel-wide error handling standards, addresses real hardware failure scenarios, and has zero risk of regression while providing tangible benefits for system reliability. drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index 7f0c425a479ea..e93edf1c97901 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -433,11 +433,14 @@ static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset) struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); unsigned int reg = INPUT_VAL; unsigned int val, mask; + int ret; armada_37xx_update_reg(®, &offset); mask = BIT(offset); - regmap_read(info->regmap, reg, &val); + ret = regmap_read(info->regmap, reg, &val); + if (ret) + return ret; return (val & mask) != 0; } -- 2.39.5