path: root/kernel/uid16.c
AgeCommit message (Collapse)AuthorLines
2014-12-05groups: Consolidate the setgroups permission checksEric W. Biederman-1/+1
Today there are 3 instances of setgroups and due to an oversight their permission checking has diverged. Add a common function so that they may all share the same permission checking code. This corrects the current oversight in the current permission checks and adds a helper to avoid this in the future. A user namespace security fix will update this new helper, shortly. Cc: Signed-off-by: "Eric W. Biederman" <>
2013-08-30userns: Kill nsown_capable it makes the wrong thing easyEric W. Biederman-1/+1
nsown_capable is a special case of ns_capable essentially for just CAP_SETUID and CAP_SETGID. For the existing users it doesn't noticably simplify things and from the suggested patches I have seen it encourages people to do the wrong thing. So remove nsown_capable. Acked-by: Serge Hallyn <> Signed-off-by: "Eric W. Biederman" <>
2013-03-03make SYSCALL_DEFINE<n>-generated wrappers do asmlinkage_protectAl Viro-44/+11
... and switch i386 to HAVE_SYSCALL_WRAPPERS, killing open-coded uses of asmlinkage_protect() in a bunch of syscalls. Signed-off-by: Al Viro <>
2012-05-03userns: Convert setting and getting uid and gid system calls to use kuid and ↵Eric W. Biederman-12/+22
kgid Convert setregid, setgid, setreuid, setuid, setresuid, getresuid, setresgid, getresgid, setfsuid, setfsgid, getuid, geteuid, getgid, getegid, waitpid, waitid, wait4. Convert userspace uids and gids into kuids and kgids before being placed on struct cred. Convert struct cred kuids and kgids into userspace uids and gids when returning them. Signed-off-by: Eric W. Biederman <>
2012-05-03userns: Convert group_info values from gid_t to kgid_t.Eric W. Biederman-2/+12
As a first step to converting struct cred to be all kuid_t and kgid_t values convert the group values stored in group_info to always be kgid_t values. Unless user namespaces are used this change should have no effect. Acked-by: Serge Hallyn <> Signed-off-by: Eric W. Biederman <>
2011-03-23userns: user namespaces: convert several capable() callsSerge E. Hallyn-1/+1
CAP_IPC_OWNER and CAP_IPC_LOCK can be checked against current_user_ns(), because the resource comes from current's own ipc namespace. setuid/setgid are to uids in own namespace, so again checks can be against current_user_ns(). Changelog: Jan 11: Use task_ns_capable() in place of sched_capable(). Jan 11: Use nsown_capable() as suggested by Bastian Blank. Jan 11: Clarify (hopefully) some logic in futex and sched.c Feb 15: use ns_capable for ipc, not nsown_capable Feb 23: let copy_ipcs handle setting ipc_ns->user_ns Feb 23: pass ns down rather than taking it from current [ coding-style fixes] Signed-off-by: Serge E. Hallyn <> Acked-by: "Eric W. Biederman" <> Acked-by: Daniel Lezcano <> Acked-by: David Howells <> Cc: James Morris <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
2009-09-23headers: utsname.h reduxAlexey Dobriyan-1/+0
* remove asm/atomic.h inclusion from linux/utsname.h -- not needed after kref conversion * remove linux/utsname.h inclusion from files which do not need it NOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however due to some personality stuff it _is_ needed -- cowardly leave ELF-related headers and files alone. Signed-off-by: Alexey Dobriyan <> Signed-off-by: Linus Torvalds <>
2009-01-14[CVE-2009-0029] System call wrappers part 19Heiko Carstens-6/+6
Signed-off-by: Heiko Carstens <>
2009-01-14[CVE-2009-0029] System call wrappers part 18Heiko Carstens-10/+11
Signed-off-by: Heiko Carstens <>
2009-01-14[CVE-2009-0029] System call wrappers part 17Heiko Carstens-3/+3
Signed-off-by: Heiko Carstens <>
2008-11-14CRED: Wrap current->cred and a few other accessorsDavid Howells-15/+16
Wrap current->cred and a few other accessors to hide their actual implementation. Signed-off-by: David Howells <> Acked-by: James Morris <> Acked-by: Serge Hallyn <> Signed-off-by: James Morris <>
2008-11-14CRED: Separate task security context from task_structDavid Howells-14/+14
Separate the task security context from task_struct. At this point, the security data is temporarily embedded in the task_struct with two pointers pointing to it. Note that the Alpha arch is altered as it refers to (E)UID and (E)GID in entry.S via asm-offsets. With comment fixes Signed-off-by: Marc Dionne <> Signed-off-by: David Howells <> Acked-by: James Morris <> Acked-by: Serge Hallyn <> Signed-off-by: James Morris <>
2008-04-10asmlinkage_protect replaces prevent_tail_callRoland McGrath-11/+11
The prevent_tail_call() macro works around the problem of the compiler clobbering argument words on the stack, which for asmlinkage functions is the caller's (user's) struct pt_regs. The tail/sibling-call optimization is not the only way that the compiler can decide to use stack argument words as scratch space, which we have to prevent. Other optimizations can do it too. Until we have new compiler support to make "asmlinkage" binding on the compiler's own use of the stack argument frame, we have work around all the manifestations of this issue that crop up. More cases seem to be prevented by also keeping the incoming argument variables live at the end of the function. This makes their original stack slots attractive places to leave those variables, so the compiler tends not clobber them for something else. It's still no guarantee, but it handles some observed cases that prevent_tail_call() did not. Signed-off-by: Roland McGrath <> Signed-off-by: Linus Torvalds <>
2007-05-08header cleaning: don't include smp_lock.h when not usedRandy Dunlap-1/+0
Remove includes of <linux/smp_lock.h> where it is not used/needed. Suggested by Al Viro. Builds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc, sparc64, and arm (all 59 defconfigs). Signed-off-by: Randy Dunlap <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
2006-04-19[PATCH] Add more prevent_tail_call()OGAWA Hirofumi-13/+46
Those also break userland regs like following. 00000000 <sys_chown16>: 0: 0f b7 44 24 0c movzwl 0xc(%esp),%eax 5: 83 ca ff or $0xffffffff,%edx 8: 0f b7 4c 24 08 movzwl 0x8(%esp),%ecx d: 66 83 f8 ff cmp $0xffffffff,%ax 11: 0f 44 c2 cmove %edx,%eax 14: 66 83 f9 ff cmp $0xffffffff,%cx 18: 0f 45 d1 cmovne %ecx,%edx 1b: 89 44 24 0c mov %eax,0xc(%esp) 1f: 89 54 24 08 mov %edx,0x8(%esp) 23: e9 fc ff ff ff jmp 24 <sys_chown16+0x24> where the tailcall at the end overwrites the incoming stack-frame. Signed-off-by: OGAWA Hirofumi <> [ I would _really_ like to have a way to tell gcc about calling conventions. The "prevent_tail_call()" macro is pretty ugly ] Signed-off-by: Linus Torvalds <>
2006-01-11[PATCH] move capable() to capability.hRandy.Dunlap-0/+1
- Move capable() from sched.h to capability.h; - Use <linux/capability.h> where capable() is used (in include/, block/, ipc/, kernel/, a few drivers/, mm/, security/, & sound/; many more drivers/ to go) Signed-off-by: Randy Dunlap <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
2005-04-16Linux-2.6.12-rc2v2.6.12-rc2Linus Torvalds-0/+196
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!