Commit b9d68cdc authored by David S. Miller's avatar David S. Miller Committed by Greg Kroah-Hartman

sparc64: Fix exception handling in UltraSPARC-III memcpy.


[ Upstream commit 0ede1c40 ]

Mikael Pettersson reported that some test programs in the strace-4.18
testsuite cause an OOPS.

After some debugging it turns out that garbage values are returned
when an exception occurs, causing the fixup memset() to be run with
bogus arguments.

The problem is that two of the exception handler stubs write the
successfully copied length into the wrong register.

Fixes: ee841d0a ("sparc64: Convert U3copy_{from,to}_user to accurate exception reporting.")
Reported-by: default avatarMikael Pettersson <mikpelinux@gmail.com>
Tested-by: default avatarMikael Pettersson <mikpelinux@gmail.com>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bfafa56e
...@@ -145,13 +145,13 @@ ENDPROC(U3_retl_o2_plus_GS_plus_0x08) ...@@ -145,13 +145,13 @@ ENDPROC(U3_retl_o2_plus_GS_plus_0x08)
ENTRY(U3_retl_o2_and_7_plus_GS) ENTRY(U3_retl_o2_and_7_plus_GS)
and %o2, 7, %o2 and %o2, 7, %o2
retl retl
add %o2, GLOBAL_SPARE, %o2 add %o2, GLOBAL_SPARE, %o0
ENDPROC(U3_retl_o2_and_7_plus_GS) ENDPROC(U3_retl_o2_and_7_plus_GS)
ENTRY(U3_retl_o2_and_7_plus_GS_plus_8) ENTRY(U3_retl_o2_and_7_plus_GS_plus_8)
add GLOBAL_SPARE, 8, GLOBAL_SPARE add GLOBAL_SPARE, 8, GLOBAL_SPARE
and %o2, 7, %o2 and %o2, 7, %o2
retl retl
add %o2, GLOBAL_SPARE, %o2 add %o2, GLOBAL_SPARE, %o0
ENDPROC(U3_retl_o2_and_7_plus_GS_plus_8) ENDPROC(U3_retl_o2_and_7_plus_GS_plus_8)
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment