Re: [PATCH v3] powerpc/64: Fix memcmp reading past the end of src/dest
From: Segher Boessenkool <hidden>
Date: 2019-03-22 18:56:54
On Fri, Mar 22, 2019 at 11:37:24PM +1100, Michael Ellerman wrote:
.Lcmp_rest_lt8bytes: - /* Here we have only less than 8 bytes to compare with. at least s1 - * Address is aligned with 8 bytes. - * The next double words are load and shift right with appropriate - * bits. + /* + * Here we have less than 8 bytes to compare. At least s1 is aligned to + * 8 bytes, but s2 may not be. We must make sure s2 + 8 doesn't cross a
"s2 + 7"? The code is fine though (bgt, not bge).
+ * page boundary, otherwise we might read past the end of the buffer and + * trigger a page fault. We use 4K as the conservative minimum page + * size. If we detect that case we go to the byte-by-byte loop. + * + * Otherwise the next double word is loaded from s1 and s2, and shifted + * right to compare the appropriate bits. */ + clrldi r6,r4,(64-12) // r6 = r4 & 0xfff
You can just write rlwinm r6,r4,0,0x0fff if that is clearer? Or do you still want a comment with that :-)
+ cmpdi r6,0xff8 + bgt .Lshort
Reviewed-by: Segher Boessenkool <redacted> Segher