From patchwork Wed Jun 19 15:43:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Leoshkevich X-Patchwork-Id: 13704129 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 1977AC27C53 for ; Wed, 19 Jun 2024 15:46:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2EA9D6B02C9; Wed, 19 Jun 2024 11:45:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 299976B02CE; Wed, 19 Jun 2024 11:45:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 09E8D6B02D0; Wed, 19 Jun 2024 11:45:57 -0400 (EDT) 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 D2A386B02C9 for ; Wed, 19 Jun 2024 11:45:57 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7A31CA4065 for ; Wed, 19 Jun 2024 15:45:57 +0000 (UTC) X-FDA: 82248063954.18.3DD07A5 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf07.hostedemail.com (Postfix) with ESMTP id 1A30F40018 for ; Wed, 19 Jun 2024 15:45:54 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=SynliYum; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf07.hostedemail.com: domain of iii@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=iii@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718811948; a=rsa-sha256; cv=none; b=MYXHn2aXEt+Kn01RRz/26x1PlsykRVVdt0YI5qxkD8t9pDAZdyM556Vevu5Mz9gcRuZNhq 2voMGZA7MN28CJpKTVMNbsqk++ii3Hy+52dRpAKamXjqymDFqs/mYXAC4iktEJXoIuteYk L52bmaZFTsa06F4sMhy1BLqgqc9LZu0= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=SynliYum; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf07.hostedemail.com: domain of iii@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=iii@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718811948; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=sjJ2GTGv7V5yiCtYJlQAhchvuDeCI6GGTrnLDfTIbQA=; b=JETNfU1wkkea4p+sEWRS3kpooTVaj+nb1dLcbQOC+DSrIilHfoNL5AzlACjM/56BeVBSHP HZENxsuOg6GliBJn2yihYXoqWHfWCYosHkPz2FevZI1xIzBmraHKmgDU8kFeVpXTnylIIe mSmPYSM8H2zzR5WwhpCpZUo14/gA8YQ= Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45JFSRAB028320; Wed, 19 Jun 2024 15:45:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=pp1; bh=sjJ2GTGv7V5yi CtYJlQAhchvuDeCI6GGTrnLDfTIbQA=; b=SynliYumLzy2hFtNphtbUAwTEO5T9 uvf9I9BZ1YXbwpGKZBrAA6v9A2f0aUZoU/OshJAqxfDyPX5CtH52TxZTG7kJ3QQQ rl3aVnIk57SlALUR6eHmgYN+VUDBl0M+jDnbY46Jyot9jE/4aV+0kvbX1zwpVlwt 5RM/1l6NcEKcZkuZ9sU7gHSoxVpA7V8YXq1A5hm6LLJ+ZKsr00BEHsAXcObRf9Ir WjlPR39oEh6jChZEOhhpvpOunCKGHpRidMqqjD46Tml11nA31veDgDiYNYT0eUyI Kp/PIxicr8wsKl1+qGUW8vty7eE+EgkYT6DH18WH9L1fqoxrMLrUekRow== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3yv20g81kd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Jun 2024 15:45:47 +0000 (GMT) Received: from m0353729.ppops.net (m0353729.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 45JFina0020883; Wed, 19 Jun 2024 15:45:46 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3yv20g81k7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Jun 2024 15:45:46 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 45JEsEuA009411; Wed, 19 Jun 2024 15:45:45 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3ysqgmwmmx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Jun 2024 15:45:45 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 45JFjdck35258910 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 19 Jun 2024 15:45:41 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C685620040; Wed, 19 Jun 2024 15:45:39 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 77BEE20065; Wed, 19 Jun 2024 15:45:39 +0000 (GMT) Received: from black.boeblingen.de.ibm.com (unknown [9.155.200.166]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 19 Jun 2024 15:45:39 +0000 (GMT) From: Ilya Leoshkevich To: Alexander Gordeev , Alexander Potapenko , Andrew Morton , Christoph Lameter , David Rientjes , Heiko Carstens , Joonsoo Kim , Marco Elver , Masami Hiramatsu , Pekka Enberg , Steven Rostedt , Vasily Gorbik , Vlastimil Babka Cc: Christian Borntraeger , Dmitry Vyukov , Hyeonggon Yoo <42.hyeyoo@gmail.com>, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Mark Rutland , Roman Gushchin , Sven Schnelle , Ilya Leoshkevich Subject: [PATCH v5 17/37] mm: slub: Disable KMSAN when checking the padding bytes Date: Wed, 19 Jun 2024 17:43:52 +0200 Message-ID: <20240619154530.163232-18-iii@linux.ibm.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240619154530.163232-1-iii@linux.ibm.com> References: <20240619154530.163232-1-iii@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: CpSafJOwnnqLI12HaB96v_EEXsdBrBUE X-Proofpoint-ORIG-GUID: 94rzP1_ZD6iOjx-buxAnf6OZgFWnBex1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-19_02,2024-06-19_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 clxscore=1015 mlxlogscore=999 priorityscore=1501 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2405170001 definitions=main-2406190115 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 1A30F40018 X-Stat-Signature: whozgm4m1a4ag95jod3rhj6fqxfy191d X-Rspam-User: X-HE-Tag: 1718811954-784363 X-HE-Meta: U2FsdGVkX1/Ho2XlSEPqGCwETSlkWoXwaSgY2ZaqVxB78RO+J/hSCWwU1gqYOK7KcgJfEAXECsKt6iIsymsrmYPE15dsDUkD6XyURk7AOk6lV7tnahc3JaF2B8iXPr9Ldh2eVcex5lheJ1jkRuIHu3cyoqbR9/xhffGLrDMkrNoUqQ2Ij4GPjcPCEedGyqTNVUNmPUxlvm69CcZBsexOVY122UpjqPy5TjanGKiDmwloL5AcnqQK7P71BLCjVBZ/tLfQLGStr8qk147z99XuiZlXRMIEPsXCNlzOLvxz3nnH6akx6s7atEsRHjqhGyRAUuTD1vly2et3GkjIXhtIaDvpD7A2TFS+mMEfabwbKtLws1bs/Az1EwDvkSK7QkOw6GwWJhAO+/g2lnumDo1HnBi6kLDZlxQYQtNFJ2lgYRgWKoZqDFkj5ZjiW3fY7M/PNh+nOH5Z8zVeXBHuVx8DqH5vbtu/9lFV6hq4zDAQgw8gVtv6Rc2mmXDU8eyvsilYpOZRiExkqhxpO5w6K/jks2xCZ1jlpbUsTKsd2yprGQbRfMtQNV3DywTn0DqjQ6ym2LZvpEUf0fao6WlJU1KGItIWz+tvWYxjpv5dg7cKqbC8xbltgaTxPsPD3YVLjJL3yRWj0v/1JYt0wZw95sv9yp0xbNbLE368MyVdlEjXa+3oHS1kbEHYmFFAdHtbZDCZ1eJDbvNQZ6+YTf80U16Y83svpdiRLSvtAHKs4sGxPtFYgcHgkelEHctQpZX9urB6R5aP0+UXf5KlzLIt9O0ndU/86hI/n6ffrhxSJecda8Hw8ubkO0vRLKGH2rDX2zH2CkbF72Lyh527mZoqep8uE8f/ggbCwmb84yQmBPshOD9DYmUy06U24MHgTA44sXstCnhi8yEQ+23OKpRzgfSEDimE8bpusbxU+LvWzmGQj41KJF6wfnW958XitoylZrnyYvp2uDJiGY9yQ7qWmwI 0uhDLwhH 91SjnX0kb+/deZQ3DO0n0vujfEyJUXlIg1x0KNHVCkjN1Wq6/ZEb9xk3OAwNqiy+8K7RYql7gSEs6klYeCybAgLfi0OHJCyZv2c3kCJmuoFuq0j/VC1EKtTX+3mwKXXj/F6AE63sRDUoljBHcTmI5C57Hcp0i1lP7DtAAdkrMbY/lUqxhh93h3P+IBWJawWz+chRYvp4eXspVEwTbJIIGQrqyBoG6R5I6HqOsNMR5xvb80wJu4yzjcZ+t+pYbGz5IeBw4fwNksbd5MFj1UdjKO3mQ6ZGSf3QHcftIuGhFEcDy2ZFi+5PXtZk+zlV8m90paMU0IQi3TlG4XypMbqpUY3Tczg== 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: Even though the KMSAN warnings generated by memchr_inv() are suppressed by metadata_access_enable(), its return value may still be poisoned. The reason is that the last iteration of memchr_inv() returns `*start != value ? start : NULL`, where *start is poisoned. Because of this, somewhat counterintuitively, the shadow value computed by visitSelectInst() is equal to `(uintptr_t)start`. One possibility to fix this, since the intention behind guarding memchr_inv() behind metadata_access_enable() is to touch poisoned metadata without triggering KMSAN, is to unpoison its return value. However, this approach is too fragile. So simply disable the KMSAN checks in the respective functions. Signed-off-by: Ilya Leoshkevich Reviewed-by: Alexander Potapenko --- mm/slub.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index b050e528112c..fcd68fcea4ab 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1176,9 +1176,16 @@ static void restore_bytes(struct kmem_cache *s, char *message, u8 data, memset(from, data, to - from); } -static int check_bytes_and_report(struct kmem_cache *s, struct slab *slab, - u8 *object, char *what, - u8 *start, unsigned int value, unsigned int bytes) +#ifdef CONFIG_KMSAN +#define pad_check_attributes noinline __no_kmsan_checks +#else +#define pad_check_attributes +#endif + +static pad_check_attributes int +check_bytes_and_report(struct kmem_cache *s, struct slab *slab, + u8 *object, char *what, + u8 *start, unsigned int value, unsigned int bytes) { u8 *fault; u8 *end; @@ -1270,7 +1277,8 @@ static int check_pad_bytes(struct kmem_cache *s, struct slab *slab, u8 *p) } /* Check the pad bytes at the end of a slab page */ -static void slab_pad_check(struct kmem_cache *s, struct slab *slab) +static pad_check_attributes void +slab_pad_check(struct kmem_cache *s, struct slab *slab) { u8 *start; u8 *fault;