Re: PATCH v10: Arla 0.90 on Linux 2.6.3x to 4.4
Bo Branten <[email protected]> Tue, 16 Feb 2016 18:52:55 +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-719180580-1455645175=:24402 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH v10: Arla 0.90 on Linux 2.6.3x to 4.4 Corrected an error in the use of getname/putname that showed up on Linux kernel 3.14 and later. Bo Branten ---276651502-719180580-1455645175=:24402 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-v10-arla-0.90-for-linux-2.6.3x-to-4.4 Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-v10-arla-0.90-for-linux-2.6.3x-to-4.4 ZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL25ucGZzL2luY2x1 ZGUvbm5wZnMvbm5wZnNfYXR0ci5oIGFybGEtMC45MC9ubnBmcy9pbmNsdWRl L25ucGZzL25ucGZzX2F0dHIuaA0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAwNi0xMC0yNCAxODozMzoz MC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvaW5jbHVk ZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAxNi0wMS0yMiAxMjo1MTowNy4wMDAw MDAwMDAgKzAxMDANCkBAIC0xMTMsOCArMTEzLDE4IEBAIHN0cnVjdCBubnBm c19hdHRyIHsNCiAgICAgdWludDMyX3QJCXhhX25saW5rOw0KICAgICB1aW50 MzJfdAkJeGFfdHlwZTsNCiANCisjaWZuZGVmIF9fS0VSTkVMX18NCiAgICAg dWludDMyX3QJCXhhX3VpZDsNCiAgICAgdWludDMyX3QJCXhhX2dpZDsNCisj ZWxzZQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMywxNCwwKQ0KKyAgICBrdWlkX3QJCXhhX3VpZDsNCisgICAga2dpZF90 CQl4YV9naWQ7DQorI2Vsc2UNCisgICAgdWludDMyX3QJCXhhX3VpZDsNCisg ICAgdWludDMyX3QJCXhhX2dpZDsNCisjZW5kaWYNCisjZW5kaWYNCiANCiAg ICAgdWludDMyX3QJCXhhX2F0aW1lOw0KICAgICB1aW50MzJfdAkJeGFfbXRp bWU7DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaCBhcmxhLTAuOTAvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaA0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaAkyMDA2LTEw LTI0IDE4OjMzOjMxLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtMC45MC9u bnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2Jsb2Nrcy5oCTIwMDctMDEtMjQg MTg6MDk6MTcuMDAwMDAwMDAwICswMTAwDQpAQCAtMSw1ICsxLDUgQEANCiAv Kg0KLSAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LCBTdG9ja2hvbG1zIFVu aXZlcnNpdGV0DQorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIFN0b2Nr aG9sbXMgVW5pdmVyc2l0ZXQNCiAgKiAoU3RvY2tob2xtIFVuaXZlcnNpdHks IFN0b2NraG9sbSBTd2VkZW4pDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4N CiAgKg0KQEAgLTMxLDExICszMSwxNSBAQA0KICAqIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDogbm5wZnNfYmxvY2tz LmgsdiAxLjIgMjAwNi8xMC8yNCAxNjozMzozMSB0b2wgRXhwICQgKi8NCisv KiAkSWQ6IG5ucGZzX2Jsb2Nrcy5oLHYgMS4zIDIwMDcvMDEvMjQgMTc6MDk6 MTcgdG9sIEV4cCAkICovDQogDQogI2RlZmluZSBOTlBGU19OT19JTkRFWCAg IDAgIC8qIGR1bW15IGNhY2hlIGluZGV4ICovDQogI2RlZmluZSBOTlBGU19O T19PRkZTRVQgICgodWludDY0X3QpLTEpICAvKiBkdW1teSBvZmZzZXQsIG5v IGJsb2NrICovDQogDQotI2RlZmluZSBOTlBGU19DQUNIRV9GSUxFX1BBVEgg ICAgIiUwMlgvJTAyWC8lMDJsbFgiDQotI2RlZmluZSBOTlBGU19DQUNIRV9E SVJfUEFUSCAgICAgIiUwMlgvJTAyWEAiDQotI2RlZmluZSBOTlBGU19DQUNI RV9QQVRIX1NJWkUgICAgKCA2ICsxICsyKzEgKzE2ICsxKQ0KKyNkZWZpbmUg Tk5QRlNfQ0FDSEVfRklMRV9ESVIxICAgICAgICAiJTAyeCINCisjZGVmaW5l IE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEggICAgTk5QRlNfQ0FDSEVfRklM RV9ESVIxICIvIiBOTlBGU19DQUNIRV9GSUxFX0RJUjENCisjZGVmaW5lIE5O UEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSCAgIiUwMmxseCINCisNCisjZGVm aW5lIE5OUEZTX0NBQ0hFX0ZJTEVfUEFUSCAgIE5OUEZTX0NBQ0hFX0ZJTEVf RElSX1BBVEggIi8iIE5OUEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSA0KKyNk ZWZpbmUgTk5QRlNfQ0FDSEVfRElSX1BBVEggICAgTk5QRlNfQ0FDSEVfRklM RV9ESVJfUEFUSCAiQCINCisjZGVmaW5lIE5OUEZTX0NBQ0hFX1BBVEhfU0la RSAgICggNiArMSArMisxICsxNiArMSApDQpkaWZmIC11cHJOIC1Ybm9kaWZm IGFybGEtMC45MC1vbGQvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19tZXNz YWdlLmggYXJsYS0wLjkwL25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVz c2FnZS5oDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9pbmNsdWRlL25ucGZz L25ucGZzX21lc3NhZ2UuaAkyMDA2LTEwLTI0IDE4OjMzOjMyLjAwMDAwMDAw MCArMDIwMA0KKysrIGFybGEtMC45MC9ubnBmcy9pbmNsdWRlL25ucGZzL25u cGZzX21lc3NhZ2UuaAkyMDE2LTAxLTIyIDEyOjUzOjI5LjAwMDAwMDAwMCAr MDEwMA0KQEAgLTMxLDcgKzMxLDcgQEANCiAgKiBTVUNIIERBTUFHRS4NCiAg Ki8NCiANCi0vKiAkSWQ6IG5ucGZzX21lc3NhZ2UuaCx2IDEuNjEgMjAwNi8x MC8yNCAxNjozMzozMiB0b2wgRXhwICQgKi8NCisvKiAkSWQ6IG5ucGZzX21l c3NhZ2UuaCx2IDEuNjIgMjAwOS8wMi8yNCAyMDoyMDo1NSB0b2wgRXhwICQg Ki8NCiANCiAjaWZuZGVmIF94bXNnX2gNCiAjZGVmaW5lIF94bXNnX2gNCkBA IC01Miw3ICs1MiwxNSBAQCB0eXBlZGVmIHVpbnQxNl90IG5ucGZzX3JpZ2h0 czsNCiAgKiBUaGUgbm5wZnNfY3JlZCwgaWYgcGFnID09IDAsIHVzZSB1aWQg DQogICovDQogdHlwZWRlZiBzdHJ1Y3Qgbm5wZnNfY3JlZCB7DQorI2lmbmRl ZiBfX0tFUk5FTF9fDQogICAgIHVpbnQzMl90IHVpZDsNCisjZWxzZQ0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxNCww KQ0KKyAgICBrdWlkX3QgdWlkOw0KKyNlbHNlDQorICAgIHVpbnQzMl90IHVp ZDsNCisjZW5kaWYNCisjZW5kaWYNCiAgICAgbm5wZnNfcGFnX3QgcGFnOw0K IH0gbm5wZnNfY3JlZDsNCiANCkBAIC0xMDYsNyArMTE0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3Qgbm5wZnNfYmxvY2tfaGFuZGxlIHsNCiANCiAvKiBubnBmc19u b2RlLmZsYWdzDQogICogVGhlIGxvd2VyIDE2IGJpdCBmbGFncyBhcmUgcmVz ZXJ2ZWQgZm9yIGNvbW1vbiBubnBmcyBmbGFncw0KLSAqIFRoZSB1cHBlciAx NiBiaXQgZmxhZ3MgYXJlIHJlc2VydmVkIGZvciBvcGVydGluZyBzeXN0ZW0g ZGVwZW5kYW50DQorICogVGhlIHVwcGVyIDE2IGJpdCBmbGFncyBhcmUgcmVz ZXJ2ZWQgZm9yIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50DQogICogZmxh Z3MuDQogICovDQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmggYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzL25ubnBmcy5oDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBm cy9saW51eC9ubnBmcy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3LjAw MDAwMDAwMCArMDIwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBm cy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3LjAwMDAwMDAwMCArMDIw MA0KQEAgLTEsNCArMSw0IEBADQogLyogJElkOiBubm5wZnMuaCx2IDEuMiAy MDAyLzA5LzA3IDEwOjQ3OjE3IGxoYSBFeHAgJCAqLw0KLS8qICRTb3VyY2U6 IC9hZnMvc3RhY2tlbi5rdGguc2Uvc3JjL1NvdXJjZVJlcG9zaXRvcnkvYXJs YS9ubnBmcy9saW51eC9ubnBmcy9ubm5wZnMuaCx2ICQgKi8NCisvKiAkU291 cmNlOiAvVXNlcnMvYm8vdG1wL0FybGFTb3VyY2VSZXBvc2l0b3J5L2FybGEv bm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmgsdiAkICovDQogDQogI2RlZmlu ZSBOTk5QRlMgMg0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xk L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmggYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzL25ucGZzX2ZzLmgNCi0tLSBhcmxhLTAuOTAtb2xkL25u cGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmgJMjAwNi0xMC0yNCAxODozMzo0 OC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvbGludXgv bm5wZnMvbm5wZnNfZnMuaAkyMDE2LTAxLTEzIDIyOjU3OjA2LjAwMDAwMDAw MCArMDEwMA0KQEAgLTg0LDggKzg0LDEzIEBAIHN0cnVjdCBubnBmcyB7DQog ICAgIHN0cnVjdCB2ZnNtb3VudCAqY2FjaGVyb290OyAvKiBzaW1wbGlmeSBv cGVuIG9mIGNhY2hlIGJsb2NrcyAqLw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpj YWNoZWRpcjsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMywxNCwwKQ0KICAgICB1aWRfdCB1aWQ7IC8qIGtlZXAgdHJh Y2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkgKi8NCiAgICAgZ2lkX3QgZ2lkOw0K KyNlbHNlDQorICAgIGt1aWRfdCB1aWQ7IC8qIGtlZXAgdHJhY2sgb2YgZGFl bW9uJ3MgaWRlbnRpdHkgKi8NCisgICAga2dpZF90IGdpZDsNCisjZW5kaWYN CiANCiAgICAgc3RydWN0IHsNCiAJaW50IHJlY3Vyc2U7DQpkaWZmIC11cHJO IC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnMvbm5w ZnNfbG9jbC5oIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19s b2NsLmgNCi0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzL25u cGZzX2xvY2wuaAkyMDA3LTAxLTA4IDE0OjUyOjQ5LjAwMDAwMDAwMCArMDEw MA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19sb2Ns LmgJMjAxNi0wMS0xMyAyMzowMToxMC4wMDAwMDAwMDAgKzAxMDANCkBAIC0z NCw3ICszNCw3IEBADQogICogU1VDSCBEQU1BR0UuDQogICovDQogDQotLyog JElkOiBubnBmc19sb2NsLmgsdiAxLjc3IDIwMDcvMDEvMDggMTM6NTI6NDkg dG9sIEV4cCAkICovDQorLyogJElkOiBubnBmc19sb2NsLmgsdiAxLjc4IDIw MTAvMDgvMDggMjA6NDM6MDYgdG9sIEV4cCAkICovDQogDQogI2lmZGVmIEhB VkVfQ09ORklHX0gNCiAjaW5jbHVkZSA8Y29uZmlnLmg+DQpAQCAtNTEsNyAr NTEsOSBAQA0KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+DQogI2luY2x1ZGUg PGxpbnV4L3N0cmluZy5oPg0KICNpbmNsdWRlIDxsaW51eC9uYW1laS5oPg0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQorI2VuZGlmDQog I2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4NCiANCiAvKg0KQEAgLTEzOCwxNSAr MTQwLDE2IEBAIHR5cGVkZWYgX191MzIgIHVpbnQzMl90Ow0KIGludA0KIG5u cGZzX2ZldGNoX3Jvb3Qoc3RydWN0IGlub2RlICppKTsNCiANCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5 KQ0KIGludA0KIG5ucGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlw ZSAqZnNfdHlwZSwNCiAJICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRl dl9uYW1lLA0KIAkgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAq bW50KTsNCiAjZWxzZQ0KLXN0cnVjdCBzdXBlcl9ibG9jayAqDQotbm5wZnNf Z2V0X3NiIChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCi0J ICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAq ZGF0YSk7DQorc3RydWN0IGRlbnRyeSoNCitubnBmc19tb3VudChzdHJ1Y3Qg ZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCisJICAgICBpbnQgZmxhZ3Ms IGNvbnN0IGNoYXIgKmRldl9uYW1lLA0KKwkgICAgIHZvaWQgKmRhdGEpOw0K ICNlbmRpZg0KIA0KIGV4dGVybiBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMg bm5wZnNfZGVudHJ5X29wZXJhdGlvbnM7DQpAQCAtMjAwLDE2ICsyMDMsMjUg QEAgbm5wZnNfaXdyaXRlY291bnQgKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQog ICogSGVscCBmdW5jdGlvbiB0byByZWFkIHRoZSBkZW50cnktPmRfY291bnQg YSBwb3J0YWJsZSB3YXkNCiAgKi8NCiANCisvKiNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpKi8NCiBzdGF0aWMgaW5s aW5lIGludA0KIG5ucGZzX2Rjb3VudCAoY29uc3Qgc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQ0KKy8qI2Vsc2UNCitzdGF0aWMgaW5saW5lIGludA0KK25ucGZz X2Rjb3VudCAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbmRpZiovDQog ew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQogICAgIHJldHVybiBhdG9taWNfcmVhZCgmZGVudHJ5LT5kX2Nv dW50KTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDExLDApDQorICAgIHJldHVybiBhdG9taWNfcmVhZCgoY29uc3Qg YXRvbWljX3QqKSZkZW50cnktPmRfY291bnQpOw0KKyNlbHNlDQorICAgIHJl dHVybiBkX2NvdW50KGRlbnRyeSk7Ow0KKyNlbmRpZg0KIH0NCiANCiBleHRl cm4gDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMTgpDQogY29uc3QNCi0jZW5kaWYNCiBzdHJ1Y3QgYWRkcmVzc19z cGFjZV9vcGVyYXRpb25zIG5ucGZzX2FvcHM7DQogDQogI2lmbmRlZiBsaXN0 X2Zvcl9lYWNoDQpAQCAtMjM3LDcgKzI0OSwxMiBAQCBubnBmc19maXh1cF9z eXNjYWxsX2xvc3NhZ2Uodm9pZCk7DQogI2VuZGlmDQogDQogI2RlZmluZSBu bnBmc19kZXZfdCBkZXZfdA0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogI2RlZmluZSBubnBmc19kX2Vu dHJ5X3VuaGFzaGVkKGQpIGhsaXN0X3VuaGFzaGVkKGQpDQorI2Vsc2UNCisj ZGVmaW5lIG5ucGZzX2RfZW50cnlfdW5oYXNoZWQoZCkgaGxpc3RfYmxfdW5o YXNoZWQoZCkNCisjZW5kaWYNCiANCiAjZGVmaW5lIE5OUEZTX05PT1AgICAg ICB3aGlsZSgwKXt9DQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45 MC1vbGQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbm9kZS5oIGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgNCi0tLSBhcmxhLTAu OTAtb2xkL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX25vZGUuaAkyMDA2LTEy LTExIDE3OjI5OjM5LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9u bnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgJMjAxMC0wOC0wOCAyMjo0 MzowNy4wMDAwMDAwMDAgKzAyMDANCkBAIC01NCw3ICs1NCw3IEBAIGV4dGVy biB1aW50MzJfdCBubnBmc19ibG9ja3NpemViaXRzOw0KICAqIGZsYWdzLg0K ICAqLw0KIA0KLSNkZWZpbmUgTk5QRlNfTk9ERV9JUFVUCTB4MDAwMTAwMDAg ICAvKiBub2RlIGlzIGluIGlwdXQoKSwgYXZvaWQgZGVhZGxvY2sgKi8NCisj ZGVmaW5lIE5OUEZTX05PREVfSVBVVAkweDAwMDEwMDAwICAgLyogbm9kZSBp cyBpbiBpcHV0KCksIGF2b2lkIGRlYWRsb2NrLiBDYW4gYmUgcmVtb3ZlZD8g Ki8NCiANCiAjZGVmaW5lIFhOX0hBU0hTSVpFIDEwMDkNCiAjZGVmaW5lIFhO X0NMRUFOVVBfSVRFUlMgMTI5DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEt MC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfYmxvY2tzLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX2Jsb2Nrcy5jDQotLS0gYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDA3LTAxLTA4IDE0OjI0 OjI0LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAxLTI4IDE3OjQ0OjM2LjAwMDAwMDAw MCArMDEwMA0KQEAgLTM0LDcgKzM0LDcgQEANCiAgKiBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0vKiAkSWQ6IG5ucGZzX2Jsb2Nr cy5jLHYgMS4zIDIwMDcvMDEvMDggMTM6MjQ6MjQgdG9sIEV4cCAkICovDQor LyogJElkOiBubnBmc19ibG9ja3MuYyx2IDEuNiAyMDEwLzA4LzA4IDIwOjQz OjA0IHRvbCBFeHAgJCAqLw0KIA0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19s b2NsLmg+DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2ZzLmg+DQpAQCAtNDMs NiArNDMsMTEgQEANCiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4NCiAjaW5j bHVkZSA8bGludXgvbW0uaD4NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkNCitleHRlcm4gaW50IHZmc19w YXRoX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAq LA0KKwkJCSAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3Qg cGF0aCAqKTsNCisjZW5kaWYNCisNCiAvKg0KICAqIHJldHVybiB0cnVlIGlm IGJsb2NrIGlzIGluIGNhY2hlDQogICovDQpAQCAtMjkwLDcgKzI5NSwxMyBA QCBubnBmc19ibG9ja19leHRlbmQoc3RydWN0IG5ucGZzX25vZGUgKm5vDQog ICAgIGJhY2tub2RlID0gYmFja2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsNCiAN CiAgICAgbXV0ZXhfbG9jaygmYmFja25vZGUtPmlfbXV0ZXgpOw0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDgsMCkNCiAg ICAgcmV0ID0gdm10cnVuY2F0ZShiYWNrbm9kZSwgbm5wZnNfYmxvY2tzaXpl KTsNCisjZWxzZQ0KKyAgICByZXQgPSBpbm9kZV9uZXdzaXplX29rKGJhY2tu b2RlLCBubnBmc19ibG9ja3NpemUpOw0KKyAgICBpZighcmV0KQ0KKyAgICAg ICAgdHJ1bmNhdGVfc2V0c2l6ZShiYWNrbm9kZSwgbm5wZnNfYmxvY2tzaXpl KTsNCisjZW5kaWYNCiAgICAgbXV0ZXhfdW5sb2NrKCZiYWNrbm9kZS0+aV9t dXRleCk7DQogICAgIA0KICAgICBmaWxwX2Nsb3NlKGJhY2tmaWxlLCBOVUxM KTsNCkBAIC0zMTgsOSArMzI5LDE4IEBAIG5ucGZzX2Jsb2NrX29wZW4oc3Ry dWN0IG5ucGZzX25vZGUgKm5vZGUNCiAgICAgc3RydWN0IG5ucGZzICpubnBm c3AgPSBOTlBGU19GUk9NX1hOT0RFKG5vZGUpOw0KICAgICBzdHJ1Y3QgaW5v ZGUgKmlub2RlID0gWE5PREVfVE9fVk5PREUobm9kZSk7DQogICAgIGludCBm bGFncyA9IE9fTEFSR0VGSUxFIHwgZmxhZzsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3Qg bmFtZWlkYXRhIG5kOw0KKyNlbHNlDQorICAgIHN0cnVjdCBwYXRoIHBhdGg7 DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDIsNiwyOSkNCiAgICAgdWlkX3Qgc2F2ZXVpZDsNCiAgICAgZ2lk X3Qgc2F2ZWdpZDsNCisjZWxzZQ0KKyAgICBjb25zdCBzdHJ1Y3QgY3JlZCAq b2xkX2NyZWQ7DQorICAgIHN0cnVjdCBjcmVkICpvdmVycmlkZV9jcmVkOw0K KyNlbmRpZg0KICAgICBpbnQgcmV0Ow0KIA0KICAgICBCVUdfT04oIW5ucGZz cCk7DQpAQCAtMzQ2LDIxICszNjYsMzYgQEAgbm5wZnNfYmxvY2tfb3Blbihz dHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KICAgICBCVUdfT04oIW5ucGZzcC0+ Y2FjaGVkaXIgfHwgIW5ucGZzcC0+Y2FjaGVyb290KTsNCiAgICAgDQogICAg IC8qIHVzZSB0aGUgbmZzZCB0cmljayB0byBnaXZlIHVzIGFjY2VzcyAqLw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MjkpDQogICAgIHNhdmV1aWQgPSBjdXJyZW50LT5mc3VpZDsNCiAgICAgc2F2 ZWdpZCA9IGN1cnJlbnQtPmZzZ2lkOw0KICAgICBjdXJyZW50LT5mc3VpZCA9 IG5ucGZzcC0+dWlkOw0KICAgICBjdXJyZW50LT5mc2dpZCA9IG5ucGZzcC0+ Z2lkOw0KLQ0KLSAgICBuZC5kZW50cnkgPSBkZ2V0KG5ucGZzcC0+Y2FjaGVk aXIpOw0KLSAgICBuZC5tbnQgPSBtbnRnZXQobm5wZnNwLT5jYWNoZXJvb3Qp Ow0KLSAgICBuZC5sYXN0X3R5cGUgPSBMQVNUX05PUk07DQotICAgIG5kLmRl cHRoID0gMDsNCi0gICAgbmQuZmxhZ3MgPSAwOw0KLSAgICANCi0gICAgaWYg KGZsYWdzICYgT19DUkVBVCkNCi0JbmQuZmxhZ3MgPSBMT09LVVBfUEFSRU5U Ow0KLSAgICANCi0gICAgcmV0ID0gcGF0aF93YWxrKGNhY2hlbmFtZSwgJm5k KTsNCisjZWxzZQ0KKyAgICBvdmVycmlkZV9jcmVkID0gcHJlcGFyZV9jcmVk cygpOw0KKyAgICBpZiAob3ZlcnJpZGVfY3JlZCA9PSBOVUxMKQ0KKyAgICAg ICAgcmV0dXJuIC1FTk9NRU07DQorICAgIG92ZXJyaWRlX2NyZWQtPmZzdWlk ID0gbm5wZnNwLT51aWQ7DQorICAgIG92ZXJyaWRlX2NyZWQtPmZzZ2lkID0g bm5wZnNwLT5naWQ7DQorICAgIG9sZF9jcmVkID0gb3ZlcnJpZGVfY3JlZHMo b3ZlcnJpZGVfY3JlZCk7DQorI2VuZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSwwKQ0KKyAgICByZXQgPSB2 ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNo ZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBmbGFncyAmIE9fQ1JF QVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZuZCk7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0K KyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwg bm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBm bGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZu ZC5wYXRoKTsNCisjZWxzZQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAo bm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBj YWNoZW5hbWUsDQorCQkJICBmbGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFS RU5UIDogMCwNCisJCQkgICZwYXRoKTsNCisjZW5kaWYNCiAgICAgaWYgKHJl dCkgew0KIAl1aW50MzJfdCBubWFza3MgPSBub2RlLT5kYXRhLm5tYXNrczsN CiAJdWludDMyX3QgbWFzazsNCkBAIC0zODcsMTcgKzQyMiwzOSBAQCBubnBm c19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogICAgIA0K ICAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7DQogCS8qIFhYWCBtb2RlIGJp dHMgb24gY3JlYXRlIC0tIFNfSVJVU1J8U19JV1VTUiAqLw0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEsMCkNCiAJc3Ry dWN0IGRlbnRyeSAqZGVudHJ5ID0gbG9va3VwX2NyZWF0ZSgmbmQsIDApOwkN CisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDE5LDApDQorCS8qIFhYWCB2ZXJpZnkgdGhhdCBjYWNoZW5hbWUgaXMgdGhl IGNvcnJlY3QgcGF0aCBzdHJpbmcgdG8gdXNlIGhlcmUgKi8NCisJc3RydWN0 IGRlbnRyeSAqZGVudHJ5ID0ga2Vybl9wYXRoX2NyZWF0ZShBVF9GRENXRCwg Y2FjaGVuYW1lLCAmbmQucGF0aCwgMCk7CQ0KKyNlbHNlDQorCS8qIFhYWCB2 ZXJpZnkgdGhhdCBjYWNoZW5hbWUgaXMgdGhlIGNvcnJlY3QgcGF0aCBzdHJp bmcgdG8gdXNlIGhlcmUgKi8NCisJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0g a2Vybl9wYXRoX2NyZWF0ZShBVF9GRENXRCwgY2FjaGVuYW1lLCAmcGF0aCwg MCk7CQ0KKyNlbmRpZg0KIAlpZiAoSVNfRVJSKGRlbnRyeSkpIHsNCiAJICAg IHJldCA9IFBUUl9FUlIoZGVudHJ5KTsNCiAJfSBlbHNlIHsNCi0JICAgIHJl dCA9IHZmc19jcmVhdGUobmQuZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNf SVJVU1J8U19JV1VTUiwgJm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQorCSAgICByZXQgPSB2ZnNfY3Jl YXRlKG5kLnBhdGguZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8 U19JV1VTUiwgJm5kKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICAvKiBYWFggc2hvdWxkIHRo ZSBsYXN0IGFyZ3VtZW50IHRvIHZmc19jcmVhdGU6IGJvb2wgd2FudF9leGNs LCBiZSAwIG9yIDE/ICovDQorCSAgICByZXQgPSB2ZnNfY3JlYXRlKG5kLnBh dGguZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwg MCk7DQorI2Vsc2UNCisJICAgIC8qIFhYWCBzaG91bGQgdGhlIGxhc3QgYXJn dW1lbnQgdG8gdmZzX2NyZWF0ZTogYm9vbCB3YW50X2V4Y2wsIGJlIDAgb3Ig MT8gKi8NCisJICAgIHJldCA9IHZmc19jcmVhdGUocGF0aC5kZW50cnktPmRf aW5vZGUsIGRlbnRyeSwgU19JUlVTUnxTX0lXVVNSLCAwKTsNCisjZW5kaWYN CisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Myw2LDApDQogCSAgICBkcHV0KGRlbnRyeSk7DQorCSAgICBtdXRleF91bmxv Y2soJm5kLnBhdGguZGVudHJ5LT5kX2lub2RlLT5pX211dGV4KTsNCisJICAg IHBhdGhfcHV0KCZuZC5wYXRoKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICBkb25lX3BhdGhf Y3JlYXRlKCZuZC5wYXRoLCBkZW50cnkpOw0KKyNlbHNlDQorCSAgICBkb25l X3BhdGhfY3JlYXRlKCZwYXRoLCBkZW50cnkpOw0KKyNlbmRpZg0KIAl9DQog DQotCW11dGV4X3VubG9jaygmbmQuZGVudHJ5LT5kX2lub2RlLT5pX211dGV4 KTsNCi0JcGF0aF9yZWxlYXNlKCZuZCk7DQotDQogCWlmIChyZXQpIHsNCiAJ ICAgIHByaW50aygibm5wZnNfYmxvY2tfb3BlbiglcykgY3JlYXRlIGZhaWxl ZDogJWRcbiIsIGNhY2hlbmFtZSwgLXJldCk7DQogCSAgICBubnBmc19kZWJ1 Z19vb3BzKCk7DQpAQCAtNDEwLDEyICs0NjcsMjQgQEAgbm5wZnNfYmxvY2tf b3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIAkgICAgcmV0ID0gbm5w ZnNfYmxvY2tfZXh0ZW5kKG5vZGUsIG9mZnNldCk7DQogCX0NCiAgICAgfSBl bHNlIHsNCi0Jc3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3BlbihuZC5kZW50 cnksIG5kLm1udCwgZmxhZ3MpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMjkpDQorCXN0cnVjdCBmaWxlICpmID0g ZGVudHJ5X29wZW4obmQucGF0aC5kZW50cnksIG5kLnBhdGgubW50LCBmbGFn cyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9v cGVuKG5kLnBhdGguZGVudHJ5LCBuZC5wYXRoLm1udCwgZmxhZ3MsIGN1cnJl bnRfY3JlZCgpKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9 IGRlbnRyeV9vcGVuKCZuZC5wYXRoLCBmbGFncywgY3VycmVudF9jcmVkKCkp Ow0KKyNlbHNlDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9v cGVuKCZwYXRoLCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0KKyNlbmRpZg0K IAlpZiAoSVNfRVJSKGYpKSB7DQogCSAgICByZXQgPSBQVFJfRVJSKGYpOw0K IAkgICAgcHJpbnRrKCJubnBmc19ibG9ja19vcGVuKCVzKSBvcGVuIGZhaWxl ZDogJWRcbiIsIGNhY2hlbmFtZSwgLXJldCk7DQogCSAgICBubnBmc19kZWJ1 Z19vb3BzKCk7DQotCSAgICBwYXRoX3JlbGVhc2UoJm5kKTsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwkg ICAgcGF0aF9wdXQoJm5kLnBhdGgpOw0KKyNlbHNlDQorCSAgICBwYXRoX3B1 dCgmcGF0aCk7DQorI2VuZGlmDQogCX0gZWxzZSB7DQogCSAgICAqZmlsZSA9 IGY7DQogCX0NCkBAIC00MjQsOCArNDkzLDEzIEBAIG5ucGZzX2Jsb2NrX29w ZW4oc3RydWN0IG5ucGZzX25vZGUgKm5vZGUNCiAgICAgLyogcGF0aF9yZWxl YXNlKCkgaXMgdXN1YWxseSBoYW5kbGVkIG9uIGNsb3NlICovDQogDQogIG91 dDoNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Miw2LDI5KQ0KICAgICBjdXJyZW50LT5mc3VpZCA9IHNhdmV1aWQ7DQogICAg IGN1cnJlbnQtPmZzZ2lkID0gc2F2ZWdpZDsNCisjZWxzZQ0KKyAgICByZXZl cnRfY3JlZHMob2xkX2NyZWQpOw0KKyAgICBwdXRfY3JlZChvdmVycmlkZV9j cmVkKTsNCisjZW5kaWYNCiANCiAgICAgcmV0dXJuIHJldDsNCiB9DQpkaWZm IC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5w ZnNfY29tbW9uLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2NvbW1v bi5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19jb21t b24uYwkyMDA2LTEyLTExIDE3OjMxOjQ2LjAwMDAwMDAwMCArMDEwMA0KKysr IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19jb21tb24uYwkyMDE2LTAx LTE0IDE2OjE1OjAwLjAwMDAwMDAwMCArMDEwMA0KQEAgLTExMiwxMCArMTEy LDE1IEBAIG5ucGZzX3ByaW50X2FsaWFzZXMoY29uc3Qgc3RydWN0IGlub2Rl ICoNCiB2b2lkDQogbm5wZnNfcHJpbnRfYWxpYXNlc19yZWFsKGNvbnN0IHN0 cnVjdCBpbm9kZSAqaW5vZGUpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxpc3Rf aGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2RlICph bGlhczsNCisjZW5kaWYNCiAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0K ICAgICBpbnQgYmFpbG91dCA9IDEwMDsNCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFzID0g aW5vZGUtPmlfZGVudHJ5Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAhPSAm aW5vZGUtPmlfZGVudHJ5KSB7DQogCWlmICgtLWJhaWxvdXQgPCAwKSB7DQpA QCAtMTMxLDYgKzEzNiwyNiBAQCBubnBmc19wcmludF9hbGlhc2VzX3JlYWwo Y29uc3Qgc3RydWN0IGluDQogCX0NCiAJYWxpYXMgPSBhbGlhcy0+bmV4dDsN CiAgICAgfQ0KKyNlbHNlDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRy eShkZW50cnksIGFsaWFzLCAmaW5vZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7 DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksICZp bm9kZS0+aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxzZQ0KKyAgICBobGlz dF9mb3JfZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnksIGRf dS5kX2FsaWFzKSB7DQorI2VuZGlmDQorCWlmICgtLWJhaWxvdXQgPCAwKSB7 DQorCSAgICBwcmludGsoIiAuLi4iKTsNCisJICAgIGJyZWFrOw0KKwl9DQor CWlmIChkZW50cnkpIHsNCisJICAgIHByaW50aygiICUuKnMoJXApIiwgKGlu dClkZW50cnktPmRfbmFtZS5sZW4sDQorCQkgICBkZW50cnktPmRfbmFtZS5u YW1lLCBkZW50cnkpOw0KKwkgICAgaWYgKG5ucGZzX2RfZW50cnlfdW5oYXNo ZWQoJmRlbnRyeS0+ZF9oYXNoKSkNCisJCXByaW50aygiKHVuaGFzaGVkKSIp Ow0KKwl9DQorICAgIH0NCisjZW5kaWYNCiAgICAgcHJpbnRrKCJcbiIpOw0K IH0NCiANCkBAIC0xNDYsNyArMTcxLDExIEBAIG5ucGZzX3ByaW50X2NoaWxk cmVuKGNvbnN0IHN0cnVjdCBkZW50cnkNCiANCiAgICAgd2hpbGUgKHN1YmRp cnMgIT0gJmRlbnRyeS0+ZF9zdWJkaXJzKSB7DQogCXN0cnVjdCBsaXN0X2hl YWQgKnRtcCA9IHN1YmRpcnM7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IGRlbnRyeSAqY2hp bGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF91LmRfY2hp bGQpOw0KKyNlbHNlDQorCXN0cnVjdCBkZW50cnkgKmNoaWxkID0gbGlzdF9l bnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRfY2hpbGQpOw0KKyNlbmRpZg0K IA0KIAlwcmludGsoIiAlLipzKCVwKSIsIChpbnQpY2hpbGQtPmRfbmFtZS5s ZW4sDQogCSAgICAgICBjaGlsZC0+ZF9uYW1lLm5hbWUsIGNoaWxkKTsNCmRp ZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9u bnBmc19kZXYuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfZGV2LmMN Ci0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIw MDYtMTAtMjQgMTg6MzM6MzYuMDAwMDAwMDAwICswMjAwDQorKysgYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMTYtMDEtMTQgMTY6Mjg6 MTkuMDAwMDAwMDAwICswMTAwDQpAQCAtMzAwLDcgKzMwMCw5IEBAIG5ucGZz X2ludmFsaWRhdGVfYWxsKHN0cnVjdCBubnBmcyAqbm5wZnMNCiAgICAgTk5Q RlNERUIoWERFQk5PREUsICgiZnJlZV9hbGxfbm5wZnNfbm9kZXMgc3RhcnRp bmdcbiIpKTsNCiANCiAgICAgc2hyaW5rX2RjYWNoZV9zYihubnBmcy0+c2Ip Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzcpDQogICAgIGludmFsaWRhdGVfaW5vZGVzKG5ucGZzLT5zYik7DQor I2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVCTk9ERSwgKCJmcmVl X2FsbF9ubnBmc19ub2RlcyBkb25lXG4iKSk7DQogfQ0KQEAgLTM3NCw3ICsz NzYsMTEgQEAgbm5wZnNfZGV2Y2xvc2Uoc3RydWN0IGlub2RlICogaW5vZGUs IHN0cg0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfZGV2cmVhZChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAq cHBvcykNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+ Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZWxzZQ0KKyAgICBubnBm c19kZXZfdCBkZXYgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLT5p X3JkZXY7DQorI2VuZGlmDQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwID0g Jm5ucGZzW01JTk9SKGRldildOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbGluayAq Zmlyc3Q7DQogICAgIGludCByZXQgPSAwLCBlcnJvciA9IDA7DQpAQCAtNDM5 LDggKzQ0NSwxMiBAQCBubnBmc19kZXZ3cml0ZShzdHJ1Y3QgZmlsZSAqZmls ZSwgY29uc3QgDQogDQogICAgIE5OUEZTREVCKFhERUJERVYsICgibm5wZnNf ZGV2d3JpdGVcbiIpKTsNCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgZGV2ID0gZmlsZS0+ Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCi0gICAgbm5wZnNwID0gJm5u cGZzW01JTk9SKGRldildOw0KKyNlbHNlDQorICAgIGRldiA9IGZpbGUtPmZf cGF0aC5kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZW5kaWYNCisgICAg IG5ucGZzcCA9ICZubnBmc1tNSU5PUihkZXYpXTsNCiANCiAgICAgZG93bigm bm5wZnNwLT5jaGFubmVsX3NlbSk7DQogICAgIGlmIChubnBmc3AtPnN0YXR1 cyAmIE5OUEZTX0RFVldSSVRFKSB7DQpAQCAtNTA1LDE5ICs1MTUsMzcgQEAg bm5wZnNfZGV2d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IA0KIC8q DQogICogTm90IHVzZWQuDQogICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiBzdGF0aWMgaW50DQogbm5w ZnNfZGV2aW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbGUsDQogCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZykNCisjZWxzZQ0KK3N0YXRpYyBsb25nDQorbm5wZnNfdW5sb2Nr ZWRfZGV2aW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsDQorCSAgICAgICB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisjZW5kaWYNCiB7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzNikNCiAgICAgTk5QRlNERUIoWERFQkRFViwgKCJubnBmc19kZXZpb2N0 bCBkZXYgPSAlZCwgZmxhZ3MgPSAlZFxuIiwNCiAJCSAgICAgICBpbm9kZS0+ aV9yZGV2LCBmaWxlLT5mX2ZsYWdzKSk7DQorI2VsaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBOTlBGU0RF QihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFncyA9 ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5p X3JkZXYsIGZpbGUtPmZfZmxhZ3MpKTsNCisjZWxzZQ0KKyAgICBOTlBGU0RF QihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFncyA9 ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5v ZGUtPmlfcmRldiwgZmlsZS0+Zl9mbGFncykpOw0KKyNlbmRpZg0KICAgICBy ZXR1cm4gLUVJTlZBTDsNCiB9DQogDQogc3RhdGljIHVuc2lnbmVkIGludA0K IG5ucGZzX2RldnBvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUg KndhaXQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQogICAgIG5ucGZzX2Rldl90IGRldiA9IGZpbGUt PmZfZGVudHJ5LT5kX2lub2RlLT5pX3JkZXY7DQorI2Vsc2UNCisgICAgbm5w ZnNfZGV2X3QgZGV2ID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+ aV9yZGV2Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCA9 ICZubnBmc1tNSU5PUihkZXYpXTsNCiAgICAgaW50IHJldCA9IDA7DQogICAg IA0KQEAgLTk1Myw3ICs5ODEsMTEgQEAgc3RydWN0IGZpbGVfb3BlcmF0aW9u cyBubnBmc19mb3BzID0gew0KICAgICByZWFkOgkJbm5wZnNfZGV2cmVhZCwN CiAgICAgd3JpdGU6CQlubnBmc19kZXZ3cml0ZSwNCiAgICAgcG9sbDoJCW5u cGZzX2RldnBvbGwsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDIsNiwzNikNCiAgICAgaW9jdGw6CQlubnBmc19kZXZpb2N0 bCwNCisjZWxzZQ0KKyAgICB1bmxvY2tlZF9pb2N0bDoJbm5wZnNfdW5sb2Nr ZWRfZGV2aW9jdGwsDQorI2VuZGlmDQogICAgIHJlbGVhc2U6CQlubnBmc19k ZXZjbG9zZSwNCiAgICAgb3BlbjoJCW5ucGZzX2Rldm9wZW4sDQogfTsNCkBA IC05NjgsOCArMTAwMCwxMyBAQCBubnBmc19pbml0X2RldmljZSh2b2lkKQ0K IAlpbml0X3dhaXRxdWV1ZV9oZWFkKCYobm5wZnNbaV0ud2FpdF9xdWV1ZSkp Ow0KIAlubnBmc19pbml0cSgmbm5wZnNbaV0ubWVzc2FnZXEpOw0KIAlubnBm c19pbml0cSgmbm5wZnNbaV0uc2xlZXBxKTsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM3KQ0KIAlpbml0X01VVEVY KCZubnBmc1tpXS5pbmFjdGl2ZV9zZW0pOw0KIAlpbml0X01VVEVYKCZubnBm c1tpXS5jaGFubmVsX3NlbSk7DQorI2Vsc2UNCisJc2VtYV9pbml0KCZubnBm c1tpXS5pbmFjdGl2ZV9zZW0sIDEpOw0KKwlzZW1hX2luaXQoJm5ucGZzW2ld LmNoYW5uZWxfc2VtLCAxKTsNCisjZW5kaWYNCiAJSU5JVF9MSVNUX0hFQUQo Jm5ucGZzW2ldLmluYWN0aXZlX2xpc3QpOw0KIAlubnBmc1tpXS5ubm9kZXMg PSAwOw0KICAgICB9DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYyBhcmxhLTAuOTAvbm5w ZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYw0KLS0tIGFybGEtMC45MC1vbGQv bm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYwkyMDA2LTEyLTExIDE3OjM1 OjI2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19pbm9kZW9wcy5jCTIwMTYtMDItMTUgMTY6MTU6MjkuMDAwMDAw MDAwICswMTAwDQpAQCAtNDAsMjUgKzQwLDQxIEBADQogI2luY2x1ZGUgPG5u cGZzL25ucGZzX2Rldi5oPg0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19kaXJl bnQuaD4NCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNfc3lzY2FsbHMuaD4NCisj aW5jbHVkZSA8bGludXgvYWlvLmg+DQogI2luY2x1ZGUgPGxpbnV4L2JpbmZt dHMuaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0KICNpbmNsdWRlIDxs aW51eC9wYWdlbWFwLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BhZ2UtZmxhZ3Mu aD4NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDQsMSwwKQ0KKyNpbmNsdWRlIDxsaW51eC91aW8uaD4NCisjZW5kaWYNCiAj aW5jbHVkZSA8bGludXgvd3JpdGViYWNrLmg+DQogI2luY2x1ZGUgPGFzbS9m Y250bC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZz X2lub2Rlb3BzLmMsdiAxLjIyMyAyMDA2LzEyLzExIDE2OjM1OjI2IHRvbCBF eHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIy NiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0K IA0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19pbnQoc3RydWN0IGZpbGUg KmZpbGUsIHVfaW50IGZsYWcpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiBzdGF0aWMgaW50DQogbm5w ZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0 IG5hbWVpZGF0YSAqbmQpOw0KLQ0KKyNlbHNlDQogc3RhdGljIGludA0KK25u cGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2ln bmVkIGludCBmbGFncyk7DQorI2VuZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCitzdGF0aWMNCitp bnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0K KyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KTsNCisjZW5kaWYNCiANCiBzdGF0aWMg dm9pZA0KIG5ucGZzX2RfcmVsZWFzZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp Ow0KQEAgLTEwNSw3ICsxMjEsNyBAQCBubnBmc192bWFfY2xvc2UgKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqDQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3Qgdm1f b3BlcmF0aW9uc19zdHJ1Y3Qgbm5wZnNfZmlsZV92bV9vcHMgPSB7DQotICAg IC5ub3BhZ2UJPSBmaWxlbWFwX25vcGFnZSwNCisgICAgLmZhdWx0ICAgICAg PSBmaWxlbWFwX2ZhdWx0LA0KICAgICAuY2xvc2UJPSBubnBmc192bWFfY2xv c2UsDQogfTsNCiANCkBAIC0xMzQsMTIgKzE1MCwxNCBAQCBubnBmc19wcmlu dF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCiAgKg0KICAqLw0KIA0K KyNpZiAwDQogdm9pZA0KIG5ucGZzX3ByaW50X2xvY2soY2hhciAqcywgc3Ry dWN0IHNlbWFwaG9yZSAqc2VtKQ0KIHsNCiAgICAgTk5QRlNERUIoWERFQkxP Q0ssICgibG9jazogJXMgc2VtOiAlcCBjb3VudDogJWRcbiIsDQogCQkgICAg ICBzLCBzZW0sIChpbnQpYXRvbWljX3JlYWQoJnNlbS0+Y291bnQpKSk7DQog fQ0KKyNlbmRpZg0KIA0KIC8qDQogICoNCkBAIC0xODUsNyArMjAzLDcgQEAg bm5wZnNfZF9pcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydQ0KICAg ICBOTlBGU0RFQihYREVCVk5PUFMsDQogCSAgICAgKCJubnBmc19kX2lwdXQ6 IGRlbnRyeSAlcCwgaW5vZGUgJXBcbiIsIGRlbnRyeSwgaW5vZGUpKTsNCiAg ICAgDQotICAgIGlmIChub2RlLT5mbGFncyAmIE5OUEZTX05PREVfSVBVVCkg LyogWFhYIGxvY2tpbmcgKi8NCisgICAgaWYgKG5vZGUtPmZsYWdzICYgTk5Q RlNfTk9ERV9JUFVUKSAvKiBYWFggbG9ja2luZy4gbmV2ZXIgc2V0PyAqLw0K IAlubnBmc19pcmVsZShpbm9kZSk7DQogICAgIGVsc2UNCiAJaXB1dChpbm9k ZSk7DQpAQCAtMjEyLDggKzIzMCwxMyBAQCBubnBmc19pbm9kZV92YWxpZChz dHJ1Y3QgaW5vZGUgKmlub2RlKQ0KICAqIG5ucGZzX2xvb2t1cCBub3cgcmV0 dXJucyBhIGRlbnRyeS4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHN0cnVjdCBk ZW50cnkgKg0KIG5ucGZzX2xvb2t1cCAoc3RydWN0IGlub2RlICpkaXIsIHN0 cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQor I2Vsc2UNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQorbm5wZnNfbG9va3Vw IChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1 bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3Qg bm5wZnNfbWVzc2FnZV9nZXRub2RlIG1zZzsNCiAgICAgc3RydWN0IG5ucGZz ICpubnBmc3A7DQpAQCAtMjQwLDcgKzI2MywxMSBAQCBubnBmc19sb29rdXAg KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgDQogDQogCW1zZy5oZWFkZXIu b3Bjb2RlID0gTk5QRlNfTVNHX0dFVE5PREU7DQogICAgICAgICANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkN CiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAg ICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0K IAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogCW1zZy5wYXJl bnRfaGFuZGxlID0gZC0+aGFuZGxlOw0KICAgICAgICAgDQpAQCAtMzEwLDcg KzMzNywxMSBAQCBubnBmc19vcGVuX3ZhbGlkKHN0cnVjdCBpbm9kZSAqdnAs IHVfaW50DQogICAgICAgew0KIAlzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9vcGVu IG1zZzsNCiAJbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfT1BFTjsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs NiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNl DQorICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNl bmRpZg0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogCW1z Zy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KIAltc2cudG9rZW5zID0gdG9rOw0K QEAgLTM5Nyw3ICs0MjgsMTEgQEAgZmluZF9maXJzdF9ibG9jayhzdHJ1Y3Qg bm5wZnNfbm9kZSAqbm9kZQ0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19p bnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGZsYWcpDQogew0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9p bm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls ZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAgc3Ry dWN0IG5ucGZzICpubnBmc3AgPSBOTlBGU19GUk9NX1ZOT0RFKGlub2RlKTsN CiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5PREUo aW5vZGUpOw0KICAgICBsb2ZmX3QgbGVuID0gaV9zaXplX3JlYWQoaW5vZGUp Ow0KQEAgLTQyNSw3ICs0NjAsMTEgQEAgbm5wZnNfZnN5bmNfaW50KHN0cnVj dCBmaWxlICpmaWxlLCB1X2ludA0KIA0KIAltc2cuaGVhZGVyLm9wY29kZSA9 IE5OUEZTX01TR19QVVREQVRBOw0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19n ZXRfcGFnKCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVp ZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91 aWQoKTsNCisjZW5kaWYNCiAJbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQog CW1zZy5mbGFnICAgPSBmbGFnOw0KIAltc2cub2Zmc2V0ID0gb2ZmOw0KQEAg LTQ2MCwxNCArNDk5LDI3IEBAIG5ucGZzX2ZzeW5jX2ludChzdHJ1Y3QgZmls ZSAqZmlsZSwgdV9pbnQNCiAgKg0KICAqLw0KIA0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzUpDQogc3RhdGljIGlu dA0KIG5ucGZzX2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIGludCBkYXRhc3luYykNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEsMCkNCitzdGF0aWMgaW50 DQorbm5wZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZpbGUsIGludCBkYXRhc3lu YykNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19mc3luYyhzdHJ1Y3Qg ZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLCBpbnQgZGF0 YXN5bmMpDQorI2VuZGlmDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg Pj0gS0VSTkVMX1ZFUlNJT04oMiw2LDM1KQ0KKyAgICBzdHJ1Y3QgZGVudHJ5 ICpkZW50cnkgPSBmaWxlLT5mX3BhdGguZGVudHJ5Ow0KKyNlbmRpZg0KICAg ICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRy eSk7DQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG47DQogICAgIGludCBlcnJvciA9IDA7DQogDQorICAg ICh2b2lkKW5ucGZzcDsNCisNCiAgICAgZXJyb3IgPSBubnBmc19pbm9kZV92 YWxpZChpbm9kZSk7DQogICAgIGlmIChlcnJvcikNCiAJcmV0dXJuIGVycm9y Ow0KQEAgLTUxMSw3ICs1NjMsMTEgQEAgbm5wZnNfYXR0cl92YWxpZChzdHJ1 Y3QgaW5vZGUgKiB2cCwgdV9pbg0KICAgICAgICAgICAgIHN0cnVjdCBubnBm c19tZXNzYWdlX2dldGF0dHIgbXNnOw0KIA0KICAgICAgICAgICAgIG1zZy5o ZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVEFUVFI7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAg ICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNl DQorICAgICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsN CisjZW5kaWYNCiAgICAgICAgICAgICBtc2cuY3JlZC5wYWcgPSBwYWc7DQog ICAgICAgICAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgICAg ICAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cu aGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtNTUxLDcgKzYwNywxMSBAQCBu bnBmc19yaWdodHNfdmFsaWQoc3RydWN0IGlub2RlICogdnAsIG5uDQogICAg ICAgICAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQog DQogICAgICAgICAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0df R0VUQVRUUjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBj dXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICAgICAgICAgIG1z Zy5jcmVkLnBhZyA9IHBhZzsNCiAgICAgICAgICAgICBtc2cuaGFuZGxlID0g eG4tPmhhbmRsZTsNCiAgICAgICAgICAgICBlcnJvciA9IG5ucGZzX21lc3Nh Z2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCkBA IC01OTIsMTEgKzY1MiwyNSBAQCBjaGVja19yaWdodHMgKG5ucGZzX3JpZ2h0 cyByaWdodHMsIGludCBtDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0K ICAqLw0KIA0KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMiw2LDM4KSB8fCBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMywxLDApKQ0KK3N0YXRpYyBpbnQNCitubnBmc19wZXJtaXNz aW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtb2RlKQ0KKyNlbHNlDQog c3RhdGljIGludA0KLW5ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICpp bm9kZSwgaW50IG1vZGUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0KK25ucGZz X3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUsIHVu c2lnbmVkIGludCBmbGFncykNCisjZW5kaWYNCiB7DQogICAgIGludCBlcnJv ciA9IDA7DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IG5ucGZzX2dldF9wYWco KTsNCisgICAgbm5wZnNfcGFnX3QgcGFnOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApDQorICAgIGlmIChtb2Rl ICYgTUFZX05PVF9CTE9DSykNCisgICAgICAgIHJldHVybiAtRUNISUxEOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQorICAgIGlmIChmbGFncyAmIElQRVJNX0ZMQUdfUkNVKQ0KKyAg ICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQorI2VuZGlmDQorDQorICAgIHBhZyA9 IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJW Tk9QUywgKCJubnBmc19hY2Nlc3MgKCVwKSBtb2RlID0gMCVvIGFsaWFzZXM6 IiwgaW5vZGUsIG1vZGUpKTsNCiAgICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhp bm9kZSk7DQpAQCAtNjM2LDcgKzcxMCwxMSBAQCBubnBmc19kb19nZXRkYXRh KHN0cnVjdCBubnBmc19ub2RlICp4biwgDQogICAgIGludCBlcnJvcjsNCiAN CiAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUREFUQTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs NiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNl bHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2Vu ZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAg ICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgIG1zZy50b2tlbnMg PSB0b2s7DQpAQCAtNzUwLDExICs4MjgsMTkgQEAgbm5wZnNfZGF0YV92YWxp ZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1Xw0KIGludCBubnBmc19maWxlX21t YXAoc3RydWN0IGZpbGUgKiBmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KiB2bWEpDQogew0KICAgICBpbnQgZmxhZ3MsIGVycm9yID0gMDsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0K ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRf aW5vZGU7DQorI2Vsc2UNCisgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7DQorI2VuZGlmDQogICAgIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZmlsZS0+Zl9tYXBwaW5n Ow0KIA0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfbW1hcCBp bm9kZTogJXBcbiIsIGlub2RlKSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfcHJpbnRf cGF0aChmaWxlLT5mX2RlbnRyeSk7DQorI2Vsc2UNCisgICAgbm5wZnNfcHJp bnRfcGF0aChmaWxlLT5mX3BhdGguZGVudHJ5KTsNCisjZW5kaWYNCiAgICAg Tk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX21tYXAgYWxpYXNlczoiKSk7 DQogICAgIG5ucGZzX3ByaW50X2FsaWFzZXMoaW5vZGUpOw0KICAgICANCkBA IC03ODksMzcgKzg3NSw1MCBAQCBpbnQgbm5wZnNfZmlsZV9tbWFwKHN0cnVj dCBmaWxlICogZmlsZSwgDQogICoNCiAgKi8NCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KIHN0YXRpYyBz c2l6ZV90DQogbm5wZnNfYWlvX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLA0K LSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2 LDE5KQ0KIAkgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHVuc2ln bmVkIGxvbmcgbnJfc2VncywNCisJICAgICAgIGxvZmZfdCBwb3MpDQogI2Vs c2UNCi0JICAgICAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwN CitzdGF0aWMgc3NpemVfdA0KK25ucGZzX3JlYWRfaXRlcihzdHJ1Y3Qga2lv Y2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pDQogI2VuZGlmDQotCSAg ICAgICBsb2ZmX3QgcG9zKQ0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCiAg ICAgc3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLT5raV9maWxwOw0KLSNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEy LDApDQogICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9sZWZ0Ow0KKyNl bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsMSww KQ0KKyAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lfbmJ5dGVzOw0KKyNl bHNlDQorICAgIHNzaXplX3QgY291bnQgPSBpb3ZfaXRlcl9jb3VudCh0byk7 DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0K KyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9U T19YTk9ERShpbm9kZSk7DQogICAgIA0KICAgICBpZiAoeG4gIT0gTlVMTCkN CiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3JlYWRfZmlsZSglcCk6 IHRva2VuczogMHgleFxuIiwNCiAJCQkgICAgIGlub2RlLCB4bi0+dG9rZW5z KSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTYsMCkNCiAgICAgZXJyb3IgPSBubnBmc19kYXRhX3ZhbGlkKGlu b2RlLCBOTlBGU19EQVRBX1IsIHBvcywgcG9zICsgY291bnQpOw0KKyNlbHNl DQorICAgIGVycm9yID0gbm5wZnNfZGF0YV92YWxpZChpbm9kZSwgTk5QRlNf REFUQV9SLCBpb2NiLT5raV9wb3MsIGlvY2ItPmtpX3BvcyArIGNvdW50KTsN CisjZW5kaWYNCiAgICAgaWYgKGVycm9yKSB7DQogCU5OUEZTREVCKFhERUJW Tk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGRhdGEgbm90IHZhbGlkICVkXG4i LCBlcnJvcikpOw0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiAgICAgDQot I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYs MTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsMTYsMCkNCiAgICAgZXJyb3IgPSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQo aW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVycm9y ID0gZ2VuZXJpY19maWxlX2Fpb19yZWFkKGlvY2IsIGJ1ZiwgY291bnQsIHBv cyk7DQorICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3JlYWRfaXRlcihpb2Ni LCB0byk7DQogI2VuZGlmDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJu bnBmc19yZWFkX2ZpbGU6IGVycm9yID0gJWRcbiIsIGVycm9yKSk7DQogICAg IHJldHVybiBlcnJvcjsNCkBAIC04MjksMjMgKzkyOCwzNiBAQCBubnBmc19h aW9fcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogICoNCiAgKi8NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiww KQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBr aW9jYiAqaW9jYiwNCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDIsNiwxOSkNCiAJCWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92 LCB1bnNpZ25lZCBsb25nIG5yX3NlZ3MsDQorCQlsb2ZmX3QgcG9zKQ0KICNl bHNlDQotCQljb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQs IA0KK3N0YXRpYyBzc2l6ZV90DQorbm5wZnNfd3JpdGVfaXRlcihzdHJ1Y3Qg a2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkNCiAjZW5kaWYN Ci0JCWxvZmZfdCBwb3MpDQogew0KICAgICBpbnQgZXJyb3IgPSAwOw0KICAg ICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7DQotI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTIs MCkNCiAgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtpX2xlZnQ7DQorI2Vs aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwxLDAp DQorICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9uYnl0ZXM7DQorI2Vs c2UNCisgICAgc3NpemVfdCBjb3VudCA9IGlvdl9pdGVyX2NvdW50KGZyb20p Ow0KICNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBm aWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsN CisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVf VE9fWE5PREUoaW5vZGUpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE2LDApDQogICAgIGxvZmZfdCByZWFscG9zID0g cG9zOw0KKyNlbHNlDQorICAgIGxvZmZfdCByZWFscG9zID0gaW9jYi0+a2lf cG9zOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQlZOT1BT LCAoIm5ucGZzX2Fpb193cml0ZSglcCk6IHRva2VuczogMHgleFxuIiwNCiAJ CQkgaW5vZGUsIHhuLT50b2tlbnMpKTsNCkBAIC04NTksMTAgKzk3MSwxMCBA QCBubnBmc19haW9fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLA0KIAlyZXR1 cm4gZXJyb3I7DQogICAgIH0NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KICAgICBlcnJvciA9 IGdlbmVyaWNfZmlsZV9haW9fd3JpdGUoaW9jYiwgaW92LCBucl9zZWdzLCBw b3MpOw0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fpb193 cml0ZShpb2NiLCBidWYsIGNvdW50LCBwb3MpOw0KKyAgICBlcnJvciA9IGdl bmVyaWNfZmlsZV93cml0ZV9pdGVyKGlvY2IsIGZyb20pOw0KICNlbmRpZg0K ICAgICBpZiAoIUlTX0VSUl9WQUxVRShlcnJvcikpDQogCXhuLT5mbGFncyB8 PSBOTlBGU19EQVRBX0RJUlRZOyAvKiBYWFggcmFjZSAqLw0KQEAgLTg3MSw5 ICs5ODMsMTkgQEAgbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAqaW9j YiwNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQogc3RhdGljIGlu dA0KIG5ucGZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRl bnRyeSAqZGVudHJ5LA0KIAkgICAgIGludCBtb2RlLCBzdHJ1Y3QgbmFtZWlk YXRhICpuZCkNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDYsMCkNCitzdGF0aWMgaW50DQorbm5wZnNfY3JlYXRlKHN0 cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQorCSAg ICAgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxz ZQ0KK3N0YXRpYyBpbnQNCitubnBmc19jcmVhdGUoc3RydWN0IGlub2RlICpk aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJICAgICB1bW9kZV90IG1v ZGUsIGJvb2wgZXhjbCkNCisjZW5kaWYNCiB7DQogICAgIHN0cnVjdCBubnBm cyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47DQpAQCAt OTAzLDkgKzEwMjUsMTcgQEAgbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAq ZGlyLCBzdHJ1Y3QgZA0KICAgICBYQV9DTEVBUigmbXNnLmF0dHIpOw0KICAg ICBYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KICAgICBYQV9TRVRf VFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfUkVHKTsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg WEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxz ZQ0KKyAgICBYQV9TRVRfR0lEKCZtc2cuYXR0ciwgY3VycmVudF9mc2dpZCgp KTsNCisjZW5kaWYNCiAgICAgbXNnLm1vZGUgPSAwOwkJLyogWFhYICovDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYs MjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxz ZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRp Zg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAg IGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRl ciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05 NDYsNyArMTA3NiwxMSBAQCBubnBmc191bmxpbmsgKHN0cnVjdCBpbm9kZSAq IGRpciwgc3RydWN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uYW1lLCBkZW50 cnktPmRfbmFtZS5uYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19N QVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQog ICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAg ICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAg ICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVycm9y ID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6 ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05OTEsNyAr MTEyNSwxMSBAQCBubnBmc19yZW5hbWUgKHN0cnVjdCBpbm9kZSAqIG9sZF9k aXIsIHN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uZXdfbmFtZSwgbmV3X2Rl bnRyeS0+ZF9uYW1lLm5hbWUsIHNpemVvZihtc2cubmV3X25hbWUpKSA+PSBO TlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogCQ0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2 LDI4KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vs c2UNCisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5k aWYNCiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAg ICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFk ZXIsIHNpemVvZihtc2cpKTsNCiAgICAgaWYgKGVycm9yID09IDApDQpAQCAt MTAwOCw4ICsxMTQ2LDEzIEBAIG5ucGZzX3JlbmFtZSAoc3RydWN0IGlub2Rl ICogb2xkX2Rpciwgc3QNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDAp DQogc3RhdGljIGludA0KIG5ucGZzX21rZGlyKHN0cnVjdCBpbm9kZSAqIGRp ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSkNCisjZWxzZQ0K K3N0YXRpYyBpbnQNCitubnBmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiBkaXIs IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKQ0KKyNlbmRp Zg0KIHsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQogICAgIHN0cnVj dCBubnBmc19ub2RlICp4bjsNCkBAIC0xMDQwLDkgKzExODMsMTcgQEAgbm5w ZnNfbWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZA0KIAlYQV9D TEVBUigmbXNnLmF0dHIpOw0KIAlYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1v ZGUpOw0KIAlYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfRElS KTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCiAJWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZz Z2lkKTsNCisjZWxzZQ0KKyAgICAgICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIs IGN1cnJlbnRfZnNnaWQoKSk7DQorI2VuZGlmDQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1zZy5j cmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNn LmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNy ZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAllcnJvciA9IG5ucGZzX21l c3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsN CiAJaWYgKGVycm9yID09IDApDQpAQCAtMTA4Myw3ICsxMjM0LDExIEBAIG5u cGZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGQNCiAgICAg bXNnLnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICBpZiAoc3Ry bGNweShtc2cubmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSwgc2l6ZW9mKG1z Zy5uYW1lKSkgPj0gTk5QRlNfTUFYX05BTUUpDQogCSAgICByZXR1cm4gLUVO QU1FVE9PTE9ORzsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3VycmVu dC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRf dWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dl dF9wYWcoKTsNCiAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBm c3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogICAgIGlmIChlcnJv ciA9PSAwKQ0KQEAgLTExMjgsNyArMTI4MywxMSBAQCBzdGF0aWMgaW50IG5u cGZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkDQogCWlmIChzdHJsY3B5KG1z Zy5uYW1lLCBuYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19NQVhf TkFNRSkNCiAJICAgIHJldHVybiAtRU5BTUVUT09MT05HOw0KIA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0K IAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAg ICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQog CW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJZXJyb3IgPSBu bnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2Yo bXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KQEAgLTExNTcsMjkgKzEzMTYs NDcgQEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAq ZA0KICAgICB4biA9IFZOT0RFX1RPX1hOT0RFKGRpcik7DQogDQogICAgIHsN Ci0Jc3RydWN0IG5ucGZzX21lc3NhZ2Vfc3ltbGluayBtc2c7DQorCXN0cnVj dCBubnBmc19tZXNzYWdlX3N5bWxpbmsgKm1zZyA9IE5VTEw7DQogDQotCW1z Zy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1NZTUxJTks7DQotCW1zZy5w YXJlbnRfaGFuZGxlID0geG4tPmhhbmRsZTsNCi0JaWYgKHN0cmxjcHkobXNn Lm5hbWUsIG5hbWUsIHNpemVvZihtc2cubmFtZSkpID49IE5OUEZTX01BWF9O QU1FKQ0KLQkgICAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQotCWlmIChzdHJs Y3B5KG1zZy5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy5jb250ZW50 cykpID49IE5OUEZTX01BWF9TWU1MSU5LX0NPTlRFTlQpDQotCSAgICByZXR1 cm4gLUVOQU1FVE9PTE9ORzsNCi0JWEFfQ0xFQVIoJm1zZy5hdHRyKTsNCi0J WEFfU0VUX01PREUoJm1zZy5hdHRyLCAwNzc3KTsNCi0JWEFfU0VUX1RZUEUo Jm1zZy5hdHRyLCBOTlBGU19GSUxFX0xOSyk7DQotCVhBX1NFVF9HSUQoJm1z Zy5hdHRyLCBjdXJyZW50LT5mc2dpZCk7DQorCW1zZyA9IGttYWxsb2Moc2l6 ZW9mKCptc2cpLCBHRlBfS0VSTkVMKTsNCiANCi0JbXNnLmNyZWQudWlkID0g Y3VycmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFn KCk7DQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNn LmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KKwlpZiAobXNnID09IE5VTEwpDQor CSAgcmV0dXJuIC1FTk9NRU07DQorDQorCW1zZy0+aGVhZGVyLm9wY29kZSA9 IE5OUEZTX01TR19TWU1MSU5LOw0KKwltc2ctPnBhcmVudF9oYW5kbGUgPSB4 bi0+aGFuZGxlOw0KKwlpZiAoc3RybGNweShtc2ctPm5hbWUsIG5hbWUsIHNp emVvZihtc2ctPm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkgew0KKwkgIGtm cmVlKG1zZyk7DQorCSAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQorCX0NCisJ aWYgKHN0cmxjcHkobXNnLT5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1z Zy0+Y29udGVudHMpKSA+PSBOTlBGU19NQVhfU1lNTElOS19DT05URU5UKSB7 DQorCSAga2ZyZWUobXNnKTsNCisJICByZXR1cm4gLUVOQU1FVE9PTE9ORzsN CisJfQ0KKwlYQV9DTEVBUigmbXNnLT5hdHRyKTsNCisJWEFfU0VUX01PREUo Jm1zZy0+YXR0ciwgMDc3Nyk7DQorCVhBX1NFVF9UWVBFKCZtc2ctPmF0dHIs IE5OUEZTX0ZJTEVfTE5LKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJWEFfU0VUX0dJRCgmbXNnLT5h dHRyLCBjdXJyZW50LT5mc2dpZCk7DQorI2Vsc2UNCisgICAgICAgIFhBX1NF VF9HSUQoJm1zZy0+YXR0ciwgY3VycmVudF9mc2dpZCgpKTsNCisjZW5kaWYN CisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCisJbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisj ZWxzZQ0KKyAgICAgICAgbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7 DQorI2VuZGlmDQorCW1zZy0+Y3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7 DQorCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLT5o ZWFkZXIsIHNpemVvZigqbXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KLQkg ICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKCZtc2cpOw0KKwkg ICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKG1zZyk7DQogDQog CS8qIFhYWCBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZSAqLw0KIAlpZiAo REVOVFJZX1RPX1hERU5UUlkoZGVudHJ5KS0+eGRfZmxhZ3MgPT0gMCkgew0K IAkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiBubnBmc19z eW1saW5rOiBkZW50cnkgbm90IHZhbGlkXG4iKTsNCiAJfQ0KKwlrZnJlZSht c2cpOw0KICAgICB9DQogDQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0xMTg4 LDEyICsxMzY1LDIxIEBAIHN0YXRpYyBpbnQgbm5wZnNfc3ltbGluayhzdHJ1 Y3QgaW5vZGUgKmQNCiAvKg0KICAqIFdlIGhvbGQgaV9tdXRleC4NCiAgKi8N CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx MSwwKQ0KIHN0YXRpYyBpbnQNCiBubnBmc19yZWFkZGlyKHN0cnVjdCBmaWxl ICogZmlsZSwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpDQor I2Vsc2UNCitzdGF0aWMgaW50DQorbm5wZnNfaXRlcmF0ZShzdHJ1Y3QgZmls ZSAqIGZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KQ0KKyNlbmRpZg0K IHsNCiAgICAgaW50IGVycm9yOw0KICAgICBsb2ZmX3Qgb2Zmc2V0LCBiZWdp bl9vZmZzZXQ7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0K KyNlbmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmNhY2hlX2lub2RlOw0KICAg ICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9k ZSk7DQogICAgIGNoYXIgKmJ1ZjsNCkBAIC0xMjE3LDYgKzE0MDMsNyBAQCBu bnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqDQogDQog ICAgIGNhY2hlX2lub2RlID0gYmFja2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsN CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxMSwwKQ0KICAgICB3aGlsZSAoZmlsZS0+Zl9wb3MgPCBpX3NpemVfcmVh ZChjYWNoZV9pbm9kZSkpIHsNCiAJTk5QRlNERUIoWERFQlJFQURESVIsDQog CSAgICAgICAoIm5ucGZzX3JlYWRkaXIgZmlsZS0+Zl9wb3M6ICVkIGlfc2l6 ZTogJWRcbiIsDQpAQCAtMTIyOSw2ICsxNDE2LDIwIEBAIG5ucGZzX3JlYWRk aXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJbWFwcGluZyA9IGJh Y2tmaWxlLT5mX21hcHBpbmc7DQogCWlucGFnZSA9IGZpbGUtPmZfcG9zICYg KFBBR0VfQ0FDSEVfU0laRS0xKTsNCiAJcGFnZV9udW0gPSBmaWxlLT5mX3Bv cyA+PiBQQUdFX0NBQ0hFX1NISUZUOw0KKyNlbHNlDQorICAgIHdoaWxlIChj dHgtPnBvcyA8IGlfc2l6ZV9yZWFkKGNhY2hlX2lub2RlKSkgew0KKwlOTlBG U0RFQihYREVCUkVBRERJUiwNCisJICAgICAgICgibm5wZnNfcmVhZGRpciBm aWxlLT5mX3BvczogJWQgaV9zaXplOiAlZFxuIiwNCisJCShpbnQpIGN0eC0+ cG9zLCAoaW50KSBjYWNoZV9pbm9kZS0+aV9zaXplKSk7DQorCWJlZ2luX29m ZnNldCA9IGN0eC0+cG9zICZ+IChOTlBGU19ESVJFTlRfQkxPQ0tTSVpFIC0g MSk7DQorCW9mZnNldCA9IGN0eC0+cG9zICYgKE5OUEZTX0RJUkVOVF9CTE9D S1NJWkUgLSAxKTsNCisJY3R4LT5wb3MgPSBiZWdpbl9vZmZzZXQ7DQorCU5O UEZTREVCKFhERUJSRUFERElSLCAoIm5ucGZzX3JlYWRkaXIgYmVnaW5fb2Zm c2V0OiAlZCBvZmZzZXQ6ICVkXG4iLA0KKwkJCSAgICAgKGludCliZWdpbl9v ZmZzZXQsIChpbnQpb2Zmc2V0KSk7DQorCW1hcHBpbmcgPSBiYWNrZmlsZS0+ Zl9tYXBwaW5nOw0KKwlpbnBhZ2UgPSBjdHgtPnBvcyAmIChQQUdFX0NBQ0hF X1NJWkUtMSk7DQorCXBhZ2VfbnVtID0gY3R4LT5wb3MgPj4gUEFHRV9DQUNI RV9TSElGVDsNCisjZW5kaWYNCiANCiAJTk5QRlNERUIoWERFQlJFQURESVIs DQogCSAgICAgICAoIm5ucGZzX3JlYWRkaXIgaW5wYWdlOiAlZCBwYWdlX251 bTogJWx1XG4iLA0KQEAgLTEyNjQsNiArMTQ2NSw3IEBAIG5ucGZzX3JlYWRk aXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJCSAgICAoaW50KSB4 ZGlyZW50LT5kX25hbWxlbiwNCiAJCSAgICAoaW50KSAob2Zmc2V0K2JlZ2lu X29mZnNldCkpKTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxMSwwKQ0KIAkgICAgaWYgKHhkaXJlbnQtPmRfZmls ZW5vICE9IDANCiAJCSYmIChmaWxsZGlyX2Vycm9yID0gZmlsbGRpciAoZGly ZW50LA0KIAkJCQkgICAgIHhkaXJlbnQtPmRfbmFtZSwNCkBAIC0xMjc1LDEy ICsxNDc3LDI4IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJCQkgKCJubnBmc19yZWFkZGlyIGZpbGxkaXI6ICVkXG4i LCBmaWxsZGlyX2Vycm9yKSk7DQogCQlicmVhazsNCiAJICAgIH0NCisjZWxz ZQ0KKwkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9IDANCisJCSYmIChm aWxsZGlyX2Vycm9yID0gZGlyX2VtaXQgKGN0eCwNCisJCQkJICAgICB4ZGly ZW50LT5kX25hbWUsDQorCQkJCSAgICAgeGRpcmVudC0+ZF9uYW1sZW4sDQor CQkJCSAgICAgeGRpcmVudC0+ZF9maWxlbm8sDQorCQkJCSAgICAgRFRfVU5L Tk9XTikpIDwgMCkgew0KKwkJTk5QRlNERUIoWERFQlJFQURESVIsDQorCQkJ ICgibm5wZnNfcmVhZGRpciBmaWxsZGlyOiAlZFxuIiwgZmlsbGRpcl9lcnJv cikpOw0KKwkJYnJlYWs7DQorCSAgICB9DQorI2VuZGlmDQogCSAgICBvZmZz ZXQgKz0geGRpcmVudC0+ZF9yZWNsZW47DQogDQogCSAgICBpZiAoeGRpcmVu dC0+ZF9yZWNsZW4gPT0gMCkgew0KIAkJcHJpbnRrKEtFUk5fRU1FUkcgIk5O UEZTIFBhbmljOiAiDQogCQkgICAgICAgImVtcHR5IGRpcmVudCBhdCAlbGxk IGluIG5ucGZzX3JlYWRkaXIsIHBvcyAlZCBzaXplICVkXG4iLA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDExLDApDQog CQkgICAgICAgKGxvbmcgbG9uZylvZmZzZXQsIChpbnQpZmlsZS0+Zl9wb3Ms DQorI2Vsc2UNCisJCSAgICAgICAobG9uZyBsb25nKW9mZnNldCwgKGludClj dHgtPnBvcywNCisjZW5kaWYNCiAJCSAgICAgICAoaW50KWNhY2hlX2lub2Rl LT5pX3NpemUpOw0KIAkJTk5QRlNERUIoWERFQlZOT1BTLCAoImlub2RlOiAl cCBhbGlhc2VzOiIsIGlub2RlKSk7DQogCQlubnBmc19wcmludF9hbGlhc2Vz KGlub2RlKTsNCkBAIC0xMjk4LDcgKzE1MTYsMTEgQEAgbm5wZnNfcmVhZGRp cihzdHJ1Y3QgZmlsZSAqIGZpbGUsIHZvaWQgKg0KIAlpZiAob2Zmc2V0ID4g Tk5QRlNfRElSRU5UX0JMT0NLU0laRSkNCiAJICAgIG9mZnNldCA9IE5OUEZT X0RJUkVOVF9CTE9DS1NJWkU7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAJZmlsZS0+Zl9wb3MgPSBi ZWdpbl9vZmZzZXQgKyBvZmZzZXQ7DQorI2Vsc2UNCisJY3R4LT5wb3MgPSBi ZWdpbl9vZmZzZXQgKyBvZmZzZXQ7DQorI2VuZGlmDQogDQogCWlmIChlcnJv ciB8fCBvZmZzZXQgPCBOTlBGU19ESVJFTlRfQkxPQ0tTSVpFKQ0KIAkgICAg YnJlYWs7DQpAQCAtMTMzMSw5ICsxNTUzLDE1IEBAIG5ucGZzX3JlYWRsaW5r IChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGMNCiAgKiBXZSBkb24ndCBob2xk IGlfbXV0ZXguDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDQsMiwwKQ0KIHN0YXRpYyB2b2lkICoNCiBubnBm c19mb2xsb3dfbGluayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KIAkJIHN0 cnVjdCBuYW1laWRhdGEgKm5kKQ0KKyNlbHNlDQorc3RhdGljIGNvbnN0IGNo YXIgKg0KK25ucGZzX2ZvbGxvd19saW5rIChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksDQorCQkgdm9pZCAqKnBhZ2UpDQorI2VuZGlmDQogew0KICAgICBpbnQg ZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZ X1RPX0lOT0RFKGRlbnRyeSk7DQpAQCAtMTM0NCw3ICsxNTcyLDExIEBAIG5u cGZzX2ZvbGxvd19saW5rIChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkNCiAgICAg aWYgKGVycm9yKQ0KICAgICAgICByZXR1cm4gRVJSX1BUUihlcnJvcik7DQog DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQs MiwwKQ0KICAgICByZXR1cm4gcGFnZV9mb2xsb3dfbGlua19saWdodChkZW50 cnksIG5kKTsNCisjZWxzZQ0KKyAgICByZXR1cm4gcGFnZV9mb2xsb3dfbGlu a19saWdodChkZW50cnksIHBhZ2UpOw0KKyNlbmRpZg0KIH0NCiANCiAvKg0K QEAgLTEzOTgsNyArMTYzMCwxMSBAQCBubnBmc19zZXRhdHRyIChzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHN0DQogICAgICAgICBzdHJ1Y3Qgbm5wZnNfbWVz c2FnZV9wdXRhdHRyIG1zZzsNCiANCiAgICAgICAgIG1zZy5oZWFkZXIub3Bj b2RlID0gTk5QRlNfTVNHX1BVVEFUVFI7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVp ZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQu dWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNyZWQucGFn ID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICAgICAgbXNnLmhhbmRsZSA9IHhu LT5oYW5kbGU7DQogICAgICAgICBubnBmc19pYXR0cjJhdHRyKHhuLCBhdHRy LCAmbXNnLmF0dHIpOw0KQEAgLTE0MjIsNiArMTY1OCw4IEBAIG5ucGZzX3Jl bGVhc2VfZmlsZSAoc3RydWN0IGlub2RlICppbm9kZSwNCiAgICAgc3RydWN0 IG5ucGZzX25vZGUgKnhuOw0KICAgICBpbnQgZXJyb3IgPSAwOw0KIA0KKyAg ICAodm9pZClubnBmc3A7DQorDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywg KCJubnBmc19yZWxlYXNlX2ZpbGVcbiIpKTsNCiANCiAgICAgZXJyb3IgPSBu bnBmc19pbm9kZV92YWxpZChpbm9kZSk7DQpAQCAtMTQ1MCwxOCArMTY4OCwx OCBAQCBubnBmc19yZWxlYXNlX2ZpbGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUs DQogICoNCiAgKi8NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50DQogbm5wZnNfZmx1 c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpDQotI2Vsc2UN Ci1zdGF0aWMgaW50DQotbm5wZnNfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUp DQotI2VuZGlmDQogew0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5w ZnNfZmx1c2hcbiIpKTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBpZiAoZmlsZSAmJiBmaWxl LT5mX2RlbnRyeSAmJiBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZSkNCiAJcmV0 dXJuIG5ucGZzX3JlbGVhc2VfZmlsZShmaWxlLT5mX2RlbnRyeS0+ZF9pbm9k ZSwgZmlsZSk7DQorI2Vsc2UNCisgICAgaWYgKGZpbGUgJiYgZmlsZS0+Zl9w YXRoLmRlbnRyeSAmJiBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlKQ0K KwlyZXR1cm4gbm5wZnNfcmVsZWFzZV9maWxlKGZpbGUtPmZfcGF0aC5kZW50 cnktPmRfaW5vZGUsIGZpbGUpOw0KKyNlbmRpZg0KICAgICBlbHNlDQogCXJl dHVybiAwOw0KIH0NCkBAIC0xNDcwLDEwICsxNzA4LDI0IEBAIG5ucGZzX2Zs dXNoKHN0cnVjdCBmaWxlICpmaWxlKQ0KICAqIFJldHVybiAxIGlmIGBkZW50 cnknIGlzIHN0aWxsIHZhbGlkLCBvdGhlcndpc2UgMC4NCiAgKi8NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDAp DQorc3RhdGljIGludA0KK25ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0KKyNlbHNlDQog c3RhdGljIGludA0KLW5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5kKSANCitubnBmc19kX3Jl dmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQg ZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQorDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLDYsMCkNCisgICAgaWYg KGZsYWdzICYgTE9PS1VQX1JDVSkNCisgICAgICAgIHJldHVybiAtRUNISUxE Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMzgpDQorICAgIGlmIChuZCAmJiBuZC0+ZmxhZ3MgJiBMT09LVVBf UkNVKQ0KKyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQorI2VuZGlmDQorDQog ICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19kX3JldmFsaWRhdGUg JXAgXCIlLipzXCIgKGlub2RlICVwKVxuIiwNCiAJCSAgICAgICBkZW50cnks DQogCQkgICAgICAgKGludClkZW50cnktPmRfbmFtZS5sZW4sDQpAQCAtMTUx OSw5ICsxNzcxLDE1IEBAIG5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkNCiAgICAgcmV0dXJuIDA7DQogfQ0KIA0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogc3Rh dGljDQogaW50DQogbm5wZnNfZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVu dHJ5KQ0KKyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUo Y29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbmRpZg0KIHsNCiAg ICAgc3RydWN0IGlub2RlICppbm9kZTsNCiAgICAgc3RydWN0IG5ucGZzX25v ZGUgKnhuOw0KQEAgLTE1NDYsMTEgKzE4MDQsMTYgQEAgbm5wZnNfZF9kZWxl dGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KIH0NCiANCiBzdGF0aWMgc3Np emVfdA0KLW5ucGZzX3NlbmRmaWxlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2Zm X3QgKnBwb3MsIHNpemVfdCBjb3VudCwNCi0JICAgICAgIHJlYWRfYWN0b3Jf dCBhY3Rvciwgdm9pZCAqdGFyZ2V0KQ0KK25ucGZzX3NwbGljZV9yZWFkKHN0 cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QgKnBwb3MsDQorCQkgIHN0cnVjdCBw aXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBjb3VudCwNCisJCSAgdW5z aWduZWQgaW50IGZsYWdzKQ0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww KQ0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnkt PmRfaW5vZGU7DQorI2Vsc2UNCisgICAgc3RydWN0IGlub2RlICppbm9kZSA9 IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7DQorI2VuZGlmDQogICAg IHN0cnVjdCBubnBmc19ub2RlICp4biA9IFZOT0RFX1RPX1hOT0RFKGlub2Rl KTsNCiAgICAgDQogICAgIGlmICh4biAhPSBOVUxMKQ0KQEAgLTE1NjEsOCAr MTgyNCw3IEBAIG5ucGZzX3NlbmRmaWxlKHN0cnVjdCBmaWxlICpmaWxlLCBs b2ZmX3QNCiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3NlbmRmaWxl OiBkYXRhIG5vdCB2YWxpZCAlZFxuIiwgZXJyb3IpKTsNCiAJcmV0dXJuIGVy cm9yOw0KICAgICB9DQotDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3Nl bmRmaWxlKGZpbGUsIHBwb3MsIGNvdW50LCBhY3RvciwgdGFyZ2V0KTsNCisg ICAgZXJyb3IgPSBmaWxlLT5mX29wLT5zcGxpY2VfcmVhZChmaWxlLCBwcG9z LCBwaXBlLCBjb3VudCwgZmxhZ3MpOw0KIA0KICAgICBOTlBGU0RFQihYREVC Vk5PUFMsICgibm5wZnNfc2VuZGZpbGU6IGVycm9yID0gJWRcbiIsIGVycm9y KSk7DQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0xNjM5LDQwICsxOTAxLDQx IEBAIG5ucGZzX3dyaXRlX2JhY2twYWdlKHN0cnVjdCBwYWdlICpwYWdlLCAN CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBiYWNrZmlsZS0+ Zl9tYXBwaW5nOw0KIAl1bnNpZ25lZCBsZW4gPSBQQUdFX0NBQ0hFX1NJWkU7 DQogCXN0cnVjdCBwYWdlICpiYWNrcGFnZTsNCisJdm9pZCAqZnNkYXRhOw0K IAl1bnNpZ25lZCBsb25nIG9mZnNldDsNCiANCiAJaW50IGVycm9yOw0KIAkN Ci0JZG8gew0KLQkJYmFja3BhZ2UgPSBncmFiX2NhY2hlX3BhZ2UobWFwcGlu Zywgbm5wZnNfZ2V0X2JhY2tpbmRleChwYWdlKSk7DQotCQlpZiAoIWJhY2tw YWdlKSB7DQotCQkJcHJpbnRrKCJubnBmc193cml0ZV9iYWNrcGFnZTogbm8g cGFnZVxuIik7DQotCQkJcmV0dXJuIC1FSU87DQotCQl9DQorCSh2b2lkKW9m ZnNldDsNCiANCi0JCWVycm9yID0gbWFwcGluZy0+YV9vcHMtPnByZXBhcmVf d3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJCQkJCSAgICAgIDAsIGxl bik7DQorCWRvIHsNCisJCWVycm9yID0gcGFnZWNhY2hlX3dyaXRlX2JlZ2lu KGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJCQkgICAgICBBT1Bf RkxBR19VTklOVEVSUlVQVElCTEUsDQorCQkJCQkgICAgICAmYmFja3BhZ2Us ICZmc2RhdGEpOw0KIAkJaWYgKCFlcnJvcikgew0KIAkJCWNvcHlfaGlnaHBh Z2UoYmFja3BhZ2UsIHBhZ2UpOw0KIAkJCWZsdXNoX2RjYWNoZV9wYWdlKGJh Y2twYWdlKTsNCi0JCQllcnJvciA9IG1hcHBpbmctPmFfb3BzLT5jb21taXRf d3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJCQkJCQkgICAgIDAsIGxl bik7DQorCQkJZXJyb3IgPSBwYWdlY2FjaGVfd3JpdGVfZW5kKGJhY2tmaWxl LCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJCQlsZW4sIGJhY2twYWdlLCBmc2Rh dGEpOw0KKwkJCWlmIChlcnJvciA+IDApDQorCQkJCWVycm9yID0gMDsNCiAJ CX0NCiAJCWlmIChlcnJvciA9PSBBT1BfVFJVTkNBVEVEX1BBR0UpIHsNCi0J CQlwYWdlX2NhY2hlX3JlbGVhc2UoYmFja3BhZ2UpOw0KIAkJCWNvbnRpbnVl Ow0KIAkJfQ0KIAl9IHdoaWxlICgwKTsNCiANCiAJb2Zmc2V0ID0gcGFnZV9v ZmZzZXQoYmFja3BhZ2UpOw0KLQl1bmxvY2tfcGFnZShiYWNrcGFnZSk7DQot CXBhZ2VfY2FjaGVfcmVsZWFzZShiYWNrcGFnZSk7DQogDQogCWlmIChlcnJv cikNCiAJCXByaW50aygibm5wZnNfd3JpdGVfYmFja3BhZ2U6IEVJT1xuIik7 DQogI2lmZGVmIE5OUEZTX1NBRkVfU1lOQw0KIAllbHNlDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzMikNCiAJCSh2 b2lkKXN5bmNfcGFnZV9yYW5nZShtYXBwaW5nLT5ob3N0LCBtYXBwaW5nLCBv ZmZzZXQsIGxlbik7DQorI2Vsc2UNCisJCSh2b2lkKWZpbGVtYXBfd3JpdGVf YW5kX3dhaXRfcmFuZ2UobWFwcGluZywgb2Zmc2V0LCBvZmZzZXQgKyBsZW4g LSAxKTsNCisjZW5kaWYNCiAjZW5kaWYNCiAJDQogCXJldHVybiBlcnJvcjsN CkBAIC0xNjg5LDEzICsxOTUyLDkgQEAgbm5wZnNfcmVhZF9iYWNrcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSwgcw0KIAlzdHJ1Y3QgcGFnZSAqYmFja3BhZ2U7 DQogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0KIA0KLSNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0KKwkodm9pZClv ZmZzZXQ7DQorDQogCWJhY2twYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFw cGluZywgbiwgYmFja2ZpbGUpOw0KLSNlbHNlDQotCWJhY2twYWdlID0gcmVh ZF9jYWNoZV9wYWdlKG1hcHBpbmcsIG4sDQotCQkJCSAgIChmaWxsZXJfdCAq KW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwNCi0JCQkJICAgYmFja2ZpbGUp Ow0KLSNlbmRpZg0KIAlpZiAoIUlTX0VSUihiYWNrcGFnZSkpIHsNCiAJCXdh aXRfb25fcGFnZV9sb2NrZWQoYmFja3BhZ2UpOw0KIA0KQEAgLTE4NDIsMTEg KzIxMDEsMTcgQEAgbm5wZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgcw0KIA0KIAlpZiAobW9kc2l6ZSA+IGlfc2l6ZV9yZWFkKGlub2Rl KSkgew0KIAkJaW50IGVycm9yOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDgsMCkNCiAJCWVycm9yID0gdm10cnVuY2F0 ZShpbm9kZSwgbW9kc2l6ZSk7DQorI2Vsc2UNCisJCWVycm9yID0gaW5vZGVf bmV3c2l6ZV9vayhpbm9kZSwgbW9kc2l6ZSk7DQorCQlpZighZXJyb3IpDQor CQkJdHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgbW9kc2l6ZSk7DQorI2VuZGlm DQogCQlpZiAoZXJyb3IpIHsNCiAJCQlwcmludGsoIm5ucGZzX3ByZXBhcmVf d3JpdGU6IHRydW5jYXRlKCVsbHUpIC0+ICVkXG4iLA0KIAkJCSAgICAgICBt b2RzaXplLCAtZXJyb3IpOw0KLQkJCUJVRygpOyAvKiBYWFggbm90IGNvcnJl Y3QgKi8NCisJCQkvKkJVRygpOyovIC8qIFhYWCBub3QgY29ycmVjdCAqLw0K IAkJfQ0KIAl9DQogDQpAQCAtMTg3Miw0NCArMjEzNywxMTggQEAgbm5wZnNf cHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgcw0KIAlyZXR1cm4g cmV0Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiBzdGF0aWMgaW50DQotbm5wZnNfY29tbWl0 X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwg dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pDQorbm5wZnNfd3JpdGVfYmVn aW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nLCBsb2ZmX3QgcG9zLA0KK3Vuc2lnbmVkIGxlbiwgdW5zaWduZWQg ZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpDQog ew0KLSAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gcGFnZS0+bWFwcGluZy0+ aG9zdDsNCi0gICAgbG9mZl90IHBvcyA9ICgobG9mZl90KXBhZ2UtPmluZGV4 IDw8IFBBR0VfQ0FDSEVfU0hJRlQpICsgdG87DQorCXN0cnVjdCBwYWdlICpw YWdlOw0KKwlwZ29mZl90IGluZGV4Ow0KKwl1bnNpZ25lZCBmcm9tOw0KKwlp bnQgcmV0ID0gMDsNCiANCi0gICAgaWYgKHBvcyA+IGlub2RlLT5pX3NpemUp IHsNCi0JaV9zaXplX3dyaXRlKGlub2RlLCBwb3MpOw0KKwlpbmRleCA9IHBv cyA+PiBQQUdFX0NBQ0hFX1NISUZUOw0KKwlmcm9tID0gcG9zICYgKFBBR0Vf Q0FDSEVfU0laRSAtIDEpOw0KIA0KLQlzcGluX2xvY2soJmlub2RlLT5pX2xv Y2spOw0KLQlpbm9kZS0+aV9ibG9ja3MgPSAocG9zICsgSV9CTE9DS1NfVU5J VCAtIDEpID4+IElfQkxPQ0tTX0JJVFM7DQotCXNwaW5fdW5sb2NrKCZpbm9k ZS0+aV9sb2NrKTsNCi0gICAgfQ0KLSAgICBzZXRfcGFnZV9kaXJ0eShwYWdl KTsNCisJcGFnZSA9IGdyYWJfY2FjaGVfcGFnZV93cml0ZV9iZWdpbihtYXBw aW5nLCBpbmRleCwgZmxhZ3MpOw0KKwlpZiAoIXBhZ2UpDQorCQlyZXR1cm4g LUVOT01FTTsNCisNCisJKnBhZ2VwID0gcGFnZTsNCisNCisJcmV0ID0gbm5w ZnNfcHJlcGFyZV93cml0ZShmaWxlLCBwYWdlLCBmcm9tLCBmcm9tICsgbGVu KTsNCisJaWYgKHJldCkgew0KKwkJdW5sb2NrX3BhZ2UocGFnZSk7DQorCQlw YWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQorCX0NCisNCisJcmV0dXJuIHJl dDsNCit9DQorI2VuZGlmDQogDQorLyogWFhYIHdlIHVzZSB0aGUgc3lzdGVt IHByb3ZpZGVkIHNpbXBsZV9jb21taXRfd3JpdGUgaW5zdGVhZCBzbyB0aGlz IGZ1bmN0aW9uIGlzIHVudXNlZCBmb3Igbm93ICovDQogI2lmIDANCi0gICAg ew0KLQljaGFyICphZGRyOw0KLQlrbWFwKHBhZ2UpOw0KLQlhZGRyID0gcGFn ZV9hZGRyZXNzKHBhZ2UpOw0KLQlOTlBGU0RFQihYREVCVk5PUFMsICgibm5w ZnNfY29tbWl0X3dyaXRlKCVwKTogJXgleCV4JXhcbiIsDQorc3RhdGljIGlu dA0KK25ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3Ry dWN0IHBhZ2UgKnBhZ2UsDQorCQkgICB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l ZCB0bykNCit7DQorCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBw aW5nLT5ob3N0Ow0KKwlsb2ZmX3QgcG9zID0gKChsb2ZmX3QpcGFnZS0+aW5k ZXggPDwgUEFHRV9DQUNIRV9TSElGVCkgKyB0bzsNCisNCisJaWYgKCFQYWdl VXB0b2RhdGUocGFnZSkpDQorCQlTZXRQYWdlVXB0b2RhdGUocGFnZSk7DQor DQorCWlmIChwb3MgPiBpbm9kZS0+aV9zaXplKSB7DQorCQlpX3NpemVfd3Jp dGUoaW5vZGUsIHBvcyk7DQorDQorCQlzcGluX2xvY2soJmlub2RlLT5pX2xv Y2spOw0KKwkJaW5vZGUtPmlfYmxvY2tzID0gKHBvcyArIElfQkxPQ0tTX1VO SVQgLSAxKSA+PiBJX0JMT0NLU19CSVRTOw0KKwkJc3Bpbl91bmxvY2soJmlu b2RlLT5pX2xvY2spOw0KKwl9DQorCXNldF9wYWdlX2RpcnR5KHBhZ2UpOw0K Kw0KKyNpZiAwDQorCXsNCisJICAgIGNoYXIgKmFkZHI7DQorCSAgICBrbWFw KHBhZ2UpOw0KKwkgICAgYWRkciA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsNCisJ ICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19jb21taXRfd3JpdGUo JXApOiAleCV4JXgleFxuIiwNCiAJCQkgICAgIGZpbGUtPmZfbWFwcGluZy0+ aG9zdCwgDQogCQkJICAgICBhZGRyWzBdLCBhZGRyWzFdLCBhZGRyWzJdLCBh ZGRyWzNdKSk7DQotCWt1bm1hcChwYWdlKTsNCi0gICAgfQ0KKwkgICAga3Vu bWFwKHBhZ2UpOw0KKwl9DQogI2VuZGlmDQotICAgIA0KLSAgICByZXR1cm4g MDsNCisgDQorCXJldHVybiAwOw0KIH0NCisjZW5kaWYNCiANCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCi1j b25zdA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KKy8qIFhYWCB3ZSB1c2UgdGhlIHN5c3RlbSBwcm92aWRl ZCBzaW1wbGVfd3JpdGVfZW5kIGluc3RlYWQgc28gdGhpcyBmdW5jdGlvbiBp cyB1bnVzZWQgZm9yIG5vdyAqLw0KKyNpZiAwDQorc3RhdGljIGludA0KK25u cGZzX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGFkZHJl c3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBwb3MsDQorCQl1bnNpZ25lZCBs ZW4sIHVuc2lnbmVkIGNvcGllZCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQg KmZzZGF0YSkNCit7DQorCXVuc2lnbmVkIGZyb20gPSBwb3MgJiAoUEFHRV9D QUNIRV9TSVpFIC0gMSk7DQorDQorCS8qIHplcm8gdGhlIHN0YWxlIHBhcnQg b2YgdGhlIHBhZ2UgaWYgd2UgZGlkIGEgc2hvcnQgY29weSAqLw0KKwlpZiAo Y29waWVkIDwgbGVuKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJdm9pZCAqa2FkZHIgPSBrbWFwX2F0 b21pYyhwYWdlLCBLTV9VU0VSMCk7DQorI2Vsc2UNCisJCXZvaWQgKmthZGRy ID0ga21hcF9hdG9taWMocGFnZSk7DQorI2VuZGlmDQorCQltZW1zZXQoa2Fk ZHIgKyBmcm9tICsgY29waWVkLCAwLCBsZW4gLSBjb3BpZWQpOw0KKwkJZmx1 c2hfZGNhY2hlX3BhZ2UocGFnZSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJa3VubWFwX2F0b21pYyhr YWRkciwgS01fVVNFUjApOw0KKyNlbHNlDQorCQlrdW5tYXBfYXRvbWljKGth ZGRyKTsNCiAjZW5kaWYNCisJfQ0KKw0KKwlubnBmc19jb21taXRfd3JpdGUo ZmlsZSwgcGFnZSwgZnJvbSwgZnJvbSArIGNvcGllZCk7DQorDQorCXVubG9j a19wYWdlKHBhZ2UpOw0KKwlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQor DQorCXJldHVybiBjb3BpZWQ7DQorfQ0KKyNlbmRpZg0KKyNlbmRpZg0KKw0K K2NvbnN0DQogc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBubnBm c19hb3BzID0gew0KIAkucmVhZHBhZ2UgPSBubnBmc19yZWFkcGFnZSwNCiAJ LndyaXRlcGFnZSA9IG5ucGZzX3dyaXRlcGFnZSwNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAkucHJlcGFy ZV93cml0ZSA9IG5ucGZzX3ByZXBhcmVfd3JpdGUsDQotCS5jb21taXRfd3Jp dGUgPSBubnBmc19jb21taXRfd3JpdGUsDQorCS5jb21taXRfd3JpdGUgPSBz aW1wbGVfY29tbWl0X3dyaXRlLA0KKyNlbHNlDQorCS53cml0ZV9iZWdpbiA9 IG5ucGZzX3dyaXRlX2JlZ2luLA0KKwkud3JpdGVfZW5kID0gc2ltcGxlX3dy aXRlX2VuZCwNCisjZW5kaWYNCiB9Ow0KIA0KIC8qDQpAQCAtMTkxNywyMSAr MjI1NiwzMCBAQCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIG5u cGZzX2FvDQogICovDQogDQogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBm c19maWxlX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgLmFpb19yZWFkCT0g bm5wZnNfYWlvX3JlYWQsDQogICAgIC5haW9fd3JpdGUJPSBubnBmc19haW9f d3JpdGUsDQorI2Vsc2UNCisgICAgLnJlYWRfaXRlcgk9IG5ucGZzX3JlYWRf aXRlciwNCisgICAgLndyaXRlX2l0ZXIJPSBubnBmc193cml0ZV9pdGVyLA0K KyNlbmRpZg0KICAgICAubW1hcAk9IG5ucGZzX2ZpbGVfbW1hcCwNCiAgICAg Lm9wZW4JPSBubnBmc19vcGVuLA0KICAgICAuZmx1c2gJPSBubnBmc19mbHVz aCwNCiAgICAgLnJlbGVhc2UJPSBubnBmc19yZWxlYXNlX2ZpbGUsDQogICAg IC5mc3luYwk9IG5ucGZzX2ZzeW5jLA0KLSAgICAuc2VuZGZpbGUJPSBubnBm c19zZW5kZmlsZSwNCisgICAgLnNwbGljZV9yZWFkID0gbm5wZnNfc3BsaWNl X3JlYWQsDQogfTsNCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZz X2RlYWRfb3BlcmF0aW9ucyA9IHsNCiB9Ow0KIA0KIHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgbm5wZnNfZGlyX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAgICAg LnJlYWRkaXIJPSBubnBmc19yZWFkZGlyLA0KKyNlbHNlDQorICAgIC5pdGVy YXRlICAgID0gbm5wZnNfaXRlcmF0ZSwNCisjZW5kaWYNCiAgICAgLmZsdXNo CT0gbm5wZnNfZmx1c2gsDQogfTsNCiANCmRpZmYgLXVwck4gLVhub2RpZmYg YXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19sb2FkLmMgYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX2xvYWQuYw0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfbG9hZC5jCTIwMDYtMTAtMzEgMTE6MDI6 NDEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4 L25ucGZzX2xvYWQuYwkyMDE2LTAxLTEzIDIwOjE0OjAyLjAwMDAwMDAwMCAr MDEwMA0KQEAgLTU0LDcgKzU0LDExIEBAIGV4dGVybiBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIG5ucGZzX2ZvcHMNCiANCiBzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSBubnBmc19mc190eXBlID0gew0KICAgICAgICBuYW1lOiAgICAgICAg ICAgIm5ucGZzIiwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM5KQ0KICAgICAgICBnZXRfc2I6ICAgICAgICAgbm5w ZnNfZ2V0X3NiLA0KKyNlbHNlDQorICAgICAgIG1vdW50OiAgICAgICAgICBu bnBmc19tb3VudCwNCisjZW5kaWYNCiAgICAgICAga2lsbF9zYjogICAgICAg IGtpbGxfbGl0dGVyX3N1cGVyLA0KICAgICAgICBvd25lcjogICAgICAgICAg VEhJU19NT0RVTEUsDQogfTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0w LjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19tZXNzYWdlLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2UuYw0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfbWVzc2FnZS5jCTIwMDctMDEtMDkgMTc6 MzM6MzEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xp bnV4L25ucGZzX21lc3NhZ2UuYwkyMDE2LTAxLTI0IDE4OjUyOjI4LjAwMDAw MDAwMCArMDEwMA0KQEAgLTQ1LDcgKzQ1LDcgQEANCiAjaW5jbHVkZSA8bGlu dXgvbW91bnQuaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBu bnBmc19tZXNzYWdlLmMsdiAxLjE0My4yLjEgMjAwNy8wMS8wOSAxNjozMzoz MSB0b2wgRXhwICQiKTsNCitSQ1NJRCgiJElkOiBubnBmc19tZXNzYWdlLmMs diAxLjE0NSAyMDEwLzA4LzA4IDIwOjQzOjA1IHRvbCBFeHAgJCIpOw0KICNl bmRpZg0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtNTUsOSArNTUsMTUgQEAgc3Rh dGljIHZvaWQNCiBubnBmc19kX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpDQogew0KICAgICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX2RfcmVt b3ZlICVwXG4iLCBkZW50cnkpKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KICAgICBzcGluX2xvY2soJmRj YWNoZV9sb2NrKTsNCiAgICAgZGdldF9sb2NrZWQoZGVudHJ5KTsNCiAgICAg c3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBzcGlu X2xvY2soJmRlbnRyeS0+ZF9sb2NrKTsNCisgICAgZGdldF9kbG9jayhkZW50 cnkpOw0KKyAgICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2spOw0KKyNl bmRpZg0KICAgICBkX2Ryb3AoZGVudHJ5KTsNCiAgICAgZHB1dChkZW50cnkp Ow0KIH0NCkBAIC0xMjEsNyArMTI3LDExIEBAIG5ucGZzX21lc3NhZ2VfaW5z dGFsbG5vZGUoc3RydWN0IG5ucGZzICoNCiAgICAgc3RydWN0IGlub2RlICpk aSwgKmlub2RlOw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQgPSBOVUxM Ow0KICAgICBzdHJ1Y3QgcXN0ciBzcXN0cjsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBs aXN0X2hlYWQgKmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqYWxpYXM7DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVC TVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGVcbiIpKTsNCiAgICAg DQpAQCAtMTc2LDEyICsxODYsMjYgQEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxs bm9kZShzdHJ1Y3Qgbm5wZnMgKg0KICAgICAgKg0KICAgICAgKi8NCiAgICAg DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs NiwwKQ0KICAgICBhbGlhcyA9IGRpLT5pX2RlbnRyeS5uZXh0Ow0KICAgICB3 aGlsZSAoYWxpYXMgIT0gJmRpLT5pX2RlbnRyeSkgew0KIAlwYXJlbnQgPSBs aXN0X2VudHJ5KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCi0J c3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7DQotCWRnZXRfbG9ja2VkKHBhcmVu dCk7DQotCXNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7DQorI2VsaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAg IGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgYWxpYXMsICZkaS0+aV9k ZW50cnksIGRfYWxpYXMpIHsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGhsaXN0X2Zvcl9lYWNo X2VudHJ5KHBhcmVudCwgJmRpLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNl bHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgJmRpLT5p X2RlbnRyeSwgZF91LmRfYWxpYXMpIHsNCisjZW5kaWYNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KKyAgICBz cGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCisgICAgZGdldF9sb2NrZWQocGFy ZW50KTsNCisgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxz ZQ0KKyAgICBzcGluX2xvY2soJnBhcmVudC0+ZF9sb2NrKTsNCisgICAgZGdl dF9kbG9jayhwYXJlbnQpOw0KKyAgICBzcGluX3VubG9jaygmcGFyZW50LT5k X2xvY2spOw0KKyNlbmRpZg0KIAlkZW50cnkgPSBkX2xvb2t1cChwYXJlbnQs ICZzcXN0cik7DQogCU5OUEZTREVCKFhERUJNU0csDQogCQkgKCJubnBmc19t ZXNzYWdlX2luc3RhbGxub2RlOiBhbGlhcyAlcCwgbG9va3VwICVwXG4iLA0K QEAgLTIzMyw3ICsyNTcsOSBAQCBubnBmc19tZXNzYWdlX2luc3RhbGxub2Rl KHN0cnVjdCBubnBmcyAqDQogCQ0KIAlkcHV0KGRlbnRyeSk7DQogCWRlbnRy eSA9IE5VTEw7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsNiwwKQ0KIAlhbGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRp Zg0KIAlkcHV0KHBhcmVudCk7DQogICAgIH0NCiAgICAgTk5QRlNERUIoWERF Qk1TRywgKCJubnBmc19tZXNzYWdlX2luc3RhbGxub2RlOiBkb25lIGluc3Rh bGxpbmdcbiIpKTsNCkBAIC0yNjgsNyArMjk0LDEzIEBAIG5ucGZzX21lc3Nh Z2VfaW5zdGFsbGF0dHIoc3RydWN0IG5ucGZzICoNCiAgICAgfQ0KIA0KICAg ICBpbm9kZSA9IFhOT0RFX1RPX1ZOT0RFKHQpOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgZGVudHJ5 ID0gbGlzdF9lbnRyeShpbm9kZS0+aV9kZW50cnkubmV4dCwgc3RydWN0IGRl bnRyeSwgZF9hbGlhcyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBkZW50cnkgPSBobGlzdF9l bnRyeShpbm9kZS0+aV9kZW50cnkuZmlyc3QsIHN0cnVjdCBkZW50cnksIGRf YWxpYXMpOw0KKyNlbHNlDQorICAgIGRlbnRyeSA9IGhsaXN0X2VudHJ5KGlu b2RlLT5pX2RlbnRyeS5maXJzdCwgc3RydWN0IGRlbnRyeSwgZF91LmRfYWxp YXMpOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQk1TRywg KCJubnBmc19tZXNzYWdlX2luc3RhbGxhdHRyIG5hbWU6JXNcbiIsDQogCQkg ICAgICAgZGVudHJ5LT5kX25hbWUubmFtZSkpOw0KQEAgLTM5NiwxNyArNDI4 LDM1IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbGRhdGEoc3RydWN0IG5ucGZz ICoNCiBzdGF0aWMgdm9pZA0KIGNsZWFyX2FsbF9jaGlsZHJlbiAoc3RydWN0 IGlub2RlICppbm9kZSwgaW50IHBhcmVudCkNCiB7DQorICAgIHN0cnVjdCBk ZW50cnkgKmRlbnRyeTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmFs aWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7DQor I2VuZGlmDQogDQogIGFnYWluOg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAgIHNwaW5fbG9jaygmZGNh Y2hlX2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5fbG9jaygmaW5vZGUtPmlf bG9jayk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBhbGlhcyA9IGlub2RlLT5pX2Rl bnRyeS5uZXh0Ow0KICAgICB3aGlsZSAoYWxpYXMgIT0gJmlub2RlLT5pX2Rl bnRyeSkgew0KLQlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7DQorI2VsaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAg IGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwgYWxpYXMsICZpbm9kZS0+ aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGhsaXN0X2Zvcl9l YWNoX2VudHJ5KGRlbnRyeSwgJmlub2RlLT5pX2RlbnRyeSwgZF9hbGlhcykg ew0KKyNlbHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwg Jmlub2RlLT5pX2RlbnRyeSwgZF91LmRfYWxpYXMpIHsNCisjZW5kaWYNCiAJ c3RydWN0IGxpc3RfaGVhZCAqc3ViZGlyczsNCiAJc3RydWN0IG5ucGZzX2Rl bnRyeV9kYXRhICp4ZDsNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlkZW50cnkgPSBsaXN0X2VudHJ5 KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisjZW5kaWYNCiAJ aWYgKGRlbnRyeSA9PSBOVUxMKSB7DQogCSAgICBwcmludGsoS0VSTl9FTUVS RyAiTk5QRlMgUGFuaWM6IGRlbnRyeSBpbiBhbGlhcyBsaXN0IGlzIG51bGxc biIpOw0KIAkgICAgYnJlYWs7DQpAQCAtNDIyLDcgKzQ3MiwxMSBAQCBjbGVh cl9hbGxfY2hpbGRyZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsDQogCXN1YmRp cnMgPSBkZW50cnktPmRfc3ViZGlycy5uZXh0Ow0KIAl3aGlsZSAoc3ViZGly cyAhPSAmZGVudHJ5LT5kX3N1YmRpcnMpIHsNCiAJICAgIHN0cnVjdCBsaXN0 X2hlYWQgKnRtcCA9IHN1YmRpcnM7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJICAgIHN0cnVjdCBkZW50 cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRf dS5kX2NoaWxkKTsNCisjZWxzZQ0KKwkgICAgc3RydWN0IGRlbnRyeSAqY2hp bGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF9jaGlsZCk7 DQorI2VuZGlmDQogCSAgICBzdWJkaXJzID0gdG1wLT5uZXh0Ow0KIAkgICAg Tk5QRlNERUIoWERFQk1TRywgKCJjbGVhcl9hbGxfY2hpbGRyZW4gY2hpbGQ6 ICUuKnMgaW5vZGU6ICVwLyVwICINCiAJCQkgICAgICAgImRjb3VudDogJWQg YWxpYXNlczpcbiIsDQpAQCAtNDQyLDE0ICs0OTYsMjQgQEAgY2xlYXJfYWxs X2NoaWxkcmVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIA0KIAkgICAgLyog VGhyb3cgaW1tZWRpYXRlbHkgKi8NCiAJICAgIGlmIChubnBmc19kY291bnQo Y2hpbGQpID09IDApIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMiw2LDM4KQ0KIAkgICAgICAgIHNwaW5fdW5sb2NrKCZk Y2FjaGVfbG9jayk7DQorI2Vsc2UNCisJICAgICAgICBzcGluX3VubG9jaygm aW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQogCQlubnBmc19kX3JlbW92ZShj aGlsZCk7DQogCQlnb3RvIGFnYWluOw0KIAkgICAgfQ0KIAl9DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlh bGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRpZg0KICAgICB9DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAg ICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBz cGluX3VubG9jaygmaW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQogfQ0KIA0K IHN0YXRpYyB2b2lkDQpAQCAtNjA1LDEyICs2NjksMTAgQEAgZ2NfYmxvY2so c3RydWN0IG5ucGZzICpubnBmc3AsDQogICAgIH0NCiANCiAgICAgaWYgKCFu bnBmc19ibG9ja19oYXZlX3AoeG4sIG9mZnNldCkpIHsNCi0jaWYgMCAgIC8q IGhhcHBlbnMgd2hlbiBkYWVtb24gc2VuZHMgc2V2ZXJhbCBtZXNzYWdlcyBm b3Igc2FtZSBibG9jayAqLw0KIAlwcmludGsoS0VSTl9FTUVSRyAiTk5QRlMv Z2NfYmxvY2s6ICINCiAJICAgICAgICJFTk9FTlQgKCVkLCVkLCVkLCVkKSAw eCVsbHhcbiIsIA0KIAkgICAgICAgeG4tPmhhbmRsZS5hLCB4bi0+aGFuZGxl LmIsIHhuLT5oYW5kbGUuYywgeG4tPmhhbmRsZS5kLCANCiAJICAgICAgICh1 bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KTsNCi0jZW5kaWYNCiAJcmV0dXJu IC1FTk9FTlQ7DQogICAgIH0NCiANCkBAIC03MjEsMTIgKzc4MywyMiBAQCBu bnBmc19tZXNzYWdlX3ZlcnNpb24oc3RydWN0IG5ucGZzICpubnBmDQogDQog ICAgIC8qIHNhbml0eSBjaGVjayBiZWZvcmUgd2UgbG9vayBhdCBpdCAqLw0K ICAgICBpZiAoc2l6ZSA9PSBzaXplb2YoKm1lc3NhZ2UpICYmIG1lc3NhZ2Ut PnZlcnNpb24gPT0gTk5QRlNfVkVSU0lPTikgew0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBu YW1laWRhdGEgbmQ7DQorI2Vsc2UNCisJc3RydWN0IHBhdGggcGF0aDsNCisj ZW5kaWYNCiAJaW50IGVycm9yOw0KIA0KIAl1aW50NjRfdCBibG9ja3NpemUg PSBtZXNzYWdlLT5ibG9ja3NpemU7DQogDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRo X2xvb2t1cCgiLiIsIDAsICZuZCk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwllcnJvciA9IGtlcm5f cGF0aCgiLiIsIDAsICZuZC5wYXRoKTsNCisjZWxzZQ0KKwllcnJvciA9IGtl cm5fcGF0aCgiLiIsIDAsICZwYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVycm9y KSB7DQogCSAgICAvKg0KIAkgICAgICogQmFkIGNhY2hlIHJvb3QsIGp1c3Qg cmV0dXJuLg0KQEAgLTczNywxMiArODA5LDIzIEBAIG5ucGZzX21lc3NhZ2Vf dmVyc2lvbihzdHJ1Y3Qgbm5wZnMgKm5ucGYNCiAJCSAgICJubnBmc19tZXNz YWdlX3ZlcnNpb24gZmFpbGVkIHBhdGhfbG9va3VwLCAiDQogCQkgICAiZXJy bm86ICVkXG4iLCBlcnJvcik7DQogCX0gZWxzZSB7DQotCSAgICBubnBmc3At PmNhY2hlcm9vdCA9IG1udGdldChuZC5tbnQpOw0KLQkgICAgbm5wZnNwLT5j YWNoZWRpciA9IGRnZXQobmQuZGVudHJ5KTsNCi0JICAgIHBhdGhfcmVsZWFz ZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDE5LDApDQorCSAgICBubnBmc3AtPmNhY2hlcm9vdCA9IG1udGdl dChuZC5wYXRoLm1udCk7DQorCSAgICBubnBmc3AtPmNhY2hlZGlyID0gZGdl dChuZC5wYXRoLmRlbnRyeSk7DQorCSAgICBwYXRoX3B1dCgmbmQucGF0aCk7 DQorI2Vsc2UNCisJICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50Z2V0KHBh dGgubW50KTsNCisJICAgIG5ucGZzcC0+Y2FjaGVkaXIgPSBkZ2V0KHBhdGgu ZGVudHJ5KTsNCisJICAgIHBhdGhfcHV0KCZwYXRoKTsNCisjZW5kaWYNCiAJ ICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMjkpDQogCSAgICBubnBmc3AtPnVpZCA9IGN1cnJlbnQtPmZzdWlk Ow0KIAkgICAgbm5wZnNwLT5naWQgPSBjdXJyZW50LT5mc2dpZDsNCisjZWxz ZQ0KKyAgICAgICAgICAgIG5ucGZzcC0+dWlkID0gY3VycmVudF9mc3VpZCgp Ow0KKyAgICAgICAgICAgIG5ucGZzcC0+Z2lkID0gY3VycmVudF9mc2dpZCgp Ow0KKyNlbmRpZg0KIA0KIAkgICAgLyogWFhYIHdlIHNob3VsZCB2YWxpZGF0 ZSB0aGVzZSB2YWx1ZXMgKi8NCiAJICAgIG5ucGZzX2Jsb2Nrc2l6ZSA9IGJs b2Nrc2l6ZTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9u bnBmcy9saW51eC9ubnBmc19ub2RlLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4 L25ucGZzX25vZGUuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgv bm5wZnNfbm9kZS5jCTIwMDctMDEtMDMgMTQ6NTI6MDIuMDAwMDAwMDAwICsw MTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX25vZGUuYwky MDE2LTAxLTE0IDE2OjUxOjExLjAwMDAwMDAwMCArMDEwMA0KQEAgLTEzMiw3 ICsxMzIsMTIgQEAgbm5wZnNfc2V0c2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1aW50Ng0KIAlwcmludGsoIm5ucGZzX3NldHNpemU6IHRydW5jYXRpbmcg QDB4JWxsdVxuIiwNCiAJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc2l6 ZSk7DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsOCwwKQ0KIAl2bXRydW5jYXRlKGlub2RlLCBzaXplKTsg LyogWFhYIHJldHZhbCAqLw0KKyNlbHNlDQorCWlmKCFpbm9kZV9uZXdzaXpl X29rKGlub2RlLCBzaXplKSkNCisJICAgIHRydW5jYXRlX3NldHNpemUoaW5v ZGUsIHNpemUpOw0KKyNlbmRpZg0KIAlubnBmc19ibG9ja190cnVuY2F0ZSh4 biwgc2l6ZSk7DQogICAgIH0NCiB9DQpAQCAtMTUwLDkgKzE1NSwxOCBAQCBu bnBmc19hdHRyMmlub2RlKGNvbnN0IHN0cnVjdCBubnBmc19hdHRyDQogCXN0 cnVjdCB0aW1lc3BlYyBub3RpbWUgPSB7MH07DQogDQogCWlub2RlLT5pX21v ZGUgICA9IDA7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTQsMCkNCiAJaW5vZGUtPmlfdWlkICAgID0gMDsNCiAJaW5v ZGUtPmlfZ2lkICAgID0gMDsNCisjZWxzZQ0KKwlpbm9kZS0+aV91aWQgICAg PSBLVUlEVF9JTklUKDApOw0KKwlpbm9kZS0+aV9naWQgICAgPSBLR0lEVF9J TklUKDApOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUtPmlfbmxpbmsgID0gMTsN CisjZWxzZQ0KKwlzZXRfbmxpbmsoaW5vZGUsIDEpOw0KKyNlbmRpZg0KIAlp bm9kZS0+aV9hdGltZSAgPSBub3RpbWU7DQogCWlub2RlLT5pX210aW1lICA9 IG5vdGltZTsNCiAJaW5vZGUtPmlfY3RpbWUgID0gbm90aW1lOw0KQEAgLTE2 OSw3ICsxODMsMTEgQEAgbm5wZnNfYXR0cjJpbm9kZShjb25zdCBzdHJ1Y3Qg bm5wZnNfYXR0cg0KICAgICBpZiAoWEFfVkFMSURfR0lEKGF0dHIpKQ0KIAlp bm9kZS0+aV9naWQgICAgPSBhdHRyLT54YV9naWQ7DQogICAgIGlmIChYQV9W QUxJRF9OTElOSyhhdHRyKSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywyLDApDQogCWlub2RlLT5pX25saW5rICA9IGF0 dHItPnhhX25saW5rOw0KKyNlbHNlDQorCXNldF9ubGluayhpbm9kZSwgYXR0 ci0+eGFfbmxpbmspOw0KKyNlbmRpZg0KICAgICANCiAgICAgaWYgKFhBX1ZB TElEX1NJWkUoYXR0cikpIHsNCiAJbm5wZnNfc2V0c2l6ZShpbm9kZSwgYXR0 ci0+eGFfc2l6ZSk7DQpAQCAtNTEwLDEyICs1MjgsMjQgQEAgbm5wZnNfaGFz X3BhZyhjb25zdCBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeA0KIGludA0KIG5ucGZz X25vZGVfdXNlcnMoc3RydWN0IGlub2RlICppbm9kZSkNCiB7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7DQorI2Vsc2UNCisgICAgc3RydWN0 IGhsaXN0X25vZGUgKnBvczsNCisjZW5kaWYNCiAgICAgaW50IHVzZXJzID0g MDsNCiAgICAgDQogICAgIC8qIFhYWCB0aGlzIHNob3VsZCBwcm9iYWJseSBi ZSBwcm90ZWN0ZWQgc29tZWhvdyAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgbGlzdF9mb3JfZWFj aChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZWxzZQ0KKyAgICBobGlz dF9mb3JfZWFjaChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZW5kaWYN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx OSwwKQ0KIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBsaXN0X2VudHJ5KHBv cywgc3RydWN0IGRlbnRyeSwgZF9hbGlhcyk7DQorI2Vsc2UNCisJc3RydWN0 IGRlbnRyeSAqZGVudHJ5ID0gbGlzdF9lbnRyeShwb3MsIHN0cnVjdCBkZW50 cnksIGRfdS5kX2FsaWFzKTsNCisjZW5kaWYNCiAJaWYgKG5ucGZzX2Rjb3Vu dChkZW50cnkpID4gMSkNCiAJICAgIHVzZXJzKys7DQogICAgIH0NCmRpZmYg LXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBm c19zeXNjYWxscy5jIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19zeXNj YWxscy5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19z eXNjYWxscy5jCTIwMDctMDEtMDMgMTU6MjY6MjcuMDAwMDAwMDAwICswMTAw DQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLmMJ MjAxNi0wMi0xNiAxNjo1ODoxMC4wMDAwMDAwMDAgKzAxMDANCkBAIC00Miw3 ICs0Miw5IEBADQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX3N5c2NhbGxzLmg+ DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2NvbW1vbi5oPg0KICNpbmNsdWRl IDxsaW51eC9maWxlLmg+DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAjaW5jbHVkZSA8bGludXgvc21wX2xv Y2suaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8bGludXgvc21wLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCiANCkBAIC01MCw2ICs1MiwxMSBA QA0KICNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPg0KICNlbmRpZg0KIA0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMyw3 LDApDQorI3VuZGVmIFNZU0NBTExIQUNLDQorLyogdGhlIG1ldGhvZCB0byBy ZWFkICdsb3dlcl9ib3VuZCcgZG9lcyBub3Qgd29yayBvbiBrZXJuZWwgMy43 IGFuZCBsYXRlciwgc2Ugbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jICovDQor I2VuZGlmDQorDQogI2lmIDANCiAjaWZkZWYgQ09ORklHX0NPTVBBVA0KICNp bmNsdWRlIDxsaW51eC9pb2N0bDMyLmg+DQpAQCAtNjQsNyArNzEsNyBAQA0K ICN1bmRlZiBORUVEX1ZJQ0VJT0NUTDMyDQogDQogI2lmZGVmIFJDU0lEDQot UkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMuYyx2IDEuMTIyIDIwMDcvMDEv MDMgMTQ6MjY6MjcgdG9sIEV4cCAkIik7DQorUkNTSUQoIiRJZDogbm5wZnNf c3lzY2FsbHMuYyx2IDEuMTI1IDIwMTAvMDgvMDggMjA6NDM6MDYgdG9sIEV4 cCAkIik7DQogI2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBwcm9jX2Rpcl9l bnRyeSAqbm5wZnNfcHJvY2ZzX2RpcjsNCkBAIC04MiwxMiArODksMjIgQEAg dHlwZWRlZiBzdHJ1Y3QgYWZzcHJvY2RhdGEgew0KICAgICB1bnNpZ25lZCBs b25nIHN5c2NhbGw7DQogfSBhZnNwcm9jZGF0YTsNCiANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KIHN0YXRp YyBpbnQNCiBubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGZpbGUgKmZpbGUsDQogCQkgICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZyk7DQorI2Vsc2UNCitzdGF0aWMgbG9uZw0K K25ucGZzX3Byb2Nmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCisJCSAg IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsNCisjZW5k aWYNCiANCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19w cm9jZnNfZm9wcyA9IHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMiw2LDM2KQ0KICAgICAuaW9jdGwgPSBubnBmc19wcm9j ZnNfaW9jdGwsDQorI2Vsc2UNCisgICAgLnVubG9ja2VkX2lvY3RsID0gbm5w ZnNfcHJvY2ZzX2lvY3RsLA0KKyNlbmRpZg0KIH07DQogDQogDQpAQCAtMTQ3 LDUzICsxNjQsNDggQEAgc3RhdGljIGludCBubnBmc19zZWNfcmVnaXN0ZXJl ZCA9IDA7DQogI2RlZmluZSBTRUMyUEFHKHMpIChubnBmc19wYWdfdCkodW5z aWduZWQgbG9uZykocykNCiAjZGVmaW5lIFBBRzJTRUMocCkgKHZvaWQgKiko dW5zaWduZWQgbG9uZykocCkNCiANCi1zdGF0aWMgaW50DQotbm5wZnNfc2Vj X3Rhc2tfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQ0KLXsNCi0gICAg bm5wZnNfcGFnX3QgcGFnID0gU0VDMlBBRyhjdXJyZW50LT5zZWN1cml0eSk7 DQotICAgIGlmIChwYWcpDQotCXAtPnNlY3VyaXR5ID0gUEFHMlNFQyhwYWcp Ow0KLSAgICByZXR1cm4gMDsNCi19DQotDQotc3RhdGljIHZvaWQNCi1ubnBm c19zZWNfdGFza19mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCi17DQot ICAgIG5ucGZzX3BhZ190IHBhZyA9IFNFQzJQQUcocC0+c2VjdXJpdHkpOw0K LSAgICBpZiAocGFnKQ0KLQlwLT5zZWN1cml0eSA9IE5VTEw7DQotfQ0KLQ0K IHN0YXRpYyBubnBmc19wYWdfdA0KIG5ucGZzX2dldF9wYWdfc2VjKHZvaWQp DQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KICAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFHKGN1 cnJlbnQtPnNlY3VyaXR5KTsNCisjZWxzZQ0KKyAgICBubnBmc19wYWdfdCBw YWcgPSBTRUMyUEFHKGN1cnJlbnRfc2VjdXJpdHkoKSk7DQorI2VuZGlmDQog ICAgIGlmIChwYWcpDQogCXJldHVybiBwYWc7DQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIHJl dHVybiBjdXJyZW50LT51aWQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KKyAgICByZXR1cm4gY3VycmVu dF91aWQoKTsNCisjZWxzZQ0KKyAgICB7IGt1aWRfdCBrdWlkID0gY3VycmVu dF91aWQoKTsgcmV0dXJuIGt1aWQudmFsOyB9DQorI2VuZGlmDQogfQ0KIA0K IHN0YXRpYyBpbnQNCiBubnBmc19zZXRfcGFnX3NlYyh2b2lkKQ0KIHsNCiAg ICAgc3RhdGljIG5ucGZzX3BhZ190IHBhZ251bSA9IE5OUEZTX1BBR19MTElN Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04o Miw2LDI5KQ0KKyAgICBzdHJ1Y3QgY3JlZCAqY3JlZDsNCisjZW5kaWYNCiAN CiAgICAgaWYgKHBhZ251bSA9PSBOTlBGU19QQUdfVUxJTSkNCiAJcmV0dXJu IC1FTk9NRU07DQogICAgIC8qIHBhZ251bSA9IE5OUEZTX1BBR19MTElNOyAq Lw0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgY3VycmVudC0+c2VjdXJpdHkgPSBQQUcy U0VDKHBhZ251bSk7DQorI2Vsc2UNCisgICAgY3JlZCA9IChzdHJ1Y3QgY3Jl ZCAqKSBjdXJyZW50LT5jcmVkOw0KKyAgICBjcmVkLT5zZWN1cml0eSA9IFBB RzJTRUMocGFnbnVtKTsNCisjZW5kaWYNCiAgICAgcGFnbnVtKys7DQogICAg IHJldHVybiAwOw0KIH0NCiANCi1zdGF0aWMgc3RydWN0IHNlY3VyaXR5X29w ZXJhdGlvbnMgbm5wZnNfc2VjX29wcyA9IHsNCi0gICAgLnRhc2tfYWxsb2Nf c2VjdXJpdHkgPSBubnBmc19zZWNfdGFza19hbGxvYywNCi0gICAgLnRhc2tf ZnJlZV9zZWN1cml0eSA9IG5ucGZzX3NlY190YXNrX2ZyZWUsDQotLy8gICAg LnRhc2tfcmVwYXJlbnRfdG9faW5pdCA9IG5ucGZzX3NlY19yZXBhcmVudF90 b19pbml0LA0KLX07DQotDQogI2VuZGlmIC8qIENPTkZJR19TRUNVUklUWSAq Lw0KIA0KICNpZmRlZiBHUk9VUFBBR1MNCkBAIC0yMDYsNyArMjE4LDEyIEBA IGZpbmRfcGFnKHN0cnVjdCBncm91cF9pbmZvICpnaSkNCiAgICAgTk5QRlNE RUIoWERFQlNZUywgKCJmaW5kX3BhZzogbmdyb3VwcyA9ICVkXG4iLCBnaS0+ bmdyb3VwcykpOw0KIA0KICAgICBmb3IgKGkgPSBnaS0+bmdyb3VwcyAtIDE7 IGkgPj0gMDsgaS0tKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJZ2lkX3QgZ3JvdXAgPSBHUk9VUF9B VChnaSwgaSk7DQorI2Vsc2UNCisJa2dpZF90IGtncm91cCA9IEdST1VQX0FU KGdpLCBpKTsNCisJZ2lkX3QgZ3JvdXAgPSBrZ3JvdXAudmFsOw0KKyNlbmRp Zg0KIAlpZiAoKG5ucGZzX3BhZ190KWdyb3VwID49IE5OUEZTX1BBR19MTElN ICYmIChubnBmc19wYWdfdClncm91cCA8IE5OUEZTX1BBR19VTElNKSB7DQog CSAgICBOTlBGU0RFQihYREVCU1lTLA0KIAkJICAgICAoImZpbmRfcGFnOiBF eGlzdGluZyBwYWcgJXUgYXQgcG9zICV1XG4iLCBncm91cCwgaSkpOw0KQEAg LTIyMiwxNSArMjM5LDMxIEBAIGZpbmRfcGFnKHN0cnVjdCBncm91cF9pbmZv ICpnaSkNCiBzdGF0aWMgbm5wZnNfcGFnX3QNCiBubnBmc19nZXRfcGFnX2dy b3VwKHZvaWQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAq Z2kgPSBjdXJyZW50LT5ncm91cF9pbmZvOw0KICAgICBubnBmc19wYWdfdCBy ZXQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgc3RydWN0IGdyb3Vw X2luZm8gKmdpID0gZ2V0X2N1cnJlbnRfZ3JvdXBzKCk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAg bm5wZnNfcGFnX3QgcmV0ID0gY3VycmVudF91aWQoKTsNCisjZWxzZQ0KKyAg ICBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7DQorICAgIG5ucGZzX3Bh Z190IHJldCA9IGt1aWQudmFsOw0KKyNlbmRpZg0KKyNlbmRpZg0KICAgICBp bnQgaTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgZ2V0X2dyb3VwX2luZm8oZ2kpOw0KKyNl bmRpZg0KIA0KICAgICBpID0gZmluZF9wYWcoZ2kpOw0KICAgICBpZiAoaSAh PSBOTlBGU19QQUdfTk9URk9VTkQpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJcmV0ID0gR1JPVVBfQVQo Z2ksIGkpOw0KKyNlbHNlDQorCXsga2dpZF90IGtnaWQgPSBHUk9VUF9BVChn aSwgaSk7IHJldCA9IGtnaWQudmFsOyB9DQorI2VuZGlmDQogDQogICAgIHB1 dF9ncm91cF9pbmZvKGdpKTsNCiANCkBAIC0yNDIsMTMgKzI3NSwxOSBAQCBu bnBmc19nZXRfcGFnX2dyb3VwKHZvaWQpDQogc3RhdGljIGludA0KIHN0b3Jl X3BhZyhubnBmc19wYWdfdCBwYWdudW0pDQogew0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBzdHJ1 Y3QgZ3JvdXBfaW5mbyAqb2xkX2dpID0gY3VycmVudC0+Z3JvdXBfaW5mbzsN CisjZWxzZQ0KKyAgIHN0cnVjdCBncm91cF9pbmZvICpvbGRfZ2kgPSBnZXRf Y3VycmVudF9ncm91cHMoKTsNCisjZW5kaWYNCiAgICAgc3RydWN0IGdyb3Vw X2luZm8gKm5ld19naTsNCi0gICAgaW50IG5ibG9ja3MsIGNvdW50Ow0KKyAg ICB1bnNpZ25lZCBpbnQgbmJsb2NrcywgY291bnQ7DQogICAgIGludCBmb3Vu ZCA9IDA7DQogICAgIGludCBpLCBrOw0KICAgICANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkgICAgDQogICAg IGdldF9ncm91cF9pbmZvKG9sZF9naSk7DQorI2VuZGlmDQogDQogICAgIGkg PSBmaW5kX3BhZyhvbGRfZ2kpOw0KICAgICBpZiAoaSAhPSBOTlBGU19QQUdf Tk9URk9VTkQpDQpAQCAtMjc0LDEwICszMTMsMTcgQEAgc3RvcmVfcGFnKG5u cGZzX3BhZ190IHBhZ251bSkNCiAJY291bnQgLT0gTkdST1VQU19QRVJfQkxP Q0s7DQogICAgIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxNCwwKQ0KICAgICBpZiAoZm91bmQpDQogCUdST1VQ X0FUKG5ld19naSwgaSkgPSBwYWdudW07DQogICAgIGVsc2UNCiAJR1JPVVBf QVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91cHMgLSAxKSA9IHBhZ251bTsNCisj ZWxzZQ0KKyAgICBpZiAoZm91bmQpDQorCXsga2dpZF90IGtnaWQgPSBLR0lE VF9JTklUKHBhZ251bSk7IEdST1VQX0FUKG5ld19naSwgaSkgPSBrZ2lkOyB9 DQorICAgIGVsc2UNCisJeyBrZ2lkX3Qga2dpZCA9IEtHSURUX0lOSVQocGFn bnVtKTsgR1JPVVBfQVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91cHMgLSAxKSA9 IGtnaWQ7IH0NCisjZW5kaWYNCiAgICAgDQogICAgIHNldF9jdXJyZW50X2dy b3VwcyhuZXdfZ2kpOw0KICAgICBwdXRfZ3JvdXBfaW5mbyhuZXdfZ2kpOw0K QEAgLTMxNyw3ICszNjMsMTMgQEAgbm5wZnNfZ2V0X3BhZygpDQogICAgIHJl dHVybiBubnBmc19nZXRfcGFnX2dyb3VwKCk7DQogI2VuZGlmIC8qIEdST1VQ UEFHUyAqLw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVM X1ZFUlNJT04oMiw2LDI4KQ0KICAgICByZXR1cm4gY3VycmVudC0+dWlkOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTQsMCkNCisgICAgcmV0dXJuIGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UNCisg ICAgeyBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7IHJldHVybiBrdWlk LnZhbDsgfQ0KKyNlbmRpZg0KIH0NCiANCiBzdGF0aWMgaW5saW5lIGludA0K QEAgLTQyMiw3ICs0NzQsNyBAQCBubnBmc19zZXRncm91cHMxNiAoaW50IGdp ZHNldHNpemUsIG9sZF9nDQogI2VuZGlmIC8qIFNZU0NBTExIQUNLICovDQog I2VuZGlmIC8qIEdST1VQUEFHUyAqLw0KIA0KLXN0cnVjdCBmaWxlX2hhbmRs ZSB7DQorc3RydWN0IG5ucGZzX2ZpbGVfaGFuZGxlIHsNCiAgICAgbm5wZnNf ZGV2X3QgZGV2Ow0KICAgICBpbm9fdCBpbm9kZTsNCiAgICAgX191MzIgZ2Vu Ow0KQEAgLTUwOSwyNiArNTYxLDY1IEBAIG5ucGZzX2RlYnVnX3ByaW50IChz dHJ1Y3QgYXJsYVZpY2VJb2N0bCANCiAgKiBmb2xsb3cgc3ltbGlua3MgaWZm IGBmb2xsb3cnDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiBzdGF0aWMgc3RydWN0IGRlbnRy eSAqDQogdXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAqbmQs IGNoYXIgKnVzZXJfcGF0aCwgaW50IGZvbGxvdykNCisjZWxzZQ0KK3N0YXRp YyBzdHJ1Y3QgZGVudHJ5ICoNCit1c2VyX3BhdGgyZGVudHJ5IChzdHJ1Y3Qg cGF0aCAqcGF0aCwgY2hhciAqdXNlcl9wYXRoLCBpbnQgZm9sbG93KQ0KKyNl bmRpZg0KIHsNCi0gICAgY2hhciAqa25hbWU7DQogICAgIGludCBmbGFncyA9 IDA7DQogICAgIGludCBlcnJvciA9IDA7DQogDQotICAgIGtuYW1lID0gZ2V0 bmFtZSAodXNlcl9wYXRoKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw3LDApDQorICAgIGNoYXIgKmtuYW1lOw0KKyAg ICBrbmFtZSA9IGdldG5hbWUodXNlcl9wYXRoKTsNCisjZWxpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQorICAgIGNv bnN0IGNoYXIgKmtuYW1lOw0KKyAgICBzdHJ1Y3QgZmlsZW5hbWUgKmZuYW1l Ow0KKyAgICBmbmFtZSA9IGdldG5hbWUodXNlcl9wYXRoKTsNCisgICAga25h bWUgPSBmbmFtZS0+bmFtZTsNCisjZWxzZQ0KKyAgICBjaGFyICprbmFtZTsN CisgICAga25hbWUgPSBfX2dldG5hbWUoKTsNCisjZW5kaWYNCisNCiAgICAg aWYgKElTX0VSUihrbmFtZSkpDQogCXJldHVybiBFUlJfUFRSKFBUUl9FUlIo a25hbWUpKTsNCiAgICAgaWYgKGZvbGxvdykNCiAJZmxhZ3MgfD0gTE9PS1VQ X0ZPTExPVzsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDMsMTQsMCkNCisgICAgZXJyb3IgPSBzdHJuY3B5X2Zyb21f dXNlcihrbmFtZSwgdXNlcl9wYXRoLCBQQVRIX01BWCk7DQorICAgIGlmIChl cnJvciA8IDAgfHwgZXJyb3IgPT0gUEFUSF9NQVgpIHsNCisJX19wdXRuYW1l KGtuYW1lKTsNCisJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOw0KKyAgICB9DQor I2VuZGlmDQorDQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfc3lz Y2FsbDogbG9va2luZyB1cDogJXNcbiIsIGtuYW1lKSk7DQogDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAg ICAgZXJyb3IgPSBwYXRoX2xvb2t1cChrbmFtZSwgZmxhZ3MsIG5kKTsNCisj ZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5 LDApDQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1lLCBmbGFncywgJihu ZC0+cGF0aCkpOw0KKyNlbHNlDQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtu YW1lLCBmbGFncywgcGF0aCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KICAgICBwdXRuYW1l KGtuYW1lKTsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49 IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAgX19wdXRuYW1lKGtuYW1l KTsNCisjZW5kaWYNCiAgICAgaWYgKGVycm9yKQ0KIAlyZXR1cm4gRVJSX1BU UihlcnJvcik7DQotICAgIHJldHVybiBuZC0+ZGVudHJ5Ow0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAg IHJldHVybiBuZC0+cGF0aC5kZW50cnk7DQorI2Vsc2UNCisgICAgcmV0dXJu IHBhdGgtPmRlbnRyeTsNCisjZW5kaWYNCiB9DQogDQogYXNtbGlua2FnZSBs b25nDQpAQCAtNTQwLDEyICs2MzEsMjQgQEAgc3lzX2Fmc19pbnQgKGludCBv cGVyYXRpb24sDQogew0KICAgICBsb25nIGVycm9yID0gMDsNCiAgICAgc3Ry dWN0IGFybGFWaWNlSW9jdGwgdmljZV9pb2N0bDsgDQotICAgIHN0cnVjdCBu bnBmc19tZXNzYWdlX3Bpb2N0bCBtc2c7DQorICAgIHN0cnVjdCBubnBmc19t ZXNzYWdlX3Bpb2N0bCAqbXNnID0gTlVMTDsNCiAgICAgc3RydWN0IG5ucGZz X21lc3NhZ2Vfd2FrZXVwICptc2cyOw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkgPSBOVUxMOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBuYW1laWRhdGEgbmQ7 DQorI2Vsc2UNCisgICAgc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCiAg ICAgDQorICAgIG1zZyA9IGttYWxsb2Moc2l6ZW9mKCptc2cpLCBHRlBfS0VS TkVMKTsNCisgICAgaWYgKG1zZyA9PSBOVUxMKQ0KKyAgICAgIHJldHVybiAt RU5PTUVNOw0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigyLDYsMzkpDQogICAgIGxvY2tfa2VybmVsKCk7DQorI2Vsc2UN CisgICAgLyogVE9ETzogbG9ja19rZXJuZWwoKSBpcyByZW1vdmVkLCBjb25z aWRlciBhZGRpbmcgYW4gcHJpdmF0ZSBsb2NrICovDQorI2VuZGlmDQogDQog ICAgIE5OUEZTREVCKFhERUJTWVMsICgic3lzX2FmcyBrZXJuZWwgbG9ja2Vk XG4iKSk7DQogDQpAQCAtNTc1LDcgKzY3OCw3IEBAIHN5c19hZnNfaW50IChp bnQgb3BlcmF0aW9uLA0KIAkgICAgZ290byB1bmxvY2s7DQogCX0NCiAJaWYg KHZpY2VfaW9jdGwuaW5fc2l6ZSAhPSAwKSB7DQotCSAgICBpZihjb3B5X2Zy b21fdXNlcigmbXNnLm1zZywNCisJICAgIGlmKGNvcHlfZnJvbV91c2VyKCZt c2ctPm1zZywNCiAJCQkgICAgICB2aWNlX2lvY3RsLmluLA0KIAkJCSAgICAg IHZpY2VfaW9jdGwuaW5fc2l6ZSkgIT0gMCkgew0KIAkJZXJyb3IgPSAtRUZB VUxUOw0KQEAgLTU4Myw3ICs2ODYsMTEgQEAgc3lzX2Fmc19pbnQgKGludCBv cGVyYXRpb24sDQogCSAgICB9DQogCX0NCiAJaWYgKGFfcGF0aFAgIT0gTlVM TCkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDE5LDApDQogCSAgICBkZW50cnkgPSB1c2VyX3BhdGgyZGVudHJ5ICgm bmQsIGFfcGF0aFAsIGFfZm9sbG93U3ltbGlua3MpOw0KKyNlbHNlDQorCSAg ICBkZW50cnkgPSB1c2VyX3BhdGgyZGVudHJ5ICgmcGF0aCwgYV9wYXRoUCwg YV9mb2xsb3dTeW1saW5rcyk7DQorI2VuZGlmDQogCSAgICBpZiAoIWRlbnRy eSkgew0KIAkJZXJyb3IgPSAtRUlOVkFMOw0KIAkJZ290byB1bmxvY2s7DQpA QCAtNjI4LDE5ICs3MzUsMjMgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRp b24sDQogCQllcnJvciA9IC1FSU5WQUw7DQogCQlnb3RvIHVubG9jazsNCiAJ ICAgIH0NCi0JICAgIG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwkgICAg bXNnLT5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KIAl9DQogDQotCW1zZy5oZWFk ZXIub3Bjb2RlID0gTk5QRlNfTVNHX1BJT0NUTDsNCi0JbXNnLm9wY29kZSA9 IGFfb3Bjb2RlOw0KKwltc2ctPmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0df UElPQ1RMOw0KKwltc2ctPm9wY29kZSA9IGFfb3Bjb2RlOw0KIAkNCi0JbXNn Lmluc2l6ZSAgID0gdmljZV9pb2N0bC5pbl9zaXplOw0KLQltc2cub3V0c2l6 ZSAgPSB2aWNlX2lvY3RsLm91dF9zaXplOw0KLQltc2cuY3JlZC51aWQgPSBj dXJyZW50LT51aWQ7DQotCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWco KTsNCisJbXNnLT5pbnNpemUgICA9IHZpY2VfaW9jdGwuaW5fc2l6ZTsNCisJ bXNnLT5vdXRzaXplICA9IHZpY2VfaW9jdGwub3V0X3NpemU7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQor CW1zZy0+Y3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAg ICAgIG1zZy0+Y3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0K Kwltc2ctPmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAkNCi0JZXJy b3IgPSBubnBmc19tZXNzYWdlX3JwYygmbm5wZnNbMF0sICZtc2cuaGVhZGVy LCBzaXplb2YobXNnKSk7IC8qIFhYWCAqLw0KLQltc2cyID0gKHN0cnVjdCBu bnBmc19tZXNzYWdlX3dha2V1cCAqKSAmbXNnOw0KKwllcnJvciA9IG5ucGZz X21lc3NhZ2VfcnBjKCZubnBmc1swXSwgJm1zZy0+aGVhZGVyLCBzaXplb2Yo Km1zZykpOyAvKiBYWFggKi8NCisJbXNnMiA9IChzdHJ1Y3Qgbm5wZnNfbWVz c2FnZV93YWtldXAgKikgbXNnOw0KIAlpZiAoZXJyb3IgPT0gMCkNCiAJICAg IGVycm9yID0gbXNnMi0+ZXJyb3I7DQogDQpAQCAtNjc1LDEyICs3ODYsMjEg QEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogICAgIA0KICB1bmxv Y2s6DQogICAgIGlmIChkZW50cnkpDQotCXBhdGhfcmVsZWFzZSgmbmQpOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5 LDApDQorCXBhdGhfcHV0KCZuZC5wYXRoKTsNCisjZWxzZQ0KKwlwYXRoX3B1 dCgmcGF0aCk7DQorI2VuZGlmDQogDQogICAgIE5OUEZTREVCKFhERUJTWVMs ICgibm5wZnNfc3lzY2FsbCByZXR1cm5zIGVycm9yOiAlbGRcbiIsIGVycm9y KSk7DQogDQogICAgIE5OUEZTREVCKFhERUJTWVMsICgic3lzX2FmcyBrZXJu ZWwgdW5sb2NrXG4iKSk7DQorICAgIGtmcmVlKG1zZyk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAg dW5sb2NrX2tlcm5lbCgpOw0KKyNlbHNlDQorICAgIC8qIFRPRE86IHNlZSB0 aGUgY29tbWVudCBhdCBsb2NrX2tlcm5lbCgpIGFib3ZlICovDQorI2VuZGlm DQogDQogICAgIHJldHVybiBlcnJvcjsNCiB9DQpAQCAtNzI5LDkgKzg0OSwx NSBAQCBzeXNfYWZzIChpbnQgb3BlcmF0aW9uLA0KIAkJICAgICAgIGFfZm9s bG93U3ltbGlua3MpOw0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KIHN0YXRpYyBpbnQNCiBubnBm c19wcm9jZnNfaW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp bGUgKmZpbGUsDQogCQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZykNCisjZWxzZQ0KK3N0YXRpYyBsb25nDQorbm5wZnNfcHJvY2Zz X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLA0KKwkJICAgdW5zaWduZWQgaW50 IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQorI2VuZGlmDQogew0KICAgICBh ZnNwcm9jZGF0YSBhcmdzOw0KICAgICBsb25nIHJldDsNCkBAIC03ODAsMjEg KzkwNiwzMSBAQCBzdGF0aWMgaW50IG5ucGZzX2luaXRfcHJvY2ZzKHZvaWQp DQogew0KICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKmVudHJ5Ow0KICAg ICANCi0gICAgbm5wZnNfcHJvY2ZzX2RpciA9IHByb2NfbWtkaXIoTk5QRlNf UFJPQ19ESVIsIHByb2Nfcm9vdF9mcyk7DQorICAgIG5ucGZzX3Byb2Nmc19k aXIgPSBwcm9jX21rZGlyKCJmcy8iIE5OUEZTX1BST0NfRElSLCBOVUxMKTsN CiAgICAgaWYgKG5ucGZzX3Byb2Nmc19kaXIgPT0gTlVMTCkNCiAJcmV0dXJu IC1FTk9NRU07DQogICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigyLDYsMzApDQogICAgIG5ucGZzX3Byb2Nmc19kaXIt Pm93bmVyID0gVEhJU19NT0RVTEU7DQorI2VuZGlmDQogICAgIA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEwLDApDQog ICAgIGVudHJ5ID0gY3JlYXRlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19OT0RF LCAwNjY2LCBubnBmc19wcm9jZnNfZGlyKTsNCisjZWxzZQ0KKyAgICBlbnRy eSA9IHByb2NfY3JlYXRlKE5OUEZTX1BST0NfTk9ERSwgMDY2NiwgTlVMTCwg Jm5ucGZzX3Byb2Nmc19mb3BzKTsNCisjZW5kaWYNCiAgICAgaWYgKGVudHJ5 ID09IE5VTEwpIHsNCiAJTk5QRlNERUIoWERFQlNZUywgKCJubnBmc19pbml0 X3Byb2Nmczogbm8gbm9kZVxuIikpOw0KLQlyZW1vdmVfcHJvY19lbnRyeShO TlBGU19QUk9DX0RJUiwgcHJvY19yb290X2ZzKTsNCisJcmVtb3ZlX3Byb2Nf ZW50cnkoImZzLyIgTk5QRlNfUFJPQ19ESVIsIE5VTEwpOw0KIAlyZXR1cm4g LUVOT01FTTsNCiAgICAgfQ0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDMwKQ0KICAgICBlbnRyeS0+b3du ZXIgPSBUSElTX01PRFVMRTsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMCwwKQ0KICAgICBlbnRyeS0+ cHJvY19mb3BzID0gJm5ucGZzX3Byb2Nmc19mb3BzOw0KKyNlbmRpZg0KIA0K ICNpZmRlZiBTWVNDQUxMQ09NUEFUDQogICAgIGlmIChyZWdpc3Rlcl9pb2N0 bDMyX2NvbnZlcnNpb24oQVJMQV9WSU9DX1NZU0NBTEwzMiwgbm5wZnNfcHJv Y2ZzX2lvY3RsMzIpKSB7DQpAQCAtODE1LDcgKzk1MSw3IEBAIHN0YXRpYyB2 b2lkIG5ucGZzX2V4aXRfcHJvY2ZzKHZvaWQpDQogICAgIH0NCiAjZW5kaWYg LyogU1lTQ0FMTENPTVBBVCAqLw0KICAgICByZW1vdmVfcHJvY19lbnRyeShO TlBGU19QUk9DX05PREUsIG5ucGZzX3Byb2Nmc19kaXIpOw0KLSAgICByZW1v dmVfcHJvY19lbnRyeShOTlBGU19QUk9DX0RJUiwgcHJvY19yb290X2ZzKTsN CisgICAgcmVtb3ZlX3Byb2NfZW50cnkoImZzLyIgTk5QRlNfUFJPQ19ESVIs IE5VTEwpOw0KIH0NCiANCiAjaWZkZWYgR1JPVVBQQUdTDQpAQCAtODM5LDE0 ICs5NzUsNiBAQCBpbnN0YWxsX3NldGdyb3Vwcyh2b2lkKQ0KIHZvaWQNCiBp bnN0YWxsX2Fmc19zeXNjYWxsKHZvaWQpDQogew0KLSNpZmRlZiBDT05GSUdf U0VDVVJJVFkNCi0gICAgaWYgKHJlZ2lzdGVyX3NlY3VyaXR5KCZubnBmc19z ZWNfb3BzKSkNCi0JTk5QRlNERUIoWERFQlNZUywNCi0JCSAoImluc3RhbGxf YWZzX3N5c2NhbGw6IG5ucGZzX2luaXRfc2VjIGZhaWxlZFxuIikpOw0KLSAg ICBlbHNlDQotCW5ucGZzX3NlY19yZWdpc3RlcmVkID0gMTsNCi0jZW5kaWYN Ci0NCiAgICAgbm5wZnNfaW5pdF9wcm9jZnMoKTsNCiANCiAjaWZkZWYgU1lT Q0FMTEhBQ0sNCkBAIC04ODcsMTIgKzEwMTUsNiBAQCByZXN0b3JlX2Fmc19z eXNjYWxsICh2b2lkKQ0KICNlbmRpZg0KICNlbmRpZiAvKiBTWVNDQUxMSEFD SyAqLw0KIA0KLSNpZmRlZiBDT05GSUdfU0VDVVJJVFkNCi0gICAgaWYgKG5u cGZzX3NlY19yZWdpc3RlcmVkKQ0KLQlpZiAodW5yZWdpc3Rlcl9zZWN1cml0 eSgmbm5wZnNfc2VjX29wcykpDQotCSAgICBwcmludGsoS0VSTl9FTUVSRyAi bm5wZnNfZXhpdF9zZWM6IGNvdWxkbid0IHVucmVnaXN0ZXJcbiIpOw0KLSNl bmRpZiAvKiAhQ09ORklHX1NFQ1VSSVRZICovDQotDQogI2lmZGVmIEdST1VQ UEFHUw0KICNpZmRlZiBTWVNDQUxMSEFDSw0KICAgICBpZiAob2xkX3NldGdy b3Vwcykgew0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL25u cGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jDQotLS0gYXJs YS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdl LmMJMjAwNi0xMi0xMSAxNzozMTo0NS4wMDAwMDAwMDAgKzAxMDANCisrKyBh cmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5j CTIwMTYtMDEtMTMgMjE6NTE6NDkuMDAwMDAwMDAwICswMTAwDQpAQCAtNDcs MTEgKzQ3LDIwIEBADQogI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPg0KIA0K ICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZzX3N5c2NhbGxzLWxv c3NhZ2UuYyx2IDEuMTcgMjAwNi8xMi8xMSAxNjozMTo0NSB0b2wgRXhwICQi KTsNCitSQ1NJRCgiJElkOiBubnBmc19zeXNjYWxscy1sb3NzYWdlLmMsdiAx LjE5IDIwMTAvMDgvMDggMjA6NDM6MDUgdG9sIEV4cCAkIik7DQorI2VuZGlm DQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigzLDcsMCkNCisvKiB0aGUgbWV0aG9kIHRvIHJlYWQgJ2xvd2VyX2JvdW5k JyBkb2VzIG5vdCB3b3JrIG9uIGtlcm5lbCAzLjcgYW5kIGxhdGVyICovDQor I3VuZGVmIFNZU0NBTExIQUNLDQogI2VuZGlmDQogDQogI2luY2x1ZGUgPGxp bnV4L2thbGxzeW1zLmg+DQorI2lmZGVmIFNZU0NBTExIQUNLDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KIHN0 YXRpYyB2b2lkICpsb3dlcl9ib3VuZCA9ICZrZXJuZWxfdGhyZWFkOw0KKyNl bmRpZg0KKyNlbmRpZg0KIA0KIHZvaWQgKiBfX2F0dHJpYnV0ZV9fKCh3ZWFr KSkgc3lzX2NhbGxfdGFibGUodm9pZCk7DQogbm5wZnNfc3lzX2NhbGxfZnVu Y3Rpb24gKm5ucGZzX3N5c19jYWxsX3RhYmxlID0NCkBAIC02Myw2ICs3Miwx MSBAQCBjb25zdCBjaGFyICogX19hdHRyaWJ1dGVfXygod2VhaykpDQogCQkg ICAgdW5zaWduZWQgbG9uZyAqb2Zmc2V0LA0KIAkJICAgIGNoYXIgKiptb2Ru YW1lLCBjaGFyICpuYW1lYnVmKTsNCiANCisjaWZkZWYgX194ODZfNjRfXw0K K2V4dGVybiByd2xvY2tfdCB0YXNrbGlzdF9sb2NrIF9fYXR0cmlidXRlX18o KHdlYWspKTsNCisjZW5kaWYNCisNCisjaWZkZWYgU1lTQ0FMTEhBQ0sNCiBz dGF0aWMgdm9pZCAqKg0KIGdldF9zdGFydF9hZGRyKHZvaWQpIHsNCiAjaWZk ZWYgX194ODZfNjRfXw0KQEAgLTcxLDYgKzg1LDcgQEAgZ2V0X3N0YXJ0X2Fk ZHIodm9pZCkgew0KICAgICByZXR1cm4gKHZvaWQgKiopJm11dGV4X2xvY2s7 DQogI2VuZGlmDQogfQ0KKyNlbmRpZg0KIA0KIHN0YXRpYyBpbmxpbmUgaW50 IA0KIGthbGxzeW1faXNfZXF1YWwodW5zaWduZWQgbG9uZyBhZGRyLCBjb25z dCBjaGFyICpuYW1lKQ0KQEAgLTEzOSw2ICsxNTQsOCBAQCB2ZXJpZnkodm9p ZCAqKnApIHsNCiAgICAgcmV0dXJuIDE7DQogfQ0KIA0KKyNpZmRlZiBTWVND QUxMSEFDSw0KKw0KIHN0YXRpYyBpbmxpbmUgaW50IGxvb2tzX2dvb2Qodm9p ZCAqKnApDQogew0KICAgICBpZiAoKnAgPD0gKHZvaWQqKWxvd2VyX2JvdW5k IHx8ICpwID49ICh2b2lkKilwKQ0KQEAgLTE4OCwzICsyMDUsNSBAQCBubnBm c19maXh1cF9zeXNjYWxsX2xvc3NhZ2Uodm9pZCkNCiANCiAgICAgcmV0dXJu IDA7DQogfQ0KKw0KKyNlbmRpZg0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxh LTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jIGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmc192ZnNvcHMuYw0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfdmZzb3BzLmMJMjAwNi0xMi0xMSAxNzo0 MzozNS4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvbGlu dXgvbm5wZnNfdmZzb3BzLmMJMjAxNi0wMi0xNCAwMTozNjowNi4wMDAwMDAw MDAgKzAxMDANCkBAIC00NCwzMCArNDQsMjYgQEANCiAjaW5jbHVkZSA8bGlu dXgvbW0uaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBubnBm c192ZnNvcHMuYyx2IDEuMTA5IDIwMDYvMTIvMTEgMTY6NDM6MzUgdG9sIEV4 cCAkIik7DQorUkNTSUQoIiRJZDogbm5wZnNfdmZzb3BzLmMsdiAxLjExMSAy MDEwLzA4LzA4IDIwOjQzOjA2IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0KIA0K IHN0cnVjdCBubnBmcyBubnBmc1tOTk5QRlNdOw0KIA0KLXN0YXRpYyB2b2lk IG5ucGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7DQogc3Rh dGljIHZvaWQgbm5wZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IpOw0KLXN0YXRpYyB2b2lkIG5ucGZzX3B1dF9pbm9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHZvaWQgbm5wZnNfd3JpdGVfc3Vw ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpOw0KKyNlbmRpZg0KIA0KLSNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4 KQ0KIHN0YXRpYyBpbnQgbm5wZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRl bnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7DQotI2Vsc2UNCi1zdGF0aWMg aW50IG5ucGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1 Y3Qga3N0YXRmcyAqYnVmKTsNCi0jZW5kaWYNCiANCiBzdGF0aWMgc3RydWN0 IHN1cGVyX29wZXJhdGlvbnMgbm5wZnNfc29wcyA9IHsgDQotICAgIHJlYWRf aW5vZGUJCTogbm5wZnNfcmVhZF9pbm9kZSwNCi0gICAgcHV0X2lub2RlCQk6 IG5ucGZzX3B1dF9pbm9kZSwNCiAgICAgYWxsb2NfaW5vZGUJCTogbm5wZnNf bm9kZV9hbGxvYywNCiAgICAgZGVzdHJveV9pbm9kZQk6IG5ucGZzX25vZGVf ZnJlZSwNCiAgICAgZHJvcF9pbm9kZQkJOiBnZW5lcmljX2RlbGV0ZV9pbm9k ZSwNCiAgICAgcHV0X3N1cGVyCQk6IG5ucGZzX3B1dF9zdXBlciwNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQog ICAgIHdyaXRlX3N1cGVyCQk6IG5ucGZzX3dyaXRlX3N1cGVyLA0KKyNlbmRp Zg0KICAgICBzdGF0ZnMJCTogbm5wZnNfc3RhdGZzLA0KIH07DQogDQpAQCAt OTQsNyArOTAsMTEgQEAgbm5wZnNfZmV0Y2hfcm9vdChzdHJ1Y3QgaW5vZGUg KmkpDQogCSAqIHJvb3QncyBwcml2aWxpZ2VzICh1c3VhbGx5IG5vbmUsIGFu ZCBub25lIGlzIG5lZWRlZCkuDQogCSAqLw0KIAkNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KIAltc2cuY3Jl ZC51aWQgPSAwOw0KKyNlbHNlDQorCW1zZy5jcmVkLnVpZCA9IEtVSURUX0lO SVQoMCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IDA7DQogCQ0KIAll cnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIs IHNpemVvZihtc2cpKTsNCkBAIC0xMjksOCArMTI5LDEzIEBAIG1ha2Vfcm9v dF9pbm9kZShzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCkNCiAgICAgWEFfU0VUX01P REUoJm5vZGUuYXR0ciwgU19JRkRJUiB8IDA3NzcpOw0KICAgICBYQV9TRVRf TkxJTksoJm5vZGUuYXR0ciwgMTAwKTsNCiAgICAgWEFfU0VUX1NJWkUoJm5v ZGUuYXR0ciwgMCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTQsMCkNCiAgICAgWEFfU0VUX1VJRCgmbm9kZS5hdHRy LCAwKTsNCiAgICAgWEFfU0VUX0dJRCgmbm9kZS5hdHRyLCAwKTsNCisjZWxz ZQ0KKyAgICBYQV9TRVRfVUlEKCZub2RlLmF0dHIsIEtVSURUX0lOSVQoMCkp Ow0KKyAgICBYQV9TRVRfR0lEKCZub2RlLmF0dHIsIEtHSURUX0lOSVQoMCkp Ow0KKyNlbmRpZg0KICAgICBYQV9TRVRfQVRJTUUoJm5vZGUuYXR0ciwgMCk7 DQogICAgIFhBX1NFVF9NVElNRSgmbm9kZS5hdHRyLCAwKTsNCiAgICAgWEFf U0VUX0NUSU1FKCZub2RlLmF0dHIsIDApOw0KQEAgLTE1OSw3ICsxNjQsMTEg QEAgbWFrZV9yb290IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQ0KICAgICBu bnBmcy0+cm9vdCA9IGlub2RlOw0KIA0KICAgICAvKiBYWFggZXJyb3IgaGFu ZGxpbmcgKi8NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw0LDApDQogICAgIGRwID0gZF9hbGxvY19yb290KGlub2RlKTsN CisjZWxzZQ0KKyAgICBkcCA9IGRfbWFrZV9yb290KGlub2RlKTsNCisjZW5k aWYNCiAgICAgbm5wZnNfZF9pbml0KGRwKTsNCiAgICAgc2ItPnNfcm9vdCA9 IGRwOw0KICAgICByZXR1cm4gMDsNCkBAIC0xODMsMTMgKzE5MiwyNyBAQCBu bnBmc19yZWFkX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzDQogICAg IE5OUEZTREVCKFhERUJWRk9QUywgKCJubnBmc19yZWFkX3N1cGVyOiBiZWdp biBzZXR0aW5nIHZhcmlhYmxlc1xuIikpOw0KIA0KICAgICBpZiAoZGF0YSAh PSBOVUxMKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IG5hbWVpZGF0YSBuZDsNCisjZWxz ZQ0KKwlzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNlbmRpZg0KIAkNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KIAll cnJvciA9IHBhdGhfbG9va3VwKGRhdGEsIDAsICZuZCk7DQorI2VsaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwll cnJvciA9IGtlcm5fcGF0aChkYXRhLCAwLCAmbmQucGF0aCk7DQorI2Vsc2UN CisJZXJyb3IgPSBrZXJuX3BhdGgoZGF0YSwgMCwgJnBhdGgpOw0KKyNlbmRp Zg0KIAlpZiAoZXJyb3IpDQogCSAgICBkZGV2ID0gRVJSX1BUUihlcnJvcik7 DQogCWVsc2UNCi0JICAgIGRkZXYgPSBuZC5kZW50cnk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisJICAg IGRkZXYgPSBuZC5wYXRoLmRlbnRyeTsNCisjZWxzZQ0KKwkgICAgZGRldiA9 IHBhdGguZGVudHJ5Ow0KKyNlbmRpZg0KIA0KIAlpZiAoIUlTX0VSUihkZGV2 KSkgew0KIAkgICAgbWlub3JkZXZpY2UgPSBNSU5PUihkZGV2LT5kX2lub2Rl LT5pX3JkZXYpOw0KQEAgLTIzMyw3ICsyNTYsNyBAQCBubnBmc19maWxsX3N1 cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiDQogICAgIHJldHVybiAwOw0K IH0NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsNiwxOCkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM5KQ0KIGludA0KIG5ucGZzX2dldF9zYihzdHJ1Y3Qg ZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCiAJICAgICBpbnQgZmxhZ3Ms IGNvbnN0IGNoYXIgKmRldl9uYW1lLA0KQEAgLTI0MiwxOSArMjY1LDIyIEBA IG5ucGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnMNCiAg ICAgcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwg bm5wZnNfZmlsbF9zdXBlciwgbW50KTsNCiB9DQogI2Vsc2UNCi1zdHJ1Y3Qg c3VwZXJfYmxvY2sgKg0KLW5ucGZzX2dldF9zYiAoc3RydWN0IGZpbGVfc3lz dGVtX3R5cGUgKmZzX3R5cGUsDQotCSAgICAgIGludCBmbGFncywgY29uc3Qg Y2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpIA0KK3N0cnVjdCBkZW50cnkq DQorbm5wZnNfbW91bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5 cGUsDQorCSAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwN CisJICAgICB2b2lkICpkYXRhKSANCiB7DQotICAgIHJldHVybiBnZXRfc2Jf bm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIp Ow0KKyAgICByZXR1cm4gbW91bnRfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRh dGEsIG5ucGZzX2ZpbGxfc3VwZXIpOw0KIH0NCiAjZW5kaWYNCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQog c3RhdGljIHZvaWQNCiBubnBmc193cml0ZV9zdXBlcihzdHJ1Y3Qgc3VwZXJf YmxvY2sgKiBzYikNCiB7DQogICAgIHNiLT5zX2RpcnQgPSAwOw0KIH0NCisj ZW5kaWYNCiANCiAvKg0KICAqIFhYWCBpcyB0aGlzIGdvb2Q/IA0KQEAgLTI3 Myw3MyArMjk5LDYgQEAgbm5wZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IpDQogICAgIE5OUEZTREVCKFhERUJWRk9QUywgKCJubnBmc19w dXRfc3VwZXIgZXhpdGluZ1xuIikpOw0KIH0NCiANCi1zdGF0aWMgdm9pZA0K LW5ucGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkNCi17DQot ICAgIE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3JlYWRfaW5vZGUgc3Rh cnRpbmcgaW5vZGU6ICVwXG4iLGlub2RlKSk7DQotICAgIE5OUEZTREVCKFhE RUJWRk9QUywoIm5ucGZzX3JlYWRfaW5vZGUgaW5vZGUtPmlfaW5vOiAlbGRc biIsaW5vZGUtPmlfaW5vKSk7DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCi0gICAgaW5vZGUtPmlfYmxrc2l6 ZSA9IDEwMjQ7DQotI2VuZGlmDQotICAgIGlub2RlLT5pX21vZGUgPSAwOw0K LSAgICBpbm9kZS0+aV9vcCA9IE5VTEw7DQotICAgIE5OUEZTREVCKFhERUJW Rk9QUywoIm5ucGZzX3JlYWRfaW5vZGUgZXhpdGluZ1xuIikpOw0KLX0NCi0g DQotLyoNCi0gKiBDYWxsZWQgd2hlbiBgaW5vZGUnIGlzIGRlLXJlZmVyZW5j ZWQsIGllIHdoZW4gaXB1dCBpcyBjYWxsZWQuDQotICovDQotDQotc3RhdGlj IHZvaWQNCi1ubnBmc19wdXRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkN Ci17DQotICAgIHN0cnVjdCBubnBmc19ub2RlICp4biA9IFZOT0RFX1RPX1hO T0RFKGlub2RlKTsNCi0gICAgc3RydWN0IG5ucGZzICpubnBmc3AgPSBOTlBG U19GUk9NX1ZOT0RFKGlub2RlKTsNCi0gICAgaW50IGJhZDsNCi0NCi0gICAg Tk5QRlNERUIoWERFQlZGT1BTLCgibm5wZnNfcHV0X2lub2RlOiBpbm9kZTog JXAgY291bnQ6ICVkIGFsaWFzZXM6IiwNCi0JCQlpbm9kZSwgbm5wZnNfaWNv dW50KGlub2RlKSkpOw0KLSAgICBubnBmc19wcmludF9hbGlhc2VzKGlub2Rl KTsNCi0gICAgDQotICAgIGRvd24oJm5ucGZzcC0+aW5hY3RpdmVfc2VtKTsN Ci0NCi0gICAgaWYgKChubnBmc3AtPnN0YXR1cyAmIE5OUEZTX0RFVk9QRU4p ID09IDApIHsNCi0JaWYgKCFpc19iYWRfaW5vZGUoaW5vZGUpKSB7DQotCSAg ICBpZiAoaW5vZGUgIT0gbm5wZnNwLT5yb290KSB7DQotCQltYWtlX2JhZF9p bm9kZShpbm9kZSk7DQotCQlubnBmc19pcmVsZShpbm9kZSk7IC8qIHNlZSBu bnBmc19ub2RlX2FkZCgpICovDQotCSAgICB9DQotCSAgICB4bi0+ZmxhZ3Mg fD0gTk5QRlNfU1RBTEU7DQotCX0NCi0JYmFkID0gMTsgLyogb3Igcm9vdCwg cmVhbGx5ICovDQotICAgIH0gZWxzZSB7DQotCWJhZCA9IGlzX2JhZF9pbm9k ZShpbm9kZSk7DQotICAgIH0NCi0NCi0gICAgaWYgKHhuLT5mbGFncyAmIE5O UEZTX1NUQUxFICYmICFubnBmc19ub2RlX3VzZXJzKGlub2RlKSkgew0KLQl4 bi0+ZmxhZ3MgfD0gTk5QRlNfTk9ERV9JUFVUOyAvKiBYWFggbG9ja2luZyAq Lw0KLSAgCW5ucGZzX2ZvcmNlX2ludmFsaWRfbm9kZSh4bik7DQotCXhuLT5m bGFncyAmPSB+Tk5QRlNfTk9ERV9JUFVUOw0KLSAgICB9DQotICAgIA0KLSAg ICBpZiAoYmFkKSB7DQotCWlmIChubnBmc19pY291bnQoaW5vZGUpID09IDEp DQotCSAgICBubnBmc19ub2RlX2NsZWFyKHhuKTsNCi0gICAgfSBlbHNlIGlm IChubnBmc19pY291bnQoaW5vZGUpID09IDIpIHsNCi0JLyogDQotCSAqIFRo ZSBsYXN0IGV4dGVybmFsIHJlZmVyZW5jZSBpcyBiZWluZyBkcm9wcGVkLCBv bmx5IHRoZSBvbmUNCi0JICogZnJvbSBubnBmc19ub2RlX2FkZCgpIGlzIGxl ZnQuIFRpbWUgdG8gbGV0IGRhZW1vbiByZWxlYXNlDQotCSAqIHRoaXMgbm9k ZSBwcm9wZXJseS4NCi0JICovDQotCWlmICgoeG4tPmZsYWdzICYgTk5QRlNf TElNQk8pID09IDApIHsNCi0JICAgIG5ucGZzX25vZGVfY2xlYXIoeG4pOw0K LQkgICAgbm5wZnNfcXVldWVfaW5hY3RpdmUoeG4pOw0KLQl9DQotICAgIH0N Ci0NCi0gICAgdXAoJm5ucGZzcC0+aW5hY3RpdmVfc2VtKTsNCi19DQotDQog c3RhdGljIGludA0KIG5ucGZzX3N0YXRmc19pbnQoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikNCiB7DQpAQCAtMzUyLDI1 ICszMTEsMjUgQEAgbm5wZnNfc3RhdGZzX2ludChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLA0KICAgICB0bXAuZl9iYXZhaWwgID0gMTAyNCoxMDI0KjItNTA7 DQogICAgIHRtcC5mX2ZpbGVzICAgPSAxMDI0KjEwMjQ7DQogICAgIHRtcC5m X2ZmcmVlICAgPSAxMDI0KjEwMjQtMTAwOw0KKyAgICB0bXAuZl9mc2lkLnZh bFswXSA9IDA7DQorICAgIHRtcC5mX2ZzaWQudmFsWzFdID0gMDsNCiAgICAg dG1wLmZfbmFtZWxlbiA9IE5BTUVfTUFYOw0KKyAgICB0bXAuZl9mcnNpemUg ID0gMDsNCisgICAgdG1wLmZfc3BhcmVbMF0gPSAwOw0KKyAgICB0bXAuZl9z cGFyZVsxXSA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzJdID0gMDsNCisgICAg dG1wLmZfc3BhcmVbM10gPSAwOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzYpDQorICAgIHRtcC5mX3NwYXJlWzRd ID0gMDsNCisjZWxzZQ0KKyAgICB0bXAuZl9mbGFncyA9IDA7DQorI2VuZGlm DQogICAgICpidWYgPSB0bXA7DQogICAgIHJldHVybiAwOw0KIH0NCiANCi0j aWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwx OCkNCi0NCiBzdGF0aWMgaW50DQogbm5wZnNfc3RhdGZzKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikNCiB7DQogICAgIHJl dHVybiBubnBmc19zdGF0ZnNfaW50KGRlbnRyeS0+ZF9zYiwgYnVmKTsNCiB9 DQotDQotI2Vsc2UNCi0NCi1zdGF0aWMgaW50DQotbm5wZnNfc3RhdGZzKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpDQot ew0KLSAgICByZXR1cm4gbm5wZnNfc3RhdGZzX2ludChzYiwgYnVmKTsNCi19 DQotDQotI2VuZGlmDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1v bGQvYXJsYWQvZmNhY2hlLmMgYXJsYS0wLjkwL2FybGFkL2ZjYWNoZS5jDQot LS0gYXJsYS0wLjkwLW9sZC9hcmxhZC9mY2FjaGUuYwkyMDA2LTEyLTExIDE3 OjIzOjI0LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9hcmxhZC9m Y2FjaGUuYwkyMDE2LTAxLTIyIDE3OjAwOjQzLjAwMDAwMDAwMCArMDEwMA0K QEAgLTcxMyw3ICs3MTMsNyBAQCBmY2FjaGVfaGF2ZV93YW50ZWQoRkNhY2hl RW50cnkgKmVudHJ5LCB1DQogaW50DQogZmNhY2hlX2Rpcl9uYW1lIChGQ2Fj aGVFbnRyeSAqZW50cnksIGNoYXIgKnMsIHNpemVfdCBsZW4pDQogew0KLSAg ICByZXR1cm4gc25wcmludGYgKHMsIGxlbiwgIiUwMlgiLCBlbnRyeS0+aW5k ZXggLyAweDEwMCk7DQorICAgIHJldHVybiBzbnByaW50ZiAocywgbGVuLCBO TlBGU19DQUNIRV9GSUxFX0RJUjEsIGVudHJ5LT5pbmRleCAvIDB4MTAwKTsN CiB9DQogDQogLyoNCkBAIC03MjMsNyArNzIzLDcgQEAgZmNhY2hlX2Rpcl9u YW1lIChGQ2FjaGVFbnRyeSAqZW50cnksIGNoYQ0KIHN0YXRpYyBpbnQNCiBm Y2FjaGVfZmlsZV9uYW1lIChGQ2FjaGVFbnRyeSAqZW50cnksIGNoYXIgKnMs IHNpemVfdCBsZW4pDQogew0KLSAgICByZXR1cm4gc25wcmludGYgKHMsIGxl biwgIiUwMlgvJTAyWCIsDQorICAgIHJldHVybiBzbnByaW50ZiAocywgbGVu LCBOTlBGU19DQUNIRV9GSUxFX0RJUl9QQVRILA0KIAkJICAgICBlbnRyeS0+ aW5kZXggLyAweDEwMCwgZW50cnktPmluZGV4ICUgMHgxMDApOw0KIH0NCiAN CkBAIC04MTUsNyArODE1LDcgQEAgZmNhY2hlX2ZoZ2V0IChjaGFyICpmaWxl bmFtZSwgZmNhY2hlX2NhYw0KIAlpbnQgcmV0LCBhLCBiOw0KIAljaGFyIGJ1 ZlsxMDI0XTsNCiANCi0JcmV0ID0gc3NjYW5mKGZpbGVuYW1lLCAiJTAyWC8l MDJYIiwgJmEsICZiKTsNCisJcmV0ID0gc3NjYW5mKGZpbGVuYW1lLCBOTlBG U19DQUNIRV9GSUxFX0RJUl9QQVRILCAmYSwgJmIpOw0KIAlpZiAocmV0ICE9 IDIpDQogCSAgICByZXR1cm4gRUlOVkFMOw0KIA0KQEAgLTgyNCw3ICs4MjQs NyBAQCBmY2FjaGVfZmhnZXQgKGNoYXIgKmZpbGVuYW1lLCBmY2FjaGVfY2Fj DQogCQ0KIAlyZXQgPSBzbnByaW50ZigoY2hhciAqKWhhbmRsZS0+bm5wZnNf aGFuZGxlLCANCiAJCSAgICAgICBzaXplb2YoaGFuZGxlLT5ubnBmc19oYW5k bGUpLA0KLQkJICAgICAgICIlc1xcJTAyWFxcJTAyWCIsIGJ1ZiwgYSwgYik7 DQorCQkgICAgICAgIiVzXFwiIE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEgs IGJ1ZiwgYSwgYik7DQogDQogCWlmIChyZXQgPiAwICYmIHJldCA8IHNpemVv ZihoYW5kbGUtPm5ucGZzX2hhbmRsZSkpDQogCSAgICBoYW5kbGUtPnZhbGlk ID0gMTsNCg== ---276651502-719180580-1455645175=:24402 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-719180580-1455645175=:24402--