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

next in thread | previous in thread | raw e-mail | index | archive | help
Actually there is exactly ONE flag that got mixed..
and you have luckily found it..


On Fri, 21 Sep 2001, John Baldwin wrote:

> 
> 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?Pine.BSF.4.21.0109211714410.37053-100000>