[Bug 230845] VIMAGE regression: breaks netfront suspend/resume

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Aug 23 15:25:14 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=230845

            Bug ID: 230845
           Summary: VIMAGE regression: breaks netfront suspend/resume
           Product: Base System
           Version: CURRENT
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: bugs at FreeBSD.org
          Reporter: royger at freebsd.org

Hello,

It seems like some VIMAGE changes have broken netfront suspend/resume, here is
the trace on resume from suspension:

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x28
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff80c92f18
stack pointer           = 0x28:0xfffffe0000571670
frame pointer           = 0x28:0xfffffe0000571690
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 16 (xenwatch)

Tracing pid 16 tid 100074 td 0xfffff80003890580
ether_output_frame() at ether_output_frame+0x58/frame 0xfffffe0000571690
ether_output() at ether_output+0x68b/frame 0xfffffe0000571730
arprequest() at arprequest+0x444/frame 0xfffffe0000571840
arp_ifinit() at arp_ifinit+0x58/frame 0xfffffe0000571880
netfront_backend_changed() at netfront_backend_changed+0x1b4/frame
0xfffffe0000571940
xenwatch_thread() at xenwatch_thread+0x182/frame 0xfffffe0000571970
fork_exit() at fork_exit+0x84/frame 0xfffffe00005719b0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00005719b0

The code that triggers the bug in netfront is:

/**
 * If this interface has an ipv4 address, send an arp for it. This
 * helps to get the network going again after migrating hosts.
 */
static void
netfront_send_fake_arp(device_t dev, struct netfront_info *info)
{
        struct ifnet *ifp;
        struct ifaddr *ifa;

        ifp = info->xn_ifp;
        CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
                if (ifa->ifa_addr->sa_family == AF_INET) {
                        arp_ifinit(ifp, ifa);
                }
        }
}

I really have no idea of what's missing here, so any help by people involved
with VIMAGE in order to fix this regression would be greatly appreciated.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list