x86-64: Fix the failure case in copy_user_handle_tail()
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
tip-bot for CQ Tang
merge botCommit-ID: 66db3feb486c01349f767b98ebb10b0c3d2d021b Gitweb: http://git.kernel.org/tip/66db3feb486c01349f767b98ebb10b0c3d2d021b Author: CQ Tang <[email protected]> AuthorDate: Mon, 18 Mar 2013 11:02:21 -0400 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 18 Mar 2013 11:32:03 -0700
x86-64: Fix the failure case in copy_user_handle_tail()
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 <[email protected]>
Signed-off-by Mike Marciniszyn <[email protected]>
Signed-off-by H. Peter Anvin <[email protected]>
Cc <[email protected]>
--- arch/x86/lib/usercopy_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/x86/lib/usercopy_64.c +2 -2
@@ -74,10 +74,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 )))break ; -if (__put_user_nocheck (c, to++,sizeof (char ))) +if (__put_user_nocheck (c, to,sizeof (char )))break ; }