RE: [PATCH 1/1] mm: Fix struct page layout on 32-bit systems
From: David Laight
Date: Fri Apr 16 2021 - 03:32:44 EST
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.
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.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)