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: