From: Mike Rapoport <rppt@linux.ibm.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
Ahmad Fatoum <a.fatoum@pengutronix.de>,
Arnd Bergmann <arnd@arndb.de>,
Abbott Liu <liuwenliang@huawei.com>,
Linus Walleij <linus.walleij@linaro.org>,
Russell King <linux@armlinux.org.uk>,
kasan-dev <kasan-dev@googlegroups.com>,
Alexander Potapenko <glider@google.com>,
Dmitry Vyukov <dvyukov@google.com>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 4/5 v16] ARM: Initialize the mapping of KASan shadow memory
Date: Mon, 19 Oct 2020 13:04:58 +0300 [thread overview]
Message-ID: <20201019100458.GB455883@linux.ibm.com> (raw)
In-Reply-To: <CAMj1kXGgrtj79UQ7Ei5NEEQ1_ALTJRVALFnjOmhZLb_4tSHauQ@mail.gmail.com>
On Mon, Oct 19, 2020 at 11:42:44AM +0200, Ard Biesheuvel wrote:
> On Mon, 19 Oct 2020 at 11:37, Mike Rapoport <rppt@linux.ibm.com> wrote:
> >
> > On Mon, Oct 19, 2020 at 10:41:39AM +0200, Linus Walleij wrote:
> > > This patch initializes KASan shadow region's page table and memory.
> > > There are two stage for KASan initializing:
> > >
> > > 1. At early boot stage the whole shadow region is mapped to just
> > > one physical page (kasan_zero_page). It is finished by the function
> > > kasan_early_init which is called by __mmap_switched(arch/arm/kernel/
> > > head-common.S)
> > >
> > > 2. After the calling of paging_init, we use kasan_zero_page as zero
> > > shadow for some memory that KASan does not need to track, and we
> > > allocate a new shadow space for the other memory that KASan need to
> > > track. These issues are finished by the function kasan_init which is
> > > call by setup_arch.
> > >
> > > When using KASan we also need to increase the THREAD_SIZE_ORDER
> > > from 1 to 2 as the extra calls for shadow memory uses quite a bit
> > > of stack.
> > >
> > > As we need to make a temporary copy of the PGD when setting up
> > > shadow memory we create a helpful PGD_SIZE definition for both
> > > LPAE and non-LPAE setups.
> > >
> > > The KASan core code unconditionally calls pud_populate() so this
> > > needs to be changed from BUG() to do {} while (0) when building
> > > with KASan enabled.
> > >
> > > After the initial development by Andre Ryabinin several modifications
> > > have been made to this code:
> > >
> > > Abbott Liu <liuwenliang@huawei.com>
> > > - Add support ARM LPAE: If LPAE is enabled, KASan shadow region's
> > > mapping table need be copied in the pgd_alloc() function.
> > > - Change kasan_pte_populate,kasan_pmd_populate,kasan_pud_populate,
> > > kasan_pgd_populate from .meminit.text section to .init.text section.
> > > Reported by Florian Fainelli <f.fainelli@gmail.com>
> > >
> > > Linus Walleij <linus.walleij@linaro.org>:
> > > - Drop the custom mainpulation of TTBR0 and just use
> > > cpu_switch_mm() to switch the pgd table.
> > > - Adopt to handle 4th level page tabel folding.
> > > - Rewrite the entire page directory and page entry initialization
> > > sequence to be recursive based on ARM64:s kasan_init.c.
> > >
> > > Ard Biesheuvel <ardb@kernel.org>:
> > > - Necessary underlying fixes.
> > > - Crucial bug fixes to the memory set-up code.
> > >
> > > Cc: Alexander Potapenko <glider@google.com>
> > > Cc: Dmitry Vyukov <dvyukov@google.com>
> > > Cc: kasan-dev@googlegroups.com
> > > Cc: Mike Rapoport <rppt@linux.ibm.com>
> > > Co-developed-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
> > > Co-developed-by: Abbott Liu <liuwenliang@huawei.com>
> > > Co-developed-by: Ard Biesheuvel <ardb@kernel.org>
> > > Acked-by: Mike Rapoport <rppt@linux.ibm.com>
> > > Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
> > > Tested-by: Ard Biesheuvel <ardb@kernel.org> # QEMU/KVM/mach-virt/LPAE/8G
> > > Tested-by: Florian Fainelli <f.fainelli@gmail.com> # Brahma SoCs
> > > Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de> # i.MX6Q
> > > Reported-by: Russell King - ARM Linux <linux@armlinux.org.uk>
> > > Reported-by: Florian Fainelli <f.fainelli@gmail.com>
> > > Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
> > > Signed-off-by: Abbott Liu <liuwenliang@huawei.com>
> > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > > Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> > > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> > > ---
> >
> > ...
> >
> > > + cpu_switch_mm(tmp_pgd_table, &init_mm);
> > > + local_flush_tlb_all();
> > > +
> > > + clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END);
> > > +
> > > + kasan_populate_early_shadow(kasan_mem_to_shadow((void *)VMALLOC_START),
> > > + kasan_mem_to_shadow((void *)-1UL) + 1);
> > > +
> > > + for_each_memblock(memory, reg) {
> > > + void *start = __va(reg->base);
> > > + void *end = __va(reg->base + reg->size);
> > > +
> >
> > I've killed for_each_memblock() recently and we have now
> >
> > for_each_mem_range(idx, &pa_start, &pa_end)
> >
> > instead.
> >
>
> Will the enumeration include NOMAP regions as well? We could actually
> omit them here, since they don't need KASAN shadow.
The NOMAP regions are omitted.
--
Sincerely yours,
Mike.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-10-19 10:06 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-19 8:41 [PATCH 0/5 v16] KASan for Arm Linus Walleij
2020-10-19 8:41 ` [PATCH 1/5 v16] ARM: Disable KASan instrumentation for some code Linus Walleij
2020-10-19 8:41 ` [PATCH 2/5 v16] ARM: Replace string mem* functions for KASan Linus Walleij
2020-11-06 7:49 ` Naresh Kamboju
2020-11-06 7:49 ` Naresh Kamboju
2020-11-06 8:26 ` Linus Walleij
2020-11-06 8:26 ` Linus Walleij
2020-11-06 8:28 ` Ard Biesheuvel
2020-11-06 8:28 ` Ard Biesheuvel
2020-11-06 9:44 ` Nathan Chancellor
2020-11-06 9:44 ` Nathan Chancellor
2020-11-06 13:37 ` Linus Walleij
2020-11-06 13:37 ` Linus Walleij
2020-11-06 15:15 ` Russell King - ARM Linux admin
2020-11-06 15:15 ` Russell King - ARM Linux admin
2020-11-06 15:18 ` Ard Biesheuvel
2020-11-06 15:18 ` Ard Biesheuvel
2020-11-06 18:09 ` Nathan Chancellor
2020-11-06 18:09 ` Nathan Chancellor
2020-11-09 16:02 ` Linus Walleij
2020-11-09 16:02 ` Linus Walleij
2020-11-09 16:06 ` Russell King - ARM Linux admin
2020-11-09 16:06 ` Russell King - ARM Linux admin
2020-11-10 12:04 ` Ard Biesheuvel
2020-11-10 12:04 ` Ard Biesheuvel
2020-11-12 13:51 ` Linus Walleij
2020-11-12 13:51 ` Linus Walleij
2020-11-12 15:05 ` Ard Biesheuvel
2020-11-12 15:05 ` Ard Biesheuvel
2020-11-12 17:52 ` Nathan Chancellor
2020-11-12 17:52 ` Nathan Chancellor
2020-11-16 15:16 ` Ard Biesheuvel
2020-11-16 15:16 ` Ard Biesheuvel
2020-11-09 16:05 ` Linus Walleij
2020-11-09 16:05 ` Linus Walleij
2020-10-19 8:41 ` [PATCH 3/5 v16] ARM: Define the virtual space of KASan's shadow region Linus Walleij
2020-10-19 8:41 ` [PATCH 4/5 v16] ARM: Initialize the mapping of KASan shadow memory Linus Walleij
2020-10-19 8:54 ` Ard Biesheuvel
2020-10-19 9:34 ` Mike Rapoport
2020-10-19 9:42 ` Ard Biesheuvel
2020-10-19 10:04 ` Mike Rapoport [this message]
2020-10-19 12:57 ` Linus Walleij
2020-10-19 8:41 ` [PATCH 5/5 v16] ARM: Enable KASan for ARM Linus Walleij
2020-10-29 17:45 ` [PATCH 0/5 v16] KASan for Arm Dmitry Osipenko
2020-10-29 17:45 ` Dmitry Osipenko
2020-10-29 18:10 ` Ard Biesheuvel
2020-10-29 18:10 ` Ard Biesheuvel
2020-10-29 19:41 ` Dmitry Osipenko
2020-10-29 19:41 ` Dmitry Osipenko
2020-11-02 18:10 ` Dmitry Osipenko
2020-11-02 18:10 ` Dmitry Osipenko
2020-10-30 0:29 ` Nathan Chancellor
2020-10-30 0:38 ` Nick Desaulniers
2020-10-30 1:32 ` Nathan Chancellor
2020-10-30 7:52 ` Ard Biesheuvel
2020-10-30 7:56 ` Nathan Chancellor
2020-10-30 7:58 ` Ard Biesheuvel
2020-10-30 8:04 ` Nathan Chancellor
2020-10-30 8:10 ` Ard Biesheuvel
2020-10-30 8:45 ` Nathan Chancellor
2020-10-30 8:51 ` Arnd Bergmann
2020-10-30 9:09 ` Nathan Chancellor
2020-11-05 0:30 ` Fāng-ruì Sòng
2020-11-05 0:38 ` Nick Desaulniers
2020-11-05 7:52 ` Ard Biesheuvel
2020-11-05 10:24 ` Mike Rapoport
2020-11-09 23:47 ` Nick Desaulniers
2020-11-10 1:56 ` [PATCH] ARM: Link with '-z norelro' Nathan Chancellor
2020-11-10 2:05 ` Nick Desaulniers
2020-11-10 18:49 ` Nick Desaulniers
2020-11-12 2:52 ` Nathan Chancellor
2020-12-02 23:05 ` Nick Desaulniers
2020-11-05 22:10 ` [PATCH 0/5 v16] KASan for Arm Ahmad Fatoum
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201019100458.GB455883@linux.ibm.com \
--to=rppt@linux.ibm.com \
--cc=a.fatoum@pengutronix.de \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=aryabinin@virtuozzo.com \
--cc=dvyukov@google.com \
--cc=f.fainelli@gmail.com \
--cc=glider@google.com \
--cc=kasan-dev@googlegroups.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=liuwenliang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.