From owner-trustedbsd-cvs@FreeBSD.ORG Thu Feb 23 19:03:56 2006 Return-Path: X-Original-To: trustedbsd-cvs@freebsd.org Delivered-To: trustedbsd-cvs@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ADEF216A423 for ; Thu, 23 Feb 2006 19:03:56 +0000 (GMT) (envelope-from owner-perforce@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.FreeBSD.org (Postfix) with ESMTP id E7BB143D53 for ; Thu, 23 Feb 2006 19:03:55 +0000 (GMT) (envelope-from owner-perforce@freebsd.org) Received: from mx2.freebsd.org (mx2.freebsd.org [216.136.204.119]) by cyrus.watson.org (Postfix) with ESMTP id 8F07D46B2E for ; Thu, 23 Feb 2006 14:03:38 -0500 (EST) Received: from hub.freebsd.org (hub.freebsd.org [216.136.204.18]) by mx2.freebsd.org (Postfix) with ESMTP id 8EF115693F; Thu, 23 Feb 2006 19:03:54 +0000 (GMT) (envelope-from owner-perforce@freebsd.org) Received: by hub.freebsd.org (Postfix, from userid 32767) id 7FDFD16A424; Thu, 23 Feb 2006 19:03:54 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 432EA16A420 for ; Thu, 23 Feb 2006 19:03:54 +0000 (GMT) (envelope-from millert@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 065F643D4C for ; Thu, 23 Feb 2006 19:03:54 +0000 (GMT) (envelope-from millert@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k1NJ3rAH014293 for ; Thu, 23 Feb 2006 19:03:53 GMT (envelope-from millert@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k1NJ3rU0014290 for perforce@freebsd.org; Thu, 23 Feb 2006 19:03:53 GMT (envelope-from millert@freebsd.org) Date: Thu, 23 Feb 2006 19:03:53 GMT Message-Id: <200602231903.k1NJ3rU0014290@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 92280 for review X-BeenThere: trustedbsd-cvs@FreeBSD.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: TrustedBSD CVS and Perforce commit message list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Feb 2006 19:03:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=92280 Change 92280 by millert@millert_g4tower on 2006/02/23 19:02:58 Fix long-standing panic. io_free() calls mac_destroy_port_label() on a potentially-uninitialized port label. To fix, be sure to always intialized a port's label after its creation by io_alloc(). The best place for this is right after the ipc_port_t is bzero()d. Affected files ... .. //depot/projects/trustedbsd/sedarwin7/src/darwin/xnu/osfmk/ipc/ipc_object.c#8 edit Differences ... ==== //depot/projects/trustedbsd/sedarwin7/src/darwin/xnu/osfmk/ipc/ipc_object.c#8 (text+ko) ==== @@ -336,6 +336,9 @@ ipc_port_t port = (ipc_port_t)object; bzero((char *)port, sizeof(*port)); +#ifdef MAC + mac_init_port_label(&port->ip_label); +#endif } else if (otype == IOT_PORT_SET) { ipc_pset_t pset = (ipc_pset_t)object; @@ -404,6 +407,9 @@ ipc_port_t port = (ipc_port_t)object; bzero((char *)port, sizeof(*port)); +#ifdef MAC + mac_init_port_label(&port->ip_label); +#endif } else if (otype == IOT_PORT_SET) { ipc_pset_t pset = (ipc_pset_t)object; @@ -999,7 +1005,8 @@ * User allocated label handles can never be modified. */ -struct label *io_getlabel (ipc_object_t objp) +struct label *io_getlabel( + ipc_object_t objp) { ipc_port_t port = (ipc_port_t) objp; @@ -1030,10 +1037,8 @@ #endif /* MACH_ASSERT */ #ifdef MAC - /* XXX: This was never getting called before, - and calling it now causes problems. */ - - mac_destroy_port_label (&port->ip_label); + /* Port label should have been initialized after creation. */ + mac_destroy_port_label(&port->ip_label); #endif } zfree(ipc_object_zones[otype], (vm_offset_t) object);