projects
/
unionfs-2.6.39.y.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
611f2aa
)
x86-64: Fix the failure case in copy_user_handle_tail()
author
CQ Tang
<cq.tang@intel.com>
Mon, 18 Mar 2013 15:02:21 +0000
(11:02 -0400)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 28 Mar 2013 19:06:03 +0000
(12:06 -0700)
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 <cq.tang@intel.com>
Link:
http://lkml.kernel.org/r/20130318150221.8439.993.stgit@phlsvslse11.ph.intel.com
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/lib/usercopy_64.c
patch
|
blob
|
history
diff --git
a/arch/x86/lib/usercopy_64.c
b/arch/x86/lib/usercopy_64.c
index b7c2849ffb66015ed114a5ab2015956aecd69d7b..554b7b528f02adb7fc554972b064a7a90e3daa65 100644
(file)
--- a/
arch/x86/lib/usercopy_64.c
+++ b/
arch/x86/lib/usercopy_64.c
@@
-169,10
+169,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;
}