Re: [PATCH 1/1] mm: Fix struct page layout on 32-bit systems

From: Matthew Wilcox
Date: Fri Apr 16 2021 - 07:06:16 EST


On Fri, Apr 16, 2021 at 07:32:35AM +0000, David Laight wrote:
> From: Matthew Wilcox <willy@xxxxxxxxxxxxx>
> > Sent: 15 April 2021 23:22
> >
> > On Thu, Apr 15, 2021 at 09:11:56PM +0000, David Laight wrote:
> > > Isn't it possible to move the field down one long?
> > > This might require an explicit zero - but this is not a common
> > > code path - the extra write will be noise.
> >
> > Then it overlaps page->mapping. See emails passim.
>
> The rules on overlaps make be wonder if every 'long'
> should be in its own union.

That was what we used to have. It was worse.

> The comments would need to say when each field is used.
> It would, at least, make these errors less common.
>
> That doesn't solve the 64bit dma_addr though.
>
> Actually rather that word-swapping dma_addr on 32bit BE
> could you swap over the two fields it overlays with.
> That might look messy in the .h, but it doesn't require
> an accessor function to do the swap - easily missed.

No.