From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Andy Shevchenko" <andy.shevchenko@gmail.com>,
"Bartosz Golaszewski" <brgl@bgdev.pl>,
"Sasha Levin" <sashal@kernel.org>,
linus.walleij@linaro.org, linux-gpio@vger.kernel.org
Subject: [PATCH AUTOSEL 5.10 33/34] gpio: grgpio: Fix device removing
Date: Mon, 27 Jun 2022 22:22:40 -0400 [thread overview]
Message-ID: <20220628022241.595835-33-sashal@kernel.org> (raw)
In-Reply-To: <20220628022241.595835-1-sashal@kernel.org>
From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
[ Upstream commit c1c2a15c2b5379ea8e44dcdcc298e3de42076ba0 ]
If a platform device's remove callback returns non-zero, the device core
emits a warning and still removes the device and calls the devm cleanup
callbacks.
So it's not save to not unregister the gpiochip because on the next request
to a GPIO the driver accesses kfree()'d memory. Also if an IRQ triggers,
the freed memory is accessed.
Instead rely on the GPIO framework to ensure that after gpiochip_remove()
all GPIOs are freed and so the corresponding IRQs are unmapped.
This is a preparation for making platform remove callbacks return void.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpio/gpio-grgpio.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/gpio/gpio-grgpio.c b/drivers/gpio/gpio-grgpio.c
index f954359c9544..46f6158d1c71 100644
--- a/drivers/gpio/gpio-grgpio.c
+++ b/drivers/gpio/gpio-grgpio.c
@@ -435,25 +435,13 @@ static int grgpio_probe(struct platform_device *ofdev)
static int grgpio_remove(struct platform_device *ofdev)
{
struct grgpio_priv *priv = platform_get_drvdata(ofdev);
- int i;
- int ret = 0;
-
- if (priv->domain) {
- for (i = 0; i < GRGPIO_MAX_NGPIO; i++) {
- if (priv->uirqs[i].refcnt != 0) {
- ret = -EBUSY;
- goto out;
- }
- }
- }
gpiochip_remove(&priv->gc);
if (priv->domain)
irq_domain_remove(priv->domain);
-out:
- return ret;
+ return 0;
}
static const struct of_device_id grgpio_match[] = {
--
2.35.1
prev parent reply other threads:[~2022-06-28 2:29 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-28 2:22 [PATCH AUTOSEL 5.10 01/34] spi: spi-cadence: Fix SPI CS gets toggling sporadically Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 02/34] spi: cadence: Detect transmit FIFO depth Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 03/34] regulator: qcom_smd: correct MP5496 ranges Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 04/34] ALSA: usb-audio: US16x08: Move overflow check before array access Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 05/34] bus: bt1-apb: Don't print error on -EPROBE_DEFER Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 06/34] bus: bt1-axi: " Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 07/34] drm/vc4: crtc: Use an union to store the page flip callback Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 08/34] drm/vc4: crtc: Move the BO handling out of common page-flip callback Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 09/34] scsi: ufs: Simplify ufshcd_clear_cmd() Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 10/34] scsi: ufs: Support clearing multiple commands at once Sasha Levin
2022-06-29 12:59 ` Pavel Machek
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 11/34] ALSA: x86: intel_hdmi_audio: enable pm_runtime and set autosuspend delay Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 12/34] ALSA: x86: intel_hdmi_audio: use pm_runtime_resume_and_get() Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 13/34] hamradio: 6pack: fix array-index-out-of-bounds in decode_std_command() Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 14/34] drivers/net/ethernet/neterion/vxge: Fix a use-after-free bug in vxge-main.c Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 15/34] powerpc/prom_init: Fix build failure with GCC_PLUGIN_STRUCTLEAK_BYREF_ALL and KASAN Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 16/34] video: fbdev: skeletonfb: Fix syntax errors in comments Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 17/34] video: fbdev: intelfb: Use aperture size from pci_resource_len Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 18/34] video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 19/34] video: fbdev: simplefb: Check before clk_put() not needed Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 20/34] btrfs: do not BUG_ON() on failure to migrate space when replacing extents Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 21/34] arch: mips: generic: Add missing of_node_put() in board-ranchu.c Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 22/34] mips: mti-malta: Fix refcount leak in malta-time.c Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 23/34] mips: ralink: Fix refcount leak in of.c Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 24/34] mips: lantiq: falcon: Fix refcount leak bug in sysctrl Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 25/34] mips: lantiq: xway: " Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 26/34] mips/pic32/pic32mzda: Fix refcount leak bugs Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 27/34] mips: lantiq: Add missing of_node_put() in irq.c Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 28/34] drm/sun4i: Add DMA mask and segment size Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 29/34] drm/sun4i: Return if frontend is not present Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 30/34] hinic: Replace memcpy() with direct assignment Sasha Levin
2022-06-29 13:02 ` Pavel Machek
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 31/34] drm/amdgpu: Adjust logic around GTT size (v3) Sasha Levin
2022-06-28 2:22 ` [PATCH AUTOSEL 5.10 32/34] nvme: add a bogus subsystem NQN quirk for Micron MTFDKBA2T0TFH Sasha Levin
2022-06-28 2:22 ` Sasha Levin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220628022241.595835-33-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=andy.shevchenko@gmail.com \
--cc=brgl@bgdev.pl \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=u.kleine-koenig@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®