OpenIPC AI team and GitHub
2a26e86e45
gk7205v200_otg: stop the UVC gadget freeing its own video device ( #149 )
...
Tearing down a UVC gadget that userspace still has open corrupts the V4L2 core:
the node number leaks (the gadget climbs /dev/video0 -> video1 -> video2 across
role switches), and once the kernel is tainted by the WARN that goes with it, a
NULL dereference follows with v4l2_device_release on the backtrace.
struct uvc_device embeds its struct video_device and uvc_free() kfree()s the
lot, but the V4L2 core holds a reference to that video_device for as long as
/dev/videoN is open. Reference-count the structure instead, which is what the
driver's own "TODO reference counting" has been asking for.
Verified on the bench: the gadget returns to /dev/video0 every time instead of
climbing, and no WARN or Oops after repeated switching.
2026-09-06 14:40:07 +03:00
..
2026-08-25 20:29:47 +03:00
2026-08-27 21:21:47 +03:00
2026-08-25 21:25:13 +03:00
2026-08-25 21:25:13 +03:00
2026-08-25 20:29:47 +03:00
2026-08-29 07:58:06 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 21:25:13 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-09-06 14:40:07 +03:00
2026-08-25 21:25:13 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 21:25:13 +03:00
2026-09-03 09:30:29 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 21:25:13 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 21:25:13 +03:00
2026-08-25 21:25:13 +03:00
2026-08-27 22:28:22 +03:00
2025-11-05 19:14:38 +03:00
2026-04-11 15:43:58 +03:00
2026-08-31 14:29:27 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-31 10:25:51 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-31 14:29:27 +03:00
2026-08-31 14:29:27 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-08-25 20:29:47 +03:00
2026-09-05 16:31:10 +03:00