diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/cred.h | 25 | ||||
-rw-r--r-- | include/net/scm.h | 4 |
2 files changed, 27 insertions, 2 deletions
diff --git a/include/linux/cred.h b/include/linux/cred.h index 9d56fbdbf302..b69222cc1fd2 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -12,10 +12,35 @@ #ifndef _LINUX_CRED_H #define _LINUX_CRED_H +#define get_current_user() (get_uid(current->user)) + +#define task_uid(task) ((task)->uid) +#define task_gid(task) ((task)->gid) +#define task_euid(task) ((task)->euid) +#define task_egid(task) ((task)->egid) + +#define current_uid() (current->uid) +#define current_gid() (current->gid) +#define current_euid() (current->euid) +#define current_egid() (current->egid) +#define current_suid() (current->suid) +#define current_sgid() (current->sgid) #define current_fsuid() (current->fsuid) #define current_fsgid() (current->fsgid) #define current_cap() (current->cap_effective) +#define current_uid_gid(_uid, _gid) \ +do { \ + *(_uid) = current->uid; \ + *(_gid) = current->gid; \ +} while(0) + +#define current_euid_egid(_uid, _gid) \ +do { \ + *(_uid) = current->euid; \ + *(_gid) = current->egid; \ +} while(0) + #define current_fsuid_fsgid(_uid, _gid) \ do { \ *(_uid) = current->fsuid; \ diff --git a/include/net/scm.h b/include/net/scm.h index 06df126103ca..f160116db54a 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -54,8 +54,8 @@ static __inline__ int scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm) { struct task_struct *p = current; - scm->creds.uid = p->uid; - scm->creds.gid = p->gid; + scm->creds.uid = current_uid(); + scm->creds.gid = current_gid(); scm->creds.pid = task_tgid_vnr(p); scm->fp = NULL; scm->seq = 0; |