[Bug 278392] virtio: device_detach crashes the system
Date: Tue, 16 Apr 2024 17:29:45 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=278392 Bug ID: 278392 Summary: virtio: device_detach crashes the system Product: Base System Version: 14.0-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Many People Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: sade@blackberry.com Steps to reproduce: devctl delete -f vtnet0 devctl delete -f virtio_pci0 Reason: When the the child device is deleted, vtpci_child_dev is not set to NULL. Thus, vtpci_delete_child() tries to delete the child again and system crashes. Possible fix: Implementing bus_child_deleted method for vtpci legacy/modern devices which would clear vtpci_child_dev when child is deleted. I.e: vtpci_legacy_child_deleted(device_t dev, device_t child) { struct vtpci_legacy_softc *sc; sc = device_get_softc(dev); sc->vtpci_common.vtpci_child_dev = NULL; } Logs: root@freebsd:~ # devctl delete -f vtnet0 Apr 16 15:35:15 freebsd dhclient[592]: receive_packet failed on vtnet0: Device not configured Apr 16 15:35:15 freebsd dhclient[592]: ioctl(SIOCGIFFLAGS) on vtnet0: Operation not permitted Apr 16 15:35:15 freebsd dhclient[592]: Interface vtnet0 no longer appears valid. Apr 16 15:35:15 freebsd dhclient[592]: No live interfaces to poll on - exiting. Apr 16 15:35:15 freebsd dhclient[592]: exiting. Apr 16 15:35:15 freebsd dhclient[592]: connection closed Apr 16 15:35:15 freebsd dhclient[592]: exiting. vtnet0: detached root@freebsd:~ # devctl delete -f virtio_pci0 Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00 fault virtual address = 0x800 fault code = supervisor read data, page not present instruction pointer = 0x20:0xffffffff80b91407 stack pointer = 0x28:0xfffffe004beeea10 frame pointer = 0x28:0xfffffe004beeea40 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = interrupt enabled, IOPL = 0 current process = 1064 (devctl) rdi: fffff80003625100 rsi: ffffffff816d9e30 rdx: 0000000000000020 rcx: fffff800036d3600 r8: fffffe004c165000 r9: 0000000000000000 rax: 0000000000000000 rbx: ffffffff816d9e30 rbp: fffffe004beeea40 r10: 0000000000000000 r11: fffffe004c165520 r12: fffff8000305e928 r13: 0000000000000000 r14: fffff80003625100 r15: fffffe004c165000 trap number = 12 panic: page fault cpuid = 0 time = 1713281726 KDB: stack backtrace: #0 0xffffffff80b9002d at kdb_backtrace+0x5d #1 0xffffffff80b43132 at vpanic+0x132 #2 0xffffffff80b42ff3 at panic+0x43 #3 0xffffffff8100c85c at trap_fatal+0x40c #4 0xffffffff8100c8af at trap_pfault+0x4f #5 0xffffffff80fe3828 at calltrap+0x8 #6 0xffffffff80b7db47 at device_delete_child+0x127 #7 0xffffffff8096705c at vtpci_delete_child+0x1c #8 0xffffffff8096896b at vtpci_legacy_detach+0x1b #9 0xffffffff80b7dcf6 at device_detach+0x186 #10 0xffffffff80b7da35 at device_delete_child+0x15 #11 0xffffffff80b84d32 at devctl2_ioctl+0x4d2 #12 0xffffffff809d10dc at devfs_ioctl+0xcc #13 0xffffffff80c3b9b4 at vn_ioctl+0xd4 #14 0xffffffff809d177e at devfs_ioctl_f+0x1e #15 0xffffffff80bb1535 at kern_ioctl+0x255 #16 0xffffffff80bb1273 at sys_ioctl+0x123 #17 0xffffffff8100d119 at amd64_syscall+0x109 Uptime: 5m15s Dumping 79 out of 95 MB:..21%..41%..61%..81% Dump complete -- You are receiving this mail because: You are the assignee for the bug.