Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
New issues:
- [Low] The commit message refers to non-existent clock API functions.
Pre-existing issues:
- [High] The driver masks `-EPROBE_DEFER` and other error codes by unconditionally returning `-ENODEV` when `devm_clk_get_enabled()` or `platform_get_irq()` fails, breaking probe deferral.
- [High] The `rc_dev` structure allocated during probe is permanently leaked on driver unbind due to the use of `rc_allocate_device()` without ensuring a corresponding `rc_free_device()` call.
--
--- Patch [5]: [PATCH 5/7] media: meson-ir-tx: Ensure clock is disabled on unbind ---
commit e95895078113495fea5b981fafe002c5ff1f56c1
Author: Sean Young <[email protected]>
media: meson-ir-tx: Ensure clock is disabled on unbind
This patch changes the clock acquisition in the meson-ir-tx driver to use
the devres managed devm_clk_get_enabled(). This ensures the clock is
automatically disabled and unprepared when the driver unbinds.
> clk_prepare_enabled() needs a call to clk_disable_prepare() on
> driver unbind. Make it devm managed.
[Severity: Low]
This isn't a bug, but there are typos in the function names mentioned here.
Should they be clk_prepare_enable() and clk_disable_unprepare() instead?
> diff --git a/drivers/media/rc/meson-ir-tx.c b/drivers/media/rc/meson-ir-tx.c
> index fded2c256f2a6..e7bb107e6a843 100644
> --- a/drivers/media/rc/meson-ir-tx.c
> +++ b/drivers/media/rc/meson-ir-tx.c
> @@ -288,8 +288,8 @@ static int meson_irtx_mod_clock_probe(struct meson_irtx *ir,
> if (!np)
> return -ENODEV;
>
> - clock = devm_clk_get(ir->dev, "xtal");
> - if (IS_ERR(clock) || clk_prepare_enable(clock))
> + clock = devm_clk_get_enabled(ir->dev, "xtal");
> + if (IS_ERR(clock))
> return -ENODEV;
[Severity: High]
This is a pre-existing issue, but does this incorrectly mask -EPROBE_DEFER?
If devm_clk_get_enabled() returns -EPROBE_DEFER, returning a hardcoded
-ENODEV will permanently fail the probe instead of allowing it to defer.
Would it be better to return PTR_ERR(clock) here?
The same issue appears to happen with platform_get_irq() in
meson_irtx_probe():
drivers/media/rc/meson-ir-tx.c:meson_irtx_probe() {
...
irq = platform_get_irq(pdev, 0);
if (irq < 0)
return -ENODEV;
...
}
Would it be better to propagate these error codes directly?
[Severity: High]
This is another pre-existing issue, but does this driver permanently leak
the rc_dev structure on unbind?
The driver allocates the structure manually in meson_irtx_probe():
drivers/media/rc/meson-ir-tx.c:meson_irtx_probe() {
...
rc = rc_allocate_device(RC_DRIVER_IR_RAW_TX);
...
ret = devm_rc_register_device(dev, rc);
...
}
Since devm_rc_register_device() only ties rc_unregister_device() to the
devres cleanup, and there is no matching rc_free_device() call or use of
devm_rc_allocate_device(), does the initial reference count remain
un-dropped when the driver is unbound?
--
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=5
_______________________________________________
linux-amlogic mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-amlogic
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.