Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5497733ybl; Tue, 14 Jan 2020 09:55:23 -0800 (PST) X-Google-Smtp-Source: APXvYqz9yyv4E5Lmbj6k/jK8kuI1s7KoJcwRL7iXPcG8Q6rvL2rolnCVV320q4h1CHMQEdcGeD2p X-Received: by 2002:a05:6808:64e:: with SMTP id z14mr16572409oih.79.1579024523499; Tue, 14 Jan 2020 09:55:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579024523; cv=none; d=google.com; s=arc-20160816; b=UJ6+aKVKWDxF72o3eH/TU34hmZvaY1/vAF8WeDyvC2hbH630xailwAmIHaPD8qC42D h/Obj2WGZN0S/aHpoEYAZ/CO530ZdW5GWsgUs93G4FUir+Xa0vpDgJ+AUAVRqJTT1xT1 uLyiKpApuvOL0WIA1ckQA0355qfq1j0y1xaR1kgYvzKYuObMk/RaTb3bn2JbG1/62ntj kvYeam35/jZEC8rwhJgpZ2qHFYPiyid80k6SPwMfsqEOzQCx+HE6yBPb53BQVjvAyXYW vac3wySKp3gMupi06hWgD/GP7x2Rfk7sq2ggAkqs3fI0JH4vuOCDKJtPGi0jPUGD4y2A IPaw== 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=Yr+rOwjm12MPfnMrRm677aZjNlYzK/jKvcaQ0UIMbBU=; b=o8GTxSOF5yXX7aMEoBHaovzUvI1G5m6bt/gQlUEcWXsnC6YgaJVEjqjyuPA6BQHbt7 iiMGKleMywGkt6fmGuksuIxrMZrs07ZXSv/pJ0N2xlJseLb3fbI33uRAWDOtoScgH+Xj Gfal4UrmLd6dvLCEoSBeZeopiR170zpQ7eJvp5JwI2gFyfQgzI2c7ebsI9b4pNU+yxCC k89Umi2nxVXR9rQpaDNcbltj5pb6gg+/2WrvFLvjJZMVuPOf+bN4hw1yy9ZWWDUGk6u7 9SAIhvbiVPNyLwT/1gWuNHuOm+zhx+TK+KwmsT9Pn0KisQh3PLG0fRWRDkT0QpQJ17t1 /lDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=qd0qrayg; 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 i12si7697203oik.171.2020.01.14.09.55.12; Tue, 14 Jan 2020 09:55:23 -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=qd0qrayg; 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 S1728916AbgANRyH (ORCPT + 99 others); Tue, 14 Jan 2020 12:54:07 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:32624 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727083AbgANRyG (ORCPT ); Tue, 14 Jan 2020 12:54:06 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 47xykf3hsjz9txh0; Tue, 14 Jan 2020 18:54:02 +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=qd0qrayg; 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 GrcxG9YlSurd; Tue, 14 Jan 2020 18:54:02 +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 47xykf2YX9z9txgv; Tue, 14 Jan 2020 18:54:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1579024442; bh=Yr+rOwjm12MPfnMrRm677aZjNlYzK/jKvcaQ0UIMbBU=; h=In-Reply-To:References:From:Subject:To:Cc:Date:From; b=qd0qraygO7Uzlqxdi6TBN3BTtA9YqypOdVs/19BhysOWnlAKXjxfUe0eTHxN9BWmE sMNXox3q7VwR2hQGM3lnE/kcFf4wwumncPweZYdNZw3RyIx5/0v5y5R24DrSBcgePI It8QiEeY87b4SEJeggn/ZXsgdvDnRHfg7iHcAQ64= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 153758B7EB; Tue, 14 Jan 2020 18:54:04 +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 EWujLzpkxmUv; Tue, 14 Jan 2020 18:54:04 +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 D32788B7E8; Tue, 14 Jan 2020 18:54:03 +0100 (CET) Received: by po14934vm.idsi0.si.c-s.fr (Postfix, from userid 0) id AC0A36381C; Tue, 14 Jan 2020 17:54:03 +0000 (UTC) Message-Id: <84b27bf08b41c8343efd88e10f2eccd8e9f85593.1579024426.git.christophe.leroy@c-s.fr> 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 4/5] powerpc/32: Simplify KASAN init 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:03 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since kasan_init_region() is not used anymore for modules, KASAN init is done while slab_is_available() is false. Signed-off-by: Christophe Leroy --- arch/powerpc/mm/kasan/kasan_init_32.c | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/arch/powerpc/mm/kasan/kasan_init_32.c b/arch/powerpc/mm/kasan/kasan_init_32.c index b782d92622b4..c4bf9ed04f88 100644 --- a/arch/powerpc/mm/kasan/kasan_init_32.c +++ b/arch/powerpc/mm/kasan/kasan_init_32.c @@ -34,7 +34,6 @@ static int __init kasan_init_shadow_page_tables(unsigned long k_start, unsigned { pmd_t *pmd; unsigned long k_cur, k_next; - pgprot_t prot = slab_is_available() ? kasan_prot_ro() : PAGE_KERNEL; pmd = pmd_offset(pud_offset(pgd_offset_k(k_start), k_start), k_start); @@ -45,14 +44,11 @@ static int __init kasan_init_shadow_page_tables(unsigned long k_start, unsigned if ((void *)pmd_page_vaddr(*pmd) != kasan_early_shadow_pte) continue; - if (slab_is_available()) - new = pte_alloc_one_kernel(&init_mm); - else - new = memblock_alloc(PTE_FRAG_SIZE, PTE_FRAG_SIZE); + new = memblock_alloc(PTE_FRAG_SIZE, PTE_FRAG_SIZE); if (!new) return -ENOMEM; - kasan_populate_pte(new, prot); + kasan_populate_pte(new, PAGE_KERNEL); smp_wmb(); /* See comment in __pte_alloc */ @@ -63,39 +59,27 @@ static int __init kasan_init_shadow_page_tables(unsigned long k_start, unsigned new = NULL; } spin_unlock(&init_mm.page_table_lock); - - if (new && slab_is_available()) - pte_free_kernel(&init_mm, new); } return 0; } -static void __init *kasan_get_one_page(void) -{ - if (slab_is_available()) - return (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); - - return memblock_alloc(PAGE_SIZE, PAGE_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); unsigned long k_cur; int ret; - void *block = NULL; + void *block; ret = kasan_init_shadow_page_tables(k_start, k_end); if (ret) return ret; - if (!slab_is_available()) - block = memblock_alloc(k_end - k_start, PAGE_SIZE); + block = memblock_alloc(k_end - k_start, PAGE_SIZE); for (k_cur = k_start & PAGE_MASK; k_cur < k_end; k_cur += PAGE_SIZE) { pmd_t *pmd = pmd_offset(pud_offset(pgd_offset_k(k_cur), k_cur), k_cur); - void *va = block ? block + k_cur - k_start : kasan_get_one_page(); + void *va = block + k_cur - k_start; pte_t pte = pfn_pte(PHYS_PFN(__pa(va)), PAGE_KERNEL); if (!va) -- 2.13.3