From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Ortiz Subject: [PATCH v4 01/23] hw: i386: Decouple the ACPI build from the PC machine type Date: Thu, 1 Nov 2018 11:22:41 +0100 Message-ID: <20181101102303.16439-2-sameo@linux.intel.com> References: <20181101102303.16439-1-sameo@linux.intel.com> 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 1gIA8t-0004Lk-Ov for xen-devel@lists.xenproject.org; Thu, 01 Nov 2018 10:23:59 +0000 In-Reply-To: <20181101102303.16439-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" , "open list:X86" , Paolo Bonzini , Marcel Apfelbaum , Shannon Zhao , Anthony Perard , Igor Mammedov , "open list:ARM ACPI Subsystem" , Richard Henderson List-Id: xen-devel@lists.xenproject.org QUNQSSB0YWJsZXMgYXJlIHBsYXRmb3JtIGFuZCBtYWNoaW5lIHR5cGUgYW5kIGV2ZW4gYXJjaGl0 ZWN0dXJlCmFnbm9zdGljLCBhbmQgYXMgc3VjaCB3ZSB3YW50IHRvIHByb3ZpZGUgYW4gaW50ZXJu YWwgQUNQSSBBUEkgdGhhdApvbmx5IGRlcGVuZHMgb24gcGxhdGZvcm0gYWdub3N0aWMgaW5mb3Jt YXRpb24uCgpGb3IgdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGluIG9yZGVyIHRvIGJ1aWxkIEFDUEkg dGFibGVzIGluZGVwZW5kZW50bHkKZnJvbSB0aGUgUEMgb3IgUTM1IG1hY2hpbmUgdHlwZXMsIHdl IGFyZSBtb3ZpbmcgYSBmZXcgTWFjaGluZVN0YXRlCnN0cnVjdHVyZSBmaWVsZHMgaW50byBhIG1h Y2hpbmUgdHlwZSBhZ25vc3RpYyBzdHJ1Y3R1cmUgY2FsbGVkCkFjcGlDb25maWd1cmF0aW9uLiBU aGUgc3RydWN0dXJlIGZpZWxkcyB3ZSBtb3ZlIGFyZToKCiAgIEhvdHBsdWdIYW5kbGVyICphY3Bp X2RldgogICBBY3BpTlZESU1NU3RhdGUgYWNwaV9udmRpbW1fc3RhdGU7CiAgIEZXQ2ZnU3RhdGUg KmZ3X2NmZwogICByYW1fYWRkcl90IGJlbG93XzRnX21lbV9zaXplLCBhYm92ZV80Z19tZW1fc2l6 ZQogICBib29sIGFwaWNfeHJ1cHRfb3ZlcnJpZGUKICAgdW5zaWduZWQgYXBpY19pZF9saW1pdAog ICB1aW50NjRfdCBudW1hX25vZGVzCiAgIHVpbnQ2NF90IG51bWFfbWVtCgpTaWduZWQtb2ZmLWJ5 OiBTYW11ZWwgT3J0aXogPHNhbWVvQGxpbnV4LmludGVsLmNvbT4KLS0tCiBody9hY3BpL2NwdV9o b3RwbHVnLmMgICAgfCAgIDkgKy0KIGh3L2FybS92aXJ0LWFjcGktYnVpbGQuYyB8ICAxMCAtLS0K IGh3L2kzODYvYWNwaS1idWlsZC5jICAgICB8IDEzNiArKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0KIGh3L2kzODYvYWNwaS1idWlsZC5oICAgICB8ICAgNCArLQogaHcvaTM4Ni9wYy5jICAg ICAgICAgICAgIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQog aHcvaTM4Ni9wY19waWl4LmMgICAgICAgIHwgIDIxICsrLS0tCiBody9pMzg2L3BjX3EzNS5jICAg ICAgICAgfCAgMjEgKystLS0KIGh3L2kzODYveGVuL3hlbi1odm0uYyAgICB8ICAxOSArKystLQog aW5jbHVkZS9ody9hY3BpL2FjcGkuaCAgIHwgIDQ0ICsrKysrKysrKysKIGluY2x1ZGUvaHcvaTM4 Ni9wYy5oICAgICB8ICAxOSArKy0tLQogMTAgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMo KyksIDIwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9hY3BpL2NwdV9ob3RwbHVnLmMg 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 IApkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9hY3BpLWJ1aWxkLmggYi9ody9pMzg2L2FjcGktYnVpbGQu aAppbmRleCAwMDczMzJlNTFjLi4wNjVhMWQ4MjUwIDEwMDY0NAotLS0gYS9ody9pMzg2L2FjcGkt YnVpbGQuaAorKysgYi9ody9pMzg2L2FjcGktYnVpbGQuaApAQCAtMiw2ICsyLDggQEAKICNpZm5k ZWYgSFdfSTM4Nl9BQ1BJX0JVSUxEX0gKICNkZWZpbmUgSFdfSTM4Nl9BQ1BJX0JVSUxEX0gKIAot dm9pZCBhY3BpX3NldHVwKHZvaWQpOworI2luY2x1ZGUgImh3L2FjcGkvYWNwaS5oIgorCit2b2lk IGFjcGlfc2V0dXAoTWFjaGluZVN0YXRlICptYWNoaW5lLCBBY3BpQ29uZmlndXJhdGlvbiAqYWNw aV9jb25mKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9ody9pMzg2L3BjLmMgYi9ody9pMzg2L3Bj LmMKaW5kZXggZjA5NTcyNWRiYS4uMDkwZjk2OTkzMyAxMDA2NDQKLS0tIGEvaHcvaTM4Ni9wYy5j CisrKyBiL2h3L2kzODYvcGMuYwpAQCAtNDQ0LDE3ICs0NDQsMTggQEAgdm9pZCBwY19jbW9zX2lu aXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiB7CiAgICAgaW50IHZhbDsKICAgICBzdGF0aWMgcGNf Y21vc19pbml0X2xhdGVfYXJnIGFyZzsKKyAgICBBY3BpQ29uZmlndXJhdGlvbiAqYWNwaV9jb25m ID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKIAogICAgIC8qIHZhcmlvdXMgaW1wb3J0YW50 IENNT1MgbG9jYXRpb25zIG5lZWRlZCBieSBQQy9Cb2NocyBiaW9zICovCiAKICAgICAvKiBtZW1v cnkgc2l6ZSAqLwogICAgIC8qIGJhc2UgbWVtb3J5IChmaXJzdCBNaUIpICovCi0gICAgdmFsID0g TUlOKHBjbXMtPmJlbG93XzRnX21lbV9zaXplIC8gS2lCLCA2NDApOworICAgIHZhbCA9IE1JTihh Y3BpX2NvbmYtPmJlbG93XzRnX21lbV9zaXplIC8gS2lCLCA2NDApOwogICAgIHJ0Y19zZXRfbWVt b3J5KHMsIDB4MTUsIHZhbCk7CiAgICAgcnRjX3NldF9tZW1vcnkocywgMHgxNiwgdmFsID4+IDgp OwogICAgIC8qIGV4dGVuZGVkIG1lbW9yeSAobmV4dCA2NE1pQikgKi8KLSAgICBpZiAocGNtcy0+ YmVsb3dfNGdfbWVtX3NpemUgPiAxICogTWlCKSB7Ci0gICAgICAgIHZhbCA9IChwY21zLT5iZWxv d180Z19tZW1fc2l6ZSAtIDEgKiBNaUIpIC8gS2lCOworICAgIGlmIChhY3BpX2NvbmYtPmJlbG93 XzRnX21lbV9zaXplID4gMSAqIE1pQikgeworICAgICAgICB2YWwgPSAoYWNwaV9jb25mLT5iZWxv d180Z19tZW1fc2l6ZSAtIDEgKiBNaUIpIC8gS2lCOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHZh bCA9IDA7CiAgICAgfQpAQCAtNDY1LDggKzQ2Niw4IEBAIHZvaWQgcGNfY21vc19pbml0KFBDTWFj aGluZVN0YXRlICpwY21zLAogICAgIHJ0Y19zZXRfbWVtb3J5KHMsIDB4MzAsIHZhbCk7CiAgICAg cnRjX3NldF9tZW1vcnkocywgMHgzMSwgdmFsID4+IDgpOwogICAgIC8qIG1lbW9yeSBiZXR3ZWVu IDE2TWlCIGFuZCA0R2lCICovCi0gICAgaWYgKHBjbXMtPmJlbG93XzRnX21lbV9zaXplID4gMTYg KiBNaUIpIHsKLSAgICAgICAgdmFsID0gKHBjbXMtPmJlbG93XzRnX21lbV9zaXplIC0gMTYgKiBN aUIpIC8gKDY0ICogS2lCKTsKKyAgICBpZiAoYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSA+ IDE2ICogTWlCKSB7CisgICAgICAgIHZhbCA9IChhY3BpX2NvbmYtPmJlbG93XzRnX21lbV9zaXpl IC0gMTYgKiBNaUIpIC8gKDY0ICogS2lCKTsKICAgICB9IGVsc2UgewogICAgICAgICB2YWwgPSAw OwogICAgIH0KQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIHBjX2Ntb3NfaW5pdChQQ01hY2hpbmVT dGF0ZSAqcGNtcywKICAgICBydGNfc2V0X21lbW9yeShzLCAweDM0LCB2YWwpOwogICAgIHJ0Y19z ZXRfbWVtb3J5KHMsIDB4MzUsIHZhbCA+PiA4KTsKICAgICAvKiBtZW1vcnkgYWJvdmUgNEdpQiAq LwotICAgIHZhbCA9IHBjbXMtPmFib3ZlXzRnX21lbV9zaXplIC8gNjU1MzY7CisgICAgdmFsID0g YWNwaV9jb25mLT5hYm92ZV80Z19tZW1fc2l6ZSAvIDY1NTM2OwogICAgIHJ0Y19zZXRfbWVtb3J5 KHMsIDB4NWIsIHZhbCk7CiAgICAgcnRjX3NldF9tZW1vcnkocywgMHg1YywgdmFsID4+IDgpOwog ICAgIHJ0Y19zZXRfbWVtb3J5KHMsIDB4NWQsIHZhbCA+PiAxNik7CkBAIC03MTQsMTMgKzcxNSwx NCBAQCBzdGF0aWMgdm9pZCBwY19idWlsZF9zbWJpb3MoUENNYWNoaW5lU3RhdGUgKnBjbXMpCiAg ICAgdW5zaWduZWQgaSwgYXJyYXlfY291bnQ7CiAgICAgTWFjaGluZVN0YXRlICptcyA9IE1BQ0hJ TkUocGNtcyk7CiAgICAgWDg2Q1BVICpjcHUgPSBYODZfQ1BVKG1zLT5wb3NzaWJsZV9jcHVzLT5j cHVzWzBdLmNwdSk7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5h Y3BpX2NvbmZpZ3VyYXRpb247CiAKICAgICAvKiB0ZWxsIHNtYmlvcyBhYm91dCBjcHVpZCB2ZXJz aW9uIGFuZCBmZWF0dXJlcyAqLwogICAgIHNtYmlvc19zZXRfY3B1aWQoY3B1LT5lbnYuY3B1aWRf dmVyc2lvbiwgY3B1LT5lbnYuZmVhdHVyZXNbRkVBVF8xX0VEWF0pOwogCiAgICAgc21iaW9zX3Rh YmxlcyA9IHNtYmlvc19nZXRfdGFibGVfbGVnYWN5KCZzbWJpb3NfdGFibGVzX2xlbik7CiAgICAg aWYgKHNtYmlvc190YWJsZXMpIHsKLSAgICAgICAgZndfY2ZnX2FkZF9ieXRlcyhwY21zLT5md19j ZmcsIEZXX0NGR19TTUJJT1NfRU5UUklFUywKKyAgICAgICAgZndfY2ZnX2FkZF9ieXRlcyhhY3Bp X2NvbmYtPmZ3X2NmZywgRldfQ0ZHX1NNQklPU19FTlRSSUVTLAogICAgICAgICAgICAgICAgICAg ICAgICAgIHNtYmlvc190YWJsZXMsIHNtYmlvc190YWJsZXNfbGVuKTsKICAgICB9CiAKQEAgLTc0 MSw5ICs3NDMsOSBAQCBzdGF0aWMgdm9pZCBwY19idWlsZF9zbWJpb3MoUENNYWNoaW5lU3RhdGUg KnBjbXMpCiAgICAgZ19mcmVlKG1lbV9hcnJheSk7CiAKICAgICBpZiAoc21iaW9zX2FuY2hvcikg ewotICAgICAgICBmd19jZmdfYWRkX2ZpbGUocGNtcy0+ZndfY2ZnLCAiZXRjL3NtYmlvcy9zbWJp b3MtdGFibGVzIiwKKyAgICAgICAgZndfY2ZnX2FkZF9maWxlKGFjcGlfY29uZi0+ZndfY2ZnLCAi ZXRjL3NtYmlvcy9zbWJpb3MtdGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNtYmlv c190YWJsZXMsIHNtYmlvc190YWJsZXNfbGVuKTsKLSAgICAgICAgZndfY2ZnX2FkZF9maWxlKHBj bXMtPmZ3X2NmZywgImV0Yy9zbWJpb3Mvc21iaW9zLWFuY2hvciIsCisgICAgICAgIGZ3X2NmZ19h ZGRfZmlsZShhY3BpX2NvbmYtPmZ3X2NmZywgImV0Yy9zbWJpb3Mvc21iaW9zLWFuY2hvciIsCiAg ICAgICAgICAgICAgICAgICAgICAgICBzbWJpb3NfYW5jaG9yLCBzbWJpb3NfYW5jaG9yX2xlbik7 CiAgICAgfQogfQpAQCAtNzU1LDYgKzc1Nyw3IEBAIHN0YXRpYyBGV0NmZ1N0YXRlICpib2Noc19i aW9zX2luaXQoQWRkcmVzc1NwYWNlICphcywgUENNYWNoaW5lU3RhdGUgKnBjbXMpCiAgICAgaW50 IGk7CiAgICAgY29uc3QgQ1BVQXJjaElkTGlzdCAqY3B1czsKICAgICBNYWNoaW5lQ2xhc3MgKm1j ID0gTUFDSElORV9HRVRfQ0xBU1MocGNtcyk7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlf Y29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAKICAgICBmd19jZmcgPSBmd19jZmdf aW5pdF9pb19kbWEoRldfQ0ZHX0lPX0JBU0UsIEZXX0NGR19JT19CQVNFICsgNCwgYXMpOwogICAg IGZ3X2NmZ19hZGRfaTE2KGZ3X2NmZywgRldfQ0ZHX05CX0NQVVMsIHBjbXMtPmJvb3RfY3B1cyk7 CkBAIC03NzEsNyArNzc0LDcgQEAgc3RhdGljIEZXQ2ZnU3RhdGUgKmJvY2hzX2Jpb3NfaW5pdChB ZGRyZXNzU3BhY2UgKmFzLCBQQ01hY2hpbmVTdGF0ZSAqcGNtcykKICAgICAgKiBTbyBmb3IgY29t cGF0aWJpbGl0eSByZWFzb25zIHdpdGggb2xkIEJJT1NlcyB3ZSBhcmUgc3R1Y2sgd2l0aAogICAg ICAqICJldGMvbWF4LWNwdXMiIGFjdHVhbGx5IGJlaW5nIGFwaWNfaWRfbGltaXQKICAgICAgKi8K LSAgICBmd19jZmdfYWRkX2kxNihmd19jZmcsIEZXX0NGR19NQVhfQ1BVUywgKHVpbnQxNl90KXBj bXMtPmFwaWNfaWRfbGltaXQpOworICAgIGZ3X2NmZ19hZGRfaTE2KGZ3X2NmZywgRldfQ0ZHX01B WF9DUFVTLCAodWludDE2X3QpYWNwaV9jb25mLT5hcGljX2lkX2xpbWl0KTsKICAgICBmd19jZmdf YWRkX2k2NChmd19jZmcsIEZXX0NGR19SQU1fU0laRSwgKHVpbnQ2NF90KXJhbV9zaXplKTsKICAg ICBmd19jZmdfYWRkX2J5dGVzKGZ3X2NmZywgRldfQ0ZHX0FDUElfVEFCTEVTLAogICAgICAgICAg ICAgICAgICAgICAgYWNwaV90YWJsZXMsIGFjcGlfdGFibGVzX2xlbik7CkBAIC03ODcsMjAgKzc5 MCwyMSBAQCBzdGF0aWMgRldDZmdTdGF0ZSAqYm9jaHNfYmlvc19pbml0KEFkZHJlc3NTcGFjZSAq YXMsIFBDTWFjaGluZVN0YXRlICpwY21zKQogICAgICAqIG9mIG5vZGVzLCBvbmUgd29yZCBmb3Ig ZWFjaCBWQ1BVLT5ub2RlIGFuZCBvbmUgd29yZCBmb3IgZWFjaCBub2RlIHRvCiAgICAgICogaG9s ZCB0aGUgYW1vdW50IG9mIG1lbW9yeS4KICAgICAgKi8KLSAgICBudW1hX2Z3X2NmZyA9IGdfbmV3 MCh1aW50NjRfdCwgMSArIHBjbXMtPmFwaWNfaWRfbGltaXQgKyBuYl9udW1hX25vZGVzKTsKKyAg ICBudW1hX2Z3X2NmZyA9IGdfbmV3MCh1aW50NjRfdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAxICsgYWNwaV9jb25mLT5hcGljX2lkX2xpbWl0ICsgbmJfbnVtYV9ub2Rlcyk7CiAgICAgbnVt YV9md19jZmdbMF0gPSBjcHVfdG9fbGU2NChuYl9udW1hX25vZGVzKTsKICAgICBjcHVzID0gbWMt PnBvc3NpYmxlX2NwdV9hcmNoX2lkcyhNQUNISU5FKHBjbXMpKTsKICAgICBmb3IgKGkgPSAwOyBp IDwgY3B1cy0+bGVuOyBpKyspIHsKICAgICAgICAgdW5zaWduZWQgaW50IGFwaWNfaWQgPSBjcHVz LT5jcHVzW2ldLmFyY2hfaWQ7Ci0gICAgICAgIGFzc2VydChhcGljX2lkIDwgcGNtcy0+YXBpY19p ZF9saW1pdCk7CisgICAgICAgIGFzc2VydChhcGljX2lkIDwgYWNwaV9jb25mLT5hcGljX2lkX2xp bWl0KTsKICAgICAgICAgbnVtYV9md19jZmdbYXBpY19pZCArIDFdID0gY3B1X3RvX2xlNjQoY3B1 cy0+Y3B1c1tpXS5wcm9wcy5ub2RlX2lkKTsKICAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IG5i X251bWFfbm9kZXM7IGkrKykgewotICAgICAgICBudW1hX2Z3X2NmZ1twY21zLT5hcGljX2lkX2xp bWl0ICsgMSArIGldID0KKyAgICAgICAgbnVtYV9md19jZmdbYWNwaV9jb25mLT5hcGljX2lkX2xp bWl0ICsgMSArIGldID0KICAgICAgICAgICAgIGNwdV90b19sZTY0KG51bWFfaW5mb1tpXS5ub2Rl X21lbSk7CiAgICAgfQogICAgIGZ3X2NmZ19hZGRfYnl0ZXMoZndfY2ZnLCBGV19DRkdfTlVNQSwg bnVtYV9md19jZmcsCi0gICAgICAgICAgICAgICAgICAgICAoMSArIHBjbXMtPmFwaWNfaWRfbGlt aXQgKyBuYl9udW1hX25vZGVzKSAqCisgICAgICAgICAgICAgICAgICAgICAoMSArIGFjcGlfY29u Zi0+YXBpY19pZF9saW1pdCArIG5iX251bWFfbm9kZXMpICoKICAgICAgICAgICAgICAgICAgICAg IHNpemVvZigqbnVtYV9md19jZmcpKTsKIAogICAgIHJldHVybiBmd19jZmc7CkBAIC04NDgsNiAr ODUyLDcgQEAgc3RhdGljIHZvaWQgbG9hZF9saW51eChQQ01hY2hpbmVTdGF0ZSAqcGNtcywKICAg ICBjaGFyICp2bW9kZTsKICAgICBNYWNoaW5lU3RhdGUgKm1hY2hpbmUgPSBNQUNISU5FKHBjbXMp OwogICAgIFBDTWFjaGluZUNsYXNzICpwY21jID0gUENfTUFDSElORV9HRVRfQ0xBU1MocGNtcyk7 CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3Vy YXRpb247CiAgICAgc3RydWN0IHNldHVwX2RhdGEgKnNldHVwX2RhdGE7CiAgICAgY29uc3QgY2hh ciAqa2VybmVsX2ZpbGVuYW1lID0gbWFjaGluZS0+a2VybmVsX2ZpbGVuYW1lOwogICAgIGNvbnN0 IGNoYXIgKmluaXRyZF9maWxlbmFtZSA9IG1hY2hpbmUtPmluaXRyZF9maWxlbmFtZTsKQEAgLTkx Nyw4ICs5MjIsOCBAQCBzdGF0aWMgdm9pZCBsb2FkX2xpbnV4KFBDTWFjaGluZVN0YXRlICpwY21z LAogICAgICAgICBpbml0cmRfbWF4ID0gMHgzN2ZmZmZmZjsKICAgICB9CiAKLSAgICBpZiAoaW5p dHJkX21heCA+PSBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSAtIHBjbWMtPmFjcGlfZGF0YV9zaXpl KSB7Ci0gICAgICAgIGluaXRyZF9tYXggPSBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSAtIHBjbWMt PmFjcGlfZGF0YV9zaXplIC0gMTsKKyAgICBpZiAoaW5pdHJkX21heCA+PSBhY3BpX2NvbmYtPmJl bG93XzRnX21lbV9zaXplIC0gcGNtYy0+YWNwaV9kYXRhX3NpemUpIHsKKyAgICAgICAgaW5pdHJk X21heCA9IGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUgLSBwY21jLT5hY3BpX2RhdGFfc2l6 ZSAtIDE7CiAgICAgfQogCiAgICAgZndfY2ZnX2FkZF9pMzIoZndfY2ZnLCBGV19DRkdfQ01ETElO RV9BRERSLCBjbWRsaW5lX2FkZHIpOwpAQCAtMTE1NCw3ICsxMTU5LDggQEAgdm9pZCBwY19jcHVz X2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMpCiAgICAgICoKICAgICAgKiBUaGlzIGlzIHVzZWQg Zm9yIEZXX0NGR19NQVhfQ1BVUy4gU2VlIGNvbW1lbnRzIG9uIGJvY2hzX2Jpb3NfaW5pdCgpLgog ICAgICAqLwotICAgIHBjbXMtPmFwaWNfaWRfbGltaXQgPSB4ODZfY3B1X2FwaWNfaWRfZnJvbV9p bmRleChtYXhfY3B1cyAtIDEpICsgMTsKKyAgICBwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb24uYXBp Y19pZF9saW1pdCA9CisgICAgICAgIHg4Nl9jcHVfYXBpY19pZF9mcm9tX2luZGV4KG1heF9jcHVz IC0gMSkgKyAxOwogICAgIHBvc3NpYmxlX2NwdXMgPSBtYy0+cG9zc2libGVfY3B1X2FyY2hfaWRz KG1zKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgc21wX2NwdXM7IGkrKykgewogICAgICAgICBwY19u ZXdfY3B1KHBvc3NpYmxlX2NwdXMtPmNwdXNbaV0udHlwZSwgcG9zc2libGVfY3B1cy0+Y3B1c1tp XS5hcmNoX2lkLApAQCAtMTE4OCw3ICsxMTk0LDggQEAgc3RhdGljIHZvaWQgcGNfYnVpbGRfZmVh dHVyZV9jb250cm9sX2ZpbGUoUENNYWNoaW5lU3RhdGUgKnBjbXMpCiAKICAgICB2YWwgPSBnX21h bGxvYyhzaXplb2YoKnZhbCkpOwogICAgICp2YWwgPSBjcHVfdG9fbGU2NChmZWF0dXJlX2NvbnRy b2xfYml0cyB8IEZFQVRVUkVfQ09OVFJPTF9MT0NLRUQpOwotICAgIGZ3X2NmZ19hZGRfZmlsZShw Y21zLT5md19jZmcsICJldGMvbXNyX2ZlYXR1cmVfY29udHJvbCIsIHZhbCwgc2l6ZW9mKCp2YWwp KTsKKyAgICBmd19jZmdfYWRkX2ZpbGUocGNtcy0+YWNwaV9jb25maWd1cmF0aW9uLmZ3X2NmZywK KyAgICAgICAgICAgICAgICAgICAgImV0Yy9tc3JfZmVhdHVyZV9jb250cm9sIiwgdmFsLCBzaXpl b2YoKnZhbCkpOwogfQogCiBzdGF0aWMgdm9pZCBydGNfc2V0X2NwdXNfY291bnQoSVNBRGV2aWNl ICpydGMsIHVpbnQxNl90IGNwdXNfY291bnQpCkBAIC0xMjA0LDExICsxMjExLDI2IEBAIHN0YXRp YyB2b2lkIHJ0Y19zZXRfY3B1c19jb3VudChJU0FEZXZpY2UgKnJ0YywgdWludDE2X3QgY3B1c19j b3VudCkKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIGFjcGlfY29uZl9wY19pbml0KFBDTWFjaGlu ZVN0YXRlICpwY21zKQoreworICAgIFBDTWFjaGluZUNsYXNzICpwY21jID0gUENfTUFDSElORV9H RVRfQ0xBU1MocGNtcyk7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21z LT5hY3BpX2NvbmZpZ3VyYXRpb247CisKKyAgICAvKiBNYWNoaW5lIGNsYXNzIHNldHRpbmdzICov CisgICAgYWNwaV9jb25mLT5sZWdhY3lfYWNwaV90YWJsZV9zaXplID0gcGNtYy0+bGVnYWN5X2Fj cGlfdGFibGVfc2l6ZTsKKyAgICBhY3BpX2NvbmYtPmxlZ2FjeV9jcHVfaG90cGx1ZyA9IHBjbWMt PmxlZ2FjeV9jcHVfaG90cGx1ZzsKKyAgICBhY3BpX2NvbmYtPnJzZHBfaW5fcmFtID0gcGNtYy0+ cnNkcF9pbl9yYW07CisKKyAgICAvKiBBQ1BJIGJ1aWxkIHN0YXRlICovCisgICAgYWNwaV9jb25m LT5idWlsZF9zdGF0ZSA9IE5VTEw7Cit9CisKIHN0YXRpYwogdm9pZCBwY19tYWNoaW5lX2RvbmUo Tm90aWZpZXIgKm5vdGlmaWVyLCB2b2lkICpkYXRhKQogewogICAgIFBDTWFjaGluZVN0YXRlICpw Y21zID0gY29udGFpbmVyX29mKG5vdGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBDTWFjaGluZVN0YXRlLCBtYWNoaW5lX2RvbmUpOworICAgIEFjcGlDb25m aWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogICAgIFBD SUJ1cyAqYnVzID0gcGNtcy0+YnVzOwogCiAgICAgLyogc2V0IHRoZSBudW1iZXIgb2YgQ1BVcyAq LwpAQCAtMTIyMywyMyArMTI0NSwyNyBAQCB2b2lkIHBjX21hY2hpbmVfZG9uZShOb3RpZmllciAq bm90aWZpZXIsIHZvaWQgKmRhdGEpCiAgICAgICAgICAgICAgICAgZXh0cmFfaG9zdHMrKzsKICAg ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoZXh0cmFfaG9zdHMgJiYgcGNtcy0+ ZndfY2ZnKSB7CisgICAgICAgIGlmIChleHRyYV9ob3N0cyAmJiBhY3BpX2NvbmYtPmZ3X2NmZykg ewogICAgICAgICAgICAgdWludDY0X3QgKnZhbCA9IGdfbWFsbG9jKHNpemVvZigqdmFsKSk7CiAg ICAgICAgICAgICAqdmFsID0gY3B1X3RvX2xlNjQoZXh0cmFfaG9zdHMpOwotICAgICAgICAgICAg ZndfY2ZnX2FkZF9maWxlKHBjbXMtPmZ3X2NmZywKKyAgICAgICAgICAgIGZ3X2NmZ19hZGRfZmls ZShhY3BpX2NvbmYtPmZ3X2NmZywKICAgICAgICAgICAgICAgICAgICAgImV0Yy9leHRyYS1wY2kt cm9vdHMiLCB2YWwsIHNpemVvZigqdmFsKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhY3Bp X3NldHVwKCk7Ci0gICAgaWYgKHBjbXMtPmZ3X2NmZykgeworICAgIGlmIChwY21zLT5hY3BpX2J1 aWxkX2VuYWJsZWQpIHsKKyAgICAgICAgYWNwaV9jb25mX3BjX2luaXQocGNtcyk7CisgICAgICAg IGFjcGlfc2V0dXAoTUFDSElORShwY21zKSwgYWNwaV9jb25mKTsKKyAgICB9CisKKyAgICBpZiAo YWNwaV9jb25mLT5md19jZmcpIHsKICAgICAgICAgcGNfYnVpbGRfc21iaW9zKHBjbXMpOwogICAg ICAgICBwY19idWlsZF9mZWF0dXJlX2NvbnRyb2xfZmlsZShwY21zKTsKICAgICAgICAgLyogdXBk YXRlIEZXX0NGR19OQl9DUFVTIHRvIGFjY291bnQgZm9yIC1kZXZpY2UgYWRkZWQgQ1BVcyAqLwot ICAgICAgICBmd19jZmdfbW9kaWZ5X2kxNihwY21zLT5md19jZmcsIEZXX0NGR19OQl9DUFVTLCBw Y21zLT5ib290X2NwdXMpOworICAgICAgICBmd19jZmdfbW9kaWZ5X2kxNihhY3BpX2NvbmYtPmZ3 X2NmZywgRldfQ0ZHX05CX0NQVVMsIHBjbXMtPmJvb3RfY3B1cyk7CiAgICAgfQogCi0gICAgaWYg KHBjbXMtPmFwaWNfaWRfbGltaXQgPiAyNTUgJiYgIXhlbl9lbmFibGVkKCkpIHsKKyAgICBpZiAo YWNwaV9jb25mLT5hcGljX2lkX2xpbWl0ID4gMjU1ICYmICF4ZW5fZW5hYmxlZCgpKSB7CiAgICAg ICAgIEludGVsSU9NTVVTdGF0ZSAqaW9tbXUgPSBJTlRFTF9JT01NVV9ERVZJQ0UoeDg2X2lvbW11 X2dldF9kZWZhdWx0KCkpOwogCiAgICAgICAgIGlmICghaW9tbXUgfHwgIWlvbW11LT54ODZfaW9t bXUuaW50cl9zdXBwb3J0ZWQgfHwKQEAgLTEyNTYsMTMgKzEyODIsMTQgQEAgdm9pZCBwY19tYWNo aW5lX2RvbmUoTm90aWZpZXIgKm5vdGlmaWVyLCB2b2lkICpkYXRhKQogdm9pZCBwY19ndWVzdF9p bmZvX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMpCiB7CiAgICAgaW50IGk7CisgICAgQWNwaUNv bmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAKLSAg ICBwY21zLT5hcGljX3hydXB0X292ZXJyaWRlID0ga3ZtX2FsbG93c19pcnEwX292ZXJyaWRlKCk7 Ci0gICAgcGNtcy0+bnVtYV9ub2RlcyA9IG5iX251bWFfbm9kZXM7Ci0gICAgcGNtcy0+bm9kZV9t ZW0gPSBnX21hbGxvYzAocGNtcy0+bnVtYV9ub2RlcyAqCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YgKnBjbXMtPm5vZGVfbWVtKTsKKyAgICBhY3BpX2NvbmYtPmFw aWNfeHJ1cHRfb3ZlcnJpZGUgPSBrdm1fYWxsb3dzX2lycTBfb3ZlcnJpZGUoKTsKKyAgICBhY3Bp X2NvbmYtPm51bWFfbm9kZXMgPSBuYl9udW1hX25vZGVzOworICAgIGFjcGlfY29uZi0+bm9kZV9t ZW0gPSBnX21hbGxvYzAoYWNwaV9jb25mLT5udW1hX25vZGVzICoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZiAqYWNwaV9jb25mLT5ub2RlX21lbSk7CiAgICAgZm9y IChpID0gMDsgaSA8IG5iX251bWFfbm9kZXM7IGkrKykgewotICAgICAgICBwY21zLT5ub2RlX21l bVtpXSA9IG51bWFfaW5mb1tpXS5ub2RlX21lbTsKKyAgICAgICAgYWNwaV9jb25mLT5ub2RlX21l bVtpXSA9IG51bWFfaW5mb1tpXS5ub2RlX21lbTsKICAgICB9CiAKICAgICBwY21zLT5tYWNoaW5l X2RvbmUubm90aWZ5ID0gcGNfbWFjaGluZV9kb25lOwpAQCAtMTMyMyw3ICsxMzUwLDcgQEAgdm9p ZCB4ZW5fbG9hZF9saW51eChQQ01hY2hpbmVTdGF0ZSAqcGNtcykKICAgICAgICAgICAgICAgICFz dHJjbXAob3B0aW9uX3JvbVtpXS5uYW1lLCAibXVsdGlib290LmJpbiIpKTsKICAgICAgICAgcm9t X2FkZF9vcHRpb24ob3B0aW9uX3JvbVtpXS5uYW1lLCBvcHRpb25fcm9tW2ldLmJvb3RpbmRleCk7 CiAgICAgfQotICAgIHBjbXMtPmZ3X2NmZyA9IGZ3X2NmZzsKKyAgICBwY21zLT5hY3BpX2NvbmZp Z3VyYXRpb24uZndfY2ZnID0gZndfY2ZnOwogfQogCiB2b2lkIHBjX21lbW9yeV9pbml0KFBDTWFj aGluZVN0YXRlICpwY21zLApAQCAtMTMzNyw5ICsxMzY0LDEwIEBAIHZvaWQgcGNfbWVtb3J5X2lu aXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAgICAgRldDZmdTdGF0ZSAqZndfY2ZnOwogICAgIE1h Y2hpbmVTdGF0ZSAqbWFjaGluZSA9IE1BQ0hJTkUocGNtcyk7CiAgICAgUENNYWNoaW5lQ2xhc3Mg KnBjbWMgPSBQQ19NQUNISU5FX0dFVF9DTEFTUyhwY21zKTsKKyAgICBBY3BpQ29uZmlndXJhdGlv biAqYWNwaV9jb25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKIAotICAgIGFzc2VydCht YWNoaW5lLT5yYW1fc2l6ZSA9PSBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSArCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmFib3ZlXzRnX21lbV9zaXplKTsKKyAgICBhc3Nl cnQobWFjaGluZS0+cmFtX3NpemUgPT0gYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSArCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3Np emUpOwogCiAgICAgbGludXhfYm9vdCA9IChtYWNoaW5lLT5rZXJuZWxfZmlsZW5hbWUgIT0gTlVM TCk7CiAKQEAgLTEzNTMsMTcgKzEzODEsMTcgQEAgdm9pZCBwY19tZW1vcnlfaW5pdChQQ01hY2hp bmVTdGF0ZSAqcGNtcywKICAgICAqcmFtX21lbW9yeSA9IHJhbTsKICAgICByYW1fYmVsb3dfNGcg PSBnX21hbGxvYyhzaXplb2YoKnJhbV9iZWxvd180ZykpOwogICAgIG1lbW9yeV9yZWdpb25faW5p dF9hbGlhcyhyYW1fYmVsb3dfNGcsIE5VTEwsICJyYW0tYmVsb3ctNGciLCByYW0sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAsIHBjbXMtPmJlbG93XzRnX21lbV9zaXplKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSk7 CiAgICAgbWVtb3J5X3JlZ2lvbl9hZGRfc3VicmVnaW9uKHN5c3RlbV9tZW1vcnksIDAsIHJhbV9i ZWxvd180Zyk7Ci0gICAgZTgyMF9hZGRfZW50cnkoMCwgcGNtcy0+YmVsb3dfNGdfbWVtX3NpemUs IEU4MjBfUkFNKTsKLSAgICBpZiAocGNtcy0+YWJvdmVfNGdfbWVtX3NpemUgPiAwKSB7CisgICAg ZTgyMF9hZGRfZW50cnkoMCwgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSwgRTgyMF9SQU0p OworICAgIGlmIChhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplID4gMCkgewogICAgICAgICBy YW1fYWJvdmVfNGcgPSBnX21hbGxvYyhzaXplb2YoKnJhbV9hYm92ZV80ZykpOwogICAgICAgICBt ZW1vcnlfcmVnaW9uX2luaXRfYWxpYXMocmFtX2Fib3ZlXzRnLCBOVUxMLCAicmFtLWFib3ZlLTRn IiwgcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNtcy0+YmVsb3dfNGdf bWVtX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY21zLT5hYm92ZV80 Z19tZW1fc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3BpX2NvbmYt PmJlbG93XzRnX21lbV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNw aV9jb25mLT5hYm92ZV80Z19tZW1fc2l6ZSk7CiAgICAgICAgIG1lbW9yeV9yZWdpb25fYWRkX3N1 YnJlZ2lvbihzeXN0ZW1fbWVtb3J5LCAweDEwMDAwMDAwMFVMTCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJhbV9hYm92ZV80Zyk7Ci0gICAgICAgIGU4MjBfYWRkX2VudHJ5 KDB4MTAwMDAwMDAwVUxMLCBwY21zLT5hYm92ZV80Z19tZW1fc2l6ZSwgRTgyMF9SQU0pOworICAg ICAgICBlODIwX2FkZF9lbnRyeSgweDEwMDAwMDAwMFVMTCwgYWNwaV9jb25mLT5hYm92ZV80Z19t ZW1fc2l6ZSwgRTgyMF9SQU0pOwogICAgIH0KIAogICAgIGlmICghcGNtYy0+aGFzX3Jlc2VydmVk X21lbW9yeSAmJgpAQCAtMTM5OCw3ICsxNDI2LDcgQEAgdm9pZCBwY19tZW1vcnlfaW5pdChQQ01h Y2hpbmVTdGF0ZSAqcGNtcywKICAgICAgICAgfQogCiAgICAgICAgIG1hY2hpbmUtPmRldmljZV9t ZW1vcnktPmJhc2UgPQotICAgICAgICAgICAgUk9VTkRfVVAoMHgxMDAwMDAwMDBVTEwgKyBwY21z LT5hYm92ZV80Z19tZW1fc2l6ZSwgMSAqIEdpQik7CisgICAgICAgICAgICBST1VORF9VUCgweDEw MDAwMDAwMFVMTCArIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUsIDEgKiBHaUIpOwogCiAg ICAgICAgIGlmIChwY21jLT5lbmZvcmNlX2FsaWduZWRfZGltbSkgewogICAgICAgICAgICAgLyog c2l6ZSBkZXZpY2UgcmVnaW9uIGFzc3VtaW5nIDFHIHBhZ2UgbWF4IGFsaWdubWVudCBwZXIgc2xv dCAqLwpAQCAtMTQ1NSw3ICsxNDgzLDcgQEAgdm9pZCBwY19tZW1vcnlfaW5pdChQQ01hY2hpbmVT dGF0ZSAqcGNtcywKICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3B0aW9uX3JvbXM7IGkrKykgewog ICAgICAgICByb21fYWRkX29wdGlvbihvcHRpb25fcm9tW2ldLm5hbWUsIG9wdGlvbl9yb21baV0u Ym9vdGluZGV4KTsKICAgICB9Ci0gICAgcGNtcy0+ZndfY2ZnID0gZndfY2ZnOworICAgIGFjcGlf Y29uZi0+ZndfY2ZnID0gZndfY2ZnOwogCiAgICAgLyogSW5pdCBkZWZhdWx0IElPQVBJQyBhZGRy ZXNzIHNwYWNlICovCiAgICAgcGNtcy0+aW9hcGljX2FzID0gJmFkZHJlc3Nfc3BhY2VfbWVtb3J5 OwpAQCAtMTQ3OCw3ICsxNTA2LDggQEAgdWludDY0X3QgcGNfcGNpX2hvbGU2NF9zdGFydCh2b2lk KQogICAgICAgICAgICAgaG9sZTY0X3N0YXJ0ICs9IG1lbW9yeV9yZWdpb25fc2l6ZSgmbXMtPmRl dmljZV9tZW1vcnktPm1yKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhvbGU2 NF9zdGFydCA9IDB4MTAwMDAwMDAwVUxMICsgcGNtcy0+YWJvdmVfNGdfbWVtX3NpemU7CisgICAg ICAgIGhvbGU2NF9zdGFydCA9CisgICAgICAgICAgICAweDEwMDAwMDAwMFVMTCArIHBjbXMtPmFj cGlfY29uZmlndXJhdGlvbi5hYm92ZV80Z19tZW1fc2l6ZTsKICAgICB9CiAKICAgICByZXR1cm4g Uk9VTkRfVVAoaG9sZTY0X3N0YXJ0LCAxICogR2lCKTsKQEAgLTE2ODUsMjEgKzE3MTQsMjIgQEAg c3RhdGljIHZvaWQgcGNfbWVtb3J5X3ByZV9wbHVnKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2Rl diwgRGV2aWNlU3RhdGUgKmRldiwKIHsKICAgICBjb25zdCBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9 IFBDX01BQ0hJTkUoaG90cGx1Z19kZXYpOwogICAgIGNvbnN0IFBDTWFjaGluZUNsYXNzICpwY21j ID0gUENfTUFDSElORV9HRVRfQ0xBU1MocGNtcyk7CisgICAgY29uc3QgQWNwaUNvbmZpZ3VyYXRp b24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAgICAgY29uc3QgYm9v bCBpc19udmRpbW0gPSBvYmplY3RfZHluYW1pY19jYXN0KE9CSkVDVChkZXYpLCBUWVBFX05WRElN TSk7CiAgICAgY29uc3QgdWludDY0X3QgbGVnYWN5X2FsaWduID0gVEFSR0VUX1BBR0VfU0laRTsK IAogICAgIC8qCiAgICAgICogV2hlbiAtbm8tYWNwaSBpcyB1c2VkIHdpdGggUTM1IG1hY2hpbmUg dHlwZSwgbm8gQUNQSSBpcyBidWlsdCwKLSAgICAgKiBidXQgcGNtcy0+YWNwaV9kZXYgaXMgc3Rp bGwgY3JlYXRlZC4gQ2hlY2sgIWFjcGlfZW5hYmxlZCBpbgorICAgICAqIGJ1dCBhY3BpX2RldiBp cyBzdGlsbCBjcmVhdGVkLiBDaGVjayAhYWNwaV9lbmFibGVkIGluCiAgICAgICogYWRkaXRpb24g dG8gY292ZXIgdGhpcyBjYXNlLgogICAgICAqLwotICAgIGlmICghcGNtcy0+YWNwaV9kZXYgfHwg IWFjcGlfZW5hYmxlZCkgeworICAgIGlmICghYWNwaV9jb25mLT5hY3BpX2RldiB8fCAhYWNwaV9l bmFibGVkKSB7CiAgICAgICAgIGVycm9yX3NldGcoZXJycCwKICAgICAgICAgICAgICAgICAgICAi bWVtb3J5IGhvdHBsdWcgaXMgbm90IGVuYWJsZWQ6IG1pc3NpbmcgYWNwaSBkZXZpY2Ugb3IgYWNw aSBkaXNhYmxlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzX252ZGlt bSAmJiAhcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCkgeworICAgIGlmIChpc19u dmRpbW0gJiYgIWFjcGlfY29uZi0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCkgewogICAg ICAgICBlcnJvcl9zZXRnKGVycnAsICJudmRpbW0gaXMgbm90IGVuYWJsZWQ6IG1pc3NpbmcgJ252 ZGltbScgaW4gJy1NJyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTcxNSw2ICsxNzQ1 LDcgQEAgc3RhdGljIHZvaWQgcGNfbWVtb3J5X3BsdWcoSG90cGx1Z0hhbmRsZXIgKmhvdHBsdWdf ZGV2LAogICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwogICAgIFBDTWFjaGluZVN0YXRlICpw Y21zID0gUENfTUFDSElORShob3RwbHVnX2Rldik7CiAgICAgYm9vbCBpc19udmRpbW0gPSBvYmpl Y3RfZHluYW1pY19jYXN0KE9CSkVDVChkZXYpLCBUWVBFX05WRElNTSk7CisgICAgQWNwaUNvbmZp Z3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb247CiAKICAgICBw Y19kaW1tX3BsdWcoUENfRElNTShkZXYpLCBNQUNISU5FKHBjbXMpLCAmbG9jYWxfZXJyKTsKICAg ICBpZiAobG9jYWxfZXJyKSB7CkBAIC0xNzIyLDExICsxNzUzLDExIEBAIHN0YXRpYyB2b2lkIHBj X21lbW9yeV9wbHVnKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICB9CiAKICAgICBp ZiAoaXNfbnZkaW1tKSB7Ci0gICAgICAgIG52ZGltbV9wbHVnKCZwY21zLT5hY3BpX252ZGltbV9z dGF0ZSk7CisgICAgICAgIG52ZGltbV9wbHVnKCZhY3BpX2NvbmYtPmFjcGlfbnZkaW1tX3N0YXRl KTsKICAgICB9CiAKLSAgICBoaGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKHBjbXMtPmFj cGlfZGV2KTsKLSAgICBoaGMtPnBsdWcoSE9UUExVR19IQU5ETEVSKHBjbXMtPmFjcGlfZGV2KSwg ZGV2LCAmZXJyb3JfYWJvcnQpOworICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRfQ0xBU1Mo YWNwaV9jb25mLT5hY3BpX2Rldik7CisgICAgaGhjLT5wbHVnKEhPVFBMVUdfSEFORExFUihhY3Bp X2NvbmYtPmFjcGlfZGV2KSwgZGV2LCAmZXJyb3JfYWJvcnQpOwogb3V0OgogICAgIGVycm9yX3By b3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOwogfQpAQCAtMTczNywxMyArMTc2OCwxNCBAQCBzdGF0 aWMgdm9pZCBwY19tZW1vcnlfdW5wbHVnX3JlcXVlc3QoSG90cGx1Z0hhbmRsZXIgKmhvdHBsdWdf ZGV2LAogICAgIEhvdHBsdWdIYW5kbGVyQ2xhc3MgKmhoYzsKICAgICBFcnJvciAqbG9jYWxfZXJy ID0gTlVMTDsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUoaG90cGx1Z19k ZXYpOworICAgIEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25m aWd1cmF0aW9uOwogCiAgICAgLyoKICAgICAgKiBXaGVuIC1uby1hY3BpIGlzIHVzZWQgd2l0aCBR MzUgbWFjaGluZSB0eXBlLCBubyBBQ1BJIGlzIGJ1aWx0LAotICAgICAqIGJ1dCBwY21zLT5hY3Bp X2RldiBpcyBzdGlsbCBjcmVhdGVkLiBDaGVjayAhYWNwaV9lbmFibGVkIGluCisgICAgICogYnV0 IGFjcGlfZGV2IGlzIHN0aWxsIGNyZWF0ZWQuIENoZWNrICFhY3BpX2VuYWJsZWQgaW4KICAgICAg KiBhZGRpdGlvbiB0byBjb3ZlciB0aGlzIGNhc2UuCiAgICAgICovCi0gICAgaWYgKCFwY21zLT5h Y3BpX2RldiB8fCAhYWNwaV9lbmFibGVkKSB7CisgICAgaWYgKCFhY3BpX2NvbmYtPmFjcGlfZGV2 IHx8ICFhY3BpX2VuYWJsZWQpIHsKICAgICAgICAgZXJyb3Jfc2V0ZygmbG9jYWxfZXJyLAogICAg ICAgICAgICAgICAgICAgICJtZW1vcnkgaG90cGx1ZyBpcyBub3QgZW5hYmxlZDogbWlzc2luZyBh Y3BpIGRldmljZSBvciBhY3BpIGRpc2FibGVkIik7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtMTc1 NSw4ICsxNzg3LDggQEAgc3RhdGljIHZvaWQgcGNfbWVtb3J5X3VucGx1Z19yZXF1ZXN0KEhvdHBs dWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAg aGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhwY21zLT5hY3BpX2Rldik7Ci0gICAgaGhj LT51bnBsdWdfcmVxdWVzdChIT1RQTFVHX0hBTkRMRVIocGNtcy0+YWNwaV9kZXYpLCBkZXYsICZs b2NhbF9lcnIpOworICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRfQ0xBU1MoYWNwaV9jb25m LT5hY3BpX2Rldik7CisgICAgaGhjLT51bnBsdWdfcmVxdWVzdChIT1RQTFVHX0hBTkRMRVIoYWNw aV9jb25mLT5hY3BpX2RldiksIGRldiwgJmxvY2FsX2Vycik7CiAKIG91dDoKICAgICBlcnJvcl9w cm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKQEAgLTE3NjYsMTEgKzE3OTgsMTIgQEAgc3RhdGlj IHZvaWQgcGNfbWVtb3J5X3VucGx1ZyhIb3RwbHVnSGFuZGxlciAqaG90cGx1Z19kZXYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVN0YXRlICpkZXYsIEVycm9yICoqZXJycCkK IHsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUoaG90cGx1Z19kZXYpOwor ICAgIEFjcGlDb25maWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0 aW9uOwogICAgIEhvdHBsdWdIYW5kbGVyQ2xhc3MgKmhoYzsKICAgICBFcnJvciAqbG9jYWxfZXJy ID0gTlVMTDsKIAotICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRfQ0xBU1MocGNtcy0+YWNw aV9kZXYpOwotICAgIGhoYy0+dW5wbHVnKEhPVFBMVUdfSEFORExFUihwY21zLT5hY3BpX2Rldiks IGRldiwgJmxvY2FsX2Vycik7CisgICAgaGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhh Y3BpX2NvbmYtPmFjcGlfZGV2KTsKKyAgICBoaGMtPnVucGx1ZyhIT1RQTFVHX0hBTkRMRVIoYWNw aV9jb25mLT5hY3BpX2RldiksIGRldiwgJmxvY2FsX2Vycik7CiAKICAgICBpZiAobG9jYWxfZXJy KSB7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtMTgxNywxMCArMTg1MCwxMSBAQCBzdGF0aWMgdm9p ZCBwY19jcHVfcGx1ZyhIb3RwbHVnSGFuZGxlciAqaG90cGx1Z19kZXYsCiAgICAgRXJyb3IgKmxv Y2FsX2VyciA9IE5VTEw7CiAgICAgWDg2Q1BVICpjcHUgPSBYODZfQ1BVKGRldik7CiAgICAgUENN YWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKGhvdHBsdWdfZGV2KTsKKyAgICBBY3BpQ29u ZmlndXJhdGlvbiAqYWNwaV9jb25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKIAotICAg IGlmIChwY21zLT5hY3BpX2RldikgewotICAgICAgICBoaGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VU X0NMQVNTKHBjbXMtPmFjcGlfZGV2KTsKLSAgICAgICAgaGhjLT5wbHVnKEhPVFBMVUdfSEFORExF UihwY21zLT5hY3BpX2RldiksIGRldiwgJmxvY2FsX2Vycik7CisgICAgaWYgKGFjcGlfY29uZi0+ YWNwaV9kZXYpIHsKKyAgICAgICAgaGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhhY3Bp X2NvbmYtPmFjcGlfZGV2KTsKKyAgICAgICAgaGhjLT5wbHVnKEhPVFBMVUdfSEFORExFUihhY3Bp X2NvbmYtPmFjcGlfZGV2KSwgZGV2LCAmbG9jYWxfZXJyKTsKICAgICAgICAgaWYgKGxvY2FsX2Vy cikgewogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KQEAgLTE4MzEsOCArMTg2NSw4 IEBAIHN0YXRpYyB2b2lkIHBjX2NwdV9wbHVnKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwK ICAgICBpZiAocGNtcy0+cnRjKSB7CiAgICAgICAgIHJ0Y19zZXRfY3B1c19jb3VudChwY21zLT5y dGMsIHBjbXMtPmJvb3RfY3B1cyk7CiAgICAgfQotICAgIGlmIChwY21zLT5md19jZmcpIHsKLSAg ICAgICAgZndfY2ZnX21vZGlmeV9pMTYocGNtcy0+ZndfY2ZnLCBGV19DRkdfTkJfQ1BVUywgcGNt cy0+Ym9vdF9jcHVzKTsKKyAgICBpZiAoYWNwaV9jb25mLT5md19jZmcpIHsKKyAgICAgICAgZndf Y2ZnX21vZGlmeV9pMTYoYWNwaV9jb25mLT5md19jZmcsIEZXX0NGR19OQl9DUFVTLCBwY21zLT5i b290X2NwdXMpOwogICAgIH0KIAogICAgIGZvdW5kX2NwdSA9IHBjX2ZpbmRfY3B1X3Nsb3QoTUFD SElORShwY21zKSwgY3B1LT5hcGljX2lkLCBOVUxMKTsKQEAgLTE4NDgsOCArMTg4Miw5IEBAIHN0 YXRpYyB2b2lkIHBjX2NwdV91bnBsdWdfcmVxdWVzdF9jYihIb3RwbHVnSGFuZGxlciAqaG90cGx1 Z19kZXYsCiAgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAgICAgWDg2Q1BVICpjcHUgPSBY ODZfQ1BVKGRldik7CiAgICAgUENNYWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKGhvdHBs dWdfZGV2KTsKKyAgICBBY3BpQ29uZmlndXJhdGlvbiAqYWNwaV9jb25mID0gJnBjbXMtPmFjcGlf Y29uZmlndXJhdGlvbjsKIAotICAgIGlmICghcGNtcy0+YWNwaV9kZXYpIHsKKyAgICBpZiAoIWFj cGlfY29uZi0+YWNwaV9kZXYpIHsKICAgICAgICAgZXJyb3Jfc2V0ZygmbG9jYWxfZXJyLCAiQ1BV IGhvdCB1bnBsdWcgbm90IHN1cHBvcnRlZCB3aXRob3V0IEFDUEkiKTsKICAgICAgICAgZ290byBv dXQ7CiAgICAgfQpAQCAtMTg2MSw4ICsxODk2LDggQEAgc3RhdGljIHZvaWQgcGNfY3B1X3VucGx1 Z19yZXF1ZXN0X2NiKEhvdHBsdWdIYW5kbGVyICpob3RwbHVnX2RldiwKICAgICAgICAgZ290byBv dXQ7CiAgICAgfQogCi0gICAgaGhjID0gSE9UUExVR19IQU5ETEVSX0dFVF9DTEFTUyhwY21zLT5h Y3BpX2Rldik7Ci0gICAgaGhjLT51bnBsdWdfcmVxdWVzdChIT1RQTFVHX0hBTkRMRVIocGNtcy0+ YWNwaV9kZXYpLCBkZXYsICZsb2NhbF9lcnIpOworICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9H RVRfQ0xBU1MoYWNwaV9jb25mLT5hY3BpX2Rldik7CisgICAgaGhjLT51bnBsdWdfcmVxdWVzdChI T1RQTFVHX0hBTkRMRVIoYWNwaV9jb25mLT5hY3BpX2RldiksIGRldiwgJmxvY2FsX2Vycik7CiAK ICAgICBpZiAobG9jYWxfZXJyKSB7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtMTg4MSw5ICsxOTE2 LDEwIEBAIHN0YXRpYyB2b2lkIHBjX2NwdV91bnBsdWdfY2IoSG90cGx1Z0hhbmRsZXIgKmhvdHBs dWdfZGV2LAogICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwogICAgIFg4NkNQVSAqY3B1ID0g WDg2X0NQVShkZXYpOwogICAgIFBDTWFjaGluZVN0YXRlICpwY21zID0gUENfTUFDSElORShob3Rw bHVnX2Rldik7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3Bp X2NvbmZpZ3VyYXRpb247CiAKLSAgICBoaGMgPSBIT1RQTFVHX0hBTkRMRVJfR0VUX0NMQVNTKHBj bXMtPmFjcGlfZGV2KTsKLSAgICBoaGMtPnVucGx1ZyhIT1RQTFVHX0hBTkRMRVIocGNtcy0+YWNw aV9kZXYpLCBkZXYsICZsb2NhbF9lcnIpOworICAgIGhoYyA9IEhPVFBMVUdfSEFORExFUl9HRVRf Q0xBU1MoYWNwaV9jb25mLT5hY3BpX2Rldik7CisgICAgaGhjLT51bnBsdWcoSE9UUExVR19IQU5E TEVSKGFjcGlfY29uZi0+YWNwaV9kZXYpLCBkZXYsICZsb2NhbF9lcnIpOwogCiAgICAgaWYgKGxv Y2FsX2VycikgewogICAgICAgICBnb3RvIG91dDsKQEAgLTE4OTcsNyArMTkzMyw3IEBAIHN0YXRp YyB2b2lkIHBjX2NwdV91bnBsdWdfY2IoSG90cGx1Z0hhbmRsZXIgKmhvdHBsdWdfZGV2LAogICAg IHBjbXMtPmJvb3RfY3B1cy0tOwogICAgIC8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIENQVXMgaW4g Q01PUyAqLwogICAgIHJ0Y19zZXRfY3B1c19jb3VudChwY21zLT5ydGMsIHBjbXMtPmJvb3RfY3B1 cyk7Ci0gICAgZndfY2ZnX21vZGlmeV9pMTYocGNtcy0+ZndfY2ZnLCBGV19DRkdfTkJfQ1BVUywg cGNtcy0+Ym9vdF9jcHVzKTsKKyAgICBmd19jZmdfbW9kaWZ5X2kxNihhY3BpX2NvbmYtPmZ3X2Nm ZywgRldfQ0ZHX05CX0NQVVMsIHBjbXMtPmJvb3RfY3B1cyk7CiAgb3V0OgogICAgIGVycm9yX3By b3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOwogfQpAQCAtMjE4MSwyOCArMjIxNywzMCBAQCBzdGF0 aWMgYm9vbCBwY19tYWNoaW5lX2dldF9udmRpbW0oT2JqZWN0ICpvYmosIEVycm9yICoqZXJycCkK IHsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUob2JqKTsKIAotICAgIHJl dHVybiBwY21zLT5hY3BpX252ZGltbV9zdGF0ZS5pc19lbmFibGVkOworICAgIHJldHVybiBwY21z LT5hY3BpX2NvbmZpZ3VyYXRpb24uYWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZDsKIH0KIAog c3RhdGljIHZvaWQgcGNfbWFjaGluZV9zZXRfbnZkaW1tKE9iamVjdCAqb2JqLCBib29sIHZhbHVl LCBFcnJvciAqKmVycnApCiB7CiAgICAgUENNYWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5F KG9iaik7CisgICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2Nv bmZpZ3VyYXRpb247CiAKLSAgICBwY21zLT5hY3BpX252ZGltbV9zdGF0ZS5pc19lbmFibGVkID0g dmFsdWU7CisgICAgYWNwaV9jb25mLT5hY3BpX252ZGltbV9zdGF0ZS5pc19lbmFibGVkID0gdmFs dWU7CiB9CiAKIHN0YXRpYyBjaGFyICpwY19tYWNoaW5lX2dldF9udmRpbW1fcGVyc2lzdGVuY2Uo T2JqZWN0ICpvYmosIEVycm9yICoqZXJycCkKIHsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9 IFBDX01BQ0hJTkUob2JqKTsKKyAgICBBY3BpQ29uZmlndXJhdGlvbiAqYWNwaV9jb25mID0gJnBj bXMtPmFjcGlfY29uZmlndXJhdGlvbjsKIAotICAgIHJldHVybiBnX3N0cmR1cChwY21zLT5hY3Bp X252ZGltbV9zdGF0ZS5wZXJzaXN0ZW5jZV9zdHJpbmcpOworICAgIHJldHVybiBnX3N0cmR1cChh Y3BpX2NvbmYtPmFjcGlfbnZkaW1tX3N0YXRlLnBlcnNpc3RlbmNlX3N0cmluZyk7CiB9CiAKIHN0 YXRpYyB2b2lkIHBjX21hY2hpbmVfc2V0X252ZGltbV9wZXJzaXN0ZW5jZShPYmplY3QgKm9iaiwg Y29uc3QgY2hhciAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVycm9yICoqZXJycCkKIHsKICAgICBQQ01hY2hpbmVTdGF0ZSAqcGNtcyA9IFBD X01BQ0hJTkUob2JqKTsKLSAgICBBY3BpTlZESU1NU3RhdGUgKm52ZGltbV9zdGF0ZSA9ICZwY21z LT5hY3BpX252ZGltbV9zdGF0ZTsKKyAgICBBY3BpTlZESU1NU3RhdGUgKm52ZGltbV9zdGF0ZSA9 ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRpb24uYWNwaV9udmRpbW1fc3RhdGU7CiAKICAgICBpZiAo c3RyY21wKHZhbHVlLCAiY3B1IikgPT0gMCkKICAgICAgICAgbnZkaW1tX3N0YXRlLT5wZXJzaXN0 ZW5jZSA9IDM7CkBAIC0yMjY4LDcgKzIzMDYsNyBAQCBzdGF0aWMgdm9pZCBwY19tYWNoaW5lX2lu aXRmbihPYmplY3QgKm9iaikKICAgICBwY21zLT5zbW0gPSBPTl9PRkZfQVVUT19BVVRPOwogICAg IHBjbXMtPnZtcG9ydCA9IE9OX09GRl9BVVRPX0FVVE87CiAgICAgLyogbnZkaW1tIGlzIGRpc2Fi bGVkIG9uIGRlZmF1bHQuICovCi0gICAgcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxl ZCA9IGZhbHNlOworICAgIHBjbXMtPmFjcGlfY29uZmlndXJhdGlvbi5hY3BpX252ZGltbV9zdGF0 ZS5pc19lbmFibGVkID0gZmFsc2U7CiAgICAgLyogYWNwaSBidWlsZCBpcyBlbmFibGVkIGJ5IGRl ZmF1bHQgaWYgbWFjaGluZSBzdXBwb3J0cyBpdCAqLwogICAgIHBjbXMtPmFjcGlfYnVpbGRfZW5h YmxlZCA9IFBDX01BQ0hJTkVfR0VUX0NMQVNTKHBjbXMpLT5oYXNfYWNwaV9idWlsZDsKICAgICBw Y21zLT5zbWJ1cyA9IHRydWU7CmRpZmYgLS1naXQgYS9ody9pMzg2L3BjX3BpaXguYyBiL2h3L2kz ODYvcGNfcGlpeC5jCmluZGV4IGRjMDk0NjZiM2UuLjA2MjBkMTA3MTUgMTAwNjQ0Ci0tLSBhL2h3 L2kzODYvcGNfcGlpeC5jCisrKyBiL2h3L2kzODYvcGNfcGlpeC5jCkBAIC03MSw2ICs3MSw3IEBA IHN0YXRpYyB2b2lkIHBjX2luaXQxKE1hY2hpbmVTdGF0ZSAqbWFjaGluZSwKIHsKICAgICBQQ01h Y2hpbmVTdGF0ZSAqcGNtcyA9IFBDX01BQ0hJTkUobWFjaGluZSk7CiAgICAgUENNYWNoaW5lQ2xh c3MgKnBjbWMgPSBQQ19NQUNISU5FX0dFVF9DTEFTUyhwY21zKTsKKyAgICBBY3BpQ29uZmlndXJh dGlvbiAqYWNwaV9jb25mID0gJnBjbXMtPmFjcGlfY29uZmlndXJhdGlvbjsKICAgICBNZW1vcnlS ZWdpb24gKnN5c3RlbV9tZW1vcnkgPSBnZXRfc3lzdGVtX21lbW9yeSgpOwogICAgIE1lbW9yeVJl Z2lvbiAqc3lzdGVtX2lvID0gZ2V0X3N5c3RlbV9pbygpOwogICAgIGludCBpOwpAQCAtMTQyLDEx ICsxNDMsMTEgQEAgc3RhdGljIHZvaWQgcGNfaW5pdDEoTWFjaGluZVN0YXRlICptYWNoaW5lLAog ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hY2hpbmUtPnJhbV9zaXplID49IGxvd21lbSkgewot ICAgICAgICAgICAgcGNtcy0+YWJvdmVfNGdfbWVtX3NpemUgPSBtYWNoaW5lLT5yYW1fc2l6ZSAt IGxvd21lbTsKLSAgICAgICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9zaXplID0gbG93bWVtOwor ICAgICAgICAgICAgYWNwaV9jb25mLT5hYm92ZV80Z19tZW1fc2l6ZSA9IG1hY2hpbmUtPnJhbV9z aXplIC0gbG93bWVtOworICAgICAgICAgICAgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSA9 IGxvd21lbTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBjbXMtPmFib3ZlXzRnX21l bV9zaXplID0gMDsKLSAgICAgICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9zaXplID0gbWFjaGlu ZS0+cmFtX3NpemU7CisgICAgICAgICAgICBhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplID0g MDsKKyAgICAgICAgICAgIGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUgPSBtYWNoaW5lLT5y YW1fc2l6ZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTk5LDggKzIwMCw4IEBAIHN0YXRpYyB2 b2lkIHBjX2luaXQxKE1hY2hpbmVTdGF0ZSAqbWFjaGluZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBjaV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmk0NDBm eF9zdGF0ZSwgJnBpaXgzX2RldmZuLCAmaXNhX2J1cywgcGNtcy0+Z3NpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3lzdGVtX21lbW9yeSwgc3lzdGVtX2lvLCBtYWNoaW5lLT5yYW1f c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9z aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNtcy0+YWJvdmVfNGdfbWVtX3Np emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3BpX2NvbmYtPmJlbG93XzRnX21l bV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9jb25mLT5hYm92ZV80 Z19tZW1fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9tZW1vcnksIHJh bV9tZW1vcnkpOwogICAgICAgICBwY21zLT5idXMgPSBwY2lfYnVzOwogICAgIH0gZWxzZSB7CkBA IC0yODksMTYgKzI5MCwxNiBAQCBzdGF0aWMgdm9pZCBwY19pbml0MShNYWNoaW5lU3RhdGUgKm1h Y2hpbmUsCiAKICAgICAgICAgb2JqZWN0X3Byb3BlcnR5X2FkZF9saW5rKE9CSkVDVChtYWNoaW5l KSwgUENfTUFDSElORV9BQ1BJX0RFVklDRV9QUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVFlQRV9IT1RQTFVHX0hBTkRMRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoT2JqZWN0ICoqKSZwY21zLT5hY3BpX2RldiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChPYmplY3QgKiopJmFjcGlfY29uZi0+YWNwaV9kZXYsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RfcHJvcGVydHlfYWxsb3dfc2V0X2xpbmssCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQkpfUFJPUF9MSU5LX1NUUk9ORywgJmVy cm9yX2Fib3J0KTsKICAgICAgICAgb2JqZWN0X3Byb3BlcnR5X3NldF9saW5rKE9CSkVDVChtYWNo aW5lKSwgT0JKRUNUKHBpaXg0X3BtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBDX01BQ0hJTkVfQUNQSV9ERVZJQ0VfUFJPUCwgJmVycm9yX2Fib3J0KTsKICAgICB9CiAKLSAg ICBpZiAocGNtcy0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCkgewotICAgICAgICBudmRp bW1faW5pdF9hY3BpX3N0YXRlKCZwY21zLT5hY3BpX252ZGltbV9zdGF0ZSwgc3lzdGVtX2lvLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmZ3X2NmZywgT0JKRUNUKHBjbXMp KTsKKyAgICBpZiAoYWNwaV9jb25mLT5hY3BpX252ZGltbV9zdGF0ZS5pc19lbmFibGVkKSB7Cisg ICAgICAgIG52ZGltbV9pbml0X2FjcGlfc3RhdGUoJmFjcGlfY29uZi0+YWNwaV9udmRpbW1fc3Rh dGUsIHN5c3RlbV9pbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3BpX2NvbmYt PmZ3X2NmZywgT0JKRUNUKHBjbXMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2h3L2kzODYv cGNfcTM1LmMgYi9ody9pMzg2L3BjX3EzNS5jCmluZGV4IDUzMjI0MWUzZjguLmNkZGU0YTRiZWIg MTAwNjQ0Ci0tLSBhL2h3L2kzODYvcGNfcTM1LmMKKysrIGIvaHcvaTM4Ni9wY19xMzUuYwpAQCAt NjMsNiArNjMsNyBAQCBzdGF0aWMgdm9pZCBwY19xMzVfaW5pdChNYWNoaW5lU3RhdGUgKm1hY2hp bmUpCiB7CiAgICAgUENNYWNoaW5lU3RhdGUgKnBjbXMgPSBQQ19NQUNISU5FKG1hY2hpbmUpOwog ICAgIFBDTWFjaGluZUNsYXNzICpwY21jID0gUENfTUFDSElORV9HRVRfQ0xBU1MocGNtcyk7Cisg ICAgQWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZiA9ICZwY21zLT5hY3BpX2NvbmZpZ3VyYXRp b247CiAgICAgUTM1UENJSG9zdCAqcTM1X2hvc3Q7CiAgICAgUENJSG9zdFN0YXRlICpwaGI7CiAg ICAgUENJQnVzICpob3N0X2J1czsKQEAgLTExNiwxMSArMTE3LDExIEBAIHN0YXRpYyB2b2lkIHBj X3EzNV9pbml0KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKICAgICB9CiAKICAgICBpZiAobWFjaGlu ZS0+cmFtX3NpemUgPj0gbG93bWVtKSB7Ci0gICAgICAgIHBjbXMtPmFib3ZlXzRnX21lbV9zaXpl ID0gbWFjaGluZS0+cmFtX3NpemUgLSBsb3dtZW07Ci0gICAgICAgIHBjbXMtPmJlbG93XzRnX21l bV9zaXplID0gbG93bWVtOworICAgICAgICBhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplID0g bWFjaGluZS0+cmFtX3NpemUgLSBsb3dtZW07CisgICAgICAgIGFjcGlfY29uZi0+YmVsb3dfNGdf bWVtX3NpemUgPSBsb3dtZW07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcGNtcy0+YWJvdmVfNGdf bWVtX3NpemUgPSAwOwotICAgICAgICBwY21zLT5iZWxvd180Z19tZW1fc2l6ZSA9IG1hY2hpbmUt PnJhbV9zaXplOworICAgICAgICBhY3BpX2NvbmYtPmFib3ZlXzRnX21lbV9zaXplID0gMDsKKyAg ICAgICAgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSA9IG1hY2hpbmUtPnJhbV9zaXplOwog ICAgIH0KIAogICAgIGlmICh4ZW5fZW5hYmxlZCgpKSB7CkBAIC0xNzksOSArMTgwLDkgQEAgc3Rh dGljIHZvaWQgcGNfcTM1X2luaXQoTWFjaGluZVN0YXRlICptYWNoaW5lKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNQ0hfSE9TVF9QUk9QX1NZU1RFTV9NRU0sIE5VTEwpOwogICAgIG9i amVjdF9wcm9wZXJ0eV9zZXRfbGluayhPQkpFQ1QocTM1X2hvc3QpLCBPQkpFQ1Qoc3lzdGVtX2lv KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNIX0hPU1RfUFJPUF9JT19NRU0sIE5V TEwpOwotICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfaW50KE9CSkVDVChxMzVfaG9zdCksIHBjbXMt PmJlbG93XzRnX21lbV9zaXplLAorICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfaW50KE9CSkVDVChx MzVfaG9zdCksIGFjcGlfY29uZi0+YmVsb3dfNGdfbWVtX3NpemUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUENJX0hPU1RfQkVMT1dfNEdfTUVNX1NJWkUsIE5VTEwpOwotICAgIG9iamVj dF9wcm9wZXJ0eV9zZXRfaW50KE9CSkVDVChxMzVfaG9zdCksIHBjbXMtPmFib3ZlXzRnX21lbV9z aXplLAorICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfaW50KE9CSkVDVChxMzVfaG9zdCksIGFjcGlf Y29uZi0+YWJvdmVfNGdfbWVtX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJ X0hPU1RfQUJPVkVfNEdfTUVNX1NJWkUsIE5VTEwpOwogICAgIC8qIHBjaSAqLwogICAgIHFkZXZf aW5pdF9ub2ZhaWwoREVWSUNFKHEzNV9ob3N0KSk7CkBAIC0xOTQsNyArMTk1LDcgQEAgc3RhdGlj IHZvaWQgcGNfcTM1X2luaXQoTWFjaGluZVN0YXRlICptYWNoaW5lKQogCiAgICAgb2JqZWN0X3By b3BlcnR5X2FkZF9saW5rKE9CSkVDVChtYWNoaW5lKSwgUENfTUFDSElORV9BQ1BJX0RFVklDRV9Q Uk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBFX0hPVFBMVUdfSEFORExFUiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9iamVjdCAqKikmcGNtcy0+YWNwaV9kZXYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPYmplY3QgKiopJmFjcGlfY29uZi0+YWNw aV9kZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF9wcm9wZXJ0eV9hbGxv d19zZXRfbGluaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0JKX1BST1BfTElOS19T VFJPTkcsICZlcnJvcl9hYm9ydCk7CiAgICAgb2JqZWN0X3Byb3BlcnR5X3NldF9saW5rKE9CSkVD VChtYWNoaW5lKSwgT0JKRUNUKGxwYyksCkBAIC0yNzYsOSArMjc3LDkgQEAgc3RhdGljIHZvaWQg cGNfcTM1X2luaXQoTWFjaGluZVN0YXRlICptYWNoaW5lKQogICAgIHBjX3ZnYV9pbml0KGlzYV9i dXMsIGhvc3RfYnVzKTsKICAgICBwY19uaWNfaW5pdChwY21jLCBpc2FfYnVzLCBob3N0X2J1cyk7 CiAKLSAgICBpZiAocGNtcy0+YWNwaV9udmRpbW1fc3RhdGUuaXNfZW5hYmxlZCkgewotICAgICAg ICBudmRpbW1faW5pdF9hY3BpX3N0YXRlKCZwY21zLT5hY3BpX252ZGltbV9zdGF0ZSwgc3lzdGVt X2lvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbXMtPmZ3X2NmZywgT0JKRUNU KHBjbXMpKTsKKyAgICBpZiAoYWNwaV9jb25mLT5hY3BpX252ZGltbV9zdGF0ZS5pc19lbmFibGVk KSB7CisgICAgICAgIG52ZGltbV9pbml0X2FjcGlfc3RhdGUoJmFjcGlfY29uZi0+YWNwaV9udmRp bW1fc3RhdGUsIHN5c3RlbV9pbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Bp X2NvbmYtPmZ3X2NmZywgT0JKRUNUKHBjbXMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2h3 L2kzODYveGVuL3hlbi1odm0uYyBiL2h3L2kzODYveGVuL3hlbi1odm0uYwppbmRleCA5MzVhMzY3 NmM4Li4wNDU5ZmI3MzQwIDEwMDY0NAotLS0gYS9ody9pMzg2L3hlbi94ZW4taHZtLmMKKysrIGIv aHcvaTM4Ni94ZW4veGVuLWh2bS5jCkBAIC0xOTAsNiArMTkwLDcgQEAgcWVtdV9pcnEgKnhlbl9p bnRlcnJ1cHRfY29udHJvbGxlcl9pbml0KHZvaWQpCiBzdGF0aWMgdm9pZCB4ZW5fcmFtX2luaXQo UENNYWNoaW5lU3RhdGUgKnBjbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFtX2FkZHJf dCByYW1fc2l6ZSwgTWVtb3J5UmVnaW9uICoqcmFtX21lbW9yeV9wKQogeworICAgIEFjcGlDb25m aWd1cmF0aW9uICphY3BpX2NvbmYgPSAmcGNtcy0+YWNwaV9jb25maWd1cmF0aW9uOwogICAgIE1l bW9yeVJlZ2lvbiAqc3lzbWVtID0gZ2V0X3N5c3RlbV9tZW1vcnkoKTsKICAgICByYW1fYWRkcl90 IGJsb2NrX2xlbjsKICAgICB1aW50NjRfdCB1c2VyX2xvd21lbSA9IG9iamVjdF9wcm9wZXJ0eV9n ZXRfdWludChxZGV2X2dldF9tYWNoaW5lKCksCkBAIC0yMDcsMjAgKzIwOCwyMCBAQCBzdGF0aWMg dm9pZCB4ZW5fcmFtX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsCiAgICAgfQogCiAgICAgaWYg KHJhbV9zaXplID49IHVzZXJfbG93bWVtKSB7Ci0gICAgICAgIHBjbXMtPmFib3ZlXzRnX21lbV9z aXplID0gcmFtX3NpemUgLSB1c2VyX2xvd21lbTsKLSAgICAgICAgcGNtcy0+YmVsb3dfNGdfbWVt X3NpemUgPSB1c2VyX2xvd21lbTsKKyAgICAgICAgYWNwaV9jb25mLT5hYm92ZV80Z19tZW1fc2l6 ZSA9IHJhbV9zaXplIC0gdXNlcl9sb3dtZW07CisgICAgICAgIGFjcGlfY29uZi0+YmVsb3dfNGdf bWVtX3NpemUgPSB1c2VyX2xvd21lbTsKICAgICB9IGVsc2UgewotICAgICAgICBwY21zLT5hYm92 ZV80Z19tZW1fc2l6ZSA9IDA7Ci0gICAgICAgIHBjbXMtPmJlbG93XzRnX21lbV9zaXplID0gcmFt X3NpemU7CisgICAgICAgIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUgPSAwOworICAgICAg ICBhY3BpX2NvbmYtPmJlbG93XzRnX21lbV9zaXplID0gcmFtX3NpemU7CiAgICAgfQotICAgIGlm ICghcGNtcy0+YWJvdmVfNGdfbWVtX3NpemUpIHsKKyAgICBpZiAoIWFjcGlfY29uZi0+YWJvdmVf NGdfbWVtX3NpemUpIHsKICAgICAgICAgYmxvY2tfbGVuID0gcmFtX3NpemU7CiAgICAgfSBlbHNl IHsKICAgICAgICAgLyoKICAgICAgICAgICogWGVuIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBtZW1v cnkgY29udGludW91c2x5LCBpdCBrZWVwcyBhCiAgICAgICAgICAqIGhvbGUgb2YgdGhlIHNpemUg Y29tcHV0ZWQgYWJvdmUgb3IgcGFzc2VkIGluLgogICAgICAgICAgKi8KLSAgICAgICAgYmxvY2tf bGVuID0gKDFVTEwgPDwgMzIpICsgcGNtcy0+YWJvdmVfNGdfbWVtX3NpemU7CisgICAgICAgIGJs b2NrX2xlbiA9ICgxVUxMIDw8IDMyKSArIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemU7CiAg ICAgfQogICAgIG1lbW9yeV9yZWdpb25faW5pdF9yYW0oJnJhbV9tZW1vcnksIE5VTEwsICJ4ZW4u cmFtIiwgYmxvY2tfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX2ZhdGFs KTsKQEAgLTIzNywxMiArMjM4LDEyIEBAIHN0YXRpYyB2b2lkIHhlbl9yYW1faW5pdChQQ01hY2hp bmVTdGF0ZSAqcGNtcywKICAgICAgKi8KICAgICBtZW1vcnlfcmVnaW9uX2luaXRfYWxpYXMoJnJh bV9sbywgTlVMTCwgInhlbi5yYW0ubG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm cmFtX21lbW9yeSwgMHhjMDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNtcy0+ YmVsb3dfNGdfbWVtX3NpemUgLSAweGMwMDAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWNwaV9jb25mLT5iZWxvd180Z19tZW1fc2l6ZSAtIDB4YzAwMDApOwogICAgIG1lbW9yeV9y ZWdpb25fYWRkX3N1YnJlZ2lvbihzeXNtZW0sIDB4YzAwMDAsICZyYW1fbG8pOwotICAgIGlmIChw Y21zLT5hYm92ZV80Z19tZW1fc2l6ZSA+IDApIHsKKyAgICBpZiAoYWNwaV9jb25mLT5hYm92ZV80 Z19tZW1fc2l6ZSA+IDApIHsKICAgICAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X2FsaWFzKCZyYW1f aGksIE5VTEwsICJ4ZW4ucmFtLmhpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZyYW1fbWVtb3J5LCAweDEwMDAwMDAwMFVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBjbXMtPmFib3ZlXzRnX21lbV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFjcGlfY29uZi0+YWJvdmVfNGdfbWVtX3NpemUpOwogICAgICAgICBtZW1vcnlf cmVnaW9uX2FkZF9zdWJyZWdpb24oc3lzbWVtLCAweDEwMDAwMDAwMFVMTCwgJnJhbV9oaSk7CiAg ICAgfQogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9hY3BpL2FjcGkuaCBiL2luY2x1ZGUvaHcv YWNwaS9hY3BpLmgKaW5kZXggYzIwYWNlMGQwYi4uMjU0YzhkMGNmYyAxMDA2NDQKLS0tIGEvaW5j bHVkZS9ody9hY3BpL2FjcGkuaAorKysgYi9pbmNsdWRlL2h3L2FjcGkvYWNwaS5oCkBAIC0yNCw2 ICsyNCw4IEBACiAjaW5jbHVkZSAiZXhlYy9tZW1vcnkuaCIKICNpbmNsdWRlICJody9pcnEuaCIK ICNpbmNsdWRlICJody9hY3BpL2FjcGlfZGV2X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImh3L2hv dHBsdWcuaCIKKyNpbmNsdWRlICJody9tZW0vbnZkaW1tLmgiCiAKIC8qCiAgKiBjdXJyZW50IGRl dmljZSBuYW1pbmcgc2NoZW1lIHN1cHBvcnRzIHVwIHRvIDI1NiBtZW1vcnkgZGV2aWNlcwpAQCAt MTg2LDYgKzE4OCw0OCBAQCBleHRlcm4gaW50IGFjcGlfZW5hYmxlZDsKIGV4dGVybiBjaGFyIHVu c2lnbmVkICphY3BpX3RhYmxlczsKIGV4dGVybiBzaXplX3QgYWNwaV90YWJsZXNfbGVuOwogCit0 eXBlZGVmCitzdHJ1Y3QgQWNwaUJ1aWxkU3RhdGUgeworICAgIC8qIENvcHkgb2YgdGFibGUgaW4g UkFNIChmb3IgcGF0Y2hpbmcpLiAqLworICAgIE1lbW9yeVJlZ2lvbiAqdGFibGVfbXI7CisgICAg LyogSXMgdGFibGUgcGF0Y2hlZD8gKi8KKyAgICBib29sIHBhdGNoZWQ7CisgICAgdm9pZCAqcnNk cDsKKyAgICBNZW1vcnlSZWdpb24gKnJzZHBfbXI7CisgICAgTWVtb3J5UmVnaW9uICpsaW5rZXJf bXI7Cit9IEFjcGlCdWlsZFN0YXRlOworCit0eXBlZGVmCitzdHJ1Y3QgQWNwaUNvbmZpZ3VyYXRp b24geworICAgIC8qIE1hY2hpbmUgY2xhc3MgQUNQSSBzZXR0aW5ncyAqLworICAgIGludCBsZWdh Y3lfYWNwaV90YWJsZV9zaXplOworICAgIGJvb2wgcnNkcF9pbl9yYW07CisgICAgdW5zaWduZWQg YWNwaV9kYXRhX3NpemU7CisKKyAgICAvKiBNYWNoaW5lIHN0YXRlIEFDUEkgc2V0dGluZ3MgKi8K KyAgICBIb3RwbHVnSGFuZGxlciAqYWNwaV9kZXY7CisgICAgQWNwaU5WRElNTVN0YXRlIGFjcGlf bnZkaW1tX3N0YXRlOworCisgICAgLyoKKyAgICAgKiBUaGUgZmllbGRzIGJlbG93IGFyZSBtYWNo aW5lIHNldHRpbmdzIHRoYXQKKyAgICAgKiBhcmUgbm90IEFDUEkgc3BlY2lmaWMuIEhvd2V2ZXIg dGhleSBhcmUgbmVlZGVkCisgICAgICogZm9yIGJ1aWxkaW5nIEFDUEkgdGFibGVzIGFuZCBhcyBz dWNoIHNob3VsZCBiZQorICAgICAqIGNhcnJpZWQgdGhyb3VnaCB0aGUgQUNQSSBjb25maWd1cmF0 aW9uIHN0cnVjdHVyZS4KKyAgICAgKi8KKyAgICBib29sIGxlZ2FjeV9jcHVfaG90cGx1ZzsKKyAg ICBib29sIGxpbnV4Ym9vdF9kbWFfZW5hYmxlZDsKKyAgICBGV0NmZ1N0YXRlICpmd19jZmc7Cisg ICAgcmFtX2FkZHJfdCBiZWxvd180Z19tZW1fc2l6ZSwgYWJvdmVfNGdfbWVtX3NpemU7OworICAg IHVpbnQ2NF90IG51bWFfbm9kZXM7CisgICAgdWludDY0X3QgKm5vZGVfbWVtOworICAgIGJvb2wg YXBpY194cnVwdF9vdmVycmlkZTsKKyAgICB1bnNpZ25lZCBhcGljX2lkX2xpbWl0OworICAgIFBD SUhvc3RTdGF0ZSAqcGNpX2hvc3Q7CisKKyAgICAvKiBCdWlsZCBzdGF0ZSAqLworICAgIEFjcGlC dWlsZFN0YXRlICpidWlsZF9zdGF0ZTsKK30gQWNwaUNvbmZpZ3VyYXRpb247CisKIHVpbnQ4X3Qg KmFjcGlfdGFibGVfZmlyc3Qodm9pZCk7CiB1aW50OF90ICphY3BpX3RhYmxlX25leHQodWludDhf dCAqY3VycmVudCk7CiB1bnNpZ25lZCBhY3BpX3RhYmxlX2xlbih2b2lkICpjdXJyZW50KTsKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvaHcvaTM4Ni9wYy5oIGIvaW5jbHVkZS9ody9pMzg2L3BjLmgKaW5k ZXggZGZlNjc0NjY5Mi4uZGEwYmQzOTc0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ody9pMzg2L3Bj LmgKKysrIGIvaW5jbHVkZS9ody9pMzg2L3BjLmgKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRl ICJxZW11L3JhbmdlLmgiCiAjaW5jbHVkZSAicWVtdS9iaXRtYXAuaCIKICNpbmNsdWRlICJzeXNl bXUvc3lzZW11LmgiCisjaW5jbHVkZSAiaHcvYWNwaS9hY3BpLmgiCiAjaW5jbHVkZSAiaHcvcGNp L3BjaS5oIgogI2luY2x1ZGUgImh3L2NvbXBhdC5oIgogI2luY2x1ZGUgImh3L21lbS9wYy1kaW1t LmgiCkBAIC0zNSwxMCArMzYsOCBAQCBzdHJ1Y3QgUENNYWNoaW5lU3RhdGUgewogICAgIE5vdGlm aWVyIG1hY2hpbmVfZG9uZTsKIAogICAgIC8qIFBvaW50ZXJzIHRvIGRldmljZXMgYW5kIG9iamVj dHM6ICovCi0gICAgSG90cGx1Z0hhbmRsZXIgKmFjcGlfZGV2OwogICAgIElTQURldmljZSAqcnRj OwogICAgIFBDSUJ1cyAqYnVzOwotICAgIEZXQ2ZnU3RhdGUgKmZ3X2NmZzsKICAgICBxZW11X2ly cSAqZ3NpOwogCiAgICAgLyogQ29uZmlndXJhdGlvbiBvcHRpb25zOiAqLwpAQCAtNDYsMjggKzQ1 LDIwIEBAIHN0cnVjdCBQQ01hY2hpbmVTdGF0ZSB7CiAgICAgT25PZmZBdXRvIHZtcG9ydDsKICAg ICBPbk9mZkF1dG8gc21tOwogCi0gICAgQWNwaU5WRElNTVN0YXRlIGFjcGlfbnZkaW1tX3N0YXRl OwotCiAgICAgYm9vbCBhY3BpX2J1aWxkX2VuYWJsZWQ7CiAgICAgYm9vbCBzbWJ1czsKICAgICBi b29sIHNhdGE7CiAgICAgYm9vbCBwaXQ7CiAKLSAgICAvKiBSQU0gaW5mb3JtYXRpb24gKHNpemVz LCBhZGRyZXNzZXMsIGNvbmZpZ3VyYXRpb24pOiAqLwotICAgIHJhbV9hZGRyX3QgYmVsb3dfNGdf bWVtX3NpemUsIGFib3ZlXzRnX21lbV9zaXplOwotCi0gICAgLyogQ1BVIGFuZCBhcGljIGluZm9y bWF0aW9uOiAqLwotICAgIGJvb2wgYXBpY194cnVwdF9vdmVycmlkZTsKLSAgICB1bnNpZ25lZCBh cGljX2lkX2xpbWl0OworICAgIC8qIENQVSBpbmZvcm1hdGlvbiAqLwogICAgIHVpbnQxNl90IGJv b3RfY3B1czsKIAotICAgIC8qIE5VTUEgaW5mb3JtYXRpb246ICovCi0gICAgdWludDY0X3QgbnVt YV9ub2RlczsKLSAgICB1aW50NjRfdCAqbm9kZV9tZW07Ci0KICAgICAvKiBBZGRyZXNzIHNwYWNl IHVzZWQgYnkgSU9BUElDIGRldmljZS4gQWxsIElPQVBJQyBpbnRlcnJ1cHRzCiAgICAgICogd2ls bCBiZSB0cmFuc2xhdGVkIHRvIE1TSSBtZXNzYWdlcyBpbiB0aGUgYWRkcmVzcyBzcGFjZS4gKi8K ICAgICBBZGRyZXNzU3BhY2UgKmlvYXBpY19hczsKKworICAgIC8qIEFDUEkgY29uZmlndXJhdGlv biAqLworICAgIEFjcGlDb25maWd1cmF0aW9uIGFjcGlfY29uZmlndXJhdGlvbjsKIH07CiAKICNk ZWZpbmUgUENfTUFDSElORV9BQ1BJX0RFVklDRV9QUk9QICJhY3BpLWRldmljZSIKLS0gCjIuMTku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=