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 017BAC4167B for ; Wed, 13 Dec 2023 14:34:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 66AD48D0021; Wed, 13 Dec 2023 09:34:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 61AF08D0015; Wed, 13 Dec 2023 09:34:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 50E9A8D0021; Wed, 13 Dec 2023 09:34:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 4310D8D0015 for ; Wed, 13 Dec 2023 09:34:37 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 15935C023F for ; Wed, 13 Dec 2023 14:34:37 +0000 (UTC) X-FDA: 81562040994.08.294EAF3 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by imf26.hostedemail.com (Postfix) with ESMTP id C16AE14002A for ; Wed, 13 Dec 2023 14:34:33 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=PQ65wpU7; spf=pass (imf26.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.210.180 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702478073; 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=cbOaPVmJ7E4boaoj6IocNcjRghNie5jLjB39Y35NZkE=; b=wXEAnio6HKKBgK7t0NndJbwxYlLz2jKmkvU8KlM35KKd7CuTKF3atlGZunhFnpohOmTa2Z OxiCZMfPFgShXx6sz6ctbTxqojKNqGM6A51VXSiU/v12myJlMRFIcYTYoOmPW7dkVZkvLh Ev9v/UEH4DtZ9Zb/a/QB3sEpJqGp8JE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702478073; a=rsa-sha256; cv=none; b=NTKJAEFdr+gToAKGW7eR0AINYg8CsEqy1Ld2CRLQ6h+DWjRefDGbKm+ntQhwMlzv4P+Kqm YOT3f+pBWknNbOpUFe1aDU41lPavcDL9GkjSmw1mjLhJ1VQ/iMVHgJv2XWT0GSAAMEd8FC XPAtYr1iRY0RxY8Ya9xuAvrK7QSW+7c= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=PQ65wpU7; spf=pass (imf26.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.210.180 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-6ce72730548so6201876b3a.1 for ; Wed, 13 Dec 2023 06:34:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702478072; x=1703082872; darn=kvack.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=cbOaPVmJ7E4boaoj6IocNcjRghNie5jLjB39Y35NZkE=; b=PQ65wpU77FQ/Qv5z+0RqAawxfk4pju5S2XyU2+iXYhudi8IellZ36kseptP6lYZBpK IisDAUyFAr+/Hhau1IWpCgLaZnQOiZom3NiXbPP1Rm2/RgxZMIbPwQBxKzdcfPYGhA1/ 9JAMYWGCmyXwW1462YtQkAg6rNkgh/w6Wmc3NH5je2iJ/dpbE0ipOEVCoKyf+3aUJm8y hBwsHl5uPNsaQK5Tcgg8X1reWUZmYj86sJcUkaCISL1STsFgZkTt30sVpAAvBBw8xs7x KyTMXmnJ61MBGa+Gg8wIdyE30HFgKfqjbOFb7s9Kq7a8Ioz+MVZ3P2BCMu5dLPXShe4/ n6gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702478072; x=1703082872; 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=cbOaPVmJ7E4boaoj6IocNcjRghNie5jLjB39Y35NZkE=; b=mJAX64J3kQkAxfv4sJKQN8WzXnzCBHVsYXyI0CFwWoMB5PdS/2ukhTLQho8ngze8VP Cre4XChT0v0Atb00p/H+nYe5U0tHdvMQ1ex2pxAx5OGejrq3IiLNv3iMfZzzekMShjpR slaWJcxVAR2+xPrEWmm9yFh9myE8KNq/6YKv5TqvJLtL1Zk3EJrjPXRh+YDvBesVgZpY 7AULKobT9mCRXcRCRr+md6vlxS5YzHjfgr3FLMKRj7450YMU1zL/D4GZO+c8ca50Ir4r h0RHU/GbgEYtDFTDwCeheiQndmQ1CWCr37zXfR4TfdyRfeU5WMtiwbnftHLhJYIYz/u5 ku1w== X-Gm-Message-State: AOJu0Yxb9oIBaAloPY4gkGwYdQDhgbKlGmIwh5AOBbDcTe3AsBY37E0S jo/jZbmDwqADSfqY/2uC20LohxxtFDsFqIxnIOw= X-Google-Smtp-Source: AGHT+IGoeTELoKZIUySzntD4U8AHBobuBQTV1qRo1vfNtYiB/gZi2nsHPSNCb7OxU6Ep5v2NDoelfkeQ2thuszguRvE= X-Received: by 2002:a05:6a20:2590:b0:190:7d54:f0c4 with SMTP id k16-20020a056a20259000b001907d54f0c4mr10315674pzd.87.1702478072405; Wed, 13 Dec 2023 06:34:32 -0800 (PST) MIME-Version: 1.0 References: <20231212232659.18839-1-npache@redhat.com> In-Reply-To: <20231212232659.18839-1-npache@redhat.com> From: Andrey Konovalov Date: Wed, 13 Dec 2023 15:34:21 +0100 Message-ID: Subject: Re: [PATCH] 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 X-Stat-Signature: w44ko3yjbzswg8phe16pre1joqk1a8hz X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: C16AE14002A X-Rspam-User: X-HE-Tag: 1702478073-827303 X-HE-Meta: U2FsdGVkX1/MC/ShfUjf+qBp+DpMKEgqFzO0powJ/NVISbcMnflLbh9oFUIP4NlCov+NcbxwS6r6MCkEojxQKLrhf1melUb6012IEMLBsnC+hdh4HnJ5Te32BPm6I07Y9zb/5mZ6CmSCMCefKYWLp+d+ZySDMQSxXWVA1yPECyb6HbNp+zqmG7zpx0gKoImed9CWr2i/m4DdSMuV1Cf2/B7dBGe4dYYqDKxTPeCwV1MPI0SHj/uOyh0kIfTTrx+c3hajY9g7tCtGtO0W+cuDYYkfOSO24IY0J+UMQmTkhJkI3LrrE/WuXqgWo/4DuLonquxIPpv9PbRdAxHZMIPzFxb3Mi1lNVCxmBPQvWitHVg7bZeM65sGKQBt2kQHi1ozHwBbTM/HyHocifTW5T8yZRviELyA2iOmYlXRvi2PS2hzaTOUwFGAxj/14MkxkyxP77TGOzMZKfHgzRmExOUifBw+SueSAcKEeTnp3gAc7lQek7fwwPSF6BXiVq9SlPds8PIkpESA2L4CIK+HLQ/lvMtxMh7Tm4nVKa0jXUShRH4wvnETGWO1z5j0xqxnBGnQaoaRQ3iMK9pgxJPAx90KVyyZ7o+MxV+pdi92R0PtVSGdvqFf91Bu32iTfsa4i0mB/VKCugR+x3RFpfXO0BBDFXAg8GtetSjPUJkLwq9sx7LDFK53rJEC6e8kxTOciPPFJAm+ArmHwtOJiaTTNZY00ceCdk3fE1Pbr5LlkXhj4FB3Iz8LoVP8uPKG70e09UQ5smMD7jNDZrzLIAyHhxo2WA+E4M2KreLfdby5g5jAHJxWUTb8XcIbWNyoJybT5o/0hvT/IKcGMUARbQqEg304FLDrjG/oU0xX0n3s4k4pvCvThHI6h89abxN2fEekyDz7WvJKrjhZsFZWHcxYK16Yl37EKvfXZ/FkyV+iu555uQoXvStiGjqPaSVuEiXG3Mbqf7jqE5Cocs5EQsa6XCF 9OHS3nF1 YHLs/fRHQQqS8Enf6VvyCzvoCsNOn34YfRYQ18dO2iPGl44FoVolnwrqgz2oI3xRwbMZ6pzNxi2Ow+uCWlxmoA7rzCDXU/EbVYMvHkDzg7h7pqBDx8exn4kaC4mmtvQVuCnhSilpd63xqEeseFEFEPhS++FaIyRfyX93KMsd38YhWztyzlijPYJqJwe3DqU3yls0ArOvV83mMkw2dlFnEuaJ1eLAVCK8izVqnX7yhbk2vQlo/lJKk4MBJNv2iJv5yLE93sMvxAAbRWCTZjzJRY4I3LRyzl5xpFxmG2t0WHKcnCa/d781mYeM2D+fyr/8S/+FZBF/e2sktacdZY+2DFYrr1Q2b1vxrpz0+BXEfCRkQqrgyA6+Q0L4/VWk3HhYrH3TwhulERYMXzCk6MurM7ALobAZA/BnzZTMj5FJu1n/V0B0a07E0IYPE7ezv+A1qvKhaeGHacRwko9JVCSmxZRw7afP7KwUMN3uZeQTFrNHTUjeOXM4JNWDK3V9QqzZsQBMUTtqdeZNHADE= 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 12:27=E2=80=AFAM Nico Pache wro= te: > > 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 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 *test= ) > { > 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. > 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 *test= ) > { > 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 *test= ) > { > 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 *tes= t) > { > 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