From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v5 07/17] xen: Use a typesafe to define INVALID_GFN Date: Tue, 28 Jun 2016 17:17:13 +0100 Message-ID: <1467130643-23868-8-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: Kevin Tian , sstabellini@kernel.org, Feng Wu , Suravee Suthikulpanit , Jun Nakajima , Andrew Cooper , Tim Deegan , George Dunlap , Julien Grall , Paul Durrant , Jan Beulich , Mukesh Rathor , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org QWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8g dGhlIHR5cGVzYWZlIGdmbi4KClNpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+CgotLS0KQ2M6IE11a2VzaCBSYXRob3IgPG11a2VzaC5yYXRob3JAb3JhY2xl LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVy cmFudEBjaXRyaXguY29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3Jh Y2xlLmNvbT4KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0 QGFtZC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBL ZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3Jn ZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzog RmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5jb20+CgogICAgQ2hhbmdlcyBpbiB2NToKICAgICAgICAt IFBhdGNoIGFkZGVkCi0tLQogeGVuL2FyY2gvYXJtL3AybS5jICAgICAgICAgICAgICAgICAgICAg IHwgIDQgKystLQogeGVuL2FyY2gveDg2L2RlYnVnLmMgICAgICAgICAgICAgICAgICAgIHwgMTgg KysrKysrKysrLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAgICAgICAg ICAgfCAgMiArLQogeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAgICAgIHwgIDcg KysrKy0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgICAgICAgIHwgIDYgKysr LS0tCiB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICAgICAgICAgfCAgOCArKysrLS0t LQogeGVuL2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMgICAgICAgIHwgIDIgKy0KIHhlbi9h cmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgICAgICAgICB8ICA2ICsrKy0tLQogeGVuL2FyY2gv eDg2L21tL2FsdHAybS5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9o YXAvZ3Vlc3Rfd2Fsay5jICAgICAgICB8IDEwICsrKysrLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9o YXAvbmVzdGVkX2VwdC5jICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5j ICAgICAgICAgICAgICAgfCAgNiArKystLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAg ICAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3NoYWRv dy9jb21tb24uYyAgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGku YyAgICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCAgICAg ICAgfCAgMiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jIHwgIDIg Ky0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICB8ICA0ICsrLS0KIHhl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICB8ICAyICstCiB4ZW4vaW5jbHVk ZS9hc20teDg2L2d1ZXN0X3B0LmggICAgICAgICAgfCAgNCArKy0tCiB4ZW4vaW5jbHVkZS9hc20t eDg2L3AybS5oICAgICAgICAgICAgICAgfCAgMiArLQogeGVuL2luY2x1ZGUveGVuL21tLmggICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMo KyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hl bi9hcmNoL2FybS9wMm0uYwppbmRleCBkNjkwNjAyLi5jOTM4ZGRlIDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vcDJtLmMKKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCkBAIC00NzksNyArNDc5LDcg QEAgc3RhdGljIGludCBfX3AybV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBnZm5f dCBnZm4sCiAgICAgfQogCiAgICAgLyogSWYgcmVxdWVzdCB0byBnZXQgZGVmYXVsdCBhY2Nlc3Mu ICovCi0gICAgaWYgKCBnZm5feChnZm4pID09IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbl9l cShnZm4sIElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAgICAqYWNjZXNzID0gbWVtYWNjZXNz W3AybS0+ZGVmYXVsdF9hY2Nlc3NdOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4NzksNyArMTg3 OSw3IEBAIGxvbmcgcDJtX3NldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdm biwgdWludDMyX3QgbnIsCiAgICAgcDJtLT5tZW1fYWNjZXNzX2VuYWJsZWQgPSB0cnVlOwogCiAg ICAgLyogSWYgcmVxdWVzdCB0byBzZXQgZGVmYXVsdCBhY2Nlc3MuICovCi0gICAgaWYgKCBnZm5f eChnZm4pID09IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbl9lcShnZm4sIElOVkFMSURfR0ZO KSApCiAgICAgewogICAgICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzID0gYTsKICAgICAgICAgcmV0 dXJuIDA7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZGVidWcuYyBiL3hlbi9hcmNoL3g4Ni9k ZWJ1Zy5jCmluZGV4IDM0NzlmN2MuLjFjZTBlODkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9k ZWJ1Zy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jCkBAIC00NCw4ICs0NCw3IEBAIHR5cGVk ZWYgdW5zaWduZWQgY2hhciBkYmdieXRlX3Q7CiAKIC8qIFJldHVybnM6IG1mbiBmb3IgdGhlIGdp dmVuIChodm0gZ3Vlc3QpIHZhZGRyICovCiBzdGF0aWMgbWZuX3QKLWRiZ19odm1fdmEybWZuKGRi Z3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQgdG9hZGRyLAotICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgKmdmbikKK2RiZ19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0 cnVjdCBkb21haW4gKmRwLCBpbnQgdG9hZGRyLCBnZm5fdCAqZ2ZuKQogewogICAgIG1mbl90IG1m bjsKICAgICB1aW50MzJfdCBwZmVjID0gUEZFQ19wYWdlX3ByZXNlbnQ7CkBAIC01MywxNCArNTIs MTQgQEAgZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGlu dCB0b2FkZHIsCiAKICAgICBEQkdQMigidmFkZHI6JWx4IGRvbWlkOiVkXG4iLCB2YWRkciwgZHAt PmRvbWFpbl9pZCk7CiAKLSAgICAqZ2ZuID0gcGFnaW5nX2d2YV90b19nZm4oZHAtPnZjcHVbMF0s IHZhZGRyLCAmcGZlYyk7Ci0gICAgaWYgKCAqZ2ZuID09IElOVkFMSURfR0ZOICkKKyAgICAqZ2Zu ID0gX2dmbihwYWdpbmdfZ3ZhX3RvX2dmbihkcC0+dmNwdVswXSwgdmFkZHIsICZwZmVjKSk7Cisg ICAgaWYgKCBnZm5fZXEoKmdmbiwgSU5WQUxJRF9HRk4pICkKICAgICB7CiAgICAgICAgIERCR1Ay KCJrZGI6YmFkIGdmbiBmcm9tIGd2YV90b19nZm5cbiIpOwogICAgICAgICByZXR1cm4gSU5WQUxJ RF9NRk47CiAgICAgfQogCi0gICAgbWZuID0gZ2V0X2dmbihkcCwgKmdmbiwgJmdmbnR5cGUpOwor ICAgIG1mbiA9IGdldF9nZm4oZHAsIGdmbl94KCpnZm4pLCAmZ2ZudHlwZSk7CiAgICAgaWYgKCBw Mm1faXNfcmVhZG9ubHkoZ2ZudHlwZSkgJiYgdG9hZGRyICkKICAgICB7CiAgICAgICAgIERCR1Ay KCJrZGI6cDJtX2lzX3JlYWRvbmx5OiBnZm50eXBlOiV4XG4iLCBnZm50eXBlKTsKQEAgLTcyLDcg KzcxLDcgQEAgZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAs IGludCB0b2FkZHIsCiAKICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAg ewotICAgICAgICBwdXRfZ2ZuKGRwLCAqZ2ZuKTsKKyAgICAgICAgcHV0X2dmbihkcCwgZ2ZuX3go KmdmbikpOwogICAgICAgICAqZ2ZuID0gSU5WQUxJRF9HRk47CiAgICAgfQogCkBAIC0xNjUsNyAr MTY0LDggQEAgdW5zaWduZWQgaW50IGRiZ19yd19ndWVzdF9tZW0oc3RydWN0IGRvbWFpbiAqZHAs IHZvaWQgKiBfX3VzZXIgZ2FkZHIsCiAgICAgICAgIGNoYXIgKnZhOwogICAgICAgICB1bnNpZ25l ZCBsb25nIGFkZHIgPSAodW5zaWduZWQgbG9uZylnYWRkcjsKICAgICAgICAgbWZuX3QgbWZuOwot ICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9IElOVkFMSURfR0ZOLCBwYWdlY250OworICAgICAg ICBnZm5fdCBnZm4gPSBJTlZBTElEX0dGTjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlY250 OwogCiAgICAgICAgIHBhZ2VjbnQgPSBtaW5fdChsb25nLCBQQUdFX1NJWkUgLSAoYWRkciAmIH5Q QUdFX01BU0spLCBsZW4pOwogCkBAIC0xODksOCArMTg5LDggQEAgdW5zaWduZWQgaW50IGRiZ19y d19ndWVzdF9tZW0oc3RydWN0IGRvbWFpbiAqZHAsIHZvaWQgKiBfX3VzZXIgZ2FkZHIsCiAgICAg ICAgIH0KIAogICAgICAgICB1bm1hcF9kb21haW5fcGFnZSh2YSk7Ci0gICAgICAgIGlmICggZ2Zu ICE9IElOVkFMSURfR0ZOICkKLSAgICAgICAgICAgIHB1dF9nZm4oZHAsIGdmbik7CisgICAgICAg IGlmICggIWdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCisgICAgICAgICAgICBwdXRfZ2ZuKGRw LCBnZm5feChnZm4pKTsKIAogICAgICAgICBhZGRyICs9IHBhZ2VjbnQ7CiAgICAgICAgIGJ1ZiAr PSBwYWdlY250OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gv eDg2L2RvbWFpbi5jCmluZGV4IGJiNTkyNDcuLmM4YzdlMmQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTc4Myw3ICs3ODMs NyBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAq IGdmbiA9PSBJTlZBTElEX0dGTiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2hhcmVkX2luZm8gcGFnZSB3 YXMgbmV2ZXIgbWFwcGVkCiAgICAgICogdG8gdGhlIGRvbWFpbidzIGFkZHJlc3Mgc3BhY2UgYW5k IHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVwbGFjZS4KICAgICAgKi8KLSAgICBpZiAoIGdmbiA9PSBJ TlZBTElEX0dGTiApCisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAg ICAgZ290byBleGl0X3B1dF9wYWdlOwogCiAgICAgaWYgKCBtZm5feChnZXRfZ2ZuX3F1ZXJ5KGQs IGdmbiwgJnAybXQpKSAhPSBtZm4gKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9lbXVs YXRlLmMgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwppbmRleCA4NTVhZjRkLi5jNTVhZDdi IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94 ODYvaHZtL2VtdWxhdGUuYwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9s aW5lYXJfdG9fcGh5cygKICAgICAgICAgICAgIHJldHVybiByYzsKICAgICAgICAgcGZuID0gX3Bh ZGRyID4+IFBBR0VfU0hJRlQ7CiAgICAgfQotICAgIGVsc2UgaWYgKCAocGZuID0gcGFnaW5nX2d2 YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpKSA9PSBJTlZBTElEX0dGTiApCisgICAgZWxzZSBp ZiAoIChwZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRyLCAmcGZlYykpID09IGdmbl94 KElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAgICBpZiAoIHBmZWMgJiAoUEZFQ19wYWdlX3Bh Z2VkIHwgUEZFQ19wYWdlX3NoYXJlZCkgKQogICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfUkVU Ulk7CkBAIC00NzIsNyArNDcyLDggQEAgc3RhdGljIGludCBodm1lbXVsX2xpbmVhcl90b19waHlz KAogICAgICAgICBucGZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpOwog CiAgICAgICAgIC8qIElzIGl0IGNvbnRpZ3VvdXMgd2l0aCB0aGUgcHJlY2VkaW5nIFBGTnM/IElm IG5vdCB0aGVuIHdlJ3JlIGRvbmUuICovCi0gICAgICAgIGlmICggKG5wZm4gPT0gSU5WQUxJRF9H Rk4pIHx8IChucGZuICE9IChwZm4gKyAocmV2ZXJzZSA/IC1pIDogaSkpKSApCisgICAgICAgIGlm ICggKG5wZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pKSB8fAorICAgICAgICAgICAgIChucGZuICE9 IChwZm4gKyAocmV2ZXJzZSA/IC1pIDogaSkpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm ICggcGZlYyAmIChQRkVDX3BhZ2VfcGFnZWQgfCBQRkVDX3BhZ2Vfc2hhcmVkKSApCiAgICAgICAg ICAgICAgICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7CkBAIC00ODAsNyArNDgxLDcgQEAgc3RhdGlj IGludCBodm1lbXVsX2xpbmVhcl90b19waHlzKAogICAgICAgICAgICAgaWYgKCBkb25lID09IDAg KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVCghcmV2ZXJzZSk7Ci0gICAg ICAgICAgICAgICAgaWYgKCBucGZuICE9IElOVkFMSURfR0ZOICkKKyAgICAgICAgICAgICAgICBp ZiAoIG5wZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgICAgICAgICAgICAgIGh2bV9pbmplY3RfcGFn ZV9mYXVsdChwZmVjLCBhZGRyICYgUEFHRV9NQVNLKTsKICAgICAgICAgICAgICAgICByZXR1cm4g WDg2RU1VTF9FWENFUFRJT047CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIv eGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCBhOTI5ZTNiLi5iOWZmY2UyIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAg LTMwMzksNyArMzAzOSw3IEBAIHN0YXRpYyBlbnVtIGh2bV9jb3B5X3Jlc3VsdCBfX2h2bV9jb3B5 KAogICAgICAgICBpZiAoIGZsYWdzICYgSFZNQ09QWV92aXJ0ICkKICAgICAgICAgewogICAgICAg ICAgICAgZ2ZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpOwotICAgICAg ICAgICAgaWYgKCBnZm4gPT0gSU5WQUxJRF9HRk4gKQorICAgICAgICAgICAgaWYgKCBnZm4gPT0g Z2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAo IHBmZWMgJiBQRkVDX3BhZ2VfcGFnZWQgKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSFZN Q09QWV9nZm5fcGFnZWRfb3V0OwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgc3RhdGljIGVudW0gaHZt X2NvcHlfcmVzdWx0IF9faHZtX2NsZWFyKHBhZGRyX3QgYWRkciwgaW50IHNpemUpCiAgICAgICAg IGNvdW50ID0gbWluX3QoaW50LCBQQUdFX1NJWkUgLSAoYWRkciAmIH5QQUdFX01BU0spLCB0b2Rv KTsKIAogICAgICAgICBnZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRyLCAmcGZlYyk7 Ci0gICAgICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKKyAgICAgICAgaWYgKCBnZm4gPT0g Z2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBwZmVjICYg UEZFQ19wYWdlX3BhZ2VkICkKICAgICAgICAgICAgICAgICByZXR1cm4gSFZNQ09QWV9nZm5fcGFn ZWRfb3V0OwpAQCAtNTI5OCw3ICs1Mjk4LDcgQEAgc3RhdGljIGludCBkb19hbHRwMm1fb3AoCiAg ICAgICAgICAgICAgYS51LmVuYWJsZV9ub3RpZnkudmNwdV9pZCAhPSBjdXJyLT52Y3B1X2lkICkK ICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKIAotICAgICAgICBpZiAoIChnZm5feCh2Y3B1X2Fs dHAybShjdXJyKS52ZWluZm9fZ2ZuKSAhPSBJTlZBTElEX0dGTikgfHwKKyAgICAgICAgaWYgKCAo IWdmbl9lcSh2Y3B1X2FsdHAybShjdXJyKS52ZWluZm9fZ2ZuLCAgSU5WQUxJRF9HRk4pKSB8fAog ICAgICAgICAgICAgIChtZm5fZXEoZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyLT5kb21haW4s CiAgICAgICAgICAgICAgICAgICAgICBhLnUuZW5hYmxlX25vdGlmeS5nZm4sICZwMm10KSwgSU5W QUxJRF9NRk4pKSApCiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCA3 MTQ4YWM0Li5kMjI0NWUyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysr IGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIHZv aWQgaHZtX2ZyZWVfaW9yZXFfZ21mbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdt Zm4pCiB7CiAgICAgdW5zaWduZWQgaW50IGkgPSBnbWZuIC0gZC0+YXJjaC5odm1fZG9tYWluLmlv cmVxX2dtZm4uYmFzZTsKIAotICAgIGlmICggZ21mbiAhPSBJTlZBTElEX0dGTiApCisgICAgaWYg KCBnbWZuICE9IGdmbl94KElOVkFMSURfR0ZOKSApCiAgICAgICAgIHNldF9iaXQoaSwgJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9nbWZuLm1hc2spOwogfQogCkBAIC00MjAsNyArNDIwLDcgQEAg c3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKICAgICBpZiAoIHJjICkKICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgaWYgKCBi dWZpb3JlcV9wZm4gIT0gSU5WQUxJRF9HRk4gKQorICAgIGlmICggYnVmaW9yZXFfcGZuICE9IGdm bl94KElOVkFMSURfR0ZOKSApCiAgICAgICAgIHJjID0gaHZtX21hcF9pb3JlcV9wYWdlKHMsIDEs IGJ1ZmlvcmVxX3Bmbik7CiAKICAgICBpZiAoIHJjICkKQEAgLTQzNCw4ICs0MzQsOCBAQCBzdGF0 aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGhh bmRsZV9idWZpb3JlcSkKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gcy0+ZG9tYWluOwotICAg IHVuc2lnbmVkIGxvbmcgaW9yZXFfcGZuID0gSU5WQUxJRF9HRk47Ci0gICAgdW5zaWduZWQgbG9u ZyBidWZpb3JlcV9wZm4gPSBJTlZBTElEX0dGTjsKKyAgICB1bnNpZ25lZCBsb25nIGlvcmVxX3Bm biA9IGdmbl94KElOVkFMSURfR0ZOKTsKKyAgICB1bnNpZ25lZCBsb25nIGJ1ZmlvcmVxX3BmbiA9 IGdmbl94KElOVkFMSURfR0ZOKTsKICAgICBpbnQgcmM7CiAKICAgICBpZiAoIGlzX2RlZmF1bHQg KQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMgYi94ZW4vYXJj aC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYwppbmRleCA5ZDJhYzA5Li5mOWIzOGFiIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYworKysgYi94ZW4vYXJjaC94ODYv aHZtL3N2bS9uZXN0ZWRzdm0uYwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgbnN2bV9oYXBfd2Fsa19M MV9wMm0oc3RydWN0IHZjcHUgKnYsIHBhZGRyX3QgTDJfZ3BhLCBwYWRkcl90ICpMMV9ncGEsCiAg ICAgLyogV2FsayB0aGUgZ3Vlc3Qtc3VwcGxpZWQgTlBUIHRhYmxlLCBqdXN0IGFzIGlmIGl0IHdl cmUgYSBwYWdldGFibGUgKi8KICAgICBnZm4gPSBwYWdpbmdfZ2FfdG9fZ2ZuX2NyMyh2LCBuZXN0 ZWRfY3IzLCBMMl9ncGEsICZwZmVjLCBwYWdlX29yZGVyKTsKIAotICAgIGlmICggZ2ZuID09IElO VkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAg ICByZXR1cm4gTkVTVEVESFZNX1BBR0VGQVVMVF9JTkpFQ1Q7CiAKICAgICAqTDFfZ3BhID0gKGdm biA8PCBQQUdFX1NISUZUKSArIChMMl9ncGEgJiB+UEFHRV9NQVNLKTsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5k ZXggODg4YTZiMS4uYjIwM2EwNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14 LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKQEAgLTIwNTcsMTMgKzIwNTcsMTMg QEAgc3RhdGljIGludCB2bXhfdmNwdV9lbXVsYXRlX3ZtZnVuYyhzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKIHN0YXRpYyBib29sX3Qgdm14X3ZjcHVfZW11bGF0ZV92ZShzdHJ1Y3QgdmNwdSAq dikKIHsKICAgICBib29sX3QgcmMgPSAwLCB3cml0YWJsZTsKLSAgICB1bnNpZ25lZCBsb25nIGdm biA9IGdmbl94KHZjcHVfYWx0cDJtKHYpLnZlaW5mb19nZm4pOworICAgIGdmbl90IGdmbiA9IHZj cHVfYWx0cDJtKHYpLnZlaW5mb19nZm47CiAgICAgdmVfaW5mb190ICp2ZWluZm87CiAKLSAgICBp ZiAoIGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dG TikgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHZlaW5mbyA9IGh2bV9tYXBfZ3Vlc3RfZnJh bWVfcncoZ2ZuLCAwLCAmd3JpdGFibGUpOworICAgIHZlaW5mbyA9IGh2bV9tYXBfZ3Vlc3RfZnJh bWVfcncoZ2ZuX3goZ2ZuKSwgMCwgJndyaXRhYmxlKTsKICAgICBpZiAoICF2ZWluZm8gKQogICAg ICAgICByZXR1cm4gMDsKICAgICBpZiAoICF3cml0YWJsZSB8fCB2ZWluZm8tPnNlbWFwaG9yZSAh PSAwICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9hbHRwMm0uYyBiL3hlbi9hcmNoL3g4 Ni9tbS9hbHRwMm0uYwppbmRleCAxMDYwNWM4Li45MzBiZGMyIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0vYWx0cDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2FsdHAybS5jCkBAIC0yNiw3 ICsyNiw3IEBAIGFsdHAybV92Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQogICAgIHN0cnVjdCBh bHRwMm12Y3B1ICphdiA9ICZ2Y3B1X2FsdHAybSh2KTsKIAogICAgIGF2LT5wMm1pZHggPSBJTlZB TElEX0FMVFAyTTsKLSAgICBhdi0+dmVpbmZvX2dmbiA9IF9nZm4oSU5WQUxJRF9HRk4pOworICAg IGF2LT52ZWluZm9fZ2ZuID0gSU5WQUxJRF9HRk47CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVz dF93YWxrLmMKaW5kZXggZDI3MTZmOS4uMWIxYTE1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L21tL2hhcC9ndWVzdF93YWxrLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxr LmMKQEAgLTcwLDE0ICs3MCwxNCBAQCB1bnNpZ25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdV RVNUX1BBR0lOR19MRVZFTFMpKAogICAgICAgICBpZiAoIHRvcF9wYWdlICkKICAgICAgICAgICAg IHB1dF9wYWdlKHRvcF9wYWdlKTsKICAgICAgICAgcDJtX21lbV9wYWdpbmdfcG9wdWxhdGUocDJt LT5kb21haW4sIGNyMyA+PiBQQUdFX1NISUZUKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfR0ZO OworICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgIH0KICAgICBpZiAoIHAy bV9pc19zaGFyZWQocDJtdCkgKQogICAgIHsKICAgICAgICAgcGZlY1swXSA9IFBGRUNfcGFnZV9z aGFyZWQ7CiAgICAgICAgIGlmICggdG9wX3BhZ2UgKQogICAgICAgICAgICAgcHV0X3BhZ2UodG9w X3BhZ2UpOwotICAgICAgICByZXR1cm4gSU5WQUxJRF9HRk47CisgICAgICAgIHJldHVybiBnZm5f eChJTlZBTElEX0dGTik7CiAgICAgfQogICAgIGlmICggIXRvcF9wYWdlICkKICAgICB7CkBAIC0x MTAsMTIgKzExMCwxMiBAQCB1bnNpZ25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BB R0lOR19MRVZFTFMpKAogICAgICAgICAgICAgQVNTRVJUKHAybV9pc19ob3N0cDJtKHAybSkpOwog ICAgICAgICAgICAgcGZlY1swXSA9IFBGRUNfcGFnZV9wYWdlZDsKICAgICAgICAgICAgIHAybV9t ZW1fcGFnaW5nX3BvcHVsYXRlKHAybS0+ZG9tYWluLCBnZm5feChnZm4pKTsKLSAgICAgICAgICAg IHJldHVybiBJTlZBTElEX0dGTjsKKyAgICAgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dG Tik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpICkKICAgICAg ICAgewogICAgICAgICAgICAgcGZlY1swXSA9IFBGRUNfcGFnZV9zaGFyZWQ7Ci0gICAgICAgICAg ICByZXR1cm4gSU5WQUxJRF9HRk47CisgICAgICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9H Rk4pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCBwYWdlX29yZGVyICkKQEAgLTE0Nyw3ICsx NDcsNyBAQCB1bnNpZ25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZF TFMpKAogICAgIGlmICggIWh2bV9ueF9lbmFibGVkKHYpICYmICFodm1fc21lcF9lbmFibGVkKHYp ICkKICAgICAgICAgcGZlY1swXSAmPSB+UEZFQ19pbnNuX2ZldGNoOwogCi0gICAgcmV0dXJuIElO VkFMSURfR0ZOOworICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7CiB9CiAKIApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0v aGFwL25lc3RlZF9lcHQuYwppbmRleCA5NGNmODMyLi4wMmIyN2IxIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYworKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25l c3RlZF9lcHQuYwpAQCAtMjM2LDcgKzIzNiw3IEBAIGludCBuZXB0X3RyYW5zbGF0ZV9sMmdhKHN0 cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGwyZ2EsCiAgICAgZXB0X3dhbGtfdCBndzsKICAgICByd3hf YWNjICY9IEVQVEVfUldYX01BU0s7CiAKLSAgICAqbDFnZm4gPSBJTlZBTElEX0dGTjsKKyAgICAq bDFnZm4gPSBnZm5feChJTlZBTElEX0dGTik7CiAKICAgICByYyA9IG5lcHRfd2Fsa190YWJsZXMo diwgbDJnYSwgJmd3KTsKICAgICBzd2l0Y2ggKCByYyApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbW0vcDJtLXBvZC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYwppbmRleCBmMzg0NTg5 Li4xNDlmNTI5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lk IHBvZF9lYWdlcl9yZWNsYWltKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCiAgICAgICAgIHVuc2ln bmVkIGludCBpZHggPSAobXJwLT5pZHggKyBpKyspICUgQVJSQVlfU0laRShtcnAtPmxpc3QpOwog ICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9IG1ycC0+bGlzdFtpZHhdOwogCi0gICAgICAgIGlm ICggZ2ZuICE9IElOVkFMSURfR0ZOICkKKyAgICAgICAgaWYgKCBnZm4gIT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBnZm4gJiBQT0RfTEFTVF9TVVBF UlBBR0UgKQogICAgICAgICAgICAgewpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgc3RhdGljIHZvaWQg cG9kX2VhZ2VyX3JlY2xhaW0oc3RydWN0IHAybV9kb21haW4gKnAybSkKICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgICBwMm1fcG9kX3plcm9fY2hlY2socDJtLCAmZ2ZuLCAxKTsKIAot ICAgICAgICAgICAgbXJwLT5saXN0W2lkeF0gPSBJTlZBTElEX0dGTjsKKyAgICAgICAgICAgIG1y cC0+bGlzdFtpZHhdID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgICAgICB9CiAKICAgICB9IHdo aWxlICggKHAybS0+cG9kLmNvdW50ID09IDApICYmIChpIDwgQVJSQVlfU0laRShtcnAtPmxpc3Qp KSApOwpAQCAtMTAzMSw3ICsxMDMxLDcgQEAgc3RhdGljIHZvaWQgcG9kX2VhZ2VyX3JlY29yZChz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogewogICAgIHN0cnVjdCBwb2RfbXJwX2xpc3QgKm1ycCA9 ICZwMm0tPnBvZC5tcnA7CiAKLSAgICBBU1NFUlQoZ2ZuICE9IElOVkFMSURfR0ZOKTsKKyAgICBB U1NFUlQoZ2ZuICE9IGdmbl94KElOVkFMSURfR0ZOKSk7CiAKICAgICBtcnAtPmxpc3RbbXJwLT5p ZHgrK10gPQogICAgICAgICBnZm4gfCAob3JkZXIgPT0gUEFHRV9PUkRFUl8yTSA/IFBPRF9MQVNU X1NVUEVSUEFHRSA6IDApOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVu L2FyY2gveDg2L21tL3AybS5jCmluZGV4IDZmOTA1MTAuLjkwZDNiYWEgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTc2LDcg Kzc2LDcgQEAgc3RhdGljIGludCBwMm1faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtKQogICAgIHAybS0+bnAybV9iYXNlID0gUDJNX0JBU0VfRUFERFI7 CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUocDJtLT5wb2QubXJwLmxpc3QpOyAr K2kgKQotICAgICAgICBwMm0tPnBvZC5tcnAubGlzdFtpXSA9IElOVkFMSURfR0ZOOworICAgICAg ICBwMm0tPnBvZC5tcnAubGlzdFtpXSA9IGdmbl94KElOVkFMSURfR0ZOKTsKIAogICAgIGlmICgg aGFwX2VuYWJsZWQoZCkgJiYgY3B1X2hhc192bXggKQogICAgICAgICByZXQgPSBlcHRfcDJtX2lu aXQocDJtKTsKQEAgLTE4NjMsNyArMTg2Myw3IEBAIGxvbmcgcDJtX3NldF9tZW1fYWNjZXNzKHN0 cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgdWludDMyX3QgbnIsCiAgICAgfQogCiAgICAgLyog SWYgcmVxdWVzdCB0byBzZXQgZGVmYXVsdCBhY2Nlc3MuICovCi0gICAgaWYgKCBnZm5feChnZm4p ID09IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCiAg ICAgewogICAgICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzID0gYTsKICAgICAgICAgcmV0dXJuIDA7 CkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBpbnQgcDJtX2dldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21h aW4gKmQsIGdmbl90IGdmbiwgeGVubWVtX2FjY2Vzc190ICphY2Nlc3MpCiAgICAgfTsKIAogICAg IC8qIElmIHJlcXVlc3QgdG8gZ2V0IGRlZmF1bHQgYWNjZXNzLiAqLwotICAgIGlmICggZ2ZuX3go Z2ZuKSA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikg KQogICAgIHsKICAgICAgICAgKmFjY2VzcyA9IG1lbWFjY2Vzc1twMm0tPmRlZmF1bHRfYWNjZXNz XTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTEzLDggKzIxMTMsOCBAQCB1bnNpZ25lZCBsb25n IHBhZ2luZ19ndmFfdG9fZ2ZuKHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICBtb2RlID0gcGFnaW5n X2dldF9uZXN0ZWRtb2RlKHYpOwogICAgICAgICBsMl9nZm4gPSBtb2RlLT5ndmFfdG9fZ2ZuKHYs IHAybSwgdmEsIHBmZWMpOwogCi0gICAgICAgIGlmICggbDJfZ2ZuID09IElOVkFMSURfR0ZOICkK LSAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0dGTjsKKyAgICAgICAgaWYgKCBsMl9nZm4gPT0g Z2ZuX3goSU5WQUxJRF9HRk4pICkKKyAgICAgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dG Tik7CiAKICAgICAgICAgLyogdHJhbnNsYXRlIGwyIGd1ZXN0IGdmbiBpbnRvIGwxIGd1ZXN0IGdm biAqLwogICAgICAgICBydiA9IG5lc3RlZGhhcF93YWxrX0wxX3AybSh2LCBsMl9nZm4sICZsMV9n Zm4sICZsMV9wYWdlX29yZGVyLCAmbDFfcDJtYSwKQEAgLTIxMjMsNyArMjEyMyw3IEBAIHVuc2ln bmVkIGxvbmcgcGFnaW5nX2d2YV90b19nZm4oc3RydWN0IHZjcHUgKnYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEhKCpwZmVjICYgUEZFQ19pbnNuX2ZldGNoKSk7CiAKICAg ICAgICAgaWYgKCBydiAhPSBORVNURURIVk1fUEFHRUZBVUxUX0RPTkUgKQotICAgICAgICAgICAg cmV0dXJuIElOVkFMSURfR0ZOOworICAgICAgICAgICAgcmV0dXJuIGdmbl94KElOVkFMSURfR0ZO KTsKIAogICAgICAgICAvKgogICAgICAgICAgKiBTYW5pdHkgY2hlY2sgdGhhdCBsMV9nZm4gY2Fu IGJlIHVzZWQgcHJvcGVybHkgYXMgYSA0SyBtYXBwaW5nLCBldmVuCkBAIC0yNDE1LDcgKzI0MTUs NyBAQCBzdGF0aWMgdm9pZCBwMm1faW5pdF9hbHRwMm1faGVscGVyKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBpKQogICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBkLT5hcmNoLmFs dHAybV9wMm1baV07CiAgICAgc3RydWN0IGVwdF9kYXRhICplcHQ7CiAKLSAgICBwMm0tPm1pbl9y ZW1hcHBlZF9nZm4gPSBJTlZBTElEX0dGTjsKKyAgICBwMm0tPm1pbl9yZW1hcHBlZF9nZm4gPSBn Zm5feChJTlZBTElEX0dGTik7CiAgICAgcDJtLT5tYXhfcmVtYXBwZWRfZ2ZuID0gMDsKICAgICBl cHQgPSAmcDJtLT5lcHQ7CiAgICAgZXB0LT5hc3IgPSBwYWdldGFibGVfZ2V0X3BmbihwMm1fZ2V0 X3BhZ2V0YWJsZShwMm0pKTsKQEAgLTI1NTEsNyArMjU1MSw3IEBAIGludCBwMm1fY2hhbmdlX2Fs dHAybV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCwKIAogICAgIG1mbiA9 IGFwMm0tPmdldF9lbnRyeShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgJnQsICZhLCAwLCBOVUxMLCBO VUxMKTsKIAotICAgIGlmICggZ2ZuX3gobmV3X2dmbikgPT0gSU5WQUxJRF9HRk4gKQorICAgIGlm ICggZ2ZuX2VxKG5ld19nZm4sIElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAgICBpZiAoIG1m bl92YWxpZChtZm4pICkKICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChv bGRfZ2ZuKSwgbWZuX3gobWZuKSwgUEFHRV9PUkRFUl80Syk7CkBAIC0yNjEzLDcgKzI2MTMsNyBA QCBzdGF0aWMgdm9pZCBwMm1fcmVzZXRfYWx0cDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCiAg ICAgLyogVW5pbml0IGFuZCByZWluaXQgZXB0IHRvIGZvcmNlIFRMQiBzaG9vdGRvd24gKi8KICAg ICBlcHRfcDJtX3VuaW5pdChwMm0pOwogICAgIGVwdF9wMm1faW5pdChwMm0pOwotICAgIHAybS0+ bWluX3JlbWFwcGVkX2dmbiA9IElOVkFMSURfR0ZOOworICAgIHAybS0+bWluX3JlbWFwcGVkX2dm biA9IGdmbl94KElOVkFMSURfR0ZOKTsKICAgICBwMm0tPm1heF9yZW1hcHBlZF9nZm4gPSAwOwog fQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9jb21tb24uYwppbmRleCBjNTFiMzcwLi5lNDhiYTdiIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvY29tbW9uLmMKQEAgLTE3MDgsNyArMTcwOCw3IEBAIHN0YXRpYyBtZm5fdCBlbXVs YXRlX2d2YV90b19tZm4oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmFkZHIsCiAKICAg ICAvKiBUcmFuc2xhdGUgdGhlIFZBIHRvIGEgR0ZOLiAqLwogICAgIGdmbiA9IHBhZ2luZ19nZXRf aG9zdG1vZGUodiktPmd2YV90b19nZm4odiwgTlVMTCwgdmFkZHIsICZwZmVjKTsKLSAgICBpZiAo IGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4p ICkKICAgICB7CiAgICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikgKQogICAgICAgICAgICAgaHZt X2luamVjdF9wYWdlX2ZhdWx0KHBmZWMsIHZhZGRyKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwppbmRl eCBmODkyZTJmLi5lNTRjOGI3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211 bHRpLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCkBAIC0zNjYwLDcgKzM2 NjAsNyBAQCBzaF9ndmFfdG9fZ2ZuKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLAogICAgICAgICAgKi8KICAgICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSAmJiAhaHZtX254 X2VuYWJsZWQodikgJiYgIWh2bV9zbWVwX2VuYWJsZWQodikgKQogICAgICAgICAgICAgcGZlY1sw XSAmPSB+UEZFQ19pbnNuX2ZldGNoOwotICAgICAgICByZXR1cm4gSU5WQUxJRF9HRk47CisgICAg ICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7CiAgICAgfQogICAgIGdmbiA9IGd1ZXN0X3dh bGtfdG9fZ2ZuKCZndyk7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJp dmF0ZS5oIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKaW5kZXggYzQyNGFkNi4u ODI0Nzk2ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKKysr IGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKQEAgLTc5Niw3ICs3OTYsNyBAQCBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdnRsYl9sb29rdXAoc3RydWN0IHZjcHUgKnYsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YSwg dWludDMyX3QgcGZlYykKIHsKICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtYmVyID0gdmEgPj4g UEFHRV9TSElGVDsKLSAgICB1bnNpZ25lZCBsb25nIGZyYW1lX251bWJlciA9IElOVkFMSURfR0ZO OworICAgIHVuc2lnbmVkIGxvbmcgZnJhbWVfbnVtYmVyID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwog ICAgIGludCBpID0gdnRsYl9oYXNoKHBhZ2VfbnVtYmVyKTsKIAogICAgIHNwaW5fbG9jaygmdi0+ YXJjaC5wYWdpbmcudnRsYl9sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9pb21tdV9tYXAuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYwppbmRleCBjNzU4NDU5Li5iOGMwYTQ4IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X21hcC5jCkBAIC01NTUsNyArNTU1LDcgQEAgc3RhdGljIGludCB1cGRhdGVfcGFnaW5n X21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgdW5zaWduZWQg bG9uZyBvbGRfcm9vdF9tZm47CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9t bXUoZCk7CiAKLSAgICBpZiAoIGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm4gPT0g Z2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgcmV0dXJuIC1FQUREUk5PVEFWQUlMOwogICAg IEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRIKSk7CiAKZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggZjAxMDYxMi4uYzMyMmI5ZiAxMDA2NDQKLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBp ZiAoIGlvbW11X2RvbWlkID09IC0xICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg IGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgICAgIGlm ICggcGFnZV9jb3VudCAhPSAxIHx8IGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAg ICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsK ICAgICAgICAgZWxzZQpAQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsCiAKIHN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogewot ICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBJTlZBTElEX0dGTiwgMCwgMCk7CisgICAg cmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGdmbl94KElOVkFMSURfR0ZOKSwgMCwgMCk7CiB9 CiAKIC8qIGNsZWFyIG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAqLwpkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94 ODYvaW9tbXUuYwppbmRleCBjZDQzNWQ3Li42OWNkNmM1IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94 ODYvaW9tbXUuYwpAQCAtNjEsNyArNjEsNyBAQCBpbnQgYXJjaF9pb21tdV9wb3B1bGF0ZV9wYWdl X3RhYmxlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9 IHBhZ2VfdG9fbWZuKHBhZ2UpOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtZm5f dG9fZ21mbihkLCBtZm4pOwogCi0gICAgICAgICAgICBpZiAoIGdmbiAhPSBJTlZBTElEX0dGTiAp CisgICAgICAgICAgICBpZiAoIGdmbiAhPSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgIEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERS RVNTX1dJRFRIKSk7CiAgICAgICAgICAgICAgICAgQlVHX09OKFNIQVJFRF9NMlAoZ2ZuKSk7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmggYi94ZW4vaW5jbHVkZS9h c20teDg2L2d1ZXN0X3B0LmgKaW5kZXggYThkOTgwYy4uNzllZDRmZiAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vl c3RfcHQuaApAQCAtMzIsNyArMzIsNyBAQAogI2Vycm9yIEdVRVNUX1BBR0lOR19MRVZFTFMgbm90 IGRlZmluZWQKICNlbmRpZgogCi0jZGVmaW5lIFZBTElEX0dGTihtKSAobSAhPSBJTlZBTElEX0dG TikKKyNkZWZpbmUgVkFMSURfR0ZOKG0pIChtICE9IGdmbl94KElOVkFMSURfR0ZOKSkKIAogc3Rh dGljIGlubGluZSBpbnQKIHZhbGlkX2dmbihnZm5fdCBtKQpAQCAtMjUxLDcgKzI1MSw3IEBAIHN0 YXRpYyBpbmxpbmUgZ2ZuX3QKIGd1ZXN0X3dhbGtfdG9fZ2ZuKHdhbGtfdCAqZ3cpCiB7CiAgICAg aWYgKCAhKGd1ZXN0X2wxZV9nZXRfZmxhZ3MoZ3ctPmwxZSkgJiBfUEFHRV9QUkVTRU5UKSApCi0g ICAgICAgIHJldHVybiBfZ2ZuKElOVkFMSURfR0ZOKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURf R0ZOOwogICAgIHJldHVybiBndWVzdF9sMWVfZ2V0X2dmbihndy0+bDFlKTsKIH0KIApkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJt LmgKaW5kZXggNGFiMzU3NC4uMTk0MDIwZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wMm0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCkBAIC0zMjQsNyArMzI0LDcg QEAgc3RydWN0IHAybV9kb21haW4gewogI2RlZmluZSBOUl9QT0RfTVJQX0VOVFJJRVMgMzIKIAog LyogRW5jb2RlIE9SREVSXzJNIHN1cGVycGFnZSBpbiB0b3AgYml0IG9mIEdGTiAqLwotI2RlZmlu ZSBQT0RfTEFTVF9TVVBFUlBBR0UgKElOVkFMSURfR0ZOICYgfihJTlZBTElEX0dGTiA+PiAxKSkK KyNkZWZpbmUgUE9EX0xBU1RfU1VQRVJQQUdFIChnZm5feChJTlZBTElEX0dGTikgJiB+KGdmbl94 KElOVkFMSURfR0ZOKSA+PiAxKSkKIAogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsaXN0W05S X1BPRF9NUlBfRU5UUklFU107CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4OwpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGVuL21tLmggYi94ZW4vaW5jbHVkZS94ZW4vbW0uaAppbmRleCA3 ZjIwN2VjLi41OGJjMGI4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbW0uaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vbW0uaApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2xf dCBtZm5fZXEobWZuX3QgeCwgbWZuX3QgeSkKIAogVFlQRV9TQUZFKHVuc2lnbmVkIGxvbmcsIGdm bik7CiAjZGVmaW5lIFBSSV9nZm4gICAgICAgICAgIjA1bHgiCi0jZGVmaW5lIElOVkFMSURfR0ZO ICAgICAgKH4wVUwpCisjZGVmaW5lIElOVkFMSURfR0ZOICAgICAgX2dmbih+MFVMKQogCiAjaWZu ZGVmIGdmbl90CiAjZGVmaW5lIGdmbl90IC8qIEdyZXAgZm9kZGVyOiBnZm5fdCwgX2dmbigpIGFu ZCBnZm5feCgpIGFyZSBkZWZpbmVkIGFib3ZlICovCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==