Re: PATCH: Arla 0.90 on Linux 2.6.34 to 4.4
Bo Branten <[email protected]> Fri, 15 Jan 2016 03:12:00 +0100 (CET)
| Newsgroups | gmane.comp.file-systems.arla.general |
|---|---|
| Message-ID | <[email protected]> |
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---276651502-1797910491-1452823920=:11672 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH: Arla 0.90 on Linux 2.6.34 to 4.4 With this patch there are no newer kernels so now we can start debugging nnpfs. Bo Branten ---276651502-1797910491-1452823920=:11672 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-arla-0.90-for-linux-4.4 Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-arla-0.90-for-linux-4.4 ZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2luY2x1 ZGUvbm5wZnMvbm5wZnNfYXR0ci5oIGFybGEtZm9yLWxpbnV4LTQuNC9ubnBm cy9pbmNsdWRlL25ucGZzL25ucGZzX2F0dHIuaA0KLS0tIGFybGEtMC45MC9u bnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2F0dHIuaAkyMDA2LTEwLTI0IDE4 OjMzOjMwLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtZm9yLWxpbnV4LTQu NC9ubnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2F0dHIuaAkyMDE2LTAxLTEy IDE5OjI5OjUwLjUyMjA3MjA4NCArMDEwMA0KQEAgLTExMyw4ICsxMTMsMTMg QEAgc3RydWN0IG5ucGZzX2F0dHIgew0KICAgICB1aW50MzJfdAkJeGFfbmxp bms7DQogICAgIHVpbnQzMl90CQl4YV90eXBlOw0KIA0KKyNpZiAoZGVmaW5l ZChfX0tFUk5FTF9fKSAmJiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMywxNCwwKSkNCisgICAga3VpZF90CQl4YV91aWQ7DQorICAg IGtnaWRfdAkJeGFfZ2lkOw0KKyNlbHNlDQogICAgIHVpbnQzMl90CQl4YV91 aWQ7DQogICAgIHVpbnQzMl90CQl4YV9naWQ7DQorI2VuZGlmDQogDQogICAg IHVpbnQzMl90CQl4YV9hdGltZTsNCiAgICAgdWludDMyX3QJCXhhX210aW1l Ow0KZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2lu Y2x1ZGUvbm5wZnMvbm5wZnNfYmxvY2tzLmggYXJsYS1mb3ItbGludXgtNC40 L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfYmxvY2tzLmgNCi0tLSBhcmxh LTAuOTAvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaAkyMDA2 LTEwLTI0IDE4OjMzOjMxLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtZm9y LWxpbnV4LTQuNC9ubnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2Jsb2Nrcy5o CTIwMDctMDEtMjQgMTg6MDk6MTcuMDAwMDAwMDAwICswMTAwDQpAQCAtMSw1 ICsxLDUgQEANCiAvKg0KLSAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LCBT dG9ja2hvbG1zIFVuaXZlcnNpdGV0DQorICogQ29weXJpZ2h0IChjKSAyMDA1 LTIwMDcsIFN0b2NraG9sbXMgVW5pdmVyc2l0ZXQNCiAgKiAoU3RvY2tob2xt IFVuaXZlcnNpdHksIFN0b2NraG9sbSBTd2VkZW4pDQogICogQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCiAgKg0KQEAgLTMxLDExICszMSwxNSBAQA0KICAqIFBP U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDog bm5wZnNfYmxvY2tzLmgsdiAxLjIgMjAwNi8xMC8yNCAxNjozMzozMSB0b2wg RXhwICQgKi8NCisvKiAkSWQ6IG5ucGZzX2Jsb2Nrcy5oLHYgMS4zIDIwMDcv MDEvMjQgMTc6MDk6MTcgdG9sIEV4cCAkICovDQogDQogI2RlZmluZSBOTlBG U19OT19JTkRFWCAgIDAgIC8qIGR1bW15IGNhY2hlIGluZGV4ICovDQogI2Rl ZmluZSBOTlBGU19OT19PRkZTRVQgICgodWludDY0X3QpLTEpICAvKiBkdW1t eSBvZmZzZXQsIG5vIGJsb2NrICovDQogDQotI2RlZmluZSBOTlBGU19DQUNI RV9GSUxFX1BBVEggICAgIiUwMlgvJTAyWC8lMDJsbFgiDQotI2RlZmluZSBO TlBGU19DQUNIRV9ESVJfUEFUSCAgICAgIiUwMlgvJTAyWEAiDQotI2RlZmlu ZSBOTlBGU19DQUNIRV9QQVRIX1NJWkUgICAgKCA2ICsxICsyKzEgKzE2ICsx KQ0KKyNkZWZpbmUgTk5QRlNfQ0FDSEVfRklMRV9ESVIxICAgICAgICAiJTAy eCINCisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEggICAgTk5Q RlNfQ0FDSEVfRklMRV9ESVIxICIvIiBOTlBGU19DQUNIRV9GSUxFX0RJUjEN CisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSCAgIiUwMmxs eCINCisNCisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfUEFUSCAgIE5OUEZT X0NBQ0hFX0ZJTEVfRElSX1BBVEggIi8iIE5OUEZTX0NBQ0hFX0ZJTEVfQkxP Q0tfUEFUSA0KKyNkZWZpbmUgTk5QRlNfQ0FDSEVfRElSX1BBVEggICAgTk5Q RlNfQ0FDSEVfRklMRV9ESVJfUEFUSCAiQCINCisjZGVmaW5lIE5OUEZTX0NB Q0hFX1BBVEhfU0laRSAgICggNiArMSArMisxICsxNiArMSApDQpkaWZmIC11 cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvaW5jbHVkZS9ubnBm cy9ubnBmc19tZXNzYWdlLmggYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2lu Y2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5oDQotLS0gYXJsYS0wLjkwL25u cGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5oCTIwMDYtMTAtMjQg MTg6MzM6MzIuMDAwMDAwMDAwICswMjAwDQorKysgYXJsYS1mb3ItbGludXgt NC40L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5oCTIwMTYt MDEtMTQgMDA6MjY6MDQuMTI2MDE1MTM2ICswMTAwDQpAQCAtMzEsNyArMzEs NyBAQA0KICAqIFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDogbm5w ZnNfbWVzc2FnZS5oLHYgMS42MSAyMDA2LzEwLzI0IDE2OjMzOjMyIHRvbCBF eHAgJCAqLw0KKy8qICRJZDogbm5wZnNfbWVzc2FnZS5oLHYgMS42MiAyMDA5 LzAyLzI0IDIwOjIwOjU1IHRvbCBFeHAgJCAqLw0KIA0KICNpZm5kZWYgX3ht c2dfaA0KICNkZWZpbmUgX3htc2dfaA0KQEAgLTUyLDcgKzUyLDExIEBAIHR5 cGVkZWYgdWludDE2X3Qgbm5wZnNfcmlnaHRzOw0KICAqIFRoZSBubnBmc19j cmVkLCBpZiBwYWcgPT0gMCwgdXNlIHVpZCANCiAgKi8NCiB0eXBlZGVmIHN0 cnVjdCBubnBmc19jcmVkIHsNCisjaWYgKGRlZmluZWQoX19LRVJORUxfXykg JiYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsMTQs MCkpDQorICAgIGt1aWRfdCB1aWQ7DQorI2Vsc2UNCiAgICAgdWludDMyX3Qg dWlkOw0KKyNlbmRpZg0KICAgICBubnBmc19wYWdfdCBwYWc7DQogfSBubnBm c19jcmVkOw0KIA0KQEAgLTEwNiw3ICsxMTAsNyBAQCB0eXBlZGVmIHN0cnVj dCBubnBmc19ibG9ja19oYW5kbGUgew0KIA0KIC8qIG5ucGZzX25vZGUuZmxh Z3MNCiAgKiBUaGUgbG93ZXIgMTYgYml0IGZsYWdzIGFyZSByZXNlcnZlZCBm b3IgY29tbW9uIG5ucGZzIGZsYWdzDQotICogVGhlIHVwcGVyIDE2IGJpdCBm bGFncyBhcmUgcmVzZXJ2ZWQgZm9yIG9wZXJ0aW5nIHN5c3RlbSBkZXBlbmRh bnQNCisgKiBUaGUgdXBwZXIgMTYgYml0IGZsYWdzIGFyZSByZXNlcnZlZCBm b3Igb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQNCiAgKiBmbGFncy4NCiAg Ki8NCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBm cy9saW51eC9ubnBmcy9ubm5wZnMuaCBhcmxhLWZvci1saW51eC00LjQvbm5w ZnMvbGludXgvbm5wZnMvbm5ucGZzLmgNCi0tLSBhcmxhLTAuOTAvbm5wZnMv bGludXgvbm5wZnMvbm5ucGZzLmgJMjAwMi0wOS0wNyAxMjo0NzoxNy4wMDAw MDAwMDAgKzAyMDANCisrKyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGlu dXgvbm5wZnMvbm5ucGZzLmgJMjAwMi0wOS0wNyAxMjo0NzoxNy4wMDAwMDAw MDAgKzAyMDANCkBAIC0xLDQgKzEsNCBAQA0KIC8qICRJZDogbm5ucGZzLmgs diAxLjIgMjAwMi8wOS8wNyAxMDo0NzoxNyBsaGEgRXhwICQgKi8NCi0vKiAk U291cmNlOiAvYWZzL3N0YWNrZW4ua3RoLnNlL3NyYy9Tb3VyY2VSZXBvc2l0 b3J5L2FybGEvbm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmgsdiAkICovDQor LyogJFNvdXJjZTogL1VzZXJzL2JvL3RtcC9BcmxhU291cmNlUmVwb3NpdG9y eS9hcmxhL25ucGZzL2xpbnV4L25ucGZzL25ubnBmcy5oLHYgJCAqLw0KIA0K ICNkZWZpbmUgTk5OUEZTIDINCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFy bGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19mcy5oIGFybGEtZm9y LWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19mcy5oDQotLS0g YXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmgJMjAwNi0x MC0yNCAxODozMzo0OC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLWZvci1s aW51eC00LjQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfZnMuaAkyMDE2LTAx LTEzIDIyOjU3OjA2LjM4NzY5MzMzOSArMDEwMA0KQEAgLTg0LDggKzg0LDEz IEBAIHN0cnVjdCBubnBmcyB7DQogICAgIHN0cnVjdCB2ZnNtb3VudCAqY2Fj aGVyb290OyAvKiBzaW1wbGlmeSBvcGVuIG9mIGNhY2hlIGJsb2NrcyAqLw0K ICAgICBzdHJ1Y3QgZGVudHJ5ICpjYWNoZWRpcjsNCiANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KICAgICB1 aWRfdCB1aWQ7IC8qIGtlZXAgdHJhY2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkg Ki8NCiAgICAgZ2lkX3QgZ2lkOw0KKyNlbHNlDQorICAgIGt1aWRfdCB1aWQ7 IC8qIGtlZXAgdHJhY2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkgKi8NCisgICAg a2dpZF90IGdpZDsNCisjZW5kaWYNCiANCiAgICAgc3RydWN0IHsNCiAJaW50 IHJlY3Vyc2U7DQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbG9jbC5oIGFybGEtZm9yLWxpbnV4 LTQuNC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19sb2NsLmgNCi0tLSBhcmxh LTAuOTAvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbG9jbC5oCTIwMDctMDEt MDggMTQ6NTI6NDkuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS1mb3ItbGlu dXgtNC40L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2xvY2wuaAkyMDE2LTAx LTEzIDIzOjAxOjEwLjE3ODcwODAzNyArMDEwMA0KQEAgLTM0LDcgKzM0LDcg QEANCiAgKiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0vKiAkSWQ6IG5ucGZz X2xvY2wuaCx2IDEuNzcgMjAwNy8wMS8wOCAxMzo1Mjo0OSB0b2wgRXhwICQg Ki8NCisvKiAkSWQ6IG5ucGZzX2xvY2wuaCx2IDEuNzggMjAxMC8wOC8wOCAy MDo0MzowNiB0b2wgRXhwICQgKi8NCiANCiAjaWZkZWYgSEFWRV9DT05GSUdf SA0KICNpbmNsdWRlIDxjb25maWcuaD4NCkBAIC01MSw3ICs1MSw5IEBADQog I2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4NCiAjaW5jbHVkZSA8bGludXgvc3Ry aW5nLmg+DQogI2luY2x1ZGUgPGxpbnV4L25hbWVpLmg+DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAjaW5j bHVkZSA8bGludXgvc21wX2xvY2suaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8 bGludXgvd2FpdC5oPg0KIA0KIC8qDQpAQCAtMTM4LDE1ICsxNDAsMTYgQEAg dHlwZWRlZiBfX3UzMiAgdWludDMyX3Q7DQogaW50DQogbm5wZnNfZmV0Y2hf cm9vdChzdHJ1Y3QgaW5vZGUgKmkpOw0KIA0KLSNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogaW50DQog bm5wZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBl LA0KIAkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsDQog CSAgICAgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpOw0KICNl bHNlDQotc3RydWN0IHN1cGVyX2Jsb2NrICoNCi1ubnBmc19nZXRfc2IgKHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KLQkgICAgICBpbnQg ZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKTsNCitz dHJ1Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3Rl bV90eXBlICpmc190eXBlLA0KKwkgICAgIGludCBmbGFncywgY29uc3QgY2hh ciAqZGV2X25hbWUsDQorCSAgICAgdm9pZCAqZGF0YSk7DQogI2VuZGlmDQog DQogZXh0ZXJuIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBubnBmc19kZW50 cnlfb3BlcmF0aW9uczsNCkBAIC0yMDAsMTYgKzIwMywyNSBAQCBubnBmc19p d3JpdGVjb3VudCAoc3RydWN0IGlub2RlICppbm9kZSkNCiAgKiBIZWxwIGZ1 bmN0aW9uIHRvIHJlYWQgdGhlIGRlbnRyeS0+ZF9jb3VudCBhIHBvcnRhYmxl IHdheQ0KICAqLw0KIA0KKy8qI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzOCkqLw0KIHN0YXRpYyBpbmxpbmUgaW50DQog bm5wZnNfZGNvdW50IChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQor LyojZWxzZQ0KK3N0YXRpYyBpbmxpbmUgaW50DQorbm5wZnNfZGNvdW50IChz dHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorI2VuZGlmKi8NCiB7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAg ICAgcmV0dXJuIGF0b21pY19yZWFkKCZkZW50cnktPmRfY291bnQpOw0KKyNl bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEs MCkNCisgICAgcmV0dXJuIGF0b21pY19yZWFkKChjb25zdCBhdG9taWNfdCop JmRlbnRyeS0+ZF9jb3VudCk7DQorI2Vsc2UNCisgICAgcmV0dXJuIGRfY291 bnQoZGVudHJ5KTs7DQorI2VuZGlmDQogfQ0KIA0KIGV4dGVybiANCi0jaWYg TElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkN CiBjb25zdA0KLSNlbmRpZg0KIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJh dGlvbnMgbm5wZnNfYW9wczsNCiANCiAjaWZuZGVmIGxpc3RfZm9yX2VhY2gN CkBAIC0yMzcsNyArMjQ5LDEyIEBAIG5ucGZzX2ZpeHVwX3N5c2NhbGxfbG9z c2FnZSh2b2lkKTsNCiAjZW5kaWYNCiANCiAjZGVmaW5lIG5ucGZzX2Rldl90 IGRldl90DQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDIsNiwzOCkNCiAjZGVmaW5lIG5ucGZzX2RfZW50cnlfdW5oYXNo ZWQoZCkgaGxpc3RfdW5oYXNoZWQoZCkNCisjZWxzZQ0KKyNkZWZpbmUgbm5w ZnNfZF9lbnRyeV91bmhhc2hlZChkKSBobGlzdF9ibF91bmhhc2hlZChkKQ0K KyNlbmRpZg0KIA0KICNkZWZpbmUgTk5QRlNfTk9PUCAgICAgIHdoaWxlKDAp e30NCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBm cy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmggYXJsYS1mb3ItbGludXgtNC40 L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX25vZGUuaA0KLS0tIGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgJMjAwNi0xMi0xMSAx NzoyOTozOS4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLWZvci1saW51eC00 LjQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbm9kZS5oCTIwMTAtMDgtMDgg MjI6NDM6MDcuMDAwMDAwMDAwICswMjAwDQpAQCAtNTQsNyArNTQsNyBAQCBl eHRlcm4gdWludDMyX3Qgbm5wZnNfYmxvY2tzaXplYml0czsNCiAgKiBmbGFn cy4NCiAgKi8NCiANCi0jZGVmaW5lIE5OUEZTX05PREVfSVBVVAkweDAwMDEw MDAwICAgLyogbm9kZSBpcyBpbiBpcHV0KCksIGF2b2lkIGRlYWRsb2NrICov DQorI2RlZmluZSBOTlBGU19OT0RFX0lQVVQJMHgwMDAxMDAwMCAgIC8qIG5v ZGUgaXMgaW4gaXB1dCgpLCBhdm9pZCBkZWFkbG9jay4gQ2FuIGJlIHJlbW92 ZWQ/ICovDQogDQogI2RlZmluZSBYTl9IQVNIU0laRSAxMDA5DQogI2RlZmlu ZSBYTl9DTEVBTlVQX0lURVJTIDEyOQ0KZGlmZiAtdXByTiAtWG5vZGlmZi50 eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2Jsb2Nrcy5jIGFybGEt Zm9yLWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYw0KLS0t IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDA3LTAx LTA4IDE0OjI0OjI0LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxp bnV4LTQuNC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAxLTE0 IDAxOjAxOjE5LjgwNzE0MjY4NSArMDEwMA0KQEAgLTM0LDcgKzM0LDcgQEAN CiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0v KiAkSWQ6IG5ucGZzX2Jsb2Nrcy5jLHYgMS4zIDIwMDcvMDEvMDggMTM6MjQ6 MjQgdG9sIEV4cCAkICovDQorLyogJElkOiBubnBmc19ibG9ja3MuYyx2IDEu NiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAgJCAqLw0KIA0KICNpbmNs dWRlIDxubnBmcy9ubnBmc19sb2NsLmg+DQogI2luY2x1ZGUgPG5ucGZzL25u cGZzX2ZzLmg+DQpAQCAtNDMsNiArNDMsMzYgQEANCiAjaW5jbHVkZSA8bGlu dXgvbW91bnQuaD4NCiAjaW5jbHVkZSA8bGludXgvbW0uaD4NCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkN CisvKiBUT0RPOiBpbXBsZW1lbnQgYSByZXBsYWNlbWVudCBmb3IgdmZzX3Bh dGhfbG9va3VwIG9uIGtlcm5lbCAzLjEyIGFuZCBsYXRlciAqLw0KKy8qKg0K KyAqIHZmc19wYXRoX2xvb2t1cCAtIGxvb2t1cCBhIGZpbGUgcGF0aCByZWxh dGl2ZSB0byBhIGRlbnRyeS12ZnNtb3VudCBwYWlyDQorICogQGRlbnRyeTog IHBvaW50ZXIgdG8gZGVudHJ5IG9mIHRoZSBiYXNlIGRpcmVjdG9yeQ0KKyAq IEBtbnQ6IHBvaW50ZXIgdG8gdmZzIG1vdW50IG9mIHRoZSBiYXNlIGRpcmVj dG9yeQ0KKyAqIEBuYW1lOiBwb2ludGVyIHRvIGZpbGUgbmFtZQ0KKyAqIEBm bGFnczogbG9va3VwIGZsYWdzDQorICogQHBhdGg6IHBvaW50ZXIgdG8gc3Ry dWN0IHBhdGggdG8gZmlsbA0KKyAqLw0KK2ludCBubnBmc19wYXRoX2xvb2t1 cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCB2ZnNtb3VudCAqbW50 LA0KKwkJICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFn cywNCisJCSAgICBzdHJ1Y3QgcGF0aCAqcGF0aCkNCit7DQorI2lmIDANCisJ c3RydWN0IG5hbWVpZGF0YSBuZDsNCisJaW50IGVycjsNCisJbmQucm9vdC5k ZW50cnkgPSBkZW50cnk7DQorCW5kLnJvb3QubW50ID0gbW50Ow0KKwlCVUdf T04oZmxhZ3MgJiBMT09LVVBfUEFSRU5UKTsNCisJLyogdGhlIGZpcnN0IGFy Z3VtZW50IG9mIGRvX3BhdGhfbG9va3VwKCkgaXMgaWdub3JlZCB3aXRoIExP T0tVUF9ST09UICovDQorCWVyciA9IGRvX3BhdGhfbG9va3VwKEFUX0ZEQ1dE LCBuYW1lLCBmbGFncyB8IExPT0tVUF9ST09ULCAmbmQpOw0KKwlpZiAoIWVy cikNCisJCSpwYXRoID0gbmQucGF0aDsNCisJcmV0dXJuIGVycjsNCisjZW5k aWYNCisJcmV0dXJuIC0xOw0KK30NCisjZW5kaWYNCisNCiAvKg0KICAqIHJl dHVybiB0cnVlIGlmIGJsb2NrIGlzIGluIGNhY2hlDQogICovDQpAQCAtMjkw LDcgKzMyMCwxMyBAQCBubnBmc19ibG9ja19leHRlbmQoc3RydWN0IG5ucGZz X25vZGUgKm5vDQogICAgIGJhY2tub2RlID0gYmFja2ZpbGUtPmZfbWFwcGlu Zy0+aG9zdDsNCiANCiAgICAgbXV0ZXhfbG9jaygmYmFja25vZGUtPmlfbXV0 ZXgpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDgsMCkNCiAgICAgcmV0ID0gdm10cnVuY2F0ZShiYWNrbm9kZSwgbm5w ZnNfYmxvY2tzaXplKTsNCisjZWxzZQ0KKyAgICByZXQgPSBpbm9kZV9uZXdz aXplX29rKGJhY2tub2RlLCBubnBmc19ibG9ja3NpemUpOw0KKyAgICBpZigh cmV0KQ0KKyAgICAgICAgdHJ1bmNhdGVfc2V0c2l6ZShiYWNrbm9kZSwgbm5w ZnNfYmxvY2tzaXplKTsNCisjZW5kaWYNCiAgICAgbXV0ZXhfdW5sb2NrKCZi YWNrbm9kZS0+aV9tdXRleCk7DQogICAgIA0KICAgICBmaWxwX2Nsb3NlKGJh Y2tmaWxlLCBOVUxMKTsNCkBAIC0zMTgsMTAgKzM1NCwyNiBAQCBubnBmc19i bG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogICAgIHN0cnVj dCBubnBmcyAqbm5wZnNwID0gTk5QRlNfRlJPTV9YTk9ERShub2RlKTsNCiAg ICAgc3RydWN0IGlub2RlICppbm9kZSA9IFhOT0RFX1RPX1ZOT0RFKG5vZGUp Ow0KICAgICBpbnQgZmxhZ3MgPSBPX0xBUkdFRklMRSB8IGZsYWc7DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkN CiAgICAgc3RydWN0IG5hbWVpZGF0YSBuZDsNCisjZWxzZQ0KKyAgICBzdHJ1 Y3QgcGF0aCBwYXRoOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogICAgIHVpZF90IHNhdmV1 aWQ7DQogICAgIGdpZF90IHNhdmVnaWQ7DQorI2Vsc2UNCisgICAga3VpZF90 IHNhdmV1aWQ7DQorICAgIGtnaWRfdCBzYXZlZ2lkOw0KKyNlbmRpZg0KICAg ICBpbnQgcmV0Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDI5KQ0KKyAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqb2xk X2NyZWQ7DQorICAgIHN0cnVjdCBjcmVkICpvdmVycmlkZV9jcmVkOw0KKyNl bmRpZg0KKw0KKyAgICAodm9pZClzYXZldWlkOw0KKyAgICAodm9pZClzYXZl Z2lkOw0KIA0KICAgICBCVUdfT04oIW5ucGZzcCk7DQogICAgIEJVR19PTihm bGFncyAmIE9fQ1JFQVQgJiYgZmlsZSAhPSBOVUxMKTsNCkBAIC0zNDYsMjEg KzM5OCw0MyBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2Rl ICpub2RlDQogICAgIEJVR19PTighbm5wZnNwLT5jYWNoZWRpciB8fCAhbm5w ZnNwLT5jYWNoZXJvb3QpOw0KICAgICANCiAgICAgLyogdXNlIHRoZSBuZnNk IHRyaWNrIHRvIGdpdmUgdXMgYWNjZXNzICovDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIHNhdmV1 aWQgPSBjdXJyZW50LT5mc3VpZDsNCiAgICAgc2F2ZWdpZCA9IGN1cnJlbnQt PmZzZ2lkOw0KICAgICBjdXJyZW50LT5mc3VpZCA9IG5ucGZzcC0+dWlkOw0K ICAgICBjdXJyZW50LT5mc2dpZCA9IG5ucGZzcC0+Z2lkOw0KLQ0KLSAgICBu ZC5kZW50cnkgPSBkZ2V0KG5ucGZzcC0+Y2FjaGVkaXIpOw0KLSAgICBuZC5t bnQgPSBtbnRnZXQobm5wZnNwLT5jYWNoZXJvb3QpOw0KLSAgICBuZC5sYXN0 X3R5cGUgPSBMQVNUX05PUk07DQotICAgIG5kLmRlcHRoID0gMDsNCi0gICAg bmQuZmxhZ3MgPSAwOw0KLSAgICANCi0gICAgaWYgKGZsYWdzICYgT19DUkVB VCkNCi0JbmQuZmxhZ3MgPSBMT09LVVBfUEFSRU5UOw0KLSAgICANCi0gICAg cmV0ID0gcGF0aF93YWxrKGNhY2hlbmFtZSwgJm5kKTsNCisjZWxzZQ0KKyAg ICBzYXZldWlkID0gY3VycmVudF9mc3VpZCgpOw0KKyAgICBzYXZlZ2lkID0g Y3VycmVudF9mc2dpZCgpOw0KKyAgICBvdmVycmlkZV9jcmVkID0gcHJlcGFy ZV9jcmVkcygpOw0KKyAgICBpZiAob3ZlcnJpZGVfY3JlZCA9PSBOVUxMKQ0K KyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQorICAgIG92ZXJyaWRlX2NyZWQt PmZzdWlkID0gbm5wZnNwLT51aWQ7DQorICAgIG92ZXJyaWRlX2NyZWQtPmZz Z2lkID0gbm5wZnNwLT5naWQ7DQorICAgIG9sZF9jcmVkID0gb3ZlcnJpZGVf Y3JlZHMob3ZlcnJpZGVfY3JlZCk7DQorI2VuZGlmDQorDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSwwKQ0KKyAgICBy ZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwgbm5wZnNw LT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBmbGFncyAm IE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZuZCk7DQor I2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx MiwwKQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNo ZWRpciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQor CQkJICBmbGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJ CQkgICZuZC5wYXRoKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIHJldCA9IG5ucGZzX3BhdGhf bG9va3VwKG5ucGZzcC0+Y2FjaGVkaXIsIG5ucGZzcC0+Y2FjaGVyb290LA0K KwkJCSAgY2FjaGVuYW1lLA0KKwkJCSAgZmxhZ3MgJiBPX0NSRUFUID8gTE9P S1VQX1BBUkVOVCA6IDAsDQorCQkJICAmbmQucGF0aCk7DQorI2Vsc2UNCisg ICAgcmV0ID0gbm5wZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwg bm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBm bGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZw YXRoKTsNCisjZW5kaWYNCiAgICAgaWYgKHJldCkgew0KIAl1aW50MzJfdCBu bWFza3MgPSBub2RlLT5kYXRhLm5tYXNrczsNCiAJdWludDMyX3QgbWFzazsN CkBAIC0zODcsMTYgKzQ2MSwzNyBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVj dCBubnBmc19ub2RlICpub2RlDQogICAgIA0KICAgICBpZiAoZmxhZ3MgJiBP X0NSRUFUKSB7DQogCS8qIFhYWCBtb2RlIGJpdHMgb24gY3JlYXRlIC0tIFNf SVJVU1J8U19JV1VTUiAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDEsMCkNCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5 ID0gbG9va3VwX2NyZWF0ZSgmbmQsIDApOwkNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCS8qIFRPRE86 IGNoZWNrIHRoZSBjYWxsIHRvIGtlcm5fcGF0aF9jcmVhdGUoKSwgaXMgdGhl IHNlY29uZCBhcmd1bWVudCBvcHRpb25hbD8gKi8NCisJc3RydWN0IGRlbnRy eSAqZGVudHJ5ID0ga2Vybl9wYXRoX2NyZWF0ZShBVF9GRENXRCwgTlVMTCwg Jm5kLnBhdGgsIDApOwkNCisjZWxzZQ0KKwkvKiBUT0RPOiBjaGVjayB0aGUg Y2FsbCB0byBrZXJuX3BhdGhfY3JlYXRlKCksIGlzIHRoZSBzZWNvbmQgYXJn dW1lbnQgb3B0aW9uYWw/ICovDQorCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9 IGtlcm5fcGF0aF9jcmVhdGUoQVRfRkRDV0QsIE5VTEwsICZwYXRoLCAwKTsJ DQorI2VuZGlmDQogCWlmIChJU19FUlIoZGVudHJ5KSkgew0KIAkgICAgcmV0 ID0gUFRSX0VSUihkZW50cnkpOw0KIAl9IGVsc2Ugew0KLQkgICAgcmV0ID0g dmZzX2NyZWF0ZShuZC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwgU19JUlVT UnxTX0lXVVNSLCAmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDYsMCkNCisJICAgIHJldCA9IHZmc19jcmVhdGUo bmQucGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwgU19JUlVTUnxTX0lX VVNSLCAmbmQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTksMCkNCisJICAgIC8qIFRPRE86IHNob3VsZCB0aGUg bGFzdCBhcmd1bWVudCB0byB2ZnNfY3JlYXRlOiBib29sIHdhbnRfZXhjbCwg YmUgMCBvciAxPyAqLw0KKwkgICAgcmV0ID0gdmZzX2NyZWF0ZShuZC5wYXRo LmRlbnRyeS0+ZF9pbm9kZSwgZGVudHJ5LCBTX0lSVVNSfFNfSVdVU1IsIDAp Ow0KKyNlbHNlDQorCSAgICAvKiBUT0RPOiBzaG91bGQgdGhlIGxhc3QgYXJn dW1lbnQgdG8gdmZzX2NyZWF0ZTogYm9vbCB3YW50X2V4Y2wsIGJlIDAgb3Ig MT8gKi8NCisJICAgIHJldCA9IHZmc19jcmVhdGUocGF0aC5kZW50cnktPmRf aW5vZGUsIGRlbnRyeSwgU19JUlVTUnxTX0lXVVNSLCAwKTsNCisjZW5kaWYN CiAJICAgIGRwdXQoZGVudHJ5KTsNCiAJfQ0KIA0KLQltdXRleF91bmxvY2so Jm5kLmRlbnRyeS0+ZF9pbm9kZS0+aV9tdXRleCk7DQotCXBhdGhfcmVsZWFz ZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDE5LDApDQorCW11dGV4X3VubG9jaygmbmQucGF0aC5kZW50cnkt PmRfaW5vZGUtPmlfbXV0ZXgpOw0KKwlwYXRoX3B1dCgmbmQucGF0aCk7DQor I2Vsc2UNCisJbXV0ZXhfdW5sb2NrKCZwYXRoLmRlbnRyeS0+ZF9pbm9kZS0+ aV9tdXRleCk7DQorCXBhdGhfcHV0KCZwYXRoKTsNCisjZW5kaWYNCiANCiAJ aWYgKHJldCkgew0KIAkgICAgcHJpbnRrKCJubnBmc19ibG9ja19vcGVuKCVz KSBjcmVhdGUgZmFpbGVkOiAlZFxuIiwgY2FjaGVuYW1lLCAtcmV0KTsNCkBA IC00MTAsMTIgKzUwNSwyNSBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVjdCBu bnBmc19ub2RlICpub2RlDQogCSAgICByZXQgPSBubnBmc19ibG9ja19leHRl bmQobm9kZSwgb2Zmc2V0KTsNCiAJfQ0KICAgICB9IGVsc2Ugew0KLQlzdHJ1 Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKG5kLmRlbnRyeSwgbmQubW50LCBm bGFncyk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDIsNiwyOSkNCisJc3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3Blbihu ZC5wYXRoLmRlbnRyeSwgbmQucGF0aC5tbnQsIGZsYWdzKTsNCisjZWxpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCisg ICAgICAgIHN0cnVjdCBmaWxlICpmID0gZGVudHJ5X29wZW4obmQucGF0aC5k ZW50cnksIG5kLnBhdGgubW50LCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCisJc3RydWN0IHBhdGggdG1wX3BhdGggPSB7IC5tbnQgPSBuZC5w YXRoLm1udCwgLmRlbnRyeSA9IG5kLnBhdGguZGVudHJ5IH07DQorICAgICAg ICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKCZ0bXBfcGF0aCwgZmxh Z3MsIGN1cnJlbnRfY3JlZCgpKTsNCisjZWxzZQ0KKyAgICAgICAgc3RydWN0 IGZpbGUgKmYgPSBkZW50cnlfb3BlbigmcGF0aCwgZmxhZ3MsIGN1cnJlbnRf Y3JlZCgpKTsNCisjZW5kaWYNCiAJaWYgKElTX0VSUihmKSkgew0KIAkgICAg cmV0ID0gUFRSX0VSUihmKTsNCiAJICAgIHByaW50aygibm5wZnNfYmxvY2tf b3Blbiglcykgb3BlbiBmYWlsZWQ6ICVkXG4iLCBjYWNoZW5hbWUsIC1yZXQp Ow0KIAkgICAgbm5wZnNfZGVidWdfb29wcygpOw0KLQkgICAgcGF0aF9yZWxl YXNlKCZuZCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsNCisj ZWxzZQ0KKwkgICAgcGF0aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIAl9IGVs c2Ugew0KIAkgICAgKmZpbGUgPSBmOw0KIAl9DQpAQCAtNDI0LDggKzUzMiwx MyBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2Rl DQogICAgIC8qIHBhdGhfcmVsZWFzZSgpIGlzIHVzdWFsbHkgaGFuZGxlZCBv biBjbG9zZSAqLw0KIA0KICBvdXQ6DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIGN1cnJlbnQtPmZz dWlkID0gc2F2ZXVpZDsNCiAgICAgY3VycmVudC0+ZnNnaWQgPSBzYXZlZ2lk Ow0KKyNlbHNlDQorICAgIHJldmVydF9jcmVkcyhvbGRfY3JlZCk7DQorICAg IHB1dF9jcmVkKG92ZXJyaWRlX2NyZWQpOw0KKyNlbmRpZg0KIA0KICAgICBy ZXR1cm4gcmV0Ow0KIH0NCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEt MC45MC9ubnBmcy9saW51eC9ubnBmc19jb21tb24uYyBhcmxhLWZvci1saW51 eC00LjQvbm5wZnMvbGludXgvbm5wZnNfY29tbW9uLmMNCi0tLSBhcmxhLTAu OTAvbm5wZnMvbGludXgvbm5wZnNfY29tbW9uLmMJMjAwNi0xMi0xMSAxNzoz MTo0Ni4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLWZvci1saW51eC00LjQv bm5wZnMvbGludXgvbm5wZnNfY29tbW9uLmMJMjAxNi0wMS0xNCAxNjoxNTow MC4zNDc0NDc2NTcgKzAxMDANCkBAIC0xMTIsMTAgKzExMiwxNSBAQCBubnBm c19wcmludF9hbGlhc2VzKGNvbnN0IHN0cnVjdCBpbm9kZSAqDQogdm9pZA0K IG5ucGZzX3ByaW50X2FsaWFzZXNfcmVhbChjb25zdCBzdHJ1Y3QgaW5vZGUg Kmlub2RlKQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmFsaWFz Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7DQorI2Vu ZGlmDQogICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeTsNCiAgICAgaW50IGJh aWxvdXQgPSAxMDA7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBhbGlhcyA9IGlub2RlLT5pX2Rl bnRyeS5uZXh0Ow0KICAgICB3aGlsZSAoYWxpYXMgIT0gJmlub2RlLT5pX2Rl bnRyeSkgew0KIAlpZiAoLS1iYWlsb3V0IDwgMCkgew0KQEAgLTEzMSw2ICsx MzYsMjYgQEAgbm5wZnNfcHJpbnRfYWxpYXNlc19yZWFsKGNvbnN0IHN0cnVj dCBpbg0KIAl9DQogCWFsaWFzID0gYWxpYXMtPm5leHQ7DQogICAgIH0NCisj ZWxzZQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDksMCkNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCBh bGlhcywgJmlub2RlLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbGlmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisg ICAgaGxpc3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCAmaW5vZGUtPmlfZGVu dHJ5LCBkX2FsaWFzKSB7DQorI2Vsc2UNCisgICAgaGxpc3RfZm9yX2VhY2hf ZW50cnkoZGVudHJ5LCAmaW5vZGUtPmlfZGVudHJ5LCBkX3UuZF9hbGlhcykg ew0KKyNlbmRpZg0KKwlpZiAoLS1iYWlsb3V0IDwgMCkgew0KKwkgICAgcHJp bnRrKCIgLi4uIik7DQorCSAgICBicmVhazsNCisJfQ0KKwlpZiAoZGVudHJ5 KSB7DQorCSAgICBwcmludGsoIiAlLipzKCVwKSIsIChpbnQpZGVudHJ5LT5k X25hbWUubGVuLA0KKwkJICAgZGVudHJ5LT5kX25hbWUubmFtZSwgZGVudHJ5 KTsNCisJICAgIGlmIChubnBmc19kX2VudHJ5X3VuaGFzaGVkKCZkZW50cnkt PmRfaGFzaCkpDQorCQlwcmludGsoIih1bmhhc2hlZCkiKTsNCisJfQ0KKyAg ICB9DQorI2VuZGlmDQogICAgIHByaW50aygiXG4iKTsNCiB9DQogDQpAQCAt MTQ2LDcgKzE3MSwxMSBAQCBubnBmc19wcmludF9jaGlsZHJlbihjb25zdCBz dHJ1Y3QgZGVudHJ5DQogDQogICAgIHdoaWxlIChzdWJkaXJzICE9ICZkZW50 cnktPmRfc3ViZGlycykgew0KIAlzdHJ1Y3QgbGlzdF9oZWFkICp0bXAgPSBz dWJkaXJzOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDE5LDApDQogCXN0cnVjdCBkZW50cnkgKmNoaWxkID0gbGlzdF9l bnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRfdS5kX2NoaWxkKTsNCisjZWxz ZQ0KKwlzdHJ1Y3QgZGVudHJ5ICpjaGlsZCA9IGxpc3RfZW50cnkodG1wLCBz dHJ1Y3QgZGVudHJ5LCBkX2NoaWxkKTsNCisjZW5kaWYNCiANCiAJcHJpbnRr KCIgJS4qcyglcCkiLCAoaW50KWNoaWxkLT5kX25hbWUubGVuLA0KIAkgICAg ICAgY2hpbGQtPmRfbmFtZS5uYW1lLCBjaGlsZCk7DQpkaWZmIC11cHJOIC1Y bm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfZGV2LmMg YXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xpbnV4L25ucGZzX2Rldi5jDQot LS0gYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMDYtMTAt MjQgMTg6MzM6MzYuMDAwMDAwMDAwICswMjAwDQorKysgYXJsYS1mb3ItbGlu dXgtNC40L25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMTYtMDEtMTQgMTY6 Mjg6MTkuMjUwNDk1ODIwICswMTAwDQpAQCAtMzAwLDcgKzMwMCw5IEBAIG5u cGZzX2ludmFsaWRhdGVfYWxsKHN0cnVjdCBubnBmcyAqbm5wZnMNCiAgICAg Tk5QRlNERUIoWERFQk5PREUsICgiZnJlZV9hbGxfbm5wZnNfbm9kZXMgc3Rh cnRpbmdcbiIpKTsNCiANCiAgICAgc2hyaW5rX2RjYWNoZV9zYihubnBmcy0+ c2IpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMzcpDQogICAgIGludmFsaWRhdGVfaW5vZGVzKG5ucGZzLT5zYik7 DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVCTk9ERSwgKCJm cmVlX2FsbF9ubnBmc19ub2RlcyBkb25lXG4iKSk7DQogfQ0KQEAgLTM3NCw3 ICszNzYsMTEgQEAgbm5wZnNfZGV2Y2xvc2Uoc3RydWN0IGlub2RlICogaW5v ZGUsIHN0cg0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfZGV2cmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZf dCAqcHBvcykNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmls ZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZWxzZQ0KKyAgICBu bnBmc19kZXZfdCBkZXYgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2Rl LT5pX3JkZXY7DQorI2VuZGlmDQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNw ID0gJm5ucGZzW01JTk9SKGRldildOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbGlu ayAqZmlyc3Q7DQogICAgIGludCByZXQgPSAwLCBlcnJvciA9IDA7DQpAQCAt NDM5LDggKzQ0NSwxMiBAQCBubnBmc19kZXZ3cml0ZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgY29uc3QNCiANCiAgICAgTk5QRlNERUIoWERFQkRFViwgKCJubnBm c19kZXZ3cml0ZVxuIikpOw0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBkZXYgPSBmaWxl LT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2Ow0KLSAgICBubnBmc3AgPSAm bm5wZnNbTUlOT1IoZGV2KV07DQorI2Vsc2UNCisgICAgZGV2ID0gZmlsZS0+ Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2Ow0KKyNlbmRpZg0KKyAg ICAgbm5wZnNwID0gJm5ucGZzW01JTk9SKGRldildOw0KIA0KICAgICBkb3du KCZubnBmc3AtPmNoYW5uZWxfc2VtKTsNCiAgICAgaWYgKG5ucGZzcC0+c3Rh dHVzICYgTk5QRlNfREVWV1JJVEUpIHsNCkBAIC01MDUsMTkgKzUxNSwzNyBA QCBubnBmc19kZXZ3cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QNCiAv Kg0KICAqIE5vdCB1c2VkLg0KICAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzYpDQogc3RhdGljIGludA0KIG5u cGZzX2RldmlvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl ICpmaWxlLA0KIAkgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQg bG9uZyBhcmcpDQorI2Vsc2UNCitzdGF0aWMgbG9uZw0KK25ucGZzX3VubG9j a2VkX2RldmlvY3RsKHN0cnVjdCBmaWxlICpmaWxlLA0KKwkgICAgICAgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQorI2VuZGlmDQog ew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzYpDQogICAgIE5OUEZTREVCKFhERUJERVYsICgibm5wZnNfZGV2aW9j dGwgZGV2ID0gJWQsIGZsYWdzID0gJWRcbiIsDQogCQkgICAgICAgaW5vZGUt PmlfcmRldiwgZmlsZS0+Zl9mbGFncykpOw0KKyNlbGlmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgTk5QRlNE RUIoWERFQkRFViwgKCJubnBmc19kZXZpb2N0bCBkZXYgPSAlZCwgZmxhZ3Mg PSAlZFxuIiwNCisJCSAgICAgICBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+ aV9yZGV2LCBmaWxlLT5mX2ZsYWdzKSk7DQorI2Vsc2UNCisgICAgTk5QRlNE RUIoWERFQkRFViwgKCJubnBmc19kZXZpb2N0bCBkZXYgPSAlZCwgZmxhZ3Mg PSAlZFxuIiwNCisJCSAgICAgICBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lu b2RlLT5pX3JkZXYsIGZpbGUtPmZfZmxhZ3MpKTsNCisjZW5kaWYNCiAgICAg cmV0dXJuIC1FSU5WQUw7DQogfQ0KIA0KIHN0YXRpYyB1bnNpZ25lZCBpbnQN CiBubnBmc19kZXZwb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxl ICp3YWl0KQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMywxOSwwKQ0KICAgICBubnBmc19kZXZfdCBkZXYgPSBmaWxl LT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2Ow0KKyNlbHNlDQorICAgIG5u cGZzX2Rldl90IGRldiA9IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUt PmlfcmRldjsNCisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3Ag PSAmbm5wZnNbTUlOT1IoZGV2KV07DQogICAgIGludCByZXQgPSAwOw0KICAg ICANCkBAIC05NTMsNyArOTgxLDExIEBAIHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgbm5wZnNfZm9wcyA9IHsNCiAgICAgcmVhZDoJCW5ucGZzX2RldnJlYWQs DQogICAgIHdyaXRlOgkJbm5wZnNfZGV2d3JpdGUsDQogICAgIHBvbGw6CQlu bnBmc19kZXZwb2xsLA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigyLDYsMzYpDQogICAgIGlvY3RsOgkJbm5wZnNfZGV2aW9j dGwsDQorI2Vsc2UNCisgICAgdW5sb2NrZWRfaW9jdGw6CW5ucGZzX3VubG9j a2VkX2RldmlvY3RsLA0KKyNlbmRpZg0KICAgICByZWxlYXNlOgkJbm5wZnNf ZGV2Y2xvc2UsDQogICAgIG9wZW46CQlubnBmc19kZXZvcGVuLA0KIH07DQpA QCAtOTY4LDggKzEwMDAsMTMgQEAgbm5wZnNfaW5pdF9kZXZpY2Uodm9pZCkN CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmKG5ucGZzW2ldLndhaXRfcXVldWUp KTsNCiAJbm5wZnNfaW5pdHEoJm5ucGZzW2ldLm1lc3NhZ2VxKTsNCiAJbm5w ZnNfaW5pdHEoJm5ucGZzW2ldLnNsZWVwcSk7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNykNCiAJaW5pdF9NVVRF WCgmbm5wZnNbaV0uaW5hY3RpdmVfc2VtKTsNCiAJaW5pdF9NVVRFWCgmbm5w ZnNbaV0uY2hhbm5lbF9zZW0pOw0KKyNlbHNlDQorCXNlbWFfaW5pdCgmbm5w ZnNbaV0uaW5hY3RpdmVfc2VtLCAxKTsNCisJc2VtYV9pbml0KCZubnBmc1tp XS5jaGFubmVsX3NlbSwgMSk7DQorI2VuZGlmDQogCUlOSVRfTElTVF9IRUFE KCZubnBmc1tpXS5pbmFjdGl2ZV9saXN0KTsNCiAJbm5wZnNbaV0ubm5vZGVz ID0gMDsNCiAgICAgfQ0KZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX2lub2Rlb3BzLmMgYXJsYS1mb3ItbGlu dXgtNC40L25ucGZzL2xpbnV4L25ucGZzX2lub2Rlb3BzLmMNCi0tLSBhcmxh LTAuOTAvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYwkyMDA2LTEyLTEx IDE3OjM1OjI2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxpbnV4 LTQuNC9ubnBmcy9saW51eC9ubnBmc19pbm9kZW9wcy5jCTIwMTYtMDEtMTQg MTk6MjA6MTkuMzIyMTE3OTg4ICswMTAwDQpAQCAtNDAsMjUgKzQwLDQxIEBA DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2Rldi5oPg0KICNpbmNsdWRlIDxu bnBmcy9ubnBmc19kaXJlbnQuaD4NCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNf c3lzY2FsbHMuaD4NCisjaW5jbHVkZSA8bGludXgvYWlvLmg+DQogI2luY2x1 ZGUgPGxpbnV4L2JpbmZtdHMuaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5o Pg0KICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+DQogI2luY2x1ZGUgPGxp bnV4L3BhZ2UtZmxhZ3MuaD4NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49 IEtFUk5FTF9WRVJTSU9OKDQsMSwwKQ0KKyNpbmNsdWRlIDxsaW51eC91aW8u aD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8bGludXgvd3JpdGViYWNrLmg+DQog I2luY2x1ZGUgPGFzbS9mY250bC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJD U0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIyMyAyMDA2LzEyLzEx IDE2OjM1OjI2IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX2lu b2Rlb3BzLmMsdiAxLjIyNiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAg JCIpOw0KICNlbmRpZg0KIA0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19p bnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGZsYWcpOw0KIA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiBz dGF0aWMgaW50DQogbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpOw0KLQ0KKyNlbHNlDQog c3RhdGljIGludA0KK25ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncyk7DQorI2VuZGlmDQorDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz OCkNCitzdGF0aWMNCitpbnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpOw0KKyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNf ZF9kZWxldGUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsNCisjZW5k aWYNCiANCiBzdGF0aWMgdm9pZA0KIG5ucGZzX2RfcmVsZWFzZShzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnkpOw0KQEAgLTEwNSw3ICsxMjEsNyBAQCBubnBmc192 bWFfY2xvc2UgKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqDQogfQ0KIA0KIHN0 YXRpYyBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3Qgbm5wZnNfZmlsZV92 bV9vcHMgPSB7DQotICAgIC5ub3BhZ2UJPSBmaWxlbWFwX25vcGFnZSwNCisg ICAgLmZhdWx0ICAgICAgPSBmaWxlbWFwX2ZhdWx0LA0KICAgICAuY2xvc2UJ PSBubnBmc192bWFfY2xvc2UsDQogfTsNCiANCkBAIC0xMzQsMTIgKzE1MCwx NCBAQCBubnBmc19wcmludF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkN CiAgKg0KICAqLw0KIA0KKyNpZiAwDQogdm9pZA0KIG5ucGZzX3ByaW50X2xv Y2soY2hhciAqcywgc3RydWN0IHNlbWFwaG9yZSAqc2VtKQ0KIHsNCiAgICAg Tk5QRlNERUIoWERFQkxPQ0ssICgibG9jazogJXMgc2VtOiAlcCBjb3VudDog JWRcbiIsDQogCQkgICAgICBzLCBzZW0sIChpbnQpYXRvbWljX3JlYWQoJnNl bS0+Y291bnQpKSk7DQogfQ0KKyNlbmRpZg0KIA0KIC8qDQogICoNCkBAIC0x ODUsNyArMjAzLDcgQEAgbm5wZnNfZF9pcHV0KHN0cnVjdCBkZW50cnkgKmRl bnRyeSwgc3RydQ0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsDQogCSAgICAg KCJubnBmc19kX2lwdXQ6IGRlbnRyeSAlcCwgaW5vZGUgJXBcbiIsIGRlbnRy eSwgaW5vZGUpKTsNCiAgICAgDQotICAgIGlmIChub2RlLT5mbGFncyAmIE5O UEZTX05PREVfSVBVVCkgLyogWFhYIGxvY2tpbmcgKi8NCisgICAgaWYgKG5v ZGUtPmZsYWdzICYgTk5QRlNfTk9ERV9JUFVUKSAvKiBYWFggbG9ja2luZy4g bmV2ZXIgc2V0PyAqLw0KIAlubnBmc19pcmVsZShpbm9kZSk7DQogICAgIGVs c2UNCiAJaXB1dChpbm9kZSk7DQpAQCAtMjEyLDggKzIzMCwxMyBAQCBubnBm c19pbm9kZV92YWxpZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0KICAqIG5ucGZz X2xvb2t1cCBub3cgcmV0dXJucyBhIGRlbnRyeS4NCiAgKi8NCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQog c3RhdGljIHN0cnVjdCBkZW50cnkgKg0KIG5ucGZzX2xvb2t1cCAoc3RydWN0 IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5h bWVpZGF0YSAqbmQpDQorI2Vsc2UNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAq DQorbm5wZnNfbG9va3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRl bnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQog ew0KICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9nZXRub2RlIG1zZzsNCiAg ICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQpAQCAtMjQwLDcgKzI2MywxMSBA QCBubnBmc19sb29rdXAgKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QNCiAN CiAJbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUTk9ERTsNCiAg ICAgICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZF UlNJT04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7 DQorI2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlk KCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWco KTsNCiAJbXNnLnBhcmVudF9oYW5kbGUgPSBkLT5oYW5kbGU7DQogICAgICAg ICANCkBAIC0zMTAsNyArMzM3LDExIEBAIG5ucGZzX29wZW5fdmFsaWQoc3Ry dWN0IGlub2RlICp2cCwgdV9pbnQNCiAgICAgICB7DQogCXN0cnVjdCBubnBm c19tZXNzYWdlX29wZW4gbXNnOw0KIAltc2cuaGVhZGVyLm9wY29kZSA9IE5O UEZTX01TR19PUEVOOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50 LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJl bnRfdWlkKCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dl dF9wYWcoKTsNCiAJbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogCW1zZy50 b2tlbnMgPSB0b2s7DQpAQCAtMzk3LDcgKzQyOCwxMSBAQCBmaW5kX2ZpcnN0 X2Jsb2NrKHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogc3RhdGljIGludA0K IG5ucGZzX2ZzeW5jX2ludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9pbnQgZmxh ZykNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUt PmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNl bmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCA9IE5OUEZTX0ZST01f Vk5PREUoaW5vZGUpOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBW Tk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAgIGxvZmZfdCBsZW4gPSBpX3Np emVfcmVhZChpbm9kZSk7DQpAQCAtNDI1LDcgKzQ2MCwxMSBAQCBubnBmc19m c3luY19pbnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50DQogDQogCW1zZy5o ZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1BVVERBVEE7DQogCW1zZy5jcmVk LnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJbXNnLmNyZWQudWlk ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KIAltc2cuaGFuZGxlID0g eG4tPmhhbmRsZTsNCiAJbXNnLmZsYWcgICA9IGZsYWc7DQogCW1zZy5vZmZz ZXQgPSBvZmY7DQpAQCAtNDYwLDE0ICs0OTksMjcgQEAgbm5wZnNfZnN5bmNf aW50KHN0cnVjdCBmaWxlICpmaWxlLCB1X2ludA0KICAqDQogICovDQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz NSkNCiBzdGF0aWMgaW50DQogbm5wZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZp bGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGRhdGFzeW5jKQ0KKyNl bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSww KQ0KK3N0YXRpYyBpbnQNCitubnBmc19mc3luYyhzdHJ1Y3QgZmlsZSAqZmls ZSwgaW50IGRhdGFzeW5jKQ0KKyNlbHNlDQorc3RhdGljIGludA0KK25ucGZz X2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgc3RhcnQsIGxvZmZf dCBlbmQsIGludCBkYXRhc3luYykNCisjZW5kaWYNCiB7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMzUpDQorICAg IHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGZpbGUtPmZfcGF0aC5kZW50cnk7 DQorI2VuZGlmDQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBERU5UUllf VE9fSU5PREUoZGVudHJ5KTsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7 DQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCiAgICAgaW50IGVycm9y ID0gMDsNCiANCisgICAgKHZvaWQpbm5wZnNwOw0KKw0KICAgICBlcnJvciA9 IG5ucGZzX2lub2RlX3ZhbGlkKGlub2RlKTsNCiAgICAgaWYgKGVycm9yKQ0K IAlyZXR1cm4gZXJyb3I7DQpAQCAtNTExLDcgKzU2MywxMSBAQCBubnBmc19h dHRyX3ZhbGlkKHN0cnVjdCBpbm9kZSAqIHZwLCB1X2luDQogICAgICAgICAg ICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQogDQogICAg ICAgICAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUQVRU UjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCiAgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50 LT51aWQ7DQorI2Vsc2UNCisgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBj dXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICAgICAgICAgIG1zZy5jcmVk LnBhZyA9IHBhZzsNCiAgICAgICAgICAgICBtc2cuaGFuZGxlID0geG4tPmhh bmRsZTsNCiAgICAgICAgICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBj KG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCkBAIC01NTEs NyArNjA3LDExIEBAIG5ucGZzX3JpZ2h0c192YWxpZChzdHJ1Y3QgaW5vZGUg KiB2cCwgbm4NCiAgICAgICAgICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9n ZXRhdHRyIG1zZzsNCiANCiAgICAgICAgICAgICBtc2cuaGVhZGVyLm9wY29k ZSA9IE5OUEZTX01TR19HRVRBVFRSOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICAgICAgICAgIG1z Zy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAg ICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQog ICAgICAgICAgICAgbXNnLmNyZWQucGFnID0gcGFnOw0KICAgICAgICAgICAg IG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICAgICAgICAgIGVycm9y ID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6 ZW9mKG1zZykpOw0KQEAgLTU5MiwxMSArNjUyLDI1IEBAIGNoZWNrX3JpZ2h0 cyAobm5wZnNfcmlnaHRzIHJpZ2h0cywgaW50IG0NCiAgKiBXZSBkb24ndCBo b2xkIGlfbXV0ZXguDQogICovDQogDQorI2lmIChMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpIHx8IExJTlVYX1ZFUlNJT05f Q09ERSA+PSBLRVJORUxfVkVSU0lPTigzLDEsMCkpDQorc3RhdGljIGludA0K K25ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1v ZGUpDQorI2Vsc2UNCiBzdGF0aWMgaW50DQotbm5wZnNfcGVybWlzc2lvbihz dHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbW9kZSwgc3RydWN0IG5hbWVpZGF0 YSAqbmQpDQorbm5wZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBpbnQgbW9kZSwgdW5zaWduZWQgaW50IGZsYWdzKQ0KKyNlbmRpZg0KIHsN CiAgICAgaW50IGVycm9yID0gMDsNCi0gICAgbm5wZnNfcGFnX3QgcGFnID0g bm5wZnNfZ2V0X3BhZygpOw0KKyAgICBubnBmc19wYWdfdCBwYWc7DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLDEsMCkN CisgICAgaWYgKG1vZGUgJiBNQVlfTk9UX0JMT0NLKQ0KKyAgICAgICAgcmV0 dXJuIC1FQ0hJTEQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwzOCkNCisgICAgaWYgKGZsYWdzICYgSVBFUk1f RkxBR19SQ1UpDQorICAgICAgICByZXR1cm4gLUVDSElMRDsNCisjZW5kaWYN CisNCisgICAgcGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICANCiAgICAg Tk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX2FjY2VzcyAoJXApIG1vZGUg PSAwJW8gYWxpYXNlczoiLCBpbm9kZSwgbW9kZSkpOw0KICAgICBubnBmc19w cmludF9hbGlhc2VzKGlub2RlKTsNCkBAIC02MzYsNyArNzEwLDExIEBAIG5u cGZzX2RvX2dldGRhdGEoc3RydWN0IG5ucGZzX25vZGUgKnhuLA0KICAgICBp bnQgZXJyb3I7DQogDQogICAgIG1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNf TVNHX0dFVERBVEE7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJl bnQtPnVpZDsNCisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50 X3VpZCgpOw0KKyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19n ZXRfcGFnKCk7DQogICAgIG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAg ICBtc2cudG9rZW5zID0gdG9rOw0KQEAgLTc1MCwxMSArODI4LDE5IEBAIG5u cGZzX2RhdGFfdmFsaWQoc3RydWN0IGlub2RlICppbm9kZSwgdV8NCiBpbnQg bm5wZnNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICogZmlsZSwgc3RydWN0IHZt X2FyZWFfc3RydWN0ICogdm1hKQ0KIHsNCiAgICAgaW50IGZsYWdzLCBlcnJv ciA9IDA7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUt PmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNl bmRpZg0KICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZp bGUtPmZfbWFwcGluZzsNCiANCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAo Im5ucGZzX21tYXAgaW5vZGU6ICVwXG4iLCBpbm9kZSkpOw0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAg IG5ucGZzX3ByaW50X3BhdGgoZmlsZS0+Zl9kZW50cnkpOw0KKyNlbHNlDQor ICAgIG5ucGZzX3ByaW50X3BhdGgoZmlsZS0+Zl9wYXRoLmRlbnRyeSk7DQor I2VuZGlmDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19tbWFw IGFsaWFzZXM6IikpOw0KICAgICBubnBmc19wcmludF9hbGlhc2VzKGlub2Rl KTsNCiAgICAgDQpAQCAtNzg5LDM3ICs4NzUsNTAgQEAgaW50IG5ucGZzX2Zp bGVfbW1hcChzdHJ1Y3QgZmlsZSAqIGZpbGUsDQogICoNCiAgKi8NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiww KQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3JlYWQoc3RydWN0IGtp b2NiICppb2NiLA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDE5KQ0KIAkgICAgICAgY29uc3Qgc3RydWN0IGlvdmVj ICppb3YsIHVuc2lnbmVkIGxvbmcgbnJfc2VncywNCisJICAgICAgIGxvZmZf dCBwb3MpDQogI2Vsc2UNCi0JICAgICAgIGNoYXIgX191c2VyICpidWYsIHNp emVfdCBjb3VudCwNCitzdGF0aWMgc3NpemVfdA0KK25ucGZzX3JlYWRfaXRl cihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pDQog I2VuZGlmDQotCSAgICAgICBsb2ZmX3QgcG9zKQ0KIHsNCiAgICAgaW50IGVy cm9yID0gMDsNCiAgICAgc3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLT5raV9m aWxwOw0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMiw2LDE5KQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDEyLDApDQogICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5r aV9sZWZ0Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDQsMiwwKQ0KKyAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lf bmJ5dGVzOw0KKyNlbHNlDQorICAgIHNzaXplX3QgY291bnQgPSBpb3ZfaXRl cl9jb3VudCh0byk7DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2Rl ICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQor ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5 LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAq eG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAgIA0KICAgICBpZiAo eG4gIT0gTlVMTCkNCiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3Jl YWRfZmlsZSglcCk6IHRva2VuczogMHgleFxuIiwNCiAJCQkgICAgIGlub2Rl LCB4bi0+dG9rZW5zKSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJyb3IgPSBubnBmc19k YXRhX3ZhbGlkKGlub2RlLCBOTlBGU19EQVRBX1IsIHBvcywgcG9zICsgY291 bnQpOw0KKyNlbHNlDQorICAgIGVycm9yID0gbm5wZnNfZGF0YV92YWxpZChp bm9kZSwgTk5QRlNfREFUQV9SLCBpb2NiLT5raV9wb3MsIGlvY2ItPmtpX3Bv cyArIGNvdW50KTsNCisjZW5kaWYNCiAgICAgaWYgKGVycm9yKSB7DQogCU5O UEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGRhdGEgbm90 IHZhbGlkICVkXG4iLCBlcnJvcikpOw0KIAlyZXR1cm4gZXJyb3I7DQogICAg IH0NCiAgICAgDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigyLDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJyb3IgPSBnZW5lcmljX2Zp bGVfYWlvX3JlYWQoaW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNl DQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fpb19yZWFkKGlvY2IsIGJ1 ZiwgY291bnQsIHBvcyk7DQorICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3Jl YWRfaXRlcihpb2NiLCB0byk7DQogI2VuZGlmDQogICAgIE5OUEZTREVCKFhE RUJWTk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGVycm9yID0gJWRcbiIsIGVy cm9yKSk7DQogICAgIHJldHVybiBlcnJvcjsNCkBAIC04MjksMjMgKzkyOCwz NiBAQCBubnBmc19haW9fcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogICoN CiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxNiwwKQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3dy aXRlKHN0cnVjdCBraW9jYiAqaW9jYiwNCi0jaWYgTElOVVhfVkVSU0lPTl9D T0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCiAJCWNvbnN0IHN0cnVj dCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBsb25nIG5yX3NlZ3MsDQorCQlsb2Zm X3QgcG9zKQ0KICNlbHNlDQotCQljb25zdCBjaGFyIF9fdXNlciAqYnVmLCBz aXplX3QgY291bnQsIA0KK3N0YXRpYyBzc2l6ZV90DQorbm5wZnNfd3JpdGVf aXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJv bSkNCiAjZW5kaWYNCi0JCWxvZmZfdCBwb3MpDQogew0KICAgICBpbnQgZXJy b3IgPSAwOw0KICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2Zp bHA7DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTIsMCkNCiAgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtp X2xlZnQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oNCwyLDApDQorICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9u Ynl0ZXM7DQorI2Vsc2UNCisgICAgc3NpemVfdCBjb3VudCA9IGlvdl9pdGVy X2NvdW50KGZyb20pOw0KICNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0K KyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRy eS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzX25vZGUg KnhuID0gVk5PREVfVE9fWE5PREUoaW5vZGUpOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE2LDApDQogICAgIGxvZmZf dCByZWFscG9zID0gcG9zOw0KKyNlbHNlDQorICAgIGxvZmZfdCByZWFscG9z ID0gaW9jYi0+a2lfcG9zOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNE RUIoWERFQlZOT1BTLCAoIm5ucGZzX2Fpb193cml0ZSglcCk6IHRva2Vuczog MHgleFxuIiwNCiAJCQkgaW5vZGUsIHhuLT50b2tlbnMpKTsNCkBAIC04NTks MTAgKzk3MSwxMCBAQCBubnBmc19haW9fd3JpdGUoc3RydWN0IGtpb2NiICpp b2NiLA0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiANCi0jaWYgTElOVVhf VkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0K ICAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV9haW9fd3JpdGUoaW9jYiwgaW92 LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJp Y19maWxlX2Fpb193cml0ZShpb2NiLCBidWYsIGNvdW50LCBwb3MpOw0KKyAg ICBlcnJvciA9IGdlbmVyaWNfZmlsZV93cml0ZV9pdGVyKGlvY2IsIGZyb20p Ow0KICNlbmRpZg0KICAgICBpZiAoIUlTX0VSUl9WQUxVRShlcnJvcikpDQog CXhuLT5mbGFncyB8PSBOTlBGU19EQVRBX0RJUlRZOyAvKiBYWFggcmFjZSAq Lw0KQEAgLTg3MSw5ICs5ODMsMTkgQEAgbm5wZnNfYWlvX3dyaXRlKHN0cnVj dCBraW9jYiAqaW9jYiwNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDAp DQogc3RhdGljIGludA0KIG5ucGZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRp ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KIAkgICAgIGludCBtb2RlLCBz dHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCitzdGF0aWMgaW50DQorbm5w ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksDQorCSAgICAgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRh ICpuZCkNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19jcmVhdGUoc3Ry dWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJICAg ICB1bW9kZV90IG1vZGUsIGJvb2wgZXhjbCkNCisjZW5kaWYNCiB7DQogICAg IHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9k ZSAqeG47DQpAQCAtOTAzLDkgKzEwMjUsMTcgQEAgbm5wZnNfY3JlYXRlKHN0 cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZA0KICAgICBYQV9DTEVBUigmbXNn LmF0dHIpOw0KICAgICBYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0K ICAgICBYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfUkVHKTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs NiwyOCkNCiAgICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZz Z2lkKTsNCisjZWxzZQ0KKyAgICBYQV9TRVRfR0lEKCZtc2cuYXR0ciwgY3Vy cmVudF9mc2dpZCgpKTsNCisjZW5kaWYNCiAgICAgbXNnLm1vZGUgPSAwOwkJ LyogWFhYICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQt PnVpZDsNCisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3Vp ZCgpOw0KKyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRf cGFnKCk7DQogICAgIGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNw LCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3Ig PT0gMCkNCkBAIC05NDYsNyArMTA3NiwxMSBAQCBubnBmc191bmxpbmsgKHN0 cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0DQogICAgIGlmIChzdHJsY3B5KG1z Zy5uYW1lLCBkZW50cnktPmRfbmFtZS5uYW1lLCBzaXplb2YobXNnLm5hbWUp KSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7 DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lP TigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsN CisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0K KyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7 DQogICAgIGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNn LmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkN CkBAIC05OTEsNyArMTEyNSwxMSBAQCBubnBmc19yZW5hbWUgKHN0cnVjdCBp bm9kZSAqIG9sZF9kaXIsIHN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uZXdf bmFtZSwgbmV3X2RlbnRyeS0+ZF9uYW1lLm5hbWUsIHNpemVvZihtc2cubmV3 X25hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRP T0xPTkc7DQogCQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVM X1ZFUlNJT04oMiw2LDI4KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50 LT51aWQ7DQorI2Vsc2UNCisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91 aWQoKTsNCisjZW5kaWYNCiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0 X3BhZygpOw0KICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZz cCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCiAgICAgaWYgKGVycm9y ID09IDApDQpAQCAtMTAwOCw4ICsxMTQ2LDEzIEBAIG5ucGZzX3JlbmFtZSAo c3RydWN0IGlub2RlICogb2xkX2Rpciwgc3QNCiAgICAgcmV0dXJuIGVycm9y Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywzLDApDQogc3RhdGljIGludA0KIG5ucGZzX21rZGlyKHN0cnVj dCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9k ZSkNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19ta2RpcihzdHJ1Y3Qg aW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBt b2RlKQ0KKyNlbmRpZg0KIHsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7 DQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCkBAIC0xMDQwLDkgKzEx ODMsMTcgQEAgbm5wZnNfbWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1 Y3QgZA0KIAlYQV9DTEVBUigmbXNnLmF0dHIpOw0KIAlYQV9TRVRfTU9ERSgm bXNnLmF0dHIsIG1vZGUpOw0KIAlYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5O UEZTX0ZJTEVfRElSKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtF Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJWEFfU0VUX0dJRCgmbXNnLmF0dHIs IGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxzZQ0KKyAgICAgICAgWEFfU0VUX0dJ RCgmbXNnLmF0dHIsIGN1cnJlbnRfZnNnaWQoKSk7DQorI2VuZGlmDQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYs MjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0K KyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5k aWYNCiAJbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAllcnJv ciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNp emVvZihtc2cpKTsNCiAJaWYgKGVycm9yID09IDApDQpAQCAtMTA4Myw3ICsx MjM0LDExIEBAIG5ucGZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3Ry dWN0IGQNCiAgICAgbXNnLnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0K ICAgICBpZiAoc3RybGNweShtc2cubmFtZSwgZGVudHJ5LT5kX25hbWUubmFt ZSwgc2l6ZW9mKG1zZy5uYW1lKSkgPj0gTk5QRlNfTUFYX05BTUUpDQogCSAg ICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQu dWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVp ZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBh ZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgZXJyb3IgPSBubnBmc19tZXNz YWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQog ICAgIGlmIChlcnJvciA9PSAwKQ0KQEAgLTExMjgsNyArMTI4MywxMSBAQCBz dGF0aWMgaW50IG5ucGZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkDQogCWlm IChzdHJsY3B5KG1zZy5uYW1lLCBuYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+ PSBOTlBGU19NQVhfTkFNRSkNCiAJICAgIHJldHVybiAtRU5BTUVUT09MT05H Ow0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQor I2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7 DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsN CiAJZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVh ZGVyLCBzaXplb2YobXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KQEAgLTEx NTcsMjkgKzEzMTYsNDcgQEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0 cnVjdCBpbm9kZSAqZA0KICAgICB4biA9IFZOT0RFX1RPX1hOT0RFKGRpcik7 DQogDQogICAgIHsNCi0Jc3RydWN0IG5ucGZzX21lc3NhZ2Vfc3ltbGluayBt c2c7DQorCXN0cnVjdCBubnBmc19tZXNzYWdlX3N5bWxpbmsgKm1zZyA9IE5V TEw7DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1NZTUxJ Tks7DQotCW1zZy5wYXJlbnRfaGFuZGxlID0geG4tPmhhbmRsZTsNCi0JaWYg KHN0cmxjcHkobXNnLm5hbWUsIG5hbWUsIHNpemVvZihtc2cubmFtZSkpID49 IE5OUEZTX01BWF9OQU1FKQ0KLQkgICAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7 DQotCWlmIChzdHJsY3B5KG1zZy5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9m KG1zZy5jb250ZW50cykpID49IE5OUEZTX01BWF9TWU1MSU5LX0NPTlRFTlQp DQotCSAgICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCi0JWEFfQ0xFQVIoJm1z Zy5hdHRyKTsNCi0JWEFfU0VUX01PREUoJm1zZy5hdHRyLCAwNzc3KTsNCi0J WEFfU0VUX1RZUEUoJm1zZy5hdHRyLCBOTlBGU19GSUxFX0xOSyk7DQotCVhB X1NFVF9HSUQoJm1zZy5hdHRyLCBjdXJyZW50LT5mc2dpZCk7DQorCW1zZyA9 IGttYWxsb2Moc2l6ZW9mKCptc2cpLCBHRlBfS0VSTkVMKTsNCiANCi0JbXNn LmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBu bnBmc19nZXRfcGFnKCk7DQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMo bm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KKwlpZiAobXNn ID09IE5VTEwpDQorCSAgcmV0dXJuIC1FTk9NRU07DQorDQorCW1zZy0+aGVh ZGVyLm9wY29kZSA9IE5OUEZTX01TR19TWU1MSU5LOw0KKwltc2ctPnBhcmVu dF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwlpZiAoc3RybGNweShtc2ctPm5h bWUsIG5hbWUsIHNpemVvZihtc2ctPm5hbWUpKSA+PSBOTlBGU19NQVhfTkFN RSkgew0KKwkgIGtmcmVlKG1zZyk7DQorCSAgcmV0dXJuIC1FTkFNRVRPT0xP Tkc7DQorCX0NCisJaWYgKHN0cmxjcHkobXNnLT5jb250ZW50cywgc3ltbmFt ZSwgc2l6ZW9mKG1zZy0+Y29udGVudHMpKSA+PSBOTlBGU19NQVhfU1lNTElO S19DT05URU5UKSB7DQorCSAga2ZyZWUobXNnKTsNCisJICByZXR1cm4gLUVO QU1FVE9PTE9ORzsNCisJfQ0KKwlYQV9DTEVBUigmbXNnLT5hdHRyKTsNCisJ WEFfU0VUX01PREUoJm1zZy0+YXR0ciwgMDc3Nyk7DQorCVhBX1NFVF9UWVBF KCZtc2ctPmF0dHIsIE5OUEZTX0ZJTEVfTE5LKTsNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJWEFfU0VU X0dJRCgmbXNnLT5hdHRyLCBjdXJyZW50LT5mc2dpZCk7DQorI2Vsc2UNCisg ICAgICAgIFhBX1NFVF9HSUQoJm1zZy0+YXR0ciwgY3VycmVudF9mc2dpZCgp KTsNCisjZW5kaWYNCisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtF Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJbXNnLT5jcmVkLnVpZCA9IGN1cnJl bnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLT5jcmVkLnVpZCA9IGN1 cnJlbnRfdWlkKCk7DQorI2VuZGlmDQorCW1zZy0+Y3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQorCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5w ZnNwLCAmbXNnLT5oZWFkZXIsIHNpemVvZigqbXNnKSk7DQogCWlmIChlcnJv ciA9PSAwKQ0KLQkgICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9S KCZtc2cpOw0KKwkgICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9S KG1zZyk7DQogDQogCS8qIFhYWCBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVy ZSAqLw0KIAlpZiAoREVOVFJZX1RPX1hERU5UUlkoZGVudHJ5KS0+eGRfZmxh Z3MgPT0gMCkgew0KIAkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBh bmljOiBubnBmc19zeW1saW5rOiBkZW50cnkgbm90IHZhbGlkXG4iKTsNCiAJ fQ0KKwlrZnJlZShtc2cpOw0KICAgICB9DQogDQogICAgIHJldHVybiBlcnJv cjsNCkBAIC0xMTg4LDEyICsxMzY1LDIxIEBAIHN0YXRpYyBpbnQgbm5wZnNf c3ltbGluayhzdHJ1Y3QgaW5vZGUgKmQNCiAvKg0KICAqIFdlIGhvbGQgaV9t dXRleC4NCiAgKi8NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMywxMSwwKQ0KIHN0YXRpYyBpbnQNCiBubnBmc19yZWFkZGly KHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90 IGZpbGxkaXIpDQorI2Vsc2UNCitzdGF0aWMgaW50DQorbm5wZnNfaXRlcmF0 ZShzdHJ1Y3QgZmlsZSAqIGZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4 KQ0KKyNlbmRpZg0KIHsNCiAgICAgaW50IGVycm9yOw0KICAgICBsb2ZmX3Qg b2Zmc2V0LCBiZWdpbl9vZmZzZXQ7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2Rl ICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQor ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5 LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmNhY2hl X2lub2RlOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9U T19YTk9ERShpbm9kZSk7DQogICAgIGNoYXIgKmJ1ZjsNCkBAIC0xMjY0LDYg KzE0NTAsNyBAQCBubnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwg dm9pZCAqDQogCQkgICAgKGludCkgeGRpcmVudC0+ZF9uYW1sZW4sDQogCQkg ICAgKGludCkgKG9mZnNldCtiZWdpbl9vZmZzZXQpKSk7DQogDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAJ ICAgIGlmICh4ZGlyZW50LT5kX2ZpbGVubyAhPSAwDQogCQkmJiAoZmlsbGRp cl9lcnJvciA9IGZpbGxkaXIgKGRpcmVudCwNCiAJCQkJICAgICB4ZGlyZW50 LT5kX25hbWUsDQpAQCAtMTI3NSw2ICsxNDYyLDE4IEBAIG5ucGZzX3JlYWRk aXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJCQkgKCJubnBmc19y ZWFkZGlyIGZpbGxkaXI6ICVkXG4iLCBmaWxsZGlyX2Vycm9yKSk7DQogCQli cmVhazsNCiAJICAgIH0NCisjZWxzZQ0KKwkgICAgaWYgKHhkaXJlbnQtPmRf ZmlsZW5vICE9IDANCisJCSYmIChmaWxsZGlyX2Vycm9yID0gZGlyX2VtaXQg KGN0eCwNCisJCQkJICAgICB4ZGlyZW50LT5kX25hbWUsDQorCQkJCSAgICAg eGRpcmVudC0+ZF9uYW1sZW4sDQorCQkJCSAgICAgeGRpcmVudC0+ZF9maWxl bm8sDQorCQkJCSAgICAgRFRfVU5LTk9XTikpIDwgMCkgew0KKwkJTk5QRlNE RUIoWERFQlJFQURESVIsDQorCQkJICgibm5wZnNfcmVhZGRpciBmaWxsZGly OiAlZFxuIiwgZmlsbGRpcl9lcnJvcikpOw0KKwkJYnJlYWs7DQorCSAgICB9 DQorI2VuZGlmDQogCSAgICBvZmZzZXQgKz0geGRpcmVudC0+ZF9yZWNsZW47 DQogDQogCSAgICBpZiAoeGRpcmVudC0+ZF9yZWNsZW4gPT0gMCkgew0KQEAg LTEzMzEsOSArMTUzMCwxNSBAQCBubnBmc19yZWFkbGluayAoc3RydWN0IGRl bnRyeSAqZGVudHJ5LCBjDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0K ICAqLw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTig0LDIsMCkNCiBzdGF0aWMgdm9pZCAqDQogbm5wZnNfZm9sbG93X2xp bmsgKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCiAJCSBzdHJ1Y3QgbmFtZWlk YXRhICpuZCkNCisjZWxzZQ0KK3N0YXRpYyBjb25zdCBjaGFyICoNCitubnBm c19mb2xsb3dfbGluayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KKwkJIHZv aWQgKipwYWdlKQ0KKyNlbmRpZg0KIHsNCiAgICAgaW50IGVycm9yID0gMDsN CiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IERFTlRSWV9UT19JTk9ERShk ZW50cnkpOw0KQEAgLTEzNDQsNyArMTU0OSwxMSBAQCBubnBmc19mb2xsb3df bGluayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5DQogICAgIGlmIChlcnJvcikN CiAgICAgICAgcmV0dXJuIEVSUl9QVFIoZXJyb3IpOw0KIA0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LDIsMCkNCiAgICAg cmV0dXJuIHBhZ2VfZm9sbG93X2xpbmtfbGlnaHQoZGVudHJ5LCBuZCk7DQor I2Vsc2UNCisgICAgcmV0dXJuIHBhZ2VfZm9sbG93X2xpbmtfbGlnaHQoZGVu dHJ5LCBwYWdlKTsNCisjZW5kaWYNCiB9DQogDQogLyoNCkBAIC0xMzk4LDcg KzE2MDcsMTEgQEAgbm5wZnNfc2V0YXR0ciAoc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBzdA0KICAgICAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcHV0YXR0 ciBtc2c7DQogDQogICAgICAgICBtc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZT X01TR19QVVRBVFRSOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50 LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJl bnRfdWlkKCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dl dF9wYWcoKTsNCiAgICAgICAgIG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0K ICAgICAgICAgbm5wZnNfaWF0dHIyYXR0cih4biwgYXR0ciwgJm1zZy5hdHRy KTsNCkBAIC0xNDIyLDYgKzE2MzUsOCBAQCBubnBmc19yZWxlYXNlX2ZpbGUg KHN0cnVjdCBpbm9kZSAqaW5vZGUsDQogICAgIHN0cnVjdCBubnBmc19ub2Rl ICp4bjsNCiAgICAgaW50IGVycm9yID0gMDsNCiANCisgICAgKHZvaWQpbm5w ZnNwOw0KKw0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfcmVs ZWFzZV9maWxlXG4iKSk7DQogDQogICAgIGVycm9yID0gbm5wZnNfaW5vZGVf dmFsaWQoaW5vZGUpOw0KQEAgLTE0NTAsMTggKzE2NjUsMTggQEAgbm5wZnNf cmVsZWFzZV9maWxlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KICAqDQogICov DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMTgpDQogc3RhdGljIGludA0KIG5ucGZzX2ZsdXNoKHN0cnVjdCBm aWxlICpmaWxlLCBmbF9vd25lcl90IGlkKQ0KLSNlbHNlDQotc3RhdGljIGlu dA0KLW5ucGZzX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlKQ0KLSNlbmRpZg0K IHsNCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX2ZsdXNoXG4i KSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTksMCkNCiAgICAgaWYgKGZpbGUgJiYgZmlsZS0+Zl9kZW50cnkg JiYgZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUpDQogCXJldHVybiBubnBmc19y ZWxlYXNlX2ZpbGUoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUsIGZpbGUpOw0K KyNlbHNlDQorICAgIGlmIChmaWxlICYmIGZpbGUtPmZfcGF0aC5kZW50cnkg JiYgZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZSkNCisJcmV0dXJuIG5u cGZzX3JlbGVhc2VfZmlsZShmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2Rl LCBmaWxlKTsNCisjZW5kaWYNCiAgICAgZWxzZQ0KIAlyZXR1cm4gMDsNCiB9 DQpAQCAtMTQ3MCw4ICsxNjg1LDEzIEBAIG5ucGZzX2ZsdXNoKHN0cnVjdCBm aWxlICpmaWxlKQ0KICAqIFJldHVybiAxIGlmIGBkZW50cnknIGlzIHN0aWxs IHZhbGlkLCBvdGhlcndpc2UgMC4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIGlu dA0KLW5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnks IHN0cnVjdCBuYW1laWRhdGEgKm5kKSANCitubnBmc19kX3JldmFsaWRhdGUo c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkN CisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19kX3JldmFsaWRhdGUoc3Ry dWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2Vu ZGlmDQogew0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RP X0lOT0RFKGRlbnRyeSk7DQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJu bnBmc19kX3JldmFsaWRhdGUgJXAgXCIlLipzXCIgKGlub2RlICVwKVxuIiwN CkBAIC0xNTE5LDkgKzE3MzksMTUgQEAgbm5wZnNfZF9yZXZhbGlkYXRlKHN0 cnVjdCBkZW50cnkgKmRlbnRyeQ0KICAgICByZXR1cm4gMDsNCiB9DQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz OCkNCiBzdGF0aWMNCiBpbnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpDQorI2Vsc2UNCitzdGF0aWMNCitpbnQNCitubnBmc19k X2RlbGV0ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorI2VuZGlm DQogew0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOw0KICAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG47DQpAQCAtMTU0NiwxMSArMTc3MiwxNiBAQCBubnBm c19kX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQogfQ0KIA0KIHN0 YXRpYyBzc2l6ZV90DQotbm5wZnNfc2VuZGZpbGUoc3RydWN0IGZpbGUgKmZp bGUsIGxvZmZfdCAqcHBvcywgc2l6ZV90IGNvdW50LA0KLQkgICAgICAgcmVh ZF9hY3Rvcl90IGFjdG9yLCB2b2lkICp0YXJnZXQpDQorbm5wZnNfc3BsaWNl X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCAqcHBvcywNCisJCSAg c3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGNvdW50LA0K KwkJICB1bnNpZ25lZCBpbnQgZmxhZ3MpDQogew0KICAgICBpbnQgZXJyb3Ig PSAwOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5m X2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5k aWYNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5P REUoaW5vZGUpOw0KICAgICANCiAgICAgaWYgKHhuICE9IE5VTEwpDQpAQCAt MTU2MSw4ICsxNzkyLDcgQEAgbm5wZnNfc2VuZGZpbGUoc3RydWN0IGZpbGUg KmZpbGUsIGxvZmZfdA0KIAlOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNf c2VuZGZpbGU6IGRhdGEgbm90IHZhbGlkICVkXG4iLCBlcnJvcikpOw0KIAly ZXR1cm4gZXJyb3I7DQogICAgIH0NCi0NCi0gICAgZXJyb3IgPSBnZW5lcmlj X2ZpbGVfc2VuZGZpbGUoZmlsZSwgcHBvcywgY291bnQsIGFjdG9yLCB0YXJn ZXQpOw0KKyAgICBlcnJvciA9IGZpbGUtPmZfb3AtPnNwbGljZV9yZWFkKGZp bGUsIHBwb3MsIHBpcGUsIGNvdW50LCBmbGFncyk7DQogDQogICAgIE5OUEZT REVCKFhERUJWTk9QUywgKCJubnBmc19zZW5kZmlsZTogZXJyb3IgPSAlZFxu IiwgZXJyb3IpKTsNCiAgICAgcmV0dXJuIGVycm9yOw0KQEAgLTE2MzksMzQg KzE4NjksMzEgQEAgbm5wZnNfd3JpdGVfYmFja3BhZ2Uoc3RydWN0IHBhZ2Ug KnBhZ2UsDQogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gYmFj a2ZpbGUtPmZfbWFwcGluZzsNCiAJdW5zaWduZWQgbGVuID0gUEFHRV9DQUNI RV9TSVpFOw0KIAlzdHJ1Y3QgcGFnZSAqYmFja3BhZ2U7DQorCXZvaWQgKmZz ZGF0YTsNCiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7DQogDQogCWludCBlcnJv cjsNCiAJDQotCWRvIHsNCi0JCWJhY2twYWdlID0gZ3JhYl9jYWNoZV9wYWdl KG1hcHBpbmcsIG5ucGZzX2dldF9iYWNraW5kZXgocGFnZSkpOw0KLQkJaWYg KCFiYWNrcGFnZSkgew0KLQkJCXByaW50aygibm5wZnNfd3JpdGVfYmFja3Bh Z2U6IG5vIHBhZ2VcbiIpOw0KLQkJCXJldHVybiAtRUlPOw0KLQkJfQ0KKwko dm9pZClvZmZzZXQ7DQogDQotCQllcnJvciA9IG1hcHBpbmctPmFfb3BzLT5w cmVwYXJlX3dyaXRlKGJhY2tmaWxlLCBiYWNrcGFnZSwNCi0JCQkJCQkgICAg ICAwLCBsZW4pOw0KKwlkbyB7DQorCQllcnJvciA9IHBhZ2VjYWNoZV93cml0 ZV9iZWdpbihiYWNrZmlsZSwgbWFwcGluZywgMCwgbGVuLA0KKwkJCQkJICAg ICAgQU9QX0ZMQUdfVU5JTlRFUlJVUFRJQkxFLA0KKwkJCQkJICAgICAgJmJh Y2twYWdlLCAmZnNkYXRhKTsNCiAJCWlmICghZXJyb3IpIHsNCiAJCQljb3B5 X2hpZ2hwYWdlKGJhY2twYWdlLCBwYWdlKTsNCiAJCQlmbHVzaF9kY2FjaGVf cGFnZShiYWNrcGFnZSk7DQotCQkJZXJyb3IgPSBtYXBwaW5nLT5hX29wcy0+ Y29tbWl0X3dyaXRlKGJhY2tmaWxlLCBiYWNrcGFnZSwNCi0JCQkJCQkJICAg ICAwLCBsZW4pOw0KKwkJCWVycm9yID0gcGFnZWNhY2hlX3dyaXRlX2VuZChi YWNrZmlsZSwgbWFwcGluZywgMCwgbGVuLA0KKwkJCQkJbGVuLCBiYWNrcGFn ZSwgZnNkYXRhKTsNCisJCQlpZiAoZXJyb3IgPiAwKQ0KKwkJCQllcnJvciA9 IDA7DQogCQl9DQogCQlpZiAoZXJyb3IgPT0gQU9QX1RSVU5DQVRFRF9QQUdF KSB7DQotCQkJcGFnZV9jYWNoZV9yZWxlYXNlKGJhY2twYWdlKTsNCiAJCQlj b250aW51ZTsNCiAJCX0NCiAJfSB3aGlsZSAoMCk7DQogDQogCW9mZnNldCA9 IHBhZ2Vfb2Zmc2V0KGJhY2twYWdlKTsNCi0JdW5sb2NrX3BhZ2UoYmFja3Bh Z2UpOw0KLQlwYWdlX2NhY2hlX3JlbGVhc2UoYmFja3BhZ2UpOw0KIA0KIAlp ZiAoZXJyb3IpDQogCQlwcmludGsoIm5ucGZzX3dyaXRlX2JhY2twYWdlOiBF SU9cbiIpOw0KQEAgLTE2ODksMTMgKzE5MTYsOSBAQCBubnBmc19yZWFkX2Jh Y2twYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzDQogCXN0cnVjdCBwYWdlICpi YWNrcGFnZTsNCiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7DQogDQotI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQor CSh2b2lkKW9mZnNldDsNCisNCiAJYmFja3BhZ2UgPSByZWFkX21hcHBpbmdf cGFnZShtYXBwaW5nLCBuLCBiYWNrZmlsZSk7DQotI2Vsc2UNCi0JYmFja3Bh Z2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgbiwNCi0JCQkJICAgKGZp bGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLA0KLQkJCQkgICBi YWNrZmlsZSk7DQotI2VuZGlmDQogCWlmICghSVNfRVJSKGJhY2twYWdlKSkg ew0KIAkJd2FpdF9vbl9wYWdlX2xvY2tlZChiYWNrcGFnZSk7DQogDQpAQCAt MTg0MiwxMSArMjA2NSwxNyBAQCBubnBmc19wcmVwYXJlX3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlLCBzDQogDQogCWlmIChtb2RzaXplID4gaV9zaXplX3Jl YWQoaW5vZGUpKSB7DQogCQlpbnQgZXJyb3I7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOCwwKQ0KIAkJZXJyb3IgPSB2 bXRydW5jYXRlKGlub2RlLCBtb2RzaXplKTsNCisjZWxzZQ0KKwkJZXJyb3Ig PSBpbm9kZV9uZXdzaXplX29rKGlub2RlLCBtb2RzaXplKTsNCisJCWlmKCFl cnJvcikNCisJCQl0cnVuY2F0ZV9zZXRzaXplKGlub2RlLCBtb2RzaXplKTsN CisjZW5kaWYNCiAJCWlmIChlcnJvcikgew0KIAkJCXByaW50aygibm5wZnNf cHJlcGFyZV93cml0ZTogdHJ1bmNhdGUoJWxsdSkgLT4gJWRcbiIsDQogCQkJ ICAgICAgIG1vZHNpemUsIC1lcnJvcik7DQotCQkJQlVHKCk7IC8qIFhYWCBu b3QgY29ycmVjdCAqLw0KKwkJCS8qQlVHKCk7Ki8gLyogWFhYIG5vdCBjb3Jy ZWN0ICovDQogCQl9DQogCX0NCiANCkBAIC0xODcyLDggKzIxMDEsMzcgQEAg bm5wZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgcw0KIAly ZXR1cm4gcmV0Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisNCitzdGF0aWMgaW50DQorbm5w ZnNfd3JpdGVfYmVnaW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRy ZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3QgcG9zLA0KK3Vuc2lnbmVkIGxl biwgdW5zaWduZWQgZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQg Kipmc2RhdGEpDQorew0KKwlzdHJ1Y3QgcGFnZSAqcGFnZTsNCisJcGdvZmZf dCBpbmRleDsNCisJdW5zaWduZWQgZnJvbTsNCisNCisJaW5kZXggPSBwb3Mg Pj4gUEFHRV9DQUNIRV9TSElGVDsNCisJZnJvbSA9IHBvcyAmIChQQUdFX0NB Q0hFX1NJWkUgLSAxKTsNCisNCisjaWZkZWYgQU9QX0ZMQUdfTk9GUw0KKwlw YWdlID0gZ3JhYl9jYWNoZV9wYWdlX3dyaXRlX2JlZ2luKG1hcHBpbmcsIGlu ZGV4LCBmbGFncyk7DQorI2Vsc2UNCisJcGFnZSA9IF9fZ3JhYl9jYWNoZV9w YWdlKG1hcHBpbmcsIGluZGV4KTsNCisjZW5kaWYNCisJaWYgKHBhZ2UgPT0g TlVMTCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwkqcGFnZXAgPSBwYWdl Ow0KKw0KKwlyZXR1cm4gbm5wZnNfcHJlcGFyZV93cml0ZShmaWxlLCBwYWdl LCBmcm9tLCBmcm9tICsgbGVuKTsNCit9DQorDQorI2VuZGlmDQorDQogc3Rh dGljIGludA0KLW5ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmls ZSwgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk IHRvKQ0KK25ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwg c3RydWN0IHBhZ2UgKnBhZ2UsDQorCQkgICB1bnNpZ25lZCBmcm9tLCB1bnNp Z25lZCB0bykNCiB7DQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdl LT5tYXBwaW5nLT5ob3N0Ow0KICAgICBsb2ZmX3QgcG9zID0gKChsb2ZmX3Qp cGFnZS0+aW5kZXggPDwgUEFHRV9DQUNIRV9TSElGVCkgKyB0bzsNCkBAIC0x OTAyLDE0ICsyMTYwLDUxIEBAIG5ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgc3QNCiAgICAgcmV0dXJuIDA7DQogfQ0KIA0KLSNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0K LWNvbnN0DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigyLDYsMjgpDQorDQorc3RhdGljIGludA0KK25ucGZzX3dyaXRlX2Vu ZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h cHBpbmcsIGxvZmZfdCBwb3MsDQorCQl1bnNpZ25lZCBsZW4sIHVuc2lnbmVk IGNvcGllZCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQgKmZzZGF0YSkNCit7 DQorCXVuc2lnbmVkIGZyb20gPSBwb3MgJiAoUEFHRV9DQUNIRV9TSVpFIC0g MSk7DQorDQorCS8qIHplcm8gdGhlIHN0YWxlIHBhcnQgb2YgdGhlIHBhZ2Ug aWYgd2UgZGlkIGEgc2hvcnQgY29weSAqLw0KKwlpZiAoY29waWVkIDwgbGVu KSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsNiwwKQ0KKwkJdm9pZCAqa2FkZHIgPSBrbWFwX2F0b21pYyhwYWdlLCBL TV9VU0VSMCk7DQorI2Vsc2UNCisJCXZvaWQgKmthZGRyID0ga21hcF9hdG9t aWMocGFnZSk7DQorI2VuZGlmDQorCQltZW1zZXQoa2FkZHIgKyBmcm9tICsg Y29waWVkLCAwLCBsZW4gLSBjb3BpZWQpOw0KKwkJZmx1c2hfZGNhY2hlX3Bh Z2UocGFnZSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsNiwwKQ0KKwkJa3VubWFwX2F0b21pYyhrYWRkciwgS01fVVNF UjApOw0KKyNlbHNlDQorCQlrdW5tYXBfYXRvbWljKGthZGRyKTsNCiAjZW5k aWYNCisJfQ0KKw0KKwlubnBmc19jb21taXRfd3JpdGUoZmlsZSwgcGFnZSwg ZnJvbSwgZnJvbSArIGNvcGllZCk7DQorDQorCXVubG9ja19wYWdlKHBhZ2Up Ow0KKwlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQorDQorCXJldHVybiBj b3BpZWQ7DQorfQ0KKw0KKyNlbmRpZg0KKw0KK2NvbnN0DQogc3RydWN0IGFk ZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBubnBmc19hb3BzID0gew0KIAkucmVh ZHBhZ2UgPSBubnBmc19yZWFkcGFnZSwNCiAJLndyaXRlcGFnZSA9IG5ucGZz X3dyaXRlcGFnZSwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDI4KQ0KIAkucHJlcGFyZV93cml0ZSA9IG5ucGZzX3By ZXBhcmVfd3JpdGUsDQogCS5jb21taXRfd3JpdGUgPSBubnBmc19jb21taXRf d3JpdGUsDQorI2Vsc2UNCisJLndyaXRlX2JlZ2luID0gbm5wZnNfd3JpdGVf YmVnaW4sDQorCS53cml0ZV9lbmQgPSBubnBmc193cml0ZV9lbmQsDQorI2Vu ZGlmDQogfTsNCiANCiAvKg0KQEAgLTE5MTcsMjEgKzIyMTIsMzAgQEAgc3Ry dWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBubnBmc19hbw0KICAqLw0K IA0KIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbm5wZnNfZmlsZV9vcGVyYXRp b25zID0gew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDE2LDApDQogICAgIC5haW9fcmVhZAk9IG5ucGZzX2Fpb19yZWFk LA0KICAgICAuYWlvX3dyaXRlCT0gbm5wZnNfYWlvX3dyaXRlLA0KKyNlbHNl DQorICAgIC5yZWFkX2l0ZXIJPSBubnBmc19yZWFkX2l0ZXIsDQorICAgIC53 cml0ZV9pdGVyCT0gbm5wZnNfd3JpdGVfaXRlciwNCisjZW5kaWYNCiAgICAg Lm1tYXAJPSBubnBmc19maWxlX21tYXAsDQogICAgIC5vcGVuCT0gbm5wZnNf b3BlbiwNCiAgICAgLmZsdXNoCT0gbm5wZnNfZmx1c2gsDQogICAgIC5yZWxl YXNlCT0gbm5wZnNfcmVsZWFzZV9maWxlLA0KICAgICAuZnN5bmMJPSBubnBm c19mc3luYywNCi0gICAgLnNlbmRmaWxlCT0gbm5wZnNfc2VuZGZpbGUsDQor ICAgIC5zcGxpY2VfcmVhZCA9IG5ucGZzX3NwbGljZV9yZWFkLA0KIH07DQog DQogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19kZWFkX29wZXJhdGlv bnMgPSB7DQogfTsNCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZz X2Rpcl9vcGVyYXRpb25zID0gew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDExLDApDQogICAgIC5yZWFkZGlyCT0gbm5w ZnNfcmVhZGRpciwNCisjZWxzZQ0KKyAgICAuaXRlcmF0ZSAgICA9IG5ucGZz X2l0ZXJhdGUsDQorI2VuZGlmDQogICAgIC5mbHVzaAk9IG5ucGZzX2ZsdXNo LA0KIH07DQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfbG9hZC5jIGFybGEtZm9yLWxpbnV4LTQuNC9u bnBmcy9saW51eC9ubnBmc19sb2FkLmMNCi0tLSBhcmxhLTAuOTAvbm5wZnMv bGludXgvbm5wZnNfbG9hZC5jCTIwMDYtMTAtMzEgMTE6MDI6NDEuMDAwMDAw MDAwICswMTAwDQorKysgYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xpbnV4 L25ucGZzX2xvYWQuYwkyMDE2LTAxLTEzIDIwOjE0OjAyLjgzMDEwMzUxNyAr MDEwMA0KQEAgLTU0LDcgKzU0LDExIEBAIGV4dGVybiBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIG5ucGZzX2ZvcHMNCiANCiBzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSBubnBmc19mc190eXBlID0gew0KICAgICAgICBuYW1lOiAgICAgICAg ICAgIm5ucGZzIiwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM5KQ0KICAgICAgICBnZXRfc2I6ICAgICAgICAgbm5w ZnNfZ2V0X3NiLA0KKyNlbHNlDQorICAgICAgIG1vdW50OiAgICAgICAgICBu bnBmc19tb3VudCwNCisjZW5kaWYNCiAgICAgICAga2lsbF9zYjogICAgICAg IGtpbGxfbGl0dGVyX3N1cGVyLA0KICAgICAgICBvd25lcjogICAgICAgICAg VEhJU19NT0RVTEUsDQogfTsNCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFy bGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19tZXNzYWdlLmMgYXJsYS1mb3It bGludXgtNC40L25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2UuYw0KLS0tIGFy bGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19tZXNzYWdlLmMJMjAwNy0wMS0w OSAxNzozMzozMS4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLWZvci1saW51 eC00LjQvbm5wZnMvbGludXgvbm5wZnNfbWVzc2FnZS5jCTIwMTYtMDEtMTQg MTY6NTA6MTUuMTM5NTc1MTUxICswMTAwDQpAQCAtNDUsNyArNDUsNyBAQA0K ICNpbmNsdWRlIDxsaW51eC9tb3VudC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0K LVJDU0lEKCIkSWQ6IG5ucGZzX21lc3NhZ2UuYyx2IDEuMTQzLjIuMSAyMDA3 LzAxLzA5IDE2OjMzOjMxIHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5u cGZzX21lc3NhZ2UuYyx2IDEuMTQ1IDIwMTAvMDgvMDggMjA6NDM6MDUgdG9s IEV4cCAkIik7DQogI2VuZGlmDQogDQogc3RhdGljIHZvaWQNCkBAIC01NSw5 ICs1NSwxNSBAQCBzdGF0aWMgdm9pZA0KIG5ucGZzX2RfcmVtb3ZlKHN0cnVj dCBkZW50cnkgKmRlbnRyeSkNCiB7DQogICAgIE5OUEZTREVCKFhERUJNU0cs ICgibm5wZnNfZF9yZW1vdmUgJXBcbiIsIGRlbnRyeSkpOw0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAg IHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOw0KICAgICBkZ2V0X2xvY2tlZChk ZW50cnkpOw0KICAgICBzcGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNl bHNlDQorICAgIHNwaW5fbG9jaygmZGVudHJ5LT5kX2xvY2spOw0KKyAgICBk Z2V0X2Rsb2NrKGRlbnRyeSk7DQorICAgIHNwaW5fdW5sb2NrKCZkZW50cnkt PmRfbG9jayk7DQorI2VuZGlmDQogICAgIGRfZHJvcChkZW50cnkpOw0KICAg ICBkcHV0KGRlbnRyeSk7DQogfQ0KQEAgLTEyMSw3ICsxMjcsMTEgQEAgbm5w ZnNfbWVzc2FnZV9pbnN0YWxsbm9kZShzdHJ1Y3Qgbm5wZnMgKg0KICAgICBz dHJ1Y3QgaW5vZGUgKmRpLCAqaW5vZGU7DQogICAgIHN0cnVjdCBkZW50cnkg KnBhcmVudCA9IE5VTEw7DQogICAgIHN0cnVjdCBxc3RyIHNxc3RyOw0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkN CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0 cnVjdCBobGlzdF9ub2RlICphbGlhczsNCisjZW5kaWYNCiAgICAgDQogICAg IE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfbWVzc2FnZV9pbnN0YWxsbm9k ZVxuIikpOw0KICAgICANCkBAIC0xNzYsMTIgKzE4NiwyNiBAQCBubnBmc19t ZXNzYWdlX2luc3RhbGxub2RlKHN0cnVjdCBubnBmcyAqDQogICAgICAqDQog ICAgICAqLw0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFzID0gZGktPmlfZGVudHJ5 Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAhPSAmZGktPmlfZGVudHJ5KSB7 DQogCXBhcmVudCA9IGxpc3RfZW50cnkoYWxpYXMsIHN0cnVjdCBkZW50cnks IGRfYWxpYXMpOw0KLQlzcGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCi0JZGdl dF9sb2NrZWQocGFyZW50KTsNCi0Jc3Bpbl91bmxvY2soJmRjYWNoZV9sb2Nr KTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDksMCkNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkocGFyZW50LCBh bGlhcywgJmRpLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbGlmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAg aGxpc3RfZm9yX2VhY2hfZW50cnkocGFyZW50LCAmZGktPmlfZGVudHJ5LCBk X2FsaWFzKSB7DQorI2Vsc2UNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnko cGFyZW50LCAmZGktPmlfZGVudHJ5LCBkX3UuZF9hbGlhcykgew0KKyNlbmRp Zg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQorICAgIHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOw0KKyAgICBk Z2V0X2xvY2tlZChwYXJlbnQpOw0KKyAgICBzcGluX3VubG9jaygmZGNhY2hl X2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5fbG9jaygmcGFyZW50LT5kX2xv Y2spOw0KKyAgICBkZ2V0X2Rsb2NrKHBhcmVudCk7DQorICAgIHNwaW5fdW5s b2NrKCZwYXJlbnQtPmRfbG9jayk7DQorI2VuZGlmDQogCWRlbnRyeSA9IGRf bG9va3VwKHBhcmVudCwgJnNxc3RyKTsNCiAJTk5QRlNERUIoWERFQk1TRywN CiAJCSAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGU6IGFsaWFzICVwLCBs b29rdXAgJXBcbiIsDQpAQCAtMjMzLDcgKzI1Nyw5IEBAIG5ucGZzX21lc3Nh Z2VfaW5zdGFsbG5vZGUoc3RydWN0IG5ucGZzICoNCiAJDQogCWRwdXQoZGVu dHJ5KTsNCiAJZGVudHJ5ID0gTlVMTDsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogCWFsaWFzID0gYWxpYXMt Pm5leHQ7DQorI2VuZGlmDQogCWRwdXQocGFyZW50KTsNCiAgICAgfQ0KICAg ICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5v ZGU6IGRvbmUgaW5zdGFsbGluZ1xuIikpOw0KQEAgLTI2OCw3ICsyOTQsMTMg QEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxsYXR0cihzdHJ1Y3Qgbm5wZnMgKg0K ICAgICB9DQogDQogICAgIGlub2RlID0gWE5PREVfVE9fVk5PREUodCk7DQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiww KQ0KICAgICBkZW50cnkgPSBsaXN0X2VudHJ5KGlub2RlLT5pX2RlbnRyeS5u ZXh0LCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisjZWxpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGRl bnRyeSA9IGhsaXN0X2VudHJ5KGlub2RlLT5pX2RlbnRyeS5maXJzdCwgc3Ry dWN0IGRlbnRyeSwgZF9hbGlhcyk7DQorI2Vsc2UNCisgICAgZGVudHJ5ID0g aGxpc3RfZW50cnkoaW5vZGUtPmlfZGVudHJ5LmZpcnN0LCBzdHJ1Y3QgZGVu dHJ5LCBkX3UuZF9hbGlhcyk7DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBG U0RFQihYREVCTVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbGF0dHIgbmFt ZTolc1xuIiwNCiAJCSAgICAgICBkZW50cnktPmRfbmFtZS5uYW1lKSk7DQpA QCAtMzk2LDE3ICs0MjgsMzYgQEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxsZGF0 YShzdHJ1Y3Qgbm5wZnMgKg0KIHN0YXRpYyB2b2lkDQogY2xlYXJfYWxsX2No aWxkcmVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcGFyZW50KQ0KIHsN CisgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0 IGxpc3RfaGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9u b2RlICphbGlhczsNCisjZW5kaWYNCiANCiAgYWdhaW46DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAgICAg c3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7DQorI2Vsc2UNCisgICAgLyogVE9E TzogZmluZCB0aGUgZGVudHJ5IHRvIGxvY2sgKi8NCisgICAgLypzcGluX2xv Y2soJmRlbnRyeS0+ZF9sb2NrKTsqLw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgYWxp YXMgPSBpbm9kZS0+aV9kZW50cnkubmV4dDsNCiAgICAgd2hpbGUgKGFsaWFz ICE9ICZpbm9kZS0+aV9kZW50cnkpIHsNCi0Jc3RydWN0IGRlbnRyeSAqZGVu dHJ5Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnks IGFsaWFzLCAmaW5vZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0K KyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9k ZW50cnksIGRfYWxpYXMpIHsNCisjZWxzZQ0KKyAgICBobGlzdF9mb3JfZWFj aF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnksIGRfdS5kX2FsaWFz KSB7DQorI2VuZGlmDQogCXN0cnVjdCBsaXN0X2hlYWQgKnN1YmRpcnM7DQog CXN0cnVjdCBubnBmc19kZW50cnlfZGF0YSAqeGQ7DQogCQ0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAJZGVu dHJ5ID0gbGlzdF9lbnRyeShhbGlhcywgc3RydWN0IGRlbnRyeSwgZF9hbGlh cyk7DQorI2VuZGlmDQogCWlmIChkZW50cnkgPT0gTlVMTCkgew0KIAkgICAg cHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiBkZW50cnkgaW4gYWxp YXMgbGlzdCBpcyBudWxsXG4iKTsNCiAJICAgIGJyZWFrOw0KQEAgLTQyMiw3 ICs0NzMsMTEgQEAgY2xlYXJfYWxsX2NoaWxkcmVuIChzdHJ1Y3QgaW5vZGUg Kmlub2RlLA0KIAlzdWJkaXJzID0gZGVudHJ5LT5kX3N1YmRpcnMubmV4dDsN CiAJd2hpbGUgKHN1YmRpcnMgIT0gJmRlbnRyeS0+ZF9zdWJkaXJzKSB7DQog CSAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0bXAgPSBzdWJkaXJzOw0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog CSAgICBzdHJ1Y3QgZGVudHJ5ICpjaGlsZCA9IGxpc3RfZW50cnkodG1wLCBz dHJ1Y3QgZGVudHJ5LCBkX3UuZF9jaGlsZCk7DQorI2Vsc2UNCisJICAgIHN0 cnVjdCBkZW50cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBk ZW50cnksIGRfY2hpbGQpOw0KKyNlbmRpZg0KIAkgICAgc3ViZGlycyA9IHRt cC0+bmV4dDsNCiAJICAgIE5OUEZTREVCKFhERUJNU0csICgiY2xlYXJfYWxs X2NoaWxkcmVuIGNoaWxkOiAlLipzIGlub2RlOiAlcC8lcCAiDQogCQkJICAg ICAgICJkY291bnQ6ICVkIGFsaWFzZXM6XG4iLA0KQEAgLTQ0MiwxNCArNDk3 LDI2IEBAIGNsZWFyX2FsbF9jaGlsZHJlbiAoc3RydWN0IGlub2RlICppbm9k ZSwNCiANCiAJICAgIC8qIFRocm93IGltbWVkaWF0ZWx5ICovDQogCSAgICBp ZiAobm5wZnNfZGNvdW50KGNoaWxkKSA9PSAwKSB7DQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAJICAgICAg ICBzcGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorCQkvKiBU T0RPOiB1bmxvY2sgdGhlIGRlbnRyeSAqLw0KKwkJLypzcGluX3VubG9jaygm ZGVudHJ5LT5kX2xvY2spOyovDQorI2VuZGlmDQogCQlubnBmc19kX3JlbW92 ZShjaGlsZCk7DQogCQlnb3RvIGFnYWluOw0KIAkgICAgfQ0KIAl9DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K IAlhbGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRpZg0KICAgICB9DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkN CiAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAg ICAvKiBUT0RPOiB1bmxvY2sgdGhlIGRlbnRyeSAqLw0KKyAgICAvKnNwaW5f dW5sb2NrKCZkZW50cnktPmRfbG9jayk7Ki8NCisjZW5kaWYNCiB9DQogDQog c3RhdGljIHZvaWQNCkBAIC02MDUsMTIgKzY3MiwxMCBAQCBnY19ibG9jayhz dHJ1Y3Qgbm5wZnMgKm5ucGZzcCwNCiAgICAgfQ0KIA0KICAgICBpZiAoIW5u cGZzX2Jsb2NrX2hhdmVfcCh4biwgb2Zmc2V0KSkgew0KLSNpZiAwICAgLyog aGFwcGVucyB3aGVuIGRhZW1vbiBzZW5kcyBzZXZlcmFsIG1lc3NhZ2VzIGZv ciBzYW1lIGJsb2NrICovDQogCXByaW50ayhLRVJOX0VNRVJHICJOTlBGUy9n Y19ibG9jazogIg0KIAkgICAgICAgIkVOT0VOVCAoJWQsJWQsJWQsJWQpIDB4 JWxseFxuIiwgDQogCSAgICAgICB4bi0+aGFuZGxlLmEsIHhuLT5oYW5kbGUu YiwgeG4tPmhhbmRsZS5jLCB4bi0+aGFuZGxlLmQsIA0KIAkgICAgICAgKHVu c2lnbmVkIGxvbmcgbG9uZylvZmZzZXQpOw0KLSNlbmRpZg0KIAlyZXR1cm4g LUVOT0VOVDsNCiAgICAgfQ0KIA0KQEAgLTcyMSwxMiArNzg2LDIyIEBAIG5u cGZzX21lc3NhZ2VfdmVyc2lvbihzdHJ1Y3Qgbm5wZnMgKm5ucGYNCiANCiAg ICAgLyogc2FuaXR5IGNoZWNrIGJlZm9yZSB3ZSBsb29rIGF0IGl0ICovDQog ICAgIGlmIChzaXplID09IHNpemVvZigqbWVzc2FnZSkgJiYgbWVzc2FnZS0+ dmVyc2lvbiA9PSBOTlBGU19WRVJTSU9OKSB7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IG5h bWVpZGF0YSBuZDsNCisjZWxzZQ0KKwlzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNl bmRpZg0KIAlpbnQgZXJyb3I7DQogDQogCXVpbnQ2NF90IGJsb2Nrc2l6ZSA9 IG1lc3NhZ2UtPmJsb2Nrc2l6ZTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KIAllcnJvciA9IHBhdGhf bG9va3VwKCIuIiwgMCwgJm5kKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCWVycm9yID0ga2Vybl9w YXRoKCIuIiwgMCwgJm5kLnBhdGgpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vy bl9wYXRoKCIuIiwgMCwgJnBhdGgpOw0KKyNlbmRpZg0KIAlpZiAoZXJyb3Ip IHsNCiAJICAgIC8qDQogCSAgICAgKiBCYWQgY2FjaGUgcm9vdCwganVzdCBy ZXR1cm4uDQpAQCAtNzM3LDEyICs4MTIsMjMgQEAgbm5wZnNfbWVzc2FnZV92 ZXJzaW9uKHN0cnVjdCBubnBmcyAqbm5wZg0KIAkJICAgIm5ucGZzX21lc3Nh Z2VfdmVyc2lvbiBmYWlsZWQgcGF0aF9sb29rdXAsICINCiAJCSAgICJlcnJu bzogJWRcbiIsIGVycm9yKTsNCiAJfSBlbHNlIHsNCi0JICAgIG5ucGZzcC0+ Y2FjaGVyb290ID0gbW50Z2V0KG5kLm1udCk7DQotCSAgICBubnBmc3AtPmNh Y2hlZGlyID0gZGdldChuZC5kZW50cnkpOw0KLQkgICAgcGF0aF9yZWxlYXNl KCZuZCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTksMCkNCisJICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50Z2V0 KG5kLnBhdGgubW50KTsNCisJICAgIG5ucGZzcC0+Y2FjaGVkaXIgPSBkZ2V0 KG5kLnBhdGguZGVudHJ5KTsNCisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsN CisjZWxzZQ0KKwkgICAgbm5wZnNwLT5jYWNoZXJvb3QgPSBtbnRnZXQocGF0 aC5tbnQpOw0KKwkgICAgbm5wZnNwLT5jYWNoZWRpciA9IGRnZXQocGF0aC5k ZW50cnkpOw0KKwkgICAgcGF0aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIAkg ICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lP TigyLDYsMjgpDQogCSAgICBubnBmc3AtPnVpZCA9IGN1cnJlbnQtPmZzdWlk Ow0KIAkgICAgbm5wZnNwLT5naWQgPSBjdXJyZW50LT5mc2dpZDsNCisjZWxz ZQ0KKyAgICAgICAgICAgIG5ucGZzcC0+dWlkID0gY3VycmVudF9mc3VpZCgp Ow0KKyAgICAgICAgICAgIG5ucGZzcC0+Z2lkID0gY3VycmVudF9mc2dpZCgp Ow0KKyNlbmRpZg0KIA0KIAkgICAgLyogWFhYIHdlIHNob3VsZCB2YWxpZGF0 ZSB0aGVzZSB2YWx1ZXMgKi8NCiAJICAgIG5ucGZzX2Jsb2Nrc2l6ZSA9IGJs b2Nrc2l6ZTsNCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9u bnBmcy9saW51eC9ubnBmc19ub2RlLmMgYXJsYS1mb3ItbGludXgtNC40L25u cGZzL2xpbnV4L25ucGZzX25vZGUuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9s aW51eC9ubnBmc19ub2RlLmMJMjAwNy0wMS0wMyAxNDo1MjowMi4wMDAwMDAw MDAgKzAxMDANCisrKyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGludXgv bm5wZnNfbm9kZS5jCTIwMTYtMDEtMTQgMTY6NTE6MTEuNDIwNTc4NTQ0ICsw MTAwDQpAQCAtMTMyLDcgKzEzMiwxMiBAQCBubnBmc19zZXRzaXplKHN0cnVj dCBpbm9kZSAqaW5vZGUsIHVpbnQ2DQogCXByaW50aygibm5wZnNfc2V0c2l6 ZTogdHJ1bmNhdGluZyBAMHglbGx1XG4iLA0KIAkgICAgICAgKHVuc2lnbmVk IGxvbmcgbG9uZylzaXplKTsNCiAjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw4LDApDQogCXZtdHJ1bmNhdGUo aW5vZGUsIHNpemUpOyAvKiBYWFggcmV0dmFsICovDQorI2Vsc2UNCisJaWYo IWlub2RlX25ld3NpemVfb2soaW5vZGUsIHNpemUpKQ0KKwkgICAgdHJ1bmNh dGVfc2V0c2l6ZShpbm9kZSwgc2l6ZSk7DQorI2VuZGlmDQogCW5ucGZzX2Js b2NrX3RydW5jYXRlKHhuLCBzaXplKTsNCiAgICAgfQ0KIH0NCkBAIC0xNTAs OSArMTU1LDE4IEBAIG5ucGZzX2F0dHIyaW5vZGUoY29uc3Qgc3RydWN0IG5u cGZzX2F0dHINCiAJc3RydWN0IHRpbWVzcGVjIG5vdGltZSA9IHswfTsNCiAN CiAJaW5vZGUtPmlfbW9kZSAgID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KIAlpbm9kZS0+aV91aWQg ICAgPSAwOw0KIAlpbm9kZS0+aV9naWQgICAgPSAwOw0KKyNlbHNlDQorCWlu b2RlLT5pX3VpZCAgICA9IEtVSURUX0lOSVQoMCk7DQorCWlub2RlLT5pX2dp ZCAgICA9IEtHSURUX0lOSVQoMCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMiwwKQ0KIAlpbm9kZS0+ aV9ubGluayAgPSAxOw0KKyNlbHNlDQorCXNldF9ubGluayhpbm9kZSwgMSk7 DQorI2VuZGlmDQogCWlub2RlLT5pX2F0aW1lICA9IG5vdGltZTsNCiAJaW5v ZGUtPmlfbXRpbWUgID0gbm90aW1lOw0KIAlpbm9kZS0+aV9jdGltZSAgPSBu b3RpbWU7DQpAQCAtMTY5LDcgKzE4MywxMSBAQCBubnBmc19hdHRyMmlub2Rl KGNvbnN0IHN0cnVjdCBubnBmc19hdHRyDQogICAgIGlmIChYQV9WQUxJRF9H SUQoYXR0cikpDQogCWlub2RlLT5pX2dpZCAgICA9IGF0dHItPnhhX2dpZDsN CiAgICAgaWYgKFhBX1ZBTElEX05MSU5LKGF0dHIpKQ0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUt PmlfbmxpbmsgID0gYXR0ci0+eGFfbmxpbms7DQorI2Vsc2UNCisJc2V0X25s aW5rKGlub2RlLCBhdHRyLT54YV9ubGluayk7DQorI2VuZGlmDQogICAgIA0K ICAgICBpZiAoWEFfVkFMSURfU0laRShhdHRyKSkgew0KIAlubnBmc19zZXRz aXplKGlub2RlLCBhdHRyLT54YV9zaXplKTsNCkBAIC01MTAsMTIgKzUyOCwy NCBAQCBubnBmc19oYXNfcGFnKGNvbnN0IHN0cnVjdCBubnBmc19ub2RlICp4 DQogaW50DQogbm5wZnNfbm9kZV91c2VycyhzdHJ1Y3QgaW5vZGUgKmlub2Rl KQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBvczsNCisjZWxz ZQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqcG9zOw0KKyNlbmRpZg0KICAg ICBpbnQgdXNlcnMgPSAwOw0KICAgICANCiAgICAgLyogWFhYIHRoaXMgc2hv dWxkIHByb2JhYmx5IGJlIHByb3RlY3RlZCBzb21laG93ICovDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAg ICBsaXN0X2Zvcl9lYWNoKHBvcywgJmlub2RlLT5pX2RlbnRyeSkgew0KKyNl bHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoKHBvcywgJmlub2RlLT5pX2RlbnRy eSkgew0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9 IGxpc3RfZW50cnkocG9zLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisj ZWxzZQ0KKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBsaXN0X2VudHJ5KHBv cywgc3RydWN0IGRlbnRyeSwgZF91LmRfYWxpYXMpOw0KKyNlbmRpZg0KIAlp ZiAobm5wZnNfZGNvdW50KGRlbnRyeSkgPiAxKQ0KIAkgICAgdXNlcnMrKzsN CiAgICAgfQ0KZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25u cGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLmMgYXJsYS1mb3ItbGludXgtNC40 L25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLmMNCi0tLSBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfc3lzY2FsbHMuYwkyMDA3LTAxLTAzIDE1OjI2 OjI3LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxpbnV4LTQuNC9u bnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jCTIwMTYtMDEtMTQgMTc6MDA6 MjAuNjQxNjExNjU1ICswMTAwDQpAQCAtNDIsNyArNDIsOSBAQA0KICNpbmNs dWRlIDxubnBmcy9ubnBmc19zeXNjYWxscy5oPg0KICNpbmNsdWRlIDxubnBm cy9ubnBmc19jb21tb24uaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQorI2VuZGlmDQog I2luY2x1ZGUgPGxpbnV4L3NtcC5oPg0KICNpbmNsdWRlIDxsaW51eC9wcm9j X2ZzLmg+DQogDQpAQCAtNTAsNiArNTIsMTEgQEANCiAjaW5jbHVkZSA8bGlu dXgvc2VjdXJpdHkuaD4NCiAjZW5kaWYNCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KKyN1bmRlZiBTWVND QUxMSEFDSw0KKy8qIHRoZSBtZXRob2QgdG8gcmVhZCAnbG93ZXJfYm91bmQn IGRvZXMgbm90IHdvcmsgb24ga2VybmVsIDMuNyBhbmQgbGF0ZXIsIHNlIG5u cGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyAqLw0KKyNlbmRpZg0KKw0KICNpZiAw DQogI2lmZGVmIENPTkZJR19DT01QQVQNCiAjaW5jbHVkZSA8bGludXgvaW9j dGwzMi5oPg0KQEAgLTY0LDcgKzcxLDcgQEANCiAjdW5kZWYgTkVFRF9WSUNF SU9DVEwzMg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZz X3N5c2NhbGxzLmMsdiAxLjEyMiAyMDA3LzAxLzAzIDE0OjI2OjI3IHRvbCBF eHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX3N5c2NhbGxzLmMsdiAxLjEy NSAyMDEwLzA4LzA4IDIwOjQzOjA2IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0K IA0KIHN0YXRpYyBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKm5ucGZzX3Byb2Nm c19kaXI7DQpAQCAtODIsMTIgKzg5LDIyIEBAIHR5cGVkZWYgc3RydWN0IGFm c3Byb2NkYXRhIHsNCiAgICAgdW5zaWduZWQgbG9uZyBzeXNjYWxsOw0KIH0g YWZzcHJvY2RhdGE7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzNikNCiBzdGF0aWMgaW50DQogbm5wZnNfcHJv Y2ZzX2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpm aWxlLA0KIAkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpOw0KKyNlbHNlDQorc3RhdGljIGxvbmcNCitubnBmc19wcm9jZnNfaW9j dGwoc3RydWN0IGZpbGUgKmZpbGUsDQorCQkgICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZyk7DQorI2VuZGlmDQogDQogc3RhdGljIHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgbm5wZnNfcHJvY2ZzX2ZvcHMgPSB7DQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz NikNCiAgICAgLmlvY3RsID0gbm5wZnNfcHJvY2ZzX2lvY3RsLA0KKyNlbHNl DQorICAgIC51bmxvY2tlZF9pb2N0bCA9IG5ucGZzX3Byb2Nmc19pb2N0bCwN CisjZW5kaWYNCiB9Ow0KIA0KIA0KQEAgLTE0Nyw1MyArMTY0LDQ4IEBAIHN0 YXRpYyBpbnQgbm5wZnNfc2VjX3JlZ2lzdGVyZWQgPSAwOw0KICNkZWZpbmUg U0VDMlBBRyhzKSAobm5wZnNfcGFnX3QpKHVuc2lnbmVkIGxvbmcpKHMpDQog I2RlZmluZSBQQUcyU0VDKHApICh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHAp DQogDQotc3RhdGljIGludA0KLW5ucGZzX3NlY190YXNrX2FsbG9jKHN0cnVj dCB0YXNrX3N0cnVjdCAqcCkNCi17DQotICAgIG5ucGZzX3BhZ190IHBhZyA9 IFNFQzJQQUcoY3VycmVudC0+c2VjdXJpdHkpOw0KLSAgICBpZiAocGFnKQ0K LQlwLT5zZWN1cml0eSA9IFBBRzJTRUMocGFnKTsNCi0gICAgcmV0dXJuIDA7 DQotfQ0KLQ0KLXN0YXRpYyB2b2lkDQotbm5wZnNfc2VjX3Rhc2tfZnJlZShz dHJ1Y3QgdGFza19zdHJ1Y3QgKnApDQotew0KLSAgICBubnBmc19wYWdfdCBw YWcgPSBTRUMyUEFHKHAtPnNlY3VyaXR5KTsNCi0gICAgaWYgKHBhZykNCi0J cC0+c2VjdXJpdHkgPSBOVUxMOw0KLX0NCi0NCiBzdGF0aWMgbm5wZnNfcGFn X3QNCiBubnBmc19nZXRfcGFnX3NlYyh2b2lkKQ0KIHsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg bm5wZnNfcGFnX3QgcGFnID0gU0VDMlBBRyhjdXJyZW50LT5zZWN1cml0eSk7 DQorI2Vsc2UNCisgICAgbm5wZnNfcGFnX3QgcGFnID0gU0VDMlBBRyhjdXJy ZW50X3NlY3VyaXR5KCkpOw0KKyNlbmRpZg0KICAgICBpZiAocGFnKQ0KIAly ZXR1cm4gcGFnOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICByZXR1cm4gY3VycmVudC0+dWlk Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsMTQsMCkNCisgICAgcmV0dXJuIGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UN CisgICAgeyBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7IHJldHVybiBr dWlkLnZhbDsgfQ0KKyNlbmRpZg0KIH0NCiANCiBzdGF0aWMgaW50DQogbm5w ZnNfc2V0X3BhZ19zZWModm9pZCkNCiB7DQogICAgIHN0YXRpYyBubnBmc19w YWdfdCBwYWdudW0gPSBOTlBGU19QQUdfTExJTTsNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwyOSkNCisgICAgc3Ry dWN0IGNyZWQgKmNyZWQ7DQorI2VuZGlmDQogDQogICAgIGlmIChwYWdudW0g PT0gTk5QRlNfUEFHX1VMSU0pDQogCXJldHVybiAtRU5PTUVNOw0KICAgICAv KiBwYWdudW0gPSBOTlBGU19QQUdfTExJTTsgKi8NCiAgICAgDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQog ICAgIGN1cnJlbnQtPnNlY3VyaXR5ID0gUEFHMlNFQyhwYWdudW0pOw0KKyNl bHNlDQorICAgIGNyZWQgPSAoc3RydWN0IGNyZWQgKikgY3VycmVudC0+Y3Jl ZDsNCisgICAgY3JlZC0+c2VjdXJpdHkgPSBQQUcyU0VDKHBhZ251bSk7DQor I2VuZGlmDQogICAgIHBhZ251bSsrOw0KICAgICByZXR1cm4gMDsNCiB9DQog DQotc3RhdGljIHN0cnVjdCBzZWN1cml0eV9vcGVyYXRpb25zIG5ucGZzX3Nl Y19vcHMgPSB7DQotICAgIC50YXNrX2FsbG9jX3NlY3VyaXR5ID0gbm5wZnNf c2VjX3Rhc2tfYWxsb2MsDQotICAgIC50YXNrX2ZyZWVfc2VjdXJpdHkgPSBu bnBmc19zZWNfdGFza19mcmVlLA0KLS8vICAgIC50YXNrX3JlcGFyZW50X3Rv X2luaXQgPSBubnBmc19zZWNfcmVwYXJlbnRfdG9faW5pdCwNCi19Ow0KLQ0K ICNlbmRpZiAvKiBDT05GSUdfU0VDVVJJVFkgKi8NCiANCiAjaWZkZWYgR1JP VVBQQUdTDQpAQCAtMjA2LDcgKzIxOCwxMiBAQCBmaW5kX3BhZyhzdHJ1Y3Qg Z3JvdXBfaW5mbyAqZ2kpDQogICAgIE5OUEZTREVCKFhERUJTWVMsICgiZmlu ZF9wYWc6IG5ncm91cHMgPSAlZFxuIiwgZ2ktPm5ncm91cHMpKTsNCiANCiAg ICAgZm9yIChpID0gZ2ktPm5ncm91cHMgLSAxOyBpID49IDA7IGktLSkgew0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0 LDApDQogCWdpZF90IGdyb3VwID0gR1JPVVBfQVQoZ2ksIGkpOw0KKyNlbHNl DQorCWtnaWRfdCBrZ3JvdXAgPSBHUk9VUF9BVChnaSwgaSk7DQorCWdpZF90 IGdyb3VwID0ga2dyb3VwLnZhbDsNCisjZW5kaWYNCiAJaWYgKChubnBmc19w YWdfdClncm91cCA+PSBOTlBGU19QQUdfTExJTSAmJiAobm5wZnNfcGFnX3Qp Z3JvdXAgPCBOTlBGU19QQUdfVUxJTSkgew0KIAkgICAgTk5QRlNERUIoWERF QlNZUywNCiAJCSAgICAgKCJmaW5kX3BhZzogRXhpc3RpbmcgcGFnICV1IGF0 IHBvcyAldVxuIiwgZ3JvdXAsIGkpKTsNCkBAIC0yMjIsMTUgKzIzOSwzMSBA QCBmaW5kX3BhZyhzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kpDQogc3RhdGljIG5u cGZzX3BhZ190DQogbm5wZnNfZ2V0X3BhZ19ncm91cCh2b2lkKQ0KIHsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwy OCkNCiAgICAgc3RydWN0IGdyb3VwX2luZm8gKmdpID0gY3VycmVudC0+Z3Jv dXBfaW5mbzsNCiAgICAgbm5wZnNfcGFnX3QgcmV0ID0gY3VycmVudC0+dWlk Ow0KKyNlbHNlDQorICAgIHN0cnVjdCBncm91cF9pbmZvICpnaSA9IGdldF9j dXJyZW50X2dyb3VwcygpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE0LDApDQorICAgIG5ucGZzX3BhZ190IHJldCA9 IGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UNCisgICAga3VpZF90IGt1aWQgPSBj dXJyZW50X3VpZCgpOw0KKyAgICBubnBmc19wYWdfdCByZXQgPSBrdWlkLnZh bDsNCisjZW5kaWYNCisjZW5kaWYNCiAgICAgaW50IGk7DQogDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQog ICAgIGdldF9ncm91cF9pbmZvKGdpKTsNCisjZW5kaWYNCiANCiAgICAgaSA9 IGZpbmRfcGFnKGdpKTsNCiAgICAgaWYgKGkgIT0gTk5QRlNfUEFHX05PVEZP VU5EKQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDE0LDApDQogCXJldCA9IEdST1VQX0FUKGdpLCBpKTsNCisjZWxzZQ0K Kwl7IGtnaWRfdCBrZ2lkID0gR1JPVVBfQVQoZ2ksIGkpOyByZXQgPSBrZ2lk LnZhbDsgfQ0KKyNlbmRpZg0KIA0KICAgICBwdXRfZ3JvdXBfaW5mbyhnaSk7 DQogDQpAQCAtMjQyLDEzICsyNzUsMTkgQEAgbm5wZnNfZ2V0X3BhZ19ncm91 cCh2b2lkKQ0KIHN0YXRpYyBpbnQNCiBzdG9yZV9wYWcobm5wZnNfcGFnX3Qg cGFnbnVtKQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgc3RydWN0IGdyb3VwX2luZm8gKm9s ZF9naSA9IGN1cnJlbnQtPmdyb3VwX2luZm87DQorI2Vsc2UNCisgICBzdHJ1 Y3QgZ3JvdXBfaW5mbyAqb2xkX2dpID0gZ2V0X2N1cnJlbnRfZ3JvdXBzKCk7 DQorI2VuZGlmDQogICAgIHN0cnVjdCBncm91cF9pbmZvICpuZXdfZ2k7DQot ICAgIGludCBuYmxvY2tzLCBjb3VudDsNCisgICAgdW5zaWduZWQgaW50IG5i bG9ja3MsIGNvdW50Ow0KICAgICBpbnQgZm91bmQgPSAwOw0KICAgICBpbnQg aSwgazsNCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpICAgIA0KICAgICBnZXRfZ3JvdXBfaW5mbyhv bGRfZ2kpOw0KKyNlbmRpZg0KIA0KICAgICBpID0gZmluZF9wYWcob2xkX2dp KTsNCiAgICAgaWYgKGkgIT0gTk5QRlNfUEFHX05PVEZPVU5EKQ0KQEAgLTI3 NCwxMCArMzEzLDE3IEBAIHN0b3JlX3BhZyhubnBmc19wYWdfdCBwYWdudW0p DQogCWNvdW50IC09IE5HUk9VUFNfUEVSX0JMT0NLOw0KICAgICB9DQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQs MCkNCiAgICAgaWYgKGZvdW5kKQ0KIAlHUk9VUF9BVChuZXdfZ2ksIGkpID0g cGFnbnVtOw0KICAgICBlbHNlDQogCUdST1VQX0FUKG5ld19naSwgbmV3X2dp LT5uZ3JvdXBzIC0gMSkgPSBwYWdudW07DQorI2Vsc2UNCisgICAgaWYgKGZv dW5kKQ0KKwl7IGtnaWRfdCBrZ2lkID0gS0dJRFRfSU5JVChwYWdudW0pOyBH Uk9VUF9BVChuZXdfZ2ksIGkpID0ga2dpZDsgfQ0KKyAgICBlbHNlDQorCXsg a2dpZF90IGtnaWQgPSBLR0lEVF9JTklUKHBhZ251bSk7IEdST1VQX0FUKG5l d19naSwgbmV3X2dpLT5uZ3JvdXBzIC0gMSkgPSBrZ2lkOyB9DQorI2VuZGlm DQogICAgIA0KICAgICBzZXRfY3VycmVudF9ncm91cHMobmV3X2dpKTsNCiAg ICAgcHV0X2dyb3VwX2luZm8obmV3X2dpKTsNCkBAIC0zMTcsNyArMzYzLDEz IEBAIG5ucGZzX2dldF9wYWcoKQ0KICAgICByZXR1cm4gbm5wZnNfZ2V0X3Bh Z19ncm91cCgpOw0KICNlbmRpZiAvKiBHUk9VUFBBR1MgKi8NCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkN CiAgICAgcmV0dXJuIGN1cnJlbnQtPnVpZDsNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQorICAgIHJldHVy biBjdXJyZW50X3VpZCgpOw0KKyNlbHNlDQorICAgIHsga3VpZF90IGt1aWQg PSBjdXJyZW50X3VpZCgpOyByZXR1cm4ga3VpZC52YWw7IH0NCisjZW5kaWYN CiB9DQogDQogc3RhdGljIGlubGluZSBpbnQNCkBAIC00MjIsNyArNDc0LDcg QEAgbm5wZnNfc2V0Z3JvdXBzMTYgKGludCBnaWRzZXRzaXplLCBvbGRfZw0K ICNlbmRpZiAvKiBTWVNDQUxMSEFDSyAqLw0KICNlbmRpZiAvKiBHUk9VUFBB R1MgKi8NCiANCi1zdHJ1Y3QgZmlsZV9oYW5kbGUgew0KK3N0cnVjdCBubnBm c19maWxlX2hhbmRsZSB7DQogICAgIG5ucGZzX2Rldl90IGRldjsNCiAgICAg aW5vX3QgaW5vZGU7DQogICAgIF9fdTMyIGdlbjsNCkBAIC01MDksMTQgKzU2 MSwyNyBAQCBubnBmc19kZWJ1Z19wcmludCAoc3RydWN0IGFybGFWaWNlSW9j dGwNCiAgKiBmb2xsb3cgc3ltbGlua3MgaWZmIGBmb2xsb3cnDQogICovDQog DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQogdXNlcl9wYXRoMmRl bnRyeSAoc3RydWN0IG5hbWVpZGF0YSAqbmQsIGNoYXIgKnVzZXJfcGF0aCwg aW50IGZvbGxvdykNCisjZWxzZQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICoN Cit1c2VyX3BhdGgyZGVudHJ5IChzdHJ1Y3QgcGF0aCAqcGF0aCwgY2hhciAq dXNlcl9wYXRoLCBpbnQgZm9sbG93KQ0KKyNlbmRpZg0KIHsNCi0gICAgY2hh ciAqa25hbWU7DQogICAgIGludCBmbGFncyA9IDA7DQogICAgIGludCBlcnJv ciA9IDA7DQogDQotICAgIGtuYW1lID0gZ2V0bmFtZSAodXNlcl9wYXRoKTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3 LDApDQorICAgIGNoYXIgKmtuYW1lOw0KKyAgICBrbmFtZSA9IGdldG5hbWUo dXNlcl9wYXRoKTsNCisjZWxzZQ0KKyAgICBjb25zdCBjaGFyICprbmFtZTsN CisgICAgc3RydWN0IGZpbGVuYW1lICpmbmFtZTsNCisgICAgZm5hbWUgPSBn ZXRuYW1lKHVzZXJfcGF0aCk7DQorICAgIGtuYW1lID0gZm5hbWUtPm5hbWU7 DQorI2VuZGlmDQorDQogICAgIGlmIChJU19FUlIoa25hbWUpKQ0KIAlyZXR1 cm4gRVJSX1BUUihQVFJfRVJSKGtuYW1lKSk7DQogICAgIGlmIChmb2xsb3cp DQpAQCAtNTI0LDExICs1ODksMjUgQEAgdXNlcl9wYXRoMmRlbnRyeSAoc3Ry dWN0IG5hbWVpZGF0YSAqbmQsDQogDQogICAgIE5OUEZTREVCKFhERUJNU0cs ICgibm5wZnNfc3lzY2FsbDogbG9va2luZyB1cDogJXNcbiIsIGtuYW1lKSk7 DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDIsNiwzOSkNCiAgICAgZXJyb3IgPSBwYXRoX2xvb2t1cChrbmFtZSwgZmxh Z3MsIG5kKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1l LCBmbGFncywgJihuZC0+cGF0aCkpOw0KKyNlbHNlDQorICAgIGVycm9yID0g a2Vybl9wYXRoKGtuYW1lLCBmbGFncywgcGF0aCk7DQorI2VuZGlmDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0K ICAgICBwdXRuYW1lKGtuYW1lKTsNCisjZWxzZQ0KKyAgICBrbWVtX2NhY2hl X2ZyZWUobmFtZXNfY2FjaGVwLCAodm9pZCAqKWtuYW1lKTsNCisjZW5kaWYN CiAgICAgaWYgKGVycm9yKQ0KIAlyZXR1cm4gRVJSX1BUUihlcnJvcik7DQot ICAgIHJldHVybiBuZC0+ZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIHJldHVybiBuZC0+ cGF0aC5kZW50cnk7DQorI2Vsc2UNCisgICAgcmV0dXJuIHBhdGgtPmRlbnRy eTsNCisjZW5kaWYNCiB9DQogDQogYXNtbGlua2FnZSBsb25nDQpAQCAtNTQw LDEyICs2MTksMjQgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQog ew0KICAgICBsb25nIGVycm9yID0gMDsNCiAgICAgc3RydWN0IGFybGFWaWNl SW9jdGwgdmljZV9pb2N0bDsgDQotICAgIHN0cnVjdCBubnBmc19tZXNzYWdl X3Bpb2N0bCBtc2c7DQorICAgIHN0cnVjdCBubnBmc19tZXNzYWdlX3Bpb2N0 bCAqbXNnID0gTlVMTDsNCiAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2Vfd2Fr ZXVwICptc2cyOw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBOVUxM Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDE5LDApDQogICAgIHN0cnVjdCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisg ICAgc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCiAgICAgDQorICAgIG1z ZyA9IGttYWxsb2Moc2l6ZW9mKCptc2cpLCBHRlBfS0VSTkVMKTsNCisgICAg aWYgKG1zZyA9PSBOVUxMKQ0KKyAgICAgIHJldHVybiAtRU5PTUVNOw0KKw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogICAgIGxvY2tfa2VybmVsKCk7DQorI2Vsc2UNCisgICAgLyogVE9E TzogbG9ja19rZXJuZWwoKSBpcyByZW1vdmVkLCBjb25zaWRlciBhZGRpbmcg YW4gcHJpdmF0ZSBsb2NrICovDQorI2VuZGlmDQogDQogICAgIE5OUEZTREVC KFhERUJTWVMsICgic3lzX2FmcyBrZXJuZWwgbG9ja2VkXG4iKSk7DQogDQpA QCAtNTc1LDcgKzY2Niw3IEBAIHN5c19hZnNfaW50IChpbnQgb3BlcmF0aW9u LA0KIAkgICAgZ290byB1bmxvY2s7DQogCX0NCiAJaWYgKHZpY2VfaW9jdGwu aW5fc2l6ZSAhPSAwKSB7DQotCSAgICBpZihjb3B5X2Zyb21fdXNlcigmbXNn Lm1zZywNCisJICAgIGlmKGNvcHlfZnJvbV91c2VyKCZtc2ctPm1zZywNCiAJ CQkgICAgICB2aWNlX2lvY3RsLmluLA0KIAkJCSAgICAgIHZpY2VfaW9jdGwu aW5fc2l6ZSkgIT0gMCkgew0KIAkJZXJyb3IgPSAtRUZBVUxUOw0KQEAgLTU4 Myw3ICs2NzQsMTEgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQog CSAgICB9DQogCX0NCiAJaWYgKGFfcGF0aFAgIT0gTlVMTCkgew0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog CSAgICBkZW50cnkgPSB1c2VyX3BhdGgyZGVudHJ5ICgmbmQsIGFfcGF0aFAs IGFfZm9sbG93U3ltbGlua3MpOw0KKyNlbHNlDQorCSAgICBkZW50cnkgPSB1 c2VyX3BhdGgyZGVudHJ5ICgmcGF0aCwgYV9wYXRoUCwgYV9mb2xsb3dTeW1s aW5rcyk7DQorI2VuZGlmDQogCSAgICBpZiAoIWRlbnRyeSkgew0KIAkJZXJy b3IgPSAtRUlOVkFMOw0KIAkJZ290byB1bmxvY2s7DQpAQCAtNjI4LDE5ICs3 MjMsMjMgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogCQllcnJv ciA9IC1FSU5WQUw7DQogCQlnb3RvIHVubG9jazsNCiAJICAgIH0NCi0JICAg IG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwkgICAgbXNnLT5oYW5kbGUg PSB4bi0+aGFuZGxlOw0KIAl9DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0g Tk5QRlNfTVNHX1BJT0NUTDsNCi0JbXNnLm9wY29kZSA9IGFfb3Bjb2RlOw0K Kwltc2ctPmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfUElPQ1RMOw0KKwlt c2ctPm9wY29kZSA9IGFfb3Bjb2RlOw0KIAkNCi0JbXNnLmluc2l6ZSAgID0g dmljZV9pb2N0bC5pbl9zaXplOw0KLQltc2cub3V0c2l6ZSAgPSB2aWNlX2lv Y3RsLm91dF9zaXplOw0KLQltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7 DQotCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCisJbXNnLT5p bnNpemUgICA9IHZpY2VfaW9jdGwuaW5fc2l6ZTsNCisJbXNnLT5vdXRzaXpl ICA9IHZpY2VfaW9jdGwub3V0X3NpemU7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQorCW1zZy0+Y3JlZC51 aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy0+Y3Jl ZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KKwltc2ctPmNyZWQu cGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAkNCi0JZXJyb3IgPSBubnBmc19t ZXNzYWdlX3JwYygmbm5wZnNbMF0sICZtc2cuaGVhZGVyLCBzaXplb2YobXNn KSk7IC8qIFhYWCAqLw0KLQltc2cyID0gKHN0cnVjdCBubnBmc19tZXNzYWdl X3dha2V1cCAqKSAmbXNnOw0KKwllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBj KCZubnBmc1swXSwgJm1zZy0+aGVhZGVyLCBzaXplb2YoKm1zZykpOyAvKiBY WFggKi8NCisJbXNnMiA9IChzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAg KikgbXNnOw0KIAlpZiAoZXJyb3IgPT0gMCkNCiAJICAgIGVycm9yID0gbXNn Mi0+ZXJyb3I7DQogDQpAQCAtNjc1LDEyICs3NzQsMjEgQEAgc3lzX2Fmc19p bnQgKGludCBvcGVyYXRpb24sDQogICAgIA0KICB1bmxvY2s6DQogICAgIGlm IChkZW50cnkpDQotCXBhdGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCXBhdGhf cHV0KCZuZC5wYXRoKTsNCisjZWxzZQ0KKwlwYXRoX3B1dCgmcGF0aCk7DQor I2VuZGlmDQogDQogICAgIE5OUEZTREVCKFhERUJTWVMsICgibm5wZnNfc3lz Y2FsbCByZXR1cm5zIGVycm9yOiAlbGRcbiIsIGVycm9yKSk7DQogDQogICAg IE5OUEZTREVCKFhERUJTWVMsICgic3lzX2FmcyBrZXJuZWwgdW5sb2NrXG4i KSk7DQorICAgIGtmcmVlKG1zZyk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAgdW5sb2NrX2tlcm5l bCgpOw0KKyNlbHNlDQorICAgIC8qIFRPRE86IHNlZSB0aGUgY29tbWVudCBh dCBsb2NrX2tlcm5lbCgpIGFib3ZlICovDQorI2VuZGlmDQogDQogICAgIHJl dHVybiBlcnJvcjsNCiB9DQpAQCAtNzI5LDkgKzgzNywxNSBAQCBzeXNfYWZz IChpbnQgb3BlcmF0aW9uLA0KIAkJICAgICAgIGFfZm9sbG93U3ltbGlua3Mp Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMiw2LDM2KQ0KIHN0YXRpYyBpbnQNCiBubnBmc19wcm9jZnNfaW9j dGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsDQog CQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisj ZWxzZQ0KK3N0YXRpYyBsb25nDQorbm5wZnNfcHJvY2ZzX2lvY3RsKHN0cnVj dCBmaWxlICpmaWxlLA0KKwkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWdu ZWQgbG9uZyBhcmcpDQorI2VuZGlmDQogew0KICAgICBhZnNwcm9jZGF0YSBh cmdzOw0KICAgICBsb25nIHJldDsNCkBAIC03ODAsMjEgKzg5NCwzMSBAQCBz dGF0aWMgaW50IG5ucGZzX2luaXRfcHJvY2ZzKHZvaWQpDQogew0KICAgICBz dHJ1Y3QgcHJvY19kaXJfZW50cnkgKmVudHJ5Ow0KICAgICANCi0gICAgbm5w ZnNfcHJvY2ZzX2RpciA9IHByb2NfbWtkaXIoTk5QRlNfUFJPQ19ESVIsIHBy b2Nfcm9vdF9mcyk7DQorICAgIG5ucGZzX3Byb2Nmc19kaXIgPSBwcm9jX21r ZGlyKCJmcy8iIE5OUEZTX1BST0NfRElSLCBOVUxMKTsNCiAgICAgaWYgKG5u cGZzX3Byb2Nmc19kaXIgPT0gTlVMTCkNCiAJcmV0dXJuIC1FTk9NRU07DQog ICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMzApDQogICAgIG5ucGZzX3Byb2Nmc19kaXItPm93bmVyID0gVEhJ U19NT0RVTEU7DQorI2VuZGlmDQogICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEwLDApDQogICAgIGVudHJ5ID0g Y3JlYXRlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19OT0RFLCAwNjY2LCBubnBm c19wcm9jZnNfZGlyKTsNCisjZWxzZQ0KKyAgICBlbnRyeSA9IHByb2NfY3Jl YXRlKE5OUEZTX1BST0NfTk9ERSwgMDY2NiwgTlVMTCwgJm5ucGZzX3Byb2Nm c19mb3BzKTsNCisjZW5kaWYNCiAgICAgaWYgKGVudHJ5ID09IE5VTEwpIHsN CiAJTk5QRlNERUIoWERFQlNZUywgKCJubnBmc19pbml0X3Byb2Nmczogbm8g bm9kZVxuIikpOw0KLQlyZW1vdmVfcHJvY19lbnRyeShOTlBGU19QUk9DX0RJ UiwgcHJvY19yb290X2ZzKTsNCisJcmVtb3ZlX3Byb2NfZW50cnkoImZzLyIg Tk5QRlNfUFJPQ19ESVIsIE5VTEwpOw0KIAlyZXR1cm4gLUVOT01FTTsNCiAg ICAgfQ0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDMwKQ0KICAgICBlbnRyeS0+b3duZXIgPSBUSElTX01P RFVMRTsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxMCwwKQ0KICAgICBlbnRyeS0+cHJvY19mb3BzID0g Jm5ucGZzX3Byb2Nmc19mb3BzOw0KKyNlbmRpZg0KIA0KICNpZmRlZiBTWVND QUxMQ09NUEFUDQogICAgIGlmIChyZWdpc3Rlcl9pb2N0bDMyX2NvbnZlcnNp b24oQVJMQV9WSU9DX1NZU0NBTEwzMiwgbm5wZnNfcHJvY2ZzX2lvY3RsMzIp KSB7DQpAQCAtODE1LDcgKzkzOSw3IEBAIHN0YXRpYyB2b2lkIG5ucGZzX2V4 aXRfcHJvY2ZzKHZvaWQpDQogICAgIH0NCiAjZW5kaWYgLyogU1lTQ0FMTENP TVBBVCAqLw0KICAgICByZW1vdmVfcHJvY19lbnRyeShOTlBGU19QUk9DX05P REUsIG5ucGZzX3Byb2Nmc19kaXIpOw0KLSAgICByZW1vdmVfcHJvY19lbnRy eShOTlBGU19QUk9DX0RJUiwgcHJvY19yb290X2ZzKTsNCisgICAgcmVtb3Zl X3Byb2NfZW50cnkoImZzLyIgTk5QRlNfUFJPQ19ESVIsIE5VTEwpOw0KIH0N CiANCiAjaWZkZWYgR1JPVVBQQUdTDQpAQCAtODM5LDE0ICs5NjMsNiBAQCBp bnN0YWxsX3NldGdyb3Vwcyh2b2lkKQ0KIHZvaWQNCiBpbnN0YWxsX2Fmc19z eXNjYWxsKHZvaWQpDQogew0KLSNpZmRlZiBDT05GSUdfU0VDVVJJVFkNCi0g ICAgaWYgKHJlZ2lzdGVyX3NlY3VyaXR5KCZubnBmc19zZWNfb3BzKSkNCi0J Tk5QRlNERUIoWERFQlNZUywNCi0JCSAoImluc3RhbGxfYWZzX3N5c2NhbGw6 IG5ucGZzX2luaXRfc2VjIGZhaWxlZFxuIikpOw0KLSAgICBlbHNlDQotCW5u cGZzX3NlY19yZWdpc3RlcmVkID0gMTsNCi0jZW5kaWYNCi0NCiAgICAgbm5w ZnNfaW5pdF9wcm9jZnMoKTsNCiANCiAjaWZkZWYgU1lTQ0FMTEhBQ0sNCkBA IC04ODcsMTIgKzEwMDMsNiBAQCByZXN0b3JlX2Fmc19zeXNjYWxsICh2b2lk KQ0KICNlbmRpZg0KICNlbmRpZiAvKiBTWVNDQUxMSEFDSyAqLw0KIA0KLSNp ZmRlZiBDT05GSUdfU0VDVVJJVFkNCi0gICAgaWYgKG5ucGZzX3NlY19yZWdp c3RlcmVkKQ0KLQlpZiAodW5yZWdpc3Rlcl9zZWN1cml0eSgmbm5wZnNfc2Vj X29wcykpDQotCSAgICBwcmludGsoS0VSTl9FTUVSRyAibm5wZnNfZXhpdF9z ZWM6IGNvdWxkbid0IHVucmVnaXN0ZXJcbiIpOw0KLSNlbmRpZiAvKiAhQ09O RklHX1NFQ1VSSVRZICovDQotDQogI2lmZGVmIEdST1VQUEFHUw0KICNpZmRl ZiBTWVNDQUxMSEFDSw0KICAgICBpZiAob2xkX3NldGdyb3Vwcykgew0KZGlm ZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25u cGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyBhcmxhLWZvci1saW51eC00LjQvbm5w ZnMvbGludXgvbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jDQotLS0gYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYwkyMDA2 LTEyLTExIDE3OjMxOjQ1LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9y LWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdl LmMJMjAxNi0wMS0xMyAyMTo1MTo0OS42ODI0NTcyMTMgKzAxMDANCkBAIC00 NywxMSArNDcsMjAgQEANCiAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+DQog DQogI2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMt bG9zc2FnZS5jLHYgMS4xNyAyMDA2LzEyLzExIDE2OjMxOjQ1IHRvbCBFeHAg JCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyx2 IDEuMTkgMjAxMC8wOC8wOCAyMDo0MzowNSB0b2wgRXhwICQiKTsNCisjZW5k aWYNCisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDMsNywwKQ0KKy8qIHRoZSBtZXRob2QgdG8gcmVhZCAnbG93ZXJfYm91 bmQnIGRvZXMgbm90IHdvcmsgb24ga2VybmVsIDMuNyBhbmQgbGF0ZXIgKi8N CisjdW5kZWYgU1lTQ0FMTEhBQ0sNCiAjZW5kaWYNCiANCiAjaW5jbHVkZSA8 bGludXgva2FsbHN5bXMuaD4NCisjaWZkZWYgU1lTQ0FMTEhBQ0sNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApDQog c3RhdGljIHZvaWQgKmxvd2VyX2JvdW5kID0gJmtlcm5lbF90aHJlYWQ7DQor I2VuZGlmDQorI2VuZGlmDQogDQogdm9pZCAqIF9fYXR0cmlidXRlX18oKHdl YWspKSBzeXNfY2FsbF90YWJsZSh2b2lkKTsNCiBubnBmc19zeXNfY2FsbF9m dW5jdGlvbiAqbm5wZnNfc3lzX2NhbGxfdGFibGUgPQ0KQEAgLTYzLDYgKzcy LDExIEBAIGNvbnN0IGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkNCiAJ CSAgICB1bnNpZ25lZCBsb25nICpvZmZzZXQsDQogCQkgICAgY2hhciAqKm1v ZG5hbWUsIGNoYXIgKm5hbWVidWYpOw0KIA0KKyNpZmRlZiBfX3g4Nl82NF9f DQorZXh0ZXJuIHJ3bG9ja190IHRhc2tsaXN0X2xvY2sgX19hdHRyaWJ1dGVf Xygod2VhaykpOw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBTWVNDQUxMSEFDSw0K IHN0YXRpYyB2b2lkICoqDQogZ2V0X3N0YXJ0X2FkZHIodm9pZCkgew0KICNp ZmRlZiBfX3g4Nl82NF9fDQpAQCAtNzEsNiArODUsNyBAQCBnZXRfc3RhcnRf YWRkcih2b2lkKSB7DQogICAgIHJldHVybiAodm9pZCAqKikmbXV0ZXhfbG9j azsNCiAjZW5kaWYNCiB9DQorI2VuZGlmDQogDQogc3RhdGljIGlubGluZSBp bnQgDQoga2FsbHN5bV9pc19lcXVhbCh1bnNpZ25lZCBsb25nIGFkZHIsIGNv bnN0IGNoYXIgKm5hbWUpDQpAQCAtMTM5LDYgKzE1NCw4IEBAIHZlcmlmeSh2 b2lkICoqcCkgew0KICAgICByZXR1cm4gMTsNCiB9DQogDQorI2lmZGVmIFNZ U0NBTExIQUNLDQorDQogc3RhdGljIGlubGluZSBpbnQgbG9va3NfZ29vZCh2 b2lkICoqcCkNCiB7DQogICAgIGlmICgqcCA8PSAodm9pZCopbG93ZXJfYm91 bmQgfHwgKnAgPj0gKHZvaWQqKXApDQpAQCAtMTg4LDMgKzIwNSw1IEBAIG5u cGZzX2ZpeHVwX3N5c2NhbGxfbG9zc2FnZSh2b2lkKQ0KIA0KICAgICByZXR1 cm4gMDsNCiB9DQorDQorI2VuZGlmDQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4 dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfdmZzb3BzLmMgYXJsYS1m b3ItbGludXgtNC40L25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jDQotLS0g YXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMDYtMTIt MTEgMTc6NDM6MzUuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS1mb3ItbGlu dXgtNC40L25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMTYtMDEtMTQg MTc6MTM6MTguMjYzNjU4NTM2ICswMTAwDQpAQCAtNDQsMzAgKzQ0LDI2IEBA DQogI2luY2x1ZGUgPGxpbnV4L21tLmg+DQogDQogI2lmZGVmIFJDU0lEDQot UkNTSUQoIiRJZDogbm5wZnNfdmZzb3BzLmMsdiAxLjEwOSAyMDA2LzEyLzEx IDE2OjQzOjM1IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX3Zm c29wcy5jLHYgMS4xMTEgMjAxMC8wOC8wOCAyMDo0MzowNiB0b2wgRXhwICQi KTsNCiAjZW5kaWYNCiANCiBzdHJ1Y3Qgbm5wZnMgbm5wZnNbTk5OUEZTXTsN CiANCi1zdGF0aWMgdm9pZCBubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9k ZSAqaW5vZGUpOw0KIHN0YXRpYyB2b2lkIG5ucGZzX3B1dF9zdXBlcihzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKTsNCi1zdGF0aWMgdm9pZCBubnBmc19wdXRf aW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lk IG5ucGZzX3dyaXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKTsN CisjZW5kaWYNCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50IG5ucGZzX3N0YXRmcyhz dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpOw0K LSNlbHNlDQotc3RhdGljIGludCBubnBmc19zdGF0ZnMoc3RydWN0IHN1cGVy X2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7DQotI2VuZGlmDQog DQogc3RhdGljIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIG5ucGZzX3NvcHMg PSB7IA0KLSAgICByZWFkX2lub2RlCQk6IG5ucGZzX3JlYWRfaW5vZGUsDQot ICAgIHB1dF9pbm9kZQkJOiBubnBmc19wdXRfaW5vZGUsDQogICAgIGFsbG9j X2lub2RlCQk6IG5ucGZzX25vZGVfYWxsb2MsDQogICAgIGRlc3Ryb3lfaW5v ZGUJOiBubnBmc19ub2RlX2ZyZWUsDQogICAgIGRyb3BfaW5vZGUJCTogZ2Vu ZXJpY19kZWxldGVfaW5vZGUsDQogICAgIHB1dF9zdXBlcgkJOiBubnBmc19w dXRfc3VwZXIsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsNiwwKQ0KICAgICB3cml0ZV9zdXBlcgkJOiBubnBmc193cml0 ZV9zdXBlciwNCisjZW5kaWYNCiAgICAgc3RhdGZzCQk6IG5ucGZzX3N0YXRm cywNCiB9Ow0KIA0KQEAgLTk0LDcgKzkwLDExIEBAIG5ucGZzX2ZldGNoX3Jv b3Qoc3RydWN0IGlub2RlICppKQ0KIAkgKiByb290J3MgcHJpdmlsaWdlcyAo dXN1YWxseSBub25lLCBhbmQgbm9uZSBpcyBuZWVkZWQpLg0KIAkgKi8NCiAJ DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTQsMCkNCiAJbXNnLmNyZWQudWlkID0gMDsNCisjZWxzZQ0KKwltc2cuY3Jl ZC51aWQgPSBLVUlEVF9JTklUKDApOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5w YWcgPSAwOw0KIAkNCiAJZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBm c3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtMTI5LDggKzEy OSwxMyBAQCBtYWtlX3Jvb3RfaW5vZGUoc3RydWN0IG5ucGZzICpubnBmc3Ap DQogICAgIFhBX1NFVF9NT0RFKCZub2RlLmF0dHIsIFNfSUZESVIgfCAwNzc3 KTsNCiAgICAgWEFfU0VUX05MSU5LKCZub2RlLmF0dHIsIDEwMCk7DQogICAg IFhBX1NFVF9TSVpFKCZub2RlLmF0dHIsIDApOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogICAgIFhBX1NF VF9VSUQoJm5vZGUuYXR0ciwgMCk7DQogICAgIFhBX1NFVF9HSUQoJm5vZGUu YXR0ciwgMCk7DQorI2Vsc2UNCisgICAgWEFfU0VUX1VJRCgmbm9kZS5hdHRy LCBLVUlEVF9JTklUKDApKTsNCisgICAgWEFfU0VUX0dJRCgmbm9kZS5hdHRy LCBLR0lEVF9JTklUKDApKTsNCisjZW5kaWYNCiAgICAgWEFfU0VUX0FUSU1F KCZub2RlLmF0dHIsIDApOw0KICAgICBYQV9TRVRfTVRJTUUoJm5vZGUuYXR0 ciwgMCk7DQogICAgIFhBX1NFVF9DVElNRSgmbm9kZS5hdHRyLCAwKTsNCkBA IC0xNTksNyArMTY0LDExIEBAIG1ha2Vfcm9vdCAoc3RydWN0IHN1cGVyX2Js b2NrICpzYikNCiAgICAgbm5wZnMtPnJvb3QgPSBpbm9kZTsNCiANCiAgICAg LyogWFhYIGVycm9yIGhhbmRsaW5nICovDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNCwwKQ0KICAgICBkcCA9IGRfYWxs b2Nfcm9vdChpbm9kZSk7DQorI2Vsc2UNCisgICAgZHAgPSBkX21ha2Vfcm9v dChpbm9kZSk7DQorI2VuZGlmDQogICAgIG5ucGZzX2RfaW5pdChkcCk7DQog ICAgIHNiLT5zX3Jvb3QgPSBkcDsNCiAgICAgcmV0dXJuIDA7DQpAQCAtMTgz LDEzICsxOTIsMjcgQEAgbm5wZnNfcmVhZF9zdXBlciAoc3RydWN0IHN1cGVy X2Jsb2NrICogcw0KICAgICBOTlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNf cmVhZF9zdXBlcjogYmVnaW4gc2V0dGluZyB2YXJpYWJsZXNcbiIpKTsNCiAN CiAgICAgaWYgKGRhdGEgIT0gTlVMTCkgew0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBuYW1l aWRhdGEgbmQ7DQorI2Vsc2UNCisJc3RydWN0IHBhdGggcGF0aDsNCisjZW5k aWYNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRoX2xvb2t1cChkYXRhLCAwLCAm bmQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTksMCkNCisJZXJyb3IgPSBrZXJuX3BhdGgoZGF0YSwgMCwgJm5k LnBhdGgpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9wYXRoKGRhdGEsIDAs ICZwYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVycm9yKQ0KIAkgICAgZGRldiA9 IEVSUl9QVFIoZXJyb3IpOw0KIAllbHNlDQotCSAgICBkZGV2ID0gbmQuZGVu dHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDE5LDApDQorCSAgICBkZGV2ID0gbmQucGF0aC5kZW50cnk7DQorI2Vs c2UNCisJICAgIGRkZXYgPSBwYXRoLmRlbnRyeTsNCisjZW5kaWYNCiANCiAJ aWYgKCFJU19FUlIoZGRldikpIHsNCiAJICAgIG1pbm9yZGV2aWNlID0gTUlO T1IoZGRldi0+ZF9pbm9kZS0+aV9yZGV2KTsNCkBAIC0yMzMsNyArMjU2LDcg QEAgbm5wZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYg0K ICAgICByZXR1cm4gMDsNCiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiBpbnQNCiBubnBm c19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsDQog CSAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwNCkBAIC0y NDIsMTkgKzI2NSwyMiBAQCBubnBmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lz dGVtX3R5cGUgKmZzDQogICAgIHJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlw ZSwgZmxhZ3MsIGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIsIG1udCk7DQogfQ0K ICNlbHNlDQotc3RydWN0IHN1cGVyX2Jsb2NrICoNCi1ubnBmc19nZXRfc2Ig KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KLQkgICAgICBp bnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKSAN CitzdHJ1Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0cnVjdCBmaWxlX3N5 c3RlbV90eXBlICpmc190eXBlLA0KKwkgICAgIGludCBmbGFncywgY29uc3Qg Y2hhciAqZGV2X25hbWUsDQorCSAgICAgdm9pZCAqZGF0YSkgDQogew0KLSAg ICByZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBu bnBmc19maWxsX3N1cGVyKTsNCisgICAgcmV0dXJuIG1vdW50X25vZGV2KGZz X3R5cGUsIGZsYWdzLCBkYXRhLCBubnBmc19maWxsX3N1cGVyKTsNCiB9DQog I2VuZGlmDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lkDQogbm5wZnNfd3JpdGVfc3Vw ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpDQogew0KICAgICBzYi0+c19k aXJ0ID0gMDsNCiB9DQorI2VuZGlmDQogDQogLyoNCiAgKiBYWFggaXMgdGhp cyBnb29kPyANCkBAIC0yNzMsNzMgKzI5OSw2IEBAIG5ucGZzX3B1dF9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQ0KICAgICBOTlBGU0RFQihYREVC VkZPUFMsICgibm5wZnNfcHV0X3N1cGVyIGV4aXRpbmdcbiIpKTsNCiB9DQog DQotc3RhdGljIHZvaWQNCi1ubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9k ZSAqaW5vZGUpDQotew0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBm c19yZWFkX2lub2RlIHN0YXJ0aW5nIGlub2RlOiAlcFxuIixpbm9kZSkpOw0K LSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGlu b2RlLT5pX2lubzogJWxkXG4iLGlub2RlLT5pX2lubykpOw0KLSNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQotICAg IGlub2RlLT5pX2Jsa3NpemUgPSAxMDI0Ow0KLSNlbmRpZg0KLSAgICBpbm9k ZS0+aV9tb2RlID0gMDsNCi0gICAgaW5vZGUtPmlfb3AgPSBOVUxMOw0KLSAg ICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGV4aXRp bmdcbiIpKTsNCi19DQotIA0KLS8qDQotICogQ2FsbGVkIHdoZW4gYGlub2Rl JyBpcyBkZS1yZWZlcmVuY2VkLCBpZSB3aGVuIGlwdXQgaXMgY2FsbGVkLg0K LSAqLw0KLQ0KLXN0YXRpYyB2b2lkDQotbm5wZnNfcHV0X2lub2RlKHN0cnVj dCBpbm9kZSAqaW5vZGUpDQotew0KLSAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAq eG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQotICAgIHN0cnVjdCBubnBm cyAqbm5wZnNwID0gTk5QRlNfRlJPTV9WTk9ERShpbm9kZSk7DQotICAgIGlu dCBiYWQ7DQotDQotICAgIE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3B1 dF9pbm9kZTogaW5vZGU6ICVwIGNvdW50OiAlZCBhbGlhc2VzOiIsDQotCQkJ aW5vZGUsIG5ucGZzX2ljb3VudChpbm9kZSkpKTsNCi0gICAgbm5wZnNfcHJp bnRfYWxpYXNlcyhpbm9kZSk7DQotICAgIA0KLSAgICBkb3duKCZubnBmc3At PmluYWN0aXZlX3NlbSk7DQotDQotICAgIGlmICgobm5wZnNwLT5zdGF0dXMg JiBOTlBGU19ERVZPUEVOKSA9PSAwKSB7DQotCWlmICghaXNfYmFkX2lub2Rl KGlub2RlKSkgew0KLQkgICAgaWYgKGlub2RlICE9IG5ucGZzcC0+cm9vdCkg ew0KLQkJbWFrZV9iYWRfaW5vZGUoaW5vZGUpOw0KLQkJbm5wZnNfaXJlbGUo aW5vZGUpOyAvKiBzZWUgbm5wZnNfbm9kZV9hZGQoKSAqLw0KLQkgICAgfQ0K LQkgICAgeG4tPmZsYWdzIHw9IE5OUEZTX1NUQUxFOw0KLQl9DQotCWJhZCA9 IDE7IC8qIG9yIHJvb3QsIHJlYWxseSAqLw0KLSAgICB9IGVsc2Ugew0KLQli YWQgPSBpc19iYWRfaW5vZGUoaW5vZGUpOw0KLSAgICB9DQotDQotICAgIGlm ICh4bi0+ZmxhZ3MgJiBOTlBGU19TVEFMRSAmJiAhbm5wZnNfbm9kZV91c2Vy cyhpbm9kZSkpIHsNCi0JeG4tPmZsYWdzIHw9IE5OUEZTX05PREVfSVBVVDsg LyogWFhYIGxvY2tpbmcgKi8NCi0gIAlubnBmc19mb3JjZV9pbnZhbGlkX25v ZGUoeG4pOw0KLQl4bi0+ZmxhZ3MgJj0gfk5OUEZTX05PREVfSVBVVDsNCi0g ICAgfQ0KLSAgICANCi0gICAgaWYgKGJhZCkgew0KLQlpZiAobm5wZnNfaWNv dW50KGlub2RlKSA9PSAxKQ0KLQkgICAgbm5wZnNfbm9kZV9jbGVhcih4bik7 DQotICAgIH0gZWxzZSBpZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAyKSB7 DQotCS8qIA0KLQkgKiBUaGUgbGFzdCBleHRlcm5hbCByZWZlcmVuY2UgaXMg YmVpbmcgZHJvcHBlZCwgb25seSB0aGUgb25lDQotCSAqIGZyb20gbm5wZnNf bm9kZV9hZGQoKSBpcyBsZWZ0LiBUaW1lIHRvIGxldCBkYWVtb24gcmVsZWFz ZQ0KLQkgKiB0aGlzIG5vZGUgcHJvcGVybHkuDQotCSAqLw0KLQlpZiAoKHhu LT5mbGFncyAmIE5OUEZTX0xJTUJPKSA9PSAwKSB7DQotCSAgICBubnBmc19u b2RlX2NsZWFyKHhuKTsNCi0JICAgIG5ucGZzX3F1ZXVlX2luYWN0aXZlKHhu KTsNCi0JfQ0KLSAgICB9DQotDQotICAgIHVwKCZubnBmc3AtPmluYWN0aXZl X3NlbSk7DQotfQ0KLQ0KIHN0YXRpYyBpbnQNCiBubnBmc19zdGF0ZnNfaW50 KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYp DQogew0KQEAgLTM1MiwyNSArMzExLDIxIEBAIG5ucGZzX3N0YXRmc19pbnQo c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwNCiAgICAgdG1wLmZfYmF2YWlsICA9 IDEwMjQqMTAyNCoyLTUwOw0KICAgICB0bXAuZl9maWxlcyAgID0gMTAyNCox MDI0Ow0KICAgICB0bXAuZl9mZnJlZSAgID0gMTAyNCoxMDI0LTEwMDsNCisg ICAgdG1wLmZfZnNpZC52YWxbMF0gPSAwOw0KKyAgICB0bXAuZl9mc2lkLnZh bFsxXSA9IDA7DQogICAgIHRtcC5mX25hbWVsZW4gPSBOQU1FX01BWDsNCisg ICAgdG1wLmZfZnJzaXplICA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzBdID0g MDsNCisgICAgdG1wLmZfc3BhcmVbMV0gPSAwOw0KKyAgICB0bXAuZl9zcGFy ZVsyXSA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzNdID0gMDsNCisgICAgdG1w LmZfc3BhcmVbNF0gPSAwOw0KICAgICAqYnVmID0gdG1wOw0KICAgICByZXR1 cm4gMDsNCiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJO RUxfVkVSU0lPTigyLDYsMTgpDQotDQogc3RhdGljIGludA0KIG5ucGZzX3N0 YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpi dWYpDQogew0KICAgICByZXR1cm4gbm5wZnNfc3RhdGZzX2ludChkZW50cnkt PmRfc2IsIGJ1Zik7DQogfQ0KLQ0KLSNlbHNlDQotDQotc3RhdGljIGludA0K LW5ucGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qg a3N0YXRmcyAqYnVmKQ0KLXsNCi0gICAgcmV0dXJuIG5ucGZzX3N0YXRmc19p bnQoc2IsIGJ1Zik7DQotfQ0KLQ0KLSNlbmRpZg0K ---276651502-1797910491-1452823920=:11672 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Arla-drinkers mailing list [email protected] https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers ---276651502-1797910491-1452823920=:11672--