From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shuai Ruan Subject: [V5] x86/xsaves: fix overwriting between non-lazy/lazy xsaves Date: Fri, 18 Mar 2016 11:01:20 +0800 Message-ID: <1458270080-19493-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: 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+Ci0tLQp2NTogQWRk cmVzcyBjb21tZW50cyBmcm9tIEphbgoxLiBBZGQgWFNUQVRFX1hTQVZFU19PTkxZIGFuZCB1c2lu ZyB4c2F2ZXMgZGVwZW5kIG9uIHdoZXRoZXIgdGhpcyBiaXRzIGFyZQogICBzZXQgaW4geGNyMF9h Y2N1bQoyLiBDaGFuZ2UgY29tcHJlc3MgbG9naWMgaW4gY29tcHJlc3NfeHNhdmVfc3RhdGVzKCkg ZGVwZW5kIG9uIAogICAhKHYtPmFyY2gueGNyMF9hY2N1bSAmIFhTVEFURV9YU0FWRVNfT05MWSkg JiYgIXhzYXZlX2FyZWFfY29tcHJlc3NlZChzcmMpKS4KMy4gWFNUQVRFX0NPTVBBQ1RJT05fRU5B QkxFRCBvbmx5IHNldCBpbiB4cnN0b3IoKS4KNC4gUmViYXNlIHRoZSBjb2RlIG9uCiAgIFtWNF0g eDg2L3hzYXZlczogY2FsY3VsYXRlIHRoZSB4c3RhdGVfY29tcF9vZmZzZXRzIGJhc2Ugb24geHN0 YXRlX2J2CiAgIChhbHJlYWR5IHNlbnQgb3V0KSBGb3IgdGhleSBib3RoIGNoYW5nZSBzYW1lIGNv ZGUuIAogICAoSSBhbSBub3Qgc3VyZSB3aGV0aGVyIHRoaXMgcmViYXNlIGlzIG9rIG9yIG5vdCku CiAKdjQ6IEFkZHJlc3MgY29tbWVudHMgZnJvbSBKYW4KMS4gQWRkIHN5bnRoZXRpYyBDUFUgZmVh dHVyZSBYODZfRkVBVFVSRV9YU0FWRV9DT01QQUNUIGFuZCB1c2UgdGhpcyBmZWF0dXJlIAogICBp bmRpY2F0ZSB3aGV0aGVyIGh5cGVydmlzb3IgdXNlIGNvbXBhY3QgeHNhdmUgYXJlYSBvciBub3Qu CjIuIEZpeCB0eXBlL2dyYW1tZXIgZXJyb3JzIG9mIHRoZSBjb21tZW50IGluIHZjcHVfeHNhdmVf bWFzay4KCnYzOiBBZGRyZXNzIGNvbW1lbnRzIGZyb20gSmFuCjEuIEFkZCB4c2F2YyBjbGVhbiB1 cCBjb2RlIGFuZCBkaXNhYmxlIHhzYXZlcy4KMi4gQWRkIGNvbW1lbnQgb24gd2h5IGNlcnRhaW4g bWFzayBzaG91bGQgYmUgcmV0dXJuIGluIHZjcHVfeHNhdmVfbWFzay4KCnYyOiBBZGRyZXNzIGNv bW1lbnRzIGZyb20gSmFuCmFkZCBwZXJmb3JtYW5jZSBpbXBhY3QgYW5kIG5leHQgc3RlcCB0byBk byBpbiB0aGUgZGVzY3JpcHRpb24uCgogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICB8ICA4 IC0tLS0KIHhlbi9hcmNoL3g4Ni9kb21jdGwuYyAgICAgICAgfCAgNiArLS0KIHhlbi9hcmNoL3g4 Ni9odm0vaHZtLmMgICAgICAgfCAgNyAtLS0tCiB4ZW4vYXJjaC94ODYvaTM4Ny5jICAgICAgICAg IHwgMjMgKysrKysrKystLS0KIHhlbi9hcmNoL3g4Ni94c3RhdGUuYyAgICAgICAgfCA5MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNt LXg4Ni94c3RhdGUuaCB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwg NTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVu L2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IGE2ZDcyMWIuLjI2ZGQxZDMgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTk0OCwx NCArOTQ4LDYgQEAgaW50IGFyY2hfc2V0X2luZm9fZ3Vlc3QoCiAgICAgICAgIGZwdV9zc2UtPmZj dyA9IEZDV19ERUZBVUxUOwogICAgICAgICBmcHVfc3NlLT5teGNzciA9IE1YQ1NSX0RFRkFVTFQ7 CiAgICAgfQotICAgIGlmICggY3B1X2hhc194c2F2ZXMgKQotICAgIHsKLSAgICAgICAgQVNTRVJU KHYtPmFyY2gueHNhdmVfYXJlYSk7Ci0gICAgICAgIHYtPmFyY2gueHNhdmVfYXJlYS0+eHNhdmVf aGRyLnhjb21wX2J2ID0gWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRCB8Ci0gICAgICAgICAgICB2 LT5hcmNoLnhzYXZlX2FyZWEtPnhzYXZlX2hkci54c3RhdGVfYnY7Ci0gICAgfQotICAgIGVsc2Ug aWYgKCB2LT5hcmNoLnhzYXZlX2FyZWEgKQotICAgICAgICB2LT5hcmNoLnhzYXZlX2FyZWEtPnhz YXZlX2hkci54Y29tcF9idiA9IDA7CiAKICAgICBpZiAoICFjb21wYXQgKQogICAgIHsKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRl eCBiMzRhMjk1Li4xYTM2YTM2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysr IGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCkBAIC05MjIsNyArOTIyLDcgQEAgbG9uZyBhcmNoX2Rv X2RvbWN0bCgKICAgICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwogCiAgICAgICAgICAgICBv ZmZzZXQgKz0gc2l6ZW9mKHYtPmFyY2gueGNyMF9hY2N1bSk7Ci0gICAgICAgICAgICBpZiAoICFy ZXQgJiYgKGNwdV9oYXNfeHNhdmVzIHx8IGNwdV9oYXNfeHNhdmVjKSApCisgICAgICAgICAgICBp ZiAoICFyZXQgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZvaWQgKnhzYXZlX2Fy ZWE7CiAKQEAgLTk0MiwxMCArOTQyLDYgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAg ICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7CiAgICAgICAgICAgICAgICAgeGZyZWUoeHNhdmVf YXJlYSk7CiAgICAgICAgICAgIH0KLSAgICAgICAgICAgZWxzZSBpZiAoICFyZXQgJiYgY29weV90 b19ndWVzdF9vZmZzZXQoZXZjLT5idWZmZXIsIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKil2LT5hcmNoLnhzYXZlX2FyZWEs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUg LSAyICogc2l6ZW9mKHVpbnQ2NF90KSkgKQotICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7 CiAKICAgICAgICAgICAgIHZjcHVfdW5wYXVzZSh2KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggMjU1 YTFkNi4uMzVlMmM1MiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0yMjAyLDkgKzIyMDIsNiBAQCBzdGF0aWMgaW50IGh2 bV9sb2FkX2NwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpo KQogICAgICAgICB4c2F2ZV9hcmVhLT54c2F2ZV9oZHIueHN0YXRlX2J2ID0gMDsKICAgICAgICAg eHNhdmVfYXJlYS0+ZnB1X3NzZS5teGNzciA9IE1YQ1NSX0RFRkFVTFQ7CiAgICAgfQotICAgIGlm ICggY3B1X2hhc194c2F2ZXMgJiYgeHNhdmVfYXJlYSApCi0gICAgICAgIHhzYXZlX2FyZWEtPnhz YXZlX2hkci54Y29tcF9idiA9IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQgfAotICAgICAgICAg ICAgeHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhzdGF0ZV9idjsKIAogICAgIHYtPmFyY2gudXNlcl9y ZWdzLmVheCA9IGN0eHQucmF4OwogICAgIHYtPmFyY2gudXNlcl9yZWdzLmVieCA9IGN0eHQucmJ4 OwpAQCAtNTU4OSwxMSArNTU4Niw3IEBAIHZvaWQgaHZtX3ZjcHVfcmVzZXRfc3RhdGUoc3RydWN0 IHZjcHUgKnYsIHVpbnQxNl90IGNzLCB1aW50MTZfdCBpcCkKICAgICBmcHVfY3R4dC0+ZmN3ID0g RkNXX1JFU0VUOwogICAgIGZwdV9jdHh0LT5teGNzciA9IE1YQ1NSX0RFRkFVTFQ7CiAgICAgaWYg KCB2LT5hcmNoLnhzYXZlX2FyZWEgKQotICAgIHsKICAgICAgICAgdi0+YXJjaC54c2F2ZV9hcmVh LT54c2F2ZV9oZHIueHN0YXRlX2J2ID0gWFNUQVRFX0ZQOwotICAgICAgICB2LT5hcmNoLnhzYXZl X2FyZWEtPnhzYXZlX2hkci54Y29tcF9idiA9IGNwdV9oYXNfeHNhdmVzCi0gICAgICAgICAgICA/ IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQgfCBYU1RBVEVfRlAgOiAwOwotICAgIH0KIAogICAg IHYtPmFyY2gudmdjX2ZsYWdzID0gVkdDRl9vbmxpbmU7CiAgICAgbWVtc2V0KCZ2LT5hcmNoLnVz ZXJfcmVncywgMCwgc2l6ZW9mKHYtPmFyY2gudXNlcl9yZWdzKSk7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaTM4Ny5jIGIveGVuL2FyY2gveDg2L2kzODcuYwppbmRleCBjMjlkMGZhLi4yYWZh NzYyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaTM4Ny5jCisrKyBiL3hlbi9hcmNoL3g4Ni9p Mzg3LmMKQEAgLTExOCw3ICsxMTgsMjQgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCB2Y3B1X3hz YXZlX21hc2soY29uc3Qgc3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCB2LT5mcHVfZGlydGllZCAp CiAgICAgICAgIHJldHVybiB2LT5hcmNoLm5vbmxhenlfeHN0YXRlX3VzZWQgPyBYU1RBVEVfQUxM IDogWFNUQVRFX0xBWlk7CiAKLSAgICByZXR1cm4gdi0+YXJjaC5ub25sYXp5X3hzdGF0ZV91c2Vk ID8gWFNUQVRFX05PTkxBWlkgOiAwOworICAgIEFTU0VSVCh2LT5hcmNoLm5vbmxhenlfeHN0YXRl X3VzZWQpOworCisgICAgLyoKKyAgICAgKiBUaGUgb2Zmc2V0cyBvZiBjb21wb25lbnRzIHdoaWNo IGxpdmUgaW4gdGhlIGV4dGVuZGVkIHJlZ2lvbiBvZgorICAgICAqIGNvbXBhY3QgeHNhdmUgYXJl YSBhcmUgbm90IGZpeGVkLiBYc2F2ZSBhcmVhIG1heSBiZSBvdmVyd3JpdHRlbgorICAgICAqIHdo ZW4gYSB4c2F2ZSB3aXRoIHYtPmZwdV9kaXJ0aWVkIHNldCBpcyBmb2xsb3dlZCBieSBvbmUgd2l0 aAorICAgICAqIHYtPmZwdV9kaXJ0aWVkIGNsZWFyLgorICAgICAqIEluIHN1Y2ggY2FzZSwgaWYg aHlwZXJ2aXNvciB1c2VzIGNvbXBhY3QgeHNhdmUgYXJlYSBhbmQgZ3Vlc3QKKyAgICAgKiBoYXMg ZXZlciB1c2VkIGxhenkgc3RhdGVzIChjaGVja2luZyB4Y3IwX2FjY3VtIGV4Y2x1ZGluZworICAg ICAqIFhTVEFURV9GUF9TU0UpLCB2Y3B1X3hzYXZlX21hc2sgd2lsbCByZXR1cm4gWFNUQVRFX0FM TC4gT3RoZXJ3aXNlCisgICAgICogcmV0dXJuIFhTVEFURV9OT05MQVpZLgorICAgICAqIFhTVEFU RV9GUF9TU0UgbWF5IGJlIGV4Y2x1ZGVkLCBiZWNhdXNlIHRoZSBvZmZzZXRzIG9mIFhTVEFURV9G UF9TU0UKKyAgICAgKiAoaW4gdGhlIGxlZ2FjeSByZWdpb24gb2YgeHNhdmUgYXJlYSkgYXJlIGZp eGVkLCBzbyBzYXZpbmcKKyAgICAgKiBYU1RBVEVfRlBfU1NFIHdpbGwgbm90IGNhdXNlIG92ZXJ3 cml0aW5nIHByb2JsZW0uCisgICAgICovCisgICAgcmV0dXJuICh2LT5hcmNoLnhzYXZlX2FyZWEt PnhzYXZlX2hkci54Y29tcF9idiAmIFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQpCisgICAgICAg ICAgICYmICh2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfTEFaWSAmIH5YU1RBVEVfRlBfU1NF KQorICAgICAgICAgICA/IFhTVEFURV9BTEwgOiBYU1RBVEVfTk9OTEFaWTsKIH0KIAogLyogU2F2 ZSB4ODcgZXh0ZW5kZWQgc3RhdGUgKi8KQEAgLTI3NSwxMSArMjkyLDcgQEAgaW50IHZjcHVfaW5p dF9mcHUoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHJldHVybiByYzsKIAogICAgIGlmICggdi0+ YXJjaC54c2F2ZV9hcmVhICkKLSAgICB7CiAgICAgICAgIHYtPmFyY2guZnB1X2N0eHQgPSAmdi0+ YXJjaC54c2F2ZV9hcmVhLT5mcHVfc3NlOwotICAgICAgICBpZiAoIGNwdV9oYXNfeHNhdmVzICkK LSAgICAgICAgICAgIHYtPmFyY2gueHNhdmVfYXJlYS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gWFNU QVRFX0NPTVBBQ1RJT05fRU5BQkxFRDsKLSAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAg QlVJTERfQlVHX09OKF9fYWxpZ25vZih2LT5hcmNoLnhzYXZlX2FyZWEtPmZwdV9zc2UpIDwgMTYp OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzdGF0ZS5jIGIveGVuL2FyY2gveDg2L3hzdGF0 ZS5jCmluZGV4IGVmMmM1NGQuLjYxZTU4MjggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94c3Rh dGUuYworKysgYi94ZW4vYXJjaC94ODYveHN0YXRlLmMKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lk IGV4cGFuZF94c2F2ZV9zdGF0ZXMoc3RydWN0IHZjcHUgKnYsIHZvaWQgKmRlc3QsIHVuc2lnbmVk IGludCBzaXplKQogICAgIHU2NCB4c3RhdGVfYnYgPSB4c2F2ZS0+eHNhdmVfaGRyLnhzdGF0ZV9i djsKICAgICB1NjQgdmFsaWQ7CiAKLSAgICBpZiAoICFjcHVfaGFzX3hzYXZlcyAmJiAhY3B1X2hh c194c2F2ZWMgKQorICAgIGlmICggISh4c2F2ZS0+eHNhdmVfaGRyLnhjb21wX2J2ICYgWFNUQVRF X0NPTVBBQ1RJT05fRU5BQkxFRCkgKQogICAgIHsKICAgICAgICAgbWVtY3B5KGRlc3QsIHhzYXZl LCBzaXplKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjIyLDIyICsyMjIsMjEgQEAgdm9pZCBjb21w cmVzc194c2F2ZV9zdGF0ZXMoc3RydWN0IHZjcHUgKnYsIGNvbnN0IHZvaWQgKnNyYywgdW5zaWdu ZWQgaW50IHNpemUpCiAgICAgdTY0IHhzdGF0ZV9idiA9ICgoY29uc3Qgc3RydWN0IHhzYXZlX3N0 cnVjdCAqKXNyYyktPnhzYXZlX2hkci54c3RhdGVfYnY7CiAgICAgdTY0IHZhbGlkOwogCi0gICAg aWYgKCAhY3B1X2hhc194c2F2ZXMgJiYgIWNwdV9oYXNfeHNhdmVjICkKKyAgICBpZiAoICEodi0+ YXJjaC54Y3IwX2FjY3VtICYgWFNUQVRFX1hTQVZFU19PTkxZKSAmJgorICAgICAgICAgIXhzYXZl X2FyZWFfY29tcHJlc3NlZChzcmMpICkKICAgICB7CiAgICAgICAgIG1lbWNweSh4c2F2ZSwgc3Jj LCBzaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCgheHNhdmVfYXJl YV9jb21wcmVzc2VkKHNyYykpOwogICAgIC8qCiAgICAgICogQ29weSBsZWdhY3kgWFNBVkUgYXJl YSwgdG8gYXZvaWQgY29tcGxpY2F0aW9ucyB3aXRoIENQVUlECiAgICAgICogbGVhdmVzIDAgYW5k IDEgaW4gdGhlIGxvb3AgYmVsb3cuCiAgICAgICovCiAgICAgbWVtY3B5KHhzYXZlLCBzcmMsIEZY U0FWRV9TSVpFKTsKIAotICAgIC8qIFNldCBYU1RBVEVfQlYgYW5kIFhDT01QX0JWLiAgKi8KKyAg ICAvKiBTZXQgWFNUQVRFX0JWLiAgKi8KICAgICB4c2F2ZS0+eHNhdmVfaGRyLnhzdGF0ZV9idiA9 IHhzdGF0ZV9idjsKLSAgICB4c2F2ZS0+eHNhdmVfaGRyLnhjb21wX2J2ID0gdi0+YXJjaC54Y3Iw X2FjY3VtIHwgWFNUQVRFX0NPTVBBQ1RJT05fRU5BQkxFRDsKICAgICBzZXR1cF94c3RhdGVfY29t cCh4c3RhdGVfY29tcF9vZmZzZXRzLCB4c3RhdGVfYnYpOwogCiAgICAgLyoKQEAgLTI2NywzMSAr MjY2LDM1IEBAIHZvaWQgeHNhdmUoc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAgICAg dWludDMyX3QgaG1hc2sgPSBtYXNrID4+IDMyOwogICAgIHVpbnQzMl90IGxtYXNrID0gbWFzazsK ICAgICB1bnNpZ25lZCBpbnQgZmlwX3dpZHRoID0gdi0+ZG9tYWluLT5hcmNoLng4N19maXBfd2lk dGg7Ci0jZGVmaW5lIFhTQVZFKHBmeCkgXAotICAgICAgICBhbHRlcm5hdGl2ZV9pb18zKCIuYnl0 ZSAiIHBmeCAiMHgwZiwweGFlLDB4MjdcbiIsIC8qIHhzYXZlICovIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAiLmJ5dGUgIiBwZnggIjB4MGYsMHhhZSwweDM3XG4iLCAvKiB4c2F2ZW9wdCAq LyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0ZFQVRVUkVfWFNBVkVPUFQsIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAiLmJ5dGUgIiBwZnggIjB4MGYsMHhjNywweDI3XG4iLCAv KiB4c2F2ZWMgKi8gXAotICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9GRUFUVVJFX1hTQVZF QywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICIuYnl0ZSAiIHBmeCAiMHgwZiwweGM3LDB4 MmZcbiIsIC8qIHhzYXZlcyAqLyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0ZFQVRV UkVfWFNBVkVTLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIj1tIiAoKnB0ciksIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAiYSIgKGxtYXNrKSwgImQiIChobWFzayksICJEIiAocHRy KSkKKyNkZWZpbmUgWFNBVkUocGZ4LCB4c2F2ZV9pbnMpIFwKKyAgICAgICAgYXNtIHZvbGF0aWxl ICggIi5ieXRlICIgcGZ4IHhzYXZlX2lucyBcCisgICAgICAgICAgICAgICAgICAgICAgIDogIj1t IiAoKnB0cikgXAorICAgICAgICAgICAgICAgICAgICAgICA6ICJhIiAobG1hc2spLCAiZCIgKGht YXNrKSwgIkQiIChwdHIpICkKIAogICAgIGlmICggZmlwX3dpZHRoID09IDggfHwgIShtYXNrICYg WFNUQVRFX0ZQKSApCiAgICAgewotICAgICAgICBYU0FWRSgiMHg0OCwiKTsKKyAgICAgICAgaWYg KCB2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkgKQorICAgICAgICAgICAg WFNBVkUoIjB4NDgsIiwgIjB4MGYsMHhjNywweDJmIik7IC8qIHhzYXZlcyAqLworICAgICAgICBl bHNlIGlmICggY3B1X2hhc194c2F2ZW9wdCApCisgICAgICAgICAgICBYU0FWRSgiMHg0OCwiLCAi MHgwZiwweGFlLDB4MzciKTsgLyogeHNhdmVvcHQgKi8KKyAgICAgICAgZWxzZQorICAgICAgICAg ICAgWFNBVkUoIjB4NDgsIiwgIjB4MGYsMHhhZSwweDI3Iik7IC8qIHhzYXZlICovCiAgICAgfQog ICAgIGVsc2UgaWYgKCBmaXBfd2lkdGggPT0gNCApCiAgICAgewotICAgICAgICBYU0FWRSgiIik7 CisgICAgICAgIGlmICggdi0+YXJjaC54Y3IwX2FjY3VtICYgWFNUQVRFX1hTQVZFU19PTkxZICkK KyAgICAgICAgICAgIFhTQVZFKCIiLCAiMHgwZiwweGM3LDB4MmYiKTsKKyAgICAgICAgZWxzZSBp ZiAoIGNwdV9oYXNfeHNhdmVvcHQgKQorICAgICAgICAgICAgWFNBVkUoIiIsICIweDBmLDB4YWUs MHgzNyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBYU0FWRSgiIiwgIjB4MGYsMHhhZSww eDI3Iik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHR5cGVvZihwdHItPmZwdV9z c2UuZmlwLnNlbCkgZmNzID0gcHRyLT5mcHVfc3NlLmZpcC5zZWw7CiAgICAgICAgIHR5cGVvZihw dHItPmZwdV9zc2UuZmRwLnNlbCkgZmRzID0gcHRyLT5mcHVfc3NlLmZkcC5zZWw7CiAKLSAgICAg ICAgaWYgKCBjcHVfaGFzX3hzYXZlb3B0IHx8IGNwdV9oYXNfeHNhdmVzICkKKyAgICAgICAgaWYg KCBjcHVfaGFzX3hzYXZlb3B0IHx8ICh2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVT X09OTFkpICkKICAgICAgICAgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFhTQVZF T1BUL1hTQVZFUyBtYXkgbm90IHdyaXRlIHRoZSBGUFUgcG9ydGlvbiBldmVuIHdoZW4gdGhlCkBA IC0zMDcsNyArMzEwLDEyIEBAIHZvaWQgeHNhdmUoc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1h c2spCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBYU0FWRSgiMHg0OCwiKTsK KyAgICAgICAgaWYgKCB2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkgKQor ICAgICAgICAgICAgWFNBVkUoIjB4NDgsIiwgIjB4MGYsMHhjNywweDJmIik7CisgICAgICAgIGVs c2UgaWYgKCBjcHVfaGFzX3hzYXZlb3B0ICkKKyAgICAgICAgICAgIFhTQVZFKCIweDQ4LCIsICIw eDBmLDB4YWUsMHgzNyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBYU0FWRSgiMHg0OCwi LCAiMHgwZiwweGFlLDB4MjciKTsKIAogICAgICAgICBpZiAoICEobWFzayAmIHB0ci0+eHNhdmVf aGRyLnhzdGF0ZV9idiAmIFhTVEFURV9GUCkgfHwKICAgICAgICAgICAgICAvKgpAQCAtMzE3LDcg KzMyNSw4IEBAIHZvaWQgeHNhdmUoc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAgICAg ICAgICAgICAgKCEocHRyLT5mcHVfc3NlLmZzdyAmIDB4MDA4MCkgJiYKICAgICAgICAgICAgICAg Ym9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EKSApCiAgICAgICAgIHsK LSAgICAgICAgICAgIGlmICggY3B1X2hhc194c2F2ZW9wdCB8fCBjcHVfaGFzX3hzYXZlcyApCisg ICAgICAgICAgICBpZiAoIGNwdV9oYXNfeHNhdmVvcHQgfHwKKyAgICAgICAgICAgICAgICAgKHYt PmFyY2gueGNyMF9hY2N1bSAmIFhTVEFURV9YU0FWRVNfT05MWSkgKQogICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgIHB0ci0+ZnB1X3NzZS5maXAuc2VsID0gZmNzOwogICAgICAgICAgICAg ICAgIHB0ci0+ZnB1X3NzZS5mZHAuc2VsID0gZmRzOwpAQCAtMzc4LDI1ICszODcsNDIgQEAgdm9p ZCB4cnN0b3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAgICAgICAgIHN3aXRjaCAo IF9fYnVpbHRpbl9leHBlY3QocHRyLT5mcHVfc3NlLnhbRlBVX1dPUkRfU0laRV9PRkZTRVRdLCA4 KSApCiAgICAgICAgIHsKICAgICAgICAgICAgIEJVSUxEX0JVR19PTihzaXplb2YoZmF1bHRzKSAh PSA0KTsgLyogQ2xhbmcgZG9lc24ndCBzdXBwb3J0ICV6IGluIGFzbS4gKi8KLSNkZWZpbmUgWFJT VE9SKHBmeCkgXAotICAgICAgICBhbHRlcm5hdGl2ZV9pbygiMTogLmJ5dGUgIiBwZnggIjB4MGYs MHhhZSwweDJmXG4iIFwKKyNkZWZpbmUgWFJTVE9SKHBmeCwgeHJzdG9yX2lucykgXAorICAgICAg ICBhc20gdm9sYXRpbGUgKCAiMTogLmJ5dGUgIiBwZnggeHJzdG9yX2lucyJcbiIgXAogICAgICAg ICAgICAgICAgICAgICAgICAiMzpcbiIgXAogICAgICAgICAgICAgICAgICAgICAgICAiICAgLnNl Y3Rpb24gLmZpeHVwLFwiYXhcIlxuIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICIyOiBpbmNs ICVbZmF1bHRzXVxuIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICIgICBqbXAgM2JcbiIgXAog ICAgICAgICAgICAgICAgICAgICAgICAiICAgLnByZXZpb3VzXG4iIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgX0FTTV9FWFRBQkxFKDFiLCAyYiksIFwKLSAgICAgICAgICAgICAgICAgICAgICAg Ii5ieXRlICIgcGZ4ICIweDBmLDB4YzcsMHgxZlxuIiwgXAotICAgICAgICAgICAgICAgICAgICAg ICBYODZfRkVBVFVSRV9YU0FWRVMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgQVNNX09VVFBV VDIoW21lbV0gIittIiAoKnB0ciksIFtmYXVsdHNdICIrZyIgKGZhdWx0cykpLCBcCi0gICAgICAg ICAgICAgICAgICAgICAgIFtsbWFza10gImEiIChsbWFzayksIFtobWFza10gImQiIChobWFzayks IFwKLSAgICAgICAgICAgICAgICAgICAgICAgW3B0cl0gIkQiIChwdHIpKQorICAgICAgICAgICAg ICAgICAgICAgICBfQVNNX0VYVEFCTEUoMWIsIDJiKSBcCisgICAgICAgICAgICAgICAgICAgICAg IDogW21lbV0gIittIiAoKnB0ciksIFtmYXVsdHNdICIrZyIgKGZhdWx0cykgXAorICAgICAgICAg ICAgICAgICAgICAgICA6IFtsbWFza10gImEiIChsbWFzayksIFtobWFza10gImQiIChobWFzayks IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbcHRyXSAiRCIgKHB0cikgKQogCiAgICAgICAg IGRlZmF1bHQ6Ci0gICAgICAgICAgICBYUlNUT1IoIjB4NDgsIik7CisgICAgICAgICAgICBpZiAo IHYtPmFyY2gueGNyMF9hY2N1bSAmIFhTVEFURV9YU0FWRVNfT05MWSApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseSghKHB0ci0+eHNhdmVfaGRyLnhjb21wX2J2 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgWFNUQVRFX0NPTVBBQ1RJT05fRU5B QkxFRCkpICkKKyAgICAgICAgICAgICAgICAgICAgcHRyLT54c2F2ZV9oZHIueGNvbXBfYnYgPSBw dHItPnhzYXZlX2hkci54c3RhdGVfYnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQ7CisKKyAgICAgICAgICAg ICAgICBYUlNUT1IoIjB4NDgsIiwiMHgwZiwweGM3LDB4MWYiKTsgLyogeHJzdG9ycyAqLworICAg ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFhSU1RPUigiMHg0 OCwiLCIweDBmLDB4YWUsMHgyZiIpOyAvKiB4cnN0b3IgKi8KICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICBjYXNlIDQ6IGNhc2UgMjoKLSAgICAgICAgICAgIFhSU1RPUigiIik7CisgICAgICAg ICAgICBpZiAoIHYtPmFyY2gueGNyMF9hY2N1bSAmIFhTVEFURV9YU0FWRVNfT05MWSApCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseSghKHB0ci0+eHNhdmVfaGRy Lnhjb21wX2J2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgWFNUQVRFX0NPTVBB Q1RJT05fRU5BQkxFRCkpICkKKyAgICAgICAgICAgICAgICAgICAgcHRyLT54c2F2ZV9oZHIueGNv bXBfYnYgPSBwdHItPnhzYXZlX2hkci54c3RhdGVfYnYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQ7CisgICAg ICAgICAgICAgICAgWFJTVE9SKCIiLCIweDBmLDB4YzcsMHgxZiIpOworICAgICAgICAgICAgfQor ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFhSU1RPUigiIiwiMHgwZiwweGFlLDB4 MmYiKTsKICAgICAgICAgICAgIGJyZWFrOwogI3VuZGVmIFhSU1RPUgogICAgICAgICB9CkBAIC00 MjYsNyArNDUyLDcgQEAgdm9pZCB4cnN0b3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2sp CiAgICAgICAgICAgICAgICAgICAoKG1hc2sgJiBYU1RBVEVfWU1NKSAmJgogICAgICAgICAgICAg ICAgICAgICEocHRyLT54c2F2ZV9oZHIueGNvbXBfYnYgJiBYU1RBVEVfQ09NUEFDVElPTl9FTkFC TEVEKSkpICkKICAgICAgICAgICAgICAgICBwdHItPmZwdV9zc2UubXhjc3IgJj0gbXhjc3JfbWFz azsKLSAgICAgICAgICAgIGlmICggY3B1X2hhc194c2F2ZXMgfHwgY3B1X2hhc194c2F2ZWMgKQor ICAgICAgICAgICAgaWYgKCB2LT5hcmNoLnhjcjBfYWNjdW0gJiBYU1RBVEVfWFNBVkVTX09OTFkg KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHB0ci0+eHNhdmVfaGRyLnhjb21wX2J2 ICY9IHRoaXNfY3B1KHhjcjApIHwgdGhpc19jcHUoeHNzKTsKICAgICAgICAgICAgICAgICBwdHIt PnhzYXZlX2hkci54c3RhdGVfYnYgJj0gcHRyLT54c2F2ZV9oZHIueGNvbXBfYnY7CkBAIC00NDMs NyArNDY5LDcgQEAgdm9pZCB4cnN0b3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IG1hc2spCiAg ICAgICAgIGNhc2UgMjogLyogU3RhZ2UgMjogUmVzZXQgYWxsIHN0YXRlLiAqLwogICAgICAgICAg ICAgcHRyLT5mcHVfc3NlLm14Y3NyID0gTVhDU1JfREVGQVVMVDsKICAgICAgICAgICAgIHB0ci0+ eHNhdmVfaGRyLnhzdGF0ZV9idiA9IDA7Ci0gICAgICAgICAgICBwdHItPnhzYXZlX2hkci54Y29t cF9idiA9IGNwdV9oYXNfeHNhdmVzCisgICAgICAgICAgICBwdHItPnhzYXZlX2hkci54Y29tcF9i diA9IHYtPmFyY2gueGNyMF9hY2N1bSAmIFhTVEFURV9YU0FWRVNfT05MWQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA/IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQgOiAw OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYveHN0YXRlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oCmluZGV4 IGE0ODg2ODguLjkxZDFjMzkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRl LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94c3RhdGUuaApAQCAtNDQsNiArNDQsNyBAQAog I2RlZmluZSBYU1RBVEVfTk9OTEFaWSAoWFNUQVRFX0xXUCB8IFhTVEFURV9CTkRSRUdTIHwgWFNU QVRFX0JORENTUiB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgIFhTVEFURV9QS1JVKQogI2Rl ZmluZSBYU1RBVEVfTEFaWSAgICAoWFNUQVRFX0FMTCAmIH5YU1RBVEVfTk9OTEFaWSkKKyNkZWZp bmUgWFNUQVRFX1hTQVZFU19PTkxZICAgICAgICAgMAogI2RlZmluZSBYU1RBVEVfQ09NUEFDVElP Tl9FTkFCTEVEICAoMVVMTCA8PCA2MykKIAogI2RlZmluZSBYU1RBVEVfQUxJR042NCAoMVUgPDwg MSkKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK