PERFORCE change 113346 for review
Todd Miller
millert at FreeBSD.org
Mon Jan 22 16:06:08 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=113346
Change 113346 by millert at millert_macbook on 2007/01/22 16:05:42
Back out some changes to the vendor code that made soalloc()
take M_WAIT or M_WAITOK instead of a boolean. There's no
good reason to deviate like this and the conversion has
been a source of several bugs. This does mean we need to
be careful and convert waitok to M_WAITOK/M_NOWAIT when we
call in to the framework but this is as simple as passing
in !waitok instead.
Affected files ...
.. //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/uipc_socket.c#8 edit
.. //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/uipc_socket2.c#8 edit
Differences ...
==== //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/uipc_socket.c#8 (text+ko) ====
@@ -282,7 +282,7 @@
lck_mtx_unlock(so_cache_mtx);
- if (waitok == M_WAITOK)
+ if (waitok)
*so = (struct socket *) zalloc(so_cache_zone);
else
*so = (struct socket *) zalloc_noblock(so_cache_zone);
@@ -432,7 +432,8 @@
so->so_gencnt = ++so_gencnt;
so->so_zone = socket_zone;
#ifdef MAC
- if (mac_socket_label_init(so, waitok) != 0) {
+ /* Convert waitok to M_WAITOK/M_NOWAIT for MAC Framework. */
+ if (mac_socket_label_init(so, !waitok) != 0) {
sodealloc(so);
return (NULL);
}
@@ -475,7 +476,7 @@
#endif
if (prp->pr_type != type)
return (EPROTOTYPE);
- so = soalloc(M_WAITOK, dom, type);
+ so = soalloc(p != 0, dom, type);
if (so == 0)
return (ENOBUFS);
==== //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/uipc_socket2.c#8 (text+ko) ====
@@ -286,7 +286,7 @@
if (head->so_qlen > 3 * head->so_qlimit / 2)
return ((struct socket *)0);
- so = soalloc(M_NOWAIT, head->so_proto->pr_domain->dom_family, head->so_type);
+ so = soalloc(1, head->so_proto->pr_domain->dom_family, head->so_type);
if (so == NULL)
return ((struct socket *)0);
/* check if head was closed during the soalloc */
More information about the trustedbsd-cvs
mailing list