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 3.18-stable tree From: Greg Kroah-Hartman Message-Id: <1520869075110170@kroah.com> Date: Mon, 12 Mar 2018 16:37:55 +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 IDMuMTgtc3RhYmxlIHRyZWUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgogICAgaHR0cDovL3d3dy5r ZXJuZWwub3JnL2dpdC8/cD1saW51eC9rZXJuZWwvZ2l0L3N0YWJsZS9zdGFibGUtcXVldWUuZ2l0 O2E9c3VtbWFyeQoKVGhlIGZpbGVuYW1lIG9mIHRoZSBwYXRjaCBpczoKICAgICB4ODYtbWNlLXNl cmlhbGl6ZS1zeXNmcy1jaGFuZ2VzLnBhdGNoCmFuZCBpdCBjYW4gYmUgZm91bmQgaW4gdGhlIHF1 ZXVlLTMuMTggc3ViZGlyZWN0b3J5LgoKSWYgeW91LCBvciBhbnlvbmUgZWxzZSwgZmVlbHMgaXQg 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 aUBnbWFpbC5jb20gYXJlCgpxdWV1ZS0zLjE4L3g4Ni1tY2Utc2VyaWFsaXplLXN5c2ZzLWNoYW5n ZXMucGF0Y2gKLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUg InVuc3Vic2NyaWJlIGxpbnV4LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpv cmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2Vy Lmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKLS0tIGEvYXJjaC94ODYva2VybmVsL2Nw dS9tY2hlY2svbWNlLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKQEAg LTU2LDYgKzU2LDkgQEAgc3RhdGljIERFRklORV9NVVRFWChtY2VfY2hyZGV2X3JlYWRfbXV0ZQog CQkJICAgICAgcmN1X3JlYWRfbG9ja19zY2hlZF9oZWxkKCkgfHwgXAogCQkJICAgICAgbG9ja2Rl cF9pc19oZWxkKCZtY2VfY2hyZGV2X3JlYWRfbXV0ZXgpKQogCisvKiBzeXNmcyBzeW5jaHJvbml6 YXRpb24gKi8KK3N0YXRpYyBERUZJTkVfTVVURVgobWNlX3N5c2ZzX211dGV4KTsKKwogI2RlZmlu ZSBDUkVBVEVfVFJBQ0VfUE9JTlRTCiAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL21jZS5oPgogCkBA IC0yMTgzLDYgKzIxODYsNyBAQCBzdGF0aWMgc3NpemVfdCBzZXRfaWdub3JlX2NlKHN0cnVjdCBk ZXZpCiAJaWYgKGtzdHJ0b3U2NChidWYsIDAsICZuZXcpIDwgMCkKIAkJcmV0dXJuIC1FSU5WQUw7 CiAKKwltdXRleF9sb2NrKCZtY2Vfc3lzZnNfbXV0ZXgpOwogCWlmIChtY2FfY2ZnLmlnbm9yZV9j ZSBeICEhbmV3KSB7CiAJCWlmIChuZXcpIHsKIAkJCS8qIGRpc2FibGUgY2UgZmVhdHVyZXMgKi8K QEAgLTIxOTUsNiArMjE5OSw4IEBAIHN0YXRpYyBzc2l6ZV90IHNldF9pZ25vcmVfY2Uoc3RydWN0 IGRldmkKIAkJCW9uX2VhY2hfY3B1KG1jZV9lbmFibGVfY2UsICh2b2lkICopMSwgMSk7CiAJCX0K IAl9CisJbXV0ZXhfdW5sb2NrKCZtY2Vfc3lzZnNfbXV0ZXgpOworCiAJcmV0dXJuIHNpemU7CiB9 CiAKQEAgLTIyMDcsNiArMjIxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IHNldF9jbWNpX2Rpc2FibGVk KHN0cnVjdAogCWlmIChrc3RydG91NjQoYnVmLCAwLCAmbmV3KSA8IDApCiAJCXJldHVybiAtRUlO VkFMOwogCisJbXV0ZXhfbG9jaygmbWNlX3N5c2ZzX211dGV4KTsKIAlpZiAobWNhX2NmZy5jbWNp X2Rpc2FibGVkIF4gISFuZXcpIHsKIAkJaWYgKG5ldykgewogCQkJLyogZGlzYWJsZSBjbWNpICov CkBAIC0yMjE4LDYgKzIyMjUsOCBAQCBzdGF0aWMgc3NpemVfdCBzZXRfY21jaV9kaXNhYmxlZChz dHJ1Y3QKIAkJCW9uX2VhY2hfY3B1KG1jZV9lbmFibGVfY2UsIE5VTEwsIDEpOwogCQl9CiAJfQor CW11dGV4X3VubG9jaygmbWNlX3N5c2ZzX211dGV4KTsKKwogCXJldHVybiBzaXplOwogfQogCkBA IC0yMjI1LDggKzIyMzQsMTkgQEAgc3RhdGljIHNzaXplX3Qgc3RvcmVfaW50X3dpdGhfcmVzdGFy dChzdAogCQkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkJCSAgICAg IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7Ci0Jc3NpemVfdCByZXQgPSBkZXZpY2Vf c3RvcmVfaW50KHMsIGF0dHIsIGJ1Ziwgc2l6ZSk7CisJdW5zaWduZWQgbG9uZyBvbGRfY2hlY2tf aW50ZXJ2YWwgPSBjaGVja19pbnRlcnZhbDsKKwlzc2l6ZV90IHJldCA9IGRldmljZV9zdG9yZV91 bG9uZyhzLCBhdHRyLCBidWYsIHNpemUpOworCisJaWYgKGNoZWNrX2ludGVydmFsID09IG9sZF9j aGVja19pbnRlcnZhbCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChjaGVja19pbnRlcnZhbCA8IDEp CisJCWNoZWNrX2ludGVydmFsID0gMTsKKworCW11dGV4X2xvY2soJm1jZV9zeXNmc19tdXRleCk7 CiAJbWNlX3Jlc3RhcnQoKTsKKwltdXRleF91bmxvY2soJm1jZV9zeXNmc19tdXRleCk7CisKIAly ZXR1cm4gcmV0OwogfQogCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:54604 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751442AbeCLPiG (ORCPT ); Mon, 12 Mar 2018 11:38:06 -0400 Subject: Patch "x86/MCE: Serialize sysfs changes" has been added to the 3.18-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:37:55 +0100 Message-ID: <1520869075110170@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 3.18-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-3.18 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 @@ -56,6 +56,9 @@ static DEFINE_MUTEX(mce_chrdev_read_mute rcu_read_lock_sched_held() || \ lockdep_is_held(&mce_chrdev_read_mutex)) +/* sysfs synchronization */ +static DEFINE_MUTEX(mce_sysfs_mutex); + #define CREATE_TRACE_POINTS #include @@ -2183,6 +2186,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 */ @@ -2195,6 +2199,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; } @@ -2207,6 +2213,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 */ @@ -2218,6 +2225,8 @@ static ssize_t set_cmci_disabled(struct on_each_cpu(mce_enable_ce, NULL, 1); } } + mutex_unlock(&mce_sysfs_mutex); + return size; } @@ -2225,8 +2234,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-3.18/x86-mce-serialize-sysfs-changes.patch