From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7187CCA47A for ; Sat, 11 Jun 2022 19:40:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B434D6B0197; Sat, 11 Jun 2022 15:40:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AF38B8D011C; Sat, 11 Jun 2022 15:40:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 994C08D0115; Sat, 11 Jun 2022 15:40:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 8AA006B0197 for ; Sat, 11 Jun 2022 15:40:26 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 59D8920515 for ; Sat, 11 Jun 2022 19:40:26 +0000 (UTC) X-FDA: 79566971652.22.00C8DFA Received: from mail-io1-f50.google.com (mail-io1-f50.google.com [209.85.166.50]) by imf19.hostedemail.com (Postfix) with ESMTP id 02B811A007D for ; Sat, 11 Jun 2022 19:40:25 +0000 (UTC) Received: by mail-io1-f50.google.com with SMTP id p69so2351480iod.0 for ; Sat, 11 Jun 2022 12:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=R25EekwyNOEiwlYnKcmMYUuLmBwG/+0RRzVWEW/5EYg=; b=BXJRsYZ8mTs+Sixzst4OOetOrz0aTxvPnSG3cUuj2spb5FJPmckbx2RNNoO7Agi2hj mDd46GLBWe3Jpy0jCLFKZKR6rNfvnybEJUcPRch1m9AgDZ9x1UONMIe/neyc0CkbOira /vwP41BnoyCDdXk2y2SSpwEfnEyAnd9TAxDrbDDNzm24kUunV9RzUcsO/tbIvpe7xJAF 8zucg0nfA8YTKjCWGtca1Hgkvs991+Y917QFsUs7MMorpR1y5bONZC4r2zlPDJxcT7EY k68AREqj7rI+zpI/Xrpbw88C7ru3uoeWpLysoJ2JoR3RosZgSGmqGr74Juh2gMRWpKU+ eTFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=R25EekwyNOEiwlYnKcmMYUuLmBwG/+0RRzVWEW/5EYg=; b=8PvrBbAqXd1GM/x3q7vw7nZMRz2cvF/BPhgmvNNT3Qdq+fEcif3Vq9yVquPvQ6QBdC JrYQfIElFyTrVjwRAOleHbGzN/ttVHWjJAIRV7HlFRL85lUcy4H+XZSixREkQ95t+yzc MKsyrOMXD5H0N4Eo/Z3j+6fMyjF/qB39z3ymATYpqowbKtpSBySQyl3LWM23Luhxyb2J ZNzeEdx47dTG8g2bPpSdJKDjcArWZfZ9zsnBqacii6pDKapv1IYtwVTFDgEoKuVEPdCY 3Qm/35qra3Y0EqHv52FFtQHacCpXr++bttSw15fKM8cFXulvb9rd9Oxw2AcKRTRaxjhU ANCw== X-Gm-Message-State: AOAM5306CvsXwP2BitIbpFXdT0QtP9BlzX46iB2KtyK6UZmq3UQfOYVf VCYAWWVeSXSjkniAjaszOceNayybQEVwYNNFA78= X-Google-Smtp-Source: ABdhPJxDK8iIEMcZlKtqpF6rrlyNoEGrtpRRyMKeRKzWKUF2h+jsIXIGcqkUFeb1PDVX/4ISH823VUCAIsFOEN7KIHE= X-Received: by 2002:a05:6638:381b:b0:331:b4c2:1f3a with SMTP id i27-20020a056638381b00b00331b4c21f3amr17960818jav.71.1654976425228; Sat, 11 Jun 2022 12:40:25 -0700 (PDT) MIME-Version: 1.0 References: <20220610152141.2148929-1-catalin.marinas@arm.com> <20220610152141.2148929-3-catalin.marinas@arm.com> In-Reply-To: <20220610152141.2148929-3-catalin.marinas@arm.com> From: Andrey Konovalov Date: Sat, 11 Jun 2022 21:40:14 +0200 Message-ID: Subject: Re: [PATCH v2 2/4] mm: kasan: Skip unpoisoning of user pages To: Catalin Marinas Cc: Andrey Ryabinin , Will Deacon , Vincenzo Frascino , Peter Collingbourne , kasan-dev , Linux Memory Management List , Linux ARM Content-Type: text/plain; charset="UTF-8" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1654976426; a=rsa-sha256; cv=none; b=bCNB6wF3CdWVqKhiNYq947WA6kvj5sbdeskZKDDVZmrd+y67fm7lL9EzTXS6A2/pV4Sztd WWrZtVmKkv1Ui1eoNTCIoGxQb+9jSTou5Hfn7z6nSvUmsRV+OU2IcD54eGoVxzH9/tAKQm liI/LYGsGbfvTT/AgqgFBTPKD/m8BIs= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=BXJRsYZ8; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.166.50 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1654976426; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=R25EekwyNOEiwlYnKcmMYUuLmBwG/+0RRzVWEW/5EYg=; b=uv5GpIk6CWldAxk5JaC0jGLX+Ye/x06WL2Z/9pJmj6ON24Xzycr2Tb6HKVwqzi4b9v1kqD STNoY4yQjnOrwBxn3yMog8t/0ZXmXv0iFo5iYGdCXPEl3156TMr/q59O6l3QjizTq8jJvD hGl1OMkIb2ZKNlhsC+DPOO84s3bQYCQ= X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 02B811A007D Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=BXJRsYZ8; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.166.50 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com X-Stat-Signature: q4u9sm38uao9dino7ofh1zf59pnpsjep X-HE-Tag: 1654976425-528684 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Jun 10, 2022 at 5:21 PM Catalin Marinas wrote: > > Commit c275c5c6d50a ("kasan: disable freed user page poisoning with HW > tags") added __GFP_SKIP_KASAN_POISON to GFP_HIGHUSER_MOVABLE. A similar > argument can be made about unpoisoning, so also add > __GFP_SKIP_KASAN_UNPOISON to user pages. To ensure the user page is > still accessible via page_address() without a kasan fault, reset the > page->flags tag. > > With the above changes, there is no need for the arm64 > tag_clear_highpage() to reset the page->flags tag. > > Signed-off-by: Catalin Marinas > Cc: Andrey Ryabinin > Cc: Andrey Konovalov > Cc: Peter Collingbourne > Cc: Vincenzo Frascino > --- > arch/arm64/mm/fault.c | 1 - > include/linux/gfp.h | 2 +- > mm/page_alloc.c | 7 +++++-- > 3 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c > index c5e11768e5c1..cdf3ffa0c223 100644 > --- a/arch/arm64/mm/fault.c > +++ b/arch/arm64/mm/fault.c > @@ -927,6 +927,5 @@ struct page *alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma, > void tag_clear_highpage(struct page *page) > { > mte_zero_clear_page_tags(page_address(page)); > - page_kasan_tag_reset(page); > set_bit(PG_mte_tagged, &page->flags); > } > diff --git a/include/linux/gfp.h b/include/linux/gfp.h > index 2d2ccae933c2..0ace7759acd2 100644 > --- a/include/linux/gfp.h > +++ b/include/linux/gfp.h > @@ -348,7 +348,7 @@ struct vm_area_struct; > #define GFP_DMA32 __GFP_DMA32 > #define GFP_HIGHUSER (GFP_USER | __GFP_HIGHMEM) > #define GFP_HIGHUSER_MOVABLE (GFP_HIGHUSER | __GFP_MOVABLE | \ > - __GFP_SKIP_KASAN_POISON) > + __GFP_SKIP_KASAN_POISON | __GFP_SKIP_KASAN_UNPOISON) > #define GFP_TRANSHUGE_LIGHT ((GFP_HIGHUSER_MOVABLE | __GFP_COMP | \ > __GFP_NOMEMALLOC | __GFP_NOWARN) & ~__GFP_RECLAIM) > #define GFP_TRANSHUGE (GFP_TRANSHUGE_LIGHT | __GFP_DIRECT_RECLAIM) > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e008a3df0485..f6ed240870bc 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2397,6 +2397,7 @@ inline void post_alloc_hook(struct page *page, unsigned int order, > bool init = !want_init_on_free() && want_init_on_alloc(gfp_flags) && > !should_skip_init(gfp_flags); > bool init_tags = init && (gfp_flags & __GFP_ZEROTAGS); > + int i; > > set_page_private(page, 0); > set_page_refcounted(page); > @@ -2422,8 +2423,6 @@ inline void post_alloc_hook(struct page *page, unsigned int order, > * should be initialized as well). > */ > if (init_tags) { > - int i; > - > /* Initialize both memory and tags. */ > for (i = 0; i != 1 << order; ++i) > tag_clear_highpage(page + i); > @@ -2438,6 +2437,10 @@ inline void post_alloc_hook(struct page *page, unsigned int order, > /* Note that memory is already initialized by KASAN. */ > if (kasan_has_integrated_init()) > init = false; > + } else { > + /* Ensure page_address() dereferencing does not fault. */ > + for (i = 0; i != 1 << order; ++i) > + page_kasan_tag_reset(page + i); > } > /* If memory is still not initialized, do it now. */ > if (init) Reviewed-by: Andrey Konovalov