Re: [mm 4.15-rc8] Random oopses under memory pressure.

From: Linus Torvalds
Date: Thu Jan 18 2018 - 12:28:55 EST


On Thu, Jan 18, 2018 at 9:26 AM, Luck, Tony <tony.luck@xxxxxxxxx> wrote:
>> Both are real page. But why do you expect pages to be 64-byte alinged?
>> Both are aligned to 64-bit as they suppose to be IIUC.
>
> On a 64-bit kernel sizeof struct page == 64 (after much work by people to
> trim out excess stuff). So I thought we made sure to align the base address
> of blocks of "struct page" so that every one neatly fits into one cache line.

The bug happens on 32-bit, and a 'struct page' is not 64-byte aligned
there at all.

See my other email about the explanation of why "page1 - page2"
doesn't work when they aren't mutually aligned to the actual size of
the 'struct page'.

Linus