** Merge proposal linked:
   
https://code.launchpad.net/~seyeongkim/ubuntu/+source/v4l2loopback/+git/v4l2loopback/+merge/509080

** Description changed:

  [Impact]
  
- Linux 6.18 changed two things that v4l2loopback 0.12.7 does not handle.
+ Linux 6.18 added a "struct file *filp" parameter to v4l2_fh_add() and
+ v4l2_fh_del() (include/media/v4l2-fh.h).
  
- v4l2_fh_add() and v4l2_fh_del() gained a "struct file *filp" parameter,
- so the DKMS build fails:
- 
+ v4l2loopback 0.12.7 still calls both with the old single-argument signature, 
so the DKMS build fails against the noble 7.0 HWE kernel:
      v4l2loopback.c:2089: error: too few arguments to function 'v4l2_fh_add'
      v4l2loopback.c:2117: error: too few arguments to function 'v4l2_fh_del'
  
- dkms autoinstall runs from /etc/kernel/header_postinst.d/dkms, so on
- Ubuntu 24.04 LTS the build failure aborts the kernel header postinst
- with exit status 11 and leaves the package unconfigured. Every
- subsequent apt operation then fails until the user removes v4l2loopback-
- dkms by hand. linux-hwe-7.0 is published in both noble-updates and
- noble-security, so affected systems receive the kernel automatically. 37
- users are affected and 25 duplicates were filed within a week.
+ The impact is not limited to the virtual camera.
+ dkms autoinstall runs from /etc/kernel/header_postinst.d/dkms, so the build 
failure aborts the kernel header postinst with exit status 11 and leaves the 
kernel meta package unconfigured.
  
- The core also stopped letting drivers reach their own file handle by
- container_of() on the "fh" argument or on file->private_data, and
- requires the new file_to_v4l2_fh() accessor instead. Fixing only the
- build failure is therefore not enough: the module then builds and loads,
- but oopses as soon as a consumer opens the device.
+ Every subsequent apt operation, including security updates, then fails
+ until the user removes v4l2loopback-dkms by hand.
  
