From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v5 09/28] libxl: switch HVM domain building to use xc_dom_* helpers Date: Fri, 21 Aug 2015 18:53:22 +0200 Message-ID: <1440176021-18910-10-git-send-email-roger.pau@citrix.com> References: <1440176021-18910-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZSpZh-0007iq-BE for xen-devel@lists.xenproject.org; Fri, 21 Aug 2015 16:53:53 +0000 In-Reply-To: <1440176021-18910-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Wei Liu , Stefano Stabellini , Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org Tm93IHRoYXQgd2UgaGF2ZSBhbGwgdGhlIGNvZGUgaW4gcGxhY2UgSFZNIGRvbWFpbiBidWlsZGlu ZyBpbiBsaWJ4bCBjYW4gYmUKc3dpdGNoZWQgdG8gdXNlIHRoZSB4Y19kb21fKiBmYW1pbHkgb2Yg ZnVuY3Rpb25zLCBqdXN0IGxpa2UgdGhleSBhcmUgdXNlZCBpbgpvcmRlciB0byBidWlsZCBQViBn dWVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4 LmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBJYW4gSmFj a3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8 c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gQ2FtcGJlbGwgPGlhbi5j YW1wYmVsbEBjaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0t CkNoYW5nZXMgc2luY2UgdjQ6CiAtIEFkZCBXZWkgTGl1IEFja2VkLWJ5LgotLS0KIHRvb2xzL2xp YnhsL2xpYnhsX2FyY2guaCAgICAgfCAgIDIgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX2RtLmMgICAg ICAgfCAgMTggKystLQogdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgICAgICB8IDIyNyArKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiB0b29scy9saWJ4bC9saWJ4bF9p bnRlcm5hbC5oIHwgICA0ICstCiB0b29scy9saWJ4bC9saWJ4bF92bnVtYS5jICAgIHwgIDEyICsr LQogdG9vbHMvbGlieGwvbGlieGxfeDg2LmMgICAgICB8ICAgOCArLQogNiBmaWxlcyBjaGFuZ2Vk LCAxNTUgaW5zZXJ0aW9ucygrKSwgMTE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX2FyY2guaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2FyY2guaAppbmRleCBiZDAz MGI2Li4zNGE4NTNjIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9hcmNoLmgKKysrIGIv dG9vbHMvbGlieGwvbGlieGxfYXJjaC5oCkBAIC02MCw2ICs2MCw2IEBAIF9oaWRkZW4KIGludCBs aWJ4bF9fYXJjaF9kb21haW5fY29uc3RydWN0X21lbW1hcChsaWJ4bF9fZ2MgKmdjLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRf Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4 Y19odm1fYnVpbGRfYXJncyAqYXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKTsKIAogI2VuZGlmCmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF9kbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG0uYwppbmRleCBj ODQwODVlLi4xNmFkNDdhIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kbS5jCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMKQEAgLTE4LDYgKzE4LDggQEAKICNpbmNsdWRlICJsaWJ4 bF9vc2RlcHMuaCIgLyogbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgaGVhZGVycyAqLwogCiAj aW5jbHVkZSAibGlieGxfaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPHhjX2RvbS5oPgogI2luY2x1 ZGUgPHhlbi9odm0vZTgyMC5oPgogCiBzdGF0aWMgY29uc3QgY2hhciAqbGlieGxfdGFwaWZfc2Ny aXB0KGxpYnhsX19nYyAqZ2MpCkBAIC0xODEsNyArMTgzLDcgQEAgYWRkX3JkbV9lbnRyeShsaWJ4 bF9fZ2MgKmdjLCBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKIGludCBsaWJ4bF9fZG9t YWluX2RldmljZV9jb25zdHJ1Y3RfcmRtKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJkbV9tZW1fYm91 bmRhcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNf aHZtX2J1aWxkX2FyZ3MgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgaW50IGksIGosIGNvbmZsaWN0 LCByYzsKICAgICBzdHJ1Y3QgeGVuX3Jlc2VydmVkX2RldmljZV9tZW1vcnkgKnhyZG0gPSBOVUxM OwpAQCAtMTg5LDcgKzE5MSw3IEBAIGludCBsaWJ4bF9fZG9tYWluX2RldmljZV9jb25zdHJ1Y3Rf cmRtKGxpYnhsX19nYyAqZ2MsCiAgICAgdWludDE2X3Qgc2VnOwogICAgIHVpbnQ4X3QgYnVzLCBk ZXZmbjsKICAgICB1aW50NjRfdCByZG1fc3RhcnQsIHJkbV9zaXplOwotICAgIHVpbnQ2NF90IGhp Z2htZW1fZW5kID0gYXJncy0+aGlnaG1lbV9lbmQgPyBhcmdzLT5oaWdobWVtX2VuZCA6ICgxdWxs PDwzMik7CisgICAgdWludDY0X3QgaGlnaG1lbV9lbmQgPSBkb20tPmhpZ2htZW1fZW5kID8gZG9t LT5oaWdobWVtX2VuZCA6ICgxdWxsPDwzMik7CiAKICAgICAvKgogICAgICAqIFdlIGp1c3Qgd2Fu dCB0byBjb25zdHJ1Y3QgUkRNIG9uY2Ugc2luY2UgUkRNIGlzIHNwZWNpZmljIHRvIHRoZQpAQCAt MzAzLDcgKzMwNSw3IEBAIGludCBsaWJ4bF9fZG9tYWluX2RldmljZV9jb25zdHJ1Y3RfcmRtKGxp YnhsX19nYyAqZ2MsCiAgICAgZm9yIChpID0gMDsgaSA8IGRfY29uZmlnLT5udW1fcmRtczsgaSsr KSB7CiAgICAgICAgIHJkbV9zdGFydCA9IGRfY29uZmlnLT5yZG1zW2ldLnN0YXJ0OwogICAgICAg ICByZG1fc2l6ZSA9IGRfY29uZmlnLT5yZG1zW2ldLnNpemU7Ci0gICAgICAgIGNvbmZsaWN0ID0g b3ZlcmxhcHNfcmRtKDAsIGFyZ3MtPmxvd21lbV9lbmQsIHJkbV9zdGFydCwgcmRtX3NpemUpOwor ICAgICAgICBjb25mbGljdCA9IG92ZXJsYXBzX3JkbSgwLCBkb20tPmxvd21lbV9lbmQsIHJkbV9z dGFydCwgcmRtX3NpemUpOwogCiAgICAgICAgIGlmICghY29uZmxpY3QpCiAgICAgICAgICAgICBj b250aW51ZTsKQEAgLTMxNCwxNCArMzE2LDE0IEBAIGludCBsaWJ4bF9fZG9tYWluX2RldmljZV9j b25zdHJ1Y3RfcmRtKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgKiBXZSB3aWxsIG1vdmUg ZG93bndhcmRzIGxvd21lbV9lbmQgc28gd2UgaGF2ZSB0byBleHBhbmQKICAgICAgICAgICAgICAq IGhpZ2htZW1fZW5kLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBoaWdobWVtX2VuZCAr PSAoYXJncy0+bG93bWVtX2VuZCAtIHJkbV9zdGFydCk7CisgICAgICAgICAgICBoaWdobWVtX2Vu ZCArPSAoZG9tLT5sb3dtZW1fZW5kIC0gcmRtX3N0YXJ0KTsKICAgICAgICAgICAgIC8qIE5vdyBt b3ZlIGRvd253YXJkcyBsb3dtZW1fZW5kLiAqLwotICAgICAgICAgICAgYXJncy0+bG93bWVtX2Vu ZCA9IHJkbV9zdGFydDsKKyAgICAgICAgICAgIGRvbS0+bG93bWVtX2VuZCA9IHJkbV9zdGFydDsK ICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFN5bmMgaGlnaG1lbV9lbmQuICovCi0gICAgYXJn cy0+aGlnaG1lbV9lbmQgPSBoaWdobWVtX2VuZDsKKyAgICBkb20tPmhpZ2htZW1fZW5kID0gaGln aG1lbV9lbmQ7CiAKICAgICAvKgogICAgICAqIEZpbmFsbHkgd2UgY2FuIHRha2Ugc2FtZSBwb2xp Y3kgdG8gY2hlY2sgbG93bWVtKDwgMkcpIGFuZApAQCAtMzMxLDExICszMzMsMTEgQEAgaW50IGxp YnhsX19kb21haW5fZGV2aWNlX2NvbnN0cnVjdF9yZG0obGlieGxfX2djICpnYywKICAgICAgICAg cmRtX3N0YXJ0ID0gZF9jb25maWctPnJkbXNbaV0uc3RhcnQ7CiAgICAgICAgIHJkbV9zaXplID0g ZF9jb25maWctPnJkbXNbaV0uc2l6ZTsKICAgICAgICAgLyogRG9lcyB0aGlzIGVudHJ5IGNvbmZs aWN0IHdpdGggbG93bWVtPyAqLwotICAgICAgICBjb25mbGljdCA9IG92ZXJsYXBzX3JkbSgwLCBh cmdzLT5sb3dtZW1fZW5kLAorICAgICAgICBjb25mbGljdCA9IG92ZXJsYXBzX3JkbSgwLCBkb20t Pmxvd21lbV9lbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkbV9zdGFydCwg cmRtX3NpemUpOwogICAgICAgICAvKiBEb2VzIHRoaXMgZW50cnkgY29uZmxpY3Qgd2l0aCBoaWdo bWVtPyAqLwogICAgICAgICBjb25mbGljdCB8PSBvdmVybGFwc19yZG0oKDFVTEw8PDMyKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmhpZ2htZW1fZW5kIC0gKDFVTEw8 PDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+aGlnaG1lbV9lbmQg LSAoMVVMTDw8MzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRtX3N0YXJ0 LCByZG1fc2l6ZSk7CiAKICAgICAgICAgaWYgKCFjb25mbGljdCkKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKaW5kZXggNjEwMWU1 Yy4uZDJjZjllMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfZG9tLmMKQEAgLTYwMiw2ICs2MDIsNjMgQEAgc3RhdGljIGludCBzZXRf dm51bWFfaW5mbyhsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7 CiB9CiAKK3N0YXRpYyBpbnQgbGlieGxfX2J1aWxkX2RvbShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJf dCBkb21pZCwKKyAgICAgICAgICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqaW5mbywgbGli eGxfX2RvbWFpbl9idWlsZF9zdGF0ZSAqc3RhdGUsCisgICAgICAgICAgICAgc3RydWN0IHhjX2Rv bV9pbWFnZSAqZG9tKQoreworICAgIHVpbnQ2NF90IG1lbV9rYjsKKyAgICBpbnQgcmV0OworCisg ICAgaWYgKCAocmV0ID0geGNfZG9tX2Jvb3RfeGVuX2luaXQoZG9tLCBDVFgtPnhjaCwgZG9taWQp KSAhPSAwICkgeworICAgICAgICBMT0dFKEVSUk9SLCAieGNfZG9tX2Jvb3RfeGVuX2luaXQgZmFp bGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyNpZmRlZiBHVUVTVF9SQU1fQkFTRQor ICAgIGlmICggKHJldCA9IHhjX2RvbV9yYW1iYXNlX2luaXQoZG9tLCBHVUVTVF9SQU1fQkFTRSkp ICE9IDAgKSB7CisgICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fcmFtYmFzZSBmYWlsZWQiKTsK KyAgICAgICAgZ290byBvdXQ7CisgICAgfQorI2VuZGlmCisgICAgaWYgKCAocmV0ID0geGNfZG9t X3BhcnNlX2ltYWdlKGRvbSkpICE9IDAgKSB7CisgICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21f cGFyc2VfaW1hZ2UgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAo IChyZXQgPSBsaWJ4bF9fYXJjaF9kb21haW5faW5pdF9od19kZXNjcmlwdGlvbihnYywgaW5mbywg c3RhdGUsIGRvbSkpICE9IDAgKSB7CisgICAgICAgIExPR0UoRVJST1IsICJsaWJ4bF9fYXJjaF9k b21haW5faW5pdF9od19kZXNjcmlwdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7Cisg ICAgfQorCisgICAgbWVtX2tiID0gZG9tLT5jb250YWluZXJfdHlwZSA9PSBYQ19ET01fSFZNX0NP TlRBSU5FUiA/CisgICAgICAgICAgICAgKGluZm8tPm1heF9tZW1rYiAtIGluZm8tPnZpZGVvX21l bWtiKSA6IGluZm8tPnRhcmdldF9tZW1rYjsKKyAgICBpZiAoIChyZXQgPSB4Y19kb21fbWVtX2lu aXQoZG9tLCBtZW1fa2IgLyAxMDI0KSkgIT0gMCApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhj X2RvbV9tZW1faW5pdCBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlm ICggKHJldCA9IHhjX2RvbV9ib290X21lbV9pbml0KGRvbSkpICE9IDAgKSB7CisgICAgICAgIExP R0UoRVJST1IsICJ4Y19kb21fYm9vdF9tZW1faW5pdCBmYWlsZWQiKTsKKyAgICAgICAgZ290byBv dXQ7CisgICAgfQorICAgIGlmICggKHJldCA9IGxpYnhsX19hcmNoX2RvbWFpbl9maW5hbGlzZV9o d19kZXNjcmlwdGlvbihnYywgaW5mbywgZG9tKSkgIT0gMCApIHsKKyAgICAgICAgTE9HRShFUlJP UiwgImxpYnhsX19hcmNoX2RvbWFpbl9maW5hbGlzZV9od19kZXNjcmlwdGlvbiBmYWlsZWQiKTsK KyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlmICggKHJldCA9IHhjX2RvbV9idWlsZF9p bWFnZShkb20pKSAhPSAwICkgeworICAgICAgICBMT0dFKEVSUk9SLCAieGNfZG9tX2J1aWxkX2lt YWdlIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKCAocmV0ID0g eGNfZG9tX2Jvb3RfaW1hZ2UoZG9tKSkgIT0gMCApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhj X2RvbV9ib290X2ltYWdlIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAg aWYgKCAocmV0ID0geGNfZG9tX2dudHRhYl9pbml0KGRvbSkpICE9IDAgKSB7CisgICAgICAgIExP R0UoRVJST1IsICJ4Y19kb21fZ250dGFiX2luaXQgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0 OworICAgIH0KKworb3V0OgorICAgIHJldHVybiByZXQgIT0gMCA/IEVSUk9SX0ZBSUwgOiAwOwor fQorCiBpbnQgbGlieGxfX2J1aWxkX3B2KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAog ICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICppbmZvLCBsaWJ4bF9fZG9tYWlu X2J1aWxkX3N0YXRlICpzdGF0ZSkKIHsKQEAgLTY5Miw0OCArNzQ5LDkgQEAgaW50IGxpYnhsX19i dWlsZF9wdihsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgIGRvbS0+ dm5vZGVfdG9fcG5vZGVbaV0gPSBpbmZvLT52bnVtYV9ub2Rlc1tpXS5wbm9kZTsKICAgICB9CiAK LSAgICBpZiAoIChyZXQgPSB4Y19kb21fYm9vdF94ZW5faW5pdChkb20sIGN0eC0+eGNoLCBkb21p ZCkpICE9IDAgKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fYm9vdF94ZW5faW5pdCBm YWlsZWQiKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotI2lmZGVmIEdVRVNUX1JBTV9CQVNF Ci0gICAgaWYgKCAocmV0ID0geGNfZG9tX3JhbWJhc2VfaW5pdChkb20sIEdVRVNUX1JBTV9CQVNF KSkgIT0gMCApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9yYW1iYXNlIGZhaWxlZCIp OwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAoIChyZXQgPSB4Y19k b21fcGFyc2VfaW1hZ2UoZG9tKSkgIT0gMCApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgInhjX2Rv bV9wYXJzZV9pbWFnZSBmYWlsZWQiKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotICAgIGlm ICggKHJldCA9IGxpYnhsX19hcmNoX2RvbWFpbl9pbml0X2h3X2Rlc2NyaXB0aW9uKGdjLCBpbmZv LCBzdGF0ZSwgZG9tKSkgIT0gMCApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImxpYnhsX19hcmNo X2RvbWFpbl9pbml0X2h3X2Rlc2NyaXB0aW9uIGZhaWxlZCIpOwotICAgICAgICBnb3RvIG91dDsK LSAgICB9Ci0gICAgaWYgKCAocmV0ID0geGNfZG9tX21lbV9pbml0KGRvbSwgaW5mby0+dGFyZ2V0 X21lbWtiIC8gMTAyNCkpICE9IDAgKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fbWVt X2luaXQgZmFpbGVkIik7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICBpZiAoIChyZXQg PSB4Y19kb21fYm9vdF9tZW1faW5pdChkb20pKSAhPSAwICkgewotICAgICAgICBMT0dFKEVSUk9S LCAieGNfZG9tX2Jvb3RfbWVtX2luaXQgZmFpbGVkIik7Ci0gICAgICAgIGdvdG8gb3V0OwotICAg IH0KLSAgICBpZiAoIChyZXQgPSBsaWJ4bF9fYXJjaF9kb21haW5fZmluYWxpc2VfaHdfZGVzY3Jp cHRpb24oZ2MsIGluZm8sIGRvbSkpICE9IDAgKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJsaWJ4 bF9fYXJjaF9kb21haW5fZmluYWxpc2VfaHdfZGVzY3JpcHRpb24gZmFpbGVkIik7Ci0gICAgICAg IGdvdG8gb3V0OwotICAgIH0KLSAgICBpZiAoIChyZXQgPSB4Y19kb21fYnVpbGRfaW1hZ2UoZG9t KSkgIT0gMCApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9idWlsZF9pbWFnZSBmYWls ZWQiKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotICAgIGlmICggKHJldCA9IHhjX2RvbV9i b290X2ltYWdlKGRvbSkpICE9IDAgKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fYm9v dF9pbWFnZSBmYWlsZWQiKTsKKyAgICByZXQgPSBsaWJ4bF9fYnVpbGRfZG9tKGdjLCBkb21pZCwg aW5mbywgc3RhdGUsIGRvbSk7CisgICAgaWYgKHJldCAhPSAwKQogICAgICAgICBnb3RvIG91dDsK LSAgICB9Ci0gICAgaWYgKCAocmV0ID0geGNfZG9tX2dudHRhYl9pbml0KGRvbSkpICE9IDAgKSB7 Ci0gICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fZ250dGFiX2luaXQgZmFpbGVkIik7Ci0gICAg ICAgIGdvdG8gb3V0OwotICAgIH0KIAogICAgIGlmICh4Y19kb21fZmVhdHVyZV90cmFuc2xhdGVk KGRvbSkpIHsKICAgICAgICAgc3RhdGUtPmNvbnNvbGVfbWZuID0gZG9tLT5jb25zb2xlX3BmbjsK QEAgLTc5MywzOSArODExLDM5IEBAIHN0YXRpYyBpbnQgaHZtX2J1aWxkX3NldF9wYXJhbXMoeGNf aW50ZXJmYWNlICpoYW5kbGUsIHVpbnQzMl90IGRvbWlkLAogCiBzdGF0aWMgaW50IGh2bV9idWls ZF9zZXRfeHNfdmFsdWVzKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIHsKICAgICBjaGFyICpw YXRoID0gTlVMTDsKICAgICBpbnQgcmV0ID0gMDsKIAotICAgIGlmIChhcmdzLT5zbWJpb3NfbW9k dWxlLmd1ZXN0X2FkZHJfb3V0KSB7CisgICAgaWYgKGRvbS0+c21iaW9zX21vZHVsZS5ndWVzdF9h ZGRyX291dCkgewogICAgICAgICBwYXRoID0gR0NTUFJJTlRGKCIvbG9jYWwvZG9tYWluLyVkLyJI Vk1fWFNfU01CSU9TX1BUX0FERFJFU1MsIGRvbWlkKTsKIAogICAgICAgICByZXQgPSBsaWJ4bF9f eHNfd3JpdGUoZ2MsIFhCVF9OVUxMLCBwYXRoLCAiMHglIlBSSXg2NCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFyZ3MtPnNtYmlvc19tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5zbWJpb3NfbW9kdWxlLmd1ZXN0X2FkZHJf b3V0KTsKICAgICAgICAgaWYgKHJldCkKICAgICAgICAgICAgIGdvdG8gZXJyOwogCiAgICAgICAg IHBhdGggPSBHQ1NQUklOVEYoIi9sb2NhbC9kb21haW4vJWQvIkhWTV9YU19TTUJJT1NfUFRfTEVO R1RILCBkb21pZCk7CiAKICAgICAgICAgcmV0ID0gbGlieGxfX3hzX3dyaXRlKGdjLCBYQlRfTlVM TCwgcGF0aCwgIjB4JXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+c21i aW9zX21vZHVsZS5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5z bWJpb3NfbW9kdWxlLmxlbmd0aCk7CiAgICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgICBnb3Rv IGVycjsKICAgICB9CiAKLSAgICBpZiAoYXJncy0+YWNwaV9tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQp IHsKKyAgICBpZiAoZG9tLT5hY3BpX21vZHVsZS5ndWVzdF9hZGRyX291dCkgewogICAgICAgICBw YXRoID0gR0NTUFJJTlRGKCIvbG9jYWwvZG9tYWluLyVkLyJIVk1fWFNfQUNQSV9QVF9BRERSRVNT LCBkb21pZCk7CiAKICAgICAgICAgcmV0ID0gbGlieGxfX3hzX3dyaXRlKGdjLCBYQlRfTlVMTCwg cGF0aCwgIjB4JSJQUkl4NjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5h Y3BpX21vZHVsZS5ndWVzdF9hZGRyX291dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb20tPmFjcGlfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0KTsKICAgICAgICAgaWYgKHJldCkKICAg ICAgICAgICAgIGdvdG8gZXJyOwogCiAgICAgICAgIHBhdGggPSBHQ1NQUklOVEYoIi9sb2NhbC9k b21haW4vJWQvIkhWTV9YU19BQ1BJX1BUX0xFTkdUSCwgZG9taWQpOwogCiAgICAgICAgIHJldCA9 IGxpYnhsX194c193cml0ZShnYywgWEJUX05VTEwsIHBhdGgsICIweCV4IiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFyZ3MtPmFjcGlfbW9kdWxlLmxlbmd0aCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb20tPmFjcGlfbW9kdWxlLmxlbmd0aCk7CiAgICAgICAgIGlm IChyZXQpCiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICB9CkBAIC04MzksNyArODU3LDcgQEAg ZXJyOgogCiBzdGF0aWMgaW50IGxpYnhsX19kb21haW5fZmlybXdhcmUobGlieGxfX2djICpnYywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5m byAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZt X2J1aWxkX2FyZ3MgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogewogICAgIGxpYnhsX2N0eCAqY3R4ID0gbGlieGxfX2dj X293bmVyKGdjKTsKICAgICBjb25zdCBjaGFyICpmaXJtd2FyZTsKQEAgLTg2NSw4ICs4ODMsMTMg QEAgc3RhdGljIGludCBsaWJ4bF9fZG9tYWluX2Zpcm13YXJlKGxpYnhsX19nYyAqZ2MsCiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBhcmdzLT5pbWFnZV9maWxlX25h bWUgPSBsaWJ4bF9fYWJzX3BhdGgoZ2MsIGZpcm13YXJlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feGVuZmlybXdhcmVkaXJfcGF0aCgpKTsKKwor ICAgIHJjID0geGNfZG9tX2tlcm5lbF9maWxlKGRvbSwgbGlieGxfX2Fic19wYXRoKGdjLCBmaXJt d2FyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aWJ4bF9feGVuZmlybXdhcmVkaXJfcGF0aCgpKSk7CisgICAgaWYgKHJjICE9IDApIHsKKyAgICAg ICAgTE9HRShFUlJPUiwgInhjX2RvbV9rZXJuZWxfZmlsZSBmYWlsZWQiKTsKKyAgICAgICAgZ290 byBvdXQ7CisgICAgfQogCiAgICAgaWYgKGluZm8tPnUuaHZtLnNtYmlvc19maXJtd2FyZSkgewog ICAgICAgICBkYXRhID0gTlVMTDsKQEAgLTg4MCw4ICs5MDMsOCBAQCBzdGF0aWMgaW50IGxpYnhs X19kb21haW5fZmlybXdhcmUobGlieGxfX2djICpnYywKICAgICAgICAgbGlieGxfX3B0cl9hZGQo Z2MsIGRhdGEpOwogICAgICAgICBpZiAoZGF0YWxlbikgewogICAgICAgICAgICAgLyogT25seSBh Y2NlcHQgbm9uLWVtcHR5IGZpbGVzICovCi0gICAgICAgICAgICBhcmdzLT5zbWJpb3NfbW9kdWxl LmRhdGEgPSBkYXRhOwotICAgICAgICAgICAgYXJncy0+c21iaW9zX21vZHVsZS5sZW5ndGggPSAo dWludDMyX3QpZGF0YWxlbjsKKyAgICAgICAgICAgIGRvbS0+c21iaW9zX21vZHVsZS5kYXRhID0g ZGF0YTsKKyAgICAgICAgICAgIGRvbS0+c21iaW9zX21vZHVsZS5sZW5ndGggPSAodWludDMyX3Qp ZGF0YWxlbjsKICAgICAgICAgfQogICAgIH0KIApAQCAtODk3LDggKzkyMCw4IEBAIHN0YXRpYyBp bnQgbGlieGxfX2RvbWFpbl9maXJtd2FyZShsaWJ4bF9fZ2MgKmdjLAogICAgICAgICBsaWJ4bF9f cHRyX2FkZChnYywgZGF0YSk7CiAgICAgICAgIGlmIChkYXRhbGVuKSB7CiAgICAgICAgICAgICAv KiBPbmx5IGFjY2VwdCBub24tZW1wdHkgZmlsZXMgKi8KLSAgICAgICAgICAgIGFyZ3MtPmFjcGlf bW9kdWxlLmRhdGEgPSBkYXRhOwotICAgICAgICAgICAgYXJncy0+YWNwaV9tb2R1bGUubGVuZ3Ro ID0gKHVpbnQzMl90KWRhdGFsZW47CisgICAgICAgICAgICBkb20tPmFjcGlfbW9kdWxlLmRhdGEg PSBkYXRhOworICAgICAgICAgICAgZG9tLT5hY3BpX21vZHVsZS5sZW5ndGggPSAodWludDMyX3Qp ZGF0YWxlbjsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTEyLDUyICs5MzUsNjIgQEAgaW50IGxp YnhsX19idWlsZF9odm0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAg ICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgKnN0YXRlKQogewogICAgIGxpYnhsX2N0eCAq Y3R4ID0gbGlieGxfX2djX293bmVyKGdjKTsKLSAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3Mg YXJncyA9IHt9OwotICAgIGludCByZXQsIHJjOwotICAgIHVpbnQ2NF90IG1taW9fc3RhcnQsIGxv d21lbV9lbmQsIGhpZ2htZW1fZW5kOworICAgIGludCByYzsKKyAgICB1aW50NjRfdCBtbWlvX3N0 YXJ0LCBsb3dtZW1fZW5kLCBoaWdobWVtX2VuZCwgbWVtX3NpemU7CiAgICAgbGlieGxfZG9tYWlu X2J1aWxkX2luZm8gKmNvbnN0IGluZm8gPSAmZF9jb25maWctPmJfaW5mbzsKKyAgICBzdHJ1Y3Qg eGNfZG9tX2ltYWdlICpkb20gPSBOVUxMOworCisgICAgeGNfZG9tX2xvZ2luaXQoY3R4LT54Y2gp OworCisgICAgZG9tID0geGNfZG9tX2FsbG9jYXRlKGN0eC0+eGNoLCBOVUxMLCBOVUxMKTsKKyAg ICBpZiAoIWRvbSkgeworICAgICAgICBMT0dFKEVSUk9SLCAieGNfZG9tX2FsbG9jYXRlIGZhaWxl ZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBkb20tPmNvbnRhaW5lcl90eXBl ID0gWENfRE9NX0hWTV9DT05UQUlORVI7CiAKLSAgICBtZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihz dHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MpKTsKICAgICAvKiBUaGUgcGFyYW1zIGZyb20gdGhlIGNv bmZpZ3VyYXRpb24gZmlsZSBhcmUgaW4gTWIsIHdoaWNoIGFyZSB0aGVuCiAgICAgICogbXVsdGlw bGllZCBieSAxIEtiLiBUaGlzIHdhcyB0aGVuIGRpdmlkZWQgb2ZmIHdoZW4gY2FsbGluZwogICAg ICAqIHRoZSBvbGQgeGNfaHZtX2J1aWxkX3RhcmdldF9tZW0oKSB3aGljaCB0aGVuIHR1cm5lZCB0 aGVtIHRvIGJ5dGVzLgogICAgICAqIERvIGFsbCB0aGlzIGluIG9uZSBzdGVwIGhlcmUuLi4KICAg ICAgKi8KLSAgICBhcmdzLm1lbV9zaXplID0gKHVpbnQ2NF90KShpbmZvLT5tYXhfbWVta2IgLSBp bmZvLT52aWRlb19tZW1rYikgPDwgMTA7Ci0gICAgYXJncy5tZW1fdGFyZ2V0ID0gKHVpbnQ2NF90 KShpbmZvLT50YXJnZXRfbWVta2IgLSBpbmZvLT52aWRlb19tZW1rYikgPDwgMTA7Ci0gICAgYXJn cy5jbGFpbV9lbmFibGVkID0gbGlieGxfZGVmYm9vbF92YWwoaW5mby0+Y2xhaW1fbW9kZSk7Cisg ICAgbWVtX3NpemUgPSAodWludDY0X3QpKGluZm8tPm1heF9tZW1rYiAtIGluZm8tPnZpZGVvX21l bWtiKSA8PCAxMDsKKyAgICBkb20tPnRhcmdldF9wYWdlcyA9ICh1aW50NjRfdCkoaW5mby0+dGFy Z2V0X21lbWtiIC0gaW5mby0+dmlkZW9fbWVta2IpID4+IDI7CisgICAgZG9tLT5jbGFpbV9lbmFi bGVkID0gbGlieGxfZGVmYm9vbF92YWwoaW5mby0+Y2xhaW1fbW9kZSk7CiAgICAgaWYgKGluZm8t PnUuaHZtLm1taW9faG9sZV9tZW1rYikgewogICAgICAgICB1aW50NjRfdCBtYXhfcmFtX2JlbG93 XzRnID0gKDFVTEwgPDwgMzIpIC0KICAgICAgICAgICAgIChpbmZvLT51Lmh2bS5tbWlvX2hvbGVf bWVta2IgPDwgMTApOwogCiAgICAgICAgIGlmIChtYXhfcmFtX2JlbG93XzRnIDwgSFZNX0JFTE9X XzRHX01NSU9fU1RBUlQpCi0gICAgICAgICAgICBhcmdzLm1taW9fc2l6ZSA9IGluZm8tPnUuaHZt Lm1taW9faG9sZV9tZW1rYiA8PCAxMDsKKyAgICAgICAgICAgIGRvbS0+bW1pb19zaXplID0gaW5m by0+dS5odm0ubW1pb19ob2xlX21lbWtiIDw8IDEwOwogICAgIH0KIAotICAgIHJjID0gbGlieGxf X2RvbWFpbl9maXJtd2FyZShnYywgaW5mbywgJmFyZ3MpOworICAgIHJjID0gbGlieGxfX2RvbWFp bl9maXJtd2FyZShnYywgaW5mbywgZG9tKTsKICAgICBpZiAocmMgIT0gMCkgewogICAgICAgICBM T0coRVJST1IsICJpbml0aWFsaXppbmcgZG9tYWluIGZpcm13YXJlIGZhaWxlZCIpOwogICAgICAg ICBnb3RvIG91dDsKICAgICB9Ci0gICAgaWYgKGFyZ3MubWVtX3RhcmdldCA9PSAwKQotICAgICAg ICBhcmdzLm1lbV90YXJnZXQgPSBhcmdzLm1lbV9zaXplOwotICAgIGlmIChhcmdzLm1taW9fc2l6 ZSA9PSAwKQotICAgICAgICBhcmdzLm1taW9fc2l6ZSA9IEhWTV9CRUxPV180R19NTUlPX0xFTkdU SDsKLSAgICBsb3dtZW1fZW5kID0gYXJncy5tZW1fc2l6ZTsKKworICAgIGlmIChkb20tPnRhcmdl dF9wYWdlcyA9PSAwKQorICAgICAgICBkb20tPnRhcmdldF9wYWdlcyA9IG1lbV9zaXplID4+IFhD X1BBR0VfU0hJRlQ7CisgICAgaWYgKGRvbS0+bW1pb19zaXplID09IDApCisgICAgICAgIGRvbS0+ bW1pb19zaXplID0gSFZNX0JFTE9XXzRHX01NSU9fTEVOR1RIOworICAgIGxvd21lbV9lbmQgPSBt ZW1fc2l6ZTsKICAgICBoaWdobWVtX2VuZCA9IDA7Ci0gICAgbW1pb19zdGFydCA9ICgxdWxsIDw8 IDMyKSAtIGFyZ3MubW1pb19zaXplOworICAgIG1taW9fc3RhcnQgPSAoMXVsbCA8PCAzMikgLSBk b20tPm1taW9fc2l6ZTsKICAgICBpZiAobG93bWVtX2VuZCA+IG1taW9fc3RhcnQpCiAgICAgewog ICAgICAgICBoaWdobWVtX2VuZCA9ICgxdWxsIDw8IDMyKSArIChsb3dtZW1fZW5kIC0gbW1pb19z dGFydCk7CiAgICAgICAgIGxvd21lbV9lbmQgPSBtbWlvX3N0YXJ0OwogICAgIH0KLSAgICBhcmdz Lmxvd21lbV9lbmQgPSBsb3dtZW1fZW5kOwotICAgIGFyZ3MuaGlnaG1lbV9lbmQgPSBoaWdobWVt X2VuZDsKLSAgICBhcmdzLm1taW9fc3RhcnQgPSBtbWlvX3N0YXJ0OworICAgIGRvbS0+bG93bWVt X2VuZCA9IGxvd21lbV9lbmQ7CisgICAgZG9tLT5oaWdobWVtX2VuZCA9IGhpZ2htZW1fZW5kOwor ICAgIGRvbS0+bW1pb19zdGFydCA9IG1taW9fc3RhcnQ7CiAKICAgICByYyA9IGxpYnhsX19kb21h aW5fZGV2aWNlX2NvbnN0cnVjdF9yZG0oZ2MsIGRfY29uZmlnLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT51Lmh2bS5yZG1fbWVtX2JvdW5kYXJ5X21l bWtiKjEwMjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZh cmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tKTsK ICAgICBpZiAocmMpIHsKICAgICAgICAgTE9HKEVSUk9SLCAiY2hlY2tpbmcgcmVzZXJ2ZWQgZGV2 aWNlIG1lbW9yeSBmYWlsZWQiKTsKICAgICAgICAgZ290byBvdXQ7CkBAIC05NjYsNyArOTk5LDcg QEAgaW50IGxpYnhsX19idWlsZF9odm0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAg ICAgaWYgKGluZm8tPm51bV92bnVtYV9ub2RlcyAhPSAwKSB7CiAgICAgICAgIGludCBpOwogCi0g ICAgICAgIHJjID0gbGlieGxfX3ZudW1hX2J1aWxkX3ZtZW1yYW5nZV9odm0oZ2MsIGRvbWlkLCBp bmZvLCBzdGF0ZSwgJmFyZ3MpOworICAgICAgICByYyA9IGxpYnhsX192bnVtYV9idWlsZF92bWVt cmFuZ2VfaHZtKGdjLCBkb21pZCwgaW5mbywgc3RhdGUsIGRvbSk7CiAgICAgICAgIGlmIChyYyAh PSAwKSB7CiAgICAgICAgICAgICBMT0coRVJST1IsICJodm0gYnVpbGQgdm1lbXJhbmdlcyBmYWls ZWQiKTsKICAgICAgICAgICAgIGdvdG8gb3V0OwpAQCAtOTc2LDM3ICsxMDA5LDM0IEBAIGludCBs aWJ4bF9fYnVpbGRfaHZtKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICBy YyA9IHNldF92bnVtYV9pbmZvKGdjLCBkb21pZCwgaW5mbywgc3RhdGUpOwogICAgICAgICBpZiAo cmMgIT0gMCkgZ290byBvdXQ7CiAKLSAgICAgICAgYXJncy5ucl92bWVtcmFuZ2VzID0gc3RhdGUt Pm51bV92bWVtcmFuZ2VzOwotICAgICAgICBhcmdzLnZtZW1yYW5nZXMgPSBsaWJ4bF9fbWFsbG9j KGdjLCBzaXplb2YoKmFyZ3Mudm1lbXJhbmdlcykgKgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFyZ3MubnJfdm1lbXJhbmdlcyk7CisgICAgICAgIGRvbS0+bnJfdm1l bXJhbmdlcyA9IHN0YXRlLT5udW1fdm1lbXJhbmdlczsKKyAgICAgICAgZG9tLT52bWVtcmFuZ2Vz ID0gbGlieGxfX21hbGxvYyhnYywgc2l6ZW9mKCpkb20tPnZtZW1yYW5nZXMpICoKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20tPm5yX3ZtZW1yYW5nZXMpOwogCi0g ICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdzLm5yX3ZtZW1yYW5nZXM7IGkrKykgewotICAgICAg ICAgICAgYXJncy52bWVtcmFuZ2VzW2ldLnN0YXJ0ID0gc3RhdGUtPnZtZW1yYW5nZXNbaV0uc3Rh cnQ7Ci0gICAgICAgICAgICBhcmdzLnZtZW1yYW5nZXNbaV0uZW5kICAgPSBzdGF0ZS0+dm1lbXJh bmdlc1tpXS5lbmQ7Ci0gICAgICAgICAgICBhcmdzLnZtZW1yYW5nZXNbaV0uZmxhZ3MgPSBzdGF0 ZS0+dm1lbXJhbmdlc1tpXS5mbGFnczsKLSAgICAgICAgICAgIGFyZ3Mudm1lbXJhbmdlc1tpXS5u aWQgICA9IHN0YXRlLT52bWVtcmFuZ2VzW2ldLm5pZDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8 IGRvbS0+bnJfdm1lbXJhbmdlczsgaSsrKSB7CisgICAgICAgICAgICBkb20tPnZtZW1yYW5nZXNb aV0uc3RhcnQgPSBzdGF0ZS0+dm1lbXJhbmdlc1tpXS5zdGFydDsKKyAgICAgICAgICAgIGRvbS0+ dm1lbXJhbmdlc1tpXS5lbmQgICA9IHN0YXRlLT52bWVtcmFuZ2VzW2ldLmVuZDsKKyAgICAgICAg ICAgIGRvbS0+dm1lbXJhbmdlc1tpXS5mbGFncyA9IHN0YXRlLT52bWVtcmFuZ2VzW2ldLmZsYWdz OworICAgICAgICAgICAgZG9tLT52bWVtcmFuZ2VzW2ldLm5pZCAgID0gc3RhdGUtPnZtZW1yYW5n ZXNbaV0ubmlkOwogICAgICAgICB9CiAKLSAgICAgICAgYXJncy5ucl92bm9kZXMgPSBpbmZvLT5u dW1fdm51bWFfbm9kZXM7Ci0gICAgICAgIGFyZ3Mudm5vZGVfdG9fcG5vZGUgPSBsaWJ4bF9fbWFs bG9jKGdjLCBzaXplb2YoKmFyZ3Mudm5vZGVfdG9fcG5vZGUpICoKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5ucl92bm9kZXMpOwotICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgYXJncy5ucl92bm9kZXM7IGkrKykKLSAgICAgICAgICAgIGFyZ3Mudm5vZGVf dG9fcG5vZGVbaV0gPSBpbmZvLT52bnVtYV9ub2Rlc1tpXS5wbm9kZTsKLSAgICB9Ci0KLSAgICBy ZXQgPSB4Y19odm1fYnVpbGQoY3R4LT54Y2gsIGRvbWlkLCAmYXJncyk7Ci0gICAgaWYgKHJldCkg ewotICAgICAgICBMT0dFVihFUlJPUiwgcmV0LCAiaHZtIGJ1aWxkaW5nIGZhaWxlZCIpOwotICAg ICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgICAgIGdvdG8gb3V0OworICAgICAgICBkb20tPm5y X3Zub2RlcyA9IGluZm8tPm51bV92bnVtYV9ub2RlczsKKyAgICAgICAgZG9tLT52bm9kZV90b19w bm9kZSA9IGxpYnhsX19tYWxsb2MoZ2MsIHNpemVvZigqZG9tLT52bm9kZV90b19wbm9kZSkgKgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20tPm5yX3Zub2Rl cyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkb20tPm5yX3Zub2RlczsgaSsrKQorICAgICAg ICAgICAgZG9tLT52bm9kZV90b19wbm9kZVtpXSA9IGluZm8tPnZudW1hX25vZGVzW2ldLnBub2Rl OwogICAgIH0KIAotICAgIHJjID0gbGlieGxfX2FyY2hfZG9tYWluX2NvbnN0cnVjdF9tZW1tYXAo Z2MsIGRfY29uZmlnLCBkb21pZCwgJmFyZ3MpOworICAgIHJjID0gbGlieGxfX2FyY2hfZG9tYWlu X2NvbnN0cnVjdF9tZW1tYXAoZ2MsIGRfY29uZmlnLCBkb21pZCwgZG9tKTsKICAgICBpZiAocmMg IT0gMCkgewogICAgICAgICBMT0coRVJST1IsICJzZXR0aW5nIGRvbWFpbiBtZW1vcnkgbWFwIGZh aWxlZCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKKyAgICByYyA9IGxpYnhsX19idWls ZF9kb20oZ2MsIGRvbWlkLCBpbmZvLCBzdGF0ZSwgZG9tKTsKKyAgICBpZiAocmMgIT0gMCkKKyAg ICAgICAgZ290byBvdXQ7CisKICAgICByYyA9IGh2bV9idWlsZF9zZXRfcGFyYW1zKGN0eC0+eGNo LCBkb21pZCwgaW5mbywgc3RhdGUtPnN0b3JlX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnN0YXRlLT5zdG9yZV9tZm4sIHN0YXRlLT5jb25zb2xlX3BvcnQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRlLT5jb25zb2xlX21mbiwgc3RhdGUtPnN0b3Jl X2RvbWlkLApAQCAtMTAxNiwxNSArMTA0NiwxOCBAQCBpbnQgbGlieGxfX2J1aWxkX2h2bShsaWJ4 bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0g ICAgcmMgPSBodm1fYnVpbGRfc2V0X3hzX3ZhbHVlcyhnYywgZG9taWQsICZhcmdzKTsKKyAgICBy YyA9IGh2bV9idWlsZF9zZXRfeHNfdmFsdWVzKGdjLCBkb21pZCwgZG9tKTsKICAgICBpZiAocmMg IT0gMCkgewogICAgICAgICBMT0coRVJST1IsICJodm0gYnVpbGQgc2V0IHhlbnN0b3JlIHZhbHVl cyBmYWlsZWQiKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCisgICAgeGNfZG9tX3JlbGVh c2UoZG9tKTsKICAgICByZXR1cm4gMDsKKwogb3V0OgogICAgIGFzc2VydChyYyAhPSAwKTsKKyAg ICBpZiAoZG9tICE9IE5VTEwpIHhjX2RvbV9yZWxlYXNlKGRvbSk7CiAgICAgcmV0dXJuIHJjOwog fQogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGli eGwvbGlieGxfaW50ZXJuYWwuaAppbmRleCA2ZWE2YzgzLi5lYTg5ZjFmIDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVy bmFsLmgKQEAgLTE1OTQsNyArMTU5NCw3IEBAIF9oaWRkZW4gaW50IGxpYnhsX19uZWVkX3hlbnB2 X3FlbXUobGlieGxfX2djICpnYywKIF9oaWRkZW4gaW50IGxpYnhsX19kb21haW5fZGV2aWNlX2Nv bnN0cnVjdF9yZG0obGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJkbV9tZW1fZ3VhcmQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19odm1fYnVpbGRfYXJncyAqYXJncyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSk7 CiAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2F1c2UgdGhlIHdob2xlIGxpYnhsIHByb2Nl c3MgdG8gaGFuZwpAQCAtMzc1Miw3ICszNzUyLDcgQEAgaW50IGxpYnhsX192bnVtYV9idWlsZF92 bWVtcmFuZ2VfaHZtKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmJfaW5mbywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX2J1aWxkX3N0YXRlICpzdGF0ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2Fy Z3MgKmFyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4 Y19kb21faW1hZ2UgKmRvbSk7CiBib29sIGxpYnhsX192bnVtYV9jb25maWd1cmVkKGNvbnN0IGxp YnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8pOwogCiBfaGlkZGVuIGludCBsaWJ4bF9fbXNf dm1fZ2VuaWRfc2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLApkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvbGlieGxfdm51bWEuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3ZudW1hLmMKaW5k ZXggNTY4NTZkMi4uZGIyMjc5OSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdm51bWEu YworKysgYi90b29scy9saWJ4bC9saWJ4bF92bnVtYS5jCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5j bHVkZSAibGlieGxfYXJjaC5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCisjaW5jbHVkZSA8eGNf ZG9tLmg+CisKIGJvb2wgbGlieGxfX3ZudW1hX2NvbmZpZ3VyZWQoY29uc3QgbGlieGxfZG9tYWlu X2J1aWxkX2luZm8gKmJfaW5mbykKIHsKICAgICByZXR1cm4gYl9pbmZvLT5udW1fdm51bWFfbm9k ZXMgIT0gMDsKQEAgLTI1Miw3ICsyNTQsNyBAQCBpbnQgbGlieGxfX3ZudW1hX2J1aWxkX3ZtZW1y YW5nZV9odm0obGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9pbmZvLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgKnN0YXRlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19odm1fYnVpbGRfYXJncyAq YXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20pCiB7CiAgICAgdWludDY0X3QgaG9sZV9zdGFydCwgaG9sZV9lbmQsIG5leHQ7 CiAgICAgaW50IG5pZCwgbnJfdm1lbXJhbmdlOwpAQCAtMjY0LDEwICsyNjYsMTAgQEAgaW50IGxp YnhsX192bnVtYV9idWlsZF92bWVtcmFuZ2VfaHZtKGxpYnhsX19nYyAqZ2MsCiAgICAgICogR3Vl c3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBsYXlvdXQ6CiAgICAgICogWzAsIGhvbGVfc3RhcnQp IFtob2xlX3N0YXJ0LCBob2xlX2VuZCkgW2hvbGVfZW5kLCBoaWdobWVtX2VuZCkKICAgICAgKi8K LSAgICBob2xlX3N0YXJ0ID0gYXJncy0+bG93bWVtX2VuZCA8IGFyZ3MtPm1taW9fc3RhcnQgPwot ICAgICAgICBhcmdzLT5sb3dtZW1fZW5kIDogYXJncy0+bW1pb19zdGFydDsKLSAgICBob2xlX2Vu ZCA9IChhcmdzLT5tbWlvX3N0YXJ0ICsgYXJncy0+bW1pb19zaXplKSA+ICgxVUxMIDw8IDMyKSA/ Ci0gICAgICAgIChhcmdzLT5tbWlvX3N0YXJ0ICsgYXJncy0+bW1pb19zaXplKSA6ICgxVUxMIDw8 IDMyKTsKKyAgICBob2xlX3N0YXJ0ID0gZG9tLT5sb3dtZW1fZW5kIDwgZG9tLT5tbWlvX3N0YXJ0 ID8KKyAgICAgICAgZG9tLT5sb3dtZW1fZW5kIDogZG9tLT5tbWlvX3N0YXJ0OworICAgIGhvbGVf ZW5kID0gKGRvbS0+bW1pb19zdGFydCArIGRvbS0+bW1pb19zaXplKSA+ICgxVUxMIDw8IDMyKSA/ CisgICAgICAgIChkb20tPm1taW9fc3RhcnQgKyBkb20tPm1taW9fc2l6ZSkgOiAoMVVMTCA8PCAz Mik7CiAKICAgICBhc3NlcnQoc3RhdGUtPnZtZW1yYW5nZXMgPT0gTlVMTCk7CiAKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMKaW5k ZXggODk2ZjM0Yy4uOTI3NjEyNiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMK KysrIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMKQEAgLTEsNiArMSw4IEBACiAjaW5jbHVkZSAi bGlieGxfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJsaWJ4bF9hcmNoLmgiCiAKKyNpbmNsdWRlIDx4 Y19kb20uaD4KKwogaW50IGxpYnhsX19hcmNoX2RvbWFpbl9wcmVwYXJlX2NvbmZpZyhsaWJ4bF9f Z2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21h aW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeGNfZG9tYWluX2NvbmZpZ3VyYXRpb25fdCAqeGNfY29uZmlnKQpAQCAtNDczLDcgKzQ3NSw3 IEBAIGludCBsaWJ4bF9fYXJjaF9kb21haW5fbWFwX2lycShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJf dCBkb21pZCwgaW50IGlycSkKIGludCBsaWJ4bF9fYXJjaF9kb21haW5fY29uc3RydWN0X21lbW1h cChsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19odm1fYnVpbGRfYXJncyAqYXJncykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p CiB7CiAgICAgaW50IHJjID0gMDsKICAgICB1bnNpZ25lZCBpbnQgbnIgPSAwLCBpOwpAQCAtNDgx LDcgKzQ4Myw3IEBAIGludCBsaWJ4bF9fYXJjaF9kb21haW5fY29uc3RydWN0X21lbW1hcChsaWJ4 bF9fZ2MgKmdjLAogICAgIHVuc2lnbmVkIGludCBlODIwX2VudHJpZXMgPSAxOwogICAgIHN0cnVj dCBlODIwZW50cnkgKmU4MjAgPSBOVUxMOwogICAgIHVpbnQ2NF90IGhpZ2htZW1fc2l6ZSA9Ci0g ICAgICAgICAgICAgICAgICAgIGFyZ3MtPmhpZ2htZW1fZW5kID8gYXJncy0+aGlnaG1lbV9lbmQg LSAoMXVsbCA8PCAzMikgOiAwOworICAgICAgICAgICAgICAgICAgICBkb20tPmhpZ2htZW1fZW5k ID8gZG9tLT5oaWdobWVtX2VuZCAtICgxdWxsIDw8IDMyKSA6IDA7CiAKICAgICAvKiBBZGQgYWxs IHJkbSBlbnRyaWVzLiAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBkX2NvbmZpZy0+bnVtX3JkbXM7 IGkrKykKQEAgLTUwMyw3ICs1MDUsNyBAQCBpbnQgbGlieGxfX2FyY2hfZG9tYWluX2NvbnN0cnVj dF9tZW1tYXAobGlieGxfX2djICpnYywKIAogICAgIC8qIExvdyBtZW1vcnkgKi8KICAgICBlODIw W25yXS5hZGRyID0gR1VFU1RfTE9XX01FTV9TVEFSVF9ERUZBVUxUOwotICAgIGU4MjBbbnJdLnNp emUgPSBhcmdzLT5sb3dtZW1fZW5kIC0gR1VFU1RfTE9XX01FTV9TVEFSVF9ERUZBVUxUOworICAg IGU4MjBbbnJdLnNpemUgPSBkb20tPmxvd21lbV9lbmQgLSBHVUVTVF9MT1dfTUVNX1NUQVJUX0RF RkFVTFQ7CiAgICAgZTgyMFtucl0udHlwZSA9IEU4MjBfUkFNOwogICAgIG5yKys7CiAKLS0gCjEu OS41IChBcHBsZSBHaXQtNTAuMykKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=