Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Feb 2015 12:18:39 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r278313 - head/lib/libthr/thread
Message-ID:  <201502061218.t16CIdrW081811@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Fri Feb  6 12:18:38 2015
New Revision: 278313
URL: https://svnweb.freebsd.org/changeset/base/278313

Log:
  Fully initialize allocated memory for the new barrier.  The
  b_destroying member was left uninitialized, which caused spurious
  EBUSY.
  
  PR:	197365
  Noted by:	Florent Guiliani <fguiliani@verisign.com>
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/lib/libthr/thread/thr_barrier.c

Modified: head/lib/libthr/thread/thr_barrier.c
==============================================================================
--- head/lib/libthr/thread/thr_barrier.c	Fri Feb  6 10:10:57 2015	(r278312)
+++ head/lib/libthr/thread/thr_barrier.c	Fri Feb  6 12:18:38 2015	(r278313)
@@ -86,16 +86,13 @@ _pthread_barrier_init(pthread_barrier_t 
 	if (barrier == NULL || count <= 0)
 		return (EINVAL);
 
-	bar = malloc(sizeof(struct pthread_barrier));
+	bar = calloc(1, sizeof(struct pthread_barrier));
 	if (bar == NULL)
 		return (ENOMEM);
 
 	_thr_umutex_init(&bar->b_lock);
 	_thr_ucond_init(&bar->b_cv);
-	bar->b_cycle	= 0;
-	bar->b_waiters	= 0;
 	bar->b_count	= count;
-	bar->b_refcount = 0;
 	*barrier	= bar;
 
 	return (0);



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