From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v7 04/14] xen: Use a typesafe to define INVALID_GFN Date: Tue, 12 Jul 2016 14:59:25 +0100 Message-ID: <1468331975-27331-5-git-send-email-julien.grall@arm.com> References: <1468331975-27331-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: <1468331975-27331-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: Elena Ufimtseva , Kevin Tian , sstabellini@kernel.org, Feng Wu , Suravee Suthikulpanit , Jun Nakajima , Andrew Cooper , Tim Deegan , George Dunlap , Julien Grall , Paul Durrant , Jan Beulich , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org QWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8g dGhlIHR5cGVzYWZlIGdmbi4KClNpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpBY2tlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJu ZWwub3JnPgpBY2tlZC1ieTogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFAb3JhY2xl LmNvbT4KCi0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogUGF1bCBE dXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9y aXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNjOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2 ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgpDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFA aW50ZWwuY29tPgpDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CkNjOiBHZW9y Z2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBUaW0gRGVlZ2FuIDx0 aW1AeGVuLm9yZz4KQ2M6IEZlbmcgV3UgPGZlbmcud3VAaW50ZWwuY29tPgoKICAgIENoYW5nZXMg aW4gdjc6CiAgICAgICAgLSBBZGQgRWxlbmEncyBhY2tlZC1ieQoKICAgIENoYW5nZXMgaW4gdjY6 CiAgICAgICAgLSBBZGQgU3RlZmFubydzIGFja2VkLWJ5IGZvciBBUk0gYml0cwogICAgICAgIC0g UmVtb3ZlIHNldCBvZiBicmFja2V0cyB3aGVuIGl0IGlzIG5vdCBuZWNlc3NhcnkKICAgICAgICAt IEFkZCBBbmRyZXcncyByZXZpZXdlZC1ieQoKICAgIENoYW5nZXMgaW4gdjU6CiAgICAgICAgLSBQ YXRjaCBhZGRlZAotLS0KIHhlbi9hcmNoL2FybS9wMm0uYyAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIHhlbi9hcmNoL3g4Ni9kZWJ1Zy5jICAgICAgICAgICAgICAgICAgICB8IDE4ICsr KysrKysrKy0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICAgICAgICB8ICA3ICsr KystLS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0t LQogeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0K IHhlbi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jICAgICAgICB8ICAyICstCiB4ZW4vYXJj aC94ODYvaHZtL3ZteC92bXguYyAgICAgICAgICAgICAgfCAgNiArKystLS0KIHhlbi9hcmNoL3g4 Ni9tbS9hbHRwMm0uYyAgICAgICAgICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vaGFw L2d1ZXN0X3dhbGsuYyAgICAgICAgfCAxMCArKysrKy0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vaGFw L25lc3RlZF9lcHQuYyAgICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyAg ICAgICAgICAgICAgIHwgIDYgKysrLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgICAgICAg ICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMgICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMg ICAgICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmggICAgICAg IHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyB8ICAyICst CiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgICAgfCAgNCArKy0tCiB4ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyAgICAgfCAgMiArLQogeGVuL2luY2x1ZGUv YXNtLXg4Ni9ndWVzdF9wdC5oICAgICAgICAgIHwgIDQgKystLQogeGVuL2luY2x1ZGUvYXNtLXg4 Ni9wMm0uaCAgICAgICAgICAgICAgIHwgIDIgKy0KIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiAyMiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCsp LCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMgYi94ZW4v YXJjaC9hcm0vcDJtLmMKaW5kZXggZDY5MDYwMi4uYzkzOGRkZSAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gvYXJtL3AybS5jCisrKyBiL3hlbi9hcmNoL2FybS9wMm0uYwpAQCAtNDc5LDcgKzQ3OSw3IEBA IHN0YXRpYyBpbnQgX19wMm1fZ2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3Qg Z2ZuLAogICAgIH0KIAogICAgIC8qIElmIHJlcXVlc3QgdG8gZ2V0IGRlZmF1bHQgYWNjZXNzLiAq LwotICAgIGlmICggZ2ZuX3goZ2ZuKSA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEo Z2ZuLCBJTlZBTElEX0dGTikgKQogICAgIHsKICAgICAgICAgKmFjY2VzcyA9IG1lbWFjY2Vzc1tw Mm0tPmRlZmF1bHRfYWNjZXNzXTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xODc5LDcgKzE4Nzks NyBAQCBsb25nIHAybV9zZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4s IHVpbnQzMl90IG5yLAogICAgIHAybS0+bWVtX2FjY2Vzc19lbmFibGVkID0gdHJ1ZTsKIAogICAg IC8qIElmIHJlcXVlc3QgdG8gc2V0IGRlZmF1bHQgYWNjZXNzLiAqLwotICAgIGlmICggZ2ZuX3go Z2ZuKSA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikg KQogICAgIHsKICAgICAgICAgcDJtLT5kZWZhdWx0X2FjY2VzcyA9IGE7CiAgICAgICAgIHJldHVy biAwOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RlYnVnLmMgYi94ZW4vYXJjaC94ODYvZGVi dWcuYwppbmRleCA5MjEzZWE3Li4zMDMwMDIyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZGVi dWcuYworKysgYi94ZW4vYXJjaC94ODYvZGVidWcuYwpAQCAtNDQsOCArNDQsNyBAQCB0eXBlZGVm IHVuc2lnbmVkIGNoYXIgZGJnYnl0ZV90OwogCiAvKiBSZXR1cm5zOiBtZm4gZm9yIHRoZSBnaXZl biAoaHZtIGd1ZXN0KSB2YWRkciAqLwogc3RhdGljIG1mbl90Ci1kYmdfaHZtX3ZhMm1mbihkYmd2 YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgaW50IHRvYWRkciwKLSAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nICpnZm4pCitkYmdfaHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1 Y3QgZG9tYWluICpkcCwgaW50IHRvYWRkciwgZ2ZuX3QgKmdmbikKIHsKICAgICBtZm5fdCBtZm47 CiAgICAgdWludDMyX3QgcGZlYyA9IFBGRUNfcGFnZV9wcmVzZW50OwpAQCAtNTMsMTQgKzUyLDE0 IEBAIGRiZ19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQg dG9hZGRyLAogCiAgICAgREJHUDIoInZhZGRyOiVseCBkb21pZDolZFxuIiwgdmFkZHIsIGRwLT5k b21haW5faWQpOwogCi0gICAgKmdmbiA9IHBhZ2luZ19ndmFfdG9fZ2ZuKGRwLT52Y3B1WzBdLCB2 YWRkciwgJnBmZWMpOwotICAgIGlmICggKmdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgKmdmbiA9 IF9nZm4ocGFnaW5nX2d2YV90b19nZm4oZHAtPnZjcHVbMF0sIHZhZGRyLCAmcGZlYykpOworICAg IGlmICggZ2ZuX2VxKCpnZm4sIElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAgICBEQkdQMigi a2RiOmJhZCBnZm4gZnJvbSBndmFfdG9fZ2ZuXG4iKTsKICAgICAgICAgcmV0dXJuIElOVkFMSURf TUZOOwogICAgIH0KIAotICAgIG1mbiA9IGdldF9nZm4oZHAsICpnZm4sICZnZm50eXBlKTsKKyAg ICBtZm4gPSBnZXRfZ2ZuKGRwLCBnZm5feCgqZ2ZuKSwgJmdmbnR5cGUpOwogICAgIGlmICggcDJt X2lzX3JlYWRvbmx5KGdmbnR5cGUpICYmIHRvYWRkciApCiAgICAgewogICAgICAgICBEQkdQMigi a2RiOnAybV9pc19yZWFkb25seTogZ2ZudHlwZToleFxuIiwgZ2ZudHlwZSk7CkBAIC03Miw3ICs3 MSw3IEBAIGRiZ19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBp bnQgdG9hZGRyLAogCiAgICAgaWYgKCBtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQogICAgIHsK LSAgICAgICAgcHV0X2dmbihkcCwgKmdmbik7CisgICAgICAgIHB1dF9nZm4oZHAsIGdmbl94KCpn Zm4pKTsKICAgICAgICAgKmdmbiA9IElOVkFMSURfR0ZOOwogICAgIH0KIApAQCAtMTY1LDcgKzE2 NCw4IEBAIHVuc2lnbmVkIGludCBkYmdfcndfZ3Vlc3RfbWVtKHN0cnVjdCBkb21haW4gKmRwLCB2 b2lkICogX191c2VyIGdhZGRyLAogICAgICAgICBjaGFyICp2YTsKICAgICAgICAgdW5zaWduZWQg bG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpZ2FkZHI7CiAgICAgICAgIG1mbl90IG1mbjsKLSAg ICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBJTlZBTElEX0dGTiwgcGFnZWNudDsKKyAgICAgICAg Z2ZuX3QgZ2ZuID0gSU5WQUxJRF9HRk47CisgICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZWNudDsK IAogICAgICAgICBwYWdlY250ID0gbWluX3QobG9uZywgUEFHRV9TSVpFIC0gKGFkZHIgJiB+UEFH RV9NQVNLKSwgbGVuKTsKIApAQCAtMTg5LDggKzE4OSw4IEBAIHVuc2lnbmVkIGludCBkYmdfcndf Z3Vlc3RfbWVtKHN0cnVjdCBkb21haW4gKmRwLCB2b2lkICogX191c2VyIGdhZGRyLAogICAgICAg ICB9CiAKICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UodmEpOwotICAgICAgICBpZiAoIGdmbiAh PSBJTlZBTElEX0dGTiApCi0gICAgICAgICAgICBwdXRfZ2ZuKGRwLCBnZm4pOworICAgICAgICBp ZiAoICFnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikgKQorICAgICAgICAgICAgcHV0X2dmbihkcCwg Z2ZuX3goZ2ZuKSk7CiAKICAgICAgICAgYWRkciArPSBwYWdlY250OwogICAgICAgICBidWYgKz0g cGFnZWNudDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4 Ni9kb21haW4uYwppbmRleCBiYjU5MjQ3Li5jOGM3ZTJkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC03ODMsNyArNzgzLDcg QEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgKiBn Zm4gPT0gSU5WQUxJRF9HRk4gaW5kaWNhdGVzIHRoYXQgdGhlIHNoYXJlZF9pbmZvIHBhZ2Ugd2Fz IG5ldmVyIG1hcHBlZAogICAgICAqIHRvIHRoZSBkb21haW4ncyBhZGRyZXNzIHNwYWNlIGFuZCB0 aGVyZSBpcyBub3RoaW5nIHRvIHJlcGxhY2UuCiAgICAgICovCi0gICAgaWYgKCBnZm4gPT0gSU5W QUxJRF9HRk4gKQorICAgIGlmICggZ2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCiAgICAgICAg IGdvdG8gZXhpdF9wdXRfcGFnZTsKIAogICAgIGlmICggbWZuX3goZ2V0X2dmbl9xdWVyeShkLCBn Zm4sICZwMm10KSkgIT0gbWZuICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0 ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKaW5kZXggODU1YWY0ZC4uYzU1YWQ3YiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS9lbXVsYXRlLmMKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfbGlu ZWFyX3RvX3BoeXMoCiAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgIHBmbiA9IF9wYWRk ciA+PiBQQUdFX1NISUZUOwogICAgIH0KLSAgICBlbHNlIGlmICggKHBmbiA9IHBhZ2luZ19ndmFf dG9fZ2ZuKGN1cnIsIGFkZHIsICZwZmVjKSkgPT0gSU5WQUxJRF9HRk4gKQorICAgIGVsc2UgaWYg KCAocGZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpKSA9PSBnZm5feChJ TlZBTElEX0dGTikgKQogICAgIHsKICAgICAgICAgaWYgKCBwZmVjICYgKFBGRUNfcGFnZV9wYWdl ZCB8IFBGRUNfcGFnZV9zaGFyZWQpICkKICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1JFVFJZ OwpAQCAtNDcyLDcgKzQ3Miw4IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9saW5lYXJfdG9fcGh5cygK ICAgICAgICAgbnBmbiA9IHBhZ2luZ19ndmFfdG9fZ2ZuKGN1cnIsIGFkZHIsICZwZmVjKTsKIAog ICAgICAgICAvKiBJcyBpdCBjb250aWd1b3VzIHdpdGggdGhlIHByZWNlZGluZyBQRk5zPyBJZiBu b3QgdGhlbiB3ZSdyZSBkb25lLiAqLwotICAgICAgICBpZiAoIChucGZuID09IElOVkFMSURfR0ZO KSB8fCAobnBmbiAhPSAocGZuICsgKHJldmVyc2UgPyAtaSA6IGkpKSkgKQorICAgICAgICBpZiAo IChucGZuID09IGdmbl94KElOVkFMSURfR0ZOKSkgfHwKKyAgICAgICAgICAgICAobnBmbiAhPSAo cGZuICsgKHJldmVyc2UgPyAtaSA6IGkpKSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo IHBmZWMgJiAoUEZFQ19wYWdlX3BhZ2VkIHwgUEZFQ19wYWdlX3NoYXJlZCkgKQogICAgICAgICAg ICAgICAgIHJldHVybiBYODZFTVVMX1JFVFJZOwpAQCAtNDgwLDcgKzQ4MSw3IEBAIHN0YXRpYyBp bnQgaHZtZW11bF9saW5lYXJfdG9fcGh5cygKICAgICAgICAgICAgIGlmICggZG9uZSA9PSAwICkK ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXJldmVyc2UpOwotICAgICAg ICAgICAgICAgIGlmICggbnBmbiAhPSBJTlZBTElEX0dGTiApCisgICAgICAgICAgICAgICAgaWYg KCBucGZuICE9IGdmbl94KElOVkFMSURfR0ZOKSApCiAgICAgICAgICAgICAgICAgICAgIHJldHVy biBYODZFTVVMX1VOSEFORExFQUJMRTsKICAgICAgICAgICAgICAgICBodm1faW5qZWN0X3BhZ2Vf ZmF1bHQocGZlYywgYWRkciAmIFBBR0VfTUFTSyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFg4 NkVNVUxfRVhDRVBUSU9OOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hl bi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggMjM3NTdhNC4uZGFhZWUxZCAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0z MDM3LDcgKzMwMzcsNyBAQCBzdGF0aWMgZW51bSBodm1fY29weV9yZXN1bHQgX19odm1fY29weSgK ICAgICAgICAgaWYgKCBmbGFncyAmIEhWTUNPUFlfdmlydCApCiAgICAgICAgIHsKICAgICAgICAg ICAgIGdmbiA9IHBhZ2luZ19ndmFfdG9fZ2ZuKGN1cnIsIGFkZHIsICZwZmVjKTsKLSAgICAgICAg ICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKKyAgICAgICAgICAgIGlmICggZ2ZuID09IGdm bl94KElOVkFMSURfR0ZOKSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKCBw ZmVjICYgUEZFQ19wYWdlX3BhZ2VkICkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEhWTUNP UFlfZ2ZuX3BhZ2VkX291dDsKQEAgLTMxNTIsNyArMzE1Miw3IEBAIHN0YXRpYyBlbnVtIGh2bV9j b3B5X3Jlc3VsdCBfX2h2bV9jbGVhcihwYWRkcl90IGFkZHIsIGludCBzaXplKQogICAgICAgICBj b3VudCA9IG1pbl90KGludCwgUEFHRV9TSVpFIC0gKGFkZHIgJiB+UEFHRV9NQVNLKSwgdG9kbyk7 CiAKICAgICAgICAgZ2ZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpOwot ICAgICAgICBpZiAoIGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgICAgIGlmICggZ2ZuID09IGdm bl94KElOVkFMSURfR0ZOKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggcGZlYyAmIFBG RUNfcGFnZV9wYWdlZCApCiAgICAgICAgICAgICAgICAgcmV0dXJuIEhWTUNPUFlfZ2ZuX3BhZ2Vk X291dDsKQEAgLTUyOTYsNyArNTI5Niw3IEBAIHN0YXRpYyBpbnQgZG9fYWx0cDJtX29wKAogICAg ICAgICAgICAgIGEudS5lbmFibGVfbm90aWZ5LnZjcHVfaWQgIT0gY3Vyci0+dmNwdV9pZCApCiAg ICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAKLSAgICAgICAgaWYgKCAoZ2ZuX3godmNwdV9hbHRw Mm0oY3VycikudmVpbmZvX2dmbikgIT0gSU5WQUxJRF9HRk4pIHx8CisgICAgICAgIGlmICggIWdm bl9lcSh2Y3B1X2FsdHAybShjdXJyKS52ZWluZm9fZ2ZuLCBJTlZBTElEX0dGTikgfHwKICAgICAg ICAgICAgICBtZm5fZXEoZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyLT5kb21haW4sCiAgICAg ICAgICAgICAgICAgICAgIGEudS5lbmFibGVfbm90aWZ5LmdmbiwgJnAybXQpLCBJTlZBTElEX01G TikgKQogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggNzE0OGFjNC4u ZDIyNDVlMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyB2b2lkIGh2bV9m cmVlX2lvcmVxX2dtZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnbWZuKQogewog ICAgIHVuc2lnbmVkIGludCBpID0gZ21mbiAtIGQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9nbWZu LmJhc2U7CiAKLSAgICBpZiAoIGdtZm4gIT0gSU5WQUxJRF9HRk4gKQorICAgIGlmICggZ21mbiAh PSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAgICBzZXRfYml0KGksICZkLT5hcmNoLmh2bV9k b21haW4uaW9yZXFfZ21mbi5tYXNrKTsKIH0KIApAQCAtNDIwLDcgKzQyMCw3IEBAIHN0YXRpYyBp bnQgaHZtX2lvcmVxX3NlcnZlcl9tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMs CiAgICAgaWYgKCByYyApCiAgICAgICAgIHJldHVybiByYzsKIAotICAgIGlmICggYnVmaW9yZXFf cGZuICE9IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGJ1ZmlvcmVxX3BmbiAhPSBnZm5feChJTlZB TElEX0dGTikgKQogICAgICAgICByYyA9IGh2bV9tYXBfaW9yZXFfcGFnZShzLCAxLCBidWZpb3Jl cV9wZm4pOwogCiAgICAgaWYgKCByYyApCkBAIC00MzQsOCArNDM0LDggQEAgc3RhdGljIGludCBo dm1faW9yZXFfc2VydmVyX3NldHVwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCBoYW5kbGVfYnVm aW9yZXEpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFpbjsKLSAgICB1bnNpZ25l ZCBsb25nIGlvcmVxX3BmbiA9IElOVkFMSURfR0ZOOwotICAgIHVuc2lnbmVkIGxvbmcgYnVmaW9y ZXFfcGZuID0gSU5WQUxJRF9HRk47CisgICAgdW5zaWduZWQgbG9uZyBpb3JlcV9wZm4gPSBnZm5f eChJTlZBTElEX0dGTik7CisgICAgdW5zaWduZWQgbG9uZyBidWZpb3JlcV9wZm4gPSBnZm5feChJ TlZBTElEX0dGTik7CiAgICAgaW50IHJjOwogCiAgICAgaWYgKCBpc19kZWZhdWx0ICkKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jIGIveGVuL2FyY2gveDg2L2h2 bS9zdm0vbmVzdGVkc3ZtLmMKaW5kZXggOWQyYWMwOS4uZjliMzhhYiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0v bmVzdGVkc3ZtLmMKQEAgLTEyMDAsNyArMTIwMCw3IEBAIG5zdm1faGFwX3dhbGtfTDFfcDJtKHN0 cnVjdCB2Y3B1ICp2LCBwYWRkcl90IEwyX2dwYSwgcGFkZHJfdCAqTDFfZ3BhLAogICAgIC8qIFdh bGsgdGhlIGd1ZXN0LXN1cHBsaWVkIE5QVCB0YWJsZSwganVzdCBhcyBpZiBpdCB3ZXJlIGEgcGFn ZXRhYmxlICovCiAgICAgZ2ZuID0gcGFnaW5nX2dhX3RvX2dmbl9jcjModiwgbmVzdGVkX2NyMywg TDJfZ3BhLCAmcGZlYywgcGFnZV9vcmRlcik7CiAKLSAgICBpZiAoIGdmbiA9PSBJTlZBTElEX0dG TiApCisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgcmV0dXJu IE5FU1RFREhWTV9QQUdFRkFVTFRfSU5KRUNUOwogCiAgICAgKkwxX2dwYSA9IChnZm4gPDwgUEFH RV9TSElGVCkgKyAoTDJfZ3BhICYgflBBR0VfTUFTSyk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCmluZGV4IGUyZDY5 ZDguLmUwMGQ4YzIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC0yMDU2LDEzICsyMDU2LDEzIEBAIHN0YXRp YyBpbnQgdm14X3ZjcHVfZW11bGF0ZV92bWZ1bmMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp CiBzdGF0aWMgYm9vbF90IHZteF92Y3B1X2VtdWxhdGVfdmUoc3RydWN0IHZjcHUgKnYpCiB7CiAg ICAgYm9vbF90IHJjID0gMCwgd3JpdGFibGU7Ci0gICAgdW5zaWduZWQgbG9uZyBnZm4gPSBnZm5f eCh2Y3B1X2FsdHAybSh2KS52ZWluZm9fZ2ZuKTsKKyAgICBnZm5fdCBnZm4gPSB2Y3B1X2FsdHAy bSh2KS52ZWluZm9fZ2ZuOwogICAgIHZlX2luZm9fdCAqdmVpbmZvOwogCi0gICAgaWYgKCBnZm4g PT0gSU5WQUxJRF9HRk4gKQorICAgIGlmICggZ2ZuX2VxKGdmbiwgSU5WQUxJRF9HRk4pICkKICAg ICAgICAgcmV0dXJuIDA7CiAKLSAgICB2ZWluZm8gPSBodm1fbWFwX2d1ZXN0X2ZyYW1lX3J3KGdm biwgMCwgJndyaXRhYmxlKTsKKyAgICB2ZWluZm8gPSBodm1fbWFwX2d1ZXN0X2ZyYW1lX3J3KGdm bl94KGdmbiksIDAsICZ3cml0YWJsZSk7CiAgICAgaWYgKCAhdmVpbmZvICkKICAgICAgICAgcmV0 dXJuIDA7CiAgICAgaWYgKCAhd3JpdGFibGUgfHwgdmVpbmZvLT5zZW1hcGhvcmUgIT0gMCApCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vYWx0cDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vYWx0 cDJtLmMKaW5kZXggMTA2MDVjOC4uOTMwYmRjMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21t L2FsdHAybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9hbHRwMm0uYwpAQCAtMjYsNyArMjYsNyBA QCBhbHRwMm1fdmNwdV9yZXNldChzdHJ1Y3QgdmNwdSAqdikKICAgICBzdHJ1Y3QgYWx0cDJtdmNw dSAqYXYgPSAmdmNwdV9hbHRwMm0odik7CiAKICAgICBhdi0+cDJtaWR4ID0gSU5WQUxJRF9BTFRQ Mk07Ci0gICAgYXYtPnZlaW5mb19nZm4gPSBfZ2ZuKElOVkFMSURfR0ZOKTsKKyAgICBhdi0+dmVp bmZvX2dmbiA9IElOVkFMSURfR0ZOOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5j CmluZGV4IGQyNzE2ZjkuLjFiMWExNWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAv Z3Vlc3Rfd2Fsay5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCkBAIC03 MCwxNCArNzAsMTQgQEAgdW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJ TkdfTEVWRUxTKSgKICAgICAgICAgaWYgKCB0b3BfcGFnZSApCiAgICAgICAgICAgICBwdXRfcGFn ZSh0b3BfcGFnZSk7CiAgICAgICAgIHAybV9tZW1fcGFnaW5nX3BvcHVsYXRlKHAybS0+ZG9tYWlu LCBjcjMgPj4gUEFHRV9TSElGVCk7Ci0gICAgICAgIHJldHVybiBJTlZBTElEX0dGTjsKKyAgICAg ICAgcmV0dXJuIGdmbl94KElOVkFMSURfR0ZOKTsKICAgICB9CiAgICAgaWYgKCBwMm1faXNfc2hh cmVkKHAybXQpICkKICAgICB7CiAgICAgICAgIHBmZWNbMF0gPSBQRkVDX3BhZ2Vfc2hhcmVkOwog ICAgICAgICBpZiAoIHRvcF9wYWdlICkKICAgICAgICAgICAgIHB1dF9wYWdlKHRvcF9wYWdlKTsK LSAgICAgICAgcmV0dXJuIElOVkFMSURfR0ZOOworICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJ RF9HRk4pOwogICAgIH0KICAgICBpZiAoICF0b3BfcGFnZSApCiAgICAgewpAQCAtMTEwLDEyICsx MTAsMTIgQEAgdW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVW RUxTKSgKICAgICAgICAgICAgIEFTU0VSVChwMm1faXNfaG9zdHAybShwMm0pKTsKICAgICAgICAg ICAgIHBmZWNbMF0gPSBQRkVDX3BhZ2VfcGFnZWQ7CiAgICAgICAgICAgICBwMm1fbWVtX3BhZ2lu Z19wb3B1bGF0ZShwMm0tPmRvbWFpbiwgZ2ZuX3goZ2ZuKSk7Ci0gICAgICAgICAgICByZXR1cm4g SU5WQUxJRF9HRk47CisgICAgICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAg ICAgICB9CiAgICAgICAgIGlmICggcDJtX2lzX3NoYXJlZChwMm10KSApCiAgICAgICAgIHsKICAg ICAgICAgICAgIHBmZWNbMF0gPSBQRkVDX3BhZ2Vfc2hhcmVkOwotICAgICAgICAgICAgcmV0dXJu IElOVkFMSURfR0ZOOworICAgICAgICAgICAgcmV0dXJuIGdmbl94KElOVkFMSURfR0ZOKTsKICAg ICAgICAgfQogCiAgICAgICAgIGlmICggcGFnZV9vcmRlciApCkBAIC0xNDcsNyArMTQ3LDcgQEAg dW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgKICAg ICBpZiAoICFodm1fbnhfZW5hYmxlZCh2KSAmJiAhaHZtX3NtZXBfZW5hYmxlZCh2KSApCiAgICAg ICAgIHBmZWNbMF0gJj0gflBGRUNfaW5zbl9mZXRjaDsKIAotICAgIHJldHVybiBJTlZBTElEX0dG TjsKKyAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogfQogCiAKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2VwdC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0 ZWRfZXB0LmMKaW5kZXggOTRjZjgzMi4uMDJiMjdiMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L21tL2hhcC9uZXN0ZWRfZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0 LmMKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbnQgbmVwdF90cmFuc2xhdGVfbDJnYShzdHJ1Y3QgdmNw dSAqdiwgcGFkZHJfdCBsMmdhLAogICAgIGVwdF93YWxrX3QgZ3c7CiAgICAgcnd4X2FjYyAmPSBF UFRFX1JXWF9NQVNLOwogCi0gICAgKmwxZ2ZuID0gSU5WQUxJRF9HRk47CisgICAgKmwxZ2ZuID0g Z2ZuX3goSU5WQUxJRF9HRk4pOwogCiAgICAgcmMgPSBuZXB0X3dhbGtfdGFibGVzKHYsIGwyZ2Es ICZndyk7CiAgICAgc3dpdGNoICggcmMgKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKaW5kZXggZjM4NDU4OS4uMTQ5ZjUy OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYworKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXBvZC5jCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBzdGF0aWMgdm9pZCBwb2RfZWFn ZXJfcmVjbGFpbShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQogICAgICAgICB1bnNpZ25lZCBpbnQg aWR4ID0gKG1ycC0+aWR4ICsgaSsrKSAlIEFSUkFZX1NJWkUobXJwLT5saXN0KTsKICAgICAgICAg dW5zaWduZWQgbG9uZyBnZm4gPSBtcnAtPmxpc3RbaWR4XTsKIAotICAgICAgICBpZiAoIGdmbiAh PSBJTlZBTElEX0dGTiApCisgICAgICAgIGlmICggZ2ZuICE9IGdmbl94KElOVkFMSURfR0ZOKSAp CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggZ2ZuICYgUE9EX0xBU1RfU1VQRVJQQUdFICkK ICAgICAgICAgICAgIHsKQEAgLTEwMjAsNyArMTAyMCw3IEBAIHN0YXRpYyB2b2lkIHBvZF9lYWdl cl9yZWNsYWltKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCiAgICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICAgICAgcDJtX3BvZF96ZXJvX2NoZWNrKHAybSwgJmdmbiwgMSk7CiAKLSAgICAgICAg ICAgIG1ycC0+bGlzdFtpZHhdID0gSU5WQUxJRF9HRk47CisgICAgICAgICAgICBtcnAtPmxpc3Rb aWR4XSA9IGdmbl94KElOVkFMSURfR0ZOKTsKICAgICAgICAgfQogCiAgICAgfSB3aGlsZSAoIChw Mm0tPnBvZC5jb3VudCA9PSAwKSAmJiAoaSA8IEFSUkFZX1NJWkUobXJwLT5saXN0KSkgKTsKQEAg LTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyB2b2lkIHBvZF9lYWdlcl9yZWNvcmQoc3RydWN0IHAy bV9kb21haW4gKnAybSwKIHsKICAgICBzdHJ1Y3QgcG9kX21ycF9saXN0ICptcnAgPSAmcDJtLT5w b2QubXJwOwogCi0gICAgQVNTRVJUKGdmbiAhPSBJTlZBTElEX0dGTik7CisgICAgQVNTRVJUKGdm biAhPSBnZm5feChJTlZBTElEX0dGTikpOwogCiAgICAgbXJwLT5saXN0W21ycC0+aWR4KytdID0K ICAgICAgICAgZ2ZuIHwgKG9yZGVyID09IFBBR0VfT1JERVJfMk0gPyBQT0RfTEFTVF9TVVBFUlBB R0UgOiAwKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4 Ni9tbS9wMm0uYwppbmRleCBiOTNjOGEyLi5mZjBjY2U4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvbW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC03Niw3ICs3Niw3IEBA IHN0YXRpYyBpbnQgcDJtX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHAybV9k b21haW4gKnAybSkKICAgICBwMm0tPm5wMm1fYmFzZSA9IFAyTV9CQVNFX0VBRERSOwogCiAgICAg Zm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHAybS0+cG9kLm1ycC5saXN0KTsgKytpICkKLSAg ICAgICAgcDJtLT5wb2QubXJwLmxpc3RbaV0gPSBJTlZBTElEX0dGTjsKKyAgICAgICAgcDJtLT5w b2QubXJwLmxpc3RbaV0gPSBnZm5feChJTlZBTElEX0dGTik7CiAKICAgICBpZiAoIGhhcF9lbmFi bGVkKGQpICYmIGNwdV9oYXNfdm14ICkKICAgICAgICAgcmV0ID0gZXB0X3AybV9pbml0KHAybSk7 CkBAIC0xODYzLDcgKzE4NjMsNyBAQCBsb25nIHAybV9zZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9t YWluICpkLCBnZm5fdCBnZm4sIHVpbnQzMl90IG5yLAogICAgIH0KIAogICAgIC8qIElmIHJlcXVl c3QgdG8gc2V0IGRlZmF1bHQgYWNjZXNzLiAqLwotICAgIGlmICggZ2ZuX3goZ2ZuKSA9PSBJTlZB TElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikgKQogICAgIHsKICAg ICAgICAgcDJtLT5kZWZhdWx0X2FjY2VzcyA9IGE7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTkz Miw3ICsxOTMyLDcgQEAgaW50IHAybV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBn Zm5fdCBnZm4sIHhlbm1lbV9hY2Nlc3NfdCAqYWNjZXNzKQogICAgIH07CiAKICAgICAvKiBJZiBy ZXF1ZXN0IHRvIGdldCBkZWZhdWx0IGFjY2Vzcy4gKi8KLSAgICBpZiAoIGdmbl94KGdmbikgPT0g SU5WQUxJRF9HRk4gKQorICAgIGlmICggZ2ZuX2VxKGdmbiwgSU5WQUxJRF9HRk4pICkKICAgICB7 CiAgICAgICAgICphY2Nlc3MgPSBtZW1hY2Nlc3NbcDJtLT5kZWZhdWx0X2FjY2Vzc107CiAgICAg ICAgIHJldHVybiAwOwpAQCAtMjExMyw4ICsyMTEzLDggQEAgdW5zaWduZWQgbG9uZyBwYWdpbmdf Z3ZhX3RvX2dmbihzdHJ1Y3QgdmNwdSAqdiwKICAgICAgICAgbW9kZSA9IHBhZ2luZ19nZXRfbmVz dGVkbW9kZSh2KTsKICAgICAgICAgbDJfZ2ZuID0gbW9kZS0+Z3ZhX3RvX2dmbih2LCBwMm0sIHZh LCBwZmVjKTsKIAotICAgICAgICBpZiAoIGwyX2dmbiA9PSBJTlZBTElEX0dGTiApCi0gICAgICAg ICAgICByZXR1cm4gSU5WQUxJRF9HRk47CisgICAgICAgIGlmICggbDJfZ2ZuID09IGdmbl94KElO VkFMSURfR0ZOKSApCisgICAgICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogCiAg ICAgICAgIC8qIHRyYW5zbGF0ZSBsMiBndWVzdCBnZm4gaW50byBsMSBndWVzdCBnZm4gKi8KICAg ICAgICAgcnYgPSBuZXN0ZWRoYXBfd2Fsa19MMV9wMm0odiwgbDJfZ2ZuLCAmbDFfZ2ZuLCAmbDFf cGFnZV9vcmRlciwgJmwxX3AybWEsCkBAIC0yMTIzLDcgKzIxMjMsNyBAQCB1bnNpZ25lZCBsb25n IHBhZ2luZ19ndmFfdG9fZ2ZuKHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAhISgqcGZlYyAmIFBGRUNfaW5zbl9mZXRjaCkpOwogCiAgICAgICAgIGlm ICggcnYgIT0gTkVTVEVESFZNX1BBR0VGQVVMVF9ET05FICkKLSAgICAgICAgICAgIHJldHVybiBJ TlZBTElEX0dGTjsKKyAgICAgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7CiAKICAg ICAgICAgLyoKICAgICAgICAgICogU2FuaXR5IGNoZWNrIHRoYXQgbDFfZ2ZuIGNhbiBiZSB1c2Vk IHByb3Blcmx5IGFzIGEgNEsgbWFwcGluZywgZXZlbgpAQCAtMjQxNSw3ICsyNDE1LDcgQEAgc3Rh dGljIHZvaWQgcDJtX2luaXRfYWx0cDJtX2hlbHBlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBpbnQgaSkKICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJt W2ldOwogICAgIHN0cnVjdCBlcHRfZGF0YSAqZXB0OwogCi0gICAgcDJtLT5taW5fcmVtYXBwZWRf Z2ZuID0gSU5WQUxJRF9HRk47CisgICAgcDJtLT5taW5fcmVtYXBwZWRfZ2ZuID0gZ2ZuX3goSU5W QUxJRF9HRk4pOwogICAgIHAybS0+bWF4X3JlbWFwcGVkX2dmbiA9IDA7CiAgICAgZXB0ID0gJnAy bS0+ZXB0OwogICAgIGVwdC0+YXNyID0gcGFnZXRhYmxlX2dldF9wZm4ocDJtX2dldF9wYWdldGFi bGUocDJtKSk7CkBAIC0yNTUxLDcgKzI1NTEsNyBAQCBpbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2Zu KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCiAKICAgICBtZm4gPSBhcDJtLT5n ZXRfZW50cnkoYXAybSwgZ2ZuX3gob2xkX2dmbiksICZ0LCAmYSwgMCwgTlVMTCwgTlVMTCk7CiAK LSAgICBpZiAoIGdmbl94KG5ld19nZm4pID09IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbl9l cShuZXdfZ2ZuLCBJTlZBTElEX0dGTikgKQogICAgIHsKICAgICAgICAgaWYgKCBtZm5fdmFsaWQo bWZuKSApCiAgICAgICAgICAgICBwMm1fcmVtb3ZlX3BhZ2UoYXAybSwgZ2ZuX3gob2xkX2dmbiks IG1mbl94KG1mbiksIFBBR0VfT1JERVJfNEspOwpAQCAtMjYxMyw3ICsyNjEzLDcgQEAgc3RhdGlj IHZvaWQgcDJtX3Jlc2V0X2FsdHAybShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQogICAgIC8qIFVu aW5pdCBhbmQgcmVpbml0IGVwdCB0byBmb3JjZSBUTEIgc2hvb3Rkb3duICovCiAgICAgZXB0X3Ay bV91bmluaXQocDJtKTsKICAgICBlcHRfcDJtX2luaXQocDJtKTsKLSAgICBwMm0tPm1pbl9yZW1h cHBlZF9nZm4gPSBJTlZBTElEX0dGTjsKKyAgICBwMm0tPm1pbl9yZW1hcHBlZF9nZm4gPSBnZm5f eChJTlZBTElEX0dGTik7CiAgICAgcDJtLT5tYXhfcmVtYXBwZWRfZ2ZuID0gMDsKIH0KIApkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyBiL3hlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvY29tbW9uLmMKaW5kZXggNDI5MjdlNC4uYzIyMzYyZiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93 L2NvbW1vbi5jCkBAIC0xNzA3LDcgKzE3MDcsNyBAQCBzdGF0aWMgbWZuX3QgZW11bGF0ZV9ndmFf dG9fbWZuKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIHZhZGRyLAogCiAgICAgLyogVHJh bnNsYXRlIHRoZSBWQSB0byBhIEdGTi4gKi8KICAgICBnZm4gPSBwYWdpbmdfZ2V0X2hvc3Rtb2Rl KHYpLT5ndmFfdG9fZ2ZuKHYsIE5VTEwsIHZhZGRyLCAmcGZlYyk7Ci0gICAgaWYgKCBnZm4gPT0g SU5WQUxJRF9HRk4gKQorICAgIGlmICggZ2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCiAgICAg ewogICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKICAgICAgICAgICAgIGh2bV9pbmplY3Rf cGFnZV9mYXVsdChwZmVjLCB2YWRkcik7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hh ZG93L211bHRpLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKaW5kZXggZjg5MmUy Zi4uZTU0YzhiNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpAQCAtMzY2MCw3ICszNjYwLDcgQEAg c2hfZ3ZhX3RvX2dmbihzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAg ICAgICAgICovCiAgICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikgJiYgIWh2bV9ueF9lbmFibGVk KHYpICYmICFodm1fc21lcF9lbmFibGVkKHYpICkKICAgICAgICAgICAgIHBmZWNbMF0gJj0gflBG RUNfaW5zbl9mZXRjaDsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfR0ZOOworICAgICAgICByZXR1 cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgIH0KICAgICBnZm4gPSBndWVzdF93YWxrX3RvX2dm bigmZ3cpOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCBi L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCmluZGV4IGM0MjRhZDYuLjgyNDc5NmYg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCisrKyBiL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCkBAIC03OTYsNyArNzk2LDcgQEAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nIHZ0bGJfbG9va3VwKHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmEsIHVpbnQzMl90 IHBmZWMpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBwYWdlX251bWJlciA9IHZhID4+IFBBR0VfU0hJ RlQ7Ci0gICAgdW5zaWduZWQgbG9uZyBmcmFtZV9udW1iZXIgPSBJTlZBTElEX0dGTjsKKyAgICB1 bnNpZ25lZCBsb25nIGZyYW1lX251bWJlciA9IGdmbl94KElOVkFMSURfR0ZOKTsKICAgICBpbnQg aSA9IHZ0bGJfaGFzaChwYWdlX251bWJlcik7CiAKICAgICBzcGluX2xvY2soJnYtPmFyY2gucGFn aW5nLnZ0bGJfbG9jayk7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQv aW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKaW5k ZXggYzc1ODQ1OS4uYjhjMGE0OCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YW1kL2lvbW11X21hcC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYwpAQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIHVuc2lnbmVkIGxvbmcgb2xk X3Jvb3RfbWZuOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwog Ci0gICAgaWYgKCBnZm4gPT0gSU5WQUxJRF9HRk4gKQorICAgIGlmICggZ2ZuID09IGdmbl94KElO VkFMSURfR0ZOKSApCiAgICAgICAgIHJldHVybiAtRUFERFJOT1RBVkFJTDsKICAgICBBU1NFUlQo IShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwogCmRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5jCmluZGV4IGYwMTA2MTIuLmMzMjJiOWYgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5jCkBAIC02MTEsNyArNjExLDcgQEAgc3RhdGljIGludCBfX211c3RfY2hl Y2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgaWYgKCBpb21t dV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIHBh Z2VfY291bnQgIT0gMSB8fCBnZm4gPT0gSU5WQUxJRF9HRk4gKQorICAgICAgICBpZiAoIHBhZ2Vf Y291bnQgIT0gMSB8fCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgIHJj ID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAg IGVsc2UKQEAgLTY0MCw3ICs2NDAsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9m bHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAogCiBzdGF0aWMgaW50IF9fbXVzdF9j aGVjayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICByZXR1 cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgSU5WQUxJRF9HRk4sIDAsIDApOworICAgIHJldHVybiBp b21tdV9mbHVzaF9pb3RsYihkLCBnZm5feChJTlZBTElEX0dGTiksIDAsIDApOwogfQogCiAvKiBj bGVhciBvbmUgcGFnZSdzIHBhZ2UgdGFibGUgKi8KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3g4Ni9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11 LmMKaW5kZXggY2Q0MzVkNy4uNjljZDZjNSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gveDg2L2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11 LmMKQEAgLTYxLDcgKzYxLDcgQEAgaW50IGFyY2hfaW9tbXVfcG9wdWxhdGVfcGFnZV90YWJsZShz dHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBwYWdlX3Rv X21mbihwYWdlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0gbWZuX3RvX2dtZm4o ZCwgbWZuKTsKIAotICAgICAgICAgICAgaWYgKCBnZm4gIT0gSU5WQUxJRF9HRk4gKQorICAgICAg ICAgICAgaWYgKCBnZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURU SCkpOwogICAgICAgICAgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdmbikpOwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9n dWVzdF9wdC5oCmluZGV4IGE4ZDk4MGMuLjc5ZWQ0ZmYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvZ3Vlc3RfcHQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmgK QEAgLTMyLDcgKzMyLDcgQEAKICNlcnJvciBHVUVTVF9QQUdJTkdfTEVWRUxTIG5vdCBkZWZpbmVk CiAjZW5kaWYKIAotI2RlZmluZSBWQUxJRF9HRk4obSkgKG0gIT0gSU5WQUxJRF9HRk4pCisjZGVm aW5lIFZBTElEX0dGTihtKSAobSAhPSBnZm5feChJTlZBTElEX0dGTikpCiAKIHN0YXRpYyBpbmxp bmUgaW50CiB2YWxpZF9nZm4oZ2ZuX3QgbSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW5s aW5lIGdmbl90CiBndWVzdF93YWxrX3RvX2dmbih3YWxrX3QgKmd3KQogewogICAgIGlmICggIShn dWVzdF9sMWVfZ2V0X2ZsYWdzKGd3LT5sMWUpICYgX1BBR0VfUFJFU0VOVCkgKQotICAgICAgICBy ZXR1cm4gX2dmbihJTlZBTElEX0dGTik7CisgICAgICAgIHJldHVybiBJTlZBTElEX0dGTjsKICAg ICByZXR1cm4gZ3Vlc3RfbDFlX2dldF9nZm4oZ3ctPmwxZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4 IDRhYjM1NzQuLjE5NDAyMGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaApAQCAtMzI0LDcgKzMyNCw3IEBAIHN0cnVj dCBwMm1fZG9tYWluIHsKICNkZWZpbmUgTlJfUE9EX01SUF9FTlRSSUVTIDMyCiAKIC8qIEVuY29k ZSBPUkRFUl8yTSBzdXBlcnBhZ2UgaW4gdG9wIGJpdCBvZiBHRk4gKi8KLSNkZWZpbmUgUE9EX0xB U1RfU1VQRVJQQUdFIChJTlZBTElEX0dGTiAmIH4oSU5WQUxJRF9HRk4gPj4gMSkpCisjZGVmaW5l IFBPRF9MQVNUX1NVUEVSUEFHRSAoZ2ZuX3goSU5WQUxJRF9HRk4pICYgfihnZm5feChJTlZBTElE X0dGTikgPj4gMSkpCiAKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGlzdFtOUl9QT0RfTVJQ X0VOVFJJRVNdOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkeDsKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKaW5kZXggN2YyMDdlYy4u NThiYzBiOCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL21tLmgKKysrIGIveGVuL2luY2x1 ZGUveGVuL21tLmgKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGlubGluZSBib29sX3QgbWZuX2Vx KG1mbl90IHgsIG1mbl90IHkpCiAKIFRZUEVfU0FGRSh1bnNpZ25lZCBsb25nLCBnZm4pOwogI2Rl ZmluZSBQUklfZ2ZuICAgICAgICAgICIwNWx4IgotI2RlZmluZSBJTlZBTElEX0dGTiAgICAgICh+ MFVMKQorI2RlZmluZSBJTlZBTElEX0dGTiAgICAgIF9nZm4ofjBVTCkKIAogI2lmbmRlZiBnZm5f dAogI2RlZmluZSBnZm5fdCAvKiBHcmVwIGZvZGRlcjogZ2ZuX3QsIF9nZm4oKSBhbmQgZ2ZuX3go KSBhcmUgZGVmaW5lZCBhYm92ZSAqLwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK