From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:48173 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933816AbcKNEGX (ORCPT ); Sun, 13 Nov 2016 23:06:23 -0500 Message-ID: <1479096374.3755.14.camel@decadent.org.uk> Subject: Re: [PATCH 3.16 000/346] 3.16.39-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Mon, 14 Nov 2016 04:06:14 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-hbgDXxCiQCIQyAGDPFUG" Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: --=-hbgDXxCiQCIQyAGDPFUG Content-Type: multipart/mixed; boundary="=-1hzrkK4Muj1bqrycccKR" --=-1hzrkK4Muj1bqrycccKR Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.16.39-rc1 relative to 3.16.38. Ben. --=20 Ben Hutchings If more than one person is responsible for a bug, no one is at fault. --=-1hzrkK4Muj1bqrycccKR Content-Disposition: attachment; filename="linux-3.16.39-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.16.39-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZyBiL0RvY3VtZW50 YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZwppbmRleCAwZjNhMTM5MGJmMDAuLjRmNjVhZTIwOWE2 NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb3J0aW5nCisrKyBiL0Rv Y3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZwpAQCAtMjg3LDggKzI4Nyw4IEBAIGltcGxl bWVudGluZyBvbi1kaXNrIHNpemUgY2hhbmdlcy4gIFN0YXJ0IHdpdGggYSBjb3B5IG9mIHRoZSBv bGQgaW5vZGVfc2V0YXR0cgogYW5kIHZtdHJ1bmNhdGUsIGFuZCB0aGUgcmVvcmRlciB0aGUgdm10 cnVuY2F0ZSArIGZvb2ZzX3ZtdHJ1bmNhdGUgc2VxdWVuY2UgdG8KIGJlIGluIG9yZGVyIG9mIHpl cm9pbmcgYmxvY2tzIHVzaW5nIGJsb2NrX3RydW5jYXRlX3BhZ2Ugb3Igc2ltaWxhciBoZWxwZXJz LAogc2l6ZSB1cGRhdGUgYW5kIG9uIGZpbmFsbHkgb24tZGlzayB0cnVuY2F0aW9uIHdoaWNoIHNo b3VsZCBub3QgZmFpbC4KLWlub2RlX2NoYW5nZV9vayBub3cgaW5jbHVkZXMgdGhlIHNpemUgY2hl Y2tzIGZvciBBVFRSX1NJWkUgYW5kIG11c3QgYmUgY2FsbGVkCi1pbiB0aGUgYmVnaW5uaW5nIG9m IC0+c2V0YXR0ciB1bmNvbmRpdGlvbmFsbHkuCitzZXRhdHRyX3ByZXBhcmUgKHdoaWNoIHVzZWQg dG8gYmUgaW5vZGVfY2hhbmdlX29rKSBub3cgaW5jbHVkZXMgdGhlIHNpemUgY2hlY2tzCitmb3Ig QVRUUl9TSVpFIGFuZCBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgYmVnaW5uaW5nIG9mIC0+c2V0YXR0 ciB1bmNvbmRpdGlvbmFsbHkuCiAKIFttYW5kYXRvcnldCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50 YXRpb24vbW9kdWxlLXNpZ25pbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9tb2R1bGUtc2lnbmluZy50 eHQKaW5kZXggMDljMjM4MmFkMDU1Li5lM2FmOGMyN2VlZjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50 YXRpb24vbW9kdWxlLXNpZ25pbmcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbW9kdWxlLXNpZ25p bmcudHh0CkBAIC0yMzksMyArMjM5LDkgQEAgU2luY2UgdGhlIHByaXZhdGUga2V5IGlzIHVzZWQg dG8gc2lnbiBtb2R1bGVzLCB2aXJ1c2VzIGFuZCBtYWx3YXJlIGNvdWxkIHVzZQogdGhlIHByaXZh dGUga2V5IHRvIHNpZ24gbW9kdWxlcyBhbmQgY29tcHJvbWlzZSB0aGUgb3BlcmF0aW5nIHN5c3Rl bS4gIFRoZQogcHJpdmF0ZSBrZXkgbXVzdCBiZSBlaXRoZXIgZGVzdHJveWVkIG9yIG1vdmVkIHRv IGEgc2VjdXJlIGxvY2F0aW9uIGFuZCBub3Qga2VwdAogaW4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUg a2VybmVsIHNvdXJjZSB0cmVlLgorCitJZiB5b3UgdXNlIHRoZSBzYW1lIHByaXZhdGUga2V5IHRv IHNpZ24gbW9kdWxlcyBmb3IgbXVsdGlwbGUga2VybmVsCitjb25maWd1cmF0aW9ucywgeW91IG11 c3QgZW5zdXJlIHRoYXQgdGhlIG1vZHVsZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGlzCitzdWZmaWNp ZW50IHRvIHByZXZlbnQgbG9hZGluZyBhIG1vZHVsZSBpbnRvIGEgZGlmZmVyZW50IGtlcm5lbC4g IEVpdGhlcgorc2V0IENPTkZJR19NT0RWRVJTSU9OUz15IG9yIGVuc3VyZSB0aGF0IGVhY2ggY29u ZmlndXJhdGlvbiBoYXMgYSBkaWZmZXJlbnQKK2tlcm5lbCByZWxlYXNlIHN0cmluZyBieSBjaGFu Z2luZyBFWFRSQVZFUlNJT04gb3IgQ09ORklHX0xPQ0FMVkVSU0lPTi4KZGlmZiAtLWdpdCBhL01h a2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMzcwODNmYmM4Nzg0Li40MzhhMGNlY2NhYWMgMTAwNjQ0 Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEsNyBAQAogVkVSU0lPTiA9 IDMKIFBBVENITEVWRUwgPSAxNgotU1VCTEVWRUwgPSAzOAotRVhUUkFWRVJTSU9OID0KK1NVQkxF VkVMID0gMzkKK0VYVFJBVkVSU0lPTiA9IC1yYzEKIE5BTUUgPSBNdXNldW0gb2YgRmlzaGllZ29v ZGllcwogCiAjICpET0NVTUVOVEFUSU9OKgpkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9pbmNsdWRl L2FzbS91YWNjZXNzLmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCA3 NjZmZGZkZTJiN2EuLjZlOWQyN2FkNTEwMyAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9pbmNsdWRl L2FzbS91YWNjZXNzLmgKKysrIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAg LTM3MSwxNCArMzcxLDYgQEAgX19jb3B5X3RvZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNv bnN0IHZvaWQgKmZyb20sIGxvbmcgbGVuKQogCXJldHVybiBfX2N1X2xlbjsKIH0KIAotZXh0ZXJu IGlubGluZSBsb25nCi1fX2NvcHlfdG9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZy b20sIGxvbmcgbGVuLCBjb25zdCB2b2lkIF9fdXNlciAqdmFsaWRhdGUpCi17Ci0JaWYgKF9fYWNj ZXNzX29rKCh1bnNpZ25lZCBsb25nKXZhbGlkYXRlLCBsZW4sIGdldF9mcygpKSkKLQkJbGVuID0g X19jb3B5X3RvZnJvbV91c2VyX25vY2hlY2sodG8sIGZyb20sIGxlbik7Ci0JcmV0dXJuIGxlbjsK LX0KLQogI2RlZmluZSBfX2NvcHlfdG9fdXNlcih0byxmcm9tLG4pCQkJCQlcCiAoewkJCQkJCQkJ CVwKIAlfX2Noa191c2VyX3B0cih0byk7CQkJCQkJXApAQCAtMzkzLDE3ICszODUsMjIgQEAgX19j b3B5X3RvZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCBsb25nIGxlbiwgY29u c3Qgdm9pZCBfX3VzZXIgKnZhbGkKICNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWMgX19j b3B5X3RvX3VzZXIKICNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyBfX2NvcHlfZnJv bV91c2VyCiAKLQogZXh0ZXJuIGlubGluZSBsb25nCiBjb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIg KnRvLCBjb25zdCB2b2lkICpmcm9tLCBsb25nIG4pCiB7Ci0JcmV0dXJuIF9fY29weV90b2Zyb21f dXNlcigoX19mb3JjZSB2b2lkICopdG8sIGZyb20sIG4sIHRvKTsKKwlpZiAobGlrZWx5KF9fYWNj ZXNzX29rKCh1bnNpZ25lZCBsb25nKXRvLCBuLCBnZXRfZnMoKSkpKQorCQluID0gX19jb3B5X3Rv ZnJvbV91c2VyX25vY2hlY2soKF9fZm9yY2Ugdm9pZCAqKXRvLCBmcm9tLCBuKTsKKwlyZXR1cm4g bjsKIH0KIAogZXh0ZXJuIGlubGluZSBsb25nCiBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29u c3Qgdm9pZCBfX3VzZXIgKmZyb20sIGxvbmcgbikKIHsKLQlyZXR1cm4gX19jb3B5X3RvZnJvbV91 c2VyKHRvLCAoX19mb3JjZSB2b2lkICopZnJvbSwgbiwgZnJvbSk7CisJaWYgKGxpa2VseShfX2Fj Y2Vzc19vaygodW5zaWduZWQgbG9uZylmcm9tLCBuLCBnZXRfZnMoKSkpKQorCQluID0gX19jb3B5 X3RvZnJvbV91c2VyX25vY2hlY2sodG8sIChfX2ZvcmNlIHZvaWQgKilmcm9tLCBuKTsKKwllbHNl CisJCW1lbXNldCh0bywgMCwgbik7CisJcmV0dXJuIG47CiB9CiAKIGV4dGVybiB2b2lkIF9fZG9f Y2xlYXJfdXNlcih2b2lkKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJjL2luY2x1ZGUvYXNtL2lycWZs YWdzLmggYi9hcmNoL2FyYy9pbmNsdWRlL2FzbS9pcnFmbGFncy5oCmluZGV4IGNiN2VmYzI5ZjE2 Zi4uZDk4ZDNiZDVlY2Y2IDEwMDY0NAotLS0gYS9hcmNoL2FyYy9pbmNsdWRlL2FzbS9pcnFmbGFn cy5oCisrKyBiL2FyY2gvYXJjL2luY2x1ZGUvYXNtL2lycWZsYWdzLmgKQEAgLTE3OSwxMCArMTc5 LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX3VubWFza19pcnEodW5zaWduZWQgaW50IGly cSkKIC5lbmRtCiAKIC5tYWNybyBJUlFfRU5BQkxFICBzY3JhdGNoCisJVFJBQ0VfQVNNX0lSUV9F TkFCTEUKIAlscglcc2NyYXRjaCwgW3N0YXR1czMyXQogCW9yCVxzY3JhdGNoLCBcc2NyYXRjaCwg KFNUQVRVU19FMV9NQVNLIHwgU1RBVFVTX0UyX01BU0spCiAJZmxhZwlcc2NyYXRjaAotCVRSQUNF X0FTTV9JUlFfRU5BQkxFCiAuZW5kbQogCiAjZW5kaWYJLyogX19BU1NFTUJMWV9fICovCmRpZmYg LS1naXQgYS9hcmNoL2FyYy9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL2FyYy9pbmNsdWRl L2FzbS91YWNjZXNzLmgKaW5kZXggMzBjOWJhZmZhOTZmLi4wODc3MGM3NTA2OTYgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL2FyYy9pbmNsdWRl L2FzbS91YWNjZXNzLmgKQEAgLTgzLDcgKzgzLDEwIEBACiAJIjI6CTtub3BcbiIJCQkJXAogCSIJ LnNlY3Rpb24gLmZpeHVwLCBcImF4XCJcbiIJXAogCSIJLmFsaWduIDRcbiIJCQlcCi0JIjM6CW1v diAlMCwgJTNcbiIJCQlcCisJIjM6CSMgcmV0dXJuIC1FRkFVTFRcbiIJCVwKKwkiCW1vdiAlMCwg JTNcbiIJCQlcCisJIgkjIHplcm8gb3V0IGRzdCBwdHJcbiIJCVwKKwkiCW1vdiAlMSwgIDBcbiIJ CQlcCiAJIglqICAgMmJcbiIJCQlcCiAJIgkucHJldmlvdXNcbiIJCQlcCiAJIgkuc2VjdGlvbiBf X2V4X3RhYmxlLCBcImFcIlxuIglcCkBAIC0xMDEsNyArMTA0LDExIEBACiAJIjI6CTtub3BcbiIJ CQkJXAogCSIJLnNlY3Rpb24gLmZpeHVwLCBcImF4XCJcbiIJXAogCSIJLmFsaWduIDRcbiIJCQlc Ci0JIjM6CW1vdiAlMCwgJTNcbiIJCQlcCisJIjM6CSMgcmV0dXJuIC1FRkFVTFRcbiIJCVwKKwki CW1vdiAlMCwgJTNcbiIJCQlcCisJIgkjIHplcm8gb3V0IGRzdCBwdHJcbiIJCVwKKwkiCW1vdiAl MSwgIDBcbiIJCQlcCisJIgltb3YgJVIxLCAwXG4iCQkJXAogCSIJaiAgIDJiXG4iCQkJXAogCSIJ LnByZXZpb3VzXG4iCQkJXAogCSIJLnNlY3Rpb24gX19leF90YWJsZSwgXCJhXCJcbiIJXApkaWZm IC0tZ2l0IGEvYXJjaC9hcmMvbW0vdGxiZXguUyBiL2FyY2gvYXJjL21tL3RsYmV4LlMKaW5kZXgg NzliZmM4MTM1OGM5Li40MTA0M2YyMDRmYTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJjL21tL3RsYmV4 LlMKKysrIGIvYXJjaC9hcmMvbW0vdGxiZXguUwpAQCAtODksNyArODksNyBAQCBleF9zYXZlZF9y ZWcxOgogI2lmZGVmIENPTkZJR19TTVAKIAlzciAgcjAsIFtBUkNfUkVHX1NDUkFUQ0hfREFUQTBd CTsgZnJlZXVwIHIwIHRvIGNvZGUgd2l0aAogCUdFVF9DUFVfSUQgIHIwCQkJOyBnZXQgdG8gcGVy IGNwdSBzY3JhdGNoIG1lbSwKLQlsc2wgcjAsIHIwLCBMMV9DQUNIRV9TSElGVAk7IGNhY2hlIGxp bmUgd2lkZSBwZXIgY3B1CisJYXNsIHIwLCByMCwgTDFfQ0FDSEVfU0hJRlQJOyBjYWNoZSBsaW5l IHdpZGUgcGVyIGNwdQogCWFkZCByMCwgQGV4X3NhdmVkX3JlZzEsIHIwCiAjZWxzZQogCXN0ICAg IHIwLCBbQGV4X3NhdmVkX3JlZzFdCkBAIC0xMDgsNyArMTA4LDcgQEAgZXhfc2F2ZWRfcmVnMToK IC5tYWNybyBUTEJNSVNTX1JFU1RPUkVfUkVHUwogI2lmZGVmIENPTkZJR19TTVAKIAlHRVRfQ1BV X0lEICByMAkJCTsgZ2V0IHRvIHBlciBjcHUgc2NyYXRjaCBtZW0KLQlsc2wgcjAsIHIwLCBMMV9D QUNIRV9TSElGVAk7IGVhY2ggaXMgY2FjaGUgbGluZSB3aWRlCisJYXNsIHIwLCByMCwgTDFfQ0FD SEVfU0hJRlQJOyBlYWNoIGlzIGNhY2hlIGxpbmUgd2lkZQogCWFkZCByMCwgQGV4X3NhdmVkX3Jl ZzEsIHIwCiAJbGRfcyAgcjMsIFtyMCwxMl0KIAlsZF9zICByMiwgW3IwLCA4XQpAQCAtMjIwLDcg KzIyMCw3IEBAIGV4X3NhdmVkX3JlZzE6CiAKIC5tYWNybyBDT05WX1BURV9UT19UTEIKIAlhbmQg ICAgcjMsIHIwLCBQVEVfQklUU19SV1gJOyAgICAgICByIHcgeAotCWxzbCAgICByMiwgcjMsIDMJ CTsgciB3IHggMCAwIDAKKwlhc2wgICAgcjIsIHIzLCAzCQk7IHIgdyB4IDAgMCAwCiAJYW5kLmYg IDAsICByMCwgX1BBR0VfR0xPQkFMCiAJb3IueiAgIHIyLCByMiwgcjMJCTsgciB3IHggciB3IHgK IApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9jb21wcmVzc2VkL2hlYWQuUyBiL2FyY2gvYXJt L2Jvb3QvY29tcHJlc3NlZC9oZWFkLlMKaW5kZXggZDM1NjkyYjYzY2ZkLi42MjRiZDNlYTBhZGYg MTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2Jvb3QvY29tcHJlc3NlZC9oZWFkLlMKKysrIGIvYXJjaC9h cm0vYm9vdC9jb21wcmVzc2VkL2hlYWQuUwpAQCAtNzI2LDcgKzcyNiw3IEBAIF9fYXJtdjdfbW11 X2NhY2hlX29uOgogCQlvcnJuZQlyMCwgcjAsICMxCQlAIE1NVSBlbmFibGVkCiAJCW1vdm5lCXIx LCAjMHhmZmZmZmZmZAkJQCBkb21haW4gMCA9IGNsaWVudAogCQliaWMgICAgIHI2LCByNiwgIzEg PDwgMzEgICAgICAgIEAgMzItYml0IHRyYW5zbGF0aW9uIHN5c3RlbQotCQliaWMgICAgIHI2LCBy NiwgIzMgPDwgMCAgICAgICAgIEAgdXNlIG9ubHkgdHRicjAKKwkJYmljICAgICByNiwgcjYsICMo NyA8PCAwKSB8ICgxIDw8IDQpCUAgdXNlIG9ubHkgdHRicjAKIAkJbWNybmUJcDE1LCAwLCByMywg YzIsIGMwLCAwCUAgbG9hZCBwYWdlIHRhYmxlIHBvaW50ZXIKIAkJbWNybmUJcDE1LCAwLCByMSwg YzMsIGMwLCAwCUAgbG9hZCBkb21haW4gYWNjZXNzIGNvbnRyb2wKIAkJbWNybmUgICBwMTUsIDAs IHI2LCBjMiwgYzAsIDIgICBAIGxvYWQgdHRiIGNvbnRyb2wKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L2Jvb3QvZHRzL2tpcmt3b29kLWliNjJ4MC5kdHMgYi9hcmNoL2FybS9ib290L2R0cy9raXJrd29v ZC1pYjYyeDAuZHRzCmluZGV4IGJmYTVlZGRlMTc5Yy4uMmMxZTdmMDkyMDVmIDEwMDY0NAotLS0g YS9hcmNoL2FybS9ib290L2R0cy9raXJrd29vZC1pYjYyeDAuZHRzCisrKyBiL2FyY2gvYXJtL2Jv b3QvZHRzL2tpcmt3b29kLWliNjJ4MC5kdHMKQEAgLTExMyw3ICsxMTMsNyBAQAogCiAJcGFydGl0 aW9uQGUwMDAwIHsKIAkJbGFiZWwgPSAidS1ib290IGVudmlyb25tZW50IjsKLQkJcmVnID0gPDB4 ZTAwMDAgMHgxMDAwMDA+OworCQlyZWcgPSA8MHhlMDAwMCAweDIwMDAwPjsKIAl9OwogCiAJcGFy dGl0aW9uQDEwMDAwMCB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb21tb24vc2ExMTExLmMgYi9h cmNoL2FybS9jb21tb24vc2ExMTExLmMKaW5kZXggZTU3ZDdlNWJmOTZhLi45MzIxMjVhMjA4Nzcg MTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbW1vbi9zYTExMTEuYworKysgYi9hcmNoL2FybS9jb21t b24vc2ExMTExLmMKQEAgLTg3Miw5ICs4NzIsOSBAQCBzdHJ1Y3Qgc2ExMTExX3NhdmVfZGF0YSB7 CiAKICNpZmRlZiBDT05GSUdfUE0KIAotc3RhdGljIGludCBzYTExMTFfc3VzcGVuZChzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3N0YXRpYyBpbnQgc2Ex MTExX3N1c3BlbmRfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KQogewotCXN0cnVjdCBzYTExMTEg KnNhY2hpcCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IHNhMTExMSAqc2Fj aGlwID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IHNhMTExMV9zYXZlX2RhdGEgKnNh dmU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1bnNpZ25lZCBpbnQgdmFsOwpAQCAtOTM3LDkg KzkzNyw5IEBAIHN0YXRpYyBpbnQgc2ExMTExX3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiAgKglyZXN0b3JlZCBieSB0aGVpciByZXNwZWN0 aXZlIGRyaXZlcnMsIGFuZCBtdXN0IGJlIGNhbGxlZAogICoJdmlhIExETSBhZnRlciB0aGlzIGZ1 bmN0aW9uLgogICovCi1zdGF0aWMgaW50IHNhMTExMV9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqZGV2KQorc3RhdGljIGludCBzYTExMTFfcmVzdW1lX25vaXJxKHN0cnVjdCBkZXZpY2Ug KmRldikKIHsKLQlzdHJ1Y3Qgc2ExMTExICpzYWNoaXAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShk ZXYpOworCXN0cnVjdCBzYTExMTEgKnNhY2hpcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCXN0 cnVjdCBzYTExMTFfc2F2ZV9kYXRhICpzYXZlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGlkOwog CXZvaWQgX19pb21lbSAqYmFzZTsKQEAgLTk1NSw3ICs5NTUsNyBAQCBzdGF0aWMgaW50IHNhMTEx MV9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogCWlkID0gc2ExMTExX3JlYWRs KHNhY2hpcC0+YmFzZSArIFNBMTExMV9TS0lEKTsKIAlpZiAoKGlkICYgU0tJRF9JRF9NQVNLKSAh PSBTS0lEX1NBMTExMV9JRCkgewogCQlfX3NhMTExMV9yZW1vdmUoc2FjaGlwKTsKLQkJcGxhdGZv cm1fc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsKKwkJZGV2X3NldF9kcnZkYXRhKGRldiwgTlVMTCk7 CiAJCWtmcmVlKHNhdmUpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC0xMDA2LDggKzEwMDYsOCBAQCBz dGF0aWMgaW50IHNhMTExMV9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogfQog CiAjZWxzZQotI2RlZmluZSBzYTExMTFfc3VzcGVuZCBOVUxMCi0jZGVmaW5lIHNhMTExMV9yZXN1 bWUgIE5VTEwKKyNkZWZpbmUgc2ExMTExX3N1c3BlbmRfbm9pcnEgTlVMTAorI2RlZmluZSBzYTEx MTFfcmVzdW1lX25vaXJxICBOVUxMCiAjZW5kaWYKIAogc3RhdGljIGludCBzYTExMTFfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKQEAgLTEwNDEsNiArMTA0MSwxMSBAQCBzdGF0 aWMgaW50IHNhMTExMV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIHN0cnVjdCBkZXZfcG1fb3BzIHNhMTExMV9wbV9vcHMgPSB7CisJ LnN1c3BlbmRfbm9pcnEgPSBzYTExMTFfc3VzcGVuZF9ub2lycSwKKwkucmVzdW1lX25vaXJxID0g c2ExMTExX3Jlc3VtZV9ub2lycSwKK307CisKIC8qCiAgKglOb3Qgc3VyZSBpZiB0aGlzIHNob3Vs ZCBiZSBvbiB0aGUgc3lzdGVtIGJ1cyBvciBub3QgeWV0LgogICoJV2UgcmVhbGx5IHdhbnQgc29t ZSB3YXkgdG8gcmVnaXN0ZXIgYSBzeXN0ZW0gZGV2aWNlIGF0CkBAIC0xMDUzLDExICsxMDU4LDEw IEBAIHN0YXRpYyBpbnQgc2ExMTExX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2ExMTExX2RldmljZV9kcml2ZXIgPSB7 CiAJLnByb2JlCQk9IHNhMTExMV9wcm9iZSwKIAkucmVtb3ZlCQk9IHNhMTExMV9yZW1vdmUsCi0J LnN1c3BlbmQJPSBzYTExMTFfc3VzcGVuZCwKLQkucmVzdW1lCQk9IHNhMTExMV9yZXN1bWUsCiAJ LmRyaXZlcgkJPSB7CiAJCS5uYW1lCT0gInNhMTExMSIsCiAJCS5vd25lcgk9IFRISVNfTU9EVUxF LAorCQkucG0JPSAmc2ExMTExX3BtX29wcywKIAl9LAogfTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vaW5jbHVkZS9hc20vZG1hLW1hcHBpbmcuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RtYS1t YXBwaW5nLmgKaW5kZXggYzQ1YjYxYTRiNGE1Li45MTFkY2Q0NTYxMjMgMTAwNjQ0Ci0tLSBhL2Fy Y2gvYXJtL2luY2x1ZGUvYXNtL2RtYS1tYXBwaW5nLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9h c20vZG1hLW1hcHBpbmcuaApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgZG1hX2Fk ZHJfdCB2aXJ0X3RvX2RtYShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpCiAvKiBUaGUg QVJNIG92ZXJyaWRlIGZvciBkbWFfbWF4X3BmbigpICovCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgZG1hX21heF9wZm4oc3RydWN0IGRldmljZSAqZGV2KQogewotCXJldHVybiBQSFlTX1BG Tl9PRkZTRVQgKyBkbWFfdG9fcGZuKGRldiwgKmRldi0+ZG1hX21hc2spOworCXJldHVybiBkbWFf dG9fcGZuKGRldiwgKmRldi0+ZG1hX21hc2spOwogfQogI2RlZmluZSBkbWFfbWF4X3BmbihkZXYp IGRtYV9tYXhfcGZuKGRldikKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3N5c19vYWJp LWNvbXBhdC5jIGIvYXJjaC9hcm0va2VybmVsL3N5c19vYWJpLWNvbXBhdC5jCmluZGV4IGViODIx ZTdiODBmOS4uOGExYzJjOGExYTY0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvc3lzX29h YmktY29tcGF0LmMKKysrIGIvYXJjaC9hcm0va2VybmVsL3N5c19vYWJpLWNvbXBhdC5jCkBAIC0y NzksOCArMjc5LDEyIEBAIGFzbWxpbmthZ2UgbG9uZyBzeXNfb2FiaV9lcG9sbF93YWl0KGludCBl cGZkLAogCW1tX3NlZ21lbnRfdCBmczsKIAlsb25nIHJldCwgZXJyLCBpOwogCi0JaWYgKG1heGV2 ZW50cyA8PSAwIHx8IG1heGV2ZW50cyA+IChJTlRfTUFYL3NpemVvZihzdHJ1Y3QgZXBvbGxfZXZl bnQpKSkKKwlpZiAobWF4ZXZlbnRzIDw9IDAgfHwKKwkJCW1heGV2ZW50cyA+IChJTlRfTUFYL3Np emVvZigqa2J1ZikpIHx8CisJCQltYXhldmVudHMgPiAoSU5UX01BWC9zaXplb2YoKmV2ZW50cykp KQogCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGV2ZW50 cywgc2l6ZW9mKCpldmVudHMpICogbWF4ZXZlbnRzKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CiAJa2J1 ZiA9IGttYWxsb2Moc2l6ZW9mKCprYnVmKSAqIG1heGV2ZW50cywgR0ZQX0tFUk5FTCk7CiAJaWYg KCFrYnVmKQogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTMxNyw2ICszMjEsOCBAQCBhc21saW5rYWdl IGxvbmcgc3lzX29hYmlfc2VtdGltZWRvcChpbnQgc2VtaWQsCiAKIAlpZiAobnNvcHMgPCAxIHx8 IG5zb3BzID4gU0VNT1BNKQogCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoIWFjY2Vzc19vayhWRVJJ RllfUkVBRCwgdHNvcHMsIHNpemVvZigqdHNvcHMpICogbnNvcHMpKQorCQlyZXR1cm4gLUVGQVVM VDsKIAlzb3BzID0ga21hbGxvYyhzaXplb2YoKnNvcHMpICogbnNvcHMsIEdGUF9LRVJORUwpOwog CWlmICghc29wcykKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rdm0v YXJtLmMgYi9hcmNoL2FybS9rdm0vYXJtLmMKaW5kZXggNDk5YjIzNjg3M2QyLi5kNzVjNmUzZWQ3 OGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2t2bS9hcm0uYworKysgYi9hcmNoL2FybS9rdm0vYXJt LmMKQEAgLTE2NCw4ICsxNjQsNiBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2 bSAqa3ZtKQogewogCWludCBpOwogCi0Ja3ZtX2ZyZWVfc3RhZ2UyX3BnZChrdm0pOwotCiAJZm9y IChpID0gMDsgaSA8IEtWTV9NQVhfVkNQVVM7ICsraSkgewogCQlpZiAoa3ZtLT52Y3B1c1tpXSkg ewogCQkJa3ZtX2FyY2hfdmNwdV9mcmVlKGt2bS0+dmNwdXNbaV0pOwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0va3ZtL21tdS5jIGIvYXJjaC9hcm0va3ZtL21tdS5jCmluZGV4IGM2MWRhM2U2YTYyOS4u MWM4OWU0OWEyNDY3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9rdm0vbW11LmMKKysrIGIvYXJjaC9h cm0va3ZtL21tdS5jCkBAIC0xMjU3LDYgKzEyNTcsNyBAQCB2b2lkIGt2bV9hcmNoX21lbXNsb3Rz X3VwZGF0ZWQoc3RydWN0IGt2bSAqa3ZtKQogCiB2b2lkIGt2bV9hcmNoX2ZsdXNoX3NoYWRvd19h bGwoc3RydWN0IGt2bSAqa3ZtKQogeworCWt2bV9mcmVlX3N0YWdlMl9wZ2Qoa3ZtKTsKIH0KIAog dm9pZCBrdm1fYXJjaF9mbHVzaF9zaGFkb3dfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sCmRpZmYg LS1naXQgYS9hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jIGIvYXJjaC9hcm0vbWFjaC1t dmVidS9jb2hlcmVuY3kuYwppbmRleCAwMWVmZTEzMDkxMmUuLjllNWMyOWRmOTFmNSAxMDA2NDQK LS0tIGEvYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYworKysgYi9hcmNoL2FybS9tYWNo LW12ZWJ1L2NvaGVyZW5jeS5jCkBAIC0zMTUsMjIgKzMxNSwxNiBAQCBzdGF0aWMgdm9pZCBfX2lu aXQgYXJtYWRhXzM3MF9jb2hlcmVuY3lfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogfQog CiAvKgotICogVGhpcyBpb3JlbWFwIGhvb2sgaXMgdXNlZCBvbiBBcm1hZGEgMzc1LzM4eCB0byBl bnN1cmUgdGhhdCBQQ0llCi0gKiBtZW1vcnkgYXJlYXMgYXJlIG1hcHBlZCBhcyBNVF9VTkNBQ0hF RCBpbnN0ZWFkIG9mIE1UX0RFVklDRS4gVGhpcwotICogaXMgbmVlZGVkIGFzIGEgd29ya2Fyb3Vu ZCBmb3IgYSBkZWFkbG9jayBpc3N1ZSBiZXR3ZWVuIHRoZSBQQ0llCi0gKiBpbnRlcmZhY2UgYW5k IHRoZSBjYWNoZSBjb250cm9sbGVyLgorICogVGhpcyBpb3JlbWFwIGhvb2sgaXMgdXNlZCBvbiBB cm1hZGEgMzc1LzM4eCB0byBlbnN1cmUgdGhhdCBhbGwgTU1JTworICogYXJlYXMgYXJlIG1hcHBl ZCBhcyBNVF9VTkNBQ0hFRCBpbnN0ZWFkIG9mIE1UX0RFVklDRS4gVGhpcyBpcworICogbmVlZGVk IGZvciB0aGUgSFcgSS9PIGNvaGVyZW5jeSBtZWNoYW5pc20gdG8gd29yayBwcm9wZXJseSB3aXRo b3V0CisgKiBkZWFkbG9jay4KICAqLwogc3RhdGljIHZvaWQgX19pb21lbSAqCi1hcm1hZGFfcGNp ZV93YV9pb3JlbWFwX2NhbGxlcihwaHlzX2FkZHJfdCBwaHlzX2FkZHIsIHNpemVfdCBzaXplLAot CQkJICAgICAgdW5zaWduZWQgaW50IG10eXBlLCB2b2lkICpjYWxsZXIpCithcm1hZGFfd2FfaW9y ZW1hcF9jYWxsZXIocGh5c19hZGRyX3QgcGh5c19hZGRyLCBzaXplX3Qgc2l6ZSwKKwkJCSB1bnNp Z25lZCBpbnQgbXR5cGUsIHZvaWQgKmNhbGxlcikKIHsKLQlzdHJ1Y3QgcmVzb3VyY2UgcGNpZV9t ZW07Ci0KLQltdmVidV9tYnVzX2dldF9wY2llX21lbV9hcGVydHVyZSgmcGNpZV9tZW0pOwotCi0J aWYgKHBjaWVfbWVtLnN0YXJ0IDw9IHBoeXNfYWRkciAmJiAocGh5c19hZGRyICsgc2l6ZSkgPD0g cGNpZV9tZW0uZW5kKQotCQltdHlwZSA9IE1UX1VOQ0FDSEVEOwotCisJbXR5cGUgPSBNVF9VTkNB Q0hFRDsKIAlyZXR1cm4gX19hcm1faW9yZW1hcF9jYWxsZXIocGh5c19hZGRyLCBzaXplLCBtdHlw ZSwgY2FsbGVyKTsKIH0KIApAQCAtMzM5LDcgKzMzMyw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBh cm1hZGFfMzc1XzM4MF9jb2hlcmVuY3lfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqY2FjaGVfZG47CiAKIAljb2hlcmVuY3lfY3B1X2Jhc2UgPSBvZl9p b21hcChucCwgMCk7Ci0JYXJjaF9pb3JlbWFwX2NhbGxlciA9IGFybWFkYV9wY2llX3dhX2lvcmVt YXBfY2FsbGVyOworCWFyY2hfaW9yZW1hcF9jYWxsZXIgPSBhcm1hZGFfd2FfaW9yZW1hcF9jYWxs ZXI7CiAKIAkvKgogCSAqIFdlIHNob3VsZCBzd2l0Y2ggdGhlIFBMMzEwIHRvIEkvTyBjb2hlcmVu Y3kgbW9kZSBvbmx5IGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdt b2RfMzN4eF80M3h4X2lwYmxvY2tfZGF0YS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3 bW9kXzMzeHhfNDN4eF9pcGJsb2NrX2RhdGEuYwppbmRleCBhNTc5Yjg5Y2U5YjcuLmIwODYwNWNj OTNmZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kXzMzeHhfNDN4 eF9pcGJsb2NrX2RhdGEuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2RfMzN4 eF80M3h4X2lwYmxvY2tfZGF0YS5jCkBAIC0xNDYwLDYgKzE0NjAsNyBAQCBzdGF0aWMgdm9pZCBv bWFwX2h3bW9kX2FtNDN4eF9yc3Qodm9pZCkKIHsKIAlSU1RDVFJMKGFtMzN4eF9wcnVzc19od21v ZCwgQU00M1hYX1JNX1BFUl9SU1RDVFJMX09GRlNFVCk7CiAJUlNUQ1RSTChhbTMzeHhfZ2Z4X2h3 bW9kLCBBTTQzWFhfUk1fR0ZYX1JTVENUUkxfT0ZGU0VUKTsKKwlSU1RTVChhbTMzeHhfcHJ1c3Nf aHdtb2QsIEFNNDNYWF9STV9QRVJfUlNUU1RfT0ZGU0VUKTsKIAlSU1RTVChhbTMzeHhfZ2Z4X2h3 bW9kLCBBTTQzWFhfUk1fR0ZYX1JTVFNUX09GRlNFVCk7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gv YXJtL21hY2gtb21hcDIvb21hcF9od21vZF8zeHh4X2RhdGEuYyBiL2FyY2gvYXJtL21hY2gtb21h cDIvb21hcF9od21vZF8zeHh4X2RhdGEuYwppbmRleCAxY2QwY2ZkYzAzZTAuLjNlYzNlZDk0NTIy MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kXzN4eHhfZGF0YS5j CisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZF8zeHh4X2RhdGEuYwpAQCAtNzI0 LDggKzcyNCwyMCBAQCBzdGF0aWMgc3RydWN0IG9tYXBfaHdtb2Qgb21hcDN4eHhfZHNzX2Rpc3Bj X2h3bW9kID0gewogICogZGlzcGxheSBzZXJpYWwgaW50ZXJmYWNlIGNvbnRyb2xsZXIKICAqLwog CitzdGF0aWMgc3RydWN0IG9tYXBfaHdtb2RfY2xhc3Nfc3lzY29uZmlnIG9tYXAzeHh4X2RzaV9z eXNjID0geworCS5yZXZfb2Zmcwk9IDB4MDAwMCwKKwkuc3lzY19vZmZzCT0gMHgwMDEwLAorCS5z eXNzX29mZnMJPSAweDAwMTQsCisJLnN5c2NfZmxhZ3MJPSAoU1lTQ19IQVNfQVVUT0lETEUgfCBT WVNDX0hBU19DTE9DS0FDVElWSVRZIHwKKwkJCSAgIFNZU0NfSEFTX0VOQVdBS0VVUCB8IFNZU0Nf SEFTX1NJRExFTU9ERSB8CisJCQkgICBTWVNDX0hBU19TT0ZUUkVTRVQgfCBTWVNTX0hBU19SRVNF VF9TVEFUVVMpLAorCS5pZGxlbW9kZXMJPSAoU0lETEVfRk9SQ0UgfCBTSURMRV9OTyB8IFNJRExF X1NNQVJUKSwKKwkuc3lzY19maWVsZHMJPSAmb21hcF9od21vZF9zeXNjX3R5cGUxLAorfTsKKwog c3RhdGljIHN0cnVjdCBvbWFwX2h3bW9kX2NsYXNzIG9tYXAzeHh4X2RzaV9od21vZF9jbGFzcyA9 IHsKIAkubmFtZSA9ICJkc2kiLAorCS5zeXNjCT0gJm9tYXAzeHh4X2RzaV9zeXNjLAogfTsKIAog c3RhdGljIHN0cnVjdCBvbWFwX2h3bW9kX2lycV9pbmZvIG9tYXAzeHh4X2RzaTFfaXJxc1tdID0g ewpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9wcmNtNDN4eC5oIGIvYXJjaC9hcm0v bWFjaC1vbWFwMi9wcmNtNDN4eC5oCmluZGV4IDc3ODViZTk4NGVkZC4uNGM2MGQzNDY0YTg3IDEw MDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL3ByY200M3h4LmgKKysrIGIvYXJjaC9hcm0v bWFjaC1vbWFwMi9wcmNtNDN4eC5oCkBAIC0zMiw2ICszMiw3IEBACiAKIC8qIFJNIFJTVFNUIG9m ZnNldHMgKi8KICNkZWZpbmUgQU00M1hYX1JNX0dGWF9SU1RTVF9PRkZTRVQJCQkweDAwMTQKKyNk ZWZpbmUgQU00M1hYX1JNX1BFUl9SU1RTVF9PRkZTRVQJCQkweDAwMTQKICNkZWZpbmUgQU00M1hY X1JNX1dLVVBfUlNUU1RfT0ZGU0VUCQkJMHgwMDE0CiAKIC8qIENNIGluc3RhbmNlcyAqLwpkaWZm IC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jIGIvYXJjaC9hcm0vbWFjaC1z YTExMDAvZ2VuZXJpYy5jCmluZGV4IGQ0ZWExNDJjNGVkZC4uMTg2ZTNmODcyOWVmIDEwMDY0NAot LS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1z YTExMDAvZ2VuZXJpYy5jCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlIDxtYWNoL2hhcmR3 YXJlLmg+CiAjaW5jbHVkZSA8bWFjaC9pcnFzLmg+CisjaW5jbHVkZSA8bWFjaC9yZXNldC5oPgog CiAjaW5jbHVkZSAiZ2VuZXJpYy5oIgogCkBAIC05MSw2ICs5Miw4IEBAIHN0YXRpYyB2b2lkIHNh MTEwMF9wb3dlcl9vZmYodm9pZCkKIAogdm9pZCBzYTExeDBfcmVzdGFydChlbnVtIHJlYm9vdF9t b2RlIG1vZGUsIGNvbnN0IGNoYXIgKmNtZCkKIHsKKwljbGVhcl9yZXNldF9zdGF0dXMoUkVTRVRf U1RBVFVTX0FMTCk7CisKIAlpZiAobW9kZSA9PSBSRUJPT1RfU09GVCkgewogCQkvKiBKdW1wIGlu dG8gUk9NIGF0IGFkZHJlc3MgMCAqLwogCQlzb2Z0X3Jlc3RhcnQoMCk7CmRpZmYgLS1naXQgYS9h cmNoL2FybS9tbS9kbWEtbWFwcGluZy5jIGIvYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYwppbmRl eCA4MzJiMjk1ZWI0YTUuLmYwZmJkOTdmZGZiYSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vZG1h LW1hcHBpbmcuYworKysgYi9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jCkBAIC0zOSw2ICszOSw5 IEBACiAKICNpbmNsdWRlICJtbS5oIgogCisjZGVmaW5lIE5PUk1BTAkgICAgMAorI2RlZmluZSBD T0hFUkVOVCAgICAxCisKIC8qCiAgKiBUaGUgRE1BIEFQSSBpcyBidWlsdCB1cG9uIHRoZSBub3Rp b24gb2YgImJ1ZmZlciBvd25lcnNoaXAiLiAgQSBidWZmZXIKICAqIGlzIGVpdGhlciBleGNsdXNp dmVseSBvd25lZCBieSB0aGUgQ1BVIChhbmQgdGhlcmVmb3JlIG1heSBiZSBhY2Nlc3NlZApAQCAt MjE5LDcgKzIyMiw3IEBAIHN0YXRpYyB1NjQgZ2V0X2NvaGVyZW50X2RtYV9tYXNrKHN0cnVjdCBk ZXZpY2UgKmRldikKIAlyZXR1cm4gbWFzazsKIH0KIAotc3RhdGljIHZvaWQgX19kbWFfY2xlYXJf YnVmZmVyKHN0cnVjdCBwYWdlICpwYWdlLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyB2b2lkIF9fZG1h X2NsZWFyX2J1ZmZlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgc2l6ZV90IHNpemUsIGludCBjb2hlcmVu dF9mbGFnKQogewogCS8qCiAJICogRW5zdXJlIHRoYXQgdGhlIGFsbG9jYXRlZCBwYWdlcyBhcmUg emVyb2VkLCBhbmQgdGhhdCBhbnkgZGF0YQpAQCAtMjMxLDE3ICsyMzQsMjEgQEAgc3RhdGljIHZv aWQgX19kbWFfY2xlYXJfYnVmZmVyKHN0cnVjdCBwYWdlICpwYWdlLCBzaXplX3Qgc2l6ZSkKIAkJ d2hpbGUgKHNpemUgPiAwKSB7CiAJCQl2b2lkICpwdHIgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAkJ CW1lbXNldChwdHIsIDAsIFBBR0VfU0laRSk7Ci0JCQlkbWFjX2ZsdXNoX3JhbmdlKHB0ciwgcHRy ICsgUEFHRV9TSVpFKTsKKwkJCWlmIChjb2hlcmVudF9mbGFnICE9IENPSEVSRU5UKQorCQkJCWRt YWNfZmx1c2hfcmFuZ2UocHRyLCBwdHIgKyBQQUdFX1NJWkUpOwogCQkJa3VubWFwX2F0b21pYyhw dHIpOwogCQkJcGFnZSsrOwogCQkJc2l6ZSAtPSBQQUdFX1NJWkU7CiAJCX0KLQkJb3V0ZXJfZmx1 c2hfcmFuZ2UoYmFzZSwgZW5kKTsKKwkJaWYgKGNvaGVyZW50X2ZsYWcgIT0gQ09IRVJFTlQpCisJ CQlvdXRlcl9mbHVzaF9yYW5nZShiYXNlLCBlbmQpOwogCX0gZWxzZSB7CiAJCXZvaWQgKnB0ciA9 IHBhZ2VfYWRkcmVzcyhwYWdlKTsKIAkJbWVtc2V0KHB0ciwgMCwgc2l6ZSk7Ci0JCWRtYWNfZmx1 c2hfcmFuZ2UocHRyLCBwdHIgKyBzaXplKTsKLQkJb3V0ZXJfZmx1c2hfcmFuZ2UoX19wYShwdHIp LCBfX3BhKHB0cikgKyBzaXplKTsKKwkJaWYgKGNvaGVyZW50X2ZsYWcgIT0gQ09IRVJFTlQpIHsK KwkJCWRtYWNfZmx1c2hfcmFuZ2UocHRyLCBwdHIgKyBzaXplKTsKKwkJCW91dGVyX2ZsdXNoX3Jh bmdlKF9fcGEocHRyKSwgX19wYShwdHIpICsgc2l6ZSk7CisJCX0KIAl9CiB9CiAKQEAgLTI0OSw3 ICsyNTYsOCBAQCBzdGF0aWMgdm9pZCBfX2RtYV9jbGVhcl9idWZmZXIoc3RydWN0IHBhZ2UgKnBh Z2UsIHNpemVfdCBzaXplKQogICogQWxsb2NhdGUgYSBETUEgYnVmZmVyIGZvciAnZGV2JyBvZiBz aXplICdzaXplJyB1c2luZyB0aGUKICAqIHNwZWNpZmllZCBnZnAgbWFzay4gIE5vdGUgdGhhdCAn c2l6ZScgbXVzdCBiZSBwYWdlIGFsaWduZWQuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcGFnZSAqX19k bWFfYWxsb2NfYnVmZmVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGdmcF90IGdm cCkKK3N0YXRpYyBzdHJ1Y3QgcGFnZSAqX19kbWFfYWxsb2NfYnVmZmVyKHN0cnVjdCBkZXZpY2Ug KmRldiwgc2l6ZV90IHNpemUsCisJCQkJICAgICAgIGdmcF90IGdmcCwgaW50IGNvaGVyZW50X2Zs YWcpCiB7CiAJdW5zaWduZWQgbG9uZyBvcmRlciA9IGdldF9vcmRlcihzaXplKTsKIAlzdHJ1Y3Qg cGFnZSAqcGFnZSwgKnAsICplOwpAQCAtMjY1LDcgKzI3Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFn ZSAqX19kbWFfYWxsb2NfYnVmZmVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGdm cF90IGdmCiAJZm9yIChwID0gcGFnZSArIChzaXplID4+IFBBR0VfU0hJRlQpLCBlID0gcGFnZSAr ICgxIDw8IG9yZGVyKTsgcCA8IGU7IHArKykKIAkJX19mcmVlX3BhZ2UocCk7CiAKLQlfX2RtYV9j bGVhcl9idWZmZXIocGFnZSwgc2l6ZSk7CisJX19kbWFfY2xlYXJfYnVmZmVyKHBhZ2UsIHNpemUs IGNvaGVyZW50X2ZsYWcpOwogCiAJcmV0dXJuIHBhZ2U7CiB9CkBAIC0yODcsNyArMjk1LDcgQEAg c3RhdGljIHZvaWQgX19kbWFfZnJlZV9idWZmZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBz aXplKQogCiBzdGF0aWMgdm9pZCAqX19hbGxvY19mcm9tX2NvbnRpZ3VvdXMoc3RydWN0IGRldmlj ZSAqZGV2LCBzaXplX3Qgc2l6ZSwKIAkJCQkgICAgIHBncHJvdF90IHByb3QsIHN0cnVjdCBwYWdl ICoqcmV0X3BhZ2UsCi0JCQkJICAgICBjb25zdCB2b2lkICpjYWxsZXIpOworCQkJCSAgICAgY29u c3Qgdm9pZCAqY2FsbGVyLCBpbnQgY29oZXJlbnRfZmxhZyk7CiAKIHN0YXRpYyB2b2lkICpfX2Fs bG9jX3JlbWFwX2J1ZmZlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBnZnBfdCBn ZnAsCiAJCQkJIHBncHJvdF90IHByb3QsIHN0cnVjdCBwYWdlICoqcmV0X3BhZ2UsCkBAIC0zODks MTAgKzM5NywxMyBAQCBzdGF0aWMgaW50IF9faW5pdCBhdG9taWNfcG9vbF9pbml0KHZvaWQpCiAJ cGFnZXMgPSBremFsbG9jKG5yX3BhZ2VzICogc2l6ZW9mKHN0cnVjdCBwYWdlICopLCBHRlBfS0VS TkVMKTsKIAlpZiAoIXBhZ2VzKQogCQlnb3RvIG5vX3BhZ2VzOwotCisJLyoKKwkgKiBUaGUgYXRv bWljIHBvb2wgaXMgb25seSB1c2VkIGZvciBub24tY29oZXJlbnQgYWxsb2NhdGlvbnMKKwkgKiBz byB3ZSBtdXN0IHBhc3MgTk9STUFMIGZvciBjb2hlcmVudF9mbGFnLgorCSAqLwogCWlmIChkZXZf Z2V0X2NtYV9hcmVhKE5VTEwpKQogCQlwdHIgPSBfX2FsbG9jX2Zyb21fY29udGlndW91cyhOVUxM LCBwb29sLT5zaXplLCBwcm90LCAmcGFnZSwKLQkJCQkJICAgICAgYXRvbWljX3Bvb2xfaW5pdCk7 CisJCQkJCSAgICAgIGF0b21pY19wb29sX2luaXQsIE5PUk1BTCk7CiAJZWxzZQogCQlwdHIgPSBf X2FsbG9jX3JlbWFwX2J1ZmZlcihOVUxMLCBwb29sLT5zaXplLCBnZnAsIHByb3QsICZwYWdlLAog CQkJCQkgICBhdG9taWNfcG9vbF9pbml0KTsKQEAgLTUwNSw3ICs1MTYsMTEgQEAgc3RhdGljIHZv aWQgKl9fYWxsb2NfcmVtYXBfYnVmZmVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUs IGdmcF90IGdmcCwKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAl2b2lkICpwdHI7Ci0JcGFnZSA9 IF9fZG1hX2FsbG9jX2J1ZmZlcihkZXYsIHNpemUsIGdmcCk7CisJLyoKKwkgKiBfX2FsbG9jX3Jl bWFwX2J1ZmZlciBpcyBvbmx5IGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMKKwkgKiBub24tY29o ZXJlbnQKKwkgKi8KKwlwYWdlID0gX19kbWFfYWxsb2NfYnVmZmVyKGRldiwgc2l6ZSwgZ2ZwLCBO T1JNQUwpOwogCWlmICghcGFnZSkKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTU5Nyw3ICs2MTIsNyBA QCBzdGF0aWMgaW50IF9fZnJlZV9mcm9tX3Bvb2wodm9pZCAqc3RhcnQsIHNpemVfdCBzaXplKQog CiBzdGF0aWMgdm9pZCAqX19hbGxvY19mcm9tX2NvbnRpZ3VvdXMoc3RydWN0IGRldmljZSAqZGV2 LCBzaXplX3Qgc2l6ZSwKIAkJCQkgICAgIHBncHJvdF90IHByb3QsIHN0cnVjdCBwYWdlICoqcmV0 X3BhZ2UsCi0JCQkJICAgICBjb25zdCB2b2lkICpjYWxsZXIpCisJCQkJICAgICBjb25zdCB2b2lk ICpjYWxsZXIsIGludCBjb2hlcmVudF9mbGFnKQogewogCXVuc2lnbmVkIGxvbmcgb3JkZXIgPSBn ZXRfb3JkZXIoc2l6ZSk7CiAJc2l6ZV90IGNvdW50ID0gc2l6ZSA+PiBQQUdFX1NISUZUOwpAQCAt NjA4LDcgKzYyMyw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jX2Zyb21fY29udGlndW91cyhzdHJ1 Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAogCWlmICghcGFnZSkKIAkJcmV0dXJuIE5VTEw7 CiAKLQlfX2RtYV9jbGVhcl9idWZmZXIocGFnZSwgc2l6ZSk7CisJX19kbWFfY2xlYXJfYnVmZmVy KHBhZ2UsIHNpemUsIGNvaGVyZW50X2ZsYWcpOwogCiAJaWYgKFBhZ2VIaWdoTWVtKHBhZ2UpKSB7 CiAJCXB0ciA9IF9fZG1hX2FsbG9jX3JlbWFwKHBhZ2UsIHNpemUsIEdGUF9LRVJORUwsIHByb3Qs IGNhbGxlcik7CkBAIC02NTEsNyArNjY2LDcgQEAgc3RhdGljIGlubGluZSBwZ3Byb3RfdCBfX2dl dF9kbWFfcGdwcm90KHN0cnVjdCBkbWFfYXR0cnMgKmF0dHJzLCBwZ3Byb3RfdCBwcm90KQogI2Rl ZmluZSBfX2dldF9kbWFfcGdwcm90KGF0dHJzLCBwcm90KQlfX3BncHJvdCgwKQogI2RlZmluZSBf X2FsbG9jX3JlbWFwX2J1ZmZlcihkZXYsIHNpemUsIGdmcCwgcHJvdCwgcmV0LCBjKQlOVUxMCiAj ZGVmaW5lIF9fYWxsb2NfZnJvbV9wb29sKHNpemUsIHJldF9wYWdlKQkJCU5VTEwKLSNkZWZpbmUg X19hbGxvY19mcm9tX2NvbnRpZ3VvdXMoZGV2LCBzaXplLCBwcm90LCByZXQsIGMpCU5VTEwKKyNk ZWZpbmUgX19hbGxvY19mcm9tX2NvbnRpZ3VvdXMoZGV2LCBzaXplLCBwcm90LCByZXQsIGMsIGNv aGVyZW50X2ZsYWcpCU5VTEwKICNkZWZpbmUgX19mcmVlX2Zyb21fcG9vbChjcHVfYWRkciwgc2l6 ZSkJCQkwCiAjZGVmaW5lIF9fZnJlZV9mcm9tX2NvbnRpZ3VvdXMoZGV2LCBwYWdlLCBjcHVfYWRk ciwgc2l6ZSkJZG8geyB9IHdoaWxlICgwKQogI2RlZmluZSBfX2RtYV9mcmVlX3JlbWFwKGNwdV9h ZGRyLCBzaXplKQkJCWRvIHsgfSB3aGlsZSAoMCkKQEAgLTY2Miw3ICs2NzcsOCBAQCBzdGF0aWMg dm9pZCAqX19hbGxvY19zaW1wbGVfYnVmZmVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNp emUsIGdmcF90IGdmcCwKIAkJCQkgICBzdHJ1Y3QgcGFnZSAqKnJldF9wYWdlKQogewogCXN0cnVj dCBwYWdlICpwYWdlOwotCXBhZ2UgPSBfX2RtYV9hbGxvY19idWZmZXIoZGV2LCBzaXplLCBnZnAp OworCS8qIF9fYWxsb2Nfc2ltcGxlX2J1ZmZlciBpcyBvbmx5IGNhbGxlZCB3aGVuIHRoZSBkZXZp Y2UgaXMgY29oZXJlbnQgKi8KKwlwYWdlID0gX19kbWFfYWxsb2NfYnVmZmVyKGRldiwgc2l6ZSwg Z2ZwLCBDT0hFUkVOVCk7CiAJaWYgKCFwYWdlKQogCQlyZXR1cm4gTlVMTDsKIApAQCAtNzEzLDcg KzcyOSw4IEBAIHN0YXRpYyB2b2lkICpfX2RtYV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNp emVfdCBzaXplLCBkbWFfYWRkcl90ICpoYW5kbGUsCiAJZWxzZSBpZiAoIWRldl9nZXRfY21hX2Fy ZWEoZGV2KSkKIAkJYWRkciA9IF9fYWxsb2NfcmVtYXBfYnVmZmVyKGRldiwgc2l6ZSwgZ2ZwLCBw cm90LCAmcGFnZSwgY2FsbGVyKTsKIAllbHNlCi0JCWFkZHIgPSBfX2FsbG9jX2Zyb21fY29udGln dW91cyhkZXYsIHNpemUsIHByb3QsICZwYWdlLCBjYWxsZXIpOworCQlhZGRyID0gX19hbGxvY19m cm9tX2NvbnRpZ3VvdXMoZGV2LCBzaXplLCBwcm90LCAmcGFnZSwgY2FsbGVyLAorCQkJCQkgICAg ICAgTk9STUFMKTsKIAogCWlmIChhZGRyKQogCQkqaGFuZGxlID0gcGZuX3RvX2RtYShkZXYsIHBh Z2VfdG9fcGZuKHBhZ2UpKTsKQEAgLTExNzIsNyArMTE4OSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBfX2ZyZWVfaW92YShzdHJ1Y3QgZG1hX2lvbW11X21hcHBpbmcgKm1hcHBpbmcsCiB9CiAKIHN0 YXRpYyBzdHJ1Y3QgcGFnZSAqKl9faW9tbXVfYWxsb2NfYnVmZmVyKHN0cnVjdCBkZXZpY2UgKmRl diwgc2l6ZV90IHNpemUsCi0JCQkJCSAgZ2ZwX3QgZ2ZwLCBzdHJ1Y3QgZG1hX2F0dHJzICphdHRy cykKKwkJCQkJICBnZnBfdCBnZnAsIHN0cnVjdCBkbWFfYXR0cnMgKmF0dHJzLAorCQkJCQkgIGlu dCBjb2hlcmVudF9mbGFnKQogewogCXN0cnVjdCBwYWdlICoqcGFnZXM7CiAJaW50IGNvdW50ID0g c2l6ZSA+PiBQQUdFX1NISUZUOwpAQCAtMTE5NSw3ICsxMjEzLDcgQEAgc3RhdGljIHN0cnVjdCBw YWdlICoqX19pb21tdV9hbGxvY19idWZmZXIoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6 ZSwKIAkJaWYgKCFwYWdlKQogCQkJZ290byBlcnJvcjsKIAotCQlfX2RtYV9jbGVhcl9idWZmZXIo cGFnZSwgc2l6ZSk7CisJCV9fZG1hX2NsZWFyX2J1ZmZlcihwYWdlLCBzaXplLCBjb2hlcmVudF9m bGFnKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKIAkJCXBhZ2VzW2ldID0gcGFn ZSArIGk7CkBAIC0xMjI0LDcgKzEyNDIsNyBAQCBzdGF0aWMgc3RydWN0IHBhZ2UgKipfX2lvbW11 X2FsbG9jX2J1ZmZlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAogCQkJCXBhZ2Vz W2kgKyBqXSA9IHBhZ2VzW2ldICsgajsKIAkJfQogCi0JCV9fZG1hX2NsZWFyX2J1ZmZlcihwYWdl c1tpXSwgUEFHRV9TSVpFIDw8IG9yZGVyKTsKKwkJX19kbWFfY2xlYXJfYnVmZmVyKHBhZ2VzW2ld LCBQQUdFX1NJWkUgPDwgb3JkZXIsIGNvaGVyZW50X2ZsYWcpOwogCQlpICs9IDEgPDwgb3JkZXI7 CiAJCWNvdW50IC09IDEgPDwgb3JkZXI7CiAJfQpAQCAtMTQyNyw3ICsxNDQ1LDggQEAgc3RhdGlj IHZvaWQgKmFybV9pb21tdV9hbGxvY19hdHRycyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBz aXplLAogCSAqLwogCWdmcCAmPSB+KF9fR0ZQX0NPTVApOwogCi0JcGFnZXMgPSBfX2lvbW11X2Fs bG9jX2J1ZmZlcihkZXYsIHNpemUsIGdmcCwgYXR0cnMpOworCS8qIEZvciBub3cgYWx3YXlzIGNv bnNpZGVyIHdlIGFyZSBpbiBhIG5vbi1jb2hlcmVudCBjYXNlICovCisJcGFnZXMgPSBfX2lvbW11 X2FsbG9jX2J1ZmZlcihkZXYsIHNpemUsIGdmcCwgYXR0cnMsIE5PUk1BTCk7CiAJaWYgKCFwYWdl cykKIAkJcmV0dXJuIE5VTEw7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1n bHVlLmMgYi9hcmNoL2FybTY0L2NyeXB0by9hZXMtZ2x1ZS5jCmluZGV4IDVmNjNhNzkxYjJmYi4u MzFkMDE0ZjAxNTc0IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2NyeXB0by9hZXMtZ2x1ZS5jCisr KyBiL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1nbHVlLmMKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0 aWMgaW50IGN0cl9lbmNyeXB0KHN0cnVjdCBibGtjaXBoZXJfZGVzYyAqZGVzYywgc3RydWN0IHNj YXR0ZXJsaXN0ICpkc3QsCiAJCWVyciA9IGJsa2NpcGhlcl93YWxrX2RvbmUoZGVzYywgJndhbGss CiAJCQkJCSAgd2Fsay5uYnl0ZXMgJSBBRVNfQkxPQ0tfU0laRSk7CiAJfQotCWlmIChuYnl0ZXMp IHsKKwlpZiAod2Fsay5uYnl0ZXMgJSBBRVNfQkxPQ0tfU0laRSkgewogCQl1OCAqdGRzdCA9IHdh bGsuZHN0LnZpcnQuYWRkciArIGJsb2NrcyAqIEFFU19CTE9DS19TSVpFOwogCQl1OCAqdHNyYyA9 IHdhbGsuc3JjLnZpcnQuYWRkciArIGJsb2NrcyAqIEFFU19CTE9DS19TSVpFOwogCQl1OCBfX2Fs aWduZWQoOCkgdGFpbFtBRVNfQkxPQ0tfU0laRV07CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2VsZi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaAppbmRleCAyMDA5 ZGFmNTJiZjEuLjkyMmZmNjM4NjY5ZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9lbGYuaAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCkBAIC0xMzcsNiArMTM3 LDcgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcmFuZG9taXplX2V0X2R5bih1bnNpZ25lZCBsb25n IGJhc2UpOwogCiAjZGVmaW5lIFNFVF9QRVJTT05BTElUWShleCkJCWNsZWFyX3RocmVhZF9mbGFn KFRJRl8zMkJJVCk7CiAKKy8qIHVwZGF0ZSBBVF9WRUNUT1JfU0laRV9BUkNIIGlmIHRoZSBudW1i ZXIgb2YgTkVXX0FVWF9FTlQgZW50cmllcyBjaGFuZ2VzICovCiAjZGVmaW5lIEFSQ0hfRExJTkZP CQkJCQkJCVwKIGRvIHsJCQkJCQkJCQlcCiAJTkVXX0FVWF9FTlQoQVRfU1lTSU5GT19FSERSLAkJ CQkJXApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9zcGlubG9jay5oCmluZGV4IGM0NWI3YjFiNzE5Ny4uM2MwYmI5 YjMwM2U4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgKKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zcGlubG9jay5oCkBAIC0yMzEsNCArMjMxLDE0IEBA IHN0YXRpYyBpbmxpbmUgaW50IGFyY2hfcmVhZF90cnlsb2NrKGFyY2hfcndsb2NrX3QgKnJ3KQog I2RlZmluZSBhcmNoX3JlYWRfcmVsYXgobG9jaykJY3B1X3JlbGF4KCkKICNkZWZpbmUgYXJjaF93 cml0ZV9yZWxheChsb2NrKQljcHVfcmVsYXgoKQogCisvKgorICogQWNjZXNzZXMgYXBwZWFyaW5n IGluIHByb2dyYW0gb3JkZXIgYmVmb3JlIGEgc3Bpbl9sb2NrKCkgb3BlcmF0aW9uCisgKiBjYW4g YmUgcmVvcmRlcmVkIHdpdGggYWNjZXNzZXMgaW5zaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLCBi eSB2aXJ0dWUKKyAqIG9mIGFyY2hfc3Bpbl9sb2NrIGJlaW5nIGNvbnN0cnVjdGVkIHVzaW5nIGFj cXVpcmUgc2VtYW50aWNzLgorICoKKyAqIEluIGNhc2VzIHdoZXJlIHRoaXMgaXMgcHJvYmxlbWF0 aWMgKGUuZy4gdHJ5X3RvX3dha2VfdXApLCBhbgorICogc21wX21iX19iZWZvcmVfc3BpbmxvY2so KSBjYW4gcmVzdG9yZSB0aGUgcmVxdWlyZWQgb3JkZXJpbmcuCisgKi8KKyNkZWZpbmUgc21wX21i X19iZWZvcmVfc3BpbmxvY2soKQlzbXBfbWIoKQorCiAjZW5kaWYgLyogX19BU01fU1BJTkxPQ0tf SCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2F1eHZlYy5oIGIv YXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2F1eHZlYy5oCmluZGV4IDIyZDZkODg4NTg1NC4u NGNmMGMxNzc4N2E4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20vYXV4 dmVjLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2F1eHZlYy5oCkBAIC0xOSw0 ICsxOSw2IEBACiAvKiB2RFNPIGxvY2F0aW9uICovCiAjZGVmaW5lIEFUX1NZU0lORk9fRUhEUgkz MwogCisjZGVmaW5lIEFUX1ZFQ1RPUl9TSVpFX0FSQ0ggMSAvKiBlbnRyaWVzIGluIEFSQ0hfRExJ TkZPICovCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9u aXRvcnMuYyBiL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMKaW5kZXggZmU1Yjk0 MDc4ZDgyLi5hMmRiNmYyMTliYmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVn LW1vbml0b3JzLmMKKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYwpAQCAt MTU5LDcgKzE1OSw2IEBAIHN0YXRpYyBpbnQgZGVidWdfbW9uaXRvcnNfaW5pdCh2b2lkKQogCS8q IENsZWFyIHRoZSBPUyBsb2NrLiAqLwogCW9uX2VhY2hfY3B1KGNsZWFyX29zX2xvY2ssIE5VTEws IDEpOwogCWlzYigpOwotCWxvY2FsX2RiZ19lbmFibGUoKTsKIAogCS8qIFJlZ2lzdGVyIGhvdHBs dWcgaGFuZGxlci4gKi8KIAlfX3JlZ2lzdGVyX2NwdV9ub3RpZmllcigmb3NfbG9ja19uYik7CmRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9wZXJmX2V2ZW50LmMgYi9hcmNoL2FybTY0L2tl cm5lbC9wZXJmX2V2ZW50LmMKaW5kZXggNjE2Njc0NWVjYjkzLi5iZTBmZjY2ZTQ4OTQgMTAwNjQ0 Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3BlcmZfZXZlbnQuYworKysgYi9hcmNoL2FybTY0L2tl cm5lbC9wZXJmX2V2ZW50LmMKQEAgLTMxNiwyMiArMzE2LDMxIEBAIG91dDoKIH0KIAogc3RhdGlj IGludAotdmFsaWRhdGVfZXZlbnQoc3RydWN0IHBtdV9od19ldmVudHMgKmh3X2V2ZW50cywKLQkg ICAgICAgc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQordmFsaWRhdGVfZXZlbnQoc3RydWN0IHBt dSAqcG11LCBzdHJ1Y3QgcG11X2h3X2V2ZW50cyAqaHdfZXZlbnRzLAorCQkJCXN0cnVjdCBwZXJm X2V2ZW50ICpldmVudCkKIHsKLQlzdHJ1Y3QgYXJtX3BtdSAqYXJtcG11ID0gdG9fYXJtX3BtdShl dmVudC0+cG11KTsKKwlzdHJ1Y3QgYXJtX3BtdSAqYXJtcG11OwogCXN0cnVjdCBod19wZXJmX2V2 ZW50IGZha2VfZXZlbnQgPSBldmVudC0+aHc7CiAJc3RydWN0IHBtdSAqbGVhZGVyX3BtdSA9IGV2 ZW50LT5ncm91cF9sZWFkZXItPnBtdTsKIAogCWlmIChpc19zb2Z0d2FyZV9ldmVudChldmVudCkp CiAJCXJldHVybiAxOwogCisJLyoKKwkgKiBSZWplY3QgZ3JvdXBzIHNwYW5uaW5nIG11bHRpcGxl IEhXIFBNVXMgKGUuZy4gQ1BVICsgQ0NJKS4gVGhlCisJICogY29yZSBwZXJmIGNvZGUgd29uJ3Qg Y2hlY2sgdGhhdCB0aGUgcG11LT5jdHggPT0gbGVhZGVyLT5jdHgKKwkgKiB1bnRpbCBhZnRlciBw bXUtPmV2ZW50X2luaXQoZXZlbnQpLgorCSAqLworCWlmIChldmVudC0+cG11ICE9IHBtdSkKKwkJ cmV0dXJuIDA7CisKIAlpZiAoZXZlbnQtPnBtdSAhPSBsZWFkZXJfcG11IHx8IGV2ZW50LT5zdGF0 ZSA8IFBFUkZfRVZFTlRfU1RBVEVfT0ZGKQogCQlyZXR1cm4gMTsKIAogCWlmIChldmVudC0+c3Rh dGUgPT0gUEVSRl9FVkVOVF9TVEFURV9PRkYgJiYgIWV2ZW50LT5hdHRyLmVuYWJsZV9vbl9leGVj KQogCQlyZXR1cm4gMTsKIAorCWFybXBtdSA9IHRvX2FybV9wbXUoZXZlbnQtPnBtdSk7CiAJcmV0 dXJuIGFybXBtdS0+Z2V0X2V2ZW50X2lkeChod19ldmVudHMsICZmYWtlX2V2ZW50KSA+PSAwOwog fQogCkBAIC0zNDksMTUgKzM1OCwxNSBAQCB2YWxpZGF0ZV9ncm91cChzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCiAJbWVtc2V0KGZha2VfdXNlZF9tYXNrLCAwLCBzaXplb2YoZmFrZV91c2VkX21h c2spKTsKIAlmYWtlX3BtdS51c2VkX21hc2sgPSBmYWtlX3VzZWRfbWFzazsKIAotCWlmICghdmFs aWRhdGVfZXZlbnQoJmZha2VfcG11LCBsZWFkZXIpKQorCWlmICghdmFsaWRhdGVfZXZlbnQoZXZl bnQtPnBtdSwgJmZha2VfcG11LCBsZWFkZXIpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWxpc3Rf Zm9yX2VhY2hfZW50cnkoc2libGluZywgJmxlYWRlci0+c2libGluZ19saXN0LCBncm91cF9lbnRy eSkgewotCQlpZiAoIXZhbGlkYXRlX2V2ZW50KCZmYWtlX3BtdSwgc2libGluZykpCisJCWlmICgh dmFsaWRhdGVfZXZlbnQoZXZlbnQtPnBtdSwgJmZha2VfcG11LCBzaWJsaW5nKSkKIAkJCXJldHVy biAtRUlOVkFMOwogCX0KIAotCWlmICghdmFsaWRhdGVfZXZlbnQoJmZha2VfcG11LCBldmVudCkp CisJaWYgKCF2YWxpZGF0ZV9ldmVudChldmVudC0+cG11LCAmZmFrZV9wbXUsIGV2ZW50KSkKIAkJ cmV0dXJuIC1FSU5WQUw7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2Vy bmVsL3NtcC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc21wLmMKaW5kZXggOWRmMjcyYzBkMjQwLi5j Njg0YmUxZTk5NDIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3NtcC5jCisrKyBiL2Fy Y2gvYXJtNjQva2VybmVsL3NtcC5jCkBAIC0xNzQsNyArMTc0LDYgQEAgYXNtbGlua2FnZSB2b2lk IHNlY29uZGFyeV9zdGFydF9rZXJuZWwodm9pZCkKIAlzZXRfY3B1X29ubGluZShjcHUsIHRydWUp OwogCWNvbXBsZXRlKCZjcHVfcnVubmluZyk7CiAKLQlsb2NhbF9kYmdfZW5hYmxlKCk7CiAJbG9j YWxfaXJxX2VuYWJsZSgpOwogCWxvY2FsX2FzeW5jX2VuYWJsZSgpOwogCmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L21tL3Byb2MuUyBiL2FyY2gvYXJtNjQvbW0vcHJvYy5TCmluZGV4IGRjMzQ0NDJm ZjcyOC4uMTBlOTRjYmMzMTkyIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L21tL3Byb2MuUworKysg Yi9hcmNoL2FybTY0L21tL3Byb2MuUwpAQCAtMTg5LDYgKzE4OSw4IEBAIEVOVFJZKF9fY3B1X3Nl dHVwKQogCW1zcgljcGFjcl9lbDEsIHgwCQkJLy8gRW5hYmxlIEZQL0FTSU1ECiAJbW92CXgwLCAj MSA8PCAxMgkJCS8vIFJlc2V0IG1kc2NyX2VsMSBhbmQgZGlzYWJsZQogCW1zcgltZHNjcl9lbDEs IHgwCQkJLy8gYWNjZXNzIHRvIHRoZSBEQ0MgZnJvbSBFTDAKKwlpc2IJCQkJCS8vIFVubWFzayBk ZWJ1ZyBleGNlcHRpb25zIG5vdywKKwllbmFibGVfZGJnCQkJCS8vIHNpbmNlIHRoaXMgaXMgcGVy LWNwdQogCXJlc2V0X3BtdXNlcmVucl9lbDAgeDAJCQkvLyBEaXNhYmxlIFBNVSBhY2Nlc3MgZnJv bSBFTDAKIAkvKgogCSAqIE1lbW9yeSByZWdpb24gYXR0cmlidXRlcyBmb3IgTFBBRToKZGlmZiAt LWdpdCBhL2FyY2gvYXZyMzIvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9hdnIzMi9pbmNs dWRlL2FzbS91YWNjZXNzLmgKaW5kZXggMjQ1YjJlZTIxM2M5Li5hMGE5YjhjMzEwNDEgMTAwNjQ0 Ci0tLSBhL2FyY2gvYXZyMzIvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBiL2FyY2gvYXZyMzIv aW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC03NCw3ICs3NCw3IEBAIGV4dGVybiBfX2tlcm5lbF9z aXplX3QgX19jb3B5X3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sCiAKIGV4dGVybiBf X2tlcm5lbF9zaXplX3QgY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAq ZnJvbSwKIAkJCQkgICAgX19rZXJuZWxfc2l6ZV90IG4pOwotZXh0ZXJuIF9fa2VybmVsX3NpemVf dCBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sCitleHRl cm4gX19rZXJuZWxfc2l6ZV90IF9fX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lk IF9fdXNlciAqZnJvbSwKIAkJCQkgICAgICBfX2tlcm5lbF9zaXplX3Qgbik7CiAKIHN0YXRpYyBp bmxpbmUgX19rZXJuZWxfc2l6ZV90IF9fY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29u c3Qgdm9pZCAqZnJvbSwKQEAgLTg4LDYgKzg4LDE1IEBAIHN0YXRpYyBpbmxpbmUgX19rZXJuZWxf c2l6ZV90IF9fY29weV9mcm9tX3VzZXIodm9pZCAqdG8sCiB7CiAJcmV0dXJuIF9fY29weV91c2Vy KHRvLCAoY29uc3Qgdm9pZCBfX2ZvcmNlICopZnJvbSwgbik7CiB9CitzdGF0aWMgaW5saW5lIF9f a2VybmVsX3NpemVfdCBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywKKwkJCQkJICAgICAgIGNvbnN0 IHZvaWQgX191c2VyICpmcm9tLAorCQkJCQkgICAgICAgX19rZXJuZWxfc2l6ZV90IG4pCit7CisJ c2l6ZV90IHJlcyA9IF9fX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKKwlpZiAodW5saWtl bHkocmVzKSkKKwkJbWVtc2V0KHRvICsgKG4gLSByZXMpLCAwLCByZXMpOworCXJldHVybiByZXM7 Cit9CiAKICNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWMgX19jb3B5X3RvX3VzZXIKICNk ZWZpbmUgX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyBfX2NvcHlfZnJvbV91c2VyCmRpZmYgLS1n aXQgYS9hcmNoL2F2cjMyL2tlcm5lbC9hdnIzMl9rc3ltcy5jIGIvYXJjaC9hdnIzMi9rZXJuZWwv YXZyMzJfa3N5bXMuYwppbmRleCBkOTNlYWQwMmRhZWQuLjdjNmNmMTRmMDk4NSAxMDA2NDQKLS0t IGEvYXJjaC9hdnIzMi9rZXJuZWwvYXZyMzJfa3N5bXMuYworKysgYi9hcmNoL2F2cjMyL2tlcm5l bC9hdnIzMl9rc3ltcy5jCkBAIC0zNiw3ICszNiw3IEBAIEVYUE9SVF9TWU1CT0woY29weV9wYWdl KTsKIC8qCiAgKiBVc2Vyc3BhY2UgYWNjZXNzIHN0dWZmLgogICovCi1FWFBPUlRfU1lNQk9MKGNv cHlfZnJvbV91c2VyKTsKK0VYUE9SVF9TWU1CT0woX19fY29weV9mcm9tX3VzZXIpOwogRVhQT1JU X1NZTUJPTChjb3B5X3RvX3VzZXIpOwogRVhQT1JUX1NZTUJPTChfX2NvcHlfdXNlcik7CiBFWFBP UlRfU1lNQk9MKHN0cm5jcHlfZnJvbV91c2VyKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXZyMzIvbGli L2NvcHlfdXNlci5TIGIvYXJjaC9hdnIzMi9saWIvY29weV91c2VyLlMKaW5kZXggZWE1OWMwNGIw N2RlLi4wNzUzNzM0NzFkYTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXZyMzIvbGliL2NvcHlfdXNlci5T CisrKyBiL2FyY2gvYXZyMzIvbGliL2NvcHlfdXNlci5TCkBAIC0yMywxMyArMjMsMTMgQEAKIAkg Ki8KIAkudGV4dAogCS5hbGlnbgkxCi0JLmdsb2JhbAljb3B5X2Zyb21fdXNlcgotCS50eXBlCWNv cHlfZnJvbV91c2VyLCBAZnVuY3Rpb24KLWNvcHlfZnJvbV91c2VyOgorCS5nbG9iYWwJX19fY29w eV9mcm9tX3VzZXIKKwkudHlwZQlfX19jb3B5X2Zyb21fdXNlciwgQGZ1bmN0aW9uCitfX19jb3B5 X2Zyb21fdXNlcjoKIAlicmFuY2hfaWZfa2VybmVsIHI4LCBfX2NvcHlfdXNlcgogCXJldF9pZl9w cml2aWxlZ2VkIHI4LCByMTEsIHIxMCwgcjEwCiAJcmptcAlfX2NvcHlfdXNlcgotCS5zaXplCWNv cHlfZnJvbV91c2VyLCAuIC0gY29weV9mcm9tX3VzZXIKKwkuc2l6ZQlfX19jb3B5X2Zyb21fdXNl ciwgLiAtIF9fX2NvcHlfZnJvbV91c2VyCiAKIAkuZ2xvYmFsCWNvcHlfdG9fdXNlcgogCS50eXBl CWNvcHlfdG9fdXNlciwgQGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL21hY2gtYXQz MmFwL3Bpby5jIGIvYXJjaC9hdnIzMi9tYWNoLWF0MzJhcC9waW8uYwppbmRleCA5MDNjN2Q4MWQw ZDUuLmE4ZTIwOGVhZjJhNCAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9tYWNoLWF0MzJhcC9waW8u YworKysgYi9hcmNoL2F2cjMyL21hY2gtYXQzMmFwL3Bpby5jCkBAIC00MzUsNyArNDM1LDcgQEAg dm9pZCBfX2luaXQgYXQzMl9pbml0X3BpbyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQog CXN0cnVjdCByZXNvdXJjZSAqcmVnczsKIAlzdHJ1Y3QgcGlvX2RldmljZSAqcGlvOwogCi0JaWYg KHBkZXYtPmlkID4gTUFYX05SX1BJT19ERVZJQ0VTKSB7CisJaWYgKHBkZXYtPmlkID49IE1BWF9O Ul9QSU9fREVWSUNFUykgewogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJvbmx5ICVkIFBJTyBkZXZp Y2VzIHN1cHBvcnRlZFxuIiwKIAkJCU1BWF9OUl9QSU9fREVWSUNFUyk7CiAJCXJldHVybjsKZGlm ZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9ibGFj a2Zpbi9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggNTc3MDFjM2I4YTU5Li5hOTkyYTc4ODQw OWMgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBi L2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0xNzcsMTEgKzE3NywxMiBA QCBzdGF0aWMgaW5saW5lIGludCBiYWRfdXNlcl9hY2Nlc3NfbGVuZ3RoKHZvaWQpCiBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgX19tdXN0X2NoZWNrCiBjb3B5X2Zyb21fdXNlcih2b2lkICp0 bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLQlpZiAoYWNj ZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkKKwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJ RllfUkVBRCwgZnJvbSwgbikpKSB7CiAJCW1lbWNweSh0bywgKGNvbnN0IHZvaWQgX19mb3JjZSAq KWZyb20sIG4pOwotCWVsc2UKLQkJcmV0dXJuIG47Ci0JcmV0dXJuIDA7CisJCXJldHVybiAwOwor CX0KKwltZW1zZXQodG8sIDAsIG4pOworCXJldHVybiBuOwogfQogCiBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcgX19tdXN0X2NoZWNrCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvaW5jbHVkZS9h c20vdWFjY2Vzcy5oIGIvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCA5MTQ1 NDA4MDFjNWUuLjkzYmZhOGFjYzM4YiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNt L3VhY2Nlc3MuaAorKysgYi9hcmNoL2NyaXMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0xNzYs MzAgKzE3Niw2IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIF9fY29weV91c2VyKHZvaWQgX191c2Vy ICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uCiBleHRlcm4gdW5zaWduZWQgbG9u ZyBfX2NvcHlfdXNlcl96ZXJvaW5nKHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwg dW5zaWduZWQgbG9uZyBuKTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIF9fZG9fY2xlYXJfdXNlcih2 b2lkIF9fdXNlciAqdG8sIHVuc2lnbmVkIGxvbmcgbik7CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgbG9uZwotX19nZW5lcmljX2NvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZv aWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKLXsKLQlpZiAoYWNjZXNzX29rKFZFUklGWV9XUklU RSwgdG8sIG4pKQotCQlyZXR1cm4gX19jb3B5X3VzZXIodG8sZnJvbSxuKTsKLQlyZXR1cm4gbjsK LX0KLQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCi1fX2dlbmVyaWNfY29weV9mcm9tX3Vz ZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCi17 Ci0JaWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCi0JCXJldHVybiBfX2NvcHlf dXNlcl96ZXJvaW5nKHRvLGZyb20sbik7Ci0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBpbmxpbmUg dW5zaWduZWQgbG9uZwotX19nZW5lcmljX2NsZWFyX3VzZXIodm9pZCBfX3VzZXIgKnRvLCB1bnNp Z25lZCBsb25nIG4pCi17Ci0JaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBuKSkKLQkJ cmV0dXJuIF9fZG9fY2xlYXJfdXNlcih0byxuKTsKLQlyZXR1cm4gbjsKLX0KLQogc3RhdGljIGlu bGluZSBsb25nCiBfX3N0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciBfX3Vz ZXIgKnNyYywgbG9uZyBjb3VudCkKIHsKQEAgLTI2Miw3ICsyMzgsNyBAQCBfX2NvbnN0YW50X2Nv cHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQg bG9uZyBuKQogCWVsc2UgaWYgKG4gPT0gMjQpCiAJCV9fYXNtX2NvcHlfZnJvbV91c2VyXzI0KHRv LCBmcm9tLCByZXQpOwogCWVsc2UKLQkJcmV0ID0gX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKHRv LCBmcm9tLCBuKTsKKwkJcmV0ID0gX19jb3B5X3VzZXJfemVyb2luZyh0bywgZnJvbSwgbik7CiAK IAlyZXR1cm4gcmV0OwogfQpAQCAtMzEyLDcgKzI4OCw3IEBAIF9fY29uc3RhbnRfY29weV90b191 c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQog CWVsc2UgaWYgKG4gPT0gMjQpCiAJCV9fYXNtX2NvcHlfdG9fdXNlcl8yNCh0bywgZnJvbSwgcmV0 KTsKIAllbHNlCi0JCXJldCA9IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pOwor CQlyZXQgPSBfX2NvcHlfdXNlcih0bywgZnJvbSwgbik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAt MzQ0LDI2ICszMjAsNDMgQEAgX19jb25zdGFudF9jbGVhcl91c2VyKHZvaWQgX191c2VyICp0bywg dW5zaWduZWQgbG9uZyBuKQogCWVsc2UgaWYgKG4gPT0gMjQpCiAJCV9fYXNtX2NsZWFyXzI0KHRv LCByZXQpOwogCWVsc2UKLQkJcmV0ID0gX19nZW5lcmljX2NsZWFyX3VzZXIodG8sIG4pOworCQly ZXQgPSBfX2RvX2NsZWFyX3VzZXIodG8sIG4pOwogCiAJcmV0dXJuIHJldDsKIH0KIAogCi0jZGVm aW5lIGNsZWFyX3VzZXIodG8sIG4pCQkJXAotKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8JCQlc Ci0gX19jb25zdGFudF9jbGVhcl91c2VyKHRvLCBuKSA6CQkJXAotIF9fZ2VuZXJpY19jbGVhcl91 c2VyKHRvLCBuKSkKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGNsZWFyX3VzZXIodm9pZCBfX3VzZXIg KnRvLCBzaXplX3QgbikKK3sKKwlpZiAodW5saWtlbHkoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUs IHRvLCBuKSkpCisJCXJldHVybiBuOworCWlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuKSkKKwkJ cmV0dXJuIF9fY29uc3RhbnRfY2xlYXJfdXNlcih0bywgbik7CisJZWxzZQorCQlyZXR1cm4gX19k b19jbGVhcl91c2VyKHRvLCBuKTsKK30KIAotI2RlZmluZSBjb3B5X2Zyb21fdXNlcih0bywgZnJv bSwgbikJCVwKLShfX2J1aWx0aW5fY29uc3RhbnRfcChuKSA/CQkJXAotIF9fY29uc3RhbnRfY29w eV9mcm9tX3VzZXIodG8sIGZyb20sIG4pIDoJXAotIF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih0 bywgZnJvbSwgbikpCitzdGF0aWMgaW5saW5lIHNpemVfdCBjb3B5X2Zyb21fdXNlcih2b2lkICp0 bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHNpemVfdCBuKQoreworCWlmICh1bmxpa2VseSgh YWNjZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkpIHsKKwkJbWVtc2V0KHRvLCAwLCBuKTsK KwkJcmV0dXJuIG47CisJfQorCWlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuKSkKKwkJcmV0dXJu IF9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodG8sIGZyb20sIG4pOworCWVsc2UKKwkJcmV0dXJu IF9fY29weV91c2VyX3plcm9pbmcodG8sIGZyb20sIG4pOworfQogCi0jZGVmaW5lIGNvcHlfdG9f dXNlcih0bywgZnJvbSwgbikJCVwKLShfX2J1aWx0aW5fY29uc3RhbnRfcChuKSA/CQkJXAotIF9f Y29uc3RhbnRfY29weV90b191c2VyKHRvLCBmcm9tLCBuKSA6CQlcCi0gX19nZW5lcmljX2NvcHlf dG9fdXNlcih0bywgZnJvbSwgbikpCitzdGF0aWMgaW5saW5lIHNpemVfdCBjb3B5X3RvX3VzZXIo dm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgbikKK3sKKwlpZiAodW5s aWtlbHkoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBuKSkpCisJCXJldHVybiBuOworCWlm IChfX2J1aWx0aW5fY29uc3RhbnRfcChuKSkKKwkJcmV0dXJuIF9fY29uc3RhbnRfY29weV90b191 c2VyKHRvLCBmcm9tLCBuKTsKKwllbHNlCisJCXJldHVybiBfX2NvcHlfdXNlcih0bywgZnJvbSwg bik7Cit9CiAKIC8qIFdlIGxldCB0aGUgX18gdmVyc2lvbnMgb2YgY29weV9mcm9tL3RvX3VzZXIg aW5saW5lLCBiZWNhdXNlIHRoZXkncmUgb2Z0ZW4KICAqIHVzZWQgaW4gZmFzdCBwYXRocyBhbmQg aGF2ZSBvbmx5IGEgc21hbGwgc3BhY2Ugb3ZlcmhlYWQuCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9p bmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5k ZXggM2FjOWE1OWQ2NWQ0Li44N2Q5ZTM0YzVkZjggMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2luY2x1 ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAg LTI2MywxOSArMjYzLDI1IEBAIGRvIHsJCQkJCQkJXAogZXh0ZXJuIGxvbmcgX19tZW1zZXRfdXNl cih2b2lkICpkc3QsIHVuc2lnbmVkIGxvbmcgY291bnQpOwogZXh0ZXJuIGxvbmcgX19tZW1jcHlf dXNlcih2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgdW5zaWduZWQgbG9uZyBjb3VudCk7CiAK LSNkZWZpbmUgY2xlYXJfdXNlcihkc3QsY291bnQpCQkJX19tZW1zZXRfdXNlcihfX19fZm9yY2Uo ZHN0KSwgKGNvdW50KSkKKyNkZWZpbmUgX19jbGVhcl91c2VyKGRzdCxjb3VudCkJCQlfX21lbXNl dF91c2VyKF9fX19mb3JjZShkc3QpLCAoY291bnQpKQogI2RlZmluZSBfX2NvcHlfZnJvbV91c2Vy X2luYXRvbWljKHRvLCBmcm9tLCBuKQlfX21lbWNweV91c2VyKCh0byksIF9fX19mb3JjZShmcm9t KSwgKG4pKQogI2RlZmluZSBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh0bywgZnJvbSwgbikJX19t ZW1jcHlfdXNlcihfX19fZm9yY2UodG8pLCAoZnJvbSksIChuKSkKIAogI2Vsc2UKIAotI2RlZmlu ZSBjbGVhcl91c2VyKGRzdCxjb3VudCkJCQkobWVtc2V0KF9fX19mb3JjZShkc3QpLCAwLCAoY291 bnQpKSwgMCkKKyNkZWZpbmUgX19jbGVhcl91c2VyKGRzdCxjb3VudCkJCQkobWVtc2V0KF9fX19m b3JjZShkc3QpLCAwLCAoY291bnQpKSwgMCkKICNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcl9pbmF0 b21pYyh0bywgZnJvbSwgbikJKG1lbWNweSgodG8pLCBfX19fZm9yY2UoZnJvbSksIChuKSksIDAp CiAjZGVmaW5lIF9fY29weV90b191c2VyX2luYXRvbWljKHRvLCBmcm9tLCBuKQkobWVtY3B5KF9f X19mb3JjZSh0byksIChmcm9tKSwgKG4pKSwgMCkKIAogI2VuZGlmCiAKLSNkZWZpbmUgX19jbGVh cl91c2VyIGNsZWFyX3VzZXIKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX211c3RfY2hl Y2sKK2NsZWFyX3VzZXIodm9pZCBfX3VzZXIgKnRvLCB1bnNpZ25lZCBsb25nIG4pCit7CisJaWYg KGxpa2VseShfX2FjY2Vzc19vayh0bywgbikpKQorCQluID0gX19jbGVhcl91c2VyKHRvLCBuKTsK KwlyZXR1cm4gbjsKK30KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fbXVzdF9jaGVj awogX19jb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNp Z25lZCBsb25nIG4pCmRpZmYgLS1naXQgYS9hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vdWFjY2Vz cy5oIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCBlNDEyN2U0ZDZh NWIuLjI1ZmM5MDQ5ZGI4YSAxMDA2NDQKLS0tIGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3Vh Y2Nlc3MuaAorKysgYi9hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0xMDIs NyArMTAyLDggQEAgc3RhdGljIGlubGluZSBsb25nIGhleGFnb25fc3RybmNweV9mcm9tX3VzZXIo Y2hhciAqZHN0LCBjb25zdCBjaGFyIF9fdXNlciAqc3JjLAogewogCWxvbmcgcmVzID0gX19zdHJu bGVuX3VzZXIoc3JjLCBuKTsKIAotCS8qIHJldHVybiBmcm9tIHN0cm5sZW4gY2FuJ3QgYmUgemVy byAtLSB0aGF0IHdvdWxkIGJlIHJ1YmJpc2guICovCisJaWYgKHVubGlrZWx5KCFyZXMpKQorCQly ZXR1cm4gLUVGQVVMVDsKIAogCWlmIChyZXMgPiBuKSB7CiAJCWNvcHlfZnJvbV91c2VyKGRzdCwg c3JjLCBuKTsKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9h cmNoL2lhNjQvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDQ0OWM4YzBmYTJiZC4uODEwOTI2 YzU2ZTMxIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBi L2FyY2gvaWE2NC9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTI2MiwxNyArMjYyLDE1IEBAIF9f Y29weV9mcm9tX3VzZXIgKHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWdu ZWQgbG9uZyBjb3VudCkKIAlfX2N1X2xlbjsJCQkJCQkJCQlcCiB9KQogCi0jZGVmaW5lIGNvcHlf ZnJvbV91c2VyKHRvLCBmcm9tLCBuKQkJCQkJCQlcCi0oewkJCQkJCQkJCQkJXAotCXZvaWQgKl9f Y3VfdG8gPSAodG8pOwkJCQkJCQkJXAotCWNvbnN0IHZvaWQgX191c2VyICpfX2N1X2Zyb20gPSAo ZnJvbSk7CQkJCQkJXAotCWxvbmcgX19jdV9sZW4gPSAobik7CQkJCQkJCQlcCi0JCQkJCQkJCQkJ CVwKLQlfX2Noa191c2VyX3B0cihfX2N1X2Zyb20pOwkJCQkJCQlcCi0JaWYgKF9fYWNjZXNzX29r KF9fY3VfZnJvbSwgX19jdV9sZW4sIGdldF9mcygpKSkJCQkJCVwKLQkJX19jdV9sZW4gPSBfX2Nv cHlfdXNlcigoX19mb3JjZSB2b2lkIF9fdXNlciAqKSBfX2N1X3RvLCBfX2N1X2Zyb20sIF9fY3Vf bGVuKTsJXAotCV9fY3VfbGVuOwkJCQkJCQkJCVwKLX0pCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcKK2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwg dW5zaWduZWQgbG9uZyBuKQoreworCWlmIChsaWtlbHkoX19hY2Nlc3Nfb2soZnJvbSwgbiwgZ2V0 X2ZzKCkpKSkKKwkJbiA9IF9fY29weV91c2VyKChfX2ZvcmNlIHZvaWQgX191c2VyICopIHRvLCBm cm9tLCBuKTsKKwllbHNlCisJCW1lbXNldCh0bywgMCwgbik7CisJcmV0dXJuIG47Cit9CiAKICNk ZWZpbmUgX19jb3B5X2luX3VzZXIodG8sIGZyb20sIHNpemUpCV9fY29weV91c2VyKCh0byksIChm cm9tKSwgKHNpemUpKQogCmRpZmYgLS1naXQgYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vdWFjY2Vz cy5oIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCA4NGZlN2JhNTMwMzUu LmMzOTNlOGY1N2NmNyAxMDA2NDQKLS0tIGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu aAorKysgYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0yMTUsNyArMjE1LDcg QEAgZXh0ZXJuIGludCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwogI2Rl ZmluZSBfX2dldF91c2VyX25vY2hlY2soeCxwdHIsc2l6ZSkJCQkJCVwKICh7CQkJCQkJCQkJXAog CWxvbmcgX19ndV9lcnIgPSAwOwkJCQkJCVwKLQl1bnNpZ25lZCBsb25nIF9fZ3VfdmFsOwkJCQkJ CVwKKwl1bnNpZ25lZCBsb25nIF9fZ3VfdmFsID0gMDsJCQkJCVwKIAltaWdodF9mYXVsdCgpOwkJ CQkJCQlcCiAJX19nZXRfdXNlcl9zaXplKF9fZ3VfdmFsLChwdHIpLChzaXplKSxfX2d1X2Vycik7 CQlcCiAJKHgpID0gKF9fdHlwZW9mX18oKihwdHIpKSlfX2d1X3ZhbDsJCQkJXApkaWZmIC0tZ2l0 IGEvYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9jbXB4Y2hnX2xua2dldC5oIGIvYXJjaC9tZXRhZy9p bmNsdWRlL2FzbS9jbXB4Y2hnX2xua2dldC5oCmluZGV4IDAxNTRlMjgwN2ViYi4uMjM2OWFkMzk0 ODc2IDEwMDY0NAotLS0gYS9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL2NtcHhjaGdfbG5rZ2V0LmgK KysrIGIvYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9jbXB4Y2hnX2xua2dldC5oCkBAIC03Myw3ICs3 Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2NtcHhjaGdfdTMyKHZvbGF0aWxl IGludCAqbSwgdW5zaWduZWQgbG9uZyBvbGQsCiAJCSAgICAgICIJRENBQ0hFCVslMl0sICUwXG4i CiAjZW5kaWYKIAkJICAgICAgIjI6XG4iCi0JCSAgICAgIDogIj0mZCIgKHRlbXApLCAiPSZkYSIg KHJldHZhbCkKKwkJICAgICAgOiAiPSZkIiAodGVtcCksICI9JmQiIChyZXR2YWwpCiAJCSAgICAg IDogImRhIiAobSksICJiZCIgKG9sZCksICJkYSIgKG5ldykKIAkJICAgICAgOiAiY2MiCiAJCSAg ICAgICk7CmRpZmYgLS1naXQgYS9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2Fy Y2gvbWV0YWcvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDA3NDhiMGE5Nzk4Ni4uNzg0MWYy MjkwMzg1IDEwMDY0NAotLS0gYS9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysg Yi9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMTk5LDggKzE5OSw5IEBAIGV4 dGVybiB1bnNpZ25lZCBsb25nIF9fbXVzdF9jaGVjayBfX2NvcHlfdXNlcl96ZXJvaW5nKHZvaWQg KnRvLAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBjb3B5X2Zyb21fdXNlcih2b2lkICp0 bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLQlpZiAoYWNj ZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkKKwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJ RllfUkVBRCwgZnJvbSwgbikpKQogCQlyZXR1cm4gX19jb3B5X3VzZXJfemVyb2luZyh0bywgZnJv bSwgbik7CisJbWVtc2V0KHRvLCAwLCBuKTsKIAlyZXR1cm4gbjsKIH0KIApkaWZmIC0tZ2l0IGEv YXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gvbWljcm9ibGF6ZS9p bmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggMGFhMDA1NzAzYTBiLi4xODU4ODg3MTA1YmEgMTAw NjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS91YWNjZXNzLmgKKysrIGIvYXJj aC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMjI2LDcgKzIyNiw3IEBAIGV4 dGVybiBsb25nIF9fdXNlcl9iYWQodm9pZCk7CiAKICNkZWZpbmUgX19nZXRfdXNlcih4LCBwdHIp CQkJCQkJXAogKHsJCQkJCQkJCQlcCi0JdW5zaWduZWQgbG9uZyBfX2d1X3ZhbDsJCQkJCQlcCisJ dW5zaWduZWQgbG9uZyBfX2d1X3ZhbCA9IDA7CQkJCQlcCiAJLyp1bnNpZ25lZCBsb25nIF9fZ3Vf cHRyID0gKHVuc2lnbmVkIGxvbmcpKHB0cik7Ki8JCVwKIAlsb25nIF9fZ3VfZXJyOwkJCQkJCQlc CiAJc3dpdGNoIChzaXplb2YoKihwdHIpKSkgewkJCQkJXApAQCAtMzcxLDEwICszNzEsMTMgQEAg ZXh0ZXJuIGxvbmcgX191c2VyX2JhZCh2b2lkKTsKIHN0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zy b21fdXNlcih2b2lkICp0bywKIAkJY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxv bmcgbikKIHsKKwl1bnNpZ25lZCBsb25nIHJlcyA9IG47CiAJbWlnaHRfZmF1bHQoKTsKLQlpZiAo YWNjZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkKLQkJcmV0dXJuIF9fY29weV9mcm9tX3Vz ZXIodG8sIGZyb20sIG4pOwotCXJldHVybiBuOworCWlmIChsaWtlbHkoYWNjZXNzX29rKFZFUklG WV9SRUFELCBmcm9tLCBuKSkpCisJCXJlcyA9IF9fY29weV9mcm9tX3VzZXIodG8sIGZyb20sIG4p OworCWlmICh1bmxpa2VseShyZXMpKQorCQltZW1zZXQodG8gKyAobiAtIHJlcyksIDAsIHJlcyk7 CisJcmV0dXJuIHJlczsKIH0KIAogI2RlZmluZSBfX2NvcHlfdG9fdXNlcih0bywgZnJvbSwgbikJ XApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGFyYXZpcnQva2VybmVs LWVudHJ5LWluaXQuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBhcmF2aXJ0L2tlcm5l bC1lbnRyeS1pbml0LmgKaW5kZXggMmY4MmJmYTNhNzczLi5jOWY1NzY5ZGZjOGYgMTAwNjQ0Ci0t LSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBhcmF2aXJ0L2tlcm5lbC1lbnRyeS1pbml0 LmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGFyYXZpcnQva2VybmVsLWVudHJ5 LWluaXQuaApAQCAtMTEsMTEgKzExLDEzIEBACiAjZGVmaW5lIENQMF9FQkFTRSAkMTUsIDEKIAog CS5tYWNybyAga2VybmVsX2VudHJ5X3NldHVwCisjaWZkZWYgQ09ORklHX1NNUAogCW1mYzAJdDAs IENQMF9FQkFTRQogCWFuZGkJdDAsIHQwLCAweDNmZgkJIyBDUFVOdW0KIAliZXF6CXQwLCAxZgog CSMgQ1BVcyBvdGhlciB0aGFuIHplcm8gZ290byBzbXBfYm9vdHN0cmFwCiAJaglzbXBfYm9vdHN0 cmFwCisjZW5kaWYgLyogQ09ORklHX1NNUCAqLwogCiAxOgogCS5lbmRtCmRpZmYgLS1naXQgYS9h cmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Bn dGFibGUuaAppbmRleCAxNDhhNDc2NmJmNGQuLmY5NGQzOWY5ZTIxZCAxMDA2NDQKLS0tIGEvYXJj aC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20v cGd0YWJsZS5oCkBAIC01NzIsNyArNTcyLDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2Ug KnBtZF9wYWdlKHBtZF90IHBtZCkKIAogc3RhdGljIGlubGluZSBwbWRfdCBwbWRfbW9kaWZ5KHBt ZF90IHBtZCwgcGdwcm90X3QgbmV3cHJvdCkKIHsKLQlwbWRfdmFsKHBtZCkgPSAocG1kX3ZhbChw bWQpICYgX1BBR0VfQ0hHX01BU0spIHwgcGdwcm90X3ZhbChuZXdwcm90KTsKKwlwbWRfdmFsKHBt ZCkgPSAocG1kX3ZhbChwbWQpICYgKF9QQUdFX0NIR19NQVNLCisjaWZkZWYgX1BBR0VfSFVHRQor CQkJCQl8IF9QQUdFX0hVR0UKKyNlbmRpZgorCQkJCSkpIHwgcGdwcm90X3ZhbChuZXdwcm90KTsK IAlyZXR1cm4gcG1kOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vcjRr Y2FjaGUuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9yNGtjYWNoZS5oCmluZGV4IGVkMDM4ZDdj MzQxMC4uN2I3NDY2OGQzZTIwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vcjRr Y2FjaGUuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vcjRrY2FjaGUuaApAQCAtMjYzLDcg KzI2MywxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJvdGVjdGVkX3dyaXRlYmFja19kY2FjaGVf bGluZSh1bnNpZ25lZCBsb25nIGFkZHIpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBwcm90ZWN0ZWRf d3JpdGViYWNrX3NjYWNoZV9saW5lKHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKKyNpZmRlZiBDT05G SUdfRVZBCisJcHJvdGVjdGVkX2NhY2hlZV9vcChIaXRfV3JpdGViYWNrX0ludl9TRCwgYWRkcik7 CisjZWxzZQogCXByb3RlY3RlZF9jYWNoZV9vcChIaXRfV3JpdGViYWNrX0ludl9TRCwgYWRkcik7 CisjZW5kaWYKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YWNj ZXNzLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDE2ZTBlYTZiOTlk OC4uY2I0YTNlZTMxOTgzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFjY2Vz cy5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTE0LDYgKzE0LDcg QEAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgog I2luY2x1ZGUgPGxpbnV4L3RocmVhZF9pbmZvLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+ CiAjaW5jbHVkZSA8YXNtL2FzbS1ldmEuaD4KIAogLyoKQEAgLTExMzksNiArMTE0MCw4IEBAIGV4 dGVybiBzaXplX3QgX19jb3B5X2luX3VzZXJfZXZhKHZvaWQgKl9fdG8sIGNvbnN0IHZvaWQgKl9f ZnJvbSwgc2l6ZV90IF9fbik7CiAJCQlfX2N1X2xlbiA9IF9faW52b2tlX2NvcHlfZnJvbV91c2Vy KF9fY3VfdG8sCVwKIAkJCQkJCQkgICBfX2N1X2Zyb20sCVwKIAkJCQkJCQkgICBfX2N1X2xlbik7 ICAgXAorCQl9IGVsc2UgewkJCQkJCVwKKwkJCW1lbXNldChfX2N1X3RvLCAwLCBfX2N1X2xlbik7 CQkJXAogCQl9CQkJCQkJCVwKIAl9CQkJCQkJCQlcCiAJX19jdV9sZW47CQkJCQkJCVwKZGlmZiAt LWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGw2NC1uMzIuUyBiL2FyY2gvbWlwcy9rZXJuZWwv c2NhbGw2NC1uMzIuUwppbmRleCA0N2RkNWY5MDE2YzEuLjI4YTJjYjJjNmM5YiAxMDA2NDQKLS0t IGEvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0LW4zMi5TCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwv c2NhbGw2NC1uMzIuUwpAQCAtMzUzLDcgKzM1Myw3IEBAIEVYUE9SVChzeXNuMzJfY2FsbF90YWJs ZSkKIAlQVFIJc3lzX25pX3N5c2NhbGwJCQkvKiBhdmFpbGFibGUsIHdhcyBzZXRhbHRyb290ICov CiAJUFRSCXN5c19hZGRfa2V5CiAJUFRSCXN5c19yZXF1ZXN0X2tleQotCVBUUglzeXNfa2V5Y3Rs CQkJLyogNjI0NSAqLworCVBUUgljb21wYXRfc3lzX2tleWN0bAkJLyogNjI0NSAqLwogCVBUUglz eXNfc2V0X3RocmVhZF9hcmVhCiAJUFRSCXN5c19pbm90aWZ5X2luaXQKIAlQVFIJc3lzX2lub3Rp ZnlfYWRkX3dhdGNoCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbzMyLlMg Yi9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbzMyLlMKaW5kZXggN2Y1ZmViMjVhZTA0Li4zYjcy NmI5MjI5YjQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGw2NC1vMzIuUworKysg Yi9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbzMyLlMKQEAgLTQ5MSw3ICs0OTEsNyBAQCBFWFBP UlQoc3lzMzJfY2FsbF90YWJsZSkKIAlQVFIJc3lzX25pX3N5c2NhbGwJCQkvKiBhdmFpbGFibGUs IHdhcyBzZXRhbHRyb290ICovCiAJUFRSCXN5c19hZGRfa2V5CQkJLyogNDI4MCAqLwogCVBUUglz eXNfcmVxdWVzdF9rZXkKLQlQVFIJc3lzX2tleWN0bAorCVBUUgljb21wYXRfc3lzX2tleWN0bAog CVBUUglzeXNfc2V0X3RocmVhZF9hcmVhCiAJUFRSCXN5c19pbm90aWZ5X2luaXQKIAlQVFIJc3lz X2lub3RpZnlfYWRkX3dhdGNoCQkvKiA0Mjg1ICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva3Zt L2t2bV9taXBzLmMgYi9hcmNoL21pcHMva3ZtL2t2bV9taXBzLmMKaW5kZXggMmM4MWMyYzllOGRj Li43MmFhZDJhOWE2YjQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rdm0va3ZtX21pcHMuYworKysg Yi9hcmNoL21pcHMva3ZtL2t2bV9taXBzLmMKQEAgLTEyMTEsNyArMTIxMSw3IEBAIGludCBfX2lu aXQga3ZtX21pcHNfaW5pdCh2b2lkKQogCSAqLwogCWt2bV9taXBzX2dmbl90b19wZm4gPSBnZm5f dG9fcGZuOwogCWt2bV9taXBzX3JlbGVhc2VfcGZuX2NsZWFuID0ga3ZtX3JlbGVhc2VfcGZuX2Ns ZWFuOwotCWt2bV9taXBzX2lzX2Vycm9yX3BmbiA9IGlzX2Vycm9yX3BmbjsKKwlrdm1fbWlwc19p c19lcnJvcl9wZm4gPSBpc19lcnJvcl9ub3Nsb3RfcGZuOwogCiAJcHJfaW5mbygiS1ZNL01JUFMg SW5pdGlhbGl6ZWRcbiIpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2t2bS9r dm1fbWlwc19lbXVsLmMgYi9hcmNoL21pcHMva3ZtL2t2bV9taXBzX2VtdWwuYwppbmRleCAxOTgz Njc4ODgzYzkuLmJhYzJiYmE0MWYzOCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2t2bS9rdm1fbWlw c19lbXVsLmMKKysrIGIvYXJjaC9taXBzL2t2bS9rdm1fbWlwc19lbXVsLmMKQEAgLTgxNyw2ICs4 MTcsNDcgQEAgZW51bSBlbXVsYXRpb25fcmVzdWx0IGt2bV9taXBzX2VtdWxfdGxicihzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpCiAJcmV0dXJuIGVyOwogfQogCisvKioKKyAqIGt2bV9taXBzX2ludmFs aWRhdGVfZ3Vlc3RfdGxiKCkgLSBJbmRpY2F0ZXMgYSBjaGFuZ2UgaW4gZ3Vlc3QgTU1VIG1hcC4K KyAqIEB2Y3B1OglWQ1BVIHdpdGggY2hhbmdlZCBtYXBwaW5ncy4KKyAqIEB0bGI6CVRMQiBlbnRy eSBiZWluZyByZW1vdmVkLgorICoKKyAqIFRoaXMgaXMgY2FsbGVkIHRvIGluZGljYXRlIGEgc2lu Z2xlIGNoYW5nZSBpbiBndWVzdCBNTVUgbWFwcGluZ3MsIHNvIHRoYXQgd2UKKyAqIGNhbiBhcnJh bmdlIFRMQiBmbHVzaGVzIG9uIHRoaXMgYW5kIG90aGVyIENQVXMuCisgKi8KK3N0YXRpYyB2b2lk IGt2bV9taXBzX2ludmFsaWRhdGVfZ3Vlc3RfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKKwkJ CQkJICBzdHJ1Y3Qga3ZtX21pcHNfdGxiICp0bGIpCit7CisJaW50IGNwdSwgaTsKKwlib29sIHVz ZXI7CisKKwkvKiBObyBuZWVkIHRvIGZsdXNoIGZvciBlbnRyaWVzIHdoaWNoIGFyZSBhbHJlYWR5 IGludmFsaWQgKi8KKwlpZiAoISgodGxiLT50bGJfbG8wIHwgdGxiLT50bGJfbG8xKSAmIE1JUFMz X1BHX1YpKQorCQlyZXR1cm47CisJLyogVXNlciBhZGRyZXNzIHNwYWNlIGRvZXNuJ3QgbmVlZCBm bHVzaGluZyBmb3IgS1NlZzIvMyBjaGFuZ2VzICovCisJdXNlciA9IHRsYi0+dGxiX2hpIDwgS1ZN X0dVRVNUX0tTRUcwOworCisJcHJlZW1wdF9kaXNhYmxlKCk7CisKKwkvKgorCSAqIFByb2JlIHRo ZSBzaGFkb3cgaG9zdCBUTEIgZm9yIHRoZSBlbnRyeSBiZWluZyBvdmVyd3JpdHRlbiwgaWYgb25l CisJICogbWF0Y2hlcywgaW52YWxpZGF0ZSBpdAorCSAqLworCWt2bV9taXBzX2hvc3RfdGxiX2lu dih2Y3B1LCB0bGItPnRsYl9oaSk7CisKKwkvKiBJbnZhbGlkYXRlIHRoZSB3aG9sZSBBU0lEIG9u IG90aGVyIENQVXMgKi8KKwljcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisJZm9yX2VhY2hfcG9z c2libGVfY3B1KGkpIHsKKwkJaWYgKGkgPT0gY3B1KQorCQkJY29udGludWU7CisJCWlmICh1c2Vy KQorCQkJdmNwdS0+YXJjaC5ndWVzdF91c2VyX2FzaWRbaV0gPSAwOworCQl2Y3B1LT5hcmNoLmd1 ZXN0X2tlcm5lbF9hc2lkW2ldID0gMDsKKwl9CisKKwlwcmVlbXB0X2VuYWJsZSgpOworfQorCiAv KiBXcml0ZSBHdWVzdCBUTEIgRW50cnkgQCBJbmRleCAqLwogZW51bSBlbXVsYXRpb25fcmVzdWx0 IGt2bV9taXBzX2VtdWxfdGxid2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewpAQCAtODM4LDEw ICs4NzksOCBAQCBlbnVtIGVtdWxhdGlvbl9yZXN1bHQga3ZtX21pcHNfZW11bF90bGJ3aShzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJfQogCiAJdGxiID0gJnZjcHUtPmFyY2guZ3Vlc3RfdGxiW2lu ZGV4XTsKLSNpZiAxCi0JLyogUHJvYmUgdGhlIHNoYWRvdyBob3N0IFRMQiBmb3IgdGhlIGVudHJ5 IGJlaW5nIG92ZXJ3cml0dGVuLCBpZiBvbmUgbWF0Y2hlcywgaW52YWxpZGF0ZSBpdCAqLwotCWt2 bV9taXBzX2hvc3RfdGxiX2ludih2Y3B1LCB0bGItPnRsYl9oaSk7Ci0jZW5kaWYKKworCWt2bV9t aXBzX2ludmFsaWRhdGVfZ3Vlc3RfdGxiKHZjcHUsIHRsYik7CiAKIAl0bGItPnRsYl9tYXNrID0g a3ZtX3JlYWRfYzBfZ3Vlc3RfcGFnZW1hc2soY29wMCk7CiAJdGxiLT50bGJfaGkgPSBrdm1fcmVh ZF9jMF9ndWVzdF9lbnRyeWhpKGNvcDApOwpAQCAtODgwLDEwICs5MTksNyBAQCBlbnVtIGVtdWxh dGlvbl9yZXN1bHQga3ZtX21pcHNfZW11bF90bGJ3cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAK IAl0bGIgPSAmdmNwdS0+YXJjaC5ndWVzdF90bGJbaW5kZXhdOwogCi0jaWYgMQotCS8qIFByb2Jl IHRoZSBzaGFkb3cgaG9zdCBUTEIgZm9yIHRoZSBlbnRyeSBiZWluZyBvdmVyd3JpdHRlbiwgaWYg b25lIG1hdGNoZXMsIGludmFsaWRhdGUgaXQgKi8KLQlrdm1fbWlwc19ob3N0X3RsYl9pbnYodmNw dSwgdGxiLT50bGJfaGkpOwotI2VuZGlmCisJa3ZtX21pcHNfaW52YWxpZGF0ZV9ndWVzdF90bGIo dmNwdSwgdGxiKTsKIAogCXRsYi0+dGxiX21hc2sgPSBrdm1fcmVhZF9jMF9ndWVzdF9wYWdlbWFz ayhjb3AwKTsKIAl0bGItPnRsYl9oaSA9IGt2bV9yZWFkX2MwX2d1ZXN0X2VudHJ5aGkoY29wMCk7 CkBAIC05MjYsNiArOTYyLDcgQEAga3ZtX21pcHNfZW11bGF0ZV9DUDAodWludDMyX3QgaW5zdCwg dWludDMyX3QgKm9wYywgdWludDMyX3QgY2F1c2UsCiAJaW50MzJfdCBydCwgcmQsIGNvcHosIHNl bCwgY29fYml0LCBvcDsKIAl1aW50MzJfdCBwYyA9IHZjcHUtPmFyY2gucGM7CiAJdW5zaWduZWQg bG9uZyBjdXJyX3BjOworCWludCBjcHUsIGk7CiAKIAkvKgogCSAqIFVwZGF0ZSBQQyBhbmQgaG9s ZCBvbnRvIGN1cnJlbnQgUEMgaW4gY2FzZSB0aGVyZSBpcwpAQCAtMTAzNyw4ICsxMDc0LDE2IEBA IGt2bV9taXBzX2VtdWxhdGVfQ1AwKHVpbnQzMl90IGluc3QsIHVpbnQzMl90ICpvcGMsIHVpbnQz Ml90IGNhdXNlLAogCQkJCQkgICAgIEFTSURfTUFTSywKIAkJCQkJICAgICB2Y3B1LT5hcmNoLmdw cnNbcnRdICYgQVNJRF9NQVNLKTsKIAorCQkJCQlwcmVlbXB0X2Rpc2FibGUoKTsKIAkJCQkJLyog QmxvdyBhd2F5IHRoZSBzaGFkb3cgaG9zdCBUTEJzICovCiAJCQkJCWt2bV9taXBzX2ZsdXNoX2hv c3RfdGxiKDEpOworCQkJCQljcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisJCQkJCWZvcl9lYWNo X3Bvc3NpYmxlX2NwdShpKQorCQkJCQkJaWYgKGkgIT0gY3B1KSB7CisJCQkJCQkJdmNwdS0+YXJj aC5ndWVzdF91c2VyX2FzaWRbaV0gPSAwOworCQkJCQkJCXZjcHUtPmFyY2guZ3Vlc3Rfa2VybmVs X2FzaWRbaV0gPSAwOworCQkJCQkJfQorCQkJCQlwcmVlbXB0X2VuYWJsZSgpOwogCQkJCX0KIAkJ CQlrdm1fd3JpdGVfYzBfZ3Vlc3RfZW50cnloaShjb3AwLAogCQkJCQkJCSAgIHZjcHUtPmFyY2gu Z3Byc1tydF0pOwpAQCAtMTQ4MSw5ICsxNTI2LDEzIEBAIGt2bV9taXBzX2VtdWxhdGVfY2FjaGUo dWludDMyX3QgaW5zdCwgdWludDMyX3QgKm9wYywgdWludDMyX3QgY2F1c2UsCiAKIAlwcmVlbXB0 X2Rpc2FibGUoKTsKIAlpZiAoS1ZNX0dVRVNUX0tTRUdYKHZhKSA9PSBLVk1fR1VFU1RfS1NFRzAp IHsKLQotCQlpZiAoa3ZtX21pcHNfaG9zdF90bGJfbG9va3VwKHZjcHUsIHZhKSA8IDApIHsKLQkJ CWt2bV9taXBzX2hhbmRsZV9rc2VnMF90bGJfZmF1bHQodmEsIHZjcHUpOworCQlpZiAoa3ZtX21p cHNfaG9zdF90bGJfbG9va3VwKHZjcHUsIHZhKSA8IDAgJiYKKwkJICAgIGt2bV9taXBzX2hhbmRs ZV9rc2VnMF90bGJfZmF1bHQodmEsIHZjcHUpKSB7CisJCQlrdm1fZXJyKCIlczogaGFuZGxpbmcg bWFwcGVkIGtzZWcwIHRsYiBmYXVsdCBmb3IgJWx4LCB2Y3B1OiAlcCwgQVNJRDogJSNseFxuIiwK KwkJCQlfX2Z1bmNfXywgdmEsIHZjcHUsIHJlYWRfYzBfZW50cnloaSgpKTsKKwkJCWVyID0gRU1V TEFURV9GQUlMOworCQkJcHJlZW1wdF9lbmFibGUoKTsKKwkJCWdvdG8gZG9uZTsKIAkJfQogCX0g ZWxzZSBpZiAoKEtWTV9HVUVTVF9LU0VHWCh2YSkgPCBLVk1fR1VFU1RfS1NFRzApIHx8CiAJCSAg IEtWTV9HVUVTVF9LU0VHWCh2YSkgPT0gS1ZNX0dVRVNUX0tTRUcyMykgewpAQCAtMTUxNiwxMSAr MTU2NSwxOSBAQCBrdm1fbWlwc19lbXVsYXRlX2NhY2hlKHVpbnQzMl90IGluc3QsIHVpbnQzMl90 ICpvcGMsIHVpbnQzMl90IGNhdXNlLAogCQkJCQkJCQlydW4sIHZjcHUpOwogCQkJCXByZWVtcHRf ZW5hYmxlKCk7CiAJCQkJZ290byBkb250X3VwZGF0ZV9wYzsKLQkJCX0gZWxzZSB7Ci0JCQkJLyog V2UgZmF1bHQgYW4gZW50cnkgZnJvbSB0aGUgZ3Vlc3QgdGxiIHRvIHRoZSBzaGFkb3cgaG9zdCBU TEIgKi8KLQkJCQlrdm1fbWlwc19oYW5kbGVfbWFwcGVkX3NlZ190bGJfZmF1bHQodmNwdSwgdGxi LAotCQkJCQkJCQkgICAgIE5VTEwsCi0JCQkJCQkJCSAgICAgTlVMTCk7CisJCQl9CisJCQkvKgor CQkJICogV2UgZmF1bHQgYW4gZW50cnkgZnJvbSB0aGUgZ3Vlc3QgdGxiIHRvIHRoZQorCQkJICog c2hhZG93IGhvc3QgVExCCisJCQkgKi8KKwkJCWlmIChrdm1fbWlwc19oYW5kbGVfbWFwcGVkX3Nl Z190bGJfZmF1bHQodmNwdSwgdGxiLAorCQkJCQkJCQkgTlVMTCwgTlVMTCkpIHsKKwkJCQlrdm1f ZXJyKCIlczogaGFuZGxpbmcgbWFwcGVkIHNlZyB0bGIgZmF1bHQgZm9yICVseCwgaW5kZXg6ICV1 LCB2Y3B1OiAlcCwgQVNJRDogJSNseFxuIiwKKwkJCQkJX19mdW5jX18sIHZhLCBpbmRleCwgdmNw dSwKKwkJCQkJcmVhZF9jMF9lbnRyeWhpKCkpOworCQkJCWVyID0gRU1VTEFURV9GQUlMOworCQkJ CXByZWVtcHRfZW5hYmxlKCk7CisJCQkJZ290byBkb25lOwogCQkJfQogCQl9CiAJfSBlbHNlIHsK QEAgLTIzMzUsOCArMjM5MiwxMyBAQCBrdm1fbWlwc19oYW5kbGVfdGxibWlzcyh1bnNpZ25lZCBs b25nIGNhdXNlLCB1aW50MzJfdCAqb3BjLAogCQkJICAgICgiSW5qZWN0aW5nIGhpOiAlI2x4LCBs bzA6ICUjbHgsIGxvMTogJSNseCBpbnRvIHNoYWRvdyBob3N0IFRMQlxuIiwKIAkJCSAgICAgdGxi LT50bGJfaGksIHRsYi0+dGxiX2xvMCwgdGxiLT50bGJfbG8xKTsKIAkJCS8qIE9LIHdlIGhhdmUg YSBHdWVzdCBUTEIgZW50cnksIG5vdyBpbmplY3QgaXQgaW50byB0aGUgc2hhZG93IGhvc3QgVExC ICovCi0JCQlrdm1fbWlwc19oYW5kbGVfbWFwcGVkX3NlZ190bGJfZmF1bHQodmNwdSwgdGxiLCBO VUxMLAotCQkJCQkJCSAgICAgTlVMTCk7CisJCQlpZiAoa3ZtX21pcHNfaGFuZGxlX21hcHBlZF9z ZWdfdGxiX2ZhdWx0KHZjcHUsIHRsYiwKKwkJCQkJCQkJIE5VTEwsIE5VTEwpKSB7CisJCQkJa3Zt X2VycigiJXM6IGhhbmRsaW5nIG1hcHBlZCBzZWcgdGxiIGZhdWx0IGZvciAlbHgsIGluZGV4OiAl dSwgdmNwdTogJXAsIEFTSUQ6ICUjbHhcbiIsCisJCQkJCV9fZnVuY19fLCB2YSwgaW5kZXgsIHZj cHUsCisJCQkJCXJlYWRfYzBfZW50cnloaSgpKTsKKwkJCQllciA9IEVNVUxBVEVfRkFJTDsKKwkJ CX0KIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2t2bS9rdm1fdGxiLmMgYi9hcmNo L21pcHMva3ZtL2t2bV90bGIuYwppbmRleCA4YTVhNzAwYWQ4ZGUuLjFmZGU3MjM2MzgyZCAxMDA2 NDQKLS0tIGEvYXJjaC9taXBzL2t2bS9rdm1fdGxiLmMKKysrIGIvYXJjaC9taXBzL2t2bS9rdm1f dGxiLmMKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgaW50IGt2bV9taXBzX21hcF9wYWdlKHN0 cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuKQogICAgICAgICBzcmN1X2lkeCA9IHNyY3VfcmVhZF9s b2NrKCZrdm0tPnNyY3UpOwogCXBmbiA9IGt2bV9taXBzX2dmbl90b19wZm4oa3ZtLCBnZm4pOwog Ci0JaWYgKGt2bV9taXBzX2lzX2Vycm9yX3BmbihwZm4pKSB7CisJaWYgKGlzX2Vycm9yX25vc2xv dF9wZm4ocGZuKSkgewogCQlrdm1fZXJyKCJDb3VsZG4ndCBnZXQgcGZuIGZvciBnZm4gJSMiIFBS SXg2NCAiIVxuIiwgZ2ZuKTsKIAkJZXJyID0gLUVGQVVMVDsKIAkJZ290byBvdXQ7CkBAIC0yNzgs NyArMjc4LDcgQEAgaW50IGt2bV9taXBzX2hhbmRsZV9rc2VnMF90bGJfZmF1bHQodW5zaWduZWQg bG9uZyBiYWR2YWRkciwKIAl9CiAKIAlnZm4gPSAoS1ZNX0dVRVNUX0NQSFlTQUREUihiYWR2YWRk cikgPj4gUEFHRV9TSElGVCk7Ci0JaWYgKGdmbiA+PSBrdm0tPmFyY2guZ3Vlc3RfcG1hcF9ucGFn ZXMpIHsKKwlpZiAoKGdmbiB8IDEpID49IGt2bS0+YXJjaC5ndWVzdF9wbWFwX25wYWdlcykgewog CQlrdm1fZXJyKCIlczogSW52YWxpZCBnZm46ICUjbGx4LCBCYWRWYWRkcjogJSNseFxuIiwgX19m dW5jX18sCiAJCQlnZm4sIGJhZHZhZGRyKTsKIAkJa3ZtX21pcHNfZHVtcF9ob3N0X3RsYnMoKTsK QEAgLTM2MSwyMSArMzYxLDM5IEBAIGt2bV9taXBzX2hhbmRsZV9tYXBwZWRfc2VnX3RsYl9mYXVs dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJdW5zaWduZWQgbG9uZyBlbnRyeWhpID0gMCwgZW50 cnlsbzAgPSAwLCBlbnRyeWxvMSA9IDA7CiAJc3RydWN0IGt2bSAqa3ZtID0gdmNwdS0+a3ZtOwog CXBmbl90IHBmbjAsIHBmbjE7CisJZ2ZuX3QgZ2ZuMCwgZ2ZuMTsKKwlsb25nIHRsYl9sb1syXTsK KworCisJdGxiX2xvWzBdID0gdGxiLT50bGJfbG8wOworCXRsYl9sb1sxXSA9IHRsYi0+dGxiX2xv MTsKKworCS8qCisJICogVGhlIGNvbW1wYWdlIGFkZHJlc3MgbXVzdCBub3QgYmUgbWFwcGVkIHRv IGFueXRoaW5nIGVsc2UgaWYgdGhlIGd1ZXN0CisJICogVExCIGNvbnRhaW5zIGVudHJpZXMgbmVh cmJ5LCBvciBjb21tcGFnZSBhY2Nlc3NlcyB3aWxsIGJyZWFrLgorCSAqLworCWlmICghKCh0bGIt PnRsYl9oaSBeIEtWTV9HVUVTVF9DT01NUEFHRV9BRERSKSAmCisJCQlWUE4yX01BU0sgJiAoUEFH RV9NQVNLIDw8IDEpKSkKKwkJdGxiX2xvWyhLVk1fR1VFU1RfQ09NTVBBR0VfQUREUiA+PiBQQUdF X1NISUZUKSAmIDFdID0gMDsKKworCWdmbjAgPSBtaXBzM190bGJwZm5fdG9fcGFkZHIodGxiX2xv WzBdKSA+PiBQQUdFX1NISUZUOworCWdmbjEgPSBtaXBzM190bGJwZm5fdG9fcGFkZHIodGxiX2xv WzFdKSA+PiBQQUdFX1NISUZUOworCWlmIChnZm4wID49IGt2bS0+YXJjaC5ndWVzdF9wbWFwX25w YWdlcyB8fAorCSAgICBnZm4xID49IGt2bS0+YXJjaC5ndWVzdF9wbWFwX25wYWdlcykgeworCQlr dm1fZXJyKCIlczogSW52YWxpZCBnZm46IFslI2xseCwgJSNsbHhdLCBFSGk6ICUjbHhcbiIsCisJ CQlfX2Z1bmNfXywgZ2ZuMCwgZ2ZuMSwgdGxiLT50bGJfaGkpOworCQlrdm1fbWlwc19kdW1wX2d1 ZXN0X3RsYnModmNwdSk7CisJCXJldHVybiAtMTsKKwl9CiAKKwlpZiAoa3ZtX21pcHNfbWFwX3Bh Z2Uoa3ZtLCBnZm4wKSA8IDApCisJCXJldHVybiAtMTsKIAotCWlmICgodGxiLT50bGJfaGkgJiBW UE4yX01BU0spID09IDApIHsKLQkJcGZuMCA9IDA7Ci0JCXBmbjEgPSAwOwotCX0gZWxzZSB7Ci0J CWlmIChrdm1fbWlwc19tYXBfcGFnZShrdm0sIG1pcHMzX3RsYnBmbl90b19wYWRkcih0bGItPnRs Yl9sbzApID4+IFBBR0VfU0hJRlQpIDwgMCkKLQkJCXJldHVybiAtMTsKLQotCQlpZiAoa3ZtX21p cHNfbWFwX3BhZ2Uoa3ZtLCBtaXBzM190bGJwZm5fdG9fcGFkZHIodGxiLT50bGJfbG8xKSA+PiBQ QUdFX1NISUZUKSA8IDApCi0JCQlyZXR1cm4gLTE7CisJaWYgKGt2bV9taXBzX21hcF9wYWdlKGt2 bSwgZ2ZuMSkgPCAwKQorCQlyZXR1cm4gLTE7CiAKLQkJcGZuMCA9IGt2bS0+YXJjaC5ndWVzdF9w bWFwW21pcHMzX3RsYnBmbl90b19wYWRkcih0bGItPnRsYl9sbzApID4+IFBBR0VfU0hJRlRdOwot CQlwZm4xID0ga3ZtLT5hcmNoLmd1ZXN0X3BtYXBbbWlwczNfdGxicGZuX3RvX3BhZGRyKHRsYi0+ dGxiX2xvMSkgPj4gUEFHRV9TSElGVF07Ci0JfQorCXBmbjAgPSBrdm0tPmFyY2guZ3Vlc3RfcG1h cFtnZm4wXTsKKwlwZm4xID0ga3ZtLT5hcmNoLmd1ZXN0X3BtYXBbZ2ZuMV07CiAKIAlpZiAoaHBh MCkKIAkJKmhwYTAgPSBwZm4wIDw8IFBBR0VfU0hJRlQ7CkBAIC0zODcsOSArNDA1LDkgQEAga3Zt X21pcHNfaGFuZGxlX21hcHBlZF9zZWdfdGxiX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwK IAllbnRyeWhpID0gKHRsYi0+dGxiX2hpICYgVlBOMl9NQVNLKSB8IChLVk1fR1VFU1RfS0VSTkVM X01PREUodmNwdSkgPwogCQkJa3ZtX21pcHNfZ2V0X2tlcm5lbF9hc2lkKHZjcHUpIDoga3ZtX21p cHNfZ2V0X3VzZXJfYXNpZCh2Y3B1KSk7CiAJZW50cnlsbzAgPSBtaXBzM19wYWRkcl90b190bGJw Zm4ocGZuMCA8PCBQQUdFX1NISUZUKSB8ICgweDMgPDwgMykgfAotCQkJKHRsYi0+dGxiX2xvMCAm IE1JUFMzX1BHX0QpIHwgKHRsYi0+dGxiX2xvMCAmIE1JUFMzX1BHX1YpOworCQkodGxiX2xvWzBd ICYgTUlQUzNfUEdfRCkgfCAodGxiX2xvWzBdICYgTUlQUzNfUEdfVik7CiAJZW50cnlsbzEgPSBt aXBzM19wYWRkcl90b190bGJwZm4ocGZuMSA8PCBQQUdFX1NISUZUKSB8ICgweDMgPDwgMykgfAot CQkJKHRsYi0+dGxiX2xvMSAmIE1JUFMzX1BHX0QpIHwgKHRsYi0+dGxiX2xvMSAmIE1JUFMzX1BH X1YpOworCQkodGxiX2xvWzFdICYgTUlQUzNfUEdfRCkgfCAodGxiX2xvWzFdICYgTUlQUzNfUEdf Vik7CiAKIAlrdm1fZGVidWcoIkAgJSNseCB0bGJfbG8wOiAweCUwOGx4IHRsYl9sbzE6IDB4JTA4 bHhcbiIsIHZjcHUtPmFyY2gucGMsCiAJCSAgdGxiLT50bGJfbG8wLCB0bGItPnRsYl9sbzEpOwpA QCAtNzgzLDEwICs4MDEsMTYgQEAgdWludDMyX3Qga3ZtX2dldF9pbnN0KHVpbnQzMl90ICpvcGMs IHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAJ CQkJcmV0dXJuIEtWTV9JTlZBTElEX0lOU1Q7CiAJCQl9Ci0JCQlrdm1fbWlwc19oYW5kbGVfbWFw cGVkX3NlZ190bGJfZmF1bHQodmNwdSwKLQkJCQkJCQkgICAgICZ2Y3B1LT5hcmNoLgotCQkJCQkJ CSAgICAgZ3Vlc3RfdGxiW2luZGV4XSwKLQkJCQkJCQkgICAgIE5VTEwsIE5VTEwpOworCQkJaWYg KGt2bV9taXBzX2hhbmRsZV9tYXBwZWRfc2VnX3RsYl9mYXVsdCh2Y3B1LAorCQkJCQkJJnZjcHUt PmFyY2guZ3Vlc3RfdGxiW2luZGV4XSwKKwkJCQkJCU5VTEwsIE5VTEwpKSB7CisJCQkJa3ZtX2Vy cigiJXM6IGhhbmRsaW5nIG1hcHBlZCBzZWcgdGxiIGZhdWx0IGZhaWxlZCBmb3IgJXAsIGluZGV4 OiAldSwgdmNwdTogJXAsIEFTSUQ6ICUjbHhcbiIsCisJCQkJCV9fZnVuY19fLCBvcGMsIGluZGV4 LCB2Y3B1LAorCQkJCQlyZWFkX2MwX2VudHJ5aGkoKSk7CisJCQkJa3ZtX21pcHNfZHVtcF9ndWVz dF90bGJzKHZjcHUpOworCQkJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKwkJCQlyZXR1cm4g S1ZNX0lOVkFMSURfSU5TVDsKKwkJCX0KIAkJCWluc3QgPSAqKG9wYyk7CiAJCX0KIAkJbG9jYWxf aXJxX3Jlc3RvcmUoZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3NjLXJtN2suYyBi L2FyY2gvbWlwcy9tbS9zYy1ybTdrLmMKaW5kZXggOWFjMWVmY2ZiY2M3Li43OGY5MDBjNTkyNzYg MTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS9zYy1ybTdrLmMKKysrIGIvYXJjaC9taXBzL21tL3Nj LXJtN2suYwpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIHJtN2tfdGNfZGlzYWJsZSh2 b2lkKQogCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKIAlibGFzdF9ybTdrX3RjYWNoZSgpOwogCWNs ZWFyX2MwX2NvbmZpZyhSTTdLX0NPTkZfVEUpOwotCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwls b2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkIHJtN2tfc2NfZGlzYWJs ZSh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zZXR1cC5jIGIv YXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zZXR1cC5jCmluZGV4IGRiN2M5ZTU4MjZhNi4uODky NTFlNTk1ZDhhIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbXRpLW1hbHRhL21hbHRhLXNldHVwLmMK KysrIGIvYXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zZXR1cC5jCkBAIC0zNiw2ICszNiw5IEBA CiAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgogI2VuZGlmCiAKKyNkZWZpbmUgUk9DSVRfQ09O RklHX0dFTjAJCTB4MWY0MDMwMDAKKyNkZWZpbmUgIFJPQ0lUX0NPTkZJR19HRU4wX1BDSV9JT0NV CUJJVCg3KQorCiBleHRlcm4gdm9pZCBtYWx0YV9iZV9pbml0KHZvaWQpOwogZXh0ZXJuIGludCBt YWx0YV9iZV9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgaXNfZml4dXApOwogCkBA IC0xMDQsNiArMTA3LDggQEAgc3RhdGljIHZvaWQgX19pbml0IGZkX2FjdGl2YXRlKHZvaWQpCiBz dGF0aWMgaW50IF9faW5pdCBwbGF0X2VuYWJsZV9pb2NvaGVyZW5jeSh2b2lkKQogewogCWludCBz dXBwb3J0ZWQgPSAwOworCXUzMiBjZmc7CisKIAlpZiAobWlwc19yZXZpc2lvbl9zY29uaWQgPT0g TUlQU19SRVZJU0lPTl9TQ09OX0JPTklUTykgewogCQlpZiAoQk9OSVRPX1BDSUNBQ0hFQ1RSTCAm IEJPTklUT19QQ0lDQUNIRUNUUkxfQ1BVQ09IX1BSRVMpIHsKIAkJCUJPTklUT19QQ0lDQUNIRUNU UkwgfD0gQk9OSVRPX1BDSUNBQ0hFQ1RSTF9DUFVDT0hfRU47CkBAIC0xMjYsNyArMTMxLDggQEAg c3RhdGljIGludCBfX2luaXQgcGxhdF9lbmFibGVfaW9jb2hlcmVuY3kodm9pZCkKIAl9IGVsc2Ug aWYgKG1pcHNfY21fbnVtaW9jdSgpICE9IDApIHsKIAkJLyogTm90aGluZyBzcGVjaWFsIG5lZWRz IHRvIGJlIGRvbmUgdG8gZW5hYmxlIGNvaGVyZW5jeSAqLwogCQlwcl9pbmZvKCJDTVAgSU9DVSBk ZXRlY3RlZFxuIik7Ci0JCWlmICgoKih1bnNpZ25lZCBpbnQgKikweGJmNDAzMDAwICYgMHg4MSkg IT0gMHg4MSkgeworCQljZmcgPSBfX3Jhd19yZWFkbCgodTMyICopQ0tTRUcxQUREUihST0NJVF9D T05GSUdfR0VOMCkpOworCQlpZiAoIShjZmcgJiBST0NJVF9DT05GSUdfR0VOMF9QQ0lfSU9DVSkp IHsKIAkJCXByX2NyaXQoIklPQ1UgT1BFUkFUSU9OIERJU0FCTEVEIEJZIFNXSVRDSCAtIERFRkFV TFRJTkcgVE8gU1cgSU8gQ09IRVJFTkNZXG4iKTsKIAkJCXJldHVybiAwOwogCQl9CmRpZmYgLS1n aXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdC5jCmlu ZGV4IDMyNzUxYTBiYmE1OC4uMGRlMGJmMGE2MzhjIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0 L2JwZl9qaXQuYworKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXQuYwpAQCAtMTM2NSw3ICsxMzY1 LDcgQEAgdm9pZCBicGZfaml0X2NvbXBpbGUoc3RydWN0IHNrX2ZpbHRlciAqZnApCiAKIAltZW1z ZXQoJmN0eCwgMCwgc2l6ZW9mKGN0eCkpOwogCi0JY3R4Lm9mZnNldHMgPSBrY2FsbG9jKGZwLT5s ZW4sIHNpemVvZigqY3R4Lm9mZnNldHMpLCBHRlBfS0VSTkVMKTsKKwljdHgub2Zmc2V0cyA9IGtj YWxsb2MoZnAtPmxlbiArIDEsIHNpemVvZigqY3R4Lm9mZnNldHMpLCBHRlBfS0VSTkVMKTsKIAlp ZiAoY3R4Lm9mZnNldHMgPT0gTlVMTCkKIAkJcmV0dXJuOwogCmRpZmYgLS1naXQgYS9hcmNoL21u MTAzMDAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3Vh Y2Nlc3MuaAppbmRleCA1MzcyNzg3NDZhMTUuLjRhZjQzZDliYTQ5NSAxMDA2NDQKLS0tIGEvYXJj aC9tbjEwMzAwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL21uMTAzMDAvaW5jbHVk ZS9hc20vdWFjY2Vzcy5oCkBAIC0xODEsNiArMTgxLDcgQEAgc3RydWN0IF9fbGFyZ2Vfc3RydWN0 IHsgdW5zaWduZWQgbG9uZyBidWZbMTAwXTsgfTsKIAkJIjI6XG4iCQkJCQkJXAogCQkiCS5zZWN0 aW9uCS5maXh1cCxcImF4XCJcbiIJXAogCQkiMzpcblx0IgkJCQkJXAorCQkiCW1vdgkJMCwlMVxu IgkJCVwKIAkJIgltb3YJCSUzLCUwXG4iCQlcCiAJCSIJam1wCQkyYlxuIgkJCVwKIAkJIgkucHJl dmlvdXNcbiIJCQkJXApkaWZmIC0tZ2l0IGEvYXJjaC9tbjEwMzAwL2xpYi91c2VyY29weS5jIGIv YXJjaC9tbjEwMzAwL2xpYi91c2VyY29weS5jCmluZGV4IDc4MjZlNmMzNjRlNy4uY2U4ODk5ZTVl MTcxIDEwMDY0NAotLS0gYS9hcmNoL21uMTAzMDAvbGliL3VzZXJjb3B5LmMKKysrIGIvYXJjaC9t bjEwMzAwL2xpYi91c2VyY29weS5jCkBAIC05LDcgKzksNyBAQAogICogYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCiAgKiAyIG9mIHRo ZSBMaWNlbmNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICovCi0j aW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CiAKIHVu c2lnbmVkIGxvbmcKIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQg KmZyb20sIHVuc2lnbmVkIGxvbmcgbikKQEAgLTI0LDYgKzI0LDggQEAgX19nZW5lcmljX2NvcHlf ZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiB7 CiAJaWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCiAJCV9fY29weV91c2VyX3pl cm9pbmcodG8sIGZyb20sIG4pOworCWVsc2UKKwkJbWVtc2V0KHRvLCAwLCBuKTsKIAlyZXR1cm4g bjsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgg Yi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCBhYjJlN2ExOThhNGMu LmQ0NDE0ODBhNGFmNCAxMDA2NDQKLS0tIGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS91YWNj ZXNzLmgKKysrIGIvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTI3Mywy OCArMjczLDIwIEBAIF9fY29weV90b2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJv bSwgdW5zaWduZWQgbG9uZyBzaXplKTsKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogY29w eV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikK IHsKLQl1bnNpZ25lZCBsb25nIG92ZXI7Ci0KLQlpZiAoYWNjZXNzX29rKFZFUklGWV9SRUFELCBm cm9tLCBuKSkKLQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbik7Ci0JaWYg KCh1bnNpZ25lZCBsb25nKWZyb20gPCBUQVNLX1NJWkUpIHsKLQkJb3ZlciA9ICh1bnNpZ25lZCBs b25nKWZyb20gKyBuIC0gVEFTS19TSVpFOwotCQlyZXR1cm4gX19jb3B5X3RvZnJvbV91c2VyKHRv LCBmcm9tLCBuIC0gb3ZlcikgKyBvdmVyOwotCX0KLQlyZXR1cm4gbjsKKwl1bnNpZ25lZCBsb25n IHJlcyA9IG47CisKKwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikp KQorCQlyZXMgPSBfX2NvcHlfdG9mcm9tX3VzZXIodG8sIGZyb20sIG4pOworCWlmICh1bmxpa2Vs eShyZXMpKQorCQltZW1zZXQodG8gKyAobiAtIHJlcyksIDAsIHJlcyk7CisJcmV0dXJuIHJlczsK IH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBjb3B5X3RvX3VzZXIodm9pZCAqdG8s IGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLQl1bnNpZ25lZCBsb25nIG92 ZXI7Ci0KLQlpZiAoYWNjZXNzX29rKFZFUklGWV9XUklURSwgdG8sIG4pKQotCQlyZXR1cm4gX19j b3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKLQlpZiAoKHVuc2lnbmVkIGxvbmcpdG8gPCBU QVNLX1NJWkUpIHsKLQkJb3ZlciA9ICh1bnNpZ25lZCBsb25nKXRvICsgbiAtIFRBU0tfU0laRTsK LQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbiAtIG92ZXIpICsgb3ZlcjsK LQl9CisJaWYgKGxpa2VseShhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0bywgbikpKQorCQluID0g X19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKIAlyZXR1cm4gbjsKIH0KIApAQCAtMzAz LDEzICsyOTUsOCBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBfX2NsZWFyX3VzZXIodm9pZCAqYWRk ciwgdW5zaWduZWQgbG9uZyBzaXplKTsKIHN0YXRpYyBpbmxpbmUgX19tdXN0X2NoZWNrIHVuc2ln bmVkIGxvbmcKIGNsZWFyX3VzZXIodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQogewot Ci0JaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGFkZHIsIHNpemUpKQotCQlyZXR1cm4gX19j bGVhcl91c2VyKGFkZHIsIHNpemUpOwotCWlmICgodW5zaWduZWQgbG9uZylhZGRyIDwgVEFTS19T SVpFKSB7Ci0JCXVuc2lnbmVkIGxvbmcgb3ZlciA9ICh1bnNpZ25lZCBsb25nKWFkZHIgKyBzaXpl IC0gVEFTS19TSVpFOwotCQlyZXR1cm4gX19jbGVhcl91c2VyKGFkZHIsIHNpemUgLSBvdmVyKSAr IG92ZXI7Ci0JfQorCWlmIChsaWtlbHkoYWNjZXNzX29rKFZFUklGWV9XUklURSwgYWRkciwgc2l6 ZSkpKQorCQlzaXplID0gX19jbGVhcl91c2VyKGFkZHIsIHNpemUpOwogCXJldHVybiBzaXplOwog fQogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNo L3BhcmlzYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggZGUyZGIxOTEwNzU1Li45MzkyNDU4 YjZlODYgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysg Yi9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTksNiArOSw4IEBACiAjaW5j bHVkZSA8YXNtL2Vycm5vLmg+CiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvdWFjY2Vzcy11bmFsaWdu ZWQuaD4KIAorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorCiAjZGVmaW5lIFZFUklGWV9SRUFE IDAKICNkZWZpbmUgVkVSSUZZX1dSSVRFIDEKIApAQCAtMjQ4LDEzICsyNTAsMTQgQEAgc3RhdGlj IGlubGluZSB1bnNpZ25lZCBsb25nIF9fbXVzdF9jaGVjayBjb3B5X2Zyb21fdXNlcih2b2lkICp0 bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgbikKIHsKICAgICAgICAgaW50IHN6ID0gX19jb21waWxldGltZV9vYmplY3Rfc2l6ZSh0byk7 Ci0gICAgICAgIGludCByZXQgPSAtRUZBVUxUOworICAgICAgICB1bnNpZ25lZCBsb25nIHJldCA9 IG47CiAKICAgICAgICAgaWYgKGxpa2VseShzeiA9PSAtMSB8fCAhX19idWlsdGluX2NvbnN0YW50 X3AobikgfHwgc3ogPj0gbikpCiAgICAgICAgICAgICAgICAgcmV0ID0gX19jb3B5X2Zyb21fdXNl cih0bywgZnJvbSwgbik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb3B5X2Zyb21f dXNlcl9vdmVyZmxvdygpOwotCisJaWYgKHVubGlrZWx5KHJldCkpCisJCW1lbXNldCh0byArIChu IC0gcmV0KSwgMCwgcmV0KTsKICAgICAgICAgcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEv YXJjaC9wYXJpc2MvaW5jbHVkZS91YXBpL2FzbS9lcnJuby5oIGIvYXJjaC9wYXJpc2MvaW5jbHVk ZS91YXBpL2FzbS9lcnJuby5oCmluZGV4IGMwYWU2MjUyMGQxNS4uMjc0ZDViYzZlY2NlIDEwMDY0 NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL3VhcGkvYXNtL2Vycm5vLmgKKysrIGIvYXJjaC9w YXJpc2MvaW5jbHVkZS91YXBpL2FzbS9lcnJuby5oCkBAIC05NywxMCArOTcsMTAgQEAKICNkZWZp bmUJRU5PVENPTk4JMjM1CS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkICov CiAjZGVmaW5lCUVTSFVURE9XTgkyMzYJLyogQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNwb3J0IGVu ZHBvaW50IHNodXRkb3duICovCiAjZGVmaW5lCUVUT09NQU5ZUkVGUwkyMzcJLyogVG9vIG1hbnkg cmVmZXJlbmNlczogY2Fubm90IHNwbGljZSAqLwotI2RlZmluZSBFUkVGVVNFRAlFQ09OTlJFRlVT RUQJLyogZm9yIEhQJ3MgTkZTIGFwcGFyZW50bHkgKi8KICNkZWZpbmUJRVRJTUVET1VUCTIzOAkv KiBDb25uZWN0aW9uIHRpbWVkIG91dCAqLwogI2RlZmluZQlFQ09OTlJFRlVTRUQJMjM5CS8qIENv bm5lY3Rpb24gcmVmdXNlZCAqLwotI2RlZmluZSBFUkVNT1RFUkVMRUFTRQkyNDAJLyogUmVtb3Rl IHBlZXIgcmVsZWFzZWQgY29ubmVjdGlvbiAqLworI2RlZmluZQlFUkVGVVNFRAlFQ09OTlJFRlVT RUQJLyogZm9yIEhQJ3MgTkZTIGFwcGFyZW50bHkgKi8KKyNkZWZpbmUJRVJFTU9URVJFTEVBU0UJ MjQwCS8qIFJlbW90ZSBwZWVyIHJlbGVhc2VkIGNvbm5lY3Rpb24gKi8KICNkZWZpbmUJRUhPU1RE T1dOCTI0MQkvKiBIb3N0IGlzIGRvd24gKi8KICNkZWZpbmUJRUhPU1RVTlJFQUNICTI0MgkvKiBO byByb3V0ZSB0byBob3N0ICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2Fz bS9wY2ktYnJpZGdlLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCmlu ZGV4IDRjYTkwYTM5ZDZkMC4uMWM5MjYwNmNhNzkyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9w Y2ktYnJpZGdlLmgKQEAgLTI0Niw2ICsyNDYsNyBAQCBleHRlcm4gdm9pZCBwY2lfcHJvY2Vzc19i cmlkZ2VfT0ZfcmFuZ2VzKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwKIC8qIEFsbG9jYXRl ICYgZnJlZSBhIFBDSSBob3N0IGJyaWRnZSBzdHJ1Y3R1cmUgKi8KIGV4dGVybiBzdHJ1Y3QgcGNp X2NvbnRyb2xsZXIgKnBjaWJpb3NfYWxsb2NfY29udHJvbGxlcihzdHJ1Y3QgZGV2aWNlX25vZGUg KmRldik7CiBleHRlcm4gdm9pZCBwY2liaW9zX2ZyZWVfY29udHJvbGxlcihzdHJ1Y3QgcGNpX2Nv bnRyb2xsZXIgKnBoYik7CitleHRlcm4gdm9pZCBwY2liaW9zX2ZyZWVfY29udHJvbGxlcl9kZWZl cnJlZChzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UpOwogCiAjaWZkZWYgQ09ORklHX1BD SQogZXh0ZXJuIGludCBwY2liaW9zX3ZhZGRyX2lzX2lvcG9ydCh2b2lkIF9faW9tZW0gKmFkZHJl c3MpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2Fy Y2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggOTQ4NWI0M2E3YzAwLi40NmM0 ODY1OTk2NDUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgK KysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMzIzLDMwICszMjMs MTcgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19jb3B5X3RvZnJvbV91c2VyKHZvaWQgX191c2Vy ICp0bywKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBjb3B5X2Zyb21fdXNlcih2b2lkICp0 bywKIAkJY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLQl1bnNp Z25lZCBsb25nIG92ZXI7Ci0KLQlpZiAoYWNjZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkK KwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpKQogCQlyZXR1cm4g X19jb3B5X3RvZnJvbV91c2VyKChfX2ZvcmNlIHZvaWQgX191c2VyICopdG8sIGZyb20sIG4pOwot CWlmICgodW5zaWduZWQgbG9uZylmcm9tIDwgVEFTS19TSVpFKSB7Ci0JCW92ZXIgPSAodW5zaWdu ZWQgbG9uZylmcm9tICsgbiAtIFRBU0tfU0laRTsKLQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNl cigoX19mb3JjZSB2b2lkIF9fdXNlciAqKXRvLCBmcm9tLAotCQkJCW4gLSBvdmVyKSArIG92ZXI7 Ci0JfQorCW1lbXNldCh0bywgMCwgbik7CiAJcmV0dXJuIG47CiB9CiAKIHN0YXRpYyBpbmxpbmUg dW5zaWduZWQgbG9uZyBjb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLAogCQljb25zdCB2b2lk ICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiB7Ci0JdW5zaWduZWQgbG9uZyBvdmVyOwotCiAJaWYg KGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBuKSkKIAkJcmV0dXJuIF9fY29weV90b2Zyb21f dXNlcih0bywgKF9fZm9yY2Ugdm9pZCBfX3VzZXIgKilmcm9tLCBuKTsKLQlpZiAoKHVuc2lnbmVk IGxvbmcpdG8gPCBUQVNLX1NJWkUpIHsKLQkJb3ZlciA9ICh1bnNpZ25lZCBsb25nKXRvICsgbiAt IFRBU0tfU0laRTsKLQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgKF9fZm9yY2Ugdm9p ZCBfX3VzZXIgKilmcm9tLAotCQkJCW4gLSBvdmVyKSArIG92ZXI7Ci0JfQogCXJldHVybiBuOwog fQogCkBAIC00MzcsMTAgKzQyNCw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBjbGVh cl91c2VyKHZvaWQgX191c2VyICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCiAJbWlnaHRfZmF1 bHQoKTsKIAlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGFkZHIsIHNpemUpKSkK IAkJcmV0dXJuIF9fY2xlYXJfdXNlcihhZGRyLCBzaXplKTsKLQlpZiAoKHVuc2lnbmVkIGxvbmcp YWRkciA8IFRBU0tfU0laRSkgewotCQl1bnNpZ25lZCBsb25nIG92ZXIgPSAodW5zaWduZWQgbG9u ZylhZGRyICsgc2l6ZSAtIFRBU0tfU0laRTsKLQkJcmV0dXJuIF9fY2xlYXJfdXNlcihhZGRyLCBz aXplIC0gb3ZlcikgKyBvdmVyOwotCX0KIAlyZXR1cm4gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0cy5TIGIvYXJjaC9wb3dlcnBjL2tlcm5l bC9leGNlcHRpb25zLTY0cy5TCmluZGV4IDlmZjI1ZGNiZmI4Ny4uN2Q4YTc1NWY1NTU4IDEwMDY0 NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2V4Y2VwdGlvbnMtNjRzLlMKKysrIGIvYXJjaC9w b3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0cy5TCkBAIC0xNTMsMjkgKzE1MywxNCBAQCBtYWNo aW5lX2NoZWNrX3BTZXJpZXNfMToKIAkgKi8KIAlITVRfTUVESVVNX1BQUl9ESVNDQVJECiAJU0VU X1NDUkFUQ0gwKHIxMykJCS8qIHNhdmUgcjEzICovCi0jaWZkZWYgQ09ORklHX1BQQ19QN19OQVAK LUJFR0lOX0ZUUl9TRUNUSU9OCi0JLyogUnVubmluZyBuYXRpdmUgb24gYXJjaCAyLjA2IG9yIGxh dGVyLCBjaGVjayBpZiB3ZSBhcmUKLQkgKiB3YWtpbmcgdXAgZnJvbSBuYXAuIFdlIG9ubHkgaGFu ZGxlIG5vIHN0YXRlIGxvc3MgYW5kCi0JICogc3VwZXJ2aXNvciBzdGF0ZSBsb3NzLiBXZSBkbyAt bm90LSBoYW5kbGUgaHlwZXJ2aXNvcgotCSAqIHN0YXRlIGxvc3MgYXQgdGhpcyB0aW1lLgorCS8q CisJICogUnVubmluZyBuYXRpdmUgb24gYXJjaCAyLjA2IG9yIGxhdGVyLCB3ZSBtYXkgd2FrZXVw IGZyb20gd2lua2xlCisJICogaW5zaWRlIG1hY2hpbmUgY2hlY2suIElmIHllcywgdGhlbiBsYXN0 IGJpdCBvZiBIU1BHUjAgd291bGQgYmUgc2V0CisJICogdG8gMS4gSGVuY2UgY2xlYXIgaXQgdW5j b25kaXRpb25hbGx5LgogCSAqLwotCW1mc3ByCXIxMyxTUFJOX1NSUjEKLQlybHdpbm0uCXIxMyxy MTMsNDctMzEsMzAsMzEKLQlPUFRfR0VUX1NQUihyMTMsIFNQUk5fQ0ZBUiwgQ1BVX0ZUUl9DRkFS KQotCWJlcQk5ZgotCi0JbWZzcHIJcjEzLFNQUk5fU1JSMQotCXJsd2lubS4JcjEzLHIxMyw0Ny0z MSwzMCwzMQotCS8qIHdha2luZyB1cCBmcm9tIHBvd2Vyc2F2ZSAobmFwKSBzdGF0ZSAqLwotCWNt cHdpCWNyMSxyMTMsMgotCS8qIFRvdGFsIGxvc3Mgb2YgSFYgc3RhdGUgaXMgZmF0YWwuIGxldCdz IGp1c3Qgc3RheSBzdHVjayBoZXJlICovCi0JT1BUX0dFVF9TUFIocjEzLCBTUFJOX0NGQVIsIENQ VV9GVFJfQ0ZBUikKLQliZ3QJY3IxLC4KLTk6Ci0JT1BUX1NFVF9TUFIocjEzLCBTUFJOX0NGQVIs IENQVV9GVFJfQ0ZBUikKLUVORF9GVFJfU0VDVElPTl9JRlNFVChDUFVfRlRSX0hWTU9ERSB8IENQ VV9GVFJfQVJDSF8yMDYpCi0jZW5kaWYgLyogQ09ORklHX1BQQ19QN19OQVAgKi8KKwlHRVRfUEFD QShyMTMpCisJY2xycmRpCXIxMyxyMTMsMQorCVNFVF9QQUNBKHIxMykKIAlFWENFUFRJT05fUFJP TE9HXzAoUEFDQV9FWE1DKQogQkVHSU5fRlRSX1NFQ1RJT04KIAliCW1hY2hpbmVfY2hlY2tfcFNl cmllc19lYXJseQpAQCAtMTQxOCwxNyArMTQwMywxNyBAQCBtYWNoaW5lX2NoZWNrX2hhbmRsZV9l YXJseToKIAkgKiBDaGVjayBpZiB0aHJlYWQgd2FzIGluIHBvd2VyIHNhdmluZyBtb2RlLiBXZSBj b21lIGhlcmUgd2hlbiBhbnkKIAkgKiBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CiAJICogYS4g dGhyZWFkIHdhc24ndCBpbiBwb3dlciBzYXZpbmcgbW9kZQotCSAqIGIuIHRocmVhZCB3YXMgaW4g cG93ZXIgc2F2aW5nIG1vZGUgd2l0aCBubyBzdGF0ZSBsb3NzIG9yCi0JICogICAgc3VwZXJ2aXNv ciBzdGF0ZSBsb3NzCisJICogYi4gdGhyZWFkIHdhcyBpbiBwb3dlciBzYXZpbmcgbW9kZSB3aXRo IG5vIHN0YXRlIGxvc3MsCisJICogICAgc3VwZXJ2aXNvciBzdGF0ZSBsb3NzIG9yIGh5cGVydmlz b3Igc3RhdGUgbG9zcy4KIAkgKgotCSAqIEdvIGJhY2sgdG8gbmFwIGFnYWluIGlmIChiKSBpcyB0 cnVlLgorCSAqIEdvIGJhY2sgdG8gbmFwL3NsZWVwL3dpbmtsZSBtb2RlIGFnYWluIGlmIChiKSBp cyB0cnVlLgogCSAqLwogCXJsd2lubS4JcjExLHIxMiw0Ny0zMSwzMCwzMQkvKiBXYXMgaXQgaW4g cG93ZXIgc2F2aW5nIG1vZGU/ICovCiAJYmVxCTRmCQkJLyogTm8sIGl0IHdhc247dCAqLwogCS8q IFRocmVhZCB3YXMgaW4gcG93ZXIgc2F2aW5nIG1vZGUuIEdvIGJhY2sgdG8gbmFwIGFnYWluLiAq LwogCWNtcHdpCXIxMSwyCi0JYm5lCTNmCi0JLyogU3VwZXJ2aXNvciBzdGF0ZSBsb3NzICovCisJ Ymx0CTNmCisJLyogU3VwZXJ2aXNvci9IeXBlcnZpc29yIHN0YXRlIGxvc3MgKi8KIAlsaQlyMCwx CiAJc3RiCXIwLFBBQ0FfTkFQU1RBVEVMT1NUKHIxMykKIDM6CWJsCW1hY2hpbmVfY2hlY2tfcXVl dWVfZXZlbnQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWNlLmMgYi9hcmNoL3Bv d2VycGMva2VybmVsL21jZS5jCmluZGV4IGE3ZmQ0Y2I3OGI3OC4uMWM3NWY5Nzc3Y2UzIDEwMDY0 NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL21jZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJu ZWwvbWNlLmMKQEAgLTkyLDcgKzkyLDggQEAgdm9pZCBzYXZlX21jZV9ldmVudChzdHJ1Y3QgcHRf cmVncyAqcmVncywgbG9uZyBoYW5kbGVkLAogCW1jZS0+aW5fdXNlID0gMTsKIAogCW1jZS0+aW5p dGlhdG9yID0gTUNFX0lOSVRJQVRPUl9DUFU7Ci0JaWYgKGhhbmRsZWQpCisJLyogTWFyayBpdCBy ZWNvdmVyZWQgaWYgd2UgaGF2ZSBoYW5kbGVkIGl0IGFuZCBNU1IoUkk9MSkuICovCisJaWYgKGhh bmRsZWQgJiYgKHJlZ3MtPm1zciAmIE1TUl9SSSkpCiAJCW1jZS0+ZGlzcG9zaXRpb24gPSBNQ0Vf RElTUE9TSVRJT05fUkVDT1ZFUkVEOwogCWVsc2UKIAkJbWNlLT5kaXNwb3NpdGlvbiA9IE1DRV9E SVNQT1NJVElPTl9OT1RfUkVDT1ZFUkVEOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5l bC9wY2ktY29tbW9uLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYwppbmRleCBi NDljNzJmZDdmMTYuLmQ0Zjc3OTY1NGYxZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5l bC9wY2ktY29tbW9uLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKQEAg LTEwMiw2ICsxMDIsNDIgQEAgdm9pZCBwY2liaW9zX2ZyZWVfY29udHJvbGxlcihzdHJ1Y3QgcGNp X2NvbnRyb2xsZXIgKnBoYikKIH0KIAogLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBj YWxsIHBjaWJpb3NfZnJlZV9jb250cm9sbGVyKCkKKyAqIGluIGEgZGVmZXJyZWQgbWFubmVyOiBh IGNhbGxiYWNrIGZyb20gdGhlIFBDSSBzdWJzeXN0ZW0uCisgKgorICogXypETyBOT1QqXyBjYWxs IHBjaWJpb3NfZnJlZV9jb250cm9sbGVyKCkgZXhwbGljaXRseSBpZgorICogdGhpcyBpcyB1c2Vk IChvciBpdCBtYXkgYWNjZXNzIGFuIGludmFsaWQgKnBoYiBwb2ludGVyKS4KKyAqCisgKiBUaGUg Y2FsbGJhY2sgb2NjdXJzIHdoZW4gYWxsIHJlZmVyZW5jZXMgdG8gdGhlIHJvb3QgYnVzCisgKiBh cmUgZHJvcHBlZCAoZS5nLiwgY2hpbGQgYnVzZXMvZGV2aWNlcyBhbmQgdGhlaXIgdXNlcnMpLgor ICoKKyAqIEl0J3MgY2FsbGVkIGFzIC5yZWxlYXNlX2ZuKCkgb2YgJ3N0cnVjdCBwY2lfaG9zdF9i cmlkZ2UnCisgKiB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlICdzdHJ1Y3QgcGNpX2NvbnRy b2xsZXIuYnVzJworICogKHJvb3QgYnVzKSAtIGl0IGV4cGVjdHMgLnJlbGVhc2VfZGF0YSB0byBo b2xkIGEgcG9pbnRlcgorICogdG8gJ3N0cnVjdCBwY2lfY29udHJvbGxlcicuCisgKgorICogSW4g b3JkZXIgdG8gdXNlIGl0LCByZWdpc3RlciAucmVsZWFzZV9mbigpL3JlbGVhc2VfZGF0YQorICog bGlrZSB0aGlzOgorICoKKyAqIHBjaV9zZXRfaG9zdF9icmlkZ2VfcmVsZWFzZShicmlkZ2UsCisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpYmlvc19mcmVlX2NvbnRyb2xsZXJfZGVm ZXJyZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBwaGIpOworICoK KyAqIGUuZy4gaW4gdGhlIHBjaWJpb3Nfcm9vdF9icmlkZ2VfcHJlcGFyZSgpIGNhbGxiYWNrIGZy b20KKyAqIHBjaV9jcmVhdGVfcm9vdF9idXMoKS4KKyAqLwordm9pZCBwY2liaW9zX2ZyZWVfY29u dHJvbGxlcl9kZWZlcnJlZChzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UpCit7CisJc3Ry dWN0IHBjaV9jb250cm9sbGVyICpwaGIgPSAoc3RydWN0IHBjaV9jb250cm9sbGVyICopCisJCQkJ CSBicmlkZ2UtPnJlbGVhc2VfZGF0YTsKKworCXByX2RlYnVnKCJkb21haW4gJWQsIGR5bmFtaWMg JWRcbiIsIHBoYi0+Z2xvYmFsX251bWJlciwgcGhiLT5pc19keW5hbWljKTsKKworCXBjaWJpb3Nf ZnJlZV9jb250cm9sbGVyKHBoYik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChwY2liaW9zX2ZyZWVf Y29udHJvbGxlcl9kZWZlcnJlZCk7CisKKy8qCiAgKiBUaGUgZnVuY3Rpb24gaXMgdXNlZCB0byBy ZXR1cm4gdGhlIG1pbmltYWwgYWxpZ25tZW50CiAgKiBmb3IgbWVtb3J5IG9yIEkvTyB3aW5kb3dz IG9mIHRoZSBhc3NvY2lhdGVkIFAyUCBicmlkZ2UuCiAgKiBCeSBkZWZhdWx0LCA0S2lCIGFsaWdu bWVudCBmb3IgSS9PIHdpbmRvd3MgYW5kIDFNaUIgZm9yCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2Vy cGMva2VybmVsL3Byb21faW5pdC5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYwpp bmRleCAxYTg1ZDhmOTY3MzkuLjY5YmU2ODBmNzE4NCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBj L2tlcm5lbC9wcm9tX2luaXQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5j CkBAIC02ODUsNyArNjg1LDcgQEAgdW5zaWduZWQgY2hhciBpYm1fYXJjaGl0ZWN0dXJlX3ZlY1td ID0gewogCU9WNF9NSU5fRU5UX0NBUCwJCS8qIG1pbmltdW0gVlAgZW50aXRsZWQgY2FwYWNpdHkg Ki8KIAogCS8qIG9wdGlvbiB2ZWN0b3IgNTogUEFQUi9PRiBvcHRpb25zICovCi0JMTkgLSAyLAkJ CQkvKiBsZW5ndGggKi8KKwkyMiAtIDIsCQkJCS8qIGxlbmd0aCAqLwogCTAsCQkJCS8qIGRvbid0 IGlnbm9yZSwgZG9uJ3QgaGFsdCAqLwogCU9WNV9GRUFUKE9WNV9MUEFSKSB8IE9WNV9GRUFUKE9W NV9TUExQQVIpIHwgT1Y1X0ZFQVQoT1Y1X0xBUkdFX1BBR0VTKSB8CiAJT1Y1X0ZFQVQoT1Y1X0RS Q09ORl9NRU1PUlkpIHwgT1Y1X0ZFQVQoT1Y1X0RPTkFURV9ERURJQ0FURV9DUFUpIHwKQEAgLTcx Niw4ICs3MTYsMTEgQEAgdW5zaWduZWQgY2hhciBpYm1fYXJjaGl0ZWN0dXJlX3ZlY1tdID0gewog CTAsCiAJMCwKIAlPVjVfRkVBVChPVjVfUEZPX0hXX1JORykgfCBPVjVfRkVBVChPVjVfUEZPX0hX X0VOQ1IpIHwKLQlPVjVfRkVBVChPVjVfUEZPX0hXXzg0MiksCi0JT1Y1X0ZFQVQoT1Y1X1NVQl9Q Uk9DRVNTT1JTKSwKKwlPVjVfRkVBVChPVjVfUEZPX0hXXzg0MiksCQkJCS8qIEJ5dGUgMTcgKi8K KwkwLAkJCQkJCQkvKiBCeXRlIDE4ICovCisJMCwJCQkJCQkJLyogQnl0ZSAxOSAqLworCTAsCQkJ CQkJCS8qIEJ5dGUgMjAgKi8KKwlPVjVfRkVBVChPVjVfU1VCX1BST0NFU1NPUlMpLAkJCQkvKiBC eXRlIDIxICovCiAJLyogb3B0aW9uIHZlY3RvciA2OiBJQk0gUEFQUiBoaW50cyAqLwogCTQgLSAy LAkJCQkvKiBsZW5ndGggKi8KIAkwLApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC90 bS5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC90bS5TCmluZGV4IGY4MWQ5MDBhNTYyYS4uMDgyMjVh MzUyNDc3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3RtLlMKKysrIGIvYXJjaC9w b3dlcnBjL2tlcm5lbC90bS5TCkBAIC0zMzgsOCArMzM4LDYgQEAgX0dMT0JBTChfX3RtX3JlY2hl Y2twb2ludCkKIAkgKi8KIAlzdWJpCXI3LCByNywgU1RBQ0tfRlJBTUVfT1ZFUkhFQUQKIAotCVNF VF9TQ1JBVENIMChyMSkKLQogCW1mbXNyCXI2CiAJLyogUjQgPSBvcmlnaW5hbCBNU1IgdG8gaW5k aWNhdGUgd2hldGhlciB0aHJlYWQgdXNlZCBGUC9WZWN0b3IgZXRjLiAqLwogCkBAIC00NjgsNiAr NDY2LDcgQEAgcmVzdG9yZV9ncHJzOgogCSAqIHVudGlsIHdlIHR1cm4gTVNSIFJJIGJhY2sgb24u CiAJICovCiAKKwlTRVRfU0NSQVRDSDAocjEpCiAJbGQJcjUsIC04KHIxKQogCWxkCXIxLCAtMTYo cjEpCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLWR1 bXAuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLWR1bXAuYwppbmRleCA3 ODhhMTk3N2I5YTUuLjJmNDIwZjllNGM1NCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRm b3Jtcy9wb3dlcm52L29wYWwtZHVtcC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93 ZXJudi9vcGFsLWR1bXAuYwpAQCAtMzY1LDYgKzM2NSw3IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19k dW1wKHZvaWQpCiAJdWludDMyX3QgZHVtcF9pZCwgZHVtcF9zaXplLCBkdW1wX3R5cGU7CiAJc3Ry dWN0IGR1bXBfb2JqICpkdW1wOwogCWNoYXIgbmFtZVsyMl07CisJc3RydWN0IGtvYmplY3QgKmtv Ymo7CiAKIAlyYyA9IGR1bXBfcmVhZF9pbmZvKCZkdW1wX2lkLCAmZHVtcF9zaXplLCAmZHVtcF90 eXBlKTsKIAlpZiAocmMgIT0gT1BBTF9TVUNDRVNTKQpAQCAtMzc2LDggKzM3NywxMiBAQCBzdGF0 aWMgaW50IHByb2Nlc3NfZHVtcCh2b2lkKQogCSAqIHRoYXQgZ3JhY2VmdWxseSBhbmQgbm90IGNy ZWF0ZSB0d28gY29uZmxpY3RpbmcKIAkgKiBlbnRyaWVzLgogCSAqLwotCWlmIChrc2V0X2ZpbmRf b2JqKGR1bXBfa3NldCwgbmFtZSkpCisJa29iaiA9IGtzZXRfZmluZF9vYmooZHVtcF9rc2V0LCBu YW1lKTsKKwlpZiAoa29iaikgeworCQkvKiBEcm9wIHJlZmVyZW5jZSBhZGRlZCBieSBrc2V0X2Zp bmRfb2JqKCkgKi8KKwkJa29iamVjdF9wdXQoa29iaik7CiAJCXJldHVybiAwOworCX0KIAogCWR1 bXAgPSBjcmVhdGVfZHVtcF9vYmooZHVtcF9pZCwgZHVtcF9zaXplLCBkdW1wX3R5cGUpOwogCWlm ICghZHVtcCkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFs LWVsb2cuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLWVsb2cuYwppbmRl eCAwYWQ1MzNiNjE3ZjcuLmM0YWUyOTU4ZGU5YyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3Bs YXRmb3Jtcy9wb3dlcm52L29wYWwtZWxvZy5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMv cG93ZXJudi9vcGFsLWVsb2cuYwpAQCAtMjQ2LDYgKzI0Niw3IEBAIHN0YXRpYyB2b2lkIGVsb2df d29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJdWludDY0X3QgZWxvZ190eXBlOwog CWludCByYzsKIAljaGFyIG5hbWVbMisxNisxXTsKKwlzdHJ1Y3Qga29iamVjdCAqa29iajsKIAog CXJjID0gb3BhbF9nZXRfZWxvZ19zaXplKCZpZCwgJnNpemUsICZ0eXBlKTsKIAlpZiAocmMgIT0g T1BBTF9TVUNDRVNTKSB7CkBAIC0yNjgsOCArMjY5LDEyIEBAIHN0YXRpYyB2b2lkIGVsb2dfd29y a19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJICogdGhhdCBncmFjZWZ1bGx5IGFuZCBu b3QgY3JlYXRlIHR3byBjb25mbGljdGluZwogCSAqIGVudHJpZXMuCiAJICovCi0JaWYgKGtzZXRf ZmluZF9vYmooZWxvZ19rc2V0LCBuYW1lKSkKKwlrb2JqID0ga3NldF9maW5kX29iaihlbG9nX2tz ZXQsIG5hbWUpOworCWlmIChrb2JqKSB7CisJCS8qIERyb3AgcmVmZXJlbmNlIGFkZGVkIGJ5IGtz ZXRfZmluZF9vYmooKSAqLworCQlrb2JqZWN0X3B1dChrb2JqKTsKIAkJcmV0dXJuOworCX0KIAog CWNyZWF0ZV9lbG9nX29iaihsb2dfaWQsIGVsb2dfc2l6ZSwgZWxvZ190eXBlKTsKIH0KZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLmMgYi9hcmNoL3Bvd2Vy cGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC5jCmluZGV4IDBmYTcxNzhkMzZkYy4uMTI4MzNlNDg2 ZDliIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC5jCisr KyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLmMKQEAgLTQ1OSw2ICs0NTks NyBAQCBzdGF0aWMgaW50IG9wYWxfcmVjb3Zlcl9tY2Uoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAK IAlpZiAoIShyZWdzLT5tc3IgJiBNU1JfUkkpKSB7CiAJCS8qIElmIE1TUl9SSSBpc24ndCBzZXQs IHdlIGNhbm5vdCByZWNvdmVyICovCisJCXByX2VycigiTWFjaGluZSBjaGVjayBpbnRlcnJ1cHQg dW5yZWNvdmVyYWJsZTogTVNSKFJJPTApXG4iKTsKIAkJcmVjb3ZlcmVkID0gMDsKIAl9IGVsc2Ug aWYgKGV2dC0+ZGlzcG9zaXRpb24gPT0gTUNFX0RJU1BPU0lUSU9OX1JFQ09WRVJFRCkgewogCQkv KiBQbGF0Zm9ybSBjb3JyZWN0ZWQgaXRzZWxmICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMv cGxhdGZvcm1zL3BzZXJpZXMvcGNpLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMv cGNpLmMKaW5kZXggYzQxM2VjMTU4ZmY1Li4xMDE3NzM0YmRjNzggMTAwNjQ0Ci0tLSBhL2FyY2gv cG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wY2kuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZv cm1zL3BzZXJpZXMvcGNpLmMKQEAgLTExOCw2ICsxMTgsMTAgQEAgaW50IHBzZXJpZXNfcm9vdF9i cmlkZ2VfcHJlcGFyZShzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UpCiAKIAlidXMgPSBi cmlkZ2UtPmJ1czsKIAorCS8qIFJlbHkgb24gdGhlIHBjaWJpb3NfZnJlZV9jb250cm9sbGVyX2Rl ZmVycmVkKCkgY2FsbGJhY2suICovCisJcGNpX3NldF9ob3N0X2JyaWRnZV9yZWxlYXNlKGJyaWRn ZSwgcGNpYmlvc19mcmVlX2NvbnRyb2xsZXJfZGVmZXJyZWQsCisJCQkJCSh2b2lkICopIHBjaV9i dXNfdG9faG9zdChidXMpKTsKKwogCWRuID0gcGNpYmlvc19nZXRfcGhiX29mX25vZGUoYnVzKTsK IAlpZiAoIWRuKQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9y bXMvcHNlcmllcy9wY2lfZGxwYXIuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9w Y2lfZGxwYXIuYwppbmRleCA4OWUyMzgxMTE5OWMuLmUxNjFhMjViYzY0YiAxMDA2NDQKLS0tIGEv YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BjaV9kbHBhci5jCisrKyBiL2FyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wY2lfZGxwYXIuYwpAQCAtMTM1LDggKzEzNSwxMSBAQCBp bnQgcmVtb3ZlX3BoYl9keW5hbWljKHN0cnVjdCBwY2lfY29udHJvbGxlciAqcGhiKQogCQlyZWxl YXNlX3Jlc291cmNlKHJlcyk7CiAJfQogCi0JLyogRnJlZSBwY2lfY29udHJvbGxlciBkYXRhIHN0 cnVjdHVyZSAqLwotCXBjaWJpb3NfZnJlZV9jb250cm9sbGVyKHBoYik7CisJLyoKKwkgKiBUaGUg cGNpX2NvbnRyb2xsZXIgZGF0YSBzdHJ1Y3R1cmUgaXMgZnJlZWQgYnkKKwkgKiB0aGUgcGNpYmlv c19mcmVlX2NvbnRyb2xsZXJfZGVmZXJyZWQoKSBjYWxsYmFjazsKKwkgKiBzZWUgcHNlcmllc19y b290X2JyaWRnZV9wcmVwYXJlKCkuCisJICovCiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBh L2FyY2gvczM5MC9pbmNsdWRlL2FzbS9lbGYuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9lbGYu aAppbmRleCA3OGY0Zjg3MTFkNTguLjk3N2FmYzI2NzRlMiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkw L2luY2x1ZGUvYXNtL2VsZi5oCisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9lbGYuaApAQCAt MjEwLDYgKzIxMCw3IEBAIGRvIHsJCQkJCQkJCVwKIAogI2RlZmluZSBTVEFDS19STkRfTUFTSwkw eDdmZlVMCiAKKy8qIHVwZGF0ZSBBVF9WRUNUT1JfU0laRV9BUkNIIGlmIHRoZSBudW1iZXIgb2Yg TkVXX0FVWF9FTlQgZW50cmllcyBjaGFuZ2VzICovCiAjZGVmaW5lIEFSQ0hfRExJTkZPCQkJCQkJ CSAgICBcCiBkbyB7CQkJCQkJCQkJICAgIFwKIAlpZiAodmRzb19lbmFibGVkKQkJCQkJCSAgICBc CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGxiZmx1c2guaCBiL2FyY2gvczM5 MC9pbmNsdWRlL2FzbS90bGJmbHVzaC5oCmluZGV4IDE2YzljODg2NThjOC4uMWYyZmE4NTA5MWNl IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGxiZmx1c2guaAorKysgYi9hcmNo L3MzOTAvaW5jbHVkZS9hc20vdGxiZmx1c2guaApAQCAtODgsNyArODgsOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgX190bGJfZmx1c2hfZnVsbChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIH0KIAogLyoK LSAqIEZsdXNoIFRMQiBlbnRyaWVzIGZvciBhIHNwZWNpZmljIEFTQ0Ugb24gYWxsIENQVXMuCisg KiBGbHVzaCBUTEIgZW50cmllcyBmb3IgYSBzcGVjaWZpYyBBU0NFIG9uIGFsbCBDUFVzLiBTaG91 bGQgbmV2ZXIgYmUgdXNlZAorICogd2hlbiBtb3JlIHRoYW4gb25lIGFzY2UgKGUuZy4gZ21hcCkg cmFuIG9uIHRoaXMgbW0uCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3RsYl9mbHVzaF9hc2Nl KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFzY2UpCiB7CmRpZmYgLS1naXQg YS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNt L3VhY2Nlc3MuaAppbmRleCBjZDRjNjhlMDM5OGQuLjUyOGYwOGMxZDU4NCAxMDA2NDQKLS0tIGEv YXJjaC9zMzkwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9h c20vdWFjY2Vzcy5oCkBAIC0yMTMsMjggKzIxMywyOCBAQCBpbnQgX19wdXRfdXNlcl9iYWQodm9p ZCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKIAlfX2Noa191c2VyX3B0cihwdHIpOwkJCQkJ XAogCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQkJXAogCWNhc2UgMTogewkJCQkJCVwKLQkJ dW5zaWduZWQgY2hhciBfX3g7CQkJCVwKKwkJdW5zaWduZWQgY2hhciBfX3ggPSAwOwkJCQlcCiAJ CV9fZ3VfZXJyID0gX19nZXRfdXNlcl9mbigmX194LCBwdHIsCQlcCiAJCQkJCSBzaXplb2YoKihw dHIpKSk7CVwKIAkJKHgpID0gKihfX2ZvcmNlIF9fdHlwZW9mX18oKihwdHIpKSAqKSAmX194Owlc CiAJCWJyZWFrOwkJCQkJCVwKIAl9OwkJCQkJCQlcCiAJY2FzZSAyOiB7CQkJCQkJXAotCQl1bnNp Z25lZCBzaG9ydCBfX3g7CQkJCVwKKwkJdW5zaWduZWQgc2hvcnQgX194ID0gMDsJCQkJXAogCQlf X2d1X2VyciA9IF9fZ2V0X3VzZXJfZm4oJl9feCwgcHRyLAkJXAogCQkJCQkgc2l6ZW9mKCoocHRy KSkpOwlcCiAJCSh4KSA9ICooX19mb3JjZSBfX3R5cGVvZl9fKCoocHRyKSkgKikgJl9feDsJXAog CQlicmVhazsJCQkJCQlcCiAJfTsJCQkJCQkJXAogCWNhc2UgNDogewkJCQkJCVwKLQkJdW5zaWdu ZWQgaW50IF9feDsJCQkJXAorCQl1bnNpZ25lZCBpbnQgX194ID0gMDsJCQkJXAogCQlfX2d1X2Vy ciA9IF9fZ2V0X3VzZXJfZm4oJl9feCwgcHRyLAkJXAogCQkJCQkgc2l6ZW9mKCoocHRyKSkpOwlc CiAJCSh4KSA9ICooX19mb3JjZSBfX3R5cGVvZl9fKCoocHRyKSkgKikgJl9feDsJXAogCQlicmVh azsJCQkJCQlcCiAJfTsJCQkJCQkJXAogCWNhc2UgODogewkJCQkJCVwKLQkJdW5zaWduZWQgbG9u ZyBsb25nIF9feDsJCQkJXAorCQl1bnNpZ25lZCBsb25nIGxvbmcgX194ID0gMDsJCQlcCiAJCV9f Z3VfZXJyID0gX19nZXRfdXNlcl9mbigmX194LCBwdHIsCQlcCiAJCQkJCSBzaXplb2YoKihwdHIp KSk7CVwKIAkJKHgpID0gKihfX2ZvcmNlIF9fdHlwZW9mX18oKihwdHIpKSAqKSAmX194OwlcCmRp ZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9hdXh2ZWMuaCBiL2FyY2gvczM5 MC9pbmNsdWRlL3VhcGkvYXNtL2F1eHZlYy5oCmluZGV4IGExZjE1M2U4OTEzMy4uYzUzZTA4NDQy MjU1IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9hdXh2ZWMuaAorKysg Yi9hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9hdXh2ZWMuaApAQCAtMyw0ICszLDYgQEAKIAog I2RlZmluZSBBVF9TWVNJTkZPX0VIRFIJCTMzCiAKKyNkZWZpbmUgQVRfVkVDVE9SX1NJWkVfQVJD SCAxIC8qIGVudHJpZXMgaW4gQVJDSF9ETElORk8gKi8KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9h cmNoL3MzOTAvbW0vcGd0YWJsZS5jIGIvYXJjaC9zMzkwL21tL3BndGFibGUuYwppbmRleCA5OGVl YjgyMzM0MmMuLjgwZmNkZmI4YTgxMCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL21tL3BndGFibGUu YworKysgYi9hcmNoL3MzOTAvbW0vcGd0YWJsZS5jCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGlj IGludCBnbWFwX3VubGlua19zZWdtZW50KHN0cnVjdCBnbWFwICpnbWFwLCB1bnNpZ25lZCBsb25n ICp0YWJsZSkKIHN0YXRpYyB2b2lkIGdtYXBfZmx1c2hfdGxiKHN0cnVjdCBnbWFwICpnbWFwKQog ewogCWlmIChNQUNISU5FX0hBU19JRFRFKQotCQlfX3RsYl9mbHVzaF9hc2NlKGdtYXAtPm1tLCAo dW5zaWduZWQgbG9uZykgZ21hcC0+dGFibGUgfAorCQlfX3RsYl9mbHVzaF9pZHRlKCh1bnNpZ25l ZCBsb25nKSBnbWFwLT50YWJsZSB8CiAJCQkJIF9BU0NFX1RZUEVfUkVHSU9OMSk7CiAJZWxzZQog CQlfX3RsYl9mbHVzaF9nbG9iYWwoKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIGdtYXBfZnJl ZShzdHJ1Y3QgZ21hcCAqZ21hcCkKIAogCS8qIEZsdXNoIHRsYi4gKi8KIAlpZiAoTUFDSElORV9I QVNfSURURSkKLQkJX190bGJfZmx1c2hfYXNjZShnbWFwLT5tbSwgKHVuc2lnbmVkIGxvbmcpIGdt YXAtPnRhYmxlIHwKKwkJX190bGJfZmx1c2hfaWR0ZSgodW5zaWduZWQgbG9uZykgZ21hcC0+dGFi bGUgfAogCQkJCSBfQVNDRV9UWVBFX1JFR0lPTjEpOwogCWVsc2UKIAkJX190bGJfZmx1c2hfZ2xv YmFsKCk7CmRpZmYgLS1naXQgYS9hcmNoL3Njb3JlL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2Fy Y2gvc2NvcmUvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IGFiNjZkZGRlNzc3Yi4uNjkzMjZk ZmI4OTRkIDEwMDY0NAotLS0gYS9hcmNoL3Njb3JlL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysg Yi9hcmNoL3Njb3JlL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMTU4LDcgKzE1OCw3IEBAIGRv IHsJCQkJCQkJCQlcCiAJCV9fZ2V0X3VzZXJfYXNtKHZhbCwgImx3IiwgcHRyKTsJCQkJXAogCQkg YnJlYWs7CQkJCQkJCVwKIAljYXNlIDg6IAkJCQkJCQlcCi0JCWlmICgoY29weV9mcm9tX3VzZXIo KHZvaWQgKikmdmFsLCBwdHIsIDgpKSA9PSAwKQlcCisJCWlmIChfX2NvcHlfZnJvbV91c2VyKCh2 b2lkICopJnZhbCwgcHRyLCA4KSA9PSAwKQlcCiAJCQlfX2d1X2VyciA9IDA7CQkJCQlcCiAJCWVs c2UJCQkJCQkJXAogCQkJX19ndV9lcnIgPSAtRUZBVUxUOwkJCQlcCkBAIC0xODMsNiArMTgzLDgg QEAgZG8gewkJCQkJCQkJCVwKIAkJCQkJCQkJCVwKIAlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJ RllfUkVBRCwgX19ndV9wdHIsIHNpemUpKSkJCVwKIAkJX19nZXRfdXNlcl9jb21tb24oKHgpLCBz aXplLCBfX2d1X3B0cik7CQkJXAorCWVsc2UJCQkJCQkJCVwKKwkJKHgpID0gMDsJCQkJCQlcCiAJ CQkJCQkJCQlcCiAJX19ndV9lcnI7CQkJCQkJCVwKIH0pCkBAIC0xOTYsNiArMTk4LDcgQEAgZG8g ewkJCQkJCQkJCVwKIAkJIjI6XG4iCQkJCQkJCVwKIAkJIi5zZWN0aW9uIC5maXh1cCxcImF4XCJc biIJCQkJXAogCQkiMzpsaQklMCwgJTRcbiIJCQkJCVwKKwkJImxpCSUxLCAwXG4iCQkJCQlcCiAJ CSJqCTJiXG4iCQkJCQkJXAogCQkiLnByZXZpb3VzXG4iCQkJCQkJXAogCQkiLnNlY3Rpb24gX19l eF90YWJsZSxcImFcIlxuIgkJCQlcCkBAIC0yOTMsMzUgKzI5NiwzNCBAQCBleHRlcm4gaW50IF9f Y29weV90b2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9u ZyBsZW4pOwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBjb3B5X2Zyb21fdXNlcih2b2lk ICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBsZW4pCiB7Ci0JdW5zaWduZWQg bG9uZyBvdmVyOworCXVuc2lnbmVkIGxvbmcgcmVzID0gbGVuOwogCi0JaWYgKGFjY2Vzc19vayhW RVJJRllfUkVBRCwgZnJvbSwgbGVuKSkKLQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywg ZnJvbSwgbGVuKTsKKwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbGVu KSkpCisJCXJlcyA9IF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbGVuKTsKIAotCWlmICgo dW5zaWduZWQgbG9uZylmcm9tIDwgVEFTS19TSVpFKSB7Ci0JCW92ZXIgPSAodW5zaWduZWQgbG9u Zylmcm9tICsgbGVuIC0gVEFTS19TSVpFOwotCQlyZXR1cm4gX19jb3B5X3RvZnJvbV91c2VyKHRv LCBmcm9tLCBsZW4gLSBvdmVyKSArIG92ZXI7Ci0JfQotCXJldHVybiBsZW47CisJaWYgKHVubGlr ZWx5KHJlcykpCisJCW1lbXNldCh0byArIChsZW4gLSByZXMpLCAwLCByZXMpOworCisJcmV0dXJu IHJlczsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBjb3B5X3RvX3VzZXIodm9p ZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbGVuKQogewotCXVuc2lnbmVk IGxvbmcgb3ZlcjsKLQotCWlmIChhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0bywgbGVuKSkKLQkJ cmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbGVuKTsKKwlpZiAobGlrZWx5KGFj Y2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBsZW4pKSkKKwkJbGVuID0gX19jb3B5X3RvZnJvbV91 c2VyKHRvLCBmcm9tLCBsZW4pOwogCi0JaWYgKCh1bnNpZ25lZCBsb25nKXRvIDwgVEFTS19TSVpF KSB7Ci0JCW92ZXIgPSAodW5zaWduZWQgbG9uZyl0byArIGxlbiAtIFRBU0tfU0laRTsKLQkJcmV0 dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbGVuIC0gb3ZlcikgKyBvdmVyOwotCX0K IAlyZXR1cm4gbGVuOwogfQogCi0jZGVmaW5lIF9fY29weV9mcm9tX3VzZXIodG8sIGZyb20sIGxl bikJXAotCQlfX2NvcHlfdG9mcm9tX3VzZXIoKHRvKSwgKGZyb20pLCAobGVuKSkKK3N0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZworX19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9p ZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBsZW4pCit7CisJdW5zaWduZWQgbG9uZyBsZWZ0ID0gX19j b3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pOworCWlmICh1bmxpa2VseShsZWZ0KSkKKwkJ bWVtc2V0KHRvICsgKGxlbiAtIGxlZnQpLCAwLCBsZWZ0KTsKKwlyZXR1cm4gbGVmdDsKK30KIAog I2RlZmluZSBfX2NvcHlfdG9fdXNlcih0bywgZnJvbSwgbGVuKQkJXAogCQlfX2NvcHlfdG9mcm9t X3VzZXIoKHRvKSwgKGZyb20pLCAobGVuKSkKQEAgLTMzNSwxNyArMzM3LDE3IEBAIF9fY29weV90 b191c2VyX2luYXRvbWljKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25n IGxlbikKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogX19jb3B5X2Zyb21fdXNlcl9pbmF0 b21pYyh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBsZW4pCiB7Ci0J cmV0dXJuIF9fY29weV9mcm9tX3VzZXIodG8sIGZyb20sIGxlbik7CisJcmV0dXJuIF9fY29weV90 b2Zyb21fdXNlcih0bywgZnJvbSwgbGVuKTsKIH0KIAotI2RlZmluZSBfX2NvcHlfaW5fdXNlcih0 bywgZnJvbSwgbGVuKQlfX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pCisjZGVmaW5lIF9f Y29weV9pbl91c2VyKHRvLCBmcm9tLCBsZW4pCV9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwg bGVuKQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIGNvcHlfaW5fdXNlcih2b2lkICp0 bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJaWYgKGFjY2Vzc19v ayhWRVJJRllfUkVBRCwgZnJvbSwgbGVuKSAmJgogCQkgICAgICBhY2Nlc3Nfb2soVkVSRklUWV9X UklURSwgdG8sIGxlbikpCi0JCXJldHVybiBjb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbGVuKTsK KwkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbGVuKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL2FyY2gvc2gvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9zaC9pbmNsdWRl L2FzbS91YWNjZXNzLmgKaW5kZXggOTQ4NjM3NjYwNWY0Li5jMDRjYzE4YWU5Y2QgMTAwNjQ0Ci0t LSBhL2FyY2gvc2gvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBiL2FyY2gvc2gvaW5jbHVkZS9h c20vdWFjY2Vzcy5oCkBAIC0xNTEsNyArMTUxLDEwIEBAIGNvcHlfZnJvbV91c2VyKHZvaWQgKnRv LCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQogCV9fa2VybmVsX3Np emVfdCBfX2NvcHlfc2l6ZSA9IChfX2tlcm5lbF9zaXplX3QpIG47CiAKIAlpZiAoX19jb3B5X3Np emUgJiYgX19hY2Nlc3Nfb2soX19jb3B5X2Zyb20sIF9fY29weV9zaXplKSkKLQkJcmV0dXJuIF9f Y29weV91c2VyKHRvLCBmcm9tLCBfX2NvcHlfc2l6ZSk7CisJCV9fY29weV9zaXplID0gX19jb3B5 X3VzZXIodG8sIGZyb20sIF9fY29weV9zaXplKTsKKworCWlmICh1bmxpa2VseShfX2NvcHlfc2l6 ZSkpCisJCW1lbXNldCh0byArIChuIC0gX19jb3B5X3NpemUpLCAwLCBfX2NvcHlfc2l6ZSk7CiAK IAlyZXR1cm4gX19jb3B5X3NpemU7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3NoL2luY2x1ZGUvYXNt L3VhY2Nlc3NfNjQuaCBiL2FyY2gvc2gvaW5jbHVkZS9hc20vdWFjY2Vzc182NC5oCmluZGV4IDJl MDdlMGY0MGM2YS4uYTJmOWQwNTMxMzI4IDEwMDY0NAotLS0gYS9hcmNoL3NoL2luY2x1ZGUvYXNt L3VhY2Nlc3NfNjQuaAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL3VhY2Nlc3NfNjQuaApAQCAt MjQsNiArMjQsNyBAQAogI2RlZmluZSBfX2dldF91c2VyX3NpemUoeCxwdHIsc2l6ZSxyZXR2YWwp CQkJXAogZG8gewkJCQkJCQkJXAogCXJldHZhbCA9IDA7CQkJCQkJXAorCXggPSAwOwkJCQkJCQlc CiAJc3dpdGNoIChzaXplKSB7CQkJCQkJXAogCWNhc2UgMToJCQkJCQkJXAogCQlyZXR2YWwgPSBf X2dldF91c2VyX2FzbV9iKCh2b2lkICopJngsCQlcCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2lu Y2x1ZGUvYXNtL3VhY2Nlc3NfMzIuaCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vdWFjY2Vzc18z Mi5oCmluZGV4IDk2MzRkMDg2ZmM1Ni4uNzliMDM4NzJlMTY1IDEwMDY0NAotLS0gYS9hcmNoL3Nw YXJjL2luY2x1ZGUvYXNtL3VhY2Nlc3NfMzIuaAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNt L3VhY2Nlc3NfMzIuaApAQCAtMjY1LDggKzI2NSwxMCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1 bgogewogCWlmIChuICYmIF9fYWNjZXNzX29rKCh1bnNpZ25lZCBsb25nKSBmcm9tLCBuKSkKIAkJ cmV0dXJuIF9fY29weV91c2VyKChfX2ZvcmNlIHZvaWQgX191c2VyICopIHRvLCBmcm9tLCBuKTsK LQllbHNlCisJZWxzZSB7CisJCW1lbXNldCh0bywgMCwgbik7CiAJCXJldHVybiBuOworCX0KIH0K IAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fY29weV9mcm9tX3VzZXIodm9pZCAqdG8s IGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCmRpZmYgLS1naXQgYS9h cmNoL3RpbGUvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vZWxmLmgK aW5kZXggNDFkOTg3OGE5Njg2Li41ODFmMTQxNGI2Y2EgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9p bmNsdWRlL2FzbS9lbGYuaAorKysgYi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vZWxmLmgKQEAgLTEz MSw2ICsxMzEsNyBAQCBleHRlcm4gaW50IGR1bXBfdGFza19yZWdzKHN0cnVjdCB0YXNrX3N0cnVj dCAqLCBlbGZfZ3JlZ3NldF90ICopOwogc3RydWN0IGxpbnV4X2JpbnBybTsKIGV4dGVybiBpbnQg YXJjaF9zZXR1cF9hZGRpdGlvbmFsX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sCiAJ CQkJICAgICAgIGludCBleGVjdXRhYmxlX3N0YWNrKTsKKy8qIHVwZGF0ZSBBVF9WRUNUT1JfU0la RV9BUkNIIGlmIHRoZSBudW1iZXIgb2YgTkVXX0FVWF9FTlQgZW50cmllcyBjaGFuZ2VzICovCiAj ZGVmaW5lIEFSQ0hfRExJTkZPIFwKIGRvIHsgXAogCU5FV19BVVhfRU5UKEFUX1NZU0lORk9fRUhE UiwgVkRTT19CQVNFKTsgXApkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL2luY2x1ZGUvdWFwaS9hc20v YXV4dmVjLmggYi9hcmNoL3RpbGUvaW5jbHVkZS91YXBpL2FzbS9hdXh2ZWMuaAppbmRleCBjOTNl OTI3MDlmMTQuLmY0OTcxMjNlZDk4MCAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL2luY2x1ZGUvdWFw aS9hc20vYXV4dmVjLmgKKysrIGIvYXJjaC90aWxlL2luY2x1ZGUvdWFwaS9hc20vYXV4dmVjLmgK QEAgLTE4LDQgKzE4LDYgQEAKIC8qIFRoZSB2RFNPIGxvY2F0aW9uLiAqLwogI2RlZmluZSBBVF9T WVNJTkZPX0VIRFIgICAgICAgICAzMwogCisjZGVmaW5lIEFUX1ZFQ1RPUl9TSVpFX0FSQ0ggMSAv KiBlbnRyaWVzIGluIEFSQ0hfRExJTkZPICovCisKICNlbmRpZiAvKiBfQVNNX1RJTEVfQVVYVkVD X0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9lYm9vdC5jIGIvYXJj aC94ODYvYm9vdC9jb21wcmVzc2VkL2Vib290LmMKaW5kZXggYjc3MzEwODMzYjAzLi5jZWM0ZDYy MDg0M2UgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9lYm9vdC5jCisrKyBi L2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9lYm9vdC5jCkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBz dGF0aWMgZWZpX3N0YXR1c190IGV4aXRfYm9vdChzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJvb3RfcGFy YW1zLAogCQkJICAgICAgdm9pZCAqaGFuZGxlLCBib29sIGlzNjQpCiB7CiAJc3RydWN0IGVmaV9p bmZvICplZmkgPSAmYm9vdF9wYXJhbXMtPmVmaV9pbmZvOwotCXVuc2lnbmVkIGxvbmcgbWFwX3N6 LCBrZXksIGRlc2Nfc2l6ZTsKKwl1bnNpZ25lZCBsb25nIG1hcF9zeiwga2V5LCBkZXNjX3NpemUs IGJ1ZmZfc2l6ZTsKIAllZmlfbWVtb3J5X2Rlc2NfdCAqbWVtX21hcDsKIAlzdHJ1Y3Qgc2V0dXBf ZGF0YSAqZTgyMGV4dDsKIAljb25zdCBjaGFyICpzaWduYXR1cmU7CkBAIC0xMjc3LDE0ICsxMjc3 LDIwIEBAIHN0YXRpYyBlZmlfc3RhdHVzX3QgZXhpdF9ib290KHN0cnVjdCBib290X3BhcmFtcyAq Ym9vdF9wYXJhbXMsCiAJYm9vbCBjYWxsZWRfZXhpdCA9IGZhbHNlOwogCXU4IG5yX2VudHJpZXM7 CiAJaW50IGk7Ci0KLQlucl9kZXNjID0gMDsKLQllODIwZXh0ID0gTlVMTDsKLQllODIwZXh0X3Np emUgPSAwOworCXN0cnVjdCBlZmlfYm9vdF9tZW1tYXAgbWFwOworCisJbnJfZGVzYyA9CTA7CisJ ZTgyMGV4dCA9CU5VTEw7CisJZTgyMGV4dF9zaXplID0JMDsKKwltYXAubWFwID0JJm1lbV9tYXA7 CisJbWFwLm1hcF9zaXplID0JJm1hcF9zejsKKwltYXAuZGVzY19zaXplID0JJmRlc2Nfc2l6ZTsK KwltYXAuZGVzY192ZXIgPQkmZGVzY192ZXJzaW9uOworCW1hcC5rZXlfcHRyID0JJmtleTsKKwlt YXAuYnVmZl9zaXplID0JJmJ1ZmZfc2l6ZTsKIAogZ2V0X21hcDoKLQlzdGF0dXMgPSBlZmlfZ2V0 X21lbW9yeV9tYXAoc3lzX3RhYmxlLCAmbWVtX21hcCwgJm1hcF9zeiwgJmRlc2Nfc2l6ZSwKLQkJ CQkgICAgJmRlc2NfdmVyc2lvbiwgJmtleSk7CisJc3RhdHVzID0gZWZpX2dldF9tZW1vcnlfbWFw KHN5c190YWJsZSwgJm1hcCk7CiAKIAlpZiAoc3RhdHVzICE9IEVGSV9TVUNDRVNTKQogCQlyZXR1 cm4gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdGxiZmx1c2guaCBi L2FyY2gveDg2L2luY2x1ZGUvYXNtL3RsYmZsdXNoLmgKaW5kZXggMDQ5MDViZmM1MDhiLi41ZTRi MGNjNTRlNDMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RsYmZsdXNoLmgKKysr IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdGxiZmx1c2guaApAQCAtMTcsNyArMTcsMTQgQEAKIAog c3RhdGljIGlubGluZSB2b2lkIF9fbmF0aXZlX2ZsdXNoX3RsYih2b2lkKQogeworCS8qCisJICog SWYgY3VycmVudC0+bW0gPT0gTlVMTCB0aGVuIHdlIGJvcnJvdyBhIG1tIHdoaWNoIG1heSBjaGFu Z2UgZHVyaW5nIGEKKwkgKiB0YXNrIHN3aXRjaCBhbmQgdGhlcmVmb3JlIHdlIG11c3Qgbm90IGJl IHByZWVtcHRlZCB3aGlsZSB3ZSB3cml0ZSBDUjMKKwkgKiBiYWNrOgorCSAqLworCXByZWVtcHRf ZGlzYWJsZSgpOwogCW5hdGl2ZV93cml0ZV9jcjMobmF0aXZlX3JlYWRfY3IzKCkpOworCXByZWVt cHRfZW5hYmxlKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBfX25hdGl2ZV9mbHVzaF90bGJf Z2xvYmFsX2lycV9kaXNhYmxlZCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2Fw aWMvYXBpYy5jIGIvYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jCmluZGV4IGMzODVkMTRkYWRj My4uNDI5MzdjY2I4NTczIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmMK KysrIGIvYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jCkBAIC0xNjE1LDYgKzE2MTUsOSBAQCB2 b2lkIF9faW5pdCBlbmFibGVfSVJfeDJhcGljKHZvaWQpCiAJaW50IHJldCwgeDJhcGljX2VuYWJs ZWQgPSAwOwogCWludCBoYXJkd2FyZV9pbml0X3JldDsKIAorCWlmIChza2lwX2lvYXBpY19zZXR1 cCkKKwkJcmV0dXJuOworCiAJLyogTWFrZSBzdXJlIGlycV9yZW1hcF9vcHMgYXJlIGluaXRpYWxp emVkICovCiAJc2V0dXBfaXJxX3JlbWFwcGluZ19vcHMoKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94 ODYva2VybmVsL2NwdS9hbWQuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYW1kLmMKaW5kZXggZWRl ZmFjYWNjMmNjLi44MGUzNWU4NTIyZTQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUv YW1kLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9hbWQuYwpAQCAtNTIyLDYgKzUyMiwxNyBA QCBzdGF0aWMgY29uc3QgaW50IGFtZF9lcnJhdHVtXzM4M1tdOwogc3RhdGljIGNvbnN0IGludCBh bWRfZXJyYXR1bV80MDBbXTsKIHN0YXRpYyBib29sIGNwdV9oYXNfYW1kX2VycmF0dW0oc3RydWN0 IGNwdWluZm9feDg2ICpjcHUsIGNvbnN0IGludCAqZXJyYXR1bSk7CiAKKyNkZWZpbmUgTVNSX0FN RDY0X0RFX0NGRwkweEMwMDExMDI5CisKK3N0YXRpYyB2b2lkIGluaXRfYW1kX2xuKHN0cnVjdCBj cHVpbmZvX3g4NiAqYykKK3sKKwkvKgorCSAqIEFwcGx5IGVycmF0dW0gNjY1IGZpeCB1bmNvbmRp dGlvbmFsbHkgc28gbWFjaGluZXMgd2l0aG91dCBhIEJJT1MKKwkgKiBmaXggd29yay4KKwkgKi8K Kwltc3Jfc2V0X2JpdChNU1JfQU1ENjRfREVfQ0ZHLCAzMSk7Cit9CisKIHN0YXRpYyB2b2lkIGlu aXRfYW1kKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIHsKIAl1MzIgZHVtbXk7CkBAIC02MTQsNiAr NjI1LDkgQEAgc3RhdGljIHZvaWQgaW5pdF9hbWQoc3RydWN0IGNwdWluZm9feDg2ICpjKQogCQl9 CiAJfQogCisJaWYgKGMtPng4NiA9PSAweDEyKQorCQlpbml0X2FtZF9sbihjKTsKKwogCS8qIHJl LWVuYWJsZSBUb3BvbG9neUV4dGVuc2lvbnMgaWYgc3dpdGNoZWQgb2ZmIGJ5IEJJT1MgKi8KIAlp ZiAoKGMtPng4NiA9PSAweDE1KSAmJgogCSAgICAoYy0+eDg2X21vZGVsID49IDB4MTApICYmIChj LT54ODZfbW9kZWwgPD0gMHgxZikgJiYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUv cGVyZl9ldmVudF9hbWQuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9hbWQuYwpp bmRleCBiZWViN2NjMDcwNDQuLmRjNGMzYjg5YzNmNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2Vy bmVsL2NwdS9wZXJmX2V2ZW50X2FtZC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9l dmVudF9hbWQuYwpAQCAtMTE5LDggKzExOSw4IEBAIHN0YXRpYyBjb25zdCB1NjQgYW1kX3BlcmZt b25fZXZlbnRfbWFwW10gPQogewogICBbUEVSRl9DT1VOVF9IV19DUFVfQ1lDTEVTXQkJCT0gMHgw MDc2LAogICBbUEVSRl9DT1VOVF9IV19JTlNUUlVDVElPTlNdCQkJPSAweDAwYzAsCi0gIFtQRVJG X0NPVU5UX0hXX0NBQ0hFX1JFRkVSRU5DRVNdCQk9IDB4MDA4MCwKLSAgW1BFUkZfQ09VTlRfSFdf Q0FDSEVfTUlTU0VTXQkJCT0gMHgwMDgxLAorICBbUEVSRl9DT1VOVF9IV19DQUNIRV9SRUZFUkVO Q0VTXQkJPSAweDA3N2QsCisgIFtQRVJGX0NPVU5UX0hXX0NBQ0hFX01JU1NFU10JCQk9IDB4MDc3 ZSwKICAgW1BFUkZfQ09VTlRfSFdfQlJBTkNIX0lOU1RSVUNUSU9OU10JCT0gMHgwMGMyLAogICBb UEVSRl9DT1VOVF9IV19CUkFOQ0hfTUlTU0VTXQkJCT0gMHgwMGMzLAogICBbUEVSRl9DT1VOVF9I V19TVEFMTEVEX0NZQ0xFU19GUk9OVEVORF0JPSAweDAwZDAsIC8qICJEZWNvZGVyIGVtcHR5IiBl dmVudCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jIGIvYXJj aC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jCmluZGV4IDJlMWE2ODUzZTAwYy4uMmZhNDk0ZjU5 ODI4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKKysrIGIvYXJj aC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jCkBAIC0xMSw3ICsxMSwxMSBAQAogCiAjaW5jbHVk ZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvYWNwaS5oPgorI2luY2x1ZGUgPGxpbnV4 L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZG1pLmg+CiAjaW5jbHVkZSA8bGludXgvcGNpX2lk cy5oPgorI2luY2x1ZGUgPGxpbnV4L2JjbWEvYmNtYS5oPgorI2luY2x1ZGUgPGxpbnV4L2JjbWEv YmNtYV9yZWdzLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSA8YXNtL3Bj aS1kaXJlY3QuaD4KICNpbmNsdWRlIDxhc20vZG1hLmg+CkBAIC0yMSw2ICsyNSw5IEBACiAjaW5j bHVkZSA8YXNtL2lvbW11Lmg+CiAjaW5jbHVkZSA8YXNtL2dhcnQuaD4KICNpbmNsdWRlIDxhc20v aXJxX3JlbWFwcGluZy5oPgorI2luY2x1ZGUgPGFzbS9lYXJseV9pb3JlbWFwLmg+CisKKyNkZWZp bmUgZGV2X2Vycihtc2cpICBwcl9lcnIoInBjaSAwMDAwOiUwMng6JTAyeC4lZDogJXMiLCBidXMs IHNsb3QsIGZ1bmMsIG1zZykKIAogc3RhdGljIHZvaWQgX19pbml0IGZpeF9oeXBlcnRyYW5zcG9y dF9jb25maWcoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogewpAQCAtNzYsNiArODMsMTMg QEAgc3RhdGljIHZvaWQgX19pbml0IG52aWRpYV9idWdzKGludCBudW0sIGludCBzbG90LCBpbnQg ZnVuYykKICNpZmRlZiBDT05GSUdfQUNQSQogI2lmZGVmIENPTkZJR19YODZfSU9fQVBJQwogCS8q CisJICogT25seSBhcHBsaWVzIHRvIE52aWRpYSByb290IHBvcnRzIChidXMgMCkgYW5kIG5vdCB0 bworCSAqIE52aWRpYSBncmFwaGljcyBjYXJkcyB3aXRoIFBDSSBwb3J0cyBvbiBzZWNvbmRhcnkg YnVzZXMuCisJICovCisJaWYgKG51bSkKKwkJcmV0dXJuOworCisJLyoKIAkgKiBBbGwgdGltZXIg b3ZlcnJpZGVzIG9uIE52aWRpYSBhcmUKIAkgKiB3cm9uZyB1bmxlc3MgSFBFVCBpcyBlbmFibGVk LgogCSAqIFVuZm9ydHVuYXRlbHkgdGhhdCdzIG5vdCB0cnVlIG9uIG1hbnkgQXN1cyBib2FyZHMu CkBAIC01NjUsNiArNTc5LDYxIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBmb3JjZV9kaXNhYmxlX2hw ZXQoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogI2VuZGlmCiB9CiAKKyNkZWZpbmUgQkNN NDMzMV9NTUlPX1NJWkUJMTYzODQKKyNkZWZpbmUgQkNNNDMzMV9QTV9DQVAJCTB4NDAKKyNkZWZp bmUgYmNtYV9hcmVhZDMyKHJlZykJaW9yZWFkMzIobW1pbyArIDEgKiBCQ01BX0NPUkVfU0laRSAr IHJlZykKKyNkZWZpbmUgYmNtYV9hd3JpdGUzMihyZWcsIHZhbCkJaW93cml0ZTMyKHZhbCwgbW1p byArIDEgKiBCQ01BX0NPUkVfU0laRSArIHJlZykKKworc3RhdGljIHZvaWQgX19pbml0IGFwcGxl X2FpcnBvcnRfcmVzZXQoaW50IGJ1cywgaW50IHNsb3QsIGludCBmdW5jKQoreworCXZvaWQgX19p b21lbSAqbW1pbzsKKwl1MTYgcG1jc3I7CisJdTY0IGFkZHI7CisJaW50IGk7CisKKwlpZiAoIWRt aV9tYXRjaChETUlfU1lTX1ZFTkRPUiwgIkFwcGxlIEluYy4iKSkKKwkJcmV0dXJuOworCisJLyog Q2FyZCBtYXkgaGF2ZSBiZWVuIHB1dCBpbnRvIFBDSV9EM2hvdCBieSBncnViIHF1aXJrICovCisJ cG1jc3IgPSByZWFkX3BjaV9jb25maWdfMTYoYnVzLCBzbG90LCBmdW5jLCBCQ000MzMxX1BNX0NB UCArIFBDSV9QTV9DVFJMKTsKKworCWlmICgocG1jc3IgJiBQQ0lfUE1fQ1RSTF9TVEFURV9NQVNL KSAhPSBQQ0lfRDApIHsKKwkJcG1jc3IgJj0gflBDSV9QTV9DVFJMX1NUQVRFX01BU0s7CisJCXdy aXRlX3BjaV9jb25maWdfMTYoYnVzLCBzbG90LCBmdW5jLCBCQ000MzMxX1BNX0NBUCArIFBDSV9Q TV9DVFJMLCBwbWNzcik7CisJCW1kZWxheSgxMCk7CisKKwkJcG1jc3IgPSByZWFkX3BjaV9jb25m aWdfMTYoYnVzLCBzbG90LCBmdW5jLCBCQ000MzMxX1BNX0NBUCArIFBDSV9QTV9DVFJMKTsKKwkJ aWYgKChwbWNzciAmIFBDSV9QTV9DVFJMX1NUQVRFX01BU0spICE9IFBDSV9EMCkgeworCQkJZGV2 X2VycigiQ2Fubm90IHBvd2VyIHVwIEFwcGxlIEFpclBvcnQgY2FyZFxuIik7CisJCQlyZXR1cm47 CisJCX0KKwl9CisKKwlhZGRyICA9ICAgICAgcmVhZF9wY2lfY29uZmlnKGJ1cywgc2xvdCwgZnVu YywgUENJX0JBU0VfQUREUkVTU18wKTsKKwlhZGRyIHw9ICh1NjQpcmVhZF9wY2lfY29uZmlnKGJ1 cywgc2xvdCwgZnVuYywgUENJX0JBU0VfQUREUkVTU18xKSA8PCAzMjsKKwlhZGRyICY9IFBDSV9C QVNFX0FERFJFU1NfTUVNX01BU0s7CisKKwltbWlvID0gZWFybHlfaW9yZW1hcChhZGRyLCBCQ000 MzMxX01NSU9fU0laRSk7CisJaWYgKCFtbWlvKSB7CisJCWRldl9lcnIoIkNhbm5vdCBpb21hcCBB cHBsZSBBaXJQb3J0IGNhcmRcbiIpOworCQlyZXR1cm47CisJfQorCisJcHJfaW5mbygiUmVzZXR0 aW5nIEFwcGxlIEFpclBvcnQgY2FyZCAobGVmdCBlbmFibGVkIGJ5IEVGSSlcbiIpOworCisJZm9y IChpID0gMDsgYmNtYV9hcmVhZDMyKEJDTUFfUkVTRVRfU1QpICYmIGkgPCAzMDsgaSsrKQorCQl1 ZGVsYXkoMTApOworCisJYmNtYV9hd3JpdGUzMihCQ01BX1JFU0VUX0NUTCwgQkNNQV9SRVNFVF9D VExfUkVTRVQpOworCWJjbWFfYXJlYWQzMihCQ01BX1JFU0VUX0NUTCk7CisJdWRlbGF5KDEpOwor CisJYmNtYV9hd3JpdGUzMihCQ01BX1JFU0VUX0NUTCwgMCk7CisJYmNtYV9hcmVhZDMyKEJDTUFf UkVTRVRfQ1RMKTsKKwl1ZGVsYXkoMTApOworCisJZWFybHlfaW91bm1hcChtbWlvLCBCQ000MzMx X01NSU9fU0laRSk7Cit9CiAKICNkZWZpbmUgUUZMQUdfQVBQTFlfT05DRSAJMHgxCiAjZGVmaW5l IFFGTEFHX0FQUExJRUQJCTB4MgpAQCAtNTc4LDEyICs2NDcsNiBAQCBzdHJ1Y3QgY2hpcHNldCB7 CiAJdm9pZCAoKmYpKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYyk7CiB9OwogCi0vKgotICog T25seSB3b3JrcyBmb3IgZGV2aWNlcyBvbiB0aGUgcm9vdCBidXMuIElmIHlvdSBhZGQgYW55IGRl dmljZXMKLSAqIG5vdCBvbiBidXMgMCByZWFkZCBhbm90aGVyIGxvb3AgbGV2ZWwgaW4gZWFybHlf cXVpcmtzKCkuIEJ1dAotICogYmUgY2FyZWZ1bCBiZWNhdXNlIGF0IGxlYXN0IHRoZSBOdmlkaWEg cXVpcmsgaGVyZSByZWxpZXMgb24KLSAqIG9ubHkgbWF0Y2hpbmcgb24gYnVzIDAuCi0gKi8KIHN0 YXRpYyBzdHJ1Y3QgY2hpcHNldCBlYXJseV9xcmtbXSBfX2luaXRkYXRhID0gewogCXsgUENJX1ZF TkRPUl9JRF9OVklESUEsIFBDSV9BTllfSUQsCiAJICBQQ0lfQ0xBU1NfQlJJREdFX1BDSSwgUENJ X0FOWV9JRCwgUUZMQUdfQVBQTFlfT05DRSwgbnZpZGlhX2J1Z3MgfSwKQEAgLTYwOSw5ICs2NzIs MTMgQEAgc3RhdGljIHN0cnVjdCBjaGlwc2V0IGVhcmx5X3Fya1tdIF9faW5pdGRhdGEgPSB7CiAJ ICovCiAJeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDBmMDAsCiAJCVBDSV9DTEFTU19CUklER0Vf SE9TVCwgUENJX0FOWV9JRCwgMCwgZm9yY2VfZGlzYWJsZV9ocGV0fSwKKwl7IFBDSV9WRU5ET1Jf SURfQlJPQURDT00sIDB4NDMzMSwKKwkgIFBDSV9DTEFTU19ORVRXT1JLX09USEVSLCBQQ0lfQU5Z X0lELCAwLCBhcHBsZV9haXJwb3J0X3Jlc2V0fSwKIAl7fQogfTsKIAorc3RhdGljIHZvaWQgX19p bml0IGVhcmx5X3BjaV9zY2FuX2J1cyhpbnQgYnVzKTsKKwogLyoqCiAgKiBjaGVja19kZXZfcXVp cmsgLSBhcHBseSBlYXJseSBxdWlya3MgdG8gYSBnaXZlbiBQQ0kgZGV2aWNlCiAgKiBAbnVtOiBi dXMgbnVtYmVyCkBAIC02MjAsNyArNjg3LDcgQEAgc3RhdGljIHN0cnVjdCBjaGlwc2V0IGVhcmx5 X3Fya1tdIF9faW5pdGRhdGEgPSB7CiAgKgogICogQ2hlY2sgdGhlIHZlbmRvciAmIGRldmljZSBJ RCBhZ2FpbnN0IHRoZSBlYXJseSBxdWlya3MgdGFibGUuCiAgKgotICogSWYgdGhlIGRldmljZSBp cyBzaW5nbGUgZnVuY3Rpb24sIGxldCBlYXJseV9xdWlya3MoKSBrbm93IHNvIHdlIGRvbid0Cisg KiBJZiB0aGUgZGV2aWNlIGlzIHNpbmdsZSBmdW5jdGlvbiwgbGV0IGVhcmx5X3BjaV9zY2FuX2J1 cygpIGtub3cgc28gd2UgZG9uJ3QKICAqIHBva2UgYXQgdGhpcyBkZXZpY2UgYWdhaW4uCiAgKi8K IHN0YXRpYyBpbnQgX19pbml0IGNoZWNrX2Rldl9xdWlyayhpbnQgbnVtLCBpbnQgc2xvdCwgaW50 IGZ1bmMpCkBAIC02MjksNiArNjk2LDcgQEAgc3RhdGljIGludCBfX2luaXQgY2hlY2tfZGV2X3F1 aXJrKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAl1MTYgdmVuZG9yOwogCXUxNiBkZXZp Y2U7CiAJdTggdHlwZTsKKwl1OCBzZWM7CiAJaW50IGk7CiAKIAljbGFzcyA9IHJlYWRfcGNpX2Nv bmZpZ18xNihudW0sIHNsb3QsIGZ1bmMsIFBDSV9DTEFTU19ERVZJQ0UpOwpAQCAtNjU2LDI1ICs3 MjQsMzYgQEAgc3RhdGljIGludCBfX2luaXQgY2hlY2tfZGV2X3F1aXJrKGludCBudW0sIGludCBz bG90LCBpbnQgZnVuYykKIAogCXR5cGUgPSByZWFkX3BjaV9jb25maWdfYnl0ZShudW0sIHNsb3Qs IGZ1bmMsCiAJCQkJICAgIFBDSV9IRUFERVJfVFlQRSk7CisKKwlpZiAoKHR5cGUgJiAweDdmKSA9 PSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFKSB7CisJCXNlYyA9IHJlYWRfcGNpX2NvbmZpZ19ieXRl KG51bSwgc2xvdCwgZnVuYywgUENJX1NFQ09OREFSWV9CVVMpOworCQlpZiAoc2VjID4gbnVtKQor CQkJZWFybHlfcGNpX3NjYW5fYnVzKHNlYyk7CisJfQorCiAJaWYgKCEodHlwZSAmIDB4ODApKQog CQlyZXR1cm4gLTE7CiAKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBfX2luaXQgZWFybHlfcXVpcmtz KHZvaWQpCitzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcGNpX3NjYW5fYnVzKGludCBidXMpCiB7 CiAJaW50IHNsb3QsIGZ1bmM7CiAKLQlpZiAoIWVhcmx5X3BjaV9hbGxvd2VkKCkpCi0JCXJldHVy bjsKLQogCS8qIFBvb3IgbWFuJ3MgUENJIGRpc2NvdmVyeSAqLwotCS8qIE9ubHkgc2NhbiB0aGUg cm9vdCBidXMgKi8KIAlmb3IgKHNsb3QgPSAwOyBzbG90IDwgMzI7IHNsb3QrKykKIAkJZm9yIChm dW5jID0gMDsgZnVuYyA8IDg7IGZ1bmMrKykgewogCQkJLyogT25seSBwcm9iZSBmdW5jdGlvbiAw IG9uIHNpbmdsZSBmbiBkZXZpY2VzICovCi0JCQlpZiAoY2hlY2tfZGV2X3F1aXJrKDAsIHNsb3Qs IGZ1bmMpKQorCQkJaWYgKGNoZWNrX2Rldl9xdWlyayhidXMsIHNsb3QsIGZ1bmMpKQogCQkJCWJy ZWFrOwogCQl9CiB9CisKK3ZvaWQgX19pbml0IGVhcmx5X3F1aXJrcyh2b2lkKQoreworCWlmICgh ZWFybHlfcGNpX2FsbG93ZWQoKSkKKwkJcmV0dXJuOworCisJZWFybHlfcGNpX3NjYW5fYnVzKDAp OworfQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3BhcmF2aXJ0LmMgYi9hcmNoL3g4Ni9r ZXJuZWwvcGFyYXZpcnQuYwppbmRleCA4ZDEyZjA1NDZkZmMuLjg4MTllYzczMGJlNCAxMDA2NDQK LS0tIGEvYXJjaC94ODYva2VybmVsL3BhcmF2aXJ0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL3Bh cmF2aXJ0LmMKQEAgLTU1LDEyICs1NSwxMiBAQCBhc20gKCIucHVzaHNlY3Rpb24gLmVudHJ5LnRl eHQsIFwiYXhcIlxuIgogICAgICAiLnBvcHNlY3Rpb24iKTsKIAogLyogaWRlbnRpdHkgZnVuY3Rp b24sIHdoaWNoIGNhbiBiZSBpbmxpbmVkICovCi11MzIgX3BhcmF2aXJ0X2lkZW50XzMyKHUzMiB4 KQordTMyIG5vdHJhY2UgX3BhcmF2aXJ0X2lkZW50XzMyKHUzMiB4KQogewogCXJldHVybiB4Owog fQogCi11NjQgX3BhcmF2aXJ0X2lkZW50XzY0KHU2NCB4KQordTY0IG5vdHJhY2UgX3BhcmF2aXJ0 X2lkZW50XzY0KHU2NCB4KQogewogCXJldHVybiB4OwogfQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv a3ZtL3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC5jCmluZGV4IGU4OTBjMDM5OGQ2Mi4uNDEzZmJi MDg3NzE4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14LmMKKysrIGIvYXJjaC94ODYva3Zt L3ZteC5jCkBAIC0zNzIsNiArMzcyLDcgQEAgc3RydWN0IG5lc3RlZF92bXggewogCXN0cnVjdCBs aXN0X2hlYWQgdm1jczAyX3Bvb2w7CiAJaW50IHZtY3MwMl9udW07CiAJdTY0IHZtY3MwMV90c2Nf b2Zmc2V0OworCWJvb2wgY2hhbmdlX3ZtY3MwMV92aXJ0dWFsX3gyYXBpY19tb2RlOwogCS8qIEwy IG11c3QgcnVuIG5leHQsIGFuZCBtdXN0bid0IGRlY2lkZSB0byBleGl0IHRvIEwxLiAqLwogCWJv b2wgbmVzdGVkX3J1bl9wZW5kaW5nOwogCS8qCkBAIC01Nzc3LDIyICs1Nzc4LDI3IEBAIHN0YXRp YyB2b2lkIG5lc3RlZF9mcmVlX3ZtY3MwMihzdHJ1Y3QgdmNwdV92bXggKnZteCwgZ3BhX3Qgdm1w dHIpCiAKIC8qCiAgKiBGcmVlIGFsbCBWTUNTcyBzYXZlZCBmb3IgdGhpcyB2Y3B1LCBleGNlcHQg dGhlIG9uZSBwb2ludGVkIGJ5Ci0gKiB2bXgtPmxvYWRlZF92bWNzLiBUaGVzZSBpbmNsdWRlIHRo ZSBWTUNTcyBpbiB2bWNzMDJfcG9vbCAoZXhjZXB0IHRoZSBvbmUKLSAqIGN1cnJlbnRseSB1c2Vk LCBpZiBydW5uaW5nIEwyKSwgYW5kIHZtY3MwMSB3aGVuIHJ1bm5pbmcgTDIuCisgKiB2bXgtPmxv YWRlZF92bWNzLiBXZSBtdXN0IGJlIHJ1bm5pbmcgTDEsIHNvIHZteC0+bG9hZGVkX3ZtY3MKKyAq IG11c3QgYmUgJnZteC0+dm1jczAxLgogICovCiBzdGF0aWMgdm9pZCBuZXN0ZWRfZnJlZV9hbGxf c2F2ZWRfdm1jc3Moc3RydWN0IHZjcHVfdm14ICp2bXgpCiB7CiAJc3RydWN0IHZtY3MwMl9saXN0 ICppdGVtLCAqbjsKKworCVdBUk5fT04odm14LT5sb2FkZWRfdm1jcyAhPSAmdm14LT52bWNzMDEp OwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVtLCBuLCAmdm14LT5uZXN0ZWQudm1jczAy X3Bvb2wsIGxpc3QpIHsKLQkJaWYgKHZteC0+bG9hZGVkX3ZtY3MgIT0gJml0ZW0tPnZtY3MwMikK LQkJCWZyZWVfbG9hZGVkX3ZtY3MoJml0ZW0tPnZtY3MwMik7CisJCS8qCisJCSAqIFNvbWV0aGlu ZyB3aWxsIGxlYWsgaWYgdGhlIGFib3ZlIFdBUk4gdHJpZ2dlcnMuICBCZXR0ZXIgdGhhbgorCQkg KiBhIHVzZS1hZnRlci1mcmVlLgorCQkgKi8KKwkJaWYgKHZteC0+bG9hZGVkX3ZtY3MgPT0gJml0 ZW0tPnZtY3MwMikKKwkJCWNvbnRpbnVlOworCisJCWZyZWVfbG9hZGVkX3ZtY3MoJml0ZW0tPnZt Y3MwMik7CiAJCWxpc3RfZGVsKCZpdGVtLT5saXN0KTsKIAkJa2ZyZWUoaXRlbSk7CisJCXZteC0+ bmVzdGVkLnZtY3MwMl9udW0tLTsKIAl9Ci0Jdm14LT5uZXN0ZWQudm1jczAyX251bSA9IDA7Ci0K LQlpZiAodm14LT5sb2FkZWRfdm1jcyAhPSAmdm14LT52bWNzMDEpCi0JCWZyZWVfbG9hZGVkX3Zt Y3MoJnZteC0+dm1jczAxKTsKIH0KIAogLyoKQEAgLTcwNzksNiArNzA4NSwxMiBAQCBzdGF0aWMg dm9pZCB2bXhfc2V0X3ZpcnR1YWxfeDJhcGljX21vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBi b29sIHNldCkKIHsKIAl1MzIgc2VjX2V4ZWNfY29udHJvbDsKIAorCS8qIFBvc3Rwb25lIGV4ZWN1 dGlvbiB1bnRpbCB2bWNzMDEgaXMgdGhlIGN1cnJlbnQgVk1DUy4gKi8KKwlpZiAoaXNfZ3Vlc3Rf bW9kZSh2Y3B1KSkgeworCQl0b192bXgodmNwdSktPm5lc3RlZC5jaGFuZ2Vfdm1jczAxX3ZpcnR1 YWxfeDJhcGljX21vZGUgPSB0cnVlOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBUaGVyZSBp cyBub3QgcG9pbnQgdG8gZW5hYmxlIHZpcnR1YWxpemUgeDJhcGljIHdpdGhvdXQgZW5hYmxlCiAJ ICogYXBpY3YKQEAgLTc1NTcsMTMgKzc1NjksNDYgQEAgc3RhdGljIHZvaWQgX19ub2Nsb25lIHZt eF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJdm14X2NvbXBsZXRlX2ludGVycnVw dHModm14KTsKIH0KIAorc3RhdGljIHZvaWQgdm14X2xvYWRfdm1jczAxKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkKK3sKKwlzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTsKKwlpbnQg Y3B1OworCisJaWYgKHZteC0+bG9hZGVkX3ZtY3MgPT0gJnZteC0+dm1jczAxKQorCQlyZXR1cm47 CisKKwljcHUgPSBnZXRfY3B1KCk7CisJdm14LT5sb2FkZWRfdm1jcyA9ICZ2bXgtPnZtY3MwMTsK Kwl2bXhfdmNwdV9wdXQodmNwdSk7CisJdm14X3ZjcHVfbG9hZCh2Y3B1LCBjcHUpOworCXZjcHUt PmNwdSA9IGNwdTsKKwlwdXRfY3B1KCk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgY3Vy cmVudCB2bWNzIG9mIHRoZSBsb2dpY2FsIHByb2Nlc3NvciBpcyB0aGUKKyAqIHZtY3MwMSBvZiB0 aGUgdmNwdSBiZWZvcmUgY2FsbGluZyBmcmVlX25lc3RlZCgpLgorICovCitzdGF0aWMgdm9pZCB2 bXhfZnJlZV92Y3B1X25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisgICAgICAgc3Ry dWN0IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7CisgICAgICAgaW50IHI7CisKKyAgICAg ICByID0gdmNwdV9sb2FkKHZjcHUpOworICAgICAgIEJVR19PTihyKTsKKyAgICAgICB2bXhfbG9h ZF92bWNzMDEodmNwdSk7CisgICAgICAgZnJlZV9uZXN0ZWQodm14KTsKKyAgICAgICB2Y3B1X3B1 dCh2Y3B1KTsKK30KKwogc3RhdGljIHZvaWQgdm14X2ZyZWVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpCiB7CiAJc3RydWN0IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7CiAKIAlmcmVl X3ZwaWQodm14KTsKKwlsZWF2ZV9ndWVzdF9tb2RlKHZjcHUpOworCXZteF9mcmVlX3ZjcHVfbmVz dGVkKHZjcHUpOwogCWZyZWVfbG9hZGVkX3ZtY3Modm14LT5sb2FkZWRfdm1jcyk7Ci0JZnJlZV9u ZXN0ZWQodm14KTsKIAlrZnJlZSh2bXgtPmd1ZXN0X21zcnMpOwogCWt2bV92Y3B1X3VuaW5pdCh2 Y3B1KTsKIAlrbWVtX2NhY2hlX2ZyZWUoa3ZtX3ZjcHVfY2FjaGUsIHZteCk7CkBAIC04NzA3LDcg Kzg3NTIsNiBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3ZtZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHUzMiBleGl0X3JlYXNvbiwKIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgZXhpdF9xdWFs aWZpY2F0aW9uKQogewogCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUpOwotCWlu dCBjcHU7CiAJc3RydWN0IHZtY3MxMiAqdm1jczEyID0gZ2V0X3ZtY3MxMih2Y3B1KTsKIAogCS8q IHRyeWluZyB0byBjYW5jZWwgdm1sYXVuY2gvdm1yZXN1bWUgaXMgYSBidWcgKi8KQEAgLTg3MzIs MTIgKzg3NzYsNyBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3ZtZXhpdChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsIHUzMiBleGl0X3JlYXNvbiwKIAkJCQkgICAgICAgdm1jczEyLT52bV9leGl0X2lu dHJfZXJyb3JfY29kZSwKIAkJCQkgICAgICAgS1ZNX0lTQV9WTVgpOwogCi0JY3B1ID0gZ2V0X2Nw dSgpOwotCXZteC0+bG9hZGVkX3ZtY3MgPSAmdm14LT52bWNzMDE7Ci0Jdm14X3ZjcHVfcHV0KHZj cHUpOwotCXZteF92Y3B1X2xvYWQodmNwdSwgY3B1KTsKLQl2Y3B1LT5jcHUgPSBjcHU7Ci0JcHV0 X2NwdSgpOworCXZteF9sb2FkX3ZtY3MwMSh2Y3B1KTsKIAogCXZtX2VudHJ5X2NvbnRyb2xzX2lu aXQodm14LCB2bWNzX3JlYWQzMihWTV9FTlRSWV9DT05UUk9MUykpOwogCXZtX2V4aXRfY29udHJv bHNfaW5pdCh2bXgsIHZtY3NfcmVhZDMyKFZNX0VYSVRfQ09OVFJPTFMpKTsKQEAgLTg3NTIsNiAr ODc5MSwxMiBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3ZtZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHUzMiBleGl0X3JlYXNvbiwKIAkvKiBVcGRhdGUgVFNDX09GRlNFVCBpZiBUU0Mgd2Fz IGNoYW5nZWQgd2hpbGUgTDIgcmFuICovCiAJdm1jc193cml0ZTY0KFRTQ19PRkZTRVQsIHZteC0+ bmVzdGVkLnZtY3MwMV90c2Nfb2Zmc2V0KTsKIAorCWlmICh2bXgtPm5lc3RlZC5jaGFuZ2Vfdm1j czAxX3ZpcnR1YWxfeDJhcGljX21vZGUpIHsKKwkJdm14LT5uZXN0ZWQuY2hhbmdlX3ZtY3MwMV92 aXJ0dWFsX3gyYXBpY19tb2RlID0gZmFsc2U7CisJCXZteF9zZXRfdmlydHVhbF94MmFwaWNfbW9k ZSh2Y3B1LAorCQkJCXZjcHUtPmFyY2guYXBpY19iYXNlICYgWDJBUElDX0VOQUJMRSk7CisJfQor CiAJLyogVGhpcyBpcyBuZWVkZWQgZm9yIHNhbWUgcmVhc29uIGFzIGl0IHdhcyBuZWVkZWQgaW4g cHJlcGFyZV92bWNzMDIgKi8KIAl2bXgtPmhvc3RfcnNwID0gMDsKIApkaWZmIC0tZ2l0IGEvYXJj aC94ODYvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgYi9hcmNoL3g4Ni9zeXNjYWxscy9zeXNjYWxs XzMyLnRibAppbmRleCBkNmI4Njc5MjE2MTIuLjUwYWE1OGJlNzkzMyAxMDA2NDQKLS0tIGEvYXJj aC94ODYvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwKKysrIGIvYXJjaC94ODYvc3lzY2FsbHMvc3lz Y2FsbF8zMi50YmwKQEAgLTI5NCw3ICsyOTQsNyBAQAogIyAyODUgc3lzX3NldGFsdHJvb3QKIDI4 NglpMzg2CWFkZF9rZXkJCQlzeXNfYWRkX2tleQogMjg3CWkzODYJcmVxdWVzdF9rZXkJCXN5c19y ZXF1ZXN0X2tleQotMjg4CWkzODYJa2V5Y3RsCQkJc3lzX2tleWN0bAorMjg4CWkzODYJa2V5Y3Rs CQkJc3lzX2tleWN0bAkJCWNvbXBhdF9zeXNfa2V5Y3RsCiAyODkJaTM4Nglpb3ByaW9fc2V0CQlz eXNfaW9wcmlvX3NldAogMjkwCWkzODYJaW9wcmlvX2dldAkJc3lzX2lvcHJpb19nZXQKIDI5MQlp Mzg2CWlub3RpZnlfaW5pdAkJc3lzX2lub3RpZnlfaW5pdApkaWZmIC0tZ2l0IGEvYmxvY2svZ2Vu aGQuYyBiL2Jsb2NrL2dlbmhkLmMKaW5kZXggOTMxNmY1ZmQ0MTZmLi41NDhlOWU2OTg2MTAgMTAw NjQ0Ci0tLSBhL2Jsb2NrL2dlbmhkLmMKKysrIGIvYmxvY2svZ2VuaGQuYwpAQCAtNjExLDcgKzYx MSw3IEBAIHZvaWQgYWRkX2Rpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spCiAKIAkvKiBSZWdpc3Rl ciBCREkgYmVmb3JlIHJlZmVyZW5jaW5nIGl0IGZyb20gYmRldiAqLwogCWJkaSA9ICZkaXNrLT5x dWV1ZS0+YmFja2luZ19kZXZfaW5mbzsKLQliZGlfcmVnaXN0ZXJfZGV2KGJkaSwgZGlza19kZXZ0 KGRpc2spKTsKKwliZGlfcmVnaXN0ZXJfb3duZXIoYmRpLCBkaXNrX3RvX2RldihkaXNrKSk7CiAK IAlibGtfcmVnaXN0ZXJfcmVnaW9uKGRpc2tfZGV2dChkaXNrKSwgZGlzay0+bWlub3JzLCBOVUxM LAogCQkJICAgIGV4YWN0X21hdGNoLCBleGFjdF9sb2NrLCBkaXNrKTsKQEAgLTgyOSw2ICs4Mjks NyBAQCBzdGF0aWMgdm9pZCBkaXNrX3NlcWZfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcWYsIHZv aWQgKnYpCiAJaWYgKGl0ZXIpIHsKIAkJY2xhc3NfZGV2X2l0ZXJfZXhpdChpdGVyKTsKIAkJa2Zy ZWUoaXRlcik7CisJCXNlcWYtPnByaXZhdGUgPSBOVUxMOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEv Y3J5cHRvL2Jsa2NpcGhlci5jIGIvY3J5cHRvL2Jsa2NpcGhlci5jCmluZGV4IDNjNTUxZDQ2YWEz Yi4uMzcxMzBiODFkMGQ0IDEwMDY0NAotLS0gYS9jcnlwdG8vYmxrY2lwaGVyLmMKKysrIGIvY3J5 cHRvL2Jsa2NpcGhlci5jCkBAIC0yMzMsNiArMjMzLDggQEAgc3RhdGljIGludCBibGtjaXBoZXJf d2Fsa19uZXh0KHN0cnVjdCBibGtjaXBoZXJfZGVzYyAqZGVzYywKIAkJcmV0dXJuIGJsa2NpcGhl cl93YWxrX2RvbmUoZGVzYywgd2FsaywgLUVJTlZBTCk7CiAJfQogCisJYnNpemUgPSBtaW4od2Fs ay0+d2Fsa19ibG9ja3NpemUsIG4pOworCiAJd2Fsay0+ZmxhZ3MgJj0gfihCTEtDSVBIRVJfV0FM S19TTE9XIHwgQkxLQ0lQSEVSX1dBTEtfQ09QWSB8CiAJCQkgQkxLQ0lQSEVSX1dBTEtfRElGRik7 CiAJaWYgKCFzY2F0dGVyd2Fsa19hbGlnbmVkKCZ3YWxrLT5pbiwgd2Fsay0+YWxpZ25tYXNrKSB8 fApAQCAtMjQ1LDcgKzI0Nyw2IEBAIHN0YXRpYyBpbnQgYmxrY2lwaGVyX3dhbGtfbmV4dChzdHJ1 Y3QgYmxrY2lwaGVyX2Rlc2MgKmRlc2MsCiAJCX0KIAl9CiAKLQlic2l6ZSA9IG1pbih3YWxrLT53 YWxrX2Jsb2Nrc2l6ZSwgbik7CiAJbiA9IHNjYXR0ZXJ3YWxrX2NsYW1wKCZ3YWxrLT5pbiwgbik7 CiAJbiA9IHNjYXR0ZXJ3YWxrX2NsYW1wKCZ3YWxrLT5vdXQsIG4pOwogCmRpZmYgLS1naXQgYS9j cnlwdG8vY3J5cHRkLmMgYi9jcnlwdG8vY3J5cHRkLmMKaW5kZXggNzVjNDE1ZDM3MDg2Li5kODVm YWI5NzU1MTQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9jcnlwdGQuYworKysgYi9jcnlwdG8vY3J5cHRk LmMKQEAgLTU2NSw5ICs1NjUsMTQgQEAgc3RhdGljIGludCBjcnlwdGRfaGFzaF9leHBvcnQoc3Ry dWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwgdm9pZCAqb3V0KQogCiBzdGF0aWMgaW50IGNyeXB0ZF9o YXNoX2ltcG9ydChzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxLCBjb25zdCB2b2lkICppbikKIHsK LQlzdHJ1Y3QgY3J5cHRkX2hhc2hfcmVxdWVzdF9jdHggKnJjdHggPSBhaGFzaF9yZXF1ZXN0X2N0 eChyZXEpOworCXN0cnVjdCBjcnlwdG9fYWhhc2ggKnRmbSA9IGNyeXB0b19haGFzaF9yZXF0Zm0o cmVxKTsKKwlzdHJ1Y3QgY3J5cHRkX2hhc2hfY3R4ICpjdHggPSBjcnlwdG9fYWhhc2hfY3R4KHRm bSk7CisJc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MgPSBjcnlwdGRfc2hhc2hfZGVzYyhyZXEpOwor CisJZGVzYy0+dGZtID0gY3R4LT5jaGlsZDsKKwlkZXNjLT5mbGFncyA9IHJlcS0+YmFzZS5mbGFn czsKIAotCXJldHVybiBjcnlwdG9fc2hhc2hfaW1wb3J0KCZyY3R4LT5kZXNjLCBpbik7CisJcmV0 dXJuIGNyeXB0b19zaGFzaF9pbXBvcnQoZGVzYywgaW4pOwogfQogCiBzdGF0aWMgaW50IGNyeXB0 ZF9jcmVhdGVfaGFzaChzdHJ1Y3QgY3J5cHRvX3RlbXBsYXRlICp0bXBsLCBzdHJ1Y3QgcnRhdHRy ICoqdGIsCmRpZmYgLS1naXQgYS9jcnlwdG8vZ2NtLmMgYi9jcnlwdG8vZ2NtLmMKaW5kZXggZjBi ZDAwYjE1ZjI2Li5kMmEwZjczNzFjZjAgMTAwNjQ0Ci0tLSBhL2NyeXB0by9nY20uYworKysgYi9j cnlwdG8vZ2NtLmMKQEAgLTcxNiw3ICs3MTYsOSBAQCBzdGF0aWMgc3RydWN0IGNyeXB0b19pbnN0 YW5jZSAqY3J5cHRvX2djbV9hbGxvY19jb21tb24oc3RydWN0IHJ0YXR0ciAqKnRiLAogCiAJZ2hh c2hfYWxnID0gY3J5cHRvX2ZpbmRfYWxnKGdoYXNoX25hbWUsICZjcnlwdG9fYWhhc2hfdHlwZSwK IAkJCQkgICAgQ1JZUFRPX0FMR19UWVBFX0hBU0gsCi0JCQkJICAgIENSWVBUT19BTEdfVFlQRV9B SEFTSF9NQVNLKTsKKwkJCQkgICAgQ1JZUFRPX0FMR19UWVBFX0FIQVNIX01BU0sgfAorCQkJCSAg ICBjcnlwdG9fcmVxdWlyZXNfc3luYyhhbGd0LT50eXBlLAorCQkJCQkJCSBhbGd0LT5tYXNrKSk7 CiAJaWYgKElTX0VSUihnaGFzaF9hbGcpKQogCQlyZXR1cm4gRVJSX0NBU1QoZ2hhc2hfYWxnKTsK IApkaWZmIC0tZ2l0IGEvY3J5cHRvL3NjYXR0ZXJ3YWxrLmMgYi9jcnlwdG8vc2NhdHRlcndhbGsu YwppbmRleCA3OWNhMjI3OGMyYTMuLjBlYzdhNmZhM2Q0ZCAxMDA2NDQKLS0tIGEvY3J5cHRvL3Nj YXR0ZXJ3YWxrLmMKKysrIGIvY3J5cHRvL3NjYXR0ZXJ3YWxrLmMKQEAgLTY4LDcgKzY4LDggQEAg c3RhdGljIHZvaWQgc2NhdHRlcndhbGtfcGFnZWRvbmUoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2Fs aywgaW50IG91dCwKIAogdm9pZCBzY2F0dGVyd2Fsa19kb25lKHN0cnVjdCBzY2F0dGVyX3dhbGsg KndhbGssIGludCBvdXQsIGludCBtb3JlKQogewotCWlmICghKHNjYXR0ZXJ3YWxrX3BhZ2VsZW4o d2FsaykgJiAoUEFHRV9TSVpFIC0gMSkpIHx8ICFtb3JlKQorCWlmICghbW9yZSB8fCB3YWxrLT5v ZmZzZXQgPj0gd2Fsay0+c2ctPm9mZnNldCArIHdhbGstPnNnLT5sZW5ndGggfHwKKwkgICAgISh3 YWxrLT5vZmZzZXQgJiAoUEFHRV9TSVpFIC0gMSkpKQogCQlzY2F0dGVyd2Fsa19wYWdlZG9uZSh3 YWxrLCBvdXQsIG1vcmUpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoc2NhdHRlcndhbGtfZG9uZSk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmggYi9kcml2ZXJzL2JjbWEv YmNtYV9wcml2YXRlLmgKaW5kZXggMDliNjMyYWQwZmUyLi43ZGVkOTk0YzZkZDAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaAorKysgYi9kcml2ZXJzL2JjbWEvYmNtYV9w cml2YXRlLmgKQEAgLTgsOCArOCw2IEBACiAjaW5jbHVkZSA8bGludXgvYmNtYS9iY21hLmg+CiAj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4KIAotI2RlZmluZSBCQ01BX0NPUkVfU0laRQkJMHgxMDAw Ci0KICNkZWZpbmUgYmNtYV9lcnIoYnVzLCBmbXQsIC4uLikgXAogCXByX2VycigiYnVzJWQ6ICIg Zm10LCAoYnVzKS0+bnVtLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBiY21hX3dhcm4oYnVzLCBm bXQsIC4uLikgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvYXRoM2suYyBiL2RyaXZl cnMvYmx1ZXRvb3RoL2F0aDNrLmMKaW5kZXggOGU1MWI2YzhjY2FjLi4xYWY5ZmQzMjAyYzEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMKKysrIGIvZHJpdmVycy9ibHVldG9v dGgvYXRoM2suYwpAQCAtMTIyLDYgKzEyMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2Rl dmljZV9pZCBhdGgza190YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQzMikg fSwKIAl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0NzIpIH0sCiAJeyBVU0JfREVWSUNFKDB4MTNk MywgMHgzNDc0KSB9LAorCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ4NykgfSwKKwl7IFVTQl9E RVZJQ0UoMHgxM2QzLCAweDM0OTApIH0sCiAKIAkvKiBBdGhlcm9zIEFSNUJCVTEyIHdpdGggc2Zs YXNoIGZpcm13YXJlICovCiAJeyBVU0JfREVWSUNFKDB4MDQ4OSwgMHhFMDJDKSB9LApAQCAtMTg4 LDYgKzE5MCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgza19ibGlz dF90YmxbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0MzIpLCAuZHJpdmVyX2luZm8g PSBCVFVTQl9BVEgzMDEyIH0sCiAJeyBVU0JfREVWSUNFKDB4MTNkMywgMHgzNDcyKSwgLmRyaXZl cl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAogCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ3NCks IC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKKwl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAw eDM0ODcpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgzMDEyIH0sCisJeyBVU0JfREVWSUNFKDB4 MTNkMywgMHgzNDkwKSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAogCiAJLyogQXRo ZXJvcyBBUjVCQlUyMiB3aXRoIHNmbGFzaCBmaXJtd2FyZSAqLwogCXsgVVNCX0RFVklDRSgweDA0 ODksIDB4RTAzNiksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmx1ZXRvb3RoL2J0dXNiLmMgYi9kcml2ZXJzL2JsdWV0b290aC9idHVzYi5jCmlu ZGV4IGE5Y2NlZTM1OTczZS4uODc2NjU0NzcyMDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2JsdWV0 b290aC9idHVzYi5jCisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0dXNiLmMKQEAgLTIxNiw2ICsy MTYsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYmxhY2tsaXN0X3RhYmxl W10gPSB7CiAJeyBVU0JfREVWSUNFKDB4MTNkMywgMHgzNDMyKSwgLmRyaXZlcl9pbmZvID0gQlRV U0JfQVRIMzAxMiB9LAogCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ3MiksIC5kcml2ZXJfaW5m byA9IEJUVVNCX0FUSDMwMTIgfSwKIAl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0NzQpLCAuZHJp dmVyX2luZm8gPSBCVFVTQl9BVEgzMDEyIH0sCisJeyBVU0JfREVWSUNFKDB4MTNkMywgMHgzNDg3 KSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAorCXsgVVNCX0RFVklDRSgweDEzZDMs IDB4MzQ5MCksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKIAogCS8qIEF0aGVyb3Mg QVI1QkJVMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUgKi8KIAl7IFVTQl9ERVZJQ0UoMHgwNDg5LCAw eGUwMmMpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9JR05PUkUgfSwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYyBiL2RyaXZlcnMvY2hhci9od19yYW5kb20vb21h cC1ybmcuYwppbmRleCBmNjZlYTI1ODM4MmYuLjcxMGFlYzc4MjBhNCAxMDA2NDQKLS0tIGEvZHJp dmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jCisrKyBiL2RyaXZlcnMvY2hhci9od19yYW5k b20vb21hcC1ybmcuYwpAQCAtMzg0LDcgKzM4NCwxMiBAQCBzdGF0aWMgaW50IG9tYXBfcm5nX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJfQogCiAJcG1fcnVudGltZV9lbmFi bGUoJnBkZXYtPmRldik7Ci0JcG1fcnVudGltZV9nZXRfc3luYygmcGRldi0+ZGV2KTsKKwlyZXQg PSBwbV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5kZXYpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vy cigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJ1bnRpbWVfZ2V0IGRldmljZTogJWRcbiIsIHJldCk7 CisJCXBtX3J1bnRpbWVfcHV0X25vaWRsZSgmcGRldi0+ZGV2KTsKKwkJZ290byBlcnJfaW9yZW1h cDsKKwl9CiAKIAlyZXQgPSAoZGV2LT5vZl9ub2RlKSA/IG9mX2dldF9vbWFwX3JuZ19kZXZpY2Vf ZGV0YWlscyhwcml2LCBwZGV2KSA6CiAJCQkJZ2V0X29tYXBfcm5nX2RldmljZV9kZXRhaWxzKHBy aXYpOwpAQCAtNDM3LDggKzQ0MiwxNSBAQCBzdGF0aWMgaW50IG9tYXBfcm5nX3N1c3BlbmQoc3Ry dWN0IGRldmljZSAqZGV2KQogc3RhdGljIGludCBvbWFwX3JuZ19yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQogewogCXN0cnVjdCBvbWFwX3JuZ19kZXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKKwlpbnQgcmV0OworCisJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOworCWlm IChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcnVudGltZV9nZXQgZGV2aWNlOiAl ZFxuIiwgcmV0KTsKKwkJcG1fcnVudGltZV9wdXRfbm9pZGxlKGRldik7CisJCXJldHVybiByZXQ7 CisJfQogCi0JcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwogCXByaXYtPnBkYXRhLT5pbml0KHBy aXYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvcmFuZG9tLmMgYi9k cml2ZXJzL2NoYXIvcmFuZG9tLmMKaW5kZXggZGRlOGRhMzFkY2FlLi42OTI0ODJiN2MyZmIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9yYW5kb20uYworKysgYi9kcml2ZXJzL2NoYXIvcmFuZG9t LmMKQEAgLTk1Niw2ICs5NTYsNyBAQCBzdGF0aWMgdm9pZCBfeGZlcl9zZWNvbmRhcnlfcG9vbChz dHJ1Y3QgZW50cm9weV9zdG9yZSAqciwgc2l6ZV90IG5ieXRlcykKIAltaXhfcG9vbF9ieXRlcyhy LCB0bXAsIGJ5dGVzLCBOVUxMKTsKIAljcmVkaXRfZW50cm9weV9iaXRzKHIsIGJ5dGVzKjgpOwog fQorRVhQT1JUX1NZTUJPTF9HUEwoYWRkX2ludGVycnVwdF9yYW5kb21uZXNzKTsKIAogLyoKICAq IFVzZWQgYXMgYSB3b3JrcXVldWUgZnVuY3Rpb24gc28gdGhhdCB3aGVuIHRoZSBpbnB1dCBwb29s IGlzIGdldHRpbmcKQEAgLTEzNzksMTIgKzEzODAsMTYgQEAgcmFuZG9tX3JlYWQoc3RydWN0IGZp bGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcykK IHN0YXRpYyBzc2l6ZV90CiB1cmFuZG9tX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191 c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcykKIHsKKwlzdGF0aWMgaW50IG1h eHdhcm4gPSAxMDsKIAlpbnQgcmV0OwogCi0JaWYgKHVubGlrZWx5KG5vbmJsb2NraW5nX3Bvb2wu aW5pdGlhbGl6ZWQgPT0gMCkpCi0JCXByaW50a19vbmNlKEtFUk5fTk9USUNFICJyYW5kb206ICVz IHVyYW5kb20gcmVhZCAiCi0JCQkgICAgIndpdGggJWQgYml0cyBvZiBlbnRyb3B5IGF2YWlsYWJs ZVxuIiwKLQkJCSAgICBjdXJyZW50LT5jb21tLCBub25ibG9ja2luZ19wb29sLmVudHJvcHlfdG90 YWwpOworCWlmICh1bmxpa2VseShub25ibG9ja2luZ19wb29sLmluaXRpYWxpemVkID09IDApICYm CisJICAgIG1heHdhcm4gPiAwKSB7CisJCW1heHdhcm4tLTsKKwkJcHJpbnRrKEtFUk5fTk9USUNF ICJyYW5kb206ICVzOiB1bmluaXRpYWxpemVkIHVyYW5kb20gcmVhZCAiCisJCSAgICAgICAiKCV6 ZCBieXRlcyByZWFkLCAlZCBiaXRzIG9mIGVudHJvcHkgYXZhaWxhYmxlKVxuIiwKKwkJICAgICAg IGN1cnJlbnQtPmNvbW0sIG5ieXRlcywgbm9uYmxvY2tpbmdfcG9vbC5lbnRyb3B5X3RvdGFsKTsK Kwl9CiAKIAluYnl0ZXMgPSBtaW5fdChzaXplX3QsIG5ieXRlcywgSU5UX01BWCA+PiAoRU5UUk9Q WV9TSElGVCArIDMpKTsKIAlyZXQgPSBleHRyYWN0X2VudHJvcHlfdXNlcigmbm9uYmxvY2tpbmdf cG9vbCwgYnVmLCBuYnl0ZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlz LmMgYi9kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXMuYwppbmRleCA1MTM1MGNkMDg0N2UuLjQxNWU0 N2Q3OWE0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzLmMKKysrIGIvZHJp dmVycy9jaGFyL3RwbS90cG1fdGlzLmMKQEAgLTE5NywxNiArMTk3LDE1IEBAIHN0YXRpYyBpbnQg Z2V0X2J1cnN0Y291bnQoc3RydWN0IHRwbV9jaGlwICpjaGlwKQogewogCXVuc2lnbmVkIGxvbmcg c3RvcDsKIAlpbnQgYnVyc3RjbnQ7CisJdTMyIHZhbHVlOwogCiAJLyogd2FpdCBmb3IgYnVyc3Rj b3VudCAqLwogCS8qIHdoaWNoIHRpbWVvdXQgdmFsdWUsIHNwZWMgaGFzIDIgYW5zd2VycyAoYyAm IGQpICovCiAJc3RvcCA9IGppZmZpZXMgKyBjaGlwLT52ZW5kb3IudGltZW91dF9kOwogCWRvIHsK LQkJYnVyc3RjbnQgPSBpb3JlYWQ4KGNoaXAtPnZlbmRvci5pb2Jhc2UgKwotCQkJCSAgIFRQTV9T VFMoY2hpcC0+dmVuZG9yLmxvY2FsaXR5KSArIDEpOwotCQlidXJzdGNudCArPSBpb3JlYWQ4KGNo aXAtPnZlbmRvci5pb2Jhc2UgKwotCQkJCSAgICBUUE1fU1RTKGNoaXAtPnZlbmRvci5sb2NhbGl0 eSkgKwotCQkJCSAgICAyKSA8PCA4OworCQl2YWx1ZSA9IGlvcmVhZDMyKGNoaXAtPnZlbmRvci5p b2Jhc2UgKworCQkJCSBUUE1fU1RTKGNoaXAtPnZlbmRvci5sb2NhbGl0eSkpOworCQlidXJzdGNu dCA9ICh2YWx1ZSA+PiA4KSAmIDB4RkZGRjsKIAkJaWYgKGJ1cnN0Y250KQogCQkJcmV0dXJuIGJ1 cnN0Y250OwogCQltc2xlZXAoVFBNX1RJTUVPVVQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbG9j a3NvdXJjZS9zdW40aV90aW1lci5jIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9zdW40aV90aW1lci5j CmluZGV4IGY0YTljMDA1OGI0ZC4uNTAxYzk1OTQxODgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ns b2Nrc291cmNlL3N1bjRpX3RpbWVyLmMKKysrIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9zdW40aV90 aW1lci5jCkBAIC0xMjAsMTIgKzEyMCwxNiBAQCBzdGF0aWMgc3RydWN0IGNsb2NrX2V2ZW50X2Rl dmljZSBzdW40aV9jbG9ja2V2ZW50ID0gewogCS5zZXRfbmV4dF9ldmVudCA9IHN1bjRpX2Nsa2V2 dF9uZXh0X2V2ZW50LAogfTsKIAorc3RhdGljIHZvaWQgc3VuNGlfdGltZXJfY2xlYXJfaW50ZXJy dXB0KHZvaWQpCit7CisJd3JpdGVsKFRJTUVSX0lSUV9FTigwKSwgdGltZXJfYmFzZSArIFRJTUVS X0lSUV9TVF9SRUcpOworfQogCiBzdGF0aWMgaXJxcmV0dXJuX3Qgc3VuNGlfdGltZXJfaW50ZXJy dXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKIHsKIAlzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNl ICpldnQgPSAoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqKWRldl9pZDsKIAotCXdyaXRlbCgw eDEsIHRpbWVyX2Jhc2UgKyBUSU1FUl9JUlFfU1RfUkVHKTsKKwlzdW40aV90aW1lcl9jbGVhcl9p bnRlcnJ1cHQoKTsKIAlldnQtPmV2ZW50X2hhbmRsZXIoZXZ0KTsKIAogCXJldHVybiBJUlFfSEFO RExFRDsKQEAgLTE4Miw2ICsxODYsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3VuNGlfdGltZXJf aW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpCiAJLyogTWFrZSBzdXJlIHRpbWVyIGlzIHN0 b3BwZWQgYmVmb3JlIHBsYXlpbmcgd2l0aCBpbnRlcnJ1cHRzICovCiAJc3VuNGlfY2xrZXZ0X3Rp bWVfc3RvcCgwKTsKIAorCS8qIGNsZWFyIHRpbWVyMCBpbnRlcnJ1cHQgKi8KKwlzdW40aV90aW1l cl9jbGVhcl9pbnRlcnJ1cHQoKTsKKwogCXN1bjRpX2Nsb2NrZXZlbnQuY3B1bWFzayA9IGNwdV9w b3NzaWJsZV9tYXNrOwogCXN1bjRpX2Nsb2NrZXZlbnQuaXJxID0gaXJxOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1oYXNoLmMgYi9kcml2ZXJzL2NyeXB0by9jYWFtL2Nh YW1oYXNoLmMKaW5kZXggYTIyZjliNDczYzIyLi40ZjAzYjFhMTRkNjIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvY3J5cHRvL2NhYW0vY2FhbWhhc2guYworKysgYi9kcml2ZXJzL2NyeXB0by9jYWFtL2Nh YW1oYXNoLmMKQEAgLTE3NzgsNiArMTc3OCw3IEBAIGNhYW1faGFzaF9hbGxvYyhzdHJ1Y3QgY2Fh bV9oYXNoX3RlbXBsYXRlICp0ZW1wbGF0ZSwKIAkJCSB0ZW1wbGF0ZS0+bmFtZSk7CiAJCXNucHJp bnRmKGFsZy0+Y3JhX2RyaXZlcl9uYW1lLCBDUllQVE9fTUFYX0FMR19OQU1FLCAiJXMiLAogCQkJ IHRlbXBsYXRlLT5kcml2ZXJfbmFtZSk7CisJCXRfYWxnLT5haGFzaF9hbGcuc2V0a2V5ID0gTlVM TDsKIAl9CiAJYWxnLT5jcmFfbW9kdWxlID0gVEhJU19NT0RVTEU7CiAJYWxnLT5jcmFfaW5pdCA9 IGNhYW1faGFzaF9jcmFfaW5pdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL254L254LmMg Yi9kcml2ZXJzL2NyeXB0by9ueC9ueC5jCmluZGV4IDU1MzNmZTMxYzkwZC4uNDMzYTc2OTZiZjBm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NyeXB0by9ueC9ueC5jCisrKyBiL2RyaXZlcnMvY3J5cHRv L254L254LmMKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgdm9pZCBueF9vZl91cGRhdGVfbXNj KHN0cnVjdCBkZXZpY2UgICAqZGV2LAogCQkgICAgICgoYnl0ZXNfc29fZmFyICsgc2l6ZW9mKHN0 cnVjdCBtc2NfdHJpcGxldCkpIDw9IGxlbnApICYmCiAJCSAgICAgaSA8IG1zYy0+dHJpcGxldHM7 CiAJCSAgICAgaSsrKSB7Ci0JCQlpZiAobXNjLT5mYyA+IE5YX01BWF9GQyB8fCBtc2MtPm1vZGUg PiBOWF9NQVhfTU9ERSkgeworCQkJaWYgKG1zYy0+ZmMgPj0gTlhfTUFYX0ZDIHx8IG1zYy0+bW9k ZSA+PSBOWF9NQVhfTU9ERSkgewogCQkJCWRldl9lcnIoZGV2LCAidW5rbm93biBmdW5jdGlvbiBj b2RlL21vZGUgIgogCQkJCQkiY29tYm86ICVkLyVkIChpZ25vcmVkKVxuIiwgbXNjLT5mYywKIAkJ CQkJbXNjLT5tb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGV2ZnJlcS9kZXZmcmVxLmMgYi9k cml2ZXJzL2RldmZyZXEvZGV2ZnJlcS5jCmluZGV4IDlmOTAzNjlkZDZiZC4uYmE4NTBlYjJkMjc1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RldmZyZXEvZGV2ZnJlcS5jCisrKyBiL2RyaXZlcnMvZGV2 ZnJlcS9kZXZmcmVxLmMKQEAgLTQ4Myw3ICs0ODMsNyBAQCBzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJl cV9hZGRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkJCWRldmZyZXEtPnByb2ZpbGUt Pm1heF9zdGF0ZSAqCiAJCQkJCQlkZXZmcmVxLT5wcm9maWxlLT5tYXhfc3RhdGUsCiAJCQkJCQlH RlBfS0VSTkVMKTsKLQlkZXZmcmVxLT50aW1lX2luX3N0YXRlID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKHVuc2lnbmVkIGludCkgKgorCWRldmZyZXEtPnRpbWVfaW5fc3RhdGUgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YodW5zaWduZWQgbG9uZykgKgogCQkJCQkJZGV2ZnJlcS0+cHJvZmls ZS0+bWF4X3N0YXRlLAogCQkJCQkJR0ZQX0tFUk5FTCk7CiAJZGV2ZnJlcS0+bGFzdF9zdGF0X3Vw ZGF0ZWQgPSBqaWZmaWVzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJld2lyZS9uZXQuYyBiL2Ry aXZlcnMvZmlyZXdpcmUvbmV0LmMKaW5kZXggYzM5ODY0NTIxOTRkLi4zZThmY2JmNTExZTIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZmlyZXdpcmUvbmV0LmMKKysrIGIvZHJpdmVycy9maXJld2lyZS9u ZXQuYwpAQCAtNTkxLDYgKzU5MSw5IEBAIHN0YXRpYyBpbnQgZnduZXRfaW5jb21pbmdfcGFja2V0 KHN0cnVjdCBmd25ldF9kZXZpY2UgKmRldiwgX19iZTMyICpidWYsIGludCBsZW4sCiAJaW50IHJl dHZhbDsKIAl1MTYgZXRoZXJfdHlwZTsKIAorCWlmIChsZW4gPD0gUkZDMjM3NF9VTkZSQUdfSERS X1NJWkUpCisJCXJldHVybiAwOworCiAJaGRyLncwID0gYmUzMl90b19jcHUoYnVmWzBdKTsKIAls ZiA9IGZ3bmV0X2dldF9oZHJfbGYoJmhkcik7CiAJaWYgKGxmID09IFJGQzIzNzRfSERSX1VORlJB RykgewpAQCAtNjE1LDcgKzYxOCwxMiBAQCBzdGF0aWMgaW50IGZ3bmV0X2luY29taW5nX3BhY2tl dChzdHJ1Y3QgZnduZXRfZGV2aWNlICpkZXYsIF9fYmUzMiAqYnVmLCBpbnQgbGVuLAogCQlyZXR1 cm4gZnduZXRfZmluaXNoX2luY29taW5nX3BhY2tldChuZXQsIHNrYiwgc291cmNlX25vZGVfaWQs CiAJCQkJCQkgICAgaXNfYnJvYWRjYXN0LCBldGhlcl90eXBlKTsKIAl9CisKIAkvKiBBIGRhdGFn cmFtIGZyYWdtZW50IGhhcyBiZWVuIHJlY2VpdmVkLCBub3cgdGhlIGZ1biBiZWdpbnMuICovCisK KwlpZiAobGVuIDw9IFJGQzIzNzRfRlJBR19IRFJfU0laRSkKKwkJcmV0dXJuIDA7CisKIAloZHIu dzEgPSBudG9obChidWZbMV0pOwogCWJ1ZiArPSAyOwogCWxlbiAtPSBSRkMyMzc0X0ZSQUdfSERS X1NJWkU7CkBAIC02MjksNiArNjM3LDkgQEAgc3RhdGljIGludCBmd25ldF9pbmNvbWluZ19wYWNr ZXQoc3RydWN0IGZ3bmV0X2RldmljZSAqZGV2LCBfX2JlMzIgKmJ1ZiwgaW50IGxlbiwKIAlkYXRh Z3JhbV9sYWJlbCA9IGZ3bmV0X2dldF9oZHJfZGdsKCZoZHIpOwogCWRnX3NpemUgPSBmd25ldF9n ZXRfaGRyX2RnX3NpemUoJmhkcik7IC8qID8/PyArIDEgKi8KIAorCWlmIChmZ19vZmYgKyBsZW4g PiBkZ19zaXplKQorCQlyZXR1cm4gMDsKKwogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmxvY2ss IGZsYWdzKTsKIAogCXBlZXIgPSBmd25ldF9wZWVyX2ZpbmRfYnlfbm9kZV9pZChkZXYsIHNvdXJj ZV9ub2RlX2lkLCBnZW5lcmF0aW9uKTsKQEAgLTczNSw2ICs3NDYsMjIgQEAgc3RhdGljIHZvaWQg ZnduZXRfcmVjZWl2ZV9wYWNrZXQoc3RydWN0IGZ3X2NhcmQgKmNhcmQsIHN0cnVjdCBmd19yZXF1 ZXN0ICpyLAogCWZ3X3NlbmRfcmVzcG9uc2UoY2FyZCwgciwgcmNvZGUpOwogfQogCitzdGF0aWMg aW50IGdhc3Bfc291cmNlX2lkKF9fYmUzMiAqcCkKK3sKKwlyZXR1cm4gYmUzMl90b19jcHUocFsw XSkgPj4gMTY7Cit9CisKK3N0YXRpYyB1MzIgZ2FzcF9zcGVjaWZpZXJfaWQoX19iZTMyICpwKQor eworCXJldHVybiAoYmUzMl90b19jcHUocFswXSkgJiAweGZmZmYpIDw8IDggfAorCSAgICAgICAo YmUzMl90b19jcHUocFsxXSkgJiAweGZmMDAwMDAwKSA+PiAyNDsKK30KKworc3RhdGljIHUzMiBn YXNwX3ZlcnNpb24oX19iZTMyICpwKQoreworCXJldHVybiBiZTMyX3RvX2NwdShwWzFdKSAmIDB4 ZmZmZmZmOworfQorCiBzdGF0aWMgdm9pZCBmd25ldF9yZWNlaXZlX2Jyb2FkY2FzdChzdHJ1Y3Qg ZndfaXNvX2NvbnRleHQgKmNvbnRleHQsCiAJCXUzMiBjeWNsZSwgc2l6ZV90IGhlYWRlcl9sZW5n dGgsIHZvaWQgKmhlYWRlciwgdm9pZCAqZGF0YSkKIHsKQEAgLTc0NCw5ICs3NzEsNiBAQCBzdGF0 aWMgdm9pZCBmd25ldF9yZWNlaXZlX2Jyb2FkY2FzdChzdHJ1Y3QgZndfaXNvX2NvbnRleHQgKmNv bnRleHQsCiAJX19iZTMyICpidWZfcHRyOwogCWludCByZXR2YWw7CiAJdTMyIGxlbmd0aDsKLQl1 MTYgc291cmNlX25vZGVfaWQ7Ci0JdTMyIHNwZWNpZmllcl9pZDsKLQl1MzIgdmVyOwogCXVuc2ln bmVkIGxvbmcgb2Zmc2V0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKQEAgLTc2MywyMiArNzg3 LDE3IEBAIHN0YXRpYyB2b2lkIGZ3bmV0X3JlY2VpdmVfYnJvYWRjYXN0KHN0cnVjdCBmd19pc29f Y29udGV4dCAqY29udGV4dCwKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+bG9jaywg ZmxhZ3MpOwogCi0Jc3BlY2lmaWVyX2lkID0gICAgKGJlMzJfdG9fY3B1KGJ1Zl9wdHJbMF0pICYg MHhmZmZmKSA8PCA4Ci0JCQl8IChiZTMyX3RvX2NwdShidWZfcHRyWzFdKSAmIDB4ZmYwMDAwMDAp ID4+IDI0OwotCXZlciA9IGJlMzJfdG9fY3B1KGJ1Zl9wdHJbMV0pICYgMHhmZmZmZmY7Ci0Jc291 cmNlX25vZGVfaWQgPSBiZTMyX3RvX2NwdShidWZfcHRyWzBdKSA+PiAxNjsKLQotCWlmIChzcGVj aWZpZXJfaWQgPT0gSUFOQV9TUEVDSUZJRVJfSUQgJiYKLQkgICAgKHZlciA9PSBSRkMyNzM0X1NX X1ZFUlNJT04KKwlpZiAobGVuZ3RoID4gSUVFRTEzOTRfR0FTUF9IRFJfU0laRSAmJgorCSAgICBn YXNwX3NwZWNpZmllcl9pZChidWZfcHRyKSA9PSBJQU5BX1NQRUNJRklFUl9JRCAmJgorCSAgICAo Z2FzcF92ZXJzaW9uKGJ1Zl9wdHIpID09IFJGQzI3MzRfU1dfVkVSU0lPTgogI2lmIElTX0VOQUJM RUQoQ09ORklHX0lQVjYpCi0JICAgICB8fCB2ZXIgPT0gUkZDMzE0Nl9TV19WRVJTSU9OCisJICAg ICB8fCBnYXNwX3ZlcnNpb24oYnVmX3B0cikgPT0gUkZDMzE0Nl9TV19WRVJTSU9OCiAjZW5kaWYK LQkgICAgKSkgewotCQlidWZfcHRyICs9IDI7Ci0JCWxlbmd0aCAtPSBJRUVFMTM5NF9HQVNQX0hE Ul9TSVpFOwotCQlmd25ldF9pbmNvbWluZ19wYWNrZXQoZGV2LCBidWZfcHRyLCBsZW5ndGgsIHNv dXJjZV9ub2RlX2lkLAorCSAgICApKQorCQlmd25ldF9pbmNvbWluZ19wYWNrZXQoZGV2LCBidWZf cHRyICsgMiwKKwkJCQkgICAgICBsZW5ndGggLSBJRUVFMTM5NF9HQVNQX0hEUl9TSVpFLAorCQkJ CSAgICAgIGdhc3Bfc291cmNlX2lkKGJ1Zl9wdHIpLAogCQkJCSAgICAgIGNvbnRleHQtPmNhcmQt PmdlbmVyYXRpb24sIHRydWUpOwotCX0KIAogCXBhY2tldC5wYXlsb2FkX2xlbmd0aCA9IGRldi0+ cmN2X2J1ZmZlcl9zaXplOwogCXBhY2tldC5pbnRlcnJ1cHQgPSAxOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9maXJtd2FyZS9lZmkvZWZpLXN0dWItaGVscGVyLmMgYi9kcml2ZXJzL2Zpcm13YXJlL2Vm aS9lZmktc3R1Yi1oZWxwZXIuYwppbmRleCAyZmIzYTBhYWI1NmMuLjhlYWU5YzlkNzg2MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLXN0dWItaGVscGVyLmMKKysrIGIvZHJp dmVycy9maXJtd2FyZS9lZmkvZWZpLXN0dWItaGVscGVyLmMKQEAgLTE1LDYgKzE1LDggQEAKICNk ZWZpbmUgRUZJX0VSUk9SCSh+MFVMKQogCiAKKyNkZWZpbmUgRUZJX01NQVBfTlJfU0xBQ0tfU0xP VFMJOAorCiBzdHJ1Y3QgZmlsZV9pbmZvIHsKIAllZmlfZmlsZV9oYW5kbGVfdCAqaGFuZGxlOwog CXU2NCBzaXplOwpAQCAtNDEsNDkgKzQzLDYyIEBAIHN0YXRpYyB2b2lkIGVmaV9wcmludGsoZWZp X3N5c3RlbV90YWJsZV90ICpzeXNfdGFibGVfYXJnLCBjaGFyICpzdHIpCiAjZGVmaW5lIHByX2Vm aV9lcnIoc3lzX3RhYmxlLCBtc2cpIGVmaV9wcmludGsoc3lzX3RhYmxlLCAiRUZJIHN0dWI6IEVS Uk9SOiAibXNnKQogCiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtbWFwX2hhc19oZWFkcm9vbSh1bnNp Z25lZCBsb25nIGJ1ZmZfc2l6ZSwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbWFwX3NpemUsCisJ CQkJICAgICB1bnNpZ25lZCBsb25nIGRlc2Nfc2l6ZSkKK3sKKwl1bnNpZ25lZCBsb25nIHNsYWNr ID0gYnVmZl9zaXplIC0gbWFwX3NpemU7CisKKwlyZXR1cm4gc2xhY2sgLyBkZXNjX3NpemUgPj0g RUZJX01NQVBfTlJfU0xBQ0tfU0xPVFM7Cit9CisKIHN0YXRpYyBlZmlfc3RhdHVzX3QgZWZpX2dl dF9tZW1vcnlfbWFwKGVmaV9zeXN0ZW1fdGFibGVfdCAqc3lzX3RhYmxlX2FyZywKLQkJCQkgICAg ICAgZWZpX21lbW9yeV9kZXNjX3QgKiptYXAsCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgKm1h cF9zaXplLAotCQkJCSAgICAgICB1bnNpZ25lZCBsb25nICpkZXNjX3NpemUsCi0JCQkJICAgICAg IHUzMiAqZGVzY192ZXIsCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgKmtleV9wdHIpCisJCQkJ ICAgICAgIHN0cnVjdCBlZmlfYm9vdF9tZW1tYXAgKm1hcCkKIHsKIAllZmlfbWVtb3J5X2Rlc2Nf dCAqbSA9IE5VTEw7CiAJZWZpX3N0YXR1c190IHN0YXR1czsKIAl1bnNpZ25lZCBsb25nIGtleTsK IAl1MzIgZGVzY192ZXJzaW9uOwogCi0JKm1hcF9zaXplID0gc2l6ZW9mKCptKSAqIDMyOworCSpt YXAtPmRlc2Nfc2l6ZSA9CXNpemVvZigqbSk7CisJKm1hcC0+bWFwX3NpemUgPQkqbWFwLT5kZXNj X3NpemUgKiAzMjsKKwkqbWFwLT5idWZmX3NpemUgPQkqbWFwLT5tYXBfc2l6ZTsKIGFnYWluOgot CS8qCi0JICogQWRkIGFuIGFkZGl0aW9uYWwgZWZpX21lbW9yeV9kZXNjX3QgYmVjYXVzZSB3ZSdy ZSBkb2luZyBhbgotCSAqIGFsbG9jYXRpb24gd2hpY2ggbWF5IGJlIGluIGEgbmV3IGRlc2NyaXB0 b3IgcmVnaW9uLgotCSAqLwotCSptYXBfc2l6ZSArPSBzaXplb2YoKm0pOwogCXN0YXR1cyA9IGVm aV9jYWxsX2Vhcmx5KGFsbG9jYXRlX3Bvb2wsIEVGSV9MT0FERVJfREFUQSwKLQkJCQkqbWFwX3Np emUsICh2b2lkICoqKSZtKTsKKwkJCQkqbWFwLT5tYXBfc2l6ZSwgKHZvaWQgKiopJm0pOwogCWlm IChzdGF0dXMgIT0gRUZJX1NVQ0NFU1MpCiAJCWdvdG8gZmFpbDsKIAotCSpkZXNjX3NpemUgPSAw OworCSptYXAtPmRlc2Nfc2l6ZSA9IDA7CiAJa2V5ID0gMDsKLQlzdGF0dXMgPSBlZmlfY2FsbF9l YXJseShnZXRfbWVtb3J5X21hcCwgbWFwX3NpemUsIG0sCi0JCQkJJmtleSwgZGVzY19zaXplLCAm ZGVzY192ZXJzaW9uKTsKLQlpZiAoc3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSB7CisJ c3RhdHVzID0gZWZpX2NhbGxfZWFybHkoZ2V0X21lbW9yeV9tYXAsIG1hcC0+bWFwX3NpemUsIG0s CisJCQkJJmtleSwgbWFwLT5kZXNjX3NpemUsICZkZXNjX3ZlcnNpb24pOworCWlmIChzdGF0dXMg PT0gRUZJX0JVRkZFUl9UT09fU01BTEwgfHwKKwkgICAgIW1tYXBfaGFzX2hlYWRyb29tKCptYXAt PmJ1ZmZfc2l6ZSwgKm1hcC0+bWFwX3NpemUsCisJCQkgICAgICAgKm1hcC0+ZGVzY19zaXplKSkg ewogCQllZmlfY2FsbF9lYXJseShmcmVlX3Bvb2wsIG0pOworCQkvKgorCQkgKiBNYWtlIHN1cmUg dGhlcmUgaXMgc29tZSBlbnRyaWVzIG9mIGhlYWRyb29tIHNvIHRoYXQgdGhlCisJCSAqIGJ1ZmZl ciBjYW4gYmUgcmV1c2VkIGZvciBhIG5ldyBtYXAgYWZ0ZXIgYWxsb2NhdGlvbnMgYXJlCisJCSAq IG5vIGxvbmdlciBwZXJtaXR0ZWQuICBJdHMgdW5saWtlbHkgdGhhdCB0aGUgbWFwIHdpbGwgZ3Jv dyB0bworCQkgKiBleGNlZWQgdGhpcyBoZWFkcm9vbSBvbmNlIHdlIGFyZSByZWFkeSB0byB0cmln Z2VyCisJCSAqIEV4aXRCb290U2VydmljZXMoKQorCQkgKi8KKwkJKm1hcC0+bWFwX3NpemUgKz0g Km1hcC0+ZGVzY19zaXplICogRUZJX01NQVBfTlJfU0xBQ0tfU0xPVFM7CisJCSptYXAtPmJ1ZmZf c2l6ZSA9ICptYXAtPm1hcF9zaXplOwogCQlnb3RvIGFnYWluOwogCX0KIAogCWlmIChzdGF0dXMg IT0gRUZJX1NVQ0NFU1MpCiAJCWVmaV9jYWxsX2Vhcmx5KGZyZWVfcG9vbCwgbSk7CiAKLQlpZiAo a2V5X3B0ciAmJiBzdGF0dXMgPT0gRUZJX1NVQ0NFU1MpCi0JCSprZXlfcHRyID0ga2V5OwotCWlm IChkZXNjX3ZlciAmJiBzdGF0dXMgPT0gRUZJX1NVQ0NFU1MpCi0JCSpkZXNjX3ZlciA9IGRlc2Nf dmVyc2lvbjsKKwlpZiAobWFwLT5rZXlfcHRyICYmIHN0YXR1cyA9PSBFRklfU1VDQ0VTUykKKwkJ Km1hcC0+a2V5X3B0ciA9IGtleTsKKwlpZiAobWFwLT5kZXNjX3ZlciAmJiBzdGF0dXMgPT0gRUZJ X1NVQ0NFU1MpCisJCSptYXAtPmRlc2NfdmVyID0gZGVzY192ZXJzaW9uOwogCiBmYWlsOgotCSpt YXAgPSBtOworCSptYXAtPm1hcCA9IG07CiAJcmV0dXJuIHN0YXR1czsKIH0KIApAQCAtOTEsMTMg KzEwNiwyMCBAQCBmYWlsOgogc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGdldF9kcmFtX2Jh c2UoZWZpX3N5c3RlbV90YWJsZV90ICpzeXNfdGFibGVfYXJnKQogewogCWVmaV9zdGF0dXNfdCBz dGF0dXM7Ci0JdW5zaWduZWQgbG9uZyBtYXBfc2l6ZTsKKwl1bnNpZ25lZCBsb25nIG1hcF9zaXpl LCBidWZmX3NpemU7CiAJdW5zaWduZWQgbG9uZyBtZW1iYXNlICA9IEVGSV9FUlJPUjsKIAlzdHJ1 Y3QgZWZpX21lbW9yeV9tYXAgbWFwOwogCWVmaV9tZW1vcnlfZGVzY190ICptZDsKKwlzdHJ1Y3Qg ZWZpX2Jvb3RfbWVtbWFwIGJvb3RfbWFwOwogCi0Jc3RhdHVzID0gZWZpX2dldF9tZW1vcnlfbWFw KHN5c190YWJsZV9hcmcsIChlZmlfbWVtb3J5X2Rlc2NfdCAqKikmbWFwLm1hcCwKLQkJCQkgICAg Jm1hcF9zaXplLCAmbWFwLmRlc2Nfc2l6ZSwgTlVMTCwgTlVMTCk7CisJYm9vdF9tYXAubWFwID0J CShlZmlfbWVtb3J5X2Rlc2NfdCAqKikmbWFwLm1hcDsKKwlib290X21hcC5tYXBfc2l6ZSA9CSZt YXBfc2l6ZTsKKwlib290X21hcC5kZXNjX3NpemUgPQkmbWFwLmRlc2Nfc2l6ZTsKKwlib290X21h cC5kZXNjX3ZlciA9CU5VTEw7CisJYm9vdF9tYXAua2V5X3B0ciA9CU5VTEw7CisJYm9vdF9tYXAu YnVmZl9zaXplID0JJmJ1ZmZfc2l6ZTsKKworCXN0YXR1cyA9IGVmaV9nZXRfbWVtb3J5X21hcChz eXNfdGFibGVfYXJnLCAmYm9vdF9tYXApOwogCWlmIChzdGF0dXMgIT0gRUZJX1NVQ0NFU1MpCiAJ CXJldHVybiBtZW1iYXNlOwogCkBAIC0xMjAsMTUgKzE0MiwyMiBAQCBzdGF0aWMgZWZpX3N0YXR1 c190IGVmaV9oaWdoX2FsbG9jKGVmaV9zeXN0ZW1fdGFibGVfdCAqc3lzX3RhYmxlX2FyZywKIAkJ CSAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgYWxpZ24sCiAJCQkgICAg ICAgdW5zaWduZWQgbG9uZyAqYWRkciwgdW5zaWduZWQgbG9uZyBtYXgpCiB7Ci0JdW5zaWduZWQg bG9uZyBtYXBfc2l6ZSwgZGVzY19zaXplOworCXVuc2lnbmVkIGxvbmcgbWFwX3NpemUsIGRlc2Nf c2l6ZSwgYnVmZl9zaXplOwogCWVmaV9tZW1vcnlfZGVzY190ICptYXA7CiAJZWZpX3N0YXR1c190 IHN0YXR1czsKIAl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzOwogCXU2NCBtYXhfYWRkciA9IDA7CiAJ aW50IGk7CisJc3RydWN0IGVmaV9ib290X21lbW1hcCBib290X21hcDsKKworCWJvb3RfbWFwLm1h cCA9CQkmbWFwOworCWJvb3RfbWFwLm1hcF9zaXplID0JJm1hcF9zaXplOworCWJvb3RfbWFwLmRl c2Nfc2l6ZSA9CSZkZXNjX3NpemU7CisJYm9vdF9tYXAuZGVzY192ZXIgPQlOVUxMOworCWJvb3Rf bWFwLmtleV9wdHIgPQlOVUxMOworCWJvb3RfbWFwLmJ1ZmZfc2l6ZSA9CSZidWZmX3NpemU7CiAK LQlzdGF0dXMgPSBlZmlfZ2V0X21lbW9yeV9tYXAoc3lzX3RhYmxlX2FyZywgJm1hcCwgJm1hcF9z aXplLCAmZGVzY19zaXplLAotCQkJCSAgICBOVUxMLCBOVUxMKTsKKwlzdGF0dXMgPSBlZmlfZ2V0 X21lbW9yeV9tYXAoc3lzX3RhYmxlX2FyZywgJmJvb3RfbWFwKTsKIAlpZiAoc3RhdHVzICE9IEVG SV9TVUNDRVNTKQogCQlnb3RvIGZhaWw7CiAKQEAgLTIwNiwxNCArMjM1LDIxIEBAIHN0YXRpYyBl Zmlfc3RhdHVzX3QgZWZpX2xvd19hbGxvYyhlZmlfc3lzdGVtX3RhYmxlX3QgKnN5c190YWJsZV9h cmcsCiAJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgYWxpZ24sCiAJ CQkgICAgICB1bnNpZ25lZCBsb25nICphZGRyKQogewotCXVuc2lnbmVkIGxvbmcgbWFwX3NpemUs IGRlc2Nfc2l6ZTsKKwl1bnNpZ25lZCBsb25nIG1hcF9zaXplLCBkZXNjX3NpemUsIGJ1ZmZfc2l6 ZTsKIAllZmlfbWVtb3J5X2Rlc2NfdCAqbWFwOwogCWVmaV9zdGF0dXNfdCBzdGF0dXM7CiAJdW5z aWduZWQgbG9uZyBucl9wYWdlczsKIAlpbnQgaTsKKwlzdHJ1Y3QgZWZpX2Jvb3RfbWVtbWFwIGJv b3RfbWFwOworCisJYm9vdF9tYXAubWFwID0JCSZtYXA7CisJYm9vdF9tYXAubWFwX3NpemUgPQkm bWFwX3NpemU7CisJYm9vdF9tYXAuZGVzY19zaXplID0JJmRlc2Nfc2l6ZTsKKwlib290X21hcC5k ZXNjX3ZlciA9CU5VTEw7CisJYm9vdF9tYXAua2V5X3B0ciA9CU5VTEw7CisJYm9vdF9tYXAuYnVm Zl9zaXplID0JJmJ1ZmZfc2l6ZTsKIAotCXN0YXR1cyA9IGVmaV9nZXRfbWVtb3J5X21hcChzeXNf dGFibGVfYXJnLCAmbWFwLCAmbWFwX3NpemUsICZkZXNjX3NpemUsCi0JCQkJICAgIE5VTEwsIE5V TEwpOworCXN0YXR1cyA9IGVmaV9nZXRfbWVtb3J5X21hcChzeXNfdGFibGVfYXJnLCAmYm9vdF9t YXApOwogCWlmIChzdGF0dXMgIT0gRUZJX1NVQ0NFU1MpCiAJCWdvdG8gZmFpbDsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9maXJtd2FyZS9lZmkvZmR0LmMgYi9kcml2ZXJzL2Zpcm13YXJlL2VmaS9m ZHQuYwppbmRleCA1MDdhM2RmNDZhNWQuLjUxOTQ0OGFlYWZmZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9maXJtd2FyZS9lZmkvZmR0LmMKKysrIGIvZHJpdmVycy9maXJtd2FyZS9lZmkvZmR0LmMKQEAg LTE3OCwxMiArMTc4LDIwIEBAIGVmaV9zdGF0dXNfdCBhbGxvY2F0ZV9uZXdfZmR0X2FuZF9leGl0 X2Jvb3QoZWZpX3N5c3RlbV90YWJsZV90ICpzeXNfdGFibGUsCiAJCQkJCSAgICB1bnNpZ25lZCBs b25nIGZkdF9hZGRyLAogCQkJCQkgICAgdW5zaWduZWQgbG9uZyBmZHRfc2l6ZSkKIHsKLQl1bnNp Z25lZCBsb25nIG1hcF9zaXplLCBkZXNjX3NpemU7CisJdW5zaWduZWQgbG9uZyBtYXBfc2l6ZSwg ZGVzY19zaXplLCBidWZmX3NpemU7CiAJdTMyIGRlc2NfdmVyOwogCXVuc2lnbmVkIGxvbmcgbW1h cF9rZXk7CiAJZWZpX21lbW9yeV9kZXNjX3QgKm1lbW9yeV9tYXA7CiAJdW5zaWduZWQgbG9uZyBu ZXdfZmR0X3NpemU7CiAJZWZpX3N0YXR1c190IHN0YXR1czsKKwlzdHJ1Y3QgZWZpX2Jvb3RfbWVt bWFwIG1hcDsKKworCW1hcC5tYXAgPQkmbWVtb3J5X21hcDsKKwltYXAubWFwX3NpemUgPQkmbWFw X3NpemU7CisJbWFwLmRlc2Nfc2l6ZSA9CSZkZXNjX3NpemU7CisJbWFwLmRlc2NfdmVyID0JJmRl c2NfdmVyOworCW1hcC5rZXlfcHRyID0JJm1tYXBfa2V5OworCW1hcC5idWZmX3NpemUgPQkmYnVm Zl9zaXplOwogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIG9mIG5ldyBGRFQsIGFuZCBhbGxvY2F0 ZSBtZW1vcnkgZm9yIGl0LiBXZQpAQCAtMjA0LDggKzIxMiw3IEBAIGVmaV9zdGF0dXNfdCBhbGxv Y2F0ZV9uZXdfZmR0X2FuZF9leGl0X2Jvb3QoZWZpX3N5c3RlbV90YWJsZV90ICpzeXNfdGFibGUs CiAJCSAqIHdlIGNhbiBnZXQgdGhlIG1lbW9yeSBtYXAga2V5ICBuZWVkZWQgZm9yCiAJCSAqIGV4 aXRfYm9vdF9zZXJ2aWNlcygpLgogCQkgKi8KLQkJc3RhdHVzID0gZWZpX2dldF9tZW1vcnlfbWFw KHN5c190YWJsZSwgJm1lbW9yeV9tYXAsICZtYXBfc2l6ZSwKLQkJCQkJICAgICZkZXNjX3NpemUs ICZkZXNjX3ZlciwgJm1tYXBfa2V5KTsKKwkJc3RhdHVzID0gZWZpX2dldF9tZW1vcnlfbWFwKHN5 c190YWJsZSwgJm1hcCk7CiAJCWlmIChzdGF0dXMgIT0gRUZJX1NVQ0NFU1MpCiAJCQlnb3RvIGZh aWxfZnJlZV9uZXdfZmR0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vS2NvbmZpZyBiL2Ry aXZlcnMvZ3Bpby9LY29uZmlnCmluZGV4IDRhMWI1MTEzZTUyNy4uNTNhMmY2NWZiMTY2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwaW8vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwaW8vS2NvbmZpZwpA QCAtNTAsNiArNTAsNyBAQCBjb25maWcgR1BJT19ERVZSRVMKIGNvbmZpZyBPRl9HUElPCiAJZGVm X2Jvb2wgeQogCWRlcGVuZHMgb24gT0YKKwlkZXBlbmRzIG9uIEhBU19JT01FTQogCiBjb25maWcg R1BJT19BQ1BJCiAJZGVmX2Jvb2wgeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8taW50 ZWwtbWlkLmMgYi9kcml2ZXJzL2dwaW8vZ3Bpby1pbnRlbC1taWQuYwppbmRleCAxMThhNmJmNDU1 ZDkuLjM5ZDBiYzgxNjU3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL2dwaW8taW50ZWwtbWlk LmMKKysrIGIvZHJpdmVycy9ncGlvL2dwaW8taW50ZWwtbWlkLmMKQEAgLTE3LDcgKzE3LDYgQEAK ICAqIE1vb3Jlc3Rvd24gcGxhdGZvcm0gTGFuZ3dlbGwgY2hpcC4KICAqIE1lZGZpZWxkIHBsYXRm b3JtIFBlbndlbGwgY2hpcC4KICAqIENsb3ZlcnRyYWlsIHBsYXRmb3JtIENsb3ZlcnZpZXcgY2hp cC4KLSAqIE1lcnJpZmllbGQgcGxhdGZvcm0gVGFuZ2llciBjaGlwLgogICovCiAKICNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KQEAgLTY2LDEwICs2NSw2IEBAIGVudW0gR1BJT19SRUcgewogLyog aW50ZWxfbWlkIGdwaW8gZHJpdmVyIGRhdGEgKi8KIHN0cnVjdCBpbnRlbF9taWRfZ3Bpb19kZGF0 YSB7CiAJdTE2IG5ncGlvOwkJLyogbnVtYmVyIG9mIGdwaW8gcGlucyAqLwotCXUzMiBncGxyX29m ZnNldDsJLyogb2Zmc2V0IG9mIGZpcnN0IEdQTFIgcmVnaXN0ZXIgZnJvbSBiYXNlICovCi0JdTMy IGZsaXNfYmFzZTsJCS8qIGJhc2UgYWRkcmVzcyBvZiBGTElTIHJlZ2lzdGVycyAqLwotCXUzMiBm bGlzX2xlbjsJCS8qIGxlbmd0aCBvZiBGTElTIHJlZ2lzdGVycyAqLwotCXUzMiAoKmdldF9mbGlz X29mZnNldCkoaW50IGdwaW8pOwogCXUzMiBjaGlwX2lycV90eXBlOwkvKiBjaGlwIGludGVycnVw dCB0eXBlICovCiB9OwogCkBAIC0yODQsMTUgKzI3OSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW50ZWxfbWlkX2dwaW9fZGRhdGEgZ3Bpb19jbG92ZXJ2aWV3X2NvcmUgPSB7CiAJLmNoaXBfaXJx X3R5cGUgPSBJTlRFTF9NSURfSVJRX1RZUEVfRURHRSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfbWlkX2dwaW9fZGRhdGEgZ3Bpb190YW5naWVyID0gewotCS5uZ3BpbyA9IDE5MiwK LQkuZ3Bscl9vZmZzZXQgPSA0LAotCS5mbGlzX2Jhc2UgPSAweGZmMGMwMDAwLAotCS5mbGlzX2xl biA9IDB4ODAwMCwKLQkuZ2V0X2ZsaXNfb2Zmc2V0ID0gTlVMTCwKLQkuY2hpcF9pcnFfdHlwZSA9 IElOVEVMX01JRF9JUlFfVFlQRV9FREdFLAotfTsKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lf ZGV2aWNlX2lkIGludGVsX2dwaW9faWRzW10gPSB7CiAJewogCQkvKiBMaW5jcm9mdCAqLwpAQCAt MzE5LDExICszMDUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxf Z3Bpb19pZHNbXSA9IHsKIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDA4Zjcp LAogCQkuZHJpdmVyX2RhdGEgPSAoa2VybmVsX3Vsb25nX3QpJmdwaW9fY2xvdmVydmlld19jb3Jl LAogCX0sCi0JewotCQkvKiBUYW5naWVyICovCi0JCVBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9J TlRFTCwgMHgxMTk5KSwKLQkJLmRyaXZlcl9kYXRhID0gKGtlcm5lbF91bG9uZ190KSZncGlvX3Rh bmdpZXIsCi0JfSwKIAl7IDAgfQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9n cGlvX2lkcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmMgYi9kcml2 ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmMKaW5kZXggMTAzZGUwZjAxOTM0Li43YTkyZWIwZGFkNmIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYworKysgYi9kcml2ZXJzL2dw aW8vZ3Bpby1wY2E5NTN4LmMKQEAgLTc2LDcgKzc2LDcgQEAgTU9EVUxFX0RFVklDRV9UQUJMRShp MmMsIHBjYTk1M3hfaWQpOwogI2RlZmluZSBNQVhfQkFOSyA1CiAjZGVmaW5lIEJBTktfU1ogOAog Ci0jZGVmaW5lIE5CQU5LKGNoaXApIChjaGlwLT5ncGlvX2NoaXAubmdwaW8gLyBCQU5LX1NaKQor I2RlZmluZSBOQkFOSyhjaGlwKSBESVZfUk9VTkRfVVAoY2hpcC0+Z3Bpb19jaGlwLm5ncGlvLCBC QU5LX1NaKQogCiBzdHJ1Y3QgcGNhOTUzeF9jaGlwIHsKIAl1bnNpZ25lZCBncGlvX3N0YXJ0Owpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2NydGMuYwppbmRleCAwZGQyYzI2YzU1YWIuLjhjYmM4ZWEyOGUwZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRj LmMKQEAgLTQyMzYsNiArNDIzNiw5IEBAIGludCBkcm1fbW9kZV9wYWdlX2ZsaXBfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCByZXQgPSAt RUlOVkFMOwogCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVT RVQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCWlmIChwYWdlX2ZsaXAtPmZsYWdzICYgfkRSTV9N T0RFX1BBR0VfRkxJUF9GTEFHUyB8fAogCSAgICBwYWdlX2ZsaXAtPnJlc2VydmVkICE9IDApCiAJ CXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwppbmRleCBkZmE5NzY5YjI2YjUuLjAxNDliMWU2 ZGQ1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9lZGlkLmMKQEAgLTcyLDYgKzcyLDggQEAKICNkZWZpbmUgRURJRF9RVUlS S19GT1JDRV84QlBDCQkJKDEgPDwgOCkKIC8qIEZvcmNlIDEyYnBjICovCiAjZGVmaW5lIEVESURf UVVJUktfRk9SQ0VfMTJCUEMJCQkoMSA8PCA5KQorLyogRm9yY2UgNmJwYyAqLworI2RlZmluZSBF RElEX1FVSVJLX0ZPUkNFXzZCUEMJCQkoMSA8PCAxMCkKIAogc3RydWN0IGRldGFpbGVkX21vZGVf Y2xvc3VyZSB7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKQEAgLTk4LDYgKzEw MCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZWRpZF9xdWlyayB7CiAJLyogVW5rbm93biBBY2VyICovCiAJ eyAiQUNSIiwgMjQyMywgRURJRF9RVUlSS19GSVJTVF9ERVRBSUxFRF9QUkVGRVJSRUQgfSwKIAor CS8qIEFFTyBtb2RlbCAwIHJlcG9ydHMgOCBicGMsIGJ1dCBpcyBhIDYgYnBjIHBhbmVsICovCisJ eyAiQUVPIiwgMCwgRURJRF9RVUlSS19GT1JDRV82QlBDIH0sCisKIAkvKiBCZWxpbmVhIDEwIDE1 IDU1ICovCiAJeyAiTUFYIiwgMTUxNiwgRURJRF9RVUlSS19QUkVGRVJfTEFSR0VfNjAgfSwKIAl7 ICJNQVgiLCAweDc3ZSwgRURJRF9RVUlSS19QUkVGRVJfTEFSR0VfNjAgfSwKQEAgLTM2NjcsNiAr MzY3Miw5IEBAIGludCBkcm1fYWRkX2VkaWRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCiAKIAlkcm1fYWRkX2Rpc3BsYXlfaW5mbyhlZGlk LCAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8sIGNvbm5lY3Rvcik7CiAKKwlpZiAocXVpcmtzICYg RURJRF9RVUlSS19GT1JDRV82QlBDKQorCQljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5icGMgPSA2 OworCiAJaWYgKHF1aXJrcyAmIEVESURfUVVJUktfRk9SQ0VfOEJQQykKIAkJY29ubmVjdG9yLT5k aXNwbGF5X2luZm8uYnBjID0gODsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmlu ZGV4IGE2MjM5MzY1MDMwNy4uMjA0MWM1YmJiOTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCkBAIC05NDc1LDIxICs5NDc1LDExIEBAIGNvbm5lY3RlZF9zaW5rX2NvbXB1dGVf YnBwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJcGlwZV9jb25maWctPnBp cGVfYnBwID0gY29ubmVjdG9yLT5iYXNlLmRpc3BsYXlfaW5mby5icGMqMzsKIAl9CiAKLQkvKiBD bGFtcCBicHAgdG8gZGVmYXVsdCBsaW1pdCBvbiBzY3JlZW5zIHdpdGhvdXQgRURJRCAxLjQgKi8K LQlpZiAoY29ubmVjdG9yLT5iYXNlLmRpc3BsYXlfaW5mby5icGMgPT0gMCkgewotCQlpbnQgdHlw ZSA9IGNvbm5lY3Rvci0+YmFzZS5jb25uZWN0b3JfdHlwZTsKLQkJaW50IGNsYW1wX2JwcCA9IDI0 OwotCi0JCS8qIEZhbGwgYmFjayB0byAxOCBicHAgd2hlbiBEUCBzaW5rIGNhcGFiaWxpdHkgaXMg dW5rbm93bi4gKi8KLQkJaWYgKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0 IHx8Ci0JCSAgICB0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCi0JCQljbGFtcF9icHAg PSAxODsKLQotCQlpZiAoYnBwID4gY2xhbXBfYnBwKSB7Ci0JCQlEUk1fREVCVUdfS01TKCJjbGFt cGluZyBkaXNwbGF5IGJwcCAod2FzICVkKSB0byBkZWZhdWx0IGxpbWl0IG9mICVkXG4iLAotCQkJ CSAgICAgIGJwcCwgY2xhbXBfYnBwKTsKLQkJCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IGNsYW1w X2JwcDsKLQkJfQorCS8qIENsYW1wIGJwcCB0byA4IG9uIHNjcmVlbnMgd2l0aG91dCBFRElEIDEu NCAqLworCWlmIChjb25uZWN0b3ItPmJhc2UuZGlzcGxheV9pbmZvLmJwYyA9PSAwICYmIGJwcCA+ IDI0KSB7CisJCURSTV9ERUJVR19LTVMoImNsYW1waW5nIGRpc3BsYXkgYnBwICh3YXMgJWQpIHRv IGRlZmF1bHQgbGltaXQgb2YgMjRcbiIsCisJCQkgICAgICBicHApOworCQlwaXBlX2NvbmZpZy0+ cGlwZV9icHAgPSAyNDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKaW5kZXggOGEyYzVmZDA4 OTNlLi5jYjRhOTViNzVkZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC0xMjQsNiArMTI0LDEy IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewogCQkgKi8KIAkJc3RydWN0IGRybV9tbSBtbTsK IAl9IHZyYW07CisKKwkvKiB0YXNrIGhvbGRpbmcgc3RydWN0X211dGV4Li4gY3VycmVudGx5IG9u bHkgdXNlZCBpbiBzdWJtaXQgcGF0aAorCSAqIHRvIGRldGVjdCBhbmQgcmVqZWN0IGZhdWx0cyBm cm9tIGNvcHlfZnJvbV91c2VyKCkgZm9yIHN1Ym1pdAorCSAqIGlvY3RsLgorCSAqLworCXN0cnVj dCB0YXNrX3N0cnVjdCAqc3RydWN0X211dGV4X3Rhc2s7CiB9OwogCiBzdHJ1Y3QgbXNtX2Zvcm1h dCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dlbS5jCmluZGV4IDY5MGQ3ZTdiNmQxZS4uZjYxMWIwNzlhMzYwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9nZW0uYwpAQCAtMTg4LDExICsxODgsMjAgQEAgaW50IG1zbV9nZW1fZmF1 bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogewog CXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUg KnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBwYWdlICoqcGFnZXM7CiAJdW5zaWdu ZWQgbG9uZyBwZm47CiAJcGdvZmZfdCBwZ29mZjsKIAlpbnQgcmV0OwogCisJLyogVGhpcyBzaG91 bGQgb25seSBoYXBwZW4gaWYgdXNlcnNwYWNlIHRyaWVzIHRvIHBhc3MgYSBtbWFwJ2QKKwkgKiBi dXQgdW5mYXVsdGVkIGdlbSBibyB2YWRkciBpbnRvIHN1Ym1pdCBpb2N0bCwgdHJpZ2dlcmluZwor CSAqIGEgcGFnZSBmYXVsdCB3aGlsZSBzdHJ1Y3RfbXV0ZXggaXMgYWxyZWFkeSBoZWxkLiAgVGhp cyBpcworCSAqIG5vdCBhIHZhbGlkIHVzZS1jYXNlIHNvIGp1c3QgYmFpbC4KKwkgKi8KKwlpZiAo cHJpdi0+c3RydWN0X211dGV4X3Rhc2sgPT0gY3VycmVudCkKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJ R0JVUzsKKwogCS8qIE1ha2Ugc3VyZSB3ZSBkb24ndCBwYXJhbGxlbCB1cGRhdGUgb24gYSBmYXVs dCwgbm9yIG1vdmUgb3IgcmVtb3ZlCiAJICogc29tZXRoaW5nIGZyb20gYmVuZWF0aCBvdXIgZmVl dAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCmluZGV4IGNkMDU1NGY2ODMx Ni4uMDU3OTUxMTYzMTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1f c3VibWl0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCkBAIC01 NSw2ICs1NSwxNCBAQCBzdGF0aWMgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXRfY3JlYXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIHN1Ym1pdDsKIH0KIAorc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nIF9fbXVzdF9jaGVjaworY29weV9mcm9tX3VzZXJfaW5hdG9taWMo dm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7CisJ aWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCisJCXJldHVybiBfX2NvcHlfZnJv bV91c2VyX2luYXRvbWljKHRvLCBmcm9tLCBuKTsKKwlyZXR1cm4gLUVGQVVMVDsKK30KKwogc3Rh dGljIGludCBzdWJtaXRfbG9va3VwX29iamVjdHMoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJt aXQsCiAJCXN0cnVjdCBkcm1fbXNtX2dlbV9zdWJtaXQgKmFyZ3MsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSkKIHsKQEAgLTYyLDYgKzcwLDcgQEAgc3RhdGljIGludCBzdWJtaXRfbG9va3VwX29iamVj dHMoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAJaW50IHJldCA9IDA7CiAKIAlzcGlu X2xvY2soJmZpbGUtPnRhYmxlX2xvY2spOworCXBhZ2VmYXVsdF9kaXNhYmxlKCk7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgYXJncy0+bnJfYm9zOyBpKyspIHsKIAkJc3RydWN0IGRybV9tc21fZ2VtX3N1 Ym1pdF9ibyBzdWJtaXRfYm87CkBAIC03MCwxMCArNzksMTUgQEAgc3RhdGljIGludCBzdWJtaXRf bG9va3VwX29iamVjdHMoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAJCXZvaWQgX191 c2VyICp1c2VycHRyID0KIAkJCXRvX3VzZXJfcHRyKGFyZ3MtPmJvcyArIChpICogc2l6ZW9mKHN1 Ym1pdF9ibykpKTsKIAotCQlyZXQgPSBjb3B5X2Zyb21fdXNlcigmc3VibWl0X2JvLCB1c2VycHRy LCBzaXplb2Yoc3VibWl0X2JvKSk7Ci0JCWlmIChyZXQpIHsKLQkJCXJldCA9IC1FRkFVTFQ7Ci0J CQlnb3RvIG91dF91bmxvY2s7CisJCXJldCA9IGNvcHlfZnJvbV91c2VyX2luYXRvbWljKCZzdWJt aXRfYm8sIHVzZXJwdHIsIHNpemVvZihzdWJtaXRfYm8pKTsKKwkJaWYgKHVubGlrZWx5KHJldCkp IHsKKwkJCXBhZ2VmYXVsdF9lbmFibGUoKTsKKwkJCXNwaW5fdW5sb2NrKCZmaWxlLT50YWJsZV9s b2NrKTsKKwkJCXJldCA9IGNvcHlfZnJvbV91c2VyKCZzdWJtaXRfYm8sIHVzZXJwdHIsIHNpemVv ZihzdWJtaXRfYm8pKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBvdXQ7CisJCQlzcGluX2xvY2so JmZpbGUtPnRhYmxlX2xvY2spOworCQkJcGFnZWZhdWx0X2Rpc2FibGUoKTsKIAkJfQogCiAJCWlm IChzdWJtaXRfYm8uZmxhZ3MgJiB+TVNNX1NVQk1JVF9CT19GTEFHUykgewpAQCAtMTEzLDkgKzEy NywxMiBAQCBzdGF0aWMgaW50IHN1Ym1pdF9sb29rdXBfb2JqZWN0cyhzdHJ1Y3QgbXNtX2dlbV9z dWJtaXQgKnN1Ym1pdCwKIAl9CiAKIG91dF91bmxvY2s6Ci0Jc3VibWl0LT5ucl9ib3MgPSBpOwor CXBhZ2VmYXVsdF9lbmFibGUoKTsKIAlzcGluX3VubG9jaygmZmlsZS0+dGFibGVfbG9jayk7CiAK K291dDoKKwlzdWJtaXQtPm5yX2JvcyA9IGk7CisKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zMzks MTIgKzM1NiwxNiBAQCBpbnQgbXNtX2lvY3RsX2dlbV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoYXJncy0+bnJfY21kcyA+IE1BWF9DTURTKQogCQlyZXR1 cm4gLUVJTlZBTDsKIAotCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBt dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJcHJpdi0+c3RydWN0X211dGV4X3Rhc2sgPSBjdXJyZW50OwogCiAJ c3VibWl0ID0gc3VibWl0X2NyZWF0ZShkZXYsIGdwdSwgYXJncy0+bnJfYm9zKTsKIAlpZiAoIXN1 Ym1pdCkgewogCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDsKKwkJZ290byBvdXRfdW5sb2Nr OwogCX0KIAogCXJldCA9IHN1Ym1pdF9sb29rdXBfb2JqZWN0cyhzdWJtaXQsIGFyZ3MsIGZpbGUp OwpAQCAtNDIyLDYgKzQ0Myw4IEBAIGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogb3V0OgogCWlmIChzdWJtaXQpCiAJCXN1Ym1pdF9j bGVhbnVwKHN1Ym1pdCwgISFyZXQpOworb3V0X3VubG9jazoKKwlwcml2LT5zdHJ1Y3RfbXV0ZXhf dGFzayA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcmV0dXJu IHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYWNw aS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9hY3BpLmMKaW5kZXggMjc5MjA2 OTk3ZTVjLi44ZjA1N2FiMzhlMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L25vdXZlYXVfYWNwaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYWNw aS5jCkBAIC00NSw2ICs0NSw3IEBACiBzdGF0aWMgc3RydWN0IG5vdXZlYXVfZHNtX3ByaXYgewog CWJvb2wgZHNtX2RldGVjdGVkOwogCWJvb2wgb3B0aW11c19kZXRlY3RlZDsKKwlib29sIG9wdGlt dXNfZmxhZ3NfZGV0ZWN0ZWQ7CiAJYWNwaV9oYW5kbGUgZGhhbmRsZTsKIAlhY3BpX2hhbmRsZSBv dGhlcl9oYW5kbGU7CiAJYWNwaV9oYW5kbGUgcm9tX2hhbmRsZTsKQEAgLTU4LDkgKzU5LDYgQEAg Ym9vbCBub3V2ZWF1X2lzX3YxX2RzbSh2b2lkKSB7CiAJcmV0dXJuIG5vdXZlYXVfZHNtX3ByaXYu ZHNtX2RldGVjdGVkOwogfQogCi0jZGVmaW5lIE5PVVZFQVVfRFNNX0hBU19NVVggMHgxCi0jZGVm aW5lIE5PVVZFQVVfRFNNX0hBU19PUFQgMHgyCi0KICNpZmRlZiBDT05GSUdfVkdBX1NXSVRDSEVS T08KIHN0YXRpYyBjb25zdCBjaGFyIG5vdXZlYXVfZHNtX211aWRbXSA9IHsKIAkweEEwLCAweEEw LCAweDk1LCAweDlELCAweDYwLCAweDAwLCAweDQ4LCAweDRELApAQCAtMTExLDcgKzEwOSw3IEBA IHN0YXRpYyBpbnQgbm91dmVhdV9vcHRpbXVzX2RzbShhY3BpX2hhbmRsZSBoYW5kbGUsIGludCBm dW5jLCBpbnQgYXJnLCB1aW50MzJfdCAqCiAgKiByZXF1aXJlbWVudHMgb24gdGhlIGZvdXJ0aCBw YXJhbWV0ZXIsIHNvIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbgogICogaW5zdGVhZCBvZiB1c2lu ZyBhY3BpX2NoZWNrX2RzbSgpLgogICovCi1zdGF0aWMgaW50IG5vdXZlYXVfY2hlY2tfb3B0aW11 c19kc20oYWNwaV9oYW5kbGUgaGFuZGxlKQorc3RhdGljIGludCBub3V2ZWF1X2RzbV9nZXRfb3B0 aW11c19mdW5jdGlvbnMoYWNwaV9oYW5kbGUgaGFuZGxlKQogewogCWludCByZXN1bHQ7CiAKQEAg LTEyNiw3ICsxMjQsOSBAQCBzdGF0aWMgaW50IG5vdXZlYXVfY2hlY2tfb3B0aW11c19kc20oYWNw aV9oYW5kbGUgaGFuZGxlKQogCSAqIEFDUEkgU3BlYyB2NCA5LjE0LjE6IGlmIGJpdCAwIGlzIHpl cm8sIG5vIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZC4KIAkgKiBJZiB0aGUgbi10aCBiaXQgaXMgZW5h YmxlZCwgZnVuY3Rpb24gbiBpcyBzdXBwb3J0ZWQKIAkgKi8KLQlyZXR1cm4gcmVzdWx0ICYgMSAm JiByZXN1bHQgJiAoMSA8PCBOT1VWRUFVX0RTTV9PUFRJTVVTX0NBUFMpOworCWlmIChyZXN1bHQg JiAxICYmIHJlc3VsdCAmICgxIDw8IE5PVVZFQVVfRFNNX09QVElNVVNfQ0FQUykpCisJCXJldHVy biByZXN1bHQ7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgbm91dmVhdV9kc20oYWNwaV9o YW5kbGUgaGFuZGxlLCBpbnQgZnVuYywgaW50IGFyZykKQEAgLTIxMywyNyArMjEzLDM2IEBAIHN0 YXRpYyBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciBub3V2ZWF1X2RzbV9oYW5kbGVyID0g ewogCS5nZXRfY2xpZW50X2lkID0gbm91dmVhdV9kc21fZ2V0X2NsaWVudF9pZCwKIH07CiAKLXN0 YXRpYyBpbnQgbm91dmVhdV9kc21fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQorc3Rh dGljIHZvaWQgbm91dmVhdV9kc21fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBhY3Bp X2hhbmRsZSAqZGhhbmRsZV9vdXQsCisJCQkJICBib29sICpoYXNfbXV4LCBib29sICpoYXNfb3B0 LAorCQkJCSAgYm9vbCAqaGFzX29wdF9mbGFncykKIHsKIAlhY3BpX2hhbmRsZSBkaGFuZGxlOwot CWludCByZXR2YWwgPSAwOworCWJvb2wgc3VwcG9ydHNfbXV4OworCWludCBvcHRpbXVzX2Z1bmNz OwogCiAJZGhhbmRsZSA9IEFDUElfSEFORExFKCZwZGV2LT5kZXYpOwogCWlmICghZGhhbmRsZSkK LQkJcmV0dXJuIGZhbHNlOworCQlyZXR1cm47CiAKIAlpZiAoIWFjcGlfaGFzX21ldGhvZChkaGFu ZGxlLCAiX0RTTSIpKSB7CiAJCW5vdXZlYXVfZHNtX3ByaXYub3RoZXJfaGFuZGxlID0gZGhhbmRs ZTsKLQkJcmV0dXJuIGZhbHNlOworCQlyZXR1cm47CiAJfQotCWlmIChhY3BpX2NoZWNrX2RzbShk aGFuZGxlLCBub3V2ZWF1X2RzbV9tdWlkLCAweDAwMDAwMTAyLAotCQkJICAgMSA8PCBOT1VWRUFV X0RTTV9QT1dFUikpCi0JCXJldHZhbCB8PSBOT1VWRUFVX0RTTV9IQVNfTVVYOworCXN1cHBvcnRz X211eCA9IGFjcGlfY2hlY2tfZHNtKGRoYW5kbGUsIG5vdXZlYXVfZHNtX211aWQsIDB4MDAwMDAx MDIsCisJCQkJICAgICAgMSA8PCBOT1VWRUFVX0RTTV9QT1dFUik7CisJb3B0aW11c19mdW5jcyA9 IG5vdXZlYXVfZHNtX2dldF9vcHRpbXVzX2Z1bmN0aW9ucyhkaGFuZGxlKTsKIAotCWlmIChub3V2 ZWF1X2NoZWNrX29wdGltdXNfZHNtKGRoYW5kbGUpKQotCQlyZXR2YWwgfD0gTk9VVkVBVV9EU01f SEFTX09QVDsKKwkvKiBEb2VzIG5vdCBsb29rIGxpa2UgYSBOdmlkaWEgZGV2aWNlLiAqLworCWlm ICghc3VwcG9ydHNfbXV4ICYmICFvcHRpbXVzX2Z1bmNzKQorCQlyZXR1cm47CisKKwkqZGhhbmRs ZV9vdXQgPSBkaGFuZGxlOworCSpoYXNfbXV4ID0gc3VwcG9ydHNfbXV4OworCSpoYXNfb3B0ID0g ISFvcHRpbXVzX2Z1bmNzOworCSpoYXNfb3B0X2ZsYWdzID0gb3B0aW11c19mdW5jcyAmICgxIDw8 IE5PVVZFQVVfRFNNX09QVElNVVNfRkxBR1MpOwogCi0JaWYgKHJldHZhbCAmIE5PVVZFQVVfRFNN X0hBU19PUFQpIHsKKwlpZiAob3B0aW11c19mdW5jcykgewogCQl1aW50MzJfdCByZXN1bHQ7CiAJ CW5vdXZlYXVfb3B0aW11c19kc20oZGhhbmRsZSwgTk9VVkVBVV9EU01fT1BUSU1VU19DQVBTLCAw LAogCQkJCSAgICAmcmVzdWx0KTsKQEAgLTI0MiwxMCArMjUxLDYgQEAgc3RhdGljIGludCBub3V2 ZWF1X2RzbV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJCQkgKHJlc3VsdCAmIE9Q VElNVVNfRFlOQU1JQ19QV1JfQ0FQKSA/ICJkeW5hbWljIHBvd2VyLCAiIDogIiIsCiAJCQkgKHJl c3VsdCAmIE9QVElNVVNfSERBX0NPREVDX01BU0spID8gImhkYSBiaW9zIGNvZGVjIHN1cHBvcnRl ZCIgOiAiIik7CiAJfQotCWlmIChyZXR2YWwpCi0JCW5vdXZlYXVfZHNtX3ByaXYuZGhhbmRsZSA9 IGRoYW5kbGU7Ci0KLQlyZXR1cm4gcmV0dmFsOwogfQogCiBzdGF0aWMgYm9vbCBub3V2ZWF1X2Rz bV9kZXRlY3Qodm9pZCkKQEAgLTI1MywxMSArMjU4LDEyIEBAIHN0YXRpYyBib29sIG5vdXZlYXVf ZHNtX2RldGVjdCh2b2lkKQogCWNoYXIgYWNwaV9tZXRob2RfbmFtZVsyNTVdID0geyAwIH07CiAJ c3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlciA9IHtzaXplb2YoYWNwaV9tZXRob2RfbmFtZSksIGFj cGlfbWV0aG9kX25hbWV9OwogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDsKLQlpbnQgaGFz X2RzbSA9IDA7Ci0JaW50IGhhc19vcHRpbXVzID0gMDsKKwlhY3BpX2hhbmRsZSBkaGFuZGxlID0g TlVMTDsKKwlib29sIGhhc19tdXggPSBmYWxzZTsKKwlib29sIGhhc19vcHRpbXVzID0gZmFsc2U7 CisJYm9vbCBoYXNfb3B0aW11c19mbGFncyA9IGZhbHNlOwogCWludCB2Z2FfY291bnQgPSAwOwog CWJvb2wgZ3VpZF92YWxpZDsKLQlpbnQgcmV0dmFsOwogCWJvb2wgcmV0ID0gZmFsc2U7CiAKIAkv KiBsb29rdXAgdGhlIE1YTSBHVUlEICovCkBAIC0yNzAsMzIgKzI3NiwyOSBAQCBzdGF0aWMgYm9v bCBub3V2ZWF1X2RzbV9kZXRlY3Qodm9pZCkKIAl3aGlsZSAoKHBkZXYgPSBwY2lfZ2V0X2NsYXNz KFBDSV9DTEFTU19ESVNQTEFZX1ZHQSA8PCA4LCBwZGV2KSkgIT0gTlVMTCkgewogCQl2Z2FfY291 bnQrKzsKIAotCQlyZXR2YWwgPSBub3V2ZWF1X2RzbV9wY2lfcHJvYmUocGRldik7Ci0JCWlmIChy ZXR2YWwgJiBOT1VWRUFVX0RTTV9IQVNfTVVYKQotCQkJaGFzX2RzbSB8PSAxOwotCQlpZiAocmV0 dmFsICYgTk9VVkVBVV9EU01fSEFTX09QVCkKLQkJCWhhc19vcHRpbXVzID0gMTsKKwkJbm91dmVh dV9kc21fcGNpX3Byb2JlKHBkZXYsICZkaGFuZGxlLCAmaGFzX211eCwgJmhhc19vcHRpbXVzLAor CQkJCSAgICAgICZoYXNfb3B0aW11c19mbGFncyk7CiAJfQogCiAJd2hpbGUgKChwZGV2ID0gcGNp X2dldF9jbGFzcyhQQ0lfQ0xBU1NfRElTUExBWV8zRCA8PCA4LCBwZGV2KSkgIT0gTlVMTCkgewog CQl2Z2FfY291bnQrKzsKIAotCQlyZXR2YWwgPSBub3V2ZWF1X2RzbV9wY2lfcHJvYmUocGRldik7 Ci0JCWlmIChyZXR2YWwgJiBOT1VWRUFVX0RTTV9IQVNfTVVYKQotCQkJaGFzX2RzbSB8PSAxOwot CQlpZiAocmV0dmFsICYgTk9VVkVBVV9EU01fSEFTX09QVCkKLQkJCWhhc19vcHRpbXVzID0gMTsK KwkJbm91dmVhdV9kc21fcGNpX3Byb2JlKHBkZXYsICZkaGFuZGxlLCAmaGFzX211eCwgJmhhc19v cHRpbXVzLAorCQkJCSAgICAgICZoYXNfb3B0aW11c19mbGFncyk7CiAJfQogCiAJLyogZmluZCB0 aGUgb3B0aW11cyBEU00gb3IgdGhlIG9sZCB2MSBEU00gKi8KLQlpZiAoaGFzX29wdGltdXMgPT0g MSkgeworCWlmIChoYXNfb3B0aW11cykgeworCQlub3V2ZWF1X2RzbV9wcml2LmRoYW5kbGUgPSBk aGFuZGxlOwogCQlhY3BpX2dldF9uYW1lKG5vdXZlYXVfZHNtX3ByaXYuZGhhbmRsZSwgQUNQSV9G VUxMX1BBVEhOQU1FLAogCQkJJmJ1ZmZlcik7CiAJCXByaW50ayhLRVJOX0lORk8gIlZHQSBzd2l0 Y2hlcm9vOiBkZXRlY3RlZCBPcHRpbXVzIERTTSBtZXRob2QgJXMgaGFuZGxlXG4iLAogCQkJYWNw aV9tZXRob2RfbmFtZSk7CiAJCW5vdXZlYXVfZHNtX3ByaXYub3B0aW11c19kZXRlY3RlZCA9IHRy dWU7CisJCW5vdXZlYXVfZHNtX3ByaXYub3B0aW11c19mbGFnc19kZXRlY3RlZCA9IGhhc19vcHRp bXVzX2ZsYWdzOwogCQlyZXQgPSB0cnVlOwotCX0gZWxzZSBpZiAodmdhX2NvdW50ID09IDIgJiYg aGFzX2RzbSAmJiBndWlkX3ZhbGlkKSB7CisJfSBlbHNlIGlmICh2Z2FfY291bnQgPT0gMiAmJiBo YXNfbXV4ICYmIGd1aWRfdmFsaWQpIHsKKwkJbm91dmVhdV9kc21fcHJpdi5kaGFuZGxlID0gZGhh bmRsZTsKIAkJYWNwaV9nZXRfbmFtZShub3V2ZWF1X2RzbV9wcml2LmRoYW5kbGUsIEFDUElfRlVM TF9QQVRITkFNRSwKIAkJCSZidWZmZXIpOwogCQlwcmludGsoS0VSTl9JTkZPICJWR0Egc3dpdGNo ZXJvbzogZGV0ZWN0ZWQgRFNNIHN3aXRjaGluZyBtZXRob2QgJXMgaGFuZGxlXG4iLApAQCAtMzM2 LDggKzMzOSw5IEBAIHZvaWQgbm91dmVhdV9zd2l0Y2hlcm9vX29wdGltdXNfZHNtKHZvaWQpCiAJ aWYgKCFub3V2ZWF1X2RzbV9wcml2Lm9wdGltdXNfZGV0ZWN0ZWQpCiAJCXJldHVybjsKIAotCW5v dXZlYXVfb3B0aW11c19kc20obm91dmVhdV9kc21fcHJpdi5kaGFuZGxlLCBOT1VWRUFVX0RTTV9P UFRJTVVTX0ZMQUdTLAotCQkJICAgIDB4MywgJnJlc3VsdCk7CisJaWYgKG5vdXZlYXVfZHNtX3By aXYub3B0aW11c19mbGFnc19kZXRlY3RlZCkKKwkJbm91dmVhdV9vcHRpbXVzX2RzbShub3V2ZWF1 X2RzbV9wcml2LmRoYW5kbGUsIE5PVVZFQVVfRFNNX09QVElNVVNfRkxBR1MsCisJCQkJICAgIDB4 MywgJnJlc3VsdCk7CiAKIAlub3V2ZWF1X29wdGltdXNfZHNtKG5vdXZlYXVfZHNtX3ByaXYuZGhh bmRsZSwgTk9VVkVBVV9EU01fT1BUSU1VU19DQVBTLAogCQlOT1VWRUFVX0RTTV9PUFRJTVVTX1NF VF9QT1dFUkRPV04sICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbm91dmVhdV9kcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMK aW5kZXggODRhOGI5ZmIyMGM4Li45NjA0ZDE0ZTIwOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bm91dmVhdV9kcm0uYwpAQCAtNDcyLDcgKzQ3MiwxMCBAQCBub3V2ZWF1X2RybV91bmxvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZl YXVfZHJtKGRldik7CiAKLQlwbV9ydW50aW1lX2dldF9zeW5jKGRldi0+ZGV2KTsKKwlpZiAobm91 dmVhdV9ydW50aW1lX3BtICE9IDApIHsKKwkJcG1fcnVudGltZV9nZXRfc3luYyhkZXYtPmRldik7 CisJfQorCiAJbm91dmVhdV9mYmNvbl9maW5pKGRldik7CiAJbm91dmVhdV9hY2NlbF9maW5pKGRy bSk7CiAJbm91dmVhdV9od21vbl9maW5pKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udjA0X2ZiY29uLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2Zi Y29uLmMKaW5kZXggY2Y0YWQ1MTQyZjIxLi5mYmEwODQ1NTg5NjkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfZmJjb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udjA0X2ZiY29uLmMKQEAgLTEwOSwxMSArMTA5LDExIEBAIG52MDRfZmJjb25faW1hZ2Vi bGl0KHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQog CQkJICgoaW1hZ2UtPmR4ICsgaW1hZ2UtPndpZHRoKSAmIDB4ZmZmZikpOwogCU9VVF9SSU5HKGNo YW4sIGJnKTsKIAlPVVRfUklORyhjaGFuLCBmZyk7Ci0JT1VUX1JJTkcoY2hhbiwgKGltYWdlLT5o ZWlnaHQgPDwgMTYpIHwgaW1hZ2UtPndpZHRoKTsKKwlPVVRfUklORyhjaGFuLCAoaW1hZ2UtPmhl aWdodCA8PCAxNikgfCBBTElHTihpbWFnZS0+d2lkdGgsIDgpKTsKIAlPVVRfUklORyhjaGFuLCAo aW1hZ2UtPmhlaWdodCA8PCAxNikgfCBpbWFnZS0+d2lkdGgpOwogCU9VVF9SSU5HKGNoYW4sIChp bWFnZS0+ZHkgPDwgMTYpIHwgKGltYWdlLT5keCAmIDB4ZmZmZikpOwogCi0JZHNpemUgPSBBTElH TihpbWFnZS0+d2lkdGggKiBpbWFnZS0+aGVpZ2h0LCAzMikgPj4gNTsKKwlkc2l6ZSA9IEFMSUdO KEFMSUdOKGltYWdlLT53aWR0aCwgOCkgKiBpbWFnZS0+aGVpZ2h0LCAzMikgPj4gNTsKIAl3aGls ZSAoZHNpemUpIHsKIAkJaW50IGl0ZXJfbGVuID0gZHNpemUgPiAxMjggPyAxMjggOiBkc2l6ZTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnY1MF9mYmNvbi5jIGIvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbnY1MF9mYmNvbi5jCmluZGV4IDM4NjBiNzQ0M2U5MC4uZTlm NjVhYzBmYjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjUwX2ZiY29u LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnY1MF9mYmNvbi5jCkBAIC0xMjUsNyAr MTI1LDcgQEAgbnY1MF9mYmNvbl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0 IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpCiAJT1VUX1JJTkcoY2hhbiwgMCk7CiAJT1VUX1JJTkco Y2hhbiwgaW1hZ2UtPmR5KTsKIAotCWR3b3JkcyA9IEFMSUdOKGltYWdlLT53aWR0aCAqIGltYWdl LT5oZWlnaHQsIDMyKSA+PiA1OworCWR3b3JkcyA9IEFMSUdOKEFMSUdOKGltYWdlLT53aWR0aCwg OCkgKiBpbWFnZS0+aGVpZ2h0LCAzMikgPj4gNTsKIAl3aGlsZSAoZHdvcmRzKSB7CiAJCWludCBw dXNoID0gZHdvcmRzID4gMjA0NyA/IDIwNDcgOiBkd29yZHM7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252YzBfZmJjb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L252YzBfZmJjb24uYwppbmRleCBmZmYwYTFhMzNkZjAuLjQzMjdkOGU4NWRmYyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZjMF9mYmNvbi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252YzBfZmJjb24uYwpAQCAtMTI1LDcgKzEyNSw3IEBAIG52YzBfZmJjb25f aW1hZ2VibGl0KHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfaW1hZ2UgKmlt YWdlKQogCU9VVF9SSU5HICAoY2hhbiwgMCk7CiAJT1VUX1JJTkcgIChjaGFuLCBpbWFnZS0+ZHkp OwogCi0JZHdvcmRzID0gQUxJR04oaW1hZ2UtPndpZHRoICogaW1hZ2UtPmhlaWdodCwgMzIpID4+ IDU7CisJZHdvcmRzID0gQUxJR04oQUxJR04oaW1hZ2UtPndpZHRoLCA4KSAqIGltYWdlLT5oZWln aHQsIDMyKSA+PiA1OwogCXdoaWxlIChkd29yZHMpIHsKIAkJaW50IHB1c2ggPSBkd29yZHMgPiAy MDQ3ID8gMjA0NyA6IGR3b3JkczsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZHJhdy5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jCmluZGV4IDU2ZTFkNjMz ODc1ZS4uNmU2Yzc2MDgwZDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9k cmF3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jCkBAIC0xMzYsNiArMTM2 LDggQEAgc3RhdGljIGludCBxeGxfcGFsZXR0ZV9jcmVhdGVfMWJpdChzdHJ1Y3QgcXhsX2JvICpw YWxldHRlX2JvLAogCQkJCSAqIGNvcnJlY3RseSBnbG9iYWx5LCBzaW5jZSB0aGF0IHdvdWxkIHJl cXVpcmUKIAkJCQkgKiB0cmFja2luZyBhbGwgb2Ygb3VyIHBhbGV0dGVzLiAqLwogCXJldCA9IHF4 bF9ib19rbWFwKHBhbGV0dGVfYm8sICh2b2lkICoqKSZwYWwpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CiAJcGFsLT5udW1fZW50cyA9IDI7CiAJcGFsLT51bmlxdWUgPSB1bmlxdWUrKzsKIAlp ZiAodmlzdWFsID09IEZCX1ZJU1VBTF9UUlVFQ09MT1IgfHwgdmlzdWFsID09IEZCX1ZJU1VBTF9E SVJFQ1RDT0xPUikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlv c19lbmNvZGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19lbmNvZGVycy5j CmluZGV4IDZhZjE3MjhjNWMyYi4uZDM4Nzk5ODk5Y2E5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29kZXJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9hdG9tYmlvc19lbmNvZGVycy5jCkBAIC0xMTksNiArMTE5LDcgQEAgYXRvbWJpb3Nfc2V0 X2JhY2tsaWdodF9sZXZlbChzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyLCB1 OCBsZXZlbCkKIAkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfTFZUTUE6 CiAJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMToKIAkJY2FzZSBFTkNP REVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkyOgorCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lE X0lOVEVSTkFMX1VOSVBIWTM6CiAJCQlpZiAoZGlnLT5iYWNrbGlnaHRfbGV2ZWwgPT0gMCkKIAkJ CQlhdG9tYmlvc19kaWdfdHJhbnNtaXR0ZXJfc2V0dXAoZW5jb2RlciwgQVRPTV9UUkFOU01JVFRF Ul9BQ1RJT05fTENEX0JMT0ZGLCAwLCAwKTsKIAkJCWVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXRvbWJpb3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX2F0b21iaW9zLmMKaW5kZXggMGJmMzgxNTdkZmMzLi5kYzg2Yzg3ZTAxYTAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2F0b21iaW9zLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXRvbWJpb3MuYwpAQCAtMTEyOCw3ICsxMTI4 LDcgQEAgYm9vbCByYWRlb25fYXRvbV9nZXRfY2xvY2tfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCQkgICAgbGUxNl90b19jcHUoZmlybXdhcmVfaW5mby0+aW5mby51c1JlZmVyZW5jZUNs b2NrKTsKIAkJcDFwbGwtPnJlZmVyZW5jZV9kaXYgPSAwOwogCi0JCWlmIChjcmV2IDwgMikKKwkJ aWYgKChmcmV2IDwgMikgJiYgKGNyZXYgPCAyKSkKIAkJCXAxcGxsLT5wbGxfb3V0X21pbiA9CiAJ CQkJbGUxNl90b19jcHUoZmlybXdhcmVfaW5mby0+aW5mby51c01pblBpeGVsQ2xvY2tQTExfT3V0 cHV0KTsKIAkJZWxzZQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgYm9vbCByYWRlb25fYXRvbV9nZXRf Y2xvY2tfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlwMXBsbC0+cGxsX291dF9tYXgg PQogCQkgICAgbGUzMl90b19jcHUoZmlybXdhcmVfaW5mby0+aW5mby51bE1heFBpeGVsQ2xvY2tQ TExfT3V0cHV0KTsKIAotCQlpZiAoY3JldiA+PSA0KSB7CisJCWlmICgoKGZyZXYgPCAyKSAmJiAo Y3JldiA+PSA0KSkgfHwgKGZyZXYgPj0gMikpIHsKIAkJCXAxcGxsLT5sY2RfcGxsX291dF9taW4g PQogCQkJCWxlMTZfdG9fY3B1KGZpcm13YXJlX2luZm8tPmluZm9fMTQudXNMY2RNaW5QaXhlbENs b2NrUExMX091dHB1dCkgKiAxMDA7CiAJCQlpZiAocDFwbGwtPmxjZF9wbGxfb3V0X21pbiA9PSAw KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXRweF9oYW5kbGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9hdHB4X2hhbmRsZXIuYwppbmRleCBh OWZiMGQwMTZkMzguLmJhOTVjNDkzNGM4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fYXRweF9oYW5kbGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fYXRweF9oYW5kbGVyLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+CiAjaW5jbHVkZSA8bGludXgvYWNwaS5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgor I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAKICNpbmNsdWRlICJyYWRlb25fYWNwaS5oIgogCkBA IC0yNTYsNiArMjU3LDEwIEBAIHN0YXRpYyBpbnQgcmFkZW9uX2F0cHhfc2V0X2Rpc2NyZXRlX3N0 YXRlKHN0cnVjdCByYWRlb25fYXRweCAqYXRweCwgdTggc3RhdGUpCiAJCWlmICghaW5mbykKIAkJ CXJldHVybiAtRUlPOwogCQlrZnJlZShpbmZvKTsKKworCQkvKiAyMDBtcyBkZWxheSBpcyByZXF1 aXJlZCBhZnRlciBvZmYgKi8KKwkJaWYgKHN0YXRlID09IDApCisJCQltc2xlZXAoMjAwKTsKIAl9 CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9jb25uZWN0b3JzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3Jz LmMKaW5kZXggNTA4ZWVkOWY4MDcxLi5lNzdkZGJjYzlkNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMKQEAgLTE4MzUsNyArMTgzNSw2IEBAIHJhZGVvbl9h ZGRfYXRvbV9jb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJCSAgICAgIDEp OwogCQkJLyogbm8gSFBEIG9uIGFuYWxvZyBjb25uZWN0b3JzICovCiAJCQlyYWRlb25fY29ubmVj dG9yLT5ocGQuaHBkID0gUkFERU9OX0hQRF9OT05FOwotCQkJY29ubmVjdG9yLT5wb2xsZWQgPSBE Uk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsKIAkJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93 ZWQgPSB0cnVlOwogCQkJY29ubmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSB0cnVlOwogCQkJ YnJlYWs7CkBAIC0yMDYwLDggKzIwNTksMTAgQEAgcmFkZW9uX2FkZF9hdG9tX2Nvbm5lY3Rvcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAogCWlmIChyYWRlb25fY29ubmVjdG9yLT5ocGQu aHBkID09IFJBREVPTl9IUERfTk9ORSkgewotCQlpZiAoaTJjX2J1cy0+dmFsaWQpCi0JCQljb25u ZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9DT05ORUNUOworCQlpZiAoaTJjX2J1 cy0+dmFsaWQpIHsKKwkJCWNvbm5lY3Rvci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0NP Tk5FQ1QgfAorCQkJICAgICAgICAgICAgICAgICAgICBEUk1fQ09OTkVDVE9SX1BPTExfRElTQ09O TkVDVDsKKwkJfQogCX0gZWxzZQogCQljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1Jf UE9MTF9IUEQ7CiAKQEAgLTIxMzcsNyArMjEzOCw2IEBAIHJhZGVvbl9hZGRfbGVnYWN5X2Nvbm5l Y3RvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkgICAgICAxKTsKIAkJLyogbm8gSFBE IG9uIGFuYWxvZyBjb25uZWN0b3JzICovCiAJCXJhZGVvbl9jb25uZWN0b3ItPmhwZC5ocGQgPSBS QURFT05fSFBEX05PTkU7Ci0JCWNvbm5lY3Rvci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xM X0NPTk5FQ1Q7CiAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSB0cnVlOwogCQljb25u ZWN0b3ItPmRvdWJsZXNjYW5fYWxsb3dlZCA9IHRydWU7CiAJCWJyZWFrOwpAQCAtMjIyMiwxMCAr MjIyMiwxMyBAQCByYWRlb25fYWRkX2xlZ2FjeV9jb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAl9CiAKIAlpZiAocmFkZW9uX2Nvbm5lY3Rvci0+aHBkLmhwZCA9PSBSQURFT05fSFBE X05PTkUpIHsKLQkJaWYgKGkyY19idXMtPnZhbGlkKQotCQkJY29ubmVjdG9yLT5wb2xsZWQgPSBE Uk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsKKwkJaWYgKGkyY19idXMtPnZhbGlkKSB7CisJCQlj b25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9DT05ORUNUIHwKKwkJCSAgICAg ICAgICAgICAgICAgICAgRFJNX0NPTk5FQ1RPUl9QT0xMX0RJU0NPTk5FQ1Q7CisJCX0KIAl9IGVs c2UKIAkJY29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfSFBEOworCiAJY29u bmVjdG9yLT5kaXNwbGF5X2luZm8uc3VicGl4ZWxfb3JkZXIgPSBzdWJwaXhlbF9vcmRlcjsKIAlk cm1fc3lzZnNfY29ubmVjdG9yX2FkZChjb25uZWN0b3IpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9kZXZpY2UuYwppbmRleCA4MjFjODZiYzcwYzIuLjdhN2E0YWY3NTYzMCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs dWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KICNpbmNs dWRlIDxkcm0vcmFkZW9uX2RybS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KICNp bmNsdWRlIDxsaW51eC92Z2FhcmIuaD4KICNpbmNsdWRlIDxsaW51eC92Z2Ffc3dpdGNoZXJvby5o PgogI2luY2x1ZGUgPGxpbnV4L2VmaS5oPgpAQCAtMTQ2NSw2ICsxNDY2LDkgQEAgaW50IHJhZGVv bl9kZXZpY2VfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKIAlyZXR1cm4gMDsKIAog ZmFpbGVkOgorCS8qIGJhbGFuY2UgcG1fcnVudGltZV9nZXRfc3luYygpIGluIHJhZGVvbl9kcml2 ZXJfdW5sb2FkX2ttcygpICovCisJaWYgKHJhZGVvbl9pc19weChkZGV2KSkKKwkJcG1fcnVudGlt ZV9wdXRfbm9pZGxlKGRkZXYtPmRldik7CiAJaWYgKHJ1bnRpbWUpCiAJCXZnYV9zd2l0Y2hlcm9v X2ZpbmlfZG9tYWluX3BtX29wcyhyZGV2LT5kZXYpOwogCXJldHVybiByOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9rbXMuYwppbmRleCBiNjMwOTQ3NDZiNTAuLjkwN2FkMTVhODQ4NSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmMKQEAgLTYxLDcgKzYxLDkgQEAgaW50IHJhZGVvbl9k cml2ZXJfdW5sb2FkX2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChyZGV2LT5ybW1p byA9PSBOVUxMKQogCQlnb3RvIGRvbmVfZnJlZTsKIAotCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2 LT5kZXYpOworCWlmIChyYWRlb25faXNfcHgoZGV2KSkgeworCQlwbV9ydW50aW1lX2dldF9zeW5j KGRldi0+ZGV2KTsKKwl9CiAKIAlyYWRlb25fYWNwaV9maW5pKHJkZXYpOwogCQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl90dG0uYwppbmRleCBjNDY3NWI5NzI5YzkuLjU2ZmY0NmU2OGM1NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKQEAgLTIzMiw4ICsyMzIsOCBAQCBzdGF0aWMg aW50IHJhZGVvbl9tb3ZlX2JsaXQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAogCXJk ZXYgPSByYWRlb25fZ2V0X3JkZXYoYm8tPmJkZXYpOwogCXJpZHggPSByYWRlb25fY29weV9yaW5n X2luZGV4KHJkZXYpOwotCW9sZF9zdGFydCA9IG9sZF9tZW0tPnN0YXJ0IDw8IFBBR0VfU0hJRlQ7 Ci0JbmV3X3N0YXJ0ID0gbmV3X21lbS0+c3RhcnQgPDwgUEFHRV9TSElGVDsKKwlvbGRfc3RhcnQg PSAodTY0KW9sZF9tZW0tPnN0YXJ0IDw8IFBBR0VfU0hJRlQ7CisJbmV3X3N0YXJ0ID0gKHU2NClu ZXdfbWVtLT5zdGFydCA8PCBQQUdFX1NISUZUOwogCiAJc3dpdGNoIChvbGRfbWVtLT5tZW1fdHlw ZSkgewogCWNhc2UgVFRNX1BMX1ZSQU06CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3NpX2RwbS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaV9kcG0uYwppbmRleCA5MmQ4 NDllNjhmMTQuLjEyNTI3ZDY5ODc3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9zaV9kcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3NpX2RwbS5jCkBAIC0zMDIy LDYgKzMwMjIsMTIgQEAgc3RhdGljIHZvaWQgc2lfYXBwbHlfc3RhdGVfYWRqdXN0X3J1bGVzKHN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LAogCWlmIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2 ODExICYmCiAJICAgIHJkZXYtPnBkZXYtPnJldmlzaW9uID09IDB4ODEpCiAJCW1heF9tY2xrID0g MTIwMDAwOworCS8qIGxpbWl0IHNjbGsvbWNsayBvbiBKZXQgcGFydHMgZm9yIHN0YWJpbGl0eSAq LworCWlmIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2NjY1ICYmCisJICAgIHJkZXYtPnBkZXYt PnJldmlzaW9uID09IDB4YzMpIHsKKwkJbWF4X3NjbGsgPSA3NTAwMDsKKwkJbWF4X21jbGsgPSA4 MDAwMDsKKwl9CiAKIAkvKiBYWFggdmFsaWRhdGUgdGhlIG1pbiBjbG9ja3MgcmVxdWlyZWQgZm9y IGRpc3BsYXkgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvdWhpZC5jIGIvZHJpdmVycy9o aWQvdWhpZC5jCmluZGV4IDBjYjkyZTM0NzI1OC4uZTA0NTNiNmEyMWE4IDEwMDY0NAotLS0gYS9k cml2ZXJzL2hpZC91aGlkLmMKKysrIGIvZHJpdmVycy9oaWQvdWhpZC5jCkBAIC00OSwxMCArNDks MjYgQEAgc3RydWN0IHVoaWRfZGV2aWNlIHsKIAlhdG9taWNfdCByZXBvcnRfZG9uZTsKIAlhdG9t aWNfdCByZXBvcnRfaWQ7CiAJc3RydWN0IHVoaWRfZXZlbnQgcmVwb3J0X2J1ZjsKKwlzdHJ1Y3Qg d29ya19zdHJ1Y3Qgd29ya2VyOwogfTsKIAogc3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHVoaWRf bWlzYzsKIAorc3RhdGljIHZvaWQgdWhpZF9kZXZpY2VfYWRkX3dvcmtlcihzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCit7CisJc3RydWN0IHVoaWRfZGV2aWNlICp1aGlkID0gY29udGFpbmVyX29m KHdvcmssIHN0cnVjdCB1aGlkX2RldmljZSwgd29ya2VyKTsKKwlpbnQgcmV0OworCisJcmV0ID0g aGlkX2FkZF9kZXZpY2UodWhpZC0+aGlkKTsKKwlpZiAocmV0KSB7CisJCWhpZF9lcnIodWhpZC0+ aGlkLCAiQ2Fubm90IHJlZ2lzdGVyIEhJRCBkZXZpY2U6IGVycm9yICVkXG4iLCByZXQpOworCisJ CWhpZF9kZXN0cm95X2RldmljZSh1aGlkLT5oaWQpOworCQl1aGlkLT5oaWQgPSBOVUxMOworCQl1 aGlkLT5ydW5uaW5nID0gZmFsc2U7CisJfQorfQorCiBzdGF0aWMgdm9pZCB1aGlkX3F1ZXVlKHN0 cnVjdCB1aGlkX2RldmljZSAqdWhpZCwgc3RydWN0IHVoaWRfZXZlbnQgKmV2KQogewogCV9fdTgg bmV3aGVhZDsKQEAgLTQ3MSwxOCArNDg3LDE0IEBAIHN0YXRpYyBpbnQgdWhpZF9kZXZfY3JlYXRl MihzdHJ1Y3QgdWhpZF9kZXZpY2UgKnVoaWQsCiAJdWhpZC0+aGlkID0gaGlkOwogCXVoaWQtPnJ1 bm5pbmcgPSB0cnVlOwogCi0JcmV0ID0gaGlkX2FkZF9kZXZpY2UoaGlkKTsKLQlpZiAocmV0KSB7 Ci0JCWhpZF9lcnIoaGlkLCAiQ2Fubm90IHJlZ2lzdGVyIEhJRCBkZXZpY2VcbiIpOwotCQlnb3Rv IGVycl9oaWQ7Ci0JfQorCS8qIEFkZGluZyBvZiBhIEhJRCBkZXZpY2UgaXMgZG9uZSB0aHJvdWdo IGEgd29ya2VyLCB0byBhbGxvdyBISUQgZHJpdmVycworCSAqIHdoaWNoIHVzZSBmZWF0dXJlIHJl cXVlc3RzIGR1cmluZyAucHJvYmUgdG8gd29yaywgd2l0aG91dCB0aGV5IHdvdWxkCisJICogYmUg YmxvY2tlZCBvbiBkZXZsb2NrLCB3aGljaCBpcyBoZWxkIGJ5IHVoaWRfY2hhcl93cml0ZS4KKwkg Ki8KKwlzY2hlZHVsZV93b3JrKCZ1aGlkLT53b3JrZXIpOwogCiAJcmV0dXJuIDA7CiAKLWVycl9o aWQ6Ci0JaGlkX2Rlc3Ryb3lfZGV2aWNlKGhpZCk7Ci0JdWhpZC0+aGlkID0gTlVMTDsKLQl1aGlk LT5ydW5uaW5nID0gZmFsc2U7CiBlcnJfZnJlZToKIAlrZnJlZSh1aGlkLT5yZF9kYXRhKTsKIAly ZXR1cm4gcmV0OwpAQCAtNDk5LDYgKzUxMSw4IEBAIHN0YXRpYyBpbnQgdWhpZF9kZXZfZGVzdHJv eShzdHJ1Y3QgdWhpZF9kZXZpY2UgKnVoaWQpCiAJYXRvbWljX3NldCgmdWhpZC0+cmVwb3J0X2Rv bmUsIDEpOwogCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmdWhpZC0+cmVwb3J0X3dhaXQpOwogCisJ Y2FuY2VsX3dvcmtfc3luYygmdWhpZC0+d29ya2VyKTsKKwogCWhpZF9kZXN0cm95X2RldmljZSh1 aGlkLT5oaWQpOwogCWtmcmVlKHVoaWQtPnJkX2RhdGEpOwogCkBAIC01NjcsNiArNTgxLDcgQEAg c3RhdGljIGludCB1aGlkX2NoYXJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSkKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ1aGlkLT5yZXBvcnRfd2FpdCk7CiAJdWhp ZC0+cnVubmluZyA9IGZhbHNlOwogCWF0b21pY19zZXQoJnVoaWQtPnJlcG9ydF9kb25lLCAxKTsK KwlJTklUX1dPUksoJnVoaWQtPndvcmtlciwgdWhpZF9kZXZpY2VfYWRkX3dvcmtlcik7CiAKIAlm aWxlLT5wcml2YXRlX2RhdGEgPSB1aGlkOwogCW5vbnNlZWthYmxlX29wZW4oaW5vZGUsIGZpbGUp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9odi92bWJ1c19kcnYuYyBiL2RyaXZlcnMvaHYvdm1idXNf ZHJ2LmMKaW5kZXggMjMzZGEwYjlmNGI5Li4xZjJmZmY3MWRiZTMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaHYvdm1idXNfZHJ2LmMKKysrIGIvZHJpdmVycy9odi92bWJ1c19kcnYuYwpAQCAtMzMsNiAr MzMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2h5cGVydi5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5l bF9zdGF0Lmg+CiAjaW5jbHVkZSA8bGludXgvY3B1Lmg+CisjaW5jbHVkZSA8bGludXgvcmFuZG9t Lmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVydi5oPgogI2luY2x1ZGUgPGFzbS9oeXBlcnZpc29yLmg+ CiAjaW5jbHVkZSA8YXNtL21zaHlwZXJ2Lmg+CkBAIC03OTUsNiArNzk2LDggQEAgaW50IF9fdm1i dXNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBodl9kcml2ZXIgKmh2X2RyaXZlciwgc3RydWN0IG1v ZHVsZSAqb3duZXIsIGMKIEVYUE9SVF9TWU1CT0xfR1BMKF9fdm1idXNfZHJpdmVyX3JlZ2lzdGVy KTsKIAogLyoqCisKKwlhZGRfaW50ZXJydXB0X3JhbmRvbW5lc3MoSFlQRVJWSVNPUl9DQUxMQkFD S19WRUNUT1IsIDApOwogICogdm1idXNfZHJpdmVyX3VucmVnaXN0ZXIoKSAtIFVucmVnaXN0ZXIg YSB2bWJ1cydzIGRyaXZlcgogICogQGRydjogUG9pbnRlciB0byBkcml2ZXIgc3RydWN0dXJlIHlv dSB3YW50IHRvIHVuLXJlZ2lzdGVyCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHQ3 NDExLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0MTEuYwppbmRleCBkOTI5OWRlZTM3ZDEuLmRkZGFh MTYxYWFkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJpdmVy cy9od21vbi9hZHQ3NDExLmMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2RlZmluZSBBRFQ3NDExX1JF R19DRkcxCQkJMHgxOAogI2RlZmluZSBBRFQ3NDExX0NGRzFfU1RBUlRfTU9OSVRPUgkJKDEgPDwg MCkKKyNkZWZpbmUgQURUNzQxMV9DRkcxX1JFU0VSVkVEX0JJVDMJCSgxIDw8IDMpCiAKICNkZWZp bmUgQURUNzQxMV9SRUdfQ0ZHMgkJCTB4MTkKICNkZWZpbmUgQURUNzQxMV9DRkcyX0RJU0FCTEVf QVZHCQkoMSA8PCA1KQpAQCAtMjkyLDggKzI5MywxMCBAQCBzdGF0aWMgaW50IGFkdDc0MTFfcHJv YmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKIAltdXRleF9pbml0KCZkYXRhLT5kZXZpY2Vf bG9jayk7CiAJbXV0ZXhfaW5pdCgmZGF0YS0+dXBkYXRlX2xvY2spOwogCisJLyogQWNjb3JkaW5n IHRvIHRoZSBkYXRhc2hlZXQsIHdlIG11c3Qgb25seSB3cml0ZSAxIHRvIGJpdCAzICovCiAJcmV0 ID0gYWR0NzQxMV9tb2RpZnlfYml0KGNsaWVudCwgQURUNzQxMV9SRUdfQ0ZHMSwKLQkJCQkgQURU NzQxMV9DRkcxX1NUQVJUX01PTklUT1IsIDEpOworCQkJCSBBRFQ3NDExX0NGRzFfUkVTRVJWRURf QklUMworCQkJCSB8IEFEVDc0MTFfQ0ZHMV9TVEFSVF9NT05JVE9SLCAxKTsKIAlpZiAocmV0IDwg MCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1l Zm0zMi5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1lZm0zMi5jCmluZGV4IGY3ZWNjZDY4MmRl OS4uNTk5ZTYyMGZkOGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWVmbTMy LmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1lZm0zMi5jCkBAIC00MjcsNyArNDI3LDcg QEAgc3RhdGljIGludCBlZm0zMl9pMmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKIAlyZXQgPSByZXF1ZXN0X2lycShkZGF0YS0+aXJxLCBlZm0zMl9pMmNfaXJxLCAwLCBEUklW RVJfTkFNRSwgZGRhdGEpOwogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwg ImZhaWxlZCB0byByZXF1ZXN0IGlycSAoJWQpXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0OworCQln b3RvIGVycl9kaXNhYmxlX2NsazsKIAl9CiAKIAlyZXQgPSBpMmNfYWRkX2FkYXB0ZXIoJmRkYXRh LT5hZGFwdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWcyMHQuYyBi L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWcyMHQuYwppbmRleCBhNDRlYTEzZDE0MzQuLjg1ZjMz MDAzYzM4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1lZzIwdC5jCisrKyBi L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWcyMHQuYwpAQCAtNzc3LDEzICs3NzcsNiBAQCBzdGF0 aWMgaW50IHBjaF9pMmNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJLyogU2V0IHRoZSBu dW1iZXIgb2YgSTJDIGNoYW5uZWwgaW5zdGFuY2UgKi8KIAlhZGFwX2luZm8tPmNoX251bSA9IGlk LT5kcml2ZXJfZGF0YTsKIAotCXJldCA9IHJlcXVlc3RfaXJxKHBkZXYtPmlycSwgcGNoX2kyY19o YW5kbGVyLCBJUlFGX1NIQVJFRCwKLQkJICBLQlVJTERfTU9ETkFNRSwgYWRhcF9pbmZvKTsKLQlp ZiAocmV0KSB7Ci0JCXBjaF9wY2lfZXJyKHBkZXYsICJyZXF1ZXN0X2lycSBGQUlMRURcbiIpOwot CQlnb3RvIGVycl9yZXF1ZXN0X2lycTsKLQl9Ci0KIAlmb3IgKGkgPSAwOyBpIDwgYWRhcF9pbmZv LT5jaF9udW07IGkrKykgewogCQlwY2hfYWRhcCA9ICZhZGFwX2luZm8tPnBjaF9kYXRhW2ldLnBj aF9hZGFwdGVyOwogCQlhZGFwX2luZm8tPnBjaF9pMmNfc3VzcGVuZGVkID0gZmFsc2U7CkBAIC04 MDAsNiArNzkzLDE3IEBAIHN0YXRpYyBpbnQgcGNoX2kyY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAq cGRldiwKIAkJYWRhcF9pbmZvLT5wY2hfZGF0YVtpXS5wY2hfYmFzZV9hZGRyZXNzID0gYmFzZV9h ZGRyICsgMHgxMDAgKiBpOwogCiAJCXBjaF9hZGFwLT5kZXYucGFyZW50ID0gJnBkZXYtPmRldjsK Kwl9CisKKwlyZXQgPSByZXF1ZXN0X2lycShwZGV2LT5pcnEsIHBjaF9pMmNfaGFuZGxlciwgSVJR Rl9TSEFSRUQsCisJCSAgS0JVSUxEX01PRE5BTUUsIGFkYXBfaW5mbyk7CisJaWYgKHJldCkgewor CQlwY2hfcGNpX2VycihwZGV2LCAicmVxdWVzdF9pcnEgRkFJTEVEXG4iKTsKKwkJZ290byBlcnJf cmVxdWVzdF9pcnE7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGFkYXBfaW5mby0+Y2hfbnVtOyBp KyspIHsKKwkJcGNoX2FkYXAgPSAmYWRhcF9pbmZvLT5wY2hfZGF0YVtpXS5wY2hfYWRhcHRlcjsK IAogCQlwY2hfaTJjX2luaXQoJmFkYXBfaW5mby0+cGNoX2RhdGFbaV0pOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXF1cC5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1x dXAuYwppbmRleCBlYjQ3Yzk4MTMxZWMuLmQ5ZTY3MzhkYjcyYyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9pMmMvYnVzc2VzL2kyYy1xdXAuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXF1cC5j CkBAIC03MjQsNyArNzI0LDggQEAgc3RhdGljIGludCBxdXBfaTJjX3BtX3Jlc3VtZV9ydW50aW1l KHN0cnVjdCBkZXZpY2UgKmRldmljZSkKICNpZmRlZiBDT05GSUdfUE1fU0xFRVAKIHN0YXRpYyBp bnQgcXVwX2kyY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSkKIHsKLQlxdXBfaTJjX3Bt X3N1c3BlbmRfcnVudGltZShkZXZpY2UpOworCWlmICghcG1fcnVudGltZV9zdXNwZW5kZWQoZGV2 aWNlKSkKKwkJcmV0dXJuIHF1cF9pMmNfcG1fc3VzcGVuZF9ydW50aW1lKGRldmljZSk7CiAJcmV0 dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL211eGVzL2kyYy1tdXgtcGNhOTU0 eC5jIGIvZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1wY2E5NTR4LmMKaW5kZXggOWJkNDIxMjc4 MmFiLi5mMWI5NDU1MDk0NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL211eGVzL2kyYy1tdXgt cGNhOTU0eC5jCisrKyBiL2RyaXZlcnMvaTJjL211eGVzL2kyYy1tdXgtcGNhOTU0eC5jCkBAIC0x NjEsNyArMTYxLDcgQEAgc3RhdGljIGludCBwY2E5NTR4X3NlbGVjdF9jaGFuKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcCwKIAkvKiBPbmx5IHNlbGVjdCB0aGUgY2hhbm5lbCBpZiBpdHMgZGlmZmVy ZW50IGZyb20gdGhlIGxhc3QgY2hhbm5lbCAqLwogCWlmIChkYXRhLT5sYXN0X2NoYW4gIT0gcmVn dmFsKSB7CiAJCXJldCA9IHBjYTk1NHhfcmVnX3dyaXRlKGFkYXAsIGNsaWVudCwgcmVndmFsKTsK LQkJZGF0YS0+bGFzdF9jaGFuID0gcmVndmFsOworCQlkYXRhLT5sYXN0X2NoYW4gPSByZXQgPyAw IDogcmVndmFsOwogCX0KIAogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9h Y2NlbC9reHNkOS5jIGIvZHJpdmVycy9paW8vYWNjZWwva3hzZDkuYwppbmRleCBkODczOGQ0Zjhk ZjMuLjZiZjgxZDk1YTNmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vYWNjZWwva3hzZDkuYwor KysgYi9kcml2ZXJzL2lpby9hY2NlbC9reHNkOS5jCkBAIC0xNjAsMTEgKzE2MCwxMyBAQCBzdGF0 aWMgaW50IGt4c2Q5X3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAJCWlmIChy ZXQgPCAwKQogCQkJZ290byBlcnJvcl9yZXQ7CiAJCSp2YWwgPSByZXQ7CisJCXJldCA9IElJT19W QUxfSU5UOwogCQlicmVhazsKIAljYXNlIElJT19DSEFOX0lORk9fU0NBTEU6CiAJCXJldCA9IHNw aV93OHI4KHN0LT51cywgS1hTRDlfUkVBRChLWFNEOV9SRUdfQ1RSTF9DKSk7CiAJCWlmIChyZXQg PCAwKQogCQkJZ290byBlcnJvcl9yZXQ7CisJCSp2YWwgPSAwOwogCQkqdmFsMiA9IGt4c2Q5X21p Y3JvX3NjYWxlc1tyZXQgJiBLWFNEOV9GU19NQVNLXTsKIAkJcmV0ID0gSUlPX1ZBTF9JTlRfUExV U19NSUNSTzsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hZGMvYXQ5MV9hZGMu YyBiL2RyaXZlcnMvaWlvL2FkYy9hdDkxX2FkYy5jCmluZGV4IGZhNWQyOTlkOTIyMi4uZTk4NTE1 ZmM0NjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9hZGMvYXQ5MV9hZGMuYworKysgYi9kcml2 ZXJzL2lpby9hZGMvYXQ5MV9hZGMuYwpAQCAtMzgxLDggKzM4MSw4IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBhdDkxX2FkY19ybF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqcHJpdmF0ZSkKIAkJc3Qt PnRzX2J1ZmZlcmVkbWVhc3VyZSA9IGZhbHNlOwogCQlpbnB1dF9yZXBvcnRfa2V5KHN0LT50c19p bnB1dCwgQlROX1RPVUNILCAwKTsKIAkJaW5wdXRfc3luYyhzdC0+dHNfaW5wdXQpOwotCX0gZWxz ZSBpZiAoc3RhdHVzICYgQVQ5MV9BRENfRU9DKDMpKSB7Ci0JCS8qIENvbnZlcnNpb24gZmluaXNo ZWQgKi8KKwl9IGVsc2UgaWYgKHN0YXR1cyAmIEFUOTFfQURDX0VPQygzKSAmJiBzdC0+dHNfaW5w dXQpIHsKKwkJLyogQ29udmVyc2lvbiBmaW5pc2hlZCBhbmQgd2UndmUgYSB0b3VjaHNjcmVlbiAq LwogCQlpZiAoc3QtPnRzX2J1ZmZlcmVkbWVhc3VyZSkgewogCQkJLyoKIAkJCSAqIExhc3QgbWVh c3VyZW1lbnQgaXMgYWx3YXlzIGRpc2NhcmRlZCwgc2luY2UgaXQgY2FuCmRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9hZGMvdGlfYW0zMzV4X2FkYy5jIGIvZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1 eF9hZGMuYwppbmRleCA5ZDI5NTc2OTZiMjMuLjIyMmNkYjFjYWFkOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYworKysgYi9kcml2ZXJzL2lpby9hZGMvdGlfYW0z MzV4X2FkYy5jCkBAIC0zMiw2ICszMiw3IEBACiAKIHN0cnVjdCB0aWFkY19kZXZpY2UgewogCXN0 cnVjdCB0aV90c2NhZGNfZGV2ICptZmRfdHNjYWRjOworCXN0cnVjdCBtdXRleCBmaWZvMV9sb2Nr OyAvKiB0byBwcm90ZWN0IGZpZm8gYWNjZXNzICovCiAJaW50IGNoYW5uZWxzOwogCXU4IGNoYW5u ZWxfbGluZVs4XTsKIAl1OCBjaGFubmVsX3N0ZXBbOF07CkBAIC0zNDEsNiArMzQyLDcgQEAgc3Rh dGljIGludCB0aWFkY19yZWFkX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCQlpbnQg KnZhbCwgaW50ICp2YWwyLCBsb25nIG1hc2spCiB7CiAJc3RydWN0IHRpYWRjX2RldmljZSAqYWRj X2RldiA9IGlpb19wcml2KGluZGlvX2Rldik7CisJaW50IHJldCA9IElJT19WQUxfSU5UOwogCWlu dCBpLCBtYXBfdmFsOwogCXVuc2lnbmVkIGludCBmaWZvMWNvdW50LCByZWFkLCBzdGVwaWQ7CiAJ Ym9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzU0LDYgKzM1Niw3IEBAIHN0YXRpYyBpbnQgdGlhZGNf cmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAlpZiAoIXN0ZXBfZW4pCiAJCXJl dHVybiAtRUlOVkFMOwogCisJbXV0ZXhfbG9jaygmYWRjX2Rldi0+ZmlmbzFfbG9jayk7CiAJZmlm bzFjb3VudCA9IHRpYWRjX3JlYWRsKGFkY19kZXYsIFJFR19GSUZPMUNOVCk7CiAJd2hpbGUgKGZp Zm8xY291bnQtLSkKIAkJdGlhZGNfcmVhZGwoYWRjX2RldiwgUkVHX0ZJRk8xKTsKQEAgLTM3MCw3 ICszNzMsOCBAQCBzdGF0aWMgaW50IHRpYWRjX3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYsCiAKIAkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHsKIAkJCWFtMzM1 eF90c2Nfc2VfYWRjX2RvbmUoYWRjX2Rldi0+bWZkX3RzY2FkYyk7Ci0JCQlyZXR1cm4gLUVBR0FJ TjsKKwkJCXJldCA9IC1FQUdBSU47CisJCQlnb3RvIGVycl91bmxvY2s7CiAJCX0KIAl9CiAJbWFw X3ZhbCA9IGFkY19kZXYtPmNoYW5uZWxfc3RlcFtjaGFuLT5zY2FuX2luZGV4XTsKQEAgLTM5Niw4 ICs0MDAsMTEgQEAgc3RhdGljIGludCB0aWFkY19yZWFkX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5k aW9fZGV2LAogCWFtMzM1eF90c2Nfc2VfYWRjX2RvbmUoYWRjX2Rldi0+bWZkX3RzY2FkYyk7CiAK IAlpZiAoZm91bmQgPT0gZmFsc2UpCi0JCXJldHVybiAtRUJVU1k7Ci0JcmV0dXJuIElJT19WQUxf SU5UOworCQlyZXQgPSAgLUVCVVNZOworCitlcnJfdW5sb2NrOgorCW11dGV4X3VubG9jaygmYWRj X2Rldi0+ZmlmbzFfbG9jayk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVj dCBpaW9faW5mbyB0aWFkY19pbmZvID0gewpAQCAtNDQ0LDYgKzQ1MSw3IEBAIHN0YXRpYyBpbnQg dGlhZGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCXRpYWRjX3N0ZXBf Y29uZmlnKGluZGlvX2Rldik7CiAJdGlhZGNfd3JpdGVsKGFkY19kZXYsIFJFR19GSUZPMVRIUiwg RklGTzFfVEhSRVNIT0xEKTsKKwltdXRleF9pbml0KCZhZGNfZGV2LT5maWZvMV9sb2NrKTsKIAog CWVyciA9IHRpYWRjX2NoYW5uZWxfaW5pdChpbmRpb19kZXYsIGFkY19kZXYtPmNoYW5uZWxzKTsK IAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29y cy9oaWQtc2Vuc29yLWF0dHJpYnV0ZXMuYyBiL2RyaXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29y cy9oaWQtc2Vuc29yLWF0dHJpYnV0ZXMuYwppbmRleCA0MDNkZDNkODk4NmUuLmIzMjFhMjUzZWJh OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3It YXR0cmlidXRlcy5jCisrKyBiL2RyaXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29ycy9oaWQtc2Vu c29yLWF0dHJpYnV0ZXMuYwpAQCAtNTYsOCArNTYsOCBAQCBzdHJ1Y3QgewogCXtISURfVVNBR0Vf U0VOU09SX0FMUywgMCwgMSwgMH0sCiAJe0hJRF9VU0FHRV9TRU5TT1JfQUxTLCBISURfVVNBR0Vf U0VOU09SX1VOSVRTX0xVWCwgMSwgMH0sCiAKLQl7SElEX1VTQUdFX1NFTlNPUl9QUkVTU1VSRSwg MCwgMTAwMDAwLCAwfSwKLQl7SElEX1VTQUdFX1NFTlNPUl9QUkVTU1VSRSwgSElEX1VTQUdFX1NF TlNPUl9VTklUU19QQVNDQUwsIDEsIDB9LAorCXtISURfVVNBR0VfU0VOU09SX1BSRVNTVVJFLCAw LCAxMDAsIDB9LAorCXtISURfVVNBR0VfU0VOU09SX1BSRVNTVVJFLCBISURfVVNBR0VfU0VOU09S X1VOSVRTX1BBU0NBTCwgMCwgMTAwMH0sCiB9OwogCiBzdGF0aWMgaW50IHBvd18xMCh1bnNpZ25l ZCBwb3dlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMgYi9k cml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCmluZGV4IDc5OTVjNjhjMmEzNC4uMjMwY2Jk ZGE2Y2UxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCisrKyBi L2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMKQEAgLTQwNCw5ICs0MDQsOCBAQCBzc2l6 ZV90IGlpb19mb3JtYXRfdmFsdWUoY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgdHlwZSwgaW50IHNp emUsIGludCAqdmFscykKIAkJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkLiUwOXVcbiIsIHZhbHNb MF0sIHZhbHNbMV0pOwogCWNhc2UgSUlPX1ZBTF9GUkFDVElPTkFMOgogCQl0bXAgPSBkaXZfczY0 KChzNjQpdmFsc1swXSAqIDEwMDAwMDAwMDBMTCwgdmFsc1sxXSk7Ci0JCXZhbHNbMV0gPSBkb19k aXYodG1wLCAxMDAwMDAwMDAwTEwpOwotCQl2YWxzWzBdID0gdG1wOwotCQlyZXR1cm4gc3ByaW50 ZihidWYsICIlZC4lMDl1XG4iLCB2YWxzWzBdLCB2YWxzWzFdKTsKKwkJdmFsc1swXSA9IChpbnQp ZGl2X3M2NF9yZW0odG1wLCAxMDAwMDAwMDAwLCAmdmFsc1sxXSk7CisJCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkLiUwOXVcbiIsIHZhbHNbMF0sIGFicyh2YWxzWzFdKSk7CiAJY2FzZSBJSU9fVkFM X0ZSQUNUSU9OQUxfTE9HMjoKIAkJdG1wID0gKHM2NCl2YWxzWzBdICogMTAwMDAwMDAwMExMID4+ IHZhbHNbMV07CiAJCXZhbHNbMV0gPSBkb19kaXYodG1wLCAxMDAwMDAwMDAwTEwpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vcHJveGltaXR5L2FzMzkzNS5jIGIvZHJpdmVycy9paW8vcHJveGlt aXR5L2FzMzkzNS5jCmluZGV4IDM3YzFiYjJhZmQwOC4uNzU4YzE0NzAzYWQ4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2lpby9wcm94aW1pdHkvYXMzOTM1LmMKKysrIGIvZHJpdmVycy9paW8vcHJveGlt aXR5L2FzMzkzNS5jCkBAIC0zODksNyArMzg5LDcgQEAgc3RhdGljIGludCBhczM5MzVfcHJvYmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQlyZXQgPSBpaW9f dHJpZ2dlcmVkX2J1ZmZlcl9zZXR1cChpbmRpb19kZXYsIE5VTEwsCisJcmV0ID0gaWlvX3RyaWdn ZXJlZF9idWZmZXJfc2V0dXAoaW5kaW9fZGV2LCBpaW9fcG9sbGZ1bmNfc3RvcmVfdGltZSwKIAkJ JmFzMzkzNV90cmlnZ2VyX2hhbmRsZXIsIE5VTEwpOwogCiAJaWYgKHJldCkgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMgYi9kcml2ZXJzL2luZmluaWJh bmQvY29yZS9tdWx0aWNhc3QuYwppbmRleCBkMjM2MGE4ZWYwYjIuLjE4MGQ3ZjQzNmVkNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMKKysrIGIvZHJpdmVy cy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMKQEAgLTEwNiw3ICsxMDYsNiBAQCBzdHJ1Y3Qg bWNhc3RfZ3JvdXAgewogCWF0b21pY190CQlyZWZjb3VudDsKIAllbnVtIG1jYXN0X2dyb3VwX3N0 YXRlCXN0YXRlOwogCXN0cnVjdCBpYl9zYV9xdWVyeQkqcXVlcnk7Ci0JaW50CQkJcXVlcnlfaWQ7 CiAJdTE2CQkJcGtleV9pbmRleDsKIAl1OAkJCWxlYXZlX3N0YXRlOwogCWludAkJCXJldHJpZXM7 CkBAIC0zMzksMTEgKzMzOCw3IEBAIHN0YXRpYyBpbnQgc2VuZF9qb2luKHN0cnVjdCBtY2FzdF9n cm91cCAqZ3JvdXAsIHN0cnVjdCBtY2FzdF9tZW1iZXIgKm1lbWJlcikKIAkJCQkgICAgICAgbWVt YmVyLT5tdWx0aWNhc3QuY29tcF9tYXNrLAogCQkJCSAgICAgICAzMDAwLCBHRlBfS0VSTkVMLCBq b2luX2hhbmRsZXIsIGdyb3VwLAogCQkJCSAgICAgICAmZ3JvdXAtPnF1ZXJ5KTsKLQlpZiAocmV0 ID49IDApIHsKLQkJZ3JvdXAtPnF1ZXJ5X2lkID0gcmV0OwotCQlyZXQgPSAwOwotCX0KLQlyZXR1 cm4gcmV0OworCXJldHVybiAocmV0ID4gMCkgPyAwIDogcmV0OwogfQogCiBzdGF0aWMgaW50IHNl bmRfbGVhdmUoc3RydWN0IG1jYXN0X2dyb3VwICpncm91cCwgdTggbGVhdmVfc3RhdGUpCkBAIC0z NjMsMTEgKzM1OCw3IEBAIHN0YXRpYyBpbnQgc2VuZF9sZWF2ZShzdHJ1Y3QgbWNhc3RfZ3JvdXAg Kmdyb3VwLCB1OCBsZWF2ZV9zdGF0ZSkKIAkJCQkgICAgICAgSUJfU0FfTUNNRU1CRVJfUkVDX0pP SU5fU1RBVEUsCiAJCQkJICAgICAgIDMwMDAsIEdGUF9LRVJORUwsIGxlYXZlX2hhbmRsZXIsCiAJ CQkJICAgICAgIGdyb3VwLCAmZ3JvdXAtPnF1ZXJ5KTsKLQlpZiAocmV0ID49IDApIHsKLQkJZ3Jv dXAtPnF1ZXJ5X2lkID0gcmV0OwotCQlyZXQgPSAwOwotCX0KLQlyZXR1cm4gcmV0OworCXJldHVy biAocmV0ID4gMCkgPyAwIDogcmV0OwogfQogCiBzdGF0aWMgdm9pZCBqb2luX2dyb3VwKHN0cnVj dCBtY2FzdF9ncm91cCAqZ3JvdXAsIHN0cnVjdCBtY2FzdF9tZW1iZXIgKm1lbWJlciwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L21hZC5jIGIvZHJpdmVycy9pbmZpbmli YW5kL2h3L21seDQvbWFkLmMKaW5kZXggMWNjODNhYmI5YjQ0Li44NDFjZGMxNTU0ZjUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L21hZC5jCisrKyBiL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9tbHg0L21hZC5jCkBAIC0xMDYyLDYgKzEwNjIsMjcgQEAgdm9pZCBoYW5kbGVf cG9ydF9tZ210X2NoYW5nZV9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAkJLyog R2VuZXJhdGUgR1VJRCBjaGFuZ2VkIGV2ZW50ICovCiAJCWlmIChjaGFuZ2VkX2F0dHIgJiBNTFg0 X0VRX1BPUlRfSU5GT19HSURfUEZYX0NIQU5HRV9NQVNLKSB7CisJCQlpZiAobWx4NF9pc19tYXN0 ZXIoZGV2LT5kZXYpKSB7CisJCQkJdW5pb24gaWJfZ2lkIGdpZDsKKwkJCQlpbnQgZXJyID0gMDsK KworCQkJCWlmICghZXFlLT5ldmVudC5wb3J0X21nbXRfY2hhbmdlLnBhcmFtcy5wb3J0X2luZm8u Z2lkX3ByZWZpeCkKKwkJCQkJZXJyID0gX19tbHg0X2liX3F1ZXJ5X2dpZCgmZGV2LT5pYl9kZXYs IHBvcnQsIDAsICZnaWQsIDEpOworCQkJCWVsc2UKKwkJCQkJZ2lkLmdsb2JhbC5zdWJuZXRfcHJl Zml4ID0KKwkJCQkJCWVxZS0+ZXZlbnQucG9ydF9tZ210X2NoYW5nZS5wYXJhbXMucG9ydF9pbmZv LmdpZF9wcmVmaXg7CisJCQkJaWYgKGVycikgeworCQkJCQlwcl93YXJuKCJDb3VsZCBub3QgY2hh bmdlIFFQMSBzdWJuZXQgcHJlZml4IGZvciBwb3J0ICVkOiBxdWVyeV9naWQgZXJyb3IgKCVkKVxu IiwKKwkJCQkJCXBvcnQsIGVycik7CisJCQkJfSBlbHNlIHsKKwkJCQkJcHJfZGVidWcoIkNoYW5n aW5nIFFQMSBzdWJuZXQgcHJlZml4IGZvciBwb3J0ICVkLiBvbGQ9MHglbGx4LiBuZXc9MHglbGx4 XG4iLAorCQkJCQkJIHBvcnQsCisJCQkJCQkgKHU2NClhdG9taWM2NF9yZWFkKCZkZXYtPnNyaW92 LmRlbXV4W3BvcnQgLSAxXS5zdWJuZXRfcHJlZml4KSwKKwkJCQkJCSBiZTY0X3RvX2NwdShnaWQu Z2xvYmFsLnN1Ym5ldF9wcmVmaXgpKTsKKwkJCQkJYXRvbWljNjRfc2V0KCZkZXYtPnNyaW92LmRl bXV4W3BvcnQgLSAxXS5zdWJuZXRfcHJlZml4LAorCQkJCQkJICAgICBiZTY0X3RvX2NwdShnaWQu Z2xvYmFsLnN1Ym5ldF9wcmVmaXgpKTsKKwkJCQl9CisJCQl9CiAJCQltbHg0X2liX2Rpc3BhdGNo X2V2ZW50KGRldiwgcG9ydCwgSUJfRVZFTlRfR0lEX0NIQU5HRSk7CiAJCQkvKmlmIG1hc3Rlciwg bm90aWZ5IGFsbCBzbGF2ZXMqLwogCQkJaWYgKG1seDRfaXNfbWFzdGVyKGRldi0+ZGV2KSkKQEAg LTIxMzQsNiArMjE1NSw4IEBAIGludCBtbHg0X2liX2luaXRfc3Jpb3Yoc3RydWN0IG1seDRfaWJf ZGV2ICpkZXYpCiAJCWlmIChlcnIpCiAJCQlnb3RvIGRlbXV4X2VycjsKIAkJZGV2LT5zcmlvdi5k ZW11eFtpXS5ndWlkX2NhY2hlWzBdID0gZ2lkLmdsb2JhbC5pbnRlcmZhY2VfaWQ7CisJCWF0b21p YzY0X3NldCgmZGV2LT5zcmlvdi5kZW11eFtpXS5zdWJuZXRfcHJlZml4LAorCQkJICAgICBiZTY0 X3RvX2NwdShnaWQuZ2xvYmFsLnN1Ym5ldF9wcmVmaXgpKTsKIAkJZXJyID0gYWxsb2NfcHZfb2Jq ZWN0KGRldiwgbWx4NF9tYXN0ZXJfZnVuY19udW0oZGV2LT5kZXYpLCBpICsgMSwKIAkJCQkgICAg ICAmZGV2LT5zcmlvdi5zcXBzW2ldKTsKIAkJaWYgKGVycikKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5maW5pYmFuZC9ody9tbHg0L21jZy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWNn LmMKaW5kZXggYTA1NTlhOGFmNGY0Li4wOTQ4OTYzYTc0OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv aW5maW5pYmFuZC9ody9tbHg0L21jZy5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0 L21jZy5jCkBAIC00ODUsNyArNDg1LDcgQEAgc3RhdGljIHU4IGdldF9sZWF2ZV9zdGF0ZShzdHJ1 Y3QgbWNhc3RfZ3JvdXAgKmdyb3VwKQogCQlpZiAoIWdyb3VwLT5tZW1iZXJzW2ldKQogCQkJbGVh dmVfc3RhdGUgfD0gKDEgPDwgaSk7CiAKLQlyZXR1cm4gbGVhdmVfc3RhdGUgJiAoZ3JvdXAtPnJl Yy5zY29wZV9qb2luX3N0YXRlICYgNyk7CisJcmV0dXJuIGxlYXZlX3N0YXRlICYgKGdyb3VwLT5y ZWMuc2NvcGVfam9pbl9zdGF0ZSAmIDB4Zik7CiB9CiAKIHN0YXRpYyBpbnQgam9pbl9ncm91cChz dHJ1Y3QgbWNhc3RfZ3JvdXAgKmdyb3VwLCBpbnQgc2xhdmUsIHU4IGpvaW5fbWFzaykKQEAgLTU2 MCw4ICs1NjAsOCBAQCBzdGF0aWMgdm9pZCBtbHg0X2liX21jZ190aW1lb3V0X2hhbmRsZXIoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl9IGVsc2UKIAkJCW1jZ193YXJuX2dyb3VwKGdyb3Vw LCAiRFJJVkVSIEJVR1xuIik7CiAJfSBlbHNlIGlmIChncm91cC0+c3RhdGUgPT0gTUNBU1RfTEVB VkVfU0VOVCkgewotCQlpZiAoZ3JvdXAtPnJlYy5zY29wZV9qb2luX3N0YXRlICYgNykKLQkJCWdy b3VwLT5yZWMuc2NvcGVfam9pbl9zdGF0ZSAmPSAweGY4OworCQlpZiAoZ3JvdXAtPnJlYy5zY29w ZV9qb2luX3N0YXRlICYgMHhmKQorCQkJZ3JvdXAtPnJlYy5zY29wZV9qb2luX3N0YXRlICY9IDB4 ZjA7CiAJCWdyb3VwLT5zdGF0ZSA9IE1DQVNUX0lETEU7CiAJCW11dGV4X3VubG9jaygmZ3JvdXAt PmxvY2spOwogCQlpZiAocmVsZWFzZV9ncm91cChncm91cCwgMSkpCkBAIC02MDEsNyArNjAxLDcg QEAgc3RhdGljIGludCBoYW5kbGVfbGVhdmVfcmVxKHN0cnVjdCBtY2FzdF9ncm91cCAqZ3JvdXAs IHU4IGxlYXZlX21hc2ssCiBzdGF0aWMgaW50IGhhbmRsZV9qb2luX3JlcShzdHJ1Y3QgbWNhc3Rf Z3JvdXAgKmdyb3VwLCB1OCBqb2luX21hc2ssCiAJCQkgICBzdHJ1Y3QgbWNhc3RfcmVxICpyZXEp CiB7Ci0JdTggZ3JvdXBfam9pbl9zdGF0ZSA9IGdyb3VwLT5yZWMuc2NvcGVfam9pbl9zdGF0ZSAm IDc7CisJdTggZ3JvdXBfam9pbl9zdGF0ZSA9IGdyb3VwLT5yZWMuc2NvcGVfam9pbl9zdGF0ZSAm IDB4ZjsKIAlpbnQgcmVmID0gMDsKIAl1MTYgc3RhdHVzOwogCXN0cnVjdCBpYl9zYV9tY21lbWJl cl9kYXRhICpzYV9kYXRhID0gKHN0cnVjdCBpYl9zYV9tY21lbWJlcl9kYXRhICopcmVxLT5zYV9t YWQuZGF0YTsKQEAgLTY4Niw4ICs2ODYsOCBAQCBzdGF0aWMgdm9pZCBtbHg0X2liX21jZ193b3Jr X2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQkJdTggY3VyX2pvaW5fc3RhdGU7 CiAKIAkJCXJlc3Bfam9pbl9zdGF0ZSA9ICgoc3RydWN0IGliX3NhX21jbWVtYmVyX2RhdGEgKikK LQkJCQkJCWdyb3VwLT5yZXNwb25zZV9zYV9tYWQuZGF0YSktPnNjb3BlX2pvaW5fc3RhdGUgJiA3 OwotCQkJY3VyX2pvaW5fc3RhdGUgPSBncm91cC0+cmVjLnNjb3BlX2pvaW5fc3RhdGUgJiA3Owor CQkJCQkJZ3JvdXAtPnJlc3BvbnNlX3NhX21hZC5kYXRhKS0+c2NvcGVfam9pbl9zdGF0ZSAmIDB4 ZjsKKwkJCWN1cl9qb2luX3N0YXRlID0gZ3JvdXAtPnJlYy5zY29wZV9qb2luX3N0YXRlICYgMHhm OwogCiAJCQlpZiAobWV0aG9kID09IElCX01HTVRfTUVUSE9EX0dFVF9SRVNQKSB7CiAJCQkJLyog c3VjY2Vzc2Z1bGwgam9pbiAqLwpAQCAtNzA2LDcgKzcwNiw3IEBAIHByb2Nlc3NfcmVxdWVzdHM6 CiAJCXJlcSA9IGxpc3RfZmlyc3RfZW50cnkoJmdyb3VwLT5wZW5kaW5nX2xpc3QsIHN0cnVjdCBt Y2FzdF9yZXEsCiAJCQkJICAgICAgIGdyb3VwX2xpc3QpOwogCQlzYV9kYXRhID0gKHN0cnVjdCBp Yl9zYV9tY21lbWJlcl9kYXRhICopcmVxLT5zYV9tYWQuZGF0YTsKLQkJcmVxX2pvaW5fc3RhdGUg PSBzYV9kYXRhLT5zY29wZV9qb2luX3N0YXRlICYgMHg3OworCQlyZXFfam9pbl9zdGF0ZSA9IHNh X2RhdGEtPnNjb3BlX2pvaW5fc3RhdGUgJiAweGY7CiAKIAkJLyogRm9yIGEgbGVhdmUgcmVxdWVz dCwgd2Ugd2lsbCBpbW1lZGlhdGVseSBhbnN3ZXIgdGhlIFZGLCBhbmQKIAkJICogdXBkYXRlIG91 ciBpbnRlcm5hbCBjb3VudGVycy4gVGhlIGFjdHVhbCBsZWF2ZSB3aWxsIGJlIHNlbnQKZGlmZiAt LWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L21seDRfaWIuaCBiL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9tbHg0L21seDRfaWIuaAppbmRleCAzNjlkYTNjYTVkNjQuLjViNmIzYTNjZjlh OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWx4NF9pYi5oCisrKyBi L2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L21seDRfaWIuaApAQCAtNDE3LDcgKzQxNyw3IEBA IHN0cnVjdCBtbHg0X2liX2RlbXV4X2N0eCB7CiAJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndx OwogCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp1ZF93cTsKIAlzcGlubG9ja190IHVkX2xvY2s7 Ci0JX19iZTY0IHN1Ym5ldF9wcmVmaXg7CisJYXRvbWljNjRfdCBzdWJuZXRfcHJlZml4OwogCV9f YmU2NCBndWlkX2NhY2hlWzEyOF07CiAJc3RydWN0IG1seDRfaWJfZGV2ICpkZXY7CiAJLyogdGhl IGZvbGxvd2luZyBsb2NrIHByb3RlY3RzIGJvdGggbWNnX3RhYmxlIGFuZCBtY2dfbWdpZDBfbGlz dCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvcXAuYyBiL2RyaXZl cnMvaW5maW5pYmFuZC9ody9tbHg0L3FwLmMKaW5kZXggNWZlMzY0NmIyNDhmLi42ZjUwYTIxMzMx ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L3FwLmMKKysrIGIvZHJp dmVycy9pbmZpbmliYW5kL2h3L21seDQvcXAuYwpAQCAtMjE0OSwyNCArMjE0OSwyNyBAQCBzdGF0 aWMgaW50IGJ1aWxkX21seF9oZWFkZXIoc3RydWN0IG1seDRfaWJfc3FwICpzcXAsIHN0cnVjdCBp Yl9zZW5kX3dyICp3ciwKIAkJc3FwLT51ZF9oZWFkZXIuZ3JoLmZsb3dfbGFiZWwgICAgPQogCQkJ YWgtPmF2LmliLnNsX3RjbGFzc19mbG93bGFiZWwgJiBjcHVfdG9fYmUzMigweGZmZmZmKTsKIAkJ c3FwLT51ZF9oZWFkZXIuZ3JoLmhvcF9saW1pdCAgICAgPSBhaC0+YXYuaWIuaG9wX2xpbWl0Owot CQlpZiAoaXNfZXRoKQorCQlpZiAoaXNfZXRoKSB7CiAJCQltZW1jcHkoc3FwLT51ZF9oZWFkZXIu Z3JoLnNvdXJjZV9naWQucmF3LCBzZ2lkLnJhdywgMTYpOwotCQllbHNlIHsKLQkJaWYgKG1seDRf aXNfbWZ1bmModG9fbWRldihpYl9kZXYpLT5kZXYpKSB7Ci0JCQkvKiBXaGVuIG11bHRpLWZ1bmN0 aW9uIGlzIGVuYWJsZWQsIHRoZSBpYl9jb3JlIGdpZAotCQkJICogaW5kZXhlcyBkb24ndCBuZWNl c3NhcmlseSBtYXRjaCB0aGUgaHcgb25lcywgc28KLQkJCSAqIHdlIG11c3QgdXNlIG91ciBvd24g Y2FjaGUgKi8KLQkJCXNxcC0+dWRfaGVhZGVyLmdyaC5zb3VyY2VfZ2lkLmdsb2JhbC5zdWJuZXRf cHJlZml4ID0KLQkJCQl0b19tZGV2KGliX2RldiktPnNyaW92LmRlbXV4W3NxcC0+cXAucG9ydCAt IDFdLgotCQkJCQkJICAgICAgIHN1Ym5ldF9wcmVmaXg7Ci0JCQlzcXAtPnVkX2hlYWRlci5ncmgu c291cmNlX2dpZC5nbG9iYWwuaW50ZXJmYWNlX2lkID0KLQkJCQl0b19tZGV2KGliX2RldiktPnNy aW92LmRlbXV4W3NxcC0+cXAucG9ydCAtIDFdLgotCQkJCQkgICAgICAgZ3VpZF9jYWNoZVthaC0+ YXYuaWIuZ2lkX2luZGV4XTsKLQkJfSBlbHNlCi0JCQlpYl9nZXRfY2FjaGVkX2dpZChpYl9kZXYs Ci0JCQkJCSAgYmUzMl90b19jcHUoYWgtPmF2LmliLnBvcnRfcGQpID4+IDI0LAotCQkJCQkgIGFo LT5hdi5pYi5naWRfaW5kZXgsCi0JCQkJCSAgJnNxcC0+dWRfaGVhZGVyLmdyaC5zb3VyY2VfZ2lk KTsKKwkJfSBlbHNlIHsKKwkJCWlmIChtbHg0X2lzX21mdW5jKHRvX21kZXYoaWJfZGV2KS0+ZGV2 KSkgeworCQkJCS8qIFdoZW4gbXVsdGktZnVuY3Rpb24gaXMgZW5hYmxlZCwgdGhlIGliX2NvcmUg Z2lkCisJCQkJICogaW5kZXhlcyBkb24ndCBuZWNlc3NhcmlseSBtYXRjaCB0aGUgaHcgb25lcywg c28KKwkJCQkgKiB3ZSBtdXN0IHVzZSBvdXIgb3duIGNhY2hlCisJCQkJICovCisJCQkJc3FwLT51 ZF9oZWFkZXIuZ3JoLnNvdXJjZV9naWQuZ2xvYmFsLnN1Ym5ldF9wcmVmaXggPQorCQkJCQljcHVf dG9fYmU2NChhdG9taWM2NF9yZWFkKCYodG9fbWRldihpYl9kZXYpLT5zcmlvdi4KKwkJCQkJCQkJ ICAgIGRlbXV4W3NxcC0+cXAucG9ydCAtIDFdLgorCQkJCQkJCQkgICAgc3VibmV0X3ByZWZpeCkp KTsKKwkJCQlzcXAtPnVkX2hlYWRlci5ncmguc291cmNlX2dpZC5nbG9iYWwuaW50ZXJmYWNlX2lk ID0KKwkJCQkJdG9fbWRldihpYl9kZXYpLT5zcmlvdi5kZW11eFtzcXAtPnFwLnBvcnQgLSAxXS4K KwkJCQkJCSAgICAgICBndWlkX2NhY2hlW2FoLT5hdi5pYi5naWRfaW5kZXhdOworCQkJfSBlbHNl IHsKKwkJCQlpYl9nZXRfY2FjaGVkX2dpZChpYl9kZXYsCisJCQkJCQkgIGJlMzJfdG9fY3B1KGFo LT5hdi5pYi5wb3J0X3BkKSA+PiAyNCwKKwkJCQkJCSAgYWgtPmF2LmliLmdpZF9pbmRleCwKKwkJ CQkJCSAgJnNxcC0+dWRfaGVhZGVyLmdyaC5zb3VyY2VfZ2lkKTsKKwkJCX0KIAkJfQogCQltZW1j cHkoc3FwLT51ZF9oZWFkZXIuZ3JoLmRlc3RpbmF0aW9uX2dpZC5yYXcsCiAJCSAgICAgICBhaC0+ YXYuaWIuZGdpZCwgMTYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9p Yi9pcG9pYi5oIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYi5oCmluZGV4IDJh N2M3ZGMyODcyNi4uNTFmNWVkYzllYWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQv dWxwL2lwb2liL2lwb2liLmgKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9p Yi5oCkBAIC00NjMsNiArNDYzLDcgQEAgdm9pZCBpcG9pYl9zZW5kKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCXN0cnVjdCBpcG9pYl9haCAqYWRkcmVzcywg dTMyIHFwbik7CiB2b2lkIGlwb2liX3JlYXBfYWgoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsK IAorc3RydWN0IGlwb2liX3BhdGggKl9fcGF0aF9maW5kKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs IHZvaWQgKmdpZCk7CiB2b2lkIGlwb2liX21hcmtfcGF0aHNfaW52YWxpZChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2KTsKIHZvaWQgaXBvaWJfZmx1c2hfcGF0aHMoc3RydWN0IG5ldF9kZXZpY2UgKmRl dik7CiBzdHJ1Y3QgaXBvaWJfZGV2X3ByaXYgKmlwb2liX2ludGZfYWxsb2MoY29uc3QgY2hhciAq Zm9ybWF0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJf Y20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYwppbmRleCAxMDVl ZWJkNzdhZDQuLjliZjBjOGY1OWQ1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3Vs cC9pcG9pYi9pcG9pYl9jbS5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBv aWJfY20uYwpAQCAtMTMwMyw2ICsxMzAzLDggQEAgdm9pZCBpcG9pYl9jbV9kZXN0cm95X3R4KHN0 cnVjdCBpcG9pYl9jbV90eCAqdHgpCiAJfQogfQogCisjZGVmaW5lIFFQTl9BTkRfT1BUSU9OU19P RkZTRVQJNAorCiBzdGF0aWMgdm9pZCBpcG9pYl9jbV90eF9zdGFydChzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCiB7CiAJc3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0gY29udGFpbmVyX29m KHdvcmssIHN0cnVjdCBpcG9pYl9kZXZfcHJpdiwKQEAgLTEzMTEsNiArMTMxMyw3IEBAIHN0YXRp YyB2b2lkIGlwb2liX2NtX3R4X3N0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1 Y3QgaXBvaWJfbmVpZ2ggKm5laWdoOwogCXN0cnVjdCBpcG9pYl9jbV90eCAqcDsKIAl1bnNpZ25l ZCBsb25nIGZsYWdzOworCXN0cnVjdCBpcG9pYl9wYXRoICpwYXRoOwogCWludCByZXQ7CiAKIAlz dHJ1Y3QgaWJfc2FfcGF0aF9yZWMgcGF0aHJlYzsKQEAgLTEzMjMsNyArMTMyNiwxOSBAQCBzdGF0 aWMgdm9pZCBpcG9pYl9jbV90eF9zdGFydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCXAg PSBsaXN0X2VudHJ5KHByaXYtPmNtLnN0YXJ0X2xpc3QubmV4dCwgdHlwZW9mKCpwKSwgbGlzdCk7 CiAJCWxpc3RfZGVsX2luaXQoJnAtPmxpc3QpOwogCQluZWlnaCA9IHAtPm5laWdoOworCiAJCXFw biA9IElQT0lCX1FQTihuZWlnaC0+ZGFkZHIpOworCQkvKgorCQkgKiBBcyBsb25nIGFzIHRoZSBz ZWFyY2ggaXMgd2l0aCB0aGVzZSAyIGxvY2tzLAorCQkgKiBwYXRoIGV4aXN0ZW5jZSBpbmRpY2F0 ZXMgaXRzIHZhbGlkaXR5LgorCQkgKi8KKwkJcGF0aCA9IF9fcGF0aF9maW5kKGRldiwgbmVpZ2gt PmRhZGRyICsgUVBOX0FORF9PUFRJT05TX09GRlNFVCk7CisJCWlmICghcGF0aCkgeworCQkJcHJf aW5mbygiJXMgaWdub3JlIG5vdCB2YWxpZCBwYXRoICVwSTZcbiIsCisJCQkJX19mdW5jX18sCisJ CQkJbmVpZ2gtPmRhZGRyICsgUVBOX0FORF9PUFRJT05TX09GRlNFVCk7CisJCQlnb3RvIGZyZWVf bmVpZ2g7CisJCX0KIAkJbWVtY3B5KCZwYXRocmVjLCAmcC0+cGF0aC0+cGF0aHJlYywgc2l6ZW9m IHBhdGhyZWMpOwogCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdz KTsKQEAgLTEzMzUsNiArMTM1MCw3IEBAIHN0YXRpYyB2b2lkIGlwb2liX2NtX3R4X3N0YXJ0KHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ss IGZsYWdzKTsKIAogCQlpZiAocmV0KSB7CitmcmVlX25laWdoOgogCQkJbmVpZ2ggPSBwLT5uZWln aDsKIAkJCWlmIChuZWlnaCkgewogCQkJCW5laWdoLT5jbSA9IE5VTEw7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2liLmMgYi9kcml2ZXJzL2luZmluaWJh bmQvdWxwL2lwb2liL2lwb2liX2liLmMKaW5kZXggNmE3MDAzZGRiMGJlLi5mY2JmZGRhMGU1ODUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfaWIuYworKysg Yi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2liLmMKQEAgLTEwMzAsOCArMTAz MCwxNyBAQCBzdGF0aWMgdm9pZCBfX2lwb2liX2liX2Rldl9mbHVzaChzdHJ1Y3QgaXBvaWJfZGV2 X3ByaXYgKnByaXYsCiAJfQogCiAJaWYgKGxldmVsID09IElQT0lCX0ZMVVNIX0xJR0hUKSB7CisJ CWludCBvcGVyX3VwOwogCQlpcG9pYl9tYXJrX3BhdGhzX2ludmFsaWQoZGV2KTsKKwkJLyogU2V0 IElQb0lCIG9wZXJhdGlvbiBhcyBkb3duIHRvIHByZXZlbnQgcmFjZXMgYmV0d2VlbjoKKwkJICog dGhlIGZsdXNoIGZsb3cgd2hpY2ggbGVhdmVzIE1DRyBhbmQgb24gdGhlIGZseSBqb2lucworCQkg KiB3aGljaCBjYW4gaGFwcGVuIGR1cmluZyB0aGF0IHRpbWUuIG1jYXN0IHJlc3RhcnQgdGFzawor CQkgKiBzaG91bGQgZGVhbCB3aXRoIGpvaW4gcmVxdWVzdHMgd2UgbWlzc2VkLgorCQkgKi8KKwkJ b3Blcl91cCA9IHRlc3RfYW5kX2NsZWFyX2JpdChJUE9JQl9GTEFHX09QRVJfVVAsICZwcml2LT5m bGFncyk7CiAJCWlwb2liX21jYXN0X2Rldl9mbHVzaChkZXYpOworCQlpZiAob3Blcl91cCkKKwkJ CXNldF9iaXQoSVBPSUJfRkxBR19PUEVSX1VQLCAmcHJpdi0+ZmxhZ3MpOwogCX0KIAogCWlmIChs ZXZlbCA+PSBJUE9JQl9GTFVTSF9OT1JNQUwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJh bmQvdWxwL2lwb2liL2lwb2liX21haW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIv aXBvaWJfbWFpbi5jCmluZGV4IDdlNGE2ZWZiZjJjZS4uZGJmZThmMWU2ZDdlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYworKysgYi9kcml2ZXJz L2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYwpAQCAtMjUzLDcgKzI1Myw3IEBAIGlu dCBpcG9pYl9zZXRfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpidWYp CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaXBvaWJfcGF0aCAqX19wYXRo X2ZpbmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZ2lkKQorc3RydWN0IGlwb2liX3Bh dGggKl9fcGF0aF9maW5kKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmdpZCkKIHsKIAlz dHJ1Y3QgaXBvaWJfZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBy Yl9ub2RlICpuID0gcHJpdi0+cGF0aF90cmVlLnJiX25vZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2lucHV0L2pveXN0aWNrL3hwYWQuYyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2sveHBhZC5jCmlu ZGV4IGUyYzY1NTk2NDcxMS4uYTEzN2EzNzM4MTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0 L2pveXN0aWNrL3hwYWQuYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL3hwYWQuYwpAQCAt ODgzLDYgKzg4Myw5IEBAIHN0YXRpYyBpbnQgeHBhZF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFj ZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkCiAJc3RydWN0IHVzYl9lbmRw b2ludF9kZXNjcmlwdG9yICplcF9pcnFfaW47CiAJaW50IGksIGVycm9yOwogCisJaWYgKGludGYt PmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJOdW1FbmRwb2ludHMgIT0gMikKKwkJcmV0dXJuIC1FTk9E RVY7CisKIAlmb3IgKGkgPSAwOyB4cGFkX2RldmljZVtpXS5pZFZlbmRvcjsgaSsrKSB7CiAJCWlm ICgobGUxNl90b19jcHUodWRldi0+ZGVzY3JpcHRvci5pZFZlbmRvcikgPT0geHBhZF9kZXZpY2Vb aV0uaWRWZW5kb3IpICYmCiAJCSAgICAobGUxNl90b19jcHUodWRldi0+ZGVzY3JpcHRvci5pZFBy b2R1Y3QpID09IHhwYWRfZGV2aWNlW2ldLmlkUHJvZHVjdCkpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2lucHV0L2tleWJvYXJkL3RlZ3JhLWtiYy5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC90ZWdy YS1rYmMuYwppbmRleCA5NzU3YTU4YmM4OTcuLjVkMzliOTY2ZGQyOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9pbnB1dC9rZXlib2FyZC90ZWdyYS1rYmMuYworKysgYi9kcml2ZXJzL2lucHV0L2tleWJv YXJkL3RlZ3JhLWtiYy5jCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIGludCB0ZWdyYV9rYmNf c3RhcnQoc3RydWN0IHRlZ3JhX2tiYyAqa2JjKQogCS8qIFJlc2V0IHRoZSBLQkMgY29udHJvbGxl ciB0byBjbGVhciBhbGwgcHJldmlvdXMgc3RhdHVzLiovCiAJcmVzZXRfY29udHJvbF9hc3NlcnQo a2JjLT5yc3QpOwogCXVkZWxheSgxMDApOwotCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGtiYy0+cnN0 KTsKKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGtiYy0+cnN0KTsKIAl1ZGVsYXkoMTAwKTsKIAog CXRlZ3JhX2tiY19jb25maWdfcGlucyhrYmMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9z ZXJpby9pODA0Mi5jIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi5jCmluZGV4IGViNzk2ZmZm OWU2Mi4uOWEwY2M1YjU1NjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQy LmMKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi5jCkBAIC0xMjMwLDYgKzEyMzAsNyBA QCBzdGF0aWMgaW50IF9faW5pdCBpODA0Ml9jcmVhdGVfa2JkX3BvcnQodm9pZCkKIAlzZXJpby0+ c3RhcnQJCT0gaTgwNDJfc3RhcnQ7CiAJc2VyaW8tPnN0b3AJCT0gaTgwNDJfc3RvcDsKIAlzZXJp by0+Y2xvc2UJCT0gaTgwNDJfcG9ydF9jbG9zZTsKKwlzZXJpby0+cHMyX2NtZF9tdXRleAk9ICZp ODA0Ml9tdXRleDsKIAlzZXJpby0+cG9ydF9kYXRhCT0gcG9ydDsKIAlzZXJpby0+ZGV2LnBhcmVu dAk9ICZpODA0Ml9wbGF0Zm9ybV9kZXZpY2UtPmRldjsKIAlzdHJsY3B5KHNlcmlvLT5uYW1lLCAi aTgwNDIgS0JEIHBvcnQiLCBzaXplb2Yoc2VyaW8tPm5hbWUpKTsKQEAgLTEyNTcsNiArMTI1OCw3 IEBAIHN0YXRpYyBpbnQgX19pbml0IGk4MDQyX2NyZWF0ZV9hdXhfcG9ydChpbnQgaWR4KQogCXNl cmlvLT53cml0ZQkJPSBpODA0Ml9hdXhfd3JpdGU7CiAJc2VyaW8tPnN0YXJ0CQk9IGk4MDQyX3N0 YXJ0OwogCXNlcmlvLT5zdG9wCQk9IGk4MDQyX3N0b3A7CisJc2VyaW8tPnBzMl9jbWRfbXV0ZXgJ PSAmaTgwNDJfbXV0ZXg7CiAJc2VyaW8tPnBvcnRfZGF0YQk9IHBvcnQ7CiAJc2VyaW8tPmRldi5w YXJlbnQJPSAmaTgwNDJfcGxhdGZvcm1fZGV2aWNlLT5kZXY7CiAJaWYgKGlkeCA8IDApIHsKQEAg LTEzMjEsMjEgKzEzMjMsNiBAQCBzdGF0aWMgdm9pZCBpODA0Ml91bnJlZ2lzdGVyX3BvcnRzKHZv aWQpCiAJfQogfQogCi0vKgotICogQ2hlY2tzIHdoZXRoZXIgcG9ydCBiZWxvbmdzIHRvIGk4MDQy IGNvbnRyb2xsZXIuCi0gKi8KLWJvb2wgaTgwNDJfY2hlY2tfcG9ydF9vd25lcihjb25zdCBzdHJ1 Y3Qgc2VyaW8gKnBvcnQpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgSTgwNDJfTlVN X1BPUlRTOyBpKyspCi0JCWlmIChpODA0Ml9wb3J0c1tpXS5zZXJpbyA9PSBwb3J0KQotCQkJcmV0 dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci1FWFBPUlRfU1lNQk9MKGk4MDQyX2NoZWNr X3BvcnRfb3duZXIpOwotCiBzdGF0aWMgdm9pZCBpODA0Ml9mcmVlX2lycXModm9pZCkKIHsKIAlp ZiAoaTgwNDJfYXV4X2lycV9yZWdpc3RlcmVkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9z ZXJpby9saWJwczIuYyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vbGlicHMyLmMKaW5kZXggNzU1MTY5 OTZkYjIwLi5kZWQwYzZmNjVjOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vbGli cHMyLmMKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9saWJwczIuYwpAQCAtNTYsMTkgKzU2LDE3 IEBAIEVYUE9SVF9TWU1CT0wocHMyX3NlbmRieXRlKTsKIAogdm9pZCBwczJfYmVnaW5fY29tbWFu ZChzdHJ1Y3QgcHMyZGV2ICpwczJkZXYpCiB7Ci0JbXV0ZXhfbG9jaygmcHMyZGV2LT5jbWRfbXV0 ZXgpOworCXN0cnVjdCBtdXRleCAqbSA9IHBzMmRldi0+c2VyaW8tPnBzMl9jbWRfbXV0ZXggPzog JnBzMmRldi0+Y21kX211dGV4OwogCi0JaWYgKGk4MDQyX2NoZWNrX3BvcnRfb3duZXIocHMyZGV2 LT5zZXJpbykpCi0JCWk4MDQyX2xvY2tfY2hpcCgpOworCW11dGV4X2xvY2sobSk7CiB9CiBFWFBP UlRfU1lNQk9MKHBzMl9iZWdpbl9jb21tYW5kKTsKIAogdm9pZCBwczJfZW5kX2NvbW1hbmQoc3Ry dWN0IHBzMmRldiAqcHMyZGV2KQogewotCWlmIChpODA0Ml9jaGVja19wb3J0X293bmVyKHBzMmRl di0+c2VyaW8pKQotCQlpODA0Ml91bmxvY2tfY2hpcCgpOworCXN0cnVjdCBtdXRleCAqbSA9IHBz MmRldi0+c2VyaW8tPnBzMl9jbWRfbXV0ZXggPzogJnBzMmRldi0+Y21kX211dGV4OwogCi0JbXV0 ZXhfdW5sb2NrKCZwczJkZXYtPmNtZF9tdXRleCk7CisJbXV0ZXhfdW5sb2NrKG0pOwogfQogRVhQ T1JUX1NZTUJPTChwczJfZW5kX2NvbW1hbmQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2Jj YWNoZS9zdXBlci5jIGIvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYwppbmRleCAzYjI2MGM2N2Ri NzUuLmFmN2JhZTdiNGRhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYwor KysgYi9kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jCkBAIC0xODI5LDcgKzE4MjksNyBAQCBzdGF0 aWMgaW50IGNhY2hlX2FsbG9jKHN0cnVjdCBjYWNoZV9zYiAqc2IsIHN0cnVjdCBjYWNoZSAqY2Ep CiAJZnJlZSA9IHJvdW5kdXBfcG93X29mX3R3byhjYS0+c2IubmJ1Y2tldHMpID4+IDEwOwogCiAJ aWYgKCFpbml0X2ZpZm8oJmNhLT5mcmVlW1JFU0VSVkVfQlRSRUVdLCA4LCBHRlBfS0VSTkVMKSB8 fAotCSAgICAhaW5pdF9maWZvKCZjYS0+ZnJlZVtSRVNFUlZFX1BSSU9dLCBwcmlvX2J1Y2tldHMo Y2EpLCBHRlBfS0VSTkVMKSB8fAorCSAgICAhaW5pdF9maWZvX2V4YWN0KCZjYS0+ZnJlZVtSRVNF UlZFX1BSSU9dLCBwcmlvX2J1Y2tldHMoY2EpLCBHRlBfS0VSTkVMKSB8fAogCSAgICAhaW5pdF9m aWZvKCZjYS0+ZnJlZVtSRVNFUlZFX01PVklOR0dDXSwgZnJlZSwgR0ZQX0tFUk5FTCkgfHwKIAkg ICAgIWluaXRfZmlmbygmY2EtPmZyZWVbUkVTRVJWRV9OT05FXSwgZnJlZSwgR0ZQX0tFUk5FTCkg fHwKIAkgICAgIWluaXRfZmlmbygmY2EtPmZyZWVfaW5jLAlmcmVlIDw8IDIsIEdGUF9LRVJORUwp IHx8CkBAIC0xODU0LDcgKzE4NTQsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2NhY2hlKHN0cnVj dCBjYWNoZV9zYiAqc2IsIHN0cnVjdCBwYWdlICpzYl9wYWdlLAogCQkJCSAgc3RydWN0IGJsb2Nr X2RldmljZSAqYmRldiwgc3RydWN0IGNhY2hlICpjYSkKIHsKIAljaGFyIG5hbWVbQkRFVk5BTUVf U0laRV07Ci0JY29uc3QgY2hhciAqZXJyID0gTlVMTDsKKwljb25zdCBjaGFyICplcnIgPSBOVUxM OyAvKiBtdXN0IGJlIHNldCBmb3IgYW55IGVycm9yIGNhc2UgKi8KIAlpbnQgcmV0ID0gMDsKIAog CW1lbWNweSgmY2EtPnNiLCBzYiwgc2l6ZW9mKHN0cnVjdCBjYWNoZV9zYikpOwpAQCAtMTg3MSw4 ICsxODcxLDEzIEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfY2FjaGUoc3RydWN0IGNhY2hlX3NiICpz Yiwgc3RydWN0IHBhZ2UgKnNiX3BhZ2UsCiAJCWNhLT5kaXNjYXJkID0gQ0FDSEVfRElTQ0FSRCgm Y2EtPnNiKTsKIAogCXJldCA9IGNhY2hlX2FsbG9jKHNiLCBjYSk7Ci0JaWYgKHJldCAhPSAwKQor CWlmIChyZXQgIT0gMCkgeworCQlpZiAocmV0ID09IC1FTk9NRU0pCisJCQllcnIgPSAiY2FjaGVf YWxsb2MoKTogLUVOT01FTSI7CisJCWVsc2UKKwkJCWVyciA9ICJjYWNoZV9hbGxvYygpOiB1bmtu b3duIGVycm9yIjsKIAkJZ290byBlcnI7CisJfQogCiAJaWYgKGtvYmplY3RfYWRkKCZjYS0+a29i aiwgJnBhcnRfdG9fZGV2KGJkZXYtPmJkX3BhcnQpLT5rb2JqLCAiYmNhY2hlIikpIHsKIAkJZXJy ID0gImVycm9yIGNhbGxpbmcga29iamVjdF9hZGQiOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9k bS1jcnlwdC5jIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCmluZGV4IGY4NzIyMzA1NjY5Ni4uMzRl N2RiMWU3MzA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNyeXB0LmMKKysrIGIvZHJpdmVy cy9tZC9kbS1jcnlwdC5jCkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBzdGF0aWMgaW50IGNyeXB0X2Fs bG9jX3RmbXMoc3RydWN0IGNyeXB0X2NvbmZpZyAqY2MsIGNoYXIgKmNpcGhlcm1vZGUpCiAJdW5z aWduZWQgaTsKIAlpbnQgZXJyOwogCi0JY2MtPnRmbXMgPSBrbWFsbG9jKGNjLT50Zm1zX2NvdW50 ICogc2l6ZW9mKHN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAqKSwKKwljYy0+dGZtcyA9IGt6YWxs b2MoY2MtPnRmbXNfY291bnQgKiBzaXplb2Yoc3RydWN0IGNyeXB0b19hYmxrY2lwaGVyICopLAog CQkJICAgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjYy0+dGZtcykKIAkJcmV0dXJuIC1FTk9NRU07CmRp ZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWZsYWtleS5jIGIvZHJpdmVycy9tZC9kbS1mbGFrZXku YwppbmRleCBiMjU3ZTQ2ODc2ZDMuLjBmNWUxODIwYzkyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9kbS1mbGFrZXkuYworKysgYi9kcml2ZXJzL21kL2RtLWZsYWtleS5jCkBAIC0yODcsMTAgKzI4 NywxNiBAQCBzdGF0aWMgaW50IGZsYWtleV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVj dCBiaW8gKmJpbykKIAkJcGItPmJpb19zdWJtaXR0ZWQgPSB0cnVlOwogCiAJCS8qCi0JCSAqIE1h cCByZWFkcyBhcyBub3JtYWwuCisJCSAqIE1hcCByZWFkcyBhcyBub3JtYWwgb25seSBpZiBjb3Jy dXB0X2Jpb19ieXRlIHNldC4KIAkJICovCi0JCWlmIChiaW9fZGF0YV9kaXIoYmlvKSA9PSBSRUFE KQotCQkJZ290byBtYXBfYmlvOworCQlpZiAoYmlvX2RhdGFfZGlyKGJpbykgPT0gUkVBRCkgewor CQkJLyogSWYgZmxhZ3Mgd2VyZSBzcGVjaWZpZWQsIG9ubHkgY29ycnVwdCB0aG9zZSB0aGF0IG1h dGNoLiAqLworCQkJaWYgKGZjLT5jb3JydXB0X2Jpb19ieXRlICYmIChmYy0+Y29ycnVwdF9iaW9f cncgPT0gUkVBRCkgJiYKKwkJCSAgICBhbGxfY29ycnVwdF9iaW9fZmxhZ3NfbWF0Y2goYmlvLCBm YykpCisJCQkJZ290byBtYXBfYmlvOworCQkJZWxzZQorCQkJCXJldHVybiAtRUlPOworCQl9CiAK IAkJLyoKIAkJICogRHJvcCB3cml0ZXM/CkBAIC0zMjgsMTIgKzMzNCwxMyBAQCBzdGF0aWMgaW50 IGZsYWtleV9lbmRfaW8oc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbywgaW50 IGVycm9yKQogCiAJLyoKIAkgKiBDb3JydXB0IHN1Y2Nlc3NmdWwgUkVBRHMgd2hpbGUgaW4gZG93 biBzdGF0ZS4KLQkgKiBJZiBmbGFncyB3ZXJlIHNwZWNpZmllZCwgb25seSBjb3JydXB0IHRob3Nl IHRoYXQgbWF0Y2guCiAJICovCi0JaWYgKGZjLT5jb3JydXB0X2Jpb19ieXRlICYmICFlcnJvciAm JiBwYi0+YmlvX3N1Ym1pdHRlZCAmJgotCSAgICAoYmlvX2RhdGFfZGlyKGJpbykgPT0gUkVBRCkg JiYgKGZjLT5jb3JydXB0X2Jpb19ydyA9PSBSRUFEKSAmJgotCSAgICBhbGxfY29ycnVwdF9iaW9f ZmxhZ3NfbWF0Y2goYmlvLCBmYykpCi0JCWNvcnJ1cHRfYmlvX2RhdGEoYmlvLCBmYyk7CisJaWYg KCFlcnJvciAmJiBwYi0+YmlvX3N1Ym1pdHRlZCAmJiAoYmlvX2RhdGFfZGlyKGJpbykgPT0gUkVB RCkpIHsKKwkJaWYgKGZjLT5jb3JydXB0X2Jpb19ieXRlKQorCQkJY29ycnVwdF9iaW9fZGF0YShi aW8sIGZjKTsKKwkJZWxzZQorCQkJcmV0dXJuIC1FSU87CisJfQogCiAJcmV0dXJuIGVycm9yOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmItY29yZS9kdmJfcmluZ2J1ZmZlci5jIGIv ZHJpdmVycy9tZWRpYS9kdmItY29yZS9kdmJfcmluZ2J1ZmZlci5jCmluZGV4IGE1NzEyY2Q3YzY1 Zi4uN2RmN2ZiMzczOGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1jb3JlL2R2Yl9y aW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmItY29yZS9kdmJfcmluZ2J1ZmZlci5j CkBAIC01NSw3ICs1NSwxMyBAQCB2b2lkIGR2Yl9yaW5nYnVmZmVyX2luaXQoc3RydWN0IGR2Yl9y aW5nYnVmZmVyICpyYnVmLCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQogCiBpbnQgZHZiX3Jpbmdi dWZmZXJfZW1wdHkoc3RydWN0IGR2Yl9yaW5nYnVmZmVyICpyYnVmKQogewotCXJldHVybiAocmJ1 Zi0+cHJlYWQ9PXJidWYtPnB3cml0ZSk7CisJLyogc21wX2xvYWRfYWNxdWlyZSgpIHRvIGxvYWQg d3JpdGUgcG9pbnRlciBvbiByZWFkZXIgc2lkZQorCSAqIHRoaXMgcGFpcnMgd2l0aCBzbXBfc3Rv cmVfcmVsZWFzZSgpIGluIGR2Yl9yaW5nYnVmZmVyX3dyaXRlKCksCisJICogZHZiX3JpbmdidWZm ZXJfd3JpdGVfdXNlcigpLCBvciBkdmJfcmluZ2J1ZmZlcl9yZXNldCgpCisJICoKKwkgKiBmb3Ig bWVtb3J5IGJhcnJpZXJzIGFsc28gc2VlIERvY3VtZW50YXRpb24vY2lyY3VsYXItYnVmZmVycy50 eHQKKwkgKi8KKwlyZXR1cm4gKHJidWYtPnByZWFkID09IHNtcF9sb2FkX2FjcXVpcmUoJnJidWYt PnB3cml0ZSkpOwogfQogCiAKQEAgLTY0LDcgKzcwLDEyIEBAIHNzaXplX3QgZHZiX3JpbmdidWZm ZXJfZnJlZShzdHJ1Y3QgZHZiX3JpbmdidWZmZXIgKnJidWYpCiB7CiAJc3NpemVfdCBmcmVlOwog Ci0JZnJlZSA9IHJidWYtPnByZWFkIC0gcmJ1Zi0+cHdyaXRlOworCS8qIEFDQ0VTU19PTkNFKCkg dG8gbG9hZCByZWFkIHBvaW50ZXIgb24gd3JpdGVyIHNpZGUKKwkgKiB0aGlzIHBhaXJzIHdpdGgg c21wX3N0b3JlX3JlbGVhc2UoKSBpbiBkdmJfcmluZ2J1ZmZlcl9yZWFkKCksCisJICogZHZiX3Jp bmdidWZmZXJfcmVhZF91c2VyKCksIGR2Yl9yaW5nYnVmZmVyX2ZsdXNoKCksCisJICogb3IgZHZi X3JpbmdidWZmZXJfcmVzZXQoKQorCSAqLworCWZyZWUgPSBBQ0NFU1NfT05DRShyYnVmLT5wcmVh ZCkgLSByYnVmLT5wd3JpdGU7CiAJaWYgKGZyZWUgPD0gMCkKIAkJZnJlZSArPSByYnVmLT5zaXpl OwogCXJldHVybiBmcmVlLTE7CkBAIC03Niw3ICs4NywxMSBAQCBzc2l6ZV90IGR2Yl9yaW5nYnVm ZmVyX2F2YWlsKHN0cnVjdCBkdmJfcmluZ2J1ZmZlciAqcmJ1ZikKIHsKIAlzc2l6ZV90IGF2YWls OwogCi0JYXZhaWwgPSByYnVmLT5wd3JpdGUgLSByYnVmLT5wcmVhZDsKKwkvKiBzbXBfbG9hZF9h Y3F1aXJlKCkgdG8gbG9hZCB3cml0ZSBwb2ludGVyIG9uIHJlYWRlciBzaWRlCisJICogdGhpcyBw YWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gZHZiX3JpbmdidWZmZXJfd3JpdGUoKSwK KwkgKiBkdmJfcmluZ2J1ZmZlcl93cml0ZV91c2VyKCksIG9yIGR2Yl9yaW5nYnVmZmVyX3Jlc2V0 KCkKKwkgKi8KKwlhdmFpbCA9IHNtcF9sb2FkX2FjcXVpcmUoJnJidWYtPnB3cml0ZSkgLSByYnVm LT5wcmVhZDsKIAlpZiAoYXZhaWwgPCAwKQogCQlhdmFpbCArPSByYnVmLT5zaXplOwogCXJldHVy biBhdmFpbDsKQEAgLTg2LDE0ICsxMDEsMjUgQEAgc3NpemVfdCBkdmJfcmluZ2J1ZmZlcl9hdmFp bChzdHJ1Y3QgZHZiX3JpbmdidWZmZXIgKnJidWYpCiAKIHZvaWQgZHZiX3JpbmdidWZmZXJfZmx1 c2goc3RydWN0IGR2Yl9yaW5nYnVmZmVyICpyYnVmKQogewotCXJidWYtPnByZWFkID0gcmJ1Zi0+ cHdyaXRlOworCS8qIGR2Yl9yaW5nYnVmZmVyX2ZsdXNoKCkgY291bnRzIGFzIHJlYWQgb3BlcmF0 aW9uCisJICogc21wX2xvYWRfYWNxdWlyZSgpIHRvIGxvYWQgd3JpdGUgcG9pbnRlcgorCSAqIHNt cF9zdG9yZV9yZWxlYXNlKCkgdG8gdXBkYXRlIHJlYWQgcG9pbnRlciwgdGhpcyBlbnN1cmVzIHRo YXQgdGhlCisJICogY29ycmVjdCBwb2ludGVyIGlzIHZpc2libGUgZm9yIHN1YnNlcXVlbnQgZHZi X3JpbmdidWZmZXJfZnJlZSgpCisJICogY2FsbHMgb24gb3RoZXIgY3B1IGNvcmVzCisJICovCisJ c21wX3N0b3JlX3JlbGVhc2UoJnJidWYtPnByZWFkLCBzbXBfbG9hZF9hY3F1aXJlKCZyYnVmLT5w d3JpdGUpKTsKIAlyYnVmLT5lcnJvciA9IDA7CiB9CiBFWFBPUlRfU1lNQk9MKGR2Yl9yaW5nYnVm ZmVyX2ZsdXNoKTsKIAogdm9pZCBkdmJfcmluZ2J1ZmZlcl9yZXNldChzdHJ1Y3QgZHZiX3Jpbmdi dWZmZXIgKnJidWYpCiB7Ci0JcmJ1Zi0+cHJlYWQgPSByYnVmLT5wd3JpdGUgPSAwOworCS8qIGR2 Yl9yaW5nYnVmZmVyX3Jlc2V0KCkgY291bnRzIGFzIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbgor CSAqIHNtcF9zdG9yZV9yZWxlYXNlKCkgdG8gdXBkYXRlIHJlYWQgcG9pbnRlcgorCSAqLworCXNt cF9zdG9yZV9yZWxlYXNlKCZyYnVmLT5wcmVhZCwgMCk7CisJLyogc21wX3N0b3JlX3JlbGVhc2Uo KSB0byB1cGRhdGUgd3JpdGUgcG9pbnRlciAqLworCXNtcF9zdG9yZV9yZWxlYXNlKCZyYnVmLT5w d3JpdGUsIDApOwogCXJidWYtPmVycm9yID0gMDsKIH0KIApAQCAtMTE5LDEyICsxNDUsMTcgQEAg c3NpemVfdCBkdmJfcmluZ2J1ZmZlcl9yZWFkX3VzZXIoc3RydWN0IGR2Yl9yaW5nYnVmZmVyICpy YnVmLCB1OCBfX3VzZXIgKmJ1Ziwgc2kKIAkJCXJldHVybiAtRUZBVUxUOwogCQlidWYgKz0gc3Bs aXQ7CiAJCXRvZG8gLT0gc3BsaXQ7Ci0JCXJidWYtPnByZWFkID0gMDsKKwkJLyogc21wX3N0b3Jl X3JlbGVhc2UoKSBmb3IgcmVhZCBwb2ludGVyIHVwZGF0ZSB0byBlbnN1cmUKKwkJICogdGhhdCBi dWYgaXMgbm90IG92ZXJ3cml0dGVuIHVudGlsIHJlYWQgaXMgY29tcGxldGUsCisJCSAqIHRoaXMg cGFpcnMgd2l0aCBBQ0NFU1NfT05DRSgpIGluIGR2Yl9yaW5nYnVmZmVyX2ZyZWUoKQorCQkgKi8K KwkJc21wX3N0b3JlX3JlbGVhc2UoJnJidWYtPnByZWFkLCAwKTsKIAl9CiAJaWYgKGNvcHlfdG9f dXNlcihidWYsIHJidWYtPmRhdGErcmJ1Zi0+cHJlYWQsIHRvZG8pKQogCQlyZXR1cm4gLUVGQVVM VDsKIAotCXJidWYtPnByZWFkID0gKHJidWYtPnByZWFkICsgdG9kbykgJSByYnVmLT5zaXplOwor CS8qIHNtcF9zdG9yZV9yZWxlYXNlKCkgdG8gdXBkYXRlIHJlYWQgcG9pbnRlciwgc2VlIGFib3Zl ICovCisJc21wX3N0b3JlX3JlbGVhc2UoJnJidWYtPnByZWFkLCAocmJ1Zi0+cHJlYWQgKyB0b2Rv KSAlIHJidWYtPnNpemUpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTEzOSwxMSArMTcwLDE2IEBA IHZvaWQgZHZiX3JpbmdidWZmZXJfcmVhZChzdHJ1Y3QgZHZiX3JpbmdidWZmZXIgKnJidWYsIHU4 ICpidWYsIHNpemVfdCBsZW4pCiAJCW1lbWNweShidWYsIHJidWYtPmRhdGErcmJ1Zi0+cHJlYWQs IHNwbGl0KTsKIAkJYnVmICs9IHNwbGl0OwogCQl0b2RvIC09IHNwbGl0OwotCQlyYnVmLT5wcmVh ZCA9IDA7CisJCS8qIHNtcF9zdG9yZV9yZWxlYXNlKCkgZm9yIHJlYWQgcG9pbnRlciB1cGRhdGUg dG8gZW5zdXJlCisJCSAqIHRoYXQgYnVmIGlzIG5vdCBvdmVyd3JpdHRlbiB1bnRpbCByZWFkIGlz IGNvbXBsZXRlLAorCQkgKiB0aGlzIHBhaXJzIHdpdGggQUNDRVNTX09OQ0UoKSBpbiBkdmJfcmlu Z2J1ZmZlcl9mcmVlKCkKKwkJICovCisJCXNtcF9zdG9yZV9yZWxlYXNlKCZyYnVmLT5wcmVhZCwg MCk7CiAJfQogCW1lbWNweShidWYsIHJidWYtPmRhdGErcmJ1Zi0+cHJlYWQsIHRvZG8pOwogCi0J cmJ1Zi0+cHJlYWQgPSAocmJ1Zi0+cHJlYWQgKyB0b2RvKSAlIHJidWYtPnNpemU7CisJLyogc21w X3N0b3JlX3JlbGVhc2UoKSB0byB1cGRhdGUgcmVhZCBwb2ludGVyLCBzZWUgYWJvdmUgKi8KKwlz bXBfc3RvcmVfcmVsZWFzZSgmcmJ1Zi0+cHJlYWQsIChyYnVmLT5wcmVhZCArIHRvZG8pICUgcmJ1 Zi0+c2l6ZSk7CiB9CiAKIApAQCAtMTU4LDEwICsxOTQsNDcgQEAgc3NpemVfdCBkdmJfcmluZ2J1 ZmZlcl93cml0ZShzdHJ1Y3QgZHZiX3JpbmdidWZmZXIgKnJidWYsIGNvbnN0IHU4ICpidWYsIHNp emVfdAogCQltZW1jcHkocmJ1Zi0+ZGF0YStyYnVmLT5wd3JpdGUsIGJ1Ziwgc3BsaXQpOwogCQli dWYgKz0gc3BsaXQ7CiAJCXRvZG8gLT0gc3BsaXQ7Ci0JCXJidWYtPnB3cml0ZSA9IDA7CisJCS8q IHNtcF9zdG9yZV9yZWxlYXNlKCkgZm9yIHdyaXRlIHBvaW50ZXIgdXBkYXRlIHRvIGVuc3VyZSB0 aGF0CisJCSAqIHdyaXR0ZW4gZGF0YSBpcyB2aXNpYmxlIG9uIG90aGVyIGNwdSBjb3JlcyBiZWZv cmUgdGhlIHBvaW50ZXIKKwkJICogdXBkYXRlLCB0aGlzIHBhaXJzIHdpdGggc21wX2xvYWRfYWNx dWlyZSgpIGluCisJCSAqIGR2Yl9yaW5nYnVmZmVyX2VtcHR5KCkgb3IgZHZiX3JpbmdidWZmZXJf YXZhaWwoKQorCQkgKi8KKwkJc21wX3N0b3JlX3JlbGVhc2UoJnJidWYtPnB3cml0ZSwgMCk7CiAJ fQogCW1lbWNweShyYnVmLT5kYXRhK3JidWYtPnB3cml0ZSwgYnVmLCB0b2RvKTsKLQlyYnVmLT5w d3JpdGUgPSAocmJ1Zi0+cHdyaXRlICsgdG9kbykgJSByYnVmLT5zaXplOworCS8qIHNtcF9zdG9y ZV9yZWxlYXNlKCkgZm9yIHdyaXRlIHBvaW50ZXIgdXBkYXRlLCBzZWUgYWJvdmUgKi8KKwlzbXBf c3RvcmVfcmVsZWFzZSgmcmJ1Zi0+cHdyaXRlLCAocmJ1Zi0+cHdyaXRlICsgdG9kbykgJSByYnVm LT5zaXplKTsKKworCXJldHVybiBsZW47Cit9CisKK3NzaXplX3QgZHZiX3JpbmdidWZmZXJfd3Jp dGVfdXNlcihzdHJ1Y3QgZHZiX3JpbmdidWZmZXIgKnJidWYsCisJCQkJICBjb25zdCB1OCBfX3Vz ZXIgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlpbnQgc3RhdHVzOworCXNpemVfdCB0b2RvID0gbGVu OworCXNpemVfdCBzcGxpdDsKKworCXNwbGl0ID0gKHJidWYtPnB3cml0ZSArIGxlbiA+IHJidWYt PnNpemUpID8gcmJ1Zi0+c2l6ZSAtIHJidWYtPnB3cml0ZSA6IDA7CisKKwlpZiAoc3BsaXQgPiAw KSB7CisJCXN0YXR1cyA9IGNvcHlfZnJvbV91c2VyKHJidWYtPmRhdGErcmJ1Zi0+cHdyaXRlLCBi dWYsIHNwbGl0KTsKKwkJaWYgKHN0YXR1cykKKwkJCXJldHVybiBsZW4gLSB0b2RvOworCQlidWYg Kz0gc3BsaXQ7CisJCXRvZG8gLT0gc3BsaXQ7CisJCS8qIHNtcF9zdG9yZV9yZWxlYXNlKCkgZm9y IHdyaXRlIHBvaW50ZXIgdXBkYXRlIHRvIGVuc3VyZSB0aGF0CisJCSAqIHdyaXR0ZW4gZGF0YSBp cyB2aXNpYmxlIG9uIG90aGVyIGNwdSBjb3JlcyBiZWZvcmUgdGhlIHBvaW50ZXIKKwkJICogdXBk YXRlLCB0aGlzIHBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpIGluCisJCSAqIGR2Yl9yaW5n YnVmZmVyX2VtcHR5KCkgb3IgZHZiX3JpbmdidWZmZXJfYXZhaWwoKQorCQkgKi8KKwkJc21wX3N0 b3JlX3JlbGVhc2UoJnJidWYtPnB3cml0ZSwgMCk7CisJfQorCXN0YXR1cyA9IGNvcHlfZnJvbV91 c2VyKHJidWYtPmRhdGErcmJ1Zi0+cHdyaXRlLCBidWYsIHRvZG8pOworCWlmIChzdGF0dXMpCisJ CXJldHVybiBsZW4gLSB0b2RvOworCS8qIHNtcF9zdG9yZV9yZWxlYXNlKCkgZm9yIHdyaXRlIHBv aW50ZXIgdXBkYXRlLCBzZWUgYWJvdmUgKi8KKwlzbXBfc3RvcmVfcmVsZWFzZSgmcmJ1Zi0+cHdy aXRlLCAocmJ1Zi0+cHdyaXRlICsgdG9kbykgJSByYnVmLT5zaXplKTsKIAogCXJldHVybiBsZW47 CiB9CkBAIC0yOTcsMyArMzcwLDQgQEAgRVhQT1JUX1NZTUJPTChkdmJfcmluZ2J1ZmZlcl9mbHVz aF9zcGlubG9ja193YWtldXApOwogRVhQT1JUX1NZTUJPTChkdmJfcmluZ2J1ZmZlcl9yZWFkX3Vz ZXIpOwogRVhQT1JUX1NZTUJPTChkdmJfcmluZ2J1ZmZlcl9yZWFkKTsKIEVYUE9SVF9TWU1CT0wo ZHZiX3JpbmdidWZmZXJfd3JpdGUpOworRVhQT1JUX1NZTUJPTChkdmJfcmluZ2J1ZmZlcl93cml0 ZV91c2VyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiLWNvcmUvZHZiX3JpbmdidWZm ZXIuaCBiL2RyaXZlcnMvbWVkaWEvZHZiLWNvcmUvZHZiX3JpbmdidWZmZXIuaAppbmRleCA0MWYw NGRhZTY5YjYuLjllMWUxMWI3YzM5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmItY29y ZS9kdmJfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiLWNvcmUvZHZiX3Jpbmdi dWZmZXIuaApAQCAtMTMzLDYgKzEzMyw4IEBAIGV4dGVybiB2b2lkIGR2Yl9yaW5nYnVmZmVyX3Jl YWQoc3RydWN0IGR2Yl9yaW5nYnVmZmVyICpyYnVmLAogKi8KIGV4dGVybiBzc2l6ZV90IGR2Yl9y aW5nYnVmZmVyX3dyaXRlKHN0cnVjdCBkdmJfcmluZ2J1ZmZlciAqcmJ1ZiwgY29uc3QgdTggKmJ1 ZiwKIAkJCQkgICAgc2l6ZV90IGxlbik7CitleHRlcm4gc3NpemVfdCBkdmJfcmluZ2J1ZmZlcl93 cml0ZV91c2VyKHN0cnVjdCBkdmJfcmluZ2J1ZmZlciAqcmJ1ZiwKKwkJCQkgICAgICAgICBjb25z dCB1OCBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbik7CiAKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BjaS9uZ2VuZS9uZ2VuZS1kdmIuYyBiL2RyaXZlcnMvbWVkaWEvcGNpL25nZW5l L25nZW5lLWR2Yi5jCmluZGV4IGZjYjE2YTYxNWFhYi4uMzI2M2Q3MWI0ODA4IDEwMDY0NAotLS0g YS9kcml2ZXJzL21lZGlhL3BjaS9uZ2VuZS9uZ2VuZS1kdmIuYworKysgYi9kcml2ZXJzL21lZGlh L3BjaS9uZ2VuZS9uZ2VuZS1kdmIuYwpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgc3NpemVfdCB0 c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmLAogCQkJCSAgICAgKCZk ZXYtPnRzb3V0X3JidWYpID49IGNvdW50KSA8IDApCiAJCXJldHVybiAwOwogCi0JZHZiX3Jpbmdi dWZmZXJfd3JpdGUoJmRldi0+dHNvdXRfcmJ1ZiwgYnVmLCBjb3VudCk7CisJZHZiX3JpbmdidWZm ZXJfd3JpdGVfdXNlcigmZGV2LT50c291dF9yYnVmLCBidWYsIGNvdW50KTsKIAogCXJldHVybiBj b3VudDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vczVwLW1mYy9zNXBf bWZjLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3M1cC1tZmMvczVwX21mYy5jCmluZGV4IDQx NzIzMTgwZDEwYy4uMTljMjVlMDI0NWQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3M1cC1tZmMvczVwX21mYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vczVwLW1m Yy9zNXBfbWZjLmMKQEAgLTEwMDMsNiArMTAwMywxMSBAQCBzdGF0aWMgaW50IG1hdGNoX2NoaWxk KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKIAlyZXR1cm4gIXN0cmNtcChkZXZfbmFt ZShkZXYpLCAoY2hhciAqKWRhdGEpOwogfQogCitzdGF0aWMgdm9pZCBzNXBfbWZjX21lbWRldl9y ZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlkbWFfcmVsZWFzZV9kZWNsYXJlZF9tZW1v cnkoZGV2KTsKK30KKwogc3RhdGljIHZvaWQgKm1mY19nZXRfZHJ2X2RhdGEoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldik7CiAKIHN0YXRpYyBpbnQgczVwX21mY19hbGxvY19tZW1kZXZzKHN0 cnVjdCBzNXBfbWZjX2RldiAqZGV2KQpAQCAtMTAxNSw2ICsxMDIwLDkgQEAgc3RhdGljIGludCBz NXBfbWZjX2FsbG9jX21lbWRldnMoc3RydWN0IHM1cF9tZmNfZGV2ICpkZXYpCiAJCW1mY19lcnIo Ik5vdCBlbm91Z2ggbWVtb3J5XG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQorCisJZGV2X3Nl dF9uYW1lKGRldi0+bWVtX2Rldl9sLCAiJXMiLCAiczVwLW1mYy1sIik7CisJZGV2LT5tZW1fZGV2 X2wtPnJlbGVhc2UgPSBzNXBfbWZjX21lbWRldl9yZWxlYXNlOwogCWRldmljZV9pbml0aWFsaXpl KGRldi0+bWVtX2Rldl9sKTsKIAlvZl9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShkZXYtPnBsYXRf ZGV2LT5kZXYub2Zfbm9kZSwKIAkJCSJzYW1zdW5nLG1mYy1sIiwgbWVtX2luZm8sIDIpOwpAQCAt MTAzMiw2ICsxMDQwLDkgQEAgc3RhdGljIGludCBzNXBfbWZjX2FsbG9jX21lbWRldnMoc3RydWN0 IHM1cF9tZmNfZGV2ICpkZXYpCiAJCW1mY19lcnIoIk5vdCBlbm91Z2ggbWVtb3J5XG4iKTsKIAkJ cmV0dXJuIC1FTk9NRU07CiAJfQorCisJZGV2X3NldF9uYW1lKGRldi0+bWVtX2Rldl9yLCAiJXMi LCAiczVwLW1mYy1yIik7CisJZGV2LT5tZW1fZGV2X3ItPnJlbGVhc2UgPSBzNXBfbWZjX21lbWRl dl9yZWxlYXNlOwogCWRldmljZV9pbml0aWFsaXplKGRldi0+bWVtX2Rldl9yKTsKIAlvZl9wcm9w ZXJ0eV9yZWFkX3UzMl9hcnJheShkZXYtPnBsYXRfZGV2LT5kZXYub2Zfbm9kZSwKIAkJCSJzYW1z dW5nLG1mYy1yIiwgbWVtX2luZm8sIDIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2Iv ZW0yOHh4L2VtMjh4eC1pMmMuYyBiL2RyaXZlcnMvbWVkaWEvdXNiL2VtMjh4eC9lbTI4eHgtaTJj LmMKaW5kZXggYjU4ZDRlYmY2NDE5Li42YzE3Mzc4MjhkNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWVkaWEvdXNiL2VtMjh4eC9lbTI4eHgtaTJjLmMKKysrIGIvZHJpdmVycy9tZWRpYS91c2IvZW0y OHh4L2VtMjh4eC1pMmMuYwpAQCAtNTAxLDkgKzUwMSw4IEBAIHN0YXRpYyBpbnQgZW0yOHh4X2ky Y194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAsCiAJaW50IGFkZHIsIHJjLCBpOwog CXU4IHJlZzsKIAotCXJjID0gcnRfbXV0ZXhfdHJ5bG9jaygmZGV2LT5pMmNfYnVzX2xvY2spOwot CWlmIChyYyA8IDApCi0JCXJldHVybiByYzsKKwlpZiAoIXJ0X211dGV4X3RyeWxvY2soJmRldi0+ aTJjX2J1c19sb2NrKSkKKwkJcmV0dXJuIC1FQUdBSU47CiAKIAkvKiBTd2l0Y2ggSTJDIGJ1cyBp ZiBuZWVkZWQgKi8KIAlpZiAoYnVzICE9IGRldi0+Y3VyX2kyY19idXMgJiYKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvdXNiL3VzYnZpc2lvbi91c2J2aXNpb24tdmlkZW8uYyBiL2RyaXZlcnMv bWVkaWEvdXNiL3VzYnZpc2lvbi91c2J2aXNpb24tdmlkZW8uYwppbmRleCAwZGQ3M2E5Y2FmMzIu LjM1NGY1YTdhZTg4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdXNidmlzaW9uL3Vz YnZpc2lvbi12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL3VzYnZpc2lvbi91c2J2aXNp b24tdmlkZW8uYwpAQCAtMTUzNywxMyArMTUzNyw2IEBAIHN0YXRpYyBpbnQgdXNidmlzaW9uX3By b2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXByaW50ayhLRVJOX0lORk8gIiVzOiAl cyBmb3VuZFxuIiwgX19mdW5jX18sCiAJCQkJdXNidmlzaW9uX2RldmljZV9kYXRhW21vZGVsXS5t b2RlbF9zdHJpbmcpOwogCi0JLyoKLQkgKiB0aGlzIGlzIGEgc2VjdXJpdHkgY2hlY2suCi0JICog YW4gZXhwbG9pdCB1c2luZyBhbiBpbmNvcnJlY3QgYkludGVyZmFjZU51bWJlciBpcyBrbm93bgot CSAqLwotCWlmIChpZm51bSA+PSBVU0JfTUFYSU5URVJGQUNFUyB8fCAhZGV2LT5hY3Rjb25maWct PmludGVyZmFjZVtpZm51bV0pCi0JCXJldHVybiAtRU5PREVWOwotCiAJaWYgKHVzYnZpc2lvbl9k ZXZpY2VfZGF0YVttb2RlbF0uaW50ZXJmYWNlID49IDApCiAJCWludGVyZmFjZSA9ICZkZXYtPmFj dGNvbmZpZy0+aW50ZXJmYWNlW3VzYnZpc2lvbl9kZXZpY2VfZGF0YVttb2RlbF0uaW50ZXJmYWNl XS0+YWx0c2V0dGluZ1swXTsKIAllbHNlIGlmIChpZm51bSA8IGRldi0+YWN0Y29uZmlnLT5kZXNj LmJOdW1JbnRlcmZhY2VzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY2FyZC9ibG9jay5jIGIv ZHJpdmVycy9tbWMvY2FyZC9ibG9jay5jCmluZGV4IGM1MWUxNjRkZmFlMC4uNjE5YzY3YjcxZWNi IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jYXJkL2Jsb2NrLmMKKysrIGIvZHJpdmVycy9tbWMv Y2FyZC9ibG9jay5jCkBAIC0xNjU5LDggKzE2NTksOCBAQCBzdGF0aWMgdm9pZCBtbWNfYmxrX3Bh Y2tlZF9oZHJfd3JxX3ByZXAoc3RydWN0IG1tY19xdWV1ZV9yZXEgKm1xcnEsCiAKIAlwYWNrZWRf Y21kX2hkciA9IHBhY2tlZC0+Y21kX2hkcjsKIAltZW1zZXQocGFja2VkX2NtZF9oZHIsIDAsIHNp emVvZihwYWNrZWQtPmNtZF9oZHIpKTsKLQlwYWNrZWRfY21kX2hkclswXSA9IChwYWNrZWQtPm5y X2VudHJpZXMgPDwgMTYpIHwKLQkJKFBBQ0tFRF9DTURfV1IgPDwgOCkgfCBQQUNLRURfQ01EX1ZF UjsKKwlwYWNrZWRfY21kX2hkclswXSA9IGNwdV90b19sZTMyKChwYWNrZWQtPm5yX2VudHJpZXMg PDwgMTYpIHwKKwkJKFBBQ0tFRF9DTURfV1IgPDwgOCkgfCBQQUNLRURfQ01EX1ZFUik7CiAJaGRy X2Jsb2NrcyA9IG1tY19sYXJnZV9zZWN0b3IoY2FyZCkgPyA4IDogMTsKIAogCS8qCkBAIC0xNjc0 LDE0ICsxNjc0LDE0IEBAIHN0YXRpYyB2b2lkIG1tY19ibGtfcGFja2VkX2hkcl93cnFfcHJlcChz dHJ1Y3QgbW1jX3F1ZXVlX3JlcSAqbXFycSwKIAkJCSgoYnJxLT5kYXRhLmJsb2NrcyAqIGJycS0+ ZGF0YS5ibGtzeikgPj0KIAkJCSBjYXJkLT5leHRfY3NkLmRhdGFfdGFnX3VuaXRfc2l6ZSk7CiAJ CS8qIEFyZ3VtZW50IG9mIENNRDIzICovCi0JCXBhY2tlZF9jbWRfaGRyWyhpICogMildID0KKwkJ cGFja2VkX2NtZF9oZHJbKGkgKiAyKV0gPSBjcHVfdG9fbGUzMigKIAkJCShkb19yZWxfd3IgPyBN TUNfQ01EMjNfQVJHX1JFTF9XUiA6IDApIHwKIAkJCShkb19kYXRhX3RhZyA/IE1NQ19DTUQyM19B UkdfVEFHX1JFUSA6IDApIHwKLQkJCWJsa19ycV9zZWN0b3JzKHBycSk7CisJCQlibGtfcnFfc2Vj dG9ycyhwcnEpKTsKIAkJLyogQXJndW1lbnQgb2YgQ01EMTggb3IgQ01EMjUgKi8KLQkJcGFja2Vk X2NtZF9oZHJbKChpICogMikpICsgMV0gPQorCQlwYWNrZWRfY21kX2hkclsoKGkgKiAyKSkgKyAx XSA9IGNwdV90b19sZTMyKAogCQkJbW1jX2NhcmRfYmxvY2thZGRyKGNhcmQpID8KLQkJCWJsa19y cV9wb3MocHJxKSA6IGJsa19ycV9wb3MocHJxKSA8PCA5OworCQkJYmxrX3JxX3BvcyhwcnEpIDog YmxrX3JxX3BvcyhwcnEpIDw8IDkpOwogCQlwYWNrZWQtPmJsb2NrcyArPSBibGtfcnFfc2VjdG9y cyhwcnEpOwogCQlpKys7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbWFwcy9wbWNtc3At Zmxhc2guYyBiL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMKaW5kZXggNzQ0Y2E1Y2Fj YzliLi5mOWZhM2ZhZDcyOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZs YXNoLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9wbWNtc3AtZmxhc2guYwpAQCAtNzUsMTUgKzc1 LDE1IEBAIHN0YXRpYyBpbnQgX19pbml0IGluaXRfbXNwX2ZsYXNoKHZvaWQpCiAKIAlwcmludGso S0VSTl9OT1RJQ0UgIkZvdW5kICVkIFBNQyBmbGFzaCBkZXZpY2VzXG4iLCBmY250KTsKIAotCW1z cF9mbGFzaCA9IGttYWxsb2MoZmNudCAqIHNpemVvZihzdHJ1Y3QgbWFwX2luZm8gKiksIEdGUF9L RVJORUwpOworCW1zcF9mbGFzaCA9IGtjYWxsb2MoZmNudCwgc2l6ZW9mKCptc3BfZmxhc2gpLCBH RlBfS0VSTkVMKTsKIAlpZiAoIW1zcF9mbGFzaCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQltc3Bf cGFydHMgPSBrbWFsbG9jKGZjbnQgKiBzaXplb2Yoc3RydWN0IG10ZF9wYXJ0aXRpb24gKiksIEdG UF9LRVJORUwpOworCW1zcF9wYXJ0cyA9IGtjYWxsb2MoZmNudCwgc2l6ZW9mKCptc3BfcGFydHMp LCBHRlBfS0VSTkVMKTsKIAlpZiAoIW1zcF9wYXJ0cykKIAkJZ290byBmcmVlX21zcF9mbGFzaDsK IAotCW1zcF9tYXBzID0ga2NhbGxvYyhmY250LCBzaXplb2Yoc3RydWN0IG10ZF9pbmZvKSwgR0ZQ X0tFUk5FTCk7CisJbXNwX21hcHMgPSBrY2FsbG9jKGZjbnQsIHNpemVvZigqbXNwX21hcHMpLCBH RlBfS0VSTkVMKTsKIAlpZiAoIW1zcF9tYXBzKQogCQlnb3RvIGZyZWVfbXNwX3BhcnRzOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2RhdmluY2lfbmFuZC5jIGIvZHJpdmVycy9tdGQv bmFuZC9kYXZpbmNpX25hbmQuYwppbmRleCBiOTIyYzhlZmNmNDAuLjBiYTk2ZjllMWFhNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9kYXZpbmNpX25hbmQuYworKysgYi9kcml2ZXJzL210 ZC9uYW5kL2RhdmluY2lfbmFuZC5jCkBAIC0yNDEsNiArMjQxLDkgQEAgc3RhdGljIHZvaWQgbmFu ZF9kYXZpbmNpX2h3Y3RsXzRiaXQoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBtb2RlKQogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTMyIHZhbDsKIAorCS8qIFJlc2V0IEVDQyBoYXJkd2FyZSAq LworCWRhdmluY2lfbmFuZF9yZWFkbChpbmZvLCBOQU5EXzRCSVRfRUNDMV9PRkZTRVQpOworCiAJ c3Bpbl9sb2NrX2lycXNhdmUoJmRhdmluY2lfbmFuZF9sb2NrLCBmbGFncyk7CiAKIAkvKiBTdGFy dCA0LWJpdCBFQ0MgY2FsY3VsYXRpb24gZm9yIHJlYWQvd3JpdGUgKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5j CmluZGV4IDRmM2U4MGM2OGEyNi4uNTI5ZjQyYThkN2Y4IDEwMDY0NAotLS0gYS9kcml2ZXJzL210 ZC9uYW5kL25hbmRfYmFzZS5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKQEAg LTIzODksNyArMjM4OSw3IEBAIHN0YXRpYyBpbnQgbmFuZF9kb193cml0ZV9vcHMoc3RydWN0IG10 ZF9pbmZvICptdGQsIGxvZmZfdCB0bywKIAkJaW50IGNhY2hlZCA9IHdyaXRlbGVuID4gYnl0ZXMg JiYgcGFnZSAhPSBibG9ja21hc2s7CiAJCXVpbnQ4X3QgKndidWYgPSBidWY7CiAJCWludCB1c2Vf YnVmcG9pOwotCQlpbnQgcGFydF9wYWdld3IgPSAoY29sdW1uIHx8IHdyaXRlbGVuIDwgKG10ZC0+ d3JpdGVzaXplIC0gMSkpOworCQlpbnQgcGFydF9wYWdld3IgPSAoY29sdW1uIHx8IHdyaXRlbGVu IDwgbXRkLT53cml0ZXNpemUpOwogCiAJCWlmIChwYXJ0X3BhZ2V3cikKIAkJCXVzZV9idWZwb2kg PSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2F0dGFjaC5jIGIvZHJpdmVycy9tdGQv dWJpL2F0dGFjaC5jCmluZGV4IDIxODQxZmUyNWFkMy4uZDg2NzQyYTBmZWZkIDEwMDY0NAotLS0g YS9kcml2ZXJzL210ZC91YmkvYXR0YWNoLmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL2F0dGFjaC5j CkBAIC04MDcsNiArODA3LDcgQEAgb3V0X3VubG9jazoKICAqIEBwbnVtOiB0aGUgcGh5c2ljYWwg ZXJhc2VibG9jayBudW1iZXIKICAqIEB2aWQ6IFRoZSB2b2x1bWUgSUQgb2YgdGhlIGZvdW5kIHZv bHVtZSB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzIHBvaW50ZXIKICAqIEBzcW51bTogVGhlIHNxbnVt IG9mIHRoZSBmb3VuZCB2b2x1bWUgd2lsbCBiZSBzdG9yZWQgaW4gdGhpcyBwb2ludGVyCisgKiBA ZmFzdDogdHJ1ZSBpZiB3ZSdyZSBzY2FubmluZyBmb3IgYSBGYXN0bWFwCiAgKgogICogVGhpcyBm dW5jdGlvbiByZWFkcyBVQkkgaGVhZGVycyBvZiBQRUIgQHBudW0sIGNoZWNrcyB0aGVtLCBhbmQg YWRkcwogICogaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQRUIgdG8gdGhlIGNvcnJlc3BvbmRpbmcg bGlzdCBvciBSQi10cmVlIGluIHRoZQpAQCAtODE0LDcgKzgxNSw3IEBAIG91dF91bmxvY2s6CiAg KiBzdWNjZXNzZnVsbHkgaGFuZGxlZCBhbmQgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGluIGNhc2Ug b2YgZmFpbHVyZS4KICAqLwogc3RhdGljIGludCBzY2FuX3BlYihzdHJ1Y3QgdWJpX2RldmljZSAq dWJpLCBzdHJ1Y3QgdWJpX2F0dGFjaF9pbmZvICphaSwKLQkJICAgIGludCBwbnVtLCBpbnQgKnZp ZCwgdW5zaWduZWQgbG9uZyBsb25nICpzcW51bSkKKwkJICAgIGludCBwbnVtLCBpbnQgKnZpZCwg dW5zaWduZWQgbG9uZyBsb25nICpzcW51bSwgYm9vbCBmYXN0KQogewogCWxvbmcgbG9uZyB1bmlu aXRpYWxpemVkX3ZhcihlYyk7CiAJaW50IGVyciwgYml0ZmxpcHMgPSAwLCB2b2xfaWQgPSAtMSwg ZWNfZXJyID0gMDsKQEAgLTkzMSw2ICs5MzIsMjAgQEAgc3RhdGljIGludCBzY2FuX3BlYihzdHJ1 Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJpX2F0dGFjaF9pbmZvICphaSwKIAkJCSAqLwog CQkJYWktPm1heWJlX2JhZF9wZWJfY291bnQgKz0gMTsKIAljYXNlIFVCSV9JT19CQURfSERSOgor CQkJLyoKKwkJCSAqIElmIHdlJ3JlIGZhY2luZyBhIGJhZCBWSUQgaGVhZGVyIHdlIGhhdmUgdG8g ZHJvcCAqYWxsKgorCQkJICogRmFzdG1hcCBkYXRhIHN0cnVjdHVyZXMgd2UgZmluZC4gVGhlIG1v c3QgcmVjZW50IEZhc3RtYXAKKwkJCSAqIGNvdWxkIGJlIGJhZCBhbmQgdGhlcmVmb3JlIHRoZXJl IGlzIGEgY2hhbmNlIHRoYXQgd2UgYXR0YWNoCisJCQkgKiBmcm9tIGFuIG9sZCBvbmUuIE9uIGEg ZmluZSBNVEQgc3RhY2sgYSBQRUIgbXVzdCBub3QgcmVuZGVyCisJCQkgKiBiYWQgYWxsIG9mIGEg c3VkZGVuLCBidXQgdGhlIHJlYWxpdHkgaXMgZGlmZmVyZW50LgorCQkJICogU28sIGxldCdzIGJl IHBhcmFub2lkIGFuZCBoZWxwIGZpbmRpbmcgdGhlIHJvb3QgY2F1c2UgYnkKKwkJCSAqIGZhbGxp bmcgYmFjayB0byBzY2FubmluZyBtb2RlIGluc3RlYWQgb2YgYXR0YWNoaW5nIHdpdGggYQorCQkJ ICogYmFkIEVCQSB0YWJsZSBhbmQgY2F1c2UgZGF0YSBjb3JydXB0aW9uIHdoaWNoIGlzIGhhcmQg dG8KKwkJCSAqIGFuYWx5emUuCisJCQkgKi8KKwkJCWlmIChmYXN0KQorCQkJCWFpLT5mb3JjZV9m dWxsX3NjYW4gPSAxOworCiAJCWlmIChlY19lcnIpCiAJCQkvKgogCQkJICogQm90aCBoZWFkZXJz IGFyZSBjb3JydXB0ZWQuIFRoZXJlIGlzIGEgcG9zc2liaWxpdHkKQEAgLTEyNDMsNyArMTI1OCw3 IEBAIHN0YXRpYyBpbnQgc2Nhbl9hbGwoc3RydWN0IHViaV9kZXZpY2UgKnViaSwgc3RydWN0IHVi aV9hdHRhY2hfaW5mbyAqYWksCiAJCWNvbmRfcmVzY2hlZCgpOwogCiAJCWRiZ19nZW4oInByb2Nl c3MgUEVCICVkIiwgcG51bSk7Ci0JCWVyciA9IHNjYW5fcGViKHViaSwgYWksIHBudW0sIE5VTEws IE5VTEwpOworCQllcnIgPSBzY2FuX3BlYih1YmksIGFpLCBwbnVtLCBOVUxMLCBOVUxMLCBmYWxz ZSk7CiAJCWlmIChlcnIgPCAwKQogCQkJZ290byBvdXRfdmlkaDsKIAl9CkBAIC0xMzMwLDcgKzEz NDUsNyBAQCBzdGF0aWMgaW50IHNjYW5fZmFzdChzdHJ1Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1 Y3QgdWJpX2F0dGFjaF9pbmZvICphaSkKIAkJY29uZF9yZXNjaGVkKCk7CiAKIAkJZGJnX2dlbigi cHJvY2VzcyBQRUIgJWQiLCBwbnVtKTsKLQkJZXJyID0gc2Nhbl9wZWIodWJpLCBhaSwgcG51bSwg JnZvbF9pZCwgJnNxbnVtKTsKKwkJZXJyID0gc2Nhbl9wZWIodWJpLCBhaSwgcG51bSwgJnZvbF9p ZCwgJnNxbnVtLCB0cnVlKTsKIAkJaWYgKGVyciA8IDApCiAJCQlnb3RvIG91dF92aWRoOwogCkBA IC0xMzQ2LDcgKzEzNjEsMTEgQEAgc3RhdGljIGludCBzY2FuX2Zhc3Qoc3RydWN0IHViaV9kZXZp Y2UgKnViaSwgc3RydWN0IHViaV9hdHRhY2hfaW5mbyAqYWkpCiAJaWYgKGZtX2FuY2hvciA8IDAp CiAJCXJldHVybiBVQklfTk9fRkFTVE1BUDsKIAotCXJldHVybiB1Ymlfc2Nhbl9mYXN0bWFwKHVi aSwgYWksIGZtX2FuY2hvcik7CisJaWYgKGFpLT5mb3JjZV9mdWxsX3NjYW4pCisJCXJldHVybiBV QklfTk9fRkFTVE1BUDsKKwllbHNlCisJCXJldHVybiB1Ymlfc2Nhbl9mYXN0bWFwKHViaSwgYWks IGZtX2FuY2hvcik7CisKIAogb3V0X3ZpZGg6CiAJdWJpX2ZyZWVfdmlkX2hkcih1YmksIHZpZGgp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2J1aWxkLmMgYi9kcml2ZXJzL210ZC91Ymkv YnVpbGQuYwppbmRleCA2ZTMwYTNjMjgwZDAuLmMzZGIzODNhOTAwMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9tdGQvdWJpL2J1aWxkLmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL2J1aWxkLmMKQEAgLTk5 OSw2ICs5OTksOSBAQCBpbnQgdWJpX2F0dGFjaF9tdGRfZGV2KHN0cnVjdCBtdGRfaW5mbyAqbXRk LCBpbnQgdWJpX251bSwKIAkJCWdvdG8gb3V0X2RldGFjaDsKIAl9CiAKKwkvKiBNYWtlIGRldmlj ZSAiYXZhaWxhYmxlIiBiZWZvcmUgaXQgYmVjb21lcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcyAqLwor CXViaV9kZXZpY2VzW3ViaV9udW1dID0gdWJpOworCiAJZXJyID0gdWlmX2luaXQodWJpLCAmcmVm KTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dF9kZXRhY2g7CkBAIC0xMDQzLDcgKzEwNDYsNiBAQCBp bnQgdWJpX2F0dGFjaF9tdGRfZGV2KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgdWJpX251bSwK IAl3YWtlX3VwX3Byb2Nlc3ModWJpLT5iZ3RfdGhyZWFkKTsKIAlzcGluX3VubG9jaygmdWJpLT53 bF9sb2NrKTsKIAotCXViaV9kZXZpY2VzW3ViaV9udW1dID0gdWJpOwogCXViaV9ub3RpZnlfYWxs KHViaSwgVUJJX1ZPTFVNRV9BRERFRCwgTlVMTCk7CiAJcmV0dXJuIHViaV9udW07CiAKQEAgLTEw NTQsNiArMTA1Niw3IEBAIG91dF91aWY6CiAJdWJpX2Fzc2VydChyZWYpOwogCXVpZl9jbG9zZSh1 YmkpOwogb3V0X2RldGFjaDoKKwl1YmlfZGV2aWNlc1t1YmlfbnVtXSA9IE5VTEw7CiAJdWJpX3ds X2Nsb3NlKHViaSk7CiAJdWJpX2ZyZWVfaW50ZXJuYWxfdm9sdW1lcyh1YmkpOwogCXZmcmVlKHVi aS0+dnRibCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC91YmkvdWJpLmggYi9kcml2ZXJzL210 ZC91YmkvdWJpLmgKaW5kZXggYzFmMTA4N2I2OTM5Li45Mjc3NGI3YzYyMzAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbXRkL3ViaS91YmkuaAorKysgYi9kcml2ZXJzL210ZC91YmkvdWJpLmgKQEAgLTY3 MCw2ICs2NzAsOCBAQCBzdHJ1Y3QgdWJpX2FpbmZfdm9sdW1lIHsKICAqIEB2b2xzX2ZvdW5kOiBu dW1iZXIgb2Ygdm9sdW1lcyBmb3VuZAogICogQGhpZ2hlc3Rfdm9sX2lkOiBoaWdoZXN0IHZvbHVt ZSBJRAogICogQGlzX2VtcHR5OiBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgTVREIGRldmlj ZSBpcyBlbXB0eSBvciBub3QKKyAqIEBmb3JjZV9mdWxsX3NjYW46IGZsYWcgaW5kaWNhdGluZyB3 aGV0aGVyIHdlIG5lZWQgdG8gZG8gYSBmdWxsIHNjYW4gYW5kIGRyb3AKKwkJICAgICBhbGwgZXhp c3RpbmcgRmFzdG1hcCBkYXRhIHN0cnVjdHVyZXMKICAqIEBtaW5fZWM6IGxvd2VzdCBlcmFzZSBj b3VudGVyIHZhbHVlCiAgKiBAbWF4X2VjOiBoaWdoZXN0IGVyYXNlIGNvdW50ZXIgdmFsdWUKICAq IEBtYXhfc3FudW06IGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVyIHZhbHVlCkBAIC02OTYsNiArNjk4 LDcgQEAgc3RydWN0IHViaV9hdHRhY2hfaW5mbyB7CiAJaW50IHZvbHNfZm91bmQ7CiAJaW50IGhp Z2hlc3Rfdm9sX2lkOwogCWludCBpc19lbXB0eTsKKwlpbnQgZm9yY2VfZnVsbF9zY2FuOwogCWlu dCBtaW5fZWM7CiAJaW50IG1heF9lYzsKIAl1bnNpZ25lZCBsb25nIGxvbmcgbWF4X3NxbnVtOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL3ZtdC5jIGIvZHJpdmVycy9tdGQvdWJpL3ZtdC5j CmluZGV4IDgzMzA3MDNjMDk4Zi4uOTYxMzFlYjM0YzlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL210 ZC91Ymkvdm10LmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL3ZtdC5jCkBAIC01MzQsMTMgKzUzNCw2 IEBAIGludCB1YmlfcmVzaXplX3ZvbHVtZShzdHJ1Y3QgdWJpX3ZvbHVtZV9kZXNjICpkZXNjLCBp bnQgcmVzZXJ2ZWRfcGVicykKIAkJc3Bpbl91bmxvY2soJnViaS0+dm9sdW1lc19sb2NrKTsKIAl9 CiAKLQkvKiBDaGFuZ2Ugdm9sdW1lIHRhYmxlIHJlY29yZCAqLwotCXZ0YmxfcmVjID0gdWJpLT52 dGJsW3ZvbF9pZF07Ci0JdnRibF9yZWMucmVzZXJ2ZWRfcGVicyA9IGNwdV90b19iZTMyKHJlc2Vy dmVkX3BlYnMpOwotCWVyciA9IHViaV9jaGFuZ2VfdnRibF9yZWNvcmQodWJpLCB2b2xfaWQsICZ2 dGJsX3JlYyk7Ci0JaWYgKGVycikKLQkJZ290byBvdXRfYWNjOwotCiAJaWYgKHBlYnMgPCAwKSB7 CiAJCWZvciAoaSA9IDA7IGkgPCAtcGViczsgaSsrKSB7CiAJCQllcnIgPSB1YmlfZWJhX3VubWFw X2xlYih1YmksIHZvbCwgcmVzZXJ2ZWRfcGVicyArIGkpOwpAQCAtNTU4LDYgKzU1MSwyNCBAQCBp bnQgdWJpX3Jlc2l6ZV92b2x1bWUoc3RydWN0IHViaV92b2x1bWVfZGVzYyAqZGVzYywgaW50IHJl c2VydmVkX3BlYnMpCiAJCXNwaW5fdW5sb2NrKCZ1YmktPnZvbHVtZXNfbG9jayk7CiAJfQogCisJ LyoKKwkgKiBXaGVuIHdlIHNocmluayBhIHZvbHVtZSB3ZSBoYXZlIHRvIGZsdXNoIGFsbCBwZW5k aW5nIChlcmFzZSkgd29yay4KKwkgKiBPdGhlcndpc2UgaXQgY2FuIGhhcHBlbiB0aGF0IHVwb24g bmV4dCBhdHRhY2ggVUJJIGZpbmRzIGEgTEVCIHdpdGgKKwkgKiBsbnVtID4gaGlnaGVzdF9sbnVt IGFuZCByZWZ1c2VzIHRvIGF0dGFjaC4KKwkgKi8KKwlpZiAocGVicyA8IDApIHsKKwkJZXJyID0g dWJpX3dsX2ZsdXNoKHViaSwgdm9sX2lkLCBVQklfQUxMKTsKKwkJaWYgKGVycikKKwkJCWdvdG8g b3V0X2FjYzsKKwl9CisKKwkvKiBDaGFuZ2Ugdm9sdW1lIHRhYmxlIHJlY29yZCAqLworCXZ0Ymxf cmVjID0gdWJpLT52dGJsW3ZvbF9pZF07CisJdnRibF9yZWMucmVzZXJ2ZWRfcGVicyA9IGNwdV90 b19iZTMyKHJlc2VydmVkX3BlYnMpOworCWVyciA9IHViaV9jaGFuZ2VfdnRibF9yZWNvcmQodWJp LCB2b2xfaWQsICZ2dGJsX3JlYyk7CisJaWYgKGVycikKKwkJZ290byBvdXRfYWNjOworCiAJdm9s LT5yZXNlcnZlZF9wZWJzID0gcmVzZXJ2ZWRfcGViczsKIAlpZiAodm9sLT52b2xfdHlwZSA9PSBV QklfRFlOQU1JQ19WT0xVTUUpIHsKIAkJdm9sLT51c2VkX2VicyA9IHJlc2VydmVkX3BlYnM7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vZGV2LmMgYi9kcml2ZXJzL25ldC9jYW4vZGV2LmMK aW5kZXggZWRiM2I4NmViMTE4Li5lNDdhZDhhNzg5Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L2Nhbi9kZXYuYworKysgYi9kcml2ZXJzL25ldC9jYW4vZGV2LmMKQEAgLTIxLDYgKzIxLDcgQEAK ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CiAj aW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAj aW5jbHVkZSA8bGludXgvY2FuLmg+CiAjaW5jbHVkZSA8bGludXgvY2FuL2Rldi5oPgogI2luY2x1 ZGUgPGxpbnV4L2Nhbi9za2IuaD4KQEAgLTM5Miw5ICszOTMsOCBAQCBFWFBPUlRfU1lNQk9MX0dQ TChjYW5fZnJlZV9lY2hvX3NrYik7CiAvKgogICogQ0FOIGRldmljZSByZXN0YXJ0IGZvciBidXMt b2ZmIHJlY292ZXJ5CiAgKi8KLXN0YXRpYyB2b2lkIGNhbl9yZXN0YXJ0KHVuc2lnbmVkIGxvbmcg ZGF0YSkKK3N0YXRpYyB2b2lkIGNhbl9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7 Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IChzdHJ1Y3QgbmV0X2RldmljZSAqKWRhdGE7CiAJ c3RydWN0IGNhbl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlzdHJ1Y3QgbmV0X2Rl dmljZV9zdGF0cyAqc3RhdHMgPSAmZGV2LT5zdGF0czsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwpA QCAtNDM0LDYgKzQzNCwxNCBAQCByZXN0YXJ0OgogCQluZXRkZXZfZXJyKGRldiwgIkVycm9yICVk IGR1cmluZyByZXN0YXJ0IiwgZXJyKTsKIH0KIAorc3RhdGljIHZvaWQgY2FuX3Jlc3RhcnRfd29y ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGRlbGF5ZWRfd29yayAqZHdv cmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7CisJc3RydWN0IGNhbl9wcml2ICpwcml2ID0gY29u dGFpbmVyX29mKGR3b3JrLCBzdHJ1Y3QgY2FuX3ByaXYsIHJlc3RhcnRfd29yayk7CisKKwljYW5f cmVzdGFydChwcml2LT5kZXYpOworfQorCiBpbnQgY2FuX3Jlc3RhcnRfbm93KHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGNhbl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2 KTsKQEAgLTQ0Nyw4ICs0NTUsOCBAQCBpbnQgY2FuX3Jlc3RhcnRfbm93KHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpCiAJaWYgKHByaXYtPnN0YXRlICE9IENBTl9TVEFURV9CVVNfT0ZGKQogCQlyZXR1 cm4gLUVCVVNZOwogCi0JLyogUnVucyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZSB0aW1lciBj b250ZXh0ICovCi0JbW9kX3RpbWVyKCZwcml2LT5yZXN0YXJ0X3RpbWVyLCBqaWZmaWVzKTsKKwlj YW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnByaXYtPnJlc3RhcnRfd29yayk7CisJY2FuX3Jlc3Rh cnQoZGV2KTsKIAogCXJldHVybiAwOwogfQpAQCAtNDcwLDggKzQ3OCw4IEBAIHZvaWQgY2FuX2J1 c19vZmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlwcml2LT5jYW5fc3RhdHMuYnVzX29mZisr OwogCiAJaWYgKHByaXYtPnJlc3RhcnRfbXMpCi0JCW1vZF90aW1lcigmcHJpdi0+cmVzdGFydF90 aW1lciwKLQkJCSAgamlmZmllcyArIChwcml2LT5yZXN0YXJ0X21zICogSFopIC8gMTAwMCk7CisJ CXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcHJpdi0+cmVzdGFydF93b3JrLAorCQkJCSAgICAgIG1z ZWNzX3RvX2ppZmZpZXMocHJpdi0+cmVzdGFydF9tcykpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwo Y2FuX2J1c19vZmYpOwogCkBAIC01NzgsNiArNTg2LDcgQEAgc3RydWN0IG5ldF9kZXZpY2UgKmFs bG9jX2NhbmRldihpbnQgc2l6ZW9mX3ByaXYsIHVuc2lnbmVkIGludCBlY2hvX3NrYl9tYXgpCiAJ CXJldHVybiBOVUxMOwogCiAJcHJpdiA9IG5ldGRldl9wcml2KGRldik7CisJcHJpdi0+ZGV2ID0g ZGV2OwogCiAJaWYgKGVjaG9fc2tiX21heCkgewogCQlwcml2LT5lY2hvX3NrYl9tYXggPSBlY2hv X3NrYl9tYXg7CkBAIC01ODcsNyArNTk2LDcgQEAgc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2Nh bmRldihpbnQgc2l6ZW9mX3ByaXYsIHVuc2lnbmVkIGludCBlY2hvX3NrYl9tYXgpCiAKIAlwcml2 LT5zdGF0ZSA9IENBTl9TVEFURV9TVE9QUEVEOwogCi0JaW5pdF90aW1lcigmcHJpdi0+cmVzdGFy dF90aW1lcik7CisJSU5JVF9ERUxBWUVEX1dPUksoJnByaXYtPnJlc3RhcnRfd29yaywgY2FuX3Jl c3RhcnRfd29yayk7CiAKIAlyZXR1cm4gZGV2OwogfQpAQCAtNjYyLDggKzY3MSw2IEBAIGludCBv cGVuX2NhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWlmICghbmV0aWZfY2Fycmllcl9v ayhkZXYpKQogCQluZXRpZl9jYXJyaWVyX29uKGRldik7CiAKLQlzZXR1cF90aW1lcigmcHJpdi0+ cmVzdGFydF90aW1lciwgY2FuX3Jlc3RhcnQsICh1bnNpZ25lZCBsb25nKWRldik7Ci0KIAlyZXR1 cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG9wZW5fY2FuZGV2KTsKQEAgLTY3OCw3ICs2ODUs NyBAQCB2b2lkIGNsb3NlX2NhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVj dCBjYW5fcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAKLQlkZWxfdGltZXJfc3luYygm cHJpdi0+cmVzdGFydF90aW1lcik7CisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZwcml2LT5y ZXN0YXJ0X3dvcmspOwogCWNhbl9mbHVzaF9lY2hvX3NrYihkZXYpOwogfQogRVhQT1JUX1NZTUJP TF9HUEwoY2xvc2VfY2FuZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9mbGV4Y2Fu LmMgYi9kcml2ZXJzL25ldC9jYW4vZmxleGNhbi5jCmluZGV4IGJmODM2Mzk4ODhhOS4uN2MwNmRm NTU3ZTM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vZmxleGNhbi5jCisrKyBiL2RyaXZl cnMvbmV0L2Nhbi9mbGV4Y2FuLmMKQEAgLTEyNDgsMTEgKzEyNDgsMTAgQEAgc3RhdGljIGludCBf X21heWJlX3VudXNlZCBmbGV4Y2FuX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKQogCXN0 cnVjdCBmbGV4Y2FuX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCWludCBlcnI7CiAK LQllcnIgPSBmbGV4Y2FuX2NoaXBfZGlzYWJsZShwcml2KTsKLQlpZiAoZXJyKQotCQlyZXR1cm4g ZXJyOwotCiAJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgeworCQllcnIgPSBmbGV4Y2FuX2NoaXBf ZGlzYWJsZShwcml2KTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CiAJCW5ldGlmX3N0b3Bf cXVldWUoZGV2KTsKIAkJbmV0aWZfZGV2aWNlX2RldGFjaChkZXYpOwogCX0KQEAgLTEyNjUsMTMg KzEyNjQsMTcgQEAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBmbGV4Y2FuX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXZpY2UpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGRldl9nZXRf ZHJ2ZGF0YShkZXZpY2UpOwogCXN0cnVjdCBmbGV4Y2FuX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJp dihkZXYpOworCWludCBlcnI7CiAKIAlwcml2LT5jYW4uc3RhdGUgPSBDQU5fU1RBVEVfRVJST1Jf QUNUSVZFOwogCWlmIChuZXRpZl9ydW5uaW5nKGRldikpIHsKIAkJbmV0aWZfZGV2aWNlX2F0dGFj aChkZXYpOwogCQluZXRpZl9zdGFydF9xdWV1ZShkZXYpOworCQllcnIgPSBmbGV4Y2FuX2NoaXBf ZW5hYmxlKHByaXYpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKIAl9Ci0JcmV0dXJuIGZs ZXhjYW5fY2hpcF9lbmFibGUocHJpdik7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBTSU1QTEVf REVWX1BNX09QUyhmbGV4Y2FuX3BtX29wcywgZmxleGNhbl9zdXNwZW5kLCBmbGV4Y2FuX3Jlc3Vt ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvZXRob2MuYwppbmRleCBmMzY1OGJkYjY0Y2MuLjAwZDBhMDViOWQ3ZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYworKysgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9ldGhvYy5jCkBAIC0xMDgwLDcgKzEwODAsNyBAQCBzdGF0aWMgaW50IGV0aG9jX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKCFwcml2LT5pb2Jhc2UpIHsK IAkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2Fubm90IHJlbWFwIEkvTyBtZW1vcnkgc3BhY2VcbiIp OwogCQlyZXQgPSAtRU5YSU87Ci0JCWdvdG8gZXJyb3I7CisJCWdvdG8gZnJlZTsKIAl9CiAKIAlp ZiAobmV0ZGV2LT5tZW1fZW5kKSB7CkBAIC0xMDg5LDcgKzEwODksNyBAQCBzdGF0aWMgaW50IGV0 aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCWlmICghcHJpdi0+bWVt YmFzZSkgewogCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2Fubm90IHJlbWFwIG1lbW9yeSBzcGFj ZVxuIik7CiAJCQlyZXQgPSAtRU5YSU87Ci0JCQlnb3RvIGVycm9yOworCQkJZ290byBmcmVlOwog CQl9CiAJfSBlbHNlIHsKIAkJLyogQWxsb2NhdGUgYnVmZmVyIG1lbW9yeSAqLwpAQCAtMTEwMCw3 ICsxMTAwLDcgQEAgc3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQogCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2Fubm90IGFsbG9jYXRlICVkQiBidWZm ZXJcbiIsCiAJCQkJYnVmZmVyX3NpemUpOwogCQkJcmV0ID0gLUVOT01FTTsKLQkJCWdvdG8gZXJy b3I7CisJCQlnb3RvIGZyZWU7CiAJCX0KIAkJbmV0ZGV2LT5tZW1fZW5kID0gbmV0ZGV2LT5tZW1f c3RhcnQgKyBidWZmZXJfc2l6ZTsKIAkJcHJpdi0+ZG1hX2FsbG9jID0gYnVmZmVyX3NpemU7CkBA IC0xMTExLDcgKzExMTEsNyBAQCBzdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCiAJCTEyOCwgKG5ldGRldi0+bWVtX2VuZCAtIG5ldGRldi0+bWVtX3N0 YXJ0ICsgMSkgLyBFVEhPQ19CVUZTSVopOwogCWlmIChudW1fYmQgPCA0KSB7CiAJCXJldCA9IC1F Tk9ERVY7Ci0JCWdvdG8gZXJyb3I7CisJCWdvdG8gZnJlZTsKIAl9CiAJcHJpdi0+bnVtX2JkID0g bnVtX2JkOwogCS8qIG51bV90eCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvICovCkBAIC0xMTI0LDcg KzExMjQsNyBAQCBzdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJcHJpdi0+dm1hID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIG51bV9iZCpzaXpl b2Yodm9pZCAqKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcml2LT52bWEpIHsKIAkJcmV0ID0gLUVO T01FTTsKLQkJZ290byBlcnJvcjsKKwkJZ290byBmcmVlOwogCX0KIAogCS8qIEFsbG93IHRoZSBw bGF0Zm9ybSBzZXR1cCBjb2RlIHRvIHBhc3MgaW4gYSBNQUMgYWRkcmVzcy4gKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jCmluZGV4IDk5YTY5NDkwZjM5Yi4uNGQ0Njg3MDdhODY2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jCisrKyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMKQEAgLTIxNiw3ICsyMTYsNyBA QAogLyogVmFyaW91cyBjb25zdGFudHMgKi8KIAogLyogQ29hbGVzY2luZyAqLwotI2RlZmluZSBN Vk5FVEFfVFhET05FX0NPQUxfUEtUUwkJMQorI2RlZmluZSBNVk5FVEFfVFhET05FX0NPQUxfUEtU UwkJMAkvKiBpbnRlcnJ1cHQgcGVyIHBhY2tldCAqLwogI2RlZmluZSBNVk5FVEFfUlhfQ09BTF9Q S1RTCQkzMgogI2RlZmluZSBNVk5FVEFfUlhfQ09BTF9VU0VDCQkxMDAKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jCmluZGV4IGNlYTQwOThiMWQ4MC4u M2VlM2RjZWRmNzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvY21kLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2NtZC5jCkBAIC0xNTksMTMgKzE1OSwxNCBAQCBzdGF0aWMgc3RydWN0IG1seDVfY21kX2xh eW91dCAqZ2V0X2luc3Qoc3RydWN0IG1seDVfY21kICpjbWQsIGludCBpZHgpCiAJcmV0dXJuIGNt ZC0+Y21kX2J1ZiArIChpZHggPDwgY21kLT5sb2dfc3RyaWRlKTsKIH0KIAotc3RhdGljIHU4IHhv cjhfYnVmKHZvaWQgKmJ1ZiwgaW50IGxlbikKK3N0YXRpYyB1OCB4b3I4X2J1Zih2b2lkICpidWYs IHNpemVfdCBvZmZzZXQsIGludCBsZW4pCiB7CiAJdTggKnB0ciA9IGJ1ZjsKIAl1OCBzdW0gPSAw OwogCWludCBpOworCWludCBlbmQgPSBsZW4gKyBvZmZzZXQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwg bGVuOyBpKyspCisJZm9yIChpID0gb2Zmc2V0OyBpIDwgZW5kOyBpKyspCiAJCXN1bSBePSBwdHJb aV07CiAKIAlyZXR1cm4gc3VtOwpAQCAtMTczLDQxICsxNzQsNDkgQEAgc3RhdGljIHU4IHhvcjhf YnVmKHZvaWQgKmJ1ZiwgaW50IGxlbikKIAogc3RhdGljIGludCB2ZXJpZnlfYmxvY2tfc2lnKHN0 cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrICpibG9jaykKIHsKLQlpZiAoeG9yOF9idWYoYmxvY2st PnJzdmQwLCBzaXplb2YoKmJsb2NrKSAtIHNpemVvZihibG9jay0+ZGF0YSkgLSAxKSAhPSAweGZm KQorCXNpemVfdCByc3ZkMF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgbWx4NV9jbWRfcHJvdF9ibG9j aywgcnN2ZDApOworCWludCB4b3JfbGVuID0gc2l6ZW9mKCpibG9jaykgLSBzaXplb2YoYmxvY2st PmRhdGEpIC0gMTsKKworCWlmICh4b3I4X2J1ZihibG9jaywgcnN2ZDBfb2ZmLCB4b3JfbGVuKSAh PSAweGZmKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmICh4b3I4X2J1ZihibG9jaywgc2l6ZW9m KCpibG9jaykpICE9IDB4ZmYpCisJaWYgKHhvcjhfYnVmKGJsb2NrLCAwLCBzaXplb2YoKmJsb2Nr KSkgIT0gMHhmZikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj IHZvaWQgY2FsY19ibG9ja19zaWcoc3RydWN0IG1seDVfY21kX3Byb3RfYmxvY2sgKmJsb2NrLCB1 OCB0b2tlbiwKLQkJCSAgIGludCBjc3VtKQorc3RhdGljIHZvaWQgY2FsY19ibG9ja19zaWcoc3Ry dWN0IG1seDVfY21kX3Byb3RfYmxvY2sgKmJsb2NrKQogewotCWJsb2NrLT50b2tlbiA9IHRva2Vu OwotCWlmIChjc3VtKSB7Ci0JCWJsb2NrLT5jdHJsX3NpZyA9IH54b3I4X2J1ZihibG9jay0+cnN2 ZDAsIHNpemVvZigqYmxvY2spIC0KLQkJCQkJICAgIHNpemVvZihibG9jay0+ZGF0YSkgLSAyKTsK LQkJYmxvY2stPnNpZyA9IH54b3I4X2J1ZihibG9jaywgc2l6ZW9mKCpibG9jaykgLSAxKTsKLQl9 CisJaW50IGN0cmxfeG9yX2xlbiA9IHNpemVvZigqYmxvY2spIC0gc2l6ZW9mKGJsb2NrLT5kYXRh KSAtIDI7CisJc2l6ZV90IHJzdmQwX29mZiA9IG9mZnNldG9mKHN0cnVjdCBtbHg1X2NtZF9wcm90 X2Jsb2NrLCByc3ZkMCk7CisKKwlibG9jay0+Y3RybF9zaWcgPSB+eG9yOF9idWYoYmxvY2ssIHJz dmQwX29mZiwgY3RybF94b3JfbGVuKTsKKwlibG9jay0+c2lnID0gfnhvcjhfYnVmKGJsb2NrLCAw LCBzaXplb2YoKmJsb2NrKSAtIDEpOwogfQogCi1zdGF0aWMgdm9pZCBjYWxjX2NoYWluX3NpZyhz dHJ1Y3QgbWx4NV9jbWRfbXNnICptc2csIHU4IHRva2VuLCBpbnQgY3N1bSkKK3N0YXRpYyB2b2lk IGNhbGNfY2hhaW5fc2lnKHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZykKIHsKIAlzdHJ1Y3QgbWx4 NV9jbWRfbWFpbGJveCAqbmV4dCA9IG1zZy0+bmV4dDsKLQotCXdoaWxlIChuZXh0KSB7Ci0JCWNh bGNfYmxvY2tfc2lnKG5leHQtPmJ1ZiwgdG9rZW4sIGNzdW0pOworCWludCBzaXplID0gbXNnLT5s ZW47CisJaW50IGJsZW4gPSBzaXplIC0gbWluX3QoaW50LCBzaXplb2YobXNnLT5maXJzdC5kYXRh KSwgc2l6ZSk7CisJaW50IG4gPSAoYmxlbiArIE1MWDVfQ01EX0RBVEFfQkxPQ0tfU0laRSAtIDEp CisJCS8gTUxYNV9DTURfREFUQV9CTE9DS19TSVpFOworCWludCBpID0gMDsKKworCWZvciAoaSA9 IDA7IGkgPCBuICYmIG5leHQ7IGkrKykgIHsKKwkJY2FsY19ibG9ja19zaWcobmV4dC0+YnVmKTsK IAkJbmV4dCA9IG5leHQtPm5leHQ7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBzZXRfc2lnbmF0dXJl KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50LCBpbnQgY3N1bSkKIHsKLQllbnQtPmxheS0+ c2lnID0gfnhvcjhfYnVmKGVudC0+bGF5LCBzaXplb2YoKmVudC0+bGF5KSk7Ci0JY2FsY19jaGFp bl9zaWcoZW50LT5pbiwgZW50LT50b2tlbiwgY3N1bSk7Ci0JY2FsY19jaGFpbl9zaWcoZW50LT5v dXQsIGVudC0+dG9rZW4sIGNzdW0pOworCWVudC0+bGF5LT5zaWcgPSB+eG9yOF9idWYoZW50LT5s YXksIDAsICBzaXplb2YoKmVudC0+bGF5KSk7CisJaWYgKGNzdW0pIHsKKwkJY2FsY19jaGFpbl9z aWcoZW50LT5pbik7CisJCWNhbGNfY2hhaW5fc2lnKGVudC0+b3V0KTsKKwl9CiB9CiAKIHN0YXRp YyB2b2lkIHBvbGxfdGltZW91dChzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudCkKQEAgLTIz OCwxMiArMjQ3LDE3IEBAIHN0YXRpYyBpbnQgdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgbWx4NV9j bWRfd29ya19lbnQgKmVudCkKIAlzdHJ1Y3QgbWx4NV9jbWRfbWFpbGJveCAqbmV4dCA9IGVudC0+ b3V0LT5uZXh0OwogCWludCBlcnI7CiAJdTggc2lnOworCWludCBzaXplID0gZW50LT5vdXQtPmxl bjsKKwlpbnQgYmxlbiA9IHNpemUgLSBtaW5fdChpbnQsIHNpemVvZihlbnQtPm91dC0+Zmlyc3Qu ZGF0YSksIHNpemUpOworCWludCBuID0gKGJsZW4gKyBNTFg1X0NNRF9EQVRBX0JMT0NLX1NJWkUg LSAxKQorCQkvIE1MWDVfQ01EX0RBVEFfQkxPQ0tfU0laRTsKKwlpbnQgaSA9IDA7CiAKLQlzaWcg PSB4b3I4X2J1ZihlbnQtPmxheSwgc2l6ZW9mKCplbnQtPmxheSkpOworCXNpZyA9IHhvcjhfYnVm KGVudC0+bGF5LCAwLCBzaXplb2YoKmVudC0+bGF5KSk7CiAJaWYgKHNpZyAhPSAweGZmKQogCQly ZXR1cm4gLUVJTlZBTDsKIAotCXdoaWxlIChuZXh0KSB7CisJZm9yIChpID0gMDsgaSA8IG4gJiYg bmV4dDsgaSsrKSB7CiAJCWVyciA9IHZlcmlmeV9ibG9ja19zaWcobmV4dC0+YnVmKTsKIAkJaWYg KGVycikKIAkJCXJldHVybiBlcnI7CkBAIC01NTUsNyArNTY5LDYgQEAgc3RhdGljIHZvaWQgY21k X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWVudC0+aWR4ID0gY21k LT5tYXhfcmVnX2NtZHM7CiAJfQogCi0JZW50LT50b2tlbiA9IGFsbG9jX3Rva2VuKGNtZCk7CiAJ Y21kLT5lbnRfYXJyW2VudC0+aWR4XSA9IGVudDsKIAlsYXkgPSBnZXRfaW5zdChjbWQsIGVudC0+ aWR4KTsKIAllbnQtPmxheSA9IGxheTsKQEAgLTY1NCw3ICs2NjcsOCBAQCBzdGF0aWMgaW50IHdh aXRfZnVuYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfd29ya19l bnQgKmVudCkKIHN0YXRpYyBpbnQgbWx4NV9jbWRfaW52b2tlKHN0cnVjdCBtbHg1X2NvcmVfZGV2 ICpkZXYsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLAogCQkJICAgc3RydWN0IG1seDVfY21kX21z ZyAqb3V0LCB2b2lkICp1b3V0LCBpbnQgdW91dF9zaXplLAogCQkJICAgbWx4NV9jbWRfY2JrX3Qg Y2FsbGJhY2ssCi0JCQkgICB2b2lkICpjb250ZXh0LCBpbnQgcGFnZV9xdWV1ZSwgdTggKnN0YXR1 cykKKwkJCSAgIHZvaWQgKmNvbnRleHQsIGludCBwYWdlX3F1ZXVlLCB1OCAqc3RhdHVzLAorCQkJ ICAgdTggdG9rZW4pCiB7CiAJc3RydWN0IG1seDVfY21kICpjbWQgPSAmZGV2LT5jbWQ7CiAJc3Ry dWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQ7CkBAIC02NzIsNiArNjg2LDggQEAgc3RhdGljIGlu dCBtbHg1X2NtZF9pbnZva2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVf Y21kX21zZyAqaW4sCiAJaWYgKElTX0VSUihlbnQpKQogCQlyZXR1cm4gUFRSX0VSUihlbnQpOwog CisJZW50LT50b2tlbiA9IHRva2VuOworCiAJaWYgKCFjYWxsYmFjaykKIAkJaW5pdF9jb21wbGV0 aW9uKCZlbnQtPmRvbmUpOwogCkBAIC03NDYsNyArNzYyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgZm9wcyA9IHsKIAkud3JpdGUJPSBkYmdfd3JpdGUsCiB9OwogCi1z dGF0aWMgaW50IG1seDVfY29weV90b19tc2coc3RydWN0IG1seDVfY21kX21zZyAqdG8sIHZvaWQg KmZyb20sIGludCBzaXplKQorc3RhdGljIGludCBtbHg1X2NvcHlfdG9fbXNnKHN0cnVjdCBtbHg1 X2NtZF9tc2cgKnRvLCB2b2lkICpmcm9tLCBpbnQgc2l6ZSwKKwkJCSAgICB1OCB0b2tlbikKIHsK IAlzdHJ1Y3QgbWx4NV9jbWRfcHJvdF9ibG9jayAqYmxvY2s7CiAJc3RydWN0IG1seDVfY21kX21h aWxib3ggKm5leHQ7CkBAIC03NzIsNiArNzg5LDcgQEAgc3RhdGljIGludCBtbHg1X2NvcHlfdG9f bXNnKHN0cnVjdCBtbHg1X2NtZF9tc2cgKnRvLCB2b2lkICpmcm9tLCBpbnQgc2l6ZSkKIAkJbWVt Y3B5KGJsb2NrLT5kYXRhLCBmcm9tLCBjb3B5KTsKIAkJZnJvbSArPSBjb3B5OwogCQlzaXplIC09 IGNvcHk7CisJCWJsb2NrLT50b2tlbiA9IHRva2VuOwogCQluZXh0ID0gbmV4dC0+bmV4dDsKIAl9 CiAKQEAgLTg0MSw3ICs4NTksOCBAQCBzdGF0aWMgdm9pZCBmcmVlX2NtZF9ib3goc3RydWN0IG1s eDVfY29yZV9kZXYgKmRldiwKIH0KIAogc3RhdGljIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1seDVf YWxsb2NfY21kX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LAotCQkJCQkgICAgICAgZ2Zw X3QgZmxhZ3MsIGludCBzaXplKQorCQkJCQkgICAgICAgZ2ZwX3QgZmxhZ3MsIGludCBzaXplLAor CQkJCQkgICAgICAgdTggdG9rZW4pCiB7CiAJc3RydWN0IG1seDVfY21kX21haWxib3ggKnRtcCwg KmhlYWQgPSBOVUxMOwogCXN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrICpibG9jazsKQEAgLTg3 MCw2ICs4ODksNyBAQCBzdGF0aWMgc3RydWN0IG1seDVfY21kX21zZyAqbWx4NV9hbGxvY19jbWRf bXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsCiAJCXRtcC0+bmV4dCA9IGhlYWQ7CiAJCWJs b2NrLT5uZXh0ID0gY3B1X3RvX2JlNjQodG1wLT5uZXh0ID8gdG1wLT5uZXh0LT5kbWEgOiAwKTsK IAkJYmxvY2stPmJsb2NrX251bSA9IGNwdV90b19iZTMyKG4gLSBpIC0gMSk7CisJCWJsb2NrLT50 b2tlbiA9IHRva2VuOwogCQloZWFkID0gdG1wOwogCX0KIAltc2ctPm5leHQgPSBoZWFkOwpAQCAt MTIzOSw3ICsxMjU5LDcgQEAgc3RhdGljIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmFsbG9jX21zZyhz dHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgaW5fc2l6ZSwKIAl9CiAKIAlpZiAoSVNfRVJS KG1zZykpCi0JCW1zZyA9IG1seDVfYWxsb2NfY21kX21zZyhkZXYsIGdmcCwgaW5fc2l6ZSk7CisJ CW1zZyA9IG1seDVfYWxsb2NfY21kX21zZyhkZXYsIGdmcCwgaW5fc2l6ZSwgMCk7CiAKIAlyZXR1 cm4gbXNnOwogfQpAQCAtMTI1OCw2ICsxMjc4LDcgQEAgc3RhdGljIGludCBjbWRfZXhlYyhzdHJ1 Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB2b2lkICppbiwgaW50IGluX3NpemUsIHZvaWQgKm91dCwK IAlnZnBfdCBnZnA7CiAJaW50IGVycjsKIAl1OCBzdGF0dXMgPSAwOworCXU4IHRva2VuOwogCiAJ cGFnZXNfcXVldWUgPSBpc19tYW5hZ2VfcGFnZXMoaW4pOwogCWdmcCA9IGNhbGxiYWNrID8gR0ZQ X0FUT01JQyA6IEdGUF9LRVJORUw7CkBAIC0xMjY4LDIwICsxMjg5LDIyIEBAIHN0YXRpYyBpbnQg Y21kX2V4ZWMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqaW4sIGludCBpbl9zaXpl LCB2b2lkICpvdXQsCiAJCXJldHVybiBlcnI7CiAJfQogCi0JZXJyID0gbWx4NV9jb3B5X3RvX21z ZyhpbmIsIGluLCBpbl9zaXplKTsKKwl0b2tlbiA9IGFsbG9jX3Rva2VuKCZkZXYtPmNtZCk7CisK KwllcnIgPSBtbHg1X2NvcHlfdG9fbXNnKGluYiwgaW4sIGluX3NpemUsIHRva2VuKTsKIAlpZiAo ZXJyKSB7CiAJCW1seDVfY29yZV93YXJuKGRldiwgImVyciAlZFxuIiwgZXJyKTsKIAkJZ290byBv dXRfaW47CiAJfQogCi0Jb3V0YiA9IG1seDVfYWxsb2NfY21kX21zZyhkZXYsIGdmcCwgb3V0X3Np emUpOworCW91dGIgPSBtbHg1X2FsbG9jX2NtZF9tc2coZGV2LCBnZnAsIG91dF9zaXplLCB0b2tl bik7CiAJaWYgKElTX0VSUihvdXRiKSkgewogCQllcnIgPSBQVFJfRVJSKG91dGIpOwogCQlnb3Rv IG91dF9pbjsKIAl9CiAKIAllcnIgPSBtbHg1X2NtZF9pbnZva2UoZGV2LCBpbmIsIG91dGIsIG91 dCwgb3V0X3NpemUsIGNhbGxiYWNrLCBjb250ZXh0LAotCQkJICAgICAgcGFnZXNfcXVldWUsICZz dGF0dXMpOworCQkJICAgICAgcGFnZXNfcXVldWUsICZzdGF0dXMsIHRva2VuKTsKIAlpZiAoZXJy KQogCQlnb3RvIG91dF9vdXQ7CiAKQEAgLTEzNDgsNyArMTM3MSw3IEBAIHN0YXRpYyBpbnQgY3Jl YXRlX21zZ19jYWNoZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQogCUlOSVRfTElTVF9IRUFE KCZjbWQtPmNhY2hlLm1lZC5oZWFkKTsKIAogCWZvciAoaSA9IDA7IGkgPCBOVU1fTE9OR19MSVNU UzsgaSsrKSB7Ci0JCW1zZyA9IG1seDVfYWxsb2NfY21kX21zZyhkZXYsIEdGUF9LRVJORUwsIExP TkdfTElTVF9TSVpFKTsKKwkJbXNnID0gbWx4NV9hbGxvY19jbWRfbXNnKGRldiwgR0ZQX0tFUk5F TCwgTE9OR19MSVNUX1NJWkUsIDApOwogCQlpZiAoSVNfRVJSKG1zZykpIHsKIAkJCWVyciA9IFBU Ul9FUlIobXNnKTsKIAkJCWdvdG8gZXhfZXJyOwpAQCAtMTM1OCw3ICsxMzgxLDcgQEAgc3RhdGlj IGludCBjcmVhdGVfbXNnX2NhY2hlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpCiAJfQogCiAJ Zm9yIChpID0gMDsgaSA8IE5VTV9NRURfTElTVFM7IGkrKykgewotCQltc2cgPSBtbHg1X2FsbG9j X2NtZF9tc2coZGV2LCBHRlBfS0VSTkVMLCBNRURfTElTVF9TSVpFKTsKKwkJbXNnID0gbWx4NV9h bGxvY19jbWRfbXNnKGRldiwgR0ZQX0tFUk5FTCwgTUVEX0xJU1RfU0laRSwgMCk7CiAJCWlmIChJ U19FUlIobXNnKSkgewogCQkJZXJyID0gUFRSX0VSUihtc2cpOwogCQkJZ290byBleF9lcnI7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMK aW5kZXggYmIzM2IwNDEwYTIyLi44NDMyNTIxNDA4YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L21hY3ZsYW4uYworKysgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKQEAgLTIzNCwxMSArMjM0LDE0 IEBAIHN0YXRpYyB2b2lkIG1hY3ZsYW5fcHJvY2Vzc19icm9hZGNhc3Qoc3RydWN0IHdvcmtfc3Ry dWN0ICp3KQogCiAJCXJjdV9yZWFkX3VubG9jaygpOwogCisJCWlmIChzcmMpCisJCQlkZXZfcHV0 KHNyYy0+ZGV2KTsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBtYWN2 bGFuX2Jyb2FkY2FzdF9lbnF1ZXVlKHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQsCisJCQkJICAg ICAgY29uc3Qgc3RydWN0IG1hY3ZsYW5fZGV2ICpzcmMsCiAJCQkJICAgICAgc3RydWN0IHNrX2J1 ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKQEAgLTI0OCw4ICsyNTEsMTIgQEAg c3RhdGljIHZvaWQgbWFjdmxhbl9icm9hZGNhc3RfZW5xdWV1ZShzdHJ1Y3QgbWFjdmxhbl9wb3J0 ICpwb3J0LAogCWlmICghbnNrYikKIAkJZ290byBlcnI7CiAKKwlNQUNWTEFOX1NLQl9DQihuc2ti KS0+c3JjID0gc3JjOworCiAJc3Bpbl9sb2NrKCZwb3J0LT5iY19xdWV1ZS5sb2NrKTsKIAlpZiAo c2tiX3F1ZXVlX2xlbigmcG9ydC0+YmNfcXVldWUpIDwgTUFDVkxBTl9CQ19RVUVVRV9MRU4pIHsK KwkJaWYgKHNyYykKKwkJCWRldl9ob2xkKHNyYy0+ZGV2KTsKIAkJX19za2JfcXVldWVfdGFpbCgm cG9ydC0+YmNfcXVldWUsIG5za2IpOwogCQllcnIgPSAwOwogCX0KQEAgLTI5Niw4ICszMDMsNyBA QCBzdGF0aWMgcnhfaGFuZGxlcl9yZXN1bHRfdCBtYWN2bGFuX2hhbmRsZV9mcmFtZShzdHJ1Y3Qg c2tfYnVmZiAqKnBza2IpCiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCU1BQ1ZMQU5fU0tCX0NCKHNr YiktPnNyYyA9IHNyYzsKLQkJbWFjdmxhbl9icm9hZGNhc3RfZW5xdWV1ZShwb3J0LCBza2IpOwor CQltYWN2bGFuX2Jyb2FkY2FzdF9lbnF1ZXVlKHBvcnQsIHNyYywgc2tiKTsKIAogCQlyZXR1cm4g UlhfSEFORExFUl9QQVNTOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2Vu ZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMKaW5kZXggMmI1YWMxODE4Nzk3 Li4wMzA1NGY1NTA3M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5j CisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jCkBAIC0yMzM4LDggKzIzMzgsNiBA QCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbikKIAlzcGlu X2xvY2tfYmgoJnBuLT5hbGxfY2hhbm5lbHNfbG9jayk7CiAJbGlzdF9kZWwoJnBjaC0+bGlzdCk7 CiAJc3Bpbl91bmxvY2tfYmgoJnBuLT5hbGxfY2hhbm5lbHNfbG9jayk7Ci0JcHV0X25ldChwY2gt PmNoYW5fbmV0KTsKLQlwY2gtPmNoYW5fbmV0ID0gTlVMTDsKIAogCXBjaC0+ZmlsZS5kZWFkID0g MTsKIAl3YWtlX3VwX2ludGVycnVwdGlibGUoJnBjaC0+ZmlsZS5yd2FpdCk7CkBAIC0yOTU1LDYg KzI5NTMsOSBAQCBwcHBfZGlzY29ubmVjdF9jaGFubmVsKHN0cnVjdCBjaGFubmVsICpwY2gpCiAg Ki8KIHN0YXRpYyB2b2lkIHBwcF9kZXN0cm95X2NoYW5uZWwoc3RydWN0IGNoYW5uZWwgKnBjaCkK IHsKKwlwdXRfbmV0KHBjaC0+Y2hhbl9uZXQpOworCXBjaC0+Y2hhbl9uZXQgPSBOVUxMOworCiAJ YXRvbWljX2RlYygmY2hhbm5lbF9jb3VudCk7CiAKIAlpZiAoIXBjaC0+ZmlsZS5kZWFkKSB7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC90dW4uYyBiL2RyaXZlcnMvbmV0L3R1bi5jCmluZGV4IDRk NDUyN2MxM2Y1Mi4uMzQzYTcxYWQ4NjViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dW4uYwor KysgYi9kcml2ZXJzL25ldC90dW4uYwpAQCAtNzk0LDEwICs3OTQsNyBAQCBzdGF0aWMgbmV0ZGV2 X3R4X3QgdHVuX25ldF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYpCiAJaWYgKHVubGlrZWx5KHNrYl9vcnBoYW5fZnJhZ3Moc2tiLCBHRlBfQVRPTUlDKSkp CiAJCWdvdG8gZHJvcDsKIAotCWlmIChza2ItPnNrKSB7Ci0JCXNvY2tfdHhfdGltZXN0YW1wKHNr Yi0+c2ssICZza2Jfc2hpbmZvKHNrYiktPnR4X2ZsYWdzKTsKLQkJc3dfdHhfdGltZXN0YW1wKHNr Yik7Ci0JfQorCXNrYl90eF90aW1lc3RhbXAoc2tiKTsKIAogCS8qIE9ycGhhbiB0aGUgc2tiIC0g cmVxdWlyZWQgYXMgd2UgbWlnaHQgaGFuZyBvbiB0byBpdAogCSAqIGZvciBpbmRlZmluaXRlIHRp bWUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2Vl cHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYwpp bmRleCAyMzUwNTNiYTc3MzcuLmQ0MjlkY2JjYjA1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYworKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jCkBAIC00MTY5LDcgKzQxNjksNyBAQCBzdGF0 aWMgdm9pZCBhdGg5a19od19hcjkzMDBfc2V0X2JvYXJkX3ZhbHVlcyhzdHJ1Y3QgYXRoX2h3ICph aCwKIAlpZiAoIUFSX1NSRVZfOTMzMChhaCkgJiYgIUFSX1NSRVZfOTM0MChhaCkgJiYgIUFSX1NS RVZfOTUzMShhaCkpCiAJCWFyOTAwM19od19pbnRlcm5hbF9yZWd1bGF0b3JfYXBwbHkoYWgpOwog CWFyOTAwM19od19hcHBseV90dW5pbmdfY2FwcyhhaCk7Ci0JYXI5MDAzX2h3X2FwcGx5X21pbmNj YXB3cl90aHJlc2goYWgsIGNoYW4pOworCWFyOTAwM19od19hcHBseV9taW5jY2Fwd3JfdGhyZXNo KGFoLCBpczJnaHopOwogCWFyOTAwM19od190eGVuZF90b194cGFfb2ZmX2FwcGx5KGFoLCBpczJn aHopOwogCWFyOTAwM19od190aGVybW9tZXRlcl9hcHBseShhaCk7CiAJYXI5MDAzX2h3X3RoZXJt b19jYWxfYXBwbHkoYWgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgw MjExL2JyY21mbWFjL2JjbXNkaC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2Jy Y21mbWFjL2JjbXNkaC5jCmluZGV4IGExNmU2NDRlN2MwOC4uODM2N2FkNzdjYTQzIDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMKKysr IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jCkBAIC03 MDgsOCArNzA4LDEwIEBAIGludCBicmNtZl9zZGlvZF9yZWN2X2NoYWluKHN0cnVjdCBicmNtZl9z ZGlvX2RldiAqc2Rpb2RldiwKIAkJCXJldHVybiAtRU5PTUVNOwogCQllcnIgPSBicmNtZl9zZGlv ZF9idWZmcncoc2Rpb2RldiwgU0RJT19GVU5DXzIsIGZhbHNlLCBhZGRyLAogCQkJCQkgZ2xvbV9z a2IpOwotCQlpZiAoZXJyKQorCQlpZiAoZXJyKSB7CisJCQlicmNtdV9wa3RfYnVmX2ZyZWVfc2ti KGdsb21fc2tiKTsKIAkJCWdvdG8gZG9uZTsKKwkJfQogCiAJCXNrYl9xdWV1ZV93YWxrKHBrdHEs IHNrYikgewogCQkJbWVtY3B5KHNrYi0+ZGF0YSwgZ2xvbV9za2ItPmRhdGEsIHNrYi0+bGVuKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy93bF9j Zmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL3dsX2Nm ZzgwMjExLmMKaW5kZXggZDhmYTI3NmUzNjhiLi45ZTY1MDJhOTY0OGMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy93bF9jZmc4MDIxMS5jCisrKyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy93bF9jZmc4MDIxMS5jCkBA IC0zODIyLDcgKzM4MjIsNyBAQCBicmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkg KndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJCQkodTggKikmc2V0dGluZ3MtPmJl YWNvbi5oZWFkW2llX29mZnNldF0sCiAJCQkJc2V0dGluZ3MtPmJlYWNvbi5oZWFkX2xlbiAtIGll X29mZnNldCwKIAkJCQlXTEFOX0VJRF9TU0lEKTsKLQkJaWYgKCFzc2lkX2llKQorCQlpZiAoIXNz aWRfaWUgfHwgc3NpZF9pZS0+bGVuID4gSUVFRTgwMjExX01BWF9TU0lEX0xFTikKIAkJCXJldHVy biAtRUlOVkFMOwogCiAJCW1lbWNweShzc2lkX2xlLlNTSUQsIHNzaWRfaWUtPmRhdGEsIHNzaWRf aWUtPmxlbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJj bXNtYWMvZG1hLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbXNtYWMvZG1h LmMKaW5kZXggNGZiOTYzNWQzOTE5Li43NjYwYjUyM2RjZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtc21hYy9kbWEuYworKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9icmNtODAyMTEvYnJjbXNtYWMvZG1hLmMKQEAgLTEwNzksOCArMTA3OSwxMCBAQCBi b29sIGRtYV9yeGZpbGwoc3RydWN0IGRtYV9wdWIgKnB1YikKIAogCQlwYSA9IGRtYV9tYXBfc2lu Z2xlKGRpLT5kbWFkZXYsIHAtPmRhdGEsIGRpLT5yeGJ1ZnNpemUsCiAJCQkJICAgIERNQV9GUk9N X0RFVklDRSk7Ci0JCWlmIChkbWFfbWFwcGluZ19lcnJvcihkaS0+ZG1hZGV2LCBwYSkpCisJCWlm IChkbWFfbWFwcGluZ19lcnJvcihkaS0+ZG1hZGV2LCBwYSkpIHsKKwkJCWJyY211X3BrdF9idWZf ZnJlZV9za2IocCk7CiAJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAogCQkvKiBzYXZlIHRoZSBmcmVl IHBhY2tldCBwb2ludGVyICovCiAJCWRpLT5yeHBbcnhvdXRdID0gcDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtc21hYy9zdGYuYyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2JyY204MDIxMS9icmNtc21hYy9zdGYuYwppbmRleCBkZDkxNjI3MjI0OTUuLjBh Yjg2NWRlMTQ5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2Jy Y21zbWFjL3N0Zi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtc21h Yy9zdGYuYwpAQCAtODcsNyArODcsNyBAQCB2b2lkCiBicmNtc19jX3N0Zl9zc19hbGdvX2NoYW5u ZWxfZ2V0KHN0cnVjdCBicmNtc19jX2luZm8gKndsYywgdTE2ICpzc19hbGdvX2NoYW5uZWwsCiAJ CQkgICAgdTE2IGNoYW5zcGVjKQogewotCXN0cnVjdCB0eF9wb3dlciBwb3dlcjsKKwlzdHJ1Y3Qg dHhfcG93ZXIgcG93ZXIgPSB7IH07CiAJdTggc2lzb19tY3NfaWQsIGNkZF9tY3NfaWQsIHN0YmNf bWNzX2lkOwogCiAJLyogQ2xlYXIgcHJldmlvdXMgc2V0dGluZ3MgKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvcGNpZS90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9wY2llL3R4LmMKaW5kZXggNDUyYmIxYjBjNzkxLi41ZDJmZjBlMTQ5ZjAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvcGNpZS90eC5jCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvcGNpZS90eC5jCkBAIC0xMzY0LDkgKzEzNjQsOSBA QCBzdGF0aWMgaW50IGl3bF9wY2llX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFu cywKIAogCS8qIHN0YXJ0IHRoZSBURkQgd2l0aCB0aGUgc2NyYXRjaGJ1ZiAqLwogCXNjcmF0Y2hf c2l6ZSA9IG1pbl90KGludCwgY29weV9zaXplLCBJV0xfSENNRF9TQ1JBVENIQlVGX1NJWkUpOwot CW1lbWNweSgmdHhxLT5zY3JhdGNoYnVmc1txLT53cml0ZV9wdHJdLCAmb3V0X2NtZC0+aGRyLCBz Y3JhdGNoX3NpemUpOworCW1lbWNweSgmdHhxLT5zY3JhdGNoYnVmc1tpZHhdLCAmb3V0X2NtZC0+ aGRyLCBzY3JhdGNoX3NpemUpOwogCWl3bF9wY2llX3R4cV9idWlsZF90ZmQodHJhbnMsIHR4cSwK LQkJCSAgICAgICBpd2xfcGNpZV9nZXRfc2NyYXRjaGJ1Zl9kbWEodHhxLCBxLT53cml0ZV9wdHIp LAorCQkJICAgICAgIGl3bF9wY2llX2dldF9zY3JhdGNoYnVmX2RtYSh0eHEsIGlkeCksCiAJCQkg ICAgICAgc2NyYXRjaF9zaXplLCB0cnVlKTsKIAogCS8qIG1hcCBmaXJzdCBjb21tYW5kIGZyYWdt ZW50LCBpZiBhbnkgcmVtYWlucyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcXVpcmtzLmMg Yi9kcml2ZXJzL3BjaS9xdWlya3MuYwppbmRleCAxZjVlYTI0MDNkOTQuLjg5ZWUzODg2OTMzNCAx MDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcXVpcmtzLmMKKysrIGIvZHJpdmVycy9wY2kvcXVpcmtz LmMKQEAgLTMwNzQsMTMgKzMwNzQsMTUgQEAgc3RhdGljIHZvaWQgcXVpcmtfbm9fYnVzX3Jlc2V0 KHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB9CiAKIC8qCi0gKiBBdGhlcm9zIEFSOTN4eCBjaGlwcyBk byBub3QgYmVoYXZlIGFmdGVyIGEgYnVzIHJlc2V0LiAgVGhlIGRldmljZSB3aWxsCi0gKiB0aHJv dyBhIExpbmsgRG93biBlcnJvciBvbiBBRVItY2FwYWJsZSBzeXN0ZW1zIGFuZCByZWdhcmRsZXNz IG9mIEFFUiwKLSAqIGNvbmZpZyBzcGFjZSBvZiB0aGUgZGV2aWNlIGlzIG5ldmVyIGFjY2Vzc2li bGUgYWdhaW4gYW5kIHR5cGljYWxseQotICogY2F1c2VzIHRoZSBzeXN0ZW0gdG8gaGFuZyBvciBy ZXNldCB3aGVuIGFjY2VzcyBpcyBhdHRlbXB0ZWQuCisgKiBTb21lIEF0aGVyb3MgQVI5eHh4IGFu ZCBRQ0E5ODh4IGNoaXBzIGRvIG5vdCBiZWhhdmUgYWZ0ZXIgYSBidXMgcmVzZXQuCisgKiBUaGUg ZGV2aWNlIHdpbGwgdGhyb3cgYSBMaW5rIERvd24gZXJyb3Igb24gQUVSLWNhcGFibGUgc3lzdGVt cyBhbmQKKyAqIHJlZ2FyZGxlc3Mgb2YgQUVSLCBjb25maWcgc3BhY2Ugb2YgdGhlIGRldmljZSBp cyBuZXZlciBhY2Nlc3NpYmxlIGFnYWluCisgKiBhbmQgdHlwaWNhbGx5IGNhdXNlcyB0aGUgc3lz dGVtIHRvIGhhbmcgb3IgcmVzZXQgd2hlbiBhY2Nlc3MgaXMgYXR0ZW1wdGVkLgogICogaHR0cDov L3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1wY2kvbXNnMzQ3OTcuaHRtbAogICovCiBERUNM QVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9BVEhFUk9TLCAweDAwMzAsIHF1aXJr X25vX2J1c19yZXNldCk7CitERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9B VEhFUk9TLCAweDAwMzIsIHF1aXJrX25vX2J1c19yZXNldCk7CitERUNMQVJFX1BDSV9GSVhVUF9I RUFERVIoUENJX1ZFTkRPUl9JRF9BVEhFUk9TLCAweDAwM2MsIHF1aXJrX25vX2J1c19yZXNldCk7 CiAKIHN0YXRpYyB2b2lkIHBjaV9kb19maXh1cHMoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0 IHBjaV9maXh1cCAqZiwKIAkJCSAgc3RydWN0IHBjaV9maXh1cCAqZW5kKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9wbGF0Zm9ybS94ODYvaHAtd21pLmMgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9ocC13 bWkuYwppbmRleCAzMDEzODZjNGQ4NWIuLjQ1MGQ3OTBjOGJiZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9wbGF0Zm9ybS94ODYvaHAtd21pLmMKKysrIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaHAtd21p LmMKQEAgLTcyMyw2ICs3MjMsMTEgQEAgc3RhdGljIGludCBfX2luaXQgaHBfd21pX3Jma2lsbF9z ZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZpY2UpCiAJaWYgKGVycikKIAkJcmV0dXJu IGVycjsKIAorCWVyciA9IGhwX3dtaV9wZXJmb3JtX3F1ZXJ5KEhQV01JX1dJUkVMRVNTX1FVRVJZ LCAxLCAmd2lyZWxlc3MsCisJCQkJICAgc2l6ZW9mKHdpcmVsZXNzKSwgMCk7CisJaWYgKGVycikK KwkJcmV0dXJuIGVycjsKKwogCWlmICh3aXJlbGVzcyAmIDB4MSkgewogCQl3aWZpX3Jma2lsbCA9 IHJma2lsbF9hbGxvYygiaHAtd2lmaSIsICZkZXZpY2UtPmRldiwKIAkJCQkJICAgUkZLSUxMX1RZ UEVfV0xBTiwKQEAgLTkxMCw3ICs5MTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBocF93bWlfYmlv c19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZpY2UpCiAJZ3BzX3Jma2lsbCA9IE5V TEw7CiAJcmZraWxsMl9jb3VudCA9IDA7CiAKLQlpZiAoaHBfd21pX2Jpb3NfMjAwOV9sYXRlcigp IHx8IGhwX3dtaV9yZmtpbGxfc2V0dXAoZGV2aWNlKSkKKwlpZiAoaHBfd21pX3Jma2lsbF9zZXR1 cChkZXZpY2UpKQogCQlocF93bWlfcmZraWxsMl9zZXR1cChkZXZpY2UpOwogCiAJZXJyID0gZGV2 aWNlX2NyZWF0ZV9maWxlKCZkZXZpY2UtPmRldiwgJmRldl9hdHRyX2Rpc3BsYXkpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9wb3dlci9tYXgxNzA0Ml9iYXR0ZXJ5LmMgYi9kcml2ZXJzL3Bvd2VyL21h eDE3MDQyX2JhdHRlcnkuYwppbmRleCA2NmRhNjkxYzQxY2YuLjJjYTQ1Mjc0MzYwOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9wb3dlci9tYXgxNzA0Ml9iYXR0ZXJ5LmMKKysrIGIvZHJpdmVycy9wb3dl ci9tYXgxNzA0Ml9iYXR0ZXJ5LmMKQEAgLTI5NSwxMyArMjk1LDE2IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBtYXgxNzA0Ml93cml0ZV9tb2RlbF9kYXRhKHN0cnVjdCBtYXgxNzA0Ml9jaGlwICpjaGlw LAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWF4MTcwNDJfcmVhZF9tb2RlbF9kYXRhKHN0cnVj dCBtYXgxNzA0Ml9jaGlwICpjaGlwLAotCQkJCQl1OCBhZGRyLCB1MzIgKmRhdGEsIGludCBzaXpl KQorCQkJCQl1OCBhZGRyLCB1MTYgKmRhdGEsIGludCBzaXplKQogewogCXN0cnVjdCByZWdtYXAg Km1hcCA9IGNoaXAtPnJlZ21hcDsKIAlpbnQgaTsKKwl1MzIgdG1wOwogCi0JZm9yIChpID0gMDsg aSA8IHNpemU7IGkrKykKLQkJcmVnbWFwX3JlYWQobWFwLCBhZGRyICsgaSwgJmRhdGFbaV0pOwor CWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKwkJcmVnbWFwX3JlYWQobWFwLCBhZGRyICsg aSwgJnRtcCk7CisJCWRhdGFbaV0gPSAodTE2KXRtcDsKKwl9CiB9CiAKIHN0YXRpYyBpbmxpbmUg aW50IG1heDE3MDQyX21vZGVsX2RhdGFfY29tcGFyZShzdHJ1Y3QgbWF4MTcwNDJfY2hpcCAqY2hp cCwKQEAgLTMyNCw3ICszMjcsNyBAQCBzdGF0aWMgaW50IG1heDE3MDQyX2luaXRfbW9kZWwoc3Ry dWN0IG1heDE3MDQyX2NoaXAgKmNoaXApCiB7CiAJaW50IHJldDsKIAlpbnQgdGFibGVfc2l6ZSA9 IEFSUkFZX1NJWkUoY2hpcC0+cGRhdGEtPmNvbmZpZ19kYXRhLT5jZWxsX2NoYXJfdGJsKTsKLQl1 MzIgKnRlbXBfZGF0YTsKKwl1MTYgKnRlbXBfZGF0YTsKIAogCXRlbXBfZGF0YSA9IGtjYWxsb2Mo dGFibGVfc2l6ZSwgc2l6ZW9mKCp0ZW1wX2RhdGEpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXRlbXBf ZGF0YSkKQEAgLTMzOSw3ICszNDIsNyBAQCBzdGF0aWMgaW50IG1heDE3MDQyX2luaXRfbW9kZWwo c3RydWN0IG1heDE3MDQyX2NoaXAgKmNoaXApCiAJcmV0ID0gbWF4MTcwNDJfbW9kZWxfZGF0YV9j b21wYXJlKAogCQljaGlwLAogCQljaGlwLT5wZGF0YS0+Y29uZmlnX2RhdGEtPmNlbGxfY2hhcl90 YmwsCi0JCSh1MTYgKil0ZW1wX2RhdGEsCisJCXRlbXBfZGF0YSwKIAkJdGFibGVfc2l6ZSk7CiAK IAltYXgxMDc0Ml9sb2NrX21vZGVsKGNoaXApOwpAQCAtMzUyLDcgKzM1NSw3IEBAIHN0YXRpYyBp bnQgbWF4MTcwNDJfdmVyaWZ5X21vZGVsX2xvY2soc3RydWN0IG1heDE3MDQyX2NoaXAgKmNoaXAp CiB7CiAJaW50IGk7CiAJaW50IHRhYmxlX3NpemUgPSBBUlJBWV9TSVpFKGNoaXAtPnBkYXRhLT5j b25maWdfZGF0YS0+Y2VsbF9jaGFyX3RibCk7Ci0JdTMyICp0ZW1wX2RhdGE7CisJdTE2ICp0ZW1w X2RhdGE7CiAJaW50IHJldCA9IDA7CiAKIAl0ZW1wX2RhdGEgPSBrY2FsbG9jKHRhYmxlX3NpemUs IHNpemVvZigqdGVtcF9kYXRhKSwgR0ZQX0tFUk5FTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bw cy9jbGllbnRzL3Bwc19wYXJwb3J0LmMgYi9kcml2ZXJzL3Bwcy9jbGllbnRzL3Bwc19wYXJwb3J0 LmMKaW5kZXggMzhhOGJiZTc0ODEwLi44Mzc5N2Q4OWMzMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv cHBzL2NsaWVudHMvcHBzX3BhcnBvcnQuYworKysgYi9kcml2ZXJzL3Bwcy9jbGllbnRzL3Bwc19w YXJwb3J0LmMKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBwYXJwb3J0X2RldGFjaChz dHJ1Y3QgcGFycG9ydCAqcG9ydCkKIAlzdHJ1Y3QgcHBzX2NsaWVudF9wcCAqZGV2aWNlOwogCiAJ LyogRklYTUU6IG9vb2gsIHRoaXMgaXMgdWdseSEgKi8KLQlpZiAoc3RyY21wKHBhcmRldi0+bmFt ZSwgS0JVSUxEX01PRE5BTUUpKQorCWlmICghcGFyZGV2IHx8IHN0cmNtcChwYXJkZXYtPm5hbWUs IEtCVUlMRF9NT0ROQU1FKSkKIAkJLyogbm90IG91ciBwb3J0ICovCiAJCXJldHVybjsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLWRzMTMwNy5jIGIvZHJpdmVycy9ydGMvcnRjLWRzMTMw Ny5jCmluZGV4IGYxODJkYWUzYTRiNy4uNTIzNjg0MmQyOGFhIDEwMDY0NAotLS0gYS9kcml2ZXJz L3J0Yy9ydGMtZHMxMzA3LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWRzMTMwNy5jCkBAIC02MTEs NiArNjExLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydGNfY2xhc3Nfb3BzIGRzMTN4eF9ydGNf b3BzID0gewogICogQWxhcm0gc3VwcG9ydCBmb3IgbWNwNzk0MXggZGV2aWNlcy4KICAqLwogCisj ZGVmaW5lIE1DUDc5NFhYX1JFR19XRUVLREFZCQkweDMKKyNkZWZpbmUgTUNQNzk0WFhfUkVHX1dF RUtEQVlfV0RBWV9NQVNLCTB4NwogI2RlZmluZSBNQ1A3OTQxWF9SRUdfQ09OVFJPTAkJMHgwNwog IwlkZWZpbmUgTUNQNzk0MVhfQklUX0FMTTBfRU4JMHgxMAogIwlkZWZpbmUgTUNQNzk0MVhfQklU X0FMTTFfRU4JMHgyMApAQCAtODQwLDEyICs4NDIsMTUgQEAgc3RhdGljIGludCBkczEzMDdfcHJv YmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKIHsKIAlzdHJ1Y3QgZHMxMzA3CQkqZHMxMzA3 OwogCWludAkJCWVyciA9IC1FTk9ERVY7Ci0JaW50CQkJdG1wOworCWludAkJCXRtcCwgd2RheTsK IAljb25zdCBzdHJ1Y3QgY2hpcF9kZXNjCSpjaGlwID0gJmNoaXBzW2lkLT5kcml2ZXJfZGF0YV07 CiAJc3RydWN0IGkyY19hZGFwdGVyCSphZGFwdGVyID0gdG9faTJjX2FkYXB0ZXIoY2xpZW50LT5k ZXYucGFyZW50KTsKIAlib29sCQkJd2FudF9pcnEgPSBmYWxzZTsKIAl1bnNpZ25lZCBjaGFyCQkq YnVmOwogCXN0cnVjdCBkczEzMDdfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBkZXZfZ2V0X3BsYXRk YXRhKCZjbGllbnQtPmRldik7CisJc3RydWN0IHJ0Y190aW1lCQl0bTsKKwl1bnNpZ25lZCBsb25n CQl0aW1lc3RhbXA7CisKIAlzdGF0aWMgY29uc3QgaW50CWJic3FpX2JpdHBvc1tdID0gewogCQlb ZHNfMTMzN10gPSAwLAogCQlbZHNfMTMzOV0gPSBEUzEzMzlfQklUX0JCU1FJLApAQCAtMTExNSw2 ICsxMTIwLDI3IEBAIHJlYWRfcnRjOgogCQlyZXR1cm4gUFRSX0VSUihkczEzMDctPnJ0Yyk7CiAJ fQogCisJLyoKKwkgKiBTb21lIElQcyBoYXZlIHdlZWtkYXkgcmVzZXQgdmFsdWUgPSAweDEgd2hp Y2ggbWlnaHQgbm90IGNvcnJlY3QKKwkgKiBoZW5jZSBjb21wdXRlIHRoZSB3ZGF5IHVzaW5nIHRo ZSBjdXJyZW50IGRhdGUvbW9udGgveWVhciB2YWx1ZXMKKwkgKi8KKwlkczEzMDdfZ2V0X3RpbWUo JmNsaWVudC0+ZGV2LCAmdG0pOworCXdkYXkgPSB0bS50bV93ZGF5OworCXJ0Y190bV90b190aW1l KCZ0bSwgJnRpbWVzdGFtcCk7CisJcnRjX3RpbWVfdG9fdG0odGltZXN0YW1wLCAmdG0pOworCisJ LyoKKwkgKiBDaGVjayBpZiByZXNldCB3ZGF5IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjb21wdXRl ZCB3ZGF5CisJICogSWYgZGlmZmVyZW50IHRoZW4gc2V0IHRoZSB3ZGF5IHdoaWNoIHdlIGNvbXB1 dGVkIHVzaW5nCisJICogdGltZXN0YW1wCisJICovCisJaWYgKHdkYXkgIT0gdG0udG1fd2RheSkg eworCQl3ZGF5ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgTUNQNzk0WFhfUkVH X1dFRUtEQVkpOworCQl3ZGF5ID0gd2RheSAmIH5NQ1A3OTRYWF9SRUdfV0VFS0RBWV9XREFZX01B U0s7CisJCXdkYXkgPSB3ZGF5IHwgKHRtLnRtX3dkYXkgKyAxKTsKKwkJaTJjX3NtYnVzX3dyaXRl X2J5dGVfZGF0YShjbGllbnQsIE1DUDc5NFhYX1JFR19XRUVLREFZLCB3ZGF5KTsKKwl9CisKIAlp ZiAod2FudF9pcnEpIHsKIAkJZXJyID0gcmVxdWVzdF9pcnEoY2xpZW50LT5pcnEsIGRzMTMwN19p cnEsIElSUUZfU0hBUkVELAogCQkJICBkczEzMDctPnJ0Yy0+bmFtZSwgY2xpZW50KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFz ZC5jCmluZGV4IDFlZWYwZjU4Njk1MC4uY2YwMjE0MDA1ZmNhIDEwMDY0NAotLS0gYS9kcml2ZXJz L3MzOTAvYmxvY2svZGFzZC5jCisrKyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkLmMKQEAgLTE2 MTMsOSArMTYxMywxOCBAQCB2b2lkIGRhc2RfaW50X2hhbmRsZXIoc3RydWN0IGNjd19kZXZpY2Ug KmNkZXYsIHVuc2lnbmVkIGxvbmcgaW50cGFybSwKIAl1bnNpZ25lZCBsb25nIGxvbmcgbm93Owog CWludCBleHBpcmVzOwogCisJY3FyID0gKHN0cnVjdCBkYXNkX2Njd19yZXEgKikgaW50cGFybTsK IAlpZiAoSVNfRVJSKGlyYikpIHsKIAkJc3dpdGNoIChQVFJfRVJSKGlyYikpIHsKIAkJY2FzZSAt RUlPOgorCQkJaWYgKGNxciAmJiBjcXItPnN0YXR1cyA9PSBEQVNEX0NRUl9DTEVBUl9QRU5ESU5H KSB7CisJCQkJZGV2aWNlID0gKHN0cnVjdCBkYXNkX2RldmljZSAqKSBjcXItPnN0YXJ0ZGV2Owor CQkJCWNxci0+c3RhdHVzID0gREFTRF9DUVJfQ0xFQVJFRDsKKwkJCQlkYXNkX2RldmljZV9jbGVh cl90aW1lcihkZXZpY2UpOworCQkJCXdha2VfdXAoJmRhc2RfZmx1c2hfd3EpOworCQkJCWRhc2Rf c2NoZWR1bGVfZGV2aWNlX2JoKGRldmljZSk7CisJCQkJcmV0dXJuOworCQkJfQogCQkJYnJlYWs7 CiAJCWNhc2UgLUVUSU1FRE9VVDoKIAkJCURCRl9FVkVOVF9ERVZJRChEQkZfV0FSTklORywgY2Rl diwgIiVzOiAiCkBAIC0xNjMxLDcgKzE2NDAsNiBAQCB2b2lkIGRhc2RfaW50X2hhbmRsZXIoc3Ry dWN0IGNjd19kZXZpY2UgKmNkZXYsIHVuc2lnbmVkIGxvbmcgaW50cGFybSwKIAl9CiAKIAlub3cg PSBnZXRfdG9kX2Nsb2NrKCk7Ci0JY3FyID0gKHN0cnVjdCBkYXNkX2Njd19yZXEgKikgaW50cGFy bTsKIAkvKiBjaGVjayBmb3IgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBiZSBoYW5kbGVkIGltbWVk aWF0ZWx5ICovCiAJaWYgKCFjcXIgfHwKIAkgICAgIShzY3N3X2RzdGF0KCZpcmItPnNjc3cpID09 IChERVZfU1RBVF9DSE5fRU5EIHwgREVWX1NUQVRfREVWX0VORCkgJiYKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1jdHJsLmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21t Y3RybC5jCmluZGV4IGZiY2Q0OGQwYmZjMy4uMTZiMmRiM2NkOWYxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3Njc2kvYWFjcmFpZC9jb21tY3RybC5jCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2Nv bW1jdHJsLmMKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGludCBpb2N0bF9zZW5kX2ZpYihzdHJ1 Y3QgYWFjX2RldiAqIGRldiwgdm9pZCBfX3VzZXIgKmFyZykKIAlzdHJ1Y3QgZmliICpmaWJwdHI7 CiAJc3RydWN0IGh3X2ZpYiAqIGh3X2ZpYiA9IChzdHJ1Y3QgaHdfZmliICopMDsKIAlkbWFfYWRk cl90IGh3X2ZpYl9wYSA9IChkbWFfYWRkcl90KTBMTDsKLQl1bnNpZ25lZCBzaXplOworCXVuc2ln bmVkIGludCBzaXplLCBvc2l6ZTsKIAlpbnQgcmV0dmFsOwogCiAJaWYgKGRldi0+aW5fcmVzZXQp IHsKQEAgLTg3LDcgKzg3LDggQEAgc3RhdGljIGludCBpb2N0bF9zZW5kX2ZpYihzdHJ1Y3QgYWFj X2RldiAqIGRldiwgdm9pZCBfX3VzZXIgKmFyZykKIAkgKgl3aWxsIG5vdCBvdmVycnVuIHRoZSBi dWZmZXIgd2hlbiB3ZSBjb3B5IHRoZSBtZW1vcnkuIFJldHVybgogCSAqCWFuIGVycm9yIGlmIHdl IHdvdWxkLgogCSAqLwotCXNpemUgPSBsZTE2X3RvX2NwdShrZmliLT5oZWFkZXIuU2l6ZSkgKyBz aXplb2Yoc3RydWN0IGFhY19maWJoZHIpOworCW9zaXplID0gc2l6ZSA9IGxlMTZfdG9fY3B1KGtm aWItPmhlYWRlci5TaXplKSArCisJCXNpemVvZihzdHJ1Y3QgYWFjX2ZpYmhkcik7CiAJaWYgKHNp emUgPCBsZTE2X3RvX2NwdShrZmliLT5oZWFkZXIuU2VuZGVyU2l6ZSkpCiAJCXNpemUgPSBsZTE2 X3RvX2NwdShrZmliLT5oZWFkZXIuU2VuZGVyU2l6ZSk7CiAJaWYgKHNpemUgPiBkZXYtPm1heF9m aWJfc2l6ZSkgewpAQCAtMTE4LDYgKzExOSwxNCBAQCBzdGF0aWMgaW50IGlvY3RsX3NlbmRfZmli KHN0cnVjdCBhYWNfZGV2ICogZGV2LCB2b2lkIF9fdXNlciAqYXJnKQogCQlnb3RvIGNsZWFudXA7 CiAJfQogCisJLyogU2FuaXR5IGNoZWNrIHRoZSBzZWNvbmQgY29weSAqLworCWlmICgob3NpemUg IT0gbGUxNl90b19jcHUoa2ZpYi0+aGVhZGVyLlNpemUpICsKKwkJc2l6ZW9mKHN0cnVjdCBhYWNf ZmliaGRyKSkKKwkJfHwgKHNpemUgPCBsZTE2X3RvX2NwdShrZmliLT5oZWFkZXIuU2VuZGVyU2l6 ZSkpKSB7CisJCXJldHZhbCA9IC1FSU5WQUw7CisJCWdvdG8gY2xlYW51cDsKKwl9CisKIAlpZiAo a2ZpYi0+aGVhZGVyLkNvbW1hbmQgPT0gY3B1X3RvX2xlMTYoVGFrZUFCcmVha1B0KSkgewogCQlh YWNfYWRhcHRlcl9pbnRlcnJ1cHQoZGV2KTsKIAkJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2Nz aS9hcmNtc3IvYXJjbXNyX2hiYS5jIGIvZHJpdmVycy9zY3NpL2FyY21zci9hcmNtc3JfaGJhLmMK aW5kZXggNjUyYjQxYjRkZGJkLi40NDk0NTI5YzRhNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2Nz aS9hcmNtc3IvYXJjbXNyX2hiYS5jCisrKyBiL2RyaXZlcnMvc2NzaS9hcmNtc3IvYXJjbXNyX2hi YS5jCkBAIC0xODAyLDcgKzE4MDIsOCBAQCBzdGF0aWMgaW50IGFyY21zcl9pb3BfbWVzc2FnZV94 ZmVyKHN0cnVjdCBBZGFwdGVyQ29udHJvbEJsb2NrICphY2IsCiAKIAljYXNlIEFSQ01TUl9NRVNT QUdFX1dSSVRFX1dRQlVGRkVSOiB7CiAJCXVuc2lnbmVkIGNoYXIgKnZlcl9hZGRyOwotCQlpbnQz Ml90IG15X2VtcHR5X2xlbiwgdXNlcl9sZW4sIHdxYnVmX2ZpcnN0aW5kZXgsIHdxYnVmX2xhc3Rp bmRleDsKKwkJdWludDMyX3QgdXNlcl9sZW47CisJCWludDMyX3QgbXlfZW1wdHlfbGVuLCB3cWJ1 Zl9maXJzdGluZGV4LCB3cWJ1Zl9sYXN0aW5kZXg7CiAJCXVpbnQ4X3QgKnBRYnVmZmVyLCAqcHRt cHVzZXJidWZmZXI7CiAKIAkJdmVyX2FkZHIgPSBrbWFsbG9jKDEwMzIsIEdGUF9BVE9NSUMpOwpA QCAtMTgxOSw2ICsxODIwLDExIEBAIHN0YXRpYyBpbnQgYXJjbXNyX2lvcF9tZXNzYWdlX3hmZXIo c3RydWN0IEFkYXB0ZXJDb250cm9sQmxvY2sgKmFjYiwKIAkJfQogCQlwdG1wdXNlcmJ1ZmZlciA9 IHZlcl9hZGRyOwogCQl1c2VyX2xlbiA9IHBjbWRtZXNzYWdlZmxkLT5jbWRtZXNzYWdlLkxlbmd0 aDsKKwkJaWYgKHVzZXJfbGVuID4gMTAzMikgeworCQkJcmV0dmFsdWUgPSBBUkNNU1JfTUVTU0FH RV9GQUlMOworCQkJa2ZyZWUodmVyX2FkZHIpOworCQkJZ290byBtZXNzYWdlX291dDsKKwkJfQog CQltZW1jcHkocHRtcHVzZXJidWZmZXIsIHBjbWRtZXNzYWdlZmxkLT5tZXNzYWdlZGF0YWJ1ZmZl ciwgdXNlcl9sZW4pOwogCQl3cWJ1Zl9sYXN0aW5kZXggPSBhY2ItPndxYnVmX2xhc3RpbmRleDsK IAkJd3FidWZfZmlyc3RpbmRleCA9IGFjYi0+d3FidWZfZmlyc3RpbmRleDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvc2NzaS9jb25zdGFudHMuYyBiL2RyaXZlcnMvc2NzaS9jb25zdGFudHMuYwppbmRl eCBkMzVhNWQ2YzhkN2MuLjJjZGUyMWJlODBjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2Nv bnN0YW50cy5jCisrKyBiL2RyaXZlcnMvc2NzaS9jb25zdGFudHMuYwpAQCAtMTMzNSw5ICsxMzM1 LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc25zdGV4dFtdID0gewogCiAvKiBHZXQg c2Vuc2Uga2V5IHN0cmluZyBvciBOVUxMIGlmIG5vdCBhdmFpbGFibGUgKi8KIGNvbnN0IGNoYXIg Kgotc2NzaV9zZW5zZV9rZXlfc3RyaW5nKHVuc2lnbmVkIGNoYXIga2V5KSB7CitzY3NpX3NlbnNl X2tleV9zdHJpbmcodW5zaWduZWQgY2hhciBrZXkpCit7CiAjaWZkZWYgQ09ORklHX1NDU0lfQ09O U1RBTlRTCi0JaWYgKGtleSA8PSAweEUpCisJaWYgKGtleSA8IEFSUkFZX1NJWkUoc25zdGV4dCkp CiAJCXJldHVybiBzbnN0ZXh0W2tleV07CiAjZW5kaWYKIAlyZXR1cm4gTlVMTDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jIGIvZHJpdmVycy9z Y3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKaW5kZXggYWNlY2Q3ZGU0ZWExLi4wZjZm Mjk2ZWFmZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNf YmFzZS5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jCkBA IC0zOTk2LDcgKzM5OTYsNyBAQCBzdGF0aWMgaW50IG1lZ2FzYXNfaW5pdF9mdyhzdHJ1Y3QgbWVn YXNhc19pbnN0YW5jZSAqaW5zdGFuY2UpCiAJLyogRmluZCBmaXJzdCBtZW1vcnkgYmFyICovCiAJ YmFyX2xpc3QgPSBwY2lfc2VsZWN0X2JhcnMoaW5zdGFuY2UtPnBkZXYsIElPUkVTT1VSQ0VfTUVN KTsKIAlpbnN0YW5jZS0+YmFyID0gZmluZF9maXJzdF9iaXQoJmJhcl9saXN0LCBzaXplb2YodW5z aWduZWQgbG9uZykpOwotCWlmIChwY2lfcmVxdWVzdF9zZWxlY3RlZF9yZWdpb25zKGluc3RhbmNl LT5wZGV2LCBpbnN0YW5jZS0+YmFyLAorCWlmIChwY2lfcmVxdWVzdF9zZWxlY3RlZF9yZWdpb25z KGluc3RhbmNlLT5wZGV2LCAxPDxpbnN0YW5jZS0+YmFyLAogCQkJCQkgIm1lZ2FzYXM6IExTSSIp KSB7CiAJCXByaW50ayhLRVJOX0RFQlVHICJtZWdhc2FzOiBJTyBtZW1vcnkgcmVnaW9uIGJ1c3kh XG4iKTsKIAkJcmV0dXJuIC1FQlVTWTsKQEAgLTQyNjEsNyArNDI2MSw3IEBAIGZhaWxfcmVhZHlf c3RhdGU6CiAJaW91bm1hcChpbnN0YW5jZS0+cmVnX3NldCk7CiAKICAgICAgIGZhaWxfaW9yZW1h cDoKLQlwY2lfcmVsZWFzZV9zZWxlY3RlZF9yZWdpb25zKGluc3RhbmNlLT5wZGV2LCBpbnN0YW5j ZS0+YmFyKTsKKwlwY2lfcmVsZWFzZV9zZWxlY3RlZF9yZWdpb25zKGluc3RhbmNlLT5wZGV2LCAx PDxpbnN0YW5jZS0+YmFyKTsKIAogCXJldHVybiAtRUlOVkFMOwogfQpAQCAtNDI4Miw3ICs0Mjgy LDcgQEAgc3RhdGljIHZvaWQgbWVnYXNhc19yZWxlYXNlX21maShzdHJ1Y3QgbWVnYXNhc19pbnN0 YW5jZSAqaW5zdGFuY2UpCiAKIAlpb3VubWFwKGluc3RhbmNlLT5yZWdfc2V0KTsKIAotCXBjaV9y ZWxlYXNlX3NlbGVjdGVkX3JlZ2lvbnMoaW5zdGFuY2UtPnBkZXYsIGluc3RhbmNlLT5iYXIpOwor CXBjaV9yZWxlYXNlX3NlbGVjdGVkX3JlZ2lvbnMoaW5zdGFuY2UtPnBkZXYsIDE8PGluc3RhbmNl LT5iYXIpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdh cmFpZF9zYXNfZnVzaW9uLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Z1 c2lvbi5jCmluZGV4IGYxNjc2NGJmOTk2NC4uNTYwYmJiZDAzNzg4IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Z1c2lvbi5jCisrKyBiL2RyaXZlcnMvc2Nz aS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnVzaW9uLmMKQEAgLTIxOTAsNyArMjE5MCw3IEBAIG1l Z2FzYXNfcmVsZWFzZV9mdXNpb24oc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKQog CiAJaW91bm1hcChpbnN0YW5jZS0+cmVnX3NldCk7CiAKLQlwY2lfcmVsZWFzZV9zZWxlY3RlZF9y ZWdpb25zKGluc3RhbmNlLT5wZGV2LCBpbnN0YW5jZS0+YmFyKTsKKwlwY2lfcmVsZWFzZV9zZWxl Y3RlZF9yZWdpb25zKGluc3RhbmNlLT5wZGV2LCAxPDxpbnN0YW5jZS0+YmFyKTsKIH0KIAogLyoq CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFxYm9hcmQyMDAw LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFxYm9hcmQyMDAwLmMKaW5kZXgg YThmNjAzNmFkODJiLi43NDZkNzM2MGNmZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9j b21lZGkvZHJpdmVycy9kYXFib2FyZDIwMDAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRp L2RyaXZlcnMvZGFxYm9hcmQyMDAwLmMKQEAgLTY4NCw3ICs2ODQsNyBAQCBzdGF0aWMgY29uc3Qg dm9pZCAqZGFxYm9hcmQyMDAwX2ZpbmRfYm9hcmRpbmZvKHN0cnVjdCBjb21lZGlfZGV2aWNlICpk ZXYsCiAJY29uc3Qgc3RydWN0IGRhcTIwMF9ib2FyZHR5cGUgKmJvYXJkOwogCWludCBpOwogCi0J aWYgKHBjaWRldi0+c3Vic3lzdGVtX2RldmljZSAhPSBQQ0lfVkVORE9SX0lEX0lPVEVDSCkKKwlp ZiAocGNpZGV2LT5zdWJzeXN0ZW1fdmVuZG9yICE9IFBDSV9WRU5ET1JfSURfSU9URUNIKQogCQly ZXR1cm4gTlVMTDsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJvYXJkdHlwZXMpOyBp KyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9taW9f Y29tbW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfbWlvX2NvbW1vbi5j CmluZGV4IDdmZmRjYzA3ZWY5Mi4uODNhOTZiY2IyMWI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0 YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfbWlvX2NvbW1vbi5jCisrKyBiL2RyaXZlcnMvc3RhZ2lu Zy9jb21lZGkvZHJpdmVycy9uaV9taW9fY29tbW9uLmMKQEAgLTI5NTksNyArMjk1OSwxNSBAQCBz dGF0aWMgaW50IG5pX2FvX2ludHRyaWcoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwKIAlpbnQg aTsKIAlzdGF0aWMgY29uc3QgaW50IHRpbWVvdXQgPSAxMDAwOwogCi0JaWYgKHRyaWdfbnVtICE9 IGNtZC0+c3RhcnRfYXJnKQorCS8qCisJICogUmVxdWlyZSB0cmlnX251bSA9PSBjbWQtPnN0YXJ0 X2FyZyB3aGVuIGNtZC0+c3RhcnRfc3JjID09IFRSSUdfSU5ULgorCSAqIEZvciBiYWNrd2FyZHMg Y29tcGF0aWJpbGl0eSwgYWxzbyBhbGxvdyB0cmlnX251bSA9PSAwIHdoZW4KKwkgKiBjbWQtPnN0 YXJ0X3NyYyAhPSBUUklHX0lOVCAoaS5lLiB3aGVuIGNtZC0+c3RhcnRfc3JjID09IFRSSUdfRVhU KTsKKwkgKiBpbiB0aGF0IGNhc2UsIHRoZSBpbnRlcm5hbCB0cmlnZ2VyIGlzIGJlaW5nIHVzZWQg YXMgYSBwcmUtdHJpZ2dlcgorCSAqIGJlZm9yZSB0aGUgZXh0ZXJuYWwgdHJpZ2dlci4KKwkgKi8K KwlpZiAoISh0cmlnX251bSA9PSBjbWQtPnN0YXJ0X2FyZyB8fAorCSAgICAgICh0cmlnX251bSA9 PSAwICYmIGNtZC0+c3RhcnRfc3JjICE9IFRSSUdfSU5UKSkpCiAJCXJldHVybiAtRUlOVkFMOwog CiAJLyogTnVsbCB0cmlnIGF0IGJlZ2lubmluZyBwcmV2ZW50IGFvIHN0YXJ0IHRyaWdnZXIgZnJv bSBleGVjdXRpbmcgbW9yZSB0aGFuCkBAIC00NDA3LDcgKzQ0MTUsNyBAQCBzdGF0aWMgaW50IG5p X0VfaW5pdChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2KQogCQllbHNlCiAJCQlzLT5tYXhkYXRh ID0gMHhmZmZmZmY7CiAJCXMtPmluc25fcmVhZCA9IG5pX3Rpb19pbnNuX3JlYWQ7Ci0JCXMtPmlu c25fd3JpdGUgPSBuaV90aW9faW5zbl9yZWFkOworCQlzLT5pbnNuX3dyaXRlID0gbmlfdGlvX2lu c25fd3JpdGU7CiAJCXMtPmluc25fY29uZmlnID0gbmlfdGlvX2luc25fY29uZmlnOwogI2lmZGVm IFBDSURNQQogCQlzLT5zdWJkZXZfZmxhZ3MgfD0gU0RGX0NNRF9SRUFEIC8qIHwgU0RGX0NNRF9X UklURSAqLzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9sdXN0cmUvbHVzdHJlL2xsaXRl L2xsaXRlX2xpYi5jIGIvZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvbGxpdGVf bGliLmMKaW5kZXggMGU1MDdmNTNmZDliLi4xN2NmYTk5YjRmYzAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvc3RhZ2luZy9sdXN0cmUvbHVzdHJlL2xsaXRlL2xsaXRlX2xpYi5jCisrKyBiL2RyaXZlcnMv c3RhZ2luZy9sdXN0cmUvbHVzdHJlL2xsaXRlL2xsaXRlX2xpYi5jCkBAIC0xMzg2LDcgKzEzODYs NyBAQCBpbnQgbGxfc2V0YXR0cl9yYXcoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0 dHIgKmF0dHIsIGJvb2wgaHNtX2ltcG9ydCkKIAkJYXR0ci0+aWFfdmFsaWQgfD0gQVRUUl9NVElN RSB8IEFUVFJfQ1RJTUU7CiAJfQogCi0JLyogUE9TSVg6IGNoZWNrIGJlZm9yZSBBVFRSXypUSU1F X1NFVCBzZXQgKGZyb20gaW5vZGVfY2hhbmdlX29rKSAqLworCS8qIFBPU0lYOiBjaGVjayBiZWZv cmUgQVRUUl8qVElNRV9TRVQgc2V0IChmcm9tIHNldGF0dHJfcHJlcGFyZSkgKi8KIAlpZiAoYXR0 ci0+aWFfdmFsaWQgJiBUSU1FU19TRVRfRkxBR1MpIHsKIAkJaWYgKCghdWlkX2VxKGN1cnJlbnRf ZnN1aWQoKSwgaW5vZGUtPmlfdWlkKSkgJiYKIAkJICAgICFjYXBhYmxlKENGU19DQVBfRk9XTkVS KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldC5jIGIvZHJp dmVycy90YXJnZXQvaXNjc2kvaXNjc2lfdGFyZ2V0LmMKaW5kZXggMDBiODAxZGY3MzIyLi5lZjlj MzNmZTI2MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldC5j CisrKyBiL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldC5jCkBAIC01MDUsNyArNTA1 LDggQEAgc3RhdGljIHZvaWQgaXNjc2l0X2Fib3J0ZWRfdGFzayhzdHJ1Y3QgaXNjc2lfY29ubiAq Y29ubiwgc3RydWN0IGlzY3NpX2NtZCAqY21kKQogCWJvb2wgc2NzaV9jbWQgPSAoY21kLT5pc2Nz aV9vcGNvZGUgPT0gSVNDU0lfT1BfU0NTSV9DTUQpOwogCiAJc3Bpbl9sb2NrX2JoKCZjb25uLT5j bWRfbG9jayk7Ci0JaWYgKCFsaXN0X2VtcHR5KCZjbWQtPmlfY29ubl9ub2RlKSkKKwlpZiAoIWxp c3RfZW1wdHkoJmNtZC0+aV9jb25uX25vZGUpICYmCisJICAgICEoY21kLT5zZV9jbWQudHJhbnNw b3J0X3N0YXRlICYgQ01EX1RfRkFCUklDX1NUT1ApKQogCQlsaXN0X2RlbF9pbml0KCZjbWQtPmlf Y29ubl9ub2RlKTsKIAlzcGluX3VubG9ja19iaCgmY29ubi0+Y21kX2xvY2spOwogCkBAIC00MTc0 LDYgKzQxNzUsNyBAQCB0cmFuc3BvcnRfZXJyOgogCiBzdGF0aWMgdm9pZCBpc2NzaXRfcmVsZWFz ZV9jb21tYW5kc19mcm9tX2Nvbm4oc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pCiB7CisJTElTVF9I RUFEKHRtcF9saXN0KTsKIAlzdHJ1Y3QgaXNjc2lfY21kICpjbWQgPSBOVUxMLCAqY21kX3RtcCA9 IE5VTEw7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3MgPSBjb25uLT5zZXNzOwogCS8qCkBA IC00MTgyLDE4ICs0MTg0LDI2IEBAIHN0YXRpYyB2b2lkIGlzY3NpdF9yZWxlYXNlX2NvbW1hbmRz X2Zyb21fY29ubihzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubikKIAkgKiBoYXMgYmVlbiByZXNldCAt PiByZXR1cm5lZCBzbGVlcGluZyBwcmUtaGFuZGxlciBzdGF0ZS4KIAkgKi8KIAlzcGluX2xvY2tf YmgoJmNvbm4tPmNtZF9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY21kLCBjbWRf dG1wLCAmY29ubi0+Y29ubl9jbWRfbGlzdCwgaV9jb25uX25vZGUpIHsKKwlsaXN0X3NwbGljZV9p bml0KCZjb25uLT5jb25uX2NtZF9saXN0LCAmdG1wX2xpc3QpOwogCisJbGlzdF9mb3JfZWFjaF9l bnRyeShjbWQsICZ0bXBfbGlzdCwgaV9jb25uX25vZGUpIHsKKwkJc3RydWN0IHNlX2NtZCAqc2Vf Y21kID0gJmNtZC0+c2VfY21kOworCisJCWlmIChzZV9jbWQtPnNlX3RmbyAhPSBOVUxMKSB7CisJ CQlzcGluX2xvY2soJnNlX2NtZC0+dF9zdGF0ZV9sb2NrKTsKKwkJCXNlX2NtZC0+dHJhbnNwb3J0 X3N0YXRlIHw9IENNRF9UX0ZBQlJJQ19TVE9QOworCQkJc3Bpbl91bmxvY2soJnNlX2NtZC0+dF9z dGF0ZV9sb2NrKTsKKwkJfQorCX0KKwlzcGluX3VubG9ja19iaCgmY29ubi0+Y21kX2xvY2spOwor CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNtZCwgY21kX3RtcCwgJnRtcF9saXN0LCBpX2Nv bm5fbm9kZSkgewogCQlsaXN0X2RlbF9pbml0KCZjbWQtPmlfY29ubl9ub2RlKTsKLQkJc3Bpbl91 bmxvY2tfYmgoJmNvbm4tPmNtZF9sb2NrKTsKIAogCQlpc2NzaXRfaW5jcmVtZW50X21heGNtZHNu KGNtZCwgc2Vzcyk7Ci0KIAkJaXNjc2l0X2ZyZWVfY21kKGNtZCwgdHJ1ZSk7CiAKLQkJc3Bpbl9s b2NrX2JoKCZjb25uLT5jbWRfbG9jayk7CiAJfQotCXNwaW5fdW5sb2NrX2JoKCZjb25uLT5jbWRf bG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIGlzY3NpdF9zdG9wX3RpbWVyc19mb3JfY21kcygKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF9sb2dpbi5jIGIvZHJp dmVycy90YXJnZXQvaXNjc2kvaXNjc2lfdGFyZ2V0X2xvZ2luLmMKaW5kZXggMDlkYWM5YWMzMDVl Li5kNTM0NzM4ZmYzYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3Rh cmdldF9sb2dpbi5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF9sb2dp bi5jCkBAIC0xNDE4LDggKzE0MTgsOSBAQCBzdGF0aWMgaW50IF9faXNjc2lfdGFyZ2V0X2xvZ2lu X3RocmVhZChzdHJ1Y3QgaXNjc2lfbnAgKm5wKQogCX0KIAlsb2dpbi0+emVyb190c2loID0gemVy b190c2loOwogCi0JY29ubi0+c2Vzcy0+c2Vfc2Vzcy0+c3VwX3Byb3Rfb3BzID0KLQkJY29ubi0+ Y29ubl90cmFuc3BvcnQtPmlzY3NpdF9nZXRfc3VwX3Byb3Rfb3BzKGNvbm4pOworCWlmIChjb25u LT5zZXNzKQorCQljb25uLT5zZXNzLT5zZV9zZXNzLT5zdXBfcHJvdF9vcHMgPQorCQkJY29ubi0+ Y29ubl90cmFuc3BvcnQtPmlzY3NpdF9nZXRfc3VwX3Byb3Rfb3BzKGNvbm4pOwogCiAJdHBnID0g Y29ubi0+dHBnOwogCWlmICghdHBnKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJn ZXRfY29yZV9kZXZpY2UuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCmlu ZGV4IDA3NDI1YjhkNjA2ZS4uNTYzOGI2MGI0MTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Rhcmdl dC90YXJnZXRfY29yZV9kZXZpY2UuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9k ZXZpY2UuYwpAQCAtMTU4MywxMyArMTU4MywxNSBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRf YWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9oYmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKICAqIGlu IEFUQSBhbmQgd2UgbmVlZCB0byBzZXQgVFBFPTEKICAqLwogYm9vbCB0YXJnZXRfY29uZmlndXJl X3VubWFwX2Zyb21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKLQkJCQkgICAg ICAgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIGludCBibG9ja19zaXplKQorCQkJCSAgICAgICBz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIHsKKwlpbnQgYmxvY2tfc2l6ZSA9IHF1ZXVlX2xvZ2lj YWxfYmxvY2tfc2l6ZShxKTsKKwogCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCiAJCXJldHVy biBmYWxzZTsKIAotCWF0dHJpYi0+bWF4X3VubWFwX2xiYV9jb3VudCA9IChxLT5saW1pdHMubWF4 X2Rpc2NhcmRfc2VjdG9ycyA8PCA5KSAvCi0JCQkJCQkJCWJsb2NrX3NpemU7CisJYXR0cmliLT5t YXhfdW5tYXBfbGJhX2NvdW50ID0KKwkJcS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnMgPj4g KGlsb2cyKGJsb2NrX3NpemUpIC0gOSk7CiAJLyoKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRv IDEgaW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0 L3RhcmdldF9jb3JlX2ZpbGUuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuYwpp bmRleCA3MDNmODg1ZGVhYzEuLjAzYmZhNDliNTU5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZmlsZS5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2Zp bGUuYwpAQCAtMTY1LDggKzE2NSw3IEBAIHN0YXRpYyBpbnQgZmRfY29uZmlndXJlX2RldmljZShz dHJ1Y3Qgc2VfZGV2aWNlICpkZXYpCiAJCQlkZXZfc2l6ZSwgZGl2X3U2NChkZXZfc2l6ZSwgZmRf ZGV2LT5mZF9ibG9ja19zaXplKSwKIAkJCWZkX2Rldi0+ZmRfYmxvY2tfc2l6ZSk7CiAKLQkJaWYg KHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZSgmZGV2LT5kZXZfYXR0cmliLCBxLAot CQkJCQkJICAgICAgZmRfZGV2LT5mZF9ibG9ja19zaXplKSkKKwkJaWYgKHRhcmdldF9jb25maWd1 cmVfdW5tYXBfZnJvbV9xdWV1ZSgmZGV2LT5kZXZfYXR0cmliLCBxKSkKIAkJCXByX2RlYnVnKCJJ RklMRTogQkxPQ0sgRGlzY2FyZCBzdXBwb3J0IGF2YWlsYWJsZSwiCiAJCQkJICIgZGlzYWJsZWQg YnkgZGVmYXVsdFxuIik7CiAJCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRf Y29yZV9pYmxvY2suYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9jay5jCmluZGV4 IDkxYzYyNWFjNDBkMS4uN2VlOTI3ZDljM2FjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90 YXJnZXRfY29yZV9pYmxvY2suYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxv Y2suYwpAQCAtMTI2LDggKzEyNiw3IEBAIHN0YXRpYyBpbnQgaWJsb2NrX2NvbmZpZ3VyZV9kZXZp Y2Uoc3RydWN0IHNlX2RldmljZSAqZGV2KQogCWRldi0+ZGV2X2F0dHJpYi5od19tYXhfc2VjdG9y cyA9IHF1ZXVlX21heF9od19zZWN0b3JzKHEpOwogCWRldi0+ZGV2X2F0dHJpYi5od19xdWV1ZV9k ZXB0aCA9IHEtPm5yX3JlcXVlc3RzOwogCi0JaWYgKHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJv bV9xdWV1ZSgmZGV2LT5kZXZfYXR0cmliLCBxLAotCQkJCQkgICAgICBkZXYtPmRldl9hdHRyaWIu aHdfYmxvY2tfc2l6ZSkpCisJaWYgKHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZSgm ZGV2LT5kZXZfYXR0cmliLCBxKSkKIAkJcHJfZGVidWcoIklCTE9DSzogQkxPQ0sgRGlzY2FyZCBz dXBwb3J0IGF2YWlsYWJsZSwiCiAJCQkgIiBkaXNhYmxlZCBieSBkZWZhdWx0XG4iKTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMgYi9kcml2ZXJz L3RhcmdldC90YXJnZXRfY29yZV90cmFuc3BvcnQuYwppbmRleCAzM2ZjNThkNTE0ZDMuLjc3Njlh Zjk0YWVlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0 LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMKQEAgLTI0NTUs MTUgKzI0NTUsMTAgQEAgc3RhdGljIHZvaWQgdGFyZ2V0X3JlbGVhc2VfY21kX2tyZWYoc3RydWN0 IGtyZWYgKmtyZWYpCiAJc3RydWN0IHNlX3Nlc3Npb24gKnNlX3Nlc3MgPSBzZV9jbWQtPnNlX3Nl c3M7CiAJYm9vbCBmYWJyaWNfc3RvcDsKIAotCWlmIChsaXN0X2VtcHR5KCZzZV9jbWQtPnNlX2Nt ZF9saXN0KSkgewotCQlzcGluX3VubG9jaygmc2Vfc2Vzcy0+c2Vzc19jbWRfbG9jayk7Ci0JCXRh cmdldF9mcmVlX2NtZF9tZW0oc2VfY21kKTsKLQkJc2VfY21kLT5zZV90Zm8tPnJlbGVhc2VfY21k KHNlX2NtZCk7Ci0JCXJldHVybjsKLQl9CiAKIAlzcGluX2xvY2soJnNlX2NtZC0+dF9zdGF0ZV9s b2NrKTsKLQlmYWJyaWNfc3RvcCA9IChzZV9jbWQtPnRyYW5zcG9ydF9zdGF0ZSAmIENNRF9UX0ZB QlJJQ19TVE9QKTsKKwlmYWJyaWNfc3RvcCA9IChzZV9jbWQtPnRyYW5zcG9ydF9zdGF0ZSAmIENN RF9UX0ZBQlJJQ19TVE9QKSAmJgorCQkgICAgICAoc2VfY21kLT50cmFuc3BvcnRfc3RhdGUgJiBD TURfVF9BQk9SVEVEKTsKIAlzcGluX3VubG9jaygmc2VfY21kLT50X3N0YXRlX2xvY2spOwogCiAJ aWYgKHNlX2NtZC0+Y21kX3dhaXRfc2V0IHx8IGZhYnJpY19zdG9wKSB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX3BjaS5jIGIvZHJpdmVycy90dHkvc2VyaWFsLzgy NTAvODI1MF9wY2kuYwppbmRleCBiNGRmODhkYTViNDAuLmU5MGVhM2RhNWNkYSAxMDA2NDQKLS0t IGEvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAvODI1MF9wY2kuYworKysgYi9kcml2ZXJzL3R0eS9z ZXJpYWwvODI1MC84MjUwX3BjaS5jCkBAIC0xODIxLDYgKzE4MjEsNDMgQEAgcGNpX3djaF9jaDM1 M19zZXR1cChzdHJ1Y3Qgc2VyaWFsX3ByaXZhdGUgKnByaXYsCiAjZGVmaW5lIFBDSV9ERVZJQ0Vf SURfUEVSSUNPTV9QSTdDOVg3OTU0CTB4Nzk1NAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1BFUklD T01fUEk3QzlYNzk1OAkweDc5NTgKIAorI2RlZmluZSBQQ0lfVkVORE9SX0lEX0FDQ0VTSU8JCQkw eDQ5NGYKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfQ09NXzJTREIJMHgxMDUx CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19NUENJRV9DT01fMlMJMHgxMDUzCisjZGVm aW5lIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lFX0NPTV80U0RCCTB4MTA1QworI2RlZmluZSBQ Q0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfQ09NXzRTCTB4MTA1RQorI2RlZmluZSBQQ0lfREVW SUNFX0lEX0FDQ0VTSU9fUENJRV9DT00yMzJfMkRCCTB4MTA5MQorI2RlZmluZSBQQ0lfREVWSUNF X0lEX0FDQ0VTSU9fTVBDSUVfQ09NMjMyXzIJMHgxMDkzCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURf QUNDRVNJT19QQ0lFX0NPTTIzMl80REIJMHgxMDk5CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfQUND RVNJT19NUENJRV9DT00yMzJfNAkweDEwOUIKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lP X1BDSUVfQ09NXzJTTURCCTB4MTBEMQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBD SUVfQ09NXzJTTQkweDEwRDMKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfQ09N XzRTTURCCTB4MTBEQQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfQ09NXzRT TQkweDEwREMKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lPX01QQ0lFX0lDTTQ4NV8xCTB4 MTEwOAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfSUNNNDIyXzIJMHgxMTEw CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19NUENJRV9JQ000ODVfMgkweDExMTEKKyNk ZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lPX01QQ0lFX0lDTTQyMl80CTB4MTExOAorI2RlZmlu ZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfSUNNNDg1XzQJMHgxMTE5CisjZGVmaW5lIFBD SV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lFX0lDTV8yUwkweDExNTIKKyNkZWZpbmUgUENJX0RFVklD RV9JRF9BQ0NFU0lPX1BDSUVfSUNNXzRTCTB4MTE1QQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FD Q0VTSU9fUENJRV9JQ00yMzJfMgkweDExOTAKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lP X01QQ0lFX0lDTTIzMl8yCTB4MTE5MQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJ RV9JQ00yMzJfNAkweDExOTgKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lPX01QQ0lFX0lD TTIzMl80CTB4MTE5OQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9JQ01fMlNN CTB4MTFEMAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9DT000MjJfNAkweDEw NUEKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfQ09NNDg1XzQJMHgxMDVCCisj ZGVmaW5lIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lFX0NPTTQyMl84CTB4MTA2QQorI2RlZmlu ZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9DT000ODVfOAkweDEwNkIKKyNkZWZpbmUgUENJ X0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfQ09NMjMyXzQJMHgxMDk4CisjZGVmaW5lIFBDSV9ERVZJ Q0VfSURfQUNDRVNJT19QQ0lFX0NPTTIzMl84CTB4MTBBOQorI2RlZmluZSBQQ0lfREVWSUNFX0lE X0FDQ0VTSU9fUENJRV9DT01fNFNNCTB4MTBEOQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VT SU9fUENJRV9DT01fOFNNCTB4MTBFOQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJ RV9JQ01fNFNNCTB4MTFEOAorCisKKwogLyogVW5rbm93biB2ZW5kb3JzL2NhcmRzIC0gdGhpcyBz aG91bGQgbm90IGJlIGluIGxpbnV4L3BjaV9pZHMuaCAqLwogI2RlZmluZSBQQ0lfU1VCREVWSUNF X0lEX1VOS05PV05fMHgxNTg0CTB4MTU4NAogI2RlZmluZSBQQ0lfU1VCREVWSUNFX0lEX1VOS05P V05fMHgxNTg4CTB4MTU4OApAQCAtNDg5MCw2ICs0OTI3LDEwOCBAQCBzdGF0aWMgc3RydWN0IHBj aV9kZXZpY2VfaWQgc2VyaWFsX3BjaV90YmxbXSA9IHsKIAkJMCwKIAkJMCwgcGJuX3Blcmljb21f UEk3QzlYNzk1OCB9LAogCS8qCisJICogQUNDRVMgSS9PIFByb2R1Y3RzIHF1YWQKKwkgKi8KKwl7 CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfQ09NXzJT REIsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJCXBibl9wZXJpY29tX1BJN0M5 WDc5NTQgfSwKKwl7CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9BQ0NFU0lP X01QQ0lFX0NPTV8yUywKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Bl cmljb21fUEk3QzlYNzk1NCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNF X0lEX0FDQ0VTSU9fUENJRV9DT01fNFNEQiwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwg MCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1NCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lP LCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfQ09NXzRTLAorCQlQQ0lfQU5ZX0lELCBQQ0lf QU5ZX0lELCAwLCAwLAorCQlwYm5fcGVyaWNvbV9QSTdDOVg3OTU0IH0sCisJewlQQ0lfVkVORE9S X0lEX0FDQ0VTSU8sIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lFX0NPTTIzMl8yREIsCisJCVBD SV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJCXBibl9wZXJpY29tX1BJN0M5WDc5NTQgfSwK Kwl7CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9BQ0NFU0lPX01QQ0lFX0NP TTIzMl8yLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAorCQlwYm5fcGVyaWNvbV9Q STdDOVg3OTU0IH0sCisJewlQQ0lfVkVORE9SX0lEX0FDQ0VTSU8sIFBDSV9ERVZJQ0VfSURfQUND RVNJT19QQ0lFX0NPTTIzMl80REIsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJ CXBibl9wZXJpY29tX1BJN0M5WDc5NTQgfSwKKwl7CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJ X0RFVklDRV9JRF9BQ0NFU0lPX01QQ0lFX0NPTTIzMl80LAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5Z X0lELCAwLCAwLAorCQlwYm5fcGVyaWNvbV9QSTdDOVg3OTU0IH0sCisJewlQQ0lfVkVORE9SX0lE X0FDQ0VTSU8sIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lFX0NPTV8yU01EQiwKKwkJUENJX0FO WV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1NCB9LAorCXsJ UENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfQ09NXzJT TSwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlY Nzk1NCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9f UENJRV9DT01fNFNNREIsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJCXBibl9w ZXJpY29tX1BJN0M5WDc5NTQgfSwKKwl7CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklD RV9JRF9BQ0NFU0lPX01QQ0lFX0NPTV80U00sCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAs IDAsCisJCXBibl9wZXJpY29tX1BJN0M5WDc5NTQgfSwKKwl7CVBDSV9WRU5ET1JfSURfQUNDRVNJ TywgUENJX0RFVklDRV9JRF9BQ0NFU0lPX01QQ0lFX0lDTTQ4NV8xLAorCQlQQ0lfQU5ZX0lELCBQ Q0lfQU5ZX0lELCAwLCAwLAorCQlwYm5fcGVyaWNvbV9QSTdDOVg3OTU0IH0sCisJewlQQ0lfVkVO RE9SX0lEX0FDQ0VTSU8sIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19NUENJRV9JQ000MjJfMiwKKwkJ UENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1NCB9 LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVf SUNNNDg1XzIsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJCXBibl9wZXJpY29t X1BJN0M5WDc5NTQgfSwKKwl7CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9B Q0NFU0lPX01QQ0lFX0lDTTQyMl80LAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAor CQlwYm5fcGVyaWNvbV9QSTdDOVg3OTU0IH0sCisJewlQQ0lfVkVORE9SX0lEX0FDQ0VTSU8sIFBD SV9ERVZJQ0VfSURfQUNDRVNJT19NUENJRV9JQ000ODVfNCwKKwkJUENJX0FOWV9JRCwgUENJX0FO WV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1NCB9LAorCXsJUENJX1ZFTkRPUl9J RF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9JQ01fMlMsCisJCVBDSV9BTllf SUQsIFBDSV9BTllfSUQsIDAsIDAsCisJCXBibl9wZXJpY29tX1BJN0M5WDc5NTQgfSwKKwl7CVBD SV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfSUNNXzRTLAor CQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAorCQlwYm5fcGVyaWNvbV9QSTdDOVg3OTU0 IH0sCisJewlQQ0lfVkVORE9SX0lEX0FDQ0VTSU8sIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lF X0lDTTIzMl8yLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAorCQlwYm5fcGVyaWNv bV9QSTdDOVg3OTU0IH0sCisJewlQQ0lfVkVORE9SX0lEX0FDQ0VTSU8sIFBDSV9ERVZJQ0VfSURf QUNDRVNJT19NUENJRV9JQ00yMzJfMiwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwK KwkJcGJuX3Blcmljb21fUEk3QzlYNzk1NCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQ Q0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9JQ00yMzJfNCwKKwkJUENJX0FOWV9JRCwgUENJX0FO WV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1NCB9LAorCXsJUENJX1ZFTkRPUl9J RF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fTVBDSUVfSUNNMjMyXzQsCisJCVBDSV9B TllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJCXBibl9wZXJpY29tX1BJN0M5WDc5NTQgfSwKKwl7 CVBDSV9WRU5ET1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfSUNNXzJT TSwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlY Nzk1NCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9f UENJRV9DT000MjJfNCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Bl cmljb21fUEk3QzlYNzk1OCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNF X0lEX0FDQ0VTSU9fUENJRV9DT000ODVfNCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwg MCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1OCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lP LCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9DT000MjJfOCwKKwkJUENJX0FOWV9JRCwgUENJ X0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1OCB9LAorCXsJUENJX1ZFTkRP Ul9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9DT000ODVfOCwKKwkJUENJ X0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1OCB9LAor CXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VTSU9fUENJRV9DT00y MzJfNCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3 QzlYNzk1OCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVWSUNFX0lEX0FDQ0VT SU9fUENJRV9DT00yMzJfOCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJu X3Blcmljb21fUEk3QzlYNzk1OCB9LAorCXsJUENJX1ZFTkRPUl9JRF9BQ0NFU0lPLCBQQ0lfREVW SUNFX0lEX0FDQ0VTSU9fUENJRV9DT01fNFNNLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAw LCAwLAorCQlwYm5fcGVyaWNvbV9QSTdDOVg3OTU4IH0sCisJewlQQ0lfVkVORE9SX0lEX0FDQ0VT SU8sIFBDSV9ERVZJQ0VfSURfQUNDRVNJT19QQ0lFX0NPTV84U00sCisJCVBDSV9BTllfSUQsIFBD SV9BTllfSUQsIDAsIDAsCisJCXBibl9wZXJpY29tX1BJN0M5WDc5NTggfSwKKwl7CVBDSV9WRU5E T1JfSURfQUNDRVNJTywgUENJX0RFVklDRV9JRF9BQ0NFU0lPX1BDSUVfSUNNXzRTTSwKKwkJUENJ X0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkJcGJuX3Blcmljb21fUEk3QzlYNzk1OCB9LAor CS8qCiAJICogVG9waWMgVFA1NjAgRGF0YS9GYXgvVm9pY2UgNTZrIG1vZGVtIChyZXBvcnRlZCBi eSBFdmFuIENsYXJrZSkKIAkgKi8KIAl7CVBDSV9WRU5ET1JfSURfVE9QSUMsIFBDSV9ERVZJQ0Vf SURfVE9QSUNfVFA1NjAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvYXRtZWxfc2Vy aWFsLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvYXRtZWxfc2VyaWFsLmMKaW5kZXggMGQzOWFlNGZm NTMzLi5kODA2NjU3Y2E1M2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9hdG1lbF9z ZXJpYWwuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvYXRtZWxfc2VyaWFsLmMKQEAgLTQzNCwx OSArNDM0LDIxIEBAIHN0YXRpYyB2b2lkIGF0bWVsX3N0YXJ0X3R4KHN0cnVjdCB1YXJ0X3BvcnQg KnBvcnQpCiB7CiAJc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IHRvX2F0bWVs X3VhcnRfcG9ydChwb3J0KTsKIAotCWlmIChhdG1lbF91c2VfcGRjX3R4KHBvcnQpKSB7Ci0JCWlm IChVQVJUX0dFVF9QVFNSKHBvcnQpICYgQVRNRUxfUERDX1RYVEVOKQotCQkJLyogVGhlIHRyYW5z bWl0dGVyIGlzIGFscmVhZHkgcnVubmluZy4gIFllcywgd2UKLQkJCSAgIHJlYWxseSBuZWVkIHRo aXMuKi8KLQkJCXJldHVybjsKKwlpZiAoYXRtZWxfdXNlX3BkY190eChwb3J0KSAmJiAoVUFSVF9H RVRfUFRTUihwb3J0KQorCQkJCSAgICAgICAmIEFUTUVMX1BEQ19UWFRFTikpCisJCS8qIFRoZSB0 cmFuc21pdHRlciBpcyBhbHJlYWR5IHJ1bm5pbmcuICBZZXMsIHdlCisJCSAgIHJlYWxseSBuZWVk IHRoaXMuKi8KKwkJcmV0dXJuOwogCisJaWYgKGF0bWVsX3VzZV9wZGNfdHgocG9ydCkgfHwgYXRt ZWxfdXNlX2RtYV90eChwb3J0KSkKIAkJaWYgKChhdG1lbF9wb3J0LT5yczQ4NS5mbGFncyAmIFNF Ul9SUzQ4NV9FTkFCTEVEKSAmJgogCQkgICAgIShhdG1lbF9wb3J0LT5yczQ4NS5mbGFncyAmIFNF Ul9SUzQ4NV9SWF9EVVJJTkdfVFgpKQogCQkJYXRtZWxfc3RvcF9yeChwb3J0KTsKIAorCWlmIChh dG1lbF91c2VfcGRjX3R4KHBvcnQpKQogCQkvKiByZS1lbmFibGUgUERDIHRyYW5zbWl0ICovCiAJ CVVBUlRfUFVUX1BUQ1IocG9ydCwgQVRNRUxfUERDX1RYVEVOKTsKLQl9CisKIAkvKiBFbmFibGUg aW50ZXJydXB0cyAqLwogCVVBUlRfUFVUX0lFUihwb3J0LCBhdG1lbF9wb3J0LT50eF9kb25lX21h c2spOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3NhbXN1bmcuYyBiL2RyaXZl cnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMKaW5kZXggNzI2ODQwOWRmYzY4Li4yYTJhNTRkYjg2ZmYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMKKysrIGIvZHJpdmVycy90 dHkvc2VyaWFsL3NhbXN1bmcuYwpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgc3RhdGljIGludCBzM2My NHh4X3NlcmlhbF9pbml0X3BvcnQoc3RydWN0IHMzYzI0eHhfdWFydF9wb3J0ICpvdXJwb3J0LAog CQlyZXR1cm4gLUVOT0RFVjsKIAogCWlmIChwb3J0LT5tYXBiYXNlICE9IDApCi0JCXJldHVybiAw OworCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIHNldHVwIGluZm8gZm9yIHBvcnQgKi8KIAlwb3J0 LT5kZXYJPSAmcGxhdGRldi0+ZGV2OwpAQCAtMTIxMywxNCArMTIxMywxNSBAQCBzdGF0aWMgaW50 IHMzYzI0eHhfc2VyaWFsX2luaXRfcG9ydChzdHJ1Y3QgczNjMjR4eF91YXJ0X3BvcnQgKm91cnBv cnQsCiAJaWYgKElTX0VSUihvdXJwb3J0LT5jbGspKSB7CiAJCXByX2VycigiJXM6IENvbnRyb2xs ZXIgY2xvY2sgbm90IGZvdW5kXG4iLAogCQkJCWRldl9uYW1lKCZwbGF0ZGV2LT5kZXYpKTsKLQkJ cmV0dXJuIFBUUl9FUlIob3VycG9ydC0+Y2xrKTsKKwkJcmV0ID0gUFRSX0VSUihvdXJwb3J0LT5j bGspOworCQlnb3RvIGVycjsKIAl9CiAKIAlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUob3VycG9y dC0+Y2xrKTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigidWFydDogY2xvY2sgZmFpbGVkIHRvIHBy ZXBhcmUrZW5hYmxlOiAlZFxuIiwgcmV0KTsKIAkJY2xrX3B1dChvdXJwb3J0LT5jbGspOwotCQly ZXR1cm4gcmV0OworCQlnb3RvIGVycjsKIAl9CiAKIAkvKiBLZWVwIGFsbCBpbnRlcnJ1cHRzIG1h c2tlZCBhbmQgY2xlYXJlZCAqLwpAQCAtMTIzNiw3ICsxMjM3LDEyIEBAIHN0YXRpYyBpbnQgczNj MjR4eF9zZXJpYWxfaW5pdF9wb3J0KHN0cnVjdCBzM2MyNHh4X3VhcnRfcG9ydCAqb3VycG9ydCwK IAogCS8qIHJlc2V0IHRoZSBmaWZvcyAoYW5kIHNldHVwIHRoZSB1YXJ0KSAqLwogCXMzYzI0eHhf c2VyaWFsX3Jlc2V0cG9ydChwb3J0LCBjZmcpOworCiAJcmV0dXJuIDA7CisKK2VycjoKKwlwb3J0 LT5tYXBiYXNlID0gMDsKKwlyZXR1cm4gcmV0OwogfQogCiAjaWZkZWYgQ09ORklHX1NBTVNVTkdf Q0xPQ0sKQEAgLTEzMDEsOCArMTMwNyw2IEBAIHN0YXRpYyBpbnQgczNjMjR4eF9zZXJpYWxfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJb3VycG9ydC0+aW5mby0+Zmlmb3Np emUgOgogCQlvdXJwb3J0LT5kcnZfZGF0YS0+Zmlmb3NpemVbcHJvYmVfaW5kZXhdOwogCi0JcHJv YmVfaW5kZXgrKzsKLQogCWRiZygiJXM6IGluaXRpYWxpc2luZyBwb3J0ICVwLi4uXG4iLCBfX2Z1 bmNfXywgb3VycG9ydCk7CiAKIAlyZXQgPSBzM2MyNHh4X3NlcmlhbF9pbml0X3BvcnQob3VycG9y dCwgcGRldik7CkBAIC0xMzM4LDYgKzEzNDIsOCBAQCBzdGF0aWMgaW50IHMzYzI0eHhfc2VyaWFs X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKHJldCA8IDApCiAJCWRl dl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBhZGQgY3B1ZnJlcSBub3RpZmllclxuIik7CiAK Kwlwcm9iZV9pbmRleCsrOworCiAJcmV0dXJuIDA7CiAKICBwcm9iZV9lcnI6CmRpZmYgLS1naXQg YS9kcml2ZXJzL3R0eS9zZXJpYWwvc3VuaHYuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zdW5odi5j CmluZGV4IGRjNjk3Y2VlMjQ4YS4uMjMzMTAzYWRhZDJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0 eS9zZXJpYWwvc3VuaHYuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc3VuaHYuYwpAQCAtNDky LDEyICs0OTIsNiBAQCBzdGF0aWMgdm9pZCBzdW5odl9jb25zb2xlX3dyaXRlX2J5Y2hhcihzdHJ1 Y3QgY29uc29sZSAqY29uLCBjb25zdCBjaGFyICpzLCB1bnNpZwogCQlsb2NrZWQgPSBzcGluX3Ry eWxvY2tfaXJxc2F2ZSgmcG9ydC0+bG9jaywgZmxhZ3MpOwogCWVsc2UKIAkJc3Bpbl9sb2NrX2ly cXNhdmUoJnBvcnQtPmxvY2ssIGZsYWdzKTsKLQlpZiAocG9ydC0+c3lzcnEpIHsKLQkJbG9ja2Vk ID0gMDsKLQl9IGVsc2UgaWYgKG9vcHNfaW5fcHJvZ3Jlc3MpIHsKLQkJbG9ja2VkID0gc3Bpbl90 cnlsb2NrKCZwb3J0LT5sb2NrKTsKLQl9IGVsc2UKLQkJc3Bpbl9sb2NrKCZwb3J0LT5sb2NrKTsK IAogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKIAkJaWYgKCpzID09ICdcbicpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3R0eS92dC9rZXlib2FyZC5jIGIvZHJpdmVycy90dHkvdnQva2V5Ym9hcmQu YwppbmRleCBkMGUzYTQ0OTc3MDcuLmFkZjRkMzEyNGNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy90 dHkvdnQva2V5Ym9hcmQuYworKysgYi9kcml2ZXJzL3R0eS92dC9rZXlib2FyZC5jCkBAIC0zNjUs MzQgKzM2NSwyMiBAQCBzdGF0aWMgdm9pZCB0b191dGY4KHN0cnVjdCB2Y19kYXRhICp2YywgdWlu dCBjKQogCiBzdGF0aWMgdm9pZCBkb19jb21wdXRlX3NoaWZ0c3RhdGUodm9pZCkKIHsKLQl1bnNp Z25lZCBpbnQgaSwgaiwgaywgc3ltLCB2YWw7CisJdW5zaWduZWQgaW50IGssIHN5bSwgdmFsOwog CiAJc2hpZnRfc3RhdGUgPSAwOwogCW1lbXNldChzaGlmdF9kb3duLCAwLCBzaXplb2Yoc2hpZnRf ZG93bikpOwogCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoa2V5X2Rvd24pOyBpKyspIHsK LQotCQlpZiAoIWtleV9kb3duW2ldKQorCWZvcl9lYWNoX3NldF9iaXQoaywga2V5X2Rvd24sIG1p bihOUl9LRVlTLCBLRVlfQ05UKSkgeworCQlzeW0gPSBVKGtleV9tYXBzWzBdW2tdKTsKKwkJaWYg KEtUWVAoc3ltKSAhPSBLVF9TSElGVCAmJiBLVFlQKHN5bSkgIT0gS1RfU0xPQ0spCiAJCQljb250 aW51ZTsKIAotCQlrID0gaSAqIEJJVFNfUEVSX0xPTkc7Ci0KLQkJZm9yIChqID0gMDsgaiA8IEJJ VFNfUEVSX0xPTkc7IGorKywgaysrKSB7Ci0KLQkJCWlmICghdGVzdF9iaXQoaywga2V5X2Rvd24p KQotCQkJCWNvbnRpbnVlOworCQl2YWwgPSBLVkFMKHN5bSk7CisJCWlmICh2YWwgPT0gS1ZBTChL X0NBUFNTSElGVCkpCisJCQl2YWwgPSBLVkFMKEtfU0hJRlQpOwogCi0JCQlzeW0gPSBVKGtleV9t YXBzWzBdW2tdKTsKLQkJCWlmIChLVFlQKHN5bSkgIT0gS1RfU0hJRlQgJiYgS1RZUChzeW0pICE9 IEtUX1NMT0NLKQotCQkJCWNvbnRpbnVlOwotCi0JCQl2YWwgPSBLVkFMKHN5bSk7Ci0JCQlpZiAo dmFsID09IEtWQUwoS19DQVBTU0hJRlQpKQotCQkJCXZhbCA9IEtWQUwoS19TSElGVCk7Ci0KLQkJ CXNoaWZ0X2Rvd25bdmFsXSsrOwotCQkJc2hpZnRfc3RhdGUgfD0gKDEgPDwgdmFsKTsKLQkJfQor CQlzaGlmdF9kb3duW3ZhbF0rKzsKKwkJc2hpZnRfc3RhdGUgfD0gQklUKHZhbCk7CiAJfQogfQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMgYi9kcml2ZXJzL3VzYi9j bGFzcy9jZGMtYWNtLmMKaW5kZXggNTQwNjFhM2JjNWU5Li43M2IzYjA1NDc3MWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy9j ZGMtYWNtLmMKQEAgLTEzMzYsNyArMTMzNiw2IEBAIG1hZGVfY29tcHJlc3NlZF9wcm9iZToKIAlz cGluX2xvY2tfaW5pdCgmYWNtLT53cml0ZV9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmYWNtLT5y ZWFkX2xvY2spOwogCW11dGV4X2luaXQoJmFjbS0+bXV0ZXgpOwotCWFjbS0+cnhfZW5kcG9pbnQg PSB1c2JfcmN2YnVsa3BpcGUodXNiX2RldiwgZXByZWFkLT5iRW5kcG9pbnRBZGRyZXNzKTsKIAlh Y20tPmlzX2ludF9lcCA9IHVzYl9lbmRwb2ludF94ZmVyX2ludChlcHJlYWQpOwogCWlmIChhY20t PmlzX2ludF9lcCkKIAkJYWNtLT5iSW50ZXJ2YWwgPSBlcHJlYWQtPmJJbnRlcnZhbDsKQEAgLTEz ODYsMTQgKzEzODUsMTQgQEAgbWFkZV9jb21wcmVzc2VkX3Byb2JlOgogCQl1cmItPnRyYW5zZmVy X2RtYSA9IHJiLT5kbWE7CiAJCWlmIChhY20tPmlzX2ludF9lcCkgewogCQkJdXNiX2ZpbGxfaW50 X3VyYih1cmIsIGFjbS0+ZGV2LAotCQkJCQkgYWNtLT5yeF9lbmRwb2ludCwKKwkJCQkJIHVzYl9y Y3ZpbnRwaXBlKHVzYl9kZXYsIGVwcmVhZC0+YkVuZHBvaW50QWRkcmVzcyksCiAJCQkJCSByYi0+ YmFzZSwKIAkJCQkJIGFjbS0+cmVhZHNpemUsCiAJCQkJCSBhY21fcmVhZF9idWxrX2NhbGxiYWNr LCByYiwKIAkJCQkJIGFjbS0+YkludGVydmFsKTsKIAkJfSBlbHNlIHsKIAkJCXVzYl9maWxsX2J1 bGtfdXJiKHVyYiwgYWNtLT5kZXYsCi0JCQkJCSAgYWNtLT5yeF9lbmRwb2ludCwKKwkJCQkJICB1 c2JfcmN2YnVsa3BpcGUodXNiX2RldiwgZXByZWFkLT5iRW5kcG9pbnRBZGRyZXNzKSwKIAkJCQkJ ICByYi0+YmFzZSwKIAkJCQkJICBhY20tPnJlYWRzaXplLAogCQkJCQkgIGFjbV9yZWFkX2J1bGtf Y2FsbGJhY2ssIHJiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaCBi L2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaAppbmRleCA3MGQyNGQ3ZTlkYzUuLjYwNTBkOGU5 MmM1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5oCisrKyBiL2RyaXZl cnMvdXNiL2NsYXNzL2NkYy1hY20uaApAQCAtOTUsNyArOTUsNiBAQCBzdHJ1Y3QgYWNtIHsKIAlz dHJ1Y3QgdXJiICpyZWFkX3VyYnNbQUNNX05SXTsKIAlzdHJ1Y3QgYWNtX3JiIHJlYWRfYnVmZmVy c1tBQ01fTlJdOwogCWludCByeF9idWZsaW1pdDsKLQlpbnQgcnhfZW5kcG9pbnQ7CiAJc3Bpbmxv Y2tfdCByZWFkX2xvY2s7CiAJaW50IHdyaXRlX3VzZWQ7CQkJCQkvKiBudW1iZXIgb2Ygbm9uLWVt cHR5IHdyaXRlIGJ1ZmZlcnMgKi8KIAlpbnQgdHJhbnNtaXR0aW5nOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvY29yZS9jb25maWcuYyBiL2RyaXZlcnMvdXNiL2NvcmUvY29uZmlnLmMKaW5kZXgg ODk0ODk0ZjJmZjkzLi44ZGUxNmY5ODJmNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUv Y29uZmlnLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9jb25maWcuYwpAQCAtMTQyLDYgKzE0Miwz MSBAQCBzdGF0aWMgdm9pZCB1c2JfcGFyc2Vfc3NfZW5kcG9pbnRfY29tcGFuaW9uKHN0cnVjdCBk ZXZpY2UgKmRkZXYsIGludCBjZmdubywKIAl9CiB9CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBz aG9ydCBsb3dfc3BlZWRfbWF4cGFja2V0X21heGVzWzRdID0geworCVtVU0JfRU5EUE9JTlRfWEZF Ul9DT05UUk9MXSA9IDgsCisJW1VTQl9FTkRQT0lOVF9YRkVSX0lTT0NdID0gMCwKKwlbVVNCX0VO RFBPSU5UX1hGRVJfQlVMS10gPSAwLAorCVtVU0JfRU5EUE9JTlRfWEZFUl9JTlRdID0gOCwKK307 CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZnVsbF9zcGVlZF9tYXhwYWNrZXRfbWF4ZXNb NF0gPSB7CisJW1VTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0xdID0gNjQsCisJW1VTQl9FTkRQT0lO VF9YRkVSX0lTT0NdID0gMTAyMywKKwlbVVNCX0VORFBPSU5UX1hGRVJfQlVMS10gPSA2NCwKKwlb VVNCX0VORFBPSU5UX1hGRVJfSU5UXSA9IDY0LAorfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBz aG9ydCBoaWdoX3NwZWVkX21heHBhY2tldF9tYXhlc1s0XSA9IHsKKwlbVVNCX0VORFBPSU5UX1hG RVJfQ09OVFJPTF0gPSA2NCwKKwlbVVNCX0VORFBPSU5UX1hGRVJfSVNPQ10gPSAxMDI0LAorCVtV U0JfRU5EUE9JTlRfWEZFUl9CVUxLXSA9IDUxMiwKKwlbVVNCX0VORFBPSU5UX1hGRVJfSU5UXSA9 IDEwMjQsCit9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHN1cGVyX3NwZWVkX21heHBh Y2tldF9tYXhlc1s0XSA9IHsKKwlbVVNCX0VORFBPSU5UX1hGRVJfQ09OVFJPTF0gPSA1MTIsCisJ W1VTQl9FTkRQT0lOVF9YRkVSX0lTT0NdID0gMTAyNCwKKwlbVVNCX0VORFBPSU5UX1hGRVJfQlVM S10gPSAxMDI0LAorCVtVU0JfRU5EUE9JTlRfWEZFUl9JTlRdID0gMTAyNCwKK307CisKIHN0YXRp YyBpbnQgdXNiX3BhcnNlX2VuZHBvaW50KHN0cnVjdCBkZXZpY2UgKmRkZXYsIGludCBjZmdubywg aW50IGludW0sCiAgICAgaW50IGFzbnVtLCBzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZnAs IGludCBudW1fZXAsCiAgICAgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc2l6ZSkKQEAgLTE1 MCw2ICsxNzUsOCBAQCBzdGF0aWMgaW50IHVzYl9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgZGV2aWNl ICpkZGV2LCBpbnQgY2Znbm8sIGludCBpbnVtLAogCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3Jp cHRvciAqZDsKIAlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKmVuZHBvaW50OwogCWludCBuLCBp LCBqLCByZXR2YWw7CisJdW5zaWduZWQgaW50IG1heHA7CisJY29uc3QgdW5zaWduZWQgc2hvcnQg Km1heHBhY2tldF9tYXhlczsKIAogCWQgPSAoc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9y ICopIGJ1ZmZlcjsKIAlidWZmZXIgKz0gZC0+Ykxlbmd0aDsKQEAgLTE4NCw4ICsyMTEsMTAgQEAg c3RhdGljIGludCB1c2JfcGFyc2VfZW5kcG9pbnQoc3RydWN0IGRldmljZSAqZGRldiwgaW50IGNm Z25vLCBpbnQgaW51bSwKIAltZW1jcHkoJmVuZHBvaW50LT5kZXNjLCBkLCBuKTsKIAlJTklUX0xJ U1RfSEVBRCgmZW5kcG9pbnQtPnVyYl9saXN0KTsKIAotCS8qIEZpeCB1cCBiSW50ZXJ2YWwgdmFs dWVzIG91dHNpZGUgdGhlIGxlZ2FsIHJhbmdlLiBVc2UgMzIgbXMgaWYgbm8KLQkgKiBwcm9wZXIg dmFsdWUgY2FuIGJlIGd1ZXNzZWQuICovCisJLyoKKwkgKiBGaXggdXAgYkludGVydmFsIHZhbHVl cyBvdXRzaWRlIHRoZSBsZWdhbCByYW5nZS4KKwkgKiBVc2UgMTAgb3IgOCBtcyBpZiBubyBwcm9w ZXIgdmFsdWUgY2FuIGJlIGd1ZXNzZWQuCisJICovCiAJaSA9IDA7CQkvKiBpID0gbWluLCBqID0g bWF4LCBuID0gZGVmYXVsdCAqLwogCWogPSAyNTU7CiAJaWYgKHVzYl9lbmRwb2ludF94ZmVyX2lu dChkKSkgewpAQCAtMTkzLDEzICsyMjIsMTUgQEAgc3RhdGljIGludCB1c2JfcGFyc2VfZW5kcG9p bnQoc3RydWN0IGRldmljZSAqZGRldiwgaW50IGNmZ25vLCBpbnQgaW51bSwKIAkJc3dpdGNoICh0 b191c2JfZGV2aWNlKGRkZXYpLT5zcGVlZCkgewogCQljYXNlIFVTQl9TUEVFRF9TVVBFUjoKIAkJ Y2FzZSBVU0JfU1BFRURfSElHSDoKLQkJCS8qIE1hbnkgZGV2aWNlIG1hbnVmYWN0dXJlcnMgYXJl IHVzaW5nIGZ1bGwtc3BlZWQKKwkJCS8qCisJCQkgKiBNYW55IGRldmljZSBtYW51ZmFjdHVyZXJz IGFyZSB1c2luZyBmdWxsLXNwZWVkCiAJCQkgKiBiSW50ZXJ2YWwgdmFsdWVzIGluIGhpZ2gtc3Bl ZWQgaW50ZXJydXB0IGVuZHBvaW50Ci0JCQkgKiBkZXNjcmlwdG9ycy4gVHJ5IHRvIGZpeCB0aG9z ZSBhbmQgZmFsbCBiYWNrIHRvIGEKLQkJCSAqIDMyIG1zIGRlZmF1bHQgdmFsdWUgb3RoZXJ3aXNl LiAqLworCQkJICogZGVzY3JpcHRvcnMuIFRyeSB0byBmaXggdGhvc2UgYW5kIGZhbGwgYmFjayB0 byBhbgorCQkJICogOC1tcyBkZWZhdWx0IHZhbHVlIG90aGVyd2lzZS4KKwkJCSAqLwogCQkJbiA9 IGZscyhkLT5iSW50ZXJ2YWwqOCk7CiAJCQlpZiAobiA9PSAwKQotCQkJCW4gPSA5OwkvKiAzMiBt cyA9IDJeKDktMSkgdWZyYW1lcyAqLworCQkJCW4gPSA3OwkvKiA4IG1zID0gMl4oNy0xKSB1ZnJh bWVzICovCiAJCQlqID0gMTY7CiAKIAkJCS8qCkBAIC0yMTQsMTAgKzI0NSwxMiBAQCBzdGF0aWMg aW50IHVzYl9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgZGV2aWNlICpkZGV2LCBpbnQgY2Znbm8sIGlu dCBpbnVtLAogCQkJfQogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkvKiBVU0JfU1BFRURfRlVMTCBv ciBfTE9XICovCi0JCQkvKiBGb3IgbG93LXNwZWVkLCAxMCBtcyBpcyB0aGUgb2ZmaWNpYWwgbWlu aW11bS4KKwkJCS8qCisJCQkgKiBGb3IgbG93LXNwZWVkLCAxMCBtcyBpcyB0aGUgb2ZmaWNpYWwg bWluaW11bS4KIAkJCSAqIEJ1dCBzb21lICJvdmVyY2xvY2tlZCIgZGV2aWNlcyBtaWdodCB3YW50 IGZhc3RlcgotCQkJICogcG9sbGluZyBzbyB3ZSdsbCBhbGxvdyBpdC4gKi8KLQkJCW4gPSAzMjsK KwkJCSAqIHBvbGxpbmcgc28gd2UnbGwgYWxsb3cgaXQuCisJCQkgKi8KKwkJCW4gPSAxMDsKIAkJ CWJyZWFrOwogCQl9CiAJfSBlbHNlIGlmICh1c2JfZW5kcG9pbnRfeGZlcl9pc29jKGQpKSB7CkBA IC0yMjUsMTAgKzI1OCwxMCBAQCBzdGF0aWMgaW50IHVzYl9wYXJzZV9lbmRwb2ludChzdHJ1Y3Qg ZGV2aWNlICpkZGV2LCBpbnQgY2Znbm8sIGludCBpbnVtLAogCQlqID0gMTY7CiAJCXN3aXRjaCAo dG9fdXNiX2RldmljZShkZGV2KS0+c3BlZWQpIHsKIAkJY2FzZSBVU0JfU1BFRURfSElHSDoKLQkJ CW4gPSA5OwkJLyogMzIgbXMgPSAyXig5LTEpIHVmcmFtZXMgKi8KKwkJCW4gPSA3OwkJLyogOCBt cyA9IDJeKDctMSkgdWZyYW1lcyAqLwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkvKiBVU0JfU1BF RURfRlVMTCAqLwotCQkJbiA9IDY7CQkvKiAzMiBtcyA9IDJeKDYtMSkgZnJhbWVzICovCisJCQlu ID0gNDsJCS8qIDggbXMgPSAyXig0LTEpIGZyYW1lcyAqLwogCQkJYnJlYWs7CiAJCX0KIAl9CkBA IC0yNTYsNiArMjg5LDQxIEBAIHN0YXRpYyBpbnQgdXNiX3BhcnNlX2VuZHBvaW50KHN0cnVjdCBk ZXZpY2UgKmRkZXYsIGludCBjZmdubywgaW50IGludW0sCiAJCQllbmRwb2ludC0+ZGVzYy53TWF4 UGFja2V0U2l6ZSA9IGNwdV90b19sZTE2KDgpOwogCX0KIAorCS8qIFZhbGlkYXRlIHRoZSB3TWF4 UGFja2V0U2l6ZSBmaWVsZCAqLworCW1heHAgPSB1c2JfZW5kcG9pbnRfbWF4cCgmZW5kcG9pbnQt PmRlc2MpOworCisJLyogRmluZCB0aGUgaGlnaGVzdCBsZWdhbCBtYXhwYWNrZXQgc2l6ZSBmb3Ig dGhpcyBlbmRwb2ludCAqLworCWkgPSAwOwkJLyogYWRkaXRpb25hbCB0cmFuc2FjdGlvbnMgcGVy IG1pY3JvZnJhbWUgKi8KKwlzd2l0Y2ggKHRvX3VzYl9kZXZpY2UoZGRldiktPnNwZWVkKSB7CisJ Y2FzZSBVU0JfU1BFRURfTE9XOgorCQltYXhwYWNrZXRfbWF4ZXMgPSBsb3dfc3BlZWRfbWF4cGFj a2V0X21heGVzOworCQlicmVhazsKKwljYXNlIFVTQl9TUEVFRF9GVUxMOgorCQltYXhwYWNrZXRf bWF4ZXMgPSBmdWxsX3NwZWVkX21heHBhY2tldF9tYXhlczsKKwkJYnJlYWs7CisJY2FzZSBVU0Jf U1BFRURfSElHSDoKKwkJLyogQml0cyAxMi4uMTEgYXJlIGFsbG93ZWQgb25seSBmb3IgSFMgcGVy aW9kaWMgZW5kcG9pbnRzICovCisJCWlmICh1c2JfZW5kcG9pbnRfeGZlcl9pbnQoZCkgfHwgdXNi X2VuZHBvaW50X3hmZXJfaXNvYyhkKSkgeworCQkJaSA9IG1heHAgJiAoQklUKDEyKSB8IEJJVCgx MSkpOworCQkJbWF4cCAmPSB+aTsKKwkJfQorCQkvKiBmYWxsdGhyb3VnaCAqLworCWRlZmF1bHQ6 CisJCW1heHBhY2tldF9tYXhlcyA9IGhpZ2hfc3BlZWRfbWF4cGFja2V0X21heGVzOworCQlicmVh azsKKwljYXNlIFVTQl9TUEVFRF9TVVBFUjoKKwkJbWF4cGFja2V0X21heGVzID0gc3VwZXJfc3Bl ZWRfbWF4cGFja2V0X21heGVzOworCQlicmVhazsKKwl9CisJaiA9IG1heHBhY2tldF9tYXhlc1t1 c2JfZW5kcG9pbnRfdHlwZSgmZW5kcG9pbnQtPmRlc2MpXTsKKworCWlmIChtYXhwID4gaikgewor CQlkZXZfd2FybihkZGV2LCAiY29uZmlnICVkIGludGVyZmFjZSAlZCBhbHRzZXR0aW5nICVkIGVu ZHBvaW50IDB4JVggaGFzIGludmFsaWQgbWF4cGFja2V0ICVkLCBzZXR0aW5nIHRvICVkXG4iLAor CQkgICAgY2Znbm8sIGludW0sIGFzbnVtLCBkLT5iRW5kcG9pbnRBZGRyZXNzLCBtYXhwLCBqKTsK KwkJbWF4cCA9IGo7CisJCWVuZHBvaW50LT5kZXNjLndNYXhQYWNrZXRTaXplID0gY3B1X3RvX2xl MTYoaSB8IG1heHApOworCX0KKwogCS8qCiAJICogU29tZSBidWdneSBoaWdoIHNwZWVkIGRldmlj ZXMgaGF2ZSBidWxrIGVuZHBvaW50cyB1c2luZwogCSAqIG1heHBhY2tldCBzaXplcyBvdGhlciB0 aGFuIDUxMi4gIEhpZ2ggc3BlZWQgSENEcyBtYXkgbm90CkBAIC0yNjMsOSArMzMxLDYgQEAgc3Rh dGljIGludCB1c2JfcGFyc2VfZW5kcG9pbnQoc3RydWN0IGRldmljZSAqZGRldiwgaW50IGNmZ25v LCBpbnQgaW51bSwKIAkgKi8KIAlpZiAodG9fdXNiX2RldmljZShkZGV2KS0+c3BlZWQgPT0gVVNC X1NQRUVEX0hJR0gKIAkJCSYmIHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoZCkpIHsKLQkJdW5zaWdu ZWQgbWF4cDsKLQotCQltYXhwID0gdXNiX2VuZHBvaW50X21heHAoJmVuZHBvaW50LT5kZXNjKSAm IDB4MDdmZjsKIAkJaWYgKG1heHAgIT0gNTEyKQogCQkJZGV2X3dhcm4oZGRldiwgImNvbmZpZyAl ZCBpbnRlcmZhY2UgJWQgYWx0c2V0dGluZyAlZCAiCiAJCQkJImJ1bGsgZW5kcG9pbnQgMHglWCBo YXMgaW52YWxpZCBtYXhwYWNrZXQgJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3Jl L2RldmlvLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2RldmlvLmMKaW5kZXggZGZjYjVmOGI4ZjE4Li4z OWE4YmI4Zjg4MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvZGV2aW8uYworKysgYi9k cml2ZXJzL3VzYi9jb3JlL2RldmlvLmMKQEAgLTE1MjcsMTEgKzE1MjcsMTcgQEAgc3RhdGljIGlu dCBwcm9jX2RvX3N1Ym1pdHVyYihzdHJ1Y3QgdXNiX2Rldl9zdGF0ZSAqcHMsIHN0cnVjdCB1c2Jk ZXZmc191cmIgKnV1cmIKIAlhcy0+dXJiLT5zdGFydF9mcmFtZSA9IHV1cmItPnN0YXJ0X2ZyYW1l OwogCWFzLT51cmItPm51bWJlcl9vZl9wYWNrZXRzID0gbnVtYmVyX29mX3BhY2tldHM7CiAJYXMt PnVyYi0+c3RyZWFtX2lkID0gc3RyZWFtX2lkOwotCWlmICh1dXJiLT50eXBlID09IFVTQkRFVkZT X1VSQl9UWVBFX0lTTyB8fAotCQkJcHMtPmRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX0hJR0gpCi0J CWFzLT51cmItPmludGVydmFsID0gMSA8PCBtaW4oMTUsIGVwLT5kZXNjLmJJbnRlcnZhbCAtIDEp OwotCWVsc2UKLQkJYXMtPnVyYi0+aW50ZXJ2YWwgPSBlcC0+ZGVzYy5iSW50ZXJ2YWw7CisKKwlp ZiAoZXAtPmRlc2MuYkludGVydmFsKSB7CisJCWlmICh1dXJiLT50eXBlID09IFVTQkRFVkZTX1VS Ql9UWVBFX0lTTyB8fAorCQkJCXBzLT5kZXYtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIIHx8CisJ CQkJcHMtPmRldi0+c3BlZWQgPj0gVVNCX1NQRUVEX1NVUEVSKQorCQkJYXMtPnVyYi0+aW50ZXJ2 YWwgPSAxIDw8CisJCQkJCW1pbigxNSwgZXAtPmRlc2MuYkludGVydmFsIC0gMSk7CisJCWVsc2UK KwkJCWFzLT51cmItPmludGVydmFsID0gZXAtPmRlc2MuYkludGVydmFsOworCX0KKwogCWFzLT51 cmItPmNvbnRleHQgPSBhczsKIAlhcy0+dXJiLT5jb21wbGV0ZSA9IGFzeW5jX2NvbXBsZXRlZDsK IAlmb3IgKHRvdGxlbiA9IHUgPSAwOyB1IDwgbnVtYmVyX29mX3BhY2tldHM7IHUrKykgewpkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9xdWlya3MuYyBiL2RyaXZlcnMvdXNiL2NvcmUvcXVp cmtzLmMKaW5kZXggMDY3M2E1YWJjMjFkLi42YzdlNDdmNjdkZDQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL2NvcmUvcXVpcmtzLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9xdWlya3MuYwpAQCAt MTI1LDYgKzEyNSwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgdXNiX3F1 aXJrX2xpc3RbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoMHgwNGYzLCAweDAxNmYpLCAuZHJpdmVyX2lu Zm8gPQogCQkJVVNCX1FVSVJLX0RFVklDRV9RVUFMSUZJRVIgfSwKIAorCXsgVVNCX0RFVklDRSgw eDA0ZjMsIDB4MDM4MSksIC5kcml2ZXJfaW5mbyA9CisJCQlVU0JfUVVJUktfTk9fTFBNIH0sCisK Kwl7IFVTQl9ERVZJQ0UoMHgwNGYzLCAweDIxYjgpLCAuZHJpdmVyX2luZm8gPQorCQkJVVNCX1FV SVJLX0RFVklDRV9RVUFMSUZJRVIgfSwKKwogCS8qIFJvbGFuZCBTQy04ODIwICovCiAJeyBVU0Jf REVWSUNFKDB4MDU4MiwgMHgwMDA3KSwgLmRyaXZlcl9pbmZvID0gVVNCX1FVSVJLX1JFU0VUX1JF U1VNRSB9LAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jIGIvZHJpdmVy cy91c2IvZHdjMy9nYWRnZXQuYwppbmRleCA0YTI3OWJiOTA5MmEuLmVkZTI4MTQ3MDJjNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMy9nYWRnZXQuYworKysgYi9kcml2ZXJzL3VzYi9kd2Mz L2dhZGdldC5jCkBAIC0xOTQzLDE0ICsxOTQzLDYgQEAgc3RhdGljIGludCBfX2R3YzNfY2xlYW51 cF9kb25lX3RyYnMoc3RydWN0IGR3YzMgKmR3Yywgc3RydWN0IGR3YzNfZXAgKmRlcCwKIAkJCXNf cGt0ID0gMTsKIAl9CiAKLQkvKgotCSAqIFdlIGFzc3VtZSBoZXJlIHdlIHdpbGwgYWx3YXlzIHJl Y2VpdmUgdGhlIGVudGlyZSBkYXRhIGJsb2NrCi0JICogd2hpY2ggd2Ugc2hvdWxkIHJlY2VpdmUu IE1lYW5pbmcsIGlmIHdlIHByb2dyYW0gUlggdG8KLQkgKiByZWNlaXZlIDRLIGJ1dCB3ZSByZWNl aXZlIG9ubHkgMkssIHdlIGFzc3VtZSB0aGF0J3MgYWxsIHdlCi0JICogc2hvdWxkIHJlY2VpdmUg YW5kIHdlIHNpbXBseSBib3VuY2UgdGhlIHJlcXVlc3QgYmFjayB0byB0aGUKLQkgKiBnYWRnZXQg ZHJpdmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuCi0JICovCi0JcmVxLT5yZXF1ZXN0LmFjdHVh bCArPSByZXEtPnJlcXVlc3QubGVuZ3RoIC0gY291bnQ7CiAJaWYgKHNfcGt0KQogCQlyZXR1cm4g MTsKIAlpZiAoKGV2ZW50LT5zdGF0dXMgJiBERVBFVlRfU1RBVFVTX0xTVCkgJiYKQEAgLTE5NzAs NiArMTk2Miw3IEBAIHN0YXRpYyBpbnQgZHdjM19jbGVhbnVwX2RvbmVfcmVxcyhzdHJ1Y3QgZHdj MyAqZHdjLCBzdHJ1Y3QgZHdjM19lcCAqZGVwLAogCXN0cnVjdCBkd2MzX3RyYgkJKnRyYjsKIAl1 bnNpZ25lZCBpbnQJCXNsb3Q7CiAJdW5zaWduZWQgaW50CQlpOworCWludAkJCWNvdW50ID0gMDsK IAlpbnQJCQlyZXQ7CiAKIAlkbyB7CkBAIC0xOTg2LDYgKzE5NzksOCBAQCBzdGF0aWMgaW50IGR3 YzNfY2xlYW51cF9kb25lX3JlcXMoc3RydWN0IGR3YzMgKmR3Yywgc3RydWN0IGR3YzNfZXAgKmRl cCwKIAkJCQlzbG90Kys7CiAJCQlzbG90ICU9IERXQzNfVFJCX05VTTsKIAkJCXRyYiA9ICZkZXAt PnRyYl9wb29sW3Nsb3RdOworCQkJY291bnQgKz0gdHJiLT5zaXplICYgRFdDM19UUkJfU0laRV9N QVNLOworCiAKIAkJCXJldCA9IF9fZHdjM19jbGVhbnVwX2RvbmVfdHJicyhkd2MsIGRlcCwgcmVx LCB0cmIsCiAJCQkJCWV2ZW50LCBzdGF0dXMpOwpAQCAtMTk5Myw2ICsxOTg4LDE0IEBAIHN0YXRp YyBpbnQgZHdjM19jbGVhbnVwX2RvbmVfcmVxcyhzdHJ1Y3QgZHdjMyAqZHdjLCBzdHJ1Y3QgZHdj M19lcCAqZGVwLAogCQkJCWJyZWFrOwogCQl9d2hpbGUgKCsraSA8IHJlcS0+cmVxdWVzdC5udW1f bWFwcGVkX3Nncyk7CiAKKwkJLyoKKwkJICogV2UgYXNzdW1lIGhlcmUgd2Ugd2lsbCBhbHdheXMg cmVjZWl2ZSB0aGUgZW50aXJlIGRhdGEgYmxvY2sKKwkJICogd2hpY2ggd2Ugc2hvdWxkIHJlY2Vp dmUuIE1lYW5pbmcsIGlmIHdlIHByb2dyYW0gUlggdG8KKwkJICogcmVjZWl2ZSA0SyBidXQgd2Ug cmVjZWl2ZSBvbmx5IDJLLCB3ZSBhc3N1bWUgdGhhdCdzIGFsbCB3ZQorCQkgKiBzaG91bGQgcmVj ZWl2ZSBhbmQgd2Ugc2ltcGx5IGJvdW5jZSB0aGUgcmVxdWVzdCBiYWNrIHRvIHRoZQorCQkgKiBn YWRnZXQgZHJpdmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuCisJCSAqLworCQlyZXEtPnJlcXVl c3QuYWN0dWFsICs9IHJlcS0+cmVxdWVzdC5sZW5ndGggLSBjb3VudDsKIAkJZHdjM19nYWRnZXRf Z2l2ZWJhY2soZGVwLCByZXEsIHN0YXR1cyk7CiAKIAkJaWYgKHJldCkKQEAgLTIwMTYsNiArMjAx OSwxMCBAQCBzdGF0aWMgaW50IGR3YzNfY2xlYW51cF9kb25lX3JlcXMoc3RydWN0IGR3YzMgKmR3 Yywgc3RydWN0IGR3YzNfZXAgKmRlcCwKIAkJcmV0dXJuIDE7CiAJfQogCisJaWYgKHVzYl9lbmRw b2ludF94ZmVyX2lzb2MoZGVwLT5lbmRwb2ludC5kZXNjKSkKKwkJaWYgKChldmVudC0+c3RhdHVz ICYgREVQRVZUX1NUQVRVU19JT0MpICYmCisJCQkJKHRyYi0+Y3RybCAmIERXQzNfVFJCX0NUUkxf SU9DKSkKKwkJCXJldHVybiAwOwogCXJldHVybiAxOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMu YwppbmRleCBhZDU0ODMzMzUxNjcuLjgyMTQ3NzMzMjFlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3Vk Yy5jCkBAIC0xODgxLDExICsxODgxLDggQEAgc3RhdGljIGludCBxZV9nZXRfZnJhbWUoc3RydWN0 IHVzYl9nYWRnZXQgKmdhZGdldCkKIAogCXRtcCA9IGluX2JlMTYoJnVkYy0+dXNiX3BhcmFtLT5m cmFtZV9uKTsKIAlpZiAodG1wICYgMHg4MDAwKQotCQl0bXAgPSB0bXAgJiAweDA3ZmY7Ci0JZWxz ZQotCQl0bXAgPSAtRUlOVkFMOwotCi0JcmV0dXJuIChpbnQpdG1wOworCQlyZXR1cm4gdG1wICYg MHgwN2ZmOworCXJldHVybiAtRUlOVkFMOwogfQogCiBzdGF0aWMgaW50IGZzbF9xZV9zdGFydChz dHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LApAQCAtMjA1Nyw3ICsyMDU0LDcgQEAgc3RhdGljIHZv aWQgc2V0dXBfcmVjZWl2ZWRfaGFuZGxlKHN0cnVjdCBxZV91ZGMgKnVkYywKIAkJCXN0cnVjdCBx ZV9lcCAqZXA7CiAKIAkJCWlmICh3VmFsdWUgIT0gMCB8fCB3TGVuZ3RoICE9IDAKLQkJCQl8fCBw aXBlID4gVVNCX01BWF9FTkRQT0lOVFMpCisJCQkJfHwgcGlwZSA+PSBVU0JfTUFYX0VORFBPSU5U UykKIAkJCQlicmVhazsKIAkJCWVwID0gJnVkYy0+ZXBzW3BpcGVdOwogCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9nYWRnZXQvdWRjLWNvcmUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMtY29y ZS5jCmluZGV4IDM4OTEzZWFjNmU3Yy4uZDdlZjg1ZjM4ODQ3IDEwMDY0NAotLS0gYS9kcml2ZXJz L3VzYi9nYWRnZXQvdWRjLWNvcmUuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjLWNvcmUu YwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIHVzYl9nYWRnZXRfdW5tYXBfcmVxdWVzdChzdHJ1Y3Qg dXNiX2dhZGdldCAqZ2FkZ2V0LAogCQlyZXR1cm47CiAKIAlpZiAocmVxLT5udW1fbWFwcGVkX3Nn cykgewotCQlkbWFfdW5tYXBfc2coJmdhZGdldC0+ZGV2LCByZXEtPnNnLCByZXEtPm51bV9tYXBw ZWRfc2dzLAorCQlkbWFfdW5tYXBfc2coJmdhZGdldC0+ZGV2LCByZXEtPnNnLCByZXEtPm51bV9z Z3MsCiAJCQkJaXNfaW4gPyBETUFfVE9fREVWSUNFIDogRE1BX0ZST01fREVWSUNFKTsKIAogCQly ZXEtPm51bV9tYXBwZWRfc2dzID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhj aS1odWIuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1odWIuYwppbmRleCA2OWE3MGY4ODA0Mjku LjhhZTgwMDg4ZDM0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLWh1Yi5jCisr KyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1odWIuYwpAQCAtMjc2LDYgKzI3Niw5IEBAIHN0YXRp YyBpbnQgeGhjaV9zdG9wX2RldmljZShzdHJ1Y3QgeGhjaV9oY2QgKnhoY2ksIGludCBzbG90X2lk LCBpbnQgc3VzcGVuZCkKIAogCXJldCA9IDA7CiAJdmlydF9kZXYgPSB4aGNpLT5kZXZzW3Nsb3Rf aWRdOworCWlmICghdmlydF9kZXYpCisJCXJldHVybiAtRU5PREVWOworCiAJY21kID0geGhjaV9h bGxvY19jb21tYW5kKHhoY2ksIGZhbHNlLCB0cnVlLCBHRlBfTk9JTyk7CiAJaWYgKCFjbWQpIHsK IAkJeGhjaV9kYmcoeGhjaSwgIkNvdWxkbid0IGFsbG9jYXRlIGNvbW1hbmQgc3RydWN0dXJlLlxu Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcGNpLmMgYi9kcml2ZXJzL3Vz Yi9ob3N0L3hoY2ktcGNpLmMKaW5kZXggNGIzNmQ4NTYyZWVmLi4wMTVkNGMwOGEzY2IgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0 L3hoY2ktcGNpLmMKQEAgLTI5MywxMiArMjkzLDEzIEBAIHN0YXRpYyB2b2lkIHhoY2lfcGNpX3Jl bW92ZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogCQl1c2JfcmVtb3ZlX2hjZCh4aGNpLT5zaGFyZWRf aGNkKTsKIAkJdXNiX3B1dF9oY2QoeGhjaS0+c2hhcmVkX2hjZCk7CiAJfQotCXVzYl9oY2RfcGNp X3JlbW92ZShkZXYpOwogCiAJLyogV29ya2Fyb3VuZCBmb3Igc3B1cmlvdXMgd2FrZXVwcyBhdCBz aHV0ZG93biB3aXRoIEhTVyAqLwogCWlmICh4aGNpLT5xdWlya3MgJiBYSENJX1NQVVJJT1VTX1dB S0VVUCkKIAkJcGNpX3NldF9wb3dlcl9zdGF0ZShkZXYsIFBDSV9EM2hvdCk7CiAKKwl1c2JfaGNk X3BjaV9yZW1vdmUoZGV2KTsKKwogCWtmcmVlKHhoY2kpOwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLXJpbmcuYwpp bmRleCBmMTVlMmRmNDQ0OGMuLjU4ZWRjNTQ3OGQ2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv aG9zdC94aGNpLXJpbmcuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jCkBAIC0x MzUxLDEyICsxMzUxLDYgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2NtZF9jb21wbGV0aW9uKHN0cnVj dCB4aGNpX2hjZCAqeGhjaSwKIAogCWNtZCA9IGxpc3RfZW50cnkoeGhjaS0+Y21kX2xpc3QubmV4 dCwgc3RydWN0IHhoY2lfY29tbWFuZCwgY21kX2xpc3QpOwogCi0JaWYgKGNtZC0+Y29tbWFuZF90 cmIgIT0geGhjaS0+Y21kX3JpbmctPmRlcXVldWUpIHsKLQkJeGhjaV9lcnIoeGhjaSwKLQkJCSAi Q29tbWFuZCBjb21wbGV0aW9uIGV2ZW50IGRvZXMgbm90IG1hdGNoIGNvbW1hbmRcbiIpOwotCQly ZXR1cm47Ci0JfQotCiAJZGVsX3RpbWVyKCZ4aGNpLT5jbWRfdGltZXIpOwogCiAJdHJhY2VfeGhj aV9jbWRfY29tcGxldGlvbihjbWRfdHJiLCAoc3RydWN0IHhoY2lfZ2VuZXJpY190cmIgKikgZXZl bnQpOwpAQCAtMTM2OCw2ICsxMzYyLDEzIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9jbWRfY29tcGxl dGlvbihzdHJ1Y3QgeGhjaV9oY2QgKnhoY2ksCiAJCXhoY2lfaGFuZGxlX3N0b3BwZWRfY21kX3Jp bmcoeGhjaSwgY21kKTsKIAkJcmV0dXJuOwogCX0KKworCWlmIChjbWQtPmNvbW1hbmRfdHJiICE9 IHhoY2ktPmNtZF9yaW5nLT5kZXF1ZXVlKSB7CisJCXhoY2lfZXJyKHhoY2ksCisJCQkgIkNvbW1h bmQgY29tcGxldGlvbiBldmVudCBkb2VzIG5vdCBtYXRjaCBjb21tYW5kXG4iKTsKKwkJcmV0dXJu OworCX0KKwogCS8qCiAJICogSG9zdCBhYm9ydGVkIHRoZSBjb21tYW5kIHJpbmcsIGNoZWNrIGlm IHRoZSBjdXJyZW50IGNvbW1hbmQgd2FzCiAJICogc3VwcG9zZWQgdG8gYmUgYWJvcnRlZCwgb3Ro ZXJ3aXNlIGNvbnRpbnVlIG5vcm1hbGx5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91 c2J0ZXN0LmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYnRlc3QuYwppbmRleCA4MjlmNDQ2MDY0ZWEu LjQxOWE1YjNjYjkyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKKysr IGIvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKQEAgLTQ4OCw3ICs0ODgsNiBAQCBzdGF0aWMg dm9pZCBzZ190aW1lb3V0KHVuc2lnbmVkIGxvbmcgX3JlcSkKIHsKIAlzdHJ1Y3QgdXNiX3NnX3Jl cXVlc3QJKnJlcSA9IChzdHJ1Y3QgdXNiX3NnX3JlcXVlc3QgKikgX3JlcTsKIAotCXJlcS0+c3Rh dHVzID0gLUVUSU1FRE9VVDsKIAl1c2Jfc2dfY2FuY2VsKHJlcSk7CiB9CiAKQEAgLTUxOSw4ICs1 MTgsMTAgQEAgc3RhdGljIGludCBwZXJmb3JtX3NnbGlzdCgKIAkJbW9kX3RpbWVyKCZzZ190aW1l ciwgamlmZmllcyArCiAJCQkJbXNlY3NfdG9famlmZmllcyhTSU1QTEVfSU9fVElNRU9VVCkpOwog CQl1c2Jfc2dfd2FpdChyZXEpOwotCQlkZWxfdGltZXJfc3luYygmc2dfdGltZXIpOwotCQlyZXR2 YWwgPSByZXEtPnN0YXR1czsKKwkJaWYgKCFkZWxfdGltZXJfc3luYygmc2dfdGltZXIpKQorCQkJ cmV0dmFsID0gLUVUSU1FRE9VVDsKKwkJZWxzZQorCQkJcmV0dmFsID0gcmVxLT5zdGF0dXM7CiAK IAkJLyogRklYTUUgY2hlY2sgcmVzdWx0aW5nIGRhdGEgcGF0dGVybiAqLwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL2ZpZm8uYyBiL2RyaXZlcnMvdXNiL3JlbmVzYXNf dXNiaHMvZmlmby5jCmluZGV4IDUwNzYzZWJmZjAxNS4uMmE1NDBlNGI1YzYxIDEwMDY0NAotLS0g YS9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL2ZpZm8uYworKysgYi9kcml2ZXJzL3VzYi9yZW5l c2FzX3VzYmhzL2ZpZm8uYwpAQCAtNzgwLDM2ICs3ODAsNDYgQEAgc3RhdGljIHZvaWQgeGZlcl93 b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdXNiaHNfcGt0ICpwa3Qg PSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHVzYmhzX3BrdCwgd29yayk7CiAJc3RydWN0IHVz YmhzX3BpcGUgKnBpcGUgPSBwa3QtPnBpcGU7Ci0Jc3RydWN0IHVzYmhzX2ZpZm8gKmZpZm8gPSB1 c2Joc19waXBlX3RvX2ZpZm8ocGlwZSk7CisJc3RydWN0IHVzYmhzX2ZpZm8gKmZpZm87CiAJc3Ry dWN0IHVzYmhzX3ByaXYgKnByaXYgPSB1c2Joc19waXBlX3RvX3ByaXYocGlwZSk7CiAJc3RydWN0 IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkZXNjOwotCXN0cnVjdCBkbWFfY2hhbiAqY2hhbiA9 IHVzYmhzZl9kbWFfY2hhbl9nZXQoZmlmbywgcGt0KTsKKwlzdHJ1Y3QgZG1hX2NoYW4gKmNoYW47 CiAJc3RydWN0IGRldmljZSAqZGV2ID0gdXNiaHNfcHJpdl90b19kZXYocHJpdik7CiAJZW51bSBk bWFfdHJhbnNmZXJfZGlyZWN0aW9uIGRpcjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisJdXNi aHNfbG9jayhwcml2LCBmbGFncyk7CisJZmlmbyA9IHVzYmhzX3BpcGVfdG9fZmlmbyhwaXBlKTsK KwlpZiAoIWZpZm8pCisJCWdvdG8geGZlcl93b3JrX2VuZDsKKworCWNoYW4gPSB1c2Joc2ZfZG1h X2NoYW5fZ2V0KGZpZm8sIHBrdCk7CiAJZGlyID0gdXNiaHNfcGlwZV9pc19kaXJfaW4ocGlwZSkg PyBETUFfREVWX1RPX01FTSA6IERNQV9NRU1fVE9fREVWOwogCiAJZGVzYyA9IGRtYWVuZ2luZV9w cmVwX3NsYXZlX3NpbmdsZShjaGFuLCBwa3QtPmRtYSArIHBrdC0+YWN0dWFsLAogCQkJCQlwa3Qt PnRyYW5zLCBkaXIsCiAJCQkJCURNQV9QUkVQX0lOVEVSUlVQVCB8IERNQV9DVFJMX0FDSyk7CiAJ aWYgKCFkZXNjKQotCQlyZXR1cm47CisJCWdvdG8geGZlcl93b3JrX2VuZDsKIAogCWRlc2MtPmNh bGxiYWNrCQk9IHVzYmhzZl9kbWFfY29tcGxldGU7CiAJZGVzYy0+Y2FsbGJhY2tfcGFyYW0JPSBw aXBlOwogCiAJaWYgKGRtYWVuZ2luZV9zdWJtaXQoZGVzYykgPCAwKSB7CiAJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIHN1Ym1pdCBkbWEgZGVzY3JpcHRvclxuIik7Ci0JCXJldHVybjsKKwkJZ290 byB4ZmVyX3dvcmtfZW5kOwogCX0KIAogCWRldl9kYmcoZGV2LCAiICAlcyAlZCAoJWQvICVkKVxu IiwKIAkJZmlmby0+bmFtZSwgdXNiaHNfcGlwZV9udW1iZXIocGlwZSksIHBrdC0+bGVuZ3RoLCBw a3QtPnplcm8pOwogCi0JdXNiaHNfcGlwZV9zZXRfdHJhbnNfY291bnRfaWZfYnVsayhwaXBlLCBw a3QtPnRyYW5zKTsKLQl1c2Joc19waXBlX2VuYWJsZShwaXBlKTsKIAl1c2Joc2ZfZG1hX3N0YXJ0 KHBpcGUsIGZpZm8pOworCXVzYmhzX3BpcGVfc2V0X3RyYW5zX2NvdW50X2lmX2J1bGsocGlwZSwg cGt0LT50cmFucyk7CiAJZG1hX2FzeW5jX2lzc3VlX3BlbmRpbmcoY2hhbik7CisJdXNiaHNfcGlw ZV9lbmFibGUocGlwZSk7CisKK3hmZXJfd29ya19lbmQ6CisJdXNiaHNfdW5sb2NrKHByaXYsIGZs YWdzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvbW9k LmMgYi9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL21vZC5jCmluZGV4IDZhMDMwYjkzMWEzYi4u MjU0MTk0ZDYxOTE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL21vZC5j CisrKyBiL2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvbW9kLmMKQEAgLTI3Miw5ICsyNzIsMTYg QEAgc3RhdGljIGlycXJldHVybl90IHVzYmhzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkYXRh KQogCXVzYmhzX3dyaXRlKHByaXYsIElOVFNUUzAsIH5pcnFfc3RhdGUuaW50c3RzMCAmIElOVFNU UzBfTUFHSUMpOwogCXVzYmhzX3dyaXRlKHByaXYsIElOVFNUUzEsIH5pcnFfc3RhdGUuaW50c3Rz MSAmIElOVFNUUzFfTUFHSUMpOwogCi0JdXNiaHNfd3JpdGUocHJpdiwgQlJEWVNUUywgfmlycV9z dGF0ZS5icmR5c3RzKTsKKwkvKgorCSAqIFRoZSBkcml2ZXIgc2hvdWxkIG5vdCBjbGVhciB0aGUg eHh4U1RTIGFmdGVyIHRoZSBsaW5lIG9mCisJICogImNhbGwgaXJxIGNhbGxiYWNrIGZ1bmN0aW9u cyIgYmVjYXVzZSBlYWNoICJpZiIgc3RhdGVtZW50IGlzCisJICogcG9zc2libGUgdG8gY2FsbCB0 aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGF2b2lkaW5nIGFueSBzaWRlIGVmZmVjdHMuCisJICov CisJaWYgKGlycV9zdGF0ZS5pbnRzdHMwICYgQlJEWSkKKwkJdXNiaHNfd3JpdGUocHJpdiwgQlJE WVNUUywgfmlycV9zdGF0ZS5icmR5c3RzKTsKIAl1c2Joc193cml0ZShwcml2LCBOUkRZU1RTLCB+ aXJxX3N0YXRlLm5yZHlzdHMpOwotCXVzYmhzX3dyaXRlKHByaXYsIEJFTVBTVFMsIH5pcnFfc3Rh dGUuYmVtcHN0cyk7CisJaWYgKGlycV9zdGF0ZS5pbnRzdHMwICYgQkVNUCkKKwkJdXNiaHNfd3Jp dGUocHJpdiwgQkVNUFNUUywgfmlycV9zdGF0ZS5iZW1wc3RzKTsKIAogCS8qCiAJICogY2FsbCBp cnEgY2FsbGJhY2sgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9yZW5lc2FzX3Vz YmhzL21vZF9nYWRnZXQuYyBiL2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvbW9kX2dhZGdldC5j CmluZGV4IGUzNDRkNTBmNDY5Ny4uNjU4M2MwNGNjMzVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9yZW5lc2FzX3VzYmhzL21vZF9nYWRnZXQuYworKysgYi9kcml2ZXJzL3VzYi9yZW5lc2FzX3Vz YmhzL21vZF9nYWRnZXQuYwpAQCAtNTU4LDYgKzU1OCw5IEBAIHN0YXRpYyBpbnQgdXNiaHNnX2Vw X2VuYWJsZShzdHJ1Y3QgdXNiX2VwICplcCwKIAlzdHJ1Y3QgdXNiaHNfcHJpdiAqcHJpdiA9IHVz YmhzZ19ncHJpdl90b19wcml2KGdwcml2KTsKIAlzdHJ1Y3QgdXNiaHNfcGlwZSAqcGlwZTsKIAlp bnQgcmV0ID0gLUVJTzsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJdXNiaHNfbG9jayhwcml2 LCBmbGFncyk7CiAKIAkvKgogCSAqIGlmIGl0IGFscmVhZHkgaGF2ZSBwaXBlLApAQCAtNTY2LDcg KzU2OSw4IEBAIHN0YXRpYyBpbnQgdXNiaHNnX2VwX2VuYWJsZShzdHJ1Y3QgdXNiX2VwICplcCwK IAlpZiAodWVwLT5waXBlKSB7CiAJCXVzYmhzX3BpcGVfY2xlYXIodWVwLT5waXBlKTsKIAkJdXNi aHNfcGlwZV9zZXF1ZW5jZV9kYXRhMCh1ZXAtPnBpcGUpOwotCQlyZXR1cm4gMDsKKwkJcmV0ID0g MDsKKwkJZ290byB1c2Joc2dfZXBfZW5hYmxlX2VuZDsKIAl9CiAKIAlwaXBlID0gdXNiaHNfcGlw ZV9tYWxsb2MocHJpdiwKQEAgLTU5NCw2ICs1OTgsOSBAQCBzdGF0aWMgaW50IHVzYmhzZ19lcF9l bmFibGUoc3RydWN0IHVzYl9lcCAqZXAsCiAJCXJldCA9IDA7CiAJfQogCit1c2Joc2dfZXBfZW5h YmxlX2VuZDoKKwl1c2Joc191bmxvY2socHJpdiwgZmxhZ3MpOworCiAJcmV0dXJuIHJldDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvZnRkaV9zaW8uYwppbmRleCBmYjNhODMyZDg2ZTMuLjYxMDM3MjdjZDA2MCAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKKysrIGIvZHJpdmVycy91c2Iv c2VyaWFsL2Z0ZGlfc2lvLmMKQEAgLTY2MSw2ICs2NjEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHVzYl9kZXZpY2VfaWQgaWRfdGFibGVfY29tYmluZWRbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoRlRE SV9WSUQsIEZURElfRUxWX1RGRDEyOF9QSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZURElfVklELCBG VERJX0VMVl9GTTNSWF9QSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX0VMVl9X Uzc3N19QSUQpIH0sCisJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX1BBTE1TRU5TX1BJRCkg fSwKKwl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIEZURElfSVZJVU1fWFNUQVRfUElEKSB9LAogCXsg VVNCX0RFVklDRShGVERJX1ZJRCwgTElOWF9TRE1VU0JRU1NfUElEKSB9LAogCXsgVVNCX0RFVklD RShGVERJX1ZJRCwgTElOWF9NQVNURVJERVZFTDJfUElEKSB9LAogCXsgVVNCX0RFVklDRShGVERJ X1ZJRCwgTElOWF9GVVRVUkVfMF9QSUQpIH0sCkBAIC0xMDIxLDYgKzEwMjMsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgaWRfdGFibGVfY29tYmluZWRbXSA9IHsKIAl7IFVT Ql9ERVZJQ0UoSUNQREFTX1ZJRCwgSUNQREFTX0k3NTYwVV9QSUQpIH0sCiAJeyBVU0JfREVWSUNF KElDUERBU19WSUQsIElDUERBU19JNzU2MVVfUElEKSB9LAogCXsgVVNCX0RFVklDRShJQ1BEQVNf VklELCBJQ1BEQVNfSTc1NjNVX1BJRCkgfSwKKwl7IFVTQl9ERVZJQ0UoV0lDRURfVklELCBXSUNF RF9VU0IyMDcwNlYyX1BJRCkgfSwKIAl7IH0JCQkJCS8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiB9 OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmggYi9kcml2 ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmgKaW5kZXggMzM0YmM2MDAyODJkLi40OGRiODRm MjVjYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npb19pZHMuaAorKysg Yi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmgKQEAgLTQwNiw2ICs0MDYsMTIgQEAK ICNkZWZpbmUgRlRESV80Tl9HQUxBWFlfREVfM19QSUQJMHhGM0MyCiAKIC8qCisgKiBJdml1bSBU ZWNobm9sb2dpZXMgcHJvZHVjdCBJRHMKKyAqLworI2RlZmluZSBGVERJX1BBTE1TRU5TX1BJRAkw eGY0NDAKKyNkZWZpbmUgRlRESV9JVklVTV9YU1RBVF9QSUQJMHhmNDQxCisKKy8qCiAgKiBMaW54 IFRlY2hub2xvZ2llcyBwcm9kdWN0IGlkcwogICovCiAjZGVmaW5lIExJTlhfU0RNVVNCUVNTX1BJ RAkweEY0NDgJLyogTGlueCBTRE0tVVNCLVFTLVMgKi8KQEAgLTY3Myw2ICs2NzksMTIgQEAKICNk ZWZpbmUgSU5UUkVQSURfTkVPVklfUElECTB4MDcwMQogCiAvKgorICogV0lDRUQgVVNCIFVBUlQK KyAqLworI2RlZmluZSBXSUNFRF9WSUQJCTB4MEE1QworI2RlZmluZSBXSUNFRF9VU0IyMDcwNlYy X1BJRAkweDY0MjIKKworLyoKICAqIERlZmluaXRpb25zIGZvciBJRCBURUNIICh3d3cuaWR0LW5l dC5jb20pIGRldmljZXMKICAqLwogI2RlZmluZSBJRFRFQ0hfVklECQkweDBBQ0QJLyogSUQgVEVD SCBWZW5kb3IgSUQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3NzIwLmMg Yi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcyMC5jCmluZGV4IGRmZDcyOGEyNjNkMi4uYzNiOGFl MzYwNDI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcyMC5jCisrKyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9tb3M3NzIwLmMKQEAgLTEyMzksNyArMTIzOSw3IEBAIHN0YXRpYyBp bnQgbW9zNzcyMF93cml0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3Nlcmlh bF9wb3J0ICpwb3J0LAogCiAJaWYgKHVyYi0+dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpIHsKIAkJ dXJiLT50cmFuc2Zlcl9idWZmZXIgPSBrbWFsbG9jKFVSQl9UUkFOU0ZFUl9CVUZGRVJfU0laRSwK LQkJCQkJICAgICAgIEdGUF9LRVJORUwpOworCQkJCQkgICAgICAgR0ZQX0FUT01JQyk7CiAJCWlm ICghdXJiLT50cmFuc2Zlcl9idWZmZXIpCiAJCQlnb3RvIGV4aXQ7CiAJfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3ODQw LmMKaW5kZXggMzkzYmU1NjJkODc1Li5mNWYzYjQ5ZmY5ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dXNiL3NlcmlhbC9tb3M3ODQwLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAuYwpA QCAtMTM3Miw4ICsxMzcyLDggQEAgc3RhdGljIGludCBtb3M3ODQwX3dyaXRlKHN0cnVjdCB0dHlf c3RydWN0ICp0dHksIHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJfQogCiAJaWYgKHVy Yi0+dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpIHsKLQkJdXJiLT50cmFuc2Zlcl9idWZmZXIgPQot CQkgICAga21hbGxvYyhVUkJfVFJBTlNGRVJfQlVGRkVSX1NJWkUsIEdGUF9LRVJORUwpOworCQl1 cmItPnRyYW5zZmVyX2J1ZmZlciA9IGttYWxsb2MoVVJCX1RSQU5TRkVSX0JVRkZFUl9TSVpFLAor CQkJCQkgICAgICAgR0ZQX0FUT01JQyk7CiAJCWlmICghdXJiLT50cmFuc2Zlcl9idWZmZXIpCiAJ CQlnb3RvIGV4aXQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5j IGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCmluZGV4IDlkOGZlM2QyZmVjYS4uZjI0M2M3 MzRlYjA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKKysrIGIvZHJp dmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCkBAIC0yNzYsNiArMjc2LDEzIEBAIHN0YXRpYyB2b2lk IG9wdGlvbl9pbnN0YXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKTsKICNkZWZpbmUgVEVMSVRf UFJPRFVDVF9MRTkyMl9VU0JDRkc1CQkweDEwNDUKICNkZWZpbmUgVEVMSVRfUFJPRFVDVF9MRTky MAkJCTB4MTIwMAogI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTEwCQkJMHgxMjAxCisjZGVmaW5l IFRFTElUX1BST0RVQ1RfTEU5MTBfVVNCQ0ZHNAkJMHgxMjA2CisjZGVmaW5lIFRFTElUX1BST0RV Q1RfTEU5MjBBNF8xMjA3CQkweDEyMDcKKyNkZWZpbmUgVEVMSVRfUFJPRFVDVF9MRTkyMEE0XzEy MDgJCTB4MTIwOAorI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTIwQTRfMTIxMQkJMHgxMjExCisj ZGVmaW5lIFRFTElUX1BST0RVQ1RfTEU5MjBBNF8xMjEyCQkweDEyMTIKKyNkZWZpbmUgVEVMSVRf UFJPRFVDVF9MRTkyMEE0XzEyMTMJCTB4MTIxMworI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTIw QTRfMTIxNAkJMHgxMjE0CiAKIC8qIFpURSBQUk9EVUNUUyAqLwogI2RlZmluZSBaVEVfVkVORE9S X0lECQkJCTB4MTlkMgpAQCAtNTIwLDYgKzUyNywxMiBAQCBzdGF0aWMgdm9pZCBvcHRpb25faW5z dGF0X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYik7CiAjZGVmaW5lIFZJQVRFTEVDT01fVkVORE9S X0lECQkJMHgxNWViCiAjZGVmaW5lIFZJQVRFTEVDT01fUFJPRFVDVF9DRFM3CQkJMHgwMDAxCiAK Ky8qIFdlVGVsZWNvbSBwcm9kdWN0cyAqLworI2RlZmluZSBXRVRFTEVDT01fVkVORE9SX0lECQkJ MHgyMmRlCisjZGVmaW5lIFdFVEVMRUNPTV9QUk9EVUNUX1dNRDIwMAkJMHg2ODAxCisjZGVmaW5l IFdFVEVMRUNPTV9QUk9EVUNUXzY4MDIJCQkweDY4MDIKKyNkZWZpbmUgV0VURUxFQ09NX1BST0RV Q1RfV01EMzAwCQkweDY4MDMKKwogLyogc29tZSBkZXZpY2VzIGludGVyZmFjZXMgbmVlZCBzcGVj aWFsIGhhbmRsaW5nIGR1ZSB0byBhIG51bWJlciBvZiByZWFzb25zICovCiBlbnVtIG9wdGlvbl9i bGFja2xpc3RfcmVhc29uIHsKIAkJT1BUSU9OX0JMQUNLTElTVF9OT05FID0gMCwKQEAgLTY0Miw2 ICs2NTUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb25fYmxhY2tsaXN0X2luZm8gc2ll cnJhX21jNzN4eF9ibGFja2xpc3QgPSB7CiAJLnJlc2VydmVkID0gQklUKDgpIHwgQklUKDEwKSB8 IEJJVCgxMSksCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbl9ibGFja2xpc3RfaW5m byB0ZWxpdF9sZTkyMGE0X2JsYWNrbGlzdF8xID0geworCS5zZW5kc2V0dXAgPSBCSVQoMCksCisJ LnJlc2VydmVkID0gQklUKDEpLAorfTsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb25fYmxh Y2tsaXN0X2luZm8gdGVsaXRfbGU5MjJfYmxhY2tsaXN0X3VzYmNmZzAgPSB7CiAJLnNlbmRzZXR1 cCA9IEJJVCgyKSwKIAkucmVzZXJ2ZWQgPSBCSVQoMCkgfCBCSVQoMSkgfCBCSVQoMyksCkBAIC0x MjE3LDggKzEyMzUsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG9wdGlv bl9pZHNbXSA9IHsKIAkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTky Ml9ibGFja2xpc3RfdXNiY2ZnMCB9LAogCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRF TElUX1BST0RVQ1RfTEU5MTApLAogCQkuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJnRl bGl0X2xlOTEwX2JsYWNrbGlzdCB9LAorCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRF TElUX1BST0RVQ1RfTEU5MTBfVVNCQ0ZHNCksCisJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxv bmdfdCkmdGVsaXRfbGU5MjJfYmxhY2tsaXN0X3VzYmNmZzMgfSwKIAl7IFVTQl9ERVZJQ0UoVEVM SVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xFOTIwKSwKIAkJLmRyaXZlcl9pbmZvID0gKGtl cm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkyMF9ibGFja2xpc3QgfSwKKwl7IFVTQl9ERVZJQ0UoVEVM SVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xFOTIwQTRfMTIwNykgfSwKKwl7IFVTQl9ERVZJ Q0UoVEVMSVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xFOTIwQTRfMTIwOCksCisJCS5kcml2 ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmdGVsaXRfbGU5MjBhNF9ibGFja2xpc3RfMSB9LAor CXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfTEU5MjBBNF8xMjEx KSwKKwkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkyMl9ibGFja2xp c3RfdXNiY2ZnMyB9LAorCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RV Q1RfTEU5MjBBNF8xMjEyKSwKKwkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxp dF9sZTkyMGE0X2JsYWNrbGlzdF8xIH0sCisJeyBVU0JfREVWSUNFX0lOVEVSRkFDRV9DTEFTUyhU RUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfTEU5MjBBNF8xMjEzLCAweGZmKSB9LAorCXsg VVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfTEU5MjBBNF8xMjE0KSwK KwkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkyMl9ibGFja2xpc3Rf dXNiY2ZnMyB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oWlRFX1ZFTkRPUl9J RCwgWlRFX1BST0RVQ1RfTUY2MjIsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sIC8qIFpURSBXQ0RNQSBw cm9kdWN0cyAqLwogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oWlRFX1ZFTkRPUl9J RCwgMHgwMDAyLCAweGZmLCAweGZmLCAweGZmKSwKIAkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91 bG9uZ190KSZuZXRfaW50ZjFfYmxhY2tsaXN0IH0sCkBAIC0xOTc0LDkgKzIwMDQsMTMgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG9wdGlvbl9pZHNbXSA9IHsKIAkgIC5kcml2 ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmbmV0X2ludGY0X2JsYWNrbGlzdCB9LAogCXsgVVNC X0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwN2QxLCAweDNlMDEsIDB4ZmYsIDB4ZmYsIDB4 ZmYpIH0sIC8qIEQtTGluayBEV00tMTUyL0MxICovCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZB Q0VfSU5GTygweDA3ZDEsIDB4M2UwMiwgMHhmZiwgMHhmZiwgMHhmZikgfSwgLyogRC1MaW5rIERX TS0xNTYvQzEgKi8KKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDdkMSwgMHg3 ZTExLCAweGZmLCAweGZmLCAweGZmKSB9LCAvKiBELUxpbmsgRFdNLTE1Ni9BMyAqLwogCXsgVVNC X0RFVklDRV9JTlRFUkZBQ0VfQ0xBU1MoMHgyMDIwLCAweDQwMDAsIDB4ZmYpIH0sICAgICAgICAg ICAgICAgIC8qIE9MSUNBUkQzMDAgLSBNVDYyMjUgKi8KIAl7IFVTQl9ERVZJQ0UoSU5PVklBX1ZF TkRPUl9JRCwgSU5PVklBX1NFVzg1OCkgfSwKIAl7IFVTQl9ERVZJQ0UoVklBVEVMRUNPTV9WRU5E T1JfSUQsIFZJQVRFTEVDT01fUFJPRFVDVF9DRFM3KSB9LAorCXsgVVNCX0RFVklDRV9BTkRfSU5U RVJGQUNFX0lORk8oV0VURUxFQ09NX1ZFTkRPUl9JRCwgV0VURUxFQ09NX1BST0RVQ1RfV01EMjAw LCAweGZmLCAweGZmLCAweGZmKSB9LAorCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8o V0VURUxFQ09NX1ZFTkRPUl9JRCwgV0VURUxFQ09NX1BST0RVQ1RfNjgwMiwgMHhmZiwgMHhmZiwg MHhmZikgfSwKKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKFdFVEVMRUNPTV9WRU5E T1JfSUQsIFdFVEVMRUNPTV9QUk9EVUNUX1dNRDMwMCwgMHhmZiwgMHhmZiwgMHhmZikgfSwKIAl7 IH0gLyogVGVybWluYXRpbmcgZW50cnkgKi8KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwg b3B0aW9uX2lkcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC1z aW1wbGUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLXNpbXBsZS5jCmluZGV4IDVj MTlkM2U3YjRiOC4uNzkwNDUyYzdhOWU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwv dXNiLXNlcmlhbC1zaW1wbGUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC1z aW1wbGUuYwpAQCAtNDgsNyArNDgsOCBAQCBERVZJQ0UoZnVuc29mdCwgRlVOU09GVF9JRFMpOwog LyogSW5maW5lb24gRmxhc2hsb2FkZXIgZHJpdmVyICovCiAjZGVmaW5lIEZMQVNITE9BREVSX0lE UygpCQlcCiAJeyBVU0JfREVWSUNFX0lOVEVSRkFDRV9DTEFTUygweDA1OGIsIDB4MDA0MSwgVVNC X0NMQVNTX0NEQ19EQVRBKSB9LCBcCi0JeyBVU0JfREVWSUNFKDB4ODA4NywgMHgwNzE2KSB9CisJ eyBVU0JfREVWSUNFKDB4ODA4NywgMHgwNzE2KSB9LCBcCisJeyBVU0JfREVWSUNFKDB4ODA4Nywg MHgwODAxKSB9CiBERVZJQ0UoZmxhc2hsb2FkZXIsIEZMQVNITE9BREVSX0lEUyk7CiAKIC8qIEdv b2dsZSBTZXJpYWwgVVNCIFN1YkNsYXNzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJp YWwvdXNiLXNlcmlhbC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYwppbmRleCA2 ZmJmYzhmYzJmNWQuLmQzYmY4MzQ4ZTYzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFs L3VzYi1zZXJpYWwuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jCkBAIC0x NDE2LDcgKzE0MTYsNyBAQCBpbnQgdXNiX3NlcmlhbF9yZWdpc3Rlcl9kcml2ZXJzKHN0cnVjdCB1 c2Jfc2VyaWFsX2RyaXZlciAqY29uc3Qgc2VyaWFsX2RyaXZlcnNbXQogCiAJcmMgPSB1c2JfcmVn aXN0ZXIodWRyaXZlcik7CiAJaWYgKHJjKQotCQlyZXR1cm4gcmM7CisJCWdvdG8gZmFpbGVkX3Vz Yl9yZWdpc3RlcjsKIAogCWZvciAoc2QgPSBzZXJpYWxfZHJpdmVyczsgKnNkOyArK3NkKSB7CiAJ CSgqc2QpLT51c2JfZHJpdmVyID0gdWRyaXZlcjsKQEAgLTE0MzQsNiArMTQzNCw4IEBAIGludCB1 c2Jfc2VyaWFsX3JlZ2lzdGVyX2RyaXZlcnMoc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyICpjb25z dCBzZXJpYWxfZHJpdmVyc1tdCiAJd2hpbGUgKHNkLS0gPiBzZXJpYWxfZHJpdmVycykKIAkJdXNi X3NlcmlhbF9kZXJlZ2lzdGVyKCpzZCk7CiAJdXNiX2RlcmVnaXN0ZXIodWRyaXZlcik7CitmYWls ZWRfdXNiX3JlZ2lzdGVyOgorCWtmcmVlKHVkcml2ZXIpOwogCXJldHVybiByYzsKIH0KIEVYUE9S VF9TWU1CT0xfR1BMKHVzYl9zZXJpYWxfcmVnaXN0ZXJfZHJpdmVycyk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMK aW5kZXggYTFlNzdmNTcwYjE5Li40MzFmYjFlMjU4MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZp by9wY2kvdmZpb19wY2kuYworKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMKQEAgLTQ2 MCw4ICs0NjAsOSBAQCBzdGF0aWMgbG9uZyB2ZmlvX3BjaV9pb2N0bCh2b2lkICpkZXZpY2VfZGF0 YSwKIAogCX0gZWxzZSBpZiAoY21kID09IFZGSU9fREVWSUNFX1NFVF9JUlFTKSB7CiAJCXN0cnVj dCB2ZmlvX2lycV9zZXQgaGRyOworCQlzaXplX3Qgc2l6ZTsKIAkJdTggKmRhdGEgPSBOVUxMOwot CQlpbnQgcmV0ID0gMDsKKwkJaW50IG1heCwgcmV0ID0gMDsKIAogCQltaW5zeiA9IG9mZnNldG9m ZW5kKHN0cnVjdCB2ZmlvX2lycV9zZXQsIGNvdW50KTsKIApAQCAtNDY5LDIzICs0NzAsMzEgQEAg c3RhdGljIGxvbmcgdmZpb19wY2lfaW9jdGwodm9pZCAqZGV2aWNlX2RhdGEsCiAJCQlyZXR1cm4g LUVGQVVMVDsKIAogCQlpZiAoaGRyLmFyZ3N6IDwgbWluc3ogfHwgaGRyLmluZGV4ID49IFZGSU9f UENJX05VTV9JUlFTIHx8CisJCSAgICBoZHIuY291bnQgPj0gKFUzMl9NQVggLSBoZHIuc3RhcnQp IHx8CiAJCSAgICBoZHIuZmxhZ3MgJiB+KFZGSU9fSVJRX1NFVF9EQVRBX1RZUEVfTUFTSyB8CiAJ CQkJICBWRklPX0lSUV9TRVRfQUNUSU9OX1RZUEVfTUFTSykpCiAJCQlyZXR1cm4gLUVJTlZBTDsK IAotCQlpZiAoIShoZHIuZmxhZ3MgJiBWRklPX0lSUV9TRVRfREFUQV9OT05FKSkgewotCQkJc2l6 ZV90IHNpemU7Ci0JCQlpbnQgbWF4ID0gdmZpb19wY2lfZ2V0X2lycV9jb3VudCh2ZGV2LCBoZHIu aW5kZXgpOworCQltYXggPSB2ZmlvX3BjaV9nZXRfaXJxX2NvdW50KHZkZXYsIGhkci5pbmRleCk7 CisJCWlmIChoZHIuc3RhcnQgPj0gbWF4IHx8IGhkci5zdGFydCArIGhkci5jb3VudCA+IG1heCkK KwkJCXJldHVybiAtRUlOVkFMOwogCi0JCQlpZiAoaGRyLmZsYWdzICYgVkZJT19JUlFfU0VUX0RB VEFfQk9PTCkKLQkJCQlzaXplID0gc2l6ZW9mKHVpbnQ4X3QpOwotCQkJZWxzZSBpZiAoaGRyLmZs YWdzICYgVkZJT19JUlFfU0VUX0RBVEFfRVZFTlRGRCkKLQkJCQlzaXplID0gc2l6ZW9mKGludDMy X3QpOwotCQkJZWxzZQotCQkJCXJldHVybiAtRUlOVkFMOworCQlzd2l0Y2ggKGhkci5mbGFncyAm IFZGSU9fSVJRX1NFVF9EQVRBX1RZUEVfTUFTSykgeworCQljYXNlIFZGSU9fSVJRX1NFVF9EQVRB X05PTkU6CisJCQlzaXplID0gMDsKKwkJCWJyZWFrOworCQljYXNlIFZGSU9fSVJRX1NFVF9EQVRB X0JPT0w6CisJCQlzaXplID0gc2l6ZW9mKHVpbnQ4X3QpOworCQkJYnJlYWs7CisJCWNhc2UgVkZJ T19JUlFfU0VUX0RBVEFfRVZFTlRGRDoKKwkJCXNpemUgPSBzaXplb2YoaW50MzJfdCk7CisJCQli cmVhazsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CiAKLQkJCWlmIChoZHIu YXJnc3ogLSBtaW5zeiA8IGhkci5jb3VudCAqIHNpemUgfHwKLQkJCSAgICBoZHIuc3RhcnQgPj0g bWF4IHx8IGhkci5zdGFydCArIGhkci5jb3VudCA+IG1heCkKKwkJaWYgKHNpemUpIHsKKwkJCWlm IChoZHIuYXJnc3ogLSBtaW5zeiA8IGhkci5jb3VudCAqIHNpemUpCiAJCQkJcmV0dXJuIC1FSU5W QUw7CiAKIAkJCWRhdGEgPSBtZW1kdXBfdXNlcigodm9pZCBfX3VzZXIgKikoYXJnICsgbWluc3op LApkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jIGIvZHJpdmVy cy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jCmluZGV4IDlkZDQ5Yzk4MzlhYy4uMzZjYjE5OGI3 MjkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMKKysrIGIv ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jCkBAIC00NjUsNyArNDY1LDcgQEAgc3Rh dGljIGludCB2ZmlvX21zaV9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2RldmljZSAqdmRldiwgaW50 IG52ZWMsIGJvb2wgbXNpeCkKIAlpZiAoIWlzX2lycV9ub25lKHZkZXYpKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAotCXZkZXYtPmN0eCA9IGt6YWxsb2MobnZlYyAqIHNpemVvZihzdHJ1Y3QgdmZpb19w Y2lfaXJxX2N0eCksIEdGUF9LRVJORUwpOworCXZkZXYtPmN0eCA9IGtjYWxsb2MobnZlYywgc2l6 ZW9mKHN0cnVjdCB2ZmlvX3BjaV9pcnFfY3R4KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF2ZGV2LT5j dHgpCiAJCXJldHVybiAtRU5PTUVNOwogCkBAIC03NTIsNDEgKzc1Miw1OCBAQCBzdGF0aWMgaW50 IHZmaW9fcGNpX3NldF9lcnJfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlICp2ZGV2LAog CQkJCSAgICB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3RhcnQsCiAJCQkJICAgIHVuc2lnbmVk IGNvdW50LCB1aW50MzJfdCBmbGFncywgdm9pZCAqZGF0YSkKIHsKLQlpbnQzMl90IGZkID0gKihp bnQzMl90ICopZGF0YTsKLQotCWlmICgoaW5kZXggIT0gVkZJT19QQ0lfRVJSX0lSUV9JTkRFWCkg fHwKLQkgICAgIShmbGFncyAmIFZGSU9fSVJRX1NFVF9EQVRBX1RZUEVfTUFTSykpCisJaWYgKGlu ZGV4ICE9IFZGSU9fUENJX0VSUl9JUlFfSU5ERVggfHwgc3RhcnQgIT0gMCB8fCBjb3VudCA+IDEp CiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyogREFUQV9OT05FL0RBVEFfQk9PTCBlbmFibGVzIGxv b3BiYWNrIHRlc3RpbmcgKi8KIAlpZiAoZmxhZ3MgJiBWRklPX0lSUV9TRVRfREFUQV9OT05FKSB7 Ci0JCWlmICh2ZGV2LT5lcnJfdHJpZ2dlcikKLQkJCWV2ZW50ZmRfc2lnbmFsKHZkZXYtPmVycl90 cmlnZ2VyLCAxKTsKLQkJcmV0dXJuIDA7CisJCWlmICh2ZGV2LT5lcnJfdHJpZ2dlcikgeworCQkJ aWYgKGNvdW50KSB7CisJCQkJZXZlbnRmZF9zaWduYWwodmRldi0+ZXJyX3RyaWdnZXIsIDEpOwor CQkJfSBlbHNlIHsKKwkJCQlldmVudGZkX2N0eF9wdXQodmRldi0+ZXJyX3RyaWdnZXIpOworCQkJ CXZkZXYtPmVycl90cmlnZ2VyID0gTlVMTDsKKwkJCX0KKwkJCXJldHVybiAwOworCQl9CiAJfSBl bHNlIGlmIChmbGFncyAmIFZGSU9fSVJRX1NFVF9EQVRBX0JPT0wpIHsKLQkJdWludDhfdCB0cmln Z2VyID0gKih1aW50OF90ICopZGF0YTsKKwkJdWludDhfdCB0cmlnZ2VyOworCisJCWlmICghY291 bnQpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQl0cmlnZ2VyID0gKih1aW50OF90ICopZGF0YTsK IAkJaWYgKHRyaWdnZXIgJiYgdmRldi0+ZXJyX3RyaWdnZXIpCiAJCQlldmVudGZkX3NpZ25hbCh2 ZGV2LT5lcnJfdHJpZ2dlciwgMSk7Ci0JCXJldHVybiAwOwotCX0KIAotCS8qIEhhbmRsZSBTRVRf REFUQV9FVkVOVEZEICovCi0JaWYgKGZkID09IC0xKSB7Ci0JCWlmICh2ZGV2LT5lcnJfdHJpZ2dl cikKLQkJCWV2ZW50ZmRfY3R4X3B1dCh2ZGV2LT5lcnJfdHJpZ2dlcik7Ci0JCXZkZXYtPmVycl90 cmlnZ2VyID0gTlVMTDsKIAkJcmV0dXJuIDA7Ci0JfSBlbHNlIGlmIChmZCA+PSAwKSB7Ci0JCXN0 cnVjdCBldmVudGZkX2N0eCAqZWZkY3R4OwotCQllZmRjdHggPSBldmVudGZkX2N0eF9mZGdldChm ZCk7Ci0JCWlmIChJU19FUlIoZWZkY3R4KSkKLQkJCXJldHVybiBQVFJfRVJSKGVmZGN0eCk7Ci0J CWlmICh2ZGV2LT5lcnJfdHJpZ2dlcikKLQkJCWV2ZW50ZmRfY3R4X3B1dCh2ZGV2LT5lcnJfdHJp Z2dlcik7Ci0JCXZkZXYtPmVycl90cmlnZ2VyID0gZWZkY3R4OworCX0gZWxzZSBpZiAoZmxhZ3Mg JiBWRklPX0lSUV9TRVRfREFUQV9FVkVOVEZEKSB7CisJCWludDMyX3QgZmQ7CisKKwkJaWYgKCFj b3VudCkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCWZkID0gKihpbnQzMl90ICopZGF0YTsKKwkJ aWYgKGZkID09IC0xKSB7CisJCQlpZiAodmRldi0+ZXJyX3RyaWdnZXIpCisJCQkJZXZlbnRmZF9j dHhfcHV0KHZkZXYtPmVycl90cmlnZ2VyKTsKKwkJCXZkZXYtPmVycl90cmlnZ2VyID0gTlVMTDsK KwkJfSBlbHNlIGlmIChmZCA+PSAwKSB7CisJCQlzdHJ1Y3QgZXZlbnRmZF9jdHggKmVmZGN0eDsK KworCQkJZWZkY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoZmQpOworCQkJaWYgKElTX0VSUihlZmRj dHgpKQorCQkJCXJldHVybiBQVFJfRVJSKGVmZGN0eCk7CisKKwkJCWlmICh2ZGV2LT5lcnJfdHJp Z2dlcikKKwkJCQlldmVudGZkX2N0eF9wdXQodmRldi0+ZXJyX3RyaWdnZXIpOworCisJCQl2ZGV2 LT5lcnJfdHJpZ2dlciA9IGVmZGN0eDsKKwkJfQogCQlyZXR1cm4gMDsKLQl9IGVsc2UKLQkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIC1FSU5WQUw7CiB9CiBpbnQgdmZpb19wY2lfc2V0 X2lycXNfaW9jdGwoc3RydWN0IHZmaW9fcGNpX2RldmljZSAqdmRldiwgdWludDMyX3QgZmxhZ3Ms CiAJCQkgICAgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBjb3VudCwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMgYi9kcml2ZXJzL3Zp cnRpby92aXJ0aW9fYmFsbG9vbi5jCmluZGV4IDc0OTBlOTJjMDNkNS4uNDQ3NTcxZDE5ZWNiIDEw MDY0NAotLS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jCisrKyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19iYWxsb29uLmMKQEAgLTE3Nyw2ICsxNzcsOCBAQCBzdGF0aWMgdm9pZCBs ZWFrX2JhbGxvb24oc3RydWN0IHZpcnRpb19iYWxsb29uICp2Yiwgc2l6ZV90IG51bSkKIAludW0g PSBtaW4obnVtLCBBUlJBWV9TSVpFKHZiLT5wZm5zKSk7CiAKIAltdXRleF9sb2NrKCZ2Yi0+YmFs bG9vbl9sb2NrKTsKKwkvKiBXZSBjYW4ndCByZWxlYXNlIG1vcmUgcGFnZXMgdGhhbiB0YWtlbiAq LworCW51bSA9IG1pbihudW0sIChzaXplX3QpdmItPm51bV9wYWdlcyk7CiAJZm9yICh2Yi0+bnVt X3BmbnMgPSAwOyB2Yi0+bnVtX3BmbnMgPCBudW07CiAJICAgICB2Yi0+bnVtX3BmbnMgKz0gVklS VElPX0JBTExPT05fUEFHRVNfUEVSX1BBR0UpIHsKIAkJcGFnZSA9IGJhbGxvb25fcGFnZV9kZXF1 ZXVlKHZiX2Rldl9pbmZvKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNf ZGV2X2Zyb250ZW5kLmMgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX2Rldl9mcm9udGVuZC5j CmluZGV4IDg1NTM0ZWE2MzU1NS4uNmJkMDZmOWQ3MzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hl bi94ZW5idXMveGVuYnVzX2Rldl9mcm9udGVuZC5jCisrKyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94 ZW5idXNfZGV2X2Zyb250ZW5kLmMKQEAgLTMxNiwxMSArMzE2LDE4IEBAIHN0YXRpYyBpbnQgeGVu YnVzX3dyaXRlX3RyYW5zYWN0aW9uKHVuc2lnbmVkIG1zZ190eXBlLAogCQkJcmMgPSAtRU5PTUVN OwogCQkJZ290byBvdXQ7CiAJCX0KKwl9IGVsc2UgaWYgKG1zZ190eXBlID09IFhTX1RSQU5TQUNU SU9OX0VORCkgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCAmdS0+dHJhbnNhY3Rpb25z LCBsaXN0KQorCQkJaWYgKHRyYW5zLT5oYW5kbGUuaWQgPT0gdS0+dS5tc2cudHhfaWQpCisJCQkJ YnJlYWs7CisJCWlmICgmdHJhbnMtPmxpc3QgPT0gJnUtPnRyYW5zYWN0aW9ucykKKwkJCXJldHVy biAtRVNSQ0g7CiAJfQogCiAJcmVwbHkgPSB4ZW5idXNfZGV2X3JlcXVlc3RfYW5kX3JlcGx5KCZ1 LT51Lm1zZyk7CiAJaWYgKElTX0VSUihyZXBseSkpIHsKLQkJa2ZyZWUodHJhbnMpOworCQlpZiAo bXNnX3R5cGUgPT0gWFNfVFJBTlNBQ1RJT05fU1RBUlQpCisJCQlrZnJlZSh0cmFucyk7CiAJCXJj ID0gUFRSX0VSUihyZXBseSk7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTMzMCwxMiArMzM3LDcgQEAg c3RhdGljIGludCB4ZW5idXNfd3JpdGVfdHJhbnNhY3Rpb24odW5zaWduZWQgbXNnX3R5cGUsCiAK IAkJbGlzdF9hZGQoJnRyYW5zLT5saXN0LCAmdS0+dHJhbnNhY3Rpb25zKTsKIAl9IGVsc2UgaWYg KG1zZ190eXBlID09IFhTX1RSQU5TQUNUSU9OX0VORCkgewotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHRyYW5zLCAmdS0+dHJhbnNhY3Rpb25zLCBsaXN0KQotCQkJaWYgKHRyYW5zLT5oYW5kbGUuaWQg PT0gdS0+dS5tc2cudHhfaWQpCi0JCQkJYnJlYWs7Ci0JCUJVR19PTigmdHJhbnMtPmxpc3QgPT0g JnUtPnRyYW5zYWN0aW9ucyk7CiAJCWxpc3RfZGVsKCZ0cmFucy0+bGlzdCk7Ci0KIAkJa2ZyZWUo dHJhbnMpOwogCX0KIApkaWZmIC0tZ2l0IGEvZnMvOXAvYWNsLmMgYi9mcy85cC9hY2wuYwppbmRl eCA4NDgyZjJkMTE2MDYuLmQzZjVkNDg3YWU0NiAxMDA2NDQKLS0tIGEvZnMvOXAvYWNsLmMKKysr IGIvZnMvOXAvYWNsLmMKQEAgLTMyMCwzMiArMzIwLDI2IEBAIHN0YXRpYyBpbnQgdjlmc194YXR0 cl9zZXRfYWNsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqbmFtZSwKIAljYXNl IEFDTF9UWVBFX0FDQ0VTUzoKIAkJbmFtZSA9IFBPU0lYX0FDTF9YQVRUUl9BQ0NFU1M7CiAJCWlm IChhY2wpIHsKLQkJCXVtb2RlX3QgbW9kZSA9IGlub2RlLT5pX21vZGU7Ci0JCQlyZXR2YWwgPSBw b3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZtb2RlKTsKLQkJCWlmIChyZXR2YWwgPCAwKQorCQkJ c3RydWN0IGlhdHRyIGlhdHRyOworCisJCQlyZXR2YWwgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUo aW5vZGUsICZpYXR0ci5pYV9tb2RlLCAmYWNsKTsKKwkJCWlmIChyZXR2YWwpCiAJCQkJZ290byBl cnJfb3V0OwotCQkJZWxzZSB7Ci0JCQkJc3RydWN0IGlhdHRyIGlhdHRyOwotCQkJCWlmIChyZXR2 YWwgPT0gMCkgewotCQkJCQkvKgotCQkJCQkgKiBBQ0wgY2FuIGJlIHJlcHJlc2VudGVkCi0JCQkJ CSAqIGJ5IHRoZSBtb2RlIGJpdHMuIFNvIGRvbid0Ci0JCQkJCSAqIHVwZGF0ZSBBQ0wuCi0JCQkJ CSAqLwotCQkJCQlhY2wgPSBOVUxMOwotCQkJCQl2YWx1ZSA9IE5VTEw7Ci0JCQkJCXNpemUgPSAw OwotCQkJCX0KLQkJCQkvKiBVcGR0ZSB0aGUgbW9kZSBiaXRzICovCi0JCQkJaWF0dHIuaWFfbW9k ZSA9ICgobW9kZSAmIFNfSUFMTFVHTykgfAotCQkJCQkJIChpbm9kZS0+aV9tb2RlICYgflNfSUFM TFVHTykpOwotCQkJCWlhdHRyLmlhX3ZhbGlkID0gQVRUUl9NT0RFOwotCQkJCS8qIEZJWE1FIHNo b3VsZCB3ZSB1cGRhdGUgY3RpbWUgPwotCQkJCSAqIFdoYXQgaXMgdGhlIGZvbGxvd2luZyBzZXR4 YXR0ciB1cGRhdGUgdGhlCi0JCQkJICogbW9kZSA/CisJCQlpZiAoIWFjbCkgeworCQkJCS8qCisJ CQkJICogQUNMIGNhbiBiZSByZXByZXNlbnRlZAorCQkJCSAqIGJ5IHRoZSBtb2RlIGJpdHMuIFNv IGRvbid0CisJCQkJICogdXBkYXRlIEFDTC4KIAkJCQkgKi8KLQkJCQl2OWZzX3Zmc19zZXRhdHRy X2RvdGwoZGVudHJ5LCAmaWF0dHIpOworCQkJCXZhbHVlID0gTlVMTDsKKwkJCQlzaXplID0gMDsK IAkJCX0KKwkJCWlhdHRyLmlhX3ZhbGlkID0gQVRUUl9NT0RFOworCQkJLyogRklYTUUgc2hvdWxk IHdlIHVwZGF0ZSBjdGltZSA/CisJCQkgKiBXaGF0IGlzIHRoZSBmb2xsb3dpbmcgc2V0eGF0dHIg dXBkYXRlIHRoZQorCQkJICogbW9kZSA/CisJCQkgKi8KKwkJCXY5ZnNfdmZzX3NldGF0dHJfZG90 bChkZW50cnksICZpYXR0cik7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBBQ0xfVFlQRV9ERUZBVUxU OgpkaWZmIC0tZ2l0IGEvZnMvOXAvdmZzX2lub2RlLmMgYi9mcy85cC92ZnNfaW5vZGUuYwppbmRl eCBiZGZjZWEwMTBjOWYuLmQwYjczMjBiMTdjNCAxMDA2NDQKLS0tIGEvZnMvOXAvdmZzX2lub2Rl LmMKKysrIGIvZnMvOXAvdmZzX2lub2RlLmMKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyBp bnQgdjlmc192ZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAq aWF0dHIpCiAJc3RydWN0IHA5X3dzdGF0IHdzdGF0OwogCiAJcDlfZGVidWcoUDlfREVCVUdfVkZT LCAiXG4iKTsKLQlyZXR2YWwgPSBpbm9kZV9jaGFuZ2Vfb2soZGVudHJ5LT5kX2lub2RlLCBpYXR0 cik7CisJcmV0dmFsID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0dHIpOwogCWlmIChyZXR2 YWwpCiAJCXJldHVybiByZXR2YWw7CiAKZGlmZiAtLWdpdCBhL2ZzLzlwL3Zmc19pbm9kZV9kb3Rs LmMgYi9mcy85cC92ZnNfaW5vZGVfZG90bC5jCmluZGV4IGQzZmI4NTg3MTkyMS4uZjAzMDI0ZTVi Y2JlIDEwMDY0NAotLS0gYS9mcy85cC92ZnNfaW5vZGVfZG90bC5jCisrKyBiL2ZzLzlwL3Zmc19p bm9kZV9kb3RsLmMKQEAgLTU2MCw3ICs1NjAsNyBAQCBpbnQgdjlmc192ZnNfc2V0YXR0cl9kb3Rs KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICppYXR0cikKIAogCXA5X2RlYnVn KFA5X0RFQlVHX1ZGUywgIlxuIik7CiAKLQlyZXR2YWwgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUs IGlhdHRyKTsKKwlyZXR2YWwgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CiAJaWYg KHJldHZhbCkKIAkJcmV0dXJuIHJldHZhbDsKIApkaWZmIC0tZ2l0IGEvZnMvYWRmcy9pbm9kZS5j IGIvZnMvYWRmcy9pbm9kZS5jCmluZGV4IGI5YWNhZGFmYTRhMS4uMjQ3YjM1MWYzMDA1IDEwMDY0 NAotLS0gYS9mcy9hZGZzL2lub2RlLmMKKysrIGIvZnMvYWRmcy9pbm9kZS5jCkBAIC0zMDMsNyAr MzAzLDcgQEAgYWRmc19ub3RpZnlfY2hhbmdlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0 IGlhdHRyICphdHRyKQogCXVuc2lnbmVkIGludCBpYV92YWxpZCA9IGF0dHItPmlhX3ZhbGlkOwog CWludCBlcnJvcjsKIAkKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJ ZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAogCS8qCiAJICogd2UgY2Fu J3QgY2hhbmdlIHRoZSBVSUQgb3IgR0lEIG9mIGFueSBmaWxlIC0KZGlmZiAtLWdpdCBhL2ZzL2Fm ZnMvaW5vZGUuYyBiL2ZzL2FmZnMvaW5vZGUuYwppbmRleCBiZWMyZDFhMGM5MWMuLjU1YTkzMWRh OTkxNyAxMDA2NDQKLS0tIGEvZnMvYWZmcy9pbm9kZS5jCisrKyBiL2ZzL2FmZnMvaW5vZGUuYwpA QCAtMjIyLDcgKzIyMiw3IEBAIGFmZnNfbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAogCXByX2RlYnVnKCJub3RpZnlfY2hhbmdlKCVsdSww eCV4KVxuIiwgaW5vZGUtPmlfaW5vLCBhdHRyLT5pYV92YWxpZCk7CiAKLQllcnJvciA9IGlub2Rl X2NoYW5nZV9vayhpbm9kZSxhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnks IGF0dHIpOwogCWlmIChlcnJvcikKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL2F0dHIu YyBiL2ZzL2F0dHIuYwppbmRleCA2NTMwY2VkMTk2OTcuLmVlNjk3ZGRjNmMyZSAxMDA2NDQKLS0t IGEvZnMvYXR0ci5jCisrKyBiL2ZzL2F0dHIuYwpAQCAtMTcsMTkgKzE3LDIyIEBACiAjaW5jbHVk ZSA8bGludXgvaW1hLmg+CiAKIC8qKgotICogaW5vZGVfY2hhbmdlX29rIC0gY2hlY2sgaWYgYXR0 cmlidXRlIGNoYW5nZXMgdG8gYW4gaW5vZGUgYXJlIGFsbG93ZWQKLSAqIEBpbm9kZToJaW5vZGUg dG8gY2hlY2sKKyAqIHNldGF0dHJfcHJlcGFyZSAtIGNoZWNrIGlmIGF0dHJpYnV0ZSBjaGFuZ2Vz IHRvIGEgZGVudHJ5IGFyZSBhbGxvd2VkCisgKiBAZGVudHJ5OglkZW50cnkgdG8gY2hlY2sKICAq IEBhdHRyOglhdHRyaWJ1dGVzIHRvIGNoYW5nZQogICoKICAqIENoZWNrIGlmIHdlIGFyZSBhbGxv d2VkIHRvIGNoYW5nZSB0aGUgYXR0cmlidXRlcyBjb250YWluZWQgaW4gQGF0dHIKLSAqIGluIHRo ZSBnaXZlbiBpbm9kZS4gIFRoaXMgaW5jbHVkZXMgdGhlIG5vcm1hbCB1bml4IGFjY2VzcyBwZXJt aXNzaW9uCi0gKiBjaGVja3MsIGFzIHdlbGwgYXMgY2hlY2tzIGZvciBybGltaXRzIGFuZCBvdGhl cnMuCisgKiBpbiB0aGUgZ2l2ZW4gZGVudHJ5LiAgVGhpcyBpbmNsdWRlcyB0aGUgbm9ybWFsIHVu aXggYWNjZXNzIHBlcm1pc3Npb24KKyAqIGNoZWNrcywgYXMgd2VsbCBhcyBjaGVja3MgZm9yIHJs aW1pdHMgYW5kIG90aGVycy4gVGhlIGZ1bmN0aW9uIGFsc28gY2xlYXJzCisgKiBTR0lEIGJpdCBm cm9tIG1vZGUgaWYgdXNlciBpcyBub3QgYWxsb3dlZCB0byBzZXQgaXQuIEFsc28gZmlsZSBjYXBh YmlsaXRpZXMKKyAqIGFuZCBJTUEgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgY2xlYXJlZCBpZiBB VFRSX0tJTExfUFJJViBpcyBzZXQuCiAgKgogICogU2hvdWxkIGJlIGNhbGxlZCBhcyB0aGUgZmly c3QgdGhpbmcgaW4gLT5zZXRhdHRyIGltcGxlbWVudGF0aW9ucywKICAqIHBvc3NpYmx5IGFmdGVy IHRha2luZyBhZGRpdGlvbmFsIGxvY2tzLgogICovCi1pbnQgaW5vZGVfY2hhbmdlX29rKGNvbnN0 IHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpYXR0ciAqYXR0cikKK2ludCBzZXRhdHRyX3By ZXBhcmUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiB7CisJc3Ry dWN0IGlub2RlICppbm9kZSA9IGRfaW5vZGUoZGVudHJ5KTsKIAl1bnNpZ25lZCBpbnQgaWFfdmFs aWQgPSBhdHRyLT5pYV92YWxpZDsKIAogCS8qCkBAIC00NCw3ICs0Nyw3IEBAIGludCBpbm9kZV9j aGFuZ2Vfb2soY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlhdHRyICphdHRyKQog CiAJLyogSWYgZm9yY2UgaXMgc2V0IGRvIGl0IGFueXdheS4gKi8KIAlpZiAoaWFfdmFsaWQgJiBB VFRSX0ZPUkNFKQotCQlyZXR1cm4gMDsKKwkJZ290byBraWxsX3ByaXY7CiAKIAkvKiBNYWtlIHN1 cmUgYSBjYWxsZXIgY2FuIGNob3duLiAqLwogCWlmICgoaWFfdmFsaWQgJiBBVFRSX1VJRCkgJiYK QEAgLTc3LDkgKzgwLDE5IEBAIGludCBpbm9kZV9jaGFuZ2Vfb2soY29uc3Qgc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGlhdHRyICphdHRyKQogCQkJcmV0dXJuIC1FUEVSTTsKIAl9CiAKK2tp bGxfcHJpdjoKKwkvKiBVc2VyIGhhcyBwZXJtaXNzaW9uIGZvciB0aGUgY2hhbmdlICovCisJaWYg KGlhX3ZhbGlkICYgQVRUUl9LSUxMX1BSSVYpIHsKKwkJaW50IGVycm9yOworCisJCWVycm9yID0g c2VjdXJpdHlfaW5vZGVfa2lsbHByaXYoZGVudHJ5KTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJu IGVycm9yOworCX0KKwogCXJldHVybiAwOwogfQotRVhQT1JUX1NZTUJPTChpbm9kZV9jaGFuZ2Vf b2spOworRVhQT1JUX1NZTUJPTChzZXRhdHRyX3ByZXBhcmUpOwogCiAvKioKICAqIGlub2RlX25l d3NpemVfb2sgLSBtYXkgdGhpcyBpbm9kZSBiZSB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBzaXplCkBA IC0yMTcsMTMgKzIzMCwxMSBAQCBpbnQgbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICogZGVu dHJ5LCBzdHJ1Y3QgaWF0dHIgKiBhdHRyLCBzdHJ1Y3QgaW5vZGUgKipkZQogCWlmICghKGlhX3Zh bGlkICYgQVRUUl9NVElNRV9TRVQpKQogCQlhdHRyLT5pYV9tdGltZSA9IG5vdzsKIAlpZiAoaWFf dmFsaWQgJiBBVFRSX0tJTExfUFJJVikgewotCQlhdHRyLT5pYV92YWxpZCAmPSB+QVRUUl9LSUxM X1BSSVY7Ci0JCWlhX3ZhbGlkICY9IH5BVFRSX0tJTExfUFJJVjsKIAkJZXJyb3IgPSBzZWN1cml0 eV9pbm9kZV9uZWVkX2tpbGxwcml2KGRlbnRyeSk7Ci0JCWlmIChlcnJvciA+IDApCi0JCQllcnJv ciA9IHNlY3VyaXR5X2lub2RlX2tpbGxwcml2KGRlbnRyeSk7Ci0JCWlmIChlcnJvcikKKwkJaWYg KGVycm9yIDwgMCkKIAkJCXJldHVybiBlcnJvcjsKKwkJaWYgKGVycm9yID09IDApCisJCQlpYV92 YWxpZCA9IGF0dHItPmlhX3ZhbGlkICY9IH5BVFRSX0tJTExfUFJJVjsKIAl9CiAKIAkvKgpkaWZm IC0tZ2l0IGEvZnMvYnRyZnMvYWNsLmMgYi9mcy9idHJmcy9hY2wuYwppbmRleCA5YTAxMjRhOTU4 NTEuLmZiM2U2NGQzN2NiNCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvYWNsLmMKKysrIGIvZnMvYnRy ZnMvYWNsLmMKQEAgLTgzLDExICs4Myw5IEBAIHN0YXRpYyBpbnQgX19idHJmc19zZXRfYWNsKHN0 cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRyYW5zLAogCWNhc2UgQUNMX1RZUEVfQUNDRVNTOgog CQluYW1lID0gUE9TSVhfQUNMX1hBVFRSX0FDQ0VTUzsKIAkJaWYgKGFjbCkgewotCQkJcmV0ID0g cG9zaXhfYWNsX2VxdWl2X21vZGUoYWNsLCAmaW5vZGUtPmlfbW9kZSk7Ci0JCQlpZiAocmV0IDwg MCkKKwkJCXJldCA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShpbm9kZSwgJmlub2RlLT5pX21vZGUs ICZhY2wpOworCQkJaWYgKHJldCkKIAkJCQlyZXR1cm4gcmV0OwotCQkJaWYgKHJldCA9PSAwKQot CQkJCWFjbCA9IE5VTEw7CiAJCX0KIAkJcmV0ID0gMDsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9m cy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuYwppbmRleCBhMDllYzVlN2YzZTIuLjQy OTI1MDBlZjI0MSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW5vZGUuYworKysgYi9mcy9idHJmcy9p bm9kZS5jCkBAIC00NjkwLDcgKzQ2OTAsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX3NldGF0dHIoc3Ry dWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJaWYgKGJ0cmZzX3Jvb3Rf cmVhZG9ubHkocm9vdCkpCiAJCXJldHVybiAtRVJPRlM7CiAKLQllcnIgPSBpbm9kZV9jaGFuZ2Vf b2soaW5vZGUsIGF0dHIpOworCWVyciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwog CWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lvY3RsLmMg Yi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IGI2OTI4NWYwNTkzYi4uZWI0MzQ4NzgxYTk3IDEwMDY0 NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMKQEAgLTE2NDks NiArMTY0OSw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc25hcF9jcmVhdGVf dHJhbnNpZChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlpbnQgbmFtZWxlbjsKIAlpbnQgcmV0ID0gMDsK IAorCWlmICghU19JU0RJUihmaWxlX2lub2RlKGZpbGUpLT5pX21vZGUpKQorCQlyZXR1cm4gLUVO T1RESVI7CisKIAlyZXQgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbGUpOwogCWlmIChyZXQpCiAJ CWdvdG8gb3V0OwpAQCAtMTcwNiw2ICsxNzA5LDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBidHJm c19pb2N0bF9zbmFwX2NyZWF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlzdHJ1Y3QgYnRyZnNfaW9j dGxfdm9sX2FyZ3MgKnZvbF9hcmdzOwogCWludCByZXQ7CiAKKwlpZiAoIVNfSVNESVIoZmlsZV9p bm9kZShmaWxlKS0+aV9tb2RlKSkKKwkJcmV0dXJuIC1FTk9URElSOworCiAJdm9sX2FyZ3MgPSBt ZW1kdXBfdXNlcihhcmcsIHNpemVvZigqdm9sX2FyZ3MpKTsKIAlpZiAoSVNfRVJSKHZvbF9hcmdz KSkKIAkJcmV0dXJuIFBUUl9FUlIodm9sX2FyZ3MpOwpAQCAtMTcyOSw2ICsxNzM1LDkgQEAgc3Rh dGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZV92MihzdHJ1Y3QgZmlsZSAq ZmlsZSwKIAlib29sIHJlYWRvbmx5ID0gZmFsc2U7CiAJc3RydWN0IGJ0cmZzX3Fncm91cF9pbmhl cml0ICppbmhlcml0ID0gTlVMTDsKIAorCWlmICghU19JU0RJUihmaWxlX2lub2RlKGZpbGUpLT5p X21vZGUpKQorCQlyZXR1cm4gLUVOT1RESVI7CisKIAl2b2xfYXJncyA9IG1lbWR1cF91c2VyKGFy Zywgc2l6ZW9mKCp2b2xfYXJncykpOwogCWlmIChJU19FUlIodm9sX2FyZ3MpKQogCQlyZXR1cm4g UFRSX0VSUih2b2xfYXJncyk7CkBAIC0yMzU1LDYgKzIzNjQsOSBAQCBzdGF0aWMgbm9pbmxpbmUg aW50IGJ0cmZzX2lvY3RsX3NuYXBfZGVzdHJveShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlpbnQgcmV0 OwogCWludCBlcnIgPSAwOwogCisJaWYgKCFTX0lTRElSKGRpci0+aV9tb2RlKSkKKwkJcmV0dXJu IC1FTk9URElSOworCiAJdm9sX2FyZ3MgPSBtZW1kdXBfdXNlcihhcmcsIHNpemVvZigqdm9sX2Fy Z3MpKTsKIAlpZiAoSVNfRVJSKHZvbF9hcmdzKSkKIAkJcmV0dXJuIFBUUl9FUlIodm9sX2FyZ3Mp OwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvdHJlZS1sb2cuYyBiL2ZzL2J0cmZzL3RyZWUtbG9nLmMK aW5kZXggMmMzZmNiMzgwNjhmLi44MzA5NTJkMDQ1YzkgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3Ry ZWUtbG9nLmMKKysrIGIvZnMvYnRyZnMvdHJlZS1sb2cuYwpAQCAtMjYwMCw2ICsyNjAwLDggQEAg aW50IGJ0cmZzX3N5bmNfbG9nKHN0cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRyYW5zLAogCX0K IAogCWlmIChsb2dfcm9vdF90cmVlLT5sb2dfdHJhbnNpZF9jb21taXR0ZWQgPj0gcm9vdF9sb2df Y3R4LmxvZ190cmFuc2lkKSB7CisJCWJsa19maW5pc2hfcGx1ZygmcGx1Zyk7CisJCWxpc3RfZGVs X2luaXQoJnJvb3RfbG9nX2N0eC5saXN0KTsKIAkJbXV0ZXhfdW5sb2NrKCZsb2dfcm9vdF90cmVl LT5sb2dfbXV0ZXgpOwogCQlyZXQgPSByb290X2xvZ19jdHgubG9nX3JldDsKIAkJZ290byBvdXQ7 CmRpZmYgLS1naXQgYS9mcy9jZXBoL2FjbC5jIGIvZnMvY2VwaC9hY2wuYwppbmRleCA0NjlmMmU4 NjU3ZTguLmEwMmI5MDBjMWVkNiAxMDA2NDQKLS0tIGEvZnMvY2VwaC9hY2wuYworKysgYi9mcy9j ZXBoL2FjbC5jCkBAIC0xMDgsMTEgKzEwOCw5IEBAIGludCBjZXBoX3NldF9hY2woc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IHBvc2l4X2FjbCAqYWNsLCBpbnQgdHlwZSkKIAljYXNlIEFDTF9U WVBFX0FDQ0VTUzoKIAkJbmFtZSA9IFBPU0lYX0FDTF9YQVRUUl9BQ0NFU1M7CiAJCWlmIChhY2wp IHsKLQkJCXJldCA9IHBvc2l4X2FjbF9lcXVpdl9tb2RlKGFjbCwgJm5ld19tb2RlKTsKLQkJCWlm IChyZXQgPCAwKQorCQkJcmV0ID0gcG9zaXhfYWNsX3VwZGF0ZV9tb2RlKGlub2RlLCAmbmV3X21v ZGUsICZhY2wpOworCQkJaWYgKHJldCkKIAkJCQlnb3RvIG91dDsKLQkJCWlmIChyZXQgPT0gMCkK LQkJCQlhY2wgPSBOVUxMOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgQUNMX1RZUEVfREVGQVVMVDoK ZGlmZiAtLWdpdCBhL2ZzL2NlcGgvZmlsZS5jIGIvZnMvY2VwaC9maWxlLmMKaW5kZXggMzAyMDg1 MTAwYzI4Li4yOTNkMWNkZjM2NDUgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvZmlsZS5jCisrKyBiL2Zz L2NlcGgvZmlsZS5jCkBAIC05ODUsMTYgKzk4NSwxNCBAQCBvdXRfdW5sb2NrZWQ6CiBzdGF0aWMg bG9mZl90IGNlcGhfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQg d2hlbmNlKQogewogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX21hcHBpbmctPmhvc3Q7 Ci0JaW50IHJldDsKKwlsb2ZmX3QgcmV0OwogCiAJbXV0ZXhfbG9jaygmaW5vZGUtPmlfbXV0ZXgp OwogCiAJaWYgKHdoZW5jZSA9PSBTRUVLX0VORCB8fCB3aGVuY2UgPT0gU0VFS19EQVRBIHx8IHdo ZW5jZSA9PSBTRUVLX0hPTEUpIHsKIAkJcmV0ID0gY2VwaF9kb19nZXRhdHRyKGlub2RlLCBDRVBI X1NUQVRfQ0FQX1NJWkUpOwotCQlpZiAocmV0IDwgMCkgewotCQkJb2Zmc2V0ID0gcmV0OworCQlp ZiAocmV0IDwgMCkKIAkJCWdvdG8gb3V0OwotCQl9CiAJfQogCiAJc3dpdGNoICh3aGVuY2UpIHsK QEAgLTEwMDksNyArMTAwNyw3IEBAIHN0YXRpYyBsb2ZmX3QgY2VwaF9sbHNlZWsoc3RydWN0IGZp bGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCiAJCSAqIHdyaXRlKCkgb3IgbHNl ZWsoKSBtaWdodCBoYXZlIGFsdGVyZWQgaXQKIAkJICovCiAJCWlmIChvZmZzZXQgPT0gMCkgewot CQkJb2Zmc2V0ID0gZmlsZS0+Zl9wb3M7CisJCQlyZXQgPSBmaWxlLT5mX3BvczsKIAkJCWdvdG8g b3V0OwogCQl9CiAJCW9mZnNldCArPSBmaWxlLT5mX3BvczsKQEAgLTEwMjksMTEgKzEwMjcsMTEg QEAgc3RhdGljIGxvZmZfdCBjZXBoX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9m ZnNldCwgaW50IHdoZW5jZSkKIAkJYnJlYWs7CiAJfQogCi0Jb2Zmc2V0ID0gdmZzX3NldHBvcyhm aWxlLCBvZmZzZXQsIGlub2RlLT5pX3NiLT5zX21heGJ5dGVzKTsKKwlyZXQgPSB2ZnNfc2V0cG9z KGZpbGUsIG9mZnNldCwgaW5vZGUtPmlfc2ItPnNfbWF4Ynl0ZXMpOwogCiBvdXQ6CiAJbXV0ZXhf dW5sb2NrKCZpbm9kZS0+aV9tdXRleCk7Ci0JcmV0dXJuIG9mZnNldDsKKwlyZXR1cm4gcmV0Owog fQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2VwaF96ZXJvX3BhcnRpYWxfcGFnZSgKZGlmZiAtLWdp dCBhL2ZzL2NlcGgvaW5vZGUuYyBiL2ZzL2NlcGgvaW5vZGUuYwppbmRleCBjM2UxMDNmZjE4YmQu LjEyMmQ2MDUwNmFiOSAxMDA2NDQKLS0tIGEvZnMvY2VwaC9pbm9kZS5jCisrKyBiL2ZzL2NlcGgv aW5vZGUuYwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgaW50IGNlcGhfc2V0YXR0cihzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpZiAoY2VwaF9zbmFwKGlub2RlKSAh PSBDRVBIX05PU05BUCkKIAkJcmV0dXJuIC1FUk9GUzsKIAotCWVyciA9IGlub2RlX2NoYW5nZV9v ayhpbm9kZSwgYXR0cik7CisJZXJyID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJ aWYgKGVyciAhPSAwKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNl bmNyeXB0LmMgYi9mcy9jaWZzL2NpZnNlbmNyeXB0LmMKaW5kZXggMGJkMzM1YTM5M2Y4Li5mMWFh MTAwNzU4ZGYgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2VuY3J5cHQuYworKysgYi9mcy9jaWZz L2NpZnNlbmNyeXB0LmMKQEAgLTcyNywyNCArNzI3LDI2IEBAIHNldHVwX250bG12Ml9yc3Aoc3Ry dWN0IGNpZnNfc2VzICpzZXMsIGNvbnN0IHN0cnVjdCBubHNfdGFibGUgKm5sc19jcCkKIAogCW1l bWNweShzZXMtPmF1dGhfa2V5LnJlc3BvbnNlICsgYmFzZWxlbiwgdGlibG9iLCB0aWxlbik7CiAK KwltdXRleF9sb2NrKCZzZXMtPnNlcnZlci0+c3J2X211dGV4KTsKKwogCXJjID0gY3J5cHRvX2ht YWNtZDVfYWxsb2Moc2VzLT5zZXJ2ZXIpOwogCWlmIChyYykgewogCQljaWZzX2RiZyhWRlMsICJj b3VsZCBub3QgY3J5cHRvIGFsbG9jIGhtYWNtZDUgcmMgJWRcbiIsIHJjKTsKLQkJZ290byBzZXR1 cF9udGxtdjJfcnNwX3JldDsKKwkJZ290byB1bmxvY2s7CiAJfQogCiAJLyogY2FsY3VsYXRlIG50 bG12Ml9oYXNoICovCiAJcmMgPSBjYWxjX250bG12Ml9oYXNoKHNlcywgbnRsbXYyX2hhc2gsIG5s c19jcCk7CiAJaWYgKHJjKSB7CiAJCWNpZnNfZGJnKFZGUywgImNvdWxkIG5vdCBnZXQgdjIgaGFz aCByYyAlZFxuIiwgcmMpOwotCQlnb3RvIHNldHVwX250bG12Ml9yc3BfcmV0OworCQlnb3RvIHVu bG9jazsKIAl9CiAKIAkvKiBjYWxjdWxhdGUgZmlyc3QgcGFydCBvZiB0aGUgY2xpZW50IHJlc3Bv bnNlIChDUjEpICovCiAJcmMgPSBDYWxjTlRMTXYyX3Jlc3BvbnNlKHNlcywgbnRsbXYyX2hhc2gp OwogCWlmIChyYykgewogCQljaWZzX2RiZyhWRlMsICJDb3VsZCBub3QgY2FsY3VsYXRlIENSMSBy YzogJWRcbiIsIHJjKTsKLQkJZ290byBzZXR1cF9udGxtdjJfcnNwX3JldDsKKwkJZ290byB1bmxv Y2s7CiAJfQogCiAJLyogbm93IGNhbGN1bGF0ZSB0aGUgc2Vzc2lvbiBrZXkgZm9yIE5UTE12MiAq LwpAQCAtNzUzLDEzICs3NTUsMTMgQEAgc2V0dXBfbnRsbXYyX3JzcChzdHJ1Y3QgY2lmc19zZXMg KnNlcywgY29uc3Qgc3RydWN0IG5sc190YWJsZSAqbmxzX2NwKQogCWlmIChyYykgewogCQljaWZz X2RiZyhWRlMsICIlczogQ291bGQgbm90IHNldCBOVExNVjIgSGFzaCBhcyBhIGtleVxuIiwKIAkJ CSBfX2Z1bmNfXyk7Ci0JCWdvdG8gc2V0dXBfbnRsbXYyX3JzcF9yZXQ7CisJCWdvdG8gdW5sb2Nr OwogCX0KIAogCXJjID0gY3J5cHRvX3NoYXNoX2luaXQoJnNlcy0+c2VydmVyLT5zZWNtZWNoLnNk ZXNjaG1hY21kNS0+c2hhc2gpOwogCWlmIChyYykgewogCQljaWZzX2RiZyhWRlMsICIlczogQ291 bGQgbm90IGluaXQgaG1hY21kNVxuIiwgX19mdW5jX18pOwotCQlnb3RvIHNldHVwX250bG12Ml9y c3BfcmV0OworCQlnb3RvIHVubG9jazsKIAl9CiAKIAlyYyA9IGNyeXB0b19zaGFzaF91cGRhdGUo JnNlcy0+c2VydmVyLT5zZWNtZWNoLnNkZXNjaG1hY21kNS0+c2hhc2gsCkBAIC03NjcsNyArNzY5 LDcgQEAgc2V0dXBfbnRsbXYyX3JzcChzdHJ1Y3QgY2lmc19zZXMgKnNlcywgY29uc3Qgc3RydWN0 IG5sc190YWJsZSAqbmxzX2NwKQogCQlDSUZTX0hNQUNfTUQ1X0hBU0hfU0laRSk7CiAJaWYgKHJj KSB7CiAJCWNpZnNfZGJnKFZGUywgIiVzOiBDb3VsZCBub3QgdXBkYXRlIHdpdGggcmVzcG9uc2Vc biIsIF9fZnVuY19fKTsKLQkJZ290byBzZXR1cF9udGxtdjJfcnNwX3JldDsKKwkJZ290byB1bmxv Y2s7CiAJfQogCiAJcmMgPSBjcnlwdG9fc2hhc2hfZmluYWwoJnNlcy0+c2VydmVyLT5zZWNtZWNo LnNkZXNjaG1hY21kNS0+c2hhc2gsCkBAIC03NzUsNiArNzc3LDggQEAgc2V0dXBfbnRsbXYyX3Jz cChzdHJ1Y3QgY2lmc19zZXMgKnNlcywgY29uc3Qgc3RydWN0IG5sc190YWJsZSAqbmxzX2NwKQog CWlmIChyYykKIAkJY2lmc19kYmcoVkZTLCAiJXM6IENvdWxkIG5vdCBnZW5lcmF0ZSBtZDUgaGFz aFxuIiwgX19mdW5jX18pOwogCit1bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZzZXMtPnNlcnZlci0+ c3J2X211dGV4KTsKIHNldHVwX250bG12Ml9yc3BfcmV0OgogCWtmcmVlKHRpYmxvYik7CiAKZGlm ZiAtLWdpdCBhL2ZzL2NpZnMvZGlyLmMgYi9mcy9jaWZzL2Rpci5jCmluZGV4IDNkYjBjNWZkOWEx MS4uM2YyZGQ4N2I4OTlhIDEwMDY0NAotLS0gYS9mcy9jaWZzL2Rpci5jCisrKyBiL2ZzL2NpZnMv ZGlyLmMKQEAgLTIyOSw2ICsyMjksMTMgQEAgY2lmc19kb19jcmVhdGUoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGRlbnRyeSAqZGlyZW50cnksIHVuc2lnbmVkIGludCB4aWQsCiAJCQkJZ290 byBjaWZzX2NyZWF0ZV9nZXRfZmlsZV9pbmZvOwogCQkJfQogCisJCQlpZiAoU19JU0RJUihuZXdp bm9kZS0+aV9tb2RlKSkgeworCQkJCUNJRlNTTUJDbG9zZSh4aWQsIHRjb24sIGZpZC0+bmV0Zmlk KTsKKwkJCQlpcHV0KG5ld2lub2RlKTsKKwkJCQlyYyA9IC1FSVNESVI7CisJCQkJZ290byBvdXQ7 CisJCQl9CisKIAkJCWlmICghU19JU1JFRyhuZXdpbm9kZS0+aV9tb2RlKSkgewogCQkJCS8qCiAJ CQkJICogVGhlIHNlcnZlciBtYXkgYWxsb3cgdXMgdG8gb3BlbiB0aGluZ3MgbGlrZQpAQCAtMzk5 LDEwICs0MDYsMTQgQEAgY2lmc19jcmVhdGVfc2V0X2RlbnRyeToKIAlpZiAocmMgIT0gMCkgewog CQljaWZzX2RiZyhGWUksICJDcmVhdGUgd29ya2VkLCBnZXRfaW5vZGVfaW5mbyBmYWlsZWQgcmMg PSAlZFxuIiwKIAkJCSByYyk7Ci0JCWlmIChzZXJ2ZXItPm9wcy0+Y2xvc2UpCi0JCQlzZXJ2ZXIt Pm9wcy0+Y2xvc2UoeGlkLCB0Y29uLCBmaWQpOwotCQlnb3RvIG91dDsKKwkJZ290byBvdXRfZXJy OwogCX0KKworCWlmIChTX0lTRElSKG5ld2lub2RlLT5pX21vZGUpKSB7CisJCXJjID0gLUVJU0RJ UjsKKwkJZ290byBvdXRfZXJyOworCX0KKwogCWRfZHJvcChkaXJlbnRyeSk7CiAJZF9hZGQoZGly ZW50cnksIG5ld2lub2RlKTsKIApAQCAtNDEwLDYgKzQyMSwxMyBAQCBvdXQ6CiAJa2ZyZWUoYnVm KTsKIAlrZnJlZShmdWxsX3BhdGgpOwogCXJldHVybiByYzsKKworb3V0X2VycjoKKwlpZiAoc2Vy dmVyLT5vcHMtPmNsb3NlKQorCQlzZXJ2ZXItPm9wcy0+Y2xvc2UoeGlkLCB0Y29uLCBmaWQpOwor CWlmIChuZXdpbm9kZSkKKwkJaXB1dChuZXdpbm9kZSk7CisJZ290byBvdXQ7CiB9CiAKIGludApk aWZmIC0tZ2l0IGEvZnMvY2lmcy9pbm9kZS5jIGIvZnMvY2lmcy9pbm9kZS5jCmluZGV4IDhkYzFj ZmNiNTM0Zi4uNmE1Y2E5NjljMzAxIDEwMDY0NAotLS0gYS9mcy9jaWZzL2lub2RlLmMKKysrIGIv ZnMvY2lmcy9pbm9kZS5jCkBAIC0yMDc0LDcgKzIwNzQsNyBAQCBjaWZzX3NldGF0dHJfdW5peChz dHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwgc3RydWN0IGlhdHRyICphdHRycykKIAlpZiAoY2lmc19z Yi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5UX05PX1BFUk0pCiAJCWF0dHJzLT5pYV92YWxp ZCB8PSBBVFRSX0ZPUkNFOwogCi0JcmMgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHJzKTsK KwlyYyA9IHNldGF0dHJfcHJlcGFyZShkaXJlbnRyeSwgYXR0cnMpOwogCWlmIChyYyA8IDApCiAJ CWdvdG8gb3V0OwogCkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBjaWZzX3NldGF0dHJfbm91bml4KHN0 cnVjdCBkZW50cnkgKmRpcmVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHJzKQogCWlmIChjaWZzX3Ni LT5tbnRfY2lmc19mbGFncyAmIENJRlNfTU9VTlRfTk9fUEVSTSkKIAkJYXR0cnMtPmlhX3ZhbGlk IHw9IEFUVFJfRk9SQ0U7CiAKLQlyYyA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cnMpOwor CXJjID0gc2V0YXR0cl9wcmVwYXJlKGRpcmVudHJ5LCBhdHRycyk7CiAJaWYgKHJjIDwgMCkgewog CQlmcmVlX3hpZCh4aWQpOwogCQlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9mcy9jaWZzL3NtYjJv cHMuYyBiL2ZzL2NpZnMvc21iMm9wcy5jCmluZGV4IGIyNDFhMmE3NjgzYi4uMTA1OWJhODI5Nzc0 IDEwMDY0NAotLS0gYS9mcy9jaWZzL3NtYjJvcHMuYworKysgYi9mcy9jaWZzL3NtYjJvcHMuYwpA QCAtODU4LDYgKzg1OCw5IEBAIHNtYjJfbmV3X2xlYXNlX2tleShzdHJ1Y3QgY2lmc19maWQgKmZp ZCkKIAlnZXRfcmFuZG9tX2J5dGVzKGZpZC0+bGVhc2Vfa2V5LCBTTUIyX0xFQVNFX0tFWV9TSVpF KTsKIH0KIAorI2RlZmluZSBTTUIyX1NZTUxJTktfU1RSVUNUX1NJWkUgXAorCShzaXplb2Yoc3Ry dWN0IHNtYjJfZXJyX3JzcCkgLSAxICsgc2l6ZW9mKHN0cnVjdCBzbWIyX3N5bWxpbmtfZXJyX3Jz cCkpCisKIHN0YXRpYyBpbnQKIHNtYjJfcXVlcnlfc3ltbGluayhjb25zdCB1bnNpZ25lZCBpbnQg eGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCQkgICBjb25zdCBjaGFyICpmdWxsX3BhdGgs IGNoYXIgKip0YXJnZXRfcGF0aCwKQEAgLTg3MCw3ICs4NzMsMTAgQEAgc21iMl9xdWVyeV9zeW1s aW5rKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sCiAJc3Ry dWN0IGNpZnNfZmlkIGZpZDsKIAlzdHJ1Y3Qgc21iMl9lcnJfcnNwICplcnJfYnVmID0gTlVMTDsK IAlzdHJ1Y3Qgc21iMl9zeW1saW5rX2Vycl9yc3AgKnN5bWxpbms7Ci0JdW5zaWduZWQgaW50IHN1 Yl9sZW4sIHN1Yl9vZmZzZXQ7CisJdW5zaWduZWQgaW50IHN1Yl9sZW47CisJdW5zaWduZWQgaW50 IHN1Yl9vZmZzZXQ7CisJdW5zaWduZWQgaW50IHByaW50X2xlbjsKKwl1bnNpZ25lZCBpbnQgcHJp bnRfb2Zmc2V0OwogCiAJY2lmc19kYmcoRllJLCAiJXM6IHBhdGg6ICVzXG4iLCBfX2Z1bmNfXywg ZnVsbF9wYXRoKTsKIApAQCAtODkxLDExICs4OTcsMzMgQEAgc21iMl9xdWVyeV9zeW1saW5rKGNv bnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sCiAJCWtmcmVlKHV0 ZjE2X3BhdGgpOwogCQlyZXR1cm4gLUVOT0VOVDsKIAl9CisKKwlpZiAobGUzMl90b19jcHUoZXJy X2J1Zi0+Qnl0ZUNvdW50KSA8IHNpemVvZihzdHJ1Y3Qgc21iMl9zeW1saW5rX2Vycl9yc3ApIHx8 CisJICAgIGdldF9yZmMxMDAyX2xlbmd0aChlcnJfYnVmKSArIDQgPCBTTUIyX1NZTUxJTktfU1RS VUNUX1NJWkUpIHsKKwkJa2ZyZWUodXRmMTZfcGF0aCk7CisJCXJldHVybiAtRU5PRU5UOworCX0K KwogCS8qIG9wZW4gbXVzdCBmYWlsIG9uIHN5bWxpbmsgLSByZXNldCByYyAqLwogCXJjID0gMDsK IAlzeW1saW5rID0gKHN0cnVjdCBzbWIyX3N5bWxpbmtfZXJyX3JzcCAqKWVycl9idWYtPkVycm9y RGF0YTsKIAlzdWJfbGVuID0gbGUxNl90b19jcHUoc3ltbGluay0+U3Vic3RpdHV0ZU5hbWVMZW5n dGgpOwogCXN1Yl9vZmZzZXQgPSBsZTE2X3RvX2NwdShzeW1saW5rLT5TdWJzdGl0dXRlTmFtZU9m ZnNldCk7CisJcHJpbnRfbGVuID0gbGUxNl90b19jcHUoc3ltbGluay0+UHJpbnROYW1lTGVuZ3Ro KTsKKwlwcmludF9vZmZzZXQgPSBsZTE2X3RvX2NwdShzeW1saW5rLT5QcmludE5hbWVPZmZzZXQp OworCisJaWYgKGdldF9yZmMxMDAyX2xlbmd0aChlcnJfYnVmKSArIDQgPAorCQkJU01CMl9TWU1M SU5LX1NUUlVDVF9TSVpFICsgc3ViX29mZnNldCArIHN1Yl9sZW4pIHsKKwkJa2ZyZWUodXRmMTZf cGF0aCk7CisJCXJldHVybiAtRU5PRU5UOworCX0KKworCWlmIChnZXRfcmZjMTAwMl9sZW5ndGgo ZXJyX2J1ZikgKyA0IDwKKwkJCVNNQjJfU1lNTElOS19TVFJVQ1RfU0laRSArIHByaW50X29mZnNl dCArIHByaW50X2xlbikgeworCQlrZnJlZSh1dGYxNl9wYXRoKTsKKwkJcmV0dXJuIC1FTk9FTlQ7 CisJfQorCiAJKnRhcmdldF9wYXRoID0gY2lmc19zdHJuZHVwX2Zyb21fdXRmMTYoCiAJCQkJKGNo YXIgKilzeW1saW5rLT5QYXRoQnVmZmVyICsgc3ViX29mZnNldCwKIAkJCQlzdWJfbGVuLCB0cnVl LCBjaWZzX3NiLT5sb2NhbF9ubHMpOwpkaWZmIC0tZ2l0IGEvZnMvZWNyeXB0ZnMvaW5vZGUuYyBi L2ZzL2VjcnlwdGZzL2lub2RlLmMKaW5kZXggNTdlZTRjNTNiNGY4Li44YmM5ZWM3MTQ0NjcgMTAw NjQ0Ci0tLSBhL2ZzL2VjcnlwdGZzL2lub2RlLmMKKysrIGIvZnMvZWNyeXB0ZnMvaW5vZGUuYwpA QCAtOTUyLDcgKzk1Miw3IEBAIHN0YXRpYyBpbnQgZWNyeXB0ZnNfc2V0YXR0cihzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqaWEpCiAJfQogCW11dGV4X3VubG9jaygmY3J5cHRf c3RhdC0+Y3NfbXV0ZXgpOwogCi0JcmMgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGlhKTsKKwly YyA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhKTsKIAlpZiAocmMpCiAJCWdvdG8gb3V0Owog CWlmIChpYS0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpIHsKZGlmZiAtLWdpdCBhL2ZzL2V4b2ZzL2lu b2RlLmMgYi9mcy9leG9mcy9pbm9kZS5jCmluZGV4IDNmOWNhZmQ3MzkzMS4uNzk5ZTdkNDU2MmZl IDEwMDY0NAotLS0gYS9mcy9leG9mcy9pbm9kZS5jCisrKyBiL2ZzL2V4b2ZzL2lub2RlLmMKQEAg LTEwMzksNyArMTAzOSw3IEBAIGludCBleG9mc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgc3RydWN0IGlhdHRyICppYXR0cikKIAlpZiAodW5saWtlbHkoZXJyb3IpKQogCQlyZXR1cm4g ZXJyb3I7CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgaWF0dHIpOworCWVycm9y ID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0dHIpOwogCWlmICh1bmxpa2VseShlcnJvcikp CiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9hY2wuYyBiL2ZzL2V4dDIv YWNsLmMKaW5kZXggMjc2OTVlNmY0ZTQ2Li5kNmFlYjg0ZTkwYjYgMTAwNjQ0Ci0tLSBhL2ZzL2V4 dDIvYWNsLmMKKysrIGIvZnMvZXh0Mi9hY2wuYwpAQCAtMTkzLDE1ICsxOTMsMTEgQEAgZXh0Ml9z ZXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBwb3NpeF9hY2wgKmFjbCwgaW50IHR5 cGUpCiAJCWNhc2UgQUNMX1RZUEVfQUNDRVNTOgogCQkJbmFtZV9pbmRleCA9IEVYVDJfWEFUVFJf SU5ERVhfUE9TSVhfQUNMX0FDQ0VTUzsKIAkJCWlmIChhY2wpIHsKLQkJCQllcnJvciA9IHBvc2l4 X2FjbF9lcXVpdl9tb2RlKGFjbCwgJmlub2RlLT5pX21vZGUpOwotCQkJCWlmIChlcnJvciA8IDAp CisJCQkJZXJyb3IgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUoaW5vZGUsICZpbm9kZS0+aV9tb2Rl LCAmYWNsKTsKKwkJCQlpZiAoZXJyb3IpCiAJCQkJCXJldHVybiBlcnJvcjsKLQkJCQllbHNlIHsK LQkJCQkJaW5vZGUtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUVfU0VDOwotCQkJCQltYXJrX2lub2Rl X2RpcnR5KGlub2RlKTsKLQkJCQkJaWYgKGVycm9yID09IDApCi0JCQkJCQlhY2wgPSBOVUxMOwot CQkJCX0KKwkJCQlpbm9kZS0+aV9jdGltZSA9IENVUlJFTlRfVElNRV9TRUM7CisJCQkJbWFya19p bm9kZV9kaXJ0eShpbm9kZSk7CiAJCQl9CiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0 Mi9pbm9kZS5jIGIvZnMvZXh0Mi9pbm9kZS5jCmluZGV4IDM2ZDM1YzM2MzExZC4uYjgyMmU0YTQ0 N2Q2IDEwMDY0NAotLS0gYS9mcy9leHQyL2lub2RlLmMKKysrIGIvZnMvZXh0Mi9pbm9kZS5jCkBA IC0xNTQ3LDcgKzE1NDcsNyBAQCBpbnQgZXh0Ml9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgc3RydWN0IGlhdHRyICppYXR0cikKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5k X2lub2RlOwogCWludCBlcnJvcjsKIAotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBp YXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CiAJaWYgKGVy cm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL2ZzL2V4dDMvYWNsLmMgYi9mcy9l eHQzL2FjbC5jCmluZGV4IDhiYmFmNWJjZjk4Mi4uYzQ1MDk0OTVhMTA0IDEwMDY0NAotLS0gYS9m cy9leHQzL2FjbC5jCisrKyBiL2ZzL2V4dDMvYWNsLmMKQEAgLTE5NSwxNSArMTk1LDExIEBAIF9f ZXh0M19zZXRfYWNsKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0 eXBlLAogCQljYXNlIEFDTF9UWVBFX0FDQ0VTUzoKIAkJCW5hbWVfaW5kZXggPSBFWFQzX1hBVFRS X0lOREVYX1BPU0lYX0FDTF9BQ0NFU1M7CiAJCQlpZiAoYWNsKSB7Ci0JCQkJZXJyb3IgPSBwb3Np eF9hY2xfZXF1aXZfbW9kZShhY2wsICZpbm9kZS0+aV9tb2RlKTsKLQkJCQlpZiAoZXJyb3IgPCAw KQorCQkJCWVycm9yID0gcG9zaXhfYWNsX3VwZGF0ZV9tb2RlKGlub2RlLCAmaW5vZGUtPmlfbW9k ZSwgJmFjbCk7CisJCQkJaWYgKGVycm9yKQogCQkJCQlyZXR1cm4gZXJyb3I7Ci0JCQkJZWxzZSB7 Ci0JCQkJCWlub2RlLT5pX2N0aW1lID0gQ1VSUkVOVF9USU1FX1NFQzsKLQkJCQkJZXh0M19tYXJr X2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwotCQkJCQlpZiAoZXJyb3IgPT0gMCkKLQkJCQkJ CWFjbCA9IE5VTEw7Ci0JCQkJfQorCQkJCWlub2RlLT5pX2N0aW1lID0gQ1VSUkVOVF9USU1FX1NF QzsKKwkJCQlleHQzX21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiAJCQl9CiAJCQli cmVhazsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0My9pbm9kZS5jIGIvZnMvZXh0My9pbm9kZS5jCmlu ZGV4IDJjNmNjYzQ5YmEyNy4uMjE1OTcyZTk0ZTE3IDEwMDY0NAotLS0gYS9mcy9leHQzL2lub2Rl LmMKKysrIGIvZnMvZXh0My9pbm9kZS5jCkBAIC0zMjQ0LDcgKzMyNDQsNyBAQCBpbnQgZXh0M19z ZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCWludCBl cnJvciwgcmMgPSAwOwogCWNvbnN0IHVuc2lnbmVkIGludCBpYV92YWxpZCA9IGF0dHItPmlhX3Zh bGlkOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0g c2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJy b3I7CiAKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvYWNsLmMgYi9mcy9leHQ0L2FjbC5jCmluZGV4IGQ0 MGM4ZGJiYjBkNi4uODdkOWJiZjZhNTNmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2FjbC5jCisrKyBi L2ZzL2V4dDQvYWNsLmMKQEAgLTIwMSwxNSArMjAxLDExIEBAIF9fZXh0NF9zZXRfYWNsKGhhbmRs ZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBlLAogCWNhc2UgQUNMX1RZ UEVfQUNDRVNTOgogCQluYW1lX2luZGV4ID0gRVhUNF9YQVRUUl9JTkRFWF9QT1NJWF9BQ0xfQUND RVNTOwogCQlpZiAoYWNsKSB7Ci0JCQllcnJvciA9IHBvc2l4X2FjbF9lcXVpdl9tb2RlKGFjbCwg Jmlub2RlLT5pX21vZGUpOwotCQkJaWYgKGVycm9yIDwgMCkKKwkJCWVycm9yID0gcG9zaXhfYWNs X3VwZGF0ZV9tb2RlKGlub2RlLCAmaW5vZGUtPmlfbW9kZSwgJmFjbCk7CisJCQlpZiAoZXJyb3Ip CiAJCQkJcmV0dXJuIGVycm9yOwotCQkJZWxzZSB7Ci0JCQkJaW5vZGUtPmlfY3RpbWUgPSBleHQ0 X2N1cnJlbnRfdGltZShpbm9kZSk7Ci0JCQkJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwg aW5vZGUpOwotCQkJCWlmIChlcnJvciA9PSAwKQotCQkJCQlhY2wgPSBOVUxMOwotCQkJfQorCQkJ aW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJCQlleHQ0X21hcmtf aW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiAJCX0KIAkJYnJlYWs7CiAKZGlmZiAtLWdpdCBh L2ZzL2V4dDQvYmFsbG9jLmMgYi9mcy9leHQ0L2JhbGxvYy5jCmluZGV4IDA2YjY1YmUyMGQ0OC4u NWZiMTE5NWY2MDJmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2JhbGxvYy5jCisrKyBiL2ZzL2V4dDQv YmFsbG9jLmMKQEAgLTIwOSw2ICsyMDksOSBAQCBzdGF0aWMgaW50IGV4dDRfaW5pdF9ibG9ja19i aXRtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAltZW1zZXQoYmgtPmJfZGF0YSwgMCwgc2It PnNfYmxvY2tzaXplKTsKIAogCWJpdF9tYXggPSBleHQ0X251bV9iYXNlX21ldGFfY2x1c3RlcnMo c2IsIGJsb2NrX2dyb3VwKTsKKwlpZiAoKGJpdF9tYXggPj4gMykgPj0gYmgtPmJfc2l6ZSkKKwkJ cmV0dXJuIC1FSU87CisKIAlmb3IgKGJpdCA9IDA7IGJpdCA8IGJpdF9tYXg7IGJpdCsrKQogCQll eHQ0X3NldF9iaXQoYml0LCBiaC0+Yl9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRl bnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuYwppbmRleCBlNDFlYzUwMzRiYWQuLmQyNGQ2ZmMxZGY0 ZiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9leHRlbnRzLmMKKysrIGIvZnMvZXh0NC9leHRlbnRzLmMK QEAgLTM1OSw5ICszNTksMTMgQEAgc3RhdGljIGludCBleHQ0X3ZhbGlkX2V4dGVudChzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9leHRlbnQgKmV4dCkKIAlleHQ0X2ZzYmxrX3QgYmxv Y2sgPSBleHQ0X2V4dF9wYmxvY2soZXh0KTsKIAlpbnQgbGVuID0gZXh0NF9leHRfZ2V0X2FjdHVh bF9sZW4oZXh0KTsKIAlleHQ0X2xibGtfdCBsYmxvY2sgPSBsZTMyX3RvX2NwdShleHQtPmVlX2Js b2NrKTsKLQlleHQ0X2xibGtfdCBsYXN0ID0gbGJsb2NrICsgbGVuIC0gMTsKIAotCWlmIChsZW4g PT0gMCB8fCBsYmxvY2sgPiBsYXN0KQorCS8qCisJICogV2UgYWxsb3cgbmVpdGhlcjoKKwkgKiAg LSB6ZXJvIGxlbmd0aAorCSAqICAtIG92ZXJmbG93L3dyYXAtYXJvdW5kCisJICovCisJaWYgKGxi bG9jayArIGxlbiA8PSBsYmxvY2spCiAJCXJldHVybiAwOwogCXJldHVybiBleHQ0X2RhdGFfYmxv Y2tfdmFsaWQoRVhUNF9TQihpbm9kZS0+aV9zYiksIGJsb2NrLCBsZW4pOwogfQpkaWZmIC0tZ2l0 IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IGEyYzQ0OTVkNDBlOS4u YWU0MjcxZDVjNmNhIDEwMDY0NAotLS0gYS9mcy9leHQ0L2lub2RlLmMKKysrIGIvZnMvZXh0NC9p bm9kZS5jCkBAIC0yMDcsOSArMjA3LDkgQEAgdm9pZCBleHQ0X2V2aWN0X2lub2RlKHN0cnVjdCBp bm9kZSAqaW5vZGUpCiAJCSAqIE5vdGUgdGhhdCBkaXJlY3RvcmllcyBkbyBub3QgaGF2ZSB0aGlz IHByb2JsZW0gYmVjYXVzZSB0aGV5CiAJCSAqIGRvbid0IHVzZSBwYWdlIGNhY2hlLgogCQkgKi8K LQkJaWYgKGV4dDRfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkgJiYKLQkJICAgIChTX0lTTE5L KGlub2RlLT5pX21vZGUpIHx8IFNfSVNSRUcoaW5vZGUtPmlfbW9kZSkpICYmCi0JCSAgICBpbm9k ZS0+aV9pbm8gIT0gRVhUNF9KT1VSTkFMX0lOTykgeworCQlpZiAoaW5vZGUtPmlfaW5vICE9IEVY VDRfSk9VUk5BTF9JTk8gJiYKKwkJICAgIGV4dDRfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkg JiYKKwkJICAgIChTX0lTTE5LKGlub2RlLT5pX21vZGUpIHx8IFNfSVNSRUcoaW5vZGUtPmlfbW9k ZSkpKSB7CiAJCQlqb3VybmFsX3QgKmpvdXJuYWwgPSBFWFQ0X1NCKGlub2RlLT5pX3NiKS0+c19q b3VybmFsOwogCQkJdGlkX3QgY29tbWl0X3RpZCA9IEVYVDRfSShpbm9kZSktPmlfZGF0YXN5bmNf dGlkOwogCkBAIC0yNjEwLDEzICsyNjEwLDM2IEBAIHJldHJ5OgogCQkJCWRvbmUgPSB0cnVlOwog CQkJfQogCQl9Ci0JCWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CisJCS8qCisJCSAqIENhdXRp b246IElmIHRoZSBoYW5kbGUgaXMgc3luY2hyb25vdXMsCisJCSAqIGV4dDRfam91cm5hbF9zdG9w KCkgY2FuIHdhaXQgZm9yIHRyYW5zYWN0aW9uIGNvbW1pdAorCQkgKiB0byBmaW5pc2ggd2hpY2gg bWF5IGRlcGVuZCBvbiB3cml0ZWJhY2sgb2YgcGFnZXMgdG8KKwkJICogY29tcGxldGUgb3Igb24g cGFnZSBsb2NrIHRvIGJlIHJlbGVhc2VkLiAgSW4gdGhhdAorCQkgKiBjYXNlLCB3ZSBoYXZlIHRv IHdhaXQgdW50aWwgYWZ0ZXIgYWZ0ZXIgd2UgaGF2ZQorCQkgKiBzdWJtaXR0ZWQgYWxsIHRoZSBJ TywgcmVsZWFzZWQgcGFnZSBsb2NrcyB3ZSBob2xkLAorCQkgKiBhbmQgZHJvcHBlZCBpb19lbmQg cmVmZXJlbmNlIChmb3IgZXh0ZW50IGNvbnZlcnNpb24KKwkJICogdG8gYmUgYWJsZSB0byBjb21w bGV0ZSkgYmVmb3JlIHN0b3BwaW5nIHRoZSBoYW5kbGUuCisJCSAqLworCQlpZiAoIWV4dDRfaGFu ZGxlX3ZhbGlkKGhhbmRsZSkgfHwgaGFuZGxlLT5oX3N5bmMgPT0gMCkgeworCQkJZXh0NF9qb3Vy bmFsX3N0b3AoaGFuZGxlKTsKKwkJCWhhbmRsZSA9IE5VTEw7CisJCX0KIAkJLyogU3VibWl0IHBy ZXBhcmVkIGJpbyAqLwogCQlleHQ0X2lvX3N1Ym1pdCgmbXBkLmlvX3N1Ym1pdCk7CiAJCS8qIFVu bG9jayBwYWdlcyB3ZSBkaWRuJ3QgdXNlICovCiAJCW1wYWdlX3JlbGVhc2VfdW51c2VkX3BhZ2Vz KCZtcGQsIGdpdmVfdXBfb25fd3JpdGUpOwotCQkvKiBEcm9wIG91ciBpb19lbmQgcmVmZXJlbmNl IHdlIGdvdCBmcm9tIGluaXQgKi8KLQkJZXh0NF9wdXRfaW9fZW5kKG1wZC5pb19zdWJtaXQuaW9f ZW5kKTsKKwkJLyoKKwkJICogRHJvcCBvdXIgaW9fZW5kIHJlZmVyZW5jZSB3ZSBnb3QgZnJvbSBp bml0LiBXZSBoYXZlCisJCSAqIHRvIGJlIGNhcmVmdWwgYW5kIHVzZSBkZWZlcnJlZCBpb19lbmQg ZmluaXNoaW5nIGlmCisJCSAqIHdlIGFyZSBzdGlsbCBob2xkaW5nIHRoZSB0cmFuc2FjdGlvbiBh cyB3ZSBjYW4KKwkJICogcmVsZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaW9fZW5kIHdoaWNo IG1heSBlbmQKKwkJICogdXAgZG9pbmcgdW53cml0dGVuIGV4dGVudCBjb252ZXJzaW9uLgorCQkg Ki8KKwkJaWYgKGhhbmRsZSkgeworCQkJZXh0NF9wdXRfaW9fZW5kX2RlZmVyKG1wZC5pb19zdWJt aXQuaW9fZW5kKTsKKwkJCWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CisJCX0gZWxzZQorCQkJ ZXh0NF9wdXRfaW9fZW5kKG1wZC5pb19zdWJtaXQuaW9fZW5kKTsKIAogCQlpZiAocmV0ID09IC1F Tk9TUEMgJiYgc2JpLT5zX2pvdXJuYWwpIHsKIAkJCS8qCkBAIC00NjQ5LDcgKzQ2NzIsNyBAQCBp bnQgZXh0NF9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRy KQogCWludCBvcnBoYW4gPSAwOwogCWNvbnN0IHVuc2lnbmVkIGludCBpYV92YWxpZCA9IGF0dHIt PmlhX3ZhbGlkOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVy cm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1 cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFs bG9jLmMKaW5kZXggNDdmN2FmNzg2NzVhLi42MmQwYzVjYmNhZDYgMTAwNjQ0Ci0tLSBhL2ZzL2V4 dDQvbWJhbGxvYy5jCisrKyBiL2ZzL2V4dDQvbWJhbGxvYy5jCkBAIC0yOTExLDcgKzI5MTEsNyBA QCBleHQ0X21iX21hcmtfZGlza3NwYWNlX3VzZWQoc3RydWN0IGV4dDRfYWxsb2NhdGlvbl9jb250 ZXh0ICphYywKIAkJZXh0NF9lcnJvcihzYiwgIkFsbG9jYXRpbmcgYmxvY2tzICVsbHUtJWxsdSB3 aGljaCBvdmVybGFwICIKIAkJCSAgICJmcyBtZXRhZGF0YSIsIGJsb2NrLCBibG9jaytsZW4pOwog CQkvKiBGaWxlIHN5c3RlbSBtb3VudGVkIG5vdCB0byBwYW5pYyBvbiBlcnJvcgotCQkgKiBGaXgg dGhlIGJpdG1hcCBhbmQgcmVwZWF0IHRoZSBibG9jayBhbGxvY2F0aW9uCisJCSAqIEZpeCB0aGUg Yml0bWFwIGFuZCByZXR1cm4gRUZTQ09SUlVQVEVECiAJCSAqIFdlIGxlYWsgc29tZSBvZiB0aGUg YmxvY2tzIGhlcmUuCiAJCSAqLwogCQlleHQ0X2xvY2tfZ3JvdXAoc2IsIGFjLT5hY19iX2V4LmZl X2dyb3VwKTsKQEAgLTI5MjAsNyArMjkyMCw3IEBAIGV4dDRfbWJfbWFya19kaXNrc3BhY2VfdXNl ZChzdHJ1Y3QgZXh0NF9hbGxvY2F0aW9uX2NvbnRleHQgKmFjLAogCQlleHQ0X3VubG9ja19ncm91 cChzYiwgYWMtPmFjX2JfZXguZmVfZ3JvdXApOwogCQllcnIgPSBleHQ0X2hhbmRsZV9kaXJ0eV9t ZXRhZGF0YShoYW5kbGUsIE5VTEwsIGJpdG1hcF9iaCk7CiAJCWlmICghZXJyKQotCQkJZXJyID0g LUVBR0FJTjsKKwkJCWVyciA9IC1FSU87CiAJCWdvdG8gb3V0X2VycjsKIAl9CiAKQEAgLTQ0ODks MTggKzQ0ODksNyBAQCByZXBlYXQ6CiAJfQogCWlmIChsaWtlbHkoYWMtPmFjX3N0YXR1cyA9PSBB Q19TVEFUVVNfRk9VTkQpKSB7CiAJCSplcnJwID0gZXh0NF9tYl9tYXJrX2Rpc2tzcGFjZV91c2Vk KGFjLCBoYW5kbGUsIHJlc2Vydl9jbHN0cnMpOwotCQlpZiAoKmVycnAgPT0gLUVBR0FJTikgewot CQkJLyoKLQkJCSAqIGRyb3AgdGhlIHJlZmVyZW5jZSB0aGF0IHdlIHRvb2sKLQkJCSAqIGluIGV4 dDRfbWJfdXNlX2Jlc3RfZm91bmQKLQkJCSAqLwotCQkJZXh0NF9tYl9yZWxlYXNlX2NvbnRleHQo YWMpOwotCQkJYWMtPmFjX2JfZXguZmVfZ3JvdXAgPSAwOwotCQkJYWMtPmFjX2JfZXguZmVfc3Rh cnQgPSAwOwotCQkJYWMtPmFjX2JfZXguZmVfbGVuID0gMDsKLQkJCWFjLT5hY19zdGF0dXMgPSBB Q19TVEFUVVNfQ09OVElOVUU7Ci0JCQlnb3RvIHJlcGVhdDsKLQkJfSBlbHNlIGlmICgqZXJycCkg eworCQlpZiAoKmVycnApIHsKIAkJCWV4dDRfZGlzY2FyZF9hbGxvY2F0ZWRfYmxvY2tzKGFjKTsK IAkJCWdvdG8gZXJyb3V0OwogCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5j IGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IDgzMDI2ZjQwZDljZC4uMWMyMzliYmE0MzQ0IDEwMDY0 NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9zdXBlci5jCkBAIC0yMDc3LDYg KzIwNzcsNyBAQCB2b2lkIGV4dDRfZ3JvdXBfZGVzY19jc3VtX3NldChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLCBfX3UzMiBibG9ja19ncm91cCwKIAogLyogQ2FsbGVkIGF0IG1vdW50LXRpbWUsIHN1 cGVyLWJsb2NrIGlzIGxvY2tlZCAqLwogc3RhdGljIGludCBleHQ0X2NoZWNrX2Rlc2NyaXB0b3Jz KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCisJCQkJICBleHQ0X2ZzYmxrX3Qgc2JfYmxvY2ssCiAJ CQkJICBleHQ0X2dyb3VwX3QgKmZpcnN0X25vdF96ZXJvZWQpCiB7CiAJc3RydWN0IGV4dDRfc2Jf aW5mbyAqc2JpID0gRVhUNF9TQihzYik7CkBAIC0yMTA3LDYgKzIxMDgsMTEgQEAgc3RhdGljIGlu dCBleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAJCQlncnAg PSBpOwogCiAJCWJsb2NrX2JpdG1hcCA9IGV4dDRfYmxvY2tfYml0bWFwKHNiLCBnZHApOworCQlp ZiAoYmxvY2tfYml0bWFwID09IHNiX2Jsb2NrKSB7CisJCQlleHQ0X21zZyhzYiwgS0VSTl9FUlIs ICJleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzOiAiCisJCQkJICJCbG9jayBiaXRtYXAgZm9yIGdyb3Vw ICV1IG92ZXJsYXBzICIKKwkJCQkgInN1cGVyYmxvY2siLCBpKTsKKwkJfQogCQlpZiAoYmxvY2tf Yml0bWFwIDwgZmlyc3RfYmxvY2sgfHwgYmxvY2tfYml0bWFwID4gbGFzdF9ibG9jaykgewogCQkJ ZXh0NF9tc2coc2IsIEtFUk5fRVJSLCAiZXh0NF9jaGVja19kZXNjcmlwdG9yczogIgogCQkJICAg ICAgICJCbG9jayBiaXRtYXAgZm9yIGdyb3VwICV1IG5vdCBpbiBncm91cCAiCkBAIC0yMTE0LDYg KzIxMjAsMTEgQEAgc3RhdGljIGludCBleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsCiAJCQlyZXR1cm4gMDsKIAkJfQogCQlpbm9kZV9iaXRtYXAgPSBleHQ0X2lu b2RlX2JpdG1hcChzYiwgZ2RwKTsKKwkJaWYgKGlub2RlX2JpdG1hcCA9PSBzYl9ibG9jaykgewor CQkJZXh0NF9tc2coc2IsIEtFUk5fRVJSLCAiZXh0NF9jaGVja19kZXNjcmlwdG9yczogIgorCQkJ CSAiSW5vZGUgYml0bWFwIGZvciBncm91cCAldSBvdmVybGFwcyAiCisJCQkJICJzdXBlcmJsb2Nr IiwgaSk7CisJCX0KIAkJaWYgKGlub2RlX2JpdG1hcCA8IGZpcnN0X2Jsb2NrIHx8IGlub2RlX2Jp dG1hcCA+IGxhc3RfYmxvY2spIHsKIAkJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgImV4dDRfY2hl Y2tfZGVzY3JpcHRvcnM6ICIKIAkJCSAgICAgICAiSW5vZGUgYml0bWFwIGZvciBncm91cCAldSBu b3QgaW4gZ3JvdXAgIgpAQCAtMjEyMSw2ICsyMTMyLDExIEBAIHN0YXRpYyBpbnQgZXh0NF9jaGVj a19kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCQkJcmV0dXJuIDA7CiAJCX0K IAkJaW5vZGVfdGFibGUgPSBleHQ0X2lub2RlX3RhYmxlKHNiLCBnZHApOworCQlpZiAoaW5vZGVf dGFibGUgPT0gc2JfYmxvY2spIHsKKwkJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgImV4dDRfY2hl Y2tfZGVzY3JpcHRvcnM6ICIKKwkJCQkgIklub2RlIHRhYmxlIGZvciBncm91cCAldSBvdmVybGFw cyAiCisJCQkJICJzdXBlcmJsb2NrIiwgaSk7CisJCX0KIAkJaWYgKGlub2RlX3RhYmxlIDwgZmly c3RfYmxvY2sgfHwKIAkJICAgIGlub2RlX3RhYmxlICsgc2JpLT5zX2l0Yl9wZXJfZ3JvdXAgLSAx ID4gbGFzdF9ibG9jaykgewogCQkJZXh0NF9tc2coc2IsIEtFUk5fRVJSLCAiZXh0NF9jaGVja19k ZXNjcmlwdG9yczogIgpAQCAtMjIyOCw2ICsyMjQ0LDE2IEBAIHN0YXRpYyB2b2lkIGV4dDRfb3Jw aGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAl3aGlsZSAoZXMtPnNfbGFzdF9v cnBoYW4pIHsKIAkJc3RydWN0IGlub2RlICppbm9kZTsKIAorCQkvKgorCQkgKiBXZSBtYXkgaGF2 ZSBlbmNvdW50ZXJlZCBhbiBlcnJvciBkdXJpbmcgY2xlYW51cDsgaWYKKwkJICogc28sIHNraXAg dGhlIHJlc3QuCisJCSAqLworCQlpZiAoRVhUNF9TQihzYiktPnNfbW91bnRfc3RhdGUgJiBFWFQ0 X0VSUk9SX0ZTKSB7CisJCQlqYmRfZGVidWcoMSwgIlNraXBwaW5nIG9ycGhhbiByZWNvdmVyeSBv biBmcyB3aXRoIGVycm9ycy5cbiIpOworCQkJZXMtPnNfbGFzdF9vcnBoYW4gPSAwOworCQkJYnJl YWs7CisJCX0KKwogCQlpbm9kZSA9IGV4dDRfb3JwaGFuX2dldChzYiwgbGUzMl90b19jcHUoZXMt PnNfbGFzdF9vcnBoYW4pKTsKIAkJaWYgKElTX0VSUihpbm9kZSkpIHsKIAkJCWVzLT5zX2xhc3Rf b3JwaGFuID0gMDsKQEAgLTM2NDQsNiArMzY3MCwxMyBAQCBzdGF0aWMgaW50IGV4dDRfZmlsbF9z dXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQogCQln b3RvIGZhaWxlZF9tb3VudDsKIAl9CiAKKwlpZiAobGUxNl90b19jcHUoc2JpLT5zX2VzLT5zX3Jl c2VydmVkX2dkdF9ibG9ja3MpID4gKGJsb2Nrc2l6ZSAvIDQpKSB7CisJCWV4dDRfbXNnKHNiLCBL RVJOX0VSUiwKKwkJCSAiTnVtYmVyIG9mIHJlc2VydmVkIEdEVCBibG9ja3MgaW5zYW5lbHkgbGFy Z2U6ICVkIiwKKwkJCSBsZTE2X3RvX2NwdShzYmktPnNfZXMtPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nr cykpOworCQlnb3RvIGZhaWxlZF9tb3VudDsKKwl9CisKIAlpZiAoc2ItPnNfYmxvY2tzaXplICE9 IGJsb2Nrc2l6ZSkgewogCQkvKiBWYWxpZGF0ZSB0aGUgZmlsZXN5c3RlbSBibG9ja3NpemUgKi8K IAkJaWYgKCFzYl9zZXRfYmxvY2tzaXplKHNiLCBibG9ja3NpemUpKSB7CkBAIC0zODg1LDcgKzM5 MTgsNyBAQCBzdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQogCQkJZ290byBmYWlsZWRfbW91bnQyOwogCQl9CiAJ fQotCWlmICghZXh0NF9jaGVja19kZXNjcmlwdG9ycyhzYiwgJmZpcnN0X25vdF96ZXJvZWQpKSB7 CisJaWYgKCFleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzKHNiLCBsb2dpY2FsX3NiX2Jsb2NrLCAmZmly c3Rfbm90X3plcm9lZCkpIHsKIAkJZXh0NF9tc2coc2IsIEtFUk5fRVJSLCAiZ3JvdXAgZGVzY3Jp cHRvcnMgY29ycnVwdGVkISIpOwogCQlnb3RvIGZhaWxlZF9tb3VudDI7CiAJfQpkaWZmIC0tZ2l0 IGEvZnMvZjJmcy9hY2wuYyBiL2ZzL2YyZnMvYWNsLmMKaW5kZXggZGJlMjE0MWQxMGFkLi5mZjQ3 MzcwMzM4MjMgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvYWNsLmMKKysrIGIvZnMvZjJmcy9hY2wuYwpA QCAtMjEzLDEyICsyMTMsMTAgQEAgc3RhdGljIGludCBfX2YyZnNfc2V0X2FjbChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgdHlwZSwKIAljYXNlIEFDTF9UWVBFX0FDQ0VTUzoKIAkJbmFtZV9pbmRl eCA9IEYyRlNfWEFUVFJfSU5ERVhfUE9TSVhfQUNMX0FDQ0VTUzsKIAkJaWYgKGFjbCkgewotCQkJ ZXJyb3IgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZpbm9kZS0+aV9tb2RlKTsKLQkJCWlm IChlcnJvciA8IDApCisJCQllcnJvciA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShpbm9kZSwgJmlu b2RlLT5pX21vZGUsICZhY2wpOworCQkJaWYgKGVycm9yKQogCQkJCXJldHVybiBlcnJvcjsKIAkJ CXNldF9hY2xfaW5vZGUoZmksIGlub2RlLT5pX21vZGUpOwotCQkJaWYgKGVycm9yID09IDApCi0J CQkJYWNsID0gTlVMTDsKIAkJfQogCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxl LmMgYi9mcy9mMmZzL2ZpbGUuYwppbmRleCA3ZDhiOTYyNzUwOTIuLjAxMGMyYWYzMzg1OCAxMDA2 NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxlLmMKQEAgLTUwMCw3ICs1 MDAsNyBAQCBpbnQgZjJmc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlh dHRyICphdHRyKQogCXN0cnVjdCBmMmZzX2lub2RlX2luZm8gKmZpID0gRjJGU19JKGlub2RlKTsK IAlpbnQgZXJyOwogCi0JZXJyID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnIg PSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJy OwogCmRpZmYgLS1naXQgYS9mcy9mYXQvZmlsZS5jIGIvZnMvZmF0L2ZpbGUuYwppbmRleCA4NWY3 OWE4OWU3NDcuLjE3OTgyYWFjMGVmMyAxMDA2NDQKLS0tIGEvZnMvZmF0L2ZpbGUuYworKysgYi9m cy9mYXQvZmlsZS5jCkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IGZhdF9zZXRhdHRyKHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCQkJYXR0ci0+aWFfdmFsaWQgJj0g flRJTUVTX1NFVF9GTEFHUzsKIAl9CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwg YXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlhdHRyLT5p YV92YWxpZCA9IGlhX3ZhbGlkOwogCWlmIChlcnJvcikgewogCQlpZiAoc2JpLT5vcHRpb25zLnF1 aWV0KQpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kaXIuYyBiL2ZzL2Z1c2UvZGlyLmMKaW5kZXggMGM2 MDQ4MjQ3YTM0Li4zMWFkNWZjODc5YjggMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZGlyLmMKKysrIGIv ZnMvZnVzZS9kaXIuYwpAQCAtMTcwNCw5ICsxNzA0LDEwIEBAIGludCBmdXNlX2ZsdXNoX3RpbWVz KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmdXNlX2ZpbGUgKmZmKQogICogdm10cnVuY2F0 ZSgpIGRvZXNuJ3QgYWxsb3cgZm9yIHRoaXMgY2FzZSwgc28gZG8gdGhlIHJsaW1pdCBjaGVja2lu ZwogICogYW5kIHRoZSBhY3R1YWwgdHJ1bmNhdGlvbiBieSBoYW5kLgogICovCi1pbnQgZnVzZV9k b19zZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpYXR0ciAqYXR0ciwKK2ludCBm dXNlX2RvX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIs CiAJCSAgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVu dHJ5LT5kX2lub2RlOwogCXN0cnVjdCBmdXNlX2Nvbm4gKmZjID0gZ2V0X2Z1c2VfY29ubihpbm9k ZSk7CiAJc3RydWN0IGZ1c2VfaW5vZGUgKmZpID0gZ2V0X2Z1c2VfaW5vZGUoaW5vZGUpOwogCXN0 cnVjdCBmdXNlX3JlcSAqcmVxOwpAQCAtMTcyMSw3ICsxNzIyLDcgQEAgaW50IGZ1c2VfZG9fc2V0 YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaWF0dHIgKmF0dHIsCiAJaWYgKCEoZmMt PmZsYWdzICYgRlVTRV9ERUZBVUxUX1BFUk1JU1NJT05TKSkKIAkJYXR0ci0+aWFfdmFsaWQgfD0g QVRUUl9GT1JDRTsKIAotCWVyciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJy ID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVy cjsKIApAQCAtMTgyNiw5ICsxODI3LDkgQEAgc3RhdGljIGludCBmdXNlX3NldGF0dHIoc3RydWN0 IGRlbnRyeSAqZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAkJcmV0dXJuIC1FQUNDRVM7CiAK IAlpZiAoYXR0ci0+aWFfdmFsaWQgJiBBVFRSX0ZJTEUpCi0JCXJldHVybiBmdXNlX2RvX3NldGF0 dHIoaW5vZGUsIGF0dHIsIGF0dHItPmlhX2ZpbGUpOworCQlyZXR1cm4gZnVzZV9kb19zZXRhdHRy KGVudHJ5LCBhdHRyLCBhdHRyLT5pYV9maWxlKTsKIAllbHNlCi0JCXJldHVybiBmdXNlX2RvX3Nl dGF0dHIoaW5vZGUsIGF0dHIsIE5VTEwpOworCQlyZXR1cm4gZnVzZV9kb19zZXRhdHRyKGVudHJ5 LCBhdHRyLCBOVUxMKTsKIH0KIAogc3RhdGljIGludCBmdXNlX2dldGF0dHIoc3RydWN0IHZmc21v dW50ICptbnQsIHN0cnVjdCBkZW50cnkgKmVudHJ5LApkaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxl LmMgYi9mcy9mdXNlL2ZpbGUuYwppbmRleCBhNjQ0MjA0MWFiNjQuLjVmNzQ3Y2YzYTQxMiAxMDA2 NDQKLS0tIGEvZnMvZnVzZS9maWxlLmMKKysrIGIvZnMvZnVzZS9maWxlLmMKQEAgLTQ1NCw2ICs0 NTQsMTUgQEAgc3RhdGljIGludCBmdXNlX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25l cl90IGlkKQogCWZ1c2Vfc3luY193cml0ZXMoaW5vZGUpOwogCW11dGV4X3VubG9jaygmaW5vZGUt PmlfbXV0ZXgpOwogCisJaWYgKHRlc3RfYml0KEFTX0VOT1NQQywgJmZpbGUtPmZfbWFwcGluZy0+ ZmxhZ3MpICYmCisJICAgIHRlc3RfYW5kX2NsZWFyX2JpdChBU19FTk9TUEMsICZmaWxlLT5mX21h cHBpbmctPmZsYWdzKSkKKwkJZXJyID0gLUVOT1NQQzsKKwlpZiAodGVzdF9iaXQoQVNfRUlPLCAm ZmlsZS0+Zl9tYXBwaW5nLT5mbGFncykgJiYKKwkgICAgdGVzdF9hbmRfY2xlYXJfYml0KEFTX0VJ TywgJmZpbGUtPmZfbWFwcGluZy0+ZmxhZ3MpKQorCQllcnIgPSAtRUlPOworCWlmIChlcnIpCisJ CXJldHVybiBlcnI7CisKIAlyZXEgPSBmdXNlX2dldF9yZXFfbm9mYWlsX25vcGFnZXMoZmMsIGZp bGUpOwogCW1lbXNldCgmaW5hcmcsIDAsIHNpemVvZihpbmFyZykpOwogCWluYXJnLmZoID0gZmYt PmZoOwpAQCAtNDk5LDYgKzUwOCwyMSBAQCBpbnQgZnVzZV9mc3luY19jb21tb24oc3RydWN0IGZp bGUgKmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwKIAkJZ290byBvdXQ7CiAKIAlmdXNl X3N5bmNfd3JpdGVzKGlub2RlKTsKKworCS8qCisJICogRHVlIHRvIGltcGxlbWVudGF0aW9uIG9m IGZ1c2Ugd3JpdGViYWNrCisJICogZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZSgpIGRvZXMg bm90IGNhdGNoIGVycm9ycy4KKwkgKiBXZSBoYXZlIHRvIGRvIHRoaXMgZGlyZWN0bHkgYWZ0ZXIg ZnVzZV9zeW5jX3dyaXRlcygpCisJICovCisJaWYgKHRlc3RfYml0KEFTX0VOT1NQQywgJmZpbGUt PmZfbWFwcGluZy0+ZmxhZ3MpICYmCisJICAgIHRlc3RfYW5kX2NsZWFyX2JpdChBU19FTk9TUEMs ICZmaWxlLT5mX21hcHBpbmctPmZsYWdzKSkKKwkJZXJyID0gLUVOT1NQQzsKKwlpZiAodGVzdF9i aXQoQVNfRUlPLCAmZmlsZS0+Zl9tYXBwaW5nLT5mbGFncykgJiYKKwkgICAgdGVzdF9hbmRfY2xl YXJfYml0KEFTX0VJTywgJmZpbGUtPmZfbWFwcGluZy0+ZmxhZ3MpKQorCQllcnIgPSAtRUlPOwor CWlmIChlcnIpCisJCWdvdG8gb3V0OworCiAJZXJyID0gc3luY19pbm9kZV9tZXRhZGF0YShpbm9k ZSwgMSk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2Vf aS5oIGIvZnMvZnVzZS9mdXNlX2kuaAppbmRleCBlOGU0N2E2YWI1MTguLjMwMDYxOWJhODU5MSAx MDA2NDQKLS0tIGEvZnMvZnVzZS9mdXNlX2kuaAorKysgYi9mcy9mdXNlL2Z1c2VfaS5oCkBAIC04 OTQsNyArODk0LDcgQEAgYm9vbCBmdXNlX3dyaXRlX3VwZGF0ZV9zaXplKHN0cnVjdCBpbm9kZSAq aW5vZGUsIGxvZmZfdCBwb3MpOwogaW50IGZ1c2VfZmx1c2hfdGltZXMoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZ1c2VfZmlsZSAqZmYpOwogaW50IGZ1c2Vfd3JpdGVfaW5vZGUoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpOwogCi1pbnQgZnVz ZV9kb19zZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpYXR0ciAqYXR0ciwKK2lu dCBmdXNlX2RvX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0 dHIsCiAJCSAgICBzdHJ1Y3QgZmlsZSAqZmlsZSk7CiAKICNlbmRpZiAvKiBfRlNfRlVTRV9JX0gg Ki8KZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuYwppbmRleCA2 YWJhZmIxMWYyMTQuLmZkZjdiMzMzMDZiZSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9pbm9kZS5jCisr KyBiL2ZzL2Z1c2UvaW5vZGUuYwpAQCAtOTMzLDcgKzkzMyw3IEBAIHN0YXRpYyB2b2lkIGZ1c2Vf c2VuZF9pbml0KHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCBzdHJ1Y3QgZnVzZV9yZXEgKnJlcSkKIAlh cmctPmZsYWdzIHw9IEZVU0VfQVNZTkNfUkVBRCB8IEZVU0VfUE9TSVhfTE9DS1MgfCBGVVNFX0FU T01JQ19PX1RSVU5DIHwKIAkJRlVTRV9FWFBPUlRfU1VQUE9SVCB8IEZVU0VfQklHX1dSSVRFUyB8 IEZVU0VfRE9OVF9NQVNLIHwKIAkJRlVTRV9TUExJQ0VfV1JJVEUgfCBGVVNFX1NQTElDRV9NT1ZF IHwgRlVTRV9TUExJQ0VfUkVBRCB8Ci0JCUZVU0VfRkxPQ0tfTE9DS1MgfCBGVVNFX0lPQ1RMX0RJ UiB8IEZVU0VfQVVUT19JTlZBTF9EQVRBIHwKKwkJRlVTRV9GTE9DS19MT0NLUyB8IEZVU0VfSEFT X0lPQ1RMX0RJUiB8IEZVU0VfQVVUT19JTlZBTF9EQVRBIHwKIAkJRlVTRV9ET19SRUFERElSUExV UyB8IEZVU0VfUkVBRERJUlBMVVNfQVVUTyB8IEZVU0VfQVNZTkNfRElPIHwKIAkJRlVTRV9XUklU RUJBQ0tfQ0FDSEUgfCBGVVNFX05PX09QRU5fU1VQUE9SVDsKIAlyZXEtPmluLmgub3Bjb2RlID0g RlVTRV9JTklUOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9hY2wuYyBiL2ZzL2dmczIvYWNsLmMKaW5k ZXggN2IzMTQzMDY0YWYxLi44OGU2NmFhNTE2YzQgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvYWNsLmMK KysrIGIvZnMvZ2ZzMi9hY2wuYwpAQCAtNzksMTcgKzc5LDExIEBAIGludCBnZnMyX3NldF9hY2wo c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHBvc2l4X2FjbCAqYWNsLCBpbnQgdHlwZSkKIAlp ZiAodHlwZSA9PSBBQ0xfVFlQRV9BQ0NFU1MpIHsKIAkJdW1vZGVfdCBtb2RlID0gaW5vZGUtPmlf bW9kZTsKIAotCQllcnJvciA9IHBvc2l4X2FjbF9lcXVpdl9tb2RlKGFjbCwgJm1vZGUpOwotCQlp ZiAoZXJyb3IgPCAwKQorCQllcnJvciA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShpbm9kZSwgJmlu b2RlLT5pX21vZGUsICZhY2wpOworCQlpZiAoZXJyb3IpCiAJCQlyZXR1cm4gZXJyb3I7Ci0KLQkJ aWYgKGVycm9yID09IDApCi0JCQlhY2wgPSBOVUxMOwotCi0JCWlmIChtb2RlICE9IGlub2RlLT5p X21vZGUpIHsKLQkJCWlub2RlLT5pX21vZGUgPSBtb2RlOworCQlpZiAobW9kZSAhPSBpbm9kZS0+ aV9tb2RlKQogCQkJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7Ci0JCX0KIAl9CiAKIAlpZiAoYWNs KSB7CmRpZmYgLS1naXQgYS9mcy9nZnMyL2lub2RlLmMgYi9mcy9nZnMyL2lub2RlLmMKaW5kZXgg YmE0YjJlNTM3N2RiLi5iNjY1N2RkZDFkZTUgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvaW5vZGUuYwor KysgYi9mcy9nZnMyL2lub2RlLmMKQEAgLTE3NzQsNyArMTc3NCw3IEBAIHN0YXRpYyBpbnQgZ2Zz Ml9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCWlm IChJU19JTU1VVEFCTEUoaW5vZGUpIHx8IElTX0FQUEVORChpbm9kZSkpCiAJCWdvdG8gb3V0Owog Ci0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0 cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlnb3RvIG91dDsKIApkaWZm IC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuYwppbmRleCBkMDkyOWJjODE3 ODIuLmE0YTNmOGE2NzRiOSAxMDA2NDQKLS0tIGEvZnMvaGZzL2lub2RlLmMKKysrIGIvZnMvaGZz L2lub2RlLmMKQEAgLTYwNCw3ICs2MDQsNyBAQCBpbnQgaGZzX2lub2RlX3NldGF0dHIoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKiBhdHRyKQogCXN0cnVjdCBoZnNfc2JfaW5m byAqaHNiID0gSEZTX1NCKGlub2RlLT5pX3NiKTsKIAlpbnQgZXJyb3I7CiAKLQllcnJvciA9IGlu b2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7IC8qIGJhc2ljIHBlcm1pc3Npb24gY2hlY2tzICov CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsgLyogYmFzaWMgcGVybWlz c2lvbiBjaGVja3MgKi8KIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0 IGEvZnMvaGZzcGx1cy9pbm9kZS5jIGIvZnMvaGZzcGx1cy9pbm9kZS5jCmluZGV4IDBjZjc4NmYy ZDA0Ni4uOWNkODk3Y2MyMzg0IDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL2lub2RlLmMKKysrIGIv ZnMvaGZzcGx1cy9pbm9kZS5jCkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIGludCBoZnNwbHVz X3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJc3Ry dWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAlpbnQgZXJyb3I7CiAKLQllcnJv ciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBh cmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0t Z2l0IGEvZnMvaGZzcGx1cy9wb3NpeF9hY2wuYyBiL2ZzL2hmc3BsdXMvcG9zaXhfYWNsLmMKaW5k ZXggZGYwYzlhZjY4ZDA1Li43MWIzMDg3YjdlMzIgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvcG9z aXhfYWNsLmMKKysrIGIvZnMvaGZzcGx1cy9wb3NpeF9hY2wuYwpAQCAtNjgsOCArNjgsOCBAQCBp bnQgaGZzcGx1c19zZXRfcG9zaXhfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBwb3Np eF9hY2wgKmFjbCwKIAljYXNlIEFDTF9UWVBFX0FDQ0VTUzoKIAkJeGF0dHJfbmFtZSA9IFBPU0lY X0FDTF9YQVRUUl9BQ0NFU1M7CiAJCWlmIChhY2wpIHsKLQkJCWVyciA9IHBvc2l4X2FjbF9lcXVp dl9tb2RlKGFjbCwgJmlub2RlLT5pX21vZGUpOwotCQkJaWYgKGVyciA8IDApCisJCQllcnIgPSBw b3NpeF9hY2xfdXBkYXRlX21vZGUoaW5vZGUsICZpbm9kZS0+aV9tb2RlLCAmYWNsKTsKKwkJCWlm IChlcnIpCiAJCQkJcmV0dXJuIGVycjsKIAkJfQogCQllcnIgPSAwOwpkaWZmIC0tZ2l0IGEvZnMv aG9zdGZzL2hvc3Rmc19rZXJuLmMgYi9mcy9ob3N0ZnMvaG9zdGZzX2tlcm4uYwppbmRleCAwNzBl MjQ5ZjdkMGYuLjUwZjBiNGYwNDgwZSAxMDA2NDQKLS0tIGEvZnMvaG9zdGZzL2hvc3Rmc19rZXJu LmMKKysrIGIvZnMvaG9zdGZzL2hvc3Rmc19rZXJuLmMKQEAgLTc5Miw3ICs3OTIsNyBAQCBzdGF0 aWMgaW50IGhvc3Rmc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRy ICphdHRyKQogCiAJaW50IGZkID0gSE9TVEZTX0koaW5vZGUpLT5mZDsKIAotCWVyciA9IGlub2Rl X2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwg YXR0cik7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIApAQCAtOTQyLDEwICs5NDIsMTEgQEAg c3RhdGljIGludCBob3N0ZnNfZmlsbF9zYl9jb21tb24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg dm9pZCAqZCwgaW50IHNpbGVudCkKIAogCWlmIChTX0lTTE5LKHJvb3RfaW5vZGUtPmlfbW9kZSkp IHsKIAkJY2hhciAqbmFtZSA9IGZvbGxvd19saW5rKGhvc3Rfcm9vdF9wYXRoKTsKLQkJaWYgKElT X0VSUihuYW1lKSkKKwkJaWYgKElTX0VSUihuYW1lKSkgewogCQkJZXJyID0gUFRSX0VSUihuYW1l KTsKLQkJZWxzZQotCQkJZXJyID0gcmVhZF9uYW1lKHJvb3RfaW5vZGUsIG5hbWUpOworCQkJZ290 byBvdXRfcHV0OworCQl9CisJCWVyciA9IHJlYWRfbmFtZShyb290X2lub2RlLCBuYW1lKTsKIAkJ a2ZyZWUobmFtZSk7CiAJCWlmIChlcnIpCiAJCQlnb3RvIG91dF9wdXQ7CmRpZmYgLS1naXQgYS9m cy9ocGZzL2lub2RlLmMgYi9mcy9ocGZzL2lub2RlLmMKaW5kZXggN2NlNGI3NDIzNGExLi41YWRh N2I3M2I1ZDkgMTAwNjQ0Ci0tLSBhL2ZzL2hwZnMvaW5vZGUuYworKysgYi9mcy9ocGZzL2lub2Rl LmMKQEAgLTI3Miw3ICsyNzIsNyBAQCBpbnQgaHBmc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRl bnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCWlmICgoYXR0ci0+aWFfdmFsaWQgJiBBVFRSX1NJ WkUpICYmIGF0dHItPmlhX3NpemUgPiBpbm9kZS0+aV9zaXplKQogCQlnb3RvIG91dF91bmxvY2s7 CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRh dHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X3VubG9j azsKIApkaWZmIC0tZ2l0IGEvZnMvaHVnZXRsYmZzL2lub2RlLmMgYi9mcy9odWdldGxiZnMvaW5v ZGUuYwppbmRleCAxZTI4NzJiMjUzNDMuLmUzYWM0OTE0MjRmYyAxMDA2NDQKLS0tIGEvZnMvaHVn ZXRsYmZzL2lub2RlLmMKKysrIGIvZnMvaHVnZXRsYmZzL2lub2RlLmMKQEAgLTQyOSw3ICs0Mjks NyBAQCBzdGF0aWMgaW50IGh1Z2V0bGJmc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg c3RydWN0IGlhdHRyICphdHRyKQogCiAJQlVHX09OKCFpbm9kZSk7CiAKLQllcnJvciA9IGlub2Rl X2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5 LCBhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMv amZmczIvYWNsLmMgYi9mcy9qZmZzMi9hY2wuYwppbmRleCAwMDllYzBiNTk5M2QuLjRmNDNkZWIw OWE1YSAxMDA2NDQKLS0tIGEvZnMvamZmczIvYWNsLmMKKysrIGIvZnMvamZmczIvYWNsLmMKQEAg LTIzNiw5ICsyMzYsMTAgQEAgaW50IGpmZnMyX3NldF9hY2woc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IHBvc2l4X2FjbCAqYWNsLCBpbnQgdHlwZSkKIAljYXNlIEFDTF9UWVBFX0FDQ0VTUzoK IAkJeHByZWZpeCA9IEpGRlMyX1hQUkVGSVhfQUNMX0FDQ0VTUzsKIAkJaWYgKGFjbCkgewotCQkJ dW1vZGVfdCBtb2RlID0gaW5vZGUtPmlfbW9kZTsKLQkJCXJjID0gcG9zaXhfYWNsX2VxdWl2X21v ZGUoYWNsLCAmbW9kZSk7Ci0JCQlpZiAocmMgPCAwKQorCQkJdW1vZGVfdCBtb2RlOworCisJCQly YyA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShpbm9kZSwgJm1vZGUsICZhY2wpOworCQkJaWYgKHJj KQogCQkJCXJldHVybiByYzsKIAkJCWlmIChpbm9kZS0+aV9tb2RlICE9IG1vZGUpIHsKIAkJCQlz dHJ1Y3QgaWF0dHIgYXR0cjsKQEAgLTI1MCw4ICsyNTEsNiBAQCBpbnQgamZmczJfc2V0X2FjbChz dHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgcG9zaXhfYWNsICphY2wsIGludCB0eXBlKQogCQkJ CWlmIChyYyA8IDApCiAJCQkJCXJldHVybiByYzsKIAkJCX0KLQkJCWlmIChyYyA9PSAwKQotCQkJ CWFjbCA9IE5VTEw7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBBQ0xfVFlQRV9ERUZBVUxUOgpkaWZm IC0tZ2l0IGEvZnMvamZmczIvZnMuYyBiL2ZzL2pmZnMyL2ZzLmMKaW5kZXggNjAxYWZkMWFmZGRm Li5iYjk0NjBlYTM2ZTggMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL2ZzLmMKKysrIGIvZnMvamZmczIv ZnMuYwpAQCAtMTkzLDcgKzE5Myw3IEBAIGludCBqZmZzMl9zZXRhdHRyKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgc3RydWN0IGlhdHRyICppYXR0cikKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVu dHJ5LT5kX2lub2RlOwogCWludCByYzsKIAotCXJjID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBp YXR0cik7CisJcmMgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CiAJaWYgKHJjKQog CQlyZXR1cm4gcmM7CiAKZGlmZiAtLWdpdCBhL2ZzL2pmcy9hY2wuYyBiL2ZzL2pmcy9hY2wuYwpp bmRleCAwYzhjYTgzMGIxMTMuLjlmYWQ5ZjRmZTg4MyAxMDA2NDQKLS0tIGEvZnMvamZzL2FjbC5j CisrKyBiL2ZzL2pmcy9hY2wuYwpAQCAtODQsMTMgKzg0LDExIEBAIHN0YXRpYyBpbnQgX19qZnNf c2V0X2FjbCh0aWRfdCB0aWQsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBlLAogCWNhc2Ug QUNMX1RZUEVfQUNDRVNTOgogCQllYV9uYW1lID0gUE9TSVhfQUNMX1hBVFRSX0FDQ0VTUzsKIAkJ aWYgKGFjbCkgewotCQkJcmMgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZpbm9kZS0+aV9t b2RlKTsKLQkJCWlmIChyYyA8IDApCisJCQlyYyA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShpbm9k ZSwgJmlub2RlLT5pX21vZGUsICZhY2wpOworCQkJaWYgKHJjKQogCQkJCXJldHVybiByYzsKIAkJ CWlub2RlLT5pX2N0aW1lID0gQ1VSUkVOVF9USU1FOwogCQkJbWFya19pbm9kZV9kaXJ0eShpbm9k ZSk7Ci0JCQlpZiAocmMgPT0gMCkKLQkJCQlhY2wgPSBOVUxMOwogCQl9CiAJCWJyZWFrOwogCWNh c2UgQUNMX1RZUEVfREVGQVVMVDoKZGlmZiAtLWdpdCBhL2ZzL2pmcy9maWxlLmMgYi9mcy9qZnMv ZmlsZS5jCmluZGV4IDMzYWEwY2MxZjhiOC4uYjQzY2M5YTZkYmExIDEwMDY0NAotLS0gYS9mcy9q ZnMvZmlsZS5jCisrKyBiL2ZzL2pmcy9maWxlLmMKQEAgLTEwMyw3ICsxMDMsNyBAQCBpbnQgamZz X3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKQogCXN0 cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJaW50IHJjOwogCi0JcmMgPSBp bm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGlhdHRyKTsKKwlyYyA9IHNldGF0dHJfcHJlcGFyZShkZW50 cnksIGlhdHRyKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIApkaWZmIC0tZ2l0IGEvZnMva2Vy bmZzL2ZpbGUuYyBiL2ZzL2tlcm5mcy9maWxlLmMKaW5kZXggZDg5NWI0YjdiNjYxLi5iMTIwZTg1 YWE3YjkgMTAwNjQ0Ci0tLSBhL2ZzL2tlcm5mcy9maWxlLmMKKysrIGIvZnMva2VybmZzL2ZpbGUu YwpAQCAtODI4LDIxICs4MjgsMzUgQEAgcmVwZWF0OgogCW11dGV4X2xvY2soJmtlcm5mc19tdXRl eCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sICZrZXJuZnNfcm9vdChrbiktPnN1cGVy cywgbm9kZSkgeworCQlzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudDsKIAkJc3RydWN0IGlub2Rl ICppbm9kZTsKLQkJc3RydWN0IGRlbnRyeSAqZGVudHJ5OwogCisJCS8qCisJCSAqIFdlIHdhbnQg ZnNub3RpZnlfbW9kaWZ5KCkgb24gQGtuIGJ1dCBhcyB0aGUKKwkJICogbW9kaWZpY2F0aW9ucyBh cmVuJ3Qgb3JpZ2luYXRpbmcgZnJvbSB1c2VybGFuZCBkb24ndAorCQkgKiBoYXZlIHRoZSBtYXRj aGluZyBAZmlsZSBhdmFpbGFibGUuICBMb29rIHVwIHRoZSBpbm9kZXMKKwkJICogYW5kIGdlbmVy YXRlIHRoZSBldmVudHMgbWFudWFsbHkuCisJCSAqLwogCQlpbm9kZSA9IGlsb29rdXAoaW5mby0+ c2IsIGtuLT5pbm8pOwogCQlpZiAoIWlub2RlKQogCQkJY29udGludWU7CiAKLQkJZGVudHJ5ID0g ZF9maW5kX2FueV9hbGlhcyhpbm9kZSk7Ci0JCWlmIChkZW50cnkpIHsKLQkJCWZzbm90aWZ5X3Bh cmVudChOVUxMLCBkZW50cnksIEZTX01PRElGWSk7Ci0JCQlmc25vdGlmeShpbm9kZSwgRlNfTU9E SUZZLCBpbm9kZSwgRlNOT1RJRllfRVZFTlRfSU5PREUsCi0JCQkJIE5VTEwsIDApOwotCQkJZHB1 dChkZW50cnkpOworCQlwYXJlbnQgPSBrZXJuZnNfZ2V0X3BhcmVudChrbik7CisJCWlmIChwYXJl bnQpIHsKKwkJCXN0cnVjdCBpbm9kZSAqcF9pbm9kZTsKKworCQkJcF9pbm9kZSA9IGlsb29rdXAo aW5mby0+c2IsIHBhcmVudC0+aW5vKTsKKwkJCWlmIChwX2lub2RlKSB7CisJCQkJZnNub3RpZnko cF9pbm9kZSwgRlNfTU9ESUZZIHwgRlNfRVZFTlRfT05fQ0hJTEQsCisJCQkJCSBpbm9kZSwgRlNO T1RJRllfRVZFTlRfSU5PREUsIGtuLT5uYW1lLCAwKTsKKwkJCQlpcHV0KHBfaW5vZGUpOworCQkJ fQorCisJCQlrZXJuZnNfcHV0KHBhcmVudCk7CiAJCX0KIAorCQlmc25vdGlmeShpbm9kZSwgRlNf TU9ESUZZLCBpbm9kZSwgRlNOT1RJRllfRVZFTlRfSU5PREUsCisJCQkga24tPm5hbWUsIDApOwog CQlpcHV0KGlub2RlKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2ZzL2tlcm5mcy9pbm9kZS5jIGIvZnMv a2VybmZzL2lub2RlLmMKaW5kZXggNWI4YWIyOTQ5NGI3Li44YjZjYjhjYmY4ODcgMTAwNjQ0Ci0t LSBhL2ZzL2tlcm5mcy9pbm9kZS5jCisrKyBiL2ZzL2tlcm5mcy9pbm9kZS5jCkBAIC0xMzEsNyAr MTMxLDcgQEAgaW50IGtlcm5mc19pb3Bfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0 cnVjdCBpYXR0ciAqaWF0dHIpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJbXV0ZXhfbG9jaygma2Vy bmZzX211dGV4KTsKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgaWF0dHIpOworCWVy cm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0dHIpOwogCWlmIChlcnJvcikKIAkJZ290 byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL2xpYmZzLmMgYi9mcy9saWJmcy5jCmluZGV4IDViYTdl MTBkNmIyMy4uNTE5OTRhNTYyYWNhIDEwMDY0NAotLS0gYS9mcy9saWJmcy5jCisrKyBiL2ZzL2xp YmZzLmMKQEAgLTM3MSw3ICszNzEsNyBAQCBpbnQgc2ltcGxlX3NldGF0dHIoc3RydWN0IGRlbnRy eSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBk ZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2so aW5vZGUsIGlhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhdHRyKTsK IAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMvbG9nZnMvZmls ZS5jIGIvZnMvbG9nZnMvZmlsZS5jCmluZGV4IDg1Mzg3NTJkZjJmNi4uMzRmNGQzM2I2ZWU5IDEw MDY0NAotLS0gYS9mcy9sb2dmcy9maWxlLmMKKysrIGIvZnMvbG9nZnMvZmlsZS5jCkBAIC0yNDQs NyArMjQ0LDcgQEAgc3RhdGljIGludCBsb2dmc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgc3RydWN0IGlhdHRyICphdHRyKQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRf aW5vZGU7CiAJaW50IGVyciA9IDA7CiAKLQllcnIgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0 dHIpOworCWVyciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChlcnIpCiAJ CXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBhL2ZzL21pbml4L2ZpbGUuYyBiL2ZzL21pbml4L2Zp bGUuYwppbmRleCBhOTY3ZGUwODVhYzAuLjZiNTY5MTYxMzI1ZSAxMDA2NDQKLS0tIGEvZnMvbWlu aXgvZmlsZS5jCisrKyBiL2ZzL21pbml4L2ZpbGUuYwpAQCAtMjgsNyArMjgsNyBAQCBzdGF0aWMg aW50IG1pbml4X3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0 dHIpCiAJc3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAlpbnQgZXJyb3I7 CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRh dHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsK IApkaWZmIC0tZ2l0IGEvZnMvbmNwZnMvaW5vZGUuYyBiL2ZzL25jcGZzL2lub2RlLmMKaW5kZXgg ZTMxZTU4OTM2OWE0Li5mOGQzZjQ2MWEwMWYgMTAwNjQ0Ci0tLSBhL2ZzL25jcGZzL2lub2RlLmMK KysrIGIvZnMvbmNwZnMvaW5vZGUuYwpAQCAtODg1LDcgKzg4NSw3IEBAIGludCBuY3Bfbm90aWZ5 X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAkvKiBh Z2VpbmcgdGhlIGRlbnRyeSB0byBmb3JjZSB2YWxpZGF0aW9uICovCiAJbmNwX2FnZV9kZW50cnko c2VydmVyLCBkZW50cnkpOwogCi0JcmVzdWx0ID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRy KTsKKwlyZXN1bHQgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAocmVzdWx0 IDwgMCkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL25mcy9jYWxsYmFjay5jIGIvZnMv bmZzL2NhbGxiYWNrLmMKaW5kZXggOGM4NDk5NDdkMzRmLi5jMWY5NTVlMmQ4MDkgMTAwNjQ0Ci0t LSBhL2ZzL25mcy9jYWxsYmFjay5jCisrKyBiL2ZzL25mcy9jYWxsYmFjay5jCkBAIC0zMDEsNiAr MzAxLDcgQEAgc3RhdGljIGludCBuZnNfY2FsbGJhY2tfdXBfbmV0KGludCBtaW5vcnZlcnNpb24s IHN0cnVjdCBzdmNfc2VydiAqc2Vydiwgc3RydWN0IG4KIGVycl9zb2NrczoKIAlzdmNfcnBjYl9j bGVhbnVwKHNlcnYsIG5ldCk7CiBlcnJfYmluZDoKKwlubi0+Y2JfdXNlcnNbbWlub3J2ZXJzaW9u XS0tOwogCWRwcmludGsoIk5GUzogQ291bGRuJ3QgY3JlYXRlIGNhbGxiYWNrIHNvY2tldDogZXJy ID0gJWQ7ICIKIAkJCSJuZXQgPSAlcFxuIiwgcmV0LCBuZXQpOwogCXJldHVybiByZXQ7CmRpZmYg LS1naXQgYS9mcy9uZnMvY2FsbGJhY2tfeGRyLmMgYi9mcy9uZnMvY2FsbGJhY2tfeGRyLmMKaW5k ZXggMDJmOGQwOWUxMTlmLi5iMDZjNmJhOTc2NWQgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9jYWxsYmFj a194ZHIuYworKysgYi9mcy9uZnMvY2FsbGJhY2tfeGRyLmMKQEAgLTkxNSw3ICs5MTUsNyBAQCBz dGF0aWMgX19iZTMyIG5mczRfY2FsbGJhY2tfY29tcG91bmQoc3RydWN0IHN2Y19ycXN0ICpycXN0 cCwgdm9pZCAqYXJncCwgdm9pZCAqcgogCWlmIChoZHJfYXJnLm1pbm9ydmVyc2lvbiA9PSAwKSB7 CiAJCWNwcy5jbHAgPSBuZnM0X2ZpbmRfY2xpZW50X2lkZW50KFNWQ19ORVQocnFzdHApLCBoZHJf YXJnLmNiX2lkZW50KTsKIAkJaWYgKCFjcHMuY2xwIHx8ICFjaGVja19nc3NfY2FsbGJhY2tfcHJp bmNpcGFsKGNwcy5jbHAsIHJxc3RwKSkKLQkJCXJldHVybiBycGNfZHJvcF9yZXBseTsKKwkJCWdv dG8gb3V0X2ludmFsaWRjcmVkOwogCX0KIAogCWNwcy5taW5vcnZlcnNpb24gPSBoZHJfYXJnLm1p bm9ydmVyc2lvbjsKQEAgLTk0Myw2ICs5NDMsMTAgQEAgc3RhdGljIF9fYmUzMiBuZnM0X2NhbGxi YWNrX2NvbXBvdW5kKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHZvaWQgKmFyZ3AsIHZvaWQgKnIK IAluZnNfcHV0X2NsaWVudChjcHMuY2xwKTsKIAlkcHJpbnRrKCIlczogZG9uZSwgc3RhdHVzID0g JXVcbiIsIF9fZnVuY19fLCBudG9obChzdGF0dXMpKTsKIAlyZXR1cm4gcnBjX3N1Y2Nlc3M7CisK K291dF9pbnZhbGlkY3JlZDoKKwlwcl93YXJuX3JhdGVsaW1pdGVkKCJORlM6IE5GU3Y0IGNhbGxi YWNrIGNvbnRhaW5zIGludmFsaWQgY3JlZFxuIik7CisJcmV0dXJuIHJwY19hdXRoZXJyX2JhZGNy ZWQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHByb2MuYyBiL2ZzL25mcy9uZnM0 cHJvYy5jCmluZGV4IDdkYzBiZjczZTc2YS4uMTUyMmVjODFjMjZmIDEwMDY0NAotLS0gYS9mcy9u ZnMvbmZzNHByb2MuYworKysgYi9mcy9uZnMvbmZzNHByb2MuYwpAQCAtNzA2MywxMyArNzA2Mywy MiBAQCBzdGF0aWMgaW50IF9uZnM0X3Byb2NfY3JlYXRlX3Nlc3Npb24oc3RydWN0IG5mc19jbGll bnQgKmNscCwKIAlzdGF0dXMgPSBycGNfY2FsbF9zeW5jKHNlc3Npb24tPmNscC0+Y2xfcnBjY2xp ZW50LCAmbXNnLCBSUENfVEFTS19USU1FT1VUKTsKIAl0cmFjZV9uZnM0X2NyZWF0ZV9zZXNzaW9u KGNscCwgc3RhdHVzKTsKIAorCXN3aXRjaCAoc3RhdHVzKSB7CisJY2FzZSAtTkZTNEVSUl9TVEFM RV9DTElFTlRJRDoKKwljYXNlIC1ORlM0RVJSX0RFTEFZOgorCWNhc2UgLUVUSU1FRE9VVDoKKwlj YXNlIC1FQUNDRVM6CisJY2FzZSAtRUFHQUlOOgorCQlnb3RvIG91dDsKKwl9OworCisJY2xwLT5j bF9zZXFpZCsrOwogCWlmICghc3RhdHVzKSB7CiAJCS8qIFZlcmlmeSB0aGUgc2Vzc2lvbidzIG5l Z290aWF0ZWQgY2hhbm5lbF9hdHRycyB2YWx1ZXMgKi8KIAkJc3RhdHVzID0gbmZzNF92ZXJpZnlf Y2hhbm5lbF9hdHRycygmYXJncywgc2Vzc2lvbik7Ci0JCS8qIEluY3JlbWVudCB0aGUgY2xpZW50 aWQgc2xvdCBzZXF1ZW5jZSBpZCAqLwotCQljbHAtPmNsX3NlcWlkKys7CiAJfQogCitvdXQ6CiAJ cmV0dXJuIHN0YXR1czsKIH0KIApkaWZmIC0tZ2l0IGEvZnMvbmZzL3dyaXRlLmMgYi9mcy9uZnMv d3JpdGUuYwppbmRleCBlY2IwZjlmZDU2MzIuLjM0ZjE4Mjk0ODE3YSAxMDA2NDQKLS0tIGEvZnMv bmZzL3dyaXRlLmMKKysrIGIvZnMvbmZzL3dyaXRlLmMKQEAgLTEyMjIsNiArMTIyMiw5IEBAIGlu dCBuZnNfdXBkYXRlcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJ ZHByaW50aygiTkZTOiAgICAgICBuZnNfdXBkYXRlcGFnZSglcEQyICVkQCVsbGQpXG4iLAogCQlm aWxlLCBjb3VudCwgKGxvbmcgbG9uZykocGFnZV9maWxlX29mZnNldChwYWdlKSArIG9mZnNldCkp OwogCisJaWYgKCFjb3VudCkKKwkJZ290byBvdXQ7CisKIAlpZiAobmZzX2Nhbl9leHRlbmRfd3Jp dGUoZmlsZSwgcGFnZSwgaW5vZGUpKSB7CiAJCWNvdW50ID0gbWF4KGNvdW50ICsgb2Zmc2V0LCBu ZnNfcGFnZV9sZW5ndGgocGFnZSkpOwogCQlvZmZzZXQgPSAwOwpAQCAtMTIzMiw3ICsxMjM1LDcg QEAgaW50IG5mc191cGRhdGVwYWdlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFn ZSwKIAkJbmZzX3NldF9wYWdlZXJyb3IocGFnZSk7CiAJZWxzZQogCQlfX3NldF9wYWdlX2RpcnR5 X25vYnVmZmVycyhwYWdlKTsKLQorb3V0OgogCWRwcmludGsoIk5GUzogICAgICAgbmZzX3VwZGF0 ZXBhZ2UgcmV0dXJucyAlZCAoaXNpemUgJWxsZClcbiIsCiAJCQlzdGF0dXMsIChsb25nIGxvbmcp aV9zaXplX3JlYWQoaW5vZGUpKTsKIAlyZXR1cm4gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvZnMvbmZz ZC92ZnMuYyBiL2ZzL25mc2QvdmZzLmMKaW5kZXggMTQwYzQ5NmY2MTJjLi41MjFmNzE3YjRhOTkg MTAwNjQ0Ci0tLSBhL2ZzL25mc2QvdmZzLmMKKysrIGIvZnMvbmZzZC92ZnMuYwpAQCAtMzAwLDE3 ICszMDAsMTkgQEAgY29tbWl0X21ldGFkYXRhKHN0cnVjdCBzdmNfZmggKmZocCkKICAqIE5GUyBz ZW1hbnRpY3MgYW5kIHdoYXQgTGludXggZXhwZWN0cy4KICAqLwogc3RhdGljIHZvaWQKLW5mc2Rf c2FuaXRpemVfYXR0cnMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlhdHRyICppYXApCitu ZnNkX3Nhbml0aXplX2F0dHJzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICpp YXApCiB7CisJc3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKKwogCS8qCiAJ ICogTkZTdjIgZG9lcyBub3QgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuICJzZXQtW2FjXXRpbWUtdG8t bm93IgogCSAqIHdoaWNoIG9ubHkgcmVxdWlyZXMgYWNjZXNzLCBhbmQgInNldC1bYWNddGltZS10 by1YIiB3aGljaAogCSAqIHJlcXVpcmVzIG93bmVyc2hpcC4KIAkgKiBTbyBpZiBpdCBsb29rcyBs aWtlIGl0IG1pZ2h0IGJlICJzZXQgYm90aCB0byB0aGUgc2FtZSB0aW1lIHdoaWNoCi0JICogaXMg Y2xvc2UgdG8gbm93IiwgYW5kIGlmIGlub2RlX2NoYW5nZV9vayBmYWlscywgdGhlbiB3ZQorCSAq IGlzIGNsb3NlIHRvIG5vdyIsIGFuZCBpZiBzZXRhdHRyX3ByZXBhcmUgZmFpbHMsIHRoZW4gd2UK IAkgKiBjb252ZXJ0IHRvICJzZXQgdG8gbm93IiBpbnN0ZWFkIG9mICJzZXQgdG8gZXhwbGljaXQg dGltZSIKIAkgKgotCSAqIFdlIG9ubHkgY2FsbCBpbm9kZV9jaGFuZ2Vfb2sgYXMgdGhlIGxhc3Qg dGVzdCBhcyB0ZWNobmljYWxseQorCSAqIFdlIG9ubHkgY2FsbCBzZXRhdHRyX3ByZXBhcmUgYXMg dGhlIGxhc3QgdGVzdCBhcyB0ZWNobmljYWxseQogCSAqIGl0IGlzIG5vdCBhbiBpbnRlcmZhY2Ug dGhhdCB3ZSBzaG91bGQgYmUgdXNpbmcuCiAJICovCiAjZGVmaW5lIEJPVEhfVElNRV9TRVQgKEFU VFJfQVRJTUVfU0VUIHwgQVRUUl9NVElNRV9TRVQpCkBAIC0zMjgsNyArMzMwLDcgQEAgbmZzZF9z YW5pdGl6ZV9hdHRycyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaWF0dHIgKmlhcCkKIAkJ aWYgKGRlbHRhIDwgMCkKIAkJCWRlbHRhID0gLWRlbHRhOwogCQlpZiAoZGVsdGEgPCBNQVhfVE9V Q0hfVElNRV9FUlJPUiAmJgotCQkgICAgaW5vZGVfY2hhbmdlX29rKGlub2RlLCBpYXApICE9IDAp IHsKKwkJICAgIHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhcCkgIT0gMCkgewogCQkJLyoKIAkJ CSAqIFR1cm4gb2ZmIEFUVFJfW0FNXVRJTUVfU0VUIGJ1dCBsZWF2ZSBBVFRSX1tBTV1USU1FLgog CQkJICogVGhpcyB3aWxsIGNhdXNlIG5vdGlmeV9jaGFuZ2UgdG8gc2V0IHRoZXNlIHRpbWVzCkBA IC00MzUsNyArNDM3LDcgQEAgbmZzZF9zZXRhdHRyKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0 cnVjdCBzdmNfZmggKmZocCwgc3RydWN0IGlhdHRyICppYXAsCiAJaWYgKCFpYXAtPmlhX3ZhbGlk KQogCQlnb3RvIG91dDsKIAotCW5mc2Rfc2FuaXRpemVfYXR0cnMoaW5vZGUsIGlhcCk7CisJbmZz ZF9zYW5pdGl6ZV9hdHRycyhkZW50cnksIGlhcCk7CiAKIAkvKgogCSAqIFRoZSBzaXplIGNhc2Ug aXMgc3BlY2lhbCwgaXQgY2hhbmdlcyB0aGUgZmlsZSBpbiBhZGRpdGlvbiB0byB0aGUKZGlmZiAt LWdpdCBhL2ZzL25pbGZzMi9pbm9kZS5jIGIvZnMvbmlsZnMyL2lub2RlLmMKaW5kZXggMzFiNmIy OTUzYzU5Li44MGU2MWJhZDIxNWQgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pbm9kZS5jCisrKyBi L2ZzL25pbGZzMi9pbm9kZS5jCkBAIC04MzksNyArODM5LDcgQEAgaW50IG5pbGZzX3NldGF0dHIo c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKQogCXN0cnVjdCBzdXBl cl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlpbnQgZXJyOwogCi0JZXJyID0gaW5vZGVfY2hh bmdlX29rKGlub2RlLCBpYXR0cik7CisJZXJyID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0 dHIpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9m YW5vdGlmeS9mYW5vdGlmeS5jIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKaW5kZXgg N2U5NDhmZmJhNDYxLi4wNDM5ZjZjZGI5MzEgMTAwNjQ0Ci0tLSBhL2ZzL25vdGlmeS9mYW5vdGlm eS9mYW5vdGlmeS5jCisrKyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jCkBAIC02Nywx OCArNjcsNyBAQCBzdGF0aWMgaW50IGZhbm90aWZ5X2dldF9yZXNwb25zZShzdHJ1Y3QgZnNub3Rp ZnlfZ3JvdXAgKmdyb3VwLAogCiAJcHJfZGVidWcoIiVzOiBncm91cD0lcCBldmVudD0lcFxuIiwg X19mdW5jX18sIGdyb3VwLCBldmVudCk7CiAKLQl3YWl0X2V2ZW50KGdyb3VwLT5mYW5vdGlmeV9k YXRhLmFjY2Vzc193YWl0cSwgZXZlbnQtPnJlc3BvbnNlIHx8Ci0JCQkJYXRvbWljX3JlYWQoJmdy b3VwLT5mYW5vdGlmeV9kYXRhLmJ5cGFzc19wZXJtKSk7Ci0KLQlpZiAoIWV2ZW50LT5yZXNwb25z ZSkgewkvKiBieXBhc3NfcGVybSBzZXQgKi8KLQkJLyoKLQkJICogRXZlbnQgd2FzIGNhbmNlbGVk IGJlY2F1c2UgZ3JvdXAgaXMgYmVpbmcgZGVzdHJveWVkLiBSZW1vdmUKLQkJICogaXQgZnJvbSBn cm91cCdzIGV2ZW50IGxpc3QgYmVjYXVzZSB3ZSBhcmUgcmVzcG9uc2libGUgZm9yCi0JCSAqIGZy ZWVpbmcgdGhlIHBlcm1pc3Npb24gZXZlbnQuCi0JCSAqLwotCQlmc25vdGlmeV9yZW1vdmVfZXZl bnQoZ3JvdXAsICZldmVudC0+ZmFlLmZzZSk7Ci0JCXJldHVybiAwOwotCX0KKwl3YWl0X2V2ZW50 KGdyb3VwLT5mYW5vdGlmeV9kYXRhLmFjY2Vzc193YWl0cSwgZXZlbnQtPnJlc3BvbnNlKTsKIAog CS8qIHVzZXJzcGFjZSByZXNwb25kZWQsIGNvbnZlcnQgdG8gc29tZXRoaW5nIHVzYWJsZSAqLwog CXN3aXRjaCAoZXZlbnQtPnJlc3BvbnNlKSB7CmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3Rp ZnkvZmFub3RpZnlfdXNlci5jIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYwpp bmRleCBlYzUwYTgzODViMTMuLjM5NGRhNGRjNDVlMSAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2Zh bm90aWZ5L2Zhbm90aWZ5X3VzZXIuYworKysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlf dXNlci5jCkBAIC0zNTgsMTYgKzM1OCwyMCBAQCBzdGF0aWMgaW50IGZhbm90aWZ5X3JlbGVhc2Uo c3RydWN0IGlub2RlICppZ25vcmVkLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAogI2lmZGVmIENPTkZJ R19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlMKIAlzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVu dF9pbmZvICpldmVudCwgKm5leHQ7CisJc3RydWN0IGZzbm90aWZ5X2V2ZW50ICpmc25fZXZlbnQ7 CiAKIAkvKgotCSAqIFRoZXJlIG1heSBiZSBzdGlsbCBuZXcgZXZlbnRzIGFycml2aW5nIGluIHRo ZSBub3RpZmljYXRpb24gcXVldWUKLQkgKiBidXQgc2luY2UgdXNlcnNwYWNlIGNhbm5vdCB1c2Ug ZmFub3RpZnkgZmQgYW55bW9yZSwgbm8gZXZlbnQgY2FuCi0JICogZW50ZXIgb3IgbGVhdmUgYWNj ZXNzX2xpc3QgYnkgbm93LgorCSAqIFN0b3AgbmV3IGV2ZW50cyBmcm9tIGFycml2aW5nIGluIHRo ZSBub3RpZmljYXRpb24gcXVldWUuIHNpbmNlCisJICogdXNlcnNwYWNlIGNhbm5vdCB1c2UgZmFu b3RpZnkgZmQgYW55bW9yZSwgbm8gZXZlbnQgY2FuIGVudGVyIG9yCisJICogbGVhdmUgYWNjZXNz X2xpc3QgYnkgbm93IGVpdGhlci4KIAkgKi8KLQlzcGluX2xvY2soJmdyb3VwLT5mYW5vdGlmeV9k YXRhLmFjY2Vzc19sb2NrKTsKLQotCWF0b21pY19pbmMoJmdyb3VwLT5mYW5vdGlmeV9kYXRhLmJ5 cGFzc19wZXJtKTsKKwlmc25vdGlmeV9ncm91cF9zdG9wX3F1ZXVlaW5nKGdyb3VwKTsKIAorCS8q CisJICogUHJvY2VzcyBhbGwgcGVybWlzc2lvbiBldmVudHMgb24gYWNjZXNzX2xpc3QgYW5kIG5v dGlmaWNhdGlvbiBxdWV1ZQorCSAqIGFuZCBzaW11bGF0ZSByZXBseSBmcm9tIHVzZXJzcGFjZS4K KwkgKi8KKwlzcGluX2xvY2soJmdyb3VwLT5mYW5vdGlmeV9kYXRhLmFjY2Vzc19sb2NrKTsKIAls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZXZlbnQsIG5leHQsICZncm91cC0+ZmFub3RpZnlfZGF0 YS5hY2Nlc3NfbGlzdCwKIAkJCQkgZmFlLmZzZS5saXN0KSB7CiAJCXByX2RlYnVnKCIlczogZm91 bmQgZ3JvdXA9JXAgZXZlbnQ9JXBcbiIsIF9fZnVuY19fLCBncm91cCwKQEAgLTM3OSwxMiArMzgz LDIxIEBAIHN0YXRpYyBpbnQgZmFub3RpZnlfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlnbm9yZWQs IHN0cnVjdCBmaWxlICpmaWxlKQogCXNwaW5fdW5sb2NrKCZncm91cC0+ZmFub3RpZnlfZGF0YS5h Y2Nlc3NfbG9jayk7CiAKIAkvKgotCSAqIFNpbmNlIGJ5cGFzc19wZXJtIGlzIHNldCwgbmV3bHkg cXVldWVkIGV2ZW50cyB3aWxsIG5vdCB3YWl0IGZvcgotCSAqIGFjY2VzcyByZXNwb25zZS4gV2Fr ZSB1cCB0aGUgYWxyZWFkeSBzbGVlcGluZyBvbmVzIG5vdy4KLQkgKiBzeW5jaHJvbml6ZV9zcmN1 KCkgaW4gZnNub3RpZnlfZGVzdHJveV9ncm91cCgpIHdpbGwgd2FpdCBmb3IgYWxsCi0JICogcHJv Y2Vzc2VzIHNsZWVwaW5nIGluIGZhbm90aWZ5X2hhbmRsZV9ldmVudCgpIHdhaXRpbmcgZm9yIGFj Y2VzcwotCSAqIHJlc3BvbnNlIGFuZCB0aHVzIGFsc28gZm9yIGFsbCBwZXJtaXNzaW9uIGV2ZW50 cyB0byBiZSBmcmVlZC4KKwkgKiBEZXN0cm95IGFsbCBub24tcGVybWlzc2lvbiBldmVudHMuIEZv ciBwZXJtaXNzaW9uIGV2ZW50cyBqdXN0CisJICogZGVxdWV1ZSB0aGVtIGFuZCBzZXQgdGhlIHJl c3BvbnNlLiBUaGV5IHdpbGwgYmUgZnJlZWQgb25jZSB0aGUKKwkgKiByZXNwb25zZSBpcyBjb25z dW1lZCBhbmQgZmFub3RpZnlfZ2V0X3Jlc3BvbnNlKCkgcmV0dXJucy4KIAkgKi8KKwltdXRleF9s b2NrKCZncm91cC0+bm90aWZpY2F0aW9uX211dGV4KTsKKwl3aGlsZSAoIWZzbm90aWZ5X25vdGlm eV9xdWV1ZV9pc19lbXB0eShncm91cCkpIHsKKwkJZnNuX2V2ZW50ID0gZnNub3RpZnlfcmVtb3Zl X25vdGlmeV9ldmVudChncm91cCk7CisJCWlmICghKGZzbl9ldmVudC0+bWFzayAmIEZBTl9BTExf UEVSTV9FVkVOVFMpKQorCQkJZnNub3RpZnlfZGVzdHJveV9ldmVudChncm91cCwgZnNuX2V2ZW50 KTsKKwkJZWxzZQorCQkJRkFOT1RJRllfUEUoZnNuX2V2ZW50KS0+cmVzcG9uc2UgPSBGQU5fQUxM T1c7CisJfQorCW11dGV4X3VubG9jaygmZ3JvdXAtPm5vdGlmaWNhdGlvbl9tdXRleCk7CisKKwkv KiBSZXNwb25zZSBmb3IgYWxsIHBlcm1pc3Npb24gZXZlbnRzIGl0IHNldCwgd2FrZXVwIHdhaXRl cnMgKi8KIAl3YWtlX3VwKCZncm91cC0+ZmFub3RpZnlfZGF0YS5hY2Nlc3Nfd2FpdHEpOwogI2Vu ZGlmCiAKQEAgLTc0Miw3ICs3NTUsNiBAQCBTWVNDQUxMX0RFRklORTIoZmFub3RpZnlfaW5pdCwg dW5zaWduZWQgaW50LCBmbGFncywgdW5zaWduZWQgaW50LCBldmVudF9mX2ZsYWdzKQogCXNwaW5f bG9ja19pbml0KCZncm91cC0+ZmFub3RpZnlfZGF0YS5hY2Nlc3NfbG9jayk7CiAJaW5pdF93YWl0 cXVldWVfaGVhZCgmZ3JvdXAtPmZhbm90aWZ5X2RhdGEuYWNjZXNzX3dhaXRxKTsKIAlJTklUX0xJ U1RfSEVBRCgmZ3JvdXAtPmZhbm90aWZ5X2RhdGEuYWNjZXNzX2xpc3QpOwotCWF0b21pY19zZXQo Jmdyb3VwLT5mYW5vdGlmeV9kYXRhLmJ5cGFzc19wZXJtLCAwKTsKICNlbmRpZgogCXN3aXRjaCAo ZmxhZ3MgJiBGQU5fQUxMX0NMQVNTX0JJVFMpIHsKIAljYXNlIEZBTl9DTEFTU19OT1RJRjoKZGlm ZiAtLWdpdCBhL2ZzL25vdGlmeS9ncm91cC5jIGIvZnMvbm90aWZ5L2dyb3VwLmMKaW5kZXggYWQx OTk1OTgwNDU2Li5mM2UzMTg4ZjM1NjggMTAwNjQ0Ci0tLSBhL2ZzL25vdGlmeS9ncm91cC5jCisr KyBiL2ZzL25vdGlmeS9ncm91cC5jCkBAIC00MCw2ICs0MCwxNyBAQCB2b2lkIGZzbm90aWZ5X2Zp bmFsX2Rlc3Ryb3lfZ3JvdXAoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCkKIH0KIAogLyoK KyAqIFN0b3AgcXVldWVpbmcgbmV3IGV2ZW50cyBmb3IgdGhpcyBncm91cC4gT25jZSB0aGlzIGZ1 bmN0aW9uIHJldHVybnMKKyAqIGZzbm90aWZ5X2FkZF9ldmVudCgpIHdpbGwgbm90IGFkZCBhbnkg bmV3IGV2ZW50cyB0byB0aGUgZ3JvdXAncyBxdWV1ZS4KKyAqLwordm9pZCBmc25vdGlmeV9ncm91 cF9zdG9wX3F1ZXVlaW5nKHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXApCit7CisJbXV0ZXhf bG9jaygmZ3JvdXAtPm5vdGlmaWNhdGlvbl9tdXRleCk7CisJZ3JvdXAtPnNodXRkb3duID0gdHJ1 ZTsKKwltdXRleF91bmxvY2soJmdyb3VwLT5ub3RpZmljYXRpb25fbXV0ZXgpOworfQorCisvKgog ICogVHJ5aW5nIHRvIGdldCByaWQgb2YgYSBncm91cC4gUmVtb3ZlIGFsbCBtYXJrcywgZmx1c2gg YWxsIGV2ZW50cyBhbmQgcmVsZWFzZQogICogdGhlIGdyb3VwIHJlZmVyZW5jZS4KICAqIE5vdGUg dGhhdCBhbm90aGVyIHRocmVhZCBjYWxsaW5nIGZzbm90aWZ5X2NsZWFyX21hcmtzX2J5X2dyb3Vw KCkgbWF5IHN0aWxsCkBAIC00Nyw2ICs1OCwxNCBAQCB2b2lkIGZzbm90aWZ5X2ZpbmFsX2Rlc3Ry b3lfZ3JvdXAoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCkKICAqLwogdm9pZCBmc25vdGlm eV9kZXN0cm95X2dyb3VwKHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXApCiB7CisJLyoKKwkg KiBTdG9wIHF1ZXVlaW5nIG5ldyBldmVudHMuIFRoZSBjb2RlIGJlbG93IGlzIGNhcmVmdWwgZW5v dWdoIHRvIG5vdAorCSAqIHJlcXVpcmUgdGhpcyBidXQgZmFub3RpZnkgbmVlZHMgdG8gc3RvcCBx dWV1aW5nIGV2ZW50cyBldmVuIGJlZm9yZQorCSAqIGZzbm90aWZ5X2Rlc3Ryb3lfZ3JvdXAoKSBp cyBjYWxsZWQgYW5kIHRoaXMgbWFrZXMgdGhlIG90aGVyIGNhbGxlcnMKKwkgKiBvZiBmc25vdGlm eV9kZXN0cm95X2dyb3VwKCkgdG8gc2VlIHRoZSBzYW1lIGJlaGF2aW9yLgorCSAqLworCWZzbm90 aWZ5X2dyb3VwX3N0b3BfcXVldWVpbmcoZ3JvdXApOworCiAJLyogY2xlYXIgYWxsIGlub2RlIG1h cmtzIGZvciB0aGlzIGdyb3VwICovCiAJZnNub3RpZnlfY2xlYXJfbWFya3NfYnlfZ3JvdXAoZ3Jv dXApOwogCmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvbm90aWZpY2F0aW9uLmMgYi9mcy9ub3RpZnkv bm90aWZpY2F0aW9uLmMKaW5kZXggMjVhMDdjNzBmMWM5Li4xNjQ2ZmY1ZGNhNWMgMTAwNjQ0Ci0t LSBhL2ZzL25vdGlmeS9ub3RpZmljYXRpb24uYworKysgYi9mcy9ub3RpZnkvbm90aWZpY2F0aW9u LmMKQEAgLTgyLDcgKzgyLDggQEAgdm9pZCBmc25vdGlmeV9kZXN0cm95X2V2ZW50KHN0cnVjdCBm c25vdGlmeV9ncm91cCAqZ3JvdXAsCiAgKiBBZGQgYW4gZXZlbnQgdG8gdGhlIGdyb3VwIG5vdGlm aWNhdGlvbiBxdWV1ZS4gIFRoZSBncm91cCBjYW4gbGF0ZXIgcHVsbCB0aGlzCiAgKiBldmVudCBv ZmYgdGhlIHF1ZXVlIHRvIGRlYWwgd2l0aC4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIDAgaWYgdGhl IGV2ZW50IHdhcwogICogYWRkZWQgdG8gdGhlIHF1ZXVlLCAxIGlmIHRoZSBldmVudCB3YXMgbWVy Z2VkIHdpdGggc29tZSBvdGhlciBxdWV1ZWQgZXZlbnQsCi0gKiAyIGlmIHRoZSBxdWV1ZSBvZiBl dmVudHMgaGFzIG92ZXJmbG93bi4KKyAqIDIgaWYgdGhlIGV2ZW50IHdhcyBub3QgcXVldWVkIC0g ZWl0aGVyIHRoZSBxdWV1ZSBvZiBldmVudHMgaGFzIG92ZXJmbG93bgorICogb3IgdGhlIGdyb3Vw IGlzIHNodXR0aW5nIGRvd24uCiAgKi8KIGludCBmc25vdGlmeV9hZGRfbm90aWZ5X2V2ZW50KHN0 cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsCiAJCQkgICAgICBzdHJ1Y3QgZnNub3RpZnlfZXZl bnQgKmV2ZW50LApAQCAtOTYsNiArOTcsMTEgQEAgaW50IGZzbm90aWZ5X2FkZF9ub3RpZnlfZXZl bnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCwKIAogCW11dGV4X2xvY2soJmdyb3VwLT5u b3RpZmljYXRpb25fbXV0ZXgpOwogCisJaWYgKGdyb3VwLT5zaHV0ZG93bikgeworCQltdXRleF91 bmxvY2soJmdyb3VwLT5ub3RpZmljYXRpb25fbXV0ZXgpOworCQlyZXR1cm4gMjsKKwl9CisKIAlp ZiAoZ3JvdXAtPnFfbGVuID49IGdyb3VwLT5tYXhfZXZlbnRzKSB7CiAJCXJldCA9IDI7CiAJCS8q IFF1ZXVlIG92ZXJmbG93IGV2ZW50IG9ubHkgaWYgaXQgaXNuJ3QgYWxyZWFkeSBxdWV1ZWQgKi8K QEAgLTEyNiwyMSArMTMyLDYgQEAgcXVldWU6CiB9CiAKIC8qCi0gKiBSZW1vdmUgQGV2ZW50IGZy b20gZ3JvdXAncyBub3RpZmljYXRpb24gcXVldWUuIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBv ZgotICogdGhlIGNhbGxlciB0byBkZXN0cm95IHRoZSBldmVudC4KLSAqLwotdm9pZCBmc25vdGlm eV9yZW1vdmVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCwKLQkJCSAgIHN0cnVj dCBmc25vdGlmeV9ldmVudCAqZXZlbnQpCi17Ci0JbXV0ZXhfbG9jaygmZ3JvdXAtPm5vdGlmaWNh dGlvbl9tdXRleCk7Ci0JaWYgKCFsaXN0X2VtcHR5KCZldmVudC0+bGlzdCkpIHsKLQkJbGlzdF9k ZWxfaW5pdCgmZXZlbnQtPmxpc3QpOwotCQlncm91cC0+cV9sZW4tLTsKLQl9Ci0JbXV0ZXhfdW5s b2NrKCZncm91cC0+bm90aWZpY2F0aW9uX211dGV4KTsKLX0KLQotLyoKICAqIFJlbW92ZSBhbmQg cmV0dXJuIHRoZSBmaXJzdCBldmVudCBmcm9tIHRoZSBub3RpZmljYXRpb24gbGlzdC4gIEl0IGlz IHRoZQogICogcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0byBkZXN0cm95IHRoZSBvYnRh aW5lZCBldmVudAogICovCmRpZmYgLS1naXQgYS9mcy9udGZzL2lub2RlLmMgYi9mcy9udGZzL2lu b2RlLmMKaW5kZXggZjQ3YWY1ZTZlMjMwLi5hNTU4OTQ3MDM3M2YgMTAwNjQ0Ci0tLSBhL2ZzL250 ZnMvaW5vZGUuYworKysgYi9mcy9udGZzL2lub2RlLmMKQEAgLTI4OTEsNyArMjg5MSw3IEBAIGlu dCBudGZzX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIp CiAJaW50IGVycjsKIAl1bnNpZ25lZCBpbnQgaWFfdmFsaWQgPSBhdHRyLT5pYV92YWxpZDsKIAot CWVyciA9IGlub2RlX2NoYW5nZV9vayh2aSwgYXR0cik7CisJZXJyID0gc2V0YXR0cl9wcmVwYXJl KGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAJLyogV2UgZG8gbm90IHN1 cHBvcnQgTlRGUyBBQ0xzIHlldC4gKi8KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2FjbC5jIGIvZnMv b2NmczIvYWNsLmMKaW5kZXggN2Y5ZTQ0ODRjNmY2Li4yOTNhYjgwZjNmZTIgMTAwNjQ0Ci0tLSBh L2ZzL29jZnMyL2FjbC5jCisrKyBiL2ZzL29jZnMyL2FjbC5jCkBAIC0yNDEsMTQgKzI0MSwxMSBA QCBpbnQgb2NmczJfc2V0X2FjbChoYW5kbGVfdCAqaGFuZGxlLAogCWNhc2UgQUNMX1RZUEVfQUND RVNTOgogCQluYW1lX2luZGV4ID0gT0NGUzJfWEFUVFJfSU5ERVhfUE9TSVhfQUNMX0FDQ0VTUzsK IAkJaWYgKGFjbCkgewotCQkJdW1vZGVfdCBtb2RlID0gaW5vZGUtPmlfbW9kZTsKLQkJCXJldCA9 IHBvc2l4X2FjbF9lcXVpdl9tb2RlKGFjbCwgJm1vZGUpOwotCQkJaWYgKHJldCA8IDApCisJCQl1 bW9kZV90IG1vZGU7CisJCQlyZXQgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUoaW5vZGUsICZtb2Rl LCAmYWNsKTsKKwkJCWlmIChyZXQpCiAJCQkJcmV0dXJuIHJldDsKIAkJCWVsc2UgewotCQkJCWlm IChyZXQgPT0gMCkKLQkJCQkJYWNsID0gTlVMTDsKLQogCQkJCXJldCA9IG9jZnMyX2FjbF9zZXRf bW9kZShpbm9kZSwgZGlfYmgsCiAJCQkJCQkJIGhhbmRsZSwgbW9kZSk7CiAJCQkJaWYgKHJldCkK ZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbS9kbG1jb252ZXJ0LmMgYi9mcy9vY2ZzMi9kbG0vZGxt Y29udmVydC5jCmluZGV4IGY5MDkzMTMzNWM2Yi4uMmUxMTY1ODY3NmViIDEwMDY0NAotLS0gYS9m cy9vY2ZzMi9kbG0vZGxtY29udmVydC5jCisrKyBiL2ZzL29jZnMyL2RsbS9kbG1jb252ZXJ0LmMK QEAgLTI2Miw3ICsyNjIsNiBAQCBlbnVtIGRsbV9zdGF0dXMgZGxtY29udmVydF9yZW1vdGUoc3Ry dWN0IGRsbV9jdHh0ICpkbG0sCiAJCQkJICBzdHJ1Y3QgZGxtX2xvY2sgKmxvY2ssIGludCBmbGFn cywgaW50IHR5cGUpCiB7CiAJZW51bSBkbG1fc3RhdHVzIHN0YXR1czsKLQl1OCBvbGRfb3duZXIg PSByZXMtPm93bmVyOwogCiAJbWxvZygwLCAidHlwZT0lZCwgY29udmVydF90eXBlPSVkLCBidXN5 PSVkXG4iLCBsb2NrLT5tbC50eXBlLAogCSAgICAgbG9jay0+bWwuY29udmVydF90eXBlLCByZXMt PnN0YXRlICYgRExNX0xPQ0tfUkVTX0lOX1BST0dSRVNTKTsKQEAgLTMyOSw3ICszMjgsNiBAQCBl bnVtIGRsbV9zdGF0dXMgZGxtY29udmVydF9yZW1vdGUoc3RydWN0IGRsbV9jdHh0ICpkbG0sCiAK IAlzcGluX2xvY2soJnJlcy0+c3BpbmxvY2spOwogCXJlcy0+c3RhdGUgJj0gfkRMTV9MT0NLX1JF U19JTl9QUk9HUkVTUzsKLQlsb2NrLT5jb252ZXJ0X3BlbmRpbmcgPSAwOwogCS8qIGlmIGl0IGZh aWxlZCwgbW92ZSBpdCBiYWNrIHRvIGdyYW50ZWQgcXVldWUuCiAJICogaWYgbWFzdGVyIHJldHVy bnMgRExNX05PUk1BTCBhbmQgdGhlbiBkb3duIGJlZm9yZSBzZW5kaW5nIGFzdCwKIAkgKiBpdCBt YXkgaGF2ZSBhbHJlYWR5IGJlZW4gbW92ZWQgdG8gZ3JhbnRlZCBxdWV1ZSwgcmVzZXQgdG8KQEAg LTMzOCwxMiArMzM2LDE0IEBAIGVudW0gZGxtX3N0YXR1cyBkbG1jb252ZXJ0X3JlbW90ZShzdHJ1 Y3QgZGxtX2N0eHQgKmRsbSwKIAkJaWYgKHN0YXR1cyAhPSBETE1fTk9UUVVFVUVEKQogCQkJZGxt X2Vycm9yKHN0YXR1cyk7CiAJCWRsbV9yZXZlcnRfcGVuZGluZ19jb252ZXJ0KHJlcywgbG9jayk7 Ci0JfSBlbHNlIGlmICgocmVzLT5zdGF0ZSAmIERMTV9MT0NLX1JFU19SRUNPVkVSSU5HKSB8fAot CQkJKG9sZF9vd25lciAhPSByZXMtPm93bmVyKSkgewotCQltbG9nKDAsICJyZXMgJS4qcyBpcyBp biByZWNvdmVyaW5nIG9yIGhhcyBiZWVuIHJlY292ZXJlZC5cbiIsCi0JCQkJcmVzLT5sb2NrbmFt ZS5sZW4sIHJlcy0+bG9ja25hbWUubmFtZSk7CisJfSBlbHNlIGlmICghbG9jay0+Y29udmVydF9w ZW5kaW5nKSB7CisJCW1sb2coMCwgIiVzOiByZXMgJS4qcywgb3duZXIgZGllZCBhbmQgbG9jayBo YXMgYmVlbiBtb3ZlZCBiYWNrICIKKwkJCQkidG8gZ3JhbnRlZCBsaXN0LCByZXRyeSBjb252ZXJ0 LlxuIiwKKwkJCQlkbG0tPm5hbWUsIHJlcy0+bG9ja25hbWUubGVuLCByZXMtPmxvY2tuYW1lLm5h bWUpOwogCQlzdGF0dXMgPSBETE1fUkVDT1ZFUklORzsKIAl9CisKKwlsb2NrLT5jb252ZXJ0X3Bl bmRpbmcgPSAwOwogYmFpbDoKIAlzcGluX3VubG9jaygmcmVzLT5zcGlubG9jayk7CiAKZGlmZiAt LWdpdCBhL2ZzL29jZnMyL2RsbWZzL2RsbWZzLmMgYi9mcy9vY2ZzMi9kbG1mcy9kbG1mcy5jCmlu ZGV4IDA5YjdkOWRhYzcxZC4uNGQxMjlkZmNjMWM3IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9kbG1m cy9kbG1mcy5jCisrKyBiL2ZzL29jZnMyL2RsbWZzL2RsbWZzLmMKQEAgLTIxMSw3ICsyMTEsNyBA QCBzdGF0aWMgaW50IGRsbWZzX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0 cnVjdCBpYXR0ciAqYXR0cikKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2Rl OwogCiAJYXR0ci0+aWFfdmFsaWQgJj0gfkFUVFJfU0laRTsKLQllcnJvciA9IGlub2RlX2NoYW5n ZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRy KTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMvb2NmczIv ZmlsZS5jIGIvZnMvb2NmczIvZmlsZS5jCmluZGV4IGZkMTA2ZDEzNjk4My4uY2QzYjA2ZjYwMGEy IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9maWxlLmMKKysrIGIvZnMvb2NmczIvZmlsZS5jCkBAIC0x MTQ0LDcgKzExNDQsNyBAQCBpbnQgb2NmczJfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnks IHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpZiAoIShhdHRyLT5pYV92YWxpZCAmIE9DRlMyX1ZBTElE X0FUVFJTKSkKIAkJcmV0dXJuIDA7CiAKLQlzdGF0dXMgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUs IGF0dHIpOworCXN0YXR1cyA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChz dGF0dXMpCiAJCXJldHVybiBzdGF0dXM7CiAKQEAgLTE1MTYsNyArMTUxNiw4IEBAIHN0YXRpYyBp bnQgb2NmczJfemVyb19wYXJ0aWFsX2NsdXN0ZXJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQkJ ICAgICAgIHU2NCBzdGFydCwgdTY0IGxlbikKIHsKIAlpbnQgcmV0ID0gMDsKLQl1NjQgdG1wZW5k LCBlbmQgPSBzdGFydCArIGxlbjsKKwl1NjQgdG1wZW5kID0gMDsKKwl1NjQgZW5kID0gc3RhcnQg KyBsZW47CiAJc3RydWN0IG9jZnMyX3N1cGVyICpvc2IgPSBPQ0ZTMl9TQihpbm9kZS0+aV9zYik7 CiAJdW5zaWduZWQgaW50IGNzaXplID0gb3NiLT5zX2NsdXN0ZXJzaXplOwogCWhhbmRsZV90ICpo YW5kbGU7CkBAIC0xNTQ4LDE4ICsxNTQ5LDMxIEBAIHN0YXRpYyBpbnQgb2NmczJfemVyb19wYXJ0 aWFsX2NsdXN0ZXJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJfQogCiAJLyoKLQkgKiBXZSB3YW50 IHRvIGdldCB0aGUgYnl0ZSBvZmZzZXQgb2YgdGhlIGVuZCBvZiB0aGUgMXN0IGNsdXN0ZXIuCisJ ICogSWYgc3RhcnQgaXMgb24gYSBjbHVzdGVyIGJvdW5kYXJ5IGFuZCBlbmQgaXMgc29tZXdoZXJl IGluIGFub3RoZXIKKwkgKiBjbHVzdGVyLCB3ZSBoYXZlIG5vdCBDT1dlZCB0aGUgY2x1c3RlciBz dGFydGluZyBhdCBzdGFydCwgdW5sZXNzCisJICogZW5kIGlzIGFsc28gd2l0aGluIHRoZSBzYW1l IGNsdXN0ZXIuIFNvLCBpbiB0aGlzIGNhc2UsIHdlIHNraXAgdGhpcworCSAqIGZpcnN0IGNhbGwg dG8gb2NmczJfemVyb19yYW5nZV9mb3JfdHJ1bmNhdGUoKSB0cnVuY2F0ZSBhbmQgbW92ZSBvbgor CSAqIHRvIHRoZSBuZXh0IG9uZS4KIAkgKi8KLQl0bXBlbmQgPSAodTY0KW9zYi0+c19jbHVzdGVy c2l6ZSArIChzdGFydCAmIH4ob3NiLT5zX2NsdXN0ZXJzaXplIC0gMSkpOwotCWlmICh0bXBlbmQg PiBlbmQpCi0JCXRtcGVuZCA9IGVuZDsKKwlpZiAoKHN0YXJ0ICYgKGNzaXplIC0gMSkpICE9IDAp IHsKKwkJLyoKKwkJICogV2Ugd2FudCB0byBnZXQgdGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZSBlbmQg b2YgdGhlIDFzdAorCQkgKiBjbHVzdGVyLgorCQkgKi8KKwkJdG1wZW5kID0gKHU2NClvc2ItPnNf Y2x1c3RlcnNpemUgKworCQkJKHN0YXJ0ICYgfihvc2ItPnNfY2x1c3RlcnNpemUgLSAxKSk7CisJ CWlmICh0bXBlbmQgPiBlbmQpCisJCQl0bXBlbmQgPSBlbmQ7CiAKLQl0cmFjZV9vY2ZzMl96ZXJv X3BhcnRpYWxfY2x1c3RlcnNfcmFuZ2UxKCh1bnNpZ25lZCBsb25nIGxvbmcpc3RhcnQsCi0JCQkJ CQkgKHVuc2lnbmVkIGxvbmcgbG9uZyl0bXBlbmQpOworCQl0cmFjZV9vY2ZzMl96ZXJvX3BhcnRp YWxfY2x1c3RlcnNfcmFuZ2UxKAorCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylzdGFydCwKKwkJCSh1 bnNpZ25lZCBsb25nIGxvbmcpdG1wZW5kKTsKIAotCXJldCA9IG9jZnMyX3plcm9fcmFuZ2VfZm9y X3RydW5jYXRlKGlub2RlLCBoYW5kbGUsIHN0YXJ0LCB0bXBlbmQpOwotCWlmIChyZXQpCi0JCW1s b2dfZXJybm8ocmV0KTsKKwkJcmV0ID0gb2NmczJfemVyb19yYW5nZV9mb3JfdHJ1bmNhdGUoaW5v ZGUsIGhhbmRsZSwgc3RhcnQsCisJCQkJCQkgICAgdG1wZW5kKTsKKwkJaWYgKHJldCkKKwkJCW1s b2dfZXJybm8ocmV0KTsKKwl9CiAKIAlpZiAodG1wZW5kIDwgZW5kKSB7CiAJCS8qCmRpZmYgLS1n aXQgYS9mcy9vbWZzL2ZpbGUuYyBiL2ZzL29tZnMvZmlsZS5jCmluZGV4IDkwMmU4ODUyN2ZjZS4u YjUzZjA2MDJjYzAzIDEwMDY0NAotLS0gYS9mcy9vbWZzL2ZpbGUuYworKysgYi9mcy9vbWZzL2Zp bGUuYwpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyBpbnQgb21mc19zZXRhdHRyKHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXN0cnVjdCBpbm9kZSAqaW5vZGUg PSBkZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vf b2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7 CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL2ZzL3Bvc2l4X2Fj bC5jIGIvZnMvcG9zaXhfYWNsLmMKaW5kZXggYjFjMjQ5MTE1YWFhLi5hNzY3YzU5NGYxN2EgMTAw NjQ0Ci0tLSBhL2ZzL3Bvc2l4X2FjbC5jCisrKyBiL2ZzL3Bvc2l4X2FjbC5jCkBAIC01OTQsNiAr NTk0LDM3IEBAIG5vX2FjbDoKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBvc2l4X2FjbF9jcmVhdGUp OwogCisvKioKKyAqIHBvc2l4X2FjbF91cGRhdGVfbW9kZSAgLSAgdXBkYXRlIG1vZGUgaW4gc2V0 X2FjbAorICoKKyAqIFVwZGF0ZSB0aGUgZmlsZSBtb2RlIHdoZW4gc2V0dGluZyBhbiBBQ0w6IGNv bXB1dGUgdGhlIG5ldyBmaWxlIHBlcm1pc3Npb24KKyAqIGJpdHMgYmFzZWQgb24gdGhlIEFDTC4g IEluIGFkZGl0aW9uLCBpZiB0aGUgQUNMIGlzIGVxdWl2YWxlbnQgdG8gdGhlIG5ldworICogZmls ZSBtb2RlLCBzZXQgKmFjbCB0byBOVUxMIHRvIGluZGljYXRlIHRoYXQgbm8gQUNMIHNob3VsZCBi ZSBzZXQuCisgKgorICogQXMgd2l0aCBjaG1vZCwgY2xlYXIgdGhlIHNldGdpdCBiaXQgaWYgdGhl IGNhbGxlciBpcyBub3QgaW4gdGhlIG93bmluZyBncm91cAorICogb3IgY2FwYWJsZSBvZiBDQVBf RlNFVElEIChzZWUgaW5vZGVfY2hhbmdlX29rKS4KKyAqCisgKiBDYWxsZWQgZnJvbSBzZXRfYWNs IGlub2RlIG9wZXJhdGlvbnMuCisgKi8KK2ludCBwb3NpeF9hY2xfdXBkYXRlX21vZGUoc3RydWN0 IGlub2RlICppbm9kZSwgdW1vZGVfdCAqbW9kZV9wLAorCQkJICBzdHJ1Y3QgcG9zaXhfYWNsICoq YWNsKQoreworCXVtb2RlX3QgbW9kZSA9IGlub2RlLT5pX21vZGU7CisJaW50IGVycm9yOworCisJ ZXJyb3IgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZSgqYWNsLCAmbW9kZSk7CisJaWYgKGVycm9yIDwg MCkKKwkJcmV0dXJuIGVycm9yOworCWlmIChlcnJvciA9PSAwKQorCQkqYWNsID0gTlVMTDsKKwlp ZiAoIWluX2dyb3VwX3AoaW5vZGUtPmlfZ2lkKSAmJgorCSAgICAhY2FwYWJsZV93cnRfaW5vZGVf dWlkZ2lkKGlub2RlLCBDQVBfRlNFVElEKSkKKwkJbW9kZSAmPSB+U19JU0dJRDsKKwkqbW9kZV9w ID0gbW9kZTsKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0wocG9zaXhfYWNsX3VwZGF0ZV9t b2RlKTsKKwogLyoKICAqIEZpeCB1cCB0aGUgdWlkcyBhbmQgZ2lkcyBpbiBwb3NpeCBhY2wgZXh0 ZW5kZWQgYXR0cmlidXRlcyBpbiBwbGFjZS4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvcHJvYy9iYXNl LmMgYi9mcy9wcm9jL2Jhc2UuYwppbmRleCAwODk3ZjVjYjQ5NTcuLjk0NGM2YmU1ODE5OSAxMDA2 NDQKLS0tIGEvZnMvcHJvYy9iYXNlLmMKKysrIGIvZnMvcHJvYy9iYXNlLmMKQEAgLTUzNiw3ICs1 MzYsNyBAQCBpbnQgcHJvY19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlh dHRyICphdHRyKQogCWlmIChhdHRyLT5pYV92YWxpZCAmIEFUVFJfTU9ERSkKIAkJcmV0dXJuIC1F UEVSTTsKIAotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9 IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVy cm9yOwogCmRpZmYgLS1naXQgYS9mcy9wcm9jL2dlbmVyaWMuYyBiL2ZzL3Byb2MvZ2VuZXJpYy5j CmluZGV4IGMxOGQ5YjA1Y2VhOS4uZDk1YzY4NjhiNWY1IDEwMDY0NAotLS0gYS9mcy9wcm9jL2dl bmVyaWMuYworKysgYi9mcy9wcm9jL2dlbmVyaWMuYwpAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMg aW50IHByb2Nfbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0 ciAqaWF0dHIpCiAJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkZSA9IFBERShpbm9kZSk7CiAJaW50 IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGlhdHRyKTsKKwllcnJv ciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVy biBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMvcHJvYy9wcm9jX3N5c2N0bC5jIGIvZnMvcHJvYy9w cm9jX3N5c2N0bC5jCmluZGV4IGI0NWRiMWRkYjhlMC4uNzI4YzQ2NTcxODhmIDEwMDY0NAotLS0g YS9mcy9wcm9jL3Byb2Nfc3lzY3RsLmMKKysrIGIvZnMvcHJvYy9wcm9jX3N5c2N0bC5jCkBAIC03 NTMsNyArNzUzLDcgQEAgc3RhdGljIGludCBwcm9jX3N5c19zZXRhdHRyKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCWlmIChhdHRyLT5pYV92YWxpZCAmIChBVFRS X01PREUgfCBBVFRSX1VJRCB8IEFUVFJfR0lEKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWVycm9y ID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFy ZShkZW50cnksIGF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCmRpZmYgLS1n aXQgYS9mcy9yYW1mcy9maWxlLW5vbW11LmMgYi9mcy9yYW1mcy9maWxlLW5vbW11LmMKaW5kZXgg ZGRhMDEyYWQ0MjA4Li5hNmI2MDgzMTc2ZDMgMTAwNjQ0Ci0tLSBhL2ZzL3JhbWZzL2ZpbGUtbm9t bXUuYworKysgYi9mcy9yYW1mcy9maWxlLW5vbW11LmMKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0 aWMgaW50IHJhbWZzX25vbW11X3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qg aWF0dHIgKmlhKQogCWludCByZXQgPSAwOwogCiAJLyogUE9TSVggVUlEL0dJRCB2ZXJpZmljYXRp b24gZm9yIHNldHRpbmcgaW5vZGUgYXR0cmlidXRlcyAqLwotCXJldCA9IGlub2RlX2NoYW5nZV9v ayhpbm9kZSwgaWEpOworCXJldCA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhKTsKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9pbm9kZS5jIGIv ZnMvcmVpc2VyZnMvaW5vZGUuYwppbmRleCA2M2IyYjBlYzQ5ZTYuLjI3YjQwMmUwNWFhMiAxMDA2 NDQKLS0tIGEvZnMvcmVpc2VyZnMvaW5vZGUuYworKysgYi9mcy9yZWlzZXJmcy9pbm9kZS5jCkBA IC0zMzEyLDcgKzMzMTIsNyBAQCBpbnQgcmVpc2VyZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAl1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAJaW50 IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9y ID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4g ZXJyb3I7CiAKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL3hhdHRyX2FjbC5jIGIvZnMvcmVpc2Vy ZnMveGF0dHJfYWNsLmMKaW5kZXggNDQ1MDNlMjkzNzkwLi43MDcxYzIyMzBhOTIgMTAwNjQ0Ci0t LSBhL2ZzL3JlaXNlcmZzL3hhdHRyX2FjbC5jCisrKyBiL2ZzL3JlaXNlcmZzL3hhdHRyX2FjbC5j CkBAIC0yNDYsMTMgKzI0Niw5IEBAIF9fcmVpc2VyZnNfc2V0X2FjbChzdHJ1Y3QgcmVpc2VyZnNf dHJhbnNhY3Rpb25faGFuZGxlICp0aCwgc3RydWN0IGlub2RlICppbm9kZSwKIAljYXNlIEFDTF9U WVBFX0FDQ0VTUzoKIAkJbmFtZSA9IFBPU0lYX0FDTF9YQVRUUl9BQ0NFU1M7CiAJCWlmIChhY2wp IHsKLQkJCWVycm9yID0gcG9zaXhfYWNsX2VxdWl2X21vZGUoYWNsLCAmaW5vZGUtPmlfbW9kZSk7 Ci0JCQlpZiAoZXJyb3IgPCAwKQorCQkJZXJyb3IgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUoaW5v ZGUsICZpbm9kZS0+aV9tb2RlLCAmYWNsKTsKKwkJCWlmIChlcnJvcikKIAkJCQlyZXR1cm4gZXJy b3I7Ci0JCQllbHNlIHsKLQkJCQlpZiAoZXJyb3IgPT0gMCkKLQkJCQkJYWNsID0gTlVMTDsKLQkJ CX0KIAkJfQogCQlicmVhazsKIAljYXNlIEFDTF9UWVBFX0RFRkFVTFQ6CmRpZmYgLS1naXQgYS9m cy9zZXFfZmlsZS5jIGIvZnMvc2VxX2ZpbGUuYwppbmRleCAzODU3YjcyMGNiMWIuLmZiYjE2ODhi ZmY4NyAxMDA2NDQKLS0tIGEvZnMvc2VxX2ZpbGUuYworKysgYi9mcy9zZXFfZmlsZS5jCkBAIC0y MTksOCArMjE5LDEwIEBAIHNzaXplX3Qgc2VxX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIg X191c2VyICpidWYsIHNpemVfdCBzaXplLCBsb2ZmX3QgKnBwb3MpCiAJCXNpemUgLT0gbjsKIAkJ YnVmICs9IG47CiAJCWNvcGllZCArPSBuOwotCQlpZiAoIW0tPmNvdW50KQorCQlpZiAoIW0tPmNv dW50KSB7CisJCQltLT5mcm9tID0gMDsKIAkJCW0tPmluZGV4Kys7CisJCX0KIAkJaWYgKCFzaXpl KQogCQkJZ290byBEb25lOwogCX0KZGlmZiAtLWdpdCBhL2ZzL3N5c3YvZmlsZS5jIGIvZnMvc3lz di9maWxlLmMKaW5kZXggYjAwODExYzc1YjI0Li4zYmI0Y2NkNjk3MzEgMTAwNjQ0Ci0tLSBhL2Zz L3N5c3YvZmlsZS5jCisrKyBiL2ZzL3N5c3YvZmlsZS5jCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRp YyBpbnQgc3lzdl9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICph dHRyKQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9y OwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0 YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7 CiAKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2ZpbGUuYyBiL2ZzL3ViaWZzL2ZpbGUuYwppbmRleCBk MzcxNDBlNWI3MjIuLjY4ZDdmZTg1N2JhOSAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvZmlsZS5jCisr KyBiL2ZzL3ViaWZzL2ZpbGUuYwpAQCAtMTI2Miw3ICsxMjYyLDcgQEAgaW50IHViaWZzX3NldGF0 dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAKIAlkYmdfZ2Vu KCJpbm8gJWx1LCBtb2RlICUjeCwgaWFfdmFsaWQgJSN4IiwKIAkJaW5vZGUtPmlfaW5vLCBpbm9k ZS0+aV9tb2RlLCBhdHRyLT5pYV92YWxpZCk7Ci0JZXJyID0gaW5vZGVfY2hhbmdlX29rKGlub2Rl LCBhdHRyKTsKKwllcnIgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJy KQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9mcy91Ymlmcy90bmNfY29tbWl0LmMgYi9m cy91Ymlmcy90bmNfY29tbWl0LmMKaW5kZXggMzYwMDk5NGY4NDExLi4xNTEyZjM0OTA4NDggMTAw NjQ0Ci0tLSBhL2ZzL3ViaWZzL3RuY19jb21taXQuYworKysgYi9mcy91Ymlmcy90bmNfY29tbWl0 LmMKQEAgLTM3MCw3ICszNzAsNyBAQCBzdGF0aWMgaW50IGxheW91dF9pbl9nYXBzKHN0cnVjdCB1 Ymlmc19pbmZvICpjLCBpbnQgY250KQogCiAJcCA9IGMtPmdhcF9sZWJzOwogCWRvIHsKLQkJdWJp ZnNfYXNzZXJ0KHAgPCBjLT5nYXBfbGVicyArIHNpemVvZihpbnQpICogYy0+bHN0LmlkeF9sZWJz KTsKKwkJdWJpZnNfYXNzZXJ0KHAgPCBjLT5nYXBfbGVicyArIGMtPmxzdC5pZHhfbGVicyk7CiAJ CXdyaXR0ZW4gPSBsYXlvdXRfbGViX2luX2dhcHMoYywgcCk7CiAJCWlmICh3cml0dGVuIDwgMCkg ewogCQkJZXJyID0gd3JpdHRlbjsKZGlmZiAtLWdpdCBhL2ZzL3VkZi9maWxlLmMgYi9mcy91ZGYv ZmlsZS5jCmluZGV4IGQ4MDczOGZkZjQyNC4uMWFhZjYzYTVmMzJmIDEwMDY0NAotLS0gYS9mcy91 ZGYvZmlsZS5jCisrKyBiL2ZzL3VkZi9maWxlLmMKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMg aW50IHVkZl9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRy KQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9yOwog Ci0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0 cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAK ZGlmZiAtLWdpdCBhL2ZzL3Vmcy90cnVuY2F0ZS5jIGIvZnMvdWZzL3RydW5jYXRlLmMKaW5kZXgg ZjA0Zjg5ZmJkNGQ5Li45MmNkZTk5OGFlYWQgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy90cnVuY2F0ZS5j CisrKyBiL2ZzL3Vmcy90cnVuY2F0ZS5jCkBAIC00OTYsNyArNDk2LDcgQEAgaW50IHVmc19zZXRh dHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXVuc2lnbmVk IGludCBpYV92YWxpZCA9IGF0dHItPmlhX3ZhbGlkOwogCWludCBlcnJvcjsKIAotCWVycm9yID0g aW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShk ZW50cnksIGF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCmRpZmYgLS1naXQg YS9mcy91dGltZXMuYyBiL2ZzL3V0aW1lcy5jCmluZGV4IGFhMTM4ZDY0NTYwYS4uNjFhYmMzMDUx Mzc3IDEwMDY0NAotLS0gYS9mcy91dGltZXMuYworKysgYi9mcy91dGltZXMuYwpAQCAtODEsNyAr ODEsNyBAQCBzdGF0aWMgaW50IHV0aW1lc19jb21tb24oc3RydWN0IHBhdGggKnBhdGgsIHN0cnVj dCB0aW1lc3BlYyAqdGltZXMpCiAJCQluZXdhdHRycy5pYV92YWxpZCB8PSBBVFRSX01USU1FX1NF VDsKIAkJfQogCQkvKgotCQkgKiBUZWxsIGlub2RlX2NoYW5nZV9vaygpLCB0aGF0IHRoaXMgaXMg YW4gZXhwbGljaXQgdGltZQorCQkgKiBUZWxsIHNldGF0dHJfcHJlcGFyZSgpLCB0aGF0IHRoaXMg aXMgYW4gZXhwbGljaXQgdGltZQogCQkgKiB1cGRhdGUsIGV2ZW4gaWYgbmVpdGhlciBBVFRSX0FU SU1FX1NFVCBub3IgQVRUUl9NVElNRV9TRVQKIAkJICogd2VyZSB1c2VkLgogCQkgKi8KQEAgLTkw LDcgKzkwLDcgQEAgc3RhdGljIGludCB1dGltZXNfY29tbW9uKHN0cnVjdCBwYXRoICpwYXRoLCBz dHJ1Y3QgdGltZXNwZWMgKnRpbWVzKQogCQkvKgogCQkgKiBJZiB0aW1lcyBpcyBOVUxMIChvciBi b3RoIHRpbWVzIGFyZSBVVElNRV9OT1cpLAogCQkgKiB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgcGVy bWlzc2lvbnMsIGJlY2F1c2UKLQkJICogaW5vZGVfY2hhbmdlX29rKCkgd29uJ3QgZG8gaXQuCisJ CSAqIHNldGF0dHJfcHJlcGFyZSgpIHdvbid0IGRvIGl0LgogCQkgKi8KIAkJZXJyb3IgPSAtRUFD Q0VTOwogICAgICAgICAgICAgICAgIGlmIChJU19JTU1VVEFCTEUoaW5vZGUpKQpkaWZmIC0tZ2l0 IGEvZnMveGZzL3hmc19hY2wuYyBiL2ZzL3hmcy94ZnNfYWNsLmMKaW5kZXggNjg4OGFkODg2ZmY2 Li5kMTIyOTAzM2EyMmYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYWNsLmMKKysrIGIvZnMveGZz L3hmc19hY2wuYwpAQCAtMjQ0LDcgKzI0NCw4IEBAIHhmc19zZXRfbW9kZShzdHJ1Y3QgaW5vZGUg Kmlub2RlLCB1bW9kZV90IG1vZGUpCiAJCWlhdHRyLmlhX21vZGUgPSBtb2RlOwogCQlpYXR0ci5p YV9jdGltZSA9IGN1cnJlbnRfZnNfdGltZShpbm9kZS0+aV9zYik7CiAKLQkJZXJyb3IgPSAteGZz X3NldGF0dHJfbm9uc2l6ZShYRlNfSShpbm9kZSksICZpYXR0ciwgWEZTX0FUVFJfTk9BQ0wpOwor CQllcnJvciA9IC14ZnNfc2V0YXR0cl9ub25zaXplKE5VTEwsIFhGU19JKGlub2RlKSwgJmlhdHRy LAorCQkJCQkgICAgIFhGU19BVFRSX05PQUNMKTsKIAl9CiAKIAlyZXR1cm4gZXJyb3I7CkBAIC0y ODYsMTYgKzI4NywxMSBAQCB4ZnNfc2V0X2FjbChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg cG9zaXhfYWNsICphY2wsIGludCB0eXBlKQogCQlyZXR1cm4gZXJyb3I7CiAKIAlpZiAodHlwZSA9 PSBBQ0xfVFlQRV9BQ0NFU1MpIHsKLQkJdW1vZGVfdCBtb2RlID0gaW5vZGUtPmlfbW9kZTsKLQkJ ZXJyb3IgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZtb2RlKTsKLQotCQlpZiAoZXJyb3Ig PD0gMCkgewotCQkJYWNsID0gTlVMTDsKLQotCQkJaWYgKGVycm9yIDwgMCkKLQkJCQlyZXR1cm4g ZXJyb3I7Ci0JCX0KKwkJdW1vZGVfdCBtb2RlOwogCisJCWVycm9yID0gcG9zaXhfYWNsX3VwZGF0 ZV9tb2RlKGlub2RlLCAmbW9kZSwgJmFjbCk7CisJCWlmIChlcnJvcikKKwkJCXJldHVybiBlcnJv cjsKIAkJZXJyb3IgPSB4ZnNfc2V0X21vZGUoaW5vZGUsIG1vZGUpOwogCQlpZiAoZXJyb3IpCiAJ CQlyZXR1cm4gZXJyb3I7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2ZpbGUuYyBiL2ZzL3hmcy94 ZnNfZmlsZS5jCmluZGV4IGQyZjRjYjU5OGI0Ni4uZWIwNDk4MWIwM2I0IDEwMDY0NAotLS0gYS9m cy94ZnMveGZzX2ZpbGUuYworKysgYi9mcy94ZnMveGZzX2ZpbGUuYwpAQCAtODYyLDcgKzg2Miw3 IEBAIHhmc19maWxlX2ZhbGxvY2F0ZSgKIAogCQlpYXR0ci5pYV92YWxpZCA9IEFUVFJfU0laRTsK IAkJaWF0dHIuaWFfc2l6ZSA9IG5ld19zaXplOwotCQllcnJvciA9IHhmc19zZXRhdHRyX3NpemUo aXAsICZpYXR0cik7CisJCWVycm9yID0geGZzX3NldGF0dHJfc2l6ZShmaWxlLT5mX2RlbnRyeSwg JmlhdHRyKTsKIAl9CiAKIG91dF91bmxvY2s6CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lvY3Rs LmMgYi9mcy94ZnMveGZzX2lvY3RsLmMKaW5kZXggYWZjODU5ZjQ0ZDAxLi5jZWU2MmE1YWZiZWUg MTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW9jdGwuYworKysgYi9mcy94ZnMveGZzX2lvY3RsLmMK QEAgLTcxNyw3ICs3MTcsNyBAQCB4ZnNfaW9jX3NwYWNlKAogCQlpYXR0ci5pYV92YWxpZCA9IEFU VFJfU0laRTsKIAkJaWF0dHIuaWFfc2l6ZSA9IGJmLT5sX3N0YXJ0OwogCi0JCWVycm9yID0geGZz X3NldGF0dHJfc2l6ZShpcCwgJmlhdHRyKTsKKwkJZXJyb3IgPSB4ZnNfc2V0YXR0cl9zaXplKGZp bHAtPmZfZGVudHJ5LCAmaWF0dHIpOwogCQlpZiAoIWVycm9yKQogCQkJY2xycHJlYWxsb2MgPSB0 cnVlOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaW9wcy5jIGIvZnMveGZzL3hm c19pb3BzLmMKaW5kZXggMTI1ZGE4OTY5YzcyLi5jZmM1YzI2MGVjYmUgMTAwNjQ0Ci0tLSBhL2Zz L3hmcy94ZnNfaW9wcy5jCisrKyBiL2ZzL3hmcy94ZnNfaW9wcy5jCkBAIC01MjcsNiArNTI3LDcg QEAgeGZzX3NldGF0dHJfdGltZSgKIAogaW50CiB4ZnNfc2V0YXR0cl9ub25zaXplKAorCXN0cnVj dCBkZW50cnkJCSpkZW50cnksCiAJc3RydWN0IHhmc19pbm9kZQkqaXAsCiAJc3RydWN0IGlhdHRy CQkqaWF0dHIsCiAJaW50CQkJZmxhZ3MpCkBAIC01NTEsNyArNTUyLDcgQEAgeGZzX3NldGF0dHJf bm9uc2l6ZSgKIAkJaWYgKFhGU19GT1JDRURfU0hVVERPV04obXApKQogCQkJcmV0dXJuIFhGU19F UlJPUihFSU8pOwogCi0JCWVycm9yID0gLWlub2RlX2NoYW5nZV9vayhpbm9kZSwgaWF0dHIpOwor CQllcnJvciA9IC1zZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CiAJCWlmIChlcnJvcikK IAkJCXJldHVybiBYRlNfRVJST1IoZXJyb3IpOwogCX0KQEAgLTczNCwxMSArNzM1LDEyIEBAIG91 dF9kcXJlbGU6CiAgKi8KIGludAogeGZzX3NldGF0dHJfc2l6ZSgKLQlzdHJ1Y3QgeGZzX2lub2Rl CSppcCwKKwlzdHJ1Y3QgZGVudHJ5CQkqZGVudHJ5LAogCXN0cnVjdCBpYXR0cgkJKmlhdHRyKQog eworCXN0cnVjdCBpbm9kZQkJKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOworCXN0cnVjdCB4ZnNf aW5vZGUJKmlwID0gWEZTX0koaW5vZGUpOwogCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gaXAtPmlf bW91bnQ7Ci0Jc3RydWN0IGlub2RlCQkqaW5vZGUgPSBWRlNfSShpcCk7CiAJeGZzX29mZl90CQlv bGRzaXplLCBuZXdzaXplOwogCXN0cnVjdCB4ZnNfdHJhbnMJKnRwOwogCWludAkJCWVycm9yOwpA QCAtNzU0LDcgKzc1Niw3IEBAIHhmc19zZXRhdHRyX3NpemUoCiAJaWYgKFhGU19GT1JDRURfU0hV VERPV04obXApKQogCQlyZXR1cm4gWEZTX0VSUk9SKEVJTyk7CiAKLQllcnJvciA9IC1pbm9kZV9j aGFuZ2Vfb2soaW5vZGUsIGlhdHRyKTsKKwllcnJvciA9IC1zZXRhdHRyX3ByZXBhcmUoZGVudHJ5 LCBpYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gWEZTX0VSUk9SKGVycm9yKTsKIApAQCAt Nzc4LDcgKzc4MCw3IEBAIHhmc19zZXRhdHRyX3NpemUoCiAJCSAqIFVzZSB0aGUgcmVndWxhciBz ZXRhdHRyIHBhdGggdG8gdXBkYXRlIHRoZSB0aW1lc3RhbXBzLgogCQkgKi8KIAkJaWF0dHItPmlh X3ZhbGlkICY9IH5BVFRSX1NJWkU7Ci0JCXJldHVybiB4ZnNfc2V0YXR0cl9ub25zaXplKGlwLCBp YXR0ciwgMCk7CisJCXJldHVybiB4ZnNfc2V0YXR0cl9ub25zaXplKGRlbnRyeSwgaXAsIGlhdHRy LCAwKTsKIAl9CiAKIAkvKgpAQCAtOTM5LDEwICs5NDEsMTAgQEAgeGZzX3ZuX3NldGF0dHIoCiAK IAlpZiAoaWF0dHItPmlhX3ZhbGlkICYgQVRUUl9TSVpFKSB7CiAJCXhmc19pbG9jayhpcCwgWEZT X0lPTE9DS19FWENMIHwgWEZTX01NQVBMT0NLX0VYQ0wpOwotCQllcnJvciA9IHhmc19zZXRhdHRy X3NpemUoaXAsIGlhdHRyKTsKKwkJZXJyb3IgPSB4ZnNfc2V0YXR0cl9zaXplKGRlbnRyeSwgaWF0 dHIpOwogCQl4ZnNfaXVubG9jayhpcCwgWEZTX0lPTE9DS19FWENMIHwgWEZTX01NQVBMT0NLX0VY Q0wpOwogCX0gZWxzZSB7Ci0JCWVycm9yID0geGZzX3NldGF0dHJfbm9uc2l6ZShpcCwgaWF0dHIs IDApOworCQllcnJvciA9IHhmc19zZXRhdHRyX25vbnNpemUoZGVudHJ5LCBpcCwgaWF0dHIsIDAp OwogCX0KIAogCXJldHVybiAtZXJyb3I7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lvcHMuaCBi L2ZzL3hmcy94ZnNfaW9wcy5oCmluZGV4IDFjMzRlNDMzNTkyMC4uZjY2YTM3YzBhODhhIDEwMDY0 NAotLS0gYS9mcy94ZnMveGZzX2lvcHMuaAorKysgYi9mcy94ZnMveGZzX2lvcHMuaApAQCAtMzIs OCArMzIsOCBAQCBleHRlcm4gdm9pZCB4ZnNfc2V0dXBfaW5vZGUoc3RydWN0IHhmc19pbm9kZSAq KTsKICAqLwogI2RlZmluZSBYRlNfQVRUUl9OT0FDTAkJMHgwMQkvKiBEb24ndCBjYWxsIHBvc2l4 X2FjbF9jaG1vZCAqLwogCi1leHRlcm4gaW50IHhmc19zZXRhdHRyX25vbnNpemUoc3RydWN0IHhm c19pbm9kZSAqaXAsIHN0cnVjdCBpYXR0ciAqdmFwLAotCQkJICAgICAgIGludCBmbGFncyk7Ci1l eHRlcm4gaW50IHhmc19zZXRhdHRyX3NpemUoc3RydWN0IHhmc19pbm9kZSAqaXAsIHN0cnVjdCBp YXR0ciAqdmFwKTsKK2V4dGVybiBpbnQgeGZzX3NldGF0dHJfbm9uc2l6ZShzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIHN0cnVjdCB4ZnNfaW5vZGUgKmlwLAorCQkJICAgICAgIHN0cnVjdCBpYXR0ciAq dmFwLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGludCB4ZnNfc2V0YXR0cl9zaXplKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICp2YXApOwogCiAjZW5kaWYgLyogX19YRlNfSU9QU19I X18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdWFjY2Vzcy5oIGIvaW5jbHVk ZS9hc20tZ2VuZXJpYy91YWNjZXNzLmgKaW5kZXggNzJkODgwMzgzMmZmLi5hZTg4ODY1YTNkNjcg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdWFjY2Vzcy5oCisrKyBiL2luY2x1ZGUv YXNtLWdlbmVyaWMvdWFjY2Vzcy5oCkBAIC0yMjgsMTQgKzIyOCwxOCBAQCBleHRlcm4gaW50IF9f cHV0X3VzZXJfYmFkKHZvaWQpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAJbWlnaHRfZmF1 bHQoKTsJCQkJCQlcCiAJYWNjZXNzX29rKFZFUklGWV9SRUFELCBwdHIsIHNpemVvZigqcHRyKSkg PwkJXAogCQlfX2dldF91c2VyKHgsIHB0cikgOgkJCQlcCi0JCS1FRkFVTFQ7CQkJCQlcCisJCSgo eCkgPSAoX190eXBlb2ZfXygqKHB0cikpKTAsLUVGQVVMVCk7CQlcCiB9KQogCiAjaWZuZGVmIF9f Z2V0X3VzZXJfZm4KIHN0YXRpYyBpbmxpbmUgaW50IF9fZ2V0X3VzZXJfZm4oc2l6ZV90IHNpemUs IGNvbnN0IHZvaWQgX191c2VyICpwdHIsIHZvaWQgKngpCiB7Ci0Jc2l6ZSA9IF9fY29weV9mcm9t X3VzZXIoeCwgcHRyLCBzaXplKTsKLQlyZXR1cm4gc2l6ZSA/IC1FRkFVTFQgOiBzaXplOworCXNp emVfdCBuID0gX19jb3B5X2Zyb21fdXNlcih4LCBwdHIsIHNpemUpOworCWlmICh1bmxpa2VseShu KSkgeworCQltZW1zZXQoeCArIChzaXplIC0gbiksIDAsIG4pOworCQlyZXR1cm4gLUVGQVVMVDsK Kwl9CisJcmV0dXJuIDA7CiB9CiAKICNkZWZpbmUgX19nZXRfdXNlcl9mbihzeiwgdSwgaykJX19n ZXRfdXNlcl9mbihzeiwgdSwgaykKQEAgLTI1NSwxMSArMjU5LDEzIEBAIGV4dGVybiBpbnQgX19n ZXRfdXNlcl9iYWQodm9pZCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKIHN0YXRpYyBpbmxp bmUgbG9uZyBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywKIAkJY29uc3Qgdm9pZCBfX3VzZXIgKiBm cm9tLCB1bnNpZ25lZCBsb25nIG4pCiB7CisJdW5zaWduZWQgbG9uZyByZXMgPSBuOwogCW1pZ2h0 X2ZhdWx0KCk7Ci0JaWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCi0JCXJldHVy biBfX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKLQllbHNlCi0JCXJldHVybiBuOworCWlm IChsaWtlbHkoYWNjZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkpCisJCXJlcyA9IF9fY29w eV9mcm9tX3VzZXIodG8sIGZyb20sIG4pOworCWlmICh1bmxpa2VseShyZXMpKQorCQltZW1zZXQo dG8gKyAobiAtIHJlcyksIDAsIHJlcyk7CisJcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIGlubGlu ZSBsb25nIGNvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L2JhY2tpbmctZGV2LmggYi9pbmNsdWRlL2xpbnV4L2JhY2tpbmctZGV2LmgKaW5kZXgg ZTQ4OGU5NDU5YTkzLi5mMDA2OWE5NGQ5Y2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmFj a2luZy1kZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2JhY2tpbmctZGV2LmgKQEAgLTEwMCw2ICsx MDAsNyBAQCBzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbyB7CiAJc3RydWN0IGxpc3RfaGVhZCB3b3Jr X2xpc3Q7CiAKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRldmljZSAqb3duZXI7CiAK IAlzdHJ1Y3QgdGltZXJfbGlzdCBsYXB0b3BfbW9kZV93Yl90aW1lcjsKIApAQCAtMTE2LDYgKzEx Nyw3IEBAIF9fcHJpbnRmKDMsIDQpCiBpbnQgYmRpX3JlZ2lzdGVyKHN0cnVjdCBiYWNraW5nX2Rl dl9pbmZvICpiZGksIHN0cnVjdCBkZXZpY2UgKnBhcmVudCwKIAkJY29uc3QgY2hhciAqZm10LCAu Li4pOwogaW50IGJkaV9yZWdpc3Rlcl9kZXYoc3RydWN0IGJhY2tpbmdfZGV2X2luZm8gKmJkaSwg ZGV2X3QgZGV2KTsKK2ludCBiZGlfcmVnaXN0ZXJfb3duZXIoc3RydWN0IGJhY2tpbmdfZGV2X2lu Zm8gKmJkaSwgc3RydWN0IGRldmljZSAqb3duZXIpOwogdm9pZCBiZGlfdW5yZWdpc3RlcihzdHJ1 Y3QgYmFja2luZ19kZXZfaW5mbyAqYmRpKTsKIGludCBfX211c3RfY2hlY2sgYmRpX3NldHVwX2Fu ZF9yZWdpc3RlcihzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbyAqLCBjaGFyICosIHVuc2lnbmVkIGlu dCk7CiB2b2lkIGJkaV9zdGFydF93cml0ZWJhY2soc3RydWN0IGJhY2tpbmdfZGV2X2luZm8gKmJk aSwgbG9uZyBucl9wYWdlcywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmNtYS9iY21hLmgg Yi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oCmluZGV4IDBiM2JiMTZjNzA1YS4uYjE5YzdlZDg4 Y2ZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oCisrKyBiL2luY2x1ZGUv bGludXgvYmNtYS9iY21hLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBzdHJ1Y3QgYmNtYV9ob3N0X29w cyB7CiAjZGVmaW5lIEJDTUFfQ09SRV9ERUZBVUxUCQkweEZGRgogCiAjZGVmaW5lIEJDTUFfTUFY X05SX0NPUkVTCQkxNgorI2RlZmluZSBCQ01BX0NPUkVfU0laRQkJCTB4MTAwMAogCiAvKiBDaGlw IElEcyBvZiBQQ0llIGRldmljZXMgKi8KICNkZWZpbmUgQkNNQV9DSElQX0lEX0JDTTQzMTMJMHg0 MzEzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Nhbi9kZXYuaCBiL2luY2x1ZGUvbGludXgv Y2FuL2Rldi5oCmluZGV4IDY5OTJhZmM2YmE3Zi4uZTkwYmRmYzRkMGI3IDEwMDY0NAotLS0gYS9p bmNsdWRlL2xpbnV4L2Nhbi9kZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nhbi9kZXYuaApAQCAt MzEsNiArMzEsNyBAQCBlbnVtIGNhbl9tb2RlIHsKICAqIENBTiBjb21tb24gcHJpdmF0ZSBkYXRh CiAgKi8KIHN0cnVjdCBjYW5fcHJpdiB7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIAlzdHJ1 Y3QgY2FuX2RldmljZV9zdGF0cyBjYW5fc3RhdHM7CiAKIAlzdHJ1Y3QgY2FuX2JpdHRpbWluZyBi aXR0aW1pbmcsIGRhdGFfYml0dGltaW5nOwpAQCAtNDMsNyArNDQsNyBAQCBzdHJ1Y3QgY2FuX3By aXYgewogCXUzMiBjdHJsbW9kZV9zdXBwb3J0ZWQ7CiAKIAlpbnQgcmVzdGFydF9tczsKLQlzdHJ1 Y3QgdGltZXJfbGlzdCByZXN0YXJ0X3RpbWVyOworCXN0cnVjdCBkZWxheWVkX3dvcmsgcmVzdGFy dF93b3JrOwogCiAJaW50ICgqZG9fc2V0X2JpdHRpbWluZykoc3RydWN0IG5ldF9kZXZpY2UgKmRl dik7CiAJaW50ICgqZG9fc2V0X2RhdGFfYml0dGltaW5nKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29tcGlsZXItZ2NjLmggYi9pbmNsdWRlL2xp bnV4L2NvbXBpbGVyLWdjYy5oCmluZGV4IGJiMmNkY2Q5MjljNi4uNjMzNzE2ZWYxOWIwIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWdjYy5oCisrKyBiL2luY2x1ZGUvbGludXgv Y29tcGlsZXItZ2NjLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQAogI2RlZmluZSB1bnJlYWNoYWJsZSgp IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpCiAKIC8qIE1hcmsgYSBmdW5jdGlvbiBkZWZpbml0aW9u IGFzIHByb2hpYml0ZWQgZnJvbSBiZWluZyBjbG9uZWQuICovCi0jZGVmaW5lIF9fbm9jbG9uZQlf X2F0dHJpYnV0ZV9fKChfX25vY2xvbmVfXykpCisjZGVmaW5lIF9fbm9jbG9uZQlfX2F0dHJpYnV0 ZV9fKChfX25vY2xvbmVfXywgX19vcHRpbWl6ZV9fKCJuby10cmFjZXIiKSkpCiAKICNlbmRpZiAv KiBHQ0NfVkVSU0lPTiA+PSA0MDUwMCAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Vm aS5oIGIvaW5jbHVkZS9saW51eC9lZmkuaAppbmRleCA4Y2IwOWM5ZDgxZWYuLjE0MzEwODljNTRk YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9lZmkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Vm aS5oCkBAIC0xMTcsNiArMTE3LDE1IEBAIHR5cGVkZWYgc3RydWN0IHsKIAl1MzIgaW1hZ2VzaXpl OwogfSBlZmlfY2Fwc3VsZV9oZWFkZXJfdDsKIAorc3RydWN0IGVmaV9ib290X21lbW1hcCB7CisJ ZWZpX21lbW9yeV9kZXNjX3QJKiptYXA7CisJdW5zaWduZWQgbG9uZwkJKm1hcF9zaXplOworCXVu c2lnbmVkIGxvbmcJCSpkZXNjX3NpemU7CisJdTMyCQkJKmRlc2NfdmVyOworCXVuc2lnbmVkIGxv bmcJCSprZXlfcHRyOworCXVuc2lnbmVkIGxvbmcJCSpidWZmX3NpemU7Cit9OworCiAvKgogICog QWxsb2NhdGlvbiB0eXBlcyBmb3IgY2FsbHMgdG8gYm9vdHRpbWUtPmFsbG9jYXRlX3BhZ2VzLgog ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgK aW5kZXggNTQ1ODM3ZGI5NDY4Li4zYjY5YTgyYmJkZDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZzLmgKQEAgLTI2MjcsNyArMjYyNyw3IEBAIGV4 dGVybiBpbnQgYnVmZmVyX21pZ3JhdGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLAogI2Rl ZmluZSBidWZmZXJfbWlncmF0ZV9wYWdlIE5VTEwKICNlbmRpZgogCi1leHRlcm4gaW50IGlub2Rl X2NoYW5nZV9vayhjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOworZXh0ZXJu IGludCBzZXRhdHRyX3ByZXBhcmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiBl eHRlcm4gaW50IGlub2RlX25ld3NpemVfb2soY29uc3Qgc3RydWN0IGlub2RlICosIGxvZmZfdCBv ZmZzZXQpOwogZXh0ZXJuIHZvaWQgc2V0YXR0cl9jb3B5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNv bnN0IHN0cnVjdCBpYXR0ciAqYXR0cik7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNu b3RpZnlfYmFja2VuZC5oIGIvaW5jbHVkZS9saW51eC9mc25vdGlmeV9iYWNrZW5kLmgKaW5kZXgg ZDJiZTI1MjZlYzQ4Li5lMzZmNGU3NmJhOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZnNu b3RpZnlfYmFja2VuZC5oCisrKyBiL2luY2x1ZGUvbGludXgvZnNub3RpZnlfYmFja2VuZC5oCkBA IC0xNTAsNiArMTUwLDcgQEAgc3RydWN0IGZzbm90aWZ5X2dyb3VwIHsKIAkjZGVmaW5lIEZTX1BS SU9fMQkxIC8qIGZhbm90aWZ5IGNvbnRlbnQgYmFzZWQgYWNjZXNzIGNvbnRyb2wgKi8KIAkjZGVm aW5lIEZTX1BSSU9fMgkyIC8qIGZhbm90aWZ5IHByZS1jb250ZW50IGFjY2VzcyAqLwogCXVuc2ln bmVkIGludCBwcmlvcml0eTsKKwlib29sIHNodXRkb3duOwkJLyogZ3JvdXAgaXMgYmVpbmcgc2h1 dCBkb3duLCBkb24ndCBxdWV1ZSBtb3JlIGV2ZW50cyAqLwogCiAJLyogc3RvcmVzIGFsbCBmYXN0 cGF0aCBtYXJrcyBhc3NvYyB3aXRoIHRoaXMgZ3JvdXAgc28gdGhleSBjYW4gYmUgY2xlYW5lZCBv biB1bnJlZ2lzdGVyICovCiAJc3RydWN0IG11dGV4IG1hcmtfbXV0ZXg7CS8qIHByb3RlY3QgbWFy a3NfbGlzdCAqLwpAQCAtMTgxLDcgKzE4Miw2IEBAIHN0cnVjdCBmc25vdGlmeV9ncm91cCB7CiAJ CQlzcGlubG9ja190IGFjY2Vzc19sb2NrOwogCQkJc3RydWN0IGxpc3RfaGVhZCBhY2Nlc3NfbGlz dDsKIAkJCXdhaXRfcXVldWVfaGVhZF90IGFjY2Vzc193YWl0cTsKLQkJCWF0b21pY190IGJ5cGFz c19wZXJtOwogI2VuZGlmIC8qIENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlMgKi8K IAkJCWludCBmX2ZsYWdzOwogCQkJdW5zaWduZWQgaW50IG1heF9tYXJrczsKQEAgLTMxNCw2ICsz MTQsOCBAQCBleHRlcm4gc3RydWN0IGZzbm90aWZ5X2dyb3VwICpmc25vdGlmeV9hbGxvY19ncm91 cChjb25zdCBzdHJ1Y3QgZnNub3RpZnlfb3BzICpvcAogZXh0ZXJuIHZvaWQgZnNub3RpZnlfZ2V0 X2dyb3VwKHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXApOwogLyogZHJvcCByZWZlcmVuY2Ug b24gYSBncm91cCBmcm9tIGZzbm90aWZ5X2FsbG9jX2dyb3VwICovCiBleHRlcm4gdm9pZCBmc25v dGlmeV9wdXRfZ3JvdXAoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCk7CisvKiBncm91cCBk ZXN0cnVjdGlvbiBiZWdpbnMsIHN0b3AgcXVldWluZyBuZXcgZXZlbnRzICovCitleHRlcm4gdm9p ZCBmc25vdGlmeV9ncm91cF9zdG9wX3F1ZXVlaW5nKHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3Jv dXApOwogLyogZGVzdHJveSBncm91cCAqLwogZXh0ZXJuIHZvaWQgZnNub3RpZnlfZGVzdHJveV9n cm91cChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwKTsKIC8qIGZhc3luYyBoYW5kbGVyIGZ1 bmN0aW9uICovCkBAIC0zMjYsOCArMzI4LDYgQEAgZXh0ZXJuIGludCBmc25vdGlmeV9hZGRfbm90 aWZ5X2V2ZW50KHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsCiAJCQkJICAgICBzdHJ1Y3Qg ZnNub3RpZnlfZXZlbnQgKmV2ZW50LAogCQkJCSAgICAgaW50ICgqbWVyZ2UpKHN0cnVjdCBsaXN0 X2hlYWQgKiwKIAkJCQkJCSAgc3RydWN0IGZzbm90aWZ5X2V2ZW50ICopKTsKLS8qIFJlbW92ZSBw YXNzZWQgZXZlbnQgZnJvbSBncm91cHMgbm90aWZpY2F0aW9uIHF1ZXVlICovCi1leHRlcm4gdm9p ZCBmc25vdGlmeV9yZW1vdmVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCwgc3Ry dWN0IGZzbm90aWZ5X2V2ZW50ICpldmVudCk7CiAvKiB0cnVlIGlmIHRoZSBncm91cCBub3RpZmlj YXRpb24gcXVldWUgaXMgZW1wdHkgKi8KIGV4dGVybiBib29sIGZzbm90aWZ5X25vdGlmeV9xdWV1 ZV9pc19lbXB0eShzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwKTsKIC8qIHJldHVybiwgYnV0 IGRvIG5vdCBkZXF1ZXVlIHRoZSBmaXJzdCBldmVudCBvbiB0aGUgbm90aWZpY2F0aW9uIHF1ZXVl ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2k4MDQyLmggYi9pbmNsdWRlL2xpbnV4L2k4 MDQyLmgKaW5kZXggMGY5YmFmYTE3YTAyLi5kOTg3ODBjYTk2MDQgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaTgwNDIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2k4MDQyLmgKQEAgLTYyLDcgKzYy LDYgQEAgc3RydWN0IHNlcmlvOwogdm9pZCBpODA0Ml9sb2NrX2NoaXAodm9pZCk7CiB2b2lkIGk4 MDQyX3VubG9ja19jaGlwKHZvaWQpOwogaW50IGk4MDQyX2NvbW1hbmQodW5zaWduZWQgY2hhciAq cGFyYW0sIGludCBjb21tYW5kKTsKLWJvb2wgaTgwNDJfY2hlY2tfcG9ydF9vd25lcihjb25zdCBz dHJ1Y3Qgc2VyaW8gKik7CiBpbnQgaTgwNDJfaW5zdGFsbF9maWx0ZXIoYm9vbCAoKmZpbHRlciko dW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBjaGFyIHN0ciwKIAkJCQkJc3RydWN0IHNlcmlv ICpzZXJpbykpOwogaW50IGk4MDQyX3JlbW92ZV9maWx0ZXIoYm9vbCAoKmZpbHRlcikodW5zaWdu ZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBjaGFyIHN0ciwKQEAgLTgzLDExICs4Miw2IEBAIHN0YXRp YyBpbmxpbmUgaW50IGk4MDQyX2NvbW1hbmQodW5zaWduZWQgY2hhciAqcGFyYW0sIGludCBjb21t YW5kKQogCXJldHVybiAtRU5PREVWOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaTgwNDJfY2hl Y2tfcG9ydF9vd25lcihjb25zdCBzdHJ1Y3Qgc2VyaW8gKnNlcmlvKQotewotCXJldHVybiBmYWxz ZTsKLX0KLQogc3RhdGljIGlubGluZSBpbnQgaTgwNDJfaW5zdGFsbF9maWx0ZXIoYm9vbCAoKmZp bHRlcikodW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBjaGFyIHN0ciwKIAkJCQkJc3RydWN0 IHNlcmlvICpzZXJpbykpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21seDUvcXAuaCBi L2luY2x1ZGUvbGludXgvbWx4NS9xcC5oCmluZGV4IGFiMWMxNGE1NmU2ZC4uMGVmYTg4M2U2NTA4 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvcXAuaAorKysgYi9pbmNsdWRlL2xpbnV4 L21seDUvcXAuaApAQCAtNDQyLDkgKzQ0Miw5IEBAIHN0cnVjdCBtbHg1X2Rlc3Ryb3lfcXBfbWJv eF9vdXQgewogc3RydWN0IG1seDVfbW9kaWZ5X3FwX21ib3hfaW4gewogCXN0cnVjdCBtbHg1X2lu Ym94X2hkcgloZHI7CiAJX19iZTMyCQkJcXBuOwotCXU4CQkJcnN2ZDFbNF07Ci0JX19iZTMyCQkJ b3B0cGFyYW07CiAJdTgJCQlyc3ZkMFs0XTsKKwlfX2JlMzIJCQlvcHRwYXJhbTsKKwl1OAkJCXJz dmQxWzRdOwogCXN0cnVjdCBtbHg1X3FwX2NvbnRleHQJY3R4OwogCXU4CQkJcnN2ZDJbMTZdOwog fTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXJvdXRlLmggYi9pbmNsdWRlL2xpbnV4L21y b3V0ZS5oCmluZGV4IDc5YWFhOWZjMWExNS4uZDUyNzdmYzNjZTJlIDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L21yb3V0ZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbXJvdXRlLmgKQEAgLTEwMyw1 ICsxMDMsNSBAQCBzdHJ1Y3QgbWZjX2NhY2hlIHsKIHN0cnVjdCBydG1zZzsKIGV4dGVybiBpbnQg aXBtcl9nZXRfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJ ICBfX2JlMzIgc2FkZHIsIF9fYmUzMiBkYWRkciwKLQkJCSAgc3RydWN0IHJ0bXNnICpydG0sIGlu dCBub3dhaXQpOworCQkJICBzdHJ1Y3QgcnRtc2cgKnJ0bSwgaW50IG5vd2FpdCwgdTMyIHBvcnRp ZCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXJvdXRlNi5oIGIvaW5jbHVk ZS9saW51eC9tcm91dGU2LmgKaW5kZXggNjY5ODJlNzY0MDUxLi5mODMxMTU1ZGM3ZDEgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvbXJvdXRlNi5oCisrKyBiL2luY2x1ZGUvbGludXgvbXJvdXRl Ni5oCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IG1mYzZfY2FjaGUgewogCiBzdHJ1Y3QgcnRt c2c7CiBleHRlcm4gaW50IGlwNm1yX2dldF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBz a19idWZmICpza2IsCi0JCQkgICBzdHJ1Y3QgcnRtc2cgKnJ0bSwgaW50IG5vd2FpdCk7CisJCQkg ICBzdHJ1Y3QgcnRtc2cgKnJ0bSwgaW50IG5vd2FpdCwgdTMyIHBvcnRpZCk7CiAKICNpZmRlZiBD T05GSUdfSVBWNl9NUk9VVEUKIGV4dGVybiBzdHJ1Y3Qgc29jayAqbXJvdXRlNl9zb2NrZXQoc3Ry dWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvbmV0ZmlsdGVyL3hfdGFibGVzLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci94X3Rh Ymxlcy5oCmluZGV4IDc3NDFlZmE0M2IzNS4uY2M2MTVlMjczZjgwIDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L25ldGZpbHRlci94X3RhYmxlcy5oCisrKyBiL2luY2x1ZGUvbGludXgvbmV0Zmls dGVyL3hfdGFibGVzLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgaW50IHh0X2NoZWNrX2VudHJ5X29m ZnNldHMoY29uc3Qgdm9pZCAqYmFzZSwgY29uc3QgY2hhciAqZWxlbXMsCiAJCQkgICB1bnNpZ25l ZCBpbnQgdGFyZ2V0X29mZnNldCwKIAkJCSAgIHVuc2lnbmVkIGludCBuZXh0X29mZnNldCk7CiAK K3Vuc2lnbmVkIGludCAqeHRfYWxsb2NfZW50cnlfb2Zmc2V0cyh1bnNpZ25lZCBpbnQgc2l6ZSk7 Citib29sIHh0X2ZpbmRfanVtcF9vZmZzZXQoY29uc3QgdW5zaWduZWQgaW50ICpvZmZzZXRzLAor CQkJIHVuc2lnbmVkIGludCB0YXJnZXQsIHVuc2lnbmVkIGludCBzaXplKTsKKwogaW50IHh0X2No ZWNrX21hdGNoKHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdV9p bnQ4X3QgcHJvdG8sCiAJCSAgIGJvb2wgaW52X3Byb3RvKTsKIGludCB4dF9jaGVja190YXJnZXQo c3RydWN0IHh0X3RnY2hrX3BhcmFtICosIHVuc2lnbmVkIGludCBzaXplLCB1X2ludDhfdCBwcm90 bywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGFnZW1hcC5oIGIvaW5jbHVkZS9saW51eC9w YWdlbWFwLmgKaW5kZXggMjVmMTA2YjAzNzViLi4xMGI1Nzk0MGRjNjIgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvcGFnZW1hcC5oCisrKyBiL2luY2x1ZGUvbGludXgvcGFnZW1hcC5oCkBAIC01 OTksNTYgKzU5OSw1NiBAQCBzdGF0aWMgaW5saW5lIGludCBmYXVsdF9pbl9wYWdlc19yZWFkYWJs ZShjb25zdCBjaGFyIF9fdXNlciAqdWFkZHIsIGludCBzaXplKQogICovCiBzdGF0aWMgaW5saW5l IGludCBmYXVsdF9pbl9tdWx0aXBhZ2VzX3dyaXRlYWJsZShjaGFyIF9fdXNlciAqdWFkZHIsIGlu dCBzaXplKQogewotCWludCByZXQgPSAwOwogCWNoYXIgX191c2VyICplbmQgPSB1YWRkciArIHNp emUgLSAxOwogCiAJaWYgKHVubGlrZWx5KHNpemUgPT0gMCkpCi0JCXJldHVybiByZXQ7CisJCXJl dHVybiAwOwogCisJaWYgKHVubGlrZWx5KHVhZGRyID4gZW5kKSkKKwkJcmV0dXJuIC1FRkFVTFQ7 CiAJLyoKIAkgKiBXcml0aW5nIHplcm9lcyBpbnRvIHVzZXJzcGFjZSBoZXJlIGlzIE9LLCBiZWNh dXNlIHdlIGtub3cgdGhhdCBpZgogCSAqIHRoZSB6ZXJvIGdldHMgdGhlcmUsIHdlJ2xsIGJlIG92 ZXJ3cml0aW5nIGl0LgogCSAqLwotCXdoaWxlICh1YWRkciA8PSBlbmQpIHsKLQkJcmV0ID0gX19w dXRfdXNlcigwLCB1YWRkcik7Ci0JCWlmIChyZXQgIT0gMCkKLQkJCXJldHVybiByZXQ7CisJZG8g eworCQlpZiAodW5saWtlbHkoX19wdXRfdXNlcigwLCB1YWRkcikgIT0gMCkpCisJCQlyZXR1cm4g LUVGQVVMVDsKIAkJdWFkZHIgKz0gUEFHRV9TSVpFOwotCX0KKwl9IHdoaWxlICh1YWRkciA8PSBl bmQpOwogCiAJLyogQ2hlY2sgd2hldGhlciB0aGUgcmFuZ2Ugc3BpbGxlZCBpbnRvIHRoZSBuZXh0 IHBhZ2UuICovCiAJaWYgKCgodW5zaWduZWQgbG9uZyl1YWRkciAmIFBBR0VfTUFTSykgPT0KIAkJ CSgodW5zaWduZWQgbG9uZyllbmQgJiBQQUdFX01BU0spKQotCQlyZXQgPSBfX3B1dF91c2VyKDAs IGVuZCk7CisJCXJldHVybiBfX3B1dF91c2VyKDAsIGVuZCk7CiAKLQlyZXR1cm4gcmV0OworCXJl dHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBmYXVsdF9pbl9tdWx0aXBhZ2VzX3JlYWRh YmxlKGNvbnN0IGNoYXIgX191c2VyICp1YWRkciwKIAkJCQkJICAgICAgIGludCBzaXplKQogewog CXZvbGF0aWxlIGNoYXIgYzsKLQlpbnQgcmV0ID0gMDsKIAljb25zdCBjaGFyIF9fdXNlciAqZW5k ID0gdWFkZHIgKyBzaXplIC0gMTsKIAogCWlmICh1bmxpa2VseShzaXplID09IDApKQotCQlyZXR1 cm4gcmV0OworCQlyZXR1cm4gMDsKIAotCXdoaWxlICh1YWRkciA8PSBlbmQpIHsKLQkJcmV0ID0g X19nZXRfdXNlcihjLCB1YWRkcik7Ci0JCWlmIChyZXQgIT0gMCkKLQkJCXJldHVybiByZXQ7CisJ aWYgKHVubGlrZWx5KHVhZGRyID4gZW5kKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlkbyB7CisJ CWlmICh1bmxpa2VseShfX2dldF91c2VyKGMsIHVhZGRyKSAhPSAwKSkKKwkJCXJldHVybiAtRUZB VUxUOwogCQl1YWRkciArPSBQQUdFX1NJWkU7Ci0JfQorCX0gd2hpbGUgKHVhZGRyIDw9IGVuZCk7 CiAKIAkvKiBDaGVjayB3aGV0aGVyIHRoZSByYW5nZSBzcGlsbGVkIGludG8gdGhlIG5leHQgcGFn ZS4gKi8KIAlpZiAoKCh1bnNpZ25lZCBsb25nKXVhZGRyICYgUEFHRV9NQVNLKSA9PQogCQkJKCh1 bnNpZ25lZCBsb25nKWVuZCAmIFBBR0VfTUFTSykpIHsKLQkJcmV0ID0gX19nZXRfdXNlcihjLCBl bmQpOwotCQkodm9pZCljOworCQlyZXR1cm4gX19nZXRfdXNlcihjLCBlbmQpOwogCX0KIAotCXJl dHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIGludCBhZGRfdG9fcGFnZV9jYWNoZV9sb2NrZWQo c3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLApkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9wb3NpeF9hY2wuaCBiL2luY2x1ZGUvbGludXgvcG9zaXhfYWNs LmgKaW5kZXggM2U5NmE2YTc2MTAzLi5kMWE4YWQ3ZTVhZTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgvcG9zaXhfYWNsLmgKKysrIGIvaW5jbHVkZS9saW51eC9wb3NpeF9hY2wuaApAQCAtOTUs NiArOTUsNyBAQCBleHRlcm4gaW50IHNldF9wb3NpeF9hY2woc3RydWN0IGlub2RlICosIGludCwg c3RydWN0IHBvc2l4X2FjbCAqKTsKIGV4dGVybiBpbnQgcG9zaXhfYWNsX2NobW9kKHN0cnVjdCBp bm9kZSAqLCB1bW9kZV90KTsKIGV4dGVybiBpbnQgcG9zaXhfYWNsX2NyZWF0ZShzdHJ1Y3QgaW5v ZGUgKiwgdW1vZGVfdCAqLCBzdHJ1Y3QgcG9zaXhfYWNsICoqLAogCQlzdHJ1Y3QgcG9zaXhfYWNs ICoqKTsKK2V4dGVybiBpbnQgcG9zaXhfYWNsX3VwZGF0ZV9tb2RlKHN0cnVjdCBpbm9kZSAqLCB1 bW9kZV90ICosIHN0cnVjdCBwb3NpeF9hY2wgKiopOwogCiBleHRlcm4gaW50IHNpbXBsZV9zZXRf YWNsKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcG9zaXhfYWNsICosIGludCk7CiBleHRlcm4gaW50 IHNpbXBsZV9hY2xfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCBiL2luY2x1ZGUvbGludXgvcmFkaXgt dHJlZS5oCmluZGV4IDVkNTE3NGI1OTgwMi4uNjczZGVlMjlhOWI5IDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L3JhZGl4LXRyZWUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaApA QCAtMzgyLDYgKzM4Miw3IEBAIHN0YXRpYyBpbmxpbmUgX19tdXN0X2NoZWNrCiB2b2lkICoqcmFk aXhfdHJlZV9pdGVyX3JldHJ5KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCiB7CiAJaXRl ci0+bmV4dF9pbmRleCA9IGl0ZXItPmluZGV4OworCWl0ZXItPnRhZ3MgPSAwOwogCXJldHVybiBO VUxMOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NlcmlvLmggYi9pbmNsdWRlL2xp bnV4L3NlcmlvLmgKaW5kZXggOWY3NzljN2EyZGE0Li4yN2FlODA5ZWRkNzAgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvc2VyaW8uaAorKysgYi9pbmNsdWRlL2xpbnV4L3NlcmlvLmgKQEAgLTI5 LDcgKzI5LDggQEAgc3RydWN0IHNlcmlvIHsKIAogCXN0cnVjdCBzZXJpb19kZXZpY2VfaWQgaWQ7 CiAKLQlzcGlubG9ja190IGxvY2s7CQkvKiBwcm90ZWN0cyBjcml0aWNhbCBzZWN0aW9ucyBmcm9t IHBvcnQncyBpbnRlcnJ1cHQgaGFuZGxlciAqLworCS8qIFByb3RlY3RzIGNyaXRpY2FsIHNlY3Rp b25zIGZyb20gcG9ydCdzIGludGVycnVwdCBoYW5kbGVyICovCisJc3BpbmxvY2tfdCBsb2NrOwog CiAJaW50ICgqd3JpdGUpKHN0cnVjdCBzZXJpbyAqLCB1bnNpZ25lZCBjaGFyKTsKIAlpbnQgKCpv cGVuKShzdHJ1Y3Qgc2VyaW8gKik7CkBAIC0zOCwxNiArMzksMjkgQEAgc3RydWN0IHNlcmlvIHsK IAl2b2lkICgqc3RvcCkoc3RydWN0IHNlcmlvICopOwogCiAJc3RydWN0IHNlcmlvICpwYXJlbnQ7 Ci0Jc3RydWN0IGxpc3RfaGVhZCBjaGlsZF9ub2RlOwkvKiBFbnRyeSBpbiBwYXJlbnQtPmNoaWxk cmVuIGxpc3QgKi8KKwkvKiBFbnRyeSBpbiBwYXJlbnQtPmNoaWxkcmVuIGxpc3QgKi8KKwlzdHJ1 Y3QgbGlzdF9oZWFkIGNoaWxkX25vZGU7CiAJc3RydWN0IGxpc3RfaGVhZCBjaGlsZHJlbjsKLQl1 bnNpZ25lZCBpbnQgZGVwdGg7CQkvKiBsZXZlbCBvZiBuZXN0aW5nIGluIHNlcmlvIGhpZXJhcmNo eSAqLworCS8qIExldmVsIG9mIG5lc3RpbmcgaW4gc2VyaW8gaGllcmFyY2h5ICovCisJdW5zaWdu ZWQgaW50IGRlcHRoOwogCi0Jc3RydWN0IHNlcmlvX2RyaXZlciAqZHJ2OwkvKiBhY2Nlc3NlZCBm cm9tIGludGVycnVwdCwgbXVzdCBiZSBwcm90ZWN0ZWQgYnkgc2VyaW8tPmxvY2sgYW5kIHNlcmlv LT5zZW0gKi8KLQlzdHJ1Y3QgbXV0ZXggZHJ2X211dGV4OwkJLyogcHJvdGVjdHMgc2VyaW8tPmRy diBzbyBhdHRyaWJ1dGVzIGNhbiBwaW4gZHJpdmVyICovCisJLyoKKwkgKiBzZXJpby0+ZHJ2IGlz IGFjY2Vzc2VkIGZyb20gaW50ZXJydXB0IGhhbmRsZXJzOyB3aGVuIG1vZGlmeWluZworCSAqIGNh bGxlciBzaG91bGQgYWNxdWlyZSBzZXJpby0+ZHJ2X211dGV4IGFuZCBzZXJpby0+bG9jay4KKwkg Ki8KKwlzdHJ1Y3Qgc2VyaW9fZHJpdmVyICpkcnY7CisJLyogUHJvdGVjdHMgc2VyaW8tPmRydiBz byBhdHRyaWJ1dGVzIGNhbiBwaW4gY3VycmVudCBkcml2ZXIgKi8KKwlzdHJ1Y3QgbXV0ZXggZHJ2 X211dGV4OwogCiAJc3RydWN0IGRldmljZSBkZXY7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7 CisKKwkvKgorCSAqIEZvciB1c2UgYnkgUFMvMiBsYXllciB3aGVuIHNldmVyYWwgcG9ydHMgc2hh cmUgaGFyZHdhcmUgYW5kCisJICogbWF5IGdldCBpbmRpZ2VzdGlvbiB3aGVuIGV4cG9zZWQgdG8g Y29uY3VycmVudCBhY2Nlc3MgKGk4MDQyKS4KKwkgKi8KKwlzdHJ1Y3QgbXV0ZXggKnBzMl9jbWRf bXV0ZXg7CiB9OwogI2RlZmluZSB0b19zZXJpb19wb3J0KGQpCWNvbnRhaW5lcl9vZihkLCBzdHJ1 Y3Qgc2VyaW8sIGRldikKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNs dWRlL2xpbnV4L3N3YXAuaAppbmRleCA0YmRiZWU4MGVlZGUuLjNiYzVjZDZlZTRiYiAxMDA2NDQK LS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmgKKysrIGIvaW5jbHVkZS9saW51eC9zd2FwLmgKQEAg LTI3NCw2ICsyNzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgd29ya2luZ3NldF9ub2RlX3BhZ2Vz X2luYyhzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICpub2RlKQogCiBzdGF0aWMgaW5saW5lIHZvaWQg d29ya2luZ3NldF9ub2RlX3BhZ2VzX2RlYyhzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICpub2RlKQog eworCVZNX0JVR19PTighd29ya2luZ3NldF9ub2RlX3BhZ2VzKG5vZGUpKTsKIAlub2RlLT5jb3Vu dC0tOwogfQogCkBAIC0yODksNiArMjkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHdvcmtpbmdz ZXRfbm9kZV9zaGFkb3dzX2luYyhzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICpub2RlKQogCiBzdGF0 aWMgaW5saW5lIHZvaWQgd29ya2luZ3NldF9ub2RlX3NoYWRvd3NfZGVjKHN0cnVjdCByYWRpeF90 cmVlX25vZGUgKm5vZGUpCiB7CisJVk1fQlVHX09OKCF3b3JraW5nc2V0X25vZGVfc2hhZG93cyhu b2RlKSk7CiAJbm9kZS0+Y291bnQgLT0gMVUgPDwgUkFESVhfVFJFRV9DT1VOVF9TSElGVDsKIH0K IApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaW5ldF9lY24uaCBiL2luY2x1ZGUvbmV0L2luZXRf ZWNuLmgKaW5kZXggMGRjMGE1MWRhMzhmLi5kY2UyZDU4NmQ5Y2UgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbmV0L2luZXRfZWNuLmgKKysrIGIvaW5jbHVkZS9uZXQvaW5ldF9lY24uaApAQCAtMTI4LDcg KzEyOCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IElQNl9FQ05fc2V0X2NlKHN0cnVjdCBza19idWZm ICpza2IsIHN0cnVjdCBpcHY2aGRyICppcGgpCiAJdG8gPSBmcm9tIHwgaHRvbmwoSU5FVF9FQ05f Q0UgPDwgMjApOwogCSooX19iZTMyICopaXBoID0gdG87CiAJaWYgKHNrYi0+aXBfc3VtbWVkID09 IENIRUNLU1VNX0NPTVBMRVRFKQotCQlza2ItPmNzdW0gPSBjc3VtX2FkZChjc3VtX3N1Yihza2It PmNzdW0sIGZyb20pLCB0byk7CisJCXNrYi0+Y3N1bSA9IGNzdW1fYWRkKGNzdW1fc3ViKHNrYi0+ Y3N1bSwgKF9fZm9yY2UgX193c3VtKWZyb20pLAorCQkJCSAgICAgKF9fZm9yY2UgX193c3VtKXRv KTsKIAlyZXR1cm4gMTsKIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNs dWRlL25ldC90Y3AuaAppbmRleCBkNTg3ZmYwZjg4MjguLjYwZTJkYzVjZWYyNiAxMDA2NDQKLS0t IGEvaW5jbHVkZS9uZXQvdGNwLmgKKysrIGIvaW5jbHVkZS9uZXQvdGNwLmgKQEAgLTE0MTMsNiAr MTQxMyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfY2hlY2tfc2VuZF9oZWFkKHN0cnVjdCBz b2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYl91bmxpCiB7CiAJaWYgKHNrLT5za19zZW5kX2hl YWQgPT0gc2tiX3VubGlua2VkKQogCQlzay0+c2tfc2VuZF9oZWFkID0gTlVMTDsKKwlpZiAodGNw X3NrKHNrKS0+aGlnaGVzdF9zYWNrID09IHNrYl91bmxpbmtlZCkKKwkJdGNwX3NrKHNrKS0+aGln aGVzdF9zYWNrID0gTlVMTDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRjcF9pbml0X3NlbmRf aGVhZChzdHJ1Y3Qgc29jayAqc2spCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RhcmdldC90YXJnZXRf Y29yZV9iYWNrZW5kLmggYi9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9iYWNrZW5kLmgKaW5k ZXggZTAwNmUxMGUwOGE5Li5hMDlhODM2MDNjNTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdGFyZ2V0 L3RhcmdldF9jb3JlX2JhY2tlbmQuaAorKysgYi9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9i YWNrZW5kLmgKQEAgLTk3LDYgKzk3LDYgQEAgc2Vuc2VfcmVhc29uX3QJdHJhbnNwb3J0X2dlbmVy aWNfbWFwX21lbV90b19jbWQoc3RydWN0IHNlX2NtZCAqLAogdm9pZAlhcnJheV9mcmVlKHZvaWQg KmFycmF5LCBpbnQgbik7CiBzZWN0b3JfdCB0YXJnZXRfdG9fbGludXhfc2VjdG9yKHN0cnVjdCBz ZV9kZXZpY2UgKmRldiwgc2VjdG9yX3QgbGIpOwogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFw X2Zyb21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKLQkJCQkgICAgICAgc3Ry dWN0IHJlcXVlc3RfcXVldWUgKnEsIGludCBibG9ja19zaXplKTsKKwkJCQkgICAgICAgc3RydWN0 IHJlcXVlc3RfcXVldWUgKnEpOwogCiAjZW5kaWYgLyogVEFSR0VUX0NPUkVfQkFDS0VORF9IICov CmRpZmYgLS1naXQgYS9pcGMvbXNnLmMgYi9pcGMvbXNnLmMKaW5kZXggY2ZjOGIzODgzMzJkLi4w MmU3MmQzZGI0OTggMTAwNjQ0Ci0tLSBhL2lwYy9tc2cuYworKysgYi9pcGMvbXNnLmMKQEAgLTY3 OCw3ICs2NzgsNyBAQCBsb25nIGRvX21zZ3NuZChpbnQgbXNxaWQsIGxvbmcgbXR5cGUsIHZvaWQg X191c2VyICptdGV4dCwKIAkJcmN1X3JlYWRfbG9jaygpOwogCQlpcGNfbG9ja19vYmplY3QoJm1z cS0+cV9wZXJtKTsKIAotCQlpcGNfcmN1X3B1dHJlZihtc3EsIGlwY19yY3VfZnJlZSk7CisJCWlw Y19yY3VfcHV0cmVmKG1zcSwgbXNnX3JjdV9mcmVlKTsKIAkJLyogcmFjZWQgd2l0aCBSTUlEPyAq LwogCQlpZiAoIWlwY192YWxpZF9vYmplY3QoJm1zcS0+cV9wZXJtKSkgewogCQkJZXJyID0gLUVJ RFJNOwpkaWZmIC0tZ2l0IGEvaXBjL3NlbS5jIGIvaXBjL3NlbS5jCmluZGV4IDU0MWNiMGZmOWJk Ni4uZmIwYzRjOTZlNTBhIDEwMDY0NAotLS0gYS9pcGMvc2VtLmMKKysrIGIvaXBjL3NlbS5jCkBA IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2VtX2FycmF5ICpzZW1fb2J0 YWluX29iamVjdF9jaGVjayhzdHJ1Y3QgaXBjX25hbWVzcGFjZSAqbnMKIHN0YXRpYyBpbmxpbmUg dm9pZCBzZW1fbG9ja19hbmRfcHV0cmVmKHN0cnVjdCBzZW1fYXJyYXkgKnNtYSkKIHsKIAlzZW1f bG9jayhzbWEsIE5VTEwsIC0xKTsKLQlpcGNfcmN1X3B1dHJlZihzbWEsIGlwY19yY3VfZnJlZSk7 CisJaXBjX3JjdV9wdXRyZWYoc21hLCBzZW1fcmN1X2ZyZWUpOwogfQogCiBzdGF0aWMgaW5saW5l IHZvaWQgc2VtX3JtaWQoc3RydWN0IGlwY19uYW1lc3BhY2UgKm5zLCBzdHJ1Y3Qgc2VtX2FycmF5 ICpzKQpAQCAtMTM4NSw3ICsxMzg1LDcgQEAgc3RhdGljIGludCBzZW1jdGxfbWFpbihzdHJ1Y3Qg aXBjX25hbWVzcGFjZSAqbnMsIGludCBzZW1pZCwgaW50IHNlbW51bSwKIAkJCXJjdV9yZWFkX3Vu bG9jaygpOwogCQkJc2VtX2lvID0gaXBjX2FsbG9jKHNpemVvZih1c2hvcnQpKm5zZW1zKTsKIAkJ CWlmIChzZW1faW8gPT0gTlVMTCkgewotCQkJCWlwY19yY3VfcHV0cmVmKHNtYSwgaXBjX3JjdV9m cmVlKTsKKwkJCQlpcGNfcmN1X3B1dHJlZihzbWEsIHNlbV9yY3VfZnJlZSk7CiAJCQkJcmV0dXJu IC1FTk9NRU07CiAJCQl9CiAKQEAgLTE0MTksMjAgKzE0MTksMjAgQEAgc3RhdGljIGludCBzZW1j dGxfbWFpbihzdHJ1Y3QgaXBjX25hbWVzcGFjZSAqbnMsIGludCBzZW1pZCwgaW50IHNlbW51bSwK IAkJaWYgKG5zZW1zID4gU0VNTVNMX0ZBU1QpIHsKIAkJCXNlbV9pbyA9IGlwY19hbGxvYyhzaXpl b2YodXNob3J0KSpuc2Vtcyk7CiAJCQlpZiAoc2VtX2lvID09IE5VTEwpIHsKLQkJCQlpcGNfcmN1 X3B1dHJlZihzbWEsIGlwY19yY3VfZnJlZSk7CisJCQkJaXBjX3JjdV9wdXRyZWYoc21hLCBzZW1f cmN1X2ZyZWUpOwogCQkJCXJldHVybiAtRU5PTUVNOwogCQkJfQogCQl9CiAKIAkJaWYgKGNvcHlf ZnJvbV91c2VyKHNlbV9pbywgcCwgbnNlbXMqc2l6ZW9mKHVzaG9ydCkpKSB7Ci0JCQlpcGNfcmN1 X3B1dHJlZihzbWEsIGlwY19yY3VfZnJlZSk7CisJCQlpcGNfcmN1X3B1dHJlZihzbWEsIHNlbV9y Y3VfZnJlZSk7CiAJCQllcnIgPSAtRUZBVUxUOwogCQkJZ290byBvdXRfZnJlZTsKIAkJfQogCiAJ CWZvciAoaSA9IDA7IGkgPCBuc2VtczsgaSsrKSB7CiAJCQlpZiAoc2VtX2lvW2ldID4gU0VNVk1Y KSB7Ci0JCQkJaXBjX3JjdV9wdXRyZWYoc21hLCBpcGNfcmN1X2ZyZWUpOworCQkJCWlwY19yY3Vf cHV0cmVmKHNtYSwgc2VtX3JjdV9mcmVlKTsKIAkJCQllcnIgPSAtRVJBTkdFOwogCQkJCWdvdG8g b3V0X2ZyZWU7CiAJCQl9CkBAIC0xNzIyLDcgKzE3MjIsNyBAQCBzdGF0aWMgc3RydWN0IHNlbV91 bmRvICpmaW5kX2FsbG9jX3VuZG8oc3RydWN0IGlwY19uYW1lc3BhY2UgKm5zLCBpbnQgc2VtaWQp CiAJLyogc3RlcCAyOiBhbGxvY2F0ZSBuZXcgdW5kbyBzdHJ1Y3R1cmUgKi8KIAluZXcgPSBremFs bG9jKHNpemVvZihzdHJ1Y3Qgc2VtX3VuZG8pICsgc2l6ZW9mKHNob3J0KSpuc2VtcywgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFuZXcpIHsKLQkJaXBjX3JjdV9wdXRyZWYoc21hLCBpcGNfcmN1X2ZyZWUp OworCQlpcGNfcmN1X3B1dHJlZihzbWEsIHNlbV9yY3VfZnJlZSk7CiAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCX0KIApkaWZmIC0tZ2l0IGEva2VybmVsL2NwdXNldC5jIGIva2VybmVsL2Nw dXNldC5jCmluZGV4IDUyNGE4ZWVmMjk2NS4uNTMzNDk0MjM2YzEyIDEwMDY0NAotLS0gYS9rZXJu ZWwvY3B1c2V0LmMKKysrIGIva2VybmVsL2NwdXNldC5jCkBAIC0xOTYzLDYgKzE5NjMsMjAgQEAg c3RhdGljIHZvaWQgY3B1c2V0X2Nzc19mcmVlKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpj c3MpCiAJa2ZyZWUoY3MpOwogfQogCisvKgorICogTWFrZSBzdXJlIHRoZSBuZXcgdGFzayBjb25m b3JtIHRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIGl0cyBwYXJlbnQsCisgKiB3aGljaCBjb3VsZCBo YXZlIGJlZW4gY2hhbmdlZCBieSBjcHVzZXQganVzdCBhZnRlciBpdCBpbmhlcml0cyB0aGUKKyAq IHN0YXRlIGZyb20gdGhlIHBhcmVudCBhbmQgYmVmb3JlIGl0IHNpdHMgb24gdGhlIGNncm91cCdz IHRhc2sgbGlzdC4KKyAqLwordm9pZCBjcHVzZXRfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2spCit7CisJaWYgKHRhc2tfY3NzX2lzX3Jvb3QodGFzaywgY3B1c2V0X2NncnBfaWQpKQorCQly ZXR1cm47CisKKwlzZXRfY3B1c19hbGxvd2VkX3B0cih0YXNrLCAmY3VycmVudC0+Y3B1c19hbGxv d2VkKTsKKwl0YXNrLT5tZW1zX2FsbG93ZWQgPSBjdXJyZW50LT5tZW1zX2FsbG93ZWQ7Cit9CisK IHN0cnVjdCBjZ3JvdXBfc3Vic3lzIGNwdXNldF9jZ3JwX3N1YnN5cyA9IHsKIAkuY3NzX2FsbG9j ID0gY3B1c2V0X2Nzc19hbGxvYywKIAkuY3NzX29ubGluZSA9IGNwdXNldF9jc3Nfb25saW5lLApA QCAtMTk3MSw2ICsxOTg1LDcgQEAgc3RydWN0IGNncm91cF9zdWJzeXMgY3B1c2V0X2NncnBfc3Vi c3lzID0gewogCS5jYW5fYXR0YWNoID0gY3B1c2V0X2Nhbl9hdHRhY2gsCiAJLmNhbmNlbF9hdHRh Y2ggPSBjcHVzZXRfY2FuY2VsX2F0dGFjaCwKIAkuYXR0YWNoID0gY3B1c2V0X2F0dGFjaCwKKwku Zm9yawkJPSBjcHVzZXRfZm9yaywKIAkuYmFzZV9jZnR5cGVzID0gZmlsZXMsCiAJLmVhcmx5X2lu aXQgPSAxLAogfTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwvZm9yay5jCmlu ZGV4IGE0Y2EwNmU4MDk3Mi4uNjAyZGJhYzBiMjAxIDEwMDY0NAotLS0gYS9rZXJuZWwvZm9yay5j CisrKyBiL2tlcm5lbC9mb3JrLmMKQEAgLTc3NywxNCArNzc3LDEyIEBAIHZvaWQgbW1fcmVsZWFz ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pCiAJZGVhY3Rp dmF0ZV9tbSh0c2ssIG1tKTsKIAogCS8qCi0JICogSWYgd2UncmUgZXhpdGluZyBub3JtYWxseSwg Y2xlYXIgYSB1c2VyLXNwYWNlIHRpZCBmaWVsZCBpZgotCSAqIHJlcXVlc3RlZC4gIFdlIGxlYXZl IHRoaXMgYWxvbmUgd2hlbiBkeWluZyBieSBzaWduYWwsIHRvIGxlYXZlCi0JICogdGhlIHZhbHVl IGludGFjdCBpbiBhIGNvcmUgZHVtcCwgYW5kIHRvIHNhdmUgdGhlIHVubmVjZXNzYXJ5Ci0JICog dHJvdWJsZSwgc2F5LCBhIGtpbGxlZCB2Zm9yayBwYXJlbnQgc2hvdWxkbid0IHRvdWNoIHRoaXMg bW0uCi0JICogVXNlcmxhbmQgb25seSB3YW50cyB0aGlzIGRvbmUgZm9yIGEgc3lzX2V4aXQuCisJ ICogU2lnbmFsIHVzZXJzcGFjZSBpZiB3ZSdyZSBub3QgZXhpdGluZyB3aXRoIGEgY29yZSBkdW1w CisJICogYmVjYXVzZSB3ZSB3YW50IHRvIGxlYXZlIHRoZSB2YWx1ZSBpbnRhY3QgZm9yIGRlYnVn Z2luZworCSAqIHB1cnBvc2VzLgogCSAqLwogCWlmICh0c2stPmNsZWFyX2NoaWxkX3RpZCkgewot CQlpZiAoISh0c2stPmZsYWdzICYgUEZfU0lHTkFMRUQpICYmCisJCWlmICghKHRzay0+c2lnbmFs LT5mbGFncyAmIFNJR05BTF9HUk9VUF9DT1JFRFVNUCkgJiYKIAkJICAgIGF0b21pY19yZWFkKCZt bS0+bW1fdXNlcnMpID4gMSkgewogCQkJLyoKIAkJCSAqIFdlIGRvbid0IGNoZWNrIHRoZSBlcnJv ciBjb2RlIC0gaWYgdXNlcnNwYWNlIGhhcwpkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVsZS5jIGIv a2VybmVsL21vZHVsZS5jCmluZGV4IGMzY2E3NjBlZGFmMC4uOGMzYmFmMDVmN2JkIDEwMDY0NAot LS0gYS9rZXJuZWwvbW9kdWxlLmMKKysrIGIva2VybmVsL21vZHVsZS5jCkBAIC0yNDM1LDEzICsy NDM1LDE4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrbWVtbGVha19sb2FkX21vZHVsZShjb25zdCBz dHJ1Y3QgbW9kdWxlICptb2QsCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19NT0RVTEVfU0lHCi1z dGF0aWMgaW50IG1vZHVsZV9zaWdfY2hlY2soc3RydWN0IGxvYWRfaW5mbyAqaW5mbykKK3N0YXRp YyBpbnQgbW9kdWxlX3NpZ19jaGVjayhzdHJ1Y3QgbG9hZF9pbmZvICppbmZvLCBpbnQgZmxhZ3Mp CiB7CiAJaW50IGVyciA9IC1FTk9LRVk7CiAJY29uc3QgdW5zaWduZWQgbG9uZyBtYXJrZXJsZW4g PSBzaXplb2YoTU9EVUxFX1NJR19TVFJJTkcpIC0gMTsKIAljb25zdCB2b2lkICptb2QgPSBpbmZv LT5oZHI7CiAKLQlpZiAoaW5mby0+bGVuID4gbWFya2VybGVuICYmCisJLyoKKwkgKiBSZXF1aXJl IGZsYWdzID09IDAsIGFzIGEgbW9kdWxlIHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbgorCSAqIHJl bW92ZWQgaXMgbm8gbG9uZ2VyIHRoZSBtb2R1bGUgdGhhdCB3YXMgc2lnbmVkCisJICovCisJaWYg KGZsYWdzID09IDAgJiYKKwkgICAgaW5mby0+bGVuID4gbWFya2VybGVuICYmCiAJICAgIG1lbWNt cChtb2QgKyBpbmZvLT5sZW4gLSBtYXJrZXJsZW4sIE1PRFVMRV9TSUdfU1RSSU5HLCBtYXJrZXJs ZW4pID09IDApIHsKIAkJLyogV2UgdHJ1bmNhdGUgdGhlIG1vZHVsZSB0byBkaXNjYXJkIHRoZSBz aWduYXR1cmUgKi8KIAkJaW5mby0+bGVuIC09IG1hcmtlcmxlbjsKQEAgLTI0NjMsNyArMjQ2OCw3 IEBAIHN0YXRpYyBpbnQgbW9kdWxlX3NpZ19jaGVjayhzdHJ1Y3QgbG9hZF9pbmZvICppbmZvKQog CXJldHVybiBlcnI7CiB9CiAjZWxzZSAvKiAhQ09ORklHX01PRFVMRV9TSUcgKi8KLXN0YXRpYyBp bnQgbW9kdWxlX3NpZ19jaGVjayhzdHJ1Y3QgbG9hZF9pbmZvICppbmZvKQorc3RhdGljIGludCBt b2R1bGVfc2lnX2NoZWNrKHN0cnVjdCBsb2FkX2luZm8gKmluZm8sIGludCBmbGFncykKIHsKIAly ZXR1cm4gMDsKIH0KQEAgLTMyMDAsNyArMzIwNSw3IEBAIHN0YXRpYyBpbnQgbG9hZF9tb2R1bGUo c3RydWN0IGxvYWRfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKnVhcmdzLAogCWxvbmcg ZXJyOwogCWNoYXIgKmFmdGVyX2Rhc2hlczsKIAotCWVyciA9IG1vZHVsZV9zaWdfY2hlY2soaW5m byk7CisJZXJyID0gbW9kdWxlX3NpZ19jaGVjayhpbmZvLCBmbGFncyk7CiAJaWYgKGVycikKIAkJ Z290byBmcmVlX2NvcHk7CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3NpeC1jcHUtdGltZXJzLmMg Yi9rZXJuZWwvcG9zaXgtY3B1LXRpbWVycy5jCmluZGV4IDNiODk0NjQxNmE1Zi4uNGJkMWRkN2Ri MWExIDEwMDY0NAotLS0gYS9rZXJuZWwvcG9zaXgtY3B1LXRpbWVycy5jCisrKyBiL2tlcm5lbC9w b3NpeC1jcHUtdGltZXJzLmMKQEAgLTc5OCw2ICs3OTgsNyBAQCBzdGF0aWMgdm9pZCBwb3NpeF9j cHVfdGltZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCBpdGltZXJzcGVjICpp dHApCiAJCQl0aW1lci0+aXQuY3B1LmV4cGlyZXMgPSAwOwogCQkJc2FtcGxlX3RvX3RpbWVzcGVj KHRpbWVyLT5pdF9jbG9jaywgdGltZXItPml0LmNwdS5leHBpcmVzLAogCQkJCQkgICAmaXRwLT5p dF92YWx1ZSk7CisJCQlyZXR1cm47CiAJCX0gZWxzZSB7CiAJCQljcHVfdGltZXJfc2FtcGxlX2dy b3VwKHRpbWVyLT5pdF9jbG9jaywgcCwgJm5vdyk7CiAJCQl1bmxvY2tfdGFza19zaWdoYW5kKHAs ICZmbGFncyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvaGliZXJuYXRlLmMgYi9rZXJuZWwv cG93ZXIvaGliZXJuYXRlLmMKaW5kZXggMjg2ZWY2MDcyNzE0Li4yZGFlYjJlYzE5NzkgMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9wb3dlci9oaWJlcm5hdGUuYworKysgYi9rZXJuZWwvcG93ZXIvaGliZXJu YXRlLmMKQEAgLTMwMSwxMiArMzAxLDEyIEBAIHN0YXRpYyBpbnQgY3JlYXRlX2ltYWdlKGludCBw bGF0Zm9ybV9tb2RlKQogCXNhdmVfcHJvY2Vzc29yX3N0YXRlKCk7CiAJdHJhY2Vfc3VzcGVuZF9y ZXN1bWUoVFBTKCJtYWNoaW5lX3N1c3BlbmQiKSwgUE1fRVZFTlRfSElCRVJOQVRFLCB0cnVlKTsK IAllcnJvciA9IHN3c3VzcF9hcmNoX3N1c3BlbmQoKTsKKwkvKiBSZXN0b3JlIGNvbnRyb2wgZmxv dyBtYWdpY2FsbHkgYXBwZWFycyBoZXJlICovCisJcmVzdG9yZV9wcm9jZXNzb3Jfc3RhdGUoKTsK IAl0cmFjZV9zdXNwZW5kX3Jlc3VtZShUUFMoIm1hY2hpbmVfc3VzcGVuZCIpLCBQTV9FVkVOVF9I SUJFUk5BVEUsIGZhbHNlKTsKIAlpZiAoZXJyb3IpCiAJCXByaW50ayhLRVJOX0VSUiAiUE06IEVy cm9yICVkIGNyZWF0aW5nIGhpYmVybmF0aW9uIGltYWdlXG4iLAogCQkJZXJyb3IpOwotCS8qIFJl c3RvcmUgY29udHJvbCBmbG93IG1hZ2ljYWxseSBhcHBlYXJzIGhlcmUgKi8KLQlyZXN0b3JlX3By b2Nlc3Nvcl9zdGF0ZSgpOwogCWlmICghaW5fc3VzcGVuZCkKIAkJZXZlbnRzX2NoZWNrX2VuYWJs ZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9icmFpbGxlLmMgYi9rZXJu ZWwvcHJpbnRrL2JyYWlsbGUuYwppbmRleCAyNzY3NjJmM2E0NjAuLmQ1NzYwYzQyZjA0MiAxMDA2 NDQKLS0tIGEva2VybmVsL3ByaW50ay9icmFpbGxlLmMKKysrIGIva2VybmVsL3ByaW50ay9icmFp bGxlLmMKQEAgLTksMTAgKzksMTAgQEAKIAogY2hhciAqX2JyYWlsbGVfY29uc29sZV9zZXR1cChj aGFyICoqc3RyLCBjaGFyICoqYnJsX29wdGlvbnMpCiB7Ci0JaWYgKCFtZW1jbXAoKnN0ciwgImJy bCwiLCA0KSkgeworCWlmICghc3RybmNtcCgqc3RyLCAiYnJsLCIsIDQpKSB7CiAJCSpicmxfb3B0 aW9ucyA9ICIiOwogCQkqc3RyICs9IDQ7Ci0JfSBlbHNlIGlmICghbWVtY21wKHN0ciwgImJybD0i LCA0KSkgeworCX0gZWxzZSBpZiAoIXN0cm5jbXAoKnN0ciwgImJybD0iLCA0KSkgewogCQkqYnJs X29wdGlvbnMgPSAqc3RyICsgNDsKIAkJKnN0ciA9IHN0cmNocigqYnJsX29wdGlvbnMsICcsJyk7 CiAJCWlmICghKnN0cikKZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9jb3JlLmMgYi9rZXJuZWwv c2NoZWQvY29yZS5jCmluZGV4IDdjOTBmODA1ZTQ1Ny4uZjJjMGJjYzRiYTZjIDEwMDY0NAotLS0g YS9rZXJuZWwvc2NoZWQvY29yZS5jCisrKyBiL2tlcm5lbC9zY2hlZC9jb3JlLmMKQEAgLTE2OTYs NiArMTY5NiwyOCBAQCB0cnlfdG9fd2FrZV91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHVuc2ln bmVkIGludCBzdGF0ZSwgaW50IHdha2VfZmxhZ3MpCiAJc3VjY2VzcyA9IDE7IC8qIHdlJ3JlIGdv aW5nIHRvIGNoYW5nZSAtPnN0YXRlICovCiAJY3B1ID0gdGFza19jcHUocCk7CiAKKwkvKgorCSAq IEVuc3VyZSB3ZSBsb2FkIHAtPm9uX3JxIF9hZnRlcl8gcC0+c3RhdGUsIG90aGVyd2lzZSBpdCB3 b3VsZAorCSAqIGJlIHBvc3NpYmxlIHRvLCBmYWxzZWx5LCBvYnNlcnZlIHAtPm9uX3JxID09IDAg YW5kIGdldCBzdHVjaworCSAqIGluIHNtcF9jb25kX2xvYWRfYWNxdWlyZSgpIGJlbG93LgorCSAq CisJICogc2NoZWRfdHR3dV9wZW5kaW5nKCkgICAgICAgICAgICAgICAgIHRyeV90b193YWtlX3Vw KCkKKwkgKiAgIFtTXSBwLT5vbl9ycSA9IDE7ICAgICAgICAgICAgICAgICAgW0xdIFAtPnN0YXRl CisJICogICAgICAgVU5MT0NLIHJxLT5sb2NrICAtLS0tLS4KKwkgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKwkgKgkJCQkgKy0tLSAgIFJNQgorCSAqIHNjaGVkdWxlKCkgICAgICAg ICAgICAgICAgICAgLworCSAqICAgICAgIExPQ0sgcnEtPmxvY2sgICAgLS0tLS0nCisJICogICAg ICAgVU5MT0NLIHJxLT5sb2NrCisJICoKKwkgKiBbdGFzayBwXQorCSAqICAgW1NdIHAtPnN0YXRl ID0gVU5JTlRFUlJVUFRJQkxFICAgICBbTF0gcC0+b25fcnEKKwkgKgorCSAqIFBhaXJzIHdpdGgg dGhlIFVOTE9DSytMT0NLIG9uIHJxLT5sb2NrIGZyb20gdGhlCisJICogbGFzdCB3YWtldXAgb2Yg b3VyIHRhc2sgYW5kIHRoZSBzY2hlZHVsZSB0aGF0IGdvdCBvdXIgdGFzaworCSAqIGN1cnJlbnQu CisJICovCisJc21wX3JtYigpOwogCWlmIChwLT5vbl9ycSAmJiB0dHd1X3JlbW90ZShwLCB3YWtl X2ZsYWdzKSkKIAkJZ290byBzdGF0OwogCkBAIC01MTQ3LDcgKzUxNjksNiBAQCBtaWdyYXRpb25f Y2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5mYiwgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZv aWQgKmhjcHUpCiAKIAljYXNlIENQVV9VUF9QUkVQQVJFOgogCQlycS0+Y2FsY19sb2FkX3VwZGF0 ZSA9IGNhbGNfbG9hZF91cGRhdGU7Ci0JCWFjY291bnRfcmVzZXRfcnEocnEpOwogCQlicmVhazsK IAogCWNhc2UgQ1BVX09OTElORToKZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9zY2hlZC5oIGIv a2VybmVsL3NjaGVkL3NjaGVkLmgKaW5kZXggM2I0NWJhMThmN2Y0Li44ODM3OTcyNGZjNWIgMTAw NjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZC9zY2hlZC5oCisrKyBiL2tlcm5lbC9zY2hlZC9zY2hlZC5o CkBAIC0xNTYzLDE2ICsxNTYzLDMgQEAgc3RhdGljIGlubGluZSB1NjQgaXJxX3RpbWVfcmVhZChp bnQgY3B1KQogfQogI2VuZGlmIC8qIENPTkZJR182NEJJVCAqLwogI2VuZGlmIC8qIENPTkZJR19J UlFfVElNRV9BQ0NPVU5USU5HICovCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhY2NvdW50X3Jlc2V0 X3JxKHN0cnVjdCBycSAqcnEpCi17Ci0jaWZkZWYgQ09ORklHX0lSUV9USU1FX0FDQ09VTlRJTkcK LQlycS0+cHJldl9pcnFfdGltZSA9IDA7Ci0jZW5kaWYKLSNpZmRlZiBDT05GSUdfUEFSQVZJUlQK LQlycS0+cHJldl9zdGVhbF90aW1lID0gMDsKLSNlbmRpZgotI2lmZGVmIENPTkZJR19QQVJBVklS VF9USU1FX0FDQ09VTlRJTkcKLQlycS0+cHJldl9zdGVhbF90aW1lX3JxID0gMDsKLSNlbmRpZgot fQpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmdfZGVidWcuYyBiL2tlcm5lbC90 aW1lL3RpbWVrZWVwaW5nX2RlYnVnLmMKaW5kZXggNGQ1NGY5NzU1OGRmLi5iYmRhNjIzYWFmYTcg MTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nX2RlYnVnLmMKKysrIGIva2VybmVs L3RpbWUvdGltZWtlZXBpbmdfZGVidWcuYwpAQCAtMjMsNyArMjMsOSBAQAogCiAjaW5jbHVkZSAi dGltZWtlZXBpbmdfaW50ZXJuYWwuaCIKIAotc3RhdGljIHVuc2lnbmVkIGludCBzbGVlcF90aW1l X2JpblszMl0gPSB7MH07CisjZGVmaW5lIE5VTV9CSU5TIDMyCisKK3N0YXRpYyB1bnNpZ25lZCBp bnQgc2xlZXBfdGltZV9iaW5bTlVNX0JJTlNdID0gezB9OwogCiBzdGF0aWMgaW50IHRrX2RlYnVn X3Nob3dfc2xlZXBfdGltZShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCiB7CkBAIC02 OSw2ICs3MSw5IEBAIGxhdGVfaW5pdGNhbGwodGtfZGVidWdfc2xlZXBfdGltZV9pbml0KTsKIAog dm9pZCB0a19kZWJ1Z19hY2NvdW50X3NsZWVwX3RpbWUoc3RydWN0IHRpbWVzcGVjICp0KQogewot CXNsZWVwX3RpbWVfYmluW2Zscyh0LT50dl9zZWMpXSsrOworCS8qIENhcCBiaW4gaW5kZXggc28g d2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIGFycmF5ICovCisJaW50IGJpbiA9IG1pbihmbHModC0+dHZf c2VjKSwgTlVNX0JJTlMtMSk7CisKKwlzbGVlcF90aW1lX2JpbltiaW5dKys7CiB9CiAKZGlmZiAt LWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZS5jIGIva2VybmVsL3RyYWNlL3RyYWNlLmMKaW5kZXgg NmQzYzM4OTY2ZWRhLi44ZGYwZWQ5YWYyOTEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS90cmFj ZS5jCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZS5jCkBAIC00NDM1LDEzICs0NDM1LDYgQEAgdHJh Y2luZ19yZWFkX3BpcGUoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICp1YnVmLAogCXN0 cnVjdCB0cmFjZV9hcnJheSAqdHIgPSBpdGVyLT50cjsKIAlzc2l6ZV90IHNyZXQ7CiAKLQkvKiBy ZXR1cm4gYW55IGxlZnRvdmVyIGRhdGEgKi8KLQlzcmV0ID0gdHJhY2Vfc2VxX3RvX3VzZXIoJml0 ZXItPnNlcSwgdWJ1ZiwgY250KTsKLQlpZiAoc3JldCAhPSAtRUJVU1kpCi0JCXJldHVybiBzcmV0 OwotCi0JdHJhY2Vfc2VxX2luaXQoJml0ZXItPnNlcSk7Ci0KIAkvKiBjb3B5IHRoZSB0cmFjZXIg dG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgbG9jayBhbGwgYXJvdW5kICovCiAJbXV0ZXhfbG9jaygm dHJhY2VfdHlwZXNfbG9jayk7CiAJaWYgKHVubGlrZWx5KGl0ZXItPnRyYWNlLT5uYW1lICE9IHRy LT5jdXJyZW50X3RyYWNlLT5uYW1lKSkKQEAgLTQ0NTQsNiArNDQ0NywxNCBAQCB0cmFjaW5nX3Jl YWRfcGlwZShzdHJ1Y3QgZmlsZSAqZmlscCwgY2hhciBfX3VzZXIgKnVidWYsCiAJICogaXMgcHJv dGVjdGVkLgogCSAqLwogCW11dGV4X2xvY2soJml0ZXItPm11dGV4KTsKKworCS8qIHJldHVybiBh bnkgbGVmdG92ZXIgZGF0YSAqLworCXNyZXQgPSB0cmFjZV9zZXFfdG9fdXNlcigmaXRlci0+c2Vx LCB1YnVmLCBjbnQpOworCWlmIChzcmV0ICE9IC1FQlVTWSkKKwkJZ290byBvdXQ7CisKKwl0cmFj ZV9zZXFfaW5pdCgmaXRlci0+c2VxKTsKKwogCWlmIChpdGVyLT50cmFjZS0+cmVhZCkgewogCQlz cmV0ID0gaXRlci0+dHJhY2UtPnJlYWQoaXRlciwgZmlscCwgdWJ1ZiwgY250LCBwcG9zKTsKIAkJ aWYgKHNyZXQpCmRpZmYgLS1naXQgYS9saWIvbXBpL21waWNvZGVyLmMgYi9saWIvbXBpL21waWNv ZGVyLmMKaW5kZXggNGNjNjQ0MjczM2Y0Li5mZThiOWZmYmJiNTAgMTAwNjQ0Ci0tLSBhL2xpYi9t cGkvbXBpY29kZXIuYworKysgYi9saWIvbXBpL21waWNvZGVyLmMKQEAgLTQ4LDcgKzQ4LDcgQEAg TVBJIG1waV9yZWFkX3Jhd19kYXRhKGNvbnN0IHZvaWQgKnhidWZmZXIsIHNpemVfdCBuYnl0ZXMp CiAJCXJldHVybiBOVUxMOwogCX0KIAlpZiAobmJ5dGVzID4gMCkKLQkJbmJpdHMgLT0gY291bnRf bGVhZGluZ196ZXJvcyhidWZmZXJbMF0pOworCQluYml0cyAtPSBjb3VudF9sZWFkaW5nX3plcm9z KGJ1ZmZlclswXSkgLSAoQklUU19QRVJfTE9ORyAtIDgpOwogCWVsc2UKIAkJbmJpdHMgPSAwOwog CmRpZmYgLS1naXQgYS9tbS9iYWNraW5nLWRldi5jIGIvbW0vYmFja2luZy1kZXYuYwppbmRleCBh ZmM4NTkzMzI3ZDYuLjVkZjdiNzk1MTNlYSAxMDA2NDQKLS0tIGEvbW0vYmFja2luZy1kZXYuYwor KysgYi9tbS9iYWNraW5nLWRldi5jCkBAIC0zNTAsNiArMzUwLDIwIEBAIGludCBiZGlfcmVnaXN0 ZXJfZGV2KHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpiZGksIGRldl90IGRldikKIH0KIEVYUE9S VF9TWU1CT0woYmRpX3JlZ2lzdGVyX2Rldik7CiAKK2ludCBiZGlfcmVnaXN0ZXJfb3duZXIoc3Ry dWN0IGJhY2tpbmdfZGV2X2luZm8gKmJkaSwgc3RydWN0IGRldmljZSAqb3duZXIpCit7CisJaW50 IHJjOworCisJcmMgPSBiZGlfcmVnaXN0ZXIoYmRpLCBOVUxMLCAiJXU6JXUiLCBNQUpPUihvd25l ci0+ZGV2dCksCisJCQlNSU5PUihvd25lci0+ZGV2dCkpOworCWlmIChyYykKKwkJcmV0dXJuIHJj OworCWJkaS0+b3duZXIgPSBvd25lcjsKKwlnZXRfZGV2aWNlKG93bmVyKTsKKwlyZXR1cm4gMDsK K30KK0VYUE9SVF9TWU1CT0woYmRpX3JlZ2lzdGVyX293bmVyKTsKKwogLyoKICAqIFJlbW92ZSBi ZGkgZnJvbSB0aGUgZ2xvYmFsIGxpc3QgYW5kIHNodXRkb3duIGFueSB0aHJlYWRzIHdlIGhhdmUg cnVubmluZwogICovCkBAIC00MTgsNiArNDMyLDExIEBAIHZvaWQgYmRpX3VucmVnaXN0ZXIoc3Ry dWN0IGJhY2tpbmdfZGV2X2luZm8gKmJkaSkKIAogCQlkZXZpY2VfdW5yZWdpc3RlcihkZXYpOwog CX0KKworCWlmIChiZGktPm93bmVyKSB7CisJCXB1dF9kZXZpY2UoYmRpLT5vd25lcik7CisJCWJk aS0+b3duZXIgPSBOVUxMOworCX0KIH0KIEVYUE9SVF9TWU1CT0woYmRpX3VucmVnaXN0ZXIpOwog CmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmMKaW5kZXggMzIyNDYyZDI3 Yjk5Li43OTgzMjQ5NDFhODcgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYworKysgYi9tbS9maWxl bWFwLmMKQEAgLTEwOCw2ICsxMDgsNDggQEAKICAqICAgLT50YXNrbGlzdF9sb2NrICAgICAgICAg ICAgKG1lbW9yeV9mYWlsdXJlLCBjb2xsZWN0X3Byb2NzX2FvKQogICovCiAKK3N0YXRpYyBpbnQg cGFnZV9jYWNoZV90cmVlX2luc2VydChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJ CQkgIHN0cnVjdCBwYWdlICpwYWdlLCB2b2lkICoqc2hhZG93cCkKK3sKKwlzdHJ1Y3QgcmFkaXhf dHJlZV9ub2RlICpub2RlOworCXZvaWQgKipzbG90OworCWludCBlcnJvcjsKKworCWVycm9yID0g X19yYWRpeF90cmVlX2NyZWF0ZSgmbWFwcGluZy0+cGFnZV90cmVlLCBwYWdlLT5pbmRleCwKKwkJ CQkgICAgJm5vZGUsICZzbG90KTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKwlpZiAo KnNsb3QpIHsKKwkJdm9pZCAqcDsKKworCQlwID0gcmFkaXhfdHJlZV9kZXJlZl9zbG90X3Byb3Rl Y3RlZChzbG90LCAmbWFwcGluZy0+dHJlZV9sb2NrKTsKKwkJaWYgKCFyYWRpeF90cmVlX2V4Y2Vw dGlvbmFsX2VudHJ5KHApKQorCQkJcmV0dXJuIC1FRVhJU1Q7CisJCWlmIChzaGFkb3dwKQorCQkJ KnNoYWRvd3AgPSBwOworCQltYXBwaW5nLT5ucnNoYWRvd3MtLTsKKwkJaWYgKG5vZGUpCisJCQl3 b3JraW5nc2V0X25vZGVfc2hhZG93c19kZWMobm9kZSk7CisJfQorCXJhZGl4X3RyZWVfcmVwbGFj ZV9zbG90KHNsb3QsIHBhZ2UpOworCW1hcHBpbmctPm5ycGFnZXMrKzsKKwlpZiAobm9kZSkgewor CQl3b3JraW5nc2V0X25vZGVfcGFnZXNfaW5jKG5vZGUpOworCQkvKgorCQkgKiBEb24ndCB0cmFj ayBub2RlIHRoYXQgY29udGFpbnMgYWN0dWFsIHBhZ2VzLgorCQkgKgorCQkgKiBBdm9pZCBhY3F1 aXJpbmcgdGhlIGxpc3RfbHJ1IGxvY2sgaWYgYWxyZWFkeQorCQkgKiB1bnRyYWNrZWQuICBUaGUg bGlzdF9lbXB0eSgpIHRlc3QgaXMgc2FmZSBhcworCQkgKiBub2RlLT5wcml2YXRlX2xpc3QgaXMg cHJvdGVjdGVkIGJ5CisJCSAqIG1hcHBpbmctPnRyZWVfbG9jay4KKwkJICovCisJCWlmICghbGlz dF9lbXB0eSgmbm9kZS0+cHJpdmF0ZV9saXN0KSkKKwkJCWxpc3RfbHJ1X2RlbCgmd29ya2luZ3Nl dF9zaGFkb3dfbm9kZXMsCisJCQkJICAgICAmbm9kZS0+cHJpdmF0ZV9saXN0KTsKKwl9CisJcmV0 dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIHBhZ2VfY2FjaGVfdHJlZV9kZWxldGUoc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCQkJICAgc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQgKnNo YWRvdykKIHsKQEAgLTQ5NCw3ICs1MzYsNyBAQCBpbnQgcmVwbGFjZV9wYWdlX2NhY2hlX3BhZ2Uo c3RydWN0IHBhZ2UgKm9sZCwgc3RydWN0IHBhZ2UgKm5ldywgZ2ZwX3QgZ2ZwX21hc2spCiAKIAkJ c3Bpbl9sb2NrX2lycSgmbWFwcGluZy0+dHJlZV9sb2NrKTsKIAkJX19kZWxldGVfZnJvbV9wYWdl X2NhY2hlKG9sZCwgTlVMTCk7Ci0JCWVycm9yID0gcmFkaXhfdHJlZV9pbnNlcnQoJm1hcHBpbmct PnBhZ2VfdHJlZSwgb2Zmc2V0LCBuZXcpOworCQllcnJvciA9IHBhZ2VfY2FjaGVfdHJlZV9pbnNl cnQobWFwcGluZywgbmV3LCBOVUxMKTsKIAkJQlVHX09OKGVycm9yKTsKIAkJbWFwcGluZy0+bnJw YWdlcysrOwogCQlfX2luY196b25lX3BhZ2Vfc3RhdGUobmV3LCBOUl9GSUxFX1BBR0VTKTsKQEAg LTUxMyw0OCArNTU1LDYgQEAgaW50IHJlcGxhY2VfcGFnZV9jYWNoZV9wYWdlKHN0cnVjdCBwYWdl ICpvbGQsIHN0cnVjdCBwYWdlICpuZXcsIGdmcF90IGdmcF9tYXNrKQogfQogRVhQT1JUX1NZTUJP TF9HUEwocmVwbGFjZV9wYWdlX2NhY2hlX3BhZ2UpOwogCi1zdGF0aWMgaW50IHBhZ2VfY2FjaGVf dHJlZV9pbnNlcnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCi0JCQkJICBzdHJ1Y3Qg cGFnZSAqcGFnZSwgdm9pZCAqKnNoYWRvd3ApCi17Ci0Jc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAq bm9kZTsKLQl2b2lkICoqc2xvdDsKLQlpbnQgZXJyb3I7Ci0KLQllcnJvciA9IF9fcmFkaXhfdHJl ZV9jcmVhdGUoJm1hcHBpbmctPnBhZ2VfdHJlZSwgcGFnZS0+aW5kZXgsCi0JCQkJICAgICZub2Rl LCAmc2xvdCk7Ci0JaWYgKGVycm9yKQotCQlyZXR1cm4gZXJyb3I7Ci0JaWYgKCpzbG90KSB7Ci0J CXZvaWQgKnA7Ci0KLQkJcCA9IHJhZGl4X3RyZWVfZGVyZWZfc2xvdF9wcm90ZWN0ZWQoc2xvdCwg Jm1hcHBpbmctPnRyZWVfbG9jayk7Ci0JCWlmICghcmFkaXhfdHJlZV9leGNlcHRpb25hbF9lbnRy eShwKSkKLQkJCXJldHVybiAtRUVYSVNUOwotCQlpZiAoc2hhZG93cCkKLQkJCSpzaGFkb3dwID0g cDsKLQkJbWFwcGluZy0+bnJzaGFkb3dzLS07Ci0JCWlmIChub2RlKQotCQkJd29ya2luZ3NldF9u b2RlX3NoYWRvd3NfZGVjKG5vZGUpOwotCX0KLQlyYWRpeF90cmVlX3JlcGxhY2Vfc2xvdChzbG90 LCBwYWdlKTsKLQltYXBwaW5nLT5ucnBhZ2VzKys7Ci0JaWYgKG5vZGUpIHsKLQkJd29ya2luZ3Nl dF9ub2RlX3BhZ2VzX2luYyhub2RlKTsKLQkJLyoKLQkJICogRG9uJ3QgdHJhY2sgbm9kZSB0aGF0 IGNvbnRhaW5zIGFjdHVhbCBwYWdlcy4KLQkJICoKLQkJICogQXZvaWQgYWNxdWlyaW5nIHRoZSBs aXN0X2xydSBsb2NrIGlmIGFscmVhZHkKLQkJICogdW50cmFja2VkLiAgVGhlIGxpc3RfZW1wdHko KSB0ZXN0IGlzIHNhZmUgYXMKLQkJICogbm9kZS0+cHJpdmF0ZV9saXN0IGlzIHByb3RlY3RlZCBi eQotCQkgKiBtYXBwaW5nLT50cmVlX2xvY2suCi0JCSAqLwotCQlpZiAoIWxpc3RfZW1wdHkoJm5v ZGUtPnByaXZhdGVfbGlzdCkpCi0JCQlsaXN0X2xydV9kZWwoJndvcmtpbmdzZXRfc2hhZG93X25v ZGVzLAotCQkJCSAgICAgJm5vZGUtPnByaXZhdGVfbGlzdCk7Ci0JfQotCXJldHVybiAwOwotfQot CiBzdGF0aWMgaW50IF9fYWRkX3RvX3BhZ2VfY2FjaGVfbG9ja2VkKHN0cnVjdCBwYWdlICpwYWdl LAogCQkJCSAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkJCSAgICAgIHBn b2ZmX3Qgb2Zmc2V0LCBnZnBfdCBnZnBfbWFzaywKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBi L21tL2h1Z2V0bGIuYwppbmRleCBjODMzMzJkODAxNTIuLjAyMjVmMWM2MjYzYSAxMDA2NDQKLS0t IGEvbW0vaHVnZXRsYi5jCisrKyBiL21tL2h1Z2V0bGIuYwpAQCAtMTY1NSw2ICsxNjU1LDEwIEBA IHN0YXRpYyB1bnNpZ25lZCBsb25nIHNldF9tYXhfaHVnZV9wYWdlcyhzdHJ1Y3QgaHN0YXRlICpo LCB1bnNpZ25lZCBsb25nIGNvdW50LAogCQkgKiBhbmQgcmVkdWNpbmcgdGhlIHN1cnBsdXMuCiAJ CSAqLwogCQlzcGluX3VubG9jaygmaHVnZXRsYl9sb2NrKTsKKworCQkvKiB5aWVsZCBjcHUgdG8g YXZvaWQgc29mdCBsb2NrdXAgKi8KKwkJY29uZF9yZXNjaGVkKCk7CisKIAkJaWYgKGhzdGF0ZV9p c19naWdhbnRpYyhoKSkKIAkJCXJldCA9IGFsbG9jX2ZyZXNoX2dpZ2FudGljX3BhZ2UoaCwgbm9k ZXNfYWxsb3dlZCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5k ZXggNjkxZjFiZjU1ODU4Li5kOGM5YzY4OTg2MmMgMTAwNjQ0Ci0tLSBhL21tL2tzbS5jCisrKyBi L21tL2tzbS5jCkBAIC0yODMsNyArMjgzLDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgcm1hcF9p dGVtICphbGxvY19ybWFwX2l0ZW0odm9pZCkKIHsKIAlzdHJ1Y3Qgcm1hcF9pdGVtICpybWFwX2l0 ZW07CiAKLQlybWFwX2l0ZW0gPSBrbWVtX2NhY2hlX3phbGxvYyhybWFwX2l0ZW1fY2FjaGUsIEdG UF9LRVJORUwpOworCXJtYXBfaXRlbSA9IGttZW1fY2FjaGVfemFsbG9jKHJtYXBfaXRlbV9jYWNo ZSwgR0ZQX0tFUk5FTCB8CisJCQkJCQlfX0dGUF9OT1JFVFJZIHwgX19HRlBfTk9XQVJOKTsKIAlp ZiAocm1hcF9pdGVtKQogCQlrc21fcm1hcF9pdGVtcysrOwogCXJldHVybiBybWFwX2l0ZW07CmRp ZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwppbmRleCBhMmI4N2FmZmRjMjMuLmVm YWI3YTc5YjA1ZiAxMDA2NDQKLS0tIGEvbW0vc2htZW0uYworKysgYi9tbS9zaG1lbS5jCkBAIC01 NDAsNyArNTQwLDcgQEAgc3RhdGljIGludCBzaG1lbV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRl bnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnkt PmRfaW5vZGU7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUs IGF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVy cm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL21tL3dvcmtpbmdzZXQuYyBiL21t L3dvcmtpbmdzZXQuYwppbmRleCBmNzIxNmZhN2RhMjcuLmMwNjhmOGM4NGYwNyAxMDA2NDQKLS0t IGEvbW0vd29ya2luZ3NldC5jCisrKyBiL21tL3dvcmtpbmdzZXQuYwpAQCAtMzQwLDIxICszNDAs MTkgQEAgc3RhdGljIGVudW0gbHJ1X3N0YXR1cyBzaGFkb3dfbHJ1X2lzb2xhdGUoc3RydWN0IGxp c3RfaGVhZCAqaXRlbSwKIAkgKiBubyBwYWdlcywgc28gd2UgZXhwZWN0IHRvIGJlIGFibGUgdG8g cmVtb3ZlIHRoZW0gYWxsIGFuZAogCSAqIGRlbGV0ZSBhbmQgZnJlZSB0aGUgZW1wdHkgbm9kZSBh ZnRlcndhcmRzLgogCSAqLwotCi0JQlVHX09OKCFub2RlLT5jb3VudCk7Ci0JQlVHX09OKG5vZGUt PmNvdW50ICYgUkFESVhfVFJFRV9DT1VOVF9NQVNLKTsKKwlCVUdfT04oIXdvcmtpbmdzZXRfbm9k ZV9zaGFkb3dzKG5vZGUpKTsKKwlCVUdfT04od29ya2luZ3NldF9ub2RlX3BhZ2VzKG5vZGUpKTsK IAogCWZvciAoaSA9IDA7IGkgPCBSQURJWF9UUkVFX01BUF9TSVpFOyBpKyspIHsKIAkJaWYgKG5v ZGUtPnNsb3RzW2ldKSB7CiAJCQlCVUdfT04oIXJhZGl4X3RyZWVfZXhjZXB0aW9uYWxfZW50cnko bm9kZS0+c2xvdHNbaV0pKTsKIAkJCW5vZGUtPnNsb3RzW2ldID0gTlVMTDsKLQkJCUJVR19PTihu b2RlLT5jb3VudCA8ICgxVSA8PCBSQURJWF9UUkVFX0NPVU5UX1NISUZUKSk7Ci0JCQlub2RlLT5j b3VudCAtPSAxVSA8PCBSQURJWF9UUkVFX0NPVU5UX1NISUZUOworCQkJd29ya2luZ3NldF9ub2Rl X3NoYWRvd3NfZGVjKG5vZGUpOwogCQkJQlVHX09OKCFtYXBwaW5nLT5ucnNoYWRvd3MpOwogCQkJ bWFwcGluZy0+bnJzaGFkb3dzLS07CiAJCX0KIAl9Ci0JQlVHX09OKG5vZGUtPmNvdW50KTsKKwlC VUdfT04od29ya2luZ3NldF9ub2RlX3NoYWRvd3Mobm9kZSkpOwogCWluY196b25lX3N0YXRlKHBh Z2Vfem9uZSh2aXJ0X3RvX3BhZ2Uobm9kZSkpLCBXT1JLSU5HU0VUX05PREVSRUNMQUlNKTsKIAlp ZiAoIV9fcmFkaXhfdHJlZV9kZWxldGVfbm9kZSgmbWFwcGluZy0+cGFnZV90cmVlLCBub2RlKSkK IAkJQlVHKCk7CmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi9icmlkZ2VfbG9vcF9hdm9pZGFu Y2UuYyBiL25ldC9iYXRtYW4tYWR2L2JyaWRnZV9sb29wX2F2b2lkYW5jZS5jCmluZGV4IDkwNjcz ZmY4Yjg3Yi4uMzM1NDAxZDYzNTFjIDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi9icmlkZ2Vf bG9vcF9hdm9pZGFuY2UuYworKysgYi9uZXQvYmF0bWFuLWFkdi9icmlkZ2VfbG9vcF9hdm9pZGFu Y2UuYwpAQCAtMTE1LDcgKzExNSwxOCBAQCBiYXRhZHZfYmFja2JvbmVfZ3dfZnJlZV9yZWYoc3Ry dWN0IGJhdGFkdl9ibGFfYmFja2JvbmVfZ3cgKmJhY2tib25lX2d3KQogLyogZmluYWxseSBkZWlu aXRpYWxpemUgdGhlIGNsYWltICovCiBzdGF0aWMgdm9pZCBiYXRhZHZfY2xhaW1fcmVsZWFzZShz dHJ1Y3QgYmF0YWR2X2JsYV9jbGFpbSAqY2xhaW0pCiB7Ci0JYmF0YWR2X2JhY2tib25lX2d3X2Zy ZWVfcmVmKGNsYWltLT5iYWNrYm9uZV9ndyk7CisJc3RydWN0IGJhdGFkdl9ibGFfYmFja2JvbmVf Z3cgKm9sZF9iYWNrYm9uZV9ndzsKKwlzcGluX2xvY2tfYmgoJmNsYWltLT5iYWNrYm9uZV9sb2Nr KTsKKwlvbGRfYmFja2JvbmVfZ3cgPSBjbGFpbS0+YmFja2JvbmVfZ3c7CisJY2xhaW0tPmJhY2ti b25lX2d3ID0gTlVMTDsKKwlzcGluX3VubG9ja19iaCgmY2xhaW0tPmJhY2tib25lX2xvY2spOwor CisJc3Bpbl9sb2NrX2JoKCZvbGRfYmFja2JvbmVfZ3ctPmNyY19sb2NrKTsKKwlvbGRfYmFja2Jv bmVfZ3ctPmNyYyBePSBjcmMxNigwLCBjbGFpbS0+YWRkciwgRVRIX0FMRU4pOworCXNwaW5fdW5s b2NrX2JoKCZvbGRfYmFja2JvbmVfZ3ctPmNyY19sb2NrKTsKKworCWJhdGFkdl9iYWNrYm9uZV9n d19mcmVlX3JlZihvbGRfYmFja2JvbmVfZ3cpOworCiAJa2ZyZWVfcmN1KGNsYWltLCByY3UpOwog fQogCkBAIC0yNDIsNyArMjUzLDkgQEAgYmF0YWR2X2JsYV9kZWxfYmFja2JvbmVfY2xhaW1zKHN0 cnVjdCBiYXRhZHZfYmxhX2JhY2tib25lX2d3ICpiYWNrYm9uZV9ndykKIAl9CiAKIAkvKiBhbGwg Y2xhaW1zIGdvbmUsIGludGlhbGl6ZSBDUkMgKi8KKwlzcGluX2xvY2tfYmgoJmJhY2tib25lX2d3 LT5jcmNfbG9jayk7CiAJYmFja2JvbmVfZ3ctPmNyYyA9IEJBVEFEVl9CTEFfQ1JDX0lOSVQ7CisJ c3Bpbl91bmxvY2tfYmgoJmJhY2tib25lX2d3LT5jcmNfbG9jayk7CiB9CiAKIC8qKgpAQCAtMzM4 LDkgKzM1MSwxMiBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfYmxhX3NlbmRfY2xhaW0oc3RydWN0IGJh dGFkdl9wcml2ICpiYXRfcHJpdiwgdWludDhfdCAqbWFjLAogCQlicmVhazsKIAl9CiAKLQlpZiAo dmlkICYgQkFUQURWX1ZMQU5fSEFTX1RBRykKKwlpZiAodmlkICYgQkFUQURWX1ZMQU5fSEFTX1RB RykgewogCQlza2IgPSB2bGFuX2luc2VydF90YWcoc2tiLCBodG9ucyhFVEhfUF84MDIxUSksCiAJ CQkJICAgICAgdmlkICYgVkxBTl9WSURfTUFTSyk7CisJCWlmICghc2tiKQorCQkJZ290byBvdXQ7 CisJfQogCiAJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKIAlza2ItPnByb3RvY29sID0gZXRo X3R5cGVfdHJhbnMoc2tiLCBzb2Z0X2lmYWNlKTsKQEAgLTM4OSw2ICs0MDUsNyBAQCBiYXRhZHZf YmxhX2dldF9iYWNrYm9uZV9ndyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCB1aW50OF90 ICpvcmlnLAogCWVudHJ5LT5sYXN0dGltZSA9IGppZmZpZXM7CiAJZW50cnktPmNyYyA9IEJBVEFE Vl9CTEFfQ1JDX0lOSVQ7CiAJZW50cnktPmJhdF9wcml2ID0gYmF0X3ByaXY7CisJc3Bpbl9sb2Nr X2luaXQoJmVudHJ5LT5jcmNfbG9jayk7CiAJYXRvbWljX3NldCgmZW50cnktPnJlcXVlc3Rfc2Vu dCwgMCk7CiAJYXRvbWljX3NldCgmZW50cnktPndhaXRfcGVyaW9kcywgMCk7CiAJZXRoZXJfYWRk cl9jb3B5KGVudHJ5LT5vcmlnLCBvcmlnKTsKQEAgLTUzNyw3ICs1NTQsOSBAQCBzdGF0aWMgdm9p ZCBiYXRhZHZfYmxhX3NlbmRfYW5ub3VuY2Uoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwK IAlfX2JlMTYgY3JjOwogCiAJbWVtY3B5KG1hYywgYmF0YWR2X2Fubm91bmNlX21hYywgNCk7CisJ c3Bpbl9sb2NrX2JoKCZiYWNrYm9uZV9ndy0+Y3JjX2xvY2spOwogCWNyYyA9IGh0b25zKGJhY2ti b25lX2d3LT5jcmMpOworCXNwaW5fdW5sb2NrX2JoKCZiYWNrYm9uZV9ndy0+Y3JjX2xvY2spOwog CW1lbWNweSgmbWFjWzRdLCAmY3JjLCAyKTsKIAogCWJhdGFkdl9ibGFfc2VuZF9jbGFpbShiYXRf cHJpdiwgbWFjLCBiYWNrYm9uZV9ndy0+dmlkLApAQCAtNTU1LDggKzU3NCwxMCBAQCBzdGF0aWMg dm9pZCBiYXRhZHZfYmxhX2FkZF9jbGFpbShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LAog CQkJCSBjb25zdCB1aW50OF90ICptYWMsIGNvbnN0IHVuc2lnbmVkIHNob3J0IHZpZCwKIAkJCQkg c3RydWN0IGJhdGFkdl9ibGFfYmFja2JvbmVfZ3cgKmJhY2tib25lX2d3KQogeworCXN0cnVjdCBi YXRhZHZfYmxhX2JhY2tib25lX2d3ICpvbGRfYmFja2JvbmVfZ3c7CiAJc3RydWN0IGJhdGFkdl9i bGFfY2xhaW0gKmNsYWltOwogCXN0cnVjdCBiYXRhZHZfYmxhX2NsYWltIHNlYXJjaF9jbGFpbTsK Kwlib29sIHJlbW92ZV9jcmMgPSBmYWxzZTsKIAlpbnQgaGFzaF9hZGRlZDsKIAogCWV0aGVyX2Fk ZHJfY29weShzZWFyY2hfY2xhaW0uYWRkciwgbWFjKTsKQEAgLTU3MCw4ICs1OTEsMTAgQEAgc3Rh dGljIHZvaWQgYmF0YWR2X2JsYV9hZGRfY2xhaW0oc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJp diwKIAkJCXJldHVybjsKIAogCQlldGhlcl9hZGRyX2NvcHkoY2xhaW0tPmFkZHIsIG1hYyk7CisJ CXNwaW5fbG9ja19pbml0KCZjbGFpbS0+YmFja2JvbmVfbG9jayk7CiAJCWNsYWltLT52aWQgPSB2 aWQ7CiAJCWNsYWltLT5sYXN0dGltZSA9IGppZmZpZXM7CisJCWF0b21pY19pbmMoJmJhY2tib25l X2d3LT5yZWZjb3VudCk7CiAJCWNsYWltLT5iYWNrYm9uZV9ndyA9IGJhY2tib25lX2d3OwogCiAJ CWF0b21pY19zZXQoJmNsYWltLT5yZWZjb3VudCwgMik7CkBAIC01OTgsMjAgKzYyMSw1NSBAQCBz dGF0aWMgdm9pZCBiYXRhZHZfYmxhX2FkZF9jbGFpbShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9w cml2LAogCQkJICAgImJsYV9hZGRfY2xhaW0oKTogY2hhbmdpbmcgb3duZXJzaGlwIGZvciAlcE0s IHZpZCAlZFxuIiwKIAkJCSAgIG1hYywgQkFUQURWX1BSSU5UX1ZJRCh2aWQpKTsKIAotCQljbGFp bS0+YmFja2JvbmVfZ3ctPmNyYyBePSBjcmMxNigwLCBjbGFpbS0+YWRkciwgRVRIX0FMRU4pOwot CQliYXRhZHZfYmFja2JvbmVfZ3dfZnJlZV9yZWYoY2xhaW0tPmJhY2tib25lX2d3KTsKKwkJcmVt b3ZlX2NyYyA9IHRydWU7CiAJfQotCS8qIHNldCAobmV3KSBiYWNrYm9uZSBndyAqLworCisJLyog cmVwbGFjZSBiYWNrYm9uZV9ndyBhdG9taWNhbGx5IGFuZCBhZGp1c3QgcmVmZXJlbmNlIGNvdW50 ZXJzICovCisJc3Bpbl9sb2NrX2JoKCZjbGFpbS0+YmFja2JvbmVfbG9jayk7CisJb2xkX2JhY2ti b25lX2d3ID0gY2xhaW0tPmJhY2tib25lX2d3OwogCWF0b21pY19pbmMoJmJhY2tib25lX2d3LT5y ZWZjb3VudCk7CiAJY2xhaW0tPmJhY2tib25lX2d3ID0gYmFja2JvbmVfZ3c7CisJc3Bpbl91bmxv Y2tfYmgoJmNsYWltLT5iYWNrYm9uZV9sb2NrKTsKIAorCWlmIChyZW1vdmVfY3JjKSB7CisJCS8q IHJlbW92ZSBjbGFpbSBhZGRyZXNzIGZyb20gb2xkIGJhY2tib25lX2d3ICovCisJCXNwaW5fbG9j a19iaCgmb2xkX2JhY2tib25lX2d3LT5jcmNfbG9jayk7CisJCW9sZF9iYWNrYm9uZV9ndy0+Y3Jj IF49IGNyYzE2KDAsIGNsYWltLT5hZGRyLCBFVEhfQUxFTik7CisJCXNwaW5fdW5sb2NrX2JoKCZv bGRfYmFja2JvbmVfZ3ctPmNyY19sb2NrKTsKKwl9CisKKwliYXRhZHZfYmFja2JvbmVfZ3dfZnJl ZV9yZWYob2xkX2JhY2tib25lX2d3KTsKKworCS8qIGFkZCBjbGFpbSBhZGRyZXNzIHRvIG5ldyBi YWNrYm9uZV9ndyAqLworCXNwaW5fbG9ja19iaCgmYmFja2JvbmVfZ3ctPmNyY19sb2NrKTsKIAli YWNrYm9uZV9ndy0+Y3JjIF49IGNyYzE2KDAsIGNsYWltLT5hZGRyLCBFVEhfQUxFTik7CisJc3Bp bl91bmxvY2tfYmgoJmJhY2tib25lX2d3LT5jcmNfbG9jayk7CiAJYmFja2JvbmVfZ3ctPmxhc3R0 aW1lID0gamlmZmllczsKIAogY2xhaW1fZnJlZV9yZWY6CiAJYmF0YWR2X2NsYWltX2ZyZWVfcmVm KGNsYWltKTsKIH0KIAorLyoqCisgKiBiYXRhZHZfYmxhX2NsYWltX2dldF9iYWNrYm9uZV9ndyAt IEdldCB2YWxpZCByZWZlcmVuY2UgZm9yIGJhY2tib25lX2d3IG9mCisgKiAgY2xhaW0KKyAqIEBj bGFpbTogY2xhaW0gd2hvc2UgYmFja2JvbmVfZ3cgc2hvdWxkIGJlIHJldHVybmVkCisgKgorICog UmV0dXJuOiB2YWxpZCByZWZlcmVuY2UgdG8gY2xhaW06OmJhY2tib25lX2d3CisgKi8KK3N0YXRp YyBzdHJ1Y3QgYmF0YWR2X2JsYV9iYWNrYm9uZV9ndyAqCitiYXRhZHZfYmxhX2NsYWltX2dldF9i YWNrYm9uZV9ndyhzdHJ1Y3QgYmF0YWR2X2JsYV9jbGFpbSAqY2xhaW0pCit7CisJc3RydWN0IGJh dGFkdl9ibGFfYmFja2JvbmVfZ3cgKmJhY2tib25lX2d3OworCisJc3Bpbl9sb2NrX2JoKCZjbGFp bS0+YmFja2JvbmVfbG9jayk7CisJYmFja2JvbmVfZ3cgPSBjbGFpbS0+YmFja2JvbmVfZ3c7CisJ YXRvbWljX2luYygmYmFja2JvbmVfZ3ctPnJlZmNvdW50KTsKKwlzcGluX3VubG9ja19iaCgmY2xh aW0tPmJhY2tib25lX2xvY2spOworCisJcmV0dXJuIGJhY2tib25lX2d3OworfQorCiAvKiBEZWxl dGUgYSBjbGFpbSBmcm9tIHRoZSBjbGFpbSBoYXNoIHdoaWNoIGhhcyB0aGUKICAqIGdpdmVuIG1h YyBhZGRyZXNzIGFuZCB2aWQuCiAgKi8KQEAgLTYzMyw4ICs2OTEsNiBAQCBzdGF0aWMgdm9pZCBi YXRhZHZfYmxhX2RlbF9jbGFpbShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LAogCQkJICAg YmF0YWR2X2Nob29zZV9jbGFpbSwgY2xhaW0pOwogCWJhdGFkdl9jbGFpbV9mcmVlX3JlZihjbGFp bSk7IC8qIHJlZmVyZW5jZSBmcm9tIHRoZSBoYXNoIGlzIGdvbmUgKi8KIAotCWNsYWltLT5iYWNr Ym9uZV9ndy0+Y3JjIF49IGNyYzE2KDAsIGNsYWltLT5hZGRyLCBFVEhfQUxFTik7Ci0KIAkvKiBk b24ndCBuZWVkIHRoZSByZWZlcmVuY2UgZnJvbSBoYXNoX2ZpbmQoKSBhbnltb3JlICovCiAJYmF0 YWR2X2NsYWltX2ZyZWVfcmVmKGNsYWltKTsKIH0KQEAgLTY0NSw3ICs3MDEsNyBAQCBzdGF0aWMg aW50IGJhdGFkdl9oYW5kbGVfYW5ub3VuY2Uoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwK IAkJCQkgIHVuc2lnbmVkIHNob3J0IHZpZCkKIHsKIAlzdHJ1Y3QgYmF0YWR2X2JsYV9iYWNrYm9u ZV9ndyAqYmFja2JvbmVfZ3c7Ci0JdWludDE2X3QgY3JjOworCXVpbnQxNl90IGJhY2tib25lX2Ny YywgY3JjOwogCiAJaWYgKG1lbWNtcChhbl9hZGRyLCBiYXRhZHZfYW5ub3VuY2VfbWFjLCA0KSAh PSAwKQogCQlyZXR1cm4gMDsKQEAgLTY2NSwxMiArNzIxLDE2IEBAIHN0YXRpYyBpbnQgYmF0YWR2 X2hhbmRsZV9hbm5vdW5jZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LAogCQkgICAiaGFu ZGxlX2Fubm91bmNlKCk6IEFOTk9VTkNFIHZpZCAlZCAoc2VudCBieSAlcE0pLi4uIENSQyA9ICUj LjR4XG4iLAogCQkgICBCQVRBRFZfUFJJTlRfVklEKHZpZCksIGJhY2tib25lX2d3LT5vcmlnLCBj cmMpOwogCi0JaWYgKGJhY2tib25lX2d3LT5jcmMgIT0gY3JjKSB7CisJc3Bpbl9sb2NrX2JoKCZi YWNrYm9uZV9ndy0+Y3JjX2xvY2spOworCWJhY2tib25lX2NyYyA9IGJhY2tib25lX2d3LT5jcmM7 CisJc3Bpbl91bmxvY2tfYmgoJmJhY2tib25lX2d3LT5jcmNfbG9jayk7CisKKwlpZiAoYmFja2Jv bmVfY3JjICE9IGNyYykgewogCQliYXRhZHZfZGJnKEJBVEFEVl9EQkdfQkxBLCBiYWNrYm9uZV9n dy0+YmF0X3ByaXYsCiAJCQkgICAiaGFuZGxlX2Fubm91bmNlKCk6IENSQyBGQUlMRUQgZm9yICVw TS8lZCAobXkgPSAlIy40eCwgc2VudCA9ICUjLjR4KVxuIiwKIAkJCSAgIGJhY2tib25lX2d3LT5v cmlnLAogCQkJICAgQkFUQURWX1BSSU5UX1ZJRChiYWNrYm9uZV9ndy0+dmlkKSwKLQkJCSAgIGJh Y2tib25lX2d3LT5jcmMsIGNyYyk7CisJCQkgICBiYWNrYm9uZV9jcmMsIGNyYyk7CiAKIAkJYmF0 YWR2X2JsYV9zZW5kX3JlcXVlc3QoYmFja2JvbmVfZ3cpOwogCX0gZWxzZSB7CkBAIC0xMDQxLDYg KzExMDEsNyBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfYmxhX3B1cmdlX2NsYWltcyhzdHJ1Y3QgYmF0 YWR2X3ByaXYgKmJhdF9wcml2LAogCQkJCSAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnBy aW1hcnlfaWYsCiAJCQkJICAgIGludCBub3cpCiB7CisJc3RydWN0IGJhdGFkdl9ibGFfYmFja2Jv bmVfZ3cgKmJhY2tib25lX2d3OwogCXN0cnVjdCBiYXRhZHZfYmxhX2NsYWltICpjbGFpbTsKIAlz dHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDsKIAlzdHJ1Y3QgYmF0YWR2X2hhc2h0YWJsZSAqaGFzaDsK QEAgLTEwNTUsMTQgKzExMTYsMTcgQEAgc3RhdGljIHZvaWQgYmF0YWR2X2JsYV9wdXJnZV9jbGFp bXMoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAogCQlyY3VfcmVhZF9sb2NrKCk7CiAJ CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShjbGFpbSwgaGVhZCwgaGFzaF9lbnRyeSkgeworCQkJ YmFja2JvbmVfZ3cgPSBiYXRhZHZfYmxhX2NsYWltX2dldF9iYWNrYm9uZV9ndyhjbGFpbSk7CiAJ CQlpZiAobm93KQogCQkJCWdvdG8gcHVyZ2Vfbm93OwotCQkJaWYgKCFiYXRhZHZfY29tcGFyZV9l dGgoY2xhaW0tPmJhY2tib25lX2d3LT5vcmlnLAorCisJCQlpZiAoIWJhdGFkdl9jb21wYXJlX2V0 aChiYWNrYm9uZV9ndy0+b3JpZywKIAkJCQkJCXByaW1hcnlfaWYtPm5ldF9kZXYtPmRldl9hZGRy KSkKLQkJCQljb250aW51ZTsKKwkJCQlnb3RvIHNraXA7CisKIAkJCWlmICghYmF0YWR2X2hhc190 aW1lZF9vdXQoY2xhaW0tPmxhc3R0aW1lLAogCQkJCQkJICBCQVRBRFZfQkxBX0NMQUlNX1RJTUVP VVQpKQotCQkJCWNvbnRpbnVlOworCQkJCWdvdG8gc2tpcDsKIAogCQkJYmF0YWR2X2RiZyhCQVRB RFZfREJHX0JMQSwgYmF0X3ByaXYsCiAJCQkJICAgImJsYV9wdXJnZV9jbGFpbXMoKTogJXBNLCB2 aWQgJWQsIHRpbWUgb3V0XG4iLApAQCAtMTA3MCw4ICsxMTM0LDEwIEBAIHN0YXRpYyB2b2lkIGJh dGFkdl9ibGFfcHVyZ2VfY2xhaW1zKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsCiAKIHB1 cmdlX25vdzoKIAkJCWJhdGFkdl9oYW5kbGVfdW5jbGFpbShiYXRfcHJpdiwgcHJpbWFyeV9pZiwK LQkJCQkJICAgICAgY2xhaW0tPmJhY2tib25lX2d3LT5vcmlnLAorCQkJCQkgICAgICBiYWNrYm9u ZV9ndy0+b3JpZywKIAkJCQkJICAgICAgY2xhaW0tPmFkZHIsIGNsYWltLT52aWQpOworc2tpcDoK KwkJCWJhdGFkdl9iYWNrYm9uZV9nd19mcmVlX3JlZihiYWNrYm9uZV9ndyk7CiAJCX0KIAkJcmN1 X3JlYWRfdW5sb2NrKCk7CiAJfQpAQCAtMTQ1OCw5ICsxNTI0LDExIEBAIHZvaWQgYmF0YWR2X2Js YV9mcmVlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpCiBpbnQgYmF0YWR2X2JsYV9yeChz dHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkgIHVu c2lnbmVkIHNob3J0IHZpZCwgYm9vbCBpc19iY2FzdCkKIHsKKwlzdHJ1Y3QgYmF0YWR2X2JsYV9i YWNrYm9uZV9ndyAqYmFja2JvbmVfZ3c7CiAJc3RydWN0IGV0aGhkciAqZXRoaGRyOwogCXN0cnVj dCBiYXRhZHZfYmxhX2NsYWltIHNlYXJjaF9jbGFpbSwgKmNsYWltID0gTlVMTDsKIAlzdHJ1Y3Qg YmF0YWR2X2hhcmRfaWZhY2UgKnByaW1hcnlfaWY7CisJYm9vbCBvd25fY2xhaW07CiAJaW50IHJl dDsKIAogCWV0aGhkciA9IGV0aF9oZHIoc2tiKTsKQEAgLTE0OTMsOCArMTU2MSwxMiBAQCBpbnQg YmF0YWR2X2JsYV9yeChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLAogCX0KIAogCS8qIGlmIGl0IGlzIG91ciBvd24gY2xhaW0gLi4uICovCi0JaWYgKGJh dGFkdl9jb21wYXJlX2V0aChjbGFpbS0+YmFja2JvbmVfZ3ctPm9yaWcsCi0JCQkgICAgICAgcHJp bWFyeV9pZi0+bmV0X2Rldi0+ZGV2X2FkZHIpKSB7CisJYmFja2JvbmVfZ3cgPSBiYXRhZHZfYmxh X2NsYWltX2dldF9iYWNrYm9uZV9ndyhjbGFpbSk7CisJb3duX2NsYWltID0gYmF0YWR2X2NvbXBh cmVfZXRoKGJhY2tib25lX2d3LT5vcmlnLAorCQkJCSAgICAgICBwcmltYXJ5X2lmLT5uZXRfZGV2 LT5kZXZfYWRkcik7CisJYmF0YWR2X2JhY2tib25lX2d3X2ZyZWVfcmVmKGJhY2tib25lX2d3KTsK KworCWlmIChvd25fY2xhaW0pIHsKIAkJLyogLi4uIGFsbG93IGl0IGluIGFueSBjYXNlICovCiAJ CWNsYWltLT5sYXN0dGltZSA9IGppZmZpZXM7CiAJCWdvdG8gYWxsb3c7CkBAIC0xNTU3LDcgKzE2 MjksOSBAQCBpbnQgYmF0YWR2X2JsYV90eChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLAogewogCXN0cnVjdCBldGhoZHIgKmV0aGhkcjsKIAlzdHJ1Y3Qg YmF0YWR2X2JsYV9jbGFpbSBzZWFyY2hfY2xhaW0sICpjbGFpbSA9IE5VTEw7CisJc3RydWN0IGJh dGFkdl9ibGFfYmFja2JvbmVfZ3cgKmJhY2tib25lX2d3OwogCXN0cnVjdCBiYXRhZHZfaGFyZF9p ZmFjZSAqcHJpbWFyeV9pZjsKKwlib29sIGNsaWVudF9yb2FtZWQ7CiAJaW50IHJldCA9IDA7CiAK IAlwcmltYXJ5X2lmID0gYmF0YWR2X3ByaW1hcnlfaWZfZ2V0X3NlbGVjdGVkKGJhdF9wcml2KTsK QEAgLTE1ODcsOCArMTY2MSwxMiBAQCBpbnQgYmF0YWR2X2JsYV90eChzdHJ1Y3QgYmF0YWR2X3By aXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIGFsbG93OwogCiAJLyog Y2hlY2sgaWYgd2UgYXJlIHJlc3BvbnNpYmxlLiAqLwotCWlmIChiYXRhZHZfY29tcGFyZV9ldGgo Y2xhaW0tPmJhY2tib25lX2d3LT5vcmlnLAotCQkJICAgICAgIHByaW1hcnlfaWYtPm5ldF9kZXYt PmRldl9hZGRyKSkgeworCWJhY2tib25lX2d3ID0gYmF0YWR2X2JsYV9jbGFpbV9nZXRfYmFja2Jv bmVfZ3coY2xhaW0pOworCWNsaWVudF9yb2FtZWQgPSBiYXRhZHZfY29tcGFyZV9ldGgoYmFja2Jv bmVfZ3ctPm9yaWcsCisJCQkJCSAgIHByaW1hcnlfaWYtPm5ldF9kZXYtPmRldl9hZGRyKTsKKwli YXRhZHZfYmFja2JvbmVfZ3dfZnJlZV9yZWYoYmFja2JvbmVfZ3cpOworCisJaWYgKGNsaWVudF9y b2FtZWQpIHsKIAkJLyogaWYgeWVzLCB0aGUgY2xpZW50IGhhcyByb2FtZWQgYW5kIHdlIGhhdmUK IAkJICogdG8gdW5jbGFpbSBpdC4KIAkJICovCkBAIC0xNjI5LDkgKzE3MDcsMTEgQEAgaW50IGJh dGFkdl9ibGFfY2xhaW1fdGFibGVfc2VxX3ByaW50X3RleHQoc3RydWN0IHNlcV9maWxlICpzZXEs IHZvaWQgKm9mZnNldCkKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldiA9IChzdHJ1Y3QgbmV0 X2RldmljZSAqKXNlcS0+cHJpdmF0ZTsKIAlzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2ID0g bmV0ZGV2X3ByaXYobmV0X2Rldik7CiAJc3RydWN0IGJhdGFkdl9oYXNodGFibGUgKmhhc2ggPSBi YXRfcHJpdi0+YmxhLmNsYWltX2hhc2g7CisJc3RydWN0IGJhdGFkdl9ibGFfYmFja2JvbmVfZ3cg KmJhY2tib25lX2d3OwogCXN0cnVjdCBiYXRhZHZfYmxhX2NsYWltICpjbGFpbTsKIAlzdHJ1Y3Qg YmF0YWR2X2hhcmRfaWZhY2UgKnByaW1hcnlfaWY7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7 CisJdTE2IGJhY2tib25lX2NyYzsKIAl1aW50MzJfdCBpOwogCWJvb2wgaXNfb3duOwogCXVpbnQ4 X3QgKnByaW1hcnlfYWRkcjsKQEAgLTE2NTIsMTMgKzE3MzIsMjEgQEAgaW50IGJhdGFkdl9ibGFf Y2xhaW1fdGFibGVfc2VxX3ByaW50X3RleHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKm9m ZnNldCkKIAogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShj bGFpbSwgaGVhZCwgaGFzaF9lbnRyeSkgewotCQkJaXNfb3duID0gYmF0YWR2X2NvbXBhcmVfZXRo KGNsYWltLT5iYWNrYm9uZV9ndy0+b3JpZywKKwkJCWJhY2tib25lX2d3ID0gYmF0YWR2X2JsYV9j bGFpbV9nZXRfYmFja2JvbmVfZ3coY2xhaW0pOworCisJCQlpc19vd24gPSBiYXRhZHZfY29tcGFy ZV9ldGgoYmFja2JvbmVfZ3ctPm9yaWcsCiAJCQkJCQkgICAgcHJpbWFyeV9hZGRyKTsKKworCQkJ c3Bpbl9sb2NrX2JoKCZiYWNrYm9uZV9ndy0+Y3JjX2xvY2spOworCQkJYmFja2JvbmVfY3JjID0g YmFja2JvbmVfZ3ctPmNyYzsKKwkJCXNwaW5fdW5sb2NrX2JoKCZiYWNrYm9uZV9ndy0+Y3JjX2xv Y2spOwogCQkJc2VxX3ByaW50ZihzZXEsICIgKiAlcE0gb24gJTVkIGJ5ICVwTSBbJWNdICglIy40 eClcbiIsCiAJCQkJICAgY2xhaW0tPmFkZHIsIEJBVEFEVl9QUklOVF9WSUQoY2xhaW0tPnZpZCks Ci0JCQkJICAgY2xhaW0tPmJhY2tib25lX2d3LT5vcmlnLAorCQkJCSAgIGJhY2tib25lX2d3LT5v cmlnLAogCQkJCSAgIChpc19vd24gPyAneCcgOiAnICcpLAotCQkJCSAgIGNsYWltLT5iYWNrYm9u ZV9ndy0+Y3JjKTsKKwkJCQkgICBiYWNrYm9uZV9jcmMpOworCisJCQliYXRhZHZfYmFja2JvbmVf Z3dfZnJlZV9yZWYoYmFja2JvbmVfZ3cpOwogCQl9CiAJCXJjdV9yZWFkX3VubG9jaygpOwogCX0K QEAgLTE2NzcsNiArMTc2NSw3IEBAIGludCBiYXRhZHZfYmxhX2JhY2tib25lX3RhYmxlX3NlcV9w cmludF90ZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICpvZmZzZXQpCiAJc3RydWN0IGJh dGFkdl9oYXJkX2lmYWNlICpwcmltYXJ5X2lmOwogCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOwog CWludCBzZWNzLCBtc2VjczsKKwl1MTYgYmFja2JvbmVfY3JjOwogCXVpbnQzMl90IGk7CiAJYm9v bCBpc19vd247CiAJdWludDhfdCAqcHJpbWFyeV9hZGRyOwpAQCAtMTcwNywxMCArMTc5NiwxNCBA QCBpbnQgYmF0YWR2X2JsYV9iYWNrYm9uZV90YWJsZV9zZXFfcHJpbnRfdGV4dChzdHJ1Y3Qgc2Vx X2ZpbGUgKnNlcSwgdm9pZCAqb2Zmc2V0KQogCQkJaWYgKGlzX293bikKIAkJCQljb250aW51ZTsK IAorCQkJc3Bpbl9sb2NrX2JoKCZiYWNrYm9uZV9ndy0+Y3JjX2xvY2spOworCQkJYmFja2JvbmVf Y3JjID0gYmFja2JvbmVfZ3ctPmNyYzsKKwkJCXNwaW5fdW5sb2NrX2JoKCZiYWNrYm9uZV9ndy0+ Y3JjX2xvY2spOworCiAJCQlzZXFfcHJpbnRmKHNlcSwgIiAqICVwTSBvbiAlNWQgJTRpLiUwM2lz ICglIy40eClcbiIsCiAJCQkJICAgYmFja2JvbmVfZ3ctPm9yaWcsCiAJCQkJICAgQkFUQURWX1BS SU5UX1ZJRChiYWNrYm9uZV9ndy0+dmlkKSwgc2VjcywKLQkJCQkgICBtc2VjcywgYmFja2JvbmVf Z3ctPmNyYyk7CisJCQkJICAgbXNlY3MsIGJhY2tib25lX2NyYyk7CiAJCX0KIAkJcmN1X3JlYWRf dW5sb2NrKCk7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvZGlzdHJpYnV0ZWQtYXJw LXRhYmxlLmMgYi9uZXQvYmF0bWFuLWFkdi9kaXN0cmlidXRlZC1hcnAtdGFibGUuYwppbmRleCBm NDliYWRjZmQ4YTEuLmRjMjQwYThkOTlkNCAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvZGlz dHJpYnV0ZWQtYXJwLXRhYmxlLmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvZGlzdHJpYnV0ZWQtYXJw LXRhYmxlLmMKQEAgLTk1OSw5ICs5NTksMTIgQEAgYm9vbCBiYXRhZHZfZGF0X3Nub29wX291dGdv aW5nX2FycF9yZXF1ZXN0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsCiAJCWlmICghc2ti X25ldykKIAkJCWdvdG8gb3V0OwogCi0JCWlmICh2aWQgJiBCQVRBRFZfVkxBTl9IQVNfVEFHKQor CQlpZiAodmlkICYgQkFUQURWX1ZMQU5fSEFTX1RBRykgewogCQkJc2tiX25ldyA9IHZsYW5faW5z ZXJ0X3RhZyhza2JfbmV3LCBodG9ucyhFVEhfUF84MDIxUSksCiAJCQkJCQkgIHZpZCAmIFZMQU5f VklEX01BU0spOworCQkJaWYgKCFza2JfbmV3KQorCQkJCWdvdG8gb3V0OworCQl9CiAKIAkJc2ti X3Jlc2V0X21hY19oZWFkZXIoc2tiX25ldyk7CiAJCXNrYl9uZXctPnByb3RvY29sID0gZXRoX3R5 cGVfdHJhbnMoc2tiX25ldywKQEAgLTEwMzksOSArMTA0MiwxMiBAQCBib29sIGJhdGFkdl9kYXRf c25vb3BfaW5jb21pbmdfYXJwX3JlcXVlc3Qoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwK IAkgKi8KIAlza2JfcmVzZXRfbWFjX2hlYWRlcihza2JfbmV3KTsKIAotCWlmICh2aWQgJiBCQVRB RFZfVkxBTl9IQVNfVEFHKQorCWlmICh2aWQgJiBCQVRBRFZfVkxBTl9IQVNfVEFHKSB7CiAJCXNr Yl9uZXcgPSB2bGFuX2luc2VydF90YWcoc2tiX25ldywgaHRvbnMoRVRIX1BfODAyMVEpLAogCQkJ CQkgIHZpZCAmIFZMQU5fVklEX01BU0spOworCQlpZiAoIXNrYl9uZXcpCisJCQlnb3RvIG91dDsK Kwl9CiAKIAkvKiBUbyBwcmVzZXJ2ZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG5vZGUg aGFzIGNob29zZSB0aGUgb3V0Z29pbmcKIAkgKiBmb3JtYXQgYmFzZWQgb24gdGhlIGluY29taW5n IHJlcXVlc3QgcGFja2V0IHR5cGUuIFRoZSBhc3N1bXB0aW9uIGlzCmRpZmYgLS1naXQgYS9uZXQv YmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKaW5k ZXggNmI0YWRmMTgxMGQzLi45ZTY5NjdhMWYyM2UgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2 L29yaWdpbmF0b3IuYworKysgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKQEAgLTUyOSw2 ICs1MjksOCBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfb3JpZ19ub2RlX3JlbGVhc2Uoc3RydWN0IGJh dGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSkKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZV90bXA7 CiAJc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpuZWlnaF9ub2RlOwogCXN0cnVjdCBiYXRhZHZf b3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvOworCXN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlX3ZsYW4g KnZsYW4sICp2bGFuX3RtcDsKKwlzdHJ1Y3QgYmF0YWR2X29yaWdfaWZpbmZvICpsYXN0X2NhbmRp ZGF0ZTsKIAogCXNwaW5fbG9ja19iaCgmb3JpZ19ub2RlLT5uZWlnaF9saXN0X2xvY2spOwogCkBA IC01NDQsOCArNTQ2LDIxIEBAIHN0YXRpYyB2b2lkIGJhdGFkdl9vcmlnX25vZGVfcmVsZWFzZShz dHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3JpZ19ub2RlKQogCQlobGlzdF9kZWxfcmN1KCZvcmln X2lmaW5mby0+bGlzdCk7CiAJCWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihvcmlnX2lmaW5m byk7CiAJfQorCisJbGFzdF9jYW5kaWRhdGUgPSBvcmlnX25vZGUtPmxhc3RfYm9uZGluZ19jYW5k aWRhdGU7CisJb3JpZ19ub2RlLT5sYXN0X2JvbmRpbmdfY2FuZGlkYXRlID0gTlVMTDsKIAlzcGlu X3VubG9ja19iaCgmb3JpZ19ub2RlLT5uZWlnaF9saXN0X2xvY2spOwogCisJaWYgKGxhc3RfY2Fu ZGlkYXRlKQorCQliYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYobGFzdF9jYW5kaWRhdGUpOwor CisJc3Bpbl9sb2NrX2JoKCZvcmlnX25vZGUtPnZsYW5fbGlzdF9sb2NrKTsKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUodmxhbiwgdmxhbl90bXAsICZvcmlnX25vZGUtPnZsYW5fbGlzdCwgbGlz dCkgeworCQlsaXN0X2RlbF9yY3UoJnZsYW4tPmxpc3QpOworCQliYXRhZHZfb3JpZ19ub2RlX3Zs YW5fZnJlZV9yZWYodmxhbik7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZvcmlnX25vZGUtPnZsYW5f bGlzdF9sb2NrKTsKKwogCS8qIEZyZWUgbmNfbm9kZXMgKi8KIAliYXRhZHZfbmNfcHVyZ2Vfb3Jp ZyhvcmlnX25vZGUtPmJhdF9wcml2LCBvcmlnX25vZGUsIE5VTEwpOwogCmRpZmYgLS1naXQgYS9u ZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMgYi9uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMKaW5kZXgg MjJiYmRkMDgyNTQ2Li4zNGMyMGNjMDY3MGMgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3Jv dXRpbmcuYworKysgYi9uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMKQEAgLTQyNSw2ICs0MjUsNTIg QEAgc3RhdGljIGludCBiYXRhZHZfY2hlY2tfdW5pY2FzdF9wYWNrZXQoc3RydWN0IGJhdGFkdl9w cml2ICpiYXRfcHJpdiwKIH0KIAogLyoqCisgKiBiYXRhZHZfbGFzdF9ib25kaW5nX2dldCAtIEdl dCBsYXN0X2JvbmRpbmdfY2FuZGlkYXRlIG9mIG9yaWdfbm9kZQorICogQG9yaWdfbm9kZTogb3Jp Z2luYXRvciBub2RlIHdob3NlIGxhc3QgYm9uZGluZyBjYW5kaWRhdGUgc2hvdWxkIGJlIHJldHJp ZXZlZAorICoKKyAqIFJldHVybjogbGFzdCBib25kaW5nIGNhbmRpZGF0ZSBvZiByb3V0ZXIgb3Ig TlVMTCBpZiBub3QgZm91bmQKKyAqCisgKiBUaGUgb2JqZWN0IGlzIHJldHVybmVkIHdpdGggcmVm Y291bnRlciBpbmNyZWFzZWQgYnkgMS4KKyAqLworc3RhdGljIHN0cnVjdCBiYXRhZHZfb3JpZ19p ZmluZm8gKgorYmF0YWR2X2xhc3RfYm9uZGluZ19nZXQoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUg Km9yaWdfbm9kZSkKK3sKKwlzdHJ1Y3QgYmF0YWR2X29yaWdfaWZpbmZvICpsYXN0X2JvbmRpbmdf Y2FuZGlkYXRlOworCisJc3Bpbl9sb2NrX2JoKCZvcmlnX25vZGUtPm5laWdoX2xpc3RfbG9jayk7 CisJbGFzdF9ib25kaW5nX2NhbmRpZGF0ZSA9IG9yaWdfbm9kZS0+bGFzdF9ib25kaW5nX2NhbmRp ZGF0ZTsKKworCWlmIChsYXN0X2JvbmRpbmdfY2FuZGlkYXRlKQorCQlhdG9taWNfaW5jKCZsYXN0 X2JvbmRpbmdfY2FuZGlkYXRlLT5yZWZjb3VudCk7CisJc3Bpbl91bmxvY2tfYmgoJm9yaWdfbm9k ZS0+bmVpZ2hfbGlzdF9sb2NrKTsKKworCXJldHVybiBsYXN0X2JvbmRpbmdfY2FuZGlkYXRlOwor fQorCisvKioKKyAqIGJhdGFkdl9sYXN0X2JvbmRpbmdfcmVwbGFjZSAtIFJlcGxhY2UgbGFzdF9i b25kaW5nX2NhbmRpZGF0ZSBvZiBvcmlnX25vZGUKKyAqIEBvcmlnX25vZGU6IG9yaWdpbmF0b3Ig bm9kZSB3aG9zZSBib25kaW5nIGNhbmRpZGF0ZXMgc2hvdWxkIGJlIHJlcGxhY2VkCisgKiBAbmV3 X2NhbmRpZGF0ZTogbmV3IGJvbmRpbmcgY2FuZGlkYXRlIG9yIE5VTEwKKyAqLworc3RhdGljIHZv aWQKK2JhdGFkdl9sYXN0X2JvbmRpbmdfcmVwbGFjZShzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAq b3JpZ19ub2RlLAorCQkJICAgIHN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm5ld19jYW5kaWRh dGUpCit7CisJc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb2xkX2NhbmRpZGF0ZTsKKworCXNw aW5fbG9ja19iaCgmb3JpZ19ub2RlLT5uZWlnaF9saXN0X2xvY2spOworCW9sZF9jYW5kaWRhdGUg PSBvcmlnX25vZGUtPmxhc3RfYm9uZGluZ19jYW5kaWRhdGU7CisKKwlpZiAobmV3X2NhbmRpZGF0 ZSkKKwkJYXRvbWljX2luYygmbmV3X2NhbmRpZGF0ZS0+cmVmY291bnQpOworCW9yaWdfbm9kZS0+ bGFzdF9ib25kaW5nX2NhbmRpZGF0ZSA9IG5ld19jYW5kaWRhdGU7CisJc3Bpbl91bmxvY2tfYmgo Jm9yaWdfbm9kZS0+bmVpZ2hfbGlzdF9sb2NrKTsKKworCWlmIChvbGRfY2FuZGlkYXRlKQorCQli YXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYob2xkX2NhbmRpZGF0ZSk7Cit9CisKKy8qKgogICog YmF0YWR2X2ZpbmRfcm91dGVyIC0gZmluZCBhIHN1aXRhYmxlIHJvdXRlciBmb3IgdGhpcyBvcmln aW5hdG9yCiAgKiBAYmF0X3ByaXY6IHRoZSBiYXQgcHJpdiB3aXRoIGFsbCB0aGUgc29mdCBpbnRl cmZhY2UgaW5mb3JtYXRpb24KICAqIEBvcmlnX25vZGU6IHRoZSBkZXN0aW5hdGlvbiBub2RlCkBA IC00NjksNyArNTE1LDcgQEAgYmF0YWR2X2ZpbmRfcm91dGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAq YmF0X3ByaXYsCiAJICogcm91dGVyIC0gb2J2aW91c2x5IHRoZXJlIGFyZSBubyBvdGhlciBjYW5k aWRhdGVzLgogCSAqLwogCXJjdV9yZWFkX2xvY2soKTsKLQlsYXN0X2NhbmRpZGF0ZSA9IG9yaWdf bm9kZS0+bGFzdF9ib25kaW5nX2NhbmRpZGF0ZTsKKwlsYXN0X2NhbmRpZGF0ZSA9IGJhdGFkdl9s YXN0X2JvbmRpbmdfZ2V0KG9yaWdfbm9kZSk7CiAJaWYgKGxhc3RfY2FuZGlkYXRlKQogCQlsYXN0 X2NhbmRfcm91dGVyID0gcmN1X2RlcmVmZXJlbmNlKGxhc3RfY2FuZGlkYXRlLT5yb3V0ZXIpOwog CkBAIC01MjksMTAgKzU3NSw2IEBAIG5leHQ6CiAJfQogCXJjdV9yZWFkX3VubG9jaygpOwogCi0J LyogbGFzdF9ib25kaW5nX2NhbmRpZGF0ZSBpcyByZXNldCBiZWxvdywgcmVtb3ZlIHRoZSBvbGQg cmVmZXJlbmNlLiAqLwotCWlmIChvcmlnX25vZGUtPmxhc3RfYm9uZGluZ19jYW5kaWRhdGUpCi0J CWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihvcmlnX25vZGUtPmxhc3RfYm9uZGluZ19jYW5k aWRhdGUpOwotCiAJLyogQWZ0ZXIgZmluZGluZyBjYW5kaWRhdGVzLCBoYW5kbGUgdGhlIHRocmVl IGNhc2VzOgogCSAqIDEpIHRoZXJlIGlzIGEgbmV4dCBjYW5kaWRhdGUsIHVzZSB0aGF0CiAJICog MikgdGhlcmUgaXMgbm8gbmV4dCBjYW5kaWRhdGUsIHVzZSB0aGUgZmlyc3Qgb2YgdGhlIGxpc3QK QEAgLTU0MSwyMyArNTgzLDMzIEBAIG5leHQ6CiAJaWYgKG5leHRfY2FuZGlkYXRlKSB7CiAJCWJh dGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmKHJvdXRlcik7CiAKLQkJLyogcmVtb3ZlIHJlZmVyZW5j ZXMgdG8gZmlyc3QgY2FuZGlkYXRlLCB3ZSBkb24ndCBuZWVkIGl0LiAqLwotCQlpZiAoZmlyc3Rf Y2FuZGlkYXRlKSB7Ci0JCQliYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZihmaXJzdF9jYW5kaWRh dGVfcm91dGVyKTsKLQkJCWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihmaXJzdF9jYW5kaWRh dGUpOwotCQl9CisJCWF0b21pY19pbmMoJm5leHRfY2FuZGlkYXRlX3JvdXRlci0+cmVmY291bnQp OwogCQlyb3V0ZXIgPSBuZXh0X2NhbmRpZGF0ZV9yb3V0ZXI7Ci0JCW9yaWdfbm9kZS0+bGFzdF9i b25kaW5nX2NhbmRpZGF0ZSA9IG5leHRfY2FuZGlkYXRlOworCQliYXRhZHZfbGFzdF9ib25kaW5n X3JlcGxhY2Uob3JpZ19ub2RlLCBuZXh0X2NhbmRpZGF0ZSk7CiAJfSBlbHNlIGlmIChmaXJzdF9j YW5kaWRhdGUpIHsKIAkJYmF0YWR2X25laWdoX25vZGVfZnJlZV9yZWYocm91dGVyKTsKIAotCQkv KiByZWZjb3VudGluZyBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgaW4gdGhlIGxvb3AgYWJvdmUuICov CisJCWF0b21pY19pbmMoJmZpcnN0X2NhbmRpZGF0ZV9yb3V0ZXItPnJlZmNvdW50KTsKIAkJcm91 dGVyID0gZmlyc3RfY2FuZGlkYXRlX3JvdXRlcjsKLQkJb3JpZ19ub2RlLT5sYXN0X2JvbmRpbmdf Y2FuZGlkYXRlID0gZmlyc3RfY2FuZGlkYXRlOworCQliYXRhZHZfbGFzdF9ib25kaW5nX3JlcGxh Y2Uob3JpZ19ub2RlLCBmaXJzdF9jYW5kaWRhdGUpOwogCX0gZWxzZSB7Ci0JCW9yaWdfbm9kZS0+ bGFzdF9ib25kaW5nX2NhbmRpZGF0ZSA9IE5VTEw7CisJCWJhdGFkdl9sYXN0X2JvbmRpbmdfcmVw bGFjZShvcmlnX25vZGUsIE5VTEwpOwogCX0KIAorCS8qIGNsZWFudXAgb2YgY2FuZGlkYXRlcyAq LworCWlmIChmaXJzdF9jYW5kaWRhdGUpIHsKKwkJYmF0YWR2X25laWdoX25vZGVfZnJlZV9yZWYo Zmlyc3RfY2FuZGlkYXRlX3JvdXRlcik7CisJCWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihm aXJzdF9jYW5kaWRhdGUpOworCX0KKworCWlmIChuZXh0X2NhbmRpZGF0ZSkgeworCQliYXRhZHZf bmVpZ2hfbm9kZV9mcmVlX3JlZihuZXh0X2NhbmRpZGF0ZV9yb3V0ZXIpOworCQliYXRhZHZfb3Jp Z19pZmluZm9fZnJlZV9yZWYobmV4dF9jYW5kaWRhdGUpOworCX0KKworCWlmIChsYXN0X2NhbmRp ZGF0ZSkKKwkJYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVmKGxhc3RfY2FuZGlkYXRlKTsKKwog CXJldHVybiByb3V0ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3NlbmQuYyBi L25ldC9iYXRtYW4tYWR2L3NlbmQuYwppbmRleCA2MDA0YzJkZTdiMmEuLjJjZmQ1ZGRiYjQwNCAx MDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvc2VuZC5jCisrKyBiL25ldC9iYXRtYW4tYWR2L3Nl bmQuYwpAQCAtMzYzLDggKzM2Myw4IEBAIGludCBiYXRhZHZfc2VuZF9za2JfdmlhX2d3KHN0cnVj dCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJc3RydWN0IGJh dGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZTsKIAogCW9yaWdfbm9kZSA9IGJhdGFkdl9nd19nZXRf c2VsZWN0ZWRfb3JpZyhiYXRfcHJpdik7Ci0JcmV0dXJuIGJhdGFkdl9zZW5kX3NrYl91bmljYXN0 KGJhdF9wcml2LCBza2IsIEJBVEFEVl9VTklDQVNULCAwLAotCQkJCSAgICAgICBvcmlnX25vZGUs IHZpZCk7CisJcmV0dXJuIGJhdGFkdl9zZW5kX3NrYl91bmljYXN0KGJhdF9wcml2LCBza2IsIEJB VEFEVl9VTklDQVNUXzRBRERSLAorCQkJCSAgICAgICBCQVRBRFZfUF9EQVRBLCBvcmlnX25vZGUs IHZpZCk7CiB9CiAKIHZvaWQgYmF0YWR2X3NjaGVkdWxlX2JhdF9vZ20oc3RydWN0IGJhdGFkdl9o YXJkX2lmYWNlICpoYXJkX2lmYWNlKQpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvdHlwZXMu aCBiL25ldC9iYXRtYW4tYWR2L3R5cGVzLmgKaW5kZXggMGNjODkwYmFiN2E0Li42MWYzNGY4ODk1 NTUgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3R5cGVzLmgKKysrIGIvbmV0L2JhdG1hbi1h ZHYvdHlwZXMuaApAQCAtMjAyLDEyICsyMDIsMTIgQEAgc3RydWN0IGJhdGFkdl9vcmlnX2JhdF9p diB7CiAgKiBAcHJpbWFyeV9hZGRyOiBob3N0cyBwcmltYXJ5IGludGVyZmFjZSBhZGRyZXNzCiAg KiBAaWZpbmZvX2xpc3Q6IGxpc3QgZm9yIHJvdXRlcnMgcGVyIG91dGdvaW5nIGludGVyZmFjZQog ICogQGxhc3RfYm9uZGluZ19jYW5kaWRhdGU6IHBvaW50ZXIgdG8gbGFzdCBpZmluZm8gb2YgbGFz dCB1c2VkIHJvdXRlcgotICogQGJhdGFkdl9kYXRfYWRkcl90OiAgYWRkcmVzcyBvZiB0aGUgb3Jp ZyBub2RlIGluIHRoZSBkaXN0cmlidXRlZCBoYXNoCisgKiBAZGF0X2FkZHI6IGFkZHJlc3Mgb2Yg dGhlIG9yaWcgbm9kZSBpbiB0aGUgZGlzdHJpYnV0ZWQgaGFzaAogICogQGxhc3Rfc2VlbjogdGlt ZSB3aGVuIGxhc3QgcGFja2V0IGZyb20gdGhpcyBub2RlIHdhcyByZWNlaXZlZAogICogQGJjYXN0 X3NlcW5vX3Jlc2V0OiB0aW1lIHdoZW4gdGhlIGJyb2FkY2FzdCBzZXFubyB3aW5kb3cgd2FzIHJl c2V0CiAgKiBAbWNhc3RfaGFuZGxlcl9sb2NrOiBzeW5jaHJvbml6ZXMgbWNhc3QtY2FwYWJpbGl0 eSBhbmQgLWZsYWcgY2hhbmdlcwogICogQG1jYXN0X2ZsYWdzOiBtdWx0aWNhc3QgZmxhZ3MgYW5u b3VuY2VkIGJ5IHRoZSBvcmlnIG5vZGUKLSAqIEBtY2FzdF93YW50X2FsbF91bnNub29wX25vZGU6 IGEgbGlzdCBub2RlIGZvciB0aGUKKyAqIEBtY2FzdF93YW50X2FsbF91bnNub29wYWJsZXNfbm9k ZTogYSBsaXN0IG5vZGUgZm9yIHRoZQogICogIG1jYXN0LndhbnRfYWxsX3Vuc25vb3BhYmxlcyBs aXN0CiAgKiBAbWNhc3Rfd2FudF9hbGxfaXB2NF9ub2RlOiBhIGxpc3Qgbm9kZSBmb3IgdGhlIG1j YXN0LndhbnRfYWxsX2lwdjQgbGlzdAogICogQG1jYXN0X3dhbnRfYWxsX2lwdjZfbm9kZTogYSBs aXN0IG5vZGUgZm9yIHRoZSBtY2FzdC53YW50X2FsbF9pcHY2IGxpc3QKQEAgLTI3Miw3ICsyNzIs OSBAQCBzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSB7CiAJREVDTEFSRV9CSVRNQVAoYmNhc3RfYml0 cywgQkFUQURWX1RRX0xPQ0FMX1dJTkRPV19TSVpFKTsKIAl1aW50MzJfdCBsYXN0X2JjYXN0X3Nl cW5vOwogCXN0cnVjdCBobGlzdF9oZWFkIG5laWdoX2xpc3Q7Ci0JLyogbmVpZ2hfbGlzdF9sb2Nr IHByb3RlY3RzOiBuZWlnaF9saXN0IGFuZCByb3V0ZXIgKi8KKwkvKiBuZWlnaF9saXN0X2xvY2sg cHJvdGVjdHM6IG5laWdoX2xpc3QsIGlmaW5mb19saXN0LAorCSAqIGxhc3RfYm9uZGluZ19jYW5k aWRhdGUgYW5kIHJvdXRlcgorCSAqLwogCXNwaW5sb2NrX3QgbmVpZ2hfbGlzdF9sb2NrOwogCXN0 cnVjdCBobGlzdF9ub2RlIGhhc2hfZW50cnk7CiAJc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJp djsKQEAgLTM5MCw3ICszOTIsNyBAQCBzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyB7CiAKIC8q KgogICogc3RydWN0IGJhdGFkdl9iY2FzdF9kdXBsaXN0X2VudHJ5IC0gc3RydWN0dXJlIGZvciBM QU4gYnJvYWRjYXN0IHN1cHByZXNzaW9uCi0gKiBAb3JpZ1tFVEhfQUxFTl06IG1hYyBhZGRyZXNz IG9mIG9yaWcgbm9kZSBvcmdpbmF0aW5nIHRoZSBicm9hZGNhc3QKKyAqIEBvcmlnOiBtYWMgYWRk cmVzcyBvZiBvcmlnIG5vZGUgb3JnaW5hdGluZyB0aGUgYnJvYWRjYXN0CiAgKiBAY3JjOiBjcmMz MiBjaGVja3N1bSBvZiBicm9hZGNhc3QgcGF5bG9hZAogICogQGVudHJ5dGltZTogdGltZSB3aGVu IHRoZSBicm9hZGNhc3QgcGFja2V0IHdhcyByZWNlaXZlZAogICovCkBAIC01MzgsNyArNTQwLDcg QEAgc3RydWN0IGJhdGFkdl9wcml2X3R0IHsKIAogLyoqCiAgKiBzdHJ1Y3QgYmF0YWR2X3ByaXZf YmxhIC0gcGVyIG1lc2ggaW50ZXJmYWNlIGJyaWRnZSBsb29wZSBhdm9pZGFuY2UgZGF0YQotICog QG51bV9yZXF1ZXN0czsgbnVtYmVyIG9mIGJsYSByZXF1ZXN0cyBpbiBmbGlnaHQKKyAqIEBudW1f cmVxdWVzdHM6IG51bWJlciBvZiBibGEgcmVxdWVzdHMgaW4gZmxpZ2h0CiAgKiBAY2xhaW1faGFz aDogaGFzaCB0YWJsZSBjb250YWluaW5nIG1lc2ggbm9kZXMgdGhpcyBob3N0IGhhcyBjbGFpbWVk CiAgKiBAYmFja2JvbmVfaGFzaDogaGFzaCB0YWJsZSBjb250YWluaW5nIGFsbCBkZXRlY3RlZCBi YWNrYm9uZSBnYXRld2F5cwogICogQGJjYXN0X2R1cGxpc3Q6IHJlY2VudGx5IHJlY2VpdmVkIGJy b2FkY2FzdCBwYWNrZXRzIGFycmF5IChmb3IgYnJvYWRjYXN0CkBAIC03NjAsNyArNzYyLDcgQEAg c3RydWN0IGJhdGFkdl9zb2Z0aWZfdmxhbiB7CiAgKiBAZGF0OiBkaXN0cmlidXRlZCBhcnAgdGFi bGUgZGF0YQogICogQG1jYXN0OiBtdWx0aWNhc3QgZGF0YQogICogQG5ldHdvcmtfY29kaW5nOiBi b29sIGluZGljYXRpbmcgd2hldGhlciBuZXR3b3JrIGNvZGluZyBpcyBlbmFibGVkCi0gKiBAYmF0 YWR2X3ByaXZfbmM6IG5ldHdvcmsgY29kaW5nIGRhdGEKKyAqIEBuYzogbmV0d29yayBjb2Rpbmcg ZGF0YQogICovCiBzdHJ1Y3QgYmF0YWR2X3ByaXYgewogCWF0b21pY190IG1lc2hfc3RhdGU7CkBA IC04NzEsNiArODczLDcgQEAgc3RydWN0IGJhdGFkdl9zb2NrZXRfcGFja2V0IHsKICAqICBiYWNr Ym9uZSBnYXRld2F5IC0gbm8gYmNhc3QgdHJhZmZpYyBpcyBmb3Jtd2FyZWQgdW50aWwgdGhlIHNp dHVhdGlvbiB3YXMKICAqICByZXNvbHZlZAogICogQGNyYzogY3JjMTYgY2hlY2tzdW0gb3ZlciBh bGwgY2xhaW1zCisgKiBAY3JjX2xvY2s6IGxvY2sgcHJvdGVjdGluZyBjcmMKICAqIEByZWZjb3Vu dDogbnVtYmVyIG9mIGNvbnRleHRzIHRoZSBvYmplY3QgaXMgdXNlZAogICogQHJjdTogc3RydWN0 IHVzZWQgZm9yIGZyZWVpbmcgaW4gYW4gUkNVLXNhZmUgbWFubmVyCiAgKi8KQEAgLTg4NCw2ICs4 ODcsNyBAQCBzdHJ1Y3QgYmF0YWR2X2JsYV9iYWNrYm9uZV9ndyB7CiAJYXRvbWljX3Qgd2FpdF9w ZXJpb2RzOwogCWF0b21pY190IHJlcXVlc3Rfc2VudDsKIAl1aW50MTZfdCBjcmM7CisJc3Bpbmxv Y2tfdCBjcmNfbG9jazsgLyogcHJvdGVjdHMgY3JjICovCiAJYXRvbWljX3QgcmVmY291bnQ7CiAJ c3RydWN0IHJjdV9oZWFkIHJjdTsKIH07CkBAIC04OTIsNyArODk2LDggQEAgc3RydWN0IGJhdGFk dl9ibGFfYmFja2JvbmVfZ3cgewogICogc3RydWN0IGJhdGFkdl9ibGFfY2xhaW0gLSBjbGFpbWVk IG5vbi1tZXNoIGNsaWVudCBzdHJ1Y3R1cmUKICAqIEBhZGRyOiBtYWMgYWRkcmVzcyBvZiBjbGFp bWVkIG5vbi1tZXNoIGNsaWVudAogICogQHZpZDogdmxhbiBpZCB0aGlzIGNsaWVudCB3YXMgZGV0 ZWN0ZWQgb24KLSAqIEBiYXRhZHZfYmxhX2JhY2tib25lX2d3OiBwb2ludGVyIHRvIGJhY2tib25l IGd3IGNsYWltaW5nIHRoaXMgY2xpZW50CisgKiBAYmFja2JvbmVfZ3c6IHBvaW50ZXIgdG8gYmFj a2JvbmUgZ3cgY2xhaW1pbmcgdGhpcyBjbGllbnQKKyAqIEBiYWNrYm9uZV9sb2NrOiBsb2NrIHBy b3RlY3RpbmcgYmFja2JvbmVfZ3cgcG9pbnRlcgogICogQGxhc3R0aW1lOiBsYXN0IHRpbWUgd2Ug aGVhcmQgb2YgY2xhaW0gKGxvY2FscyBvbmx5KQogICogQGhhc2hfZW50cnk6IGhsaXN0IG5vZGUg Zm9yIGJhdGFkdl9wcml2X2JsYTo6Y2xhaW1faGFzaAogICogQHJlZmNvdW50OiBudW1iZXIgb2Yg Y29udGV4dHMgdGhlIG9iamVjdCBpcyB1c2VkCkBAIC05MDIsNiArOTA3LDcgQEAgc3RydWN0IGJh dGFkdl9ibGFfY2xhaW0gewogCXVpbnQ4X3QgYWRkcltFVEhfQUxFTl07CiAJdW5zaWduZWQgc2hv cnQgdmlkOwogCXN0cnVjdCBiYXRhZHZfYmxhX2JhY2tib25lX2d3ICpiYWNrYm9uZV9ndzsKKwlz cGlubG9ja190IGJhY2tib25lX2xvY2s7IC8qIHByb3RlY3RzIGJhY2tib25lX2d3ICovCiAJdW5z aWduZWQgbG9uZyBsYXN0dGltZTsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSBoYXNoX2VudHJ5OwogCXN0 cnVjdCByY3VfaGVhZCByY3U7CmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2su YyBiL25ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jCmluZGV4IGQwZmQ4YjA0ZjJlNi4uMDcxZDM1 YzlmM2I0IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYworKysgYi9uZXQv Ymx1ZXRvb3RoL2wyY2FwX3NvY2suYwpAQCAtOTIxLDcgKzkyMSw3IEBAIHN0YXRpYyBpbnQgbDJj YXBfc29ja19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9w dG5hbWUsCiAJCQlicmVhazsKIAkJfQogCi0JCWlmIChnZXRfdXNlcihvcHQsICh1MzIgX191c2Vy ICopIG9wdHZhbCkpIHsKKwkJaWYgKGdldF91c2VyKG9wdCwgKHUxNiBfX3VzZXIgKikgb3B0dmFs KSkgewogCQkJZXJyID0gLUVGQVVMVDsKIAkJCWJyZWFrOwogCQl9CmRpZmYgLS1naXQgYS9uZXQv Ymx1ZXRvb3RoL3JmY29tbS9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmMKaW5k ZXggOGJiYmI1ZWM0NjhjLi5iY2IzMTYwZmVmYjQgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgv cmZjb21tL3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmMKQEAgLTMzNCwx NiArMzM0LDE5IEBAIHN0YXRpYyBpbnQgcmZjb21tX3NvY2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5l dCwgc3RydWN0IHNvY2tldCAqc29jaywKIAogc3RhdGljIGludCByZmNvbW1fc29ja19iaW5kKHN0 cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJfbGVuKQog ewotCXN0cnVjdCBzb2NrYWRkcl9yYyAqc2EgPSAoc3RydWN0IHNvY2thZGRyX3JjICopIGFkZHI7 CisJc3RydWN0IHNvY2thZGRyX3JjIHNhOwogCXN0cnVjdCBzb2NrICpzayA9IHNvY2stPnNrOwot CWludCBjaGFuID0gc2EtPnJjX2NoYW5uZWw7Ci0JaW50IGVyciA9IDA7Ci0KLQlCVF9EQkcoInNr ICVwICVwTVIiLCBzaywgJnNhLT5yY19iZGFkZHIpOworCWludCBsZW4sIGVyciA9IDA7CiAKIAlp ZiAoIWFkZHIgfHwgYWRkci0+c2FfZmFtaWx5ICE9IEFGX0JMVUVUT09USCkKIAkJcmV0dXJuIC1F SU5WQUw7CiAKKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc2EpKTsKKwlsZW4gPSBtaW5fdCh1bnNp Z25lZCBpbnQsIHNpemVvZihzYSksIGFkZHJfbGVuKTsKKwltZW1jcHkoJnNhLCBhZGRyLCBsZW4p OworCisJQlRfREJHKCJzayAlcCAlcE1SIiwgc2ssICZzYS5yY19iZGFkZHIpOworCiAJbG9ja19z b2NrKHNrKTsKIAogCWlmIChzay0+c2tfc3RhdGUgIT0gQlRfT1BFTikgewpAQCAtMzU4LDEyICsz NjEsMTMgQEAgc3RhdGljIGludCByZmNvbW1fc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ss IHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHIKIAogCXdyaXRlX2xvY2soJnJmY29tbV9z a19saXN0LmxvY2spOwogCi0JaWYgKGNoYW4gJiYgX19yZmNvbW1fZ2V0X2xpc3Rlbl9zb2NrX2J5 X2FkZHIoY2hhbiwgJnNhLT5yY19iZGFkZHIpKSB7CisJaWYgKHNhLnJjX2NoYW5uZWwgJiYKKwkg ICAgX19yZmNvbW1fZ2V0X2xpc3Rlbl9zb2NrX2J5X2FkZHIoc2EucmNfY2hhbm5lbCwgJnNhLnJj X2JkYWRkcikpIHsKIAkJZXJyID0gLUVBRERSSU5VU0U7CiAJfSBlbHNlIHsKIAkJLyogU2F2ZSBz b3VyY2UgYWRkcmVzcyAqLwotCQliYWNweSgmcmZjb21tX3BpKHNrKS0+c3JjLCAmc2EtPnJjX2Jk YWRkcik7Ci0JCXJmY29tbV9waShzayktPmNoYW5uZWwgPSBjaGFuOworCQliYWNweSgmcmZjb21t X3BpKHNrKS0+c3JjLCAmc2EucmNfYmRhZGRyKTsKKwkJcmZjb21tX3BpKHNrKS0+Y2hhbm5lbCA9 IHNhLnJjX2NoYW5uZWw7CiAJCXNrLT5za19zdGF0ZSA9IEJUX0JPVU5EOwogCX0KIApkaWZmIC0t Z2l0IGEvbmV0L2NlcGgvb3NkbWFwLmMgYi9uZXQvY2VwaC9vc2RtYXAuYwppbmRleCA1NzQwZjcx YjYwOWQuLjk4YzU3OTI0M2Q4NyAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvb3NkbWFwLmMKKysrIGIv bmV0L2NlcGgvb3NkbWFwLmMKQEAgLTExNjcsNiArMTE2NywxMTUgQEAgc3RydWN0IGNlcGhfb3Nk bWFwICpjZXBoX29zZG1hcF9kZWNvZGUodm9pZCAqKnAsIHZvaWQgKmVuZCkKIH0KIAogLyoKKyAq IEVuY29kaW5nIG9yZGVyIGlzIChuZXdfdXBfY2xpZW50LCBuZXdfc3RhdGUsIG5ld193ZWlnaHQp LiAgTmVlZCB0bworICogYXBwbHkgaW4gdGhlIChuZXdfd2VpZ2h0LCBuZXdfc3RhdGUsIG5ld191 cF9jbGllbnQpIG9yZGVyLCBiZWNhdXNlCisgKiBhbiBpbmNyZW1lbnRhbCBtYXAgbWF5IGxvb2sg bGlrZSBlLmcuCisgKgorICogICAgIG5ld191cF9jbGllbnQ6IHsgb3NkPTYsIGFkZHI9Li4uIH0g IyBzZXQgb3NkX3N0YXRlIGFuZCBhZGRyCisgKiAgICAgbmV3X3N0YXRlOiB7IG9zZD02LCB4b3Jz dGF0ZT1FWElTVFMgfSAjIGNsZWFyIG9zZF9zdGF0ZQorICovCitzdGF0aWMgaW50IGRlY29kZV9u ZXdfdXBfc3RhdGVfd2VpZ2h0KHZvaWQgKipwLCB2b2lkICplbmQsCisJCQkJICAgICAgc3RydWN0 IGNlcGhfb3NkbWFwICptYXApCit7CisJdm9pZCAqbmV3X3VwX2NsaWVudDsKKwl2b2lkICpuZXdf c3RhdGU7CisJdm9pZCAqbmV3X3dlaWdodF9lbmQ7CisJdTMyIGxlbjsKKworCW5ld191cF9jbGll bnQgPSAqcDsKKwljZXBoX2RlY29kZV8zMl9zYWZlKHAsIGVuZCwgbGVuLCBlX2ludmFsKTsKKwls ZW4gKj0gc2l6ZW9mKHUzMikgKyBzaXplb2Yoc3RydWN0IGNlcGhfZW50aXR5X2FkZHIpOworCWNl cGhfZGVjb2RlX25lZWQocCwgZW5kLCBsZW4sIGVfaW52YWwpOworCSpwICs9IGxlbjsKKworCW5l d19zdGF0ZSA9ICpwOworCWNlcGhfZGVjb2RlXzMyX3NhZmUocCwgZW5kLCBsZW4sIGVfaW52YWwp OworCWxlbiAqPSBzaXplb2YodTMyKSArIHNpemVvZih1OCk7CisJY2VwaF9kZWNvZGVfbmVlZChw LCBlbmQsIGxlbiwgZV9pbnZhbCk7CisJKnAgKz0gbGVuOworCisJLyogbmV3X3dlaWdodCAqLwor CWNlcGhfZGVjb2RlXzMyX3NhZmUocCwgZW5kLCBsZW4sIGVfaW52YWwpOworCXdoaWxlIChsZW4t LSkgeworCQlzMzIgb3NkOworCQl1MzIgdzsKKworCQljZXBoX2RlY29kZV9uZWVkKHAsIGVuZCwg MipzaXplb2YodTMyKSwgZV9pbnZhbCk7CisJCW9zZCA9IGNlcGhfZGVjb2RlXzMyKHApOworCQl3 ID0gY2VwaF9kZWNvZGVfMzIocCk7CisJCUJVR19PTihvc2QgPj0gbWFwLT5tYXhfb3NkKTsKKwkJ cHJfaW5mbygib3NkJWQgd2VpZ2h0IDB4JXggJXNcbiIsIG9zZCwgdywKKwkJICAgICB3ID09IENF UEhfT1NEX0lOID8gIihpbikiIDoKKwkJICAgICAodyA9PSBDRVBIX09TRF9PVVQgPyAiKG91dCki IDogIiIpKTsKKwkJbWFwLT5vc2Rfd2VpZ2h0W29zZF0gPSB3OworCisJCS8qCisJCSAqIElmIHdl IGFyZSBtYXJraW5nIGluLCBzZXQgdGhlIEVYSVNUUywgYW5kIGNsZWFyIHRoZQorCQkgKiBBVVRP T1VUIGFuZCBORVcgYml0cy4KKwkJICovCisJCWlmICh3KSB7CisJCQltYXAtPm9zZF9zdGF0ZVtv c2RdIHw9IENFUEhfT1NEX0VYSVNUUzsKKwkJCW1hcC0+b3NkX3N0YXRlW29zZF0gJj0gfihDRVBI X09TRF9BVVRPT1VUIHwKKwkJCQkJCSBDRVBIX09TRF9ORVcpOworCQl9CisJfQorCW5ld193ZWln aHRfZW5kID0gKnA7CisKKwkvKiBuZXdfc3RhdGUgKHVwL2Rvd24pICovCisJKnAgPSBuZXdfc3Rh dGU7CisJbGVuID0gY2VwaF9kZWNvZGVfMzIocCk7CisJd2hpbGUgKGxlbi0tKSB7CisJCXMzMiBv c2Q7CisJCXU4IHhvcnN0YXRlOworCQlpbnQgcmV0OworCisJCW9zZCA9IGNlcGhfZGVjb2RlXzMy KHApOworCQl4b3JzdGF0ZSA9IGNlcGhfZGVjb2RlXzgocCk7CisJCWlmICh4b3JzdGF0ZSA9PSAw KQorCQkJeG9yc3RhdGUgPSBDRVBIX09TRF9VUDsKKwkJQlVHX09OKG9zZCA+PSBtYXAtPm1heF9v c2QpOworCQlpZiAoKG1hcC0+b3NkX3N0YXRlW29zZF0gJiBDRVBIX09TRF9VUCkgJiYKKwkJICAg ICh4b3JzdGF0ZSAmIENFUEhfT1NEX1VQKSkKKwkJCXByX2luZm8oIm9zZCVkIGRvd25cbiIsIG9z ZCk7CisJCWlmICgobWFwLT5vc2Rfc3RhdGVbb3NkXSAmIENFUEhfT1NEX0VYSVNUUykgJiYKKwkJ ICAgICh4b3JzdGF0ZSAmIENFUEhfT1NEX0VYSVNUUykpIHsKKwkJCXByX2luZm8oIm9zZCVkIGRv ZXMgbm90IGV4aXN0XG4iLCBvc2QpOworCQkJbWFwLT5vc2Rfd2VpZ2h0W29zZF0gPSBDRVBIX09T RF9JTjsKKwkJCXJldCA9IHNldF9wcmltYXJ5X2FmZmluaXR5KG1hcCwgb3NkLAorCQkJCQkJICAg Q0VQSF9PU0RfREVGQVVMVF9QUklNQVJZX0FGRklOSVRZKTsKKwkJCWlmIChyZXQpCisJCQkJcmV0 dXJuIHJldDsKKwkJCW1lbXNldChtYXAtPm9zZF9hZGRyICsgb3NkLCAwLCBzaXplb2YoKm1hcC0+ b3NkX2FkZHIpKTsKKwkJCW1hcC0+b3NkX3N0YXRlW29zZF0gPSAwOworCQl9IGVsc2UgeworCQkJ bWFwLT5vc2Rfc3RhdGVbb3NkXSBePSB4b3JzdGF0ZTsKKwkJfQorCX0KKworCS8qIG5ld191cF9j bGllbnQgKi8KKwkqcCA9IG5ld191cF9jbGllbnQ7CisJbGVuID0gY2VwaF9kZWNvZGVfMzIocCk7 CisJd2hpbGUgKGxlbi0tKSB7CisJCXMzMiBvc2Q7CisJCXN0cnVjdCBjZXBoX2VudGl0eV9hZGRy IGFkZHI7CisKKwkJb3NkID0gY2VwaF9kZWNvZGVfMzIocCk7CisJCWNlcGhfZGVjb2RlX2NvcHko cCwgJmFkZHIsIHNpemVvZihhZGRyKSk7CisJCWNlcGhfZGVjb2RlX2FkZHIoJmFkZHIpOworCQlC VUdfT04ob3NkID49IG1hcC0+bWF4X29zZCk7CisJCXByX2luZm8oIm9zZCVkIHVwXG4iLCBvc2Qp OworCQltYXAtPm9zZF9zdGF0ZVtvc2RdIHw9IENFUEhfT1NEX0VYSVNUUyB8IENFUEhfT1NEX1VQ OworCQltYXAtPm9zZF9hZGRyW29zZF0gPSBhZGRyOworCX0KKworCSpwID0gbmV3X3dlaWdodF9l bmQ7CisJcmV0dXJuIDA7CisKK2VfaW52YWw6CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKKy8qCiAg KiBkZWNvZGUgYW5kIGFwcGx5IGFuIGluY3JlbWVudGFsIG1hcCB1cGRhdGUuCiAgKi8KIHN0cnVj dCBjZXBoX29zZG1hcCAqb3NkbWFwX2FwcGx5X2luY3JlbWVudGFsKHZvaWQgKipwLCB2b2lkICpl bmQsCkBAIC0xMjY1LDQ5ICsxMzc0LDEwIEBAIHN0cnVjdCBjZXBoX29zZG1hcCAqb3NkbWFwX2Fw cGx5X2luY3JlbWVudGFsKHZvaWQgKipwLCB2b2lkICplbmQsCiAJCQlfX3JlbW92ZV9wZ19wb29s KCZtYXAtPnBnX3Bvb2xzLCBwaSk7CiAJfQogCi0JLyogbmV3X3VwICovCi0JY2VwaF9kZWNvZGVf MzJfc2FmZShwLCBlbmQsIGxlbiwgZV9pbnZhbCk7Ci0Jd2hpbGUgKGxlbi0tKSB7Ci0JCXUzMiBv c2Q7Ci0JCXN0cnVjdCBjZXBoX2VudGl0eV9hZGRyIGFkZHI7Ci0JCWNlcGhfZGVjb2RlXzMyX3Nh ZmUocCwgZW5kLCBvc2QsIGVfaW52YWwpOwotCQljZXBoX2RlY29kZV9jb3B5X3NhZmUocCwgZW5k LCAmYWRkciwgc2l6ZW9mKGFkZHIpLCBlX2ludmFsKTsKLQkJY2VwaF9kZWNvZGVfYWRkcigmYWRk cik7Ci0JCXByX2luZm8oIm9zZCVkIHVwXG4iLCBvc2QpOwotCQlCVUdfT04ob3NkID49IG1hcC0+ bWF4X29zZCk7Ci0JCW1hcC0+b3NkX3N0YXRlW29zZF0gfD0gQ0VQSF9PU0RfVVA7Ci0JCW1hcC0+ b3NkX2FkZHJbb3NkXSA9IGFkZHI7Ci0JfQotCi0JLyogbmV3X3N0YXRlICovCi0JY2VwaF9kZWNv ZGVfMzJfc2FmZShwLCBlbmQsIGxlbiwgZV9pbnZhbCk7Ci0Jd2hpbGUgKGxlbi0tKSB7Ci0JCXUz MiBvc2Q7Ci0JCXU4IHhvcnN0YXRlOwotCQljZXBoX2RlY29kZV8zMl9zYWZlKHAsIGVuZCwgb3Nk LCBlX2ludmFsKTsKLQkJeG9yc3RhdGUgPSAqKih1OCAqKilwOwotCQkoKnApKys7ICAvKiBjbGVh biBmbGFnICovCi0JCWlmICh4b3JzdGF0ZSA9PSAwKQotCQkJeG9yc3RhdGUgPSBDRVBIX09TRF9V UDsKLQkJaWYgKHhvcnN0YXRlICYgQ0VQSF9PU0RfVVApCi0JCQlwcl9pbmZvKCJvc2QlZCBkb3du XG4iLCBvc2QpOwotCQlpZiAob3NkIDwgbWFwLT5tYXhfb3NkKQotCQkJbWFwLT5vc2Rfc3RhdGVb b3NkXSBePSB4b3JzdGF0ZTsKLQl9Ci0KLQkvKiBuZXdfd2VpZ2h0ICovCi0JY2VwaF9kZWNvZGVf MzJfc2FmZShwLCBlbmQsIGxlbiwgZV9pbnZhbCk7Ci0Jd2hpbGUgKGxlbi0tKSB7Ci0JCXUzMiBv c2QsIG9mZjsKLQkJY2VwaF9kZWNvZGVfbmVlZChwLCBlbmQsIHNpemVvZih1MzIpKjIsIGVfaW52 YWwpOwotCQlvc2QgPSBjZXBoX2RlY29kZV8zMihwKTsKLQkJb2ZmID0gY2VwaF9kZWNvZGVfMzIo cCk7Ci0JCXByX2luZm8oIm9zZCVkIHdlaWdodCAweCV4ICVzXG4iLCBvc2QsIG9mZiwKLQkJICAg ICBvZmYgPT0gQ0VQSF9PU0RfSU4gPyAiKGluKSIgOgotCQkgICAgIChvZmYgPT0gQ0VQSF9PU0Rf T1VUID8gIihvdXQpIiA6ICIiKSk7Ci0JCWlmIChvc2QgPCBtYXAtPm1heF9vc2QpCi0JCQltYXAt Pm9zZF93ZWlnaHRbb3NkXSA9IG9mZjsKLQl9CisJLyogbmV3X3VwX2NsaWVudCwgbmV3X3N0YXRl LCBuZXdfd2VpZ2h0ICovCisJZXJyID0gZGVjb2RlX25ld191cF9zdGF0ZV93ZWlnaHQocCwgZW5k LCBtYXApOworCWlmIChlcnIpCisJCWdvdG8gYmFkOwogCiAJLyogbmV3X3BnX3RlbXAgKi8KIAll cnIgPSBkZWNvZGVfbmV3X3BnX3RlbXAocCwgZW5kLCBtYXApOwpkaWZmIC0tZ2l0IGEvbmV0L2lw djQvaXBtci5jIGIvbmV0L2lwdjQvaXBtci5jCmluZGV4IGRhOWYxODE1NmJhOS4uNjVhMjg2MjAw MDZjIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcG1yLmMKKysrIGIvbmV0L2lwdjQvaXBtci5jCkBA IC0yMTg4LDcgKzIxODgsNyBAQCBzdGF0aWMgaW50IF9faXBtcl9maWxsX21yb3V0ZShzdHJ1Y3Qg bXJfdGFibGUgKm1ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogaW50IGlwbXJfZ2V0X3JvdXRl KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICAgX19iZTMyIHNhZGRy LCBfX2JlMzIgZGFkZHIsCi0JCSAgIHN0cnVjdCBydG1zZyAqcnRtLCBpbnQgbm93YWl0KQorCQkg ICBzdHJ1Y3QgcnRtc2cgKnJ0bSwgaW50IG5vd2FpdCwgdTMyIHBvcnRpZCkKIHsKIAlzdHJ1Y3Qg bWZjX2NhY2hlICpjYWNoZTsKIAlzdHJ1Y3QgbXJfdGFibGUgKm1ydDsKQEAgLTIyMzMsNiArMjIz Myw3IEBAIGludCBpcG1yX2dldF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZm ICpza2IsCiAJCQlyZXR1cm4gLUVOT01FTTsKIAkJfQogCisJCU5FVExJTktfQ0Ioc2tiMikucG9y dGlkID0gcG9ydGlkOwogCQlza2JfcHVzaChza2IyLCBzaXplb2Yoc3RydWN0IGlwaGRyKSk7CiAJ CXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IyKTsKIAkJaXBoID0gaXBfaGRyKHNrYjIpOwpk aWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2FycF90YWJsZXMuYyBiL25ldC9pcHY0L25l dGZpbHRlci9hcnBfdGFibGVzLmMKaW5kZXggM2JkYjQ2YjMyNWFiLi4xMDZkYjE3N2E5MWMgMTAw NjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9hcnBfdGFibGVzLmMKKysrIGIvbmV0L2lwdjQv bmV0ZmlsdGVyL2FycF90YWJsZXMuYwpAQCAtMzY3LDcgKzM2Nyw4IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCB1bmNvbmRpdGlvbmFsKGNvbnN0IHN0cnVjdCBhcnB0X2VudHJ5ICplKQogICogdGhlcmUg YXJlIGxvb3BzLiAgUHV0cyBob29rIGJpdG1hc2sgaW4gY29tZWZyb20uCiAgKi8KIHN0YXRpYyBp bnQgbWFya19zb3VyY2VfY2hhaW5zKGNvbnN0IHN0cnVjdCB4dF90YWJsZV9pbmZvICpuZXdpbmZv LAotCQkJICAgICAgdW5zaWduZWQgaW50IHZhbGlkX2hvb2tzLCB2b2lkICplbnRyeTApCisJCQkg ICAgICB1bnNpZ25lZCBpbnQgdmFsaWRfaG9va3MsIHZvaWQgKmVudHJ5MCwKKwkJCSAgICAgIHVu c2lnbmVkIGludCAqb2Zmc2V0cykKIHsKIAl1bnNpZ25lZCBpbnQgaG9vazsKIApAQCAtNDU2LDYg KzQ1NywxMSBAQCBzdGF0aWMgaW50IG1hcmtfc291cmNlX2NoYWlucyhjb25zdCBzdHJ1Y3QgeHRf dGFibGVfaW5mbyAqbmV3aW5mbywKIAkJCQkJLyogVGhpcyBhIGp1bXA7IGNoYXNlIGl0LiAqLwog CQkJCQlkdXByaW50ZigiSnVtcCBydWxlICV1IC0+ICV1XG4iLAogCQkJCQkJIHBvcywgbmV3cG9z KTsKKwkJCQkJaWYgKCF4dF9maW5kX2p1bXBfb2Zmc2V0KG9mZnNldHMsIG5ld3BvcywKKwkJCQkJ CQkJIG5ld2luZm8tPm51bWJlcikpCisJCQkJCQlyZXR1cm4gMDsKKwkJCQkJZSA9IChzdHJ1Y3Qg YXJwdF9lbnRyeSAqKQorCQkJCQkJKGVudHJ5MCArIG5ld3Bvcyk7CiAJCQkJfSBlbHNlIHsKIAkJ CQkJLyogLi4uIHRoaXMgaXMgYSBmYWxsdGhydSAqLwogCQkJCQluZXdwb3MgPSBwb3MgKyBlLT5u ZXh0X29mZnNldDsKQEAgLTYxNSw2ICs2MjEsNyBAQCBzdGF0aWMgaW50IHRyYW5zbGF0ZV90YWJs ZShzdHJ1Y3QgeHRfdGFibGVfaW5mbyAqbmV3aW5mbywgdm9pZCAqZW50cnkwLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGFycHRfcmVwbGFjZSAqcmVwbCkKIHsKIAlz dHJ1Y3QgYXJwdF9lbnRyeSAqaXRlcjsKKwl1bnNpZ25lZCBpbnQgKm9mZnNldHM7CiAJdW5zaWdu ZWQgaW50IGk7CiAJaW50IHJldCA9IDA7CiAKQEAgLTYyOCw4ICs2MzUsMTAgQEAgc3RhdGljIGlu dCB0cmFuc2xhdGVfdGFibGUoc3RydWN0IHh0X3RhYmxlX2luZm8gKm5ld2luZm8sIHZvaWQgKmVu dHJ5MCwKIAl9CiAKIAlkdXByaW50ZigidHJhbnNsYXRlX3RhYmxlOiBzaXplICV1XG4iLCBuZXdp bmZvLT5zaXplKTsKKwlvZmZzZXRzID0geHRfYWxsb2NfZW50cnlfb2Zmc2V0cyhuZXdpbmZvLT5u dW1iZXIpOworCWlmICghb2Zmc2V0cykKKwkJcmV0dXJuIC1FTk9NRU07CiAJaSA9IDA7Ci0KIAkv KiBXYWxrIHRocm91Z2ggZW50cmllcywgY2hlY2tpbmcgb2Zmc2V0cy4gKi8KIAl4dF9lbnRyeV9m b3JlYWNoKGl0ZXIsIGVudHJ5MCwgbmV3aW5mby0+c2l6ZSkgewogCQlyZXQgPSBjaGVja19lbnRy eV9zaXplX2FuZF9ob29rcyhpdGVyLCBuZXdpbmZvLCBlbnRyeTAsCkBAIC02MzgsNyArNjQ3LDkg QEAgc3RhdGljIGludCB0cmFuc2xhdGVfdGFibGUoc3RydWN0IHh0X3RhYmxlX2luZm8gKm5ld2lu Zm8sIHZvaWQgKmVudHJ5MCwKIAkJCQkJCSByZXBsLT51bmRlcmZsb3csCiAJCQkJCQkgcmVwbC0+ dmFsaWRfaG9va3MpOwogCQlpZiAocmV0ICE9IDApCi0JCQlicmVhazsKKwkJCWdvdG8gb3V0X2Zy ZWU7CisJCWlmIChpIDwgcmVwbC0+bnVtX2VudHJpZXMpCisJCQlvZmZzZXRzW2ldID0gKHZvaWQg KilpdGVyIC0gZW50cnkwOwogCQkrK2k7CiAJCWlmIChzdHJjbXAoYXJwdF9nZXRfdGFyZ2V0KGl0 ZXIpLT51LnVzZXIubmFtZSwKIAkJICAgIFhUX0VSUk9SX1RBUkdFVCkgPT0gMCkKQEAgLTY0Niwx MiArNjU3LDEzIEBAIHN0YXRpYyBpbnQgdHJhbnNsYXRlX3RhYmxlKHN0cnVjdCB4dF90YWJsZV9p bmZvICpuZXdpbmZvLCB2b2lkICplbnRyeTAsCiAJfQogCWR1cHJpbnRmKCJ0cmFuc2xhdGVfdGFi bGU6IEFSUFRfRU5UUllfSVRFUkFURSBnaXZlcyAlZFxuIiwgcmV0KTsKIAlpZiAocmV0ICE9IDAp Ci0JCXJldHVybiByZXQ7CisJCWdvdG8gb3V0X2ZyZWU7CiAKKwlyZXQgPSAtRUlOVkFMOwogCWlm IChpICE9IHJlcGwtPm51bV9lbnRyaWVzKSB7CiAJCWR1cHJpbnRmKCJ0cmFuc2xhdGVfdGFibGU6 ICV1IG5vdCAldSBlbnRyaWVzXG4iLAogCQkJIGksIHJlcGwtPm51bV9lbnRyaWVzKTsKLQkJcmV0 dXJuIC1FSU5WQUw7CisJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCiAJLyogQ2hlY2sgaG9va3MgYWxs IGFzc2lnbmVkICovCkBAIC02NjIsMTcgKzY3NCwyMCBAQCBzdGF0aWMgaW50IHRyYW5zbGF0ZV90 YWJsZShzdHJ1Y3QgeHRfdGFibGVfaW5mbyAqbmV3aW5mbywgdm9pZCAqZW50cnkwLAogCQlpZiAo bmV3aW5mby0+aG9va19lbnRyeVtpXSA9PSAweEZGRkZGRkZGKSB7CiAJCQlkdXByaW50ZigiSW52 YWxpZCBob29rIGVudHJ5ICV1ICV1XG4iLAogCQkJCSBpLCByZXBsLT5ob29rX2VudHJ5W2ldKTsK LQkJCXJldHVybiAtRUlOVkFMOworCQkJZ290byBvdXRfZnJlZTsKIAkJfQogCQlpZiAobmV3aW5m by0+dW5kZXJmbG93W2ldID09IDB4RkZGRkZGRkYpIHsKIAkJCWR1cHJpbnRmKCJJbnZhbGlkIHVu ZGVyZmxvdyAldSAldVxuIiwKIAkJCQkgaSwgcmVwbC0+dW5kZXJmbG93W2ldKTsKLQkJCXJldHVy biAtRUlOVkFMOworCQkJZ290byBvdXRfZnJlZTsKIAkJfQogCX0KIAotCWlmICghbWFya19zb3Vy Y2VfY2hhaW5zKG5ld2luZm8sIHJlcGwtPnZhbGlkX2hvb2tzLCBlbnRyeTApKQotCQlyZXR1cm4g LUVMT09QOworCWlmICghbWFya19zb3VyY2VfY2hhaW5zKG5ld2luZm8sIHJlcGwtPnZhbGlkX2hv b2tzLCBlbnRyeTAsIG9mZnNldHMpKSB7CisJCXJldCA9IC1FTE9PUDsKKwkJZ290byBvdXRfZnJl ZTsKKwl9CisJa3ZmcmVlKG9mZnNldHMpOwogCiAJLyogRmluYWxseSwgZWFjaCBzYW5pdHkgY2hl Y2sgbXVzdCBwYXNzICovCiAJaSA9IDA7CkBAIC02OTksNiArNzE0LDkgQEAgc3RhdGljIGludCB0 cmFuc2xhdGVfdGFibGUoc3RydWN0IHh0X3RhYmxlX2luZm8gKm5ld2luZm8sIHZvaWQgKmVudHJ5 MCwKIAl9CiAKIAlyZXR1cm4gcmV0OworIG91dF9mcmVlOgorCWt2ZnJlZShvZmZzZXRzKTsKKwly ZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBnZXRfY291bnRlcnMoY29uc3Qgc3RydWN0IHh0 X3RhYmxlX2luZm8gKnQsCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfdGFibGVz LmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfdGFibGVzLmMKaW5kZXggYmFhMWY2NWU1MTQyLi45 ZTIwYjk5YmYzMjUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9pcF90YWJsZXMuYwor KysgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfdGFibGVzLmMKQEAgLTQ0Myw3ICs0NDMsOCBAQCBp cHRfZG9fdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgIHRoZXJlIGFyZSBsb29wcy4gIFB1 dHMgaG9vayBiaXRtYXNrIGluIGNvbWVmcm9tLiAqLwogc3RhdGljIGludAogbWFya19zb3VyY2Vf Y2hhaW5zKGNvbnN0IHN0cnVjdCB4dF90YWJsZV9pbmZvICpuZXdpbmZvLAotCQkgICB1bnNpZ25l ZCBpbnQgdmFsaWRfaG9va3MsIHZvaWQgKmVudHJ5MCkKKwkJICAgdW5zaWduZWQgaW50IHZhbGlk X2hvb2tzLCB2b2lkICplbnRyeTAsCisJCSAgIHVuc2lnbmVkIGludCAqb2Zmc2V0cykKIHsKIAl1 bnNpZ25lZCBpbnQgaG9vazsKIApAQCAtNTM2LDYgKzUzNywxMSBAQCBtYXJrX3NvdXJjZV9jaGFp bnMoY29uc3Qgc3RydWN0IHh0X3RhYmxlX2luZm8gKm5ld2luZm8sCiAJCQkJCS8qIFRoaXMgYSBq dW1wOyBjaGFzZSBpdC4gKi8KIAkJCQkJZHVwcmludGYoIkp1bXAgcnVsZSAldSAtPiAldVxuIiwK IAkJCQkJCSBwb3MsIG5ld3Bvcyk7CisJCQkJCWlmICgheHRfZmluZF9qdW1wX29mZnNldChvZmZz ZXRzLCBuZXdwb3MsCisJCQkJCQkJCSBuZXdpbmZvLT5udW1iZXIpKQorCQkJCQkJcmV0dXJuIDA7 CisJCQkJCWUgPSAoc3RydWN0IGlwdF9lbnRyeSAqKQorCQkJCQkJKGVudHJ5MCArIG5ld3Bvcyk7 CiAJCQkJfSBlbHNlIHsKIAkJCQkJLyogLi4uIHRoaXMgaXMgYSBmYWxsdGhydSAqLwogCQkJCQlu ZXdwb3MgPSBwb3MgKyBlLT5uZXh0X29mZnNldDsKQEAgLTc4Miw2ICs3ODgsNyBAQCB0cmFuc2xh dGVfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeHRfdGFibGVfaW5mbyAqbmV3aW5mbywg dm9pZCAqZW50cnkwLAogICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpcHRfcmVwbGFjZSAq cmVwbCkKIHsKIAlzdHJ1Y3QgaXB0X2VudHJ5ICppdGVyOworCXVuc2lnbmVkIGludCAqb2Zmc2V0 czsKIAl1bnNpZ25lZCBpbnQgaTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtNzk1LDYgKzgwMiw5IEBA IHRyYW5zbGF0ZV90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4dF90YWJsZV9pbmZvICpu ZXdpbmZvLCB2b2lkICplbnRyeTAsCiAJfQogCiAJZHVwcmludGYoInRyYW5zbGF0ZV90YWJsZTog c2l6ZSAldVxuIiwgbmV3aW5mby0+c2l6ZSk7CisJb2Zmc2V0cyA9IHh0X2FsbG9jX2VudHJ5X29m ZnNldHMobmV3aW5mby0+bnVtYmVyKTsKKwlpZiAoIW9mZnNldHMpCisJCXJldHVybiAtRU5PTUVN OwogCWkgPSAwOwogCS8qIFdhbGsgdGhyb3VnaCBlbnRyaWVzLCBjaGVja2luZyBvZmZzZXRzLiAq LwogCXh0X2VudHJ5X2ZvcmVhY2goaXRlciwgZW50cnkwLCBuZXdpbmZvLT5zaXplKSB7CkBAIC04 MDQsMTcgKzgxNCwyMCBAQCB0cmFuc2xhdGVfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qg eHRfdGFibGVfaW5mbyAqbmV3aW5mbywgdm9pZCAqZW50cnkwLAogCQkJCQkJIHJlcGwtPnVuZGVy ZmxvdywKIAkJCQkJCSByZXBsLT52YWxpZF9ob29rcyk7CiAJCWlmIChyZXQgIT0gMCkKLQkJCXJl dHVybiByZXQ7CisJCQlnb3RvIG91dF9mcmVlOworCQlpZiAoaSA8IHJlcGwtPm51bV9lbnRyaWVz KQorCQkJb2Zmc2V0c1tpXSA9ICh2b2lkICopaXRlciAtIGVudHJ5MDsKIAkJKytpOwogCQlpZiAo c3RyY21wKGlwdF9nZXRfdGFyZ2V0KGl0ZXIpLT51LnVzZXIubmFtZSwKIAkJICAgIFhUX0VSUk9S X1RBUkdFVCkgPT0gMCkKIAkJCSsrbmV3aW5mby0+c3RhY2tzaXplOwogCX0KIAorCXJldCA9IC1F SU5WQUw7CiAJaWYgKGkgIT0gcmVwbC0+bnVtX2VudHJpZXMpIHsKIAkJZHVwcmludGYoInRyYW5z bGF0ZV90YWJsZTogJXUgbm90ICV1IGVudHJpZXNcbiIsCiAJCQkgaSwgcmVwbC0+bnVtX2VudHJp ZXMpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJZ290byBvdXRfZnJlZTsKIAl9CiAKIAkvKiBDaGVj ayBob29rcyBhbGwgYXNzaWduZWQgKi8KQEAgLTgyNSwxNyArODM4LDIwIEBAIHRyYW5zbGF0ZV90 YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4dF90YWJsZV9pbmZvICpuZXdpbmZvLCB2b2lk ICplbnRyeTAsCiAJCWlmIChuZXdpbmZvLT5ob29rX2VudHJ5W2ldID09IDB4RkZGRkZGRkYpIHsK IAkJCWR1cHJpbnRmKCJJbnZhbGlkIGhvb2sgZW50cnkgJXUgJXVcbiIsCiAJCQkJIGksIHJlcGwt Pmhvb2tfZW50cnlbaV0pOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJCQlnb3RvIG91dF9mcmVlOwog CQl9CiAJCWlmIChuZXdpbmZvLT51bmRlcmZsb3dbaV0gPT0gMHhGRkZGRkZGRikgewogCQkJZHVw cmludGYoIkludmFsaWQgdW5kZXJmbG93ICV1ICV1XG4iLAogCQkJCSBpLCByZXBsLT51bmRlcmZs b3dbaV0pOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJCQlnb3RvIG91dF9mcmVlOwogCQl9CiAJfQog Ci0JaWYgKCFtYXJrX3NvdXJjZV9jaGFpbnMobmV3aW5mbywgcmVwbC0+dmFsaWRfaG9va3MsIGVu dHJ5MCkpCi0JCXJldHVybiAtRUxPT1A7CisJaWYgKCFtYXJrX3NvdXJjZV9jaGFpbnMobmV3aW5m bywgcmVwbC0+dmFsaWRfaG9va3MsIGVudHJ5MCwgb2Zmc2V0cykpIHsKKwkJcmV0ID0gLUVMT09Q OworCQlnb3RvIG91dF9mcmVlOworCX0KKwlrdmZyZWUob2Zmc2V0cyk7CiAKIAkvKiBGaW5hbGx5 LCBlYWNoIHNhbml0eSBjaGVjayBtdXN0IHBhc3MgKi8KIAlpID0gMDsKQEAgLTg2Miw2ICs4Nzgs OSBAQCB0cmFuc2xhdGVfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeHRfdGFibGVfaW5m byAqbmV3aW5mbywgdm9pZCAqZW50cnkwLAogCX0KIAogCXJldHVybiByZXQ7Cisgb3V0X2ZyZWU6 CisJa3ZmcmVlKG9mZnNldHMpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYg LS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCA1ZGY3ZWQ4 YzYyZDkuLjI1NDhjMjI3NGNiOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYworKysgYi9u ZXQvaXB2NC9yb3V0ZS5jCkBAIC0yNDEzLDcgKzI0MTMsOCBAQCBzdGF0aWMgaW50IHJ0X2ZpbGxf aW5mbyhzdHJ1Y3QgbmV0ICpuZXQsICBfX2JlMzIgZHN0LCBfX2JlMzIgc3JjLAogCQkgICAgSVBW NF9ERVZDT05GX0FMTChuZXQsIE1DX0ZPUldBUkRJTkcpKSB7CiAJCQlpbnQgZXJyID0gaXBtcl9n ZXRfcm91dGUobmV0LCBza2IsCiAJCQkJCQkgZmw0LT5zYWRkciwgZmw0LT5kYWRkciwKLQkJCQkJ CSByLCBub3dhaXQpOworCQkJCQkJIHIsIG5vd2FpdCwgcG9ydGlkKTsKKwogCQkJaWYgKGVyciA8 PSAwKSB7CiAJCQkJaWYgKCFub3dhaXQpIHsKIAkJCQkJaWYgKGVyciA9PSAwKQpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMgYi9uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYwppbmRl eCA2MDg4YzU4YmM1NGMuLjJiOTg2NTc2ZTVhZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2Zh c3RvcGVuLmMKKysrIGIvbmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMKQEAgLTIxMyw2ICsyMTMsNyBA QCBzdGF0aWMgYm9vbCB0Y3BfZmFzdG9wZW5fY3JlYXRlX2NoaWxkKHN0cnVjdCBzb2NrICpzaywK IAkJfQogCX0KIAl0Y3BfcnNrKHJlcSktPnJjdl9ueHQgPSB0cC0+cmN2X254dCA9IGVuZF9zZXE7 CisJdHAtPnJjdl93dXAgPSB0cC0+cmN2X254dDsKIAlzay0+c2tfZGF0YV9yZWFkeShzayk7CiAJ YmhfdW5sb2NrX3NvY2soY2hpbGQpOwogCXNvY2tfcHV0KGNoaWxkKTsKZGlmZiAtLWdpdCBhL25l dC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggZDNiNjRiZmVk ZDE4Li41MDAyM2U4YWY2NjggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCisrKyBi L25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC0yMzE2LDEwICsyMzE2LDkgQEAgc3RhdGljIHZvaWQg REJHVU5ETyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGNoYXIgKm1zZykKIAl9CiAjaWYgSVNfRU5B QkxFRChDT05GSUdfSVBWNikKIAllbHNlIGlmIChzay0+c2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7 Ci0JCXN0cnVjdCBpcHY2X3BpbmZvICpucCA9IGluZXQ2X3NrKHNrKTsKIAkJcHJfZGVidWcoIlVu ZG8gJXMgJXBJNi8ldSBjJXUgbCV1IHNzJXUvJXUgcCV1XG4iLAogCQkJIG1zZywKLQkJCSAmbnAt PmRhZGRyLCBudG9ocyhpbmV0LT5pbmV0X2Rwb3J0KSwKKwkJCSAmc2stPnNrX3Y2X2RhZGRyLCBu dG9ocyhpbmV0LT5pbmV0X2Rwb3J0KSwKIAkJCSB0cC0+c25kX2N3bmQsIHRjcF9sZWZ0X291dCh0 cCksCiAJCQkgdHAtPnNuZF9zc3RocmVzaCwgdHAtPnByaW9yX3NzdGhyZXNoLAogCQkJIHRwLT5w YWNrZXRzX291dCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2 NC90Y3Bfb3V0cHV0LmMKaW5kZXggOWQyNmY0NTY5YTJlLi44YjVjNDU3YjQwY2QgMTAwNjQ0Ci0t LSBhL25ldC9pcHY0L3RjcF9vdXRwdXQuYworKysgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKQEAg LTI0NSw3ICsyNDUsOCBAQCB2b2lkIHRjcF9zZWxlY3RfaW5pdGlhbF93aW5kb3coaW50IF9fc3Bh Y2UsIF9fdTMyIG1zcywKIAkJLyogU2V0IHdpbmRvdyBzY2FsaW5nIG9uIG1heCBwb3NzaWJsZSB3 aW5kb3cKIAkJICogU2VlIFJGQzEzMjMgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBsaW1pdCB0 byAxNAogCQkgKi8KLQkJc3BhY2UgPSBtYXhfdCh1MzIsIHN5c2N0bF90Y3Bfcm1lbVsyXSwgc3lz Y3RsX3JtZW1fbWF4KTsKKwkJc3BhY2UgPSBtYXhfdCh1MzIsIHNwYWNlLCBzeXNjdGxfdGNwX3Jt ZW1bMl0pOworCQlzcGFjZSA9IG1heF90KHUzMiwgc3BhY2UsIHN5c2N0bF9ybWVtX21heCk7CiAJ CXNwYWNlID0gbWluX3QodTMyLCBzcGFjZSwgKndpbmRvd19jbGFtcCk7CiAJCXdoaWxlIChzcGFj ZSA+IDY1NTM1ICYmICgqcmN2X3dzY2FsZSkgPCAxNCkgewogCQkJc3BhY2UgPj49IDE7CmRpZmYg LS1naXQgYS9uZXQvaXB2Ni9hZGRyY29uZi5jIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCAw MDAyYWE5Y2E5MWEuLjIxM2ZjNGY5YjI2NSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYu YworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCkBAIC03MjMsNyArNzIzLDE0IEBAIHN0YXRpYyBp bnQgYWRkcmNvbmZfZml4dXBfZm9yd2FyZGluZyhzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50 ICpwLCBpbnQgbmV3ZikKIAl9CiAKIAlpZiAocCA9PSAmbmV0LT5pcHY2LmRldmNvbmZfYWxsLT5m b3J3YXJkaW5nKSB7CisJCWludCBvbGRfZGZsdCA9IG5ldC0+aXB2Ni5kZXZjb25mX2RmbHQtPmZv cndhcmRpbmc7CisKIAkJbmV0LT5pcHY2LmRldmNvbmZfZGZsdC0+Zm9yd2FyZGluZyA9IG5ld2Y7 CisJCWlmICgoIW5ld2YpIF4gKCFvbGRfZGZsdCkpCisJCQlpbmV0Nl9uZXRjb25mX25vdGlmeV9k ZXZjb25mKG5ldCwgTkVUQ09ORkFfRk9SV0FSRElORywKKwkJCQkJCSAgICAgTkVUQ09ORkFfSUZJ TkRFWF9ERUZBVUxULAorCQkJCQkJICAgICBuZXQtPmlwdjYuZGV2Y29uZl9kZmx0KTsKKwogCQlh ZGRyY29uZl9mb3J3YXJkX2NoYW5nZShuZXQsIG5ld2YpOwogCQlpZiAoKCFuZXdmKSBeICghb2xk KSkKIAkJCWluZXQ2X25ldGNvbmZfbm90aWZ5X2RldmNvbmYobmV0LCBORVRDT05GQV9GT1JXQVJE SU5HLApAQCAtMTY3OSw2ICsxNjg2LDcgQEAgdm9pZCBhZGRyY29uZl9kYWRfZmFpbHVyZShzdHJ1 Y3QgaW5ldDZfaWZhZGRyICppZnApCiAJc3Bpbl91bmxvY2tfYmgoJmlmcC0+c3RhdGVfbG9jayk7 CiAKIAlhZGRyY29uZl9tb2RfZGFkX3dvcmsoaWZwLCAwKTsKKwlpbjZfaWZhX3B1dChpZnApOwog fQogCiAvKiBKb2luIHRvIHNvbGljaXRlZCBhZGRyIG11bHRpY2FzdCBncm91cC4KQEAgLTMyNTUs NiArMzI2Myw3IEBAIHN0YXRpYyB2b2lkIGFkZHJjb25mX2RhZF93b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqdykKIAkJYWRkcmNvbmZfZGFkX2JlZ2luKGlmcCk7CiAJCWdvdG8gb3V0OwogCX0gZWxz ZSBpZiAoYWN0aW9uID09IERBRF9BQk9SVCkgeworCQlpbjZfaWZhX2hvbGQoaWZwKTsKIAkJYWRk cmNvbmZfZGFkX3N0b3AoaWZwLCAxKTsKIAkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0 L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jCmluZGV4IDFlZTAxMzY0NGJiMi4u NDczYmI1MDMxYWYyIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfZ3JlLmMKKysrIGIvbmV0L2lw djYvaXA2X2dyZS5jCkBAIC04ODEsNyArODgxLDYgQEAgc3RhdGljIGludCBpcDZncmVfeG1pdF9v dGhlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQllbmNh cF9saW1pdCA9IHQtPnBhcm1zLmVuY2FwX2xpbWl0OwogCiAJbWVtY3B5KCZmbDYsICZ0LT5mbC51 LmlwNiwgc2l6ZW9mKGZsNikpOwotCWZsNi5mbG93aTZfcHJvdG8gPSBza2ItPnByb3RvY29sOwog CiAJZXJyID0gaXA2Z3JlX3htaXQyKHNrYiwgZGV2LCAwLCAmZmw2LCBlbmNhcF9saW1pdCwgJm10 dSk7CiAKQEAgLTkzOSw2ICs5MzgsNyBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2xpbmtfY29u ZmlnKHN0cnVjdCBpcDZfdG5sICp0LCBpbnQgc2V0X210dSkKIAlmbDYtPmRhZGRyID0gcC0+cmFk ZHI7CiAJZmw2LT5mbG93aTZfb2lmID0gcC0+bGluazsKIAlmbDYtPmZsb3dsYWJlbCA9IDA7CisJ Zmw2LT5mbG93aTZfcHJvdG8gPSBJUFBST1RPX0dSRTsKIAogCWlmICghKHAtPmZsYWdzJklQNl9U TkxfRl9VU0VfT1JJR19UQ0xBU1MpKQogCQlmbDYtPmZsb3dsYWJlbCB8PSBJUFY2X1RDTEFTU19N QVNLICYgcC0+Zmxvd2luZm87CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZtci5jIGIvbmV0L2lw djYvaXA2bXIuYwppbmRleCA1ZTczOWJiNmFlOTAuLjE3MDQ5ZjgxYzc1MCAxMDA2NDQKLS0tIGEv bmV0L2lwdjYvaXA2bXIuYworKysgYi9uZXQvaXB2Ni9pcDZtci5jCkBAIC0yMjcyLDggKzIyNzIs OCBAQCBzdGF0aWMgaW50IF9faXA2bXJfZmlsbF9tcm91dGUoc3RydWN0IG1yNl90YWJsZSAqbXJ0 LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAxOwogfQogCi1pbnQgaXA2bXJfZ2V0X3Jv dXRlKHN0cnVjdCBuZXQgKm5ldCwKLQkJICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBy dG1zZyAqcnRtLCBpbnQgbm93YWl0KQoraW50IGlwNm1yX2dldF9yb3V0ZShzdHJ1Y3QgbmV0ICpu ZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBydG1zZyAqcnRtLAorCQkgICAgaW50IG5v d2FpdCwgdTMyIHBvcnRpZCkKIHsKIAlpbnQgZXJyOwogCXN0cnVjdCBtcjZfdGFibGUgKm1ydDsK QEAgLTIzMTgsNiArMjMxOCw3IEBAIGludCBpcDZtcl9nZXRfcm91dGUoc3RydWN0IG5ldCAqbmV0 LAogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAorCQlORVRMSU5LX0NCKHNrYjIpLnBvcnRpZCA9 IHBvcnRpZDsKIAkJc2tiX3Jlc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiMik7CiAKIAkJc2tiX3B1 dChza2IyLCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25l dGZpbHRlci9pcDZfdGFibGVzLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2X3RhYmxlcy5jCmlu ZGV4IDk4MDJiMjQ2OTY2Mi4uZDBmZTVhOTJiMmYxIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRm aWx0ZXIvaXA2X3RhYmxlcy5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZfdGFibGVzLmMK QEAgLTQ1Myw3ICs0NTMsOCBAQCBpcDZ0X2RvX3RhYmxlKHN0cnVjdCBza19idWZmICpza2IsCiAg ICB0aGVyZSBhcmUgbG9vcHMuICBQdXRzIGhvb2sgYml0bWFzayBpbiBjb21lZnJvbS4gKi8KIHN0 YXRpYyBpbnQKIG1hcmtfc291cmNlX2NoYWlucyhjb25zdCBzdHJ1Y3QgeHRfdGFibGVfaW5mbyAq bmV3aW5mbywKLQkJICAgdW5zaWduZWQgaW50IHZhbGlkX2hvb2tzLCB2b2lkICplbnRyeTApCisJ CSAgIHVuc2lnbmVkIGludCB2YWxpZF9ob29rcywgdm9pZCAqZW50cnkwLAorCQkgICB1bnNpZ25l ZCBpbnQgKm9mZnNldHMpCiB7CiAJdW5zaWduZWQgaW50IGhvb2s7CiAKQEAgLTU0Niw2ICs1NDcs MTEgQEAgbWFya19zb3VyY2VfY2hhaW5zKGNvbnN0IHN0cnVjdCB4dF90YWJsZV9pbmZvICpuZXdp bmZvLAogCQkJCQkvKiBUaGlzIGEganVtcDsgY2hhc2UgaXQuICovCiAJCQkJCWR1cHJpbnRmKCJK dW1wIHJ1bGUgJXUgLT4gJXVcbiIsCiAJCQkJCQkgcG9zLCBuZXdwb3MpOworCQkJCQlpZiAoIXh0 X2ZpbmRfanVtcF9vZmZzZXQob2Zmc2V0cywgbmV3cG9zLAorCQkJCQkJCQkgbmV3aW5mby0+bnVt YmVyKSkKKwkJCQkJCXJldHVybiAwOworCQkJCQllID0gKHN0cnVjdCBpcDZ0X2VudHJ5ICopCisJ CQkJCQkoZW50cnkwICsgbmV3cG9zKTsKIAkJCQl9IGVsc2UgewogCQkJCQkvKiAuLi4gdGhpcyBp cyBhIGZhbGx0aHJ1ICovCiAJCQkJCW5ld3BvcyA9IHBvcyArIGUtPm5leHRfb2Zmc2V0OwpAQCAt NzkyLDYgKzc5OCw3IEBAIHRyYW5zbGF0ZV90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4 dF90YWJsZV9pbmZvICpuZXdpbmZvLCB2b2lkICplbnRyeTAsCiAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGlwNnRfcmVwbGFjZSAqcmVwbCkKIHsKIAlzdHJ1Y3QgaXA2dF9lbnRyeSAqaXRl cjsKKwl1bnNpZ25lZCBpbnQgKm9mZnNldHM7CiAJdW5zaWduZWQgaW50IGk7CiAJaW50IHJldCA9 IDA7CiAKQEAgLTgwNSw2ICs4MTIsOSBAQCB0cmFuc2xhdGVfdGFibGUoc3RydWN0IG5ldCAqbmV0 LCBzdHJ1Y3QgeHRfdGFibGVfaW5mbyAqbmV3aW5mbywgdm9pZCAqZW50cnkwLAogCX0KIAogCWR1 cHJpbnRmKCJ0cmFuc2xhdGVfdGFibGU6IHNpemUgJXVcbiIsIG5ld2luZm8tPnNpemUpOworCW9m ZnNldHMgPSB4dF9hbGxvY19lbnRyeV9vZmZzZXRzKG5ld2luZm8tPm51bWJlcik7CisJaWYgKCFv ZmZzZXRzKQorCQlyZXR1cm4gLUVOT01FTTsKIAlpID0gMDsKIAkvKiBXYWxrIHRocm91Z2ggZW50 cmllcywgY2hlY2tpbmcgb2Zmc2V0cy4gKi8KIAl4dF9lbnRyeV9mb3JlYWNoKGl0ZXIsIGVudHJ5 MCwgbmV3aW5mby0+c2l6ZSkgewpAQCAtODE0LDE3ICs4MjQsMjAgQEAgdHJhbnNsYXRlX3RhYmxl KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHh0X3RhYmxlX2luZm8gKm5ld2luZm8sIHZvaWQgKmVu dHJ5MCwKIAkJCQkJCSByZXBsLT51bmRlcmZsb3csCiAJCQkJCQkgcmVwbC0+dmFsaWRfaG9va3Mp OwogCQlpZiAocmV0ICE9IDApCi0JCQlyZXR1cm4gcmV0OworCQkJZ290byBvdXRfZnJlZTsKKwkJ aWYgKGkgPCByZXBsLT5udW1fZW50cmllcykKKwkJCW9mZnNldHNbaV0gPSAodm9pZCAqKWl0ZXIg LSBlbnRyeTA7CiAJCSsraTsKIAkJaWYgKHN0cmNtcChpcDZ0X2dldF90YXJnZXQoaXRlciktPnUu dXNlci5uYW1lLAogCQkgICAgWFRfRVJST1JfVEFSR0VUKSA9PSAwKQogCQkJKytuZXdpbmZvLT5z dGFja3NpemU7CiAJfQogCisJcmV0ID0gLUVJTlZBTDsKIAlpZiAoaSAhPSByZXBsLT5udW1fZW50 cmllcykgewogCQlkdXByaW50ZigidHJhbnNsYXRlX3RhYmxlOiAldSBub3QgJXUgZW50cmllc1xu IiwKIAkJCSBpLCByZXBsLT5udW1fZW50cmllcyk7Ci0JCXJldHVybiAtRUlOVkFMOworCQlnb3Rv IG91dF9mcmVlOwogCX0KIAogCS8qIENoZWNrIGhvb2tzIGFsbCBhc3NpZ25lZCAqLwpAQCAtODM1 LDE3ICs4NDgsMjAgQEAgdHJhbnNsYXRlX3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHh0 X3RhYmxlX2luZm8gKm5ld2luZm8sIHZvaWQgKmVudHJ5MCwKIAkJaWYgKG5ld2luZm8tPmhvb2tf ZW50cnlbaV0gPT0gMHhGRkZGRkZGRikgewogCQkJZHVwcmludGYoIkludmFsaWQgaG9vayBlbnRy eSAldSAldVxuIiwKIAkJCQkgaSwgcmVwbC0+aG9va19lbnRyeVtpXSk7Ci0JCQlyZXR1cm4gLUVJ TlZBTDsKKwkJCWdvdG8gb3V0X2ZyZWU7CiAJCX0KIAkJaWYgKG5ld2luZm8tPnVuZGVyZmxvd1tp XSA9PSAweEZGRkZGRkZGKSB7CiAJCQlkdXByaW50ZigiSW52YWxpZCB1bmRlcmZsb3cgJXUgJXVc biIsCiAJCQkJIGksIHJlcGwtPnVuZGVyZmxvd1tpXSk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKKwkJ CWdvdG8gb3V0X2ZyZWU7CiAJCX0KIAl9CiAKLQlpZiAoIW1hcmtfc291cmNlX2NoYWlucyhuZXdp bmZvLCByZXBsLT52YWxpZF9ob29rcywgZW50cnkwKSkKLQkJcmV0dXJuIC1FTE9PUDsKKwlpZiAo IW1hcmtfc291cmNlX2NoYWlucyhuZXdpbmZvLCByZXBsLT52YWxpZF9ob29rcywgZW50cnkwLCBv ZmZzZXRzKSkgeworCQlyZXQgPSAtRUxPT1A7CisJCWdvdG8gb3V0X2ZyZWU7CisJfQorCWt2ZnJl ZShvZmZzZXRzKTsKIAogCS8qIEZpbmFsbHksIGVhY2ggc2FuaXR5IGNoZWNrIG11c3QgcGFzcyAq LwogCWkgPSAwOwpAQCAtODcyLDYgKzg4OCw5IEBAIHRyYW5zbGF0ZV90YWJsZShzdHJ1Y3QgbmV0 ICpuZXQsIHN0cnVjdCB4dF90YWJsZV9pbmZvICpuZXdpbmZvLCB2b2lkICplbnRyeTAsCiAJfQog CiAJcmV0dXJuIHJldDsKKyBvdXRfZnJlZToKKwlrdmZyZWUob2Zmc2V0cyk7CisJcmV0dXJuIHJl dDsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQv aXB2Ni9yb3V0ZS5jCmluZGV4IDQ5NjdiNTBjZGY1Mi4uODg5ZTA2NjI2YzI2IDEwMDY0NAotLS0g YS9uZXQvaXB2Ni9yb3V0ZS5jCisrKyBiL25ldC9pcHY2L3JvdXRlLmMKQEAgLTI2MTgsNyArMjYx OCw5IEBAIHN0YXRpYyBpbnQgcnQ2X2ZpbGxfbm9kZShzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKGlp ZikgewogI2lmZGVmIENPTkZJR19JUFY2X01ST1VURQogCQlpZiAoaXB2Nl9hZGRyX2lzX211bHRp Y2FzdCgmcnQtPnJ0NmlfZHN0LmFkZHIpKSB7Ci0JCQlpbnQgZXJyID0gaXA2bXJfZ2V0X3JvdXRl KG5ldCwgc2tiLCBydG0sIG5vd2FpdCk7CisJCQlpbnQgZXJyID0gaXA2bXJfZ2V0X3JvdXRlKG5l dCwgc2tiLCBydG0sIG5vd2FpdCwKKwkJCQkJCSAgcG9ydGlkKTsKKwogCQkJaWYgKGVyciA8PSAw KSB7CiAJCQkJaWYgKCFub3dhaXQpIHsKIAkJCQkJaWYgKGVyciA9PSAwKQpkaWZmIC0tZ2l0IGEv bmV0L2lyZGEvYWZfaXJkYS5jIGIvbmV0L2lyZGEvYWZfaXJkYS5jCmluZGV4IGY5NDUyOTNjMTdm MC4uYTM0Mzc5ODkyZDg1IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9hZl9pcmRhLmMKKysrIGIvbmV0 L2lyZGEvYWZfaXJkYS5jCkBAIC04NDMsNyArODQzLDcgQEAgc3RhdGljIGludCBpcmRhX2FjY2Vw dChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLCBpbnQgZmxhZ3Mp CiAJc3RydWN0IHNvY2sgKnNrID0gc29jay0+c2s7CiAJc3RydWN0IGlyZGFfc29jayAqbmV3LCAq c2VsZiA9IGlyZGFfc2soc2spOwogCXN0cnVjdCBzb2NrICpuZXdzazsKLQlzdHJ1Y3Qgc2tfYnVm ZiAqc2tiOworCXN0cnVjdCBza19idWZmICpza2IgPSBOVUxMOwogCWludCBlcnI7CiAKIAlJUkRB X0RFQlVHKDIsICIlcygpXG4iLCBfX2Z1bmNfXyk7CkBAIC05MTMsNyArOTEzLDYgQEAgc3RhdGlj IGludCBpcmRhX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdz b2NrLCBpbnQgZmxhZ3MpCiAJZXJyID0gLUVQRVJNOyAvKiB2YWx1ZSBkb2VzIG5vdCBzZWVtIHRv IG1ha2Ugc2Vuc2UuIC1hcm5kICovCiAJaWYgKCFuZXctPnRzYXApIHsKIAkJSVJEQV9ERUJVRygw LCAiJXMoKSwgZHVwIGZhaWxlZCFcbiIsIF9fZnVuY19fKTsKLQkJa2ZyZWVfc2tiKHNrYik7CiAJ CWdvdG8gb3V0OwogCX0KIApAQCAtOTMyLDcgKzkzMSw2IEBAIHN0YXRpYyBpbnQgaXJkYV9hY2Nl cHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywgaW50IGZsYWdz KQogCS8qIENsZWFuIHVwIHRoZSBvcmlnaW5hbCBvbmUgdG8ga2VlcCBpdCBpbiBsaXN0ZW4gc3Rh dGUgKi8KIAlpcnR0cF9saXN0ZW4oc2VsZi0+dHNhcCk7CiAKLQlrZnJlZV9za2Ioc2tiKTsKIAlz ay0+c2tfYWNrX2JhY2tsb2ctLTsKIAogCW5ld3NvY2stPnN0YXRlID0gU1NfQ09OTkVDVEVEOwpA QCAtOTQwLDYgKzkzOCw3IEBAIHN0YXRpYyBpbnQgaXJkYV9hY2NlcHQoc3RydWN0IHNvY2tldCAq c29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywgaW50IGZsYWdzKQogCWlyZGFfY29ubmVjdF9y ZXNwb25zZShuZXcpOwogCWVyciA9IDA7CiBvdXQ6CisJa2ZyZWVfc2tiKHNrYik7CiAJcmVsZWFz ZV9zb2NrKHNrKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMTAzNyw4ICsxMDM2LDExIEBAIHN0YXRp YyBpbnQgaXJkYV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAq dWFkZHIsCiAJfQogCiAJLyogQ2hlY2sgaWYgd2UgaGF2ZSBvcGVuZWQgYSBsb2NhbCBUU0FQICov Ci0JaWYgKCFzZWxmLT50c2FwKQotCQlpcmRhX29wZW5fdHNhcChzZWxmLCBMU0FQX0FOWSwgYWRk ci0+c2lyX25hbWUpOworCWlmICghc2VsZi0+dHNhcCkgeworCQllcnIgPSBpcmRhX29wZW5fdHNh cChzZWxmLCBMU0FQX0FOWSwgYWRkci0+c2lyX25hbWUpOworCQlpZiAoZXJyKQorCQkJZ290byBv dXQ7CisJfQogCiAJLyogTW92ZSB0byBjb25uZWN0aW5nIHNvY2tldCwgc3RhcnQgc2VuZGluZyBD b25uZWN0IFJlcXVlc3RzICovCiAJc29jay0+c3RhdGUgPSBTU19DT05ORUNUSU5HOwpkaWZmIC0t Z2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuYwppbmRleCAw YzZhOGYxOGIwZmMuLjc2ZjRjNWM5YTQ2NiAxMDA2NDQKLS0tIGEvbmV0L2wydHAvbDJ0cF9jb3Jl LmMKKysrIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmMKQEAgLTE4OTIsNiArMTg5Miw5IEBAIHN0YXRp YyBfX25ldF9leGl0IHZvaWQgbDJ0cF9leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCiAJCSh2b2lk KWwydHBfdHVubmVsX2RlbGV0ZSh0dW5uZWwpOwogCX0KIAlyY3VfcmVhZF91bmxvY2tfYmgoKTsK KworCWZsdXNoX3dvcmtxdWV1ZShsMnRwX3dxKTsKKwlyY3VfYmFycmllcigpOwogfQogCiBzdGF0 aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIGwydHBfbmV0X29wcyA9IHsKZGlmZiAtLWdpdCBh L25ldC9sMnRwL2wydHBfcHBwLmMgYi9uZXQvbDJ0cC9sMnRwX3BwcC5jCmluZGV4IGI3MDRhOTM1 NjIwOC4uMWFlNjlhNDY5NWRlIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX3BwcC5jCisrKyBi L25ldC9sMnRwL2wydHBfcHBwLmMKQEAgLTg4MywxMCArODgzLDggQEAgc3RhdGljIGludCBwcHBv bDJ0cF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIs CiAKIAlwbHMgPSBsMnRwX3Nlc3Npb25fcHJpdihzZXNzaW9uKTsKIAl0dW5uZWwgPSBsMnRwX3Nv Y2tfdG9fdHVubmVsKHBscy0+dHVubmVsX3NvY2spOwotCWlmICh0dW5uZWwgPT0gTlVMTCkgewot CQllcnJvciA9IC1FQkFERjsKKwlpZiAodHVubmVsID09IE5VTEwpCiAJCWdvdG8gZW5kX3B1dF9z ZXNzOwotCX0KIAogCWluZXQgPSBpbmV0X3NrKHR1bm5lbC0+c29jayk7CiAJaWYgKCh0dW5uZWwt PnZlcnNpb24gPT0gMikgJiYgKHR1bm5lbC0+c29jay0+c2tfZmFtaWx5ID09IEFGX0lORVQpKSB7 CkBAIC05NjQsMTIgKzk2MiwxMSBAQCBzdGF0aWMgaW50IHBwcG9sMnRwX2dldG5hbWUoc3RydWN0 IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKIAl9CiAKIAkqdXNvY2thZGRy X2xlbiA9IGxlbjsKKwllcnJvciA9IDA7CiAKIAlzb2NrX3B1dChwbHMtPnR1bm5lbF9zb2NrKTsK IGVuZF9wdXRfc2VzczoKIAlzb2NrX3B1dChzayk7Ci0JZXJyb3IgPSAwOwotCiBlbmQ6CiAJcmV0 dXJuIGVycm9yOwogfQpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgw MjExL2NmZy5jCmluZGV4IDU5MmY0YjE1MmJhOC4uNzA4YmMyMDc0ZDkwIDEwMDY0NAotLS0gYS9u ZXQvbWFjODAyMTEvY2ZnLmMKKysrIGIvbmV0L21hYzgwMjExL2NmZy5jCkBAIC0xMTg2LDcgKzEx ODYsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHks IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAkvKiBmcmVlIGFsbCBwb3RlbnRpYWxseSBzdGls bCBidWZmZXJlZCBiY2FzdCBmcmFtZXMgKi8KIAlsb2NhbC0+dG90YWxfcHNfYnVmZmVyZWQgLT0g c2tiX3F1ZXVlX2xlbigmc2RhdGEtPnUuYXAucHMuYmNfYnVmKTsKLQlza2JfcXVldWVfcHVyZ2Uo JnNkYXRhLT51LmFwLnBzLmJjX2J1Zik7CisJaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKCZsb2Nh bC0+aHcsICZzZGF0YS0+dS5hcC5wcy5iY19idWYpOwogCiAJbXV0ZXhfbG9jaygmbG9jYWwtPm10 eCk7CiAJaWVlZTgwMjExX3ZpZl9jb3B5X2NoYW5jdHhfdG9fdmxhbnMoc2RhdGEsIHRydWUpOwpk aWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBj MzQ0ZTBiYzAwYjcuLmNhNjEzMWM0NTJiNSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMK KysrIGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgdm9pZCBw dXJnZV9vbGRfcHNfYnVmZmVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCkKIAkJc2ti ID0gc2tiX2RlcXVldWUoJnBzLT5iY19idWYpOwogCQlpZiAoc2tiKSB7CiAJCQlwdXJnZWQrKzsK LQkJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwkJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZsb2NhbC0+ aHcsIHNrYik7CiAJCX0KIAkJdG90YWwgKz0gc2tiX3F1ZXVlX2xlbigmcHMtPmJjX2J1Zik7CiAJ fQpAQCAtNDM0LDcgKzQzNCw3IEBAIGllZWU4MDIxMV90eF9oX211bHRpY2FzdF9wc19idWYoc3Ry dWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCkKIAlpZiAoc2tiX3F1ZXVlX2xlbigmcHMtPmJjX2J1 ZikgPj0gQVBfTUFYX0JDX0JVRkZFUikgewogCQlwc19kYmcodHgtPnNkYXRhLAogCQkgICAgICAg IkJDIFRYIGJ1ZmZlciBmdWxsIC0gZHJvcHBpbmcgdGhlIG9sZGVzdCBmcmFtZVxuIik7Ci0JCWRl dl9rZnJlZV9za2Ioc2tiX2RlcXVldWUoJnBzLT5iY19idWYpKTsKKwkJaWVlZTgwMjExX2ZyZWVf dHhza2IoJnR4LT5sb2NhbC0+aHcsIHNrYl9kZXF1ZXVlKCZwcy0+YmNfYnVmKSk7CiAJfSBlbHNl CiAJCXR4LT5sb2NhbC0+dG90YWxfcHNfYnVmZmVyZWQrKzsKIApAQCAtMjk4OSw3ICsyOTg5LDcg QEAgaWVlZTgwMjExX2dldF9idWZmZXJlZF9iYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJ CXNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoc2tiLT5kZXYpOwogCQlpZiAoIWllZWU4 MDIxMV90eF9wcmVwYXJlKHNkYXRhLCAmdHgsIHNrYikpCiAJCQlicmVhazsKLQkJZGV2X2tmcmVl X3NrYl9hbnkoc2tiKTsKKwkJaWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7CiAJfQogCiAJ aW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIv bmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0 LmMKaW5kZXggYzQ1MTg2ZjkxY2M4Li4xNjEyMGE2MzZiZDQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRm aWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRy YWNrX2V4cGVjdC5jCkBAIC01NTYsNyArNTU2LDcgQEAgc3RhdGljIGludCBleHBfc2VxX3Nob3co c3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KQogCWhlbHBlciA9IHJjdV9kZXJlZmVyZW5jZShu ZmN0X2hlbHAoZXhwZWN0LT5tYXN0ZXIpLT5oZWxwZXIpOwogCWlmIChoZWxwZXIpIHsKIAkJc2Vx X3ByaW50ZihzLCAiJXMlcyIsIGV4cGVjdC0+ZmxhZ3MgPyAiICIgOiAiIiwgaGVscGVyLT5uYW1l KTsKLQkJaWYgKGhlbHBlci0+ZXhwZWN0X3BvbGljeVtleHBlY3QtPmNsYXNzXS5uYW1lKQorCQlp ZiAoaGVscGVyLT5leHBlY3RfcG9saWN5W2V4cGVjdC0+Y2xhc3NdLm5hbWVbMF0pCiAJCQlzZXFf cHJpbnRmKHMsICIvJXMiLAogCQkJCSAgIGhlbHBlci0+ZXhwZWN0X3BvbGljeVtleHBlY3QtPmNs YXNzXS5uYW1lKTsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1 ZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZV9jb3JlLmMKaW5kZXggN2E4 M2U1N2FkM2YxLi5iZDU1ZjBjMzE3OTUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZuZXRs aW5rX3F1ZXVlX2NvcmUuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZV9jb3Jl LmMKQEAgLTk4NSwxMCArOTg1LDggQEAgbmZxbmxfcmVjdl92ZXJkaWN0KHN0cnVjdCBzb2NrICpj dG5sLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KGN0 bmwpOwogCXN0cnVjdCBuZm5sX3F1ZXVlX25ldCAqcSA9IG5mbmxfcXVldWVfcGVybmV0KG5ldCk7 CiAKLQlxdWV1ZSA9IGluc3RhbmNlX2xvb2t1cChxLCBxdWV1ZV9udW0pOwotCWlmICghcXVldWUp Ci0JCXF1ZXVlID0gdmVyZGljdF9pbnN0YW5jZV9sb29rdXAocSwgcXVldWVfbnVtLAotCQkJCQkJ TkVUTElOS19DQihza2IpLnBvcnRpZCk7CisJcXVldWUgPSB2ZXJkaWN0X2luc3RhbmNlX2xvb2t1 cChxLCBxdWV1ZV9udW0sCisJCQkJCU5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpOwogCWlmIChJU19F UlIocXVldWUpKQogCQlyZXR1cm4gUFRSX0VSUihxdWV1ZSk7CiAKZGlmZiAtLWdpdCBhL25ldC9u ZXRmaWx0ZXIveF90YWJsZXMuYyBiL25ldC9uZXRmaWx0ZXIveF90YWJsZXMuYwppbmRleCAxMzkz YWY3ODZlMTUuLjNjYTZkYjEzYWY5MiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci94X3RhYmxl cy5jCisrKyBiL25ldC9uZXRmaWx0ZXIveF90YWJsZXMuYwpAQCAtNzIxLDYgKzcyMSw1NiBAQCBp bnQgeHRfY2hlY2tfZW50cnlfb2Zmc2V0cyhjb25zdCB2b2lkICpiYXNlLAogfQogRVhQT1JUX1NZ TUJPTCh4dF9jaGVja19lbnRyeV9vZmZzZXRzKTsKIAorLyoqCisgKiB4dF9hbGxvY19lbnRyeV9v ZmZzZXRzIC0gYWxsb2NhdGUgYXJyYXkgdG8gc3RvcmUgcnVsZSBoZWFkIG9mZnNldHMKKyAqCisg KiBAc2l6ZTogbnVtYmVyIG9mIGVudHJpZXMKKyAqCisgKiBSZXR1cm46IE5VTEwgb3Iga21hbGxv YydkIG9yIHZtYWxsb2MnZCBhcnJheQorICovCit1bnNpZ25lZCBpbnQgKnh0X2FsbG9jX2VudHJ5 X29mZnNldHModW5zaWduZWQgaW50IHNpemUpCit7CisJdW5zaWduZWQgaW50ICpvZmY7CisKKwlv ZmYgPSBrY2FsbG9jKHNpemUsIHNpemVvZih1bnNpZ25lZCBpbnQpLCBHRlBfS0VSTkVMIHwgX19H RlBfTk9XQVJOKTsKKworCWlmIChvZmYpCisJCXJldHVybiBvZmY7CisKKwlpZiAoc2l6ZSA8IChT SVpFX01BWCAvIHNpemVvZih1bnNpZ25lZCBpbnQpKSkKKwkJb2ZmID0gdm1hbGxvYyhzaXplICog c2l6ZW9mKHVuc2lnbmVkIGludCkpOworCisJcmV0dXJuIG9mZjsKK30KK0VYUE9SVF9TWU1CT0wo eHRfYWxsb2NfZW50cnlfb2Zmc2V0cyk7CisKKy8qKgorICogeHRfZmluZF9qdW1wX29mZnNldCAt IGNoZWNrIGlmIHRhcmdldCBpcyBhIHZhbGlkIGp1bXAgb2Zmc2V0CisgKgorICogQG9mZnNldHM6 IGFycmF5IGNvbnRhaW5pbmcgYWxsIHZhbGlkIHJ1bGUgc3RhcnQgb2Zmc2V0cyBvZiBhIHJ1bGUg YmxvYgorICogQHRhcmdldDogdGhlIGp1bXAgdGFyZ2V0IHRvIHNlYXJjaCBmb3IKKyAqIEBzaXpl OiBlbnRyaWVzIGluIEBvZmZzZXQKKyAqLworYm9vbCB4dF9maW5kX2p1bXBfb2Zmc2V0KGNvbnN0 IHVuc2lnbmVkIGludCAqb2Zmc2V0cywKKwkJCSB1bnNpZ25lZCBpbnQgdGFyZ2V0LCB1bnNpZ25l ZCBpbnQgc2l6ZSkKK3sKKwlpbnQgbSwgbG93ID0gMCwgaGkgPSBzaXplOworCisJd2hpbGUgKGhp ID4gbG93KSB7CisJCW0gPSAobG93ICsgaGkpIC8gMnU7CisKKwkJaWYgKG9mZnNldHNbbV0gPiB0 YXJnZXQpCisJCQloaSA9IG07CisJCWVsc2UgaWYgKG9mZnNldHNbbV0gPCB0YXJnZXQpCisJCQls b3cgPSBtICsgMTsKKwkJZWxzZQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNl OworfQorRVhQT1JUX1NZTUJPTCh4dF9maW5kX2p1bXBfb2Zmc2V0KTsKKwogaW50IHh0X2NoZWNr X3RhcmdldChzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhciwKIAkJICAgIHVuc2lnbmVkIGludCBz aXplLCB1X2ludDhfdCBwcm90bywgYm9vbCBpbnZfcHJvdG8pCiB7CmRpZmYgLS1naXQgYS9uZXQv bmV0bGFiZWwvbmV0bGFiZWxfa2FwaS5jIGIvbmV0L25ldGxhYmVsL25ldGxhYmVsX2thcGkuYwpp bmRleCAzMDQ1YTk2NGYzOWMuLjg0NzNkMzRmMmUzYSAxMDA2NDQKLS0tIGEvbmV0L25ldGxhYmVs L25ldGxhYmVsX2thcGkuYworKysgYi9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfa2FwaS5jCkBAIC02 OTksNyArNjk5LDExIEBAIHNvY2tldF9zZXRhdHRyX3JldHVybjoKICAqLwogdm9pZCBuZXRsYmxf c29ja19kZWxhdHRyKHN0cnVjdCBzb2NrICpzaykKIHsKLQljaXBzb192NF9zb2NrX2RlbGF0dHIo c2spOworCXN3aXRjaCAoc2stPnNrX2ZhbWlseSkgeworCWNhc2UgQUZfSU5FVDoKKwkJY2lwc29f djRfc29ja19kZWxhdHRyKHNrKTsKKwkJYnJlYWs7CisJfQogfQogCiAvKioKQEAgLTg2Miw3ICs4 NjYsMTEgQEAgcmVxX3NldGF0dHJfcmV0dXJuOgogKi8KIHZvaWQgbmV0bGJsX3JlcV9kZWxhdHRy KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKIHsKLQljaXBzb192NF9yZXFfZGVsYXR0cihyZXEp OworCXN3aXRjaCAocmVxLT5yc2tfb3BzLT5mYW1pbHkpIHsKKwljYXNlIEFGX0lORVQ6CisJCWNp cHNvX3Y0X3JlcV9kZWxhdHRyKHJlcSk7CisJCWJyZWFrOworCX0KIH0KIAogLyoqCmRpZmYgLS1n aXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCmlu ZGV4IGUxNTQzYjAzZTM5ZC4uYzBiZGQzYmNlMTg5IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2No X2dlbmVyaWMuYworKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwpAQCAtNTkwLDE4ICs1OTAs MTkgQEAgc3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVl ICpkZXZfcXVldWUsCiAJc3RydWN0IFFkaXNjICpzY2g7CiAKIAlpZiAoIXRyeV9tb2R1bGVfZ2V0 KG9wcy0+b3duZXIpKQotCQlnb3RvIGVycm91dDsKKwkJcmV0dXJuIE5VTEw7CiAKIAlzY2ggPSBx ZGlzY19hbGxvYyhkZXZfcXVldWUsIG9wcyk7Ci0JaWYgKElTX0VSUihzY2gpKQotCQlnb3RvIGVy cm91dDsKKwlpZiAoSVNfRVJSKHNjaCkpIHsKKwkJbW9kdWxlX3B1dChvcHMtPm93bmVyKTsKKwkJ cmV0dXJuIE5VTEw7CisJfQogCXNjaC0+cGFyZW50ID0gcGFyZW50aWQ7CiAKIAlpZiAoIW9wcy0+ aW5pdCB8fCBvcHMtPmluaXQoc2NoLCBOVUxMKSA9PSAwKQogCQlyZXR1cm4gc2NoOwogCiAJcWRp c2NfZGVzdHJveShzY2gpOwotZXJyb3V0OgogCXJldHVybiBOVUxMOwogfQogRVhQT1JUX1NZTUJP TChxZGlzY19jcmVhdGVfZGZsdCk7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL2F1dGhfZ3NzL2F1 dGhfZ3NzLmMgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmMKaW5kZXggYjZlNDQwYmFj Y2MzLi4yNjViZTAwYTRhYzUgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9n c3MuYworKysgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmMKQEAgLTMyNiwxMiArMzI2 LDE0IEBAIGdzc19yZWxlYXNlX21zZyhzdHJ1Y3QgZ3NzX3VwY2FsbF9tc2cgKmdzc19tc2cpCiB9 CiAKIHN0YXRpYyBzdHJ1Y3QgZ3NzX3VwY2FsbF9tc2cgKgotX19nc3NfZmluZF91cGNhbGwoc3Ry dWN0IHJwY19waXBlICpwaXBlLCBrdWlkX3QgdWlkKQorX19nc3NfZmluZF91cGNhbGwoc3RydWN0 IHJwY19waXBlICpwaXBlLCBrdWlkX3QgdWlkLCBjb25zdCBzdHJ1Y3QgZ3NzX2F1dGggKmF1dGgp CiB7CiAJc3RydWN0IGdzc191cGNhbGxfbXNnICpwb3M7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShw b3MsICZwaXBlLT5pbl9kb3duY2FsbCwgbGlzdCkgewogCQlpZiAoIXVpZF9lcShwb3MtPnVpZCwg dWlkKSkKIAkJCWNvbnRpbnVlOworCQlpZiAoYXV0aCAmJiBwb3MtPmF1dGgtPnNlcnZpY2UgIT0g YXV0aC0+c2VydmljZSkKKwkJCWNvbnRpbnVlOwogCQlhdG9taWNfaW5jKCZwb3MtPmNvdW50KTsK IAkJZHByaW50aygiUlBDOiAgICAgICAlcyBmb3VuZCBtc2cgJXBcbiIsIF9fZnVuY19fLCBwb3Mp OwogCQlyZXR1cm4gcG9zOwpAQCAtMzUxLDcgKzM1Myw3IEBAIGdzc19hZGRfbXNnKHN0cnVjdCBn c3NfdXBjYWxsX21zZyAqZ3NzX21zZykKIAlzdHJ1Y3QgZ3NzX3VwY2FsbF9tc2cgKm9sZDsKIAog CXNwaW5fbG9jaygmcGlwZS0+bG9jayk7Ci0Jb2xkID0gX19nc3NfZmluZF91cGNhbGwocGlwZSwg Z3NzX21zZy0+dWlkKTsKKwlvbGQgPSBfX2dzc19maW5kX3VwY2FsbChwaXBlLCBnc3NfbXNnLT51 aWQsIGdzc19tc2ctPmF1dGgpOwogCWlmIChvbGQgPT0gTlVMTCkgewogCQlhdG9taWNfaW5jKCZn c3NfbXNnLT5jb3VudCk7CiAJCWxpc3RfYWRkKCZnc3NfbXNnLT5saXN0LCAmcGlwZS0+aW5fZG93 bmNhbGwpOwpAQCAtNzAwLDcgKzcwMiw3IEBAIGdzc19waXBlX2Rvd25jYWxsKHN0cnVjdCBmaWxl ICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBzaXplX3QgbWxlbikKIAllcnIgPSAtRU5P RU5UOwogCS8qIEZpbmQgYSBtYXRjaGluZyB1cGNhbGwgKi8KIAlzcGluX2xvY2soJnBpcGUtPmxv Y2spOwotCWdzc19tc2cgPSBfX2dzc19maW5kX3VwY2FsbChwaXBlLCB1aWQpOworCWdzc19tc2cg PSBfX2dzc19maW5kX3VwY2FsbChwaXBlLCB1aWQsIE5VTEwpOwogCWlmIChnc3NfbXNnID09IE5V TEwpIHsKIAkJc3Bpbl91bmxvY2soJnBpcGUtPmxvY2spOwogCQlnb3RvIGVycl9wdXRfY3R4Owpk aWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy9zdmMuYyBiL25ldC9zdW5ycGMvc3ZjLmMKaW5kZXggNzhj ODA5YzFmODE5Li5hN2U1NjI0YTFjZjIgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvc3ZjLmMKKysr IGIvbmV0L3N1bnJwYy9zdmMuYwpAQCAtMTE4OSwxMSArMTE4OSwxNiBAQCBzdmNfcHJvY2Vzc19j b21tb24oc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IGt2ZWMgKmFyZ3YsIHN0cnVjdCBr dmVjICpyZXN2KQogCQkqc3RhdHAgPSBwcm9jcC0+cGNfZnVuYyhycXN0cCwgcnFzdHAtPnJxX2Fy Z3AsIHJxc3RwLT5ycV9yZXNwKTsKIAogCQkvKiBFbmNvZGUgcmVwbHkgKi8KLQkJaWYgKHJxc3Rw LT5ycV9kcm9wbWUpIHsKKwkJaWYgKCpzdGF0cCA9PSBycGNfZHJvcF9yZXBseSB8fCBycXN0cC0+ cnFfZHJvcG1lKSB7CiAJCQlpZiAocHJvY3AtPnBjX3JlbGVhc2UpCiAJCQkJcHJvY3AtPnBjX3Jl bGVhc2UocnFzdHAsIE5VTEwsIHJxc3RwLT5ycV9yZXNwKTsKIAkJCWdvdG8gZHJvcGl0OwogCQl9 CisJCWlmICgqc3RhdHAgPT0gcnBjX2F1dGhlcnJfYmFkY3JlZCkgeworCQkJaWYgKHByb2NwLT5w Y19yZWxlYXNlKQorCQkJCXByb2NwLT5wY19yZWxlYXNlKHJxc3RwLCBOVUxMLCBycXN0cC0+cnFf cmVzcCk7CisJCQlnb3RvIGVycl9iYWRfYXV0aDsKKwkJfQogCQlpZiAoKnN0YXRwID09IHJwY19z dWNjZXNzICYmCiAJCSAgICAoeGRyID0gcHJvY3AtPnBjX2VuY29kZSkgJiYKIAkJICAgICF4ZHIo cnFzdHAsIHJlc3YtPmlvdl9iYXNlK3Jlc3YtPmlvdl9sZW4sIHJxc3RwLT5ycV9yZXNwKSkgewpk aWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjEx LmMKaW5kZXggNTY5MThmODlhMWQ2Li5kNGZiMjc1YzRjMjAgMTAwNjQ0Ci0tLSBhL25ldC93aXJl bGVzcy9ubDgwMjExLmMKKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtNTk4MCw3ICs1 OTgwLDcgQEAgc3RhdGljIGludCBubDgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCBza19idWZm ICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAKIAkJcGFyYW1zLm5fY291bnRlcl9vZmZz ZXRzX3ByZXNwID0gbGVuIC8gc2l6ZW9mKHUxNik7CiAJCWlmIChyZGV2LT53aXBoeS5tYXhfbnVt X2NzYV9jb3VudGVycyAmJgotCQkgICAgKHBhcmFtcy5uX2NvdW50ZXJfb2Zmc2V0c19iZWFjb24g PgorCQkgICAgKHBhcmFtcy5uX2NvdW50ZXJfb2Zmc2V0c19wcmVzcCA+CiAJCSAgICAgcmRldi0+ d2lwaHkubWF4X251bV9jc2FfY291bnRlcnMpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKZGlmZiAt LWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwppbmRl eCA4NmYzODFiMDlkOGQuLjcyNWNmMjQzODYwYyAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9z dGF0ZS5jCisrKyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwpAQCAtMzM5LDYgKzMzOSw3IEBAIHN0 YXRpYyB2b2lkIHhmcm1fc3RhdGVfZ2NfZGVzdHJveShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCkKIHsK IAl0YXNrbGV0X2hydGltZXJfY2FuY2VsKCZ4LT5tdGltZXIpOwogCWRlbF90aW1lcl9zeW5jKCZ4 LT5ydGltZXIpOworCWtmcmVlKHgtPmFlYWQpOwogCWtmcmVlKHgtPmFhbGcpOwogCWtmcmVlKHgt PmVhbGcpOwogCWtmcmVlKHgtPmNhbGcpOwpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2Vy LmMgYi9uZXQveGZybS94ZnJtX3VzZXIuYwppbmRleCBkNGRiNmViYjA4OWQuLjgwNTllNDEyYzlm MyAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmMKKysrIGIvbmV0L3hmcm0veGZybV91 c2VyLmMKQEAgLTU1OSw5ICs1NTksMTIgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJt X3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKGVycikKIAkJZ290byBlcnJv cjsKIAotCWlmIChhdHRyc1tYRlJNQV9TRUNfQ1RYXSAmJgotCSAgICBzZWN1cml0eV94ZnJtX3N0 YXRlX2FsbG9jKHgsIG5sYV9kYXRhKGF0dHJzW1hGUk1BX1NFQ19DVFhdKSkpCi0JCWdvdG8gZXJy b3I7CisJaWYgKGF0dHJzW1hGUk1BX1NFQ19DVFhdKSB7CisJCWVyciA9IHNlY3VyaXR5X3hmcm1f c3RhdGVfYWxsb2MoeCwKKwkJCQkJCW5sYV9kYXRhKGF0dHJzW1hGUk1BX1NFQ19DVFhdKSk7CisJ CWlmIChlcnIpCisJCQlnb3RvIGVycm9yOworCX0KIAogCWlmICgoZXJyID0geGZybV9hbGxvY19y ZXBsYXlfc3RhdGVfZXNuKCZ4LT5yZXBsYXlfZXNuLCAmeC0+cHJlcGxheV9lc24sCiAJCQkJCSAg ICAgICBhdHRyc1tYRlJNQV9SRVBMQVlfRVNOX1ZBTF0pKSkKQEAgLTg2OSw3ICs4NzIsOCBAQCBz dGF0aWMgaW50IHhmcm1fZHVtcF9zYV9kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYikK IAlzdHJ1Y3Qgc29jayAqc2sgPSBjYi0+c2tiLT5zazsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBzb2Nr X25ldChzayk7CiAKLQl4ZnJtX3N0YXRlX3dhbGtfZG9uZSh3YWxrLCBuZXQpOworCWlmIChjYi0+ YXJnc1swXSkKKwkJeGZybV9zdGF0ZV93YWxrX2RvbmUod2FsaywgbmV0KTsKIAlyZXR1cm4gMDsK IH0KIApAQCAtODk0LDggKzg5OCw2IEBAIHN0YXRpYyBpbnQgeGZybV9kdW1wX3NhKHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYikKIAkJdTggcHJvdG8gPSAw OwogCQlpbnQgZXJyOwogCi0JCWNiLT5hcmdzWzBdID0gMTsKLQogCQllcnIgPSBubG1zZ19wYXJz ZShjYi0+bmxoLCAwLCBhdHRycywgWEZSTUFfTUFYLAogCQkJCSAgeGZybWFfcG9saWN5KTsKIAkJ aWYgKGVyciA8IDApCkBAIC05MTQsNiArOTE2LDcgQEAgc3RhdGljIGludCB4ZnJtX2R1bXBfc2Eo c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogCQkJcHJv dG8gPSBubGFfZ2V0X3U4KGF0dHJzW1hGUk1BX1BST1RPXSk7CiAKIAkJeGZybV9zdGF0ZV93YWxr X2luaXQod2FsaywgcHJvdG8sIGZpbHRlcik7CisJCWNiLT5hcmdzWzBdID0gMTsKIAl9CiAKIAko dm9pZCkgeGZybV9zdGF0ZV93YWxrKG5ldCwgd2FsaywgZHVtcF9vbmVfc3RhdGUsICZpbmZvKTsK ZGlmZiAtLWdpdCBhL3NjcmlwdHMvcmVjb3JkbWNvdW50LmMgYi9zY3JpcHRzL3JlY29yZG1jb3Vu dC5jCmluZGV4IDU2ZjQ5N2IyN2M0OS4uYTk3YWUwNGY1ZDJhIDEwMDY0NAotLS0gYS9zY3JpcHRz L3JlY29yZG1jb3VudC5jCisrKyBiL3NjcmlwdHMvcmVjb3JkbWNvdW50LmMKQEAgLTMzLDEwICsz MywxNyBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisvKgor ICogZ2xpYmMgc3luY2VkIHVwIGFuZCBhZGRlZCB0aGUgbWV0YWcgbnVtYmVyIGJ1dCBkaWRuJ3Qg YWRkIHRoZSByZWxvY2F0aW9ucy4KKyAqIFdvcmsgYXJvdW5kIHRoaXMgaW4gYSBjcnVkZSBtYW5u ZXIgZm9yIG5vdy4KKyAqLwogI2lmbmRlZiBFTV9NRVRBRwotLyogUmVtb3ZlIHRoaXMgd2hlbiB0 aGVzZSBtYWtlIGl0IHRvIHRoZSBzdGFuZGFyZCBzeXN0ZW0gZWxmLmguICovCiAjZGVmaW5lIEVN X01FVEFHICAgICAgMTc0CisjZW5kaWYKKyNpZm5kZWYgUl9NRVRBR19BRERSMzIKICNkZWZpbmUg Ul9NRVRBR19BRERSMzIgICAgICAgICAgICAgICAgICAgMgorI2VuZGlmCisjaWZuZGVmIFJfTUVU QUdfTk9ORQogI2RlZmluZSBSX01FVEFHX05PTkUgICAgICAgICAgICAgICAgICAgICAzCiAjZW5k aWYKIApkaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9wcm9jLmMgYi9zZWN1cml0eS9rZXlzL3By b2MuYwppbmRleCBkM2Y2ZjJmZDIxZGIuLjYyYTg2ZThjYjkwNyAxMDA2NDQKLS0tIGEvc2VjdXJp dHkva2V5cy9wcm9jLmMKKysrIGIvc2VjdXJpdHkva2V5cy9wcm9jLmMKQEAgLTE4Nyw3ICsxODcs NyBAQCBzdGF0aWMgaW50IHByb2Nfa2V5c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dikKIAlzdHJ1Y3QgdGltZXNwZWMgbm93OwogCXVuc2lnbmVkIGxvbmcgdGltbzsKIAlrZXlfcmVm X3Qga2V5X3JlZiwgc2tleV9yZWY7Ci0JY2hhciB4YnVmWzEyXTsKKwljaGFyIHhidWZbMTZdOwog CWludCByYzsKIAogCXN0cnVjdCBrZXlyaW5nX3NlYXJjaF9jb250ZXh0IGN0eCA9IHsKZGlmZiAt LWdpdCBhL3NvdW5kL2NvcmUvY29udHJvbC5jIGIvc291bmQvY29yZS9jb250cm9sLmMKaW5kZXgg MWQzOTVkODY1ZjFiLi42NjUwMjBiN2M4MmUgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvY29udHJv bC5jCisrKyBiL3NvdW5kL2NvcmUvY29udHJvbC5jCkBAIC0xNTAsNiArMTUwLDggQEAgdm9pZCBz bmRfY3RsX25vdGlmeShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBtYXNrLAog CQogCWlmIChzbmRfQlVHX09OKCFjYXJkIHx8ICFpZCkpCiAJCXJldHVybjsKKwlpZiAoY2FyZC0+ c2h1dGRvd24pCisJCXJldHVybjsKIAlyZWFkX2xvY2soJmNhcmQtPmN0bF9maWxlc19yd2xvY2sp OwogI2lmIElTX0VOQUJMRUQoQ09ORklHX1NORF9NSVhFUl9PU1MpCiAJY2FyZC0+bWl4ZXJfb3Nz X2NoYW5nZV9jb3VudCsrOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY20uYyBiL3NvdW5kL2Nv cmUvcGNtLmMKaW5kZXggNDM5MzJlOGRjZTY2Li4yYzlkYzMxMDYzNDAgMTAwNjQ0Ci0tLSBhL3Nv dW5kL2NvcmUvcGNtLmMKKysrIGIvc291bmQvY29yZS9wY20uYwpAQCAtODA2LDYgKzgwNiwxNCBA QCBpbnQgc25kX3BjbV9uZXdfaW50ZXJuYWwoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBjb25zdCBj aGFyICppZCwgaW50IGRldmljZSwKIH0KIEVYUE9SVF9TWU1CT0woc25kX3BjbV9uZXdfaW50ZXJu YWwpOwogCitzdGF0aWMgdm9pZCBmcmVlX2NobWFwKHN0cnVjdCBzbmRfcGNtX3N0ciAqcHN0cikK K3sKKwlpZiAocHN0ci0+Y2htYXBfa2N0bCkgeworCQlzbmRfY3RsX3JlbW92ZShwc3RyLT5wY20t PmNhcmQsIHBzdHItPmNobWFwX2tjdGwpOworCQlwc3RyLT5jaG1hcF9rY3RsID0gTlVMTDsKKwl9 Cit9CisKIHN0YXRpYyB2b2lkIHNuZF9wY21fZnJlZV9zdHJlYW0oc3RydWN0IHNuZF9wY21fc3Ry ICogcHN0cikKIHsKIAlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgKnN1YnN0 cmVhbV9uZXh0OwpAQCAtODI4LDYgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIHNuZF9wY21fZnJlZV9z dHJlYW0oc3RydWN0IHNuZF9wY21fc3RyICogcHN0cikKIAkJa2ZyZWUoc2V0dXApOwogCX0KICNl bmRpZgorCWZyZWVfY2htYXAocHN0cik7CiB9CiAKIHN0YXRpYyBpbnQgc25kX3BjbV9mcmVlKHN0 cnVjdCBzbmRfcGNtICpwY20pCkBAIC0xMTQyLDEwICsxMTUxLDcgQEAgc3RhdGljIGludCBzbmRf cGNtX2Rldl9kaXNjb25uZWN0KHN0cnVjdCBzbmRfZGV2aWNlICpkZXZpY2UpCiAJCQlicmVhazsK IAkJfQogCQlzbmRfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2dHlwZSwgcGNtLT5jYXJkLCBwY20tPmRl dmljZSk7Ci0JCWlmIChwY20tPnN0cmVhbXNbY2lkeF0uY2htYXBfa2N0bCkgewotCQkJc25kX2N0 bF9yZW1vdmUocGNtLT5jYXJkLCBwY20tPnN0cmVhbXNbY2lkeF0uY2htYXBfa2N0bCk7Ci0JCQlw Y20tPnN0cmVhbXNbY2lkeF0uY2htYXBfa2N0bCA9IE5VTEw7Ci0JCX0KKwkJZnJlZV9jaG1hcCgm cGNtLT5zdHJlYW1zW2NpZHhdKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZwY20tPm9wZW5fbXV0ZXgp OwogIHVubG9jazoKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvcmF3bWlkaS5jIGIvc291bmQvY29y ZS9yYXdtaWRpLmMKaW5kZXggODU3NzQxNDMxZmM2Li5iNWM4OGUwOGYzZmUgMTAwNjQ0Ci0tLSBh L3NvdW5kL2NvcmUvcmF3bWlkaS5jCisrKyBiL3NvdW5kL2NvcmUvcmF3bWlkaS5jCkBAIC0xNjM3 LDEyICsxNjM3LDE0IEBAIHN0YXRpYyBpbnQgc25kX3Jhd21pZGlfZGV2X3JlZ2lzdGVyKHN0cnVj dCBzbmRfZGV2aWNlICpkZXZpY2UpCiAJCXJldHVybiAtRUJVU1k7CiAJfQogCWxpc3RfYWRkX3Rh aWwoJnJtaWRpLT5saXN0LCAmc25kX3Jhd21pZGlfZGV2aWNlcyk7CisJbXV0ZXhfdW5sb2NrKCZy ZWdpc3Rlcl9tdXRleCk7CiAJc3ByaW50ZihuYW1lLCAibWlkaUMlaUQlaSIsIHJtaWRpLT5jYXJk LT5udW1iZXIsIHJtaWRpLT5kZXZpY2UpOwogCWlmICgoZXJyID0gc25kX3JlZ2lzdGVyX2Rldmlj ZShTTkRSVl9ERVZJQ0VfVFlQRV9SQVdNSURJLAogCQkJCSAgICAgICBybWlkaS0+Y2FyZCwgcm1p ZGktPmRldmljZSwKIAkJCQkgICAgICAgJnNuZF9yYXdtaWRpX2Zfb3BzLCBybWlkaSwgbmFtZSkp IDwgMCkgewogCQlybWlkaV9lcnIocm1pZGksICJ1bmFibGUgdG8gcmVnaXN0ZXIgcmF3bWlkaSBk ZXZpY2UgJWk6JWlcbiIsCiAJCQkgIHJtaWRpLT5jYXJkLT5udW1iZXIsIHJtaWRpLT5kZXZpY2Up OworCQltdXRleF9sb2NrKCZyZWdpc3Rlcl9tdXRleCk7CiAJCWxpc3RfZGVsKCZybWlkaS0+bGlz dCk7CiAJCW11dGV4X3VubG9jaygmcmVnaXN0ZXJfbXV0ZXgpOwogCQlyZXR1cm4gZXJyOwpAQCAt MTY1MCw2ICsxNjUyLDcgQEAgc3RhdGljIGludCBzbmRfcmF3bWlkaV9kZXZfcmVnaXN0ZXIoc3Ry dWN0IHNuZF9kZXZpY2UgKmRldmljZSkKIAlpZiAocm1pZGktPm9wcyAmJiBybWlkaS0+b3BzLT5k ZXZfcmVnaXN0ZXIgJiYKIAkgICAgKGVyciA9IHJtaWRpLT5vcHMtPmRldl9yZWdpc3RlcihybWlk aSkpIDwgMCkgewogCQlzbmRfdW5yZWdpc3Rlcl9kZXZpY2UoU05EUlZfREVWSUNFX1RZUEVfUkFX TUlESSwgcm1pZGktPmNhcmQsIHJtaWRpLT5kZXZpY2UpOworCQltdXRleF9sb2NrKCZyZWdpc3Rl cl9tdXRleCk7CiAJCWxpc3RfZGVsKCZybWlkaS0+bGlzdCk7CiAJCW11dGV4X3VubG9jaygmcmVn aXN0ZXJfbXV0ZXgpOwogCQlyZXR1cm4gZXJyOwpAQCAtMTY4Miw3ICsxNjg1LDYgQEAgc3RhdGlj IGludCBzbmRfcmF3bWlkaV9kZXZfcmVnaXN0ZXIoc3RydWN0IHNuZF9kZXZpY2UgKmRldmljZSkK IAkJfQogCX0KICNlbmRpZiAvKiBDT05GSUdfU05EX09TU0VNVUwgKi8KLQltdXRleF91bmxvY2so JnJlZ2lzdGVyX211dGV4KTsKIAlzcHJpbnRmKG5hbWUsICJtaWRpJWQiLCBybWlkaS0+ZGV2aWNl KTsKIAllbnRyeSA9IHNuZF9pbmZvX2NyZWF0ZV9jYXJkX2VudHJ5KHJtaWRpLT5jYXJkLCBuYW1l LCBybWlkaS0+Y2FyZC0+cHJvY19yb290KTsKIAlpZiAoZW50cnkpIHsKZGlmZiAtLWdpdCBhL3Nv dW5kL2NvcmUvdGltZXIuYyBiL3NvdW5kL2NvcmUvdGltZXIuYwppbmRleCBjZGMyMjUwM2ZkYjgu LmQzMmM2MzFjY2E2YiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS90aW1lci5jCisrKyBiL3NvdW5k L2NvcmUvdGltZXIuYwpAQCAtMzUsNiArMzUsOSBAQAogI2luY2x1ZGUgPHNvdW5kL2luaXR2YWwu aD4KICNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CiAKKy8qIGludGVybmFsIGZsYWdzICovCisjZGVm aW5lIFNORFJWX1RJTUVSX0lGTEdfUEFVU0VECQkweDAwMDEwMDAwCisKICNpZiBJU19FTkFCTEVE KENPTkZJR19TTkRfSFJUSU1FUikKICNkZWZpbmUgREVGQVVMVF9USU1FUl9MSU1JVCA0CiAjZWxp ZiBJU19FTkFCTEVEKENPTkZJR19TTkRfUlRDVElNRVIpCkBAIC0yOTYsOCArMjk5LDIxIEBAIGlu dCBzbmRfdGltZXJfb3BlbihzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNlICoqdGksCiAJCWdldF9k ZXZpY2UoJnRpbWVyLT5jYXJkLT5jYXJkX2Rldik7CiAJdGltZXJpLT5zbGF2ZV9jbGFzcyA9IHRp ZC0+ZGV2X3NjbGFzczsKIAl0aW1lcmktPnNsYXZlX2lkID0gc2xhdmVfaWQ7Ci0JaWYgKGxpc3Rf ZW1wdHkoJnRpbWVyLT5vcGVuX2xpc3RfaGVhZCkgJiYgdGltZXItPmh3Lm9wZW4pCi0JCXRpbWVy LT5ody5vcGVuKHRpbWVyKTsKKworCWlmIChsaXN0X2VtcHR5KCZ0aW1lci0+b3Blbl9saXN0X2hl YWQpICYmIHRpbWVyLT5ody5vcGVuKSB7CisJCWludCBlcnIgPSB0aW1lci0+aHcub3Blbih0aW1l cik7CisJCWlmIChlcnIpIHsKKwkJCWtmcmVlKHRpbWVyaS0+b3duZXIpOworCQkJa2ZyZWUodGlt ZXJpKTsKKworCQkJaWYgKHRpbWVyLT5jYXJkKQorCQkJCXB1dF9kZXZpY2UoJnRpbWVyLT5jYXJk LT5jYXJkX2Rldik7CisJCQltb2R1bGVfcHV0KHRpbWVyLT5tb2R1bGUpOworCQkJbXV0ZXhfdW5s b2NrKCZyZWdpc3Rlcl9tdXRleCk7CisJCQlyZXR1cm4gZXJyOworCQl9CisJfQorCiAJbGlzdF9h ZGRfdGFpbCgmdGltZXJpLT5vcGVuX2xpc3QsICZ0aW1lci0+b3Blbl9saXN0X2hlYWQpOwogCXNu ZF90aW1lcl9jaGVja19tYXN0ZXIodGltZXJpKTsKIAltdXRleF91bmxvY2soJnJlZ2lzdGVyX211 dGV4KTsKQEAgLTU1Niw2ICs1NzIsMTAgQEAgc3RhdGljIGludCBfc25kX3RpbWVyX3N0b3Aoc3Ry dWN0IHNuZF90aW1lcl9pbnN0YW5jZSAqdGltZXJpLCBpbnQgZXZlbnQpCiAJCX0KIAl9CiAJdGlt ZXJpLT5mbGFncyAmPSB+KFNORFJWX1RJTUVSX0lGTEdfUlVOTklORyB8IFNORFJWX1RJTUVSX0lG TEdfU1RBUlQpOworCWlmIChldmVudCA9PSBTTkRSVl9USU1FUl9FVkVOVF9TVE9QKQorCQl0aW1l cmktPmZsYWdzICY9IH5TTkRSVl9USU1FUl9JRkxHX1BBVVNFRDsKKwllbHNlCisJCXRpbWVyaS0+ ZmxhZ3MgfD0gU05EUlZfVElNRVJfSUZMR19QQVVTRUQ7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmdGltZXItPmxvY2ssIGZsYWdzKTsKICAgICAgIF9fZW5kOgogCWlmIChldmVudCAhPSBTTkRS Vl9USU1FUl9FVkVOVF9SRVNPTFVUSU9OKQpAQCAtNTk4LDYgKzYxOCwxMCBAQCBpbnQgc25kX3Rp bWVyX2NvbnRpbnVlKHN0cnVjdCBzbmRfdGltZXJfaW5zdGFuY2UgKnRpbWVyaSkKIAogCWlmICh0 aW1lcmkgPT0gTlVMTCkKIAkJcmV0dXJuIHJlc3VsdDsKKwkvKiB0aW1lciBjYW4gY29udGludWUg b25seSBhZnRlciBwYXVzZSAqLworCWlmICghKHRpbWVyaS0+ZmxhZ3MgJiBTTkRSVl9USU1FUl9J RkxHX1BBVVNFRCkpCisJCXJldHVybiAtRUlOVkFMOworCiAJaWYgKHRpbWVyaS0+ZmxhZ3MgJiBT TkRSVl9USU1FUl9JRkxHX1NMQVZFKQogCQlyZXR1cm4gc25kX3RpbWVyX3N0YXJ0X3NsYXZlKHRp bWVyaSk7CiAJdGltZXIgPSB0aW1lcmktPnRpbWVyOwpAQCAtODM5LDYgKzg2Myw3IEBAIGludCBz bmRfdGltZXJfbmV3KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgY2hhciAqaWQsIHN0cnVjdCBzbmRf dGltZXJfaWQgKnRpZCwKIAl0aW1lci0+dG1yX3N1YmRldmljZSA9IHRpZC0+c3ViZGV2aWNlOwog CWlmIChpZCkKIAkJc3RybGNweSh0aW1lci0+aWQsIGlkLCBzaXplb2YodGltZXItPmlkKSk7CisJ dGltZXItPnN0aWNrcyA9IDE7CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVyLT5kZXZpY2VfbGlzdCk7 CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVyLT5vcGVuX2xpc3RfaGVhZCk7CiAJSU5JVF9MSVNUX0hF QUQoJnRpbWVyLT5hY3RpdmVfbGlzdF9oZWFkKTsKQEAgLTE4MzAsNiArMTg1NSw5IEBAIHN0YXRp YyBpbnQgc25kX3RpbWVyX3VzZXJfY29udGludWUoc3RydWN0IGZpbGUgKmZpbGUpCiAJdHUgPSBm aWxlLT5wcml2YXRlX2RhdGE7CiAJaWYgKCF0dS0+dGltZXJpKQogCQlyZXR1cm4gLUVCQURGRDsK KwkvKiBzdGFydCB0aW1lciBpbnN0ZWFkIG9mIGNvbnRpbnVlIGlmIGl0J3Mgbm90IHVzZWQgYmVm b3JlICovCisJaWYgKCEodHUtPnRpbWVyaS0+ZmxhZ3MgJiBTTkRSVl9USU1FUl9JRkxHX1BBVVNF RCkpCisJCXJldHVybiBzbmRfdGltZXJfdXNlcl9zdGFydChmaWxlKTsKIAl0dS0+dGltZXJpLT5s b3N0ID0gMDsKIAlyZXR1cm4gKGVyciA9IHNuZF90aW1lcl9jb250aW51ZSh0dS0+dGltZXJpKSkg PCAwID8gZXJyIDogMDsKIH0KQEAgLTE5NzEsNiArMTk5OSw3IEBAIHN0YXRpYyBzc2l6ZV90IHNu ZF90aW1lcl91c2VyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWZmZXIs CiAJCXR1LT5xdXNlZC0tOwogCQlzcGluX3VubG9ja19pcnEoJnR1LT5xbG9jayk7CiAKKwkJbXV0 ZXhfbG9jaygmdHUtPmlvY3RsX2xvY2spOwogCQlpZiAodHUtPnRyZWFkKSB7CiAJCQlpZiAoY29w eV90b191c2VyKGJ1ZmZlciwgJnR1LT50cXVldWVbcWhlYWRdLAogCQkJCQkgc2l6ZW9mKHN0cnVj dCBzbmRfdGltZXJfdHJlYWQpKSkKQEAgLTE5ODAsNiArMjAwOSw3IEBAIHN0YXRpYyBzc2l6ZV90 IHNuZF90aW1lcl91c2VyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWZm ZXIsCiAJCQkJCSBzaXplb2Yoc3RydWN0IHNuZF90aW1lcl9yZWFkKSkpCiAJCQkJZXJyID0gLUVG QVVMVDsKIAkJfQorCQltdXRleF91bmxvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAogCQlzcGluX2xv Y2tfaXJxKCZ0dS0+cWxvY2spOwogCQlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL3NvdW5kL2Zp cmV3aXJlL2ZpcmV3b3Jrcy9maXJld29ya3MuaCBiL3NvdW5kL2ZpcmV3aXJlL2ZpcmV3b3Jrcy9m aXJld29ya3MuaAppbmRleCAwODRkNDE0YjIyOGMuLmI0MzFjMzRiMmQ3NCAxMDA2NDQKLS0tIGEv c291bmQvZmlyZXdpcmUvZmlyZXdvcmtzL2ZpcmV3b3Jrcy5oCisrKyBiL3NvdW5kL2ZpcmV3aXJl L2ZpcmV3b3Jrcy9maXJld29ya3MuaApAQCAtMTA2LDcgKzEwNiw2IEBAIHN0cnVjdCBzbmRfZWZ3 IHsKIAl1OCAqcmVzcF9idWY7CiAJdTggKnB1bGxfcHRyOwogCXU4ICpwdXNoX3B0cjsKLQl1bnNp Z25lZCBpbnQgcmVzcF9xdWV1ZXM7CiB9OwogCiBpbnQgc25kX2Vmd190cmFuc2FjdGlvbl9jbWQo c3RydWN0IGZ3X3VuaXQgKnVuaXQsCmRpZmYgLS1naXQgYS9zb3VuZC9maXJld2lyZS9maXJld29y a3MvZmlyZXdvcmtzX2h3ZGVwLmMgYi9zb3VuZC9maXJld2lyZS9maXJld29ya3MvZmlyZXdvcmtz X2h3ZGVwLmMKaW5kZXggMzNkZjg2NTVmZTgxLi4yZTFkOWEyMzkyMGMgMTAwNjQ0Ci0tLSBhL3Nv dW5kL2ZpcmV3aXJlL2ZpcmV3b3Jrcy9maXJld29ya3NfaHdkZXAuYworKysgYi9zb3VuZC9maXJl d2lyZS9maXJld29ya3MvZmlyZXdvcmtzX2h3ZGVwLmMKQEAgLTI1LDYgKzI1LDcgQEAgaHdkZXBf cmVhZF9yZXNwX2J1ZihzdHJ1Y3Qgc25kX2VmdyAqZWZ3LCBjaGFyIF9fdXNlciAqYnVmLCBsb25n IHJlbWFpbmVkLAogewogCXVuc2lnbmVkIGludCBsZW5ndGgsIHRpbGxfZW5kLCB0eXBlOwogCXN0 cnVjdCBzbmRfZWZ3X3RyYW5zYWN0aW9uICp0OworCXU4ICpwdWxsX3B0cjsKIAlsb25nIGNvdW50 ID0gMDsKIAogCWlmIChyZW1haW5lZCA8IHNpemVvZih0eXBlKSArIHNpemVvZihzdHJ1Y3Qgc25k X2Vmd190cmFuc2FjdGlvbikpCkBAIC0zOCw4ICszOSwxNyBAQCBod2RlcF9yZWFkX3Jlc3BfYnVm KHN0cnVjdCBzbmRfZWZ3ICplZncsIGNoYXIgX191c2VyICpidWYsIGxvbmcgcmVtYWluZWQsCiAJ YnVmICs9IHNpemVvZih0eXBlKTsKIAogCS8qIHdyaXRlIGludG8gYnVmZmVyIGFzIG1hbnkgcmVz cG9uc2VzIGFzIHBvc3NpYmxlICovCi0Jd2hpbGUgKGVmdy0+cmVzcF9xdWV1ZXMgPiAwKSB7Ci0J CXQgPSAoc3RydWN0IHNuZF9lZndfdHJhbnNhY3Rpb24gKikoZWZ3LT5wdWxsX3B0cik7CisJc3Bp bl9sb2NrX2lycSgmZWZ3LT5sb2NrKTsKKworCS8qCisJICogV2hlbiBhbm90aGVyIHRhc2sgcmVh Y2hlcyBoZXJlIGR1cmluZyB0aGlzIHRhc2sncyBhY2Nlc3MgdG8gdXNlcgorCSAqIHNwYWNlLCBp dCBwaWNrcyB1cCBjdXJyZW50IHBvc2l0aW9uIGluIGJ1ZmZlciBhbmQgY2FuIHJlYWQgdGhlIHNh bWUKKwkgKiBzZXJpZXMgb2YgcmVzcG9uc2VzLgorCSAqLworCXB1bGxfcHRyID0gZWZ3LT5wdWxs X3B0cjsKKworCXdoaWxlIChlZnctPnB1c2hfcHRyICE9IHB1bGxfcHRyKSB7CisJCXQgPSAoc3Ry dWN0IHNuZF9lZndfdHJhbnNhY3Rpb24gKikocHVsbF9wdHIpOwogCQlsZW5ndGggPSBiZTMyX3Rv X2NwdSh0LT5sZW5ndGgpICogc2l6ZW9mKF9fYmUzMik7CiAKIAkJLyogY29uZmlybSBlbm91Z2gg c3BhY2UgZm9yIHRoaXMgcmVzcG9uc2UgKi8KQEAgLTQ5LDI2ICs1OSwzOSBAQCBod2RlcF9yZWFk X3Jlc3BfYnVmKHN0cnVjdCBzbmRfZWZ3ICplZncsIGNoYXIgX191c2VyICpidWYsIGxvbmcgcmVt YWluZWQsCiAJCS8qIGNvcHkgZnJvbSByaW5nIGJ1ZmZlciB0byB1c2VyIGJ1ZmZlciAqLwogCQl3 aGlsZSAobGVuZ3RoID4gMCkgewogCQkJdGlsbF9lbmQgPSBzbmRfZWZ3X3Jlc3BfYnVmX3NpemUg LQotCQkJCSh1bnNpZ25lZCBpbnQpKGVmdy0+cHVsbF9wdHIgLSBlZnctPnJlc3BfYnVmKTsKKwkJ CQkodW5zaWduZWQgaW50KShwdWxsX3B0ciAtIGVmdy0+cmVzcF9idWYpOwogCQkJdGlsbF9lbmQg PSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbmd0aCwgdGlsbF9lbmQpOwogCi0JCQlpZiAoY29weV90 b191c2VyKGJ1ZiwgZWZ3LT5wdWxsX3B0ciwgdGlsbF9lbmQpKQorCQkJc3Bpbl91bmxvY2tfaXJx KCZlZnctPmxvY2spOworCisJCQlpZiAoY29weV90b191c2VyKGJ1ZiwgcHVsbF9wdHIsIHRpbGxf ZW5kKSkKIAkJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQkJZWZ3LT5wdWxsX3B0ciArPSB0aWxsX2Vu ZDsKLQkJCWlmIChlZnctPnB1bGxfcHRyID49IGVmdy0+cmVzcF9idWYgKwotCQkJCQkgICAgIHNu ZF9lZndfcmVzcF9idWZfc2l6ZSkKLQkJCQllZnctPnB1bGxfcHRyIC09IHNuZF9lZndfcmVzcF9i dWZfc2l6ZTsKKwkJCXNwaW5fbG9ja19pcnEoJmVmdy0+bG9jayk7CisKKwkJCXB1bGxfcHRyICs9 IHRpbGxfZW5kOworCQkJaWYgKHB1bGxfcHRyID49IGVmdy0+cmVzcF9idWYgKyBzbmRfZWZ3X3Jl c3BfYnVmX3NpemUpCisJCQkJcHVsbF9wdHIgLT0gc25kX2Vmd19yZXNwX2J1Zl9zaXplOwogCiAJ CQlsZW5ndGggLT0gdGlsbF9lbmQ7CiAJCQlidWYgKz0gdGlsbF9lbmQ7CiAJCQljb3VudCArPSB0 aWxsX2VuZDsKIAkJCXJlbWFpbmVkIC09IHRpbGxfZW5kOwogCQl9Ci0KLQkJZWZ3LT5yZXNwX3F1 ZXVlcy0tOwogCX0KIAorCS8qCisJICogQWxsIG9mIHRhc2tzIGNhbiByZWFkIGZyb20gdGhlIGJ1 ZmZlciBuZWFybHkgc2ltdWx0YW5lb3VzbHksIGJ1dCB0aGUKKwkgKiBsYXN0IHBvc2l0aW9uIGZv ciBlYWNoIHRhc2sgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mCisJICog Z2l2ZW4gYnVmZmVyLiBIZXJlLCBmb3Igc2ltcGxpY2l0eSwgYSBwb3NpdGlvbiBvZiBidWZmZXIg aXMgc2V0IGJ5CisJICogdGhlIGxhdGVzdCB0YXNrLiBJdCdzIGJldHRlciBmb3IgYSBsaXN0ZW5p bmcgYXBwbGljYXRpb24gdG8gYWxsb3cgb25lCisJICogdGhyZWFkIHRvIHJlYWQgZnJvbSB0aGUg YnVmZmVyLiBVbmxlc3MsIGVhY2ggdGFzayBjYW4gcmVhZCBkaWZmZXJlbnQKKwkgKiBzZXF1ZW5j ZSBvZiByZXNwb25zZXMgZGVwZW5kaW5nIG9uIHZhcmlhdGlvbiBvZiBidWZmZXIgbGVuZ3RoLgor CSAqLworCWVmdy0+cHVsbF9wdHIgPSBwdWxsX3B0cjsKKworCXNwaW5fdW5sb2NrX2lycSgmZWZ3 LT5sb2NrKTsKKwogCXJldHVybiBjb3VudDsKIH0KIApAQCAtNzYsMTQgKzk5LDE3IEBAIHN0YXRp YyBsb25nCiBod2RlcF9yZWFkX2xvY2tlZChzdHJ1Y3Qgc25kX2VmdyAqZWZ3LCBjaGFyIF9fdXNl ciAqYnVmLCBsb25nIGNvdW50LAogCQkgIGxvZmZfdCAqb2Zmc2V0KQogewotCXVuaW9uIHNuZF9m aXJld2lyZV9ldmVudCBldmVudDsKKwl1bmlvbiBzbmRfZmlyZXdpcmVfZXZlbnQgZXZlbnQgPSB7 CisJCS5sb2NrX3N0YXR1cy50eXBlID0gU05EUlZfRklSRVdJUkVfRVZFTlRfTE9DS19TVEFUVVMs CisJfTsKIAotCW1lbXNldCgmZXZlbnQsIDAsIHNpemVvZihldmVudCkpOworCXNwaW5fbG9ja19p cnEoJmVmdy0+bG9jayk7CiAKLQlldmVudC5sb2NrX3N0YXR1cy50eXBlID0gU05EUlZfRklSRVdJ UkVfRVZFTlRfTE9DS19TVEFUVVM7CiAJZXZlbnQubG9ja19zdGF0dXMuc3RhdHVzID0gKGVmdy0+ ZGV2X2xvY2tfY291bnQgPiAwKTsKIAllZnctPmRldl9sb2NrX2NoYW5nZWQgPSBmYWxzZTsKIAor CXNwaW5fdW5sb2NrX2lycSgmZWZ3LT5sb2NrKTsKKwogCWNvdW50ID0gbWluX3QobG9uZywgY291 bnQsIHNpemVvZihldmVudC5sb2NrX3N0YXR1cykpOwogCiAJaWYgKGNvcHlfdG9fdXNlcihidWYs ICZldmVudCwgY291bnQpKQpAQCAtOTgsMTAgKzEyNCwxNSBAQCBod2RlcF9yZWFkKHN0cnVjdCBz bmRfaHdkZXAgKmh3ZGVwLCBjaGFyIF9fdXNlciAqYnVmLCBsb25nIGNvdW50LAogewogCXN0cnVj dCBzbmRfZWZ3ICplZncgPSBod2RlcC0+cHJpdmF0ZV9kYXRhOwogCURFRklORV9XQUlUKHdhaXQp OworCWJvb2wgZGV2X2xvY2tfY2hhbmdlZDsKKwlib29sIHF1ZXVlZDsKIAogCXNwaW5fbG9ja19p cnEoJmVmdy0+bG9jayk7CiAKLQl3aGlsZSAoKCFlZnctPmRldl9sb2NrX2NoYW5nZWQpICYmIChl ZnctPnJlc3BfcXVldWVzID09IDApKSB7CisJZGV2X2xvY2tfY2hhbmdlZCA9IGVmdy0+ZGV2X2xv Y2tfY2hhbmdlZDsKKwlxdWV1ZWQgPSBlZnctPnB1c2hfcHRyICE9IGVmdy0+cHVsbF9wdHI7CisK Kwl3aGlsZSAoIWRldl9sb2NrX2NoYW5nZWQgJiYgIXF1ZXVlZCkgewogCQlwcmVwYXJlX3RvX3dh aXQoJmVmdy0+aHdkZXBfd2FpdCwgJndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7CiAJCXNwaW5f dW5sb2NrX2lycSgmZWZ3LT5sb2NrKTsKIAkJc2NoZWR1bGUoKTsKQEAgLTEwOSwxNSArMTQwLDE3 IEBAIGh3ZGVwX3JlYWQoc3RydWN0IHNuZF9od2RlcCAqaHdkZXAsIGNoYXIgX191c2VyICpidWYs IGxvbmcgY291bnQsCiAJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKIAkJCXJldHVybiAt RVJFU1RBUlRTWVM7CiAJCXNwaW5fbG9ja19pcnEoJmVmdy0+bG9jayk7CisJCWRldl9sb2NrX2No YW5nZWQgPSBlZnctPmRldl9sb2NrX2NoYW5nZWQ7CisJCXF1ZXVlZCA9IGVmdy0+cHVzaF9wdHIg IT0gZWZ3LT5wdWxsX3B0cjsKIAl9CiAKLQlpZiAoZWZ3LT5kZXZfbG9ja19jaGFuZ2VkKQorCXNw aW5fdW5sb2NrX2lycSgmZWZ3LT5sb2NrKTsKKworCWlmIChkZXZfbG9ja19jaGFuZ2VkKQogCQlj b3VudCA9IGh3ZGVwX3JlYWRfbG9ja2VkKGVmdywgYnVmLCBjb3VudCwgb2Zmc2V0KTsKLQllbHNl IGlmIChlZnctPnJlc3BfcXVldWVzID4gMCkKKwllbHNlIGlmIChxdWV1ZWQpCiAJCWNvdW50ID0g aHdkZXBfcmVhZF9yZXNwX2J1ZihlZncsIGJ1ZiwgY291bnQsIG9mZnNldCk7CiAKLQlzcGluX3Vu bG9ja19pcnEoJmVmdy0+bG9jayk7Ci0KIAlyZXR1cm4gY291bnQ7CiB9CiAKQEAgLTE2MCw3ICsx OTMsNyBAQCBod2RlcF9wb2xsKHN0cnVjdCBzbmRfaHdkZXAgKmh3ZGVwLCBzdHJ1Y3QgZmlsZSAq ZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKIAlwb2xsX3dhaXQoZmlsZSwgJmVmdy0+aHdkZXBfd2Fp dCwgd2FpdCk7CiAKIAlzcGluX2xvY2tfaXJxKCZlZnctPmxvY2spOwotCWlmIChlZnctPmRldl9s b2NrX2NoYW5nZWQgfHwgKGVmdy0+cmVzcF9xdWV1ZXMgPiAwKSkKKwlpZiAoZWZ3LT5kZXZfbG9j a19jaGFuZ2VkIHx8IGVmdy0+cHVsbF9wdHIgIT0gZWZ3LT5wdXNoX3B0cikKIAkJZXZlbnRzID0g UE9MTElOIHwgUE9MTFJETk9STTsKIAllbHNlCiAJCWV2ZW50cyA9IDA7CmRpZmYgLS1naXQgYS9z b3VuZC9maXJld2lyZS9maXJld29ya3MvZmlyZXdvcmtzX3Byb2MuYyBiL3NvdW5kL2ZpcmV3aXJl L2ZpcmV3b3Jrcy9maXJld29ya3NfcHJvYy5jCmluZGV4IGYyOWQ0YWFmNTZhMS4uNWIzNzUzYjA1 MDA2IDEwMDY0NAotLS0gYS9zb3VuZC9maXJld2lyZS9maXJld29ya3MvZmlyZXdvcmtzX3Byb2Mu YworKysgYi9zb3VuZC9maXJld2lyZS9maXJld29ya3MvZmlyZXdvcmtzX3Byb2MuYwpAQCAtMTg4 LDggKzE4OCw4IEBAIHByb2NfcmVhZF9xdWV1ZXNfc3RhdGUoc3RydWN0IHNuZF9pbmZvX2VudHJ5 ICplbnRyeSwKIAllbHNlCiAJCWNvbnN1bWVkID0gKHVuc2lnbmVkIGludCkoZWZ3LT5wdXNoX3B0 ciAtIGVmdy0+cHVsbF9wdHIpOwogCi0Jc25kX2lwcmludGYoYnVmZmVyLCAiJWQgJWQvJWRcbiIs Ci0JCSAgICBlZnctPnJlc3BfcXVldWVzLCBjb25zdW1lZCwgc25kX2Vmd19yZXNwX2J1Zl9zaXpl KTsKKwlzbmRfaXByaW50ZihidWZmZXIsICIlZC8lZFxuIiwKKwkJICAgIGNvbnN1bWVkLCBzbmRf ZWZ3X3Jlc3BfYnVmX3NpemUpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc291bmQv ZmlyZXdpcmUvZmlyZXdvcmtzL2ZpcmV3b3Jrc190cmFuc2FjdGlvbi5jIGIvc291bmQvZmlyZXdp cmUvZmlyZXdvcmtzL2ZpcmV3b3Jrc190cmFuc2FjdGlvbi5jCmluZGV4IDJhODVlNDIwOWYwYi4u OGU5YWJiYjZiNjhjIDEwMDY0NAotLS0gYS9zb3VuZC9maXJld2lyZS9maXJld29ya3MvZmlyZXdv cmtzX3RyYW5zYWN0aW9uLmMKKysrIGIvc291bmQvZmlyZXdpcmUvZmlyZXdvcmtzL2ZpcmV3b3Jr c190cmFuc2FjdGlvbi5jCkBAIC0xMjEsMTEgKzEyMSwxMSBAQCBjb3B5X3Jlc3BfdG9fYnVmKHN0 cnVjdCBzbmRfZWZ3ICplZncsIHZvaWQgKmRhdGEsIHNpemVfdCBsZW5ndGgsIGludCAqcmNvZGUp CiAJc2l6ZV90IGNhcGFjaXR5LCB0aWxsX2VuZDsKIAlzdHJ1Y3Qgc25kX2Vmd190cmFuc2FjdGlv biAqdDsKIAotCXNwaW5fbG9ja19pcnEoJmVmdy0+bG9jayk7Ci0KIAl0ID0gKHN0cnVjdCBzbmRf ZWZ3X3RyYW5zYWN0aW9uICopZGF0YTsKIAlsZW5ndGggPSBtaW5fdChzaXplX3QsIGJlMzJfdG9f Y3B1KHQtPmxlbmd0aCkgKiBzaXplb2YodTMyKSwgbGVuZ3RoKTsKIAorCXNwaW5fbG9ja19pcnEo JmVmdy0+bG9jayk7CisKIAlpZiAoZWZ3LT5wdXNoX3B0ciA8IGVmdy0+cHVsbF9wdHIpCiAJCWNh cGFjaXR5ID0gKHVuc2lnbmVkIGludCkoZWZ3LT5wdWxsX3B0ciAtIGVmdy0+cHVzaF9wdHIpOwog CWVsc2UKQEAgLTE1NSw3ICsxNTUsNiBAQCBjb3B5X3Jlc3BfdG9fYnVmKHN0cnVjdCBzbmRfZWZ3 ICplZncsIHZvaWQgKmRhdGEsIHNpemVfdCBsZW5ndGgsIGludCAqcmNvZGUpCiAJfQogCiAJLyog Zm9yIGh3ZGVwICovCi0JZWZ3LT5yZXNwX3F1ZXVlcysrOwogCXdha2VfdXAoJmVmdy0+aHdkZXBf d2FpdCk7CiAKIAkqcmNvZGUgPSBSQ09ERV9DT01QTEVURTsKZGlmZiAtLWdpdCBhL3NvdW5kL3Bj aS9oZGEvaGRhX2NvZGVjLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9jb2RlYy5jCmluZGV4IDY4YmVh NjdjM2NhMy4uMjJiNzAzOGNmZjBkIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL2hkYV9jb2Rl Yy5jCisrKyBiL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMKQEAgLTU3OTMsMTMgKzU3OTMsMTUg QEAgdm9pZCAqc25kX2FycmF5X25ldyhzdHJ1Y3Qgc25kX2FycmF5ICphcnJheSkKIAkJcmV0dXJu IE5VTEw7CiAJaWYgKGFycmF5LT51c2VkID49IGFycmF5LT5hbGxvY2VkKSB7CiAJCWludCBudW0g PSBhcnJheS0+YWxsb2NlZCArIGFycmF5LT5hbGxvY19hbGlnbjsKKwkJaW50IG9sZHNpemUgPSBh cnJheS0+YWxsb2NlZCAqIGFycmF5LT5lbGVtX3NpemU7CiAJCWludCBzaXplID0gKG51bSArIDEp ICogYXJyYXktPmVsZW1fc2l6ZTsKIAkJdm9pZCAqbmxpc3Q7CiAJCWlmIChzbmRfQlVHX09OKG51 bSA+PSA0MDk2KSkKIAkJCXJldHVybiBOVUxMOwotCQlubGlzdCA9IGtyZWFsbG9jKGFycmF5LT5s aXN0LCBzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7CisJCW5saXN0ID0ga3JlYWxsb2Mo YXJyYXktPmxpc3QsIHNpemUsIEdGUF9LRVJORUwpOwogCQlpZiAoIW5saXN0KQogCQkJcmV0dXJu IE5VTEw7CisJCW1lbXNldChubGlzdCArIG9sZHNpemUsIDAsIHNpemUgLSBvbGRzaXplKTsKIAkJ YXJyYXktPmxpc3QgPSBubGlzdDsKIAkJYXJyYXktPmFsbG9jZWQgPSBudW07CiAJfQpkaWZmIC0t Z2l0IGEvc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYyBiL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVs LmMKaW5kZXggMmY1MjNiMDhmNTc2Li44ZmYxNWQ4MzRhY2UgMTAwNjQ0Ci0tLSBhL3NvdW5kL3Bj aS9oZGEvaGRhX2ludGVsLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYwpAQCAtOTUw LDggKzk1MCwxMCBAQCBzdGF0aWMgaW50IGF6eF9mcmVlKHN0cnVjdCBhenggKmNoaXApCiAJaWYg KHVzZV92Z2Ffc3dpdGNoZXJvbyhjaGlwKSkgewogCQlpZiAoY2hpcC0+ZGlzYWJsZWQgJiYgY2hp cC0+YnVzKQogCQkJc25kX2hkYV91bmxvY2tfZGV2aWNlcyhjaGlwLT5idXMpOwotCQlpZiAoY2hp cC0+dmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJlZCkKKwkJaWYgKGNoaXAtPnZnYV9zd2l0Y2hlcm9v X3JlZ2lzdGVyZWQpIHsKIAkJCXZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KGNoaXAt PnBjaSk7CisJCQl2Z2Ffc3dpdGNoZXJvb19maW5pX2RvbWFpbl9wbV9vcHMoY2hpcC0+Y2FyZC0+ ZGV2KTsKKwkJfQogCX0KIAogCWlmIChjaGlwLT5pbml0aWFsaXplZCkgewpkaWZmIC0tZ2l0IGEv c291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0 ZWsuYwppbmRleCA0ZGQxNTM4YzEyNTcuLjE4N2QzMzcyOWI1MCAxMDA2NDQKLS0tIGEvc291bmQv cGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKKysrIGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVr LmMKQEAgLTU4MzcsNiArNTgzNyw3IEBAIGVudW0gewogCUFMQzY2OF9GSVhVUF9ERUxMX1hQUzEz LAogCUFMQzY2Ml9GSVhVUF9BU1VTX054NTAsCiAJQUxDNjY4X0ZJWFVQX0FTVVNfTng1MSwKKwlB TEM2NjJfRklYVVBfQUNFUl9WRVJJVE9OLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBoZGFf Zml4dXAgYWxjNjYyX2ZpeHVwc1tdID0gewpAQCAtNjA3OCw2ICs2MDc5LDEzIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaGRhX2ZpeHVwIGFsYzY2Ml9maXh1cHNbXSA9IHsKIAkJLmNoYWluZWQgPSB0 cnVlLAogCQkuY2hhaW5faWQgPSBBTEM2NjJfRklYVVBfQkFTU19DSE1BUCwKIAl9LAorCVtBTEM2 NjJfRklYVVBfQUNFUl9WRVJJVE9OXSA9IHsKKwkJLnR5cGUgPSBIREFfRklYVVBfUElOUywKKwkJ LnYucGlucyA9IChjb25zdCBzdHJ1Y3QgaGRhX3BpbnRibFtdKSB7CisJCQl7IDB4MTUsIDB4NTAx NzAxMjAgfSwgLyogbm8gaW50ZXJuYWwgc3BlYWtlciAqLworCQkJeyB9CisJCX0KKwl9LAogfTsK IAogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfcGNpX3F1aXJrIGFsYzY2Ml9maXh1cF90YmxbXSA9 IHsKQEAgLTYxMTMsNiArNjEyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3BjaV9xdWly ayBhbGM2NjJfZml4dXBfdGJsW10gPSB7CiAJU05EX1BDSV9RVUlSSygweDE3YWEsIDB4MzhhZiwg Ikxlbm92byBJZGVhcGFkIFk1NTBQIiwgQUxDNjYyX0ZJWFVQX0lERUFQQUQpLAogCVNORF9QQ0lf UVVJUksoMHgxN2FhLCAweDNhMGQsICJMZW5vdm8gSWRlYXBhZCBZNTUwIiwgQUxDNjYyX0ZJWFVQ X0lERUFQQUQpLAogCVNORF9QQ0lfUVVJUksoMHgxOWRhLCAweGExMzAsICJab3RhYyBaNjgiLCBB TEM2NjJfRklYVVBfWk9UQUNfWjY4KSwKKwlTTkRfUENJX1FVSVJLKDB4MWIwYSwgMHgwMWI4LCAi QUNFUiBWZXJpdG9uIiwgQUxDNjYyX0ZJWFVQX0FDRVJfVkVSSVRPTiksCiAJU05EX1BDSV9RVUlS SygweDFiMzUsIDB4MjIwNiwgIkNaQyBQMTBUIiwgQUxDNjYyX0ZJWFVQX0NaQ19QMTBUKSwKIAog I2lmIDAKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9vbWFwL29tYXAtbWNwZG0uYyBiL3NvdW5kL3Nv Yy9vbWFwL29tYXAtbWNwZG0uYwppbmRleCBmMGUyZWJlYWIwMmIuLjMwMWFjZmU1YWFiNyAxMDA2 NDQKLS0tIGEvc291bmQvc29jL29tYXAvb21hcC1tY3BkbS5jCisrKyBiL3NvdW5kL3NvYy9vbWFw L29tYXAtbWNwZG0uYwpAQCAtMzkwLDggKzM5MCw4IEBAIHN0YXRpYyBpbnQgb21hcF9tY3BkbV9w cm9iZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKIAlwbV9ydW50aW1lX2dldF9zeW5jKG1jcGRt LT5kZXYpOwogCW9tYXBfbWNwZG1fd3JpdGUobWNwZG0sIE1DUERNX1JFR19DVFJMLCAweDAwKTsK IAotCXJldCA9IGRldm1fcmVxdWVzdF9pcnEobWNwZG0tPmRldiwgbWNwZG0tPmlycSwgb21hcF9t Y3BkbV9pcnFfaGFuZGxlciwKLQkJCQkwLCAiTWNQRE0iLCAodm9pZCAqKW1jcGRtKTsKKwlyZXQg PSByZXF1ZXN0X2lycShtY3BkbS0+aXJxLCBvbWFwX21jcGRtX2lycV9oYW5kbGVyLCAwLCAiTWNQ RE0iLAorCQkJICAodm9pZCAqKW1jcGRtKTsKIAogCXBtX3J1bnRpbWVfcHV0X3N5bmMobWNwZG0t PmRldik7CiAKQEAgLTQxNiw2ICs0MTYsNyBAQCBzdGF0aWMgaW50IG9tYXBfbWNwZG1fcmVtb3Zl KHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQogewogCXN0cnVjdCBvbWFwX21jcGRtICptY3BkbSA9 IHNuZF9zb2NfZGFpX2dldF9kcnZkYXRhKGRhaSk7CiAKKwlmcmVlX2lycShtY3BkbS0+aXJxLCAo dm9pZCAqKW1jcGRtKTsKIAlwbV9ydW50aW1lX2Rpc2FibGUobWNwZG0tPmRldik7CiAKIAlyZXR1 cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3ZtL3NsYWJpbmZvLmMgYi90b29scy92bS9zbGFiaW5m by5jCmluZGV4IDgwOGQ1YTlkNWRjZi4uYmNjNjEyNTY1N2U1IDEwMDY0NAotLS0gYS90b29scy92 bS9zbGFiaW5mby5jCisrKyBiL3Rvb2xzL3ZtL3NsYWJpbmZvLmMKQEAgLTQ5MywxMCArNDkzLDEx IEBAIHN0YXRpYyB2b2lkIHNsYWJfc3RhdHMoc3RydWN0IHNsYWJpbmZvICpzKQogCQkJcy0+YWxs b2Nfbm9kZV9taXNtYXRjaCwgKHMtPmFsbG9jX25vZGVfbWlzbWF0Y2ggKiAxMDApIC8gdG90YWwp OwogCX0KIAotCWlmIChzLT5jbXB4Y2hnX2RvdWJsZV9mYWlsIHx8IHMtPmNtcHhjaGdfZG91Ymxl X2NwdV9mYWlsKQorCWlmIChzLT5jbXB4Y2hnX2RvdWJsZV9mYWlsIHx8IHMtPmNtcHhjaGdfZG91 YmxlX2NwdV9mYWlsKSB7CiAJCXByaW50ZigiXG5DbXB4Y2hnX2RvdWJsZSBMb29waW5nXG4tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCQlwcmludGYoIkxvY2tlZCBDbXB4Y2hnIERvdWJs ZSByZWRvcyAgICVsdVxuVW5sb2NrZWQgQ21weGNoZyBEb3VibGUgcmVkb3MgJWx1XG4iLAogCQkJ cy0+Y21weGNoZ19kb3VibGVfZmFpbCwgcy0+Y21weGNoZ19kb3VibGVfY3B1X2ZhaWwpOworCX0K IH0KIAogc3RhdGljIHZvaWQgcmVwb3J0KHN0cnVjdCBzbGFiaW5mbyAqcykKZGlmZiAtLWdpdCBh L3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGE2MzEyN2Fj YzY3ZC4uNjEwM2Y5MjM4Nzc0IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCisrKyBi L3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTEzNyw2ICsxMzcsNyBAQCBpbnQgdmNwdV9sb2FkKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlwdXRfY3B1KCk7CiAJcmV0dXJuIDA7CiB9CitFWFBPUlRf U1lNQk9MX0dQTCh2Y3B1X2xvYWQpOwogCiB2b2lkIHZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAq dmNwdSkKIHsKQEAgLTE0Niw2ICsxNDcsNyBAQCB2b2lkIHZjcHVfcHV0KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkKIAlwcmVlbXB0X2VuYWJsZSgpOwogCW11dGV4X3VubG9jaygmdmNwdS0+bXV0ZXgp OwogfQorRVhQT1JUX1NZTUJPTF9HUEwodmNwdV9wdXQpOwogCiBzdGF0aWMgdm9pZCBhY2tfZmx1 c2godm9pZCAqX2NvbXBsZXRlZCkKIHsK --=-1hzrkK4Muj1bqrycccKR-- --=-hbgDXxCiQCIQyAGDPFUG Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIcBAABCgAGBQJYKTg2AAoJEOe/yOyVhhEJb7YP/jnkl1ukcWqDsN6cryFdvjN4 d4+1WN4PuexmXLsZcqlTPZex3W+w4pueGEUhGgoajqHKtLIbRW1i75C+TtBi0Dd6 JVsDqavw6BebpDWQ7atlim6BtDVjQLtPHjMOOQZpuPJVERXgrC8GF4+lwa2pk78e q6AMzd9eCCMLBKUhnho4fYdND6f3lVk2xJpjIm4WoLtomivb0+2aIiw7yiAWdW52 WKzoyvstFTQcfXyo1VCRYasEVBjE5zi2AWrNb2l4lmcKRlWzGPz6mONe7bz1lO5U eMdqpnVDcoXp3aRanys4PwauhTq+S74mJVSRMyo41GDNBvfkdE/b/G6bo5/04Z0C QOGmugSi8qsnbP47DPbmELMP+nHkWB8xLoFPCxcvbQKL1UoJzCRdh2NRNXGo+eTv ASxYq7fc8xZJbe7xpVgRyxTDr18GcTen582JuI4rpjEeujzMvtuhAY+c00EbpMv9 7ki2FSzmRK9HSime9F8oEzva63ylXjHakm9q5X7Zg+ZnHZQhm3U7VQG1Tce/QCG2 lKug+nwGvAXAAlwwjCY0+9dKVnXD75nb30Jemrk8Q9JB3uSXDmmz55JIQ+dJIoQW 5CxWkyFg+np83dVACnGzSA9tEXYghj5W+zyzBR4Hh6h7K1lPgdP0kcuu2mGeWkwo 5XQX1ouLx+pnU+6LtpeN =uv7T -----END PGP SIGNATURE----- --=-hbgDXxCiQCIQyAGDPFUG--