From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IKxip-0006J9-Q7 for qemu-devel@nongnu.org; Tue, 14 Aug 2007 10:50:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IKxio-0006Ij-VO for qemu-devel@nongnu.org; Tue, 14 Aug 2007 10:50:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IKxio-0006IL-P6 for qemu-devel@nongnu.org; Tue, 14 Aug 2007 10:50:14 -0400 Received: from nf-out-0910.google.com ([64.233.182.191]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IKxin-0005bV-Pc for qemu-devel@nongnu.org; Tue, 14 Aug 2007 10:50:14 -0400 Received: by nf-out-0910.google.com with SMTP id 30so681766nfu for ; Tue, 14 Aug 2007 07:50:11 -0700 (PDT) Message-ID: Date: Tue, 14 Aug 2007 17:50:10 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] adding support for above 2giga for qemu. ( include patchs ) In-Reply-To: <64F9B87B6B770947A9F8391472E032160CBECF54@ehost011-8.exch011.intermedia.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_167428_25305390.1187103010732" References: <64F9B87B6B770947A9F8391472E032160CBECF54@ehost011-8.exch011.intermedia.net> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_167428_25305390.1187103010732 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 8/14/07, Izik Eidus wrote: > hey, > i have wrote a patch to qemu to allow it to run with above the 2giga > limitations we have now. > i tested it on qemu that used kvm with 14giga of ram, and it was tested at > other place with 32giga of ram to the guest ( 32bits, and 64bits). Great! So it does work on x86, on Sparc there were problems. I updated my patch by introducing a host_phys_addr_t type. There were a long discussion about host address type, I think the result was that 'unsigned long' works as it ever has except for Win64. I don't know which is better strategy, do int to unsigned long conversion first (like your patch) and then replace unsigned long with host_phys_addr_t, or vice versa. Or direct int -> host_phys_addr_t which this patch does. ------=_Part_167428_25305390.1187103010732 Content-Type: text/x-diff; name=more_mem.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5cigosl Content-Disposition: attachment; filename="more_mem.diff" SW5kZXg6IHFlbXUvZXhlYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9leGVjLmMJMjAwNy0w Ny0wMyAwOTo1Mzo0MS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvZXhlYy5jCTIwMDctMDgtMTQg MTQ6MzM6MzkuMDAwMDAwMDAwICswMDAwCkBAIC04Niw3ICs4Niw3IEBACiB1aW50OF90IGNvZGVf Z2VuX2J1ZmZlcltDT0RFX0dFTl9CVUZGRVJfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCAo MzIpKSk7CiB1aW50OF90ICpjb2RlX2dlbl9wdHI7CiAKLWludCBwaHlzX3JhbV9zaXplOworaG9z dF9waHlzX2FkZHJfdCBwaHlzX3JhbV9zaXplOwogaW50IHBoeXNfcmFtX2ZkOwogdWludDhfdCAq cGh5c19yYW1fYmFzZTsKIHVpbnQ4X3QgKnBoeXNfcmFtX2RpcnR5OwpAQCAtMTExLDcgKzExMSw3 IEBACiAKIHR5cGVkZWYgc3RydWN0IFBoeXNQYWdlRGVzYyB7CiAgICAgLyogb2Zmc2V0IGluIGhv c3QgbWVtb3J5IG9mIHRoZSBwYWdlICsgaW9faW5kZXggaW4gdGhlIGxvdyAxMiBiaXRzICovCi0g ICAgdWludDMyX3QgcGh5c19vZmZzZXQ7CisgICAgaG9zdF9waHlzX2FkZHJfdCBwaHlzX29mZnNl dDsKIH0gUGh5c1BhZ2VEZXNjOwogCiAjZGVmaW5lIEwyX0JJVFMgMTAKQEAgLTE5MjUsNyArMTky NSw3IEBACiAKIHN0YXRpYyBpbnQgc3VicGFnZV9yZWdpc3RlciAoc3VicGFnZV90ICptbWlvLCB1 aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbWVtb3J5KTsKLXN0YXRpYyB2b2lkICpzdWJwYWdlX2luaXQgKHRhcmdldF9waHlzX2Fk ZHJfdCBiYXNlLCB1aW50MzJfdCAqcGh5cywKK3N0YXRpYyB2b2lkICpzdWJwYWdlX2luaXQgKHRh cmdldF9waHlzX2FkZHJfdCBiYXNlLCBob3N0X3BoeXNfYWRkcl90ICpwaHlzLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG9yaWdfbWVtb3J5KTsKICNkZWZpbmUgQ0hFQ0tfU1VCUEFH RShhZGRyLCBzdGFydF9hZGRyLCBzdGFydF9hZGRyMiwgZW5kX2FkZHIsIGVuZF9hZGRyMiwgXAog ICAgICAgICAgICAgICAgICAgICAgIG5lZWRfc3VicGFnZSkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXApAQCAtMjAzMyw4ICsyMDMzLDggQEAKIHsKICAgICByYW1fYWRkcl90 IGFkZHI7CiAgICAgaWYgKChwaHlzX3JhbV9hbGxvY19vZmZzZXQgKyBzaXplKSA+PSBwaHlzX3Jh bV9zaXplKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiTm90IGVub3VnaCBtZW1vcnkgKHJl cXVlc3RlZF9zaXplID0gJXUsIG1heCBtZW1vcnkgPSAlZClcbiIsIAotICAgICAgICAgICAgICAg IHNpemUsIHBoeXNfcmFtX3NpemUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91 Z2ggbWVtb3J5IChyZXF1ZXN0ZWRfc2l6ZSA9ICV1LCBtYXggbWVtb3J5ID0gIgorICAgICAgICAg ICAgICAgIEhPU1RfRk1UX3BsZCAiKVxuIiwgc2l6ZSwgcGh5c19yYW1fc2l6ZSk7CiAgICAgICAg IGFib3J0KCk7CiAgICAgfQogICAgIGFkZHIgPSBwaHlzX3JhbV9hbGxvY19vZmZzZXQ7CkBAIC0y MzY5LDcgKzIzNjksNyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCAqc3VicGFn ZV9pbml0ICh0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSwgdWludDMyX3QgKnBoeXMsCitzdGF0aWMg dm9pZCAqc3VicGFnZV9pbml0ICh0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSwgaG9zdF9waHlzX2Fk ZHJfdCAqcGh5cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcmlnX21lbW9yeSkK IHsKICAgICBzdWJwYWdlX3QgKm1taW87CkluZGV4OiBxZW11L3ZsLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cWVtdS5vcmlnL3ZsLmMJMjAwNy0wOC0xMSAxMjoxODo0MC4wMDAwMDAwMDAgKzAwMDAKKysrIHFl bXUvdmwuYwkyMDA3LTA4LTE0IDE0OjM1OjA2LjAwMDAwMDAwMCArMDAwMApAQCAtMTE2LDcgKzEx NiwxMSBAQAogLy8jZGVmaW5lIERFQlVHX1VOVVNFRF9JT1BPUlQKIC8vI2RlZmluZSBERUJVR19J T1BPUlQKIAorI2lmIEhPU1RfTE9OR19CSVRTIDwgNjQKICNkZWZpbmUgUEhZU19SQU1fTUFYX1NJ WkUgKDIwNDcgKiAxMDI0ICogMTAyNCkKKyNlbHNlCisjZGVmaW5lIFBIWVNfUkFNX01BWF9TSVpF ICgyMDQ3ICogMTAyNCAqIDEwMjQgKiAxMDI0VUxMKQorI2VuZGlmCiAKICNpZmRlZiBUQVJHRVRf UFBDCiAjZGVmaW5lIERFRkFVTFRfUkFNX1NJWkUgMTQ0CkBAIC0xNTEsNyArMTU1LDcgQEAKIGNv bnN0IGNoYXIqIGtleWJvYXJkX2xheW91dCA9IE5VTEw7CiBpbnQ2NF90IHRpY2tzX3Blcl9zZWM7 CiBpbnQgYm9vdF9kZXZpY2UgPSAnYyc7Ci1pbnQgcmFtX3NpemU7Citob3N0X3BoeXNfYWRkcl90 IHJhbV9zaXplOwogaW50IHBpdF9taW5fdGltZXJfY291bnQgPSAwOwogaW50IG5iX25pY3M7CiBO SUNJbmZvIG5kX3RhYmxlW01BWF9OSUNTXTsKQEAgLTc0NzIsMTIgKzc0NzYsMTMgQEAKICAgICAg ICAgICAgICAgICBoZWxwKDApOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg Y2FzZSBRRU1VX09QVElPTl9tOgotICAgICAgICAgICAgICAgIHJhbV9zaXplID0gYXRvaShvcHRh cmcpICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICAgICAgcmFtX3NpemUgPSAoaG9zdF9waHlz X2FkZHJfdClhdG9pKG9wdGFyZykgKiAxMDI0ICogMTAyNDsKICAgICAgICAgICAgICAgICBpZiAo cmFtX3NpemUgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgaGVscCgxKTsKICAgICAgICAgICAg ICAgICBpZiAocmFtX3NpemUgPiBQSFlTX1JBTV9NQVhfU0laRSkgewotICAgICAgICAgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGF0IG1vc3QgJWQgTUIgUkFNIGNhbiBiZSBzaW11 bGF0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZU19SQU1fTUFYX1NJWkUg LyAoMTAyNCAqIDEwMjQpKTsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJx ZW11OiBhdCBtb3N0ICIgSE9TVF9GTVRfcGxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiBNQiBSQU0gY2FuIGJlIHNpbXVsYXRlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaG9zdF9waHlzX2FkZHJfdClQSFlTX1JBTV9NQVhfU0laRSAvICgxMDI0ICogMTAyNCkpOwog ICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICBicmVhazsKSW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv dmwuaAkyMDA3LTA4LTE0IDE0OjMxOjQ2LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5oCTIw MDctMDgtMTQgMTQ6MzM6MzkuMDAwMDAwMDAwICswMDAwCkBAIC0xNDUsNyArMTQ1LDkgQEAKIAog dm9pZCBtYWluX2xvb3Bfd2FpdChpbnQgdGltZW91dCk7CiAKLWV4dGVybiBpbnQgcmFtX3NpemU7 CisjaWZuZGVmIFFFTVVfVE9PTAorZXh0ZXJuIGhvc3RfcGh5c19hZGRyX3QgcmFtX3NpemU7Cisj ZW5kaWYKIGV4dGVybiBpbnQgYmlvc19zaXplOwogZXh0ZXJuIGludCBydGNfdXRjOwogZXh0ZXJu IGludCBjaXJydXNfdmdhX2VuYWJsZWQ7CkBAIC03MDcsNyArNzA5LDcgQEAKIAogI2lmbmRlZiBR RU1VX1RPT0wKIAotdHlwZWRlZiB2b2lkIFFFTVVNYWNoaW5lSW5pdEZ1bmMoaW50IHJhbV9zaXpl LCBpbnQgdmdhX3JhbV9zaXplLCAKK3R5cGVkZWYgdm9pZCBRRU1VTWFjaGluZUluaXRGdW5jKGhv c3RfcGh5c19hZGRyX3QgcmFtX3NpemUsIGludCB2Z2FfcmFtX3NpemUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgYm9vdF9kZXZpY2UsCiAgICAgICAgICAgICAgRGlzcGxh eVN0YXRlICpkcywgY29uc3QgY2hhciAqKmZkX2ZpbGVuYW1lLCBpbnQgc25hcHNob3QsCiAgICAg ICAgICAgICAgY29uc3QgY2hhciAqa2VybmVsX2ZpbGVuYW1lLCBjb25zdCBjaGFyICprZXJuZWxf Y21kbGluZSwKQEAgLTk0MiwyNCArOTQ0LDI0IEBACiB9CiAKIGludCBpc2FfdmdhX2luaXQoRGlz cGxheVN0YXRlICpkcywgdWludDhfdCAqdmdhX3JhbV9iYXNlLCAKLSAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyB2Z2FfcmFtX29mZnNldCwgaW50IHZnYV9yYW1fc2l6ZSk7CisgICAgICAg ICAgICAgICAgIGhvc3RfcGh5c19hZGRyX3QgdmdhX3JhbV9vZmZzZXQsIGludCB2Z2FfcmFtX3Np emUpOwogaW50IHBjaV92Z2FfaW5pdChQQ0lCdXMgKmJ1cywgRGlzcGxheVN0YXRlICpkcywgdWlu dDhfdCAqdmdhX3JhbV9iYXNlLCAKLSAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2Z2Ff cmFtX29mZnNldCwgaW50IHZnYV9yYW1fc2l6ZSwKLSAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyB2Z2FfYmlvc19vZmZzZXQsIGludCB2Z2FfYmlvc19zaXplKTsKKyAgICAgICAgICAgICAg ICAgaG9zdF9waHlzX2FkZHJfdCB2Z2FfcmFtX29mZnNldCwgaW50IHZnYV9yYW1fc2l6ZSwKKyAg ICAgICAgICAgICAgICAgaG9zdF9waHlzX2FkZHJfdCB2Z2FfYmlvc19vZmZzZXQsIGludCB2Z2Ff Ymlvc19zaXplKTsKIGludCBpc2FfdmdhX21tX2luaXQoRGlzcGxheVN0YXRlICpkcywgdWludDhf dCAqdmdhX3JhbV9iYXNlLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZnYV9y YW1fb2Zmc2V0LCBpbnQgdmdhX3JhbV9zaXplLAorICAgICAgICAgICAgICAgICAgICBob3N0X3Bo eXNfYWRkcl90IHZnYV9yYW1fb2Zmc2V0LCBpbnQgdmdhX3JhbV9zaXplLAogICAgICAgICAgICAg ICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgdnJhbV9iYXNlLCB0YXJnZXRfcGh5c19hZGRyX3Qg Y3RybF9iYXNlLAogICAgICAgICAgICAgICAgICAgICBpbnQgaXRfc2hpZnQpOwogCiAvKiBjaXJy dXNfdmdhLmMgKi8KIHZvaWQgcGNpX2NpcnJ1c192Z2FfaW5pdChQQ0lCdXMgKmJ1cywgRGlzcGxh eVN0YXRlICpkcywgdWludDhfdCAqdmdhX3JhbV9iYXNlLCAKLSAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHZnYV9yYW1fb2Zmc2V0LCBpbnQgdmdhX3JhbV9zaXplKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBob3N0X3BoeXNfYWRkcl90IHZnYV9yYW1fb2Zmc2V0LCBp bnQgdmdhX3JhbV9zaXplKTsKIHZvaWQgaXNhX2NpcnJ1c192Z2FfaW5pdChEaXNwbGF5U3RhdGUg KmRzLCB1aW50OF90ICp2Z2FfcmFtX2Jhc2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgdmdhX3JhbV9vZmZzZXQsIGludCB2Z2FfcmFtX3NpemUpOworICAgICAgICAg ICAgICAgICAgICAgICAgIGhvc3RfcGh5c19hZGRyX3QgdmdhX3JhbV9vZmZzZXQsIGludCB2Z2Ff cmFtX3NpemUpOwogCiAvKiB2bXdhcmVfdmdhLmMgKi8KIHZvaWQgcGNpX3Ztc3ZnYV9pbml0KFBD SUJ1cyAqYnVzLCBEaXNwbGF5U3RhdGUgKmRzLCB1aW50OF90ICp2Z2FfcmFtX2Jhc2UsCi0gICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZnYV9yYW1fb2Zmc2V0LCBpbnQgdmdhX3Jh bV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgIGhvc3RfcGh5c19hZGRyX3QgdmdhX3JhbV9v ZmZzZXQsIGludCB2Z2FfcmFtX3NpemUpOwogCiAvKiBzZGwuYyAqLwogdm9pZCBzZGxfZGlzcGxh eV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIGludCBmdWxsX3NjcmVlbiwgaW50IG5vX2ZyYW1lKTsK QEAgLTEyMzgsNyArMTI0MCw3IEBACiAKIC8qIHRjeC5jICovCiB2b2lkIHRjeF9pbml0KERpc3Bs YXlTdGF0ZSAqZHMsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1aW50OF90ICp2cmFtX2Jhc2Us Ci0gICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdnJhbV9vZmZzZXQsIGludCB2cmFtX3NpemUs IGludCB3aWR0aCwgaW50IGhlaWdodCwKKyAgICAgICAgICAgICAgaG9zdF9waHlzX2FkZHJfdCB2 cmFtX29mZnNldCwgaW50IHZyYW1fc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogICAgICAg ICAgICAgICBpbnQgZGVwdGgpOwogCiAvKiBzbGF2aW9faW50Y3RsLmMgKi8KSW5kZXg6IHFlbXUv aHcvc3VuNG0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0uYwkyMDA3LTA4LTE0 IDE0OjMyOjQ1LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5jCTIwMDctMDgtMTQg MTQ6MzY6MDIuMDAwMDAwMDAwICswMDAwCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICBlbnYtPmhh bHRlZCA9IDE7CiB9CiAKLXN0YXRpYyB2b2lkICpzdW40bV9od19pbml0KGNvbnN0IHN0cnVjdCBo d2RlZiAqaHdkZWYsIGludCBSQU1fc2l6ZSwKK3N0YXRpYyB2b2lkICpzdW40bV9od19pbml0KGNv bnN0IHN0cnVjdCBod2RlZiAqaHdkZWYsIGhvc3RfcGh5c19hZGRyX3QgUkFNX3NpemUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBjaGFyICpjcHVf bW9kZWwpCiAKIHsKQEAgLTUwNiw3ICs1MDYsOCBAQAogICAgIHJldHVybiBudnJhbTsKIH0KIAot c3RhdGljIHZvaWQgc3VuNG1fbG9hZF9rZXJuZWwobG9uZyB2cmFtX3NpemUsIGludCBSQU1fc2l6 ZSwgaW50IGJvb3RfZGV2aWNlLAorc3RhdGljIHZvaWQgc3VuNG1fbG9hZF9rZXJuZWwobG9uZyB2 cmFtX3NpemUsIGhvc3RfcGh5c19hZGRyX3QgUkFNX3NpemUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgYm9vdF9kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICprZXJuZWxfZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICprZXJuZWxfY21kbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwKQEAgLTUxNiw3ICs1MTcsOCBAQAog ICAgIGludCByZXQsIGxpbnV4X2Jvb3Q7CiAgICAgY2hhciBidWZbMTAyNF07CiAgICAgdW5zaWdu ZWQgaW50IGk7Ci0gICAgbG9uZyBwcm9tX29mZnNldCwgaW5pdHJkX3NpemUsIGtlcm5lbF9zaXpl OworICAgIHJhbV9hZGRyX3QgcHJvbV9vZmZzZXQ7CisgICAgbG9uZyBpbml0cmRfc2l6ZSwga2Vy bmVsX3NpemU7CiAKICAgICBsaW51eF9ib290ID0gKGtlcm5lbF9maWxlbmFtZSAhPSBOVUxMKTsK IApAQCAtNjc2LDE3ICs2NzgsMjAgQEAKICAgICB9LAogfTsKIAotc3RhdGljIHZvaWQgc3VuNG1f Y29tbW9uX2luaXQoaW50IFJBTV9zaXplLCBpbnQgYm9vdF9kZXZpY2UsIERpc3BsYXlTdGF0ZSAq ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZmls ZW5hbWUsIGNvbnN0IGNoYXIgKmtlcm5lbF9jbWRsaW5lLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpjcHVfbW9k ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFjaGluZSwg aW50IG1heF9yYW0pCitzdGF0aWMgdm9pZCBzdW40bV9jb21tb25faW5pdChob3N0X3BoeXNfYWRk cl90IFJBTV9zaXplLCBpbnQgYm9vdF9kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEaXNwbGF5U3RhdGUgKmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqa2VybmVsX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqa2VybmVsX2NtZGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICppbml0cmRfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpjcHVfbW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbWFjaGluZSwgaG9zdF9waHlzX2FkZHJfdCBtYXhfcmFtKQogewogICAg IHZvaWQgKm52cmFtOwogCi0gICAgaWYgKCh1bnNpZ25lZCBpbnQpUkFNX3NpemUgPiAodW5zaWdu ZWQgaW50KW1heF9yYW0pIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBUb28gbXVj aCBtZW1vcnkgZm9yIHRoaXMgbWFjaGluZTogJWQsIG1heGltdW0gJWRcbiIsCi0gICAgICAgICAg ICAgICAgKHVuc2lnbmVkIGludClSQU1fc2l6ZSAvICgxMDI0ICogMTAyNCksCi0gICAgICAgICAg ICAgICAgKHVuc2lnbmVkIGludCltYXhfcmFtIC8gKDEwMjQgKiAxMDI0KSk7CisgICAgaWYgKFJB TV9zaXplID4gbWF4X3JhbSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IFRvbyBt dWNoIG1lbW9yeSBmb3IgdGhpcyBtYWNoaW5lOiAlbGQsIG1heGltdW0gJWxkXG4iLAorICAgICAg ICAgICAgICAgIFJBTV9zaXplIC8gKDEwMjQgKiAxMDI0KSwKKyAgICAgICAgICAgICAgICBtYXhf cmFtIC8gKDEwMjQgKiAxMDI0KSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogICAgIG52cmFt ID0gc3VuNG1faHdfaW5pdCgmaHdkZWZzW21hY2hpbmVdLCBSQU1fc2l6ZSwgZHMsIGNwdV9tb2Rl bCk7CkBAIC02OTcsMTAgKzcwMiwxMCBAQAogfQogCiAvKiBTUEFSQ3N0YXRpb24gNSBoYXJkd2Fy ZSBpbml0aWFsaXNhdGlvbiAqLwotc3RhdGljIHZvaWQgc3M1X2luaXQoaW50IFJBTV9zaXplLCBp bnQgdmdhX3JhbV9zaXplLCBpbnQgYm9vdF9kZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAg IERpc3BsYXlTdGF0ZSAqZHMsIGNvbnN0IGNoYXIgKipmZF9maWxlbmFtZSwgaW50IHNuYXBzaG90 LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZmlsZW5hbWUsIGNv bnN0IGNoYXIgKmtlcm5lbF9jbWRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICppbml0cmRfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmNwdV9tb2RlbCkKK3N0YXRpYyB2b2lk IHNzNV9pbml0KGhvc3RfcGh5c19hZGRyX3QgUkFNX3NpemUsIGludCB2Z2FfcmFtX3NpemUsIGlu dCBib290X2RldmljZSwKKyAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlTdGF0ZSAqZHMsIGNv bnN0IGNoYXIgKipmZF9maWxlbmFtZSwgaW50IHNuYXBzaG90LAorICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqa2VybmVsX2ZpbGVuYW1lLCBjb25zdCBjaGFyICprZXJuZWxfY21kbGlu ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwgY29u c3QgY2hhciAqY3B1X21vZGVsKQogewogICAgIGlmIChjcHVfbW9kZWwgPT0gTlVMTCkKICAgICAg ICAgY3B1X21vZGVsID0gIkZ1aml0c3UgTUI4NjkwNCI7CkBAIC03MTAsMTAgKzcxNSwxMCBAQAog fQogCiAvKiBTUEFSQ3N0YXRpb24gMTAgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gKi8KLXN0YXRp YyB2b2lkIHNzMTBfaW5pdChpbnQgUkFNX3NpemUsIGludCB2Z2FfcmFtX3NpemUsIGludCBib290 X2RldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5U3RhdGUgKmRzLCBj b25zdCBjaGFyICoqZmRfZmlsZW5hbWUsIGludCBzbmFwc2hvdCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmtlcm5l bF9jbWRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluaXRy ZF9maWxlbmFtZSwgY29uc3QgY2hhciAqY3B1X21vZGVsKQorc3RhdGljIHZvaWQgc3MxMF9pbml0 KGhvc3RfcGh5c19hZGRyX3QgUkFNX3NpemUsIGludCB2Z2FfcmFtX3NpemUsIGludCBib290X2Rl dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBjaGFy ICoqZmRfZmlsZW5hbWUsIGludCBzbmFwc2hvdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICprZXJuZWxfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmtlcm5lbF9jbWRsaW5lLAorICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwgY29uc3QgY2hh ciAqY3B1X21vZGVsKQogewogICAgIGlmIChjcHVfbW9kZWwgPT0gTlVMTCkKICAgICAgICAgY3B1 X21vZGVsID0gIlRJIFN1cGVyU3BhcmMgSUkiOwpJbmRleDogcWVtdS9jcHUtYWxsLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL2NwdS1hbGwuaAkyMDA3LTA3LTI5IDIwOjI0OjA4LjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9jcHUtYWxsLmgJMjAwNy0wOC0xNCAxNDozMzozOS4wMDAwMDAwMDAg KzAwMDAKQEAgLTc3MCw3ICs3NzAsNyBAQAogCiAvKiBtZW1vcnkgQVBJICovCiAKLWV4dGVybiBp bnQgcGh5c19yYW1fc2l6ZTsKK2V4dGVybiBob3N0X3BoeXNfYWRkcl90IHBoeXNfcmFtX3NpemU7 CiBleHRlcm4gaW50IHBoeXNfcmFtX2ZkOwogZXh0ZXJuIHVpbnQ4X3QgKnBoeXNfcmFtX2Jhc2U7 CiBleHRlcm4gdWludDhfdCAqcGh5c19yYW1fZGlydHk7CkBAIC03OTQsOCArNzk0LDggQEAKIHR5 cGVkZWYgdWludDMyX3QgQ1BVUmVhZE1lbW9yeUZ1bmModm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkcik7CiAKIHZvaWQgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeSh0YXJn ZXRfcGh5c19hZGRyX3Qgc3RhcnRfYWRkciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgcGh5c19vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvc3RfcGh5c19hZGRyX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBob3N0X3BoeXNfYWRkcl90IHBoeXNfb2Zmc2V0KTsKIHVpbnQzMl90IGNwdV9n ZXRfcGh5c2ljYWxfcGFnZV9kZXNjKHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKTsKIHJhbV9hZGRy X3QgcWVtdV9yYW1fYWxsb2ModW5zaWduZWQgaW50IHNpemUpOwogdm9pZCBxZW11X3JhbV9mcmVl KHJhbV9hZGRyX3QgYWRkcik7CkluZGV4OiBxZW11L2NwdS1kZWZzLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cWVtdS5vcmlnL2NwdS1kZWZzLmgJMjAwNy0wNi0yOCAwNzozNjoyMi4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvY3B1LWRlZnMuaAkyMDA3LTA4LTE0IDE0OjMzOjM5LjAwMDAwMDAwMCArMDAwMApA QCAtNTYsNyArNTYsNyBAQAogCiAvKiB0YXJnZXRfcGh5c19hZGRyX3QgaXMgdGhlIHR5cGUgb2Yg YSBwaHlzaWNhbCBhZGRyZXNzIChpdHMgc2l6ZSBjYW4KICAgIGJlIGRpZmZlcmVudCBmcm9tICd0 YXJnZXRfdWxvbmcnKS4gV2UgaGF2ZSBzaXplb2YodGFyZ2V0X3BoeXNfYWRkcikKLSAgID0gbWF4 KHNpemVvZih1bnNpZ25lZCBsb25nKSwKKyAgID0gbWF4KHNpemVvZihob3N0X3BoeXNfYWRkciks CiAgICBzaXplb2Yoc2l6ZV9vZl90YXJnZXRfcGh5c2ljYWxfYWRkcmVzcykpIGJlY2F1c2Ugd2Ug bXVzdCBwYXNzIGEKICAgIGhvc3QgcG9pbnRlciB0byBtZW1vcnkgb3BlcmF0aW9ucyBpbiBzb21l IGNhc2VzICovCiAKQEAgLTcxLDEwICs3MSwyMyBAQAogI2VuZGlmCiAKIC8qIGFkZHJlc3MgaW4g dGhlIFJBTSAoZGlmZmVyZW50IGZyb20gYSBwaHlzaWNhbCBhZGRyZXNzKSAqLwotdHlwZWRlZiB1 bnNpZ25lZCBsb25nIHJhbV9hZGRyX3Q7Cit0eXBlZGVmIHVpbnRwdHJfdCByYW1fYWRkcl90Owor CisvKiBhZGRyZXNzIGluIGhvc3QgbWVtb3J5ICovCit0eXBlZGVmIHVpbnRwdHJfdCBob3N0X3Bo eXNfYWRkcl90OwogCiAjZGVmaW5lIEhPU1RfTE9OR19TSVpFIChIT1NUX0xPTkdfQklUUyAvIDgp CiAKKyNpZiBIT1NUX0xPTkdfU0laRSA9PSA0CisjZGVmaW5lIEhPU1RfRk1UX3BseCAiJTA4eCIK KyNkZWZpbmUgSE9TVF9GTVRfcGxkICIlZCIKKyNlbGlmIEhPU1RfTE9OR19TSVpFID09IDgKKyNk ZWZpbmUgSE9TVF9GTVRfcGx4ICIlMDE2IiBQUkl4NjQKKyNkZWZpbmUgSE9TVF9GTVRfcGxkICIl IiBQUklkNjQKKyNlbHNlCisjZXJyb3IgdW5zdXBwb3J0ZWQgSE9TVF9MT05HX1NJWkUKKyNlbmRp ZgorCiAjZGVmaW5lIEVYQ1BfSU5URVJSVVBUIAkweDEwMDAwIC8qIGFzeW5jIGludGVycnVwdGlv biAqLwogI2RlZmluZSBFWENQX0hMVCAgICAgICAgMHgxMDAwMSAvKiBobHQgaW5zdHJ1Y3Rpb24g cmVhY2hlZCAqLwogI2RlZmluZSBFWENQX0RFQlVHICAgICAgMHgxMDAwMiAvKiBjcHUgc3RvcHBl ZCBhZnRlciBhIGJyZWFrcG9pbnQgb3Igc2luZ2xlc3RlcCAqLwpAQCAtMTI1LDggKzEzOCw4IEBA CiAgICAgLyogaW4gb3JkZXIgdG8gYXZvaWQgcGFzc2luZyB0b28gbWFueSBhcmd1bWVudHMgdG8g dGhlIG1lbW9yeSAgICAgICBcCiAgICAgICAgd3JpdGUgaGVscGVycywgd2Ugc3RvcmUgc29tZSBy YXJlbHkgdXNlZCBpbmZvcm1hdGlvbiBpbiB0aGUgQ1BVICBcCiAgICAgICAgY29udGV4dCkgKi8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgdW5zaWduZWQgbG9uZyBtZW1fd3JpdGVfcGM7IC8qIGhvc3QgcGMgYXQgd2hpY2ggdGhlIG1l bW9yeSB3YXMgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXR0 ZW4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaG9zdF9waHlzX2FkZHJfdCBt ZW1fd3JpdGVfcGM7IC8qIGhvc3QgcGMgYXQgd2hpY2ggdGhlIG1lbW9yeSB3YXMgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gKi8gICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgdGFyZ2V0X3Vsb25nIG1lbV93cml0ZV92YWRkcjsgLyogdGFyZ2V0 IHZpcnR1YWwgYWRkciBhdCB3aGljaCB0aGUgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWVtb3J5IHdhcyB3cml0dGVuICovICAgICAgICAgICAgICBcCiAgICAgLyog MCA9IGtlcm5lbCwgMSA9IHVzZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCkluZGV4OiBxZW11L2NwdS1leGVjLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmln L2NwdS1leGVjLmMJMjAwNy0wOC0wNCAxMDozOToxMS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUv Y3B1LWV4ZWMuYwkyMDA3LTA4LTE0IDE0OjM2OjA1LjAwMDAwMDAwMCArMDAwMApAQCAtMTM0LDcg KzEzNCw3IEBACiAgICAgdGItPmNzX2Jhc2UgPSBjc19iYXNlOwogICAgIHRiLT5mbGFncyA9IGZs YWdzOwogICAgIGNwdV9nZW5fY29kZShlbnYsIHRiLCBDT0RFX0dFTl9NQVhfU0laRSwgJmNvZGVf Z2VuX3NpemUpOwotICAgIGNvZGVfZ2VuX3B0ciA9ICh2b2lkICopKCgodW5zaWduZWQgbG9uZylj b2RlX2dlbl9wdHIgKyBjb2RlX2dlbl9zaXplICsgQ09ERV9HRU5fQUxJR04gLSAxKSAmIH4oQ09E RV9HRU5fQUxJR04gLSAxKSk7CisgICAgY29kZV9nZW5fcHRyID0gKHZvaWQgKikoKChob3N0X3Bo eXNfYWRkcl90KWNvZGVfZ2VuX3B0ciArIGNvZGVfZ2VuX3NpemUgKyBDT0RFX0dFTl9BTElHTiAt IDEpICYgfihDT0RFX0dFTl9BTElHTiAtIDEpKTsKICAgICAKICAgICAvKiBjaGVjayBuZXh0IHBh Z2UgaWYgbmVlZGVkICovCiAgICAgdmlydF9wYWdlMiA9IChwYyArIHRiLT5zaXplIC0gMSkgJiBU QVJHRVRfUEFHRV9NQVNLOwpAQCAtODI0LDcgKzgyNCw3IEBACiAgICB0aGUgZWZmZWN0aXZlIGFk ZHJlc3Mgb2YgdGhlIG1lbW9yeSBleGNlcHRpb24uICdpc193cml0ZScgaXMgMSBpZiBhCiAgICB3 cml0ZSBjYXVzZWQgdGhlIGV4Y2VwdGlvbiBhbmQgb3RoZXJ3aXNlIDAnLiAnb2xkX3NldCcgaXMg dGhlCiAgICBzaWduYWwgc2V0IHdoaWNoIHNob3VsZCBiZSByZXN0b3JlZCAqLwotc3RhdGljIGlu bGluZSBpbnQgaGFuZGxlX2NwdV9zaWduYWwodW5zaWduZWQgbG9uZyBwYywgdW5zaWduZWQgbG9u ZyBhZGRyZXNzLAorc3RhdGljIGlubGluZSBpbnQgaGFuZGxlX2NwdV9zaWduYWwoaG9zdF9waHlz X2FkZHJfdCBwYywgaG9zdF9waHlzX2FkZHJfdCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGlzX3dyaXRlLCBzaWdzZXRfdCAqb2xkX3NldCwgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWMpCiB7CkBAIC04MzUsNyAr ODM1LDcgQEAKICAgICAgICAgZW52ID0gY3B1X3NpbmdsZV9lbnY7IC8qIFhYWDogZmluZCBhIGNv cnJlY3Qgc29sdXRpb24gZm9yIG11bHRpdGhyZWFkICovCiAjaWYgZGVmaW5lZChERUJVR19TSUdO QUwpCiAgICAgcWVtdV9wcmludGYoInFlbXU6IFNJR1NFR1YgcGM9MHglMDhseCBhZGRyZXNzPSUw OGx4IHc9JWQgb2xkc2V0PTB4JTA4bHhcbiIsIAotICAgICAgICAgICAgICAgIHBjLCBhZGRyZXNz LCBpc193cml0ZSwgKih1bnNpZ25lZCBsb25nICopb2xkX3NldCk7CisgICAgICAgICAgICAgICAg cGMsIGFkZHJlc3MsIGlzX3dyaXRlLCAqKGhvc3RfcGh5c19hZGRyX3QgKilvbGRfc2V0KTsKICNl bmRpZgogICAgIC8qIFhYWDogbG9ja2luZyBpc3N1ZSAqLwogICAgIGlmIChpc193cml0ZSAmJiBw YWdlX3VucHJvdGVjdChoMmcoYWRkcmVzcyksIHBjLCBwdWMpKSB7CkBAIC04NzUsNyArODc1LDcg QEAKIH0KIAogI2VsaWYgZGVmaW5lZChUQVJHRVRfQVJNKQotc3RhdGljIGlubGluZSBpbnQgaGFu ZGxlX2NwdV9zaWduYWwodW5zaWduZWQgbG9uZyBwYywgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAor c3RhdGljIGlubGluZSBpbnQgaGFuZGxlX2NwdV9zaWduYWwoaG9zdF9waHlzX2FkZHJfdCBwYywg aG9zdF9waHlzX2FkZHJfdCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGlzX3dyaXRlLCBzaWdzZXRfdCAqb2xkX3NldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1YykKIHsKQEAgLTg4Niw3ICs4ODYsNyBAQAogICAg ICAgICBlbnYgPSBjcHVfc2luZ2xlX2VudjsgLyogWFhYOiBmaW5kIGEgY29ycmVjdCBzb2x1dGlv biBmb3IgbXVsdGl0aHJlYWQgKi8KICNpZiBkZWZpbmVkKERFQlVHX1NJR05BTCkKICAgICBwcmlu dGYoInFlbXU6IFNJR1NFR1YgcGM9MHglMDhseCBhZGRyZXNzPSUwOGx4IHc9JWQgb2xkc2V0PTB4 JTA4bHhcbiIsIAotICAgICAgICAgICBwYywgYWRkcmVzcywgaXNfd3JpdGUsICoodW5zaWduZWQg bG9uZyAqKW9sZF9zZXQpOworICAgICAgICAgICBwYywgYWRkcmVzcywgaXNfd3JpdGUsICooaG9z dF9waHlzX2FkZHJfdCAqKW9sZF9zZXQpOwogI2VuZGlmCiAgICAgLyogWFhYOiBsb2NraW5nIGlz c3VlICovCiAgICAgaWYgKGlzX3dyaXRlICYmIHBhZ2VfdW5wcm90ZWN0KGgyZyhhZGRyZXNzKSwg cGMsIHB1YykpIHsKQEAgLTkxMSw3ICs5MTEsNyBAQAogICAgIGNwdV9sb29wX2V4aXQoKTsKIH0K ICNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDKQotc3RhdGljIGlubGluZSBpbnQgaGFuZGxlX2Nw dV9zaWduYWwodW5zaWduZWQgbG9uZyBwYywgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorc3RhdGlj IGlubGluZSBpbnQgaGFuZGxlX2NwdV9zaWduYWwoaG9zdF9waHlzX2FkZHJfdCBwYywgaG9zdF9w aHlzX2FkZHJfdCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGlzX3dyaXRlLCBzaWdzZXRfdCAqb2xkX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKnB1YykKIHsKQEAgLTkyMiw3ICs5MjIsNyBAQAogICAgICAgICBl bnYgPSBjcHVfc2luZ2xlX2VudjsgLyogWFhYOiBmaW5kIGEgY29ycmVjdCBzb2x1dGlvbiBmb3Ig bXVsdGl0aHJlYWQgKi8KICNpZiBkZWZpbmVkKERFQlVHX1NJR05BTCkKICAgICBwcmludGYoInFl bXU6IFNJR1NFR1YgcGM9MHglMDhseCBhZGRyZXNzPSUwOGx4IHc9JWQgb2xkc2V0PTB4JTA4bHhc biIsIAotICAgICAgICAgICBwYywgYWRkcmVzcywgaXNfd3JpdGUsICoodW5zaWduZWQgbG9uZyAq KW9sZF9zZXQpOworICAgICAgICAgICBwYywgYWRkcmVzcywgaXNfd3JpdGUsICooaG9zdF9waHlz X2FkZHJfdCAqKW9sZF9zZXQpOwogI2VuZGlmCiAgICAgLyogWFhYOiBsb2NraW5nIGlzc3VlICov CiAgICAgaWYgKGlzX3dyaXRlICYmIHBhZ2VfdW5wcm90ZWN0KGgyZyhhZGRyZXNzKSwgcGMsIHB1 YykpIHsKQEAgLTk0Nyw3ICs5NDcsNyBAQAogICAgIGNwdV9sb29wX2V4aXQoKTsKIH0KICNlbGlm IGRlZmluZWQgKFRBUkdFVF9QUEMpCi1zdGF0aWMgaW5saW5lIGludCBoYW5kbGVfY3B1X3NpZ25h bCh1bnNpZ25lZCBsb25nIHBjLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCitzdGF0aWMgaW5saW5l IGludCBoYW5kbGVfY3B1X3NpZ25hbChob3N0X3BoeXNfYWRkcl90IHBjLCBob3N0X3BoeXNfYWRk cl90IGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNf d3JpdGUsIHNpZ3NldF90ICpvbGRfc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqcHVjKQogewpAQCAtOTU4LDcgKzk1OCw3IEBACiAgICAgICAgIGVudiA9IGNw dV9zaW5nbGVfZW52OyAvKiBYWFg6IGZpbmQgYSBjb3JyZWN0IHNvbHV0aW9uIGZvciBtdWx0aXRo cmVhZCAqLwogI2lmIGRlZmluZWQoREVCVUdfU0lHTkFMKQogICAgIHByaW50ZigicWVtdTogU0lH U0VHViBwYz0weCUwOGx4IGFkZHJlc3M9JTA4bHggdz0lZCBvbGRzZXQ9MHglMDhseFxuIiwgCi0g ICAgICAgICAgIHBjLCBhZGRyZXNzLCBpc193cml0ZSwgKih1bnNpZ25lZCBsb25nICopb2xkX3Nl dCk7CisgICAgICAgICAgIHBjLCBhZGRyZXNzLCBpc193cml0ZSwgKihob3N0X3BoeXNfYWRkcl90 ICopb2xkX3NldCk7CiAjZW5kaWYKICAgICAvKiBYWFg6IGxvY2tpbmcgaXNzdWUgKi8KICAgICBp ZiAoaXNfd3JpdGUgJiYgcGFnZV91bnByb3RlY3QoaDJnKGFkZHJlc3MpLCBwYywgcHVjKSkgewpA QCAtOTk3LDcgKzk5Nyw3IEBACiB9CiAKICNlbGlmIGRlZmluZWQoVEFSR0VUX002OEspCi1zdGF0 aWMgaW5saW5lIGludCBoYW5kbGVfY3B1X3NpZ25hbCh1bnNpZ25lZCBsb25nIHBjLCB1bnNpZ25l ZCBsb25nIGFkZHJlc3MsCitzdGF0aWMgaW5saW5lIGludCBoYW5kbGVfY3B1X3NpZ25hbChob3N0 X3BoeXNfYWRkcl90IHBjLCBob3N0X3BoeXNfYWRkcl90IGFkZHJlc3MsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNfd3JpdGUsIHNpZ3NldF90ICpvbGRfc2V0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHVjKQogewpAQCAtMTAw OCw3ICsxMDA4LDcgQEAKICAgICAgICAgZW52ID0gY3B1X3NpbmdsZV9lbnY7IC8qIFhYWDogZmlu ZCBhIGNvcnJlY3Qgc29sdXRpb24gZm9yIG11bHRpdGhyZWFkICovCiAjaWYgZGVmaW5lZChERUJV R19TSUdOQUwpCiAgICAgcHJpbnRmKCJxZW11OiBTSUdTRUdWIHBjPTB4JTA4bHggYWRkcmVzcz0l MDhseCB3PSVkIG9sZHNldD0weCUwOGx4XG4iLCAKLSAgICAgICAgICAgcGMsIGFkZHJlc3MsIGlz X3dyaXRlLCAqKHVuc2lnbmVkIGxvbmcgKilvbGRfc2V0KTsKKyAgICAgICAgICAgcGMsIGFkZHJl c3MsIGlzX3dyaXRlLCAqKGhvc3RfcGh5c19hZGRyX3QgKilvbGRfc2V0KTsKICNlbmRpZgogICAg IC8qIFhYWDogbG9ja2luZyBpc3N1ZSAqLwogICAgIGlmIChpc193cml0ZSAmJiBwYWdlX3VucHJv dGVjdChhZGRyZXNzLCBwYywgcHVjKSkgewpAQCAtMTAzNiw3ICsxMDM2LDcgQEAKIH0KIAogI2Vs aWYgZGVmaW5lZCAoVEFSR0VUX01JUFMpCi1zdGF0aWMgaW5saW5lIGludCBoYW5kbGVfY3B1X3Np Z25hbCh1bnNpZ25lZCBsb25nIHBjLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCitzdGF0aWMgaW5s aW5lIGludCBoYW5kbGVfY3B1X3NpZ25hbChob3N0X3BoeXNfYWRkcl90IHBjLCBob3N0X3BoeXNf YWRkcl90IGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg aXNfd3JpdGUsIHNpZ3NldF90ICpvbGRfc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqcHVjKQogewpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAKICAgICAgICAgZW52 ID0gY3B1X3NpbmdsZV9lbnY7IC8qIFhYWDogZmluZCBhIGNvcnJlY3Qgc29sdXRpb24gZm9yIG11 bHRpdGhyZWFkICovCiAjaWYgZGVmaW5lZChERUJVR19TSUdOQUwpCiAgICAgcHJpbnRmKCJxZW11 OiBTSUdTRUdWIHBjPTB4JTA4bHggYWRkcmVzcz0lMDhseCB3PSVkIG9sZHNldD0weCUwOGx4XG4i LCAKLSAgICAgICAgICAgcGMsIGFkZHJlc3MsIGlzX3dyaXRlLCAqKHVuc2lnbmVkIGxvbmcgKilv bGRfc2V0KTsKKyAgICAgICAgICAgcGMsIGFkZHJlc3MsIGlzX3dyaXRlLCAqKGhvc3RfcGh5c19h ZGRyX3QgKilvbGRfc2V0KTsKICNlbmRpZgogICAgIC8qIFhYWDogbG9ja2luZyBpc3N1ZSAqLwog ICAgIGlmIChpc193cml0ZSAmJiBwYWdlX3VucHJvdGVjdChoMmcoYWRkcmVzcyksIHBjLCBwdWMp KSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQAogfQogCiAjZWxpZiBkZWZpbmVkIChUQVJHRVRfU0g0 KQotc3RhdGljIGlubGluZSBpbnQgaGFuZGxlX2NwdV9zaWduYWwodW5zaWduZWQgbG9uZyBwYywg dW5zaWduZWQgbG9uZyBhZGRyZXNzLAorc3RhdGljIGlubGluZSBpbnQgaGFuZGxlX2NwdV9zaWdu YWwoaG9zdF9waHlzX2FkZHJfdCBwYywgaG9zdF9waHlzX2FkZHJfdCBhZGRyZXNzLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlzX3dyaXRlLCBzaWdzZXRfdCAqb2xk X3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1YykKIHsK QEAgLTEwOTcsNyArMTA5Nyw3IEBACiAgICAgICAgIGVudiA9IGNwdV9zaW5nbGVfZW52OyAvKiBY WFg6IGZpbmQgYSBjb3JyZWN0IHNvbHV0aW9uIGZvciBtdWx0aXRocmVhZCAqLwogI2lmIGRlZmlu ZWQoREVCVUdfU0lHTkFMKQogICAgIHByaW50ZigicWVtdTogU0lHU0VHViBwYz0weCUwOGx4IGFk ZHJlc3M9JTA4bHggdz0lZCBvbGRzZXQ9MHglMDhseFxuIiwgCi0gICAgICAgICAgIHBjLCBhZGRy ZXNzLCBpc193cml0ZSwgKih1bnNpZ25lZCBsb25nICopb2xkX3NldCk7CisgICAgICAgICAgIHBj LCBhZGRyZXNzLCBpc193cml0ZSwgKihob3N0X3BoeXNfYWRkcl90ICopb2xkX3NldCk7CiAjZW5k aWYKICAgICAvKiBYWFg6IGxvY2tpbmcgaXNzdWUgKi8KICAgICBpZiAoaXNfd3JpdGUgJiYgcGFn ZV91bnByb3RlY3QoaDJnKGFkZHJlc3MpLCBwYywgcHVjKSkgewpAQCAtMTEzMSw3ICsxMTMxLDcg QEAKIH0KIAogI2VsaWYgZGVmaW5lZCAoVEFSR0VUX0FMUEhBKQotc3RhdGljIGlubGluZSBpbnQg aGFuZGxlX2NwdV9zaWduYWwodW5zaWduZWQgbG9uZyBwYywgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAorc3RhdGljIGlubGluZSBpbnQgaGFuZGxlX2NwdV9zaWduYWwoaG9zdF9waHlzX2FkZHJfdCBw YywgaG9zdF9waHlzX2FkZHJfdCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGlzX3dyaXRlLCBzaWdzZXRfdCAqb2xkX3NldCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1YykKIHsKQEAgLTExNDIsNyArMTE0Miw3IEBA CiAgICAgICAgIGVudiA9IGNwdV9zaW5nbGVfZW52OyAvKiBYWFg6IGZpbmQgYSBjb3JyZWN0IHNv bHV0aW9uIGZvciBtdWx0aXRocmVhZCAqLwogI2lmIGRlZmluZWQoREVCVUdfU0lHTkFMKQogICAg IHByaW50ZigicWVtdTogU0lHU0VHViBwYz0weCUwOGx4IGFkZHJlc3M9JTA4bHggdz0lZCBvbGRz ZXQ9MHglMDhseFxuIiwgCi0gICAgICAgICAgIHBjLCBhZGRyZXNzLCBpc193cml0ZSwgKih1bnNp Z25lZCBsb25nICopb2xkX3NldCk7CisgICAgICAgICAgIHBjLCBhZGRyZXNzLCBpc193cml0ZSwg Kihob3N0X3BoeXNfYWRkcl90ICopb2xkX3NldCk7CiAjZW5kaWYKICAgICAvKiBYWFg6IGxvY2tp bmcgaXNzdWUgKi8KICAgICBpZiAoaXNfd3JpdGUgJiYgcGFnZV91bnByb3RlY3QoaDJnKGFkZHJl c3MpLCBwYywgcHVjKSkgewpAQCAtMTE4Myw3ICsxMTgzLDcgQEAKICNpZiBkZWZpbmVkKF9fQVBQ TEVfXykKICMgaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CiAKLSMgZGVmaW5lIEVJUF9zaWcoY29u dGV4dCkgICgqKCh1bnNpZ25lZCBsb25nKikmKGNvbnRleHQpLT51Y19tY29udGV4dC0+c3MuZWlw KSkKKyMgZGVmaW5lIEVJUF9zaWcoY29udGV4dCkgICgqKChob3N0X3BoeXNfYWRkcl90KikmKGNv bnRleHQpLT51Y19tY29udGV4dC0+c3MuZWlwKSkKICMgZGVmaW5lIFRSQVBfc2lnKGNvbnRleHQp ICAgICgoY29udGV4dCktPnVjX21jb250ZXh0LT5lcy50cmFwbm8pCiAjIGRlZmluZSBFUlJPUl9z aWcoY29udGV4dCkgICAoKGNvbnRleHQpLT51Y19tY29udGV4dC0+ZXMuZXJyKQogI2Vsc2UKQEAg LTExOTMsNyArMTE5Myw3IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoVVNFX0NPREVfQ09QWSkK LXN0YXRpYyB2b2lkIGNwdV9zZW5kX3RyYXAodW5zaWduZWQgbG9uZyBwYywgaW50IHRyYXAsIAor c3RhdGljIHZvaWQgY3B1X3NlbmRfdHJhcChob3N0X3BoeXNfYWRkcl90IHBjLCBpbnQgdHJhcCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVjb250ZXh0ICp1YykKIHsKICAgICBU cmFuc2xhdGlvbkJsb2NrICp0YjsKQEAgLTEyMTcsNyArMTIxNyw3IEBACiB7CiAgICAgc2lnaW5m b190ICppbmZvID0gcGluZm87CiAgICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSAgICB1 bnNpZ25lZCBsb25nIHBjOworICAgIGhvc3RfcGh5c19hZGRyX3QgcGM7CiAgICAgaW50IHRyYXBu bzsKIAogI2lmbmRlZiBSRUdfRUlQCkBAIC0xMjM1LDcgKzEyMzUsNyBAQAogICAgICAgICByZXR1 cm4gMTsKICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWdu YWwocGMsICh1bnNpZ25lZCBsb25nKWluZm8tPnNpX2FkZHIsIAorICAgICAgICByZXR1cm4gaGFu ZGxlX2NwdV9zaWduYWwocGMsIChob3N0X3BoeXNfYWRkcl90KWluZm8tPnNpX2FkZHIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwbm8gPT0gMHhlID8gCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoRVJST1Jfc2lnKHVjKSA+PiAxKSAmIDEgOiAwLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVjLT51Y19zaWdtYXNrLCBwdWMpOwpAQCAt MTI0OCwxMCArMTI0OCwxMCBAQAogewogICAgIHNpZ2luZm9fdCAqaW5mbyA9IHBpbmZvOwogICAg IHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0gICAgdW5zaWduZWQgbG9uZyBwYzsKKyAgICBo b3N0X3BoeXNfYWRkcl90IHBjOwogCiAgICAgcGMgPSB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVH X1JJUF07Ci0gICAgcmV0dXJuIGhhbmRsZV9jcHVfc2lnbmFsKHBjLCAodW5zaWduZWQgbG9uZylp bmZvLT5zaV9hZGRyLCAKKyAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWduYWwocGMsIChob3N0X3Bo eXNfYWRkcl90KWluZm8tPnNpX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVj LT51Y19tY29udGV4dC5ncmVnc1tSRUdfVFJBUE5PXSA9PSAweGUgPyAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRVJSXSA+PiAxKSAmIDEg OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdWMtPnVjX3NpZ21hc2ssIHB1Yyk7 CkBAIC0xMzEzLDcgKzEzMTMsNyBAQAogewogICAgIHNpZ2luZm9fdCAqaW5mbyA9IHBpbmZvOwog ICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0gICAgdW5zaWduZWQgbG9uZyBwYzsKKyAg ICBob3N0X3BoeXNfYWRkcl90IHBjOwogICAgIGludCBpc193cml0ZTsKIAogICAgIHBjID0gSUFS X3NpZyh1Yyk7CkBAIC0xMzI2LDcgKzEzMjYsNyBAQAogICAgIGlmIChUUkFQX3NpZyh1YykgIT0g MHg0MDAgJiYgKERTSVNSX3NpZyh1YykgJiAweDAyMDAwMDAwKSkKICAgICAgICAgaXNfd3JpdGUg PSAxOwogI2VuZGlmCi0gICAgcmV0dXJuIGhhbmRsZV9jcHVfc2lnbmFsKHBjLCAodW5zaWduZWQg bG9uZylpbmZvLT5zaV9hZGRyLCAKKyAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWduYWwocGMsICho b3N0X3BoeXNfYWRkcl90KWluZm8tPnNpX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlzX3dyaXRlLCAmdWMtPnVjX3NpZ21hc2ssIHB1Yyk7CiB9CiAKQEAgLTEzNTcsNyArMTM1 Nyw3IEBACiAJaXNfd3JpdGUgPSAxOwogICAgIH0KIAotICAgIHJldHVybiBoYW5kbGVfY3B1X3Np Z25hbChwYywgKHVuc2lnbmVkIGxvbmcpaW5mby0+c2lfYWRkciwgCisgICAgcmV0dXJuIGhhbmRs ZV9jcHVfc2lnbmFsKHBjLCAoaG9zdF9waHlzX2FkZHJfdClpbmZvLT5zaV9hZGRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpc193cml0ZSwgJnVjLT51Y19zaWdtYXNrLCBwdWMpOwog fQogI2VsaWYgZGVmaW5lZChfX3NwYXJjX18pCkBAIC0xMzY4LDcgKzEzNjgsNyBAQAogICAgIHNp Z2luZm9fdCAqaW5mbyA9IHBpbmZvOwogICAgIHVpbnQzMl90ICpyZWdzID0gKHVpbnQzMl90ICop KGluZm8gKyAxKTsKICAgICB2b2lkICpzaWdtYXNrID0gKHJlZ3MgKyAyMCk7Ci0gICAgdW5zaWdu ZWQgbG9uZyBwYzsKKyAgICBob3N0X3BoeXNfYWRkcl90IHBjOwogICAgIGludCBpc193cml0ZTsK ICAgICB1aW50MzJfdCBpbnNuOwogICAgIApAQCAtMTM5MCw3ICsxMzkwLDcgQEAKIAlicmVhazsK ICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGhhbmRsZV9jcHVfc2lnbmFsKHBjLCAodW5zaWdu ZWQgbG9uZylpbmZvLT5zaV9hZGRyLCAKKyAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWduYWwocGMs IChob3N0X3BoeXNfYWRkcl90KWluZm8tPnNpX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzX3dyaXRlLCBzaWdtYXNrLCBOVUxMKTsKIH0KIApAQCAtMTQwMSwxMyArMTQwMSwx MyBAQAogewogICAgIHNpZ2luZm9fdCAqaW5mbyA9IHBpbmZvOwogICAgIHN0cnVjdCB1Y29udGV4 dCAqdWMgPSBwdWM7Ci0gICAgdW5zaWduZWQgbG9uZyBwYzsKKyAgICBob3N0X3BoeXNfYWRkcl90 IHBjOwogICAgIGludCBpc193cml0ZTsKICAgICAKICAgICBwYyA9IHVjLT51Y19tY29udGV4dC5n cmVnc1tSMTVdOwogICAgIC8qIFhYWDogY29tcHV0ZSBpc193cml0ZSAqLwogICAgIGlzX3dyaXRl ID0gMDsKLSAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWduYWwocGMsICh1bnNpZ25lZCBsb25nKWlu Zm8tPnNpX2FkZHIsIAorICAgIHJldHVybiBoYW5kbGVfY3B1X3NpZ25hbChwYywgKGhvc3RfcGh5 c19hZGRyX3QpaW5mby0+c2lfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNf d3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1Yy0+dWNfc2lnbWFzaywgcHVj KTsKIH0KQEAgLTE0MTksMTMgKzE0MTksMTMgQEAKIHsKICAgICBzaWdpbmZvX3QgKmluZm8gPSBw aW5mbzsKICAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotICAgIHVuc2lnbmVkIGxvbmcg cGM7CisgICAgaG9zdF9waHlzX2FkZHJfdCBwYzsKICAgICBpbnQgaXNfd3JpdGU7CiAgICAgCiAg ICAgcGMgPSB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbMTZdOwogICAgIC8qIFhYWDogY29tcHV0ZSBp c193cml0ZSAqLwogICAgIGlzX3dyaXRlID0gMDsKLSAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWdu YWwocGMsICh1bnNpZ25lZCBsb25nKWluZm8tPnNpX2FkZHIsIAorICAgIHJldHVybiBoYW5kbGVf Y3B1X3NpZ25hbChwYywgKGhvc3RfcGh5c19hZGRyX3QpaW5mby0+c2lfYWRkciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXNfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ1Yy0+dWNfc2lnbWFzaywgcHVjKTsKIH0KQEAgLTE0NDEsNyArMTQ0MSw3IEBACiB7CiAg ICAgc2lnaW5mb190ICppbmZvID0gcGluZm87CiAgICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1 YzsKLSAgICB1bnNpZ25lZCBsb25nIGlwOworICAgIGhvc3RfcGh5c19hZGRyX3QgaXA7CiAgICAg aW50IGlzX3dyaXRlID0gMDsKIAogICAgIGlwID0gdWMtPnVjX21jb250ZXh0LnNjX2lwOwpAQCAt MTQ1OSw3ICsxNDU5LDcgQEAKICAgICAgIGRlZmF1bHQ6CiAJICBicmVhazsKICAgICB9Ci0gICAg cmV0dXJuIGhhbmRsZV9jcHVfc2lnbmFsKGlwLCAodW5zaWduZWQgbG9uZylpbmZvLT5zaV9hZGRy LAorICAgIHJldHVybiBoYW5kbGVfY3B1X3NpZ25hbChpcCwgKGhvc3RfcGh5c19hZGRyX3QpaW5m by0+c2lfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfd3JpdGUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZ1Yy0+dWNfc2lnbWFzaywgcHVjKTsKIH0KQEAgLTE0 NzEsMTMgKzE0NzEsMTMgQEAKIHsKICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKICAgICBz dHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotICAgIHVuc2lnbmVkIGxvbmcgcGM7CisgICAgaG9z dF9waHlzX2FkZHJfdCBwYzsKICAgICBpbnQgaXNfd3JpdGU7CiAgICAgCiAgICAgcGMgPSB1Yy0+ dWNfbWNvbnRleHQucHN3LmFkZHI7CiAgICAgLyogWFhYOiBjb21wdXRlIGlzX3dyaXRlICovCiAg ICAgaXNfd3JpdGUgPSAwOwotICAgIHJldHVybiBoYW5kbGVfY3B1X3NpZ25hbChwYywgKHVuc2ln bmVkIGxvbmcpaW5mby0+c2lfYWRkciwgCisgICAgcmV0dXJuIGhhbmRsZV9jcHVfc2lnbmFsKHBj LCAoaG9zdF9waHlzX2FkZHJfdClpbmZvLT5zaV9hZGRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpc193cml0ZSwgJnVjLT51Y19zaWdtYXNrLCBwdWMpOwogfQogCkBAIC0xNDkzLDcg KzE0OTMsNyBAQAogICAgIAogICAgIC8qIFhYWDogY29tcHV0ZSBpc193cml0ZSAqLwogICAgIGlz X3dyaXRlID0gMDsKLSAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWduYWwocGMsICh1bnNpZ25lZCBs b25nKWluZm8tPnNpX2FkZHIsIAorICAgIHJldHVybiBoYW5kbGVfY3B1X3NpZ25hbChwYywgKGhv c3RfcGh5c19hZGRyX3QpaW5mby0+c2lfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXNfd3JpdGUsICZ1Yy0+dWNfc2lnbWFzaywgcHVjKTsKIH0KIApJbmRleDogcWVtdS9leGVj LWFsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9leGVjLWFsbC5oCTIwMDctMDgtMDQgMTA6 Mzc6MzQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2V4ZWMtYWxsLmgJMjAwNy0wOC0xNCAxNDoz MzozOS4wMDAwMDAwMDAgKzAwMDAKQEAgLTg3LDE2ICs4NywxNiBAQAogaW50IGNwdV9nZW5fY29k ZShDUFVTdGF0ZSAqZW52LCBzdHJ1Y3QgVHJhbnNsYXRpb25CbG9jayAqdGIsCiAgICAgICAgICAg ICAgICAgIGludCBtYXhfY29kZV9zaXplLCBpbnQgKmdlbl9jb2RlX3NpemVfcHRyKTsKIGludCBj cHVfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgVHJhbnNsYXRpb25CbG9jayAqdGIsIAotICAgICAgICAg ICAgICAgICAgICAgIENQVVN0YXRlICplbnYsIHVuc2lnbmVkIGxvbmcgc2VhcmNoZWRfcGMsCisg ICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgKmVudiwgaG9zdF9waHlzX2FkZHJfdCBzZWFy Y2hlZF9wYywKICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWMpOwogaW50IGNwdV9nZW5f Y29kZV9jb3B5KENQVVN0YXRlICplbnYsIHN0cnVjdCBUcmFuc2xhdGlvbkJsb2NrICp0YiwKICAg ICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2NvZGVfc2l6ZSwgaW50ICpnZW5fY29kZV9zaXpl X3B0cik7CiBpbnQgY3B1X3Jlc3RvcmVfc3RhdGVfY29weShzdHJ1Y3QgVHJhbnNsYXRpb25CbG9j ayAqdGIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgKmVudiwgdW5zaWdu ZWQgbG9uZyBzZWFyY2hlZF9wYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVN0YXRl ICplbnYsIGhvc3RfcGh5c19hZGRyX3Qgc2VhcmNoZWRfcGMsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpwdWMpOwogdm9pZCBjcHVfcmVzdW1lX2Zyb21fc2lnbmFsKENQVVN0YXRl ICplbnYxLCB2b2lkICpwdWMpOwogdm9pZCBjcHVfZXhlY19pbml0KENQVVN0YXRlICplbnYpOwot aW50IHBhZ2VfdW5wcm90ZWN0KHRhcmdldF91bG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHBj LCB2b2lkICpwdWMpOworaW50IHBhZ2VfdW5wcm90ZWN0KHRhcmdldF91bG9uZyBhZGRyZXNzLCBo b3N0X3BoeXNfYWRkcl90IHBjLCB2b2lkICpwdWMpOwogdm9pZCB0Yl9pbnZhbGlkYXRlX3BoeXNf cGFnZV9yYW5nZSh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBlbmQsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNfY3B1X3dyaXRlX2FjY2Vzcyk7CiB2 b2lkIHRiX2ludmFsaWRhdGVfcGFnZV9yYW5nZSh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91 bG9uZyBlbmQpOwpAQCAtMjE0LDcgKzIxNCw3IEBACiAJICAgICh0bXAgJiBUQl9KTVBfQUREUl9N QVNLKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHRiX3BoeXNfaGFzaF9mdW5j KHVuc2lnbmVkIGxvbmcgcGMpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0Yl9waHlzX2hh c2hfZnVuYyhob3N0X3BoeXNfYWRkcl90IHBjKQogewogICAgIHJldHVybiBwYyAmIChDT0RFX0dF Tl9QSFlTX0hBU0hfU0laRSAtIDEpOwogfQpAQCAtMjU4LDIyICsyNTgsMjIgQEAKICNlbmRpZgog CiBzdGF0aWMgaW5saW5lIHZvaWQgdGJfc2V0X2ptcF90YXJnZXQoVHJhbnNsYXRpb25CbG9jayAq dGIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuLCB1bnNpZ25l ZCBsb25nIGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4s IGhvc3RfcGh5c19hZGRyX3QgYWRkcikKIHsKLSAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKKyAg ICBob3N0X3BoeXNfYWRkcl90IG9mZnNldDsKIAogICAgIG9mZnNldCA9IHRiLT50Yl9qbXBfb2Zm c2V0W25dOwotICAgIHRiX3NldF9qbXBfdGFyZ2V0MSgodW5zaWduZWQgbG9uZykodGItPnRjX3B0 ciArIG9mZnNldCksIGFkZHIpOworICAgIHRiX3NldF9qbXBfdGFyZ2V0MSgoaG9zdF9waHlzX2Fk ZHJfdCkodGItPnRjX3B0ciArIG9mZnNldCksIGFkZHIpOwogICAgIG9mZnNldCA9IHRiLT50Yl9q bXBfb2Zmc2V0W24gKyAyXTsKICAgICBpZiAob2Zmc2V0ICE9IDB4ZmZmZikKLSAgICAgICAgdGJf c2V0X2ptcF90YXJnZXQxKCh1bnNpZ25lZCBsb25nKSh0Yi0+dGNfcHRyICsgb2Zmc2V0KSwgYWRk cik7CisgICAgICAgIHRiX3NldF9qbXBfdGFyZ2V0MSgoaG9zdF9waHlzX2FkZHJfdCkodGItPnRj X3B0ciArIG9mZnNldCksIGFkZHIpOwogfQogCiAjZWxzZQogCiAvKiBzZXQgdGhlIGp1bXAgdGFy Z2V0ICovCiBzdGF0aWMgaW5saW5lIHZvaWQgdGJfc2V0X2ptcF90YXJnZXQoVHJhbnNsYXRpb25C bG9jayAqdGIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuLCB1 bnNpZ25lZCBsb25nIGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG4sIGhvc3RfcGh5c19hZGRyX3QgYWRkcikKIHsKICAgICB0Yi0+dGJfbmV4dFtuXSA9IGFk ZHI7CiB9CkBAIC0yODYsNyArMjg2LDcgQEAKICAgICAvKiBOT1RFOiB0aGlzIHRlc3QgaXMgb25s eSBuZWVkZWQgZm9yIHRocmVhZCBzYWZldHkgKi8KICAgICBpZiAoIXRiLT5qbXBfbmV4dFtuXSkg ewogICAgICAgICAvKiBwYXRjaCB0aGUgbmF0aXZlIGp1bXAgYWRkcmVzcyAqLwotICAgICAgICB0 Yl9zZXRfam1wX3RhcmdldCh0YiwgbiwgKHVuc2lnbmVkIGxvbmcpdGJfbmV4dC0+dGNfcHRyKTsK KyAgICAgICAgdGJfc2V0X2ptcF90YXJnZXQodGIsIG4sIChob3N0X3BoeXNfYWRkcl90KXRiX25l eHQtPnRjX3B0cik7CiAgICAgICAgIAogICAgICAgICAvKiBhZGQgaW4gVEIgam1wIGNpcmN1bGFy IGxpc3QgKi8KICAgICAgICAgdGItPmptcF9uZXh0W25dID0gdGJfbmV4dC0+am1wX2ZpcnN0OwpA QCAtMjk0LDcgKzI5NCw3IEBACiAgICAgfQogfQogCi1UcmFuc2xhdGlvbkJsb2NrICp0Yl9maW5k X3BjKHVuc2lnbmVkIGxvbmcgcGNfcHRyKTsKK1RyYW5zbGF0aW9uQmxvY2sgKnRiX2ZpbmRfcGMo aG9zdF9waHlzX2FkZHJfdCBwY19wdHIpOwogCiAjaWZuZGVmIG9mZnNldG9mCiAjZGVmaW5lIG9m ZnNldG9mKHR5cGUsIGZpZWxkKSAoKHNpemVfdCkgJigodHlwZSAqKTApLT5maWVsZCkKQEAgLTYx OSw3ICs2MTksNyBAQAogICAgICAgICBjcHVfYWJvcnQoZW52LCAiVHJ5aW5nIHRvIGV4ZWN1dGUg Y29kZSBvdXRzaWRlIFJBTSBvciBST00gYXQgMHgiIFRBUkdFVF9GTVRfbHggIlxuIiwgYWRkcik7 CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIGFkZHIgKyBlbnYtPnRsYl90YWJsZVtpc191c2Vy XVtpbmRleF0uYWRkZW5kIC0gKHVuc2lnbmVkIGxvbmcpcGh5c19yYW1fYmFzZTsKKyAgICByZXR1 cm4gYWRkciArIGVudi0+dGxiX3RhYmxlW2lzX3VzZXJdW2luZGV4XS5hZGRlbmQgLSAoaG9zdF9w aHlzX2FkZHJfdClwaHlzX3JhbV9iYXNlOwogfQogI2VuZGlmCiAKSW5kZXg6IHFlbXUvc29mdG1t dV9oZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc29mdG1tdV9oZWFkZXIuaAkyMDA3 LTA2LTI4IDA3OjM2OjIyLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zb2Z0bW11X2hlYWRlci5o CTIwMDctMDgtMTQgMTQ6MzM6MzkuMDAwMDAwMDAwICswMDAwCkBAIC0yNjksNyArMjY5LDcgQEAK ICAgICBpbnQgaW5kZXg7CiAgICAgUkVTX1RZUEUgcmVzOwogICAgIHRhcmdldF91bG9uZyBhZGRy OwotICAgIHVuc2lnbmVkIGxvbmcgcGh5c2FkZHI7CisgICAgaG9zdF9waHlzX2FkZHJfdCBwaHlz YWRkcjsKICAgICBpbnQgaXNfdXNlcjsKIAogICAgIGFkZHIgPSBwdHI7CkBAIC0yOTAsNyArMjkw LDcgQEAKIHsKICAgICBpbnQgcmVzLCBpbmRleDsKICAgICB0YXJnZXRfdWxvbmcgYWRkcjsKLSAg ICB1bnNpZ25lZCBsb25nIHBoeXNhZGRyOworICAgIGhvc3RfcGh5c19hZGRyX3QgcGh5c2FkZHI7 CiAgICAgaW50IGlzX3VzZXI7CiAKICAgICBhZGRyID0gcHRyOwpAQCAtMzE1LDcgKzMxNSw3IEBA CiB7CiAgICAgaW50IGluZGV4OwogICAgIHRhcmdldF91bG9uZyBhZGRyOwotICAgIHVuc2lnbmVk IGxvbmcgcGh5c2FkZHI7CisgICAgaG9zdF9waHlzX2FkZHJfdCBwaHlzYWRkcjsKICAgICBpbnQg aXNfdXNlcjsKIAogICAgIGFkZHIgPSBwdHI7CkluZGV4OiBxZW11L3NvZnRtbXVfdGVtcGxhdGUu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc29mdG1tdV90ZW1wbGF0ZS5oCTIwMDctMDYtMjgg MDc6MzY6MjIuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NvZnRtbXVfdGVtcGxhdGUuaAkyMDA3 LTA4LTE0IDE0OjMzOjM5LjAwMDAwMDAwMCArMDAwMApAQCAtMTkyLDcgKzE5Miw3IEBACiAKICAg ICBpbmRleCA9ICh0bGJfYWRkciA+PiBJT19NRU1fU0hJRlQpICYgKElPX01FTV9OQl9FTlRSSUVT IC0gMSk7CiAgICAgZW52LT5tZW1fd3JpdGVfdmFkZHIgPSB0bGJfYWRkcjsKLSAgICBlbnYtPm1l bV93cml0ZV9wYyA9ICh1bnNpZ25lZCBsb25nKXJldGFkZHI7CisgICAgZW52LT5tZW1fd3JpdGVf cGMgPSAoaG9zdF9waHlzX2FkZHJfdClyZXRhZGRyOwogI2lmIFNISUZUIDw9IDIKICAgICBpb19t ZW1fd3JpdGVbaW5kZXhdW1NISUZUXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2FkZHIsIHZh bCk7CiAjZWxzZQpJbmRleDogcWVtdS90cmFuc2xhdGUtYWxsLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL3RyYW5zbGF0ZS1hbGwuYwkyMDA3LTA2LTI4IDA3OjM2OjIyLjAwMDAwMDAwMCArMDAw MAorKysgcWVtdS90cmFuc2xhdGUtYWxsLmMJMjAwNy0wOC0xNCAxNDozMzozOS4wMDAwMDAwMDAg KzAwMDAKQEAgLTEwOSw3ICsxMDksNyBAQAogewogICAgIHVpbnQ4X3QgKmdlbl9jb2RlX3B0cjsK ICAgICBpbnQgYywgaTsKLSAgICB1bnNpZ25lZCBsb25nIGdlbl9jb2RlX2FkZHJbT1BDX0JVRl9T SVpFXTsKKyAgICBob3N0X3BoeXNfYWRkcl90IGdlbl9jb2RlX2FkZHJbT1BDX0JVRl9TSVpFXTsK ICAgICAKICAgICBpZiAobmJfZ2VuX2xhYmVscyA9PSAwKQogICAgICAgICByZXR1cm47CkBAIC0x MTksNyArMTE5LDcgQEAKICAgICBpID0gMDsKICAgICBmb3IoOzspIHsKICAgICAgICAgYyA9IG9w Y19idWZbaV07Ci0gICAgICAgIGdlbl9jb2RlX2FkZHJbaV0gPSh1bnNpZ25lZCBsb25nKWdlbl9j b2RlX3B0cjsKKyAgICAgICAgZ2VuX2NvZGVfYWRkcltpXSA9KGhvc3RfcGh5c19hZGRyX3QpZ2Vu X2NvZGVfcHRyOwogICAgICAgICBpZiAoYyA9PSBJTkRFWF9vcF9lbmQpCiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgZ2VuX2NvZGVfcHRyICs9IG9wY19jb3B5X3NpemVbY107CkBAIC0xODgs MTEgKzE4OCwxMSBAQAogLyogVGhlIGNwdSBzdGF0ZSBjb3JyZXNwb25kaW5nIHRvICdzZWFyY2hl ZF9wYycgaXMgcmVzdG9yZWQuIAogICovCiBpbnQgY3B1X3Jlc3RvcmVfc3RhdGUoVHJhbnNsYXRp b25CbG9jayAqdGIsIAotICAgICAgICAgICAgICAgICAgICAgIENQVVN0YXRlICplbnYsIHVuc2ln bmVkIGxvbmcgc2VhcmNoZWRfcGMsCisgICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgKmVu diwgaG9zdF9waHlzX2FkZHJfdCBzZWFyY2hlZF9wYywKICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpwdWMpCiB7CiAgICAgaW50IGosIGM7Ci0gICAgdW5zaWduZWQgbG9uZyB0Y19wdHI7Cisg ICAgaG9zdF9waHlzX2FkZHJfdCB0Y19wdHI7CiAgICAgdWludDE2X3QgKm9wY19wdHI7CiAKICNp ZmRlZiBVU0VfQ09ERV9DT1BZCkBAIC0yMDQsNyArMjA0LDcgQEAKICAgICAgICAgcmV0dXJuIC0x OwogICAgIAogICAgIC8qIGZpbmQgb3BjIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gc2VhcmNoX3Bj ICovCi0gICAgdGNfcHRyID0gKHVuc2lnbmVkIGxvbmcpdGItPnRjX3B0cjsKKyAgICB0Y19wdHIg PSAoaG9zdF9waHlzX2FkZHJfdCl0Yi0+dGNfcHRyOwogICAgIGlmIChzZWFyY2hlZF9wYyA8IHRj X3B0cikKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGogPSAwOwpJbmRleDogcWVtdS9ody9zdW40 dS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zdW40dS5jCTIwMDctMDctMTEgMTk6NTA6 NDIuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3N1bjR1LmMJMjAwNy0wOC0xNCAxNDozMzoz OS4wMDAwMDAwMDAgKzAwMDAKQEAgLTMzMSwxNyArMzMxLDE5IEBACiBzdGF0aWMgZmRjdHJsX3Qg KmZsb3BweV9jb250cm9sbGVyOwogCiAvKiBTdW40dSBoYXJkd2FyZSBpbml0aWFsaXNhdGlvbiAq Lwotc3RhdGljIHZvaWQgc3VuNHVfaW5pdChpbnQgcmFtX3NpemUsIGludCB2Z2FfcmFtX3NpemUs IGludCBib290X2RldmljZSwKLSAgICAgICAgICAgICBEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBj aGFyICoqZmRfZmlsZW5hbWUsIGludCBzbmFwc2hvdCwKLSAgICAgICAgICAgICBjb25zdCBjaGFy ICprZXJuZWxfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmtlcm5lbF9jbWRsaW5lLAotICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwgY29uc3QgY2hhciAqY3B1X21vZGVsKQor c3RhdGljIHZvaWQgc3VuNHVfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgcmFtX3NpemUsIGludCB2 Z2FfcmFtX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBib290X2RldmljZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgRGlzcGxheVN0YXRlICpkcywgY29uc3QgY2hhciAqKmZkX2Zp bGVuYW1lLCBpbnQgc25hcHNob3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg Kmtlcm5lbF9maWxlbmFtZSwgY29uc3QgY2hhciAqa2VybmVsX2NtZGxpbmUsCisgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwgY29uc3QgY2hhciAqY3B1 X21vZGVsKQogewogICAgIENQVVN0YXRlICplbnY7CiAgICAgY2hhciBidWZbMTAyNF07CiAgICAg bTQ4dDU5X3QgKm52cmFtOwogICAgIGludCByZXQsIGxpbnV4X2Jvb3Q7CiAgICAgdW5zaWduZWQg aW50IGk7Ci0gICAgbG9uZyBwcm9tX29mZnNldCwgaW5pdHJkX3NpemUsIGtlcm5lbF9zaXplOwor ICAgIHJhbV9hZGRyX3QgcHJvbV9vZmZzZXQ7CisgICAgbG9uZyBpbml0cmRfc2l6ZSwga2VybmVs X3NpemU7CiAgICAgUENJQnVzICpwY2lfYnVzOwogICAgIGNvbnN0IHNwYXJjX2RlZl90ICpkZWY7 CiAgICAgUUVNVUJIICpiaDsKSW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHFlbXUub3JpZy90YXJnZXQtc3BhcmMvb3BfaGVscGVyLmMJMjAwNy0wOC0x MSAxOTo0NzoyMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL29wX2hlbHBl ci5jCTIwMDctMDgtMTQgMTQ6MzY6MDUuMDAwMDAwMDAwICswMDAwCkBAIC0xMDY4LDcgKzEwNjgs NyBAQAogewogICAgIFRyYW5zbGF0aW9uQmxvY2sgKnRiOwogICAgIGludCByZXQ7Ci0gICAgdW5z aWduZWQgbG9uZyBwYzsKKyAgICBob3N0X3BoeXNfYWRkcl90IHBjOwogICAgIENQVVN0YXRlICpz YXZlZF9lbnY7CiAKICAgICAvKiBYWFg6IGhhY2sgdG8gcmVzdG9yZSBlbnYgaW4gYWxsIGNhc2Vz LCBldmVuIGlmIG5vdCBjYWxsZWQgZnJvbQpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKICAgICBpZiAo cmV0KSB7CiAgICAgICAgIGlmIChyZXRhZGRyKSB7CiAgICAgICAgICAgICAvKiBub3cgd2UgaGF2 ZSBhIHJlYWwgY3B1IGZhdWx0ICovCi0gICAgICAgICAgICBwYyA9ICh1bnNpZ25lZCBsb25nKXJl dGFkZHI7CisgICAgICAgICAgICBwYyA9IChob3N0X3BoeXNfYWRkcl90KXJldGFkZHI7CiAgICAg ICAgICAgICB0YiA9IHRiX2ZpbmRfcGMocGMpOwogICAgICAgICAgICAgaWYgKHRiKSB7CiAgICAg ICAgICAgICAgICAgLyogdGhlIFBDIGlzIGluc2lkZSB0aGUgdHJhbnNsYXRlZCBjb2RlLiBJdCBt ZWFucyB0aGF0IHdlIGhhdmUKSW5kZXg6IHFlbXUvaHcvcGMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11 Lm9yaWcvaHcvcGMuYwkyMDA3LTA2LTI4IDA3OjM2OjIyLjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9ody9wYy5jCTIwMDctMDgtMTQgMTQ6MzM6MzkuMDAwMDAwMDAwICswMDAwCkBAIC02NTksNyAr NjU5LDggQEAKIH0KIAogLyogUEMgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gKi8KLXN0YXRpYyB2 b2lkIHBjX2luaXQxKGludCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwgaW50IGJvb3RfZGV2 aWNlLAorc3RhdGljIHZvaWQgcGNfaW5pdDEoaG9zdF9waHlzX2FkZHJfdCByYW1fc2l6ZSwgaW50 IHZnYV9yYW1fc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBib290X2RldmljZSwKICAg ICAgICAgICAgICAgICAgICAgIERpc3BsYXlTdGF0ZSAqZHMsIGNvbnN0IGNoYXIgKipmZF9maWxl bmFtZSwgaW50IHNuYXBzaG90LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2Vy bmVsX2ZpbGVuYW1lLCBjb25zdCBjaGFyICprZXJuZWxfY21kbGluZSwKICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwKQEAgLTkzMyw3ICs5MzQsOCBAQAog I2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHBjX2luaXRfcGNpKGludCByYW1fc2l6ZSwgaW50IHZn YV9yYW1fc2l6ZSwgaW50IGJvb3RfZGV2aWNlLAorc3RhdGljIHZvaWQgcGNfaW5pdF9wY2koaG9z dF9waHlzX2FkZHJfdCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGludCBib290X2RldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgIERpc3Bs YXlTdGF0ZSAqZHMsIGNvbnN0IGNoYXIgKipmZF9maWxlbmFtZSwgCiAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc25hcHNob3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqa2VybmVsX2ZpbGVuYW1lLCAKQEAgLTk0Nyw3ICs5NDksOCBAQAogICAgICAgICAgICAgIGlu aXRyZF9maWxlbmFtZSwgMSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBjX2luaXRfaXNhKGludCByYW1f c2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwgaW50IGJvb3RfZGV2aWNlLAorc3RhdGljIHZvaWQgcGNf aW5pdF9pc2EoaG9zdF9waHlzX2FkZHJfdCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIGludCBib290X2RldmljZSwKICAgICAgICAgICAgICAgICAg ICAgICAgIERpc3BsYXlTdGF0ZSAqZHMsIGNvbnN0IGNoYXIgKipmZF9maWxlbmFtZSwgCiAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgc25hcHNob3QsIAogICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqa2VybmVsX2ZpbGVuYW1lLCAK ------=_Part_167428_25305390.1187103010732--