Skip site navigation (1)Skip section navigation (2)
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>