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.4-stable tree From: Greg Kroah-Hartman Message-Id: <152086960522241@kroah.com> Date: Mon, 12 Mar 2018 16:46:45 +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 IDQuNC1zdGFibGUgdHJlZSB3aGljaCBjYW4gYmUgZm91bmQgYXQ6CiAgICBodHRwOi8vd3d3Lmtl cm5lbC5vcmcvZ2l0Lz9wPWxpbnV4L2tlcm5lbC9naXQvc3RhYmxlL3N0YWJsZS1xdWV1ZS5naXQ7 YT1zdW1tYXJ5CgpUaGUgZmlsZW5hbWUgb2YgdGhlIHBhdGNoIGlzOgogICAgIHg4Ni1tY2Utc2Vy aWFsaXplLXN5c2ZzLWNoYW5nZXMucGF0Y2gKYW5kIGl0IGNhbiBiZSBmb3VuZCBpbiB0aGUgcXVl dWUtNC40IHN1YmRpcmVjdG9yeS4KCklmIHlvdSwgb3IgYW55b25lIGVsc2UsIGZlZWxzIGl0IHNo b3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIHN0YWJsZSB0cmVlLApwbGVhc2UgbGV0IDxzdGFibGVA dmdlci5rZXJuZWwub3JnPiBrbm93IGFib3V0IGl0LgoKCkZyb20gYjNiN2M0Nzk1Y2NhYjViZTcx ZjA4MDc3NGM0NWJiYmNjNzVjMmFhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU2V1 bmdodW4gSGFuIDxra2FtYWd1aUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNiBNYXIgMjAxOCAxNToy MTo0MyArMDEwMApTdWJqZWN0OiB4ODYvTUNFOiBTZXJpYWxpemUgc3lzZnMgY2hhbmdlcwoKRnJv bTogU2V1bmdodW4gSGFuIDxra2FtYWd1aUBnbWFpbC5jb20+Cgpjb21taXQgYjNiN2M0Nzk1Y2Nh YjViZTcxZjA4MDc3NGM0NWJiYmNjNzVjMmFhZiB1cHN0cmVhbS4KClRoZSBjaGVja19pbnRlcnZh bCBmaWxlIGluCgogIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWFjaGluZWNoZWNrL21hY2hpbmVjaGVj azxjcHUgbnVtYmVyPgoKZGlyZWN0b3J5IGlzIGEgZ2xvYmFsIHRpbWVyIHZhbHVlIGZvciBNQ0Ug cG9sbGluZy4gSWYgaXQgaXMgY2hhbmdlZCBieSBvbmUKQ1BVLCBtY2VfcmVzdGFydCgpIGJyb2Fk Y2FzdHMgdGhlIGV2ZW50IHRvIG90aGVyIENQVXMgdG8gZGVsZXRlIGFuZCByZXN0YXJ0CnRoZSBN Q0UgcG9sbGluZyB0aW1lciBhbmQgX19tY2hlY2tfY3B1X2luaXRfdGltZXIoKSByZWluaXRpYWxp emVzIHRoZQptY2VfdGltZXIgdmFyaWFibGUuCgpJZiBtb3JlIHRoYW4gb25lIENQVSB3cml0ZXMg YSBzcGVjaWZpYyB2YWx1ZSB0byB0aGUgY2hlY2tfaW50ZXJ2YWwgZmlsZQpjb25jdXJyZW50bHks IG1jZV90aW1lciBpcyBub3QgcHJvdGVjdGVkIGZyb20gc3VjaCBjb25jdXJyZW50IGFjY2Vzc2Vz IGFuZAphbGwga2luZHMgb2YgZXhwbG9zaW9ucyBoYXBwZW4uIFNpbmNlIG9ubHkgcm9vdCBjYW4g d3JpdGUgdG8gdGhvc2Ugc3lzZnMKdmFyaWFibGVzLCB0aGUgaXNzdWUgaXMgbm90IGEgYmlnIGRl YWwgc2VjdXJpdHktd2lzZS4KCkhvd2V2ZXIsIGNvbmN1cnJlbnQgd3JpdGVzIHRvIHRoZXNlIGNv bmZpZ3VyYXRpb24gdmFyaWFibGVzIGlzIHZvaWQgb2YKcmVhc29uIHNvIHRoZSBwcm9wZXIgdGhp bmcgdG8gZG8gaXMgdG8gc2VyaWFsaXplIHRoZSBhY2Nlc3Mgd2l0aCBhIG11dGV4LgoKQm9yaXM6 CgogLSBNYWtlIHN0b3JlX2ludF93aXRoX3Jlc3RhcnQoKSB1c2UgZGV2aWNlX3N0b3JlX3Vsb25n KCkgdG8gZmlsdGVyIG91dAogICBuZWdhdGl2ZSBpbnRlcnZhbHMKIC0gTGltaXQgbWluIGludGVy dmFsIHRvIDEgc2Vjb25kCiAtIENvcnJlY3QgbG9ja2luZwogLSBNYXNzYWdlIGNvbW1pdCBtZXNz YWdlCgpTaWduZWQtb2ZmLWJ5OiBTZXVuZ2h1biBIYW4gPGtrYW1hZ3VpQGdtYWlsLmNvbT4KU2ln bmVkLW9mZi1ieTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5OiBU aG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CkNjOiBUb255IEx1Y2sgPHRvbnkubHVja0Bp bnRlbC5jb20+CkNjOiBsaW51eC1lZGFjIDxsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZz4KQ2M6 IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIw MTgwMzAyMjAyNzA2Ljk0MzQtMS1ra2FtYWd1aUBnbWFpbC5jb20KU2lnbmVkLW9mZi1ieTogR3Jl ZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL3g4 Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UuYyB8ICAgMjIgKysrKysrKysrKysrKysrKysrKysrLQog MSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCgoKUGF0Y2hl cyBjdXJyZW50bHkgaW4gc3RhYmxlLXF1ZXVlIHdoaWNoIG1pZ2h0IGJlIGZyb20ga2thbWFndWlA Z21haWwuY29tIGFyZQoKcXVldWUtNC40L3g4Ni1tY2Utc2VyaWFsaXplLXN5c2ZzLWNoYW5nZXMu cGF0Y2gKLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVu c3Vic2NyaWJlIGxpbnV4LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRv bW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtl cm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9t Y2hlY2svbWNlLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKQEAgLTYw LDYgKzYwLDkgQEAgc3RhdGljIERFRklORV9NVVRFWChtY2VfY2hyZGV2X3JlYWRfbXV0ZQogCXNt cF9sb2FkX2FjcXVpcmUoJihwKSk7IFwKIH0pCiAKKy8qIHN5c2ZzIHN5bmNocm9uaXphdGlvbiAq Lworc3RhdGljIERFRklORV9NVVRFWChtY2Vfc3lzZnNfbXV0ZXgpOworCiAjZGVmaW5lIENSRUFU RV9UUkFDRV9QT0lOVFMKICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvbWNlLmg+CiAKQEAgLTIyMjAs NiArMjIyMyw3IEBAIHN0YXRpYyBzc2l6ZV90IHNldF9pZ25vcmVfY2Uoc3RydWN0IGRldmkKIAlp ZiAoa3N0cnRvdTY0KGJ1ZiwgMCwgJm5ldykgPCAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCW11 dGV4X2xvY2soJm1jZV9zeXNmc19tdXRleCk7CiAJaWYgKG1jYV9jZmcuaWdub3JlX2NlIF4gISFu ZXcpIHsKIAkJaWYgKG5ldykgewogCQkJLyogZGlzYWJsZSBjZSBmZWF0dXJlcyAqLwpAQCAtMjIz Miw2ICsyMjM2LDggQEAgc3RhdGljIHNzaXplX3Qgc2V0X2lnbm9yZV9jZShzdHJ1Y3QgZGV2aQog CQkJb25fZWFjaF9jcHUobWNlX2VuYWJsZV9jZSwgKHZvaWQgKikxLCAxKTsKIAkJfQogCX0KKwlt dXRleF91bmxvY2soJm1jZV9zeXNmc19tdXRleCk7CisKIAlyZXR1cm4gc2l6ZTsKIH0KIApAQCAt MjI0NCw2ICsyMjUwLDcgQEAgc3RhdGljIHNzaXplX3Qgc2V0X2NtY2lfZGlzYWJsZWQoc3RydWN0 CiAJaWYgKGtzdHJ0b3U2NChidWYsIDAsICZuZXcpIDwgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAK KwltdXRleF9sb2NrKCZtY2Vfc3lzZnNfbXV0ZXgpOwogCWlmIChtY2FfY2ZnLmNtY2lfZGlzYWJs ZWQgXiAhIW5ldykgewogCQlpZiAobmV3KSB7CiAJCQkvKiBkaXNhYmxlIGNtY2kgKi8KQEAgLTIy NTUsNiArMjI2Miw4IEBAIHN0YXRpYyBzc2l6ZV90IHNldF9jbWNpX2Rpc2FibGVkKHN0cnVjdAog CQkJb25fZWFjaF9jcHUobWNlX2VuYWJsZV9jZSwgTlVMTCwgMSk7CiAJCX0KIAl9CisJbXV0ZXhf dW5sb2NrKCZtY2Vfc3lzZnNfbXV0ZXgpOworCiAJcmV0dXJuIHNpemU7CiB9CiAKQEAgLTIyNjIs OCArMjI3MSwxOSBAQCBzdGF0aWMgc3NpemVfdCBzdG9yZV9pbnRfd2l0aF9yZXN0YXJ0KHN0CiAJ CQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJICAgICAgY29uc3Qg Y2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKIHsKLQlzc2l6ZV90IHJldCA9IGRldmljZV9zdG9yZV9p bnQocywgYXR0ciwgYnVmLCBzaXplKTsKKwl1bnNpZ25lZCBsb25nIG9sZF9jaGVja19pbnRlcnZh bCA9IGNoZWNrX2ludGVydmFsOworCXNzaXplX3QgcmV0ID0gZGV2aWNlX3N0b3JlX3Vsb25nKHMs IGF0dHIsIGJ1Ziwgc2l6ZSk7CisKKwlpZiAoY2hlY2tfaW50ZXJ2YWwgPT0gb2xkX2NoZWNrX2lu dGVydmFsKQorCQlyZXR1cm4gcmV0OworCisJaWYgKGNoZWNrX2ludGVydmFsIDwgMSkKKwkJY2hl Y2tfaW50ZXJ2YWwgPSAxOworCisJbXV0ZXhfbG9jaygmbWNlX3N5c2ZzX211dGV4KTsKIAltY2Vf cmVzdGFydCgpOworCW11dGV4X3VubG9jaygmbWNlX3N5c2ZzX211dGV4KTsKKwogCXJldHVybiBy ZXQ7CiB9CiAK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:60272 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751442AbeCLPro (ORCPT ); Mon, 12 Mar 2018 11:47:44 -0400 Subject: Patch "x86/MCE: Serialize sysfs changes" has been added to the 4.4-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:46:45 +0100 Message-ID: <152086960522241@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.4-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.4 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 @@ -60,6 +60,9 @@ static DEFINE_MUTEX(mce_chrdev_read_mute smp_load_acquire(&(p)); \ }) +/* sysfs synchronization */ +static DEFINE_MUTEX(mce_sysfs_mutex); + #define CREATE_TRACE_POINTS #include @@ -2220,6 +2223,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 */ @@ -2232,6 +2236,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; } @@ -2244,6 +2250,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 */ @@ -2255,6 +2262,8 @@ static ssize_t set_cmci_disabled(struct on_each_cpu(mce_enable_ce, NULL, 1); } } + mutex_unlock(&mce_sysfs_mutex); + return size; } @@ -2262,8 +2271,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.4/x86-mce-serialize-sysfs-changes.patch