From: sashiko-bot@kernel.org
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: linux-gpio@vger.kernel.org, Frank.Li@kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH 5/9] gpio: mxc: use devres-managed PM runtime and dev_err_probe
Date: Sat, 03 Oct 2026 17:56:05 +0000 [thread overview]
Message-ID: <20261003175605.B6EE51F0089C@smtp.kernel.org> (raw)
In-Reply-To: <20261003-gpio-mxc-cleanup-v1-5-dad728ce27f2@nxp.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] gpio: mxc: PM usage counter underflow due to devm_pm_runtime_get_noresume and manual put
- [High] gpio: mxc: ignored devm_pm_runtime_enable and get_noresume returns
--
commit e443f1e5bd54a410ade428061ede6f400132fc30
Author: Peng Fan <peng.fan@nxp.com>
gpio: mxc: use devres-managed PM runtime and dev_err_probe
This patch switches the driver to use devres-managed PM runtime functions
and replaces goto error paths with direct returns using dev_err_probe().
> diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
> index 3c395c82d7d46..73e19d2bf2351 100644
> --- a/drivers/gpio/gpio-mxc.c
> +++ b/drivers/gpio/gpio-mxc.c
> @@ -474,9 +474,9 @@ static int mxc_gpio_probe(struct platform_device *pdev)
> if (of_device_is_compatible(np, "fsl,imx8qm-gpio"))
> port->is_imx8qm = true;
>
> - pm_runtime_get_noresume(&pdev->dev);
> + devm_pm_runtime_get_noresume(&pdev->dev);
> pm_runtime_set_active(&pdev->dev);
> - pm_runtime_enable(&pdev->dev);
> + devm_pm_runtime_enable(&pdev->dev);
[Severity: High]
Should the return values of devm_pm_runtime_get_noresume() and
devm_pm_runtime_enable() be checked?
Both functions allocate memory for devres actions and can return error codes
like -ENOMEM. If devm_pm_runtime_get_noresume() fails, it drops its reference
internally by calling pm_runtime_put_noidle().
If we ignore this failure and continue, the probe proceeds under the false
assumption that it holds a PM reference. The manual call to
pm_runtime_put_autosuspend() at the end of mxc_gpio_probe() would then
immediately underflow the PM usage counter.
[ ... ]
> @@ -552,12 +548,6 @@ static int mxc_gpio_probe(struct platform_device *pdev)
> pm_runtime_put_autosuspend(&pdev->dev);
[Severity: High]
Will this result in a PM usage counter underflow when the device is unbound?
Because devm_pm_runtime_get_noresume() registers a devres action to call
pm_runtime_put_noidle() on device unbind, the initial reference is already
managed. By manually calling pm_runtime_put_autosuspend() here at the end
of probe to enter autosuspend, the usage counter is decremented early.
When the device is subsequently unregistered or unbound, the devres cleanup
will execute and drop the already zeroed usage counter, causing a kernel
warning.
>
> return 0;
> -
> -out_bgio:
> - pm_runtime_disable(&pdev->dev);
> - pm_runtime_put_noidle(&pdev->dev);
> - dev_info(&pdev->dev, "%s failed with errno %d\n", __func__, err);
> - return err;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261003-gpio-mxc-cleanup-v1-0-dad728ce27f2@nxp.com?part=5
next prev parent reply other threads:[~2026-10-03 17:56 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-03 12:06 [PATCH 0/9] gpio: mxc: bug fixes and probe cleanup Peng Fan (OSS)
2026-10-03 12:06 ` [PATCH 1/9] gpio: mxc: fix race between chained IRQ handler install and probe completion Peng Fan (OSS)
2026-10-03 17:35 ` Andy Shevchenko
2026-10-03 12:06 ` [PATCH 2/9] gpio: mxc: fix wakeup_pads bit operations for correctness Peng Fan (OSS)
2026-10-03 17:41 ` Andy Shevchenko
2026-10-03 12:06 ` [PATCH 3/9] gpio: mxc: cache compatible checks at probe time Peng Fan (OSS)
2026-10-03 17:45 ` Andy Shevchenko
2026-10-04 3:06 ` Frank Li
2026-10-03 12:06 ` [PATCH 4/9] gpio: mxc: use devm action for irq_domain cleanup Peng Fan (OSS)
2026-10-03 17:48 ` Andy Shevchenko
2026-10-04 3:32 ` Frank Li
2026-10-03 12:06 ` [PATCH 5/9] gpio: mxc: use devres-managed PM runtime and dev_err_probe Peng Fan (OSS)
2026-10-03 17:52 ` Andy Shevchenko
2026-10-03 17:56 ` sashiko-bot [this message]
2026-10-04 3:00 ` Frank Li
2026-10-03 12:06 ` [PATCH 6/9] gpio: mxc: use local dev variable and device_is_compatible() Peng Fan (OSS)
2026-10-03 17:54 ` Andy Shevchenko
2026-10-03 12:06 ` [PATCH 7/9] gpio: mxc: introduce MXC_ICR macros and use field_prep/field_get Peng Fan (OSS)
2026-10-03 17:55 ` sashiko-bot
2026-10-03 12:06 ` [PATCH 8/9] gpio: mxc: use BIT() macro for single-bit operations Peng Fan (OSS)
2026-10-03 12:06 ` [PATCH 9/9] gpio: mxc: simplify gpio_set_wake_irq() with irq_set_irq_wake and assign_bit Peng Fan (OSS)
2026-10-03 17:59 ` Andy Shevchenko
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=20261003175605.B6EE51F0089C@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=imx@lists.linux.dev \
--cc=linux-gpio@vger.kernel.org \
--cc=peng.fan@oss.nxp.com \
--cc=sashiko-reviews@lists.linux.dev \
/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