From patchwork Thu Jun 13 15:34:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Leoshkevich X-Patchwork-Id: 13697126 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 3C602C27C4F for ; Thu, 13 Jun 2024 16:33:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA4E36B009D; Thu, 13 Jun 2024 12:32:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A51626B00C3; Thu, 13 Jun 2024 12:32:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8A3CA6B00C4; Thu, 13 Jun 2024 12:32:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6287D6B009D for ; Thu, 13 Jun 2024 12:32:59 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 004E6A0260 for ; Thu, 13 Jun 2024 16:32:58 +0000 (UTC) X-FDA: 82226409636.18.E48A17D Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf02.hostedemail.com (Postfix) with ESMTP id 6A56080002 for ; Thu, 13 Jun 2024 16:32:53 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=HmIS1qUj; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf02.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=1718296375; a=rsa-sha256; cv=none; b=OYjkw5V9r8TCswcWs7tqZq1TUL8XC+pOrgmdlXrfQ+WJljrDfEm+PNGmBELND8+n9Vpaxb F+WU/9YUCYGFvJH8+ze0vwUKlC0VWXajMC6Mh81St7INcMPt32gUsTIgj2/TdB6ExBweNp RZdW3/x68qWUJFKwjkig/ferDa/ivi4= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=HmIS1qUj; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf02.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=1718296375; 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=Lf8JDXEAibfeu4y+WuUMeyCObr8U6xtLlRth+wjWPFs=; b=bvSZFIHtrKyCAqDnUeUGQGS1279iBBMmHk7EN7Vp/p1nv36FClc3F8r9b4xjmsJBU1geJ2 d14prPYvkh/tAXizPse86e5HQAdtHzTTD2Q6/RgbETkvPsIefBr6bH0UmGfIVnsnh3RtqD 7yPl7TL3i4jMhufkiOny6drnVaprj8c= Received: from pps.filterd (m0353726.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45DFMPaL026307; Thu, 13 Jun 2024 15:39:58 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=Lf8JDXEAibfeu 4y+WuUMeyCObr8U6xtLlRth+wjWPFs=; b=HmIS1qUjW/tRR+bUEdy5btx3OQgyr umdrhVFIfANsPUb/RDv6yccWECWCTg3jiyd0kfqnSYGkFpfFsv9s4V2u7i56WcST tSTHcTxYUP89Q7DgnXmqxZtDuB0Vrz0ATe6cgaHmz/mtHOxqruuYSB1ifx+tOnPX YUFpJfpCQPQDMPBPwS8D4bTmvKYt+oFhgkZh1/W/PxETnGsSWeOv7EGGlOUtpXVJ L9XYev+jgYLk0OqDqf3goL0ed0TtkcGlvuDRWpg4sNdfkpZc7mcFIOJguQLhj7F6 8qI6n1IcvXQdSHeNvdKBKYnr3b0gTZ9S0TYiOWdev5LpqOBFNwgxFK5+Q== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3yqq4rt37g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Jun 2024 15:39:57 +0000 (GMT) Received: from m0353726.ppops.net (m0353726.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 45DFdvZk026874; Thu, 13 Jun 2024 15:39:57 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3yqq4rt37c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Jun 2024 15:39:56 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 45DEjjfs028690; Thu, 13 Jun 2024 15:39:55 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3yn1mus9ga-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Jun 2024 15:39:55 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 45DFdo1k49086754 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 13 Jun 2024 15:39:52 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D49042004E; Thu, 13 Jun 2024 15:39:48 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 614DE2006E; Thu, 13 Jun 2024 15:39:48 +0000 (GMT) Received: from black.boeblingen.de.ibm.com (unknown [9.155.200.166]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 13 Jun 2024 15:39:48 +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 v4 29/35] s390/mm: Define KMSAN metadata for vmalloc and modules Date: Thu, 13 Jun 2024 17:34:31 +0200 Message-ID: <20240613153924.961511-30-iii@linux.ibm.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240613153924.961511-1-iii@linux.ibm.com> References: <20240613153924.961511-1-iii@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: pD6uyOhh-bdrq5oWD9AJUmqZbuVWYtd9 X-Proofpoint-GUID: hE3He5xumiJgo0Zbuv3p-52CPM54okmR 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-13_08,2024-06-13_02,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=697 adultscore=0 spamscore=0 mlxscore=0 priorityscore=1501 bulkscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 suspectscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2405170001 definitions=main-2406130109 X-Rspamd-Queue-Id: 6A56080002 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: ztkmgrozgjpb44n5wue4fwi784qzcdru X-HE-Tag: 1718296373-448366 X-HE-Meta: U2FsdGVkX1+SzPKAzi5w0JSlQmgV3XygKRxMqarOzq9v46TAGOd8XkHFpxDBoWDCGkFmluUYBPY2JGBuXYH4tRYeSNbo2BrTKo3tLAU36nYMGxkzeC0F7/AJ8pcnoZpgBxI4Qp7Xgrvdk8Eu1nwAgqr9tpAEzJxAUhdfA85oGu+GdQvImRkt/soytT1uPdzhiLWdeKdZNZ++md7z3JZKFpE27poo0mKLmfnkkQZhMojB9DiIRgdtyFgrerA6HsXsAvzYj3Z2ti+6otVPL2NiahrO2cIpa6BmT1H0QIwcpJ9XqXze8ce46DfD1Dq1cFSJkoiaUyGPhgDt3gj48ncl/YKm3VoGG+fQunutPkfkIQNDtLVOLXeG2mtYnXV9WFL0g1R2G4M5aQdkAaOal0OMZNJt/eo7zsV/eGZkuoSsUdlLJwZacchdQavL9JrqzhnCpZKM/BVIzDXpVPf55MQT3chY1pf46Tw9hUUSKyoIFclGgcHaG/IIP2K1nk2cpSkLoyDx+X2jjYekJoaU/UXj7/ojMJf8Rn9ACMac90IUYBM/6lIbYn9K/6kYepNMFcSw4gWyd5WXTywQHjISOXZi5Zxn3bbwGzbWm7LHbBrgbLXOQvzxq0GLJx0n7CIOir/3KC1Os6tua09GxRtURdJpa+o1eqgl7FPGJW8875Lxio9Qa6LL1wRifsInNaGrbzGfgLb+ikW3YPQxDi3fD1yUQRZJwkY6nOWc1H0aBetoGVuCEPS+PozYkVmFb+ihtpBR76PeDsGcmBHjZfmtuuSUW9BbgnDRvIGVEZtTqDgqQBdbsX4CUXCtf0cJcWElPiSWB2hpgICHHAYdMJUuuGKfdEdIUOqo0wrTGGzOQZDNudlvOi1ypkV5S5Z9tiVIBiNDMyL69JKwF2TwWe9eRrA+w9kOV0etDTNs/BNwqc7OkaQytTw8mdGQ0ndxvzX+TjFu8Iq47Lq8atxcIHfoPU0 qpAQMrwG OmYQHDm9aXa1cOIT34EH7XSM+Of5KR1O+kJ3juOSnH70QQ5F3m2w+00/7iwr3FiL/Z3Twke2g8tfPsQhnS1QQ7gVRaXfanguoOm5ocoaPKkdg31LYJw+7QQpRnWjBuLk5uMwespLbUZSzQd7cUXm++ih6gSbHMy6ODh0SENVPppCjof14jOjDbp5t75cVViLn4AtGg0KLj1DM3xGm/RqyNgzWSywgB02g2IBtrpAVMBv4F3OwfWpIKN8cQjjRrbSvZRRHQoQKJHlbVDlSt2xdHGeWdVgjMktLVs0HYBp5+JeSjsmnfH/y/NzQQuUqcrBk8GB4Ho6ZgfAaQhcjL1eNh4HxqlI76drAhrN9LSsTS5vWOjQ= 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: The pages for the KMSAN metadata associated with most kernel mappings are taken from memblock by the common code. However, vmalloc and module metadata needs to be defined by the architectures. Be a little bit more careful than x86: allocate exactly MODULES_LEN for the module shadow and origins, and then take 2/3 of vmalloc for the vmalloc shadow and origins. This ensures that users passing small vmalloc= values on the command line do not cause module metadata collisions. Reviewed-by: Alexander Potapenko Acked-by: Alexander Gordeev Acked-by: Heiko Carstens Signed-off-by: Ilya Leoshkevich --- arch/s390/boot/startup.c | 7 +++++++ arch/s390/include/asm/pgtable.h | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/arch/s390/boot/startup.c b/arch/s390/boot/startup.c index 182aac6a0f77..93775142322d 100644 --- a/arch/s390/boot/startup.c +++ b/arch/s390/boot/startup.c @@ -301,11 +301,18 @@ static unsigned long setup_kernel_memory_layout(unsigned long kernel_size) MODULES_END = round_down(kernel_start, _SEGMENT_SIZE); MODULES_VADDR = MODULES_END - MODULES_LEN; VMALLOC_END = MODULES_VADDR; + if (IS_ENABLED(CONFIG_KMSAN)) + VMALLOC_END -= MODULES_LEN * 2; /* allow vmalloc area to occupy up to about 1/2 of the rest virtual space left */ vsize = (VMALLOC_END - FIXMAP_SIZE) / 2; vsize = round_down(vsize, _SEGMENT_SIZE); vmalloc_size = min(vmalloc_size, vsize); + if (IS_ENABLED(CONFIG_KMSAN)) { + /* take 2/3 of vmalloc area for KMSAN shadow and origins */ + vmalloc_size = round_down(vmalloc_size / 3, _SEGMENT_SIZE); + VMALLOC_END -= vmalloc_size * 2; + } VMALLOC_START = VMALLOC_END - vmalloc_size; __memcpy_real_area = round_down(VMALLOC_START - MEMCPY_REAL_SIZE, PAGE_SIZE); diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index 70b6ee557eb2..2f44c23efec0 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h @@ -107,6 +107,14 @@ static inline int is_module_addr(void *addr) return 1; } +#ifdef CONFIG_KMSAN +#define KMSAN_VMALLOC_SIZE (VMALLOC_END - VMALLOC_START) +#define KMSAN_VMALLOC_SHADOW_START VMALLOC_END +#define KMSAN_VMALLOC_ORIGIN_START (KMSAN_VMALLOC_SHADOW_START + KMSAN_VMALLOC_SIZE) +#define KMSAN_MODULES_SHADOW_START (KMSAN_VMALLOC_ORIGIN_START + KMSAN_VMALLOC_SIZE) +#define KMSAN_MODULES_ORIGIN_START (KMSAN_MODULES_SHADOW_START + MODULES_LEN) +#endif + #ifdef CONFIG_RANDOMIZE_BASE #define KASLR_LEN (1UL << 31) #else