kern/38502 ifconfig wi0 hangs

Don't acquire the socket lock for PRU_CONTROL.
This commit is contained in:
ad 2008-04-29 18:35:14 +00:00
parent 9bdeb71266
commit 68c83ab9c7
1 changed files with 2 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: sys_socket.c,v 1.57 2008/04/28 20:24:05 martin Exp $ */ /* $NetBSD: sys_socket.c,v 1.58 2008/04/29 18:35:14 ad Exp $ */
/*- /*-
* Copyright (c) 2008 The NetBSD Foundation, Inc. * Copyright (c) 2008 The NetBSD Foundation, Inc.
@ -58,7 +58,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: sys_socket.c,v 1.57 2008/04/28 20:24:05 martin Exp $"); __KERNEL_RCSID(0, "$NetBSD: sys_socket.c,v 1.58 2008/04/29 18:35:14 ad Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/systm.h> #include <sys/systm.h>
@ -189,11 +189,9 @@ soo_ioctl(file_t *fp, u_long cmd, void *data)
else if (IOCGROUP(cmd) == 'r') else if (IOCGROUP(cmd) == 'r')
error = rtioctl(cmd, data, curlwp); error = rtioctl(cmd, data, curlwp);
else { else {
solock(so);
error = (*so->so_proto->pr_usrreq)(so, PRU_CONTROL, error = (*so->so_proto->pr_usrreq)(so, PRU_CONTROL,
(struct mbuf *)cmd, (struct mbuf *)data, NULL, (struct mbuf *)cmd, (struct mbuf *)data, NULL,
curlwp); curlwp);
sounlock(so);
} }
KERNEL_UNLOCK_ONE(NULL); KERNEL_UNLOCK_ONE(NULL);
break; break;