Re: [PATCH v3 2/2] slab: __GFP_ZERO is incompatible with a constructor

From: Guenter Roeck
Date: Sat Aug 04 2018 - 10:02:47 EST


On 08/04/2018 02:28 AM, Geert Uytterhoeven wrote:
On Sat, Aug 4, 2018 at 12:34 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
On Fri, Aug 03, 2018 at 02:22:57PM -0700, Guenter Roeck wrote:
On Thu, Apr 12, 2018 at 12:13:22PM -0700, Matthew Wilcox wrote:
From: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx>
__GFP_ZERO requests that the object be initialised to all-zeroes,
while the purpose of a constructor is to initialise an object to a
particular pattern. We cannot do both. Add a warning to catch any
users who mistakenly pass a __GFP_ZERO flag when allocating a slab with
a constructor.

Fixes: d07dbea46405 ("Slab allocators: support __GFP_ZERO in all allocators")
Signed-off-by: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx>
Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>
Acked-by: Vlastimil Babka <vbabka@xxxxxxx>
Acked-by: Michal Hocko <mhocko@xxxxxxxx>

Seen with v4.18-rc7-139-gef46808 and v4.18-rc7-178-g0b5b1f9a78b5 when
booting sh4 images in qemu:

Thanks! It's under discussion here:

https://marc.info/?t=153301426900002&r=1&w=2

and https://www.spinics.net/lists/linux-sh/msg53298.html

also reported here with a bogus backtrace:

https://marc.info/?l=linux-sh&m=153305755505935&w=2

Short version: It's a bug that's been present since 2009 and nobody
noticed until now. And nobody's quite sure what the effect of this
bug is.

Though now it is making a lot of noise :-).

I just found two more 0-day bugs, so maybe improved testing and log messages
such as the one encountered here do help a bit.

Guenter