From owner-p4-projects@FreeBSD.ORG Thu Feb 1 14:04:02 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 9916F16A403; Thu, 1 Feb 2007 14:04:02 +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 7250216A401 for ; Thu, 1 Feb 2007 14:04:02 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 94A9913C49D for ; Thu, 1 Feb 2007 14:04:00 +0000 (UTC) (envelope-from rdivacky@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 l11E3te7004745 for ; Thu, 1 Feb 2007 14:03:55 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l11E3tg8004741 for perforce@freebsd.org; Thu, 1 Feb 2007 14:03:55 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 1 Feb 2007 14:03:55 GMT Message-Id: <200702011403.l11E3tg8004741@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113833 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: Thu, 01 Feb 2007 14:04:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=113833 Change 113833 by rdivacky@rdivacky_witten on 2007/02/01 14:02:53 IFC Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux.h#17 integrate .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#33 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#30 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#54 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_socket.c#13 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pcm/buffer.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pcm/buffer.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pcm/vchan.c#3 integrate .. //depot/projects/linuxolator/src/sys/i386/linux/linux.h#13 integrate .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#27 integrate Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux.h#17 (text+ko) ==== @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.10 2006/12/20 20:17:34 jkim Exp $ + * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.11 2007/02/01 13:36:19 kib Exp $ */ #ifndef _AMD64_LINUX_LINUX_H_ ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#33 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.28 2007/01/23 08:46:49 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.30 2007/02/01 13:27:51 kib Exp $"); #include #include ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#30 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.13 2007/01/20 14:58:59 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.14 2007/02/01 13:29:27 kib Exp $"); #include "opt_compat.h" @@ -254,9 +254,10 @@ struct linux_emuldata *em; /* - * XXX: is it racy? if p->p_sysent still points at linux_sysvec - * it is. someone please check this. we were running with - * this race for quite a long time though. + * XXX:There's a race because here we assign p->p_emuldata NULL + * but the process is still counted as linux one for a short + * time so some other process might reference it and try to + * access its p->p_emuldata and panicing on a NULL reference. */ em = em_find(p, EMUL_DONTLOCK); ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#54 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.205 2007/01/07 19:30:19 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.206 2007/02/01 13:33:33 kib Exp $"); #include "opt_compat.h" #include "opt_mac.h" ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_socket.c#13 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.71 2006/09/23 19:06:54 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.72 2007/02/01 13:36:19 kib Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -1074,7 +1074,7 @@ return (error); if ((error = copyin(PTRIN(args->msg), &msg, sizeof (msg)))) - return (error); + return (error); bsd_args.s = linux_args.s; bsd_args.msg = PTRIN(linux_args.msg); ==== //depot/projects/linuxolator/src/sys/dev/sound/pcm/buffer.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ #include "feeder_if.h" -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/buffer.c,v 1.29 2006/11/26 12:24:05 ariff Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/buffer.c,v 1.30 2007/02/01 09:46:03 ariff Exp $"); struct snd_dbuf * sndbuf_create(device_t dev, char *drv, char *desc, struct pcm_channel *channel) @@ -46,6 +46,12 @@ void sndbuf_destroy(struct snd_dbuf *b) { + if (b->tmpbuf) + free(b->tmpbuf, M_DEVBUF); + if (b->shadbuf) + free(b->shadbuf, M_DEVBUF); + if (!(b->flags & SNDBUF_F_MANAGED) && b->buf) + free(b->buf, M_DEVBUF); free(b, M_DEVBUF); } @@ -85,6 +91,7 @@ b->maxsize = size; b->bufsize = b->maxsize; b->buf_addr = 0; + b->flags |= SNDBUF_F_MANAGED; if (bus_dmamem_alloc(b->dmatag, (void **)&b->buf, BUS_DMA_NOWAIT, &b->dmamap)) return (ENOMEM); @@ -104,6 +111,8 @@ int sndbuf_setup(struct snd_dbuf *b, void *buf, unsigned int size) { + if (buf) + b->flags |= SNDBUF_F_MANAGED; b->buf = buf; b->maxsize = size; b->bufsize = b->maxsize; @@ -122,6 +131,9 @@ b->shadbuf = NULL; b->sl = 0; + if (!(b->flags & SNDBUF_F_MANAGED) && b->buf) + free(b->buf, M_DEVBUF); + if (b->dmamap) bus_dmamap_unload(b->dmatag, b->dmamap); ==== //depot/projects/linuxolator/src/sys/dev/sound/pcm/buffer.h#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/sound/pcm/buffer.h,v 1.13 2006/11/26 12:24:05 ariff Exp $ + * $FreeBSD: src/sys/dev/sound/pcm/buffer.h,v 1.14 2007/02/01 09:46:03 ariff Exp $ */ #define SND_DMA(b) (sndbuf_getflags((b)) & SNDBUF_F_DMA) @@ -32,6 +32,7 @@ #define SNDBUF_F_DMA 0x00000001 #define SNDBUF_F_XRUN 0x00000002 #define SNDBUF_F_RUNNING 0x00000004 +#define SNDBUF_F_MANAGED 0x00000008 #define SNDBUF_NAMELEN 48 ==== //depot/projects/linuxolator/src/sys/dev/sound/pcm/vchan.c#3 (text+ko) ==== @@ -32,7 +32,7 @@ #include #include "feeder_if.h" -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/vchan.c,v 1.26 2006/11/26 12:24:06 ariff Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/vchan.c,v 1.27 2007/02/01 09:30:01 ariff Exp $"); MALLOC_DEFINE(M_VCHANFEEDER, "vchanfeed", "pcm vchan feeder"); @@ -334,6 +334,7 @@ static int vchan_free(kobj_t obj, void *data) { + free(data, M_DEVBUF); return 0; } ==== //depot/projects/linuxolator/src/sys/i386/linux/linux.h#13 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/i386/linux/linux.h,v 1.72 2006/12/20 20:17:35 jkim Exp $ + * $FreeBSD: src/sys/i386/linux/linux.h,v 1.73 2007/02/01 13:36:19 kib Exp $ */ #ifndef _I386_LINUX_LINUX_H_ ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#27 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/linux/linux_machdep.c,v 1.68 2007/01/23 08:46:50 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/linux/linux_machdep.c,v 1.69 2007/02/01 13:27:52 kib Exp $"); #include #include