"kernel NULL pointer dereference" when passing Hauppauge TV tuner to VM

Aluminite

New Member
Apr 11, 2022
3
0
1
Yesterday, I restarted my home server for updates after about ~100 days of uptime. After restarting it, everything was acting very strangely and the system wasn't responding properly. I was able to narrow this down fairly easily to the TV tuner I have plugged into the machine, a Hauppauge WinTV-DualHD, which is normally passed through to a virtual machine on the system.
Here's the error log:
Apr 10 13:26:56.898621 proxmox kernel: em28xx 1-13.1:1.0: Disconnecting em28xx #1
Apr 10 13:26:56.898856 proxmox kernel: em28xx 1-13.1:1.0: Disconnecting em28xx
Apr 10 13:26:56.898981 proxmox kernel: em28xx 1-13.1:1.0: Closing DVB extension
Apr 10 13:26:56.902656 proxmox kernel: em28xx 1-13.1:1.0: Closing DVB extension
Apr 10 13:26:56.902821 proxmox kernel: em28xx 1-13.1:1.0: Closing input extension
Apr 10 13:26:56.902919 proxmox kernel: em28xx 1-13.1:1.0: Closing input extension
Apr 10 13:26:57.098806 proxmox kernel: em28xx 1-13.1:1.0: Closing input extension
Apr 10 13:26:57.099283 proxmox kernel: em28xx 1-13.1:1.0: Freeing device
Apr 10 13:26:57.099429 proxmox kernel: BUG: kernel NULL pointer dereference, address: 0000000000000008
Apr 10 13:26:57.099611 proxmox kernel: #PF: supervisor write access in kernel mode
Apr 10 13:26:57.099708 proxmox kernel: #PF: error_code(0x0002) - not-present page
Apr 10 13:26:57.099933 proxmox kernel: PGD 0 P4D 0
Apr 10 13:26:57.100161 proxmox kernel: Oops: 0002 [#1] SMP NOPTI
Apr 10 13:26:57.100193 proxmox kernel: CPU: 3 PID: 4340 Comm: kvm Tainted: P O 5.13.19-6-pve #1
Apr 10 13:26:57.100203 proxmox kernel: Hardware name: Gigabyte Technology Co., Ltd. Z390 AORUS PRO WIFI/Z390 AORUS PRO WIFI-CF, BIOS F12 11/05/2021
Apr 10 13:26:57.100214 proxmox kernel: RIP: 0010:em28xx_close_extension+0x75/0xb0 [em28xx]
Apr 10 13:26:57.100225 proxmox kernel: Code: 89 e7 e8 3e f9 38 d5 48 8b 1b 48 81 fb 00 30 e8 c0 75 cd 49 8b 84 24 f0 01 00 00 49 8b 94 24 e8 01 00 00 48 c7 c7 20 30 e8 c0 <48> 89 42 08 48 89 10 48 b8 00 01 00 00 00 00 ad de 49 89 84 24 e8
Apr 10 13:26:57.100236 proxmox kernel: RSP: 0018:ffffaf0623263cd0 EFLAGS: 00010246
Apr 10 13:26:57.100247 proxmox kernel: RAX: 0000000000000000 RBX: ffffffffc0e83000 RCX: 0000000000000000
Apr 10 13:26:57.100258 proxmox kernel: RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffffc0e83020
Apr 10 13:26:57.100389 proxmox kernel: RBP: ffffaf0623263ce0 R08: 0000000000000003 R09: 0000000000000000
Apr 10 13:26:57.100404 proxmox kernel: R10: ffff9e3988a16001 R11: ffff9e3988a16000 R12: ffff9e3988a16000
Apr 10 13:26:57.100431 proxmox kernel: R13: ffffffffc0e830d0 R14: ffffffffc0e830d0 R15: ffff9e3990948030
Apr 10 13:26:57.100453 proxmox kernel: FS: 00007f737c770080(0000) GS:ffff9e4511580000(0000) knlGS:0000000000000000
Apr 10 13:26:57.100463 proxmox kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Apr 10 13:26:57.100473 proxmox kernel: CR2: 0000000000000008 CR3: 0000000274106004 CR4: 00000000003726e0
Apr 10 13:26:57.100482 proxmox kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Apr 10 13:26:57.100492 proxmox kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Apr 10 13:26:57.100502 proxmox kernel: Call Trace:
Apr 10 13:26:57.100513 proxmox kernel: <TASK>
Apr 10 13:26:57.100643 proxmox kernel: em28xx_usb_disconnect.cold+0x8b/0xcb [em28xx]
Apr 10 13:26:57.100670 proxmox kernel: usb_unbind_interface+0x90/0x280
Apr 10 13:26:57.100693 proxmox kernel: __device_release_driver+0x181/0x240
Apr 10 13:26:57.100702 proxmox kernel: device_release_driver+0x29/0x40
Apr 10 13:26:57.100712 proxmox kernel: usb_driver_release_interface+0x46/0x90
Apr 10 13:26:57.100722 proxmox kernel: proc_ioctl.part.0+0x1be/0x200
Apr 10 13:26:57.100732 proxmox kernel: ? __cond_resched+0x1a/0x50
Apr 10 13:26:57.100742 proxmox kernel: usbdev_ioctl+0xb6e/0x11e0
Apr 10 13:26:57.100752 proxmox kernel: ? __fget_files+0x86/0xc0
Apr 10 13:26:57.100879 proxmox kernel: ? __fget_files+0x86/0xc0
Apr 10 13:26:57.100892 proxmox kernel: __x64_sys_ioctl+0x91/0xc0
Apr 10 13:26:57.100916 proxmox kernel: do_syscall_64+0x61/0xb0
Apr 10 13:26:57.100949 proxmox kernel: ? do_syscall_64+0x6e/0xb0
Apr 10 13:26:57.100959 proxmox kernel: ? do_syscall_64+0x6e/0xb0
Apr 10 13:26:57.100969 proxmox kernel: ? asm_exc_page_fault+0x8/0x30
Apr 10 13:26:57.100980 proxmox kernel: entry_SYSCALL_64_after_hwframe+0x44/0xae
Apr 10 13:26:57.101104 proxmox kernel: RIP: 0033:0x7f7386db0cc7
Apr 10 13:26:57.101117 proxmox kernel: Code: 00 00 00 48 8b 05 c9 91 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 99 91 0c 00 f7 d8 64 89 01 48
Apr 10 13:26:57.101160 proxmox kernel: RSP: 002b:00007ffdc3e0c218 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
Apr 10 13:26:57.101170 proxmox kernel: RAX: ffffffffffffffda RBX: 0000561acd0cf790 RCX: 00007f7386db0cc7
Apr 10 13:26:57.101180 proxmox kernel: RDX: 00007ffdc3e0c220 RSI: 00000000c0105512 RDI: 0000000000000027
Apr 10 13:26:57.101190 proxmox kernel: RBP: 0000000000000027 R08: 00007ffdc3e0c260 R09: 0000000000000007
Apr 10 13:26:57.101313 proxmox kernel: R10: 00007f7386e7ab80 R11: 0000000000000246 R12: 0000561acb2ac52a
Apr 10 13:26:57.101327 proxmox kernel: R13: 0000561acb61ce80 R14: 00007ffdc3e0c390 R15: 0000000000000000
Apr 10 13:26:57.101350 proxmox kernel: </TASK>
Apr 10 13:26:57.101381 proxmox kernel: Modules linked in: binfmt_misc tcp_diag inet_diag veth ebtable_filter ebtables ip_set ip6table_raw iptable_raw ip6table_filter ip6_tables iptable_filter bpfilter bonding tls softdog nfnetlink_log nfnetlink rc_hauppauge em28xx_rc si2157 lgdt3306a i2c_mux em28xx_dvb dvb_core int>
Apr 10 13:26:57.101403 proxmox kernel: ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi vfio_pci vfio_virqfd irqbypass vfio_iommu_type1 vfio drm sunrpc ip_tables x_tables autofs4 btrfs blake2b_generic xor zstd_compress raid6_pq hid_generic usbkbd usbhid hid dm_thin_pool dm_persistent_data dm_bio_prison>
Apr 10 13:26:57.101527 proxmox kernel: CR2: 0000000000000008
Apr 10 13:26:57.101540 proxmox kernel: ---[ end trace d72719bd028b840a ]---
Apr 10 13:26:57.101565 proxmox kernel: RIP: 0010:em28xx_close_extension+0x75/0xb0 [em28xx]
Apr 10 13:26:57.101592 proxmox kernel: Code: 89 e7 e8 3e f9 38 d5 48 8b 1b 48 81 fb 00 30 e8 c0 75 cd 49 8b 84 24 f0 01 00 00 49 8b 94 24 e8 01 00 00 48 c7 c7 20 30 e8 c0 <48> 89 42 08 48 89 10 48 b8 00 01 00 00 00 00 ad de 49 89 84 24 e8
Apr 10 13:26:57.101602 proxmox kernel: RSP: 0018:ffffaf0623263cd0 EFLAGS: 00010246
Apr 10 13:26:57.101612 proxmox kernel: RAX: 0000000000000000 RBX: ffffffffc0e83000 RCX: 0000000000000000
Apr 10 13:26:57.101622 proxmox kernel: RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffffc0e83020
Apr 10 13:26:57.101739 proxmox kernel: RBP: ffffaf0623263ce0 R08: 0000000000000003 R09: 0000000000000000
Apr 10 13:26:57.101765 proxmox kernel: R10: ffff9e3988a16001 R11: ffff9e3988a16000 R12: ffff9e3988a16000
Apr 10 13:26:57.101793 proxmox kernel: R13: ffffffffc0e830d0 R14: ffffffffc0e830d0 R15: ffff9e3990948030
Apr 10 13:26:57.101801 proxmox kernel: FS: 00007f737c770080(0000) GS:ffff9e4511580000(0000) knlGS:0000000000000000
Apr 10 13:26:57.101810 proxmox kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Apr 10 13:26:57.101819 proxmox kernel: CR2: 0000000000000008 CR3: 0000000274106005 CR4: 00000000003726e0
Apr 10 13:26:57.101830 proxmox kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Apr 10 13:26:57.101949 proxmox kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
This wasn't a huge deal to fix, I just added blacklist em28xx to /etc/modprobe.d/blacklist.conf. The thing is, though, this didn't happen before yesterday. Which makes me wonder, is this a kernel bug? Before I restarted the system, it was on kernel 5.13.19-2-pve (from November). After restarting, it's now 5.13.19-6-pve. My best guess is that there was some sort of bug introduced between these two versions.
 
Looks like this has happened to other people here and here. I have a USB WInTV-DualHD passed to a container (driver em28xx on host), but I don't recall having this issue. Probably because I already move to pve-kernel 5.15, or just lucky.

EDIT: Is there a way to "blacklist" USB devices on the Proxmox host, instead of blacklisting all drivers for those devices?
 
Last edited:
I did a bit of testing with a fresh install and it seems like the bug was introduced in pve-kernel-5.13.19-3-pve, it does not happen at all with -2.
... but I don't recall having this issue. Probably because I already move to pve-kernel 5.15, or just lucky.
I tried 5.15.30-1-pve and am getting the exact same issue there.
 
I did a bit of testing with a fresh install and it seems like the bug was introduced in pve-kernel-5.13.19-3-pve, it does not happen at all with -2.

I tried 5.15.30-1-pve and am getting the exact same issue there.
I don't have this problem with the same kernel and MythTV in a container, probably because the USB devices is not being disconnected (when it switches from the host to your VM)?
 
Your configuration seems to be a bit different from mine, yes. The problem seems to be from when the device is being "disconnected" in software from the host. I'm not familiar with USB passthrough to containers, but it probably works differently from a VM.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!