Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 May 2016 17:14:24 +0000 (UTC)
From:      Scott Long <scottl@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r300219 - in head/sys: kern sys
Message-ID:  <201605191714.u4JHEOnn037348@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: scottl
Date: Thu May 19 17:14:24 2016
New Revision: 300219
URL: https://svnweb.freebsd.org/changeset/base/300219

Log:
  Adjust the creation of tq_name so it can be freed correctly
  
  Reviewed by:	jhb, allanjude
  Differential Revision:	D6454

Modified:
  head/sys/kern/subr_taskqueue.c
  head/sys/sys/taskqueue.h

Modified: head/sys/kern/subr_taskqueue.c
==============================================================================
--- head/sys/kern/subr_taskqueue.c	Thu May 19 17:02:33 2016	(r300218)
+++ head/sys/kern/subr_taskqueue.c	Thu May 19 17:14:24 2016	(r300219)
@@ -128,16 +128,17 @@ _taskqueue_create(const char *name, int 
 		 int mtxflags, const char *mtxname __unused)
 {
 	struct taskqueue *queue;
-	char *tq_name = NULL;
+	char *tq_name;
 
-	if (name != NULL)
-		tq_name = strndup(name, 32, M_TASKQUEUE);
-	if (tq_name == NULL)
-		tq_name = "taskqueue";
+	tq_name = malloc(TASKQUEUE_NAMELEN, M_TASKQUEUE, mflags | M_ZERO);
+	if (!tq_name)
+		return (NULL);
+
+	snprintf(tq_name, TASKQUEUE_NAMELEN, "%s", (name) ? name : "taskqueue");
 
 	queue = malloc(sizeof(struct taskqueue), M_TASKQUEUE, mflags | M_ZERO);
 	if (!queue)
-		return NULL;
+		return (NULL);
 
 	STAILQ_INIT(&queue->tq_queue);
 	TAILQ_INIT(&queue->tq_active);
@@ -153,7 +154,7 @@ _taskqueue_create(const char *name, int 
 		queue->tq_flags |= TQ_FLAGS_UNLOCKED_ENQUEUE;
 	mtx_init(&queue->tq_mutex, tq_name, NULL, mtxflags);
 
-	return queue;
+	return (queue);
 }
 
 struct taskqueue *

Modified: head/sys/sys/taskqueue.h
==============================================================================
--- head/sys/sys/taskqueue.h	Thu May 19 17:02:33 2016	(r300218)
+++ head/sys/sys/taskqueue.h	Thu May 19 17:14:24 2016	(r300219)
@@ -56,6 +56,7 @@ enum taskqueue_callback_type {
 #define	TASKQUEUE_CALLBACK_TYPE_MIN	TASKQUEUE_CALLBACK_TYPE_INIT
 #define	TASKQUEUE_CALLBACK_TYPE_MAX	TASKQUEUE_CALLBACK_TYPE_SHUTDOWN
 #define	TASKQUEUE_NUM_CALLBACKS		TASKQUEUE_CALLBACK_TYPE_MAX + 1
+#define	TASKQUEUE_NAMELEN		32
 
 typedef void (*taskqueue_callback_fn)(void *context);
 



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