Date: Fri, 17 Jun 2005 10:18:19 -0700 From: Julian Elischer <julian@elischer.org> To: Aziz Kezzou <french.linuxian@gmail.com> Cc: freebsd-hackers <freebsd-hackers@freebsd.org> Subject: Re: How to check root powers on a struct proc ? Message-ID: <42B305DB.50000@elischer.org> In-Reply-To: <3727392705061709318b9346f@mail.gmail.com> References: <3727392705061709318b9346f@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Aziz Kezzou wrote: > Hi all, > I am trying to check that a process (struct proc) has root powers when > it calls my KLD system call. > I know from kern_jail.c that I can use suser() but this function takes > a struct thread* instead of struct proc* although the credentials > (struct ucred *p_ucred;) are stored in proc ! no.. the thread has a credential that it inherrits from the proc. when a thread changes the credential of the process as a whole, the other threads in the kernel don't notice until they return from their syscalls.. in the mean time they continue to use the reference they hold to the old credential. This is so that a credential doesn;t change half way through a syscall. the active credential at entry will be the active credential for that thread until it completes its time in the kernel. > > Is there an esay way to get a struct thread* from a struct proc* ? or > should I simply use the function: int suser_cred(struct ucred *cred, > int flag); with cred = p-> p_ucred why get a struct proc? the thread has a pointer to the cred it is running under. > > BTW what would the value of flag be? > > Thanks, > -aziz > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42B305DB.50000>