Re: PATCH v11: Arla 0.90 on Linux 2.6.3x to 4.4
Bo Branten <[email protected]> Sat, 20 Feb 2016 20:47:40 +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-1903028542-1455997660=:736 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH v11: Arla 0.90 on Linux 2.6.3x to 4.4 Corrected an error that stopped writing from work on Linux kernel 3.1 and later versions. Bo Branten ---276651502-1903028542-1455997660=:736 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-v11-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-v11-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 eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAyLTIwIDE5OjQ0OjM5LjAwMDAwMDAw 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 KTsNCkBAIC0zMTMsMTQgKzMyNCwyNiBAQCBubnBmc19ibG9ja19vcGVuKHN0 cnVjdCBubnBmc19ub2RlICpub2RlDQogCQkgc3RydWN0IGZpbGUgKipmaWxl KQ0KIHsNCiAgICAgY2hhciBjYWNoZW5hbWVbTk5QRlNfQ0FDSEVfUEFUSF9T SVpFXTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDMsMSwwKQ0KKyAgICBjaGFyIGZ1bGxfY2FjaGVuYW1lW05OUEZTX0NB Q0hFX1BBVEhfU0laRV07DQorI2VuZGlmDQogICAgIHVpbnQ2NF90IGJsb2Nr aW5kZXggPSBubnBmc19ibG9ja19pbmRleChvZmZzZXQpOw0KICAgICB1aW50 MzJfdCBpZCA9IG5vZGUtPmluZGV4Ow0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5u cGZzcCA9IE5OUEZTX0ZST01fWE5PREUobm9kZSk7DQogICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBYTk9ERV9UT19WTk9ERShub2RlKTsNCiAgICAgaW50 IGZsYWdzID0gT19MQVJHRUZJTEUgfCBmbGFnOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVj dCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisgICAgc3RydWN0IHBhdGggcGF0 aDsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDI5KQ0KICAgICB1aWRfdCBzYXZldWlkOw0KICAgICBn aWRfdCBzYXZlZ2lkOw0KKyNlbHNlDQorICAgIGNvbnN0IHN0cnVjdCBjcmVk ICpvbGRfY3JlZDsNCisgICAgc3RydWN0IGNyZWQgKm92ZXJyaWRlX2NyZWQ7 DQorI2VuZGlmDQogICAgIGludCByZXQ7DQogDQogICAgIEJVR19PTighbm5w ZnNwKTsNCkBAIC0zMzAsMTIgKzM1MywyMiBAQCBubnBmc19ibG9ja19vcGVu KHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogCXJldCA9IHNucHJpbnRmKGNh Y2hlbmFtZSwgc2l6ZW9mKGNhY2hlbmFtZSksDQogCQkgICAgICAgTk5QRlNf Q0FDSEVfRElSX1BBVEgsDQogCQkgICAgICAgaWQgLyAweDEwMCwgaWQgJSAw eDEwMCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigzLDEsMCkNCisJcmV0ID0gc25wcmludGYoZnVsbF9jYWNoZW5hbWUs IHNpemVvZihjYWNoZW5hbWUpLA0KKwkJICAgICAgICIvdXNyL2FybGEvY2Fj aGUvIiBOTlBGU19DQUNIRV9ESVJfUEFUSCwNCisJCSAgICAgICBpZCAvIDB4 MTAwLCBpZCAlIDB4MTAwKTsNCisjZW5kaWYNCiAgICAgfSBlbHNlIHsNCiAJ cmV0ID0gc25wcmludGYoY2FjaGVuYW1lLCBzaXplb2YoY2FjaGVuYW1lKSwN CiAJCSAgICAgICBOTlBGU19DQUNIRV9GSUxFX1BBVEgsDQogCQkgICAgICAg aWQgLyAweDEwMCwgaWQgJSAweDEwMCwNCiAJCSAgICAgICAodW5zaWduZWQg bG9uZyBsb25nKWJsb2NraW5kZXgpOw0KLQ0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApDQorCXJldCA9IHNucHJp bnRmKGZ1bGxfY2FjaGVuYW1lLCBzaXplb2YoY2FjaGVuYW1lKSwNCisJCSAg ICAgICAiL3Vzci9hcmxhL2NhY2hlLyIgTk5QRlNfQ0FDSEVfRklMRV9QQVRI LA0KKwkJICAgICAgIGlkIC8gMHgxMDAsIGlkICUgMHgxMDAsDQorCQkgICAg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZylibG9ja2luZGV4KTsNCisjZW5kaWYN CiAJaWYgKCFubnBmc19ibG9ja19oYXZlX3Aobm9kZSwgb2Zmc2V0KSAmJiAo ZmxhZ3MgJiBPX0NSRUFUKSA9PSAwKSB7DQogCSAgICBwcmludGsoS0VSTl9F TUVSRyAicmVhZGluZyBibG9jayAlczogbm90IHRoZXJlXG4iLCBjYWNoZW5h bWUpOw0KIAkgICAgQlVHKCk7DQpAQCAtMzQ2LDIyICszNzksMzcgQEAgbm5w ZnNfYmxvY2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KICAgICBC VUdfT04oIW5ucGZzcC0+Y2FjaGVkaXIgfHwgIW5ucGZzcC0+Y2FjaGVyb290 KTsNCiAgICAgDQogICAgIC8qIHVzZSB0aGUgbmZzZCB0cmljayB0byBnaXZl IHVzIGFjY2VzcyAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigyLDYsMjkpDQogICAgIHNhdmV1aWQgPSBjdXJyZW50LT5m c3VpZDsNCiAgICAgc2F2ZWdpZCA9IGN1cnJlbnQtPmZzZ2lkOw0KICAgICBj dXJyZW50LT5mc3VpZCA9IG5ucGZzcC0+dWlkOw0KICAgICBjdXJyZW50LT5m c2dpZCA9IG5ucGZzcC0+Z2lkOw0KLQ0KLSAgICBuZC5kZW50cnkgPSBkZ2V0 KG5ucGZzcC0+Y2FjaGVkaXIpOw0KLSAgICBuZC5tbnQgPSBtbnRnZXQobm5w ZnNwLT5jYWNoZXJvb3QpOw0KLSAgICBuZC5sYXN0X3R5cGUgPSBMQVNUX05P Uk07DQotICAgIG5kLmRlcHRoID0gMDsNCi0gICAgbmQuZmxhZ3MgPSAwOw0K LSAgICANCi0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkNCi0JbmQuZmxhZ3Mg PSBMT09LVVBfUEFSRU5UOw0KLSAgICANCi0gICAgcmV0ID0gcGF0aF93YWxr KGNhY2hlbmFtZSwgJm5kKTsNCisjZWxzZQ0KKyAgICBvdmVycmlkZV9jcmVk ID0gcHJlcGFyZV9jcmVkcygpOw0KKyAgICBpZiAob3ZlcnJpZGVfY3JlZCA9 PSBOVUxMKQ0KKyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQorICAgIG92ZXJy aWRlX2NyZWQtPmZzdWlkID0gbm5wZnNwLT51aWQ7DQorICAgIG92ZXJyaWRl X2NyZWQtPmZzZ2lkID0gbm5wZnNwLT5naWQ7DQorICAgIG9sZF9jcmVkID0g b3ZlcnJpZGVfY3JlZHMob3ZlcnJpZGVfY3JlZCk7DQorI2VuZGlmDQorDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSww KQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRp ciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJ ICBmbGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkg ICZuZCk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxOSwwKQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5w ZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNo ZW5hbWUsIDAsICZuZC5wYXRoKTsNCisjZWxzZQ0KKyAgICByZXQgPSB2ZnNf cGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJv b3QsDQorCQkJICBjYWNoZW5hbWUsIDAsICZwYXRoKTsNCisjZW5kaWYNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxLDAp DQogICAgIGlmIChyZXQpIHsNCisjZWxzZQ0KKyAgICBpZiAocmV0ICYmICEo ZmxhZ3MgJiBPX0NSRUFUKSkgew0KKyNlbmRpZg0KIAl1aW50MzJfdCBubWFz a3MgPSBub2RlLT5kYXRhLm5tYXNrczsNCiAJdWludDMyX3QgbWFzazsNCiAN CkBAIC0zODcsMTcgKzQzNSwzNyBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVj dCBubnBmc19ub2RlICpub2RlDQogICAgIA0KICAgICBpZiAoZmxhZ3MgJiBP X0NSRUFUKSB7DQogCS8qIFhYWCBtb2RlIGJpdHMgb24gY3JlYXRlIC0tIFNf SVJVU1J8U19JV1VTUiAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDEsMCkNCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5 ID0gbG9va3VwX2NyZWF0ZSgmbmQsIDApOwkNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCXN0cnVjdCBk ZW50cnkgKmRlbnRyeSA9IGtlcm5fcGF0aF9jcmVhdGUoQVRfRkRDV0QsIGZ1 bGxfY2FjaGVuYW1lLCAmbmQucGF0aCwgMCk7CQ0KKyNlbHNlDQorCXN0cnVj dCBkZW50cnkgKmRlbnRyeSA9IGtlcm5fcGF0aF9jcmVhdGUoQVRfRkRDV0Qs IGZ1bGxfY2FjaGVuYW1lLCAmcGF0aCwgMCk7CQ0KKyNlbmRpZg0KIAlpZiAo SVNfRVJSKGRlbnRyeSkpIHsNCiAJICAgIHJldCA9IFBUUl9FUlIoZGVudHJ5 KTsNCiAJfSBlbHNlIHsNCi0JICAgIHJldCA9IHZmc19jcmVhdGUobmQuZGVu dHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwgJm5kKTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2 LDApDQorCSAgICByZXQgPSB2ZnNfY3JlYXRlKG5kLnBhdGguZGVudHJ5LT5k X2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwgJm5kKTsNCisjZWxp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp DQorCSAgICAvKiBYWFggc2hvdWxkIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHZm c19jcmVhdGU6IGJvb2wgd2FudF9leGNsLCBiZSAwIG9yIDE/ICovDQorCSAg ICByZXQgPSB2ZnNfY3JlYXRlKG5kLnBhdGguZGVudHJ5LT5kX2lub2RlLCBk ZW50cnksIFNfSVJVU1J8U19JV1VTUiwgMCk7DQorI2Vsc2UNCisJICAgIC8q IFhYWCBzaG91bGQgdGhlIGxhc3QgYXJndW1lbnQgdG8gdmZzX2NyZWF0ZTog Ym9vbCB3YW50X2V4Y2wsIGJlIDAgb3IgMT8gKi8NCisJICAgIHJldCA9IHZm c19jcmVhdGUocGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwgU19JUlVT UnxTX0lXVVNSLCAwKTsNCisjZW5kaWYNCisNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogCSAgICBkcHV0KGRl bnRyeSk7DQorCSAgICBtdXRleF91bmxvY2soJm5kLnBhdGguZGVudHJ5LT5k X2lub2RlLT5pX211dGV4KTsNCisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsN CisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDE5LDApDQorCSAgICBkb25lX3BhdGhfY3JlYXRlKCZuZC5wYXRoLCBkZW50 cnkpOw0KKyNlbHNlDQorCSAgICBkb25lX3BhdGhfY3JlYXRlKCZwYXRoLCBk ZW50cnkpOw0KKyNlbmRpZg0KIAl9DQogDQotCW11dGV4X3VubG9jaygmbmQu ZGVudHJ5LT5kX2lub2RlLT5pX211dGV4KTsNCi0JcGF0aF9yZWxlYXNlKCZu ZCk7DQotDQogCWlmIChyZXQpIHsNCiAJICAgIHByaW50aygibm5wZnNfYmxv Y2tfb3BlbiglcykgY3JlYXRlIGZhaWxlZDogJWRcbiIsIGNhY2hlbmFtZSwg LXJldCk7DQogCSAgICBubnBmc19kZWJ1Z19vb3BzKCk7DQpAQCAtNDEwLDEy ICs0NzgsMjQgQEAgbm5wZnNfYmxvY2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9k ZSAqbm9kZQ0KIAkgICAgcmV0ID0gbm5wZnNfYmxvY2tfZXh0ZW5kKG5vZGUs IG9mZnNldCk7DQogCX0NCiAgICAgfSBlbHNlIHsNCi0Jc3RydWN0IGZpbGUg KmYgPSBkZW50cnlfb3BlbihuZC5kZW50cnksIG5kLm1udCwgZmxhZ3MpOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MjkpDQorCXN0cnVjdCBmaWxlICpmID0gZGVudHJ5X29wZW4obmQucGF0aC5k ZW50cnksIG5kLnBhdGgubW50LCBmbGFncyk7DQorI2VsaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQorICAgICAgICBz dHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKG5kLnBhdGguZGVudHJ5LCBu ZC5wYXRoLm1udCwgZmxhZ3MsIGN1cnJlbnRfY3JlZCgpKTsNCisjZWxpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQor ICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKCZuZC5wYXRo LCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0KKyNlbHNlDQorICAgICAgICBz dHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKCZwYXRoLCBmbGFncywgY3Vy cmVudF9jcmVkKCkpOw0KKyNlbmRpZg0KIAlpZiAoSVNfRVJSKGYpKSB7DQog CSAgICByZXQgPSBQVFJfRVJSKGYpOw0KIAkgICAgcHJpbnRrKCJubnBmc19i bG9ja19vcGVuKCVzKSBvcGVuIGZhaWxlZDogJWRcbiIsIGNhY2hlbmFtZSwg LXJldCk7DQogCSAgICBubnBmc19kZWJ1Z19vb3BzKCk7DQotCSAgICBwYXRo X3JlbGVhc2UoJm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxOSwwKQ0KKwkgICAgcGF0aF9wdXQoJm5kLnBhdGgp Ow0KKyNlbHNlDQorCSAgICBwYXRoX3B1dCgmcGF0aCk7DQorI2VuZGlmDQog CX0gZWxzZSB7DQogCSAgICAqZmlsZSA9IGY7DQogCX0NCkBAIC00MjQsOCAr NTA0LDEzIEBAIG5ucGZzX2Jsb2NrX29wZW4oc3RydWN0IG5ucGZzX25vZGUg Km5vZGUNCiAgICAgLyogcGF0aF9yZWxlYXNlKCkgaXMgdXN1YWxseSBoYW5k bGVkIG9uIGNsb3NlICovDQogDQogIG91dDoNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI5KQ0KICAgICBjdXJyZW50 LT5mc3VpZCA9IHNhdmV1aWQ7DQogICAgIGN1cnJlbnQtPmZzZ2lkID0gc2F2 ZWdpZDsNCisjZWxzZQ0KKyAgICByZXZlcnRfY3JlZHMob2xkX2NyZWQpOw0K KyAgICBwdXRfY3JlZChvdmVycmlkZV9jcmVkKTsNCisjZW5kaWYNCiANCiAg ICAgcmV0dXJuIHJldDsNCiB9DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEt MC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfY29tbW9uLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX2NvbW1vbi5jDQotLS0gYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19jb21tb24uYwkyMDA2LTEyLTExIDE3OjMx OjQ2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19jb21tb24uYwkyMDE2LTAxLTE0IDE2OjE1OjAwLjAwMDAwMDAw MCArMDEwMA0KQEAgLTExMiwxMCArMTEyLDE1IEBAIG5ucGZzX3ByaW50X2Fs aWFzZXMoY29uc3Qgc3RydWN0IGlub2RlICoNCiB2b2lkDQogbm5wZnNfcHJp bnRfYWxpYXNlc19yZWFsKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpDQog ew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDYsMCkNCiAgICAgc3RydWN0IGxpc3RfaGVhZCAqYWxpYXM7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQor ICAgIHN0cnVjdCBobGlzdF9ub2RlICphbGlhczsNCisjZW5kaWYNCiAgICAg c3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0KICAgICBpbnQgYmFpbG91dCA9IDEw MDsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQogICAgIGFsaWFzID0gaW5vZGUtPmlfZGVudHJ5Lm5leHQ7 DQogICAgIHdoaWxlIChhbGlhcyAhPSAmaW5vZGUtPmlfZGVudHJ5KSB7DQog CWlmICgtLWJhaWxvdXQgPCAwKSB7DQpAQCAtMTMxLDYgKzEzNiwyNiBAQCBu bnBmc19wcmludF9hbGlhc2VzX3JlYWwoY29uc3Qgc3RydWN0IGluDQogCX0N CiAJYWxpYXMgPSBhbGlhcy0+bmV4dDsNCiAgICAgfQ0KKyNlbHNlDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0K KyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksIGFsaWFzLCAmaW5v ZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7DQorI2VsaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBobGlzdF9m b3JfZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnksIGRfYWxp YXMpIHsNCisjZWxzZQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50 cnksICZpbm9kZS0+aV9kZW50cnksIGRfdS5kX2FsaWFzKSB7DQorI2VuZGlm DQorCWlmICgtLWJhaWxvdXQgPCAwKSB7DQorCSAgICBwcmludGsoIiAuLi4i KTsNCisJICAgIGJyZWFrOw0KKwl9DQorCWlmIChkZW50cnkpIHsNCisJICAg IHByaW50aygiICUuKnMoJXApIiwgKGludClkZW50cnktPmRfbmFtZS5sZW4s DQorCQkgICBkZW50cnktPmRfbmFtZS5uYW1lLCBkZW50cnkpOw0KKwkgICAg aWYgKG5ucGZzX2RfZW50cnlfdW5oYXNoZWQoJmRlbnRyeS0+ZF9oYXNoKSkN CisJCXByaW50aygiKHVuaGFzaGVkKSIpOw0KKwl9DQorICAgIH0NCisjZW5k aWYNCiAgICAgcHJpbnRrKCJcbiIpOw0KIH0NCiANCkBAIC0xNDYsNyArMTcx LDExIEBAIG5ucGZzX3ByaW50X2NoaWxkcmVuKGNvbnN0IHN0cnVjdCBkZW50 cnkNCiANCiAgICAgd2hpbGUgKHN1YmRpcnMgIT0gJmRlbnRyeS0+ZF9zdWJk aXJzKSB7DQogCXN0cnVjdCBsaXN0X2hlYWQgKnRtcCA9IHN1YmRpcnM7DQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks MCkNCiAJc3RydWN0IGRlbnRyeSAqY2hpbGQgPSBsaXN0X2VudHJ5KHRtcCwg c3RydWN0IGRlbnRyeSwgZF91LmRfY2hpbGQpOw0KKyNlbHNlDQorCXN0cnVj dCBkZW50cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50 cnksIGRfY2hpbGQpOw0KKyNlbmRpZg0KIA0KIAlwcmludGsoIiAlLipzKCVw KSIsIChpbnQpY2hpbGQtPmRfbmFtZS5sZW4sDQogCSAgICAgICBjaGlsZC0+ ZF9uYW1lLm5hbWUsIGNoaWxkKTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJs YS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19kZXYuYyBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfZGV2LmMNCi0tLSBhcmxhLTAuOTAtb2xkL25u cGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMDYtMTAtMjQgMTg6MzM6MzYuMDAw MDAwMDAwICswMjAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZz X2Rldi5jCTIwMTYtMDEtMTQgMTY6Mjg6MTkuMDAwMDAwMDAwICswMTAwDQpA QCAtMzAwLDcgKzMwMCw5IEBAIG5ucGZzX2ludmFsaWRhdGVfYWxsKHN0cnVj dCBubnBmcyAqbm5wZnMNCiAgICAgTk5QRlNERUIoWERFQk5PREUsICgiZnJl ZV9hbGxfbm5wZnNfbm9kZXMgc3RhcnRpbmdcbiIpKTsNCiANCiAgICAgc2hy aW5rX2RjYWNoZV9zYihubnBmcy0+c2IpOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzcpDQogICAgIGludmFsaWRh dGVfaW5vZGVzKG5ucGZzLT5zYik7DQorI2VuZGlmDQogICAgIA0KICAgICBO TlBGU0RFQihYREVCTk9ERSwgKCJmcmVlX2FsbF9ubnBmc19ub2RlcyBkb25l XG4iKSk7DQogfQ0KQEAgLTM3NCw3ICszNzYsMTEgQEAgbm5wZnNfZGV2Y2xv c2Uoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cg0KIHN0YXRpYyBzc2l6ZV90 DQogbm5wZnNfZGV2cmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVm LCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykNCiB7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAg bm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlf cmRldjsNCisjZWxzZQ0KKyAgICBubnBmc19kZXZfdCBkZXYgPSBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlLT5pX3JkZXY7DQorI2VuZGlmDQogICAg IHN0cnVjdCBubnBmcyAqbm5wZnNwID0gJm5ucGZzW01JTk9SKGRldildOw0K ICAgICBzdHJ1Y3Qgbm5wZnNfbGluayAqZmlyc3Q7DQogICAgIGludCByZXQg PSAwLCBlcnJvciA9IDA7DQpAQCAtNDM5LDggKzQ0NSwxMiBAQCBubnBmc19k ZXZ3cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgDQogDQogICAgIE5O UEZTREVCKFhERUJERVYsICgibm5wZnNfZGV2d3JpdGVcbiIpKTsNCiAgICAg DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiAgICAgZGV2ID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlf cmRldjsNCi0gICAgbm5wZnNwID0gJm5ucGZzW01JTk9SKGRldildOw0KKyNl bHNlDQorICAgIGRldiA9IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUt PmlfcmRldjsNCisjZW5kaWYNCisgICAgIG5ucGZzcCA9ICZubnBmc1tNSU5P UihkZXYpXTsNCiANCiAgICAgZG93bigmbm5wZnNwLT5jaGFubmVsX3NlbSk7 DQogICAgIGlmIChubnBmc3AtPnN0YXR1cyAmIE5OUEZTX0RFVldSSVRFKSB7 DQpAQCAtNTA1LDE5ICs1MTUsMzcgQEAgbm5wZnNfZGV2d3JpdGUoc3RydWN0 IGZpbGUgKmZpbGUsIGNvbnN0IA0KIC8qDQogICogTm90IHVzZWQuDQogICov DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzNikNCiBzdGF0aWMgaW50DQogbm5wZnNfZGV2aW9jdGwoc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsDQogCSAgICAgICB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisjZWxzZQ0KK3N0 YXRpYyBsb25nDQorbm5wZnNfdW5sb2NrZWRfZGV2aW9jdGwoc3RydWN0IGZp bGUgKmZpbGUsDQorCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25l ZCBsb25nIGFyZykNCisjZW5kaWYNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiAgICAgTk5QRlNERUIo WERFQkRFViwgKCJubnBmc19kZXZpb2N0bCBkZXYgPSAlZCwgZmxhZ3MgPSAl ZFxuIiwNCiAJCSAgICAgICBpbm9kZS0+aV9yZGV2LCBmaWxlLT5mX2ZsYWdz KSk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxOSwwKQ0KKyAgICBOTlBGU0RFQihYREVCREVWLCAoIm5ucGZzX2Rl dmlvY3RsIGRldiA9ICVkLCBmbGFncyA9ICVkXG4iLA0KKwkJICAgICAgIGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3JkZXYsIGZpbGUtPmZfZmxhZ3Mp KTsNCisjZWxzZQ0KKyAgICBOTlBGU0RFQihYREVCREVWLCAoIm5ucGZzX2Rl dmlvY3RsIGRldiA9ICVkLCBmbGFncyA9ICVkXG4iLA0KKwkJICAgICAgIGZp bGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUtPmlfcmRldiwgZmlsZS0+Zl9m bGFncykpOw0KKyNlbmRpZg0KICAgICByZXR1cm4gLUVJTlZBTDsNCiB9DQog DQogc3RhdGljIHVuc2lnbmVkIGludA0KIG5ucGZzX2RldnBvbGwoc3RydWN0 IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpDQogew0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAg IG5ucGZzX2Rldl90IGRldiA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5p X3JkZXY7DQorI2Vsc2UNCisgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+ Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2Ow0KKyNlbmRpZg0KICAg ICBzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCA9ICZubnBmc1tNSU5PUihkZXYpXTsN CiAgICAgaW50IHJldCA9IDA7DQogICAgIA0KQEAgLTk1Myw3ICs5ODEsMTEg QEAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19mb3BzID0gew0KICAg ICByZWFkOgkJbm5wZnNfZGV2cmVhZCwNCiAgICAgd3JpdGU6CQlubnBmc19k ZXZ3cml0ZSwNCiAgICAgcG9sbDoJCW5ucGZzX2RldnBvbGwsDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiAg ICAgaW9jdGw6CQlubnBmc19kZXZpb2N0bCwNCisjZWxzZQ0KKyAgICB1bmxv Y2tlZF9pb2N0bDoJbm5wZnNfdW5sb2NrZWRfZGV2aW9jdGwsDQorI2VuZGlm DQogICAgIHJlbGVhc2U6CQlubnBmc19kZXZjbG9zZSwNCiAgICAgb3BlbjoJ CW5ucGZzX2Rldm9wZW4sDQogfTsNCkBAIC05NjgsOCArMTAwMCwxMyBAQCBu bnBmc19pbml0X2RldmljZSh2b2lkKQ0KIAlpbml0X3dhaXRxdWV1ZV9oZWFk KCYobm5wZnNbaV0ud2FpdF9xdWV1ZSkpOw0KIAlubnBmc19pbml0cSgmbm5w ZnNbaV0ubWVzc2FnZXEpOw0KIAlubnBmc19pbml0cSgmbm5wZnNbaV0uc2xl ZXBxKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMiw2LDM3KQ0KIAlpbml0X01VVEVYKCZubnBmc1tpXS5pbmFjdGl2ZV9z ZW0pOw0KIAlpbml0X01VVEVYKCZubnBmc1tpXS5jaGFubmVsX3NlbSk7DQor I2Vsc2UNCisJc2VtYV9pbml0KCZubnBmc1tpXS5pbmFjdGl2ZV9zZW0sIDEp Ow0KKwlzZW1hX2luaXQoJm5ucGZzW2ldLmNoYW5uZWxfc2VtLCAxKTsNCisj ZW5kaWYNCiAJSU5JVF9MSVNUX0hFQUQoJm5ucGZzW2ldLmluYWN0aXZlX2xp c3QpOw0KIAlubnBmc1tpXS5ubm9kZXMgPSAwOw0KICAgICB9DQpkaWZmIC11 cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNf aW5vZGVvcHMuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVv cHMuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfaW5v ZGVvcHMuYwkyMDA2LTEyLTExIDE3OjM1OjI2LjAwMDAwMDAwMCArMDEwMA0K KysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19pbm9kZW9wcy5jCTIw MTYtMDItMTUgMTY6MTU6MjkuMDAwMDAwMDAwICswMTAwDQpAQCAtNDAsMjUg KzQwLDQxIEBADQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2Rldi5oPg0KICNp bmNsdWRlIDxubnBmcy9ubnBmc19kaXJlbnQuaD4NCiAjaW5jbHVkZSA8bm5w ZnMvbm5wZnNfc3lzY2FsbHMuaD4NCisjaW5jbHVkZSA8bGludXgvYWlvLmg+ DQogI2luY2x1ZGUgPGxpbnV4L2JpbmZtdHMuaD4NCiAjaW5jbHVkZSA8bGlu dXgvZmlsZS5oPg0KICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L3BhZ2UtZmxhZ3MuaD4NCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsMSwwKQ0KKyNpbmNsdWRlIDxs aW51eC91aW8uaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8bGludXgvd3JpdGVi YWNrLmg+DQogI2luY2x1ZGUgPGFzbS9mY250bC5oPg0KIA0KICNpZmRlZiBS Q1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIyMyAy MDA2LzEyLzExIDE2OjM1OjI2IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6 IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIyNiAyMDEwLzA4LzA4IDIwOjQzOjA0 IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0KIA0KIHN0YXRpYyBpbnQNCiBubnBm c19mc3luY19pbnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGZsYWcpOw0K IA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDYsMCkNCiBzdGF0aWMgaW50DQogbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVj dCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpOw0KLQ0K KyNlbHNlDQogc3RhdGljIGludA0KK25ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1 Y3QgZGVudHJ5ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncyk7DQorI2Vu ZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDIsNiwzOCkNCitzdGF0aWMNCitpbnQNCiBubnBmc19kX2RlbGV0ZShz dHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KKyNlbHNlDQorc3RhdGljDQoraW50 DQorbm5wZnNfZF9kZWxldGUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5 KTsNCisjZW5kaWYNCiANCiBzdGF0aWMgdm9pZA0KIG5ucGZzX2RfcmVsZWFz ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KQEAgLTEwNSw3ICsxMjEsNyBA QCBubnBmc192bWFfY2xvc2UgKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqDQog fQ0KIA0KIHN0YXRpYyBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3Qgbm5w ZnNfZmlsZV92bV9vcHMgPSB7DQotICAgIC5ub3BhZ2UJPSBmaWxlbWFwX25v cGFnZSwNCisgICAgLmZhdWx0ICAgICAgPSBmaWxlbWFwX2ZhdWx0LA0KICAg ICAuY2xvc2UJPSBubnBmc192bWFfY2xvc2UsDQogfTsNCiANCkBAIC0xMzQs MTIgKzE1MCwxNCBAQCBubnBmc19wcmludF9wYXRoKHN0cnVjdCBkZW50cnkg KmRlbnRyeSkNCiAgKg0KICAqLw0KIA0KKyNpZiAwDQogdm9pZA0KIG5ucGZz X3ByaW50X2xvY2soY2hhciAqcywgc3RydWN0IHNlbWFwaG9yZSAqc2VtKQ0K IHsNCiAgICAgTk5QRlNERUIoWERFQkxPQ0ssICgibG9jazogJXMgc2VtOiAl cCBjb3VudDogJWRcbiIsDQogCQkgICAgICBzLCBzZW0sIChpbnQpYXRvbWlj X3JlYWQoJnNlbS0+Y291bnQpKSk7DQogfQ0KKyNlbmRpZg0KIA0KIC8qDQog ICoNCkBAIC0xODUsNyArMjAzLDcgQEAgbm5wZnNfZF9pcHV0KHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydQ0KICAgICBOTlBGU0RFQihYREVCVk5PUFMs DQogCSAgICAgKCJubnBmc19kX2lwdXQ6IGRlbnRyeSAlcCwgaW5vZGUgJXBc biIsIGRlbnRyeSwgaW5vZGUpKTsNCiAgICAgDQotICAgIGlmIChub2RlLT5m bGFncyAmIE5OUEZTX05PREVfSVBVVCkgLyogWFhYIGxvY2tpbmcgKi8NCisg ICAgaWYgKG5vZGUtPmZsYWdzICYgTk5QRlNfTk9ERV9JUFVUKSAvKiBYWFgg bG9ja2luZy4gbmV2ZXIgc2V0PyAqLw0KIAlubnBmc19pcmVsZShpbm9kZSk7 DQogICAgIGVsc2UNCiAJaXB1dChpbm9kZSk7DQpAQCAtMjEyLDggKzIzMCwx MyBAQCBubnBmc19pbm9kZV92YWxpZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0K ICAqIG5ucGZzX2xvb2t1cCBub3cgcmV0dXJucyBhIGRlbnRyeS4NCiAgKi8N CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Myw2LDApDQogc3RhdGljIHN0cnVjdCBkZW50cnkgKg0KIG5ucGZzX2xvb2t1 cCAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg c3RydWN0IG5hbWVpZGF0YSAqbmQpDQorI2Vsc2UNCitzdGF0aWMgc3RydWN0 IGRlbnRyeSAqDQorbm5wZnNfbG9va3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwg c3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQor I2VuZGlmDQogew0KICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9nZXRub2Rl IG1zZzsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQpAQCAtMjQwLDcg KzI2MywxMSBAQCBubnBmc19sb29rdXAgKHN0cnVjdCBpbm9kZSAqZGlyLCBz dHJ1Y3QgDQogDQogCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dF VE5PREU7DQogICAgICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3Vy cmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICBtc2cuY3JlZC51aWQgPSBj dXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQogCW1zZy5wYXJlbnRfaGFuZGxlID0gZC0+aGFuZGxl Ow0KICAgICAgICAgDQpAQCAtMzEwLDcgKzMzNywxMSBAQCBubnBmc19vcGVu X3ZhbGlkKHN0cnVjdCBpbm9kZSAqdnAsIHVfaW50DQogICAgICAgew0KIAlz dHJ1Y3Qgbm5wZnNfbWVzc2FnZV9vcGVuIG1zZzsNCiAJbXNnLmhlYWRlci5v cGNvZGUgPSBOTlBGU19NU0dfT1BFTjsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJbXNnLmNyZWQudWlk ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcg PSBubnBmc19nZXRfcGFnKCk7DQogCW1zZy5oYW5kbGUgPSB4bi0+aGFuZGxl Ow0KIAltc2cudG9rZW5zID0gdG9rOw0KQEAgLTM5Nyw3ICs0MjgsMTEgQEAg ZmluZF9maXJzdF9ibG9jayhzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIHN0 YXRpYyBpbnQNCiBubnBmc19mc3luY19pbnQoc3RydWN0IGZpbGUgKmZpbGUs IHVfaW50IGZsYWcpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5v ZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBz dHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9p bm9kZTsNCisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3AgPSBO TlBGU19GUk9NX1ZOT0RFKGlub2RlKTsNCiAgICAgc3RydWN0IG5ucGZzX25v ZGUgKnhuID0gVk5PREVfVE9fWE5PREUoaW5vZGUpOw0KICAgICBsb2ZmX3Qg bGVuID0gaV9zaXplX3JlYWQoaW5vZGUpOw0KQEAgLTQyNSw3ICs0NjAsMTEg QEAgbm5wZnNfZnN5bmNfaW50KHN0cnVjdCBmaWxlICpmaWxlLCB1X2ludA0K IA0KIAltc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QVVREQVRBOw0K IAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1z Zy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAg bXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNn LmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogCW1zZy5mbGFnICAgPSBmbGFnOw0K IAltc2cub2Zmc2V0ID0gb2ZmOw0KQEAgLTQ2MCwxNCArNDk5LDI3IEBAIG5u cGZzX2ZzeW5jX2ludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9pbnQNCiAgKg0K ICAqLw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMzUpDQogc3RhdGljIGludA0KIG5ucGZzX2ZzeW5jKHN0cnVj dCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBkYXRh c3luYykNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDEsMCkNCitzdGF0aWMgaW50DQorbm5wZnNfZnN5bmMoc3RydWN0 IGZpbGUgKmZpbGUsIGludCBkYXRhc3luYykNCisjZWxzZQ0KK3N0YXRpYyBp bnQNCitubnBmc19mc3luYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0 YXJ0LCBsb2ZmX3QgZW5kLCBpbnQgZGF0YXN5bmMpDQorI2VuZGlmDQogew0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2 LDM1KQ0KKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLT5mX3Bh dGguZGVudHJ5Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQogICAgIHN0cnVjdCBubnBm cyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47DQogICAg IGludCBlcnJvciA9IDA7DQogDQorICAgICh2b2lkKW5ucGZzcDsNCisNCiAg ICAgZXJyb3IgPSBubnBmc19pbm9kZV92YWxpZChpbm9kZSk7DQogICAgIGlm IChlcnJvcikNCiAJcmV0dXJuIGVycm9yOw0KQEAgLTUxMSw3ICs1NjMsMTEg QEAgbm5wZnNfYXR0cl92YWxpZChzdHJ1Y3QgaW5vZGUgKiB2cCwgdV9pbg0K ICAgICAgICAgICAgIHN0cnVjdCBubnBmc19tZXNzYWdlX2dldGF0dHIgbXNn Ow0KIA0KICAgICAgICAgICAgIG1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNf TVNHX0dFVEFUVFI7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpDQogICAgICAgICAgICAgbXNnLmNyZWQudWlk ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICAgICAgbXNnLmNy ZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAgICAgICAgICAg ICBtc2cuY3JlZC5wYWcgPSBwYWc7DQogICAgICAgICAgICAgbXNnLmhhbmRs ZSA9IHhuLT5oYW5kbGU7DQogICAgICAgICAgICAgZXJyb3IgPSBubnBmc19t ZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7 DQpAQCAtNTUxLDcgKzYwNywxMSBAQCBubnBmc19yaWdodHNfdmFsaWQoc3Ry dWN0IGlub2RlICogdnAsIG5uDQogICAgICAgICAgICAgc3RydWN0IG5ucGZz X21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQogDQogICAgICAgICAgICAgbXNnLmhl YWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUQVRUUjsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg ICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UN CisgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0K KyNlbmRpZg0KICAgICAgICAgICAgIG1zZy5jcmVkLnBhZyA9IHBhZzsNCiAg ICAgICAgICAgICBtc2cuaGFuZGxlID0geG4tPmhhbmRsZTsNCiAgICAgICAg ICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5o ZWFkZXIsIHNpemVvZihtc2cpKTsNCkBAIC01OTIsMTEgKzY1MiwyNSBAQCBj aGVja19yaWdodHMgKG5ucGZzX3JpZ2h0cyByaWdodHMsIGludCBtDQogICog V2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0KICAqLw0KIA0KKyNpZiAoTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KSB8fCBMSU5V WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApKQ0KK3N0 YXRpYyBpbnQNCitubnBmc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGludCBtb2RlKQ0KKyNlbHNlDQogc3RhdGljIGludA0KLW5ucGZzX3Bl cm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUsIHN0cnVj dCBuYW1laWRhdGEgKm5kKQ0KK25ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlu b2RlICppbm9kZSwgaW50IG1vZGUsIHVuc2lnbmVkIGludCBmbGFncykNCisj ZW5kaWYNCiB7DQogICAgIGludCBlcnJvciA9IDA7DQotICAgIG5ucGZzX3Bh Z190IHBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCisgICAgbm5wZnNfcGFnX3Qg cGFnOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMywxLDApDQorICAgIGlmIChtb2RlICYgTUFZX05PVF9CTE9DSykNCisg ICAgICAgIHJldHVybiAtRUNISUxEOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05f Q09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIGlmIChmbGFn cyAmIElQRVJNX0ZMQUdfUkNVKQ0KKyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7 DQorI2VuZGlmDQorDQorICAgIHBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAg ICAgDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19hY2Nlc3Mg KCVwKSBtb2RlID0gMCVvIGFsaWFzZXM6IiwgaW5vZGUsIG1vZGUpKTsNCiAg ICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhpbm9kZSk7DQpAQCAtNjM2LDcgKzcx MCwxMSBAQCBubnBmc19kb19nZXRkYXRhKHN0cnVjdCBubnBmc19ub2RlICp4 biwgDQogICAgIGludCBlcnJvcjsNCiANCiAgICAgbXNnLmhlYWRlci5vcGNv ZGUgPSBOTlBGU19NU0dfR0VUREFUQTsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQu dWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVp ZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBh ZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgbXNnLmhhbmRsZSA9IHhuLT5o YW5kbGU7DQogICAgIG1zZy50b2tlbnMgPSB0b2s7DQpAQCAtNzUwLDExICs4 MjgsMTkgQEAgbm5wZnNfZGF0YV92YWxpZChzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1Xw0KIGludCBubnBmc19maWxlX21tYXAoc3RydWN0IGZpbGUgKiBmaWxl LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEpDQogew0KICAgICBpbnQg ZmxhZ3MsIGVycm9yID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3QgaW5vZGUgKmlu b2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7DQorI2Vsc2UNCisgICAg c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfcGF0aC5kZW50cnktPmRf aW5vZGU7DQorI2VuZGlmDQogICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nID0gZmlsZS0+Zl9tYXBwaW5nOw0KIA0KICAgICBOTlBGU0RFQihY REVCVk5PUFMsICgibm5wZnNfbW1hcCBpbm9kZTogJXBcbiIsIGlub2RlKSk7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiAgICAgbm5wZnNfcHJpbnRfcGF0aChmaWxlLT5mX2RlbnRyeSk7 DQorI2Vsc2UNCisgICAgbm5wZnNfcHJpbnRfcGF0aChmaWxlLT5mX3BhdGgu ZGVudHJ5KTsNCisjZW5kaWYNCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAo Im5ucGZzX21tYXAgYWxpYXNlczoiKSk7DQogICAgIG5ucGZzX3ByaW50X2Fs aWFzZXMoaW5vZGUpOw0KICAgICANCkBAIC03ODksMzcgKzg3NSw1MCBAQCBp bnQgbm5wZnNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICogZmlsZSwgDQogICoN CiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxNiwwKQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3Jl YWQoc3RydWN0IGtpb2NiICppb2NiLA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0KIAkgICAgICAgY29uc3Qg c3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIGxvbmcgbnJfc2VncywNCisJ ICAgICAgIGxvZmZfdCBwb3MpDQogI2Vsc2UNCi0JICAgICAgIGNoYXIgX191 c2VyICpidWYsIHNpemVfdCBjb3VudCwNCitzdGF0aWMgc3NpemVfdA0KK25u cGZzX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3Zf aXRlciAqdG8pDQogI2VuZGlmDQotCSAgICAgICBsb2ZmX3QgcG9zKQ0KIHsN CiAgICAgaW50IGVycm9yID0gMDsNCiAgICAgc3RydWN0IGZpbGUgKmZpbGUg PSBpb2NiLT5raV9maWxwOw0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0g S0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDEyLDApDQogICAgIHNzaXplX3QgY291 bnQgPSBpb2NiLT5raV9sZWZ0Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDQsMSwwKQ0KKyAgICBzc2l6ZV90IGNvdW50 ID0gaW9jYi0+a2lfbmJ5dGVzOw0KKyNlbHNlDQorICAgIHNzaXplX3QgY291 bnQgPSBpb3ZfaXRlcl9jb3VudCh0byk7DQogI2VuZGlmDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAg c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2Rl Ow0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAg IA0KICAgICBpZiAoeG4gIT0gTlVMTCkNCiAJTk5QRlNERUIoWERFQlZOT1BT LCAoIm5ucGZzX3JlYWRfZmlsZSglcCk6IHRva2VuczogMHgleFxuIiwNCiAJ CQkgICAgIGlub2RlLCB4bi0+dG9rZW5zKSk7DQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJy b3IgPSBubnBmc19kYXRhX3ZhbGlkKGlub2RlLCBOTlBGU19EQVRBX1IsIHBv cywgcG9zICsgY291bnQpOw0KKyNlbHNlDQorICAgIGVycm9yID0gbm5wZnNf ZGF0YV92YWxpZChpbm9kZSwgTk5QRlNfREFUQV9SLCBpb2NiLT5raV9wb3Ms IGlvY2ItPmtpX3BvcyArIGNvdW50KTsNCisjZW5kaWYNCiAgICAgaWYgKGVy cm9yKSB7DQogCU5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWFkX2Zp bGU6IGRhdGEgbm90IHZhbGlkICVkXG4iLCBlcnJvcikpOw0KIAlyZXR1cm4g ZXJyb3I7DQogICAgIH0NCiAgICAgDQotI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJyb3Ig PSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQoaW9jYiwgaW92LCBucl9zZWdzLCBw b3MpOw0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fpb19y ZWFkKGlvY2IsIGJ1ZiwgY291bnQsIHBvcyk7DQorICAgIGVycm9yID0gZ2Vu ZXJpY19maWxlX3JlYWRfaXRlcihpb2NiLCB0byk7DQogI2VuZGlmDQogICAg IE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGVycm9y ID0gJWRcbiIsIGVycm9yKSk7DQogICAgIHJldHVybiBlcnJvcjsNCkBAIC04 MjksMjMgKzkyOCwzNiBAQCBubnBmc19haW9fcmVhZChzdHJ1Y3Qga2lvY2Ig KmlvY2IsDQogICoNCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KIHN0YXRpYyBzc2l6ZV90DQog bm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwNCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCiAJ CWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBsb25nIG5yX3Nl Z3MsDQorCQlsb2ZmX3QgcG9zKQ0KICNlbHNlDQotCQljb25zdCBjaGFyIF9f dXNlciAqYnVmLCBzaXplX3QgY291bnQsIA0KK3N0YXRpYyBzc2l6ZV90DQor bm5wZnNfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBp b3ZfaXRlciAqZnJvbSkNCiAjZW5kaWYNCi0JCWxvZmZfdCBwb3MpDQogew0K ICAgICBpbnQgZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSA9 IGlvY2ItPmtpX2ZpbHA7DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBL RVJORUxfVkVSU0lPTigyLDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkNCiAgICAgc3NpemVfdCBjb3Vu dCA9IGlvY2ItPmtpX2xlZnQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oNCwxLDApDQorICAgIHNzaXplX3QgY291bnQg PSBpb2NiLT5raV9uYnl0ZXM7DQorI2Vsc2UNCisgICAgc3NpemVfdCBjb3Vu dCA9IGlvdl9pdGVyX2NvdW50KGZyb20pOw0KICNlbmRpZg0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAg IHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9k ZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+ Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAgc3RydWN0 IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5PREUoaW5vZGUpOw0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE2LDAp DQogICAgIGxvZmZfdCByZWFscG9zID0gcG9zOw0KKyNlbHNlDQorICAgIGxv ZmZfdCByZWFscG9zID0gaW9jYi0+a2lfcG9zOw0KKyNlbmRpZg0KICAgICAN CiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX2Fpb193cml0ZSgl cCk6IHRva2VuczogMHgleFxuIiwNCiAJCQkgaW5vZGUsIHhuLT50b2tlbnMp KTsNCkBAIC04NTksMTAgKzk3MSwxMCBAQCBubnBmc19haW9fd3JpdGUoc3Ry dWN0IGtpb2NiICppb2NiLA0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiAN Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIs NiwxOSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxNiwwKQ0KICAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV9haW9fd3Jp dGUoaW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVy cm9yID0gZ2VuZXJpY19maWxlX2Fpb193cml0ZShpb2NiLCBidWYsIGNvdW50 LCBwb3MpOw0KKyAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV93cml0ZV9pdGVy KGlvY2IsIGZyb20pOw0KICNlbmRpZg0KICAgICBpZiAoIUlTX0VSUl9WQUxV RShlcnJvcikpDQogCXhuLT5mbGFncyB8PSBOTlBGU19EQVRBX0RJUlRZOyAv KiBYWFggcmFjZSAqLw0KQEAgLTg3MSw5ICs5ODMsMTkgQEAgbm5wZnNfYWlv X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwNCiAgICAgcmV0dXJuIGVycm9y Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywzLDApDQogc3RhdGljIGludA0KIG5ucGZzX2NyZWF0ZShzdHJ1 Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KIAkgICAg IGludCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCitzdGF0 aWMgaW50DQorbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1 Y3QgZGVudHJ5ICpkZW50cnksDQorCSAgICAgdW1vZGVfdCBtb2RlLCBzdHJ1 Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBm c19jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRl bnRyeSwNCisJICAgICB1bW9kZV90IG1vZGUsIGJvb2wgZXhjbCkNCisjZW5k aWYNCiB7DQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1 Y3Qgbm5wZnNfbm9kZSAqeG47DQpAQCAtOTAzLDkgKzEwMjUsMTcgQEAgbm5w ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZA0KICAgICBY QV9DTEVBUigmbXNnLmF0dHIpOw0KICAgICBYQV9TRVRfTU9ERSgmbXNnLmF0 dHIsIG1vZGUpOw0KICAgICBYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZT X0ZJTEVfUkVHKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIs IGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxzZQ0KKyAgICBYQV9TRVRfR0lEKCZt c2cuYXR0ciwgY3VycmVudF9mc2dpZCgpKTsNCisjZW5kaWYNCiAgICAgbXNn Lm1vZGUgPSAwOwkJLyogWFhYICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVp ZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQg PSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcg PSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVycm9yID0gbm5wZnNfbWVzc2Fn ZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KICAg ICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05NDYsNyArMTA3NiwxMSBAQCBubnBm c191bmxpbmsgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0DQogICAgIGlm IChzdHJsY3B5KG1zZy5uYW1lLCBkZW50cnktPmRfbmFtZS5uYW1lLCBzaXpl b2YobXNnLm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1F TkFNRVRPT0xPTkc7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBL RVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1 cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJy ZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQogICAgIGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMo bm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAo ZXJyb3IgPT0gMCkNCkBAIC05OTEsNyArMTEyNSwxMSBAQCBubnBmc19yZW5h bWUgKHN0cnVjdCBpbm9kZSAqIG9sZF9kaXIsIHN0DQogICAgIGlmIChzdHJs Y3B5KG1zZy5uZXdfbmFtZSwgbmV3X2RlbnRyeS0+ZF9uYW1lLm5hbWUsIHNp emVvZihtc2cubmV3X25hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0 dXJuIC1FTkFNRVRPT0xPTkc7DQogCQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgbXNnLmNyZWQudWlk ID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAgICAgbXNnLmNyZWQucGFn ID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICBlcnJvciA9IG5ucGZzX21lc3Nh Z2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCiAg ICAgaWYgKGVycm9yID09IDApDQpAQCAtMTAwOCw4ICsxMTQ2LDEzIEBAIG5u cGZzX3JlbmFtZSAoc3RydWN0IGlub2RlICogb2xkX2Rpciwgc3QNCiAgICAg cmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQogc3RhdGljIGludA0KIG5ucGZz X21rZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBpbnQgbW9kZSkNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19t a2RpcihzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgdW1vZGVfdCBtb2RlKQ0KKyNlbmRpZg0KIHsNCiAgICAgc3RydWN0IG5u cGZzICpubnBmc3A7DQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCkBA IC0xMDQwLDkgKzExODMsMTcgQEAgbm5wZnNfbWtkaXIoc3RydWN0IGlub2Rl ICogZGlyLCBzdHJ1Y3QgZA0KIAlYQV9DTEVBUigmbXNnLmF0dHIpOw0KIAlY QV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KIAlYQV9TRVRfVFlQRSgm bXNnLmF0dHIsIE5OUEZTX0ZJTEVfRElSKTsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJWEFfU0VUX0dJ RCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxzZQ0KKyAgICAg ICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnRfZnNnaWQoKSk7DQor I2VuZGlmDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVp ZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91 aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3Bh ZygpOw0KIAllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1z Zy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCiAJaWYgKGVycm9yID09IDApDQpA QCAtMTA4Myw3ICsxMjM0LDExIEBAIG5ucGZzX3JtZGlyKHN0cnVjdCBpbm9k ZSAqIGRpciwgc3RydWN0IGQNCiAgICAgbXNnLnBhcmVudF9oYW5kbGUgPSB4 bi0+aGFuZGxlOw0KICAgICBpZiAoc3RybGNweShtc2cubmFtZSwgZGVudHJ5 LT5kX25hbWUubmFtZSwgc2l6ZW9mKG1zZy5uYW1lKSkgPj0gTk5QRlNfTUFY X05BTUUpDQogCSAgICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAg ICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAg IG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogICAg IG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgZXJyb3Ig PSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXpl b2YobXNnKSk7DQogICAgIGlmIChlcnJvciA9PSAwKQ0KQEAgLTExMjgsNyAr MTI4MywxMSBAQCBzdGF0aWMgaW50IG5ucGZzX2xpbmsoc3RydWN0IGRlbnRy eSAqb2xkDQogCWlmIChzdHJsY3B5KG1zZy5uYW1lLCBuYW1lLCBzaXplb2Yo bXNnLm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJICAgIHJldHVybiAt RU5BTUVUT09MT05HOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0g S0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJy ZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1 cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZz X2dldF9wYWcoKTsNCiAJZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBm c3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogCWlmIChlcnJvciA9 PSAwKQ0KQEAgLTExNTcsMjkgKzEzMTYsNDcgQEAgc3RhdGljIGludCBubnBm c19zeW1saW5rKHN0cnVjdCBpbm9kZSAqZA0KICAgICB4biA9IFZOT0RFX1RP X1hOT0RFKGRpcik7DQogDQogICAgIHsNCi0Jc3RydWN0IG5ucGZzX21lc3Nh Z2Vfc3ltbGluayBtc2c7DQorCXN0cnVjdCBubnBmc19tZXNzYWdlX3N5bWxp bmsgKm1zZyA9IE5VTEw7DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5Q RlNfTVNHX1NZTUxJTks7DQotCW1zZy5wYXJlbnRfaGFuZGxlID0geG4tPmhh bmRsZTsNCi0JaWYgKHN0cmxjcHkobXNnLm5hbWUsIG5hbWUsIHNpemVvZiht c2cubmFtZSkpID49IE5OUEZTX01BWF9OQU1FKQ0KLQkgICAgcmV0dXJuIC1F TkFNRVRPT0xPTkc7DQotCWlmIChzdHJsY3B5KG1zZy5jb250ZW50cywgc3lt bmFtZSwgc2l6ZW9mKG1zZy5jb250ZW50cykpID49IE5OUEZTX01BWF9TWU1M SU5LX0NPTlRFTlQpDQotCSAgICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCi0J WEFfQ0xFQVIoJm1zZy5hdHRyKTsNCi0JWEFfU0VUX01PREUoJm1zZy5hdHRy LCAwNzc3KTsNCi0JWEFfU0VUX1RZUEUoJm1zZy5hdHRyLCBOTlBGU19GSUxF X0xOSyk7DQotCVhBX1NFVF9HSUQoJm1zZy5hdHRyLCBjdXJyZW50LT5mc2dp ZCk7DQorCW1zZyA9IGttYWxsb2Moc2l6ZW9mKCptc2cpLCBHRlBfS0VSTkVM KTsNCiANCi0JbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KLQltc2cu Y3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQotCWVycm9yID0gbm5wZnNf bWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykp Ow0KKwlpZiAobXNnID09IE5VTEwpDQorCSAgcmV0dXJuIC1FTk9NRU07DQor DQorCW1zZy0+aGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19TWU1MSU5LOw0K Kwltc2ctPnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwlpZiAoc3Ry bGNweShtc2ctPm5hbWUsIG5hbWUsIHNpemVvZihtc2ctPm5hbWUpKSA+PSBO TlBGU19NQVhfTkFNRSkgew0KKwkgIGtmcmVlKG1zZyk7DQorCSAgcmV0dXJu IC1FTkFNRVRPT0xPTkc7DQorCX0NCisJaWYgKHN0cmxjcHkobXNnLT5jb250 ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy0+Y29udGVudHMpKSA+PSBOTlBG U19NQVhfU1lNTElOS19DT05URU5UKSB7DQorCSAga2ZyZWUobXNnKTsNCisJ ICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCisJfQ0KKwlYQV9DTEVBUigmbXNn LT5hdHRyKTsNCisJWEFfU0VUX01PREUoJm1zZy0+YXR0ciwgMDc3Nyk7DQor CVhBX1NFVF9UWVBFKCZtc2ctPmF0dHIsIE5OUEZTX0ZJTEVfTE5LKTsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwy OCkNCisJWEFfU0VUX0dJRCgmbXNnLT5hdHRyLCBjdXJyZW50LT5mc2dpZCk7 DQorI2Vsc2UNCisgICAgICAgIFhBX1NFVF9HSUQoJm1zZy0+YXR0ciwgY3Vy cmVudF9mc2dpZCgpKTsNCisjZW5kaWYNCisNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJbXNnLT5jcmVk LnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLT5j cmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQorCW1zZy0+Y3Jl ZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQorCWVycm9yID0gbm5wZnNfbWVz c2FnZV9ycGMobm5wZnNwLCAmbXNnLT5oZWFkZXIsIHNpemVvZigqbXNnKSk7 DQogCWlmIChlcnJvciA9PSAwKQ0KLQkgICAgZXJyb3IgPSBOTlBGU19NU0df V0FLRVVQX0VSUk9SKCZtc2cpOw0KKwkgICAgZXJyb3IgPSBOTlBGU19NU0df V0FLRVVQX0VSUk9SKG1zZyk7DQogDQogCS8qIFhYWCBzaG91bGQgdGhpcyBy ZWFsbHkgYmUgaGVyZSAqLw0KIAlpZiAoREVOVFJZX1RPX1hERU5UUlkoZGVu dHJ5KS0+eGRfZmxhZ3MgPT0gMCkgew0KIAkgICAgcHJpbnRrKEtFUk5fRU1F UkcgIk5OUEZTIFBhbmljOiBubnBmc19zeW1saW5rOiBkZW50cnkgbm90IHZh bGlkXG4iKTsNCiAJfQ0KKwlrZnJlZShtc2cpOw0KICAgICB9DQogDQogICAg IHJldHVybiBlcnJvcjsNCkBAIC0xMTg4LDEyICsxMzY1LDIxIEBAIHN0YXRp YyBpbnQgbm5wZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKmQNCiAvKg0KICAq IFdlIGhvbGQgaV9tdXRleC4NCiAgKi8NCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSwwKQ0KIHN0YXRpYyBpbnQNCiBu bnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqIGRpcmVu dCwgZmlsbGRpcl90IGZpbGxkaXIpDQorI2Vsc2UNCitzdGF0aWMgaW50DQor bm5wZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAqIGZpbGUsIHN0cnVjdCBkaXJf Y29udGV4dCAqY3R4KQ0KKyNlbmRpZg0KIHsNCiAgICAgaW50IGVycm9yOw0K ICAgICBsb2ZmX3Qgb2Zmc2V0LCBiZWdpbl9vZmZzZXQ7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAg c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2Rl Ow0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qg aW5vZGUgKmNhY2hlX2lub2RlOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAq eG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAgIGNoYXIgKmJ1ZjsN CkBAIC0xMjE3LDYgKzE0MDMsNyBAQCBubnBmc19yZWFkZGlyKHN0cnVjdCBm aWxlICogZmlsZSwgdm9pZCAqDQogDQogICAgIGNhY2hlX2lub2RlID0gYmFj a2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsNCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSwwKQ0KICAgICB3aGlsZSAo ZmlsZS0+Zl9wb3MgPCBpX3NpemVfcmVhZChjYWNoZV9pbm9kZSkpIHsNCiAJ Tk5QRlNERUIoWERFQlJFQURESVIsDQogCSAgICAgICAoIm5ucGZzX3JlYWRk aXIgZmlsZS0+Zl9wb3M6ICVkIGlfc2l6ZTogJWRcbiIsDQpAQCAtMTIyOSw2 ICsxNDE2LDIwIEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJbWFwcGluZyA9IGJhY2tmaWxlLT5mX21hcHBpbmc7DQog CWlucGFnZSA9IGZpbGUtPmZfcG9zICYgKFBBR0VfQ0FDSEVfU0laRS0xKTsN CiAJcGFnZV9udW0gPSBmaWxlLT5mX3BvcyA+PiBQQUdFX0NBQ0hFX1NISUZU Ow0KKyNlbHNlDQorICAgIHdoaWxlIChjdHgtPnBvcyA8IGlfc2l6ZV9yZWFk KGNhY2hlX2lub2RlKSkgew0KKwlOTlBGU0RFQihYREVCUkVBRERJUiwNCisJ ICAgICAgICgibm5wZnNfcmVhZGRpciBmaWxlLT5mX3BvczogJWQgaV9zaXpl OiAlZFxuIiwNCisJCShpbnQpIGN0eC0+cG9zLCAoaW50KSBjYWNoZV9pbm9k ZS0+aV9zaXplKSk7DQorCWJlZ2luX29mZnNldCA9IGN0eC0+cG9zICZ+IChO TlBGU19ESVJFTlRfQkxPQ0tTSVpFIC0gMSk7DQorCW9mZnNldCA9IGN0eC0+ cG9zICYgKE5OUEZTX0RJUkVOVF9CTE9DS1NJWkUgLSAxKTsNCisJY3R4LT5w b3MgPSBiZWdpbl9vZmZzZXQ7DQorCU5OUEZTREVCKFhERUJSRUFERElSLCAo Im5ucGZzX3JlYWRkaXIgYmVnaW5fb2Zmc2V0OiAlZCBvZmZzZXQ6ICVkXG4i LA0KKwkJCSAgICAgKGludCliZWdpbl9vZmZzZXQsIChpbnQpb2Zmc2V0KSk7 DQorCW1hcHBpbmcgPSBiYWNrZmlsZS0+Zl9tYXBwaW5nOw0KKwlpbnBhZ2Ug PSBjdHgtPnBvcyAmIChQQUdFX0NBQ0hFX1NJWkUtMSk7DQorCXBhZ2VfbnVt ID0gY3R4LT5wb3MgPj4gUEFHRV9DQUNIRV9TSElGVDsNCisjZW5kaWYNCiAN CiAJTk5QRlNERUIoWERFQlJFQURESVIsDQogCSAgICAgICAoIm5ucGZzX3Jl YWRkaXIgaW5wYWdlOiAlZCBwYWdlX251bTogJWx1XG4iLA0KQEAgLTEyNjQs NiArMTQ2NSw3IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJCSAgICAoaW50KSB4ZGlyZW50LT5kX25hbWxlbiwNCiAJ CSAgICAoaW50KSAob2Zmc2V0K2JlZ2luX29mZnNldCkpKTsNCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSwwKQ0K IAkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9IDANCiAJCSYmIChmaWxs ZGlyX2Vycm9yID0gZmlsbGRpciAoZGlyZW50LA0KIAkJCQkgICAgIHhkaXJl bnQtPmRfbmFtZSwNCkBAIC0xMjc1LDEyICsxNDc3LDI4IEBAIG5ucGZzX3Jl YWRkaXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJCQkgKCJubnBm c19yZWFkZGlyIGZpbGxkaXI6ICVkXG4iLCBmaWxsZGlyX2Vycm9yKSk7DQog CQlicmVhazsNCiAJICAgIH0NCisjZWxzZQ0KKwkgICAgaWYgKHhkaXJlbnQt PmRfZmlsZW5vICE9IDANCisJCSYmIChmaWxsZGlyX2Vycm9yID0gZGlyX2Vt aXQgKGN0eCwNCisJCQkJICAgICB4ZGlyZW50LT5kX25hbWUsDQorCQkJCSAg ICAgeGRpcmVudC0+ZF9uYW1sZW4sDQorCQkJCSAgICAgeGRpcmVudC0+ZF9m aWxlbm8sDQorCQkJCSAgICAgRFRfVU5LTk9XTikpIDwgMCkgew0KKwkJTk5Q RlNERUIoWERFQlJFQURESVIsDQorCQkJICgibm5wZnNfcmVhZGRpciBmaWxs ZGlyOiAlZFxuIiwgZmlsbGRpcl9lcnJvcikpOw0KKwkJYnJlYWs7DQorCSAg ICB9DQorI2VuZGlmDQogCSAgICBvZmZzZXQgKz0geGRpcmVudC0+ZF9yZWNs ZW47DQogDQogCSAgICBpZiAoeGRpcmVudC0+ZF9yZWNsZW4gPT0gMCkgew0K IAkJcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiAiDQogCQkgICAg ICAgImVtcHR5IGRpcmVudCBhdCAlbGxkIGluIG5ucGZzX3JlYWRkaXIsIHBv cyAlZCBzaXplICVkXG4iLA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDExLDApDQogCQkgICAgICAgKGxvbmcgbG9uZylv ZmZzZXQsIChpbnQpZmlsZS0+Zl9wb3MsDQorI2Vsc2UNCisJCSAgICAgICAo bG9uZyBsb25nKW9mZnNldCwgKGludCljdHgtPnBvcywNCisjZW5kaWYNCiAJ CSAgICAgICAoaW50KWNhY2hlX2lub2RlLT5pX3NpemUpOw0KIAkJTk5QRlNE RUIoWERFQlZOT1BTLCAoImlub2RlOiAlcCBhbGlhc2VzOiIsIGlub2RlKSk7 DQogCQlubnBmc19wcmludF9hbGlhc2VzKGlub2RlKTsNCkBAIC0xMjk4LDcg KzE1MTYsMTEgQEAgbm5wZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqIGZpbGUs IHZvaWQgKg0KIAlpZiAob2Zmc2V0ID4gTk5QRlNfRElSRU5UX0JMT0NLU0la RSkNCiAJICAgIG9mZnNldCA9IE5OUEZTX0RJUkVOVF9CTE9DS1NJWkU7DQog DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTEsMCkNCiAJZmlsZS0+Zl9wb3MgPSBiZWdpbl9vZmZzZXQgKyBvZmZzZXQ7 DQorI2Vsc2UNCisJY3R4LT5wb3MgPSBiZWdpbl9vZmZzZXQgKyBvZmZzZXQ7 DQorI2VuZGlmDQogDQogCWlmIChlcnJvciB8fCBvZmZzZXQgPCBOTlBGU19E SVJFTlRfQkxPQ0tTSVpFKQ0KIAkgICAgYnJlYWs7DQpAQCAtMTMzMSw5ICsx NTUzLDE1IEBAIG5ucGZzX3JlYWRsaW5rIChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksIGMNCiAgKiBXZSBkb24ndCBob2xkIGlfbXV0ZXguDQogICovDQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsMiww KQ0KIHN0YXRpYyB2b2lkICoNCiBubnBmc19mb2xsb3dfbGluayAoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LA0KIAkJIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0K KyNlbHNlDQorc3RhdGljIGNvbnN0IGNoYXIgKg0KK25ucGZzX2ZvbGxvd19s aW5rIChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQorCQkgdm9pZCAqKnBhZ2Up DQorI2VuZGlmDQogew0KICAgICBpbnQgZXJyb3IgPSAwOw0KICAgICBzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQpA QCAtMTM0NCw3ICsxNTcyLDExIEBAIG5ucGZzX2ZvbGxvd19saW5rIChzdHJ1 Y3QgZGVudHJ5ICpkZW50cnkNCiAgICAgaWYgKGVycm9yKQ0KICAgICAgICBy ZXR1cm4gRVJSX1BUUihlcnJvcik7DQogDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsMiwwKQ0KICAgICByZXR1cm4gcGFn ZV9mb2xsb3dfbGlua19saWdodChkZW50cnksIG5kKTsNCisjZWxzZQ0KKyAg ICByZXR1cm4gcGFnZV9mb2xsb3dfbGlua19saWdodChkZW50cnksIHBhZ2Up Ow0KKyNlbmRpZg0KIH0NCiANCiAvKg0KQEAgLTEzOTgsNyArMTYzMCwxMSBA QCBubnBmc19zZXRhdHRyIChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0DQog ICAgICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9wdXRhdHRyIG1zZzsNCiAN CiAgICAgICAgIG1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1BVVEFU VFI7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lP TigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisj ZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsN CisjZW5kaWYNCiAJbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0K ICAgICAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgICAgICBu bnBmc19pYXR0cjJhdHRyKHhuLCBhdHRyLCAmbXNnLmF0dHIpOw0KQEAgLTE0 MjIsNiArMTY1OCw4IEBAIG5ucGZzX3JlbGVhc2VfZmlsZSAoc3RydWN0IGlu b2RlICppbm9kZSwNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuOw0KICAg ICBpbnQgZXJyb3IgPSAwOw0KIA0KKyAgICAodm9pZClubnBmc3A7DQorDQog ICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWxlYXNlX2ZpbGVc biIpKTsNCiANCiAgICAgZXJyb3IgPSBubnBmc19pbm9kZV92YWxpZChpbm9k ZSk7DQpAQCAtMTQ1MCwxOCArMTY4OCwxOCBAQCBubnBmc19yZWxlYXNlX2Zp bGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUsDQogICoNCiAgKi8NCiANCi0jaWYg TElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkN CiBzdGF0aWMgaW50DQogbm5wZnNfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUs IGZsX293bmVyX3QgaWQpDQotI2Vsc2UNCi1zdGF0aWMgaW50DQotbm5wZnNf Zmx1c2goc3RydWN0IGZpbGUgKmZpbGUpDQotI2VuZGlmDQogew0KICAgICBO TlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfZmx1c2hcbiIpKTsNCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww KQ0KICAgICBpZiAoZmlsZSAmJiBmaWxlLT5mX2RlbnRyeSAmJiBmaWxlLT5m X2RlbnRyeS0+ZF9pbm9kZSkNCiAJcmV0dXJuIG5ucGZzX3JlbGVhc2VfZmls ZShmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZSwgZmlsZSk7DQorI2Vsc2UNCisg ICAgaWYgKGZpbGUgJiYgZmlsZS0+Zl9wYXRoLmRlbnRyeSAmJiBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlKQ0KKwlyZXR1cm4gbm5wZnNfcmVsZWFz ZV9maWxlKGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUsIGZpbGUpOw0K KyNlbmRpZg0KICAgICBlbHNlDQogCXJldHVybiAwOw0KIH0NCkBAIC0xNDcw LDEwICsxNzA4LDI0IEBAIG5ucGZzX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxl KQ0KICAqIFJldHVybiAxIGlmIGBkZW50cnknIGlzIHN0aWxsIHZhbGlkLCBv dGhlcndpc2UgMC4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQorc3RhdGljIGludA0KK25ucGZz X2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBu YW1laWRhdGEgKm5kKQ0KKyNlbHNlDQogc3RhdGljIGludA0KLW5ucGZzX2Rf cmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBuYW1l aWRhdGEgKm5kKSANCitubnBmc19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRy eSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0K ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRl bnRyeSk7DQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigzLDYsMCkNCisgICAgaWYgKGZsYWdzICYgTE9PS1VQX1JDVSkN CisgICAgICAgIHJldHVybiAtRUNISUxEOw0KKyNlbGlmIExJTlVYX1ZFUlNJ T05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIGlmIChu ZCAmJiBuZC0+ZmxhZ3MgJiBMT09LVVBfUkNVKQ0KKyAgICAgICAgcmV0dXJu IC1FQ0hJTEQ7DQorI2VuZGlmDQorDQogICAgIE5OUEZTREVCKFhERUJWTk9Q UywgKCJubnBmc19kX3JldmFsaWRhdGUgJXAgXCIlLipzXCIgKGlub2RlICVw KVxuIiwNCiAJCSAgICAgICBkZW50cnksDQogCQkgICAgICAgKGludClkZW50 cnktPmRfbmFtZS5sZW4sDQpAQCAtMTUxOSw5ICsxNzcxLDE1IEBAIG5ucGZz X2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkNCiAgICAgcmV0 dXJuIDA7DQogfQ0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigyLDYsMzgpDQogc3RhdGljDQogaW50DQogbm5wZnNfZF9k ZWxldGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbHNlDQorc3RhdGlj DQoraW50DQorbm5wZnNfZF9kZWxldGUoY29uc3Qgc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQ0KKyNlbmRpZg0KIHsNCiAgICAgc3RydWN0IGlub2RlICppbm9k ZTsNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuOw0KQEAgLTE1NDYsMTEg KzE4MDQsMTYgQEAgbm5wZnNfZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVu dHJ5KQ0KIH0NCiANCiBzdGF0aWMgc3NpemVfdA0KLW5ucGZzX3NlbmRmaWxl KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QgKnBwb3MsIHNpemVfdCBjb3Vu dCwNCi0JICAgICAgIHJlYWRfYWN0b3JfdCBhY3Rvciwgdm9pZCAqdGFyZ2V0 KQ0KK25ucGZzX3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBsb2Zm X3QgKnBwb3MsDQorCQkgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUs IHNpemVfdCBjb3VudCwNCisJCSAgdW5zaWduZWQgaW50IGZsYWdzKQ0KIHsN CiAgICAgaW50IGVycm9yID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7DQorI2Vsc2UNCisg ICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfcGF0aC5kZW50cnkt PmRfaW5vZGU7DQorI2VuZGlmDQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4 biA9IFZOT0RFX1RPX1hOT0RFKGlub2RlKTsNCiAgICAgDQogICAgIGlmICh4 biAhPSBOVUxMKQ0KQEAgLTE1NjEsOCArMTgyNCw3IEBAIG5ucGZzX3NlbmRm aWxlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QNCiAJTk5QRlNERUIoWERF QlZOT1BTLCAoIm5ucGZzX3NlbmRmaWxlOiBkYXRhIG5vdCB2YWxpZCAlZFxu IiwgZXJyb3IpKTsNCiAJcmV0dXJuIGVycm9yOw0KICAgICB9DQotDQotICAg IGVycm9yID0gZ2VuZXJpY19maWxlX3NlbmRmaWxlKGZpbGUsIHBwb3MsIGNv dW50LCBhY3RvciwgdGFyZ2V0KTsNCisgICAgZXJyb3IgPSBmaWxlLT5mX29w LT5zcGxpY2VfcmVhZChmaWxlLCBwcG9zLCBwaXBlLCBjb3VudCwgZmxhZ3Mp Ow0KIA0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfc2VuZGZp bGU6IGVycm9yID0gJWRcbiIsIGVycm9yKSk7DQogICAgIHJldHVybiBlcnJv cjsNCkBAIC0xNjM5LDQwICsxOTAxLDQxIEBAIG5ucGZzX3dyaXRlX2JhY2tw YWdlKHN0cnVjdCBwYWdlICpwYWdlLCANCiAJc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcgPSBiYWNrZmlsZS0+Zl9tYXBwaW5nOw0KIAl1bnNpZ25l ZCBsZW4gPSBQQUdFX0NBQ0hFX1NJWkU7DQogCXN0cnVjdCBwYWdlICpiYWNr cGFnZTsNCisJdm9pZCAqZnNkYXRhOw0KIAl1bnNpZ25lZCBsb25nIG9mZnNl dDsNCiANCiAJaW50IGVycm9yOw0KIAkNCi0JZG8gew0KLQkJYmFja3BhZ2Ug PSBncmFiX2NhY2hlX3BhZ2UobWFwcGluZywgbm5wZnNfZ2V0X2JhY2tpbmRl eChwYWdlKSk7DQotCQlpZiAoIWJhY2twYWdlKSB7DQotCQkJcHJpbnRrKCJu bnBmc193cml0ZV9iYWNrcGFnZTogbm8gcGFnZVxuIik7DQotCQkJcmV0dXJu IC1FSU87DQotCQl9DQorCSh2b2lkKW9mZnNldDsNCiANCi0JCWVycm9yID0g bWFwcGluZy0+YV9vcHMtPnByZXBhcmVfd3JpdGUoYmFja2ZpbGUsIGJhY2tw YWdlLA0KLQkJCQkJCSAgICAgIDAsIGxlbik7DQorCWRvIHsNCisJCWVycm9y ID0gcGFnZWNhY2hlX3dyaXRlX2JlZ2luKGJhY2tmaWxlLCBtYXBwaW5nLCAw LCBsZW4sDQorCQkJCQkgICAgICBBT1BfRkxBR19VTklOVEVSUlVQVElCTEUs DQorCQkJCQkgICAgICAmYmFja3BhZ2UsICZmc2RhdGEpOw0KIAkJaWYgKCFl cnJvcikgew0KIAkJCWNvcHlfaGlnaHBhZ2UoYmFja3BhZ2UsIHBhZ2UpOw0K IAkJCWZsdXNoX2RjYWNoZV9wYWdlKGJhY2twYWdlKTsNCi0JCQllcnJvciA9 IG1hcHBpbmctPmFfb3BzLT5jb21taXRfd3JpdGUoYmFja2ZpbGUsIGJhY2tw YWdlLA0KLQkJCQkJCQkgICAgIDAsIGxlbik7DQorCQkJZXJyb3IgPSBwYWdl Y2FjaGVfd3JpdGVfZW5kKGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQor CQkJCQlsZW4sIGJhY2twYWdlLCBmc2RhdGEpOw0KKwkJCWlmIChlcnJvciA+ IDApDQorCQkJCWVycm9yID0gMDsNCiAJCX0NCiAJCWlmIChlcnJvciA9PSBB T1BfVFJVTkNBVEVEX1BBR0UpIHsNCi0JCQlwYWdlX2NhY2hlX3JlbGVhc2Uo YmFja3BhZ2UpOw0KIAkJCWNvbnRpbnVlOw0KIAkJfQ0KIAl9IHdoaWxlICgw KTsNCiANCiAJb2Zmc2V0ID0gcGFnZV9vZmZzZXQoYmFja3BhZ2UpOw0KLQl1 bmxvY2tfcGFnZShiYWNrcGFnZSk7DQotCXBhZ2VfY2FjaGVfcmVsZWFzZShi YWNrcGFnZSk7DQogDQogCWlmIChlcnJvcikNCiAJCXByaW50aygibm5wZnNf d3JpdGVfYmFja3BhZ2U6IEVJT1xuIik7DQogI2lmZGVmIE5OUEZTX1NBRkVf U1lOQw0KIAllbHNlDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDIsNiwzMikNCiAJCSh2b2lkKXN5bmNfcGFnZV9yYW5nZSht YXBwaW5nLT5ob3N0LCBtYXBwaW5nLCBvZmZzZXQsIGxlbik7DQorI2Vsc2UN CisJCSh2b2lkKWZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UobWFwcGlu Zywgb2Zmc2V0LCBvZmZzZXQgKyBsZW4gLSAxKTsNCisjZW5kaWYNCiAjZW5k aWYNCiAJDQogCXJldHVybiBlcnJvcjsNCkBAIC0xNjg5LDEzICsxOTUyLDkg QEAgbm5wZnNfcmVhZF9iYWNrcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgcw0K IAlzdHJ1Y3QgcGFnZSAqYmFja3BhZ2U7DQogCXVuc2lnbmVkIGxvbmcgb2Zm c2V0Ow0KIA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZF UlNJT04oMiw2LDE4KQ0KKwkodm9pZClvZmZzZXQ7DQorDQogCWJhY2twYWdl ID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgbiwgYmFja2ZpbGUpOw0K LSNlbHNlDQotCWJhY2twYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcs IG4sDQotCQkJCSAgIChmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFk cGFnZSwNCi0JCQkJICAgYmFja2ZpbGUpOw0KLSNlbmRpZg0KIAlpZiAoIUlT X0VSUihiYWNrcGFnZSkpIHsNCiAJCXdhaXRfb25fcGFnZV9sb2NrZWQoYmFj a3BhZ2UpOw0KIA0KQEAgLTE4NDIsMTEgKzIxMDEsMTcgQEAgbm5wZnNfcHJl cGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgcw0KIA0KIAlpZiAobW9k c2l6ZSA+IGlfc2l6ZV9yZWFkKGlub2RlKSkgew0KIAkJaW50IGVycm9yOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDgs MCkNCiAJCWVycm9yID0gdm10cnVuY2F0ZShpbm9kZSwgbW9kc2l6ZSk7DQor I2Vsc2UNCisJCWVycm9yID0gaW5vZGVfbmV3c2l6ZV9vayhpbm9kZSwgbW9k c2l6ZSk7DQorCQlpZighZXJyb3IpDQorCQkJdHJ1bmNhdGVfc2V0c2l6ZShp bm9kZSwgbW9kc2l6ZSk7DQorI2VuZGlmDQogCQlpZiAoZXJyb3IpIHsNCiAJ CQlwcmludGsoIm5ucGZzX3ByZXBhcmVfd3JpdGU6IHRydW5jYXRlKCVsbHUp IC0+ICVkXG4iLA0KIAkJCSAgICAgICBtb2RzaXplLCAtZXJyb3IpOw0KLQkJ CUJVRygpOyAvKiBYWFggbm90IGNvcnJlY3QgKi8NCisJCQkvKkJVRygpOyov IC8qIFhYWCBub3QgY29ycmVjdCAqLw0KIAkJfQ0KIAl9DQogDQpAQCAtMTg3 Miw0NCArMjEzNywxMTggQEAgbm5wZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgcw0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiBz dGF0aWMgaW50DQotbm5wZnNfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxlICpm aWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgZnJvbSwgdW5zaWdu ZWQgdG8pDQorbm5wZnNfd3JpdGVfYmVnaW4oc3RydWN0IGZpbGUgKmZpbGUs IHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3QgcG9zLA0K K3Vuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsIHN0cnVjdCBwYWdlICoq cGFnZXAsIHZvaWQgKipmc2RhdGEpDQogew0KLSAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gcGFnZS0+bWFwcGluZy0+aG9zdDsNCi0gICAgbG9mZl90IHBv cyA9ICgobG9mZl90KXBhZ2UtPmluZGV4IDw8IFBBR0VfQ0FDSEVfU0hJRlQp ICsgdG87DQorCXN0cnVjdCBwYWdlICpwYWdlOw0KKwlwZ29mZl90IGluZGV4 Ow0KKwl1bnNpZ25lZCBmcm9tOw0KKwlpbnQgcmV0ID0gMDsNCiANCi0gICAg aWYgKHBvcyA+IGlub2RlLT5pX3NpemUpIHsNCi0JaV9zaXplX3dyaXRlKGlu b2RlLCBwb3MpOw0KKwlpbmRleCA9IHBvcyA+PiBQQUdFX0NBQ0hFX1NISUZU Ow0KKwlmcm9tID0gcG9zICYgKFBBR0VfQ0FDSEVfU0laRSAtIDEpOw0KIA0K LQlzcGluX2xvY2soJmlub2RlLT5pX2xvY2spOw0KLQlpbm9kZS0+aV9ibG9j a3MgPSAocG9zICsgSV9CTE9DS1NfVU5JVCAtIDEpID4+IElfQkxPQ0tTX0JJ VFM7DQotCXNwaW5fdW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsNCi0gICAgfQ0K LSAgICBzZXRfcGFnZV9kaXJ0eShwYWdlKTsNCisJcGFnZSA9IGdyYWJfY2Fj aGVfcGFnZV93cml0ZV9iZWdpbihtYXBwaW5nLCBpbmRleCwgZmxhZ3MpOw0K KwlpZiAoIXBhZ2UpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJKnBhZ2Vw ID0gcGFnZTsNCisNCisJcmV0ID0gbm5wZnNfcHJlcGFyZV93cml0ZShmaWxl LCBwYWdlLCBmcm9tLCBmcm9tICsgbGVuKTsNCisJaWYgKHJldCkgew0KKwkJ dW5sb2NrX3BhZ2UocGFnZSk7DQorCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFn ZSk7DQorCX0NCisNCisJcmV0dXJuIHJldDsNCit9DQorI2VuZGlmDQogDQor LyogWFhYIHdlIHVzZSB0aGUgc3lzdGVtIHByb3ZpZGVkIHNpbXBsZV9jb21t aXRfd3JpdGUgaW5zdGVhZCBzbyB0aGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBm b3Igbm93ICovDQogI2lmIDANCi0gICAgew0KLQljaGFyICphZGRyOw0KLQlr bWFwKHBhZ2UpOw0KLQlhZGRyID0gcGFnZV9hZGRyZXNzKHBhZ2UpOw0KLQlO TlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfY29tbWl0X3dyaXRlKCVwKTog JXgleCV4JXhcbiIsDQorc3RhdGljIGludA0KK25ucGZzX2NvbW1pdF93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UsDQorCQkg ICB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykNCit7DQorCXN0cnVjdCBp bm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0Ow0KKwlsb2ZmX3Qg cG9zID0gKChsb2ZmX3QpcGFnZS0+aW5kZXggPDwgUEFHRV9DQUNIRV9TSElG VCkgKyB0bzsNCisNCisJaWYgKCFQYWdlVXB0b2RhdGUocGFnZSkpDQorCQlT ZXRQYWdlVXB0b2RhdGUocGFnZSk7DQorDQorCWlmIChwb3MgPiBpbm9kZS0+ aV9zaXplKSB7DQorCQlpX3NpemVfd3JpdGUoaW5vZGUsIHBvcyk7DQorDQor CQlzcGluX2xvY2soJmlub2RlLT5pX2xvY2spOw0KKwkJaW5vZGUtPmlfYmxv Y2tzID0gKHBvcyArIElfQkxPQ0tTX1VOSVQgLSAxKSA+PiBJX0JMT0NLU19C SVRTOw0KKwkJc3Bpbl91bmxvY2soJmlub2RlLT5pX2xvY2spOw0KKwl9DQor CXNldF9wYWdlX2RpcnR5KHBhZ2UpOw0KKw0KKyNpZiAwDQorCXsNCisJICAg IGNoYXIgKmFkZHI7DQorCSAgICBrbWFwKHBhZ2UpOw0KKwkgICAgYWRkciA9 IHBhZ2VfYWRkcmVzcyhwYWdlKTsNCisJICAgIE5OUEZTREVCKFhERUJWTk9Q UywgKCJubnBmc19jb21taXRfd3JpdGUoJXApOiAleCV4JXgleFxuIiwNCiAJ CQkgICAgIGZpbGUtPmZfbWFwcGluZy0+aG9zdCwgDQogCQkJICAgICBhZGRy WzBdLCBhZGRyWzFdLCBhZGRyWzJdLCBhZGRyWzNdKSk7DQotCWt1bm1hcChw YWdlKTsNCi0gICAgfQ0KKwkgICAga3VubWFwKHBhZ2UpOw0KKwl9DQogI2Vu ZGlmDQotICAgIA0KLSAgICByZXR1cm4gMDsNCisgDQorCXJldHVybiAwOw0K IH0NCisjZW5kaWYNCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwxOCkNCi1jb25zdA0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KKy8qIFhYWCB3 ZSB1c2UgdGhlIHN5c3RlbSBwcm92aWRlZCBzaW1wbGVfd3JpdGVfZW5kIGlu c3RlYWQgc28gdGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgZm9yIG5vdyAqLw0K KyNpZiAwDQorc3RhdGljIGludA0KK25ucGZzX3dyaXRlX2VuZChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxv ZmZfdCBwb3MsDQorCQl1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwg c3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQgKmZzZGF0YSkNCit7DQorCXVuc2ln bmVkIGZyb20gPSBwb3MgJiAoUEFHRV9DQUNIRV9TSVpFIC0gMSk7DQorDQor CS8qIHplcm8gdGhlIHN0YWxlIHBhcnQgb2YgdGhlIHBhZ2UgaWYgd2UgZGlk IGEgc2hvcnQgY29weSAqLw0KKwlpZiAoY29waWVkIDwgbGVuKSB7DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K KwkJdm9pZCAqa2FkZHIgPSBrbWFwX2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7 DQorI2Vsc2UNCisJCXZvaWQgKmthZGRyID0ga21hcF9hdG9taWMocGFnZSk7 DQorI2VuZGlmDQorCQltZW1zZXQoa2FkZHIgKyBmcm9tICsgY29waWVkLCAw LCBsZW4gLSBjb3BpZWQpOw0KKwkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs NiwwKQ0KKwkJa3VubWFwX2F0b21pYyhrYWRkciwgS01fVVNFUjApOw0KKyNl bHNlDQorCQlrdW5tYXBfYXRvbWljKGthZGRyKTsNCiAjZW5kaWYNCisJfQ0K Kw0KKwlubnBmc19jb21taXRfd3JpdGUoZmlsZSwgcGFnZSwgZnJvbSwgZnJv bSArIGNvcGllZCk7DQorDQorCXVubG9ja19wYWdlKHBhZ2UpOw0KKwlwYWdl X2NhY2hlX3JlbGVhc2UocGFnZSk7DQorDQorCXJldHVybiBjb3BpZWQ7DQor fQ0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KK2NvbnN0DQogc3RydWN0IGFkZHJl c3Nfc3BhY2Vfb3BlcmF0aW9ucyBubnBmc19hb3BzID0gew0KIAkucmVhZHBh Z2UgPSBubnBmc19yZWFkcGFnZSwNCiAJLndyaXRlcGFnZSA9IG5ucGZzX3dy aXRlcGFnZSwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMiw2LDI4KQ0KIAkucHJlcGFyZV93cml0ZSA9IG5ucGZzX3ByZXBh cmVfd3JpdGUsDQotCS5jb21taXRfd3JpdGUgPSBubnBmc19jb21taXRfd3Jp dGUsDQorCS5jb21taXRfd3JpdGUgPSBzaW1wbGVfY29tbWl0X3dyaXRlLA0K KyNlbHNlDQorCS53cml0ZV9iZWdpbiA9IG5ucGZzX3dyaXRlX2JlZ2luLA0K Kwkud3JpdGVfZW5kID0gc2ltcGxlX3dyaXRlX2VuZCwNCisjZW5kaWYNCiB9 Ow0KIA0KIC8qDQpAQCAtMTkxNywyMSArMjI1NiwzMCBAQCBzdHJ1Y3QgYWRk cmVzc19zcGFjZV9vcGVyYXRpb25zIG5ucGZzX2FvDQogICovDQogDQogc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19maWxlX29wZXJhdGlvbnMgPSB7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTYsMCkNCiAgICAgLmFpb19yZWFkCT0gbm5wZnNfYWlvX3JlYWQsDQogICAg IC5haW9fd3JpdGUJPSBubnBmc19haW9fd3JpdGUsDQorI2Vsc2UNCisgICAg LnJlYWRfaXRlcgk9IG5ucGZzX3JlYWRfaXRlciwNCisgICAgLndyaXRlX2l0 ZXIJPSBubnBmc193cml0ZV9pdGVyLA0KKyNlbmRpZg0KICAgICAubW1hcAk9 IG5ucGZzX2ZpbGVfbW1hcCwNCiAgICAgLm9wZW4JPSBubnBmc19vcGVuLA0K ICAgICAuZmx1c2gJPSBubnBmc19mbHVzaCwNCiAgICAgLnJlbGVhc2UJPSBu bnBmc19yZWxlYXNlX2ZpbGUsDQogICAgIC5mc3luYwk9IG5ucGZzX2ZzeW5j LA0KLSAgICAuc2VuZGZpbGUJPSBubnBmc19zZW5kZmlsZSwNCisgICAgLnNw bGljZV9yZWFkID0gbm5wZnNfc3BsaWNlX3JlYWQsDQogfTsNCiANCiBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZzX2RlYWRfb3BlcmF0aW9ucyA9IHsN CiB9Ow0KIA0KIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbm5wZnNfZGlyX29w ZXJhdGlvbnMgPSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTEsMCkNCiAgICAgLnJlYWRkaXIJPSBubnBmc19yZWFk ZGlyLA0KKyNlbHNlDQorICAgIC5pdGVyYXRlICAgID0gbm5wZnNfaXRlcmF0 ZSwNCisjZW5kaWYNCiAgICAgLmZsdXNoCT0gbm5wZnNfZmx1c2gsDQogfTsN CiANCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9s aW51eC9ubnBmc19sb2FkLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZz X2xvYWQuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNf bG9hZC5jCTIwMDYtMTAtMzEgMTE6MDI6NDEuMDAwMDAwMDAwICswMTAwDQor KysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2xvYWQuYwkyMDE2LTAx LTEzIDIwOjE0OjAyLjAwMDAwMDAwMCArMDEwMA0KQEAgLTU0LDcgKzU0LDEx IEBAIGV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZzX2ZvcHMN CiANCiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBubnBmc19mc190eXBlID0g ew0KICAgICAgICBuYW1lOiAgICAgICAgICAgIm5ucGZzIiwNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KICAg ICAgICBnZXRfc2I6ICAgICAgICAgbm5wZnNfZ2V0X3NiLA0KKyNlbHNlDQor ICAgICAgIG1vdW50OiAgICAgICAgICBubnBmc19tb3VudCwNCisjZW5kaWYN CiAgICAgICAga2lsbF9zYjogICAgICAgIGtpbGxfbGl0dGVyX3N1cGVyLA0K ICAgICAgICBvd25lcjogICAgICAgICAgVEhJU19NT0RVTEUsDQogfTsNCmRp ZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9u bnBmc19tZXNzYWdlLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX21l c3NhZ2UuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNf bWVzc2FnZS5jCTIwMDctMDEtMDkgMTc6MzM6MzEuMDAwMDAwMDAwICswMTAw DQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2UuYwky MDE2LTAxLTI0IDE4OjUyOjI4LjAwMDAwMDAwMCArMDEwMA0KQEAgLTQ1LDcg KzQ1LDcgQEANCiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4NCiANCiAjaWZk ZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBubnBmc19tZXNzYWdlLmMsdiAxLjE0 My4yLjEgMjAwNy8wMS8wOSAxNjozMzozMSB0b2wgRXhwICQiKTsNCitSQ1NJ RCgiJElkOiBubnBmc19tZXNzYWdlLmMsdiAxLjE0NSAyMDEwLzA4LzA4IDIw OjQzOjA1IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0KIA0KIHN0YXRpYyB2b2lk DQpAQCAtNTUsOSArNTUsMTUgQEAgc3RhdGljIHZvaWQNCiBubnBmc19kX3Jl bW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQogew0KICAgICBOTlBGU0RF QihYREVCTVNHLCAoIm5ucGZzX2RfcmVtb3ZlICVwXG4iLCBkZW50cnkpKTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2 LDM4KQ0KICAgICBzcGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCiAgICAgZGdl dF9sb2NrZWQoZGVudHJ5KTsNCiAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9s b2NrKTsNCisjZWxzZQ0KKyAgICBzcGluX2xvY2soJmRlbnRyeS0+ZF9sb2Nr KTsNCisgICAgZGdldF9kbG9jayhkZW50cnkpOw0KKyAgICBzcGluX3VubG9j aygmZGVudHJ5LT5kX2xvY2spOw0KKyNlbmRpZg0KICAgICBkX2Ryb3AoZGVu dHJ5KTsNCiAgICAgZHB1dChkZW50cnkpOw0KIH0NCkBAIC0xMjEsNyArMTI3 LDExIEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGUoc3RydWN0IG5ucGZz ICoNCiAgICAgc3RydWN0IGlub2RlICpkaSwgKmlub2RlOw0KICAgICBzdHJ1 Y3QgZGVudHJ5ICpwYXJlbnQgPSBOVUxMOw0KICAgICBzdHJ1Y3QgcXN0ciBz cXN0cjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmFsaWFzOw0KKyNl bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOSww KQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7DQorI2VuZGlmDQog ICAgIA0KICAgICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX21lc3NhZ2Vf aW5zdGFsbG5vZGVcbiIpKTsNCiAgICAgDQpAQCAtMTc2LDEyICsxODYsMjYg QEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxsbm9kZShzdHJ1Y3Qgbm5wZnMgKg0K ICAgICAgKg0KICAgICAgKi8NCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBhbGlhcyA9IGRp LT5pX2RlbnRyeS5uZXh0Ow0KICAgICB3aGlsZSAoYWxpYXMgIT0gJmRpLT5p X2RlbnRyeSkgew0KIAlwYXJlbnQgPSBsaXN0X2VudHJ5KGFsaWFzLCBzdHJ1 Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCi0Jc3Bpbl9sb2NrKCZkY2FjaGVfbG9j ayk7DQotCWRnZXRfbG9ja2VkKHBhcmVudCk7DQotCXNwaW5fdW5sb2NrKCZk Y2FjaGVfbG9jayk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw5LDApDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5 KHBhcmVudCwgYWxpYXMsICZkaS0+aV9kZW50cnksIGRfYWxpYXMpIHsNCisj ZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5 LDApDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgJmRpLT5p X2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbHNlDQorICAgIGhsaXN0X2Zvcl9l YWNoX2VudHJ5KHBhcmVudCwgJmRpLT5pX2RlbnRyeSwgZF91LmRfYWxpYXMp IHsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM4KQ0KKyAgICBzcGluX2xvY2soJmRjYWNoZV9sb2Nr KTsNCisgICAgZGdldF9sb2NrZWQocGFyZW50KTsNCisgICAgc3Bpbl91bmxv Y2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBzcGluX2xvY2soJnBh cmVudC0+ZF9sb2NrKTsNCisgICAgZGdldF9kbG9jayhwYXJlbnQpOw0KKyAg ICBzcGluX3VubG9jaygmcGFyZW50LT5kX2xvY2spOw0KKyNlbmRpZg0KIAlk ZW50cnkgPSBkX2xvb2t1cChwYXJlbnQsICZzcXN0cik7DQogCU5OUEZTREVC KFhERUJNU0csDQogCQkgKCJubnBmc19tZXNzYWdlX2luc3RhbGxub2RlOiBh bGlhcyAlcCwgbG9va3VwICVwXG4iLA0KQEAgLTIzMyw3ICsyNTcsOSBAQCBu bnBmc19tZXNzYWdlX2luc3RhbGxub2RlKHN0cnVjdCBubnBmcyAqDQogCQ0K IAlkcHV0KGRlbnRyeSk7DQogCWRlbnRyeSA9IE5VTEw7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlhbGlh cyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRpZg0KIAlkcHV0KHBhcmVudCk7DQog ICAgIH0NCiAgICAgTk5QRlNERUIoWERFQk1TRywgKCJubnBmc19tZXNzYWdl X2luc3RhbGxub2RlOiBkb25lIGluc3RhbGxpbmdcbiIpKTsNCkBAIC0yNjgs NyArMjk0LDEzIEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbGF0dHIoc3RydWN0 IG5ucGZzICoNCiAgICAgfQ0KIA0KICAgICBpbm9kZSA9IFhOT0RFX1RPX1ZO T0RFKHQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDYsMCkNCiAgICAgZGVudHJ5ID0gbGlzdF9lbnRyeShpbm9kZS0+ aV9kZW50cnkubmV4dCwgc3RydWN0IGRlbnRyeSwgZF9hbGlhcyk7DQorI2Vs aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww KQ0KKyAgICBkZW50cnkgPSBobGlzdF9lbnRyeShpbm9kZS0+aV9kZW50cnku Zmlyc3QsIHN0cnVjdCBkZW50cnksIGRfYWxpYXMpOw0KKyNlbHNlDQorICAg IGRlbnRyeSA9IGhsaXN0X2VudHJ5KGlub2RlLT5pX2RlbnRyeS5maXJzdCwg c3RydWN0IGRlbnRyeSwgZF91LmRfYWxpYXMpOw0KKyNlbmRpZg0KICAgICAN CiAgICAgTk5QRlNERUIoWERFQk1TRywgKCJubnBmc19tZXNzYWdlX2luc3Rh bGxhdHRyIG5hbWU6JXNcbiIsDQogCQkgICAgICAgZGVudHJ5LT5kX25hbWUu bmFtZSkpOw0KQEAgLTM5NiwxNyArNDI4LDM1IEBAIG5ucGZzX21lc3NhZ2Vf aW5zdGFsbGRhdGEoc3RydWN0IG5ucGZzICoNCiBzdGF0aWMgdm9pZA0KIGNs ZWFyX2FsbF9jaGlsZHJlbiAoc3RydWN0IGlub2RlICppbm9kZSwgaW50IHBh cmVudCkNCiB7DQorICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeTsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQog ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1 Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7DQorI2VuZGlmDQogDQogIGFnYWluOg0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzgpDQogICAgIHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNlDQor ICAgIHNwaW5fbG9jaygmaW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K ICAgICBhbGlhcyA9IGlub2RlLT5pX2RlbnRyeS5uZXh0Ow0KICAgICB3aGls ZSAoYWxpYXMgIT0gJmlub2RlLT5pX2RlbnRyeSkgew0KLQlzdHJ1Y3QgZGVu dHJ5ICpkZW50cnk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw5LDApDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5 KGRlbnRyeSwgYWxpYXMsICZpbm9kZS0+aV9kZW50cnksIGRfYWxpYXMpIHsN CisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDE5LDApDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwgJmlu b2RlLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbHNlDQorICAgIGhsaXN0 X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwgJmlub2RlLT5pX2RlbnRyeSwgZF91 LmRfYWxpYXMpIHsNCisjZW5kaWYNCiAJc3RydWN0IGxpc3RfaGVhZCAqc3Vi ZGlyczsNCiAJc3RydWN0IG5ucGZzX2RlbnRyeV9kYXRhICp4ZDsNCiAJDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiww KQ0KIAlkZW50cnkgPSBsaXN0X2VudHJ5KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5 LCBkX2FsaWFzKTsNCisjZW5kaWYNCiAJaWYgKGRlbnRyeSA9PSBOVUxMKSB7 DQogCSAgICBwcmludGsoS0VSTl9FTUVSRyAiTk5QRlMgUGFuaWM6IGRlbnRy eSBpbiBhbGlhcyBsaXN0IGlzIG51bGxcbiIpOw0KIAkgICAgYnJlYWs7DQpA QCAtNDIyLDcgKzQ3MiwxMSBAQCBjbGVhcl9hbGxfY2hpbGRyZW4gKHN0cnVj dCBpbm9kZSAqaW5vZGUsDQogCXN1YmRpcnMgPSBkZW50cnktPmRfc3ViZGly cy5uZXh0Ow0KIAl3aGlsZSAoc3ViZGlycyAhPSAmZGVudHJ5LT5kX3N1YmRp cnMpIHsNCiAJICAgIHN0cnVjdCBsaXN0X2hlYWQgKnRtcCA9IHN1YmRpcnM7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiAJICAgIHN0cnVjdCBkZW50cnkgKmNoaWxkID0gbGlzdF9lbnRy eSh0bXAsIHN0cnVjdCBkZW50cnksIGRfdS5kX2NoaWxkKTsNCisjZWxzZQ0K KwkgICAgc3RydWN0IGRlbnRyeSAqY2hpbGQgPSBsaXN0X2VudHJ5KHRtcCwg c3RydWN0IGRlbnRyeSwgZF9jaGlsZCk7DQorI2VuZGlmDQogCSAgICBzdWJk aXJzID0gdG1wLT5uZXh0Ow0KIAkgICAgTk5QRlNERUIoWERFQk1TRywgKCJj bGVhcl9hbGxfY2hpbGRyZW4gY2hpbGQ6ICUuKnMgaW5vZGU6ICVwLyVwICIN CiAJCQkgICAgICAgImRjb3VudDogJWQgYWxpYXNlczpcbiIsDQpAQCAtNDQy LDE0ICs0OTYsMjQgQEAgY2xlYXJfYWxsX2NoaWxkcmVuIChzdHJ1Y3QgaW5v ZGUgKmlub2RlLA0KIA0KIAkgICAgLyogVGhyb3cgaW1tZWRpYXRlbHkgKi8N CiAJICAgIGlmIChubnBmc19kY291bnQoY2hpbGQpID09IDApIHsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0K IAkgICAgICAgIHNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7DQorI2Vsc2UN CisJICAgICAgICBzcGluX3VubG9jaygmaW5vZGUtPmlfbG9jayk7DQorI2Vu ZGlmDQogCQlubnBmc19kX3JlbW92ZShjaGlsZCk7DQogCQlnb3RvIGFnYWlu Ow0KIAkgICAgfQ0KIAl9DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlhbGlhcyA9IGFsaWFzLT5uZXh0Ow0K KyNlbmRpZg0KICAgICB9DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAgICAgc3Bpbl91bmxvY2soJmRjYWNo ZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBzcGluX3VubG9jaygmaW5vZGUtPmlf bG9jayk7DQorI2VuZGlmDQogfQ0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtNjA1 LDEyICs2NjksMTAgQEAgZ2NfYmxvY2soc3RydWN0IG5ucGZzICpubnBmc3As DQogICAgIH0NCiANCiAgICAgaWYgKCFubnBmc19ibG9ja19oYXZlX3AoeG4s IG9mZnNldCkpIHsNCi0jaWYgMCAgIC8qIGhhcHBlbnMgd2hlbiBkYWVtb24g c2VuZHMgc2V2ZXJhbCBtZXNzYWdlcyBmb3Igc2FtZSBibG9jayAqLw0KIAlw cmludGsoS0VSTl9FTUVSRyAiTk5QRlMvZ2NfYmxvY2s6ICINCiAJICAgICAg ICJFTk9FTlQgKCVkLCVkLCVkLCVkKSAweCVsbHhcbiIsIA0KIAkgICAgICAg eG4tPmhhbmRsZS5hLCB4bi0+aGFuZGxlLmIsIHhuLT5oYW5kbGUuYywgeG4t PmhhbmRsZS5kLCANCiAJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpb2Zm c2V0KTsNCi0jZW5kaWYNCiAJcmV0dXJuIC1FTk9FTlQ7DQogICAgIH0NCiAN CkBAIC03MjEsMTIgKzc4MywyMiBAQCBubnBmc19tZXNzYWdlX3ZlcnNpb24o c3RydWN0IG5ucGZzICpubnBmDQogDQogICAgIC8qIHNhbml0eSBjaGVjayBi ZWZvcmUgd2UgbG9vayBhdCBpdCAqLw0KICAgICBpZiAoc2l6ZSA9PSBzaXpl b2YoKm1lc3NhZ2UpICYmIG1lc3NhZ2UtPnZlcnNpb24gPT0gTk5QRlNfVkVS U0lPTikgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDE5LDApDQogCXN0cnVjdCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UN CisJc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCiAJaW50IGVycm9yOw0K IA0KIAl1aW50NjRfdCBibG9ja3NpemUgPSBtZXNzYWdlLT5ibG9ja3NpemU7 DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRoX2xvb2t1cCgiLiIsIDAsICZuZCk7 DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxOSwwKQ0KKwllcnJvciA9IGtlcm5fcGF0aCgiLiIsIDAsICZuZC5wYXRo KTsNCisjZWxzZQ0KKwllcnJvciA9IGtlcm5fcGF0aCgiLiIsIDAsICZwYXRo KTsNCisjZW5kaWYNCiAJaWYgKGVycm9yKSB7DQogCSAgICAvKg0KIAkgICAg ICogQmFkIGNhY2hlIHJvb3QsIGp1c3QgcmV0dXJuLg0KQEAgLTczNywxMiAr ODA5LDIzIEBAIG5ucGZzX21lc3NhZ2VfdmVyc2lvbihzdHJ1Y3Qgbm5wZnMg Km5ucGYNCiAJCSAgICJubnBmc19tZXNzYWdlX3ZlcnNpb24gZmFpbGVkIHBh dGhfbG9va3VwLCAiDQogCQkgICAiZXJybm86ICVkXG4iLCBlcnJvcik7DQog CX0gZWxzZSB7DQotCSAgICBubnBmc3AtPmNhY2hlcm9vdCA9IG1udGdldChu ZC5tbnQpOw0KLQkgICAgbm5wZnNwLT5jYWNoZWRpciA9IGRnZXQobmQuZGVu dHJ5KTsNCi0JICAgIHBhdGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICBu bnBmc3AtPmNhY2hlcm9vdCA9IG1udGdldChuZC5wYXRoLm1udCk7DQorCSAg ICBubnBmc3AtPmNhY2hlZGlyID0gZGdldChuZC5wYXRoLmRlbnRyeSk7DQor CSAgICBwYXRoX3B1dCgmbmQucGF0aCk7DQorI2Vsc2UNCisJICAgIG5ucGZz cC0+Y2FjaGVyb290ID0gbW50Z2V0KHBhdGgubW50KTsNCisJICAgIG5ucGZz cC0+Y2FjaGVkaXIgPSBkZ2V0KHBhdGguZGVudHJ5KTsNCisJICAgIHBhdGhf cHV0KCZwYXRoKTsNCisjZW5kaWYNCiAJICAgIA0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMjkpDQogCSAgICBubnBm c3AtPnVpZCA9IGN1cnJlbnQtPmZzdWlkOw0KIAkgICAgbm5wZnNwLT5naWQg PSBjdXJyZW50LT5mc2dpZDsNCisjZWxzZQ0KKyAgICAgICAgICAgIG5ucGZz cC0+dWlkID0gY3VycmVudF9mc3VpZCgpOw0KKyAgICAgICAgICAgIG5ucGZz cC0+Z2lkID0gY3VycmVudF9mc2dpZCgpOw0KKyNlbmRpZg0KIA0KIAkgICAg LyogWFhYIHdlIHNob3VsZCB2YWxpZGF0ZSB0aGVzZSB2YWx1ZXMgKi8NCiAJ ICAgIG5ucGZzX2Jsb2Nrc2l6ZSA9IGJsb2Nrc2l6ZTsNCmRpZmYgLXVwck4g LVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19ub2Rl LmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX25vZGUuYw0KLS0tIGFy bGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfbm9kZS5jCTIwMDctMDEt MDMgMTQ6NTI6MDIuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25u cGZzL2xpbnV4L25ucGZzX25vZGUuYwkyMDE2LTAxLTE0IDE2OjUxOjExLjAw MDAwMDAwMCArMDEwMA0KQEAgLTEzMiw3ICsxMzIsMTIgQEAgbm5wZnNfc2V0 c2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1aW50Ng0KIAlwcmludGsoIm5u cGZzX3NldHNpemU6IHRydW5jYXRpbmcgQDB4JWxsdVxuIiwNCiAJICAgICAg ICh1bnNpZ25lZCBsb25nIGxvbmcpc2l6ZSk7DQogI2VuZGlmDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOCwwKQ0KIAl2 bXRydW5jYXRlKGlub2RlLCBzaXplKTsgLyogWFhYIHJldHZhbCAqLw0KKyNl bHNlDQorCWlmKCFpbm9kZV9uZXdzaXplX29rKGlub2RlLCBzaXplKSkNCisJ ICAgIHRydW5jYXRlX3NldHNpemUoaW5vZGUsIHNpemUpOw0KKyNlbmRpZg0K IAlubnBmc19ibG9ja190cnVuY2F0ZSh4biwgc2l6ZSk7DQogICAgIH0NCiB9 DQpAQCAtMTUwLDkgKzE1NSwxOCBAQCBubnBmc19hdHRyMmlub2RlKGNvbnN0 IHN0cnVjdCBubnBmc19hdHRyDQogCXN0cnVjdCB0aW1lc3BlYyBub3RpbWUg PSB7MH07DQogDQogCWlub2RlLT5pX21vZGUgICA9IDA7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJaW5v ZGUtPmlfdWlkICAgID0gMDsNCiAJaW5vZGUtPmlfZ2lkICAgID0gMDsNCisj ZWxzZQ0KKwlpbm9kZS0+aV91aWQgICAgPSBLVUlEVF9JTklUKDApOw0KKwlp bm9kZS0+aV9naWQgICAgPSBLR0lEVF9JTklUKDApOw0KKyNlbmRpZg0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDIsMCkN CiAJaW5vZGUtPmlfbmxpbmsgID0gMTsNCisjZWxzZQ0KKwlzZXRfbmxpbmso aW5vZGUsIDEpOw0KKyNlbmRpZg0KIAlpbm9kZS0+aV9hdGltZSAgPSBub3Rp bWU7DQogCWlub2RlLT5pX210aW1lICA9IG5vdGltZTsNCiAJaW5vZGUtPmlf Y3RpbWUgID0gbm90aW1lOw0KQEAgLTE2OSw3ICsxODMsMTEgQEAgbm5wZnNf YXR0cjJpbm9kZShjb25zdCBzdHJ1Y3Qgbm5wZnNfYXR0cg0KICAgICBpZiAo WEFfVkFMSURfR0lEKGF0dHIpKQ0KIAlpbm9kZS0+aV9naWQgICAgPSBhdHRy LT54YV9naWQ7DQogICAgIGlmIChYQV9WQUxJRF9OTElOSyhhdHRyKSkNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywyLDAp DQogCWlub2RlLT5pX25saW5rICA9IGF0dHItPnhhX25saW5rOw0KKyNlbHNl DQorCXNldF9ubGluayhpbm9kZSwgYXR0ci0+eGFfbmxpbmspOw0KKyNlbmRp Zg0KICAgICANCiAgICAgaWYgKFhBX1ZBTElEX1NJWkUoYXR0cikpIHsNCiAJ bm5wZnNfc2V0c2l6ZShpbm9kZSwgYXR0ci0+eGFfc2l6ZSk7DQpAQCAtNTEw LDEyICs1MjgsMjQgQEAgbm5wZnNfaGFzX3BhZyhjb25zdCBzdHJ1Y3Qgbm5w ZnNfbm9kZSAqeA0KIGludA0KIG5ucGZzX25vZGVfdXNlcnMoc3RydWN0IGlu b2RlICppbm9kZSkNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpw b3M7DQorI2Vsc2UNCisgICAgc3RydWN0IGhsaXN0X25vZGUgKnBvczsNCisj ZW5kaWYNCiAgICAgaW50IHVzZXJzID0gMDsNCiAgICAgDQogICAgIC8qIFhY WCB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBwcm90ZWN0ZWQgc29tZWhvdyAq Lw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDYsMCkNCiAgICAgbGlzdF9mb3JfZWFjaChwb3MsICZpbm9kZS0+aV9kZW50 cnkpIHsNCisjZWxzZQ0KKyAgICBobGlzdF9mb3JfZWFjaChwb3MsICZpbm9k ZS0+aV9kZW50cnkpIHsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KIAlzdHJ1Y3QgZGVudHJ5 ICpkZW50cnkgPSBsaXN0X2VudHJ5KHBvcywgc3RydWN0IGRlbnRyeSwgZF9h bGlhcyk7DQorI2Vsc2UNCisJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gbGlz dF9lbnRyeShwb3MsIHN0cnVjdCBkZW50cnksIGRfdS5kX2FsaWFzKTsNCisj ZW5kaWYNCiAJaWYgKG5ucGZzX2Rjb3VudChkZW50cnkpID4gMSkNCiAJICAg IHVzZXJzKys7DQogICAgIH0NCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0w LjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jIGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jDQotLS0gYXJsYS0wLjkw LW9sZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jCTIwMDctMDEtMDMg MTU6MjY6MjcuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzX3N5c2NhbGxzLmMJMjAxNi0wMi0yMCAxOTo0Mzo0Mi4w MDAwMDAwMDAgKzAxMDANCkBAIC00Miw3ICs0Miw5IEBADQogI2luY2x1ZGUg PG5ucGZzL25ucGZzX3N5c2NhbGxzLmg+DQogI2luY2x1ZGUgPG5ucGZzL25u cGZzX2NvbW1vbi5oPg0KICNpbmNsdWRlIDxsaW51eC9maWxlLmg+DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkN CiAjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4NCisjZW5kaWYNCiAjaW5j bHVkZSA8bGludXgvc21wLmg+DQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMu aD4NCiANCkBAIC01MCw2ICs1MiwxMSBAQA0KICNpbmNsdWRlIDxsaW51eC9z ZWN1cml0eS5oPg0KICNlbmRpZg0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oMyw3LDApDQorI3VuZGVmIFNZU0NBTExI QUNLDQorLyogdGhlIG1ldGhvZCB0byByZWFkICdsb3dlcl9ib3VuZCcgZG9l cyBub3Qgd29yayBvbiBrZXJuZWwgMy43IGFuZCBsYXRlciwgc2Ugbm5wZnNf c3lzY2FsbHMtbG9zc2FnZS5jICovDQorI2VuZGlmDQorDQogI2lmIDANCiAj aWZkZWYgQ09ORklHX0NPTVBBVA0KICNpbmNsdWRlIDxsaW51eC9pb2N0bDMy Lmg+DQpAQCAtNjQsNyArNzEsNyBAQA0KICN1bmRlZiBORUVEX1ZJQ0VJT0NU TDMyDQogDQogI2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5wZnNfc3lz Y2FsbHMuYyx2IDEuMTIyIDIwMDcvMDEvMDMgMTQ6MjY6MjcgdG9sIEV4cCAk Iik7DQorUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMuYyx2IDEuMTI1IDIw MTAvMDgvMDggMjA6NDM6MDYgdG9sIEV4cCAkIik7DQogI2VuZGlmDQogDQog c3RhdGljIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqbm5wZnNfcHJvY2ZzX2Rp cjsNCkBAIC04MiwxMiArODksMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgYWZzcHJv Y2RhdGEgew0KICAgICB1bnNpZ25lZCBsb25nIHN5c2NhbGw7DQogfSBhZnNw cm9jZGF0YTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM2KQ0KIHN0YXRpYyBpbnQNCiBubnBmc19wcm9jZnNf aW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUs DQogCQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7 DQorI2Vsc2UNCitzdGF0aWMgbG9uZw0KK25ucGZzX3Byb2Nmc19pb2N0bChz dHJ1Y3QgZmlsZSAqZmlsZSwNCisJCSAgIHVuc2lnbmVkIGludCBjbWQsIHVu c2lnbmVkIGxvbmcgYXJnKTsNCisjZW5kaWYNCiANCiBzdGF0aWMgc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyBubnBmc19wcm9jZnNfZm9wcyA9IHsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0K ICAgICAuaW9jdGwgPSBubnBmc19wcm9jZnNfaW9jdGwsDQorI2Vsc2UNCisg ICAgLnVubG9ja2VkX2lvY3RsID0gbm5wZnNfcHJvY2ZzX2lvY3RsLA0KKyNl bmRpZg0KIH07DQogDQogDQpAQCAtMTQ3LDUzICsxNjQsNDggQEAgc3RhdGlj IGludCBubnBmc19zZWNfcmVnaXN0ZXJlZCA9IDA7DQogI2RlZmluZSBTRUMy UEFHKHMpIChubnBmc19wYWdfdCkodW5zaWduZWQgbG9uZykocykNCiAjZGVm aW5lIFBBRzJTRUMocCkgKHZvaWQgKikodW5zaWduZWQgbG9uZykocCkNCiAN Ci1zdGF0aWMgaW50DQotbm5wZnNfc2VjX3Rhc2tfYWxsb2Moc3RydWN0IHRh c2tfc3RydWN0ICpwKQ0KLXsNCi0gICAgbm5wZnNfcGFnX3QgcGFnID0gU0VD MlBBRyhjdXJyZW50LT5zZWN1cml0eSk7DQotICAgIGlmIChwYWcpDQotCXAt PnNlY3VyaXR5ID0gUEFHMlNFQyhwYWcpOw0KLSAgICByZXR1cm4gMDsNCi19 DQotDQotc3RhdGljIHZvaWQNCi1ubnBmc19zZWNfdGFza19mcmVlKHN0cnVj dCB0YXNrX3N0cnVjdCAqcCkNCi17DQotICAgIG5ucGZzX3BhZ190IHBhZyA9 IFNFQzJQQUcocC0+c2VjdXJpdHkpOw0KLSAgICBpZiAocGFnKQ0KLQlwLT5z ZWN1cml0eSA9IE5VTEw7DQotfQ0KLQ0KIHN0YXRpYyBubnBmc19wYWdfdA0K IG5ucGZzX2dldF9wYWdfc2VjKHZvaWQpDQogew0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBubnBm c19wYWdfdCBwYWcgPSBTRUMyUEFHKGN1cnJlbnQtPnNlY3VyaXR5KTsNCisj ZWxzZQ0KKyAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFHKGN1cnJlbnRf c2VjdXJpdHkoKSk7DQorI2VuZGlmDQogICAgIGlmIChwYWcpDQogCXJldHVy biBwYWc7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogICAgIHJldHVybiBjdXJyZW50LT51aWQ7DQor I2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx NCwwKQ0KKyAgICByZXR1cm4gY3VycmVudF91aWQoKTsNCisjZWxzZQ0KKyAg ICB7IGt1aWRfdCBrdWlkID0gY3VycmVudF91aWQoKTsgcmV0dXJuIGt1aWQu dmFsOyB9DQorI2VuZGlmDQogfQ0KIA0KIHN0YXRpYyBpbnQNCiBubnBmc19z ZXRfcGFnX3NlYyh2b2lkKQ0KIHsNCiAgICAgc3RhdGljIG5ucGZzX3BhZ190 IHBhZ251bSA9IE5OUEZTX1BBR19MTElNOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDI5KQ0KKyAgICBzdHJ1Y3Qg Y3JlZCAqY3JlZDsNCisjZW5kaWYNCiANCiAgICAgaWYgKHBhZ251bSA9PSBO TlBGU19QQUdfVUxJTSkNCiAJcmV0dXJuIC1FTk9NRU07DQogICAgIC8qIHBh Z251bSA9IE5OUEZTX1BBR19MTElNOyAqLw0KICAgICANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg Y3VycmVudC0+c2VjdXJpdHkgPSBQQUcyU0VDKHBhZ251bSk7DQorI2Vsc2UN CisgICAgY3JlZCA9IChzdHJ1Y3QgY3JlZCAqKSBjdXJyZW50LT5jcmVkOw0K KyAgICBjcmVkLT5zZWN1cml0eSA9IFBBRzJTRUMocGFnbnVtKTsNCisjZW5k aWYNCiAgICAgcGFnbnVtKys7DQogICAgIHJldHVybiAwOw0KIH0NCiANCi1z dGF0aWMgc3RydWN0IHNlY3VyaXR5X29wZXJhdGlvbnMgbm5wZnNfc2VjX29w cyA9IHsNCi0gICAgLnRhc2tfYWxsb2Nfc2VjdXJpdHkgPSBubnBmc19zZWNf dGFza19hbGxvYywNCi0gICAgLnRhc2tfZnJlZV9zZWN1cml0eSA9IG5ucGZz X3NlY190YXNrX2ZyZWUsDQotLy8gICAgLnRhc2tfcmVwYXJlbnRfdG9faW5p dCA9IG5ucGZzX3NlY19yZXBhcmVudF90b19pbml0LA0KLX07DQotDQogI2Vu ZGlmIC8qIENPTkZJR19TRUNVUklUWSAqLw0KIA0KICNpZmRlZiBHUk9VUFBB R1MNCkBAIC0yMDYsNyArMjE4LDEyIEBAIGZpbmRfcGFnKHN0cnVjdCBncm91 cF9pbmZvICpnaSkNCiAgICAgTk5QRlNERUIoWERFQlNZUywgKCJmaW5kX3Bh Zzogbmdyb3VwcyA9ICVkXG4iLCBnaS0+bmdyb3VwcykpOw0KIA0KICAgICBm b3IgKGkgPSBnaS0+bmdyb3VwcyAtIDE7IGkgPj0gMDsgaS0tKSB7DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkN CiAJZ2lkX3QgZ3JvdXAgPSBHUk9VUF9BVChnaSwgaSk7DQorI2Vsc2UNCisJ a2dpZF90IGtncm91cCA9IEdST1VQX0FUKGdpLCBpKTsNCisJZ2lkX3QgZ3Jv dXAgPSBrZ3JvdXAudmFsOw0KKyNlbmRpZg0KIAlpZiAoKG5ucGZzX3BhZ190 KWdyb3VwID49IE5OUEZTX1BBR19MTElNICYmIChubnBmc19wYWdfdClncm91 cCA8IE5OUEZTX1BBR19VTElNKSB7DQogCSAgICBOTlBGU0RFQihYREVCU1lT LA0KIAkJICAgICAoImZpbmRfcGFnOiBFeGlzdGluZyBwYWcgJXUgYXQgcG9z ICV1XG4iLCBncm91cCwgaSkpOw0KQEAgLTIyMiwxNSArMjM5LDMxIEBAIGZp bmRfcGFnKHN0cnVjdCBncm91cF9pbmZvICpnaSkNCiBzdGF0aWMgbm5wZnNf cGFnX3QNCiBubnBmc19nZXRfcGFnX2dyb3VwKHZvaWQpDQogew0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0K ICAgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kgPSBjdXJyZW50LT5ncm91cF9p bmZvOw0KICAgICBubnBmc19wYWdfdCByZXQgPSBjdXJyZW50LT51aWQ7DQor I2Vsc2UNCisgICAgc3RydWN0IGdyb3VwX2luZm8gKmdpID0gZ2V0X2N1cnJl bnRfZ3JvdXBzKCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTQsMCkNCisgICAgbm5wZnNfcGFnX3QgcmV0ID0gY3Vy cmVudF91aWQoKTsNCisjZWxzZQ0KKyAgICBrdWlkX3Qga3VpZCA9IGN1cnJl bnRfdWlkKCk7DQorICAgIG5ucGZzX3BhZ190IHJldCA9IGt1aWQudmFsOw0K KyNlbmRpZg0KKyNlbmRpZg0KICAgICBpbnQgaTsNCiANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg Z2V0X2dyb3VwX2luZm8oZ2kpOw0KKyNlbmRpZg0KIA0KICAgICBpID0gZmlu ZF9wYWcoZ2kpOw0KICAgICBpZiAoaSAhPSBOTlBGU19QQUdfTk9URk9VTkQp DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTQsMCkNCiAJcmV0ID0gR1JPVVBfQVQoZ2ksIGkpOw0KKyNlbHNlDQorCXsg a2dpZF90IGtnaWQgPSBHUk9VUF9BVChnaSwgaSk7IHJldCA9IGtnaWQudmFs OyB9DQorI2VuZGlmDQogDQogICAgIHB1dF9ncm91cF9pbmZvKGdpKTsNCiAN CkBAIC0yNDIsMTMgKzI3NSwxOSBAQCBubnBmc19nZXRfcGFnX2dyb3VwKHZv aWQpDQogc3RhdGljIGludA0KIHN0b3JlX3BhZyhubnBmc19wYWdfdCBwYWdu dW0pDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZF UlNJT04oMiw2LDI4KQ0KICAgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAqb2xkX2dp ID0gY3VycmVudC0+Z3JvdXBfaW5mbzsNCisjZWxzZQ0KKyAgIHN0cnVjdCBn cm91cF9pbmZvICpvbGRfZ2kgPSBnZXRfY3VycmVudF9ncm91cHMoKTsNCisj ZW5kaWYNCiAgICAgc3RydWN0IGdyb3VwX2luZm8gKm5ld19naTsNCi0gICAg aW50IG5ibG9ja3MsIGNvdW50Ow0KKyAgICB1bnNpZ25lZCBpbnQgbmJsb2Nr cywgY291bnQ7DQogICAgIGludCBmb3VuZCA9IDA7DQogICAgIGludCBpLCBr Ow0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkgICAgDQogICAgIGdldF9ncm91cF9pbmZvKG9sZF9n aSk7DQorI2VuZGlmDQogDQogICAgIGkgPSBmaW5kX3BhZyhvbGRfZ2kpOw0K ICAgICBpZiAoaSAhPSBOTlBGU19QQUdfTk9URk9VTkQpDQpAQCAtMjc0LDEw ICszMTMsMTcgQEAgc3RvcmVfcGFnKG5ucGZzX3BhZ190IHBhZ251bSkNCiAJ Y291bnQgLT0gTkdST1VQU19QRVJfQkxPQ0s7DQogICAgIH0NCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0K ICAgICBpZiAoZm91bmQpDQogCUdST1VQX0FUKG5ld19naSwgaSkgPSBwYWdu dW07DQogICAgIGVsc2UNCiAJR1JPVVBfQVQobmV3X2dpLCBuZXdfZ2ktPm5n cm91cHMgLSAxKSA9IHBhZ251bTsNCisjZWxzZQ0KKyAgICBpZiAoZm91bmQp DQorCXsga2dpZF90IGtnaWQgPSBLR0lEVF9JTklUKHBhZ251bSk7IEdST1VQ X0FUKG5ld19naSwgaSkgPSBrZ2lkOyB9DQorICAgIGVsc2UNCisJeyBrZ2lk X3Qga2dpZCA9IEtHSURUX0lOSVQocGFnbnVtKTsgR1JPVVBfQVQobmV3X2dp LCBuZXdfZ2ktPm5ncm91cHMgLSAxKSA9IGtnaWQ7IH0NCisjZW5kaWYNCiAg ICAgDQogICAgIHNldF9jdXJyZW50X2dyb3VwcyhuZXdfZ2kpOw0KICAgICBw dXRfZ3JvdXBfaW5mbyhuZXdfZ2kpOw0KQEAgLTMxNyw3ICszNjMsMTMgQEAg bm5wZnNfZ2V0X3BhZygpDQogICAgIHJldHVybiBubnBmc19nZXRfcGFnX2dy b3VwKCk7DQogI2VuZGlmIC8qIEdST1VQUEFHUyAqLw0KIA0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAg ICByZXR1cm4gY3VycmVudC0+dWlkOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAgcmV0dXJuIGN1 cnJlbnRfdWlkKCk7DQorI2Vsc2UNCisgICAgeyBrdWlkX3Qga3VpZCA9IGN1 cnJlbnRfdWlkKCk7IHJldHVybiBrdWlkLnZhbDsgfQ0KKyNlbmRpZg0KIH0N CiANCiBzdGF0aWMgaW5saW5lIGludA0KQEAgLTQyMiw3ICs0NzQsNyBAQCBu bnBmc19zZXRncm91cHMxNiAoaW50IGdpZHNldHNpemUsIG9sZF9nDQogI2Vu ZGlmIC8qIFNZU0NBTExIQUNLICovDQogI2VuZGlmIC8qIEdST1VQUEFHUyAq Lw0KIA0KLXN0cnVjdCBmaWxlX2hhbmRsZSB7DQorc3RydWN0IG5ucGZzX2Zp bGVfaGFuZGxlIHsNCiAgICAgbm5wZnNfZGV2X3QgZGV2Ow0KICAgICBpbm9f dCBpbm9kZTsNCiAgICAgX191MzIgZ2VuOw0KQEAgLTUwOSwyNiArNTYxLDU4 IEBAIG5ucGZzX2RlYnVnX3ByaW50IChzdHJ1Y3QgYXJsYVZpY2VJb2N0bCAN CiAgKiBmb2xsb3cgc3ltbGlua3MgaWZmIGBmb2xsb3cnDQogICovDQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks MCkNCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQogdXNlcl9wYXRoMmRlbnRy eSAoc3RydWN0IG5hbWVpZGF0YSAqbmQsIGNoYXIgKnVzZXJfcGF0aCwgaW50 IGZvbGxvdykNCisjZWxzZQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICoNCit1 c2VyX3BhdGgyZGVudHJ5IChzdHJ1Y3QgcGF0aCAqcGF0aCwgY2hhciAqdXNl cl9wYXRoLCBpbnQgZm9sbG93KQ0KKyNlbmRpZg0KIHsNCiAgICAgY2hhciAq a25hbWU7DQogICAgIGludCBmbGFncyA9IDA7DQogICAgIGludCBlcnJvciA9 IDA7DQogDQotICAgIGtuYW1lID0gZ2V0bmFtZSAodXNlcl9wYXRoKTsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDAp DQorICAgIGtuYW1lID0gZ2V0bmFtZSh1c2VyX3BhdGgpOw0KKyNlbHNlDQor ICAgIGtuYW1lID0gX19nZXRuYW1lKCk7DQorI2VuZGlmDQorDQogICAgIGlm IChJU19FUlIoa25hbWUpKQ0KIAlyZXR1cm4gRVJSX1BUUihQVFJfRVJSKGtu YW1lKSk7DQogICAgIGlmIChmb2xsb3cpDQogCWZsYWdzIHw9IExPT0tVUF9G T0xMT1c7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigzLDcsMCkNCisgICAgZXJyb3IgPSBzdHJuY3B5X2Zyb21fdXNl cihrbmFtZSwgdXNlcl9wYXRoLCBQQVRIX01BWCk7DQorICAgIGlmIChlcnJv ciA8IDAgfHwgZXJyb3IgPT0gUEFUSF9NQVgpIHsNCisJX19wdXRuYW1lKGtu YW1lKTsNCisJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOw0KKyAgICB9DQorI2Vu ZGlmDQorDQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfc3lzY2Fs bDogbG9va2luZyB1cDogJXNcbiIsIGtuYW1lKSk7DQogDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAg ZXJyb3IgPSBwYXRoX2xvb2t1cChrbmFtZSwgZmxhZ3MsIG5kKTsNCisjZWxp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp DQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1lLCBmbGFncywgJihuZC0+ cGF0aCkpOw0KKyNlbHNlDQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1l LCBmbGFncywgcGF0aCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KICAgICBwdXRuYW1lKGtu YW1lKTsNCisjZWxzZQ0KKyAgICBfX3B1dG5hbWUoa25hbWUpOw0KKyNlbmRp Zg0KICAgICBpZiAoZXJyb3IpDQogCXJldHVybiBFUlJfUFRSKGVycm9yKTsN Ci0gICAgcmV0dXJuIG5kLT5kZW50cnk7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgcmV0dXJuIG5k LT5wYXRoLmRlbnRyeTsNCisjZWxzZQ0KKyAgICByZXR1cm4gcGF0aC0+ZGVu dHJ5Ow0KKyNlbmRpZg0KIH0NCiANCiBhc21saW5rYWdlIGxvbmcNCkBAIC01 NDAsMTIgKzYyNCwyNCBAQCBzeXNfYWZzX2ludCAoaW50IG9wZXJhdGlvbiwN CiB7DQogICAgIGxvbmcgZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgYXJsYVZp Y2VJb2N0bCB2aWNlX2lvY3RsOyANCi0gICAgc3RydWN0IG5ucGZzX21lc3Nh Z2VfcGlvY3RsIG1zZzsNCisgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcGlv Y3RsICptc2cgPSBOVUxMOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93 YWtldXAgKm1zZzI7DQogICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IE5V TEw7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsMTksMCkNCiAgICAgc3RydWN0IG5hbWVpZGF0YSBuZDsNCisjZWxzZQ0K KyAgICBzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNlbmRpZg0KICAgICANCisgICAg bXNnID0ga21hbGxvYyhzaXplb2YoKm1zZyksIEdGUF9LRVJORUwpOw0KKyAg ICBpZiAobXNnID09IE5VTEwpDQorICAgICAgcmV0dXJuIC1FTk9NRU07DQor DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzOSkNCiAgICAgbG9ja19rZXJuZWwoKTsNCisjZWxzZQ0KKyAgICAvKiBY WFggbG9ja19rZXJuZWwoKSBpcyByZW1vdmVkLCBjb25zaWRlciBhZGRpbmcg YW4gcHJpdmF0ZSBsb2NrICovDQorI2VuZGlmDQogDQogICAgIE5OUEZTREVC KFhERUJTWVMsICgic3lzX2FmcyBrZXJuZWwgbG9ja2VkXG4iKSk7DQogDQpA QCAtNTc1LDcgKzY3MSw3IEBAIHN5c19hZnNfaW50IChpbnQgb3BlcmF0aW9u LA0KIAkgICAgZ290byB1bmxvY2s7DQogCX0NCiAJaWYgKHZpY2VfaW9jdGwu aW5fc2l6ZSAhPSAwKSB7DQotCSAgICBpZihjb3B5X2Zyb21fdXNlcigmbXNn Lm1zZywNCisJICAgIGlmKGNvcHlfZnJvbV91c2VyKCZtc2ctPm1zZywNCiAJ CQkgICAgICB2aWNlX2lvY3RsLmluLA0KIAkJCSAgICAgIHZpY2VfaW9jdGwu aW5fc2l6ZSkgIT0gMCkgew0KIAkJZXJyb3IgPSAtRUZBVUxUOw0KQEAgLTU4 Myw3ICs2NzksMTEgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQog CSAgICB9DQogCX0NCiAJaWYgKGFfcGF0aFAgIT0gTlVMTCkgew0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog CSAgICBkZW50cnkgPSB1c2VyX3BhdGgyZGVudHJ5ICgmbmQsIGFfcGF0aFAs IGFfZm9sbG93U3ltbGlua3MpOw0KKyNlbHNlDQorCSAgICBkZW50cnkgPSB1 c2VyX3BhdGgyZGVudHJ5ICgmcGF0aCwgYV9wYXRoUCwgYV9mb2xsb3dTeW1s aW5rcyk7DQorI2VuZGlmDQogCSAgICBpZiAoIWRlbnRyeSkgew0KIAkJZXJy b3IgPSAtRUlOVkFMOw0KIAkJZ290byB1bmxvY2s7DQpAQCAtNjI4LDE5ICs3 MjgsMjMgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogCQllcnJv ciA9IC1FSU5WQUw7DQogCQlnb3RvIHVubG9jazsNCiAJICAgIH0NCi0JICAg IG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwkgICAgbXNnLT5oYW5kbGUg PSB4bi0+aGFuZGxlOw0KIAl9DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0g Tk5QRlNfTVNHX1BJT0NUTDsNCi0JbXNnLm9wY29kZSA9IGFfb3Bjb2RlOw0K Kwltc2ctPmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfUElPQ1RMOw0KKwlt c2ctPm9wY29kZSA9IGFfb3Bjb2RlOw0KIAkNCi0JbXNnLmluc2l6ZSAgID0g dmljZV9pb2N0bC5pbl9zaXplOw0KLQltc2cub3V0c2l6ZSAgPSB2aWNlX2lv Y3RsLm91dF9zaXplOw0KLQltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7 DQotCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCisJbXNnLT5p bnNpemUgICA9IHZpY2VfaW9jdGwuaW5fc2l6ZTsNCisJbXNnLT5vdXRzaXpl ICA9IHZpY2VfaW9jdGwub3V0X3NpemU7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQorCW1zZy0+Y3JlZC51 aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy0+Y3Jl ZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KKwltc2ctPmNyZWQu cGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAkNCi0JZXJyb3IgPSBubnBmc19t ZXNzYWdlX3JwYygmbm5wZnNbMF0sICZtc2cuaGVhZGVyLCBzaXplb2YobXNn KSk7IC8qIFhYWCAqLw0KLQltc2cyID0gKHN0cnVjdCBubnBmc19tZXNzYWdl X3dha2V1cCAqKSAmbXNnOw0KKwllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBj KCZubnBmc1swXSwgJm1zZy0+aGVhZGVyLCBzaXplb2YoKm1zZykpOyAvKiBY WFggKi8NCisJbXNnMiA9IChzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAg KikgbXNnOw0KIAlpZiAoZXJyb3IgPT0gMCkNCiAJICAgIGVycm9yID0gbXNn Mi0+ZXJyb3I7DQogDQpAQCAtNjc1LDEyICs3NzksMjEgQEAgc3lzX2Fmc19p bnQgKGludCBvcGVyYXRpb24sDQogICAgIA0KICB1bmxvY2s6DQogICAgIGlm IChkZW50cnkpDQotCXBhdGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCXBhdGhf cHV0KCZuZC5wYXRoKTsNCisjZWxzZQ0KKwlwYXRoX3B1dCgmcGF0aCk7DQor I2VuZGlmDQogDQogICAgIE5OUEZTREVCKFhERUJTWVMsICgibm5wZnNfc3lz Y2FsbCByZXR1cm5zIGVycm9yOiAlbGRcbiIsIGVycm9yKSk7DQogDQogICAg IE5OUEZTREVCKFhERUJTWVMsICgic3lzX2FmcyBrZXJuZWwgdW5sb2NrXG4i KSk7DQorICAgIGtmcmVlKG1zZyk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAgdW5sb2NrX2tlcm5l bCgpOw0KKyNlbHNlDQorICAgIC8qIFhYWCBzZWUgdGhlIGNvbW1lbnQgYXQg bG9ja19rZXJuZWwoKSBhYm92ZSAqLw0KKyNlbmRpZg0KIA0KICAgICByZXR1 cm4gZXJyb3I7DQogfQ0KQEAgLTcyOSw5ICs4NDIsMTUgQEAgc3lzX2FmcyAo aW50IG9wZXJhdGlvbiwNCiAJCSAgICAgICBhX2ZvbGxvd1N5bWxpbmtzKTsN CiB9DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDIsNiwzNikNCiBzdGF0aWMgaW50DQogbm5wZnNfcHJvY2ZzX2lvY3Rs KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLA0KIAkJ ICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQorI2Vs c2UNCitzdGF0aWMgbG9uZw0KK25ucGZzX3Byb2Nmc19pb2N0bChzdHJ1Y3Qg ZmlsZSAqZmlsZSwNCisJCSAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVk IGxvbmcgYXJnKQ0KKyNlbmRpZg0KIHsNCiAgICAgYWZzcHJvY2RhdGEgYXJn czsNCiAgICAgbG9uZyByZXQ7DQpAQCAtNzgwLDIxICs4OTksMzEgQEAgc3Rh dGljIGludCBubnBmc19pbml0X3Byb2Nmcyh2b2lkKQ0KIHsNCiAgICAgc3Ry dWN0IHByb2NfZGlyX2VudHJ5ICplbnRyeTsNCiAgICAgDQotICAgIG5ucGZz X3Byb2Nmc19kaXIgPSBwcm9jX21rZGlyKE5OUEZTX1BST0NfRElSLCBwcm9j X3Jvb3RfZnMpOw0KKyAgICBubnBmc19wcm9jZnNfZGlyID0gcHJvY19ta2Rp cigiZnMvIiBOTlBGU19QUk9DX0RJUiwgTlVMTCk7DQogICAgIGlmIChubnBm c19wcm9jZnNfZGlyID09IE5VTEwpDQogCXJldHVybiAtRU5PTUVNOw0KICAg ICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Miw2LDMwKQ0KICAgICBubnBmc19wcm9jZnNfZGlyLT5vd25lciA9IFRISVNf TU9EVUxFOw0KKyNlbmRpZg0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMCwwKQ0KICAgICBlbnRyeSA9IGNy ZWF0ZV9wcm9jX2VudHJ5KE5OUEZTX1BST0NfTk9ERSwgMDY2Niwgbm5wZnNf cHJvY2ZzX2Rpcik7DQorI2Vsc2UNCisgICAgZW50cnkgPSBwcm9jX2NyZWF0 ZShOTlBGU19QUk9DX05PREUsIDA2NjYsIE5VTEwsICZubnBmc19wcm9jZnNf Zm9wcyk7DQorI2VuZGlmDQogICAgIGlmIChlbnRyeSA9PSBOVUxMKSB7DQog CU5OUEZTREVCKFhERUJTWVMsICgibm5wZnNfaW5pdF9wcm9jZnM6IG5vIG5v ZGVcbiIpKTsNCi0JcmVtb3ZlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19ESVIs IHByb2Nfcm9vdF9mcyk7DQorCXJlbW92ZV9wcm9jX2VudHJ5KCJmcy8iIE5O UEZTX1BST0NfRElSLCBOVUxMKTsNCiAJcmV0dXJuIC1FTk9NRU07DQogICAg IH0NCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDIsNiwzMCkNCiAgICAgZW50cnktPm93bmVyID0gVEhJU19NT0RV TEU7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTAsMCkNCiAgICAgZW50cnktPnByb2NfZm9wcyA9ICZu bnBmc19wcm9jZnNfZm9wczsNCisjZW5kaWYNCiANCiAjaWZkZWYgU1lTQ0FM TENPTVBBVA0KICAgICBpZiAocmVnaXN0ZXJfaW9jdGwzMl9jb252ZXJzaW9u KEFSTEFfVklPQ19TWVNDQUxMMzIsIG5ucGZzX3Byb2Nmc19pb2N0bDMyKSkg ew0KQEAgLTgxNSw3ICs5NDQsNyBAQCBzdGF0aWMgdm9pZCBubnBmc19leGl0 X3Byb2Nmcyh2b2lkKQ0KICAgICB9DQogI2VuZGlmIC8qIFNZU0NBTExDT01Q QVQgKi8NCiAgICAgcmVtb3ZlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19OT0RF LCBubnBmc19wcm9jZnNfZGlyKTsNCi0gICAgcmVtb3ZlX3Byb2NfZW50cnko Tk5QRlNfUFJPQ19ESVIsIHByb2Nfcm9vdF9mcyk7DQorICAgIHJlbW92ZV9w cm9jX2VudHJ5KCJmcy8iIE5OUEZTX1BST0NfRElSLCBOVUxMKTsNCiB9DQog DQogI2lmZGVmIEdST1VQUEFHUw0KQEAgLTgzOSwxNCArOTY4LDYgQEAgaW5z dGFsbF9zZXRncm91cHModm9pZCkNCiB2b2lkDQogaW5zdGFsbF9hZnNfc3lz Y2FsbCh2b2lkKQ0KIHsNCi0jaWZkZWYgQ09ORklHX1NFQ1VSSVRZDQotICAg IGlmIChyZWdpc3Rlcl9zZWN1cml0eSgmbm5wZnNfc2VjX29wcykpDQotCU5O UEZTREVCKFhERUJTWVMsDQotCQkgKCJpbnN0YWxsX2Fmc19zeXNjYWxsOiBu bnBmc19pbml0X3NlYyBmYWlsZWRcbiIpKTsNCi0gICAgZWxzZQ0KLQlubnBm c19zZWNfcmVnaXN0ZXJlZCA9IDE7DQotI2VuZGlmDQotDQogICAgIG5ucGZz X2luaXRfcHJvY2ZzKCk7DQogDQogI2lmZGVmIFNZU0NBTExIQUNLDQpAQCAt ODg3LDEyICsxMDA4LDYgQEAgcmVzdG9yZV9hZnNfc3lzY2FsbCAodm9pZCkN CiAjZW5kaWYNCiAjZW5kaWYgLyogU1lTQ0FMTEhBQ0sgKi8NCiANCi0jaWZk ZWYgQ09ORklHX1NFQ1VSSVRZDQotICAgIGlmIChubnBmc19zZWNfcmVnaXN0 ZXJlZCkNCi0JaWYgKHVucmVnaXN0ZXJfc2VjdXJpdHkoJm5ucGZzX3NlY19v cHMpKQ0KLQkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIm5ucGZzX2V4aXRfc2Vj OiBjb3VsZG4ndCB1bnJlZ2lzdGVyXG4iKTsNCi0jZW5kaWYgLyogIUNPTkZJ R19TRUNVUklUWSAqLw0KLQ0KICNpZmRlZiBHUk9VUFBBR1MNCiAjaWZkZWYg U1lTQ0FMTEhBQ0sNCiAgICAgaWYgKG9sZF9zZXRncm91cHMpIHsNCmRpZmYg LXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBm c19zeXNjYWxscy1sb3NzYWdlLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25u cGZzX3N5c2NhbGxzLWxvc3NhZ2UuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5w ZnMvbGludXgvbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jCTIwMDYtMTItMTEg MTc6MzE6NDUuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYwkyMDE2LTAxLTEzIDIx OjUxOjQ5LjAwMDAwMDAwMCArMDEwMA0KQEAgLTQ3LDExICs0NywyMCBAQA0K ICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4NCiANCiAjaWZkZWYgUkNTSUQN Ci1SQ1NJRCgiJElkOiBubnBmc19zeXNjYWxscy1sb3NzYWdlLmMsdiAxLjE3 IDIwMDYvMTIvMTEgMTY6MzE6NDUgdG9sIEV4cCAkIik7DQorUkNTSUQoIiRJ ZDogbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jLHYgMS4xOSAyMDEwLzA4LzA4 IDIwOjQzOjA1IHRvbCBFeHAgJCIpOw0KKyNlbmRpZg0KKw0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMyw3LDApDQorLyog dGhlIG1ldGhvZCB0byByZWFkICdsb3dlcl9ib3VuZCcgZG9lcyBub3Qgd29y ayBvbiBrZXJuZWwgMy43IGFuZCBsYXRlciAqLw0KKyN1bmRlZiBTWVNDQUxM SEFDSw0KICNlbmRpZg0KIA0KICNpbmNsdWRlIDxsaW51eC9rYWxsc3ltcy5o Pg0KKyNpZmRlZiBTWVNDQUxMSEFDSw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDcsMCkNCiBzdGF0aWMgdm9pZCAqbG93 ZXJfYm91bmQgPSAma2VybmVsX3RocmVhZDsNCisjZW5kaWYNCisjZW5kaWYN CiANCiB2b2lkICogX19hdHRyaWJ1dGVfXygod2VhaykpIHN5c19jYWxsX3Rh YmxlKHZvaWQpOw0KIG5ucGZzX3N5c19jYWxsX2Z1bmN0aW9uICpubnBmc19z eXNfY2FsbF90YWJsZSA9DQpAQCAtNjMsNiArNzIsMTEgQEAgY29uc3QgY2hh ciAqIF9fYXR0cmlidXRlX18oKHdlYWspKQ0KIAkJICAgIHVuc2lnbmVkIGxv bmcgKm9mZnNldCwNCiAJCSAgICBjaGFyICoqbW9kbmFtZSwgY2hhciAqbmFt ZWJ1Zik7DQogDQorI2lmZGVmIF9feDg2XzY0X18NCitleHRlcm4gcndsb2Nr X3QgdGFza2xpc3RfbG9jayBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSk7DQorI2Vu ZGlmDQorDQorI2lmZGVmIFNZU0NBTExIQUNLDQogc3RhdGljIHZvaWQgKioN CiBnZXRfc3RhcnRfYWRkcih2b2lkKSB7DQogI2lmZGVmIF9feDg2XzY0X18N CkBAIC03MSw2ICs4NSw3IEBAIGdldF9zdGFydF9hZGRyKHZvaWQpIHsNCiAg ICAgcmV0dXJuICh2b2lkICoqKSZtdXRleF9sb2NrOw0KICNlbmRpZg0KIH0N CisjZW5kaWYNCiANCiBzdGF0aWMgaW5saW5lIGludCANCiBrYWxsc3ltX2lz X2VxdWFsKHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3QgY2hhciAqbmFtZSkN CkBAIC0xMzksNiArMTU0LDggQEAgdmVyaWZ5KHZvaWQgKipwKSB7DQogICAg IHJldHVybiAxOw0KIH0NCiANCisjaWZkZWYgU1lTQ0FMTEhBQ0sNCisNCiBz dGF0aWMgaW5saW5lIGludCBsb29rc19nb29kKHZvaWQgKipwKQ0KIHsNCiAg ICAgaWYgKCpwIDw9ICh2b2lkKilsb3dlcl9ib3VuZCB8fCAqcCA+PSAodm9p ZCopcCkNCkBAIC0xODgsMyArMjA1LDUgQEAgbm5wZnNfZml4dXBfc3lzY2Fs bF9sb3NzYWdlKHZvaWQpDQogDQogICAgIHJldHVybiAwOw0KIH0NCisNCisj ZW5kaWYNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBm cy9saW51eC9ubnBmc192ZnNvcHMuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgv bm5wZnNfdmZzb3BzLmMNCi0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4 L25ucGZzX3Zmc29wcy5jCTIwMDYtMTItMTEgMTc6NDM6MzUuMDAwMDAwMDAw ICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3Zmc29w cy5jCTIwMTYtMDItMTQgMDE6MzY6MDYuMDAwMDAwMDAwICswMTAwDQpAQCAt NDQsMzAgKzQ0LDI2IEBADQogI2luY2x1ZGUgPGxpbnV4L21tLmg+DQogDQog I2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5wZnNfdmZzb3BzLmMsdiAx LjEwOSAyMDA2LzEyLzExIDE2OjQzOjM1IHRvbCBFeHAgJCIpOw0KK1JDU0lE KCIkSWQ6IG5ucGZzX3Zmc29wcy5jLHYgMS4xMTEgMjAxMC8wOC8wOCAyMDo0 MzowNiB0b2wgRXhwICQiKTsNCiAjZW5kaWYNCiANCiBzdHJ1Y3Qgbm5wZnMg bm5wZnNbTk5OUEZTXTsNCiANCi1zdGF0aWMgdm9pZCBubnBmc19yZWFkX2lu b2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOw0KIHN0YXRpYyB2b2lkIG5ucGZz X3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsNCi1zdGF0aWMg dm9pZCBubnBmc19wdXRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7DQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiww KQ0KIHN0YXRpYyB2b2lkIG5ucGZzX3dyaXRlX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqIHNiKTsNCisjZW5kaWYNCiANCi0jaWYgTElOVVhfVkVSU0lP Tl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50 IG5ucGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBr c3RhdGZzICpidWYpOw0KLSNlbHNlDQotc3RhdGljIGludCBubnBmc19zdGF0 ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1 Zik7DQotI2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBzdXBlcl9vcGVyYXRp b25zIG5ucGZzX3NvcHMgPSB7IA0KLSAgICByZWFkX2lub2RlCQk6IG5ucGZz X3JlYWRfaW5vZGUsDQotICAgIHB1dF9pbm9kZQkJOiBubnBmc19wdXRfaW5v ZGUsDQogICAgIGFsbG9jX2lub2RlCQk6IG5ucGZzX25vZGVfYWxsb2MsDQog ICAgIGRlc3Ryb3lfaW5vZGUJOiBubnBmc19ub2RlX2ZyZWUsDQogICAgIGRy b3BfaW5vZGUJCTogZ2VuZXJpY19kZWxldGVfaW5vZGUsDQogICAgIHB1dF9z dXBlcgkJOiBubnBmc19wdXRfc3VwZXIsDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICB3cml0ZV9zdXBl cgkJOiBubnBmc193cml0ZV9zdXBlciwNCisjZW5kaWYNCiAgICAgc3RhdGZz CQk6IG5ucGZzX3N0YXRmcywNCiB9Ow0KIA0KQEAgLTk0LDcgKzkwLDExIEBA IG5ucGZzX2ZldGNoX3Jvb3Qoc3RydWN0IGlub2RlICppKQ0KIAkgKiByb290 J3MgcHJpdmlsaWdlcyAodXN1YWxseSBub25lLCBhbmQgbm9uZSBpcyBuZWVk ZWQpLg0KIAkgKi8NCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJbXNnLmNyZWQudWlkID0gMDsNCisj ZWxzZQ0KKwltc2cuY3JlZC51aWQgPSBLVUlEVF9JTklUKDApOw0KKyNlbmRp Zg0KIAltc2cuY3JlZC5wYWcgPSAwOw0KIAkNCiAJZXJyb3IgPSBubnBmc19t ZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7 DQpAQCAtMTI5LDggKzEyOSwxMyBAQCBtYWtlX3Jvb3RfaW5vZGUoc3RydWN0 IG5ucGZzICpubnBmc3ApDQogICAgIFhBX1NFVF9NT0RFKCZub2RlLmF0dHIs IFNfSUZESVIgfCAwNzc3KTsNCiAgICAgWEFfU0VUX05MSU5LKCZub2RlLmF0 dHIsIDEwMCk7DQogICAgIFhBX1NFVF9TSVpFKCZub2RlLmF0dHIsIDApOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0 LDApDQogICAgIFhBX1NFVF9VSUQoJm5vZGUuYXR0ciwgMCk7DQogICAgIFhB X1NFVF9HSUQoJm5vZGUuYXR0ciwgMCk7DQorI2Vsc2UNCisgICAgWEFfU0VU X1VJRCgmbm9kZS5hdHRyLCBLVUlEVF9JTklUKDApKTsNCisgICAgWEFfU0VU X0dJRCgmbm9kZS5hdHRyLCBLR0lEVF9JTklUKDApKTsNCisjZW5kaWYNCiAg ICAgWEFfU0VUX0FUSU1FKCZub2RlLmF0dHIsIDApOw0KICAgICBYQV9TRVRf TVRJTUUoJm5vZGUuYXR0ciwgMCk7DQogICAgIFhBX1NFVF9DVElNRSgmbm9k ZS5hdHRyLCAwKTsNCkBAIC0xNTksNyArMTY0LDExIEBAIG1ha2Vfcm9vdCAo c3RydWN0IHN1cGVyX2Jsb2NrICpzYikNCiAgICAgbm5wZnMtPnJvb3QgPSBp bm9kZTsNCiANCiAgICAgLyogWFhYIGVycm9yIGhhbmRsaW5nICovDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNCwwKQ0K ICAgICBkcCA9IGRfYWxsb2Nfcm9vdChpbm9kZSk7DQorI2Vsc2UNCisgICAg ZHAgPSBkX21ha2Vfcm9vdChpbm9kZSk7DQorI2VuZGlmDQogICAgIG5ucGZz X2RfaW5pdChkcCk7DQogICAgIHNiLT5zX3Jvb3QgPSBkcDsNCiAgICAgcmV0 dXJuIDA7DQpAQCAtMTgzLDEzICsxOTIsMjcgQEAgbm5wZnNfcmVhZF9zdXBl ciAoc3RydWN0IHN1cGVyX2Jsb2NrICogcw0KICAgICBOTlBGU0RFQihYREVC VkZPUFMsICgibm5wZnNfcmVhZF9zdXBlcjogYmVnaW4gc2V0dGluZyB2YXJp YWJsZXNcbiIpKTsNCiANCiAgICAgaWYgKGRhdGEgIT0gTlVMTCkgew0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp DQogCXN0cnVjdCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisJc3RydWN0IHBh dGggcGF0aDsNCisjZW5kaWYNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRoX2xv b2t1cChkYXRhLCAwLCAmbmQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisJZXJyb3IgPSBrZXJuX3Bh dGgoZGF0YSwgMCwgJm5kLnBhdGgpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vy bl9wYXRoKGRhdGEsIDAsICZwYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVycm9y KQ0KIAkgICAgZGRldiA9IEVSUl9QVFIoZXJyb3IpOw0KIAllbHNlDQotCSAg ICBkZGV2ID0gbmQuZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICBkZGV2ID0gbmQucGF0 aC5kZW50cnk7DQorI2Vsc2UNCisJICAgIGRkZXYgPSBwYXRoLmRlbnRyeTsN CisjZW5kaWYNCiANCiAJaWYgKCFJU19FUlIoZGRldikpIHsNCiAJICAgIG1p bm9yZGV2aWNlID0gTUlOT1IoZGRldi0+ZF9pbm9kZS0+aV9yZGV2KTsNCkBA IC0yMzMsNyArMjU2LDcgQEAgbm5wZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1 cGVyX2Jsb2NrICpzYg0KICAgICByZXR1cm4gMDsNCiB9DQogDQotI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz OSkNCiBpbnQNCiBubnBmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5 cGUgKmZzX3R5cGUsDQogCSAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpk ZXZfbmFtZSwNCkBAIC0yNDIsMTkgKzI2NSwyMiBAQCBubnBmc19nZXRfc2Io c3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzDQogICAgIHJldHVybiBnZXRf c2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5ucGZzX2ZpbGxfc3Vw ZXIsIG1udCk7DQogfQ0KICNlbHNlDQotc3RydWN0IHN1cGVyX2Jsb2NrICoN Ci1ubnBmc19nZXRfc2IgKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190 eXBlLA0KLQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1l LCB2b2lkICpkYXRhKSANCitzdHJ1Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50 KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KKwkgICAgIGlu dCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsDQorCSAgICAgdm9pZCAq ZGF0YSkgDQogew0KLSAgICByZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUs IGZsYWdzLCBkYXRhLCBubnBmc19maWxsX3N1cGVyKTsNCisgICAgcmV0dXJu IG1vdW50X25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBubnBmc19maWxs X3N1cGVyKTsNCiB9DQogI2VuZGlmDQogDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lkDQog bm5wZnNfd3JpdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpDQog ew0KICAgICBzYi0+c19kaXJ0ID0gMDsNCiB9DQorI2VuZGlmDQogDQogLyoN CiAgKiBYWFggaXMgdGhpcyBnb29kPyANCkBAIC0yNzMsNzMgKzI5OSw2IEBA IG5ucGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQ0KICAg ICBOTlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNfcHV0X3N1cGVyIGV4aXRp bmdcbiIpKTsNCiB9DQogDQotc3RhdGljIHZvaWQNCi1ubnBmc19yZWFkX2lu b2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQotew0KLSAgICBOTlBGU0RFQihY REVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIHN0YXJ0aW5nIGlub2RlOiAl cFxuIixpbm9kZSkpOw0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBm c19yZWFkX2lub2RlIGlub2RlLT5pX2lubzogJWxkXG4iLGlub2RlLT5pX2lu bykpOw0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMTkpDQotICAgIGlub2RlLT5pX2Jsa3NpemUgPSAxMDI0Ow0KLSNl bmRpZg0KLSAgICBpbm9kZS0+aV9tb2RlID0gMDsNCi0gICAgaW5vZGUtPmlf b3AgPSBOVUxMOw0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19y ZWFkX2lub2RlIGV4aXRpbmdcbiIpKTsNCi19DQotIA0KLS8qDQotICogQ2Fs bGVkIHdoZW4gYGlub2RlJyBpcyBkZS1yZWZlcmVuY2VkLCBpZSB3aGVuIGlw dXQgaXMgY2FsbGVkLg0KLSAqLw0KLQ0KLXN0YXRpYyB2b2lkDQotbm5wZnNf cHV0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQotew0KLSAgICBzdHJ1 Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQot ICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwID0gTk5QRlNfRlJPTV9WTk9ERShp bm9kZSk7DQotICAgIGludCBiYWQ7DQotDQotICAgIE5OUEZTREVCKFhERUJW Rk9QUywoIm5ucGZzX3B1dF9pbm9kZTogaW5vZGU6ICVwIGNvdW50OiAlZCBh bGlhc2VzOiIsDQotCQkJaW5vZGUsIG5ucGZzX2ljb3VudChpbm9kZSkpKTsN Ci0gICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhpbm9kZSk7DQotICAgIA0KLSAg ICBkb3duKCZubnBmc3AtPmluYWN0aXZlX3NlbSk7DQotDQotICAgIGlmICgo bm5wZnNwLT5zdGF0dXMgJiBOTlBGU19ERVZPUEVOKSA9PSAwKSB7DQotCWlm ICghaXNfYmFkX2lub2RlKGlub2RlKSkgew0KLQkgICAgaWYgKGlub2RlICE9 IG5ucGZzcC0+cm9vdCkgew0KLQkJbWFrZV9iYWRfaW5vZGUoaW5vZGUpOw0K LQkJbm5wZnNfaXJlbGUoaW5vZGUpOyAvKiBzZWUgbm5wZnNfbm9kZV9hZGQo KSAqLw0KLQkgICAgfQ0KLQkgICAgeG4tPmZsYWdzIHw9IE5OUEZTX1NUQUxF Ow0KLQl9DQotCWJhZCA9IDE7IC8qIG9yIHJvb3QsIHJlYWxseSAqLw0KLSAg ICB9IGVsc2Ugew0KLQliYWQgPSBpc19iYWRfaW5vZGUoaW5vZGUpOw0KLSAg ICB9DQotDQotICAgIGlmICh4bi0+ZmxhZ3MgJiBOTlBGU19TVEFMRSAmJiAh bm5wZnNfbm9kZV91c2Vycyhpbm9kZSkpIHsNCi0JeG4tPmZsYWdzIHw9IE5O UEZTX05PREVfSVBVVDsgLyogWFhYIGxvY2tpbmcgKi8NCi0gIAlubnBmc19m b3JjZV9pbnZhbGlkX25vZGUoeG4pOw0KLQl4bi0+ZmxhZ3MgJj0gfk5OUEZT X05PREVfSVBVVDsNCi0gICAgfQ0KLSAgICANCi0gICAgaWYgKGJhZCkgew0K LQlpZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAxKQ0KLQkgICAgbm5wZnNf bm9kZV9jbGVhcih4bik7DQotICAgIH0gZWxzZSBpZiAobm5wZnNfaWNvdW50 KGlub2RlKSA9PSAyKSB7DQotCS8qIA0KLQkgKiBUaGUgbGFzdCBleHRlcm5h bCByZWZlcmVuY2UgaXMgYmVpbmcgZHJvcHBlZCwgb25seSB0aGUgb25lDQot CSAqIGZyb20gbm5wZnNfbm9kZV9hZGQoKSBpcyBsZWZ0LiBUaW1lIHRvIGxl dCBkYWVtb24gcmVsZWFzZQ0KLQkgKiB0aGlzIG5vZGUgcHJvcGVybHkuDQot CSAqLw0KLQlpZiAoKHhuLT5mbGFncyAmIE5OUEZTX0xJTUJPKSA9PSAwKSB7 DQotCSAgICBubnBmc19ub2RlX2NsZWFyKHhuKTsNCi0JICAgIG5ucGZzX3F1 ZXVlX2luYWN0aXZlKHhuKTsNCi0JfQ0KLSAgICB9DQotDQotICAgIHVwKCZu bnBmc3AtPmluYWN0aXZlX3NlbSk7DQotfQ0KLQ0KIHN0YXRpYyBpbnQNCiBu bnBmc19zdGF0ZnNfaW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVj dCBrc3RhdGZzICpidWYpDQogew0KQEAgLTM1MiwyNSArMzExLDI1IEBAIG5u cGZzX3N0YXRmc19pbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwNCiAgICAg dG1wLmZfYmF2YWlsICA9IDEwMjQqMTAyNCoyLTUwOw0KICAgICB0bXAuZl9m aWxlcyAgID0gMTAyNCoxMDI0Ow0KICAgICB0bXAuZl9mZnJlZSAgID0gMTAy NCoxMDI0LTEwMDsNCisgICAgdG1wLmZfZnNpZC52YWxbMF0gPSAwOw0KKyAg ICB0bXAuZl9mc2lkLnZhbFsxXSA9IDA7DQogICAgIHRtcC5mX25hbWVsZW4g PSBOQU1FX01BWDsNCisgICAgdG1wLmZfZnJzaXplICA9IDA7DQorICAgIHRt cC5mX3NwYXJlWzBdID0gMDsNCisgICAgdG1wLmZfc3BhcmVbMV0gPSAwOw0K KyAgICB0bXAuZl9zcGFyZVsyXSA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzNd ID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMiw2LDM2KQ0KKyAgICB0bXAuZl9zcGFyZVs0XSA9IDA7DQorI2Vsc2UN CisgICAgdG1wLmZfZmxhZ3MgPSAwOw0KKyNlbmRpZg0KICAgICAqYnVmID0g dG1wOw0KICAgICByZXR1cm4gMDsNCiB9DQogDQotI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQotDQogc3RhdGlj IGludA0KIG5ucGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0 cnVjdCBrc3RhdGZzICpidWYpDQogew0KICAgICByZXR1cm4gbm5wZnNfc3Rh dGZzX2ludChkZW50cnktPmRfc2IsIGJ1Zik7DQogfQ0KLQ0KLSNlbHNlDQot DQotc3RhdGljIGludA0KLW5ucGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQ0KLXsNCi0gICAgcmV0dXJu IG5ucGZzX3N0YXRmc19pbnQoc2IsIGJ1Zik7DQotfQ0KLQ0KLSNlbmRpZg0K ZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL2FybGFkL2ZjYWNo ZS5jIGFybGEtMC45MC9hcmxhZC9mY2FjaGUuYw0KLS0tIGFybGEtMC45MC1v bGQvYXJsYWQvZmNhY2hlLmMJMjAwNi0xMi0xMSAxNzoyMzoyNC4wMDAwMDAw MDAgKzAxMDANCisrKyBhcmxhLTAuOTAvYXJsYWQvZmNhY2hlLmMJMjAxNi0w MS0yMiAxNzowMDo0My4wMDAwMDAwMDAgKzAxMDANCkBAIC03MTMsNyArNzEz LDcgQEAgZmNhY2hlX2hhdmVfd2FudGVkKEZDYWNoZUVudHJ5ICplbnRyeSwg dQ0KIGludA0KIGZjYWNoZV9kaXJfbmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5 LCBjaGFyICpzLCBzaXplX3QgbGVuKQ0KIHsNCi0gICAgcmV0dXJuIHNucHJp bnRmIChzLCBsZW4sICIlMDJYIiwgZW50cnktPmluZGV4IC8gMHgxMDApOw0K KyAgICByZXR1cm4gc25wcmludGYgKHMsIGxlbiwgTk5QRlNfQ0FDSEVfRklM RV9ESVIxLCBlbnRyeS0+aW5kZXggLyAweDEwMCk7DQogfQ0KIA0KIC8qDQpA QCAtNzIzLDcgKzcyMyw3IEBAIGZjYWNoZV9kaXJfbmFtZSAoRkNhY2hlRW50 cnkgKmVudHJ5LCBjaGENCiBzdGF0aWMgaW50DQogZmNhY2hlX2ZpbGVfbmFt ZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBjaGFyICpzLCBzaXplX3QgbGVuKQ0K IHsNCi0gICAgcmV0dXJuIHNucHJpbnRmIChzLCBsZW4sICIlMDJYLyUwMlgi LA0KKyAgICByZXR1cm4gc25wcmludGYgKHMsIGxlbiwgTk5QRlNfQ0FDSEVf RklMRV9ESVJfUEFUSCwNCiAJCSAgICAgZW50cnktPmluZGV4IC8gMHgxMDAs IGVudHJ5LT5pbmRleCAlIDB4MTAwKTsNCiB9DQogDQpAQCAtODE1LDcgKzgx NSw3IEBAIGZjYWNoZV9maGdldCAoY2hhciAqZmlsZW5hbWUsIGZjYWNoZV9j YWMNCiAJaW50IHJldCwgYSwgYjsNCiAJY2hhciBidWZbMTAyNF07DQogDQot CXJldCA9IHNzY2FuZihmaWxlbmFtZSwgIiUwMlgvJTAyWCIsICZhLCAmYik7 DQorCXJldCA9IHNzY2FuZihmaWxlbmFtZSwgTk5QRlNfQ0FDSEVfRklMRV9E SVJfUEFUSCwgJmEsICZiKTsNCiAJaWYgKHJldCAhPSAyKQ0KIAkgICAgcmV0 dXJuIEVJTlZBTDsNCiANCkBAIC04MjQsNyArODI0LDcgQEAgZmNhY2hlX2Zo Z2V0IChjaGFyICpmaWxlbmFtZSwgZmNhY2hlX2NhYw0KIAkNCiAJcmV0ID0g c25wcmludGYoKGNoYXIgKiloYW5kbGUtPm5ucGZzX2hhbmRsZSwgDQogCQkg ICAgICAgc2l6ZW9mKGhhbmRsZS0+bm5wZnNfaGFuZGxlKSwNCi0JCSAgICAg ICAiJXNcXCUwMlhcXCUwMlgiLCBidWYsIGEsIGIpOw0KKwkJICAgICAgICIl c1xcIiBOTlBGU19DQUNIRV9GSUxFX0RJUl9QQVRILCBidWYsIGEsIGIpOw0K IA0KIAlpZiAocmV0ID4gMCAmJiByZXQgPCBzaXplb2YoaGFuZGxlLT5ubnBm c19oYW5kbGUpKQ0KIAkgICAgaGFuZGxlLT52YWxpZCA9IDE7DQo= ---276651502-1903028542-1455997660=:736 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-1903028542-1455997660=:736--