[Bug 1899633] Re: Repeated kernel warnings/stacktraces with kernel 5.4 and newer

Stefan Bader 1899633 at bugs.launchpad.net
Mon Oct 19 09:35:11 UTC 2020


The kernel check was added in [1] v5.4-rc1 by:

Author: Hans Verkuil <hverkuil-cisco at xs4all.nl>
Date:   Tue Jul 23 04:21:25 2019 -0400

    media: v4l2-dev/ioctl: require non-zero device_caps, verify sane querycap results
    
    Now that all V4L2 drivers set device_caps in struct video_device, we can add
    a check for this to ensure all future drivers fill this in.
    
    Also verify that when the querycap ioctl is called the driver didn't mess
    with the device_caps value and that capabilities is a superset of device_caps.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco at xs4all.nl>
    Reviewed-by: Sakari Ailus <sakari.ailus at linux.intel.com>
    [hverkuil-cisco at xs4all.nl: fix too-long line]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung at kernel.org>


[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3c1350501c21db8e3b1a38d9e97db29694305c3b

** Patch added: "v2: clarify why upstreaming is not needed"
   https://bugs.launchpad.net/ubuntu/+source/v4l2loopback/+bug/1899633/+attachment/5424119/+files/focal-proposed-fix.debdiff

** Patch removed: "focal-proposed-fix.debdiff"
   https://bugs.launchpad.net/ubuntu/+source/v4l2loopback/+bug/1899633/+attachment/5421730/+files/focal-proposed-fix.debdiff

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1899633

Title:
  Repeated kernel warnings/stacktraces with kernel 5.4 and newer

Status in v4l2loopback package in Ubuntu:
  Fix Released
Status in v4l2loopback source package in Focal:
  In Progress

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/media/v4l2-core/v4l2-ioctl.c:1064 v4l_querycap+0x8f/0xa0 [videodev]
  - WARNING: CPU: 2 PID: 7234 at drivers/media/v4l2-core/v4l2-ioctl.c:1069 v4l_querycap+0x8f/0xa0 [videodev]

  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_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT as those capabilities
  might be optionally set when calling v4l_querycap() to indicate
  readyness.

  Testcase: 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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/v4l2loopback/+bug/1899633/+subscriptions



More information about the Ubuntu-sponsors mailing list