From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH RFC v1 07/13] libxl: switch HVM domain building to use xc_dom_* helpers Date: Mon, 22 Jun 2015 18:11:21 +0200 Message-ID: <1434989487-74940-8-git-send-email-roger.pau@citrix.com> References: <1434989487-74940-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.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Z74K1-00081g-KR for xen-devel@lists.xenproject.org; Mon, 22 Jun 2015 16:11:45 +0000 In-Reply-To: <1434989487-74940-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: Elena Ufimtseva , Wei Liu , Ian Campbell , Stefano Stabellini , Andrew Cooper , Ian Jackson , Jan Beulich , Boris Ostrovsky , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org Tm93IHRoYXQgd2UgaGF2ZSBhbGwgdGhlIGNvZGUgaW4gcGxhY2UgSFZNIGRvbWFpbiBidWlsZGlu ZyBpbiBsaWJ4bCBjYW4gYmUKc3dpdGNoZWQgdG8gdXNlIHRoZSB4Y19kb21fKiBmYW1pbHkgb2Yg ZnVuY3Rpb25zLCBqdXN0IGxpa2UgdGhleSBhcmUgdXNlZCBpbgpvcmRlciB0byBidWlsZCBQViBn dWVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4 LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogU3Rl ZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUuY2l0cml4LmNvbT4KQ2M6IElh biBDYW1wYmVsbCA8aWFuLmNhbXBiZWxsQGNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEJvcmlzIE9zdHJvdnNr eSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsg PGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBFbGVuYSBVZmltdHNldmEgPGVsZW5hLnVmaW10 c2V2YUBvcmFjbGUuY29tPgotLS0KVEJIIEhWTSBidWlsZGluZyBzdGlsbCBhdm9pZHMgY2FsbGlu ZyBzb21lIHhjX2RvbV8qIGZ1bmN0aW9ucyB0aGF0IGFyZQpjYWxsZWQgaW4gb3JkZXIgdG8gYnVp bGQgUFYgZ3Vlc3RzLiBJTUhPIHdlIHNob3VsZCBsb29rIGludG8gaGF2aW5nIHRoZQpleGFjdCBz YW1lIGZsb3cgaW4gb3JkZXIgdG8gYnVpbGQgUFYgb3IgSFZNIGRvbWFpbnMsIHNvIGxpYnhsX19i dWlsZF9wdiBhbmQKbGlieGxfX2J1aWxkX2h2bSBjYW4gYmUgdW5pZmllZCBpbnRvIGEgc2luZ2xl IGZ1bmN0aW9uLgotLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2RvbS5jICAgICAgfCAxNDYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogdG9vbHMvbGlieGwvbGlieGxf aW50ZXJuYWwuaCB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGxfdm51bWEuYyAgICB8ICAxMiAr Ky0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kb20uYyBiL3Rvb2xzL2xpYnhsL2xpYnhs X2RvbS5jCmluZGV4IDYyNzMwNTIuLjEyZWRlMjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xp YnhsX2RvbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jCkBAIC04MDEsMzkgKzgwMSwz OSBAQCBzdGF0aWMgaW50IGh2bV9idWlsZF9zZXRfcGFyYW1zKHhjX2ludGVyZmFjZSAqaGFuZGxl LCB1aW50MzJfdCBkb21pZCwKIAogc3RhdGljIGludCBodm1fYnVpbGRfc2V0X3hzX3ZhbHVlcyhs aWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2h2 bV9idWlsZF9hcmdzICphcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgY2hhciAqcGF0aCA9IE5VTEw7CiAgICAg aW50IHJldCA9IDA7CiAKLSAgICBpZiAoYXJncy0+c21iaW9zX21vZHVsZS5ndWVzdF9hZGRyX291 dCkgeworICAgIGlmIChkb20tPnNtYmlvc19tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQpIHsKICAgICAg ICAgcGF0aCA9IEdDU1BSSU5URigiL2xvY2FsL2RvbWFpbi8lZC8iSFZNX1hTX1NNQklPU19QVF9B RERSRVNTLCBkb21pZCk7CiAKICAgICAgICAgcmV0ID0gbGlieGxfX3hzX3dyaXRlKGdjLCBYQlRf TlVMTCwgcGF0aCwgIjB4JSJQUkl4NjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cmdzLT5zbWJpb3NfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvbS0+c21iaW9zX21vZHVsZS5ndWVzdF9hZGRyX291dCk7CiAgICAgICAgIGlm IChyZXQpCiAgICAgICAgICAgICBnb3RvIGVycjsKIAogICAgICAgICBwYXRoID0gR0NTUFJJTlRG KCIvbG9jYWwvZG9tYWluLyVkLyJIVk1fWFNfU01CSU9TX1BUX0xFTkdUSCwgZG9taWQpOwogCiAg ICAgICAgIHJldCA9IGxpYnhsX194c193cml0ZShnYywgWEJUX05VTEwsIHBhdGgsICIweCV4IiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPnNtYmlvc19tb2R1bGUubGVuZ3Ro KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+c21iaW9zX21vZHVsZS5sZW5n dGgpOwogICAgICAgICBpZiAocmV0KQogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgfQogCi0g ICAgaWYgKGFyZ3MtPmFjcGlfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0KSB7CisgICAgaWYgKGRvbS0+ YWNwaV9tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQpIHsKICAgICAgICAgcGF0aCA9IEdDU1BSSU5URigi L2xvY2FsL2RvbWFpbi8lZC8iSFZNX1hTX0FDUElfUFRfQUREUkVTUywgZG9taWQpOwogCiAgICAg ICAgIHJldCA9IGxpYnhsX194c193cml0ZShnYywgWEJUX05VTEwsIHBhdGgsICIweCUiUFJJeDY0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+YWNwaV9tb2R1bGUuZ3Vlc3Rf YWRkcl9vdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5hY3BpX21vZHVs ZS5ndWVzdF9hZGRyX291dCk7CiAgICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgICBnb3RvIGVy cjsKIAogICAgICAgICBwYXRoID0gR0NTUFJJTlRGKCIvbG9jYWwvZG9tYWluLyVkLyJIVk1fWFNf QUNQSV9QVF9MRU5HVEgsIGRvbWlkKTsKIAogICAgICAgICByZXQgPSBsaWJ4bF9feHNfd3JpdGUo Z2MsIFhCVF9OVUxMLCBwYXRoLCAiMHgleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcmdzLT5hY3BpX21vZHVsZS5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG9tLT5hY3BpX21vZHVsZS5sZW5ndGgpOwogICAgICAgICBpZiAocmV0KQogICAgICAgICAg ICAgZ290byBlcnI7CiAgICAgfQpAQCAtODQ3LDcgKzg0Nyw3IEBAIGVycjoKIAogc3RhdGljIGlu dCBsaWJ4bF9fZG9tYWluX2Zpcm13YXJlKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmluZm8sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2h2bV9idWlsZF9hcmdzICphcmdz KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21faW1hZ2Ug KmRvbSkKIHsKICAgICBsaWJ4bF9jdHggKmN0eCA9IGxpYnhsX19nY19vd25lcihnYyk7CiAgICAg Y29uc3QgY2hhciAqZmlybXdhcmU7CkBAIC04NzMsOCArODczLDEzIEBAIHN0YXRpYyBpbnQgbGli eGxfX2RvbWFpbl9maXJtd2FyZShsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIH0KICAgICB9Ci0gICAgYXJncy0+aW1hZ2VfZmlsZV9uYW1lID0gbGlieGxfX2Fic19w YXRoKGdjLCBmaXJtd2FyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfX3hlbmZpcm13YXJlZGlyX3BhdGgoKSk7CisKKyAgICByYyA9IHhjX2RvbV9r ZXJuZWxfZmlsZShkb20sIGxpYnhsX19hYnNfcGF0aChnYywgZmlybXdhcmUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hlbmZpcm13YXJl ZGlyX3BhdGgoKSkpOworICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgIExPR0UoRVJST1IsICJ4 Y19kb21fa2VybmVsX2ZpbGUgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KIAog ICAgIGlmIChpbmZvLT51Lmh2bS5zbWJpb3NfZmlybXdhcmUpIHsKICAgICAgICAgZGF0YSA9IE5V TEw7CkBAIC04ODgsOCArODkzLDggQEAgc3RhdGljIGludCBsaWJ4bF9fZG9tYWluX2Zpcm13YXJl KGxpYnhsX19nYyAqZ2MsCiAgICAgICAgIGxpYnhsX19wdHJfYWRkKGdjLCBkYXRhKTsKICAgICAg ICAgaWYgKGRhdGFsZW4pIHsKICAgICAgICAgICAgIC8qIE9ubHkgYWNjZXB0IG5vbi1lbXB0eSBm aWxlcyAqLwotICAgICAgICAgICAgYXJncy0+c21iaW9zX21vZHVsZS5kYXRhID0gZGF0YTsKLSAg ICAgICAgICAgIGFyZ3MtPnNtYmlvc19tb2R1bGUubGVuZ3RoID0gKHVpbnQzMl90KWRhdGFsZW47 CisgICAgICAgICAgICBkb20tPnNtYmlvc19tb2R1bGUuZGF0YSA9IGRhdGE7CisgICAgICAgICAg ICBkb20tPnNtYmlvc19tb2R1bGUubGVuZ3RoID0gKHVpbnQzMl90KWRhdGFsZW47CiAgICAgICAg IH0KICAgICB9CiAKQEAgLTkwNSw4ICs5MTAsOCBAQCBzdGF0aWMgaW50IGxpYnhsX19kb21haW5f ZmlybXdhcmUobGlieGxfX2djICpnYywKICAgICAgICAgbGlieGxfX3B0cl9hZGQoZ2MsIGRhdGEp OwogICAgICAgICBpZiAoZGF0YWxlbikgewogICAgICAgICAgICAgLyogT25seSBhY2NlcHQgbm9u LWVtcHR5IGZpbGVzICovCi0gICAgICAgICAgICBhcmdzLT5hY3BpX21vZHVsZS5kYXRhID0gZGF0 YTsKLSAgICAgICAgICAgIGFyZ3MtPmFjcGlfbW9kdWxlLmxlbmd0aCA9ICh1aW50MzJfdClkYXRh bGVuOworICAgICAgICAgICAgZG9tLT5hY3BpX21vZHVsZS5kYXRhID0gZGF0YTsKKyAgICAgICAg ICAgIGRvbS0+YWNwaV9tb2R1bGUubGVuZ3RoID0gKHVpbnQzMl90KWRhdGFsZW47CiAgICAgICAg IH0KICAgICB9CiAKQEAgLTkyMCw1MCArOTI1LDYxIEBAIGludCBsaWJ4bF9fYnVpbGRfaHZtKGxp YnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWlu X2J1aWxkX3N0YXRlICpzdGF0ZSkKIHsKICAgICBsaWJ4bF9jdHggKmN0eCA9IGxpYnhsX19nY19v d25lcihnYyk7Ci0gICAgc3RydWN0IHhjX2h2bV9idWlsZF9hcmdzIGFyZ3MgPSB7fTsKICAgICBp bnQgcmV0LCByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgdWludDY0X3QgbW1pb19zdGFydCwgbG93bWVt X2VuZCwgaGlnaG1lbV9lbmQ7CisgICAgdWludDY0X3QgbW1pb19zdGFydCwgbG93bWVtX2VuZCwg aGlnaG1lbV9lbmQsIG1lbV9zaXplOworICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSA9IE5V TEw7CisKKyAgICB4Y19kb21fbG9naW5pdChjdHgtPnhjaCk7CisKKyAgICBkb20gPSB4Y19kb21f YWxsb2NhdGUoY3R4LT54Y2gsIE5VTEwsIE5VTEwpOworICAgIGlmICghZG9tKSB7CisgICAgICAg IExPR0UoRVJST1IsICJ4Y19kb21fYWxsb2NhdGUgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0 OworICAgIH0KKworICAgIGRvbS0+Y29udGFpbmVyX3R5cGUgPSBYQ19ET01fSFZNX0NPTlRBSU5F UjsKIAotICAgIG1lbXNldCgmYXJncywgMCwgc2l6ZW9mKHN0cnVjdCB4Y19odm1fYnVpbGRfYXJn cykpOwogICAgIC8qIFRoZSBwYXJhbXMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGFyZSBp biBNYiwgd2hpY2ggYXJlIHRoZW4KICAgICAgKiBtdWx0aXBsaWVkIGJ5IDEgS2IuIFRoaXMgd2Fz IHRoZW4gZGl2aWRlZCBvZmYgd2hlbiBjYWxsaW5nCiAgICAgICogdGhlIG9sZCB4Y19odm1fYnVp bGRfdGFyZ2V0X21lbSgpIHdoaWNoIHRoZW4gdHVybmVkIHRoZW0gdG8gYnl0ZXMuCiAgICAgICog RG8gYWxsIHRoaXMgaW4gb25lIHN0ZXAgaGVyZS4uLgogICAgICAqLwotICAgIGFyZ3MubWVtX3Np emUgPSAodWludDY0X3QpKGluZm8tPm1heF9tZW1rYiAtIGluZm8tPnZpZGVvX21lbWtiKSA8PCAx MDsKLSAgICBhcmdzLm1lbV90YXJnZXQgPSAodWludDY0X3QpKGluZm8tPnRhcmdldF9tZW1rYiAt IGluZm8tPnZpZGVvX21lbWtiKSA8PCAxMDsKLSAgICBhcmdzLmNsYWltX2VuYWJsZWQgPSBsaWJ4 bF9kZWZib29sX3ZhbChpbmZvLT5jbGFpbV9tb2RlKTsKKyAgICBtZW1fc2l6ZSA9ICh1aW50NjRf dCkoaW5mby0+bWF4X21lbWtiIC0gaW5mby0+dmlkZW9fbWVta2IpIDw8IDEwOworICAgIGRvbS0+ dGFyZ2V0X3BhZ2VzID0gKHVpbnQ2NF90KShpbmZvLT50YXJnZXRfbWVta2IgLSBpbmZvLT52aWRl b19tZW1rYikgPj4gMjsKKyAgICBkb20tPmNsYWltX2VuYWJsZWQgPSBsaWJ4bF9kZWZib29sX3Zh bChpbmZvLT5jbGFpbV9tb2RlKTsKICAgICBpZiAoaW5mby0+dS5odm0ubW1pb19ob2xlX21lbWti KSB7CiAgICAgICAgIHVpbnQ2NF90IG1heF9yYW1fYmVsb3dfNGcgPSAoMVVMTCA8PCAzMikgLQog ICAgICAgICAgICAgKGluZm8tPnUuaHZtLm1taW9faG9sZV9tZW1rYiA8PCAxMCk7CiAKICAgICAg ICAgaWYgKG1heF9yYW1fYmVsb3dfNGcgPCBIVk1fQkVMT1dfNEdfTU1JT19TVEFSVCkKLSAgICAg ICAgICAgIGFyZ3MubW1pb19zaXplID0gaW5mby0+dS5odm0ubW1pb19ob2xlX21lbWtiIDw8IDEw OworICAgICAgICAgICAgZG9tLT5tbWlvX3NpemUgPSBpbmZvLT51Lmh2bS5tbWlvX2hvbGVfbWVt a2IgPDwgMTA7CiAgICAgfQotICAgIGlmIChsaWJ4bF9fZG9tYWluX2Zpcm13YXJlKGdjLCBpbmZv LCAmYXJncykpIHsKKyAgICBpZiAobGlieGxfX2RvbWFpbl9maXJtd2FyZShnYywgaW5mbywgZG9t KSkgewogICAgICAgICBMT0coRVJST1IsICJpbml0aWFsaXppbmcgZG9tYWluIGZpcm13YXJlIGZh aWxlZCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gICAgaWYgKGFyZ3MubWVtX3Rhcmdl dCA9PSAwKQotICAgICAgICBhcmdzLm1lbV90YXJnZXQgPSBhcmdzLm1lbV9zaXplOwotICAgIGlm IChhcmdzLm1taW9fc2l6ZSA9PSAwKQotICAgICAgICBhcmdzLm1taW9fc2l6ZSA9IEhWTV9CRUxP V180R19NTUlPX0xFTkdUSDsKLSAgICBsb3dtZW1fZW5kID0gYXJncy5tZW1fc2l6ZTsKKworICAg IGlmIChkb20tPnRhcmdldF9wYWdlcyA9PSAwKQorICAgICAgICBkb20tPnRhcmdldF9wYWdlcyA9 IG1lbV9zaXplID4+IFhDX1BBR0VfU0hJRlQ7CisgICAgaWYgKGRvbS0+bW1pb19zaXplID09IDAp CisgICAgICAgIGRvbS0+bW1pb19zaXplID0gSFZNX0JFTE9XXzRHX01NSU9fTEVOR1RIOworICAg IGxvd21lbV9lbmQgPSBtZW1fc2l6ZTsKICAgICBoaWdobWVtX2VuZCA9IDA7Ci0gICAgbW1pb19z dGFydCA9ICgxdWxsIDw8IDMyKSAtIGFyZ3MubW1pb19zaXplOworICAgIG1taW9fc3RhcnQgPSAo MXVsbCA8PCAzMikgLSBkb20tPm1taW9fc2l6ZTsKICAgICBpZiAobG93bWVtX2VuZCA+IG1taW9f c3RhcnQpCiAgICAgewogICAgICAgICBoaWdobWVtX2VuZCA9ICgxdWxsIDw8IDMyKSArIChsb3dt ZW1fZW5kIC0gbW1pb19zdGFydCk7CiAgICAgICAgIGxvd21lbV9lbmQgPSBtbWlvX3N0YXJ0Owog ICAgIH0KLSAgICBhcmdzLmxvd21lbV9lbmQgPSBsb3dtZW1fZW5kOwotICAgIGFyZ3MuaGlnaG1l bV9lbmQgPSBoaWdobWVtX2VuZDsKLSAgICBhcmdzLm1taW9fc3RhcnQgPSBtbWlvX3N0YXJ0Owor ICAgIGRvbS0+bG93bWVtX2VuZCA9IGxvd21lbV9lbmQ7CisgICAgZG9tLT5oaWdobWVtX2VuZCA9 IGhpZ2htZW1fZW5kOworICAgIGRvbS0+bW1pb19zdGFydCA9IG1taW9fc3RhcnQ7CisgICAgZG9t LT52Z2FfaG9sZSA9IDE7CiAKICAgICBpZiAoaW5mby0+bnVtX3ZudW1hX25vZGVzICE9IDApIHsK ICAgICAgICAgaW50IGk7CiAKLSAgICAgICAgcmV0ID0gbGlieGxfX3ZudW1hX2J1aWxkX3ZtZW1y YW5nZV9odm0oZ2MsIGRvbWlkLCBpbmZvLCBzdGF0ZSwgJmFyZ3MpOworICAgICAgICByZXQgPSBs aWJ4bF9fdm51bWFfYnVpbGRfdm1lbXJhbmdlX2h2bShnYywgZG9taWQsIGluZm8sIHN0YXRlLCBk b20pOwogICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICAgICBMT0dFVihFUlJPUiwgcmV0LCAi aHZtIGJ1aWxkIHZtZW1yYW5nZXMgZmFpbGVkIik7CiAgICAgICAgICAgICBnb3RvIG91dDsKQEAg LTk3MywyNyArOTg5LDU3IEBAIGludCBsaWJ4bF9fYnVpbGRfaHZtKGxpYnhsX19nYyAqZ2MsIHVp bnQzMl90IGRvbWlkLAogICAgICAgICByZXQgPSBzZXRfdm51bWFfaW5mbyhnYywgZG9taWQsIGlu Zm8sIHN0YXRlKTsKICAgICAgICAgaWYgKHJldCkgZ290byBvdXQ7CiAKLSAgICAgICAgYXJncy5u cl92bWVtcmFuZ2VzID0gc3RhdGUtPm51bV92bWVtcmFuZ2VzOwotICAgICAgICBhcmdzLnZtZW1y YW5nZXMgPSBsaWJ4bF9fbWFsbG9jKGdjLCBzaXplb2YoKmFyZ3Mudm1lbXJhbmdlcykgKgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubnJfdm1lbXJhbmdlcyk7 CisgICAgICAgIGRvbS0+bnJfdm1lbXJhbmdlcyA9IHN0YXRlLT5udW1fdm1lbXJhbmdlczsKKyAg ICAgICAgZG9tLT52bWVtcmFuZ2VzID0gbGlieGxfX21hbGxvYyhnYywgc2l6ZW9mKCpkb20tPnZt ZW1yYW5nZXMpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20t Pm5yX3ZtZW1yYW5nZXMpOwogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdzLm5yX3ZtZW1y YW5nZXM7IGkrKykgewotICAgICAgICAgICAgYXJncy52bWVtcmFuZ2VzW2ldLnN0YXJ0ID0gc3Rh dGUtPnZtZW1yYW5nZXNbaV0uc3RhcnQ7Ci0gICAgICAgICAgICBhcmdzLnZtZW1yYW5nZXNbaV0u ZW5kICAgPSBzdGF0ZS0+dm1lbXJhbmdlc1tpXS5lbmQ7Ci0gICAgICAgICAgICBhcmdzLnZtZW1y YW5nZXNbaV0uZmxhZ3MgPSBzdGF0ZS0+dm1lbXJhbmdlc1tpXS5mbGFnczsKLSAgICAgICAgICAg IGFyZ3Mudm1lbXJhbmdlc1tpXS5uaWQgICA9IHN0YXRlLT52bWVtcmFuZ2VzW2ldLm5pZDsKKyAg ICAgICAgZm9yIChpID0gMDsgaSA8IGRvbS0+bnJfdm1lbXJhbmdlczsgaSsrKSB7CisgICAgICAg ICAgICBkb20tPnZtZW1yYW5nZXNbaV0uc3RhcnQgPSBzdGF0ZS0+dm1lbXJhbmdlc1tpXS5zdGFy dDsKKyAgICAgICAgICAgIGRvbS0+dm1lbXJhbmdlc1tpXS5lbmQgICA9IHN0YXRlLT52bWVtcmFu Z2VzW2ldLmVuZDsKKyAgICAgICAgICAgIGRvbS0+dm1lbXJhbmdlc1tpXS5mbGFncyA9IHN0YXRl LT52bWVtcmFuZ2VzW2ldLmZsYWdzOworICAgICAgICAgICAgZG9tLT52bWVtcmFuZ2VzW2ldLm5p ZCAgID0gc3RhdGUtPnZtZW1yYW5nZXNbaV0ubmlkOwogICAgICAgICB9CiAKLSAgICAgICAgYXJn cy5ucl92bm9kZXMgPSBpbmZvLT5udW1fdm51bWFfbm9kZXM7Ci0gICAgICAgIGFyZ3Mudm5vZGVf dG9fcG5vZGUgPSBsaWJ4bF9fbWFsbG9jKGdjLCBzaXplb2YoKmFyZ3Mudm5vZGVfdG9fcG5vZGUp ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5ucl92 bm9kZXMpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJncy5ucl92bm9kZXM7IGkrKykKLSAg ICAgICAgICAgIGFyZ3Mudm5vZGVfdG9fcG5vZGVbaV0gPSBpbmZvLT52bnVtYV9ub2Rlc1tpXS5w bm9kZTsKKyAgICAgICAgZG9tLT5ucl92bm9kZXMgPSBpbmZvLT5udW1fdm51bWFfbm9kZXM7Cisg ICAgICAgIGRvbS0+dm5vZGVfdG9fcG5vZGUgPSBsaWJ4bF9fbWFsbG9jKGdjLCBzaXplb2YoKmRv bS0+dm5vZGVfdG9fcG5vZGUpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9tLT5ucl92bm9kZXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9tLT5u cl92bm9kZXM7IGkrKykKKyAgICAgICAgICAgIGRvbS0+dm5vZGVfdG9fcG5vZGVbaV0gPSBpbmZv LT52bnVtYV9ub2Rlc1tpXS5wbm9kZTsKKyAgICB9CisKKyAgICByYyA9IHhjX2RvbV9ib290X3hl bl9pbml0KGRvbSwgY3R4LT54Y2gsIGRvbWlkKTsKKyAgICBpZiAocmMgIT0gMCkgeworICAgICAg ICBMT0dFKEVSUk9SLCAieGNfZG9tX2Jvb3RfeGVuX2luaXQgZmFpbGVkIik7CisgICAgICAgIGdv dG8gb3V0OwogICAgIH0KIAotICAgIHJldCA9IHhjX2h2bV9idWlsZChjdHgtPnhjaCwgZG9taWQs ICZhcmdzKTsKLSAgICBpZiAocmV0KSB7Ci0gICAgICAgIExPR0VWKEVSUk9SLCByZXQsICJodm0g YnVpbGRpbmcgZmFpbGVkIik7CisgICAgcmMgPSB4Y19kb21fcGFyc2VfaW1hZ2UoZG9tKTsKKyAg ICBpZiAocmMgIT0gMCkgeworICAgICAgICBMT0dFKEVSUk9SLCAieGNfZG9tX3BhcnNlX2ltYWdl IGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IHhjX2RvbV9t ZW1faW5pdChkb20sIG1lbV9zaXplIC8gKDEwMjQgKiAxMDI0KSk7CisgICAgaWYgKHJjICE9IDAp IHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9tZW1faW5pdCBmYWlsZWQiKTsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSB4Y19kb21fYm9vdF9tZW1faW5pdChkb20p OworICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fYm9vdF9t ZW1faW5pdCBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSB4 Y19kb21fYnVpbGRfaW1hZ2UoZG9tKTsKKyAgICBpZiAocmMgIT0gMCkgeworICAgICAgICBMT0dF KEVSUk9SLCAieGNfZG9tX2J1aWxkX2ltYWdlIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsK KyAgICB9CisKKyAgICByYyA9IHhjX2RvbV9ib290X2ltYWdlKGRvbSk7CisgICAgaWYgKHJjICE9 IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9ib290X2ltYWdlIGZhaWxlZCIpOwog ICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTEwMDYsMTQgKzEwNTIsMTYgQEAgaW50IGxp YnhsX19idWlsZF9odm0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgIGdv dG8gb3V0OwogICAgIH0KIAotICAgIHJldCA9IGh2bV9idWlsZF9zZXRfeHNfdmFsdWVzKGdjLCBk b21pZCwgJmFyZ3MpOworICAgIHJldCA9IGh2bV9idWlsZF9zZXRfeHNfdmFsdWVzKGdjLCBkb21p ZCwgZG9tKTsKICAgICBpZiAocmV0KSB7CiAgICAgICAgIExPRyhFUlJPUiwgImh2bSBidWlsZCBz ZXQgeGVuc3RvcmUgdmFsdWVzIGZhaWxlZCAocmV0PSVkKSIsIHJldCk7CiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KIAorICAgIHhjX2RvbV9yZWxlYXNlKGRvbSk7CiAgICAgcmV0dXJuIDA7CiBv dXQ6CisgICAgaWYgKGRvbSAhPSBOVUxMKSB4Y19kb21fcmVsZWFzZShkb20pOwogICAgIHJldHVy biByYzsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rv b2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggZTk2ZDZiNS4uNzFiMzcxNCAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5oCkBAIC0zNDYxLDcgKzM0NjEsNyBAQCBpbnQgbGlieGxfX3ZudW1hX2J1aWxk X3ZtZW1yYW5nZV9odm0obGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9pbmZvLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgKnN0YXRlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19odm1fYnVpbGRf YXJncyAqYXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tKTsKIGJvb2wgbGlieGxfX3ZudW1hX2NvbmZpZ3VyZWQoY29uc3Qg bGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmJfaW5mbyk7CiAKIF9oaWRkZW4gaW50IGxpYnhsX19t c192bV9nZW5pZF9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF92bnVtYS5jIGIvdG9vbHMvbGlieGwvbGlieGxfdm51bWEuYwpp bmRleCA1Njg1NmQyLi5kYjIyNzk5IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF92bnVt YS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3ZudW1hLmMKQEAgLTE3LDYgKzE3LDggQEAKICNp bmNsdWRlICJsaWJ4bF9hcmNoLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKKyNpbmNsdWRlIDx4 Y19kb20uaD4KKwogYm9vbCBsaWJ4bF9fdm51bWFfY29uZmlndXJlZChjb25zdCBsaWJ4bF9kb21h aW5fYnVpbGRfaW5mbyAqYl9pbmZvKQogewogICAgIHJldHVybiBiX2luZm8tPm51bV92bnVtYV9u b2RlcyAhPSAwOwpAQCAtMjUyLDcgKzI1NCw3IEBAIGludCBsaWJ4bF9fdm51bWFfYnVpbGRfdm1l bXJhbmdlX2h2bShsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfX2RvbWFpbl9idWlsZF9zdGF0ZSAqc3RhdGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2h2bV9idWlsZF9hcmdz ICphcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19k b21faW1hZ2UgKmRvbSkKIHsKICAgICB1aW50NjRfdCBob2xlX3N0YXJ0LCBob2xlX2VuZCwgbmV4 dDsKICAgICBpbnQgbmlkLCBucl92bWVtcmFuZ2U7CkBAIC0yNjQsMTAgKzI2NiwxMCBAQCBpbnQg bGlieGxfX3ZudW1hX2J1aWxkX3ZtZW1yYW5nZV9odm0obGlieGxfX2djICpnYywKICAgICAgKiBH dWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIGxheW91dDoKICAgICAgKiBbMCwgaG9sZV9zdGFy dCkgW2hvbGVfc3RhcnQsIGhvbGVfZW5kKSBbaG9sZV9lbmQsIGhpZ2htZW1fZW5kKQogICAgICAq LwotICAgIGhvbGVfc3RhcnQgPSBhcmdzLT5sb3dtZW1fZW5kIDwgYXJncy0+bW1pb19zdGFydCA/ Ci0gICAgICAgIGFyZ3MtPmxvd21lbV9lbmQgOiBhcmdzLT5tbWlvX3N0YXJ0OwotICAgIGhvbGVf ZW5kID0gKGFyZ3MtPm1taW9fc3RhcnQgKyBhcmdzLT5tbWlvX3NpemUpID4gKDFVTEwgPDwgMzIp ID8KLSAgICAgICAgKGFyZ3MtPm1taW9fc3RhcnQgKyBhcmdzLT5tbWlvX3NpemUpIDogKDFVTEwg PDwgMzIpOworICAgIGhvbGVfc3RhcnQgPSBkb20tPmxvd21lbV9lbmQgPCBkb20tPm1taW9fc3Rh cnQgPworICAgICAgICBkb20tPmxvd21lbV9lbmQgOiBkb20tPm1taW9fc3RhcnQ7CisgICAgaG9s ZV9lbmQgPSAoZG9tLT5tbWlvX3N0YXJ0ICsgZG9tLT5tbWlvX3NpemUpID4gKDFVTEwgPDwgMzIp ID8KKyAgICAgICAgKGRvbS0+bW1pb19zdGFydCArIGRvbS0+bW1pb19zaXplKSA6ICgxVUxMIDw8 IDMyKTsKIAogICAgIGFzc2VydChzdGF0ZS0+dm1lbXJhbmdlcyA9PSBOVUxMKTsKIAotLSAKMS45 LjUgKEFwcGxlIEdpdC01MC4zKQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==