[PATCH v4 00/17] khwasan: kernel hardware assisted address sanitizer
From: Kostya Serebryany <hidden>
Date: 2018-06-28 00:04:47
Also in:
linux-doc, linux-kbuild, linux-mm, lkml
On Wed, Jun 27, 2018 at 4:08 PM Andrew Morton [off-list ref] wrote:
On Tue, 26 Jun 2018 15:15:10 +0200 Andrey Konovalov [off-list ref] wrote:quoted
This patchset adds a new mode to KASAN [1], which is called KHWASAN (Kernel HardWare assisted Address SANitizer). The plan is to implement HWASan [2] for the kernel with the incentive, that it's going to have comparable to KASAN performance, but in the same time consume much less memory, trading that off for somewhat imprecise bug detection and being supported only for arm64.Why do we consider this to be a worthwhile change? Is KASAN's memory consumption actually a significant problem? Some data regarding that would be very useful.
On mobile, ASAN's and KASAN's memory usage is a significant problem. Not sure if I can find scientific evidence of that. CC-ing Vishwath Mohan who deals with KASAN on Android to provide anecdotal evidence. There are several other benefits too: * HWASAN more reliably detects non-linear-buffer-overflows compared to ASAN (same for kernel-HWASAN vs kernel-ASAN) * Same for detecting use-after-free (since HWASAN doesn't rely on quarantine). * Much easier to implement stack-use-after-return detection (which IIRC KASAN doesn't have yet, because in KASAN it's too hard)
If it is a large problem then we still have that problem on x86, so the problem remains largely unsolved?
The problem is more significant on mobile devices than on desktop/server. I'd love to have [K]HWASAN on x86_64 as well, but it's less trivial since x86_64 doesn't have an analog of aarch64's top-byte-ignore hardware feature.
quoted
====== Benchmarks The following numbers were collected on Odroid C2 board. Both KASAN and KHWASAN were used in inline instrumentation mode. Boot time [1]: * ~1.7 sec for clean kernel * ~5.0 sec for KASAN * ~5.0 sec for KHWASAN Slab memory usage after boot [2]: * ~40 kb for clean kernel * ~105 kb + 1/8th shadow ~= 118 kb for KASAN * ~47 kb + 1/16th shadow ~= 50 kb for KHWASAN Network performance [3]: * 8.33 Gbits/sec for clean kernel * 3.17 Gbits/sec for KASAN * 2.85 Gbits/sec for KHWASAN Note, that KHWASAN (compared to KASAN) doesn't require quarantine. [1] Time before the ext4 driver is initialized. [2] Measured as `cat /proc/meminfo | grep Slab`. [3] Measured as `iperf -s & iperf -c 127.0.0.1 -t 30`.The above doesn't actually demonstrate the whole point of the patchset: to reduce KASAN's very high memory consumption? -- You received this message because you are subscribed to the Google Groups "kasan-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to kasan-dev+unsubscribe at googlegroups.com. To post to this group, send email to kasan-dev at googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/kasan-dev/20180627160800.3dc7f9ee41c0badbf7342520%40linux-foundation.org. For more options, visit https://groups.google.com/d/optout.