Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull misc uaccess fixes from Al Viro:
"Fix for unsafe_put_user() (no callers currently in mainline, but
anyone starting to use it will step into that) + alpha osf_wait4()
infoleak fix"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
osf_wait4(): fix infoleak
fix unsafe_put_user()

Changed files
+5 -3
arch
alpha
kernel
x86
include
asm
+4 -2
arch/alpha/kernel/osf_sys.c
··· 1201 1201 if (!access_ok(VERIFY_WRITE, ur, sizeof(*ur))) 1202 1202 return -EFAULT; 1203 1203 1204 - err = 0; 1205 - err |= put_user(status, ustatus); 1204 + err = put_user(status, ustatus); 1205 + if (ret < 0) 1206 + return err ? err : ret; 1207 + 1206 1208 err |= __put_user(r.ru_utime.tv_sec, &ur->ru_utime.tv_sec); 1207 1209 err |= __put_user(r.ru_utime.tv_usec, &ur->ru_utime.tv_usec); 1208 1210 err |= __put_user(r.ru_stime.tv_sec, &ur->ru_stime.tv_sec);
+1 -1
arch/x86/include/asm/uaccess.h
··· 703 703 #define unsafe_put_user(x, ptr, err_label) \ 704 704 do { \ 705 705 int __pu_err; \ 706 - __put_user_size((x), (ptr), sizeof(*(ptr)), __pu_err, -EFAULT); \ 706 + __put_user_size((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), __pu_err, -EFAULT); \ 707 707 if (unlikely(__pu_err)) goto err_label; \ 708 708 } while (0) 709 709