-     BUG: unable to handle page fault for address: fffffffffffffffc
-     RIP: 0010:vidioc_reqbufs+0xa2/0x3b0 [v4l2loopback]
+ linux-hwe-7.0 is published in both noble-updates and noble-security, so
+ affected systems receive the kernel automatically.
+ 
+ 37 users are affected and 25 duplicates were filed within a week.
+ 
+ Fixing only the call signature is not enough.
+ 
+ 0.12.7 walks and reorders dev->outbufs_list in vidioc_dqbuf() without holding 
a lock, which panics with "list_del corruption" while streaming once the module 
builds again (LP: #2161239).
+ Both fixes are in this upload.
  
  [Test Plan]
  
- On a noble system or container that has v4l2loopback-dkms installed:
- 
+ On a noble system with v4l2loopback-dkms installed:
      sudo apt-get install -y linux-headers-7.0.0-28-generic
  
  - Without the fix
- 
-     Error! Bad return status for module build on kernel: 7.0.0-28-generic 
(x86_64)
      run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
      dpkg: error processing package linux-headers-7.0.0-28-generic 
(--configure)
      E: Sub-process /usr/bin/dpkg returned an error code (1)
  
- "dpkg -l linux-headers-7.0.0-28-generic" reports state iF, and every
- later apt run ends with the same dpkg error.
+ apt stays broken until v4l2loopback-dkms is removed.
  
  - With the fix
- 
      sudo apt-get install -y -t noble-proposed v4l2loopback-dkms
-     dpkg -l linux-headers-7.0.0-28-generic
      dkms status v4l2loopback
  
- Installing the fixed package completes the pending header configuration
- on its own, the header package moves to state ii, apt runs cleanly
- again, and dkms status reports v4l2loopback installed for every kernel
- whose headers are present, including the 6.8 GA kernel.
+ The header package configures cleanly and dkms status reports v4l2loopback 
installed for 7.0.0-28-generic.
+ The GA kernel must be unaffected on the same system:
  
- Then boot the 7.0 HWE kernel and exercise the device:
+     sudo apt-get install -y linux-headers-6.8.0-136-generic
+     dkms status v4l2loopback
  
-     sudo modprobe v4l2loopback devices=1 max_buffers=4
-     ffmpeg -loglevel error -re -f lavfi -i testsrc=size=640x480:rate=30 -t 30 
-f v4l2 /dev/video0 &
-     ffmpeg -loglevel error -f v4l2 -i /dev/video0 -t 25 -f null -
+ The module must also build for 6.8.0-136-generic.
+ The locking fix, on a machine running 7.0:
  
- Both commands must exit 0 and "dmesg" must contain no oops. Without the
- accessor fix the consumer is killed and dmesg shows the vidioc_reqbufs
- page fault above.
+     sudo modprobe v4l2loopback devices=1
+     ffmpeg -re -f lavfi -i testsrc=size=640x480:rate=30 -t 60 -f v4l2 
/dev/video0 &
+     ffplay -f v4l2 -i /dev/video0
  
- Repeat the same streaming check on the 6.8 GA kernel to confirm it is
- unchanged.
+ Streaming must run to completion with the machine responsive.
+ Without the locking fix this panics and requires a hard power cycle.
  
  [Where problems could occur]
  
- If either compat macro is wrong, the module fails to build on one of the
- two kernels noble supports, leaving apt in the broken state this SRU is
- fixing, or resolves the opener incorrectly and oopses on the first ioctl
- a consumer issues.
+ If the compat macro guard or the new list_lock is wrong, the module
+ either stops building on one of the two kernels noble supports, leaving
+ apt in the broken state this SRU is fixing, or stalls every consumer of
+ the loopback device during output streaming.
  
  [Other Info]
  
  Fixed upstream in v4l2loopback 0.15.2 by
  
https://github.com/v4l2loopback/v4l2loopback/commit/3b09d3c53997f5f05e8d0db9222706585dbbe67a
  Fix compilation with linux-6.18.0
  (with its follow-up ce8474158c6e, which applies the same change to 
v4l2_fh_del)
  
- and in 0.15.3 by
- 
https://github.com/v4l2loopback/v4l2loopback/commit/6b33fe1f682881eb268ab9fc85f231acc5564ac8
- use linux>=6.18 accessor for v4l2->private_data
+ [ORIGINAL DESCRIPTION]
+ 
+ v4l2loopback.c: In function ‘v4l2_loopback_open’:
+ v4l2loopback.c:2089:9: error: too few arguments to function ‘v4l2_fh_add’
+  2089 |         v4l2_fh_add(&opener->fh);
+       |         ^~~~~~~~~~~
+ In file included from 
/usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-subdev.h:17,
+                  from 
/usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-device.h:13,
+                  from v4l2loopback.c:31:
+ /usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-fh.h:97:6: note: 
declared here
+    97 | void v4l2_fh_add(struct v4l2_fh *fh, struct file *filp);
+       |      ^~~~~~~~~~~
+ v4l2loopback.c: In function ‘v4l2_loopback_close’:
+ v4l2loopback.c:2117:9: error: too few arguments to function ‘v4l2_fh_del’
+  2117 |         v4l2_fh_del(&opener->fh);
+       |         ^~~~~~~~~~~
+ /usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-fh.h:125:6: note: 
declared here
+   125 | void v4l2_fh_del(struct v4l2_fh *fh, struct file *filp);
+       |      ^~~~~~~~~~~
+ 
+ ProblemType: Package
+ DistroRelease: Ubuntu 24.04
+ Package: linux-headers-7.0.0-28-generic 7.0.0-28.28~24.04.1
+ ProcVersionSignature: Ubuntu 6.17.0-35.35~24.04.1-generic 6.17.13
+ Uname: Linux 6.17.0-35-generic x86_64
+ NonfreeKernelModules: nvidia_modeset nvidia
+ ApportVersion: 2.28.2-0ubuntu0.1
+ Architecture: amd64
+ AudioDevicesInUse:
+  USER        PID ACCESS COMMAND
+  /dev/snd/controlC0:  tom-brown   2572 F.... wireplumber
+  /dev/snd/controlC1:  tom-brown   2572 F.... wireplumber
+  /dev/snd/seq:        tom-brown   2567 F.... pipewire
+ CRDA: N/A
+ CasperMD5CheckResult: pass
+ Date: Thu Jul 16 22:52:40 2026
+ ErrorMessage: installed linux-headers-7.0.0-28-generic package 
post-installation script subprocess returned error exit status 11
+ InstallationDate: Installed on 2025-12-20 (209 days ago)
+ InstallationMedia: Ubuntu 24.04.3 LTS "Noble Numbat" - Release amd64 
(20250805.1)
+ Lsusb:
+  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
+  Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
+  Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
+  Bus 001 Device 004: ID 0bda:57c3 Realtek Semiconductor Corp. 
Integrated_Webcam_HD
+  Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
+ MachineType: Dell Inc. Precision 7510
+ ProcFB: 0 i915drmfb
+ ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.17.0-35-generic 
root=UUID=0cd37cd1-1382-4191-9107-b090419b644e ro quiet splash vt.handoff=7
+ Python3Details: /usr/bin/python3.12, Python 3.12.3, python3-minimal, 
3.12.3-0ubuntu2.1
+ PythonDetails: N/A
+ RelatedPackageVersions: grub-pc N/A
+ SourcePackage: linux-hwe-7.0
+ Title: package linux-headers-7.0.0-28-generic 7.0.0-28.28~24.04.1 failed to 
install/upgrade: installed linux-headers-7.0.0-28-generic package 
post-installation script subprocess returned error exit status 11
+ UpgradeStatus: No upgrade log present (probably fresh install)
+ dmi.bios.date: 03/09/2023
+ dmi.bios.release: 1.31
+ dmi.bios.vendor: Dell Inc.
+ dmi.bios.version: 1.31.3
+ dmi.board.name: 0MJ7KG
+ dmi.board.vendor: Dell Inc.
+ dmi.board.version: A00
+ dmi.chassis.type: 9
+ dmi.chassis.vendor: Dell Inc.
+ dmi.modalias: 
dmi:bvnDellInc.:bvr1.31.3:bd03/09/2023:br1.31:svnDellInc.:pnPrecision7510:pvr:rvnDellInc.:rn0MJ7KG:rvrA00:cvnDellInc.:ct9:cvr:sku06D9:
+ dmi.product.family: Precision
+ dmi.product.name: Precision 7510
+ dmi.product.sku: 06D9
+ dmi.sys.vendor: Dell Inc.

** Description changed:

  [Impact]
  
  Linux 6.18 added a "struct file *filp" parameter to v4l2_fh_add() and
  v4l2_fh_del() (include/media/v4l2-fh.h).
  
  v4l2loopback 0.12.7 still calls both with the old single-argument signature, 
so the DKMS build fails against the noble 7.0 HWE kernel:
      v4l2loopback.c:2089: error: too few arguments to function 'v4l2_fh_add'
      v4l2loopback.c:2117: error: too few arguments to function 'v4l2_fh_del'
  
  The impact is not limited to the virtual camera.
  dkms autoinstall runs from /etc/kernel/header_postinst.d/dkms, so the build 
failure aborts the kernel header postinst with exit status 11 and leaves the 
kernel meta package unconfigured.
  
  Every subsequent apt operation, including security updates, then fails
  until the user removes v4l2loopback-dkms by hand.
  
  linux-hwe-7.0 is published in both noble-updates and noble-security, so
  affected systems receive the kernel automatically.
  
  37 users are affected and 25 duplicates were filed within a week.
  
  Fixing only the call signature is not enough.
  
- 0.12.7 walks and reorders dev->outbufs_list in vidioc_dqbuf() without holding 
a lock, which panics with "list_del corruption" while streaming once the module 
builds again (LP: #2161239).
+ Linux 6.18 also requires the new file_to_v4l2_fh() accessor to reach the file 
handle, so with only the signature fix the module builds and loads but oopses 
as soon as a consumer opens the device:
+     BUG: unable to handle page fault for address: fffffffffffffffc
+     RIP: 0010:vidioc_reqbufs+0xa2/0x3b0 [v4l2loopback]
+ 
  Both fixes are in this upload.
  
  [Test Plan]
  
  On a noble system with v4l2loopback-dkms installed:
      sudo apt-get install -y linux-headers-7.0.0-28-generic
  
  - Without the fix
      run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
      dpkg: error processing package linux-headers-7.0.0-28-generic 
(--configure)
      E: Sub-process /usr/bin/dpkg returned an error code (1)
  
  apt stays broken until v4l2loopback-dkms is removed.
  
  - With the fix
      sudo apt-get install -y -t noble-proposed v4l2loopback-dkms
      dkms status v4l2loopback
  
  The header package configures cleanly and dkms status reports v4l2loopback 
installed for 7.0.0-28-generic.
  The GA kernel must be unaffected on the same system:
  
      sudo apt-get install -y linux-headers-6.8.0-136-generic
      dkms status v4l2loopback
  
  The module must also build for 6.8.0-136-generic.
- The locking fix, on a machine running 7.0:
+ The oops fix, on a machine running 7.0:
  
      sudo modprobe v4l2loopback devices=1
      ffmpeg -re -f lavfi -i testsrc=size=640x480:rate=30 -t 60 -f v4l2 
/dev/video0 &
      ffplay -f v4l2 -i /dev/video0
  
- Streaming must run to completion with the machine responsive.
- Without the locking fix this panics and requires a hard power cycle.
+ Streaming must run to completion with no oops in dmesg.
+ Without the accessor fix the consumer is killed and dmesg shows the 
vidioc_reqbufs page fault above.
  
  [Where problems could occur]
  
- If the compat macro guard or the new list_lock is wrong, the module
- either stops building on one of the two kernels noble supports, leaving
- apt in the broken state this SRU is fixing, or stalls every consumer of
- the loopback device during output streaming.
+ If either compat macro is wrong, the module either stops building on one
+ of the two kernels noble supports, leaving apt in the broken state this
+ SRU is fixing, or resolves the opener incorrectly and oopses on the
+ first ioctl a consumer issues.
  
  [Other Info]
  
  Fixed upstream in v4l2loopback 0.15.2 by
  
https://github.com/v4l2loopback/v4l2loopback/commit/3b09d3c53997f5f05e8d0db9222706585dbbe67a
  Fix compilation with linux-6.18.0
  (with its follow-up ce8474158c6e, which applies the same change to 
v4l2_fh_del)
+ 
+ and in 0.15.3 by
+ 
https://github.com/v4l2loopback/v4l2loopback/commit/6b33fe1f682881eb268ab9fc85f231acc5564ac8
+ use linux>=6.18 accessor for v4l2->private_data
  
  [ORIGINAL DESCRIPTION]
  
  v4l2loopback.c: In function ‘v4l2_loopback_open’:
  v4l2loopback.c:2089:9: error: too few arguments to function ‘v4l2_fh_add’
   2089 |         v4l2_fh_add(&opener->fh);
        |         ^~~~~~~~~~~
  In file included from 
/usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-subdev.h:17,
                   from 
/usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-device.h:13,
                   from v4l2loopback.c:31:
  /usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-fh.h:97:6: note: 
declared here
     97 | void v4l2_fh_add(struct v4l2_fh *fh, struct file *filp);
        |      ^~~~~~~~~~~
  v4l2loopback.c: In function ‘v4l2_loopback_close’:
  v4l2loopback.c:2117:9: error: too few arguments to function ‘v4l2_fh_del’
   2117 |         v4l2_fh_del(&opener->fh);
        |         ^~~~~~~~~~~
  /usr/src/linux-headers-7.0.0-28-generic/include/media/v4l2-fh.h:125:6: note: 
declared here
    125 | void v4l2_fh_del(struct v4l2_fh *fh, struct file *filp);
        |      ^~~~~~~~~~~
  
  ProblemType: Package
  DistroRelease: Ubuntu 24.04
  Package: linux-headers-7.0.0-28-generic 7.0.0-28.28~24.04.1
  ProcVersionSignature: Ubuntu 6.17.0-35.35~24.04.1-generic 6.17.13
  Uname: Linux 6.17.0-35-generic x86_64
  NonfreeKernelModules: nvidia_modeset nvidia
  ApportVersion: 2.28.2-0ubuntu0.1
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  tom-brown   2572 F.... wireplumber
   /dev/snd/controlC1:  tom-brown   2572 F.... wireplumber
   /dev/snd/seq:        tom-brown   2567 F.... pipewire
  CRDA: N/A
  CasperMD5CheckResult: pass
  Date: Thu Jul 16 22:52:40 2026
  ErrorMessage: installed linux-headers-7.0.0-28-generic package 
post-installation script subprocess returned error exit status 11
  InstallationDate: Installed on 2025-12-20 (209 days ago)
  InstallationMedia: Ubuntu 24.04.3 LTS "Noble Numbat" - Release amd64 
(20250805.1)
  Lsusb:
   Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
   Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
   Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
   Bus 001 Device 004: ID 0bda:57c3 Realtek Semiconductor Corp. 
Integrated_Webcam_HD
   Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
  MachineType: Dell Inc. Precision 7510
  ProcFB: 0 i915drmfb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.17.0-35-generic 
root=UUID=0cd37cd1-1382-4191-9107-b090419b644e ro quiet splash vt.handoff=7
  Python3Details: /usr/bin/python3.12, Python 3.12.3, python3-minimal, 
3.12.3-0ubuntu2.1
  PythonDetails: N/A
  RelatedPackageVersions: grub-pc N/A
  SourcePackage: linux-hwe-7.0
  Title: package linux-headers-7.0.0-28-generic 7.0.0-28.28~24.04.1 failed to 
install/upgrade: installed linux-headers-7.0.0-28-generic package 
post-installation script subprocess returned error exit status 11
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 03/09/2023
  dmi.bios.release: 1.31
  dmi.bios.vendor: Dell Inc.
  dmi.bios.version: 1.31.3
  dmi.board.name: 0MJ7KG
  dmi.board.vendor: Dell Inc.
  dmi.board.version: A00
  dmi.chassis.type: 9
  dmi.chassis.vendor: Dell Inc.
  dmi.modalias: 
dmi:bvnDellInc.:bvr1.31.3:bd03/09/2023:br1.31:svnDellInc.:pnPrecision7510:pvr:rvnDellInc.:rn0MJ7KG:rvrA00:cvnDellInc.:ct9:cvr:sku06D9:
  dmi.product.family: Precision
  dmi.product.name: Precision 7510
  dmi.product.sku: 06D9
  dmi.sys.vendor: Dell Inc.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2161037

Title:
  v4l2loopback fails to build and then oopses on kernel 7.0 HWE

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


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to