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 9FDD6C25B10 for ; Thu, 9 May 2024 20:39:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 142C76B0096; Thu, 9 May 2024 16:39:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0CC6B6B0098; Thu, 9 May 2024 16:39:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DC4636B0099; Thu, 9 May 2024 16:39:16 -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 B99796B0096 for ; Thu, 9 May 2024 16:39:16 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 75F37A1583 for ; Thu, 9 May 2024 20:39:16 +0000 (UTC) X-FDA: 82100022312.03.FE192D1 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by imf05.hostedemail.com (Postfix) with ESMTP id 9F3F910000C for ; Thu, 9 May 2024 20:39:14 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=aObfsCXc; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of 3cTQ9Zg0KCAgi5mtzi0u200mvowwotm.kwutqv25-uus3iks.wzo@flex--axelrasmussen.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=3cTQ9Zg0KCAgi5mtzi0u200mvowwotm.kwutqv25-uus3iks.wzo@flex--axelrasmussen.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715287154; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=72EB+jPmMFAxQhDugLcn3MtcnlhS5/KVvKJQ1v/oDoM=; b=DG8pvvu2rnEmA0+mLQlZQXV5MV4IJBLz2/ys6iAtQrNSndeJlg5scekHJXWXvLFKlyAd7n iEoxdpsIWaIFK/EBXL9bARkgaCbv+8ahj0ANVVDcf1ZD3fOlINjHFdacI8lXogouDf+yBH 6xGMwUWoWsqj+TJANmcGhqCsBd5bCUw= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=aObfsCXc; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of 3cTQ9Zg0KCAgi5mtzi0u200mvowwotm.kwutqv25-uus3iks.wzo@flex--axelrasmussen.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=3cTQ9Zg0KCAgi5mtzi0u200mvowwotm.kwutqv25-uus3iks.wzo@flex--axelrasmussen.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715287154; a=rsa-sha256; cv=none; b=ybzTTfv2WzzhS3xmx7TTTZNUsM1OJzOJyKkBJ3rJEE+ZqEhi8PMdxTuPlfFf+PBUvZv0wp YiPaN9EIBlu9LSR4EhB9LILX+Sy/v6Rbg+LwCWL89jNnlPQGNZPaZOc0RWqOhmA3Mqhmu6 Qb4icOD0CEFUqgyTLWjbZg5/xRUQDbQ= Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-ddaf2f115f2so1954778276.3 for ; Thu, 09 May 2024 13:39:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715287153; x=1715891953; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=72EB+jPmMFAxQhDugLcn3MtcnlhS5/KVvKJQ1v/oDoM=; b=aObfsCXc7k6elI1bdVc0xNtS051pvDG7vD5PBlEeBsN1Qa5HAoZAZTs21N+A6P1TBw Cvl2nJYsgVe82jGyWSxB6Xss+PwzfeP+kAGffnz4MMQjnbClOgbrQ4Smdcd+SaCaeT9L /+4XKwDRZtyzi1VEEsw9SNXSOEMPPmishsmUtfqtYqz1MpiusWBz8ZBK5LUBu2UF4nDf B6LW2y6hoLLlSMn3BeVJ+yMtvBEmD5IBNun22wpKiuD+xsGR0W1HKNdsTjd26Sy5IGOh upIz5y0lvWpMR8W7pv+250Xumrnagp3Ues+lwUhIoMd6wA9SQqmIzfxtYewViOzETWUo nFRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715287153; x=1715891953; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=72EB+jPmMFAxQhDugLcn3MtcnlhS5/KVvKJQ1v/oDoM=; b=P9cLPRMkZQzRZP0pBt6iEXf0vg8mzjZhsnTwcnUfWb4aWDJVmUmOa41begdnd5NJiU X0uxyINkdVzx4zSJR5szQjeB/vpM8yme/hCcOr/PKTvXWjTXP0QS4sTbcY6ph8JWqYkV nnInutfIf8FH425u2otJy7lYXevu+rEBnws9jmHIXFFLNIeZXlnvixt7nHgQRPz/WodT N1GlbS49TUPdURRLsE0tdhDOTpaeJMr5L+hdx5ADXoJlEnegBSyPQ4bSxGb26BSJIVLy oAbiDmr3h0yh9Hp+b5VTGr3c1rMcj9cE108bT7HxfrR6aPxb4KW23Gk9BJmCmmBuF/Of 5r5A== X-Forwarded-Encrypted: i=1; AJvYcCVevLSIEEOBlHdQdXcqHlDMskptVmv0/K1slizjs5l84XS2rRKW20NwY25KQE8ev4rKIImQ0uWl+bPOlQSSEu3GAzg= X-Gm-Message-State: AOJu0Yx1zj/Qu1Z2gjGP4U7R8ApQ5UyYXkHwZszNqfN5YMr1zSTjI73G +rJQaNN7gkcfFnkrMqVMcsX5/xWHD7GB4z2KmtXGj/9x1Nr49CMQpLSdfNHqaJ2nqCv4ZZl/jwQ fYtUT3KmVOWG6oPDwNXbJHPeDQN5qoA== X-Google-Smtp-Source: AGHT+IEc4cDi9d04mUFz7pcyCUYCCTXc24pB4av/QXdROM2NygUWuAhnkvV0KMdhUE3//ZdLw4UfzyQBI3tbL3GiAWOd X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:22b1:9c9e:3544:83b8]) (user=axelrasmussen job=sendgmr) by 2002:a05:6902:c09:b0:de5:5304:3206 with SMTP id 3f1490d57ef6-dee4f52d715mr74188276.11.1715287153666; Thu, 09 May 2024 13:39:13 -0700 (PDT) Date: Thu, 9 May 2024 13:39:07 -0700 In-Reply-To: <20240509203907.504891-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20240509203907.504891-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.45.0.118.g7fe29c98d7-goog Message-ID: <20240509203907.504891-2-axelrasmussen@google.com> Subject: [PATCH 1/1] arch/fault: don't print logs for simulated poison errors From: Axel Rasmussen To: Andrew Morton , Andy Lutomirski , "Aneesh Kumar K.V" , Borislav Petkov , Christophe Leroy , Dave Hansen , David Hildenbrand , "H. Peter Anvin" , Helge Deller , Ingo Molnar , "James E.J. Bottomley" , John Hubbard , Liu Shixin , "Matthew Wilcox (Oracle)" , Michael Ellerman , Muchun Song , "Naveen N. Rao" , Nicholas Piggin , Oscar Salvador , Peter Xu , Peter Zijlstra , Suren Baghdasaryan , Thomas Gleixner Cc: Axel Rasmussen , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: jyxpa8gdmx7ibosiu1xzw19m1hswau5q X-Rspamd-Queue-Id: 9F3F910000C X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1715287154-738953 X-HE-Meta: U2FsdGVkX1/UkGyYxx7/lQwAWwNbRjWlRVPXDWotCiaHSGPDr9JEUIr8hdLuMKWWGK3V0vzm3iRVMbuYWeoO07k+AHehH+iwPAUfXsCuMaIWHi72nMOcvepeoJmtYSlPleZyDhaIrF/UiB4xUh3P+5PfMeOU9Ys4Pb+egrXaj/7CK1EZyJ4cXDIkEkivCZg15LhY1oG81LqnR5qWwYBKwvmXMebwCmHo0wvbmhneeB3AabDsELFJkcyYhx51vqmG//DdulV/dy5cbddgOaL8b2VCffitH6paZLVqJIVRSeljFn1fzETqg3aJLiT/RoVf1CUDGg98irDzCE4V5xHuXP9UuwApYaLEpTaUJs7PN2f8kViICXg8KRoN0dGc6CidRxtiF25j3qICFbMAkx+d2CnLzNPlRzZGokQ8FNQuYGFET0bhN2pOrKH3f4wVyekMVCv36MpvF4C12rWhPIGvK/UzJDNdRW7sSWI/xBDzm7yd2zYpdQEiTx9ikubwdMq0P7jxU7gMVCA2GYdwGyeihwldaiaK1r+uPj7jWwv1LeXMGvhsCvhegl6l+X7nOttJfJS4SV9gw0KS9e9yZXosV92CKqOLyeuj5CtTfgP+45IJo4plWENNqxysf2bm63z3QQ6rOOYxJHqO4GRbrzpSsXX02AmBO/tQKekRSl1Paw9rncfqcvI3ywkd8/NtwZBB8rTE4r3BOZ2NoLiPqOW/fvRYKbB9/FH/kxKDADxZyCdXDgABbyecn84TrkSP9909lctb4IEWotVqgDls37MOpdpEIDe1ImmFFbMPy66ON+YlkJEFDpgu0j0/87CaYh3bnWzoeRounk8vQFo9LhBtWHPoCasw7ztcLQgVvR5IRBhG9LpysgLCN/f+T9L6hpBvzPwiQcZMQfz1x5Y2JU9TI5NdBvmNrGKNprHg4GdKCipCZIyjaBVKFbNkkZETV9yk6RdShMBmrp5xqhbEXy0 GxeHetBy 7+lrEyHPNZhN2GZEaHA1im1FXPr9i1yxZRBA1fkQ2adN06XAsIao5cmq9A9L9lg385uQDkp2xy7mDrv/cjtvf8fzoNL3nWyi+iXbW12ZjLv/bjSf0nAmoBBz13Mk7COd7i3PtwOCFvJdI4Xgtl0FBA0K8JZCGLsZXiD9HDpEyJ6AAsh9F5bTA7W4Hvr5OoNfpvJsJqDJsk7YwNE3TFSHSeq8lBe+gBvFAR3teTAFZfqz7llffd4fxe6iMQqgluKCQfivPXGUUp9PXECQvC9y+sW2bq4Rr+vqVzRFO+Jq80USDVhAxgNufhiaDkdktBMi9xCnThROnx7KQ330Y+Y5eaOMmgC2M6V8A+HwoBbHOGDiOaMWIZv4d+bfNMlNHGlBvjjU6ODVGjz3FhMkyoly5GuMeh1VdBhCZZon21dSxyavByOLmP2hno+RvZ3ZnERWtKKtwiHc2jBJXNqhiTvcOZcmSvnoWoMEfUcPQKi/1U4TUPWtl/vOuXdTaqzm3yxrYyBoHoP/6BDrPDlHMQezi3LPXZKA554FziPKyaISExxBCbP114jpAS0gcMFA4AKwFwO6a3D0M5bTiEI8S3vU7VfT3BxlTGUAmyVMR2ohMfcrBP3TnDYeE9TkeHu0ZUTLT4qPS1CDbnLyfn1j1z0JnrRnJEQ== 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: For real MCEs, various architectures print log messages when poisoned memory is accessed (which results in a SIGBUS). These messages can be important for users to understand the issue. On the other hand, we have the userfaultfd UFFDIO_POISON operation, which can "simulate" memory poisoning. That particular process will get SIGBUS on access to the memory, but this effect is tied to an MM, rather than being global like a real poison event. So, we don't want to log about this case to the global kernel log; instead, let the process itself log or whatever else it wants to do. This avoids spamming the kernel log, and avoids e.g. drowning out real events with simulated ones. To identify this situation, add a new VM_FAULT_HWPOISON_SIM flag. This is expected to be set *in addition to* one of the existing VM_FAULT_HWPOISON or VM_FAULT_HWPOISON_LARGE flags (which are mutually exclusive). Signed-off-by: Axel Rasmussen --- arch/parisc/mm/fault.c | 7 +++++-- arch/powerpc/mm/fault.c | 6 ++++-- arch/x86/mm/fault.c | 6 ++++-- include/linux/mm_types.h | 5 +++++ mm/hugetlb.c | 3 ++- mm/memory.c | 2 +- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index c39de84e98b0..e5370bcadf27 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c @@ -400,9 +400,12 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, #ifdef CONFIG_MEMORY_FAILURE if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) { unsigned int lsb = 0; - printk(KERN_ERR + + if (!(fault & VM_FAULT_HWPOISON_SIM)) { + pr_err( "MCE: Killing %s:%d due to hardware memory corruption fault at %08lx\n", - tsk->comm, tsk->pid, address); + tsk->comm, tsk->pid, address); + } /* * Either small page or large page may be poisoned. * In other words, VM_FAULT_HWPOISON_LARGE and diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 53335ae21a40..ac5e8a3c7fba 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c @@ -140,8 +140,10 @@ static int do_sigbus(struct pt_regs *regs, unsigned long address, if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) { unsigned int lsb = 0; /* shutup gcc */ - pr_err("MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n", - current->comm, current->pid, address); + if (!(fault & VM_FAULT_HWPOISON_SIM)) { + pr_err("MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n", + current->comm, current->pid, address); + } if (fault & VM_FAULT_HWPOISON_LARGE) lsb = hstate_index_to_shift(VM_FAULT_GET_HINDEX(fault)); diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index e4f3c7721f45..16d077a3ad14 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -928,9 +928,11 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, struct task_struct *tsk = current; unsigned lsb = 0; - pr_err_ratelimited( + if (!(fault & VM_FAULT_HWPOISON_SIM)) { + pr_err_ratelimited( "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n", - tsk->comm, tsk->pid, address); + tsk->comm, tsk->pid, address); + } if (fault & VM_FAULT_HWPOISON_LARGE) lsb = hstate_index_to_shift(VM_FAULT_GET_HINDEX(fault)); if (fault & VM_FAULT_HWPOISON) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 5240bd7bca33..7f8fc3efc5b2 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1226,6 +1226,9 @@ typedef __bitwise unsigned int vm_fault_t; * @VM_FAULT_HWPOISON_LARGE: Hit poisoned large page. Index encoded * in upper bits * @VM_FAULT_SIGSEGV: segmentation fault + * @VM_FAULT_HWPOISON_SIM Hit poisoned, PTE marker; this indicates a + * simulated poison (e.g. via usefaultfd's + * UFFDIO_POISON), not a "real" hwerror. * @VM_FAULT_NOPAGE: ->fault installed the pte, not return page * @VM_FAULT_LOCKED: ->fault locked the returned page * @VM_FAULT_RETRY: ->fault blocked, must retry @@ -1245,6 +1248,7 @@ enum vm_fault_reason { VM_FAULT_HWPOISON = (__force vm_fault_t)0x000010, VM_FAULT_HWPOISON_LARGE = (__force vm_fault_t)0x000020, VM_FAULT_SIGSEGV = (__force vm_fault_t)0x000040, + VM_FAULT_HWPOISON_SIM = (__force vm_fault_t)0x000080, VM_FAULT_NOPAGE = (__force vm_fault_t)0x000100, VM_FAULT_LOCKED = (__force vm_fault_t)0x000200, VM_FAULT_RETRY = (__force vm_fault_t)0x000400, @@ -1270,6 +1274,7 @@ enum vm_fault_reason { { VM_FAULT_HWPOISON, "HWPOISON" }, \ { VM_FAULT_HWPOISON_LARGE, "HWPOISON_LARGE" }, \ { VM_FAULT_SIGSEGV, "SIGSEGV" }, \ + { VM_FAULT_HWPOISON_SIM, "HWPOISON_SIM" }, \ { VM_FAULT_NOPAGE, "NOPAGE" }, \ { VM_FAULT_LOCKED, "LOCKED" }, \ { VM_FAULT_RETRY, "RETRY" }, \ diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 65456230cc71..2b4e0173e806 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -6485,7 +6485,8 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, pte_marker_get(pte_to_swp_entry(entry)); if (marker & PTE_MARKER_POISONED) { - ret = VM_FAULT_HWPOISON_LARGE | + ret = VM_FAULT_HWPOISON_SIM | + VM_FAULT_HWPOISON_LARGE | VM_FAULT_SET_HINDEX(hstate_index(h)); goto out_mutex; } diff --git a/mm/memory.c b/mm/memory.c index d2155ced45f8..29a833b996ae 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3910,7 +3910,7 @@ static vm_fault_t handle_pte_marker(struct vm_fault *vmf) /* Higher priority than uffd-wp when data corrupted */ if (marker & PTE_MARKER_POISONED) - return VM_FAULT_HWPOISON; + return VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_SIM; if (pte_marker_entry_uffd_wp(entry)) return pte_marker_handle_uffd_wp(vmf); -- 2.45.0.118.g7fe29c98d7-goog