Repeated kernel warnings/stacktraces with kernel 5.4 and newer
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
v4l2loopback (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Focal |
Fix Released
|
Medium
|
Stefan Bader |
Bug Description
Release: 20.04/Focal Fossa
[SRU Justification]
Impact: Starting with kernel version 5.4 the v4l2-core started to add sanity checking on drivers when querying capabilities. First drivers are not supposed to modify an initially set device_caps attribute. And second, the returned set of capabilities must be a superset of those in device_caps. The v4l2loopback module fails on both checks which results in repeated warnings (with additional stack trace) starting with:
- WARNING: CPU: 2 PID: 7234 at drivers/
- WARNING: CPU: 2 PID: 7234 at drivers/
Fix:
The proposed fix adds compat code which stops modifying device_caps after initial setup for kernel versions 5.4 and later. Also for those versions the initial setup excludes V4L2_CAP_
Testcase:
#1
DKMS build the updated version (should be implicitly done on an
upgrade of v4l2loopback)
But one can try to rebuild explicitly and check if any warnings are
given. This would be extra useful if a pre 5.4 kernel could be used as
well (not officially part of focal, therefore optional)
#2
Inserting the DKMS module the following way should start showing the
above warnings:
$ sudo modprobe v4l2loopback exclusive_caps=1
Once the fixed version is used, there should no longer be any warnings.
Regression Potential:
The change affects the internal device_caps variable only. If that is unexpectedly used by anything external (the kernel code should be assumed to expect the modified form) the loopback device might become unusable for recording/playback. I have been using the modified driver for a while now as v4l2sink in obs-studio and saw now issues.
The 20.10 version (0.12.5-1) was reworked considerably and I was told by someone else that it would not exhibit those warnings.