From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shuai Ruan Subject: [PATCH V7 1/3] x86/xsaves: fix overwriting between non-lazy/lazy xsaves Date: Thu, 31 Mar 2016 16:57:35 +0800 Message-ID: <1459414657-7558-2-git-send-email-shuai.ruan@linux.intel.com> References: <1459414657-7558-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: <1459414657-7558-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 bGwgbm90IGJlIHVzZWQgdW50aWwgc3VwZXJ2aXNlZCBzdGF0ZSBpcyBpbnRyb2R1Y2VkIGluIGh5 cGVydmlzb3IuCkFuZCBYU1RBVEVfWFNBVkVTX09OTFkgKGluZGljYXRlcyBzdXBlcnZpc2VkIHN0 YXRlIGlzIHVuZGVyc3Rvb2QgaW4geGVuKQppcyBpbnN0cm9kdWNlZCwgdGhlIHVzZSBvZiB4c2F2 ZXMgZGVwZW5kIG9uIHdoZXRoZXIgWFNUQVRFX1hTQVZFU19PTkxZCmlzIHNldCBpbiB4Y3IwX2Fj Y3VtLgoKU2lnbmVkLW9mZi1ieTogU2h1YWkgUnVhbiA8c2h1YWkucnVhbkBsaW51eC5pbnRlbC5j b20+ClJlcG9ydGVkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2Nzog QWRkcmVzcyBjb21tZW50cyBmb3JtIEphbgoxLiBkcm9wICF4c2F2ZV9hcmVhX2NvbXByZXNzZWQo c3JjKSBpbiBjb21wcmVzc194c2F2ZV9zdGF0ZXMKMi4gZml4IGNvZGluZyBzdHlsZSBpc3N1ZXMu CjMuIGZpeCBlcnJvcnMgaW4gZGVzY3JpcHRpb24uCgp2NjogQWRkcmVzcyBjb21tZW50cyBmcm9t IEphbgoxLiBEbyBhbGwgY2hhbmdlcyBpbiBYU0FWRSgpL1hSU1RPUigpIG1hcmNvIGRlZmluaXRp b24uCjIuIEFkZCBjb2RlIGluIGFyY2hfc2V0X2luZm9fZ3Vlc3QoKS9odm1fbG9hZF9jcHVfY3R4 dCgpCiAgIGh2bV92Y3B1X3Jlc2V0X3N0YXRlKCkgdG8gZ3VhcmFudGUgeGNvbXBfYnYgaXMgemVy by4KCnY1OiBBZGRyZXNzIGNvbW1lbnRzIGZyb20gSmFuCjEuIEFkZCBYU1RBVEVfWFNBVkVTX09O TFkgYW5kIHVzaW5nIHhzYXZlcyBkZXBlbmQgb24gd2hldGhlciB0aGlzIGJpdHMgYXJlCiAgIHNl dCBpbiB4Y3IwX2FjY3VtCjIuIENoYW5nZSBjb21wcmVzcyBsb2dpYyBpbiBjb21wcmVzc194c2F2 ZV9zdGF0ZXMoKSBkZXBlbmQgb24KICAgISh2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNB VkVTX09OTFkpICYmICF4c2F2ZV9hcmVhX2NvbXByZXNzZWQoc3JjKSkuCjMuIFhTVEFURV9DT01Q QUNUSU9OX0VOQUJMRUQgb25seSBzZXQgaW4geHJzdG9yKCkuCjQuIFJlYmFzZSB0aGUgY29kZSBv bgogICBbVjRdIHg4Ni94c2F2ZXM6IGNhbGN1bGF0ZSB0aGUgeHN0YXRlX2NvbXBfb2Zmc2V0cyBi YXNlIG9uIHhzdGF0ZV9idgogICAoYWxyZWFkeSBzZW50IG91dCkgRm9yIHRoZXkgYm90aCBjaGFu Z2Ugc2FtZSBjb2RlLgogICAoSSBhbSBub3Qgc3VyZSB3aGV0aGVyIHRoaXMgcmViYXNlIGlzIG9r IG9yIG5vdCkuCgp2NDogQWRkcmVzcyBjb21tZW50cyBmcm9tIEphbgoxLiBBZGQgc3ludGhldGlj IENQVSBmZWF0dXJlIFg4Nl9GRUFUVVJFX1hTQVZFX0NPTVBBQ1QgYW5kIHVzZSB0aGlzIGZlYXR1 cmUKICAgaW5kaWNhdGUgd2hldGhlciBoeXBlcnZpc29yIHVzZSBjb21wYWN0IHhzYXZlIGFyZWEg b3Igbm90LgoyLiBGaXggdHlwZS9ncmFtbWVyIGVycm9ycyBvZiB0aGUgY29tbWVudCBpbiB2Y3B1 X3hzYXZlX21hc2suCgp2MzogQWRkcmVzcyBjb21tZW50cyBmcm9tIEphbgoxLiBBZGQgeHNhdmMg Y2xlYW4gdXAgY29kZSBhbmQgZGlzYWJsZSB4c2F2ZXMuCjIuIEFkZCBjb21tZW50IG9uIHdoeSBj ZXJ0YWluIG1hc2sgc2hvdWxkIGJlIHJldHVybiBpbiB2Y3B1X3hzYXZlX21hc2suCgp2MjogQWRk cmVzcyBjb21tZW50cyBmcm9tIEphbgoxLiBhZGQgcGVyZm9ybWFuY2UgaW1wYWN0IGFuZCBuZXh0 IHN0ZXAgdG8gZG8gaW4gdGhlIGRlc2NyaXB0aW9uLgoKIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAg ICAgICAgfCAgOCArLS0tLS0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgIHwgIDYgKy0t LS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgfCAgOCArKystLS0tCiB4ZW4vYXJjaC94 ODYvaTM4Ny5jICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKystLS0tCiB4ZW4vYXJjaC94ODYv eHN0YXRlLmMgICAgICAgIHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmggfCAgMSArCiA2IGZpbGVzIGNo YW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCA2ZWM3NTU0 Li5hNGY2ZGIyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCkBAIC05NDcsMTMgKzk0Nyw3IEBAIGludCBhcmNoX3NldF9pbmZvX2d1 ZXN0KAogICAgICAgICBmcHVfc3NlLT5mY3cgPSBGQ1dfREVGQVVMVDsKICAgICAgICAgZnB1X3Nz ZS0+bXhjc3IgPSBNWENTUl9ERUZBVUxUOwogICAgIH0KLSAgICBpZiAoIGNwdV9oYXNfeHNhdmVz ICkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2LT5hcmNoLnhzYXZlX2FyZWEpOwotICAgICAgICB2 LT5hcmNoLnhzYXZlX2FyZWEtPnhzYXZlX2hkci54Y29tcF9idiA9IFhTVEFURV9DT01QQUNUSU9O X0VOQUJMRUQgfAotICAgICAgICAgICAgdi0+YXJjaC54c2F2ZV9hcmVhLT54c2F2ZV9oZHIueHN0 YXRlX2J2OwotICAgIH0KLSAgICBlbHNlIGlmICggdi0+YXJjaC54c2F2ZV9hcmVhICkKKyAgICBp ZiAoIHYtPmFyY2gueHNhdmVfYXJlYSApCiAgICAgICAgIHYtPmFyY2gueHNhdmVfYXJlYS0+eHNh dmVfaGRyLnhjb21wX2J2ID0gMDsKIAogICAgIGlmICggIWNvbXBhdCApCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKaW5kZXggYjdjN2Y0 Mi4uZTUxODBlZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jCisrKyBiL3hlbi9h cmNoL3g4Ni9kb21jdGwuYwpAQCAtOTI3LDcgKzkyNyw3IEBAIGxvbmcgYXJjaF9kb19kb21jdGwo CiAgICAgICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKIAogICAgICAgICAgICAgb2Zmc2V0ICs9 IHNpemVvZih2LT5hcmNoLnhjcjBfYWNjdW0pOwotICAgICAgICAgICAgaWYgKCAhcmV0ICYmIChj cHVfaGFzX3hzYXZlcyB8fCBjcHVfaGFzX3hzYXZlYykgKQorICAgICAgICAgICAgaWYgKCAhcmV0 ICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB2b2lkICp4c2F2ZV9hcmVhOwogCkBA IC05NDcsMTAgKzk0Nyw2IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgICAgICAgICAg ICAgICByZXQgPSAtRUZBVUxUOwogICAgICAgICAgICAgICAgIHhmcmVlKHhzYXZlX2FyZWEpOwog ICAgICAgICAgICB9Ci0gICAgICAgICAgIGVsc2UgaWYgKCAhcmV0ICYmIGNvcHlfdG9fZ3Vlc3Rf b2Zmc2V0KGV2Yy0+YnVmZmVyLCBvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopdi0+YXJjaC54c2F2ZV9hcmVhLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplIC0gMiAqIHNp emVvZih1aW50NjRfdCkpICkKLSAgICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwogCiAgICAg ICAgICAgICB2Y3B1X3VucGF1c2Uodik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IDYxMTQ3MGUuLjVh ZWYzY2IgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS9odm0uYwpAQCAtMjIwNCw5ICsyMjA0LDggQEAgc3RhdGljIGludCBodm1fbG9hZF9j cHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICAg ICAgeHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhzdGF0ZV9idiA9IDA7CiAgICAgICAgIHhzYXZlX2Fy ZWEtPmZwdV9zc2UubXhjc3IgPSBNWENTUl9ERUZBVUxUOwogICAgIH0KLSAgICBpZiAoIGNwdV9o YXNfeHNhdmVzICYmIHhzYXZlX2FyZWEgKQotICAgICAgICB4c2F2ZV9hcmVhLT54c2F2ZV9oZHIu eGNvbXBfYnYgPSBYU1RBVEVfQ09NUEFDVElPTl9FTkFCTEVEIHwKLSAgICAgICAgICAgIHhzYXZl X2FyZWEtPnhzYXZlX2hkci54c3RhdGVfYnY7CisgICAgaWYgKCB4c2F2ZV9hcmVhICkKKyAgICAg ICAgeHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gMDsKIAogICAgIHYtPmFyY2gudXNl cl9yZWdzLmVheCA9IGN0eHQucmF4OwogICAgIHYtPmFyY2gudXNlcl9yZWdzLmVieCA9IGN0eHQu cmJ4OwpAQCAtNTU4Myw4ICs1NTgyLDcgQEAgdm9pZCBodm1fdmNwdV9yZXNldF9zdGF0ZShzdHJ1 Y3QgdmNwdSAqdiwgdWludDE2X3QgY3MsIHVpbnQxNl90IGlwKQogICAgIGlmICggdi0+YXJjaC54 c2F2ZV9hcmVhICkKICAgICB7CiAgICAgICAgIHYtPmFyY2gueHNhdmVfYXJlYS0+eHNhdmVfaGRy LnhzdGF0ZV9idiA9IFhTVEFURV9GUDsKLSAgICAgICAgdi0+YXJjaC54c2F2ZV9hcmVhLT54c2F2 ZV9oZHIueGNvbXBfYnYgPSBjcHVfaGFzX3hzYXZlcwotICAgICAgICAgICAgPyBYU1RBVEVfQ09N UEFDVElPTl9FTkFCTEVEIHwgWFNUQVRFX0ZQIDogMDsKKyAgICAgICAgdi0+YXJjaC54c2F2ZV9h cmVhLT54c2F2ZV9oZHIueGNvbXBfYnYgPSAwOwogICAgIH0KIAogICAgIHYtPmFyY2gudmdjX2Zs YWdzID0gVkdDRl9vbmxpbmU7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaTM4Ny5jIGIveGVu L2FyY2gveDg2L2kzODcuYwppbmRleCAxYTNlMjc3Li45YzRlODFhIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvaTM4Ny5jCisrKyBiL3hlbi9hcmNoL3g4Ni9pMzg3LmMKQEAgLTExOCw3ICsxMTgs MjQgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCB2Y3B1X3hzYXZlX21hc2soY29uc3Qgc3RydWN0 IHZjcHUgKnYpCiAgICAgaWYgKCB2LT5mcHVfZGlydGllZCApCiAgICAgICAgIHJldHVybiB2LT5h cmNoLm5vbmxhenlfeHN0YXRlX3VzZWQgPyBYU1RBVEVfQUxMIDogWFNUQVRFX0xBWlk7CiAKLSAg ICByZXR1cm4gdi0+YXJjaC5ub25sYXp5X3hzdGF0ZV91c2VkID8gWFNUQVRFX05PTkxBWlkgOiAw OworICAgIEFTU0VSVCh2LT5hcmNoLm5vbmxhenlfeHN0YXRlX3VzZWQpOworCisgICAgLyoKKyAg ICAgKiBUaGUgb2Zmc2V0cyBvZiBjb21wb25lbnRzIHdoaWNoIGxpdmUgaW4gdGhlIGV4dGVuZGVk IHJlZ2lvbiBvZgorICAgICAqIGNvbXBhY3QgeHNhdmUgYXJlYSBhcmUgbm90IGZpeGVkLiBYc2F2 ZSBhcmVhIG1heSBiZSBvdmVyd3JpdHRlbgorICAgICAqIHdoZW4gYSB4c2F2ZSB3aXRoIHYtPmZw dV9kaXJ0aWVkIHNldCBpcyBmb2xsb3dlZCBieSBvbmUgd2l0aAorICAgICAqIHYtPmZwdV9kaXJ0 aWVkIGNsZWFyLgorICAgICAqIEluIHN1Y2ggY2FzZSwgaWYgaHlwZXJ2aXNvciB1c2VzIGNvbXBh Y3QgeHNhdmUgYXJlYSBhbmQgZ3Vlc3QKKyAgICAgKiBoYXMgZXZlciB1c2VkIGxhenkgc3RhdGVz IChjaGVja2luZyB4Y3IwX2FjY3VtIGV4Y2x1ZGluZworICAgICAqIFhTVEFURV9GUF9TU0UpLCB2 Y3B1X3hzYXZlX21hc2sgd2lsbCByZXR1cm4gWFNUQVRFX0FMTC4gT3RoZXJ3aXNlCisgICAgICog cmV0dXJuIFhTVEFURV9OT05MQVpZLgorICAgICAqIFhTVEFURV9GUF9TU0UgbWF5IGJlIGV4Y2x1 ZGVkLCBiZWNhdXNlIHRoZSBvZmZzZXRzIG9mIFhTVEFURV9GUF9TU0UKKyAgICAgKiAoaW4gdGhl IGxlZ2FjeSByZWdpb24gb2YgeHNhdmUgYXJlYSkgYXJlIGZpeGVkLCBzbyBzYXZpbmcKKyAgICAg KiBYU1RBVEVfRlBfU1NFIHdpbGwgbm90IGNhdXNlIG92ZXJ3cml0aW5nIHByb2JsZW0uCisgICAg ICovCisgICAgcmV0dXJuICh2LT5hcmNoLnhzYXZlX2FyZWEtPnhzYXZlX2hkci54Y29tcF9idiAm IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQpCisgICAgICAgICAgICYmICh2LT5hcmNoLnhjcjBf YWNjdW0gJiBYU1RBVEVfTEFaWSAmIH5YU1RBVEVfRlBfU1NFKQorICAgICAgICAgICA/IFhTVEFU RV9BTEwgOiBYU1RBVEVfTk9OTEFaWTsKIH0KIAogLyogU2F2ZSB4ODcgZXh0ZW5kZWQgc3RhdGUg Ki8KQEAgLTI3NSwxMSArMjkyLDcgQEAgaW50IHZjcHVfaW5pdF9mcHUoc3RydWN0IHZjcHUgKnYp CiAgICAgICAgIHJldHVybiByYzsKIAogICAgIGlmICggdi0+YXJjaC54c2F2ZV9hcmVhICkKLSAg ICB7CiAgICAgICAgIHYtPmFyY2guZnB1X2N0eHQgPSAmdi0+YXJjaC54c2F2ZV9hcmVhLT5mcHVf c3NlOwotICAgICAgICBpZiAoIGNwdV9oYXNfeHNhdmVzICkKLSAgICAgICAgICAgIHYtPmFyY2gu eHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxF RDsKLSAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgQlVJTERfQlVHX09OKF9fYWxpZ25v Zih2LT5hcmNoLnhzYXZlX2FyZWEtPmZwdV9zc2UpIDwgMTYpOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3hzdGF0ZS5jIGIveGVuL2FyY2gveDg2L3hzdGF0ZS5jCmluZGV4IDZkOThmNTYuLjhj NjUyYmMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94c3RhdGUuYworKysgYi94ZW4vYXJjaC94 ODYveHN0YXRlLmMKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIGV4cGFuZF94c2F2ZV9zdGF0ZXMo c3RydWN0IHZjcHUgKnYsIHZvaWQgKmRlc3QsIHVuc2lnbmVkIGludCBzaXplKQogICAgIHU2NCB4 c3RhdGVfYnYgPSB4c2F2ZS0+eHNhdmVfaGRyLnhzdGF0ZV9idjsKICAgICB1NjQgdmFsaWQ7CiAK LSAgICBpZiAoICFjcHVfaGFzX3hzYXZlcyAmJiAhY3B1X2hhc194c2F2ZWMgKQorICAgIGlmICgg ISh4c2F2ZS0+eHNhdmVfaGRyLnhjb21wX2J2ICYgWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRCkg KQogICAgIHsKICAgICAgICAgbWVtY3B5KGRlc3QsIHhzYXZlLCBzaXplKTsKICAgICAgICAgcmV0 dXJuOwpAQCAtMjIzLDEzICsyMjMsMTQgQEAgdm9pZCBjb21wcmVzc194c2F2ZV9zdGF0ZXMoc3Ry dWN0IHZjcHUgKnYsIGNvbnN0IHZvaWQgKnNyYywgdW5zaWduZWQgaW50IHNpemUpCiAgICAgdTY0 IHhzdGF0ZV9idiA9ICgoY29uc3Qgc3RydWN0IHhzYXZlX3N0cnVjdCAqKXNyYyktPnhzYXZlX2hk ci54c3RhdGVfYnY7CiAgICAgdTY0IHZhbGlkOwogCi0gICAgaWYgKCAhY3B1X2hhc194c2F2ZXMg JiYgIWNwdV9oYXNfeHNhdmVjICkKKyAgICBBU1NFUlQoIXhzYXZlX2FyZWFfY29tcHJlc3NlZChz cmMpKTsKKworICAgIGlmICggISh2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09O TFkpICkKICAgICB7CiAgICAgICAgIG1lbWNweSh4c2F2ZSwgc3JjLCBzaXplKTsKICAgICAgICAg cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCgheHNhdmVfYXJlYV9jb21wcmVzc2VkKHNyYykp OwogICAgIC8qCiAgICAgICogQ29weSBsZWdhY3kgWFNBVkUgYXJlYSwgdG8gYXZvaWQgY29tcGxp Y2F0aW9ucyB3aXRoIENQVUlECiAgICAgICogbGVhdmVzIDAgYW5kIDEgaW4gdGhlIGxvb3AgYmVs b3cuCkBAIC0yNzAsMTUgKzI3MSwxNiBAQCB2b2lkIHhzYXZlKHN0cnVjdCB2Y3B1ICp2LCB1aW50 NjRfdCBtYXNrKQogICAgIHVpbnQzMl90IGxtYXNrID0gbWFzazsKICAgICB1bnNpZ25lZCBpbnQg ZmlwX3dpZHRoID0gdi0+ZG9tYWluLT5hcmNoLng4N19maXBfd2lkdGg7CiAjZGVmaW5lIFhTQVZF KHBmeCkgXAotICAgICAgICBhbHRlcm5hdGl2ZV9pb18zKCIuYnl0ZSAiIHBmeCAiMHgwZiwweGFl LDB4MjdcbiIsIC8qIHhzYXZlICovIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiLmJ5dGUg IiBwZnggIjB4MGYsMHhhZSwweDM3XG4iLCAvKiB4c2F2ZW9wdCAqLyBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgWDg2X0ZFQVRVUkVfWFNBVkVPUFQsIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAiLmJ5dGUgIiBwZnggIjB4MGYsMHhjNywweDI3XG4iLCAvKiB4c2F2ZWMgKi8gXAotICAg ICAgICAgICAgICAgICAgICAgICAgIFg4Nl9GRUFUVVJFX1hTQVZFQywgXAotICAgICAgICAgICAg ICAgICAgICAgICAgICIuYnl0ZSAiIHBmeCAiMHgwZiwweGM3LDB4MmZcbiIsIC8qIHhzYXZlcyAq LyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0ZFQVRVUkVfWFNBVkVTLCBcCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIj1tIiAoKnB0ciksIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAiYSIgKGxtYXNrKSwgImQiIChobWFzayksICJEIiAocHRyKSkKKyAgICAgICAgaWYgKCB2 LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkgKSBcCisgICAgICAgICAgICBh c20gdm9sYXRpbGUgKCAiLmJ5dGUgIiBwZnggIjB4MGYsMHhjNywweDJmXG4iIC8qIHhzYXZlcyAq LyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCpwdHIpIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogImEiIChsbWFzayksICJkIiAoaG1hc2spLCAiRCIgKHB0cikg KTsgXAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgIGFsdGVybmF0aXZlX2lvKCIuYnl0ZSAi IHBmeCAiMHgwZiwweGFlLDB4MjdcbiIsIC8qIHhzYXZlICovIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICIuYnl0ZSAiIHBmeCAiMHgwZiwweGFlLDB4MzdcbiIsIC8qIHhzYXZlb3B0ICov IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9GRUFUVVJFX1hTQVZFT1BULCBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAiPW0iICgqcHRyKSwgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgImEiIChsbWFzayksICJkIiAoaG1hc2spLCAiRCIgKHB0cikpCiAKICAgICBp ZiAoIGZpcF93aWR0aCA9PSA4IHx8ICEobWFzayAmIFhTVEFURV9GUCkgKQogICAgIHsKQEAgLTM2 OSwxOSArMzcxLDI5IEBAIHZvaWQgeHJzdG9yKHN0cnVjdCB2Y3B1ICp2LCB1aW50NjRfdCBtYXNr KQogICAgICAgICBzd2l0Y2ggKCBfX2J1aWx0aW5fZXhwZWN0KHB0ci0+ZnB1X3NzZS54W0ZQVV9X T1JEX1NJWkVfT0ZGU0VUXSwgOCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBCVUlMRF9CVUdf T04oc2l6ZW9mKGZhdWx0cykgIT0gNCk7IC8qIENsYW5nIGRvZXNuJ3Qgc3VwcG9ydCAleiBpbiBh c20uICovCi0jZGVmaW5lIFhSU1RPUihwZngpIFwKLSAgICAgICAgYWx0ZXJuYXRpdmVfaW8oIjE6 IC5ieXRlICIgcGZ4ICIweDBmLDB4YWUsMHgyZlxuIiBcCisjZGVmaW5lIF94cnN0b3IoaW5zbikg XAorICAgICAgICBhc20gdm9sYXRpbGUgKCAiMTogLmJ5dGUgIiBpbnNuICJcbiIgXAogICAgICAg ICAgICAgICAgICAgICAgICAiMzpcbiIgXAogICAgICAgICAgICAgICAgICAgICAgICAiICAgLnNl Y3Rpb24gLmZpeHVwLFwiYXhcIlxuIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICIyOiBpbmNs ICVbZmF1bHRzXVxuIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICIgICBqbXAgM2JcbiIgXAog ICAgICAgICAgICAgICAgICAgICAgICAiICAgLnByZXZpb3VzXG4iIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgX0FTTV9FWFRBQkxFKDFiLCAyYiksIFwKLSAgICAgICAgICAgICAgICAgICAgICAg Ii5ieXRlICIgcGZ4ICIweDBmLDB4YzcsMHgxZlxuIiwgXAotICAgICAgICAgICAgICAgICAgICAg ICBYODZfRkVBVFVSRV9YU0FWRVMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgQVNNX09VVFBV VDIoW21lbV0gIittIiAoKnB0ciksIFtmYXVsdHNdICIrZyIgKGZhdWx0cykpLCBcCi0gICAgICAg ICAgICAgICAgICAgICAgIFtsbWFza10gImEiIChsbWFzayksIFtobWFza10gImQiIChobWFzayks IFwKLSAgICAgICAgICAgICAgICAgICAgICAgW3B0cl0gIkQiIChwdHIpKQorICAgICAgICAgICAg ICAgICAgICAgICBfQVNNX0VYVEFCTEUoMWIsIDJiKSBcCisgICAgICAgICAgICAgICAgICAgICAg IDogW21lbV0gIittIiAoKnB0ciksIFtmYXVsdHNdICIrZyIgKGZhdWx0cykgXAorICAgICAgICAg ICAgICAgICAgICAgICA6IFtsbWFza10gImEiIChsbWFzayksIFtobWFza10gImQiIChobWFzayks IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbcHRyXSAiRCIgKHB0cikgKQorCisjZGVmaW5l IFhSU1RPUihwZngpIFwKKyAgICAgICAgaWYgKCB2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVf WFNBVkVTX09OTFkgKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgaWYgKCB1bmxpa2VseSgh KHB0ci0+eHNhdmVfaGRyLnhjb21wX2J2ICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQpKSApIFwKKyAgICAgICAgICAgICAgICBwdHItPnhz YXZlX2hkci54Y29tcF9idiB8PSBwdHItPnhzYXZlX2hkci54c3RhdGVfYnYgfCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFNUQVRFX0NPTVBBQ1RJT05fRU5B QkxFRDsgXAorICAgICAgICAgICAgX3hyc3RvcihwZnggIjB4MGYsMHhjNywweDFmIik7IC8qIHhy c3RvcnMgKi8gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgICBfeHJz dG9yKHBmeCAiMHgwZiwweGFlLDB4MmYiKSAvKiB4cnN0b3IgKi8KIAogICAgICAgICBkZWZhdWx0 OgogICAgICAgICAgICAgWFJTVE9SKCIweDQ4LCIpOwpAQCAtMzkwLDYgKzQwMiw3IEBAIHZvaWQg eHJzdG9yKHN0cnVjdCB2Y3B1ICp2LCB1aW50NjRfdCBtYXNrKQogICAgICAgICAgICAgWFJTVE9S KCIiKTsKICAgICAgICAgICAgIGJyZWFrOwogI3VuZGVmIFhSU1RPUgorI3VuZGVmIF94cnN0b3IK ICAgICAgICAgfQogICAgICAgICBpZiAoIGxpa2VseShmYXVsdHMgPT0gcHJldl9mYXVsdHMpICkK ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDE3LDcgKzQzMCw3IEBAIHZvaWQgeHJzdG9yKHN0cnVj dCB2Y3B1ICp2LCB1aW50NjRfdCBtYXNrKQogICAgICAgICAgICAgICAgICAgKChtYXNrICYgWFNU QVRFX1lNTSkgJiYKICAgICAgICAgICAgICAgICAgICAhKHB0ci0+eHNhdmVfaGRyLnhjb21wX2J2 ICYgWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRCkpKSApCiAgICAgICAgICAgICAgICAgcHRyLT5m cHVfc3NlLm14Y3NyICY9IG14Y3NyX21hc2s7Ci0gICAgICAgICAgICBpZiAoIGNwdV9oYXNfeHNh dmVzIHx8IGNwdV9oYXNfeHNhdmVjICkKKyAgICAgICAgICAgIGlmICggdi0+YXJjaC54Y3IwX2Fj Y3VtICYgWFNUQVRFX1hTQVZFU19PTkxZICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICBwdHItPnhzYXZlX2hkci54Y29tcF9idiAmPSB0aGlzX2NwdSh4Y3IwKSB8IHRoaXNfY3B1KHhz cyk7CiAgICAgICAgICAgICAgICAgcHRyLT54c2F2ZV9oZHIueHN0YXRlX2J2ICY9IHB0ci0+eHNh dmVfaGRyLnhjb21wX2J2OwpAQCAtNDM0LDcgKzQ0Nyw3IEBAIHZvaWQgeHJzdG9yKHN0cnVjdCB2 Y3B1ICp2LCB1aW50NjRfdCBtYXNrKQogICAgICAgICBjYXNlIDI6IC8qIFN0YWdlIDI6IFJlc2V0 IGFsbCBzdGF0ZS4gKi8KICAgICAgICAgICAgIHB0ci0+ZnB1X3NzZS5teGNzciA9IE1YQ1NSX0RF RkFVTFQ7CiAgICAgICAgICAgICBwdHItPnhzYXZlX2hkci54c3RhdGVfYnYgPSAwOwotICAgICAg ICAgICAgcHRyLT54c2F2ZV9oZHIueGNvbXBfYnYgPSBjcHVfaGFzX3hzYXZlcworICAgICAgICAg ICAgcHRyLT54c2F2ZV9oZHIueGNvbXBfYnYgPSB2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVf WFNBVkVTX09OTFkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBYU1RB VEVfQ09NUEFDVElPTl9FTkFCTEVEIDogMDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg ICB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni94c3RhdGUuaAppbmRleCBhNDg4Njg4Li45MWQxYzM5IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0 YXRlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNkZWZpbmUgWFNUQVRFX05PTkxBWlkgKFhTVEFURV9M V1AgfCBYU1RBVEVfQk5EUkVHUyB8IFhTVEFURV9CTkRDU1IgfCBcCiAgICAgICAgICAgICAgICAg ICAgICAgICBYU1RBVEVfUEtSVSkKICNkZWZpbmUgWFNUQVRFX0xBWlkgICAgKFhTVEFURV9BTEwg JiB+WFNUQVRFX05PTkxBWlkpCisjZGVmaW5lIFhTVEFURV9YU0FWRVNfT05MWSAgICAgICAgIDAK ICNkZWZpbmUgWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRCAgKDFVTEwgPDwgNjMpCiAKICNkZWZp bmUgWFNUQVRFX0FMSUdONjQgKDFVIDw8IDEpCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==