mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 0/6] media: az6007/drxk/dvb-core: cope with a tuner unplugged while in use
@ 2026-10-04 10:07 Josef Schlehofer
  2026-10-04 10:07 ` [PATCH v2 1/6] media: az6007: fix CAM status polling after disconnect Josef Schlehofer
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Josef Schlehofer @ 2026-10-04 10:07 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, Hyunwoo Kim, Hans Verkuil

Unplugging an az6007 based tuner while it is in use can leave parts of
the DVB stack stuck on the disconnected device:

- drxk keeps accessing the device and hides the resulting errors,
- the CA thread can stay stuck polling the removed CAM slot, which
  keeps the disconnect from completing,
- userspace waiting on the DVB devices is neither woken up nor told
  that the device is gone, so the disconnect can wait indefinitely for
  it to close the devices.

This series fixes these issues by:

- treating an unreadable CAM slot status as no CAM,
- propagating -ENODEV from az6007 to drxk and stopping further device
  access,
- waking up the users of the demux, dvr and CA devices and returning
  -ENODEV or EPOLLERR to them.

Tested on:

- Linux 6.18.44 on a Turris 1.x (v1) and Linux 6.6.151 on a Turris
  Omnia (v2, series backported), both with a TechniSat CableStar Combo
  HD CI and a CAM,
- v7.3-rc2 in QEMU with vidtv and two vidtv fixes from media next [2]
  (v1 and v2).

The tests covered streaming and scanning in tvheadend, blocked read(),
poll() and epoll_wait() calls, sysfs unbind, and unplugging the tuner
or the whole USB hub. In all of them the blocked calls returned and the
disconnect completed. Without the series, unbinding vidtv with a
blocked reader hung, which is the hang that the commit message of the
second vidtv fix [2] asks about.

Changes in v2:
- Patch 5: check dmxdev->exit in the readers instead of storing -ENODEV
  in the buffer error, which a concurrent reader could clear, as
  reported by Sashiko [1]. With a test-only delay, two readers of one
  file reproduced that race in QEMU with v1 but not with v2.
- Patches 1-4 and 6 are unchanged.

v1: https://lore.kernel.org/r/20260923001410.30297-1-pepe.schlehofer@gmail.com

[1] https://linuxtv.org/mailman3/hyperkitty/list/media-ci@linuxtv.org/message/N3XJE5MO4HP2LJYOKFHIRB564HATZCTI/
[2] "media: vidtv: fix frontend reference leak on unbind" and
    "media: vidtv: fix uaf in vidtv_bridge_on_new_pkts_avail"

Josef Schlehofer (6):
  media: az6007: fix CAM status polling after disconnect
  media: az6007: propagate USB errors from I2C transfers
  media: drxk: stop retrying after disconnect
  media: drxk: stop accessing a disconnected device
  media: dvb-core: dmxdev: wake up readers on release
  media: dvb-core: wake up CA users on release

 drivers/media/dvb-core/dmxdev.c         | 36 +++++++++++++++----
 drivers/media/dvb-core/dvb_ca_en50221.c | 24 ++++++++++++-
 drivers/media/dvb-frontends/drxk_hard.c | 48 +++++++++++++++++++------
 drivers/media/dvb-frontends/drxk_hard.h |  2 +-
 drivers/media/usb/dvb-usb-v2/az6007.c   | 23 ++++++------
 5 files changed, 105 insertions(+), 28 deletions(-)


base-commit: df2908090cda368b01ff43709f51890076c56157
-- 
2.54.0 (Apple Git-157)


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-10-04 10:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-04 10:07 [PATCH v2 0/6] media: az6007/drxk/dvb-core: cope with a tuner unplugged while in use Josef Schlehofer
2026-10-04 10:07 ` [PATCH v2 1/6] media: az6007: fix CAM status polling after disconnect Josef Schlehofer
2026-10-04 10:07 ` [PATCH v2 2/6] media: az6007: propagate USB errors from I2C transfers Josef Schlehofer
2026-10-04 10:07 ` [PATCH v2 3/6] media: drxk: stop retrying after disconnect Josef Schlehofer
2026-10-04 10:07 ` [PATCH v2 4/6] media: drxk: stop accessing a disconnected device Josef Schlehofer
2026-10-04 10:07 ` [PATCH v2 5/6] media: dvb-core: dmxdev: wake up readers on release Josef Schlehofer
2026-10-04 10:07 ` [PATCH v2 6/6] media: dvb-core: wake up CA users " Josef Schlehofer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®