svn commit: r218967 - head/sys/kern

Bruce Evans brde at optusnet.com.au
Wed Feb 23 19:14:40 UTC 2011


On Wed, 23 Feb 2011, Alexander Best wrote:

> On Wed Feb 23 11, Kostik Belousov wrote:
>> On Wed, Feb 23, 2011 at 12:56:25PM +0000, John Baldwin wrote:
>>> ...
>>> Log:
>>>   Fix off-by-one error in check against max_threads_per_proc.
>>>
>>>   Submitted by:	arundel
>>>   MFC after:	1 week
>>>
>>> Modified:
>>>   head/sys/kern/kern_thr.c
>>>
>>> Modified: head/sys/kern/kern_thr.c
>>> ==============================================================================
>>> --- head/sys/kern/kern_thr.c	Wed Feb 23 10:28:37 2011	(r218966)
>>> +++ head/sys/kern/kern_thr.c	Wed Feb 23 12:56:25 2011	(r218967)
>>> @@ -153,7 +153,7 @@ create_thread(struct thread *td, mcontex
>>>  	p = td->td_proc;
>>>
>>>  	/* Have race condition but it is cheap. */
>>> -	if (p->p_numthreads >= max_threads_per_proc) {
>>> +	if (p->p_numthreads > max_threads_per_proc) {
>>>  		++max_threads_hits;
>>>  		return (EPROCLIM);
>>>  	}
>>
>> I do not think there was off by one error. The create_thread() function
>> is called to create new thread, and before the process thread counter
>> is incremented in thread_link(). The old test tried to not allow more
>> then max_threads_per_proc threads in a process, now it allows to
>> create max_threads_per_proc.

Actually, now it allows to create 1 more than max_threads_per_proc threads
in a process.

> doesn't the semantics of the term "maximum" imply that it's own value is also
> valid?

Yes.  Not 1 more.

> if a sign says maximum weight 2000kg, does that mean that a weight of 2000kg is
> invalid and the highest valid weight is 1999,999..kg?

No.  This means that if weights are always in units of kg, and are represented
by indexes starting at index 0, then the highest valid index is 1999.  But
if the index is a count of the number of kg's, then the highest valud index
is 2000.

p->p_numthreads presumably matches its name, so it is a count of a number
of threads and not a thread number.

Bruce


More information about the svn-src-head mailing list