From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v4 11/13] libxl: change vtpm to use generec add function Date: Tue, 18 Jul 2017 17:25:28 +0300 Message-ID: <1500387930-16317-12-git-send-email-al1img@gmail.com> References: <1500387930-16317-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dXTRi-0002gJ-Gl for xen-devel@lists.xenproject.org; Tue, 18 Jul 2017 14:25:54 +0000 Received: by mail-lf0-f67.google.com with SMTP id z78so1999286lff.2 for ; Tue, 18 Jul 2017 07:25:52 -0700 (PDT) In-Reply-To: <1500387930-16317-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 PgotLS0KIHRvb2xzL2xpYnhsL2xpYnhsLmggICAgICB8ICAxMiArKy0KIHRvb2xzL2xpYnhsL2xp YnhsX3Z0cG0uYyB8IDIzMSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogdG9vbHMveGwveGxfdnRwbS5jICAgICAgIHwgICAzICstCiAzIGZpbGVzIGNoYW5n ZWQsIDczIGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29s cy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCA0YTI5YjQzLi5jMTY5 ZWZmIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsLmgKQEAgLTE1ODAsOSArMTU4MCw2IEBAIGxpYnhsX3ZjcHVpbmZvICpsaWJ4bF9saXN0X3Zj cHUobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgKm5iX3ZjcHUsIGludCAqbnJfY3B1c19vdXQpOwogdm9pZCBsaWJ4bF92 Y3B1aW5mb19saXN0X2ZyZWUobGlieGxfdmNwdWluZm8gKiwgaW50IG5yX3ZjcHVzKTsKIAotdm9p ZCBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0X2ZyZWUobGlieGxfZGV2aWNlX3Z0cG0qLCBpbnQgbnJf dnRwbXMpOwotdm9pZCBsaWJ4bF92dHBtaW5mb19saXN0X2ZyZWUobGlieGxfdnRwbWluZm8gKiwg aW50IG5yX3Z0cG1zKTsKLQogLyoKICAqIERldmljZXMKICAqID09PT09PT0KQEAgLTE4NTcsOSAr MTg1NCwxNCBAQCBpbnQgbGlieGxfZGV2aWNlX3Z0cG1fZGVzdHJveShsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4 bF9hc3luY29wX2hvdyAqYW9faG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElC WExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOwogCi1saWJ4bF9kZXZpY2VfdnRwbSAqbGlieGxfZGV2 aWNlX3Z0cG1fbGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCAqbnVtKTsK K2xpYnhsX2RldmljZV92dHBtICpsaWJ4bF9kZXZpY2VfdnRwbV9saXN0KGxpYnhsX2N0eCAqY3R4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9t aWQsIGludCAqbnVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOwordm9pZCBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0 X2ZyZWUobGlieGxfZGV2aWNlX3Z0cG0qLCBpbnQgbnVtKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOwogaW50IGxpYnhsX2Rldmlj ZV92dHBtX2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtLCBsaWJ4bF92dHBt aW5mbyAqdnRwbWluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2 aWNlX3Z0cG0gKnZ0cG0sIGxpYnhsX3Z0cG1pbmZvICp2dHBtaW5mbykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWTsKIAogLyogVmlydHVh bCBkaXNwbGF5cyAqLwogaW50IGxpYnhsX2RldmljZV92ZGlzcGxfYWRkKGxpYnhsX2N0eCAqY3R4 LCB1aW50MzJfdCBkb21pZCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Z0cG0uYyBi L3Rvb2xzL2xpYnhsL2xpYnhsX3Z0cG0uYwppbmRleCBjYmQ1NDYxLi4wNjYxYTMwIDEwMDY0NAot LS0gYS90b29scy9saWJ4bC9saWJ4bF92dHBtLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdnRw bS5jCkBAIC0xNyw3ICsxNyw5IEBACiAKICNpbmNsdWRlICJsaWJ4bF9pbnRlcm5hbC5oIgogCi1z dGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdnRwbV9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxp YnhsX2RldmljZV92dHBtICp2dHBtKQorc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3Z0cG1fc2V0 ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaG90cGx1ZykKIHsKICAgICBp bnQgcmM7CiAgICAgaWYgKGxpYnhsX3V1aWRfaXNfbmlsKCZ2dHBtLT51dWlkKSkgewpAQCAtNDgs MTY5ICs1MCw3MyBAQCBzdGF0aWMgdm9pZCBsaWJ4bF9fdXBkYXRlX2NvbmZpZ192dHBtKGxpYnhs X19nYyAqZ2MsIGxpYnhsX2RldmljZV92dHBtICpkc3QsCiAgICAgbGlieGxfdXVpZF9jb3B5KENU WCwgJmRzdC0+dXVpZCwgJnNyYy0+dXVpZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpYnhsX19kZXZp Y2VfdnRwbV9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KQorc3Rh dGljIGludCBsaWJ4bF9fc2V0X3hlbnN0b3JlX3Z0cG0obGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2Vf dnRwbSAqdnRwbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJh eV90ICpiYWNrLCBmbGV4YXJyYXlfdCAqZnJvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmbGV4YXJyYXlfdCAqcm9fZnJvbnQpCiB7Ci0gICAgU1RBVEVfQU9fR0MoYW9k ZXYtPmFvKTsKLSAgICBmbGV4YXJyYXlfdCAqZnJvbnQ7Ci0gICAgZmxleGFycmF5X3QgKmJhY2s7 Ci0gICAgbGlieGxfX2RldmljZSAqZGV2aWNlOwotICAgIGludCByYzsKLSAgICB4c190cmFuc2Fj dGlvbl90IHQgPSBYQlRfTlVMTDsKLSAgICBsaWJ4bF9kb21haW5fY29uZmlnIGRfY29uZmlnOwot ICAgIGxpYnhsX2RldmljZV92dHBtIHZ0cG1fc2F2ZWQ7Ci0gICAgbGlieGxfX2RvbWFpbl91c2Vy ZGF0YV9sb2NrICpsb2NrID0gTlVMTDsKLQotICAgIGxpYnhsX2RvbWFpbl9jb25maWdfaW5pdCgm ZF9jb25maWcpOwotICAgIGxpYnhsX2RldmljZV92dHBtX2luaXQoJnZ0cG1fc2F2ZWQpOwotICAg IGxpYnhsX2RldmljZV92dHBtX2NvcHkoQ1RYLCAmdnRwbV9zYXZlZCwgdnRwbSk7CisgICAgZmxl eGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJoYW5kbGUiLCBHQ1NQUklOVEYoIiVkIiwgdnRwbS0+ ZGV2aWQpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgInV1aWQiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoTElCWExfVVVJRF9GTVQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9VVUlEX0JZVEVTKHZ0cG0tPnV1aWQpKSk7 CisgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJyZXN1bWUiLCAiRmFsc2UiKTsKIAot ICAgIHJjID0gbGlieGxfX2RldmljZV92dHBtX3NldGRlZmF1bHQoZ2MsIHZ0cG0pOwotICAgIGlm IChyYykgZ290byBvdXQ7CisgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGZyb250LCAiaGFuZGxl IiwgR0NTUFJJTlRGKCIlZCIsIHZ0cG0tPmRldmlkKSk7CiAKLSAgICBmcm9udCA9IGZsZXhhcnJh eV9tYWtlKGdjLCAxNiwgMSk7Ci0gICAgYmFjayA9IGZsZXhhcnJheV9tYWtlKGdjLCAxNiwgMSk7 CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBpZiAodnRwbS0+ZGV2aWQgPT0gLTEpIHsKLSAgICAg ICAgaWYgKCh2dHBtLT5kZXZpZCA9IGxpYnhsX19kZXZpY2VfbmV4dGlkKGdjLCBkb21pZCwgInZ0 cG0iKSkgPCAwKSB7Ci0gICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgICAgICAgICBn b3RvIG91dDsKLSAgICAgICAgfQotICAgIH0KIAotICAgIGxpYnhsX191cGRhdGVfY29uZmlnX3Z0 cG0oZ2MsICZ2dHBtX3NhdmVkLCB2dHBtKTsKLQotICAgIEdDTkVXKGRldmljZSk7Ci0gICAgcmMg PSBsaWJ4bF9fZGV2aWNlX2Zyb21fdnRwbShnYywgZG9taWQsIHZ0cG0sIGRldmljZSk7Ci0gICAg aWYgKCByYyAhPSAwICkgZ290byBvdXQ7Ci0KLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJm cm9udGVuZC1pZCIpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgR0NTUFJJTlRGKCIlZCIs IGRvbWlkKSk7Ci0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAib25saW5lIik7Ci0gICAgZmxl eGFycmF5X2FwcGVuZChiYWNrLCAiMSIpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInN0 YXRlIik7Ci0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYoIiVkIiwgWGVuYnVz U3RhdGVJbml0aWFsaXNpbmcpKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJoYW5kbGUi KTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5URigiJWQiLCB2dHBtLT5kZXZp ZCkpOwotCi0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAidXVpZCIpOwotICAgIGZsZXhhcnJh eV9hcHBlbmQoYmFjaywgR0NTUFJJTlRGKExJQlhMX1VVSURfRk1ULCBMSUJYTF9VVUlEX0JZVEVT KHZ0cG0tPnV1aWQpKSk7Ci0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAicmVzdW1lIik7Ci0g ICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiRmFsc2UiKTsKLQotICAgIGZsZXhhcnJheV9hcHBl bmQoZnJvbnQsICJiYWNrZW5kLWlkIik7Ci0gICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgR0NT UFJJTlRGKCIlZCIsIHZ0cG0tPmJhY2tlbmRfZG9taWQpKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5k KGZyb250LCAic3RhdGUiKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCBHQ1NQUklOVEYo IiVkIiwgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcpKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGZy b250LCAiaGFuZGxlIik7Ci0gICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgR0NTUFJJTlRGKCIl ZCIsIHZ0cG0tPmRldmlkKSk7Ci0KLSAgICBpZiAoYW9kZXYtPnVwZGF0ZV9qc29uKSB7Ci0gICAg ICAgIGxvY2sgPSBsaWJ4bF9fbG9ja19kb21haW5fdXNlcmRhdGEoZ2MsIGRvbWlkKTsKLSAgICAg ICAgaWYgKCFsb2NrKSB7Ci0gICAgICAgICAgICByYyA9IEVSUk9SX0xPQ0tfRkFJTDsKLSAgICAg ICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9CitzdGF0aWMgdm9pZCBsaWJ4bF9fZGV2aWNlX3Z0 cG1fYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNlICphb2RldikKK3sKKyAgICBs aWJ4bF9fZGV2aWNlX2FkZF9hc3luYyhlZ2MsIGRvbWlkLCAmbGlieGxfX3Z0cG1fZGV2dHlwZSwg dnRwbSwgYW9kZXYpOworfQogCi0gICAgICAgIHJjID0gbGlieGxfX2dldF9kb21haW5fY29uZmln dXJhdGlvbihnYywgZG9taWQsICZkX2NvbmZpZyk7Ci0gICAgICAgIGlmIChyYykgZ290byBvdXQ7 CitzdGF0aWMgaW50IGxpYnhsX192dHBtX2Zyb21feGVuc3RvcmUobGlieGxfX2djICpnYywgY29u c3QgY2hhciAqbGlieGxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kZXZpZCBkZXZpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSkKK3sKKyAgICBpbnQgcmM7CisgICAgY2hhciAqYmVf cGF0aDsKKyAgICBjaGFyICp1dWlkOwogCi0gICAgICAgIERFVklDRV9BREQodnRwbSwgdnRwbXMs IGRvbWlkLCAmdnRwbV9zYXZlZCwgQ09NUEFSRV9ERVZJRCwgJmRfY29uZmlnKTsKKyAgICB2dHBt LT5kZXZpZCA9IGRldmlkOwogCi0gICAgICAgIHJjID0gbGlieGxfX2RtX2NoZWNrX3N0YXJ0KGdj LCAmZF9jb25maWcsIGRvbWlkKTsKLSAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKLSAgICB9Cisg ICAgYmVfcGF0aCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCIlcy9i YWNrZW5kIiwgbGlieGxfcGF0aCkpOwogCi0gICAgZm9yICg7OykgewotICAgICAgICByYyA9IGxp YnhsX194c190cmFuc2FjdGlvbl9zdGFydChnYywgJnQpOwotICAgICAgICBpZiAocmMpIGdvdG8g b3V0OwotCi0gICAgICAgIHJjID0gbGlieGxfX2RldmljZV9leGlzdHMoZ2MsIHQsIGRldmljZSk7 Ci0gICAgICAgIGlmIChyYyA8IDApIGdvdG8gb3V0OwotICAgICAgICBpZiAocmMgPT0gMSkgeyAg ICAgICAgICAgICAgLyogYWxyZWFkeSBleGlzdHMgaW4geGVuc3RvcmUgKi8KLSAgICAgICAgICAg IExPR0QoRVJST1IsIGRvbWlkLCAiZGV2aWNlIGFscmVhZHkgZXhpc3RzIGluIHhlbnN0b3JlIik7 Ci0gICAgICAgICAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fQUREOyAv KiBmb3IgZXJyb3IgbWVzc2FnZSAqLwotICAgICAgICAgICAgcmMgPSBFUlJPUl9ERVZJQ0VfRVhJ U1RTOwotICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgIH0KKyAgICByYyA9IGxpYnhsX19i YWNrZW5kcGF0aF9wYXJzZV9kb21pZChnYywgYmVfcGF0aCwgJnZ0cG0tPmJhY2tlbmRfZG9taWQp OworICAgIGlmIChyYykgcmV0dXJuIHJjOwogCi0gICAgICAgIGlmIChhb2Rldi0+dXBkYXRlX2pz b24pIHsKLSAgICAgICAgICAgIHJjID0gbGlieGxfX3NldF9kb21haW5fY29uZmlndXJhdGlvbihn YywgZG9taWQsICZkX2NvbmZpZyk7Ci0gICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAg IHV1aWQgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsIEdDU1BSSU5URigiJXMvdXVpZCIs IGJlX3BhdGgpKTsKKyAgICBpZiAodXVpZCkgeworICAgICAgICBpZihsaWJ4bF91dWlkX2Zyb21f c3RyaW5nKCYodnRwbS0+dXVpZCksIHV1aWQpKSB7CisgICAgICAgICAgICBMT0dEKEVSUk9SLCB2 dHBtLT5iYWNrZW5kX2RvbWlkLCAiJXMvdXVpZCBpcyBhIG1hbGZvcm1lZCB1dWlkPz8gIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoJXMpIFByb2JhYmx5IGEgYnVnISFcbiIsIGJl X3BhdGgsIHV1aWQpOworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAgICAgICAgIH0K LQotICAgICAgICBsaWJ4bF9fZGV2aWNlX2dlbmVyaWNfYWRkKGdjLCB0LCBkZXZpY2UsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXko Z2MsIGJhY2spLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19r dnNfb2ZfZmxleGFycmF5KGdjLCBmcm9udCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCk7Ci0KLSAgICAgICAgcmMgPSBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fY29tbWl0 KGdjLCAmdCk7Ci0gICAgICAgIGlmICghcmMpIGJyZWFrOwotICAgICAgICBpZiAocmMgPCAwKSBn b3RvIG91dDsKICAgICB9CiAKLSAgICBhb2Rldi0+ZGV2ID0gZGV2aWNlOwotICAgIGFvZGV2LT5h Y3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7Ci0gICAgbGlieGxfX3dhaXRfZGV2aWNl X2Nvbm5lY3Rpb24oZWdjLCBhb2Rldik7Ci0KLSAgICByYyA9IDA7Ci1vdXQ6Ci0gICAgbGlieGxf X3hzX3RyYW5zYWN0aW9uX2Fib3J0KGdjLCAmdCk7Ci0gICAgaWYgKGxvY2spIGxpYnhsX191bmxv Y2tfZG9tYWluX3VzZXJkYXRhKGxvY2spOwotICAgIGxpYnhsX2RldmljZV92dHBtX2Rpc3Bvc2Uo JnZ0cG1fc2F2ZWQpOwotICAgIGxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmZF9jb25maWcp OwotICAgIGFvZGV2LT5yYyA9IHJjOwotICAgIGlmKHJjKSBhb2Rldi0+Y2FsbGJhY2soZWdjLCBh b2Rldik7Ci0gICAgcmV0dXJuOworICAgIHJldHVybiAwOwogfQogCiBsaWJ4bF9kZXZpY2VfdnRw bSAqbGlieGxfZGV2aWNlX3Z0cG1fbGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQs IGludCAqbnVtKQogeworICAgIGxpYnhsX2RldmljZV92dHBtICpyOworCiAgICAgR0NfSU5JVChj dHgpOwogCi0gICAgbGlieGxfZGV2aWNlX3Z0cG0qIHZ0cG1zID0gTlVMTDsKLSAgICBjaGFyICps aWJ4bF9wYXRoOwotICAgIGNoYXIqKiBkaXIgPSBOVUxMOwotICAgIHVuc2lnbmVkIGludCBuZGly cyA9IDA7Ci0gICAgaW50IHJjOwotCi0gICAgKm51bSA9IDA7Ci0KLSAgICBsaWJ4bF9wYXRoID0g R0NTUFJJTlRGKCIlcy9kZXZpY2UvdnRwbSIsIGxpYnhsX194c19saWJ4bF9wYXRoKGdjLCBkb21p ZCkpOwotICAgIGRpciA9IGxpYnhsX194c19kaXJlY3RvcnkoZ2MsIFhCVF9OVUxMLCBsaWJ4bF9w YXRoLCAmbmRpcnMpOwotICAgIGlmIChkaXIgJiYgbmRpcnMpIHsKLSAgICAgICB2dHBtcyA9IG1h bGxvYyhzaXplb2YoKnZ0cG1zKSAqIG5kaXJzKTsKLSAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSog dnRwbTsKLSAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSogZW5kID0gdnRwbXMgKyBuZGlyczsKLSAg ICAgICBmb3IodnRwbSA9IHZ0cG1zOyB2dHBtIDwgZW5kOyArK3Z0cG0sICsrZGlyKSB7Ci0gICAg ICAgICAgY2hhciogdG1wOwotICAgICAgICAgIGNvbnN0IGNoYXIqIGJlX3BhdGggPSBsaWJ4bF9f eHNfcmVhZChnYywgWEJUX05VTEwsCi0gICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy8lcy9i YWNrZW5kIiwKLSAgICAgICAgICAgICAgICAgICBsaWJ4bF9wYXRoLCAqZGlyKSk7Ci0KLSAgICAg ICAgICBsaWJ4bF9kZXZpY2VfdnRwbV9pbml0KHZ0cG0pOwotCi0gICAgICAgICAgdnRwbS0+ZGV2 aWQgPSBhdG9pKCpkaXIpOwotCi0gICAgICAgICAgcmMgPSBsaWJ4bF9fYmFja2VuZHBhdGhfcGFy c2VfZG9taWQoZ2MsIGJlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnZ0cG0tPmJhY2tlbmRfZG9taWQpOwotICAgICAgICAgIGlmIChyYykgcmV0 dXJuIE5VTEw7Ci0KLSAgICAgICAgICB0bXAgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEws IEdDU1BSSU5URigiJXMvdXVpZCIsIGxpYnhsX3BhdGgpKTsKLSAgICAgICAgICBpZiAodG1wKSB7 Ci0gICAgICAgICAgICAgIGlmKGxpYnhsX3V1aWRfZnJvbV9zdHJpbmcoJih2dHBtLT51dWlkKSwg dG1wKSkgewotICAgICAgICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICIlcy91dWlkIGlz IGEgbWFsZm9ybWVkIHV1aWQ/PyAoJXMpIFByb2JhYmx5IGEgYnVnISFcbiIsIGJlX3BhdGgsIHRt cCk7Ci0gICAgICAgICAgICAgICAgICBmcmVlKHZ0cG1zKTsKLSAgICAgICAgICAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgIH0KLSAgICB9 Ci0gICAgKm51bSA9IG5kaXJzOworICAgIHIgPSBsaWJ4bF9fZGV2aWNlX2xpc3QoZ2MsICZsaWJ4 bF9fdnRwbV9kZXZ0eXBlLCBkb21pZCwgInZ0cG0iLCBudW0pOwogCiAgICAgR0NfRlJFRTsKLSAg ICByZXR1cm4gdnRwbXM7CisKKyAgICByZXR1cm4gcjsKK30KKwordm9pZCBsaWJ4bF9kZXZpY2Vf dnRwbV9saXN0X2ZyZWUobGlieGxfZGV2aWNlX3Z0cG0qIGxpc3QsIGludCBudW0pCit7CisgICAg bGlieGxfX2RldmljZV9saXN0X2ZyZWUoJmxpYnhsX192dHBtX2RldnR5cGUsIGxpc3QsIG51bSk7 CiB9CiAKIGludCBsaWJ4bF9kZXZpY2VfdnRwbV9nZXRpbmZvKGxpYnhsX2N0eCAqY3R4LApAQCAt MjgyLDExICsxODgsMTIgQEAgaW50IGxpYnhsX2RldmlkX3RvX2RldmljZV92dHBtKGxpYnhsX2N0 eCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSkKIHsKKyAg ICBHQ19JTklUKGN0eCk7CiAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG1zOwogICAgIGludCBu YiwgaTsKICAgICBpbnQgcmM7CiAKLSAgICB2dHBtcyA9IGxpYnhsX2RldmljZV92dHBtX2xpc3Qo Y3R4LCBkb21pZCwgJm5iKTsKKyAgICB2dHBtcyA9IGxpYnhsX19kZXZpY2VfbGlzdChnYywgJmxp YnhsX192dHBtX2RldnR5cGUsIGRvbWlkLCAidnRwbSIsICZuYik7CiAgICAgaWYgKCF2dHBtcykK ICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAKQEAgLTMwMiw3ICsyMDksOCBAQCBpbnQgbGli eGxfZGV2aWRfdG9fZGV2aWNlX3Z0cG0obGlieGxfY3R4ICpjdHgsCiAgICAgICAgIH0KICAgICB9 CiAKLSAgICBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0X2ZyZWUodnRwbXMsIG5iKTsKKyAgICBsaWJ4 bF9fZGV2aWNlX2xpc3RfZnJlZSgmbGlieGxfX3Z0cG1fZGV2dHlwZSwgdnRwbXMsIG5iKTsKKyAg ICBHQ19GUkVFOwogICAgIHJldHVybiByYzsKIH0KIApAQCAtMzE1LDExICsyMjMsMTIgQEAgc3Rh dGljIGludCBsaWJ4bF9kZXZpY2VfdnRwbV9jb21wYXJlKGxpYnhsX2RldmljZV92dHBtICpkMSwK IGludCBsaWJ4bF91dWlkX3RvX2RldmljZV92dHBtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF91dWlkKiB1dWlkLCBsaWJ4 bF9kZXZpY2VfdnRwbSAqdnRwbSkKIHsKKyAgICBHQ19JTklUKGN0eCk7CiAgICAgbGlieGxfZGV2 aWNlX3Z0cG0gKnZ0cG1zOwogICAgIGludCBuYiwgaTsKICAgICBpbnQgcmM7CiAKLSAgICB2dHBt cyA9IGxpYnhsX2RldmljZV92dHBtX2xpc3QoY3R4LCBkb21pZCwgJm5iKTsKKyAgICB2dHBtcyA9 IGxpYnhsX19kZXZpY2VfbGlzdChnYywgJmxpYnhsX192dHBtX2RldnR5cGUsIGRvbWlkLCAidnRw bSIsICZuYik7CiAgICAgaWYgKCF2dHBtcykKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAK QEAgLTMzNSwyNiArMjQ0LDExIEBAIGludCBsaWJ4bF91dWlkX3RvX2RldmljZV92dHBtKGxpYnhs X2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgfQogICAgIH0KIAotICAgIGxpYnhs X2RldmljZV92dHBtX2xpc3RfZnJlZSh2dHBtcywgbmIpOworICAgIGxpYnhsX19kZXZpY2VfbGlz dF9mcmVlKCZsaWJ4bF9fdnRwbV9kZXZ0eXBlLCB2dHBtcywgbmIpOworICAgIEdDX0ZSRUU7CiAg ICAgcmV0dXJuIHJjOwogfQogCi12b2lkIGxpYnhsX3Z0cG1pbmZvX2xpc3RfZnJlZShsaWJ4bF92 dHBtaW5mbyogbGlzdCwgaW50IG5yKQotewotICAgaW50IGk7Ci0gICBmb3IgKGkgPSAwOyBpIDwg bnI7IGkrKykKLSAgICAgIGxpYnhsX3Z0cG1pbmZvX2Rpc3Bvc2UoJmxpc3RbaV0pOwotICAgZnJl ZShsaXN0KTsKLX0KLQotdm9pZCBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0X2ZyZWUobGlieGxfZGV2 aWNlX3Z0cG0qIGxpc3QsIGludCBucikKLXsKLSAgIGludCBpOwotICAgZm9yIChpID0gMDsgaSA8 IG5yOyBpKyspCi0gICAgICBsaWJ4bF9kZXZpY2VfdnRwbV9kaXNwb3NlKCZsaXN0W2ldKTsKLSAg IGZyZWUobGlzdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGxpYnhsX2RldmljZV92dHBtX3VwZGF0ZV9j b25maWcobGlieGxfX2djICpnYywgdm9pZCAqZCwgdm9pZCAqcykKIHsKICAgICBsaWJ4bF9fdXBk YXRlX2NvbmZpZ192dHBtKGdjLCBkLCBzKTsKQEAgLTM2MywxMSArMjU3LDE2IEBAIHN0YXRpYyB2 b2lkIGxpYnhsX2RldmljZV92dHBtX3VwZGF0ZV9jb25maWcobGlieGxfX2djICpnYywgdm9pZCAq ZCwgdm9pZCAqcykKIExJQlhMX0RFRklORV9ERVZJQ0VfQUREKHZ0cG0pCiBzdGF0aWMgTElCWExf REVGSU5FX0RFVklDRVNfQUREKHZ0cG0pCiBMSUJYTF9ERUZJTkVfREVWSUNFX1JFTU9WRSh2dHBt KQotCi0jZGVmaW5lIGxpYnhsX19kZXZpY2VfdnRwbV91cGRhdGVfZGV2aWQgTlVMTAorc3RhdGlj IExJQlhMX0RFRklORV9VUERBVEVfREVWSUQodnRwbSwgInZ0cG0iKQogCiBERUZJTkVfREVWSUNF X1RZUEVfU1RSVUNUKHZ0cG0sCi0gICAgLnVwZGF0ZV9jb25maWcgPSBsaWJ4bF9kZXZpY2VfdnRw bV91cGRhdGVfY29uZmlnCisgICAgLnVwZGF0ZV9jb25maWcgPSBsaWJ4bF9kZXZpY2VfdnRwbV91 cGRhdGVfY29uZmlnLAorICAgIC5mcm9tX3hlbnN0b3JlID0gKGludCAoKikobGlieGxfX2djICos IGNvbnN0IGNoYXIgKiwgbGlieGxfZGV2aWQsIHZvaWQgKikpCisgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9fdnRwbV9mcm9tX3hlbnN0b3JlLAorICAgIC5zZXRfeGVuc3RvcmVfY29uZmlnID0g KGludCAoKikobGlieGxfX2djICosIHVpbnQzMl90LCB2b2lkICosCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmbGV4YXJyYXlfdCAqYmFjaywgZmxleGFycmF5X3QgKmZyb250 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGFycmF5X3QgKnJvX2Zy b250KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zZXRfeGVuc3RvcmVfdnRw bQogKTsKIAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3Z0cG0uYyBiL3Rvb2xzL3hsL3hs X3Z0cG0uYwppbmRleCA2ZjU2YmUwLi4wYmE1MDQxIDEwMDY0NAotLS0gYS90b29scy94bC94bF92 dHBtLmMKKysrIGIvdG9vbHMveGwveGxfdnRwbS5jCkBAIC0xMDUsOSArMTA1LDggQEAgaW50IG1h aW5fdnRwbWxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAgICAgICAgICAgICAgIGxpYnhs X3Z0cG1pbmZvX2Rpc3Bvc2UoJnZ0cG1pbmZvKTsKICAgICAgICAgICAgfQotICAgICAgICAgICBs aWJ4bF9kZXZpY2VfdnRwbV9kaXNwb3NlKCZ2dHBtc1tpXSk7CiAgICAgICAgIH0KLSAgICAgICAg ZnJlZSh2dHBtcyk7CisgICAgICAgIGxpYnhsX2RldmljZV92dHBtX2xpc3RfZnJlZSh2dHBtcywg bmIpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==