Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp589778imm; Tue, 5 Jun 2018 00:51:40 -0700 (PDT) X-Google-Smtp-Source: ADUXVKK3sYdlMqIGW/T31q6b5Nnd2Y8sqBu26CIydibPwkXHnURJbdrZdHX01cAEbU25JwdYwC7q X-Received: by 2002:a63:66c2:: with SMTP id a185-v6mr20338666pgc.347.1528185100709; Tue, 05 Jun 2018 00:51:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528185100; cv=none; d=google.com; s=arc-20160816; b=Jo5f66k6czV03pKjtbZTWHzHqbxei4IHSNkroRj0Bt/egHxT/4lUY0vCgJheQ0e53z lcAVMAM7CVR0k07Zae7MyoSHgqcHWPHloxZ6FuyCISs8vuSC6EDvuo9XpUPrj/NfAQXJ 8FQb+rPl/95Kb+maWz2UHX24WpeeV3XusEwTHOVtCeTe2OsENXeMSu5khByYKN/4Zo97 NK/wHCRlsfVV12AFTjRrfMdvyQS+HjiKE2RrM6M0WA2rlM1Ei/uQCQtch03rHM8k4Oxp fLuRSp6xQN97sOl4vDmqVHZPRDB5x9KdffXQUv6rrZuqA1pQW4x+e8o/LTuE2Q/OaWrS 1slA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=m6xVfK4GwzYOGCKWJ/bJq11nYqK9oWr3XxqUAAU5jRs=; b=BEQTlU26Z+mO0sZiZGVICCr0BBsxHLoNqYw7DR3YtHwG7npRmaHen/BpRoywlJ6zOu DigiB3uFKRzrjOjfG5Y/j7sPPnuCRhkR8uGVywI5Jdg/QtR4Z3luq+MUhoF3ISkQOXqS 3njs2aWhcHNlMkvBDMtB1Tr3nP5OgatvfiRyfg2fsQAOkJYfZ86dY2x+nmUZ0StEd2wZ NzMRLLB9oHPoDzP1c02fca4MT+sTnzlDLi6t1DICXg4+d0npQ/X5a4UPUFkgh9BLiSiq qHwvApFZBIAqqrRpS6eElJry35v5kB4NhcA3c24iha50xw6QDk0FBiSFJUymP5P2o3I2 Hlxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MofBU5OC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k25-v6si20261854pfi.177.2018.06.05.00.51.26; Tue, 05 Jun 2018 00:51:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MofBU5OC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751735AbeFEHu5 (ORCPT + 99 others); Tue, 5 Jun 2018 03:50:57 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:45042 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751534AbeFEHuy (ORCPT ); Tue, 5 Jun 2018 03:50:54 -0400 Received: by mail-pl0-f68.google.com with SMTP id z9-v6so1023603plk.11 for ; Tue, 05 Jun 2018 00:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=m6xVfK4GwzYOGCKWJ/bJq11nYqK9oWr3XxqUAAU5jRs=; b=MofBU5OCDCmoQtvGaPssX0nRO0w9qSIolU0djK+OpxhVC4M24dlaL5BbTkcdwr24qS 87TPLJoalHnoAqIEwGRvd3vgsj5btiYl8KbtzoFpAOw6xBEFfpz4BI+vPtyG93dddZXu siL8yd6Wvsr3HFN+0QfOlylj8fStm26RF7xT0aGlcqzlAB+06vtZci3AWyd0S+AOZl6k xEAauzUyJKaHC5P7TXRKeScQLwuYcsyq9lYvk/4YFoOytI+cT9rMx40E+XxuwWpFgTuh tD+Bzwubfn9H5TCvjl7lirBDGGUXeVHh4Y0gtQ3uKKXuHnhFjxuxkgw+P+a3TzMFd5jt IifQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=m6xVfK4GwzYOGCKWJ/bJq11nYqK9oWr3XxqUAAU5jRs=; b=Zm6S9Ehu2/xCvjL/48ShSJLs75crOLvEhOSfH4EeXb2OOOBsllUTmaAUM+I12ZOLC5 8vCaKwfT+qUgdGD+f3eBkLpC4ldyTPvVli0jbD74EMauZWQIKzGFKAzBnlTyXsl2KZRh H+lFVRtTY6RAl1CaGH7dK7y8J11GW6W+017vzzqN17w72amc5/q160V/uVaLELOq+iF+ qk92N3HjkG4QLLy9XTgcKp5RMMaMIdw+Qsru8IWy05FIez02VQ/4Gj4YAMzGPkuKwgKe eimfeOXBXE2jBQ30KAWta8uHCDRa3snWCOIKyNH3/ia+7sBsTw//y6MCCtgov54WWb4U JfXA== X-Gm-Message-State: APt69E0KW+KkFbDxpEHgZeevchq+6R5In91vNrBCZZs7I0quNUtM0KX8 q24PWqeVnteRCNFKxUciRvbJs51aFkAHTgb3Nr0nCw== X-Received: by 2002:a17:902:7d09:: with SMTP id z9-v6mr11946912pll.233.1528185053799; Tue, 05 Jun 2018 00:50:53 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a17:90a:d42:0:0:0:0 with HTTP; Tue, 5 Jun 2018 00:50:33 -0700 (PDT) In-Reply-To: References: From: Dmitry Vyukov Date: Tue, 5 Jun 2018 09:50:33 +0200 Message-ID: Subject: Re: KASAN vs ZONE_DEVICE (was: Re: [PATCH v2 2/7] dax: change bdev_dax_supported()...) To: Dan Williams Cc: Dave Chinner , "Darrick J. Wong" , Mike Snitzer , linux-nvdimm , Linux Kernel Mailing List , linux-xfs , device-mapper development , linux-fsdevel , Alexander Potapenko , Andrey Ryabinin , kasan-dev Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 5, 2018 at 6:22 AM, Dan Williams wrote: > On Mon, Jun 4, 2018 at 8:32 PM, Dan Williams wrote: >> [ adding KASAN devs...] >> >> On Mon, Jun 4, 2018 at 4:40 PM, Dan Williams wrote: >>> On Sun, Jun 3, 2018 at 6:48 PM, Dan Williams wrote: >>>> On Sun, Jun 3, 2018 at 5:25 PM, Dave Chinner wrote: >>>>> On Mon, Jun 04, 2018 at 08:20:38AM +1000, Dave Chinner wrote: >>>>>> On Thu, May 31, 2018 at 09:02:52PM -0700, Dan Williams wrote: >>>>>> > On Thu, May 31, 2018 at 7:24 PM, Dave Chinner wrote: >>>>>> > > On Thu, May 31, 2018 at 06:57:33PM -0700, Dan Williams wrote: >>>>>> > >> > FWIW, XFS+DAX used to just work on this setup (I hadn't even >>>>>> > >> > installed ndctl until this morning!) but after changing the kernel >>>>>> > >> > it no longer works. That would make it a regression, yes? >>>>>> >>>>>> [....] >>>>>> >>>>>> > >> I suspect your kernel does not have CONFIG_ZONE_DEVICE enabled which >>>>>> > >> has the following dependencies: >>>>>> > >> >>>>>> > >> depends on MEMORY_HOTPLUG >>>>>> > >> depends on MEMORY_HOTREMOVE >>>>>> > >> depends on SPARSEMEM_VMEMMAP >>>>>> > > >>>>>> > > Filesystem DAX now has a dependency on memory hotplug? >>>>>> >>>>>> [....] >>>>>> >>>>>> > > OK, works now I've found the magic config incantantions to turn >>>>>> > > everything I now need on. >>>>>> >>>>>> By enabling these options, my test VM now has a ~30s pause in the >>>>>> boot very soon after the nvdimm subsystem is initialised. >>>>>> >>>>>> [ 1.523718] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled >>>>>> [ 1.550353] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A >>>>>> [ 1.552175] Non-volatile memory driver v1.3 >>>>>> [ 2.332045] tsc: Refined TSC clocksource calibration: 2199.909 MHz >>>>>> [ 2.333280] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fb5dcd4620, max_idle_ns: 440795264143 ns >>>>>> [ 37.217453] brd: module loaded >>>>>> [ 37.225423] loop: module loaded >>>>>> [ 37.228441] virtio_blk virtio2: [vda] 10485760 512-byte logical blocks (5.37 GB/5.00 GiB) >>>>>> [ 37.245418] virtio_blk virtio3: [vdb] 146800640 512-byte logical blocks (75.2 GB/70.0 GiB) >>>>>> [ 37.255794] virtio_blk virtio4: [vdc] 1073741824000 512-byte logical blocks (550 TB/500 TiB) >>>>>> [ 37.265403] nd_pmem namespace1.0: unable to guarantee persistence of writes >>>>>> [ 37.265618] nd_pmem namespace0.0: unable to guarantee persistence of writes >>>>>> >>>>>> The system does not appear to be consuming CPU, but it is blocking >>>>>> NMIs so I can't get a CPU trace. For a VM that I rely on booting in >>>>>> a few seconds because I reboot it tens of times a day, this is a >>>>>> problem.... >>>>> >>>>> And when I turn on KASAN, the kernel fails to boot to a login prompt >>>>> because: >>>> >>>> What's your qemu and kernel command line? I'll take look at this first >>>> thing tomorrow. >>> >>> I was able to reproduce this crash by just turning on KASAN... >>> investigating. It would still help to have your config for our own >>> regression testing purposes it makes sense for us to prioritize >>> "Dave's test config", similar to the priority of not breaking Linus' >>> laptop. >> >> I believe this is a bug in KASAN, or a bug in devm_memremap_pages(), >> depends on your point of view. At the very least it is a mismatch of >> assumptions. KASAN learns of hot added memory via the memory hotplug >> notifier. However, the devm_memremap_pages() implementation is >> intentionally limited to the "first half" of the memory hotplug >> procedure. I.e. it does just enough to setup the linear map for >> pfn_to_page() and initialize the "struct page" memmap, but then stops >> short of onlining the pages. This is why we are getting a NULL ptr >> deref and not a KASAN report, because KASAN has no shadow area setup >> for the linearly mapped pmem range. >> >> In terms of solving it we could refactor kasan_mem_notifier() so that >> devm_memremap_pages() can call it outside of the notifier... I'll give >> this a shot. > > Well, the attached patch got me slightly further, but only slightly... > > [ 14.998394] BUG: KASAN: unknown-crash in pmem_do_bvec+0x19e/0x790 [nd_pmem] > [ 15.000006] Read of size 4096 at addr ffff880200000000 by task > systemd-udevd/915 > [ 15.001991] > [ 15.002590] CPU: 15 PID: 915 Comm: systemd-udevd Tainted: G > OE 4.17.0-rc5+ #1 > 982 > [ 15.004783] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), > BIOS rel-1.11.1-0-g0551a > 4be2c-prebuilt.qemu-project.org 04/01/2014 > [ 15.007652] Call Trace: > [ 15.008339] dump_stack+0x9a/0xeb > [ 15.009344] print_address_description+0x73/0x280 > [ 15.010524] kasan_report+0x258/0x380 > [ 15.011528] ? pmem_do_bvec+0x19e/0x790 [nd_pmem] > [ 15.012747] memcpy+0x1f/0x50 > [ 15.013659] pmem_do_bvec+0x19e/0x790 [nd_pmem] > > ...I've exhausted my limited kasan internals knowledge, any ideas what > it's missing? +kasan-dev Andrey, can you please take a look at this?