Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Sep 2001 16:04:30 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Julian Elischer <julian@elischer.org>
Cc:        cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org
Subject:   Re: cvs commit: src/sys/kern sys_generic.c
Message-ID:  <XFMail.010921160430.jhb@FreeBSD.org>
In-Reply-To: <Pine.BSF.4.21.0109211635160.37053-100000@InterJet.elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 21-Sep-01 Julian Elischer wrote:
> 
> 
> On Fri, 21 Sep 2001, John Baldwin wrote:
> 
>> jhb         2001/09/21 15:06:22 PDT
>> 
>>   Modified files:
>>     sys/kern             sys_generic.c 
>>   Log:
>>   The P_SELECT flag was moved from p->p_flag to td->td_flags, but p_flag
>>   was locked by the proc lock and td_flags is locked by the sched_lock.
>>   The places that read, set, and cleared TDF_SELECT weren't updated, so they
>>   read and modified td_flags w/o holding the sched_lock, meaning that they
>>   could corrupt the per-thread flags field.  As an immediate band-aid,
>>   grab sched_lock while reading and manipulating td_flags in relation to
>>   TDF_SELECT.  This will probably be cleaned up some later on.
> 
> 
> reading this again I think the clue is:
> 
> "and td_flags is locked by the sched_lock"
> 
> I don't know how this can be true unless it's been done recently..
> Whatever locking was used for p_flag was left alone when I change it to 
> td_flags in some places, so if p_flag was locked by the proc lock then
> td_flags should also be locked by it..  (I didn't change any occurances of 
> the prock lock to be occurances of the sched lock)!

If you recall our earlier discussion regarding TDF_DEADLKTREAT, you told me you
had split up p_sflag into teh various flags, not p_flag.  Actually, it seems
you did exactly what I first feared: you mixed P_* flags and PS_* flags which
had different locking semantics.  (That's why p_flag was originally split up
into the p_flag and p_sflag fields for SMPng.)

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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