From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 9/9] x86/vmx: Don't leak EFER.NXE into guest context Date: Tue, 22 May 2018 12:20:46 +0100 Message-ID: <1526988046-22948-10-git-send-email-andrew.cooper3@citrix.com> References: <1526988046-22948-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526988046-22948-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Wei Liu , Jan Beulich , Andrew Cooper , Tim Deegan , Jun Nakajima , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org SW50ZWwgaGFyZHdhcmUgb25seSB1c2VzIDQgYml0cyBpbiBNU1JfRUZFUi4gIENoYW5nZXMgdG8g TE1FIGFuZCBMTUEgYXJlCmhhbmRsZWQgYXV0b21hdGljYWxseSB2aWEgdGhlIFZNRU5UUllfQ1RM Uy5JQTMyRV9NT0RFIGJpdC4KClNDRSBpcyBoYW5kbGVkIGJ5IGFkLWhvYyBsb2dpYyBpbiBjb250 ZXh0X3N3aXRjaCgpLCB2bXhfcmVzdG9yZV9ndWVzdF9tc3JzKCkKYW5kIHZteF91cGRhdGVfZ3Vl c3RfZWZlcigpLCBhbmQgd29ya3MgYnkgYWx0ZXJpbmcgdGhlIGhvc3QgU0NFIHZhbHVlIHRvIG1h dGNoCnRoZSBzZXR0aW5nIHRoZSBndWVzdCB3YW50cy4gIFRoaXMgd29ya3MgYmVjYXVzZSwgaW4g SFZNIHZjcHUgY29udGV4dCwgWGVuCm5ldmVyIG5lZWRzIHRvIGV4ZWN1dGUgYSBTWVNDQUxMIG9y IFNZU1JFVCBpbnN0cnVjdGlvbi4KCkhvd2V2ZXIsIE5YRSBoYXMgbmV2ZXIgYmVlbiBjb250ZXh0 IHN3aXRjaGVkLiAgVW5saWtlIFNDRSwgTlhFIGNhbm5vdCBiZQpjb250ZXh0IHN3aXRjaGVkIGF0 IHZjcHUgYm91bmRhcmllcyBiZWNhdXNlIGRpc2FibGluZyBOWEUgbWFrZXMgUFRFLk5YIGJpdHMK cmVzZXJ2ZWQgYW5kIGNhdXNlIGEgcGFnZWZhdWx0IHdoZW4gZW5jb3VudGVyZWQuICBUaGlzIG1l YW5zIHRoYXQgdGhlIGd1ZXN0CmFsd2F5cyBoYXMgWGVuJ3Mgc2V0dGluZyBpbiBlZmZlY3QsIGly cmVzcGVjdGl2ZSBvZiB0aGUgYml0IGl0IGNhbiBzZWUgYW5kCm1vZGlmeSBpbiBpdHMgdmlydHVh bGlzZWQgdmlldyBvZiBNU1JfRUZFUi4KClRoaXMgaXNuJ3QgYSBtYWpvciBwcm9ibGVtIGZvciBw cm9kdWN0aW9uIG9wZXJhdGluZyBzeXN0ZW1zIGJlY2F1c2UgdGhleSwgbGlrZQpYZW4sIGFsd2F5 cyB0dXJuIHRoZSBOWEUgb24gd2hlbiBpdCBpcyBhdmFpbGFibGUuICBIb3dldmVyLCBpdCBkb2Vz IGhhdmUgYW4Kb2JzZXJ2YWJsZSBlZmZlY3Qgb24gd2hpY2ggZ3Vlc3QgUFRFIGJpdHMgYXJlIHZh bGlkLCBhbmQgd2hldGhlcgpQRkVDX2luc25fZmV0Y2ggaXMgdmlzaWJsZSBpbiBhICNQRiBlcnJv ciBjb2RlLgoKU2Vjb25kIGdlbmVyYXRpb24gVlQteCBoYXJkd2FyZSBoYXMgaG9zdCBhbmQgZ3Vl c3QgRUZFUiBmaWVsZHMgaW4gdGhlIFZNQ1MsCmFuZCBzdXBwb3J0IGZvciBsb2FkaW5nIGFuZCBz YXZpbmcgdGhlbSBhdXRvbWF0aWNhbGx5LiAgRmlyc3QgZ2VuZXJhdGlvbiBWVC14CmhhcmR3YXJl IG5lZWRzIHRvIHVzZSBNU1IgbG9hZC9zYXZlIGxpc3RzIHRvIGNhdXNlIGFuIGF0b21pYyBzd2l0 Y2ggb2YKTVNSX0VGRVIgb24gdm1lbnRyeS9leGl0LgoKVGhlcmVmb3JlIHdlIHVwZGF0ZSB2bXhf aW5pdF92bWNzX2NvbmZpZygpIHRvIGZpbmQgYW5kIHVzZSBndWVzdC9ob3N0IEVGRVIKc3VwcG9y dCB3aGVuIGF2YWlsYWJsZSAoYW5kIE1TUiBsb2FkL3NhdmUgbGlzdHMgb24gb2xkZXIgaGFyZHdh cmUpIGFuZCBkcm9wCmFsbCBhZC1ob2MgYWx0ZXJhdGlvbiBvZiBTQ0UuCgpUaGVyZSBhcmUgdHdv IGNvbXBsaWNhdGlvbnMgZm9yIHNoYWRvdyBndWVzdHMuICBOWEUsIGJlaW5nIGEgcGFnaW5nIHNl dHRpbmcKbmVlZHMgdG8gcmVtYWluIHVuZGVyIGhvc3QgY29udHJvbCwgYnV0IHRoYXQgaXMgZmlu ZSBhcyBpdCBpcyBhbHNvIFhlbiB3aGljaApoYW5kbGVzIHRoZSBwYWdlZmF1bHRzLiAgQWxzbywg aXQgdHVybnMgb3V0IHRoYXQgd2l0aG91dCBFUFQgZW5hYmxlZCwgaGFyZHdhcmUKd29uJ3QgdG9s ZXJhdGUgTE1FIGFuZCBMTUEgYmVpbmcgZGlmZmVyZW50IHZpYSBlaXRoZXIgdGhlIEdVRVNUX0VG RVIgVk1DUwpzZXR0aW5nLCBvciB2aWEgdGhlIGd1ZXN0IGxvYWQgbGlzdC4gIFRoaXMgZG9lc24n dCBtYXR0ZXIgaW4gcHJhY3RpY2UgYXMgd2UKaW50ZXJjZXB0IGFsbCB3cml0ZXMgdG8gQ1IwIGFu ZCByZWFkcyBmcm9tIE1TUl9FRkVSLCBzbyBjYW4gcHJvdmlkZQphcmNoaXRlY3R1cmFsbHkgY29u c2lzdGVudCBiZWhhdmlvdXIgZnJvbSB0aGUgZ3Vlc3RzIHBvaW50IG9mIHZpZXcuCgpBcyBhIHJl c3VsdCBvZiBmaXhpbmcgRUZFUiBjb250ZXh0IHN3aXRjaGluZywgd2UgY2FuIHJlbW92ZSB0aGUg SW50ZWwtc3BlY2lhbApjYXNlIGZyb20gaHZtX254X2VuYWJsZWQoKSBhbmQgbGV0IGd1ZXN0X3dh bGtfdGFibGVzKCkgd29yayB3aXRoIHRoZSByZWFsCmd1ZXN0IHBhZ2luZyBzZXR0aW5ncy4KClNp Z25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0t LQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPgpDQzogSnVuIE5ha2FqaW1hIDxq dW4ubmFrYWppbWFAaW50ZWwuY29tPgpDQzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5j b20+CkNDOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNp dHJpeC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KClNs aWdodGx5IFJGQy4gIFRoZXJlIGFyZSBzb21lIGNvcnJlY3Rpb25zIGdvaW5nIHRvIGJlIG1hZGUg dG8gdGhlIEludGVsIFNETSwKYW5kIEknbSBqdXN0IHdhaXRpbmcgZm9yIGZpbmFsIGNvbmZpcm1h dGlvbi4KLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAgICAgIHwgMTAgLS0tLS0K IHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyAgICAgICAgfCAgOSArKy0tCiB4ZW4vYXJjaC94 ODYvaHZtL3ZteC92bXguYyAgICAgICAgIHwgODggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAgICAgfCAgNCArLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaCB8ICAyICsKIDUgZmlsZXMgY2hhbmdl ZCwgNzggaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IDRmZjNkMmYzLi42 MDBkN2Y3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gv eDg2L2RvbWFpbi5jCkBAIC0xNzIzLDE2ICsxNzIzLDYgQEAgdm9pZCBjb250ZXh0X3N3aXRjaChz dHJ1Y3QgdmNwdSAqcHJldiwgc3RydWN0IHZjcHUgKm5leHQpCiAgICAgewogICAgICAgICBfX2Nv bnRleHRfc3dpdGNoKCk7CiAKLSAgICAgICAgaWYgKCBpc19wdl9kb21haW4obmV4dGQpICYmCi0g ICAgICAgICAgICAgKGlzX2lkbGVfZG9tYWluKHByZXZkKSB8fAotICAgICAgICAgICAgICBpc19o dm1fZG9tYWluKHByZXZkKSB8fAotICAgICAgICAgICAgICBpc19wdl8zMmJpdF9kb21haW4ocHJl dmQpICE9IGlzX3B2XzMyYml0X2RvbWFpbihuZXh0ZCkpICkKLSAgICAgICAgewotICAgICAgICAg ICAgdWludDY0X3QgZWZlciA9IHJlYWRfZWZlcigpOwotICAgICAgICAgICAgaWYgKCAhKGVmZXIg JiBFRkVSX1NDRSkgKQotICAgICAgICAgICAgICAgIHdyaXRlX2VmZXIoZWZlciB8IEVGRVJfU0NF KTsKLSAgICAgICAgfQotCiAgICAgICAgIC8qIFJlLWVuYWJsZSBpbnRlcnJ1cHRzIGJlZm9yZSBy ZXN0b3Jpbmcgc3RhdGUgd2hpY2ggbWF5IGZhdWx0LiAqLwogICAgICAgICBsb2NhbF9pcnFfZW5h YmxlKCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyBiL3hlbi9h cmNoL3g4Ni9odm0vdm14L3ZtY3MuYwppbmRleCBlMWE4Zjk1Li4zODMwOThkIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgv dm1jcy5jCkBAIC0zNDIsOCArMzQyLDggQEAgc3RhdGljIGludCB2bXhfaW5pdF92bWNzX2NvbmZp Zyh2b2lkKQogICAgIH0KIAogICAgIG1pbiA9IFZNX0VYSVRfQUNLX0lOVFJfT05fRVhJVDsKLSAg ICBvcHQgPSBWTV9FWElUX1NBVkVfR1VFU1RfUEFUIHwgVk1fRVhJVF9MT0FEX0hPU1RfUEFUIHwK LSAgICAgICAgICBWTV9FWElUX0NMRUFSX0JORENGR1M7CisgICAgb3B0ID0gKFZNX0VYSVRfU0FW RV9HVUVTVF9QQVQgfCBWTV9FWElUX0xPQURfSE9TVF9QQVQgfAorICAgICAgICAgICBWTV9FWElU X0xPQURfSE9TVF9FRkVSIHwgVk1fRVhJVF9DTEVBUl9CTkRDRkdTKTsKICAgICBtaW4gfD0gVk1f RVhJVF9JQTMyRV9NT0RFOwogICAgIF92bXhfdm1leGl0X2NvbnRyb2wgPSBhZGp1c3Rfdm14X2Nv bnRyb2xzKAogICAgICAgICAiVk1FeGl0IENvbnRyb2wiLCBtaW4sIG9wdCwgTVNSX0lBMzJfVk1Y X0VYSVRfQ1RMUywgJm1pc21hdGNoKTsKQEAgLTM4Myw3ICszODMsOCBAQCBzdGF0aWMgaW50IHZt eF9pbml0X3ZtY3NfY29uZmlnKHZvaWQpCiAgICAgICAgIF92bXhfc2Vjb25kYXJ5X2V4ZWNfY29u dHJvbCAmPSB+U0VDT05EQVJZX0VYRUNfRU5BQkxFX1ZJUlRfRVhDRVBUSU9OUzsKIAogICAgIG1p biA9IDA7Ci0gICAgb3B0ID0gVk1fRU5UUllfTE9BRF9HVUVTVF9QQVQgfCBWTV9FTlRSWV9MT0FE X0JORENGR1M7CisgICAgb3B0ID0gKFZNX0VOVFJZX0xPQURfR1VFU1RfUEFUIHwgVk1fRU5UUllf TE9BRF9HVUVTVF9FRkVSIHwKKyAgICAgICAgICAgVk1fRU5UUllfTE9BRF9CTkRDRkdTKTsKICAg ICBfdm14X3ZtZW50cnlfY29udHJvbCA9IGFkanVzdF92bXhfY29udHJvbHMoCiAgICAgICAgICJW TUVudHJ5IENvbnRyb2wiLCBtaW4sIG9wdCwgTVNSX0lBMzJfVk1YX0VOVFJZX0NUTFMsICZtaXNt YXRjaCk7CiAKQEAgLTExNDgsNiArMTE0OSw4IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3ZtY3Mo c3RydWN0IHZjcHUgKnYpCiAgICAgdi0+YXJjaC5odm1fdm14Lmhvc3RfY3IwID0gcmVhZF9jcjAo KSB8IFg4Nl9DUjBfVFM7CiAgICAgX192bXdyaXRlKEhPU1RfQ1IwLCB2LT5hcmNoLmh2bV92bXgu aG9zdF9jcjApOwogICAgIF9fdm13cml0ZShIT1NUX0NSNCwgbW11X2NyNF9mZWF0dXJlcyk7Cisg ICAgaWYgKCBjcHVfaGFzX3ZteF9lZmVyICkKKyAgICAgICAgX192bXdyaXRlKEhPU1RfRUZFUiwg cmVhZF9lZmVyKCkpOwogCiAgICAgLyogSG9zdCBDUzpSSVAuICovCiAgICAgX192bXdyaXRlKEhP U1RfQ1NfU0VMRUNUT1IsIF9fSFlQRVJWSVNPUl9DUyk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCmluZGV4IDI2ZTQy MDYuLmE5ZmJjZTkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC01MTMsMTUgKzUxMyw2IEBAIHN0YXRpYyB2 b2lkIHZteF9yZXN0b3JlX2d1ZXN0X21zcnMoc3RydWN0IHZjcHUgKnYpCiAgICAgd3Jtc3JsKE1T Ul9MU1RBUiwgICAgICAgICAgdi0+YXJjaC5odm1fdm14LmxzdGFyKTsKICAgICB3cm1zcmwoTVNS X1NZU0NBTExfTUFTSywgICB2LT5hcmNoLmh2bV92bXguc2ZtYXNrKTsKIAotICAgIGlmICggKHYt PmFyY2guaHZtX3ZjcHUuZ3Vlc3RfZWZlciBeIHJlYWRfZWZlcigpKSAmIEVGRVJfU0NFICkKLSAg ICB7Ci0gICAgICAgIEhWTV9EQkdfTE9HKERCR19MRVZFTF8yLAotICAgICAgICAgICAgICAgICAg ICAicmVzdG9yZSBndWVzdCdzIEVGRVIgd2l0aCB2YWx1ZSAlbHgiLAotICAgICAgICAgICAgICAg ICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2VmZXIpOwotICAgICAgICB3cml0ZV9lZmVyKChy ZWFkX2VmZXIoKSAmIH5FRkVSX1NDRSkgfAotICAgICAgICAgICAgICAgICAgICh2LT5hcmNoLmh2 bV92Y3B1Lmd1ZXN0X2VmZXIgJiBFRkVSX1NDRSkpOwotICAgIH0KLQogICAgIGlmICggY3B1X2hh c19yZHRzY3AgKQogICAgICAgICB3cm1zcl90c2NfYXV4KGh2bV9tc3JfdHNjX2F1eCh2KSk7CiB9 CkBAIC0xNjUwLDIyICsxNjQxLDgxIEBAIHN0YXRpYyB2b2lkIHZteF91cGRhdGVfZ3Vlc3RfY3Io c3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBjciwKIAogc3RhdGljIHZvaWQgdm14X3VwZGF0 ZV9ndWVzdF9lZmVyKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHVuc2lnbmVkIGxvbmcgdm1fZW50 cnlfdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyBlbnRyeV9jdGxzLCBndWVzdF9lZmVyID0gdi0+ YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVyLAorICAgICAgICB4ZW5fZWZlciA9IHJlYWRfZWZlcigp OworCisgICAgaWYgKCBwYWdpbmdfbW9kZV9zaGFkb3codi0+ZG9tYWluKSApCisgICAgeworICAg ICAgICAvKgorICAgICAgICAgKiBXaGVuIHVzaW5nIHNoYWRvdyBwYWdldGFibGVzLCBFRkVSLk5Y IGlzIGEgWGVuLW93bmVkIGJpdCBhbmQgaXMgbm90CisgICAgICAgICAqIHVuZGVyIGd1ZXN0IGNv bnRyb2wuCisgICAgICAgICAqLworICAgICAgICBndWVzdF9lZmVyICY9IH5FRkVSX05YOworICAg ICAgICBndWVzdF9lZmVyIHw9IHhlbl9lZmVyICYgRUZFUl9OWDsKKworICAgICAgICAvKgorICAg ICAgICAgKiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIChNYXkgMjAxOCksIHRoZSBJbnRlbCBTRE0g IlZNIEVudHJ5OiBDaGVja3MKKyAgICAgICAgICogb24gR3Vlc3QgQ29udHJvbCBSZWdpc3RlcnMs IERlYnVnIFJlZ2lzdGVycyBhbmQgTVNScyIgc2VjdGlvbiBzYXlzOgorICAgICAgICAgKgorICAg ICAgICAgKiAgSWYgdGhlICJMb2FkIElBMzJfRUZFUiIgVk0tZW50cnkgY29udHJvbCBpcyAxLCB0 aGUgZm9sbG93aW5nCisgICAgICAgICAqICBjaGVja3MgYXJlIHBlcmZvcm1lZCBvbiB0aGUgZmll bGQgZm9yIHRoZSBJQTMyX01TUjoKKyAgICAgICAgICogICAtIEJpdHMgcmVzZXJ2ZWQgaW4gdGhl IElBMzJfRUZFUiBNU1IgbXVzdCBiZSAwLgorICAgICAgICAgKiAgIC0gQml0IDEwIChjb3JyZXNw b25kaW5nIHRvIElBMzJfRUZFUi5MTUEpIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mCisgICAgICAg ICAqICAgICB0aGUgIklBLTMyZSBtb2RlIGd1ZXN0IiBWTS1lbnRyeSBjb250cm9sLiAgSXQgbXVz dCBhbHNvIGJlCisgICAgICAgICAqICAgICBpZGVudGljYWwgdG8gYml0IDggKExNRSkgaWYgYml0 IDMxIGluIHRoZSBDUjAgZmllbGQKKyAgICAgICAgICogICAgIChjb3JyZXNwb25kaW5nIHRvIENS MC5QRykgaXMgMS4KKyAgICAgICAgICoKKyAgICAgICAgICogRXhwZXJpbWVudGFsbHkgd2hhdCBh Y3R1YWxseSBoYXBwZW5zIGlzOgorICAgICAgICAgKiAgIC0gQ2hlY2tzIGZvciBFRkVSLntMTUUs TE1BfSBhcHBseSB1bmlmb3JtbHkgd2hldGhlciB1c2luZyB0aGUKKyAgICAgICAgICogICAgIEdV RVNUX0VGRVIgVk1DUyBjb250cm9scywgb3IgTVNSIGxvYWQvc2F2ZSBsaXN0cy4KKyAgICAgICAg ICogICAtIFdpdGhvdXQgRVBULCBMTUUgYmVpbmcgZGlmZmVyZW50IHRvIExNQSBpc24ndCB0b2xl cmF0ZWQgYnkKKyAgICAgICAgICogICAgIGhhcmR3YXJlLiAgQXMgd3JpdGVzIHRvIENSMCBhcmUg aW50ZXJjZXB0ZWQsIGl0IGlzIHNhZmUgdG8KKyAgICAgICAgICogICAgIGxlYXZlIExNRSBjbGVh ciBhdCB0aGlzIHBvaW50LCBhbmQgZml4IHVwIGJvdGggTE1FIGFuZCBMTUEgd2hlbgorICAgICAg ICAgKiAgICAgQ1IwLlBHIGlzIHNldC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggIShndWVz dF9lZmVyICYgRUZFUl9MTUEpICkKKyAgICAgICAgICAgIGd1ZXN0X2VmZXIgJj0gfkVGRVJfTE1F OworICAgIH0KIAogICAgIHZteF92bWNzX2VudGVyKHYpOwogCi0gICAgX192bXJlYWQoVk1fRU5U UllfQ09OVFJPTFMsICZ2bV9lbnRyeV92YWx1ZSk7Ci0gICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1 Lmd1ZXN0X2VmZXIgJiBFRkVSX0xNQSApCi0gICAgICAgIHZtX2VudHJ5X3ZhbHVlIHw9IFZNX0VO VFJZX0lBMzJFX01PREU7CisgICAgLyoKKyAgICAgKiBUaGUgaW50ZW5kZWQgZ3Vlc3QgcnVubmlu ZyBtb2RlIGlzIGRlcml2ZWQgZnJvbSBWTV9FTlRSWV9JQTMyRV9NT0RFLAorICAgICAqIHdoaWNo IChhcmNoaXRlY3R1cmFsbHkpIGlzIHRoZSBndWVzdCdzIExNQSBzZXR0aW5nLgorICAgICAqLwor ICAgIF9fdm1yZWFkKFZNX0VOVFJZX0NPTlRST0xTLCAmZW50cnlfY3Rscyk7CisKKyAgICBlbnRy eV9jdGxzICY9IH5WTV9FTlRSWV9JQTMyRV9NT0RFOworICAgIGlmICggZ3Vlc3RfZWZlciAmIEVG RVJfTE1BICkKKyAgICAgICAgZW50cnlfY3RscyB8PSBWTV9FTlRSWV9JQTMyRV9NT0RFOworCisg ICAgX192bXdyaXRlKFZNX0VOVFJZX0NPTlRST0xTLCBlbnRyeV9jdGxzKTsKKworICAgIC8qIFdl IGV4cGVjdCB0byB1c2UgRUZFUiBsb2FkaW5nIGluIHRoZSBjb21tb24gY2FzZSwgYnV0Li4uICov CisgICAgaWYgKCBsaWtlbHkoY3B1X2hhc192bXhfZWZlcikgKQorICAgICAgICBfX3Ztd3JpdGUo R1VFU1RfRUZFUiwgZ3Vlc3RfZWZlcik7CisKKyAgICAvKiAuLi4gb24gR2VuMSBWVC14IGhhcmR3 YXJlLCB3ZSBoYXZlIHRvIHVzZSBNU1IgbG9hZC9zYXZlIGxpc3RzIGluc3RlYWQuICovCiAgICAg ZWxzZQotICAgICAgICB2bV9lbnRyeV92YWx1ZSAmPSB+Vk1fRU5UUllfSUEzMkVfTU9ERTsKLSAg ICBfX3Ztd3JpdGUoVk1fRU5UUllfQ09OVFJPTFMsIHZtX2VudHJ5X3ZhbHVlKTsKKyAgICB7Cisg ICAgICAgIC8qCisgICAgICAgICAqIFdoZW4gdGhlIGd1ZXN0cyBjaG9pY2Ugb2YgRUZFUiBtYXRj aGVzIFhlbidzLCByZW1vdmUgdGhlIGxvYWQvc2F2ZQorICAgICAgICAgKiBsaXN0IGVudHJpZXMu ICBJdCBpcyB1bm5lY2Vzc2FyeSBvdmVyaGVhZCwgZXNwZWNpYWxseSBhcyB0aGlzIGlzCisgICAg ICAgICAqIGV4cGVjdGVkIHRvIGJlIHRoZSBjb21tb24gY2FzZSBmb3IgNjRiaXQgZ3Vlc3RzLgor ICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBndWVzdF9lZmVyID09IHhlbl9lZmVyICkKKyAgICAg ICAgeworICAgICAgICAgICAgdm14X2RlbF9tc3IodiwgTVNSX0VGRVIsIFZNWF9NU1JfSE9TVCk7 CisgICAgICAgICAgICB2bXhfZGVsX21zcih2LCBNU1JfRUZFUiwgVk1YX01TUl9HVUVTVF9MT0FE T05MWSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB2 bXhfYWRkX21zcih2LCBNU1JfRUZFUiwgeGVuX2VmZXIsIFZNWF9NU1JfSE9TVCk7CisgICAgICAg ICAgICB2bXhfYWRkX21zcih2LCBNU1JfRUZFUiwgZ3Vlc3RfZWZlciwgVk1YX01TUl9HVUVTVF9M T0FET05MWSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICB2bXhfdm1jc19leGl0KHYpOwotCi0g ICAgaWYgKCB2ID09IGN1cnJlbnQgKQotICAgICAgICB3cml0ZV9lZmVyKChyZWFkX2VmZXIoKSAm IH5FRkVSX1NDRSkgfAotICAgICAgICAgICAgICAgICAgICh2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0 X2VmZXIgJiBFRkVSX1NDRSkpOwogfQogCiB2b2lkIG52bXhfZW5xdWV1ZV9uMl9leGNlcHRpb25z KHN0cnVjdCB2Y3B1ICp2LCAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2 bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKaW5kZXggZWY1ZTE5OC4uZmNmYzVj ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKQEAgLTI5NiwxMCArMjk2LDggQEAgaW50IGh2bV9naXJx X2Rlc3RfMl92Y3B1X2lkKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ4X3QgZGVzdCwgdWludDhfdCBk ZXN0X21vZGUpOwogICAgIChodm1fcGFnaW5nX2VuYWJsZWQodikgJiYgKCh2KS0+YXJjaC5odm1f dmNwdS5ndWVzdF9jcls0XSAmIFg4Nl9DUjRfU01FUCkpCiAjZGVmaW5lIGh2bV9zbWFwX2VuYWJs ZWQodikgXAogICAgIChodm1fcGFnaW5nX2VuYWJsZWQodikgJiYgKCh2KS0+YXJjaC5odm1fdmNw dS5ndWVzdF9jcls0XSAmIFg4Nl9DUjRfU01BUCkpCi0vKiBIVk0gZ3Vlc3RzIG9uIEludGVsIGhh cmR3YXJlIGxlYWsgWGVuJ3MgTlggc2V0dGluZ3MgaW50byBndWVzdCBjb250ZXh0LiAqLwogI2Rl ZmluZSBodm1fbnhfZW5hYmxlZCh2KSBcCi0gICAgKChib290X2NwdV9kYXRhLng4Nl92ZW5kb3Ig PT0gWDg2X1ZFTkRPUl9JTlRFTCAmJiBjcHVfaGFzX254KSB8fCAgICBcCi0gICAgICgodiktPmFy Y2guaHZtX3ZjcHUuZ3Vlc3RfZWZlciAmIEVGRVJfTlgpKQorICAgICgodiktPmFyY2guaHZtX3Zj cHUuZ3Vlc3RfZWZlciAmIEVGRVJfTlgpCiAjZGVmaW5lIGh2bV9wa3VfZW5hYmxlZCh2KSBcCiAg ICAgKGh2bV9wYWdpbmdfZW5hYmxlZCh2KSAmJiAoKHYpLT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2Ny WzRdICYgWDg2X0NSNF9QS0UpKQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS92bXgvdm1jcy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaAppbmRleCBj ZmQxNzRjLi42YzY4OTdjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgv dm1jcy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmgKQEAgLTMwNiw2 ICszMDYsOCBAQCBleHRlcm4gdTY0IHZteF9lcHRfdnBpZF9jYXA7CiAgICAgKHZteF9jcHVfYmFz ZWRfZXhlY19jb250cm9sICYgQ1BVX0JBU0VEX01PTklUT1JfVFJBUF9GTEFHKQogI2RlZmluZSBj cHVfaGFzX3ZteF9wYXQgXAogICAgICh2bXhfdm1lbnRyeV9jb250cm9sICYgVk1fRU5UUllfTE9B RF9HVUVTVF9QQVQpCisjZGVmaW5lIGNwdV9oYXNfdm14X2VmZXIgXAorICAgICh2bXhfdm1lbnRy eV9jb250cm9sICYgVk1fRU5UUllfTE9BRF9HVUVTVF9FRkVSKQogI2RlZmluZSBjcHVfaGFzX3Zt eF91bnJlc3RyaWN0ZWRfZ3Vlc3QgXAogICAgICh2bXhfc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAm IFNFQ09OREFSWV9FWEVDX1VOUkVTVFJJQ1RFRF9HVUVTVCkKICNkZWZpbmUgdm14X3VucmVzdHJp Y3RlZF9ndWVzdCh2KSAgICAgICAgICAgICAgIFwKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==