From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 20/25] x86emul: correctly handle CMPXCHG* comparison failures Date: Thu, 07 Dec 2017 07:15:32 -0700 Message-ID: <5A295B140200007800195988@prv-mh.provo.novell.com> References: <5A29550C020000780019585B@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMwxh-00085F-8r for xen-devel@lists.xenproject.org; Thu, 07 Dec 2017 14:15:41 +0000 In-Reply-To: <5A29550C020000780019585B@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Tim Deegan List-Id: xen-devel@lists.xenproject.org SWYgdGhlIC0+Y21weGNoZygpIGhvb2sgZmluZHMgYSBtaXNtYXRjaCwgd2Ugc2hvdWxkIGRlYWwg d2l0aCB0aGlzIHRoZQpzYW1lIHdheSBhcyB3aGVuIHRoZSAibWFudWFsIiBjb21wYXJpc29uIHJl cG9ydHMgYSBtaXNtYXRjaC4KClRoaXMgaW52b2x2ZXMgcmV2ZXJ0aW5nIGJmY2UwZTYyYzMgKCJ4 ODYvZW11bDogRHJvcApYODZFTVVMX0NNUFhDSEdfRkFJTEVEIiksIGFsYmVpdCB3aXRoIFg4NkVN VUxfQ01QWENIR19GQUlMRUQgbm93CmJlY29taW5nIGEgdmFsdWUgZGlzdGluY3QgZnJvbSBYODZF TVVMX1JFVFJZLgoKSW4gb3JkZXIgdG8gbm90IGxlYXZlIG1peGVkIGNvZGUgYWxzbyBmdWxseSBz d2l0Y2ggYWZmZWN0ZWQgZnVuY3Rpb25zCmZyb20gcGFkZHJfdCB0byBpbnRwdGVfdC4KClNpZ25l ZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnYzOiBOZXcuCi0t LQpUaGUgY29kZSBjb3VsZCBiZSBmdXJ0aGVyIHNpbXBsaWZpZWQgaWYgd2UgY291bGQgcmVseSBv biBhbGwKLT5jbXB4Y2hnKCkgaG9va3MgYWx3YXlzIHVzaW5nIENNUFhDSEcsIGJ1dCBmb3Igbm93 IHdlIG5lZWQgdG8gY29wZQp3aXRoIHRoZW0gdXNpbmcgcGxhaW4gd3JpdGVzIChhbmQgaGVuY2Ug YWNjZXB0IHRoZSBkb3VibGUgcmVhZHMgaWYKQ01QWENIRyBpcyBhY3R1YWxseSBiZWluZyB1c2Vk KS4KTm90ZSB0aGF0IHRoZSBwYXRjaCBkb2Vzbid0IGFkZHJlc3MgdGhlIGluY29ycmVjdG5lc3Mg b2YgdGhlcmUgbm90CmJlaW5nIGEgbWVtb3J5IHdyaXRlIGV2ZW4gaW4gdGhlIGNvbXBhcmlzb24t ZmFpbGVkIGNhc2UuCgotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBi L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKQEAgLTMwMiw4ICszMDIsMTIgQEAgaHZt X2VtdWxhdGVfY21weGNoZyhlbnVtIHg4Nl9zZWdtZW50IHNlZwogICAgIG1lbWNweSgmb2xkLCBw X29sZCwgYnl0ZXMpOwogICAgIG1lbWNweSgmbmV3LCBwX25ldywgYnl0ZXMpOwogCi0gICAgcmV0 dXJuIHYtPmFyY2gucGFnaW5nLm1vZGUtPnNoYWRvdy54ODZfZW11bGF0ZV9jbXB4Y2hnKAotICAg ICAgICAgICAgICAgdiwgYWRkciwgb2xkLCBuZXcsIGJ5dGVzLCBzaF9jdHh0KTsKKyAgICByYyA9 IHYtPmFyY2gucGFnaW5nLm1vZGUtPnNoYWRvdy54ODZfZW11bGF0ZV9jbXB4Y2hnKAorICAgICAg ICAgICAgIHYsIGFkZHIsICZvbGQsIG5ldywgYnl0ZXMsIHNoX2N0eHQpOworCisgICAgbWVtY3B5 KHBfb2xkLCAmb2xkLCBieXRlcyk7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGh2bV9zaGFkb3dfZW11bGF0b3Jfb3BzID0gewotLS0g YS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3No YWRvdy9tdWx0aS5jCkBAIC00NzQxLDExICs0NzQxLDExIEBAIHNoX3g4Nl9lbXVsYXRlX3dyaXRl KHN0cnVjdCB2Y3B1ICp2LCB1bnMKIAogc3RhdGljIGludAogc2hfeDg2X2VtdWxhdGVfY21weGNo ZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YWRkciwKLSAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkLCB1bnNpZ25lZCBsb25nIG5ldywKLSAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlcywgc3RydWN0IHNoX2VtdWxhdGVfY3R4dCAq c2hfY3R4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcF9vbGQsIHVu c2lnbmVkIGxvbmcgbmV3LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnl0 ZXMsIHN0cnVjdCBzaF9lbXVsYXRlX2N0eHQgKnNoX2N0eHQpCiB7CiAgICAgdm9pZCAqYWRkcjsK LSAgICB1bnNpZ25lZCBsb25nIHByZXY7CisgICAgdW5zaWduZWQgbG9uZyBwcmV2LCBvbGQgPSAq cF9vbGQ7CiAgICAgaW50IHJ2ID0gWDg2RU1VTF9PS0FZOwogCiAgICAgLyogVW5hbGlnbmVkIHdy aXRlcyBhcmUgb25seSBhY2NlcHRhYmxlIG9uIEhWTSAqLwpAQCAtNDc2OSw3ICs0NzY5LDEwIEBA IHNoX3g4Nl9lbXVsYXRlX2NtcHhjaGcoc3RydWN0IHZjcHUgKnYsIHUKICAgICB9CiAKICAgICBp ZiAoIHByZXYgIT0gb2xkICkKLSAgICAgICAgcnYgPSBYODZFTVVMX1JFVFJZOworICAgIHsKKyAg ICAgICAgKnBfb2xkID0gcHJldjsKKyAgICAgICAgcnYgPSBYODZFTVVMX0NNUFhDSEdfRkFJTEVE OworICAgIH0KIAogICAgIFNIQURPV19ERUJVRyhFTVVMQVRFLCAidmEgJSNseCB3YXMgJSNseCBl eHBlY3RlZCAlI2x4IgogICAgICAgICAgICAgICAgICAgIiB3YW50ZWQgJSNseCBub3cgJSNseCBi eXRlcyAldVxuIiwKLS0tIGEveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2UtZmF1bHQuYworKysgYi94 ZW4vYXJjaC94ODYvcHYvcm8tcGFnZS1mYXVsdC5jCkBAIC02NSwxNCArNjUsMTYgQEAgc3RhdGlj IGludCBwdHdyX2VtdWxhdGVkX3JlYWQoZW51bSB4ODZfcwogICAgIHJldHVybiBYODZFTVVMX09L QVk7CiB9CiAKLXN0YXRpYyBpbnQgcHR3cl9lbXVsYXRlZF91cGRhdGUodW5zaWduZWQgbG9uZyBh ZGRyLCBwYWRkcl90IG9sZCwgcGFkZHJfdCB2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBieXRlcywgdW5zaWduZWQgaW50IGRvX2NtcHhjaGcsCitzdGF0 aWMgaW50IHB0d3JfZW11bGF0ZWRfdXBkYXRlKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50cHRlX3Qg KnBfb2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRwdGVfdCB2YWwsIHVu c2lnbmVkIGludCBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBtZm47CiAgICAg dW5zaWduZWQgbG9uZyB1bmFsaWduZWRfYWRkciA9IGFkZHI7CiAgICAgc3RydWN0IHBhZ2VfaW5m byAqcGFnZTsKICAgICBsMV9wZ2VudHJ5X3QgcHRlLCBvbDFlLCBubDFlLCAqcGwxZTsKKyAgICBp bnRwdGVfdCBvbGQgPSBwX29sZCA/ICpwX29sZCA6IDA7CisgICAgdW5zaWduZWQgaW50IG9mZnNl dCA9IDA7CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwogICAgIHN0cnVjdCBkb21haW4g KmQgPSB2LT5kb21haW47CiAgICAgc3RydWN0IHB0d3JfZW11bGF0ZV9jdHh0ICpwdHdyX2N0eHQg PSBjdHh0LT5kYXRhOwpAQCAtODgsMjggKzkwLDMwIEBAIHN0YXRpYyBpbnQgcHR3cl9lbXVsYXRl ZF91cGRhdGUodW5zaWduZWQKICAgICB9CiAKICAgICAvKiBUdXJuIGEgc3ViLXdvcmQgYWNjZXNz IGludG8gYSBmdWxsLXdvcmQgYWNjZXNzLiAqLwotICAgIGlmICggYnl0ZXMgIT0gc2l6ZW9mKHBh ZGRyX3QpICkKKyAgICBpZiAoIGJ5dGVzICE9IHNpemVvZih2YWwpICkKICAgICB7Ci0gICAgICAg IHBhZGRyX3QgICAgICBmdWxsOwotICAgICAgICB1bnNpZ25lZCBpbnQgcmMsIG9mZnNldCA9IGFk ZHIgJiAoc2l6ZW9mKHBhZGRyX3QpIC0gMSk7CisgICAgICAgIGludHB0ZV90IGZ1bGw7CisgICAg ICAgIHVuc2lnbmVkIGludCByYzsKKworICAgICAgICBvZmZzZXQgPSBhZGRyICYgKHNpemVvZihm dWxsKSAtIDEpOwogCiAgICAgICAgIC8qIEFsaWduIGFkZHJlc3M7IHJlYWQgZnVsbCB3b3JkLiAq LwotICAgICAgICBhZGRyICY9IH4oc2l6ZW9mKHBhZGRyX3QpIC0gMSk7Ci0gICAgICAgIGlmICgg KHJjID0gY29weV9mcm9tX3VzZXIoJmZ1bGwsICh2b2lkICopYWRkciwgc2l6ZW9mKHBhZGRyX3Qp KSkgIT0gMCApCisgICAgICAgIGFkZHIgJj0gfihzaXplb2YoZnVsbCkgLSAxKTsKKyAgICAgICAg aWYgKCAocmMgPSBjb3B5X2Zyb21fdXNlcigmZnVsbCwgKHZvaWQgKilhZGRyLCBzaXplb2YoZnVs bCkpKSAhPSAwICkKICAgICAgICAgewogICAgICAgICAgICAgeDg2X2VtdWxfcGFnZWZhdWx0KDAs IC8qIFJlYWQgZmF1bHQuICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciAr IHNpemVvZihwYWRkcl90KSAtIHJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk ZHIgKyBzaXplb2YoZnVsbCkgLSByYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHh0KTsKICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICAgICAgfQog ICAgICAgICAvKiBNYXNrIG91dCBiaXRzIHByb3ZpZGVkIGJ5IGNhbGxlci4gKi8KLSAgICAgICAg ZnVsbCAmPSB+KCgoKHBhZGRyX3QpMSA8PCAoYnl0ZXMgKiA4KSkgLSAxKSA8PCAob2Zmc2V0ICog OCkpOworICAgICAgICBmdWxsICY9IH4oKCgoaW50cHRlX3QpMSA8PCAoYnl0ZXMgKiA4KSkgLSAx KSA8PCAob2Zmc2V0ICogOCkpOwogICAgICAgICAvKiBTaGlmdCB0aGUgY2FsbGVyIHZhbHVlIGFu ZCBPUiBpbiB0aGUgbWlzc2luZyBiaXRzLiAqLwotICAgICAgICB2YWwgICY9ICgoKHBhZGRyX3Qp MSA8PCAoYnl0ZXMgKiA4KSkgLSAxKTsKKyAgICAgICAgdmFsICAmPSAoKChpbnRwdGVfdCkxIDw8 IChieXRlcyAqIDgpKSAtIDEpOwogICAgICAgICB2YWwgPDw9IChvZmZzZXQpICogODsKICAgICAg ICAgdmFsICB8PSBmdWxsOwogICAgICAgICAvKiBBbHNvIGZpbGwgaW4gbWlzc2luZyBwYXJ0cyBv ZiB0aGUgY21weGNoZyBvbGQgdmFsdWUuICovCi0gICAgICAgIG9sZCAgJj0gKCgocGFkZHJfdCkx IDw8IChieXRlcyAqIDgpKSAtIDEpOworICAgICAgICBvbGQgICY9ICgoKGludHB0ZV90KTEgPDwg KGJ5dGVzICogOCkpIC0gMSk7CiAgICAgICAgIG9sZCA8PD0gKG9mZnNldCkgKiA4OwogICAgICAg ICBvbGQgIHw9IGZ1bGw7CiAgICAgfQpAQCAtMTMxLDcgKzEzNSw3IEBAIHN0YXRpYyBpbnQgcHR3 cl9lbXVsYXRlZF91cGRhdGUodW5zaWduZWQKICAgICB7CiAgICAgZGVmYXVsdDoKICAgICAgICAg aWYgKCBpc19wdl8zMmJpdF9kb21haW4oZCkgJiYgKGJ5dGVzID09IDQpICYmICh1bmFsaWduZWRf YWRkciAmIDQpICYmCi0gICAgICAgICAgICAgIWRvX2NtcHhjaGcgJiYgKGwxZV9nZXRfZmxhZ3Mo bmwxZSkgJiBfUEFHRV9QUkVTRU5UKSApCisgICAgICAgICAgICAgIXBfb2xkICYmIChsMWVfZ2V0 X2ZsYWdzKG5sMWUpICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICB7CiAgICAgICAgICAgICAv KgogICAgICAgICAgICAgICogSWYgdGhpcyBpcyBhbiB1cHBlci1oYWxmIHdyaXRlIHRvIGEgUEFF IFBURSB0aGVuIHdlIGFzc3VtZSB0aGF0CkBAIC0xNjIsMjEgKzE2NiwyNiBAQCBzdGF0aWMgaW50 IHB0d3JfZW11bGF0ZWRfdXBkYXRlKHVuc2lnbmVkCiAgICAgLyogQ2hlY2tlZCBzdWNjZXNzZnVs bHk6IGRvIHRoZSB1cGRhdGUgKHdyaXRlIG9yIGNtcHhjaGcpLiAqLwogICAgIHBsMWUgPSBtYXBf ZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKICAgICBwbDFlID0gKGwxX3BnZW50cnlfdCAqKSgodW5z aWduZWQgbG9uZylwbDFlICsgKGFkZHIgJiB+UEFHRV9NQVNLKSk7Ci0gICAgaWYgKCBkb19jbXB4 Y2hnICkKKyAgICBpZiAoIHBfb2xkICkKICAgICB7Ci0gICAgICAgIGJvb2wgb2theTsKLSAgICAg ICAgaW50cHRlX3QgdCA9IG9sZDsKIAogICAgICAgICBvbDFlID0gbDFlX2Zyb21faW50cHRlKG9s ZCk7Ci0gICAgICAgIG9rYXkgPSBwYWdpbmdfY21weGNoZ19ndWVzdF9lbnRyeSh2LCAmbDFlX2dl dF9pbnRwdGUoKnBsMWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnQsIGwxZV9nZXRfaW50cHRlKG5sMWUpLCBfbWZuKG1mbikpOwotICAgICAgICBva2F5ID0g KG9rYXkgJiYgdCA9PSBvbGQpOworICAgICAgICBpZiAoICFwYWdpbmdfY21weGNoZ19ndWVzdF9l bnRyeSh2LCAmbDFlX2dldF9pbnRwdGUoKnBsMWUpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmb2xkLCBsMWVfZ2V0X2ludHB0ZShubDFlKSwgX21mbihtZm4pKSAp CisgICAgICAgICAgICByZXQgPSBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICAgICAgZWxzZSBp ZiAoIGwxZV9nZXRfaW50cHRlKG9sMWUpID09IG9sZCApCisgICAgICAgICAgICByZXQgPSBYODZF TVVMX09LQVk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgKnBfb2xkID0g b2xkID4+IChvZmZzZXQgKiA4KTsKKyAgICAgICAgICAgIHJldCA9IFg4NkVNVUxfQ01QWENIR19G QUlMRUQ7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoICFva2F5ICkKKyAgICAgICAgaWYgKCBy ZXQgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgewogICAgICAgICAgICAgdW5tYXBfZG9tYWlu X3BhZ2UocGwxZSk7CiAgICAgICAgICAgICBwdXRfcGFnZV9mcm9tX2wxZShubDFlLCBkKTsKLSAg ICAgICAgICAgIHJldHVybiBYODZFTVVMX1JFVFJZOworICAgICAgICAgICAgcmV0dXJuIHJldDsK ICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yMDAsOSArMjA5LDkgQEAgc3RhdGljIGlu dCBwdHdyX2VtdWxhdGVkX3dyaXRlKGVudW0geDg2XwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKnBfZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVzLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewotICAgIHBh ZGRyX3QgdmFsID0gMDsKKyAgICBpbnRwdGVfdCB2YWwgPSAwOwogCi0gICAgaWYgKCAoYnl0ZXMg PiBzaXplb2YocGFkZHJfdCkpIHx8IChieXRlcyAmIChieXRlcyAtIDEpKSB8fCAhYnl0ZXMgKQor ICAgIGlmICggKGJ5dGVzID4gc2l6ZW9mKHZhbCkpIHx8IChieXRlcyAmIChieXRlcyAtIDEpKSB8 fCAhYnl0ZXMgKQogICAgIHsKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJiYWQg d3JpdGUgc2l6ZSAoYWRkcj0lbHgsIGJ5dGVzPSV1KVxuIiwKICAgICAgICAgICAgICAgICAgb2Zm c2V0LCBieXRlcyk7CkBAIC0yMTEsMTYgKzIyMCwxNyBAQCBzdGF0aWMgaW50IHB0d3JfZW11bGF0 ZWRfd3JpdGUoZW51bSB4ODZfCiAKICAgICBtZW1jcHkoJnZhbCwgcF9kYXRhLCBieXRlcyk7CiAK LSAgICByZXR1cm4gcHR3cl9lbXVsYXRlZF91cGRhdGUob2Zmc2V0LCAwLCB2YWwsIGJ5dGVzLCAw LCBjdHh0KTsKKyAgICByZXR1cm4gcHR3cl9lbXVsYXRlZF91cGRhdGUob2Zmc2V0LCBOVUxMLCB2 YWwsIGJ5dGVzLCBjdHh0KTsKIH0KIAogc3RhdGljIGludCBwdHdyX2VtdWxhdGVkX2NtcHhjaGco ZW51bSB4ODZfc2VnbWVudCBzZWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcF9vbGQsIHZvaWQgKnBfbmV3LCB1bnNpZ25lZCBp bnQgYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2ssIHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewotICAgIHBhZGRyX3Qgb2xkID0gMCwgbmV3 ID0gMDsKKyAgICBpbnRwdGVfdCBvbGQgPSAwLCBuZXcgPSAwOworICAgIGludCByYzsKIAotICAg IGlmICggKGJ5dGVzID4gc2l6ZW9mKHBhZGRyX3QpKSB8fCAoYnl0ZXMgJiAoYnl0ZXMgLSAxKSkg KQorICAgIGlmICggKGJ5dGVzID4gc2l6ZW9mKG5ldykpIHx8IChieXRlcyAmIChieXRlcyAtIDEp KSApCiAgICAgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgImJhZCBjbXB4Y2hn IHNpemUgKGFkZHI9JWx4LCBieXRlcz0ldSlcbiIsCiAgICAgICAgICAgICAgICAgIG9mZnNldCwg Ynl0ZXMpOwpAQCAtMjMwLDcgKzI0MCwxMSBAQCBzdGF0aWMgaW50IHB0d3JfZW11bGF0ZWRfY21w eGNoZyhlbnVtIHg4CiAgICAgbWVtY3B5KCZvbGQsIHBfb2xkLCBieXRlcyk7CiAgICAgbWVtY3B5 KCZuZXcsIHBfbmV3LCBieXRlcyk7CiAKLSAgICByZXR1cm4gcHR3cl9lbXVsYXRlZF91cGRhdGUo b2Zmc2V0LCBvbGQsIG5ldywgYnl0ZXMsIDEsIGN0eHQpOworICAgIHJjID0gcHR3cl9lbXVsYXRl ZF91cGRhdGUob2Zmc2V0LCAmb2xkLCBuZXcsIGJ5dGVzLCBjdHh0KTsKKworICAgIG1lbWNweShw X29sZCwgJm9sZCwgYnl0ZXMpOworCisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgY29uc3Qg c3RydWN0IHg4Nl9lbXVsYXRlX29wcyBwdHdyX2VtdWxhdGVfb3BzID0gewotLS0gYS94ZW4vYXJj aC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2Vt dWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtMTk4NSw2ICsxOTg1LDkgQEAgcHJvdG1vZGVfbG9hZF9z ZWcoCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiByYzsKKworICAgICAg ICBjYXNlIFg4NkVNVUxfQ01QWENIR19GQUlMRUQ6CisgICAgICAgICAgICByZXR1cm4gWDg2RU1V TF9SRVRSWTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIEZvcmNlIHRoZSBBY2Nlc3NlZCBmbGFn IGluIG91ciBsb2NhbCBjb3B5LiAqLwpAQCAtNjY0NCwyMSArNjY0Nyw0NSBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4YjApOiBj YXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4YjEpOiAvKiBjbXB4Y2hnICovCi0gICAgICAgIC8qIFNh dmUgcmVhbCBzb3VyY2UgdmFsdWUsIHRoZW4gY29tcGFyZSBFQVggYWdhaW5zdCBkZXN0aW5hdGlv bi4gKi8KLSAgICAgICAgc3JjLm9yaWdfdmFsID0gc3JjLnZhbDsKLSAgICAgICAgc3JjLnZhbCA9 IF9yZWdzLnIoYXgpOwotICAgICAgICAvKiBjbXA6ICUlZWF4IC0gZHN0ID09PiBkc3QgYW5kIHNy YyBzd2FwcGVkIGZvciBtYWNybyBpbnZvY2F0aW9uICovCi0gICAgICAgIGVtdWxhdGVfMm9wX1Ny Y1YoImNtcCIsIGRzdCwgc3JjLCBfcmVncy5lZmxhZ3MpOwotICAgICAgICBpZiAoIF9yZWdzLmVm bGFncyAmIFg4Nl9FRkxBR1NfWkYgKQorICAgICAgICBmYWlsX2lmKCFvcHMtPmNtcHhjaGcpOwor ICAgICAgICBfcmVncy5lZmxhZ3MgJj0gfkVGTEFHU19NQVNLOworICAgICAgICBpZiAoICEoKGRz dC52YWwgXiBfcmVncy5yKGF4KSkgJgorICAgICAgICAgICAgICAgKH4wVUwgPj4gKDggKiAoc2l6 ZW9mKGxvbmcpIC0gZHN0LmJ5dGVzKSkpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIFN1 Y2Nlc3M6IHdyaXRlIGJhY2sgdG8gbWVtb3J5LiAqLwotICAgICAgICAgICAgZHN0LnZhbCA9IHNy Yy5vcmlnX3ZhbDsKKyAgICAgICAgICAgIGlmICggZHN0LnR5cGUgPT0gT1BfTUVNICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkc3QudmFsID0gX3JlZ3MucihheCk7CisgICAgICAg ICAgICAgICAgc3dpdGNoICggcmMgPSBvcHMtPmNtcHhjaGcoZHN0Lm1lbS5zZWcsIGRzdC5tZW0u b2ZmLCAmZHN0LnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmc3JjLnZhbCwgZHN0LmJ5dGVzLCBsb2NrX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdHh0KSApCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIGNhc2UgWDg2RU1VTF9PS0FZOgorICAgICAgICAgICAgICAgICAgICBkc3QudHlw ZSA9IE9QX05PTkU7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLmVmbGFncyB8PSBYODZfRUZM QUdTX1pGIHwgWDg2X0VGTEFHU19QRjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgY2FzZSBYODZFTVVMX0NNUFhDSEdfRkFJTEVEOgorICAgICAgICAgICAgICAg ICAgICByYyA9IFg4NkVNVUxfT0tBWTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICBkc3QudmFsID0gc3JjLnZhbDsKKyAgICAgICAgICAgICAg ICBfcmVncy5lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRiB8IFg4Nl9FRkxBR1NfUEY7CisgICAgICAg ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoICEoX3JlZ3MuZWZs YWdzICYgWDg2X0VGTEFHU19aRikgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBGYWlsdXJl OiB3cml0ZSB0aGUgdmFsdWUgd2Ugc2F3IHRvIEVBWC4gKi8KICAgICAgICAgICAgIGRzdC50eXBl ID0gT1BfUkVHOwogICAgICAgICAgICAgZHN0LnJlZyAgPSAodW5zaWduZWQgbG9uZyAqKSZfcmVn cy5yKGF4KTsKKyAgICAgICAgICAgIC8qIGNtcDogJSVlYXggLSBkc3QgPT0+IGRzdCBhbmQgc3Jj IHN3YXBwZWQgZm9yIG1hY3JvIGludm9jYXRpb24gKi8KKyAgICAgICAgICAgIHNyYy52YWwgPSBf cmVncy5yKGF4KTsKKyAgICAgICAgICAgIGVtdWxhdGVfMm9wX1NyY1YoImNtcCIsIGRzdCwgc3Jj LCBfcmVncy5lZmxhZ3MpOworICAgICAgICAgICAgQVNTRVJUKCEoX3JlZ3MuZWZsYWdzICYgWDg2 X0VGTEFHU19aRikpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC02OTU5LDYgKzY5 ODYsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAgICAgICBpZiAoIG1lbWNtcChvbGQsIGF1eCwgb3Bf Ynl0ZXMpICkKICAgICAgICAgeworICAgICAgICBjbXB4Y2hnTmJfZmFpbGVkOgogICAgICAgICAg ICAgLyogRXhwZWN0ZWQgIT0gYWN0dWFsOiBzdG9yZSBhY3R1YWwgdG8gckRYOnJBWCBhbmQgY2xl YXIgWkYuICovCiAgICAgICAgICAgICBfcmVncy5yKGF4KSA9ICEocmV4X3ByZWZpeCAmIFJFWF9X KSA/IG9sZC0+dTMyWzBdIDogb2xkLT51NjRbMF07CiAgICAgICAgICAgICBfcmVncy5yKGR4KSA9 ICEocmV4X3ByZWZpeCAmIFJFWF9XKSA/IG9sZC0+dTMyWzFdIDogb2xkLT51NjRbMV07CkBAIC02 OTY4LDcgKzY5OTYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgewogICAgICAgICAgICAgLyoK ICAgICAgICAgICAgICAqIEV4cGVjdGVkID09IGFjdHVhbDogR2V0IHByb3Bvc2VkIHZhbHVlLCBh dHRlbXB0IGF0b21pYyBjbXB4Y2hnCi0gICAgICAgICAgICAgKiBhbmQgc2V0IFpGLgorICAgICAg ICAgICAgICogYW5kIHNldCBaRiBpZiBzdWNjZXNzZnVsLgogICAgICAgICAgICAgICovCiAgICAg ICAgICAgICBpZiAoICEocmV4X3ByZWZpeCAmIFJFWF9XKSApCiAgICAgICAgICAgICB7CkBAIC02 OTgxLDExICs3MDA5LDIwIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGF1eC0+dTY0 WzFdID0gX3JlZ3MucihjeCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICggKHJj ID0gb3BzLT5jbXB4Y2hnKGVhLm1lbS5zZWcsIGVhLm1lbS5vZmYsIG9sZCwgYXV4LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BfYnl0ZXMsIGxvY2tfcHJlZml4LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSAp CisgICAgICAgICAgICBzd2l0Y2ggKCByYyA9IG9wcy0+Y21weGNoZyhlYS5tZW0uc2VnLCBlYS5t ZW0ub2ZmLCBvbGQsIGF1eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9wX2J5dGVzLCBsb2NrX3ByZWZpeCwgY3R4dCkgKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgY2FzZSBYODZFTVVMX09LQVk6CisgICAgICAgICAgICAgICAgX3JlZ3MuZWZsYWdzIHw9IFg4 Nl9FRkxBR1NfWkY7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2Ug WDg2RU1VTF9DTVBYQ0hHX0ZBSUxFRDoKKyAgICAgICAgICAgICAgICByYyA9IFg4NkVNVUxfT0tB WTsKKyAgICAgICAgICAgICAgICBnb3RvIGNtcHhjaGdOYl9mYWlsZWQ7CisKKyAgICAgICAgICAg IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgX3JlZ3Mu ZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg ICAgYnJlYWs7CiAgICAgfQpAQCAtODQzNiw2ICs4NDczLDggQEAgeDg2X2VtdWxhdGUoCiAgICAg ICAgICAgICByYyA9IG9wcy0+Y21weGNoZygKICAgICAgICAgICAgICAgICBkc3QubWVtLnNlZywg ZHN0Lm1lbS5vZmYsICZkc3Qub3JpZ192YWwsCiAgICAgICAgICAgICAgICAgJmRzdC52YWwsIGRz dC5ieXRlcywgdHJ1ZSwgY3R4dCk7CisgICAgICAgICAgICBpZiAoIHJjID09IFg4NkVNVUxfQ01Q WENIR19GQUlMRUQgKQorICAgICAgICAgICAgICAgIHJjID0gWDg2RU1VTF9SRVRSWTsKICAgICAg ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmgKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBzdHJ1Y3QgeDg2X2VtdWxfZnB1X2F1eCB7CiAgICog c3RyaWN0bHkgZXhwZWN0ZWQgZm9yIG5vdy4KICAqLwogI2RlZmluZSBYODZFTVVMX1VOUkVDT0dO SVpFRCAgIFg4NkVNVUxfVU5JTVBMRU1FTlRFRAorIC8qIChjbXB4Y2hnIGFjY2Vzc29yKTogQ01Q WENIRyBmYWlsZWQuICovCisjZGVmaW5lIFg4NkVNVUxfQ01QWENIR19GQUlMRUQgNwogCiAvKiBG UFUgc3ViLXR5cGVzIHdoaWNoIG1heSBiZSByZXF1ZXN0ZWQgdmlhIC0+Z2V0X2ZwdSgpLiAqLwog ZW51bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSB7CkBAIC0yMzksNiArMjQxLDggQEAgc3RydWN0IHg4 Nl9lbXVsYXRlX29wcwogICAgIC8qCiAgICAgICogY21weGNoZzogRW11bGF0ZSBhIENNUFhDSEcg b3BlcmF0aW9uLgogICAgICAqICBAcF9vbGQ6IFtJTiBdIFBvaW50ZXIgdG8gdmFsdWUgZXhwZWN0 ZWQgdG8gYmUgY3VycmVudCBhdCBAYWRkci4KKyAgICAgKiAgICAgICAgICBbT1VUXSBQb2ludGVy IHRvIHZhbHVlIGZvdW5kIGF0IEBhZGRyIChtYXkgYWx3YXlzIGJlCisgICAgICogICAgICAgICAg ICAgICAgdXBkYXRlZCwgbWVhbmluZ2Z1bCBmb3IgWDg2RU1VTF9DTVBYQ0hHX0ZBSUxFRCBvbmx5 KS4KICAgICAgKiAgQHBfbmV3OiBbSU4gXSBQb2ludGVyIHRvIHZhbHVlIHRvIHdyaXRlIHRvIEBh ZGRyLgogICAgICAqICBAYnl0ZXM6IFtJTiBdIE9wZXJhdGlvbiBzaXplICh1cCB0byA4ICh4ODYv MzIpIG9yIDE2ICh4ODYvNjQpIGJ5dGVzKS4KICAgICAgKiAgQGxvY2s6ICBbSU4gXSBhdG9taWMg KExPQ0tlZCkgb3BlcmF0aW9uCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnaW5nLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdpbmcuaApAQCAtODYsNyArODYsNyBAQCBzdHJ1Y3Qg c2hhZG93X3BhZ2luZ19tb2RlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqc3JjLCB1MzIgYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaF9lbXVsYXRlX2N0eHQgKnNoX2N0eHQpOwogICAg IGludCAgICAgICAgICAgKCp4ODZfZW11bGF0ZV9jbXB4Y2hnICAgKShzdHJ1Y3QgdmNwdSAqdiwg dW5zaWduZWQgbG9uZyB2YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBvbGQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpvbGQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaF9lbXVsYXRlX2N0 eHQgKnNoX2N0eHQpOwoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs