This is a note to let you know that I've just added the patch titled asm-generic: make copy_from_user() zero the destination properly to the 4.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: asm-generic-make-copy_from_user-zero-the-destination-properly.patch and it can be found in the queue-4.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 2545e5da080b4839dd859e3b09343a884f6ab0e3 Mon Sep 17 00:00:00 2001 From: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Wed, 17 Aug 2016 16:36:37 -0400 Subject: asm-generic: make copy_from_user() zero the destination properly From: Al Viro <viro@xxxxxxxxxxxxxxxxxx> commit 2545e5da080b4839dd859e3b09343a884f6ab0e3 upstream. ... in all cases, including the failing access_ok() Note that some architectures using asm-generic/uaccess.h have __copy_from_user() not zeroing the tail on failure halfway through. This variant works either way. Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- include/asm-generic/uaccess.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- a/include/asm-generic/uaccess.h +++ b/include/asm-generic/uaccess.h @@ -261,11 +261,13 @@ extern int __get_user_bad(void) __attrib static inline long copy_from_user(void *to, const void __user * from, unsigned long n) { + unsigned long res = n; might_fault(); - if (access_ok(VERIFY_READ, from, n)) - return __copy_from_user(to, from, n); - else - return n; + if (likely(access_ok(VERIFY_READ, from, n))) + res = __copy_from_user(to, from, n); + if (unlikely(res)) + memset(to + (n - res), 0, res); + return res; } static inline long copy_to_user(void __user *to, Patches currently in stable-queue which might be from viro@xxxxxxxxxxxxxxxxxx are queue-4.4/nios2-copy_from_user-should-zero-the-tail-of-destination.patch queue-4.4/m32r-fix-__get_user.patch queue-4.4/microblaze-fix-copy_from_user.patch queue-4.4/cris-buggered-copy_from_user-copy_to_user-clear_user.patch queue-4.4/asm-generic-make-copy_from_user-zero-the-destination-properly.patch queue-4.4/metag-copy_from_user-should-zero-the-destination-on-access_ok-failure.patch queue-4.4/score-fix-__get_user-get_user.patch queue-4.4/parisc-fix-copy_from_user.patch queue-4.4/mips-copy_from_user-must-zero-the-destination-on-access_ok-failure.patch queue-4.4/alpha-fix-copy_from_user.patch queue-4.4/mn10300-failing-__get_user-and-get_user-should-zero.patch queue-4.4/openrisc-fix-copy_from_user.patch queue-4.4/avr32-fix-copy_from_user.patch queue-4.4/score-fix-copy_from_user-and-friends.patch queue-4.4/sh64-failing-__get_user-should-zero.patch queue-4.4/arc-uaccess-get_user-to-zero-out-dest-in-cause-of-fault.patch queue-4.4/hexagon-fix-strncpy_from_user-error-return.patch queue-4.4/frv-fix-clear_user.patch queue-4.4/fix-minor-infoleak-in-get_user_ex.patch queue-4.4/asm-generic-make-get_user-clear-the-destination-on-errors.patch queue-4.4/mn10300-copy_from_user-should-zero-on-access_ok-failure.patch queue-4.4/s390-get_user-should-zero-on-failure.patch queue-4.4/microblaze-fix-__get_user.patch queue-4.4/blackfin-fix-copy_from_user.patch queue-4.4/fix-iov_iter_fault_in_readable.patch queue-4.4/nios2-fix-__get_user.patch queue-4.4/sh-fix-copy_from_user.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html