Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1513906ybl; Thu, 22 Aug 2019 16:11:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqzZWR+HchYWBeb3MNLhImhO+rZIlQEMyuoYKrrya7/annvc+IvQBN702KivZ8fFo2n30aW9 X-Received: by 2002:a17:90a:d34f:: with SMTP id i15mr2236838pjx.42.1566515507513; Thu, 22 Aug 2019 16:11:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566515507; cv=none; d=google.com; s=arc-20160816; b=TfRKP+qJ+cQGnGieaMoo60pjl0OuFWhoEjNM5zD4LdwDAne5/5ZMwP+f83k/+L9Xl1 nuss5dZVHI43HiB5UV17GC9ESR2LLTtDhL8RYK79fE3ne3OsuYVlYP/sRPkcSrfbrCW4 wYAtByelt2zII1RULLM21jJ8+stLounZ8t8x+VLG3oxI6O6EHqazEWhQt9qD5bm7HItj HA1d2gefaH1KO10BGD/ryKi/0RxFehTfS3qkfDE+xSPaADjlMWFjGxXJQPnv56uSTUQw 4K00MRz/uaMEHbXGPunZpztGbaId0xLS/TkYlHmkYtul1slFsDpaKR8RI4rjMcFWKDcS N/4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cOgOd+pqrz874KTQjmCnbdEjHg4LlDeayKE3K1oqWoA=; b=gs98OY2/n1u5nqKXFSaJNMP2oN9VOuyFHERJp43sMYceD3jxWFbqyrb8a3kjZn3X1T HyldgGD7c80piIwt+LzniIcA9kPnhtIXL4tdIM6f60zykdZw9yvIOwJBDK3H5wDReREr +uIrklZJZPPk40ZQZZn0ASM2FFHw2IH+Um/KDfWs1+xvzo7IPNALP9maXth54Xlpt/Jw 5evlV3lupRynQ73b6YXaVOwzMLE/aXbAz8NmPORnaSv2vMD4X2AZmEO01/1b/WrRr8nt ld6gx/Q2DCa/rBIchwXWS5a0djU+qKFQcyYgoQaTu+EI1w7eXZ9gjLY0PsObHWZPDifo u1BA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ffmopOcH; 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=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 44si834326plb.39.2019.08.22.16.11.32; Thu, 22 Aug 2019 16:11:47 -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=@kernel.org header.s=default header.b=ffmopOcH; 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=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389295AbfHVRNL (ORCPT + 99 others); Thu, 22 Aug 2019 13:13:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:59204 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390627AbfHVRJD (ORCPT ); Thu, 22 Aug 2019 13:09:03 -0400 Received: from sasha-vm.mshome.net (wsip-184-188-36-2.sd.sd.cox.net [184.188.36.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DAD68233FE; Thu, 22 Aug 2019 17:09:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566493742; bh=IB6SHesi+A+4IuSaCxBprlGHXn7PaDRVN21talzL+Qg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ffmopOcHlgfcPDsnTBPpB83XfseXIC4F5Fvyoxn3OqSVDGyZgGLKxNrcgn6V9pUhR eOyS72J2qGl2aZm8GdfSzZS0v//cN5538Jz07YNdiL7zKkk15lEph8N5bNhqvxP0M5 OM0qO52PYWCuDPEjZykCSU9WtC1HJIsDIjEpr/ik= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Arnd Bergmann , Andrey Konovalov , Andrey Ryabinin , Dmitry Vyukov , Will Deacon , Christoph Lameter , Mark Rutland , Andrew Morton , Linus Torvalds , Sasha Levin Subject: [PATCH 5.2 088/135] page flags: prioritize kasan bits over last-cpuid Date: Thu, 22 Aug 2019 13:07:24 -0400 Message-Id: <20190822170811.13303-89-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190822170811.13303-1-sashal@kernel.org> References: <20190822170811.13303-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.2.10-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.2.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.2.10-rc1 X-KernelTest-Deadline: 2019-08-24T17:07+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann [ Upstream commit ee38d94a0ad89890b770f6c876263cf9fcbfde84 ] ARM64 randdconfig builds regularly run into a build error, especially when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP: #error "KASAN: not enough bits in page flags for tag" The last-cpuid bits are already contitional on the available space, so the result of the calculation is a bit random on whether they were already left out or not. Adding the kasan tag bits before last-cpuid makes it much more likely to end up with a successful build here, and should be reliable for randconfig at least, as long as that does not randomize NR_CPUS or NODES_SHIFT but uses the defaults. In order for the modified check to not trigger in the x86 vdso32 code where all constants are wrong (building with -m32), enclose all the definitions with an #ifdef. [arnd@arndb.de: build fix] Link: http://lkml.kernel.org/r/CAK8P3a3Mno1SWTcuAOT0Wa9VS15pdU6EfnkxLbDpyS55yO04+g@mail.gmail.com Link: http://lkml.kernel.org/r/20190722115520.3743282-1-arnd@arndb.de Link: https://lore.kernel.org/lkml/20190618095347.3850490-1-arnd@arndb.de/ Fixes: 2813b9c02962 ("kasan, mm, arm64: tag non slab memory allocated via pagealloc") Signed-off-by: Arnd Bergmann Signed-off-by: Arnd Bergmann Reviewed-by: Andrey Konovalov Reviewed-by: Andrey Ryabinin Cc: Andrey Konovalov Cc: Dmitry Vyukov Cc: Will Deacon Cc: Christoph Lameter Cc: Mark Rutland Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- arch/mips/vdso/vdso.h | 1 + include/linux/page-flags-layout.h | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/arch/mips/vdso/vdso.h b/arch/mips/vdso/vdso.h index 14b1931be69c3..b65b169778e31 100644 --- a/arch/mips/vdso/vdso.h +++ b/arch/mips/vdso/vdso.h @@ -9,6 +9,7 @@ #if _MIPS_SIM != _MIPS_SIM_ABI64 && defined(CONFIG_64BIT) /* Building 32-bit VDSO for the 64-bit kernel. Fake a 32-bit Kconfig. */ +#define BUILD_VDSO32_64 #undef CONFIG_64BIT #define CONFIG_32BIT 1 #ifndef __ASSEMBLY__ diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h index 1dda31825ec4a..71283739ffd23 100644 --- a/include/linux/page-flags-layout.h +++ b/include/linux/page-flags-layout.h @@ -32,6 +32,7 @@ #endif /* CONFIG_SPARSEMEM */ +#ifndef BUILD_VDSO32_64 /* * page->flags layout: * @@ -76,20 +77,22 @@ #define LAST_CPUPID_SHIFT 0 #endif -#if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT <= BITS_PER_LONG - NR_PAGEFLAGS +#ifdef CONFIG_KASAN_SW_TAGS +#define KASAN_TAG_WIDTH 8 +#else +#define KASAN_TAG_WIDTH 0 +#endif + +#if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT+KASAN_TAG_WIDTH \ + <= BITS_PER_LONG - NR_PAGEFLAGS #define LAST_CPUPID_WIDTH LAST_CPUPID_SHIFT #else #define LAST_CPUPID_WIDTH 0 #endif -#ifdef CONFIG_KASAN_SW_TAGS -#define KASAN_TAG_WIDTH 8 #if SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH+LAST_CPUPID_WIDTH+KASAN_TAG_WIDTH \ > BITS_PER_LONG - NR_PAGEFLAGS -#error "KASAN: not enough bits in page flags for tag" -#endif -#else -#define KASAN_TAG_WIDTH 0 +#error "Not enough bits in page flags" #endif /* @@ -104,4 +107,5 @@ #define LAST_CPUPID_NOT_IN_PAGE_FLAGS #endif +#endif #endif /* _LINUX_PAGE_FLAGS_LAYOUT */ -- 2.20.1