Skip to content

media: Fix locking issues in rc core

Sean Young bpf linux-amlogic linux-arm-kernel linux-media lkml stable 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest20 patches 4 repliesIn review
  2. v419 patches 6 repliesSuperseded
  3. v317 patches 0 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v26 patches0 repliesSuperseded
v14 patches0 repliesSuperseded

Changes in v5 from the cover letter

- Split keymap locking into two commits: one for krealloc rewrite and one for the locking
- Fixed meson-ir-tx: Validate carrier and duty_cycle to actually fix divide by zero
- Improved commit messages
- imon calls usb_driver_claim_interface() before using it
- Ensure lirc_unregister() is always called with registered = false else any polling fds never get triggered

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/20media: rc: Ensure registered is cleared in error pathdrivers/media/rc/rc-main.c+12 -40 replies
2/20media: rc: Ensure that rc_unregister_device() does not free input devicedrivers/media/rc/rc-main.c+4 -40 replies
3/20media: rc: Fix ABBA deadlock by making locks more fine graineddrivers/media/rc/rc-ir-raw.c+24 -150 replies
4/20media: rc: Replace open coded krealloc() for keymapdrivers/media/rc/rc-main.c include/media/rc-map.h+22 -254 replies
5/20media: rc: Add missing locking for keymapdrivers/media/rc/rc-main.c+57 -290 replies
6/20media: rc: Fix race between bpf(BPG_PROG_ATTACH) and device unregisterdrivers/media/rc/rc-main.c+6 -60 replies
7/20media: rc: mce_kbd: Fix inconsistent locking of keylockdrivers/media/rc/ir-mce_kbd-decoder.c+3 -20 replies
8/20media: ene_ir: Ensure teardown is done in the correct orderdrivers/media/rc/ene_ir.c+2 -20 replies
9/20media: rc: Use binary search for adding or updating a scancodedrivers/media/rc/rc-main.c+13 -70 replies
10/20media: rc: imon: Bind both interfaces via usb_driver_claim_interface()drivers/media/rc/imon.c+70 -940 replies
11/20media: ir_toy: Remove unused struct fielddrivers/media/rc/ir_toy.c+0 -20 replies
12/20media: nuvoton-cir: Remove unused struct fielddrivers/media/rc/nuvoton-cir.h+0 -30 replies
13/20media: ite-cir: Removed unused struct fielddrivers/media/rc/ite-cir.c drivers/media/rc/ite-cir.h+0 -20 replies
14/20media: fintek-cir: Remove unused fieldsdrivers/media/rc/fintek-cir.c drivers/media/rc/fintek-cir.h+0 -350 replies
15/20media: mceusb: Remove unused fielddrivers/media/rc/mceusb.c+0 -10 replies
16/20media: serial_ir: Fix race condition where timer can be re-armeddrivers/media/rc/serial_ir.c+1 -10 replies
17/20media: rc: After rc_unregister_device() timers can be re-armeddrivers/media/rc/rc-main.c+5 -00 replies
18/20media: rc: Validate carrier range in LIRC_SET_REC_CARRIER ioctldrivers/media/rc/lirc_dev.c drivers/media/rc/rc-loopback.c+2 -50 replies
19/20media: ir_toy: Validate the maximum tx carrierdrivers/media/rc/ir_toy.c+1 -10 replies
20/20media: meson-ir-tx: Prevent divide by zero in meson_irtx_prepare_pulse()drivers/media/rc/meson-ir-tx.c+3 -00 replies

Reviews trailers per patch

1 of 20 patches has a Reviewed-by or Acked-by.

PatchHans Verkuil
1/20
2/20
3/20
4/20A-b
5/20
6/20
7/20
8/20
9/20
10/20
11/20
12/20
13/20
14/20
15/20
16/20
17/20
18/20
19/20
20/20

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v5 thread

Cover letter [PATCH v5 00/20] media: Fix locking issues in rc core

Fix issues found by Sashiko and claude, and other cleanups.

Changes since v4:
- Split keymap locking into two commits: one for krealloc rewrite and one for the locking
- Fixed meson-ir-tx: Validate carrier and duty_cycle to actually fix divide by zero
- Improved commit messages
- imon calls usb_driver_claim_interface() before using it
- Ensure lirc_unregister() is always called with registered = false else any polling fds never get triggered

Changes since v3:
- serial_ir: Fix race condition where timer can be re-armed This introduced a new race condition; reworked
- rc: After rc_unregister_device() timers can be re-armed Sashiko suggested a simpler implementation with timer_shutdown_sync()
- Add meson-ir-tx: Validate carrier and duty_cycle
- Add ir_toy: Validate the maximum tx carrier

Changes since v2:
- Cosmetic changes in: Add missing locking for keymap
- Patch 7 to 17 are new issues found

Changes since v1:
- Fix issue where input device was still leaked
- Add: Fix race between bpf(BPG_PROG_ATTACH) and device unregister
- Add: Fix inconsistent locking of keylock

Sean Young (20):
media: rc: Ensure registered is cleared in error path
media: rc: Ensure that rc_unregister_device() does not free input
device
media: rc: Fix ABBA deadlock by making locks more fine grained
media: rc: Replace open coded krealloc() for keymap
media: rc: Add missing locking for keymap
media: rc: Fix race between bpf(BPG_PROG_ATTACH) and device unregister
media: rc: mce_kbd: Fix inconsistent locking of keylock
media: ene_ir: Ensure teardown is done in the correct order
media: rc: Use binary search for adding or updating a scancode
media: rc: imon: Bind both interfaces via usb_driver_claim_interface()
media: ir_toy: Remove unused struct field
media: nuvoton-cir: Remove unused struct field
media: ite-cir: Removed unused struct field
media: fintek-cir: Remove unused fields
media: mceusb: Remove unused field
media: serial_ir: Fix race condition where timer can be re-armed
media: rc: After rc_unregister_device() timers can be re-armed
media: rc: Validate carrier range in LIRC_SET_REC_CARRIER ioctl
media: ir_toy: Validate the maximum tx carrier
media: meson-ir-tx: Prevent divide by zero in
meson_irtx_prepare_pulse()

 drivers/media/rc/ene_ir.c             |   4 +-
 drivers/media/rc/fintek-cir.c         |  13 --
 drivers/media/rc/fintek-cir.h         |  22 ---
 drivers/media/rc/imon.c               | 164 ++++++++++-------------
 drivers/media/rc/ir-mce_kbd-decoder.c |   5 +-
 drivers/media/rc/ir_toy.c             |   4 +-
 drivers/media/rc/ite-cir.c            |   1 -
 drivers/media/rc/ite-cir.h            |   1 -
 drivers/media/rc/lirc_dev.c           |   2 +
 drivers/media/rc/mceusb.c             |   1 -
 drivers/media/rc/meson-ir-tx.c        |   3 +
 drivers/media/rc/nuvoton-cir.h        |   3 -
 drivers/media/rc/rc-ir-raw.c          |  39 +++---
 drivers/media/rc/rc-loopback.c        |   5 -
 drivers/media/rc/rc-main.c            | 186 ++++++++++++++++----------
 drivers/media/rc/serial_ir.c          |   2 +-
 include/media/rc-map.h                |   2 -
 17 files changed, 222 insertions(+), 235 deletions(-)
Signature · 1 line
2.55.0