Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp6276713rdb; Thu, 14 Dec 2023 13:25:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IHH7LhOILMpdIkNggqAF9n6w7RkC85kG5gfZsnN4l5GVdg8S6oN7uCdivtOAF1INGf363EA X-Received: by 2002:a17:90a:e643:b0:28b:11e4:58e9 with SMTP id ep3-20020a17090ae64300b0028b11e458e9mr804656pjb.8.1702589154272; Thu, 14 Dec 2023 13:25:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702589154; cv=none; d=google.com; s=arc-20160816; b=Pz0OvJBPg8VhRD6zgWpOcWRRrea51h4XRXlbm4hC/lao1xTuI/9fvxzl2LrU1BzP3w v0oW1PoEe9v0JqguCa77QtI86Qr+dPCtP/N7zJ+XEoz1c4JdfpTTyprCsKIM0YJcXmDw ygJ4dxQMtJ8f4PC/75T9qGxHPebiNTC7ECI/Pxu/A78r3cfnaHf8cdx1gMirM6fNNGxH nkXN5GZ837cafZS4rC+FGKDGaZwryOMn1VERZDGrU8wjBuUwm76mL2LSHcXOFsi+EbC3 c39hcGqp5Yoj0KsXMl6aIe3W3YI15d8jO71erwQAQTl9lbQsSa9iRpI52p4cbN2PwdSL i/hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=KxuQnaXteQq89l339+5l0KY/hocadQszL6EzwA8eJ60=; fh=mcsOkjSKiIVqZTSI0nnbwoKVuIQQbBRaZcAvv5Fi9PY=; b=yh+QqqcNNF2XtLqpDGer6TCMHAXGooMUFz+2YpbFa3lErVzXkUNWyem32Q3CfgUoxz sNKdzw1ZS1dUu2nwr49Zc1YtV2RF5/q+TrhzdovhgN8f4qc6E7B3/4+gzJlnOHr8RG7P dIc9IWvRcia4kV/ydczoE7iLdNfU3vBWanDhbFOvo8linH2rLHGF4uh3Nn3ms+n0YOSq U1/7KNwwHdrJuZTtXtj/3Y379a4/BiHIWTKMmAbXlx+XhlY4vjM15F50dHYBlwS+G9sw +1h+ThoVkCvUugS+5VRxqe2bk5Y0C6py0sV43yP5odXbftOn0TGbl+pObALNjiTwXSZj 6r+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OKzMtX3W; spf=pass (google.com: domain of linux-kernel+bounces-126-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-126-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id i7-20020a17090332c700b001d34932e41bsi3932905plr.167.2023.12.14.13.25.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Dec 2023 13:25:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-126-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OKzMtX3W; spf=pass (google.com: domain of linux-kernel+bounces-126-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-126-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id D3F7628180B for ; Thu, 14 Dec 2023 21:25:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 014EA6A001; Thu, 14 Dec 2023 21:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OKzMtX3W" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DC2F282E7 for ; Thu, 14 Dec 2023 21:25:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-28b0a9876c8so702655a91.3 for ; Thu, 14 Dec 2023 13:25:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702589145; x=1703193945; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=KxuQnaXteQq89l339+5l0KY/hocadQszL6EzwA8eJ60=; b=OKzMtX3W/YoGLHlIHBNbKgxf8Onn9/EGjlrpSuc4wzexLDMZIZUxQCCShPMDxmOrOJ YR9gtcxJPpWRk7DvgmDfBIB+OVtYbR6v215q5Kg6LcgaruLL23mZ7hAYF+LKLuP2IKPW PnC/vDO7rRnV8iTioUfjhQxReOs67z+2ptgRWyhTh9EVYSO/CeXY9N/AjVkuzLTB0m84 5YUn2x+kmQDuzwS+cJdcqonVXTH4cGVSjOXJCK5QhI3F6rTApC9t9JCUBAs02QXXs2fC /HIW0deDE9vq0YQ30zAagArL1pWWpMloZMbO4RwUPQ/i8lBEEPxSV7aGTKOcYxiamtS0 vnQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702589145; x=1703193945; 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=KxuQnaXteQq89l339+5l0KY/hocadQszL6EzwA8eJ60=; b=NxIIPPMs9nORQr6zizlwQgRJmWhpRloz0JBWB1KFHYW3uQhrOWY6q5+BbExhszUEJ3 WbSQYQT7R9jLln/0a9Sg1IgIGEAN2b5AZtoxvxKafWxfRPj+jwgFpHlHWAT+N3U7Zddh uuh6pF1miYM1QEzGPGKsL7mLoBuMX5WpL3VzmfXlEBsshOBrytL7e7tsPZfNZFJtO2Jd FIndXlnVs/d+IahwCx1Potm+fXjTuqCLilRbsckA7epfCLcl0MdeELb6QzyfMVAydbLY 1czEtnp0y4bGEceKApRVONBAAG4Bba+jKAOVEc4C5O/MjlXRmXKWVvelCO6zOLHskxeH cVYw== X-Gm-Message-State: AOJu0YwmuK1Io3RisTYCtxkujpM+StVyYu1lOHsK+1dSJZ8tFHpwrNb+ Dp1clPVjINjETLPl6XWWN4kTDIX/VPjnIFRwTwQ= X-Received: by 2002:a17:90a:4942:b0:286:bf89:5db7 with SMTP id c60-20020a17090a494200b00286bf895db7mr5229758pjh.39.1702589145408; Thu, 14 Dec 2023 13:25:45 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20231214164423.6202-1-npache@redhat.com> In-Reply-To: <20231214164423.6202-1-npache@redhat.com> From: Andrey Konovalov Date: Thu, 14 Dec 2023 22:25:34 +0100 Message-ID: Subject: Re: [PATCH v2] kunit: kasan_test: disable fortify string checker on kmalloc_oob_memset To: Nico Pache 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 On Thu, Dec 14, 2023 at 5:44=E2=80=AFPM Nico Pache wrot= e: > > 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 would > 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 memset_size 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..34515a106ca5 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 *test= ) > { > char *ptr; > size_t size =3D 128 - KASAN_GRANULE_SIZE; > + size_t memset_size =3D 2; > > 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(memset_size); > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 1, 0, memset_si= ze)); > kfree(ptr); > } > > @@ -508,14 +511,17 @@ static void kmalloc_oob_memset_4(struct kunit *test= ) > { > char *ptr; > size_t size =3D 128 - KASAN_GRANULE_SIZE; > + size_t memset_size =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(memset_size); > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 3, 0, memset_si= ze)); > kfree(ptr); > } > > @@ -523,14 +529,17 @@ static void kmalloc_oob_memset_8(struct kunit *test= ) > { > char *ptr; > size_t size =3D 128 - KASAN_GRANULE_SIZE; > + size_t memset_size =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(memset_size); > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 7, 0, memset_si= ze)); > kfree(ptr); > } > > @@ -538,14 +547,17 @@ static void kmalloc_oob_memset_16(struct kunit *tes= t) > { > char *ptr; > size_t size =3D 128 - KASAN_GRANULE_SIZE; > + size_t memset_size =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(memset_size); > + KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 15, 0, memset_s= ize)); > kfree(ptr); > } > > -- > 2.43.0 > Reviewed-by: Andrey Konovalov Thanks!