svn commit: r301208 - head/sys/kern

Mateusz Guzik mjg at FreeBSD.org
Thu Jun 2 15:52:35 UTC 2016


Author: mjg
Date: Thu Jun  2 15:52:34 2016
New Revision: 301208
URL: https://svnweb.freebsd.org/changeset/base/301208

Log:
  taskqueue: plug a leak in _taskqueue_create
  
  While here make some style fixes and postpone the sprintf so that it is
  only done when the function can no longer fail.
  
  CID:	1356041

Modified:
  head/sys/kern/subr_taskqueue.c

Modified: head/sys/kern/subr_taskqueue.c
==============================================================================
--- head/sys/kern/subr_taskqueue.c	Thu Jun  2 15:31:24 2016	(r301207)
+++ head/sys/kern/subr_taskqueue.c	Thu Jun  2 15:52:34 2016	(r301208)
@@ -130,14 +130,16 @@ _taskqueue_create(const char *name, int 
 	char *tq_name;
 
 	tq_name = malloc(TASKQUEUE_NAMELEN, M_TASKQUEUE, mflags | M_ZERO);
-	if (!tq_name)
+	if (tq_name == NULL)
 		return (NULL);
 
-	snprintf(tq_name, TASKQUEUE_NAMELEN, "%s", (name) ? name : "taskqueue");
-
 	queue = malloc(sizeof(struct taskqueue), M_TASKQUEUE, mflags | M_ZERO);
-	if (!queue)
+	if (queue == NULL) {
+		free(tq_name, M_TASKQUEUE);
 		return (NULL);
+	}
+
+	snprintf(tq_name, TASKQUEUE_NAMELEN, "%s", (name) ? name : "taskqueue");
 
 	STAILQ_INIT(&queue->tq_queue);
 	TAILQ_INIT(&queue->tq_active);


More information about the svn-src-all mailing list