Re: PATCH v9: Arla 0.90 on Linux 2.6.3x to 4.4
Bo Branten <[email protected]> Mon, 15 Feb 2016 17:19:00 +0100 (CET)
| Newsgroups | gmane.comp.file-systems.arla.general |
|---|---|
| Message-ID | <[email protected]> |
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---276651502-256347803-1455553140=:6685 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH v9: Arla 0.90 on Linux 2.6.3x to 4.4 Corrections in nnpfs_readdir/nnpfs_iterate that broke directory listing on Linux kernel 3.11 and above. Bo Branten ---276651502-256347803-1455553140=:6685 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-v9-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-v9-arla-0.90-for-linux-2.6.3x-to-4.4 ZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL25ucGZzL2luY2x1 ZGUvbm5wZnMvbm5wZnNfYXR0ci5oIGFybGEtMC45MC9ubnBmcy9pbmNsdWRl L25ucGZzL25ucGZzX2F0dHIuaA0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAwNi0xMC0yNCAxODozMzoz MC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvaW5jbHVk ZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAxNi0wMS0yMiAxMjo1MTowNy4wMDAw MDAwMDAgKzAxMDANCkBAIC0xMTMsOCArMTEzLDE4IEBAIHN0cnVjdCBubnBm c19hdHRyIHsNCiAgICAgdWludDMyX3QJCXhhX25saW5rOw0KICAgICB1aW50 MzJfdAkJeGFfdHlwZTsNCiANCisjaWZuZGVmIF9fS0VSTkVMX18NCiAgICAg dWludDMyX3QJCXhhX3VpZDsNCiAgICAgdWludDMyX3QJCXhhX2dpZDsNCisj ZWxzZQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMywxNCwwKQ0KKyAgICBrdWlkX3QJCXhhX3VpZDsNCisgICAga2dpZF90 CQl4YV9naWQ7DQorI2Vsc2UNCisgICAgdWludDMyX3QJCXhhX3VpZDsNCisg ICAgdWludDMyX3QJCXhhX2dpZDsNCisjZW5kaWYNCisjZW5kaWYNCiANCiAg ICAgdWludDMyX3QJCXhhX2F0aW1lOw0KICAgICB1aW50MzJfdAkJeGFfbXRp bWU7DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaCBhcmxhLTAuOTAvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaA0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaAkyMDA2LTEw LTI0IDE4OjMzOjMxLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtMC45MC9u bnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2Jsb2Nrcy5oCTIwMDctMDEtMjQg MTg6MDk6MTcuMDAwMDAwMDAwICswMTAwDQpAQCAtMSw1ICsxLDUgQEANCiAv Kg0KLSAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LCBTdG9ja2hvbG1zIFVu aXZlcnNpdGV0DQorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIFN0b2Nr aG9sbXMgVW5pdmVyc2l0ZXQNCiAgKiAoU3RvY2tob2xtIFVuaXZlcnNpdHks IFN0b2NraG9sbSBTd2VkZW4pDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4N CiAgKg0KQEAgLTMxLDExICszMSwxNSBAQA0KICAqIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDogbm5wZnNfYmxvY2tz LmgsdiAxLjIgMjAwNi8xMC8yNCAxNjozMzozMSB0b2wgRXhwICQgKi8NCisv KiAkSWQ6IG5ucGZzX2Jsb2Nrcy5oLHYgMS4zIDIwMDcvMDEvMjQgMTc6MDk6 MTcgdG9sIEV4cCAkICovDQogDQogI2RlZmluZSBOTlBGU19OT19JTkRFWCAg IDAgIC8qIGR1bW15IGNhY2hlIGluZGV4ICovDQogI2RlZmluZSBOTlBGU19O T19PRkZTRVQgICgodWludDY0X3QpLTEpICAvKiBkdW1teSBvZmZzZXQsIG5v IGJsb2NrICovDQogDQotI2RlZmluZSBOTlBGU19DQUNIRV9GSUxFX1BBVEgg ICAgIiUwMlgvJTAyWC8lMDJsbFgiDQotI2RlZmluZSBOTlBGU19DQUNIRV9E SVJfUEFUSCAgICAgIiUwMlgvJTAyWEAiDQotI2RlZmluZSBOTlBGU19DQUNI RV9QQVRIX1NJWkUgICAgKCA2ICsxICsyKzEgKzE2ICsxKQ0KKyNkZWZpbmUg Tk5QRlNfQ0FDSEVfRklMRV9ESVIxICAgICAgICAiJTAyeCINCisjZGVmaW5l IE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEggICAgTk5QRlNfQ0FDSEVfRklM RV9ESVIxICIvIiBOTlBGU19DQUNIRV9GSUxFX0RJUjENCisjZGVmaW5lIE5O UEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSCAgIiUwMmxseCINCisNCisjZGVm aW5lIE5OUEZTX0NBQ0hFX0ZJTEVfUEFUSCAgIE5OUEZTX0NBQ0hFX0ZJTEVf RElSX1BBVEggIi8iIE5OUEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSA0KKyNk ZWZpbmUgTk5QRlNfQ0FDSEVfRElSX1BBVEggICAgTk5QRlNfQ0FDSEVfRklM RV9ESVJfUEFUSCAiQCINCisjZGVmaW5lIE5OUEZTX0NBQ0hFX1BBVEhfU0la RSAgICggNiArMSArMisxICsxNiArMSApDQpkaWZmIC11cHJOIC1Ybm9kaWZm IGFybGEtMC45MC1vbGQvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19tZXNz YWdlLmggYXJsYS0wLjkwL25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVz c2FnZS5oDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9pbmNsdWRlL25ucGZz L25ucGZzX21lc3NhZ2UuaAkyMDA2LTEwLTI0IDE4OjMzOjMyLjAwMDAwMDAw MCArMDIwMA0KKysrIGFybGEtMC45MC9ubnBmcy9pbmNsdWRlL25ucGZzL25u cGZzX21lc3NhZ2UuaAkyMDE2LTAxLTIyIDEyOjUzOjI5LjAwMDAwMDAwMCAr MDEwMA0KQEAgLTMxLDcgKzMxLDcgQEANCiAgKiBTVUNIIERBTUFHRS4NCiAg Ki8NCiANCi0vKiAkSWQ6IG5ucGZzX21lc3NhZ2UuaCx2IDEuNjEgMjAwNi8x MC8yNCAxNjozMzozMiB0b2wgRXhwICQgKi8NCisvKiAkSWQ6IG5ucGZzX21l c3NhZ2UuaCx2IDEuNjIgMjAwOS8wMi8yNCAyMDoyMDo1NSB0b2wgRXhwICQg Ki8NCiANCiAjaWZuZGVmIF94bXNnX2gNCiAjZGVmaW5lIF94bXNnX2gNCkBA IC01Miw3ICs1MiwxNSBAQCB0eXBlZGVmIHVpbnQxNl90IG5ucGZzX3JpZ2h0 czsNCiAgKiBUaGUgbm5wZnNfY3JlZCwgaWYgcGFnID09IDAsIHVzZSB1aWQg DQogICovDQogdHlwZWRlZiBzdHJ1Y3Qgbm5wZnNfY3JlZCB7DQorI2lmbmRl ZiBfX0tFUk5FTF9fDQogICAgIHVpbnQzMl90IHVpZDsNCisjZWxzZQ0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxNCww KQ0KKyAgICBrdWlkX3QgdWlkOw0KKyNlbHNlDQorICAgIHVpbnQzMl90IHVp ZDsNCisjZW5kaWYNCisjZW5kaWYNCiAgICAgbm5wZnNfcGFnX3QgcGFnOw0K IH0gbm5wZnNfY3JlZDsNCiANCkBAIC0xMDYsNyArMTE0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3Qgbm5wZnNfYmxvY2tfaGFuZGxlIHsNCiANCiAvKiBubnBmc19u b2RlLmZsYWdzDQogICogVGhlIGxvd2VyIDE2IGJpdCBmbGFncyBhcmUgcmVz ZXJ2ZWQgZm9yIGNvbW1vbiBubnBmcyBmbGFncw0KLSAqIFRoZSB1cHBlciAx NiBiaXQgZmxhZ3MgYXJlIHJlc2VydmVkIGZvciBvcGVydGluZyBzeXN0ZW0g ZGVwZW5kYW50DQorICogVGhlIHVwcGVyIDE2IGJpdCBmbGFncyBhcmUgcmVz ZXJ2ZWQgZm9yIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50DQogICogZmxh Z3MuDQogICovDQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmggYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzL25ubnBmcy5oDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBm cy9saW51eC9ubnBmcy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3LjAw MDAwMDAwMCArMDIwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBm cy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3LjAwMDAwMDAwMCArMDIw MA0KQEAgLTEsNCArMSw0IEBADQogLyogJElkOiBubm5wZnMuaCx2IDEuMiAy MDAyLzA5LzA3IDEwOjQ3OjE3IGxoYSBFeHAgJCAqLw0KLS8qICRTb3VyY2U6 IC9hZnMvc3RhY2tlbi5rdGguc2Uvc3JjL1NvdXJjZVJlcG9zaXRvcnkvYXJs YS9ubnBmcy9saW51eC9ubnBmcy9ubm5wZnMuaCx2ICQgKi8NCisvKiAkU291 cmNlOiAvVXNlcnMvYm8vdG1wL0FybGFTb3VyY2VSZXBvc2l0b3J5L2FybGEv bm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmgsdiAkICovDQogDQogI2RlZmlu ZSBOTk5QRlMgMg0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xk L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmggYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzL25ucGZzX2ZzLmgNCi0tLSBhcmxhLTAuOTAtb2xkL25u cGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmgJMjAwNi0xMC0yNCAxODozMzo0 OC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvbGludXgv bm5wZnMvbm5wZnNfZnMuaAkyMDE2LTAxLTEzIDIyOjU3OjA2LjAwMDAwMDAw MCArMDEwMA0KQEAgLTg0LDggKzg0LDEzIEBAIHN0cnVjdCBubnBmcyB7DQog ICAgIHN0cnVjdCB2ZnNtb3VudCAqY2FjaGVyb290OyAvKiBzaW1wbGlmeSBv cGVuIG9mIGNhY2hlIGJsb2NrcyAqLw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpj YWNoZWRpcjsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMywxNCwwKQ0KICAgICB1aWRfdCB1aWQ7IC8qIGtlZXAgdHJh Y2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkgKi8NCiAgICAgZ2lkX3QgZ2lkOw0K KyNlbHNlDQorICAgIGt1aWRfdCB1aWQ7IC8qIGtlZXAgdHJhY2sgb2YgZGFl bW9uJ3MgaWRlbnRpdHkgKi8NCisgICAga2dpZF90IGdpZDsNCisjZW5kaWYN CiANCiAgICAgc3RydWN0IHsNCiAJaW50IHJlY3Vyc2U7DQpkaWZmIC11cHJO IC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnMvbm5w ZnNfbG9jbC5oIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19s b2NsLmgNCi0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzL25u cGZzX2xvY2wuaAkyMDA3LTAxLTA4IDE0OjUyOjQ5LjAwMDAwMDAwMCArMDEw MA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19sb2Ns LmgJMjAxNi0wMS0xMyAyMzowMToxMC4wMDAwMDAwMDAgKzAxMDANCkBAIC0z NCw3ICszNCw3IEBADQogICogU1VDSCBEQU1BR0UuDQogICovDQogDQotLyog JElkOiBubnBmc19sb2NsLmgsdiAxLjc3IDIwMDcvMDEvMDggMTM6NTI6NDkg dG9sIEV4cCAkICovDQorLyogJElkOiBubnBmc19sb2NsLmgsdiAxLjc4IDIw MTAvMDgvMDggMjA6NDM6MDYgdG9sIEV4cCAkICovDQogDQogI2lmZGVmIEhB VkVfQ09ORklHX0gNCiAjaW5jbHVkZSA8Y29uZmlnLmg+DQpAQCAtNTEsNyAr NTEsOSBAQA0KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+DQogI2luY2x1ZGUg PGxpbnV4L3N0cmluZy5oPg0KICNpbmNsdWRlIDxsaW51eC9uYW1laS5oPg0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQorI2VuZGlmDQog I2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4NCiANCiAvKg0KQEAgLTEzOCwxNSAr MTQwLDE2IEBAIHR5cGVkZWYgX191MzIgIHVpbnQzMl90Ow0KIGludA0KIG5u cGZzX2ZldGNoX3Jvb3Qoc3RydWN0IGlub2RlICppKTsNCiANCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5 KQ0KIGludA0KIG5ucGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlw ZSAqZnNfdHlwZSwNCiAJICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRl dl9uYW1lLA0KIAkgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAq bW50KTsNCiAjZWxzZQ0KLXN0cnVjdCBzdXBlcl9ibG9jayAqDQotbm5wZnNf Z2V0X3NiIChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCi0J ICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAq ZGF0YSk7DQorc3RydWN0IGRlbnRyeSoNCitubnBmc19tb3VudChzdHJ1Y3Qg ZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCisJICAgICBpbnQgZmxhZ3Ms IGNvbnN0IGNoYXIgKmRldl9uYW1lLA0KKwkgICAgIHZvaWQgKmRhdGEpOw0K ICNlbmRpZg0KIA0KIGV4dGVybiBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMg bm5wZnNfZGVudHJ5X29wZXJhdGlvbnM7DQpAQCAtMjAwLDE2ICsyMDMsMjUg QEAgbm5wZnNfaXdyaXRlY291bnQgKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQog ICogSGVscCBmdW5jdGlvbiB0byByZWFkIHRoZSBkZW50cnktPmRfY291bnQg YSBwb3J0YWJsZSB3YXkNCiAgKi8NCiANCisvKiNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpKi8NCiBzdGF0aWMgaW5s aW5lIGludA0KIG5ucGZzX2Rjb3VudCAoY29uc3Qgc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQ0KKy8qI2Vsc2UNCitzdGF0aWMgaW5saW5lIGludA0KK25ucGZz X2Rjb3VudCAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbmRpZiovDQog ew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQogICAgIHJldHVybiBhdG9taWNfcmVhZCgmZGVudHJ5LT5kX2Nv dW50KTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDExLDApDQorICAgIHJldHVybiBhdG9taWNfcmVhZCgoY29uc3Qg YXRvbWljX3QqKSZkZW50cnktPmRfY291bnQpOw0KKyNlbHNlDQorICAgIHJl dHVybiBkX2NvdW50KGRlbnRyeSk7Ow0KKyNlbmRpZg0KIH0NCiANCiBleHRl cm4gDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMTgpDQogY29uc3QNCi0jZW5kaWYNCiBzdHJ1Y3QgYWRkcmVzc19z cGFjZV9vcGVyYXRpb25zIG5ucGZzX2FvcHM7DQogDQogI2lmbmRlZiBsaXN0 X2Zvcl9lYWNoDQpAQCAtMjM3LDcgKzI0OSwxMiBAQCBubnBmc19maXh1cF9z eXNjYWxsX2xvc3NhZ2Uodm9pZCk7DQogI2VuZGlmDQogDQogI2RlZmluZSBu bnBmc19kZXZfdCBkZXZfdA0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogI2RlZmluZSBubnBmc19kX2Vu dHJ5X3VuaGFzaGVkKGQpIGhsaXN0X3VuaGFzaGVkKGQpDQorI2Vsc2UNCisj ZGVmaW5lIG5ucGZzX2RfZW50cnlfdW5oYXNoZWQoZCkgaGxpc3RfYmxfdW5o YXNoZWQoZCkNCisjZW5kaWYNCiANCiAjZGVmaW5lIE5OUEZTX05PT1AgICAg ICB3aGlsZSgwKXt9DQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45 MC1vbGQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbm9kZS5oIGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgNCi0tLSBhcmxhLTAu OTAtb2xkL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX25vZGUuaAkyMDA2LTEy LTExIDE3OjI5OjM5LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9u bnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgJMjAxMC0wOC0wOCAyMjo0 MzowNy4wMDAwMDAwMDAgKzAyMDANCkBAIC01NCw3ICs1NCw3IEBAIGV4dGVy biB1aW50MzJfdCBubnBmc19ibG9ja3NpemViaXRzOw0KICAqIGZsYWdzLg0K ICAqLw0KIA0KLSNkZWZpbmUgTk5QRlNfTk9ERV9JUFVUCTB4MDAwMTAwMDAg ICAvKiBub2RlIGlzIGluIGlwdXQoKSwgYXZvaWQgZGVhZGxvY2sgKi8NCisj ZGVmaW5lIE5OUEZTX05PREVfSVBVVAkweDAwMDEwMDAwICAgLyogbm9kZSBp cyBpbiBpcHV0KCksIGF2b2lkIGRlYWRsb2NrLiBDYW4gYmUgcmVtb3ZlZD8g Ki8NCiANCiAjZGVmaW5lIFhOX0hBU0hTSVpFIDEwMDkNCiAjZGVmaW5lIFhO X0NMRUFOVVBfSVRFUlMgMTI5DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEt MC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfYmxvY2tzLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX2Jsb2Nrcy5jDQotLS0gYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDA3LTAxLTA4IDE0OjI0 OjI0LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAxLTI4IDE3OjQ0OjM2LjAwMDAwMDAw MCArMDEwMA0KQEAgLTM0LDcgKzM0LDcgQEANCiAgKiBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0vKiAkSWQ6IG5ucGZzX2Jsb2Nr cy5jLHYgMS4zIDIwMDcvMDEvMDggMTM6MjQ6MjQgdG9sIEV4cCAkICovDQor LyogJElkOiBubnBmc19ibG9ja3MuYyx2IDEuNiAyMDEwLzA4LzA4IDIwOjQz OjA0IHRvbCBFeHAgJCAqLw0KIA0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19s b2NsLmg+DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2ZzLmg+DQpAQCAtNDMs NiArNDMsMTEgQEANCiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4NCiAjaW5j bHVkZSA8bGludXgvbW0uaD4NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkNCitleHRlcm4gaW50IHZmc19w YXRoX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAq LA0KKwkJCSAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3Qg cGF0aCAqKTsNCisjZW5kaWYNCisNCiAvKg0KICAqIHJldHVybiB0cnVlIGlm IGJsb2NrIGlzIGluIGNhY2hlDQogICovDQpAQCAtMjkwLDcgKzI5NSwxMyBA QCBubnBmc19ibG9ja19leHRlbmQoc3RydWN0IG5ucGZzX25vZGUgKm5vDQog ICAgIGJhY2tub2RlID0gYmFja2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsNCiAN CiAgICAgbXV0ZXhfbG9jaygmYmFja25vZGUtPmlfbXV0ZXgpOw0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDgsMCkNCiAg ICAgcmV0ID0gdm10cnVuY2F0ZShiYWNrbm9kZSwgbm5wZnNfYmxvY2tzaXpl KTsNCisjZWxzZQ0KKyAgICByZXQgPSBpbm9kZV9uZXdzaXplX29rKGJhY2tu b2RlLCBubnBmc19ibG9ja3NpemUpOw0KKyAgICBpZighcmV0KQ0KKyAgICAg ICAgdHJ1bmNhdGVfc2V0c2l6ZShiYWNrbm9kZSwgbm5wZnNfYmxvY2tzaXpl KTsNCisjZW5kaWYNCiAgICAgbXV0ZXhfdW5sb2NrKCZiYWNrbm9kZS0+aV9t dXRleCk7DQogICAgIA0KICAgICBmaWxwX2Nsb3NlKGJhY2tmaWxlLCBOVUxM KTsNCkBAIC0zMTgsOSArMzI5LDE4IEBAIG5ucGZzX2Jsb2NrX29wZW4oc3Ry dWN0IG5ucGZzX25vZGUgKm5vZGUNCiAgICAgc3RydWN0IG5ucGZzICpubnBm c3AgPSBOTlBGU19GUk9NX1hOT0RFKG5vZGUpOw0KICAgICBzdHJ1Y3QgaW5v ZGUgKmlub2RlID0gWE5PREVfVE9fVk5PREUobm9kZSk7DQogICAgIGludCBm bGFncyA9IE9fTEFSR0VGSUxFIHwgZmxhZzsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3Qg bmFtZWlkYXRhIG5kOw0KKyNlbHNlDQorICAgIHN0cnVjdCBwYXRoIHBhdGg7 DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDIsNiwyOSkNCiAgICAgdWlkX3Qgc2F2ZXVpZDsNCiAgICAgZ2lk X3Qgc2F2ZWdpZDsNCisjZWxzZQ0KKyAgICBjb25zdCBzdHJ1Y3QgY3JlZCAq b2xkX2NyZWQ7DQorICAgIHN0cnVjdCBjcmVkICpvdmVycmlkZV9jcmVkOw0K KyNlbmRpZg0KICAgICBpbnQgcmV0Ow0KIA0KICAgICBCVUdfT04oIW5ucGZz cCk7DQpAQCAtMzQ2LDIxICszNjYsMzYgQEAgbm5wZnNfYmxvY2tfb3Blbihz dHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KICAgICBCVUdfT04oIW5ucGZzcC0+ Y2FjaGVkaXIgfHwgIW5ucGZzcC0+Y2FjaGVyb290KTsNCiAgICAgDQogICAg IC8qIHVzZSB0aGUgbmZzZCB0cmljayB0byBnaXZlIHVzIGFjY2VzcyAqLw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MjkpDQogICAgIHNhdmV1aWQgPSBjdXJyZW50LT5mc3VpZDsNCiAgICAgc2F2 ZWdpZCA9IGN1cnJlbnQtPmZzZ2lkOw0KICAgICBjdXJyZW50LT5mc3VpZCA9 IG5ucGZzcC0+dWlkOw0KICAgICBjdXJyZW50LT5mc2dpZCA9IG5ucGZzcC0+ Z2lkOw0KLQ0KLSAgICBuZC5kZW50cnkgPSBkZ2V0KG5ucGZzcC0+Y2FjaGVk aXIpOw0KLSAgICBuZC5tbnQgPSBtbnRnZXQobm5wZnNwLT5jYWNoZXJvb3Qp Ow0KLSAgICBuZC5sYXN0X3R5cGUgPSBMQVNUX05PUk07DQotICAgIG5kLmRl cHRoID0gMDsNCi0gICAgbmQuZmxhZ3MgPSAwOw0KLSAgICANCi0gICAgaWYg KGZsYWdzICYgT19DUkVBVCkNCi0JbmQuZmxhZ3MgPSBMT09LVVBfUEFSRU5U Ow0KLSAgICANCi0gICAgcmV0ID0gcGF0aF93YWxrKGNhY2hlbmFtZSwgJm5k KTsNCisjZWxzZQ0KKyAgICBvdmVycmlkZV9jcmVkID0gcHJlcGFyZV9jcmVk cygpOw0KKyAgICBpZiAob3ZlcnJpZGVfY3JlZCA9PSBOVUxMKQ0KKyAgICAg ICAgcmV0dXJuIC1FTk9NRU07DQorICAgIG92ZXJyaWRlX2NyZWQtPmZzdWlk ID0gbm5wZnNwLT51aWQ7DQorICAgIG92ZXJyaWRlX2NyZWQtPmZzZ2lkID0g bm5wZnNwLT5naWQ7DQorICAgIG9sZF9jcmVkID0gb3ZlcnJpZGVfY3JlZHMo b3ZlcnJpZGVfY3JlZCk7DQorI2VuZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSwwKQ0KKyAgICByZXQgPSB2 ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNo ZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBmbGFncyAmIE9fQ1JF QVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZuZCk7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0K KyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwg bm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBm bGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZu ZC5wYXRoKTsNCisjZWxzZQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAo bm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBj YWNoZW5hbWUsDQorCQkJICBmbGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFS RU5UIDogMCwNCisJCQkgICZwYXRoKTsNCisjZW5kaWYNCiAgICAgaWYgKHJl dCkgew0KIAl1aW50MzJfdCBubWFza3MgPSBub2RlLT5kYXRhLm5tYXNrczsN CiAJdWludDMyX3QgbWFzazsNCkBAIC0zODcsMTcgKzQyMiwzOSBAQCBubnBm c19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogICAgIA0K ICAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7DQogCS8qIFhYWCBtb2RlIGJp dHMgb24gY3JlYXRlIC0tIFNfSVJVU1J8U19JV1VTUiAqLw0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEsMCkNCiAJc3Ry dWN0IGRlbnRyeSAqZGVudHJ5ID0gbG9va3VwX2NyZWF0ZSgmbmQsIDApOwkN CisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDE5LDApDQorCS8qIFhYWCB2ZXJpZnkgdGhhdCBjYWNoZW5hbWUgaXMgdGhl IGNvcnJlY3QgcGF0aCBzdHJpbmcgdG8gdXNlIGhlcmUgKi8NCisJc3RydWN0 IGRlbnRyeSAqZGVudHJ5ID0ga2Vybl9wYXRoX2NyZWF0ZShBVF9GRENXRCwg Y2FjaGVuYW1lLCAmbmQucGF0aCwgMCk7CQ0KKyNlbHNlDQorCS8qIFhYWCB2 ZXJpZnkgdGhhdCBjYWNoZW5hbWUgaXMgdGhlIGNvcnJlY3QgcGF0aCBzdHJp bmcgdG8gdXNlIGhlcmUgKi8NCisJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0g a2Vybl9wYXRoX2NyZWF0ZShBVF9GRENXRCwgY2FjaGVuYW1lLCAmcGF0aCwg MCk7CQ0KKyNlbmRpZg0KIAlpZiAoSVNfRVJSKGRlbnRyeSkpIHsNCiAJICAg IHJldCA9IFBUUl9FUlIoZGVudHJ5KTsNCiAJfSBlbHNlIHsNCi0JICAgIHJl dCA9IHZmc19jcmVhdGUobmQuZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNf SVJVU1J8U19JV1VTUiwgJm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQorCSAgICByZXQgPSB2ZnNfY3Jl YXRlKG5kLnBhdGguZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8 U19JV1VTUiwgJm5kKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICAvKiBYWFggc2hvdWxkIHRo ZSBsYXN0IGFyZ3VtZW50IHRvIHZmc19jcmVhdGU6IGJvb2wgd2FudF9leGNs LCBiZSAwIG9yIDE/ICovDQorCSAgICByZXQgPSB2ZnNfY3JlYXRlKG5kLnBh dGguZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwg MCk7DQorI2Vsc2UNCisJICAgIC8qIFhYWCBzaG91bGQgdGhlIGxhc3QgYXJn dW1lbnQgdG8gdmZzX2NyZWF0ZTogYm9vbCB3YW50X2V4Y2wsIGJlIDAgb3Ig MT8gKi8NCisJICAgIHJldCA9IHZmc19jcmVhdGUocGF0aC5kZW50cnktPmRf aW5vZGUsIGRlbnRyeSwgU19JUlVTUnxTX0lXVVNSLCAwKTsNCisjZW5kaWYN CisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Myw2LDApDQogCSAgICBkcHV0KGRlbnRyeSk7DQorCSAgICBtdXRleF91bmxv Y2soJm5kLnBhdGguZGVudHJ5LT5kX2lub2RlLT5pX211dGV4KTsNCisJICAg IHBhdGhfcHV0KCZuZC5wYXRoKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICBkb25lX3BhdGhf Y3JlYXRlKCZuZC5wYXRoLCBkZW50cnkpOw0KKyNlbHNlDQorCSAgICBkb25l X3BhdGhfY3JlYXRlKCZwYXRoLCBkZW50cnkpOw0KKyNlbmRpZg0KIAl9DQog DQotCW11dGV4X3VubG9jaygmbmQuZGVudHJ5LT5kX2lub2RlLT5pX211dGV4 KTsNCi0JcGF0aF9yZWxlYXNlKCZuZCk7DQotDQogCWlmIChyZXQpIHsNCiAJ ICAgIHByaW50aygibm5wZnNfYmxvY2tfb3BlbiglcykgY3JlYXRlIGZhaWxl ZDogJWRcbiIsIGNhY2hlbmFtZSwgLXJldCk7DQogCSAgICBubnBmc19kZWJ1 Z19vb3BzKCk7DQpAQCAtNDEwLDEyICs0NjcsMjQgQEAgbm5wZnNfYmxvY2tf b3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIAkgICAgcmV0ID0gbm5w ZnNfYmxvY2tfZXh0ZW5kKG5vZGUsIG9mZnNldCk7DQogCX0NCiAgICAgfSBl bHNlIHsNCi0Jc3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3BlbihuZC5kZW50 cnksIG5kLm1udCwgZmxhZ3MpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMjkpDQorCXN0cnVjdCBmaWxlICpmID0g ZGVudHJ5X29wZW4obmQucGF0aC5kZW50cnksIG5kLnBhdGgubW50LCBmbGFn cyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9v cGVuKG5kLnBhdGguZGVudHJ5LCBuZC5wYXRoLm1udCwgZmxhZ3MsIGN1cnJl bnRfY3JlZCgpKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9 IGRlbnRyeV9vcGVuKCZuZC5wYXRoLCBmbGFncywgY3VycmVudF9jcmVkKCkp Ow0KKyNlbHNlDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9v cGVuKCZwYXRoLCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0KKyNlbmRpZg0K IAlpZiAoSVNfRVJSKGYpKSB7DQogCSAgICByZXQgPSBQVFJfRVJSKGYpOw0K IAkgICAgcHJpbnRrKCJubnBmc19ibG9ja19vcGVuKCVzKSBvcGVuIGZhaWxl ZDogJWRcbiIsIGNhY2hlbmFtZSwgLXJldCk7DQogCSAgICBubnBmc19kZWJ1 Z19vb3BzKCk7DQotCSAgICBwYXRoX3JlbGVhc2UoJm5kKTsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwkg ICAgcGF0aF9wdXQoJm5kLnBhdGgpOw0KKyNlbHNlDQorCSAgICBwYXRoX3B1 dCgmcGF0aCk7DQorI2VuZGlmDQogCX0gZWxzZSB7DQogCSAgICAqZmlsZSA9 IGY7DQogCX0NCkBAIC00MjQsOCArNDkzLDEzIEBAIG5ucGZzX2Jsb2NrX29w ZW4oc3RydWN0IG5ucGZzX25vZGUgKm5vZGUNCiAgICAgLyogcGF0aF9yZWxl YXNlKCkgaXMgdXN1YWxseSBoYW5kbGVkIG9uIGNsb3NlICovDQogDQogIG91 dDoNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Miw2LDI5KQ0KICAgICBjdXJyZW50LT5mc3VpZCA9IHNhdmV1aWQ7DQogICAg IGN1cnJlbnQtPmZzZ2lkID0gc2F2ZWdpZDsNCisjZWxzZQ0KKyAgICByZXZl cnRfY3JlZHMob2xkX2NyZWQpOw0KKyAgICBwdXRfY3JlZChvdmVycmlkZV9j cmVkKTsNCisjZW5kaWYNCiANCiAgICAgcmV0dXJuIHJldDsNCiB9DQpkaWZm IC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5w ZnNfY29tbW9uLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2NvbW1v bi5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19jb21t b24uYwkyMDA2LTEyLTExIDE3OjMxOjQ2LjAwMDAwMDAwMCArMDEwMA0KKysr IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19jb21tb24uYwkyMDE2LTAx LTE0IDE2OjE1OjAwLjAwMDAwMDAwMCArMDEwMA0KQEAgLTExMiwxMCArMTEy LDE1IEBAIG5ucGZzX3ByaW50X2FsaWFzZXMoY29uc3Qgc3RydWN0IGlub2Rl ICoNCiB2b2lkDQogbm5wZnNfcHJpbnRfYWxpYXNlc19yZWFsKGNvbnN0IHN0 cnVjdCBpbm9kZSAqaW5vZGUpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxpc3Rf aGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2RlICph bGlhczsNCisjZW5kaWYNCiAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0K ICAgICBpbnQgYmFpbG91dCA9IDEwMDsNCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFzID0g aW5vZGUtPmlfZGVudHJ5Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAhPSAm aW5vZGUtPmlfZGVudHJ5KSB7DQogCWlmICgtLWJhaWxvdXQgPCAwKSB7DQpA QCAtMTMxLDYgKzEzNiwyNiBAQCBubnBmc19wcmludF9hbGlhc2VzX3JlYWwo Y29uc3Qgc3RydWN0IGluDQogCX0NCiAJYWxpYXMgPSBhbGlhcy0+bmV4dDsN CiAgICAgfQ0KKyNlbHNlDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRy eShkZW50cnksIGFsaWFzLCAmaW5vZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7 DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksICZp bm9kZS0+aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxzZQ0KKyAgICBobGlz dF9mb3JfZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnksIGRf dS5kX2FsaWFzKSB7DQorI2VuZGlmDQorCWlmICgtLWJhaWxvdXQgPCAwKSB7 DQorCSAgICBwcmludGsoIiAuLi4iKTsNCisJICAgIGJyZWFrOw0KKwl9DQor CWlmIChkZW50cnkpIHsNCisJICAgIHByaW50aygiICUuKnMoJXApIiwgKGlu dClkZW50cnktPmRfbmFtZS5sZW4sDQorCQkgICBkZW50cnktPmRfbmFtZS5u YW1lLCBkZW50cnkpOw0KKwkgICAgaWYgKG5ucGZzX2RfZW50cnlfdW5oYXNo ZWQoJmRlbnRyeS0+ZF9oYXNoKSkNCisJCXByaW50aygiKHVuaGFzaGVkKSIp Ow0KKwl9DQorICAgIH0NCisjZW5kaWYNCiAgICAgcHJpbnRrKCJcbiIpOw0K IH0NCiANCkBAIC0xNDYsNyArMTcxLDExIEBAIG5ucGZzX3ByaW50X2NoaWxk cmVuKGNvbnN0IHN0cnVjdCBkZW50cnkNCiANCiAgICAgd2hpbGUgKHN1YmRp cnMgIT0gJmRlbnRyeS0+ZF9zdWJkaXJzKSB7DQogCXN0cnVjdCBsaXN0X2hl YWQgKnRtcCA9IHN1YmRpcnM7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IGRlbnRyeSAqY2hp bGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF91LmRfY2hp bGQpOw0KKyNlbHNlDQorCXN0cnVjdCBkZW50cnkgKmNoaWxkID0gbGlzdF9l bnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRfY2hpbGQpOw0KKyNlbmRpZg0K IA0KIAlwcmludGsoIiAlLipzKCVwKSIsIChpbnQpY2hpbGQtPmRfbmFtZS5s ZW4sDQogCSAgICAgICBjaGlsZC0+ZF9uYW1lLm5hbWUsIGNoaWxkKTsNCmRp ZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9u bnBmc19kZXYuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfZGV2LmMN Ci0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIw MDYtMTAtMjQgMTg6MzM6MzYuMDAwMDAwMDAwICswMjAwDQorKysgYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMTYtMDEtMTQgMTY6Mjg6 MTkuMDAwMDAwMDAwICswMTAwDQpAQCAtMzAwLDcgKzMwMCw5IEBAIG5ucGZz X2ludmFsaWRhdGVfYWxsKHN0cnVjdCBubnBmcyAqbm5wZnMNCiAgICAgTk5Q RlNERUIoWERFQk5PREUsICgiZnJlZV9hbGxfbm5wZnNfbm9kZXMgc3RhcnRp bmdcbiIpKTsNCiANCiAgICAgc2hyaW5rX2RjYWNoZV9zYihubnBmcy0+c2Ip Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzcpDQogICAgIGludmFsaWRhdGVfaW5vZGVzKG5ucGZzLT5zYik7DQor I2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVCTk9ERSwgKCJmcmVl X2FsbF9ubnBmc19ub2RlcyBkb25lXG4iKSk7DQogfQ0KQEAgLTM3NCw3ICsz NzYsMTEgQEAgbm5wZnNfZGV2Y2xvc2Uoc3RydWN0IGlub2RlICogaW5vZGUs IHN0cg0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfZGV2cmVhZChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAq cHBvcykNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+ Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZWxzZQ0KKyAgICBubnBm c19kZXZfdCBkZXYgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLT5p X3JkZXY7DQorI2VuZGlmDQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwID0g Jm5ucGZzW01JTk9SKGRldildOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbGluayAq Zmlyc3Q7DQogICAgIGludCByZXQgPSAwLCBlcnJvciA9IDA7DQpAQCAtNDM5 LDggKzQ0NSwxMiBAQCBubnBmc19kZXZ3cml0ZShzdHJ1Y3QgZmlsZSAqZmls ZSwgY29uc3QgDQogDQogICAgIE5OUEZTREVCKFhERUJERVYsICgibm5wZnNf ZGV2d3JpdGVcbiIpKTsNCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgZGV2ID0gZmlsZS0+ Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCi0gICAgbm5wZnNwID0gJm5u cGZzW01JTk9SKGRldildOw0KKyNlbHNlDQorICAgIGRldiA9IGZpbGUtPmZf cGF0aC5kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZW5kaWYNCisgICAg IG5ucGZzcCA9ICZubnBmc1tNSU5PUihkZXYpXTsNCiANCiAgICAgZG93bigm bm5wZnNwLT5jaGFubmVsX3NlbSk7DQogICAgIGlmIChubnBmc3AtPnN0YXR1 cyAmIE5OUEZTX0RFVldSSVRFKSB7DQpAQCAtNTA1LDE5ICs1MTUsMzcgQEAg bm5wZnNfZGV2d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IA0KIC8q DQogICogTm90IHVzZWQuDQogICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiBzdGF0aWMgaW50DQogbm5w ZnNfZGV2aW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbGUsDQogCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZykNCisjZWxzZQ0KK3N0YXRpYyBsb25nDQorbm5wZnNfdW5sb2Nr ZWRfZGV2aW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsDQorCSAgICAgICB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisjZW5kaWYNCiB7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzNikNCiAgICAgTk5QRlNERUIoWERFQkRFViwgKCJubnBmc19kZXZpb2N0 bCBkZXYgPSAlZCwgZmxhZ3MgPSAlZFxuIiwNCiAJCSAgICAgICBpbm9kZS0+ aV9yZGV2LCBmaWxlLT5mX2ZsYWdzKSk7DQorI2VsaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBOTlBGU0RF QihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFncyA9 ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5p X3JkZXYsIGZpbGUtPmZfZmxhZ3MpKTsNCisjZWxzZQ0KKyAgICBOTlBGU0RF QihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFncyA9 ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5v ZGUtPmlfcmRldiwgZmlsZS0+Zl9mbGFncykpOw0KKyNlbmRpZg0KICAgICBy ZXR1cm4gLUVJTlZBTDsNCiB9DQogDQogc3RhdGljIHVuc2lnbmVkIGludA0K IG5ucGZzX2RldnBvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUg KndhaXQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQogICAgIG5ucGZzX2Rldl90IGRldiA9IGZpbGUt PmZfZGVudHJ5LT5kX2lub2RlLT5pX3JkZXY7DQorI2Vsc2UNCisgICAgbm5w ZnNfZGV2X3QgZGV2ID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+ aV9yZGV2Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCA9 ICZubnBmc1tNSU5PUihkZXYpXTsNCiAgICAgaW50IHJldCA9IDA7DQogICAg IA0KQEAgLTk1Myw3ICs5ODEsMTEgQEAgc3RydWN0IGZpbGVfb3BlcmF0aW9u cyBubnBmc19mb3BzID0gew0KICAgICByZWFkOgkJbm5wZnNfZGV2cmVhZCwN CiAgICAgd3JpdGU6CQlubnBmc19kZXZ3cml0ZSwNCiAgICAgcG9sbDoJCW5u cGZzX2RldnBvbGwsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDIsNiwzNikNCiAgICAgaW9jdGw6CQlubnBmc19kZXZpb2N0 bCwNCisjZWxzZQ0KKyAgICB1bmxvY2tlZF9pb2N0bDoJbm5wZnNfdW5sb2Nr ZWRfZGV2aW9jdGwsDQorI2VuZGlmDQogICAgIHJlbGVhc2U6CQlubnBmc19k ZXZjbG9zZSwNCiAgICAgb3BlbjoJCW5ucGZzX2Rldm9wZW4sDQogfTsNCkBA IC05NjgsOCArMTAwMCwxMyBAQCBubnBmc19pbml0X2RldmljZSh2b2lkKQ0K IAlpbml0X3dhaXRxdWV1ZV9oZWFkKCYobm5wZnNbaV0ud2FpdF9xdWV1ZSkp Ow0KIAlubnBmc19pbml0cSgmbm5wZnNbaV0ubWVzc2FnZXEpOw0KIAlubnBm c19pbml0cSgmbm5wZnNbaV0uc2xlZXBxKTsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM3KQ0KIAlpbml0X01VVEVY KCZubnBmc1tpXS5pbmFjdGl2ZV9zZW0pOw0KIAlpbml0X01VVEVYKCZubnBm c1tpXS5jaGFubmVsX3NlbSk7DQorI2Vsc2UNCisJc2VtYV9pbml0KCZubnBm c1tpXS5pbmFjdGl2ZV9zZW0sIDEpOw0KKwlzZW1hX2luaXQoJm5ucGZzW2ld LmNoYW5uZWxfc2VtLCAxKTsNCisjZW5kaWYNCiAJSU5JVF9MSVNUX0hFQUQo Jm5ucGZzW2ldLmluYWN0aXZlX2xpc3QpOw0KIAlubnBmc1tpXS5ubm9kZXMg PSAwOw0KICAgICB9DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYyBhcmxhLTAuOTAvbm5w ZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYw0KLS0tIGFybGEtMC45MC1vbGQv bm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYwkyMDA2LTEyLTExIDE3OjM1 OjI2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19pbm9kZW9wcy5jCTIwMTYtMDItMTUgMTY6MTU6MjkuMDAwMDAw MDAwICswMTAwDQpAQCAtNDAsMjUgKzQwLDQxIEBADQogI2luY2x1ZGUgPG5u cGZzL25ucGZzX2Rldi5oPg0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19kaXJl bnQuaD4NCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNfc3lzY2FsbHMuaD4NCisj aW5jbHVkZSA8bGludXgvYWlvLmg+DQogI2luY2x1ZGUgPGxpbnV4L2JpbmZt dHMuaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0KICNpbmNsdWRlIDxs aW51eC9wYWdlbWFwLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BhZ2UtZmxhZ3Mu aD4NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDQsMSwwKQ0KKyNpbmNsdWRlIDxsaW51eC91aW8uaD4NCisjZW5kaWYNCiAj aW5jbHVkZSA8bGludXgvd3JpdGViYWNrLmg+DQogI2luY2x1ZGUgPGFzbS9m Y250bC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZz X2lub2Rlb3BzLmMsdiAxLjIyMyAyMDA2LzEyLzExIDE2OjM1OjI2IHRvbCBF eHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIy NiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0K IA0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19pbnQoc3RydWN0IGZpbGUg KmZpbGUsIHVfaW50IGZsYWcpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiBzdGF0aWMgaW50DQogbm5w ZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0 IG5hbWVpZGF0YSAqbmQpOw0KLQ0KKyNlbHNlDQogc3RhdGljIGludA0KK25u cGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2ln bmVkIGludCBmbGFncyk7DQorI2VuZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCitzdGF0aWMNCitp bnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0K KyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KTsNCisjZW5kaWYNCiANCiBzdGF0aWMg dm9pZA0KIG5ucGZzX2RfcmVsZWFzZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp Ow0KQEAgLTEwNSw3ICsxMjEsNyBAQCBubnBmc192bWFfY2xvc2UgKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqDQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3Qgdm1f b3BlcmF0aW9uc19zdHJ1Y3Qgbm5wZnNfZmlsZV92bV9vcHMgPSB7DQotICAg IC5ub3BhZ2UJPSBmaWxlbWFwX25vcGFnZSwNCisgICAgLmZhdWx0ICAgICAg PSBmaWxlbWFwX2ZhdWx0LA0KICAgICAuY2xvc2UJPSBubnBmc192bWFfY2xv c2UsDQogfTsNCiANCkBAIC0xMzQsMTIgKzE1MCwxNCBAQCBubnBmc19wcmlu dF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCiAgKg0KICAqLw0KIA0K KyNpZiAwDQogdm9pZA0KIG5ucGZzX3ByaW50X2xvY2soY2hhciAqcywgc3Ry dWN0IHNlbWFwaG9yZSAqc2VtKQ0KIHsNCiAgICAgTk5QRlNERUIoWERFQkxP Q0ssICgibG9jazogJXMgc2VtOiAlcCBjb3VudDogJWRcbiIsDQogCQkgICAg ICBzLCBzZW0sIChpbnQpYXRvbWljX3JlYWQoJnNlbS0+Y291bnQpKSk7DQog fQ0KKyNlbmRpZg0KIA0KIC8qDQogICoNCkBAIC0xODUsNyArMjAzLDcgQEAg bm5wZnNfZF9pcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydQ0KICAg ICBOTlBGU0RFQihYREVCVk5PUFMsDQogCSAgICAgKCJubnBmc19kX2lwdXQ6 IGRlbnRyeSAlcCwgaW5vZGUgJXBcbiIsIGRlbnRyeSwgaW5vZGUpKTsNCiAg ICAgDQotICAgIGlmIChub2RlLT5mbGFncyAmIE5OUEZTX05PREVfSVBVVCkg LyogWFhYIGxvY2tpbmcgKi8NCisgICAgaWYgKG5vZGUtPmZsYWdzICYgTk5Q RlNfTk9ERV9JUFVUKSAvKiBYWFggbG9ja2luZy4gbmV2ZXIgc2V0PyAqLw0K IAlubnBmc19pcmVsZShpbm9kZSk7DQogICAgIGVsc2UNCiAJaXB1dChpbm9k ZSk7DQpAQCAtMjEyLDggKzIzMCwxMyBAQCBubnBmc19pbm9kZV92YWxpZChz dHJ1Y3QgaW5vZGUgKmlub2RlKQ0KICAqIG5ucGZzX2xvb2t1cCBub3cgcmV0 dXJucyBhIGRlbnRyeS4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHN0cnVjdCBk ZW50cnkgKg0KIG5ucGZzX2xvb2t1cCAoc3RydWN0IGlub2RlICpkaXIsIHN0 cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQor I2Vsc2UNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQorbm5wZnNfbG9va3Vw IChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1 bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3Qg bm5wZnNfbWVzc2FnZV9nZXRub2RlIG1zZzsNCiAgICAgc3RydWN0IG5ucGZz ICpubnBmc3A7DQpAQCAtMjQwLDcgKzI2MywxMSBAQCBubnBmc19sb29rdXAg KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgDQogDQogCW1zZy5oZWFkZXIu b3Bjb2RlID0gTk5QRlNfTVNHX0dFVE5PREU7DQogICAgICAgICANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkN CiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAg ICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0K IAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogCW1zZy5wYXJl bnRfaGFuZGxlID0gZC0+aGFuZGxlOw0KICAgICAgICAgDQpAQCAtMzEwLDcg KzMzNywxMSBAQCBubnBmc19vcGVuX3ZhbGlkKHN0cnVjdCBpbm9kZSAqdnAs IHVfaW50DQogICAgICAgew0KIAlzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9vcGVu IG1zZzsNCiAJbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfT1BFTjsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs NiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNl DQorICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNl bmRpZg0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogCW1z Zy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KIAltc2cudG9rZW5zID0gdG9rOw0K QEAgLTM5Nyw3ICs0MjgsMTEgQEAgZmluZF9maXJzdF9ibG9jayhzdHJ1Y3Qg bm5wZnNfbm9kZSAqbm9kZQ0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19p bnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGZsYWcpDQogew0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9p bm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls ZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAgc3Ry dWN0IG5ucGZzICpubnBmc3AgPSBOTlBGU19GUk9NX1ZOT0RFKGlub2RlKTsN CiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5PREUo aW5vZGUpOw0KICAgICBsb2ZmX3QgbGVuID0gaV9zaXplX3JlYWQoaW5vZGUp Ow0KQEAgLTQyNSw3ICs0NjAsMTEgQEAgbm5wZnNfZnN5bmNfaW50KHN0cnVj dCBmaWxlICpmaWxlLCB1X2ludA0KIA0KIAltc2cuaGVhZGVyLm9wY29kZSA9 IE5OUEZTX01TR19QVVREQVRBOw0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19n ZXRfcGFnKCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVp ZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91 aWQoKTsNCisjZW5kaWYNCiAJbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQog CW1zZy5mbGFnICAgPSBmbGFnOw0KIAltc2cub2Zmc2V0ID0gb2ZmOw0KQEAg LTQ2MCwxNCArNDk5LDI3IEBAIG5ucGZzX2ZzeW5jX2ludChzdHJ1Y3QgZmls ZSAqZmlsZSwgdV9pbnQNCiAgKg0KICAqLw0KIA0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzUpDQogc3RhdGljIGlu dA0KIG5ucGZzX2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIGludCBkYXRhc3luYykNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEsMCkNCitzdGF0aWMgaW50 DQorbm5wZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZpbGUsIGludCBkYXRhc3lu YykNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19mc3luYyhzdHJ1Y3Qg ZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLCBpbnQgZGF0 YXN5bmMpDQorI2VuZGlmDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg Pj0gS0VSTkVMX1ZFUlNJT04oMiw2LDM1KQ0KKyAgICBzdHJ1Y3QgZGVudHJ5 ICpkZW50cnkgPSBmaWxlLT5mX3BhdGguZGVudHJ5Ow0KKyNlbmRpZg0KICAg ICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRy eSk7DQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG47DQogICAgIGludCBlcnJvciA9IDA7DQogDQorICAg ICh2b2lkKW5ucGZzcDsNCisNCiAgICAgZXJyb3IgPSBubnBmc19pbm9kZV92 YWxpZChpbm9kZSk7DQogICAgIGlmIChlcnJvcikNCiAJcmV0dXJuIGVycm9y Ow0KQEAgLTUxMSw3ICs1NjMsMTEgQEAgbm5wZnNfYXR0cl92YWxpZChzdHJ1 Y3QgaW5vZGUgKiB2cCwgdV9pbg0KICAgICAgICAgICAgIHN0cnVjdCBubnBm c19tZXNzYWdlX2dldGF0dHIgbXNnOw0KIA0KICAgICAgICAgICAgIG1zZy5o ZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVEFUVFI7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAg ICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNl DQorICAgICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsN CisjZW5kaWYNCiAgICAgICAgICAgICBtc2cuY3JlZC5wYWcgPSBwYWc7DQog ICAgICAgICAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgICAg ICAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cu aGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtNTUxLDcgKzYwNywxMSBAQCBu bnBmc19yaWdodHNfdmFsaWQoc3RydWN0IGlub2RlICogdnAsIG5uDQogICAg ICAgICAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQog DQogICAgICAgICAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0df R0VUQVRUUjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBj dXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICAgICAgICAgIG1z Zy5jcmVkLnBhZyA9IHBhZzsNCiAgICAgICAgICAgICBtc2cuaGFuZGxlID0g eG4tPmhhbmRsZTsNCiAgICAgICAgICAgICBlcnJvciA9IG5ucGZzX21lc3Nh Z2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCkBA IC01OTIsMTEgKzY1MiwyNSBAQCBjaGVja19yaWdodHMgKG5ucGZzX3JpZ2h0 cyByaWdodHMsIGludCBtDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0K ICAqLw0KIA0KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMiw2LDM4KSB8fCBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMywxLDApKQ0KK3N0YXRpYyBpbnQNCitubnBmc19wZXJtaXNz aW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtb2RlKQ0KKyNlbHNlDQog c3RhdGljIGludA0KLW5ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICpp bm9kZSwgaW50IG1vZGUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0KK25ucGZz X3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUsIHVu c2lnbmVkIGludCBmbGFncykNCisjZW5kaWYNCiB7DQogICAgIGludCBlcnJv ciA9IDA7DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IG5ucGZzX2dldF9wYWco KTsNCisgICAgbm5wZnNfcGFnX3QgcGFnOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApDQorICAgIGlmIChtb2Rl ICYgTUFZX05PVF9CTE9DSykNCisgICAgICAgIHJldHVybiAtRUNISUxEOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQorICAgIGlmIChmbGFncyAmIElQRVJNX0ZMQUdfUkNVKQ0KKyAg ICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQorI2VuZGlmDQorDQorICAgIHBhZyA9 IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJW Tk9QUywgKCJubnBmc19hY2Nlc3MgKCVwKSBtb2RlID0gMCVvIGFsaWFzZXM6 IiwgaW5vZGUsIG1vZGUpKTsNCiAgICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhp bm9kZSk7DQpAQCAtNjM2LDcgKzcxMCwxMSBAQCBubnBmc19kb19nZXRkYXRh KHN0cnVjdCBubnBmc19ub2RlICp4biwgDQogICAgIGludCBlcnJvcjsNCiAN CiAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUREFUQTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs NiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNl bHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2Vu ZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAg ICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgIG1zZy50b2tlbnMg PSB0b2s7DQpAQCAtNzUwLDExICs4MjgsMTkgQEAgbm5wZnNfZGF0YV92YWxp ZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1Xw0KIGludCBubnBmc19maWxlX21t YXAoc3RydWN0IGZpbGUgKiBmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KiB2bWEpDQogew0KICAgICBpbnQgZmxhZ3MsIGVycm9yID0gMDsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0K ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRf aW5vZGU7DQorI2Vsc2UNCisgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7DQorI2VuZGlmDQogICAgIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZmlsZS0+Zl9tYXBwaW5n Ow0KIA0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfbW1hcCBp bm9kZTogJXBcbiIsIGlub2RlKSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfcHJpbnRf cGF0aChmaWxlLT5mX2RlbnRyeSk7DQorI2Vsc2UNCisgICAgbm5wZnNfcHJp bnRfcGF0aChmaWxlLT5mX3BhdGguZGVudHJ5KTsNCisjZW5kaWYNCiAgICAg Tk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX21tYXAgYWxpYXNlczoiKSk7 DQogICAgIG5ucGZzX3ByaW50X2FsaWFzZXMoaW5vZGUpOw0KICAgICANCkBA IC03ODksMzcgKzg3NSw1MCBAQCBpbnQgbm5wZnNfZmlsZV9tbWFwKHN0cnVj dCBmaWxlICogZmlsZSwgDQogICoNCiAgKi8NCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KIHN0YXRpYyBz c2l6ZV90DQogbm5wZnNfYWlvX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLA0K LSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2 LDE5KQ0KIAkgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHVuc2ln bmVkIGxvbmcgbnJfc2VncywNCisJICAgICAgIGxvZmZfdCBwb3MpDQogI2Vs c2UNCi0JICAgICAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwN CitzdGF0aWMgc3NpemVfdA0KK25ucGZzX3JlYWRfaXRlcihzdHJ1Y3Qga2lv Y2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pDQogI2VuZGlmDQotCSAg ICAgICBsb2ZmX3QgcG9zKQ0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCiAg ICAgc3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLT5raV9maWxwOw0KLSNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEy LDApDQogICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9sZWZ0Ow0KKyNl bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsMSww KQ0KKyAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lfbmJ5dGVzOw0KKyNl bHNlDQorICAgIHNzaXplX3QgY291bnQgPSBpb3ZfaXRlcl9jb3VudCh0byk7 DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0K KyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9U T19YTk9ERShpbm9kZSk7DQogICAgIA0KICAgICBpZiAoeG4gIT0gTlVMTCkN CiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3JlYWRfZmlsZSglcCk6 IHRva2VuczogMHgleFxuIiwNCiAJCQkgICAgIGlub2RlLCB4bi0+dG9rZW5z KSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTYsMCkNCiAgICAgZXJyb3IgPSBubnBmc19kYXRhX3ZhbGlkKGlu b2RlLCBOTlBGU19EQVRBX1IsIHBvcywgcG9zICsgY291bnQpOw0KKyNlbHNl DQorICAgIGVycm9yID0gbm5wZnNfZGF0YV92YWxpZChpbm9kZSwgTk5QRlNf REFUQV9SLCBpb2NiLT5raV9wb3MsIGlvY2ItPmtpX3BvcyArIGNvdW50KTsN CisjZW5kaWYNCiAgICAgaWYgKGVycm9yKSB7DQogCU5OUEZTREVCKFhERUJW Tk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGRhdGEgbm90IHZhbGlkICVkXG4i LCBlcnJvcikpOw0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiAgICAgDQot I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYs MTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsMTYsMCkNCiAgICAgZXJyb3IgPSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQo aW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVycm9y ID0gZ2VuZXJpY19maWxlX2Fpb19yZWFkKGlvY2IsIGJ1ZiwgY291bnQsIHBv cyk7DQorICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3JlYWRfaXRlcihpb2Ni LCB0byk7DQogI2VuZGlmDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJu bnBmc19yZWFkX2ZpbGU6IGVycm9yID0gJWRcbiIsIGVycm9yKSk7DQogICAg IHJldHVybiBlcnJvcjsNCkBAIC04MjksMjMgKzkyOCwzNiBAQCBubnBmc19h aW9fcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogICoNCiAgKi8NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiww KQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBr aW9jYiAqaW9jYiwNCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDIsNiwxOSkNCiAJCWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92 LCB1bnNpZ25lZCBsb25nIG5yX3NlZ3MsDQorCQlsb2ZmX3QgcG9zKQ0KICNl bHNlDQotCQljb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQs IA0KK3N0YXRpYyBzc2l6ZV90DQorbm5wZnNfd3JpdGVfaXRlcihzdHJ1Y3Qg a2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkNCiAjZW5kaWYN Ci0JCWxvZmZfdCBwb3MpDQogew0KICAgICBpbnQgZXJyb3IgPSAwOw0KICAg ICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7DQotI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTIs MCkNCiAgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtpX2xlZnQ7DQorI2Vs aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwxLDAp DQorICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9uYnl0ZXM7DQorI2Vs c2UNCisgICAgc3NpemVfdCBjb3VudCA9IGlvdl9pdGVyX2NvdW50KGZyb20p Ow0KICNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBm aWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsN CisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVf VE9fWE5PREUoaW5vZGUpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE2LDApDQogICAgIGxvZmZfdCByZWFscG9zID0g cG9zOw0KKyNlbHNlDQorICAgIGxvZmZfdCByZWFscG9zID0gaW9jYi0+a2lf cG9zOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQlZOT1BT LCAoIm5ucGZzX2Fpb193cml0ZSglcCk6IHRva2VuczogMHgleFxuIiwNCiAJ CQkgaW5vZGUsIHhuLT50b2tlbnMpKTsNCkBAIC04NTksMTAgKzk3MSwxMCBA QCBubnBmc19haW9fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLA0KIAlyZXR1 cm4gZXJyb3I7DQogICAgIH0NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KICAgICBlcnJvciA9 IGdlbmVyaWNfZmlsZV9haW9fd3JpdGUoaW9jYiwgaW92LCBucl9zZWdzLCBw b3MpOw0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fpb193 cml0ZShpb2NiLCBidWYsIGNvdW50LCBwb3MpOw0KKyAgICBlcnJvciA9IGdl bmVyaWNfZmlsZV93cml0ZV9pdGVyKGlvY2IsIGZyb20pOw0KICNlbmRpZg0K ICAgICBpZiAoIUlTX0VSUl9WQUxVRShlcnJvcikpDQogCXhuLT5mbGFncyB8 PSBOTlBGU19EQVRBX0RJUlRZOyAvKiBYWFggcmFjZSAqLw0KQEAgLTg3MSw5 ICs5ODMsMTkgQEAgbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAqaW9j YiwNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQogc3RhdGljIGlu dA0KIG5ucGZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRl bnRyeSAqZGVudHJ5LA0KIAkgICAgIGludCBtb2RlLCBzdHJ1Y3QgbmFtZWlk YXRhICpuZCkNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDYsMCkNCitzdGF0aWMgaW50DQorbm5wZnNfY3JlYXRlKHN0 cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQorCSAg ICAgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxz ZQ0KK3N0YXRpYyBpbnQNCitubnBmc19jcmVhdGUoc3RydWN0IGlub2RlICpk aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJICAgICB1bW9kZV90IG1v ZGUsIGJvb2wgZXhjbCkNCisjZW5kaWYNCiB7DQogICAgIHN0cnVjdCBubnBm cyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47DQpAQCAt OTAzLDkgKzEwMjUsMTcgQEAgbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAq ZGlyLCBzdHJ1Y3QgZA0KICAgICBYQV9DTEVBUigmbXNnLmF0dHIpOw0KICAg ICBYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KICAgICBYQV9TRVRf VFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfUkVHKTsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg WEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxz ZQ0KKyAgICBYQV9TRVRfR0lEKCZtc2cuYXR0ciwgY3VycmVudF9mc2dpZCgp KTsNCisjZW5kaWYNCiAgICAgbXNnLm1vZGUgPSAwOwkJLyogWFhYICovDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYs MjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxz ZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRp Zg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAg IGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRl ciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05 NDYsNyArMTA3NiwxMSBAQCBubnBmc191bmxpbmsgKHN0cnVjdCBpbm9kZSAq IGRpciwgc3RydWN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uYW1lLCBkZW50 cnktPmRfbmFtZS5uYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19N QVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQog ICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAg ICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAg ICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVycm9y ID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6 ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05OTEsNyAr MTEyNSwxMSBAQCBubnBmc19yZW5hbWUgKHN0cnVjdCBpbm9kZSAqIG9sZF9k aXIsIHN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uZXdfbmFtZSwgbmV3X2Rl bnRyeS0+ZF9uYW1lLm5hbWUsIHNpemVvZihtc2cubmV3X25hbWUpKSA+PSBO TlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogCQ0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2 LDI4KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vs c2UNCisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5k aWYNCiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAg ICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFk ZXIsIHNpemVvZihtc2cpKTsNCiAgICAgaWYgKGVycm9yID09IDApDQpAQCAt MTAwOCw4ICsxMTQ2LDEzIEBAIG5ucGZzX3JlbmFtZSAoc3RydWN0IGlub2Rl ICogb2xkX2Rpciwgc3QNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDAp DQogc3RhdGljIGludA0KIG5ucGZzX21rZGlyKHN0cnVjdCBpbm9kZSAqIGRp ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSkNCisjZWxzZQ0K K3N0YXRpYyBpbnQNCitubnBmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiBkaXIs IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKQ0KKyNlbmRp Zg0KIHsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQogICAgIHN0cnVj dCBubnBmc19ub2RlICp4bjsNCkBAIC0xMDQwLDkgKzExODMsMTcgQEAgbm5w ZnNfbWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZA0KIAlYQV9D TEVBUigmbXNnLmF0dHIpOw0KIAlYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1v ZGUpOw0KIAlYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfRElS KTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCiAJWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZz Z2lkKTsNCisjZWxzZQ0KKyAgICAgICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIs IGN1cnJlbnRfZnNnaWQoKSk7DQorI2VuZGlmDQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1zZy5j cmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNn LmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNy ZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAllcnJvciA9IG5ucGZzX21l c3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsN CiAJaWYgKGVycm9yID09IDApDQpAQCAtMTA4Myw3ICsxMjM0LDExIEBAIG5u cGZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGQNCiAgICAg bXNnLnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICBpZiAoc3Ry bGNweShtc2cubmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSwgc2l6ZW9mKG1z Zy5uYW1lKSkgPj0gTk5QRlNfTUFYX05BTUUpDQogCSAgICByZXR1cm4gLUVO QU1FVE9PTE9ORzsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3VycmVu dC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRf dWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dl dF9wYWcoKTsNCiAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBm c3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogICAgIGlmIChlcnJv ciA9PSAwKQ0KQEAgLTExMjgsNyArMTI4MywxMSBAQCBzdGF0aWMgaW50IG5u cGZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkDQogCWlmIChzdHJsY3B5KG1z Zy5uYW1lLCBuYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19NQVhf TkFNRSkNCiAJICAgIHJldHVybiAtRU5BTUVUT09MT05HOw0KIA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0K IAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAg ICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQog CW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJZXJyb3IgPSBu bnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2Yo bXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KQEAgLTExNTcsMjkgKzEzMTYs NDcgQEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAq ZA0KICAgICB4biA9IFZOT0RFX1RPX1hOT0RFKGRpcik7DQogDQogICAgIHsN Ci0Jc3RydWN0IG5ucGZzX21lc3NhZ2Vfc3ltbGluayBtc2c7DQorCXN0cnVj dCBubnBmc19tZXNzYWdlX3N5bWxpbmsgKm1zZyA9IE5VTEw7DQogDQotCW1z Zy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1NZTUxJTks7DQotCW1zZy5w YXJlbnRfaGFuZGxlID0geG4tPmhhbmRsZTsNCi0JaWYgKHN0cmxjcHkobXNn Lm5hbWUsIG5hbWUsIHNpemVvZihtc2cubmFtZSkpID49IE5OUEZTX01BWF9O QU1FKQ0KLQkgICAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQotCWlmIChzdHJs Y3B5KG1zZy5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy5jb250ZW50 cykpID49IE5OUEZTX01BWF9TWU1MSU5LX0NPTlRFTlQpDQotCSAgICByZXR1 cm4gLUVOQU1FVE9PTE9ORzsNCi0JWEFfQ0xFQVIoJm1zZy5hdHRyKTsNCi0J WEFfU0VUX01PREUoJm1zZy5hdHRyLCAwNzc3KTsNCi0JWEFfU0VUX1RZUEUo Jm1zZy5hdHRyLCBOTlBGU19GSUxFX0xOSyk7DQotCVhBX1NFVF9HSUQoJm1z Zy5hdHRyLCBjdXJyZW50LT5mc2dpZCk7DQorCW1zZyA9IGttYWxsb2Moc2l6 ZW9mKCptc2cpLCBHRlBfS0VSTkVMKTsNCiANCi0JbXNnLmNyZWQudWlkID0g Y3VycmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFn KCk7DQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNn LmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KKwlpZiAobXNnID09IE5VTEwpDQor CSAgcmV0dXJuIC1FTk9NRU07DQorDQorCW1zZy0+aGVhZGVyLm9wY29kZSA9 IE5OUEZTX01TR19TWU1MSU5LOw0KKwltc2ctPnBhcmVudF9oYW5kbGUgPSB4 bi0+aGFuZGxlOw0KKwlpZiAoc3RybGNweShtc2ctPm5hbWUsIG5hbWUsIHNp emVvZihtc2ctPm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkgew0KKwkgIGtm cmVlKG1zZyk7DQorCSAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQorCX0NCisJ aWYgKHN0cmxjcHkobXNnLT5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1z Zy0+Y29udGVudHMpKSA+PSBOTlBGU19NQVhfU1lNTElOS19DT05URU5UKSB7 DQorCSAga2ZyZWUobXNnKTsNCisJICByZXR1cm4gLUVOQU1FVE9PTE9ORzsN CisJfQ0KKwlYQV9DTEVBUigmbXNnLT5hdHRyKTsNCisJWEFfU0VUX01PREUo Jm1zZy0+YXR0ciwgMDc3Nyk7DQorCVhBX1NFVF9UWVBFKCZtc2ctPmF0dHIs IE5OUEZTX0ZJTEVfTE5LKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJWEFfU0VUX0dJRCgmbXNnLT5h dHRyLCBjdXJyZW50LT5mc2dpZCk7DQorI2Vsc2UNCisgICAgICAgIFhBX1NF VF9HSUQoJm1zZy0+YXR0ciwgY3VycmVudF9mc2dpZCgpKTsNCisjZW5kaWYN CisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCisJbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisj ZWxzZQ0KKyAgICAgICAgbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7 DQorI2VuZGlmDQorCW1zZy0+Y3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7 DQorCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLT5o ZWFkZXIsIHNpemVvZigqbXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KLQkg ICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKCZtc2cpOw0KKwkg ICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKG1zZyk7DQogDQog CS8qIFhYWCBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZSAqLw0KIAlpZiAo REVOVFJZX1RPX1hERU5UUlkoZGVudHJ5KS0+eGRfZmxhZ3MgPT0gMCkgew0K IAkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiBubnBmc19z eW1saW5rOiBkZW50cnkgbm90IHZhbGlkXG4iKTsNCiAJfQ0KKwlrZnJlZSht c2cpOw0KICAgICB9DQogDQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0xMTg4 LDEyICsxMzY1LDIxIEBAIHN0YXRpYyBpbnQgbm5wZnNfc3ltbGluayhzdHJ1 Y3QgaW5vZGUgKmQNCiAvKg0KICAqIFdlIGhvbGQgaV9tdXRleC4NCiAgKi8N CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx MSwwKQ0KIHN0YXRpYyBpbnQNCiBubnBmc19yZWFkZGlyKHN0cnVjdCBmaWxl ICogZmlsZSwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpDQor I2Vsc2UNCitzdGF0aWMgaW50DQorbm5wZnNfaXRlcmF0ZShzdHJ1Y3QgZmls ZSAqIGZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KQ0KKyNlbmRpZg0K IHsNCiAgICAgaW50IGVycm9yOw0KICAgICBsb2ZmX3Qgb2Zmc2V0LCBiZWdp bl9vZmZzZXQ7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0K KyNlbmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmNhY2hlX2lub2RlOw0KICAg ICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9k ZSk7DQogICAgIGNoYXIgKmJ1ZjsNCkBAIC0xMjE3LDYgKzE0MDMsNyBAQCBu bnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqDQogDQog ICAgIGNhY2hlX2lub2RlID0gYmFja2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsN CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxMSwwKQ0KICAgICB3aGlsZSAoZmlsZS0+Zl9wb3MgPCBpX3NpemVfcmVh ZChjYWNoZV9pbm9kZSkpIHsNCiAJTk5QRlNERUIoWERFQlJFQURESVIsDQog CSAgICAgICAoIm5ucGZzX3JlYWRkaXIgZmlsZS0+Zl9wb3M6ICVkIGlfc2l6 ZTogJWRcbiIsDQpAQCAtMTIyOSw2ICsxNDE2LDIwIEBAIG5ucGZzX3JlYWRk aXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJbWFwcGluZyA9IGJh Y2tmaWxlLT5mX21hcHBpbmc7DQogCWlucGFnZSA9IGZpbGUtPmZfcG9zICYg KFBBR0VfQ0FDSEVfU0laRS0xKTsNCiAJcGFnZV9udW0gPSBmaWxlLT5mX3Bv cyA+PiBQQUdFX0NBQ0hFX1NISUZUOw0KKyNlbHNlDQorICAgIHdoaWxlIChj dHgtPnBvcyA8IGlfc2l6ZV9yZWFkKGNhY2hlX2lub2RlKSkgew0KKwlOTlBG U0RFQihYREVCUkVBRERJUiwNCisJICAgICAgICgibm5wZnNfcmVhZGRpciBm aWxlLT5mX3BvczogJWQgaV9zaXplOiAlZFxuIiwNCisJCShpbnQpIGN0eC0+ cG9zLCAoaW50KSBjYWNoZV9pbm9kZS0+aV9zaXplKSk7DQorCWJlZ2luX29m ZnNldCA9IGN0eC0+cG9zICZ+IChOTlBGU19ESVJFTlRfQkxPQ0tTSVpFIC0g MSk7DQorCW9mZnNldCA9IGN0eC0+cG9zICYgKE5OUEZTX0RJUkVOVF9CTE9D S1NJWkUgLSAxKTsNCisJY3R4LT5wb3MgPSBiZWdpbl9vZmZzZXQ7DQorCU5O UEZTREVCKFhERUJSRUFERElSLCAoIm5ucGZzX3JlYWRkaXIgYmVnaW5fb2Zm c2V0OiAlZCBvZmZzZXQ6ICVkXG4iLA0KKwkJCSAgICAgKGludCliZWdpbl9v ZmZzZXQsIChpbnQpb2Zmc2V0KSk7DQorCW1hcHBpbmcgPSBiYWNrZmlsZS0+ Zl9tYXBwaW5nOw0KKwlpbnBhZ2UgPSBjdHgtPnBvcyAmIChQQUdFX0NBQ0hF X1NJWkUtMSk7DQorCXBhZ2VfbnVtID0gY3R4LT5wb3MgPj4gUEFHRV9DQUNI RV9TSElGVDsNCisjZW5kaWYNCiANCiAJTk5QRlNERUIoWERFQlJFQURESVIs DQogCSAgICAgICAoIm5ucGZzX3JlYWRkaXIgaW5wYWdlOiAlZCBwYWdlX251 bTogJWx1XG4iLA0KQEAgLTEyNjQsNiArMTQ2NSw3IEBAIG5ucGZzX3JlYWRk aXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJCSAgICAoaW50KSB4 ZGlyZW50LT5kX25hbWxlbiwNCiAJCSAgICAoaW50KSAob2Zmc2V0K2JlZ2lu X29mZnNldCkpKTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxMSwwKQ0KIAkgICAgaWYgKHhkaXJlbnQtPmRfZmls ZW5vICE9IDANCiAJCSYmIChmaWxsZGlyX2Vycm9yID0gZmlsbGRpciAoZGly ZW50LA0KIAkJCQkgICAgIHhkaXJlbnQtPmRfbmFtZSwNCkBAIC0xMjc1LDEy ICsxNDc3LDI4IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJCQkgKCJubnBmc19yZWFkZGlyIGZpbGxkaXI6ICVkXG4i LCBmaWxsZGlyX2Vycm9yKSk7DQogCQlicmVhazsNCiAJICAgIH0NCisjZWxz ZQ0KKwkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9IDANCisJCSYmIChm aWxsZGlyX2Vycm9yID0gZGlyX2VtaXQgKGN0eCwNCisJCQkJICAgICB4ZGly ZW50LT5kX25hbWUsDQorCQkJCSAgICAgeGRpcmVudC0+ZF9uYW1sZW4sDQor CQkJCSAgICAgeGRpcmVudC0+ZF9maWxlbm8sDQorCQkJCSAgICAgRFRfVU5L Tk9XTikpIDwgMCkgew0KKwkJTk5QRlNERUIoWERFQlJFQURESVIsDQorCQkJ ICgibm5wZnNfcmVhZGRpciBmaWxsZGlyOiAlZFxuIiwgZmlsbGRpcl9lcnJv cikpOw0KKwkJYnJlYWs7DQorCSAgICB9DQorI2VuZGlmDQogCSAgICBvZmZz ZXQgKz0geGRpcmVudC0+ZF9yZWNsZW47DQogDQogCSAgICBpZiAoeGRpcmVu dC0+ZF9yZWNsZW4gPT0gMCkgew0KIAkJcHJpbnRrKEtFUk5fRU1FUkcgIk5O UEZTIFBhbmljOiAiDQogCQkgICAgICAgImVtcHR5IGRpcmVudCBhdCAlbGxk IGluIG5ucGZzX3JlYWRkaXIsIHBvcyAlZCBzaXplICVkXG4iLA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDExLDApDQog CQkgICAgICAgKGxvbmcgbG9uZylvZmZzZXQsIChpbnQpZmlsZS0+Zl9wb3Ms DQorI2Vsc2UNCisJCSAgICAgICAobG9uZyBsb25nKW9mZnNldCwgKGludClj dHgtPnBvcywNCisjZW5kaWYNCiAJCSAgICAgICAoaW50KWNhY2hlX2lub2Rl LT5pX3NpemUpOw0KIAkJTk5QRlNERUIoWERFQlZOT1BTLCAoImlub2RlOiAl cCBhbGlhc2VzOiIsIGlub2RlKSk7DQogCQlubnBmc19wcmludF9hbGlhc2Vz KGlub2RlKTsNCkBAIC0xMjk4LDcgKzE1MTYsMTEgQEAgbm5wZnNfcmVhZGRp cihzdHJ1Y3QgZmlsZSAqIGZpbGUsIHZvaWQgKg0KIAlpZiAob2Zmc2V0ID4g Tk5QRlNfRElSRU5UX0JMT0NLU0laRSkNCiAJICAgIG9mZnNldCA9IE5OUEZT X0RJUkVOVF9CTE9DS1NJWkU7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAJZmlsZS0+Zl9wb3MgPSBi ZWdpbl9vZmZzZXQgKyBvZmZzZXQ7DQorI2Vsc2UNCisJY3R4LT5wb3MgPSBi ZWdpbl9vZmZzZXQgKyBvZmZzZXQ7DQorI2VuZGlmDQogDQogCWlmIChlcnJv ciB8fCBvZmZzZXQgPCBOTlBGU19ESVJFTlRfQkxPQ0tTSVpFKQ0KIAkgICAg YnJlYWs7DQpAQCAtMTMzMSw5ICsxNTUzLDE1IEBAIG5ucGZzX3JlYWRsaW5r IChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGMNCiAgKiBXZSBkb24ndCBob2xk IGlfbXV0ZXguDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDQsMiwwKQ0KIHN0YXRpYyB2b2lkICoNCiBubnBm c19mb2xsb3dfbGluayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KIAkJIHN0 cnVjdCBuYW1laWRhdGEgKm5kKQ0KKyNlbHNlDQorc3RhdGljIGNvbnN0IGNo YXIgKg0KK25ucGZzX2ZvbGxvd19saW5rIChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksDQorCQkgdm9pZCAqKnBhZ2UpDQorI2VuZGlmDQogew0KICAgICBpbnQg ZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZ X1RPX0lOT0RFKGRlbnRyeSk7DQpAQCAtMTM0NCw3ICsxNTcyLDExIEBAIG5u cGZzX2ZvbGxvd19saW5rIChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkNCiAgICAg aWYgKGVycm9yKQ0KICAgICAgICByZXR1cm4gRVJSX1BUUihlcnJvcik7DQog DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQs MiwwKQ0KICAgICByZXR1cm4gcGFnZV9mb2xsb3dfbGlua19saWdodChkZW50 cnksIG5kKTsNCisjZWxzZQ0KKyAgICByZXR1cm4gcGFnZV9mb2xsb3dfbGlu a19saWdodChkZW50cnksIHBhZ2UpOw0KKyNlbmRpZg0KIH0NCiANCiAvKg0K QEAgLTEzOTgsNyArMTYzMCwxMSBAQCBubnBmc19zZXRhdHRyIChzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHN0DQogICAgICAgICBzdHJ1Y3Qgbm5wZnNfbWVz c2FnZV9wdXRhdHRyIG1zZzsNCiANCiAgICAgICAgIG1zZy5oZWFkZXIub3Bj b2RlID0gTk5QRlNfTVNHX1BVVEFUVFI7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVp ZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQu dWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNyZWQucGFn ID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICAgICAgbXNnLmhhbmRsZSA9IHhu LT5oYW5kbGU7DQogICAgICAgICBubnBmc19pYXR0cjJhdHRyKHhuLCBhdHRy LCAmbXNnLmF0dHIpOw0KQEAgLTE0MjIsNiArMTY1OCw4IEBAIG5ucGZzX3Jl bGVhc2VfZmlsZSAoc3RydWN0IGlub2RlICppbm9kZSwNCiAgICAgc3RydWN0 IG5ucGZzX25vZGUgKnhuOw0KICAgICBpbnQgZXJyb3IgPSAwOw0KIA0KKyAg ICAodm9pZClubnBmc3A7DQorDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywg KCJubnBmc19yZWxlYXNlX2ZpbGVcbiIpKTsNCiANCiAgICAgZXJyb3IgPSBu bnBmc19pbm9kZV92YWxpZChpbm9kZSk7DQpAQCAtMTQ1MCwxOCArMTY4OCwx OCBAQCBubnBmc19yZWxlYXNlX2ZpbGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUs DQogICoNCiAgKi8NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50DQogbm5wZnNfZmx1 c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpDQotI2Vsc2UN Ci1zdGF0aWMgaW50DQotbm5wZnNfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUp DQotI2VuZGlmDQogew0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5w ZnNfZmx1c2hcbiIpKTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBpZiAoZmlsZSAmJiBmaWxl LT5mX2RlbnRyeSAmJiBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZSkNCiAJcmV0 dXJuIG5ucGZzX3JlbGVhc2VfZmlsZShmaWxlLT5mX2RlbnRyeS0+ZF9pbm9k ZSwgZmlsZSk7DQorI2Vsc2UNCisgICAgaWYgKGZpbGUgJiYgZmlsZS0+Zl9w YXRoLmRlbnRyeSAmJiBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlKQ0K KwlyZXR1cm4gbm5wZnNfcmVsZWFzZV9maWxlKGZpbGUtPmZfcGF0aC5kZW50 cnktPmRfaW5vZGUsIGZpbGUpOw0KKyNlbmRpZg0KICAgICBlbHNlDQogCXJl dHVybiAwOw0KIH0NCkBAIC0xNDcwLDEwICsxNzA4LDI0IEBAIG5ucGZzX2Zs dXNoKHN0cnVjdCBmaWxlICpmaWxlKQ0KICAqIFJldHVybiAxIGlmIGBkZW50 cnknIGlzIHN0aWxsIHZhbGlkLCBvdGhlcndpc2UgMC4NCiAgKi8NCiANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDAp DQorc3RhdGljIGludA0KK25ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0KKyNlbHNlDQog c3RhdGljIGludA0KLW5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5kKSANCitubnBmc19kX3Jl dmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQg ZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQorDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLDYsMCkNCisgICAgaWYg KGZsYWdzICYgTE9PS1VQX1JDVSkNCisgICAgICAgIHJldHVybiAtRUNISUxE Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMzgpDQorICAgIGlmIChuZCAmJiBuZC0+ZmxhZ3MgJiBMT09LVVBf UkNVKQ0KKyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQorI2VuZGlmDQorDQog ICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19kX3JldmFsaWRhdGUg JXAgXCIlLipzXCIgKGlub2RlICVwKVxuIiwNCiAJCSAgICAgICBkZW50cnks DQogCQkgICAgICAgKGludClkZW50cnktPmRfbmFtZS5sZW4sDQpAQCAtMTUx OSw5ICsxNzcxLDE1IEBAIG5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkNCiAgICAgcmV0dXJuIDA7DQogfQ0KIA0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogc3Rh dGljDQogaW50DQogbm5wZnNfZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVu dHJ5KQ0KKyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUo Y29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbmRpZg0KIHsNCiAg ICAgc3RydWN0IGlub2RlICppbm9kZTsNCiAgICAgc3RydWN0IG5ucGZzX25v ZGUgKnhuOw0KQEAgLTE1NDYsMTEgKzE4MDQsMTYgQEAgbm5wZnNfZF9kZWxl dGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KIH0NCiANCiBzdGF0aWMgc3Np emVfdA0KLW5ucGZzX3NlbmRmaWxlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2Zm X3QgKnBwb3MsIHNpemVfdCBjb3VudCwNCi0JICAgICAgIHJlYWRfYWN0b3Jf dCBhY3Rvciwgdm9pZCAqdGFyZ2V0KQ0KK25ucGZzX3NwbGljZV9yZWFkKHN0 cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QgKnBwb3MsDQorCQkgIHN0cnVjdCBw aXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBjb3VudCwNCisJCSAgdW5z aWduZWQgaW50IGZsYWdzKQ0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww KQ0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnkt PmRfaW5vZGU7DQorI2Vsc2UNCisgICAgc3RydWN0IGlub2RlICppbm9kZSA9 IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7DQorI2VuZGlmDQogICAg IHN0cnVjdCBubnBmc19ub2RlICp4biA9IFZOT0RFX1RPX1hOT0RFKGlub2Rl KTsNCiAgICAgDQogICAgIGlmICh4biAhPSBOVUxMKQ0KQEAgLTE1NjEsOCAr MTgyNCw3IEBAIG5ucGZzX3NlbmRmaWxlKHN0cnVjdCBmaWxlICpmaWxlLCBs b2ZmX3QNCiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3NlbmRmaWxl OiBkYXRhIG5vdCB2YWxpZCAlZFxuIiwgZXJyb3IpKTsNCiAJcmV0dXJuIGVy cm9yOw0KICAgICB9DQotDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3Nl bmRmaWxlKGZpbGUsIHBwb3MsIGNvdW50LCBhY3RvciwgdGFyZ2V0KTsNCisg ICAgZXJyb3IgPSBmaWxlLT5mX29wLT5zcGxpY2VfcmVhZChmaWxlLCBwcG9z LCBwaXBlLCBjb3VudCwgZmxhZ3MpOw0KIA0KICAgICBOTlBGU0RFQihYREVC Vk5PUFMsICgibm5wZnNfc2VuZGZpbGU6IGVycm9yID0gJWRcbiIsIGVycm9y KSk7DQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0xNjM5LDQwICsxOTAxLDQx IEBAIG5ucGZzX3dyaXRlX2JhY2twYWdlKHN0cnVjdCBwYWdlICpwYWdlLCAN CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBiYWNrZmlsZS0+ Zl9tYXBwaW5nOw0KIAl1bnNpZ25lZCBsZW4gPSBQQUdFX0NBQ0hFX1NJWkU7 DQogCXN0cnVjdCBwYWdlICpiYWNrcGFnZTsNCisJdm9pZCAqZnNkYXRhOw0K IAl1bnNpZ25lZCBsb25nIG9mZnNldDsNCiANCiAJaW50IGVycm9yOw0KIAkN Ci0JZG8gew0KLQkJYmFja3BhZ2UgPSBncmFiX2NhY2hlX3BhZ2UobWFwcGlu Zywgbm5wZnNfZ2V0X2JhY2tpbmRleChwYWdlKSk7DQotCQlpZiAoIWJhY2tw YWdlKSB7DQotCQkJcHJpbnRrKCJubnBmc193cml0ZV9iYWNrcGFnZTogbm8g cGFnZVxuIik7DQotCQkJcmV0dXJuIC1FSU87DQotCQl9DQorCSh2b2lkKW9m ZnNldDsNCiANCi0JCWVycm9yID0gbWFwcGluZy0+YV9vcHMtPnByZXBhcmVf d3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJCQkJCSAgICAgIDAsIGxl bik7DQorCWRvIHsNCisJCWVycm9yID0gcGFnZWNhY2hlX3dyaXRlX2JlZ2lu KGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJCQkgICAgICBBT1Bf RkxBR19VTklOVEVSUlVQVElCTEUsDQorCQkJCQkgICAgICAmYmFja3BhZ2Us ICZmc2RhdGEpOw0KIAkJaWYgKCFlcnJvcikgew0KIAkJCWNvcHlfaGlnaHBh Z2UoYmFja3BhZ2UsIHBhZ2UpOw0KIAkJCWZsdXNoX2RjYWNoZV9wYWdlKGJh Y2twYWdlKTsNCi0JCQllcnJvciA9IG1hcHBpbmctPmFfb3BzLT5jb21taXRf d3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJCQkJCQkgICAgIDAsIGxl bik7DQorCQkJZXJyb3IgPSBwYWdlY2FjaGVfd3JpdGVfZW5kKGJhY2tmaWxl LCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJCQlsZW4sIGJhY2twYWdlLCBmc2Rh dGEpOw0KKwkJCWlmIChlcnJvciA+IDApDQorCQkJCWVycm9yID0gMDsNCiAJ CX0NCiAJCWlmIChlcnJvciA9PSBBT1BfVFJVTkNBVEVEX1BBR0UpIHsNCi0J CQlwYWdlX2NhY2hlX3JlbGVhc2UoYmFja3BhZ2UpOw0KIAkJCWNvbnRpbnVl Ow0KIAkJfQ0KIAl9IHdoaWxlICgwKTsNCiANCiAJb2Zmc2V0ID0gcGFnZV9v ZmZzZXQoYmFja3BhZ2UpOw0KLQl1bmxvY2tfcGFnZShiYWNrcGFnZSk7DQot CXBhZ2VfY2FjaGVfcmVsZWFzZShiYWNrcGFnZSk7DQogDQogCWlmIChlcnJv cikNCiAJCXByaW50aygibm5wZnNfd3JpdGVfYmFja3BhZ2U6IEVJT1xuIik7 DQogI2lmZGVmIE5OUEZTX1NBRkVfU1lOQw0KIAllbHNlDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzMikNCiAJCSh2 b2lkKXN5bmNfcGFnZV9yYW5nZShtYXBwaW5nLT5ob3N0LCBtYXBwaW5nLCBv ZmZzZXQsIGxlbik7DQorI2Vsc2UNCisJCSh2b2lkKWZpbGVtYXBfd3JpdGVf YW5kX3dhaXRfcmFuZ2UobWFwcGluZywgb2Zmc2V0LCBvZmZzZXQgKyBsZW4g LSAxKTsNCisjZW5kaWYNCiAjZW5kaWYNCiAJDQogCXJldHVybiBlcnJvcjsN CkBAIC0xNjg5LDEzICsxOTUyLDkgQEAgbm5wZnNfcmVhZF9iYWNrcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSwgcw0KIAlzdHJ1Y3QgcGFnZSAqYmFja3BhZ2U7 DQogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0KIA0KLSNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0KKwkodm9pZClv ZmZzZXQ7DQorDQogCWJhY2twYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFw cGluZywgbiwgYmFja2ZpbGUpOw0KLSNlbHNlDQotCWJhY2twYWdlID0gcmVh ZF9jYWNoZV9wYWdlKG1hcHBpbmcsIG4sDQotCQkJCSAgIChmaWxsZXJfdCAq KW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwNCi0JCQkJICAgYmFja2ZpbGUp Ow0KLSNlbmRpZg0KIAlpZiAoIUlTX0VSUihiYWNrcGFnZSkpIHsNCiAJCXdh aXRfb25fcGFnZV9sb2NrZWQoYmFja3BhZ2UpOw0KIA0KQEAgLTE4NDIsMTEg KzIxMDEsMTcgQEAgbm5wZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgcw0KIA0KIAlpZiAobW9kc2l6ZSA+IGlfc2l6ZV9yZWFkKGlub2Rl KSkgew0KIAkJaW50IGVycm9yOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDgsMCkNCiAJCWVycm9yID0gdm10cnVuY2F0 ZShpbm9kZSwgbW9kc2l6ZSk7DQorI2Vsc2UNCisJCWVycm9yID0gaW5vZGVf bmV3c2l6ZV9vayhpbm9kZSwgbW9kc2l6ZSk7DQorCQlpZighZXJyb3IpDQor CQkJdHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgbW9kc2l6ZSk7DQorI2VuZGlm DQogCQlpZiAoZXJyb3IpIHsNCiAJCQlwcmludGsoIm5ucGZzX3ByZXBhcmVf d3JpdGU6IHRydW5jYXRlKCVsbHUpIC0+ICVkXG4iLA0KIAkJCSAgICAgICBt b2RzaXplLCAtZXJyb3IpOw0KLQkJCUJVRygpOyAvKiBYWFggbm90IGNvcnJl Y3QgKi8NCisJCQkvKkJVRygpOyovIC8qIFhYWCBub3QgY29ycmVjdCAqLw0K IAkJfQ0KIAl9DQogDQpAQCAtMTg3Miw0NCArMjEzNywxMTggQEAgbm5wZnNf cHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgcw0KIAlyZXR1cm4g cmV0Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiBzdGF0aWMgaW50DQotbm5wZnNfY29tbWl0 X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwg dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pDQorbm5wZnNfd3JpdGVfYmVn aW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nLCBsb2ZmX3QgcG9zLA0KK3Vuc2lnbmVkIGxlbiwgdW5zaWduZWQg ZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpDQog ew0KLSAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gcGFnZS0+bWFwcGluZy0+ aG9zdDsNCi0gICAgbG9mZl90IHBvcyA9ICgobG9mZl90KXBhZ2UtPmluZGV4 IDw8IFBBR0VfQ0FDSEVfU0hJRlQpICsgdG87DQorCXN0cnVjdCBwYWdlICpw YWdlOw0KKwlwZ29mZl90IGluZGV4Ow0KKwl1bnNpZ25lZCBmcm9tOw0KKwlp bnQgcmV0ID0gMDsNCiANCi0gICAgaWYgKHBvcyA+IGlub2RlLT5pX3NpemUp IHsNCi0JaV9zaXplX3dyaXRlKGlub2RlLCBwb3MpOw0KKwlpbmRleCA9IHBv cyA+PiBQQUdFX0NBQ0hFX1NISUZUOw0KKwlmcm9tID0gcG9zICYgKFBBR0Vf Q0FDSEVfU0laRSAtIDEpOw0KIA0KLQlzcGluX2xvY2soJmlub2RlLT5pX2xv Y2spOw0KLQlpbm9kZS0+aV9ibG9ja3MgPSAocG9zICsgSV9CTE9DS1NfVU5J VCAtIDEpID4+IElfQkxPQ0tTX0JJVFM7DQotCXNwaW5fdW5sb2NrKCZpbm9k ZS0+aV9sb2NrKTsNCi0gICAgfQ0KLSAgICBzZXRfcGFnZV9kaXJ0eShwYWdl KTsNCisJcGFnZSA9IGdyYWJfY2FjaGVfcGFnZV93cml0ZV9iZWdpbihtYXBw aW5nLCBpbmRleCwgZmxhZ3MpOw0KKwlpZiAoIXBhZ2UpDQorCQlyZXR1cm4g LUVOT01FTTsNCisNCisJKnBhZ2VwID0gcGFnZTsNCisNCisJcmV0ID0gbm5w ZnNfcHJlcGFyZV93cml0ZShmaWxlLCBwYWdlLCBmcm9tLCBmcm9tICsgbGVu KTsNCisJaWYgKHJldCkgew0KKwkJdW5sb2NrX3BhZ2UocGFnZSk7DQorCQlw YWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQorCX0NCisNCisJcmV0dXJuIHJl dDsNCit9DQorI2VuZGlmDQogDQorLyogWFhYIHdlIHVzZSB0aGUgc3lzdGVt IHByb3ZpZGVkIHNpbXBsZV9jb21taXRfd3JpdGUgaW5zdGVhZCBzbyB0aGlz IGZ1bmN0aW9uIGlzIHVudXNlZCBmb3Igbm93ICovDQogI2lmIDANCi0gICAg ew0KLQljaGFyICphZGRyOw0KLQlrbWFwKHBhZ2UpOw0KLQlhZGRyID0gcGFn ZV9hZGRyZXNzKHBhZ2UpOw0KLQlOTlBGU0RFQihYREVCVk5PUFMsICgibm5w ZnNfY29tbWl0X3dyaXRlKCVwKTogJXgleCV4JXhcbiIsDQorc3RhdGljIGlu dA0KK25ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3Ry dWN0IHBhZ2UgKnBhZ2UsDQorCQkgICB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l ZCB0bykNCit7DQorCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBw aW5nLT5ob3N0Ow0KKwlsb2ZmX3QgcG9zID0gKChsb2ZmX3QpcGFnZS0+aW5k ZXggPDwgUEFHRV9DQUNIRV9TSElGVCkgKyB0bzsNCisNCisJaWYgKCFQYWdl VXB0b2RhdGUocGFnZSkpDQorCQlTZXRQYWdlVXB0b2RhdGUocGFnZSk7DQor DQorCWlmIChwb3MgPiBpbm9kZS0+aV9zaXplKSB7DQorCQlpX3NpemVfd3Jp dGUoaW5vZGUsIHBvcyk7DQorDQorCQlzcGluX2xvY2soJmlub2RlLT5pX2xv Y2spOw0KKwkJaW5vZGUtPmlfYmxvY2tzID0gKHBvcyArIElfQkxPQ0tTX1VO SVQgLSAxKSA+PiBJX0JMT0NLU19CSVRTOw0KKwkJc3Bpbl91bmxvY2soJmlu b2RlLT5pX2xvY2spOw0KKwl9DQorCXNldF9wYWdlX2RpcnR5KHBhZ2UpOw0K Kw0KKyNpZiAwDQorCXsNCisJICAgIGNoYXIgKmFkZHI7DQorCSAgICBrbWFw KHBhZ2UpOw0KKwkgICAgYWRkciA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsNCisJ ICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19jb21taXRfd3JpdGUo JXApOiAleCV4JXgleFxuIiwNCiAJCQkgICAgIGZpbGUtPmZfbWFwcGluZy0+ aG9zdCwgDQogCQkJICAgICBhZGRyWzBdLCBhZGRyWzFdLCBhZGRyWzJdLCBh ZGRyWzNdKSk7DQotCWt1bm1hcChwYWdlKTsNCi0gICAgfQ0KKwkgICAga3Vu bWFwKHBhZ2UpOw0KKwl9DQogI2VuZGlmDQotICAgIA0KLSAgICByZXR1cm4g MDsNCisgDQorCXJldHVybiAwOw0KIH0NCisjZW5kaWYNCiANCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCi1j b25zdA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KKy8qIFhYWCB3ZSB1c2UgdGhlIHN5c3RlbSBwcm92aWRl ZCBzaW1wbGVfd3JpdGVfZW5kIGluc3RlYWQgc28gdGhpcyBmdW5jdGlvbiBp cyB1bnVzZWQgZm9yIG5vdyAqLw0KKyNpZiAwDQorc3RhdGljIGludA0KK25u cGZzX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGFkZHJl c3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBwb3MsDQorCQl1bnNpZ25lZCBs ZW4sIHVuc2lnbmVkIGNvcGllZCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQg KmZzZGF0YSkNCit7DQorCXVuc2lnbmVkIGZyb20gPSBwb3MgJiAoUEFHRV9D QUNIRV9TSVpFIC0gMSk7DQorDQorCS8qIHplcm8gdGhlIHN0YWxlIHBhcnQg b2YgdGhlIHBhZ2UgaWYgd2UgZGlkIGEgc2hvcnQgY29weSAqLw0KKwlpZiAo Y29waWVkIDwgbGVuKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJdm9pZCAqa2FkZHIgPSBrbWFwX2F0 b21pYyhwYWdlLCBLTV9VU0VSMCk7DQorI2Vsc2UNCisJCXZvaWQgKmthZGRy ID0ga21hcF9hdG9taWMocGFnZSk7DQorI2VuZGlmDQorCQltZW1zZXQoa2Fk ZHIgKyBmcm9tICsgY29waWVkLCAwLCBsZW4gLSBjb3BpZWQpOw0KKwkJZmx1 c2hfZGNhY2hlX3BhZ2UocGFnZSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJa3VubWFwX2F0b21pYyhr YWRkciwgS01fVVNFUjApOw0KKyNlbHNlDQorCQlrdW5tYXBfYXRvbWljKGth ZGRyKTsNCiAjZW5kaWYNCisJfQ0KKw0KKwlubnBmc19jb21taXRfd3JpdGUo ZmlsZSwgcGFnZSwgZnJvbSwgZnJvbSArIGNvcGllZCk7DQorDQorCXVubG9j a19wYWdlKHBhZ2UpOw0KKwlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQor DQorCXJldHVybiBjb3BpZWQ7DQorfQ0KKyNlbmRpZg0KKyNlbmRpZg0KKw0K K2NvbnN0DQogc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBubnBm c19hb3BzID0gew0KIAkucmVhZHBhZ2UgPSBubnBmc19yZWFkcGFnZSwNCiAJ LndyaXRlcGFnZSA9IG5ucGZzX3dyaXRlcGFnZSwNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAkucHJlcGFy ZV93cml0ZSA9IG5ucGZzX3ByZXBhcmVfd3JpdGUsDQotCS5jb21taXRfd3Jp dGUgPSBubnBmc19jb21taXRfd3JpdGUsDQorCS5jb21taXRfd3JpdGUgPSBz aW1wbGVfY29tbWl0X3dyaXRlLA0KKyNlbHNlDQorCS53cml0ZV9iZWdpbiA9 IG5ucGZzX3dyaXRlX2JlZ2luLA0KKwkud3JpdGVfZW5kID0gc2ltcGxlX3dy aXRlX2VuZCwNCisjZW5kaWYNCiB9Ow0KIA0KIC8qDQpAQCAtMTkxNywyMSAr MjI1NiwzMCBAQCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIG5u cGZzX2FvDQogICovDQogDQogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBm c19maWxlX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgLmFpb19yZWFkCT0g bm5wZnNfYWlvX3JlYWQsDQogICAgIC5haW9fd3JpdGUJPSBubnBmc19haW9f d3JpdGUsDQorI2Vsc2UNCisgICAgLnJlYWRfaXRlcgk9IG5ucGZzX3JlYWRf aXRlciwNCisgICAgLndyaXRlX2l0ZXIJPSBubnBmc193cml0ZV9pdGVyLA0K KyNlbmRpZg0KICAgICAubW1hcAk9IG5ucGZzX2ZpbGVfbW1hcCwNCiAgICAg Lm9wZW4JPSBubnBmc19vcGVuLA0KICAgICAuZmx1c2gJPSBubnBmc19mbHVz aCwNCiAgICAgLnJlbGVhc2UJPSBubnBmc19yZWxlYXNlX2ZpbGUsDQogICAg IC5mc3luYwk9IG5ucGZzX2ZzeW5jLA0KLSAgICAuc2VuZGZpbGUJPSBubnBm c19zZW5kZmlsZSwNCisgICAgLnNwbGljZV9yZWFkID0gbm5wZnNfc3BsaWNl X3JlYWQsDQogfTsNCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZz X2RlYWRfb3BlcmF0aW9ucyA9IHsNCiB9Ow0KIA0KIHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgbm5wZnNfZGlyX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAgICAg LnJlYWRkaXIJPSBubnBmc19yZWFkZGlyLA0KKyNlbHNlDQorICAgIC5pdGVy YXRlICAgID0gbm5wZnNfaXRlcmF0ZSwNCisjZW5kaWYNCiAgICAgLmZsdXNo CT0gbm5wZnNfZmx1c2gsDQogfTsNCiANCmRpZmYgLXVwck4gLVhub2RpZmYg YXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19sb2FkLmMgYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX2xvYWQuYw0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfbG9hZC5jCTIwMDYtMTAtMzEgMTE6MDI6 NDEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4 L25ucGZzX2xvYWQuYwkyMDE2LTAxLTEzIDIwOjE0OjAyLjAwMDAwMDAwMCAr MDEwMA0KQEAgLTU0LDcgKzU0LDExIEBAIGV4dGVybiBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIG5ucGZzX2ZvcHMNCiANCiBzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSBubnBmc19mc190eXBlID0gew0KICAgICAgICBuYW1lOiAgICAgICAg ICAgIm5ucGZzIiwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM5KQ0KICAgICAgICBnZXRfc2I6ICAgICAgICAgbm5w ZnNfZ2V0X3NiLA0KKyNlbHNlDQorICAgICAgIG1vdW50OiAgICAgICAgICBu bnBmc19tb3VudCwNCisjZW5kaWYNCiAgICAgICAga2lsbF9zYjogICAgICAg IGtpbGxfbGl0dGVyX3N1cGVyLA0KICAgICAgICBvd25lcjogICAgICAgICAg VEhJU19NT0RVTEUsDQogfTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0w LjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19tZXNzYWdlLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2UuYw0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfbWVzc2FnZS5jCTIwMDctMDEtMDkgMTc6 MzM6MzEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xp bnV4L25ucGZzX21lc3NhZ2UuYwkyMDE2LTAxLTI0IDE4OjUyOjI4LjAwMDAw MDAwMCArMDEwMA0KQEAgLTQ1LDcgKzQ1LDcgQEANCiAjaW5jbHVkZSA8bGlu dXgvbW91bnQuaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBu bnBmc19tZXNzYWdlLmMsdiAxLjE0My4yLjEgMjAwNy8wMS8wOSAxNjozMzoz MSB0b2wgRXhwICQiKTsNCitSQ1NJRCgiJElkOiBubnBmc19tZXNzYWdlLmMs diAxLjE0NSAyMDEwLzA4LzA4IDIwOjQzOjA1IHRvbCBFeHAgJCIpOw0KICNl bmRpZg0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtNTUsOSArNTUsMTUgQEAgc3Rh dGljIHZvaWQNCiBubnBmc19kX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpDQogew0KICAgICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX2RfcmVt b3ZlICVwXG4iLCBkZW50cnkpKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KICAgICBzcGluX2xvY2soJmRj YWNoZV9sb2NrKTsNCiAgICAgZGdldF9sb2NrZWQoZGVudHJ5KTsNCiAgICAg c3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBzcGlu X2xvY2soJmRlbnRyeS0+ZF9sb2NrKTsNCisgICAgZGdldF9kbG9jayhkZW50 cnkpOw0KKyAgICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2spOw0KKyNl bmRpZg0KICAgICBkX2Ryb3AoZGVudHJ5KTsNCiAgICAgZHB1dChkZW50cnkp Ow0KIH0NCkBAIC0xMjEsNyArMTI3LDExIEBAIG5ucGZzX21lc3NhZ2VfaW5z dGFsbG5vZGUoc3RydWN0IG5ucGZzICoNCiAgICAgc3RydWN0IGlub2RlICpk aSwgKmlub2RlOw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQgPSBOVUxM Ow0KICAgICBzdHJ1Y3QgcXN0ciBzcXN0cjsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBs aXN0X2hlYWQgKmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqYWxpYXM7DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVC TVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGVcbiIpKTsNCiAgICAg DQpAQCAtMTc2LDEyICsxODYsMjYgQEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxs bm9kZShzdHJ1Y3Qgbm5wZnMgKg0KICAgICAgKg0KICAgICAgKi8NCiAgICAg DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs NiwwKQ0KICAgICBhbGlhcyA9IGRpLT5pX2RlbnRyeS5uZXh0Ow0KICAgICB3 aGlsZSAoYWxpYXMgIT0gJmRpLT5pX2RlbnRyeSkgew0KIAlwYXJlbnQgPSBs aXN0X2VudHJ5KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCi0J c3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7DQotCWRnZXRfbG9ja2VkKHBhcmVu dCk7DQotCXNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7DQorI2VsaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAg IGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgYWxpYXMsICZkaS0+aV9k ZW50cnksIGRfYWxpYXMpIHsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGhsaXN0X2Zvcl9lYWNo X2VudHJ5KHBhcmVudCwgJmRpLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNl bHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgJmRpLT5p X2RlbnRyeSwgZF91LmRfYWxpYXMpIHsNCisjZW5kaWYNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KKyAgICBz cGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCisgICAgZGdldF9sb2NrZWQocGFy ZW50KTsNCisgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxz ZQ0KKyAgICBzcGluX2xvY2soJnBhcmVudC0+ZF9sb2NrKTsNCisgICAgZGdl dF9kbG9jayhwYXJlbnQpOw0KKyAgICBzcGluX3VubG9jaygmcGFyZW50LT5k X2xvY2spOw0KKyNlbmRpZg0KIAlkZW50cnkgPSBkX2xvb2t1cChwYXJlbnQs ICZzcXN0cik7DQogCU5OUEZTREVCKFhERUJNU0csDQogCQkgKCJubnBmc19t ZXNzYWdlX2luc3RhbGxub2RlOiBhbGlhcyAlcCwgbG9va3VwICVwXG4iLA0K QEAgLTIzMyw3ICsyNTcsOSBAQCBubnBmc19tZXNzYWdlX2luc3RhbGxub2Rl KHN0cnVjdCBubnBmcyAqDQogCQ0KIAlkcHV0KGRlbnRyeSk7DQogCWRlbnRy eSA9IE5VTEw7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsNiwwKQ0KIAlhbGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRp Zg0KIAlkcHV0KHBhcmVudCk7DQogICAgIH0NCiAgICAgTk5QRlNERUIoWERF Qk1TRywgKCJubnBmc19tZXNzYWdlX2luc3RhbGxub2RlOiBkb25lIGluc3Rh bGxpbmdcbiIpKTsNCkBAIC0yNjgsNyArMjk0LDEzIEBAIG5ucGZzX21lc3Nh Z2VfaW5zdGFsbGF0dHIoc3RydWN0IG5ucGZzICoNCiAgICAgfQ0KIA0KICAg ICBpbm9kZSA9IFhOT0RFX1RPX1ZOT0RFKHQpOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgZGVudHJ5 ID0gbGlzdF9lbnRyeShpbm9kZS0+aV9kZW50cnkubmV4dCwgc3RydWN0IGRl bnRyeSwgZF9hbGlhcyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBkZW50cnkgPSBobGlzdF9l bnRyeShpbm9kZS0+aV9kZW50cnkuZmlyc3QsIHN0cnVjdCBkZW50cnksIGRf YWxpYXMpOw0KKyNlbHNlDQorICAgIGRlbnRyeSA9IGhsaXN0X2VudHJ5KGlu b2RlLT5pX2RlbnRyeS5maXJzdCwgc3RydWN0IGRlbnRyeSwgZF91LmRfYWxp YXMpOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQk1TRywg KCJubnBmc19tZXNzYWdlX2luc3RhbGxhdHRyIG5hbWU6JXNcbiIsDQogCQkg ICAgICAgZGVudHJ5LT5kX25hbWUubmFtZSkpOw0KQEAgLTM5NiwxNyArNDI4 LDM1IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbGRhdGEoc3RydWN0IG5ucGZz ICoNCiBzdGF0aWMgdm9pZA0KIGNsZWFyX2FsbF9jaGlsZHJlbiAoc3RydWN0 IGlub2RlICppbm9kZSwgaW50IHBhcmVudCkNCiB7DQorICAgIHN0cnVjdCBk ZW50cnkgKmRlbnRyeTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmFs aWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7DQor I2VuZGlmDQogDQogIGFnYWluOg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAgIHNwaW5fbG9jaygmZGNh Y2hlX2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5fbG9jaygmaW5vZGUtPmlf bG9jayk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBhbGlhcyA9IGlub2RlLT5pX2Rl bnRyeS5uZXh0Ow0KICAgICB3aGlsZSAoYWxpYXMgIT0gJmlub2RlLT5pX2Rl bnRyeSkgew0KLQlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7DQorI2VsaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAg IGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwgYWxpYXMsICZpbm9kZS0+ aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGhsaXN0X2Zvcl9l YWNoX2VudHJ5KGRlbnRyeSwgJmlub2RlLT5pX2RlbnRyeSwgZF9hbGlhcykg ew0KKyNlbHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwg Jmlub2RlLT5pX2RlbnRyeSwgZF91LmRfYWxpYXMpIHsNCisjZW5kaWYNCiAJ c3RydWN0IGxpc3RfaGVhZCAqc3ViZGlyczsNCiAJc3RydWN0IG5ucGZzX2Rl bnRyeV9kYXRhICp4ZDsNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlkZW50cnkgPSBsaXN0X2VudHJ5 KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisjZW5kaWYNCiAJ aWYgKGRlbnRyeSA9PSBOVUxMKSB7DQogCSAgICBwcmludGsoS0VSTl9FTUVS RyAiTk5QRlMgUGFuaWM6IGRlbnRyeSBpbiBhbGlhcyBsaXN0IGlzIG51bGxc biIpOw0KIAkgICAgYnJlYWs7DQpAQCAtNDIyLDcgKzQ3MiwxMSBAQCBjbGVh cl9hbGxfY2hpbGRyZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsDQogCXN1YmRp cnMgPSBkZW50cnktPmRfc3ViZGlycy5uZXh0Ow0KIAl3aGlsZSAoc3ViZGly cyAhPSAmZGVudHJ5LT5kX3N1YmRpcnMpIHsNCiAJICAgIHN0cnVjdCBsaXN0 X2hlYWQgKnRtcCA9IHN1YmRpcnM7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJICAgIHN0cnVjdCBkZW50 cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRf dS5kX2NoaWxkKTsNCisjZWxzZQ0KKwkgICAgc3RydWN0IGRlbnRyeSAqY2hp bGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF9jaGlsZCk7 DQorI2VuZGlmDQogCSAgICBzdWJkaXJzID0gdG1wLT5uZXh0Ow0KIAkgICAg Tk5QRlNERUIoWERFQk1TRywgKCJjbGVhcl9hbGxfY2hpbGRyZW4gY2hpbGQ6 ICUuKnMgaW5vZGU6ICVwLyVwICINCiAJCQkgICAgICAgImRjb3VudDogJWQg YWxpYXNlczpcbiIsDQpAQCAtNDQyLDE0ICs0OTYsMjQgQEAgY2xlYXJfYWxs X2NoaWxkcmVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIA0KIAkgICAgLyog VGhyb3cgaW1tZWRpYXRlbHkgKi8NCiAJICAgIGlmIChubnBmc19kY291bnQo Y2hpbGQpID09IDApIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMiw2LDM4KQ0KIAkgICAgICAgIHNwaW5fdW5sb2NrKCZk Y2FjaGVfbG9jayk7DQorI2Vsc2UNCisJICAgICAgICBzcGluX3VubG9jaygm aW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQogCQlubnBmc19kX3JlbW92ZShj aGlsZCk7DQogCQlnb3RvIGFnYWluOw0KIAkgICAgfQ0KIAl9DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlh bGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRpZg0KICAgICB9DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAg ICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBz cGluX3VubG9jaygmaW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQogfQ0KIA0K IHN0YXRpYyB2b2lkDQpAQCAtNjA1LDEyICs2NjksMTAgQEAgZ2NfYmxvY2so c3RydWN0IG5ucGZzICpubnBmc3AsDQogICAgIH0NCiANCiAgICAgaWYgKCFu bnBmc19ibG9ja19oYXZlX3AoeG4sIG9mZnNldCkpIHsNCi0jaWYgMCAgIC8q IGhhcHBlbnMgd2hlbiBkYWVtb24gc2VuZHMgc2V2ZXJhbCBtZXNzYWdlcyBm b3Igc2FtZSBibG9jayAqLw0KIAlwcmludGsoS0VSTl9FTUVSRyAiTk5QRlMv Z2NfYmxvY2s6ICINCiAJICAgICAgICJFTk9FTlQgKCVkLCVkLCVkLCVkKSAw eCVsbHhcbiIsIA0KIAkgICAgICAgeG4tPmhhbmRsZS5hLCB4bi0+aGFuZGxl LmIsIHhuLT5oYW5kbGUuYywgeG4tPmhhbmRsZS5kLCANCiAJICAgICAgICh1 bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KTsNCi0jZW5kaWYNCiAJcmV0dXJu IC1FTk9FTlQ7DQogICAgIH0NCiANCkBAIC03MjEsMTIgKzc4MywyMiBAQCBu bnBmc19tZXNzYWdlX3ZlcnNpb24oc3RydWN0IG5ucGZzICpubnBmDQogDQog ICAgIC8qIHNhbml0eSBjaGVjayBiZWZvcmUgd2UgbG9vayBhdCBpdCAqLw0K ICAgICBpZiAoc2l6ZSA9PSBzaXplb2YoKm1lc3NhZ2UpICYmIG1lc3NhZ2Ut PnZlcnNpb24gPT0gTk5QRlNfVkVSU0lPTikgew0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBu YW1laWRhdGEgbmQ7DQorI2Vsc2UNCisJc3RydWN0IHBhdGggcGF0aDsNCisj ZW5kaWYNCiAJaW50IGVycm9yOw0KIA0KIAl1aW50NjRfdCBibG9ja3NpemUg PSBtZXNzYWdlLT5ibG9ja3NpemU7DQogDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRo X2xvb2t1cCgiLiIsIDAsICZuZCk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwllcnJvciA9IGtlcm5f cGF0aCgiLiIsIDAsICZuZC5wYXRoKTsNCisjZWxzZQ0KKwllcnJvciA9IGtl cm5fcGF0aCgiLiIsIDAsICZwYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVycm9y KSB7DQogCSAgICAvKg0KIAkgICAgICogQmFkIGNhY2hlIHJvb3QsIGp1c3Qg cmV0dXJuLg0KQEAgLTczNywxMiArODA5LDIzIEBAIG5ucGZzX21lc3NhZ2Vf dmVyc2lvbihzdHJ1Y3Qgbm5wZnMgKm5ucGYNCiAJCSAgICJubnBmc19tZXNz YWdlX3ZlcnNpb24gZmFpbGVkIHBhdGhfbG9va3VwLCAiDQogCQkgICAiZXJy bm86ICVkXG4iLCBlcnJvcik7DQogCX0gZWxzZSB7DQotCSAgICBubnBmc3At PmNhY2hlcm9vdCA9IG1udGdldChuZC5tbnQpOw0KLQkgICAgbm5wZnNwLT5j YWNoZWRpciA9IGRnZXQobmQuZGVudHJ5KTsNCi0JICAgIHBhdGhfcmVsZWFz ZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDE5LDApDQorCSAgICBubnBmc3AtPmNhY2hlcm9vdCA9IG1udGdl dChuZC5wYXRoLm1udCk7DQorCSAgICBubnBmc3AtPmNhY2hlZGlyID0gZGdl dChuZC5wYXRoLmRlbnRyeSk7DQorCSAgICBwYXRoX3B1dCgmbmQucGF0aCk7 DQorI2Vsc2UNCisJICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50Z2V0KHBh dGgubW50KTsNCisJICAgIG5ucGZzcC0+Y2FjaGVkaXIgPSBkZ2V0KHBhdGgu ZGVudHJ5KTsNCisJICAgIHBhdGhfcHV0KCZwYXRoKTsNCisjZW5kaWYNCiAJ ICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMjkpDQogCSAgICBubnBmc3AtPnVpZCA9IGN1cnJlbnQtPmZzdWlk Ow0KIAkgICAgbm5wZnNwLT5naWQgPSBjdXJyZW50LT5mc2dpZDsNCisjZWxz ZQ0KKyAgICAgICAgICAgIG5ucGZzcC0+dWlkID0gY3VycmVudF9mc3VpZCgp Ow0KKyAgICAgICAgICAgIG5ucGZzcC0+Z2lkID0gY3VycmVudF9mc2dpZCgp Ow0KKyNlbmRpZg0KIA0KIAkgICAgLyogWFhYIHdlIHNob3VsZCB2YWxpZGF0 ZSB0aGVzZSB2YWx1ZXMgKi8NCiAJICAgIG5ucGZzX2Jsb2Nrc2l6ZSA9IGJs b2Nrc2l6ZTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9u bnBmcy9saW51eC9ubnBmc19ub2RlLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4 L25ucGZzX25vZGUuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgv bm5wZnNfbm9kZS5jCTIwMDctMDEtMDMgMTQ6NTI6MDIuMDAwMDAwMDAwICsw MTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX25vZGUuYwky MDE2LTAxLTE0IDE2OjUxOjExLjAwMDAwMDAwMCArMDEwMA0KQEAgLTEzMiw3 ICsxMzIsMTIgQEAgbm5wZnNfc2V0c2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1aW50Ng0KIAlwcmludGsoIm5ucGZzX3NldHNpemU6IHRydW5jYXRpbmcg QDB4JWxsdVxuIiwNCiAJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc2l6 ZSk7DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsOCwwKQ0KIAl2bXRydW5jYXRlKGlub2RlLCBzaXplKTsg LyogWFhYIHJldHZhbCAqLw0KKyNlbHNlDQorCWlmKCFpbm9kZV9uZXdzaXpl X29rKGlub2RlLCBzaXplKSkNCisJICAgIHRydW5jYXRlX3NldHNpemUoaW5v ZGUsIHNpemUpOw0KKyNlbmRpZg0KIAlubnBmc19ibG9ja190cnVuY2F0ZSh4 biwgc2l6ZSk7DQogICAgIH0NCiB9DQpAQCAtMTUwLDkgKzE1NSwxOCBAQCBu bnBmc19hdHRyMmlub2RlKGNvbnN0IHN0cnVjdCBubnBmc19hdHRyDQogCXN0 cnVjdCB0aW1lc3BlYyBub3RpbWUgPSB7MH07DQogDQogCWlub2RlLT5pX21v ZGUgICA9IDA7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTQsMCkNCiAJaW5vZGUtPmlfdWlkICAgID0gMDsNCiAJaW5v ZGUtPmlfZ2lkICAgID0gMDsNCisjZWxzZQ0KKwlpbm9kZS0+aV91aWQgICAg PSBLVUlEVF9JTklUKDApOw0KKwlpbm9kZS0+aV9naWQgICAgPSBLR0lEVF9J TklUKDApOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUtPmlfbmxpbmsgID0gMTsN CisjZWxzZQ0KKwlzZXRfbmxpbmsoaW5vZGUsIDEpOw0KKyNlbmRpZg0KIAlp bm9kZS0+aV9hdGltZSAgPSBub3RpbWU7DQogCWlub2RlLT5pX210aW1lICA9 IG5vdGltZTsNCiAJaW5vZGUtPmlfY3RpbWUgID0gbm90aW1lOw0KQEAgLTE2 OSw3ICsxODMsMTEgQEAgbm5wZnNfYXR0cjJpbm9kZShjb25zdCBzdHJ1Y3Qg bm5wZnNfYXR0cg0KICAgICBpZiAoWEFfVkFMSURfR0lEKGF0dHIpKQ0KIAlp bm9kZS0+aV9naWQgICAgPSBhdHRyLT54YV9naWQ7DQogICAgIGlmIChYQV9W QUxJRF9OTElOSyhhdHRyKSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywyLDApDQogCWlub2RlLT5pX25saW5rICA9IGF0 dHItPnhhX25saW5rOw0KKyNlbHNlDQorCXNldF9ubGluayhpbm9kZSwgYXR0 ci0+eGFfbmxpbmspOw0KKyNlbmRpZg0KICAgICANCiAgICAgaWYgKFhBX1ZB TElEX1NJWkUoYXR0cikpIHsNCiAJbm5wZnNfc2V0c2l6ZShpbm9kZSwgYXR0 ci0+eGFfc2l6ZSk7DQpAQCAtNTEwLDEyICs1MjgsMjQgQEAgbm5wZnNfaGFz X3BhZyhjb25zdCBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeA0KIGludA0KIG5ucGZz X25vZGVfdXNlcnMoc3RydWN0IGlub2RlICppbm9kZSkNCiB7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7DQorI2Vsc2UNCisgICAgc3RydWN0 IGhsaXN0X25vZGUgKnBvczsNCisjZW5kaWYNCiAgICAgaW50IHVzZXJzID0g MDsNCiAgICAgDQogICAgIC8qIFhYWCB0aGlzIHNob3VsZCBwcm9iYWJseSBi ZSBwcm90ZWN0ZWQgc29tZWhvdyAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgbGlzdF9mb3JfZWFj aChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZWxzZQ0KKyAgICBobGlz dF9mb3JfZWFjaChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZW5kaWYN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx OSwwKQ0KIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBsaXN0X2VudHJ5KHBv cywgc3RydWN0IGRlbnRyeSwgZF9hbGlhcyk7DQorI2Vsc2UNCisJc3RydWN0 IGRlbnRyeSAqZGVudHJ5ID0gbGlzdF9lbnRyeShwb3MsIHN0cnVjdCBkZW50 cnksIGRfdS5kX2FsaWFzKTsNCisjZW5kaWYNCiAJaWYgKG5ucGZzX2Rjb3Vu dChkZW50cnkpID4gMSkNCiAJICAgIHVzZXJzKys7DQogICAgIH0NCmRpZmYg LXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBm c19zeXNjYWxscy5jIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19zeXNj YWxscy5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19z eXNjYWxscy5jCTIwMDctMDEtMDMgMTU6MjY6MjcuMDAwMDAwMDAwICswMTAw DQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLmMJ MjAxNi0wMS0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAxMDANCkBAIC00Miw3 ICs0Miw5IEBADQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX3N5c2NhbGxzLmg+ DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2NvbW1vbi5oPg0KICNpbmNsdWRl IDxsaW51eC9maWxlLmg+DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAjaW5jbHVkZSA8bGludXgvc21wX2xv Y2suaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8bGludXgvc21wLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCiANCkBAIC01MCw2ICs1MiwxMSBA QA0KICNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPg0KICNlbmRpZg0KIA0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMyw3 LDApDQorI3VuZGVmIFNZU0NBTExIQUNLDQorLyogdGhlIG1ldGhvZCB0byBy ZWFkICdsb3dlcl9ib3VuZCcgZG9lcyBub3Qgd29yayBvbiBrZXJuZWwgMy43 IGFuZCBsYXRlciwgc2Ugbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jICovDQor I2VuZGlmDQorDQogI2lmIDANCiAjaWZkZWYgQ09ORklHX0NPTVBBVA0KICNp bmNsdWRlIDxsaW51eC9pb2N0bDMyLmg+DQpAQCAtNjQsNyArNzEsNyBAQA0K ICN1bmRlZiBORUVEX1ZJQ0VJT0NUTDMyDQogDQogI2lmZGVmIFJDU0lEDQot UkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMuYyx2IDEuMTIyIDIwMDcvMDEv MDMgMTQ6MjY6MjcgdG9sIEV4cCAkIik7DQorUkNTSUQoIiRJZDogbm5wZnNf c3lzY2FsbHMuYyx2IDEuMTI1IDIwMTAvMDgvMDggMjA6NDM6MDYgdG9sIEV4 cCAkIik7DQogI2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBwcm9jX2Rpcl9l bnRyeSAqbm5wZnNfcHJvY2ZzX2RpcjsNCkBAIC04MiwxMiArODksMjIgQEAg dHlwZWRlZiBzdHJ1Y3QgYWZzcHJvY2RhdGEgew0KICAgICB1bnNpZ25lZCBs b25nIHN5c2NhbGw7DQogfSBhZnNwcm9jZGF0YTsNCiANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KIHN0YXRp YyBpbnQNCiBubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGZpbGUgKmZpbGUsDQogCQkgICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZyk7DQorI2Vsc2UNCitzdGF0aWMgbG9uZw0K K25ucGZzX3Byb2Nmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCisJCSAg IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsNCisjZW5k aWYNCiANCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19w cm9jZnNfZm9wcyA9IHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMiw2LDM2KQ0KICAgICAuaW9jdGwgPSBubnBmc19wcm9j ZnNfaW9jdGwsDQorI2Vsc2UNCisgICAgLnVubG9ja2VkX2lvY3RsID0gbm5w ZnNfcHJvY2ZzX2lvY3RsLA0KKyNlbmRpZg0KIH07DQogDQogDQpAQCAtMTQ3 LDUzICsxNjQsNDggQEAgc3RhdGljIGludCBubnBmc19zZWNfcmVnaXN0ZXJl ZCA9IDA7DQogI2RlZmluZSBTRUMyUEFHKHMpIChubnBmc19wYWdfdCkodW5z aWduZWQgbG9uZykocykNCiAjZGVmaW5lIFBBRzJTRUMocCkgKHZvaWQgKiko dW5zaWduZWQgbG9uZykocCkNCiANCi1zdGF0aWMgaW50DQotbm5wZnNfc2Vj X3Rhc2tfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQ0KLXsNCi0gICAg bm5wZnNfcGFnX3QgcGFnID0gU0VDMlBBRyhjdXJyZW50LT5zZWN1cml0eSk7 DQotICAgIGlmIChwYWcpDQotCXAtPnNlY3VyaXR5ID0gUEFHMlNFQyhwYWcp Ow0KLSAgICByZXR1cm4gMDsNCi19DQotDQotc3RhdGljIHZvaWQNCi1ubnBm c19zZWNfdGFza19mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCi17DQot ICAgIG5ucGZzX3BhZ190IHBhZyA9IFNFQzJQQUcocC0+c2VjdXJpdHkpOw0K LSAgICBpZiAocGFnKQ0KLQlwLT5zZWN1cml0eSA9IE5VTEw7DQotfQ0KLQ0K IHN0YXRpYyBubnBmc19wYWdfdA0KIG5ucGZzX2dldF9wYWdfc2VjKHZvaWQp DQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KICAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFHKGN1 cnJlbnQtPnNlY3VyaXR5KTsNCisjZWxzZQ0KKyAgICBubnBmc19wYWdfdCBw YWcgPSBTRUMyUEFHKGN1cnJlbnRfc2VjdXJpdHkoKSk7DQorI2VuZGlmDQog ICAgIGlmIChwYWcpDQogCXJldHVybiBwYWc7DQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIHJl dHVybiBjdXJyZW50LT51aWQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KKyAgICByZXR1cm4gY3VycmVu dF91aWQoKTsNCisjZWxzZQ0KKyAgICB7IGt1aWRfdCBrdWlkID0gY3VycmVu dF91aWQoKTsgcmV0dXJuIGt1aWQudmFsOyB9DQorI2VuZGlmDQogfQ0KIA0K IHN0YXRpYyBpbnQNCiBubnBmc19zZXRfcGFnX3NlYyh2b2lkKQ0KIHsNCiAg ICAgc3RhdGljIG5ucGZzX3BhZ190IHBhZ251bSA9IE5OUEZTX1BBR19MTElN Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04o Miw2LDI5KQ0KKyAgICBzdHJ1Y3QgY3JlZCAqY3JlZDsNCisjZW5kaWYNCiAN CiAgICAgaWYgKHBhZ251bSA9PSBOTlBGU19QQUdfVUxJTSkNCiAJcmV0dXJu IC1FTk9NRU07DQogICAgIC8qIHBhZ251bSA9IE5OUEZTX1BBR19MTElNOyAq Lw0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgY3VycmVudC0+c2VjdXJpdHkgPSBQQUcy U0VDKHBhZ251bSk7DQorI2Vsc2UNCisgICAgY3JlZCA9IChzdHJ1Y3QgY3Jl ZCAqKSBjdXJyZW50LT5jcmVkOw0KKyAgICBjcmVkLT5zZWN1cml0eSA9IFBB RzJTRUMocGFnbnVtKTsNCisjZW5kaWYNCiAgICAgcGFnbnVtKys7DQogICAg IHJldHVybiAwOw0KIH0NCiANCi1zdGF0aWMgc3RydWN0IHNlY3VyaXR5X29w ZXJhdGlvbnMgbm5wZnNfc2VjX29wcyA9IHsNCi0gICAgLnRhc2tfYWxsb2Nf c2VjdXJpdHkgPSBubnBmc19zZWNfdGFza19hbGxvYywNCi0gICAgLnRhc2tf ZnJlZV9zZWN1cml0eSA9IG5ucGZzX3NlY190YXNrX2ZyZWUsDQotLy8gICAg LnRhc2tfcmVwYXJlbnRfdG9faW5pdCA9IG5ucGZzX3NlY19yZXBhcmVudF90 b19pbml0LA0KLX07DQotDQogI2VuZGlmIC8qIENPTkZJR19TRUNVUklUWSAq Lw0KIA0KICNpZmRlZiBHUk9VUFBBR1MNCkBAIC0yMDYsNyArMjE4LDEyIEBA IGZpbmRfcGFnKHN0cnVjdCBncm91cF9pbmZvICpnaSkNCiAgICAgTk5QRlNE RUIoWERFQlNZUywgKCJmaW5kX3BhZzogbmdyb3VwcyA9ICVkXG4iLCBnaS0+ bmdyb3VwcykpOw0KIA0KICAgICBmb3IgKGkgPSBnaS0+bmdyb3VwcyAtIDE7 IGkgPj0gMDsgaS0tKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJZ2lkX3QgZ3JvdXAgPSBHUk9VUF9B VChnaSwgaSk7DQorI2Vsc2UNCisJa2dpZF90IGtncm91cCA9IEdST1VQX0FU KGdpLCBpKTsNCisJZ2lkX3QgZ3JvdXAgPSBrZ3JvdXAudmFsOw0KKyNlbmRp Zg0KIAlpZiAoKG5ucGZzX3BhZ190KWdyb3VwID49IE5OUEZTX1BBR19MTElN ICYmIChubnBmc19wYWdfdClncm91cCA8IE5OUEZTX1BBR19VTElNKSB7DQog CSAgICBOTlBGU0RFQihYREVCU1lTLA0KIAkJICAgICAoImZpbmRfcGFnOiBF eGlzdGluZyBwYWcgJXUgYXQgcG9zICV1XG4iLCBncm91cCwgaSkpOw0KQEAg LTIyMiwxNSArMjM5LDMxIEBAIGZpbmRfcGFnKHN0cnVjdCBncm91cF9pbmZv ICpnaSkNCiBzdGF0aWMgbm5wZnNfcGFnX3QNCiBubnBmc19nZXRfcGFnX2dy b3VwKHZvaWQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAq Z2kgPSBjdXJyZW50LT5ncm91cF9pbmZvOw0KICAgICBubnBmc19wYWdfdCBy ZXQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgc3RydWN0IGdyb3Vw X2luZm8gKmdpID0gZ2V0X2N1cnJlbnRfZ3JvdXBzKCk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAg bm5wZnNfcGFnX3QgcmV0ID0gY3VycmVudF91aWQoKTsNCisjZWxzZQ0KKyAg ICBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7DQorICAgIG5ucGZzX3Bh Z190IHJldCA9IGt1aWQudmFsOw0KKyNlbmRpZg0KKyNlbmRpZg0KICAgICBp bnQgaTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgZ2V0X2dyb3VwX2luZm8oZ2kpOw0KKyNl bmRpZg0KIA0KICAgICBpID0gZmluZF9wYWcoZ2kpOw0KICAgICBpZiAoaSAh PSBOTlBGU19QQUdfTk9URk9VTkQpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJcmV0ID0gR1JPVVBfQVQo Z2ksIGkpOw0KKyNlbHNlDQorCXsga2dpZF90IGtnaWQgPSBHUk9VUF9BVChn aSwgaSk7IHJldCA9IGtnaWQudmFsOyB9DQorI2VuZGlmDQogDQogICAgIHB1 dF9ncm91cF9pbmZvKGdpKTsNCiANCkBAIC0yNDIsMTMgKzI3NSwxOSBAQCBu bnBmc19nZXRfcGFnX2dyb3VwKHZvaWQpDQogc3RhdGljIGludA0KIHN0b3Jl X3BhZyhubnBmc19wYWdfdCBwYWdudW0pDQogew0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBzdHJ1 Y3QgZ3JvdXBfaW5mbyAqb2xkX2dpID0gY3VycmVudC0+Z3JvdXBfaW5mbzsN CisjZWxzZQ0KKyAgIHN0cnVjdCBncm91cF9pbmZvICpvbGRfZ2kgPSBnZXRf Y3VycmVudF9ncm91cHMoKTsNCisjZW5kaWYNCiAgICAgc3RydWN0IGdyb3Vw X2luZm8gKm5ld19naTsNCi0gICAgaW50IG5ibG9ja3MsIGNvdW50Ow0KKyAg ICB1bnNpZ25lZCBpbnQgbmJsb2NrcywgY291bnQ7DQogICAgIGludCBmb3Vu ZCA9IDA7DQogICAgIGludCBpLCBrOw0KICAgICANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkgICAgDQogICAg IGdldF9ncm91cF9pbmZvKG9sZF9naSk7DQorI2VuZGlmDQogDQogICAgIGkg PSBmaW5kX3BhZyhvbGRfZ2kpOw0KICAgICBpZiAoaSAhPSBOTlBGU19QQUdf Tk9URk9VTkQpDQpAQCAtMjc0LDEwICszMTMsMTcgQEAgc3RvcmVfcGFnKG5u cGZzX3BhZ190IHBhZ251bSkNCiAJY291bnQgLT0gTkdST1VQU19QRVJfQkxP Q0s7DQogICAgIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxNCwwKQ0KICAgICBpZiAoZm91bmQpDQogCUdST1VQ X0FUKG5ld19naSwgaSkgPSBwYWdudW07DQogICAgIGVsc2UNCiAJR1JPVVBf QVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91cHMgLSAxKSA9IHBhZ251bTsNCisj ZWxzZQ0KKyAgICBpZiAoZm91bmQpDQorCXsga2dpZF90IGtnaWQgPSBLR0lE VF9JTklUKHBhZ251bSk7IEdST1VQX0FUKG5ld19naSwgaSkgPSBrZ2lkOyB9 DQorICAgIGVsc2UNCisJeyBrZ2lkX3Qga2dpZCA9IEtHSURUX0lOSVQocGFn bnVtKTsgR1JPVVBfQVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91cHMgLSAxKSA9 IGtnaWQ7IH0NCisjZW5kaWYNCiAgICAgDQogICAgIHNldF9jdXJyZW50X2dy b3VwcyhuZXdfZ2kpOw0KICAgICBwdXRfZ3JvdXBfaW5mbyhuZXdfZ2kpOw0K QEAgLTMxNyw3ICszNjMsMTMgQEAgbm5wZnNfZ2V0X3BhZygpDQogICAgIHJl dHVybiBubnBmc19nZXRfcGFnX2dyb3VwKCk7DQogI2VuZGlmIC8qIEdST1VQ UEFHUyAqLw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVM X1ZFUlNJT04oMiw2LDI4KQ0KICAgICByZXR1cm4gY3VycmVudC0+dWlkOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTQsMCkNCisgICAgcmV0dXJuIGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UNCisg ICAgeyBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7IHJldHVybiBrdWlk LnZhbDsgfQ0KKyNlbmRpZg0KIH0NCiANCiBzdGF0aWMgaW5saW5lIGludA0K QEAgLTQyMiw3ICs0NzQsNyBAQCBubnBmc19zZXRncm91cHMxNiAoaW50IGdp ZHNldHNpemUsIG9sZF9nDQogI2VuZGlmIC8qIFNZU0NBTExIQUNLICovDQog I2VuZGlmIC8qIEdST1VQUEFHUyAqLw0KIA0KLXN0cnVjdCBmaWxlX2hhbmRs ZSB7DQorc3RydWN0IG5ucGZzX2ZpbGVfaGFuZGxlIHsNCiAgICAgbm5wZnNf ZGV2X3QgZGV2Ow0KICAgICBpbm9fdCBpbm9kZTsNCiAgICAgX191MzIgZ2Vu Ow0KQEAgLTUwOSwxNCArNTYxLDI3IEBAIG5ucGZzX2RlYnVnX3ByaW50IChz dHJ1Y3QgYXJsYVZpY2VJb2N0bCANCiAgKiBmb2xsb3cgc3ltbGlua3MgaWZm IGBmb2xsb3cnDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiBzdGF0aWMgc3RydWN0IGRlbnRy eSAqDQogdXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAqbmQs IGNoYXIgKnVzZXJfcGF0aCwgaW50IGZvbGxvdykNCisjZWxzZQ0KK3N0YXRp YyBzdHJ1Y3QgZGVudHJ5ICoNCit1c2VyX3BhdGgyZGVudHJ5IChzdHJ1Y3Qg cGF0aCAqcGF0aCwgY2hhciAqdXNlcl9wYXRoLCBpbnQgZm9sbG93KQ0KKyNl bmRpZg0KIHsNCi0gICAgY2hhciAqa25hbWU7DQogICAgIGludCBmbGFncyA9 IDA7DQogICAgIGludCBlcnJvciA9IDA7DQogDQotICAgIGtuYW1lID0gZ2V0 bmFtZSAodXNlcl9wYXRoKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw3LDApDQorICAgIGNoYXIgKmtuYW1lOw0KKyAg ICBrbmFtZSA9IGdldG5hbWUodXNlcl9wYXRoKTsNCisjZWxzZQ0KKyAgICBj b25zdCBjaGFyICprbmFtZTsNCisgICAgc3RydWN0IGZpbGVuYW1lICpmbmFt ZTsNCisgICAgZm5hbWUgPSBnZXRuYW1lKHVzZXJfcGF0aCk7DQorICAgIGtu YW1lID0gZm5hbWUtPm5hbWU7DQorI2VuZGlmDQorDQogICAgIGlmIChJU19F UlIoa25hbWUpKQ0KIAlyZXR1cm4gRVJSX1BUUihQVFJfRVJSKGtuYW1lKSk7 DQogICAgIGlmIChmb2xsb3cpDQpAQCAtNTI0LDExICs1ODksMjUgQEAgdXNl cl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAqbmQsIA0KIA0KICAg ICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX3N5c2NhbGw6IGxvb2tpbmcg dXA6ICVzXG4iLCBrbmFtZSkpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogICAgIGVycm9yID0gcGF0 aF9sb29rdXAoa25hbWUsIGZsYWdzLCBuZCk7DQorI2VsaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBlcnJv ciA9IGtlcm5fcGF0aChrbmFtZSwgZmxhZ3MsICYobmQtPnBhdGgpKTsNCisj ZWxzZQ0KKyAgICBlcnJvciA9IGtlcm5fcGF0aChrbmFtZSwgZmxhZ3MsIHBh dGgpOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDcsMCkNCiAgICAgcHV0bmFtZShrbmFtZSk7DQorI2Vs c2UNCisgICAga21lbV9jYWNoZV9mcmVlKG5hbWVzX2NhY2hlcCwgKHZvaWQg KilrbmFtZSk7DQorI2VuZGlmDQogICAgIGlmIChlcnJvcikNCiAJcmV0dXJu IEVSUl9QVFIoZXJyb3IpOw0KLSAgICByZXR1cm4gbmQtPmRlbnRyeTsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww KQ0KKyAgICByZXR1cm4gbmQtPnBhdGguZGVudHJ5Ow0KKyNlbHNlDQorICAg IHJldHVybiBwYXRoLT5kZW50cnk7DQorI2VuZGlmDQogfQ0KIA0KIGFzbWxp bmthZ2UgbG9uZw0KQEAgLTU0MCwxMiArNjE5LDI0IEBAIHN5c19hZnNfaW50 IChpbnQgb3BlcmF0aW9uLA0KIHsNCiAgICAgbG9uZyBlcnJvciA9IDA7DQog ICAgIHN0cnVjdCBhcmxhVmljZUlvY3RsIHZpY2VfaW9jdGw7IA0KLSAgICBz dHJ1Y3Qgbm5wZnNfbWVzc2FnZV9waW9jdGwgbXNnOw0KKyAgICBzdHJ1Y3Qg bm5wZnNfbWVzc2FnZV9waW9jdGwgKm1zZyA9IE5VTEw7DQogICAgIHN0cnVj dCBubnBmc19tZXNzYWdlX3dha2V1cCAqbXNnMjsNCiAgICAgc3RydWN0IGRl bnRyeSAqZGVudHJ5ID0gTlVMTDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3QgbmFtZWlk YXRhIG5kOw0KKyNlbHNlDQorICAgIHN0cnVjdCBwYXRoIHBhdGg7DQorI2Vu ZGlmDQogICAgIA0KKyAgICBtc2cgPSBrbWFsbG9jKHNpemVvZigqbXNnKSwg R0ZQX0tFUk5FTCk7DQorICAgIGlmIChtc2cgPT0gTlVMTCkNCisgICAgICBy ZXR1cm4gLUVOT01FTTsNCisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KICAgICBsb2NrX2tlcm5lbCgpOw0K KyNlbHNlDQorICAgIC8qIFRPRE86IGxvY2tfa2VybmVsKCkgaXMgcmVtb3Zl ZCwgY29uc2lkZXIgYWRkaW5nIGFuIHByaXZhdGUgbG9jayAqLw0KKyNlbmRp Zg0KIA0KICAgICBOTlBGU0RFQihYREVCU1lTLCAoInN5c19hZnMga2VybmVs IGxvY2tlZFxuIikpOw0KIA0KQEAgLTU3NSw3ICs2NjYsNyBAQCBzeXNfYWZz X2ludCAoaW50IG9wZXJhdGlvbiwNCiAJICAgIGdvdG8gdW5sb2NrOw0KIAl9 DQogCWlmICh2aWNlX2lvY3RsLmluX3NpemUgIT0gMCkgew0KLQkgICAgaWYo Y29weV9mcm9tX3VzZXIoJm1zZy5tc2csDQorCSAgICBpZihjb3B5X2Zyb21f dXNlcigmbXNnLT5tc2csDQogCQkJICAgICAgdmljZV9pb2N0bC5pbiwNCiAJ CQkgICAgICB2aWNlX2lvY3RsLmluX3NpemUpICE9IDApIHsNCiAJCWVycm9y ID0gLUVGQVVMVDsNCkBAIC01ODMsNyArNjc0LDExIEBAIHN5c19hZnNfaW50 IChpbnQgb3BlcmF0aW9uLA0KIAkgICAgfQ0KIAl9DQogCWlmIChhX3BhdGhQ ICE9IE5VTEwpIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMywxOSwwKQ0KIAkgICAgZGVudHJ5ID0gdXNlcl9wYXRoMmRl bnRyeSAoJm5kLCBhX3BhdGhQLCBhX2ZvbGxvd1N5bWxpbmtzKTsNCisjZWxz ZQ0KKwkgICAgZGVudHJ5ID0gdXNlcl9wYXRoMmRlbnRyeSAoJnBhdGgsIGFf cGF0aFAsIGFfZm9sbG93U3ltbGlua3MpOw0KKyNlbmRpZg0KIAkgICAgaWYg KCFkZW50cnkpIHsNCiAJCWVycm9yID0gLUVJTlZBTDsNCiAJCWdvdG8gdW5s b2NrOw0KQEAgLTYyOCwxOSArNzIzLDIzIEBAIHN5c19hZnNfaW50IChpbnQg b3BlcmF0aW9uLA0KIAkJZXJyb3IgPSAtRUlOVkFMOw0KIAkJZ290byB1bmxv Y2s7DQogCSAgICB9DQotCSAgICBtc2cuaGFuZGxlID0geG4tPmhhbmRsZTsN CisJICAgIG1zZy0+aGFuZGxlID0geG4tPmhhbmRsZTsNCiAJfQ0KIA0KLQlt c2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QSU9DVEw7DQotCW1zZy5v cGNvZGUgPSBhX29wY29kZTsNCisJbXNnLT5oZWFkZXIub3Bjb2RlID0gTk5Q RlNfTVNHX1BJT0NUTDsNCisJbXNnLT5vcGNvZGUgPSBhX29wY29kZTsNCiAJ DQotCW1zZy5pbnNpemUgICA9IHZpY2VfaW9jdGwuaW5fc2l6ZTsNCi0JbXNn Lm91dHNpemUgID0gdmljZV9pb2N0bC5vdXRfc2l6ZTsNCi0JbXNnLmNyZWQu dWlkID0gY3VycmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBubnBmc19n ZXRfcGFnKCk7DQorCW1zZy0+aW5zaXplICAgPSB2aWNlX2lvY3RsLmluX3Np emU7DQorCW1zZy0+b3V0c2l6ZSAgPSB2aWNlX2lvY3RsLm91dF9zaXplOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2 LDI4KQ0KKwltc2ctPmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNl DQorICAgICAgICBtc2ctPmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisj ZW5kaWYNCisJbXNnLT5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJ DQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMoJm5ucGZzWzBdLCAmbXNn LmhlYWRlciwgc2l6ZW9mKG1zZykpOyAvKiBYWFggKi8NCi0JbXNnMiA9IChz dHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAgKikgJm1zZzsNCisJZXJyb3Ig PSBubnBmc19tZXNzYWdlX3JwYygmbm5wZnNbMF0sICZtc2ctPmhlYWRlciwg c2l6ZW9mKCptc2cpKTsgLyogWFhYICovDQorCW1zZzIgPSAoc3RydWN0IG5u cGZzX21lc3NhZ2Vfd2FrZXVwICopIG1zZzsNCiAJaWYgKGVycm9yID09IDAp DQogCSAgICBlcnJvciA9IG1zZzItPmVycm9yOw0KIA0KQEAgLTY3NSwxMiAr Nzc0LDIxIEBAIHN5c19hZnNfaW50IChpbnQgb3BlcmF0aW9uLA0KICAgICAN CiAgdW5sb2NrOg0KICAgICBpZiAoZGVudHJ5KQ0KLQlwYXRoX3JlbGVhc2Uo Jm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxOSwwKQ0KKwlwYXRoX3B1dCgmbmQucGF0aCk7DQorI2Vsc2UNCisJ cGF0aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIA0KICAgICBOTlBGU0RFQihY REVCU1lTLCAoIm5ucGZzX3N5c2NhbGwgcmV0dXJucyBlcnJvcjogJWxkXG4i LCBlcnJvcikpOw0KIA0KICAgICBOTlBGU0RFQihYREVCU1lTLCAoInN5c19h ZnMga2VybmVsIHVubG9ja1xuIikpOw0KKyAgICBrZnJlZShtc2cpOw0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkp DQogICAgIHVubG9ja19rZXJuZWwoKTsNCisjZWxzZQ0KKyAgICAvKiBUT0RP OiBzZWUgdGhlIGNvbW1lbnQgYXQgbG9ja19rZXJuZWwoKSBhYm92ZSAqLw0K KyNlbmRpZg0KIA0KICAgICByZXR1cm4gZXJyb3I7DQogfQ0KQEAgLTcyOSw5 ICs4MzcsMTUgQEAgc3lzX2FmcyAoaW50IG9wZXJhdGlvbiwNCiAJCSAgICAg ICBhX2ZvbGxvd1N5bWxpbmtzKTsNCiB9DQogDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiBzdGF0aWMgaW50 DQogbm5wZnNfcHJvY2ZzX2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxlLA0KIAkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5z aWduZWQgbG9uZyBhcmcpDQorI2Vsc2UNCitzdGF0aWMgbG9uZw0KK25ucGZz X3Byb2Nmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCisJCSAgIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQ0KKyNlbmRpZg0KIHsN CiAgICAgYWZzcHJvY2RhdGEgYXJnczsNCiAgICAgbG9uZyByZXQ7DQpAQCAt NzgwLDIxICs4OTQsMzEgQEAgc3RhdGljIGludCBubnBmc19pbml0X3Byb2Nm cyh2b2lkKQ0KIHsNCiAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICplbnRy eTsNCiAgICAgDQotICAgIG5ucGZzX3Byb2Nmc19kaXIgPSBwcm9jX21rZGly KE5OUEZTX1BST0NfRElSLCBwcm9jX3Jvb3RfZnMpOw0KKyAgICBubnBmc19w cm9jZnNfZGlyID0gcHJvY19ta2RpcigiZnMvIiBOTlBGU19QUk9DX0RJUiwg TlVMTCk7DQogICAgIGlmIChubnBmc19wcm9jZnNfZGlyID09IE5VTEwpDQog CXJldHVybiAtRU5PTUVNOw0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDMwKQ0KICAgICBubnBmc19wcm9j ZnNfZGlyLT5vd25lciA9IFRISVNfTU9EVUxFOw0KKyNlbmRpZg0KICAgICAN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx MCwwKQ0KICAgICBlbnRyeSA9IGNyZWF0ZV9wcm9jX2VudHJ5KE5OUEZTX1BS T0NfTk9ERSwgMDY2Niwgbm5wZnNfcHJvY2ZzX2Rpcik7DQorI2Vsc2UNCisg ICAgZW50cnkgPSBwcm9jX2NyZWF0ZShOTlBGU19QUk9DX05PREUsIDA2NjYs IE5VTEwsICZubnBmc19wcm9jZnNfZm9wcyk7DQorI2VuZGlmDQogICAgIGlm IChlbnRyeSA9PSBOVUxMKSB7DQogCU5OUEZTREVCKFhERUJTWVMsICgibm5w ZnNfaW5pdF9wcm9jZnM6IG5vIG5vZGVcbiIpKTsNCi0JcmVtb3ZlX3Byb2Nf ZW50cnkoTk5QRlNfUFJPQ19ESVIsIHByb2Nfcm9vdF9mcyk7DQorCXJlbW92 ZV9wcm9jX2VudHJ5KCJmcy8iIE5OUEZTX1BST0NfRElSLCBOVUxMKTsNCiAJ cmV0dXJuIC1FTk9NRU07DQogICAgIH0NCiAgICAgDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzMCkNCiAgICAgZW50 cnktPm93bmVyID0gVEhJU19NT0RVTEU7DQorI2VuZGlmDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTAsMCkNCiAgICAg ZW50cnktPnByb2NfZm9wcyA9ICZubnBmc19wcm9jZnNfZm9wczsNCisjZW5k aWYNCiANCiAjaWZkZWYgU1lTQ0FMTENPTVBBVA0KICAgICBpZiAocmVnaXN0 ZXJfaW9jdGwzMl9jb252ZXJzaW9uKEFSTEFfVklPQ19TWVNDQUxMMzIsIG5u cGZzX3Byb2Nmc19pb2N0bDMyKSkgew0KQEAgLTgxNSw3ICs5MzksNyBAQCBz dGF0aWMgdm9pZCBubnBmc19leGl0X3Byb2Nmcyh2b2lkKQ0KICAgICB9DQog I2VuZGlmIC8qIFNZU0NBTExDT01QQVQgKi8NCiAgICAgcmVtb3ZlX3Byb2Nf ZW50cnkoTk5QRlNfUFJPQ19OT0RFLCBubnBmc19wcm9jZnNfZGlyKTsNCi0g ICAgcmVtb3ZlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19ESVIsIHByb2Nfcm9v dF9mcyk7DQorICAgIHJlbW92ZV9wcm9jX2VudHJ5KCJmcy8iIE5OUEZTX1BS T0NfRElSLCBOVUxMKTsNCiB9DQogDQogI2lmZGVmIEdST1VQUEFHUw0KQEAg LTgzOSwxNCArOTYzLDYgQEAgaW5zdGFsbF9zZXRncm91cHModm9pZCkNCiB2 b2lkDQogaW5zdGFsbF9hZnNfc3lzY2FsbCh2b2lkKQ0KIHsNCi0jaWZkZWYg Q09ORklHX1NFQ1VSSVRZDQotICAgIGlmIChyZWdpc3Rlcl9zZWN1cml0eSgm bm5wZnNfc2VjX29wcykpDQotCU5OUEZTREVCKFhERUJTWVMsDQotCQkgKCJp bnN0YWxsX2Fmc19zeXNjYWxsOiBubnBmc19pbml0X3NlYyBmYWlsZWRcbiIp KTsNCi0gICAgZWxzZQ0KLQlubnBmc19zZWNfcmVnaXN0ZXJlZCA9IDE7DQot I2VuZGlmDQotDQogICAgIG5ucGZzX2luaXRfcHJvY2ZzKCk7DQogDQogI2lm ZGVmIFNZU0NBTExIQUNLDQpAQCAtODg3LDEyICsxMDAzLDYgQEAgcmVzdG9y ZV9hZnNfc3lzY2FsbCAodm9pZCkNCiAjZW5kaWYNCiAjZW5kaWYgLyogU1lT Q0FMTEhBQ0sgKi8NCiANCi0jaWZkZWYgQ09ORklHX1NFQ1VSSVRZDQotICAg IGlmIChubnBmc19zZWNfcmVnaXN0ZXJlZCkNCi0JaWYgKHVucmVnaXN0ZXJf c2VjdXJpdHkoJm5ucGZzX3NlY19vcHMpKQ0KLQkgICAgcHJpbnRrKEtFUk5f RU1FUkcgIm5ucGZzX2V4aXRfc2VjOiBjb3VsZG4ndCB1bnJlZ2lzdGVyXG4i KTsNCi0jZW5kaWYgLyogIUNPTkZJR19TRUNVUklUWSAqLw0KLQ0KICNpZmRl ZiBHUk9VUFBBR1MNCiAjaWZkZWYgU1lTQ0FMTEhBQ0sNCiAgICAgaWYgKG9s ZF9zZXRncm91cHMpIHsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkw LW9sZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdlLmMgYXJs YS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYw0K LS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfc3lzY2FsbHMt bG9zc2FnZS5jCTIwMDYtMTItMTEgMTc6MzE6NDUuMDAwMDAwMDAwICswMTAw DQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLWxv c3NhZ2UuYwkyMDE2LTAxLTEzIDIxOjUxOjQ5LjAwMDAwMDAwMCArMDEwMA0K QEAgLTQ3LDExICs0NywyMCBAQA0KICNpbmNsdWRlIDxsaW51eC91bmlzdGQu aD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBubnBmc19zeXNj YWxscy1sb3NzYWdlLmMsdiAxLjE3IDIwMDYvMTIvMTEgMTY6MzE6NDUgdG9s IEV4cCAkIik7DQorUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMtbG9zc2Fn ZS5jLHYgMS4xOSAyMDEwLzA4LzA4IDIwOjQzOjA1IHRvbCBFeHAgJCIpOw0K KyNlbmRpZg0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMyw3LDApDQorLyogdGhlIG1ldGhvZCB0byByZWFkICdsb3dl cl9ib3VuZCcgZG9lcyBub3Qgd29yayBvbiBrZXJuZWwgMy43IGFuZCBsYXRl ciAqLw0KKyN1bmRlZiBTWVNDQUxMSEFDSw0KICNlbmRpZg0KIA0KICNpbmNs dWRlIDxsaW51eC9rYWxsc3ltcy5oPg0KKyNpZmRlZiBTWVNDQUxMSEFDSw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcs MCkNCiBzdGF0aWMgdm9pZCAqbG93ZXJfYm91bmQgPSAma2VybmVsX3RocmVh ZDsNCisjZW5kaWYNCisjZW5kaWYNCiANCiB2b2lkICogX19hdHRyaWJ1dGVf Xygod2VhaykpIHN5c19jYWxsX3RhYmxlKHZvaWQpOw0KIG5ucGZzX3N5c19j YWxsX2Z1bmN0aW9uICpubnBmc19zeXNfY2FsbF90YWJsZSA9DQpAQCAtNjMs NiArNzIsMTEgQEAgY29uc3QgY2hhciAqIF9fYXR0cmlidXRlX18oKHdlYWsp KQ0KIAkJICAgIHVuc2lnbmVkIGxvbmcgKm9mZnNldCwNCiAJCSAgICBjaGFy ICoqbW9kbmFtZSwgY2hhciAqbmFtZWJ1Zik7DQogDQorI2lmZGVmIF9feDg2 XzY0X18NCitleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9jayBfX2F0dHJp YnV0ZV9fKCh3ZWFrKSk7DQorI2VuZGlmDQorDQorI2lmZGVmIFNZU0NBTExI QUNLDQogc3RhdGljIHZvaWQgKioNCiBnZXRfc3RhcnRfYWRkcih2b2lkKSB7 DQogI2lmZGVmIF9feDg2XzY0X18NCkBAIC03MSw2ICs4NSw3IEBAIGdldF9z dGFydF9hZGRyKHZvaWQpIHsNCiAgICAgcmV0dXJuICh2b2lkICoqKSZtdXRl eF9sb2NrOw0KICNlbmRpZg0KIH0NCisjZW5kaWYNCiANCiBzdGF0aWMgaW5s aW5lIGludCANCiBrYWxsc3ltX2lzX2VxdWFsKHVuc2lnbmVkIGxvbmcgYWRk ciwgY29uc3QgY2hhciAqbmFtZSkNCkBAIC0xMzksNiArMTU0LDggQEAgdmVy aWZ5KHZvaWQgKipwKSB7DQogICAgIHJldHVybiAxOw0KIH0NCiANCisjaWZk ZWYgU1lTQ0FMTEhBQ0sNCisNCiBzdGF0aWMgaW5saW5lIGludCBsb29rc19n b29kKHZvaWQgKipwKQ0KIHsNCiAgICAgaWYgKCpwIDw9ICh2b2lkKilsb3dl cl9ib3VuZCB8fCAqcCA+PSAodm9pZCopcCkNCkBAIC0xODgsMyArMjA1LDUg QEAgbm5wZnNfZml4dXBfc3lzY2FsbF9sb3NzYWdlKHZvaWQpDQogDQogICAg IHJldHVybiAwOw0KIH0NCisNCisjZW5kaWYNCmRpZmYgLXVwck4gLVhub2Rp ZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc192ZnNvcHMuYyBh cmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfdmZzb3BzLmMNCi0tLSBhcmxh LTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMDYtMTIt MTEgMTc6NDM6MzUuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25u cGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMTYtMDItMTQgMDE6MzY6MDYu MDAwMDAwMDAwICswMTAwDQpAQCAtNDQsMzAgKzQ0LDI2IEBADQogI2luY2x1 ZGUgPGxpbnV4L21tLmg+DQogDQogI2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJ ZDogbm5wZnNfdmZzb3BzLmMsdiAxLjEwOSAyMDA2LzEyLzExIDE2OjQzOjM1 IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX3Zmc29wcy5jLHYg MS4xMTEgMjAxMC8wOC8wOCAyMDo0MzowNiB0b2wgRXhwICQiKTsNCiAjZW5k aWYNCiANCiBzdHJ1Y3Qgbm5wZnMgbm5wZnNbTk5OUEZTXTsNCiANCi1zdGF0 aWMgdm9pZCBubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUp Ow0KIHN0YXRpYyB2b2lkIG5ucGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiKTsNCi1zdGF0aWMgdm9pZCBubnBmc19wdXRfaW5vZGUoc3Ry dWN0IGlub2RlICppbm9kZSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lkIG5ucGZzX3dy aXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKTsNCisjZW5kaWYN CiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDIsNiwxOCkNCiBzdGF0aWMgaW50IG5ucGZzX3N0YXRmcyhzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpOw0KLSNlbHNlDQot c3RhdGljIGludCBubnBmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7DQotI2VuZGlmDQogDQogc3RhdGlj IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIG5ucGZzX3NvcHMgPSB7IA0KLSAg ICByZWFkX2lub2RlCQk6IG5ucGZzX3JlYWRfaW5vZGUsDQotICAgIHB1dF9p bm9kZQkJOiBubnBmc19wdXRfaW5vZGUsDQogICAgIGFsbG9jX2lub2RlCQk6 IG5ucGZzX25vZGVfYWxsb2MsDQogICAgIGRlc3Ryb3lfaW5vZGUJOiBubnBm c19ub2RlX2ZyZWUsDQogICAgIGRyb3BfaW5vZGUJCTogZ2VuZXJpY19kZWxl dGVfaW5vZGUsDQogICAgIHB1dF9zdXBlcgkJOiBubnBmc19wdXRfc3VwZXIs DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs NiwwKQ0KICAgICB3cml0ZV9zdXBlcgkJOiBubnBmc193cml0ZV9zdXBlciwN CisjZW5kaWYNCiAgICAgc3RhdGZzCQk6IG5ucGZzX3N0YXRmcywNCiB9Ow0K IA0KQEAgLTk0LDcgKzkwLDExIEBAIG5ucGZzX2ZldGNoX3Jvb3Qoc3RydWN0 IGlub2RlICppKQ0KIAkgKiByb290J3MgcHJpdmlsaWdlcyAodXN1YWxseSBu b25lLCBhbmQgbm9uZSBpcyBuZWVkZWQpLg0KIAkgKi8NCiAJDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJ bXNnLmNyZWQudWlkID0gMDsNCisjZWxzZQ0KKwltc2cuY3JlZC51aWQgPSBL VUlEVF9JTklUKDApOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSAwOw0K IAkNCiAJZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cu aGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtMTI5LDggKzEyOSwxMyBAQCBt YWtlX3Jvb3RfaW5vZGUoc3RydWN0IG5ucGZzICpubnBmc3ApDQogICAgIFhB X1NFVF9NT0RFKCZub2RlLmF0dHIsIFNfSUZESVIgfCAwNzc3KTsNCiAgICAg WEFfU0VUX05MSU5LKCZub2RlLmF0dHIsIDEwMCk7DQogICAgIFhBX1NFVF9T SVpFKCZub2RlLmF0dHIsIDApOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogICAgIFhBX1NFVF9VSUQoJm5v ZGUuYXR0ciwgMCk7DQogICAgIFhBX1NFVF9HSUQoJm5vZGUuYXR0ciwgMCk7 DQorI2Vsc2UNCisgICAgWEFfU0VUX1VJRCgmbm9kZS5hdHRyLCBLVUlEVF9J TklUKDApKTsNCisgICAgWEFfU0VUX0dJRCgmbm9kZS5hdHRyLCBLR0lEVF9J TklUKDApKTsNCisjZW5kaWYNCiAgICAgWEFfU0VUX0FUSU1FKCZub2RlLmF0 dHIsIDApOw0KICAgICBYQV9TRVRfTVRJTUUoJm5vZGUuYXR0ciwgMCk7DQog ICAgIFhBX1NFVF9DVElNRSgmbm9kZS5hdHRyLCAwKTsNCkBAIC0xNTksNyAr MTY0LDExIEBAIG1ha2Vfcm9vdCAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikN CiAgICAgbm5wZnMtPnJvb3QgPSBpbm9kZTsNCiANCiAgICAgLyogWFhYIGVy cm9yIGhhbmRsaW5nICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsNCwwKQ0KICAgICBkcCA9IGRfYWxsb2Nfcm9vdChp bm9kZSk7DQorI2Vsc2UNCisgICAgZHAgPSBkX21ha2Vfcm9vdChpbm9kZSk7 DQorI2VuZGlmDQogICAgIG5ucGZzX2RfaW5pdChkcCk7DQogICAgIHNiLT5z X3Jvb3QgPSBkcDsNCiAgICAgcmV0dXJuIDA7DQpAQCAtMTgzLDEzICsxOTIs MjcgQEAgbm5wZnNfcmVhZF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICog cw0KICAgICBOTlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNfcmVhZF9zdXBl cjogYmVnaW4gc2V0dGluZyB2YXJpYWJsZXNcbiIpKTsNCiANCiAgICAgaWYg KGRhdGEgIT0gTlVMTCkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBuYW1laWRhdGEgbmQ7 DQorI2Vsc2UNCisJc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCiAJDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz OSkNCiAJZXJyb3IgPSBwYXRoX2xvb2t1cChkYXRhLCAwLCAmbmQpOw0KKyNl bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks MCkNCisJZXJyb3IgPSBrZXJuX3BhdGgoZGF0YSwgMCwgJm5kLnBhdGgpOw0K KyNlbHNlDQorCWVycm9yID0ga2Vybl9wYXRoKGRhdGEsIDAsICZwYXRoKTsN CisjZW5kaWYNCiAJaWYgKGVycm9yKQ0KIAkgICAgZGRldiA9IEVSUl9QVFIo ZXJyb3IpOw0KIAllbHNlDQotCSAgICBkZGV2ID0gbmQuZGVudHJ5Ow0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp DQorCSAgICBkZGV2ID0gbmQucGF0aC5kZW50cnk7DQorI2Vsc2UNCisJICAg IGRkZXYgPSBwYXRoLmRlbnRyeTsNCisjZW5kaWYNCiANCiAJaWYgKCFJU19F UlIoZGRldikpIHsNCiAJICAgIG1pbm9yZGV2aWNlID0gTUlOT1IoZGRldi0+ ZF9pbm9kZS0+aV9yZGV2KTsNCkBAIC0yMzMsNyArMjU2LDcgQEAgbm5wZnNf ZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYg0KICAgICByZXR1 cm4gMDsNCiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJO RUxfVkVSU0lPTigyLDYsMTgpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiBpbnQNCiBubnBmc19nZXRfc2Io c3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsDQogCSAgICAgaW50 IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwNCkBAIC0yNDIsMTkgKzI2 NSwyMiBAQCBubnBmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUg KmZzDQogICAgIHJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3Ms IGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIsIG1udCk7DQogfQ0KICNlbHNlDQot c3RydWN0IHN1cGVyX2Jsb2NrICoNCi1ubnBmc19nZXRfc2IgKHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KLQkgICAgICBpbnQgZmxhZ3Ms IGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKSANCitzdHJ1Y3Qg ZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBl ICpmc190eXBlLA0KKwkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2 X25hbWUsDQorCSAgICAgdm9pZCAqZGF0YSkgDQogew0KLSAgICByZXR1cm4g Z2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBubnBmc19maWxs X3N1cGVyKTsNCisgICAgcmV0dXJuIG1vdW50X25vZGV2KGZzX3R5cGUsIGZs YWdzLCBkYXRhLCBubnBmc19maWxsX3N1cGVyKTsNCiB9DQogI2VuZGlmDQog DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs NiwwKQ0KIHN0YXRpYyB2b2lkDQogbm5wZnNfd3JpdGVfc3VwZXIoc3RydWN0 IHN1cGVyX2Jsb2NrICogc2IpDQogew0KICAgICBzYi0+c19kaXJ0ID0gMDsN CiB9DQorI2VuZGlmDQogDQogLyoNCiAgKiBYWFggaXMgdGhpcyBnb29kPyAN CkBAIC0yNzMsNzMgKzI5OSw2IEBAIG5ucGZzX3B1dF9zdXBlcihzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiKQ0KICAgICBOTlBGU0RFQihYREVCVkZPUFMsICgi bm5wZnNfcHV0X3N1cGVyIGV4aXRpbmdcbiIpKTsNCiB9DQogDQotc3RhdGlj IHZvaWQNCi1ubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUp DQotew0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lu b2RlIHN0YXJ0aW5nIGlub2RlOiAlcFxuIixpbm9kZSkpOw0KLSAgICBOTlBG U0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGlub2RlLT5pX2lu bzogJWxkXG4iLGlub2RlLT5pX2lubykpOw0KLSNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQotICAgIGlub2RlLT5p X2Jsa3NpemUgPSAxMDI0Ow0KLSNlbmRpZg0KLSAgICBpbm9kZS0+aV9tb2Rl ID0gMDsNCi0gICAgaW5vZGUtPmlfb3AgPSBOVUxMOw0KLSAgICBOTlBGU0RF QihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGV4aXRpbmdcbiIpKTsN Ci19DQotIA0KLS8qDQotICogQ2FsbGVkIHdoZW4gYGlub2RlJyBpcyBkZS1y ZWZlcmVuY2VkLCBpZSB3aGVuIGlwdXQgaXMgY2FsbGVkLg0KLSAqLw0KLQ0K LXN0YXRpYyB2b2lkDQotbm5wZnNfcHV0X2lub2RlKHN0cnVjdCBpbm9kZSAq aW5vZGUpDQotew0KLSAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9E RV9UT19YTk9ERShpbm9kZSk7DQotICAgIHN0cnVjdCBubnBmcyAqbm5wZnNw ID0gTk5QRlNfRlJPTV9WTk9ERShpbm9kZSk7DQotICAgIGludCBiYWQ7DQot DQotICAgIE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3B1dF9pbm9kZTog aW5vZGU6ICVwIGNvdW50OiAlZCBhbGlhc2VzOiIsDQotCQkJaW5vZGUsIG5u cGZzX2ljb3VudChpbm9kZSkpKTsNCi0gICAgbm5wZnNfcHJpbnRfYWxpYXNl cyhpbm9kZSk7DQotICAgIA0KLSAgICBkb3duKCZubnBmc3AtPmluYWN0aXZl X3NlbSk7DQotDQotICAgIGlmICgobm5wZnNwLT5zdGF0dXMgJiBOTlBGU19E RVZPUEVOKSA9PSAwKSB7DQotCWlmICghaXNfYmFkX2lub2RlKGlub2RlKSkg ew0KLQkgICAgaWYgKGlub2RlICE9IG5ucGZzcC0+cm9vdCkgew0KLQkJbWFr ZV9iYWRfaW5vZGUoaW5vZGUpOw0KLQkJbm5wZnNfaXJlbGUoaW5vZGUpOyAv KiBzZWUgbm5wZnNfbm9kZV9hZGQoKSAqLw0KLQkgICAgfQ0KLQkgICAgeG4t PmZsYWdzIHw9IE5OUEZTX1NUQUxFOw0KLQl9DQotCWJhZCA9IDE7IC8qIG9y IHJvb3QsIHJlYWxseSAqLw0KLSAgICB9IGVsc2Ugew0KLQliYWQgPSBpc19i YWRfaW5vZGUoaW5vZGUpOw0KLSAgICB9DQotDQotICAgIGlmICh4bi0+Zmxh Z3MgJiBOTlBGU19TVEFMRSAmJiAhbm5wZnNfbm9kZV91c2Vycyhpbm9kZSkp IHsNCi0JeG4tPmZsYWdzIHw9IE5OUEZTX05PREVfSVBVVDsgLyogWFhYIGxv Y2tpbmcgKi8NCi0gIAlubnBmc19mb3JjZV9pbnZhbGlkX25vZGUoeG4pOw0K LQl4bi0+ZmxhZ3MgJj0gfk5OUEZTX05PREVfSVBVVDsNCi0gICAgfQ0KLSAg ICANCi0gICAgaWYgKGJhZCkgew0KLQlpZiAobm5wZnNfaWNvdW50KGlub2Rl KSA9PSAxKQ0KLQkgICAgbm5wZnNfbm9kZV9jbGVhcih4bik7DQotICAgIH0g ZWxzZSBpZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAyKSB7DQotCS8qIA0K LQkgKiBUaGUgbGFzdCBleHRlcm5hbCByZWZlcmVuY2UgaXMgYmVpbmcgZHJv cHBlZCwgb25seSB0aGUgb25lDQotCSAqIGZyb20gbm5wZnNfbm9kZV9hZGQo KSBpcyBsZWZ0LiBUaW1lIHRvIGxldCBkYWVtb24gcmVsZWFzZQ0KLQkgKiB0 aGlzIG5vZGUgcHJvcGVybHkuDQotCSAqLw0KLQlpZiAoKHhuLT5mbGFncyAm IE5OUEZTX0xJTUJPKSA9PSAwKSB7DQotCSAgICBubnBmc19ub2RlX2NsZWFy KHhuKTsNCi0JICAgIG5ucGZzX3F1ZXVlX2luYWN0aXZlKHhuKTsNCi0JfQ0K LSAgICB9DQotDQotICAgIHVwKCZubnBmc3AtPmluYWN0aXZlX3NlbSk7DQot fQ0KLQ0KIHN0YXRpYyBpbnQNCiBubnBmc19zdGF0ZnNfaW50KHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpDQogew0KQEAg LTM1MiwyNSArMzExLDI1IEBAIG5ucGZzX3N0YXRmc19pbnQoc3RydWN0IHN1 cGVyX2Jsb2NrICpzYiwNCiAgICAgdG1wLmZfYmF2YWlsICA9IDEwMjQqMTAy NCoyLTUwOw0KICAgICB0bXAuZl9maWxlcyAgID0gMTAyNCoxMDI0Ow0KICAg ICB0bXAuZl9mZnJlZSAgID0gMTAyNCoxMDI0LTEwMDsNCisgICAgdG1wLmZf ZnNpZC52YWxbMF0gPSAwOw0KKyAgICB0bXAuZl9mc2lkLnZhbFsxXSA9IDA7 DQogICAgIHRtcC5mX25hbWVsZW4gPSBOQU1FX01BWDsNCisgICAgdG1wLmZf ZnJzaXplICA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzBdID0gMDsNCisgICAg dG1wLmZfc3BhcmVbMV0gPSAwOw0KKyAgICB0bXAuZl9zcGFyZVsyXSA9IDA7 DQorICAgIHRtcC5mX3NwYXJlWzNdID0gMDsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KKyAgICB0bXAuZl9z cGFyZVs0XSA9IDA7DQorI2Vsc2UNCisgICAgdG1wLmZfZmxhZ3MgPSAwOw0K KyNlbmRpZg0KICAgICAqYnVmID0gdG1wOw0KICAgICByZXR1cm4gMDsNCiB9 DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMTgpDQotDQogc3RhdGljIGludA0KIG5ucGZzX3N0YXRmcyhzdHJ1 Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpDQogew0K ICAgICByZXR1cm4gbm5wZnNfc3RhdGZzX2ludChkZW50cnktPmRfc2IsIGJ1 Zik7DQogfQ0KLQ0KLSNlbHNlDQotDQotc3RhdGljIGludA0KLW5ucGZzX3N0 YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAq YnVmKQ0KLXsNCi0gICAgcmV0dXJuIG5ucGZzX3N0YXRmc19pbnQoc2IsIGJ1 Zik7DQotfQ0KLQ0KLSNlbmRpZg0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxh LTAuOTAtb2xkL2FybGFkL2ZjYWNoZS5jIGFybGEtMC45MC9hcmxhZC9mY2Fj aGUuYw0KLS0tIGFybGEtMC45MC1vbGQvYXJsYWQvZmNhY2hlLmMJMjAwNi0x Mi0xMSAxNzoyMzoyNC4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLTAuOTAv YXJsYWQvZmNhY2hlLmMJMjAxNi0wMS0yMiAxNzowMDo0My4wMDAwMDAwMDAg KzAxMDANCkBAIC03MTMsNyArNzEzLDcgQEAgZmNhY2hlX2hhdmVfd2FudGVk KEZDYWNoZUVudHJ5ICplbnRyeSwgdQ0KIGludA0KIGZjYWNoZV9kaXJfbmFt ZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBjaGFyICpzLCBzaXplX3QgbGVuKQ0K IHsNCi0gICAgcmV0dXJuIHNucHJpbnRmIChzLCBsZW4sICIlMDJYIiwgZW50 cnktPmluZGV4IC8gMHgxMDApOw0KKyAgICByZXR1cm4gc25wcmludGYgKHMs IGxlbiwgTk5QRlNfQ0FDSEVfRklMRV9ESVIxLCBlbnRyeS0+aW5kZXggLyAw eDEwMCk7DQogfQ0KIA0KIC8qDQpAQCAtNzIzLDcgKzcyMyw3IEBAIGZjYWNo ZV9kaXJfbmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBjaGENCiBzdGF0aWMg aW50DQogZmNhY2hlX2ZpbGVfbmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBj aGFyICpzLCBzaXplX3QgbGVuKQ0KIHsNCi0gICAgcmV0dXJuIHNucHJpbnRm IChzLCBsZW4sICIlMDJYLyUwMlgiLA0KKyAgICByZXR1cm4gc25wcmludGYg KHMsIGxlbiwgTk5QRlNfQ0FDSEVfRklMRV9ESVJfUEFUSCwNCiAJCSAgICAg ZW50cnktPmluZGV4IC8gMHgxMDAsIGVudHJ5LT5pbmRleCAlIDB4MTAwKTsN CiB9DQogDQpAQCAtODE1LDcgKzgxNSw3IEBAIGZjYWNoZV9maGdldCAoY2hh ciAqZmlsZW5hbWUsIGZjYWNoZV9jYWMNCiAJaW50IHJldCwgYSwgYjsNCiAJ Y2hhciBidWZbMTAyNF07DQogDQotCXJldCA9IHNzY2FuZihmaWxlbmFtZSwg IiUwMlgvJTAyWCIsICZhLCAmYik7DQorCXJldCA9IHNzY2FuZihmaWxlbmFt ZSwgTk5QRlNfQ0FDSEVfRklMRV9ESVJfUEFUSCwgJmEsICZiKTsNCiAJaWYg KHJldCAhPSAyKQ0KIAkgICAgcmV0dXJuIEVJTlZBTDsNCiANCkBAIC04MjQs NyArODI0LDcgQEAgZmNhY2hlX2ZoZ2V0IChjaGFyICpmaWxlbmFtZSwgZmNh Y2hlX2NhYw0KIAkNCiAJcmV0ID0gc25wcmludGYoKGNoYXIgKiloYW5kbGUt Pm5ucGZzX2hhbmRsZSwgDQogCQkgICAgICAgc2l6ZW9mKGhhbmRsZS0+bm5w ZnNfaGFuZGxlKSwNCi0JCSAgICAgICAiJXNcXCUwMlhcXCUwMlgiLCBidWYs IGEsIGIpOw0KKwkJICAgICAgICIlc1xcIiBOTlBGU19DQUNIRV9GSUxFX0RJ Ul9QQVRILCBidWYsIGEsIGIpOw0KIA0KIAlpZiAocmV0ID4gMCAmJiByZXQg PCBzaXplb2YoaGFuZGxlLT5ubnBmc19oYW5kbGUpKQ0KIAkgICAgaGFuZGxl LT52YWxpZCA9IDE7DQo= ---276651502-256347803-1455553140=:6685 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-256347803-1455553140=:6685--