On Thu, Sep 22, 2016 at 04:09:37PM +0200, Sebastien Marie wrote:
> Hi,
> 
> After rebuilding kernel under i386, I experimented splassert.
> 
> Here is a shorten backtrace handwritten:
> 
> splassert: sorwakeup: want 64 have 0
> Starting stack trace...
> splassertfail(...)
> splassertfail(...)
> splassertcheck(...)
> sorwakeup(...)
> route_input(...)
> rt_ifmsg(...)
> ifioctl(...)
> sys_ioctl(...)
> syscall(...)
> --- syscall (number 959474688) ---
> 
> (I could rewrite the complete version on request as I shoted pictures
> and it is reproductible easily).
> 
> It occurs at boottime during network starting.
> 
> My configuration is simple:
> $ cat /etc/hostname.bce0
> dhcp
> rtsol
> 
> The splassert is trigged during `rtsol' processing, as removing it makes
> the laptop to boot.
> 
> Below the dmesg (while running without ipv6).
> -- 
> Sebastien Marie

I hit this too.  Is this the proper fix?

Index: if.c
===================================================================
RCS file: /cvs/src/sys/net/if.c,v
retrieving revision 1.449
diff -u -p -r1.449 if.c
--- if.c        20 Sep 2016 16:14:43 -0000      1.449
+++ if.c        21 Sep 2016 16:51:39 -0000
@@ -1898,7 +1898,9 @@ ifioctl(struct socket *so, u_long cmd, c
 
                ifp->if_xflags = (ifp->if_xflags & IFXF_CANTCHANGE) |
                        (ifr->ifr_flags & ~IFXF_CANTCHANGE);
+               s = splsoftnet();
                rt_ifmsg(ifp);
+               splx(s);
                break;
 
        case SIOCSIFMETRIC:

Reply via email to