Thread (4 messages) flat view 4 messages, 2 authors, 2019-02-08

Re: [PATCH v2] powerpc/64: Fix memcmp reading past the end of src/dest

From: Segher Boessenkool <hidden>
Date: 2019-02-08 15:52:16

On Fri, Feb 08, 2019 at 05:12:21PM +1100, Michael Ellerman wrote:
Segher Boessenkool [off-list ref] writes:
quoted
On Thu, Feb 07, 2019 at 10:53:13PM +1100, Michael Ellerman wrote:
quoted
Chandan reported that fstests' generic/026 test hit a crash:
quoted
The instruction dump decodes as:
  subfic  r6,r5,8
  rlwinm  r6,r6,3,0,28
  ldbrx   r9,0,r3
  ldbrx   r10,0,r4	<-

Which shows us doing an 8 byte load from c00000062ac3fff9, which
crosses the page boundary at c00000062ac40000 and faults.

It's not OK for memcmp to read past the end of the source or
destination buffers.
It's not okay to access memory pages unsolicited.  Reading past the end
is fine per se.
Yeah I guess that's true.

Things like KASAN/valgrind probably disagree, but KASAN at least
overrides memcmp AIUI.

I guess I feel better about it not reading past the end of the buffers,
but maybe I'm being paranoid.
Sure, and that may be the best thing to do in the kernel.  OTOH, newer GCC
will inline many mem* for powerpc, and it will access past the end of
strings and buffers (but not past 4kB boundaries).
The other complication is we support multiple page sizes, so detecting a
page boundary is more complicated than it could be.
Yeah.
So I guess I'm inclined to stick with this approach, but I can update
the change log.
Thanks!  I mentioned it because this was the bug that was hit here: reading
past the end had no ill effect (as far as we know), but accessing the wrong
page did :-)


Segher
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help