From mboxrd@z Thu Jan 1 00:00:00 1970 From: John David Anglin Subject: Re: [PATCH] parisc: Fix gcc miscompilation in pa_memcpy() Date: Fri, 05 Jul 2013 17:44:18 -0400 Message-ID: <51D73E32.5060803@bell.net> References: <20130704203411.GA1258@p100.box> <12486210.aWq2PzHOxI@eto> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Cc: linux-parisc@vger.kernel.org To: Rolf Eike Beer Return-path: In-Reply-To: <12486210.aWq2PzHOxI@eto> List-ID: List-Id: linux-parisc.vger.kernel.org On 7/5/2013 5:05 PM, Rolf Eike Beer wrote: > Am Donnerstag 04 Juli 2013, 22:34:11 schrieb Helge Deller: >> When running the LTP testsuite one may hit this kernel BUG() with the >> write06 testcase: >> >> kernel BUG at mm/filemap.c:2023! >> CPU: 1 PID: 8614 Comm: writev01 Not tainted 3.10.0-rc7-64bit-c3000+ #6 >> IASQ: 0000000000000000 0000000000000000 IAOQ: 00000000401e6e84 >> 00000000401e6e88 IIR: 03ffe01f ISR: 0000000010340000 IOR: >> 000001fbe0380820 >> CPU: 1 CR30: 00000000bef80000 CR31: ffffffffffffffff >> ORIG_R28: 00000000bdc192c0 >> IAOQ[0]: iov_iter_advance+0x3c/0xc0 >> IAOQ[1]: iov_iter_advance+0x40/0xc0 >> RP(r2): generic_file_buffered_write+0x204/0x3f0 >> Backtrace: >> [<00000000401e764c>] generic_file_buffered_write+0x204/0x3f0 >> [<00000000401eab24>] __generic_file_aio_write+0x244/0x448 >> [<00000000401eadc0>] generic_file_aio_write+0x98/0x150 >> [<000000004024f460>] do_sync_readv_writev+0xc0/0x130 >> [<000000004025037c>] compat_do_readv_writev+0x12c/0x340 >> [<00000000402505f8>] compat_writev+0x68/0xa0 >> [<0000000040251d88>] compat_SyS_writev+0x98/0xf8 >> >> Reason for this crash is a gcc miscompilation in the fault handlers of >> pa_memcpy() which return the fault address instead of the copied bytes. >> Since this seems to be a generic problem with gcc-4.7.x (and below), it's >> better to simplify the fault handlers in pa_memcpy to avoid this problem. > Which gcc PR# is that? There is no gcc PR as pa_memcpy is not legitimate C code. There is an implicit assumption that certain variables will contain correct values when an exception occurs and the code randomly jumps to one of the exception blocks. There is no guarantee of this. If a PR was filed, it would likely be marked as invalid. I would judge there's no hope in fixing this in 4.7. Dave -- John David Anglin dave.anglin@bell.net