PERFORCE change 113833 for review
Roman Divacky
rdivacky at FreeBSD.org
Thu Feb 1 14:04:02 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=113833
Change 113833 by rdivacky at 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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/kernel.h>
==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#30 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <dev/sound/pcm/vchan.h>
#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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
More information about the p4-projects
mailing list