Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull waitid fix from Al Viro:
"Fix infoleak in waitid()"

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

+10 -13
+10 -13
kernel/exit.c
··· 1600 1600 struct waitid_info info = {.status = 0}; 1601 1601 long err = kernel_waitid(which, upid, &info, options, ru ? &r : NULL); 1602 1602 int signo = 0; 1603 + 1603 1604 if (err > 0) { 1604 1605 signo = SIGCHLD; 1605 1606 err = 0; 1606 - } 1607 - 1608 - if (!err) { 1609 1607 if (ru && copy_to_user(ru, &r, sizeof(struct rusage))) 1610 1608 return -EFAULT; 1611 1609 } ··· 1721 1723 if (err > 0) { 1722 1724 signo = SIGCHLD; 1723 1725 err = 0; 1724 - } 1725 - 1726 - if (!err && uru) { 1727 - /* kernel_waitid() overwrites everything in ru */ 1728 - if (COMPAT_USE_64BIT_TIME) 1729 - err = copy_to_user(uru, &ru, sizeof(ru)); 1730 - else 1731 - err = put_compat_rusage(&ru, uru); 1732 - if (err) 1733 - return -EFAULT; 1726 + if (uru) { 1727 + /* kernel_waitid() overwrites everything in ru */ 1728 + if (COMPAT_USE_64BIT_TIME) 1729 + err = copy_to_user(uru, &ru, sizeof(ru)); 1730 + else 1731 + err = put_compat_rusage(&ru, uru); 1732 + if (err) 1733 + return -EFAULT; 1734 + } 1734 1735 } 1735 1736 1736 1737 if (!infop)