Date: Thu, 4 Dec 2014 23:17:36 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r275486 - stable/10/cddl/contrib/opensolaris/lib/libzpool/common Message-ID: <201412042317.sB4NHaH9001683@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: delphij Date: Thu Dec 4 23:17:35 2014 New Revision: 275486 URL: https://svnweb.freebsd.org/changeset/base/275486 Log: MFC r274303: Apply upstream 13597:3eac1e8e0f4c (git: illumos-gate@aa846ad9): Initialize tqent_flags in the userland taskq implementation. Without this the assertion of tq->tq_freelist != NULL may fail in taskq_destroy. The problem is that tqent_flags is never initialized in the userland implementation while the kernel one does initialize it. Without proper initialization, the flag may have its lowest bit set, making it treated as TQENT_FLAG_PREALLOC and never removing taskq_ent_t from tq_freelist. Modified: stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Dec 4 23:15:44 2014 (r275485) +++ stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Dec 4 23:17:35 2014 (r275486) @@ -24,6 +24,7 @@ */ /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2012 Garrett D'Amore <garrett@damore.org>. All rights reserved. */ #include <sys/zfs_context.h> @@ -136,6 +137,7 @@ taskq_dispatch(taskq_t *tq, task_func_t t->tqent_prev->tqent_next = t; t->tqent_func = func; t->tqent_arg = arg; + t->tqent_flags = 0; cv_signal(&tq->tq_dispatch_cv); mutex_exit(&tq->tq_lock); return (1);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412042317.sB4NHaH9001683>