From: sashiko-bot@kernel.org
To: "Sean Young" <sean@mess.org>
Cc: media-ci@linuxtv.org, linux-amlogic@lists.infradead.org,
neil.armstrong@linaro.org
Subject: Re: [PATCH v2 07/11] media: meson-ir-tx: Ensure clock is disabled on unbind
Date: Thu, 16 Jul 2026 21:48:29 +0000 [thread overview]
Message-ID: <20260716214830.530481F000E9@smtp.kernel.org> (raw)
In-Reply-To: <5f880faac5530202a07dcf92329476608bbabfc1.1783977550.git.sean@mess.org>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
New issues:
- [High] Use-After-Free in the redrat3 probe error path.
Pre-existing issues:
- [High] Incomplete fix for IRQ race condition during remove, leading to kernel panic and use-after-free.
--
--- Patch [7]: [PATCH v2 07/11] media: meson-ir-tx: Ensure clock is disabled on unbind ---
commit 7936d37b9d5412a12d7a610528273a3bb7e7ada2
Author: Sean Young <sean@mess.org>
media: meson-ir-tx: Ensure clock is disabled on unbind
clk_prepare_enable() needs a call to clk_disable_unprepare() on driver
unbind. Make it devm managed.
> diff --git a/drivers/media/rc/redrat3.c b/drivers/media/rc/redrat3.c
> index 3f828a564e192..b64c6440b062d 100644
> --- a/drivers/media/rc/redrat3.c
> +++ b/drivers/media/rc/redrat3.c
[ ... ]
> @@ -1111,17 +1127,20 @@ static int redrat3_dev_probe(struct usb_interface *intf,
> /* might be all we need to do? */
> retval = redrat3_enable_detector(rr3);
> if (retval < 0)
> - goto led_free;
> + goto rc_free;
>
> /* we can register the device now, as it is ready */
> usb_set_intfdata(intf, rr3);
>
> return 0;
>
> +rc_free:
> + rc_unregister_device(rr3->rc);
> led_free:
> led_classdev_unregister(&rr3->led);
> redrat_free:
> redrat3_delete(rr3, rr3->udev);
> + rc_free_device(rr3->rc);
[Severity: High]
Can this error path trigger a use-after-free on the rr3 pointer?
When redrat3_delete() is called in the error handling path, it
unconditionally frees the rr3 structure:
drivers/media/rc/redrat3.c:redrat3_delete() {
...
kfree(rr3);
}
Directly after this, rc_free_device(rr3->rc) is executed, which dereferences
the newly freed rr3 pointer to access the rc member.
Should rc_free_device() be called before redrat3_delete() to avoid this?
> diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c
> index 28e840a7e5b8c..af1ee08ffdbec 100644
> --- a/drivers/media/rc/sunxi-cir.c
> +++ b/drivers/media/rc/sunxi-cir.c
[ ... ]
> @@ -374,8 +374,8 @@ static void sunxi_ir_remove(struct platform_device *pdev)
> struct sunxi_ir *ir = platform_get_drvdata(pdev);
>
> rc_unregister_device(ir->rc);
> - rc_free_device(ir->rc);
> sunxi_ir_hw_exit(&pdev->dev);
> + rc_free_device(ir->rc);
> }
[Severity: High]
This is a pre-existing issue, but does moving rc_free_device() after
sunxi_ir_hw_exit() still leave a race condition that could cause a kernel
panic?
Because sunxi_ir_probe() uses devm_request_irq(), the interrupt remains
active until devres cleanup executes after sunxi_ir_remove() returns. If an
interrupt fires after sunxi_ir_hw_exit() disables the APB clocks but before
devres deregisters the IRQ, sunxi_ir_irq() will execute and read from the
unclocked SUNXI_IR_RXSTA_REG register.
On ARM architectures, accessing this register when the APB clock is disabled
causes a synchronous external abort, resulting in a kernel panic. If the
execution somehow proceeds, the handler would also dereference the newly
freed ir->rc pointer.
--
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1783977550.git.sean@mess.org?part=7
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
next prev parent reply other threads:[~2026-07-16 21:48 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-13 21:30 [PATCH v2 00/11] Fix leaks in rc core Sean Young
2026-07-13 21:30 ` [PATCH v2 01/11] media: streamzap: Add missing rc_unregister_device() Sean Young
2026-07-13 21:30 ` [PATCH v2 02/11] media: redrat3: Ensure rc device is freed if enable_detector() fails Sean Young
2026-07-13 21:30 ` [PATCH v2 03/11] media: redrat3: Ensure we don't read beyond the end of the packet Sean Young
2026-07-13 21:30 ` [PATCH v2 04/11] media: redrat3: Ensure all urbs are suspended Sean Young
2026-07-13 21:30 ` [PATCH v2 05/11] media: redrat3: Error path leaves device in transmitting state Sean Young
2026-07-13 21:31 ` [PATCH v2 06/11] media: sunxi-cir: Ensure no more interrupts can occur before free Sean Young
2026-07-16 21:34 ` sashiko-bot
2026-07-13 21:31 ` [PATCH v2 07/11] media: meson-ir-tx: Ensure clock is disabled on unbind Sean Young
2026-07-13 21:31 ` Sean Young
2026-07-16 21:48 ` sashiko-bot [this message]
2026-07-13 21:31 ` [PATCH v2 08/11] media: meson-ir-tx: Ensure rc_free_device() is called " Sean Young
2026-07-13 21:31 ` Sean Young
2026-07-13 21:31 ` [PATCH v2 09/11] media: meson-ir-tx: Ensure probe error is propagated Sean Young
2026-07-13 21:31 ` Sean Young
2026-07-14 5:12 ` Martin Blumenstingl
2026-07-14 5:12 ` Martin Blumenstingl
2026-07-16 21:25 ` [PATCH v2 10/11] media: ir-hix5hd2: Ensure rdev is setup before interrupts are enabled Sean Young
2026-07-16 21:25 ` [PATCH v2 11/11] media: rc: Use after free in ir_raw_event_handle() Sean Young
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=20260716214830.530481F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-amlogic@lists.infradead.org \
--cc=media-ci@linuxtv.org \
--cc=neil.armstrong@linaro.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sean@mess.org \
/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.