From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Subject: [PATCH v3 12/17] libxl: use vchan for QMP access with Linux stubdomain, libxl__ev_qmp_* version Date: Mon, 28 Jan 2019 22:30:29 +0100 Message-ID: <29dfd94db70671c2ef32aa3bccb338360f2c0c7d.1548710973.git-series.marmarek@invisiblethingslab.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1goEUe-0001x1-0h for xen-devel@lists.xenproject.org; Mon, 28 Jan 2019 21:31:00 +0000 In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Ian Jackson , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= List-Id: xen-devel@lists.xenproject.org QWNjZXNzIHRvIFFNUCBvZiBRRU1VIGluIExpbnV4IHN0dWJkb21haW4gaXMgcG9zc2libGUgb3Zl ciB2Y2hhbgpjb25uZWN0aW9uLiBBZGQgYXBwcm9wcmlhdGUgaGFuZGxpbmcgaW4gbGlieGxfX2V2 X3FtcF8qIEFQSSwga2VlcGluZyBhbGwgdGhlCmFzeW5jaHJvbm91cyBwcm9wZXJ0aWVzLgpTaW5j ZSBvbmx5IG9uZSBjbGllbnQgY2FuIGJlIGNvbm5lY3RlZCB0byB2Y2hhbiBzZXJ2ZXIgYXQgdGhl IHNhbWUgdGltZQphbmQgaXQgaXMgbm90IGVuZm9yY2VkIGJ5IHRoZSBsaWJ4ZW52Y2hhbiBpdHNl bGYsIGFkZGl0aW9uYWwgY2xpZW50LXNpZGUKbG9ja2luZyBpcyBuZWVkZWQuIE5vdGUgdGhhdCBx ZW11IHN1cHBvcnRzIG9ubHkgb25lIHNpbXVsdGFuZW91cyBjbGllbnQKb24gYSBjb250cm9sIHNv Y2tldCBhbnl3YXkgKGJ1dCBpbiBVTklYIHNvY2tldCBjYXNlLCBpdCBlbmZvcmNlIGl0CnNlcnZl ci1zaWRlKSwgc28gaXQgZG9lc24ndCBhZGQgYW55IGV4dHJhIGxpbWl0YXRpb24uCgpSZWdhcmRp bmcgcGlwZSB0byBzZWxmOgpWY2hhbiBpc3N1ZSBub3RpZmljYXRpb24gYWJvdXQgaW5jb21pbmcg ZGF0YSAob3Igc3BhY2UgZm9yIGl0KQpvbmx5IG9uY2UgLSBldmVuIGlmIHRoZXJlIGlzIG1vcmUg ZGF0YSB0byByZWFkLCBGRCByZXR1cm5lZCBieQpsaWJ4ZW52Y2hhbl9mZF9mb3Jfc2VsZWN0KCkg d2lsbCBub3QgYmUgcmVhZGFibGUuIFNpbWlsYXIgdG8gYnVmZmVyCnNwYWNlIC0gdGhlcmUgaXMg b25lIG5vdGlmaWNhdGlvbiBpZiBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4sIGJ1dCBGRAppc24n dCBjb25zaWRlcmVkICJ3cml0YWJsZSIgYWZ0ZXIgbGlieGVudmNoYW5fd2FpdCgpIGNhbGwsIGV2 ZW4gaWYgaW4KZmFjdCB0aGVyZSBpcyBhIGJ1ZmZlciBzcGFjZS4KVGhlcmUgYXJlIHR3byBzaXR1 YXRpb25zIHdoZXJlIGl0IGlzIHByb2JsZW1hdGljOgogLSBzb21lIFFNUCBtZXNzYWdlIHJlc3Vs dHMgaW4gYSB1c2VyIGNhbGxiYWNrIGFuZCBwcm9jZXNzaW5nIGZ1cnRoZXIKICAgbWVzc2FnZXMg bXVzdCBzdG9wIChldmVuIGlmIG1vcmUgZGF0YSBpcyBhbHJlYWR5IGF2YWlsYWJsZSBpbiB2Y2hh bgogICBidWZmZXIpCiAtIGRhdGEgaXMgc2NoZWR1bGVkIHRvIHdyaXRlIGFmdGVyIGEgYnVmZmVy IHNwYWNlIG5vdGlmaWNhdGlvbjsgdGhpcwogICBtYXkgcmVzdWx0IGZyb20gZWl0aGVyIGRlbGF5 ZWQgbGlieGxfX2V2X3FtcF9zZW5kKCkgY2FsbCwgb3IgaW50ZXJuYWwKICAgc3RhdGUgY2hhbmdl CgpUbyBhdm9pZCB0aGUgYWJvdmUgcHJvYmxlbXMsIHVzZSBwaXBlIHRvIHNlbGYgdG8gc2NoZWR1 bGUgdmNoYW4gZGF0YQpwcm9jZXNzaW5nLCBldmVuIGlmIHZjaGFuIHdvdWxkIG5vdCBpc3N1ZSBu b3RpZmljYXRpb24gaXRzZWxmLgoKU2lnbmVkLW9mZi1ieTogTWFyZWsgTWFyY3p5a293c2tpLUfD s3JlY2tpIDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPgotLS0KVE9ETzoKIC0gaGFu ZGxlIGxvY2tpbmcgZm9yIHZjaGFuIGFjY2VzcyAtIGEgbG9ja2ZpbGUgKyBmbG9jayBjb21lcyB0 byBtaW5kLAogICBidXQgdGhlcmUgaXMgbm8gYXN5bmMgcHJvdmlzaW9uaW5nIGZvciBpdCBpbiBs aWJ4bAoKQ2hhbmdlcyBpbiB2MzoKIC0gbmV3IHBhdGNoLCBpbiBwbGFjZSBvZiAibGlieGw6IGFj Y2VzcyBRTVAgc29ja2V0IHZpYSBjb25zb2xlIGZvcgogICBxZW11LWluLXN0dWJkb21haW4iCi0t LQogdG9vbHMvUnVsZXMubWsgICAgICAgICAgICAgICB8ICAgNCArLQogdG9vbHMvbGlieGwvTWFr ZWZpbGUgICAgICAgICB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGxfZG0uYyAgICAgICB8ICAg MiArLQogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCB8ICAgNyArLQogdG9vbHMvbGlieGwv bGlieGxfcW1wLmMgICAgICB8IDI5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KIDUgZmlsZXMgY2hhbmdlZCwgMzAxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvdG9vbHMvUnVsZXMubWsgYi90b29scy9SdWxlcy5tawppbmRleCA2OGYyZWQ3 Li4xMmIzMTI5IDEwMDY0NAotLS0gYS90b29scy9SdWxlcy5taworKysgYi90b29scy9SdWxlcy5t awpAQCAtMTg3LDggKzE4Nyw4IEBAIFNITElCX2xpYmJsa3RhcGN0bCAgPQogUEtHX0NPTkZJR19S RU1PVkUgKz0geGVuYmxrdGFwY3RsCiBlbmRpZgogCi1DRkxBR1NfbGlieGVubGlnaHQgPSAtSSQo WEVOX1hFTkxJR0hUKSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU194ZW5pbmNsdWRlKQot U0hERVBTX2xpYnhlbmxpZ2h0ID0gJChTSExJQl9saWJ4ZW5jdHJsKSAkKFNITElCX2xpYnhlbnN0 b3JlKSAkKFNITElCX2xpYmJsa3RhcGN0bCkKK0NGTEFHU19saWJ4ZW5saWdodCA9IC1JJChYRU5f WEVOTElHSFQpICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX3hlbmluY2x1ZGUpICQoQ0ZM QUdTX2xpYnhlbnZjaGFuKQorU0hERVBTX2xpYnhlbmxpZ2h0ID0gJChTSExJQl9saWJ4ZW5jdHJs KSAkKFNITElCX2xpYnhlbnN0b3JlKSAkKFNITElCX2xpYmJsa3RhcGN0bCkgJChTSExJQl9saWJ4 ZW52Y2hhbikKIExETElCU19saWJ4ZW5saWdodCA9ICQoU0hERVBTX2xpYnhlbmxpZ2h0KSAkKFhF Tl9YRU5MSUdIVCkvbGlieGVubGlnaHQkKGxpYmV4dGVuc2lvbikKIFNITElCX2xpYnhlbmxpZ2h0 ICA9ICQoU0hERVBTX2xpYnhlbmxpZ2h0KSAtV2wsLXJwYXRoLWxpbms9JChYRU5fWEVOTElHSFQp CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlIGIvdG9vbHMvbGlieGwvTWFrZWZp bGUKaW5kZXggNmRhMzQyZS4uNTViMGI2MyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZp bGUKKysrIGIvdG9vbHMvbGlieGwvTWFrZWZpbGUKQEAgLTI0LDYgKzI0LDcgQEAgTElCWExfTElC UyA9ICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJ QlNfbGlieGVuY3RybCkKIGlmZXEgKCQoQ09ORklHX0xJQk5MKSx5KQogTElCWExfTElCUyArPSAk KExJQk5MM19MSUJTKQogZW5kaWYKK0xJQlhMX0xJQlMgKz0gJChMRExJQlNfbGlieGVudmNoYW4p CiAKIENGTEFHU19MSUJYTCArPSAkKENGTEFHU19saWJ4ZW50b29sbG9nKQogQ0ZMQUdTX0xJQlhM ICs9ICQoQ0ZMQUdTX2xpYnhlbnRvb2xjb3JlKQpAQCAtMzUsNiArMzYsNyBAQCBDRkxBR1NfTElC WEwgKz0gJChDRkxBR1NfbGliYmxrdGFwY3RsKQogaWZlcSAoJChDT05GSUdfTElCTkwpLHkpCiBD RkxBR1NfTElCWEwgKz0gJChMSUJOTDNfQ0ZMQUdTKQogZW5kaWYKK0NGTEFHU19MSUJYTCArPSAk KENGTEFHU19saWJ4ZW52Y2hhbikKIENGTEFHU19MSUJYTCArPSAtV3NoYWRvdwogCiBMSUJYTF9M SUJTLSQoQ09ORklHX0FSTSkgKz0gLWxmZHQKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhs X2RtLmMgYi90b29scy9saWJ4bC9saWJ4bF9kbS5jCmluZGV4IDZjZmMyNTYuLmI5YTUzZjMgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxf ZG0uYwpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgc3RhdGljIGludCBsaWJ4bF9fYnVpbGRfZGV2aWNl X21vZGVsX2FyZ3NfbmV3KGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgIi14 ZW4tZG9taWQiLAogICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCBndWVzdF9k b21pZCksIE5VTEwpOwogCi0gICAgLyogVGhlcmUgaXMgY3VycmVudGx5IG5vIHdheSB0byBhY2Nl c3MgdGhlIFFNUCBzb2NrZXQgaW4gdGhlIHN0dWJkb20gKi8KKyAgICAvKiBRTVAgYWNjZXNzIHRv IHFlbXUgcnVubmluZyBpbiBzdHViZG9tYWluIGlzIGRvbmUgb3ZlciB2Y2hhbiwgbm90IGxvY2Fs IHNvY2tldCAqLwogICAgIGlmICghaXNfc3R1YmRvbSkgewogICAgICAgICBmbGV4YXJyYXlfYXBw ZW5kKGRtX2FyZ3MsICItY2hhcmRldiIpOwogICAgICAgICBpZiAoc3RhdGUtPmRtX21vbml0b3Jf ZmQgPj0gMCkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rv b2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggMDA5NTgzNS4uOWE5MDNhNSAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5oCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2lu Y2x1ZGUgPHhlbmd1ZXN0Lmg+CiAjaW5jbHVkZSA8eGNfZG9tLmg+CisjaW5jbHVkZSA8bGlieGVu dmNoYW4uaD4KIAogI2luY2x1ZGUgPHhlbi10b29scy9saWJzLmg+CiAKQEAgLTUwOSw2ICs1MTAs MTIgQEAgc3RydWN0IGxpYnhsX19ldl9xbXAgewogICAgIGxpYnhsX19jYXJlZmQgKmNmZDsKICAg ICBsaWJ4bF9fZXZfZmQgZWZkOwogICAgIGxpYnhsX19xbXBfc3RhdGUgc3RhdGU7CisgICAgLyog cGlwZSB0byB3YWtlIGl0c2VsZiBpZiB0aGVyZSBpcyBtb3JlIGRhdGEgaW4gdmNoYW4gKi8KKyAg ICBsaWJ4bF9fY2FyZWZkICpwaXBlX2NmZF9yZWFkOworICAgIGxpYnhsX19jYXJlZmQgKnBpcGVf Y2ZkX3dyaXRlOworICAgIGxpYnhsX19ldl9mZCBwaXBlX2VmZDsKKyAgICBzdHJ1Y3QgbGlieGVu dmNoYW4gKnZjaGFuOworICAgIGxpYnhsX194c3dhaXRfc3RhdGUgeHN3YWl0OwogICAgIGludCBp ZDsKICAgICBpbnQgbmV4dF9pZDsgICAgICAgIC8qIG5leHQgaWQgdG8gdXNlICovCiAgICAgLyog cmVjZWl2ZSBidWZmZXIgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3FtcC5jIGIv dG9vbHMvbGlieGwvbGlieGxfcW1wLmMKaW5kZXggYTIzNTA5NS4uNDViOWY3NCAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfcW1wLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcW1wLmMK QEAgLTE0NjYsNiArMTQ2NiwxNCBAQCBzdGF0aWMgdm9pZCBkbV9zdGF0ZV9zYXZlZChsaWJ4bF9f ZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2LAogCiAvKiBwcm90b3R5cGVzICovCiAKK3N0YXRp YyBpbnQgcW1wX2V2X2Nvbm5lY3RfdmNoYW4obGlieGxfX2djICpnYywgbGlieGxfX2V2X3FtcCAq ZXYpOworc3RhdGljIHZvaWQgcW1wX3ZjaGFuX3dhdGNoX2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVn YywKKyAgICAgIGxpYnhsX194c3dhaXRfc3RhdGUgKnhzd2EsIGludCByYywgY29uc3QgY2hhciAq ZGF0YSk7CitzdGF0aWMgdm9pZCBxbXBfZXZfdmNoYW5fZmRfY2FsbGJhY2sobGlieGxfX2VnYyAq ZWdjLCBsaWJ4bF9fZXZfZmQgKmV2X2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBmZCwgc2hvcnQgZXZlbnRzLCBzaG9ydCByZXZlbnRzKTsKK3N0YXRpYyB2b2lkIHFtcF9l dl92Y2hhbl9waXBlX2ZkX2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X2ZkICpl dl9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZCwg c2hvcnQgZXZlbnRzLCBzaG9ydCByZXZlbnRzKTsKK3N0YXRpYyB2b2lkIHFtcF9ldl92Y2hhbl9z Y2hlZHVsZV93YWtldXAobGlieGxfX2V2X3FtcCAqZXYpOwogc3RhdGljIHZvaWQgcW1wX2V2X2Zk X2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X2ZkICpldl9mZCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmQsIHNob3J0IGV2ZW50cywgc2hvcnQgcmV2ZW50 cyk7CiBzdGF0aWMgaW50IHFtcF9ldl9jYWxsYmFja193cml0YWJsZShsaWJ4bF9fZ2MgKmdjLApA QCAtMTQ5MSw2ICsxNDk5LDE3IEBAIHN0YXRpYyB2b2lkIHFtcF9ldl9lbnN1cmVfcmVhZGluZ193 cml0aW5nKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19ldl9xbXAgKmV2KQogICAgIGVsc2UgaWYgKChl di0+c3RhdGUgPT0gcW1wX3N0YXRlX3dhaXRpbmdfcmVwbHkpICYmIGV2LT5tc2cpCiAgICAgICAg IGV2ZW50cyB8PSBQT0xMT1VUOwogCisgICAgaWYgKGV2LT52Y2hhbiB8fCBldi0+eHN3YWl0Lndo YXQpIHsKKyAgICAgICAgaWYgKGV2LT52Y2hhbiAmJgorICAgICAgICAgICAgICAgIGxpYnhlbnZj aGFuX2J1ZmZlcl9zcGFjZShldi0+dmNoYW4pICYmCisgICAgICAgICAgICAgICAgKGV2ZW50cyAm IFBPTExPVVQpKSB7CisgICAgICAgICAgICAvKiBJZiB2Y2hhbiBub3RpZmljYXRpb24gYWJvdXQg YXZhaWxhYmxlIGJ1ZmZlciBzcGFjZSB3YXMgcmVjZWl2ZWQKKyAgICAgICAgICAgICAqIGFscmVh ZHksIGl0IHdvbid0IGJlIGRpc3BhdGNoZWQgYWdhaW4sIHRyaWdnZXIgaXQgbWFudWFsbHkuICov CisgICAgICAgICAgICBxbXBfZXZfdmNoYW5fc2NoZWR1bGVfd2FrZXVwKGV2KTsKKyAgICAgICAg fQorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbGlieGxfX2V2X2ZkX21vZGlmeShnYywg JmV2LT5lZmQsIGV2ZW50cyk7CiB9CiAKQEAgLTE1NjQsNiArMTU4Myw4IEBAIHN0YXRpYyBpbnQg cW1wX2Vycm9yX2NsYXNzX3RvX2xpYnhsX2Vycm9yX2NvZGUobGlieGxfX2djICpnYywKIAogLyog U2V0dXAgY29ubmVjdGlvbiAqLwogCisvKiAgIC0gUU1QIG92ZXIgdW5peCBzb2NrZXQgKi8KKwog c3RhdGljIGludCBxbXBfZXZfY29ubmVjdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fZXZfcW1wICpl dikKICAgICAvKiBkaXNjb25uZWN0ZWQgLT4gY29ubmVjdGluZyBidXQgd2l0aCBgbXNnYCBmcmVl CiAgICAgICogb24gZXJyb3I6IGJyb2tlbiAqLwpAQCAtMTU3NSw2ICsxNTk2LDEwIEBAIHN0YXRp YyBpbnQgcW1wX2V2X2Nvbm5lY3QobGlieGxfX2djICpnYywgbGlieGxfX2V2X3FtcCAqZXYpCiAK ICAgICBhc3NlcnQoZXYtPnN0YXRlID09IHFtcF9zdGF0ZV9kaXNjb25uZWN0ZWQpOwogCisgICAg LyogdXNlIHZjaGFuIGNvbm5lY3Rpb24gZm9yIHN0dWJkb21haW4gKi8KKyAgICBpZiAobGlieGxf Z2V0X3N0dWJkb21faWQoQ1RYLCBldi0+ZG9taWQpKQorICAgICAgICByZXR1cm4gcW1wX2V2X2Nv bm5lY3RfdmNoYW4oZ2MsIGV2KTsKKwogICAgIHFtcF9zb2NrZXRfcGF0aCA9IGxpYnhsX19xZW11 X3FtcF9wYXRoKGdjLCBldi0+ZG9taWQpOwogCiAgICAgTE9HRChERUJVRywgZXYtPmRvbWlkLCAi Q29ubmVjdGluZyB0byAlcyIsIHFtcF9zb2NrZXRfcGF0aCk7CkBAIC0xNjE4LDYgKzE2NDMsMTA2 IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKKy8qICAgLSBRTVAgb3ZlciB2Y2hhbiAqLwor CitzdGF0aWMgaW50IHFtcF9ldl9jb25uZWN0X3ZjaGFuKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19l dl9xbXAgKmV2KQorICAgIC8qIGRpc2Nvbm5lY3RlZCAtPiBjb25uZWN0aW5nIGJ1dCB3aXRoIGBt c2dgIGZyZWUKKyAgICAgKiBvbiBlcnJvcjogYnJva2VuICovCit7CisgICAgaW50IGRtX2RvbWlk OworICAgIGludCByYzsKKworICAgIGFzc2VydChldi0+c3RhdGUgPT0gcW1wX3N0YXRlX2Rpc2Nv bm5lY3RlZCk7CisKKyAgICBkbV9kb21pZCA9IGxpYnhsX2dldF9zdHViZG9tX2lkKENUWCwgZXYt PmRvbWlkKTsKKyAgICBhc3NlcnQoZG1fZG9taWQgIT0gMCk7CisKKyAgICBldi0+eHN3YWl0LmFv ID0gZXYtPmFvOworICAgIGV2LT54c3dhaXQud2hhdCA9IEdDU1BSSU5URigicW1wIHZjaGFuIGZv ciAldSIsIGV2LT5kb21pZCk7CisgICAgZXYtPnhzd2FpdC5wYXRoID0gREVWSUNFX01PREVMX1hT X1BBVEgoZ2MsIGRtX2RvbWlkLCBldi0+ZG9taWQsICIvcW1wLXZjaGFuIik7CisgICAgZXYtPnhz d2FpdC50aW1lb3V0X21zID0gTElCWExfU1RVQkRPTV9TVEFSVF9USU1FT1VUICogMTAwMDsKKyAg ICBldi0+eHN3YWl0LmNhbGxiYWNrID0gcW1wX3ZjaGFuX3dhdGNoX2NhbGxiYWNrOworCisgICAg TE9HRChERUJVRywgZXYtPmRvbWlkLCAiQ29ubmVjdGluZyB0byB2Y2hhbiBhdCAlcyIsIGV2LT54 c3dhaXQucGF0aCk7CisKKyAgICByYyA9IGxpYnhsX194c3dhaXRfc3RhcnQoZ2MsICZldi0+eHN3 YWl0KTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgcW1wX2V2X3NldF9zdGF0ZShnYywg ZXYsIHFtcF9zdGF0ZV9jb25uZWN0aW5nKTsKKworICAgIHJldHVybiAwOworCitvdXQ6CisgICAg cmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCBxbXBfdmNoYW5fd2F0Y2hfY2FsbGJhY2sobGli eGxfX2VnYyAqZWdjLAorICAgICAgbGlieGxfX3hzd2FpdF9zdGF0ZSAqeHN3YSwgaW50IHJjLCBj b25zdCBjaGFyICpkYXRhKQoreworICAgIGxpYnhsX19ldl9xbXAgKmV2ID0gQ09OVEFJTkVSX09G KHhzd2EsICpldiwgeHN3YWl0KTsKKyAgICBTVEFURV9BT19HQyhldi0+YW8pOworICAgIGludCBk bV9kb21pZCA9IGxpYnhsX2dldF9zdHViZG9tX2lkKENUWCwgZXYtPmRvbWlkKTsKKyAgICBpbnQg cGlwZV9mZFsyXTsKKworICAgIGlmICghcmMpIHsKKyAgICAgICAgZXYtPnZjaGFuID0gbGlieGVu dmNoYW5fY2xpZW50X2luaXQoQ1RYLT5sZywgZG1fZG9taWQsIGV2LT54c3dhaXQucGF0aCk7Cisg ICAgICAgIGlmIChldi0+dmNoYW4pIHsKKyAgICAgICAgICAgIC8qIG9rICovCisgICAgICAgICAg ICBsaWJ4bF9feHN3YWl0X3N0b3AoZ2MsICZldi0+eHN3YWl0KTsKKworICAgICAgICAgICAgZXYt PnZjaGFuLT5ibG9ja2luZyA9IDA7CisKKyAgICAgICAgICAgIHJjID0gbGlieGxfX2V2X2ZkX3Jl Z2lzdGVyKGdjLCAmZXYtPmVmZCwgcW1wX2V2X3ZjaGFuX2ZkX2NhbGxiYWNrLAorICAgICAgICAg ICAgICAgICAgICBsaWJ4ZW52Y2hhbl9mZF9mb3Jfc2VsZWN0KGV2LT52Y2hhbiksIFBPTExJTik7 CisgICAgICAgICAgICBpZiAocmMpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAg ICAgICAgICAgbGlieGxfX2NhcmVmZF9iZWdpbigpOworICAgICAgICAgICAgcmMgPSBwaXBlKHBp cGVfZmQpOworICAgICAgICAgICAgaWYgKCFyYykgeworICAgICAgICAgICAgICAgIGV2LT5waXBl X2NmZF9yZWFkID0gbGlieGxfX2NhcmVmZF9yZWNvcmQoQ1RYLCBwaXBlX2ZkWzBdKTsKKyAgICAg ICAgICAgICAgICBldi0+cGlwZV9jZmRfd3JpdGUgPSBsaWJ4bF9fY2FyZWZkX3JlY29yZChDVFgs IHBpcGVfZmRbMV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGlieGxfX2NhcmVmZF91 bmxvY2soKTsKKyAgICAgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgIExPR0VEKEVS Uk9SLCBldi0+ZG9taWQsICJwaXBlKCkgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgcmMgPSBF UlJPUl9GQUlMOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBpZiAoIWV2LT5waXBlX2NmZF9yZWFkIHx8ICFldi0+cGlwZV9jZmRfd3JpdGUp IHsKKyAgICAgICAgICAgICAgICBMT0dFRChFUlJPUiwgZXYtPmRvbWlkLCAicGlwZSBGRCByZWdp c3RyYXRpb24gZmFpbGVkIik7CisgICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAg ICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByYyA9 IGxpYnhsX19ldl9mZF9yZWdpc3RlcihnYywgJmV2LT5waXBlX2VmZCwgcW1wX2V2X3ZjaGFuX3Bp cGVfZmRfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgIGxpYnhsX19jYXJlZmRfZmQoZXYt PnBpcGVfY2ZkX3JlYWQpLCBQT0xMSU4pOworICAgICAgICAgICAgaWYgKHJjKQorICAgICAgICAg ICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSBpZiAoZXJybm8gPT0gRU5PRU5UKSB7 CisgICAgICAgICAgICAvKiBub3QgcmVhZHkgeWV0LCB3YWl0ICovCisgICAgICAgICAgICByZXR1 cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMT0dFRChFUlJPUiwgZXYtPmRvbWlk LCAiQ29ubmVjdGlvbiB0byBxbXAgdmNoYW4gZm9yICV1IGZhaWxlZCIsIGV2LT5kb21pZCk7Cisg ICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo IXJjKQorICAgICAgICByZXR1cm47CisKK2Vycm9yOgorCisgICAgaWYgKHJjPT1FUlJPUl9USU1F RE9VVCB8fCByYz09RVJST1JfQUJPUlRFRCkKKyAgICAgICAgTE9HRChFUlJPUiwgZXYtPmRvbWlk LCAiQ29ubmVjdGlvbiB0byBxbXAgdmNoYW4gZm9yICV1IHRpbWVkIG91dCIsIGV2LT5kb21pZCk7 CisKKyAgICAvKiBPbiBlcnJvciwgZGVhbGxvY2F0ZSBhbGwgcHJpdmF0ZSByZXNzb3VyY2VzICov CisgICAgbGlieGxfX2V2X3FtcF9kaXNwb3NlKGdjLCBldik7CisKKyAgICAvKiBBbmQgdGVsbCBs aWJ4bF9fZXZfcW1wIHVzZXIgYWJvdXQgdGhlIGVycm9yICovCisgICAgZXYtPmNhbGxiYWNrKGVn YywgZXYsIE5VTEwsIHJjKTsgLyogbXVzdCBiZSBsYXN0ICovCit9CisKKwogLyogUU1QIEZEIGNh bGxiYWNrcyAqLwogCiBzdGF0aWMgdm9pZCBxbXBfZXZfZmRfY2FsbGJhY2sobGlieGxfX2VnYyAq ZWdjLCBsaWJ4bF9fZXZfZmQgKmV2X2ZkLApAQCAtMTY5MCw2ICsxODE1LDEwNSBAQCBlcnJvcjoK ICAgICBldi0+Y2FsbGJhY2soZWdjLCBldiwgTlVMTCwgcmMpOyAvKiBtdXN0IGJlIGxhc3QgKi8K IH0KIAorLyogTWFrZSBzdXJlIHZjaGFuIGV2ZW50cyB3aWxsIGJlIGhhbmRsZWQgZXZlbiBpZiBu byBuZXcgbm90aWZpY2F0aW9uIGlzIHNlbnQuCisgKi8KK3N0YXRpYyB2b2lkIHFtcF9ldl92Y2hh bl9zY2hlZHVsZV93YWtldXAobGlieGxfX2V2X3FtcCAqZXYpCit7CisgICAgYXNzZXJ0KGV2LT5w aXBlX2NmZF93cml0ZSk7CisgICAgd3JpdGUobGlieGxfX2NhcmVmZF9mZChldi0+cGlwZV9jZmRf d3JpdGUpLCAiLiIsIDEpOworfQorCitzdGF0aWMgaW50IHFtcF9ldl92Y2hhbl9oYW5kbGVfcmVh ZF93cml0ZShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2KQoreworICAgIGludCBy YzsKKyAgICBTVEFURV9BT19HQyhldi0+YW8pOworCisgICAgcmMgPSBxbXBfZXZfY2FsbGJhY2tf cmVhZGFibGUoZWdjLCBldiwgLTEpOworICAgIGlmIChyYykKKyAgICAgICAgLyogcmV0dXJucyBi b3RoIHJjIHZhbHVlcyAtRVJST1JfKiBhbmQgMSAqLworICAgICAgICByZXR1cm4gcmM7CisKKyAg ICBpZiAoZXYtPnR4X2J1ZiB8fCAoKGV2LT5zdGF0ZSA9PSBxbXBfc3RhdGVfd2FpdGluZ19yZXBs eSkgJiYgZXYtPm1zZykpIHsKKyAgICAgICAgcmMgPSBxbXBfZXZfY2FsbGJhY2tfd3JpdGFibGUo Z2MsIGV2LCAtMSk7CisgICAgICAgIGlmIChyYykKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAg ICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHFtcF9ldl92Y2hhbl9mZF9jYWxs YmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9mZCAqZXZfZmQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGZkLCBzaG9ydCBldmVudHMsIHNob3J0IHJldmVudHMpCisg ICAgLyogT24gZW50cnksIGV2X2ZkIGlzIChvZiBjb3Vyc2UpIEFjdGl2ZS4gIFRoZSBldl9xbXAg bWF5IGJlIGluIGFueQorICAgICAqIHN0YXRlIHdoZXJlIHRoaXMgaXMgcGVybWl0dGVkLiAgcW1w X2V2X3ZjaGFuX2ZkX2NhbGxiYWNrIHdpbGwgZG8gdGhlIHdvcmsKKyAgICAgKiBuZWNlc3Nhcnkg dG8gbWFrZSBwcm9ncmVzcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHN0YXRlLCBhbmQgbWFr ZQorICAgICAqIHRoZSBhcHByb3ByaWF0ZSBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgY2FsbGJhY2tz LiAgKi8KK3sKKyAgICBsaWJ4bF9fZXZfcW1wICpldiA9IENPTlRBSU5FUl9PRihldl9mZCwgKmV2 LCBlZmQpOworICAgIFNUQVRFX0FPX0dDKGV2LT5hbyk7CisgICAgaW50IHJjOworCisgICAgYXNz ZXJ0KGV2LT52Y2hhbik7CisKKyAgICBpZiAocmV2ZW50cyAmIH4oUE9MTElOKSkgeworICAgICAg ICBMT0dEKEVSUk9SLCBldi0+ZG9taWQsCisgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcG9sbCBl dmVudCAweCV4IG9uIFFNUCB2Y2hhbiBGRCAoZXhwZWN0ZWQgUE9MTElOKSIsCisgICAgICAgICAg ICByZXZlbnRzKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3RvIGVycm9y OworICAgIH0KKworICAgIGlmIChyZXZlbnRzICYgUE9MTElOKSB7CisgICAgICAgIGxpYnhlbnZj aGFuX3dhaXQoZXYtPnZjaGFuKTsKKyAgICAgICAgcmMgPSBxbXBfZXZfdmNoYW5faGFuZGxlX3Jl YWRfd3JpdGUoZWdjLCBldik7CisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICBnb3Rv IGVycm9yOworICAgIH0KKworICAgIHJldHVybjsKKworZXJyb3I6CisgICAgYXNzZXJ0KHJjKTsK KworICAgIExPR0QoRVJST1IsIGV2LT5kb21pZCwKKyAgICAgICAgICJFcnJvciBoYXBwZW5lZCB3 aXRoIHRoZSBRTVAgY29ubmVjdGlvbiB0byBRRU1VIik7CisKKyAgICAvKiBPbiBlcnJvciwgZGVh bGxvY2F0ZSBhbGwgcHJpdmF0ZSByZXNzb3VyY2VzICovCisgICAgbGlieGxfX2V2X3FtcF9kaXNw b3NlKGdjLCBldik7CisKKyAgICAvKiBBbmQgdGVsbCBsaWJ4bF9fZXZfcW1wIHVzZXIgYWJvdXQg dGhlIGVycm9yICovCisgICAgZXYtPmNhbGxiYWNrKGVnYywgZXYsIE5VTEwsIHJjKTsgLyogbXVz dCBiZSBsYXN0ICovCit9CisKK3N0YXRpYyB2b2lkIHFtcF9ldl92Y2hhbl9waXBlX2ZkX2NhbGxi YWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X2ZkICpldl9mZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZCwgc2hvcnQgZXZlbnRzLCBzaG9ydCBy ZXZlbnRzKQoreworICAgIGNoYXIgYnVmWzFdOworICAgIGludCByYyA9IDA7CisgICAgbGlieGxf X2V2X3FtcCAqZXYgPSBDT05UQUlORVJfT0YoZXZfZmQsICpldiwgcGlwZV9lZmQpOworICAgIFNU QVRFX0FPX0dDKGV2LT5hbyk7CisKKyAgICBpZiAocmV2ZW50cyAmIFBPTExJTikgeworICAgICAg ICByZWFkKGZkLCBidWYsIDEpOworICAgICAgICByYyA9IHFtcF9ldl92Y2hhbl9oYW5kbGVfcmVh ZF93cml0ZShlZ2MsIGV2KTsKKyAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgIGdvdG8g ZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuOworCitlcnJvcjoKKyAgICBhc3NlcnQocmMpOwor CisgICAgTE9HRChFUlJPUiwgZXYtPmRvbWlkLAorICAgICAgICAgIkVycm9yIGhhcHBlbmVkIHdp dGggdGhlIFFNUCBjb25uZWN0aW9uIHRvIFFFTVUiKTsKKworICAgIC8qIE9uIGVycm9yLCBkZWFs bG9jYXRlIGFsbCBwcml2YXRlIHJlc3NvdXJjZXMgKi8KKyAgICBsaWJ4bF9fZXZfcW1wX2Rpc3Bv c2UoZ2MsIGV2KTsKKworICAgIC8qIEFuZCB0ZWxsIGxpYnhsX19ldl9xbXAgdXNlciBhYm91dCB0 aGUgZXJyb3IgKi8KKyAgICBldi0+Y2FsbGJhY2soZWdjLCBldiwgTlVMTCwgcmMpOyAvKiBtdXN0 IGJlIGxhc3QgKi8KK30KKwogc3RhdGljIGludCBxbXBfZXZfY2FsbGJhY2tfd3JpdGFibGUobGli eGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19l dl9xbXAgKmV2LCBpbnQgZmQpCiAgICAgLyogb24gZW50cnk6ICFkaXNjb25uZWN0ZWQKQEAgLTE3 MjUsNiArMTk0OSwxMyBAQCBzdGF0aWMgaW50IHFtcF9ldl9jYWxsYmFja193cml0YWJsZShsaWJ4 bF9fZ2MgKmdjLAogICAgICAgICBldi0+cGF5bG9hZF9mZCA+PSAwICYmCiAgICAgICAgIGV2LT50 eF9idWZfb2ZmID09IDApIHsKIAorICAgICAgICAvKiBzZW5kaW5nIEZEcyBub3Qgc3VwcG9ydGVk IG92ZXIgdmNoYW4gKi8KKyAgICAgICAgaWYgKGV2LT52Y2hhbikgeworICAgICAgICAgICAgLyog WFhYIHNob3VsZCBpdCBiZSBhc3NlcnQ/ICovCisgICAgICAgICAgICBMT0dFRChFUlJPUiwgZXYt PmRvbWlkLCAiU2VuZGluZyBGRCBvdmVyIHZjaGFuIGNvbm5lY3Rpb24gbm90IHN1cHBvcnRlZCIp OworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX05JOworICAgICAgICB9CisKICAgICAgICAgcmMg PSBsaWJ4bF9fc2VuZG1zZ19mZHMoZ2MsIGZkLCBldi0+dHhfYnVmW2V2LT50eF9idWZfb2ZmXSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmV2LT5wYXlsb2FkX2ZkLCAiUU1Q IHNvY2tldCIpOwogICAgICAgICAvKiBDaGVjayBmb3IgRVdPVUxEQkxPQ0ssIGFuZCByZXR1cm4g dG8gdHJ5IGFnYWluIGxhdGVyICovCkBAIC0xNzM3LDcgKzE5NjgsMTYgQEAgc3RhdGljIGludCBx bXBfZXZfY2FsbGJhY2tfd3JpdGFibGUobGlieGxfX2djICpnYywKIAogICAgIHdoaWxlIChldi0+ dHhfYnVmX29mZiA8IGV2LT50eF9idWZfbGVuKSB7CiAgICAgICAgIHNzaXplX3QgbWF4X3dyaXRl ID0gZXYtPnR4X2J1Zl9sZW4gLSBldi0+dHhfYnVmX29mZjsKLSAgICAgICAgciA9IHdyaXRlKGZk LCBldi0+dHhfYnVmICsgZXYtPnR4X2J1Zl9vZmYsIG1heF93cml0ZSk7CisgICAgICAgIGlmIChl di0+dmNoYW4pIHsKKyAgICAgICAgICAgIHIgPSBsaWJ4ZW52Y2hhbl93cml0ZShldi0+dmNoYW4s IGV2LT50eF9idWYgKyBldi0+dHhfYnVmX29mZiwgbWF4X3dyaXRlKTsKKyAgICAgICAgICAgIC8q IGxpYnhlbnZjaGFuX3dyaXRlIHJldHVybnMgMCBpZiBubyBzcGFjZSBsZWZ0LCB0cmFuc2xhdGUg dG8gRVdPVUxEQkxPQ0sgKi8KKyAgICAgICAgICAgIGlmIChyID09IDApIHsKKyAgICAgICAgICAg ICAgICByID0gLTE7CisgICAgICAgICAgICAgICAgZXJybm8gPSBFV09VTERCTE9DSzsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHIgPSB3cml0ZShmZCwgZXYt PnR4X2J1ZiArIGV2LT50eF9idWZfb2ZmLCBtYXhfd3JpdGUpOworICAgICAgICB9CiAgICAgICAg IGlmIChyIDwgMCkgewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKQogICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwpAQCAtMTc5MCw2ICsyMDMwLDI0IEBAIHN0YXRpYyBpbnQgcW1wX2V2 X2NhbGxiYWNrX3JlYWRhYmxlKGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgIGVsc2UgaWYg KHJjKQogICAgICAgICAgICAgICAgIHJldHVybiByYzsKIAorICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAqIFdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNpbXVsdGFuZW91c2wg cmVxdWVzdHMgKG9yIGV2ZW50cyksCisgICAgICAgICAgICAgKiBwb3NzaWJseSBtdWx0aXBsZSBy ZXNwb25zZXMgd2lsbCBiZSBhbHJlYWR5IHdhaXRpbmcgaW4gdmNoYW4KKyAgICAgICAgICAgICAq IGJ1ZmZlci4gJ2V2JyBjYW4ndCBiZSB0b3VjaGVkIGhlcmUgYWZ0ZXIgY2FsbGluZyB1c2VyIGNh bGxiYWNrLAorICAgICAgICAgICAgICogc28gcmVtYWluaW5nIG1lc3NhZ2VzIG1heSBiZSBwcm9j ZXNzZWQgaW4gdGhlIG5leHQgY2FsbGJhY2sKKyAgICAgICAgICAgICAqIChxbXBfZXZfZmRfY2Fs bGJhY2svcW1wX2V2X3ZjaGFuX2ZkX2NhbGxiYWNrKS4gQnV0IGlmIGF0IHRoaXMKKyAgICAgICAg ICAgICAqIHBvaW50IGFsbCB0aGUgZGF0YSBpcyBhbHJlYWR5IGluIHZjaGFuIGJ1ZmZlciBhbmQg cWVtdSB3aWxsIG5vdAorICAgICAgICAgICAgICogd3JpdGUgYW55dGhpbmcgbW9yZSwgbm8gdmNo YW4gbm90aWZpY2F0aW9uIHdpbGwgYmUgaXNzdWVkCisgICAgICAgICAgICAgKiAoZXYtPmVmZCB3 aWxsIG5vdCByZXBvcnQgUE9MTElOKS4gQmVjYXVzZSBvZiB0aGlzLCB0aGUgY2FsbGJhY2sKKyAg ICAgICAgICAgICAqIHdpbGwgbmVlZCB0byBiZSB0cmlnZ2VyZWQgdGhlIG90aGVyIHdheToKKyAg ICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBpZiAoZXYtPnZjaGFuICYmIGxpYnhlbnZjaGFu X2RhdGFfcmVhZHkoZXYtPnZjaGFuKSkKKyAgICAgICAgICAgICAqICAgICBxbXBfZXZfdmNoYW5f c2NoZWR1bGVfd2FrZXVwKGV2KTsKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBXaXRo IG9ubHkgb25lIHFtcCByZXF1ZXN0IHBlbmRpbmcsIHRoaXMgaXNuJ3QgbmVlZGVkLCBhcyBpZiB1 c2VyCisgICAgICAgICAgICAgKiBjYWxsYmFjayBpcyBjYWxsZWQsIHRoZXJlIGFyZSBubyBtb3Jl IChpbnRlcmVzdGluZykgbWVzc2FnZXMgaW4KKyAgICAgICAgICAgICAqIHRoZSB2Y2hhbiBidWZm ZXIgKHRoZXJlIHdhcyBvbmx5IG9uZSkuCisgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIC8q IE11c3QgYmUgbGFzdCBhbmQgcmV0dXJuIHdoZW4gdGhlIHVzZXIgY2FsbGJhY2sgaXMgY2FsbGVk ICovCiAgICAgICAgICAgICByYyA9IHFtcF9ldl9oYW5kbGVfbWVzc2FnZShlZ2MsIGV2LCBvKTsK ICAgICAgICAgICAgIGlmIChyYykKQEAgLTE4MTEsOCArMjA2OSwxOCBAQCBzdGF0aWMgaW50IHFt cF9ldl9jYWxsYmFja19yZWFkYWJsZShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAgICBldi0+ cnhfYnVmID0gbGlieGxfX3JlYWxsb2MoZ2MsIGV2LT5yeF9idWYsIGV2LT5yeF9idWZfc2l6ZSk7 CiAgICAgICAgIH0KIAotICAgICAgICByID0gcmVhZChmZCwgZXYtPnJ4X2J1ZiArIGV2LT5yeF9i dWZfdXNlZCwKLSAgICAgICAgICAgICAgICAgZXYtPnJ4X2J1Zl9zaXplIC0gZXYtPnJ4X2J1Zl91 c2VkKTsKKyAgICAgICAgaWYgKGV2LT52Y2hhbikgeworICAgICAgICAgICAgciA9IGxpYnhlbnZj aGFuX3JlYWQoZXYtPnZjaGFuLCBldi0+cnhfYnVmICsgZXYtPnJ4X2J1Zl91c2VkLAorICAgICAg ICAgICAgICAgICAgICBldi0+cnhfYnVmX3NpemUgLSBldi0+cnhfYnVmX3VzZWQpOworICAgICAg ICAgICAgLyogdHJhbnNsYXRlIHIgPT0gMCB0byBFV09VTERCTE9DSyAqLworICAgICAgICAgICAg aWYgKHIgPT0gMCkgeworICAgICAgICAgICAgICAgIHIgPSAtMTsKKyAgICAgICAgICAgICAgICBl cnJubyA9IEVXT1VMREJMT0NLOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgciA9IHJlYWQoZmQsIGV2LT5yeF9idWYgKyBldi0+cnhfYnVmX3VzZWQsCisgICAg ICAgICAgICAgICAgICAgICBldi0+cnhfYnVmX3NpemUgLSBldi0+cnhfYnVmX3VzZWQpOworICAg ICAgICB9CiAgICAgICAgIGlmIChyIDwgMCkgewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVJ TlRSKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjA5OCw3ICsyMzY2LDE0IEBAIHZv aWQgbGlieGxfX2V2X3FtcF9pbml0KGxpYnhsX19ldl9xbXAgKmV2KQogICAgIGV2LT5uZXh0X2lk ID0gMHg3ODZjNzEwMDsKIAogICAgIGV2LT5jZmQgPSBOVUxMOworICAgIGV2LT5waXBlX2NmZF9y ZWFkID0gTlVMTDsKKyAgICBldi0+cGlwZV9jZmRfd3JpdGUgPSBOVUxMOworICAgIGV2LT52Y2hh biA9IE5VTEw7CisgICAgbGlieGxfX3hzd2FpdF9pbml0KCZldi0+eHN3YWl0KTsKKyAgICBldi0+ eHN3YWl0LndoYXQgPSBOVUxMOworICAgIGV2LT54c3dhaXQucGF0aCA9IE5VTEw7CiAgICAgbGli eGxfX2V2X2ZkX2luaXQoJmV2LT5lZmQpOworICAgIGxpYnhsX19ldl9mZF9pbml0KCZldi0+cGlw ZV9lZmQpOwogICAgIGV2LT5zdGF0ZSA9IHFtcF9zdGF0ZV9kaXNjb25uZWN0ZWQ7CiAgICAgZXYt PmlkID0gMDsKIApAQCAtMjE2Miw3ICsyNDM3LDE3IEBAIHZvaWQgbGlieGxfX2V2X3FtcF9kaXNw b3NlKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19ldl9xbXAgKmV2KQogICAgIExPR0QoREVCVUcsIGV2 LT5kb21pZCwgIiBldiAlcCIsIGV2KTsKIAogICAgIGxpYnhsX19ldl9mZF9kZXJlZ2lzdGVyKGdj LCAmZXYtPmVmZCk7Ci0gICAgbGlieGxfX2NhcmVmZF9jbG9zZShldi0+Y2ZkKTsKKyAgICBpZiAo ZXYtPnZjaGFuKQorICAgICAgICBsaWJ4ZW52Y2hhbl9jbG9zZShldi0+dmNoYW4pOworICAgIGVs c2UKKyAgICAgICAgbGlieGxfX2NhcmVmZF9jbG9zZShldi0+Y2ZkKTsKKyAgICBpZiAoZXYtPnBp cGVfY2ZkX3JlYWQpIHsKKyAgICAgICAgbGlieGxfX2V2X2ZkX2RlcmVnaXN0ZXIoZ2MsICZldi0+ cGlwZV9lZmQpOworICAgICAgICBsaWJ4bF9fY2FyZWZkX2Nsb3NlKGV2LT5waXBlX2NmZF9yZWFk KTsKKyAgICB9CisgICAgaWYgKGV2LT5waXBlX2NmZF93cml0ZSkgeworICAgICAgICBsaWJ4bF9f Y2FyZWZkX2Nsb3NlKGV2LT5waXBlX2NmZF93cml0ZSk7CisgICAgfQogCiAgICAgbGlieGxfX2V2 X3FtcF9pbml0KGV2KTsKIH0KLS0gCmdpdC1zZXJpZXMgMC45LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=