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 7CF25C4332F for ; Thu, 14 Dec 2023 21:25:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DA9838D00EB; Thu, 14 Dec 2023 16:25:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D0AF08D00C7; Thu, 14 Dec 2023 16:25:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAAF68D00EB; Thu, 14 Dec 2023 16:25:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A51088D00C7 for ; Thu, 14 Dec 2023 16:25:48 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7C0D61C0A71 for ; Thu, 14 Dec 2023 21:25:48 +0000 (UTC) X-FDA: 81566705976.26.17AF3D8 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by imf11.hostedemail.com (Postfix) with ESMTP id B4E434000F for ; Thu, 14 Dec 2023 21:25:46 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gpqTAWrk; spf=pass (imf11.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.216.42 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=1702589146; 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=KxuQnaXteQq89l339+5l0KY/hocadQszL6EzwA8eJ60=; b=cA20B+GqN5JHKq7XNiaU8D9auJIOqqNXJ4HCUdOWngu4vK04mHsFQBPG/xBUYnQT5bgUWs MvKVH7y8r2c75OjcwoFZnZU2n/49YgZFerWnrIMl4Ap62g7naPxdg+7kmGmAJdPRXxkT+B /csU0cKb26tS8e1Bq3CXzxzNNg1DDAA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702589146; a=rsa-sha256; cv=none; b=rxWo0ON43nrnilxY0xXhbMxcMnyor+8qeccwIeueObJQJsL854W5vRgAkSLL7oqWSrDd1f wr2LQjKZ9o0KpzogM3ons9kkPnlenlV78pMqdupx6cJlB01BifBq9aiSxqvM9D24EO8fqx BjAwxTYwlljuJatDlXzW9wqRK/rwquA= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gpqTAWrk; spf=pass (imf11.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.216.42 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-28aeacb2dfdso1584551a91.0 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=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=KxuQnaXteQq89l339+5l0KY/hocadQszL6EzwA8eJ60=; b=gpqTAWrkt8YgtvNEWl6v8KtaLpRvkOgDiJ6cSCZytDeGq8kv5jzmNja6sdzyJaDUyF v6uZilgRd2SL4GLvlkBkJw24bBji1l6HeBEaSsDSpqes5JHXIiDOOZz5a4nbEAvNuOJQ +CMNqrcBuuk6u1BcnCP8NJNdenxUzBRTbGIlsg3dhAvk83nbNACLr5/DMPHvGCvMamJL Kl2MTARlD1eYqMwG3gG6blMe4vX0LoFtwk83kA8rnHuelZJbKAK7LvEJA9AdGkYk33fD ksAfCs7K406BXipM/Jv59v8s2GDxEdGl0Fe7gaY6s2k59EAnj+CTFmG+Tk90CGBOtSW6 lMSw== 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=f+JPcTJIGD49b8z+f845dNoMELgwRF15lm2Ty+/Oo15is6pfSxMk6QH9L+ygZGtsqq 4E4Re+ckPLXfXTuzgJd9yy0utD9GSV/E5Jk3ecPaTv8dI0wHwXJetIelCyW+4SUDcOmI 1MyGJL+NcxOty2c5u0yjiFHboClNLYBjr1TRQ++DTnsfW/jG+nKoijlqeejhBrzzKwCF rjC1FjU817z6ZcvSJrodMf/ME/KCRBwwCqAvtsw1kG3/fMEZw12vjS9ptjzz3xQ3bE6E G9lW7Z2zHKjYKOLnjFhb1hqQXSxgHZIlGIaNIN+/NcEPyInb5jK8D7fSYXfiscWC3EfT 05Dw== X-Gm-Message-State: AOJu0YzqCkCiZvjKjNGYdw8WgkAt+PmtnNYgv3wu1W2k1RJGSi5TYMkm nV8l+9/DFQB+n9VDBi6SjzgrJAFIBXAdK+DphxI= X-Google-Smtp-Source: AGHT+IEz6Oc0qDl/FTiX5clWOZpBKNwxvLdeqOc87+NcfBi6p2Uq2y1i5kjm8lRQfMFKdMbBBNc++a/Sf5PMbwHOQt8= 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) 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 X-Stat-Signature: fjtw6ndd68bafdmagd86ghpbzujh3o5z X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: B4E434000F X-Rspam-User: X-HE-Tag: 1702589146-497584 X-HE-Meta: U2FsdGVkX18U0JbInpwutXUC1uZt0wMMsakW4WHNwbjMQDPkXHildkx8EVELVJ8L0FQSHfGrhdJjIKlwfvhvJluP2eVDfR53p78K1JfLmOSpc/gL6mZ7w+CndBEVCY6trSx6q0rK/8eR5F2B9tTKebc0OD4F6XcqN7o+IvXtrlrfUShRq1xnLbOkNY48vsmuZWW3/zKrcfZRcD5fUC4arzQM6dWS2PY9i5G4ej21lhnrLuJbbffFAJufEJSHvy4GFUPl2AIvWY6cPwxtkV9KM7pNbd3AzaGmeVimmqf7U5NgW+MiFSa2yltNXvxyPZiaEV5NYdYZkOXtHlUSGWRsGmHU4+h6a8uKyCPBABgsZFxVV5lzZJM3F8kTy7uqRo+FPzK0Iy7SMmk6kXOVn7k/TRUKRBYg6rIjEbCEmGi71kI7U9lxbYzxNZMmbDdBv16fJI+NCEZ7gX04F/teHz0NKfUBQ8IlBI2qIV3SuR/sJISnLSUZB/hbhQj3HwLg5Pi9GGxAb2MCFCbgQXfrk543TBRGIV0z76Q9VjlQkzlRWlh5Uk4faN3WZiXQSSFntRc+Q3CbdUBtu5XD0STlG7M5KPvOLwq26W4ykmHee5Mgnx7Ov0IboXI4AIuGF8uLcxV5zUMu9TUW6X7+0I/CJUKkIsVA1DID5jO7Gapdd/yeTlh5+hy6tymh/vzf3Aur0N8v/TwC7ppdxfaM+fBzjkgoNQbm4ExDTDWfsffNVXok2Pxa2pyfvQc6k5myVZtGZqIe7QrJrAzF3jDCMgVI8Zk61c/KbkhNip5VIoteOV12D17dPKjdLbI9cJVJw6FqPhzG6lckkDz5S21iSRWqRQHhjRgIxZAiqtcJDSrFuSCHKpJq4DrnaoPIp/JOSrA7sQR7n1z4cWQiy0Fq8f6RQhvR5k4XARN+4zh+CiV1huRygGuEZztNwafuvkrJtRF4lt2D261h0N+ZER7G0lYV443 6RXRei07 7NcjTj18DQbK3N6mV/8OB1ypn1cKlpx+IWAnjzqbjWfwhzMByctvx13NMeYWLwmj9XsLxRvAXaxqLA4Zra7ZSVEwlmQECUrWqsUILSGypWVZ/buYDpIq54ZJ1RsoZpMwB5s+OXcVGD7u2M9MMNYI3oHw5Wf/o/xkmqHN/myW3VyRmTLnbCSFx4k58dFxbq+WLPr/Gji7YXM1d44g/UuVvqxtW5wg3gieK8qYUpg3IB+n1yRgqKbvCICEMeouLxzBojNhyk2dwvg0a83VTuGtS6MXsoV0qkD9t9Ys9BdAKPk7R+fw3DKZarUf0yZh9auKn4CPuyNjJdldoNDXK8KNtB1pLqggo4fYMhUtZ9iSoZWOQoHv/GqTIsVg851tJ5eURH4rqq58f1nLIpfLoIkOKESbQHSwYspSzebzvsNW2hgT3/GR48pfc+cb4lsTcyYbNBjdi40uZfpvOa86h21xuYScUxxBVBwPMxZ2zG+nx9t4etLvF/veXyYzUXLoPMGrf4arO 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 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!