Hi Matthew Ruffell
First of all, thank you for your response.
If you want to reproduce this issue, you can try the following steps:
1. Boot the Ubuntu 24 system and modify the kernel boot parameters to include virtio_pci.force_legacy=1.
2. Use perf-tools or ftrace to trace the return value of the virtio_pci_legacy_probe function.
3. Insert a virtio network card or disk, and observe the return value of the virtio_pci_legacy_probe function within the guest OS to confirm a successful return of 0x0, indicating that the virtio device has been enabled using virtio_pci_legacy_probe.
4. Remove the network card or disk, and you should be able to reproduce the issue.
I have installed and tested the test kernel you built on Ubuntu 24, and
it's working fine. Additionally, I have also backported the patch from
https://github.com/torvalds/linux/commit/c8fae27d141a32a1624d0d0d5419d94252824498
(virtio-pci: Check if is_avq is NULL) and compiled the Ubuntu kernel,
which also has no issues.
--
You received this bug notification because you are subscribed to linux
in Ubuntu.
Matching subscriptions: Bgg, Bmail, Nb
https://bugs.launchpad.net/bugs/2067862
Title:
remove virtio legacy device make kernel Oops
Status in linux package in Ubuntu:
Fix Released
Status in linux source package in Noble:
New
Bug description:
In the Ubuntu 24's 6.8.0-31-generic kernel version, the capability
https://github.com/torvalds/linux/commit/fd27ef6b44bec26915c5b2b22c13856d9f0ba17a
(virtio-pci: Introduce admin virtqueue) was added. However, an issue
was overlooked by the upstream community, which is that if the virtio
device is not a modern virtio device, but a legacy virtio device, the
is_avq function pointer is not assigned, resulting in a NULL pointer
for the is_avq function pointer in the virtio_pci_device structure of
the legacy virtio device. When unloading the virtio device, if the
code calls if (vp_dev->is_avq(vdev, vq->index)), the RIP register of
the CPU points to a NULL pointer address.
I have noticed that the kernel community has already included a
related solution, and I hope that the Ubuntu kernel can backport to
support the remove operation for legacy virtio devices:
https://github.com/torvalds/linux/commit/c8fae27d141a32a1624d0d0d5419d94252824498
(virtio-pci: Check if is_avq is NULL).
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2067862/+subscriptions
Комментариев нет:
Отправить комментарий