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>