From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030204AbbE2OvY (ORCPT ); Fri, 29 May 2015 10:51:24 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:13835 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755489AbbE2OvQ (ORCPT ); Fri, 29 May 2015 10:51:16 -0400 X-AuditID: cbfec7f5-f794b6d000001495-0c-55687ce02ccb Message-id: <55687CDE.903@samsung.com> Date: Fri, 29 May 2015 17:51:10 +0300 From: Andrey Ryabinin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-version: 1.0 To: Alexander Popov Cc: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Andrey Konovalov , Andrew Morton , Kees Cook , "Peter Zijlstra (Intel)" , Andy Lutomirski , Alexander Kuleshov , Borislav Petkov , Denys Vlasenko , x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 1/1] x86_64: fix KASan shadow region page tables References: <1432907161-23812-1-git-send-email-alpopov@ptsecurity.com> In-reply-to: <1432907161-23812-1-git-send-email-alpopov@ptsecurity.com> Content-type: text/plain; charset=windows-1251 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprLIsWRmVeSWpSXmKPExsVy+t/xy7oPajJCDc41mVn83juT1WLO+jVs FtN39LFbTOzXtDj//RC7xbSN4hZnunMt1u/8zG5xedccNovVaxtYLS4dWMBkcbz3AJPF5k1T mS1+bHjM6sDncf/NXxaP2Q0XWTx2zrrL7rF5hZbHplWdbB7vzp1j9zgx4zeLx/ZHU1k83u+7 yuax+XS1x+dNch4nWr6wBvBEcdmkpOZklqUW6dslcGUcvr+KveAkd0XPkjtsDYw7OLsYOTkk BEwk3s64ygphi0lcuLeerYuRi0NIYCmjxNe2dawQzndGiY4JexlBqngF1CTmXXzEBmKzCKhK fN51mAXEZhPQk/g3aztYXFQgQuLt5ZNMEPWCEj8m3wOrERHQkejd8RmshlngCbPEqYYAEFtY wF1i9pIJYFcICbhJzNqwAGwXJ1D8T+N1doh6PYlP925C2fISm9e8ZZ7AKDALyYpZSMpmISlb wMi8ilE0tTS5oDgpPddIrzgxt7g0L10vOT93EyMk0r7uYFx6zOoQowAHoxIPb8eN9FAh1sSy 4srcQ4wSHMxKIrzqoRmhQrwpiZVVqUX58UWlOanFhxilOViUxHln7nofIiSQnliSmp2aWpBa BJNl4uCUamBsWHUzZSJ3PGPyfeXYGg5tNsMKtp0/TeInHFI1aZZm6ZaNnfJ075Ev1oYWU4/H J4V3WbhJdb6Z9l8saYpyV3dMzwfHk1fc363bIjYzQ/+T7HGXP45GSTe9l0d57J5V2ir1dIrs jp7/61x/spxt2ev/deNZpeKiMz9sRTyFG6377FdZ6D7lrFBiKc5INNRiLipOBACh43vpsAIA AA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/29/2015 04:46 PM, Alexander Popov wrote: > KASan shadow region page tables can't be filled statically because > physical addresses in these page tables depend on phys_base. > Initialize KASan shadow region page tables in kasan_early_init(). > > Signed-off-by: Alexander Popov > --- Thanks. Couple comments bellow, otherwise looks good. > > -extern unsigned char kasan_zero_page[PAGE_SIZE]; > +static pud_t kasan_zero_pud[PTRS_PER_PUD] __page_aligned_data; > +static pmd_t kasan_zero_pmd[PTRS_PER_PMD] __page_aligned_data; > +static pte_t kasan_zero_pte[PTRS_PER_PTE] __page_aligned_data; It's better to keep these in bss. > +/* > + * This page used as early shadow. We don't use empty_zero_page > + * at early stages, stack instrumentation could write some garbage > + * to this page. > + * Latter we reuse it as zero shadow for large ranges of memory > + * that allowed to access, but not instrumented by kasan > + * (vmalloc/vmemmap ...). > + */ > +static unsigned char kasan_zero_page[PAGE_SIZE] __page_aligned_bss; > > static int __init map_range(struct range *range) > { > @@ -166,6 +178,23 @@ static struct notifier_block kasan_die_notifier = { > }; > #endif > > +void __init kasan_early_init(void) > +{ > + int i; > + pteval_t pte_val = __pa_nodebug(kasan_zero_page) | _KERNPG_TABLE; Should be __PAGE_KERNEL. Yes, currently kasan's ptes have _KERNPG_TABLE flags, but that is wrong.