All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Wentao Liang" <vulab@iscas.ac.cn>
Cc: linux-serial@vger.kernel.org
Subject: Re: [PATCH] serial: vt8500: Use devm_clk_get_enabled()
Date: Sun, 08 Nov 2026 12:27:08 +0000	[thread overview]
Message-ID: <sashiko-outbox-203729@kernel.org> (raw)
In-Reply-To: <1794138380.2883200.vulab@iscas.ac.cn>

Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] serial: vt8500: malformed commit message and missing
  Signed-off-by
It also noticed 1 related pre-existing issue this patch does not
introduce:
- [Medium] serial: vt8500: port index leak in vt8500_serial_probe() [1]
--

commit 8b3881e4e3251512b27bf8982412d7a23856190f
Author: Wentao Liang <vulab@iscas.ac.cn>

> serial: vt8500: Use devm_clk_get_enabled()
>
> Hi Alexey,
>
> Sorry for the very late reply. Working through the review comments I got
> in September has taken me far longer than it should have.
>
> Your suggestion was right, but the leak fix went in before I could act on
> it: it is commit 9d8955281d92 ("serial: vt8500: Fix clock reference leak
> in vt8500_serial_probe()") in mainline, and it kept the clk_put() you
> asked me to replace. It has been backported to the stable trees by now as
> well. So the patch below is not a v2 of that one, which would only resend
> something that is already applied, but a follow-up that does the
> conversion on top of it.
>
> devm_clk_get_enabled() gets the clock and enables it in one call and
> registers the disable and put with devm, so both the manual error handling
> and the clk_put() go away. Probe now returns the error code from the clock
> lookup instead of a hard-coded -EINVAL, and the clock is released
> automatically through devres. The success path is unchanged and nothing
> else in the driver is touched.
>
> For the record on where this came from: the candidate came from our static
> analysis tooling, and DeepSeek and GPT-6.1 Sol were used to audit it and to
> help write the change. I reviewed the result and I am responsible for it.
> The patch is build-tested only: it compiles cleanly with W=1 for arm
> (vt8500_v6_v7_defconfig, CONFIG_SERIAL_VT8500=y) and passes
> checkpatch.pl --strict; I have no VT8500 hardware to test it on.
>
> Thanks for the review,
> Wentao
>
> From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
> From: Wentao Liang <vulab@iscas.ac.cn>
> Date: Sun, 8 Nov 2026 11:41:30 +0000
> Subject: [PATCH] serial: vt8500: Use devm_clk_get_enabled()
>
> vt8500_serial_probe() gets the clock with of_clk_get() and enables it
> with clk_prepare_enable(), so the reference has to be dropped by hand on
> the error path, and the clock is never disabled or released afterwards,
> even though the rest of the probe is devm-managed.
>
> Use devm_clk_get_enabled() instead, which gets and enables the clock in
> one call and registers the teardown with devm. The manual error handling
> and the clk_put() can then go, and probe returns the actual error code
> from the clock lookup rather than a hard-coded -EINVAL.
>
> The clock still stays enabled as long as the port is in use, so the
> success path is unchanged.

[Severity: Low]
The commit message contains an unstripped email reply and embedded git
format-patch headers, and is missing a Signed-off-by: trailer. Personal
commentary and build-testing notes belong below the --- separator (or
above a scissors line) so they do not end up in the permanent git log.

> diff --git a/drivers/tty/serial/vt8500_serial.c b/drivers/tty/serial/vt8500_serial.c
> index fc6fdc751b167..73922523dff64 100644
> --- a/drivers/tty/serial/vt8500_serial.c
> +++ b/drivers/tty/serial/vt8500_serial.c
[ ... ]
> @@ -647,17 +646,10 @@ static int vt8500_serial_probe(struct platform_device *pdev)
>  	if (IS_ERR(vt8500_port->uart.membase))
>  		return PTR_ERR(vt8500_port->uart.membase);
>  
> -	vt8500_port->clk = of_clk_get(pdev->dev.of_node, 0);
> +	vt8500_port->clk = devm_clk_get_enabled(&pdev->dev, NULL);
>  	if (IS_ERR(vt8500_port->clk)) {
>  		dev_err(&pdev->dev, "failed to get clock\n");
> -		return  -EINVAL;
> -	}
> -
> -	ret = clk_prepare_enable(vt8500_port->clk);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed to enable clock\n");
> -		clk_put(vt8500_port->clk);
> -		return ret;
> +		return PTR_ERR(vt8500_port->clk);
>  	}

[Severity: Medium]
This problem wasn't introduced by this patch, but does returning on error
here (or from the earlier devm_kzalloc() and
devm_platform_get_and_ioremap_resource() checks) leak the port index in
vt8500_ports_in_use [1]?

drivers/tty/serial/vt8500_serial.c:vt8500_serial_probe() {
	...
	/* reserve the port id */
	if (test_and_set_bit(port, vt8500_ports_in_use)) {
		/* port already in use - shouldn't really happen */
		return -EBUSY;
	}
	...
}

If devm_clk_get_enabled() fails (for example with -EPROBE_DEFER), the bit
in vt8500_ports_in_use is never cleared, so a later retry or re-bind will
find the port still marked in use and fail with -EBUSY (or exhaust
VT8500_MAX_PORTS for dynamically assigned ports).

[1] https://sashiko.dev/#/bug/linux-ca000721-4a5b-4d88-bdb8-7f1e438dc81e

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/1794138380.2883200.vulab@iscas.ac.cn?part=1

  reply	other threads:[~2026-11-08 12:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-17 15:58 [PATCH] serial: vt8500: Fix clock reference leak in vt8500_serial_probe() Wentao Liang
2026-09-17 16:03 ` sashiko-bot
2026-09-18  7:51 ` Alexey Charkov
2026-11-08 12:15   ` [PATCH] serial: vt8500: Use devm_clk_get_enabled() Wentao Liang
2026-11-08 12:27     ` sashiko-bot [this message]
2026-11-11 16:16     ` Alexey Charkov

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=sashiko-outbox-203729@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=vulab@iscas.ac.cn \
    /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.