Re: PATCH v6: Arla 0.90 on Linux 2.6.36 to 4.4
Bo Branten <[email protected]> Tue, 26 Jan 2016 19:34:51 +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-490015836-1453833291=:11904 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH v6: Arla 0.90 on Linux 2.6.36 to 4.4 Corrections in nnpfs_block_open, nnpfs_write_begin and nnpfs_write_end. Current test status is that reading works well on 32-bit systems while writing and 64-bit systems needs some more debugging. Bo Branten ---276651502-490015836-1453833291=:11904 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-v6-arla-0.90-for-linux-2.6.36-to-4.4 Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-v6-arla-0.90-for-linux-2.6.36-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 eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAxLTI2IDEzOjAwOjA2LjAwMDAwMDAw 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 Y3JlYXRlKCZuZC0+cGF0aCwgJmRlbnRyeSk7DQorI2Vsc2UNCisJICAgIGRv bmVfcGF0aF9jcmVhdGUoJnBhdGgsICZkZW50cnkpOw0KKyNlbmRpZg0KIAl9 DQogDQotCW11dGV4X3VubG9jaygmbmQuZGVudHJ5LT5kX2lub2RlLT5pX211 dGV4KTsNCi0JcGF0aF9yZWxlYXNlKCZuZCk7DQotDQogCWlmIChyZXQpIHsN CiAJICAgIHByaW50aygibm5wZnNfYmxvY2tfb3BlbiglcykgY3JlYXRlIGZh aWxlZDogJWRcbiIsIGNhY2hlbmFtZSwgLXJldCk7DQogCSAgICBubnBmc19k ZWJ1Z19vb3BzKCk7DQpAQCAtNDEwLDEyICs0NjcsMjQgQEAgbm5wZnNfYmxv Y2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIAkgICAgcmV0ID0g bm5wZnNfYmxvY2tfZXh0ZW5kKG5vZGUsIG9mZnNldCk7DQogCX0NCiAgICAg fSBlbHNlIHsNCi0Jc3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3BlbihuZC5k ZW50cnksIG5kLm1udCwgZmxhZ3MpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMjkpDQorCXN0cnVjdCBmaWxlICpm ID0gZGVudHJ5X29wZW4obmQucGF0aC5kZW50cnksIG5kLnBhdGgubW50LCBm bGFncyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw2LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRy eV9vcGVuKG5kLnBhdGguZGVudHJ5LCBuZC5wYXRoLm1udCwgZmxhZ3MsIGN1 cnJlbnRfY3JlZCgpKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAq ZiA9IGRlbnRyeV9vcGVuKCZuZC5wYXRoLCBmbGFncywgY3VycmVudF9jcmVk KCkpOw0KKyNlbHNlDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRy eV9vcGVuKCZwYXRoLCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0KKyNlbmRp Zg0KIAlpZiAoSVNfRVJSKGYpKSB7DQogCSAgICByZXQgPSBQVFJfRVJSKGYp Ow0KIAkgICAgcHJpbnRrKCJubnBmc19ibG9ja19vcGVuKCVzKSBvcGVuIGZh aWxlZDogJWRcbiIsIGNhY2hlbmFtZSwgLXJldCk7DQogCSAgICBubnBmc19k ZWJ1Z19vb3BzKCk7DQotCSAgICBwYXRoX3JlbGVhc2UoJm5kKTsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0K KwkgICAgcGF0aF9wdXQoJm5kLnBhdGgpOw0KKyNlbHNlDQorCSAgICBwYXRo X3B1dCgmcGF0aCk7DQorI2VuZGlmDQogCX0gZWxzZSB7DQogCSAgICAqZmls ZSA9IGY7DQogCX0NCkBAIC00MjQsOCArNDkzLDEzIEBAIG5ucGZzX2Jsb2Nr X29wZW4oc3RydWN0IG5ucGZzX25vZGUgKm5vZGUNCiAgICAgLyogcGF0aF9y ZWxlYXNlKCkgaXMgdXN1YWxseSBoYW5kbGVkIG9uIGNsb3NlICovDQogDQog IG91dDoNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMiw2LDI5KQ0KICAgICBjdXJyZW50LT5mc3VpZCA9IHNhdmV1aWQ7DQog ICAgIGN1cnJlbnQtPmZzZ2lkID0gc2F2ZWdpZDsNCisjZWxzZQ0KKyAgICBy ZXZlcnRfY3JlZHMob2xkX2NyZWQpOw0KKyAgICBwdXRfY3JlZChvdmVycmlk ZV9jcmVkKTsNCisjZW5kaWYNCiANCiAgICAgcmV0dXJuIHJldDsNCiB9DQpk aWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgv bm5wZnNfY29tbW9uLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2Nv bW1vbi5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19j b21tb24uYwkyMDA2LTEyLTExIDE3OjMxOjQ2LjAwMDAwMDAwMCArMDEwMA0K KysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19jb21tb24uYwkyMDE2 LTAxLTE0IDE2OjE1OjAwLjAwMDAwMDAwMCArMDEwMA0KQEAgLTExMiwxMCAr MTEyLDE1IEBAIG5ucGZzX3ByaW50X2FsaWFzZXMoY29uc3Qgc3RydWN0IGlu b2RlICoNCiB2b2lkDQogbm5wZnNfcHJpbnRfYWxpYXNlc19yZWFsKGNvbnN0 IHN0cnVjdCBpbm9kZSAqaW5vZGUpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxp c3RfaGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2Rl ICphbGlhczsNCisjZW5kaWYNCiAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5 Ow0KICAgICBpbnQgYmFpbG91dCA9IDEwMDsNCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFz ID0gaW5vZGUtPmlfZGVudHJ5Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAh PSAmaW5vZGUtPmlfZGVudHJ5KSB7DQogCWlmICgtLWJhaWxvdXQgPCAwKSB7 DQpAQCAtMTMxLDYgKzEzNiwyNiBAQCBubnBmc19wcmludF9hbGlhc2VzX3Jl YWwoY29uc3Qgc3RydWN0IGluDQogCX0NCiAJYWxpYXMgPSBhbGlhcy0+bmV4 dDsNCiAgICAgfQ0KKyNlbHNlDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9l bnRyeShkZW50cnksIGFsaWFzLCAmaW5vZGUtPmlfZGVudHJ5LCBkX2FsaWFz KSB7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxOSwwKQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnks ICZpbm9kZS0+aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxzZQ0KKyAgICBo bGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnks IGRfdS5kX2FsaWFzKSB7DQorI2VuZGlmDQorCWlmICgtLWJhaWxvdXQgPCAw KSB7DQorCSAgICBwcmludGsoIiAuLi4iKTsNCisJICAgIGJyZWFrOw0KKwl9 DQorCWlmIChkZW50cnkpIHsNCisJICAgIHByaW50aygiICUuKnMoJXApIiwg KGludClkZW50cnktPmRfbmFtZS5sZW4sDQorCQkgICBkZW50cnktPmRfbmFt ZS5uYW1lLCBkZW50cnkpOw0KKwkgICAgaWYgKG5ucGZzX2RfZW50cnlfdW5o YXNoZWQoJmRlbnRyeS0+ZF9oYXNoKSkNCisJCXByaW50aygiKHVuaGFzaGVk KSIpOw0KKwl9DQorICAgIH0NCisjZW5kaWYNCiAgICAgcHJpbnRrKCJcbiIp Ow0KIH0NCiANCkBAIC0xNDYsNyArMTcxLDExIEBAIG5ucGZzX3ByaW50X2No aWxkcmVuKGNvbnN0IHN0cnVjdCBkZW50cnkNCiANCiAgICAgd2hpbGUgKHN1 YmRpcnMgIT0gJmRlbnRyeS0+ZF9zdWJkaXJzKSB7DQogCXN0cnVjdCBsaXN0 X2hlYWQgKnRtcCA9IHN1YmRpcnM7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IGRlbnRyeSAq Y2hpbGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF91LmRf Y2hpbGQpOw0KKyNlbHNlDQorCXN0cnVjdCBkZW50cnkgKmNoaWxkID0gbGlz dF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRfY2hpbGQpOw0KKyNlbmRp Zg0KIA0KIAlwcmludGsoIiAlLipzKCVwKSIsIChpbnQpY2hpbGQtPmRfbmFt ZS5sZW4sDQogCSAgICAgICBjaGlsZC0+ZF9uYW1lLm5hbWUsIGNoaWxkKTsN CmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51 eC9ubnBmc19kZXYuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfZGV2 LmMNCi0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX2Rldi5j CTIwMDYtMTAtMjQgMTg6MzM6MzYuMDAwMDAwMDAwICswMjAwDQorKysgYXJs YS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMTYtMDEtMTQgMTY6 Mjg6MTkuMDAwMDAwMDAwICswMTAwDQpAQCAtMzAwLDcgKzMwMCw5IEBAIG5u cGZzX2ludmFsaWRhdGVfYWxsKHN0cnVjdCBubnBmcyAqbm5wZnMNCiAgICAg Tk5QRlNERUIoWERFQk5PREUsICgiZnJlZV9hbGxfbm5wZnNfbm9kZXMgc3Rh cnRpbmdcbiIpKTsNCiANCiAgICAgc2hyaW5rX2RjYWNoZV9zYihubnBmcy0+ c2IpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMzcpDQogICAgIGludmFsaWRhdGVfaW5vZGVzKG5ucGZzLT5zYik7 DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVCTk9ERSwgKCJm cmVlX2FsbF9ubnBmc19ub2RlcyBkb25lXG4iKSk7DQogfQ0KQEAgLTM3NCw3 ICszNzYsMTEgQEAgbm5wZnNfZGV2Y2xvc2Uoc3RydWN0IGlub2RlICogaW5v ZGUsIHN0cg0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfZGV2cmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZf dCAqcHBvcykNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmls ZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZWxzZQ0KKyAgICBu bnBmc19kZXZfdCBkZXYgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2Rl LT5pX3JkZXY7DQorI2VuZGlmDQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNw ID0gJm5ucGZzW01JTk9SKGRldildOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbGlu ayAqZmlyc3Q7DQogICAgIGludCByZXQgPSAwLCBlcnJvciA9IDA7DQpAQCAt NDM5LDggKzQ0NSwxMiBAQCBubnBmc19kZXZ3cml0ZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgY29uc3QgDQogDQogICAgIE5OUEZTREVCKFhERUJERVYsICgibm5w ZnNfZGV2d3JpdGVcbiIpKTsNCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgZGV2ID0gZmls ZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCi0gICAgbm5wZnNwID0g Jm5ucGZzW01JTk9SKGRldildOw0KKyNlbHNlDQorICAgIGRldiA9IGZpbGUt PmZfcGF0aC5kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZW5kaWYNCisg ICAgIG5ucGZzcCA9ICZubnBmc1tNSU5PUihkZXYpXTsNCiANCiAgICAgZG93 bigmbm5wZnNwLT5jaGFubmVsX3NlbSk7DQogICAgIGlmIChubnBmc3AtPnN0 YXR1cyAmIE5OUEZTX0RFVldSSVRFKSB7DQpAQCAtNTA1LDE5ICs1MTUsMzcg QEAgbm5wZnNfZGV2d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IA0K IC8qDQogICogTm90IHVzZWQuDQogICovDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiBzdGF0aWMgaW50DQog bm5wZnNfZGV2aW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp bGUgKmZpbGUsDQogCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25l ZCBsb25nIGFyZykNCisjZWxzZQ0KK3N0YXRpYyBsb25nDQorbm5wZnNfdW5s b2NrZWRfZGV2aW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsDQorCSAgICAgICB1 bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisjZW5kaWYN CiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDIsNiwzNikNCiAgICAgTk5QRlNERUIoWERFQkRFViwgKCJubnBmc19kZXZp b2N0bCBkZXYgPSAlZCwgZmxhZ3MgPSAlZFxuIiwNCiAJCSAgICAgICBpbm9k ZS0+aV9yZGV2LCBmaWxlLT5mX2ZsYWdzKSk7DQorI2VsaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBOTlBG U0RFQihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFn cyA9ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfZGVudHJ5LT5kX2lub2Rl LT5pX3JkZXYsIGZpbGUtPmZfZmxhZ3MpKTsNCisjZWxzZQ0KKyAgICBOTlBG U0RFQihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFn cyA9ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfcGF0aC5kZW50cnktPmRf aW5vZGUtPmlfcmRldiwgZmlsZS0+Zl9mbGFncykpOw0KKyNlbmRpZg0KICAg ICByZXR1cm4gLUVJTlZBTDsNCiB9DQogDQogc3RhdGljIHVuc2lnbmVkIGlu dA0KIG5ucGZzX2RldnBvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFi bGUgKndhaXQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQogICAgIG5ucGZzX2Rldl90IGRldiA9IGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3JkZXY7DQorI2Vsc2UNCisgICAg bm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9k ZS0+aV9yZGV2Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5ucGZz cCA9ICZubnBmc1tNSU5PUihkZXYpXTsNCiAgICAgaW50IHJldCA9IDA7DQog ICAgIA0KQEAgLTk1Myw3ICs5ODEsMTEgQEAgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyBubnBmc19mb3BzID0gew0KICAgICByZWFkOgkJbm5wZnNfZGV2cmVh ZCwNCiAgICAgd3JpdGU6CQlubnBmc19kZXZ3cml0ZSwNCiAgICAgcG9sbDoJ CW5ucGZzX2RldnBvbGwsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzNikNCiAgICAgaW9jdGw6CQlubnBmc19kZXZp b2N0bCwNCisjZWxzZQ0KKyAgICB1bmxvY2tlZF9pb2N0bDoJbm5wZnNfdW5s b2NrZWRfZGV2aW9jdGwsDQorI2VuZGlmDQogICAgIHJlbGVhc2U6CQlubnBm c19kZXZjbG9zZSwNCiAgICAgb3BlbjoJCW5ucGZzX2Rldm9wZW4sDQogfTsN CkBAIC05NjgsOCArMTAwMCwxMyBAQCBubnBmc19pbml0X2RldmljZSh2b2lk KQ0KIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCYobm5wZnNbaV0ud2FpdF9xdWV1 ZSkpOw0KIAlubnBmc19pbml0cSgmbm5wZnNbaV0ubWVzc2FnZXEpOw0KIAlu bnBmc19pbml0cSgmbm5wZnNbaV0uc2xlZXBxKTsNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM3KQ0KIAlpbml0X01V VEVYKCZubnBmc1tpXS5pbmFjdGl2ZV9zZW0pOw0KIAlpbml0X01VVEVYKCZu bnBmc1tpXS5jaGFubmVsX3NlbSk7DQorI2Vsc2UNCisJc2VtYV9pbml0KCZu bnBmc1tpXS5pbmFjdGl2ZV9zZW0sIDEpOw0KKwlzZW1hX2luaXQoJm5ucGZz W2ldLmNoYW5uZWxfc2VtLCAxKTsNCisjZW5kaWYNCiAJSU5JVF9MSVNUX0hF QUQoJm5ucGZzW2ldLmluYWN0aXZlX2xpc3QpOw0KIAlubnBmc1tpXS5ubm9k ZXMgPSAwOw0KICAgICB9DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45 MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYyBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYw0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVvcHMuYwkyMDA2LTEyLTExIDE3 OjM1OjI2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9s aW51eC9ubnBmc19pbm9kZW9wcy5jCTIwMTYtMDEtMjYgMTg6NTE6MzUuMDAw MDAwMDAwICswMTAwDQpAQCAtNDAsMjUgKzQwLDQxIEBADQogI2luY2x1ZGUg PG5ucGZzL25ucGZzX2Rldi5oPg0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19k aXJlbnQuaD4NCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNfc3lzY2FsbHMuaD4N CisjaW5jbHVkZSA8bGludXgvYWlvLmg+DQogI2luY2x1ZGUgPGxpbnV4L2Jp bmZtdHMuaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0KICNpbmNsdWRl IDxsaW51eC9wYWdlbWFwLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BhZ2UtZmxh Z3MuaD4NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDQsMSwwKQ0KKyNpbmNsdWRlIDxsaW51eC91aW8uaD4NCisjZW5kaWYN CiAjaW5jbHVkZSA8bGludXgvd3JpdGViYWNrLmg+DQogI2luY2x1ZGUgPGFz bS9mY250bC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5u cGZzX2lub2Rlb3BzLmMsdiAxLjIyMyAyMDA2LzEyLzExIDE2OjM1OjI2IHRv bCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAx LjIyNiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAgJCIpOw0KICNlbmRp Zg0KIA0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19pbnQoc3RydWN0IGZp bGUgKmZpbGUsIHVfaW50IGZsYWcpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiBzdGF0aWMgaW50DQog bm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3Ry dWN0IG5hbWVpZGF0YSAqbmQpOw0KLQ0KKyNlbHNlDQogc3RhdGljIGludA0K K25ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVu c2lnbmVkIGludCBmbGFncyk7DQorI2VuZGlmDQorDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCitzdGF0aWMN CitpbnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp Ow0KKyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUoY29u c3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsNCisjZW5kaWYNCiANCiBzdGF0 aWMgdm9pZA0KIG5ucGZzX2RfcmVsZWFzZShzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpOw0KQEAgLTEwNSw3ICsxMjEsNyBAQCBubnBmc192bWFfY2xvc2UgKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqDQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3Qg dm1fb3BlcmF0aW9uc19zdHJ1Y3Qgbm5wZnNfZmlsZV92bV9vcHMgPSB7DQot ICAgIC5ub3BhZ2UJPSBmaWxlbWFwX25vcGFnZSwNCisgICAgLmZhdWx0ICAg ICAgPSBmaWxlbWFwX2ZhdWx0LA0KICAgICAuY2xvc2UJPSBubnBmc192bWFf Y2xvc2UsDQogfTsNCiANCkBAIC0xMzQsMTIgKzE1MCwxNCBAQCBubnBmc19w cmludF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCiAgKg0KICAqLw0K IA0KKyNpZiAwDQogdm9pZA0KIG5ucGZzX3ByaW50X2xvY2soY2hhciAqcywg c3RydWN0IHNlbWFwaG9yZSAqc2VtKQ0KIHsNCiAgICAgTk5QRlNERUIoWERF QkxPQ0ssICgibG9jazogJXMgc2VtOiAlcCBjb3VudDogJWRcbiIsDQogCQkg ICAgICBzLCBzZW0sIChpbnQpYXRvbWljX3JlYWQoJnNlbS0+Y291bnQpKSk7 DQogfQ0KKyNlbmRpZg0KIA0KIC8qDQogICoNCkBAIC0xODUsNyArMjAzLDcg QEAgbm5wZnNfZF9pcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydQ0K ICAgICBOTlBGU0RFQihYREVCVk5PUFMsDQogCSAgICAgKCJubnBmc19kX2lw dXQ6IGRlbnRyeSAlcCwgaW5vZGUgJXBcbiIsIGRlbnRyeSwgaW5vZGUpKTsN CiAgICAgDQotICAgIGlmIChub2RlLT5mbGFncyAmIE5OUEZTX05PREVfSVBV VCkgLyogWFhYIGxvY2tpbmcgKi8NCisgICAgaWYgKG5vZGUtPmZsYWdzICYg Tk5QRlNfTk9ERV9JUFVUKSAvKiBYWFggbG9ja2luZy4gbmV2ZXIgc2V0PyAq Lw0KIAlubnBmc19pcmVsZShpbm9kZSk7DQogICAgIGVsc2UNCiAJaXB1dChp bm9kZSk7DQpAQCAtMjEyLDggKzIzMCwxMyBAQCBubnBmc19pbm9kZV92YWxp ZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0KICAqIG5ucGZzX2xvb2t1cCBub3cg cmV0dXJucyBhIGRlbnRyeS4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHN0cnVj dCBkZW50cnkgKg0KIG5ucGZzX2xvb2t1cCAoc3RydWN0IGlub2RlICpkaXIs IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQp DQorI2Vsc2UNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQorbm5wZnNfbG9v a3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5 LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1 Y3Qgbm5wZnNfbWVzc2FnZV9nZXRub2RlIG1zZzsNCiAgICAgc3RydWN0IG5u cGZzICpubnBmc3A7DQpAQCAtMjQwLDcgKzI2MywxMSBAQCBubnBmc19sb29r dXAgKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgDQogDQogCW1zZy5oZWFk ZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVE5PREU7DQogICAgICAgICANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwy OCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQor ICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRp Zg0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogCW1zZy5w YXJlbnRfaGFuZGxlID0gZC0+aGFuZGxlOw0KICAgICAgICAgDQpAQCAtMzEw LDcgKzMzNywxMSBAQCBubnBmc19vcGVuX3ZhbGlkKHN0cnVjdCBpbm9kZSAq dnAsIHVfaW50DQogICAgICAgew0KIAlzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9v cGVuIG1zZzsNCiAJbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfT1BF TjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNl bHNlDQorICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0K KyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQog CW1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KIAltc2cudG9rZW5zID0gdG9r Ow0KQEAgLTM5Nyw3ICs0MjgsMTEgQEAgZmluZF9maXJzdF9ibG9jayhzdHJ1 Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3lu Y19pbnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGZsYWcpDQogew0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp DQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0g ZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAg c3RydWN0IG5ucGZzICpubnBmc3AgPSBOTlBGU19GUk9NX1ZOT0RFKGlub2Rl KTsNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5P REUoaW5vZGUpOw0KICAgICBsb2ZmX3QgbGVuID0gaV9zaXplX3JlYWQoaW5v ZGUpOw0KQEAgLTQyNSw3ICs0NjAsMTEgQEAgbm5wZnNfZnN5bmNfaW50KHN0 cnVjdCBmaWxlICpmaWxlLCB1X2ludA0KIA0KIAltc2cuaGVhZGVyLm9wY29k ZSA9IE5OUEZTX01TR19QVVREQVRBOw0KIAltc2cuY3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQt PnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVu dF91aWQoKTsNCisjZW5kaWYNCiAJbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7 DQogCW1zZy5mbGFnICAgPSBmbGFnOw0KIAltc2cub2Zmc2V0ID0gb2ZmOw0K QEAgLTQ2MCwxNCArNDk5LDI3IEBAIG5ucGZzX2ZzeW5jX2ludChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdV9pbnQNCiAgKg0KICAqLw0KIA0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzUpDQogc3RhdGlj IGludA0KIG5ucGZzX2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIGludCBkYXRhc3luYykNCisjZWxpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEsMCkNCitzdGF0aWMg aW50DQorbm5wZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZpbGUsIGludCBkYXRh c3luYykNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19mc3luYyhzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLCBpbnQg ZGF0YXN5bmMpDQorI2VuZGlmDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDM1KQ0KKyAgICBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkgPSBmaWxlLT5mX3BhdGguZGVudHJ5Ow0KKyNlbmRpZg0K ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRl bnRyeSk7DQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1 Y3Qgbm5wZnNfbm9kZSAqeG47DQogICAgIGludCBlcnJvciA9IDA7DQogDQor ICAgICh2b2lkKW5ucGZzcDsNCisNCiAgICAgZXJyb3IgPSBubnBmc19pbm9k ZV92YWxpZChpbm9kZSk7DQogICAgIGlmIChlcnJvcikNCiAJcmV0dXJuIGVy cm9yOw0KQEAgLTUxMSw3ICs1NjMsMTEgQEAgbm5wZnNfYXR0cl92YWxpZChz dHJ1Y3QgaW5vZGUgKiB2cCwgdV9pbg0KICAgICAgICAgICAgIHN0cnVjdCBu bnBmc19tZXNzYWdlX2dldGF0dHIgbXNnOw0KIA0KICAgICAgICAgICAgIG1z Zy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVEFUVFI7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQog ICAgICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNl bHNlDQorICAgICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQo KTsNCisjZW5kaWYNCiAgICAgICAgICAgICBtc2cuY3JlZC5wYWcgPSBwYWc7 DQogICAgICAgICAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAg ICAgICAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZt c2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtNTUxLDcgKzYwNywxMSBA QCBubnBmc19yaWdodHNfdmFsaWQoc3RydWN0IGlub2RlICogdnAsIG5uDQog ICAgICAgICAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfZ2V0YXR0ciBtc2c7 DQogDQogICAgICAgICAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19N U0dfR0VUQVRUUjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgICAgICAgICBtc2cuY3JlZC51aWQg PSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgICAgICBtc2cuY3Jl ZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICAgICAgICAg IG1zZy5jcmVkLnBhZyA9IHBhZzsNCiAgICAgICAgICAgICBtc2cuaGFuZGxl ID0geG4tPmhhbmRsZTsNCiAgICAgICAgICAgICBlcnJvciA9IG5ucGZzX21l c3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsN CkBAIC01OTIsMTEgKzY1MiwyNSBAQCBjaGVja19yaWdodHMgKG5ucGZzX3Jp Z2h0cyByaWdodHMsIGludCBtDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4 Lg0KICAqLw0KIA0KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM4KSB8fCBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VS TkVMX1ZFUlNJT04oMywxLDApKQ0KK3N0YXRpYyBpbnQNCitubnBmc19wZXJt aXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtb2RlKQ0KKyNlbHNl DQogc3RhdGljIGludA0KLW5ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2Rl ICppbm9kZSwgaW50IG1vZGUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0KK25u cGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUs IHVuc2lnbmVkIGludCBmbGFncykNCisjZW5kaWYNCiB7DQogICAgIGludCBl cnJvciA9IDA7DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IG5ucGZzX2dldF9w YWcoKTsNCisgICAgbm5wZnNfcGFnX3QgcGFnOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApDQorICAgIGlmICht b2RlICYgTUFZX05PVF9CTE9DSykNCisgICAgICAgIHJldHVybiAtRUNISUxE Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMzgpDQorICAgIGlmIChmbGFncyAmIElQRVJNX0ZMQUdfUkNVKQ0K KyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQorI2VuZGlmDQorDQorICAgIHBh ZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgDQogICAgIE5OUEZTREVCKFhE RUJWTk9QUywgKCJubnBmc19hY2Nlc3MgKCVwKSBtb2RlID0gMCVvIGFsaWFz ZXM6IiwgaW5vZGUsIG1vZGUpKTsNCiAgICAgbm5wZnNfcHJpbnRfYWxpYXNl cyhpbm9kZSk7DQpAQCAtNjM2LDcgKzcxMCwxMSBAQCBubnBmc19kb19nZXRk YXRhKHN0cnVjdCBubnBmc19ub2RlICp4biwgDQogICAgIGludCBlcnJvcjsN CiANCiAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUREFU QTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0K KyNlbHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQor I2VuZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsN CiAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgIG1zZy50b2tl bnMgPSB0b2s7DQpAQCAtNzUwLDExICs4MjgsMTkgQEAgbm5wZnNfZGF0YV92 YWxpZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1Xw0KIGludCBubnBmc19maWxl X21tYXAoc3RydWN0IGZpbGUgKiBmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKiB2bWEpDQogew0KICAgICBpbnQgZmxhZ3MsIGVycm9yID0gMDsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww KQ0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnkt PmRfaW5vZGU7DQorI2Vsc2UNCisgICAgc3RydWN0IGlub2RlICppbm9kZSA9 IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7DQorI2VuZGlmDQogICAg IHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZmlsZS0+Zl9tYXBw aW5nOw0KIA0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfbW1h cCBpbm9kZTogJXBcbiIsIGlub2RlKSk7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgbm5wZnNfcHJp bnRfcGF0aChmaWxlLT5mX2RlbnRyeSk7DQorI2Vsc2UNCisgICAgbm5wZnNf cHJpbnRfcGF0aChmaWxlLT5mX3BhdGguZGVudHJ5KTsNCisjZW5kaWYNCiAg ICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX21tYXAgYWxpYXNlczoi KSk7DQogICAgIG5ucGZzX3ByaW50X2FsaWFzZXMoaW5vZGUpOw0KICAgICAN CkBAIC03ODksMzcgKzg3NSw1MCBAQCBpbnQgbm5wZnNfZmlsZV9tbWFwKHN0 cnVjdCBmaWxlICogZmlsZSwgDQogICoNCiAgKi8NCiANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KIHN0YXRp YyBzc2l6ZV90DQogbm5wZnNfYWlvX3JlYWQoc3RydWN0IGtpb2NiICppb2Ni LA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04o Miw2LDE5KQ0KIAkgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHVu c2lnbmVkIGxvbmcgbnJfc2VncywNCisJICAgICAgIGxvZmZfdCBwb3MpDQog I2Vsc2UNCi0JICAgICAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3Vu dCwNCitzdGF0aWMgc3NpemVfdA0KK25ucGZzX3JlYWRfaXRlcihzdHJ1Y3Qg a2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pDQogI2VuZGlmDQot CSAgICAgICBsb2ZmX3QgcG9zKQ0KIHsNCiAgICAgaW50IGVycm9yID0gMDsN CiAgICAgc3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLT5raV9maWxwOw0KLSNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5 KQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDEyLDApDQogICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9sZWZ0Ow0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQs MSwwKQ0KKyAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lfbmJ5dGVzOw0K KyNlbHNlDQorICAgIHNzaXplX3QgY291bnQgPSBpb3ZfaXRlcl9jb3VudCh0 byk7DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9 IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVj dCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2Rl Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9E RV9UT19YTk9ERShpbm9kZSk7DQogICAgIA0KICAgICBpZiAoeG4gIT0gTlVM TCkNCiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3JlYWRfZmlsZSgl cCk6IHRva2VuczogMHgleFxuIiwNCiAJCQkgICAgIGlub2RlLCB4bi0+dG9r ZW5zKSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTYsMCkNCiAgICAgZXJyb3IgPSBubnBmc19kYXRhX3ZhbGlk KGlub2RlLCBOTlBGU19EQVRBX1IsIHBvcywgcG9zICsgY291bnQpOw0KKyNl bHNlDQorICAgIGVycm9yID0gbm5wZnNfZGF0YV92YWxpZChpbm9kZSwgTk5Q RlNfREFUQV9SLCBpb2NiLT5raV9wb3MsIGlvY2ItPmtpX3BvcyArIGNvdW50 KTsNCisjZW5kaWYNCiAgICAgaWYgKGVycm9yKSB7DQogCU5OUEZTREVCKFhE RUJWTk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGRhdGEgbm90IHZhbGlkICVk XG4iLCBlcnJvcikpOw0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiAgICAg DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTYsMCkNCiAgICAgZXJyb3IgPSBnZW5lcmljX2ZpbGVfYWlvX3Jl YWQoaW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVy cm9yID0gZ2VuZXJpY19maWxlX2Fpb19yZWFkKGlvY2IsIGJ1ZiwgY291bnQs IHBvcyk7DQorICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3JlYWRfaXRlcihp b2NiLCB0byk7DQogI2VuZGlmDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywg KCJubnBmc19yZWFkX2ZpbGU6IGVycm9yID0gJWRcbiIsIGVycm9yKSk7DQog ICAgIHJldHVybiBlcnJvcjsNCkBAIC04MjksMjMgKzkyOCwzNiBAQCBubnBm c19haW9fcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogICoNCiAgKi8NCiAN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx NiwwKQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3dyaXRlKHN0cnVj dCBraW9jYiAqaW9jYiwNCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwxOSkNCiAJCWNvbnN0IHN0cnVjdCBpb3ZlYyAq aW92LCB1bnNpZ25lZCBsb25nIG5yX3NlZ3MsDQorCQlsb2ZmX3QgcG9zKQ0K ICNlbHNlDQotCQljb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291 bnQsIA0KK3N0YXRpYyBzc2l6ZV90DQorbm5wZnNfd3JpdGVfaXRlcihzdHJ1 Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkNCiAjZW5k aWYNCi0JCWxvZmZfdCBwb3MpDQogew0KICAgICBpbnQgZXJyb3IgPSAwOw0K ICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7DQotI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkp DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTIsMCkNCiAgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtpX2xlZnQ7DQor I2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwx LDApDQorICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9uYnl0ZXM7DQor I2Vsc2UNCisgICAgc3NpemVfdCBjb3VudCA9IGlvdl9pdGVyX2NvdW50KGZy b20pOw0KICNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUg PSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9k ZTsNCisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5P REVfVE9fWE5PREUoaW5vZGUpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE2LDApDQogICAgIGxvZmZfdCByZWFscG9z ID0gcG9zOw0KKyNlbHNlDQorICAgIGxvZmZfdCByZWFscG9zID0gaW9jYi0+ a2lfcG9zOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQlZO T1BTLCAoIm5ucGZzX2Fpb193cml0ZSglcCk6IHRva2VuczogMHgleFxuIiwN CiAJCQkgaW5vZGUsIHhuLT50b2tlbnMpKTsNCkBAIC04NTksMTAgKzk3MSwx MCBAQCBubnBmc19haW9fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLA0KIAly ZXR1cm4gZXJyb3I7DQogICAgIH0NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9D T0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KICAgICBlcnJv ciA9IGdlbmVyaWNfZmlsZV9haW9fd3JpdGUoaW9jYiwgaW92LCBucl9zZWdz LCBwb3MpOw0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fp b193cml0ZShpb2NiLCBidWYsIGNvdW50LCBwb3MpOw0KKyAgICBlcnJvciA9 IGdlbmVyaWNfZmlsZV93cml0ZV9pdGVyKGlvY2IsIGZyb20pOw0KICNlbmRp Zg0KICAgICBpZiAoIUlTX0VSUl9WQUxVRShlcnJvcikpDQogCXhuLT5mbGFn cyB8PSBOTlBGU19EQVRBX0RJUlRZOyAvKiBYWFggcmFjZSAqLw0KQEAgLTg3 MSw5ICs5ODMsMTkgQEAgbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAq aW9jYiwNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQogc3RhdGlj IGludA0KIG5ucGZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0 IGRlbnRyeSAqZGVudHJ5LA0KIAkgICAgIGludCBtb2RlLCBzdHJ1Y3QgbmFt ZWlkYXRhICpuZCkNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDYsMCkNCitzdGF0aWMgaW50DQorbm5wZnNfY3JlYXRl KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQor CSAgICAgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisj ZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19jcmVhdGUoc3RydWN0IGlub2Rl ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJICAgICB1bW9kZV90 IG1vZGUsIGJvb2wgZXhjbCkNCisjZW5kaWYNCiB7DQogICAgIHN0cnVjdCBu bnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47DQpA QCAtOTAzLDkgKzEwMjUsMTcgQEAgbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9k ZSAqZGlyLCBzdHJ1Y3QgZA0KICAgICBYQV9DTEVBUigmbXNnLmF0dHIpOw0K ICAgICBYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KICAgICBYQV9T RVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfUkVHKTsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAg ICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisj ZWxzZQ0KKyAgICBYQV9TRVRfR0lEKCZtc2cuYXR0ciwgY3VycmVudF9mc2dp ZCgpKTsNCisjZW5kaWYNCiAgICAgbXNnLm1vZGUgPSAwOwkJLyogWFhYICov DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigy LDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisj ZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNl bmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQog ICAgIGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhl YWRlciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBA IC05NDYsNyArMTA3NiwxMSBAQCBubnBmc191bmxpbmsgKHN0cnVjdCBpbm9k ZSAqIGRpciwgc3RydWN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uYW1lLCBk ZW50cnktPmRfbmFtZS5uYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBG U19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgp DQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0K KyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0K ICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVy cm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwg c2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05OTEs NyArMTEyNSwxMSBAQCBubnBmc19yZW5hbWUgKHN0cnVjdCBpbm9kZSAqIG9s ZF9kaXIsIHN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uZXdfbmFtZSwgbmV3 X2RlbnRyeS0+ZF9uYW1lLm5hbWUsIHNpemVvZihtc2cubmV3X25hbWUpKSA+ PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQog CQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04o Miw2LDI4KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQor I2Vsc2UNCisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisj ZW5kaWYNCiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0K ICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5o ZWFkZXIsIHNpemVvZihtc2cpKTsNCiAgICAgaWYgKGVycm9yID09IDApDQpA QCAtMTAwOCw4ICsxMTQ2LDEzIEBAIG5ucGZzX3JlbmFtZSAoc3RydWN0IGlu b2RlICogb2xkX2Rpciwgc3QNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiAN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywz LDApDQogc3RhdGljIGludA0KIG5ucGZzX21rZGlyKHN0cnVjdCBpbm9kZSAq IGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSkNCisjZWxz ZQ0KK3N0YXRpYyBpbnQNCitubnBmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiBk aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKQ0KKyNl bmRpZg0KIHsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQogICAgIHN0 cnVjdCBubnBmc19ub2RlICp4bjsNCkBAIC0xMDQwLDkgKzExODMsMTcgQEAg bm5wZnNfbWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZA0KIAlY QV9DTEVBUigmbXNnLmF0dHIpOw0KIAlYQV9TRVRfTU9ERSgmbXNnLmF0dHIs IG1vZGUpOw0KIAlYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVf RElSKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJT SU9OKDIsNiwyOCkNCiAJWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQt PmZzZ2lkKTsNCisjZWxzZQ0KKyAgICAgICAgWEFfU0VUX0dJRCgmbXNnLmF0 dHIsIGN1cnJlbnRfZnNnaWQoKSk7DQorI2VuZGlmDQogDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1z Zy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAg bXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNn LmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAllcnJvciA9IG5ucGZz X21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cp KTsNCiAJaWYgKGVycm9yID09IDApDQpAQCAtMTA4Myw3ICsxMjM0LDExIEBA IG5ucGZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGQNCiAg ICAgbXNnLnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICBpZiAo c3RybGNweShtc2cubmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSwgc2l6ZW9m KG1zZy5uYW1lKSkgPj0gTk5QRlNfTUFYX05BTUUpDQogCSAgICByZXR1cm4g LUVOQU1FVE9PTE9ORzsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtF Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3Vy cmVudC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJl bnRfdWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZz X2dldF9wYWcoKTsNCiAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhu bnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogICAgIGlmIChl cnJvciA9PSAwKQ0KQEAgLTExMjgsNyArMTI4MywxMSBAQCBzdGF0aWMgaW50 IG5ucGZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkDQogCWlmIChzdHJsY3B5 KG1zZy5uYW1lLCBuYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19N QVhfTkFNRSkNCiAJICAgIHJldHVybiAtRU5BTUVUT09MT05HOw0KIA0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4 KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisg ICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlm DQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJZXJyb3Ig PSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXpl b2YobXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KQEAgLTExNTcsMjkgKzEz MTYsNDcgQEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0cnVjdCBpbm9k ZSAqZA0KICAgICB4biA9IFZOT0RFX1RPX1hOT0RFKGRpcik7DQogDQogICAg IHsNCi0Jc3RydWN0IG5ucGZzX21lc3NhZ2Vfc3ltbGluayBtc2c7DQorCXN0 cnVjdCBubnBmc19tZXNzYWdlX3N5bWxpbmsgKm1zZyA9IE5VTEw7DQogDQot CW1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1NZTUxJTks7DQotCW1z Zy5wYXJlbnRfaGFuZGxlID0geG4tPmhhbmRsZTsNCi0JaWYgKHN0cmxjcHko bXNnLm5hbWUsIG5hbWUsIHNpemVvZihtc2cubmFtZSkpID49IE5OUEZTX01B WF9OQU1FKQ0KLQkgICAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQotCWlmIChz dHJsY3B5KG1zZy5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy5jb250 ZW50cykpID49IE5OUEZTX01BWF9TWU1MSU5LX0NPTlRFTlQpDQotCSAgICBy ZXR1cm4gLUVOQU1FVE9PTE9ORzsNCi0JWEFfQ0xFQVIoJm1zZy5hdHRyKTsN Ci0JWEFfU0VUX01PREUoJm1zZy5hdHRyLCAwNzc3KTsNCi0JWEFfU0VUX1RZ UEUoJm1zZy5hdHRyLCBOTlBGU19GSUxFX0xOSyk7DQotCVhBX1NFVF9HSUQo Jm1zZy5hdHRyLCBjdXJyZW50LT5mc2dpZCk7DQorCW1zZyA9IGttYWxsb2Mo c2l6ZW9mKCptc2cpLCBHRlBfS0VSTkVMKTsNCiANCi0JbXNnLmNyZWQudWlk ID0gY3VycmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRf cGFnKCk7DQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAm bXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KKwlpZiAobXNnID09IE5VTEwp DQorCSAgcmV0dXJuIC1FTk9NRU07DQorDQorCW1zZy0+aGVhZGVyLm9wY29k ZSA9IE5OUEZTX01TR19TWU1MSU5LOw0KKwltc2ctPnBhcmVudF9oYW5kbGUg PSB4bi0+aGFuZGxlOw0KKwlpZiAoc3RybGNweShtc2ctPm5hbWUsIG5hbWUs IHNpemVvZihtc2ctPm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkgew0KKwkg IGtmcmVlKG1zZyk7DQorCSAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQorCX0N CisJaWYgKHN0cmxjcHkobXNnLT5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9m KG1zZy0+Y29udGVudHMpKSA+PSBOTlBGU19NQVhfU1lNTElOS19DT05URU5U KSB7DQorCSAga2ZyZWUobXNnKTsNCisJICByZXR1cm4gLUVOQU1FVE9PTE9O RzsNCisJfQ0KKwlYQV9DTEVBUigmbXNnLT5hdHRyKTsNCisJWEFfU0VUX01P REUoJm1zZy0+YXR0ciwgMDc3Nyk7DQorCVhBX1NFVF9UWVBFKCZtc2ctPmF0 dHIsIE5OUEZTX0ZJTEVfTE5LKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJWEFfU0VUX0dJRCgmbXNn LT5hdHRyLCBjdXJyZW50LT5mc2dpZCk7DQorI2Vsc2UNCisgICAgICAgIFhB X1NFVF9HSUQoJm1zZy0+YXR0ciwgY3VycmVudF9mc2dpZCgpKTsNCisjZW5k aWYNCisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJT SU9OKDIsNiwyOCkNCisJbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsN CisjZWxzZQ0KKyAgICAgICAgbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnRfdWlk KCk7DQorI2VuZGlmDQorCW1zZy0+Y3JlZC5wYWcgPSBubnBmc19nZXRfcGFn KCk7DQorCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNn LT5oZWFkZXIsIHNpemVvZigqbXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0K LQkgICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKCZtc2cpOw0K KwkgICAgZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKG1zZyk7DQog DQogCS8qIFhYWCBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZSAqLw0KIAlp ZiAoREVOVFJZX1RPX1hERU5UUlkoZGVudHJ5KS0+eGRfZmxhZ3MgPT0gMCkg ew0KIAkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiBubnBm c19zeW1saW5rOiBkZW50cnkgbm90IHZhbGlkXG4iKTsNCiAJfQ0KKwlrZnJl ZShtc2cpOw0KICAgICB9DQogDQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0x MTg4LDEyICsxMzY1LDIxIEBAIHN0YXRpYyBpbnQgbm5wZnNfc3ltbGluayhz dHJ1Y3QgaW5vZGUgKmQNCiAvKg0KICAqIFdlIGhvbGQgaV9tdXRleC4NCiAg Ki8NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxMSwwKQ0KIHN0YXRpYyBpbnQNCiBubnBmc19yZWFkZGlyKHN0cnVjdCBm aWxlICogZmlsZSwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIp DQorI2Vsc2UNCitzdGF0aWMgaW50DQorbm5wZnNfaXRlcmF0ZShzdHJ1Y3Qg ZmlsZSAqIGZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KQ0KKyNlbmRp Zg0KIHsNCiAgICAgaW50IGVycm9yOw0KICAgICBsb2ZmX3Qgb2Zmc2V0LCBi ZWdpbl9vZmZzZXQ7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9 IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVj dCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2Rl Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmNhY2hlX2lub2RlOw0K ICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShp bm9kZSk7DQogICAgIGNoYXIgKmJ1ZjsNCkBAIC0xMjY0LDYgKzE0NTAsNyBA QCBubnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqDQog CQkgICAgKGludCkgeGRpcmVudC0+ZF9uYW1sZW4sDQogCQkgICAgKGludCkg KG9mZnNldCtiZWdpbl9vZmZzZXQpKSk7DQogDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAJICAgIGlmICh4 ZGlyZW50LT5kX2ZpbGVubyAhPSAwDQogCQkmJiAoZmlsbGRpcl9lcnJvciA9 IGZpbGxkaXIgKGRpcmVudCwNCiAJCQkJICAgICB4ZGlyZW50LT5kX25hbWUs DQpAQCAtMTI3NSw2ICsxNDYyLDE4IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0 IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJCQkgKCJubnBmc19yZWFkZGlyIGZp bGxkaXI6ICVkXG4iLCBmaWxsZGlyX2Vycm9yKSk7DQogCQlicmVhazsNCiAJ ICAgIH0NCisjZWxzZQ0KKwkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9 IDANCisJCSYmIChmaWxsZGlyX2Vycm9yID0gZGlyX2VtaXQgKGN0eCwNCisJ CQkJICAgICB4ZGlyZW50LT5kX25hbWUsDQorCQkJCSAgICAgeGRpcmVudC0+ ZF9uYW1sZW4sDQorCQkJCSAgICAgeGRpcmVudC0+ZF9maWxlbm8sDQorCQkJ CSAgICAgRFRfVU5LTk9XTikpIDwgMCkgew0KKwkJTk5QRlNERUIoWERFQlJF QURESVIsDQorCQkJICgibm5wZnNfcmVhZGRpciBmaWxsZGlyOiAlZFxuIiwg ZmlsbGRpcl9lcnJvcikpOw0KKwkJYnJlYWs7DQorCSAgICB9DQorI2VuZGlm DQogCSAgICBvZmZzZXQgKz0geGRpcmVudC0+ZF9yZWNsZW47DQogDQogCSAg ICBpZiAoeGRpcmVudC0+ZF9yZWNsZW4gPT0gMCkgew0KQEAgLTEzMzEsOSAr MTUzMCwxNSBAQCBubnBmc19yZWFkbGluayAoc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBjDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0KICAqLw0KIA0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LDIs MCkNCiBzdGF0aWMgdm9pZCAqDQogbm5wZnNfZm9sbG93X2xpbmsgKHN0cnVj dCBkZW50cnkgKmRlbnRyeSwNCiAJCSBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkN CisjZWxzZQ0KK3N0YXRpYyBjb25zdCBjaGFyICoNCitubnBmc19mb2xsb3df bGluayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KKwkJIHZvaWQgKipwYWdl KQ0KKyNlbmRpZg0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCiAgICAgc3Ry dWN0IGlub2RlICppbm9kZSA9IERFTlRSWV9UT19JTk9ERShkZW50cnkpOw0K QEAgLTEzNDQsNyArMTU0OSwxMSBAQCBubnBmc19mb2xsb3dfbGluayAoc3Ry dWN0IGRlbnRyeSAqZGVudHJ5DQogICAgIGlmIChlcnJvcikNCiAgICAgICAg cmV0dXJuIEVSUl9QVFIoZXJyb3IpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTig0LDIsMCkNCiAgICAgcmV0dXJuIHBh Z2VfZm9sbG93X2xpbmtfbGlnaHQoZGVudHJ5LCBuZCk7DQorI2Vsc2UNCisg ICAgcmV0dXJuIHBhZ2VfZm9sbG93X2xpbmtfbGlnaHQoZGVudHJ5LCBwYWdl KTsNCisjZW5kaWYNCiB9DQogDQogLyoNCkBAIC0xMzk4LDcgKzE2MDcsMTEg QEAgbm5wZnNfc2V0YXR0ciAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdA0K ICAgICAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcHV0YXR0ciBtc2c7DQog DQogICAgICAgICBtc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QVVRB VFRSOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQor I2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7 DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsN CiAgICAgICAgIG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICAgICAg bm5wZnNfaWF0dHIyYXR0cih4biwgYXR0ciwgJm1zZy5hdHRyKTsNCkBAIC0x NDIyLDYgKzE2MzUsOCBAQCBubnBmc19yZWxlYXNlX2ZpbGUgKHN0cnVjdCBp bm9kZSAqaW5vZGUsDQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCiAg ICAgaW50IGVycm9yID0gMDsNCiANCisgICAgKHZvaWQpbm5wZnNwOw0KKw0K ICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfcmVsZWFzZV9maWxl XG4iKSk7DQogDQogICAgIGVycm9yID0gbm5wZnNfaW5vZGVfdmFsaWQoaW5v ZGUpOw0KQEAgLTE0NTAsMTggKzE2NjUsMTggQEAgbm5wZnNfcmVsZWFzZV9m aWxlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KICAqDQogICovDQogDQotI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgp DQogc3RhdGljIGludA0KIG5ucGZzX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxl LCBmbF9vd25lcl90IGlkKQ0KLSNlbHNlDQotc3RhdGljIGludA0KLW5ucGZz X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlKQ0KLSNlbmRpZg0KIHsNCiAgICAg Tk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX2ZsdXNoXG4iKSk7DQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks MCkNCiAgICAgaWYgKGZpbGUgJiYgZmlsZS0+Zl9kZW50cnkgJiYgZmlsZS0+ Zl9kZW50cnktPmRfaW5vZGUpDQogCXJldHVybiBubnBmc19yZWxlYXNlX2Zp bGUoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUsIGZpbGUpOw0KKyNlbHNlDQor ICAgIGlmIChmaWxlICYmIGZpbGUtPmZfcGF0aC5kZW50cnkgJiYgZmlsZS0+ Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZSkNCisJcmV0dXJuIG5ucGZzX3JlbGVh c2VfZmlsZShmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLCBmaWxlKTsN CisjZW5kaWYNCiAgICAgZWxzZQ0KIAlyZXR1cm4gMDsNCiB9DQpAQCAtMTQ3 MCwxMCArMTY4NSwyNCBAQCBubnBmc19mbHVzaChzdHJ1Y3QgZmlsZSAqZmls ZSkNCiAgKiBSZXR1cm4gMSBpZiBgZGVudHJ5JyBpcyBzdGlsbCB2YWxpZCwg b3RoZXJ3aXNlIDAuDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyBpbnQNCi1ubnBm c19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qg bmFtZWlkYXRhICpuZCkgDQorbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQorI2Vsc2UN CitzdGF0aWMgaW50DQorbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKQ0KKyNlbmRpZg0KIHsN CiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IERFTlRSWV9UT19JTk9ERShk ZW50cnkpOw0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMyw2LDApDQorICAgIGlmIChmbGFncyAmIExPT0tVUF9SQ1Up DQorICAgICAgICByZXR1cm4gLUVDSElMRDsNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KKyAgICBpZiAo bmQgJiYgbmQtPmZsYWdzICYgTE9PS1VQX1JDVSkNCisgICAgICAgIHJldHVy biAtRUNISUxEOw0KKyNlbmRpZg0KKw0KICAgICBOTlBGU0RFQihYREVCVk5P UFMsICgibm5wZnNfZF9yZXZhbGlkYXRlICVwIFwiJS4qc1wiIChpbm9kZSAl cClcbiIsDQogCQkgICAgICAgZGVudHJ5LA0KIAkJICAgICAgIChpbnQpZGVu dHJ5LT5kX25hbWUubGVuLA0KQEAgLTE1MTksOSArMTc0OCwxNSBAQCBubnBm c19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5DQogICAgIHJl dHVybiAwOw0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMiw2LDM4KQ0KIHN0YXRpYw0KIGludA0KIG5ucGZzX2Rf ZGVsZXRlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCisjZWxzZQ0KK3N0YXRp Yw0KK2ludA0KK25ucGZzX2RfZGVsZXRlKGNvbnN0IHN0cnVjdCBkZW50cnkg KmRlbnRyeSkNCisjZW5kaWYNCiB7DQogICAgIHN0cnVjdCBpbm9kZSAqaW5v ZGU7DQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCkBAIC0xNTQ2LDEx ICsxNzgxLDE2IEBAIG5ucGZzX2RfZGVsZXRlKHN0cnVjdCBkZW50cnkgKmRl bnRyeSkNCiB9DQogDQogc3RhdGljIHNzaXplX3QNCi1ubnBmc19zZW5kZmls ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90ICpwcG9zLCBzaXplX3QgY291 bnQsDQotCSAgICAgICByZWFkX2FjdG9yX3QgYWN0b3IsIHZvaWQgKnRhcmdl dCkNCitubnBmc19zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9m Zl90ICpwcG9zLA0KKwkJICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBl LCBzaXplX3QgY291bnQsDQorCQkgIHVuc2lnbmVkIGludCBmbGFncykNCiB7 DQogICAgIGludCBlcnJvciA9IDA7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2Rl ICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQor ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5 LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAq eG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAgIA0KICAgICBpZiAo eG4gIT0gTlVMTCkNCkBAIC0xNTYxLDggKzE4MDEsNyBAQCBubnBmc19zZW5k ZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90DQogCU5OUEZTREVCKFhE RUJWTk9QUywgKCJubnBmc19zZW5kZmlsZTogZGF0YSBub3QgdmFsaWQgJWRc biIsIGVycm9yKSk7DQogCXJldHVybiBlcnJvcjsNCiAgICAgfQ0KLQ0KLSAg ICBlcnJvciA9IGdlbmVyaWNfZmlsZV9zZW5kZmlsZShmaWxlLCBwcG9zLCBj b3VudCwgYWN0b3IsIHRhcmdldCk7DQorICAgIGVycm9yID0gZmlsZS0+Zl9v cC0+c3BsaWNlX3JlYWQoZmlsZSwgcHBvcywgcGlwZSwgY291bnQsIGZsYWdz KTsNCiANCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3NlbmRm aWxlOiBlcnJvciA9ICVkXG4iLCBlcnJvcikpOw0KICAgICByZXR1cm4gZXJy b3I7DQpAQCAtMTYzOSwzNCArMTg3OCwzMSBAQCBubnBmc193cml0ZV9iYWNr cGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgDQogCXN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nID0gYmFja2ZpbGUtPmZfbWFwcGluZzsNCiAJdW5zaWdu ZWQgbGVuID0gUEFHRV9DQUNIRV9TSVpFOw0KIAlzdHJ1Y3QgcGFnZSAqYmFj a3BhZ2U7DQorCXZvaWQgKmZzZGF0YTsNCiAJdW5zaWduZWQgbG9uZyBvZmZz ZXQ7DQogDQogCWludCBlcnJvcjsNCiAJDQotCWRvIHsNCi0JCWJhY2twYWdl ID0gZ3JhYl9jYWNoZV9wYWdlKG1hcHBpbmcsIG5ucGZzX2dldF9iYWNraW5k ZXgocGFnZSkpOw0KLQkJaWYgKCFiYWNrcGFnZSkgew0KLQkJCXByaW50aygi bm5wZnNfd3JpdGVfYmFja3BhZ2U6IG5vIHBhZ2VcbiIpOw0KLQkJCXJldHVy biAtRUlPOw0KLQkJfQ0KKwkodm9pZClvZmZzZXQ7DQogDQotCQllcnJvciA9 IG1hcHBpbmctPmFfb3BzLT5wcmVwYXJlX3dyaXRlKGJhY2tmaWxlLCBiYWNr cGFnZSwNCi0JCQkJCQkgICAgICAwLCBsZW4pOw0KKwlkbyB7DQorCQllcnJv ciA9IHBhZ2VjYWNoZV93cml0ZV9iZWdpbihiYWNrZmlsZSwgbWFwcGluZywg MCwgbGVuLA0KKwkJCQkJICAgICAgQU9QX0ZMQUdfVU5JTlRFUlJVUFRJQkxF LA0KKwkJCQkJICAgICAgJmJhY2twYWdlLCAmZnNkYXRhKTsNCiAJCWlmICgh ZXJyb3IpIHsNCiAJCQljb3B5X2hpZ2hwYWdlKGJhY2twYWdlLCBwYWdlKTsN CiAJCQlmbHVzaF9kY2FjaGVfcGFnZShiYWNrcGFnZSk7DQotCQkJZXJyb3Ig PSBtYXBwaW5nLT5hX29wcy0+Y29tbWl0X3dyaXRlKGJhY2tmaWxlLCBiYWNr cGFnZSwNCi0JCQkJCQkJICAgICAwLCBsZW4pOw0KKwkJCWVycm9yID0gcGFn ZWNhY2hlX3dyaXRlX2VuZChiYWNrZmlsZSwgbWFwcGluZywgMCwgbGVuLA0K KwkJCQkJbGVuLCBiYWNrcGFnZSwgZnNkYXRhKTsNCisJCQlpZiAoZXJyb3Ig PiAwKQ0KKwkJCQllcnJvciA9IDA7DQogCQl9DQogCQlpZiAoZXJyb3IgPT0g QU9QX1RSVU5DQVRFRF9QQUdFKSB7DQotCQkJcGFnZV9jYWNoZV9yZWxlYXNl KGJhY2twYWdlKTsNCiAJCQljb250aW51ZTsNCiAJCX0NCiAJfSB3aGlsZSAo MCk7DQogDQogCW9mZnNldCA9IHBhZ2Vfb2Zmc2V0KGJhY2twYWdlKTsNCi0J dW5sb2NrX3BhZ2UoYmFja3BhZ2UpOw0KLQlwYWdlX2NhY2hlX3JlbGVhc2Uo YmFja3BhZ2UpOw0KIA0KIAlpZiAoZXJyb3IpDQogCQlwcmludGsoIm5ucGZz X3dyaXRlX2JhY2twYWdlOiBFSU9cbiIpOw0KQEAgLTE2ODksMTMgKzE5MjUs OSBAQCBubnBmc19yZWFkX2JhY2twYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBz DQogCXN0cnVjdCBwYWdlICpiYWNrcGFnZTsNCiAJdW5zaWduZWQgbG9uZyBv ZmZzZXQ7DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigyLDYsMTgpDQorCSh2b2lkKW9mZnNldDsNCisNCiAJYmFja3Bh Z2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBuLCBiYWNrZmlsZSk7 DQotI2Vsc2UNCi0JYmFja3BhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGlu ZywgbiwNCi0JCQkJICAgKGZpbGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJl YWRwYWdlLA0KLQkJCQkgICBiYWNrZmlsZSk7DQotI2VuZGlmDQogCWlmICgh SVNfRVJSKGJhY2twYWdlKSkgew0KIAkJd2FpdF9vbl9wYWdlX2xvY2tlZChi YWNrcGFnZSk7DQogDQpAQCAtMTgwNSw2ICsyMDM3LDcgQEAgbm5wZnNfd3Jp dGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Yw0KIH0NCiANCiAvKiBm cm9tLCB0byBhcmUgd2l0aGluIHBhZ2UgKi8NCisvKiBYWFggTm90ZSB0aGF0 IHdoaWxlIHRoZXJlIGFyZSBhIHN5c3RlbSBwcm92aWRlZCBzaW1wbGVfcHJl cGFyZV93cml0ZSB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9u IGJlY2F1c2UgaWYgYSB3cml0ZSBpcyBzbWFsbGVyIHRoYW4gb25lIHBhZ2Ug bm5wZnMgbXVzdCBnZXQgdGhlIG9sZCBibG9jayBmcm9tIHRoZSBzZXJ2ZXIg Zmlyc3QgdG8gZmlsbCBpbi4gKi8NCiBzdGF0aWMgaW50DQogbm5wZnNfcHJl cGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBh Z2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKQ0KIHsNCkBAIC0xODQy LDExICsyMDc1LDE3IEBAIG5ucGZzX3ByZXBhcmVfd3JpdGUoc3RydWN0IGZp bGUgKmZpbGUsIHMNCiANCiAJaWYgKG1vZHNpemUgPiBpX3NpemVfcmVhZChp bm9kZSkpIHsNCiAJCWludCBlcnJvcjsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw4LDApDQogCQllcnJvciA9IHZtdHJ1 bmNhdGUoaW5vZGUsIG1vZHNpemUpOw0KKyNlbHNlDQorCQllcnJvciA9IGlu b2RlX25ld3NpemVfb2soaW5vZGUsIG1vZHNpemUpOw0KKwkJaWYoIWVycm9y KQ0KKwkJCXRydW5jYXRlX3NldHNpemUoaW5vZGUsIG1vZHNpemUpOw0KKyNl bmRpZg0KIAkJaWYgKGVycm9yKSB7DQogCQkJcHJpbnRrKCJubnBmc19wcmVw YXJlX3dyaXRlOiB0cnVuY2F0ZSglbGx1KSAtPiAlZFxuIiwNCiAJCQkgICAg ICAgbW9kc2l6ZSwgLWVycm9yKTsNCi0JCQlCVUcoKTsgLyogWFhYIG5vdCBj b3JyZWN0ICovDQorCQkJLypCVUcoKTsqLyAvKiBYWFggbm90IGNvcnJlY3Qg Ki8NCiAJCX0NCiAJfQ0KIA0KQEAgLTE4NzIsOCArMjExMSw0MyBAQCBubnBm c19wcmVwYXJlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzDQogCXJldHVy biByZXQ7DQogfQ0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KKy8qIFhYWCBOb3RlIHRoYXQgd2hpbGUg dGhlcmUgYXJlIGEgc3lzdGVtIHByb3ZpZGVkIHNpbXBsZV93cml0ZV9iZWdp biB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGJlY2F1c2Ug aWYgYSB3cml0ZSBpcyBzbWFsbGVyIHRoYW4gb25lIHBhZ2Ugbm5wZnMgbXVz dCBnZXQgdGhlIG9sZCBibG9jayBmcm9tIHRoZSBzZXJ2ZXIgZmlyc3QgdG8g ZmlsbCBpbi4gKi8NCiBzdGF0aWMgaW50DQotbm5wZnNfY29tbWl0X3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWdu ZWQgZnJvbSwgdW5zaWduZWQgdG8pDQorbm5wZnNfd3JpdGVfYmVnaW4oc3Ry dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LCBsb2ZmX3QgcG9zLA0KK3Vuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3Ms IHN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpDQorew0KKwlz dHJ1Y3QgcGFnZSAqcGFnZTsNCisJcGdvZmZfdCBpbmRleDsNCisJdW5zaWdu ZWQgZnJvbTsNCisJaW50IHJldCA9IDA7DQorDQorCWluZGV4ID0gcG9zID4+ IFBBR0VfQ0FDSEVfU0hJRlQ7DQorCWZyb20gPSBwb3MgJiAoUEFHRV9DQUNI RV9TSVpFIC0gMSk7DQorDQorCXBhZ2UgPSBncmFiX2NhY2hlX3BhZ2Vfd3Jp dGVfYmVnaW4obWFwcGluZywgaW5kZXgsIGZsYWdzKTsNCisNCisJaWYgKHBh Z2UgPT0gTlVMTCkNCisJICAgIHJldHVybiAtRU5PTUVNOw0KKw0KKwkqcGFn ZXAgPSBwYWdlOw0KKw0KKwlyZXQgPSBubnBmc19wcmVwYXJlX3dyaXRlKGZp bGUsIHBhZ2UsIGZyb20sIGZyb20gKyBsZW4pOw0KKw0KKwlpZiAocmV0KSB7 DQorCSAgICB1bmxvY2tfcGFnZShwYWdlKTsNCisJICAgIHBhZ2VfY2FjaGVf cmVsZWFzZShwYWdlKTsNCisJfQ0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisj ZW5kaWYNCisNCisvKiBYWFggd2UgdXNlIHRoZSBzeXN0ZW0gcHJvdmlkZWQg c2ltcGxlX2NvbW1pdF93cml0ZSBpbnN0ZWFkIHNvIHRoaXMgZnVuY3Rpb24g aXMgdW51c2VkIGZvciBub3cgKi8NCisjaWYgMA0KK3N0YXRpYyBpbnQNCitu bnBmc19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBw YWdlICpwYWdlLA0KKwkJICAgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8p DQogew0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gcGFnZS0+bWFwcGlu Zy0+aG9zdDsNCiAgICAgbG9mZl90IHBvcyA9ICgobG9mZl90KXBhZ2UtPmlu ZGV4IDw8IFBBR0VfQ0FDSEVfU0hJRlQpICsgdG87DQpAQCAtMTg5OCwxOCAr MjE3Miw1NyBAQCBubnBmc19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKmZp bGUsIHN0DQogCWt1bm1hcChwYWdlKTsNCiAgICAgfQ0KICNlbmRpZg0KLSAg ICANCisgDQogICAgIHJldHVybiAwOw0KIH0NCisjZW5kaWYNCiANCi0jaWYg TElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkN Ci1jb25zdA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZF UlNJT04oMiw2LDI4KQ0KKy8qIFhYWCB3ZSB1c2UgdGhlIHN5c3RlbSBwcm92 aWRlZCBzaW1wbGVfd3JpdGVfZW5kIGluc3RlYWQgc28gdGhpcyBmdW5jdGlv biBpcyB1bnVzZWQgZm9yIG5vdyAqLw0KKyNpZiAwDQorc3RhdGljIGludA0K K25ucGZzX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBwb3MsDQorCQl1bnNpZ25l ZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHZv aWQgKmZzZGF0YSkNCit7DQorCXVuc2lnbmVkIGZyb20gPSBwb3MgJiAoUEFH RV9DQUNIRV9TSVpFIC0gMSk7DQorDQorCS8qIHplcm8gdGhlIHN0YWxlIHBh cnQgb2YgdGhlIHBhZ2UgaWYgd2UgZGlkIGEgc2hvcnQgY29weSAqLw0KKwlp ZiAoY29waWVkIDwgbGVuKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJdm9pZCAqa2FkZHIgPSBrbWFw X2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7DQorI2Vsc2UNCisJCXZvaWQgKmth ZGRyID0ga21hcF9hdG9taWMocGFnZSk7DQorI2VuZGlmDQorCQltZW1zZXQo a2FkZHIgKyBmcm9tICsgY29waWVkLCAwLCBsZW4gLSBjb3BpZWQpOw0KKwkJ Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJa3VubWFwX2F0b21p YyhrYWRkciwgS01fVVNFUjApOw0KKyNlbHNlDQorCQlrdW5tYXBfYXRvbWlj KGthZGRyKTsNCisjZW5kaWYNCisJfQ0KKw0KKwlubnBmc19jb21taXRfd3Jp dGUoZmlsZSwgcGFnZSwgZnJvbSwgZnJvbSArIGNvcGllZCk7DQorDQorCXVu bG9ja19wYWdlKHBhZ2UpOw0KKwlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7 DQorDQorCXJldHVybiBjb3BpZWQ7DQorfQ0KICNlbmRpZg0KKyNlbmRpZg0K Kw0KK2NvbnN0DQogc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBu bnBmc19hb3BzID0gew0KIAkucmVhZHBhZ2UgPSBubnBmc19yZWFkcGFnZSwN CiAJLndyaXRlcGFnZSA9IG5ucGZzX3dyaXRlcGFnZSwNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAkucHJl cGFyZV93cml0ZSA9IG5ucGZzX3ByZXBhcmVfd3JpdGUsDQotCS5jb21taXRf d3JpdGUgPSBubnBmc19jb21taXRfd3JpdGUsDQorCS5jb21taXRfd3JpdGUg PSBzaW1wbGVfY29tbWl0X3dyaXRlLA0KKyNlbHNlDQorCS53cml0ZV9iZWdp biA9IG5ucGZzX3dyaXRlX2JlZ2luLA0KKwkud3JpdGVfZW5kID0gc2ltcGxl X3dyaXRlX2VuZCwNCisjZW5kaWYNCiB9Ow0KIA0KIC8qDQpAQCAtMTkxNywy MSArMjIzMCwzMCBAQCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25z IG5ucGZzX2FvDQogICovDQogDQogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBu bnBmc19maWxlX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgLmFpb19yZWFk CT0gbm5wZnNfYWlvX3JlYWQsDQogICAgIC5haW9fd3JpdGUJPSBubnBmc19h aW9fd3JpdGUsDQorI2Vsc2UNCisgICAgLnJlYWRfaXRlcgk9IG5ucGZzX3Jl YWRfaXRlciwNCisgICAgLndyaXRlX2l0ZXIJPSBubnBmc193cml0ZV9pdGVy LA0KKyNlbmRpZg0KICAgICAubW1hcAk9IG5ucGZzX2ZpbGVfbW1hcCwNCiAg ICAgLm9wZW4JPSBubnBmc19vcGVuLA0KICAgICAuZmx1c2gJPSBubnBmc19m bHVzaCwNCiAgICAgLnJlbGVhc2UJPSBubnBmc19yZWxlYXNlX2ZpbGUsDQog ICAgIC5mc3luYwk9IG5ucGZzX2ZzeW5jLA0KLSAgICAuc2VuZGZpbGUJPSBu bnBmc19zZW5kZmlsZSwNCisgICAgLnNwbGljZV9yZWFkID0gbm5wZnNfc3Bs aWNlX3JlYWQsDQogfTsNCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5u cGZzX2RlYWRfb3BlcmF0aW9ucyA9IHsNCiB9Ow0KIA0KIHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgbm5wZnNfZGlyX29wZXJhdGlvbnMgPSB7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAg ICAgLnJlYWRkaXIJPSBubnBmc19yZWFkZGlyLA0KKyNlbHNlDQorICAgIC5p dGVyYXRlICAgID0gbm5wZnNfaXRlcmF0ZSwNCisjZW5kaWYNCiAgICAgLmZs dXNoCT0gbm5wZnNfZmx1c2gsDQogfTsNCiANCmRpZmYgLXVwck4gLVhub2Rp ZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19sb2FkLmMgYXJs YS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2xvYWQuYw0KLS0tIGFybGEtMC45 MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfbG9hZC5jCTIwMDYtMTAtMzEgMTE6 MDI6NDEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xp bnV4L25ucGZzX2xvYWQuYwkyMDE2LTAxLTEzIDIwOjE0OjAyLjAwMDAwMDAw MCArMDEwMA0KQEAgLTU0LDcgKzU0LDExIEBAIGV4dGVybiBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIG5ucGZzX2ZvcHMNCiANCiBzdHJ1Y3QgZmlsZV9zeXN0 ZW1fdHlwZSBubnBmc19mc190eXBlID0gew0KICAgICAgICBuYW1lOiAgICAg ICAgICAgIm5ucGZzIiwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMiw2LDM5KQ0KICAgICAgICBnZXRfc2I6ICAgICAgICAg bm5wZnNfZ2V0X3NiLA0KKyNlbHNlDQorICAgICAgIG1vdW50OiAgICAgICAg ICBubnBmc19tb3VudCwNCisjZW5kaWYNCiAgICAgICAga2lsbF9zYjogICAg ICAgIGtpbGxfbGl0dGVyX3N1cGVyLA0KICAgICAgICBvd25lcjogICAgICAg ICAgVEhJU19NT0RVTEUsDQogfTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJs YS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19tZXNzYWdlLmMgYXJsYS0w LjkwL25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2UuYw0KLS0tIGFybGEtMC45 MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfbWVzc2FnZS5jCTIwMDctMDEtMDkg MTc6MzM6MzEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzX21lc3NhZ2UuYwkyMDE2LTAxLTI0IDE4OjUyOjI4LjAw MDAwMDAwMCArMDEwMA0KQEAgLTQ1LDcgKzQ1LDcgQEANCiAjaW5jbHVkZSA8 bGludXgvbW91bnQuaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElk OiBubnBmc19tZXNzYWdlLmMsdiAxLjE0My4yLjEgMjAwNy8wMS8wOSAxNjoz MzozMSB0b2wgRXhwICQiKTsNCitSQ1NJRCgiJElkOiBubnBmc19tZXNzYWdl LmMsdiAxLjE0NSAyMDEwLzA4LzA4IDIwOjQzOjA1IHRvbCBFeHAgJCIpOw0K ICNlbmRpZg0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtNTUsOSArNTUsMTUgQEAg c3RhdGljIHZvaWQNCiBubnBmc19kX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpDQogew0KICAgICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX2Rf cmVtb3ZlICVwXG4iLCBkZW50cnkpKTsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KICAgICBzcGluX2xvY2so JmRjYWNoZV9sb2NrKTsNCiAgICAgZGdldF9sb2NrZWQoZGVudHJ5KTsNCiAg ICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICBz cGluX2xvY2soJmRlbnRyeS0+ZF9sb2NrKTsNCisgICAgZGdldF9kbG9jayhk ZW50cnkpOw0KKyAgICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2spOw0K KyNlbmRpZg0KICAgICBkX2Ryb3AoZGVudHJ5KTsNCiAgICAgZHB1dChkZW50 cnkpOw0KIH0NCkBAIC0xMjEsNyArMTI3LDExIEBAIG5ucGZzX21lc3NhZ2Vf aW5zdGFsbG5vZGUoc3RydWN0IG5ucGZzICoNCiAgICAgc3RydWN0IGlub2Rl ICpkaSwgKmlub2RlOw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQgPSBO VUxMOw0KICAgICBzdHJ1Y3QgcXN0ciBzcXN0cjsNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVj dCBsaXN0X2hlYWQgKmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqYWxpYXM7DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihY REVCTVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGVcbiIpKTsNCiAg ICAgDQpAQCAtMTc2LDEyICsxODYsMjYgQEAgbm5wZnNfbWVzc2FnZV9pbnN0 YWxsbm9kZShzdHJ1Y3Qgbm5wZnMgKg0KICAgICAgKg0KICAgICAgKi8NCiAg ICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsNiwwKQ0KICAgICBhbGlhcyA9IGRpLT5pX2RlbnRyeS5uZXh0Ow0KICAg ICB3aGlsZSAoYWxpYXMgIT0gJmRpLT5pX2RlbnRyeSkgew0KIAlwYXJlbnQg PSBsaXN0X2VudHJ5KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsN Ci0Jc3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7DQotCWRnZXRfbG9ja2VkKHBh cmVudCk7DQotCXNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQor ICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgYWxpYXMsICZkaS0+ aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGhsaXN0X2Zvcl9l YWNoX2VudHJ5KHBhcmVudCwgJmRpLT5pX2RlbnRyeSwgZF9hbGlhcykgew0K KyNlbHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgJmRp LT5pX2RlbnRyeSwgZF91LmRfYWxpYXMpIHsNCisjZW5kaWYNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KKyAg ICBzcGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCisgICAgZGdldF9sb2NrZWQo cGFyZW50KTsNCisgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisj ZWxzZQ0KKyAgICBzcGluX2xvY2soJnBhcmVudC0+ZF9sb2NrKTsNCisgICAg ZGdldF9kbG9jayhwYXJlbnQpOw0KKyAgICBzcGluX3VubG9jaygmcGFyZW50 LT5kX2xvY2spOw0KKyNlbmRpZg0KIAlkZW50cnkgPSBkX2xvb2t1cChwYXJl bnQsICZzcXN0cik7DQogCU5OUEZTREVCKFhERUJNU0csDQogCQkgKCJubnBm c19tZXNzYWdlX2luc3RhbGxub2RlOiBhbGlhcyAlcCwgbG9va3VwICVwXG4i LA0KQEAgLTIzMyw3ICsyNTcsOSBAQCBubnBmc19tZXNzYWdlX2luc3RhbGxu b2RlKHN0cnVjdCBubnBmcyAqDQogCQ0KIAlkcHV0KGRlbnRyeSk7DQogCWRl bnRyeSA9IE5VTEw7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsNiwwKQ0KIAlhbGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNl bmRpZg0KIAlkcHV0KHBhcmVudCk7DQogICAgIH0NCiAgICAgTk5QRlNERUIo WERFQk1TRywgKCJubnBmc19tZXNzYWdlX2luc3RhbGxub2RlOiBkb25lIGlu c3RhbGxpbmdcbiIpKTsNCkBAIC0yNjgsNyArMjk0LDEzIEBAIG5ucGZzX21l c3NhZ2VfaW5zdGFsbGF0dHIoc3RydWN0IG5ucGZzICoNCiAgICAgfQ0KIA0K ICAgICBpbm9kZSA9IFhOT0RFX1RPX1ZOT0RFKHQpOw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgZGVu dHJ5ID0gbGlzdF9lbnRyeShpbm9kZS0+aV9kZW50cnkubmV4dCwgc3RydWN0 IGRlbnRyeSwgZF9hbGlhcyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBkZW50cnkgPSBobGlz dF9lbnRyeShpbm9kZS0+aV9kZW50cnkuZmlyc3QsIHN0cnVjdCBkZW50cnks IGRfYWxpYXMpOw0KKyNlbHNlDQorICAgIGRlbnRyeSA9IGhsaXN0X2VudHJ5 KGlub2RlLT5pX2RlbnRyeS5maXJzdCwgc3RydWN0IGRlbnRyeSwgZF91LmRf YWxpYXMpOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQk1T RywgKCJubnBmc19tZXNzYWdlX2luc3RhbGxhdHRyIG5hbWU6JXNcbiIsDQog CQkgICAgICAgZGVudHJ5LT5kX25hbWUubmFtZSkpOw0KQEAgLTM5NiwxNyAr NDI4LDM1IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbGRhdGEoc3RydWN0IG5u cGZzICoNCiBzdGF0aWMgdm9pZA0KIGNsZWFyX2FsbF9jaGlsZHJlbiAoc3Ry dWN0IGlub2RlICppbm9kZSwgaW50IHBhcmVudCkNCiB7DQorICAgIHN0cnVj dCBkZW50cnkgKmRlbnRyeTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQg KmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7 DQorI2VuZGlmDQogDQogIGFnYWluOg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAgIHNwaW5fbG9jaygm ZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5fbG9jaygmaW5vZGUt PmlfbG9jayk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBhbGlhcyA9IGlub2RlLT5p X2RlbnRyeS5uZXh0Ow0KICAgICB3aGlsZSAoYWxpYXMgIT0gJmlub2RlLT5p X2RlbnRyeSkgew0KLQlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQor ICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwgYWxpYXMsICZpbm9k ZS0+aV9kZW50cnksIGRfYWxpYXMpIHsNCisjZWxpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGhsaXN0X2Zv cl9lYWNoX2VudHJ5KGRlbnRyeSwgJmlub2RlLT5pX2RlbnRyeSwgZF9hbGlh cykgew0KKyNlbHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlbnRy eSwgJmlub2RlLT5pX2RlbnRyeSwgZF91LmRfYWxpYXMpIHsNCisjZW5kaWYN CiAJc3RydWN0IGxpc3RfaGVhZCAqc3ViZGlyczsNCiAJc3RydWN0IG5ucGZz X2RlbnRyeV9kYXRhICp4ZDsNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlkZW50cnkgPSBsaXN0X2Vu dHJ5KGFsaWFzLCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisjZW5kaWYN CiAJaWYgKGRlbnRyeSA9PSBOVUxMKSB7DQogCSAgICBwcmludGsoS0VSTl9F TUVSRyAiTk5QRlMgUGFuaWM6IGRlbnRyeSBpbiBhbGlhcyBsaXN0IGlzIG51 bGxcbiIpOw0KIAkgICAgYnJlYWs7DQpAQCAtNDIyLDcgKzQ3MiwxMSBAQCBj bGVhcl9hbGxfY2hpbGRyZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsDQogCXN1 YmRpcnMgPSBkZW50cnktPmRfc3ViZGlycy5uZXh0Ow0KIAl3aGlsZSAoc3Vi ZGlycyAhPSAmZGVudHJ5LT5kX3N1YmRpcnMpIHsNCiAJICAgIHN0cnVjdCBs aXN0X2hlYWQgKnRtcCA9IHN1YmRpcnM7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJICAgIHN0cnVjdCBk ZW50cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50cnks IGRfdS5kX2NoaWxkKTsNCisjZWxzZQ0KKwkgICAgc3RydWN0IGRlbnRyeSAq Y2hpbGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF9jaGls ZCk7DQorI2VuZGlmDQogCSAgICBzdWJkaXJzID0gdG1wLT5uZXh0Ow0KIAkg ICAgTk5QRlNERUIoWERFQk1TRywgKCJjbGVhcl9hbGxfY2hpbGRyZW4gY2hp bGQ6ICUuKnMgaW5vZGU6ICVwLyVwICINCiAJCQkgICAgICAgImRjb3VudDog JWQgYWxpYXNlczpcbiIsDQpAQCAtNDQyLDE0ICs0OTYsMjQgQEAgY2xlYXJf YWxsX2NoaWxkcmVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIA0KIAkgICAg LyogVGhyb3cgaW1tZWRpYXRlbHkgKi8NCiAJICAgIGlmIChubnBmc19kY291 bnQoY2hpbGQpID09IDApIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KIAkgICAgICAgIHNwaW5fdW5sb2Nr KCZkY2FjaGVfbG9jayk7DQorI2Vsc2UNCisJICAgICAgICBzcGluX3VubG9j aygmaW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQogCQlubnBmc19kX3JlbW92 ZShjaGlsZCk7DQogCQlnb3RvIGFnYWluOw0KIAkgICAgfQ0KIAl9DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K IAlhbGlhcyA9IGFsaWFzLT5uZXh0Ow0KKyNlbmRpZg0KICAgICB9DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkN CiAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAg ICBzcGluX3VubG9jaygmaW5vZGUtPmlfbG9jayk7DQorI2VuZGlmDQogfQ0K IA0KIHN0YXRpYyB2b2lkDQpAQCAtNjA1LDEyICs2NjksMTAgQEAgZ2NfYmxv Y2soc3RydWN0IG5ucGZzICpubnBmc3AsDQogICAgIH0NCiANCiAgICAgaWYg KCFubnBmc19ibG9ja19oYXZlX3AoeG4sIG9mZnNldCkpIHsNCi0jaWYgMCAg IC8qIGhhcHBlbnMgd2hlbiBkYWVtb24gc2VuZHMgc2V2ZXJhbCBtZXNzYWdl cyBmb3Igc2FtZSBibG9jayAqLw0KIAlwcmludGsoS0VSTl9FTUVSRyAiTk5Q RlMvZ2NfYmxvY2s6ICINCiAJICAgICAgICJFTk9FTlQgKCVkLCVkLCVkLCVk KSAweCVsbHhcbiIsIA0KIAkgICAgICAgeG4tPmhhbmRsZS5hLCB4bi0+aGFu ZGxlLmIsIHhuLT5oYW5kbGUuYywgeG4tPmhhbmRsZS5kLCANCiAJICAgICAg ICh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KTsNCi0jZW5kaWYNCiAJcmV0 dXJuIC1FTk9FTlQ7DQogICAgIH0NCiANCkBAIC03MjEsMTIgKzc4MywyMiBA QCBubnBmc19tZXNzYWdlX3ZlcnNpb24oc3RydWN0IG5ucGZzICpubnBmDQog DQogICAgIC8qIHNhbml0eSBjaGVjayBiZWZvcmUgd2UgbG9vayBhdCBpdCAq Lw0KICAgICBpZiAoc2l6ZSA9PSBzaXplb2YoKm1lc3NhZ2UpICYmIG1lc3Nh Z2UtPnZlcnNpb24gPT0gTk5QRlNfVkVSU0lPTikgew0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVj dCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisJc3RydWN0IHBhdGggcGF0aDsN CisjZW5kaWYNCiAJaW50IGVycm9yOw0KIA0KIAl1aW50NjRfdCBibG9ja3Np emUgPSBtZXNzYWdlLT5ibG9ja3NpemU7DQogDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBw YXRoX2xvb2t1cCgiLiIsIDAsICZuZCk7DQorI2VsaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwllcnJvciA9IGtl cm5fcGF0aCgiLiIsIDAsICZuZC5wYXRoKTsNCisjZWxzZQ0KKwllcnJvciA9 IGtlcm5fcGF0aCgiLiIsIDAsICZwYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVy cm9yKSB7DQogCSAgICAvKg0KIAkgICAgICogQmFkIGNhY2hlIHJvb3QsIGp1 c3QgcmV0dXJuLg0KQEAgLTczNywxMiArODA5LDIzIEBAIG5ucGZzX21lc3Nh Z2VfdmVyc2lvbihzdHJ1Y3Qgbm5wZnMgKm5ucGYNCiAJCSAgICJubnBmc19t ZXNzYWdlX3ZlcnNpb24gZmFpbGVkIHBhdGhfbG9va3VwLCAiDQogCQkgICAi ZXJybm86ICVkXG4iLCBlcnJvcik7DQogCX0gZWxzZSB7DQotCSAgICBubnBm c3AtPmNhY2hlcm9vdCA9IG1udGdldChuZC5tbnQpOw0KLQkgICAgbm5wZnNw LT5jYWNoZWRpciA9IGRnZXQobmQuZGVudHJ5KTsNCi0JICAgIHBhdGhfcmVs ZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQorCSAgICBubnBmc3AtPmNhY2hlcm9vdCA9IG1u dGdldChuZC5wYXRoLm1udCk7DQorCSAgICBubnBmc3AtPmNhY2hlZGlyID0g ZGdldChuZC5wYXRoLmRlbnRyeSk7DQorCSAgICBwYXRoX3B1dCgmbmQucGF0 aCk7DQorI2Vsc2UNCisJICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50Z2V0 KHBhdGgubW50KTsNCisJICAgIG5ucGZzcC0+Y2FjaGVkaXIgPSBkZ2V0KHBh dGguZGVudHJ5KTsNCisJICAgIHBhdGhfcHV0KCZwYXRoKTsNCisjZW5kaWYN CiAJICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMjkpDQogCSAgICBubnBmc3AtPnVpZCA9IGN1cnJlbnQtPmZz dWlkOw0KIAkgICAgbm5wZnNwLT5naWQgPSBjdXJyZW50LT5mc2dpZDsNCisj ZWxzZQ0KKyAgICAgICAgICAgIG5ucGZzcC0+dWlkID0gY3VycmVudF9mc3Vp ZCgpOw0KKyAgICAgICAgICAgIG5ucGZzcC0+Z2lkID0gY3VycmVudF9mc2dp ZCgpOw0KKyNlbmRpZg0KIA0KIAkgICAgLyogWFhYIHdlIHNob3VsZCB2YWxp ZGF0ZSB0aGVzZSB2YWx1ZXMgKi8NCiAJICAgIG5ucGZzX2Jsb2Nrc2l6ZSA9 IGJsb2Nrc2l6ZTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19ub2RlLmMgYXJsYS0wLjkwL25ucGZzL2xp bnV4L25ucGZzX25vZGUuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGlu dXgvbm5wZnNfbm9kZS5jCTIwMDctMDEtMDMgMTQ6NTI6MDIuMDAwMDAwMDAw ICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX25vZGUu YwkyMDE2LTAxLTE0IDE2OjUxOjExLjAwMDAwMDAwMCArMDEwMA0KQEAgLTEz Miw3ICsxMzIsMTIgQEAgbm5wZnNfc2V0c2l6ZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCB1aW50Ng0KIAlwcmludGsoIm5ucGZzX3NldHNpemU6IHRydW5jYXRp bmcgQDB4JWxsdVxuIiwNCiAJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcp c2l6ZSk7DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsOCwwKQ0KIAl2bXRydW5jYXRlKGlub2RlLCBzaXpl KTsgLyogWFhYIHJldHZhbCAqLw0KKyNlbHNlDQorCWlmKCFpbm9kZV9uZXdz aXplX29rKGlub2RlLCBzaXplKSkNCisJICAgIHRydW5jYXRlX3NldHNpemUo aW5vZGUsIHNpemUpOw0KKyNlbmRpZg0KIAlubnBmc19ibG9ja190cnVuY2F0 ZSh4biwgc2l6ZSk7DQogICAgIH0NCiB9DQpAQCAtMTUwLDkgKzE1NSwxOCBA QCBubnBmc19hdHRyMmlub2RlKGNvbnN0IHN0cnVjdCBubnBmc19hdHRyDQog CXN0cnVjdCB0aW1lc3BlYyBub3RpbWUgPSB7MH07DQogDQogCWlub2RlLT5p X21vZGUgICA9IDA7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTQsMCkNCiAJaW5vZGUtPmlfdWlkICAgID0gMDsNCiAJ aW5vZGUtPmlfZ2lkICAgID0gMDsNCisjZWxzZQ0KKwlpbm9kZS0+aV91aWQg ICAgPSBLVUlEVF9JTklUKDApOw0KKwlpbm9kZS0+aV9naWQgICAgPSBLR0lE VF9JTklUKDApOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUtPmlfbmxpbmsgID0g MTsNCisjZWxzZQ0KKwlzZXRfbmxpbmsoaW5vZGUsIDEpOw0KKyNlbmRpZg0K IAlpbm9kZS0+aV9hdGltZSAgPSBub3RpbWU7DQogCWlub2RlLT5pX210aW1l ICA9IG5vdGltZTsNCiAJaW5vZGUtPmlfY3RpbWUgID0gbm90aW1lOw0KQEAg LTE2OSw3ICsxODMsMTEgQEAgbm5wZnNfYXR0cjJpbm9kZShjb25zdCBzdHJ1 Y3Qgbm5wZnNfYXR0cg0KICAgICBpZiAoWEFfVkFMSURfR0lEKGF0dHIpKQ0K IAlpbm9kZS0+aV9naWQgICAgPSBhdHRyLT54YV9naWQ7DQogICAgIGlmIChY QV9WQUxJRF9OTElOSyhhdHRyKSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywyLDApDQogCWlub2RlLT5pX25saW5rICA9 IGF0dHItPnhhX25saW5rOw0KKyNlbHNlDQorCXNldF9ubGluayhpbm9kZSwg YXR0ci0+eGFfbmxpbmspOw0KKyNlbmRpZg0KICAgICANCiAgICAgaWYgKFhB X1ZBTElEX1NJWkUoYXR0cikpIHsNCiAJbm5wZnNfc2V0c2l6ZShpbm9kZSwg YXR0ci0+eGFfc2l6ZSk7DQpAQCAtNTEwLDEyICs1MjgsMjQgQEAgbm5wZnNf aGFzX3BhZyhjb25zdCBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeA0KIGludA0KIG5u cGZzX25vZGVfdXNlcnMoc3RydWN0IGlub2RlICppbm9kZSkNCiB7DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7DQorI2Vsc2UNCisgICAgc3Ry dWN0IGhsaXN0X25vZGUgKnBvczsNCisjZW5kaWYNCiAgICAgaW50IHVzZXJz ID0gMDsNCiAgICAgDQogICAgIC8qIFhYWCB0aGlzIHNob3VsZCBwcm9iYWJs eSBiZSBwcm90ZWN0ZWQgc29tZWhvdyAqLw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgbGlzdF9mb3Jf ZWFjaChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZWxzZQ0KKyAgICBo bGlzdF9mb3JfZWFjaChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZW5k aWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxOSwwKQ0KIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBsaXN0X2VudHJ5 KHBvcywgc3RydWN0IGRlbnRyeSwgZF9hbGlhcyk7DQorI2Vsc2UNCisJc3Ry dWN0IGRlbnRyeSAqZGVudHJ5ID0gbGlzdF9lbnRyeShwb3MsIHN0cnVjdCBk ZW50cnksIGRfdS5kX2FsaWFzKTsNCisjZW5kaWYNCiAJaWYgKG5ucGZzX2Rj b3VudChkZW50cnkpID4gMSkNCiAJICAgIHVzZXJzKys7DQogICAgIH0NCmRp ZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9u bnBmc19zeXNjYWxscy5jIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19z eXNjYWxscy5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBm c19zeXNjYWxscy5jCTIwMDctMDEtMDMgMTU6MjY6MjcuMDAwMDAwMDAwICsw MTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxz LmMJMjAxNi0wMS0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAxMDANCkBAIC00 Miw3ICs0Miw5IEBADQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX3N5c2NhbGxz Lmg+DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2NvbW1vbi5oPg0KICNpbmNs dWRlIDxsaW51eC9maWxlLmg+DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAjaW5jbHVkZSA8bGludXgvc21w X2xvY2suaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8bGludXgvc21wLmg+DQog I2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCiANCkBAIC01MCw2ICs1Miwx MSBAQA0KICNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPg0KICNlbmRpZg0K IA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04o Myw3LDApDQorI3VuZGVmIFNZU0NBTExIQUNLDQorLyogdGhlIG1ldGhvZCB0 byByZWFkICdsb3dlcl9ib3VuZCcgZG9lcyBub3Qgd29yayBvbiBrZXJuZWwg My43IGFuZCBsYXRlciwgc2Ugbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jICov DQorI2VuZGlmDQorDQogI2lmIDANCiAjaWZkZWYgQ09ORklHX0NPTVBBVA0K ICNpbmNsdWRlIDxsaW51eC9pb2N0bDMyLmg+DQpAQCAtNjQsNyArNzEsNyBA QA0KICN1bmRlZiBORUVEX1ZJQ0VJT0NUTDMyDQogDQogI2lmZGVmIFJDU0lE DQotUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMuYyx2IDEuMTIyIDIwMDcv MDEvMDMgMTQ6MjY6MjcgdG9sIEV4cCAkIik7DQorUkNTSUQoIiRJZDogbm5w ZnNfc3lzY2FsbHMuYyx2IDEuMTI1IDIwMTAvMDgvMDggMjA6NDM6MDYgdG9s IEV4cCAkIik7DQogI2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBwcm9jX2Rp cl9lbnRyeSAqbm5wZnNfcHJvY2ZzX2RpcjsNCkBAIC04MiwxMiArODksMjIg QEAgdHlwZWRlZiBzdHJ1Y3QgYWZzcHJvY2RhdGEgew0KICAgICB1bnNpZ25l ZCBsb25nIHN5c2NhbGw7DQogfSBhZnNwcm9jZGF0YTsNCiANCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KIHN0 YXRpYyBpbnQNCiBubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsDQogCQkgICB1bnNpZ25lZCBpbnQg Y21kLCB1bnNpZ25lZCBsb25nIGFyZyk7DQorI2Vsc2UNCitzdGF0aWMgbG9u Zw0KK25ucGZzX3Byb2Nmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCisJ CSAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsNCisj ZW5kaWYNCiANCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBm c19wcm9jZnNfZm9wcyA9IHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KICAgICAuaW9jdGwgPSBubnBmc19w cm9jZnNfaW9jdGwsDQorI2Vsc2UNCisgICAgLnVubG9ja2VkX2lvY3RsID0g bm5wZnNfcHJvY2ZzX2lvY3RsLA0KKyNlbmRpZg0KIH07DQogDQogDQpAQCAt MTQ3LDUzICsxNjQsNDggQEAgc3RhdGljIGludCBubnBmc19zZWNfcmVnaXN0 ZXJlZCA9IDA7DQogI2RlZmluZSBTRUMyUEFHKHMpIChubnBmc19wYWdfdCko dW5zaWduZWQgbG9uZykocykNCiAjZGVmaW5lIFBBRzJTRUMocCkgKHZvaWQg KikodW5zaWduZWQgbG9uZykocCkNCiANCi1zdGF0aWMgaW50DQotbm5wZnNf c2VjX3Rhc2tfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQ0KLXsNCi0g ICAgbm5wZnNfcGFnX3QgcGFnID0gU0VDMlBBRyhjdXJyZW50LT5zZWN1cml0 eSk7DQotICAgIGlmIChwYWcpDQotCXAtPnNlY3VyaXR5ID0gUEFHMlNFQyhw YWcpOw0KLSAgICByZXR1cm4gMDsNCi19DQotDQotc3RhdGljIHZvaWQNCi1u bnBmc19zZWNfdGFza19mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCi17 DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IFNFQzJQQUcocC0+c2VjdXJpdHkp Ow0KLSAgICBpZiAocGFnKQ0KLQlwLT5zZWN1cml0eSA9IE5VTEw7DQotfQ0K LQ0KIHN0YXRpYyBubnBmc19wYWdfdA0KIG5ucGZzX2dldF9wYWdfc2VjKHZv aWQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZF UlNJT04oMiw2LDI4KQ0KICAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFH KGN1cnJlbnQtPnNlY3VyaXR5KTsNCisjZWxzZQ0KKyAgICBubnBmc19wYWdf dCBwYWcgPSBTRUMyUEFHKGN1cnJlbnRfc2VjdXJpdHkoKSk7DQorI2VuZGlm DQogICAgIGlmIChwYWcpDQogCXJldHVybiBwYWc7DQogDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAg IHJldHVybiBjdXJyZW50LT51aWQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KKyAgICByZXR1cm4gY3Vy cmVudF91aWQoKTsNCisjZWxzZQ0KKyAgICB7IGt1aWRfdCBrdWlkID0gY3Vy cmVudF91aWQoKTsgcmV0dXJuIGt1aWQudmFsOyB9DQorI2VuZGlmDQogfQ0K IA0KIHN0YXRpYyBpbnQNCiBubnBmc19zZXRfcGFnX3NlYyh2b2lkKQ0KIHsN CiAgICAgc3RhdGljIG5ucGZzX3BhZ190IHBhZ251bSA9IE5OUEZTX1BBR19M TElNOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI5KQ0KKyAgICBzdHJ1Y3QgY3JlZCAqY3JlZDsNCisjZW5kaWYN CiANCiAgICAgaWYgKHBhZ251bSA9PSBOTlBGU19QQUdfVUxJTSkNCiAJcmV0 dXJuIC1FTk9NRU07DQogICAgIC8qIHBhZ251bSA9IE5OUEZTX1BBR19MTElN OyAqLw0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgY3VycmVudC0+c2VjdXJpdHkgPSBQ QUcyU0VDKHBhZ251bSk7DQorI2Vsc2UNCisgICAgY3JlZCA9IChzdHJ1Y3Qg Y3JlZCAqKSBjdXJyZW50LT5jcmVkOw0KKyAgICBjcmVkLT5zZWN1cml0eSA9 IFBBRzJTRUMocGFnbnVtKTsNCisjZW5kaWYNCiAgICAgcGFnbnVtKys7DQog ICAgIHJldHVybiAwOw0KIH0NCiANCi1zdGF0aWMgc3RydWN0IHNlY3VyaXR5 X29wZXJhdGlvbnMgbm5wZnNfc2VjX29wcyA9IHsNCi0gICAgLnRhc2tfYWxs b2Nfc2VjdXJpdHkgPSBubnBmc19zZWNfdGFza19hbGxvYywNCi0gICAgLnRh c2tfZnJlZV9zZWN1cml0eSA9IG5ucGZzX3NlY190YXNrX2ZyZWUsDQotLy8g ICAgLnRhc2tfcmVwYXJlbnRfdG9faW5pdCA9IG5ucGZzX3NlY19yZXBhcmVu dF90b19pbml0LA0KLX07DQotDQogI2VuZGlmIC8qIENPTkZJR19TRUNVUklU WSAqLw0KIA0KICNpZmRlZiBHUk9VUFBBR1MNCkBAIC0yMDYsNyArMjE4LDEy IEBAIGZpbmRfcGFnKHN0cnVjdCBncm91cF9pbmZvICpnaSkNCiAgICAgTk5Q RlNERUIoWERFQlNZUywgKCJmaW5kX3BhZzogbmdyb3VwcyA9ICVkXG4iLCBn aS0+bmdyb3VwcykpOw0KIA0KICAgICBmb3IgKGkgPSBnaS0+bmdyb3VwcyAt IDE7IGkgPj0gMDsgaS0tKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJZ2lkX3QgZ3JvdXAgPSBHUk9V UF9BVChnaSwgaSk7DQorI2Vsc2UNCisJa2dpZF90IGtncm91cCA9IEdST1VQ X0FUKGdpLCBpKTsNCisJZ2lkX3QgZ3JvdXAgPSBrZ3JvdXAudmFsOw0KKyNl bmRpZg0KIAlpZiAoKG5ucGZzX3BhZ190KWdyb3VwID49IE5OUEZTX1BBR19M TElNICYmIChubnBmc19wYWdfdClncm91cCA8IE5OUEZTX1BBR19VTElNKSB7 DQogCSAgICBOTlBGU0RFQihYREVCU1lTLA0KIAkJICAgICAoImZpbmRfcGFn OiBFeGlzdGluZyBwYWcgJXUgYXQgcG9zICV1XG4iLCBncm91cCwgaSkpOw0K QEAgLTIyMiwxNSArMjM5LDMxIEBAIGZpbmRfcGFnKHN0cnVjdCBncm91cF9p bmZvICpnaSkNCiBzdGF0aWMgbm5wZnNfcGFnX3QNCiBubnBmc19nZXRfcGFn X2dyb3VwKHZvaWQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0g S0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBzdHJ1Y3QgZ3JvdXBfaW5m byAqZ2kgPSBjdXJyZW50LT5ncm91cF9pbmZvOw0KICAgICBubnBmc19wYWdf dCByZXQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgc3RydWN0IGdy b3VwX2luZm8gKmdpID0gZ2V0X2N1cnJlbnRfZ3JvdXBzKCk7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisg ICAgbm5wZnNfcGFnX3QgcmV0ID0gY3VycmVudF91aWQoKTsNCisjZWxzZQ0K KyAgICBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7DQorICAgIG5ucGZz X3BhZ190IHJldCA9IGt1aWQudmFsOw0KKyNlbmRpZg0KKyNlbmRpZg0KICAg ICBpbnQgaTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgZ2V0X2dyb3VwX2luZm8oZ2kpOw0K KyNlbmRpZg0KIA0KICAgICBpID0gZmluZF9wYWcoZ2kpOw0KICAgICBpZiAo aSAhPSBOTlBGU19QQUdfTk9URk9VTkQpDQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJcmV0ID0gR1JPVVBf QVQoZ2ksIGkpOw0KKyNlbHNlDQorCXsga2dpZF90IGtnaWQgPSBHUk9VUF9B VChnaSwgaSk7IHJldCA9IGtnaWQudmFsOyB9DQorI2VuZGlmDQogDQogICAg IHB1dF9ncm91cF9pbmZvKGdpKTsNCiANCkBAIC0yNDIsMTMgKzI3NSwxOSBA QCBubnBmc19nZXRfcGFnX2dyb3VwKHZvaWQpDQogc3RhdGljIGludA0KIHN0 b3JlX3BhZyhubnBmc19wYWdfdCBwYWdudW0pDQogew0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBz dHJ1Y3QgZ3JvdXBfaW5mbyAqb2xkX2dpID0gY3VycmVudC0+Z3JvdXBfaW5m bzsNCisjZWxzZQ0KKyAgIHN0cnVjdCBncm91cF9pbmZvICpvbGRfZ2kgPSBn ZXRfY3VycmVudF9ncm91cHMoKTsNCisjZW5kaWYNCiAgICAgc3RydWN0IGdy b3VwX2luZm8gKm5ld19naTsNCi0gICAgaW50IG5ibG9ja3MsIGNvdW50Ow0K KyAgICB1bnNpZ25lZCBpbnQgbmJsb2NrcywgY291bnQ7DQogICAgIGludCBm b3VuZCA9IDA7DQogICAgIGludCBpLCBrOw0KICAgICANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkgICAgDQog ICAgIGdldF9ncm91cF9pbmZvKG9sZF9naSk7DQorI2VuZGlmDQogDQogICAg IGkgPSBmaW5kX3BhZyhvbGRfZ2kpOw0KICAgICBpZiAoaSAhPSBOTlBGU19Q QUdfTk9URk9VTkQpDQpAQCAtMjc0LDEwICszMTMsMTcgQEAgc3RvcmVfcGFn KG5ucGZzX3BhZ190IHBhZ251bSkNCiAJY291bnQgLT0gTkdST1VQU19QRVJf QkxPQ0s7DQogICAgIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KICAgICBpZiAoZm91bmQpDQogCUdS T1VQX0FUKG5ld19naSwgaSkgPSBwYWdudW07DQogICAgIGVsc2UNCiAJR1JP VVBfQVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91cHMgLSAxKSA9IHBhZ251bTsN CisjZWxzZQ0KKyAgICBpZiAoZm91bmQpDQorCXsga2dpZF90IGtnaWQgPSBL R0lEVF9JTklUKHBhZ251bSk7IEdST1VQX0FUKG5ld19naSwgaSkgPSBrZ2lk OyB9DQorICAgIGVsc2UNCisJeyBrZ2lkX3Qga2dpZCA9IEtHSURUX0lOSVQo cGFnbnVtKTsgR1JPVVBfQVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91cHMgLSAx KSA9IGtnaWQ7IH0NCisjZW5kaWYNCiAgICAgDQogICAgIHNldF9jdXJyZW50 X2dyb3VwcyhuZXdfZ2kpOw0KICAgICBwdXRfZ3JvdXBfaW5mbyhuZXdfZ2kp Ow0KQEAgLTMxNyw3ICszNjMsMTMgQEAgbm5wZnNfZ2V0X3BhZygpDQogICAg IHJldHVybiBubnBmc19nZXRfcGFnX2dyb3VwKCk7DQogI2VuZGlmIC8qIEdS T1VQUEFHUyAqLw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VS TkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICByZXR1cm4gY3VycmVudC0+dWlk Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsMTQsMCkNCisgICAgcmV0dXJuIGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UN CisgICAgeyBrdWlkX3Qga3VpZCA9IGN1cnJlbnRfdWlkKCk7IHJldHVybiBr dWlkLnZhbDsgfQ0KKyNlbmRpZg0KIH0NCiANCiBzdGF0aWMgaW5saW5lIGlu dA0KQEAgLTQyMiw3ICs0NzQsNyBAQCBubnBmc19zZXRncm91cHMxNiAoaW50 IGdpZHNldHNpemUsIG9sZF9nDQogI2VuZGlmIC8qIFNZU0NBTExIQUNLICov DQogI2VuZGlmIC8qIEdST1VQUEFHUyAqLw0KIA0KLXN0cnVjdCBmaWxlX2hh bmRsZSB7DQorc3RydWN0IG5ucGZzX2ZpbGVfaGFuZGxlIHsNCiAgICAgbm5w ZnNfZGV2X3QgZGV2Ow0KICAgICBpbm9fdCBpbm9kZTsNCiAgICAgX191MzIg Z2VuOw0KQEAgLTUwOSwxNCArNTYxLDI3IEBAIG5ucGZzX2RlYnVnX3ByaW50 IChzdHJ1Y3QgYXJsYVZpY2VJb2N0bCANCiAgKiBmb2xsb3cgc3ltbGlua3Mg aWZmIGBmb2xsb3cnDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiBzdGF0aWMgc3RydWN0IGRl bnRyeSAqDQogdXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAq bmQsIGNoYXIgKnVzZXJfcGF0aCwgaW50IGZvbGxvdykNCisjZWxzZQ0KK3N0 YXRpYyBzdHJ1Y3QgZGVudHJ5ICoNCit1c2VyX3BhdGgyZGVudHJ5IChzdHJ1 Y3QgcGF0aCAqcGF0aCwgY2hhciAqdXNlcl9wYXRoLCBpbnQgZm9sbG93KQ0K KyNlbmRpZg0KIHsNCi0gICAgY2hhciAqa25hbWU7DQogICAgIGludCBmbGFn cyA9IDA7DQogICAgIGludCBlcnJvciA9IDA7DQogDQotICAgIGtuYW1lID0g Z2V0bmFtZSAodXNlcl9wYXRoKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApDQorICAgIGNoYXIgKmtuYW1lOw0K KyAgICBrbmFtZSA9IGdldG5hbWUodXNlcl9wYXRoKTsNCisjZWxzZQ0KKyAg ICBjb25zdCBjaGFyICprbmFtZTsNCisgICAgc3RydWN0IGZpbGVuYW1lICpm bmFtZTsNCisgICAgZm5hbWUgPSBnZXRuYW1lKHVzZXJfcGF0aCk7DQorICAg IGtuYW1lID0gZm5hbWUtPm5hbWU7DQorI2VuZGlmDQorDQogICAgIGlmIChJ U19FUlIoa25hbWUpKQ0KIAlyZXR1cm4gRVJSX1BUUihQVFJfRVJSKGtuYW1l KSk7DQogICAgIGlmIChmb2xsb3cpDQpAQCAtNTI0LDExICs1ODksMjUgQEAg dXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAqbmQsIA0KIA0K ICAgICBOTlBGU0RFQihYREVCTVNHLCAoIm5ucGZzX3N5c2NhbGw6IGxvb2tp bmcgdXA6ICVzXG4iLCBrbmFtZSkpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogICAgIGVycm9yID0g cGF0aF9sb29rdXAoa25hbWUsIGZsYWdzLCBuZCk7DQorI2VsaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBl cnJvciA9IGtlcm5fcGF0aChrbmFtZSwgZmxhZ3MsICYobmQtPnBhdGgpKTsN CisjZWxzZQ0KKyAgICBlcnJvciA9IGtlcm5fcGF0aChrbmFtZSwgZmxhZ3Ms IHBhdGgpOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDcsMCkNCiAgICAgcHV0bmFtZShrbmFtZSk7DQor I2Vsc2UNCisgICAga21lbV9jYWNoZV9mcmVlKG5hbWVzX2NhY2hlcCwgKHZv aWQgKilrbmFtZSk7DQorI2VuZGlmDQogICAgIGlmIChlcnJvcikNCiAJcmV0 dXJuIEVSUl9QVFIoZXJyb3IpOw0KLSAgICByZXR1cm4gbmQtPmRlbnRyeTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx OSwwKQ0KKyAgICByZXR1cm4gbmQtPnBhdGguZGVudHJ5Ow0KKyNlbHNlDQor ICAgIHJldHVybiBwYXRoLT5kZW50cnk7DQorI2VuZGlmDQogfQ0KIA0KIGFz bWxpbmthZ2UgbG9uZw0KQEAgLTU0MCwxMiArNjE5LDI0IEBAIHN5c19hZnNf aW50IChpbnQgb3BlcmF0aW9uLA0KIHsNCiAgICAgbG9uZyBlcnJvciA9IDA7 DQogICAgIHN0cnVjdCBhcmxhVmljZUlvY3RsIHZpY2VfaW9jdGw7IA0KLSAg ICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9waW9jdGwgbXNnOw0KKyAgICBzdHJ1 Y3Qgbm5wZnNfbWVzc2FnZV9waW9jdGwgKm1zZyA9IE5VTEw7DQogICAgIHN0 cnVjdCBubnBmc19tZXNzYWdlX3dha2V1cCAqbXNnMjsNCiAgICAgc3RydWN0 IGRlbnRyeSAqZGVudHJ5ID0gTlVMTDsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3QgbmFt ZWlkYXRhIG5kOw0KKyNlbHNlDQorICAgIHN0cnVjdCBwYXRoIHBhdGg7DQor I2VuZGlmDQogICAgIA0KKyAgICBtc2cgPSBrbWFsbG9jKHNpemVvZigqbXNn KSwgR0ZQX0tFUk5FTCk7DQorICAgIGlmIChtc2cgPT0gTlVMTCkNCisgICAg ICByZXR1cm4gLUVOT01FTTsNCisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KICAgICBsb2NrX2tlcm5lbCgp Ow0KKyNlbHNlDQorICAgIC8qIFRPRE86IGxvY2tfa2VybmVsKCkgaXMgcmVt b3ZlZCwgY29uc2lkZXIgYWRkaW5nIGFuIHByaXZhdGUgbG9jayAqLw0KKyNl bmRpZg0KIA0KICAgICBOTlBGU0RFQihYREVCU1lTLCAoInN5c19hZnMga2Vy bmVsIGxvY2tlZFxuIikpOw0KIA0KQEAgLTU3NSw3ICs2NjYsNyBAQCBzeXNf YWZzX2ludCAoaW50IG9wZXJhdGlvbiwNCiAJICAgIGdvdG8gdW5sb2NrOw0K IAl9DQogCWlmICh2aWNlX2lvY3RsLmluX3NpemUgIT0gMCkgew0KLQkgICAg aWYoY29weV9mcm9tX3VzZXIoJm1zZy5tc2csDQorCSAgICBpZihjb3B5X2Zy b21fdXNlcigmbXNnLT5tc2csDQogCQkJICAgICAgdmljZV9pb2N0bC5pbiwN CiAJCQkgICAgICB2aWNlX2lvY3RsLmluX3NpemUpICE9IDApIHsNCiAJCWVy cm9yID0gLUVGQVVMVDsNCkBAIC01ODMsNyArNjc0LDExIEBAIHN5c19hZnNf aW50IChpbnQgb3BlcmF0aW9uLA0KIAkgICAgfQ0KIAl9DQogCWlmIChhX3Bh dGhQICE9IE5VTEwpIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxOSwwKQ0KIAkgICAgZGVudHJ5ID0gdXNlcl9wYXRo MmRlbnRyeSAoJm5kLCBhX3BhdGhQLCBhX2ZvbGxvd1N5bWxpbmtzKTsNCisj ZWxzZQ0KKwkgICAgZGVudHJ5ID0gdXNlcl9wYXRoMmRlbnRyeSAoJnBhdGgs IGFfcGF0aFAsIGFfZm9sbG93U3ltbGlua3MpOw0KKyNlbmRpZg0KIAkgICAg aWYgKCFkZW50cnkpIHsNCiAJCWVycm9yID0gLUVJTlZBTDsNCiAJCWdvdG8g dW5sb2NrOw0KQEAgLTYyOCwxOSArNzIzLDIzIEBAIHN5c19hZnNfaW50IChp bnQgb3BlcmF0aW9uLA0KIAkJZXJyb3IgPSAtRUlOVkFMOw0KIAkJZ290byB1 bmxvY2s7DQogCSAgICB9DQotCSAgICBtc2cuaGFuZGxlID0geG4tPmhhbmRs ZTsNCisJICAgIG1zZy0+aGFuZGxlID0geG4tPmhhbmRsZTsNCiAJfQ0KIA0K LQltc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QSU9DVEw7DQotCW1z Zy5vcGNvZGUgPSBhX29wY29kZTsNCisJbXNnLT5oZWFkZXIub3Bjb2RlID0g Tk5QRlNfTVNHX1BJT0NUTDsNCisJbXNnLT5vcGNvZGUgPSBhX29wY29kZTsN CiAJDQotCW1zZy5pbnNpemUgICA9IHZpY2VfaW9jdGwuaW5fc2l6ZTsNCi0J bXNnLm91dHNpemUgID0gdmljZV9pb2N0bC5vdXRfc2l6ZTsNCi0JbXNnLmNy ZWQudWlkID0gY3VycmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQorCW1zZy0+aW5zaXplICAgPSB2aWNlX2lvY3RsLmlu X3NpemU7DQorCW1zZy0+b3V0c2l6ZSAgPSB2aWNlX2lvY3RsLm91dF9zaXpl Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04o Miw2LDI4KQ0KKwltc2ctPmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNl bHNlDQorICAgICAgICBtc2ctPmNyZWQudWlkID0gY3VycmVudF91aWQoKTsN CisjZW5kaWYNCisJbXNnLT5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsN CiAJDQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMoJm5ucGZzWzBdLCAm bXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOyAvKiBYWFggKi8NCi0JbXNnMiA9 IChzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAgKikgJm1zZzsNCisJZXJy b3IgPSBubnBmc19tZXNzYWdlX3JwYygmbm5wZnNbMF0sICZtc2ctPmhlYWRl ciwgc2l6ZW9mKCptc2cpKTsgLyogWFhYICovDQorCW1zZzIgPSAoc3RydWN0 IG5ucGZzX21lc3NhZ2Vfd2FrZXVwICopIG1zZzsNCiAJaWYgKGVycm9yID09 IDApDQogCSAgICBlcnJvciA9IG1zZzItPmVycm9yOw0KIA0KQEAgLTY3NSwx MiArNzc0LDIxIEBAIHN5c19hZnNfaW50IChpbnQgb3BlcmF0aW9uLA0KICAg ICANCiAgdW5sb2NrOg0KICAgICBpZiAoZGVudHJ5KQ0KLQlwYXRoX3JlbGVh c2UoJm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxOSwwKQ0KKwlwYXRoX3B1dCgmbmQucGF0aCk7DQorI2Vsc2UN CisJcGF0aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIA0KICAgICBOTlBGU0RF QihYREVCU1lTLCAoIm5ucGZzX3N5c2NhbGwgcmV0dXJucyBlcnJvcjogJWxk XG4iLCBlcnJvcikpOw0KIA0KICAgICBOTlBGU0RFQihYREVCU1lTLCAoInN5 c19hZnMga2VybmVsIHVubG9ja1xuIikpOw0KKyAgICBrZnJlZShtc2cpOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogICAgIHVubG9ja19rZXJuZWwoKTsNCisjZWxzZQ0KKyAgICAvKiBU T0RPOiBzZWUgdGhlIGNvbW1lbnQgYXQgbG9ja19rZXJuZWwoKSBhYm92ZSAq Lw0KKyNlbmRpZg0KIA0KICAgICByZXR1cm4gZXJyb3I7DQogfQ0KQEAgLTcy OSw5ICs4MzcsMTUgQEAgc3lzX2FmcyAoaW50IG9wZXJhdGlvbiwNCiAJCSAg ICAgICBhX2ZvbGxvd1N5bWxpbmtzKTsNCiB9DQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiBzdGF0aWMg aW50DQogbm5wZnNfcHJvY2ZzX2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmaWxlICpmaWxlLA0KIAkJICAgdW5zaWduZWQgaW50IGNtZCwg dW5zaWduZWQgbG9uZyBhcmcpDQorI2Vsc2UNCitzdGF0aWMgbG9uZw0KK25u cGZzX3Byb2Nmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCisJCSAgIHVu c2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQ0KKyNlbmRpZg0K IHsNCiAgICAgYWZzcHJvY2RhdGEgYXJnczsNCiAgICAgbG9uZyByZXQ7DQpA QCAtNzgwLDIxICs4OTQsMzEgQEAgc3RhdGljIGludCBubnBmc19pbml0X3By b2Nmcyh2b2lkKQ0KIHsNCiAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpl bnRyeTsNCiAgICAgDQotICAgIG5ucGZzX3Byb2Nmc19kaXIgPSBwcm9jX21r ZGlyKE5OUEZTX1BST0NfRElSLCBwcm9jX3Jvb3RfZnMpOw0KKyAgICBubnBm c19wcm9jZnNfZGlyID0gcHJvY19ta2RpcigiZnMvIiBOTlBGU19QUk9DX0RJ UiwgTlVMTCk7DQogICAgIGlmIChubnBmc19wcm9jZnNfZGlyID09IE5VTEwp DQogCXJldHVybiAtRU5PTUVNOw0KICAgICANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDMwKQ0KICAgICBubnBmc19w cm9jZnNfZGlyLT5vd25lciA9IFRISVNfTU9EVUxFOw0KKyNlbmRpZg0KICAg ICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxMCwwKQ0KICAgICBlbnRyeSA9IGNyZWF0ZV9wcm9jX2VudHJ5KE5OUEZT X1BST0NfTk9ERSwgMDY2Niwgbm5wZnNfcHJvY2ZzX2Rpcik7DQorI2Vsc2UN CisgICAgZW50cnkgPSBwcm9jX2NyZWF0ZShOTlBGU19QUk9DX05PREUsIDA2 NjYsIE5VTEwsICZubnBmc19wcm9jZnNfZm9wcyk7DQorI2VuZGlmDQogICAg IGlmIChlbnRyeSA9PSBOVUxMKSB7DQogCU5OUEZTREVCKFhERUJTWVMsICgi bm5wZnNfaW5pdF9wcm9jZnM6IG5vIG5vZGVcbiIpKTsNCi0JcmVtb3ZlX3By b2NfZW50cnkoTk5QRlNfUFJPQ19ESVIsIHByb2Nfcm9vdF9mcyk7DQorCXJl bW92ZV9wcm9jX2VudHJ5KCJmcy8iIE5OUEZTX1BST0NfRElSLCBOVUxMKTsN CiAJcmV0dXJuIC1FTk9NRU07DQogICAgIH0NCiAgICAgDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzMCkNCiAgICAg ZW50cnktPm93bmVyID0gVEhJU19NT0RVTEU7DQorI2VuZGlmDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTAsMCkNCiAg ICAgZW50cnktPnByb2NfZm9wcyA9ICZubnBmc19wcm9jZnNfZm9wczsNCisj ZW5kaWYNCiANCiAjaWZkZWYgU1lTQ0FMTENPTVBBVA0KICAgICBpZiAocmVn aXN0ZXJfaW9jdGwzMl9jb252ZXJzaW9uKEFSTEFfVklPQ19TWVNDQUxMMzIs IG5ucGZzX3Byb2Nmc19pb2N0bDMyKSkgew0KQEAgLTgxNSw3ICs5MzksNyBA QCBzdGF0aWMgdm9pZCBubnBmc19leGl0X3Byb2Nmcyh2b2lkKQ0KICAgICB9 DQogI2VuZGlmIC8qIFNZU0NBTExDT01QQVQgKi8NCiAgICAgcmVtb3ZlX3By b2NfZW50cnkoTk5QRlNfUFJPQ19OT0RFLCBubnBmc19wcm9jZnNfZGlyKTsN Ci0gICAgcmVtb3ZlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19ESVIsIHByb2Nf cm9vdF9mcyk7DQorICAgIHJlbW92ZV9wcm9jX2VudHJ5KCJmcy8iIE5OUEZT X1BST0NfRElSLCBOVUxMKTsNCiB9DQogDQogI2lmZGVmIEdST1VQUEFHUw0K QEAgLTgzOSwxNCArOTYzLDYgQEAgaW5zdGFsbF9zZXRncm91cHModm9pZCkN CiB2b2lkDQogaW5zdGFsbF9hZnNfc3lzY2FsbCh2b2lkKQ0KIHsNCi0jaWZk ZWYgQ09ORklHX1NFQ1VSSVRZDQotICAgIGlmIChyZWdpc3Rlcl9zZWN1cml0 eSgmbm5wZnNfc2VjX29wcykpDQotCU5OUEZTREVCKFhERUJTWVMsDQotCQkg KCJpbnN0YWxsX2Fmc19zeXNjYWxsOiBubnBmc19pbml0X3NlYyBmYWlsZWRc biIpKTsNCi0gICAgZWxzZQ0KLQlubnBmc19zZWNfcmVnaXN0ZXJlZCA9IDE7 DQotI2VuZGlmDQotDQogICAgIG5ucGZzX2luaXRfcHJvY2ZzKCk7DQogDQog I2lmZGVmIFNZU0NBTExIQUNLDQpAQCAtODg3LDEyICsxMDAzLDYgQEAgcmVz dG9yZV9hZnNfc3lzY2FsbCAodm9pZCkNCiAjZW5kaWYNCiAjZW5kaWYgLyog U1lTQ0FMTEhBQ0sgKi8NCiANCi0jaWZkZWYgQ09ORklHX1NFQ1VSSVRZDQot ICAgIGlmIChubnBmc19zZWNfcmVnaXN0ZXJlZCkNCi0JaWYgKHVucmVnaXN0 ZXJfc2VjdXJpdHkoJm5ucGZzX3NlY19vcHMpKQ0KLQkgICAgcHJpbnRrKEtF Uk5fRU1FUkcgIm5ucGZzX2V4aXRfc2VjOiBjb3VsZG4ndCB1bnJlZ2lzdGVy XG4iKTsNCi0jZW5kaWYgLyogIUNPTkZJR19TRUNVUklUWSAqLw0KLQ0KICNp ZmRlZiBHUk9VUFBBR1MNCiAjaWZkZWYgU1lTQ0FMTEhBQ0sNCiAgICAgaWYg KG9sZF9zZXRncm91cHMpIHsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0w LjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdlLmMg YXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2Uu Yw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfc3lzY2Fs bHMtbG9zc2FnZS5jCTIwMDYtMTItMTEgMTc6MzE6NDUuMDAwMDAwMDAwICsw MTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxz LWxvc3NhZ2UuYwkyMDE2LTAxLTEzIDIxOjUxOjQ5LjAwMDAwMDAwMCArMDEw MA0KQEAgLTQ3LDExICs0NywyMCBAQA0KICNpbmNsdWRlIDxsaW51eC91bmlz dGQuaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBubnBmc19z eXNjYWxscy1sb3NzYWdlLmMsdiAxLjE3IDIwMDYvMTIvMTEgMTY6MzE6NDUg dG9sIEV4cCAkIik7DQorUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMtbG9z c2FnZS5jLHYgMS4xOSAyMDEwLzA4LzA4IDIwOjQzOjA1IHRvbCBFeHAgJCIp Ow0KKyNlbmRpZg0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VS TkVMX1ZFUlNJT04oMyw3LDApDQorLyogdGhlIG1ldGhvZCB0byByZWFkICds b3dlcl9ib3VuZCcgZG9lcyBub3Qgd29yayBvbiBrZXJuZWwgMy43IGFuZCBs YXRlciAqLw0KKyN1bmRlZiBTWVNDQUxMSEFDSw0KICNlbmRpZg0KIA0KICNp bmNsdWRlIDxsaW51eC9rYWxsc3ltcy5oPg0KKyNpZmRlZiBTWVNDQUxMSEFD Sw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDcsMCkNCiBzdGF0aWMgdm9pZCAqbG93ZXJfYm91bmQgPSAma2VybmVsX3Ro cmVhZDsNCisjZW5kaWYNCisjZW5kaWYNCiANCiB2b2lkICogX19hdHRyaWJ1 dGVfXygod2VhaykpIHN5c19jYWxsX3RhYmxlKHZvaWQpOw0KIG5ucGZzX3N5 c19jYWxsX2Z1bmN0aW9uICpubnBmc19zeXNfY2FsbF90YWJsZSA9DQpAQCAt NjMsNiArNzIsMTEgQEAgY29uc3QgY2hhciAqIF9fYXR0cmlidXRlX18oKHdl YWspKQ0KIAkJICAgIHVuc2lnbmVkIGxvbmcgKm9mZnNldCwNCiAJCSAgICBj aGFyICoqbW9kbmFtZSwgY2hhciAqbmFtZWJ1Zik7DQogDQorI2lmZGVmIF9f eDg2XzY0X18NCitleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9jayBfX2F0 dHJpYnV0ZV9fKCh3ZWFrKSk7DQorI2VuZGlmDQorDQorI2lmZGVmIFNZU0NB TExIQUNLDQogc3RhdGljIHZvaWQgKioNCiBnZXRfc3RhcnRfYWRkcih2b2lk KSB7DQogI2lmZGVmIF9feDg2XzY0X18NCkBAIC03MSw2ICs4NSw3IEBAIGdl dF9zdGFydF9hZGRyKHZvaWQpIHsNCiAgICAgcmV0dXJuICh2b2lkICoqKSZt dXRleF9sb2NrOw0KICNlbmRpZg0KIH0NCisjZW5kaWYNCiANCiBzdGF0aWMg aW5saW5lIGludCANCiBrYWxsc3ltX2lzX2VxdWFsKHVuc2lnbmVkIGxvbmcg YWRkciwgY29uc3QgY2hhciAqbmFtZSkNCkBAIC0xMzksNiArMTU0LDggQEAg dmVyaWZ5KHZvaWQgKipwKSB7DQogICAgIHJldHVybiAxOw0KIH0NCiANCisj aWZkZWYgU1lTQ0FMTEhBQ0sNCisNCiBzdGF0aWMgaW5saW5lIGludCBsb29r c19nb29kKHZvaWQgKipwKQ0KIHsNCiAgICAgaWYgKCpwIDw9ICh2b2lkKils b3dlcl9ib3VuZCB8fCAqcCA+PSAodm9pZCopcCkNCkBAIC0xODgsMyArMjA1 LDUgQEAgbm5wZnNfZml4dXBfc3lzY2FsbF9sb3NzYWdlKHZvaWQpDQogDQog ICAgIHJldHVybiAwOw0KIH0NCisNCisjZW5kaWYNCmRpZmYgLXVwck4gLVhu b2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc192ZnNvcHMu YyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfdmZzb3BzLmMNCi0tLSBh cmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMDYt MTItMTEgMTc6NDM6MzUuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMTYtMDEtMTQgMTc6MTM6 MTguMDAwMDAwMDAwICswMTAwDQpAQCAtNDQsMzAgKzQ0LDI2IEBADQogI2lu Y2x1ZGUgPGxpbnV4L21tLmg+DQogDQogI2lmZGVmIFJDU0lEDQotUkNTSUQo IiRJZDogbm5wZnNfdmZzb3BzLmMsdiAxLjEwOSAyMDA2LzEyLzExIDE2OjQz OjM1IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX3Zmc29wcy5j LHYgMS4xMTEgMjAxMC8wOC8wOCAyMDo0MzowNiB0b2wgRXhwICQiKTsNCiAj ZW5kaWYNCiANCiBzdHJ1Y3Qgbm5wZnMgbm5wZnNbTk5OUEZTXTsNCiANCi1z dGF0aWMgdm9pZCBubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5v ZGUpOw0KIHN0YXRpYyB2b2lkIG5ucGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKTsNCi1zdGF0aWMgdm9pZCBubnBmc19wdXRfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lkIG5ucGZz X3dyaXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKTsNCisjZW5k aWYNCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50IG5ucGZzX3N0YXRmcyhzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpOw0KLSNlbHNl DQotc3RhdGljIGludCBubnBmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7DQotI2VuZGlmDQogDQogc3Rh dGljIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIG5ucGZzX3NvcHMgPSB7IA0K LSAgICByZWFkX2lub2RlCQk6IG5ucGZzX3JlYWRfaW5vZGUsDQotICAgIHB1 dF9pbm9kZQkJOiBubnBmc19wdXRfaW5vZGUsDQogICAgIGFsbG9jX2lub2Rl CQk6IG5ucGZzX25vZGVfYWxsb2MsDQogICAgIGRlc3Ryb3lfaW5vZGUJOiBu bnBmc19ub2RlX2ZyZWUsDQogICAgIGRyb3BfaW5vZGUJCTogZ2VuZXJpY19k ZWxldGVfaW5vZGUsDQogICAgIHB1dF9zdXBlcgkJOiBubnBmc19wdXRfc3Vw ZXIsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsNiwwKQ0KICAgICB3cml0ZV9zdXBlcgkJOiBubnBmc193cml0ZV9zdXBl ciwNCisjZW5kaWYNCiAgICAgc3RhdGZzCQk6IG5ucGZzX3N0YXRmcywNCiB9 Ow0KIA0KQEAgLTk0LDcgKzkwLDExIEBAIG5ucGZzX2ZldGNoX3Jvb3Qoc3Ry dWN0IGlub2RlICppKQ0KIAkgKiByb290J3MgcHJpdmlsaWdlcyAodXN1YWxs eSBub25lLCBhbmQgbm9uZSBpcyBuZWVkZWQpLg0KIAkgKi8NCiAJDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkN CiAJbXNnLmNyZWQudWlkID0gMDsNCisjZWxzZQ0KKwltc2cuY3JlZC51aWQg PSBLVUlEVF9JTklUKDApOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSAw Ow0KIAkNCiAJZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZt c2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtMTI5LDggKzEyOSwxMyBA QCBtYWtlX3Jvb3RfaW5vZGUoc3RydWN0IG5ucGZzICpubnBmc3ApDQogICAg IFhBX1NFVF9NT0RFKCZub2RlLmF0dHIsIFNfSUZESVIgfCAwNzc3KTsNCiAg ICAgWEFfU0VUX05MSU5LKCZub2RlLmF0dHIsIDEwMCk7DQogICAgIFhBX1NF VF9TSVpFKCZub2RlLmF0dHIsIDApOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogICAgIFhBX1NFVF9VSUQo Jm5vZGUuYXR0ciwgMCk7DQogICAgIFhBX1NFVF9HSUQoJm5vZGUuYXR0ciwg MCk7DQorI2Vsc2UNCisgICAgWEFfU0VUX1VJRCgmbm9kZS5hdHRyLCBLVUlE VF9JTklUKDApKTsNCisgICAgWEFfU0VUX0dJRCgmbm9kZS5hdHRyLCBLR0lE VF9JTklUKDApKTsNCisjZW5kaWYNCiAgICAgWEFfU0VUX0FUSU1FKCZub2Rl LmF0dHIsIDApOw0KICAgICBYQV9TRVRfTVRJTUUoJm5vZGUuYXR0ciwgMCk7 DQogICAgIFhBX1NFVF9DVElNRSgmbm9kZS5hdHRyLCAwKTsNCkBAIC0xNTks NyArMTY0LDExIEBAIG1ha2Vfcm9vdCAoc3RydWN0IHN1cGVyX2Jsb2NrICpz YikNCiAgICAgbm5wZnMtPnJvb3QgPSBpbm9kZTsNCiANCiAgICAgLyogWFhY IGVycm9yIGhhbmRsaW5nICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNCwwKQ0KICAgICBkcCA9IGRfYWxsb2Nfcm9v dChpbm9kZSk7DQorI2Vsc2UNCisgICAgZHAgPSBkX21ha2Vfcm9vdChpbm9k ZSk7DQorI2VuZGlmDQogICAgIG5ucGZzX2RfaW5pdChkcCk7DQogICAgIHNi LT5zX3Jvb3QgPSBkcDsNCiAgICAgcmV0dXJuIDA7DQpAQCAtMTgzLDEzICsx OTIsMjcgQEAgbm5wZnNfcmVhZF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2Nr ICogcw0KICAgICBOTlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNfcmVhZF9z dXBlcjogYmVnaW4gc2V0dGluZyB2YXJpYWJsZXNcbiIpKTsNCiANCiAgICAg aWYgKGRhdGEgIT0gTlVMTCkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBuYW1laWRhdGEg bmQ7DQorI2Vsc2UNCisJc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCiAJ DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzOSkNCiAJZXJyb3IgPSBwYXRoX2xvb2t1cChkYXRhLCAwLCAmbmQpOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCisJZXJyb3IgPSBrZXJuX3BhdGgoZGF0YSwgMCwgJm5kLnBhdGgp Ow0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9wYXRoKGRhdGEsIDAsICZwYXRo KTsNCisjZW5kaWYNCiAJaWYgKGVycm9yKQ0KIAkgICAgZGRldiA9IEVSUl9Q VFIoZXJyb3IpOw0KIAllbHNlDQotCSAgICBkZGV2ID0gbmQuZGVudHJ5Ow0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5 LDApDQorCSAgICBkZGV2ID0gbmQucGF0aC5kZW50cnk7DQorI2Vsc2UNCisJ ICAgIGRkZXYgPSBwYXRoLmRlbnRyeTsNCisjZW5kaWYNCiANCiAJaWYgKCFJ U19FUlIoZGRldikpIHsNCiAJICAgIG1pbm9yZGV2aWNlID0gTUlOT1IoZGRl di0+ZF9pbm9kZS0+aV9yZGV2KTsNCkBAIC0yMzMsNyArMjU2LDcgQEAgbm5w ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYg0KICAgICBy ZXR1cm4gMDsNCiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBL RVJORUxfVkVSU0lPTigyLDYsMTgpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiBpbnQNCiBubnBmc19nZXRf c2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsDQogCSAgICAg aW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwNCkBAIC0yNDIsMTkg KzI2NSwyMiBAQCBubnBmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5 cGUgKmZzDQogICAgIHJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxh Z3MsIGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIsIG1udCk7DQogfQ0KICNlbHNl DQotc3RydWN0IHN1cGVyX2Jsb2NrICoNCi1ubnBmc19nZXRfc2IgKHN0cnVj dCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KLQkgICAgICBpbnQgZmxh Z3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKSANCitzdHJ1 Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90 eXBlICpmc190eXBlLA0KKwkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAq ZGV2X25hbWUsDQorCSAgICAgdm9pZCAqZGF0YSkgDQogew0KLSAgICByZXR1 cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBubnBmc19m aWxsX3N1cGVyKTsNCisgICAgcmV0dXJuIG1vdW50X25vZGV2KGZzX3R5cGUs IGZsYWdzLCBkYXRhLCBubnBmc19maWxsX3N1cGVyKTsNCiB9DQogI2VuZGlm DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsNiwwKQ0KIHN0YXRpYyB2b2lkDQogbm5wZnNfd3JpdGVfc3VwZXIoc3Ry dWN0IHN1cGVyX2Jsb2NrICogc2IpDQogew0KICAgICBzYi0+c19kaXJ0ID0g MDsNCiB9DQorI2VuZGlmDQogDQogLyoNCiAgKiBYWFggaXMgdGhpcyBnb29k PyANCkBAIC0yNzMsNzMgKzI5OSw2IEBAIG5ucGZzX3B1dF9zdXBlcihzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKQ0KICAgICBOTlBGU0RFQihYREVCVkZPUFMs ICgibm5wZnNfcHV0X3N1cGVyIGV4aXRpbmdcbiIpKTsNCiB9DQogDQotc3Rh dGljIHZvaWQNCi1ubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5v ZGUpDQotew0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFk X2lub2RlIHN0YXJ0aW5nIGlub2RlOiAlcFxuIixpbm9kZSkpOw0KLSAgICBO TlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGlub2RlLT5p X2lubzogJWxkXG4iLGlub2RlLT5pX2lubykpOw0KLSNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQotICAgIGlub2Rl LT5pX2Jsa3NpemUgPSAxMDI0Ow0KLSNlbmRpZg0KLSAgICBpbm9kZS0+aV9t b2RlID0gMDsNCi0gICAgaW5vZGUtPmlfb3AgPSBOVUxMOw0KLSAgICBOTlBG U0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGV4aXRpbmdcbiIp KTsNCi19DQotIA0KLS8qDQotICogQ2FsbGVkIHdoZW4gYGlub2RlJyBpcyBk ZS1yZWZlcmVuY2VkLCBpZSB3aGVuIGlwdXQgaXMgY2FsbGVkLg0KLSAqLw0K LQ0KLXN0YXRpYyB2b2lkDQotbm5wZnNfcHV0X2lub2RlKHN0cnVjdCBpbm9k ZSAqaW5vZGUpDQotew0KLSAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBW Tk9ERV9UT19YTk9ERShpbm9kZSk7DQotICAgIHN0cnVjdCBubnBmcyAqbm5w ZnNwID0gTk5QRlNfRlJPTV9WTk9ERShpbm9kZSk7DQotICAgIGludCBiYWQ7 DQotDQotICAgIE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3B1dF9pbm9k ZTogaW5vZGU6ICVwIGNvdW50OiAlZCBhbGlhc2VzOiIsDQotCQkJaW5vZGUs IG5ucGZzX2ljb3VudChpbm9kZSkpKTsNCi0gICAgbm5wZnNfcHJpbnRfYWxp YXNlcyhpbm9kZSk7DQotICAgIA0KLSAgICBkb3duKCZubnBmc3AtPmluYWN0 aXZlX3NlbSk7DQotDQotICAgIGlmICgobm5wZnNwLT5zdGF0dXMgJiBOTlBG U19ERVZPUEVOKSA9PSAwKSB7DQotCWlmICghaXNfYmFkX2lub2RlKGlub2Rl KSkgew0KLQkgICAgaWYgKGlub2RlICE9IG5ucGZzcC0+cm9vdCkgew0KLQkJ bWFrZV9iYWRfaW5vZGUoaW5vZGUpOw0KLQkJbm5wZnNfaXJlbGUoaW5vZGUp OyAvKiBzZWUgbm5wZnNfbm9kZV9hZGQoKSAqLw0KLQkgICAgfQ0KLQkgICAg eG4tPmZsYWdzIHw9IE5OUEZTX1NUQUxFOw0KLQl9DQotCWJhZCA9IDE7IC8q IG9yIHJvb3QsIHJlYWxseSAqLw0KLSAgICB9IGVsc2Ugew0KLQliYWQgPSBp c19iYWRfaW5vZGUoaW5vZGUpOw0KLSAgICB9DQotDQotICAgIGlmICh4bi0+ ZmxhZ3MgJiBOTlBGU19TVEFMRSAmJiAhbm5wZnNfbm9kZV91c2Vycyhpbm9k ZSkpIHsNCi0JeG4tPmZsYWdzIHw9IE5OUEZTX05PREVfSVBVVDsgLyogWFhY IGxvY2tpbmcgKi8NCi0gIAlubnBmc19mb3JjZV9pbnZhbGlkX25vZGUoeG4p Ow0KLQl4bi0+ZmxhZ3MgJj0gfk5OUEZTX05PREVfSVBVVDsNCi0gICAgfQ0K LSAgICANCi0gICAgaWYgKGJhZCkgew0KLQlpZiAobm5wZnNfaWNvdW50KGlu b2RlKSA9PSAxKQ0KLQkgICAgbm5wZnNfbm9kZV9jbGVhcih4bik7DQotICAg IH0gZWxzZSBpZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAyKSB7DQotCS8q IA0KLQkgKiBUaGUgbGFzdCBleHRlcm5hbCByZWZlcmVuY2UgaXMgYmVpbmcg ZHJvcHBlZCwgb25seSB0aGUgb25lDQotCSAqIGZyb20gbm5wZnNfbm9kZV9h ZGQoKSBpcyBsZWZ0LiBUaW1lIHRvIGxldCBkYWVtb24gcmVsZWFzZQ0KLQkg KiB0aGlzIG5vZGUgcHJvcGVybHkuDQotCSAqLw0KLQlpZiAoKHhuLT5mbGFn cyAmIE5OUEZTX0xJTUJPKSA9PSAwKSB7DQotCSAgICBubnBmc19ub2RlX2Ns ZWFyKHhuKTsNCi0JICAgIG5ucGZzX3F1ZXVlX2luYWN0aXZlKHhuKTsNCi0J fQ0KLSAgICB9DQotDQotICAgIHVwKCZubnBmc3AtPmluYWN0aXZlX3NlbSk7 DQotfQ0KLQ0KIHN0YXRpYyBpbnQNCiBubnBmc19zdGF0ZnNfaW50KHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpDQogew0K QEAgLTM1MiwyNSArMzExLDIxIEBAIG5ucGZzX3N0YXRmc19pbnQoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwNCiAgICAgdG1wLmZfYmF2YWlsICA9IDEwMjQq MTAyNCoyLTUwOw0KICAgICB0bXAuZl9maWxlcyAgID0gMTAyNCoxMDI0Ow0K ICAgICB0bXAuZl9mZnJlZSAgID0gMTAyNCoxMDI0LTEwMDsNCisgICAgdG1w LmZfZnNpZC52YWxbMF0gPSAwOw0KKyAgICB0bXAuZl9mc2lkLnZhbFsxXSA9 IDA7DQogICAgIHRtcC5mX25hbWVsZW4gPSBOQU1FX01BWDsNCisgICAgdG1w LmZfZnJzaXplICA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzBdID0gMDsNCisg ICAgdG1wLmZfc3BhcmVbMV0gPSAwOw0KKyAgICB0bXAuZl9zcGFyZVsyXSA9 IDA7DQorICAgIHRtcC5mX3NwYXJlWzNdID0gMDsNCisgICAgdG1wLmZfc3Bh cmVbNF0gPSAwOw0KICAgICAqYnVmID0gdG1wOw0KICAgICByZXR1cm4gMDsN CiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigyLDYsMTgpDQotDQogc3RhdGljIGludA0KIG5ucGZzX3N0YXRmcyhz dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpDQog ew0KICAgICByZXR1cm4gbm5wZnNfc3RhdGZzX2ludChkZW50cnktPmRfc2Is IGJ1Zik7DQogfQ0KLQ0KLSNlbHNlDQotDQotc3RhdGljIGludA0KLW5ucGZz X3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRm cyAqYnVmKQ0KLXsNCi0gICAgcmV0dXJuIG5ucGZzX3N0YXRmc19pbnQoc2Is IGJ1Zik7DQotfQ0KLQ0KLSNlbmRpZg0KZGlmZiAtdXByTiAtWG5vZGlmZiBh cmxhLTAuOTAtb2xkL2FybGFkL2ZjYWNoZS5jIGFybGEtMC45MC9hcmxhZC9m Y2FjaGUuYw0KLS0tIGFybGEtMC45MC1vbGQvYXJsYWQvZmNhY2hlLmMJMjAw Ni0xMi0xMSAxNzoyMzoyNC4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLTAu OTAvYXJsYWQvZmNhY2hlLmMJMjAxNi0wMS0yMiAxNzowMDo0My4wMDAwMDAw MDAgKzAxMDANCkBAIC03MTMsNyArNzEzLDcgQEAgZmNhY2hlX2hhdmVfd2Fu dGVkKEZDYWNoZUVudHJ5ICplbnRyeSwgdQ0KIGludA0KIGZjYWNoZV9kaXJf bmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBjaGFyICpzLCBzaXplX3QgbGVu KQ0KIHsNCi0gICAgcmV0dXJuIHNucHJpbnRmIChzLCBsZW4sICIlMDJYIiwg ZW50cnktPmluZGV4IC8gMHgxMDApOw0KKyAgICByZXR1cm4gc25wcmludGYg KHMsIGxlbiwgTk5QRlNfQ0FDSEVfRklMRV9ESVIxLCBlbnRyeS0+aW5kZXgg LyAweDEwMCk7DQogfQ0KIA0KIC8qDQpAQCAtNzIzLDcgKzcyMyw3IEBAIGZj YWNoZV9kaXJfbmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBjaGENCiBzdGF0 aWMgaW50DQogZmNhY2hlX2ZpbGVfbmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5 LCBjaGFyICpzLCBzaXplX3QgbGVuKQ0KIHsNCi0gICAgcmV0dXJuIHNucHJp bnRmIChzLCBsZW4sICIlMDJYLyUwMlgiLA0KKyAgICByZXR1cm4gc25wcmlu dGYgKHMsIGxlbiwgTk5QRlNfQ0FDSEVfRklMRV9ESVJfUEFUSCwNCiAJCSAg ICAgZW50cnktPmluZGV4IC8gMHgxMDAsIGVudHJ5LT5pbmRleCAlIDB4MTAw KTsNCiB9DQogDQpAQCAtODE1LDcgKzgxNSw3IEBAIGZjYWNoZV9maGdldCAo Y2hhciAqZmlsZW5hbWUsIGZjYWNoZV9jYWMNCiAJaW50IHJldCwgYSwgYjsN CiAJY2hhciBidWZbMTAyNF07DQogDQotCXJldCA9IHNzY2FuZihmaWxlbmFt ZSwgIiUwMlgvJTAyWCIsICZhLCAmYik7DQorCXJldCA9IHNzY2FuZihmaWxl bmFtZSwgTk5QRlNfQ0FDSEVfRklMRV9ESVJfUEFUSCwgJmEsICZiKTsNCiAJ aWYgKHJldCAhPSAyKQ0KIAkgICAgcmV0dXJuIEVJTlZBTDsNCiANCkBAIC04 MjQsNyArODI0LDcgQEAgZmNhY2hlX2ZoZ2V0IChjaGFyICpmaWxlbmFtZSwg ZmNhY2hlX2NhYw0KIAkNCiAJcmV0ID0gc25wcmludGYoKGNoYXIgKiloYW5k bGUtPm5ucGZzX2hhbmRsZSwgDQogCQkgICAgICAgc2l6ZW9mKGhhbmRsZS0+ bm5wZnNfaGFuZGxlKSwNCi0JCSAgICAgICAiJXNcXCUwMlhcXCUwMlgiLCBi dWYsIGEsIGIpOw0KKwkJICAgICAgICIlc1xcIiBOTlBGU19DQUNIRV9GSUxF X0RJUl9QQVRILCBidWYsIGEsIGIpOw0KIA0KIAlpZiAocmV0ID4gMCAmJiBy ZXQgPCBzaXplb2YoaGFuZGxlLT5ubnBmc19oYW5kbGUpKQ0KIAkgICAgaGFu ZGxlLT52YWxpZCA9IDE7DQo= ---276651502-490015836-1453833291=:11904 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-490015836-1453833291=:11904--