From patchwork Tue Apr 8 16:07:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Gordeev X-Patchwork-Id: 14043321 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 CE7D2C369A2 for ; Tue, 8 Apr 2025 16:07:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D458A280005; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CAB3928000A; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A11DD280005; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) 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 8047428000A for ; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D25DF1CCCDA for ; Tue, 8 Apr 2025 16:07:42 +0000 (UTC) X-FDA: 83311357164.24.05EB1F7 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf27.hostedemail.com (Postfix) with ESMTP id 7C2DF40019 for ; Tue, 8 Apr 2025 16:07:40 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=YCQQ+9vP; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf27.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744128460; 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=CGQhd4fZt/lPh+ygmPdHCsaE3Xf5iXCG6Bx4it5RIf0=; b=Qahi8vi+4Vf71MTa9JU9bb/FYxNZU4kIayw9hyKsATZqIUWpxWLYYOTd4nAnCDhDdotmQQ KokjyNbaxe0D3qMIZBJVWaVXU7LNgULT4/bfh1cgvbRQcef4Ga6OEoK7oTWKqEJAFRJlhC pkL4icSlB7xGTPYj99BaTuRuS/gjF/4= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=YCQQ+9vP; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf27.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744128460; a=rsa-sha256; cv=none; b=XtU3I/zS3TmiXeUdEqk3TfyYc5Ly6d8jkgIFPyO0Em0F1q26ajso1N7aBv6/tj8bCboUWR fKVinhxZ9G0QV72YJW7/SaU5aE+QjlrynpwDvj3kH93Yd2BK9xdPJKEChaKyrPMav7Pajt ahrdQtz7X/iS1199lx8yElvwwsXIRfU= Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5388e1Pf025362; Tue, 8 Apr 2025 16:07:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=CGQhd4fZt/lPh+ygm PdHCsaE3Xf5iXCG6Bx4it5RIf0=; b=YCQQ+9vPjGdrkuyMR0sX9ZdoBzz5OGLWG Q10fUuKgJYsSC2+P1N/Wwgsp1VEqrCXtjLkOYClRURt5V9mdFdmv7IXxtkxq3MDs j8UsptDFv8dpLYZdz+WDeMOkLTB4xU/6RTuNq+RE2kahacHg8Qh3ovTdBJ86geYt ENGIxAALZVml2Dasm66zoaezHpG4uE5uJaxrIqy2HlOlFLYTumETwzPShL2sbo20 i7LcQ4svL/x5R3ptcW5VrnBMR3xWrActkYzv7FtLij4tzggT5jv8eCjnzzKbtbUl 7UeyVUxkgPI3r+IbiiyDVlXcoEfZqjTNOi5kvTU431AfYvkpz7a2A== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45vnvq4kme-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:36 +0000 (GMT) Received: from m0356516.ppops.net (m0356516.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 538G192m023979; Tue, 8 Apr 2025 16:07:35 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45vnvq4kmc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:35 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 538CaKov013932; Tue, 8 Apr 2025 16:07:34 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 45ufunkd24-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:34 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 538G7WPl33554826 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Apr 2025 16:07:32 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BBF2220043; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A5C8320040; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTPS; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 55669) id 4BAA7E15A1; Tue, 08 Apr 2025 18:07:32 +0200 (CEST) From: Alexander Gordeev To: Andrew Morton , Andrey Ryabinin Cc: Hugh Dickins , Nicholas Piggin , Guenter Roeck , Juergen Gross , Jeremy Fitzhardinge , linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, sparclinux@vger.kernel.org, xen-devel@lists.xenproject.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2 1/3] kasan: Avoid sleepable page allocation from atomic context Date: Tue, 8 Apr 2025 18:07:30 +0200 Message-ID: <2d9f4ac4528701b59d511a379a60107fa608ad30.1744128123.git.agordeev@linux.ibm.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: References: MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: LtzH8ivnniEqxi-8CvOTdzmx58H27VfG X-Proofpoint-ORIG-GUID: DdE36rmI5XQZ4C_Epq-fHX139ivWx26P X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-08_06,2025-04-08_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 mlxscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 mlxlogscore=866 malwarescore=0 priorityscore=1501 clxscore=1015 bulkscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504080110 X-Rspamd-Server: rspam01 X-Stat-Signature: 8cok9r9usds6tbirb1yjo33hqrpqcfp4 X-Rspam-User: X-Rspamd-Queue-Id: 7C2DF40019 X-HE-Tag: 1744128460-480558 X-HE-Meta: U2FsdGVkX19oFoe1XxhUbjRsd9pGKX08Wv0bGuIJrz5KQDcF7TKLzeSuf6CscGb0FFrCgyYoQnq5Rwa0gFHH7Yzo5Jx9U4Rs1AcGJUwiZV8ac2TYMgoJnip7m0SiwNra5I7xW0AFLZIlO3drFwkKNfk1ZD87KpDKpTipha6plkpv4V+HsevszVYnPSrQxwsBvkg7pJV+AKf/6/4xTyP2XGN8lG+wI+CR+HONEEbx7H7Dz1tfBDjrlLHP2sXBrNJUNzIpOiavk51yttAI8cIa3OXujxyCFzM3dfpeBxdvRJYYiUaOljtXK+Pe2s43qTIblZIrcSZ/DZcj7NmI3yQrNenCwM0nXY7jTNLLFAzab0sHiqAu/H2Ypy3hiRElh6m6YAP7XUeEE/35L0eIsxEVMHB9w6AVZTUwQKU2Io6Py6CwX8hwizW7xL1yIZ6HyefYmr43Tv5yexwQonTZrRRi7vJazicptb0VmIxRu0TI1aCN2u/nbc74Uvj6JO5xZcqbhkdnHH9Bim24fP8PRrJB1SDDz63weMxx9jvoWGmoJTN2Lq22Ie6vRUKBtLMHvgij6v5rq/I4+2aZAZL1Uri7nCcua1FB6pFPil7e346vOO34H4Y+eTL8lQG2TPXZdKe1i59CMnUiIxKvtKioQwror8dI+paF0OJK/QEAZK8OrBvqqsQ9iH6Zj6/oXlK2rlIM2QDxyUnltzeDnC0xwQqOdOzQ+nDnjTyBVXDacGJtwJCCkv+aMJT/EMlpfzJmA6dfe0INb1U/ALUGIerWuESWEkA2+XljDU1/fYBG19D+a7rHZv/ZvyYvFgjMkTn+fHy5T/D3utG044XY4VqxyUDkzRRqOIRMd9qQ9/B+veuNWD5J6ySzX5WHz/kkynex4vjquDDt3Xr4MjBuGmpOgZjKpOo297TWPnv5BEhinn/jwPpuzBab/PzHmIwve9Zn2EeHZekVYpIMCJcgzLsjbe2 7yyqERsI HUcjSYAOIDsKYw6YWJsmEoee74OzI6A1cLbsD3Jmu4cBCGAEUkG/ESrI9SvKgZZy4QP8lFU4WFD1PhJxZ2s5M+HGmdB4y0lwcvyWXgtdIJWfp3xkpvQ+afv7T72BdWwl5MldQfESbMWshqfVCpyYqxC//Hhb6r9HmXK7DmCKGpomo3QoDPlCVYwPKMca2JU1MAGWKR98kaCakIMlNHxSIoSGgo6ioPU9xuylUE+04AbOR4TWUR4O10jDD72Sv7zLbk75s0SGH1+sUg31V0Tz7Z6oDMcekV3TtztYNp8zgRw0+V2A= 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: apply_to_page_range() enters lazy MMU mode and then invokes kasan_populate_vmalloc_pte() callback on each page table walk iteration. The lazy MMU mode may only be entered only under protection of the page table lock. However, the callback can go into sleep when trying to allocate a single page. Change __get_free_page() allocation mode from GFP_KERNEL to GFP_ATOMIC to avoid scheduling out while in atomic context. Cc: stable@vger.kernel.org Fixes: 3c5c3cfb9ef4 ("kasan: support backing vmalloc space with real shadow memory") Signed-off-by: Alexander Gordeev --- mm/kasan/shadow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c index 88d1c9dcb507..edfa77959474 100644 --- a/mm/kasan/shadow.c +++ b/mm/kasan/shadow.c @@ -301,7 +301,7 @@ static int kasan_populate_vmalloc_pte(pte_t *ptep, unsigned long addr, if (likely(!pte_none(ptep_get(ptep)))) return 0; - page = __get_free_page(GFP_KERNEL); + page = __get_free_page(GFP_ATOMIC); if (!page) return -ENOMEM; From patchwork Tue Apr 8 16:07:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Gordeev X-Patchwork-Id: 14043319 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 6894EC369A5 for ; Tue, 8 Apr 2025 16:07:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5CFA5280007; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 58B68280008; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3F7B0280007; Tue, 8 Apr 2025 12:07:41 -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 21033280005 for ; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 67090121268 for ; Tue, 8 Apr 2025 16:07:42 +0000 (UTC) X-FDA: 83311357164.23.F3AE70A Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf01.hostedemail.com (Postfix) with ESMTP id 7FB8C4000A for ; Tue, 8 Apr 2025 16:07:39 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=tObfqwbc; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf01.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744128459; a=rsa-sha256; cv=none; b=43jo3XngUBDUzUdlfjH7owL5qoL8Zo9fCVLl+vLget3GLog0sRrFL9EVnM+jRI/1B2fyFh 9hx82v2leR9YLdYgcIQSOyRDwrJDdkbnVJ0irFxhkMTqaZIsbp0UL8/lufVJ9T7joOlLxU 7XXmsqr8TnhrKJ/w4B3FAnKfcQqYRGk= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=tObfqwbc; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf01.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744128459; 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=xkRr3rYpnf+evzsRvKXtHeEA6KSnGBV46B7GpE1ybMc=; b=BiV+C99LM6E3pbgwslvhqOQF+8d4pKUt0gNU/GBWK5HLF7xORwFhYwDvSOc96G12ueFXtR wrddeehEUm/dplPVnYy9m4ksnXC0mybdlNVWbQC90tSLMfYq6kubDVrAvOzY1nJkCUhh0L KTCwSDQNfQhWDY/6RY2+9TgbK1GkSe0= Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 538DNidV028259; Tue, 8 Apr 2025 16:07:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=xkRr3rYpnf+evzsRv KXtHeEA6KSnGBV46B7GpE1ybMc=; b=tObfqwbcUm2umQrlxe8oOYdzi1e0gQjiF aDe8g32J/reQTv52CrrHU7DoSqRqoHC/eOV5SgZSlBgUlqAYnSdM++/IgMp7n/cV bgkWR0rPlz0F8WdJoj4DFM38xD6xJmeWCRhyQ98SrUrzzh9YLCkd39fEWuX0PcMy euyfOwsFuQ6rqCSXBYaURGqJr8xKeZnkAiUlC4l236cVZhx+PvSC90bg4v0JQExD 5820Q7tR+S4eqPWfx18MOwO0o43pRNif9AsWMNrBMMcuEWT7+ylcsRTY4gA8LTe6 XO217yw0TDcXUi3Z3pEgb5YAA8sa7reYU2vZHGl6X3/hJDJ89Grbg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45vv6a3cmj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:36 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 538G3Tpb014440; Tue, 8 Apr 2025 16:07:36 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45vv6a3cme-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:35 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 538CRs5W013915; Tue, 8 Apr 2025 16:07:34 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 45ufunkd23-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:34 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 538G7WVI31982208 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Apr 2025 16:07:32 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AA33A2004B; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 94D4920040; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTPS; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 55669) id 4E5B9E171E; Tue, 08 Apr 2025 18:07:32 +0200 (CEST) From: Alexander Gordeev To: Andrew Morton , Andrey Ryabinin Cc: Hugh Dickins , Nicholas Piggin , Guenter Roeck , Juergen Gross , Jeremy Fitzhardinge , linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, sparclinux@vger.kernel.org, xen-devel@lists.xenproject.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2 2/3] mm: Cleanup apply_to_pte_range() routine Date: Tue, 8 Apr 2025 18:07:31 +0200 Message-ID: <0c65bc334f17ff1d7d92d31c69d7065769bbce4e.1744128123.git.agordeev@linux.ibm.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: References: MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: T7M0AXWlw4FgItjk33f-GC1E93-9rXMH X-Proofpoint-GUID: 9N-c1pIo8G5i8QLTXcZGYOAiygpOCwa1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-08_06,2025-04-08_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 adultscore=0 clxscore=1015 suspectscore=0 bulkscore=0 mlxlogscore=909 mlxscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504080110 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 7FB8C4000A X-Stat-Signature: 6c1ppmxmk5g8swqbuopme5no7ndoztqm X-Rspam-User: X-HE-Tag: 1744128459-388818 X-HE-Meta: U2FsdGVkX19z6vysZs05Z4vAfoTxTQXe8SRo4dCmBC/B90DZmQ5vPdUc9OyXiwbT8ogOHD5yKrIVDQNqFgXLyQPCZMDcb941q1IUWGMKmaCI/HouNOht1I9jrligoZfsyVU4+ppDwtoagTzxVaM8SYwyr8c5n+lAvxB8UZ4X13QnzhjtoeQV6Fe3OCDOBX3plorYZPRPDhI63Bqeq2WupegGKSCbBXlKgCJudO6E4EDdJcIQN0iEZUlplC70jlWaRR7DKj6QzfUqFhUc1bFKV7Nx/fbHHpZHkMKaJJiO08Jm1OGa9lS14igXe1wW7Ed4NInB4iPQS2UTyMFjxOdY1LpllLYyaY6eCFxW2o/k+JWCuYQqEElAzQK4GUJ9b6/OT1aN6+Ak8CJlhoFZ9i0Ucp6etyvMYfWytStNV4MnB1Mc37zj19UnW8AqCuxMROGjNjgCNkcpyTRnF6o1OVo42zf7Avox5MY/XPvepZeGY964SE8aw3QDVusyNB6ZFn5P1drGX8ZV+0b0TQT4ySwlUAf/fbR+Tj1meoDVNmf2TfzO8imiybjACRKUt07mGGRS85qWqyU27YnigUs3YGZPcIQB6KkgAt1JQdGfW8tR7nxgJX2772RmMdMVTe9nmcBYi36ZWBPoOKN2qblPw7ayEIZqVnfuvJR6cbIzNY9s1hHlrSzImxlrFdXTmPGnFYjYWPCrEszR1rcJlS7UvM+Fkhv4AFjoAryARkWanxfWhFNgOQ/QIVw1m1A+K7j2y62p7hvdWwkUhuMQVU9/JWntqJ2n0F6xs/reARRaF9flS/RORL9vLCmGahZqA2n6y4S36+n73b2OeAb/1PJcXpjuUqjsZfHd+WD07R99pK8JZEmPORkmW721D2rLWqfGmbcPoyo4W6NcSxtYARbIj6rg4MalGN9eaGWFsb5VqVOxV4A+k10BA1EnrKO0PscU7o9yGkR6PHXZN7uH4hYVeht uAfzwxB5 p5OdiTfKh4BRnSUY= 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: Reverse 'create' vs 'mm == &init_mm' conditions and move page table mask modification out of the atomic context. This is a prerequisite for fixing missing kernel page tables lock. Cc: stable@vger.kernel.org Fixes: 38e0edb15bd0 ("mm/apply_to_range: call pte function with lazy updates") Signed-off-by: Alexander Gordeev --- mm/memory.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 2d8c265fc7d6..f0201c8ec1ce 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2915,24 +2915,28 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, pte_fn_t fn, void *data, bool create, pgtbl_mod_mask *mask) { + int err = create ? -ENOMEM : -EINVAL; pte_t *pte, *mapped_pte; - int err = 0; spinlock_t *ptl; - if (create) { - mapped_pte = pte = (mm == &init_mm) ? - pte_alloc_kernel_track(pmd, addr, mask) : - pte_alloc_map_lock(mm, pmd, addr, &ptl); + if (mm == &init_mm) { + if (create) + pte = pte_alloc_kernel_track(pmd, addr, mask); + else + pte = pte_offset_kernel(pmd, addr); if (!pte) - return -ENOMEM; + return err; } else { - mapped_pte = pte = (mm == &init_mm) ? - pte_offset_kernel(pmd, addr) : - pte_offset_map_lock(mm, pmd, addr, &ptl); + if (create) + pte = pte_alloc_map_lock(mm, pmd, addr, &ptl); + else + pte = pte_offset_map_lock(mm, pmd, addr, &ptl); if (!pte) - return -EINVAL; + return err; + mapped_pte = pte; } + err = 0; arch_enter_lazy_mmu_mode(); if (fn) { @@ -2944,12 +2948,14 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, } } while (addr += PAGE_SIZE, addr != end); } - *mask |= PGTBL_PTE_MODIFIED; arch_leave_lazy_mmu_mode(); if (mm != &init_mm) pte_unmap_unlock(mapped_pte, ptl); + + *mask |= PGTBL_PTE_MODIFIED; + return err; } From patchwork Tue Apr 8 16:07:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Gordeev X-Patchwork-Id: 14043322 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 CE672C369A6 for ; Tue, 8 Apr 2025 16:07:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2EE4428000A; Tue, 8 Apr 2025 12:07:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 29D4F280008; Tue, 8 Apr 2025 12:07:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0781A28000B; Tue, 8 Apr 2025 12:07:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DA11B280008 for ; Tue, 8 Apr 2025 12:07:41 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EF99B595B5 for ; Tue, 8 Apr 2025 16:07:42 +0000 (UTC) X-FDA: 83311357164.01.09B3AD8 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf09.hostedemail.com (Postfix) with ESMTP id 7CD31140021 for ; Tue, 8 Apr 2025 16:07:40 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=rNlkWZXj; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf09.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744128460; 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=ow6t3aZjTh8zUSYva0I+1eccwoSgmKvfkvuHek+W7BI=; b=RM+YL79K9pn+k930OpYFN6K2xo+zuBBs3HShMQtylEqi1RTeBGnilGI7fPpUrzWyvl9vck qSt3pCv6ROKipTg7vN6uZhGek/Vv7sPzsGvi/bMyToZwJqfyEkE/mKp0H6UBo1u7ILZW3w HygN102PFUJvR49bzUnUHlboHhZrRKg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744128460; a=rsa-sha256; cv=none; b=42H/HXgDCRmsr4TRd1xAB+WH6ambTQ0pxUrnx6BTiBaOkxNqE2RIFpXyobcyzQrDhKhx6Q p2ZbGyxaUPLkw5KqD+H9FPOzWoVOVzxyQp88DJ0tRWczP8G0Kpbar5ohK45T8SLB4izQ5Z Z5dY+NLakOCQJG2XJLa5hQTQpyDZx9U= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=rNlkWZXj; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf09.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 538E3xau029563; Tue, 8 Apr 2025 16:07:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=ow6t3aZjTh8zUSYva 0I+1eccwoSgmKvfkvuHek+W7BI=; b=rNlkWZXjqNmrVA9DfqJ9qTqgEL8tDwB8v uW+rRoK5iANBpubG1GKB6moL8Y4rxf1/ciAdNCg7DM56snFXeq6UI27BGzCdiXoL Hr2JPBnmHtPqLjuZGH88qIcxX6n6fTG8p4+QuOCg9WyUsQapClXHAaBAz4VCbhjJ ChFNmfH4CzkNCe02vZlhygEXR9J7hifdORr/28Gcllu/FuSoK+QDhFbPQ7HoT2l3 g8Y/Cdw/tx32Fgkpts/Q5SasZwSNURS/WI0A4R0LnPV7CD9LTIe6eJvqHGND+b6c aEm6js3u/gkF2v4JxOC8NjZ+BFWMYfs0Eu9JU8hP/snzGwujEHEow== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45vv6a3cmf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:35 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 538FxwH6004506; Tue, 8 Apr 2025 16:07:35 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45vv6a3cmc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:35 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 538E2Kef018870; Tue, 8 Apr 2025 16:07:34 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 45uhj2b31s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Apr 2025 16:07:34 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 538G7WkZ17170806 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Apr 2025 16:07:32 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B38A12004D; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9DDE720043; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTPS; Tue, 8 Apr 2025 16:07:32 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 55669) id 50F3DE171F; Tue, 08 Apr 2025 18:07:32 +0200 (CEST) From: Alexander Gordeev To: Andrew Morton , Andrey Ryabinin Cc: Hugh Dickins , Nicholas Piggin , Guenter Roeck , Juergen Gross , Jeremy Fitzhardinge , linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, sparclinux@vger.kernel.org, xen-devel@lists.xenproject.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2 3/3] mm: Protect kernel pgtables in apply_to_pte_range() Date: Tue, 8 Apr 2025 18:07:32 +0200 Message-ID: X-Mailer: git-send-email 2.45.2 In-Reply-To: References: MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 6gWNv_Bw0XevSqtBIthyoWHVrcn2MvLC X-Proofpoint-GUID: -fZrXKHJloGCIvDX7whqAyynxCC3jswc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-08_06,2025-04-08_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 adultscore=0 clxscore=1015 suspectscore=0 bulkscore=0 mlxlogscore=779 mlxscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504080110 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7CD31140021 X-Stat-Signature: u6xm1qambktb1ma8ynxgam3uusq91dya X-Rspam-User: X-HE-Tag: 1744128460-820623 X-HE-Meta: U2FsdGVkX19RUnypuuPNo5XmABZag60Jsb0vztrGzDqYX3iWA7wPhGazOHgT+lcIHMUteCJxgh+5gy9fDjCddaXWhKxthH3U3xMX7/O+4IDBZMtFbVLSZhD6QT9A4VLQU9+fH0YuKCmD+FMhbNWXc+HPBMfNhK9eeMx8RN5aLEPsvD8xQFWK8mKbGjSrWy9ZRJGcP8qNeq844QGK3VQCqesZglJ7FNY+ddRTfXhJ9WcobSqolQVrdcULB75vT35scumbwYcw0cDffHj56pI7FZ1wlmJta25DfdeKZ6LH2WEhSr+n87vgKAXpD6OhwGdwB0RGBJ8gW8ASjLvfCU3PlURecb+zCqTsyZjB1iKpWQL73KAuA/wSn6IQRfzRYEz3snILxkJtWXgyuEFyjwUyeZPTCeT+slOQZ2f8ud5bfm0bgM21fTg/EPemSHYA4jXQZnF8PLBkFvHMCI4kkDZLinRn2LTWXtqN0OSrJ71DJWp0ICGZgMtnYh//woNFyeTSIOPflEaUnTAgYbXWnIjhQ9MD8ubDosu8eHfbqgJSgBIp1JTbNcHLYGpJ+i91wPh5Go04RU54j4sOeNibdPvOrNgEBZP4e+KU7x6DWpqqr1Qa+NQHzLE1L7W0XDnpC0UvpeUIVTP0jXZ+tpayJhwok5Q7LKR1fXnAbnhHqHnuu011K0GAILmg3pT46P+jzOQt13ue1zx5nRfWNUKMjmQjdQ4S9UWhy9AD9s1CVD/gTalpVVlMCffmeEnbiXMuz51D6ZdfmqB+6RBKd7DXY8aiSACOX8bxCeEHoWZ7Gl8Cd44jkrVz10gfhcL5aX2T+9QxEMPktVFpPg2L+JTq0mCv5PVC9z/EDP4osshyBC1f9X5wrsSXRYWp9neoREljSo5IsH8Z6Gwzox5yS4KaeRcaSgMZH3qXsL8j74d+HThXV/cFcCzENPC04IRXh4FZhSPNnZ5OOvRsjJhQ++X4L2O 7M8Dy5wt aJQK3vcZX3Ay03Y27/Ra7cH2M59ypEIByTvhaGH0sGeQTw9Cz49MXd2CNXBOwx1GK+Ku2/E2Cet6mibQ80OwATjD7DO6q9T/zATnLJbta54/BoXqjZz9CX6KfS1KofzBzM2ftvJlVF0BcQr0o5lRLFqpeZaoN7dv0OuIOM8g3uMXz3Vgl/RGbR93klx6Pg9bbZHiYThroHRvsU1/JhA/MYRmGAiMs+BaEe3bivtiUkA1vOoRHVoqLLEUgaHPfcuXvy5G0NQfw1vyXRMp8YL/0xmxVTawGewFH40livhjTu9/43F3oYmA56JuG/W7PDCc/ncDv0ueI253y7z60ftM0AtuaU06CRRiZLLqHca1J3/kDwsu/Y5IVrSqtvwq172npdAvcm1t9ox8cdsVryVirwU01666tHNbNrlglWC0dAZRZR2xSn5L6RhM/HVZKAx0EFuWATHLbMgcZSrzJ5iuyb4CDxQ== 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 lazy MMU mode can only be entered and left under the protection of the page table locks for all page tables which may be modified. Yet, when it comes to kernel mappings apply_to_pte_range() does not take any locks. That does not conform arch_enter|leave_lazy_mmu_mode() semantics and could potentially lead to re-schedulling a process while in lazy MMU mode or racing on a kernel page table updates. Cc: stable@vger.kernel.org Fixes: 38e0edb15bd0 ("mm/apply_to_range: call pte function with lazy updates") Signed-off-by: Alexander Gordeev --- mm/kasan/shadow.c | 7 ++----- mm/memory.c | 5 ++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c index edfa77959474..6531a7aa8562 100644 --- a/mm/kasan/shadow.c +++ b/mm/kasan/shadow.c @@ -308,14 +308,14 @@ static int kasan_populate_vmalloc_pte(pte_t *ptep, unsigned long addr, __memset((void *)page, KASAN_VMALLOC_INVALID, PAGE_SIZE); pte = pfn_pte(PFN_DOWN(__pa(page)), PAGE_KERNEL); - spin_lock(&init_mm.page_table_lock); if (likely(pte_none(ptep_get(ptep)))) { set_pte_at(&init_mm, addr, ptep, pte); page = 0; } - spin_unlock(&init_mm.page_table_lock); + if (page) free_page(page); + return 0; } @@ -401,13 +401,10 @@ static int kasan_depopulate_vmalloc_pte(pte_t *ptep, unsigned long addr, page = (unsigned long)__va(pte_pfn(ptep_get(ptep)) << PAGE_SHIFT); - spin_lock(&init_mm.page_table_lock); - if (likely(!pte_none(ptep_get(ptep)))) { pte_clear(&init_mm, addr, ptep); free_page(page); } - spin_unlock(&init_mm.page_table_lock); return 0; } diff --git a/mm/memory.c b/mm/memory.c index f0201c8ec1ce..1f3727104e99 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2926,6 +2926,7 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, pte = pte_offset_kernel(pmd, addr); if (!pte) return err; + spin_lock(&init_mm.page_table_lock); } else { if (create) pte = pte_alloc_map_lock(mm, pmd, addr, &ptl); @@ -2951,7 +2952,9 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, arch_leave_lazy_mmu_mode(); - if (mm != &init_mm) + if (mm == &init_mm) + spin_unlock(&init_mm.page_table_lock); + else pte_unmap_unlock(mapped_pte, ptl); *mask |= PGTBL_PTE_MODIFIED;