From owner-p4-projects@FreeBSD.ORG Mon Jan 22 16:05:50 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A6D0916A563; Mon, 22 Jan 2007 16:05:50 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7FFFD16A46D for ; Mon, 22 Jan 2007 16:05:50 +0000 (UTC) (envelope-from millert@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6F5B913C4A5 for ; Mon, 22 Jan 2007 16:05:50 +0000 (UTC) (envelope-from millert@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0MG5luO027467 for ; Mon, 22 Jan 2007 16:05:47 GMT (envelope-from millert@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0MG5lMK027464 for perforce@freebsd.org; Mon, 22 Jan 2007 16:05:47 GMT (envelope-from millert@freebsd.org) Date: Mon, 22 Jan 2007 16:05:47 GMT Message-Id: <200701221605.l0MG5lMK027464@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to millert@freebsd.org using -f From: Todd Miller To: Perforce Change Reviews Cc: Subject: PERFORCE change 113346 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jan 2007 16:05:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=113346 Change 113346 by millert@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 */