From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [tip:x86/urgent] acpi/nfit, x86/mce: Validate a MCE's address before using it From: tip-bot for Borislav Petkov Message-Id: Date: Tue, 6 Nov 2018 10:19:25 -0800 To: linux-tip-commits@vger.kernel.org Cc: yazen.ghannam@amd.com, bp@suse.de, dan.j.williams@intel.com, mingo@kernel.org, tony.luck@intel.com, mingo@redhat.com, x86@kernel.org, arnd@arndb.de, qiuxu.zhuo@intel.com, rjw@rjwysocki.net, elliott@hpe.com, linux-edac@vger.kernel.org, tglx@linutronix.de, lenb@kernel.org, stable@vger.kernel.org, vishal.l.verma@intel.com, hpa@zytor.com, linux-kernel@vger.kernel.org, zwisler@kernel.org, dave.jiang@intel.com List-ID: Q29tbWl0LUlEOiAgZThhMzA4ZTVmNDdlNTQ1ZTBkNDFkMDY4NmMwMGY1ZjUyMTdjNWY2MQpHaXR3 ZWI6ICAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3RpcC9lOGEzMDhlNWY0N2U1NDVlMGQ0MWQw Njg2YzAwZjVmNTIxN2M1ZjYxCkF1dGhvcjogICAgIFZpc2hhbCBWZXJtYSA8dmlzaGFsLmwudmVy bWFAaW50ZWwuY29tPgpBdXRob3JEYXRlOiBUaHUsIDI1IE9jdCAyMDE4IDE4OjM3OjI5IC0wNjAw CkNvbW1pdHRlcjogIEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ29tbWl0RGF0ZTogVHVl LCA2IE5vdiAyMDE4IDE5OjEzOjI2ICswMTAwCgphY3BpL25maXQsIHg4Ni9tY2U6IFZhbGlkYXRl IGEgTUNFJ3MgYWRkcmVzcyBiZWZvcmUgdXNpbmcgaXQKClRoZSBORklUIG1hY2hpbmUgY2hlY2sg aGFuZGxlciB1c2VzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGZyb20gdGhlIG1jZQpzdHJ1Y3R1cmUs IGFuZCBjb21wYXJlcyBpdCBhZ2FpbnN0IGluZm9ybWF0aW9uIGluIHRoZSBBQ1BJIE5GSVQgdGFi bGUKdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhhdCBsb2NhdGlvbiBsaWVzIG9uIGFuIE5WRElNTS4g VGhlIG1jZS0+YWRkcgpmaWVsZCBob3dldmVyIG1heSBub3QgYWx3YXlzIGJlIHZhbGlkLCBhbmQg dGhpcyBpcyBpbmRpY2F0ZWQgYnkgdGhlCk1DSV9TVEFUVVNfQUREUlYgYml0IGluIHRoZSBzdGF0 dXMgZmllbGQuCgpFeHBvcnQgbWNlX3VzYWJsZV9hZGRyZXNzKCkgd2hpY2ggYWxyZWFkeSBwZXJm b3JtcyB2YWxpZGF0aW9uIGZvciB0aGUKYWRkcmVzcywgYW5kIHVzZSBpdCBpbiB0aGUgTkZJVCBo YW5kbGVyLgoKRml4ZXM6IDY4MzlhNmQ5NmY0ZSAoIm5maXQ6IGRvIGFuIEFSUyBzY3J1YiBvbiBo aXR0aW5nIGEgbGF0ZW50IG1lZGlhIGVycm9yIikKUmVwb3J0ZWQtYnk6IFJvYmVydCBFbGxpb3R0 IDxlbGxpb3R0QGhwZS5jb20+ClNpZ25lZC1vZmYtYnk6IFZpc2hhbCBWZXJtYSA8dmlzaGFsLmwu dmVybWFAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2Uu ZGU+CkNDOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgpDYzogRGFuIFdpbGxpYW1zIDxk YW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNDOiBEYXZlIEppYW5nIDxkYXZlLmppYW5nQGludGVs LmNvbT4KQ0M6IGVsbGlvdHRAaHBlLmNvbQpDQzogIkguIFBldGVyIEFudmluIiA8aHBhQHp5dG9y LmNvbT4KQ0M6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgpDQzogTGVuIEJyb3duIDxs ZW5iQGtlcm5lbC5vcmc+CkNDOiBsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZwpDQzogbGludXgt ZWRhYyA8bGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc+CkNDOiBsaW51eC1udmRpbW1AbGlzdHMu MDEub3JnCkNDOiBRaXV4dSBaaHVvIDxxaXV4dS56aHVvQGludGVsLmNvbT4KQ0M6ICJSYWZhZWwg Si4gV3lzb2NraSIgPHJqd0Byand5c29ja2kubmV0PgpDQzogUm9zcyBad2lzbGVyIDx6d2lzbGVy QGtlcm5lbC5vcmc+CkNDOiBzdGFibGUgPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+CkNDOiBUaG9t YXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ0M6IFRvbnkgTHVjayA8dG9ueS5sdWNr QGludGVsLmNvbT4KQ0M6IHg4Ni1tbCA8eDg2QGtlcm5lbC5vcmc+CkNDOiBZYXplbiBHaGFubmFt IDx5YXplbi5naGFubmFtQGFtZC5jb20+Ckxpbms6IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8y MDE4MTAyNjAwMzcyOS44NDIwLTItdmlzaGFsLmwudmVybWFAaW50ZWwuY29tCi0tLQogYXJjaC94 ODYvaW5jbHVkZS9hc20vbWNlLmggICAgICAgfCAxICsKIGFyY2gveDg2L2tlcm5lbC9jcHUvbWNo ZWNrL21jZS5jIHwgMyArKy0KIGRyaXZlcnMvYWNwaS9uZml0L21jZS5jICAgICAgICAgIHwgNCAr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL21jZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9h c20vbWNlLmgKaW5kZXggZGJkOWZlMmY2MTYzLi5jMWE4MTJiZDVhMjcgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21jZS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL21jZS5o CkBAIC0yMjIsNiArMjIyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG1jZV9oeWdvbl9mZWF0dXJl X2luaXQoc3RydWN0IGNwdWluZm9feDg2ICpjKSB7IHJldHVybiBtY2VfYW0KIGludCBtY2VfYXZh aWxhYmxlKHN0cnVjdCBjcHVpbmZvX3g4NiAqYyk7CiBib29sIG1jZV9pc19tZW1vcnlfZXJyb3Io c3RydWN0IG1jZSAqbSk7CiBib29sIG1jZV9pc19jb3JyZWN0YWJsZShzdHJ1Y3QgbWNlICptKTsK K2ludCBtY2VfdXNhYmxlX2FkZHJlc3Moc3RydWN0IG1jZSAqbSk7CiAKIERFQ0xBUkVfUEVSX0NQ VSh1bnNpZ25lZCwgbWNlX2V4Y2VwdGlvbl9jb3VudCk7CiBERUNMQVJFX1BFUl9DUFUodW5zaWdu ZWQsIG1jZV9wb2xsX2NvdW50KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNo ZWNrL21jZS5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKaW5kZXggNzc1Mjdi OGVhOTgyLi4zNmQyNjk2Yzk1NjMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNo ZWNrL21jZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCkBAIC00ODUs NyArNDg1LDcgQEAgc3RhdGljIHZvaWQgbWNlX3JlcG9ydF9ldmVudChzdHJ1Y3QgcHRfcmVncyAq cmVncykKICAqIGJlIHNvbWV3aGF0IGNvbXBsaWNhdGVkIChlLmcuIHNlZ21lbnQgb2Zmc2V0IHdv dWxkIHJlcXVpcmUgYW4gaW5zdHJ1Y3Rpb24KICAqIHBhcnNlcikuIFNvIG9ubHkgc3VwcG9ydCBw aHlzaWNhbCBhZGRyZXNzZXMgdXAgdG8gcGFnZSBncmFudWFsaXR5IGZvciBub3cuCiAgKi8KLXN0 YXRpYyBpbnQgbWNlX3VzYWJsZV9hZGRyZXNzKHN0cnVjdCBtY2UgKm0pCitpbnQgbWNlX3VzYWJs ZV9hZGRyZXNzKHN0cnVjdCBtY2UgKm0pCiB7CiAJaWYgKCEobS0+c3RhdHVzICYgTUNJX1NUQVRV U19BRERSVikpCiAJCXJldHVybiAwOwpAQCAtNTA1LDYgKzUwNSw3IEBAIHN0YXRpYyBpbnQgbWNl X3VzYWJsZV9hZGRyZXNzKHN0cnVjdCBtY2UgKm0pCiAKIAlyZXR1cm4gMTsKIH0KK0VYUE9SVF9T WU1CT0xfR1BMKG1jZV91c2FibGVfYWRkcmVzcyk7CiAKIGJvb2wgbWNlX2lzX21lbW9yeV9lcnJv cihzdHJ1Y3QgbWNlICptKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25maXQvbWNlLmMg Yi9kcml2ZXJzL2FjcGkvbmZpdC9tY2UuYwppbmRleCA3YTUxNzA3Zjg3ZTkuLmQ2YzFiMTBmNmMy NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL25maXQvbWNlLmMKKysrIGIvZHJpdmVycy9hY3Bp L25maXQvbWNlLmMKQEAgLTI5LDYgKzI5LDEwIEBAIHN0YXRpYyBpbnQgbmZpdF9oYW5kbGVfbWNl KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgdmFsLAogCWlmICghbWNl X2lzX21lbW9yeV9lcnJvcihtY2UpIHx8IG1jZV9pc19jb3JyZWN0YWJsZShtY2UpKQogCQlyZXR1 cm4gTk9USUZZX0RPTkU7CiAKKwkvKiBWZXJpZnkgdGhlIGFkZHJlc3MgcmVwb3J0ZWQgaW4gdGhl IE1DRSBpcyB2YWxpZC4gKi8KKwlpZiAoIW1jZV91c2FibGVfYWRkcmVzcyhtY2UpKQorCQlyZXR1 cm4gTk9USUZZX0RPTkU7CisKIAkvKgogCSAqIG1jZS0+YWRkciBjb250YWlucyB0aGUgcGh5c2lj YWwgYWRkciBhY2Nlc3NlZCB0aGF0IGNhdXNlZCB0aGUKIAkgKiBtYWNoaW5lIGNoZWNrLiBXZSBu ZWVkIHRvIHdhbGsgdGhyb3VnaCB0aGUgbGlzdCBvZiBORklUcywgYW5kIHNlZQo= 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 X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 112B9C32789 for ; Tue, 6 Nov 2018 18:19:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D90A020869 for ; Tue, 6 Nov 2018 18:19:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D90A020869 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zytor.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388486AbeKGDq0 (ORCPT ); Tue, 6 Nov 2018 22:46:26 -0500 Received: from terminus.zytor.com ([198.137.202.136]:38115 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388442AbeKGDq0 (ORCPT ); Tue, 6 Nov 2018 22:46:26 -0500 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id wA6IJP97893930 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 6 Nov 2018 10:19:25 -0800 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id wA6IJP2o893927; Tue, 6 Nov 2018 10:19:25 -0800 Date: Tue, 6 Nov 2018 10:19:25 -0800 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Vishal Verma Message-ID: Cc: yazen.ghannam@amd.com, bp@suse.de, dan.j.williams@intel.com, mingo@kernel.org, tony.luck@intel.com, mingo@redhat.com, x86@kernel.org, arnd@arndb.de, qiuxu.zhuo@intel.com, rjw@rjwysocki.net, elliott@hpe.com, linux-edac@vger.kernel.org, tglx@linutronix.de, lenb@kernel.org, stable@vger.kernel.org, vishal.l.verma@intel.com, hpa@zytor.com, linux-kernel@vger.kernel.org, zwisler@kernel.org, dave.jiang@intel.com Reply-To: dan.j.williams@intel.com, yazen.ghannam@amd.com, bp@suse.de, tony.luck@intel.com, mingo@kernel.org, mingo@redhat.com, x86@kernel.org, arnd@arndb.de, qiuxu.zhuo@intel.com, rjw@rjwysocki.net, elliott@hpe.com, lenb@kernel.org, stable@vger.kernel.org, vishal.l.verma@intel.com, linux-edac@vger.kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, zwisler@kernel.org, dave.jiang@intel.com, hpa@zytor.com In-Reply-To: <20181026003729.8420-2-vishal.l.verma@intel.com> References: <20181026003729.8420-2-vishal.l.verma@intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/urgent] acpi/nfit, x86/mce: Validate a MCE's address before using it Git-Commit-ID: e8a308e5f47e545e0d41d0686c00f5f5217c5f61 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: e8a308e5f47e545e0d41d0686c00f5f5217c5f61 Gitweb: https://git.kernel.org/tip/e8a308e5f47e545e0d41d0686c00f5f5217c5f61 Author: Vishal Verma AuthorDate: Thu, 25 Oct 2018 18:37:29 -0600 Committer: Borislav Petkov CommitDate: Tue, 6 Nov 2018 19:13:26 +0100 acpi/nfit, x86/mce: Validate a MCE's address before using it The NFIT machine check handler uses the physical address from the mce structure, and compares it against information in the ACPI NFIT table to determine whether that location lies on an NVDIMM. The mce->addr field however may not always be valid, and this is indicated by the MCI_STATUS_ADDRV bit in the status field. Export mce_usable_address() which already performs validation for the address, and use it in the NFIT handler. Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error") Reported-by: Robert Elliott Signed-off-by: Vishal Verma Signed-off-by: Borislav Petkov CC: Arnd Bergmann Cc: Dan Williams CC: Dave Jiang CC: elliott@hpe.com CC: "H. Peter Anvin" CC: Ingo Molnar CC: Len Brown CC: linux-acpi@vger.kernel.org CC: linux-edac CC: linux-nvdimm@lists.01.org CC: Qiuxu Zhuo CC: "Rafael J. Wysocki" CC: Ross Zwisler CC: stable CC: Thomas Gleixner CC: Tony Luck CC: x86-ml CC: Yazen Ghannam Link: http://lkml.kernel.org/r/20181026003729.8420-2-vishal.l.verma@intel.com --- arch/x86/include/asm/mce.h | 1 + arch/x86/kernel/cpu/mcheck/mce.c | 3 ++- drivers/acpi/nfit/mce.c | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index dbd9fe2f6163..c1a812bd5a27 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h @@ -222,6 +222,7 @@ static inline void mce_hygon_feature_init(struct cpuinfo_x86 *c) { return mce_am int mce_available(struct cpuinfo_x86 *c); bool mce_is_memory_error(struct mce *m); bool mce_is_correctable(struct mce *m); +int mce_usable_address(struct mce *m); DECLARE_PER_CPU(unsigned, mce_exception_count); DECLARE_PER_CPU(unsigned, mce_poll_count); diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 77527b8ea982..36d2696c9563 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -485,7 +485,7 @@ static void mce_report_event(struct pt_regs *regs) * be somewhat complicated (e.g. segment offset would require an instruction * parser). So only support physical addresses up to page granuality for now. */ -static int mce_usable_address(struct mce *m) +int mce_usable_address(struct mce *m) { if (!(m->status & MCI_STATUS_ADDRV)) return 0; @@ -505,6 +505,7 @@ static int mce_usable_address(struct mce *m) return 1; } +EXPORT_SYMBOL_GPL(mce_usable_address); bool mce_is_memory_error(struct mce *m) { diff --git a/drivers/acpi/nfit/mce.c b/drivers/acpi/nfit/mce.c index 7a51707f87e9..d6c1b10f6c25 100644 --- a/drivers/acpi/nfit/mce.c +++ b/drivers/acpi/nfit/mce.c @@ -29,6 +29,10 @@ static int nfit_handle_mce(struct notifier_block *nb, unsigned long val, if (!mce_is_memory_error(mce) || mce_is_correctable(mce)) return NOTIFY_DONE; + /* Verify the address reported in the MCE is valid. */ + if (!mce_usable_address(mce)) + return NOTIFY_DONE; + /* * mce->addr contains the physical addr accessed that caused the * machine check. We need to walk through the list of NFITs, and see