diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-07-26 07:18:16 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-07-26 07:18:16 -0400 |
commit | 4609a179c97ae60fef173547a9bbb214359808ce (patch) | |
tree | a36f01e2e29446da9a90cd6f4d416ff9c790091a /arch/arm/lib | |
parent | f9578fc07832ee8db8b0fbde489e00ad35452ac9 (diff) |
ARM: Fix csum_partial_copy_from_user()
Using the parent functions frame pointer to access our arguments is
completely wrong, whether or not we're building with frame pointers
or not. What we should be using is the stack pointer to get at the
word above the registers we stacked ourselves.
Reported-by: Bosko Radivojevic <bosko.radivojevic@gmail.com>
Tested-by: Bosko Radivojevic <bosko.radivojevic@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/lib')
-rw-r--r-- | arch/arm/lib/csumpartialcopyuser.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S index 59ff6fdc1e63..7d08b43d2c0e 100644 --- a/arch/arm/lib/csumpartialcopyuser.S +++ b/arch/arm/lib/csumpartialcopyuser.S | |||
@@ -71,7 +71,7 @@ | |||
71 | .pushsection .fixup,"ax" | 71 | .pushsection .fixup,"ax" |
72 | .align 4 | 72 | .align 4 |
73 | 9001: mov r4, #-EFAULT | 73 | 9001: mov r4, #-EFAULT |
74 | ldr r5, [fp, #4] @ *err_ptr | 74 | ldr r5, [sp, #8*4] @ *err_ptr |
75 | str r4, [r5] | 75 | str r4, [r5] |
76 | ldmia sp, {r1, r2} @ retrieve dst, len | 76 | ldmia sp, {r1, r2} @ retrieve dst, len |
77 | add r2, r2, r1 | 77 | add r2, r2, r1 |