On Wed, Apr 04, 2018 at 08:27:52PM +0200, Christian Barthel wrote: > Hello, > > After upgrading to 6.3, I've encountered a problem while using gif(4): > > Pre-Cond: fresh install of OpenBSD 6.3 > # cat /etc/hostname.gif0 > tunnel 10.0.0.1 10.0.0.2 > 10.0.0.1 10.0.0.2 > # sh /etc/netstart.sh gif0 > # ping 10.0.0.2 > <no reply, not connected with iked(3)> > > Result & Behavior: the kernel thread softnet starts running on the cpu > (STATE: run) and consumes 100% cpu time spent in system mode. The > memory consumption increases until there is no free memory (mbufpl, > mtagpl seem to grow). Even upon stopping/suspending the ping(1) process, > the sofnet thread continues to consume cpu time. Only destroying the > gif0 interface changes the softnet STATE to sleep (memory seems still > allocated). > > I've discovered this on a Hetzner virtual machine (VPS) System (dmesg > and sysinfo attached) but i also reproduced the behavior on a Thinkpad > X200 (dmesg not attached). > > Has anyone seen something similar or is there something I am missing? I > tried to backtrack (at least a bit) and I can reproduce the behavior at > least up to revision 1.109 (if_gif.c). Not sure if my config is absolute > correct but in anyway, I guess softnet shouldn't consume so much cpu > time in that case.
can you try this diff? Index: if_gif.c =================================================================== RCS file: /cvs/src/sys/net/if_gif.c,v retrieving revision 1.113 diff -u -p -r1.113 if_gif.c --- if_gif.c 15 Mar 2018 21:01:18 -0000 1.113 +++ if_gif.c 4 Apr 2018 23:12:02 -0000 @@ -403,6 +403,8 @@ gif_output(struct ifnet *ifp, struct mbu error = ENOBUFS; goto drop; } + memcpy((caddr_t)(mtag + 1), &ifp->if_index, sizeof(ifp->if_index)); + m_tag_prepend(m, mtag); m->m_pkthdr.ph_family = dst->sa_family;