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 03404C4332F for ; Wed, 13 Dec 2023 21:42:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 650B48D005C; Wed, 13 Dec 2023 16:42:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 600CA8D0049; Wed, 13 Dec 2023 16:42:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4C8D48D005C; Wed, 13 Dec 2023 16:42:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 3D1C78D0049 for ; Wed, 13 Dec 2023 16:42:51 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0A39B140328 for ; Wed, 13 Dec 2023 21:42:51 +0000 (UTC) X-FDA: 81563120142.26.A8B3699 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf03.hostedemail.com (Postfix) with ESMTP id ECBF92000D for ; Wed, 13 Dec 2023 21:42:47 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=amTDEcFk; spf=pass (imf03.hostedemail.com: domain of npache@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702503768; a=rsa-sha256; cv=none; b=qVzmBi10tILAhEfeonrA7UvFN5APDd16sRaIpSwNi830OhdQ3TQIJ9n4RDn92BaxSCUURw niCDLRcm+6lyj2E3GHlKwPVJftnBDX3DvEYBX2kfL7CaQRwtTTZOEyTwV4o/F78WMrqJku hFyoRfATZpJjzc7qq5jc+DOkSwJzC6U= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=amTDEcFk; spf=pass (imf03.hostedemail.com: domain of npache@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702503768; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=fdKw+cJKuYBtq2AfhtjjClQUyyHxxJix2Fa9xvak1zc=; b=LjTgMuNqGjcApsF8wiGe8rvL9Ez0wwUKpFl+RsxSRc6zxusGuLGm6ef8MooIi+8BEM+fwG l79K18yPZaPcAW5RNsi8t9rBnhnkAeuIMTVzm/QWP3aPLTKYMwo2rw/VW5PooahlmuMqhV +9er7CJT/Ty/WMfN02mJuPxifc9BO4o= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1702503767; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fdKw+cJKuYBtq2AfhtjjClQUyyHxxJix2Fa9xvak1zc=; b=amTDEcFkYeBruhVXGfM8nl3eZaqNJJfVOFxVRVft8EEqmvhz2XfGty7sqvVEvHcZDSrszi nhBUzLhd//RC665FX29EeZY5+h441hwyWiC5h0DpthT0LUn3ytFtTZFNKiC3yaii4qpxhX axIWK3Gty8/Bwi64CscO/w5gnx57xHY= Received: from mail-yb1-f198.google.com (mail-yb1-f198.google.com [209.85.219.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-MGfNdEaAPpKDRXP0_9pwjA-1; Wed, 13 Dec 2023 16:42:41 -0500 X-MC-Unique: MGfNdEaAPpKDRXP0_9pwjA-1 Received: by mail-yb1-f198.google.com with SMTP id 3f1490d57ef6-dbcbd789ddcso1195664276.0 for ; Wed, 13 Dec 2023 13:42:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702503761; x=1703108561; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fdKw+cJKuYBtq2AfhtjjClQUyyHxxJix2Fa9xvak1zc=; b=rAbVYhtbQSUaA10qGMgCZT5gkwPGLR83QCSb7Lc48tTeqJSXT4sPmiRRvMqNoageIR l2HFmbozmnqJMY9AcbA5Aj7xGY52uBHvtG7A8D0FS/Xo5KXihAXZYJvrJuz71K2URlmz bxoV1KpIUwZ7XoAvS+g0nWsPFjxEi6z8aW3Ut37t+weFWbJFTSnG7MG4u15AKcEr1R8a wvMBlTa4LGVvr8LWqY1kYM5sC2ye3vaAOvpCZoCmWC0onuzR+t5Akt/iZWfkgs2NCeWi Wvh4ONqqLBMRTJMNjQwRdzZFy8Ef44dv9wSjTkCOM/CbrY2JDtpVnan1hMPiAcQD9LxN d31A== X-Gm-Message-State: AOJu0YxrHrUlkY1jaeeT2AnMNsfsnWPG5q6rvOqzGTpiRsOunS6mt6pH KArHE3ctM1ShsuPO9fJraGxh2ra64Q025Z2mLtl87N8hWAMELck7mLFEyilBo13PrP8pEixvFdt YipT1g9E+bP59GKYmr4SO36VF9Js= X-Received: by 2002:a25:1342:0:b0:db7:dacf:4d5b with SMTP id 63-20020a251342000000b00db7dacf4d5bmr3860238ybt.87.1702503761255; Wed, 13 Dec 2023 13:42:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IHMEg4Tsu94LACqll5uZbZm49OGUoCP7PdYVrYGA6B+PQrDt/ww0kz01Mhbqj0nE+zvkBqP3ZMIkKunRmRhT3g= X-Received: by 2002:a25:1342:0:b0:db7:dacf:4d5b with SMTP id 63-20020a251342000000b00db7dacf4d5bmr3860229ybt.87.1702503760942; Wed, 13 Dec 2023 13:42:40 -0800 (PST) MIME-Version: 1.0 References: <20231212232659.18839-1-npache@redhat.com> In-Reply-To: From: Nico Pache Date: Wed, 13 Dec 2023 14:42:15 -0700 Message-ID: Subject: Re: [PATCH] kunit: kasan_test: disable fortify string checker on kmalloc_oob_memset To: Andrey Konovalov Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, akpm@linux-foundation.org, vincenzo.frascino@arm.com, dvyukov@google.com, glider@google.com, ryabinin.a.a@gmail.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: ECBF92000D X-Stat-Signature: r54833z564pj9y1bqe4pcma4zai3ym43 X-Rspam-User: X-HE-Tag: 1702503767-949120 X-HE-Meta: U2FsdGVkX19NDkqB3Qg4FTzNXq2aWLm9xc0ZkWKBHfZjsQXeYtOmtcGE3KbIEx09uYoGyFIxmI09Zc8TbpMrs9RIyhJtgOCMpiS4AB6N+4phdc6SC35TsMGxRguZw0l3gSZ04DNekfNtQ72Y/slk51WrP94vp3SIqAi7AYAXYuLtLvSarDvSuXgmp8fW4021uwMu0uCWeyyGF+1xyeGk8Pd1Qdfdhes/d2GSDGfi6gWtBYKgNvwHn++Flk8CoulX4GdTQ20uR2hFgxU4IAkktzO9IY9fA2kzSqN130OGm8qiUgTrPqQ9VUzJINf3QRrdZBfYoTStlLS9ZBLMJwuqG7bDxDYOsDVfLNGpAMPRiqdwdPUFzEuMk8nILDM6N/PVqZlMuBK7gxpFnlbiro6BxOii285I+r3YrH+/Ooa6ldC6hEo+KrGHNbZGcx/rm+xGp9SBYIGYrdkq1Z/oOKEKY2DMdAhaELmYwTTos9PkZ4gp2Yet20h9e9+VzvVSUMEQ+PfzaciU8u/R/SLfc53akLmrPpBAMEIpdFHuqZJIXB/FtLQNcODgAVnWNq/i2Nci8BtJYdSvtANeoPgEPFiKfGN4VanODefRQRX+UokM5aZNyniAdnqeUr4rfJqCgsHm5tS1D4pp3IWsvuob7z+dlAlw3MAWKsAvY6L37E6fsg3RYl44AHQZukNeCDPAuq35pmhxX8wLl29joPEJl5UA44MdNTgXPp+Aj3JelX+ArI4Vw9Q7y/w8VJ1rXFZZ+bg6mEmzSOcpYO6cSPUAIb1lyMvoGa0DXRLKqHj7T+qM0wEBIUOBKnvohOzl1klQTxny7FVTIycY4JfmgGJF/BfstXPTJK0iIpf+/jW9x6Yb1AArAE5XKXV3Kg4S8PtwL5DvusHC81OEoVQvZxQcMS3/5OsW74E0JZA3c8dEjXhYHHrYSZpZ1RvO25Cd1rFXKrWnKES1N3RnhvopdmuWDGy UBidc312 b0U56UuyjIdtK25YH65ydfrUGT0TGxzUx2E9UEeLzjT5bU+tHgH7y/KDlCX+qns3/u2ElE/eYc9gmCfp0kfJESseZobQgJy/fClR7JvigAT+NQzPQraG64A6+u+TvfNjyC+08oKU4nvzuMl3rcXoq7eI1Mg6DimC+/1q3XXMFMF6zzMYzHpjlEdesZeKIJwLWURRI5voedgDsb7VvLKxmBk8q4eobo/eQyIxACvogoTgvHuBC4c8AuW8IKao3ltGdcEoN/Jnk8Mazgc50B6KoObvwYTPJQfocDn10gXon/m0RVTes1NAFxVQfBYCH1Li3ItbpfoL25IV2uoWLHtkV741KmdRsQxhydkLLaJNaGE+CALtarCI60BBzOC/3MySiUfc4bL2VwG3o6XXW2ha1Ur0Cqq/CBO359qSK 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: List-Subscribe: List-Unsubscribe: On Wed, Dec 13, 2023 at 7:34=E2=80=AFAM Andrey Konovalov wrote: > > On Wed, Dec 13, 2023 at 12:27=E2=80=AFAM Nico Pache w= rote: > > > > similar to commit 09c6304e38e4 ("kasan: test: fix compatibility with > > FORTIFY_SOURCE") the kernel is panicing in kmalloc_oob_memset_*. > > > > This is due to the `ptr` not being hidden from the optimizer which woul= d > > disable the runtime fortify string checker. > > > > kernel BUG at lib/string_helpers.c:1048! > > Call Trace: > > [<00000000272502e2>] fortify_panic+0x2a/0x30 > > ([<00000000272502de>] fortify_panic+0x26/0x30) > > [<001bffff817045c4>] kmalloc_oob_memset_2+0x22c/0x230 [kasan_test] > > > > Hide the `ptr` variable from the optimizer to fix the kernel panic. > > Also define a size2 variable and hide that as well. This cleans up > > the code and follows the same convention as other tests. > > > > Signed-off-by: Nico Pache > > --- > > mm/kasan/kasan_test.c | 20 ++++++++++++++++---- > > 1 file changed, 16 insertions(+), 4 deletions(-) > > > > diff --git a/mm/kasan/kasan_test.c b/mm/kasan/kasan_test.c > > index 8281eb42464b..5aeba810ba70 100644 > > --- a/mm/kasan/kasan_test.c > > +++ b/mm/kasan/kasan_test.c > > @@ -493,14 +493,17 @@ static void kmalloc_oob_memset_2(struct kunit *te= st) > > { > > char *ptr; > > size_t size =3D 128 - KASAN_GRANULE_SIZE; > > + size_t size2 =3D 2; > > Let's name this variable access_size or memset_size. Here and in the > other changed tests. Hi Andrey, I agree that is a better variable name, but I chose size2 because other kasan tests follow the same pattern. Please let me know if you still want me to update it given that info and I'll send a V2. Cheers, -- Nico > > > KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); > > > > ptr =3D kmalloc(size, GFP_KERNEL); > > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); > > > > + OPTIMIZER_HIDE_VAR(ptr); > > OPTIMIZER_HIDE_VAR(size); > > - KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 1, 0, 2)); > > + OPTIMIZER_HIDE_VAR(size2); > > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 1, 0, size2))= ; > > kfree(ptr); > > } > > > > @@ -508,14 +511,17 @@ static void kmalloc_oob_memset_4(struct kunit *te= st) > > { > > char *ptr; > > size_t size =3D 128 - KASAN_GRANULE_SIZE; > > + size_t size2 =3D 4; > > > > KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); > > > > ptr =3D kmalloc(size, GFP_KERNEL); > > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); > > > > + OPTIMIZER_HIDE_VAR(ptr); > > OPTIMIZER_HIDE_VAR(size); > > - KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 3, 0, 4)); > > + OPTIMIZER_HIDE_VAR(size2); > > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 3, 0, size2))= ; > > kfree(ptr); > > } > > > > @@ -523,14 +529,17 @@ static void kmalloc_oob_memset_8(struct kunit *te= st) > > { > > char *ptr; > > size_t size =3D 128 - KASAN_GRANULE_SIZE; > > + size_t size2 =3D 8; > > > > KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); > > > > ptr =3D kmalloc(size, GFP_KERNEL); > > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); > > > > + OPTIMIZER_HIDE_VAR(ptr); > > OPTIMIZER_HIDE_VAR(size); > > - KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 7, 0, 8)); > > + OPTIMIZER_HIDE_VAR(size2); > > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 7, 0, size2))= ; > > kfree(ptr); > > } > > > > @@ -538,14 +547,17 @@ static void kmalloc_oob_memset_16(struct kunit *t= est) > > { > > char *ptr; > > size_t size =3D 128 - KASAN_GRANULE_SIZE; > > + size_t size2 =3D 16; > > > > KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); > > > > ptr =3D kmalloc(size, GFP_KERNEL); > > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); > > > > + OPTIMIZER_HIDE_VAR(ptr); > > OPTIMIZER_HIDE_VAR(size); > > - KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 15, 0, 16)); > > + OPTIMIZER_HIDE_VAR(size2); > > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 15, 0, size2)= ); > > kfree(ptr); > > } > > > > -- > > 2.43.0 > > > > With the fix mentioned above addressed: > > Reviewed-by: Andrey Konovalov >