On Thu, Jan 20, 2011 at 10:31 +0200, Gregory Edigarov wrote:
> --- interrupt ---
> end trace frame: 0x0, count: 245
> 0x8:
> End of stack trace.
> pppoe0: received unexpected PADO
> pppoe0: chap failure
> pppoe: GENERIC ERROR: RP-PPPoE: Child pppd process terminated
> pppoe0: received unexpected PADO
> pppoe0: chap failure
> pppoe: GENERIC ERROR: RP-PPPoE: Child pppd process terminated
> pppoe0: received unexpected PADO
> pppoe0: chap failure
> pppoe: GENERIC ERROR: RP-PPPoE: Child pppd process terminated
> pppoe0: received unexpected PADO
> splassert: assertwaitok: want -1 have 1
> Starting stack trace...
> assertwaitok() at assertwaitok+0x1c
> pool_get() at pool_get+0x95
> ifa_item_insert() at ifa_item_insert+0x35
> ifa_add() at ifa_add+0x43
> in_ifinit() at in_ifinit+0x16f
> sppp_set_ip_addrs() at sppp_set_ip_addrs+0x107
> sppp_ipcp_tlu() at sppp_ipcp_tlu+0x4e
> sppp_input() at sppp_input+0x594
> pppoeintr() at pppoeintr+0x41d
> netintr() at netintr+0x97
> softintr_dispatch() at softintr_dispatch+0x5d
> Xsoftnet() at Xsoftnet+0x28
> --- interrupt ---
> end trace frame: 0x0, count: 245
> 0x8:
> End of stack trace.
> 

seems like this is the only plausible way to fix it:

Index: net/if.c
===================================================================
RCS file: /home/cvs/src/sys/net/if.c,v
retrieving revision 1.231
diff -u -p -r1.231 if.c
--- net/if.c    29 Nov 2010 19:38:59 -0000      1.231
+++ net/if.c    20 Jan 2011 11:11:53 -0000
@@ -2213,7 +2213,7 @@ ifa_item_insert(struct sockaddr *sa, str
 {
        struct ifaddr_item      *ifai, *p;
 
-       ifai = pool_get(&ifaddr_item_pl, PR_WAITOK);
+       ifai = pool_get(&ifaddr_item_pl, PR_NOWAIT);
        ifai->ifai_addr = sa;
        ifai->ifai_ifa = ifa;
        ifai->ifai_rdomain = ifp->if_rdomain;

Reply via email to