From: sashiko-bot@kernel.org
To: "Sean Nyekjaer" <sean@geanix.com>
Cc: linux-can@vger.kernel.org, "Vincent Mailhol" <mailhol@kernel.org>,
"Marc Kleine-Budde" <mkl@pengutronix.de>,
"Oliver Hartkopp" <socketcan@hartkopp.net>,
"Oleksij Rempel" <o.rempel@pengutronix.de>
Subject: Re: [PATCH v4] can: tcan4x5x: put tcan into sleep when removing driver
Date: Tue, 04 Aug 2026 11:37:50 +0000 [thread overview]
Message-ID: <20260804113750.A291D1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260804113027.1626442-1-sean@geanix.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Early return on SPI error in `tcan4x5x_power_enable(priv, 0)` bypasses `regulator_disable()`, causing a regulator enable count leak.
--
--- Patch [1]: [PATCH v4] can: tcan4x5x: put tcan into sleep when removing driver ---
commit 277a5e1f34c213275f7c42975ff590a923bc1148
Author: Sean Nyekjaer <sean@geanix.com>
can: tcan4x5x: put tcan into sleep when removing driver
This commit modifies the driver to put the TCAN4x5x transceiver into sleep
mode upon removal. It issues a sleep command via SPI to reduce power
consumption when the driver unbinds. The sleep command is integrated into
tcan4x5x_power_enable().
> diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/tcan4x5x-core.c
> index 31cc9d0abd453..d8fd219a27cc5 100644
> --- a/drivers/net/can/m_can/tcan4x5x-core.c
> +++ b/drivers/net/can/m_can/tcan4x5x-core.c
[ ... ]
> -static int tcan4x5x_power_enable(struct regulator *reg, int enable)
> +static int tcan4x5x_power_enable(struct tcan4x5x_priv *priv, int enable)
> {
> + struct regulator *reg = priv->power;
> + int ret;
> +
> + /*
> + * Put the device into sleep mode if the RST pin is available,
> + * since a wake-up event, RST pin toggle, or power cycle are the only
> + * ways to exit sleep mode.
> + * Redundant if the regulator is exclusive to this device, but that
> + * can't be determined here.
> + *
> + * Datasheet: TCAN4550, section "8.4.3 Sleep Mode"
> + * https://www.ti.com/lit/gpn/tcan4550
> + */
> + if (priv->reset_gpio && !enable) {
> + ret = regmap_update_bits(priv->regmap, TCAN4X5X_CONFIG,
> + TCAN4X5X_MODE_SEL_MASK,
> + TCAN4X5X_MODE_SLEEP);
> + if (ret)
> + return ret;
[Severity: Medium]
If this regmap_update_bits() fails over SPI during the power-off sequence,
could this early return bypass the regulator_disable() call below?
It looks like this might leak the regulator enable count, which would
prevent the regulator from ever being disabled and defeat the power-saving
purpose of the patch.
> + }
> +
> if (IS_ERR_OR_NULL(reg))
> return 0;
>
> if (enable)
> return regulator_enable(reg);
> else
> return regulator_disable(reg);
> }
[ ... ]
> @@ -543,7 +564,7 @@ static void tcan4x5x_can_remove(struct spi_device *spi)
>
> m_can_class_unregister(&priv->cdev);
>
> - tcan4x5x_power_enable(priv->power, 0);
> + tcan4x5x_power_enable(priv, 0);
[Severity: Medium]
Because tcan4x5x_can_remove() ignores the return value of
tcan4x5x_power_enable(), any error returned from the regmap_update_bits()
failure mentioned above would be silently dropped.
Would it be safer to ensure the regulator is still disabled even if the
SPI command fails, so the failure doesn't silently keep the power on?
>
> m_can_class_free_dev(priv->cdev.net);
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260804113027.1626442-1-sean@geanix.com?part=1
next prev parent reply other threads:[~2026-08-04 11:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-04 11:30 [PATCH v4] can: tcan4x5x: put tcan into sleep when removing driver Sean Nyekjaer
2026-08-04 11:37 ` sashiko-bot [this message]
2026-08-05 7:31 ` Marc Kleine-Budde
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=20260804113750.A291D1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=mailhol@kernel.org \
--cc=mkl@pengutronix.de \
--cc=o.rempel@pengutronix.de \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sean@geanix.com \
--cc=socketcan@hartkopp.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.