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=-17.4 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,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_IN_DEF_DKIM_WL autolearn=unavailable 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 0B1BEC56201 for ; Wed, 11 Nov 2020 14:23:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9BDC620756 for ; Wed, 11 Nov 2020 14:23:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Y3VD18rW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726912AbgKKOXr (ORCPT ); Wed, 11 Nov 2020 09:23:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725900AbgKKOXr (ORCPT ); Wed, 11 Nov 2020 09:23:47 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85D76C0613D1 for ; Wed, 11 Nov 2020 06:23:45 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id b16so1122014qtb.6 for ; Wed, 11 Nov 2020 06:23:45 -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:content-transfer-encoding; bh=UloFlAe4eE6dBOKuaOljn+MXY+P4+o9Y9O9NjdtVr4Y=; b=Y3VD18rW6Mkcyy+sI26KIOCxIFEy130EdiK3BKfRiqpWvWkxQ+oyq/DcuRswHRSiCC jnsNcRgemJcQiD/n4CbRSAa3fKkMAm33WDdGeJ1QozG1HDoOq7jVTf/Q8a3fe+exSvPO rwFQ0256H+E+/F0z3H9AOTkuzG031CtXVUdW3BhaexPH4SAvULaSvzR6v6hAgaHNoOVF T0UBcgSUuJ5np7vNU5V8FS8JD0uooL2elfMlubLa4H4cCCE4fR7h8ajCarV7VBbQA8o3 93NtWwulPvOpJDmCCGsvY6GIL+Xa1FVRFRBdfZ2QIZCRCPNO/tBJ+OTKlzfCvE1wEv2o MrHg== 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:content-transfer-encoding; bh=UloFlAe4eE6dBOKuaOljn+MXY+P4+o9Y9O9NjdtVr4Y=; b=FxhSG0ag44TnebYzRiFk6ADQCi9LKL9bpz4dfpzLB/3+I8ZpiZuQAl1BCXSnl3I5rb ydigA5iduL2Tz6ZYzj2qa3Pbr5udaqEKPWocPykochnlKoyYPvEN6Bb/pKnzQ+H0lSit 8FheEQmVHUrd1IsiRHMSH6La8YeLN/kIH7oYLLYffC8yJ2Av3U6y6ElAB8Zkgx9kiCOl 0jeN+iGMyL5Hkaz6FR2AVRDLW4f4qIZ8C2Jqhq7+yxvlecZ6F2tgo2gZhNHIA26njU0O qTXmQshdYv2eFkgHebuI6pRLJj0UOaX9lfkiCtoYBoIVitU9/qqDz4SwNd2wTo29Ivf7 Ye3Q== X-Gm-Message-State: AOAM530rtT+PUD+zkpvS98DjqUy4AEFNBncItNbG0YctmB4x5WGNpMLk 6wJRmkTI63ePGCuhIaBMBtu6trBPWRZu0rKfNTdA6A== X-Google-Smtp-Source: ABdhPJzHUAKQWPGbmybh6ShDMZd1OwaBAGmCgdaIFdpQpb4uWrpuYS+v5Cs2ngVicNeakb1vFxozgDI96Cs/DC5/IJM= X-Received: by 2002:ac8:5c85:: with SMTP id r5mr18898460qta.8.1605104624442; Wed, 11 Nov 2020 06:23:44 -0800 (PST) MIME-Version: 1.0 References: <427d46e86c81f3ec77147b0ade4bd551d878cf7a.1605046192.git.andreyknvl@google.com> In-Reply-To: <427d46e86c81f3ec77147b0ade4bd551d878cf7a.1605046192.git.andreyknvl@google.com> From: Alexander Potapenko Date: Wed, 11 Nov 2020 15:23:33 +0100 Message-ID: Subject: Re: [PATCH v9 13/44] kasan: hide invalid free check implementation To: Andrey Konovalov Cc: Catalin Marinas , Will Deacon , Vincenzo Frascino , Dmitry Vyukov , Andrey Ryabinin , Marco Elver , Evgenii Stepanov , Branislav Rankov , Kevin Brodsky , Andrew Morton , kasan-dev , Linux ARM , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Nov 10, 2020 at 11:11 PM Andrey Konovalov w= rote: > > This is a preparatory commit for the upcoming addition of a new hardware > tag-based (MTE-based) KASAN mode. > > For software KASAN modes the check is based on the value in the shadow > memory. Hardware tag-based KASAN won't be using shadow, so hide the > implementation of the check in check_invalid_free(). > > Also simplify the code for software tag-based mode. > > No functional changes for software modes. > > Signed-off-by: Andrey Konovalov > Signed-off-by: Vincenzo Frascino > Reviewed-by: Marco Elver Reviewed-by: Alexander Potapenko > --- > Change-Id: I5fae9531c9fc948eb4d4e0c589744032fc5a0789 > --- > mm/kasan/common.c | 19 +------------------ > mm/kasan/generic.c | 7 +++++++ > mm/kasan/kasan.h | 2 ++ > mm/kasan/sw_tags.c | 9 +++++++++ > 4 files changed, 19 insertions(+), 18 deletions(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 123abfb760d4..543e6bf2168f 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -272,25 +272,9 @@ void * __must_check kasan_init_slab_obj(struct kmem_= cache *cache, > return (void *)object; > } > > -static inline bool shadow_invalid(u8 tag, s8 shadow_byte) > -{ > - if (IS_ENABLED(CONFIG_KASAN_GENERIC)) > - return shadow_byte < 0 || > - shadow_byte >=3D KASAN_GRANULE_SIZE; > - > - /* else CONFIG_KASAN_SW_TAGS: */ > - if ((u8)shadow_byte =3D=3D KASAN_TAG_INVALID) > - return true; > - if ((tag !=3D KASAN_TAG_KERNEL) && (tag !=3D (u8)shadow_byte)) > - return true; > - > - return false; > -} > - > static bool __kasan_slab_free(struct kmem_cache *cache, void *object, > unsigned long ip, bool quarantine) > { > - s8 shadow_byte; > u8 tag; > void *tagged_object; > unsigned long rounded_up_size; > @@ -309,8 +293,7 @@ static bool __kasan_slab_free(struct kmem_cache *cach= e, void *object, > if (unlikely(cache->flags & SLAB_TYPESAFE_BY_RCU)) > return false; > > - shadow_byte =3D READ_ONCE(*(s8 *)kasan_mem_to_shadow(object)); > - if (shadow_invalid(tag, shadow_byte)) { > + if (check_invalid_free(tagged_object)) { > kasan_report_invalid_free(tagged_object, ip); > return true; > } > diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c > index ec4417156943..e1af3b6c53b8 100644 > --- a/mm/kasan/generic.c > +++ b/mm/kasan/generic.c > @@ -187,6 +187,13 @@ bool check_memory_region(unsigned long addr, size_t = size, bool write, > return check_memory_region_inline(addr, size, write, ret_ip); > } > > +bool check_invalid_free(void *addr) > +{ > + s8 shadow_byte =3D READ_ONCE(*(s8 *)kasan_mem_to_shadow(addr)); > + > + return shadow_byte < 0 || shadow_byte >=3D KASAN_GRANULE_SIZE; > +} > + > void kasan_cache_shrink(struct kmem_cache *cache) > { > quarantine_remove_cache(cache); > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index 1865bb92d47a..3eff57e71ff5 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -164,6 +164,8 @@ void kasan_poison_memory(const void *address, size_t = size, u8 value); > bool check_memory_region(unsigned long addr, size_t size, bool write, > unsigned long ret_ip); > > +bool check_invalid_free(void *addr); > + > void *find_first_bad_addr(void *addr, size_t size); > const char *get_bug_type(struct kasan_access_info *info); > > diff --git a/mm/kasan/sw_tags.c b/mm/kasan/sw_tags.c > index 4bdd7dbd6647..b2638c2cd58a 100644 > --- a/mm/kasan/sw_tags.c > +++ b/mm/kasan/sw_tags.c > @@ -121,6 +121,15 @@ bool check_memory_region(unsigned long addr, size_t = size, bool write, > return true; > } > > +bool check_invalid_free(void *addr) > +{ > + u8 tag =3D get_tag(addr); > + u8 shadow_byte =3D READ_ONCE(*(u8 *)kasan_mem_to_shadow(reset_tag= (addr))); > + > + return (shadow_byte =3D=3D KASAN_TAG_INVALID) || > + (tag !=3D KASAN_TAG_KERNEL && tag !=3D shadow_byte); > +} > + > #define DEFINE_HWASAN_LOAD_STORE(size) \ > void __hwasan_load##size##_noabort(unsigned long addr) \ > { \ > -- > 2.29.2.222.g5d2a92d10f8-goog > --=20 Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Stra=C3=9Fe, 33 80636 M=C3=BCnchen Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Halimah DeLaine Prado Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg 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=-17.4 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,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,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 22356C55ABD for ; Wed, 11 Nov 2020 14:23:48 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 8D95E207BB for ; Wed, 11 Nov 2020 14:23:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Y3VD18rW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8D95E207BB 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 AEA0E6B006E; Wed, 11 Nov 2020 09:23:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A9B036B0072; Wed, 11 Nov 2020 09:23:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9612A6B0074; Wed, 11 Nov 2020 09:23:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0140.hostedemail.com [216.40.44.140]) by kanga.kvack.org (Postfix) with ESMTP id 66CC76B006E for ; Wed, 11 Nov 2020 09:23:46 -0500 (EST) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 024BD8249980 for ; Wed, 11 Nov 2020 14:23:46 +0000 (UTC) X-FDA: 77472356052.06.smell97_0112a3c272fe Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id CEDFE10040F02 for ; Wed, 11 Nov 2020 14:23:45 +0000 (UTC) X-HE-Tag: smell97_0112a3c272fe X-Filterd-Recvd-Size: 8230 Received: from mail-qt1-f195.google.com (mail-qt1-f195.google.com [209.85.160.195]) by imf07.hostedemail.com (Postfix) with ESMTP for ; Wed, 11 Nov 2020 14:23:45 +0000 (UTC) Received: by mail-qt1-f195.google.com with SMTP id h12so1347346qtc.9 for ; Wed, 11 Nov 2020 06:23:45 -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:content-transfer-encoding; bh=UloFlAe4eE6dBOKuaOljn+MXY+P4+o9Y9O9NjdtVr4Y=; b=Y3VD18rW6Mkcyy+sI26KIOCxIFEy130EdiK3BKfRiqpWvWkxQ+oyq/DcuRswHRSiCC jnsNcRgemJcQiD/n4CbRSAa3fKkMAm33WDdGeJ1QozG1HDoOq7jVTf/Q8a3fe+exSvPO rwFQ0256H+E+/F0z3H9AOTkuzG031CtXVUdW3BhaexPH4SAvULaSvzR6v6hAgaHNoOVF T0UBcgSUuJ5np7vNU5V8FS8JD0uooL2elfMlubLa4H4cCCE4fR7h8ajCarV7VBbQA8o3 93NtWwulPvOpJDmCCGsvY6GIL+Xa1FVRFRBdfZ2QIZCRCPNO/tBJ+OTKlzfCvE1wEv2o MrHg== 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:content-transfer-encoding; bh=UloFlAe4eE6dBOKuaOljn+MXY+P4+o9Y9O9NjdtVr4Y=; b=RZy3Z/AJalPjvLw6VEYxT+drh3nyMgeJeolMwfAsPh0Ad4R3yYCJ3TutqaCShy4psg wvCaQMK41SZgA48leiBgmKPoNojN0IBnNoQk2olkAe6QspNXvSoQpj7eI4/7GfLuCEBL 59DCJRq6rCDhggMKuTCF/SMS9EZNzUf7RpR7RquJxr/Kw8pWibez8U5Qqn9txutiYUir wUBPewcWSBCNW/Sle07AwkWksrmyDoLy7BSnbqvhcX/iMe3/FD+9pk1VjU7RFTT7FQed NXNb5DVNLqonxBToXfDOVrMi4i5erzSbrRjAGAg6iaFd0rKJiMfzEmNxLfUk7pkvqn6F WOeA== X-Gm-Message-State: AOAM5337hvNBn0Q+9mL9+A/gnnTX6iiI26Nd5yIzstvbyLTAaSBH3Rw8 uNfFRPBhEyKYSWZQvSVdRIP8F3oEB2ThkqLxsqgj0A== X-Google-Smtp-Source: ABdhPJzHUAKQWPGbmybh6ShDMZd1OwaBAGmCgdaIFdpQpb4uWrpuYS+v5Cs2ngVicNeakb1vFxozgDI96Cs/DC5/IJM= X-Received: by 2002:ac8:5c85:: with SMTP id r5mr18898460qta.8.1605104624442; Wed, 11 Nov 2020 06:23:44 -0800 (PST) MIME-Version: 1.0 References: <427d46e86c81f3ec77147b0ade4bd551d878cf7a.1605046192.git.andreyknvl@google.com> In-Reply-To: <427d46e86c81f3ec77147b0ade4bd551d878cf7a.1605046192.git.andreyknvl@google.com> From: Alexander Potapenko Date: Wed, 11 Nov 2020 15:23:33 +0100 Message-ID: Subject: Re: [PATCH v9 13/44] kasan: hide invalid free check implementation To: Andrey Konovalov Cc: Catalin Marinas , Will Deacon , Vincenzo Frascino , Dmitry Vyukov , Andrey Ryabinin , Marco Elver , Evgenii Stepanov , Branislav Rankov , Kevin Brodsky , Andrew Morton , kasan-dev , Linux ARM , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000140, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Nov 10, 2020 at 11:11 PM Andrey Konovalov w= rote: > > This is a preparatory commit for the upcoming addition of a new hardware > tag-based (MTE-based) KASAN mode. > > For software KASAN modes the check is based on the value in the shadow > memory. Hardware tag-based KASAN won't be using shadow, so hide the > implementation of the check in check_invalid_free(). > > Also simplify the code for software tag-based mode. > > No functional changes for software modes. > > Signed-off-by: Andrey Konovalov > Signed-off-by: Vincenzo Frascino > Reviewed-by: Marco Elver Reviewed-by: Alexander Potapenko > --- > Change-Id: I5fae9531c9fc948eb4d4e0c589744032fc5a0789 > --- > mm/kasan/common.c | 19 +------------------ > mm/kasan/generic.c | 7 +++++++ > mm/kasan/kasan.h | 2 ++ > mm/kasan/sw_tags.c | 9 +++++++++ > 4 files changed, 19 insertions(+), 18 deletions(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 123abfb760d4..543e6bf2168f 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -272,25 +272,9 @@ void * __must_check kasan_init_slab_obj(struct kmem_= cache *cache, > return (void *)object; > } > > -static inline bool shadow_invalid(u8 tag, s8 shadow_byte) > -{ > - if (IS_ENABLED(CONFIG_KASAN_GENERIC)) > - return shadow_byte < 0 || > - shadow_byte >=3D KASAN_GRANULE_SIZE; > - > - /* else CONFIG_KASAN_SW_TAGS: */ > - if ((u8)shadow_byte =3D=3D KASAN_TAG_INVALID) > - return true; > - if ((tag !=3D KASAN_TAG_KERNEL) && (tag !=3D (u8)shadow_byte)) > - return true; > - > - return false; > -} > - > static bool __kasan_slab_free(struct kmem_cache *cache, void *object, > unsigned long ip, bool quarantine) > { > - s8 shadow_byte; > u8 tag; > void *tagged_object; > unsigned long rounded_up_size; > @@ -309,8 +293,7 @@ static bool __kasan_slab_free(struct kmem_cache *cach= e, void *object, > if (unlikely(cache->flags & SLAB_TYPESAFE_BY_RCU)) > return false; > > - shadow_byte =3D READ_ONCE(*(s8 *)kasan_mem_to_shadow(object)); > - if (shadow_invalid(tag, shadow_byte)) { > + if (check_invalid_free(tagged_object)) { > kasan_report_invalid_free(tagged_object, ip); > return true; > } > diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c > index ec4417156943..e1af3b6c53b8 100644 > --- a/mm/kasan/generic.c > +++ b/mm/kasan/generic.c > @@ -187,6 +187,13 @@ bool check_memory_region(unsigned long addr, size_t = size, bool write, > return check_memory_region_inline(addr, size, write, ret_ip); > } > > +bool check_invalid_free(void *addr) > +{ > + s8 shadow_byte =3D READ_ONCE(*(s8 *)kasan_mem_to_shadow(addr)); > + > + return shadow_byte < 0 || shadow_byte >=3D KASAN_GRANULE_SIZE; > +} > + > void kasan_cache_shrink(struct kmem_cache *cache) > { > quarantine_remove_cache(cache); > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index 1865bb92d47a..3eff57e71ff5 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -164,6 +164,8 @@ void kasan_poison_memory(const void *address, size_t = size, u8 value); > bool check_memory_region(unsigned long addr, size_t size, bool write, > unsigned long ret_ip); > > +bool check_invalid_free(void *addr); > + > void *find_first_bad_addr(void *addr, size_t size); > const char *get_bug_type(struct kasan_access_info *info); > > diff --git a/mm/kasan/sw_tags.c b/mm/kasan/sw_tags.c > index 4bdd7dbd6647..b2638c2cd58a 100644 > --- a/mm/kasan/sw_tags.c > +++ b/mm/kasan/sw_tags.c > @@ -121,6 +121,15 @@ bool check_memory_region(unsigned long addr, size_t = size, bool write, > return true; > } > > +bool check_invalid_free(void *addr) > +{ > + u8 tag =3D get_tag(addr); > + u8 shadow_byte =3D READ_ONCE(*(u8 *)kasan_mem_to_shadow(reset_tag= (addr))); > + > + return (shadow_byte =3D=3D KASAN_TAG_INVALID) || > + (tag !=3D KASAN_TAG_KERNEL && tag !=3D shadow_byte); > +} > + > #define DEFINE_HWASAN_LOAD_STORE(size) \ > void __hwasan_load##size##_noabort(unsigned long addr) \ > { \ > -- > 2.29.2.222.g5d2a92d10f8-goog > --=20 Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Stra=C3=9Fe, 33 80636 M=C3=BCnchen Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Halimah DeLaine Prado Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg 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=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 887ABC388F9 for ; Wed, 11 Nov 2020 14:24:59 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F0C1C20756 for ; Wed, 11 Nov 2020 14:24:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="xs8qFJsh"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="Y3VD18rW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F0C1C20756 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=T6VCfnblmj9v/9fmJfaQcCbS83KE7m6lbBNrs4u0SKE=; b=xs8qFJshhevh6YVffh4MvzN/n SuUrdrdXm/hy43FGV0Q5hNc5nah1XZ0FQTp0D4NgppjFAXAC9SllzMxg5jKqxIXQix5uF2hlNLi7y cK83L+7UiJDnwACrLOwiuKeZRdVDdKu/LSJdm30sNXVWtuxhmNeaFTy+rBchljL06TDJSj+SPPkeC bFJy+56m1DenK68E1wBm/Og+j9C8qfxLdL495Cpk67zMEAstpRrybwHjwE28erHtyREzm6ta6uhvo tptwLy+H17Mr6mfjHLaYPXHQjAP+1Yab8g0PfjUxe/pGS+OzSKQFtII3n6UdHYSGrIZqE5Zlvuy9L MFeTPx8hg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kcr2L-00065y-NW; Wed, 11 Nov 2020 14:23:49 +0000 Received: from mail-qt1-x841.google.com ([2607:f8b0:4864:20::841]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kcr2I-00064q-C7 for linux-arm-kernel@lists.infradead.org; Wed, 11 Nov 2020 14:23:47 +0000 Received: by mail-qt1-x841.google.com with SMTP id f93so1337836qtb.10 for ; Wed, 11 Nov 2020 06:23:46 -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:content-transfer-encoding; bh=UloFlAe4eE6dBOKuaOljn+MXY+P4+o9Y9O9NjdtVr4Y=; b=Y3VD18rW6Mkcyy+sI26KIOCxIFEy130EdiK3BKfRiqpWvWkxQ+oyq/DcuRswHRSiCC jnsNcRgemJcQiD/n4CbRSAa3fKkMAm33WDdGeJ1QozG1HDoOq7jVTf/Q8a3fe+exSvPO rwFQ0256H+E+/F0z3H9AOTkuzG031CtXVUdW3BhaexPH4SAvULaSvzR6v6hAgaHNoOVF T0UBcgSUuJ5np7vNU5V8FS8JD0uooL2elfMlubLa4H4cCCE4fR7h8ajCarV7VBbQA8o3 93NtWwulPvOpJDmCCGsvY6GIL+Xa1FVRFRBdfZ2QIZCRCPNO/tBJ+OTKlzfCvE1wEv2o MrHg== 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:content-transfer-encoding; bh=UloFlAe4eE6dBOKuaOljn+MXY+P4+o9Y9O9NjdtVr4Y=; b=URrSxAXaaep1obv2z3GziPu4maUqHRxZ4yvgthJ3UihQCu4gZnKi5p3MZgWn4P5k68 Y6YmFy8vnS7Qa7PFBiMWZ2zXDsL8ycC1hhjb77SleXKvmu+lqNAiNBclBrA4N7o9z8G8 MGIOSjEfc8WGpaAapSETVB+bKnKLnHeFsJWiEUhQ9DvkCiYe7THJwGaI7NxH/Ub0dpH9 DrKGnIgB35Iyujwodp9fjDQkwaApBW/sDDTF46oJxqZ9koLkJTZZtZ7z2RWHEtT5awv2 30qmm8KLISjlz+Jwm7XT8HCY6LZT/gAMniNyOme5QDVadJHv5ZBCE75AqsX8WoOkZEjD 9BWA== X-Gm-Message-State: AOAM532MKB3punTvBTvBn3KxcN64VlxiZKmLaO7rVTPTJLDVVFpzPsrn 5vSNri/qrEwmV0NltHUOKjDwE1+ae1NAONR5daw0Xw== X-Google-Smtp-Source: ABdhPJzHUAKQWPGbmybh6ShDMZd1OwaBAGmCgdaIFdpQpb4uWrpuYS+v5Cs2ngVicNeakb1vFxozgDI96Cs/DC5/IJM= X-Received: by 2002:ac8:5c85:: with SMTP id r5mr18898460qta.8.1605104624442; Wed, 11 Nov 2020 06:23:44 -0800 (PST) MIME-Version: 1.0 References: <427d46e86c81f3ec77147b0ade4bd551d878cf7a.1605046192.git.andreyknvl@google.com> In-Reply-To: <427d46e86c81f3ec77147b0ade4bd551d878cf7a.1605046192.git.andreyknvl@google.com> From: Alexander Potapenko Date: Wed, 11 Nov 2020 15:23:33 +0100 Message-ID: Subject: Re: [PATCH v9 13/44] kasan: hide invalid free check implementation To: Andrey Konovalov X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201111_092346_499809_CBDAD185 X-CRM114-Status: GOOD ( 24.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Linux ARM , Marco Elver , Catalin Marinas , Kevin Brodsky , Will Deacon , Branislav Rankov , kasan-dev , LKML , Linux Memory Management List , Evgenii Stepanov , Andrey Ryabinin , Andrew Morton , Vincenzo Frascino , Dmitry Vyukov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBOb3YgMTAsIDIwMjAgYXQgMTE6MTEgUE0gQW5kcmV5IEtvbm92YWxvdiA8YW5kcmV5 a252bEBnb29nbGUuY29tPiB3cm90ZToKPgo+IFRoaXMgaXMgYSBwcmVwYXJhdG9yeSBjb21taXQg Zm9yIHRoZSB1cGNvbWluZyBhZGRpdGlvbiBvZiBhIG5ldyBoYXJkd2FyZQo+IHRhZy1iYXNlZCAo TVRFLWJhc2VkKSBLQVNBTiBtb2RlLgo+Cj4gRm9yIHNvZnR3YXJlIEtBU0FOIG1vZGVzIHRoZSBj aGVjayBpcyBiYXNlZCBvbiB0aGUgdmFsdWUgaW4gdGhlIHNoYWRvdwo+IG1lbW9yeS4gSGFyZHdh cmUgdGFnLWJhc2VkIEtBU0FOIHdvbid0IGJlIHVzaW5nIHNoYWRvdywgc28gaGlkZSB0aGUKPiBp bXBsZW1lbnRhdGlvbiBvZiB0aGUgY2hlY2sgaW4gY2hlY2tfaW52YWxpZF9mcmVlKCkuCj4KPiBB bHNvIHNpbXBsaWZ5IHRoZSBjb2RlIGZvciBzb2Z0d2FyZSB0YWctYmFzZWQgbW9kZS4KPgo+IE5v IGZ1bmN0aW9uYWwgY2hhbmdlcyBmb3Igc29mdHdhcmUgbW9kZXMuCj4KPiBTaWduZWQtb2ZmLWJ5 OiBBbmRyZXkgS29ub3ZhbG92IDxhbmRyZXlrbnZsQGdvb2dsZS5jb20+Cj4gU2lnbmVkLW9mZi1i eTogVmluY2Vuem8gRnJhc2Npbm8gPHZpbmNlbnpvLmZyYXNjaW5vQGFybS5jb20+Cj4gUmV2aWV3 ZWQtYnk6IE1hcmNvIEVsdmVyIDxlbHZlckBnb29nbGUuY29tPgpSZXZpZXdlZC1ieTogQWxleGFu ZGVyIFBvdGFwZW5rbyA8Z2xpZGVyQGdvb2dsZS5jb20+Cgo+IC0tLQo+IENoYW5nZS1JZDogSTVm YWU5NTMxYzlmYzk0OGViNGQ0ZTBjNTg5NzQ0MDMyZmM1YTA3ODkKPiAtLS0KPiAgbW0va2FzYW4v Y29tbW9uLmMgIHwgMTkgKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICBtbS9rYXNhbi9nZW5lcmljLmMg fCAgNyArKysrKysrCj4gIG1tL2thc2FuL2thc2FuLmggICB8ICAyICsrCj4gIG1tL2thc2FuL3N3 X3RhZ3MuYyB8ICA5ICsrKysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMo KyksIDE4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL21tL2thc2FuL2NvbW1vbi5jIGIv bW0va2FzYW4vY29tbW9uLmMKPiBpbmRleCAxMjNhYmZiNzYwZDQuLjU0M2U2YmYyMTY4ZiAxMDA2 NDQKPiAtLS0gYS9tbS9rYXNhbi9jb21tb24uYwo+ICsrKyBiL21tL2thc2FuL2NvbW1vbi5jCj4g QEAgLTI3MiwyNSArMjcyLDkgQEAgdm9pZCAqIF9fbXVzdF9jaGVjayBrYXNhbl9pbml0X3NsYWJf b2JqKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwKPiAgICAgICAgIHJldHVybiAodm9pZCAqKW9i amVjdDsKPiAgfQo+Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBzaGFkb3dfaW52YWxpZCh1OCB0YWcs IHM4IHNoYWRvd19ieXRlKQo+IC17Cj4gLSAgICAgICBpZiAoSVNfRU5BQkxFRChDT05GSUdfS0FT QU5fR0VORVJJQykpCj4gLSAgICAgICAgICAgICAgIHJldHVybiBzaGFkb3dfYnl0ZSA8IDAgfHwK PiAtICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dfYnl0ZSA+PSBLQVNBTl9HUkFOVUxFX1NJ WkU7Cj4gLQo+IC0gICAgICAgLyogZWxzZSBDT05GSUdfS0FTQU5fU1dfVEFHUzogKi8KPiAtICAg ICAgIGlmICgodTgpc2hhZG93X2J5dGUgPT0gS0FTQU5fVEFHX0lOVkFMSUQpCj4gLSAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOwo+IC0gICAgICAgaWYgKCh0YWcgIT0gS0FTQU5fVEFHX0tFUk5F TCkgJiYgKHRhZyAhPSAodTgpc2hhZG93X2J5dGUpKQo+IC0gICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKPiAtCj4gLSAgICAgICByZXR1cm4gZmFsc2U7Cj4gLX0KPiAtCj4gIHN0YXRpYyBib29s IF9fa2FzYW5fc2xhYl9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0 LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaXAsIGJvb2wg cXVhcmFudGluZSkKPiAgewo+IC0gICAgICAgczggc2hhZG93X2J5dGU7Cj4gICAgICAgICB1OCB0 YWc7Cj4gICAgICAgICB2b2lkICp0YWdnZWRfb2JqZWN0Owo+ICAgICAgICAgdW5zaWduZWQgbG9u ZyByb3VuZGVkX3VwX3NpemU7Cj4gQEAgLTMwOSw4ICsyOTMsNyBAQCBzdGF0aWMgYm9vbCBfX2th c2FuX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCwKPiAg ICAgICAgIGlmICh1bmxpa2VseShjYWNoZS0+ZmxhZ3MgJiBTTEFCX1RZUEVTQUZFX0JZX1JDVSkp Cj4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPgo+IC0gICAgICAgc2hhZG93X2J5dGUg PSBSRUFEX09OQ0UoKihzOCAqKWthc2FuX21lbV90b19zaGFkb3cob2JqZWN0KSk7Cj4gLSAgICAg ICBpZiAoc2hhZG93X2ludmFsaWQodGFnLCBzaGFkb3dfYnl0ZSkpIHsKPiArICAgICAgIGlmIChj aGVja19pbnZhbGlkX2ZyZWUodGFnZ2VkX29iamVjdCkpIHsKPiAgICAgICAgICAgICAgICAga2Fz YW5fcmVwb3J0X2ludmFsaWRfZnJlZSh0YWdnZWRfb2JqZWN0LCBpcCk7Cj4gICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwo+ICAgICAgICAgfQo+IGRpZmYgLS1naXQgYS9tbS9rYXNhbi9nZW5l cmljLmMgYi9tbS9rYXNhbi9nZW5lcmljLmMKPiBpbmRleCBlYzQ0MTcxNTY5NDMuLmUxYWYzYjZj NTNiOCAxMDA2NDQKPiAtLS0gYS9tbS9rYXNhbi9nZW5lcmljLmMKPiArKysgYi9tbS9rYXNhbi9n ZW5lcmljLmMKPiBAQCAtMTg3LDYgKzE4NywxMyBAQCBib29sIGNoZWNrX21lbW9yeV9yZWdpb24o dW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0ZSwKPiAgICAgICAgIHJl dHVybiBjaGVja19tZW1vcnlfcmVnaW9uX2lubGluZShhZGRyLCBzaXplLCB3cml0ZSwgcmV0X2lw KTsKPiAgfQo+Cj4gK2Jvb2wgY2hlY2tfaW52YWxpZF9mcmVlKHZvaWQgKmFkZHIpCj4gK3sKPiAr ICAgICAgIHM4IHNoYWRvd19ieXRlID0gUkVBRF9PTkNFKCooczggKilrYXNhbl9tZW1fdG9fc2hh ZG93KGFkZHIpKTsKPiArCj4gKyAgICAgICByZXR1cm4gc2hhZG93X2J5dGUgPCAwIHx8IHNoYWRv d19ieXRlID49IEtBU0FOX0dSQU5VTEVfU0laRTsKPiArfQo+ICsKPiAgdm9pZCBrYXNhbl9jYWNo ZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKQo+ICB7Cj4gICAgICAgICBxdWFyYW50 aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7Cj4gZGlmZiAtLWdpdCBhL21tL2thc2FuL2thc2FuLmgg Yi9tbS9rYXNhbi9rYXNhbi5oCj4gaW5kZXggMTg2NWJiOTJkNDdhLi4zZWZmNTdlNzFmZjUgMTAw NjQ0Cj4gLS0tIGEvbW0va2FzYW4va2FzYW4uaAo+ICsrKyBiL21tL2thc2FuL2thc2FuLmgKPiBA QCAtMTY0LDYgKzE2NCw4IEBAIHZvaWQga2FzYW5fcG9pc29uX21lbW9yeShjb25zdCB2b2lkICph ZGRyZXNzLCBzaXplX3Qgc2l6ZSwgdTggdmFsdWUpOwo+ICBib29sIGNoZWNrX21lbW9yeV9yZWdp b24odW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0ZSwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0X2lwKTsKPgo+ICtib29s IGNoZWNrX2ludmFsaWRfZnJlZSh2b2lkICphZGRyKTsKPiArCj4gIHZvaWQgKmZpbmRfZmlyc3Rf YmFkX2FkZHIodm9pZCAqYWRkciwgc2l6ZV90IHNpemUpOwo+ICBjb25zdCBjaGFyICpnZXRfYnVn X3R5cGUoc3RydWN0IGthc2FuX2FjY2Vzc19pbmZvICppbmZvKTsKPgo+IGRpZmYgLS1naXQgYS9t bS9rYXNhbi9zd190YWdzLmMgYi9tbS9rYXNhbi9zd190YWdzLmMKPiBpbmRleCA0YmRkN2RiZDY2 NDcuLmIyNjM4YzJjZDU4YSAxMDA2NDQKPiAtLS0gYS9tbS9rYXNhbi9zd190YWdzLmMKPiArKysg Yi9tbS9rYXNhbi9zd190YWdzLmMKPiBAQCAtMTIxLDYgKzEyMSwxNSBAQCBib29sIGNoZWNrX21l bW9yeV9yZWdpb24odW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0ZSwK PiAgICAgICAgIHJldHVybiB0cnVlOwo+ICB9Cj4KPiArYm9vbCBjaGVja19pbnZhbGlkX2ZyZWUo dm9pZCAqYWRkcikKPiArewo+ICsgICAgICAgdTggdGFnID0gZ2V0X3RhZyhhZGRyKTsKPiArICAg ICAgIHU4IHNoYWRvd19ieXRlID0gUkVBRF9PTkNFKCoodTggKilrYXNhbl9tZW1fdG9fc2hhZG93 KHJlc2V0X3RhZyhhZGRyKSkpOwo+ICsKPiArICAgICAgIHJldHVybiAoc2hhZG93X2J5dGUgPT0g S0FTQU5fVEFHX0lOVkFMSUQpIHx8Cj4gKyAgICAgICAgICAgICAgICh0YWcgIT0gS0FTQU5fVEFH X0tFUk5FTCAmJiB0YWcgIT0gc2hhZG93X2J5dGUpOwo+ICt9Cj4gKwo+ICAjZGVmaW5lIERFRklO RV9IV0FTQU5fTE9BRF9TVE9SRShzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiAgICAgICAgIHZvaWQgX19od2FzYW5fbG9hZCMjc2l6ZSMjX25vYWJvcnQodW5zaWduZWQg bG9uZyBhZGRyKSAgICAgICAgICBcCj4gICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0tCj4gMi4yOS4yLjIy Mi5nNWQyYTkyZDEwZjgtZ29vZwo+CgoKLS0gCkFsZXhhbmRlciBQb3RhcGVua28KU29mdHdhcmUg RW5naW5lZXIKCkdvb2dsZSBHZXJtYW55IEdtYkgKRXJpa2EtTWFubi1TdHJhw59lLCAzMwo4MDYz NiBNw7xuY2hlbgoKR2VzY2jDpGZ0c2bDvGhyZXI6IFBhdWwgTWFuaWNsZSwgSGFsaW1haCBEZUxh aW5lIFByYWRvClJlZ2lzdGVyZ2VyaWNodCB1bmQgLW51bW1lcjogSGFtYnVyZywgSFJCIDg2ODkx ClNpdHogZGVyIEdlc2VsbHNjaGFmdDogSGFtYnVyZwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=