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_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, 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 D01ADC4320A for ; Thu, 29 Jul 2021 12:44:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B74AE60F0F for ; Thu, 29 Jul 2021 12:44:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237251AbhG2Mod (ORCPT ); Thu, 29 Jul 2021 08:44:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236868AbhG2Mob (ORCPT ); Thu, 29 Jul 2021 08:44:31 -0400 Received: from mail-qt1-x831.google.com (mail-qt1-x831.google.com [IPv6:2607:f8b0:4864:20::831]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E86F2C0613C1 for ; Thu, 29 Jul 2021 05:44:28 -0700 (PDT) Received: by mail-qt1-x831.google.com with SMTP id w10so3806584qtj.3 for ; Thu, 29 Jul 2021 05:44:28 -0700 (PDT) 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=REukLMYHB9mfVFO1/bdDCKtlszA1rKroqNl1QPX1pLU=; b=BDIdGkUehfGKUuxsy+fvkDkr2GBCODc7I8zNcJ8SRMTrosiAzd9wV8k4ho+9DmoVTN ZgZpaPFz7rYUXgm3Bnd50vGzEYEK+sYhEMHsoUgf3j65MNdadi6mEO5UCXCGxYCi7qgX WFQcsZIJ2Fu8s/P9vhc/OdXyMBvqwLC7WP0Iwa+/QtOk7YrcQNVx6G9CqL2RRUSlnYx+ k+NmAzUBe1pYR9aFm77nsezouOeWql6Zc5QqwXSsoTfMq7LS2fboyKrpB9zlkED9oWMI qlKDmSAP2MAK0Brfbz6z46cmYAxkk12/imrm0s0s2JWDb0U311Dnmemk3PmuxKxEui7s sudg== 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=REukLMYHB9mfVFO1/bdDCKtlszA1rKroqNl1QPX1pLU=; b=DAYpcQC/BB46CQSageyBEXoPSHMLBViM09kJwlXV63Wi2U02YQXW3cDZzd2K1LIHqz n1CsfpU0cMaD1+HVKf6Iod8fTcNWcchnTrAq0eJ0bxFptUt7Ysb/CgR/Idt2PZo3Hwu7 SWOvGw7DeZas69QwWZa0I5XJfGnlWjmiddNj3wPv38bj0uFMUVPTfiHgSWXUyXfW+bQp sj6dAVI70oN1BKPIYe6wvfF9nNvdnhBcgIPhsWR7c2SgDYVEWlbGW8doPmj41mPdxjAk 7cU3ClN9WnXNftVmQ2+P3707uQdKENpoYkqwv3GY9oSksYxlxfnMwv1IlwBsgnItQYgZ BVCw== X-Gm-Message-State: AOAM532nE9NpvCguJRIwHfef/RgiN9CIBfNX8RkfviUC/qi25Z5zaPmM I7d+F3OV1S6XiotjS4lhspePOgE4ntSlQ9oF74q8pQ== X-Google-Smtp-Source: ABdhPJx8p5Gioov6LW3dMuKZCxQ7H3nKyaoIEb0t3AIauct+JwrIEuRpWs9dp5K8G8EOr4CSz9yHAnha7BrG6YV+cpk= X-Received: by 2002:a05:622a:10d:: with SMTP id u13mr4063224qtw.369.1627562667841; Thu, 29 Jul 2021 05:44:27 -0700 (PDT) MIME-Version: 1.0 References: <20210728190254.3921642-1-hca@linux.ibm.com> <20210728190254.3921642-3-hca@linux.ibm.com> In-Reply-To: <20210728190254.3921642-3-hca@linux.ibm.com> From: Alexander Potapenko Date: Thu, 29 Jul 2021 14:43:51 +0200 Message-ID: Subject: Re: [PATCH 2/4] kfence: add function to mask address bits To: Heiko Carstens Cc: Marco Elver , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , kasan-dev , Linux Memory Management List , LKML , linux-s390 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 Wed, Jul 28, 2021 at 9:03 PM Heiko Carstens wrote: > > From: Sven Schnelle > > s390 only reports the page address during a translation fault. > To make the kfence unit tests pass, add a function that might > be implemented by architectures to mask out address bits. > > Signed-off-by: Sven Schnelle > Signed-off-by: Heiko Carstens > --- > mm/kfence/kfence_test.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/mm/kfence/kfence_test.c b/mm/kfence/kfence_test.c > index 942cbc16ad26..eb6307c199ea 100644 > --- a/mm/kfence/kfence_test.c > +++ b/mm/kfence/kfence_test.c > @@ -23,8 +23,15 @@ > #include > #include > > +#include > + > #include "kfence.h" > > +/* May be overridden by . */ > +#ifndef arch_kfence_test_address > +#define arch_kfence_test_address(addr) (addr) > +#endif > + > /* Report as observed from console. */ > static struct { > spinlock_t lock; > @@ -82,6 +89,7 @@ static const char *get_access_type(const struct expect_= report *r) > /* Check observed report matches information in @r. */ > static bool report_matches(const struct expect_report *r) > { > + unsigned long addr =3D (unsigned long)r->addr; > bool ret =3D false; > unsigned long flags; > typeof(observed.lines) expect; > @@ -131,22 +139,25 @@ static bool report_matches(const struct expect_repo= rt *r) > switch (r->type) { > case KFENCE_ERROR_OOB: > cur +=3D scnprintf(cur, end - cur, "Out-of-bounds %s at",= get_access_type(r)); > + addr =3D arch_kfence_test_address(addr); Can we normalize addr once before (or after) this switch? > break; > case KFENCE_ERROR_UAF: > cur +=3D scnprintf(cur, end - cur, "Use-after-free %s at"= , get_access_type(r)); > + addr =3D arch_kfence_test_address(addr); > break; > case KFENCE_ERROR_CORRUPTION: > cur +=3D scnprintf(cur, end - cur, "Corrupted memory at")= ; > break; > case KFENCE_ERROR_INVALID: > cur +=3D scnprintf(cur, end - cur, "Invalid %s at", get_a= ccess_type(r)); > + addr =3D arch_kfence_test_address(addr); > break; > case KFENCE_ERROR_INVALID_FREE: > cur +=3D scnprintf(cur, end - cur, "Invalid free of"); > break; > } > > - cur +=3D scnprintf(cur, end - cur, " 0x%p", (void *)r->addr); > + cur +=3D scnprintf(cur, end - cur, " 0x%p", (void *)addr); > > spin_lock_irqsave(&observed.lock, flags); > if (!report_available()) > -- > 2.25.1 > --=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=-23.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,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 AD5A0C4338F for ; Thu, 29 Jul 2021 12:44:30 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3360260F21 for ; Thu, 29 Jul 2021 12:44:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 3360260F21 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 8DC776B0036; Thu, 29 Jul 2021 08:44:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 88CBE8D0001; Thu, 29 Jul 2021 08:44:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 754056B006C; Thu, 29 Jul 2021 08:44:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0168.hostedemail.com [216.40.44.168]) by kanga.kvack.org (Postfix) with ESMTP id 59B316B0036 for ; Thu, 29 Jul 2021 08:44:29 -0400 (EDT) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id ED5DD182C78FE for ; Thu, 29 Jul 2021 12:44:28 +0000 (UTC) X-FDA: 78415593816.27.E3D6E29 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf06.hostedemail.com (Postfix) with ESMTP id B2B6480265EB for ; Thu, 29 Jul 2021 12:44:28 +0000 (UTC) Received: by mail-qt1-f174.google.com with SMTP id g11so3778079qts.11 for ; Thu, 29 Jul 2021 05:44:28 -0700 (PDT) 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=REukLMYHB9mfVFO1/bdDCKtlszA1rKroqNl1QPX1pLU=; b=BDIdGkUehfGKUuxsy+fvkDkr2GBCODc7I8zNcJ8SRMTrosiAzd9wV8k4ho+9DmoVTN ZgZpaPFz7rYUXgm3Bnd50vGzEYEK+sYhEMHsoUgf3j65MNdadi6mEO5UCXCGxYCi7qgX WFQcsZIJ2Fu8s/P9vhc/OdXyMBvqwLC7WP0Iwa+/QtOk7YrcQNVx6G9CqL2RRUSlnYx+ k+NmAzUBe1pYR9aFm77nsezouOeWql6Zc5QqwXSsoTfMq7LS2fboyKrpB9zlkED9oWMI qlKDmSAP2MAK0Brfbz6z46cmYAxkk12/imrm0s0s2JWDb0U311Dnmemk3PmuxKxEui7s sudg== 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=REukLMYHB9mfVFO1/bdDCKtlszA1rKroqNl1QPX1pLU=; b=aZIpdTJZ8SL0wYf459YPN/gP9PFvKgsCnxWQE1fH6dPEZS+8KoP6BvNRPLah2Oq0fy V/7iKaznLSFL4uWBU3p16eaTfIXfrSuVedhs8pXktuj/GKbtvupX5E7vwMiXoC2jCTFX 4Q4xbo7u27hPlDHx/Lt8Jm+jfvoZp9Xhq4iedPD9tlC6IEIkSBKmqqR0LUrxVKPn+zJt i7tb+Qk3qxB2KHrw2qAeXqa2+vYd7ny8ga9gOiPqvEVHDPgBYzWrFAL0+KmkfRUZ4F3e ImzkgbZ4j5QKc8l7W/O7xSrJxDw+5YiTYc66PsggTsIt03vAQg/kzJPZG1vW8KLKzyWo 80pw== X-Gm-Message-State: AOAM531wJsfoan+HSeFrKZER4613cg7+MALiKI6oUQFhQOElFKirE32q HrwZMVMH/fgfoPJoN3203F+Y9WLpFyXa4R8OC/y54Q== X-Google-Smtp-Source: ABdhPJx8p5Gioov6LW3dMuKZCxQ7H3nKyaoIEb0t3AIauct+JwrIEuRpWs9dp5K8G8EOr4CSz9yHAnha7BrG6YV+cpk= X-Received: by 2002:a05:622a:10d:: with SMTP id u13mr4063224qtw.369.1627562667841; Thu, 29 Jul 2021 05:44:27 -0700 (PDT) MIME-Version: 1.0 References: <20210728190254.3921642-1-hca@linux.ibm.com> <20210728190254.3921642-3-hca@linux.ibm.com> In-Reply-To: <20210728190254.3921642-3-hca@linux.ibm.com> From: Alexander Potapenko Date: Thu, 29 Jul 2021 14:43:51 +0200 Message-ID: Subject: Re: [PATCH 2/4] kfence: add function to mask address bits To: Heiko Carstens Cc: Marco Elver , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , kasan-dev , Linux Memory Management List , LKML , linux-s390 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: B2B6480265EB Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20161025 header.b=BDIdGkUe; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf06.hostedemail.com: domain of glider@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=glider@google.com X-Stat-Signature: bsw844ubmh1ifp3hdfdu685sf9xuhoci X-HE-Tag: 1627562668-857224 X-Bogosity: Ham, tests=bogofilter, spamicity=0.002838, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Jul 28, 2021 at 9:03 PM Heiko Carstens wrote: > > From: Sven Schnelle > > s390 only reports the page address during a translation fault. > To make the kfence unit tests pass, add a function that might > be implemented by architectures to mask out address bits. > > Signed-off-by: Sven Schnelle > Signed-off-by: Heiko Carstens > --- > mm/kfence/kfence_test.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/mm/kfence/kfence_test.c b/mm/kfence/kfence_test.c > index 942cbc16ad26..eb6307c199ea 100644 > --- a/mm/kfence/kfence_test.c > +++ b/mm/kfence/kfence_test.c > @@ -23,8 +23,15 @@ > #include > #include > > +#include > + > #include "kfence.h" > > +/* May be overridden by . */ > +#ifndef arch_kfence_test_address > +#define arch_kfence_test_address(addr) (addr) > +#endif > + > /* Report as observed from console. */ > static struct { > spinlock_t lock; > @@ -82,6 +89,7 @@ static const char *get_access_type(const struct expect_= report *r) > /* Check observed report matches information in @r. */ > static bool report_matches(const struct expect_report *r) > { > + unsigned long addr =3D (unsigned long)r->addr; > bool ret =3D false; > unsigned long flags; > typeof(observed.lines) expect; > @@ -131,22 +139,25 @@ static bool report_matches(const struct expect_repo= rt *r) > switch (r->type) { > case KFENCE_ERROR_OOB: > cur +=3D scnprintf(cur, end - cur, "Out-of-bounds %s at",= get_access_type(r)); > + addr =3D arch_kfence_test_address(addr); Can we normalize addr once before (or after) this switch? > break; > case KFENCE_ERROR_UAF: > cur +=3D scnprintf(cur, end - cur, "Use-after-free %s at"= , get_access_type(r)); > + addr =3D arch_kfence_test_address(addr); > break; > case KFENCE_ERROR_CORRUPTION: > cur +=3D scnprintf(cur, end - cur, "Corrupted memory at")= ; > break; > case KFENCE_ERROR_INVALID: > cur +=3D scnprintf(cur, end - cur, "Invalid %s at", get_a= ccess_type(r)); > + addr =3D arch_kfence_test_address(addr); > break; > case KFENCE_ERROR_INVALID_FREE: > cur +=3D scnprintf(cur, end - cur, "Invalid free of"); > break; > } > > - cur +=3D scnprintf(cur, end - cur, " 0x%p", (void *)r->addr); > + cur +=3D scnprintf(cur, end - cur, " 0x%p", (void *)addr); > > spin_lock_irqsave(&observed.lock, flags); > if (!report_available()) > -- > 2.25.1 > --=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