From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v5 01/17] xen: Use typesafe gfn/mfn in guest_physmap_* helpers Date: Tue, 28 Jun 2016 17:17:07 +0100 Message-ID: <1467130643-23868-2-git-send-email-julien.grall@arm.com> References: <1467130643-23868-1-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467130643-23868-1-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWxzbyByZW5hbWUgc29tZSB2YXJpYWJsZXMgdG8gZ2ZuIG9yIG1mbiB3aGVuIGl0IGRvZXMgbm90 IHJlcXVpcmUgbXVjaApyZXdvcmsuCgpGaW5hbGx5IHJlcGxhY2UgJWh1IHdpdGggJWQgd2hlbiBw cmludGluZyB0aGUgZG9tYWluIGlkIGluCmd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IChhcmNoL3g4 Ni9tbS9wMm0uYykuCgpTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBh cm0uY29tPgpBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBY2tlZC1i eTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgoKLS0tCkNjOiBT dGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KQ2M6 IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNr c29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNj OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgoKICAgIENoYW5nZXMgaW4gdjQ6CiAgICAg ICAgLSBBZGQgU3RlZmFubydzIEFja2VkLWJ5CgogICAgQ2hhbmdlcyBpbiB2MzoKICAgICAgICAt IFVzZSAlZCB0byBwcmludCB0aGUgZG9tYWluIGlkIHJhdGhlciB0aGFuICVodQogICAgICAgIC0g QWRkIEphbidzIEFja2VkLWJ5IGZvciBub24tQVJNIGJpdHMKCiAgICBDaGFuZ2VzIGluIHYyOgog ICAgICAgIC0gRG9uJ3QgdXNlIGEgd3JhcHBlciBmb3IgeDg2LiBJbnN0ZWFkIHVzZSBtZm5fKiB0 byBtYWtlCiAgICAgICAgdGhlIGNoYW5nZSBzaW1wbGVyLgotLS0KIHhlbi9hcmNoL2FybS9kb21h aW5fYnVpbGQuYyAgICAgICAgfCAgMiArLQogeGVuL2FyY2gvYXJtL21tLmMgICAgICAgICAgICAg ICAgICB8IDEwICsrLS0tCiB4ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgICAgICAgICAgIHwgMjAg KysrKystLS0tLQogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICB8ICA1ICsrLQog eGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jICAgICAgICB8ICA2ICstLQogeGVuL2FyY2gveDg2 L2h2bS9pb3JlcS5jICAgICAgICAgICB8ICA4ICsrLS0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAg ICAgICAgICAgICAgfCAxMiArKystLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAg ICAgfCA3OCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2NvbW1v bi9ncmFudF90YWJsZS5jICAgICAgICAgICB8ICA3ICsrLS0KIHhlbi9jb21tb24vbWVtb3J5LmMg ICAgICAgICAgICAgICAgfCAzMiArKysrKysrKy0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9hcm0vc21tdS5jIHwgIDQgKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggICAgICAg ICAgfCAxMiArKystLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgICAgfCAxMSAr KystLS0KIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAgICAgICAgICAgICAgfCAgMiArLQogMTQgZmls ZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVp bGQuYwppbmRleCA0MTBiYjRmLi45MDM1NDg2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9t YWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0xMTcsNyAr MTE3LDcgQEAgc3RhdGljIGJvb2xfdCBpbnNlcnRfMTFfYmFuayhzdHJ1Y3QgZG9tYWluICpkLAog ICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCi0gICAgcmVzID0gZ3Vlc3RfcGh5c21hcF9hZGRf cGFnZShkLCBzcGZuLCBzcGZuLCBvcmRlcik7CisgICAgcmVzID0gZ3Vlc3RfcGh5c21hcF9hZGRf cGFnZShkLCBfZ2ZuKHNwZm4pLCBfbWZuKHNwZm4pLCBvcmRlcik7CiAgICAgaWYgKCByZXMgKQog ICAgICAgICBwYW5pYygiRmFpbGVkIG1hcCBwYWdlcyB0byBET00wOiAlZCIsIHJlcyk7CiAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbS5jIGIveGVuL2FyY2gvYXJtL21tLmMKaW5kZXggMmVj MjExYi4uNWFiOWI3NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL21tLmMKKysrIGIveGVuL2Fy Y2gvYXJtL21tLmMKQEAgLTExNTMsNyArMTE1Myw3IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNt YXBfb25lKAogICAgIH0KIAogICAgIC8qIE1hcCBhdCBuZXcgbG9jYXRpb24uICovCi0gICAgcmMg PSBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShkLCBncGZuLCBtZm4sIDAsIHQpOworICAgIHJjID0g Z3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoZCwgX2dmbihncGZuKSwgX21mbihtZm4pLCAwLCB0KTsK IAogICAgIC8qIElmIHdlIGZhaWwgdG8gYWRkIHRoZSBtYXBwaW5nLCB3ZSBuZWVkIHRvIGRyb3Ag dGhlIHJlZmVyZW5jZSB3ZQogICAgICAqIHRvb2sgZWFybGllciBvbiBmb3JlaWduIHBhZ2VzICov CkBAIC0xMjgyLDggKzEyODIsOCBAQCBpbnQgY3JlYXRlX2dyYW50X2hvc3RfbWFwcGluZyh1bnNp Z25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZnJhbWUsCiAgICAgaWYgKCBmbGFncyAmIEdO VE1BUF9yZWFkb25seSApCiAgICAgICAgIHQgPSBwMm1fZ3JhbnRfbWFwX3JvOwogCi0gICAgcmMg PSBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShjdXJyZW50LT5kb21haW4sIGFkZHIgPj4gUEFHRV9T SElGVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLCAwLCB0KTsKKyAg ICByYyA9IGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGN1cnJlbnQtPmRvbWFpbiwgX2dmbihhZGRy ID4+IFBBR0VfU0hJRlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihm cmFtZSksIDAsIHQpOwogCiAgICAgaWYgKCByYyApCiAgICAgICAgIHJldHVybiBHTlRTVF9nZW5l cmFsX2Vycm9yOwpAQCAtMTI5NCwxMyArMTI5NCwxMyBAQCBpbnQgY3JlYXRlX2dyYW50X2hvc3Rf bWFwcGluZyh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZnJhbWUsCiBpbnQgcmVw bGFjZV9ncmFudF9ob3N0X21hcHBpbmcodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25n IG1mbiwKICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXdfYWRkciwgdW5zaWduZWQgaW50IGZsYWdz KQogewotICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0gKHVuc2lnbmVkIGxvbmcpKGFkZHIgPj4gUEFH RV9TSElGVCk7CisgICAgZ2ZuX3QgZ2ZuID0gX2dmbihhZGRyID4+IFBBR0VfU0hJRlQpOwogICAg IHN0cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47CiAKICAgICBpZiAoIG5ld19hZGRy ICE9IDAgfHwgKGZsYWdzICYgR05UTUFQX2NvbnRhaW5zX3B0ZSkgKQogICAgICAgICByZXR1cm4g R05UU1RfZ2VuZXJhbF9lcnJvcjsKIAotICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwg Z2ZuLCBtZm4sIDApOworICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ2ZuLCBfbWZu KG1mbiksIDApOwogCiAgICAgcmV0dXJuIEdOVFNUX29rYXk7CiB9CmRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vcDJtLmMgYi94ZW4vYXJjaC9hcm0vcDJtLmMKaW5kZXggNWFmYWUxZC4uMDM5NWE0 MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCisrKyBiL3hlbi9hcmNoL2FybS9wMm0u YwpAQCAtMTI5MiwyNiArMTI5MiwyNiBAQCBpbnQgbWFwX2Rldl9tbWlvX3JlZ2lvbihzdHJ1Y3Qg ZG9tYWluICpkLAogfQogCiBpbnQgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFp biAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdwZm4sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1mbl90IG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBh Z2Vfb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0KQogewog ICAgIHJldHVybiBhcHBseV9wMm1fY2hhbmdlcyhkLCBJTlNFUlQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBmbl90b19wYWRkcihncGZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGZuX3RvX3BhZGRyKGdwZm4gKyAoMSA8PCBwYWdlX29yZGVyKSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihtZm4pLCBNQVRUUl9NRU0sIDAsIHQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihnZm5feChnZm4pKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKGdmbl94KGdmbikgKyAoMSA8 PCBwYWdlX29yZGVyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRk cihtZm5feChtZm4pKSwgTUFUVFJfTUVNLCAwLCB0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7CiB9CiAKIHZvaWQgZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZ3BmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1mbl90IG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCiB7CiAgICAgYXBwbHlf cDJtX2NoYW5nZXMoZCwgUkVNT1ZFLAotICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRk cihncGZuKSwKLSAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoZ3BmbiArICgxPDxw YWdlX29yZGVyKSksCi0gICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKG1mbiksIE1B VFRSX01FTSwgMCwgcDJtX2ludmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3Bh ZGRyKGdmbl94KGdmbikpLAorICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihnZm5f eChnZm4pICsgKDE8PHBhZ2Vfb3JkZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9f cGFkZHIobWZuX3gobWZuKSksIE1BVFRSX01FTSwgMCwgcDJtX2ludmFsaWQsCiAgICAgICAgICAg ICAgICAgICAgICAgZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3MpOwogfQogCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggM2Jh N2VkMS4uYmI1OTI0NyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hl bi9hcmNoL3g4Ni9kb21haW4uYwpAQCAtODAyLDkgKzgwMiwxMCBAQCBpbnQgYXJjaF9kb21haW5f c29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICByZXQgPSAtRU5PTUVNOwogICAg ICAgICBnb3RvIGV4aXRfcHV0X2dmbjsKICAgICB9Ci0gICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVf cGFnZShkLCBnZm4sIG1mbiwgUEFHRV9PUkRFUl80Syk7CisgICAgZ3Vlc3RfcGh5c21hcF9yZW1v dmVfcGFnZShkLCBfZ2ZuKGdmbiksIF9tZm4obWZuKSwgUEFHRV9PUkRFUl80Syk7CiAKLSAgICBy ZXQgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIGdmbiwgcGFnZV90b19tZm4obmV3X3BhZ2Up LCBQQUdFX09SREVSXzRLKTsKKyAgICByZXQgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9n Zm4oZ2ZuKSwgX21mbihwYWdlX3RvX21mbihuZXdfcGFnZSkpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80Syk7CiAgICAgaWYgKCByZXQgKQogICAgIHsKICAg ICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiRmFpbGVkIHRvIGFkZCBhIHBhZ2UgdG8gcmVwbGFj ZSIKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL3g4 Ni9kb21haW5fYnVpbGQuYwppbmRleCBiMjljMzc3Li4wYTAyZDY1IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5j CkBAIC00MjcsNyArNDI3LDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHB2aF9hZGRfbWVtX21hcHBp bmcoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgICAgIGlmICggIWlv bWVtX2FjY2Vzc19wZXJtaXR0ZWQoZCwgbWZuICsgaSwgbWZuICsgaSkgKQogICAgICAgICB7CiAg ICAgICAgICAgICBvbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm4gKyBpLCAmdCk7 Ci0gICAgICAgICAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIGdmbiArIGksIG1mbl94 KG9tZm4pLCBQQUdFX09SREVSXzRLKTsKKyAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3Zl X3BhZ2UoZCwgX2dmbihnZm4gKyBpKSwgb21mbiwgUEFHRV9PUkRFUl80Syk7CiAgICAgICAgICAg ICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC01MzAsNyArNTMwLDcgQEAgc3RhdGljIF9faW5p dCB2b2lkIHB2aF9tYXBfYWxsX2lvbWVtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg bnJfcGFnZXMpCiAgICAgICAgICAgICBpZiAoIGdldF9ncGZuX2Zyb21fbWZuKG1mbikgIT0gSU5W QUxJRF9NMlBfRU5UUlkgKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg ICByYyA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgc3RhcnRfcGZuLCBtZm4sIDApOworICAg ICAgICAgICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9nZm4oc3RhcnRfcGZuKSwg X21mbihtZm4pLCAwKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gMCApCiAgICAgICAgICAgICAg ICAgcGFuaWMoIlVuYWJsZSB0byBhZGQgZ3BmbiAlI2x4IG1mbiAlI2x4IHRvIERvbTAgcGh5c21h cDogJWQiLAogICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3BmbiwgbWZuLCByYyk7CkBAIC02 MDUsNyArNjA1LDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIGRvbTBfdXBkYXRlX3BoeXNtYXAoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiB7CiAgICAgaWYgKCBpc19wdmhfZG9t YWluKGQpICkKICAgICB7Ci0gICAgICAgIGludCByYyA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2Uo ZCwgcGZuLCBtZm4sIDApOworICAgICAgICBpbnQgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdl KGQsIF9nZm4ocGZuKSwgX21mbihtZm4pLCAwKTsKICAgICAgICAgQlVHX09OKHJjKTsKICAgICAg ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBi L3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCAzMzNjZTE0Li43MTQ4YWM0IDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3Jl cS5jCkBAIC0yNjcsOCArMjY3LDggQEAgYm9vbF90IGlzX2lvcmVxX3NlcnZlcl9wYWdlKHN0cnVj dCBkb21haW4gKmQsIGNvbnN0IHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UpCiBzdGF0aWMgdm9pZCBo dm1fcmVtb3ZlX2lvcmVxX2dtZm4oCiAgICAgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGh2bV9p b3JlcV9wYWdlICppb3JwKQogewotICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgaW9y cC0+Z21mbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlvcnAt PnBhZ2UpLCAwKTsKKyAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oaW9ycC0+ Z21mbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKHBhZ2VfdG9fbWZuKGlv cnAtPnBhZ2UpKSwgMCk7CiAgICAgY2xlYXJfcGFnZShpb3JwLT52YSk7CiB9CiAKQEAgLTI3OSw4 ICsyNzksOCBAQCBzdGF0aWMgaW50IGh2bV9hZGRfaW9yZXFfZ21mbigKIAogICAgIGNsZWFyX3Bh Z2UoaW9ycC0+dmEpOwogCi0gICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIGlvcnAt PmdtZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlvcnAt PnBhZ2UpLCAwKTsKKyAgICByYyA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihpb3Jw LT5nbWZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihwYWdlX3RvX21m bihpb3JwLT5wYWdlKSksIDApOwogICAgIGlmICggcmMgPT0gMCApCiAgICAgICAgIHBhZ2luZ19t YXJrX2RpcnR5KGQsIHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpKTsKIApkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBhZTdjOGFiLi43ZmJjOTRl IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpA QCAtNDIxMSw3ICs0MjExLDggQEAgc3RhdGljIGludCBjcmVhdGVfZ3JhbnRfcDJtX21hcHBpbmco dWludDY0X3QgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwKICAgICBlbHNlCiAgICAgICAgIHAy bXQgPSBwMm1fZ3JhbnRfbWFwX3J3OwogICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnko Y3VycmVudC0+ZG9tYWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciA+ PiBQQUdFX1NISUZULCBmcmFtZSwgUEFHRV9PUkRFUl80SywgcDJtdCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfZ2ZuKGFkZHIgPj4gUEFHRV9TSElGVCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfbWZuKGZyYW1lKSwgUEFHRV9PUkRFUl80SywgcDJtdCk7 CiAgICAgaWYgKCByYyApCiAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAg IGVsc2UKQEAgLTQyNjgsNyArNDI2OSw3IEBAIHN0YXRpYyBpbnQgcmVwbGFjZV9ncmFudF9wMm1f bWFwcGluZygKICAgICAgICAgICAgICAgICB0eXBlLCBtZm5feChvbGRfbWZuKSwgZnJhbWUpOwog ICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICB9Ci0gICAgZ3Vlc3RfcGh5 c21hcF9yZW1vdmVfcGFnZShkLCBnZm4sIGZyYW1lLCBQQUdFX09SREVSXzRLKTsKKyAgICBndWVz dF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgX21mbihmcmFtZSksIFBBR0VfT1JE RVJfNEspOwogCiAgICAgcHV0X2dmbihkLCBnZm4pOwogICAgIHJldHVybiBHTlRTVF9va2F5OwpA QCAtNDg1Myw3ICs0ODU0LDggQEAgaW50IHhlbm1lbV9hZGRfdG9fcGh5c21hcF9vbmUoCiAgICAg ewogICAgICAgICBpZiAoIGlzX3hlbl9oZWFwX21mbihwcmV2X21mbikgKQogICAgICAgICAgICAg LyogWGVuIGhlYXAgZnJhbWVzIGFyZSBzaW1wbHkgdW5ob29rZWQgZnJvbSB0aGlzIHBoeXMgc2xv dC4gKi8KLSAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ3BmbiwgcHJl dl9tZm4sIFBBR0VfT1JERVJfNEspOworICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVf cGFnZShkLCBfZ2ZuKGdwZm4pLCBfbWZuKHByZXZfbWZuKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80Syk7CiAgICAgICAgIGVsc2UKICAgICAgICAg ICAgIC8qIE5vcm1hbCBkb21haW4gbWVtb3J5IGlzIGZyZWVkLCB0byBhdm9pZCBsZWFraW5nIG1l bW9yeS4gKi8KICAgICAgICAgICAgIGd1ZXN0X3JlbW92ZV9wYWdlKGQsIGdwZm4pOwpAQCAtNDg2 NywxMCArNDg2OSwxMCBAQCBpbnQgeGVubWVtX2FkZF90b19waHlzbWFwX29uZSgKICAgICBpZiAo IHNwYWNlID09IFhFTk1BUFNQQUNFX2dtZm4gfHwgc3BhY2UgPT0gWEVOTUFQU1BBQ0VfZ21mbl9y YW5nZSApCiAgICAgICAgIEFTU0VSVCggb2xkX2dwZm4gPT0gZ2ZuICk7CiAgICAgaWYgKCBvbGRf Z3BmbiAhPSBJTlZBTElEX00yUF9FTlRSWSApCi0gICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3Zl X3BhZ2UoZCwgb2xkX2dwZm4sIG1mbiwgUEFHRV9PUkRFUl80Syk7CisgICAgICAgIGd1ZXN0X3Bo eXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihvbGRfZ3BmbiksIF9tZm4obWZuKSwgUEFHRV9PUkRF Ul80Syk7CiAKICAgICAvKiBNYXAgYXQgbmV3IGxvY2F0aW9uLiAqLwotICAgIHJjID0gZ3Vlc3Rf cGh5c21hcF9hZGRfcGFnZShkLCBncGZuLCBtZm4sIFBBR0VfT1JERVJfNEspOworICAgIHJjID0g Z3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdwZm4pLCBfbWZuKG1mbiksIFBBR0VfT1JE RVJfNEspOwogCiAgICAgLyogSW4gdGhlIFhFTk1BUFNQQUNFX2dtZm4sIHdlIHRvb2sgYSByZWYg b2YgdGhlIGdmbiBhdCB0aGUgdG9wICovCiAgICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9n bWZuIHx8IHNwYWNlID09IFhFTk1BUFNQQUNFX2dtZm5fcmFuZ2UgKQpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IDg5NDYyYjIu LjE2NzMzYTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94ZW4vYXJj aC94ODYvbW0vcDJtLmMKQEAgLTY3NSwyMSArNjc1LDIwIEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4s CiB9CiAKIGludAotZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBtZm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQorZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg IG1mbl90IG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCiB7CiAgICAgc3RydWN0IHAybV9k b21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKICAgICBpbnQgcmM7CiAgICAgZ2ZuX2xv Y2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOwotICAgIHJjID0gcDJtX3JlbW92ZV9wYWdlKHAybSwg Z2ZuLCBtZm4sIHBhZ2Vfb3JkZXIpOworICAgIHJjID0gcDJtX3JlbW92ZV9wYWdlKHAybSwgZ2Zu X3goZ2ZuKSwgbWZuX3gobWZuKSwgcGFnZV9vcmRlcik7CiAgICAgZ2ZuX3VubG9jayhwMm0sIGdm biwgcGFnZV9vcmRlcik7CiAgICAgcmV0dXJuIHJjOwogfQogCiBpbnQKLWd1ZXN0X3BoeXNtYXBf YWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAotICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVy LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCkKK2d1ZXN0X3BoeXNtYXBf YWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgbWZuLAorICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIsIHAybV90eXBlX3QgdCkK IHsKICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwogICAg IHVuc2lnbmVkIGxvbmcgaSwgb2dmbjsKQEAgLTcwNSwxMyArNzA0LDE0IEBAIGd1ZXN0X3BoeXNt YXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgICAg ICB7CiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxIDw8IHBhZ2Vfb3JkZXIpOyBpKysg KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJjID0gaW9tbXVfbWFwX3BhZ2UoCi0g ICAgICAgICAgICAgICAgICAgIGQsIG1mbiArIGksIG1mbiArIGksIElPTU1VRl9yZWFkYWJsZXxJ T01NVUZfd3JpdGFibGUpOworICAgICAgICAgICAgICAgIHJjID0gaW9tbXVfbWFwX3BhZ2UoZCwg bWZuX3gobWZuX2FkZChtZm4sIGkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1mbl94KG1mbl9hZGQobWZuLCBpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxlKTsKICAgICAgICAgICAgICAg ICBpZiAoIHJjICE9IDAgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg d2hpbGUgKCBpLS0gPiAwICkKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHN0YXRlbWVu dCB0byBzYXRpc2Z5IF9fbXVzdF9jaGVjay4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm ICggaW9tbXVfdW5tYXBfcGFnZShkLCBtZm4gKyBpKSApCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoIGlvbW11X3VubWFwX3BhZ2UoZCwgbWZuX3gobWZuX2FkZChtZm4sIGkpKSkgKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgICAg IHJldHVybiByYzsKQEAgLTcyNywxOCArNzI3LDIwIEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5 KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogCiAgICAgcDJtX2xvY2socDJt KTsKIAotICAgIFAyTV9ERUJVRygiYWRkaW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm4sIG1m bik7CisgICAgUDJNX0RFQlVHKCJhZGRpbmcgZ2ZuPSUjbHggbWZuPSUjbHhcbiIsIGdmbl94KGdm biksIG1mbl94KG1mbikpOwogCiAgICAgLyogRmlyc3QsIHJlbW92ZSBtLT5wIG1hcHBpbmdzIGZv ciBleGlzdGluZyBwLT5tIG1hcHBpbmdzICovCiAgICAgZm9yICggaSA9IDA7IGkgPCAoMVVMIDw8 IHBhZ2Vfb3JkZXIpOyBpKysgKQogICAgIHsKLSAgICAgICAgb21mbiA9IHAybS0+Z2V0X2VudHJ5 KHAybSwgZ2ZuICsgaSwgJm90LCAmYSwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgIG9tZm4gPSBw Mm0tPmdldF9lbnRyeShwMm0sIGdmbl94KGdmbl9hZGQoZ2ZuLCBpKSksICZvdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZhLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCBw Mm1faXNfc2hhcmVkKG90KSApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIERvIGFuIHVuc2hh cmUgdG8gY2xlYW5seSB0YWtlIGNhcmUgb2YgYWxsIGNvcm5lciAKICAgICAgICAgICAgICAqIGNh c2VzLiAqLwogICAgICAgICAgICAgaW50IHJjOwotICAgICAgICAgICAgcmMgPSBtZW1fc2hhcmlu Z191bnNoYXJlX3BhZ2UocDJtLT5kb21haW4sIGdmbiArIGksIDApOworICAgICAgICAgICAgcmMg PSBtZW1fc2hhcmluZ191bnNoYXJlX3BhZ2UocDJtLT5kb21haW4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpLCAwKTsKICAg ICAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHAybV91 bmxvY2socDJtKTsKQEAgLTc1MywxMCArNzU1LDEzIEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5 KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgICAgICAgICAgICAgICAq CiAgICAgICAgICAgICAgICAgICogRm9yZWlnbiBkb21haW5zIGFyZSBva2F5IHRvIHBsYWNlIGFu IGV2ZW50IGFzIHRoZXkgCiAgICAgICAgICAgICAgICAgICogd29uJ3QgZ28gdG8gc2xlZXAuICov Ci0gICAgICAgICAgICAgICAgKHZvaWQpbWVtX3NoYXJpbmdfbm90aWZ5X2Vub21lbShwMm0tPmRv bWFpbiwgZ2ZuICsgaSwgMCk7CisgICAgICAgICAgICAgICAgKHZvaWQpbWVtX3NoYXJpbmdfbm90 aWZ5X2Vub21lbShwMm0tPmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdmbl94KGdmbl9hZGQoZ2ZuLCBpKSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICAgICAgICAgICAgICAgICByZXR1 cm4gcmM7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvbWZuID0gcDJtLT5nZXRfZW50cnko cDJtLCBnZm4gKyBpLCAmb3QsICZhLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgIG9tZm4g PSBwMm0tPmdldF9lbnRyeShwMm0sIGdmbl94KGdmbl9hZGQoZ2ZuLCBpKSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJm90LCAmYSwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAg ICAgICBBU1NFUlQoIXAybV9pc19zaGFyZWQob3QpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo IHAybV9pc19ncmFudChvdCkgfHwgcDJtX2lzX2ZvcmVpZ24ob3QpICkKQEAgLTc4NywzOSArNzky LDM5IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLAogICAgIC8qIFRoZW4sIGxvb2sgZm9yIG0tPnAgbWFwcGluZ3MgZm9yIHRoaXMg cmFuZ2UgYW5kIGRlYWwgd2l0aCB0aGVtICovCiAgICAgZm9yICggaSA9IDA7IGkgPCAoMVVMIDw8 IHBhZ2Vfb3JkZXIpOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCBwYWdlX2dldF9vd25lciht Zm5fdG9fcGFnZShfbWZuKG1mbiArIGkpKSkgPT0gZG9tX2NvdyApCisgICAgICAgIGlmICggcGFn ZV9nZXRfb3duZXIobWZuX3RvX3BhZ2UobWZuX2FkZChtZm4sIGkpKSkgPT0gZG9tX2NvdyApCiAg ICAgICAgIHsKICAgICAgICAgICAgIC8qIFRoaXMgaXMgbm8gd2F5IHRvIGFkZCBhIHNoYXJlZCBw YWdlIHRvIHlvdXIgcGh5c21hcCEgKi8KLSAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIs ICJBZGRpbmcgc2hhcmVkIG1mbiAlbHggZGlyZWN0bHkgdG8gZG9tICVodSAiCi0gICAgICAgICAg ICAgICAgICAgICAgICAicGh5c21hcCBub3QgYWxsb3dlZC5cbiIsIG1mbitpLCBkLT5kb21haW5f aWQpOworICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgIkFkZGluZyBzaGFyZWQgbWZu ICVseCBkaXJlY3RseSB0byBkb20lZCBwaHlzbWFwIG5vdCBhbGxvd2VkLlxuIiwKKyAgICAgICAg ICAgICAgICAgICAgIG1mbl94KG1mbl9hZGQobWZuLCBpKSksIGQtPmRvbWFpbl9pZCk7CiAgICAg ICAgICAgICBwMm1fdW5sb2NrKHAybSk7CiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAg ICAgICAgfQotICAgICAgICBpZiAoIHBhZ2VfZ2V0X293bmVyKG1mbl90b19wYWdlKF9tZm4obWZu ICsgaSkpKSAhPSBkICkKKyAgICAgICAgaWYgKCBwYWdlX2dldF9vd25lcihtZm5fdG9fcGFnZSht Zm5fYWRkKG1mbiwgaSkpKSAhPSBkICkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBv Z2ZuID0gbWZuX3RvX2dmbihkLCBfbWZuKG1mbitpKSk7Ci0gICAgICAgIGlmICggKG9nZm4gIT0g SU5WQUxJRF9NMlBfRU5UUlkpICYmIChvZ2ZuICE9IGdmbiArIGkpICkKKyAgICAgICAgb2dmbiA9 IG1mbl90b19nZm4oZCwgbWZuX2FkZChtZm4sIGkpKTsKKyAgICAgICAgaWYgKCAob2dmbiAhPSBJ TlZBTElEX00yUF9FTlRSWSkgJiYgKG9nZm4gIT0gZ2ZuX3goZ2ZuX2FkZChnZm4sIGkpKSkgKQog ICAgICAgICB7CiAgICAgICAgICAgICAvKiBUaGlzIG1hY2hpbmUgZnJhbWUgaXMgYWxyZWFkeSBt YXBwZWQgYXQgYW5vdGhlciBwaHlzaWNhbAogICAgICAgICAgICAgICogYWRkcmVzcyAqLwogICAg ICAgICAgICAgUDJNX0RFQlVHKCJhbGlhc2VkISBtZm49JSNseCwgb2xkIGdmbj0lI2x4LCBuZXcg Z2ZuPSUjbHhcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgbWZuICsgaSwgb2dmbiwgZ2ZuICsg aSk7CisgICAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuX2FkZChtZm4sIGkpKSwgb2dmbiwg Z2ZuX3goZ2ZuX2FkZChnZm4sIGkpKSk7CiAgICAgICAgICAgICBvbWZuID0gcDJtLT5nZXRfZW50 cnkocDJtLCBvZ2ZuLCAmb3QsICZhLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgIGlmICgg cDJtX2lzX3JhbShvdCkgJiYgIXAybV9pc19wYWdlZChvdCkgKQogICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgIEFTU0VSVChtZm5fdmFsaWQob21mbikpOwogICAgICAgICAgICAgICAgIFAy TV9ERUJVRygib2xkIGdmbj0lI2x4IC0+IG1mbiAlI2x4XG4iLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBvZ2ZuICwgbWZuX3gob21mbikpOwotICAgICAgICAgICAgICAgIGlmICggbWZuX3go b21mbikgPT0gKG1mbiArIGkpICkKLSAgICAgICAgICAgICAgICAgICAgcDJtX3JlbW92ZV9wYWdl KHAybSwgb2dmbiwgbWZuICsgaSwgMCk7CisgICAgICAgICAgICAgICAgaWYgKCBtZm5fZXEob21m biwgbWZuX2FkZChtZm4sIGkpKSApCisgICAgICAgICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFn ZShwMm0sIG9nZm4sIG1mbl94KG1mbl9hZGQobWZuLCBpKSksIDApOwogICAgICAgICAgICAgfQog ICAgICAgICB9CiAgICAgfQogCiAgICAgLyogTm93LCBhY3R1YWxseSBkbyB0aGUgdHdvLXdheSBt YXBwaW5nICovCi0gICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApIAorICAgIGlmICggbWZu X3ZhbGlkKG1mbikgKQogICAgIHsKLSAgICAgICAgcmMgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2Zu LCBfbWZuKG1mbiksIHBhZ2Vfb3JkZXIsIHQsCisgICAgICAgIHJjID0gcDJtX3NldF9lbnRyeShw Mm0sIGdmbl94KGdmbiksIG1mbiwgcGFnZV9vcmRlciwgdCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogICAgICAgICBpZiAoIHJjICkKICAgICAgICAg ICAgIGdvdG8gb3V0OyAvKiBGYWlsZWQgdG8gdXBkYXRlIHAybSwgYmFpbCB3aXRob3V0IHVwZGF0 aW5nIG0ycC4gKi8KQEAgLTgyNywxNCArODMyLDE1IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5 KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgICAgICBpZiAoICFwMm1f aXNfZ3JhbnQodCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgx VUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9t Zm4obWZuK2ksIGdmbitpKTsKKyAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5f eChtZm5fYWRkKG1mbiwgaSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm bl94KGdmbl9hZGQoZ2ZuLCBpKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7 CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQWRkaW5nIGJhZCBtZm4gdG8gcDJt IG1hcCAoJSNseCAtPiAlI2x4KVxuIiwKLSAgICAgICAgICAgICAgICAgZ2ZuLCBtZm4pOwotICAg ICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBwYWdl X29yZGVyLAorICAgICAgICAgICAgICAgICBnZm5feChnZm4pLCBtZm5feChtZm4pKTsKKyAgICAg ICAgcmMgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuKSwgX21mbihJTlZBTElEX01GTiks IHBhZ2Vfb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJt LT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgICAgIGlmICggcmMgPT0gMCApCiAgICAgICAgIHsKQEAg LTI3OTgsNyArMjgwNCw3IEBAIGludCBwMm1fYWRkX2ZvcmVpZ24oc3RydWN0IGRvbWFpbiAqdGRv bSwgdW5zaWduZWQgbG9uZyBmZ2ZuLAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGdwZm4sIGRvbWlkX3QgZm9yZWlnbmRvbSkKIHsKICAgICBwMm1fdHlwZV90IHAybXQsIHAybXRf cHJldjsKLSAgICB1bnNpZ25lZCBsb25nIHByZXZfbWZuLCBtZm47CisgICAgbWZuX3QgcHJldl9t Zm4sIG1mbjsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogICAgIGludCByYzsKICAgICBz dHJ1Y3QgZG9tYWluICpmZG9tOwpAQCAtMjg0MSwxNSArMjg0NywxNSBAQCBpbnQgcDJtX2FkZF9m b3JlaWduKHN0cnVjdCBkb21haW4gKnRkb20sIHVuc2lnbmVkIGxvbmcgZmdmbiwKICAgICAgICAg cmMgPSAtRUlOVkFMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gICAgbWZuID0gbWZuX3go cGFnZV90b19tZm4ocGFnZSkpOworICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwogCiAgICAg LyogUmVtb3ZlIHByZXZpb3VzbHkgbWFwcGVkIHBhZ2UgaWYgaXQgaXMgcHJlc2VudC4gKi8KLSAg ICBwcmV2X21mbiA9IG1mbl94KGdldF9nZm4odGRvbSwgZ3BmbiwgJnAybXRfcHJldikpOwotICAg IGlmICggbWZuX3ZhbGlkKF9tZm4ocHJldl9tZm4pKSApCisgICAgcHJldl9tZm4gPSBnZXRfZ2Zu KHRkb20sIGdwZm4sICZwMm10X3ByZXYpOworICAgIGlmICggbWZuX3ZhbGlkKHByZXZfbWZuKSAp CiAgICAgewotICAgICAgICBpZiAoIGlzX3hlbl9oZWFwX21mbihwcmV2X21mbikgKQorICAgICAg ICBpZiAoIGlzX3hlbl9oZWFwX21mbihtZm5feChwcmV2X21mbikpICkKICAgICAgICAgICAgIC8q IFhlbiBoZWFwIGZyYW1lcyBhcmUgc2ltcGx5IHVuaG9va2VkIGZyb20gdGhpcyBwaHlzIHNsb3Qg Ki8KLSAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UodGRvbSwgZ3BmbiwgcHJl dl9tZm4sIDApOworICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZSh0ZG9tLCBf Z2ZuKGdwZm4pLCBwcmV2X21mbiwgMCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIC8qIE5v cm1hbCBkb21haW4gbWVtb3J5IGlzIGZyZWVkLCB0byBhdm9pZCBsZWFraW5nIG1lbW9yeS4gKi8K ICAgICAgICAgICAgIGd1ZXN0X3JlbW92ZV9wYWdlKHRkb20sIGdwZm4pOwpAQCAtMjg1OSwxMSAr Mjg2NSwxMSBAQCBpbnQgcDJtX2FkZF9mb3JlaWduKHN0cnVjdCBkb21haW4gKnRkb20sIHVuc2ln bmVkIGxvbmcgZmdmbiwKICAgICAgKiB3aWxsIHVwZGF0ZSB0aGUgbTJwIHRhYmxlIHdoaWNoIHdp bGwgcmVzdWx0IGluICBtZm4gLT4gZ3BmbiBvZiBkb20wCiAgICAgICogYW5kIG5vdCBmZ2ZuIG9m IGRvbVUuCiAgICAgICovCi0gICAgcmMgPSBzZXRfZm9yZWlnbl9wMm1fZW50cnkodGRvbSwgZ3Bm biwgX21mbihtZm4pKTsKKyAgICByYyA9IHNldF9mb3JlaWduX3AybV9lbnRyeSh0ZG9tLCBncGZu LCBtZm4pOwogICAgIGlmICggcmMgKQogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywg InNldF9mb3JlaWduX3AybV9lbnRyeSBmYWlsZWQuICIKICAgICAgICAgICAgICAgICAgImdwZm46 JWx4IG1mbjolbHggZmdmbjolbHggdGQ6JWQgZmQ6JWRcbiIsCi0gICAgICAgICAgICAgICAgIGdw Zm4sIG1mbiwgZmdmbiwgdGRvbS0+ZG9tYWluX2lkLCBmZG9tLT5kb21haW5faWQpOworICAgICAg ICAgICAgICAgICBncGZuLCBtZm5feChtZm4pLCBmZ2ZuLCB0ZG9tLT5kb21haW5faWQsIGZkb20t PmRvbWFpbl9pZCk7CiAKICAgICBwdXRfcGFnZShwYWdlKTsKIApkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCmluZGV4IDNjMzA0 ZjQuLjNmMTU1NDMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYworKysgYi94 ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKQEAgLTE4MTgsNyArMTgxOCw3IEBAIGdudHRhYl90cmFu c2ZlcigKICAgICAgICAgICAgIGdvdG8gY29weWJhY2s7CiAgICAgICAgIH0KIAotICAgICAgICBn dWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIGdvcC5tZm4sIG1mbiwgMCk7CisgICAgICAgIGd1 ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnb3AubWZuKSwgX21mbihtZm4pLCAwKTsK ICAgICAgICAgZ250dGFiX2ZsdXNoX3RsYihkKTsKIAogICAgICAgICAvKiBGaW5kIHRoZSB0YXJn ZXQgZG9tYWluLiAqLwpAQCAtMTk0Niw3ICsxOTQ2LDcgQEAgZ250dGFiX3RyYW5zZmVyKAogICAg ICAgICB7CiAgICAgICAgICAgICBncmFudF9lbnRyeV92MV90ICpzaGEgPSAmc2hhcmVkX2VudHJ5 X3YxKGUtPmdyYW50X3RhYmxlLCBnb3AucmVmKTsKIAotICAgICAgICAgICAgZ3Vlc3RfcGh5c21h cF9hZGRfcGFnZShlLCBzaGEtPmZyYW1lLCBtZm4sIDApOworICAgICAgICAgICAgZ3Vlc3RfcGh5 c21hcF9hZGRfcGFnZShlLCBfZ2ZuKHNoYS0+ZnJhbWUpLCBfbWZuKG1mbiksIDApOwogICAgICAg ICAgICAgaWYgKCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGUpICkKICAgICAgICAgICAgICAgICBz aGEtPmZyYW1lID0gbWZuOwogICAgICAgICB9CkBAIC0xOTU0LDcgKzE5NTQsOCBAQCBnbnR0YWJf dHJhbnNmZXIoCiAgICAgICAgIHsKICAgICAgICAgICAgIGdyYW50X2VudHJ5X3YyX3QgKnNoYSA9 ICZzaGFyZWRfZW50cnlfdjIoZS0+Z3JhbnRfdGFibGUsIGdvcC5yZWYpOwogCi0gICAgICAgICAg ICBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGUsIHNoYS0+ZnVsbF9wYWdlLmZyYW1lLCBtZm4sIDAp OworICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShlLCBfZ2ZuKHNoYS0+ZnVsbF9w YWdlLmZyYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihtZm4p LCAwKTsKICAgICAgICAgICAgIGlmICggIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShlKSApCiAgICAg ICAgICAgICAgICAgc2hhLT5mdWxsX3BhZ2UuZnJhbWUgPSBtZm47CiAgICAgICAgIH0KZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29tbW9uL21lbW9yeS5jCmluZGV4IGI1 NGIwNzYuLmE4YTc1ZTAgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vbWVtb3J5LmMKKysrIGIveGVu L2NvbW1vbi9tZW1vcnkuYwpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl X3BoeXNtYXAoc3RydWN0IG1lbW9wX2FyZ3MgKmEpCiAgICAgICAgICAgICAgICAgbWZuID0gcGFn ZV90b19tZm4ocGFnZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGd1ZXN0X3BoeXNt YXBfYWRkX3BhZ2UoZCwgZ3BmbiwgbWZuLCBhLT5leHRlbnRfb3JkZXIpOworICAgICAgICAgICAg Z3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdwZm4pLCBfbWZuKG1mbiksIGEtPmV4dGVu dF9vcmRlcik7CiAKICAgICAgICAgICAgIGlmICggIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSAp CiAgICAgICAgICAgICB7CkBAIC0yMzcsMjAgKzIzNywyMCBAQCBpbnQgZ3Vlc3RfcmVtb3ZlX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnbWZuKQogI2lmZGVmIENPTkZJR19Y ODYKICAgICBwMm1fdHlwZV90IHAybXQ7CiAjZW5kaWYKLSAgICB1bnNpZ25lZCBsb25nIG1mbjsK KyAgICBtZm5fdCBtZm47CiAKICNpZmRlZiBDT05GSUdfWDg2Ci0gICAgbWZuID0gbWZuX3goZ2V0 X2dmbl9xdWVyeShkLCBnbWZuLCAmcDJtdCkpOyAKKyAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQs IGdtZm4sICZwMm10KTsKICAgICBpZiAoIHVubGlrZWx5KHAybV9pc19wYWdpbmcocDJtdCkpICkK ICAgICB7Ci0gICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ21mbiwgbWZuLCAw KTsKKyAgICAgICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdtZm4pLCBtZm4s IDApOwogICAgICAgICBwdXRfZ2ZuKGQsIGdtZm4pOwogICAgICAgICAvKiBJZiB0aGUgcGFnZSBo YXNuJ3QgeWV0IGJlZW4gcGFnZWQgb3V0LCB0aGVyZSBpcyBhbgogICAgICAgICAgKiBhY3R1YWwg cGFnZSB0aGF0IG5lZWRzIHRvIGJlIHJlbGVhc2VkLiAqLwogICAgICAgICBpZiAoIHAybXQgPT0g cDJtX3JhbV9wYWdpbmdfb3V0ICkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1mbl92 YWxpZChtZm4pKTsKLSAgICAgICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm4pOworICAgICAg ICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm5feChtZm4pKSk7CisgICAgICAgICAgICBwYWdlID0g bWZuX3RvX3BhZ2UobWZuX3gobWZuKSk7CiAgICAgICAgICAgICBpZiAoIHRlc3RfYW5kX2NsZWFy X2JpdChfUEdDX2FsbG9jYXRlZCwgJnBhZ2UtPmNvdW50X2luZm8pICkKICAgICAgICAgICAgICAg ICBwdXRfcGFnZShwYWdlKTsKICAgICAgICAgfQpAQCAtMjU5LDE0ICsyNTksMTQgQEAgaW50IGd1 ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ21mbikKICAg ICB9CiAgICAgaWYgKCBwMm10ID09IHAybV9tbWlvX2RpcmVjdCApCiAgICAgewotICAgICAgICBj bGVhcl9tbWlvX3AybV9lbnRyeShkLCBnbWZuLCBfbWZuKG1mbiksIDApOworICAgICAgICBjbGVh cl9tbWlvX3AybV9lbnRyeShkLCBnbWZuLCBtZm4sIDApOwogICAgICAgICBwdXRfZ2ZuKGQsIGdt Zm4pOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAjZWxzZQotICAgIG1mbiA9IG1mbl94KGdm bl90b19tZm4oZCwgX2dmbihnbWZuKSkpOworICAgIG1mbiA9IGdmbl90b19tZm4oZCwgX2dmbihn bWZuKSk7CiAjZW5kaWYKLSAgICBpZiAoIHVubGlrZWx5KCFtZm5fdmFsaWQobWZuKSkgKQorICAg IGlmICggdW5saWtlbHkoIW1mbl92YWxpZChtZm5feChtZm4pKSkgKQogICAgIHsKICAgICAgICAg cHV0X2dmbihkLCBnbWZuKTsKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJEb21haW4g JXUgcGFnZSBudW1iZXIgJWx4IGludmFsaWRcbiIsCkBAIC0yODgsMTIgKzI4OCwxMiBAQCBpbnQg Z3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnbWZuKQog ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgLyogTWF5YmUgdGhlIG1m biBjaGFuZ2VkICovCi0gICAgICAgIG1mbiA9IG1mbl94KGdldF9nZm5fcXVlcnlfdW5sb2NrZWQo ZCwgZ21mbiwgJnAybXQpKTsKKyAgICAgICAgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChk LCBnbWZuLCAmcDJtdCk7CiAgICAgICAgIEFTU0VSVCghcDJtX2lzX3NoYXJlZChwMm10KSk7CiAg ICAgfQogI2VuZGlmIC8qIENPTkZJR19YODYgKi8KIAotICAgIHBhZ2UgPSBtZm5fdG9fcGFnZSht Zm4pOworICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm5feChtZm4pKTsKICAgICBpZiAoIHVubGlr ZWx5KCFnZXRfcGFnZShwYWdlLCBkKSkgKQogICAgIHsKICAgICAgICAgcHV0X2dmbihkLCBnbWZu KTsKQEAgLTMxNiw3ICszMTYsNyBAQCBpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnbWZuKQogICAgICAgICAgdGVzdF9hbmRfY2xlYXJfYml0KF9Q R0NfYWxsb2NhdGVkLCAmcGFnZS0+Y291bnRfaW5mbykgKQogICAgICAgICBwdXRfcGFnZShwYWdl KTsKIAotICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ21mbiwgbWZuLCAwKTsKKyAg ICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ21mbiksIG1mbiwgMCk7CiAKICAg ICBwdXRfcGFnZShwYWdlKTsKICAgICBwdXRfZ2ZuKGQsIGdtZm4pOwpAQCAtNTQwLDcgKzU0MCw3 IEBAIHN0YXRpYyBsb25nIG1lbW9yeV9leGNoYW5nZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhl bl9tZW1vcnlfZXhjaGFuZ2VfdCkgYXJnKQogICAgICAgICAgICAgZ2ZuID0gbWZuX3RvX2dtZm4o ZCwgbWZuKTsKICAgICAgICAgICAgIC8qIFBhZ2VzIHdlcmUgdW5zaGFyZWQgYWJvdmUgKi8KICAg ICAgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdmbikpOwotICAgICAgICAgICAgZ3Vlc3RfcGh5 c21hcF9yZW1vdmVfcGFnZShkLCBnZm4sIG1mbiwgMCk7CisgICAgICAgICAgICBndWVzdF9waHlz bWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgX21mbihtZm4pLCAwKTsKICAgICAgICAgICAg IHB1dF9wYWdlKHBhZ2UpOwogICAgICAgICB9CiAKQEAgLTU4NCw3ICs1ODQsOCBAQCBzdGF0aWMg bG9uZyBtZW1vcnlfZXhjaGFuZ2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWVtb3J5X2V4 Y2hhbmdlX3QpIGFyZykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbWZuID0gcGFnZV90 b19tZm4ocGFnZSk7Ci0gICAgICAgICAgICBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIGdwZm4s IG1mbiwgZXhjaC5vdXQuZXh0ZW50X29yZGVyKTsKKyAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBf YWRkX3BhZ2UoZCwgX2dmbihncGZuKSwgX21mbihtZm4pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleGNoLm91dC5leHRlbnRfb3JkZXIpOwogCiAgICAgICAgICAgICBpZiAo ICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoZCkgKQogICAgICAgICAgICAgewpAQCAtMTA5NSw3ICsx MDk2LDggQEAgbG9uZyBkb19tZW1vcnlfb3AodW5zaWduZWQgbG9uZyBjbWQsIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnKQogICAgICAgICBwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4o ZCwgeHJmcC5ncGZuLCBOVUxMLCBQMk1fQUxMT0MpOwogICAgICAgICBpZiAoIHBhZ2UgKQogICAg ICAgICB7Ci0gICAgICAgICAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIHhyZnAuZ3Bm biwgcGFnZV90b19tZm4ocGFnZSksIDApOworICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9yZW1v dmVfcGFnZShkLCBfZ2ZuKHhyZnAuZ3BmbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9tZm4ocGFnZV90b19tZm4ocGFnZSkpLCAwKTsKICAgICAgICAgICAgIHB1dF9w YWdlKHBhZ2UpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0v c21tdS5jCmluZGV4IDhhNGIxMjMuLmNmOGI4YjggMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2FybS9zbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Nt bXUuYwpAQCAtMjc3NCw3ICsyNzc0LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3Nt bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAJICogVGhl IGZ1bmN0aW9uIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IHJlcGxhY2VzIHRoZSBjdXJyZW50IG1h cHBpbmcKIAkgKiBpZiB0aGVyZSBpcyBhbHJlYWR5IG9uZS4uLgogCSAqLwotCXJldHVybiBndWVz dF9waHlzbWFwX2FkZF9lbnRyeShkLCBnZm4sIG1mbiwgMCwgdCk7CisJcmV0dXJuIGd1ZXN0X3Bo eXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oZ2ZuKSwgX21mbihtZm4pLCAwLCB0KTsKIH0KIAogc3Rh dGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbikKQEAgLTI3ODYsNyArMjc4Niw3IEBAIHN0YXRpYyBpbnQgX19t dXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm4pCiAJaWYgKCAhaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkgKQogCQlyZXR1cm4g LUVJTlZBTDsKIAotCWd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ2ZuLCBnZm4sIDApOwor CWd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBfbWZuKGdmbiksIDApOwog CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oIGIv eGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaAppbmRleCA3NWM2NWE4Li4wZDFlNjFlIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v cDJtLmgKQEAgLTE2MCwyMyArMTYwLDIzIEBAIGludCBtYXBfZGV2X21taW9fcmVnaW9uKHN0cnVj dCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbik7 CiAKIGludCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdmbl90IGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlX29yZGVyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCk7CiAKIC8qIFVudHlwZWQgdmVy c2lvbiBmb3IgUkFNIG9ubHksIGZvciBjb21wYXRpYmlsaXR5ICovCiBzdGF0aWMgaW5saW5lIGlu dCBndWVzdF9waHlzbWFwX2FkZF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQogewog ICAgIHJldHVybiBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShkLCBnZm4sIG1mbiwgcGFnZV9vcmRl ciwgcDJtX3JhbV9ydyk7CiB9CiAKIHZvaWQgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZ3BmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1m biwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdmbl90IGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4s IHVuc2lnbmVkIGludCBwYWdlX29yZGVyKTsKIAogbWZuX3QgZ2ZuX3RvX21mbihzdHJ1Y3QgZG9t YWluICpkLCBnZm5fdCBnZm4pOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Ay bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAppbmRleCA2NTY3NWEyLi40YWIzNTc0IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvcDJtLmgKQEAgLTU0NSwxNCArNTQ1LDE0IEBAIHZvaWQgcDJtX3RlYXJkb3duKHN0cnVj dCBwMm1fZG9tYWluICpwMm0pOwogdm9pZCBwMm1fZmluYWxfdGVhcmRvd24oc3RydWN0IGRvbWFp biAqZCk7CiAKIC8qIEFkZCBhIHBhZ2UgdG8gYSBkb21haW4ncyBwMm0gdGFibGUgKi8KLWludCBn dWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdm biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWdu ZWQgaW50IHBhZ2Vfb3JkZXIsIAoraW50IGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBk b21haW4gKmQsIGdmbl90IGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBt Zm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAybV90eXBlX3QgdCk7CiAKIC8qIFVudHlwZWQgdmVyc2lvbiBmb3IgUkFNIG9ubHksIGZvciBj b21wYXRpYmlsaXR5ICovCiBzdGF0aWMgaW5saW5lIGludCBndWVzdF9waHlzbWFwX2FkZF9wYWdl KHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2ZuX3QgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQogewogICAgIHJldHVybiBndWVzdF9waHlzbWFw X2FkZF9lbnRyeShkLCBnZm4sIG1mbiwgcGFnZV9vcmRlciwgcDJtX3JhbV9ydyk7CkBAIC01NjAs OCArNTYwLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLAogCiAvKiBSZW1vdmUgYSBwYWdlIGZyb20gYSBkb21haW4ncyBwMm0gdGFi bGUgKi8KIGludCBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgcGFn ZV9vcmRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCBnZm4sIG1mbl90 IG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpOwogCiAvKiBTZXQgYSBwMm0gcmFuZ2UgYXMg cG9wdWxhdGUtb24tZGVtYW5kICovCiBpbnQgZ3Vlc3RfcGh5c21hcF9tYXJrX3BvcHVsYXRlX29u X2RlbWFuZChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKaW5kZXggMTNmNzA2 ZS4uYjYyZjQ3MyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL21tLmgKKysrIGIveGVuL2lu Y2x1ZGUveGVuL21tLmgKQEAgLTU1Miw3ICs1NTIsNyBAQCBpbnQgeGVubWVtX2FkZF90b19waHlz bWFwX29uZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc3BhY2UsCiAKIC8qIFJldHVy bnMgMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yLCBuZWdhdGl2ZSBpZiB0aGUgcmluZwogICogZm9y IGV2ZW50IHByb3BhZ2F0aW9uIGlzIGZ1bGwgaW4gdGhlIHByZXNlbmNlIG9mIHBhZ2luZyAqLwot aW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ21m bik7CitpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBnZm4pOwogCiAjZGVmaW5lIFJBTV9UWVBFX0NPTlZFTlRJT05BTCAweDAwMDAwMDAxCiAjZGVm aW5lIFJBTV9UWVBFX1JFU0VSVkVEICAgICAweDAwMDAwMDAyCi0tIAoxLjkuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==