From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v6 12/13] libxl: change vtpm to use generec add function Date: Tue, 12 Sep 2017 16:48:17 +0300 Message-ID: <1505224098-19330-13-git-send-email-al1img@gmail.com> References: <1505224098-19330-1-git-send-email-al1img@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drlYU-0005it-4F for xen-devel@lists.xenproject.org; Tue, 12 Sep 2017 13:48:46 +0000 Received: by mail-lf0-f66.google.com with SMTP id m199so5376214lfe.5 for ; Tue, 12 Sep 2017 06:48:40 -0700 (PDT) In-Reply-To: <1505224098-19330-1-git-send-email-al1img@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKU2ln bmVkLW9mZi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29t PgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB0b29scy9saWJ4 bC9saWJ4bC5oICAgICAgfCAgMTIgKy0tCiB0b29scy9saWJ4bC9saWJ4bF92dHBtLmMgfCAyMjEg KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL3hs L3hsX3Z0cG0uYyAgICAgICB8ICAgMyArLQogMyBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25z KCspLCAxNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBi L3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXggYWJlMTI5ZS4uNjVjNGFhYSAxMDA2NDQKLS0tIGEv dG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0xNjA2LDkg KzE2MDYsNiBAQCBsaWJ4bF92Y3B1aW5mbyAqbGlieGxfbGlzdF92Y3B1KGxpYnhsX2N0eCAqY3R4 LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpu Yl92Y3B1LCBpbnQgKm5yX2NwdXNfb3V0KTsKIHZvaWQgbGlieGxfdmNwdWluZm9fbGlzdF9mcmVl KGxpYnhsX3ZjcHVpbmZvICosIGludCBucl92Y3B1cyk7CiAKLXZvaWQgbGlieGxfZGV2aWNlX3Z0 cG1fbGlzdF9mcmVlKGxpYnhsX2RldmljZV92dHBtKiwgaW50IG5yX3Z0cG1zKTsKLXZvaWQgbGli eGxfdnRwbWluZm9fbGlzdF9mcmVlKGxpYnhsX3Z0cG1pbmZvICosIGludCBucl92dHBtcyk7Ci0K IC8qCiAgKiBEZXZpY2VzCiAgKiA9PT09PT09CkBAIC0xODgzLDkgKzE4ODAsMTQgQEAgaW50IGxp YnhsX2RldmljZV92dHBtX2Rlc3Ryb3kobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFv X2hvdykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFMX0NBTExF UlNfT05MWTsKIAotbGlieGxfZGV2aWNlX3Z0cG0gKmxpYnhsX2RldmljZV92dHBtX2xpc3QobGli eGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgKm51bSk7CitsaWJ4bF9kZXZpY2VfdnRw bSAqbGlieGxfZGV2aWNlX3Z0cG1fbGlzdChsaWJ4bF9jdHggKmN0eCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlkLCBpbnQgKm51bSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFMX0NB TExFUlNfT05MWTsKK3ZvaWQgbGlieGxfZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKGxpYnhsX2Rldmlj ZV92dHBtKiwgaW50IG51bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhM X0VYVEVSTkFMX0NBTExFUlNfT05MWTsKIGludCBsaWJ4bF9kZXZpY2VfdnRwbV9nZXRpbmZvKGxp YnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSwgbGlieGxfdnRwbWluZm8gKnZ0cG1pbmZvKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtLCBs aWJ4bF92dHBtaW5mbyAqdnRwbWluZm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CiAKIC8qIFZpcnR1YWwgZGlzcGxheXMgKi8KIGlu dCBsaWJ4bF9kZXZpY2VfdmRpc3BsX2FkZChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQs CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF92dHBtLmMgYi90b29scy9saWJ4bC9saWJ4 bF92dHBtLmMKaW5kZXggM2VjYTM4ZS4uMjEzMjA4NyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwv bGlieGxfdnRwbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3Z0cG0uYwpAQCAtNTEsMTY1ICs1 MSw3MiBAQCBzdGF0aWMgdm9pZCBsaWJ4bF9fdXBkYXRlX2NvbmZpZ192dHBtKGxpYnhsX19nYyAq Z2MsIGxpYnhsX2RldmljZV92dHBtICpkc3QsCiAKIHN0YXRpYyBMSUJYTF9ERUZJTkVfVVBEQVRF X0RFVklEKHZ0cG0sICJ2dHBtIikKIAorc3RhdGljIGludCBsaWJ4bF9fc2V0X3hlbnN0b3JlX3Z0 cG0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV90ICpiYWNrLCBmbGV4YXJyYXlfdCAqZnJvbnQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4YXJyYXlfdCAqcm9fZnJv bnQpCit7CisgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJoYW5kbGUiLCBHQ1NQUklO VEYoIiVkIiwgdnRwbS0+ZGV2aWQpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywg InV1aWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoTElCWExfVVVJRF9G TVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9VVUlEX0JZVEVT KHZ0cG0tPnV1aWQpKSk7CisgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJyZXN1bWUi LCAiRmFsc2UiKTsKKworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihmcm9udCwgImhhbmRsZSIs IEdDU1BSSU5URigiJWQiLCB2dHBtLT5kZXZpZCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKIHN0 YXRpYyB2b2lkIGxpYnhsX19kZXZpY2VfdnRwbV9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJf dCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNl X3Z0cG0gKnZ0cG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19h b19kZXZpY2UgKmFvZGV2KQogewotICAgIFNUQVRFX0FPX0dDKGFvZGV2LT5hbyk7Ci0gICAgZmxl eGFycmF5X3QgKmZyb250OwotICAgIGZsZXhhcnJheV90ICpiYWNrOwotICAgIGxpYnhsX19kZXZp Y2UgKmRldmljZTsKLSAgICBpbnQgcmM7Ci0gICAgeHNfdHJhbnNhY3Rpb25fdCB0ID0gWEJUX05V TEw7Ci0gICAgbGlieGxfZG9tYWluX2NvbmZpZyBkX2NvbmZpZzsKLSAgICBsaWJ4bF9kZXZpY2Vf dnRwbSB2dHBtX3NhdmVkOwotICAgIGxpYnhsX19kb21haW5fdXNlcmRhdGFfbG9jayAqbG9jayA9 IE5VTEw7Ci0KLSAgICBsaWJ4bF9kb21haW5fY29uZmlnX2luaXQoJmRfY29uZmlnKTsKLSAgICBs aWJ4bF9kZXZpY2VfdnRwbV9pbml0KCZ2dHBtX3NhdmVkKTsKLSAgICBsaWJ4bF9kZXZpY2VfdnRw bV9jb3B5KENUWCwgJnZ0cG1fc2F2ZWQsIHZ0cG0pOwotCi0gICAgcmMgPSBsaWJ4bF9fZGV2aWNl X3Z0cG1fc2V0ZGVmYXVsdChnYywgZG9taWQsIHZ0cG0sIGFvZGV2LT51cGRhdGVfanNvbik7Ci0g ICAgaWYgKHJjKSBnb3RvIG91dDsKLQotICAgIGZyb250ID0gZmxleGFycmF5X21ha2UoZ2MsIDE2 LCAxKTsKLSAgICBiYWNrID0gZmxleGFycmF5X21ha2UoZ2MsIDE2LCAxKTsKLQotICAgIHJjID0g bGlieGxfX2RldmljZV92dHBtX3VwZGF0ZV9kZXZpZChnYywgZG9taWQsIHZ0cG0pOwotICAgIGlm IChyYykgZ290byBvdXQ7Ci0KLSAgICBsaWJ4bF9fdXBkYXRlX2NvbmZpZ192dHBtKGdjLCAmdnRw bV9zYXZlZCwgdnRwbSk7Ci0KLSAgICBHQ05FVyhkZXZpY2UpOwotICAgIHJjID0gbGlieGxfX2Rl dmljZV9mcm9tX3Z0cG0oZ2MsIGRvbWlkLCB2dHBtLCBkZXZpY2UpOwotICAgIGlmICggcmMgIT0g MCApIGdvdG8gb3V0OwotCi0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiZnJvbnRlbmQtaWQi KTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5URigiJWQiLCBkb21pZCkpOwot ICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgIm9ubGluZSIpOwotICAgIGZsZXhhcnJheV9hcHBl bmQoYmFjaywgIjEiKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJzdGF0ZSIpOwotICAg IGZsZXhhcnJheV9hcHBlbmQoYmFjaywgR0NTUFJJTlRGKCIlZCIsIFhlbmJ1c1N0YXRlSW5pdGlh bGlzaW5nKSk7Ci0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiaGFuZGxlIik7Ci0gICAgZmxl eGFycmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYoIiVkIiwgdnRwbS0+ZGV2aWQpKTsKLQotICAg IGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInV1aWQiKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJh Y2ssIEdDU1BSSU5URihMSUJYTF9VVUlEX0ZNVCwgTElCWExfVVVJRF9CWVRFUyh2dHBtLT51dWlk KSkpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInJlc3VtZSIpOwotICAgIGZsZXhhcnJh eV9hcHBlbmQoYmFjaywgIkZhbHNlIik7Ci0KLSAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCAi YmFja2VuZC1pZCIpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5URigiJWQi LCB2dHBtLT5iYWNrZW5kX2RvbWlkKSk7Ci0gICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgInN0 YXRlIik7Ci0gICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgR0NTUFJJTlRGKCIlZCIsIFhlbmJ1 c1N0YXRlSW5pdGlhbGlzaW5nKSk7Ci0gICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgImhhbmRs ZSIpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5URigiJWQiLCB2dHBtLT5k ZXZpZCkpOwotCi0gICAgaWYgKGFvZGV2LT51cGRhdGVfanNvbikgewotICAgICAgICBsb2NrID0g bGlieGxfX2xvY2tfZG9tYWluX3VzZXJkYXRhKGdjLCBkb21pZCk7Ci0gICAgICAgIGlmICghbG9j aykgewotICAgICAgICAgICAgcmMgPSBFUlJPUl9MT0NLX0ZBSUw7Ci0gICAgICAgICAgICBnb3Rv IG91dDsKLSAgICAgICAgfQorICAgIGxpYnhsX19kZXZpY2VfYWRkX2FzeW5jKGVnYywgZG9taWQs ICZsaWJ4bF9fdnRwbV9kZXZ0eXBlLCB2dHBtLCBhb2Rldik7Cit9CiAKLSAgICAgICAgcmMgPSBs aWJ4bF9fZ2V0X2RvbWFpbl9jb25maWd1cmF0aW9uKGdjLCBkb21pZCwgJmRfY29uZmlnKTsKLSAg ICAgICAgaWYgKHJjKSBnb3RvIG91dDsKK3N0YXRpYyBpbnQgbGlieGxfX3Z0cG1fZnJvbV94ZW5z dG9yZShsaWJ4bF9fZ2MgKmdjLCBjb25zdCBjaGFyICpsaWJ4bF9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmlkIGRldmlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtKQoreworICAg IGludCByYzsKKyAgICBjaGFyICpiZV9wYXRoOworICAgIGNoYXIgKnV1aWQ7CiAKLSAgICAgICAg REVWSUNFX0FERCh2dHBtLCB2dHBtcywgZG9taWQsICZ2dHBtX3NhdmVkLCBDT01QQVJFX0RFVklE LCAmZF9jb25maWcpOworICAgIHZ0cG0tPmRldmlkID0gZGV2aWQ7CiAKLSAgICAgICAgcmMgPSBs aWJ4bF9fZG1fY2hlY2tfc3RhcnQoZ2MsICZkX2NvbmZpZywgZG9taWQpOwotICAgICAgICBpZiAo cmMpIGdvdG8gb3V0OwotICAgIH0KKyAgICBiZV9wYXRoID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhC VF9OVUxMLCBHQ1NQUklOVEYoIiVzL2JhY2tlbmQiLCBsaWJ4bF9wYXRoKSk7CiAKLSAgICBmb3Ig KDs7KSB7Ci0gICAgICAgIHJjID0gbGlieGxfX3hzX3RyYW5zYWN0aW9uX3N0YXJ0KGdjLCAmdCk7 Ci0gICAgICAgIGlmIChyYykgZ290byBvdXQ7Ci0KLSAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNl X2V4aXN0cyhnYywgdCwgZGV2aWNlKTsKLSAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7Ci0g ICAgICAgIGlmIChyYyA9PSAxKSB7ICAgICAgICAgICAgICAvKiBhbHJlYWR5IGV4aXN0cyBpbiB4 ZW5zdG9yZSAqLwotICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJkZXZpY2UgYWxyZWFk eSBleGlzdHMgaW4geGVuc3RvcmUiKTsKLSAgICAgICAgICAgIGFvZGV2LT5hY3Rpb24gPSBMSUJY TF9fREVWSUNFX0FDVElPTl9BREQ7IC8qIGZvciBlcnJvciBtZXNzYWdlICovCi0gICAgICAgICAg ICByYyA9IEVSUk9SX0RFVklDRV9FWElTVFM7Ci0gICAgICAgICAgICBnb3RvIG91dDsKLSAgICAg ICAgfQorICAgIHJjID0gbGlieGxfX2JhY2tlbmRwYXRoX3BhcnNlX2RvbWlkKGdjLCBiZV9wYXRo LCAmdnRwbS0+YmFja2VuZF9kb21pZCk7CisgICAgaWYgKHJjKSByZXR1cm4gcmM7CiAKLSAgICAg ICAgaWYgKGFvZGV2LT51cGRhdGVfanNvbikgewotICAgICAgICAgICAgcmMgPSBsaWJ4bF9fc2V0 X2RvbWFpbl9jb25maWd1cmF0aW9uKGdjLCBkb21pZCwgJmRfY29uZmlnKTsKLSAgICAgICAgICAg IGlmIChyYykgZ290byBvdXQ7CisgICAgdXVpZCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVM TCwgR0NTUFJJTlRGKCIlcy91dWlkIiwgYmVfcGF0aCkpOworICAgIGlmICh1dWlkKSB7CisgICAg ICAgIGlmKGxpYnhsX3V1aWRfZnJvbV9zdHJpbmcoJih2dHBtLT51dWlkKSwgdXVpZCkpIHsKKyAg ICAgICAgICAgIExPR0QoRVJST1IsIHZ0cG0tPmJhY2tlbmRfZG9taWQsICIlcy91dWlkIGlzIGEg bWFsZm9ybWVkIHV1aWQ/PyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglcykg UHJvYmFibHkgYSBidWchIVxuIiwgYmVfcGF0aCwgdXVpZCk7CisgICAgICAgICAgICByZXR1cm4g RVJST1JfRkFJTDsKICAgICAgICAgfQotCi0gICAgICAgIGxpYnhsX19kZXZpY2VfZ2VuZXJpY19h ZGQoZ2MsIHQsIGRldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9feHNfa3ZzX29mX2ZsZXhhcnJheShnYywgYmFjayksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXkoZ2MsIGZyb250KSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAgICAgICByYyA9IGxpYnhs X194c190cmFuc2FjdGlvbl9jb21taXQoZ2MsICZ0KTsKLSAgICAgICAgaWYgKCFyYykgYnJlYWs7 Ci0gICAgICAgIGlmIChyYyA8IDApIGdvdG8gb3V0OwogICAgIH0KIAotICAgIGFvZGV2LT5kZXYg PSBkZXZpY2U7Ci0gICAgYW9kZXYtPmFjdGlvbiA9IExJQlhMX19ERVZJQ0VfQUNUSU9OX0FERDsK LSAgICBsaWJ4bF9fd2FpdF9kZXZpY2VfY29ubmVjdGlvbihlZ2MsIGFvZGV2KTsKLQotICAgIHJj ID0gMDsKLW91dDoKLSAgICBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fYWJvcnQoZ2MsICZ0KTsKLSAg ICBpZiAobG9jaykgbGlieGxfX3VubG9ja19kb21haW5fdXNlcmRhdGEobG9jayk7Ci0gICAgbGli eGxfZGV2aWNlX3Z0cG1fZGlzcG9zZSgmdnRwbV9zYXZlZCk7Ci0gICAgbGlieGxfZG9tYWluX2Nv bmZpZ19kaXNwb3NlKCZkX2NvbmZpZyk7Ci0gICAgYW9kZXYtPnJjID0gcmM7Ci0gICAgaWYocmMp IGFvZGV2LT5jYWxsYmFjayhlZ2MsIGFvZGV2KTsKLSAgICByZXR1cm47CisgICAgcmV0dXJuIDA7 CiB9CiAKIGxpYnhsX2RldmljZV92dHBtICpsaWJ4bF9kZXZpY2VfdnRwbV9saXN0KGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pCiB7Ci0gICAgR0NfSU5JVChjdHgpOwor ICAgIGxpYnhsX2RldmljZV92dHBtICpyOwogCi0gICAgbGlieGxfZGV2aWNlX3Z0cG0qIHZ0cG1z ID0gTlVMTDsKLSAgICBjaGFyICpsaWJ4bF9wYXRoOwotICAgIGNoYXIqKiBkaXIgPSBOVUxMOwot ICAgIHVuc2lnbmVkIGludCBuZGlycyA9IDA7Ci0gICAgaW50IHJjOworICAgIEdDX0lOSVQoY3R4 KTsKIAotICAgICpudW0gPSAwOwotCi0gICAgbGlieGxfcGF0aCA9IEdDU1BSSU5URigiJXMvZGV2 aWNlL3Z0cG0iLCBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywgZG9taWQpKTsKLSAgICBkaXIgPSBs aWJ4bF9feHNfZGlyZWN0b3J5KGdjLCBYQlRfTlVMTCwgbGlieGxfcGF0aCwgJm5kaXJzKTsKLSAg ICBpZiAoZGlyICYmIG5kaXJzKSB7Ci0gICAgICAgdnRwbXMgPSBtYWxsb2Moc2l6ZW9mKCp2dHBt cykgKiBuZGlycyk7Ci0gICAgICAgbGlieGxfZGV2aWNlX3Z0cG0qIHZ0cG07Ci0gICAgICAgbGli eGxfZGV2aWNlX3Z0cG0qIGVuZCA9IHZ0cG1zICsgbmRpcnM7Ci0gICAgICAgZm9yKHZ0cG0gPSB2 dHBtczsgdnRwbSA8IGVuZDsgKyt2dHBtLCArK2RpcikgewotICAgICAgICAgIGNoYXIqIHRtcDsK LSAgICAgICAgICBjb25zdCBjaGFyKiBiZV9wYXRoID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9O VUxMLAotICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvJXMvYmFja2VuZCIsCi0gICAgICAg ICAgICAgICAgICAgbGlieGxfcGF0aCwgKmRpcikpOwotCi0gICAgICAgICAgbGlieGxfZGV2aWNl X3Z0cG1faW5pdCh2dHBtKTsKLQotICAgICAgICAgIHZ0cG0tPmRldmlkID0gYXRvaSgqZGlyKTsK LQotICAgICAgICAgIHJjID0gbGlieGxfX2JhY2tlbmRwYXRoX3BhcnNlX2RvbWlkKGdjLCBiZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2dHBt LT5iYWNrZW5kX2RvbWlkKTsKLSAgICAgICAgICBpZiAocmMpIHJldHVybiBOVUxMOwotCi0gICAg ICAgICAgdG1wID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLCBHQ1NQUklOVEYoIiVzL3V1 aWQiLCBsaWJ4bF9wYXRoKSk7Ci0gICAgICAgICAgaWYgKHRtcCkgewotICAgICAgICAgICAgICBp ZihsaWJ4bF91dWlkX2Zyb21fc3RyaW5nKCYodnRwbS0+dXVpZCksIHRtcCkpIHsKLSAgICAgICAg ICAgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiJXMvdXVpZCBpcyBhIG1hbGZvcm1lZCB1dWlk Pz8gKCVzKSBQcm9iYWJseSBhIGJ1ZyEhXG4iLCBiZV9wYXRoLCB0bXApOwotICAgICAgICAgICAg ICAgICAgZnJlZSh2dHBtcyk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAg ICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgfQotICAgICpudW0gPSBuZGly czsKKyAgICByID0gbGlieGxfX2RldmljZV9saXN0KGdjLCAmbGlieGxfX3Z0cG1fZGV2dHlwZSwg ZG9taWQsICJ2dHBtIiwgbnVtKTsKIAogICAgIEdDX0ZSRUU7Ci0gICAgcmV0dXJuIHZ0cG1zOwor CisgICAgcmV0dXJuIHI7Cit9CisKK3ZvaWQgbGlieGxfZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKGxp YnhsX2RldmljZV92dHBtKiBsaXN0LCBpbnQgbnVtKQoreworICAgIGxpYnhsX19kZXZpY2VfbGlz dF9mcmVlKCZsaWJ4bF9fdnRwbV9kZXZ0eXBlLCBsaXN0LCBudW0pOwogfQogCiBpbnQgbGlieGxf ZGV2aWNlX3Z0cG1fZ2V0aW5mbyhsaWJ4bF9jdHggKmN0eCwKQEAgLTI4MSwxMSArMTg4LDEyIEBA IGludCBsaWJ4bF9kZXZpZF90b19kZXZpY2VfdnRwbShsaWJ4bF9jdHggKmN0eCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0pCiB7CisgICAgR0NfSU5JVChjdHgpOwog ICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtczsKICAgICBpbnQgbmIsIGk7CiAgICAgaW50IHJj OwogCi0gICAgdnRwbXMgPSBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0KGN0eCwgZG9taWQsICZuYik7 CisgICAgdnRwbXMgPSBsaWJ4bF9fZGV2aWNlX2xpc3QoZ2MsICZsaWJ4bF9fdnRwbV9kZXZ0eXBl LCBkb21pZCwgInZ0cG0iLCAmbmIpOwogICAgIGlmICghdnRwbXMpCiAgICAgICAgIHJldHVybiBF UlJPUl9GQUlMOwogCkBAIC0zMDEsNyArMjA5LDggQEAgaW50IGxpYnhsX2RldmlkX3RvX2Rldmlj ZV92dHBtKGxpYnhsX2N0eCAqY3R4LAogICAgICAgICB9CiAgICAgfQogCi0gICAgbGlieGxfZGV2 aWNlX3Z0cG1fbGlzdF9mcmVlKHZ0cG1zLCBuYik7CisgICAgbGlieGxfX2RldmljZV9saXN0X2Zy ZWUoJmxpYnhsX192dHBtX2RldnR5cGUsIHZ0cG1zLCBuYik7CisgICAgR0NfRlJFRTsKICAgICBy ZXR1cm4gcmM7CiB9CiAKQEAgLTMxNCwxMSArMjIzLDEyIEBAIHN0YXRpYyBpbnQgbGlieGxfZGV2 aWNlX3Z0cG1fY29tcGFyZShsaWJ4bF9kZXZpY2VfdnRwbSAqZDEsCiBpbnQgbGlieGxfdXVpZF90 b19kZXZpY2VfdnRwbShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfdXVpZCogdXVpZCwgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0 cG0pCiB7CisgICAgR0NfSU5JVChjdHgpOwogICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtczsK ICAgICBpbnQgbmIsIGk7CiAgICAgaW50IHJjOwogCi0gICAgdnRwbXMgPSBsaWJ4bF9kZXZpY2Vf dnRwbV9saXN0KGN0eCwgZG9taWQsICZuYik7CisgICAgdnRwbXMgPSBsaWJ4bF9fZGV2aWNlX2xp c3QoZ2MsICZsaWJ4bF9fdnRwbV9kZXZ0eXBlLCBkb21pZCwgInZ0cG0iLCAmbmIpOwogICAgIGlm ICghdnRwbXMpCiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogCkBAIC0zMzQsMjYgKzI0NCwx MSBAQCBpbnQgbGlieGxfdXVpZF90b19kZXZpY2VfdnRwbShsaWJ4bF9jdHggKmN0eCwgdWludDMy X3QgZG9taWQsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0 X2ZyZWUodnRwbXMsIG5iKTsKKyAgICBsaWJ4bF9fZGV2aWNlX2xpc3RfZnJlZSgmbGlieGxfX3Z0 cG1fZGV2dHlwZSwgdnRwbXMsIG5iKTsKKyAgICBHQ19GUkVFOwogICAgIHJldHVybiByYzsKIH0K IAotdm9pZCBsaWJ4bF92dHBtaW5mb19saXN0X2ZyZWUobGlieGxfdnRwbWluZm8qIGxpc3QsIGlu dCBucikKLXsKLSAgIGludCBpOwotICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspCi0gICAgICBs aWJ4bF92dHBtaW5mb19kaXNwb3NlKCZsaXN0W2ldKTsKLSAgIGZyZWUobGlzdCk7Ci19Ci0KLXZv aWQgbGlieGxfZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKGxpYnhsX2RldmljZV92dHBtKiBsaXN0LCBp bnQgbnIpCi17Ci0gICBpbnQgaTsKLSAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKQotICAgICAg bGlieGxfZGV2aWNlX3Z0cG1fZGlzcG9zZSgmbGlzdFtpXSk7Ci0gICBmcmVlKGxpc3QpOwotfQot CiBzdGF0aWMgdm9pZCBsaWJ4bF9kZXZpY2VfdnRwbV91cGRhdGVfY29uZmlnKGxpYnhsX19nYyAq Z2MsIHZvaWQgKmQsIHZvaWQgKnMpCiB7CiAgICAgbGlieGxfX3VwZGF0ZV9jb25maWdfdnRwbShn YywgZCwgcyk7CkBAIC0zNjQsNyArMjU5LDEzIEBAIHN0YXRpYyBMSUJYTF9ERUZJTkVfREVWSUNF U19BREQodnRwbSkKIExJQlhMX0RFRklORV9ERVZJQ0VfUkVNT1ZFKHZ0cG0pCiAKIERFRklORV9E RVZJQ0VfVFlQRV9TVFJVQ1QodnRwbSwKLSAgICAudXBkYXRlX2NvbmZpZyA9IGxpYnhsX2Rldmlj ZV92dHBtX3VwZGF0ZV9jb25maWcKKyAgICAudXBkYXRlX2NvbmZpZyA9IGxpYnhsX2RldmljZV92 dHBtX3VwZGF0ZV9jb25maWcsCisgICAgLmZyb21feGVuc3RvcmUgPSAoaW50ICgqKShsaWJ4bF9f Z2MgKiwgY29uc3QgY2hhciAqLCBsaWJ4bF9kZXZpZCwgdm9pZCAqKSkKKyAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX192dHBtX2Zyb21feGVuc3RvcmUsCisgICAgLnNldF94ZW5zdG9yZV9jb25m aWcgPSAoaW50ICgqKShsaWJ4bF9fZ2MgKiwgdWludDMyX3QsIHZvaWQgKiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV90ICpiYWNrLCBmbGV4YXJyYXlfdCAq ZnJvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4YXJyYXlfdCAq cm9fZnJvbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3NldF94ZW5zdG9y ZV92dHBtCiApOwogCiAvKgpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfdnRwbS5jIGIvdG9vbHMv eGwveGxfdnRwbS5jCmluZGV4IDZmNTZiZTAuLjBiYTUwNDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hs L3hsX3Z0cG0uYworKysgYi90b29scy94bC94bF92dHBtLmMKQEAgLTEwNSw5ICsxMDUsOCBAQCBp bnQgbWFpbl92dHBtbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKICAgICAgICAgICAgICAg bGlieGxfdnRwbWluZm9fZGlzcG9zZSgmdnRwbWluZm8pOwogICAgICAgICAgICB9Ci0gICAgICAg ICAgIGxpYnhsX2RldmljZV92dHBtX2Rpc3Bvc2UoJnZ0cG1zW2ldKTsKICAgICAgICAgfQotICAg ICAgICBmcmVlKHZ0cG1zKTsKKyAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKHZ0 cG1zLCBuYik7CiAgICAgfQogICAgIHJldHVybiAwOwogfQotLSAKMi43LjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK