Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5497642ybl; Tue, 14 Jan 2020 09:55:15 -0800 (PST) X-Google-Smtp-Source: APXvYqxzzhLRkYZIuPRe5DFWgcAI5tQE87p92tJRlstZ4ylQaROyFU0VBOzBmKt/gnYraVBNoh0k X-Received: by 2002:aca:db56:: with SMTP id s83mr18341506oig.171.1579024515829; Tue, 14 Jan 2020 09:55:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579024515; cv=none; d=google.com; s=arc-20160816; b=vuXYxk3qKcIsxygUefcoaprxUt9cHe7re1jjmtq/Jm8LxN6wBtO9V6Zj3OPByqJTfO 75guHwUvwVWOU3kExMCmZXktlqN0y7m9d935djrjU+OkyiMJyYuuj6nMLd18zMac+I4B KtdyUR+GErhs7KwsewViFGAyjlXC1wIkXns6seMtNn+QLDy7xOtiqbiz99dekEukJjVv NEZRG3E9BqLzH58AFhAViO7IMMYPsUmBzH5ZaMGkUTzI2QM+twcC0uQJvWiBHZzYWQti /UM+Vtc0oQ3crg0h9B2x2WT9lfoMzK9hrC0NA0wATF/uk3LFWp0PqYD1kVjfOsHcgUXZ z05A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:references :in-reply-to:message-id:dkim-signature; bh=NDoHlqPwlBNpLNoc61s6LOMRRHtVzZVZMHu1UPfR0fY=; b=Vp2eFk7UbhiKgymOsiuCXQuqPRgEYzShamvUmMozof4SdgDr8tj4bhl67rCfblrD05 b+++Ec2labxION3Z9aquJpRmbh+L9n1FL99h1kMMFX74ZivTU+lDEoO8EJWZ5rLKUp+8 z3G7Kcs4VvU9YvoN9q9vZY/O7r31RRyK0Dst28tCXgAfjK6ju71hXYrejYqJzXw72gz5 rLJ6u+Tc/GqUwCWtcR2Lyd+v5W3rX+lW2SAuBUxGHjHWW2Uhl5cvlEDQnWAPUFSN5oag 5rr1C3ASVigB6QgAPJl+SEF2z/hSqRtTiu6WHgwKYe6bUOdIjmh/aE265BMXj4ggMj6l uvTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=TNvgsk56; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p20si11918242otr.319.2020.01.14.09.55.04; Tue, 14 Jan 2020 09:55:15 -0800 (PST) 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=@c-s.fr header.s=mail header.b=TNvgsk56; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728931AbgANRyI (ORCPT + 99 others); Tue, 14 Jan 2020 12:54:08 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:14532 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728871AbgANRyF (ORCPT ); Tue, 14 Jan 2020 12:54:05 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 47xykd4BXTz9txgy; Tue, 14 Jan 2020 18:54:01 +0100 (CET) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=TNvgsk56; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id 5lOsJDYHaxU2; Tue, 14 Jan 2020 18:54:01 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 47xykd2ybqz9txgv; Tue, 14 Jan 2020 18:54:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1579024441; bh=NDoHlqPwlBNpLNoc61s6LOMRRHtVzZVZMHu1UPfR0fY=; h=In-Reply-To:References:From:Subject:To:Cc:Date:From; b=TNvgsk56BWefPm8l3glW6KCYLikrEfZVoMdpy72g7v+VYgQFpzs5mSZpWPhdxIka9 Tbr5WTHAyN+ZtNJ3CCPMKh1asmMS+0byxbgjVmoIv6uVjchmgc1aF1dAwoimE3i+5B jNGUtQTuqWCsfDqvD5j1TORbBl8GnS4VeFS93d2Q= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 205008B7EB; Tue, 14 Jan 2020 18:54:03 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id UQUJdClR7uyP; Tue, 14 Jan 2020 18:54:03 +0100 (CET) Received: from po14934vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id D125C8B7E8; Tue, 14 Jan 2020 18:54:02 +0100 (CET) Received: by po14934vm.idsi0.si.c-s.fr (Postfix, from userid 0) id A3DBD6381C; Tue, 14 Jan 2020 17:54:02 +0000 (UTC) Message-Id: In-Reply-To: <031dec5487bde9b2181c8b3c9800e1879cf98c1a.1579024426.git.christophe.leroy@c-s.fr> References: <031dec5487bde9b2181c8b3c9800e1879cf98c1a.1579024426.git.christophe.leroy@c-s.fr> From: Christophe Leroy Subject: [PATCH 3/5] powerpc/32: force KASAN_VMALLOC for modules To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , erhard_f@mailbox.org, dja@axtens.net Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Tue, 14 Jan 2020 17:54:02 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Unloading/Reloading of modules seems to fail with KASAN_VMALLOC but works properly with it. Force selection of KASAN_VMALLOC when MODULES are selected, and drop module_alloc() which was dedicated to KASAN for modules. Reported-by: Link: https://bugzilla.kernel.org/show_bug.cgi?id=205283 Signed-off-by: Christophe Leroy --- arch/powerpc/mm/kasan/kasan_init_32.c | 31 +++++-------------------------- arch/powerpc/platforms/Kconfig.cputype | 1 + 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/arch/powerpc/mm/kasan/kasan_init_32.c b/arch/powerpc/mm/kasan/kasan_init_32.c index 88036fb88350..b782d92622b4 100644 --- a/arch/powerpc/mm/kasan/kasan_init_32.c +++ b/arch/powerpc/mm/kasan/kasan_init_32.c @@ -12,7 +12,7 @@ #include #include -static pgprot_t kasan_prot_ro(void) +static pgprot_t __init kasan_prot_ro(void) { if (early_mmu_has_feature(MMU_FTR_HPTE_TABLE)) return PAGE_READONLY; @@ -20,7 +20,7 @@ static pgprot_t kasan_prot_ro(void) return PAGE_KERNEL_RO; } -static void kasan_populate_pte(pte_t *ptep, pgprot_t prot) +static void __init kasan_populate_pte(pte_t *ptep, pgprot_t prot) { unsigned long va = (unsigned long)kasan_early_shadow_page; phys_addr_t pa = __pa(kasan_early_shadow_page); @@ -30,7 +30,7 @@ static void kasan_populate_pte(pte_t *ptep, pgprot_t prot) __set_pte_at(&init_mm, va, ptep, pfn_pte(PHYS_PFN(pa), prot), 0); } -static int __ref kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end) +static int __init kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end) { pmd_t *pmd; unsigned long k_cur, k_next; @@ -70,7 +70,7 @@ static int __ref kasan_init_shadow_page_tables(unsigned long k_start, unsigned l return 0; } -static void __ref *kasan_get_one_page(void) +static void __init *kasan_get_one_page(void) { if (slab_is_available()) return (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); @@ -78,7 +78,7 @@ static void __ref *kasan_get_one_page(void) return memblock_alloc(PAGE_SIZE, PAGE_SIZE); } -static int __ref kasan_init_region(void *start, size_t size) +static int __init kasan_init_region(void *start, size_t size) { unsigned long k_start = (unsigned long)kasan_mem_to_shadow(start); unsigned long k_end = (unsigned long)kasan_mem_to_shadow(start + size); @@ -196,27 +196,6 @@ void __init kasan_late_init(void) kasan_unmap_early_shadow_vmalloc(); } -#if defined(CONFIG_MODULES) && !defined(CONFIG_KASAN_VMALLOC) -void *module_alloc(unsigned long size) -{ - void *base; - - base = __vmalloc_node_range(size, MODULE_ALIGN, VMALLOC_START, VMALLOC_END, - GFP_KERNEL, PAGE_KERNEL_EXEC, VM_FLUSH_RESET_PERMS, - NUMA_NO_NODE, __builtin_return_address(0)); - - if (!base) - return NULL; - - if (!kasan_init_region(base, size)) - return base; - - vfree(base); - - return NULL; -} -#endif - #ifdef CONFIG_PPC_BOOK3S_32 u8 __initdata early_hash[256 << 10] __aligned(256 << 10) = {0}; diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 536a2efcb7f0..851a92ffe290 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype @@ -2,6 +2,7 @@ config PPC32 bool default y if !PPC64 + select KASAN_VMALLOC if KASAN && MODULES config PPC64 bool "64-bit kernel" -- 2.13.3