diff options
author | Santosh Sivaraj <santosh@fossix.org> | 2019-09-03 23:43:58 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2019-09-12 01:27:00 +0200 |
commit | 20055a8bfaaa75f2cb9c23ecc8ab12b4abd8dc84 (patch) | |
tree | 3d64b3e4bd6df2e322a47712bd65d72c46f77bb3 /arch/powerpc/lib | |
parent | powerpc: Add attributes for setjmp/longjmp (diff) | |
download | linux-20055a8bfaaa75f2cb9c23ecc8ab12b4abd8dc84.tar.xz linux-20055a8bfaaa75f2cb9c23ecc8ab12b4abd8dc84.zip |
powerpc/memcpy: Fix stack corruption for smaller sizes
For sizes lesser than 128 bytes, the code branches out early without saving
the stack frame, which when restored later drops frame of the caller.
Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Santosh Sivaraj <santosh@fossix.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190903214359.23887-1-santosh@fossix.org
Diffstat (limited to 'arch/powerpc/lib')
-rw-r--r-- | arch/powerpc/lib/memcpy_mcsafe_64.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/lib/memcpy_mcsafe_64.S b/arch/powerpc/lib/memcpy_mcsafe_64.S index 949976dc115d..cb882d9a6d8a 100644 --- a/arch/powerpc/lib/memcpy_mcsafe_64.S +++ b/arch/powerpc/lib/memcpy_mcsafe_64.S @@ -84,7 +84,6 @@ err1; stw r0,0(r3) 3: sub r5,r5,r6 cmpldi r5,128 - blt 5f mflr r0 stdu r1,-STACKFRAMESIZE(r1) @@ -99,6 +98,7 @@ err1; stw r0,0(r3) std r22,STK_REG(R22)(r1) std r0,STACKFRAMESIZE+16(r1) + blt 5f srdi r6,r5,7 mtctr r6 |