On Mon, Sep 26, 2016 at 01:55:01PM +0100, Stuart Henderson wrote:
> Seen about a dozen times on a box doing ospfd + ospf6d (for internal
> routes), bgpd (for default route) + isakmpd, shortly after startup
> after updating:
> 
> splassert: sorwakeup: want 5 have 4                                   
> Starting stack trace...              
> splassert_check() at splassert_check+0x78
> sorwakeup() at sorwakeup+0x27            
> timeout_run() at timeout_run+0x48
> softclock() at softclock+0x14c   
> softintr_dispatch() at softintr_dispatch+0x8b
> Xsoftclock() at Xsoftclock+0x1f              
> --- interrupt ---              
> end of kernel    
> end trace frame: 0x51, count: 251
> 0x8:                             
> End of stack trace.
>

Perhaps this?

Index: rtsock.c
===================================================================
RCS file: /cvs/src/sys/net/rtsock.c,v
retrieving revision 1.206
diff -u -p -r1.206 rtsock.c
--- rtsock.c    24 Sep 2016 19:27:10 -0000      1.206
+++ rtsock.c    26 Sep 2016 17:23:21 -0000
@@ -302,6 +302,7 @@ rt_senddesync(void *data)
        struct rawcb    *rp;
        struct routecb  *rop;
        struct mbuf     *desync_mbuf;
+       int              s;
 
        rp = (struct rawcb *)data;
        rop = (struct routecb *)rp;
@@ -317,7 +318,9 @@ rt_senddesync(void *data)
                    (sbappendaddr(&rp->rcb_socket->so_rcv, &route_src, 
                    desync_mbuf, (struct mbuf *)NULL) != 0)) {
                        rop->flags &= ~ROUTECB_FLAG_DESYNC;
+                       s = splsoftnet();
                        sorwakeup(rp->rcb_socket);
+                       splx(s);
                } else {
                        m_freem(desync_mbuf);
                        /* Re-add timeout to try sending msg again */

Reply via email to