Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Nov 2009 00:46:54 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r199161 - user/kmacy/releng_7_2_xen/sys/xen/xenbus
Message-ID:  <200911110046.nAB0ksZl076927@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911110046.nAB0ksZl076927>