From owner-svn-src-user@FreeBSD.ORG  Wed Nov 11 00:46:55 2009
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4223C106566C;
	Wed, 11 Nov 2009 00:46:55 +0000 (UTC)
	(envelope-from kmacy@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 187D08FC17;
	Wed, 11 Nov 2009 00:46:55 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nAB0ksvB076929;
	Wed, 11 Nov 2009 00:46:54 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nAB0ksZl076927;
	Wed, 11 Nov 2009 00:46:54 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911110046.nAB0ksZl076927@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Wed, 11 Nov 2009 00:46:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r199161 - user/kmacy/releng_7_2_xen/sys/xen/xenbus
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Nov 2009 00:46:55 -0000

Author: kmacy
Date: Wed Nov 11 00:46:54 2009
New Revision: 199161
URL: http://svn.freebsd.org/changeset/base/199161

Log:
  check for malloc failures

Modified:
  user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c

Modified: user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c
==============================================================================
--- user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c	Tue Nov 10 23:03:51 2009	(r199160)
+++ user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c	Wed Nov 11 00:46:54 2009	(r199161)
@@ -332,8 +332,9 @@ join(const char *dir, const char *name)
 {
 	char *buffer;
 
-	buffer = malloc(strlen(dir) + strlen("/") + strlen(name) + 1,
-	    M_DEVBUF, M_WAITOK);
+	if ((buffer = malloc(strlen(dir) + strlen("/") + strlen(name) + 1,
+		    M_DEVBUF, M_NOWAIT)) == NULL)
+		return (NULL);
 
 	strcpy(buffer, dir);
 	if (strcmp(name, "")) {
@@ -379,6 +380,9 @@ xenbus_directory(struct xenbus_transacti
 	int error;
 
 	path = join(dir, node);
+	if (path == NULL)
+		return (ENOMEM);
+
 	error = xs_single(t, XS_DIRECTORY, path, &len, (void **) &strings);
 	free(path, M_DEVBUF);
 	if (error)
@@ -562,8 +566,11 @@ xenbus_printf(struct xenbus_transaction 
 #define PRINTF_BUFFER_SIZE 4096
 	char *printf_buffer;
 
-	printf_buffer = malloc(PRINTF_BUFFER_SIZE, M_DEVBUF, M_WAITOK);
+	printf_buffer = malloc(PRINTF_BUFFER_SIZE, M_DEVBUF, M_NOWAIT);
 
+	if (printf_buffer == NULL)
+		return (ENOMEM);
+	
 	va_start(ap, fmt);
 	ret = vsnprintf(printf_buffer, PRINTF_BUFFER_SIZE, fmt, ap);
 	va_end(ap);
@@ -789,7 +796,9 @@ xs_process_msg(enum xsd_sockmsg_type *ty
 	char *body;
 	int error;
 		
-	msg = malloc(sizeof(*msg), M_DEVBUF, M_WAITOK);
+	if ((msg = malloc(sizeof(*msg), M_DEVBUF, M_NOWAIT)) == NULL)
+		return (ENOMEM);
+		
 	mtx_lock(&xs_state.reply_lock);
 	error = xb_read(&msg->hdr, sizeof(msg->hdr), &xs_state.reply_lock.lock_object);
 	mtx_unlock(&xs_state.reply_lock);
@@ -798,7 +807,11 @@ xs_process_msg(enum xsd_sockmsg_type *ty
 		return (error);
 	}
 
-	body = malloc(msg->hdr.len + 1, M_DEVBUF, M_WAITOK);
+	if ((body = malloc(msg->hdr.len + 1, M_DEVBUF, M_NOWAIT)) == NULL) {
+		free(msg, M_DEVBUF);
+		return (ENOMEM);
+	}
+		
 	mtx_lock(&xs_state.reply_lock);
 	error = xb_read(body, msg->hdr.len, &xs_state.reply_lock.lock_object); 
 	mtx_unlock(&xs_state.reply_lock);