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 DD5B0C433F5 for ; Sat, 21 May 2022 22:14:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 490318D0002; Sat, 21 May 2022 18:14:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 43FB38D0001; Sat, 21 May 2022 18:14:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 32E898D0002; Sat, 21 May 2022 18:14:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 258E78D0001 for ; Sat, 21 May 2022 18:14:21 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id EECB887B for ; Sat, 21 May 2022 22:14:20 +0000 (UTC) X-FDA: 79491154680.11.07E7843 Received: from mail-io1-f44.google.com (mail-io1-f44.google.com [209.85.166.44]) by imf03.hostedemail.com (Postfix) with ESMTP id 2C9F9200D5 for ; Sat, 21 May 2022 22:14:09 +0000 (UTC) Received: by mail-io1-f44.google.com with SMTP id d198so6927467iof.12 for ; Sat, 21 May 2022 15:14:20 -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=J9gd0qUzz4d3HMlWIGrSPIDm63/hMmsz4M05qPRAs9o=; b=bkuDGxZqkyllYctJEUzyS1zEyft3nrvjNejqctngnSs8mA0958ju6uREvmCOZ8k/18 ijQSb/HCrZZkgnIPxvDdL58LEdGMKHe++kkaTtX/jE7CkS0bTkFjfBMBdqh56Y+lgvyZ uzXaKvaMWVzp9yxm5azMnf/7CIGxzHaDLz4mKHUXNmN9WzXfOI0mt/rMWg/v3gRFkMrj dUUA9jPao+R0BCP41rzk5b5Q3cDuidwCaJAmOMOo/ATpjNsZxuvq++9nwUh+i6GTUI+k kpGrA/warWXVQ17gj+YCLxrph2bDX/zTSaubHf7hJpIq+UTPdBCDcQHaXkdc0/oM54o2 rhNQ== 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=J9gd0qUzz4d3HMlWIGrSPIDm63/hMmsz4M05qPRAs9o=; b=Y+hKyDIabBur3+AAnhwEHfKfMSjPm5LiiGah4c3TSC94ZztjeVvCzjiOjCExOoZbaX HdcsYzTYlbcEkSLRWl2JkCF9gmDlPfdDlZK1TMYr3d/pV93Od0Y7CeqJK6XKi9Hm7hGt vTq1hiA0aDavzKLXlrB/9lqTejFVxD6e2U49WJ/ikf3zm9pUrIvbiay543EikmvocLnp ffUbKrIC/MX4/yOa42UzssaM9tJsy6AXSyjINz5otX5doRWoVYBr8uzWu0M5hZrRB+HF VEnm4sZsRmNupX6x0m4jGm0ZucxEnEyekr0KZuRnT0eHCamuU7WtPrQFoaAE22T+/uZy Br/Q== X-Gm-Message-State: AOAM531k+3U37gdLI/y+LwoYWOALSqolnpJMzYrQKUbfJ1YhZ+wZZpM4 wKourVi0lTKzN1xz8At6NkMteDpqxhD1ARgIo/Y= X-Google-Smtp-Source: ABdhPJykkIpyYluycNqIAJjB1GgpMcjL/brTh2xBLkDkbgoQUE9SmShg7EhH4aiFyxyUTmU5XHWt5mv17jKMiG1u+Z4= X-Received: by 2002:a05:6638:381c:b0:32e:49f9:5b6e with SMTP id i28-20020a056638381c00b0032e49f95b6emr8924144jav.71.1653171259846; Sat, 21 May 2022 15:14:19 -0700 (PDT) MIME-Version: 1.0 References: <20220517180945.756303-1-catalin.marinas@arm.com> <20220517180945.756303-2-catalin.marinas@arm.com> In-Reply-To: <20220517180945.756303-2-catalin.marinas@arm.com> From: Andrey Konovalov Date: Sun, 22 May 2022 00:14:08 +0200 Message-ID: Subject: Re: [PATCH 1/3] mm: kasan: Ensure the tags are visible before the tag in page->flags 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" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 2C9F9200D5 X-Rspam-User: Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=bkuDGxZq; spf=pass (imf03.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.166.44 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Stat-Signature: w4ohw1bjey3oco7tg59ksgma7396g9x3 X-HE-Tag: 1653171249-467936 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 Tue, May 17, 2022 at 8:09 PM Catalin Marinas wrote: > > __kasan_unpoison_pages() colours the memory with a random tag and stores > it in page->flags in order to re-create the tagged pointer via > page_to_virt() later. When the tag from the page->flags is read, ensure > that the in-memory tags are already visible by re-ordering the > page_kasan_tag_set() after kasan_unpoison(). The former already has > barriers in place through try_cmpxchg(). On the reader side, the order > is ensured by the address dependency between page->flags and the memory > access. > > Signed-off-by: Catalin Marinas > Cc: Andrey Ryabinin > Cc: Andrey Konovalov > Cc: Vincenzo Frascino > --- > mm/kasan/common.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index d9079ec11f31..f6b8dc4f354b 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -108,9 +108,10 @@ void __kasan_unpoison_pages(struct page *page, unsigned int order, bool init) > return; > > tag = kasan_random_tag(); > + kasan_unpoison(set_tag(page_address(page), tag), > + PAGE_SIZE << order, init); > for (i = 0; i < (1 << order); i++) > page_kasan_tag_set(page + i, tag); > - kasan_unpoison(page_address(page), PAGE_SIZE << order, init); > } > > void __kasan_poison_pages(struct page *page, unsigned int order, bool init) Reviewed-by: Andrey Konovalov