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 X-Spam-Level: X-Spam-Status: No, score=-23.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 857A4C4361B for ; Sat, 19 Dec 2020 10:01:46 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id EB66123B54 for ; Sat, 19 Dec 2020 10:01:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EB66123B54 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 2AC616B005C; Sat, 19 Dec 2020 05:01:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 236406B005D; Sat, 19 Dec 2020 05:01:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 127386B0068; Sat, 19 Dec 2020 05:01:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0139.hostedemail.com [216.40.44.139]) by kanga.kvack.org (Postfix) with ESMTP id EDE2F6B005C for ; Sat, 19 Dec 2020 05:01:44 -0500 (EST) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id A9FF1181AF5C3 for ; Sat, 19 Dec 2020 10:01:44 +0000 (UTC) X-FDA: 77609590128.26.taste49_5d0ab5727445 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin26.hostedemail.com (Postfix) with ESMTP id 87B491804A304 for ; Sat, 19 Dec 2020 10:01:44 +0000 (UTC) X-HE-Tag: taste49_5d0ab5727445 X-Filterd-Recvd-Size: 7815 Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) by imf02.hostedemail.com (Postfix) with ESMTP for ; Sat, 19 Dec 2020 10:01:43 +0000 (UTC) Received: by mail-ot1-f49.google.com with SMTP id h18so4351599otq.12 for ; Sat, 19 Dec 2020 02:01:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=4IUP01ZQSGPp5MrVUoOaTtnnHpnMv/mF58OH/rezwAg=; b=u+As0mhj2uJAymSJ9JpDzcR76Ks+PZA1D7cxh6WIsIch4rf2/0r4QChny4kJocR9Gt e6kD8WryGQuCK6s/3jQEgSq9ETQ6/Xv9aS/M9grJPuiovWHl0ClQ33NYW8zyuYR/sNGW jlUcwZAhAZWoAePcOzlGXeCYB/pH6eMKe0p+K5TKkh4aVenkwa1urDk9kZmSsKXR3hfh FUtl6+J4luAQgwHq2ZoyE3ShrDl48b2W1q23YjT0CTSQFP+JLQ4hD6D1H2DDy+OvZZif KyYIjLd/J+X98HJbRa2fnDu7RTjQEesNZxkJhxx9M98V99xajGD15jBeGHsPbXO4rYmw z8qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=4IUP01ZQSGPp5MrVUoOaTtnnHpnMv/mF58OH/rezwAg=; b=PWcJMeWDVvnW1A/oBKbgiy+fYni2RDnCp+eHV42QyWPbX8F7Tiq33vR9Oemk2xrjLV lsZ0YPdLo/ApWR7jQdgSgRqqQM4oeNxITAWiKemZ+GMEqTdQ6USz9FogmwsQK7Mqnvb0 ceVOVPL+WRxEetFTDVvPrkoqmIeA07v+eoG11LD9qGRFxjrRg5fk9n1uapDVFQGTmri7 5lXO7SmpFwSw0CGk+qIV+8122hFY4uCgqWpGGtT/bTS2ydS5/8t3Y8m4Tw1/hYHBtAtp liOb3z+GEld/QNR4nspzmw32dhY5KMul98APd3d9sDmWSX45i5aiGlgRXdTOaF06Pqk+ zYJA== X-Gm-Message-State: AOAM533v3ohrf5mt2PL5vnDFIAmiKN/BHMCHE+iG3JTwYICR7oMulYDP jjGDeaZcWcMsFCItO/HKJJ+qsDrh93onjfWGyXlhWA== X-Google-Smtp-Source: ABdhPJzPCu5LdH2sm8MhA33ChLVLo1UJvWpNEe77mc359CmTX96rJh6C9xTtBWeqlSW0Fgo72GB0u0gFcaPGauhhIjM= X-Received: by 2002:a05:6830:2413:: with SMTP id j19mr5852838ots.251.1608372102639; Sat, 19 Dec 2020 02:01:42 -0800 (PST) MIME-Version: 1.0 References: <20201218140046.497484741326828e5b5d46ec@linux-foundation.org> <20201218220233.pgX0nYYVt%akpm@linux-foundation.org> <20201218171327.180140338d183b41a962742d@linux-foundation.org> In-Reply-To: <20201218171327.180140338d183b41a962742d@linux-foundation.org> From: Marco Elver Date: Sat, 19 Dec 2020 11:01:31 +0100 Message-ID: Subject: Re: [patch 21/78] kasan: split out shadow.c from common.c To: Andrew Morton Cc: Andrey Konovalov , Andrey Ryabinin , Branislav Rankov , Catalin Marinas , Dmitry Vyukov , Evgenii Stepanov , Alexander Potapenko , Vasily Gorbik , Kevin Brodsky , Linux Memory Management List , mm-commits@vger.kernel.org, Linus Torvalds , Vincenzo Frascino , Will Deacon Content-Type: text/plain; charset="UTF-8" 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 Sat, 19 Dec 2020 at 02:13, Andrew Morton wrote: > On Sat, 19 Dec 2020 01:28:29 +0100 Marco Elver wrote: > > > [...] > > > -/* > > > - * Poisons the shadow memory for 'size' bytes starting from 'addr'. > > > - * Memory addresses should be aligned to KASAN_GRANULE_SIZE. > > > - */ > > > -void poison_range(const void *address, size_t size, u8 value) > > > -{ > > > - void *shadow_start, *shadow_end; > > > - > > > - /* > > > - * Perform shadow offset calculation based on untagged address, as > > > - * some of the callers (e.g. kasan_poison_object_data) pass tagged > > > - * addresses to this function. > > > - */ > > > - address = reset_tag(address); > > > - > > > > The moved lines do not mention kfence... > > (The same commit in -next does.) > > They shouldn't. > > > > - shadow_start = kasan_mem_to_shadow(address); > > > - shadow_end = kasan_mem_to_shadow(address + size); > > > - > > > - __memset(shadow_start, value, shadow_end - shadow_start); > > > -} > > [...] > > > --- /dev/null > > > +++ a/mm/kasan/shadow.c > > > @@ -0,0 +1,518 @@ > > > +// SPDX-License-Identifier: GPL-2.0 > > > +/* > > > + * This file contains KASAN runtime code that manages shadow memory for > > > + * generic and software tag-based KASAN modes. > > > + * > > > + * Copyright (c) 2014 Samsung Electronics Co., Ltd. > > > + * Author: Andrey Ryabinin > > > + * > > > + * Some code borrowed from https://github.com/xairy/kasan-prototype by > > > + * Andrey Konovalov > > > + */ > > > + > > > +#include > > > +#include > > > +#include > > > +#include > > > > This is the first time kfence is mentioned. Is this correct? > > Yes. > > > Is my assumption correct that the kasan changes and kfence changes are > > to be swapped? > > Yes, kfence came in fairly late and seems a bit fresh. I was planning > on holding it off until next cycle. > > Sigh. I don't have access to my capable-of-compiling-KASAN machine at > present :( We'll need this, yes? > --- a/mm/kasan/kasan.h~a > +++ a/mm/kasan/kasan.h > @@ -3,7 +3,6 @@ > #define __MM_KASAN_KASAN_H > > #include > -#include > #include > > #ifdef CONFIG_KASAN_HW_TAGS > @@ -305,20 +304,12 @@ static inline u8 random_tag(void) { retu > > static inline void poison_range(const void *address, size_t size, u8 value) > { > - /* Skip KFENCE memory if called explicitly outside of sl*b. */ > - if (is_kfence_address(address)) > - return; > - > hw_set_mem_tag_range(kasan_reset_tag(address), > round_up(size, KASAN_GRANULE_SIZE), value); > } > > static inline void unpoison_range(const void *address, size_t size) > { > - /* Skip KFENCE memory if called explicitly outside of sl*b. */ > - if (is_kfence_address(address)) > - return; > - > hw_set_mem_tag_range(kasan_reset_tag(address), > round_up(size, KASAN_GRANULE_SIZE), get_tag(address)); > } > --- a/mm/kasan/shadow.c~a > +++ a/mm/kasan/shadow.c > @@ -13,7 +13,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -85,10 +84,6 @@ void poison_range(const void *address, s > address = kasan_reset_tag(address); > size = round_up(size, KASAN_GRANULE_SIZE); > > - /* Skip KFENCE memory if called explicitly outside of sl*b. */ > - if (is_kfence_address(address)) > - return; > - > shadow_start = kasan_mem_to_shadow(address); > shadow_end = kasan_mem_to_shadow(address + size); > > @@ -106,14 +101,6 @@ void unpoison_range(const void *address, > */ > address = kasan_reset_tag(address); > > - /* > - * Skip KFENCE memory if called explicitly outside of sl*b. Also note > - * that calls to ksize(), where size is not a multiple of machine-word > - * size, would otherwise poison the invalid portion of the word. > - */ > - if (is_kfence_address(address)) > - return; > - > poison_range(address, size, tag); > > if (size & KASAN_GRANULE_MASK) { > _ >