From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v6 04/14] xen: Use a typesafe to define INVALID_GFN Date: Wed, 6 Jul 2016 14:01:03 +0100 Message-ID: <1467810073-27971-5-git-send-email-julien.grall@arm.com> References: <1467810073-27971-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: <1467810073-27971-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+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpBY2tlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJu ZWwub3JnPgoKLS0tCkNjOiBNdWtlc2ggUmF0aG9yIDxtdWtlc2gucmF0aG9yQG9yYWNsZS5jb20+ CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBQYXVsIER1cnJhbnQgPHBh dWwuZHVycmFudEBjaXRyaXguY29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zz a3lAb3JhY2xlLmNvbT4KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1 bHBhbml0QGFtZC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+ CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAg PGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3Jn PgpDYzogRmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5jb20+CgogICAgQ2hhbmdlcyBpbiB2NjoKICAg ICAgICAtIEFkZCBTdGVmYW5vJ3MgYWNrZWQtYnkgZm9yIEFSTSBiaXRzCiAgICAgICAgLSBSZW1v dmUgc2V0IG9mIGJyYWNrZXRzIHdoZW4gaXQgaXMgbm90IG5lY2Vzc2FyeQogICAgICAgIC0gQWRk IEFuZHJldydzIHJldmlld2VkLWJ5CgogICAgQ2hhbmdlcyBpbiB2NToKICAgICAgICAtIFBhdGNo IGFkZGVkCi0tLQogeGVuL2FyY2gvYXJtL3AybS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDQg KystLQogeGVuL2FyY2gveDg2L2RlYnVnLmMgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysr KysrLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAg MiArLQogeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAgICAgIHwgIDcgKysrKy0t LQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCiB4 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogeGVu L2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4 Ni9odm0vdm14L3ZteC5jICAgICAgICAgICAgICB8ICA2ICsrKy0tLQogeGVuL2FyY2gveDg2L21t L2FsdHAybS5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vl c3Rfd2Fsay5jICAgICAgICB8IDEwICsrKysrLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9oYXAvbmVz dGVkX2VwdC5jICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jICAgICAg ICAgICAgICAgfCAgNiArKystLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAg ICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21t b24uYyAgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyAgICAg ICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCAgICAgICAgfCAg MiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jIHwgIDIgKy0KIHhl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICB8ICA0ICsrLS0KIHhlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICB8ICAyICstCiB4ZW4vaW5jbHVkZS9hc20t eDg2L2d1ZXN0X3B0LmggICAgICAgICAgfCAgNCArKy0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Ay bS5oICAgICAgICAgICAgICAgfCAgMiArLQogeGVuL2luY2x1ZGUveGVuL21tLmggICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDU2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hlbi9hcmNo L2FybS9wMm0uYwppbmRleCBkNjkwNjAyLi5jOTM4ZGRlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h cm0vcDJtLmMKKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCkBAIC00NzksNyArNDc5LDcgQEAgc3Rh dGljIGludCBfX3AybV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4s CiAgICAgfQogCiAgICAgLyogSWYgcmVxdWVzdCB0byBnZXQgZGVmYXVsdCBhY2Nlc3MuICovCi0g ICAgaWYgKCBnZm5feChnZm4pID09IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbl9lcShnZm4s IElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAgICAqYWNjZXNzID0gbWVtYWNjZXNzW3AybS0+ ZGVmYXVsdF9hY2Nlc3NdOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4NzksNyArMTg3OSw3IEBA IGxvbmcgcDJtX3NldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgdWlu dDMyX3QgbnIsCiAgICAgcDJtLT5tZW1fYWNjZXNzX2VuYWJsZWQgPSB0cnVlOwogCiAgICAgLyog SWYgcmVxdWVzdCB0byBzZXQgZGVmYXVsdCBhY2Nlc3MuICovCi0gICAgaWYgKCBnZm5feChnZm4p ID09IElOVkFMSURfR0ZOICkKKyAgICBpZiAoIGdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCiAg ICAgewogICAgICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzID0gYTsKICAgICAgICAgcmV0dXJuIDA7 CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZGVidWcuYyBiL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5j CmluZGV4IDkyMTNlYTcuLjMwMzAwMjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5j CisrKyBiL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jCkBAIC00NCw4ICs0NCw3IEBAIHR5cGVkZWYgdW5z aWduZWQgY2hhciBkYmdieXRlX3Q7CiAKIC8qIFJldHVybnM6IG1mbiBmb3IgdGhlIGdpdmVuICho dm0gZ3Vlc3QpIHZhZGRyICovCiBzdGF0aWMgbWZuX3QKLWRiZ19odm1fdmEybWZuKGRiZ3ZhX3Qg dmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQgdG9hZGRyLAotICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgKmdmbikKK2RiZ19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBk b21haW4gKmRwLCBpbnQgdG9hZGRyLCBnZm5fdCAqZ2ZuKQogewogICAgIG1mbl90IG1mbjsKICAg ICB1aW50MzJfdCBwZmVjID0gUEZFQ19wYWdlX3ByZXNlbnQ7CkBAIC01MywxNCArNTIsMTQgQEAg ZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGludCB0b2Fk ZHIsCiAKICAgICBEQkdQMigidmFkZHI6JWx4IGRvbWlkOiVkXG4iLCB2YWRkciwgZHAtPmRvbWFp bl9pZCk7CiAKLSAgICAqZ2ZuID0gcGFnaW5nX2d2YV90b19nZm4oZHAtPnZjcHVbMF0sIHZhZGRy LCAmcGZlYyk7Ci0gICAgaWYgKCAqZ2ZuID09IElOVkFMSURfR0ZOICkKKyAgICAqZ2ZuID0gX2dm bihwYWdpbmdfZ3ZhX3RvX2dmbihkcC0+dmNwdVswXSwgdmFkZHIsICZwZmVjKSk7CisgICAgaWYg KCBnZm5fZXEoKmdmbiwgSU5WQUxJRF9HRk4pICkKICAgICB7CiAgICAgICAgIERCR1AyKCJrZGI6 YmFkIGdmbiBmcm9tIGd2YV90b19nZm5cbiIpOwogICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47 CiAgICAgfQogCi0gICAgbWZuID0gZ2V0X2dmbihkcCwgKmdmbiwgJmdmbnR5cGUpOworICAgIG1m biA9IGdldF9nZm4oZHAsIGdmbl94KCpnZm4pLCAmZ2ZudHlwZSk7CiAgICAgaWYgKCBwMm1faXNf cmVhZG9ubHkoZ2ZudHlwZSkgJiYgdG9hZGRyICkKICAgICB7CiAgICAgICAgIERCR1AyKCJrZGI6 cDJtX2lzX3JlYWRvbmx5OiBnZm50eXBlOiV4XG4iLCBnZm50eXBlKTsKQEAgLTcyLDcgKzcxLDcg QEAgZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGludCB0 b2FkZHIsCiAKICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgewotICAg ICAgICBwdXRfZ2ZuKGRwLCAqZ2ZuKTsKKyAgICAgICAgcHV0X2dmbihkcCwgZ2ZuX3goKmdmbikp OwogICAgICAgICAqZ2ZuID0gSU5WQUxJRF9HRk47CiAgICAgfQogCkBAIC0xNjUsNyArMTY0LDgg QEAgdW5zaWduZWQgaW50IGRiZ19yd19ndWVzdF9tZW0oc3RydWN0IGRvbWFpbiAqZHAsIHZvaWQg KiBfX3VzZXIgZ2FkZHIsCiAgICAgICAgIGNoYXIgKnZhOwogICAgICAgICB1bnNpZ25lZCBsb25n IGFkZHIgPSAodW5zaWduZWQgbG9uZylnYWRkcjsKICAgICAgICAgbWZuX3QgbWZuOwotICAgICAg ICB1bnNpZ25lZCBsb25nIGdmbiA9IElOVkFMSURfR0ZOLCBwYWdlY250OworICAgICAgICBnZm5f dCBnZm4gPSBJTlZBTElEX0dGTjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlY250OwogCiAg ICAgICAgIHBhZ2VjbnQgPSBtaW5fdChsb25nLCBQQUdFX1NJWkUgLSAoYWRkciAmIH5QQUdFX01B U0spLCBsZW4pOwogCkBAIC0xODksOCArMTg5LDggQEAgdW5zaWduZWQgaW50IGRiZ19yd19ndWVz dF9tZW0oc3RydWN0IGRvbWFpbiAqZHAsIHZvaWQgKiBfX3VzZXIgZ2FkZHIsCiAgICAgICAgIH0K IAogICAgICAgICB1bm1hcF9kb21haW5fcGFnZSh2YSk7Ci0gICAgICAgIGlmICggZ2ZuICE9IElO VkFMSURfR0ZOICkKLSAgICAgICAgICAgIHB1dF9nZm4oZHAsIGdmbik7CisgICAgICAgIGlmICgg IWdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCisgICAgICAgICAgICBwdXRfZ2ZuKGRwLCBnZm5f eChnZm4pKTsKIAogICAgICAgICBhZGRyICs9IHBhZ2VjbnQ7CiAgICAgICAgIGJ1ZiArPSBwYWdl Y250OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2Rv bWFpbi5jCmluZGV4IGJiNTkyNDcuLmM4YzdlMmQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9k b21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTc4Myw3ICs3ODMsNyBAQCBp bnQgYXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAqIGdmbiA9 PSBJTlZBTElEX0dGTiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2hhcmVkX2luZm8gcGFnZSB3YXMgbmV2 ZXIgbWFwcGVkCiAgICAgICogdG8gdGhlIGRvbWFpbidzIGFkZHJlc3Mgc3BhY2UgYW5kIHRoZXJl IGlzIG5vdGhpbmcgdG8gcmVwbGFjZS4KICAgICAgKi8KLSAgICBpZiAoIGdmbiA9PSBJTlZBTElE X0dGTiApCisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgZ290 byBleGl0X3B1dF9wYWdlOwogCiAgICAgaWYgKCBtZm5feChnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbiwg JnAybXQpKSAhPSBtZm4gKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMg Yi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwppbmRleCA4NTVhZjRkLi5jNTVhZDdiIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYvaHZt L2VtdWxhdGUuYwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9saW5lYXJf dG9fcGh5cygKICAgICAgICAgICAgIHJldHVybiByYzsKICAgICAgICAgcGZuID0gX3BhZGRyID4+ IFBBR0VfU0hJRlQ7CiAgICAgfQotICAgIGVsc2UgaWYgKCAocGZuID0gcGFnaW5nX2d2YV90b19n Zm4oY3VyciwgYWRkciwgJnBmZWMpKSA9PSBJTlZBTElEX0dGTiApCisgICAgZWxzZSBpZiAoIChw Zm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRyLCAmcGZlYykpID09IGdmbl94KElOVkFM SURfR0ZOKSApCiAgICAgewogICAgICAgICBpZiAoIHBmZWMgJiAoUEZFQ19wYWdlX3BhZ2VkIHwg UEZFQ19wYWdlX3NoYXJlZCkgKQogICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7CkBA IC00NzIsNyArNDcyLDggQEAgc3RhdGljIGludCBodm1lbXVsX2xpbmVhcl90b19waHlzKAogICAg ICAgICBucGZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpOwogCiAgICAg ICAgIC8qIElzIGl0IGNvbnRpZ3VvdXMgd2l0aCB0aGUgcHJlY2VkaW5nIFBGTnM/IElmIG5vdCB0 aGVuIHdlJ3JlIGRvbmUuICovCi0gICAgICAgIGlmICggKG5wZm4gPT0gSU5WQUxJRF9HRk4pIHx8 IChucGZuICE9IChwZm4gKyAocmV2ZXJzZSA/IC1pIDogaSkpKSApCisgICAgICAgIGlmICggKG5w Zm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pKSB8fAorICAgICAgICAgICAgIChucGZuICE9IChwZm4g KyAocmV2ZXJzZSA/IC1pIDogaSkpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggcGZl YyAmIChQRkVDX3BhZ2VfcGFnZWQgfCBQRkVDX3BhZ2Vfc2hhcmVkKSApCiAgICAgICAgICAgICAg ICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7CkBAIC00ODAsNyArNDgxLDcgQEAgc3RhdGljIGludCBo dm1lbXVsX2xpbmVhcl90b19waHlzKAogICAgICAgICAgICAgaWYgKCBkb25lID09IDAgKQogICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVCghcmV2ZXJzZSk7Ci0gICAgICAgICAg ICAgICAgaWYgKCBucGZuICE9IElOVkFMSURfR0ZOICkKKyAgICAgICAgICAgICAgICBpZiAoIG5w Zm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFg4 NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgICAgICAgICAgICAgIGh2bV9pbmplY3RfcGFnZV9mYXVs dChwZmVjLCBhZGRyICYgUEFHRV9NQVNLKTsKICAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1V TF9FWENFUFRJT047CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2Fy Y2gveDg2L2h2bS9odm0uYwppbmRleCBmM2ZhZjJlLi5iYjM5ZDVmIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTMwMzks NyArMzAzOSw3IEBAIHN0YXRpYyBlbnVtIGh2bV9jb3B5X3Jlc3VsdCBfX2h2bV9jb3B5KAogICAg ICAgICBpZiAoIGZsYWdzICYgSFZNQ09QWV92aXJ0ICkKICAgICAgICAgewogICAgICAgICAgICAg Z2ZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpOwotICAgICAgICAgICAg aWYgKCBnZm4gPT0gSU5WQUxJRF9HRk4gKQorICAgICAgICAgICAgaWYgKCBnZm4gPT0gZ2ZuX3go SU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIHBmZWMg JiBQRkVDX3BhZ2VfcGFnZWQgKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSFZNQ09QWV9n Zm5fcGFnZWRfb3V0OwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgc3RhdGljIGVudW0gaHZtX2NvcHlf cmVzdWx0IF9faHZtX2NsZWFyKHBhZGRyX3QgYWRkciwgaW50IHNpemUpCiAgICAgICAgIGNvdW50 ID0gbWluX3QoaW50LCBQQUdFX1NJWkUgLSAoYWRkciAmIH5QQUdFX01BU0spLCB0b2RvKTsKIAog ICAgICAgICBnZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRyLCAmcGZlYyk7Ci0gICAg ICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKKyAgICAgICAgaWYgKCBnZm4gPT0gZ2ZuX3go SU5WQUxJRF9HRk4pICkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBwZmVjICYgUEZFQ19w YWdlX3BhZ2VkICkKICAgICAgICAgICAgICAgICByZXR1cm4gSFZNQ09QWV9nZm5fcGFnZWRfb3V0 OwpAQCAtNTI5OCw3ICs1Mjk4LDcgQEAgc3RhdGljIGludCBkb19hbHRwMm1fb3AoCiAgICAgICAg ICAgICAgYS51LmVuYWJsZV9ub3RpZnkudmNwdV9pZCAhPSBjdXJyLT52Y3B1X2lkICkKICAgICAg ICAgICAgIHJjID0gLUVJTlZBTDsKIAotICAgICAgICBpZiAoIChnZm5feCh2Y3B1X2FsdHAybShj dXJyKS52ZWluZm9fZ2ZuKSAhPSBJTlZBTElEX0dGTikgfHwKKyAgICAgICAgaWYgKCAhZ2ZuX2Vx KHZjcHVfYWx0cDJtKGN1cnIpLnZlaW5mb19nZm4sIElOVkFMSURfR0ZOKSB8fAogICAgICAgICAg ICAgIG1mbl9lcShnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnItPmRvbWFpbiwKICAgICAgICAg ICAgICAgICAgICAgYS51LmVuYWJsZV9ub3RpZnkuZ2ZuLCAmcDJtdCksIElOVkFMSURfTUZOKSAp CiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCA3MTQ4YWM0Li5kMjI0 NWUyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS9pb3JlcS5jCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIHZvaWQgaHZtX2ZyZWVf aW9yZXFfZ21mbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdtZm4pCiB7CiAgICAg dW5zaWduZWQgaW50IGkgPSBnbWZuIC0gZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX2dtZm4uYmFz ZTsKIAotICAgIGlmICggZ21mbiAhPSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnbWZuICE9IGdm bl94KElOVkFMSURfR0ZOKSApCiAgICAgICAgIHNldF9iaXQoaSwgJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9nbWZuLm1hc2spOwogfQogCkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGludCBo dm1faW9yZXFfc2VydmVyX21hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAg ICBpZiAoIHJjICkKICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgaWYgKCBidWZpb3JlcV9wZm4g IT0gSU5WQUxJRF9HRk4gKQorICAgIGlmICggYnVmaW9yZXFfcGZuICE9IGdmbl94KElOVkFMSURf R0ZOKSApCiAgICAgICAgIHJjID0gaHZtX21hcF9pb3JlcV9wYWdlKHMsIDEsIGJ1ZmlvcmVxX3Bm bik7CiAKICAgICBpZiAoIHJjICkKQEAgLTQzNCw4ICs0MzQsOCBAQCBzdGF0aWMgaW50IGh2bV9p b3JlcV9zZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGhhbmRsZV9idWZpb3Jl cSkKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gcy0+ZG9tYWluOwotICAgIHVuc2lnbmVkIGxv bmcgaW9yZXFfcGZuID0gSU5WQUxJRF9HRk47Ci0gICAgdW5zaWduZWQgbG9uZyBidWZpb3JlcV9w Zm4gPSBJTlZBTElEX0dGTjsKKyAgICB1bnNpZ25lZCBsb25nIGlvcmVxX3BmbiA9IGdmbl94KElO VkFMSURfR0ZOKTsKKyAgICB1bnNpZ25lZCBsb25nIGJ1ZmlvcmVxX3BmbiA9IGdmbl94KElOVkFM SURfR0ZOKTsKICAgICBpbnQgcmM7CiAKICAgICBpZiAoIGlzX2RlZmF1bHQgKQpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2 bS9uZXN0ZWRzdm0uYwppbmRleCA5ZDJhYzA5Li5mOWIzOGFiIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0 ZWRzdm0uYwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgbnN2bV9oYXBfd2Fsa19MMV9wMm0oc3RydWN0 IHZjcHUgKnYsIHBhZGRyX3QgTDJfZ3BhLCBwYWRkcl90ICpMMV9ncGEsCiAgICAgLyogV2FsayB0 aGUgZ3Vlc3Qtc3VwcGxpZWQgTlBUIHRhYmxlLCBqdXN0IGFzIGlmIGl0IHdlcmUgYSBwYWdldGFi bGUgKi8KICAgICBnZm4gPSBwYWdpbmdfZ2FfdG9fZ2ZuX2NyMyh2LCBuZXN0ZWRfY3IzLCBMMl9n cGEsICZwZmVjLCBwYWdlX29yZGVyKTsKIAotICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkK KyAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAgICByZXR1cm4gTkVT VEVESFZNX1BBR0VGQVVMVF9JTkpFQ1Q7CiAKICAgICAqTDFfZ3BhID0gKGdmbiA8PCBQQUdFX1NI SUZUKSArIChMMl9ncGEgJiB+UEFHRV9NQVNLKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5kZXggYTA2MTQyMC4u MDg4ZjQ1NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS92bXgvdm14LmMKQEAgLTIwNTcsMTMgKzIwNTcsMTMgQEAgc3RhdGljIGlu dCB2bXhfdmNwdV9lbXVsYXRlX3ZtZnVuYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHN0 YXRpYyBib29sX3Qgdm14X3ZjcHVfZW11bGF0ZV92ZShzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBi b29sX3QgcmMgPSAwLCB3cml0YWJsZTsKLSAgICB1bnNpZ25lZCBsb25nIGdmbiA9IGdmbl94KHZj cHVfYWx0cDJtKHYpLnZlaW5mb19nZm4pOworICAgIGdmbl90IGdmbiA9IHZjcHVfYWx0cDJtKHYp LnZlaW5mb19nZm47CiAgICAgdmVfaW5mb190ICp2ZWluZm87CiAKLSAgICBpZiAoIGdmbiA9PSBJ TlZBTElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikgKQogICAgICAg ICByZXR1cm4gMDsKIAotICAgIHZlaW5mbyA9IGh2bV9tYXBfZ3Vlc3RfZnJhbWVfcncoZ2ZuLCAw LCAmd3JpdGFibGUpOworICAgIHZlaW5mbyA9IGh2bV9tYXBfZ3Vlc3RfZnJhbWVfcncoZ2ZuX3go Z2ZuKSwgMCwgJndyaXRhYmxlKTsKICAgICBpZiAoICF2ZWluZm8gKQogICAgICAgICByZXR1cm4g MDsKICAgICBpZiAoICF3cml0YWJsZSB8fCB2ZWluZm8tPnNlbWFwaG9yZSAhPSAwICkKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9hbHRwMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9hbHRwMm0u YwppbmRleCAxMDYwNWM4Li45MzBiZGMyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vYWx0 cDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2FsdHAybS5jCkBAIC0yNiw3ICsyNiw3IEBAIGFs dHAybV92Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQogICAgIHN0cnVjdCBhbHRwMm12Y3B1ICph diA9ICZ2Y3B1X2FsdHAybSh2KTsKIAogICAgIGF2LT5wMm1pZHggPSBJTlZBTElEX0FMVFAyTTsK LSAgICBhdi0+dmVpbmZvX2dmbiA9IF9nZm4oSU5WQUxJRF9HRk4pOworICAgIGF2LT52ZWluZm9f Z2ZuID0gSU5WQUxJRF9HRk47CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9oYXAvZ3Vlc3Rfd2Fsay5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKaW5k ZXggZDI3MTZmOS4uMWIxYTE1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9ndWVz dF93YWxrLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKQEAgLTcwLDE0 ICs3MCwxNCBAQCB1bnNpZ25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19M RVZFTFMpKAogICAgICAgICBpZiAoIHRvcF9wYWdlICkKICAgICAgICAgICAgIHB1dF9wYWdlKHRv cF9wYWdlKTsKICAgICAgICAgcDJtX21lbV9wYWdpbmdfcG9wdWxhdGUocDJtLT5kb21haW4sIGNy MyA+PiBQQUdFX1NISUZUKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfR0ZOOworICAgICAgICBy ZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgIH0KICAgICBpZiAoIHAybV9pc19zaGFyZWQo cDJtdCkgKQogICAgIHsKICAgICAgICAgcGZlY1swXSA9IFBGRUNfcGFnZV9zaGFyZWQ7CiAgICAg ICAgIGlmICggdG9wX3BhZ2UgKQogICAgICAgICAgICAgcHV0X3BhZ2UodG9wX3BhZ2UpOwotICAg ICAgICByZXR1cm4gSU5WQUxJRF9HRk47CisgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dG Tik7CiAgICAgfQogICAgIGlmICggIXRvcF9wYWdlICkKICAgICB7CkBAIC0xMTAsMTIgKzExMCwx MiBAQCB1bnNpZ25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMp KAogICAgICAgICAgICAgQVNTRVJUKHAybV9pc19ob3N0cDJtKHAybSkpOwogICAgICAgICAgICAg cGZlY1swXSA9IFBGRUNfcGFnZV9wYWdlZDsKICAgICAgICAgICAgIHAybV9tZW1fcGFnaW5nX3Bv cHVsYXRlKHAybS0+ZG9tYWluLCBnZm5feChnZm4pKTsKLSAgICAgICAgICAgIHJldHVybiBJTlZB TElEX0dGTjsKKyAgICAgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7CiAgICAgICAg IH0KICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpICkKICAgICAgICAgewogICAgICAg ICAgICAgcGZlY1swXSA9IFBGRUNfcGFnZV9zaGFyZWQ7Ci0gICAgICAgICAgICByZXR1cm4gSU5W QUxJRF9HRk47CisgICAgICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgICAg ICB9CiAKICAgICAgICAgaWYgKCBwYWdlX29yZGVyICkKQEAgLTE0Nyw3ICsxNDcsNyBAQCB1bnNp Z25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMpKAogICAgIGlm ICggIWh2bV9ueF9lbmFibGVkKHYpICYmICFodm1fc21lcF9lbmFibGVkKHYpICkKICAgICAgICAg cGZlY1swXSAmPSB+UEZFQ19pbnNuX2ZldGNoOwogCi0gICAgcmV0dXJuIElOVkFMSURfR0ZOOwor ICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7CiB9CiAKIApkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9l cHQuYwppbmRleCA5NGNmODMyLi4wMmIyN2IxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0v aGFwL25lc3RlZF9lcHQuYworKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwpA QCAtMjM2LDcgKzIzNiw3IEBAIGludCBuZXB0X3RyYW5zbGF0ZV9sMmdhKHN0cnVjdCB2Y3B1ICp2 LCBwYWRkcl90IGwyZ2EsCiAgICAgZXB0X3dhbGtfdCBndzsKICAgICByd3hfYWNjICY9IEVQVEVf UldYX01BU0s7CiAKLSAgICAqbDFnZm4gPSBJTlZBTElEX0dGTjsKKyAgICAqbDFnZm4gPSBnZm5f eChJTlZBTElEX0dGTik7CiAKICAgICByYyA9IG5lcHRfd2Fsa190YWJsZXModiwgbDJnYSwgJmd3 KTsKICAgICBzd2l0Y2ggKCByYyApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXBv ZC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYwppbmRleCBmMzg0NTg5Li4xNDlmNTI5IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0tcG9kLmMKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIHBvZF9lYWdlcl9y ZWNsYWltKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCiAgICAgICAgIHVuc2lnbmVkIGludCBpZHgg PSAobXJwLT5pZHggKyBpKyspICUgQVJSQVlfU0laRShtcnAtPmxpc3QpOwogICAgICAgICB1bnNp Z25lZCBsb25nIGdmbiA9IG1ycC0+bGlzdFtpZHhdOwogCi0gICAgICAgIGlmICggZ2ZuICE9IElO VkFMSURfR0ZOICkKKyAgICAgICAgaWYgKCBnZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAg ICAgICAgewogICAgICAgICAgICAgaWYgKCBnZm4gJiBQT0RfTEFTVF9TVVBFUlBBR0UgKQogICAg ICAgICAgICAgewpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgc3RhdGljIHZvaWQgcG9kX2VhZ2VyX3Jl Y2xhaW0oc3RydWN0IHAybV9kb21haW4gKnAybSkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgICBwMm1fcG9kX3plcm9fY2hlY2socDJtLCAmZ2ZuLCAxKTsKIAotICAgICAgICAgICAg bXJwLT5saXN0W2lkeF0gPSBJTlZBTElEX0dGTjsKKyAgICAgICAgICAgIG1ycC0+bGlzdFtpZHhd ID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgICAgICB9CiAKICAgICB9IHdoaWxlICggKHAybS0+ cG9kLmNvdW50ID09IDApICYmIChpIDwgQVJSQVlfU0laRShtcnAtPmxpc3QpKSApOwpAQCAtMTAz MSw3ICsxMDMxLDcgQEAgc3RhdGljIHZvaWQgcG9kX2VhZ2VyX3JlY29yZChzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLAogewogICAgIHN0cnVjdCBwb2RfbXJwX2xpc3QgKm1ycCA9ICZwMm0tPnBvZC5t cnA7CiAKLSAgICBBU1NFUlQoZ2ZuICE9IElOVkFMSURfR0ZOKTsKKyAgICBBU1NFUlQoZ2ZuICE9 IGdmbl94KElOVkFMSURfR0ZOKSk7CiAKICAgICBtcnAtPmxpc3RbbXJwLT5pZHgrK10gPQogICAg ICAgICBnZm4gfCAob3JkZXIgPT0gUEFHRV9PUkRFUl8yTSA/IFBPRF9MQVNUX1NVUEVSUEFHRSA6 IDApOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21t L3AybS5jCmluZGV4IGI5M2M4YTIuLmZmMGNjZTggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTc2LDcgKzc2LDcgQEAgc3Rh dGljIGludCBwMm1faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcDJtX2RvbWFp biAqcDJtKQogICAgIHAybS0+bnAybV9iYXNlID0gUDJNX0JBU0VfRUFERFI7CiAKICAgICBmb3Ig KCBpID0gMDsgaSA8IEFSUkFZX1NJWkUocDJtLT5wb2QubXJwLmxpc3QpOyArK2kgKQotICAgICAg ICBwMm0tPnBvZC5tcnAubGlzdFtpXSA9IElOVkFMSURfR0ZOOworICAgICAgICBwMm0tPnBvZC5t cnAubGlzdFtpXSA9IGdmbl94KElOVkFMSURfR0ZOKTsKIAogICAgIGlmICggaGFwX2VuYWJsZWQo ZCkgJiYgY3B1X2hhc192bXggKQogICAgICAgICByZXQgPSBlcHRfcDJtX2luaXQocDJtKTsKQEAg LTE4NjMsNyArMTg2Myw3IEBAIGxvbmcgcDJtX3NldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbiwgdWludDMyX3QgbnIsCiAgICAgfQogCiAgICAgLyogSWYgcmVxdWVzdCB0 byBzZXQgZGVmYXVsdCBhY2Nlc3MuICovCi0gICAgaWYgKCBnZm5feChnZm4pID09IElOVkFMSURf R0ZOICkKKyAgICBpZiAoIGdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAg ICBwMm0tPmRlZmF1bHRfYWNjZXNzID0gYTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTMyLDcg KzE5MzIsNyBAQCBpbnQgcDJtX2dldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90 IGdmbiwgeGVubWVtX2FjY2Vzc190ICphY2Nlc3MpCiAgICAgfTsKIAogICAgIC8qIElmIHJlcXVl c3QgdG8gZ2V0IGRlZmF1bHQgYWNjZXNzLiAqLwotICAgIGlmICggZ2ZuX3goZ2ZuKSA9PSBJTlZB TElEX0dGTiApCisgICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikgKQogICAgIHsKICAg ICAgICAgKmFjY2VzcyA9IG1lbWFjY2Vzc1twMm0tPmRlZmF1bHRfYWNjZXNzXTsKICAgICAgICAg cmV0dXJuIDA7CkBAIC0yMTEzLDggKzIxMTMsOCBAQCB1bnNpZ25lZCBsb25nIHBhZ2luZ19ndmFf dG9fZ2ZuKHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICBtb2RlID0gcGFnaW5nX2dldF9uZXN0ZWRt b2RlKHYpOwogICAgICAgICBsMl9nZm4gPSBtb2RlLT5ndmFfdG9fZ2ZuKHYsIHAybSwgdmEsIHBm ZWMpOwogCi0gICAgICAgIGlmICggbDJfZ2ZuID09IElOVkFMSURfR0ZOICkKLSAgICAgICAgICAg IHJldHVybiBJTlZBTElEX0dGTjsKKyAgICAgICAgaWYgKCBsMl9nZm4gPT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKKyAgICAgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7CiAKICAgICAg ICAgLyogdHJhbnNsYXRlIGwyIGd1ZXN0IGdmbiBpbnRvIGwxIGd1ZXN0IGdmbiAqLwogICAgICAg ICBydiA9IG5lc3RlZGhhcF93YWxrX0wxX3AybSh2LCBsMl9nZm4sICZsMV9nZm4sICZsMV9wYWdl X29yZGVyLCAmbDFfcDJtYSwKQEAgLTIxMjMsNyArMjEyMyw3IEBAIHVuc2lnbmVkIGxvbmcgcGFn aW5nX2d2YV90b19nZm4oc3RydWN0IHZjcHUgKnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEhKCpwZmVjICYgUEZFQ19pbnNuX2ZldGNoKSk7CiAKICAgICAgICAgaWYgKCBy diAhPSBORVNURURIVk1fUEFHRUZBVUxUX0RPTkUgKQotICAgICAgICAgICAgcmV0dXJuIElOVkFM SURfR0ZOOworICAgICAgICAgICAgcmV0dXJuIGdmbl94KElOVkFMSURfR0ZOKTsKIAogICAgICAg ICAvKgogICAgICAgICAgKiBTYW5pdHkgY2hlY2sgdGhhdCBsMV9nZm4gY2FuIGJlIHVzZWQgcHJv cGVybHkgYXMgYSA0SyBtYXBwaW5nLCBldmVuCkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBzdGF0aWMg dm9pZCBwMm1faW5pdF9hbHRwMm1faGVscGVyKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBpKQogICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1baV07 CiAgICAgc3RydWN0IGVwdF9kYXRhICplcHQ7CiAKLSAgICBwMm0tPm1pbl9yZW1hcHBlZF9nZm4g PSBJTlZBTElEX0dGTjsKKyAgICBwMm0tPm1pbl9yZW1hcHBlZF9nZm4gPSBnZm5feChJTlZBTElE X0dGTik7CiAgICAgcDJtLT5tYXhfcmVtYXBwZWRfZ2ZuID0gMDsKICAgICBlcHQgPSAmcDJtLT5l cHQ7CiAgICAgZXB0LT5hc3IgPSBwYWdldGFibGVfZ2V0X3BmbihwMm1fZ2V0X3BhZ2V0YWJsZShw Mm0pKTsKQEAgLTI1NTEsNyArMjU1MSw3IEBAIGludCBwMm1fY2hhbmdlX2FsdHAybV9nZm4oc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCwKIAogICAgIG1mbiA9IGFwMm0tPmdldF9l bnRyeShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgJnQsICZhLCAwLCBOVUxMLCBOVUxMKTsKIAotICAg IGlmICggZ2ZuX3gobmV3X2dmbikgPT0gSU5WQUxJRF9HRk4gKQorICAgIGlmICggZ2ZuX2VxKG5l d19nZm4sIElOVkFMSURfR0ZOKSApCiAgICAgewogICAgICAgICBpZiAoIG1mbl92YWxpZChtZm4p ICkKICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZu X3gobWZuKSwgUEFHRV9PUkRFUl80Syk7CkBAIC0yNjEzLDcgKzI2MTMsNyBAQCBzdGF0aWMgdm9p ZCBwMm1fcmVzZXRfYWx0cDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCiAgICAgLyogVW5pbml0 IGFuZCByZWluaXQgZXB0IHRvIGZvcmNlIFRMQiBzaG9vdGRvd24gKi8KICAgICBlcHRfcDJtX3Vu aW5pdChwMm0pOwogICAgIGVwdF9wMm1faW5pdChwMm0pOwotICAgIHAybS0+bWluX3JlbWFwcGVk X2dmbiA9IElOVkFMSURfR0ZOOworICAgIHAybS0+bWluX3JlbWFwcGVkX2dmbiA9IGdmbl94KElO VkFMSURfR0ZOKTsKICAgICBwMm0tPm1heF9yZW1hcHBlZF9nZm4gPSAwOwogfQogCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIveGVuL2FyY2gveDg2L21tL3No YWRvdy9jb21tb24uYwppbmRleCAxYzBiNmNkLi42MWNjZGRmIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29t bW9uLmMKQEAgLTE3MDcsNyArMTcwNyw3IEBAIHN0YXRpYyBtZm5fdCBlbXVsYXRlX2d2YV90b19t Zm4oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmFkZHIsCiAKICAgICAvKiBUcmFuc2xh dGUgdGhlIFZBIHRvIGEgR0ZOLiAqLwogICAgIGdmbiA9IHBhZ2luZ19nZXRfaG9zdG1vZGUodikt Pmd2YV90b19nZm4odiwgTlVMTCwgdmFkZHIsICZwZmVjKTsKLSAgICBpZiAoIGdmbiA9PSBJTlZB TElEX0dGTiApCisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICB7CiAg ICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikgKQogICAgICAgICAgICAgaHZtX2luamVjdF9wYWdl X2ZhdWx0KHBmZWMsIHZhZGRyKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv bXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwppbmRleCBmODkyZTJmLi5l NTRjOGI3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKKysrIGIv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCkBAIC0zNjYwLDcgKzM2NjAsNyBAQCBzaF9n dmFfdG9fZ2ZuKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAg ICAgKi8KICAgICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSAmJiAhaHZtX254X2VuYWJsZWQodikg JiYgIWh2bV9zbWVwX2VuYWJsZWQodikgKQogICAgICAgICAgICAgcGZlY1swXSAmPSB+UEZFQ19p bnNuX2ZldGNoOwotICAgICAgICByZXR1cm4gSU5WQUxJRF9HRk47CisgICAgICAgIHJldHVybiBn Zm5feChJTlZBTElEX0dGTik7CiAgICAgfQogICAgIGdmbiA9IGd1ZXN0X3dhbGtfdG9fZ2ZuKCZn dyk7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oIGIveGVu L2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKaW5kZXggYzQyNGFkNi4uODI0Nzk2ZiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKKysrIGIveGVuL2FyY2gv eDg2L21tL3NoYWRvdy9wcml2YXRlLmgKQEAgLTc5Niw3ICs3OTYsNyBAQCBzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGxvbmcgdnRsYl9sb29rdXAoc3RydWN0IHZjcHUgKnYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YSwgdWludDMyX3QgcGZl YykKIHsKICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtYmVyID0gdmEgPj4gUEFHRV9TSElGVDsK LSAgICB1bnNpZ25lZCBsb25nIGZyYW1lX251bWJlciA9IElOVkFMSURfR0ZOOworICAgIHVuc2ln bmVkIGxvbmcgZnJhbWVfbnVtYmVyID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAgIGludCBpID0g dnRsYl9oYXNoKHBhZ2VfbnVtYmVyKTsKIAogICAgIHNwaW5fbG9jaygmdi0+YXJjaC5wYWdpbmcu dnRsYl9sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21t dV9tYXAuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwppbmRleCBj NzU4NDU5Li5iOGMwYTQ4IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQv aW9tbXVfbWFwLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5j CkBAIC01NTUsNyArNTU1LDcgQEAgc3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgdW5zaWduZWQgbG9uZyBvbGRfcm9v dF9tZm47CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CiAKLSAg ICBpZiAoIGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKICAgICAgICAgcmV0dXJuIC1FQUREUk5PVEFWQUlMOwogICAgIEFTU0VSVCghKGdm biA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRIKSk7CiAKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv dnRkL2lvbW11LmMKaW5kZXggZjAxMDYxMi4uYzMyMmI5ZiAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv dnRkL2lvbW11LmMKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBp b21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBpZiAoIGlvbW11X2Rv bWlkID09IC0xICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggcGFnZV9j b3VudCAhPSAxIHx8IGdmbiA9PSBJTlZBTElEX0dGTiApCisgICAgICAgIGlmICggcGFnZV9jb3Vu dCAhPSAxIHx8IGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAgICAgICAgcmMgPSBp b21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAgZWxz ZQpAQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNo X2lvdGxiX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsCiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGlvbW11X2ZsdXNoX2lvdGxiX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogewotICAgIHJldHVybiBp b21tdV9mbHVzaF9pb3RsYihkLCBJTlZBTElEX0dGTiwgMCwgMCk7CisgICAgcmV0dXJuIGlvbW11 X2ZsdXNoX2lvdGxiKGQsIGdmbl94KElOVkFMSURfR0ZOKSwgMCwgMCk7CiB9CiAKIC8qIGNsZWFy IG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAqLwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gveDg2L2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwpp bmRleCBjZDQzNWQ3Li42OWNkNmM1IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC94ODYvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwpA QCAtNjEsNyArNjEsNyBAQCBpbnQgYXJjaF9pb21tdV9wb3B1bGF0ZV9wYWdlX3RhYmxlKHN0cnVj dCBkb21haW4gKmQpCiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHBhZ2VfdG9fbWZu KHBhZ2UpOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtZm5fdG9fZ21mbihkLCBt Zm4pOwogCi0gICAgICAgICAgICBpZiAoIGdmbiAhPSBJTlZBTElEX0dGTiApCisgICAgICAgICAg ICBpZiAoIGdmbiAhPSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgIEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRIKSk7 CiAgICAgICAgICAgICAgICAgQlVHX09OKFNIQVJFRF9NMlAoZ2ZuKSk7CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0 X3B0LmgKaW5kZXggYThkOTgwYy4uNzllZDRmZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9ndWVzdF9wdC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaApAQCAt MzIsNyArMzIsNyBAQAogI2Vycm9yIEdVRVNUX1BBR0lOR19MRVZFTFMgbm90IGRlZmluZWQKICNl bmRpZgogCi0jZGVmaW5lIFZBTElEX0dGTihtKSAobSAhPSBJTlZBTElEX0dGTikKKyNkZWZpbmUg VkFMSURfR0ZOKG0pIChtICE9IGdmbl94KElOVkFMSURfR0ZOKSkKIAogc3RhdGljIGlubGluZSBp bnQKIHZhbGlkX2dmbihnZm5fdCBtKQpAQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyBpbmxpbmUg Z2ZuX3QKIGd1ZXN0X3dhbGtfdG9fZ2ZuKHdhbGtfdCAqZ3cpCiB7CiAgICAgaWYgKCAhKGd1ZXN0 X2wxZV9nZXRfZmxhZ3MoZ3ctPmwxZSkgJiBfUEFHRV9QUkVTRU5UKSApCi0gICAgICAgIHJldHVy biBfZ2ZuKElOVkFMSURfR0ZOKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfR0ZOOwogICAgIHJl dHVybiBndWVzdF9sMWVfZ2V0X2dmbihndy0+bDFlKTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKaW5kZXggNGFi MzU3NC4uMTk0MDIwZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAorKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RydWN0IHAy bV9kb21haW4gewogI2RlZmluZSBOUl9QT0RfTVJQX0VOVFJJRVMgMzIKIAogLyogRW5jb2RlIE9S REVSXzJNIHN1cGVycGFnZSBpbiB0b3AgYml0IG9mIEdGTiAqLwotI2RlZmluZSBQT0RfTEFTVF9T VVBFUlBBR0UgKElOVkFMSURfR0ZOICYgfihJTlZBTElEX0dGTiA+PiAxKSkKKyNkZWZpbmUgUE9E X0xBU1RfU1VQRVJQQUdFIChnZm5feChJTlZBTElEX0dGTikgJiB+KGdmbl94KElOVkFMSURfR0ZO KSA+PiAxKSkKIAogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsaXN0W05SX1BPRF9NUlBfRU5U UklFU107CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4OwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL21tLmggYi94ZW4vaW5jbHVkZS94ZW4vbW0uaAppbmRleCA3ZjIwN2VjLi41OGJj MGI4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbW0uaAorKysgYi94ZW4vaW5jbHVkZS94 ZW4vbW0uaApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2xfdCBtZm5fZXEobWZu X3QgeCwgbWZuX3QgeSkKIAogVFlQRV9TQUZFKHVuc2lnbmVkIGxvbmcsIGdmbik7CiAjZGVmaW5l IFBSSV9nZm4gICAgICAgICAgIjA1bHgiCi0jZGVmaW5lIElOVkFMSURfR0ZOICAgICAgKH4wVUwp CisjZGVmaW5lIElOVkFMSURfR0ZOICAgICAgX2dmbih+MFVMKQogCiAjaWZuZGVmIGdmbl90CiAj ZGVmaW5lIGdmbl90IC8qIEdyZXAgZm9kZGVyOiBnZm5fdCwgX2dmbigpIGFuZCBnZm5feCgpIGFy ZSBkZWZpbmVkIGFib3ZlICovCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=