From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PATCH v5 02/14] libxc: Prepare a start info structure for hvmloader Date: Wed, 22 Jun 2016 18:15:33 +0100 Message-ID: <20160622171545.5304-3-anthony.perard@citrix.com> References: <20160622171545.5304-1-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160622171545.5304-1-anthony.perard@citrix.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: Anthony PERARD , Wei Liu , boris.ostrovsky@oracle.com, Ian Jackson , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org Li4uIGFuZCBsb2FkIEJJT1MvVUVGSSBmaXJtd2FyZSBpbnRvIGd1ZXN0IG1lbW9yeS4KClRoaXMg YWRkcyBhIG5ldyBmaXJtd2FyZSBtb2R1bGUsIHN5c3RlbV9maXJtd2FyZV9tb2R1bGUuIEl0IGlz IGxvYWRlZCBpbgp0aGUgZ3Vlc3QgbWVtb3J5IGFuZCBmaW5hbCBsb2NhdGlvbiBpcyBwcm92aWRl ZCB0byBodm1sb2FkZXIgdmlhIHRoZQpodm1fc3RhcnRfaW5mbyBzdHJ1Y3QuCgpUaGlzIHBhdGNo IGNyZWF0ZSB0aGUgaHZtX3N0YXJ0X2luZm8gc3RydWN0IGZvciBIVk0gZ3Vlc3QgdGhhdCBoYXZl IGEKZGV2aWNlIG1vZGVsLCBzbyB0aGlzIGlzIG5vdyBjb21tb24gY29kZSB3aXRoIEhWTSBndWVz dCB3aXRob3V0IGRldmljZQptb2RlbC4KClNpZ25lZC1vZmYtYnk6IEFudGhvbnkgUEVSQVJEIDxh bnRob255LnBlcmFyZEBjaXRyaXguY29tPgotLS0KQ0M6IGJvcmlzLm9zdHJvdnNreUBvcmFjbGUu Y29tCkNDOiByb2dlci5wYXVAY2l0cml4LmNvbQoKQ2hhbmdlcyBpbiBWNToKLSBpbiBhbGxvY19t YWdpY19wYWdlc19odm0sIGNoZWNrIGRvbS0+ZGV2aWNlX21vZGVsIG9ubHkgb25jZSBpbnN0ZWFk IG9mCiAgdHdpY2UgKGZvbGQgc2Vjb25kIGlmIGludG8gcHJldmlvdXMgZWxzZSkKLSByZXdvcmsg YWRkX21vZHVsZV90b19saXN0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQKLSBhbHNvIGNvbW1l bnQgYWJvdXQgdGhlIGludGVuZGVkIG1lbW9yeSBsYXlvdXQgb2Ygc3RhcnRfaW5mbyBhbmQgdGhl CiAgbW9kdWxlcwotIGluIGJvb3RsYXRlX2h2bSgpLCBkcm9wIHN0YXJ0X3BhZ2UgYW5kIHVzZSBz dGFydF9pbmZvIGFzIHRoZXkgcG9pbnQgdG8KICB0aGUgc2FtZSBhZGRyZXNzCi0gcmVuYW1lIHhj X2RvbV9pbWFnZS5iaW9zX21vZHVsZSB0byB4Y19kb21faW1hZ2Uuc3lzdGVtX2Zpcm13YXJlX21v ZHVsZQotIHJlbmFtZSBtb2R1bGUgbmFtZSB0byAiZmlybXdhcmUiICh3YXMgImJpb3MiKQoKQ2hh bmdlcyBpbiBWNDoKLSBjaGFuZ2UgdGl0bGUgdG8gc3VnZ2VzdCB0aGUgY2hhbmdlIG9mIGJlYXZp b3IKLSByZW1vdmUgY29kZSB0byBsb2FkIGFjcGkgdGFibGVzIChkc2R0KQotIFVwZGF0ZSBwdWJs aWMveGVuLmggYWJvdXQgaHZtX3N0YXJ0X2luZm8gYXZhaWxhYmxlIG9uIG90aGVyIEhWTSBndWVz dAogIGluICVlYnguCgpDaGFuZ2VzIGluIFYzOgotIHJlbmFtZSBhY3BpX3RhYmxlX21vZHVsZSB0 byBmdWxsX2FjcGlfbW9kdWxlLgotIGZhY3RvcmlzZSBtb2R1bGUgbG9hZGluZywgdXNpbmcgbmV3 IGZ1bmN0aW9uIHRvIGxvYWQgZXhpc3Rpbmcgb3B0aW5hbAogIG1vZHVsZSwgdGhpcyBzaG91bGQg bm90IGNoYW5nZSBhbnl0aGluZwotIHNob3VsZCBub3cgdXNlIHRoZSBzYW1lIGNvZGUgdG8gbG9h ZHMgbW9kdWxlcyBhcyBmb3IgSFZNbGl0ZSBWTXMuCiAgdGhpcyBhdm9pZCBkdXBsaWNhdGlvbiBv ZiBjb2RlLgotIG5vIG1vcmUgZ2VuZXJpYyBjbWRsaW5lIHdpdGggYSBsaXN0IG9mIG1vZHVsZXMs IGVhY2ggbW9kdWxlIGhhdmUgaXRzIG5hbWUKICBpbiB0aGUgbW9kdWxlIHNwZWNpZmljIGNtZGxp bmUuCi0gc2NvcGUgY2hhbmdlIGZvciBjb21tb24gY29kZSBiZXR3ZWVuIGh2bWxpdGUgYW5kIGh2 bWxvYWRlcgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggICB8ICAgMyArCiB0b29s cy9saWJ4Yy94Y19kb21faHZtbG9hZGVyLmMgfCAgIDMgKwogdG9vbHMvbGlieGMveGNfZG9tX3g4 Ni5jICAgICAgIHwgMTUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t CiB4ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmggICAgICAgfCAgIDIgKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMTE2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGNfZG9tLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCmlu ZGV4IDZjYjEwYzQuLjA2Mjk5NzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNf ZG9tLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaApAQCAtMjA5LDYgKzIwOSw5 IEBAIHN0cnVjdCB4Y19kb21faW1hZ2UgewogICAgIC8qIElmIHVuc2V0IGRpc2FibGVzIHRoZSBz ZXR1cCBvZiB0aGUgSU9SRVEgcGFnZXMuICovCiAgICAgYm9vbCBkZXZpY2VfbW9kZWw7CiAKKyAg ICAvKiBCSU9TL0Zpcm13YXJlIHBhc3NlZCB0byBIVk1MT0FERVIgKi8KKyAgICBzdHJ1Y3QgeGNf aHZtX2Zpcm13YXJlX21vZHVsZSBzeXN0ZW1fZmlybXdhcmVfbW9kdWxlOworCiAgICAgLyogRXh0 cmEgQUNQSSB0YWJsZXMgcGFzc2VkIHRvIEhWTUxPQURFUiAqLwogICAgIHN0cnVjdCB4Y19odm1f ZmlybXdhcmVfbW9kdWxlIGFjcGlfbW9kdWxlOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94 Y19kb21faHZtbG9hZGVyLmMgYi90b29scy9saWJ4Yy94Y19kb21faHZtbG9hZGVyLmMKaW5kZXgg ZGE4Yjk5NS4uY2YyZDU3YyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2h2bWxvYWRl ci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9odm1sb2FkZXIuYwpAQCAtMTY3LDYgKzE2Nyw5 IEBAIHN0YXRpYyBpbnQgbW9kdWxlc19pbml0KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIHsK ICAgICBpbnQgcmM7CiAKKyAgICByYyA9IG1vZHVsZV9pbml0X29uZShkb20sICZkb20tPnN5c3Rl bV9maXJtd2FyZV9tb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlN5c3RlbSBGaXJt d2FyZSBtb2R1bGUiKTsKKyAgICBpZiAoIHJjICkgZ290byBlcnI7CiAgICAgcmMgPSBtb2R1bGVf aW5pdF9vbmUoZG9tLCAmZG9tLT5hY3BpX21vZHVsZSwgIkFDUEkgbW9kdWxlIik7CiAgICAgaWYg KCByYyApIGdvdG8gZXJyOwogICAgIHJjID0gbW9kdWxlX2luaXRfb25lKGRvbSwgJmRvbS0+c21i aW9zX21vZHVsZSwgIlNNQklPUyBtb2R1bGUiKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hj X2RvbV94ODYuYyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYuYwppbmRleCAwMjFmOGE4Li5mMDE3 ZmJkIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19kb21feDg2LmMKKysrIGIvdG9vbHMvbGli eGMveGNfZG9tX3g4Ni5jCkBAIC02OSw2ICs2OSw5IEBACiAjZGVmaW5lIHJvdW5kX3VwKGFkZHIs IG1hc2spICAgICAoKGFkZHIpIHwgKG1hc2spKQogI2RlZmluZSByb3VuZF9wZ191cChhZGRyKSAg KCgoYWRkcikgKyBQQUdFX1NJWkVfWDg2IC0gMSkgJiB+KFBBR0VfU0laRV9YODYgLSAxKSkKIAor I2RlZmluZSBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VOVCAxCisjZGVmaW5lIEhWTUxPQURFUl9N T0RVTEVfTkFNRV9TSVpFIDEwCisKIHN0cnVjdCB4Y19kb21fcGFyYW1zIHsKICAgICB1bnNpZ25l ZCBsZXZlbHM7CiAgICAgeGVuX3ZhZGRyX3QgdmFkZHJfbWFzazsKQEAgLTU5MCw2ICs1OTMsNyBA QCBzdGF0aWMgaW50IGFsbG9jX21hZ2ljX3BhZ2VzX2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpk b20pCiAgICAgeGVuX3Bmbl90IHNwZWNpYWxfYXJyYXlbWDg2X0hWTV9OUl9TUEVDSUFMX1BBR0VT XTsKICAgICB4ZW5fcGZuX3QgaW9yZXFfc2VydmVyX2FycmF5W05SX0lPUkVRX1NFUlZFUl9QQUdF U107CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBkb20tPnhjaDsKKyAgICBzaXplX3Qgc3RhcnRf aW5mb19zaXplID0gc2l6ZW9mKHN0cnVjdCBodm1fc3RhcnRfaW5mbyk7CiAKICAgICAvKiBBbGxv Y2F0ZSBhbmQgY2xlYXIgc3BlY2lhbCBwYWdlcy4gKi8KICAgICBmb3IgKCBpID0gMDsgaSA8IFg4 Nl9IVk1fTlJfU1BFQ0lBTF9QQUdFUzsgaSsrICkKQEAgLTYyNCw4ICs2MjgsNiBAQCBzdGF0aWMg aW50IGFsbG9jX21hZ2ljX3BhZ2VzX2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAKICAg ICBpZiAoICFkb20tPmRldmljZV9tb2RlbCApCiAgICAgewotICAgICAgICBzaXplX3Qgc3RhcnRf aW5mb19zaXplID0gc2l6ZW9mKHN0cnVjdCBodm1fc3RhcnRfaW5mbyk7Ci0KICAgICAgICAgaWYg KCBkb20tPmNtZGxpbmUgKQogICAgICAgICB7CiAgICAgICAgICAgICBkb20tPmNtZGxpbmVfc2l6 ZSA9IFJPVU5EVVAoc3RybGVuKGRvbS0+Y21kbGluZSkgKyAxLCA4KTsKQEAgLTYzNSwxNyArNjM3 LDE4IEBAIHN0YXRpYyBpbnQgYWxsb2NfbWFnaWNfcGFnZXNfaHZtKHN0cnVjdCB4Y19kb21faW1h Z2UgKmRvbSkKICAgICAgICAgLyogTGltaXRlZCB0byBvbmUgbW9kdWxlLiAqLwogICAgICAgICBp ZiAoIGRvbS0+cmFtZGlza19ibG9iICkKICAgICAgICAgICAgIHN0YXJ0X2luZm9fc2l6ZSArPSBz aXplb2Yoc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5KTsKLQotICAgICAgICByYyA9IHhjX2RvbV9h bGxvY19zZWdtZW50KGRvbSwgJmRvbS0+c3RhcnRfaW5mb19zZWcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkhWTWxpdGUgc3RhcnQgaW5mbyIsIDAsIHN0YXJ0X2luZm9fc2l6 ZSk7Ci0gICAgICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIERPTVBS SU5URigiVW5hYmxlIHRvIHJlc2VydmUgbWVtb3J5IGZvciB0aGUgc3RhcnQgaW5mbyIpOwotICAg ICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAg ICAgICAgc3RhcnRfaW5mb19zaXplICs9CisgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGh2bV9t b2RsaXN0X2VudHJ5KSAqIEhWTUxPQURFUl9NT0RVTEVfTUFYX0NPVU5UOworICAgICAgICAvKgor ICAgICAgICAgKiBBZGQgZXh0cmEgc3BhY2UgdG8gd3JpdGUgbW9kdWxlcyBuYW1lLgorICAgICAg ICAgKiBUaGUgSFZNTE9BREVSX01PRFVMRV9OQU1FX1NJWkUgYWNjb3VudHMgZm9yIE5VTCBieXRl LgorICAgICAgICAgKi8KKyAgICAgICAgc3RhcnRfaW5mb19zaXplICs9CisgICAgICAgICAgICBI Vk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSAqIEhWTUxPQURFUl9NT0RVTEVfTUFYX0NPVU5UOwor CiAgICAgICAgIC8qCiAgICAgICAgICAqIEFsbG9jYXRlIGFuZCBjbGVhciBhZGRpdGlvbmFsIGlv cmVxIHNlcnZlciBwYWdlcy4gVGhlIGRlZmF1bHQKICAgICAgICAgICogc2VydmVyIHdpbGwgdXNl IHRoZSBJT1JFUSBhbmQgQlVGSU9SRVEgc3BlY2lhbCBwYWdlcyBhYm92ZS4KQEAgLTY3Miw2ICs2 NzUsMTQgQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlc19odm0oc3RydWN0IHhjX2RvbV9p bWFnZSAqZG9tKQogICAgICAgICAgICAgICAgICAgICAgICAgIE5SX0lPUkVRX1NFUlZFUl9QQUdF Uyk7CiAgICAgfQogCisgICAgcmMgPSB4Y19kb21fYWxsb2Nfc2VnbWVudChkb20sICZkb20tPnN0 YXJ0X2luZm9fc2VnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhWTWxpdGUgc3Rh cnQgaW5mbyIsIDAsIHN0YXJ0X2luZm9fc2l6ZSk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICB7 CisgICAgICAgIERPTVBSSU5URigiVW5hYmxlIHRvIHJlc2VydmUgbWVtb3J5IGZvciB0aGUgc3Rh cnQgaW5mbyIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKICAgICAvKgogICAgICAqIElk ZW50aXR5LW1hcCBwYWdlIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBydW5uaW5nIHdpdGggQ1IwLlBH PTAgd2hlbgogICAgICAqIHVzaW5nIEludGVsIEVQVC4gQ3JlYXRlIGEgMzItYml0IG5vbi1QQUUg cGFnZSBkaXJlY3Rvcnkgb2Ygc3VwZXJwYWdlcy4KQEAgLTE2ODksNDIgKzE3MDAsODkgQEAgc3Rh dGljIGludCBhbGxvY19wZ3RhYmxlc19odm0oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAg IHJldHVybiAwOwogfQogCisvKgorICogVGhlIG1lbW9yeSBsYXlvdXQgb2YgdGhlIHN0YXJ0X2lu Zm8gcGFnZSBhbmQgdGhlIG1vZHVsZXMsIGFuZCB3aGVyZSB0aGUKKyAqIGFkZHJlc3NlcyBhcmUg c3RvcmVkOgorICoKKyAqIC8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXAorICog fCBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0gc3RhcnRfaW5mby0+bW9kbGlzdF9wYWRkcgorICogfCBz dHJ1Y3QgaHZtX21vZGxpc3RfZW50cnlbMF0gICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5WzFdICAgICAg fAorICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtIG1vZGxpc3RbMF0u Y21kbGluZV9wYWRkcgorICogfCBjbWRsaW5lIG9mIG1vZHVsZSAwICAgICAgICAgICAgICB8Cisg KiB8IGNoYXJbSFZNTE9BREVSX01PRFVMRV9OQU1FX1NJWkVdIHwKKyAqICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LSBtb2RsaXN0WzFdLmNtZGxpbmVfcGFkZHIKKyAqIHwg Y21kbGluZSBvZiBtb2R1bGUgMSAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCisgKi8KK3N0YXRpYyB2b2lkIGFkZF9tb2R1bGVfdG9fbGlzdChz dHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHhjX2h2bV9maXJtd2FyZV9tb2R1bGUgKm1vZHVsZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeSAqbW9kbGlzdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gKnN0YXJ0X2luZm8pCit7Cisg ICAgdWludDMyX3QgaW5kZXggPSBzdGFydF9pbmZvLT5ucl9tb2R1bGVzOworICAgIHZvaWQgKm1v ZHVsZXNfY21kbGluZV9zdGFydCA9IG1vZGxpc3QgKyBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VO VDsKKyAgICB1aW50NjRfdCBtb2RsaXN0X3BhZGRyID0gKGRvbS0+c3RhcnRfaW5mb19zZWcucGZu IDw8IFBBR0VfU0hJRlQpICsKKyAgICAgICAgKCh1aW50cHRyX3QpbW9kbGlzdCAtICh1aW50cHRy X3Qpc3RhcnRfaW5mbyk7CisgICAgdWludDY0X3QgbW9kdWxlc19jbWRsaW5lX3BhZGRyID0gbW9k bGlzdF9wYWRkciArCisgICAgICAgIHNpemVvZihzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkpICog SFZNTE9BREVSX01PRFVMRV9NQVhfQ09VTlQ7CisKKyAgICBpZiAoIG1vZHVsZS0+bGVuZ3RoID09 IDAgKQorICAgICAgICByZXR1cm47CisKKyAgICBhc3NlcnQoc3RhcnRfaW5mby0+bnJfbW9kdWxl cyA8IEhWTUxPQURFUl9NT0RVTEVfTUFYX0NPVU5UKTsKKyAgICBhc3NlcnQoc3RybmxlbihuYW1l LCBIVk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSkKKyAgICAgICAgICAgPCBIVk1MT0FERVJfTU9E VUxFX05BTUVfU0laRSk7CisKKyAgICBtb2RsaXN0W2luZGV4XS5wYWRkciA9IG1vZHVsZS0+Z3Vl c3RfYWRkcl9vdXQ7CisgICAgbW9kbGlzdFtpbmRleF0uc2l6ZSA9IG1vZHVsZS0+bGVuZ3RoOwor CisgICAgc3RybmNweShtb2R1bGVzX2NtZGxpbmVfc3RhcnQgKyBIVk1MT0FERVJfTU9EVUxFX05B TUVfU0laRSAqIGluZGV4LAorICAgICAgICAgICAgbmFtZSwgSFZNTE9BREVSX01PRFVMRV9OQU1F X1NJWkUpOworICAgIG1vZGxpc3RbaW5kZXhdLmNtZGxpbmVfcGFkZHIgPQorICAgICAgICBtb2R1 bGVzX2NtZGxpbmVfcGFkZHIgKyBIVk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSAqIGluZGV4Owor CisgICAgc3RhcnRfaW5mby0+bnJfbW9kdWxlcysrOworfQorCiBzdGF0aWMgaW50IGJvb3RsYXRl X2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgdWludDMyX3QgZG9taWQgPSBk b20tPmd1ZXN0X2RvbWlkOwogICAgIHhjX2ludGVyZmFjZSAqeGNoID0gZG9tLT54Y2g7CisgICAg c3RydWN0IGh2bV9zdGFydF9pbmZvICpzdGFydF9pbmZvOworICAgIHNpemVfdCBzdGFydF9pbmZv X3NpemU7CisgICAgc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5ICptb2RsaXN0OwogCi0gICAgaWYg KCAhZG9tLT5kZXZpY2VfbW9kZWwgKQotICAgIHsKLSAgICAgICAgc3RydWN0IGh2bV9zdGFydF9p bmZvICpzdGFydF9pbmZvOwotICAgICAgICBzaXplX3Qgc3RhcnRfaW5mb19zaXplOwotICAgICAg ICB2b2lkICpzdGFydF9wYWdlOwotCi0gICAgICAgIHN0YXJ0X2luZm9fc2l6ZSA9IHNpemVvZigq c3RhcnRfaW5mbykgKyBkb20tPmNtZGxpbmVfc2l6ZTsKLSAgICAgICAgaWYgKCBkb20tPnJhbWRp c2tfYmxvYiApCi0gICAgICAgICAgICBzdGFydF9pbmZvX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBo dm1fbW9kbGlzdF9lbnRyeSk7CisgICAgc3RhcnRfaW5mb19zaXplID0gc2l6ZW9mKCpzdGFydF9p bmZvKSArIGRvbS0+Y21kbGluZV9zaXplOworICAgIGlmICggZG9tLT5yYW1kaXNrX2Jsb2IgKQor ICAgICAgICBzdGFydF9pbmZvX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBodm1fbW9kbGlzdF9lbnRy eSk7CiAKLSAgICAgICAgaWYgKCBzdGFydF9pbmZvX3NpemUgPgotICAgICAgICAgICAgIGRvbS0+ c3RhcnRfaW5mb19zZWcucGFnZXMgPDwgWENfRE9NX1BBR0VfU0hJRlQoZG9tKSApCi0gICAgICAg IHsKLSAgICAgICAgICAgIERPTVBSSU5URigiVHJ5aW5nIHRvIG1hcCBiZXlvbmQgc3RhcnRfaW5m b19zZWciKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgIGlmICggc3Rh cnRfaW5mb19zaXplID4KKyAgICAgICAgIGRvbS0+c3RhcnRfaW5mb19zZWcucGFnZXMgPDwgWENf RE9NX1BBR0VfU0hJRlQoZG9tKSApCisgICAgeworICAgICAgICBET01QUklOVEYoIlRyeWluZyB0 byBtYXAgYmV5b25kIHN0YXJ0X2luZm9fc2VnIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9 CiAKLSAgICAgICAgc3RhcnRfcGFnZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKHhjaCwgZG9taWQs IHN0YXJ0X2luZm9fc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb20tPnN0YXJ0X2luZm9fc2VnLnBmbik7Ci0gICAgICAgIGlmICggc3Rh cnRfcGFnZSA9PSBOVUxMICkKLSAgICAgICAgewotICAgICAgICAgICAgRE9NUFJJTlRGKCJVbmFi bGUgdG8gbWFwIEhWTSBzdGFydCBpbmZvIHBhZ2UiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsK LSAgICAgICAgfQorICAgIHN0YXJ0X2luZm8gPSB4Y19tYXBfZm9yZWlnbl9yYW5nZSh4Y2gsIGRv bWlkLCBzdGFydF9pbmZvX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvbS0+c3RhcnRfaW5mb19zZWcucGZuKTsKKyAgICBpZiAoIHN0YXJ0X2luZm8g PT0gTlVMTCApCisgICAgeworICAgICAgICBET01QUklOVEYoIlVuYWJsZSB0byBtYXAgSFZNIHN0 YXJ0IGluZm8gcGFnZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgICAgIHN0 YXJ0X2luZm8gPSBzdGFydF9wYWdlOworICAgIG1vZGxpc3QgPSAodm9pZCopKHN0YXJ0X2luZm8g KyAxKSArIGRvbS0+Y21kbGluZV9zaXplOwogCisgICAgaWYgKCAhZG9tLT5kZXZpY2VfbW9kZWwg KQorICAgIHsKICAgICAgICAgaWYgKCBkb20tPmNtZGxpbmUgKQogICAgICAgICB7Ci0gICAgICAg ICAgICBjaGFyICpjbWRsaW5lID0gc3RhcnRfcGFnZSArIHNpemVvZigqc3RhcnRfaW5mbyk7Cisg ICAgICAgICAgICBjaGFyICpjbWRsaW5lID0gKHZvaWQqKShzdGFydF9pbmZvICsgMSk7CiAKICAg ICAgICAgICAgIHN0cm5jcHkoY21kbGluZSwgZG9tLT5jbWRsaW5lLCBkb20tPmNtZGxpbmVfc2l6 ZSk7CiAgICAgICAgICAgICBzdGFydF9pbmZvLT5jbWRsaW5lX3BhZGRyID0gKGRvbS0+c3RhcnRf aW5mb19zZWcucGZuIDw8IFBBR0VfU0hJRlQpICsKQEAgLTE3MzMsMjIgKzE3OTEsMzAgQEAgc3Rh dGljIGludCBib290bGF0ZV9odm0oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogCiAgICAgICAg IGlmICggZG9tLT5yYW1kaXNrX2Jsb2IgKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3Qg aHZtX21vZGxpc3RfZW50cnkgKm1vZGxpc3QgPQotICAgICAgICAgICAgICAgIHN0YXJ0X3BhZ2Ug KyBzaXplb2YoKnN0YXJ0X2luZm8pICsgZG9tLT5jbWRsaW5lX3NpemU7CiAKICAgICAgICAgICAg IG1vZGxpc3RbMF0ucGFkZHIgPSBkb20tPnJhbWRpc2tfc2VnLnZzdGFydCAtIGRvbS0+cGFybXMu dmlydF9iYXNlOwogICAgICAgICAgICAgbW9kbGlzdFswXS5zaXplID0gZG9tLT5yYW1kaXNrX3Nl Zy52ZW5kIC0gZG9tLT5yYW1kaXNrX3NlZy52c3RhcnQ7Ci0gICAgICAgICAgICBzdGFydF9pbmZv LT5tb2RsaXN0X3BhZGRyID0gKGRvbS0+c3RhcnRfaW5mb19zZWcucGZuIDw8IFBBR0VfU0hJRlQp ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50cHRyX3QpbW9kbGlzdCAt ICh1aW50cHRyX3Qpc3RhcnRfaW5mbyk7CiAgICAgICAgICAgICBzdGFydF9pbmZvLT5ucl9tb2R1 bGVzID0gMTsKICAgICAgICAgfQotCi0gICAgICAgIHN0YXJ0X2luZm8tPm1hZ2ljID0gWEVOX0hW TV9TVEFSVF9NQUdJQ19WQUxVRTsKLQotICAgICAgICBtdW5tYXAoc3RhcnRfcGFnZSwgc3RhcnRf aW5mb19zaXplKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAgICAgICAgYWRkX21vZHVsZV90 b19saXN0KGRvbSwgJmRvbS0+c3lzdGVtX2Zpcm13YXJlX21vZHVsZSwgImZpcm13YXJlIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGxpc3QsIHN0YXJ0X2luZm8pOworICAgIH0KKwor ICAgIGlmICggc3RhcnRfaW5mby0+bnJfbW9kdWxlcyApCisgICAgeworICAgICAgICBzdGFydF9p bmZvLT5tb2RsaXN0X3BhZGRyID0gKGRvbS0+c3RhcnRfaW5mb19zZWcucGZuIDw8IFBBR0VfU0hJ RlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnRwdHJfdCltb2RsaXN0IC0g KHVpbnRwdHJfdClzdGFydF9pbmZvKTsKKyAgICB9CisKKyAgICBzdGFydF9pbmZvLT5tYWdpYyA9 IFhFTl9IVk1fU1RBUlRfTUFHSUNfVkFMVUU7CisKKyAgICBtdW5tYXAoc3RhcnRfaW5mbywgc3Rh cnRfaW5mb19zaXplKTsKKworICAgIGlmICggZG9tLT5kZXZpY2VfbW9kZWwgKQorICAgIHsKICAg ICAgICAgdm9pZCAqaHZtX2luZm9fcGFnZTsKIAogICAgICAgICBpZiAoIChodm1faW5mb19wYWdl ID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMv eGVuLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKaW5kZXggMzdiYmIyMi4uZDlkZGVlNyAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy94ZW4uaApAQCAtODE0LDcgKzgxNCw3IEBAIHN0cnVjdCBzdGFydF9pbmZvIHsKIHR5cGVk ZWYgc3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190OwogCiAvKgotICogU3RhcnQgb2YgZGF5 IHN0cnVjdHVyZSBwYXNzZWQgdG8gUFZIIGd1ZXN0cyBpbiAlZWJ4LgorICogU3RhcnQgb2YgZGF5 IHN0cnVjdHVyZSBwYXNzZWQgdG8gUFZIIGd1ZXN0cyBhbmQgdG8gSFZNIGd1ZXN0cyBpbiAlZWJ4 LgogICoKICAqIE5PVEU6IG5vdGhpbmcgd2lsbCBiZSBsb2FkZWQgYXQgcGh5c2ljYWwgYWRkcmVz cyAwLCBzbyBhIDAgdmFsdWUgaW4gYW55CiAgKiBvZiB0aGUgYWRkcmVzcyBmaWVsZHMgc2hvdWxk IGJlIHRyZWF0ZWQgYXMgbm90IHByZXNlbnQuCi0tIApBbnRob255IFBFUkFSRAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==