Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp5603469rdb; Wed, 13 Dec 2023 13:42:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IFqxyxXqxcxxh4eFoWYitXyaxj6HweLE32SNC81+IyCaNz4zTa+sKdO80+7DCElz73bkUcd X-Received: by 2002:a05:6e02:1d8b:b0:35d:5995:9042 with SMTP id h11-20020a056e021d8b00b0035d59959042mr6860591ila.53.1702503778348; Wed, 13 Dec 2023 13:42:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702503778; cv=none; d=google.com; s=arc-20160816; b=Lfq6hxtEr73C/1ZjZwx81n8l+s+Tm6mydq+kJ9GsJnMOFMm63Eo9bEP808MzlVBp3y Cf78KxedD5lKWhEsjJpjNJaF6CFHrhCA/JOC6LvwWBPzEGqesw2YKXRhCUTqCDqdzXiG 5mZmcbpG8KDUX9kxFoFqIgIWUjB9eyHpk1vhqpaqGgg0DeStg42HHMjvgbUwtSpL6pFT sxzNbdjkH0aDNZ+krWsM/I82vMbrWgcUciEQ/bkmokuVJ61+7RvDxt4KRMJnr1ll2ThQ yVIN1cAmp+yachb2DjIIxDIxO7k0RPMM0ytsdnRxz1aInyHbqNm7VdUB5JOlO12TAkso r3Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=fdKw+cJKuYBtq2AfhtjjClQUyyHxxJix2Fa9xvak1zc=; fh=PCd4oB7lltsZ3rRh9Uwm8luoLEfLd0fPYgQXCkhrP5k=; b=r5BkeELUPyrQSlyi8nw92gPbsod8rpZ8qcvFSwQWb7tErbtZ7SfHg1+Xi+E0XwU18U ILeSb8BXvlGrHgWWWb9VRAxL+04SQo702lw510jQAk03sviLSo6NgdMeLhjJIznBFYLm 0EFUuXdZ2m4azcH/guSPe5Vk1LgHofXWNFcxtximrcw4k4MGmSt7k6ddW+urSdEnxNIP E9iDLyf30xV2tG6YCB+H7tUqChzP/iMQSfWYNQ0yNFrCxU/1953ufeNFVeV8vJGcRwdP ZgpoTINXsDm3R32O1eJQ/ICQP04ZFC1aXHNqWReRinepw9zl03OllbUibIbqpvrtkL7X wA2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=iC04CCUD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id f15-20020a65628f000000b005c66e4949a8si10179638pgv.246.2023.12.13.13.42.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Dec 2023 13:42:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=iC04CCUD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 7949381C3958; Wed, 13 Dec 2023 13:42:55 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230001AbjLMVmj (ORCPT + 99 others); Wed, 13 Dec 2023 16:42:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229772AbjLMVmi (ORCPT ); Wed, 13 Dec 2023 16:42:38 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F0BAD5 for ; Wed, 13 Dec 2023 13:42:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1702503763; 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=iC04CCUDXj9Lb7m/l3CXoDw4ZICPIqd3iZ2bZeFN+2fGqroYq3dZpHAbskjWNwALz6zypI M3Dpaj9CZ3DR2cWH+ATUgO74g8oVLqhRujbaI7u5Uynnrsnjkqa2I/4eow/Yt5EGkj2hHI TwgVAHi4C0A8/HxSfCTNLNKiI4Dio68= Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-138-kM9HWGimPFudV0upeK-Efw-1; Wed, 13 Dec 2023 16:42:42 -0500 X-MC-Unique: kM9HWGimPFudV0upeK-Efw-1 Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-5e302b65cc7so7362157b3.1 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=BpSH4o2ellqNsDAYxKNaTwmlVayvxLUFOZragTZidOoG5D6ZV4sfpd8ayOUPD2yMgf n9upNIFijVlBLmE1uCyCZPOU9LE5AB3ThMhBeXx3fEHG9JFAt88YJTuMuYjCtVmHOEeE D2CqWUEJToYk7h59I0Zcuurdg4wpuiqPVpsk91yIIcRbPN6RHoRfj8tDSJ73BbXqJlyl QjLUB0Jrhq6H6gEGYUtYSQ+HS5qehQjarvr2ONPB9bwtN+y7sRw9z2CkBXBzSv9ZuKKb h+nL9YVS3Qf4Of1YZl5Q0Uam4YFKHJNc20q5ORCl/BEsKlkjBPdMtPs2+neQgun8IXDW sCZw== X-Gm-Message-State: AOJu0Yz46RtTwO1ZcqkNKZZ9ubfbsdXOcEc2KZ4MW/wGw4RTJwvWvXhT SzO9fefq74Ti+9XdEoq0VlUnhs7XlZHnlRXekLazSOqweFLtbpbppYkArkVtcQ/Mmf116rPS5Cj ZYr9k0Z9auZOFkyBwMOzh84+gx4GeN3781Vo9U/uE X-Received: by 2002:a25:1342:0:b0:db7:dacf:4d5b with SMTP id 63-20020a251342000000b00db7dacf4d5bmr3860237ybt.87.1702503761254; Wed, 13 Dec 2023 13:42:41 -0800 (PST) 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 13 Dec 2023 13:42:55 -0800 (PST) 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 >