Re: PATCH v2: Arla 0.90 on Linux 2.6.34 to 3.18
Bo Branten <[email protected]> Thu, 14 Jan 2016 01:28:29 +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-1195004614-1452731309=:24061 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH v2: Arla 0.90 on Linux 2.6.34 to 3.18 Hello, I have corrected two things in the existing patch: Before I forgot two include files that is stored higher up in the direvtory hierarchy. And I have changed the syntax of the preprocessor statements to what was used in the rest of the driver. I have tested that this patch compiles clean on ALL kernels from 2.6.34 to 3.18. Bo Branten ---276651502-1195004614-1452731309=:24061 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-arla-0.90-for-linux-3.18 Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-arla-0.90-for-linux-3.18 ZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2luY2x1 ZGUvbm5wZnMvbm5wZnNfYXR0ci5oIGFybGEtZm9yLWxpbnV4LTMuMTgvbm5w ZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19hdHRyLmgNCi0tLSBhcmxhLTAuOTAv bm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAwNi0xMC0yNCAx ODozMzozMC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLWZvci1saW51eC0z LjE4L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfYXR0ci5oCTIwMTYtMDEt MTIgMTk6Mjk6NTAuNTIyMDcyMDg0ICswMTAwDQpAQCAtMTEzLDggKzExMywx MyBAQCBzdHJ1Y3Qgbm5wZnNfYXR0ciB7DQogICAgIHVpbnQzMl90CQl4YV9u bGluazsNCiAgICAgdWludDMyX3QJCXhhX3R5cGU7DQogDQorI2lmIChkZWZp bmVkKF9fS0VSTkVMX18pICYmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJO RUxfVkVSU0lPTigzLDE0LDApKQ0KKyAgICBrdWlkX3QJCXhhX3VpZDsNCisg ICAga2dpZF90CQl4YV9naWQ7DQorI2Vsc2UNCiAgICAgdWludDMyX3QJCXhh X3VpZDsNCiAgICAgdWludDMyX3QJCXhhX2dpZDsNCisjZW5kaWYNCiANCiAg ICAgdWludDMyX3QJCXhhX2F0aW1lOw0KICAgICB1aW50MzJfdAkJeGFfbXRp bWU7DQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaCBhcmxhLWZvci1saW51eC0z LjE4L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfYmxvY2tzLmgNCi0tLSBh cmxhLTAuOTAvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaAky MDA2LTEwLTI0IDE4OjMzOjMxLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEt Zm9yLWxpbnV4LTMuMTgvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9j a3MuaAkyMDA3LTAxLTI0IDE4OjA5OjE3LjAwMDAwMDAwMCArMDEwMA0KQEAg LTEsNSArMSw1IEBADQogLyoNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAw NiwgU3RvY2tob2xtcyBVbml2ZXJzaXRldA0KKyAqIENvcHlyaWdodCAoYykg MjAwNS0yMDA3LCBTdG9ja2hvbG1zIFVuaXZlcnNpdGV0DQogICogKFN0b2Nr aG9sbSBVbml2ZXJzaXR5LCBTdG9ja2hvbG0gU3dlZGVuKQ0KICAqIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQogICoNCkBAIC0zMSwxMSArMzEsMTUgQEANCiAg KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0vKiAk SWQ6IG5ucGZzX2Jsb2Nrcy5oLHYgMS4yIDIwMDYvMTAvMjQgMTY6MzM6MzEg dG9sIEV4cCAkICovDQorLyogJElkOiBubnBmc19ibG9ja3MuaCx2IDEuMyAy MDA3LzAxLzI0IDE3OjA5OjE3IHRvbCBFeHAgJCAqLw0KIA0KICNkZWZpbmUg Tk5QRlNfTk9fSU5ERVggICAwICAvKiBkdW1teSBjYWNoZSBpbmRleCAqLw0K ICNkZWZpbmUgTk5QRlNfTk9fT0ZGU0VUICAoKHVpbnQ2NF90KS0xKSAgLyog ZHVtbXkgb2Zmc2V0LCBubyBibG9jayAqLw0KIA0KLSNkZWZpbmUgTk5QRlNf Q0FDSEVfRklMRV9QQVRIICAgICIlMDJYLyUwMlgvJTAybGxYIg0KLSNkZWZp bmUgTk5QRlNfQ0FDSEVfRElSX1BBVEggICAgICIlMDJYLyUwMlhAIg0KLSNk ZWZpbmUgTk5QRlNfQ0FDSEVfUEFUSF9TSVpFICAgICggNiArMSArMisxICsx NiArMSkNCisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfRElSMSAgICAgICAg IiUwMngiDQorI2RlZmluZSBOTlBGU19DQUNIRV9GSUxFX0RJUl9QQVRIICAg IE5OUEZTX0NBQ0hFX0ZJTEVfRElSMSAiLyIgTk5QRlNfQ0FDSEVfRklMRV9E SVIxDQorI2RlZmluZSBOTlBGU19DQUNIRV9GSUxFX0JMT0NLX1BBVEggICIl MDJsbHgiDQorDQorI2RlZmluZSBOTlBGU19DQUNIRV9GSUxFX1BBVEggICBO TlBGU19DQUNIRV9GSUxFX0RJUl9QQVRIICIvIiBOTlBGU19DQUNIRV9GSUxF X0JMT0NLX1BBVEgNCisjZGVmaW5lIE5OUEZTX0NBQ0hFX0RJUl9QQVRIICAg IE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEggIkAiDQorI2RlZmluZSBOTlBG U19DQUNIRV9QQVRIX1NJWkUgICAoIDYgKzEgKzIrMSArMTYgKzEgKQ0KZGlm ZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2luY2x1ZGUv bm5wZnMvbm5wZnNfbWVzc2FnZS5oIGFybGEtZm9yLWxpbnV4LTMuMTgvbm5w ZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19tZXNzYWdlLmgNCi0tLSBhcmxhLTAu OTAvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19tZXNzYWdlLmgJMjAwNi0x MC0yNCAxODozMzozMi4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLWZvci1s aW51eC0zLjE4L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5o CTIwMTYtMDEtMTQgMDA6MjY6MDQuMTI2MDE1MTM2ICswMTAwDQpAQCAtMzEs NyArMzEsNyBAQA0KICAqIFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJ ZDogbm5wZnNfbWVzc2FnZS5oLHYgMS42MSAyMDA2LzEwLzI0IDE2OjMzOjMy IHRvbCBFeHAgJCAqLw0KKy8qICRJZDogbm5wZnNfbWVzc2FnZS5oLHYgMS42 MiAyMDA5LzAyLzI0IDIwOjIwOjU1IHRvbCBFeHAgJCAqLw0KIA0KICNpZm5k ZWYgX3htc2dfaA0KICNkZWZpbmUgX3htc2dfaA0KQEAgLTUyLDcgKzUyLDEx IEBAIHR5cGVkZWYgdWludDE2X3Qgbm5wZnNfcmlnaHRzOw0KICAqIFRoZSBu bnBmc19jcmVkLCBpZiBwYWcgPT0gMCwgdXNlIHVpZCANCiAgKi8NCiB0eXBl ZGVmIHN0cnVjdCBubnBmc19jcmVkIHsNCisjaWYgKGRlZmluZWQoX19LRVJO RUxfXykgJiYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDMsMTQsMCkpDQorICAgIGt1aWRfdCB1aWQ7DQorI2Vsc2UNCiAgICAgdWlu dDMyX3QgdWlkOw0KKyNlbmRpZg0KICAgICBubnBmc19wYWdfdCBwYWc7DQog fSBubnBmc19jcmVkOw0KIA0KQEAgLTEwNiw3ICsxMTAsNyBAQCB0eXBlZGVm IHN0cnVjdCBubnBmc19ibG9ja19oYW5kbGUgew0KIA0KIC8qIG5ucGZzX25v ZGUuZmxhZ3MNCiAgKiBUaGUgbG93ZXIgMTYgYml0IGZsYWdzIGFyZSByZXNl cnZlZCBmb3IgY29tbW9uIG5ucGZzIGZsYWdzDQotICogVGhlIHVwcGVyIDE2 IGJpdCBmbGFncyBhcmUgcmVzZXJ2ZWQgZm9yIG9wZXJ0aW5nIHN5c3RlbSBk ZXBlbmRhbnQNCisgKiBUaGUgdXBwZXIgMTYgYml0IGZsYWdzIGFyZSByZXNl cnZlZCBmb3Igb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQNCiAgKiBmbGFn cy4NCiAgKi8NCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmcy9ubm5wZnMuaCBhcmxhLWZvci1saW51eC0z LjE4L25ucGZzL2xpbnV4L25ucGZzL25ubnBmcy5oDQotLS0gYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzL25ubnBmcy5oCTIwMDItMDktMDcgMTI6NDc6 MTcuMDAwMDAwMDAwICswMjAwDQorKysgYXJsYS1mb3ItbGludXgtMy4xOC9u bnBmcy9saW51eC9ubnBmcy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3 LjAwMDAwMDAwMCArMDIwMA0KQEAgLTEsNCArMSw0IEBADQogLyogJElkOiBu bm5wZnMuaCx2IDEuMiAyMDAyLzA5LzA3IDEwOjQ3OjE3IGxoYSBFeHAgJCAq Lw0KLS8qICRTb3VyY2U6IC9hZnMvc3RhY2tlbi5rdGguc2Uvc3JjL1NvdXJj ZVJlcG9zaXRvcnkvYXJsYS9ubnBmcy9saW51eC9ubnBmcy9ubm5wZnMuaCx2 ICQgKi8NCisvKiAkU291cmNlOiAvVXNlcnMvYm8vdG1wL0FybGFTb3VyY2VS ZXBvc2l0b3J5L2FybGEvbm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmgsdiAk ICovDQogDQogI2RlZmluZSBOTk5QRlMgMg0KZGlmZiAtdXByTiAtWG5vZGlm Zi50eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmgg YXJsYS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19m cy5oDQotLS0gYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2Zz LmgJMjAwNi0xMC0yNCAxODozMzo0OC4wMDAwMDAwMDAgKzAyMDANCisrKyBh cmxhLWZvci1saW51eC0zLjE4L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2Zz LmgJMjAxNi0wMS0xMyAyMjo1NzowNi4zODc2OTMzMzkgKzAxMDANCkBAIC04 NCw4ICs4NCwxMyBAQCBzdHJ1Y3Qgbm5wZnMgew0KICAgICBzdHJ1Y3QgdmZz bW91bnQgKmNhY2hlcm9vdDsgLyogc2ltcGxpZnkgb3BlbiBvZiBjYWNoZSBi bG9ja3MgKi8NCiAgICAgc3RydWN0IGRlbnRyeSAqY2FjaGVkaXI7DQogDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQs MCkNCiAgICAgdWlkX3QgdWlkOyAvKiBrZWVwIHRyYWNrIG9mIGRhZW1vbidz IGlkZW50aXR5ICovDQogICAgIGdpZF90IGdpZDsNCisjZWxzZQ0KKyAgICBr dWlkX3QgdWlkOyAvKiBrZWVwIHRyYWNrIG9mIGRhZW1vbidzIGlkZW50aXR5 ICovDQorICAgIGtnaWRfdCBnaWQ7DQorI2VuZGlmDQogDQogICAgIHN0cnVj dCB7DQogCWludCByZWN1cnNlOw0KZGlmZiAtdXByTiAtWG5vZGlmZi50eHQg YXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2xvY2wuaCBhcmxh LWZvci1saW51eC0zLjE4L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2xvY2wu aA0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19sb2Ns LmgJMjAwNy0wMS0wOCAxNDo1Mjo0OS4wMDAwMDAwMDAgKzAxMDANCisrKyBh cmxhLWZvci1saW51eC0zLjE4L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2xv Y2wuaAkyMDE2LTAxLTEzIDIzOjAxOjEwLjE3ODcwODAzNyArMDEwMA0KQEAg LTM0LDcgKzM0LDcgQEANCiAgKiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0v KiAkSWQ6IG5ucGZzX2xvY2wuaCx2IDEuNzcgMjAwNy8wMS8wOCAxMzo1Mjo0 OSB0b2wgRXhwICQgKi8NCisvKiAkSWQ6IG5ucGZzX2xvY2wuaCx2IDEuNzgg MjAxMC8wOC8wOCAyMDo0MzowNiB0b2wgRXhwICQgKi8NCiANCiAjaWZkZWYg SEFWRV9DT05GSUdfSA0KICNpbmNsdWRlIDxjb25maWcuaD4NCkBAIC01MSw3 ICs1MSw5IEBADQogI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4NCiAjaW5jbHVk ZSA8bGludXgvc3RyaW5nLmg+DQogI2luY2x1ZGUgPGxpbnV4L25hbWVpLmg+ DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzOSkNCiAjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4NCisjZW5kaWYN CiAjaW5jbHVkZSA8bGludXgvd2FpdC5oPg0KIA0KIC8qDQpAQCAtMTM4LDE1 ICsxNDAsMTYgQEAgdHlwZWRlZiBfX3UzMiAgdWludDMyX3Q7DQogaW50DQog bm5wZnNfZmV0Y2hfcm9vdChzdHJ1Y3QgaW5vZGUgKmkpOw0KIA0KLSNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogaW50DQogbm5wZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90 eXBlICpmc190eXBlLA0KIAkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAq ZGV2X25hbWUsDQogCSAgICAgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50 ICptbnQpOw0KICNlbHNlDQotc3RydWN0IHN1cGVyX2Jsb2NrICoNCi1ubnBm c19nZXRfc2IgKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0K LQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lk ICpkYXRhKTsNCitzdHJ1Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0cnVj dCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KKwkgICAgIGludCBmbGFn cywgY29uc3QgY2hhciAqZGV2X25hbWUsDQorCSAgICAgdm9pZCAqZGF0YSk7 DQogI2VuZGlmDQogDQogZXh0ZXJuIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9u cyBubnBmc19kZW50cnlfb3BlcmF0aW9uczsNCkBAIC0yMDAsMTYgKzIwMywy NSBAQCBubnBmc19pd3JpdGVjb3VudCAoc3RydWN0IGlub2RlICppbm9kZSkN CiAgKiBIZWxwIGZ1bmN0aW9uIHRvIHJlYWQgdGhlIGRlbnRyeS0+ZF9jb3Vu dCBhIHBvcnRhYmxlIHdheQ0KICAqLw0KIA0KKy8qI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkqLw0KIHN0YXRpYyBp bmxpbmUgaW50DQogbm5wZnNfZGNvdW50IChjb25zdCBzdHJ1Y3QgZGVudHJ5 ICpkZW50cnkpDQorLyojZWxzZQ0KK3N0YXRpYyBpbmxpbmUgaW50DQorbm5w ZnNfZGNvdW50IChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorI2VuZGlmKi8N CiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDIsNiwzOCkNCiAgICAgcmV0dXJuIGF0b21pY19yZWFkKCZkZW50cnktPmRf Y291bnQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTEsMCkNCisgICAgcmV0dXJuIGF0b21pY19yZWFkKChjb25z dCBhdG9taWNfdCopJmRlbnRyeS0+ZF9jb3VudCk7DQorI2Vsc2UNCisgICAg cmV0dXJuIGRfY291bnQoZGVudHJ5KTs7DQorI2VuZGlmDQogfQ0KIA0KIGV4 dGVybiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsNiwxOCkNCiBjb25zdA0KLSNlbmRpZg0KIHN0cnVjdCBhZGRyZXNz X3NwYWNlX29wZXJhdGlvbnMgbm5wZnNfYW9wczsNCiANCiAjaWZuZGVmIGxp c3RfZm9yX2VhY2gNCkBAIC0yMzcsNyArMjQ5LDEyIEBAIG5ucGZzX2ZpeHVw X3N5c2NhbGxfbG9zc2FnZSh2b2lkKTsNCiAjZW5kaWYNCiANCiAjZGVmaW5l IG5ucGZzX2Rldl90IGRldl90DQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAjZGVmaW5lIG5ucGZzX2Rf ZW50cnlfdW5oYXNoZWQoZCkgaGxpc3RfdW5oYXNoZWQoZCkNCisjZWxzZQ0K KyNkZWZpbmUgbm5wZnNfZF9lbnRyeV91bmhhc2hlZChkKSBobGlzdF9ibF91 bmhhc2hlZChkKQ0KKyNlbmRpZg0KIA0KICNkZWZpbmUgTk5QRlNfTk9PUCAg ICAgIHdoaWxlKDApe30NCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFy bGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmggYXJsYS1m b3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgN Ci0tLSBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbm9kZS5o CTIwMDYtMTItMTEgMTc6Mjk6MzkuMDAwMDAwMDAwICswMTAwDQorKysgYXJs YS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2Rl LmgJMjAxMC0wOC0wOCAyMjo0MzowNy4wMDAwMDAwMDAgKzAyMDANCkBAIC01 NCw3ICs1NCw3IEBAIGV4dGVybiB1aW50MzJfdCBubnBmc19ibG9ja3NpemVi aXRzOw0KICAqIGZsYWdzLg0KICAqLw0KIA0KLSNkZWZpbmUgTk5QRlNfTk9E RV9JUFVUCTB4MDAwMTAwMDAgICAvKiBub2RlIGlzIGluIGlwdXQoKSwgYXZv aWQgZGVhZGxvY2sgKi8NCisjZGVmaW5lIE5OUEZTX05PREVfSVBVVAkweDAw MDEwMDAwICAgLyogbm9kZSBpcyBpbiBpcHV0KCksIGF2b2lkIGRlYWRsb2Nr LiBDYW4gYmUgcmVtb3ZlZD8gKi8NCiANCiAjZGVmaW5lIFhOX0hBU0hTSVpF IDEwMDkNCiAjZGVmaW5lIFhOX0NMRUFOVVBfSVRFUlMgMTI5DQpkaWZmIC11 cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNf YmxvY2tzLmMgYXJsYS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBm c19ibG9ja3MuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19i bG9ja3MuYwkyMDA3LTAxLTA4IDE0OjI0OjI0LjAwMDAwMDAwMCArMDEwMA0K KysrIGFybGEtZm9yLWxpbnV4LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfYmxv Y2tzLmMJMjAxNi0wMS0xNCAwMTowMToxOS44MDcxNDI2ODUgKzAxMDANCkBA IC0zNCw3ICszNCw3IEBADQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuDQogICovDQogDQotLyogJElkOiBubnBmc19ibG9ja3MuYyx2IDEuMyAy MDA3LzAxLzA4IDEzOjI0OjI0IHRvbCBFeHAgJCAqLw0KKy8qICRJZDogbm5w ZnNfYmxvY2tzLmMsdiAxLjYgMjAxMC8wOC8wOCAyMDo0MzowNCB0b2wgRXhw ICQgKi8NCiANCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNfbG9jbC5oPg0KICNp bmNsdWRlIDxubnBmcy9ubnBmc19mcy5oPg0KQEAgLTQzLDYgKzQzLDM2IEBA DQogI2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+DQogI2luY2x1ZGUgPGxpbnV4 L21tLmg+DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigzLDEyLDApDQorLyogVE9ETzogaW1wbGVtZW50IGEgcmVwbGFj ZW1lbnQgZm9yIHZmc19wYXRoX2xvb2t1cCBvbiBrZXJuZWwgMy4xMiBhbmQg bGF0ZXIgKi8NCisvKioNCisgKiB2ZnNfcGF0aF9sb29rdXAgLSBsb29rdXAg YSBmaWxlIHBhdGggcmVsYXRpdmUgdG8gYSBkZW50cnktdmZzbW91bnQgcGFp cg0KKyAqIEBkZW50cnk6ICBwb2ludGVyIHRvIGRlbnRyeSBvZiB0aGUgYmFz ZSBkaXJlY3RvcnkNCisgKiBAbW50OiBwb2ludGVyIHRvIHZmcyBtb3VudCBv ZiB0aGUgYmFzZSBkaXJlY3RvcnkNCisgKiBAbmFtZTogcG9pbnRlciB0byBm aWxlIG5hbWUNCisgKiBAZmxhZ3M6IGxvb2t1cCBmbGFncw0KKyAqIEBwYXRo OiBwb2ludGVyIHRvIHN0cnVjdCBwYXRoIHRvIGZpbGwNCisgKi8NCitpbnQg bm5wZnNfcGF0aF9sb29rdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1 Y3QgdmZzbW91bnQgKm1udCwNCisJCSAgICBjb25zdCBjaGFyICpuYW1lLCB1 bnNpZ25lZCBpbnQgZmxhZ3MsDQorCQkgICAgc3RydWN0IHBhdGggKnBhdGgp DQorew0KKyNpZiAwDQorCXN0cnVjdCBuYW1laWRhdGEgbmQ7DQorCWludCBl cnI7DQorCW5kLnJvb3QuZGVudHJ5ID0gZGVudHJ5Ow0KKwluZC5yb290Lm1u dCA9IG1udDsNCisJQlVHX09OKGZsYWdzICYgTE9PS1VQX1BBUkVOVCk7DQor CS8qIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBkb19wYXRoX2xvb2t1cCgpIGlz IGlnbm9yZWQgd2l0aCBMT09LVVBfUk9PVCAqLw0KKwllcnIgPSBkb19wYXRo X2xvb2t1cChBVF9GRENXRCwgbmFtZSwgZmxhZ3MgfCBMT09LVVBfUk9PVCwg Jm5kKTsNCisJaWYgKCFlcnIpDQorCQkqcGF0aCA9IG5kLnBhdGg7DQorCXJl dHVybiBlcnI7DQorI2VuZGlmDQorCXJldHVybiAtMTsNCit9DQorI2VuZGlm DQorDQogLyoNCiAgKiByZXR1cm4gdHJ1ZSBpZiBibG9jayBpcyBpbiBjYWNo ZQ0KICAqLw0KQEAgLTI5MCw3ICszMjAsMTMgQEAgbm5wZnNfYmxvY2tfZXh0 ZW5kKHN0cnVjdCBubnBmc19ub2RlICpubw0KICAgICBiYWNrbm9kZSA9IGJh Y2tmaWxlLT5mX21hcHBpbmctPmhvc3Q7DQogDQogICAgIG11dGV4X2xvY2so JmJhY2tub2RlLT5pX211dGV4KTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw4LDApDQogICAgIHJldCA9IHZtdHJ1bmNh dGUoYmFja25vZGUsIG5ucGZzX2Jsb2Nrc2l6ZSk7DQorI2Vsc2UNCisgICAg cmV0ID0gaW5vZGVfbmV3c2l6ZV9vayhiYWNrbm9kZSwgbm5wZnNfYmxvY2tz aXplKTsNCisgICAgaWYoIXJldCkNCisgICAgICAgIHRydW5jYXRlX3NldHNp emUoYmFja25vZGUsIG5ucGZzX2Jsb2Nrc2l6ZSk7DQorI2VuZGlmDQogICAg IG11dGV4X3VubG9jaygmYmFja25vZGUtPmlfbXV0ZXgpOw0KICAgICANCiAg ICAgZmlscF9jbG9zZShiYWNrZmlsZSwgTlVMTCk7DQpAQCAtMzE4LDEwICsz NTQsMjYgQEAgbm5wZnNfYmxvY2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAq bm9kZQ0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCA9IE5OUEZTX0ZST01f WE5PREUobm9kZSk7DQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBYTk9E RV9UT19WTk9ERShub2RlKTsNCiAgICAgaW50IGZsYWdzID0gT19MQVJHRUZJ TEUgfCBmbGFnOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBuYW1laWRhdGEgbmQ7DQor I2Vsc2UNCisgICAgc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0K ICAgICB1aWRfdCBzYXZldWlkOw0KICAgICBnaWRfdCBzYXZlZ2lkOw0KKyNl bHNlDQorICAgIGt1aWRfdCBzYXZldWlkOw0KKyAgICBrZ2lkX3Qgc2F2ZWdp ZDsNCisjZW5kaWYNCiAgICAgaW50IHJldDsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwyOSkNCisgICAgY29uc3Qg c3RydWN0IGNyZWQgKm9sZF9jcmVkOw0KKyAgICBzdHJ1Y3QgY3JlZCAqb3Zl cnJpZGVfY3JlZDsNCisjZW5kaWYNCisNCisgICAgKHZvaWQpc2F2ZXVpZDsN CisgICAgKHZvaWQpc2F2ZWdpZDsNCiANCiAgICAgQlVHX09OKCFubnBmc3Ap Ow0KICAgICBCVUdfT04oZmxhZ3MgJiBPX0NSRUFUICYmIGZpbGUgIT0gTlVM TCk7DQpAQCAtMzQ2LDIxICszOTgsNDMgQEAgbm5wZnNfYmxvY2tfb3Blbihz dHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KICAgICBCVUdfT04oIW5ucGZzcC0+ Y2FjaGVkaXIgfHwgIW5ucGZzcC0+Y2FjaGVyb290KTsNCiAgICAgDQogICAg IC8qIHVzZSB0aGUgbmZzZCB0cmljayB0byBnaXZlIHVzIGFjY2VzcyAqLw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2 LDI4KQ0KICAgICBzYXZldWlkID0gY3VycmVudC0+ZnN1aWQ7DQogICAgIHNh dmVnaWQgPSBjdXJyZW50LT5mc2dpZDsNCiAgICAgY3VycmVudC0+ZnN1aWQg PSBubnBmc3AtPnVpZDsNCiAgICAgY3VycmVudC0+ZnNnaWQgPSBubnBmc3At PmdpZDsNCi0NCi0gICAgbmQuZGVudHJ5ID0gZGdldChubnBmc3AtPmNhY2hl ZGlyKTsNCi0gICAgbmQubW50ID0gbW50Z2V0KG5ucGZzcC0+Y2FjaGVyb290 KTsNCi0gICAgbmQubGFzdF90eXBlID0gTEFTVF9OT1JNOw0KLSAgICBuZC5k ZXB0aCA9IDA7DQotICAgIG5kLmZsYWdzID0gMDsNCi0gICAgDQotICAgIGlm IChmbGFncyAmIE9fQ1JFQVQpDQotCW5kLmZsYWdzID0gTE9PS1VQX1BBUkVO VDsNCi0gICAgDQotICAgIHJldCA9IHBhdGhfd2FsayhjYWNoZW5hbWUsICZu ZCk7DQorI2Vsc2UNCisgICAgc2F2ZXVpZCA9IGN1cnJlbnRfZnN1aWQoKTsN CisgICAgc2F2ZWdpZCA9IGN1cnJlbnRfZnNnaWQoKTsNCisgICAgb3ZlcnJp ZGVfY3JlZCA9IHByZXBhcmVfY3JlZHMoKTsNCisgICAgaWYgKG92ZXJyaWRl X2NyZWQgPT0gTlVMTCkNCisgICAgICAgIHJldHVybiAtRU5PTUVNOw0KKyAg ICBvdmVycmlkZV9jcmVkLT5mc3VpZCA9IG5ucGZzcC0+dWlkOw0KKyAgICBv dmVycmlkZV9jcmVkLT5mc2dpZCA9IG5ucGZzcC0+Z2lkOw0KKyAgICBvbGRf Y3JlZCA9IG92ZXJyaWRlX2NyZWRzKG92ZXJyaWRlX2NyZWQpOw0KKyNlbmRp Zg0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDEsMCkNCisgICAgcmV0ID0gdmZzX3BhdGhfbG9va3VwKG5ucGZzcC0+ Y2FjaGVkaXIsIG5ucGZzcC0+Y2FjaGVyb290LA0KKwkJCSAgY2FjaGVuYW1l LA0KKwkJCSAgZmxhZ3MgJiBPX0NSRUFUID8gTE9PS1VQX1BBUkVOVCA6IDAs DQorCQkJICAmbmQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTIsMCkNCisgICAgcmV0ID0gdmZzX3BhdGhfbG9v a3VwKG5ucGZzcC0+Y2FjaGVkaXIsIG5ucGZzcC0+Y2FjaGVyb290LA0KKwkJ CSAgY2FjaGVuYW1lLA0KKwkJCSAgZmxhZ3MgJiBPX0NSRUFUID8gTE9PS1VQ X1BBUkVOVCA6IDAsDQorCQkJICAmbmQucGF0aCk7DQorI2VsaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBy ZXQgPSBubnBmc19wYXRoX2xvb2t1cChubnBmc3AtPmNhY2hlZGlyLCBubnBm c3AtPmNhY2hlcm9vdCwNCisJCQkgIGNhY2hlbmFtZSwNCisJCQkgIGZsYWdz ICYgT19DUkVBVCA/IExPT0tVUF9QQVJFTlQgOiAwLA0KKwkJCSAgJm5kLnBh dGgpOw0KKyNlbHNlDQorICAgIHJldCA9IG5ucGZzX3BhdGhfbG9va3VwKG5u cGZzcC0+Y2FjaGVkaXIsIG5ucGZzcC0+Y2FjaGVyb290LA0KKwkJCSAgY2Fj aGVuYW1lLA0KKwkJCSAgZmxhZ3MgJiBPX0NSRUFUID8gTE9PS1VQX1BBUkVO VCA6IDAsDQorCQkJICAmcGF0aCk7DQorI2VuZGlmDQogICAgIGlmIChyZXQp IHsNCiAJdWludDMyX3Qgbm1hc2tzID0gbm9kZS0+ZGF0YS5ubWFza3M7DQog CXVpbnQzMl90IG1hc2s7DQpAQCAtMzg3LDE2ICs0NjEsMzcgQEAgbm5wZnNf YmxvY2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KICAgICANCiAg ICAgaWYgKGZsYWdzICYgT19DUkVBVCkgew0KIAkvKiBYWFggbW9kZSBiaXRz IG9uIGNyZWF0ZSAtLSBTX0lSVVNSfFNfSVdVU1IgKi8NCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxLDApDQogCXN0cnVj dCBkZW50cnkgKmRlbnRyeSA9IGxvb2t1cF9jcmVhdGUoJm5kLCAwKTsJDQor I2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx OSwwKQ0KKwkvKiBUT0RPOiBjaGVjayB0aGUgY2FsbCB0byBrZXJuX3BhdGhf Y3JlYXRlKCksIGlzIHRoZSBzZWNvbmQgYXJndW1lbnQgb3B0aW9uYWw/ICov DQorCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGtlcm5fcGF0aF9jcmVhdGUo QVRfRkRDV0QsIE5VTEwsICZuZC5wYXRoLCAwKTsJDQorI2Vsc2UNCisJLyog VE9ETzogY2hlY2sgdGhlIGNhbGwgdG8ga2Vybl9wYXRoX2NyZWF0ZSgpLCBp cyB0aGUgc2Vjb25kIGFyZ3VtZW50IG9wdGlvbmFsPyAqLw0KKwlzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnkgPSBrZXJuX3BhdGhfY3JlYXRlKEFUX0ZEQ1dELCBO VUxMLCAmcGF0aCwgMCk7CQ0KKyNlbmRpZg0KIAlpZiAoSVNfRVJSKGRlbnRy eSkpIHsNCiAJICAgIHJldCA9IFBUUl9FUlIoZGVudHJ5KTsNCiAJfSBlbHNl IHsNCi0JICAgIHJldCA9IHZmc19jcmVhdGUobmQuZGVudHJ5LT5kX2lub2Rl LCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwgJm5kKTsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQorCSAgICBy ZXQgPSB2ZnNfY3JlYXRlKG5kLnBhdGguZGVudHJ5LT5kX2lub2RlLCBkZW50 cnksIFNfSVJVU1J8U19JV1VTUiwgJm5kKTsNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICAvKiBU T0RPOiBzaG91bGQgdGhlIGxhc3QgYXJndW1lbnQgdG8gdmZzX2NyZWF0ZTog Ym9vbCB3YW50X2V4Y2wsIGJlIDAgb3IgMT8gKi8NCisJICAgIHJldCA9IHZm c19jcmVhdGUobmQucGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwgU19J UlVTUnxTX0lXVVNSLCAwKTsNCisjZWxzZQ0KKwkgICAgLyogVE9ETzogc2hv dWxkIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHZmc19jcmVhdGU6IGJvb2wgd2Fu dF9leGNsLCBiZSAwIG9yIDE/ICovDQorCSAgICByZXQgPSB2ZnNfY3JlYXRl KHBhdGguZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VT UiwgMCk7DQorI2VuZGlmDQogCSAgICBkcHV0KGRlbnRyeSk7DQogCX0NCiAN Ci0JbXV0ZXhfdW5sb2NrKCZuZC5kZW50cnktPmRfaW5vZGUtPmlfbXV0ZXgp Ow0KLQlwYXRoX3JlbGVhc2UoJm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKwltdXRleF91bmxvY2so Jm5kLnBhdGguZGVudHJ5LT5kX2lub2RlLT5pX211dGV4KTsNCisJcGF0aF9w dXQoJm5kLnBhdGgpOw0KKyNlbHNlDQorCW11dGV4X3VubG9jaygmcGF0aC5k ZW50cnktPmRfaW5vZGUtPmlfbXV0ZXgpOw0KKwlwYXRoX3B1dCgmcGF0aCk7 DQorI2VuZGlmDQogDQogCWlmIChyZXQpIHsNCiAJICAgIHByaW50aygibm5w ZnNfYmxvY2tfb3BlbiglcykgY3JlYXRlIGZhaWxlZDogJWRcbiIsIGNhY2hl bmFtZSwgLXJldCk7DQpAQCAtNDEwLDEyICs1MDUsMjUgQEAgbm5wZnNfYmxv Y2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIAkgICAgcmV0ID0g bm5wZnNfYmxvY2tfZXh0ZW5kKG5vZGUsIG9mZnNldCk7DQogCX0NCiAgICAg fSBlbHNlIHsNCi0Jc3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3BlbihuZC5k ZW50cnksIG5kLm1udCwgZmxhZ3MpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMjkpDQorCXN0cnVjdCBmaWxlICpm ID0gZGVudHJ5X29wZW4obmQucGF0aC5kZW50cnksIG5kLnBhdGgubW50LCBm bGFncyk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw2LDApDQorICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRy eV9vcGVuKG5kLnBhdGguZGVudHJ5LCBuZC5wYXRoLm1udCwgZmxhZ3MsIGN1 cnJlbnRfY3JlZCgpKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQorCXN0cnVjdCBwYXRoIHRtcF9wYXRo ID0geyAubW50ID0gbmQucGF0aC5tbnQsIC5kZW50cnkgPSBuZC5wYXRoLmRl bnRyeSB9Ow0KKyAgICAgICAgc3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3Bl bigmdG1wX3BhdGgsIGZsYWdzLCBjdXJyZW50X2NyZWQoKSk7DQorI2Vsc2UN CisgICAgICAgIHN0cnVjdCBmaWxlICpmID0gZGVudHJ5X29wZW4oJnBhdGgs IGZsYWdzLCBjdXJyZW50X2NyZWQoKSk7DQorI2VuZGlmDQogCWlmIChJU19F UlIoZikpIHsNCiAJICAgIHJldCA9IFBUUl9FUlIoZik7DQogCSAgICBwcmlu dGsoIm5ucGZzX2Jsb2NrX29wZW4oJXMpIG9wZW4gZmFpbGVkOiAlZFxuIiwg Y2FjaGVuYW1lLCAtcmV0KTsNCiAJICAgIG5ucGZzX2RlYnVnX29vcHMoKTsN Ci0JICAgIHBhdGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICBwYXRoX3B1 dCgmbmQucGF0aCk7DQorI2Vsc2UNCisJICAgIHBhdGhfcHV0KCZwYXRoKTsN CisjZW5kaWYNCiAJfSBlbHNlIHsNCiAJICAgICpmaWxlID0gZjsNCiAJfQ0K QEAgLTQyNCw4ICs1MzIsMTMgQEAgbm5wZnNfYmxvY2tfb3BlbihzdHJ1Y3Qg bm5wZnNfbm9kZSAqbm9kZQ0KICAgICAvKiBwYXRoX3JlbGVhc2UoKSBpcyB1 c3VhbGx5IGhhbmRsZWQgb24gY2xvc2UgKi8NCiANCiAgb3V0Og0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0K ICAgICBjdXJyZW50LT5mc3VpZCA9IHNhdmV1aWQ7DQogICAgIGN1cnJlbnQt PmZzZ2lkID0gc2F2ZWdpZDsNCisjZWxzZQ0KKyAgICByZXZlcnRfY3JlZHMo b2xkX2NyZWQpOw0KKyAgICBwdXRfY3JlZChvdmVycmlkZV9jcmVkKTsNCisj ZW5kaWYNCiANCiAgICAgcmV0dXJuIHJldDsNCiB9DQpkaWZmIC11cHJOIC1Y bm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfY29tbW9u LmMgYXJsYS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmc19jb21t b24uYw0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19jb21tb24u YwkyMDA2LTEyLTExIDE3OjMxOjQ2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFy bGEtZm9yLWxpbnV4LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfY29tbW9uLmMJ MjAxNi0wMS0xMyAxODo1ODo1Ny42MTA4MzE5MTAgKzAxMDANCkBAIC0xMTIs MTAgKzExMiwxNSBAQCBubnBmc19wcmludF9hbGlhc2VzKGNvbnN0IHN0cnVj dCBpbm9kZSAqDQogdm9pZA0KIG5ucGZzX3ByaW50X2FsaWFzZXNfcmVhbChj b25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0KIHsNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVj dCBsaXN0X2hlYWQgKmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqYWxpYXM7DQorI2VuZGlmDQogICAgIHN0cnVjdCBkZW50cnkgKmRl bnRyeTsNCiAgICAgaW50IGJhaWxvdXQgPSAxMDA7DQogDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBh bGlhcyA9IGlub2RlLT5pX2RlbnRyeS5uZXh0Ow0KICAgICB3aGlsZSAoYWxp YXMgIT0gJmlub2RlLT5pX2RlbnRyeSkgew0KIAlpZiAoLS1iYWlsb3V0IDwg MCkgew0KQEAgLTEzMSw2ICsxMzYsMjQgQEAgbm5wZnNfcHJpbnRfYWxpYXNl c19yZWFsKGNvbnN0IHN0cnVjdCBpbg0KIAl9DQogCWFsaWFzID0gYWxpYXMt Pm5leHQ7DQogICAgIH0NCisjZWxzZQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDksMCkNCisgICAgaGxpc3RfZm9yX2Vh Y2hfZW50cnkoZGVudHJ5LCBhbGlhcywgJmlub2RlLT5pX2RlbnRyeSwgZF9h bGlhcykgew0KKyNlbHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGRl bnRyeSwgJmlub2RlLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbmRpZg0K KwlpZiAoLS1iYWlsb3V0IDwgMCkgew0KKwkgICAgcHJpbnRrKCIgLi4uIik7 DQorCSAgICBicmVhazsNCisJfQ0KKwlpZiAoZGVudHJ5KSB7DQorCSAgICBw cmludGsoIiAlLipzKCVwKSIsIChpbnQpZGVudHJ5LT5kX25hbWUubGVuLA0K KwkJICAgZGVudHJ5LT5kX25hbWUubmFtZSwgZGVudHJ5KTsNCisJICAgIGlm IChubnBmc19kX2VudHJ5X3VuaGFzaGVkKCZkZW50cnktPmRfaGFzaCkpDQor CQlwcmludGsoIih1bmhhc2hlZCkiKTsNCisJfQ0KKyAgICB9DQorI2VuZGlm DQogICAgIHByaW50aygiXG4iKTsNCiB9DQogDQpkaWZmIC11cHJOIC1Ybm9k aWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfZGV2LmMgYXJs YS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmc19kZXYuYw0KLS0t IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19kZXYuYwkyMDA2LTEwLTI0 IDE4OjMzOjM2LjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtZm9yLWxpbnV4 LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfZGV2LmMJMjAxNi0wMS0xNCAwMDoz NDoxNS4yOTEwNDQ3NDcgKzAxMDANCkBAIC0zMDAsNyArMzAwLDkgQEAgbm5w ZnNfaW52YWxpZGF0ZV9hbGwoc3RydWN0IG5ucGZzICpubnBmcw0KICAgICBO TlBGU0RFQihYREVCTk9ERSwgKCJmcmVlX2FsbF9ubnBmc19ub2RlcyBzdGFy dGluZ1xuIikpOw0KIA0KICAgICBzaHJpbmtfZGNhY2hlX3NiKG5ucGZzLT5z Yik7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDIsNiwzNykNCiAgICAgaW52YWxpZGF0ZV9pbm9kZXMobm5wZnMtPnNiKTsN CisjZW5kaWYNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJOT0RFLCAoImZy ZWVfYWxsX25ucGZzX25vZGVzIGRvbmVcbiIpKTsNCiB9DQpAQCAtNTA1LDEy ICs1MDcsMjMgQEAgbm5wZnNfZGV2d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUs IGNvbnN0DQogLyoNCiAgKiBOb3QgdXNlZC4NCiAgKi8NCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KIHN0YXRp YyBpbnQNCiBubnBmc19kZXZpb2N0bChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSwNCiAJICAgICAgIHVuc2lnbmVkIGludCBjbWQs IHVuc2lnbmVkIGxvbmcgYXJnKQ0KKyNlbHNlDQorc3RhdGljIGxvbmcNCitu bnBmc191bmxvY2tlZF9kZXZpb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCisJ ICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQ0K KyNlbmRpZg0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDM2KQ0KICAgICBOTlBGU0RFQihYREVCREVWLCAoIm5u cGZzX2RldmlvY3RsIGRldiA9ICVkLCBmbGFncyA9ICVkXG4iLA0KIAkJICAg ICAgIGlub2RlLT5pX3JkZXYsIGZpbGUtPmZfZmxhZ3MpKTsNCisjZWxzZQ0K KyAgICBOTlBGU0RFQihYREVCREVWLCAoIm5ucGZzX2RldmlvY3RsIGRldiA9 ICVkLCBmbGFncyA9ICVkXG4iLA0KKwkJICAgICAgIGZpbGUtPmZfZGVudHJ5 LT5kX2lub2RlLT5pX3JkZXYsIGZpbGUtPmZfZmxhZ3MpKTsNCisjZW5kaWYN CiAgICAgcmV0dXJuIC1FSU5WQUw7DQogfQ0KIA0KQEAgLTk1Myw3ICs5NjYs MTEgQEAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19mb3BzID0gew0K ICAgICByZWFkOgkJbm5wZnNfZGV2cmVhZCwNCiAgICAgd3JpdGU6CQlubnBm c19kZXZ3cml0ZSwNCiAgICAgcG9sbDoJCW5ucGZzX2RldnBvbGwsDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikN CiAgICAgaW9jdGw6CQlubnBmc19kZXZpb2N0bCwNCisjZWxzZQ0KKyAgICB1 bmxvY2tlZF9pb2N0bDoJbm5wZnNfdW5sb2NrZWRfZGV2aW9jdGwsDQorI2Vu ZGlmDQogICAgIHJlbGVhc2U6CQlubnBmc19kZXZjbG9zZSwNCiAgICAgb3Bl bjoJCW5ucGZzX2Rldm9wZW4sDQogfTsNCkBAIC05NjgsOCArOTg1LDEzIEBA IG5ucGZzX2luaXRfZGV2aWNlKHZvaWQpDQogCWluaXRfd2FpdHF1ZXVlX2hl YWQoJihubnBmc1tpXS53YWl0X3F1ZXVlKSk7DQogCW5ucGZzX2luaXRxKCZu bnBmc1tpXS5tZXNzYWdlcSk7DQogCW5ucGZzX2luaXRxKCZubnBmc1tpXS5z bGVlcHEpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMzcpDQogCWluaXRfTVVURVgoJm5ucGZzW2ldLmluYWN0aXZl X3NlbSk7DQogCWluaXRfTVVURVgoJm5ucGZzW2ldLmNoYW5uZWxfc2VtKTsN CisjZWxzZQ0KKwlzZW1hX2luaXQoJm5ucGZzW2ldLmluYWN0aXZlX3NlbSwg MSk7DQorCXNlbWFfaW5pdCgmbm5wZnNbaV0uY2hhbm5lbF9zZW0sIDEpOw0K KyNlbmRpZg0KIAlJTklUX0xJU1RfSEVBRCgmbm5wZnNbaV0uaW5hY3RpdmVf bGlzdCk7DQogCW5ucGZzW2ldLm5ub2RlcyA9IDA7DQogICAgIH0NCmRpZmYg LXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBm c19pbm9kZW9wcy5jIGFybGEtZm9yLWxpbnV4LTMuMTgvbm5wZnMvbGludXgv bm5wZnNfaW5vZGVvcHMuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9u bnBmc19pbm9kZW9wcy5jCTIwMDYtMTItMTEgMTc6MzU6MjYuMDAwMDAwMDAw ICswMTAwDQorKysgYXJsYS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9u bnBmc19pbm9kZW9wcy5jCTIwMTYtMDEtMTQgMDA6NDE6MDguODYzMDY5Njgw ICswMTAwDQpAQCAtNDAsNiArNDAsNyBAQA0KICNpbmNsdWRlIDxubnBmcy9u bnBmc19kZXYuaD4NCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNfZGlyZW50Lmg+ DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX3N5c2NhbGxzLmg+DQorI2luY2x1 ZGUgPGxpbnV4L2Fpby5oPg0KICNpbmNsdWRlIDxsaW51eC9iaW5mbXRzLmg+ DQogI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4NCiAjaW5jbHVkZSA8bGludXgv cGFnZW1hcC5oPg0KQEAgLTQ4LDE3ICs0OSwyOSBAQA0KICNpbmNsdWRlIDxh c20vZmNudGwuaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1SQ1NJRCgiJElkOiBu bnBmc19pbm9kZW9wcy5jLHYgMS4yMjMgMjAwNi8xMi8xMSAxNjozNToyNiB0 b2wgRXhwICQiKTsNCitSQ1NJRCgiJElkOiBubnBmc19pbm9kZW9wcy5jLHYg MS4yMjYgMjAxMC8wOC8wOCAyMDo0MzowNCB0b2wgRXhwICQiKTsNCiAjZW5k aWYNCiANCiBzdGF0aWMgaW50DQogbm5wZnNfZnN5bmNfaW50KHN0cnVjdCBm aWxlICpmaWxlLCB1X2ludCBmbGFnKTsNCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIGludA0K IG5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0 cnVjdCBuYW1laWRhdGEgKm5kKTsNCi0NCisjZWxzZQ0KIHN0YXRpYyBpbnQN CitubnBmc19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1 bnNpZ25lZCBpbnQgZmxhZ3MpOw0KKyNlbmRpZg0KKw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorc3RhdGlj DQoraW50DQogbm5wZnNfZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5 KTsNCisjZWxzZQ0KK3N0YXRpYw0KK2ludA0KK25ucGZzX2RfZGVsZXRlKGNv bnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7DQorI2VuZGlmDQogDQogc3Rh dGljIHZvaWQNCiBubnBmc19kX3JlbGVhc2Uoc3RydWN0IGRlbnRyeSAqZGVu dHJ5KTsNCkBAIC0xMDUsNyArMTE4LDcgQEAgbm5wZnNfdm1hX2Nsb3NlIChz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKg0KIH0NCiANCiBzdGF0aWMgc3RydWN0 IHZtX29wZXJhdGlvbnNfc3RydWN0IG5ucGZzX2ZpbGVfdm1fb3BzID0gew0K LSAgICAubm9wYWdlCT0gZmlsZW1hcF9ub3BhZ2UsDQorICAgIC5mYXVsdCAg ICAgID0gZmlsZW1hcF9mYXVsdCwNCiAgICAgLmNsb3NlCT0gbm5wZnNfdm1h X2Nsb3NlLA0KIH07DQogDQpAQCAtMTM0LDEyICsxNDcsMTQgQEAgbm5wZnNf cHJpbnRfcGF0aChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQogICoNCiAgKi8N CiANCisjaWYgMA0KIHZvaWQNCiBubnBmc19wcmludF9sb2NrKGNoYXIgKnMs IHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkNCiB7DQogICAgIE5OUEZTREVCKFhE RUJMT0NLLCAoImxvY2s6ICVzIHNlbTogJXAgY291bnQ6ICVkXG4iLA0KIAkJ ICAgICAgcywgc2VtLCAoaW50KWF0b21pY19yZWFkKCZzZW0tPmNvdW50KSkp Ow0KIH0NCisjZW5kaWYNCiANCiAvKg0KICAqDQpAQCAtMTg1LDcgKzIwMCw3 IEBAIG5ucGZzX2RfaXB1dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnUN CiAgICAgTk5QRlNERUIoWERFQlZOT1BTLA0KIAkgICAgICgibm5wZnNfZF9p cHV0OiBkZW50cnkgJXAsIGlub2RlICVwXG4iLCBkZW50cnksIGlub2RlKSk7 DQogICAgIA0KLSAgICBpZiAobm9kZS0+ZmxhZ3MgJiBOTlBGU19OT0RFX0lQ VVQpIC8qIFhYWCBsb2NraW5nICovDQorICAgIGlmIChub2RlLT5mbGFncyAm IE5OUEZTX05PREVfSVBVVCkgLyogWFhYIGxvY2tpbmcuIG5ldmVyIHNldD8g Ki8NCiAJbm5wZnNfaXJlbGUoaW5vZGUpOw0KICAgICBlbHNlDQogCWlwdXQo aW5vZGUpOw0KQEAgLTIxMiw4ICsyMjcsMTMgQEAgbm5wZnNfaW5vZGVfdmFs aWQoc3RydWN0IGlub2RlICppbm9kZSkNCiAgKiBubnBmc19sb29rdXAgbm93 IHJldHVybnMgYSBkZW50cnkuDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyBzdHJ1 Y3QgZGVudHJ5ICoNCiBubnBmc19sb29rdXAgKHN0cnVjdCBpbm9kZSAqZGly LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5k KQ0KKyNlbHNlDQorc3RhdGljIHN0cnVjdCBkZW50cnkgKg0KK25ucGZzX2xv b2t1cCAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgdW5zaWduZWQgaW50IGZsYWdzKQ0KKyNlbmRpZg0KIHsNCiAgICAgc3Ry dWN0IG5ucGZzX21lc3NhZ2VfZ2V0bm9kZSBtc2c7DQogICAgIHN0cnVjdCBu bnBmcyAqbm5wZnNwOw0KQEAgLTI0MCw3ICsyNjAsMTEgQEAgbm5wZnNfbG9v a3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0DQogDQogCW1zZy5oZWFk ZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVE5PREU7DQogICAgICAgICANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwy OCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQor ICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRp Zg0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogCW1zZy5w YXJlbnRfaGFuZGxlID0gZC0+aGFuZGxlOw0KICAgICAgICAgDQpAQCAtMzEw LDcgKzMzNCwxMSBAQCBubnBmc19vcGVuX3ZhbGlkKHN0cnVjdCBpbm9kZSAq dnAsIHVfaW50DQogICAgICAgew0KIAlzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9v cGVuIG1zZzsNCiAJbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfT1BF TjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9O KDIsNiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNl bHNlDQorICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0K KyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQog CW1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KIAltc2cudG9rZW5zID0gdG9r Ow0KQEAgLTQyNSw3ICs0NTMsMTEgQEAgbm5wZnNfZnN5bmNfaW50KHN0cnVj dCBmaWxlICpmaWxlLCB1X2ludA0KIA0KIAltc2cuaGVhZGVyLm9wY29kZSA9 IE5OUEZTX01TR19QVVREQVRBOw0KIAltc2cuY3JlZC5wYWcgPSBubnBmc19n ZXRfcGFnKCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVp ZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91 aWQoKTsNCisjZW5kaWYNCiAJbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQog CW1zZy5mbGFnICAgPSBmbGFnOw0KIAltc2cub2Zmc2V0ID0gb2ZmOw0KQEAg LTQ2MCwxNCArNDkyLDI3IEBAIG5ucGZzX2ZzeW5jX2ludChzdHJ1Y3QgZmls ZSAqZmlsZSwgdV9pbnQNCiAgKg0KICAqLw0KIA0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzUpDQogc3RhdGljIGlu dA0KIG5ucGZzX2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIGludCBkYXRhc3luYykNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEsMCkNCitzdGF0aWMgaW50 DQorbm5wZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZpbGUsIGludCBkYXRhc3lu YykNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19mc3luYyhzdHJ1Y3Qg ZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLCBpbnQgZGF0 YXN5bmMpDQorI2VuZGlmDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg Pj0gS0VSTkVMX1ZFUlNJT04oMiw2LDM1KQ0KKyAgICBzdHJ1Y3QgZGVudHJ5 ICpkZW50cnkgPSBmaWxlLT5mX3BhdGguZGVudHJ5Ow0KKyNlbmRpZg0KICAg ICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRy eSk7DQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG47DQogICAgIGludCBlcnJvciA9IDA7DQogDQorICAg ICh2b2lkKW5ucGZzcDsNCisNCiAgICAgZXJyb3IgPSBubnBmc19pbm9kZV92 YWxpZChpbm9kZSk7DQogICAgIGlmIChlcnJvcikNCiAJcmV0dXJuIGVycm9y Ow0KQEAgLTUxMSw3ICs1NTYsMTEgQEAgbm5wZnNfYXR0cl92YWxpZChzdHJ1 Y3QgaW5vZGUgKiB2cCwgdV9pbg0KICAgICAgICAgICAgIHN0cnVjdCBubnBm c19tZXNzYWdlX2dldGF0dHIgbXNnOw0KIA0KICAgICAgICAgICAgIG1zZy5o ZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVEFUVFI7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAg ICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNl DQorICAgICAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsN CisjZW5kaWYNCiAgICAgICAgICAgICBtc2cuY3JlZC5wYWcgPSBwYWc7DQog ICAgICAgICAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgICAg ICAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cu aGVhZGVyLCBzaXplb2YobXNnKSk7DQpAQCAtNTUxLDcgKzYwMCwxMSBAQCBu bnBmc19yaWdodHNfdmFsaWQoc3RydWN0IGlub2RlICogdnAsIG5uDQogICAg ICAgICAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQog DQogICAgICAgICAgICAgbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0df R0VUQVRUUjsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBj dXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICAgICAgICAgIG1z Zy5jcmVkLnBhZyA9IHBhZzsNCiAgICAgICAgICAgICBtc2cuaGFuZGxlID0g eG4tPmhhbmRsZTsNCiAgICAgICAgICAgICBlcnJvciA9IG5ucGZzX21lc3Nh Z2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCkBA IC01OTIsMTEgKzY0NSwyNSBAQCBjaGVja19yaWdodHMgKG5ucGZzX3JpZ2h0 cyByaWdodHMsIGludCBtDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0K ICAqLw0KIA0KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMiw2LDM4KSB8fCBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMywxLDApKQ0KK3N0YXRpYyBpbnQNCitubnBmc19wZXJtaXNz aW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtb2RlKQ0KKyNlbHNlDQog c3RhdGljIGludA0KLW5ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICpp bm9kZSwgaW50IG1vZGUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQ0KK25ucGZz X3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUsIHVu c2lnbmVkIGludCBmbGFncykNCisjZW5kaWYNCiB7DQogICAgIGludCBlcnJv ciA9IDA7DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IG5ucGZzX2dldF9wYWco KTsNCisgICAgbm5wZnNfcGFnX3QgcGFnOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApDQorICAgIGlmIChtb2Rl ICYgTUFZX05PVF9CTE9DSykNCisgICAgICAgIHJldHVybiAtRUNISUxEOw0K KyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQorICAgIGlmIChmbGFncyAmIElQRVJNX0ZMQUdfUkNVKQ0KKyAg ICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQorI2VuZGlmDQorDQorICAgIHBhZyA9 IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJW Tk9QUywgKCJubnBmc19hY2Nlc3MgKCVwKSBtb2RlID0gMCVvIGFsaWFzZXM6 IiwgaW5vZGUsIG1vZGUpKTsNCiAgICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhp bm9kZSk7DQpAQCAtNjM2LDcgKzcwMywxMSBAQCBubnBmc19kb19nZXRkYXRh KHN0cnVjdCBubnBmc19ub2RlICp4biwNCiAgICAgaW50IGVycm9yOw0KIA0K ICAgICBtc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19HRVREQVRBOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2 LDI4KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vs c2UNCisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5k aWYNCiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAg ICBtc2cuaGFuZGxlID0geG4tPmhhbmRsZTsNCiAgICAgbXNnLnRva2VucyA9 IHRvazsNCkBAIC03ODksMTkgKzg2MCwyMiBAQCBpbnQgbm5wZnNfZmlsZV9t bWFwKHN0cnVjdCBmaWxlICogZmlsZSwNCiAgKg0KICAqLw0KIA0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE2LDApDQog c3RhdGljIHNzaXplX3QNCiBubnBmc19haW9fcmVhZChzdHJ1Y3Qga2lvY2Ig KmlvY2IsDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigyLDYsMTkpDQogCSAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv diwgdW5zaWduZWQgbG9uZyBucl9zZWdzLA0KKwkgICAgICAgbG9mZl90IHBv cykNCiAjZWxzZQ0KLQkgICAgICAgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90 IGNvdW50LA0KK3N0YXRpYyBzc2l6ZV90DQorbm5wZnNfcmVhZF9pdGVyKHN0 cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bykNCiAjZW5k aWYNCi0JICAgICAgIGxvZmZfdCBwb3MpDQogew0KICAgICBpbnQgZXJyb3Ig PSAwOw0KICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7 DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDMsMTIsMCkNCiAgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtpX2xl ZnQ7DQorI2Vsc2UNCisgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtpX25i eXRlczsNCiAjZW5kaWYNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9k ZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQpAQCAtODEwLDE2ICs4 ODQsMjAgQEAgbm5wZnNfYWlvX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLA0K IAlOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfcmVhZF9maWxlKCVwKTog dG9rZW5zOiAweCV4XG4iLA0KIAkJCSAgICAgaW5vZGUsIHhuLT50b2tlbnMp KTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxNiwwKQ0KICAgICBlcnJvciA9IG5ucGZzX2RhdGFfdmFsaWQoaW5v ZGUsIE5OUEZTX0RBVEFfUiwgcG9zLCBwb3MgKyBjb3VudCk7DQorI2Vsc2UN CisgICAgZXJyb3IgPSBubnBmc19kYXRhX3ZhbGlkKGlub2RlLCBOTlBGU19E QVRBX1IsIGlvY2ItPmtpX3BvcywgaW9jYi0+a2lfcG9zICsgY291bnQpOw0K KyNlbmRpZg0KICAgICBpZiAoZXJyb3IpIHsNCiAJTk5QRlNERUIoWERFQlZO T1BTLCAoIm5ucGZzX3JlYWRfZmlsZTogZGF0YSBub3QgdmFsaWQgJWRcbiIs IGVycm9yKSk7DQogCXJldHVybiBlcnJvcjsNCiAgICAgfQ0KICAgICANCi0j aWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwx OSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o MywxNiwwKQ0KICAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV9haW9fcmVhZChp b2NiLCBpb3YsIG5yX3NlZ3MsIHBvcyk7DQogI2Vsc2UNCi0gICAgZXJyb3Ig PSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQoaW9jYiwgYnVmLCBjb3VudCwgcG9z KTsNCisgICAgZXJyb3IgPSBnZW5lcmljX2ZpbGVfcmVhZF9pdGVyKGlvY2Is IHRvKTsNCiAjZW5kaWYNCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5u cGZzX3JlYWRfZmlsZTogZXJyb3IgPSAlZFxuIiwgZXJyb3IpKTsNCiAgICAg cmV0dXJuIGVycm9yOw0KQEAgLTgyOSwyMyArOTA3LDMwIEBAIG5ucGZzX2Fp b19yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwNCiAgKg0KICAqLw0KIA0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE2LDAp DQogc3RhdGljIHNzaXplX3QNCiBubnBmc19haW9fd3JpdGUoc3RydWN0IGtp b2NiICppb2NiLA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDE5KQ0KIAkJY29uc3Qgc3RydWN0IGlvdmVjICppb3Ys IHVuc2lnbmVkIGxvbmcgbnJfc2VncywNCisJCWxvZmZfdCBwb3MpDQogI2Vs c2UNCi0JCWNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwg DQorc3RhdGljIHNzaXplX3QNCitubnBmc193cml0ZV9pdGVyKHN0cnVjdCBr aW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKQ0KICNlbmRpZg0K LQkJbG9mZl90IHBvcykNCiB7DQogICAgIGludCBlcnJvciA9IDA7DQogICAg IHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi0+a2lfZmlscDsNCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMiww KQ0KICAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lfbGVmdDsNCisjZWxz ZQ0KKyAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lfbmJ5dGVzOw0KICNl bmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50 cnktPmRfaW5vZGU7DQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4biA9IFZO T0RFX1RPX1hOT0RFKGlub2RlKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KICAgICBsb2ZmX3QgcmVhbHBv cyA9IHBvczsNCisjZWxzZQ0KKyAgICBsb2ZmX3QgcmVhbHBvcyA9IGlvY2It PmtpX3BvczsNCisjZW5kaWYNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJW Tk9QUywgKCJubnBmc19haW9fd3JpdGUoJXApOiB0b2tlbnM6IDB4JXhcbiIs DQogCQkJIGlub2RlLCB4bi0+dG9rZW5zKSk7DQpAQCAtODU5LDEwICs5NDQs MTAgQEAgbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwNCiAJ cmV0dXJuIGVycm9yOw0KICAgICB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJy b3IgPSBnZW5lcmljX2ZpbGVfYWlvX3dyaXRlKGlvY2IsIGlvdiwgbnJfc2Vn cywgcG9zKTsNCiAjZWxzZQ0KLSAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV9h aW9fd3JpdGUoaW9jYiwgYnVmLCBjb3VudCwgcG9zKTsNCisgICAgZXJyb3Ig PSBnZW5lcmljX2ZpbGVfd3JpdGVfaXRlcihpb2NiLCBmcm9tKTsNCiAjZW5k aWYNCiAgICAgaWYgKCFJU19FUlJfVkFMVUUoZXJyb3IpKQ0KIAl4bi0+Zmxh Z3MgfD0gTk5QRlNfREFUQV9ESVJUWTsgLyogWFhYIHJhY2UgKi8NCkBAIC04 NzEsOSArOTU2LDE5IEBAIG5ucGZzX2Fpb193cml0ZShzdHJ1Y3Qga2lvY2Ig KmlvY2IsDQogICAgIHJldHVybiBlcnJvcjsNCiB9DQogDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMywwKQ0KIHN0YXRp YyBpbnQNCiBubnBmc19jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj dCBkZW50cnkgKmRlbnRyeSwNCiAJICAgICBpbnQgbW9kZSwgc3RydWN0IG5h bWVpZGF0YSAqbmQpDQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw2LDApDQorc3RhdGljIGludA0KK25ucGZzX2NyZWF0 ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0K KwkgICAgIHVtb2RlX3QgbW9kZSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQor I2Vsc2UNCitzdGF0aWMgaW50DQorbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9k ZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQorCSAgICAgdW1vZGVf dCBtb2RlLCBib29sIGV4Y2wpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3Qg bm5wZnMgKm5ucGZzcDsNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuOw0K QEAgLTkwMyw5ICs5OTgsMTcgQEAgbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9k ZSAqZGlyLCBzdHJ1Y3QgZA0KICAgICBYQV9DTEVBUigmbXNnLmF0dHIpOw0K ICAgICBYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KICAgICBYQV9T RVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfUkVHKTsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAg ICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisj ZWxzZQ0KKyAgICBYQV9TRVRfR0lEKCZtc2cuYXR0ciwgY3VycmVudF9mc2dp ZCgpKTsNCisjZW5kaWYNCiAgICAgbXNnLm1vZGUgPSAwOwkJLyogWFhYICov DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigy LDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisj ZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNl bmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQog ICAgIGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhl YWRlciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBA IC05NDYsNyArMTA0OSwxMSBAQCBubnBmc191bmxpbmsgKHN0cnVjdCBpbm9k ZSAqIGRpciwgc3RydWN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uYW1lLCBk ZW50cnktPmRfbmFtZS5uYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBG U19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgp DQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0K KyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0K ICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVy cm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwg c2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05OTEs NyArMTA5OCwxMSBAQCBubnBmc19yZW5hbWUgKHN0cnVjdCBpbm9kZSAqIG9s ZF9kaXIsIHN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uZXdfbmFtZSwgbmV3 X2RlbnRyeS0+ZF9uYW1lLm5hbWUsIHNpemVvZihtc2cubmV3X25hbWUpKSA+ PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQog CQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04o Miw2LDI4KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQor I2Vsc2UNCisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisj ZW5kaWYNCiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0K ICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5o ZWFkZXIsIHNpemVvZihtc2cpKTsNCiAgICAgaWYgKGVycm9yID09IDApDQpA QCAtMTAwOCw4ICsxMTE5LDEzIEBAIG5ucGZzX3JlbmFtZSAoc3RydWN0IGlu b2RlICogb2xkX2Rpciwgc3QNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiAN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywz LDApDQogc3RhdGljIGludA0KIG5ucGZzX21rZGlyKHN0cnVjdCBpbm9kZSAq IGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSkNCisjZWxz ZQ0KK3N0YXRpYyBpbnQNCitubnBmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiBk aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKQ0KKyNl bmRpZg0KIHsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQogICAgIHN0 cnVjdCBubnBmc19ub2RlICp4bjsNCkBAIC0xMDQwLDkgKzExNTYsMTcgQEAg bm5wZnNfbWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZA0KIAlY QV9DTEVBUigmbXNnLmF0dHIpOw0KIAlYQV9TRVRfTU9ERSgmbXNnLmF0dHIs IG1vZGUpOw0KIAlYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVf RElSKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJT SU9OKDIsNiwyOCkNCiAJWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQt PmZzZ2lkKTsNCisjZWxzZQ0KKyAgICAgICAgWEFfU0VUX0dJRCgmbXNnLmF0 dHIsIGN1cnJlbnRfZnNnaWQoKSk7DQorI2VuZGlmDQogDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1z Zy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAg bXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNn LmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAllcnJvciA9IG5ucGZz X21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cp KTsNCiAJaWYgKGVycm9yID09IDApDQpAQCAtMTA4Myw3ICsxMjA3LDExIEBA IG5ucGZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGQNCiAg ICAgbXNnLnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICBpZiAo c3RybGNweShtc2cubmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSwgc2l6ZW9m KG1zZy5uYW1lKSkgPj0gTk5QRlNfTUFYX05BTUUpDQogCSAgICByZXR1cm4g LUVOQU1FVE9PTE9ORzsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtF Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3Vy cmVudC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJl bnRfdWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZz X2dldF9wYWcoKTsNCiAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhu bnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogICAgIGlmIChl cnJvciA9PSAwKQ0KQEAgLTExMjgsNyArMTI1NiwxMSBAQCBzdGF0aWMgaW50 IG5ucGZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkDQogCWlmIChzdHJsY3B5 KG1zZy5uYW1lLCBuYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19N QVhfTkFNRSkNCiAJICAgIHJldHVybiAtRU5BTUVUT09MT05HOw0KIA0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4 KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisg ICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlm DQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJZXJyb3Ig PSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXpl b2YobXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KQEAgLTExNTcsMjkgKzEy ODksNDcgQEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0cnVjdCBpbm9k 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 MTg4LDggKzEzMzgsMTMgQEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0 cnVjdCBpbm9kZSAqZA0KIC8qDQogICogV2UgaG9sZCBpX211dGV4Lg0KICAq Lw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDExLDApDQogc3RhdGljIGludA0KIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZp bGUgKiBmaWxlLCB2b2lkICogZGlyZW50LCBmaWxsZGlyX3QgZmlsbGRpcikN CisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19pdGVyYXRlKHN0cnVjdCBm aWxlICogZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpDQorI2VuZGlm DQogew0KICAgICBpbnQgZXJyb3I7DQogICAgIGxvZmZfdCBvZmZzZXQsIGJl Z2luX29mZnNldDsNCkBAIC0xMjY0LDYgKzE0MTksNyBAQCBubnBmc19yZWFk ZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqDQogCQkgICAgKGludCkg eGRpcmVudC0+ZF9uYW1sZW4sDQogCQkgICAgKGludCkgKG9mZnNldCtiZWdp bl9vZmZzZXQpKSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAJICAgIGlmICh4ZGlyZW50LT5kX2Zp bGVubyAhPSAwDQogCQkmJiAoZmlsbGRpcl9lcnJvciA9IGZpbGxkaXIgKGRp cmVudCwNCiAJCQkJICAgICB4ZGlyZW50LT5kX25hbWUsDQpAQCAtMTI3NSw2 ICsxNDMxLDE4IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJCQkgKCJubnBmc19yZWFkZGlyIGZpbGxkaXI6ICVkXG4i LCBmaWxsZGlyX2Vycm9yKSk7DQogCQlicmVhazsNCiAJICAgIH0NCisjZWxz ZQ0KKwkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9IDANCisJCSYmIChm aWxsZGlyX2Vycm9yID0gZGlyX2VtaXQgKGN0eCwNCisJCQkJICAgICB4ZGly ZW50LT5kX25hbWUsDQorCQkJCSAgICAgeGRpcmVudC0+ZF9uYW1sZW4sDQor CQkJCSAgICAgeGRpcmVudC0+ZF9maWxlbm8sDQorCQkJCSAgICAgRFRfVU5L Tk9XTikpIDwgMCkgew0KKwkJTk5QRlNERUIoWERFQlJFQURESVIsDQorCQkJ ICgibm5wZnNfcmVhZGRpciBmaWxsZGlyOiAlZFxuIiwgZmlsbGRpcl9lcnJv cikpOw0KKwkJYnJlYWs7DQorCSAgICB9DQorI2VuZGlmDQogCSAgICBvZmZz ZXQgKz0geGRpcmVudC0+ZF9yZWNsZW47DQogDQogCSAgICBpZiAoeGRpcmVu dC0+ZF9yZWNsZW4gPT0gMCkgew0KQEAgLTEzOTgsNyArMTU2NiwxMSBAQCBu bnBmc19zZXRhdHRyIChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0DQogICAg ICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9wdXRhdHRyIG1zZzsNCiANCiAg ICAgICAgIG1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1BVVEFUVFI7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigy LDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxz ZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisj ZW5kaWYNCiAJbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAg ICAgICAgbXNnLmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgICAgICBubnBm c19pYXR0cjJhdHRyKHhuLCBhdHRyLCAmbXNnLmF0dHIpOw0KQEAgLTE0MjIs NiArMTU5NCw4IEBAIG5ucGZzX3JlbGVhc2VfZmlsZSAoc3RydWN0IGlub2Rl ICppbm9kZSwNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuOw0KICAgICBp bnQgZXJyb3IgPSAwOw0KIA0KKyAgICAodm9pZClubnBmc3A7DQorDQogICAg IE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWxlYXNlX2ZpbGVcbiIp KTsNCiANCiAgICAgZXJyb3IgPSBubnBmc19pbm9kZV92YWxpZChpbm9kZSk7 DQpAQCAtMTQ1MCwxMyArMTYyNCw4IEBAIG5ucGZzX3JlbGVhc2VfZmlsZSAo c3RydWN0IGlub2RlICppbm9kZSwNCiAgKg0KICAqLw0KIA0KLSNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0KIHN0 YXRpYyBpbnQNCiBubnBmc19mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxf b3duZXJfdCBpZCkNCi0jZWxzZQ0KLXN0YXRpYyBpbnQNCi1ubnBmc19mbHVz aChzdHJ1Y3QgZmlsZSAqZmlsZSkNCi0jZW5kaWYNCiB7DQogICAgIE5OUEZT REVCKFhERUJWTk9QUywgKCJubnBmc19mbHVzaFxuIikpOw0KIA0KQEAgLTE0 NzAsOCArMTYzOSwxMyBAQCBubnBmc19mbHVzaChzdHJ1Y3QgZmlsZSAqZmls ZSkNCiAgKiBSZXR1cm4gMSBpZiBgZGVudHJ5JyBpcyBzdGlsbCB2YWxpZCwg b3RoZXJ3aXNlIDAuDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KK3N0YXRpYyBpbnQNCitubnBm c19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qg bmFtZWlkYXRhICpuZCkNCisjZWxzZQ0KIHN0YXRpYyBpbnQNCi1ubnBmc19k X3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgbmFt ZWlkYXRhICpuZCkgDQorbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKQ0KKyNlbmRpZg0KIHsN CiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IERFTlRSWV9UT19JTk9ERShk ZW50cnkpOw0KICAgICBOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfZF9y ZXZhbGlkYXRlICVwIFwiJS4qc1wiIChpbm9kZSAlcClcbiIsDQpAQCAtMTUx OSw5ICsxNjkzLDE1IEBAIG5ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkNCiAgICAgcmV0dXJuIDA7DQogfQ0KIA0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogc3Rh dGljDQogaW50DQogbm5wZnNfZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVu dHJ5KQ0KKyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUo Y29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbmRpZg0KIHsNCiAg ICAgc3RydWN0IGlub2RlICppbm9kZTsNCiAgICAgc3RydWN0IG5ucGZzX25v ZGUgKnhuOw0KQEAgLTE1NDYsOCArMTcyNiw5IEBAIG5ucGZzX2RfZGVsZXRl KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCiB9DQogDQogc3RhdGljIHNzaXpl X3QNCi1ubnBmc19zZW5kZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90 ICpwcG9zLCBzaXplX3QgY291bnQsDQotCSAgICAgICByZWFkX2FjdG9yX3Qg YWN0b3IsIHZvaWQgKnRhcmdldCkNCitubnBmc19zcGxpY2VfcmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90ICpwcG9zLA0KKwkJICBzdHJ1Y3QgcGlw ZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgY291bnQsDQorCQkgIHVuc2ln bmVkIGludCBmbGFncykNCiB7DQogICAgIGludCBlcnJvciA9IDA7DQogICAg IHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9k ZTsNCkBAIC0xNTYxLDggKzE3NDIsNyBAQCBubnBmc19zZW5kZmlsZShzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90DQogCU5OUEZTREVCKFhERUJWTk9QUywg KCJubnBmc19zZW5kZmlsZTogZGF0YSBub3QgdmFsaWQgJWRcbiIsIGVycm9y KSk7DQogCXJldHVybiBlcnJvcjsNCiAgICAgfQ0KLQ0KLSAgICBlcnJvciA9 IGdlbmVyaWNfZmlsZV9zZW5kZmlsZShmaWxlLCBwcG9zLCBjb3VudCwgYWN0 b3IsIHRhcmdldCk7DQorICAgIGVycm9yID0gZmlsZS0+Zl9vcC0+c3BsaWNl X3JlYWQoZmlsZSwgcHBvcywgcGlwZSwgY291bnQsIGZsYWdzKTsNCiANCiAg ICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3NlbmRmaWxlOiBlcnJv ciA9ICVkXG4iLCBlcnJvcikpOw0KICAgICByZXR1cm4gZXJyb3I7DQpAQCAt MTYzOSwzNCArMTgxOSwzMSBAQCBubnBmc193cml0ZV9iYWNrcGFnZShzdHJ1 Y3QgcGFnZSAqcGFnZSwNCiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmcgPSBiYWNrZmlsZS0+Zl9tYXBwaW5nOw0KIAl1bnNpZ25lZCBsZW4gPSBQ QUdFX0NBQ0hFX1NJWkU7DQogCXN0cnVjdCBwYWdlICpiYWNrcGFnZTsNCisJ dm9pZCAqZnNkYXRhOw0KIAl1bnNpZ25lZCBsb25nIG9mZnNldDsNCiANCiAJ aW50IGVycm9yOw0KIAkNCi0JZG8gew0KLQkJYmFja3BhZ2UgPSBncmFiX2Nh Y2hlX3BhZ2UobWFwcGluZywgbm5wZnNfZ2V0X2JhY2tpbmRleChwYWdlKSk7 DQotCQlpZiAoIWJhY2twYWdlKSB7DQotCQkJcHJpbnRrKCJubnBmc193cml0 ZV9iYWNrcGFnZTogbm8gcGFnZVxuIik7DQotCQkJcmV0dXJuIC1FSU87DQot CQl9DQorCSh2b2lkKW9mZnNldDsNCiANCi0JCWVycm9yID0gbWFwcGluZy0+ YV9vcHMtPnByZXBhcmVfd3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJ CQkJCSAgICAgIDAsIGxlbik7DQorCWRvIHsNCisJCWVycm9yID0gcGFnZWNh Y2hlX3dyaXRlX2JlZ2luKGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQor CQkJCQkgICAgICBBT1BfRkxBR19VTklOVEVSUlVQVElCTEUsDQorCQkJCQkg ICAgICAmYmFja3BhZ2UsICZmc2RhdGEpOw0KIAkJaWYgKCFlcnJvcikgew0K IAkJCWNvcHlfaGlnaHBhZ2UoYmFja3BhZ2UsIHBhZ2UpOw0KIAkJCWZsdXNo X2RjYWNoZV9wYWdlKGJhY2twYWdlKTsNCi0JCQllcnJvciA9IG1hcHBpbmct PmFfb3BzLT5jb21taXRfd3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJ CQkJCQkgICAgIDAsIGxlbik7DQorCQkJZXJyb3IgPSBwYWdlY2FjaGVfd3Jp dGVfZW5kKGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJCQlsZW4s IGJhY2twYWdlLCBmc2RhdGEpOw0KKwkJCWlmIChlcnJvciA+IDApDQorCQkJ CWVycm9yID0gMDsNCiAJCX0NCiAJCWlmIChlcnJvciA9PSBBT1BfVFJVTkNB VEVEX1BBR0UpIHsNCi0JCQlwYWdlX2NhY2hlX3JlbGVhc2UoYmFja3BhZ2Up Ow0KIAkJCWNvbnRpbnVlOw0KIAkJfQ0KIAl9IHdoaWxlICgwKTsNCiANCiAJ b2Zmc2V0ID0gcGFnZV9vZmZzZXQoYmFja3BhZ2UpOw0KLQl1bmxvY2tfcGFn ZShiYWNrcGFnZSk7DQotCXBhZ2VfY2FjaGVfcmVsZWFzZShiYWNrcGFnZSk7 DQogDQogCWlmIChlcnJvcikNCiAJCXByaW50aygibm5wZnNfd3JpdGVfYmFj a3BhZ2U6IEVJT1xuIik7DQpAQCAtMTY4OSwxMyArMTg2Niw5IEBAIG5ucGZz X3JlYWRfYmFja3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHMNCiAJc3RydWN0 IHBhZ2UgKmJhY2twYWdlOw0KIAl1bnNpZ25lZCBsb25nIG9mZnNldDsNCiAN Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIs NiwxOCkNCisJKHZvaWQpb2Zmc2V0Ow0KKw0KIAliYWNrcGFnZSA9IHJlYWRf bWFwcGluZ19wYWdlKG1hcHBpbmcsIG4sIGJhY2tmaWxlKTsNCi0jZWxzZQ0K LQliYWNrcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBuLA0KLQkJ CQkgICAoZmlsbGVyX3QgKiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsDQot CQkJCSAgIGJhY2tmaWxlKTsNCi0jZW5kaWYNCiAJaWYgKCFJU19FUlIoYmFj a3BhZ2UpKSB7DQogCQl3YWl0X29uX3BhZ2VfbG9ja2VkKGJhY2twYWdlKTsN CiANCkBAIC0xODQyLDExICsyMDE1LDE3IEBAIG5ucGZzX3ByZXBhcmVfd3Jp dGUoc3RydWN0IGZpbGUgKmZpbGUsIHMNCiANCiAJaWYgKG1vZHNpemUgPiBp X3NpemVfcmVhZChpbm9kZSkpIHsNCiAJCWludCBlcnJvcjsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw4LDApDQogCQll cnJvciA9IHZtdHJ1bmNhdGUoaW5vZGUsIG1vZHNpemUpOw0KKyNlbHNlDQor CQllcnJvciA9IGlub2RlX25ld3NpemVfb2soaW5vZGUsIG1vZHNpemUpOw0K KwkJaWYoIWVycm9yKQ0KKwkJCXRydW5jYXRlX3NldHNpemUoaW5vZGUsIG1v ZHNpemUpOw0KKyNlbmRpZg0KIAkJaWYgKGVycm9yKSB7DQogCQkJcHJpbnRr KCJubnBmc19wcmVwYXJlX3dyaXRlOiB0cnVuY2F0ZSglbGx1KSAtPiAlZFxu IiwNCiAJCQkgICAgICAgbW9kc2l6ZSwgLWVycm9yKTsNCi0JCQlCVUcoKTsg LyogWFhYIG5vdCBjb3JyZWN0ICovDQorCQkJLypCVUcoKTsqLyAvKiBYWFgg bm90IGNvcnJlY3QgKi8NCiAJCX0NCiAJfQ0KIA0KQEAgLTE4NzIsOCArMjA1 MSwzNyBAQCBubnBmc19wcmVwYXJlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxl LCBzDQogCXJldHVybiByZXQ7DQogfQ0KIA0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KKw0KIHN0YXRpYyBp bnQNCi1ubnBmc19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0 cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykN CitubnBmc193cml0ZV9iZWdpbihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBwb3MsDQordW5zaWdu ZWQgbGVuLCB1bnNpZ25lZCBmbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcCwg dm9pZCAqKmZzZGF0YSkNCit7DQorCXN0cnVjdCBwYWdlICpwYWdlOw0KKwlw Z29mZl90IGluZGV4Ow0KKwl1bnNpZ25lZCBmcm9tOw0KKw0KKwlpbmRleCA9 IHBvcyA+PiBQQUdFX0NBQ0hFX1NISUZUOw0KKwlmcm9tID0gcG9zICYgKFBB R0VfQ0FDSEVfU0laRSAtIDEpOw0KKw0KKyNpZmRlZiBBT1BfRkxBR19OT0ZT DQorCXBhZ2UgPSBncmFiX2NhY2hlX3BhZ2Vfd3JpdGVfYmVnaW4obWFwcGlu ZywgaW5kZXgsIGZsYWdzKTsNCisjZWxzZQ0KKwlwYWdlID0gX19ncmFiX2Nh Y2hlX3BhZ2UobWFwcGluZywgaW5kZXgpOw0KKyNlbmRpZg0KKwlpZiAocGFn ZSA9PSBOVUxMKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCSpwYWdlcCA9 IHBhZ2U7DQorDQorCXJldHVybiBubnBmc19wcmVwYXJlX3dyaXRlKGZpbGUs IHBhZ2UsIGZyb20sIGZyb20gKyBsZW4pOw0KK30NCisNCisjZW5kaWYNCisN CitzdGF0aWMgaW50DQorbm5wZnNfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxl ICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwNCisJCSAgIHVuc2lnbmVkIGZy b20sIHVuc2lnbmVkIHRvKQ0KIHsNCiAgICAgc3RydWN0IGlub2RlICppbm9k ZSA9IHBhZ2UtPm1hcHBpbmctPmhvc3Q7DQogICAgIGxvZmZfdCBwb3MgPSAo KGxvZmZfdClwYWdlLT5pbmRleCA8PCBQQUdFX0NBQ0hFX1NISUZUKSArIHRv Ow0KQEAgLTE5MDIsMTQgKzIxMTAsNTEgQEAgbm5wZnNfY29tbWl0X3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBzdA0KICAgICByZXR1cm4gMDsNCiB9DQog DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMTgpDQotY29uc3QNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCisNCitzdGF0aWMgaW50DQorbm5wZnNf d3JpdGVfZW5kKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZywgbG9mZl90IHBvcywNCisJCXVuc2lnbmVkIGxlbiwg dW5zaWduZWQgY29waWVkLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdm9pZCAqZnNk YXRhKQ0KK3sNCisJdW5zaWduZWQgZnJvbSA9IHBvcyAmIChQQUdFX0NBQ0hF X1NJWkUgLSAxKTsNCisNCisJLyogemVybyB0aGUgc3RhbGUgcGFydCBvZiB0 aGUgcGFnZSBpZiB3ZSBkaWQgYSBzaG9ydCBjb3B5ICovDQorCWlmIChjb3Bp ZWQgPCBsZW4pIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMyw2LDApDQorCQl2b2lkICprYWRkciA9IGttYXBfYXRvbWlj KHBhZ2UsIEtNX1VTRVIwKTsNCisjZWxzZQ0KKwkJdm9pZCAqa2FkZHIgPSBr bWFwX2F0b21pYyhwYWdlKTsNCiAjZW5kaWYNCisJCW1lbXNldChrYWRkciAr IGZyb20gKyBjb3BpZWQsIDAsIGxlbiAtIGNvcGllZCk7DQorCQlmbHVzaF9k Y2FjaGVfcGFnZShwYWdlKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw2LDApDQorCQlrdW5tYXBfYXRvbWljKGthZGRy LCBLTV9VU0VSMCk7DQorI2Vsc2UNCisJCWt1bm1hcF9hdG9taWMoa2FkZHIp Ow0KKyNlbmRpZg0KKwl9DQorDQorCW5ucGZzX2NvbW1pdF93cml0ZShmaWxl LCBwYWdlLCBmcm9tLCBmcm9tICsgY29waWVkKTsNCisNCisJdW5sb2NrX3Bh Z2UocGFnZSk7DQorCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsNCisNCisJ cmV0dXJuIGNvcGllZDsNCit9DQorDQorI2VuZGlmDQorDQorY29uc3QNCiBz dHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIG5ucGZzX2FvcHMgPSB7 DQogCS5yZWFkcGFnZSA9IG5ucGZzX3JlYWRwYWdlLA0KIAkud3JpdGVwYWdl ID0gbm5wZnNfd3JpdGVwYWdlLA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCS5wcmVwYXJlX3dyaXRlID0g bm5wZnNfcHJlcGFyZV93cml0ZSwNCiAJLmNvbW1pdF93cml0ZSA9IG5ucGZz X2NvbW1pdF93cml0ZSwNCisjZWxzZQ0KKwkud3JpdGVfYmVnaW4gPSBubnBm c193cml0ZV9iZWdpbiwNCisJLndyaXRlX2VuZCA9IG5ucGZzX3dyaXRlX2Vu ZCwNCisjZW5kaWYNCiB9Ow0KIA0KIC8qDQpAQCAtMTkxNywyMSArMjE2Miwz MCBAQCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIG5ucGZzX2Fv DQogICovDQogDQogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19maWxl X29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgLmFpb19yZWFkCT0gbm5wZnNf YWlvX3JlYWQsDQogICAgIC5haW9fd3JpdGUJPSBubnBmc19haW9fd3JpdGUs DQorI2Vsc2UNCisgICAgLnJlYWRfaXRlcgk9IG5ucGZzX3JlYWRfaXRlciwN CisgICAgLndyaXRlX2l0ZXIJPSBubnBmc193cml0ZV9pdGVyLA0KKyNlbmRp Zg0KICAgICAubW1hcAk9IG5ucGZzX2ZpbGVfbW1hcCwNCiAgICAgLm9wZW4J PSBubnBmc19vcGVuLA0KICAgICAuZmx1c2gJPSBubnBmc19mbHVzaCwNCiAg ICAgLnJlbGVhc2UJPSBubnBmc19yZWxlYXNlX2ZpbGUsDQogICAgIC5mc3lu Ywk9IG5ucGZzX2ZzeW5jLA0KLSAgICAuc2VuZGZpbGUJPSBubnBmc19zZW5k ZmlsZSwNCisgICAgLnNwbGljZV9yZWFkID0gbm5wZnNfc3BsaWNlX3JlYWQs DQogfTsNCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZzX2RlYWRf b3BlcmF0aW9ucyA9IHsNCiB9Ow0KIA0KIHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgbm5wZnNfZGlyX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAgICAgLnJlYWRk aXIJPSBubnBmc19yZWFkZGlyLA0KKyNlbHNlDQorICAgIC5pdGVyYXRlICAg ID0gbm5wZnNfaXRlcmF0ZSwNCisjZW5kaWYNCiAgICAgLmZsdXNoCT0gbm5w ZnNfZmx1c2gsDQogfTsNCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFy bGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19sb2FkLmMgYXJsYS1mb3ItbGlu dXgtMy4xOC9ubnBmcy9saW51eC9ubnBmc19sb2FkLmMNCi0tLSBhcmxhLTAu OTAvbm5wZnMvbGludXgvbm5wZnNfbG9hZC5jCTIwMDYtMTAtMzEgMTE6MDI6 NDEuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS1mb3ItbGludXgtMy4xOC9u bnBmcy9saW51eC9ubnBmc19sb2FkLmMJMjAxNi0wMS0xMyAyMDoxNDowMi44 MzAxMDM1MTcgKzAxMDANCkBAIC01NCw3ICs1NCwxMSBAQCBleHRlcm4gc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19mb3BzDQogDQogc3RydWN0IGZp bGVfc3lzdGVtX3R5cGUgbm5wZnNfZnNfdHlwZSA9IHsNCiAgICAgICAgbmFt ZTogICAgICAgICAgICJubnBmcyIsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAgICAgZ2V0X3NiOiAg ICAgICAgIG5ucGZzX2dldF9zYiwNCisjZWxzZQ0KKyAgICAgICBtb3VudDog ICAgICAgICAgbm5wZnNfbW91bnQsDQorI2VuZGlmDQogICAgICAgIGtpbGxf c2I6ICAgICAgICBraWxsX2xpdHRlcl9zdXBlciwNCiAgICAgICAgb3duZXI6 ICAgICAgICAgIFRISVNfTU9EVUxFLA0KIH07DQpkaWZmIC11cHJOIC1Ybm9k aWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfbWVzc2FnZS5j IGFybGEtZm9yLWxpbnV4LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfbWVzc2Fn ZS5jDQotLS0gYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2Uu YwkyMDA3LTAxLTA5IDE3OjMzOjMxLjAwMDAwMDAwMCArMDEwMA0KKysrIGFy bGEtZm9yLWxpbnV4LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfbWVzc2FnZS5j CTIwMTYtMDEtMTQgMDA6NDQ6MjEuNTY2MDgxMjk4ICswMTAwDQpAQCAtNDUs NyArNDUsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9tb3VudC5oPg0KIA0KICNp ZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZzX21lc3NhZ2UuYyx2IDEu MTQzLjIuMSAyMDA3LzAxLzA5IDE2OjMzOjMxIHRvbCBFeHAgJCIpOw0KK1JD U0lEKCIkSWQ6IG5ucGZzX21lc3NhZ2UuYyx2IDEuMTQ1IDIwMTAvMDgvMDgg MjA6NDM6MDUgdG9sIEV4cCAkIik7DQogI2VuZGlmDQogDQogc3RhdGljIHZv aWQNCkBAIC01NSw5ICs1NSwxNSBAQCBzdGF0aWMgdm9pZA0KIG5ucGZzX2Rf cmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCiB7DQogICAgIE5OUEZT REVCKFhERUJNU0csICgibm5wZnNfZF9yZW1vdmUgJXBcbiIsIGRlbnRyeSkp Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQogICAgIHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOw0KICAgICBk Z2V0X2xvY2tlZChkZW50cnkpOw0KICAgICBzcGluX3VubG9jaygmZGNhY2hl X2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5fbG9jaygmZGVudHJ5LT5kX2xv Y2spOw0KKyAgICBkZ2V0X2Rsb2NrKGRlbnRyeSk7DQorICAgIHNwaW5fdW5s b2NrKCZkZW50cnktPmRfbG9jayk7DQorI2VuZGlmDQogICAgIGRfZHJvcChk ZW50cnkpOw0KICAgICBkcHV0KGRlbnRyeSk7DQogfQ0KQEAgLTEyMSw3ICsx MjcsMTEgQEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxsbm9kZShzdHJ1Y3Qgbm5w ZnMgKg0KICAgICBzdHJ1Y3QgaW5vZGUgKmRpLCAqaW5vZGU7DQogICAgIHN0 cnVjdCBkZW50cnkgKnBhcmVudCA9IE5VTEw7DQogICAgIHN0cnVjdCBxc3Ry IHNxc3RyOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxpc3RfaGVhZCAqYWxpYXM7DQor I2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5 LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2RlICphbGlhczsNCisjZW5kaWYN CiAgICAgDQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfbWVzc2Fn ZV9pbnN0YWxsbm9kZVxuIikpOw0KICAgICANCkBAIC0xNzYsMTIgKzE4Niwy NCBAQCBubnBmc19tZXNzYWdlX2luc3RhbGxub2RlKHN0cnVjdCBubnBmcyAq DQogICAgICAqDQogICAgICAqLw0KICAgICANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFzID0g ZGktPmlfZGVudHJ5Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAhPSAmZGkt PmlfZGVudHJ5KSB7DQogCXBhcmVudCA9IGxpc3RfZW50cnkoYWxpYXMsIHN0 cnVjdCBkZW50cnksIGRfYWxpYXMpOw0KLQlzcGluX2xvY2soJmRjYWNoZV9s b2NrKTsNCi0JZGdldF9sb2NrZWQocGFyZW50KTsNCi0Jc3Bpbl91bmxvY2so JmRjYWNoZV9sb2NrKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDksMCkNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50 cnkocGFyZW50LCBhbGlhcywgJmRpLT5pX2RlbnRyeSwgZF9hbGlhcykgew0K KyNlbHNlDQorICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhcmVudCwgJmRp LT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbmRpZg0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIHNw aW5fbG9jaygmZGNhY2hlX2xvY2spOw0KKyAgICBkZ2V0X2xvY2tlZChwYXJl bnQpOw0KKyAgICBzcGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNl DQorICAgIHNwaW5fbG9jaygmcGFyZW50LT5kX2xvY2spOw0KKyAgICBkZ2V0 X2Rsb2NrKHBhcmVudCk7DQorICAgIHNwaW5fdW5sb2NrKCZwYXJlbnQtPmRf bG9jayk7DQorI2VuZGlmDQogCWRlbnRyeSA9IGRfbG9va3VwKHBhcmVudCwg JnNxc3RyKTsNCiAJTk5QRlNERUIoWERFQk1TRywNCiAJCSAoIm5ucGZzX21l c3NhZ2VfaW5zdGFsbG5vZGU6IGFsaWFzICVwLCBsb29rdXAgJXBcbiIsDQpA QCAtMjMzLDcgKzI1NSw5IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGUo c3RydWN0IG5ucGZzICoNCiAJDQogCWRwdXQoZGVudHJ5KTsNCiAJZGVudHJ5 ID0gTlVMTDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw2LDApDQogCWFsaWFzID0gYWxpYXMtPm5leHQ7DQorI2VuZGlm DQogCWRwdXQocGFyZW50KTsNCiAgICAgfQ0KICAgICBOTlBGU0RFQihYREVC TVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGU6IGRvbmUgaW5zdGFs bGluZ1xuIikpOw0KQEAgLTI2OCw3ICsyOTIsMTEgQEAgbm5wZnNfbWVzc2Fn ZV9pbnN0YWxsYXR0cihzdHJ1Y3Qgbm5wZnMgKg0KICAgICB9DQogDQogICAg IGlub2RlID0gWE5PREVfVE9fVk5PREUodCk7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBkZW50cnkg PSBsaXN0X2VudHJ5KGlub2RlLT5pX2RlbnRyeS5uZXh0LCBzdHJ1Y3QgZGVu dHJ5LCBkX2FsaWFzKTsNCisjZWxzZQ0KKyAgICBkZW50cnkgPSBobGlzdF9l bnRyeShpbm9kZS0+aV9kZW50cnkuZmlyc3QsIHN0cnVjdCBkZW50cnksIGRf YWxpYXMpOw0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQk1T RywgKCJubnBmc19tZXNzYWdlX2luc3RhbGxhdHRyIG5hbWU6JXNcbiIsDQog CQkgICAgICAgZGVudHJ5LT5kX25hbWUubmFtZSkpOw0KQEAgLTM5NiwxNyAr NDI0LDM0IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbGRhdGEoc3RydWN0IG5u cGZzICoNCiBzdGF0aWMgdm9pZA0KIGNsZWFyX2FsbF9jaGlsZHJlbiAoc3Ry dWN0IGlub2RlICppbm9kZSwgaW50IHBhcmVudCkNCiB7DQorICAgIHN0cnVj dCBkZW50cnkgKmRlbnRyeTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIHN0cnVjdCBsaXN0X2hlYWQg KmFsaWFzOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsOSwwKQ0KKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7 DQorI2VuZGlmDQogDQogIGFnYWluOg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAgIHNwaW5fbG9jaygm ZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorICAgIC8qIFRPRE86IGZpbmQgdGhl IGRlbnRyeSB0byBsb2NrICovDQorICAgIC8qc3Bpbl9sb2NrKCZkZW50cnkt PmRfbG9jayk7Ki8NCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFzID0gaW5vZGUt PmlfZGVudHJ5Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAhPSAmaW5vZGUt PmlfZGVudHJ5KSB7DQotCXN0cnVjdCBkZW50cnkgKmRlbnRyeTsNCisjZWxp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDksMCkN CisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCBhbGlhcywgJmlu b2RlLT5pX2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbHNlDQorICAgIGhsaXN0 X2Zvcl9lYWNoX2VudHJ5KGRlbnRyeSwgJmlub2RlLT5pX2RlbnRyeSwgZF9h bGlhcykgew0KKyNlbmRpZg0KIAlzdHJ1Y3QgbGlzdF9oZWFkICpzdWJkaXJz Ow0KIAlzdHJ1Y3Qgbm5wZnNfZGVudHJ5X2RhdGEgKnhkOw0KIAkNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQog CWRlbnRyeSA9IGxpc3RfZW50cnkoYWxpYXMsIHN0cnVjdCBkZW50cnksIGRf YWxpYXMpOw0KKyNlbmRpZg0KIAlpZiAoZGVudHJ5ID09IE5VTEwpIHsNCiAJ ICAgIHByaW50ayhLRVJOX0VNRVJHICJOTlBGUyBQYW5pYzogZGVudHJ5IGlu IGFsaWFzIGxpc3QgaXMgbnVsbFxuIik7DQogCSAgICBicmVhazsNCkBAIC00 NDIsMTQgKzQ4NywyNiBAQCBjbGVhcl9hbGxfY2hpbGRyZW4gKHN0cnVjdCBp bm9kZSAqaW5vZGUsDQogDQogCSAgICAvKiBUaHJvdyBpbW1lZGlhdGVseSAq Lw0KIAkgICAgaWYgKG5ucGZzX2Rjb3VudChjaGlsZCkgPT0gMCkgew0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgp DQogCSAgICAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxz ZQ0KKwkJLyogVE9ETzogdW5sb2NrIHRoZSBkZW50cnkgKi8NCisJCS8qc3Bp bl91bmxvY2soJmRlbnRyeS0+ZF9sb2NrKTsqLw0KKyNlbmRpZg0KIAkJbm5w ZnNfZF9yZW1vdmUoY2hpbGQpOw0KIAkJZ290byBhZ2FpbjsNCiAJICAgIH0N CiAJfQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDYsMCkNCiAJYWxpYXMgPSBhbGlhcy0+bmV4dDsNCisjZW5kaWYNCiAg ICAgfQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMzgpDQogICAgIHNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7DQor I2Vsc2UNCisgICAgLyogVE9ETzogdW5sb2NrIHRoZSBkZW50cnkgKi8NCisg ICAgLypzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2spOyovDQorI2VuZGlm DQogfQ0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtNjA1LDEyICs2NjIsMTAgQEAg Z2NfYmxvY2soc3RydWN0IG5ucGZzICpubnBmc3AsDQogICAgIH0NCiANCiAg ICAgaWYgKCFubnBmc19ibG9ja19oYXZlX3AoeG4sIG9mZnNldCkpIHsNCi0j aWYgMCAgIC8qIGhhcHBlbnMgd2hlbiBkYWVtb24gc2VuZHMgc2V2ZXJhbCBt ZXNzYWdlcyBmb3Igc2FtZSBibG9jayAqLw0KIAlwcmludGsoS0VSTl9FTUVS RyAiTk5QRlMvZ2NfYmxvY2s6ICINCiAJICAgICAgICJFTk9FTlQgKCVkLCVk LCVkLCVkKSAweCVsbHhcbiIsIA0KIAkgICAgICAgeG4tPmhhbmRsZS5hLCB4 bi0+aGFuZGxlLmIsIHhuLT5oYW5kbGUuYywgeG4tPmhhbmRsZS5kLCANCiAJ ICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KTsNCi0jZW5kaWYN CiAJcmV0dXJuIC1FTk9FTlQ7DQogICAgIH0NCiANCkBAIC03MjYsNyArNzgx LDExIEBAIG5ucGZzX21lc3NhZ2VfdmVyc2lvbihzdHJ1Y3Qgbm5wZnMgKm5u cGYNCiANCiAJdWludDY0X3QgYmxvY2tzaXplID0gbWVzc2FnZS0+YmxvY2tz aXplOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMzkpDQogCWVycm9yID0gcGF0aF9sb29rdXAoIi4iLCAwLCAm bmQpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9wYXRoKCIuIiwgMCwgJm5k LnBhdGgpOw0KKyNlbmRpZg0KIAlpZiAoZXJyb3IpIHsNCiAJICAgIC8qDQog CSAgICAgKiBCYWQgY2FjaGUgcm9vdCwganVzdCByZXR1cm4uDQpAQCAtNzM3 LDEyICs3OTYsMTcgQEAgbm5wZnNfbWVzc2FnZV92ZXJzaW9uKHN0cnVjdCBu bnBmcyAqbm5wZg0KIAkJICAgIm5ucGZzX21lc3NhZ2VfdmVyc2lvbiBmYWls ZWQgcGF0aF9sb29rdXAsICINCiAJCSAgICJlcnJubzogJWRcbiIsIGVycm9y KTsNCiAJfSBlbHNlIHsNCi0JICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50 Z2V0KG5kLm1udCk7DQotCSAgICBubnBmc3AtPmNhY2hlZGlyID0gZGdldChu ZC5kZW50cnkpOw0KLQkgICAgcGF0aF9yZWxlYXNlKCZuZCk7DQorCSAgICBu bnBmc3AtPmNhY2hlcm9vdCA9IG1udGdldChuZC5wYXRoLm1udCk7DQorCSAg ICBubnBmc3AtPmNhY2hlZGlyID0gZGdldChuZC5wYXRoLmRlbnRyeSk7DQor CSAgICBwYXRoX3B1dCgmbmQucGF0aCk7DQogCSAgICANCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJICAg IG5ucGZzcC0+dWlkID0gY3VycmVudC0+ZnN1aWQ7DQogCSAgICBubnBmc3At PmdpZCA9IGN1cnJlbnQtPmZzZ2lkOw0KKyNlbHNlDQorICAgICAgICAgICAg bm5wZnNwLT51aWQgPSBjdXJyZW50X2ZzdWlkKCk7DQorICAgICAgICAgICAg bm5wZnNwLT5naWQgPSBjdXJyZW50X2ZzZ2lkKCk7DQorI2VuZGlmDQogDQog CSAgICAvKiBYWFggd2Ugc2hvdWxkIHZhbGlkYXRlIHRoZXNlIHZhbHVlcyAq Lw0KIAkgICAgbm5wZnNfYmxvY2tzaXplID0gYmxvY2tzaXplOw0KZGlmZiAt dXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZz X25vZGUuYyBhcmxhLWZvci1saW51eC0zLjE4L25ucGZzL2xpbnV4L25ucGZz X25vZGUuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19ub2Rl LmMJMjAwNy0wMS0wMyAxNDo1MjowMi4wMDAwMDAwMDAgKzAxMDANCisrKyBh cmxhLWZvci1saW51eC0zLjE4L25ucGZzL2xpbnV4L25ucGZzX25vZGUuYwky MDE2LTAxLTEzIDIwOjQ1OjQwLjg3MDIxNzk0NCArMDEwMA0KQEAgLTEzMiw3 ICsxMzIsMTIgQEAgbm5wZnNfc2V0c2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1aW50Ng0KIAlwcmludGsoIm5ucGZzX3NldHNpemU6IHRydW5jYXRpbmcg QDB4JWxsdVxuIiwNCiAJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc2l6 ZSk7DQogI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsOCwwKQ0KIAl2bXRydW5jYXRlKGlub2RlLCBzaXplKTsg LyogWFhYIHJldHZhbCAqLw0KKyNlbHNlDQorCWlmKCFpbm9kZV9uZXdzaXpl X29rKGlub2RlLCBzaXplKSkNCisJICAgIHRydW5jYXRlX3NldHNpemUoaW5v ZGUsIHNpemUpOw0KKyNlbmRpZg0KIAlubnBmc19ibG9ja190cnVuY2F0ZSh4 biwgc2l6ZSk7DQogICAgIH0NCiB9DQpAQCAtMTUwLDkgKzE1NSwxOCBAQCBu bnBmc19hdHRyMmlub2RlKGNvbnN0IHN0cnVjdCBubnBmc19hdHRyDQogCXN0 cnVjdCB0aW1lc3BlYyBub3RpbWUgPSB7MH07DQogDQogCWlub2RlLT5pX21v ZGUgICA9IDA7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTQsMCkNCiAJaW5vZGUtPmlfdWlkICAgID0gMDsNCiAJaW5v ZGUtPmlfZ2lkICAgID0gMDsNCisjZWxzZQ0KKwlpbm9kZS0+aV91aWQgICAg PSBLVUlEVF9JTklUKDApOw0KKwlpbm9kZS0+aV9naWQgICAgPSBLR0lEVF9J TklUKDApOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUtPmlfbmxpbmsgID0gMTsN CisjZWxzZQ0KKwlzZXRfbmxpbmsoaW5vZGUsIDEpOw0KKyNlbmRpZg0KIAlp bm9kZS0+aV9hdGltZSAgPSBub3RpbWU7DQogCWlub2RlLT5pX210aW1lICA9 IG5vdGltZTsNCiAJaW5vZGUtPmlfY3RpbWUgID0gbm90aW1lOw0KQEAgLTE2 OSw3ICsxODMsMTEgQEAgbm5wZnNfYXR0cjJpbm9kZShjb25zdCBzdHJ1Y3Qg bm5wZnNfYXR0cg0KICAgICBpZiAoWEFfVkFMSURfR0lEKGF0dHIpKQ0KIAlp bm9kZS0+aV9naWQgICAgPSBhdHRyLT54YV9naWQ7DQogICAgIGlmIChYQV9W QUxJRF9OTElOSyhhdHRyKSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywyLDApDQogCWlub2RlLT5pX25saW5rICA9IGF0 dHItPnhhX25saW5rOw0KKyNlbHNlDQorCXNldF9ubGluayhpbm9kZSwgYXR0 ci0+eGFfbmxpbmspOw0KKyNlbmRpZg0KICAgICANCiAgICAgaWYgKFhBX1ZB TElEX1NJWkUoYXR0cikpIHsNCiAJbm5wZnNfc2V0c2l6ZShpbm9kZSwgYXR0 ci0+eGFfc2l6ZSk7DQpAQCAtNTEwLDExICs1MjgsMTkgQEAgbm5wZnNfaGFz X3BhZyhjb25zdCBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeA0KIGludA0KIG5ucGZz X25vZGVfdXNlcnMoc3RydWN0IGlub2RlICppbm9kZSkNCiB7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7DQorI2Vsc2UNCisgICAgc3RydWN0 IGhsaXN0X25vZGUgKnBvczsNCisjZW5kaWYNCiAgICAgaW50IHVzZXJzID0g MDsNCiAgICAgDQogICAgIC8qIFhYWCB0aGlzIHNob3VsZCBwcm9iYWJseSBi ZSBwcm90ZWN0ZWQgc29tZWhvdyAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgbGlzdF9mb3JfZWFj aChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZWxzZQ0KKyAgICBobGlz dF9mb3JfZWFjaChwb3MsICZpbm9kZS0+aV9kZW50cnkpIHsNCisjZW5kaWYN CiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gbGlzdF9lbnRyeShwb3MsIHN0 cnVjdCBkZW50cnksIGRfYWxpYXMpOw0KIAlpZiAobm5wZnNfZGNvdW50KGRl bnRyeSkgPiAxKQ0KIAkgICAgdXNlcnMrKzsNCmRpZmYgLXVwck4gLVhub2Rp ZmYudHh0IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5j IGFybGEtZm9yLWxpbnV4LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfc3lzY2Fs bHMuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxs cy5jCTIwMDctMDEtMDMgMTU6MjY6MjcuMDAwMDAwMDAwICswMTAwDQorKysg YXJsYS1mb3ItbGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxs cy5jCTIwMTYtMDEtMTQgMDA6NDY6MDguNDY4MDg3NzQzICswMTAwDQpAQCAt NDIsNyArNDIsOSBAQA0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19zeXNjYWxs cy5oPg0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19jb21tb24uaD4NCiAjaW5j bHVkZSA8bGludXgvZmlsZS5oPg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogI2luY2x1ZGUgPGxpbnV4L3Nt cF9sb2NrLmg+DQorI2VuZGlmDQogI2luY2x1ZGUgPGxpbnV4L3NtcC5oPg0K ICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQogDQpAQCAtNTAsNiArNTIs MTEgQEANCiAjaW5jbHVkZSA8bGludXgvc2VjdXJpdHkuaD4NCiAjZW5kaWYN CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDMsNywwKQ0KKyN1bmRlZiBTWVNDQUxMSEFDSw0KKy8qIHRoZSBtZXRob2Qg dG8gcmVhZCAnbG93ZXJfYm91bmQnIGRvZXMgbm90IHdvcmsgb24ga2VybmVs IDMuNyBhbmQgbGF0ZXIsIHNlIG5ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyAq Lw0KKyNlbmRpZg0KKw0KICNpZiAwDQogI2lmZGVmIENPTkZJR19DT01QQVQN CiAjaW5jbHVkZSA8bGludXgvaW9jdGwzMi5oPg0KQEAgLTY0LDcgKzcxLDcg QEANCiAjdW5kZWYgTkVFRF9WSUNFSU9DVEwzMg0KIA0KICNpZmRlZiBSQ1NJ RA0KLVJDU0lEKCIkSWQ6IG5ucGZzX3N5c2NhbGxzLmMsdiAxLjEyMiAyMDA3 LzAxLzAzIDE0OjI2OjI3IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5u cGZzX3N5c2NhbGxzLmMsdiAxLjEyNSAyMDEwLzA4LzA4IDIwOjQzOjA2IHRv bCBFeHAgJCIpOw0KICNlbmRpZg0KIA0KIHN0YXRpYyBzdHJ1Y3QgcHJvY19k aXJfZW50cnkgKm5ucGZzX3Byb2Nmc19kaXI7DQpAQCAtODIsMTIgKzg5LDIy IEBAIHR5cGVkZWYgc3RydWN0IGFmc3Byb2NkYXRhIHsNCiAgICAgdW5zaWdu ZWQgbG9uZyBzeXNjYWxsOw0KIH0gYWZzcHJvY2RhdGE7DQogDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiBz dGF0aWMgaW50DQogbm5wZnNfcHJvY2ZzX2lvY3RsKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLA0KIAkJICAgdW5zaWduZWQgaW50 IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOw0KKyNlbHNlDQorc3RhdGljIGxv bmcNCitubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsDQor CQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7DQor I2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbm5w ZnNfcHJvY2ZzX2ZvcHMgPSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiAgICAgLmlvY3RsID0gbm5wZnNf cHJvY2ZzX2lvY3RsLA0KKyNlbHNlDQorICAgIC51bmxvY2tlZF9pb2N0bCA9 IG5ucGZzX3Byb2Nmc19pb2N0bCwNCisjZW5kaWYNCiB9Ow0KIA0KIA0KQEAg LTE0Nyw1MyArMTY0LDQ4IEBAIHN0YXRpYyBpbnQgbm5wZnNfc2VjX3JlZ2lz dGVyZWQgPSAwOw0KICNkZWZpbmUgU0VDMlBBRyhzKSAobm5wZnNfcGFnX3Qp KHVuc2lnbmVkIGxvbmcpKHMpDQogI2RlZmluZSBQQUcyU0VDKHApICh2b2lk ICopKHVuc2lnbmVkIGxvbmcpKHApDQogDQotc3RhdGljIGludA0KLW5ucGZz X3NlY190YXNrX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCi17DQot ICAgIG5ucGZzX3BhZ190IHBhZyA9IFNFQzJQQUcoY3VycmVudC0+c2VjdXJp dHkpOw0KLSAgICBpZiAocGFnKQ0KLQlwLT5zZWN1cml0eSA9IFBBRzJTRUMo cGFnKTsNCi0gICAgcmV0dXJuIDA7DQotfQ0KLQ0KLXN0YXRpYyB2b2lkDQot bm5wZnNfc2VjX3Rhc2tfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApDQot ew0KLSAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFHKHAtPnNlY3VyaXR5 KTsNCi0gICAgaWYgKHBhZykNCi0JcC0+c2VjdXJpdHkgPSBOVUxMOw0KLX0N Ci0NCiBzdGF0aWMgbm5wZnNfcGFnX3QNCiBubnBmc19nZXRfcGFnX3NlYyh2 b2lkKQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W RVJTSU9OKDIsNiwyOCkNCiAgICAgbm5wZnNfcGFnX3QgcGFnID0gU0VDMlBB RyhjdXJyZW50LT5zZWN1cml0eSk7DQorI2Vsc2UNCisgICAgbm5wZnNfcGFn X3QgcGFnID0gU0VDMlBBRyhjdXJyZW50X3NlY3VyaXR5KCkpOw0KKyNlbmRp Zg0KICAgICBpZiAocGFnKQ0KIAlyZXR1cm4gcGFnOw0KIA0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAg ICByZXR1cm4gY3VycmVudC0+dWlkOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAgcmV0dXJuIGN1 cnJlbnRfdWlkKCk7DQorI2Vsc2UNCisgICAgeyBrdWlkX3Qga3VpZCA9IGN1 cnJlbnRfdWlkKCk7IHJldHVybiBrdWlkLnZhbDsgfQ0KKyNlbmRpZg0KIH0N CiANCiBzdGF0aWMgaW50DQogbm5wZnNfc2V0X3BhZ19zZWModm9pZCkNCiB7 DQogICAgIHN0YXRpYyBubnBmc19wYWdfdCBwYWdudW0gPSBOTlBGU19QQUdf TExJTTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsNiwyOSkNCisgICAgc3RydWN0IGNyZWQgKmNyZWQ7DQorI2VuZGlm DQogDQogICAgIGlmIChwYWdudW0gPT0gTk5QRlNfUEFHX1VMSU0pDQogCXJl dHVybiAtRU5PTUVNOw0KICAgICAvKiBwYWdudW0gPSBOTlBGU19QQUdfTExJ TTsgKi8NCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpDQogICAgIGN1cnJlbnQtPnNlY3VyaXR5ID0g UEFHMlNFQyhwYWdudW0pOw0KKyNlbHNlDQorICAgIGNyZWQgPSAoc3RydWN0 IGNyZWQgKikgY3VycmVudC0+Y3JlZDsNCisgICAgY3JlZC0+c2VjdXJpdHkg PSBQQUcyU0VDKHBhZ251bSk7DQorI2VuZGlmDQogICAgIHBhZ251bSsrOw0K ICAgICByZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIHN0cnVjdCBzZWN1cml0 eV9vcGVyYXRpb25zIG5ucGZzX3NlY19vcHMgPSB7DQotICAgIC50YXNrX2Fs bG9jX3NlY3VyaXR5ID0gbm5wZnNfc2VjX3Rhc2tfYWxsb2MsDQotICAgIC50 YXNrX2ZyZWVfc2VjdXJpdHkgPSBubnBmc19zZWNfdGFza19mcmVlLA0KLS8v ICAgIC50YXNrX3JlcGFyZW50X3RvX2luaXQgPSBubnBmc19zZWNfcmVwYXJl bnRfdG9faW5pdCwNCi19Ow0KLQ0KICNlbmRpZiAvKiBDT05GSUdfU0VDVVJJ VFkgKi8NCiANCiAjaWZkZWYgR1JPVVBQQUdTDQpAQCAtMjA2LDcgKzIxOCwx MiBAQCBmaW5kX3BhZyhzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kpDQogICAgIE5O UEZTREVCKFhERUJTWVMsICgiZmluZF9wYWc6IG5ncm91cHMgPSAlZFxuIiwg Z2ktPm5ncm91cHMpKTsNCiANCiAgICAgZm9yIChpID0gZ2ktPm5ncm91cHMg LSAxOyBpID49IDA7IGktLSkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogCWdpZF90IGdyb3VwID0gR1JP VVBfQVQoZ2ksIGkpOw0KKyNlbHNlDQorCWtnaWRfdCBrZ3JvdXAgPSBHUk9V UF9BVChnaSwgaSk7DQorCWdpZF90IGdyb3VwID0ga2dyb3VwLnZhbDsNCisj ZW5kaWYNCiAJaWYgKChubnBmc19wYWdfdClncm91cCA+PSBOTlBGU19QQUdf TExJTSAmJiAobm5wZnNfcGFnX3QpZ3JvdXAgPCBOTlBGU19QQUdfVUxJTSkg ew0KIAkgICAgTk5QRlNERUIoWERFQlNZUywNCiAJCSAgICAgKCJmaW5kX3Bh ZzogRXhpc3RpbmcgcGFnICV1IGF0IHBvcyAldVxuIiwgZ3JvdXAsIGkpKTsN CkBAIC0yMjIsMTUgKzIzOSwzMSBAQCBmaW5kX3BhZyhzdHJ1Y3QgZ3JvdXBf aW5mbyAqZ2kpDQogc3RhdGljIG5ucGZzX3BhZ190DQogbm5wZnNfZ2V0X3Bh Z19ncm91cCh2b2lkKQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgc3RydWN0IGdyb3VwX2lu Zm8gKmdpID0gY3VycmVudC0+Z3JvdXBfaW5mbzsNCiAgICAgbm5wZnNfcGFn X3QgcmV0ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgIHN0cnVjdCBn cm91cF9pbmZvICpnaSA9IGdldF9jdXJyZW50X2dyb3VwcygpOw0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQor ICAgIG5ucGZzX3BhZ190IHJldCA9IGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UN CisgICAga3VpZF90IGt1aWQgPSBjdXJyZW50X3VpZCgpOw0KKyAgICBubnBm c19wYWdfdCByZXQgPSBrdWlkLnZhbDsNCisjZW5kaWYNCisjZW5kaWYNCiAg ICAgaW50IGk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpDQogICAgIGdldF9ncm91cF9pbmZvKGdpKTsN CisjZW5kaWYNCiANCiAgICAgaSA9IGZpbmRfcGFnKGdpKTsNCiAgICAgaWYg KGkgIT0gTk5QRlNfUEFHX05PVEZPVU5EKQ0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogCXJldCA9IEdST1VQ X0FUKGdpLCBpKTsNCisjZWxzZQ0KKwl7IGtnaWRfdCBrZ2lkID0gR1JPVVBf QVQoZ2ksIGkpOyByZXQgPSBrZ2lkLnZhbDsgfQ0KKyNlbmRpZg0KIA0KICAg ICBwdXRfZ3JvdXBfaW5mbyhnaSk7DQogDQpAQCAtMjQyLDEzICsyNzUsMTkg QEAgbm5wZnNfZ2V0X3BhZ19ncm91cCh2b2lkKQ0KIHN0YXRpYyBpbnQNCiBz dG9yZV9wYWcobm5wZnNfcGFnX3QgcGFnbnVtKQ0KIHsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg c3RydWN0IGdyb3VwX2luZm8gKm9sZF9naSA9IGN1cnJlbnQtPmdyb3VwX2lu Zm87DQorI2Vsc2UNCisgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAqb2xkX2dpID0g Z2V0X2N1cnJlbnRfZ3JvdXBzKCk7DQorI2VuZGlmDQogICAgIHN0cnVjdCBn cm91cF9pbmZvICpuZXdfZ2k7DQotICAgIGludCBuYmxvY2tzLCBjb3VudDsN CisgICAgdW5zaWduZWQgaW50IG5ibG9ja3MsIGNvdW50Ow0KICAgICBpbnQg Zm91bmQgPSAwOw0KICAgICBpbnQgaSwgazsNCiAgICAgDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpICAgIA0K ICAgICBnZXRfZ3JvdXBfaW5mbyhvbGRfZ2kpOw0KKyNlbmRpZg0KIA0KICAg ICBpID0gZmluZF9wYWcob2xkX2dpKTsNCiAgICAgaWYgKGkgIT0gTk5QRlNf UEFHX05PVEZPVU5EKQ0KQEAgLTI3NCwxMCArMzEzLDE3IEBAIHN0b3JlX3Bh ZyhubnBmc19wYWdfdCBwYWdudW0pDQogCWNvdW50IC09IE5HUk9VUFNfUEVS X0JMT0NLOw0KICAgICB9DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAgICAgaWYgKGZvdW5kKQ0KIAlH Uk9VUF9BVChuZXdfZ2ksIGkpID0gcGFnbnVtOw0KICAgICBlbHNlDQogCUdS T1VQX0FUKG5ld19naSwgbmV3X2dpLT5uZ3JvdXBzIC0gMSkgPSBwYWdudW07 DQorI2Vsc2UNCisgICAgaWYgKGZvdW5kKQ0KKwl7IGtnaWRfdCBrZ2lkID0g S0dJRFRfSU5JVChwYWdudW0pOyBHUk9VUF9BVChuZXdfZ2ksIGkpID0ga2dp ZDsgfQ0KKyAgICBlbHNlDQorCXsga2dpZF90IGtnaWQgPSBLR0lEVF9JTklU KHBhZ251bSk7IEdST1VQX0FUKG5ld19naSwgbmV3X2dpLT5uZ3JvdXBzIC0g MSkgPSBrZ2lkOyB9DQorI2VuZGlmDQogICAgIA0KICAgICBzZXRfY3VycmVu dF9ncm91cHMobmV3X2dpKTsNCiAgICAgcHV0X2dyb3VwX2luZm8obmV3X2dp KTsNCkBAIC0zMTcsNyArMzYzLDEzIEBAIG5ucGZzX2dldF9wYWcoKQ0KICAg ICByZXR1cm4gbm5wZnNfZ2V0X3BhZ19ncm91cCgpOw0KICNlbmRpZiAvKiBH Uk9VUFBBR1MgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtF Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgcmV0dXJuIGN1cnJlbnQtPnVp ZDsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigzLDE0LDApDQorICAgIHJldHVybiBjdXJyZW50X3VpZCgpOw0KKyNlbHNl DQorICAgIHsga3VpZF90IGt1aWQgPSBjdXJyZW50X3VpZCgpOyByZXR1cm4g a3VpZC52YWw7IH0NCisjZW5kaWYNCiB9DQogDQogc3RhdGljIGlubGluZSBp bnQNCkBAIC00MjIsNyArNDc0LDcgQEAgbm5wZnNfc2V0Z3JvdXBzMTYgKGlu dCBnaWRzZXRzaXplLCBvbGRfZw0KICNlbmRpZiAvKiBTWVNDQUxMSEFDSyAq Lw0KICNlbmRpZiAvKiBHUk9VUFBBR1MgKi8NCiANCi1zdHJ1Y3QgZmlsZV9o YW5kbGUgew0KK3N0cnVjdCBubnBmc19maWxlX2hhbmRsZSB7DQogICAgIG5u cGZzX2Rldl90IGRldjsNCiAgICAgaW5vX3QgaW5vZGU7DQogICAgIF9fdTMy IGdlbjsNCkBAIC01MTIsMTEgKzU2NCwxOSBAQCBubnBmc19kZWJ1Z19wcmlu dCAoc3RydWN0IGFybGFWaWNlSW9jdGwNCiBzdGF0aWMgc3RydWN0IGRlbnRy eSAqDQogdXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAqbmQs IGNoYXIgKnVzZXJfcGF0aCwgaW50IGZvbGxvdykNCiB7DQotICAgIGNoYXIg KmtuYW1lOw0KICAgICBpbnQgZmxhZ3MgPSAwOw0KICAgICBpbnQgZXJyb3Ig PSAwOw0KIA0KLSAgICBrbmFtZSA9IGdldG5hbWUgKHVzZXJfcGF0aCk7DQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNyww KQ0KKyAgICBjaGFyICprbmFtZTsNCisgICAga25hbWUgPSBnZXRuYW1lKHVz ZXJfcGF0aCk7DQorI2Vsc2UNCisgICAgY29uc3QgY2hhciAqa25hbWU7DQor ICAgIHN0cnVjdCBmaWxlbmFtZSAqZm5hbWU7DQorICAgIGZuYW1lID0gZ2V0 bmFtZSh1c2VyX3BhdGgpOw0KKyAgICBrbmFtZSA9IGZuYW1lLT5uYW1lOw0K KyNlbmRpZg0KKw0KICAgICBpZiAoSVNfRVJSKGtuYW1lKSkNCiAJcmV0dXJu IEVSUl9QVFIoUFRSX0VSUihrbmFtZSkpOw0KICAgICBpZiAoZm9sbG93KQ0K QEAgLTUyNCwxMSArNTg0LDE5IEBAIHVzZXJfcGF0aDJkZW50cnkgKHN0cnVj dCBuYW1laWRhdGEgKm5kLA0KIA0KICAgICBOTlBGU0RFQihYREVCTVNHLCAo Im5ucGZzX3N5c2NhbGw6IGxvb2tpbmcgdXA6ICVzXG4iLCBrbmFtZSkpOw0K IA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzkpDQogICAgIGVycm9yID0gcGF0aF9sb29rdXAoa25hbWUsIGZsYWdz LCBuZCk7DQorI2Vsc2UNCisgICAgZXJyb3IgPSBrZXJuX3BhdGgoa25hbWUs IGZsYWdzLCAmKG5kLT5wYXRoKSk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KICAgICBwdXRu YW1lKGtuYW1lKTsNCisjZWxzZQ0KKyAgICBrbWVtX2NhY2hlX2ZyZWUobmFt ZXNfY2FjaGVwLCAodm9pZCAqKWtuYW1lKTsNCisjZW5kaWYNCiAgICAgaWYg KGVycm9yKQ0KIAlyZXR1cm4gRVJSX1BUUihlcnJvcik7DQotICAgIHJldHVy biBuZC0+ZGVudHJ5Ow0KKyAgICByZXR1cm4gbmQtPnBhdGguZGVudHJ5Ow0K IH0NCiANCiBhc21saW5rYWdlIGxvbmcNCkBAIC01NDAsMTIgKzYwOCwyMCBA QCBzeXNfYWZzX2ludCAoaW50IG9wZXJhdGlvbiwNCiB7DQogICAgIGxvbmcg ZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgYXJsYVZpY2VJb2N0bCB2aWNlX2lv Y3RsOyANCi0gICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcGlvY3RsIG1zZzsN CisgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcGlvY3RsICptc2cgPSBOVUxM Ow0KICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAgKm1zZzI7DQog ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IE5VTEw7DQogICAgIHN0cnVj dCBuYW1laWRhdGEgbmQ7DQogICAgIA0KKyAgICBtc2cgPSBrbWFsbG9jKHNp emVvZigqbXNnKSwgR0ZQX0tFUk5FTCk7DQorICAgIGlmIChtc2cgPT0gTlVM TCkNCisgICAgICByZXR1cm4gLUVOT01FTTsNCisNCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KICAgICBsb2Nr X2tlcm5lbCgpOw0KKyNlbHNlDQorICAgIC8qIFRPRE86IGxvY2tfa2VybmVs KCkgaXMgcmVtb3ZlZCwgY29uc2lkZXIgYWRkaW5nIGFuIHByaXZhdGUgbG9j ayAqLw0KKyNlbmRpZg0KIA0KICAgICBOTlBGU0RFQihYREVCU1lTLCAoInN5 c19hZnMga2VybmVsIGxvY2tlZFxuIikpOw0KIA0KQEAgLTU3NSw3ICs2NTEs NyBAQCBzeXNfYWZzX2ludCAoaW50IG9wZXJhdGlvbiwNCiAJICAgIGdvdG8g dW5sb2NrOw0KIAl9DQogCWlmICh2aWNlX2lvY3RsLmluX3NpemUgIT0gMCkg ew0KLQkgICAgaWYoY29weV9mcm9tX3VzZXIoJm1zZy5tc2csDQorCSAgICBp Zihjb3B5X2Zyb21fdXNlcigmbXNnLT5tc2csDQogCQkJICAgICAgdmljZV9p b2N0bC5pbiwNCiAJCQkgICAgICB2aWNlX2lvY3RsLmluX3NpemUpICE9IDAp IHsNCiAJCWVycm9yID0gLUVGQVVMVDsNCkBAIC02MjgsMTkgKzcwNCwyMyBA QCBzeXNfYWZzX2ludCAoaW50IG9wZXJhdGlvbiwNCiAJCWVycm9yID0gLUVJ TlZBTDsNCiAJCWdvdG8gdW5sb2NrOw0KIAkgICAgfQ0KLQkgICAgbXNnLmhh bmRsZSA9IHhuLT5oYW5kbGU7DQorCSAgICBtc2ctPmhhbmRsZSA9IHhuLT5o YW5kbGU7DQogCX0NCiANCi0JbXNnLmhlYWRlci5vcGNvZGUgPSBOTlBGU19N U0dfUElPQ1RMOw0KLQltc2cub3Bjb2RlID0gYV9vcGNvZGU7DQorCW1zZy0+ aGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QSU9DVEw7DQorCW1zZy0+b3Bj b2RlID0gYV9vcGNvZGU7DQogCQ0KLQltc2cuaW5zaXplICAgPSB2aWNlX2lv Y3RsLmluX3NpemU7DQotCW1zZy5vdXRzaXplICA9IHZpY2VfaW9jdGwub3V0 X3NpemU7DQotCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCi0JbXNn LmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KKwltc2ctPmluc2l6ZSAg ID0gdmljZV9pb2N0bC5pbl9zaXplOw0KKwltc2ctPm91dHNpemUgID0gdmlj ZV9pb2N0bC5vdXRfc2l6ZTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJbXNnLT5jcmVkLnVpZCA9IGN1 cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLT5jcmVkLnVpZCA9 IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQorCW1zZy0+Y3JlZC5wYWcgPSBu bnBmc19nZXRfcGFnKCk7DQogCQ0KLQllcnJvciA9IG5ucGZzX21lc3NhZ2Vf cnBjKCZubnBmc1swXSwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsgLyog WFhYICovDQotCW1zZzIgPSAoc3RydWN0IG5ucGZzX21lc3NhZ2Vfd2FrZXVw ICopICZtc2c7DQorCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMoJm5ucGZz WzBdLCAmbXNnLT5oZWFkZXIsIHNpemVvZigqbXNnKSk7IC8qIFhYWCAqLw0K Kwltc2cyID0gKHN0cnVjdCBubnBmc19tZXNzYWdlX3dha2V1cCAqKSBtc2c7 DQogCWlmIChlcnJvciA9PSAwKQ0KIAkgICAgZXJyb3IgPSBtc2cyLT5lcnJv cjsNCiANCkBAIC02NzUsMTIgKzc1NSwxNyBAQCBzeXNfYWZzX2ludCAoaW50 IG9wZXJhdGlvbiwNCiAgICAgDQogIHVubG9jazoNCiAgICAgaWYgKGRlbnRy eSkNCi0JcGF0aF9yZWxlYXNlKCZuZCk7DQorCXBhdGhfcHV0KCZuZC5wYXRo KTsNCiANCiAgICAgTk5QRlNERUIoWERFQlNZUywgKCJubnBmc19zeXNjYWxs IHJldHVybnMgZXJyb3I6ICVsZFxuIiwgZXJyb3IpKTsNCiANCiAgICAgTk5Q RlNERUIoWERFQlNZUywgKCJzeXNfYWZzIGtlcm5lbCB1bmxvY2tcbiIpKTsN CisgICAga2ZyZWUobXNnKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KICAgICB1bmxvY2tfa2VybmVsKCk7 DQorI2Vsc2UNCisgICAgLyogVE9ETzogc2VlIHRoZSBjb21tZW50IGF0IGxv Y2tfa2VybmVsKCkgYWJvdmUgKi8NCisjZW5kaWYNCiANCiAgICAgcmV0dXJu IGVycm9yOw0KIH0NCkBAIC03MjksOSArODE0LDE1IEBAIHN5c19hZnMgKGlu dCBvcGVyYXRpb24sDQogCQkgICAgICAgYV9mb2xsb3dTeW1saW5rcyk7DQog fQ0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP TigyLDYsMzYpDQogc3RhdGljIGludA0KIG5ucGZzX3Byb2Nmc19pb2N0bChz dHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwNCiAJCSAg IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQ0KKyNlbHNl DQorc3RhdGljIGxvbmcNCitubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGZp bGUgKmZpbGUsDQorCQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZykNCisjZW5kaWYNCiB7DQogICAgIGFmc3Byb2NkYXRhIGFyZ3M7 DQogICAgIGxvbmcgcmV0Ow0KQEAgLTc4MCwyMSArODcxLDMxIEBAIHN0YXRp YyBpbnQgbm5wZnNfaW5pdF9wcm9jZnModm9pZCkNCiB7DQogICAgIHN0cnVj dCBwcm9jX2Rpcl9lbnRyeSAqZW50cnk7DQogICAgIA0KLSAgICBubnBmc19w cm9jZnNfZGlyID0gcHJvY19ta2RpcihOTlBGU19QUk9DX0RJUiwgcHJvY19y b290X2ZzKTsNCisgICAgbm5wZnNfcHJvY2ZzX2RpciA9IHByb2NfbWtkaXIo ImZzLyIgTk5QRlNfUFJPQ19ESVIsIE5VTEwpOw0KICAgICBpZiAobm5wZnNf cHJvY2ZzX2RpciA9PSBOVUxMKQ0KIAlyZXR1cm4gLUVOT01FTTsNCiAgICAg DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzMCkNCiAgICAgbm5wZnNfcHJvY2ZzX2Rpci0+b3duZXIgPSBUSElTX01P RFVMRTsNCisjZW5kaWYNCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTAsMCkNCiAgICAgZW50cnkgPSBjcmVh dGVfcHJvY19lbnRyeShOTlBGU19QUk9DX05PREUsIDA2NjYsIG5ucGZzX3By b2Nmc19kaXIpOw0KKyNlbHNlDQorICAgIGVudHJ5ID0gcHJvY19jcmVhdGUo Tk5QRlNfUFJPQ19OT0RFLCAwNjY2LCBOVUxMLCAmbm5wZnNfcHJvY2ZzX2Zv cHMpOw0KKyNlbmRpZg0KICAgICBpZiAoZW50cnkgPT0gTlVMTCkgew0KIAlO TlBGU0RFQihYREVCU1lTLCAoIm5ucGZzX2luaXRfcHJvY2ZzOiBubyBub2Rl XG4iKSk7DQotCXJlbW92ZV9wcm9jX2VudHJ5KE5OUEZTX1BST0NfRElSLCBw cm9jX3Jvb3RfZnMpOw0KKwlyZW1vdmVfcHJvY19lbnRyeSgiZnMvIiBOTlBG U19QUk9DX0RJUiwgTlVMTCk7DQogCXJldHVybiAtRU5PTUVNOw0KICAgICB9 DQogICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMzApDQogICAgIGVudHJ5LT5vd25lciA9IFRISVNfTU9EVUxF Ow0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDEwLDApDQogICAgIGVudHJ5LT5wcm9jX2ZvcHMgPSAmbm5w ZnNfcHJvY2ZzX2ZvcHM7DQorI2VuZGlmDQogDQogI2lmZGVmIFNZU0NBTExD T01QQVQNCiAgICAgaWYgKHJlZ2lzdGVyX2lvY3RsMzJfY29udmVyc2lvbihB UkxBX1ZJT0NfU1lTQ0FMTDMyLCBubnBmc19wcm9jZnNfaW9jdGwzMikpIHsN CkBAIC04MTUsNyArOTE2LDcgQEAgc3RhdGljIHZvaWQgbm5wZnNfZXhpdF9w cm9jZnModm9pZCkNCiAgICAgfQ0KICNlbmRpZiAvKiBTWVNDQUxMQ09NUEFU ICovDQogICAgIHJlbW92ZV9wcm9jX2VudHJ5KE5OUEZTX1BST0NfTk9ERSwg bm5wZnNfcHJvY2ZzX2Rpcik7DQotICAgIHJlbW92ZV9wcm9jX2VudHJ5KE5O UEZTX1BST0NfRElSLCBwcm9jX3Jvb3RfZnMpOw0KKyAgICByZW1vdmVfcHJv Y19lbnRyeSgiZnMvIiBOTlBGU19QUk9DX0RJUiwgTlVMTCk7DQogfQ0KIA0K ICNpZmRlZiBHUk9VUFBBR1MNCkBAIC04MzksMTQgKzk0MCw2IEBAIGluc3Rh bGxfc2V0Z3JvdXBzKHZvaWQpDQogdm9pZA0KIGluc3RhbGxfYWZzX3N5c2Nh bGwodm9pZCkNCiB7DQotI2lmZGVmIENPTkZJR19TRUNVUklUWQ0KLSAgICBp ZiAocmVnaXN0ZXJfc2VjdXJpdHkoJm5ucGZzX3NlY19vcHMpKQ0KLQlOTlBG U0RFQihYREVCU1lTLA0KLQkJICgiaW5zdGFsbF9hZnNfc3lzY2FsbDogbm5w ZnNfaW5pdF9zZWMgZmFpbGVkXG4iKSk7DQotICAgIGVsc2UNCi0Jbm5wZnNf c2VjX3JlZ2lzdGVyZWQgPSAxOw0KLSNlbmRpZg0KLQ0KICAgICBubnBmc19p bml0X3Byb2NmcygpOw0KIA0KICNpZmRlZiBTWVNDQUxMSEFDSw0KQEAgLTg4 NywxMiArOTgwLDYgQEAgcmVzdG9yZV9hZnNfc3lzY2FsbCAodm9pZCkNCiAj ZW5kaWYNCiAjZW5kaWYgLyogU1lTQ0FMTEhBQ0sgKi8NCiANCi0jaWZkZWYg Q09ORklHX1NFQ1VSSVRZDQotICAgIGlmIChubnBmc19zZWNfcmVnaXN0ZXJl ZCkNCi0JaWYgKHVucmVnaXN0ZXJfc2VjdXJpdHkoJm5ucGZzX3NlY19vcHMp KQ0KLQkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIm5ucGZzX2V4aXRfc2VjOiBj b3VsZG4ndCB1bnJlZ2lzdGVyXG4iKTsNCi0jZW5kaWYgLyogIUNPTkZJR19T RUNVUklUWSAqLw0KLQ0KICNpZmRlZiBHUk9VUFBBR1MNCiAjaWZkZWYgU1lT Q0FMTEhBQ0sNCiAgICAgaWYgKG9sZF9zZXRncm91cHMpIHsNCmRpZmYgLXVw ck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19z eXNjYWxscy1sb3NzYWdlLmMgYXJsYS1mb3ItbGludXgtMy4xOC9ubnBmcy9s aW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdlLmMNCi0tLSBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jCTIwMDYtMTIt MTEgMTc6MzE6NDUuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS1mb3ItbGlu dXgtMy4xOC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdlLmMJ MjAxNi0wMS0xMyAyMTo1MTo0OS42ODI0NTcyMTMgKzAxMDANCkBAIC00Nywx MSArNDcsMjAgQEANCiAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+DQogDQog I2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMtbG9z c2FnZS5jLHYgMS4xNyAyMDA2LzEyLzExIDE2OjMxOjQ1IHRvbCBFeHAgJCIp Ow0KK1JDU0lEKCIkSWQ6IG5ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyx2IDEu MTkgMjAxMC8wOC8wOCAyMDo0MzowNSB0b2wgRXhwICQiKTsNCisjZW5kaWYN CisNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDMsNywwKQ0KKy8qIHRoZSBtZXRob2QgdG8gcmVhZCAnbG93ZXJfYm91bmQn IGRvZXMgbm90IHdvcmsgb24ga2VybmVsIDMuNyBhbmQgbGF0ZXIgKi8NCisj dW5kZWYgU1lTQ0FMTEhBQ0sNCiAjZW5kaWYNCiANCiAjaW5jbHVkZSA8bGlu dXgva2FsbHN5bXMuaD4NCisjaWZkZWYgU1lTQ0FMTEhBQ0sNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApDQogc3Rh dGljIHZvaWQgKmxvd2VyX2JvdW5kID0gJmtlcm5lbF90aHJlYWQ7DQorI2Vu ZGlmDQorI2VuZGlmDQogDQogdm9pZCAqIF9fYXR0cmlidXRlX18oKHdlYWsp KSBzeXNfY2FsbF90YWJsZSh2b2lkKTsNCiBubnBmc19zeXNfY2FsbF9mdW5j dGlvbiAqbm5wZnNfc3lzX2NhbGxfdGFibGUgPQ0KQEAgLTYzLDYgKzcyLDEx IEBAIGNvbnN0IGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkNCiAJCSAg ICB1bnNpZ25lZCBsb25nICpvZmZzZXQsDQogCQkgICAgY2hhciAqKm1vZG5h bWUsIGNoYXIgKm5hbWVidWYpOw0KIA0KKyNpZmRlZiBfX3g4Nl82NF9fDQor ZXh0ZXJuIHJ3bG9ja190IHRhc2tsaXN0X2xvY2sgX19hdHRyaWJ1dGVfXygo d2VhaykpOw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBTWVNDQUxMSEFDSw0KIHN0 YXRpYyB2b2lkICoqDQogZ2V0X3N0YXJ0X2FkZHIodm9pZCkgew0KICNpZmRl ZiBfX3g4Nl82NF9fDQpAQCAtNzEsNiArODUsNyBAQCBnZXRfc3RhcnRfYWRk cih2b2lkKSB7DQogICAgIHJldHVybiAodm9pZCAqKikmbXV0ZXhfbG9jazsN CiAjZW5kaWYNCiB9DQorI2VuZGlmDQogDQogc3RhdGljIGlubGluZSBpbnQg DQoga2FsbHN5bV9pc19lcXVhbCh1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0 IGNoYXIgKm5hbWUpDQpAQCAtMTM5LDYgKzE1NCw4IEBAIHZlcmlmeSh2b2lk ICoqcCkgew0KICAgICByZXR1cm4gMTsNCiB9DQogDQorI2lmZGVmIFNZU0NB TExIQUNLDQorDQogc3RhdGljIGlubGluZSBpbnQgbG9va3NfZ29vZCh2b2lk ICoqcCkNCiB7DQogICAgIGlmICgqcCA8PSAodm9pZCopbG93ZXJfYm91bmQg fHwgKnAgPj0gKHZvaWQqKXApDQpAQCAtMTg4LDMgKzIwNSw1IEBAIG5ucGZz X2ZpeHVwX3N5c2NhbGxfbG9zc2FnZSh2b2lkKQ0KIA0KICAgICByZXR1cm4g MDsNCiB9DQorDQorI2VuZGlmDQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBh cmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfdmZzb3BzLmMgYXJsYS1mb3It bGludXgtMy4xOC9ubnBmcy9saW51eC9ubnBmc192ZnNvcHMuYw0KLS0tIGFy bGEtMC45MC9ubnBmcy9saW51eC9ubnBmc192ZnNvcHMuYwkyMDA2LTEyLTEx IDE3OjQzOjM1LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxpbnV4 LTMuMTgvbm5wZnMvbGludXgvbm5wZnNfdmZzb3BzLmMJMjAxNi0wMS0xMyAy Mjo1NDo1NS4yMjc2ODU0MzIgKzAxMDANCkBAIC00NCwzMCArNDQsMjYgQEAN CiAjaW5jbHVkZSA8bGludXgvbW0uaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1S Q1NJRCgiJElkOiBubnBmc192ZnNvcHMuYyx2IDEuMTA5IDIwMDYvMTIvMTEg MTY6NDM6MzUgdG9sIEV4cCAkIik7DQorUkNTSUQoIiRJZDogbm5wZnNfdmZz b3BzLmMsdiAxLjExMSAyMDEwLzA4LzA4IDIwOjQzOjA2IHRvbCBFeHAgJCIp Ow0KICNlbmRpZg0KIA0KIHN0cnVjdCBubnBmcyBubnBmc1tOTk5QRlNdOw0K IA0KLXN0YXRpYyB2b2lkIG5ucGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2Rl ICppbm9kZSk7DQogc3RhdGljIHZvaWQgbm5wZnNfcHV0X3N1cGVyKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IpOw0KLXN0YXRpYyB2b2lkIG5ucGZzX3B1dF9p bm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHZvaWQg bm5wZnNfd3JpdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpOw0K KyNlbmRpZg0KIA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDE4KQ0KIHN0YXRpYyBpbnQgbm5wZnNfc3RhdGZzKHN0 cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7DQot I2Vsc2UNCi1zdGF0aWMgaW50IG5ucGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKTsNCi0jZW5kaWYNCiAN CiBzdGF0aWMgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgbm5wZnNfc29wcyA9 IHsgDQotICAgIHJlYWRfaW5vZGUJCTogbm5wZnNfcmVhZF9pbm9kZSwNCi0g ICAgcHV0X2lub2RlCQk6IG5ucGZzX3B1dF9pbm9kZSwNCiAgICAgYWxsb2Nf aW5vZGUJCTogbm5wZnNfbm9kZV9hbGxvYywNCiAgICAgZGVzdHJveV9pbm9k ZQk6IG5ucGZzX25vZGVfZnJlZSwNCiAgICAgZHJvcF9pbm9kZQkJOiBnZW5l cmljX2RlbGV0ZV9pbm9kZSwNCiAgICAgcHV0X3N1cGVyCQk6IG5ucGZzX3B1 dF9zdXBlciwNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw2LDApDQogICAgIHdyaXRlX3N1cGVyCQk6IG5ucGZzX3dyaXRl X3N1cGVyLA0KKyNlbmRpZg0KICAgICBzdGF0ZnMJCTogbm5wZnNfc3RhdGZz LA0KIH07DQogDQpAQCAtOTQsNyArOTAsMTEgQEAgbm5wZnNfZmV0Y2hfcm9v dChzdHJ1Y3QgaW5vZGUgKmkpDQogCSAqIHJvb3QncyBwcml2aWxpZ2VzICh1 c3VhbGx5IG5vbmUsIGFuZCBub25lIGlzIG5lZWRlZCkuDQogCSAqLw0KIAkN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx NCwwKQ0KIAltc2cuY3JlZC51aWQgPSAwOw0KKyNlbHNlDQorCW1zZy5jcmVk LnVpZCA9IEtVSURUX0lOSVQoMCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBh ZyA9IDA7DQogCQ0KIAllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZz cCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCkBAIC0xMjksOCArMTI5 LDEzIEBAIG1ha2Vfcm9vdF9pbm9kZShzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCkN CiAgICAgWEFfU0VUX01PREUoJm5vZGUuYXR0ciwgU19JRkRJUiB8IDA3Nzcp Ow0KICAgICBYQV9TRVRfTkxJTksoJm5vZGUuYXR0ciwgMTAwKTsNCiAgICAg WEFfU0VUX1NJWkUoJm5vZGUuYXR0ciwgMCk7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAgICAgWEFfU0VU X1VJRCgmbm9kZS5hdHRyLCAwKTsNCiAgICAgWEFfU0VUX0dJRCgmbm9kZS5h dHRyLCAwKTsNCisjZWxzZQ0KKyAgICBYQV9TRVRfVUlEKCZub2RlLmF0dHIs IEtVSURUX0lOSVQoMCkpOw0KKyAgICBYQV9TRVRfR0lEKCZub2RlLmF0dHIs IEtHSURUX0lOSVQoMCkpOw0KKyNlbmRpZg0KICAgICBYQV9TRVRfQVRJTUUo Jm5vZGUuYXR0ciwgMCk7DQogICAgIFhBX1NFVF9NVElNRSgmbm9kZS5hdHRy LCAwKTsNCiAgICAgWEFfU0VUX0NUSU1FKCZub2RlLmF0dHIsIDApOw0KQEAg LTE1OSw3ICsxNjQsMTEgQEAgbWFrZV9yb290IChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiKQ0KICAgICBubnBmcy0+cm9vdCA9IGlub2RlOw0KIA0KICAgICAv KiBYWFggZXJyb3IgaGFuZGxpbmcgKi8NCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw0LDApDQogICAgIGRwID0gZF9hbGxv Y19yb290KGlub2RlKTsNCisjZWxzZQ0KKyAgICBkcCA9IGRfbWFrZV9yb290 KGlub2RlKTsNCisjZW5kaWYNCiAgICAgbm5wZnNfZF9pbml0KGRwKTsNCiAg ICAgc2ItPnNfcm9vdCA9IGRwOw0KICAgICByZXR1cm4gMDsNCkBAIC0xODUs MTEgKzE5NCwxNSBAQCBubnBmc19yZWFkX3N1cGVyIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKiBzDQogICAgIGlmIChkYXRhICE9IE5VTEwpIHsNCiAJc3RydWN0 IG5hbWVpZGF0YSBuZDsNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRoX2xvb2t1 cChkYXRhLCAwLCAmbmQpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9wYXRo KGRhdGEsIDAsICZuZC5wYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVycm9yKQ0K IAkgICAgZGRldiA9IEVSUl9QVFIoZXJyb3IpOw0KIAllbHNlDQotCSAgICBk ZGV2ID0gbmQuZGVudHJ5Ow0KKwkgICAgZGRldiA9IG5kLnBhdGguZGVudHJ5 Ow0KIA0KIAlpZiAoIUlTX0VSUihkZGV2KSkgew0KIAkgICAgbWlub3JkZXZp Y2UgPSBNSU5PUihkZGV2LT5kX2lub2RlLT5pX3JkZXYpOw0KQEAgLTIzMyw3 ICsyNDYsNyBAQCBubnBmc19maWxsX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiDQogICAgIHJldHVybiAwOw0KIH0NCiANCi0jaWYgTElOVVhfVkVS U0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KIGlu dA0KIG5ucGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNf dHlwZSwNCiAJICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1l LA0KQEAgLTI0MiwxOSArMjU1LDIyIEBAIG5ucGZzX2dldF9zYihzdHJ1Y3Qg ZmlsZV9zeXN0ZW1fdHlwZSAqZnMNCiAgICAgcmV0dXJuIGdldF9zYl9ub2Rl dihmc190eXBlLCBmbGFncywgZGF0YSwgbm5wZnNfZmlsbF9zdXBlciwgbW50 KTsNCiB9DQogI2Vsc2UNCi1zdHJ1Y3Qgc3VwZXJfYmxvY2sgKg0KLW5ucGZz X2dldF9zYiAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsDQot CSAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQg KmRhdGEpIA0KK3N0cnVjdCBkZW50cnkqDQorbm5wZnNfbW91bnQoc3RydWN0 IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsDQorCSAgICAgaW50IGZsYWdz LCBjb25zdCBjaGFyICpkZXZfbmFtZSwNCisJICAgICB2b2lkICpkYXRhKSAN CiB7DQotICAgIHJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3Ms IGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIpOw0KKyAgICByZXR1cm4gbW91bnRf bm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIp Ow0KIH0NCiAjZW5kaWYNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHZvaWQNCiBubnBmc193 cml0ZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYikNCiB7DQogICAg IHNiLT5zX2RpcnQgPSAwOw0KIH0NCisjZW5kaWYNCiANCiAvKg0KICAqIFhY WCBpcyB0aGlzIGdvb2Q/IA0KQEAgLTI3Myw3MyArMjg5LDYgQEAgbm5wZnNf cHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpDQogICAgIE5OUEZT REVCKFhERUJWRk9QUywgKCJubnBmc19wdXRfc3VwZXIgZXhpdGluZ1xuIikp Ow0KIH0NCiANCi1zdGF0aWMgdm9pZA0KLW5ucGZzX3JlYWRfaW5vZGUoc3Ry dWN0IGlub2RlICppbm9kZSkNCi17DQotICAgIE5OUEZTREVCKFhERUJWRk9Q UywoIm5ucGZzX3JlYWRfaW5vZGUgc3RhcnRpbmcgaW5vZGU6ICVwXG4iLGlu b2RlKSk7DQotICAgIE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3JlYWRf aW5vZGUgaW5vZGUtPmlfaW5vOiAlbGRcbiIsaW5vZGUtPmlfaW5vKSk7DQot I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwx OSkNCi0gICAgaW5vZGUtPmlfYmxrc2l6ZSA9IDEwMjQ7DQotI2VuZGlmDQot ICAgIGlub2RlLT5pX21vZGUgPSAwOw0KLSAgICBpbm9kZS0+aV9vcCA9IE5V TEw7DQotICAgIE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3JlYWRfaW5v ZGUgZXhpdGluZ1xuIikpOw0KLX0NCi0gDQotLyoNCi0gKiBDYWxsZWQgd2hl biBgaW5vZGUnIGlzIGRlLXJlZmVyZW5jZWQsIGllIHdoZW4gaXB1dCBpcyBj YWxsZWQuDQotICovDQotDQotc3RhdGljIHZvaWQNCi1ubnBmc19wdXRfaW5v ZGUoc3RydWN0IGlub2RlICppbm9kZSkNCi17DQotICAgIHN0cnVjdCBubnBm c19ub2RlICp4biA9IFZOT0RFX1RPX1hOT0RFKGlub2RlKTsNCi0gICAgc3Ry dWN0IG5ucGZzICpubnBmc3AgPSBOTlBGU19GUk9NX1ZOT0RFKGlub2RlKTsN Ci0gICAgaW50IGJhZDsNCi0NCi0gICAgTk5QRlNERUIoWERFQlZGT1BTLCgi bm5wZnNfcHV0X2lub2RlOiBpbm9kZTogJXAgY291bnQ6ICVkIGFsaWFzZXM6 IiwNCi0JCQlpbm9kZSwgbm5wZnNfaWNvdW50KGlub2RlKSkpOw0KLSAgICBu bnBmc19wcmludF9hbGlhc2VzKGlub2RlKTsNCi0gICAgDQotICAgIGRvd24o Jm5ucGZzcC0+aW5hY3RpdmVfc2VtKTsNCi0NCi0gICAgaWYgKChubnBmc3At PnN0YXR1cyAmIE5OUEZTX0RFVk9QRU4pID09IDApIHsNCi0JaWYgKCFpc19i YWRfaW5vZGUoaW5vZGUpKSB7DQotCSAgICBpZiAoaW5vZGUgIT0gbm5wZnNw LT5yb290KSB7DQotCQltYWtlX2JhZF9pbm9kZShpbm9kZSk7DQotCQlubnBm c19pcmVsZShpbm9kZSk7IC8qIHNlZSBubnBmc19ub2RlX2FkZCgpICovDQot CSAgICB9DQotCSAgICB4bi0+ZmxhZ3MgfD0gTk5QRlNfU1RBTEU7DQotCX0N Ci0JYmFkID0gMTsgLyogb3Igcm9vdCwgcmVhbGx5ICovDQotICAgIH0gZWxz ZSB7DQotCWJhZCA9IGlzX2JhZF9pbm9kZShpbm9kZSk7DQotICAgIH0NCi0N Ci0gICAgaWYgKHhuLT5mbGFncyAmIE5OUEZTX1NUQUxFICYmICFubnBmc19u b2RlX3VzZXJzKGlub2RlKSkgew0KLQl4bi0+ZmxhZ3MgfD0gTk5QRlNfTk9E RV9JUFVUOyAvKiBYWFggbG9ja2luZyAqLw0KLSAgCW5ucGZzX2ZvcmNlX2lu dmFsaWRfbm9kZSh4bik7DQotCXhuLT5mbGFncyAmPSB+Tk5QRlNfTk9ERV9J UFVUOw0KLSAgICB9DQotICAgIA0KLSAgICBpZiAoYmFkKSB7DQotCWlmIChu bnBmc19pY291bnQoaW5vZGUpID09IDEpDQotCSAgICBubnBmc19ub2RlX2Ns ZWFyKHhuKTsNCi0gICAgfSBlbHNlIGlmIChubnBmc19pY291bnQoaW5vZGUp ID09IDIpIHsNCi0JLyogDQotCSAqIFRoZSBsYXN0IGV4dGVybmFsIHJlZmVy ZW5jZSBpcyBiZWluZyBkcm9wcGVkLCBvbmx5IHRoZSBvbmUNCi0JICogZnJv bSBubnBmc19ub2RlX2FkZCgpIGlzIGxlZnQuIFRpbWUgdG8gbGV0IGRhZW1v biByZWxlYXNlDQotCSAqIHRoaXMgbm9kZSBwcm9wZXJseS4NCi0JICovDQot CWlmICgoeG4tPmZsYWdzICYgTk5QRlNfTElNQk8pID09IDApIHsNCi0JICAg IG5ucGZzX25vZGVfY2xlYXIoeG4pOw0KLQkgICAgbm5wZnNfcXVldWVfaW5h Y3RpdmUoeG4pOw0KLQl9DQotICAgIH0NCi0NCi0gICAgdXAoJm5ucGZzcC0+ aW5hY3RpdmVfc2VtKTsNCi19DQotDQogc3RhdGljIGludA0KIG5ucGZzX3N0 YXRmc19pbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0 ZnMgKmJ1ZikNCiB7DQpAQCAtMzUyLDI1ICszMDEsMjEgQEAgbm5wZnNfc3Rh dGZzX2ludChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLA0KICAgICB0bXAuZl9i YXZhaWwgID0gMTAyNCoxMDI0KjItNTA7DQogICAgIHRtcC5mX2ZpbGVzICAg PSAxMDI0KjEwMjQ7DQogICAgIHRtcC5mX2ZmcmVlICAgPSAxMDI0KjEwMjQt MTAwOw0KKyAgICB0bXAuZl9mc2lkLnZhbFswXSA9IDA7DQorICAgIHRtcC5m X2ZzaWQudmFsWzFdID0gMDsNCiAgICAgdG1wLmZfbmFtZWxlbiA9IE5BTUVf TUFYOw0KKyAgICB0bXAuZl9mcnNpemUgID0gMDsNCisgICAgdG1wLmZfc3Bh cmVbMF0gPSAwOw0KKyAgICB0bXAuZl9zcGFyZVsxXSA9IDA7DQorICAgIHRt cC5mX3NwYXJlWzJdID0gMDsNCisgICAgdG1wLmZfc3BhcmVbM10gPSAwOw0K KyAgICB0bXAuZl9zcGFyZVs0XSA9IDA7DQogICAgICpidWYgPSB0bXA7DQog ICAgIHJldHVybiAwOw0KIH0NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCi0NCiBzdGF0aWMgaW50DQog bm5wZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtz dGF0ZnMgKmJ1ZikNCiB7DQogICAgIHJldHVybiBubnBmc19zdGF0ZnNfaW50 KGRlbnRyeS0+ZF9zYiwgYnVmKTsNCiB9DQotDQotI2Vsc2UNCi0NCi1zdGF0 aWMgaW50DQotbm5wZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBrc3RhdGZzICpidWYpDQotew0KLSAgICByZXR1cm4gbm5wZnNf c3RhdGZzX2ludChzYiwgYnVmKTsNCi19DQotDQotI2VuZGlmDQo= ---276651502-1195004614-1452731309=:24061 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-1195004614-1452731309=:24061--