From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tamas K Lengyel Subject: Re: [PATCH v2] x86/mm: Add mem access rights to NPT Date: Mon, 18 Jun 2018 09:39:10 -0600 Message-ID: References: <1529335072-2141-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1529335072-2141-1-git-send-email-aisaila@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Alexandru Isaila Cc: George Dunlap , Andrew Cooper , Jan Beulich , Razvan Cojocaru , Xen-devel List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBKdW4gMTgsIDIwMTggYXQgOToxOSBBTSBBbGV4YW5kcnUgSXNhaWxhCjxhaXNhaWxh QGJpdGRlZmVuZGVyLmNvbT4gd3JvdGU6Cj4KPiBGcm9tOiBJc2FpbGEgQWxleGFuZHJ1IDxhaXNh aWxhQGJpdGRlZmVuZGVyLmNvbT4KPgo+IFRoaXMgcGF0Y2ggYWRkcyBhY2Nlc3MgcmlnaHRzIGZv ciB0aGUgTlBUIHBhZ2VzLiBUaGUgYWNjZXNzIHJpZ2h0cyBhcmUKPiBzYXZlZCBpbiBhIHJhZGl4 IHRyZWUgd2l0aCB0aGUgcm9vdCBzYXZlZCBpbiBwMm1fZG9tYWluLiBUaGUgcmlnaHRzIGFyZSBt YW5pcHVsYXRlZCB0aHJvdWdoIHAybV9zZXRfYWNjZXNzKCkKPiBhbmQgcDJtX2dldF9hY2Nlc3Mo KSBmdW5jdGlvbnMuCj4gVGhlIHBhdGNoIGZvbGxvd3MgdGhlIGVwdCBsb2dpYy4KPgo+IE5vdGU6 IEl0IHdhcyB0ZXN0ZWQgd2l0aCB4ZW4tYWNjZXNzIHdyaXRlCj4KPiBTaWduZWQtb2ZmLWJ5OiBB bGV4YW5kcnUgSXNhaWxhIDxhaXNhaWxhQGJpdGRlZmVuZGVyLmNvbT4KPgo+IC0tLQo+IENoYW5n ZXMgc2luY2UgVjE6Cj4gICAgICAgICAtIFNhdmUgdGhlIHBhZ2UgYWNjZXNzIHJpZ2h0cyBpbiBh IHJhZGl4IHRyZWUKPiAtLS0KPiAgeGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYyAgICAgfCAg IDMgKysKPiAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICAgfCAxMDAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAg ICAgICAgICAgIHwgICAzICsrCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvbWVtX2FjY2Vzcy5oIHwg ICAyICstCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgIHwgICA2ICsrKwo+ICA1 IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jIGIveGVuL2FyY2gveDg2L21t L21lbV9hY2Nlc3MuYwo+IGluZGV4IGMwY2QwMTcuLmIyNDBmMTMgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9tZW1fYWNj ZXNzLmMKPiBAQCAtMjIxLDYgKzIyMSw5IEBAIGJvb2wgcDJtX21lbV9hY2Nlc3NfY2hlY2socGFk ZHJfdCBncGEsIHVuc2lnbmVkIGxvbmcgZ2xhLAo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAg cmVxLT51Lm1lbV9hY2Nlc3MuZmxhZ3MgfD0gTUVNX0FDQ0VTU19HTEFfVkFMSUQ7Cj4gICAgICAg ICAgICAgIHJlcS0+dS5tZW1fYWNjZXNzLmdsYSA9IGdsYTsKPiArICAgICAgICB9Cj4gKyAgICAg ICAgaWYgKCBucGZlYy5nbGFfdmFsaWQgfHwgY3B1X2hhc19zdm0gKQo+ICsgICAgICAgIHsKPgo+ ICAgICAgICAgICAgICBpZiAoIG5wZmVjLmtpbmQgPT0gbnBmZWNfa2luZF93aXRoX2dsYSApCj4g ICAgICAgICAgICAgICAgICByZXEtPnUubWVtX2FjY2Vzcy5mbGFncyB8PSBNRU1fQUNDRVNTX0ZB VUxUX1dJVEhfR0xBOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiBpbmRleCBiOGM1ZDJlLi4xYTE2NTMzIDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tcHQuYwo+IEBAIC02OCw3ICs2OCw4IEBACj4gIHN0YXRpYyB1bnNpZ25lZCBsb25nIHAybV90 eXBlX3RvX2ZsYWdzKGNvbnN0IHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwpCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZXZlbCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2FjY2Vzc190IGFjY2VzcykKPiAg ewo+ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgICAgIC8qCj4gQEAgLTg3LDIzICs4OCwy NyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhjb25zdCBzdHJ1Y3Qg cDJtX2RvbWFpbiAqcDJtLAo+ICAgICAgY2FzZSBwMm1fcmFtX3BhZ2VkOgo+ICAgICAgY2FzZSBw Mm1fcmFtX3BhZ2luZ19pbjoKPiAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgcmV0dXJuIGZsYWdz IHwgX1BBR0VfTlhfQklUOwo+ICsgICAgICAgIGZsYWdzIHw9IFAyTV9CQVNFX0ZMQUdTIHwgX1BB R0VfTlhfQklUOwo+ICsgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSBwMm1fZ3JhbnRfbWFwX3Jv Ogo+ICAgICAgICAgIHJldHVybiBmbGFncyB8IFAyTV9CQVNFX0ZMQUdTIHwgX1BBR0VfTlhfQklU Owo+ICAgICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgo+ICAgICAgICAgIGZsYWdzIHw9IFAyTV9C QVNFX0ZMQUdTIHwgX1BBR0VfUlcgfCBfUEFHRV9OWF9CSVQ7Cj4gICAgICAgICAgaWYgKCBwMm0t PmlvcmVxLmZsYWdzICYgWEVOX0RNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSApCj4gLSAgICAg ICAgICAgIHJldHVybiBmbGFncyAmIH5fUEFHRV9SVzsKPiAtICAgICAgICByZXR1cm4gZmxhZ3M7 Cj4gKyAgICAgICAgICAgIGZsYWdzICY9IH5fUEFHRV9SVzsKPiArICAgICAgICBicmVhazsKPiAg ICAgIGNhc2UgcDJtX3JhbV9ybzoKPiAgICAgIGNhc2UgcDJtX3JhbV9sb2dkaXJ0eToKPiAgICAg IGNhc2UgcDJtX3JhbV9zaGFyZWQ6Cj4gLSAgICAgICAgcmV0dXJuIGZsYWdzIHwgUDJNX0JBU0Vf RkxBR1M7Cj4gKyAgICAgICAgZmxhZ3MgfD0gUDJNX0JBU0VfRkxBR1M7Cj4gKyAgICAgICAgYnJl YWs7Cj4gICAgICBjYXNlIHAybV9yYW1fcnc6Cj4gLSAgICAgICAgcmV0dXJuIGZsYWdzIHwgUDJN X0JBU0VfRkxBR1MgfCBfUEFHRV9SVzsKPiArICAgICAgICBmbGFncyB8PSBQMk1fQkFTRV9GTEFH UyB8IF9QQUdFX1JXOwo+ICsgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSBwMm1fZ3JhbnRfbWFw X3J3Ogo+ICAgICAgY2FzZSBwMm1fbWFwX2ZvcmVpZ246Cj4gLSAgICAgICAgcmV0dXJuIGZsYWdz IHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9SVyB8IF9QQUdFX05YX0JJVDsKPiArICAgICAgICBm bGFncyB8PSBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX1JXIHwgX1BBR0VfTlhfQklUOwo+ICsgICAg ICAgIGJyZWFrOwo+ICAgICAgY2FzZSBwMm1fbW1pb19kaXJlY3Q6Cj4gICAgICAgICAgaWYgKCAh cmFuZ2VzZXRfY29udGFpbnNfc2luZ2xldG9uKG1taW9fcm9fcmFuZ2VzLCBtZm5feChtZm4pKSAp Cj4gICAgICAgICAgICAgIGZsYWdzIHw9IF9QQUdFX1JXOwo+IEBAIC0xMTIsOCArMTE3LDM3IEBA IHN0YXRpYyB1bnNpZ25lZCBsb25nIHAybV90eXBlX3RvX2ZsYWdzKGNvbnN0IHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sCj4gICAgICAgICAgICAgIGZsYWdzIHw9IF9QQUdFX1BXVDsKPiAgICAgICAg ICAgICAgQVNTRVJUKCFsZXZlbCk7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIHJldHVybiBmbGFn cyB8IFAyTV9CQVNFX0ZMQUdTIHwgX1BBR0VfUENEOwo+ICsgICAgICAgIGZsYWdzIHw9IFAyTV9C QVNFX0ZMQUdTIHwgX1BBR0VfUENEOwo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgfQo+ICsgICAg c3dpdGNoIChhY2Nlc3MpCj4gKyAgICB7Cj4gKyAgICAgICAgY2FzZSBwMm1fYWNjZXNzX3I6Cj4g KyAgICAgICAgY2FzZSBwMm1fYWNjZXNzX3c6Cj4gKyAgICAgICAgICAgIGZsYWdzIHw9IF9QQUdF X05YX0JJVDsKPiArICAgICAgICAgICAgZmxhZ3MgJj0gfl9QQUdFX1JXOwo+ICsgICAgICAgICAg ICBicmVhazsKPiArICAgICAgICBjYXNlIHAybV9hY2Nlc3Nfcnc6Cj4gKyAgICAgICAgICAgIGZs YWdzIHw9IF9QQUdFX05YX0JJVDsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgY2Fz ZSBwMm1fYWNjZXNzX246Cj4gKyAgICAgICAgY2FzZSBwMm1fYWNjZXNzX24ycnd4Ogo+ICsgICAg ICAgICAgICBmbGFncyB8PSBfUEFHRV9OWF9CSVQ7Cj4gKyAgICAgICAgICAgIGZsYWdzICY9IH5f UEFHRV9SVzsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgY2FzZSBwMm1fYWNjZXNz X3J4Ogo+ICsgICAgICAgIGNhc2UgcDJtX2FjY2Vzc193eDoKPiArICAgICAgICBjYXNlIHAybV9h Y2Nlc3Nfcngycnc6Cj4gKyAgICAgICAgICAgIGZsYWdzICY9IH4oX1BBR0VfTlhfQklUIHwgX1BB R0VfUlcpOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIHAybV9hY2Nlc3Nf eDoKPiArICAgICAgICAgICAgZmxhZ3MgJj0gfl9QQUdFX1JXOwo+ICsgICAgICAgICAgICBicmVh azsKPiArICAgICAgICBjYXNlIHAybV9hY2Nlc3Nfcnd4Ogo+ICsgICAgICAgIGRlZmF1bHQ6Cj4g KyAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgfQo+ICsgICAgcmV0dXJuIGZsYWdzOwo+ICB9Cj4K Pgo+IEBAIC0xNzQsNiArMjA4LDM1IEBAIHN0YXRpYyB2b2lkIHAybV9hZGRfaW9tbXVfZmxhZ3Mo bDFfcGdlbnRyeV90ICpwMm1fZW50cnksCj4gICAgICAgICAgbDFlX2FkZF9mbGFncygqcDJtX2Vu dHJ5LCBpb21tdV9ubGV2ZWxfdG9fZmxhZ3MobmxldmVsLCBmbGFncykpOwo+ICB9Cj4KPiArc3Rh dGljIHAybV9hY2Nlc3NfdCBwMm1fZ2V0X2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1 bnNpZ25lZCBsb25nIGdmbikKPiArewo+ICsgICAgdm9pZCAqcHRyOwo+ICsKPiArICAgIHB0ciA9 IHJhZGl4X3RyZWVfbG9va3VwKCZwMm0tPm1lbV9hY2Nlc3Nfc2V0dGluZ3MsIGdmbik7Cj4gKyAg ICBpZiAoICFwdHIgKQo+ICsgICAgICAgIHJldHVybiBwMm1fYWNjZXNzX3J3eDsKPiArICAgIGVs c2UKPiArICAgICAgICByZXR1cm4gcmFkaXhfdHJlZV9wdHJfdG9faW50KHB0cik7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHAybV9zZXRfYWNjZXNzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVu c2lnbmVkIGxvbmcgZ2ZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAybV9hY2Nlc3NfdCBhKQo+ICt7Cj4gKyAgICBpbnQgcmM7Cj4gKwoKU2hvdWxkbid0IHRoZXJl IGJlIHNvbWUgbG9ja2luZyBhcm91bmQgdGhlIHJhZGl4IHRyZWUgb3BlcmF0aW9ucyBoZXJlPwpJ ZiBub3QsIHdoeSBub3Q/Cgo+ICsgICAgaWYgKCBwMm1fYWNjZXNzX3J3eCA9PSBhICkKPiArICAg ICAgICByYWRpeF90cmVlX2RlbGV0ZSgmcDJtLT5tZW1fYWNjZXNzX3NldHRpbmdzLCBnZm4pOwo+ ICsKPiArICAgIHJjID0gcmFkaXhfdHJlZV9pbnNlcnQoJnAybS0+bWVtX2FjY2Vzc19zZXR0aW5n cywgZ2ZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpeF90cmVlX2ludF90b19w dHIoYSkpOwo+ICsgICAgaWYgKCByYyA9PSAtRUVYSVNUICkKPiArICAgICAgICAvKiBJZiBhIHNl dHRpbmcgYWxyZWFkeSBleGlzdHMsIGNoYW5nZSBpdCB0byB0aGUgbmV3IG9uZSAqLwo+ICsgICAg ICAgIHJhZGl4X3RyZWVfcmVwbGFjZV9zbG90KAo+ICsgICAgICAgICAgICByYWRpeF90cmVlX2xv b2t1cF9zbG90KAo+ICsgICAgICAgICAgICAgICAgJnAybS0+bWVtX2FjY2Vzc19zZXR0aW5ncywg Z2ZuKSwKPiArICAgICAgICAgICAgcmFkaXhfdHJlZV9pbnRfdG9fcHRyKGEpKTsKPiArfQo+ICsK PiAgLyogUmV0dXJuczogMCBmb3Igc3VjY2VzcywgLWVycm5vIGZvciBmYWlsdXJlICovCj4gIHN0 YXRpYyBpbnQKPiAgcDJtX25leHRfbGV2ZWwoc3RydWN0IHAybV9kb21haW4gKnAybSwgdm9pZCAq KnRhYmxlLAo+IEBAIC0yMDEsNiArMjY0LDcgQEAgcDJtX25leHRfbGV2ZWwoc3RydWN0IHAybV9k b21haW4gKnAybSwgdm9pZCAqKnRhYmxlLAo+ICAgICAgICAgIG5ld19lbnRyeSA9IGwxZV9mcm9t X21mbihtZm4sIFAyTV9CQVNFX0ZMQUdTIHwgX1BBR0VfUlcpOwo+Cj4gICAgICAgICAgcDJtX2Fk ZF9pb21tdV9mbGFncygmbmV3X2VudHJ5LCBsZXZlbCwgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93 cml0YWJsZSk7Cj4gKyAgICAgICAgcDJtX3NldF9hY2Nlc3MocDJtLCBnZm4sIHAybS0+ZGVmYXVs dF9hY2Nlc3MpOwo+ICAgICAgICAgIHAybS0+d3JpdGVfcDJtX2VudHJ5KHAybSwgZ2ZuLCBwMm1f ZW50cnksIG5ld19lbnRyeSwgbGV2ZWwgKyAxKTsKPiAgICAgIH0KPiAgICAgIGVsc2UgaWYgKCBm bGFncyAmIF9QQUdFX1BTRSApCj4gQEAgLTI0OSw2ICszMTMsNyBAQCBwMm1fbmV4dF9sZXZlbChz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB2b2lkICoqdGFibGUsCj4gICAgICAgICAgewo+ICAgICAg ICAgICAgICBuZXdfZW50cnkgPSBsMWVfZnJvbV9wZm4ocGZuIHwgKGkgPDwgKChsZXZlbCAtIDEp ICogUEFHRVRBQkxFX09SREVSKSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmbGFncyk7Cj4gKyAgICAgICAgICAgIHAybV9zZXRfYWNjZXNzKHAybSwgZ2ZuLCBwMm0t PmRlZmF1bHRfYWNjZXNzKTsKPiAgICAgICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJt LCBnZm4sIGwxX2VudHJ5ICsgaSwgbmV3X2VudHJ5LCBsZXZlbCk7Cj4gICAgICAgICAgfQo+Cj4g QEAgLTI1Niw2ICszMjEsNyBAQCBwMm1fbmV4dF9sZXZlbChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LCB2b2lkICoqdGFibGUsCj4KPiAgICAgICAgICBuZXdfZW50cnkgPSBsMWVfZnJvbV9tZm4obWZu LCBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX1JXKTsKPiAgICAgICAgICBwMm1fYWRkX2lvbW11X2Zs YWdzKCZuZXdfZW50cnksIGxldmVsLCBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxlKTsK PiArICAgICAgICBwMm1fc2V0X2FjY2VzcyhwMm0sIGdmbiwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7 Cj4gICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBnZm4sIHAybV9lbnRyeSwgbmV3 X2VudHJ5LCBsZXZlbCArIDEpOwo+ICAgICAgfQo+ICAgICAgZWxzZQo+IEBAIC00MjAsOCArNDg2 LDkgQEAgc3RhdGljIGludCBkb19yZWNhbGMoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWdu ZWQgbG9uZyBnZm4pCj4gICAgICAgICAgaWYgKCBudCAhPSBvdCApCj4gICAgICAgICAgewo+ICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IGwxZV9nZXRfcGZuKGUpOwo+ICsgICAgICAg ICAgICBwMm1fYWNjZXNzX3QgYSA9IHAybV9nZXRfYWNjZXNzKHAybSwgZ2ZuKTsKPiAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyA9IHAybV90eXBlX3RvX2ZsYWdzKHAybSwgbnQsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZu KG1mbiksIGxldmVsKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9tZm4obWZuKSwgbGV2ZWwsIGEpOwo+Cj4gICAgICAgICAgICAgIGlmICgg bGV2ZWwgKQo+ICAgICAgICAgICAgICB7Cj4gQEAgLTU2OSwxMyArNjM2LDE0IEBAIHAybV9wdF9z ZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuXywgbWZuX3QgbWZuLAo+ ICAgICAgICAgIEFTU0VSVCghbWZuX3ZhbGlkKG1mbikgfHwgcDJtdCAhPSBwMm1fbW1pb19kaXJl Y3QpOwo+ICAgICAgICAgIGwzZV9jb250ZW50ID0gbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93 c19pbnZhbGlkX21mbihwMm10KQo+ICAgICAgICAgICAgICA/IHAybV9sM2VfZnJvbV9wZm4obWZu X3gobWZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2Zs YWdzKHAybSwgcDJtdCwgbWZuLCAyKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZuLCAyLCBwMm1hKSkKPiAgICAgICAgICAg ICAgOiBsM2VfZW1wdHkoKTsKPiAgICAgICAgICBlbnRyeV9jb250ZW50LmwxID0gbDNlX2NvbnRl bnQubDM7Cj4KPiAgICAgICAgICBpZiAoIGVudHJ5X2NvbnRlbnQubDEgIT0gMCApCj4gICAgICAg ICAgICAgIHAybV9hZGRfaW9tbXVfZmxhZ3MoJmVudHJ5X2NvbnRlbnQsIDAsIGlvbW11X3B0ZV9m bGFncyk7Cj4KPiArICAgICAgICBwMm1fc2V0X2FjY2VzcyhwMm0sIGdmbiwgcDJtYSk7Cj4gICAg ICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBnZm4sIHAybV9lbnRyeSwgZW50cnlfY29u dGVudCwgMyk7Cj4gICAgICAgICAgLyogTkI6IHBhZ2luZ193cml0ZV9wMm1fZW50cnkoKSBoYW5k bGVzIHRsYiBmbHVzaGVzIHByb3Blcmx5ICovCj4gICAgICB9Cj4gQEAgLTYwOCw3ICs2NzYsNyBA QCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90IGdmbl8sIG1m bl90IG1mbiwKPgo+ICAgICAgICAgIGlmICggbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19p bnZhbGlkX21mbihwMm10KSApCj4gICAgICAgICAgICAgIGVudHJ5X2NvbnRlbnQgPSBwMm1fbDFl X2Zyb21fcGZuKG1mbl94KG1mbiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LCBtZm4sIDApKTsKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0s IHAybXQsIG1mbiwgMCwgcDJtYSkpOwo+ICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgZW50 cnlfY29udGVudCA9IGwxZV9lbXB0eSgpOwo+Cj4gQEAgLTYzMCw2ICs2OTgsNyBAQCBwMm1fcHRf c2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90IGdmbl8sIG1mbl90IG1mbiwK PiAgICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3VudC0tOwo+ICAgICAgICAgIH0KPgo+ ICsgICAgICAgIHAybV9zZXRfYWNjZXNzKHAybSwgZ2ZuLCBwMm1hKTsKPiAgICAgICAgICAvKiBs ZXZlbCAxIGVudHJ5ICovCj4gICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBnZm4s IHAybV9lbnRyeSwgZW50cnlfY29udGVudCwgMSk7Cj4gICAgICAgICAgLyogTkI6IHBhZ2luZ193 cml0ZV9wMm1fZW50cnkoKSBoYW5kbGVzIHRsYiBmbHVzaGVzIHByb3Blcmx5ICovCj4gQEAgLTY2 MSwxMyArNzMwLDE0IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwg Z2ZuX3QgZ2ZuXywgbWZuX3QgbWZuLAo+ICAgICAgICAgIEFTU0VSVCghbWZuX3ZhbGlkKG1mbikg fHwgcDJtdCAhPSBwMm1fbW1pb19kaXJlY3QpOwo+ICAgICAgICAgIGwyZV9jb250ZW50ID0gbWZu X3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KQo+ICAgICAgICAgICAg ICA/IHAybV9sMmVfZnJvbV9wZm4obWZuX3gobWZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZuLCAxKSkKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZu LCAxLCBwMm1hKSkKPiAgICAgICAgICAgICAgOiBsMmVfZW1wdHkoKTsKPiAgICAgICAgICBlbnRy eV9jb250ZW50LmwxID0gbDJlX2NvbnRlbnQubDI7Cj4KPiAgICAgICAgICBpZiAoIGVudHJ5X2Nv bnRlbnQubDEgIT0gMCApCj4gICAgICAgICAgICAgIHAybV9hZGRfaW9tbXVfZmxhZ3MoJmVudHJ5 X2NvbnRlbnQsIDAsIGlvbW11X3B0ZV9mbGFncyk7Cj4KPiArICAgICAgICBwMm1fc2V0X2FjY2Vz cyhwMm0sIGdmbiwgcDJtYSk7Cj4gICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBn Zm4sIHAybV9lbnRyeSwgZW50cnlfY29udGVudCwgMik7Cj4gICAgICAgICAgLyogTkI6IHBhZ2lu Z193cml0ZV9wMm1fZW50cnkoKSBoYW5kbGVzIHRsYiBmbHVzaGVzIHByb3Blcmx5ICovCj4gICAg ICB9Cj4gQEAgLTc1MCw3ICs4MjAsNyBAQCBwMm1fcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9t YWluICpwMm0sIGdmbl90IGdmbl8sCj4gICAgICAgKiBYWFggd2Ugd2lsbCByZXR1cm4gcDJtX2lu dmFsaWQgZm9yIHVubWFwcGVkIGdmbnMgKi8KPiAgICAgICp0ID0gcDJtX21taW9fZG07Cj4gICAg ICAvKiBOb3QgaW1wbGVtZW50ZWQgZXhjZXB0IHdpdGggRVBUICovCj4gLSAgICAqYSA9IHAybV9h Y2Nlc3Nfcnd4Owo+ICsgICAgKmEgPSBwMm1fYWNjZXNzX247Cj4KPiAgICAgIGlmICggZ2ZuID4g cDJtLT5tYXhfbWFwcGVkX3BmbiApCj4gICAgICB7Cj4gQEAgLTgxMyw2ICs4ODMsNyBAQCBwb2Rf cmV0cnlfbDM6Cj4gICAgICAgICAgICAgICAgICAgICAgICAgbDFfdGFibGVfb2Zmc2V0KGFkZHIp KTsKPiAgICAgICAgICAgICAgKnQgPSBwMm1fcmVjYWxjX3R5cGUocmVjYWxjIHx8IF9uZWVkc19y ZWNhbGMoZmxhZ3MpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fZmxh Z3NfdG9fdHlwZShmbGFncyksIHAybSwgZ2ZuKTsKPiArICAgICAgICAgICAgKmEgPSBwMm1fZ2V0 X2FjY2VzcyhwMm0sIGdmbik7Cj4gICAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwzZSk7 Cj4KPiAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pIHx8ICFwMm1faXNfcmFtKCp0 KSk7Cj4gQEAgLTg1Miw2ICs5MjMsNyBAQCBwb2RfcmV0cnlfbDI6Cj4gICAgICAgICAgbWZuID0g X21mbihsMmVfZ2V0X3BmbigqbDJlKSArIGwxX3RhYmxlX29mZnNldChhZGRyKSk7Cj4gICAgICAg ICAgKnQgPSBwMm1fcmVjYWxjX3R5cGUocmVjYWxjIHx8IF9uZWVkc19yZWNhbGMoZmxhZ3MpLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9mbGFnc190b190eXBlKGZsYWdzKSwg cDJtLCBnZm4pOwo+ICsgICAgICAgICphID0gcDJtX2dldF9hY2Nlc3MocDJtLCBnZm4pOwo+ICAg ICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwyZSk7Cj4KPiAgICAgICAgICBBU1NFUlQobWZuX3Zh bGlkKG1mbikgfHwgIXAybV9pc19yYW0oKnQpKTsKPiBAQCAtODg4LDYgKzk2MCw3IEBAIHBvZF9y ZXRyeV9sMToKPiAgICAgIH0KPiAgICAgIG1mbiA9IGwxZV9nZXRfbWZuKCpsMWUpOwo+ICAgICAg KnQgPSBwMm1fcmVjYWxjX3R5cGUocmVjYWxjIHx8IF9uZWVkc19yZWNhbGMoZmxhZ3MpLCBsMXQs IHAybSwgZ2ZuKTsKPiArICAgICphID0gcDJtX2dldF9hY2Nlc3MocDJtLCBnZm4pOwo+ICAgICAg dW5tYXBfZG9tYWluX3BhZ2UobDFlKTsKPgo+ICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pIHx8 ICFwMm1faXNfcmFtKCp0KSB8fCBwMm1faXNfcGFnaW5nKCp0KSk7Cj4gQEAgLTExMjcsNiArMTIw MCw3IEBAIHZvaWQgcDJtX3B0X2luaXQoc3RydWN0IHAybV9kb21haW4gKnAybSkKPiAgICAgIHAy bS0+Y2hhbmdlX2VudHJ5X3R5cGVfZ2xvYmFsID0gcDJtX3B0X2NoYW5nZV9lbnRyeV90eXBlX2ds b2JhbDsKPiAgICAgIHAybS0+Y2hhbmdlX2VudHJ5X3R5cGVfcmFuZ2UgPSBwMm1fcHRfY2hhbmdl X2VudHJ5X3R5cGVfcmFuZ2U7Cj4gICAgICBwMm0tPndyaXRlX3AybV9lbnRyeSA9IHBhZ2luZ193 cml0ZV9wMm1fZW50cnk7Cj4gKyAgICByYWRpeF90cmVlX2luaXQoJnAybS0+bWVtX2FjY2Vzc19z ZXR0aW5ncyk7Cj4gICNpZiBQMk1fQVVESVQKPiAgICAgIHAybS0+YXVkaXRfcDJtID0gcDJtX3B0 X2F1ZGl0X3AybTsKPiAgI2Vsc2UKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5j IGIveGVuL2FyY2gveDg2L21tL3AybS5jCj4gaW5kZXggYzUzY2FiNC4uZTM2MGZkYyAxMDA2NDQK PiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJt LmMKPiBAQCAtNjc1LDYgKzY3NSw5IEBAIHZvaWQgcDJtX3RlYXJkb3duKHN0cnVjdCBwMm1fZG9t YWluICpwMm0pCj4KPiAgICAgIGQgPSBwMm0tPmRvbWFpbjsKPgo+ICsgICAgaWYgKCBjcHVfaGFz X3N2bSApCj4gKyAgICAgICAgcmFkaXhfdHJlZV9kZXN0cm95KCZwMm0tPm1lbV9hY2Nlc3Nfc2V0 dGluZ3MsIE5VTEwpOwo+ICsKPiAgICAgIHAybV9sb2NrKHAybSk7Cj4gICAgICBBU1NFUlQoYXRv bWljX3JlYWQoJmQtPnNocl9wYWdlcykgPT0gMCk7Cj4gICAgICBwMm0tPnBoeXNfdGFibGUgPSBw YWdldGFibGVfbnVsbCgpOwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21lbV9h Y2Nlc3MuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbWVtX2FjY2Vzcy5oCj4gaW5kZXggNDA0M2M5 Zi4uMzRmMmMwNyAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21lbV9hY2Nlc3Mu aAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbWVtX2FjY2Vzcy5oCj4gQEAgLTQ2LDcgKzQ2 LDcgQEAgYm9vbCBwMm1fbWVtX2FjY2Vzc19lbXVsYXRlX2NoZWNrKHN0cnVjdCB2Y3B1ICp2LAo+ ICAvKiBTYW5pdHkgY2hlY2sgZm9yIG1lbV9hY2Nlc3MgaGFyZHdhcmUgc3VwcG9ydCAqLwo+ICBz dGF0aWMgaW5saW5lIGJvb2wgcDJtX21lbV9hY2Nlc3Nfc2FuaXR5X2NoZWNrKHN0cnVjdCBkb21h aW4gKmQpCj4gIHsKPiAtICAgIHJldHVybiBpc19odm1fZG9tYWluKGQpICYmIGNwdV9oYXNfdm14 ICYmIGhhcF9lbmFibGVkKGQpOwo+ICsgICAgcmV0dXJuIGlzX2h2bV9kb21haW4oZCkgJiYgaGFw X2VuYWJsZWQoZCk7Cj4gIH0KPgo+ICAjZW5kaWYgLypfX0FTTV9YODZfTUVNX0FDQ0VTU19IX18g Ki8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcDJtLmgKPiBpbmRleCBkNGIzY2ZjLi5mNTg2OGRmIDEwMDY0NAo+IC0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5o Cj4gQEAgLTI4OCw2ICsyODgsMTIgQEAgc3RydWN0IHAybV9kb21haW4gewo+ICAgICAgICogcmV0 eXBlZCBnZXQgdGhpcyBhY2Nlc3MgdHlwZS4gIFNlZSBkZWZpbml0aW9uIG9mIHAybV9hY2Nlc3Nf dC4gKi8KPiAgICAgIHAybV9hY2Nlc3NfdCBkZWZhdWx0X2FjY2VzczsKPgo+ICsgICAgLyoKPiAr ICAgICAqIFJhZGl4IHRyZWUgdG8gc3RvcmUgdGhlIHAybV9hY2Nlc3NfdCBzZXR0aW5ncyBhcyB0 aGUgcHRlJ3MgZG9uJ3QgaGF2ZQo+ICsgICAgICogZW5vdWdoIGF2YWlsYWJsZSBiaXRzIHRvIHN0 b3JlIHRoaXMgaW5mb3JtYXRpb24uCj4gKyAgICAgKi8KPiArICAgIHN0cnVjdCByYWRpeF90cmVl X3Jvb3QgbWVtX2FjY2Vzc19zZXR0aW5nczsKPiArCj4gICAgICAvKiBJZiB0cnVlLCBhbmQgYW4g YWNjZXNzIGZhdWx0IGNvbWVzIGluIGFuZCB0aGVyZSBpcyBubyB2bV9ldmVudCBsaXN0ZW5lciwK PiAgICAgICAqIHBhdXNlIGRvbWFpbi4gIE90aGVyd2lzZSwgcmVtb3ZlIGFjY2VzcyByZXN0cmlj dGlvbnMuICovCj4gICAgICBib29sX3QgICAgICAgYWNjZXNzX3JlcXVpcmVkOwo+IC0tCj4gMi43 LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=