On Wed, Apr 21, 2021 at 11:28:17PM +0200, Hrvoje Popovski wrote:
> with this diff i'm getting panic when i'm pushing traffic over that box.

Thanks for testing.

> I'm sending traffic from host connected on ix0 from address 10.10.0.1 to
> host connected to ix1 to addresses 10.11.0.1 - 10.11.255.255 at cca 10Mpps

I don't see the panic, but for you it is easily reproducable.  I
use only 1 destination address, but you have 65000.  Maybe is is a
routing or ARP issue.

> x3550m4# panic: pool_cache_item_magic_check: mbufpl cpu free list
> modified: item addr 0xfffffd8066bbd6

This is a use after free bug with the mbuf.  Either our pool is not
MP safe or mbuf handling anywhere in the driver or network stack
is buggy.

As a wild guess, you could apply this diff on top.  Something similar
has fixed IPv6 NDP problem I have seen.  Maybe it is in the routing
table, that is used for ARP and NDP.

bluhm

--- net/if_ethersubr.c
+++ net/if_ethersubr.c
@@ -222,7 +222,10 @@ ether_resolve(struct ifnet *ifp, struct mbuf *m, struct 
sockaddr *dst,
 
        switch (af) {
        case AF_INET:
+               KERNEL_LOCK();
+               /* XXXSMP there is a MP race in arpresolve() */
                error = arpresolve(ifp, rt, m, dst, eh->ether_dhost);
+               KERNEL_UNLOCK();
                if (error)
                        return (error);
                eh->ether_type = htons(ETHERTYPE_IP);

Reply via email to