arm: clone: restore stack pointer just after return from syscall
arm: clone: restore stack pointer just after return from syscall

If the syscall returns with an error the stack pointer and r4 register
are not restored because the instruction 'ldmnefd sp!, {r4}' is executed
after branching to '__error' label.
This bug has been spotted out by running './utstest clone 5' from LTP
built with -fstack-protector-all compiler flag as log below:

root@cortex-a9:/usr/tests/ltp/testcases/bin# ./utstest clone 5
stack smashing detected: ./utstest terminated()

Regression introduced by commit e58798e107d652644629a1daaa95d76430808d53

Signed-off-by: Filippo Arcidiacono <26825f07340f791bc0d38da89fcffcd93550a83c@st.com>
Signed-off-by: Giuseppe Di Giore <420deeab8da75a88c0d08d20ab5fd252eeb1cb07@st.com>
Signed-off-by: Carmelo Amoroso <532378793705a04edd56deb76ad8c0442834d55d@st.com>

hjl-tools/uClibc,kraj/uClibc,hjl-tools/uClibc,groundwater/uClibc,groundwater/uClibc,foss-for-synopsys-dwc-arc-processors/uClibc,hwoarang/uClibc,majek/uclibc-vx32,kraj/uClibc,brgl/uclibc-ng,foss-xtensa/uClibc,majek/uclibc-vx32,foss-for-synopsys-dwc-arc-processors/uClibc,groundwater/uClibc,wbx-github/uclibc-ng,foss-for-synopsys-dwc-arc-processors/uClibc,hwoarang/uClibc,brgl/uclibc-ng,ffainelli/uClibc,waweber/uclibc-clang,waweber/uclibc-clang,ffainelli/uClibc,hjl-tools/uClibc,foss-xtensa/uClibc,wbx-github/uclibc-ng,mephi42/uClibc,hjl-tools/uClibc,mephi42/uClibc,brgl/uclibc-ng,kraj/uclibc-ng,ddcc/klee-uclibc-0.9.33.2,ffainelli/uClibc,kraj/uClibc,foss-xtensa/uClibc,ddcc/klee-uclibc-0.9.33.2,ddcc/klee-uclibc-0.9.33.2,waweber/uclibc-clang,mephi42/uClibc,wbx-github/uclibc-ng,groundwater/uClibc,kraj/uclibc-ng,majek/uclibc-vx32,hjl-tools/uClibc,waweber/uclibc-clang,foss-xtensa/uClibc,ffainelli/uClibc,wbx-github/uclibc-ng,ffainelli/uClibc,kraj/uclibc-ng,mephi42/uClibc,groundwater/uClibc,hwoarang/uClibc,brgl/uclibc-ng,kraj/uclibc-ng,ddcc/klee-uclibc-0.9.33.2,hwoarang/uClibc,kraj/uClibc,majek/uclibc-vx32,foss-for-synopsys-dwc-arc-processors/uClibc