Thread (15 messages) 15 messages, 4 authors, 2020-10-19

Re: [PATCH 0/5 v15] KASan for Arm

From: Ard Biesheuvel <ardb@kernel.org>
Date: 2020-10-14 07:19:53

On Wed, 14 Oct 2020 at 01:57, Florian Fainelli [off-list ref] wrote:
On 10/13/20 11:00 AM, Ard Biesheuvel wrote:
quoted
On Tue, 13 Oct 2020 at 19:57, Florian Fainelli [off-list ref] wrote:
quoted
On 10/12/20 11:34 PM, Ard Biesheuvel wrote:
quoted
On Tue, 13 Oct 2020 at 05:22, Florian Fainelli [off-list ref] wrote:
quoted


On 10/12/2020 2:56 PM, Linus Walleij wrote:
quoted
This is the 15th iteration of KASan for ARM/Aarch32.

I dropped my fix in the beginning of the series for
Ard's more elaborate and thorough fix moving the DTB
out of the kernel linear mapped region and into its own
part of the memory.

This fixes my particular issue on the Qualcomm APQ8060
and I hope it may also solve Florian's issue and what
Ard has been seeing. KASan should be working with
pretty much everything you throw on it, unless you
do what I did and ran it on a 64MB system, where
under some load it can run into the OOM killer for
obvious reasons.

You are encouraged to test this patch set to find memory out
of bounds bugs with ARM32 platforms and drivers.

There is a git branch you can pull in:
https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/log/?h=kasan

This branch includes Ard's two patches.

As Ard's patches are in Russell's patch tracker I will
put these there as well if it now works for everyone.
Tested-by: Florian Fainelli <f.fainelli@gmail.com>

On Brahma-B15 (ARMv7 LPAE) and Brahma-B53 (ARMv8 in AArch32, also with
LPAE). The 3 Cortex-A72 devices that I have access to all fail with the
following (not related to the CPU type, more to the memory map) which I
am hoping to track down later this week, I would not consider those
failures to be a blocker at this point.

Thanks a lot for your persistence working on this Linus, and Ard!
Hi Florian,
quoted
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x00000000063fdfff]
[    0.000000]   node   0: [mem 0x0000000006400000-0x000000000fffffff]
[    0.000000]   node   0: [mem 0x0000000010400000-0x000000007fffffff]
[    0.000000] kasan: Mapping kernel virtual memory block:
c0000000-c63fe000 at shadow: b7000000-b7c7fc00
[    0.000000] Kernel panic - not syncing: kasan_pte_populate failed to
alloc pte for address 0xe2806000
The issue here is that the end of the shadow region being populated is
not aligned to the page size, and so we never meet the stop condition
in kasan_pgd_populate(), and instead, we keep iterating until we run
out of memory.

Does this help?
Not really, the same kasan_pte_populate() failure happens for the same
address(es).

Adding memblock=debug does not allow me to boot to the point where kasan
shadow memory gets initialized, again, not a blocker, but this sounds
like something that may have to be looked at.
That address is not part of the shadow range, so it must be something
with the stop condition in kasan_pgd_populate(). If you have time,
could you add some printk()s in there to see what is going on?
Yes, I have just incorrectly applied the patch not sure how... it does
work correctly now on all of my systems, thanks a lot!
Excellent! Thanks for double checking.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help