Okay, this doesn't make sense to me. The code does:
u8 *start;
u8 *fault;
/* ... */
start = page_address(page);
/* ... */
fault = check_bytes(start + length, POISON_INUSE, remainder);
if (!fault)
return 1;
while (end > fault && end[-1] == POISON_INUSE)
end--;
slab_err(s, page, "Padding overwritten. 0x%p-0x%p", fault, end - 1);
So how come we're printing out 'fault' as zero and 'end' at 4 GB? Christoph?
Zdenek, can you please send the full dmesg?
Pekka
--