Don't set SOFTINT_MPSAFE to vioif_rx_softint
vioif_rx_softint calls vioif_populate_rx_mbufs that is not MPSAFE. vioif_populate_rx_mbufs is also called via vioif_ioctl and so can be called by two LWPs simultaneously, resulting in kernel panic. PR kern/49007
This commit is contained in:
parent
2f97720d54
commit
dd5f48796e
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: if_vioif.c,v 1.4 2013/05/09 12:23:17 minoura Exp $ */
|
||||
/* $NetBSD: if_vioif.c,v 1.5 2014/07/18 02:10:55 ozaki-r Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2010 Minoura Makoto.
|
||||
@ -26,7 +26,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_vioif.c,v 1.4 2013/05/09 12:23:17 minoura Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_vioif.c,v 1.5 2014/07/18 02:10:55 ozaki-r Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -557,7 +557,7 @@ vioif_attach(device_t parent, device_t self, void *aux)
|
||||
}
|
||||
}
|
||||
|
||||
sc->sc_rx_softint = softint_establish(SOFTINT_NET|SOFTINT_MPSAFE,
|
||||
sc->sc_rx_softint = softint_establish(SOFTINT_NET,
|
||||
vioif_rx_softint, sc);
|
||||
if (sc->sc_rx_softint == NULL) {
|
||||
aprint_error_dev(self, "cannot establish softint\n");
|
||||
|
Loading…
Reference in New Issue
Block a user