From patchwork Wed Mar 12 11:28:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shuai Xue X-Patchwork-Id: 14013386 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 724C6C28B2F for ; Wed, 12 Mar 2025 11:29:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0ED8F280003; Wed, 12 Mar 2025 07:29:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 026FD280001; Wed, 12 Mar 2025 07:29:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D7397280005; Wed, 12 Mar 2025 07:29:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id B8178280001 for ; Wed, 12 Mar 2025 07:29:01 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id BCF251CA0F8 for ; Wed, 12 Mar 2025 11:29:02 +0000 (UTC) X-FDA: 83212677324.03.C3FAF8B Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) by imf19.hostedemail.com (Postfix) with ESMTP id AE6261A0009 for ; Wed, 12 Mar 2025 11:29:00 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=XiiHiyJS; dmarc=pass (policy=none) header.from=linux.alibaba.com; spf=pass (imf19.hostedemail.com: domain of xueshuai@linux.alibaba.com designates 115.124.30.97 as permitted sender) smtp.mailfrom=xueshuai@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741778941; a=rsa-sha256; cv=none; b=AUMQz289DVfB1HOjnYjRuz7kksOO8gSIt6kM1fblJUxVmLbpdk7EkOOzbCup9m2uiyY8JU N0plMFqVQOXiY71hprQwH/jb7OeSI4QjPEcQGrTDKywos05H83/EgBCx0X2VCkmiSNnmJO 1J0ngIwGMEtNATNs7JSIyYrQ8EDRUiE= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=XiiHiyJS; dmarc=pass (policy=none) header.from=linux.alibaba.com; spf=pass (imf19.hostedemail.com: domain of xueshuai@linux.alibaba.com designates 115.124.30.97 as permitted sender) smtp.mailfrom=xueshuai@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741778941; 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=vDfxkI5giWrkXyBcohVPuoNEY+c5llJuxem0Ij3I5bc=; b=VbEPy6rkYE4pfI5rCxAzjV96CnPx5fV5o2rgy+LZXw4SDztLvBYQq7DnIKTjwC5BHlmBxp QqkpKDfLl44fo9TL7E934w1gK4WZc//oOMJ/ja/72lfcI/h4QI52u5IxQ6bdoAlwBzlFgE jJwUHCYbONUo+OiUxMhm6hddunEIy5o= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1741778936; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=vDfxkI5giWrkXyBcohVPuoNEY+c5llJuxem0Ij3I5bc=; b=XiiHiyJSasEU+6GzgSOkMpeqxWs8aKhkUP8/a8RZW/3/EgoAXmRQnEuNEjj4zWl2BU3Po6pZLFvc1yc7SsKvCKX+h6k7EM0nA663hA1OJetrB4DapwAbB2sQTtZHYCHlsBT9DUQViNu3/Jkl8fIuK4NNajH2O3WtstZodvhrlzo= Received: from localhost.localdomain(mailfrom:xueshuai@linux.alibaba.com fp:SMTPD_---0WRCdv11_1741778934 cluster:ay36) by smtp.aliyun-inc.com; Wed, 12 Mar 2025 19:28:54 +0800 From: Shuai Xue To: akpm@linux-foundation.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com Cc: tony.luck@intel.com, bp@alien8.de, peterz@infradead.org, catalin.marinas@arm.com, yazen.ghannam@amd.com, tglx@linutronix.de, mingo@redhat.com, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, jpoimboe@kernel.org, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, baolin.wang@linux.alibaba.com, tianruidong@linux.alibaba.com, xueshuai@linux.alibaba.com Subject: [PATCH v4 1/3] x86/mce: Use is_copy_from_user() to determine copy-from-user context Date: Wed, 12 Mar 2025 19:28:50 +0800 Message-ID: <20250312112852.82415-2-xueshuai@linux.alibaba.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20250312112852.82415-1-xueshuai@linux.alibaba.com> References: <20250312112852.82415-1-xueshuai@linux.alibaba.com> MIME-Version: 1.0 X-Stat-Signature: pysojb86xfuh9id9phtyshhgiswyy1xz X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: AE6261A0009 X-Rspam-User: X-HE-Tag: 1741778940-605070 X-HE-Meta: U2FsdGVkX1+z/Yv54BrJYLIHzYdo/732F0dpXlt1i9wltDrUdzrF91pdvd2HYUTLxRCksOg2Arf37TPc0qmgB0zqn5Apuip3ShX3tDDErw10t+spSoXiuilkvO0lta/XdzFcq2Bqqrx/5SAZdHQqMwl2icYdsebSkIyD0O2d+LR94Xsd8x2ndrhy5PsZLHHpxeOcDZSW1UUXvoq6KX9+iZa7vKfAUSj0U7rxcZsZqBvPokqe/2ApNc7v+We1mPzcwWYt9Z8msqC990qzPDvZAjFzk1x91/G6mtBASA+L6NtGyh2xDn6QopFyiLkYSlMe/PorpboAtLOubeHoPjFMSNIMS0NJphJ4ZbQIlEbQ3++rvsuLTzv8V7geWz7G5mdFkWSl4VbPOvF7tsI0uoflNiM/NmFAwnA3UECOtRpR0ARmHKW16ykZvu+1f358OpFi5v5wwaxWaNp06dXWc463K9FAhQYydZlECkFs8qXe24I/RnWbifzH6f+V6g7Ck/1Tz/nxM7LfxUXjsWtHLDdyv9nO8zILmTt8OA7XRMWT3amphPMcI5DkzWF4SJz5Nx0QPxqmuGi+K3l6UMrc4PTeFVWS/BdPPbZyr1DiifyGQbDxJTOwyaIsP4noS+rxyYrayryuT//CGC0ZhtxE2GDNuizJrlHFT/2ek1R9b7lPkRvgv1oXvMqTwS4jazQYfyB1IaAiBoEgHCxcyjdRXAv2uWNvhzaWNtVbHHMYQ/3brX4rHPVyG8s9LpIV1S5XjEwJiFi7c0AClR3Zq+rjPZ7wnRs339v6V+GiDXv3tnrZnpw2o1Nb178q1RDEvp/pHV0csGjidmR4aCiJ2lJgP4n8aoaGsD6VfNryU02Zidhlxek4inf/15kPn5HiRiSpG0D/T1jjUD5ZKqevSTKNqJNVW0duiuJfPR7n7PmwztKs+lG0tWpUE/5lRSRc6hMKE/ib1uhYV4+b8/I6nm1ytAM 39u1Dees 5rOs1LQ3nzbYvBHivdwkxEsonZrQpQLxQIXtTsAbDKG/YriGcnaO3Fv/Y0mn3phM5CSymKjxJyjuvqhqTOzDs7Q+NYB4eYM8OcMgNmfCpzUjHccsErYup//QZXpUFHiHKiIXsAlpygSrnD+BnQE9QtTVvfeDSxo38PgjCRZmLhx28v39FTI0JAl/yMJpfdJuN55K5NyDIs4wucjCTv/RZpt/KGGEao64qeQASerSE2PmY43k+ZG2B68vHBPpgBnbTyPiBWsQHIXsSGmBOjGx3qe0ARGQ0F40cuBl0WqqZW3IyIEGnAFUssDYvn/jurqvoHQEn4Q6yNvMRZ79gQdPi/tBuyoNXLbj3ogzVwprLXhn2HSKFXQOJmEYu6XaEbI2ho796U19KFZUWhyD88WZPAi8jCvtbzExqRKUtWOk2BAtKLGHeD5aKpkZ1YAXr3Nhq+WJSlaGaMuOW2KY= 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: Commit 4c132d1d844a ("x86/futex: Remove .fixup usage") introduced a new extable fixup type, EX_TYPE_EFAULT_REG, and commit 4c132d1d844a ("x86/futex: Remove .fixup usage") updated the extable fixup type for copy-from-user operations, changing it from EX_TYPE_UACCESS to EX_TYPE_EFAULT_REG. The error context for copy-from-user operations no longer functions as an in-kernel recovery context. Consequently, the error context for copy-from-user operations no longer functions as an in-kernel recovery context, resulting in kernel panics with the message: "Machine check: Data load in unrecoverable area of kernel." To address this, it is crucial to identify if an error context involves a read operation from user memory. The function is_copy_from_user() can be utilized to determine: - the current operation is copy - when reading user memory When these conditions are met, is_copy_from_user() will return true, confirming that it is indeed a direct copy from user memory. This check is essential for correctly handling the context of errors in these operations without relying on the extable fixup types that previously allowed for in-kernel recovery. So, use is_copy_from_user() to determine if a context is copy user directly. Fixes: 4c132d1d844a ("x86/futex: Remove .fixup usage") Suggested-by: Peter Zijlstra Signed-off-by: Shuai Xue Acked-by: Borislav Petkov (AMD) Tested-by: Tony Luck Cc: stable@vger.kernel.org --- arch/x86/kernel/cpu/mce/severity.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/severity.c b/arch/x86/kernel/cpu/mce/severity.c index dac4d64dfb2a..2235a7477436 100644 --- a/arch/x86/kernel/cpu/mce/severity.c +++ b/arch/x86/kernel/cpu/mce/severity.c @@ -300,13 +300,12 @@ static noinstr int error_context(struct mce *m, struct pt_regs *regs) copy_user = is_copy_from_user(regs); instrumentation_end(); - switch (fixup_type) { - case EX_TYPE_UACCESS: - if (!copy_user) - return IN_KERNEL; - m->kflags |= MCE_IN_KERNEL_COPYIN; - fallthrough; + if (copy_user) { + m->kflags |= MCE_IN_KERNEL_COPYIN | MCE_IN_KERNEL_RECOV; + return IN_KERNEL_RECOV; + } + switch (fixup_type) { case EX_TYPE_FAULT_MCE_SAFE: case EX_TYPE_DEFAULT_MCE_SAFE: m->kflags |= MCE_IN_KERNEL_RECOV;