On Tue, Nov 30, 2021 at 10:41 PM <andrey.konovalov@xxxxxxxxx> wrote: > > From: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > > This patch separates code for zeroing memory from the code clearing tags > in post_alloc_hook(). > > This patch is not useful by itself but makes the simplifications in > the following patches easier to follow. > > This patch does no functional changes. > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > --- > mm/page_alloc.c | 18 ++++++++++-------- > 1 file changed, 10 insertions(+), 8 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 2ada09a58e4b..0561cdafce36 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2406,19 +2406,21 @@ inline void post_alloc_hook(struct page *page, unsigned int order, > kasan_alloc_pages(page, order, gfp_flags); > } else { > bool init = !want_init_on_free() && want_init_on_alloc(gfp_flags); > + bool init_tags = init && (gfp_flags & __GFP_ZEROTAGS); > > kasan_unpoison_pages(page, order, init); > > - if (init) { > - if (gfp_flags & __GFP_ZEROTAGS) { > - int i; > + if (init_tags) { > + int i; > > - for (i = 0; i < 1 << order; i++) > - tag_clear_highpage(page + i); > - } else { > - kernel_init_free_pages(page, 1 << order); > - } > + for (i = 0; i < 1 << order; i++) > + tag_clear_highpage(page + i); > + > + init = false; I find this a bit twisted and prone to breakages. Maybe just check for (init && !init_tags) below? > } > + > + if (init) > + kernel_init_free_pages(page, 1 << order); > } > > set_page_owner(page, order, gfp_flags); > -- > 2.25.1 > -- Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Straße, 33 80636 München Geschäftsführer: Paul Manicle, Halimah DeLaine Prado Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg