David Gwynne <da...@gwynne.id.au> writes:

> 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?

Thanks for your reply and having looked at it.  I applied the patch and
it solved the above described issue.  

Christian

>
> 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;
>  
>

Reply via email to