From: Patrice CHOTARD <patrice.chotard@foss.st.com>
To: "Sean Young" <sean@mess.org>,
"Andrzej Hajda" <andrzej.hajda@intel.com>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Robert Foss" <rfoss@kernel.org>,
"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
"Jonas Karlman" <jonas@kwiboo.se>,
"Jernej Skrabec" <jernej.skrabec@gmail.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Bruno Prémont" <bonbons@linux-vserver.org>,
"Jiri Kosina" <jikos@kernel.org>,
"Benjamin Tissoires" <bentiss@kernel.org>,
"Hans Verkuil" <hverkuil@kernel.org>,
"Mauro Carvalho Chehab" <mchehab@kernel.org>,
"Maxim Levitsky" <maximlevitsky@gmail.com>,
"Chen-Yu Tsai" <wens@kernel.org>,
"Samuel Holland" <samuel@sholland.org>,
"David Härdeman" <david@hardeman.nu>,
"Benjamin Valentin" <benpicco@googlemail.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: Haotian Zhang <vulab@iscas.ac.cn>,
<dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>,
<linux-input@vger.kernel.org>, <linux-media@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-sunxi@lists.linux.dev>, <linux-staging@lists.linux.dev>
Subject: Re: [PATCH] media: rc: rc_unregister_device() should not call rc_free_device()
Date: Mon, 5 Jan 2026 08:51:03 +0100 [thread overview]
Message-ID: <8d8b5d79-4b70-4ad0-9496-8d409495cbc9@foss.st.com> (raw)
In-Reply-To: <20251220222757.7063-1-sean@mess.org>
On 12/20/25 23:27, Sean Young wrote:
> rc_unregister_device() does two things: it marks the device as
> unregistered, so no new commands can be issued via the lirc chardev,
> and also frees the rc device. Device drivers want to both cancel
> in-flight commands (i.e. kill urbs) and prevent further commands from
> being issued. Only once both are done, can we really free the rc device,
> because it might be referenced in urb callbacks. This is impossible to
> do with the current way of things.
>
> This change removes the implicit call to rc_free_device() from
> rc_unregister_device(). This means that device drivers can call
> rc_unregister_device() in their remove or disconnect function, then cancel
> all the urbs and interrupts before explicitly calling rc_free_device().
>
> Note this is an alternative fix for an issue found by Haotian Zhang, see
> the Closes: tags.
>
> Reported-by: Haotian Zhang <vulab@iscas.ac.cn>
> Closes: https://lore.kernel.org/linux-media/20251114101432.2566-1-vulab@iscas.ac.cn
> Closes: https://lore.kernel.org/linux-media/20251114101418.2548-1-vulab@iscas.ac.cn
> Closes: https://lore.kernel.org/linux-media/20251114101346.2530-1-vulab@iscas.ac.cn/
> Closes: https://lore.kernel.org/linux-media/20251114090605.2413-1-vulab@iscas.ac.cn/
> Signed-off-by: Sean Young <sean@mess.org>
> ---
> drivers/gpu/drm/bridge/sil-sii8620.c | 1 +
> drivers/hid/hid-picolcd_cir.c | 1 +
> drivers/media/cec/core/cec-core.c | 2 +-
> drivers/media/common/siano/smsir.c | 1 +
> drivers/media/i2c/ir-kbd-i2c.c | 2 ++
> drivers/media/pci/bt8xx/bttv-input.c | 1 +
> drivers/media/pci/cx23885/cx23885-input.c | 1 +
> drivers/media/pci/cx88/cx88-input.c | 1 +
> drivers/media/pci/dm1105/dm1105.c | 1 +
> drivers/media/pci/mantis/mantis_input.c | 1 +
> drivers/media/pci/saa7134/saa7134-input.c | 1 +
> drivers/media/pci/smipcie/smipcie-ir.c | 1 +
> drivers/media/pci/ttpci/budget-ci.c | 1 +
> drivers/media/rc/ati_remote.c | 4 ++--
> drivers/media/rc/ene_ir.c | 2 +-
> drivers/media/rc/fintek-cir.c | 3 ++-
> drivers/media/rc/igorplugusb.c | 1 +
> drivers/media/rc/iguanair.c | 1 +
> drivers/media/rc/img-ir/img-ir-hw.c | 3 ++-
> drivers/media/rc/img-ir/img-ir-raw.c | 3 ++-
> drivers/media/rc/imon.c | 3 ++-
> drivers/media/rc/ir-hix5hd2.c | 2 +-
> drivers/media/rc/ir_toy.c | 1 +
> drivers/media/rc/ite-cir.c | 2 +-
> drivers/media/rc/mceusb.c | 1 +
> drivers/media/rc/rc-ir-raw.c | 5 -----
> drivers/media/rc/rc-loopback.c | 1 +
> drivers/media/rc/rc-main.c | 6 +-----
> drivers/media/rc/redrat3.c | 4 +++-
> drivers/media/rc/st_rc.c | 2 +-
> drivers/media/rc/streamzap.c | 3 ++-
> drivers/media/rc/sunxi-cir.c | 1 +
> drivers/media/rc/ttusbir.c | 2 +-
> drivers/media/rc/winbond-cir.c | 2 +-
> drivers/media/rc/xbox_remote.c | 3 ++-
> drivers/media/usb/au0828/au0828-input.c | 1 +
> drivers/media/usb/dvb-usb-v2/dvb_usb_core.c | 1 +
> drivers/media/usb/dvb-usb/dvb-usb-remote.c | 6 ++++--
> drivers/media/usb/em28xx/em28xx-input.c | 1 +
> drivers/staging/media/av7110/av7110_ir.c | 1 +
> include/media/rc-core.h | 2 --
> 41 files changed, 52 insertions(+), 30 deletions(-)
>
[...]
> diff --git a/drivers/media/rc/st_rc.c b/drivers/media/rc/st_rc.c
> index 6b70bac5f45d6..0ba06bfc9e14b 100644
> --- a/drivers/media/rc/st_rc.c
> +++ b/drivers/media/rc/st_rc.c
> @@ -203,6 +203,7 @@ static void st_rc_remove(struct platform_device *pdev)
> device_init_wakeup(&pdev->dev, false);
> clk_disable_unprepare(rc_dev->sys_clock);
> rc_unregister_device(rc_dev->rdev);
> + rc_free_device(rc_dev->rdev);
> }
>
> static int st_rc_open(struct rc_dev *rdev)
> @@ -334,7 +335,6 @@ static int st_rc_probe(struct platform_device *pdev)
> return ret;
> rcerr:
> rc_unregister_device(rdev);
> - rdev = NULL;
> clkerr:
> clk_disable_unprepare(rc_dev->sys_clock);
> err:
> diff --git a/drivers/media/rc/streamzap.c b/drivers/media/rc/streamzap.c
> index d3b48a0dd1f47..b9b241fe46ea1 100644
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Thanks
Patrice
prev parent reply other threads:[~2026-01-05 7:51 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-20 22:27 [PATCH] media: rc: rc_unregister_device() should not call rc_free_device() Sean Young
2026-01-05 7:51 ` Patrice CHOTARD [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=8d8b5d79-4b70-4ad0-9496-8d409495cbc9@foss.st.com \
--to=patrice.chotard@foss.st.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=benpicco@googlemail.com \
--cc=bentiss@kernel.org \
--cc=bonbons@linux-vserver.org \
--cc=david@hardeman.nu \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=hverkuil@kernel.org \
--cc=jernej.skrabec@gmail.com \
--cc=jikos@kernel.org \
--cc=jonas@kwiboo.se \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=linux-sunxi@lists.linux.dev \
--cc=maarten.lankhorst@linux.intel.com \
--cc=maximlevitsky@gmail.com \
--cc=mchehab@kernel.org \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=samuel@sholland.org \
--cc=sean@mess.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=vulab@iscas.ac.cn \
--cc=wens@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox