linux/arch/sparc/lib
David S. Miller 0ede1c4013 sparc64: Fix exception handling in UltraSPARC-III memcpy.
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: ee841d0aff ("sparc64: Convert U3copy_{from,to}_user to accurate exception reporting.")
Reported-by: Mikael Pettersson <mikpelinux@gmail.com>
Tested-by: Mikael Pettersson <mikpelinux@gmail.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-08-04 09:47:52 -07:00
..
COPYING.LIB
GENbzero.S sparc64: fix fault handling in NGbzero.S and GENbzero.S 2017-05-09 12:16:25 -07:00
GENcopy_from_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
GENcopy_to_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
GENmemcpy.S sparc64: Convert GENcopy_{from,to}_user to accurate exception reporting. 2016-10-24 11:31:58 -07:00
GENpage.S sparc,sparc64: unify lib/ 2008-12-04 09:17:19 -08:00
GENpatch.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
Makefile sparc64: Add __multi3 for gcc 7.x and later. 2017-06-05 11:30:33 -07:00
NG2copy_from_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NG2copy_to_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NG2memcpy.S arch/sparc: Avoid DCTI Couples 2017-03-27 21:51:40 -07:00
NG2patch.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NG4clear_page.S sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
NG4copy_from_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NG4copy_page.S sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
NG4copy_to_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NG4memcpy.S arch/sparc: Avoid DCTI Couples 2017-03-27 21:51:40 -07:00
NG4memset.S arch/sparc: Avoid DCTI Couples 2017-03-27 21:51:40 -07:00
NG4patch.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NGbzero.S sparc64: fix fault handling in NGbzero.S and GENbzero.S 2017-05-09 12:16:25 -07:00
NGcopy_from_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NGcopy_to_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
NGmemcpy.S arch/sparc: Avoid DCTI Couples 2017-03-27 21:51:40 -07:00
NGpage.S sparc64: Add SPARC-T4 optimized memcpy. 2012-09-27 00:35:11 -07:00
NGpatch.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
PeeCeeI.c sparc64: update IO access functions in PeeCeeI 2014-07-21 21:43:18 -07:00
U1copy_from_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
U1copy_to_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
U1memcpy.S sparc64: Convert U1copy_{from,to}_user to accurate exception reporting. 2016-10-24 11:32:12 -07:00
U3copy_from_user.S sparc64: Convert U3copy_{from,to}_user to accurate exception reporting. 2016-10-24 21:20:35 -07:00
U3copy_to_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
U3memcpy.S sparc64: Fix exception handling in UltraSPARC-III memcpy. 2017-08-04 09:47:52 -07:00
U3patch.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
VISsave.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
ashldi3.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
ashrdi3.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
atomic32.c locking/atomic, arch/sparc: Implement atomic{,64}_fetch_{add,sub,and,or,xor}() 2016-06-16 10:48:30 +02:00
atomic_64.S sed regex in Makefile.build requires line break between exported symbols 2017-06-19 11:13:05 -07:00
bitext.c sparc/srmmu: clear trailing edge of bitmap properly 2013-03-31 19:29:12 -04:00
bitops.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
blockops.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
bzero.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
checksum_32.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
checksum_64.S Adding the type of exported symbols 2017-06-19 11:13:06 -07:00
clear_page.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
cmpdi2.c [SPARC32]: Add __cmpdi2() libcall implementation ala. MIPS. 2007-08-26 18:49:09 -07:00
copy_in_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
copy_page.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
copy_user.S sparc: switch to RAW_COPY_USER 2017-04-02 12:53:15 -04:00
csum_copy.S Adding the type of exported symbols 2017-06-19 11:13:06 -07:00
csum_copy_from_user.S sparc64: Fix section attribute warnings. 2009-05-29 16:12:02 -07:00
csum_copy_to_user.S sparc64: Fix section attribute warnings. 2009-05-29 16:12:02 -07:00
divdi3.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
ffs.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
hweight.S sparc64: Use indirect calls in hamming weight stubs 2017-06-30 08:59:55 +09:00
iomap.c sparc: switch to GENERIC_PCI_IOMAP 2011-12-04 15:59:49 +02:00
ipcsum.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
libgcc.h [SPARC32]: Add __cmpdi2() libcall implementation ala. MIPS. 2007-08-26 18:49:09 -07:00
locks.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
lshrdi3.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
mcount.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
memcmp.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
memcpy.S sparc32: debride memcpy.S a bit 2016-08-07 23:55:49 -04:00
memmove.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
memscan_32.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
memscan_64.S Adding the type of exported symbols 2017-06-19 11:13:06 -07:00
memset.S Adding the type of exported symbols 2017-06-19 11:13:06 -07:00
muldi3.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
multi3.S sparc64: Add __multi3 for gcc 7.x and later. 2017-06-05 11:30:33 -07:00
strlen.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
strncmp_32.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
strncmp_64.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00
ucmpdi2.c sparc32: add ucmpdi2 2012-05-19 15:23:57 -07:00
udivdi3.S sparc32: Kill off software 32-bit multiply/divide routines. 2012-05-15 11:23:47 -07:00
xor.S sparc: move exports to definitions 2016-08-07 23:55:43 -04:00