diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/alpha/kernel/asm-offsets.c | 11 | ||||
| -rw-r--r-- | arch/alpha/kernel/entry.S | 10 | ||||
| -rw-r--r-- | arch/ia64/ia32/sys_ia32.c | 7 | ||||
| -rw-r--r-- | arch/ia64/kernel/mca_drv.c | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 43 | ||||
| -rw-r--r-- | arch/ia64/kernel/signal.c | 4 | ||||
| -rw-r--r-- | arch/mips/kernel/kspd.c | 4 | ||||
| -rw-r--r-- | arch/mips/kernel/mips-mt-fpaff.c | 5 | ||||
| -rw-r--r-- | arch/mips/kernel/vpe.c | 4 | ||||
| -rw-r--r-- | arch/parisc/kernel/signal.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 8 | ||||
| -rw-r--r-- | arch/s390/hypfs/inode.c | 4 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_linux.c | 28 | ||||
| -rw-r--r-- | arch/um/drivers/mconsole_kern.c | 3 | ||||
| -rw-r--r-- | arch/x86/ia32/ia32_aout.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/fault.c | 2 |
17 files changed, 79 insertions, 62 deletions
diff --git a/arch/alpha/kernel/asm-offsets.c b/arch/alpha/kernel/asm-offsets.c index 4b18cd94d59d..6ff8886e7e22 100644 --- a/arch/alpha/kernel/asm-offsets.c +++ b/arch/alpha/kernel/asm-offsets.c | |||
| @@ -19,15 +19,18 @@ void foo(void) | |||
| 19 | BLANK(); | 19 | BLANK(); |
| 20 | 20 | ||
| 21 | DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked)); | 21 | DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked)); |
| 22 | DEFINE(TASK_UID, offsetof(struct task_struct, uid)); | 22 | DEFINE(TASK_CRED, offsetof(struct task_struct, cred)); |
| 23 | DEFINE(TASK_EUID, offsetof(struct task_struct, euid)); | ||
| 24 | DEFINE(TASK_GID, offsetof(struct task_struct, gid)); | ||
| 25 | DEFINE(TASK_EGID, offsetof(struct task_struct, egid)); | ||
| 26 | DEFINE(TASK_REAL_PARENT, offsetof(struct task_struct, real_parent)); | 23 | DEFINE(TASK_REAL_PARENT, offsetof(struct task_struct, real_parent)); |
| 27 | DEFINE(TASK_GROUP_LEADER, offsetof(struct task_struct, group_leader)); | 24 | DEFINE(TASK_GROUP_LEADER, offsetof(struct task_struct, group_leader)); |
| 28 | DEFINE(TASK_TGID, offsetof(struct task_struct, tgid)); | 25 | DEFINE(TASK_TGID, offsetof(struct task_struct, tgid)); |
| 29 | BLANK(); | 26 | BLANK(); |
| 30 | 27 | ||
| 28 | DEFINE(CRED_UID, offsetof(struct cred, uid)); | ||
| 29 | DEFINE(CRED_EUID, offsetof(struct cred, euid)); | ||
| 30 | DEFINE(CRED_GID, offsetof(struct cred, gid)); | ||
| 31 | DEFINE(CRED_EGID, offsetof(struct cred, egid)); | ||
| 32 | BLANK(); | ||
| 33 | |||
| 31 | DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs)); | 34 | DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs)); |
| 32 | DEFINE(PT_PTRACED, PT_PTRACED); | 35 | DEFINE(PT_PTRACED, PT_PTRACED); |
| 33 | DEFINE(CLONE_VM, CLONE_VM); | 36 | DEFINE(CLONE_VM, CLONE_VM); |
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S index 5fc61e281ac7..f77345bc66a9 100644 --- a/arch/alpha/kernel/entry.S +++ b/arch/alpha/kernel/entry.S | |||
| @@ -850,8 +850,9 @@ osf_getpriority: | |||
| 850 | sys_getxuid: | 850 | sys_getxuid: |
| 851 | .prologue 0 | 851 | .prologue 0 |
| 852 | ldq $2, TI_TASK($8) | 852 | ldq $2, TI_TASK($8) |
| 853 | ldl $0, TASK_UID($2) | 853 | ldq $3, TASK_CRED($2) |
| 854 | ldl $1, TASK_EUID($2) | 854 | ldl $0, CRED_UID($3) |
| 855 | ldl $1, CRED_EUID($3) | ||
| 855 | stq $1, 80($sp) | 856 | stq $1, 80($sp) |
| 856 | ret | 857 | ret |
| 857 | .end sys_getxuid | 858 | .end sys_getxuid |
| @@ -862,8 +863,9 @@ sys_getxuid: | |||
| 862 | sys_getxgid: | 863 | sys_getxgid: |
| 863 | .prologue 0 | 864 | .prologue 0 |
| 864 | ldq $2, TI_TASK($8) | 865 | ldq $2, TI_TASK($8) |
| 865 | ldl $0, TASK_GID($2) | 866 | ldq $3, TASK_CRED($2) |
| 866 | ldl $1, TASK_EGID($2) | 867 | ldl $0, CRED_GID($3) |
| 868 | ldl $1, CRED_EGID($3) | ||
| 867 | stq $1, 80($sp) | 869 | stq $1, 80($sp) |
| 868 | ret | 870 | ret |
| 869 | .end sys_getxgid | 871 | .end sys_getxgid |
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c index 5e92ae00bdbb..16ef61a91d95 100644 --- a/arch/ia64/ia32/sys_ia32.c +++ b/arch/ia64/ia32/sys_ia32.c | |||
| @@ -1767,25 +1767,24 @@ groups16_from_user(struct group_info *group_info, short __user *grouplist) | |||
| 1767 | asmlinkage long | 1767 | asmlinkage long |
| 1768 | sys32_getgroups16 (int gidsetsize, short __user *grouplist) | 1768 | sys32_getgroups16 (int gidsetsize, short __user *grouplist) |
| 1769 | { | 1769 | { |
| 1770 | const struct cred *cred = current_cred(); | ||
| 1770 | int i; | 1771 | int i; |
| 1771 | 1772 | ||
| 1772 | if (gidsetsize < 0) | 1773 | if (gidsetsize < 0) |
| 1773 | return -EINVAL; | 1774 | return -EINVAL; |
| 1774 | 1775 | ||
| 1775 | get_group_info(current->group_info); | 1776 | i = cred->group_info->ngroups; |
| 1776 | i = current->group_info->ngroups; | ||
| 1777 | if (gidsetsize) { | 1777 | if (gidsetsize) { |
| 1778 | if (i > gidsetsize) { | 1778 | if (i > gidsetsize) { |
| 1779 | i = -EINVAL; | 1779 | i = -EINVAL; |
| 1780 | goto out; | 1780 | goto out; |
| 1781 | } | 1781 | } |
| 1782 | if (groups16_to_user(grouplist, current->group_info)) { | 1782 | if (groups16_to_user(grouplist, cred->group_info)) { |
| 1783 | i = -EFAULT; | 1783 | i = -EFAULT; |
| 1784 | goto out; | 1784 | goto out; |
| 1785 | } | 1785 | } |
| 1786 | } | 1786 | } |
| 1787 | out: | 1787 | out: |
| 1788 | put_group_info(current->group_info); | ||
| 1789 | return i; | 1788 | return i; |
| 1790 | } | 1789 | } |
| 1791 | 1790 | ||
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index fab1d21a4f2c..f94aaa86933f 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c | |||
| @@ -158,7 +158,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr) | |||
| 158 | ia64_mlogbuf_dump(); | 158 | ia64_mlogbuf_dump(); |
| 159 | printk(KERN_ERR "OS_MCA: process [cpu %d, pid: %d, uid: %d, " | 159 | printk(KERN_ERR "OS_MCA: process [cpu %d, pid: %d, uid: %d, " |
| 160 | "iip: %p, psr: 0x%lx,paddr: 0x%lx](%s) encounters MCA.\n", | 160 | "iip: %p, psr: 0x%lx,paddr: 0x%lx](%s) encounters MCA.\n", |
| 161 | raw_smp_processor_id(), current->pid, current->uid, | 161 | raw_smp_processor_id(), current->pid, current_uid(), |
| 162 | iip, ipsr, paddr, current->comm); | 162 | iip, ipsr, paddr, current->comm); |
| 163 | 163 | ||
| 164 | spin_lock(&mca_bh_lock); | 164 | spin_lock(&mca_bh_lock); |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index 6543a5547c84..0e499757309b 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
| @@ -2220,8 +2220,8 @@ pfm_alloc_file(pfm_context_t *ctx) | |||
| 2220 | DPRINT(("new inode ino=%ld @%p\n", inode->i_ino, inode)); | 2220 | DPRINT(("new inode ino=%ld @%p\n", inode->i_ino, inode)); |
| 2221 | 2221 | ||
| 2222 | inode->i_mode = S_IFCHR|S_IRUGO; | 2222 | inode->i_mode = S_IFCHR|S_IRUGO; |
| 2223 | inode->i_uid = current->fsuid; | 2223 | inode->i_uid = current_fsuid(); |
| 2224 | inode->i_gid = current->fsgid; | 2224 | inode->i_gid = current_fsgid(); |
| 2225 | 2225 | ||
| 2226 | sprintf(name, "[%lu]", inode->i_ino); | 2226 | sprintf(name, "[%lu]", inode->i_ino); |
| 2227 | this.name = name; | 2227 | this.name = name; |
| @@ -2399,22 +2399,33 @@ error_kmem: | |||
| 2399 | static int | 2399 | static int |
| 2400 | pfm_bad_permissions(struct task_struct *task) | 2400 | pfm_bad_permissions(struct task_struct *task) |
| 2401 | { | 2401 | { |
| 2402 | const struct cred *tcred; | ||
| 2403 | uid_t uid = current_uid(); | ||
| 2404 | gid_t gid = current_gid(); | ||
| 2405 | int ret; | ||
| 2406 | |||
| 2407 | rcu_read_lock(); | ||
| 2408 | tcred = __task_cred(task); | ||
| 2409 | |||
| 2402 | /* inspired by ptrace_attach() */ | 2410 | /* inspired by ptrace_attach() */ |
| 2403 | DPRINT(("cur: uid=%d gid=%d task: euid=%d suid=%d uid=%d egid=%d sgid=%d\n", | 2411 | DPRINT(("cur: uid=%d gid=%d task: euid=%d suid=%d uid=%d egid=%d sgid=%d\n", |
| 2404 | current->uid, | 2412 | uid, |
| 2405 | current->gid, | 2413 | gid, |
| 2406 | task->euid, | 2414 | tcred->euid, |
| 2407 | task->suid, | 2415 | tcred->suid, |
| 2408 | task->uid, | 2416 | tcred->uid, |
| 2409 | task->egid, | 2417 | tcred->egid, |
| 2410 | task->sgid)); | 2418 | tcred->sgid)); |
| 2411 | 2419 | ||
| 2412 | return ((current->uid != task->euid) | 2420 | ret = ((uid != tcred->euid) |
| 2413 | || (current->uid != task->suid) | 2421 | || (uid != tcred->suid) |
| 2414 | || (current->uid != task->uid) | 2422 | || (uid != tcred->uid) |
| 2415 | || (current->gid != task->egid) | 2423 | || (gid != tcred->egid) |
| 2416 | || (current->gid != task->sgid) | 2424 | || (gid != tcred->sgid) |
| 2417 | || (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE); | 2425 | || (gid != tcred->gid)) && !capable(CAP_SYS_PTRACE); |
| 2426 | |||
| 2427 | rcu_read_unlock(); | ||
| 2428 | return ret; | ||
| 2418 | } | 2429 | } |
| 2419 | 2430 | ||
| 2420 | static int | 2431 | static int |
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c index e12500a9c443..e1821ca4c7df 100644 --- a/arch/ia64/kernel/signal.c +++ b/arch/ia64/kernel/signal.c | |||
| @@ -229,7 +229,7 @@ ia64_rt_sigreturn (struct sigscratch *scr) | |||
| 229 | si.si_errno = 0; | 229 | si.si_errno = 0; |
| 230 | si.si_code = SI_KERNEL; | 230 | si.si_code = SI_KERNEL; |
| 231 | si.si_pid = task_pid_vnr(current); | 231 | si.si_pid = task_pid_vnr(current); |
| 232 | si.si_uid = current->uid; | 232 | si.si_uid = current_uid(); |
| 233 | si.si_addr = sc; | 233 | si.si_addr = sc; |
| 234 | force_sig_info(SIGSEGV, &si, current); | 234 | force_sig_info(SIGSEGV, &si, current); |
| 235 | return retval; | 235 | return retval; |
| @@ -326,7 +326,7 @@ force_sigsegv_info (int sig, void __user *addr) | |||
| 326 | si.si_errno = 0; | 326 | si.si_errno = 0; |
| 327 | si.si_code = SI_KERNEL; | 327 | si.si_code = SI_KERNEL; |
| 328 | si.si_pid = task_pid_vnr(current); | 328 | si.si_pid = task_pid_vnr(current); |
| 329 | si.si_uid = current->uid; | 329 | si.si_uid = current_uid(); |
| 330 | si.si_addr = addr; | 330 | si.si_addr = addr; |
| 331 | force_sig_info(SIGSEGV, &si, current); | 331 | force_sig_info(SIGSEGV, &si, current); |
| 332 | return 0; | 332 | return 0; |
diff --git a/arch/mips/kernel/kspd.c b/arch/mips/kernel/kspd.c index b0591ae0ce56..fd6e51224034 100644 --- a/arch/mips/kernel/kspd.c +++ b/arch/mips/kernel/kspd.c | |||
| @@ -174,8 +174,8 @@ static unsigned int translate_open_flags(int flags) | |||
| 174 | 174 | ||
| 175 | static void sp_setfsuidgid( uid_t uid, gid_t gid) | 175 | static void sp_setfsuidgid( uid_t uid, gid_t gid) |
| 176 | { | 176 | { |
| 177 | current->fsuid = uid; | 177 | current->cred->fsuid = uid; |
| 178 | current->fsgid = gid; | 178 | current->cred->fsgid = gid; |
| 179 | 179 | ||
| 180 | key_fsuid_changed(current); | 180 | key_fsuid_changed(current); |
| 181 | key_fsgid_changed(current); | 181 | key_fsgid_changed(current); |
diff --git a/arch/mips/kernel/mips-mt-fpaff.c b/arch/mips/kernel/mips-mt-fpaff.c index dc9eb72ed9de..5e77a3a21f98 100644 --- a/arch/mips/kernel/mips-mt-fpaff.c +++ b/arch/mips/kernel/mips-mt-fpaff.c | |||
| @@ -51,6 +51,7 @@ asmlinkage long mipsmt_sys_sched_setaffinity(pid_t pid, unsigned int len, | |||
| 51 | int retval; | 51 | int retval; |
| 52 | struct task_struct *p; | 52 | struct task_struct *p; |
| 53 | struct thread_info *ti; | 53 | struct thread_info *ti; |
| 54 | uid_t euid; | ||
| 54 | 55 | ||
| 55 | if (len < sizeof(new_mask)) | 56 | if (len < sizeof(new_mask)) |
| 56 | return -EINVAL; | 57 | return -EINVAL; |
| @@ -76,9 +77,9 @@ asmlinkage long mipsmt_sys_sched_setaffinity(pid_t pid, unsigned int len, | |||
| 76 | */ | 77 | */ |
| 77 | get_task_struct(p); | 78 | get_task_struct(p); |
| 78 | 79 | ||
| 80 | euid = current_euid(); | ||
| 79 | retval = -EPERM; | 81 | retval = -EPERM; |
| 80 | if ((current->euid != p->euid) && (current->euid != p->uid) && | 82 | if (euid != p->euid && euid != p->uid && !capable(CAP_SYS_NICE)) { |
| 81 | !capable(CAP_SYS_NICE)) { | ||
| 82 | read_unlock(&tasklist_lock); | 83 | read_unlock(&tasklist_lock); |
| 83 | goto out_unlock; | 84 | goto out_unlock; |
| 84 | } | 85 | } |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index a1b3da6bad5c..010b27e01f7b 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
| @@ -1085,8 +1085,8 @@ static int vpe_open(struct inode *inode, struct file *filp) | |||
| 1085 | v->load_addr = NULL; | 1085 | v->load_addr = NULL; |
| 1086 | v->len = 0; | 1086 | v->len = 0; |
| 1087 | 1087 | ||
| 1088 | v->uid = filp->f_uid; | 1088 | v->uid = filp->f_cred->fsuid; |
| 1089 | v->gid = filp->f_gid; | 1089 | v->gid = filp->f_cred->fsgid; |
| 1090 | 1090 | ||
| 1091 | #ifdef CONFIG_MIPS_APSP_KSPD | 1091 | #ifdef CONFIG_MIPS_APSP_KSPD |
| 1092 | /* get kspd to tell us when a syscall_exit happens */ | 1092 | /* get kspd to tell us when a syscall_exit happens */ |
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index 06213d1d6d95..f82544225e8e 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
| @@ -182,7 +182,7 @@ give_sigsegv: | |||
| 182 | si.si_errno = 0; | 182 | si.si_errno = 0; |
| 183 | si.si_code = SI_KERNEL; | 183 | si.si_code = SI_KERNEL; |
| 184 | si.si_pid = task_pid_vnr(current); | 184 | si.si_pid = task_pid_vnr(current); |
| 185 | si.si_uid = current->uid; | 185 | si.si_uid = current_uid(); |
| 186 | si.si_addr = &frame->uc; | 186 | si.si_addr = &frame->uc; |
| 187 | force_sig_info(SIGSEGV, &si, current); | 187 | force_sig_info(SIGSEGV, &si, current); |
| 188 | return; | 188 | return; |
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 565b7a237c84..866098686da8 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
| @@ -339,7 +339,7 @@ bad_area_nosemaphore: | |||
| 339 | && printk_ratelimit()) | 339 | && printk_ratelimit()) |
| 340 | printk(KERN_CRIT "kernel tried to execute NX-protected" | 340 | printk(KERN_CRIT "kernel tried to execute NX-protected" |
| 341 | " page (%lx) - exploit attempt? (uid: %d)\n", | 341 | " page (%lx) - exploit attempt? (uid: %d)\n", |
| 342 | address, current->uid); | 342 | address, current_uid()); |
| 343 | 343 | ||
| 344 | return SIGSEGV; | 344 | return SIGSEGV; |
| 345 | 345 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index cb85d237e492..6296bfd9cb0b 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
| @@ -95,8 +95,8 @@ spufs_new_inode(struct super_block *sb, int mode) | |||
| 95 | goto out; | 95 | goto out; |
| 96 | 96 | ||
| 97 | inode->i_mode = mode; | 97 | inode->i_mode = mode; |
| 98 | inode->i_uid = current->fsuid; | 98 | inode->i_uid = current_fsuid(); |
| 99 | inode->i_gid = current->fsgid; | 99 | inode->i_gid = current_fsgid(); |
| 100 | inode->i_blocks = 0; | 100 | inode->i_blocks = 0; |
| 101 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 101 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
| 102 | out: | 102 | out: |
| @@ -323,7 +323,7 @@ static int spufs_context_open(struct dentry *dentry, struct vfsmount *mnt) | |||
| 323 | goto out; | 323 | goto out; |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | filp = dentry_open(dentry, mnt, O_RDONLY); | 326 | filp = dentry_open(dentry, mnt, O_RDONLY, current_cred()); |
| 327 | if (IS_ERR(filp)) { | 327 | if (IS_ERR(filp)) { |
| 328 | put_unused_fd(ret); | 328 | put_unused_fd(ret); |
| 329 | ret = PTR_ERR(filp); | 329 | ret = PTR_ERR(filp); |
| @@ -562,7 +562,7 @@ static int spufs_gang_open(struct dentry *dentry, struct vfsmount *mnt) | |||
| 562 | goto out; | 562 | goto out; |
| 563 | } | 563 | } |
| 564 | 564 | ||
| 565 | filp = dentry_open(dentry, mnt, O_RDONLY); | 565 | filp = dentry_open(dentry, mnt, O_RDONLY, current_cred()); |
| 566 | if (IS_ERR(filp)) { | 566 | if (IS_ERR(filp)) { |
| 567 | put_unused_fd(ret); | 567 | put_unused_fd(ret); |
| 568 | ret = PTR_ERR(filp); | 568 | ret = PTR_ERR(filp); |
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c index 36313801cd5c..8aadcd7a7cf8 100644 --- a/arch/s390/hypfs/inode.c +++ b/arch/s390/hypfs/inode.c | |||
| @@ -280,8 +280,8 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent) | |||
| 280 | if (!sbi) | 280 | if (!sbi) |
| 281 | return -ENOMEM; | 281 | return -ENOMEM; |
| 282 | mutex_init(&sbi->lock); | 282 | mutex_init(&sbi->lock); |
| 283 | sbi->uid = current->uid; | 283 | sbi->uid = current_uid(); |
| 284 | sbi->gid = current->gid; | 284 | sbi->gid = current_gid(); |
| 285 | sb->s_fs_info = sbi; | 285 | sb->s_fs_info = sbi; |
| 286 | sb->s_blocksize = PAGE_CACHE_SIZE; | 286 | sb->s_blocksize = PAGE_CACHE_SIZE; |
| 287 | sb->s_blocksize_bits = PAGE_CACHE_SHIFT; | 287 | sb->s_blocksize_bits = PAGE_CACHE_SHIFT; |
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 4646382af34f..6cc87d8c8682 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
| @@ -148,9 +148,9 @@ asmlinkage long sys32_getresuid16(u16 __user *ruid, u16 __user *euid, u16 __user | |||
| 148 | { | 148 | { |
| 149 | int retval; | 149 | int retval; |
| 150 | 150 | ||
| 151 | if (!(retval = put_user(high2lowuid(current->uid), ruid)) && | 151 | if (!(retval = put_user(high2lowuid(current->cred->uid), ruid)) && |
| 152 | !(retval = put_user(high2lowuid(current->euid), euid))) | 152 | !(retval = put_user(high2lowuid(current->cred->euid), euid))) |
| 153 | retval = put_user(high2lowuid(current->suid), suid); | 153 | retval = put_user(high2lowuid(current->cred->suid), suid); |
| 154 | 154 | ||
| 155 | return retval; | 155 | return retval; |
| 156 | } | 156 | } |
| @@ -165,9 +165,9 @@ asmlinkage long sys32_getresgid16(u16 __user *rgid, u16 __user *egid, u16 __user | |||
| 165 | { | 165 | { |
| 166 | int retval; | 166 | int retval; |
| 167 | 167 | ||
| 168 | if (!(retval = put_user(high2lowgid(current->gid), rgid)) && | 168 | if (!(retval = put_user(high2lowgid(current->cred->gid), rgid)) && |
| 169 | !(retval = put_user(high2lowgid(current->egid), egid))) | 169 | !(retval = put_user(high2lowgid(current->cred->egid), egid))) |
| 170 | retval = put_user(high2lowgid(current->sgid), sgid); | 170 | retval = put_user(high2lowgid(current->cred->sgid), sgid); |
| 171 | 171 | ||
| 172 | return retval; | 172 | return retval; |
| 173 | } | 173 | } |
| @@ -217,20 +217,20 @@ asmlinkage long sys32_getgroups16(int gidsetsize, u16 __user *grouplist) | |||
| 217 | if (gidsetsize < 0) | 217 | if (gidsetsize < 0) |
| 218 | return -EINVAL; | 218 | return -EINVAL; |
| 219 | 219 | ||
| 220 | get_group_info(current->group_info); | 220 | get_group_info(current->cred->group_info); |
| 221 | i = current->group_info->ngroups; | 221 | i = current->cred->group_info->ngroups; |
| 222 | if (gidsetsize) { | 222 | if (gidsetsize) { |
| 223 | if (i > gidsetsize) { | 223 | if (i > gidsetsize) { |
| 224 | i = -EINVAL; | 224 | i = -EINVAL; |
| 225 | goto out; | 225 | goto out; |
| 226 | } | 226 | } |
| 227 | if (groups16_to_user(grouplist, current->group_info)) { | 227 | if (groups16_to_user(grouplist, current->cred->group_info)) { |
| 228 | i = -EFAULT; | 228 | i = -EFAULT; |
| 229 | goto out; | 229 | goto out; |
| 230 | } | 230 | } |
| 231 | } | 231 | } |
| 232 | out: | 232 | out: |
| 233 | put_group_info(current->group_info); | 233 | put_group_info(current->cred->group_info); |
| 234 | return i; | 234 | return i; |
| 235 | } | 235 | } |
| 236 | 236 | ||
| @@ -261,22 +261,22 @@ asmlinkage long sys32_setgroups16(int gidsetsize, u16 __user *grouplist) | |||
| 261 | 261 | ||
| 262 | asmlinkage long sys32_getuid16(void) | 262 | asmlinkage long sys32_getuid16(void) |
| 263 | { | 263 | { |
| 264 | return high2lowuid(current->uid); | 264 | return high2lowuid(current->cred->uid); |
| 265 | } | 265 | } |
| 266 | 266 | ||
| 267 | asmlinkage long sys32_geteuid16(void) | 267 | asmlinkage long sys32_geteuid16(void) |
| 268 | { | 268 | { |
| 269 | return high2lowuid(current->euid); | 269 | return high2lowuid(current->cred->euid); |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | asmlinkage long sys32_getgid16(void) | 272 | asmlinkage long sys32_getgid16(void) |
| 273 | { | 273 | { |
| 274 | return high2lowgid(current->gid); | 274 | return high2lowgid(current->cred->gid); |
| 275 | } | 275 | } |
| 276 | 276 | ||
| 277 | asmlinkage long sys32_getegid16(void) | 277 | asmlinkage long sys32_getegid16(void) |
| 278 | { | 278 | { |
| 279 | return high2lowgid(current->egid); | 279 | return high2lowgid(current->cred->egid); |
| 280 | } | 280 | } |
| 281 | 281 | ||
| 282 | /* | 282 | /* |
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index 8f44ebb0dec8..e14629c87de4 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c | |||
| @@ -161,7 +161,8 @@ void mconsole_proc(struct mc_request *req) | |||
| 161 | goto out_kill; | 161 | goto out_kill; |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY); | 164 | file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY, |
| 165 | current_cred()); | ||
| 165 | if (IS_ERR(file)) { | 166 | if (IS_ERR(file)) { |
| 166 | mconsole_reply(req, "Failed to open file", 1, 0); | 167 | mconsole_reply(req, "Failed to open file", 1, 0); |
| 167 | goto out_kill; | 168 | goto out_kill; |
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c index 127ec3f07214..2a4d073d2cf1 100644 --- a/arch/x86/ia32/ia32_aout.c +++ b/arch/x86/ia32/ia32_aout.c | |||
| @@ -327,7 +327,7 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs) | |||
| 327 | current->mm->cached_hole_size = 0; | 327 | current->mm->cached_hole_size = 0; |
| 328 | 328 | ||
| 329 | current->mm->mmap = NULL; | 329 | current->mm->mmap = NULL; |
| 330 | compute_creds(bprm); | 330 | install_exec_creds(bprm); |
| 331 | current->flags &= ~PF_FORKNOEXEC; | 331 | current->flags &= ~PF_FORKNOEXEC; |
| 332 | 332 | ||
| 333 | if (N_MAGIC(ex) == OMAGIC) { | 333 | if (N_MAGIC(ex) == OMAGIC) { |
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 31e8730fa246..3a1b6ef4f05d 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
| @@ -393,7 +393,7 @@ static void show_fault_oops(struct pt_regs *regs, unsigned long error_code, | |||
| 393 | if (pte && pte_present(*pte) && !pte_exec(*pte)) | 393 | if (pte && pte_present(*pte) && !pte_exec(*pte)) |
| 394 | printk(KERN_CRIT "kernel tried to execute " | 394 | printk(KERN_CRIT "kernel tried to execute " |
| 395 | "NX-protected page - exploit attempt? " | 395 | "NX-protected page - exploit attempt? " |
| 396 | "(uid: %d)\n", current->uid); | 396 | "(uid: %d)\n", current_uid()); |
| 397 | } | 397 | } |
| 398 | #endif | 398 | #endif |
| 399 | 399 | ||
