From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shuai Ruan Subject: [PATCH V6 2/2] x86/xsaves: fix overwriting between non-lazy/lazy xsaves Date: Thu, 24 Mar 2016 16:29:33 +0800 Message-ID: <1458808173-23279-3-git-send-email-shuai.ruan@linux.intel.com> References: <1458808173-23279-1-git-send-email-shuai.ruan@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458808173-23279-1-git-send-email-shuai.ruan@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: andrew.cooper3@citrix.com, keir@xen.org, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org VGhlIG9mZnNldCBhdCB3aGljaCBjb21wb25lbnRzIHhzYXZlZCBieSB4c2F2ZVtzY10gYXJlIG5v dCBmaXhlZC4KU28gd2hlbiB3aGVuIGEgc2F2ZSB3aXRoIHYtPmZwdV9kaXJ0aWVkIHNldCBpcyBm b2xsb3dlZCBieSBvbmUKd2l0aCB2LT5mcHVfZGlydGllZCBjbGVhciwgbm9uLWxhenkgeHNhdmVb c2NdIG1heSBvdmVyd3JpdGluZyBkYXRhCndyaXR0ZW4gYnkgdGhlIGxhenkgb25lLgoKVGhlIHNv bHV0aW9uIGlzIHdoZW4gdXNpbmdfeHNhdmVfY29tcGFjdCBpcyBlbmFibGVkIGFuZCB0YWtpbmcg eGNyMF9hY2N1bSBpbnRvCmNvbnNpZGVyYXRpb24sIGlmIGd1ZXN0IGhhcyBldmVyIHVzZWQgWFNU QVRFX0xBWlkgJiB+WFNUQVRFX0ZQX1NTRQooWFNUQVRFX0ZQX1NTRSB3aWxsIGJlIGV4Y2x1ZGVk IGJlYWNhdXNlIHhzYXZlIHdpbGwgd3JpdGUgWFNUQVRFX0ZQX1NTRQpwYXJ0IGluIGxlZ2FjeSBy ZWdpb24gb2YgeHNhdmUgYXJlYSB3aGljaCBpcyBmaXhlZCwgc2F2aW5nIFhTVEFURV9GU19TU0UK d2lsbCBub3QgY2F1c2Ugb3ZlcndyaXRpbmcgcHJvYmxlbSksIHZjcHVfeHNhdmVfbWFzayB3aWxs IHJldHVybiBYU1RBVEVfQUxMLgpPdGhlcndpc2UgdmNwdV94c2F2ZV9tYXNrIHdpbGwgcmV0dXJu IFhTVEFURV9OT05MQVpZLgoKVGhpcyBtYXkgY2F1c2Ugb3ZlcmhlYWQgc2F2ZSBvbiBsYXp5IHN0 YXRlcyB3aGljaCB3aWxsIGNhdXNlIHBlcmZvcm1hbmNlCmltcGFjdC4gQWZ0ZXIgZG9pbmcgc29t ZSBwZXJmb3JtYW5jZSB0ZXN0cyBvbiB4c2F2ZWMgYW5kIHhzYXZlb3B0CihzdWdnZXN0ZWQgYnkg amFuKSwgdGhlIHJlc3VsdHMgc2hvdyB4c2F2ZW9wdCBwZXJmb3JtcyBiZXR0ZXIgdGhhbiB4c2F2 ZWMuClNvIGh5cGVydmlzb3Igd2lsbCBub3QgdXNlIHhzYXZlYyBhbnltb3JlLgoKeHNhdmVzIHdp bGwgYmUgdXNlZCB1bnRpbCBzdXBlcnZpc2VkIHN0YXRlIGlzIGluc3Ryb2R1Y2VkIGluIGh5cGVy dmlzb3IuCkFuZCBYU1RBVEVfWFNBVkVTX09OTFkgKGluZGljYXRlcyBzdXBlcnZpc2VkIHN0YXRl IGlzIHVuZGVyc3Rvb2QgaW4geGVuKQppcyBpbnN0cm9kdWNlZCwgdGhlIHVzZSBvZiB4c2F2ZXMg ZGVwZW5kIG9uIHdoZXRoZXIgWFNUQVRFX1hTQVZFU19PTkxZCmlzIHNldCBpbiB4Y3IwX2FjY3Vt LgoKU2lnbmVkLW9mZi1ieTogU2h1YWkgUnVhbiA8c2h1YWkucnVhbkBsaW51eC5pbnRlbC5jb20+ ClJlcG9ydGVkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2NjogQWRk cmVzcyBjb21tZW50cyBmcm9tIEphbgoxLiBEbyBhbGwgY2hhbmdlcyBpbiBYU0FWRSgpL1hSU1RP UigpIG1hcmNvIGRlZmluaXRpb24uCjIuIEFkZCBjb2RlIGluIGFyY2hfc2V0X2luZm9fZ3Vlc3Qo KS9odm1fbG9hZF9jcHVfY3R4dCgpCiAgIGh2bV92Y3B1X3Jlc2V0X3N0YXRlKCkgdG8gZ3VhcmFu dGUgeGNvbXBfYnYgaXMgemVyby4KCnY1OiBBZGRyZXNzIGNvbW1lbnRzIGZyb20gSmFuCjEuIEFk ZCBYU1RBVEVfWFNBVkVTX09OTFkgYW5kIHVzaW5nIHhzYXZlcyBkZXBlbmQgb24gd2hldGhlciB0 aGlzIGJpdHMgYXJlCiAgIHNldCBpbiB4Y3IwX2FjY3VtCjIuIENoYW5nZSBjb21wcmVzcyBsb2dp YyBpbiBjb21wcmVzc194c2F2ZV9zdGF0ZXMoKSBkZXBlbmQgb24KICAgISh2LT5hcmNoLnhjcjBf YWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkpICYmICF4c2F2ZV9hcmVhX2NvbXByZXNzZWQoc3Jj KSkuCjMuIFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQgb25seSBzZXQgaW4geHJzdG9yKCkuCjQu IFJlYmFzZSB0aGUgY29kZSBvbgogICBbVjRdIHg4Ni94c2F2ZXM6IGNhbGN1bGF0ZSB0aGUgeHN0 YXRlX2NvbXBfb2Zmc2V0cyBiYXNlIG9uIHhzdGF0ZV9idgogICAoYWxyZWFkeSBzZW50IG91dCkg Rm9yIHRoZXkgYm90aCBjaGFuZ2Ugc2FtZSBjb2RlLgogICAoSSBhbSBub3Qgc3VyZSB3aGV0aGVy IHRoaXMgcmViYXNlIGlzIG9rIG9yIG5vdCkuCgp2NDogQWRkcmVzcyBjb21tZW50cyBmcm9tIEph bgoxLiBBZGQgc3ludGhldGljIENQVSBmZWF0dXJlIFg4Nl9GRUFUVVJFX1hTQVZFX0NPTVBBQ1Qg YW5kIHVzZSB0aGlzIGZlYXR1cmUKICAgaW5kaWNhdGUgd2hldGhlciBoeXBlcnZpc29yIHVzZSBj b21wYWN0IHhzYXZlIGFyZWEgb3Igbm90LgoyLiBGaXggdHlwZS9ncmFtbWVyIGVycm9ycyBvZiB0 aGUgY29tbWVudCBpbiB2Y3B1X3hzYXZlX21hc2suCgp2MzogQWRkcmVzcyBjb21tZW50cyBmcm9t IEphbgoxLiBBZGQgeHNhdmMgY2xlYW4gdXAgY29kZSBhbmQgZGlzYWJsZSB4c2F2ZXMuCjIuIEFk ZCBjb21tZW50IG9uIHdoeSBjZXJ0YWluIG1hc2sgc2hvdWxkIGJlIHJldHVybiBpbiB2Y3B1X3hz YXZlX21hc2suCgp2MjogQWRkcmVzcyBjb21tZW50cyBmcm9tIEphbgoxLiBhZGQgcGVyZm9ybWFu Y2UgaW1wYWN0IGFuZCBuZXh0IHN0ZXAgdG8gZG8gaW4gdGhlIGRlc2NyaXB0aW9uLgoKIHhlbi9h cmNoL3g4Ni9kb21haW4uYyAgICAgICAgfCAgOCArLS0tLS0KIHhlbi9hcmNoL3g4Ni9kb21jdGwu YyAgICAgICAgfCAgNiArLS0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICB8ICA4ICsr Ky0tLQogeGVuL2FyY2gveDg2L2kzODcuYyAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrLS0t LQogeGVuL2FyY2gveDg2L3hzdGF0ZS5jICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oIHwg IDEgKwogNiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWlu LmMKaW5kZXggYTMzZjk3NS4uZTQ1NmU2MiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFp bi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwpAQCAtOTQ3LDEzICs5NDcsNyBAQCBpbnQg YXJjaF9zZXRfaW5mb19ndWVzdCgKICAgICAgICAgZnB1X3NzZS0+ZmN3ID0gRkNXX0RFRkFVTFQ7 CiAgICAgICAgIGZwdV9zc2UtPm14Y3NyID0gTVhDU1JfREVGQVVMVDsKICAgICB9Ci0gICAgaWYg KCBjcHVfaGFzX3hzYXZlcyApCi0gICAgewotICAgICAgICBBU1NFUlQodi0+YXJjaC54c2F2ZV9h cmVhKTsKLSAgICAgICAgdi0+YXJjaC54c2F2ZV9hcmVhLT54c2F2ZV9oZHIueGNvbXBfYnYgPSBY U1RBVEVfQ09NUEFDVElPTl9FTkFCTEVEIHwKLSAgICAgICAgICAgIHYtPmFyY2gueHNhdmVfYXJl YS0+eHNhdmVfaGRyLnhzdGF0ZV9idjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIHYtPmFyY2gueHNh dmVfYXJlYSApCisgICAgaWYgKCB2LT5hcmNoLnhzYXZlX2FyZWEgKQogICAgICAgICB2LT5hcmNo LnhzYXZlX2FyZWEtPnhzYXZlX2hkci54Y29tcF9idiA9IDA7CiAKICAgICBpZiAoICFjb21wYXQg KQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0 bC5jCmluZGV4IGIzNGEyOTUuLjFhMzZhMzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21j dGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKQEAgLTkyMiw3ICs5MjIsNyBAQCBsb25n IGFyY2hfZG9fZG9tY3RsKAogICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7CiAKICAgICAg ICAgICAgIG9mZnNldCArPSBzaXplb2Yodi0+YXJjaC54Y3IwX2FjY3VtKTsKLSAgICAgICAgICAg IGlmICggIXJldCAmJiAoY3B1X2hhc194c2F2ZXMgfHwgY3B1X2hhc194c2F2ZWMpICkKKyAgICAg ICAgICAgIGlmICggIXJldCApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdm9pZCAq eHNhdmVfYXJlYTsKIApAQCAtOTQyLDEwICs5NDIsNiBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAog ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKICAgICAgICAgICAgICAgICB4ZnJl ZSh4c2F2ZV9hcmVhKTsKICAgICAgICAgICAgfQotICAgICAgICAgICBlbHNlIGlmICggIXJldCAm JiBjb3B5X3RvX2d1ZXN0X29mZnNldChldmMtPmJ1ZmZlciwgb2Zmc2V0LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXYtPmFyY2gueHNh dmVfYXJlYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZSAtIDIgKiBzaXplb2YodWludDY0X3QpKSApCi0gICAgICAgICAgICAgICAgcmV0ID0g LUVGQVVMVDsKIAogICAgICAgICAgICAgdmNwdV91bnBhdXNlKHYpOwogICAgICAgICB9CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpp bmRleCA4MGQ1OWZmLi5hOTk4MjFhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTIyMDIsOSArMjIwMiw4IEBAIHN0YXRp YyBpbnQgaHZtX2xvYWRfY3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpCiAgICAgICAgIHhzYXZlX2FyZWEtPnhzYXZlX2hkci54c3RhdGVfYnYgPSAwOwog ICAgICAgICB4c2F2ZV9hcmVhLT5mcHVfc3NlLm14Y3NyID0gTVhDU1JfREVGQVVMVDsKICAgICB9 Ci0gICAgaWYgKCBjcHVfaGFzX3hzYXZlcyAmJiB4c2F2ZV9hcmVhICkKLSAgICAgICAgeHNhdmVf YXJlYS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRCB8Ci0g ICAgICAgICAgICB4c2F2ZV9hcmVhLT54c2F2ZV9oZHIueHN0YXRlX2J2OworICAgIGlmICggeHNh dmVfYXJlYSApCisgICAgICAgIHhzYXZlX2FyZWEtPnhzYXZlX2hkci54Y29tcF9idiA9IDA7CiAK ICAgICB2LT5hcmNoLnVzZXJfcmVncy5lYXggPSBjdHh0LnJheDsKICAgICB2LT5hcmNoLnVzZXJf cmVncy5lYnggPSBjdHh0LnJieDsKQEAgLTU1ODEsOCArNTU4MCw3IEBAIHZvaWQgaHZtX3ZjcHVf cmVzZXRfc3RhdGUoc3RydWN0IHZjcHUgKnYsIHVpbnQxNl90IGNzLCB1aW50MTZfdCBpcCkKICAg ICBpZiAoIHYtPmFyY2gueHNhdmVfYXJlYSApCiAgICAgewogICAgICAgICB2LT5hcmNoLnhzYXZl X2FyZWEtPnhzYXZlX2hkci54c3RhdGVfYnYgPSBYU1RBVEVfRlA7Ci0gICAgICAgIHYtPmFyY2gu eHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gY3B1X2hhc194c2F2ZXMKLSAgICAgICAg ICAgID8gWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRCB8IFhTVEFURV9GUCA6IDA7CisgICAgICAg IHYtPmFyY2gueHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gMDsKICAgICB9CiAKICAg ICB2LT5hcmNoLnZnY19mbGFncyA9IFZHQ0Zfb25saW5lOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2kzODcuYyBiL3hlbi9hcmNoL3g4Ni9pMzg3LmMKaW5kZXggYzI5ZDBmYS4uMmFmYTc2MiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2kzODcuYworKysgYi94ZW4vYXJjaC94ODYvaTM4Ny5j CkBAIC0xMTgsNyArMTE4LDI0IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgdmNwdV94c2F2ZV9t YXNrKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQogICAgIGlmICggdi0+ZnB1X2RpcnRpZWQgKQogICAg ICAgICByZXR1cm4gdi0+YXJjaC5ub25sYXp5X3hzdGF0ZV91c2VkID8gWFNUQVRFX0FMTCA6IFhT VEFURV9MQVpZOwogCi0gICAgcmV0dXJuIHYtPmFyY2gubm9ubGF6eV94c3RhdGVfdXNlZCA/IFhT VEFURV9OT05MQVpZIDogMDsKKyAgICBBU1NFUlQodi0+YXJjaC5ub25sYXp5X3hzdGF0ZV91c2Vk KTsKKworICAgIC8qCisgICAgICogVGhlIG9mZnNldHMgb2YgY29tcG9uZW50cyB3aGljaCBsaXZl IGluIHRoZSBleHRlbmRlZCByZWdpb24gb2YKKyAgICAgKiBjb21wYWN0IHhzYXZlIGFyZWEgYXJl IG5vdCBmaXhlZC4gWHNhdmUgYXJlYSBtYXkgYmUgb3ZlcndyaXR0ZW4KKyAgICAgKiB3aGVuIGEg eHNhdmUgd2l0aCB2LT5mcHVfZGlydGllZCBzZXQgaXMgZm9sbG93ZWQgYnkgb25lIHdpdGgKKyAg ICAgKiB2LT5mcHVfZGlydGllZCBjbGVhci4KKyAgICAgKiBJbiBzdWNoIGNhc2UsIGlmIGh5cGVy dmlzb3IgdXNlcyBjb21wYWN0IHhzYXZlIGFyZWEgYW5kIGd1ZXN0CisgICAgICogaGFzIGV2ZXIg dXNlZCBsYXp5IHN0YXRlcyAoY2hlY2tpbmcgeGNyMF9hY2N1bSBleGNsdWRpbmcKKyAgICAgKiBY U1RBVEVfRlBfU1NFKSwgdmNwdV94c2F2ZV9tYXNrIHdpbGwgcmV0dXJuIFhTVEFURV9BTEwuIE90 aGVyd2lzZQorICAgICAqIHJldHVybiBYU1RBVEVfTk9OTEFaWS4KKyAgICAgKiBYU1RBVEVfRlBf U1NFIG1heSBiZSBleGNsdWRlZCwgYmVjYXVzZSB0aGUgb2Zmc2V0cyBvZiBYU1RBVEVfRlBfU1NF CisgICAgICogKGluIHRoZSBsZWdhY3kgcmVnaW9uIG9mIHhzYXZlIGFyZWEpIGFyZSBmaXhlZCwg c28gc2F2aW5nCisgICAgICogWFNUQVRFX0ZQX1NTRSB3aWxsIG5vdCBjYXVzZSBvdmVyd3JpdGlu ZyBwcm9ibGVtLgorICAgICAqLworICAgIHJldHVybiAodi0+YXJjaC54c2F2ZV9hcmVhLT54c2F2 ZV9oZHIueGNvbXBfYnYgJiBYU1RBVEVfQ09NUEFDVElPTl9FTkFCTEVEKQorICAgICAgICAgICAm JiAodi0+YXJjaC54Y3IwX2FjY3VtICYgWFNUQVRFX0xBWlkgJiB+WFNUQVRFX0ZQX1NTRSkKKyAg ICAgICAgICAgPyBYU1RBVEVfQUxMIDogWFNUQVRFX05PTkxBWlk7CiB9CiAKIC8qIFNhdmUgeDg3 IGV4dGVuZGVkIHN0YXRlICovCkBAIC0yNzUsMTEgKzI5Miw3IEBAIGludCB2Y3B1X2luaXRfZnB1 KHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICByZXR1cm4gcmM7CiAKICAgICBpZiAoIHYtPmFyY2gu eHNhdmVfYXJlYSApCi0gICAgewogICAgICAgICB2LT5hcmNoLmZwdV9jdHh0ID0gJnYtPmFyY2gu eHNhdmVfYXJlYS0+ZnB1X3NzZTsKLSAgICAgICAgaWYgKCBjcHVfaGFzX3hzYXZlcyApCi0gICAg ICAgICAgICB2LT5hcmNoLnhzYXZlX2FyZWEtPnhzYXZlX2hkci54Y29tcF9idiA9IFhTVEFURV9D T01QQUNUSU9OX0VOQUJMRUQ7Ci0gICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIEJVSUxE X0JVR19PTihfX2FsaWdub2Yodi0+YXJjaC54c2F2ZV9hcmVhLT5mcHVfc3NlKSA8IDE2KTsKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94c3RhdGUuYyBiL3hlbi9hcmNoL3g4Ni94c3RhdGUuYwpp bmRleCBhN2I2YTA0Li5jNzUyOTJjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveHN0YXRlLmMK KysrIGIveGVuL2FyY2gveDg2L3hzdGF0ZS5jCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBleHBh bmRfeHNhdmVfc3RhdGVzKHN0cnVjdCB2Y3B1ICp2LCB2b2lkICpkZXN0LCB1bnNpZ25lZCBpbnQg c2l6ZSkKICAgICB1NjQgeHN0YXRlX2J2ID0geHNhdmUtPnhzYXZlX2hkci54c3RhdGVfYnY7CiAg ICAgdTY0IHZhbGlkOwogCi0gICAgaWYgKCAhY3B1X2hhc194c2F2ZXMgJiYgIWNwdV9oYXNfeHNh dmVjICkKKyAgICBpZiAoICEoeHNhdmUtPnhzYXZlX2hkci54Y29tcF9idiAmIFhTVEFURV9DT01Q QUNUSU9OX0VOQUJMRUQpICkKICAgICB7CiAgICAgICAgIG1lbWNweShkZXN0LCB4c2F2ZSwgc2l6 ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMywxMyArMjIzLDE1IEBAIHZvaWQgY29tcHJlc3Nf eHNhdmVfc3RhdGVzKHN0cnVjdCB2Y3B1ICp2LCBjb25zdCB2b2lkICpzcmMsIHVuc2lnbmVkIGlu dCBzaXplKQogICAgIHU2NCB4c3RhdGVfYnYgPSAoKGNvbnN0IHN0cnVjdCB4c2F2ZV9zdHJ1Y3Qg KilzcmMpLT54c2F2ZV9oZHIueHN0YXRlX2J2OwogICAgIHU2NCB2YWxpZDsKIAotICAgIGlmICgg IWNwdV9oYXNfeHNhdmVzICYmICFjcHVfaGFzX3hzYXZlYyApCisgICAgQVNTRVJUKCF4c2F2ZV9h cmVhX2NvbXByZXNzZWQoc3JjKSk7CisKKyAgICBpZiAoICEodi0+YXJjaC54Y3IwX2FjY3VtICYg WFNUQVRFX1hTQVZFU19PTkxZKSAmJgorICAgICAgICAgIXhzYXZlX2FyZWFfY29tcHJlc3NlZChz cmMpICkKICAgICB7CiAgICAgICAgIG1lbWNweSh4c2F2ZSwgc3JjLCBzaXplKTsKICAgICAgICAg cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCgheHNhdmVfYXJlYV9jb21wcmVzc2VkKHNyYykp OwogICAgIC8qCiAgICAgICogQ29weSBsZWdhY3kgWFNBVkUgYXJlYSwgdG8gYXZvaWQgY29tcGxp Y2F0aW9ucyB3aXRoIENQVUlECiAgICAgICogbGVhdmVzIDAgYW5kIDEgaW4gdGhlIGxvb3AgYmVs b3cuCkBAIC0yNjksMTUgKzI3MSwxNiBAQCB2b2lkIHhzYXZlKHN0cnVjdCB2Y3B1ICp2LCB1aW50 NjRfdCBtYXNrKQogICAgIHVpbnQzMl90IGxtYXNrID0gbWFzazsKICAgICB1bnNpZ25lZCBpbnQg ZmlwX3dpZHRoID0gdi0+ZG9tYWluLT5hcmNoLng4N19maXBfd2lkdGg7CiAjZGVmaW5lIFhTQVZF KHBmeCkgXAotICAgICAgICBhbHRlcm5hdGl2ZV9pb18zKCIuYnl0ZSAiIHBmeCAiMHgwZiwweGFl LDB4MjdcbiIsIC8qIHhzYXZlICovIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiLmJ5dGUg IiBwZnggIjB4MGYsMHhhZSwweDM3XG4iLCAvKiB4c2F2ZW9wdCAqLyBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgWDg2X0ZFQVRVUkVfWFNBVkVPUFQsIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAiLmJ5dGUgIiBwZnggIjB4MGYsMHhjNywweDI3XG4iLCAvKiB4c2F2ZWMgKi8gXAotICAg ICAgICAgICAgICAgICAgICAgICAgIFg4Nl9GRUFUVVJFX1hTQVZFQywgXAotICAgICAgICAgICAg ICAgICAgICAgICAgICIuYnl0ZSAiIHBmeCAiMHgwZiwweGM3LDB4MmZcbiIsIC8qIHhzYXZlcyAq LyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0ZFQVRVUkVfWFNBVkVTLCBcCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIj1tIiAoKnB0ciksIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAiYSIgKGxtYXNrKSwgImQiIChobWFzayksICJEIiAocHRyKSkKKyAgICAgICAgaWYgKCB2 LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkgKSBcCisgICAgICAgICAgICBh c20gdm9sYXRpbGUgKCAiLmJ5dGUgIiBwZnggIjB4MGYsMHhjNywweDJmXG4iIC8qIHhzYXZlcyAq LyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCpwdHIpIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogImEiIChsbWFzayksICJkIiAoaG1hc2spLCAiRCIgKHB0cikg KTsgXAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgIGFsdGVybmF0aXZlX2lvKCIuYnl0ZSAi IHBmeCAiMHgwZiwweGFlLDB4MjdcbiIsIC8qIHhzYXZlICovIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICIuYnl0ZSAiIHBmeCAiMHgwZiwweGFlLDB4MzdcbiIsIC8qIHhzYXZlb3B0ICov IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9GRUFUVVJFX1hTQVZFT1BULCBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAiPW0iICgqcHRyKSwgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgImEiIChsbWFzayksICJkIiAoaG1hc2spLCAiRCIgKHB0cikpCiAKICAgICBp ZiAoIGZpcF93aWR0aCA9PSA4IHx8ICEobWFzayAmIFhTVEFURV9GUCkgKQogICAgIHsKQEAgLTM2 OCwxOSArMzcxLDI5IEBAIHZvaWQgeHJzdG9yKHN0cnVjdCB2Y3B1ICp2LCB1aW50NjRfdCBtYXNr KQogICAgICAgICBzd2l0Y2ggKCBfX2J1aWx0aW5fZXhwZWN0KHB0ci0+ZnB1X3NzZS54W0ZQVV9X T1JEX1NJWkVfT0ZGU0VUXSwgOCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBCVUlMRF9CVUdf T04oc2l6ZW9mKGZhdWx0cykgIT0gNCk7IC8qIENsYW5nIGRvZXNuJ3Qgc3VwcG9ydCAleiBpbiBh c20uICovCi0jZGVmaW5lIFhSU1RPUihwZngpIFwKLSAgICAgICAgYWx0ZXJuYXRpdmVfaW8oIjE6 IC5ieXRlICIgcGZ4ICIweDBmLDB4YWUsMHgyZlxuIiBcCisjZGVmaW5lIF94cnN0b3IoeHJzdG9y X2lucykgXAorICAgICAgICBhc20gdm9sYXRpbGUgKCAiMTogLmJ5dGUgInhyc3Rvcl9pbnMiXG4i IFwKICAgICAgICAgICAgICAgICAgICAgICAgIjM6XG4iIFwKICAgICAgICAgICAgICAgICAgICAg ICAgIiAgIC5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgXAogICAgICAgICAgICAgICAgICAgICAg ICAiMjogaW5jbCAlW2ZhdWx0c11cbiIgXAogICAgICAgICAgICAgICAgICAgICAgICAiICAgam1w IDNiXG4iIFwKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIC5wcmV2aW91c1xuIiBcCi0gICAg ICAgICAgICAgICAgICAgICAgIF9BU01fRVhUQUJMRSgxYiwgMmIpLCBcCi0gICAgICAgICAgICAg ICAgICAgICAgICIuYnl0ZSAiIHBmeCAiMHgwZiwweGM3LDB4MWZcbiIsIFwKLSAgICAgICAgICAg ICAgICAgICAgICAgWDg2X0ZFQVRVUkVfWFNBVkVTLCBcCi0gICAgICAgICAgICAgICAgICAgICAg IEFTTV9PVVRQVVQyKFttZW1dICIrbSIgKCpwdHIpLCBbZmF1bHRzXSAiK2ciIChmYXVsdHMpKSwg XAotICAgICAgICAgICAgICAgICAgICAgICBbbG1hc2tdICJhIiAobG1hc2spLCBbaG1hc2tdICJk IiAoaG1hc2spLCBcCi0gICAgICAgICAgICAgICAgICAgICAgIFtwdHJdICJEIiAocHRyKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgX0FTTV9FWFRBQkxFKDFiLCAyYikgXAorICAgICAgICAgICAg ICAgICAgICAgICA6IFttZW1dICIrbSIgKCpwdHIpLCBbZmF1bHRzXSAiK2ciIChmYXVsdHMpIFwK KyAgICAgICAgICAgICAgICAgICAgICAgOiBbbG1hc2tdICJhIiAobG1hc2spLCBbaG1hc2tdICJk IiAoaG1hc2spLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgW3B0cl0gIkQiIChwdHIpICkK KworI2RlZmluZSBYUlNUT1IocGZ4KSBcCisgICAgICAgIGlmICggdi0+YXJjaC54Y3IwX2FjY3Vt ICYgWFNUQVRFX1hTQVZFU19PTkxZICkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIGlmICgg dW5saWtlbHkoIShwdHItPnhzYXZlX2hkci54Y29tcF9idiBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJiBYU1RBVEVfQ09NUEFDVElPTl9FTkFCTEVEKSkgKSBcCisgICAgICAgICAgICAg ICAgcHRyLT54c2F2ZV9oZHIueGNvbXBfYnYgfD0gcHRyLT54c2F2ZV9oZHIueHN0YXRlX2J2IFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhTVEFURV9DT01Q QUNUSU9OX0VOQUJMRUQ7IFwKKyAgICAgICAgICAgICAgICBfeHJzdG9yKHBmeCAiMHgwZiwweGM3 LDB4MWYiKTsgLyogeHJzdG9ycyAqLyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIFwKKyAg ICAgICAgICAgIF94cnN0b3IocGZ4ICIweDBmLDB4YWUsMHgyZiIpIC8qIHhyc3RvciAqLwogCiAg ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBYUlNUT1IoIjB4NDgsIik7CkBAIC0zODksNiAr NDAyLDcgQEAgdm9pZCB4cnN0b3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAgICAg ICAgICAgICBYUlNUT1IoIiIpOwogICAgICAgICAgICAgYnJlYWs7CiAjdW5kZWYgWFJTVE9SCisj dW5kZWYgX3hyc3RvcgogICAgICAgICB9CiAgICAgICAgIGlmICggbGlrZWx5KGZhdWx0cyA9PSBw cmV2X2ZhdWx0cykgKQogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTYsNyArNDMwLDcgQEAgdm9p ZCB4cnN0b3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAgICAgICAgICAgICAgICAg ICAoKG1hc2sgJiBYU1RBVEVfWU1NKSAmJgogICAgICAgICAgICAgICAgICAgICEocHRyLT54c2F2 ZV9oZHIueGNvbXBfYnYgJiBYU1RBVEVfQ09NUEFDVElPTl9FTkFCTEVEKSkpICkKICAgICAgICAg ICAgICAgICBwdHItPmZwdV9zc2UubXhjc3IgJj0gbXhjc3JfbWFzazsKLSAgICAgICAgICAgIGlm ICggY3B1X2hhc194c2F2ZXMgfHwgY3B1X2hhc194c2F2ZWMgKQorICAgICAgICAgICAgaWYgKCB2 LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkgKQogICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgIHB0ci0+eHNhdmVfaGRyLnhjb21wX2J2ICY9IHRoaXNfY3B1KHhjcjAp IHwgdGhpc19jcHUoeHNzKTsKICAgICAgICAgICAgICAgICBwdHItPnhzYXZlX2hkci54c3RhdGVf YnYgJj0gcHRyLT54c2F2ZV9oZHIueGNvbXBfYnY7CkBAIC00MzMsNyArNDQ3LDcgQEAgdm9pZCB4 cnN0b3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAgICAgICAgIGNhc2UgMjogLyog U3RhZ2UgMjogUmVzZXQgYWxsIHN0YXRlLiAqLwogICAgICAgICAgICAgcHRyLT5mcHVfc3NlLm14 Y3NyID0gTVhDU1JfREVGQVVMVDsKICAgICAgICAgICAgIHB0ci0+eHNhdmVfaGRyLnhzdGF0ZV9i diA9IDA7Ci0gICAgICAgICAgICBwdHItPnhzYXZlX2hkci54Y29tcF9idiA9IGNwdV9oYXNfeHNh dmVzCisgICAgICAgICAgICBwdHItPnhzYXZlX2hkci54Y29tcF9idiA9IHYtPmFyY2gueGNyMF9h Y2N1bSAmIFhTVEFURV9YU0FWRVNfT05MWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA/IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQgOiAwOwogICAgICAgICAgICAgY29u dGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRl LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oCmluZGV4IGE0ODg2ODguLjkxZDFjMzkg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni94c3RhdGUuaApAQCAtNDQsNiArNDQsNyBAQAogI2RlZmluZSBYU1RBVEVfTk9O TEFaWSAoWFNUQVRFX0xXUCB8IFhTVEFURV9CTkRSRUdTIHwgWFNUQVRFX0JORENTUiB8IFwKICAg ICAgICAgICAgICAgICAgICAgICAgIFhTVEFURV9QS1JVKQogI2RlZmluZSBYU1RBVEVfTEFaWSAg ICAoWFNUQVRFX0FMTCAmIH5YU1RBVEVfTk9OTEFaWSkKKyNkZWZpbmUgWFNUQVRFX1hTQVZFU19P TkxZICAgICAgICAgMAogI2RlZmluZSBYU1RBVEVfQ09NUEFDVElPTl9FTkFCTEVEICAoMVVMTCA8 PCA2MykKIAogI2RlZmluZSBYU1RBVEVfQUxJR042NCAoMVUgPDwgMSkKLS0gCjEuOS4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK