threads/186309: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Sat Feb 1 18:20:01 UTC 2014


The following reply was made to PR threads/186309; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: threads/186309: commit references a PR
Date: Sat,  1 Feb 2014 18:13:26 +0000 (UTC)

 Author: kib
 Date: Sat Feb  1 18:13:18 2014
 New Revision: 261354
 URL: http://svnweb.freebsd.org/changeset/base/261354
 
 Log:
   In _pthread_kill(), if passed pthread is current thread, do not send
   the signal second time, by adding the missed else before if statement.
   
   While there, postpone initializing local curthread variable until
   passed signal number is checked for validity.
   
   Submitted by:	John Wolfe <jlw at xinuos.com>
   PR:	threads/186309
   MFC after:	1 week
 
 Modified:
   head/lib/libthr/thread/thr_kill.c
 
 Modified: head/lib/libthr/thread/thr_kill.c
 ==============================================================================
 --- head/lib/libthr/thread/thr_kill.c	Sat Feb  1 17:53:35 2014	(r261353)
 +++ head/lib/libthr/thread/thr_kill.c	Sat Feb  1 18:13:18 2014	(r261354)
 @@ -42,24 +42,27 @@ __weak_reference(_pthread_kill, pthread_
  int
  _pthread_kill(pthread_t pthread, int sig)
  {
 -	struct pthread *curthread = _get_curthread();
 +	struct pthread *curthread;
  	int ret;
  
  	/* Check for invalid signal numbers: */
  	if (sig < 0 || sig > _SIG_MAXSIG)
  		/* Invalid signal: */
 -		ret = EINVAL;
 +		return (EINVAL);
 +
 +	curthread = _get_curthread();
 +
  	/*
  	 * Ensure the thread is in the list of active threads, and the
  	 * signal is valid (signal 0 specifies error checking only) and
  	 * not being ignored:
  	 */
 -	else if (curthread == pthread) {
 +	if (curthread == pthread) {
  		if (sig > 0)
  			_thr_send_sig(pthread, sig);
  		ret = 0;
 -	} if ((ret = _thr_find_thread(curthread, pthread, /*include dead*/0))
 -	    == 0) {
 +	} else if ((ret = _thr_find_thread(curthread, pthread,
 +	    /*include dead*/0)) == 0) {
  		if (sig > 0)
  			_thr_send_sig(pthread, sig);
  		THR_THREAD_UNLOCK(curthread, pthread);
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-threads mailing list