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: Patch "x86/MCE: Serialize sysfs changes" has been added to the 4.14-stable tree From: Greg Kroah-Hartman Message-Id: <152086934984185@kroah.com> Date: Mon, 12 Mar 2018 16:42:29 +0100 To: kkamagui@gmail.com, bp@suse.de, gregkh@linuxfoundation.org, linux-edac@vger.kernel.org, tglx@linutronix.de, tony.luck@intel.com Cc: stable@vger.kernel.org, stable-commits@vger.kernel.org List-ID: VGhpcyBpcyBhIG5vdGUgdG8gbGV0IHlvdSBrbm93IHRoYXQgSSd2ZSBqdXN0IGFkZGVkIHRoZSBw YXRjaCB0aXRsZWQKCiAgICB4ODYvTUNFOiBTZXJpYWxpemUgc3lzZnMgY2hhbmdlcwoKdG8gdGhl IDQuMTQtc3RhYmxlIHRyZWUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgogICAgaHR0cDovL3d3dy5r ZXJuZWwub3JnL2dpdC8/cD1saW51eC9rZXJuZWwvZ2l0L3N0YWJsZS9zdGFibGUtcXVldWUuZ2l0 O2E9c3VtbWFyeQoKVGhlIGZpbGVuYW1lIG9mIHRoZSBwYXRjaCBpczoKICAgICB4ODYtbWNlLXNl cmlhbGl6ZS1zeXNmcy1jaGFuZ2VzLnBhdGNoCmFuZCBpdCBjYW4gYmUgZm91bmQgaW4gdGhlIHF1 ZXVlLTQuMTQgc3ViZGlyZWN0b3J5LgoKSWYgeW91LCBvciBhbnlvbmUgZWxzZSwgZmVlbHMgaXQg c2hvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgc3RhYmxlIHRyZWUsCnBsZWFzZSBsZXQgPHN0YWJs ZUB2Z2VyLmtlcm5lbC5vcmc+IGtub3cgYWJvdXQgaXQuCgoKRnJvbSBiM2I3YzQ3OTVjY2FiNWJl NzFmMDgwNzc0YzQ1YmJiY2M3NWMyYWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBT ZXVuZ2h1biBIYW4gPGtrYW1hZ3VpQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA2IE1hciAyMDE4IDE1 OjIxOjQzICswMTAwClN1YmplY3Q6IHg4Ni9NQ0U6IFNlcmlhbGl6ZSBzeXNmcyBjaGFuZ2VzCgpG cm9tOiBTZXVuZ2h1biBIYW4gPGtrYW1hZ3VpQGdtYWlsLmNvbT4KCmNvbW1pdCBiM2I3YzQ3OTVj Y2FiNWJlNzFmMDgwNzc0YzQ1YmJiY2M3NWMyYWFmIHVwc3RyZWFtLgoKVGhlIGNoZWNrX2ludGVy dmFsIGZpbGUgaW4KCiAgL3N5cy9kZXZpY2VzL3N5c3RlbS9tYWNoaW5lY2hlY2svbWFjaGluZWNo ZWNrPGNwdSBudW1iZXI+CgpkaXJlY3RvcnkgaXMgYSBnbG9iYWwgdGltZXIgdmFsdWUgZm9yIE1D RSBwb2xsaW5nLiBJZiBpdCBpcyBjaGFuZ2VkIGJ5IG9uZQpDUFUsIG1jZV9yZXN0YXJ0KCkgYnJv YWRjYXN0cyB0aGUgZXZlbnQgdG8gb3RoZXIgQ1BVcyB0byBkZWxldGUgYW5kIHJlc3RhcnQKdGhl IE1DRSBwb2xsaW5nIHRpbWVyIGFuZCBfX21jaGVja19jcHVfaW5pdF90aW1lcigpIHJlaW5pdGlh bGl6ZXMgdGhlCm1jZV90aW1lciB2YXJpYWJsZS4KCklmIG1vcmUgdGhhbiBvbmUgQ1BVIHdyaXRl cyBhIHNwZWNpZmljIHZhbHVlIHRvIHRoZSBjaGVja19pbnRlcnZhbCBmaWxlCmNvbmN1cnJlbnRs eSwgbWNlX3RpbWVyIGlzIG5vdCBwcm90ZWN0ZWQgZnJvbSBzdWNoIGNvbmN1cnJlbnQgYWNjZXNz ZXMgYW5kCmFsbCBraW5kcyBvZiBleHBsb3Npb25zIGhhcHBlbi4gU2luY2Ugb25seSByb290IGNh biB3cml0ZSB0byB0aG9zZSBzeXNmcwp2YXJpYWJsZXMsIHRoZSBpc3N1ZSBpcyBub3QgYSBiaWcg ZGVhbCBzZWN1cml0eS13aXNlLgoKSG93ZXZlciwgY29uY3VycmVudCB3cml0ZXMgdG8gdGhlc2Ug Y29uZmlndXJhdGlvbiB2YXJpYWJsZXMgaXMgdm9pZCBvZgpyZWFzb24gc28gdGhlIHByb3BlciB0 aGluZyB0byBkbyBpcyB0byBzZXJpYWxpemUgdGhlIGFjY2VzcyB3aXRoIGEgbXV0ZXguCgpCb3Jp czoKCiAtIE1ha2Ugc3RvcmVfaW50X3dpdGhfcmVzdGFydCgpIHVzZSBkZXZpY2Vfc3RvcmVfdWxv bmcoKSB0byBmaWx0ZXIgb3V0CiAgIG5lZ2F0aXZlIGludGVydmFscwogLSBMaW1pdCBtaW4gaW50 ZXJ2YWwgdG8gMSBzZWNvbmQKIC0gQ29ycmVjdCBsb2NraW5nCiAtIE1hc3NhZ2UgY29tbWl0IG1l c3NhZ2UKClNpZ25lZC1vZmYtYnk6IFNldW5naHVuIEhhbiA8a2thbWFndWlAZ21haWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+ClNpZ25lZC1vZmYtYnk6 IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDYzogR3JlZyBLcm9haC1IYXJ0 bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IFRvbnkgTHVjayA8dG9ueS5sdWNr QGludGVsLmNvbT4KQ2M6IGxpbnV4LWVkYWMgPGxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnPgpD Yzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwpMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3Iv MjAxODAzMDIyMDI3MDYuOTQzNC0xLWtrYW1hZ3VpQGdtYWlsLmNvbQpTaWduZWQtb2ZmLWJ5OiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGFyY2gv eDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jIHwgICAyMiArKysrKysrKysrKysrKysrKysrKyst CiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKCgpQYXRj aGVzIGN1cnJlbnRseSBpbiBzdGFibGUtcXVldWUgd2hpY2ggbWlnaHQgYmUgZnJvbSBra2FtYWd1 aUBnbWFpbC5jb20gYXJlCgpxdWV1ZS00LjE0L3g4Ni1tY2Utc2VyaWFsaXplLXN5c2ZzLWNoYW5n ZXMucGF0Y2gKLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUg InVuc3Vic2NyaWJlIGxpbnV4LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpv cmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2Vy Lmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKLS0tIGEvYXJjaC94ODYva2VybmVsL2Nw dS9tY2hlY2svbWNlLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKQEAg LTU3LDYgKzU3LDkgQEAKIAogc3RhdGljIERFRklORV9NVVRFWChtY2VfbG9nX211dGV4KTsKIAor Lyogc3lzZnMgc3luY2hyb25pemF0aW9uICovCitzdGF0aWMgREVGSU5FX01VVEVYKG1jZV9zeXNm c19tdXRleCk7CisKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2luY2x1ZGUgPHRyYWNl L2V2ZW50cy9tY2UuaD4KIApAQCAtMjA4Myw2ICsyMDg2LDcgQEAgc3RhdGljIHNzaXplX3Qgc2V0 X2lnbm9yZV9jZShzdHJ1Y3QgZGV2aQogCWlmIChrc3RydG91NjQoYnVmLCAwLCAmbmV3KSA8IDAp CiAJCXJldHVybiAtRUlOVkFMOwogCisJbXV0ZXhfbG9jaygmbWNlX3N5c2ZzX211dGV4KTsKIAlp ZiAobWNhX2NmZy5pZ25vcmVfY2UgXiAhIW5ldykgewogCQlpZiAobmV3KSB7CiAJCQkvKiBkaXNh YmxlIGNlIGZlYXR1cmVzICovCkBAIC0yMDk1LDYgKzIwOTksOCBAQCBzdGF0aWMgc3NpemVfdCBz ZXRfaWdub3JlX2NlKHN0cnVjdCBkZXZpCiAJCQlvbl9lYWNoX2NwdShtY2VfZW5hYmxlX2NlLCAo dm9pZCAqKTEsIDEpOwogCQl9CiAJfQorCW11dGV4X3VubG9jaygmbWNlX3N5c2ZzX211dGV4KTsK KwogCXJldHVybiBzaXplOwogfQogCkBAIC0yMTA3LDYgKzIxMTMsNyBAQCBzdGF0aWMgc3NpemVf dCBzZXRfY21jaV9kaXNhYmxlZChzdHJ1Y3QKIAlpZiAoa3N0cnRvdTY0KGJ1ZiwgMCwgJm5ldykg PCAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCW11dGV4X2xvY2soJm1jZV9zeXNmc19tdXRleCk7 CiAJaWYgKG1jYV9jZmcuY21jaV9kaXNhYmxlZCBeICEhbmV3KSB7CiAJCWlmIChuZXcpIHsKIAkJ CS8qIGRpc2FibGUgY21jaSAqLwpAQCAtMjExOCw2ICsyMTI1LDggQEAgc3RhdGljIHNzaXplX3Qg c2V0X2NtY2lfZGlzYWJsZWQoc3RydWN0CiAJCQlvbl9lYWNoX2NwdShtY2VfZW5hYmxlX2NlLCBO VUxMLCAxKTsKIAkJfQogCX0KKwltdXRleF91bmxvY2soJm1jZV9zeXNmc19tdXRleCk7CisKIAly ZXR1cm4gc2l6ZTsKIH0KIApAQCAtMjEyNSw4ICsyMTM0LDE5IEBAIHN0YXRpYyBzc2l6ZV90IHN0 b3JlX2ludF93aXRoX3Jlc3RhcnQoc3QKIAkJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKIAkJCQkgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKQogewotCXNz aXplX3QgcmV0ID0gZGV2aWNlX3N0b3JlX2ludChzLCBhdHRyLCBidWYsIHNpemUpOworCXVuc2ln bmVkIGxvbmcgb2xkX2NoZWNrX2ludGVydmFsID0gY2hlY2tfaW50ZXJ2YWw7CisJc3NpemVfdCBy ZXQgPSBkZXZpY2Vfc3RvcmVfdWxvbmcocywgYXR0ciwgYnVmLCBzaXplKTsKKworCWlmIChjaGVj a19pbnRlcnZhbCA9PSBvbGRfY2hlY2tfaW50ZXJ2YWwpCisJCXJldHVybiByZXQ7CisKKwlpZiAo Y2hlY2tfaW50ZXJ2YWwgPCAxKQorCQljaGVja19pbnRlcnZhbCA9IDE7CisKKwltdXRleF9sb2Nr KCZtY2Vfc3lzZnNfbXV0ZXgpOwogCW1jZV9yZXN0YXJ0KCk7CisJbXV0ZXhfdW5sb2NrKCZtY2Vf c3lzZnNfbXV0ZXgpOworCiAJcmV0dXJuIHJldDsKIH0KIAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:57596 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752202AbeCLPnO (ORCPT ); Mon, 12 Mar 2018 11:43:14 -0400 Subject: Patch "x86/MCE: Serialize sysfs changes" has been added to the 4.14-stable tree To: kkamagui@gmail.com, bp@suse.de, gregkh@linuxfoundation.org, linux-edac@vger.kernel.org, tglx@linutronix.de, tony.luck@intel.com Cc: , From: Date: Mon, 12 Mar 2018 16:42:29 +0100 Message-ID: <152086934984185@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled x86/MCE: Serialize sysfs changes to the 4.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: x86-mce-serialize-sysfs-changes.patch and it can be found in the queue-4.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From b3b7c4795ccab5be71f080774c45bbbcc75c2aaf Mon Sep 17 00:00:00 2001 From: Seunghun Han Date: Tue, 6 Mar 2018 15:21:43 +0100 Subject: x86/MCE: Serialize sysfs changes From: Seunghun Han commit b3b7c4795ccab5be71f080774c45bbbcc75c2aaf upstream. The check_interval file in /sys/devices/system/machinecheck/machinecheck directory is a global timer value for MCE polling. If it is changed by one CPU, mce_restart() broadcasts the event to other CPUs to delete and restart the MCE polling timer and __mcheck_cpu_init_timer() reinitializes the mce_timer variable. If more than one CPU writes a specific value to the check_interval file concurrently, mce_timer is not protected from such concurrent accesses and all kinds of explosions happen. Since only root can write to those sysfs variables, the issue is not a big deal security-wise. However, concurrent writes to these configuration variables is void of reason so the proper thing to do is to serialize the access with a mutex. Boris: - Make store_int_with_restart() use device_store_ulong() to filter out negative intervals - Limit min interval to 1 second - Correct locking - Massage commit message Signed-off-by: Seunghun Han Signed-off-by: Borislav Petkov Signed-off-by: Thomas Gleixner Cc: Greg Kroah-Hartman Cc: Tony Luck Cc: linux-edac Cc: stable@vger.kernel.org Link: http://lkml.kernel.org/r/20180302202706.9434-1-kkamagui@gmail.com Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/cpu/mcheck/mce.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -57,6 +57,9 @@ static DEFINE_MUTEX(mce_log_mutex); +/* sysfs synchronization */ +static DEFINE_MUTEX(mce_sysfs_mutex); + #define CREATE_TRACE_POINTS #include @@ -2083,6 +2086,7 @@ static ssize_t set_ignore_ce(struct devi if (kstrtou64(buf, 0, &new) < 0) return -EINVAL; + mutex_lock(&mce_sysfs_mutex); if (mca_cfg.ignore_ce ^ !!new) { if (new) { /* disable ce features */ @@ -2095,6 +2099,8 @@ static ssize_t set_ignore_ce(struct devi on_each_cpu(mce_enable_ce, (void *)1, 1); } } + mutex_unlock(&mce_sysfs_mutex); + return size; } @@ -2107,6 +2113,7 @@ static ssize_t set_cmci_disabled(struct if (kstrtou64(buf, 0, &new) < 0) return -EINVAL; + mutex_lock(&mce_sysfs_mutex); if (mca_cfg.cmci_disabled ^ !!new) { if (new) { /* disable cmci */ @@ -2118,6 +2125,8 @@ static ssize_t set_cmci_disabled(struct on_each_cpu(mce_enable_ce, NULL, 1); } } + mutex_unlock(&mce_sysfs_mutex); + return size; } @@ -2125,8 +2134,19 @@ static ssize_t store_int_with_restart(st struct device_attribute *attr, const char *buf, size_t size) { - ssize_t ret = device_store_int(s, attr, buf, size); + unsigned long old_check_interval = check_interval; + ssize_t ret = device_store_ulong(s, attr, buf, size); + + if (check_interval == old_check_interval) + return ret; + + if (check_interval < 1) + check_interval = 1; + + mutex_lock(&mce_sysfs_mutex); mce_restart(); + mutex_unlock(&mce_sysfs_mutex); + return ret; } Patches currently in stable-queue which might be from kkamagui@gmail.com are queue-4.14/x86-mce-serialize-sysfs-changes.patch