Linux Input/HID development
 help / color / mirror / Atom feed
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


      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