From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v4 10/31] libxl: switch HVM domain building to use xc_dom_* helpers Date: Fri, 7 Aug 2015 12:17:47 +0200 Message-ID: <1438942688-7610-11-git-send-email-roger.pau@citrix.com> References: <1438942688-7610-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 1ZNf9S-0000kN-K4 for xen-devel@lists.xenproject.org; Fri, 07 Aug 2015 10:45:26 +0000 In-Reply-To: <1438942688-7610-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 LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogU3Rl ZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUuY2l0cml4LmNvbT4KQ2M6IElh biBDYW1wYmVsbCA8aWFuLmNhbXBiZWxsQGNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgotLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2FyY2guaCAgICAgfCAgIDIgKy0K IHRvb2xzL2xpYnhsL2xpYnhsX2RtLmMgICAgICAgfCAgMTggKystLQogdG9vbHMvbGlieGwvbGli eGxfZG9tLmMgICAgICB8IDIyNyArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tCiB0b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIHwgICA0ICstCiB0b29scy9saWJ4 bC9saWJ4bF92bnVtYS5jICAgIHwgIDEyICsrLQogdG9vbHMvbGlieGwvbGlieGxfeDg2LmMgICAg ICB8ICAgOCArLQogNiBmaWxlcyBjaGFuZ2VkLCAxNTUgaW5zZXJ0aW9ucygrKSwgMTE2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2FyY2guaCBiL3Rvb2xzL2xp YnhsL2xpYnhsX2FyY2guaAppbmRleCBiZDAzMGI2Li4zNGE4NTNjIDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC9saWJ4bF9hcmNoLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfYXJjaC5oCkBAIC02 MCw2ICs2MCw2IEBAIF9oaWRkZW4KIGludCBsaWJ4bF9fYXJjaF9kb21haW5fY29uc3RydWN0X21l bW1hcChsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19odm1fYnVpbGRfYXJncyAqYXJncyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kbS5jIGIvdG9v bHMvbGlieGwvbGlieGxfZG0uYwppbmRleCAwMmMwMTYyLi5mNmI0Yzg5IDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bF9kbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMKQEAgLTE4 LDYgKzE4LDggQEAKICNpbmNsdWRlICJsaWJ4bF9vc2RlcHMuaCIgLyogbXVzdCBjb21lIGJlZm9y ZSBhbnkgb3RoZXIgaGVhZGVycyAqLwogCiAjaW5jbHVkZSAibGlieGxfaW50ZXJuYWwuaCIKKwor I2luY2x1ZGUgPHhjX2RvbS5oPgogI2luY2x1ZGUgPHhlbi9odm0vZTgyMC5oPgogCiBzdGF0aWMg Y29uc3QgY2hhciAqbGlieGxfdGFwaWZfc2NyaXB0KGxpYnhsX19nYyAqZ2MpCkBAIC0xODEsNyAr MTgzLDcgQEAgYWRkX3JkbV9lbnRyeShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kb21haW5fY29uZmln ICpkX2NvbmZpZywKIGludCBsaWJ4bF9fZG9tYWluX2RldmljZV9jb25zdHJ1Y3RfcmRtKGxpYnhs X19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9k b21haW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IHJkbV9tZW1fYm91bmRhcnksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmFyZ3MpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p CiB7CiAgICAgaW50IGksIGosIGNvbmZsaWN0LCByYzsKICAgICBzdHJ1Y3QgeGVuX3Jlc2VydmVk X2RldmljZV9tZW1vcnkgKnhyZG0gPSBOVUxMOwpAQCAtMTg5LDcgKzE5MSw3IEBAIGludCBsaWJ4 bF9fZG9tYWluX2RldmljZV9jb25zdHJ1Y3RfcmRtKGxpYnhsX19nYyAqZ2MsCiAgICAgdWludDE2 X3Qgc2VnOwogICAgIHVpbnQ4X3QgYnVzLCBkZXZmbjsKICAgICB1aW50NjRfdCByZG1fc3RhcnQs IHJkbV9zaXplOwotICAgIHVpbnQ2NF90IGhpZ2htZW1fZW5kID0gYXJncy0+aGlnaG1lbV9lbmQg PyBhcmdzLT5oaWdobWVtX2VuZCA6ICgxdWxsPDwzMik7CisgICAgdWludDY0X3QgaGlnaG1lbV9l bmQgPSBkb20tPmhpZ2htZW1fZW5kID8gZG9tLT5oaWdobWVtX2VuZCA6ICgxdWxsPDwzMik7CiAK ICAgICAvKgogICAgICAqIFdlIGp1c3Qgd2FudCB0byBjb25zdHJ1Y3QgUkRNIG9uY2Ugc2luY2Ug UkRNIGlzIHNwZWNpZmljIHRvIHRoZQpAQCAtMzAzLDcgKzMwNSw3IEBAIGludCBsaWJ4bF9fZG9t YWluX2RldmljZV9jb25zdHJ1Y3RfcmRtKGxpYnhsX19nYyAqZ2MsCiAgICAgZm9yIChpID0gMDsg aSA8IGRfY29uZmlnLT5udW1fcmRtczsgaSsrKSB7CiAgICAgICAgIHJkbV9zdGFydCA9IGRfY29u ZmlnLT5yZG1zW2ldLnN0YXJ0OwogICAgICAgICByZG1fc2l6ZSA9IGRfY29uZmlnLT5yZG1zW2ld LnNpemU7Ci0gICAgICAgIGNvbmZsaWN0ID0gb3ZlcmxhcHNfcmRtKDAsIGFyZ3MtPmxvd21lbV9l bmQsIHJkbV9zdGFydCwgcmRtX3NpemUpOworICAgICAgICBjb25mbGljdCA9IG92ZXJsYXBzX3Jk bSgwLCBkb20tPmxvd21lbV9lbmQsIHJkbV9zdGFydCwgcmRtX3NpemUpOwogCiAgICAgICAgIGlm ICghY29uZmxpY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMxNCwxNCArMzE2LDE0IEBA IGludCBsaWJ4bF9fZG9tYWluX2RldmljZV9jb25zdHJ1Y3RfcmRtKGxpYnhsX19nYyAqZ2MsCiAg ICAgICAgICAgICAgKiBXZSB3aWxsIG1vdmUgZG93bndhcmRzIGxvd21lbV9lbmQgc28gd2UgaGF2 ZSB0byBleHBhbmQKICAgICAgICAgICAgICAqIGhpZ2htZW1fZW5kLgogICAgICAgICAgICAgICov Ci0gICAgICAgICAgICBoaWdobWVtX2VuZCArPSAoYXJncy0+bG93bWVtX2VuZCAtIHJkbV9zdGFy dCk7CisgICAgICAgICAgICBoaWdobWVtX2VuZCArPSAoZG9tLT5sb3dtZW1fZW5kIC0gcmRtX3N0 YXJ0KTsKICAgICAgICAgICAgIC8qIE5vdyBtb3ZlIGRvd253YXJkcyBsb3dtZW1fZW5kLiAqLwot ICAgICAgICAgICAgYXJncy0+bG93bWVtX2VuZCA9IHJkbV9zdGFydDsKKyAgICAgICAgICAgIGRv bS0+bG93bWVtX2VuZCA9IHJkbV9zdGFydDsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFN5 bmMgaGlnaG1lbV9lbmQuICovCi0gICAgYXJncy0+aGlnaG1lbV9lbmQgPSBoaWdobWVtX2VuZDsK KyAgICBkb20tPmhpZ2htZW1fZW5kID0gaGlnaG1lbV9lbmQ7CiAKICAgICAvKgogICAgICAqIEZp bmFsbHkgd2UgY2FuIHRha2Ugc2FtZSBwb2xpY3kgdG8gY2hlY2sgbG93bWVtKDwgMkcpIGFuZApA QCAtMzMxLDExICszMzMsMTEgQEAgaW50IGxpYnhsX19kb21haW5fZGV2aWNlX2NvbnN0cnVjdF9y ZG0obGlieGxfX2djICpnYywKICAgICAgICAgcmRtX3N0YXJ0ID0gZF9jb25maWctPnJkbXNbaV0u c3RhcnQ7CiAgICAgICAgIHJkbV9zaXplID0gZF9jb25maWctPnJkbXNbaV0uc2l6ZTsKICAgICAg ICAgLyogRG9lcyB0aGlzIGVudHJ5IGNvbmZsaWN0IHdpdGggbG93bWVtPyAqLwotICAgICAgICBj b25mbGljdCA9IG92ZXJsYXBzX3JkbSgwLCBhcmdzLT5sb3dtZW1fZW5kLAorICAgICAgICBjb25m bGljdCA9IG92ZXJsYXBzX3JkbSgwLCBkb20tPmxvd21lbV9lbmQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJkbV9zdGFydCwgcmRtX3NpemUpOwogICAgICAgICAvKiBEb2VzIHRo aXMgZW50cnkgY29uZmxpY3Qgd2l0aCBoaWdobWVtPyAqLwogICAgICAgICBjb25mbGljdCB8PSBv dmVybGFwc19yZG0oKDFVTEw8PDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFyZ3MtPmhpZ2htZW1fZW5kIC0gKDFVTEw8PDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvbS0+aGlnaG1lbV9lbmQgLSAoMVVMTDw8MzIpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmRtX3N0YXJ0LCByZG1fc2l6ZSk7CiAKICAgICAgICAgaWYgKCFj b25mbGljdCkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGli eGwvbGlieGxfZG9tLmMKaW5kZXggOTJjNDI3OC4uYmY5YjY1ZiAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGwvbGlieGxfZG9tLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKQEAgLTYwMiw2 ICs2MDIsNjMgQEAgc3RhdGljIGludCBzZXRfdm51bWFfaW5mbyhsaWJ4bF9fZ2MgKmdjLCB1aW50 MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgbGlieGxfX2J1aWxk X2RvbShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICBsaWJ4bF9k b21haW5fYnVpbGRfaW5mbyAqaW5mbywgbGlieGxfX2RvbWFpbl9idWlsZF9zdGF0ZSAqc3RhdGUs CisgICAgICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQoreworICAgIHVpbnQ2NF90 IG1lbV9rYjsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCAocmV0ID0geGNfZG9tX2Jvb3RfeGVu X2luaXQoZG9tLCBDVFgtPnhjaCwgZG9taWQpKSAhPSAwICkgeworICAgICAgICBMT0dFKEVSUk9S LCAieGNfZG9tX2Jvb3RfeGVuX2luaXQgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKyNpZmRlZiBHVUVTVF9SQU1fQkFTRQorICAgIGlmICggKHJldCA9IHhjX2RvbV9yYW1iYXNl X2luaXQoZG9tLCBHVUVTVF9SQU1fQkFTRSkpICE9IDAgKSB7CisgICAgICAgIExPR0UoRVJST1Is ICJ4Y19kb21fcmFtYmFzZSBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorI2Vu ZGlmCisgICAgaWYgKCAocmV0ID0geGNfZG9tX3BhcnNlX2ltYWdlKGRvbSkpICE9IDAgKSB7Cisg ICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fcGFyc2VfaW1hZ2UgZmFpbGVkIik7CisgICAgICAg IGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAoIChyZXQgPSBsaWJ4bF9fYXJjaF9kb21haW5faW5p dF9od19kZXNjcmlwdGlvbihnYywgaW5mbywgc3RhdGUsIGRvbSkpICE9IDAgKSB7CisgICAgICAg IExPR0UoRVJST1IsICJsaWJ4bF9fYXJjaF9kb21haW5faW5pdF9od19kZXNjcmlwdGlvbiBmYWls ZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbWVtX2tiID0gZG9tLT5jb250 YWluZXJfdHlwZSA9PSBYQ19ET01fSFZNX0NPTlRBSU5FUiA/CisgICAgICAgICAgICAgKGluZm8t Pm1heF9tZW1rYiAtIGluZm8tPnZpZGVvX21lbWtiKSA6IGluZm8tPnRhcmdldF9tZW1rYjsKKyAg ICBpZiAoIChyZXQgPSB4Y19kb21fbWVtX2luaXQoZG9tLCBtZW1fa2IgLyAxMDI0KSkgIT0gMCAp IHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9tZW1faW5pdCBmYWlsZWQiKTsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorICAgIGlmICggKHJldCA9IHhjX2RvbV9ib290X21lbV9pbml0 KGRvbSkpICE9IDAgKSB7CisgICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fYm9vdF9tZW1faW5p dCBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlmICggKHJldCA9IGxp YnhsX19hcmNoX2RvbWFpbl9maW5hbGlzZV9od19kZXNjcmlwdGlvbihnYywgaW5mbywgZG9tKSkg IT0gMCApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgImxpYnhsX19hcmNoX2RvbWFpbl9maW5hbGlz ZV9od19kZXNjcmlwdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAg IGlmICggKHJldCA9IHhjX2RvbV9idWlsZF9pbWFnZShkb20pKSAhPSAwICkgeworICAgICAgICBM T0dFKEVSUk9SLCAieGNfZG9tX2J1aWxkX2ltYWdlIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91 dDsKKyAgICB9CisgICAgaWYgKCAocmV0ID0geGNfZG9tX2Jvb3RfaW1hZ2UoZG9tKSkgIT0gMCAp IHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9ib290X2ltYWdlIGZhaWxlZCIpOworICAg ICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKCAocmV0ID0geGNfZG9tX2dudHRhYl9pbml0 KGRvbSkpICE9IDAgKSB7CisgICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fZ250dGFiX2luaXQg ZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworb3V0OgorICAgIHJldHVybiBy ZXQgIT0gMCA/IEVSUk9SX0ZBSUwgOiAwOworfQorCiBpbnQgbGlieGxfX2J1aWxkX3B2KGxpYnhs X19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9idWls ZF9pbmZvICppbmZvLCBsaWJ4bF9fZG9tYWluX2J1aWxkX3N0YXRlICpzdGF0ZSkKIHsKQEAgLTY5 Miw0OCArNzQ5LDkgQEAgaW50IGxpYnhsX19idWlsZF9wdihsaWJ4bF9fZ2MgKmdjLCB1aW50MzJf dCBkb21pZCwKICAgICAgICAgICAgIGRvbS0+dm5vZGVfdG9fcG5vZGVbaV0gPSBpbmZvLT52bnVt YV9ub2Rlc1tpXS5wbm9kZTsKICAgICB9CiAKLSAgICBpZiAoIChyZXQgPSB4Y19kb21fYm9vdF94 ZW5faW5pdChkb20sIGN0eC0+eGNoLCBkb21pZCkpICE9IDAgKSB7Ci0gICAgICAgIExPR0UoRVJS T1IsICJ4Y19kb21fYm9vdF94ZW5faW5pdCBmYWlsZWQiKTsKLSAgICAgICAgZ290byBvdXQ7Ci0g ICAgfQotI2lmZGVmIEdVRVNUX1JBTV9CQVNFCi0gICAgaWYgKCAocmV0ID0geGNfZG9tX3JhbWJh c2VfaW5pdChkb20sIEdVRVNUX1JBTV9CQVNFKSkgIT0gMCApIHsKLSAgICAgICAgTE9HRShFUlJP UiwgInhjX2RvbV9yYW1iYXNlIGZhaWxlZCIpOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0j ZW5kaWYKLSAgICBpZiAoIChyZXQgPSB4Y19kb21fcGFyc2VfaW1hZ2UoZG9tKSkgIT0gMCApIHsK LSAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9wYXJzZV9pbWFnZSBmYWlsZWQiKTsKLSAgICAg ICAgZ290byBvdXQ7Ci0gICAgfQotICAgIGlmICggKHJldCA9IGxpYnhsX19hcmNoX2RvbWFpbl9p bml0X2h3X2Rlc2NyaXB0aW9uKGdjLCBpbmZvLCBzdGF0ZSwgZG9tKSkgIT0gMCApIHsKLSAgICAg ICAgTE9HRShFUlJPUiwgImxpYnhsX19hcmNoX2RvbWFpbl9pbml0X2h3X2Rlc2NyaXB0aW9uIGZh aWxlZCIpOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0gICAgaWYgKCAocmV0ID0geGNfZG9t X21lbV9pbml0KGRvbSwgaW5mby0+dGFyZ2V0X21lbWtiIC8gMTAyNCkpICE9IDAgKSB7Ci0gICAg ICAgIExPR0UoRVJST1IsICJ4Y19kb21fbWVtX2luaXQgZmFpbGVkIik7Ci0gICAgICAgIGdvdG8g b3V0OwotICAgIH0KLSAgICBpZiAoIChyZXQgPSB4Y19kb21fYm9vdF9tZW1faW5pdChkb20pKSAh PSAwICkgewotICAgICAgICBMT0dFKEVSUk9SLCAieGNfZG9tX2Jvb3RfbWVtX2luaXQgZmFpbGVk Iik7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICBpZiAoIChyZXQgPSBsaWJ4bF9fYXJj aF9kb21haW5fZmluYWxpc2VfaHdfZGVzY3JpcHRpb24oZ2MsIGluZm8sIGRvbSkpICE9IDAgKSB7 Ci0gICAgICAgIExPR0UoRVJST1IsICJsaWJ4bF9fYXJjaF9kb21haW5fZmluYWxpc2VfaHdfZGVz Y3JpcHRpb24gZmFpbGVkIik7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICBpZiAoIChy ZXQgPSB4Y19kb21fYnVpbGRfaW1hZ2UoZG9tKSkgIT0gMCApIHsKLSAgICAgICAgTE9HRShFUlJP UiwgInhjX2RvbV9idWlsZF9pbWFnZSBmYWlsZWQiKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAg fQotICAgIGlmICggKHJldCA9IHhjX2RvbV9ib290X2ltYWdlKGRvbSkpICE9IDAgKSB7Ci0gICAg ICAgIExPR0UoRVJST1IsICJ4Y19kb21fYm9vdF9pbWFnZSBmYWlsZWQiKTsKKyAgICByZXQgPSBs aWJ4bF9fYnVpbGRfZG9tKGdjLCBkb21pZCwgaW5mbywgc3RhdGUsIGRvbSk7CisgICAgaWYgKHJl dCAhPSAwKQogICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0gICAgaWYgKCAocmV0ID0geGNfZG9t X2dudHRhYl9pbml0KGRvbSkpICE9IDAgKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21f Z250dGFiX2luaXQgZmFpbGVkIik7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KIAogICAgIGlm ICh4Y19kb21fZmVhdHVyZV90cmFuc2xhdGVkKGRvbSkpIHsKICAgICAgICAgc3RhdGUtPmNvbnNv bGVfbWZuID0gZG9tLT5jb25zb2xlX3BmbjsKQEAgLTc5MywzOSArODExLDM5IEBAIHN0YXRpYyBp bnQgaHZtX2J1aWxkX3NldF9wYXJhbXMoeGNfaW50ZXJmYWNlICpoYW5kbGUsIHVpbnQzMl90IGRv bWlkLAogCiBzdGF0aWMgaW50IGh2bV9idWlsZF9zZXRfeHNfdmFsdWVzKGxpYnhsX19nYyAqZ2Ms CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3Mg KmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSkKIHsKICAgICBjaGFyICpwYXRoID0gTlVMTDsKICAgICBpbnQgcmV0ID0gMDsK IAotICAgIGlmIChhcmdzLT5zbWJpb3NfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0KSB7CisgICAgaWYg KGRvbS0+c21iaW9zX21vZHVsZS5ndWVzdF9hZGRyX291dCkgewogICAgICAgICBwYXRoID0gR0NT UFJJTlRGKCIvbG9jYWwvZG9tYWluLyVkLyJIVk1fWFNfU01CSU9TX1BUX0FERFJFU1MsIGRvbWlk KTsKIAogICAgICAgICByZXQgPSBsaWJ4bF9feHNfd3JpdGUoZ2MsIFhCVF9OVUxMLCBwYXRoLCAi MHglIlBSSXg2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPnNtYmlvc19t b2R1bGUuZ3Vlc3RfYWRkcl9vdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9t LT5zbWJpb3NfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0KTsKICAgICAgICAgaWYgKHJldCkKICAgICAg ICAgICAgIGdvdG8gZXJyOwogCiAgICAgICAgIHBhdGggPSBHQ1NQUklOVEYoIi9sb2NhbC9kb21h aW4vJWQvIkhWTV9YU19TTUJJT1NfUFRfTEVOR1RILCBkb21pZCk7CiAKICAgICAgICAgcmV0ID0g bGlieGxfX3hzX3dyaXRlKGdjLCBYQlRfTlVMTCwgcGF0aCwgIjB4JXgiLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJncy0+c21iaW9zX21vZHVsZS5sZW5ndGgpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9tLT5zbWJpb3NfbW9kdWxlLmxlbmd0aCk7CiAgICAgICAg IGlmIChyZXQpCiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICB9CiAKLSAgICBpZiAoYXJncy0+ YWNwaV9tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQpIHsKKyAgICBpZiAoZG9tLT5hY3BpX21vZHVsZS5n dWVzdF9hZGRyX291dCkgewogICAgICAgICBwYXRoID0gR0NTUFJJTlRGKCIvbG9jYWwvZG9tYWlu LyVkLyJIVk1fWFNfQUNQSV9QVF9BRERSRVNTLCBkb21pZCk7CiAKICAgICAgICAgcmV0ID0gbGli eGxfX3hzX3dyaXRlKGdjLCBYQlRfTlVMTCwgcGF0aCwgIjB4JSJQUkl4NjQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcmdzLT5hY3BpX21vZHVsZS5ndWVzdF9hZGRyX291dCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20tPmFjcGlfbW9kdWxlLmd1ZXN0X2FkZHJf b3V0KTsKICAgICAgICAgaWYgKHJldCkKICAgICAgICAgICAgIGdvdG8gZXJyOwogCiAgICAgICAg IHBhdGggPSBHQ1NQUklOVEYoIi9sb2NhbC9kb21haW4vJWQvIkhWTV9YU19BQ1BJX1BUX0xFTkdU SCwgZG9taWQpOwogCiAgICAgICAgIHJldCA9IGxpYnhsX194c193cml0ZShnYywgWEJUX05VTEws IHBhdGgsICIweCV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmFjcGlf bW9kdWxlLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20tPmFjcGlf bW9kdWxlLmxlbmd0aCk7CiAgICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgICBnb3RvIGVycjsK ICAgICB9CkBAIC04MzksNyArODU3LDcgQEAgZXJyOgogCiBzdGF0aWMgaW50IGxpYnhsX19kb21h aW5fZmlybXdhcmUobGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmFyZ3MpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogewogICAg IGxpYnhsX2N0eCAqY3R4ID0gbGlieGxfX2djX293bmVyKGdjKTsKICAgICBjb25zdCBjaGFyICpm aXJtd2FyZTsKQEAgLTg2NSw4ICs4ODMsMTMgQEAgc3RhdGljIGludCBsaWJ4bF9fZG9tYWluX2Zp cm13YXJlKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg IH0KLSAgICBhcmdzLT5pbWFnZV9maWxlX25hbWUgPSBsaWJ4bF9fYWJzX3BhdGgoZ2MsIGZpcm13 YXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9f eGVuZmlybXdhcmVkaXJfcGF0aCgpKTsKKworICAgIHJjID0geGNfZG9tX2tlcm5lbF9maWxlKGRv bSwgbGlieGxfX2Fic19wYXRoKGdjLCBmaXJtd2FyZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feGVuZmlybXdhcmVkaXJfcGF0aCgpKSk7 CisgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9rZXJuZWxf ZmlsZSBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQogCiAgICAgaWYgKGluZm8t PnUuaHZtLnNtYmlvc19maXJtd2FyZSkgewogICAgICAgICBkYXRhID0gTlVMTDsKQEAgLTg4MCw4 ICs5MDMsOCBAQCBzdGF0aWMgaW50IGxpYnhsX19kb21haW5fZmlybXdhcmUobGlieGxfX2djICpn YywKICAgICAgICAgbGlieGxfX3B0cl9hZGQoZ2MsIGRhdGEpOwogICAgICAgICBpZiAoZGF0YWxl bikgewogICAgICAgICAgICAgLyogT25seSBhY2NlcHQgbm9uLWVtcHR5IGZpbGVzICovCi0gICAg ICAgICAgICBhcmdzLT5zbWJpb3NfbW9kdWxlLmRhdGEgPSBkYXRhOwotICAgICAgICAgICAgYXJn cy0+c21iaW9zX21vZHVsZS5sZW5ndGggPSAodWludDMyX3QpZGF0YWxlbjsKKyAgICAgICAgICAg IGRvbS0+c21iaW9zX21vZHVsZS5kYXRhID0gZGF0YTsKKyAgICAgICAgICAgIGRvbS0+c21iaW9z X21vZHVsZS5sZW5ndGggPSAodWludDMyX3QpZGF0YWxlbjsKICAgICAgICAgfQogICAgIH0KIApA QCAtODk3LDggKzkyMCw4IEBAIHN0YXRpYyBpbnQgbGlieGxfX2RvbWFpbl9maXJtd2FyZShsaWJ4 bF9fZ2MgKmdjLAogICAgICAgICBsaWJ4bF9fcHRyX2FkZChnYywgZGF0YSk7CiAgICAgICAgIGlm IChkYXRhbGVuKSB7CiAgICAgICAgICAgICAvKiBPbmx5IGFjY2VwdCBub24tZW1wdHkgZmlsZXMg Ki8KLSAgICAgICAgICAgIGFyZ3MtPmFjcGlfbW9kdWxlLmRhdGEgPSBkYXRhOwotICAgICAgICAg ICAgYXJncy0+YWNwaV9tb2R1bGUubGVuZ3RoID0gKHVpbnQzMl90KWRhdGFsZW47CisgICAgICAg ICAgICBkb20tPmFjcGlfbW9kdWxlLmRhdGEgPSBkYXRhOworICAgICAgICAgICAgZG9tLT5hY3Bp X21vZHVsZS5sZW5ndGggPSAodWludDMyX3QpZGF0YWxlbjsKICAgICAgICAgfQogICAgIH0KIApA QCAtOTEyLDUyICs5MzUsNjIgQEAgaW50IGxpYnhsX19idWlsZF9odm0obGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUg KnN0YXRlKQogewogICAgIGxpYnhsX2N0eCAqY3R4ID0gbGlieGxfX2djX293bmVyKGdjKTsKLSAg ICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgYXJncyA9IHt9OwotICAgIGludCByZXQsIHJjOwot ICAgIHVpbnQ2NF90IG1taW9fc3RhcnQsIGxvd21lbV9lbmQsIGhpZ2htZW1fZW5kOworICAgIGlu dCByYzsKKyAgICB1aW50NjRfdCBtbWlvX3N0YXJ0LCBsb3dtZW1fZW5kLCBoaWdobWVtX2VuZCwg bWVtX3NpemU7CiAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmNvbnN0IGluZm8gPSAmZF9j b25maWctPmJfaW5mbzsKKyAgICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20gPSBOVUxMOworCisg ICAgeGNfZG9tX2xvZ2luaXQoY3R4LT54Y2gpOworCisgICAgZG9tID0geGNfZG9tX2FsbG9jYXRl KGN0eC0+eGNoLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoIWRvbSkgeworICAgICAgICBMT0dFKEVS Uk9SLCAieGNfZG9tX2FsbG9jYXRlIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9 CisKKyAgICBkb20tPmNvbnRhaW5lcl90eXBlID0gWENfRE9NX0hWTV9DT05UQUlORVI7CiAKLSAg ICBtZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MpKTsKICAg ICAvKiBUaGUgcGFyYW1zIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhcmUgaW4gTWIsIHdo aWNoIGFyZSB0aGVuCiAgICAgICogbXVsdGlwbGllZCBieSAxIEtiLiBUaGlzIHdhcyB0aGVuIGRp dmlkZWQgb2ZmIHdoZW4gY2FsbGluZwogICAgICAqIHRoZSBvbGQgeGNfaHZtX2J1aWxkX3Rhcmdl dF9tZW0oKSB3aGljaCB0aGVuIHR1cm5lZCB0aGVtIHRvIGJ5dGVzLgogICAgICAqIERvIGFsbCB0 aGlzIGluIG9uZSBzdGVwIGhlcmUuLi4KICAgICAgKi8KLSAgICBhcmdzLm1lbV9zaXplID0gKHVp bnQ2NF90KShpbmZvLT5tYXhfbWVta2IgLSBpbmZvLT52aWRlb19tZW1rYikgPDwgMTA7Ci0gICAg YXJncy5tZW1fdGFyZ2V0ID0gKHVpbnQ2NF90KShpbmZvLT50YXJnZXRfbWVta2IgLSBpbmZvLT52 aWRlb19tZW1rYikgPDwgMTA7Ci0gICAgYXJncy5jbGFpbV9lbmFibGVkID0gbGlieGxfZGVmYm9v bF92YWwoaW5mby0+Y2xhaW1fbW9kZSk7CisgICAgbWVtX3NpemUgPSAodWludDY0X3QpKGluZm8t Pm1heF9tZW1rYiAtIGluZm8tPnZpZGVvX21lbWtiKSA8PCAxMDsKKyAgICBkb20tPnRhcmdldF9w YWdlcyA9ICh1aW50NjRfdCkoaW5mby0+dGFyZ2V0X21lbWtiIC0gaW5mby0+dmlkZW9fbWVta2Ip ID4+IDI7CisgICAgZG9tLT5jbGFpbV9lbmFibGVkID0gbGlieGxfZGVmYm9vbF92YWwoaW5mby0+ Y2xhaW1fbW9kZSk7CiAgICAgaWYgKGluZm8tPnUuaHZtLm1taW9faG9sZV9tZW1rYikgewogICAg ICAgICB1aW50NjRfdCBtYXhfcmFtX2JlbG93XzRnID0gKDFVTEwgPDwgMzIpIC0KICAgICAgICAg ICAgIChpbmZvLT51Lmh2bS5tbWlvX2hvbGVfbWVta2IgPDwgMTApOwogCiAgICAgICAgIGlmICht YXhfcmFtX2JlbG93XzRnIDwgSFZNX0JFTE9XXzRHX01NSU9fU1RBUlQpCi0gICAgICAgICAgICBh cmdzLm1taW9fc2l6ZSA9IGluZm8tPnUuaHZtLm1taW9faG9sZV9tZW1rYiA8PCAxMDsKKyAgICAg ICAgICAgIGRvbS0+bW1pb19zaXplID0gaW5mby0+dS5odm0ubW1pb19ob2xlX21lbWtiIDw8IDEw OwogICAgIH0KIAotICAgIHJjID0gbGlieGxfX2RvbWFpbl9maXJtd2FyZShnYywgaW5mbywgJmFy Z3MpOworICAgIHJjID0gbGlieGxfX2RvbWFpbl9maXJtd2FyZShnYywgaW5mbywgZG9tKTsKICAg ICBpZiAocmMgIT0gMCkgewogICAgICAgICBMT0coRVJST1IsICJpbml0aWFsaXppbmcgZG9tYWlu IGZpcm13YXJlIGZhaWxlZCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gICAgaWYgKGFy Z3MubWVtX3RhcmdldCA9PSAwKQotICAgICAgICBhcmdzLm1lbV90YXJnZXQgPSBhcmdzLm1lbV9z aXplOwotICAgIGlmIChhcmdzLm1taW9fc2l6ZSA9PSAwKQotICAgICAgICBhcmdzLm1taW9fc2l6 ZSA9IEhWTV9CRUxPV180R19NTUlPX0xFTkdUSDsKLSAgICBsb3dtZW1fZW5kID0gYXJncy5tZW1f c2l6ZTsKKworICAgIGlmIChkb20tPnRhcmdldF9wYWdlcyA9PSAwKQorICAgICAgICBkb20tPnRh cmdldF9wYWdlcyA9IG1lbV9zaXplID4+IFhDX1BBR0VfU0hJRlQ7CisgICAgaWYgKGRvbS0+bW1p b19zaXplID09IDApCisgICAgICAgIGRvbS0+bW1pb19zaXplID0gSFZNX0JFTE9XXzRHX01NSU9f TEVOR1RIOworICAgIGxvd21lbV9lbmQgPSBtZW1fc2l6ZTsKICAgICBoaWdobWVtX2VuZCA9IDA7 Ci0gICAgbW1pb19zdGFydCA9ICgxdWxsIDw8IDMyKSAtIGFyZ3MubW1pb19zaXplOworICAgIG1t aW9fc3RhcnQgPSAoMXVsbCA8PCAzMikgLSBkb20tPm1taW9fc2l6ZTsKICAgICBpZiAobG93bWVt X2VuZCA+IG1taW9fc3RhcnQpCiAgICAgewogICAgICAgICBoaWdobWVtX2VuZCA9ICgxdWxsIDw8 IDMyKSArIChsb3dtZW1fZW5kIC0gbW1pb19zdGFydCk7CiAgICAgICAgIGxvd21lbV9lbmQgPSBt bWlvX3N0YXJ0OwogICAgIH0KLSAgICBhcmdzLmxvd21lbV9lbmQgPSBsb3dtZW1fZW5kOwotICAg IGFyZ3MuaGlnaG1lbV9lbmQgPSBoaWdobWVtX2VuZDsKLSAgICBhcmdzLm1taW9fc3RhcnQgPSBt bWlvX3N0YXJ0OworICAgIGRvbS0+bG93bWVtX2VuZCA9IGxvd21lbV9lbmQ7CisgICAgZG9tLT5o aWdobWVtX2VuZCA9IGhpZ2htZW1fZW5kOworICAgIGRvbS0+bW1pb19zdGFydCA9IG1taW9fc3Rh cnQ7CiAKICAgICByYyA9IGxpYnhsX19kb21haW5fZGV2aWNlX2NvbnN0cnVjdF9yZG0oZ2MsIGRf Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv LT51Lmh2bS5yZG1fbWVtX2JvdW5kYXJ5X21lbWtiKjEwMjQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9tKTsKICAgICBpZiAocmMpIHsKICAgICAgICAgTE9HKEVS Uk9SLCAiY2hlY2tpbmcgcmVzZXJ2ZWQgZGV2aWNlIG1lbW9yeSBmYWlsZWQiKTsKICAgICAgICAg Z290byBvdXQ7CkBAIC05NjYsNyArOTk5LDcgQEAgaW50IGxpYnhsX19idWlsZF9odm0obGlieGxf X2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgaWYgKGluZm8tPm51bV92bnVtYV9ub2RlcyAh PSAwKSB7CiAgICAgICAgIGludCBpOwogCi0gICAgICAgIHJjID0gbGlieGxfX3ZudW1hX2J1aWxk X3ZtZW1yYW5nZV9odm0oZ2MsIGRvbWlkLCBpbmZvLCBzdGF0ZSwgJmFyZ3MpOworICAgICAgICBy YyA9IGxpYnhsX192bnVtYV9idWlsZF92bWVtcmFuZ2VfaHZtKGdjLCBkb21pZCwgaW5mbywgc3Rh dGUsIGRvbSk7CiAgICAgICAgIGlmIChyYyAhPSAwKSB7CiAgICAgICAgICAgICBMT0coRVJST1Is ICJodm0gYnVpbGQgdm1lbXJhbmdlcyBmYWlsZWQiKTsKICAgICAgICAgICAgIGdvdG8gb3V0OwpA QCAtOTc2LDM3ICsxMDA5LDM0IEBAIGludCBsaWJ4bF9fYnVpbGRfaHZtKGxpYnhsX19nYyAqZ2Ms IHVpbnQzMl90IGRvbWlkLAogICAgICAgICByYyA9IHNldF92bnVtYV9pbmZvKGdjLCBkb21pZCwg aW5mbywgc3RhdGUpOwogICAgICAgICBpZiAocmMgIT0gMCkgZ290byBvdXQ7CiAKLSAgICAgICAg YXJncy5ucl92bWVtcmFuZ2VzID0gc3RhdGUtPm51bV92bWVtcmFuZ2VzOwotICAgICAgICBhcmdz LnZtZW1yYW5nZXMgPSBsaWJ4bF9fbWFsbG9jKGdjLCBzaXplb2YoKmFyZ3Mudm1lbXJhbmdlcykg KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubnJfdm1lbXJh bmdlcyk7CisgICAgICAgIGRvbS0+bnJfdm1lbXJhbmdlcyA9IHN0YXRlLT5udW1fdm1lbXJhbmdl czsKKyAgICAgICAgZG9tLT52bWVtcmFuZ2VzID0gbGlieGxfX21hbGxvYyhnYywgc2l6ZW9mKCpk b20tPnZtZW1yYW5nZXMpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb20tPm5yX3ZtZW1yYW5nZXMpOwogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdzLm5y X3ZtZW1yYW5nZXM7IGkrKykgewotICAgICAgICAgICAgYXJncy52bWVtcmFuZ2VzW2ldLnN0YXJ0 ID0gc3RhdGUtPnZtZW1yYW5nZXNbaV0uc3RhcnQ7Ci0gICAgICAgICAgICBhcmdzLnZtZW1yYW5n ZXNbaV0uZW5kICAgPSBzdGF0ZS0+dm1lbXJhbmdlc1tpXS5lbmQ7Ci0gICAgICAgICAgICBhcmdz LnZtZW1yYW5nZXNbaV0uZmxhZ3MgPSBzdGF0ZS0+dm1lbXJhbmdlc1tpXS5mbGFnczsKLSAgICAg ICAgICAgIGFyZ3Mudm1lbXJhbmdlc1tpXS5uaWQgICA9IHN0YXRlLT52bWVtcmFuZ2VzW2ldLm5p ZDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRvbS0+bnJfdm1lbXJhbmdlczsgaSsrKSB7Cisg ICAgICAgICAgICBkb20tPnZtZW1yYW5nZXNbaV0uc3RhcnQgPSBzdGF0ZS0+dm1lbXJhbmdlc1tp XS5zdGFydDsKKyAgICAgICAgICAgIGRvbS0+dm1lbXJhbmdlc1tpXS5lbmQgICA9IHN0YXRlLT52 bWVtcmFuZ2VzW2ldLmVuZDsKKyAgICAgICAgICAgIGRvbS0+dm1lbXJhbmdlc1tpXS5mbGFncyA9 IHN0YXRlLT52bWVtcmFuZ2VzW2ldLmZsYWdzOworICAgICAgICAgICAgZG9tLT52bWVtcmFuZ2Vz W2ldLm5pZCAgID0gc3RhdGUtPnZtZW1yYW5nZXNbaV0ubmlkOwogICAgICAgICB9CiAKLSAgICAg ICAgYXJncy5ucl92bm9kZXMgPSBpbmZvLT5udW1fdm51bWFfbm9kZXM7Ci0gICAgICAgIGFyZ3Mu dm5vZGVfdG9fcG5vZGUgPSBsaWJ4bF9fbWFsbG9jKGdjLCBzaXplb2YoKmFyZ3Mudm5vZGVfdG9f cG5vZGUpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn cy5ucl92bm9kZXMpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJncy5ucl92bm9kZXM7IGkr KykKLSAgICAgICAgICAgIGFyZ3Mudm5vZGVfdG9fcG5vZGVbaV0gPSBpbmZvLT52bnVtYV9ub2Rl c1tpXS5wbm9kZTsKLSAgICB9Ci0KLSAgICByZXQgPSB4Y19odm1fYnVpbGQoY3R4LT54Y2gsIGRv bWlkLCAmYXJncyk7Ci0gICAgaWYgKHJldCkgewotICAgICAgICBMT0dFVihFUlJPUiwgcmV0LCAi aHZtIGJ1aWxkaW5nIGZhaWxlZCIpOwotICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgICAg IGdvdG8gb3V0OworICAgICAgICBkb20tPm5yX3Zub2RlcyA9IGluZm8tPm51bV92bnVtYV9ub2Rl czsKKyAgICAgICAgZG9tLT52bm9kZV90b19wbm9kZSA9IGxpYnhsX19tYWxsb2MoZ2MsIHNpemVv ZigqZG9tLT52bm9kZV90b19wbm9kZSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb20tPm5yX3Zub2Rlcyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBk b20tPm5yX3Zub2RlczsgaSsrKQorICAgICAgICAgICAgZG9tLT52bm9kZV90b19wbm9kZVtpXSA9 IGluZm8tPnZudW1hX25vZGVzW2ldLnBub2RlOwogICAgIH0KIAotICAgIHJjID0gbGlieGxfX2Fy Y2hfZG9tYWluX2NvbnN0cnVjdF9tZW1tYXAoZ2MsIGRfY29uZmlnLCBkb21pZCwgJmFyZ3MpOwor ICAgIHJjID0gbGlieGxfX2FyY2hfZG9tYWluX2NvbnN0cnVjdF9tZW1tYXAoZ2MsIGRfY29uZmln LCBkb21pZCwgZG9tKTsKICAgICBpZiAocmMgIT0gMCkgewogICAgICAgICBMT0coRVJST1IsICJz ZXR0aW5nIGRvbWFpbiBtZW1vcnkgbWFwIGZhaWxlZCIpOwogICAgICAgICBnb3RvIG91dDsKICAg ICB9CiAKKyAgICByYyA9IGxpYnhsX19idWlsZF9kb20oZ2MsIGRvbWlkLCBpbmZvLCBzdGF0ZSwg ZG9tKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisKICAgICByYyA9IGh2 bV9idWlsZF9zZXRfcGFyYW1zKGN0eC0+eGNoLCBkb21pZCwgaW5mbywgc3RhdGUtPnN0b3JlX3Bv cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRlLT5zdG9yZV9tZm4sIHN0 YXRlLT5jb25zb2xlX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRl LT5jb25zb2xlX21mbiwgc3RhdGUtPnN0b3JlX2RvbWlkLApAQCAtMTAxNiwxNSArMTA0NiwxOCBA QCBpbnQgbGlieGxfX2J1aWxkX2h2bShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAg ICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgcmMgPSBodm1fYnVpbGRfc2V0X3hzX3ZhbHVl cyhnYywgZG9taWQsICZhcmdzKTsKKyAgICByYyA9IGh2bV9idWlsZF9zZXRfeHNfdmFsdWVzKGdj LCBkb21pZCwgZG9tKTsKICAgICBpZiAocmMgIT0gMCkgewogICAgICAgICBMT0coRVJST1IsICJo dm0gYnVpbGQgc2V0IHhlbnN0b3JlIHZhbHVlcyBmYWlsZWQiKTsKICAgICAgICAgZ290byBvdXQ7 CiAgICAgfQogCisgICAgeGNfZG9tX3JlbGVhc2UoZG9tKTsKICAgICByZXR1cm4gMDsKKwogb3V0 OgogICAgIGFzc2VydChyYyAhPSAwKTsKKyAgICBpZiAoZG9tICE9IE5VTEwpIHhjX2RvbV9yZWxl YXNlKGRvbSk7CiAgICAgcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAppbmRleCA2ZWE2 YzgzLi5lYTg5ZjFmIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAgLTE1OTQsNyArMTU5NCw3IEBAIF9o aWRkZW4gaW50IGxpYnhsX19uZWVkX3hlbnB2X3FlbXUobGlieGxfX2djICpnYywKIF9oaWRkZW4g aW50IGxpYnhsX19kb21haW5fZGV2aWNlX2NvbnN0cnVjdF9yZG0obGlieGxfX2djICpnYywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9j b25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJkbV9t ZW1fZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19o dm1fYnVpbGRfYXJncyAqYXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSk7CiAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwg Y2F1c2UgdGhlIHdob2xlIGxpYnhsIHByb2Nlc3MgdG8gaGFuZwpAQCAtMzc1Miw3ICszNzUyLDcg QEAgaW50IGxpYnhsX192bnVtYV9idWlsZF92bWVtcmFuZ2VfaHZtKGxpYnhsX19nYyAqZ2MsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8g KmJfaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9t YWluX2J1aWxkX3N0YXRlICpzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmFyZ3MpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSk7CiBib29sIGxpYnhs X192bnVtYV9jb25maWd1cmVkKGNvbnN0IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8p OwogCiBfaGlkZGVuIGludCBsaWJ4bF9fbXNfdm1fZ2VuaWRfc2V0KGxpYnhsX19nYyAqZ2MsIHVp bnQzMl90IGRvbWlkLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdm51bWEuYyBiL3Rv b2xzL2xpYnhsL2xpYnhsX3ZudW1hLmMKaW5kZXggNTY4NTZkMi4uZGIyMjc5OSAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfdm51bWEuYworKysgYi90b29scy9saWJ4bC9saWJ4bF92bnVt YS5jCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAibGlieGxfYXJjaC5oIgogI2luY2x1ZGUg PHN0ZGxpYi5oPgogCisjaW5jbHVkZSA8eGNfZG9tLmg+CisKIGJvb2wgbGlieGxfX3ZudW1hX2Nv bmZpZ3VyZWQoY29uc3QgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmJfaW5mbykKIHsKICAgICBy ZXR1cm4gYl9pbmZvLT5udW1fdm51bWFfbm9kZXMgIT0gMDsKQEAgLTI1Miw3ICsyNTQsNyBAQCBp bnQgbGlieGxfX3ZudW1hX2J1aWxkX3ZtZW1yYW5nZV9odm0obGlieGxfX2djICpnYywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9p bmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kb21haW5f YnVpbGRfc3RhdGUgKnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB4Y19odm1fYnVpbGRfYXJncyAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgdWludDY0X3Qg aG9sZV9zdGFydCwgaG9sZV9lbmQsIG5leHQ7CiAgICAgaW50IG5pZCwgbnJfdm1lbXJhbmdlOwpA QCAtMjY0LDEwICsyNjYsMTAgQEAgaW50IGxpYnhsX192bnVtYV9idWlsZF92bWVtcmFuZ2VfaHZt KGxpYnhsX19nYyAqZ2MsCiAgICAgICogR3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBsYXlv dXQ6CiAgICAgICogWzAsIGhvbGVfc3RhcnQpIFtob2xlX3N0YXJ0LCBob2xlX2VuZCkgW2hvbGVf ZW5kLCBoaWdobWVtX2VuZCkKICAgICAgKi8KLSAgICBob2xlX3N0YXJ0ID0gYXJncy0+bG93bWVt X2VuZCA8IGFyZ3MtPm1taW9fc3RhcnQgPwotICAgICAgICBhcmdzLT5sb3dtZW1fZW5kIDogYXJn cy0+bW1pb19zdGFydDsKLSAgICBob2xlX2VuZCA9IChhcmdzLT5tbWlvX3N0YXJ0ICsgYXJncy0+ bW1pb19zaXplKSA+ICgxVUxMIDw8IDMyKSA/Ci0gICAgICAgIChhcmdzLT5tbWlvX3N0YXJ0ICsg YXJncy0+bW1pb19zaXplKSA6ICgxVUxMIDw8IDMyKTsKKyAgICBob2xlX3N0YXJ0ID0gZG9tLT5s b3dtZW1fZW5kIDwgZG9tLT5tbWlvX3N0YXJ0ID8KKyAgICAgICAgZG9tLT5sb3dtZW1fZW5kIDog ZG9tLT5tbWlvX3N0YXJ0OworICAgIGhvbGVfZW5kID0gKGRvbS0+bW1pb19zdGFydCArIGRvbS0+ bW1pb19zaXplKSA+ICgxVUxMIDw8IDMyKSA/CisgICAgICAgIChkb20tPm1taW9fc3RhcnQgKyBk b20tPm1taW9fc2l6ZSkgOiAoMVVMTCA8PCAzMik7CiAKICAgICBhc3NlcnQoc3RhdGUtPnZtZW1y YW5nZXMgPT0gTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jIGIv dG9vbHMvbGlieGwvbGlieGxfeDg2LmMKaW5kZXggYjM3OWUwOS4uYjg4NzQxMSAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMK QEAgLTEsNiArMSw4IEBACiAjaW5jbHVkZSAibGlieGxfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJs aWJ4bF9hcmNoLmgiCiAKKyNpbmNsdWRlIDx4Y19kb20uaD4KKwogaW50IGxpYnhsX19hcmNoX2Rv bWFpbl9wcmVwYXJlX2NvbmZpZyhsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfZG9tYWluX2NvbmZpZ3VyYXRpb25fdCAq eGNfY29uZmlnKQpAQCAtNDczLDcgKzQ3NSw3IEBAIGludCBsaWJ4bF9fYXJjaF9kb21haW5fbWFw X2lycShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwgaW50IGlycSkKIGludCBsaWJ4bF9f YXJjaF9kb21haW5fY29uc3RydWN0X21lbW1hcChsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmln LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19odm1f YnVpbGRfYXJncyAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgaW50IHJjID0gMDsKICAgICB1bnNp Z25lZCBpbnQgbnIgPSAwLCBpOwpAQCAtNDgxLDcgKzQ4Myw3IEBAIGludCBsaWJ4bF9fYXJjaF9k b21haW5fY29uc3RydWN0X21lbW1hcChsaWJ4bF9fZ2MgKmdjLAogICAgIHVuc2lnbmVkIGludCBl ODIwX2VudHJpZXMgPSAxOwogICAgIHN0cnVjdCBlODIwZW50cnkgKmU4MjAgPSBOVUxMOwogICAg IHVpbnQ2NF90IGhpZ2htZW1fc2l6ZSA9Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MtPmhpZ2ht ZW1fZW5kID8gYXJncy0+aGlnaG1lbV9lbmQgLSAoMXVsbCA8PCAzMikgOiAwOworICAgICAgICAg ICAgICAgICAgICBkb20tPmhpZ2htZW1fZW5kID8gZG9tLT5oaWdobWVtX2VuZCAtICgxdWxsIDw8 IDMyKSA6IDA7CiAKICAgICAvKiBBZGQgYWxsIHJkbSBlbnRyaWVzLiAqLwogICAgIGZvciAoaSA9 IDA7IGkgPCBkX2NvbmZpZy0+bnVtX3JkbXM7IGkrKykKQEAgLTUwMyw3ICs1MDUsNyBAQCBpbnQg bGlieGxfX2FyY2hfZG9tYWluX2NvbnN0cnVjdF9tZW1tYXAobGlieGxfX2djICpnYywKIAogICAg IC8qIExvdyBtZW1vcnkgKi8KICAgICBlODIwW25yXS5hZGRyID0gR1VFU1RfTE9XX01FTV9TVEFS VF9ERUZBVUxUOwotICAgIGU4MjBbbnJdLnNpemUgPSBhcmdzLT5sb3dtZW1fZW5kIC0gR1VFU1Rf TE9XX01FTV9TVEFSVF9ERUZBVUxUOworICAgIGU4MjBbbnJdLnNpemUgPSBkb20tPmxvd21lbV9l bmQgLSBHVUVTVF9MT1dfTUVNX1NUQVJUX0RFRkFVTFQ7CiAgICAgZTgyMFtucl0udHlwZSA9IEU4 MjBfUkFNOwogICAgIG5yKys7CiAKLS0gCjEuOS41IChBcHBsZSBHaXQtNTAuMykKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=