Subject: Re: Process credentials change
To: Bill Studenmund <wrstuden@netbsd.org>
From: Jason Thorpe <thorpej@shagadelic.org>
List: tech-kern
Date: 07/10/2006 21:02:00
On Jul 10, 2006, at 4:45 PM, Bill Studenmund wrote:

> I perhaps was sloppy with "upgrade." I specificaly meant a reader/ 
> writer
> lock going from reader to writer mode. The exact "upgrade" behavior of
> lockmgr isn't important to the issue.

Going from "shared" -> "exclusive" is in fact the whole problem.   
It's ugly no matter how you look at it :-)

> Agreed. Right now, I think the only question is what we are  
> promising and
> what standards require.

SUSv3 is silent on the issue, as far as I can tell.  SCO UnixWare 7  
says this:

<quote>
Considerations for threads programming

This ID number is an attribute of the containing process and is  
shared by sibling threads.

</quote>

...which says nothing about the synchronization.

Linux pre-NPTL had the property that setuid only affected the calling  
thread, and Andrew's suggestion does not have that problem.

> Oh, that'd be "interesting" if we don't just stay in the kernel  
> since a
> given userland thread can hop around LWPs. :-)

Well, on OS X, threads don't hop around LWPs, so it's not really an  
issue (there is a 1-1 mapping between a pthread and a kernel thread  
in Mach threads).

Even with the hopping property, I don't think it would be that  
difficult to implement similar per-thread credentials -- it just  
becomes part of the thread context that is saved/restored.  I mean,  
the process already had the privileges to set the thread's  
credentials in the first place, so there is no danger in restoring it  
when the thread runs again.

-- thorpej