Index: if.c =================================================================== RCS file: /cvs/src/sys/net/if.c,v retrieving revision 1.434 diff -u -p -r1.434 if.c --- if.c 10 Jun 2016 20:33:29 -0000 1.434 +++ if.c 19 Jul 2016 13:30:25 -0000 @@ -241,8 +241,7 @@ ifinit(void) timeout_set(&net_tick_to, net_tick, &net_tick_to); - softnettq = taskq_create("softnet", 1, IPL_NET, - TASKQ_MPSAFE | TASKQ_CANTSLEEP); + softnettq = taskq_create("softnet", 1, IPL_NET, TASKQ_MPSAFE); if (softnettq == NULL) panic("unable to create softnet taskq"); @@ -624,8 +623,8 @@ if_input(struct ifnet *ifp, struct mbuf_ } #endif - mq_enlist(&if_input_queue, ml); - task_add(softnettq, &if_input_task); + if (mq_enlist(&if_input_queue, ml) == 0) + task_add(softnettq, &if_input_task); } int @@ -783,6 +782,8 @@ if_input_process(void *xmq) return; add_net_randomness(ml_len(&ml)); + + KERNEL_ASSERT_UNLOCKED(); s = splnet(); while ((m = ml_dequeue(&ml)) != NULL) {