From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D569221A07A92 for ; Mon, 19 Nov 2018 08:34:04 -0800 (PST) From: Greg Kroah-Hartman Subject: [PATCH 4.19 091/205] acpi/nfit, x86/mce: Validate a MCEs address before using it Date: Mon, 19 Nov 2018 17:26:38 +0100 Message-Id: <20181119162632.213681486@linuxfoundation.org> In-Reply-To: <20181119162616.586062722@linuxfoundation.org> References: <20181119162616.586062722@linuxfoundation.org> MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: linux-kernel@vger.kernel.org Cc: x86-ml , "Rafael J. Wysocki" , Qiuxu Zhuo , Arnd Bergmann , linux-nvdimm@lists.01.org, Greg Kroah-Hartman , "H. Peter Anvin" , linux-edac , Tony Luck , stable@vger.kernel.org, Yazen Ghannam , linux-acpi@vger.kernel.org, Ingo Molnar , Ross Zwisler , Borislav Petkov , Thomas Gleixner , Len Brown List-ID: 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Vishal Verma commit e8a308e5f47e545e0d41d0686c00f5f5217c5f61 upstream. 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 Signed-off-by: Greg Kroah-Hartman --- 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(-) --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h @@ -217,6 +217,7 @@ static inline int umc_normaddr_to_sysadd 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); --- 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_r * 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 return 1; } +EXPORT_SYMBOL_GPL(mce_usable_address); bool mce_is_memory_error(struct mce *m) { --- a/drivers/acpi/nfit/mce.c +++ b/drivers/acpi/nfit/mce.c @@ -29,6 +29,10 @@ static int nfit_handle_mce(struct notifi 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 _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: [PATCH 4.19 091/205] acpi/nfit, x86/mce: Validate a MCEs address before using it Date: Mon, 19 Nov 2018 17:26:38 +0100 Message-ID: <20181119162632.213681486@linuxfoundation.org> References: <20181119162616.586062722@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20181119162616.586062722@linuxfoundation.org> Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Robert Elliott , Vishal Verma , Borislav Petkov , Arnd Bergmann , Dan Williams , Dave Jiang , "H. Peter Anvin" , Ingo Molnar , Len Brown , linux-acpi@vger.kernel.org, linux-edac , linux-nvdimm@lists.01.org, Qiuxu Zhuo , "Rafael J. Wysocki" , Ross Zwisler , Thomas Gleixner , Tony Luck , x86-ml , Yazen Ghannam List-Id: linux-acpi@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Vishal Verma commit e8a308e5f47e545e0d41d0686c00f5f5217c5f61 upstream. 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 Signed-off-by: Greg Kroah-Hartman --- 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(-) --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h @@ -217,6 +217,7 @@ static inline int umc_normaddr_to_sysadd 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); --- 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_r * 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 return 1; } +EXPORT_SYMBOL_GPL(mce_usable_address); bool mce_is_memory_error(struct mce *m) { --- a/drivers/acpi/nfit/mce.c +++ b/drivers/acpi/nfit/mce.c @@ -29,6 +29,10 @@ static int nfit_handle_mce(struct notifi 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 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: [4.19,091/205] acpi/nfit, x86/mce: Validate a MCEs address before using it From: Greg Kroah-Hartman Message-Id: <20181119162632.213681486@linuxfoundation.org> Date: Mon, 19 Nov 2018 17:26:38 +0100 To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Robert Elliott , Vishal Verma , Borislav Petkov , Arnd Bergmann , Dan Williams , Dave Jiang , "H. Peter Anvin" , Ingo Molnar , Len Brown , linux-acpi@vger.kernel.org, linux-edac , linux-nvdimm@lists.01.org, Qiuxu Zhuo , "Rafael J. Wysocki" , Ross Zwisler , Thomas Gleixner , Tony Luck , x86-ml , Yazen Ghannam List-ID: NC4xOS1zdGFibGUgcmV2aWV3IHBhdGNoLiAgSWYgYW55b25lIGhhcyBhbnkgb2JqZWN0aW9ucywg cGxlYXNlIGxldCBtZSBrbm93LgoKLS0tLS0tLS0tLS0tLS0tLS0tCgpGcm9tOiBWaXNoYWwgVmVy bWEgPHZpc2hhbC5sLnZlcm1hQGludGVsLmNvbT4KCmNvbW1pdCBlOGEzMDhlNWY0N2U1NDVlMGQ0 MWQwNjg2YzAwZjVmNTIxN2M1ZjYxIHVwc3RyZWFtLgoKVGhlIE5GSVQgbWFjaGluZSBjaGVjayBo YW5kbGVyIHVzZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MgZnJvbSB0aGUgbWNlCnN0cnVjdHVyZSwg YW5kIGNvbXBhcmVzIGl0IGFnYWluc3QgaW5mb3JtYXRpb24gaW4gdGhlIEFDUEkgTkZJVCB0YWJs ZQp0byBkZXRlcm1pbmUgd2hldGhlciB0aGF0IGxvY2F0aW9uIGxpZXMgb24gYW4gTlZESU1NLiBU aGUgbWNlLT5hZGRyCmZpZWxkIGhvd2V2ZXIgbWF5IG5vdCBhbHdheXMgYmUgdmFsaWQsIGFuZCB0 aGlzIGlzIGluZGljYXRlZCBieSB0aGUKTUNJX1NUQVRVU19BRERSViBiaXQgaW4gdGhlIHN0YXR1 cyBmaWVsZC4KCkV4cG9ydCBtY2VfdXNhYmxlX2FkZHJlc3MoKSB3aGljaCBhbHJlYWR5IHBlcmZv cm1zIHZhbGlkYXRpb24gZm9yIHRoZQphZGRyZXNzLCBhbmQgdXNlIGl0IGluIHRoZSBORklUIGhh bmRsZXIuCgpGaXhlczogNjgzOWE2ZDk2ZjRlICgibmZpdDogZG8gYW4gQVJTIHNjcnViIG9uIGhp dHRpbmcgYSBsYXRlbnQgbWVkaWEgZXJyb3IiKQpSZXBvcnRlZC1ieTogUm9iZXJ0IEVsbGlvdHQg PGVsbGlvdHRAaHBlLmNvbT4KU2lnbmVkLW9mZi1ieTogVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52 ZXJtYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5k ZT4KQ0M6IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+CkNjOiBEYW4gV2lsbGlhbXMgPGRh bi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ0M6IERhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50ZWwu Y29tPgpDQzogZWxsaW90dEBocGUuY29tCkNDOiAiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0b3Iu Y29tPgpDQzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+CkNDOiBMZW4gQnJvd24gPGxl bmJAa2VybmVsLm9yZz4KQ0M6IGxpbnV4LWFjcGlAdmdlci5rZXJuZWwub3JnCkNDOiBsaW51eC1l ZGFjIDxsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZz4KQ0M6IGxpbnV4LW52ZGltbUBsaXN0cy4w MS5vcmcKQ0M6IFFpdXh1IFpodW8gPHFpdXh1LnpodW9AaW50ZWwuY29tPgpDQzogIlJhZmFlbCBK LiBXeXNvY2tpIiA8cmp3QHJqd3lzb2NraS5uZXQ+CkNDOiBSb3NzIFp3aXNsZXIgPHp3aXNsZXJA a2VybmVsLm9yZz4KQ0M6IHN0YWJsZSA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz4KQ0M6IFRob21h cyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDQzogVG9ueSBMdWNrIDx0b255Lmx1Y2tA aW50ZWwuY29tPgpDQzogeDg2LW1sIDx4ODZAa2VybmVsLm9yZz4KQ0M6IFlhemVuIEdoYW5uYW0g PHlhemVuLmdoYW5uYW1AYW1kLmNvbT4KTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIw MTgxMDI2MDAzNzI5Ljg0MjAtMi12aXNoYWwubC52ZXJtYUBpbnRlbC5jb20KU2lnbmVkLW9mZi1i eTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBh cmNoL3g4Ni9pbmNsdWRlL2FzbS9tY2UuaCAgICAgICB8ICAgIDEgKwogYXJjaC94ODYva2VybmVs L2NwdS9tY2hlY2svbWNlLmMgfCAgICAzICsrLQogZHJpdmVycy9hY3BpL25maXQvbWNlLmMgICAg ICAgICAgfCAgICA0ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCgotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tY2UuaAorKysgYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9tY2UuaApAQCAtMjE3LDYgKzIxNyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50 IHVtY19ub3JtYWRkcl90b19zeXNhZGQKIGludCBtY2VfYXZhaWxhYmxlKHN0cnVjdCBjcHVpbmZv X3g4NiAqYyk7CiBib29sIG1jZV9pc19tZW1vcnlfZXJyb3Ioc3RydWN0IG1jZSAqbSk7CiBib29s IG1jZV9pc19jb3JyZWN0YWJsZShzdHJ1Y3QgbWNlICptKTsKK2ludCBtY2VfdXNhYmxlX2FkZHJl c3Moc3RydWN0IG1jZSAqbSk7CiAKIERFQ0xBUkVfUEVSX0NQVSh1bnNpZ25lZCwgbWNlX2V4Y2Vw dGlvbl9jb3VudCk7CiBERUNMQVJFX1BFUl9DUFUodW5zaWduZWQsIG1jZV9wb2xsX2NvdW50KTsK LS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKKysrIGIvYXJjaC94ODYva2Vy bmVsL2NwdS9tY2hlY2svbWNlLmMKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgdm9pZCBtY2Vf cmVwb3J0X2V2ZW50KHN0cnVjdCBwdF9yCiAgKiBiZSBzb21ld2hhdCBjb21wbGljYXRlZCAoZS5n LiBzZWdtZW50IG9mZnNldCB3b3VsZCByZXF1aXJlIGFuIGluc3RydWN0aW9uCiAgKiBwYXJzZXIp LiBTbyBvbmx5IHN1cHBvcnQgcGh5c2ljYWwgYWRkcmVzc2VzIHVwIHRvIHBhZ2UgZ3JhbnVhbGl0 eSBmb3Igbm93LgogICovCi1zdGF0aWMgaW50IG1jZV91c2FibGVfYWRkcmVzcyhzdHJ1Y3QgbWNl ICptKQoraW50IG1jZV91c2FibGVfYWRkcmVzcyhzdHJ1Y3QgbWNlICptKQogewogCWlmICghKG0t PnN0YXR1cyAmIE1DSV9TVEFUVVNfQUREUlYpKQogCQlyZXR1cm4gMDsKQEAgLTUwNSw2ICs1MDUs NyBAQCBzdGF0aWMgaW50IG1jZV91c2FibGVfYWRkcmVzcyhzdHJ1Y3QgbWNlCiAKIAlyZXR1cm4g MTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKG1jZV91c2FibGVfYWRkcmVzcyk7CiAKIGJvb2wgbWNl X2lzX21lbW9yeV9lcnJvcihzdHJ1Y3QgbWNlICptKQogewotLS0gYS9kcml2ZXJzL2FjcGkvbmZp dC9tY2UuYworKysgYi9kcml2ZXJzL2FjcGkvbmZpdC9tY2UuYwpAQCAtMjksNiArMjksMTAgQEAg c3RhdGljIGludCBuZml0X2hhbmRsZV9tY2Uoc3RydWN0IG5vdGlmaQogCWlmICghbWNlX2lzX21l bW9yeV9lcnJvcihtY2UpIHx8IG1jZV9pc19jb3JyZWN0YWJsZShtY2UpKQogCQlyZXR1cm4gTk9U SUZZX0RPTkU7CiAKKwkvKiBWZXJpZnkgdGhlIGFkZHJlc3MgcmVwb3J0ZWQgaW4gdGhlIE1DRSBp cyB2YWxpZC4gKi8KKwlpZiAoIW1jZV91c2FibGVfYWRkcmVzcyhtY2UpKQorCQlyZXR1cm4gTk9U SUZZX0RPTkU7CisKIAkvKgogCSAqIG1jZS0+YWRkciBjb250YWlucyB0aGUgcGh5c2ljYWwgYWRk ciBhY2Nlc3NlZCB0aGF0IGNhdXNlZCB0aGUKIAkgKiBtYWNoaW5lIGNoZWNrLiBXZSBuZWVkIHRv IHdhbGsgdGhyb3VnaCB0aGUgbGlzdCBvZiBORklUcywgYW5kIHNlZQo=