From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Ortiz Subject: [PATCH v5 01/24] hw: i386: Decouple the ACPI build from the PC machine type Date: Mon, 5 Nov 2018 02:40:24 +0100 Message-ID: <20181105014047.26447-2-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gJTti-0003Tv-2p for xen-devel@lists.xenproject.org; Mon, 05 Nov 2018 01:41:46 +0000 In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Shannon Zhao , Igor Mammedov , qemu-arm@nongnu.org, Marcel Apfelbaum , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Richard Henderson List-Id: xen-devel@lists.xenproject.org QUNQSSB0YWJsZXMgYXJlIHBsYXRmb3JtIGFuZCBtYWNoaW5lIHR5cGUgYW5kIGV2ZW4gYXJjaGl0 ZWN0dXJlCmFnbm9zdGljLCBhbmQgYXMgc3VjaCB3ZSB3YW50IHRvIHByb3ZpZGUgYW4gaW50ZXJu YWwgQUNQSSBBUEkgdGhhdApvbmx5IGRlcGVuZHMgb24gcGxhdGZvcm0gYWdub3N0aWMgaW5mb3Jt YXRpb24uCgpGb3IgdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGluIG9yZGVyIHRvIGJ1aWxkIEFDUEkg dGFibGVzIGluZGVwZW5kZW50bHkKZnJvbSB0aGUgUEMgb3IgUTM1IG1hY2hpbmUgdHlwZXMsIHdl IGFyZSBtb3ZpbmcgYSBmZXcgTWFjaGluZVN0YXRlCnN0cnVjdHVyZSBmaWVsZHMgaW50byBhIG1h Y2hpbmUgdHlwZSBhZ25vc3RpYyBzdHJ1Y3R1cmUgY2FsbGVkCkFjcGlDb25maWd1cmF0aW9uLiBU aGUgc3RydWN0dXJlIGZpZWxkcyB3ZSBtb3ZlIGFyZToKCiAgIEhvdHBsdWdIYW5kbGVyICphY3Bp X2RldgogICBBY3BpTlZESU1NU3RhdGUgYWNwaV9udmRpbW1fc3RhdGU7CiAgIEZXQ2ZnU3RhdGUg KmZ3X2NmZwogICByYW1fYWRkcl90IGJlbG93XzRnX21lbV9zaXplLCBhYm92ZV80Z19tZW1fc2l6 ZQogICBib29sIGFwaWNfeHJ1cHRfb3ZlcnJpZGUKICAgdW5zaWduZWQgYXBpY19pZF9saW1pdAog ICB1aW50NjRfdCBudW1hX25vZGVzCiAgIHVpbnQ2NF90IG51bWFfbWVtCgpTaWduZWQtb2ZmLWJ5 OiBTYW11ZWwgT3J0aXogPHNhbWVvQGxpbnV4LmludGVsLmNvbT4KLS0tCiBody9pMzg2L2FjcGkt YnVpbGQuaCAgICAgfCAgIDQgKy0KIGluY2x1ZGUvaHcvYWNwaS9hY3BpLmggICB8ICA0NCArKysr KysrKysrCiBpbmNsdWRlL2h3L2kzODYvcGMuaCAgICAgfCAgMTkgKystLS0KIGh3L2FjcGkvY3B1 X2hvdHBsdWcuYyAgICB8ICAgOSArLQogaHcvYXJtL3ZpcnQtYWNwaS1idWlsZC5jIHwgIDEwIC0t LQogaHcvaTM4Ni9hY3BpLWJ1aWxkLmMgICAgIHwgMTM2ICsrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLQogaHcvaTM4Ni9wYy5jICAgICAgICAgICAgIHwgMTc2ICsrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogaHcvaTM4Ni9wY19waWl4LmMgICAgICAgIHwgIDIxICsr LS0tCiBody9pMzg2L3BjX3EzNS5jICAgICAgICAgfCAgMjEgKystLS0KIGh3L2kzODYveGVuL3hl bi1odm0uYyAgICB8ICAxOSArKystLQogMTAgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMo KyksIDIwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9pMzg2L2FjcGktYnVpbGQuaCBi L2h3L2kzODYvYWNwaS1idWlsZC5oCmluZGV4IDAwNzMzMmU1MWMuLjA2NWExZDgyNTAgMTAwNjQ0 Ci0tLSBhL2h3L2kzODYvYWNwaS1idWlsZC5oCisrKyBiL2h3L2kzODYvYWNwaS1idWlsZC5oCkBA IC0yLDYgKzIsOCBAQAogI2lmbmRlZiBIV19JMzg2X0FDUElfQlVJTERfSAogI2RlZmluZSBIV19J Mzg2X0FDUElfQlVJTERfSAogCi12b2lkIGFjcGlfc2V0dXAodm9pZCk7CisjaW5jbHVkZSAiaHcv YWNwaS9hY3BpLmgiCisKK3ZvaWQgYWNwaV9zZXR1cChNYWNoaW5lU3RhdGUgKm1hY2hpbmUsIEFj cGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvaHcvYWNwaS9hY3BpLmggYi9pbmNsdWRlL2h3L2FjcGkvYWNwaS5oCmluZGV4IGMyMGFjZTBk MGIuLjI1NGM4ZDBjZmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcvYWNwaS9hY3BpLmgKKysrIGIv aW5jbHVkZS9ody9hY3BpL2FjcGkuaApAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgImV4ZWMv bWVtb3J5LmgiCiAjaW5jbHVkZSAiaHcvaXJxLmgiCiAjaW5jbHVkZSAiaHcvYWNwaS9hY3BpX2Rl dl9pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJody9ob3RwbHVnLmgiCisjaW5jbHVkZSAiaHcvbWVt L252ZGltbS5oIgogCiAvKgogICogY3VycmVudCBkZXZpY2UgbmFtaW5nIHNjaGVtZSBzdXBwb3J0 cyB1cCB0byAyNTYgbWVtb3J5IGRldmljZXMKQEAgLTE4Niw2ICsxODgsNDggQEAgZXh0ZXJuIGlu dCBhY3BpX2VuYWJsZWQ7CiBleHRlcm4gY2hhciB1bnNpZ25lZCAqYWNwaV90YWJsZXM7CiBleHRl cm4gc2l6ZV90IGFjcGlfdGFibGVzX2xlbjsKIAordHlwZWRlZgorc3RydWN0IEFjcGlCdWlsZFN0 YXRlIHsKKyAgICAvKiBDb3B5IG9mIHRhYmxlIGluIFJBTSAoZm9yIHBhdGNoaW5nKS4gKi8KKyAg ICBNZW1vcnlSZWdpb24gKnRhYmxlX21yOworICAgIC8qIElzIHRhYmxlIHBhdGNoZWQ/ICovCisg ICAgYm9vbCBwYXRjaGVkOworICAgIHZvaWQgKnJzZHA7CisgICAgTWVtb3J5UmVnaW9uICpyc2Rw X21yOworICAgIE1lbW9yeVJlZ2lvbiAqbGlua2VyX21yOworfSBBY3BpQnVpbGRTdGF0ZTsKKwor dHlwZWRlZgorc3RydWN0IEFjcGlDb25maWd1cmF0aW9uIHsKKyAgICAvKiBNYWNoaW5lIGNsYXNz IEFDUEkgc2V0dGluZ3MgKi8KKyAgICBpbnQgbGVnYWN5X2FjcGlfdGFibGVfc2l6ZTsKKyAgICBi b29sIHJzZHBfaW5fcmFtOworICAgIHVuc2lnbmVkIGFjcGlfZGF0YV9zaXplOworCisgICAgLyog TWFjaGluZSBzdGF0ZSBBQ1BJIHNldHRpbmdzICovCisgICAgSG90cGx1Z0hhbmRsZXIgKmFjcGlf ZGV2OworICAgIEFjcGlOVkRJTU1TdGF0ZSBhY3BpX252ZGltbV9zdGF0ZTsKKworICAgIC8qCisg ICAgICogVGhlIGZpZWxkcyBiZWxvdyBhcmUgbWFjaGluZSBzZXR0aW5ncyB0aGF0CisgICAgICog YXJlIG5vdCBBQ1BJIHNwZWNpZmljLiBIb3dldmVyIHRoZXkgYXJlIG5lZWRlZAorICAgICAqIGZv ciBidWlsZGluZyBBQ1BJIHRhYmxlcyBhbmQgYXMgc3VjaCBzaG91bGQgYmUKKyAgICAgKiBjYXJy aWVkIHRocm91Z2ggdGhlIEFDUEkgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuCisgICAgICovCisg ICAgYm9vbCBsZWdhY3lfY3B1X2hvdHBsdWc7CisgICAgYm9vbCBsaW51eGJvb3RfZG1hX2VuYWJs ZWQ7CisgICAgRldDZmdTdGF0ZSAqZndfY2ZnOworICAgIHJhbV9hZGRyX3QgYmVsb3dfNGdfbWVt X3NpemUsIGFib3ZlXzRnX21lbV9zaXplOzsKKyAgICB1aW50NjRfdCBudW1hX25vZGVzOworICAg IHVpbnQ2NF90ICpub2RlX21lbTsKKyAgICBib29sIGFwaWNfeHJ1cHRfb3ZlcnJpZGU7CisgICAg dW5zaWduZWQgYXBpY19pZF9saW1pdDsKKyAgICBQQ0lIb3N0U3RhdGUgKnBjaV9ob3N0OworCisg ICAgLyogQnVpbGQgc3RhdGUgKi8KKyAgICBBY3BpQnVpbGRTdGF0ZSAqYnVpbGRfc3RhdGU7Cit9 IEFjcGlDb25maWd1cmF0aW9uOworCiB1aW50OF90ICphY3BpX3RhYmxlX2ZpcnN0KHZvaWQpOwog dWludDhfdCAqYWNwaV90YWJsZV9uZXh0KHVpbnQ4X3QgKmN1cnJlbnQpOwogdW5zaWduZWQgYWNw aV90YWJsZV9sZW4odm9pZCAqY3VycmVudCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L2kzODYv cGMuaCBiL2luY2x1ZGUvaHcvaTM4Ni9wYy5oCmluZGV4IDEzNmZlNDk3YjYuLmZlZDEzNmZjZGQg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcvaTM4Ni9wYy5oCisrKyBiL2luY2x1ZGUvaHcvaTM4Ni9w Yy5oCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAicWVtdS9yYW5nZS5oIgogI2luY2x1ZGUg InFlbXUvYml0bWFwLmgiCiAjaW5jbHVkZSAic3lzZW11L3N5c2VtdS5oIgorI2luY2x1ZGUgImh3 L2FjcGkvYWNwaS5oIgogI2luY2x1ZGUgImh3L3BjaS9wY2kuaCIKICNpbmNsdWRlICJody9jb21w YXQuaCIKICNpbmNsdWRlICJody9tZW0vcGMtZGltbS5oIgpAQCAtMzUsMTAgKzM2LDggQEAgc3Ry dWN0IFBDTWFjaGluZVN0YXRlIHsKICAgICBOb3RpZmllciBtYWNoaW5lX2RvbmU7CiAKICAgICAv KiBQb2ludGVycyB0byBkZXZpY2VzIGFuZCBvYmplY3RzOiAqLwotICAgIEhvdHBsdWdIYW5kbGVy ICphY3BpX2RldjsKICAgICBJU0FEZXZpY2UgKnJ0YzsKICAgICBQQ0lCdXMgKmJ1czsKLSAgICBG V0NmZ1N0YXRlICpmd19jZmc7CiAgICAgcWVtdV9pcnEgKmdzaTsKIAogICAgIC8qIENvbmZpZ3Vy YXRpb24gb3B0aW9uczogKi8KQEAgLTQ2LDI4ICs0NSwyMCBAQCBzdHJ1Y3QgUENNYWNoaW5lU3Rh dGUgewogICAgIE9uT2ZmQXV0byB2bXBvcnQ7CiAgICAgT25PZmZBdXRvIHNtbTsKIAotICAgIEFj cGlOVkRJTU1TdGF0ZSBhY3BpX252ZGltbV9zdGF0ZTsKLQogICAgIGJvb2wgYWNwaV9idWlsZF9l bmFibGVkOwogICAgIGJvb2wgc21idXM7CiAgICAgYm9vbCBzYXRhOwogICAgIGJvb2wgcGl0Owog Ci0gICAgLyogUkFNIGluZm9ybWF0aW9uIChzaXplcywgYWRkcmVzc2VzLCBjb25maWd1cmF0aW9u KTogKi8KLSAgICByYW1fYWRkcl90IGJlbG93XzRnX21lbV9zaXplLCBhYm92ZV80Z19tZW1fc2l6 ZTsKLQotICAgIC8qIENQVSBhbmQgYXBpYyBpbmZvcm1hdGlvbjogKi8KLSAgICBib29sIGFwaWNf eHJ1cHRfb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgYXBpY19pZF9saW1pdDsKKyAgICAvKiBDUFUg aW5mb3JtYXRpb24gKi8KICAgICB1aW50MTZfdCBib290X2NwdXM7CiAKLSAgICAvKiBOVU1BIGlu Zm9ybWF0aW9uOiAqLwotICAgIHVpbnQ2NF90IG51bWFfbm9kZXM7Ci0gICAgdWludDY0X3QgKm5v ZGVfbWVtOwotCiAgICAgLyogQWRkcmVzcyBzcGFjZSB1c2VkIGJ5IElPQVBJQyBkZXZpY2UuIEFs bCBJT0FQSUMgaW50ZXJydXB0cwogICAgICAqIHdpbGwgYmUgdHJhbnNsYXRlZCB0byBNU0kgbWVz c2FnZXMgaW4gdGhlIGFkZHJlc3Mgc3BhY2UuICovCiAgICAgQWRkcmVzc1NwYWNlICppb2FwaWNf YXM7CisKKyAgICAvKiBBQ1BJIGNvbmZpZ3VyYXRpb24gKi8KKyAgICBBY3BpQ29uZmlndXJhdGlv biBhY3BpX2NvbmZpZ3VyYXRpb247CiB9OwogCiAjZGVmaW5lIFBDX01BQ0hJTkVfQUNQSV9ERVZJ Q0VfUFJPUCAiYWNwaS1kZXZpY2UiCmRpZmYgLS1naXQgYS9ody9hY3BpL2NwdV9ob3RwbHVnLmMg Yi9ody9hY3BpL2NwdV9ob3RwbHVnLmMKaW5kZXggNTI0MzkxODEyNS4uNjM0ZGMzYjg0NiAxMDA2 NDQKLS0tIGEvaHcvYWNwaS9jcHVfaG90cGx1Zy5jCisrKyBiL2h3L2FjcGkvY3B1X2hvdHBsdWcu YwpAQCAtMjM3LDkgKzIzNyw5IEBAIHZvaWQgYnVpbGRfbGVnYWN5X2NwdV9ob3RwbHVnX2FtbChB bWwgKmN0eCwgTWFjaGluZVN0YXRlICptYWNoaW5lLAogICAgIC8qIFRoZSBjdXJyZW50IEFNTCBn ZW5lcmF0b3IgY2FuIGNvdmVyIHRoZSBBUElDIElEIHJhbmdlIFswLi4yNTVdLAogICAgICAqIGlu Y2x1c2l2ZSwgZm9yIFZDUFUgaG90cGx1Zy4gKi8KICAgICBRRU1VX0JVSUxEX0JVR19PTihBQ1BJ X0NQVV9IT1RQTFVHX0lEX0xJTUlUID4gMjU2KTsKLSAgICBpZiAocGNtcy0+YXBpY19pZF9saW1p dCA+IEFDUElfQ1BVX0hPVFBMVUdfSURfTElNSVQpIHsKKyAgICBpZiAocGNtcy0+YWNwaV9jb25m aWd1cmF0aW9uLmFwaWNfaWRfbGltaXQgPiBBQ1BJX0NQVV9IT1RQTFVHX0lEX0xJTUlUKSB7CiAg ICAgICAgIGVycm9yX3JlcG9ydCgibWF4X2NwdXMgaXMgdG9vIGxhcmdlLiBBUElDIElEIG9mIGxh c3QgQ1BVIGlzICV1IiwKLSAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmFwaWNfaWRfbGltaXQg LSAxKTsKKyAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmFjcGlfY29uZmlndXJhdGlvbi5hcGlj X2lkX2xpbWl0IC0gMSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogCkBAIC0zMTYsOCArMzE2 LDkgQEAgdm9pZCBidWlsZF9sZWdhY3lfY3B1X2hvdHBsdWdfYW1sKEFtbCAqY3R4LCBNYWNoaW5l U3RhdGUgKm1hY2hpbmUsCiAgICAgICogaXRoIHVwIHRvIDI1NSBlbGVtZW50cy4gV2luZG93cyBn dWVzdHMgdXAgdG8gd2luMms4IGZhaWwgd2hlbgogICAgICAqIFZhclBhY2thZ2VPcCBpcyB1c2Vk LgogICAgICAqLwotICAgIHBrZyA9IHBjbXMtPmFwaWNfaWRfbGltaXQgPD0gMjU1ID8gYW1sX3Bh Y2thZ2UocGNtcy0+YXBpY19pZF9saW1pdCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYW1sX3ZhcnBhY2thZ2UocGNtcy0+YXBpY19pZF9saW1pdCk7CisgICAgcGtn ID0gcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uLmFwaWNfaWRfbGltaXQgPD0gMjU1ID8KKyAgICAg ICAgYW1sX3BhY2thZ2UocGNtcy0+YWNwaV9jb25maWd1cmF0aW9uLmFwaWNfaWRfbGltaXQpIDoK KyAgICAgICAgYW1sX3ZhcnBhY2thZ2UocGNtcy0+YWNwaV9jb25maWd1cmF0aW9uLmFwaWNfaWRf bGltaXQpOwogCiAgICAgZm9yIChpID0gMCwgYXBpY19pZHggPSAwOyBpIDwgYXBpY19pZHMtPmxl bjsgaSsrKSB7CiAgICAgICAgIGludCBhcGljX2lkID0gYXBpY19pZHMtPmNwdXNbaV0uYXJjaF9p ZDsKZGlmZiAtLWdpdCBhL2h3L2FybS92aXJ0LWFjcGktYnVpbGQuYyBiL2h3L2FybS92aXJ0LWFj cGktYnVpbGQuYwppbmRleCA1Nzg1ZmI2OTdjLi5mMjhhMmZhYTUzIDEwMDY0NAotLS0gYS9ody9h cm0vdmlydC1hY3BpLWJ1aWxkLmMKKysrIGIvaHcvYXJtL3ZpcnQtYWNwaS1idWlsZC5jCkBAIC03 OTAsMTYgKzc5MCw2IEBAIGJ1aWxkX2RzZHQoR0FycmF5ICp0YWJsZV9kYXRhLCBCSU9TTGlua2Vy ICpsaW5rZXIsIFZpcnRNYWNoaW5lU3RhdGUgKnZtcykKICAgICBmcmVlX2FtbF9hbGxvY2F0b3Io KTsKIH0KIAotdHlwZWRlZgotc3RydWN0IEFjcGlCdWlsZFN0YXRlIHsKLSAgICAvKiBDb3B5IG9m IHRhYmxlIGluIFJBTSAoZm9yIHBhdGNoaW5nKS4gKi8KLSAgICBNZW1vcnlSZWdpb24gKnRhYmxl X21yOwotICAgIE1lbW9yeVJlZ2lvbiAqcnNkcF9tcjsKLSAgICBNZW1vcnlSZWdpb24gKmxpbmtl cl9tcjsKLSAgICAvKiBJcyB0YWJsZSBwYXRjaGVkPyAqLwotICAgIGJvb2wgcGF0Y2hlZDsKLX0g QWNwaUJ1aWxkU3RhdGU7Ci0KIHN0YXRpYwogdm9pZCB2aXJ0X2FjcGlfYnVpbGQoVmlydE1hY2hp bmVTdGF0ZSAqdm1zLCBBY3BpQnVpbGRUYWJsZXMgKnRhYmxlcykKIHsKZGlmZiAtLWdpdCBhL2h3 L2kzODYvYWNwaS1idWlsZC5jIGIvaHcvaTM4Ni9hY3BpLWJ1aWxkLmMKaW5kZXggMTU5OWNhYTdj NS4uZDAzNjJlMTM4MiAxMDA2NDQKLS0tIGEvaHcvaTM4Ni9hY3BpLWJ1aWxkLmMKKysrIGIvaHcv aTM4Ni9hY3BpLWJ1aWxkLmMKQEAgLTMzOCwxMyArMzM4LDE0IEBAIHZvaWQgcGNfbWFkdF9jcHVf ZW50cnkoQWNwaURldmljZUlmICphZGV2LCBpbnQgdWlkLAogfQogCiBzdGF0aWMgdm9pZAotYnVp bGRfbWFkdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxpbmtlciwgUENNYWNoaW5l U3RhdGUgKnBjbXMpCitidWlsZF9tYWR0KEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAq bGlua2VyLAorICAgICAgICAgICBNYWNoaW5lU3RhdGUgKm1zLCBBY3BpQ29uZmlndXJhdGlvbiAq YWNwaV9jb25mKQogewotICAgIE1hY2hpbmVDbGFzcyAqbWMgPSBNQUNISU5FX0dFVF9DTEFTUyhw Y21zKTsKLSAgICBjb25zdCBDUFVBcmNoSWRMaXN0ICphcGljX2lkcyA9IG1jLT5wb3NzaWJsZV9j cHVfYXJjaF9pZHMoTUFDSElORShwY21zKSk7CisgICAgTWFjaGluZUNsYXNzICptYyA9IE1BQ0hJ TkVfR0VUX0NMQVNTKG1zKTsKKyAgICBjb25zdCBDUFVBcmNoSWRMaXN0ICphcGljX2lkcyA9IG1j LT5wb3NzaWJsZV9jcHVfYXJjaF9pZHMobXMpOwogICAgIGludCBtYWR0X3N0YXJ0ID0gdGFibGVf ZGF0YS0+bGVuOwotICAgIEFjcGlEZXZpY2VJZkNsYXNzICphZGV2YyA9IEFDUElfREVWSUNFX0lG X0dFVF9DTEFTUyhwY21zLT5hY3BpX2Rldik7Ci0gICAgQWNwaURldmljZUlmICphZGV2ID0gQUNQ SV9ERVZJQ0VfSUYocGNtcy0+YWNwaV9kZXYpOworICAgIEFjcGlEZXZpY2VJZkNsYXNzICphZGV2 YyA9IEFDUElfREVWSUNFX0lGX0dFVF9DTEFTUyhhY3BpX2NvbmYtPmFjcGlfZGV2KTsKKyAgICBB Y3BpRGV2aWNlSWYgKmFkZXYgPSBBQ1BJX0RFVklDRV9JRihhY3BpX2NvbmYtPmFjcGlfZGV2KTsK ICAgICBib29sIHgyYXBpY19tb2RlID0gZmFsc2U7CiAKICAgICBBY3BpTXVsdGlwbGVBcGljVGFi bGUgKm1hZHQ7CkBAIC0zNzAsNyArMzcxLDcgQEAgYnVpbGRfbWFkdChHQXJyYXkgKnRhYmxlX2Rh dGEsIEJJT1NMaW5rZXIgKmxpbmtlciwgUENNYWNoaW5lU3RhdGUgKnBjbXMpCiAgICAgaW9fYXBp Yy0+YWRkcmVzcyA9IGNwdV90b19sZTMyKElPX0FQSUNfREVGQVVMVF9BRERSRVNTKTsKICAgICBp b19hcGljLT5pbnRlcnJ1cHQgPSBjcHVfdG9fbGUzMigwKTsKIAotICAgIGlmIChwY21zLT5hcGlj X3hydXB0X292ZXJyaWRlKSB7CisgICAgaWYgKGFjcGlfY29uZi0+YXBpY194cnVwdF9vdmVycmlk ZSkgewogICAgICAgICBpbnRzcmNvdnIgPSBhY3BpX2RhdGFfcHVzaCh0YWJsZV9kYXRhLCBzaXpl b2YgKmludHNyY292cik7CiAgICAgICAgIGludHNyY292ci0+dHlwZSAgID0gQUNQSV9BUElDX1hS VVBUX09WRVJSSURFOwogICAgICAgICBpbnRzcmNvdnItPmxlbmd0aCA9IHNpemVvZigqaW50c3Jj b3ZyKTsKQEAgLTE3ODYsMTMgKzE3ODcsMTIgQEAgc3RhdGljIEFtbCAqYnVpbGRfcTM1X29zY19t ZXRob2Qodm9pZCkKIHN0YXRpYyB2b2lkCiBidWlsZF9kc2R0KEdBcnJheSAqdGFibGVfZGF0YSwg QklPU0xpbmtlciAqbGlua2VyLAogICAgICAgICAgICBBY3BpUG1JbmZvICpwbSwgQWNwaU1pc2NJ bmZvICptaXNjLAotICAgICAgICAgICBSYW5nZSAqcGNpX2hvbGUsIFJhbmdlICpwY2lfaG9sZTY0 LCBNYWNoaW5lU3RhdGUgKm1hY2hpbmUpCisgICAgICAgICAgIFJhbmdlICpwY2lfaG9sZSwgUmFu Z2UgKnBjaV9ob2xlNjQsCisgICAgICAgICAgIE1hY2hpbmVTdGF0ZSAqbWFjaGluZSwgQWNwaUNv bmZpZ3VyYXRpb24gKmFjcGlfY29uZikKIHsKICAgICBDcnNSYW5nZUVudHJ5ICplbnRyeTsKICAg ICBBbWwgKmRzZHQsICpzYl9zY29wZSwgKnNjb3BlLCAqZGV2LCAqbWV0aG9kLCAqZmllbGQsICpw a2csICpjcnM7CiAgICAgQ3JzUmFuZ2VTZXQgY3JzX3JhbmdlX3NldDsKLSAgICBQQ01hY2hpbmVT dGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUobWFjaGluZSk7Ci0gICAgUENNYWNoaW5lQ2xhc3MgKnBj bWMgPSBQQ19NQUNISU5FX0dFVF9DTEFTUyhtYWNoaW5lKTsKICAgICB1aW50MzJfdCBucl9tZW0g PSBtYWNoaW5lLT5yYW1fc2xvdHM7CiAgICAgaW50IHJvb3RfYnVzX2xpbWl0ID0gMHhGRjsKICAg ICBQQ0lCdXMgKmJ1cyA9IE5VTEw7CkBAIC0xODM2LDcgKzE4MzYsNyBAQCBidWlsZF9kc2R0KEdB cnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAqbGlua2VyLAogICAgICAgICBidWlsZF9xMzVf cGNpMF9pbnQoZHNkdCk7CiAgICAgfQogCi0gICAgaWYgKHBjbWMtPmxlZ2FjeV9jcHVfaG90cGx1 ZykgeworICAgIGlmIChhY3BpX2NvbmYtPmxlZ2FjeV9jcHVfaG90cGx1ZykgewogICAgICAgICBi dWlsZF9sZWdhY3lfY3B1X2hvdHBsdWdfYW1sKGRzZHQsIG1hY2hpbmUsIHBtLT5jcHVfaHBfaW9f YmFzZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQ1BVSG90cGx1Z0ZlYXR1cmVzIG9wdHMgPSB7 CkBAIC0xODYwLDcgKzE4NjAsNyBAQCBidWlsZF9kc2R0KEdBcnJheSAqdGFibGVfZGF0YSwgQklP U0xpbmtlciAqbGlua2VyLAogICAgICAgICAgICAgYW1sX2FwcGVuZChzY29wZSwgbWV0aG9kKTsK ICAgICAgICAgfQogCi0gICAgICAgIGlmIChwY21zLT5hY3BpX252ZGltbV9zdGF0ZS5pc19lbmFi bGVkKSB7CisgICAgICAgIGlmIChhY3BpX2NvbmYtPmFjcGlfbnZkaW1tX3N0YXRlLmlzX2VuYWJs ZWQpIHsKICAgICAgICAgICAgIG1ldGhvZCA9IGFtbF9tZXRob2QoIl9FMDQiLCAwLCBBTUxfTk9U U0VSSUFMSVpFRCk7CiAgICAgICAgICAgICBhbWxfYXBwZW5kKG1ldGhvZCwgYW1sX25vdGlmeShh bWxfbmFtZSgiXFxfU0IuTlZEUiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYW1sX2ludCgweDgwKSkpOwpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgYnVpbGRfZHNk dChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxpbmtlciwKICAgICAgICAgICogd2l0 aCBoYWxmIG9mIHRoZSAxNi1iaXQgY29udHJvbCByZWdpc3Rlci4gSGVuY2UsIHRoZSB0b3RhbCBz aXplCiAgICAgICAgICAqIG9mIHRoZSBpL28gcmVnaW9uIHVzZWQgaXMgRldfQ0ZHX0NUTF9TSVpF OyB3aGVuIHVzaW5nIERNQSwgdGhlCiAgICAgICAgICAqIERNQSBjb250cm9sIHJlZ2lzdGVyIGlz IGxvY2F0ZWQgYXQgRldfQ0ZHX0RNQV9JT19CQVNFICsgNCAqLwotICAgICAgICB1aW50OF90IGlv X3NpemUgPSBvYmplY3RfcHJvcGVydHlfZ2V0X2Jvb2woT0JKRUNUKHBjbXMtPmZ3X2NmZyksCisg ICAgICAgIHVpbnQ4X3QgaW9fc2l6ZSA9IG9iamVjdF9wcm9wZXJ0eV9nZXRfYm9vbChPQkpFQ1Qo YWNwaV9jb25mLT5md19jZmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImRtYV9lbmFibGVkIiwgTlVMTCkgPwogICAgICAgICAgICAgICAgICAg ICAgICAgICBST1VORF9VUChGV19DRkdfQ1RMX1NJWkUsIDQpICsgc2l6ZW9mKGRtYV9hZGRyX3Qp IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgRldfQ0ZHX0NUTF9TSVpFOwpAQCAtMjI1Miw3 ICsyMjUyLDggQEAgYnVpbGRfdHBtMihHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxp bmtlciwgR0FycmF5ICp0Y3BhbG9nKQogI2RlZmluZSBIT0xFXzY0MEtfRU5EICAgKDEgKiBNaUIp CiAKIHN0YXRpYyB2b2lkCi1idWlsZF9zcmF0KEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtl ciAqbGlua2VyLCBNYWNoaW5lU3RhdGUgKm1hY2hpbmUpCitidWlsZF9zcmF0KEdBcnJheSAqdGFi bGVfZGF0YSwgQklPU0xpbmtlciAqbGlua2VyLAorICAgICAgICAgICBNYWNoaW5lU3RhdGUgKm1h Y2hpbmUsIEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYpCiB7CiAgICAgQWNwaVN5c3RlbVJl c291cmNlQWZmaW5pdHlUYWJsZSAqc3JhdDsKICAgICBBY3BpU3JhdE1lbW9yeUFmZmluaXR5ICpu dW1hbWVtOwpAQCAtMjI2Miw5ICsyMjYzLDggQEAgYnVpbGRfc3JhdChHQXJyYXkgKnRhYmxlX2Rh dGEsIEJJT1NMaW5rZXIgKmxpbmtlciwgTWFjaGluZVN0YXRlICptYWNoaW5lKQogICAgIHVpbnQ2 NF90IG1lbV9sZW4sIG1lbV9iYXNlLCBuZXh0X2Jhc2U7CiAgICAgTWFjaGluZUNsYXNzICptYyA9 IE1BQ0hJTkVfR0VUX0NMQVNTKG1hY2hpbmUpOwogICAgIGNvbnN0IENQVUFyY2hJZExpc3QgKmFw aWNfaWRzID0gbWMtPnBvc3NpYmxlX2NwdV9hcmNoX2lkcyhtYWNoaW5lKTsKLSAgICBQQ01hY2hp bmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUobWFjaGluZSk7CiAgICAgcmFtX2FkZHJfdCBob3Rw bHVnYWJibGVfYWRkcmVzc19zcGFjZV9zaXplID0KLSAgICAgICAgb2JqZWN0X3Byb3BlcnR5X2dl dF9pbnQoT0JKRUNUKHBjbXMpLCBQQ19NQUNISU5FX0RFVk1FTV9SRUdJT05fU0laRSwKKyAgICAg ICAgb2JqZWN0X3Byb3BlcnR5X2dldF9pbnQoT0JKRUNUKG1hY2hpbmUpLCBQQ19NQUNISU5FX0RF Vk1FTV9SRUdJT05fU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 CiAKICAgICBzcmF0X3N0YXJ0ID0gdGFibGVfZGF0YS0+bGVuOwpAQCAtMjMwNiw5ICsyMzA2LDkg QEAgYnVpbGRfc3JhdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxpbmtlciwgTWFj aGluZVN0YXRlICptYWNoaW5lKQogICAgIG5leHRfYmFzZSA9IDA7CiAgICAgbnVtYV9zdGFydCA9 IHRhYmxlX2RhdGEtPmxlbjsKIAotICAgIGZvciAoaSA9IDE7IGkgPCBwY21zLT5udW1hX25vZGVz ICsgMTsgKytpKSB7CisgICAgZm9yIChpID0gMTsgaSA8IGFjcGlfY29uZi0+bnVtYV9ub2RlcyAr IDE7ICsraSkgewogICAgICAgICBtZW1fYmFzZSA9IG5leHRfYmFzZTsKLSAgICAgICAgbWVtX2xl biA9IHBjbXMtPm5vZGVfbWVtW2kgLSAxXTsKKyAgICAgICAgbWVtX2xlbiA9IGFjcGlfY29uZi0+ bm9kZV9tZW1baSAtIDFdOwogICAgICAgICBuZXh0X2Jhc2UgPSBtZW1fYmFzZSArIG1lbV9sZW47 CiAKICAgICAgICAgLyogQ3V0IG91dCB0aGUgNjQwSyBob2xlICovCkBAIC0yMzMxLDE2ICsyMzMx LDE2IEBAIGJ1aWxkX3NyYXQoR0FycmF5ICp0YWJsZV9kYXRhLCBCSU9TTGlua2VyICpsaW5rZXIs IE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKICAgICAgICAgfQogCiAgICAgICAgIC8qIEN1dCBvdXQg dGhlIEFDUElfUENJIGhvbGUgKi8KLSAgICAgICAgaWYgKG1lbV9iYXNlIDw9IHBjbXMtPmJlbG93 XzRnX21lbV9zaXplICYmCi0gICAgICAgICAgICBuZXh0X2Jhc2UgPiBwY21zLT5iZWxvd180Z19t ZW1fc2l6ZSkgewotICAgICAgICAgICAgbWVtX2xlbiAtPSBuZXh0X2Jhc2UgLSBwY21zLT5iZWxv d180Z19tZW1fc2l6ZTsKKyAgICAgICAgaWYgKG1lbV9iYXNlIDw9IGFjcGlfY29uZi0+YmVsb3df NGdfbWVtX3NpemUgJiYKKyAgICAgICAgICAgIG5leHRfYmFzZSA+IGFjcGlfY29uZi0+YmVsb3df NGdfbWVtX3NpemUpIHsKKyAgICAgICAgICAgIG1lbV9sZW4gLT0gbmV4dF9iYXNlIC0gYWNwaV9j b25mLT5iZWxvd180Z19tZW1fc2l6ZTsKICAgICAgICAgICAgIGlmIChtZW1fbGVuID4gMCkgewog ICAgICAgICAgICAgICAgIG51bWFtZW0gPSBhY3BpX2RhdGFfcHVzaCh0YWJsZV9kYXRhLCBzaXpl b2YgKm51bWFtZW0pOwogICAgICAgICAgICAgICAgIGJ1aWxkX3NyYXRfbWVtb3J5KG51bWFtZW0s IG1lbV9iYXNlLCBtZW1fbGVuLCBpIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNRU1fQUZGSU5JVFlfRU5BQkxFRCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt ZW1fYmFzZSA9IDFVTEwgPDwgMzI7Ci0gICAgICAgICAgICBtZW1fbGVuID0gbmV4dF9iYXNlIC0g cGNtcy0+YmVsb3dfNGdfbWVtX3NpemU7CisgICAgICAgICAgICBtZW1fbGVuID0gbmV4dF9iYXNl IC0gYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZTsKICAgICAgICAgICAgIG5leHRfYmFzZSA9 IG1lbV9iYXNlICsgbWVtX2xlbjsKICAgICAgICAgfQogCkBAIC0yMzUxLDcgKzIzNTEsNyBAQCBi dWlsZF9zcmF0KEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAqbGlua2VyLCBNYWNoaW5l U3RhdGUgKm1hY2hpbmUpCiAgICAgICAgIH0KICAgICB9CiAgICAgc2xvdHMgPSAodGFibGVfZGF0 YS0+bGVuIC0gbnVtYV9zdGFydCkgLyBzaXplb2YgKm51bWFtZW07Ci0gICAgZm9yICg7IHNsb3Rz IDwgcGNtcy0+bnVtYV9ub2RlcyArIDI7IHNsb3RzKyspIHsKKyAgICBmb3IgKDsgc2xvdHMgPCBh Y3BpX2NvbmYtPm51bWFfbm9kZXMgKyAyOyBzbG90cysrKSB7CiAgICAgICAgIG51bWFtZW0gPSBh Y3BpX2RhdGFfcHVzaCh0YWJsZV9kYXRhLCBzaXplb2YgKm51bWFtZW0pOwogICAgICAgICBidWls ZF9zcmF0X21lbW9yeShudW1hbWVtLCAwLCAwLCAwLCBNRU1fQUZGSU5JVFlfTk9GTEFHUyk7CiAg ICAgfQpAQCAtMjM2Nyw3ICsyMzY3LDggQEAgYnVpbGRfc3JhdChHQXJyYXkgKnRhYmxlX2RhdGEs IEJJT1NMaW5rZXIgKmxpbmtlciwgTWFjaGluZVN0YXRlICptYWNoaW5lKQogICAgIGlmIChob3Rw bHVnYWJibGVfYWRkcmVzc19zcGFjZV9zaXplKSB7CiAgICAgICAgIG51bWFtZW0gPSBhY3BpX2Rh dGFfcHVzaCh0YWJsZV9kYXRhLCBzaXplb2YgKm51bWFtZW0pOwogICAgICAgICBidWlsZF9zcmF0 X21lbW9yeShudW1hbWVtLCBtYWNoaW5lLT5kZXZpY2VfbWVtb3J5LT5iYXNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICBob3RwbHVnYWJibGVfYWRkcmVzc19zcGFjZV9zaXplLCBwY21zLT5u dW1hX25vZGVzIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaG90cGx1Z2FiYmxlX2Fk ZHJlc3Nfc3BhY2Vfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9jb25mLT5u dW1hX25vZGVzIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVNX0FGRklOSVRZX0hP VFBMVUdHQUJMRSB8IE1FTV9BRkZJTklUWV9FTkFCTEVEKTsKICAgICB9CiAKQEAgLTI1NDYsMTcg KzI1NDcsNiBAQCBidWlsZF9yc2RwKEdBcnJheSAqcnNkcF90YWJsZSwgQklPU0xpbmtlciAqbGlu a2VyLCB1bnNpZ25lZCByc2R0X3RibF9vZmZzZXQpCiAgICAgcmV0dXJuIHJzZHBfdGFibGU7CiB9 CiAKLXR5cGVkZWYKLXN0cnVjdCBBY3BpQnVpbGRTdGF0ZSB7Ci0gICAgLyogQ29weSBvZiB0YWJs ZSBpbiBSQU0gKGZvciBwYXRjaGluZykuICovCi0gICAgTWVtb3J5UmVnaW9uICp0YWJsZV9tcjsK LSAgICAvKiBJcyB0YWJsZSBwYXRjaGVkPyAqLwotICAgIHVpbnQ4X3QgcGF0Y2hlZDsKLSAgICB2 b2lkICpyc2RwOwotICAgIE1lbW9yeVJlZ2lvbiAqcnNkcF9tcjsKLSAgICBNZW1vcnlSZWdpb24g Kmxpbmtlcl9tcjsKLX0gQWNwaUJ1aWxkU3RhdGU7Ci0KIHN0YXRpYyBib29sIGFjcGlfZ2V0X21j ZmcoQWNwaU1jZmdJbmZvICptY2ZnKQogewogICAgIE9iamVjdCAqcGNpX2hvc3Q7CkBAIC0yNTgw LDEwICsyNTcwLDkgQEAgc3RhdGljIGJvb2wgYWNwaV9nZXRfbWNmZyhBY3BpTWNmZ0luZm8gKm1j ZmcpCiB9CiAKIHN0YXRpYwotdm9pZCBhY3BpX2J1aWxkKEFjcGlCdWlsZFRhYmxlcyAqdGFibGVz LCBNYWNoaW5lU3RhdGUgKm1hY2hpbmUpCit2b2lkIGFjcGlfYnVpbGQoQWNwaUJ1aWxkVGFibGVz ICp0YWJsZXMsCisgICAgICAgICAgICAgICAgTWFjaGluZVN0YXRlICptYWNoaW5lLCBBY3BpQ29u ZmlndXJhdGlvbiAqYWNwaV9jb25mKQogewotICAgIFBDTWFjaGluZVN0YXRlICpwY21zID0gUENf TUFDSElORShtYWNoaW5lKTsKLSAgICBQQ01hY2hpbmVDbGFzcyAqcGNtYyA9IFBDX01BQ0hJTkVf R0VUX0NMQVNTKHBjbXMpOwogICAgIEdBcnJheSAqdGFibGVfb2Zmc2V0czsKICAgICB1bnNpZ25l ZCBmYWNzLCBkc2R0LCByc2R0LCBmYWR0OwogICAgIEFjcGlQbUluZm8gcG07CkBAIC0yNjIxLDcg KzI2MTAsNyBAQCB2b2lkIGFjcGlfYnVpbGQoQWNwaUJ1aWxkVGFibGVzICp0YWJsZXMsIE1hY2hp bmVTdGF0ZSAqbWFjaGluZSkKICAgICAvKiBEU0RUIGlzIHBvaW50ZWQgdG8gYnkgRkFEVCAqLwog ICAgIGRzZHQgPSB0YWJsZXNfYmxvYi0+bGVuOwogICAgIGJ1aWxkX2RzZHQodGFibGVzX2Jsb2Is IHRhYmxlcy0+bGlua2VyLCAmcG0sICZtaXNjLAotICAgICAgICAgICAgICAgJnBjaV9ob2xlLCAm cGNpX2hvbGU2NCwgbWFjaGluZSk7CisgICAgICAgICAgICAgICAmcGNpX2hvbGUsICZwY2lfaG9s ZTY0LCBtYWNoaW5lLCBhY3BpX2NvbmYpOwogCiAgICAgLyogQ291bnQgdGhlIHNpemUgb2YgdGhl IERTRFQgYW5kIFNTRFQsIHdlIHdpbGwgbmVlZCBpdCBmb3IgbGVnYWN5CiAgICAgICogc2l6aW5n IG9mIEFDUEkgdGFibGVzLgpAQCAtMjYzOSw3ICsyNjI4LDcgQEAgdm9pZCBhY3BpX2J1aWxkKEFj cGlCdWlsZFRhYmxlcyAqdGFibGVzLCBNYWNoaW5lU3RhdGUgKm1hY2hpbmUpCiAgICAgYW1sX2xl biArPSB0YWJsZXNfYmxvYi0+bGVuIC0gZmFkdDsKIAogICAgIGFjcGlfYWRkX3RhYmxlKHRhYmxl X29mZnNldHMsIHRhYmxlc19ibG9iKTsKLSAgICBidWlsZF9tYWR0KHRhYmxlc19ibG9iLCB0YWJs ZXMtPmxpbmtlciwgcGNtcyk7CisgICAgYnVpbGRfbWFkdCh0YWJsZXNfYmxvYiwgdGFibGVzLT5s aW5rZXIsIG1hY2hpbmUsIGFjcGlfY29uZik7CiAKICAgICB2bWdlbmlkX2RldiA9IGZpbmRfdm1n ZW5pZF9kZXYoKTsKICAgICBpZiAodm1nZW5pZF9kZXYpIHsKQEAgLTI2NjEsOSArMjY1MCw5IEBA IHZvaWQgYWNwaV9idWlsZChBY3BpQnVpbGRUYWJsZXMgKnRhYmxlcywgTWFjaGluZVN0YXRlICpt YWNoaW5lKQogICAgICAgICAgICAgYnVpbGRfdHBtMih0YWJsZXNfYmxvYiwgdGFibGVzLT5saW5r ZXIsIHRhYmxlcy0+dGNwYWxvZyk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHBjbXMtPm51 bWFfbm9kZXMpIHsKKyAgICBpZiAoYWNwaV9jb25mLT5udW1hX25vZGVzKSB7CiAgICAgICAgIGFj cGlfYWRkX3RhYmxlKHRhYmxlX29mZnNldHMsIHRhYmxlc19ibG9iKTsKLSAgICAgICAgYnVpbGRf c3JhdCh0YWJsZXNfYmxvYiwgdGFibGVzLT5saW5rZXIsIG1hY2hpbmUpOworICAgICAgICBidWls ZF9zcmF0KHRhYmxlc19ibG9iLCB0YWJsZXMtPmxpbmtlciwgbWFjaGluZSwgYWNwaV9jb25mKTsK ICAgICAgICAgaWYgKGhhdmVfbnVtYV9kaXN0YW5jZSkgewogICAgICAgICAgICAgYWNwaV9hZGRf dGFibGUodGFibGVfb2Zmc2V0cywgdGFibGVzX2Jsb2IpOwogICAgICAgICAgICAgYnVpbGRfc2xp dCh0YWJsZXNfYmxvYiwgdGFibGVzLT5saW5rZXIpOwpAQCAtMjY4Myw5ICsyNjcyLDkgQEAgdm9p ZCBhY3BpX2J1aWxkKEFjcGlCdWlsZFRhYmxlcyAqdGFibGVzLCBNYWNoaW5lU3RhdGUgKm1hY2hp bmUpCiAgICAgICAgICAgICBidWlsZF9kbWFyX3EzNSh0YWJsZXNfYmxvYiwgdGFibGVzLT5saW5r ZXIpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwY21zLT5hY3BpX252ZGltbV9zdGF0ZS5p c19lbmFibGVkKSB7CisgICAgaWYgKGFjcGlfY29uZi0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5h YmxlZCkgewogICAgICAgICBudmRpbW1fYnVpbGRfYWNwaSh0YWJsZV9vZmZzZXRzLCB0YWJsZXNf YmxvYiwgdGFibGVzLT5saW5rZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwY21zLT5h Y3BpX252ZGltbV9zdGF0ZSwgbWFjaGluZS0+cmFtX3Nsb3RzKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgJmFjcGlfY29uZi0+YWNwaV9udmRpbW1fc3RhdGUsIG1hY2hpbmUtPnJhbV9zbG90 cyk7CiAgICAgfQogCiAgICAgLyogQWRkIHRhYmxlcyBzdXBwbGllZCBieSB1c2VyIChpZiBhbnkp ICovCkBAIC0yNzIxLDEzICsyNzEwLDEzIEBAIHZvaWQgYWNwaV9idWlsZChBY3BpQnVpbGRUYWJs ZXMgKnRhYmxlcywgTWFjaGluZVN0YXRlICptYWNoaW5lKQogICAgICAqCiAgICAgICogQWxsIHRo aXMgaXMgZm9yIFBJSVg0LCBzaW5jZSBRRU1VIDIuMCBkaWRuJ3Qgc3VwcG9ydCBRMzUgbWlncmF0 aW9uLgogICAgICAqLwotICAgIGlmIChwY21jLT5sZWdhY3lfYWNwaV90YWJsZV9zaXplKSB7Cisg ICAgaWYgKGFjcGlfY29uZi0+bGVnYWN5X2FjcGlfdGFibGVfc2l6ZSkgewogICAgICAgICAvKiBT dWJ0cmFjdGluZyBhbWxfbGVuIGdpdmVzIHRoZSBzaXplIG9mIGZpeGVkIHRhYmxlcy4gIFRoZW4g YWRkIHRoZQogICAgICAgICAgKiBzaXplIG9mIHRoZSBQSUlYNCBEU0RUL1NTRFQgaW4gUUVNVSAy LjAuCiAgICAgICAgICAqLwogICAgICAgICBpbnQgbGVnYWN5X2FtbF9sZW4gPQotICAgICAgICAg ICAgcGNtYy0+bGVnYWN5X2FjcGlfdGFibGVfc2l6ZSArCi0gICAgICAgICAgICBBQ1BJX0JVSUxE X0xFR0FDWV9DUFVfQU1MX1NJWkUgKiBwY21zLT5hcGljX2lkX2xpbWl0OworICAgICAgICAgICAg YWNwaV9jb25mLT5sZWdhY3lfYWNwaV90YWJsZV9zaXplICsKKyAgICAgICAgICAgIEFDUElfQlVJ TERfTEVHQUNZX0NQVV9BTUxfU0laRSAqIGFjcGlfY29uZi0+YXBpY19pZF9saW1pdDsKICAgICAg ICAgaW50IGxlZ2FjeV90YWJsZV9zaXplID0KICAgICAgICAgICAgIFJPVU5EX1VQKHRhYmxlc19i bG9iLT5sZW4gLSBhbWxfbGVuICsgbGVnYWN5X2FtbF9sZW4sCiAgICAgICAgICAgICAgICAgICAg ICBBQ1BJX0JVSUxEX0FMSUdOX1NJWkUpOwpAQCAtMjc3Miw5ICsyNzYxLDE3IEBAIHN0YXRpYyB2 b2lkIGFjcGlfcmFtX3VwZGF0ZShNZW1vcnlSZWdpb24gKm1yLCBHQXJyYXkgKmRhdGEpCiAKIHN0 YXRpYyB2b2lkIGFjcGlfYnVpbGRfdXBkYXRlKHZvaWQgKmJ1aWxkX29wYXF1ZSkKIHsKLSAgICBB Y3BpQnVpbGRTdGF0ZSAqYnVpbGRfc3RhdGUgPSBidWlsZF9vcGFxdWU7CisgICAgQWNwaUNvbmZp Z3VyYXRpb24gKmFjcGlfY29uZiA9IGJ1aWxkX29wYXF1ZTsKKyAgICBBY3BpQnVpbGRTdGF0ZSAq YnVpbGRfc3RhdGU7CiAgICAgQWNwaUJ1aWxkVGFibGVzIHRhYmxlczsKIAorICAgIC8qIE5vIEFD UEkgY29uZmlndXJhdGlvbj8gTm90aGluZyB0byBkby4gKi8KKyAgICBpZiAoIWFjcGlfY29uZikg eworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYnVpbGRfc3RhdGUgPSBhY3BpX2NvbmYt PmJ1aWxkX3N0YXRlOworCiAgICAgLyogTm8gc3RhdGUgdG8gdXBkYXRlIG9yIGFscmVhZHkgcGF0 Y2hlZD8gTm90aGluZyB0byBkby4gKi8KICAgICBpZiAoIWJ1aWxkX3N0YXRlIHx8IGJ1aWxkX3N0 YXRlLT5wYXRjaGVkKSB7CiAgICAgICAgIHJldHVybjsKQEAgLTI3ODMsNyArMjc4MCw3IEBAIHN0 YXRpYyB2b2lkIGFjcGlfYnVpbGRfdXBkYXRlKHZvaWQgKmJ1aWxkX29wYXF1ZSkKIAogICAgIGFj cGlfYnVpbGRfdGFibGVzX2luaXQoJnRhYmxlcyk7CiAKLSAgICBhY3BpX2J1aWxkKCZ0YWJsZXMs IE1BQ0hJTkUocWRldl9nZXRfbWFjaGluZSgpKSk7CisgICAgYWNwaV9idWlsZCgmdGFibGVzLCBN QUNISU5FKHFkZXZfZ2V0X21hY2hpbmUoKSksIGFjcGlfY29uZik7CiAKICAgICBhY3BpX3JhbV91 cGRhdGUoYnVpbGRfc3RhdGUtPnRhYmxlX21yLCB0YWJsZXMudGFibGVfZGF0YSk7CiAKQEAgLTI4 MDMsMTIgKzI4MDAsMTIgQEAgc3RhdGljIHZvaWQgYWNwaV9idWlsZF9yZXNldCh2b2lkICpidWls ZF9vcGFxdWUpCiAgICAgYnVpbGRfc3RhdGUtPnBhdGNoZWQgPSAwOwogfQogCi1zdGF0aWMgTWVt b3J5UmVnaW9uICphY3BpX2FkZF9yb21fYmxvYihBY3BpQnVpbGRTdGF0ZSAqYnVpbGRfc3RhdGUs CitzdGF0aWMgTWVtb3J5UmVnaW9uICphY3BpX2FkZF9yb21fYmxvYihBY3BpQ29uZmlndXJhdGlv biAqYWNwaV9jb25mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fy cmF5ICpibG9iLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3QgbWF4X3NpemUpCiB7CiAgICAgcmV0dXJuIHJvbV9hZGRfYmxv YihuYW1lLCBibG9iLT5kYXRhLCBhY3BpX2RhdGFfbGVuKGJsb2IpLCBtYXhfc2l6ZSwgLTEsCi0g ICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBhY3BpX2J1aWxkX3VwZGF0ZSwgYnVpbGRfc3Rh dGUsIE5VTEwsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgYWNwaV9idWls ZF91cGRhdGUsIGFjcGlfY29uZiwgTlVMTCwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBWTVN0 YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV9hY3BpX2J1aWxkID0gewpAQCAtMjgxNiw1OSArMjgxMyw0 OCBAQCBzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfYWNwaV9idWlsZCA9 IHsKICAgICAudmVyc2lvbl9pZCA9IDEsCiAgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDEsCiAg ICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgewotICAgICAgICBWTVNUQVRFX1VJTlQ4KHBh dGNoZWQsIEFjcGlCdWlsZFN0YXRlKSwKKyAgICAgICAgVk1TVEFURV9CT09MKHBhdGNoZWQsIEFj cGlCdWlsZFN0YXRlKSwKICAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCiAgICAgfSwKIH07 CiAKLXZvaWQgYWNwaV9zZXR1cCh2b2lkKQordm9pZCBhY3BpX3NldHVwKE1hY2hpbmVTdGF0ZSAq bWFjaGluZSwgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZikKIHsKLSAgICBQQ01hY2hpbmVT dGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUocWRldl9nZXRfbWFjaGluZSgpKTsKLSAgICBQQ01hY2hp bmVDbGFzcyAqcGNtYyA9IFBDX01BQ0hJTkVfR0VUX0NMQVNTKHBjbXMpOwogICAgIEFjcGlCdWls ZFRhYmxlcyB0YWJsZXM7CiAgICAgQWNwaUJ1aWxkU3RhdGUgKmJ1aWxkX3N0YXRlOwogICAgIE9i amVjdCAqdm1nZW5pZF9kZXY7CiAKLSAgICBpZiAoIXBjbXMtPmZ3X2NmZykgewotICAgICAgICBB Q1BJX0JVSUxEX0RQUklOVEYoIk5vIGZ3IGNmZy4gQmFpbGluZyBvdXQuXG4iKTsKLSAgICAgICAg cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcGNtcy0+YWNwaV9idWlsZF9lbmFibGVkKSB7Ci0g ICAgICAgIEFDUElfQlVJTERfRFBSSU5URigiQUNQSSBidWlsZCBkaXNhYmxlZC4gQmFpbGluZyBv dXQuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghYWNwaV9lbmFibGVk KSB7Ci0gICAgICAgIEFDUElfQlVJTERfRFBSSU5URigiQUNQSSBkaXNhYmxlZC4gQmFpbGluZyBv dXQuXG4iKTsKKyAgICBpZiAoIWFjcGlfY29uZikgeworICAgICAgICBBQ1BJX0JVSUxEX0RQUklO VEYoIk5vIEFDUEkgY29uZmlnLiBCYWlsaW5nIG91dC5cbiIpOwogICAgICAgICByZXR1cm47CiAg ICAgfQogCiAgICAgYnVpbGRfc3RhdGUgPSBnX21hbGxvYzAoc2l6ZW9mICpidWlsZF9zdGF0ZSk7 CisgICAgYWNwaV9jb25mLT5idWlsZF9zdGF0ZSA9IGJ1aWxkX3N0YXRlOwogCiAgICAgYWNwaV9i dWlsZF90YWJsZXNfaW5pdCgmdGFibGVzKTsKLSAgICBhY3BpX2J1aWxkKCZ0YWJsZXMsIE1BQ0hJ TkUocGNtcykpOworICAgIGFjcGlfYnVpbGQoJnRhYmxlcywgbWFjaGluZSwgYWNwaV9jb25mKTsK IAogICAgIC8qIE5vdyBleHBvc2UgaXQgYWxsIHRvIEd1ZXN0ICovCi0gICAgYnVpbGRfc3RhdGUt PnRhYmxlX21yID0gYWNwaV9hZGRfcm9tX2Jsb2IoYnVpbGRfc3RhdGUsIHRhYmxlcy50YWJsZV9k YXRhLAorICAgIGJ1aWxkX3N0YXRlLT50YWJsZV9tciA9IGFjcGlfYWRkX3JvbV9ibG9iKGFjcGlf Y29uZiwgdGFibGVzLnRhYmxlX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFDUElfQlVJTERfVEFCTEVfRklMRSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9CVUlMRF9UQUJMRV9NQVhfU0laRSk7 CiAgICAgYXNzZXJ0KGJ1aWxkX3N0YXRlLT50YWJsZV9tciAhPSBOVUxMKTsKIAogICAgIGJ1aWxk X3N0YXRlLT5saW5rZXJfbXIgPQotICAgICAgICBhY3BpX2FkZF9yb21fYmxvYihidWlsZF9zdGF0 ZSwgdGFibGVzLmxpbmtlci0+Y21kX2Jsb2IsCisgICAgICAgIGFjcGlfYWRkX3JvbV9ibG9iKGFj cGlfY29uZiwgdGFibGVzLmxpbmtlci0+Y21kX2Jsb2IsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICJldGMvdGFibGUtbG9hZGVyIiwgMCk7CiAKLSAgICBmd19jZmdfYWRkX2ZpbGUocGNtcy0+ ZndfY2ZnLCBBQ1BJX0JVSUxEX1RQTUxPR19GSUxFLAorICAgIGZ3X2NmZ19hZGRfZmlsZShhY3Bp X2NvbmYtPmZ3X2NmZywgQUNQSV9CVUlMRF9UUE1MT0dfRklMRSwKICAgICAgICAgICAgICAgICAg ICAgdGFibGVzLnRjcGFsb2ctPmRhdGEsIGFjcGlfZGF0YV9sZW4odGFibGVzLnRjcGFsb2cpKTsK IAogICAgIHZtZ2VuaWRfZGV2ID0gZmluZF92bWdlbmlkX2RldigpOwogICAgIGlmICh2bWdlbmlk X2RldikgewotICAgICAgICB2bWdlbmlkX2FkZF9md19jZmcoVk1HRU5JRCh2bWdlbmlkX2Rldiks IHBjbXMtPmZ3X2NmZywKKyAgICAgICAgdm1nZW5pZF9hZGRfZndfY2ZnKFZNR0VOSUQodm1nZW5p ZF9kZXYpLCBhY3BpX2NvbmYtPmZ3X2NmZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh Ymxlcy52bWdlbmlkKTsKICAgICB9CiAKLSAgICBpZiAoIXBjbWMtPnJzZHBfaW5fcmFtKSB7Cisg ICAgaWYgKCFhY3BpX2NvbmYtPnJzZHBfaW5fcmFtKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAq IEtlZXAgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgbWFjaGluZSB0eXBlcy4KICAgICAgICAg ICogVGhvdWdoIFJTRFAgaXMgc21hbGwsIGl0cyBjb250ZW50cyBpc24ndCBpbW11dGFibGUsIHNv CkBAIC0yODc3LDEzICsyODYzLDEzIEBAIHZvaWQgYWNwaV9zZXR1cCh2b2lkKQogICAgICAgICB1 aW50MzJfdCByc2RwX3NpemUgPSBhY3BpX2RhdGFfbGVuKHRhYmxlcy5yc2RwKTsKIAogICAgICAg ICBidWlsZF9zdGF0ZS0+cnNkcCA9IGdfbWVtZHVwKHRhYmxlcy5yc2RwLT5kYXRhLCByc2RwX3Np emUpOwotICAgICAgICBmd19jZmdfYWRkX2ZpbGVfY2FsbGJhY2socGNtcy0+ZndfY2ZnLCBBQ1BJ X0JVSUxEX1JTRFBfRklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlf YnVpbGRfdXBkYXRlLCBOVUxMLCBidWlsZF9zdGF0ZSwKKyAgICAgICAgZndfY2ZnX2FkZF9maWxl X2NhbGxiYWNrKGFjcGlfY29uZi0+ZndfY2ZnLCBBQ1BJX0JVSUxEX1JTRFBfRklMRSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfYnVpbGRfdXBkYXRlLCBOVUxMLCBhY3Bp X2NvbmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zdGF0ZS0+cnNk cCwgcnNkcF9zaXplLCB0cnVlKTsKICAgICAgICAgYnVpbGRfc3RhdGUtPnJzZHBfbXIgPSBOVUxM OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1aWxkX3N0YXRlLT5yc2RwID0gTlVMTDsKLSAgICAg ICAgYnVpbGRfc3RhdGUtPnJzZHBfbXIgPSBhY3BpX2FkZF9yb21fYmxvYihidWlsZF9zdGF0ZSwg dGFibGVzLnJzZHAsCisgICAgICAgIGJ1aWxkX3N0YXRlLT5yc2RwX21yID0gYWNwaV9hZGRfcm9t X2Jsb2IoYWNwaV9jb25mLCB0YWJsZXMucnNkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9CVUlMRF9SU0RQX0ZJTEUsIDApOwogICAgIH0K IApkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9wYy5jIGIvaHcvaTM4Ni9wYy5jCmluZGV4IGYwOTU3MjVk YmEuLjA5MGY5Njk5MzMgMTAwNjQ0Ci0tLSBhL2h3L2kzODYvcGMuYworKysgYi9ody9pMzg2L3Bj LmMKQEAgLTQ0NCwxNyArNDQ0LDE4IEBAIHZvaWQgcGNfY21vc19pbml0KFBDTWFjaGluZVN0YXRl ICpwY21zLAogewogICAgIGludCB2YWw7CiAgICAgc3RhdGljIHBjX2Ntb3NfaW5pdF9sYXRlX2Fy ZyBhcmc7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2Nv bmZpZ3VyYXRpb247CiAKICAgICAvKiB2YXJpb3VzIGltcG9ydGFudCBDTU9TIGxvY2F0aW9ucyBu ZWVkZWQgYnkgUEMvQm9jaHMgYmlvcyAqLwogCiAgICAgLyogbWVtb3J5IHNpemUgKi8KICAgICAv KiBiYXNlIG1lbW9yeSAoZmlyc3QgTWlCKSAqLwotICAgIHZhbCA9IE1JTihwY21zLT5iZWxvd180 Z19tZW1fc2l6ZSAvIEtpQiwgNjQwKTsKKyAgICB2YWwgPSBNSU4oYWNwaV9jb25mLT5iZWxvd180 Z19tZW1fc2l6ZSAvIEtpQiwgNjQwKTsKICAgICBydGNfc2V0X21lbW9yeShzLCAweDE1LCB2YWwp OwogICAgIHJ0Y19zZXRfbWVtb3J5KHMsIDB4MTYsIHZhbCA+PiA4KTsKICAgICAvKiBleHRlbmRl ZCBtZW1vcnkgKG5leHQgNjRNaUIpICovCi0gICAgaWYgKHBjbXMtPmJlbG93XzRnX21lbV9zaXpl ID4gMSAqIE1pQikgewotICAgICAgICB2YWwgPSAocGNtcy0+YmVsb3dfNGdfbWVtX3NpemUgLSAx ICogTWlCKSAvIEtpQjsKKyAgICBpZiAoYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSA+IDEg KiBNaUIpIHsKKyAgICAgICAgdmFsID0gKGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUgLSAx ICogTWlCKSAvIEtpQjsKICAgICB9IGVsc2UgewogICAgICAgICB2YWwgPSAwOwogICAgIH0KQEAg LTQ2NSw4ICs0NjYsOCBAQCB2b2lkIHBjX2Ntb3NfaW5pdChQQ01hY2hpbmVTdGF0ZSAqcGNtcywK ICAgICBydGNfc2V0X21lbW9yeShzLCAweDMwLCB2YWwpOwogICAgIHJ0Y19zZXRfbWVtb3J5KHMs IDB4MzEsIHZhbCA+PiA4KTsKICAgICAvKiBtZW1vcnkgYmV0d2VlbiAxNk1pQiBhbmQgNEdpQiAq LwotICAgIGlmIChwY21zLT5iZWxvd180Z19tZW1fc2l6ZSA+IDE2ICogTWlCKSB7Ci0gICAgICAg IHZhbCA9IChwY21zLT5iZWxvd180Z19tZW1fc2l6ZSAtIDE2ICogTWlCKSAvICg2NCAqIEtpQik7 CisgICAgaWYgKGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUgPiAxNiAqIE1pQikgeworICAg ICAgICB2YWwgPSAoYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSAtIDE2ICogTWlCKSAvICg2 NCAqIEtpQik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFsID0gMDsKICAgICB9CkBAIC00NzUs NyArNDc2LDcgQEAgdm9pZCBwY19jbW9zX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAgICAg cnRjX3NldF9tZW1vcnkocywgMHgzNCwgdmFsKTsKICAgICBydGNfc2V0X21lbW9yeShzLCAweDM1 LCB2YWwgPj4gOCk7CiAgICAgLyogbWVtb3J5IGFib3ZlIDRHaUIgKi8KLSAgICB2YWwgPSBwY21z LT5hYm92ZV80Z19tZW1fc2l6ZSAvIDY1NTM2OworICAgIHZhbCA9IGFjcGlfY29uZi0+YWJvdmVf NGdfbWVtX3NpemUgLyA2NTUzNjsKICAgICBydGNfc2V0X21lbW9yeShzLCAweDViLCB2YWwpOwog ICAgIHJ0Y19zZXRfbWVtb3J5KHMsIDB4NWMsIHZhbCA+PiA4KTsKICAgICBydGNfc2V0X21lbW9y eShzLCAweDVkLCB2YWwgPj4gMTYpOwpAQCAtNzE0LDEzICs3MTUsMTQgQEAgc3RhdGljIHZvaWQg cGNfYnVpbGRfc21iaW9zKFBDTWFjaGluZVN0YXRlICpwY21zKQogICAgIHVuc2lnbmVkIGksIGFy cmF5X2NvdW50OwogICAgIE1hY2hpbmVTdGF0ZSAqbXMgPSBNQUNISU5FKHBjbXMpOwogICAgIFg4 NkNQVSAqY3B1ID0gWDg2X0NQVShtcy0+cG9zc2libGVfY3B1cy0+Y3B1c1swXS5jcHUpOworICAg IEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9u OwogCiAgICAgLyogdGVsbCBzbWJpb3MgYWJvdXQgY3B1aWQgdmVyc2lvbiBhbmQgZmVhdHVyZXMg Ki8KICAgICBzbWJpb3Nfc2V0X2NwdWlkKGNwdS0+ZW52LmNwdWlkX3ZlcnNpb24sIGNwdS0+ZW52 LmZlYXR1cmVzW0ZFQVRfMV9FRFhdKTsKIAogICAgIHNtYmlvc190YWJsZXMgPSBzbWJpb3NfZ2V0 X3RhYmxlX2xlZ2FjeSgmc21iaW9zX3RhYmxlc19sZW4pOwogICAgIGlmIChzbWJpb3NfdGFibGVz KSB7Ci0gICAgICAgIGZ3X2NmZ19hZGRfYnl0ZXMocGNtcy0+ZndfY2ZnLCBGV19DRkdfU01CSU9T X0VOVFJJRVMsCisgICAgICAgIGZ3X2NmZ19hZGRfYnl0ZXMoYWNwaV9jb25mLT5md19jZmcsIEZX X0NGR19TTUJJT1NfRU5UUklFUywKICAgICAgICAgICAgICAgICAgICAgICAgICBzbWJpb3NfdGFi bGVzLCBzbWJpb3NfdGFibGVzX2xlbik7CiAgICAgfQogCkBAIC03NDEsOSArNzQzLDkgQEAgc3Rh dGljIHZvaWQgcGNfYnVpbGRfc21iaW9zKFBDTWFjaGluZVN0YXRlICpwY21zKQogICAgIGdfZnJl ZShtZW1fYXJyYXkpOwogCiAgICAgaWYgKHNtYmlvc19hbmNob3IpIHsKLSAgICAgICAgZndfY2Zn X2FkZF9maWxlKHBjbXMtPmZ3X2NmZywgImV0Yy9zbWJpb3Mvc21iaW9zLXRhYmxlcyIsCisgICAg ICAgIGZ3X2NmZ19hZGRfZmlsZShhY3BpX2NvbmYtPmZ3X2NmZywgImV0Yy9zbWJpb3Mvc21iaW9z LXRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzbWJpb3NfdGFibGVzLCBzbWJpb3Nf dGFibGVzX2xlbik7Ci0gICAgICAgIGZ3X2NmZ19hZGRfZmlsZShwY21zLT5md19jZmcsICJldGMv c21iaW9zL3NtYmlvcy1hbmNob3IiLAorICAgICAgICBmd19jZmdfYWRkX2ZpbGUoYWNwaV9jb25m LT5md19jZmcsICJldGMvc21iaW9zL3NtYmlvcy1hbmNob3IiLAogICAgICAgICAgICAgICAgICAg ICAgICAgc21iaW9zX2FuY2hvciwgc21iaW9zX2FuY2hvcl9sZW4pOwogICAgIH0KIH0KQEAgLTc1 NSw2ICs3NTcsNyBAQCBzdGF0aWMgRldDZmdTdGF0ZSAqYm9jaHNfYmlvc19pbml0KEFkZHJlc3NT cGFjZSAqYXMsIFBDTWFjaGluZVN0YXRlICpwY21zKQogICAgIGludCBpOwogICAgIGNvbnN0IENQ VUFyY2hJZExpc3QgKmNwdXM7CiAgICAgTWFjaGluZUNsYXNzICptYyA9IE1BQ0hJTkVfR0VUX0NM QVNTKHBjbXMpOworICAgIEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNw aV9jb25maWd1cmF0aW9uOwogCiAgICAgZndfY2ZnID0gZndfY2ZnX2luaXRfaW9fZG1hKEZXX0NG R19JT19CQVNFLCBGV19DRkdfSU9fQkFTRSArIDQsIGFzKTsKICAgICBmd19jZmdfYWRkX2kxNihm d19jZmcsIEZXX0NGR19OQl9DUFVTLCBwY21zLT5ib290X2NwdXMpOwpAQCAtNzcxLDcgKzc3NCw3 IEBAIHN0YXRpYyBGV0NmZ1N0YXRlICpib2Noc19iaW9zX2luaXQoQWRkcmVzc1NwYWNlICphcywg UENNYWNoaW5lU3RhdGUgKnBjbXMpCiAgICAgICogU28gZm9yIGNvbXBhdGliaWxpdHkgcmVhc29u cyB3aXRoIG9sZCBCSU9TZXMgd2UgYXJlIHN0dWNrIHdpdGgKICAgICAgKiAiZXRjL21heC1jcHVz IiBhY3R1YWxseSBiZWluZyBhcGljX2lkX2xpbWl0CiAgICAgICovCi0gICAgZndfY2ZnX2FkZF9p MTYoZndfY2ZnLCBGV19DRkdfTUFYX0NQVVMsICh1aW50MTZfdClwY21zLT5hcGljX2lkX2xpbWl0 KTsKKyAgICBmd19jZmdfYWRkX2kxNihmd19jZmcsIEZXX0NGR19NQVhfQ1BVUywgKHVpbnQxNl90 KWFjcGlfY29uZi0+YXBpY19pZF9saW1pdCk7CiAgICAgZndfY2ZnX2FkZF9pNjQoZndfY2ZnLCBG V19DRkdfUkFNX1NJWkUsICh1aW50NjRfdClyYW1fc2l6ZSk7CiAgICAgZndfY2ZnX2FkZF9ieXRl cyhmd19jZmcsIEZXX0NGR19BQ1BJX1RBQkxFUywKICAgICAgICAgICAgICAgICAgICAgIGFjcGlf dGFibGVzLCBhY3BpX3RhYmxlc19sZW4pOwpAQCAtNzg3LDIwICs3OTAsMjEgQEAgc3RhdGljIEZX Q2ZnU3RhdGUgKmJvY2hzX2Jpb3NfaW5pdChBZGRyZXNzU3BhY2UgKmFzLCBQQ01hY2hpbmVTdGF0 ZSAqcGNtcykKICAgICAgKiBvZiBub2Rlcywgb25lIHdvcmQgZm9yIGVhY2ggVkNQVS0+bm9kZSBh bmQgb25lIHdvcmQgZm9yIGVhY2ggbm9kZSB0bwogICAgICAqIGhvbGQgdGhlIGFtb3VudCBvZiBt ZW1vcnkuCiAgICAgICovCi0gICAgbnVtYV9md19jZmcgPSBnX25ldzAodWludDY0X3QsIDEgKyBw Y21zLT5hcGljX2lkX2xpbWl0ICsgbmJfbnVtYV9ub2Rlcyk7CisgICAgbnVtYV9md19jZmcgPSBn X25ldzAodWludDY0X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgMSArIGFjcGlfY29uZi0+ YXBpY19pZF9saW1pdCArIG5iX251bWFfbm9kZXMpOwogICAgIG51bWFfZndfY2ZnWzBdID0gY3B1 X3RvX2xlNjQobmJfbnVtYV9ub2Rlcyk7CiAgICAgY3B1cyA9IG1jLT5wb3NzaWJsZV9jcHVfYXJj aF9pZHMoTUFDSElORShwY21zKSk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNwdXMtPmxlbjsgaSsr KSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBhcGljX2lkID0gY3B1cy0+Y3B1c1tpXS5hcmNoX2lk OwotICAgICAgICBhc3NlcnQoYXBpY19pZCA8IHBjbXMtPmFwaWNfaWRfbGltaXQpOworICAgICAg ICBhc3NlcnQoYXBpY19pZCA8IGFjcGlfY29uZi0+YXBpY19pZF9saW1pdCk7CiAgICAgICAgIG51 bWFfZndfY2ZnW2FwaWNfaWQgKyAxXSA9IGNwdV90b19sZTY0KGNwdXMtPmNwdXNbaV0ucHJvcHMu bm9kZV9pZCk7CiAgICAgfQogICAgIGZvciAoaSA9IDA7IGkgPCBuYl9udW1hX25vZGVzOyBpKysp IHsKLSAgICAgICAgbnVtYV9md19jZmdbcGNtcy0+YXBpY19pZF9saW1pdCArIDEgKyBpXSA9Cisg ICAgICAgIG51bWFfZndfY2ZnW2FjcGlfY29uZi0+YXBpY19pZF9saW1pdCArIDEgKyBpXSA9CiAg ICAgICAgICAgICBjcHVfdG9fbGU2NChudW1hX2luZm9baV0ubm9kZV9tZW0pOwogICAgIH0KICAg ICBmd19jZmdfYWRkX2J5dGVzKGZ3X2NmZywgRldfQ0ZHX05VTUEsIG51bWFfZndfY2ZnLAotICAg ICAgICAgICAgICAgICAgICAgKDEgKyBwY21zLT5hcGljX2lkX2xpbWl0ICsgbmJfbnVtYV9ub2Rl cykgKgorICAgICAgICAgICAgICAgICAgICAgKDEgKyBhY3BpX2NvbmYtPmFwaWNfaWRfbGltaXQg KyBuYl9udW1hX25vZGVzKSAqCiAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm51bWFfZndf Y2ZnKSk7CiAKICAgICByZXR1cm4gZndfY2ZnOwpAQCAtODQ4LDYgKzg1Miw3IEBAIHN0YXRpYyB2 b2lkIGxvYWRfbGludXgoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAgICAgY2hhciAqdm1vZGU7CiAg ICAgTWFjaGluZVN0YXRlICptYWNoaW5lID0gTUFDSElORShwY21zKTsKICAgICBQQ01hY2hpbmVD bGFzcyAqcGNtYyA9IFBDX01BQ0hJTkVfR0VUX0NMQVNTKHBjbXMpOworICAgIEFjcGlDb25maWd1 cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogICAgIHN0cnVj dCBzZXR1cF9kYXRhICpzZXR1cF9kYXRhOwogICAgIGNvbnN0IGNoYXIgKmtlcm5lbF9maWxlbmFt ZSA9IG1hY2hpbmUtPmtlcm5lbF9maWxlbmFtZTsKICAgICBjb25zdCBjaGFyICppbml0cmRfZmls ZW5hbWUgPSBtYWNoaW5lLT5pbml0cmRfZmlsZW5hbWU7CkBAIC05MTcsOCArOTIyLDggQEAgc3Rh dGljIHZvaWQgbG9hZF9saW51eChQQ01hY2hpbmVTdGF0ZSAqcGNtcywKICAgICAgICAgaW5pdHJk X21heCA9IDB4MzdmZmZmZmY7CiAgICAgfQogCi0gICAgaWYgKGluaXRyZF9tYXggPj0gcGNtcy0+ YmVsb3dfNGdfbWVtX3NpemUgLSBwY21jLT5hY3BpX2RhdGFfc2l6ZSkgewotICAgICAgICBpbml0 cmRfbWF4ID0gcGNtcy0+YmVsb3dfNGdfbWVtX3NpemUgLSBwY21jLT5hY3BpX2RhdGFfc2l6ZSAt IDE7CisgICAgaWYgKGluaXRyZF9tYXggPj0gYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSAt IHBjbWMtPmFjcGlfZGF0YV9zaXplKSB7CisgICAgICAgIGluaXRyZF9tYXggPSBhY3BpX2NvbmYt PmJlbG93XzRnX21lbV9zaXplIC0gcGNtYy0+YWNwaV9kYXRhX3NpemUgLSAxOwogICAgIH0KIAog ICAgIGZ3X2NmZ19hZGRfaTMyKGZ3X2NmZywgRldfQ0ZHX0NNRExJTkVfQUREUiwgY21kbGluZV9h ZGRyKTsKQEAgLTExNTQsNyArMTE1OSw4IEBAIHZvaWQgcGNfY3B1c19pbml0KFBDTWFjaGluZVN0 YXRlICpwY21zKQogICAgICAqCiAgICAgICogVGhpcyBpcyB1c2VkIGZvciBGV19DRkdfTUFYX0NQ VVMuIFNlZSBjb21tZW50cyBvbiBib2Noc19iaW9zX2luaXQoKS4KICAgICAgKi8KLSAgICBwY21z LT5hcGljX2lkX2xpbWl0ID0geDg2X2NwdV9hcGljX2lkX2Zyb21faW5kZXgobWF4X2NwdXMgLSAx KSArIDE7CisgICAgcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uLmFwaWNfaWRfbGltaXQgPQorICAg ICAgICB4ODZfY3B1X2FwaWNfaWRfZnJvbV9pbmRleChtYXhfY3B1cyAtIDEpICsgMTsKICAgICBw b3NzaWJsZV9jcHVzID0gbWMtPnBvc3NpYmxlX2NwdV9hcmNoX2lkcyhtcyk7CiAgICAgZm9yIChp ID0gMDsgaSA8IHNtcF9jcHVzOyBpKyspIHsKICAgICAgICAgcGNfbmV3X2NwdShwb3NzaWJsZV9j cHVzLT5jcHVzW2ldLnR5cGUsIHBvc3NpYmxlX2NwdXMtPmNwdXNbaV0uYXJjaF9pZCwKQEAgLTEx ODgsNyArMTE5NCw4IEBAIHN0YXRpYyB2b2lkIHBjX2J1aWxkX2ZlYXR1cmVfY29udHJvbF9maWxl KFBDTWFjaGluZVN0YXRlICpwY21zKQogCiAgICAgdmFsID0gZ19tYWxsb2Moc2l6ZW9mKCp2YWwp KTsKICAgICAqdmFsID0gY3B1X3RvX2xlNjQoZmVhdHVyZV9jb250cm9sX2JpdHMgfCBGRUFUVVJF X0NPTlRST0xfTE9DS0VEKTsKLSAgICBmd19jZmdfYWRkX2ZpbGUocGNtcy0+ZndfY2ZnLCAiZXRj L21zcl9mZWF0dXJlX2NvbnRyb2wiLCB2YWwsIHNpemVvZigqdmFsKSk7CisgICAgZndfY2ZnX2Fk ZF9maWxlKHBjbXMtPmFjcGlfY29uZmlndXJhdGlvbi5md19jZmcsCisgICAgICAgICAgICAgICAg ICAgICJldGMvbXNyX2ZlYXR1cmVfY29udHJvbCIsIHZhbCwgc2l6ZW9mKCp2YWwpKTsKIH0KIAog c3RhdGljIHZvaWQgcnRjX3NldF9jcHVzX2NvdW50KElTQURldmljZSAqcnRjLCB1aW50MTZfdCBj cHVzX2NvdW50KQpAQCAtMTIwNCwxMSArMTIxMSwyNiBAQCBzdGF0aWMgdm9pZCBydGNfc2V0X2Nw dXNfY291bnQoSVNBRGV2aWNlICpydGMsIHVpbnQxNl90IGNwdXNfY291bnQpCiAgICAgfQogfQog CitzdGF0aWMgdm9pZCBhY3BpX2NvbmZfcGNfaW5pdChQQ01hY2hpbmVTdGF0ZSAqcGNtcykKK3sK KyAgICBQQ01hY2hpbmVDbGFzcyAqcGNtYyA9IFBDX01BQ0hJTkVfR0VUX0NMQVNTKHBjbXMpOwor ICAgIEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0 aW9uOworCisgICAgLyogTWFjaGluZSBjbGFzcyBzZXR0aW5ncyAqLworICAgIGFjcGlfY29uZi0+ bGVnYWN5X2FjcGlfdGFibGVfc2l6ZSA9IHBjbWMtPmxlZ2FjeV9hY3BpX3RhYmxlX3NpemU7Cisg ICAgYWNwaV9jb25mLT5sZWdhY3lfY3B1X2hvdHBsdWcgPSBwY21jLT5sZWdhY3lfY3B1X2hvdHBs dWc7CisgICAgYWNwaV9jb25mLT5yc2RwX2luX3JhbSA9IHBjbWMtPnJzZHBfaW5fcmFtOworCisg ICAgLyogQUNQSSBidWlsZCBzdGF0ZSAqLworICAgIGFjcGlfY29uZi0+YnVpbGRfc3RhdGUgPSBO VUxMOworfQorCiBzdGF0aWMKIHZvaWQgcGNfbWFjaGluZV9kb25lKE5vdGlmaWVyICpub3RpZmll ciwgdm9pZCAqZGF0YSkKIHsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IGNvbnRhaW5lcl9v Zihub3RpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ01h Y2hpbmVTdGF0ZSwgbWFjaGluZV9kb25lKTsKKyAgICBBY3BpQ29uZmlndXJhdGlvbiAqYWNwaV9j b25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKICAgICBQQ0lCdXMgKmJ1cyA9IHBjbXMt PmJ1czsKIAogICAgIC8qIHNldCB0aGUgbnVtYmVyIG9mIENQVXMgKi8KQEAgLTEyMjMsMjMgKzEy NDUsMjcgQEAgdm9pZCBwY19tYWNoaW5lX2RvbmUoTm90aWZpZXIgKm5vdGlmaWVyLCB2b2lkICpk YXRhKQogICAgICAgICAgICAgICAgIGV4dHJhX2hvc3RzKys7CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KLSAgICAgICAgaWYgKGV4dHJhX2hvc3RzICYmIHBjbXMtPmZ3X2NmZykgeworICAgICAg ICBpZiAoZXh0cmFfaG9zdHMgJiYgYWNwaV9jb25mLT5md19jZmcpIHsKICAgICAgICAgICAgIHVp bnQ2NF90ICp2YWwgPSBnX21hbGxvYyhzaXplb2YoKnZhbCkpOwogICAgICAgICAgICAgKnZhbCA9 IGNwdV90b19sZTY0KGV4dHJhX2hvc3RzKTsKLSAgICAgICAgICAgIGZ3X2NmZ19hZGRfZmlsZShw Y21zLT5md19jZmcsCisgICAgICAgICAgICBmd19jZmdfYWRkX2ZpbGUoYWNwaV9jb25mLT5md19j ZmcsCiAgICAgICAgICAgICAgICAgICAgICJldGMvZXh0cmEtcGNpLXJvb3RzIiwgdmFsLCBzaXpl b2YoKnZhbCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgYWNwaV9zZXR1cCgpOwotICAgIGlm IChwY21zLT5md19jZmcpIHsKKyAgICBpZiAocGNtcy0+YWNwaV9idWlsZF9lbmFibGVkKSB7Cisg ICAgICAgIGFjcGlfY29uZl9wY19pbml0KHBjbXMpOworICAgICAgICBhY3BpX3NldHVwKE1BQ0hJ TkUocGNtcyksIGFjcGlfY29uZik7CisgICAgfQorCisgICAgaWYgKGFjcGlfY29uZi0+ZndfY2Zn KSB7CiAgICAgICAgIHBjX2J1aWxkX3NtYmlvcyhwY21zKTsKICAgICAgICAgcGNfYnVpbGRfZmVh dHVyZV9jb250cm9sX2ZpbGUocGNtcyk7CiAgICAgICAgIC8qIHVwZGF0ZSBGV19DRkdfTkJfQ1BV UyB0byBhY2NvdW50IGZvciAtZGV2aWNlIGFkZGVkIENQVXMgKi8KLSAgICAgICAgZndfY2ZnX21v ZGlmeV9pMTYocGNtcy0+ZndfY2ZnLCBGV19DRkdfTkJfQ1BVUywgcGNtcy0+Ym9vdF9jcHVzKTsK KyAgICAgICAgZndfY2ZnX21vZGlmeV9pMTYoYWNwaV9jb25mLT5md19jZmcsIEZXX0NGR19OQl9D UFVTLCBwY21zLT5ib290X2NwdXMpOwogICAgIH0KIAotICAgIGlmIChwY21zLT5hcGljX2lkX2xp bWl0ID4gMjU1ICYmICF4ZW5fZW5hYmxlZCgpKSB7CisgICAgaWYgKGFjcGlfY29uZi0+YXBpY19p ZF9saW1pdCA+IDI1NSAmJiAheGVuX2VuYWJsZWQoKSkgewogICAgICAgICBJbnRlbElPTU1VU3Rh dGUgKmlvbW11ID0gSU5URUxfSU9NTVVfREVWSUNFKHg4Nl9pb21tdV9nZXRfZGVmYXVsdCgpKTsK IAogICAgICAgICBpZiAoIWlvbW11IHx8ICFpb21tdS0+eDg2X2lvbW11LmludHJfc3VwcG9ydGVk IHx8CkBAIC0xMjU2LDEzICsxMjgyLDE0IEBAIHZvaWQgcGNfbWFjaGluZV9kb25lKE5vdGlmaWVy ICpub3RpZmllciwgdm9pZCAqZGF0YSkKIHZvaWQgcGNfZ3Vlc3RfaW5mb19pbml0KFBDTWFjaGlu ZVN0YXRlICpwY21zKQogewogICAgIGludCBpOworICAgIEFjcGlDb25maWd1cmF0aW9uICphY3Bp X2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogCi0gICAgcGNtcy0+YXBpY194cnVw dF9vdmVycmlkZSA9IGt2bV9hbGxvd3NfaXJxMF9vdmVycmlkZSgpOwotICAgIHBjbXMtPm51bWFf bm9kZXMgPSBuYl9udW1hX25vZGVzOwotICAgIHBjbXMtPm5vZGVfbWVtID0gZ19tYWxsb2MwKHBj bXMtPm51bWFfbm9kZXMgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mICpwY21zLT5ub2RlX21lbSk7CisgICAgYWNwaV9jb25mLT5hcGljX3hydXB0X292ZXJyaWRl ID0ga3ZtX2FsbG93c19pcnEwX292ZXJyaWRlKCk7CisgICAgYWNwaV9jb25mLT5udW1hX25vZGVz ID0gbmJfbnVtYV9ub2RlczsKKyAgICBhY3BpX2NvbmYtPm5vZGVfbWVtID0gZ19tYWxsb2MwKGFj cGlfY29uZi0+bnVtYV9ub2RlcyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YgKmFjcGlfY29uZi0+bm9kZV9tZW0pOwogICAgIGZvciAoaSA9IDA7IGkgPCBuYl9u dW1hX25vZGVzOyBpKyspIHsKLSAgICAgICAgcGNtcy0+bm9kZV9tZW1baV0gPSBudW1hX2luZm9b aV0ubm9kZV9tZW07CisgICAgICAgIGFjcGlfY29uZi0+bm9kZV9tZW1baV0gPSBudW1hX2luZm9b aV0ubm9kZV9tZW07CiAgICAgfQogCiAgICAgcGNtcy0+bWFjaGluZV9kb25lLm5vdGlmeSA9IHBj X21hY2hpbmVfZG9uZTsKQEAgLTEzMjMsNyArMTM1MCw3IEBAIHZvaWQgeGVuX2xvYWRfbGludXgo UENNYWNoaW5lU3RhdGUgKnBjbXMpCiAgICAgICAgICAgICAgICAhc3RyY21wKG9wdGlvbl9yb21b aV0ubmFtZSwgIm11bHRpYm9vdC5iaW4iKSk7CiAgICAgICAgIHJvbV9hZGRfb3B0aW9uKG9wdGlv bl9yb21baV0ubmFtZSwgb3B0aW9uX3JvbVtpXS5ib290aW5kZXgpOwogICAgIH0KLSAgICBwY21z LT5md19jZmcgPSBmd19jZmc7CisgICAgcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uLmZ3X2NmZyA9 IGZ3X2NmZzsKIH0KIAogdm9pZCBwY19tZW1vcnlfaW5pdChQQ01hY2hpbmVTdGF0ZSAqcGNtcywK QEAgLTEzMzcsOSArMTM2NCwxMCBAQCB2b2lkIHBjX21lbW9yeV9pbml0KFBDTWFjaGluZVN0YXRl ICpwY21zLAogICAgIEZXQ2ZnU3RhdGUgKmZ3X2NmZzsKICAgICBNYWNoaW5lU3RhdGUgKm1hY2hp bmUgPSBNQUNISU5FKHBjbXMpOwogICAgIFBDTWFjaGluZUNsYXNzICpwY21jID0gUENfTUFDSElO RV9HRVRfQ0xBU1MocGNtcyk7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZw Y21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAKLSAgICBhc3NlcnQobWFjaGluZS0+cmFtX3NpemUg PT0gcGNtcy0+YmVsb3dfNGdfbWVtX3NpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwY21zLT5hYm92ZV80Z19tZW1fc2l6ZSk7CisgICAgYXNzZXJ0KG1hY2hpbmUtPnJhbV9z aXplID09IGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUgKworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplKTsKIAogICAgIGxpbnV4 X2Jvb3QgPSAobWFjaGluZS0+a2VybmVsX2ZpbGVuYW1lICE9IE5VTEwpOwogCkBAIC0xMzUzLDE3 ICsxMzgxLDE3IEBAIHZvaWQgcGNfbWVtb3J5X2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAg ICAgKnJhbV9tZW1vcnkgPSByYW07CiAgICAgcmFtX2JlbG93XzRnID0gZ19tYWxsb2Moc2l6ZW9m KCpyYW1fYmVsb3dfNGcpKTsKICAgICBtZW1vcnlfcmVnaW9uX2luaXRfYWxpYXMocmFtX2JlbG93 XzRnLCBOVUxMLCAicmFtLWJlbG93LTRnIiwgcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLCBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDAsIGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUpOwogICAgIG1lbW9yeV9yZWdp b25fYWRkX3N1YnJlZ2lvbihzeXN0ZW1fbWVtb3J5LCAwLCByYW1fYmVsb3dfNGcpOwotICAgIGU4 MjBfYWRkX2VudHJ5KDAsIHBjbXMtPmJlbG93XzRnX21lbV9zaXplLCBFODIwX1JBTSk7Ci0gICAg aWYgKHBjbXMtPmFib3ZlXzRnX21lbV9zaXplID4gMCkgeworICAgIGU4MjBfYWRkX2VudHJ5KDAs IGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUsIEU4MjBfUkFNKTsKKyAgICBpZiAoYWNwaV9j b25mLT5hYm92ZV80Z19tZW1fc2l6ZSA+IDApIHsKICAgICAgICAgcmFtX2Fib3ZlXzRnID0gZ19t YWxsb2Moc2l6ZW9mKCpyYW1fYWJvdmVfNGcpKTsKICAgICAgICAgbWVtb3J5X3JlZ2lvbl9pbml0 X2FsaWFzKHJhbV9hYm92ZV80ZywgTlVMTCwgInJhbS1hYm92ZS00ZyIsIHJhbSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9zaXplLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNtcy0+YWJvdmVfNGdfbWVtX3NpemUpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfY29uZi0+YWJvdmVfNGdf bWVtX3NpemUpOwogICAgICAgICBtZW1vcnlfcmVnaW9uX2FkZF9zdWJyZWdpb24oc3lzdGVtX21l bW9yeSwgMHgxMDAwMDAwMDBVTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByYW1fYWJvdmVfNGcpOwotICAgICAgICBlODIwX2FkZF9lbnRyeSgweDEwMDAwMDAwMFVMTCwg cGNtcy0+YWJvdmVfNGdfbWVtX3NpemUsIEU4MjBfUkFNKTsKKyAgICAgICAgZTgyMF9hZGRfZW50 cnkoMHgxMDAwMDAwMDBVTEwsIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUsIEU4MjBfUkFN KTsKICAgICB9CiAKICAgICBpZiAoIXBjbWMtPmhhc19yZXNlcnZlZF9tZW1vcnkgJiYKQEAgLTEz OTgsNyArMTQyNiw3IEBAIHZvaWQgcGNfbWVtb3J5X2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMs CiAgICAgICAgIH0KIAogICAgICAgICBtYWNoaW5lLT5kZXZpY2VfbWVtb3J5LT5iYXNlID0KLSAg ICAgICAgICAgIFJPVU5EX1VQKDB4MTAwMDAwMDAwVUxMICsgcGNtcy0+YWJvdmVfNGdfbWVtX3Np emUsIDEgKiBHaUIpOworICAgICAgICAgICAgUk9VTkRfVVAoMHgxMDAwMDAwMDBVTEwgKyBhY3Bp X2NvbmYtPmFib3ZlXzRnX21lbV9zaXplLCAxICogR2lCKTsKIAogICAgICAgICBpZiAocGNtYy0+ ZW5mb3JjZV9hbGlnbmVkX2RpbW0pIHsKICAgICAgICAgICAgIC8qIHNpemUgZGV2aWNlIHJlZ2lv biBhc3N1bWluZyAxRyBwYWdlIG1heCBhbGlnbm1lbnQgcGVyIHNsb3QgKi8KQEAgLTE0NTUsNyAr MTQ4Myw3IEBAIHZvaWQgcGNfbWVtb3J5X2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAgICAg Zm9yIChpID0gMDsgaSA8IG5iX29wdGlvbl9yb21zOyBpKyspIHsKICAgICAgICAgcm9tX2FkZF9v cHRpb24ob3B0aW9uX3JvbVtpXS5uYW1lLCBvcHRpb25fcm9tW2ldLmJvb3RpbmRleCk7CiAgICAg fQotICAgIHBjbXMtPmZ3X2NmZyA9IGZ3X2NmZzsKKyAgICBhY3BpX2NvbmYtPmZ3X2NmZyA9IGZ3 X2NmZzsKIAogICAgIC8qIEluaXQgZGVmYXVsdCBJT0FQSUMgYWRkcmVzcyBzcGFjZSAqLwogICAg IHBjbXMtPmlvYXBpY19hcyA9ICZhZGRyZXNzX3NwYWNlX21lbW9yeTsKQEAgLTE0NzgsNyArMTUw Niw4IEBAIHVpbnQ2NF90IHBjX3BjaV9ob2xlNjRfc3RhcnQodm9pZCkKICAgICAgICAgICAgIGhv bGU2NF9zdGFydCArPSBtZW1vcnlfcmVnaW9uX3NpemUoJm1zLT5kZXZpY2VfbWVtb3J5LT5tcik7 CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBob2xlNjRfc3RhcnQgPSAweDEwMDAw MDAwMFVMTCArIHBjbXMtPmFib3ZlXzRnX21lbV9zaXplOworICAgICAgICBob2xlNjRfc3RhcnQg PQorICAgICAgICAgICAgMHgxMDAwMDAwMDBVTEwgKyBwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb24u YWJvdmVfNGdfbWVtX3NpemU7CiAgICAgfQogCiAgICAgcmV0dXJuIFJPVU5EX1VQKGhvbGU2NF9z dGFydCwgMSAqIEdpQik7CkBAIC0xNjg1LDIxICsxNzE0LDIyIEBAIHN0YXRpYyB2b2lkIHBjX21l bW9yeV9wcmVfcGx1ZyhIb3RwbHVnSGFuZGxlciAqaG90cGx1Z19kZXYsIERldmljZVN0YXRlICpk ZXYsCiB7CiAgICAgY29uc3QgUENNYWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKGhvdHBs dWdfZGV2KTsKICAgICBjb25zdCBQQ01hY2hpbmVDbGFzcyAqcGNtYyA9IFBDX01BQ0hJTkVfR0VU X0NMQVNTKHBjbXMpOworICAgIGNvbnN0IEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAm cGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogICAgIGNvbnN0IGJvb2wgaXNfbnZkaW1tID0gb2Jq ZWN0X2R5bmFtaWNfY2FzdChPQkpFQ1QoZGV2KSwgVFlQRV9OVkRJTU0pOwogICAgIGNvbnN0IHVp bnQ2NF90IGxlZ2FjeV9hbGlnbiA9IFRBUkdFVF9QQUdFX1NJWkU7CiAKICAgICAvKgogICAgICAq IFdoZW4gLW5vLWFjcGkgaXMgdXNlZCB3aXRoIFEzNSBtYWNoaW5lIHR5cGUsIG5vIEFDUEkgaXMg YnVpbHQsCi0gICAgICogYnV0IHBjbXMtPmFjcGlfZGV2IGlzIHN0aWxsIGNyZWF0ZWQuIENoZWNr ICFhY3BpX2VuYWJsZWQgaW4KKyAgICAgKiBidXQgYWNwaV9kZXYgaXMgc3RpbGwgY3JlYXRlZC4g Q2hlY2sgIWFjcGlfZW5hYmxlZCBpbgogICAgICAqIGFkZGl0aW9uIHRvIGNvdmVyIHRoaXMgY2Fz ZS4KICAgICAgKi8KLSAgICBpZiAoIXBjbXMtPmFjcGlfZGV2IHx8ICFhY3BpX2VuYWJsZWQpIHsK KyAgICBpZiAoIWFjcGlfY29uZi0+YWNwaV9kZXYgfHwgIWFjcGlfZW5hYmxlZCkgewogICAgICAg ICBlcnJvcl9zZXRnKGVycnAsCiAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBob3RwbHVnIGlz IG5vdCBlbmFibGVkOiBtaXNzaW5nIGFjcGkgZGV2aWNlIG9yIGFjcGkgZGlzYWJsZWQiKTsKICAg ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc19udmRpbW0gJiYgIXBjbXMtPmFjcGlf bnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQpIHsKKyAgICBpZiAoaXNfbnZkaW1tICYmICFhY3BpX2Nv bmYtPmFjcGlfbnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQpIHsKICAgICAgICAgZXJyb3Jfc2V0Zyhl cnJwLCAibnZkaW1tIGlzIG5vdCBlbmFibGVkOiBtaXNzaW5nICdudmRpbW0nIGluICctTSciKTsK ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3MTUsNiArMTc0NSw3IEBAIHN0YXRpYyB2b2lk IHBjX21lbW9yeV9wbHVnKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICBFcnJvciAq bG9jYWxfZXJyID0gTlVMTDsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUo aG90cGx1Z19kZXYpOwogICAgIGJvb2wgaXNfbnZkaW1tID0gb2JqZWN0X2R5bmFtaWNfY2FzdChP QkpFQ1QoZGV2KSwgVFlQRV9OVkRJTU0pOworICAgIEFjcGlDb25maWd1cmF0aW9uICphY3BpX2Nv bmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogCiAgICAgcGNfZGltbV9wbHVnKFBDX0RJ TU0oZGV2KSwgTUFDSElORShwY21zKSwgJmxvY2FsX2Vycik7CiAgICAgaWYgKGxvY2FsX2Vycikg ewpAQCAtMTcyMiwxMSArMTc1MywxMSBAQCBzdGF0aWMgdm9pZCBwY19tZW1vcnlfcGx1ZyhIb3Rw bHVnSGFuZGxlciAqaG90cGx1Z19kZXYsCiAgICAgfQogCiAgICAgaWYgKGlzX252ZGltbSkgewot ICAgICAgICBudmRpbW1fcGx1ZygmcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUpOworICAgICAgICBu dmRpbW1fcGx1ZygmYWNwaV9jb25mLT5hY3BpX252ZGltbV9zdGF0ZSk7CiAgICAgfQogCi0gICAg aGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhwY21zLT5hY3BpX2Rldik7Ci0gICAgaGhj LT5wbHVnKEhPVFBMVUdfSEFORExFUihwY21zLT5hY3BpX2RldiksIGRldiwgJmVycm9yX2Fib3J0 KTsKKyAgICBoaGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKGFjcGlfY29uZi0+YWNwaV9k ZXYpOworICAgIGhoYy0+cGx1ZyhIT1RQTFVHX0hBTkRMRVIoYWNwaV9jb25mLT5hY3BpX2Rldiks IGRldiwgJmVycm9yX2Fib3J0KTsKIG91dDoKICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9j YWxfZXJyKTsKIH0KQEAgLTE3MzcsMTMgKzE3NjgsMTQgQEAgc3RhdGljIHZvaWQgcGNfbWVtb3J5 X3VucGx1Z19yZXF1ZXN0KEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICBIb3RwbHVn SGFuZGxlckNsYXNzICpoaGM7CiAgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAgICAgUENN YWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKGhvdHBsdWdfZGV2KTsKKyAgICBBY3BpQ29u ZmlndXJhdGlvbiAqYWNwaV9jb25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKIAogICAg IC8qCiAgICAgICogV2hlbiAtbm8tYWNwaSBpcyB1c2VkIHdpdGggUTM1IG1hY2hpbmUgdHlwZSwg bm8gQUNQSSBpcyBidWlsdCwKLSAgICAgKiBidXQgcGNtcy0+YWNwaV9kZXYgaXMgc3RpbGwgY3Jl YXRlZC4gQ2hlY2sgIWFjcGlfZW5hYmxlZCBpbgorICAgICAqIGJ1dCBhY3BpX2RldiBpcyBzdGls bCBjcmVhdGVkLiBDaGVjayAhYWNwaV9lbmFibGVkIGluCiAgICAgICogYWRkaXRpb24gdG8gY292 ZXIgdGhpcyBjYXNlLgogICAgICAqLwotICAgIGlmICghcGNtcy0+YWNwaV9kZXYgfHwgIWFjcGlf ZW5hYmxlZCkgeworICAgIGlmICghYWNwaV9jb25mLT5hY3BpX2RldiB8fCAhYWNwaV9lbmFibGVk KSB7CiAgICAgICAgIGVycm9yX3NldGcoJmxvY2FsX2VyciwKICAgICAgICAgICAgICAgICAgICAi bWVtb3J5IGhvdHBsdWcgaXMgbm90IGVuYWJsZWQ6IG1pc3NpbmcgYWNwaSBkZXZpY2Ugb3IgYWNw aSBkaXNhYmxlZCIpOwogICAgICAgICBnb3RvIG91dDsKQEAgLTE3NTUsOCArMTc4Nyw4IEBAIHN0 YXRpYyB2b2lkIHBjX21lbW9yeV91bnBsdWdfcmVxdWVzdChIb3RwbHVnSGFuZGxlciAqaG90cGx1 Z19kZXYsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIGhoYyA9IEhPVFBMVUdfSEFO RExFUl9HRVRfQ0xBU1MocGNtcy0+YWNwaV9kZXYpOwotICAgIGhoYy0+dW5wbHVnX3JlcXVlc3Qo SE9UUExVR19IQU5ETEVSKHBjbXMtPmFjcGlfZGV2KSwgZGV2LCAmbG9jYWxfZXJyKTsKKyAgICBo aGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKGFjcGlfY29uZi0+YWNwaV9kZXYpOworICAg IGhoYy0+dW5wbHVnX3JlcXVlc3QoSE9UUExVR19IQU5ETEVSKGFjcGlfY29uZi0+YWNwaV9kZXYp LCBkZXYsICZsb2NhbF9lcnIpOwogCiBvdXQ6CiAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxv Y2FsX2Vycik7CkBAIC0xNzY2LDExICsxNzk4LDEyIEBAIHN0YXRpYyB2b2lkIHBjX21lbW9yeV91 bnBsdWcoSG90cGx1Z0hhbmRsZXIgKmhvdHBsdWdfZGV2LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEZXZpY2VTdGF0ZSAqZGV2LCBFcnJvciAqKmVycnApCiB7CiAgICAgUENNYWNoaW5l U3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKGhvdHBsdWdfZGV2KTsKKyAgICBBY3BpQ29uZmlndXJh dGlvbiAqYWNwaV9jb25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKICAgICBIb3RwbHVn SGFuZGxlckNsYXNzICpoaGM7CiAgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAKLSAgICBo aGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKHBjbXMtPmFjcGlfZGV2KTsKLSAgICBoaGMt PnVucGx1ZyhIT1RQTFVHX0hBTkRMRVIocGNtcy0+YWNwaV9kZXYpLCBkZXYsICZsb2NhbF9lcnIp OworICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRfQ0xBU1MoYWNwaV9jb25mLT5hY3BpX2Rl dik7CisgICAgaGhjLT51bnBsdWcoSE9UUExVR19IQU5ETEVSKGFjcGlfY29uZi0+YWNwaV9kZXYp LCBkZXYsICZsb2NhbF9lcnIpOwogCiAgICAgaWYgKGxvY2FsX2VycikgewogICAgICAgICBnb3Rv IG91dDsKQEAgLTE4MTcsMTAgKzE4NTAsMTEgQEAgc3RhdGljIHZvaWQgcGNfY3B1X3BsdWcoSG90 cGx1Z0hhbmRsZXIgKmhvdHBsdWdfZGV2LAogICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwog ICAgIFg4NkNQVSAqY3B1ID0gWDg2X0NQVShkZXYpOwogICAgIFBDTWFjaGluZVN0YXRlICpwY21z ID0gUENfTUFDSElORShob3RwbHVnX2Rldik7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlf Y29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAKLSAgICBpZiAocGNtcy0+YWNwaV9k ZXYpIHsKLSAgICAgICAgaGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhwY21zLT5hY3Bp X2Rldik7Ci0gICAgICAgIGhoYy0+cGx1ZyhIT1RQTFVHX0hBTkRMRVIocGNtcy0+YWNwaV9kZXYp LCBkZXYsICZsb2NhbF9lcnIpOworICAgIGlmIChhY3BpX2NvbmYtPmFjcGlfZGV2KSB7CisgICAg ICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRfQ0xBU1MoYWNwaV9jb25mLT5hY3BpX2Rldik7 CisgICAgICAgIGhoYy0+cGx1ZyhIT1RQTFVHX0hBTkRMRVIoYWNwaV9jb25mLT5hY3BpX2Rldiks IGRldiwgJmxvY2FsX2Vycik7CiAgICAgICAgIGlmIChsb2NhbF9lcnIpIHsKICAgICAgICAgICAg IGdvdG8gb3V0OwogICAgICAgICB9CkBAIC0xODMxLDggKzE4NjUsOCBAQCBzdGF0aWMgdm9pZCBw Y19jcHVfcGx1ZyhIb3RwbHVnSGFuZGxlciAqaG90cGx1Z19kZXYsCiAgICAgaWYgKHBjbXMtPnJ0 YykgewogICAgICAgICBydGNfc2V0X2NwdXNfY291bnQocGNtcy0+cnRjLCBwY21zLT5ib290X2Nw dXMpOwogICAgIH0KLSAgICBpZiAocGNtcy0+ZndfY2ZnKSB7Ci0gICAgICAgIGZ3X2NmZ19tb2Rp ZnlfaTE2KHBjbXMtPmZ3X2NmZywgRldfQ0ZHX05CX0NQVVMsIHBjbXMtPmJvb3RfY3B1cyk7Cisg ICAgaWYgKGFjcGlfY29uZi0+ZndfY2ZnKSB7CisgICAgICAgIGZ3X2NmZ19tb2RpZnlfaTE2KGFj cGlfY29uZi0+ZndfY2ZnLCBGV19DRkdfTkJfQ1BVUywgcGNtcy0+Ym9vdF9jcHVzKTsKICAgICB9 CiAKICAgICBmb3VuZF9jcHUgPSBwY19maW5kX2NwdV9zbG90KE1BQ0hJTkUocGNtcyksIGNwdS0+ YXBpY19pZCwgTlVMTCk7CkBAIC0xODQ4LDggKzE4ODIsOSBAQCBzdGF0aWMgdm9pZCBwY19jcHVf dW5wbHVnX3JlcXVlc3RfY2IoSG90cGx1Z0hhbmRsZXIgKmhvdHBsdWdfZGV2LAogICAgIEVycm9y ICpsb2NhbF9lcnIgPSBOVUxMOwogICAgIFg4NkNQVSAqY3B1ID0gWDg2X0NQVShkZXYpOwogICAg IFBDTWFjaGluZVN0YXRlICpwY21zID0gUENfTUFDSElORShob3RwbHVnX2Rldik7CisgICAgQWNw aUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAK LSAgICBpZiAoIXBjbXMtPmFjcGlfZGV2KSB7CisgICAgaWYgKCFhY3BpX2NvbmYtPmFjcGlfZGV2 KSB7CiAgICAgICAgIGVycm9yX3NldGcoJmxvY2FsX2VyciwgIkNQVSBob3QgdW5wbHVnIG5vdCBz dXBwb3J0ZWQgd2l0aG91dCBBQ1BJIik7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTE4 NjEsOCArMTg5Niw4IEBAIHN0YXRpYyB2b2lkIHBjX2NwdV91bnBsdWdfcmVxdWVzdF9jYihIb3Rw bHVnSGFuZGxlciAqaG90cGx1Z19kZXYsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAg IGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRfQ0xBU1MocGNtcy0+YWNwaV9kZXYpOwotICAgIGho Yy0+dW5wbHVnX3JlcXVlc3QoSE9UUExVR19IQU5ETEVSKHBjbXMtPmFjcGlfZGV2KSwgZGV2LCAm bG9jYWxfZXJyKTsKKyAgICBoaGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKGFjcGlfY29u Zi0+YWNwaV9kZXYpOworICAgIGhoYy0+dW5wbHVnX3JlcXVlc3QoSE9UUExVR19IQU5ETEVSKGFj cGlfY29uZi0+YWNwaV9kZXYpLCBkZXYsICZsb2NhbF9lcnIpOwogCiAgICAgaWYgKGxvY2FsX2Vy cikgewogICAgICAgICBnb3RvIG91dDsKQEAgLTE4ODEsOSArMTkxNiwxMCBAQCBzdGF0aWMgdm9p ZCBwY19jcHVfdW5wbHVnX2NiKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICBFcnJv ciAqbG9jYWxfZXJyID0gTlVMTDsKICAgICBYODZDUFUgKmNwdSA9IFg4Nl9DUFUoZGV2KTsKICAg ICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUoaG90cGx1Z19kZXYpOworICAgIEFj cGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwog Ci0gICAgaGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhwY21zLT5hY3BpX2Rldik7Ci0g ICAgaGhjLT51bnBsdWcoSE9UUExVR19IQU5ETEVSKHBjbXMtPmFjcGlfZGV2KSwgZGV2LCAmbG9j YWxfZXJyKTsKKyAgICBoaGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKGFjcGlfY29uZi0+ YWNwaV9kZXYpOworICAgIGhoYy0+dW5wbHVnKEhPVFBMVUdfSEFORExFUihhY3BpX2NvbmYtPmFj cGlfZGV2KSwgZGV2LCAmbG9jYWxfZXJyKTsKIAogICAgIGlmIChsb2NhbF9lcnIpIHsKICAgICAg ICAgZ290byBvdXQ7CkBAIC0xODk3LDcgKzE5MzMsNyBAQCBzdGF0aWMgdm9pZCBwY19jcHVfdW5w bHVnX2NiKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICBwY21zLT5ib290X2NwdXMt LTsKICAgICAvKiBVcGRhdGUgdGhlIG51bWJlciBvZiBDUFVzIGluIENNT1MgKi8KICAgICBydGNf c2V0X2NwdXNfY291bnQocGNtcy0+cnRjLCBwY21zLT5ib290X2NwdXMpOwotICAgIGZ3X2NmZ19t b2RpZnlfaTE2KHBjbXMtPmZ3X2NmZywgRldfQ0ZHX05CX0NQVVMsIHBjbXMtPmJvb3RfY3B1cyk7 CisgICAgZndfY2ZnX21vZGlmeV9pMTYoYWNwaV9jb25mLT5md19jZmcsIEZXX0NGR19OQl9DUFVT LCBwY21zLT5ib290X2NwdXMpOwogIG91dDoKICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9j YWxfZXJyKTsKIH0KQEAgLTIxODEsMjggKzIyMTcsMzAgQEAgc3RhdGljIGJvb2wgcGNfbWFjaGlu ZV9nZXRfbnZkaW1tKE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApCiB7CiAgICAgUENNYWNoaW5l U3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKG9iaik7CiAKLSAgICByZXR1cm4gcGNtcy0+YWNwaV9u dmRpbW1fc3RhdGUuaXNfZW5hYmxlZDsKKyAgICByZXR1cm4gcGNtcy0+YWNwaV9jb25maWd1cmF0 aW9uLmFjcGlfbnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQ7CiB9CiAKIHN0YXRpYyB2b2lkIHBjX21h Y2hpbmVfc2V0X252ZGltbShPYmplY3QgKm9iaiwgYm9vbCB2YWx1ZSwgRXJyb3IgKiplcnJwKQog ewogICAgIFBDTWFjaGluZVN0YXRlICpwY21zID0gUENfTUFDSElORShvYmopOworICAgIEFjcGlD b25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogCi0g ICAgcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCA9IHZhbHVlOworICAgIGFjcGlf Y29uZi0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCA9IHZhbHVlOwogfQogCiBzdGF0aWMg Y2hhciAqcGNfbWFjaGluZV9nZXRfbnZkaW1tX3BlcnNpc3RlbmNlKE9iamVjdCAqb2JqLCBFcnJv ciAqKmVycnApCiB7CiAgICAgUENNYWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKG9iaik7 CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3Vy YXRpb247CiAKLSAgICByZXR1cm4gZ19zdHJkdXAocGNtcy0+YWNwaV9udmRpbW1fc3RhdGUucGVy c2lzdGVuY2Vfc3RyaW5nKTsKKyAgICByZXR1cm4gZ19zdHJkdXAoYWNwaV9jb25mLT5hY3BpX252 ZGltbV9zdGF0ZS5wZXJzaXN0ZW5jZV9zdHJpbmcpOwogfQogCiBzdGF0aWMgdm9pZCBwY19tYWNo aW5lX3NldF9udmRpbW1fcGVyc2lzdGVuY2UoT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKnZhbHVl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAq KmVycnApCiB7CiAgICAgUENNYWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKG9iaik7Ci0g ICAgQWNwaU5WRElNTVN0YXRlICpudmRpbW1fc3RhdGUgPSAmcGNtcy0+YWNwaV9udmRpbW1fc3Rh dGU7CisgICAgQWNwaU5WRElNTVN0YXRlICpudmRpbW1fc3RhdGUgPSAmcGNtcy0+YWNwaV9jb25m aWd1cmF0aW9uLmFjcGlfbnZkaW1tX3N0YXRlOwogCiAgICAgaWYgKHN0cmNtcCh2YWx1ZSwgImNw dSIpID09IDApCiAgICAgICAgIG52ZGltbV9zdGF0ZS0+cGVyc2lzdGVuY2UgPSAzOwpAQCAtMjI2 OCw3ICsyMzA2LDcgQEAgc3RhdGljIHZvaWQgcGNfbWFjaGluZV9pbml0Zm4oT2JqZWN0ICpvYmop CiAgICAgcGNtcy0+c21tID0gT05fT0ZGX0FVVE9fQVVUTzsKICAgICBwY21zLT52bXBvcnQgPSBP Tl9PRkZfQVVUT19BVVRPOwogICAgIC8qIG52ZGltbSBpcyBkaXNhYmxlZCBvbiBkZWZhdWx0LiAq LwotICAgIHBjbXMtPmFjcGlfbnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBw Y21zLT5hY3BpX2NvbmZpZ3VyYXRpb24uYWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCA9IGZh bHNlOwogICAgIC8qIGFjcGkgYnVpbGQgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGlmIG1hY2hpbmUg c3VwcG9ydHMgaXQgKi8KICAgICBwY21zLT5hY3BpX2J1aWxkX2VuYWJsZWQgPSBQQ19NQUNISU5F X0dFVF9DTEFTUyhwY21zKS0+aGFzX2FjcGlfYnVpbGQ7CiAgICAgcGNtcy0+c21idXMgPSB0cnVl OwpkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9wY19waWl4LmMgYi9ody9pMzg2L3BjX3BpaXguYwppbmRl eCBkYzA5NDY2YjNlLi4wNjIwZDEwNzE1IDEwMDY0NAotLS0gYS9ody9pMzg2L3BjX3BpaXguYwor KysgYi9ody9pMzg2L3BjX3BpaXguYwpAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgdm9pZCBwY19p bml0MShNYWNoaW5lU3RhdGUgKm1hY2hpbmUsCiB7CiAgICAgUENNYWNoaW5lU3RhdGUgKnBjbXMg PSBQQ19NQUNISU5FKG1hY2hpbmUpOwogICAgIFBDTWFjaGluZUNsYXNzICpwY21jID0gUENfTUFD SElORV9HRVRfQ0xBU1MocGNtcyk7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9 ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAgICAgTWVtb3J5UmVnaW9uICpzeXN0ZW1fbWVt b3J5ID0gZ2V0X3N5c3RlbV9tZW1vcnkoKTsKICAgICBNZW1vcnlSZWdpb24gKnN5c3RlbV9pbyA9 IGdldF9zeXN0ZW1faW8oKTsKICAgICBpbnQgaTsKQEAgLTE0MiwxMSArMTQzLDExIEBAIHN0YXRp YyB2b2lkIHBjX2luaXQxKE1hY2hpbmVTdGF0ZSAqbWFjaGluZSwKICAgICAgICAgfQogCiAgICAg ICAgIGlmIChtYWNoaW5lLT5yYW1fc2l6ZSA+PSBsb3dtZW0pIHsKLSAgICAgICAgICAgIHBjbXMt PmFib3ZlXzRnX21lbV9zaXplID0gbWFjaGluZS0+cmFtX3NpemUgLSBsb3dtZW07Ci0gICAgICAg ICAgICBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSA9IGxvd21lbTsKKyAgICAgICAgICAgIGFjcGlf Y29uZi0+YWJvdmVfNGdfbWVtX3NpemUgPSBtYWNoaW5lLT5yYW1fc2l6ZSAtIGxvd21lbTsKKyAg ICAgICAgICAgIGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUgPSBsb3dtZW07CiAgICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgICBwY21zLT5hYm92ZV80Z19tZW1fc2l6ZSA9IDA7Ci0gICAg ICAgICAgICBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSA9IG1hY2hpbmUtPnJhbV9zaXplOworICAg ICAgICAgICAgYWNwaV9jb25mLT5hYm92ZV80Z19tZW1fc2l6ZSA9IDA7CisgICAgICAgICAgICBh Y3BpX2NvbmYtPmJlbG93XzRnX21lbV9zaXplID0gbWFjaGluZS0+cmFtX3NpemU7CiAgICAgICAg IH0KICAgICB9CiAKQEAgLTE5OSw4ICsyMDAsOCBAQCBzdGF0aWMgdm9pZCBwY19pbml0MShNYWNo aW5lU3RhdGUgKm1hY2hpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfdHlw ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpNDQwZnhfc3RhdGUsICZwaWl4M19k ZXZmbiwgJmlzYV9idXMsIHBjbXMtPmdzaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN5c3RlbV9tZW1vcnksIHN5c3RlbV9pbywgbWFjaGluZS0+cmFtX3NpemUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBjbXMtPmFib3ZlXzRnX21lbV9zaXplLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfbWVtb3J5LCByYW1fbWVtb3J5KTsKICAgICAg ICAgcGNtcy0+YnVzID0gcGNpX2J1czsKICAgICB9IGVsc2UgewpAQCAtMjg5LDE2ICsyOTAsMTYg QEAgc3RhdGljIHZvaWQgcGNfaW5pdDEoTWFjaGluZVN0YXRlICptYWNoaW5lLAogCiAgICAgICAg IG9iamVjdF9wcm9wZXJ0eV9hZGRfbGluayhPQkpFQ1QobWFjaGluZSksIFBDX01BQ0hJTkVfQUNQ SV9ERVZJQ0VfUFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfSE9U UExVR19IQU5ETEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9iamVjdCAq KikmcGNtcy0+YWNwaV9kZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT2Jq ZWN0ICoqKSZhY3BpX2NvbmYtPmFjcGlfZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2JqZWN0X3Byb3BlcnR5X2FsbG93X3NldF9saW5rLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT0JKX1BST1BfTElOS19TVFJPTkcsICZlcnJvcl9hYm9ydCk7CiAgICAg ICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfbGluayhPQkpFQ1QobWFjaGluZSksIE9CSkVDVChwaWl4 NF9wbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ19NQUNISU5FX0FDUElf REVWSUNFX1BST1AsICZlcnJvcl9hYm9ydCk7CiAgICAgfQogCi0gICAgaWYgKHBjbXMtPmFjcGlf bnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQpIHsKLSAgICAgICAgbnZkaW1tX2luaXRfYWNwaV9zdGF0 ZSgmcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUsIHN5c3RlbV9pbywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwY21zLT5md19jZmcsIE9CSkVDVChwY21zKSk7CisgICAgaWYgKGFjcGlf Y29uZi0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCkgeworICAgICAgICBudmRpbW1faW5p dF9hY3BpX3N0YXRlKCZhY3BpX2NvbmYtPmFjcGlfbnZkaW1tX3N0YXRlLCBzeXN0ZW1faW8sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9jb25mLT5md19jZmcsIE9CSkVDVChw Y21zKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9ody9pMzg2L3BjX3EzNS5jIGIvaHcvaTM4 Ni9wY19xMzUuYwppbmRleCA1MzIyNDFlM2Y4Li5jZGRlNGE0YmViIDEwMDY0NAotLS0gYS9ody9p Mzg2L3BjX3EzNS5jCisrKyBiL2h3L2kzODYvcGNfcTM1LmMKQEAgLTYzLDYgKzYzLDcgQEAgc3Rh dGljIHZvaWQgcGNfcTM1X2luaXQoTWFjaGluZVN0YXRlICptYWNoaW5lKQogewogICAgIFBDTWFj aGluZVN0YXRlICpwY21zID0gUENfTUFDSElORShtYWNoaW5lKTsKICAgICBQQ01hY2hpbmVDbGFz cyAqcGNtYyA9IFBDX01BQ0hJTkVfR0VUX0NMQVNTKHBjbXMpOworICAgIEFjcGlDb25maWd1cmF0 aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogICAgIFEzNVBDSUhv c3QgKnEzNV9ob3N0OwogICAgIFBDSUhvc3RTdGF0ZSAqcGhiOwogICAgIFBDSUJ1cyAqaG9zdF9i dXM7CkBAIC0xMTYsMTEgKzExNywxMSBAQCBzdGF0aWMgdm9pZCBwY19xMzVfaW5pdChNYWNoaW5l U3RhdGUgKm1hY2hpbmUpCiAgICAgfQogCiAgICAgaWYgKG1hY2hpbmUtPnJhbV9zaXplID49IGxv d21lbSkgewotICAgICAgICBwY21zLT5hYm92ZV80Z19tZW1fc2l6ZSA9IG1hY2hpbmUtPnJhbV9z aXplIC0gbG93bWVtOwotICAgICAgICBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSA9IGxvd21lbTsK KyAgICAgICAgYWNwaV9jb25mLT5hYm92ZV80Z19tZW1fc2l6ZSA9IG1hY2hpbmUtPnJhbV9zaXpl IC0gbG93bWVtOworICAgICAgICBhY3BpX2NvbmYtPmJlbG93XzRnX21lbV9zaXplID0gbG93bWVt OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHBjbXMtPmFib3ZlXzRnX21lbV9zaXplID0gMDsKLSAg ICAgICAgcGNtcy0+YmVsb3dfNGdfbWVtX3NpemUgPSBtYWNoaW5lLT5yYW1fc2l6ZTsKKyAgICAg ICAgYWNwaV9jb25mLT5hYm92ZV80Z19tZW1fc2l6ZSA9IDA7CisgICAgICAgIGFjcGlfY29uZi0+ YmVsb3dfNGdfbWVtX3NpemUgPSBtYWNoaW5lLT5yYW1fc2l6ZTsKICAgICB9CiAKICAgICBpZiAo eGVuX2VuYWJsZWQoKSkgewpAQCAtMTc5LDkgKzE4MCw5IEBAIHN0YXRpYyB2b2lkIHBjX3EzNV9p bml0KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUNIX0hPU1RfUFJPUF9TWVNURU1fTUVNLCBOVUxMKTsKICAgICBvYmplY3RfcHJvcGVydHlfc2V0 X2xpbmsoT0JKRUNUKHEzNV9ob3N0KSwgT0JKRUNUKHN5c3RlbV9pbyksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1DSF9IT1NUX1BST1BfSU9fTUVNLCBOVUxMKTsKLSAgICBvYmplY3Rf cHJvcGVydHlfc2V0X2ludChPQkpFQ1QocTM1X2hvc3QpLCBwY21zLT5iZWxvd180Z19tZW1fc2l6 ZSwKKyAgICBvYmplY3RfcHJvcGVydHlfc2V0X2ludChPQkpFQ1QocTM1X2hvc3QpLCBhY3BpX2Nv bmYtPmJlbG93XzRnX21lbV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9I T1NUX0JFTE9XXzRHX01FTV9TSVpFLCBOVUxMKTsKLSAgICBvYmplY3RfcHJvcGVydHlfc2V0X2lu dChPQkpFQ1QocTM1X2hvc3QpLCBwY21zLT5hYm92ZV80Z19tZW1fc2l6ZSwKKyAgICBvYmplY3Rf cHJvcGVydHlfc2V0X2ludChPQkpFQ1QocTM1X2hvc3QpLCBhY3BpX2NvbmYtPmFib3ZlXzRnX21l bV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9IT1NUX0FCT1ZFXzRHX01F TV9TSVpFLCBOVUxMKTsKICAgICAvKiBwY2kgKi8KICAgICBxZGV2X2luaXRfbm9mYWlsKERFVklD RShxMzVfaG9zdCkpOwpAQCAtMTk0LDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHBjX3EzNV9pbml0 KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKIAogICAgIG9iamVjdF9wcm9wZXJ0eV9hZGRfbGluayhP QkpFQ1QobWFjaGluZSksIFBDX01BQ0hJTkVfQUNQSV9ERVZJQ0VfUFJPUCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVFlQRV9IT1RQTFVHX0hBTkRMRVIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChPYmplY3QgKiopJnBjbXMtPmFjcGlfZGV2LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoT2JqZWN0ICoqKSZhY3BpX2NvbmYtPmFjcGlfZGV2LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvYmplY3RfcHJvcGVydHlfYWxsb3dfc2V0X2xpbmssCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9CSl9QUk9QX0xJTktfU1RST05HLCAmZXJyb3JfYWJv cnQpOwogICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfbGluayhPQkpFQ1QobWFjaGluZSksIE9CSkVD VChscGMpLApAQCAtMjc2LDkgKzI3Nyw5IEBAIHN0YXRpYyB2b2lkIHBjX3EzNV9pbml0KE1hY2hp bmVTdGF0ZSAqbWFjaGluZSkKICAgICBwY192Z2FfaW5pdChpc2FfYnVzLCBob3N0X2J1cyk7CiAg ICAgcGNfbmljX2luaXQocGNtYywgaXNhX2J1cywgaG9zdF9idXMpOwogCi0gICAgaWYgKHBjbXMt PmFjcGlfbnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQpIHsKLSAgICAgICAgbnZkaW1tX2luaXRfYWNw aV9zdGF0ZSgmcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUsIHN5c3RlbV9pbywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwY21zLT5md19jZmcsIE9CSkVDVChwY21zKSk7CisgICAgaWYg KGFjcGlfY29uZi0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCkgeworICAgICAgICBudmRp bW1faW5pdF9hY3BpX3N0YXRlKCZhY3BpX2NvbmYtPmFjcGlfbnZkaW1tX3N0YXRlLCBzeXN0ZW1f aW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9jb25mLT5md19jZmcsIE9C SkVDVChwY21zKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9ody9pMzg2L3hlbi94ZW4taHZt LmMgYi9ody9pMzg2L3hlbi94ZW4taHZtLmMKaW5kZXggOTM1YTM2NzZjOC4uMDQ1OWZiNzM0MCAx MDA2NDQKLS0tIGEvaHcvaTM4Ni94ZW4veGVuLWh2bS5jCisrKyBiL2h3L2kzODYveGVuL3hlbi1o dm0uYwpAQCAtMTkwLDYgKzE5MCw3IEBAIHFlbXVfaXJxICp4ZW5faW50ZXJydXB0X2NvbnRyb2xs ZXJfaW5pdCh2b2lkKQogc3RhdGljIHZvaWQgeGVuX3JhbV9pbml0KFBDTWFjaGluZVN0YXRlICpw Y21zLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJhbV9hZGRyX3QgcmFtX3NpemUsIE1lbW9y eVJlZ2lvbiAqKnJhbV9tZW1vcnlfcCkKIHsKKyAgICBBY3BpQ29uZmlndXJhdGlvbiAqYWNwaV9j b25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKICAgICBNZW1vcnlSZWdpb24gKnN5c21l bSA9IGdldF9zeXN0ZW1fbWVtb3J5KCk7CiAgICAgcmFtX2FkZHJfdCBibG9ja19sZW47CiAgICAg dWludDY0X3QgdXNlcl9sb3dtZW0gPSBvYmplY3RfcHJvcGVydHlfZ2V0X3VpbnQocWRldl9nZXRf bWFjaGluZSgpLApAQCAtMjA3LDIwICsyMDgsMjAgQEAgc3RhdGljIHZvaWQgeGVuX3JhbV9pbml0 KFBDTWFjaGluZVN0YXRlICpwY21zLAogICAgIH0KIAogICAgIGlmIChyYW1fc2l6ZSA+PSB1c2Vy X2xvd21lbSkgewotICAgICAgICBwY21zLT5hYm92ZV80Z19tZW1fc2l6ZSA9IHJhbV9zaXplIC0g dXNlcl9sb3dtZW07Ci0gICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9zaXplID0gdXNlcl9sb3dt ZW07CisgICAgICAgIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUgPSByYW1fc2l6ZSAtIHVz ZXJfbG93bWVtOworICAgICAgICBhY3BpX2NvbmYtPmJlbG93XzRnX21lbV9zaXplID0gdXNlcl9s b3dtZW07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcGNtcy0+YWJvdmVfNGdfbWVtX3NpemUgPSAw OwotICAgICAgICBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSA9IHJhbV9zaXplOworICAgICAgICBh Y3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplID0gMDsKKyAgICAgICAgYWNwaV9jb25mLT5iZWxv d180Z19tZW1fc2l6ZSA9IHJhbV9zaXplOwogICAgIH0KLSAgICBpZiAoIXBjbXMtPmFib3ZlXzRn X21lbV9zaXplKSB7CisgICAgaWYgKCFhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplKSB7CiAg ICAgICAgIGJsb2NrX2xlbiA9IHJhbV9zaXplOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAg ICAgICAgICAqIFhlbiBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgbWVtb3J5IGNvbnRpbnVvdXNseSwg aXQga2VlcHMgYQogICAgICAgICAgKiBob2xlIG9mIHRoZSBzaXplIGNvbXB1dGVkIGFib3ZlIG9y IHBhc3NlZCBpbi4KICAgICAgICAgICovCi0gICAgICAgIGJsb2NrX2xlbiA9ICgxVUxMIDw8IDMy KSArIHBjbXMtPmFib3ZlXzRnX21lbV9zaXplOworICAgICAgICBibG9ja19sZW4gPSAoMVVMTCA8 PCAzMikgKyBhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplOwogICAgIH0KICAgICBtZW1vcnlf cmVnaW9uX2luaXRfcmFtKCZyYW1fbWVtb3J5LCBOVUxMLCAieGVuLnJhbSIsIGJsb2NrX2xlbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcl9mYXRhbCk7CkBAIC0yMzcsMTIgKzIz OCwxMiBAQCBzdGF0aWMgdm9pZCB4ZW5fcmFtX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAg ICAgICovCiAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X2FsaWFzKCZyYW1fbG8sIE5VTEwsICJ4ZW4u cmFtLmxvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhbV9tZW1vcnksIDB4YzAw MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9zaXpl IC0gMHhjMDAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfY29uZi0+YmVs b3dfNGdfbWVtX3NpemUgLSAweGMwMDAwKTsKICAgICBtZW1vcnlfcmVnaW9uX2FkZF9zdWJyZWdp b24oc3lzbWVtLCAweGMwMDAwLCAmcmFtX2xvKTsKLSAgICBpZiAocGNtcy0+YWJvdmVfNGdfbWVt X3NpemUgPiAwKSB7CisgICAgaWYgKGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUgPiAwKSB7 CiAgICAgICAgIG1lbW9yeV9yZWdpb25faW5pdF9hbGlhcygmcmFtX2hpLCBOVUxMLCAieGVuLnJh bS5oaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmFtX21lbW9yeSwgMHgx MDAwMDAwMDBVTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY21zLT5hYm92 ZV80Z19tZW1fc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3BpX2Nv bmYtPmFib3ZlXzRnX21lbV9zaXplKTsKICAgICAgICAgbWVtb3J5X3JlZ2lvbl9hZGRfc3VicmVn aW9uKHN5c21lbSwgMHgxMDAwMDAwMDBVTEwsICZyYW1faGkpOwogICAgIH0KIH0KLS0gCjIuMTku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=