Patchwork [3.5.y.z,extended,stable] Patch "x86-64: Fix the failure case in copy_user_handle_tail()" has been added to staging queue

mail settings
Submitter Luis Henriques
Date March 25, 2013, 6:02 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/230878/
State New
Headers show


Luis Henriques - March 25, 2013, 6:02 p.m.
This is a note to let you know that I have just added a patch titled

    x86-64: Fix the failure case in copy_user_handle_tail()

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



From 671ddaf23a32fa73d062180e47a53b335e180904 Mon Sep 17 00:00:00 2001
From: CQ Tang <>
Date: Mon, 18 Mar 2013 11:02:21 -0400
Subject: [PATCH] x86-64: Fix the failure case in copy_user_handle_tail()

commit 66db3feb486c01349f767b98ebb10b0c3d2d021b upstream.

The increment of "to" in copy_user_handle_tail() will have incremented
before a failure has been noted.  This causes us to skip a byte in the
failure case.

Only do the increment when assured there is no failure.

Signed-off-by: CQ Tang <>
Signed-off-by: Mike Marciniszyn <>
Signed-off-by: H. Peter Anvin <>
Luis Henriques <>
 arch/x86/lib/usercopy_64.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)



diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c
index e5b130b..cc9de31 100644
--- a/arch/x86/lib/usercopy_64.c
+++ b/arch/x86/lib/usercopy_64.c
@@ -72,10 +72,10 @@  copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest)
 	char c;
 	unsigned zero_len;

-	for (; len; --len) {
+	for (; len; --len, to++) {
 		if (__get_user_nocheck(c, from++, sizeof(char)))
-		if (__put_user_nocheck(c, to++, sizeof(char)))
+		if (__put_user_nocheck(c, to, sizeof(char)))