From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v5 06/17] xen: Use a typesafe to define INVALID_MFN Date: Tue, 28 Jun 2016 17:17:12 +0100 Message-ID: <1467130643-23868-7-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, Jun Nakajima , George Dunlap , Liu Jinsong , Christoph Egger , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Andrew Cooper , Mukesh Rathor List-Id: xen-devel@lists.xenproject.org QWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8g dGhlIHR5cGVzYWZlCm1mbi4KClNpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+CgotLS0KQ2M6IENocmlzdG9waCBFZ2dlciA8Y2hlZ2dlckBhbWF6b24uZGU+ CkNjOiBMaXUgSmluc29uZyA8amluc29uZy5saXVAYWxpYmFiYS1pbmMuY29tPgpDYzogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KQ2M6IE11a2VzaCBSYXRob3IgPG11a2VzaC5yYXRob3JAb3JhY2xlLmNv bT4KQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkNjOiBKdW4gTmFr YWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFu QGludGVsLmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNv bT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgoKICAgIENoYW5nZXMgaW4gdjU6CiAgICAg ICAgLSBQYXRjaCBhZGRlZAotLS0KIHhlbi9hcmNoL2FybS9wMm0uYyAgICAgICAgICAgICAgfCAg NCArKy0tCiB4ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2UuYyAgIHwgIDIgKy0KIHhlbi9hcmNo L3g4Ni9kZWJ1Zy5jICAgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgfCAgNiArKy0tLQog eGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jICAgICB8ICA2ICsrLS0tCiB4ZW4vYXJjaC94ODYv aHZtL3ZteC92bXguYyAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMg ICAgfCAgNCArKy0tCiB4ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jICAgICAgIHwgIDQgKystLQog eGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICB8ICA2ICsrLS0tCiB4ZW4vYXJjaC94ODYv bW0vcDJtLXBvZC5jICAgICAgIHwgMTggKysrKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9w Mm0tcHQuYyAgICAgICAgfCAxOCArKysrKysrLS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3AybS5j ICAgICAgICAgICB8IDUyICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiB4ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMgICAgICAgIHwgMTIgKysrKystLS0tLQogeGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9jb21tb24uYyB8IDQ0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyAgfCAzNiArKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vY29tbW9uL2RvbWFpbi5jICAgICAgICAgICAgIHwgIDYg KystLS0KIHhlbi9jb21tb24vZ3JhbnRfdGFibGUuYyAgICAgICAgfCAgNiArKy0tLQogeGVuL2lu Y2x1ZGUveGVuL21tLmggICAgICAgICAgICB8ICAyICstCiAxOCBmaWxlcyBjaGFuZ2VkLCAxNDAg aW5zZXJ0aW9ucygrKSwgMTM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwppbmRleCAzNDU2M2JiLi5kNjkwNjAyIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC9hcm0vcDJtLmMKKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCkBAIC0x NDYxLDcgKzE0NjEsNyBAQCBpbnQgcmVsaW5xdWlzaF9wMm1fbWFwcGluZyhzdHJ1Y3QgZG9tYWlu ICpkKQogICAgIHJldHVybiBhcHBseV9wMm1fY2hhbmdlcyhkLCBSRUxJTlFVSVNILAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKHAybS0+bG93ZXN0X21hcHBlZF9n Zm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKHAybS0+bWF4 X21hcHBlZF9nZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRy KElOVkFMSURfTUZOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRk cihtZm5feChJTlZBTElEX01GTikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFU VFJfTUVNLCAwLCBwMm1faW52YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQt PmFyY2gucDJtLmRlZmF1bHRfYWNjZXNzKTsKIH0KQEAgLTE0NzYsNyArMTQ3Niw3IEBAIGludCBw Mm1fY2FjaGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgeGVuX3Bmbl90IHN0YXJ0X21mbiwgeGVu X3Bmbl90IGVuZF9tZm4pCiAgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIENBQ0hFRkxV U0gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihzdGFydF9tZm4p LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoZW5kX21mbiksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihJTlZBTElEX01GTiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihtZm5feChJTlZBTElEX01G TikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVRUUl9NRU0sIDAsIHAybV9pbnZh bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2Fj Y2Vzcyk7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2UuYyBiL3hl bi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jCmluZGV4IGVkY2JlNDguLjI2OTViMGMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9j cHUvbWNoZWNrL21jZS5jCkBAIC0xNDU1LDcgKzE0NTUsNyBAQCBsb25nIGRvX21jYShYRU5fR1VF U1RfSEFORExFX1BBUkFNKHhlbl9tY190KSB1X3hlbl9tYykKICAgICAgICAgICAgICAgICBnZm4g PSBQRk5fRE9XTihnYWRkcik7CiAgICAgICAgICAgICAgICAgbWZuID0gbWZuX3goZ2V0X2dmbihk LCBnZm4sICZ0KSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIG1mbiA9PSBJTlZBTElEX01GTiAp CisgICAgICAgICAgICAgICAgaWYgKCBtZm4gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsKICAgICAg ICAgICAgICAgICAgICAgcHV0X2RvbWFpbihkKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9k ZWJ1Zy5jIGIveGVuL2FyY2gveDg2L2RlYnVnLmMKaW5kZXggNThjYWUyMi4uMzQ3OWY3YyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2RlYnVnLmMKKysrIGIveGVuL2FyY2gveDg2L2RlYnVnLmMK QEAgLTQzLDExICs0MywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZGJndmFfdDsKIHR5cGVk ZWYgdW5zaWduZWQgY2hhciBkYmdieXRlX3Q7CiAKIC8qIFJldHVybnM6IG1mbiBmb3IgdGhlIGdp dmVuIChodm0gZ3Vlc3QpIHZhZGRyICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZyAKK3N0YXRpYyBt Zm5fdAogZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGlu dCB0b2FkZHIsCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZ2ZuKQogewotICAgIHVu c2lnbmVkIGxvbmcgbWZuOworICAgIG1mbl90IG1mbjsKICAgICB1aW50MzJfdCBwZmVjID0gUEZF Q19wYWdlX3ByZXNlbnQ7CiAgICAgcDJtX3R5cGVfdCBnZm50eXBlOwogCkBAIC02MCwxNiArNjAs MTcgQEAgZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGlu dCB0b2FkZHIsCiAgICAgICAgIHJldHVybiBJTlZBTElEX01GTjsKICAgICB9CiAKLSAgICBtZm4g PSBtZm5feChnZXRfZ2ZuKGRwLCAqZ2ZuLCAmZ2ZudHlwZSkpOyAKKyAgICBtZm4gPSBnZXRfZ2Zu KGRwLCAqZ2ZuLCAmZ2ZudHlwZSk7CiAgICAgaWYgKCBwMm1faXNfcmVhZG9ubHkoZ2ZudHlwZSkg JiYgdG9hZGRyICkKICAgICB7CiAgICAgICAgIERCR1AyKCJrZGI6cDJtX2lzX3JlYWRvbmx5OiBn Zm50eXBlOiV4XG4iLCBnZm50eXBlKTsKICAgICAgICAgbWZuID0gSU5WQUxJRF9NRk47CiAgICAg fQogICAgIGVsc2UKLSAgICAgICAgREJHUDIoIlg6IHZhZGRyOiVseCBkb21pZDolZCBtZm46JWx4 XG4iLCB2YWRkciwgZHAtPmRvbWFpbl9pZCwgbWZuKTsKKyAgICAgICAgREJHUDIoIlg6IHZhZGRy OiVseCBkb21pZDolZCBtZm46JWx4XG4iLAorICAgICAgICAgICAgICB2YWRkciwgZHAtPmRvbWFp bl9pZCwgbWZuX3gobWZuKSk7CiAKLSAgICBpZiAoIG1mbiA9PSBJTlZBTElEX01GTiApCisgICAg aWYgKCBtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQogICAgIHsKICAgICAgICAgcHV0X2dmbihk cCwgKmdmbik7CiAgICAgICAgICpnZm4gPSBJTlZBTElEX0dGTjsKQEAgLTkxLDcgKzkyLDcgQEAg ZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGludCB0b2Fk ZHIsCiAgKiAgICAgICBtb2RlLgogICogUmV0dXJuczogbWZuIGZvciB0aGUgZ2l2ZW4gKHB2IGd1 ZXN0KSB2YWRkciAKICAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgCitzdGF0aWMgbWZuX3QKIGRi Z19wdl92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIHVpbnQ2NF90IHBn ZDN2YWwpCiB7CiAgICAgbDRfcGdlbnRyeV90IGw0ZSwgKmw0dDsKQEAgLTk5LDMxICsxMDAsMzEg QEAgZGJnX3B2X3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgdWludDY0 X3QgcGdkM3ZhbCkKICAgICBsMl9wZ2VudHJ5X3QgbDJlLCAqbDJ0OwogICAgIGwxX3BnZW50cnlf dCBsMWUsICpsMXQ7CiAgICAgdW5zaWduZWQgbG9uZyBjcjMgPSAocGdkM3ZhbCA/IHBnZDN2YWwg OiBkcC0+dmNwdVswXS0+YXJjaC5jcjMpOwotICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gY3IzID4+ IFBBR0VfU0hJRlQ7CisgICAgbWZuX3QgbWZuID0gX21mbihjcjMgPj4gUEFHRV9TSElGVCk7CiAK ICAgICBEQkdQMigidmFkZHI6JWx4IGRvbWlkOiVkIGNyMzolbHggcGdkMzolbHhcbiIsIHZhZGRy LCBkcC0+ZG9tYWluX2lkLCAKICAgICAgICAgICBjcjMsIHBnZDN2YWwpOwogCiAgICAgaWYgKCBw Z2QzdmFsID09IDAgKQogICAgIHsKLSAgICAgICAgbDR0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4o bWZuKSk7CisgICAgICAgIGw0dCA9IG1hcF9kb21haW5fcGFnZShtZm4pOwogICAgICAgICBsNGUg PSBsNHRbbDRfdGFibGVfb2Zmc2V0KHZhZGRyKV07CiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdl KGw0dCk7Ci0gICAgICAgIG1mbiA9IGw0ZV9nZXRfcGZuKGw0ZSk7CisgICAgICAgIG1mbiA9IF9t Zm4obDRlX2dldF9wZm4obDRlKSk7CiAgICAgICAgIERCR1AyKCJsNHQ6JXAgbDR0bzolbHggbDRl OiVseCBtZm46JWx4XG4iLCBsNHQsIAotICAgICAgICAgICAgICBsNF90YWJsZV9vZmZzZXQodmFk ZHIpLCBsNGUsIG1mbik7CisgICAgICAgICAgICAgIGw0X3RhYmxlX29mZnNldCh2YWRkciksIGw0 ZSwgbWZuX3gobWZuKSk7CiAgICAgICAgIGlmICggIShsNGVfZ2V0X2ZsYWdzKGw0ZSkgJiBfUEFH RV9QUkVTRU5UKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIERCR1AxKCJsNCBQQUdFIG5vdCBw cmVzZW50LiB2YWRkcjolbHggY3IzOiVseFxuIiwgdmFkZHIsIGNyMyk7CiAgICAgICAgICAgICBy ZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgICAgIH0KIAotICAgICAgICBsM3QgPSBtYXBfZG9tYWlu X3BhZ2UoX21mbihtZm4pKTsKKyAgICAgICAgbDN0ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7CiAg ICAgICAgIGwzZSA9IGwzdFtsM190YWJsZV9vZmZzZXQodmFkZHIpXTsKICAgICAgICAgdW5tYXBf ZG9tYWluX3BhZ2UobDN0KTsKLSAgICAgICAgbWZuID0gbDNlX2dldF9wZm4obDNlKTsKKyAgICAg ICAgbWZuID0gX21mbihsM2VfZ2V0X3BmbihsM2UpKTsKICAgICAgICAgREJHUDIoImwzdDolcCBs M3RvOiVseCBsM2U6JWx4IG1mbjolbHhcbiIsIGwzdCwgCi0gICAgICAgICAgICAgIGwzX3RhYmxl X29mZnNldCh2YWRkciksIGwzZSwgbWZuKTsKKyAgICAgICAgICAgICAgbDNfdGFibGVfb2Zmc2V0 KHZhZGRyKSwgbDNlLCBtZm5feChtZm4pKTsKICAgICAgICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3Mo bDNlKSAmIF9QQUdFX1BSRVNFTlQpIHx8CiAgICAgICAgICAgICAgKGwzZV9nZXRfZmxhZ3MobDNl KSAmIF9QQUdFX1BTRSkgKQogICAgICAgICB7CkBAIC0xMzIsMjYgKzEzMywyNiBAQCBkYmdfcHZf dmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCB1aW50NjRfdCBwZ2QzdmFs KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbDJ0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obWZu KSk7CisgICAgbDJ0ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7CiAgICAgbDJlID0gbDJ0W2wyX3Rh YmxlX29mZnNldCh2YWRkcildOwogICAgIHVubWFwX2RvbWFpbl9wYWdlKGwydCk7Ci0gICAgbWZu ID0gbDJlX2dldF9wZm4obDJlKTsKKyAgICBtZm4gPSBfbWZuKGwyZV9nZXRfcGZuKGwyZSkpOwog ICAgIERCR1AyKCJsMnQ6JXAgbDJ0bzolbHggbDJlOiVseCBtZm46JWx4XG4iLCBsMnQsIGwyX3Rh YmxlX29mZnNldCh2YWRkciksCi0gICAgICAgICAgbDJlLCBtZm4pOworICAgICAgICAgIGwyZSwg bWZuX3gobWZuKSk7CiAgICAgaWYgKCAhKGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9QQUdFX1BSRVNF TlQpIHx8CiAgICAgICAgICAobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFNFKSApCiAgICAg ewogICAgICAgICBEQkdQMSgibDIgUEFHRSBub3QgcHJlc2VudC4gdmFkZHI6JWx4IGNyMzolbHhc biIsIHZhZGRyLCBjcjMpOwogICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgfQotICAg IGwxdCA9IG1hcF9kb21haW5fcGFnZShfbWZuKG1mbikpOworICAgIGwxdCA9IG1hcF9kb21haW5f cGFnZShtZm4pOwogICAgIGwxZSA9IGwxdFtsMV90YWJsZV9vZmZzZXQodmFkZHIpXTsKICAgICB1 bm1hcF9kb21haW5fcGFnZShsMXQpOwotICAgIG1mbiA9IGwxZV9nZXRfcGZuKGwxZSk7CisgICAg bWZuID0gX21mbihsMWVfZ2V0X3BmbihsMWUpKTsKICAgICBEQkdQMigibDF0OiVwIGwxdG86JWx4 IGwxZTolbHggbWZuOiVseFxuIiwgbDF0LCBsMV90YWJsZV9vZmZzZXQodmFkZHIpLAotICAgICAg ICAgIGwxZSwgbWZuKTsKKyAgICAgICAgICBsMWUsIG1mbl94KG1mbikpOwogCi0gICAgcmV0dXJu IG1mbl92YWxpZChtZm4pID8gbWZuIDogSU5WQUxJRF9NRk47CisgICAgcmV0dXJuIG1mbl92YWxp ZChtZm5feChtZm4pKSA/IG1mbiA6IElOVkFMSURfTUZOOwogfQogCiAvKiBSZXR1cm5zOiBudW1i ZXIgb2YgYnl0ZXMgcmVtYWluaW5nIHRvIGJlIGNvcGllZCAqLwpAQCAtMTYzLDIzICsxNjQsMjQg QEAgdW5zaWduZWQgaW50IGRiZ19yd19ndWVzdF9tZW0oc3RydWN0IGRvbWFpbiAqZHAsIHZvaWQg KiBfX3VzZXIgZ2FkZHIsCiAgICAgewogICAgICAgICBjaGFyICp2YTsKICAgICAgICAgdW5zaWdu ZWQgbG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpZ2FkZHI7Ci0gICAgICAgIHVuc2lnbmVkIGxv bmcgbWZuLCBnZm4gPSBJTlZBTElEX0dGTiwgcGFnZWNudDsKKyAgICAgICAgbWZuX3QgbWZuOwor ICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9IElOVkFMSURfR0ZOLCBwYWdlY250OwogCiAgICAg ICAgIHBhZ2VjbnQgPSBtaW5fdChsb25nLCBQQUdFX1NJWkUgLSAoYWRkciAmIH5QQUdFX01BU0sp LCBsZW4pOwogCiAgICAgICAgIG1mbiA9IChoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZHApCiAg ICAgICAgICAgICAgICA/IGRiZ19odm1fdmEybWZuKGFkZHIsIGRwLCB0b2FkZHIsICZnZm4pCiAg ICAgICAgICAgICAgICA6IGRiZ19wdl92YTJtZm4oYWRkciwgZHAsIHBnZDMpKTsKLSAgICAgICAg aWYgKCBtZm4gPT0gSU5WQUxJRF9NRk4gKSAKKyAgICAgICAgaWYgKCBtZm5fZXEobWZuLCBJTlZB TElEX01GTikgKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgdmEgPSBtYXBfZG9tYWlu X3BhZ2UoX21mbihtZm4pKTsKKyAgICAgICAgdmEgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKICAg ICAgICAgdmEgPSB2YSArIChhZGRyICYgKFBBR0VfU0laRS0xKSk7CiAKICAgICAgICAgaWYgKCB0 b2FkZHIgKQogICAgICAgICB7CiAgICAgICAgICAgICBjb3B5X2Zyb21fdXNlcih2YSwgYnVmLCBw YWdlY250KTsgICAgLyogdmEgPSBidWYgKi8KLSAgICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5 KGRwLCBtZm4pOworICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZHAsIG1mbl94KG1mbikp OwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggYzg5YWI2ZS4u YTkyOWUzYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJj aC94ODYvaHZtL2h2bS5jCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBpbnQgaHZtX2hhcF9uZXN0ZWRf cGFnZV9mYXVsdChwYWRkcl90IGdwYSwgdW5zaWduZWQgbG9uZyBnbGEsCiAgICAgICAgIHAybSA9 IGhvc3RwMm07CiAKICAgICAvKiBDaGVjayBhY2Nlc3MgcGVybWlzc2lvbnMgZmlyc3QsIHRoZW4g aGFuZGxlIGZhdWx0cyAqLwotICAgIGlmICggbWZuX3gobWZuKSAhPSBJTlZBTElEX01GTiApCisg ICAgaWYgKCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICB7CiAgICAgICAgIGJvb2xf dCB2aW9sYXRpb247CiAKQEAgLTUyOTksOCArNTI5OSw4IEBAIHN0YXRpYyBpbnQgZG9fYWx0cDJt X29wKAogICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwogCiAgICAgICAgIGlmICggKGdmbl94KHZj cHVfYWx0cDJtKGN1cnIpLnZlaW5mb19nZm4pICE9IElOVkFMSURfR0ZOKSB8fAotICAgICAgICAg ICAgIChtZm5feChnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnItPmRvbWFpbiwKLSAgICAgICAg ICAgICAgICAgICAgYS51LmVuYWJsZV9ub3RpZnkuZ2ZuLCAmcDJtdCkpID09IElOVkFMSURfTUZO KSApCisgICAgICAgICAgICAgKG1mbl9lcShnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnItPmRv bWFpbiwKKyAgICAgICAgICAgICAgICAgICAgIGEudS5lbmFibGVfbm90aWZ5LmdmbiwgJnAybXQp LCBJTlZBTElEX01GTikpICkKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAgICAg IHZjcHVfYWx0cDJtKGN1cnIpLnZlaW5mb19nZm4gPSBfZ2ZuKGEudS5lbmFibGVfbm90aWZ5Lmdm bik7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94 ODYvaHZtL3ZpcmlkaWFuLmMKaW5kZXggODI1M2ZkMC4uNTc1YWNkZCAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4u YwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9oeXBlcmNhbGxfcGFnZShz dHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBpZiAoIHBhZ2UgKQogICAgICAgICAgICAgcHV0X3Bh Z2UocGFnZSk7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQmFkIEdNRk4gJWx4 IChNRk4gJWx4KVxuIiwgZ21mbiwKLSAgICAgICAgICAgICAgICAgcGFnZSA/IHBhZ2VfdG9fbWZu KHBhZ2UpIDogSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgICAgICBwYWdlID8gcGFnZV90b19t Zm4ocGFnZSkgOiBtZm5feChJTlZBTElEX01GTikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hcGljX2Fzc2lzdChz dHJ1Y3QgdmNwdSAqdikKIAogIGZhaWw6CiAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJC YWQgR01GTiAlbHggKE1GTiAlbHgpXG4iLCBnbWZuLAotICAgICAgICAgICAgIHBhZ2UgPyBwYWdl X3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKTsKKyAgICAgICAgICAgICBwYWdlID8gcGFnZV90 b19tZm4ocGFnZSkgOiBtZm5feChJTlZBTElEX01GTikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZWFy ZG93bl9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKQEAgLTM0OSw3ICszNDksNyBAQCBzdGF0 aWMgdm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sX3QgaW5p dGlhbGl6ZSkKICAgICAgICAgaWYgKCBwYWdlICkKICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2Up OwogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICVseCAoTUZOICVs eClcbiIsIGdtZm4sCi0gICAgICAgICAgICAgICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6 IElOVkFMSURfTUZOKTsKKyAgICAgICAgICAgICAgICAgcGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2Up IDogbWZuX3goSU5WQUxJRF9NRk4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92 bXguYwppbmRleCA5ZDQxMjFlLi44ODhhNmIxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L3ZteC92bXguYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwpAQCAtMjAyNSw3ICsy MDI1LDcgQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVfdXBkYXRlX3ZtZnVuY192ZShzdHJ1Y3QgdmNw dSAqdikKIAogICAgICAgICAgICAgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm5f eCh2Y3B1X2FsdHAybSh2KS52ZWluZm9fZ2ZuKSwgJnQpOwogCi0gICAgICAgICAgICBpZiAoIG1m bl94KG1mbikgIT0gSU5WQUxJRF9NRk4gKQorICAgICAgICAgICAgaWYgKCAhbWZuX2VxKG1mbiwg SU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgICAgICBfX3Ztd3JpdGUoVklSVF9FWENFUFRJT05f SU5GTywgbWZuX3gobWZuKSA8PCBQQUdFX1NISUZUKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9n dWVzdF93YWxrLmMKaW5kZXggZTg1MDUwMi4uODY4ZTkwOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L21tL2d1ZXN0X3dhbGsuYworKysgYi94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCkBA IC0yODEsNyArMjgxLDcgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVj dCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAgIHN0YXJ0ID0gX2dmbigoZ2ZuX3goc3RhcnQpICYg fkdVRVNUX0wzX0dGTl9NQVNLKSArCiAgICAgICAgICAgICAgICAgICAgICAoKHZhID4+IFBBR0Vf U0hJRlQpICYgR1VFU1RfTDNfR0ZOX01BU0spKTsKICAgICAgICAgZ3ctPmwxZSA9IGd1ZXN0X2wx ZV9mcm9tX2dmbihzdGFydCwgZmxhZ3MpOwotICAgICAgICBndy0+bDJtZm4gPSBndy0+bDFtZm4g PSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgZ3ctPmwybWZuID0gZ3ctPmwxbWZuID0gSU5W QUxJRF9NRk47CiAgICAgICAgIGdvdG8gc2V0X2FkOwogICAgIH0KIApAQCAtMzU2LDcgKzM1Niw3 IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLAogICAgICAgICBzdGFydCA9IF9nZm4oKGdmbl94KHN0YXJ0KSAmIH5HVUVTVF9MMl9HRk5f TUFTSykgKwogICAgICAgICAgICAgICAgICAgICAgZ3Vlc3RfbDFfdGFibGVfb2Zmc2V0KHZhKSk7 CiAgICAgICAgIGd3LT5sMWUgPSBndWVzdF9sMWVfZnJvbV9nZm4oc3RhcnQsIGZsYWdzKTsKLSAg ICAgICAgZ3ctPmwxbWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgIGd3LT5sMW1mbiA9 IElOVkFMSURfTUZOOwogICAgIH0gCiAgICAgZWxzZSAKICAgICB7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwppbmRleCA5 YzJjZDQ5Li4zMjE4ZmEyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCisr KyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKQEAgLTQzMCw3ICs0MzAsNyBAQCBzdGF0aWMg bWZuX3QgaGFwX21ha2VfbW9uaXRvcl90YWJsZShzdHJ1Y3QgdmNwdSAqdikKICBvb206CiAgICAg SEFQX0VSUk9SKCJvdXQgb2YgbWVtb3J5IGJ1aWxkaW5nIG1vbml0b3IgcGFnZXRhYmxlXG4iKTsK ICAgICBkb21haW5fY3Jhc2goZCk7Ci0gICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAg IHJldHVybiBJTlZBTElEX01GTjsKIH0KIAogc3RhdGljIHZvaWQgaGFwX2Rlc3Ryb3lfbW9uaXRv cl90YWJsZShzdHJ1Y3QgdmNwdSogdiwgbWZuX3QgbW1mbikKQEAgLTUwOSw3ICs1MDksNyBAQCBp bnQgaGFwX2VuYWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1MzIgbW9kZSkKICAgICAgICAgfQogCiAg ICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0VQVFA7IGkrKyApCi0gICAgICAgICAgICBkLT5h cmNoLmFsdHAybV9lcHRwW2ldID0gSU5WQUxJRF9NRk47CisgICAgICAgICAgICBkLT5hcmNoLmFs dHAybV9lcHRwW2ldID0gbWZuX3goSU5WQUxJRF9NRk4pOwogCiAgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKaW5kZXggNzE2NmM3 MS4uNmQwMzczNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYworKysgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbnQgYXRv bWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAqZW50cnlwdHIsIGVwdF9lbnRyeV90IG5l dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCiB7CiAgICAg aW50IHJjOwotICAgIHVuc2lnbmVkIGxvbmcgb2xkbWZuID0gSU5WQUxJRF9NRk47CisgICAgdW5z aWduZWQgbG9uZyBvbGRtZm4gPSBtZm5feChJTlZBTElEX01GTik7CiAgICAgYm9vbF90IGNoZWNr X2ZvcmVpZ24gPSAobmV3Lm1mbiAhPSBlbnRyeXB0ci0+bWZuIHx8CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV3LnNhX3AybXQgIT0gZW50cnlwdHItPnNhX3AybXQpOwogCkBAIC05MSw3 ICs5MSw3IEBAIHN0YXRpYyBpbnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAq ZW50cnlwdHIsIGVwdF9lbnRyeV90IG5ldywKIAogICAgIHdyaXRlX2F0b21pYygmZW50cnlwdHIt PmVwdGUsIG5ldy5lcHRlKTsKIAotICAgIGlmICggdW5saWtlbHkob2xkbWZuICE9IElOVkFMSURf TUZOKSApCisgICAgaWYgKCB1bmxpa2VseShvbGRtZm4gIT0gbWZuX3goSU5WQUxJRF9NRk4pKSAp CiAgICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG9sZG1mbikpOwogCiAgICAgcmMgPSAwOwpA QCAtODg3LDcgKzg4Nyw3IEBAIHN0YXRpYyBtZm5fdCBlcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sCiAgICAgaW50IGk7CiAgICAgaW50IHJldCA9IDA7CiAgICAgYm9vbF90IHJl Y2FsYyA9IDA7Ci0gICAgbWZuX3QgbWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAgbWZuX3Qg bWZuID0gSU5WQUxJRF9NRk47CiAgICAgc3RydWN0IGVwdF9kYXRhICplcHQgPSAmcDJtLT5lcHQ7 CiAKICAgICAqdCA9IHAybV9tbWlvX2RtOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKaW5kZXggYjdhYjE2OS4uZjM4NDU4 OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYworKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXBvZC5jCkBAIC01NTksNyArNTU5LDcgQEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNl cnZhdGlvbihzdHJ1Y3QgZG9tYWluICpkLAogICAgIHsKICAgICAgICAgLyogQWxsIFBvRDogTWFy ayB0aGUgd2hvbGUgcmVnaW9uIGludmFsaWQgYW5kIHRlbGwgY2FsbGVyCiAgICAgICAgICAqIHdl J3JlIGRvbmUuICovCi0gICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBncGZuLCBfbWZuKElOVkFM SURfTUZOKSwgb3JkZXIsIHAybV9pbnZhbGlkLAorICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwg Z3BmbiwgSU5WQUxJRF9NRk4sIG9yZGVyLCBwMm1faW52YWxpZCwKICAgICAgICAgICAgICAgICAg ICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICAgICAgcDJtLT5wb2QuZW50cnlfY291bnQt PSgxPDxvcmRlcik7CiAgICAgICAgIEJVR19PTihwMm0tPnBvZC5lbnRyeV9jb3VudCA8IDApOwpA QCAtNjAyLDcgKzYwMiw3IEBAIHAybV9wb2RfZGVjcmVhc2VfcmVzZXJ2YXRpb24oc3RydWN0IGRv bWFpbiAqZCwKICAgICAgICAgbiA9IDFVTCA8PCBjdXJfb3JkZXI7CiAgICAgICAgIGlmICggdCA9 PSBwMm1fcG9wdWxhdGVfb25fZGVtYW5kICkKICAgICAgICAgewotICAgICAgICAgICAgcDJtX3Nl dF9lbnRyeShwMm0sIGdwZm4gKyBpLCBfbWZuKElOVkFMSURfTUZOKSwgY3VyX29yZGVyLAorICAg ICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwgY3VyX29y ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0 X2FjY2Vzcyk7CiAgICAgICAgICAgICBwMm0tPnBvZC5lbnRyeV9jb3VudCAtPSBuOwogICAgICAg ICAgICAgQlVHX09OKHAybS0+cG9kLmVudHJ5X2NvdW50IDwgMCk7CkBAIC02MjQsNyArNjI0LDcg QEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihzdHJ1Y3QgZG9tYWluICpkLAogCiAgICAg ICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKIAotICAgICAgICAgICAgcDJtX3NldF9l bnRyeShwMm0sIGdwZm4gKyBpLCBfbWZuKElOVkFMSURfTUZOKSwgY3VyX29yZGVyLAorICAgICAg ICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwgY3VyX29yZGVy LAogICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2Fj Y2Vzcyk7CiAgICAgICAgICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKICAgICAgICAgICAg IGZvciAoIGogPSAwOyBqIDwgbjsgKytqICkKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIHAybV9w b2RfZHVtcF9kYXRhKHN0cnVjdCBkb21haW4gKmQpCiBzdGF0aWMgaW50CiBwMm1fcG9kX3plcm9f Y2hlY2tfc3VwZXJwYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2Zu KQogewotICAgIG1mbl90IG1mbiwgbWZuMCA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIG1mbl90 IG1mbiwgbWZuMCA9IElOVkFMSURfTUZOOwogICAgIHAybV90eXBlX3QgdHlwZSwgdHlwZTAgPSAw OwogICAgIHVuc2lnbmVkIGxvbmcgKiBtYXAgPSBOVUxMOwogICAgIGludCByZXQ9MCwgcmVzZXQg PSAwOwpAQCAtNzU0LDcgKzc1NCw3IEBAIHAybV9wb2RfemVyb19jaGVja19zdXBlcnBhZ2Uoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgfQogCiAgICAgLyog VHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5nIG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxz LiAqLwotICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdF X09SREVSXzJNLAorICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBQQUdF X09SREVSXzJNLAogICAgICAgICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJt LT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgcDJtX3RsYl9mbHVzaF9zeW5jKHAybSk7CiAKQEAgLTg3 MSw3ICs4NzEsNyBAQCBwMm1fcG9kX3plcm9fY2hlY2soc3RydWN0IHAybV9kb21haW4gKnAybSwg dW5zaWduZWQgbG9uZyAqZ2ZucywgaW50IGNvdW50KQogICAgICAgICB9CiAKICAgICAgICAgLyog VHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5nIG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxz LiAqLwotICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2Zuc1tpXSwgX21mbihJTlZBTElEX01G TiksIFBBR0VfT1JERVJfNEssCisgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5zW2ldLCBJ TlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9w dWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKIAogICAgICAgICAvKiBTZWUg aWYgdGhlIHBhZ2Ugd2FzIHN1Y2Nlc3NmdWxseSB1bm1hcHBlZC4gIChBbGxvdyBvbmUgcmVmY291 bnQKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHAybV9wb2RfZGVtYW5kX3BvcHVsYXRlKHN0cnVjdCBw Mm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgICAgICAgKiBOT1RFOiBJbiBh IGZpbmUtZ3JhaW5lZCBwMm0gbG9ja2luZyBzY2VuYXJpbyB0aGlzIG9wZXJhdGlvbgogICAgICAg ICAgKiBtYXkgbmVlZCB0byBwcm9tb3RlIGl0cyBsb2NraW5nIGZyb20gZ2ZuLT4xZyBzdXBlcnBh Z2UKICAgICAgICAgICovCi0gICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCwg X21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfMk0sCisgICAgICAgIHAybV9zZXRfZW50cnko cDJtLCBnZm5fYWxpZ25lZCwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfMk0sCiAgICAgICAgICAg ICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7 CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTExNTcsNyArMTE1Nyw3IEBAIHJlbWFwX2Fu ZF9yZXRyeToKICAgICAgKiBuZWVkIHByb21vdGluZyB0aGUgZ2ZuIGxvY2sgZnJvbSBnZm4tPjJN IHN1cGVycGFnZSAqLwogICAgIGdmbl9hbGlnbmVkID0gKGdmbj4+b3JkZXIpPDxvcmRlcjsKICAg ICBmb3IoaT0wOyBpPCgxPDxvcmRlcik7IGkrKykKLSAgICAgICAgcDJtX3NldF9lbnRyeShwMm0s IGdmbl9hbGlnbmVkICsgaSwgX21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfNEssCisgICAg ICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCArIGksIElOVkFMSURfTUZOLCBQQUdF X09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgIHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQs IHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogICAgIGlmICggdGJfaW5pdF9kb25lICkKICAgICB7CkBA IC0xMjE1LDcgKzEyMTUsNyBAQCBndWVzdF9waHlzbWFwX21hcmtfcG9wdWxhdGVfb25fZGVtYW5k KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgIH0KIAogICAgIC8qIE5v dywgYWN0dWFsbHkgZG8gdGhlIHR3by13YXkgbWFwcGluZyAqLwotICAgIHJjID0gcDJtX3NldF9l bnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiksIG9yZGVyLAorICAgIHJjID0gcDJtX3Nl dF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIG9yZGVyLAogICAgICAgICAgICAgICAgICAg ICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICBp ZiAoIHJjID09IDAgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQu YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwppbmRleCA0OTgwOTM0Li4yYjZlODllIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3Ay bS1wdC5jCkBAIC01MTEsNyArNTExLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgICAqIHRoZSBpbnRl cm1lZGlhdGUgb25lIG1pZ2h0IGJlKS4KICAgICAgKi8KICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Ms IGlvbW11X29sZF9mbGFncyA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyBvbGRfbWZuID0gSU5WQUxJ RF9NRk47CisgICAgdW5zaWduZWQgbG9uZyBvbGRfbWZuID0gbWZuX3goSU5WQUxJRF9NRk4pOwog CiAgICAgQVNTRVJUKHN2ZSAhPSAwKTsKIApAQCAtNzY0LDcgKzc2NCw3IEBAIHAybV9wdF9nZXRf ZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgICAg ICAgICAgICAgICAgICBwMm0tPm1heF9tYXBwZWRfcGZuICkKICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAg ICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgfQogCiAgICAgbWZuID0gcGFnZXRhYmxlX2dl dF9tZm4ocDJtX2dldF9wYWdldGFibGUocDJtKSk7CkBAIC03NzcsNyArNzc3LDcgQEAgcDJtX3B0 X2dldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwKICAg ICAgICAgaWYgKCAobDRlX2dldF9mbGFncygqbDRlKSAmIF9QQUdFX1BSRVNFTlQpID09IDAgKQog ICAgICAgICB7CiAgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShsNGUpOwotICAgICAgICAg ICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgcmV0dXJuIElOVkFMSURf TUZOOwogICAgICAgICB9CiAgICAgICAgIG1mbiA9IF9tZm4obDRlX2dldF9wZm4oKmw0ZSkpOwog ICAgICAgICByZWNhbGMgPSBuZWVkc19yZWNhbGMobDQsICpsNGUpOwpAQCAtODA1LDcgKzgwNSw3 IEBAIHBvZF9yZXRyeV9sMzoKICAgICAgICAgICAgICAgICAgICAgKnQgPSBwMm1fcG9wdWxhdGVf b25fZGVtYW5kOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2Uo bDNlKTsKLSAgICAgICAgICAgIHJldHVybiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgICAg IHJldHVybiBJTlZBTElEX01GTjsKICAgICAgICAgfQogICAgICAgICBpZiAoIGZsYWdzICYgX1BB R0VfUFNFICkKICAgICAgICAgewpAQCAtODE3LDcgKzgxNyw3IEBAIHBvZF9yZXRyeV9sMzoKICAg ICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwzZSk7CiAKICAgICAgICAgICAgIEFTU0VSVCht Zm5fdmFsaWQobWZuKSB8fCAhcDJtX2lzX3JhbSgqdCkpOwotICAgICAgICAgICAgcmV0dXJuIChw Mm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAg cmV0dXJuIChwMm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6IElOVkFMSURfTUZOOwogICAgICAgICB9 CiAKICAgICAgICAgbWZuID0gX21mbihsM2VfZ2V0X3BmbigqbDNlKSk7CkBAIC04NDYsNyArODQ2 LDcgQEAgcG9kX3JldHJ5X2wyOgogICAgICAgICB9CiAgICAgCiAgICAgICAgIHVubWFwX2RvbWFp bl9wYWdlKGwyZSk7Ci0gICAgICAgIHJldHVybiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAg cmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0KICAgICBpZiAoIGZsYWdzICYgX1BBR0VfUFNFICkK ICAgICB7CkBAIC04NTYsNyArODU2LDcgQEAgcG9kX3JldHJ5X2wyOgogICAgICAgICB1bm1hcF9k b21haW5fcGFnZShsMmUpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4p IHx8ICFwMm1faXNfcmFtKCp0KSk7Ci0gICAgICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSkg PyBtZm4gOiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgcmV0dXJuIChwMm1faXNfdmFsaWQo KnQpKSA/IG1mbiA6IElOVkFMSURfTUZOOwogICAgIH0KIAogICAgIG1mbiA9IF9tZm4obDJlX2dl dF9wZm4oKmwyZSkpOwpAQCAtODg1LDE0ICs4ODUsMTQgQEAgcG9kX3JldHJ5X2wxOgogICAgICAg ICB9CiAgICAgCiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwxZSk7Ci0gICAgICAgIHJldHVy biBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0K ICAgICBtZm4gPSBfbWZuKGwxZV9nZXRfcGZuKCpsMWUpKTsKICAgICAqdCA9IHJlY2FsY190eXBl KHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxjKGZsYWdzKSwgbDF0LCBwMm0sIGdmbik7CiAgICAgdW5t YXBfZG9tYWluX3BhZ2UobDFlKTsKIAogICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSB8fCAhcDJt X2lzX3JhbSgqdCkgfHwgcDJtX2lzX3BhZ2luZygqdCkpOwotICAgIHJldHVybiAocDJtX2lzX3Zh bGlkKCp0KSB8fCBwMm1faXNfZ3JhbnQoKnQpKSA/IG1mbiA6IF9tZm4oSU5WQUxJRF9NRk4pOwor ICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSB8fCBwMm1faXNfZ3JhbnQoKnQpKSA/IG1mbiA6 IElOVkFMSURfTUZOOwogfQogCiBzdGF0aWMgdm9pZCBwMm1fcHRfY2hhbmdlX2VudHJ5X3R5cGVf Z2xvYmFsKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggNjI1OGE1Yi4uNmY5MDUxMCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9w Mm0uYwpAQCAtMzg4LDcgKzM4OCw3IEBAIG1mbl90IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICBpZiAodW5saWtlbHko KHAybV9pc19icm9rZW4oKnQpKSkpCiAgICAgewogICAgICAgICAvKiBSZXR1cm4gaW52YWxpZF9t Zm4gdG8gYXZvaWQgY2FsbGVyJ3MgYWNjZXNzICovCi0gICAgICAgIG1mbiA9IF9tZm4oSU5WQUxJ RF9NRk4pOworICAgICAgICBtZm4gPSBJTlZBTElEX01GTjsKICAgICAgICAgaWYgKCBxICYgUDJN X0FMTE9DICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChwMm0tPmRvbWFpbik7CiAgICAgfQpA QCAtNDkzLDcgKzQ5Myw3IEBAIGludCBwMm1fc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpw Mm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICByYyA9IHNldF9y YzsKIAogICAgICAgICBnZm4gKz0gMXVsIDw8IG9yZGVyOwotICAgICAgICBpZiAoIG1mbl94KG1m bikgIT0gSU5WQUxJRF9NRk4gKQorICAgICAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01G TikgKQogICAgICAgICAgICAgbWZuID0gX21mbihtZm5feChtZm4pICsgKDF1bCA8PCBvcmRlcikp OwogICAgICAgICB0b2RvIC09IDF1bCA8PCBvcmRlcjsKICAgICB9CkBAIC01ODAsNyArNTgwLDcg QEAgaW50IHAybV9hbGxvY190YWJsZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQogCiAgICAgLyog SW5pdGlhbGlzZSBwaHlzbWFwIHRhYmxlcyBmb3Igc2xvdCB6ZXJvLiBPdGhlciBjb2RlIGFzc3Vt ZXMgdGhpcy4gKi8KICAgICBwMm0tPmRlZmVyX25lc3RlZF9mbHVzaCA9IDE7Ci0gICAgcmMgPSBw Mm1fc2V0X2VudHJ5KHAybSwgMCwgX21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfNEssCisg ICAgcmMgPSBwMm1fc2V0X2VudHJ5KHAybSwgMCwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfNEss CiAgICAgICAgICAgICAgICAgICAgICAgIHAybV9pbnZhbGlkLCBwMm0tPmRlZmF1bHRfYWNjZXNz KTsKICAgICBwMm0tPmRlZmVyX25lc3RlZF9mbHVzaCA9IDA7CiAgICAgcDJtX3VubG9jayhwMm0p OwpAQCAtNjcwLDcgKzY3MCw3IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICBB U1NFUlQoICFwMm1faXNfdmFsaWQodCkgfHwgbWZuICsgaSA9PSBtZm5feChtZm5fcmV0dXJuKSAp OwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBf bWZuKElOVkFMSURfTUZOKSwgcGFnZV9vcmRlciwgcDJtX2ludmFsaWQsCisgICAgcmV0dXJuIHAy bV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBwYWdlX29yZGVyLCBwMm1faW52YWxp ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKIH0KIApA QCAtODQwLDcgKzg0MCw3IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbiwgbWZuX3QgbWZuLAogICAgIHsKICAgICAgICAgZ2RwcmludGsoWEVOTE9H X1dBUk5JTkcsICJBZGRpbmcgYmFkIG1mbiB0byBwMm0gbWFwICglI2x4IC0+ICUjbHgpXG4iLAog ICAgICAgICAgICAgICAgICBnZm5feChnZm4pLCBtZm5feChtZm4pKTsKLSAgICAgICAgcmMgPSBw Mm1fc2V0X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuKSwgX21mbihJTlZBTElEX01GTiksIHBhZ2Vfb3Jk ZXIsCisgICAgICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbl94KGdmbiksIElOVkFMSURf TUZOLCBwYWdlX29yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2ludmFsaWQs IHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogICAgICAgICBpZiAoIHJjID09IDAgKQogICAgICAgICB7 CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBpbnQgY2xlYXJfbW1pb19wMm1fZW50cnkoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICB9CiAKICAgICAvKiBE byBub3QgdXNlIG1mbl92YWxpZCgpIGhlcmUgYXMgaXQgd2lsbCB1c3VhbGx5IGZhaWwgZm9yIE1N SU8gcGFnZXMuICovCi0gICAgaWYgKCAoSU5WQUxJRF9NRk4gPT0gbWZuX3goYWN0dWFsX21mbikp IHx8ICh0ICE9IHAybV9tbWlvX2RpcmVjdCkgKQorICAgIGlmICggKG1mbl9lcShhY3R1YWxfbWZu LCBJTlZBTElEX01GTikpIHx8ICh0ICE9IHAybV9tbWlvX2RpcmVjdCkgKQogICAgIHsKICAgICAg ICAgZ2RwcmludGsoWEVOTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImdmbl90b19tZm4gZmFp bGVkISBnZm49JTA4bHggdHlwZTolZFxuIiwgZ2ZuLCB0KTsKQEAgLTExMTcsNyArMTExNyw3IEBA IGludCBjbGVhcl9tbWlvX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKICAgICAg ICAgICAgICAgICAgIm5vIG1hcHBpbmcgYmV0d2VlbiBtZm4gJTA4bHggYW5kIGdmbiAlMDhseFxu IiwKICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSwgZ2ZuKTsKLSAgICByYyA9IHAybV9zZXRf ZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBvcmRlciwgcDJtX2ludmFsaWQsCisg ICAgcmMgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgb3JkZXIsIHAybV9p bnZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKIAog IG91dDoKQEAgLTExNDYsNyArMTE0Niw3IEBAIGludCBjbGVhcl9pZGVudGl0eV9wMm1fZW50cnko c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgbWZuID0gcDJtLT5nZXRf ZW50cnkocDJtLCBnZm4sICZwMm10LCAmYSwgMCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCBwMm10 ID09IHAybV9tbWlvX2RpcmVjdCAmJiBtZm5feChtZm4pID09IGdmbiApCiAgICAgewotICAgICAg ICByZXQgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBfbWZuKElOVkFMSURfTUZOKSwgUEFHRV9P UkRFUl80SywKKyAgICAgICAgcmV0ID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9N Rk4sIFBBR0VfT1JERVJfNEssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2ludmFs aWQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogICAgICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCAw KTsKICAgICB9CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBpbnQgcDJtX21lbV9wYWdpbmdfZXZpY3Qo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgICAgIHB1dF9wYWdlKHBh Z2UpOwogCiAgICAgLyogUmVtb3ZlIG1hcHBpbmcgZnJvbSBwMm0gdGFibGUgKi8KLSAgICByZXQg PSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBfbWZuKElOVkFMSURfTUZOKSwgUEFHRV9PUkRFUl80 SywKKyAgICByZXQgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgUEFHRV9P UkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9yYW1fcGFnZWQsIGEpOwogCiAg ICAgLyogQ2xlYXIgY29udGVudCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBwYWdlIHRvIFhlbiAqLwpA QCAtMTg0NCw3ICsxODQ0LDcgQEAgbG9uZyBwMm1fc2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFp biAqZCwgZ2ZuX3QgZ2ZuLCB1aW50MzJfdCBuciwKICAgICBpZiAoIGFsdHAybV9pZHggKQogICAg IHsKICAgICAgICAgaWYgKCBhbHRwMm1faWR4ID49IE1BWF9BTFRQMk0gfHwKLSAgICAgICAgICAg ICBkLT5hcmNoLmFsdHAybV9lcHRwW2FsdHAybV9pZHhdID09IElOVkFMSURfTUZOICkKKyAgICAg ICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2FsdHAybV9pZHhdID09IG1mbl94KElOVkFMSURf TUZOKSApCiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAogICAgICAgICBhcDJtID0gZC0+ YXJjaC5hbHRwMm1fcDJtW2FsdHAybV9pZHhdOwpAQCAtMTk0Miw3ICsxOTQyLDcgQEAgaW50IHAy bV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHhlbm1lbV9hY2Nl c3NfdCAqYWNjZXNzKQogICAgIG1mbiA9IHAybS0+Z2V0X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuKSwg JnQsICZhLCAwLCBOVUxMLCBOVUxMKTsKICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCAwKTsKIAot ICAgIGlmICggbWZuX3gobWZuKSA9PSBJTlZBTElEX01GTiApCisgICAgaWYgKCBtZm5fZXEobWZu LCBJTlZBTElEX01GTikgKQogICAgICAgICByZXR1cm4gLUVTUkNIOwogICAgIAogICAgIGlmICgg KHVuc2lnbmVkKSBhID49IEFSUkFZX1NJWkUobWVtYWNjZXNzKSApCkBAIC0yMjg4LDcgKzIyODgs NyBAQCB1bnNpZ25lZCBpbnQgcDJtX2ZpbmRfYWx0cDJtX2J5X2VwdHAoc3RydWN0IGRvbWFpbiAq ZCwgdWludDY0X3QgZXB0cCkKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0FMVFAyTTsgaSsr ICkKICAgICB7Ci0gICAgICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9PSBJTlZBTElE X01GTiApCisgICAgICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9PSBtZm5feChJTlZB TElEX01GTikgKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgcDJtID0gZC0+YXJj aC5hbHRwMm1fcDJtW2ldOwpAQCAtMjMxNSw3ICsyMzE1LDcgQEAgYm9vbF90IHAybV9zd2l0Y2hf dmNwdV9hbHRwMm1fYnlfaWQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpZHgpCiAKICAg ICBhbHRwMm1fbGlzdF9sb2NrKGQpOwogCi0gICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lk eF0gIT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9 IG1mbl94KElOVkFMSURfTUZOKSApCiAgICAgewogICAgICAgICBpZiAoIGlkeCAhPSB2Y3B1X2Fs dHAybSh2KS5wMm1pZHggKQogICAgICAgICB7CkBAIC0yMzU5LDE0ICsyMzU5LDE0IEBAIGJvb2xf dCBwMm1fYWx0cDJtX2xhenlfY29weShzdHJ1Y3QgdmNwdSAqdiwgcGFkZHJfdCBncGEsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAmcGFnZV9vcmRlcik7CiAgICAgX19wdXRfZ2Zu KCphcDJtLCBnZm5feChnZm4pKTsKIAotICAgIGlmICggbWZuX3gobWZuKSAhPSBJTlZBTElEX01G TiApCisgICAgaWYgKCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgcmV0dXJu IDA7CiAKICAgICBtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbl94KGdmbiksICZw Mm10LCAmcDJtYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9BTExPQyB8IFAy TV9VTlNIQVJFLCAmcGFnZV9vcmRlcik7CiAgICAgX19wdXRfZ2ZuKGhwMm0sIGdmbl94KGdmbikp OwogCi0gICAgaWYgKCBtZm5feChtZm4pID09IElOVkFMSURfTUZOICkKKyAgICBpZiAoIG1mbl9l cShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcDJtX2xvY2so KmFwMm0pOwpAQCAtMjQwNCw3ICsyNDA0LDcgQEAgdm9pZCBwMm1fZmx1c2hfYWx0cDJtKHN0cnVj dCBkb21haW4gKmQpCiAgICAgICAgIC8qIFVuaW5pdCBhbmQgcmVpbml0IGVwdCB0byBmb3JjZSBU TEIgc2hvb3Rkb3duICovCiAgICAgICAgIGVwdF9wMm1fdW5pbml0KGQtPmFyY2guYWx0cDJtX3Ay bVtpXSk7CiAgICAgICAgIGVwdF9wMm1faW5pdChkLT5hcmNoLmFsdHAybV9wMm1baV0pOwotICAg ICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID0gSU5WQUxJRF9NRk47CisgICAgICAgIGQtPmFy Y2guYWx0cDJtX2VwdHBbaV0gPSBtZm5feChJTlZBTElEX01GTik7CiAgICAgfQogCiAgICAgYWx0 cDJtX2xpc3RfdW5sb2NrKGQpOwpAQCAtMjQzMSw3ICsyNDMxLDcgQEAgaW50IHAybV9pbml0X2Fs dHAybV9ieV9pZChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4KQogCiAgICAgYWx0 cDJtX2xpc3RfbG9jayhkKTsKIAotICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID09 IElOVkFMSURfTUZOICkKKyAgICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSA9PSBtZm5f eChJTlZBTElEX01GTikgKQogICAgIHsKICAgICAgICAgcDJtX2luaXRfYWx0cDJtX2hlbHBlcihk LCBpZHgpOwogICAgICAgICByYyA9IDA7CkBAIC0yNDUwLDcgKzI0NTAsNyBAQCBpbnQgcDJtX2lu aXRfbmV4dF9hbHRwMm0oc3RydWN0IGRvbWFpbiAqZCwgdWludDE2X3QgKmlkeCkKIAogICAgIGZv ciAoIGkgPSAwOyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKICAgICB7Ci0gICAgICAgIGlmICggZC0+ YXJjaC5hbHRwMm1fZXB0cFtpXSAhPSBJTlZBTElEX01GTiApCisgICAgICAgIGlmICggZC0+YXJj aC5hbHRwMm1fZXB0cFtpXSAhPSBtZm5feChJTlZBTElEX01GTikgKQogICAgICAgICAgICAgY29u dGludWU7CiAKICAgICAgICAgcDJtX2luaXRfYWx0cDJtX2hlbHBlcihkLCBpKTsKQEAgLTI0NzYs NyArMjQ3Niw3IEBAIGludCBwMm1fZGVzdHJveV9hbHRwMm1fYnlfaWQoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgaW50IGlkeCkKIAogICAgIGFsdHAybV9saXN0X2xvY2soZCk7CiAKLSAgICBp ZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSAhPSBJTlZBTElEX01GTiApCisgICAgaWYgKCBk LT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gIT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAgICB7CiAg ICAgICAgIHAybSA9IGQtPmFyY2guYWx0cDJtX3AybVtpZHhdOwogCkBAIC0yNDg2LDcgKzI0ODYs NyBAQCBpbnQgcDJtX2Rlc3Ryb3lfYWx0cDJtX2J5X2lkKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGludCBpZHgpCiAgICAgICAgICAgICAvKiBVbmluaXQgYW5kIHJlaW5pdCBlcHQgdG8gZm9y Y2UgVExCIHNob290ZG93biAqLwogICAgICAgICAgICAgZXB0X3AybV91bmluaXQoZC0+YXJjaC5h bHRwMm1fcDJtW2lkeF0pOwogICAgICAgICAgICAgZXB0X3AybV9pbml0KGQtPmFyY2guYWx0cDJt X3AybVtpZHhdKTsKLSAgICAgICAgICAgIGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSA9IElOVkFM SURfTUZOOworICAgICAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID0gbWZuX3goSU5W QUxJRF9NRk4pOwogICAgICAgICAgICAgcmMgPSAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMjUx MCw3ICsyNTEwLDcgQEAgaW50IHAybV9zd2l0Y2hfZG9tYWluX2FsdHAybV9ieV9pZChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4KQogCiAgICAgYWx0cDJtX2xpc3RfbG9jayhkKTsK IAotICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IElOVkFMSURfTUZOICkKKyAg ICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSAhPSBtZm5feChJTlZBTElEX01GTikgKQog ICAgIHsKICAgICAgICAgZm9yX2VhY2hfdmNwdSggZCwgdiApCiAgICAgICAgICAgICBpZiAoIGlk eCAhPSB2Y3B1X2FsdHAybSh2KS5wMm1pZHggKQpAQCAtMjU0MSw3ICsyNTQxLDcgQEAgaW50IHAy bV9jaGFuZ2VfYWx0cDJtX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4LAog ICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyOwogICAgIGludCByYyA9IC1FSU5WQUw7CiAKLSAg ICBpZiAoIGlkeCA+PSBNQVhfQUxUUDJNIHx8IGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSA9PSBJ TlZBTElEX01GTiApCisgICAgaWYgKCBpZHggPj0gTUFYX0FMVFAyTSB8fCBkLT5hcmNoLmFsdHAy bV9lcHRwW2lkeF0gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAgICAgICAgcmV0dXJuIHJjOwog CiAgICAgaHAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKQEAgLTI2MzYsMTQgKzI2MzYsMTQgQEAg dm9pZCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3Qg Z2ZuLAogCiAgICAgZm9yICggaSA9IDA7IGkgPCBNQVhfQUxUUDJNOyBpKysgKQogICAgIHsKLSAg ICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IElOVkFMSURfTUZOICkKKyAgICAg ICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IG1mbl94KElOVkFMSURfTUZOKSApCiAg ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1b aV07CiAgICAgICAgIG0gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuX3goZ2ZuKSwgJnQs ICZhLCAwLCBOVUxMKTsKIAogICAgICAgICAvKiBDaGVjayBmb3IgYSBkcm9wcGVkIHBhZ2UgdGhh dCBtYXkgaW1wYWN0IHRoaXMgYWx0cDJtICovCi0gICAgICAgIGlmICggbWZuX3gobWZuKSA9PSBJ TlZBTElEX01GTiAmJgorICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSAmJgog ICAgICAgICAgICAgIGdmbl94KGdmbikgPj0gcDJtLT5taW5fcmVtYXBwZWRfZ2ZuICYmCiAgICAg ICAgICAgICAgZ2ZuX3goZ2ZuKSA8PSBwMm0tPm1heF9yZW1hcHBlZF9nZm4gKQogICAgICAgICB7 CkBAIC0yNjYwLDcgKzI2NjAsNyBAQCB2b2lkIHAybV9hbHRwMm1fcHJvcGFnYXRlX2NoYW5nZShz dHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sCiAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7 IGkgPCBNQVhfQUxUUDJNOyBpKysgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgaWYgKCBpID09IGxhc3RfcmVzZXRfaWR4IHx8Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9PSBJTlZBTElEX01GTiApCisgICAgICAgICAgICAg ICAgICAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9PSBtZm5feChJTlZBTElEX01GTikg KQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAg ICAgcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwpAQCAtMjY3Miw3ICsyNjcyLDcgQEAgdm9p ZCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2Zu LAogICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g ICAgICAgIGVsc2UgaWYgKCBtZm5feChtKSAhPSBJTlZBTElEX01GTiApCisgICAgICAgIGVsc2Ug aWYgKCAhbWZuX2VxKG0sIElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICBwMm1fc2V0X2VudHJ5 KHAybSwgZ2ZuX3goZ2ZuKSwgbWZuLCBwYWdlX29yZGVyLCBwMm10LCBwMm1hKTsKIAogICAgICAg ICBfX3B1dF9nZm4ocDJtLCBnZm5feChnZm4pKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9wYWdpbmcuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwppbmRleCA4MjE5YmI2Li4xMDdm YzhjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKKysrIGIveGVuL2FyY2gv eDg2L21tL3BhZ2luZy5jCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBtZm5fdCBwYWdpbmdfbmV3 X2xvZ19kaXJ0eV9wYWdlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgaWYgKCB1bmxpa2VseShwYWdl ID09IE5VTEwpICkKICAgICB7CiAgICAgICAgIGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0eS5mYWls ZWRfYWxsb2NzKys7Ci0gICAgICAgIHJldHVybiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAg cmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0KIAogICAgIGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0 eS5hbGxvY3MrKzsKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIG1mbl90IHBhZ2luZ19uZXdfbG9n X2RpcnR5X25vZGUoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgaW50IGk7CiAgICAgICAgIG1m bl90ICpub2RlID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7CiAgICAgICAgIGZvciAoIGkgPSAwOyBp IDwgTE9HRElSVFlfTk9ERV9FTlRSSUVTOyBpKysgKQotICAgICAgICAgICAgbm9kZVtpXSA9IF9t Zm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgbm9kZVtpXSA9IElOVkFMSURfTUZOOwogICAg ICAgICB1bm1hcF9kb21haW5fcGFnZShub2RlKTsKICAgICB9CiAgICAgcmV0dXJuIG1mbjsKQEAg LTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgaW50IHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9iaXRtYXAo c3RydWN0IGRvbWFpbiAqZCwgaW50IHJjKQogCiAgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFn ZShsMik7CiAgICAgICAgICAgICBwYWdpbmdfZnJlZV9sb2dfZGlydHlfcGFnZShkLCBsM1tpM10p OwotICAgICAgICAgICAgbDNbaTNdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICBs M1tpM10gPSBJTlZBTElEX01GTjsKIAogICAgICAgICAgICAgaWYgKCBpMyA8IExPR0RJUlRZX05P REVfRU5UUklFUyAtIDEgJiYgaHlwZXJjYWxsX3ByZWVtcHRfY2hlY2soKSApCiAgICAgICAgICAg ICB7CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIGludCBwYWdpbmdfZnJlZV9sb2dfZGlydHlf Yml0bWFwKHN0cnVjdCBkb21haW4gKmQsIGludCByYykKICAgICAgICAgaWYgKCByYyApCiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgcGFnaW5nX2ZyZWVfbG9nX2RpcnR5X3BhZ2UoZCwgbDRb aTRdKTsKLSAgICAgICAgbDRbaTRdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgIGw0W2k0 XSA9IElOVkFMSURfTUZOOwogCiAgICAgICAgIGlmICggaTQgPCBMT0dESVJUWV9OT0RFX0VOVFJJ RVMgLSAxICYmIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQogICAgICAgICB7CkBAIC0xOTgs NyArMTk4LDcgQEAgc3RhdGljIGludCBwYWdpbmdfZnJlZV9sb2dfZGlydHlfYml0bWFwKHN0cnVj dCBkb21haW4gKmQsIGludCByYykKICAgICBpZiAoICFyYyApCiAgICAgewogICAgICAgICBwYWdp bmdfZnJlZV9sb2dfZGlydHlfcGFnZShkLCBkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wKTsK LSAgICAgICAgZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LnRvcCA9IF9tZm4oSU5WQUxJRF9NRk4p OworICAgICAgICBkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wID0gSU5WQUxJRF9NRk47CiAK ICAgICAgICAgQVNTRVJUKGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0eS5hbGxvY3MgPT0gMCk7CiAg ICAgICAgIGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0eS5mYWlsZWRfYWxsb2NzID0gMDsKQEAgLTY2 MCw3ICs2NjAsNyBAQCBpbnQgcGFnaW5nX2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGludCBkb21jcl9mbGFncykKICAgICAvKiBUaGlzIG11c3QgYmUgaW5pdGlhbGl6ZWQg c2VwYXJhdGVseSBmcm9tIHRoZSByZXN0IG9mIHRoZQogICAgICAqIGxvZy1kaXJ0eSBpbml0IGNv ZGUgYXMgdGhhdCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGFuZCB3ZQogICAgICAqIGRv bid0IHdhbnQgdG8gbGVhayBhbnkgYWN0aXZlIGxvZy1kaXJ0eSBiaXRtYXBzICovCi0gICAgZC0+ YXJjaC5wYWdpbmcubG9nX2RpcnR5LnRvcCA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIGQtPmFy Y2gucGFnaW5nLmxvZ19kaXJ0eS50b3AgPSBJTlZBTElEX01GTjsKIAogICAgIC8qCiAgICAgICog U2hhZG93IHBhZ2V0YWJsZXMgYXJlIHRoZSBkZWZhdWx0LCBidXQgd2Ugd2lsbCB1c2UKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgYi94ZW4vYXJjaC94ODYvbW0v c2hhZG93L2NvbW1vbi5jCmluZGV4IDIyNmUzMmQuLmM1MWIzNzAgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9j b21tb24uYwpAQCAtODgsMTAgKzg4LDEwIEBAIHZvaWQgc2hhZG93X3ZjcHVfaW5pdChzdHJ1Y3Qg dmNwdSAqdikKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgU0hBRE9XX09PU19QQUdFUzsgaSsrICkK ICAgICB7Ci0gICAgICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5vb3NbaV0gPSBfbWZuKElOVkFM SURfTUZOKTsKLSAgICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19zbmFwc2hvdFtpXSA9 IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zW2ld ID0gSU5WQUxJRF9NRk47CisgICAgICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5vb3Nfc25hcHNo b3RbaV0gPSBJTlZBTElEX01GTjsKICAgICAgICAgZm9yICggaiA9IDA7IGogPCBTSEFET1dfT09T X0ZJWFVQUzsgaisrICkKLSAgICAgICAgICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5vb3NfZml4 dXBbaV0uc21mbltqXSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgdi0+YXJjaC5w YWdpbmcuc2hhZG93Lm9vc19maXh1cFtpXS5zbWZuW2pdID0gSU5WQUxJRF9NRk47CiAgICAgfQog I2VuZGlmCiAKQEAgLTU5MywxMiArNTkzLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IG9vc19maXh1 cF9mbHVzaF9nbWZuKHN0cnVjdCB2Y3B1ICp2LCBtZm5fdCBnbWZuLAogICAgIGludCBpOwogICAg IGZvciAoIGkgPSAwOyBpIDwgU0hBRE9XX09PU19GSVhVUFM7IGkrKyApCiAgICAgewotICAgICAg ICBpZiAoIG1mbl94KGZpeHVwLT5zbWZuW2ldKSAhPSBJTlZBTElEX01GTiApCisgICAgICAgIGlm ICggIW1mbl9lcShmaXh1cC0+c21mbltpXSwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgewogICAg ICAgICAgICAgc2hfcmVtb3ZlX3dyaXRlX2FjY2Vzc19mcm9tX3NsMXAoZCwgZ21mbiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeHVwLT5zbWZuW2ldLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dXAtPm9mZltp XSk7Ci0gICAgICAgICAgICBmaXh1cC0+c21mbltpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAg ICAgICAgICAgZml4dXAtPnNtZm5baV0gPSBJTlZBTElEX01GTjsKICAgICAgICAgfQogICAgIH0K IApAQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgb29zX2ZpeHVwX2FkZChzdHJ1Y3QgZG9tYWluICpk LCBtZm5fdCBnbWZuLAogCiAgICAgICAgICAgICBuZXh0ID0gb29zX2ZpeHVwW2lkeF0ubmV4dDsK IAotICAgICAgICAgICAgaWYgKCBtZm5feChvb3NfZml4dXBbaWR4XS5zbWZuW25leHRdKSAhPSBJ TlZBTElEX01GTiApCisgICAgICAgICAgICBpZiAoICFtZm5fZXEob29zX2ZpeHVwW2lkeF0uc21m bltuZXh0XSwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBU UkFDRV9TSEFET1dfUEFUSF9GTEFHKFRSQ0VfU0ZMQUdfT09TX0ZJWFVQX0VWSUNUKTsKIApAQCAt NzU3LDcgKzc1Nyw3IEBAIHN0YXRpYyB2b2lkIG9vc19oYXNoX2FkZChzdHJ1Y3QgdmNwdSAqdiwg bWZuX3QgZ21mbikKICAgICBzdHJ1Y3Qgb29zX2ZpeHVwIGZpeHVwID0geyAubmV4dCA9IDAgfTsK IAogICAgIGZvciAoaSA9IDA7IGkgPCBTSEFET1dfT09TX0ZJWFVQUzsgaSsrICkKLSAgICAgICAg Zml4dXAuc21mbltpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICBmaXh1cC5zbWZuW2ld ID0gSU5WQUxJRF9NRk47CiAKICAgICBpZHggPSBtZm5feChnbWZuKSAlIFNIQURPV19PT1NfUEFH RVM7CiAgICAgb2lkeCA9IGlkeDsKQEAgLTgwNyw3ICs4MDcsNyBAQCBzdGF0aWMgdm9pZCBvb3Nf aGFzaF9yZW1vdmUoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKICAgICAgICAgICAgIGlk eCA9IChpZHggKyAxKSAlIFNIQURPV19PT1NfUEFHRVM7CiAgICAgICAgIGlmICggbWZuX3gob29z W2lkeF0pID09IG1mbl94KGdtZm4pICkKICAgICAgICAgewotICAgICAgICAgICAgb29zW2lkeF0g PSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgICAgIG9vc1tpZHhdID0gSU5WQUxJRF9NRk47 CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC04MzgsNyArODM4LDcg QEAgbWZuX3Qgb29zX3NuYXBzaG90X2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBnbWZu KQogCiAgICAgU0hBRE9XX0VSUk9SKCJnbWZuICVseCB3YXMgT09TIGJ1dCBub3QgaW4gaGFzaCB0 YWJsZVxuIiwgbWZuX3goZ21mbikpOwogICAgIEJVRygpOwotICAgIHJldHVybiBfbWZuKElOVkFM SURfTUZOKTsKKyAgICByZXR1cm4gSU5WQUxJRF9NRk47CiB9CiAKIC8qIFB1bGwgYSBzaW5nbGUg Z3Vlc3QgcGFnZSBiYWNrIGludG8gc3luYyAqLwpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgc2hf cmVzeW5jKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4pCiAgICAgICAgIGlmICggbWZuX3go b29zW2lkeF0pID09IG1mbl94KGdtZm4pICkKICAgICAgICAgewogICAgICAgICAgICAgX3NoX3Jl c3luYyh2LCBnbWZuLCAmb29zX2ZpeHVwW2lkeF0sIG9vc19zbmFwc2hvdFtpZHhdKTsKLSAgICAg ICAgICAgIG9vc1tpZHhdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICBvb3NbaWR4 XSA9IElOVkFMSURfTUZOOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA QCAtOTE0LDcgKzkxNCw3IEBAIHZvaWQgc2hfcmVzeW5jX2FsbChzdHJ1Y3QgdmNwdSAqdiwgaW50 IHNraXAsIGludCB0aGlzLCBpbnQgb3RoZXJzKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBX cml0ZS1wcm90ZWN0IGFuZCBzeW5jIGNvbnRlbnRzICovCiAgICAgICAgICAgICBfc2hfcmVzeW5j KHYsIG9vc1tpZHhdLCAmb29zX2ZpeHVwW2lkeF0sIG9vc19zbmFwc2hvdFtpZHhdKTsKLSAgICAg ICAgICAgIG9vc1tpZHhdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICBvb3NbaWR4 XSA9IElOVkFMSURfTUZOOwogICAgICAgICB9CiAKICByZXN5bmNfb3RoZXJzOgpAQCAtOTQ4LDcg Kzk0OCw3IEBAIHZvaWQgc2hfcmVzeW5jX2FsbChzdHJ1Y3QgdmNwdSAqdiwgaW50IHNraXAsIGlu dCB0aGlzLCBpbnQgb3RoZXJzKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIFdy aXRlLXByb3RlY3QgYW5kIHN5bmMgY29udGVudHMgKi8KICAgICAgICAgICAgICAgICBfc2hfcmVz eW5jKG90aGVyLCBvb3NbaWR4XSwgJm9vc19maXh1cFtpZHhdLCBvb3Nfc25hcHNob3RbaWR4XSk7 Ci0gICAgICAgICAgICAgICAgb29zW2lkeF0gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAg ICAgICAgICBvb3NbaWR4XSA9IElOVkFMSURfTUZOOwogICAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgfQpAQCAtMTc4NCw3ICsxNzg0LDcgQEAgdm9pZCAqc2hfZW11bGF0ZV9tYXBfZGVzdChz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YWRkciwKICAgICBpZiAoIGxpa2VseSgoKHZh ZGRyICsgYnl0ZXMgLSAxKSAmIFBBR0VfTUFTSykgPT0gKHZhZGRyICYgUEFHRV9NQVNLKSkgKQog ICAgIHsKICAgICAgICAgLyogV2hvbGUgd3JpdGUgZml0cyBvbiBhIHNpbmdsZSBwYWdlLiAqLwot ICAgICAgICBzaF9jdHh0LT5tZm5bMV0gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgc2hf Y3R4dC0+bWZuWzFdID0gSU5WQUxJRF9NRk47CiAgICAgICAgIG1hcCA9IG1hcF9kb21haW5fcGFn ZShzaF9jdHh0LT5tZm5bMF0pICsgKHZhZGRyICYgflBBR0VfTUFTSyk7CiAgICAgfQogICAgIGVs c2UgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCkBAIC0yMDg2LDcgKzIwODYsNyBAQCBtZm5fdCBz aGFkb3dfaGFzaF9sb29rdXAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBuLCB1bnNp Z25lZCBpbnQgdCkKICAgICB9CiAKICAgICBwZXJmY19pbmNyKHNoYWRvd19oYXNoX2xvb2t1cF9t aXNzKTsKLSAgICByZXR1cm4gX21mbihJTlZBTElEX01GTik7CisgICAgcmV0dXJuIElOVkFMSURf TUZOOwogfQogCiB2b2lkIHNoYWRvd19oYXNoX2luc2VydChzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIG4sIHVuc2lnbmVkIGludCB0LApAQCAtMjkxMCw3ICsyOTEwLDcgQEAgdm9pZCBz aF9yZXNldF9sM191cF9wb2ludGVycyhzdHJ1Y3QgdmNwdSAqdikKICAgICB9OwogICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBpbnQgY2FsbGJhY2tfbWFzayA9IFNIRl9MM182NDsKIAotICAgIGhh c2hfdmNwdV9mb3JlYWNoKHYsIGNhbGxiYWNrX21hc2ssIGNhbGxiYWNrcywgX21mbihJTlZBTElE X01GTikpOworICAgIGhhc2hfdmNwdV9mb3JlYWNoKHYsIGNhbGxiYWNrX21hc2ssIGNhbGxiYWNr cywgSU5WQUxJRF9NRk4pOwogfQogCiAKQEAgLTI5NDAsNyArMjk0MCw3IEBAIHN0YXRpYyB2b2lk IHNoX3VwZGF0ZV9wYWdpbmdfbW9kZXMoc3RydWN0IHZjcHUgKnYpCiAjZW5kaWYgLyogKFNIQURP V19PUFRJTUlaQVRJT05TICYgU0hPUFRfVklSVFVBTF9UTEIpICovCiAKICNpZiAoU0hBRE9XX09Q VElNSVpBVElPTlMgJiBTSE9QVF9PVVRfT0ZfU1lOQykKLSAgICBpZiAoIG1mbl94KHYtPmFyY2gu cGFnaW5nLnNoYWRvdy5vb3Nfc25hcHNob3RbMF0pID09IElOVkFMSURfTUZOICkKKyAgICBpZiAo IG1mbl9lcSh2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX3NuYXBzaG90WzBdLCBJTlZBTElEX01G TikgKQogICAgIHsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvcihpID0gMDsgaSA8IFNIQURP V19PT1NfUEFHRVM7IGkrKykKQEAgLTMyODQsNyArMzI4NCw3IEBAIHZvaWQgc2hhZG93X3RlYXJk b3duKHN0cnVjdCBkb21haW4gKmQsIGludCAqcHJlZW1wdGVkKQogICAgICAgICAgICAgICAgIGlm ICggbWZuX3ZhbGlkKG9vc19zbmFwc2hvdFtpXSkgKQogICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgc2hhZG93X2ZyZWUoZCwgb29zX3NuYXBzaG90W2ldKTsKLSAgICAgICAg ICAgICAgICAgICAgb29zX3NuYXBzaG90W2ldID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAg ICAgICAgICAgICAgIG9vc19zbmFwc2hvdFtpXSA9IElOVkFMSURfTUZOOwogICAgICAgICAgICAg ICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8qIE9PUyAqLwpAQCAtMzQ0OSw3ICszNDQ5LDcgQEAg c3RhdGljIGludCBzaGFkb3dfb25lX2JpdF9kaXNhYmxlKHN0cnVjdCBkb21haW4gKmQsIHUzMiBt b2RlKQogICAgICAgICAgICAgICAgICAgICBpZiAoIG1mbl92YWxpZChvb3Nfc25hcHNob3RbaV0p ICkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93 X2ZyZWUoZCwgb29zX3NuYXBzaG90W2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9vc19z bmFwc2hvdFtpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgICAgICAgICAgICAg b29zX3NuYXBzaG90W2ldID0gSU5WQUxJRF9NRk47CiAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIH0KICNlbmRpZiAvKiBPT1MgKi8KQEAgLTM3NDQsNyArMzc0NCw3IEBAIGludCBz aGFkb3dfdHJhY2tfZGlydHlfdnJhbShzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBtZW1jcHko ZGlydHlfYml0bWFwLCBkaXJ0eV92cmFtLT5kaXJ0eV9iaXRtYXAsIGRpcnR5X3NpemUpOwogICAg IGVsc2UKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgbWFwX21mbiA9IElOVkFMSURfTUZO OworICAgICAgICB1bnNpZ25lZCBsb25nIG1hcF9tZm4gPSBtZm5feChJTlZBTElEX01GTik7CiAg ICAgICAgIHZvaWQgKm1hcF9zbDFwID0gTlVMTDsKIAogICAgICAgICAvKiBJdGVyYXRlIG92ZXIg VlJBTSB0byB0cmFjayBkaXJ0eSBiaXRzLiAqLwpAQCAtMzc1NCw3ICszNzU0LDcgQEAgaW50IHNo YWRvd190cmFja19kaXJ0eV92cmFtKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICBpbnQg ZGlydHkgPSAwOwogICAgICAgICAgICAgcGFkZHJfdCBzbDFtYSA9IGRpcnR5X3ZyYW0tPnNsMW1h W2ldOwogCi0gICAgICAgICAgICBpZiAobWZuX3gobWZuKSA9PSBJTlZBTElEX01GTikKKyAgICAg ICAgICAgIGlmICggIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgZGlydHkgPSAxOwogICAgICAgICAgICAgfQpAQCAtMzgzMCw3ICszODMw LDcgQEAgaW50IHNoYWRvd190cmFja19kaXJ0eV92cmFtKHN0cnVjdCBkb21haW4gKmQsCiAgICAg ICAgICAgICBmb3IgKCBpID0gYmVnaW5fcGZuOyBpIDwgZW5kX3BmbjsgaSsrICkKICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICBtZm5fdCBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2Vk KGQsIGksICZ0KTsKLSAgICAgICAgICAgICAgICBpZiAoIG1mbl94KG1mbikgIT0gSU5WQUxJRF9N Rk4gKQorICAgICAgICAgICAgICAgIGlmICggIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAg ICAgICAgICAgICAgICAgICAgIGZsdXNoX3RsYiB8PSBzaF9yZW1vdmVfd3JpdGVfYWNjZXNzKGQs IG1mbiwgMSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkaXJ0eV92cmFtLT5sYXN0 X2RpcnR5ID0gLTE7CkBAIC0zOTY4LDcgKzM5NjgsNyBAQCB2b2lkIHNoYWRvd19hdWRpdF90YWJs ZXMoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBoYXNoX3ZjcHVfZm9y ZWFjaCh2LCBtYXNrLCBjYWxsYmFja3MsIF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAgICBoYXNoX3Zj cHVfZm9yZWFjaCh2LCBtYXNrLCBjYWxsYmFja3MsIElOVkFMSURfTUZOX1QpOwogfQogCiAjZW5k aWYgLyogU2hhZG93IGF1ZGl0ICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93 L211bHRpLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKaW5kZXggZGZlNTlhMi4u Zjg5MmUyZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHNoX3dh bGtfZ3Vlc3RfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIHZhLCB3YWxrX3Qg Kmd3LAogewogICAgIHJldHVybiBndWVzdF93YWxrX3RhYmxlcyh2LCBwMm1fZ2V0X2hvc3RwMm0o di0+ZG9tYWluKSwgdmEsIGd3LCBwZmVjLAogI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gMyAv KiBQQUUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihJTlZBTElEX01GTiks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfTUZOLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cuZ2wzZQogI2Vsc2UgLyogMzIg b3IgNjQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXRhYmxlX2dldF9tZm4o di0+YXJjaC5ndWVzdF90YWJsZSksCkBAIC0zMzYsMzIgKzMzNiwzMiBAQCBzdGF0aWMgdm9pZCBz aF9hdWRpdF9ndyhzdHJ1Y3QgdmNwdSAqdiwgd2Fsa190ICpndykKICAgICBpZiAoIG1mbl92YWxp ZChndy0+bDRtZm4pCiAgICAgICAgICAmJiBtZm5fdmFsaWQoKHNtZm4gPSBnZXRfc2hhZG93X3N0 YXR1cyhkLCBndy0+bDRtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTSF90eXBlX2w0X3NoYWRvdykpKSApCi0gICAgICAgICh2b2lkKSBzaF9hdWRp dF9sNF90YWJsZSh2LCBzbWZuLCBfbWZuKElOVkFMSURfTUZOKSk7CisgICAgICAgICh2b2lkKSBz aF9hdWRpdF9sNF90YWJsZSh2LCBzbWZuLCBJTlZBTElEX01GTik7CiAgICAgaWYgKCBtZm5fdmFs aWQoZ3ctPmwzbWZuKQogICAgICAgICAgJiYgbWZuX3ZhbGlkKChzbWZuID0gZ2V0X3NoYWRvd19z dGF0dXMoZCwgZ3ctPmwzbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU0hfdHlwZV9sM19zaGFkb3cpKSkgKQotICAgICAgICAodm9pZCkgc2hfYXVk aXRfbDNfdGFibGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikpOworICAgICAgICAodm9pZCkg c2hfYXVkaXRfbDNfdGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4pOwogI2VuZGlmIC8qIFBBRSBv ciA2NC4uLiAqLwogICAgIGlmICggbWZuX3ZhbGlkKGd3LT5sMm1mbikgKQogICAgIHsKICAgICAg ICAgaWYgKCBtZm5fdmFsaWQoKHNtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBndy0+bDJtZm4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfdHlw ZV9sMl9zaGFkb3cpKSkgKQotICAgICAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2wyX3RhYmxlKHYs IHNtZm4sIF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAgICAgICAgICAgICh2b2lkKSBzaF9hdWRpdF9s Ml90YWJsZSh2LCBzbWZuLCBJTlZBTElEX01GTik7CiAjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA9 PSAzCiAgICAgICAgIGlmICggbWZuX3ZhbGlkKChzbWZuID0gZ2V0X3NoYWRvd19zdGF0dXMoZCwg Z3ctPmwybWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNIX3R5cGVfbDJoX3NoYWRvdykpKSApCi0gICAgICAgICAgICAodm9pZCkgc2hfYXVkaXRf bDJfdGFibGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikpOworICAgICAgICAgICAgKHZvaWQp IHNoX2F1ZGl0X2wyX3RhYmxlKHYsIHNtZm4sIElOVkFMSURfTUZOKTsKICNlbmRpZgogICAgIH0K ICAgICBpZiAoIG1mbl92YWxpZChndy0+bDFtZm4pCiAgICAgICAgICAmJiBtZm5fdmFsaWQoKHNt Zm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBndy0+bDFtZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF90eXBlX2wxX3NoYWRvdykpKSApCi0gICAg ICAgICh2b2lkKSBzaF9hdWRpdF9sMV90YWJsZSh2LCBzbWZuLCBfbWZuKElOVkFMSURfTUZOKSk7 CisgICAgICAgICh2b2lkKSBzaF9hdWRpdF9sMV90YWJsZSh2LCBzbWZuLCBJTlZBTElEX01GTik7 CiAgICAgZWxzZSBpZiAoIChndWVzdF9sMmVfZ2V0X2ZsYWdzKGd3LT5sMmUpICYgX1BBR0VfUFJF U0VOVCkKICAgICAgICAgICAgICAgJiYgKGd1ZXN0X2wyZV9nZXRfZmxhZ3MoZ3ctPmwyZSkgJiBf UEFHRV9QU0UpCiAgICAgICAgICAgICAgICYmIG1mbl92YWxpZCgKICAgICAgICAgICAgICAgKHNt Zm4gPSBnZXRfZmwxX3NoYWRvd19zdGF0dXMoZCwgZ3Vlc3RfbDJlX2dldF9nZm4oZ3ctPmwyZSkp KSkgKQotICAgICAgICAodm9pZCkgc2hfYXVkaXRfZmwxX3RhYmxlKHYsIHNtZm4sIF9tZm4oSU5W QUxJRF9NRk4pKTsKKyAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2ZsMV90YWJsZSh2LCBzbWZuLCBJ TlZBTElEX01GTik7CiB9CiAKICNlbHNlCkBAIC0xNzUyLDcgKzE3NTIsNyBAQCBzdGF0aWMgc2hh ZG93X2wyZV90ICogc2hhZG93X2dldF9hbmRfY3JlYXRlX2wyZShzdHJ1Y3QgdmNwdSAqdiwKIHsK ICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQgLyogNjRiaXQuLi4gKi8KICAgICBzdHJ1Y3Qg ZG9tYWluICpkID0gdi0+ZG9tYWluOwotICAgIG1mbl90IHNsM21mbiA9IF9tZm4oSU5WQUxJRF9N Rk4pOworICAgIG1mbl90IHNsM21mbiA9IElOVkFMSURfTUZOOwogICAgIHNoYWRvd19sM2VfdCAq c2wzZTsKICAgICBpZiAoICFtZm5fdmFsaWQoZ3ctPmwybWZuKSApIHJldHVybiBOVUxMOyAvKiBO byBndWVzdCBwYWdlLiAqLwogICAgIC8qIEdldCB0aGUgbDNlICovCkBAIC0yMTU4LDcgKzIxNTgs NyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2dsNGUoc3RydWN0IHZjcHUgKnYsIHZvaWQgKm5ld19n ZSwgbWZuX3Qgc2w0bWZuLCB2b2lkICpzZSkKICAgICBzaGFkb3dfbDRlX3QgbmV3X3NsNGU7CiAg ICAgZ3Vlc3RfbDRlX3QgbmV3X2dsNGUgPSAqKGd1ZXN0X2w0ZV90ICopbmV3X2dlOwogICAgIHNo YWRvd19sNGVfdCAqc2w0cCA9IHNlOwotICAgIG1mbl90IHNsM21mbiA9IF9tZm4oSU5WQUxJRF9N Rk4pOworICAgIG1mbl90IHNsM21mbiA9IElOVkFMSURfTUZOOwogICAgIHN0cnVjdCBkb21haW4g KmQgPSB2LT5kb21haW47CiAgICAgcDJtX3R5cGVfdCBwMm10OwogICAgIGludCByZXN1bHQgPSAw OwpAQCAtMjIxNyw3ICsyMjE3LDcgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9nbDNlKHN0cnVjdCB2 Y3B1ICp2LCB2b2lkICpuZXdfZ2UsIG1mbl90IHNsM21mbiwgdm9pZCAqc2UpCiAgICAgc2hhZG93 X2wzZV90IG5ld19zbDNlOwogICAgIGd1ZXN0X2wzZV90IG5ld19nbDNlID0gKihndWVzdF9sM2Vf dCAqKW5ld19nZTsKICAgICBzaGFkb3dfbDNlX3QgKnNsM3AgPSBzZTsKLSAgICBtZm5fdCBzbDJt Zm4gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICBtZm5fdCBzbDJtZm4gPSBJTlZBTElEX01GTjsK ICAgICBwMm1fdHlwZV90IHAybXQ7CiAgICAgaW50IHJlc3VsdCA9IDA7CiAKQEAgLTIyNTAsNyAr MjI1MCw3IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfZ2wyZShzdHJ1Y3QgdmNwdSAqdiwgdm9pZCAq bmV3X2dlLCBtZm5fdCBzbDJtZm4sIHZvaWQgKnNlKQogICAgIHNoYWRvd19sMmVfdCBuZXdfc2wy ZTsKICAgICBndWVzdF9sMmVfdCBuZXdfZ2wyZSA9ICooZ3Vlc3RfbDJlX3QgKiluZXdfZ2U7CiAg ICAgc2hhZG93X2wyZV90ICpzbDJwID0gc2U7Ci0gICAgbWZuX3Qgc2wxbWZuID0gX21mbihJTlZB TElEX01GTik7CisgICAgbWZuX3Qgc2wxbWZuID0gSU5WQUxJRF9NRk47CiAgICAgcDJtX3R5cGVf dCBwMm10OwogICAgIGludCByZXN1bHQgPSAwOwogCkBAIC0yNjA4LDcgKzI2MDgsNyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgY2hlY2tfZm9yX2Vhcmx5X3Vuc2hhZG93KHN0cnVjdCB2Y3B1ICp2LCBt Zm5fdCBnbWZuKQogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2Vhcmx5X3Vuc2hhZG93KHN0cnVj dCB2Y3B1ICp2KQogewogI2lmIFNIQURPV19PUFRJTUlaQVRJT05TICYgU0hPUFRfRUFSTFlfVU5T SEFET1cKLSAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cubGFzdF9lbXVsYXRlZF9tZm5fZm9yX3Vu c2hhZG93ID0gSU5WQUxJRF9NRk47CisgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93Lmxhc3RfZW11 bGF0ZWRfbWZuX2Zvcl91bnNoYWRvdyA9IG1mbl94KElOVkFMSURfTUZOKTsKICNlbmRpZgogfQog CkBAIC00MTA1LDEwICs0MTA1LDEwIEBAIHNoX3VwZGF0ZV9jcjMoc3RydWN0IHZjcHUgKnYsIGlu dCBkb19sb2NraW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID8gU0hfdHlwZV9sMmhfc2hhZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiBTSF90eXBlX2wyX3NoYWRvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgICAgICAgICBzaF9zZXRfdG9wbGV2ZWxfc2hhZG93KHYsIGksIF9tZm4oSU5WQUxJ RF9NRk4pLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgc2hfc2V0X3RvcGxldmVsX3NoYWRvdyh2 LCBpLCBJTlZBTElEX01GTiwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0g ICAgICAgICAgICAgICAgc2hfc2V0X3RvcGxldmVsX3NoYWRvdyh2LCBpLCBfbWZuKElOVkFMSURf TUZOKSwgMCk7CisgICAgICAgICAgICAgICAgc2hfc2V0X3RvcGxldmVsX3NoYWRvdyh2LCBpLCBJ TlZBTElEX01GTiwgMCk7CiAgICAgICAgIH0KICAgICB9CiAjZWxpZiBHVUVTVF9QQUdJTkdfTEVW RUxTID09IDQKQEAgLTQ1MzEsNyArNDUzMSw3IEBAIHN0YXRpYyB2b2lkIHNoX3BhZ2V0YWJsZV9k eWluZyhzdHJ1Y3QgdmNwdSAqdiwgcGFkZHJfdCBncGEpCiAKICAgICAgICAgaWYgKCBmYXN0X3Bh dGggKSB7CiAgICAgICAgICAgICBpZiAoIHBhZ2V0YWJsZV9pc19udWxsKHYtPmFyY2guc2hhZG93 X3RhYmxlW2ldKSApCi0gICAgICAgICAgICAgICAgc21mbiA9IF9tZm4oSU5WQUxJRF9NRk4pOwor ICAgICAgICAgICAgICAgIHNtZm4gPSBJTlZBTElEX01GTjsKICAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgICBzbWZuID0gX21mbihwYWdldGFibGVfZ2V0X3Bmbih2LT5hcmNoLnNoYWRv d190YWJsZVtpXSkpOwogICAgICAgICB9CkBAIC00NTQwLDggKzQ1NDAsOCBAQCBzdGF0aWMgdm9p ZCBzaF9wYWdldGFibGVfZHlpbmcoc3RydWN0IHZjcHUgKnYsIHBhZGRyX3QgZ3BhKQogICAgICAg ICAgICAgLyogcmV0cmlldmluZyB0aGUgbDJzICovCiAgICAgICAgICAgICBnbWZuID0gZ2V0X2dm bl9xdWVyeV91bmxvY2tlZChkLCBnZm5feChndWVzdF9sM2VfZ2V0X2dmbihnbDNlW2ldKSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcDJtdCk7Ci0gICAgICAg ICAgICBzbWZuID0gdW5saWtlbHkobWZuX3goZ21mbikgPT0gSU5WQUxJRF9NRk4pCi0gICAgICAg ICAgICAgICAgICAgPyBfbWZuKElOVkFMSURfTUZOKQorICAgICAgICAgICAgc21mbiA9IHVubGlr ZWx5KG1mbl9lcShnbWZuLCBJTlZBTElEX01GTikpCisgICAgICAgICAgICAgICAgICAgPyBJTlZB TElEX01GTgogICAgICAgICAgICAgICAgICAgIDogc2hhZG93X2hhc2hfbG9va3VwKGQsIG1mbl94 KGdtZm4pLCBTSF90eXBlX2wyX3BhZV9zaGFkb3cpOwogICAgICAgICB9CiAKQEAgLTQ4NDYsNyAr NDg0Niw3IEBAIGludCBzaF9hdWRpdF9mbDFfdGFibGUoc3RydWN0IHZjcHUgKnYsIG1mbl90IHNs MW1mbiwgbWZuX3QgeCkKIHsKICAgICBndWVzdF9sMWVfdCAqZ2wxZSwgZTsKICAgICBzaGFkb3df bDFlX3QgKnNsMWU7Ci0gICAgbWZuX3QgZ2wxbWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAg bWZuX3QgZ2wxbWZuID0gSU5WQUxJRF9NRk47CiAgICAgaW50IGY7CiAgICAgaW50IGRvbmUgPSAw OwogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2RvbWFpbi5jIGIveGVuL2NvbW1vbi9kb21haW4u YwppbmRleCA0NTI3M2Q0Li40MmMwN2VlIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5j CisrKyBiL3hlbi9jb21tb24vZG9tYWluLmMKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgdm9p ZCB2Y3B1X2luZm9fcmVzZXQoc3RydWN0IHZjcHUgKnYpCiAgICAgdi0+dmNwdV9pbmZvID0gKCh2 LT52Y3B1X2lkIDwgWEVOX0xFR0FDWV9NQVhfVkNQVVMpCiAgICAgICAgICAgICAgICAgICAgID8g KHZjcHVfaW5mb190ICopJnNoYXJlZF9pbmZvKGQsIHZjcHVfaW5mb1t2LT52Y3B1X2lkXSkKICAg ICAgICAgICAgICAgICAgICAgOiAmZHVtbXlfdmNwdV9pbmZvKTsKLSAgICB2LT52Y3B1X2luZm9f bWZuID0gSU5WQUxJRF9NRk47CisgICAgdi0+dmNwdV9pbmZvX21mbiA9IG1mbl94KElOVkFMSURf TUZOKTsKIH0KIAogc3RydWN0IHZjcHUgKmFsbG9jX3ZjcHUoCkBAIC0xMTQxLDcgKzExNDEsNyBA QCBpbnQgbWFwX3ZjcHVfaW5mbyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBnZm4sIHVu c2lnbmVkIG9mZnNldCkKICAgICBpZiAoIG9mZnNldCA+IChQQUdFX1NJWkUgLSBzaXplb2YodmNw dV9pbmZvX3QpKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgaWYgKCB2LT52Y3B1 X2luZm9fbWZuICE9IElOVkFMSURfTUZOICkKKyAgICBpZiAoIHYtPnZjcHVfaW5mb19tZm4gIT0g bWZuX3goSU5WQUxJRF9NRk4pICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICAvKiBS dW4gdGhpcyBjb21tYW5kIG9uIHlvdXJzZWxmIG9yIG9uIG90aGVyIG9mZmxpbmUgVkNQVVMuICov CkBAIC0xMjA1LDcgKzEyMDUsNyBAQCB2b2lkIHVubWFwX3ZjcHVfaW5mbyhzdHJ1Y3QgdmNwdSAq dikKIHsKICAgICB1bnNpZ25lZCBsb25nIG1mbjsKIAotICAgIGlmICggdi0+dmNwdV9pbmZvX21m biA9PSBJTlZBTElEX01GTiApCisgICAgaWYgKCB2LT52Y3B1X2luZm9fbWZuID09IG1mbl94KElO VkFMSURfTUZOKSApCiAgICAgICAgIHJldHVybjsKIAogICAgIG1mbiA9IHYtPnZjcHVfaW5mb19t Zm47CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dy YW50X3RhYmxlLmMKaW5kZXggM2YxNTU0My4uZWNhY2UwNyAxMDA2NDQKLS0tIGEveGVuL2NvbW1v bi9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMjQ0LDcg KzI0NCw3IEBAIHN0YXRpYyBpbnQgX19nZXRfcGFnZWRfZnJhbWUodW5zaWduZWQgbG9uZyBnZm4s IHVuc2lnbmVkIGxvbmcgKmZyYW1lLCBzdHJ1Y3QgcGFnCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocmVhZG9ubHkpID8gUDJNX0FMTE9DIDogUDJNX1VOU0hBUkUpOwogICAgIGlmICgg ISgqcGFnZSkgKQogICAgIHsKLSAgICAgICAgKmZyYW1lID0gSU5WQUxJRF9NRk47CisgICAgICAg ICpmcmFtZSA9IG1mbl94KElOVkFMSURfTUZOKTsKICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVk KHAybXQpICkKICAgICAgICAgICAgIHJldHVybiBHTlRTVF9lYWdhaW47CiAgICAgICAgIGlmICgg cDJtX2lzX3BhZ2luZyhwMm10KSApCkBAIC0yNjAsNyArMjYwLDcgQEAgc3RhdGljIGludCBfX2dl dF9wYWdlZF9mcmFtZSh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyAqZnJhbWUsIHN0 cnVjdCBwYWcKICAgICAqcGFnZSA9IG1mbl92YWxpZCgqZnJhbWUpID8gbWZuX3RvX3BhZ2UoKmZy YW1lKSA6IE5VTEw7CiAgICAgaWYgKCAoISgqcGFnZSkpIHx8ICghZ2V0X3BhZ2UoKnBhZ2UsIHJk KSkgKQogICAgIHsKLSAgICAgICAgKmZyYW1lID0gSU5WQUxJRF9NRk47CisgICAgICAgICpmcmFt ZSA9IG1mbl94KElOVkFMSURfTUZOKTsKICAgICAgICAgKnBhZ2UgPSBOVUxMOwogICAgICAgICBy YyA9IEdOVFNUX2JhZF9wYWdlOwogICAgIH0KQEAgLTE3ODUsNyArMTc4NSw3IEBAIGdudHRhYl90 cmFuc2ZlcigKICAgICAgICAgICAgIHAybV90eXBlX3QgX19wMm10OwogICAgICAgICAgICAgbWZu ID0gbWZuX3goZ2V0X2dmbl91bnNoYXJlKGQsIGdvcC5tZm4sICZfX3AybXQpKTsKICAgICAgICAg ICAgIGlmICggcDJtX2lzX3NoYXJlZChfX3AybXQpIHx8ICFwMm1faXNfdmFsaWQoX19wMm10KSAp Ci0gICAgICAgICAgICAgICAgbWZuID0gSU5WQUxJRF9NRk47CisgICAgICAgICAgICAgICAgbWZu ID0gbWZuX3goSU5WQUxJRF9NRk4pOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBtZm4gPSBt Zm5feChnZm5fdG9fbWZuKGQsIF9nZm4oZ29wLm1mbikpKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKaW5kZXggYWZiYjFhMS4uN2YyMDdl YyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL21tLmgKKysrIGIveGVuL2luY2x1ZGUveGVu L21tLmgKQEAgLTU1LDcgKzU1LDcgQEAKIAogVFlQRV9TQUZFKHVuc2lnbmVkIGxvbmcsIG1mbik7 CiAjZGVmaW5lIFBSSV9tZm4gICAgICAgICAgIjA1bHgiCi0jZGVmaW5lIElOVkFMSURfTUZOICAg ICAgKH4wVUwpCisjZGVmaW5lIElOVkFMSURfTUZOICAgICAgX21mbih+MFVMKQogCiAjaWZuZGVm IG1mbl90CiAjZGVmaW5lIG1mbl90IC8qIEdyZXAgZm9kZGVyOiBtZm5fdCwgX21mbigpIGFuZCBt Zm5feCgpIGFyZSBkZWZpbmVkIGFib3ZlICovCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==