All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sean Young" <sean@mess.org>
Cc: media-ci@linuxtv.org, bpf@vger.kernel.org
Subject: Re: [PATCH v5 15/15] media: rc: Fix use after free in bpf progs
Date: Wed, 29 Jul 2026 15:52:17 +0000	[thread overview]
Message-ID: <20260729155217.A229E1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <4e85ac724e45244099b242747684529016c5ed83.1785338381.git.sean@mess.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] If `rc_register_device()` fails after making the LIRC cdev available, `dev->registered` is left as `true`. This allows a concurrent user holding an open file descriptor to bypass the registration check and trigger driver callbacks on freed private data.
--

--- Patch [15]: [PATCH v5 15/15] media: rc: Fix use after free in bpf progs ---
commit 56728bdc06bc2bfe04a9a68caffbbf3e5379fc20
Author: Sean Young <sean@mess.org>

media: rc: Fix use after free in bpf progs

This commit fixes a potential use-after-free in BPF programs by checking
rcdev->registered instead of rcdev->raw during BPF attach, detach, and
query operations. It also updates the raw event handler cleanup logic
during device unregistration.

> diff --git a/drivers/media/rc/bpf-lirc.c b/drivers/media/rc/bpf-lirc.c
> index 2f7564f26445c..14ab611e74457 100644
> --- a/drivers/media/rc/bpf-lirc.c
> +++ b/drivers/media/rc/bpf-lirc.c
> @@ -148,12 +148,13 @@ static int lirc_bpf_attach(struct rc_dev *rcdev, struct bpf_prog *prog)
>  	if (ret)
>  		return ret;
>  
> -	raw = rcdev->raw;
> -	if (!raw) {
> +	if (!rcdev->registered) {

[Severity: High]
This is a pre-existing issue, but does relying on rcdev->registered completely
prevent use-after-free scenarios if the device registration fails?

Looking at rc_register_device() in drivers/media/rc/rc-main.c, if an error
occurs after making the LIRC cdev available, dev->registered is left as true
in the error unwind path:

drivers/media/rc/rc-main.c:rc_register_device() {
        ...
        dev->registered = true;
        ...
        if (error)
                goto out_rx;
        ...
out_rx:
        rc_free_rx_device(dev);
out_lirc:
        if (dev->allowed_protocols != RC_PROTO_BIT_CEC)
                lirc_unregister(dev);
        ...
}

If a user-space process opens the newly registered /dev/lircX device before
rc_register_device() completes and fails, could it bypass this new check since
dev->registered remains true?

Similarly, could this cause issues in lirc_transmit() (in
drivers/media/rc/lirc_dev.c) where it also checks if (!dev->registered),
potentially allowing a freed driver's tx_ir callback to be invoked?

>  		ret = -ENODEV;
>  		goto unlock;
>  	}
>

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1785338381.git.sean@mess.org?part=15

      reply	other threads:[~2026-07-29 15:52 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 15:22 [PATCH v5 00/15] Fix leaks in rc core Sean Young
2026-07-29 15:22 ` [PATCH v5 01/15] media: streamzap: Add missing rc_unregister_device() Sean Young
2026-07-29 15:22 ` [PATCH v5 02/15] media: redrat3: Ensure rc device is freed if enable_detector() fails Sean Young
2026-07-29 15:22 ` [PATCH v5 03/15] media: redrat3: Ensure we don't read beyond the end of the packet Sean Young
2026-07-29 15:22 ` [PATCH v5 04/15] media: redrat3: Ensure all urbs are suspended Sean Young
2026-07-29 15:22 ` [PATCH v5 05/15] media: redrat3: Error path leaves device in transmitting state Sean Young
2026-07-29 15:35   ` Markus Elfring
2026-07-29 15:22 ` [PATCH v5 06/15] media: sunxi-cir: Ensure no more interrupts can occur before free Sean Young
2026-07-29 15:31   ` sashiko-bot
2026-07-29 15:22 ` [PATCH v5 07/15] media: meson-ir-tx: Ensure clock is disabled on unbind Sean Young
2026-07-29 15:22   ` Sean Young
2026-07-29 15:36   ` sashiko-bot
2026-07-29 15:22 ` [PATCH v5 08/15] media: meson-ir-tx: Ensure rc_free_device() is called " Sean Young
2026-07-29 15:22   ` Sean Young
2026-07-29 15:22 ` [PATCH v5 09/15] media: meson-ir-tx: Ensure probe error is propagated Sean Young
2026-07-29 15:22   ` Sean Young
2026-07-29 15:22 ` [PATCH v5 10/15] media: ir-hix5hd2: Ensure rdev is setup before interrupts are enabled Sean Young
2026-07-29 15:22 ` [PATCH v5 11/15] media: cx88: Specify rc type at rc_allocate_type() Sean Young
2026-07-29 15:22 ` [PATCH v5 12/15] media: saa7134: " Sean Young
2026-07-29 15:22 ` [PATCH v5 13/15] media: rc: Fix race condition during rc_register_device() Sean Young
2026-07-29 15:22 ` [PATCH v5 14/15] media: rc: Use after free in ir_raw_event_handle() Sean Young
2026-07-29 15:22 ` [PATCH v5 15/15] media: rc: Fix use after free in bpf progs Sean Young
2026-07-29 15:52   ` sashiko-bot [this message]

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=20260729155217.A229E1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=media-ci@linuxtv.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.