From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7DEEAC4742C for ; Fri, 30 Oct 2020 07:58:51 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DCC7C206DC for ; Fri, 30 Oct 2020 07:58:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="kyv1rt9K"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cp6HIZGn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCC7C206DC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mE98HuofscnCEoSVj2tFF64etAO0P8O0YZ05Y4m2oYA=; b=kyv1rt9KmvCi7+0Egqx0ApIP4 DS1IvgqjCvN0E/IIRrg3xPvVl+x77K8E3AUOsQYhLqktWUNwxDfjMIr4kEa/5flLCdDdXf/ilYtOq nysFgjUbXnerTbw0WzR9Ymk6zpeEo6vdxhekXl9FRViWeUL8th7bfeAIIRFnEmqoYd3vDAnun1uAg vhUGlY2h3ksnYw+8b8YXyw6YCeHy6JIczTO8FRp2TrpJTU+CGICNh2MHdp88jdji7OVAzUd4wxSVa gHaEmLrga93VQPTl+Icjg85GRb1hEza12hKHosW+a8szCJJ2C/vI6tZx637aC6q1lk0RsMiz8ndjM 7wWeM9rRA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kYPHW-00072h-4s; Fri, 30 Oct 2020 07:57:06 +0000 Received: from mail-il1-x141.google.com ([2607:f8b0:4864:20::141]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kYPHT-00072B-OY for linux-arm-kernel@lists.infradead.org; Fri, 30 Oct 2020 07:57:04 +0000 Received: by mail-il1-x141.google.com with SMTP id a20so5691530ilk.13 for ; Fri, 30 Oct 2020 00:56:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=jHNUEW4Xs+lzszyWALs6FGKJeGa602Suw/FBHUEeNog=; b=cp6HIZGnleIkgkolrPLkQt0/6hEhMBG2617s8VZfE7yAgE48a/QblDe0HqbnV+ExSr bzjTcov31y/ZEYsWQgf1dv8idR1vAinpcdI8NFzJPsuoL8VNJ77hMEZL8sHUt9R/pbEe qzMa+0i0MdDZ+tFSK6vn2+GRtHNs1tqeuvmdRJ2kTLLEGB8vuPX7BQ40sJcOeXCuI+FD HAS1MgvaOWPJjREfO5Cf1V1cKw2J/pD6TVfOkcnL7+5xzkz5MugaBwb8jZIS/s4h5iO3 miPF9Qr3K8XqxSTE1Ug0kqaar+u20KrRLA1KZOhajeGl7FvI97RRGYPLCrR+u0sjXP+U tjAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=jHNUEW4Xs+lzszyWALs6FGKJeGa602Suw/FBHUEeNog=; b=Elaxo8pz1DPQ5Wcc8IfjAU54A+xki3l0BU9/kLEhGf71FiP1lTMGi3oQkSrEiaziFU X5CmsuhMy5aoO50AjLTPfpU6YTtDhWCUxIIzocddymGpA5InA9cQxF7zResaHMFmoPOu vgc5FP2nqWneMwFT/xIz3VR37cqkdr7ZwnBba8s7tJa29h+Gcb4ZATLy1Jj38cqKHdcK 1AvFx6r6im2E24rV47ntNtl1AmHEkYEiKeTJRCgCix4jcDoXpKmJeOGOj8/9giQv6Kjp 7aU3WneWtbwqZmaWAqVwYKZ88yfwMFDo6LkLXTVfmmzcQIz+9H6mouZXIGSqzRfKfJun Eu/w== X-Gm-Message-State: AOAM532MkU+365Ciu2dQc4ITyf4gF/PUyAIdeeIVVgtodcU998k1klvT 7Aq4pO7Hr5ozF4mdLPNwDI4= X-Google-Smtp-Source: ABdhPJxCr8SZCc5nZj82VwSKzVbmf94xSB2JfGFoPQtFL+j3R/W9LybQIFQz0cSWdCpZ6JMiFwvh6A== X-Received: by 2002:a92:ca90:: with SMTP id t16mr882865ilo.33.1604044618045; Fri, 30 Oct 2020 00:56:58 -0700 (PDT) Received: from ubuntu-m3-large-x86 ([2604:1380:45f1:1d00::1]) by smtp.gmail.com with ESMTPSA id r22sm4107608ioc.12.2020.10.30.00.56.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Oct 2020 00:56:57 -0700 (PDT) Date: Fri, 30 Oct 2020 00:56:55 -0700 From: Nathan Chancellor To: Ard Biesheuvel Subject: Re: [PATCH 0/5 v16] KASan for Arm Message-ID: <20201030075655.GA1848109@ubuntu-m3-large-x86> References: <20201019084140.4532-1-linus.walleij@linaro.org> <20201030002900.GA2248731@ubuntu-m3-large-x86> <20201030013228.GA2519055@ubuntu-m3-large-x86> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201030_035703_831522_4C6CBAB9 X-CRM114-Status: GOOD ( 39.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Florian Fainelli , Arnd Bergmann , Abbott Liu , Linus Walleij , Nick Desaulniers , Russell King , Mike Rapoport , clang-built-linux , Andrey Ryabinin , Will Deacon , Linux ARM Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Fri, Oct 30, 2020 at 08:52:53AM +0100, Ard Biesheuvel wrote: > On Fri, 30 Oct 2020 at 02:32, Nathan Chancellor > wrote: > > > > On Thu, Oct 29, 2020 at 05:38:22PM -0700, Nick Desaulniers wrote: > > > On Thu, Oct 29, 2020 at 5:29 PM Nathan Chancellor > > > wrote: > > > > > > > > On Mon, Oct 19, 2020 at 10:41:35AM +0200, Linus Walleij wrote: > > > > > This is the 16th and final (knock on wood) version of > > > > > KASan for ARM32. > > > > > > > > > > Changes since v15: > > > > > > > > > > - Things now work on all boards we have tested on including > > > > > Broadcom and i.MX6Q. > > > > > > > > > > - Folded in a fix from Ard to PAGE_ALIGN() the end of > > > > > mappings making everything work on all Broadcom board. > > > > > > > > > > - Folded in a fix from Ahmad Fatoum making things work > > > > > with fortify on i.MX6Q. > > > > > > > > > > - Testing and testing and testing on build servers. > > > > > > > > > > - We are good to go. > > > > > > > > > > I will now put this in Russell's patch tracker for v5.11. > > > > > > > > > > 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 already in Russell's > > > > > patch tracker. > > > > > > > > > > > > > > > Abbott Liu (1): > > > > > ARM: Define the virtual space of KASan's shadow region > > > > > > > > > > Andrey Ryabinin (3): > > > > > ARM: Disable KASan instrumentation for some code > > > > > ARM: Replace string mem* functions for KASan > > > > > ARM: Enable KASan for ARM > > > > > > > > > > Linus Walleij (1): > > > > > ARM: Initialize the mapping of KASan shadow memory > > > > > > > > > > Documentation/arm/memory.rst | 5 + > > > > > Documentation/dev-tools/kasan.rst | 4 +- > > > > > .../features/debug/KASAN/arch-support.txt | 2 +- > > > > > arch/arm/Kconfig | 10 + > > > > > arch/arm/boot/compressed/Makefile | 1 + > > > > > arch/arm/boot/compressed/string.c | 19 ++ > > > > > arch/arm/include/asm/kasan.h | 33 ++ > > > > > arch/arm/include/asm/kasan_def.h | 81 +++++ > > > > > arch/arm/include/asm/memory.h | 5 + > > > > > arch/arm/include/asm/pgalloc.h | 8 +- > > > > > arch/arm/include/asm/string.h | 26 ++ > > > > > arch/arm/include/asm/thread_info.h | 8 + > > > > > arch/arm/include/asm/uaccess-asm.h | 2 +- > > > > > arch/arm/kernel/entry-armv.S | 3 +- > > > > > arch/arm/kernel/entry-common.S | 9 +- > > > > > arch/arm/kernel/head-common.S | 7 +- > > > > > arch/arm/kernel/setup.c | 2 + > > > > > arch/arm/kernel/unwind.c | 6 +- > > > > > arch/arm/lib/memcpy.S | 3 + > > > > > arch/arm/lib/memmove.S | 5 +- > > > > > arch/arm/lib/memset.S | 3 + > > > > > arch/arm/mm/Makefile | 5 + > > > > > arch/arm/mm/kasan_init.c | 292 ++++++++++++++++++ > > > > > arch/arm/mm/mmu.c | 18 ++ > > > > > arch/arm/mm/pgd.c | 16 +- > > > > > arch/arm/vdso/Makefile | 2 + > > > > > 26 files changed, 561 insertions(+), 14 deletions(-) > > > > > create mode 100644 arch/arm/include/asm/kasan.h > > > > > create mode 100644 arch/arm/include/asm/kasan_def.h > > > > > create mode 100644 arch/arm/mm/kasan_init.c > > > > > > > > > > -- > > > > > 2.26.2 > > > > > > > > > > > > > After this series was applied and available in -next, ARCH=arm LLVM=1 > > > > allyesconfig builds started failing: > > > > > > > > $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- KCONFIG_ALLCONFIG=<(echo CONFIG_CPU_BIG_ENDIAN=n) LLVM=1 distclean allyesconfig vmlinux > > > > ... > > > > ld.lld: error: section: .exit.data is not contiguous with other relro sections > > > > ... > > > > > > > > $ git bisect ld: [3f267ec60b922eff2a5c90d532357a39f155b730] Add linux-next specific files for 20201029 > > > > # good: [23859ae44402f4d935b9ee548135dd1e65e2cbf4] Merge tag 'trace-v5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace > > > > git bisect start '3f267ec60b922eff2a5c90d532357a39f155b730' '23859ae44402f4d935b9ee548135dd1e65e2cbf4' > > > > # bad: [bfa70a4ea4bfa6f87b58cf8b90b88297389c92b7] Merge remote-tracking branch 'mtd/mtd/next' into master > > > > git bisect bad bfa70a4ea4bfa6f87b58cf8b90b88297389c92b7 > > > > # bad: [37a292dcf77532547f335ed5063d9169031c9b08] Merge remote-tracking branch 'sunxi/sunxi/for-next' into master > > > > git bisect bad 37a292dcf77532547f335ed5063d9169031c9b08 > > > > # good: [e6d922c77db276a16f0b7933c2a9951dc9c0052c] Merge remote-tracking branch 'drm-misc-fixes/for-linux-next-fixes' into master > > > > git bisect good e6d922c77db276a16f0b7933c2a9951dc9c0052c > > > > # bad: [cbe49fbb8f6c8d29bc1d9a5a9a742ef2c2eb6320] Merge remote-tracking branch 'mvebu/for-next' into master > > > > git bisect bad cbe49fbb8f6c8d29bc1d9a5a9a742ef2c2eb6320 > > > > # bad: [d0e12484e7e1ede73c538744cdbe9439f7335d01] Merge remote-tracking branch 'arm-soc/for-next' into master > > > > git bisect bad d0e12484e7e1ede73c538744cdbe9439f7335d01 > > > > # good: [24a23387c15f34bad2485a9e1c3b7ac6f0fb35a6] Merge branch 'asm-generic-cleanup' into asm-generic > > > > git bisect good 24a23387c15f34bad2485a9e1c3b7ac6f0fb35a6 > > > > # good: [3a8eb4d3421a2ca0f95ac3b1a8f012940d4f0d52] Merge remote-tracking branch 'kbuild/for-next' into master > > > > git bisect good 3a8eb4d3421a2ca0f95ac3b1a8f012940d4f0d52 > > > > # bad: [20f96e606509ee5084690179afe1810b95617a92] Merge branches 'fixes' and 'misc' into for-next > > > > git bisect bad 20f96e606509ee5084690179afe1810b95617a92 > > > > # good: [d6d51a96c7d63b7450860a3037f2d62388286a52] ARM: 9014/2: Replace string mem* functions for KASan > > > > git bisect good d6d51a96c7d63b7450860a3037f2d62388286a52 > > > > # good: [5615f69bc2097452ecc954f5264d784e158d6801] ARM: 9016/2: Initialize the mapping of KASan shadow memory > > > > git bisect good 5615f69bc2097452ecc954f5264d784e158d6801 > > > > # bad: [fc2933c133744305236793025b00c2f7d258b687] ARM: 9020/1: mm: use correct section size macro to describe the FDT virtual address > > > > git bisect bad fc2933c133744305236793025b00c2f7d258b687 > > > > # bad: [421015713b306e47af95d4d61cdfbd96d462e4cb] ARM: 9017/2: Enable KASan for ARM > > > > git bisect bad 421015713b306e47af95d4d61cdfbd96d462e4cb > > > > # first bad commit: [421015713b306e47af95d4d61cdfbd96d462e4cb] ARM: 9017/2: Enable KASan for ARMog > > > > > > > > An allyesconfig kernel compiled with clang does not link properly with > > > > ld.bfd without a workaround [1], which I do not have time to apply and > > > > test now but can later if it is relevant. I have not done any triage on > > > > this yet either but I wanted to get the report out in case there is > > > > anything obvious. > > > > > > > > [1]: https://github.com/ClangBuiltLinux/linux/issues/325 > > > > > > relro? smells like: > > > https://lore.kernel.org/lkml/20201016175339.2429280-1-ndesaulniers@google.com/T/#u > > > > > > > Huh, did not even realize that the error messages were the same, my bad! > > > > This issue is simple enough to produce by just adding CONFIG_KASAN=y to > > multi_v7_defconfig. I tried adding '-z norelro' to LDFLAGS_vmlinux in > > arch/arm/Makefile and it fixes the build error but the resulting kernel > > does not boot in QEMU. > > > > $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LLVM=1 distclean defconfig > > > > $ scripts/config -e KASAN > > > > $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LLVM=1 olddefconfig zImage > > > > $ ~/cbl/github/boot-utils/boot-qemu.sh -a arm32_v7 -k . > > /home/nathan/cbl/github/boot-utils/images/arm/rootfs.cpio.zst: 3176448 bytes > > + timeout --foreground 3m unbuffer qemu-system-arm -machine virt -no-reboot -append 'console=ttyAMA0 ' -display none -initrd /home/nathan/cbl/github/boot-utils/images/arm/rootfs.cpio -kernel /home/nathan/src/linux-next/arch/arm/boot/zImage -m 512m -nodefaults -serial mon:stdio > > + RET=124 > > + set +x > > > > '-z norelro' boots fine without KASAN so I assume there is something up > > specifically with KASAN and LLVM for ARM. > > > > How long did you wait for it to boot? Booting a KASAN kernel under > QEMU emulation is going to be *very* slow. The timeout command above is 3m and there was no output from the kernel in that amount of time. What kind of time should I be reasonably expecting? Cheers, Nathan _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel