From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akio Takebe Subject: [Patch] cleanup warning in xen/ia64 Date: Mon, 27 Feb 2006 10:48:44 +0900 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary-gFirvE2HaF7PmlwUVhiDO" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-ia64-devel , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Description: Mail message body Hi, all We clean up warning in xen/ia64 . We have cleaned up many warnings, but it remainded some warnings yet. These patches fix many issue (ex. panic dom0, oops domU/dom0...). we will fix compile warnnings one step at a time. For xen (common) - cleanup.include.xen.patch For xen (ia64) - cleanup.include.asm-ia64.patch - cleanup.linux.patch - cleanup.linux-xen.patch - cleanup.xen.patch Signed-off-by: Tsunehisa Doi Signed-off-by: Kouya SHIMURA Signed-off-by: Masaki Kanno Signed-off-by: Akio Takebe Best Regards, Akio Takebe, and Fujitsu team --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: application/octet-stream; name="cleanup.include.asm-ia64.patch" Content-Disposition: attachment; filename="cleanup.include.asm-ia64.patch" Content-Transfer-Encoding: base64 ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2luY2x1ZGUvYXNtLWlhNjQvY29uZmlnLmgKLS0t IGEveGVuL2luY2x1ZGUvYXNtLWlhNjQvY29uZmlnLmgJRnJpIEZlYiAyNCAyMjo0MTowOCAy MDA2CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1pYTY0L2NvbmZpZy5oCVN1biBGZWIgMjYgMTY6 NTM6NDIgMjAwNgpAQCAtMjU1LDcgKzI1NSw3IEBACiAjZGVmaW5lIENPTkZJR19CTEtfREVW X0lOSVRSRCAvLyBuZWVkZWQgdG8gcmVzZXJ2ZSBtZW1vcnkgZm9yIGRvbWFpbjAKIAogdm9p ZCBkdW1teV9jYWxsZWQoY2hhciAqZnVuY3Rpb24pOwotI2RlZmluZSBkdW1teSgpCWR1bW15 X2NhbGxlZChfX0ZVTkNUSU9OX18pCisjZGVmaW5lIGR1bW15KCkJZHVtbXlfY2FsbGVkKChj aGFyICopIF9fRlVOQ1RJT05fXykKIAogLy8gdGhlc2UgZGVjbGFyYXRpb25zIGdvdCBtb3Zl ZCBhdCBzb21lIHBvaW50LCBmaW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGVtCiBleHRlcm4g aW50IGh0X3Blcl9jb3JlOwpkaWZmIC1yIDZjNDMxMThiZGJhOCB4ZW4vaW5jbHVkZS9hc20t aWE2NC9tbS5oCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS1pYTY0L21tLmgJRnJpIEZlYiAyNCAy Mjo0MTowOCAyMDA2CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1pYTY0L21tLmgJU3VuIEZlYiAy NiAxNjo1Mzo0MiAyMDA2CkBAIC00MDcsNiArNDA3LDcgQEAKIGV4dGVybiBpbnQgbnJfc3dh cF9wYWdlczsKIAogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKm1wdF90YWJsZTsKK2V4dGVybiB1 bnNpZ25lZCBsb25nIGdtZm5fdG9fbWZuX2ZvcmVpZ24oc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBncGZuKTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvb2t1cF9kb21haW5f bXBhKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbXBhZGRyKTsKICN1bmRlZiBt YWNoaW5lX3RvX3BoeXNfbWFwcGluZwogI2RlZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGlu ZwltcHRfdGFibGUKZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2luY2x1ZGUvYXNtLWlhNjQv dmNwdS5oCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS1pYTY0L3ZjcHUuaAlGcmkgRmViIDI0IDIy OjQxOjA4IDIwMDYKKysrIGIveGVuL2luY2x1ZGUvYXNtLWlhNjQvdmNwdS5oCVN1biBGZWIg MjYgMTY6NTM6NDIgMjAwNgpAQCAtMzgsNyArMzgsOSBAQAogZXh0ZXJuIElBNjRGQVVMVCB2 Y3B1X2dldF9ncl9uYXQoVkNQVSAqdmNwdSwgdW5zaWduZWQgbG9uZyByZWcsIFVJTlQ2NCAq dmFsKTsKIGV4dGVybiBJQTY0RkFVTFQgdmNwdV9zZXRfZ3IoVkNQVSAqdmNwdSwgdW5zaWdu ZWQgbG9uZyByZWcsIFVJTlQ2NCB2YWx1ZSwgaW50IG5hdCk7CiAvKiBhcHBsaWNhdGlvbiBy ZWdpc3RlcnMgKi8KK2V4dGVybiB2b2lkIHZjcHVfbG9hZF9rZXJuZWxfcmVncyhWQ1BVICp2 Y3B1KTsKIGV4dGVybiBJQTY0RkFVTFQgdmNwdV9zZXRfYXIoVkNQVSAqdmNwdSwgVUlOVDY0 IHJlZywgVUlOVDY0IHZhbCk7CitleHRlcm4gSUE2NEZBVUxUIHZjcHVfZ2V0X2FyKFZDUFUg KnZjcHUsIFVJTlQ2NCByZWcsIFVJTlQ2NCAqdmFsKTsKIC8qIHBzciAqLwogZXh0ZXJuIEJP T0xFQU4gdmNwdV9nZXRfcHNyX2ljKFZDUFUgKnZjcHUpOwogZXh0ZXJuIFVJTlQ2NCB2Y3B1 X2dldF9pcHNyX2ludF9zdGF0ZShWQ1BVICp2Y3B1LFVJTlQ2NCBwcmV2cHNyKTsKQEAgLTQ2 LDYgKzQ4LDkgQEAKIGV4dGVybiBJQTY0RkFVTFQgdmNwdV9yZXNldF9wc3Jfc20oVkNQVSAq dmNwdSwgVUlOVDY0IGltbSk7CiBleHRlcm4gSUE2NEZBVUxUIHZjcHVfc2V0X3Bzcl9zbShW Q1BVICp2Y3B1LCBVSU5UNjQgaW1tKTsKIGV4dGVybiBJQTY0RkFVTFQgdmNwdV9zZXRfcHNy X2woVkNQVSAqdmNwdSwgVUlOVDY0IHZhbCk7CitleHRlcm4gSUE2NEZBVUxUIHZjcHVfc2V0 X3Bzcl9pKFZDUFUgKnZjcHUpOworZXh0ZXJuIElBNjRGQVVMVCB2Y3B1X3Jlc2V0X3Bzcl9k dChWQ1BVICp2Y3B1KTsKK2V4dGVybiBJQTY0RkFVTFQgdmNwdV9zZXRfcHNyX2R0KFZDUFUg KnZjcHUpOwogLyogY29udHJvbCByZWdpc3RlcnMgKi8KIGV4dGVybiBJQTY0RkFVTFQgdmNw dV9zZXRfZGNyKFZDUFUgKnZjcHUsIFVJTlQ2NCB2YWwpOwogZXh0ZXJuIElBNjRGQVVMVCB2 Y3B1X3NldF9pdG0oVkNQVSAqdmNwdSwgVUlOVDY0IHZhbCk7CkBAIC04OSw2ICs5NCw4IEBA CiBleHRlcm4gSUE2NEZBVUxUIHZjcHVfZ2V0X2xycjAoVkNQVSAqdmNwdSwgVUlOVDY0ICpw dmFsKTsKIGV4dGVybiBJQTY0RkFVTFQgdmNwdV9nZXRfbHJyMShWQ1BVICp2Y3B1LCBVSU5U NjQgKnB2YWwpOwogLyogaW50ZXJydXB0IHJlZ2lzdGVycyAqLworZXh0ZXJuIHZvaWQgdmNw dV9wZW5kX3Vuc3BlY2lmaWVkX2ludGVycnVwdChWQ1BVICp2Y3B1KTsKK2V4dGVybiBVSU5U NjQgdmNwdV9jaGVja19wZW5kaW5nX2ludGVycnVwdHMoVkNQVSAqdmNwdSk7CiBleHRlcm4g SUE2NEZBVUxUIHZjcHVfZ2V0X2l0dihWQ1BVICp2Y3B1LFVJTlQ2NCAqcHZhbCk7CiBleHRl cm4gSUE2NEZBVUxUIHZjcHVfZ2V0X3BtdihWQ1BVICp2Y3B1LFVJTlQ2NCAqcHZhbCk7CiBl eHRlcm4gSUE2NEZBVUxUIHZjcHVfZ2V0X2NtY3YoVkNQVSAqdmNwdSxVSU5UNjQgKnB2YWwp OwpAQCAtOTksNiArMTA2LDcgQEAKIC8qIGludGVydmFsIHRpbWVyIHJlZ2lzdGVycyAqLwog ZXh0ZXJuIElBNjRGQVVMVCB2Y3B1X3NldF9pdG0oVkNQVSAqdmNwdSxVSU5UNjQgdmFsKTsK IGV4dGVybiBJQTY0RkFVTFQgdmNwdV9zZXRfaXRjKFZDUFUgKnZjcHUsVUlOVDY0IHZhbCk7 CitleHRlcm4gVUlOVDY0IHZjcHVfdGltZXJfcGVuZGluZ19lYXJseShWQ1BVICp2Y3B1KTsK IC8qIGRlYnVnIGJyZWFrcG9pbnQgcmVnaXN0ZXJzICovCiBleHRlcm4gSUE2NEZBVUxUIHZj cHVfc2V0X2licihWQ1BVICp2Y3B1LFVJTlQ2NCByZWcsVUlOVDY0IHZhbCk7CiBleHRlcm4g SUE2NEZBVUxUIHZjcHVfc2V0X2RicihWQ1BVICp2Y3B1LFVJTlQ2NCByZWcsVUlOVDY0IHZh bCk7CkBAIC0xMzUsOSArMTQzLDE0IEBACiBleHRlcm4gSUE2NEZBVUxUIHZjcHVfcHRyX2ko VkNQVSAqdmNwdSxVSU5UNjQgdmFkciwgVUlOVDY0IGFkZHJfcmFuZ2UpOwogZXh0ZXJuIElB NjRGQVVMVCB2Y3B1X3RyYW5zbGF0ZShWQ1BVICp2Y3B1LCBVSU5UNjQgYWRkcmVzcywgQk9P TEVBTiBpc19kYXRhLCBVSU5UNjQgKnB0ZXZhbCwgVUlOVDY0ICppdGlyLCBVSU5UNjQgKmlo YSk7CiBleHRlcm4gSUE2NEZBVUxUIHZjcHVfdHBhKFZDUFUgKnZjcHUsIFVJTlQ2NCB2YWRy LCBVSU5UNjQgKnBhZHIpOworZXh0ZXJuIElBNjRGQVVMVCB2Y3B1X2ZvcmNlX2RhdGFfbWlz cyhWQ1BVICp2Y3B1LCBVSU5UNjQgaWZhKTsKK2V4dGVybiBJQTY0RkFVTFQgdmNwdV9mYyhW Q1BVICp2Y3B1LCBVSU5UNjQgdmFkcik7CiAvKiBtaXNjICovCiBleHRlcm4gSUE2NEZBVUxU IHZjcHVfcmZpKFZDUFUgKnZjcHUpOwogZXh0ZXJuIElBNjRGQVVMVCB2Y3B1X3RoYXNoKFZD UFUgKnZjcHUsIFVJTlQ2NCB2YWRyLCBVSU5UNjQgKnB2YWwpOworZXh0ZXJuIElBNjRGQVVM VCB2Y3B1X2NvdmVyKFZDUFUgKnZjcHUpOworZXh0ZXJuIElBNjRGQVVMVCB2Y3B1X3R0YWco VkNQVSAqdmNwdSwgVUlOVDY0IHZhZHIsIFVJTlQ2NCAqcGFkcik7CitleHRlcm4gSUE2NEZB VUxUIHZjcHVfZ2V0X2NwdWlkKFZDUFUgKnZjcHUsIFVJTlQ2NCByZWcsIFVJTlQ2NCAqcHZh bCk7CiAKIGV4dGVybiB2b2lkIHZjcHVfcGVuZF9pbnRlcnJ1cHQoVkNQVSAqdmNwdSwgVUlO VDY0IHZlY3Rvcik7CiBleHRlcm4gdm9pZCB2Y3B1X3BlbmRfdGltZXIoVkNQVSAqdmNwdSk7 Cg== --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: application/octet-stream; name="cleanup.include.xen.patch" Content-Disposition: attachment; filename="cleanup.include.xen.patch" Content-Transfer-Encoding: base64 ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2luY2x1ZGUveGVuL3N0cmluZy5oCi0tLSBhL3hl bi9pbmNsdWRlL3hlbi9zdHJpbmcuaAlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIv eGVuL2luY2x1ZGUveGVuL3N0cmluZy5oCVN1biBGZWIgMjYgMTY6NTM6NTcgMjAwNgpAQCAt MjQsNiArMjQsOSBAQAogI2VuZGlmCiAjaWZuZGVmIF9fSEFWRV9BUkNIX1NUUk5DUFkKIGV4 dGVybiBjaGFyICogc3RybmNweShjaGFyICosY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXpl X3QpOworI2VuZGlmCisjaWZuZGVmIF9fSEFWRV9BUkNIX1NUUkxDUFkKK2V4dGVybiBzaXpl X3Qgc3RybGNweShjaGFyICosY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwogI2Vu ZGlmCiAjaWZuZGVmIF9fSEFWRV9BUkNIX1NUUkNBVAogZXh0ZXJuIGNoYXIgKiBzdHJjYXQo Y2hhciAqLCBjb25zdCBjaGFyICopOwo= --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: application/octet-stream; name="cleanup.linux-xen.patch" Content-Disposition: attachment; filename="cleanup.linux-xen.patch" Content-Transfer-Encoding: base64 ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC9saW51eC14ZW4vbWluc3RhdGUu aAotLS0gYS94ZW4vYXJjaC9pYTY0L2xpbnV4LXhlbi9taW5zdGF0ZS5oCUZyaSBGZWIgMjQg MjI6NDE6MDggMjAwNgorKysgYi94ZW4vYXJjaC9pYTY0L2xpbnV4LXhlbi9taW5zdGF0ZS5o CVN1biBGZWIgMjYgMTY6NTI6NTIgMjAwNgpAQCAtMTc1LDcgKzE3NSw3IEBACiAJOzsJCQkJ CQkJCQkJCVwKIC5tZW0ub2Zmc2V0IDAsMDsgc3Q4LnNwaWxsIFtyMTZdPXIxMywxNjsJCQkJ CQkJXAogLm1lbS5vZmZzZXQgOCwwOyBzdDguc3BpbGwgW3IxN109cjIxLDE2OwkvKiBzYXZl IGFyLmZwc3IgKi8JCQkJXAotCS8qIFhFTiBtb3YgcjEzPUlBNjRfS1IoQ1VSUkVOVCk7CS8q IGVzdGFibGlzaCBgY3VycmVudCcgKi8JCQkJXAorCS8qIFhFTiBtb3YgcjEzPUlBNjRfS1Io Q1VSUkVOVCk7Ki8JLyogZXN0YWJsaXNoIGBjdXJyZW50JyAqLwkJCQlcCiAJTUlOU1RBVEVf R0VUX0NVUlJFTlQocjEzKTsJCS8qIFhFTiBlc3RhYmxpc2ggYGN1cnJlbnQnICovCQkJCVwK IAk7OwkJCQkJCQkJCQkJXAogLm1lbS5vZmZzZXQgMCwwOyBzdDguc3BpbGwgW3IxNl09cjE1 LDE2OwkJCQkJCQlcCmRpZmYgLXIgNmM0MzExOGJkYmE4IHhlbi9hcmNoL2lhNjQvbGludXgt eGVuL3NldHVwLmMKLS0tIGEveGVuL2FyY2gvaWE2NC9saW51eC14ZW4vc2V0dXAuYwlGcmkg RmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2NC9saW51eC14ZW4vc2V0 dXAuYwlTdW4gRmViIDI2IDE2OjUyOjUyIDIwMDYKQEAgLTk0LDYgKzk0LDEwIEBACiBFWFBP UlRfU1lNQk9MKGlvX3NwYWNlKTsKIHVuc2lnbmVkIGludCBudW1faW9fc3BhY2VzOwogCisj aWZkZWYgWEVOCitleHRlcm4gdm9pZCBlYXJseV9jbWRsaW5lX3BhcnNlKGNoYXIgKiopOwor I2VuZGlmCisKIC8qCiAgKiAiZmx1c2hfaWNhY2hlX3JhbmdlKCkiIG5lZWRzIHRvIGtub3cg d2hhdCBwcm9jZXNzb3IgZGVwZW5kZW50IHN0cmlkZSBzaXplIHRvIHVzZQogICogd2hlbiBp dCBtYWtlcyBpLWNhY2hlKHMpIGNvaGVyZW50IHdpdGggZC1jYWNoZXMuCkBAIC01MDAsNiAr NTA0LDcgQEAKIAlwYWdpbmdfaW5pdCgpOwogfQogCisjaWZuZGVmIFhFTgogLyoKICAqIERp c3BsYXkgY3B1IGluZm8gZm9yIGFsbCBjcHUncy4KICAqLwpAQCAtNjExLDE0ICs2MTYsMTMg QEAKIHsKIH0KIAotI2lmbmRlZiBYRU4KIHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBjcHVpbmZv X29wID0gewogCS5zdGFydCA9CWNfc3RhcnQsCiAJLm5leHQgPQkJY19uZXh0LAogCS5zdG9w ID0JCWNfc3RvcCwKIAkuc2hvdyA9CQlzaG93X2NwdWluZm8KIH07Ci0jZW5kaWYKKyNlbmRp ZiAvKiBYRU4gKi8KIAogdm9pZAogaWRlbnRpZnlfY3B1IChzdHJ1Y3QgY3B1aW5mb19pYTY0 ICpjKQpkaWZmIC1yIDZjNDMxMThiZGJhOCB4ZW4vYXJjaC9pYTY0L2xpbnV4LXhlbi91bmFs aWduZWQuYwotLS0gYS94ZW4vYXJjaC9pYTY0L2xpbnV4LXhlbi91bmFsaWduZWQuYwlGcmkg RmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2NC9saW51eC14ZW4vdW5h bGlnbmVkLmMJU3VuIEZlYiAyNiAxNjo1Mjo1MiAyMDA2CkBAIC0yMTYsNiArMjE2LDcgQEAK IAlSUFQocjI4KSwgUlBUKHIyOSksIFJQVChyMzApLCBSUFQocjMxKQogfTsKIAorI2lmIDAK IHN0YXRpYyB1MTYgZnJfaW5mb1szMl09ewogCTAsCQkJLyogY29uc3RhbnQgOiBXRSBTSE9V TEQgTkVWRVIgR0VUIFRISVMgKi8KIAkwLAkJCS8qIGNvbnN0YW50IDogV0UgU0hPVUxEIE5F VkVSIEdFVCBUSElTICovCkBAIC0yODUsNiArMjg2LDcgQEAKIAl9CiAjCXVuZGVmIEYKIH0K KyNlbmRpZgogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIHJvdGF0ZV9yZWcgKHVu c2lnbmVkIGxvbmcgc29yLCB1bnNpZ25lZCBsb25nIHJyYiwgdW5zaWduZWQgbG9uZyByZWcp CkBAIC0yOTksMTIgKzMwMSwxMSBAQAogdm9pZAogc2V0X3JzZV9yZWcgKHN0cnVjdCBwdF9y ZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHIxLCB1bnNpZ25lZCBsb25nIHZhbCwgdW5zaWdu ZWQgbG9uZyBuYXQpCiB7Ci0Jc3RydWN0IHN3aXRjaF9zdGFjayAqc3cgPSAoc3RydWN0IHN3 aXRjaF9zdGFjayAqKSByZWdzIC0gMTsKLQl1bnNpZ25lZCBsb25nICpic3AsICpic3BzdG9y ZSwgKmFkZHIsICpybmF0X2FkZHIsICp1YnNfZW5kOworCXVuc2lnbmVkIGxvbmcgKmJzcCwg KmJzcHN0b3JlLCAqYWRkciwgKnJuYXRfYWRkcjsKIAl1bnNpZ25lZCBsb25nICprYnMgPSAo dm9pZCAqKSBjdXJyZW50ICsgSUE2NF9SQlNfT0ZGU0VUOwotCXVuc2lnbmVkIGxvbmcgcm5h dHMsIG5hdF9tYXNrOworCXVuc2lnbmVkIGxvbmcgbmF0X21hc2s7CiAgICAgdW5zaWduZWQg bG9uZyBvbGRfcnNjLG5ld19yc2M7Ci0JdW5zaWduZWQgbG9uZyBvbl9rYnMscm5hdDsKKwl1 bnNpZ25lZCBsb25nIHJuYXQ7CiAJbG9uZyBzb2YgPSAocmVncy0+Y3JfaWZzKSAmIDB4N2Y7 CiAJbG9uZyBzb3IgPSA4ICogKChyZWdzLT5jcl9pZnMgPj4gMTQpICYgMHhmKTsKIAlsb25n IHJyYl9nciA9IChyZWdzLT5jcl9pZnMgPj4gMTgpICYgMHg3ZjsKQEAgLTMyMyw3ICszMjQs NyBAQAogICAgIG5ld19yc2M9b2xkX3JzYyYofjB4Myk7CiAgICAgaWE2NF9zZXRfcnNjKG5l d19yc2MpOwogCi0gICAgYnNwc3RvcmUgPSBpYTY0X2dldF9ic3BzdG9yZSgpOworICAgIGJz cHN0b3JlID0gKHVuc2lnbmVkIGxvbmcqKWlhNjRfZ2V0X2JzcHN0b3JlKCk7CiAgICAgYnNw ID1rYnMgKyAocmVncy0+bG9hZHJzID4+IDE5KTsvLzE2KzMKIAogCWFkZHIgPSBpYTY0X3Jz ZV9za2lwX3JlZ3MoYnNwLCAtc29mICsgcmlkeCk7CkBAIC0zMzUsNyArMzM2LDcgQEAKICAg ICAgICAgaWE2NF9mbHVzaHJzICgpOwogICAgICAgICBpYTY0X21mICgpOwogCQkqYWRkciA9 IHZhbDsKLSAgICAgICAgYnNwc3RvcmUgPSBpYTY0X2dldF9ic3BzdG9yZSgpOworICAgICAg ICBic3BzdG9yZSA9ICh1bnNpZ25lZCBsb25nKilpYTY0X2dldF9ic3BzdG9yZSgpOwogICAg IAlybmF0ID0gaWE2NF9nZXRfcm5hdCAoKTsKICAgICAgICAgaWYoYnNwc3RvcmUgPCBybmF0 X2FkZHIpewogICAgICAgICAgICAgcm5hdD1ybmF0Jih+bmF0X21hc2spOwpAQCAtMzYyLDEz ICszNjMsMTEgQEAKIAogCiBzdGF0aWMgdm9pZAotZ2V0X3JzZV9yZWcgKHN0cnVjdCBwdF9y ZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHIxLCB1bnNpZ25lZCBsb25nICp2YWwsIHVuc2ln bmVkIGxvbmcgKm5hdCkKLXsKLSAgICBzdHJ1Y3Qgc3dpdGNoX3N0YWNrICpzdyA9IChzdHJ1 Y3Qgc3dpdGNoX3N0YWNrICopIHJlZ3MgLSAxOwotICAgIHVuc2lnbmVkIGxvbmcgKmJzcCwg KmFkZHIsICpybmF0X2FkZHIsICp1YnNfZW5kLCAqYnNwc3RvcmU7CitnZXRfcnNlX3JlZyAo c3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgcjEsIHVuc2lnbmVkIGxvbmcg KnZhbCwgaW50Km5hdCkKK3sKKyAgICB1bnNpZ25lZCBsb25nICpic3AsICphZGRyLCAqcm5h dF9hZGRyLCAqYnNwc3RvcmU7CiAgICAgdW5zaWduZWQgbG9uZyAqa2JzID0gKHZvaWQgKikg Y3VycmVudCArIElBNjRfUkJTX09GRlNFVDsKLSAgICB1bnNpZ25lZCBsb25nIHJuYXRzLCBu YXRfbWFzazsKLSAgICB1bnNpZ25lZCBsb25nIG9uX2ticzsKKyAgICB1bnNpZ25lZCBsb25n IG5hdF9tYXNrOwogICAgIHVuc2lnbmVkIGxvbmcgb2xkX3JzYywgbmV3X3JzYzsKICAgICBs b25nIHNvZiA9IChyZWdzLT5jcl9pZnMpICYgMHg3ZjsKICAgICBsb25nIHNvciA9IDggKiAo KHJlZ3MtPmNyX2lmcyA+PiAxNCkgJiAweGYpOwpAQCAtMzg4LDcgKzM4Nyw3IEBACiAgICAg bmV3X3JzYz1vbGRfcnNjJih+KDB4MykpOwogICAgIGlhNjRfc2V0X3JzYyhuZXdfcnNjKTsK IAotICAgIGJzcHN0b3JlID0gaWE2NF9nZXRfYnNwc3RvcmUoKTsKKyAgICBic3BzdG9yZSA9 ICh1bnNpZ25lZCBsb25nKilpYTY0X2dldF9ic3BzdG9yZSgpOwogICAgIGJzcCA9a2JzICsg KHJlZ3MtPmxvYWRycyA+PiAxOSk7IC8vMTYrMzsKIAogICAgIGFkZHIgPSBpYTY0X3JzZV9z a2lwX3JlZ3MoYnNwLCAtc29mICsgcmlkeCk7CkBAIC0zOTksMTQgKzM5OCwxNCBAQAogCiAg ICAgICAgIGlhNjRfZmx1c2hycyAoKTsKICAgICAgICAgaWE2NF9tZiAoKTsKLSAgICAgICAg YnNwc3RvcmUgPSBpYTY0X2dldF9ic3BzdG9yZSgpOworICAgICAgICBic3BzdG9yZSA9ICh1 bnNpZ25lZCBsb25nKilpYTY0X2dldF9ic3BzdG9yZSgpOwogICAgIH0KICAgICAqdmFsPSph ZGRyOwogICAgIGlmKG5hdCl7CiAgICAgICAgIGlmKGJzcHN0b3JlIDwgcm5hdF9hZGRyKXsK LSAgICAgICAgICAgICpuYXQ9ISEoaWE2NF9nZXRfcm5hdCgpJm5hdF9tYXNrKTsKKyAgICAg ICAgICAgICpuYXQ9KGludCkhIShpYTY0X2dldF9ybmF0KCkmbmF0X21hc2spOwogICAgICAg ICB9ZWxzZXsKLSAgICAgICAgICAgICpuYXQgPSAhISgoKnJuYXRfYWRkcikmbmF0X21hc2sp OworICAgICAgICAgICAgKm5hdCA9IChpbnQpISEoKCpybmF0X2FkZHIpJm5hdF9tYXNrKTsK ICAgICAgICAgfQogICAgICAgICBpYTY0X3NldF9yc2Mob2xkX3JzYyk7CiAgICAgfQpAQCAt NjM0LDYgKzYzMyw3IEBACiAJcmV0dXJuIHJvdGF0ZV9yZWcoOTYsIHJyYl9mciwgKHJlZ251 bSAtIElBNjRfRklSU1RfUk9UQVRJTkdfRlIpKTsKIH0KIAorI2lmIDAKIHN0YXRpYyB2b2lk CiBzZXRmcHJlZyAodW5zaWduZWQgbG9uZyByZWdudW0sIHN0cnVjdCBpYTY0X2ZwcmVnICpm cHZhbCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CkBAIC02ODIsNiArNjgyLDcgQEAKIAkJ cmVncy0+Y3JfaXBzciB8PSBJQTY0X1BTUl9NRkw7CiAJfQogfQorI2VuZGlmCiAKIC8qCiAg KiBUaG9zZSAyIGlubGluZSBmdW5jdGlvbnMgZ2VuZXJhdGUgdGhlIHNwaWxsZWQgdmVyc2lv bnMgb2YgdGhlIGNvbnN0YW50IGZsb2F0aW5nIHBvaW50CkBAIC02OTksNiArNzAwLDcgQEAK IAlpYTY0X3N0Zl9zcGlsbChmaW5hbCwgMSk7CiB9CiAKKyNpZiAwCiBzdGF0aWMgdm9pZAog Z2V0ZnByZWcgKHVuc2lnbmVkIGxvbmcgcmVnbnVtLCBzdHJ1Y3QgaWE2NF9mcHJlZyAqZnB2 YWwsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewpAQCAtNzQ4LDYgKzc1MCw3IEBACiAJCX0K IAl9CiB9CisjZW5kaWYKIAogCiAjaWZkZWYgWEVOCkBAIC04MDMsNiArODA2LDcgQEAKIAkJ Km5hdCAgPSAoKnVuYXQgPj4gKGFkZHIgPj4gMyAmIDB4M2YpKSAmIDB4MVVMOwogfQogCisj aWYgMAogc3RhdGljIHZvaWQKIGVtdWxhdGVfbG9hZF91cGRhdGVzICh1cGRhdGVfdCB0eXBl LCBsb2FkX3N0b3JlX3QgbGQsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25n IGlmYSkKIHsKQEAgLTEwNzgsNiArMTA4Miw3IEBACiAKIAlyZXR1cm4gMDsKIH0KKyNlbmRp ZgogCiAvKgogICogZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBzaXplcyBpbiBieXRlcwpA QCAtMTE1Myw2ICsxMTU4LDcgQEAKIAlpYTY0X3N0ZmQoZmluYWwsIDYpOwogfQogCisjaWYg MAogc3RhdGljIGludAogZW11bGF0ZV9sb2FkX2Zsb2F0cGFpciAodW5zaWduZWQgbG9uZyBp ZmEsIGxvYWRfc3RvcmVfdCBsZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CkBAIC0xNDM3 LDYgKzE0NDMsNyBAQAogCXJldHVybiAwOwogCiB9CisjZW5kaWYKIAogdm9pZAogaWE2NF9o YW5kbGVfdW5hbGlnbmVkICh1bnNpZ25lZCBsb25nIGlmYSwgc3RydWN0IHB0X3JlZ3MgKnJl Z3MpCmRpZmYgLXIgNmM0MzExOGJkYmE4IHhlbi9hcmNoL2lhNjQvbGludXgteGVuL3Vud2lu ZC5jCi0tLSBhL3hlbi9hcmNoL2lhNjQvbGludXgteGVuL3Vud2luZC5jCUZyaSBGZWIgMjQg MjI6NDE6MDggMjAwNgorKysgYi94ZW4vYXJjaC9pYTY0L2xpbnV4LXhlbi91bndpbmQuYwlT dW4gRmViIDI2IDE2OjUyOjUyIDIwMDYKQEAgLTQ4NCw3ICs0ODQsOCBAQAogCX0gZWxzZSBp ZiAocmVnbnVtIDw9IDE1KSB7CiAJCWlmIChyZWdudW0gPD0gMTEpIHsKIAkJCXB0ID0gZ2V0 X3NjcmF0Y2hfcmVncyhpbmZvKTsKLQkJCWFkZHIgPSAmcHQtPmY2ICArIChyZWdudW0gLSA2 KTsKKwkJCS8vWFhYIHN0cnVjdCBpYTY0X2ZwcmVnIGFuZCBzdHJ1Y3QgcHRfZnByZWcgYXJl IHNhbWUuCisJCQlhZGRyID0gKHN0cnVjdCBpYTY0X2ZwcmVnKikoJnB0LT5mNiAgKyAocmVn bnVtIC0gNikpOwogCQl9CiAJCWVsc2UKIAkJCWFkZHIgPSAmaW5mby0+c3ctPmYxMiArIChy ZWdudW0gLSAxMik7Cg== --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: application/octet-stream; name="cleanup.linux.patch" Content-Disposition: attachment; filename="cleanup.linux.patch" Content-Transfer-Encoding: base64 ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC9saW51eC9jbWRsaW5lLmMKLS0t IGEveGVuL2FyY2gvaWE2NC9saW51eC9jbWRsaW5lLmMJRnJpIEZlYiAyNCAyMjo0MTowOCAy MDA2CisrKyBiL3hlbi9hcmNoL2lhNjQvbGludXgvY21kbGluZS5jCVN1biBGZWIgMjYgMTY6 NTI6MzggMjAwNgpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5o PgorI2luY2x1ZGUgPHhlbi9saWIuaD4KIAogCiAvKioKZGlmZiAtciA2YzQzMTE4YmRiYTgg eGVuL2FyY2gvaWE2NC9saW51eC9saW51eGV4dGFibGUuYwotLS0gYS94ZW4vYXJjaC9pYTY0 L2xpbnV4L2xpbnV4ZXh0YWJsZS5jCUZyaSBGZWIgMjQgMjI6NDE6MDggMjAwNgorKysgYi94 ZW4vYXJjaC9pYTY0L2xpbnV4L2xpbnV4ZXh0YWJsZS5jCVN1biBGZWIgMjYgMTY6NTI6Mzgg MjAwNgpAQCAtMTksNiArMTksMTAgQEAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5j bHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KKworZXh0 ZXJuIHZvaWQgKnNlYXJjaF9tb2R1bGVfZXh0YWJsZXModW5zaWduZWQgbG9uZyBhZGRyKTsK K2V4dGVybiB2b2lkICpfX21vZHVsZV90ZXh0X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRy KTsKK2V4dGVybiB2b2lkICptb2R1bGVfdGV4dF9hZGRyZXNzKHVuc2lnbmVkIGxvbmcgYWRk cik7CiAKIGV4dGVybiBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5IF9fc3RhcnRfX19l eF90YWJsZVtdOwogZXh0ZXJuIHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgX19zdG9w X19fZXhfdGFibGVbXTsK --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: application/octet-stream; name="cleanup.xen.patch" Content-Disposition: attachment; filename="cleanup.xen.patch" Content-Transfer-Encoding: base64 ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC94ZW4vYWNwaS5jCi0tLSBhL3hl bi9hcmNoL2lhNjQveGVuL2FjcGkuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIv eGVuL2FyY2gvaWE2NC94ZW4vYWNwaS5jCVN1biBGZWIgMjYgMTY6NTM6MDIgMjAwNgpAQCAt MTc4LDcgKzE3OCw3IEBACiAKIAlpZiAobGFwaWMtPmFkZHJlc3MpIHsKIAkJaW91bm1hcCgo dm9pZCAqKSBpcGlfYmFzZV9hZGRyKTsKLQkJaXBpX2Jhc2VfYWRkciA9ICh1bnNpZ25lZCBs b25nKSBpb3JlbWFwKGxhcGljLT5hZGRyZXNzLCAwKTsKKwkJaXBpX2Jhc2VfYWRkciA9ICh2 b2lkIF9faW9tZW0gKikgaW9yZW1hcChsYXBpYy0+YWRkcmVzcywgMCk7CiAJfQogCXJldHVy biAwOwogfQpAQCAtMjY1LDcgKzI2NSw5IEBACiAJYWNwaV90YWJsZV9lbnRyeV9oZWFkZXIg KmhlYWRlciwgY29uc3QgdW5zaWduZWQgbG9uZyBlbmQpCiB7CiAJc3RydWN0IGFjcGlfdGFi bGVfcGxhdF9pbnRfc3JjICpwbGludHNyYzsKKyNpZiAwCiAJaW50IHZlY3RvcjsKKyNlbmRp ZgogCiAJcGxpbnRzcmMgPSAoc3RydWN0IGFjcGlfdGFibGVfcGxhdF9pbnRfc3JjICopIGhl YWRlcjsKIApAQCAtMzY5LDkgKzM3MSw5IEBACiAJLyogR2V0IGJhc2UgYWRkcmVzcyBvZiBJ UEkgTWVzc2FnZSBCbG9jayAqLwogCiAJaWYgKGFjcGlfbWFkdC0+bGFwaWNfYWRkcmVzcykK LQkJaXBpX2Jhc2VfYWRkciA9ICh1bnNpZ25lZCBsb25nKSBpb3JlbWFwKGFjcGlfbWFkdC0+ bGFwaWNfYWRkcmVzcywgMCk7Ci0KLQlwcmludGsoS0VSTl9JTkZPIFBSRUZJWCAiTG9jYWwg QVBJQyBhZGRyZXNzIDB4JWx4XG4iLCBpcGlfYmFzZV9hZGRyKTsKKwkJaXBpX2Jhc2VfYWRk ciA9ICh2b2lkIF9faW9tZW0gKikgaW9yZW1hcChhY3BpX21hZHQtPmxhcGljX2FkZHJlc3Ms IDApOworCisJcHJpbnRrKEtFUk5fSU5GTyBQUkVGSVggIkxvY2FsIEFQSUMgYWRkcmVzcyAl cFxuIiwgaXBpX2Jhc2VfYWRkcik7CiAKIAlhY3BpX21hZHRfb2VtX2NoZWNrKGFjcGlfbWFk dC0+aGVhZGVyLm9lbV9pZCwKIAkJYWNwaV9tYWR0LT5oZWFkZXIub2VtX3RhYmxlX2lkKTsK ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC94ZW4vZG9tMF9vcHMuYwotLS0g YS94ZW4vYXJjaC9pYTY0L3hlbi9kb20wX29wcy5jCUZyaSBGZWIgMjQgMjI6NDE6MDggMjAw NgorKysgYi94ZW4vYXJjaC9pYTY0L3hlbi9kb20wX29wcy5jCVN1biBGZWIgMjYgMTY6NTM6 MDIgMjAwNgpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPHhlbi90cmFjZS5oPgogI2lu Y2x1ZGUgPHhlbi9jb25zb2xlLmg+CiAjaW5jbHVkZSA8cHVibGljL3NjaGVkX2N0bC5oPgor I2luY2x1ZGUgPGFzbS92bXguaD4KIAogbG9uZyBhcmNoX2RvX2RvbTBfb3AoZG9tMF9vcF90 ICpvcCwgZG9tMF9vcF90ICp1X2RvbTBfb3ApCiB7CkBAIC0xNDMsNyArMTQ0LDcgQEAKICAg ICAgICAgICAgIG4gKz0gajsKICAgICAgICAgfQogCi0gICAgICAgIGZyZWVfeGVuaGVhcF9w YWdlKCh1bnNpZ25lZCBsb25nKWxfYXJyKTsKKyAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2Uo KHZvaWQgKikgbF9hcnIpOwogCiAgICAgICAgIHB1dF9kb21haW4oZCk7CiAgICAgfQpAQCAt MTYwLDcgKzE2MSw2IEBACiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMgPSBvcC0+ dS5nZXRtZW1saXN0Lm1heF9wZm5zICYgMHhmZmZmZmZmZjsKICAgICAgICAgdW5zaWduZWQg bG9uZyBtZm47CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlciA9IG9wLT51LmdldG1l bWxpc3QuYnVmZmVyOwotICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZTsKIAogICAgICAgICBy ZXQgPSAtRUlOVkFMOwogICAgICAgICBpZiAoIGQgIT0gTlVMTCApCmRpZmYgLXIgNmM0MzEx OGJkYmE4IHhlbi9hcmNoL2lhNjQveGVuL2RvbV9mdy5jCi0tLSBhL3hlbi9hcmNoL2lhNjQv eGVuL2RvbV9mdy5jCUZyaSBGZWIgMjQgMjI6NDE6MDggMjAwNgorKysgYi94ZW4vYXJjaC9p YTY0L3hlbi9kb21fZncuYwlTdW4gRmViIDI2IDE2OjUzOjAyIDIwMDYKQEAgLTM5LDcgKzM5 LDggQEAKIAkJd2hpbGUoMSk7CiAJfQogCWlmIChpbXZhIC0gaW12YV9md19iYXNlID4gUEFH RV9TSVpFKSB7Ci0JCXByaW50ZigiZG9tX3BhOiBiYWQgb2Zmc2V0ISBpbXZhPSVwLCBpbXZh X2Z3X2Jhc2U9JXAgKHNwaW5uaW5nLi4uKVxuIixpbXZhLGltdmFfZndfYmFzZSk7CisJCXBy aW50ZigiZG9tX3BhOiBiYWQgb2Zmc2V0ISBpbXZhPTB4JWx4LCBpbXZhX2Z3X2Jhc2U9MHgl bHggKHNwaW5uaW5nLi4uKVxuIiwKKwkJCWltdmEsIGltdmFfZndfYmFzZSk7CiAJCXdoaWxl KDEpOwogCX0KIAlyZXR1cm4gZG9tX2Z3X2Jhc2VfbXBhICsgKGltdmEgLSBpbXZhX2Z3X2Jh c2UpOwpAQCAtNDgsMzEgKzQ5LDI5IEBACiAvLyBidWlsZHMgYSBoeXBlcmNhbGwgYnVuZGxl IGF0IGRvbWFpbiBwaHlzaWNhbCBhZGRyZXNzCiB2b2lkIGRvbV9lZmlfaHlwZXJjYWxsX3Bh dGNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHVuc2lnbmVkIGxv bmcgaHlwZXJjYWxsKQogewotCXVuc2lnbmVkIGxvbmcgaW12YTsKKwl1bnNpZ25lZCBsb25n ICppbXZhOwogCiAJaWYgKGQgPT0gZG9tMCkgcGFkZHIgKz0gZG9tMF9zdGFydDsKLQlpbXZh ID0gZG9tYWluX21wYV90b19pbXZhKGQscGFkZHIpOwotCWJ1aWxkX2h5cGVyY2FsbF9idW5k bGUoaW12YSxkLT5hcmNoLmJyZWFraW1tLGh5cGVyY2FsbCwxKTsKKwlpbXZhID0gKHVuc2ln bmVkIGxvbmcgKikgZG9tYWluX21wYV90b19pbXZhKGQsIHBhZGRyKTsKKwlidWlsZF9oeXBl cmNhbGxfYnVuZGxlKGltdmEsIGQtPmFyY2guYnJlYWtpbW0sIGh5cGVyY2FsbCwgMSk7CiB9 CiAKIAogLy8gYnVpbGRzIGEgaHlwZXJjYWxsIGJ1bmRsZSBhdCBkb21haW4gcGh5c2ljYWwg YWRkcmVzcwogc3RhdGljIHZvaWQgZG9tX2Z3X2h5cGVyY2FsbF9wYXRjaChzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIHBhZGRyLCB1bnNpZ25lZCBsb25nIGh5cGVyY2FsbCx1 bnNpZ25lZCBsb25nIHJldCkKIHsKLQl1bnNpZ25lZCBsb25nIGltdmE7Ci0KLQlpbXZhID0g ZG9tYWluX21wYV90b19pbXZhKGQscGFkZHIpOwotCWJ1aWxkX2h5cGVyY2FsbF9idW5kbGUo aW12YSxkLT5hcmNoLmJyZWFraW1tLGh5cGVyY2FsbCxyZXQpOworCXVuc2lnbmVkIGxvbmcg KmltdmE7CisKKwlpbXZhID0gKHVuc2lnbmVkIGxvbmcgKikgZG9tYWluX21wYV90b19pbXZh KGQsIHBhZGRyKTsKKwlidWlsZF9oeXBlcmNhbGxfYnVuZGxlKGltdmEsIGQtPmFyY2guYnJl YWtpbW0sIGh5cGVyY2FsbCwgcmV0KTsKIH0KIAogc3RhdGljIHZvaWQgZG9tX2Z3X3BhbF9o eXBlcmNhbGxfcGF0Y2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwYWRkcikK IHsKIAl1bnNpZ25lZCBsb25nICppbXZhOwogCi0JaW12YSA9ICh1bnNpZ25lZCBsb25nICop ZG9tYWluX21wYV90b19pbXZhKGQscGFkZHIpOwotCi0JYnVpbGRfcGFsX2h5cGVyY2FsbF9i dW5kbGVzIChpbXZhLCBkLT5hcmNoLmJyZWFraW1tLAotCQkJCSAgICAgIEZXX0hZUEVSQ0FM TF9QQUxfQ0FMTCk7CisJaW12YSA9ICh1bnNpZ25lZCBsb25nICopIGRvbWFpbl9tcGFfdG9f aW12YShkLCBwYWRkcik7CisJYnVpbGRfcGFsX2h5cGVyY2FsbF9idW5kbGVzKGltdmEsIGQt PmFyY2guYnJlYWtpbW0sIEZXX0hZUEVSQ0FMTF9QQUxfQ0FMTCk7CiB9CiAKIApAQCAtODUs MTUgKzg0LDEzIEBACiAKIAlkb21fZndfYmFzZV9tcGEgPSAwOwogCWlmIChkID09IGRvbTAp IGRvbV9md19iYXNlX21wYSArPSBkb20wX3N0YXJ0OwotCWltdmFfZndfYmFzZSA9IGRvbWFp bl9tcGFfdG9faW12YShkLGRvbV9md19iYXNlX21wYSk7Ci0JYnAgPSBkb21fZndfaW5pdChk LGFyZ3MsYXJnbGVuLGltdmFfZndfYmFzZSxQQUdFX1NJWkUpOwotCXJldHVybiBkb21fcGEo KHVuc2lnbmVkIGxvbmcpYnApOworCWltdmFfZndfYmFzZSA9IGRvbWFpbl9tcGFfdG9faW12 YShkLCBkb21fZndfYmFzZV9tcGEpOworCWJwID0gZG9tX2Z3X2luaXQoZCwgYXJncywgYXJn bGVuLCAoY2hhciAqKSBpbXZhX2Z3X2Jhc2UsIFBBR0VfU0laRSk7CisJcmV0dXJuIGRvbV9w YSgodW5zaWduZWQgbG9uZykgYnApOwogfQogCiAKIC8qIHRoZSBmb2xsb3dpbmcgaGVhdmls eSBsZXZlcmFnZWQgZnJvbSBsaW51eC9hcmNoL2lhNjQvaHAvc2ltL2Z3LWVtdS5jICovCi0K LSNkZWZpbmUgTUIJKDEwMjQqMTAyNFVMKQogCiAjZGVmaW5lIE5VTV9FRklfU1lTX1RBQkxF UyA2CiAjIGRlZmluZSBOVU1fTUVNX0RFU0NTCTUKQEAgLTI1Niw3ICsyNTMsOCBAQAogCQkJ aWYgKCgoaW4xICYgfjB4ZmZmZmZmZmZVTCkgJiYgKGluNCA9PSAwKSkgfHwKIAkJCSAgICAo aW40ID4gMSkgfHwKIAkJCSAgICAoaW4yID4gOCkgfHwgKGluMiAmIChpbjItMSkpKQotCQkJ ICAgIAlwcmludGYoIioqKiBTQUxfUENJX0NPTkZfV1JJVEU/IT8oYWRyPSVwLHR5cD0lcCxz ej0lcCx2YWw9JXApXG4iLGluMSxpbjQsaW4yLGluMyk7CisJCQkJcHJpbnRmKCIqKiogU0FM X1BDSV9DT05GX1dSSVRFPyE/KGFkcj0weCVseCx0eXA9MHglbHgsc3o9MHglbHgsdmFsPTB4 JWx4KVxuIiwKKwkJCQkJaW4xLGluNCxpbjIsaW4zKTsKIAkJCS8vIG5vdGUgdGhhdCBhcmdz IGFyZSBpbiBhIGRpZmZlcmVudCBvcmRlciEhCiAJCQlzdGF0dXMgPSBpYTY0X3NhbF9wY2lf Y29uZmlnX3dyaXRlKGluMSxpbjQsaW4yLGluMyk7CiAJCX0KQEAgLTI5Niw3ICsyOTQsNyBA QAogCWxvbmcgc3RhdHVzID0gLTE7CiAKIAlpZiAocnVubmluZ19vbl9zaW0pIHJldHVybiBw YWxfZW11bGF0b3Jfc3RhdGljKGluZGV4KTsKLQlwcmludGsoInhlbl9wYWxfZW11bGF0b3I6 IGluZGV4PSVkXG4iLGluZGV4KTsKKwlwcmludGsoInhlbl9wYWxfZW11bGF0b3I6IGluZGV4 PSVsdVxuIiwgaW5kZXgpOwogCS8vIHBhbCBjb2RlIG11c3QgYmUgbWFwcGVkIGJ5IGEgVFIg d2hlbiBwYWwgaXMgY2FsbGVkLCBob3dldmVyCiAJLy8gY2FsbHMgYXJlIHJhcmUgZW5vdWdo IHRoYXQgd2Ugd2lsbCBtYXAgaXQgbGF6aWx5IHJhdGhlciB0aGFuCiAJLy8gYXQgZXZlcnkg Y29udGV4dCBzd2l0Y2gKQEAgLTMxMiwxMCArMzEwLDE2IEBACiAJCXN0YXR1cyA9IGlhNjRf cGFsX3Byb2NfZ2V0X2ZlYXR1cmVzKCZyOSwmcjEwLCZyMTEpOwogCQlicmVhazsKIAkgICAg Y2FzZSBQQUxfQlVTX0dFVF9GRUFUVVJFUzoKLQkJc3RhdHVzID0gaWE2NF9wYWxfYnVzX2dl dF9mZWF0dXJlcygmcjksJnIxMCwmcjExKTsKKwkJc3RhdHVzID0gaWE2NF9wYWxfYnVzX2dl dF9mZWF0dXJlcygKKwkJCQkocGFsX2J1c19mZWF0dXJlc191X3QgKikgJnI5LAorCQkJCShw YWxfYnVzX2ZlYXR1cmVzX3VfdCAqKSAmcjEwLAorCQkJCShwYWxfYnVzX2ZlYXR1cmVzX3Vf dCAqKSAmcjExKTsKIAkJYnJlYWs7CiAJICAgIGNhc2UgUEFMX0ZSRVFfUkFUSU9TOgotCQlz dGF0dXMgPSBpYTY0X3BhbF9mcmVxX3JhdGlvcygmcjksJnIxMCwmcjExKTsKKwkJc3RhdHVz ID0gaWE2NF9wYWxfZnJlcV9yYXRpb3MoCisJCQkJKHN0cnVjdCBwYWxfZnJlcV9yYXRpbyAq KSAmcjksCisJCQkJKHN0cnVjdCBwYWxfZnJlcV9yYXRpbyAqKSAmcjEwLAorCQkJCShzdHJ1 Y3QgcGFsX2ZyZXFfcmF0aW8gKikgJnIxMSk7CiAJCWJyZWFrOwogCSAgICBjYXNlIFBBTF9Q VENFX0lORk86CiAJCXsKQEAgLTMyNiw3ICszMzAsOSBAQAogCQl9CiAJCWJyZWFrOwogCSAg ICBjYXNlIFBBTF9WRVJTSU9OOgotCQlzdGF0dXMgPSBpYTY0X3BhbF92ZXJzaW9uKCZyOSwm cjEwKTsKKwkJc3RhdHVzID0gaWE2NF9wYWxfdmVyc2lvbigKKwkJCQkocGFsX3ZlcnNpb25f dV90ICopICZyOSwKKwkJCQkocGFsX3ZlcnNpb25fdV90ICopICZyMTApOwogCQlicmVhazsK IAkgICAgY2FzZSBQQUxfVk1fUEFHRV9TSVpFOgogCQlzdGF0dXMgPSBpYTY0X3BhbF92bV9w YWdlX3NpemUoJnI5LCZyMTApOwpAQCAtMzQxLDEzICszNDcsMjEgQEAKIAkJLy8gRklYTUU6 IHdoYXQgc2hvdWxkIHhlbiByZXR1cm4gZm9yIHRoZXNlLCBmaWd1cmUgb3V0IGxhdGVyCiAJ CS8vIEZvciBub3csIGxpbnV4IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGlmIHBhbCBjYWxsIGZh aWxzCiAJCS8vIEluIHBhcnRpY3VsYXIsIHJpZF9zaXplIG11c3QgYmUgc2V0IHByb3Blcmx5 IQotCQkvL3N0YXR1cyA9IGlhNjRfcGFsX3ZtX3N1bW1hcnkoJnI5LCZyMTApOworCQkvL3N0 YXR1cyA9IGlhNjRfcGFsX3ZtX3N1bW1hcnkoCisJCS8vCQkocGFsX3ZtX2luZm9fMV91X3Qg KikgJnI5LAorCQkvLwkJKHBhbF92bV9pbmZvXzJfdV90ICopICZyMTApOwogCQlicmVhazsK IAkgICAgY2FzZSBQQUxfUlNFX0lORk86Ci0JCXN0YXR1cyA9IGlhNjRfcGFsX3JzZV9pbmZv KCZyOSwmcjEwKTsKKwkJc3RhdHVzID0gaWE2NF9wYWxfcnNlX2luZm8oCisJCQkJJnI5LAor CQkJCShwYWxfaGludHNfdV90ICopICZyMTApOwogCQlicmVhazsKIAkgICAgY2FzZSBQQUxf Vk1fSU5GTzoKLQkJc3RhdHVzID0gaWE2NF9wYWxfdm1faW5mbyhpbjEsaW4yLCZyOSwmcjEw KTsKKwkJc3RhdHVzID0gaWE2NF9wYWxfdm1faW5mbygKKwkJCQlpbjEsCisJCQkJaW4yLAor CQkJCShwYWxfdGNfaW5mb191X3QgKikgJnI5LAorCQkJCSZyMTApOwogCQlicmVhazsKIAkg ICAgY2FzZSBQQUxfUkVHSVNURVJfSU5GTzoKIAkJc3RhdHVzID0gaWE2NF9wYWxfcmVnaXN0 ZXJfaW5mbyhpbjEsJnI5LCZyMTApOwpAQCAtMzYwLDExICszNzQsMTIgQEAKIAkgICAgY2Fz ZSBQQUxfUEVSRl9NT05fSU5GTzoKIAkJewogCQkJdW5zaWduZWQgbG9uZyBwbV9idWZmZXJb MTZdOwotCQkJaW50IGk7Ci0JCQlzdGF0dXMgPSBpYTY0X3BhbF9wZXJmX21vbl9pbmZvKHBt X2J1ZmZlciwmcjkpOworCQkJc3RhdHVzID0gaWE2NF9wYWxfcGVyZl9tb25faW5mbygKKwkJ CQkJcG1fYnVmZmVyLAorCQkJCQkocGFsX3BlcmZfbW9uX2luZm9fdV90ICopICZyOSk7CiAJ CQlpZiAoc3RhdHVzICE9IDApIHsKIAkJCQl3aGlsZSgxKQotCQkJCXByaW50aygiUEFMX1BF UkZfTU9OX0lORk8gZmFpbHMgcmV0PSVkXG4iLHN0YXR1cyk7CisJCQkJcHJpbnRrKCJQQUxf UEVSRl9NT05fSU5GTyBmYWlscyByZXQ9JWxkXG4iLCBzdGF0dXMpOwogCQkJCWJyZWFrOwog CQkJfQogCQkJaWYgKGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIgKilpbjEscG1fYnVmZmVy LDEyOCkpIHsKQEAgLTQwOSw3ICs0MjQsNyBAQAogCQkJICAgIGRvbWFpbl9zaHV0ZG93biAo Y3VycmVudC0+ZG9tYWluLCAwKTsKIAkJICAgIGJyZWFrOwogCSAgICBkZWZhdWx0OgotCQlw cmludGsoInhlbl9wYWxfZW11bGF0b3I6IFVOSU1QTEVNRU5URUQgUEFMIENBTEwgJWQhISEh XG4iLAorCQlwcmludGsoInhlbl9wYWxfZW11bGF0b3I6IFVOSU1QTEVNRU5URUQgUEFMIENB TEwgJWx1ISEhIVxuIiwKIAkJCQlpbmRleCk7CiAJCWJyZWFrOwogCX0KQEAgLTQzNCw3ICs0 NDksNyBAQAogCiAvKiBQcm92aWRlIG9ubHkgb25lIExQIHRvIGd1ZXN0ICovCiBzdGF0aWMg aW50IAotYWNwaV91cGRhdGVfbHNhcGljIChhY3BpX3RhYmxlX2VudHJ5X2hlYWRlciAqaGVh ZGVyKQorYWNwaV91cGRhdGVfbHNhcGljIChhY3BpX3RhYmxlX2VudHJ5X2hlYWRlciAqaGVh ZGVyLCBjb25zdCB1bnNpZ25lZCBsb25nIGVuZCkKIHsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9s c2FwaWMgKmxzYXBpYzsKIApAQCAtNTI5LDggKzU0NCw4IEBACiAJc3RyY3B5KHhzZHQtPmFz bF9jb21waWxlcl9pZCwgIlhFTiIpOwogCXhzZHQtPmFzbF9jb21waWxlcl9yZXZpc2lvbiA9 IChYRU5fVkVSU0lPTjw8MTYpfChYRU5fU1VCVkVSU0lPTik7CiAKLQl4c2R0LT50YWJsZV9v ZmZzZXRfZW50cnlbMF0gPSBkb21fcGEoZmFkdCk7Ci0JdGFibGVzLT5tYWR0X3B0ciA9IGRv bV9wYShtYWR0KTsKKwl4c2R0LT50YWJsZV9vZmZzZXRfZW50cnlbMF0gPSBkb21fcGEoKHVu c2lnbmVkIGxvbmcpIGZhZHQpOworCXRhYmxlcy0+bWFkdF9wdHIgPSBkb21fcGEoKHVuc2ln bmVkIGxvbmcpIG1hZHQpOwogCiAJeHNkdC0+Y2hlY2tzdW0gPSBnZW5lcmF0ZV9hY3BpX2No ZWNrc3VtKHhzZHQsIHhzZHQtPmxlbmd0aCk7CiAKQEAgLTU0Nyw4ICs1NjIsOCBAQAogCWZh Y3MtPnZlcnNpb24gPSAxOwogCWZhY3MtPmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgZmFjc19k ZXNjcmlwdG9yX3JldjIpOwogCi0JZmFkdC0+eGZpcm13YXJlX2N0cmwgPSBkb21fcGEoZmFj cyk7Ci0JZmFkdC0+WGRzZHQgPSBkb21fcGEoZHNkdCk7CisJZmFkdC0+eGZpcm13YXJlX2N0 cmwgPSBkb21fcGEoKHVuc2lnbmVkIGxvbmcpIGZhY3MpOworCWZhZHQtPlhkc2R0ID0gZG9t X3BhKCh1bnNpZ25lZCBsb25nKSBkc2R0KTsKIAogCS8qCiAJICogQWxsIG9mIHRoZSBiZWxv dyBGQURUIGVudHJpZXMgYXJlIGZpbGxlZCBpdCB0byBwcmV2ZW50IHdhcm5pbmdzCkBAIC01 NTgsMTUgKzU3MywxNSBAQAogCWZhZHQtPnBtMV9ldnRfbGVuID0gNDsKIAlmYWR0LT54cG0x YV9ldnRfYmxrLmFkZHJlc3Nfc3BhY2VfaWQgPSBBQ1BJX0FEUl9TUEFDRV9TWVNURU1fTUVN T1JZOwogCWZhZHQtPnhwbTFhX2V2dF9ibGsucmVnaXN0ZXJfYml0X3dpZHRoID0gODsKLQlm YWR0LT54cG0xYV9ldnRfYmxrLmFkZHJlc3MgPSBkb21fcGEoJnRhYmxlcy0+cG0xYV9ldnRf YmxrKTsKKwlmYWR0LT54cG0xYV9ldnRfYmxrLmFkZHJlc3MgPSBkb21fcGEoKHVuc2lnbmVk IGxvbmcpICZ0YWJsZXMtPnBtMWFfZXZ0X2Jsayk7CiAJZmFkdC0+cG0xX2NudF9sZW4gPSAx OwogCWZhZHQtPnhwbTFhX2NudF9ibGsuYWRkcmVzc19zcGFjZV9pZCA9IEFDUElfQURSX1NQ QUNFX1NZU1RFTV9NRU1PUlk7CiAJZmFkdC0+eHBtMWFfY250X2Jsay5yZWdpc3Rlcl9iaXRf d2lkdGggPSA4OwotCWZhZHQtPnhwbTFhX2NudF9ibGsuYWRkcmVzcyA9IGRvbV9wYSgmdGFi bGVzLT5wbTFhX2NudF9ibGspOworCWZhZHQtPnhwbTFhX2NudF9ibGsuYWRkcmVzcyA9IGRv bV9wYSgodW5zaWduZWQgbG9uZykgJnRhYmxlcy0+cG0xYV9jbnRfYmxrKTsKIAlmYWR0LT5w bV90bV9sZW4gPSA0OwogCWZhZHQtPnhwbV90bXJfYmxrLmFkZHJlc3Nfc3BhY2VfaWQgPSBB Q1BJX0FEUl9TUEFDRV9TWVNURU1fTUVNT1JZOwogCWZhZHQtPnhwbV90bXJfYmxrLnJlZ2lz dGVyX2JpdF93aWR0aCA9IDg7Ci0JZmFkdC0+eHBtX3Rtcl9ibGsuYWRkcmVzcyA9IGRvbV9w YSgmdGFibGVzLT5wbV90bXJfYmxrKTsKKwlmYWR0LT54cG1fdG1yX2Jsay5hZGRyZXNzID0g ZG9tX3BhKCh1bnNpZ25lZCBsb25nKSAmdGFibGVzLT5wbV90bXJfYmxrKTsKIAogCWZhZHQt PmNoZWNrc3VtID0gZ2VuZXJhdGVfYWNwaV9jaGVja3N1bShmYWR0LCBmYWR0LT5sZW5ndGgp OwogCkBAIC01NzUsNyArNTkwLDcgQEAKIAlzdHJjcHkocnNkcC0+b2VtX2lkLCAiWEVOIik7 CiAJcnNkcC0+cmV2aXNpb24gPSAyOyAvKiBBQ1BJIDIuMCBpbmNsdWRlcyBYU0RUICovCiAJ cnNkcC0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpMjBfdGFibGVfcnNkcCk7Ci0JcnNk cC0+eHNkdF9hZGRyZXNzID0gZG9tX3BhKHhzZHQpOworCXJzZHAtPnhzZHRfYWRkcmVzcyA9 IGRvbV9wYSgodW5zaWduZWQgbG9uZykgeHNkdCk7CiAKIAlyc2RwLT5jaGVja3N1bSA9IGdl bmVyYXRlX2FjcGlfY2hlY2tzdW0ocnNkcCwKIAkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQUNQSV9SU0RQX0NIRUNLU1VNX0xFTkdUSCk7CkBAIC02NDAsNyAr NjU1LDcgQEAKIAl1bnNpZ25lZCBsb25nIG1heG1lbSA9IChkLT5tYXhfcGFnZXMgLSBkLT5h cmNoLnN5c19wZ25yKSAqIFBBR0VfU0laRTsKIAljb25zdCB1bnNpZ25lZCBsb25nIHN0YXJ0 X21wYWRkciA9ICgoZD09ZG9tMCk/ZG9tMF9zdGFydDowKTsKIAotIwlkZWZpbmUgTUFLRV9N RCh0eXAsIGF0dHIsIHN0YXJ0LCBlbmQsIGFicykgCVwJCisjCWRlZmluZSBNQUtFX01EKHR5 cCwgYXR0ciwgc3RhcnQsIGVuZCwgYWJzKSAJXAogCWRvIHsJCQkJCQlcCiAJCW1kID0gZWZp X21lbW1hcCArIGkrKzsJCQlcCiAJCW1kLT50eXBlID0gdHlwOwkJCQlcCkBAIC02NjksNyAr Njg0LDcgQEAKIAlzYWxfZWQgICAgICA9ICh2b2lkICopIGNwOyBjcCArPSBzaXplb2YoKnNh bF9lZCk7CiAJZWZpX21lbW1hcCAgPSAodm9pZCAqKSBjcDsgY3AgKz0gTlVNX01FTV9ERVND UypzaXplb2YoKmVmaV9tZW1tYXApOwogCWJwCSAgICA9ICh2b2lkICopIGNwOyBjcCArPSBz aXplb2YoKmJwKTsKLQlwZm4gICAgICAgID0gKHZvaWQgKikgY3A7IGNwICs9IE5GVU5DUFRS UyAqIDIgKiBzaXplb2YocGZuKTsKKwlwZm4gICAgICAgICA9ICh2b2lkICopIGNwOyBjcCAr PSBORlVOQ1BUUlMgKiAyICogc2l6ZW9mKHBmbik7CiAJY21kX2xpbmUgICAgPSAodm9pZCAq KSBjcDsKIAogCWlmIChhcmdzKSB7CkBAIC02OTAsMTkgKzcwNSwxOSBAQAogCWNwICs9IHNp emVvZihGV19WRU5ET1IpICsgKDgtKCh1bnNpZ25lZCBsb25nKWNwICYgNykpOyAvLyByb3Vu ZCB0byA2NC1iaXQgYm91bmRhcnkKIAogCW1lbWNweShmd192ZW5kb3IsRldfVkVORE9SLHNp emVvZihGV19WRU5ET1IpKTsKLQllZmlfc3lzdGFiLT5md192ZW5kb3IgPSBkb21fcGEoZndf dmVuZG9yKTsKKwllZmlfc3lzdGFiLT5md192ZW5kb3IgPSBkb21fcGEoKHVuc2lnbmVkIGxv bmcpIGZ3X3ZlbmRvcik7CiAJCiAJZWZpX3N5c3RhYi0+ZndfcmV2aXNpb24gPSAxOwotCWVm aV9zeXN0YWItPnJ1bnRpbWUgPSAodm9pZCAqKSBkb21fcGEoZWZpX3J1bnRpbWUpOworCWVm aV9zeXN0YWItPnJ1bnRpbWUgPSAodm9pZCAqKSBkb21fcGEoKHVuc2lnbmVkIGxvbmcpIGVm aV9ydW50aW1lKTsKIAllZmlfc3lzdGFiLT5ucl90YWJsZXMgPSBOVU1fRUZJX1NZU19UQUJM RVM7Ci0JZWZpX3N5c3RhYi0+dGFibGVzID0gZG9tX3BhKGVmaV90YWJsZXMpOworCWVmaV9z eXN0YWItPnRhYmxlcyA9IGRvbV9wYSgodW5zaWduZWQgbG9uZykgZWZpX3RhYmxlcyk7CiAK IAllZmlfcnVudGltZS0+aGRyLnNpZ25hdHVyZSA9IEVGSV9SVU5USU1FX1NFUlZJQ0VTX1NJ R05BVFVSRTsKIAllZmlfcnVudGltZS0+aGRyLnJldmlzaW9uID0gRUZJX1JVTlRJTUVfU0VS VklDRVNfUkVWSVNJT047CiAJZWZpX3J1bnRpbWUtPmhkci5oZWFkZXJzaXplID0gc2l6ZW9m KGVmaV9ydW50aW1lLT5oZHIpOwogI2RlZmluZSBFRklfSFlQRVJDQUxMX1BBVENIKHRndCxj YWxsKSBkbyB7IFwKICAgICBkb21fZWZpX2h5cGVyY2FsbF9wYXRjaChkLEZXX0hZUEVSQ0FM TF8jI2NhbGwjI19QQUREUixGV19IWVBFUkNBTExfIyNjYWxsKTsgXAotICAgIHRndCA9IGRv bV9wYShwZm4pOyBcCisgICAgdGd0ID0gZG9tX3BhKCh1bnNpZ25lZCBsb25nKSBwZm4pOyBc CiAgICAgKnBmbisrID0gRldfSFlQRVJDQUxMXyMjY2FsbCMjX1BBRERSICsgc3RhcnRfbXBh ZGRyOyBcCiAgICAgKnBmbisrID0gMDsgXAogICAgIH0gd2hpbGUgKDApCkBAIC03MTksNyAr NzM0LDcgQEAKIAlFRklfSFlQRVJDQUxMX1BBVENIKGVmaV9ydW50aW1lLT5yZXNldF9zeXN0 ZW0sRUZJX1JFU0VUX1NZU1RFTSk7CiAKIAllZmlfdGFibGVzWzBdLmd1aWQgPSBTQUxfU1lT VEVNX1RBQkxFX0dVSUQ7Ci0JZWZpX3RhYmxlc1swXS50YWJsZSA9IGRvbV9wYShzYWxfc3lz dGFiKTsKKwllZmlfdGFibGVzWzBdLnRhYmxlID0gZG9tX3BhKCh1bnNpZ25lZCBsb25nKSBz YWxfc3lzdGFiKTsKIAlmb3IgKGkgPSAxOyBpIDwgTlVNX0VGSV9TWVNfVEFCTEVTOyBpKysp IHsKIAkJZWZpX3RhYmxlc1tpXS5ndWlkID0gTlVMTF9HVUlEOwogCQllZmlfdGFibGVzW2ld LnRhYmxlID0gMDsKQEAgLTc3Myw3ICs3ODgsNyBAQAogCQkJZG9tX2Z3X2Zha2VfYWNwaShh Y3BpX3RhYmxlcyk7CiAKIAkJCWVmaV90YWJsZXNbaV0uZ3VpZCA9IEFDUElfMjBfVEFCTEVf R1VJRDsKLQkJCWVmaV90YWJsZXNbaV0udGFibGUgPSBkb21fcGEoYWNwaV90YWJsZXMpOwor CQkJZWZpX3RhYmxlc1tpXS50YWJsZSA9IGRvbV9wYSgodW5zaWduZWQgbG9uZykgYWNwaV90 YWJsZXMpOwogCQkJcHJpbnRmKCIgQUNQSSAyLjA9MHglbHgiLGVmaV90YWJsZXNbaV0udGFi bGUpOwogCQkJaSsrOwogCQl9CkBAIC04NTAsMTIgKzg2NSwxMiBAQAogCQlNQUtFX01EKEVG SV9SRVNFUlZFRF9UWVBFLDAsMCwwLDApOwogCX0KIAotCWJwLT5lZmlfc3lzdGFiID0gZG9t X3BhKGZ3X21lbSk7Ci0JYnAtPmVmaV9tZW1tYXAgPSBkb21fcGEoZWZpX21lbW1hcCk7CisJ YnAtPmVmaV9zeXN0YWIgPSBkb21fcGEoKHVuc2lnbmVkIGxvbmcpIGZ3X21lbSk7CisJYnAt PmVmaV9tZW1tYXAgPSBkb21fcGEoKHVuc2lnbmVkIGxvbmcpIGVmaV9tZW1tYXApOwogCWJw LT5lZmlfbWVtbWFwX3NpemUgPSBOVU1fTUVNX0RFU0NTKnNpemVvZihlZmlfbWVtb3J5X2Rl c2NfdCk7CiAJYnAtPmVmaV9tZW1kZXNjX3NpemUgPSBzaXplb2YoZWZpX21lbW9yeV9kZXNj X3QpOwogCWJwLT5lZmlfbWVtZGVzY192ZXJzaW9uID0gMTsKLQlicC0+Y29tbWFuZF9saW5l ID0gZG9tX3BhKGNtZF9saW5lKTsKKwlicC0+Y29tbWFuZF9saW5lID0gZG9tX3BhKCh1bnNp Z25lZCBsb25nKSBjbWRfbGluZSk7CiAJYnAtPmNvbnNvbGVfaW5mby5udW1fY29scyA9IDgw OwogCWJwLT5jb25zb2xlX2luZm8ubnVtX3Jvd3MgPSAyNTsKIAlicC0+Y29uc29sZV9pbmZv Lm9yaWdfeCA9IDA7CmRpZmYgLXIgNmM0MzExOGJkYmE4IHhlbi9hcmNoL2lhNjQveGVuL2Rv bWFpbi5jCi0tLSBhL3hlbi9hcmNoL2lhNjQveGVuL2RvbWFpbi5jCUZyaSBGZWIgMjQgMjI6 NDE6MDggMjAwNgorKysgYi94ZW4vYXJjaC9pYTY0L3hlbi9kb21haW4uYwlTdW4gRmViIDI2 IDE2OjUzOjAyIDIwMDYKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDxhc20vdm14Lmg+ CiAjaW5jbHVkZSA8YXNtL3ZteF92Y3B1Lmg+CiAjaW5jbHVkZSA8YXNtL3ZteF92cGQuaD4K KyNpbmNsdWRlIDxhc20vdm14X3BoeV9tb2RlLmg+CiAjaW5jbHVkZSA8YXNtL3BhbC5oPgog I2luY2x1ZGUgPHB1YmxpYy9odm0vaW9yZXEuaD4KIApAQCAtNjQsNiArNjUsMTUgQEAKIAkg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25l ZCBsb25nICopOwogCiBleHRlcm4gdW5zaWduZWQgbG9uZyBkb21fZndfc2V0dXAoc3RydWN0 IGRvbWFpbiAqLCBjaGFyICosIGludCk7CisvKiBGSVhNRTogd2hlcmUgdGhlc2UgZGVjbGFy YXRpb25zIHNob3VsZCBiZSB0aGVyZSA/ICovCitleHRlcm4gdm9pZCBkb21haW5fcGVuZF9r ZXlib2FyZF9pbnRlcnJ1cHQoaW50KTsKK2V4dGVybiBsb25nIHBsYXRmb3JtX2lzX2hwX3Nr aSh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGFsbG9jYXRlX21ldGFwaHlzaWNhbF9y cih2b2lkKTsKK2V4dGVybiBpbnQgYWxsb2NhdGVfcmlkX3JhbmdlKHN0cnVjdCBkb21haW4g KiwgdW5zaWduZWQgbG9uZyk7CitleHRlcm4gdm9pZCBzeW5jX3NwbGl0X2NhY2hlcyh2b2lk KTsKK2V4dGVybiB2b2lkIGluaXRfYWxsX3JyKHN0cnVjdCB2Y3B1ICopOworZXh0ZXJuIHZv aWQgc2VyaWFsX2lucHV0X2luaXQodm9pZCk7CisKIHN0YXRpYyB2b2lkIGluaXRfc3dpdGNo X3N0YWNrKHN0cnVjdCB2Y3B1ICp2KTsKIAogLyogdGhpcyBiZWxvbmdzIGluIGluY2x1ZGUv YXNtLCBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3VpdGFibGUgcGxhY2UgKi8K QEAgLTI3NCw4ICsyODQsNiBAQAogewogCXN0cnVjdCBwdF9yZWdzICpyZWdzID0gdmNwdV9y ZWdzICh2KTsKIAlzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwotCWludCBpLCByYywg cmV0OwotCXVuc2lnbmVkIGxvbmcgcHJvZ3Jlc3MgPSAwOwogCiAJcHJpbnRmKCJhcmNoX3Nl dF9pbmZvX2d1ZXN0XG4iKTsKIAlpZiAoIHRlc3RfYml0KF9WQ1BVRl9pbml0aWFsaXNlZCwg JnYtPnZjcHVfZmxhZ3MpICkKQEAgLTMwMyw3ICszMTEsNyBAQAogIAl2LT52Y3B1X2luZm8t PmFyY2guZXZ0Y2huX3ZlY3RvciA9IGMtPnZjcHUuZXZ0Y2huX3ZlY3RvcjsKIAlpZiAoIGMt PnZjcHUucHJpdnJlZ3MgJiYgY29weV9mcm9tX3VzZXIodi0+YXJjaC5wcml2cmVncywKIAkJ CSAgIGMtPnZjcHUucHJpdnJlZ3MsIHNpemVvZihtYXBwZWRfcmVnc190KSkpIHsKLQkgICAg cHJpbnRrKCJCYWQgY3R4dCBhZGRyZXNzIGluIGFyY2hfc2V0X2luZm9fZ3Vlc3Q6IDB4JWx4 XG4iLCBjLT52Y3B1LnByaXZyZWdzKTsKKwkgICAgcHJpbnRrKCJCYWQgY3R4dCBhZGRyZXNz IGluIGFyY2hfc2V0X2luZm9fZ3Vlc3Q6ICVwXG4iLCBjLT52Y3B1LnByaXZyZWdzKTsKIAkg ICAgcmV0dXJuIC1FRkFVTFQ7CiAJfQogCkBAIC0zMzAsOSArMzM4LDcgQEAKIHsKIAlzdHJ1 Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogCXN0cnVjdCBwdF9yZWdzICpyZWdzOwotCXN0 cnVjdCBpYTY0X2Jvb3RfcGFyYW0gKmJwOwogCWV4dGVybiBjaGFyIHNhdmVkX2NvbW1hbmRf bGluZVtdOwotCiAKICNpZmRlZiBDT05GSUdfRE9NQUlOMF9DT05USUdVT1VTCiAJaWYgKGQg PT0gZG9tMCkgc3RhcnRfcGMgKz0gZG9tMF9zdGFydDsKQEAgLTM4Myw4ICszODksOSBAQAog c3RhdGljIHN0cnVjdCBwYWdlICogYXNzaWduX25ld19kb21haW4wX3BhZ2UodW5zaWduZWQg bG9uZyBtcGFkZHIpCiB7CiAJaWYgKG1wYWRkciA8IGRvbTBfc3RhcnQgfHwgbXBhZGRyID49 IGRvbTBfc3RhcnQgKyBkb20wX3NpemUpIHsKLQkJcHJpbnRrKCJhc3NpZ25fbmV3X2RvbWFp bjBfcGFnZTogYmFkIGRvbWFpbjAgbXBhZGRyICVwIVxuIixtcGFkZHIpOwotcHJpbnRrKCJh c3NpZ25fbmV3X2RvbWFpbjBfcGFnZTogc3RhcnQ9JXAsZW5kPSVwIVxuIixkb20wX3N0YXJ0 LGRvbTBfc3RhcnQrZG9tMF9zaXplKTsKKwkJcHJpbnRrKCJhc3NpZ25fbmV3X2RvbWFpbjBf cGFnZTogYmFkIGRvbWFpbjAgbXBhZGRyIDB4JWx4IVxuIixtcGFkZHIpOworCQlwcmludGso ImFzc2lnbl9uZXdfZG9tYWluMF9wYWdlOiBzdGFydD0weCVseCxlbmQ9MHglbHghXG4iLAor CQkJZG9tMF9zdGFydCwgZG9tMF9zdGFydCtkb20wX3NpemUpOwogCQl3aGlsZSgxKTsKIAl9 CiAJcmV0dXJuIG1mbl90b19wYWdlKChtcGFkZHIgPj4gUEFHRV9TSElGVCkpOwpAQCAtNDMw LDEyICs0MzcsMTMgQEAKIAkJCWlmIChwKSBtZW1zZXQoX192YShwYWdlX3RvX21hZGRyKHAp KSwwLFBBR0VfU0laRSk7CiAJCX0KIAkJaWYgKHVubGlrZWx5KCFwKSkgewotcHJpbnRmKCJh c3NpZ25fbmV3X2RvbWFpbl9wYWdlOiBDYW4ndCBhbGxvYyEhISEgQWFhYXJnaCFcbiIpOwor CQkJcHJpbnRmKCJhc3NpZ25fbmV3X2RvbWFpbl9wYWdlOiBDYW4ndCBhbGxvYyEhISEgQWFh YXJnaCFcbiIpOwogCQkJcmV0dXJuKHApOwogCQl9Ci1pZiAodW5saWtlbHkocGFnZV90b19t YWRkcihwKSA+IHZocHRfcGFkZHIgJiYgcGFnZV90b19tYWRkcihwKSA8IHZocHRfcGVuZCkp IHsKLSAgcHJpbnRmKCJhc3NpZ25fbmV3X2RvbWFpbl9wYWdlOiByZWFzc2lnbmVkIHZocHQg cGFnZSAlcCEhXG4iLHBhZ2VfdG9fbWFkZHIocCkpOwotfQorCQlpZiAodW5saWtlbHkocGFn ZV90b19tYWRkcihwKSA+IHZocHRfcGFkZHIgJiYgcGFnZV90b19tYWRkcihwKSA8IHZocHRf cGVuZCkpIHsKKwkJCXByaW50ZigiYXNzaWduX25ld19kb21haW5fcGFnZTogcmVhc3NpZ25l ZCB2aHB0IHBhZ2UgMHglbHghIVxuIiwKKwkJCQlwYWdlX3RvX21hZGRyKHApKTsKKwkJfQog CQlzZXRfcHRlKHB0ZSwgcGZuX3B0ZShwYWdlX3RvX21hZGRyKHApID4+IFBBR0VfU0hJRlQs CiAJCQlfX3BncHJvdChfX0RJUlRZX0JJVFMgfCBfUEFHRV9QTF8yIHwgX1BBR0VfQVJfUldY KSkpOwogCX0KQEAgLTUzMiw4ICs1NDAsOCBAQAogI2lmZGVmIENPTkZJR19ET01BSU4wX0NP TlRJR1VPVVMKIAlpZiAoZCA9PSBkb20wKSB7CiAJCWlmIChtcGFkZHIgPCBkb20wX3N0YXJ0 IHx8IG1wYWRkciA+PSBkb20wX3N0YXJ0ICsgZG9tMF9zaXplKSB7Ci0JCQkvL3ByaW50aygi bG9va3VwX2RvbWFpbl9tcGE6IGJhZCBkb20wIG1wYWRkciAlcCFcbiIsbXBhZGRyKTsKLS8v cHJpbnRrKCJsb29rdXBfZG9tYWluX21wYTogc3RhcnQ9JXAsZW5kPSVwIVxuIixkb20wX3N0 YXJ0LGRvbTBfc3RhcnQrZG9tMF9zaXplKTsKKwkJCS8vcHJpbnRrKCJsb29rdXBfZG9tYWlu X21wYTogYmFkIGRvbTAgbXBhZGRyIDB4JWx4IVxuIixtcGFkZHIpOworCQkJLy9wcmludGso Imxvb2t1cF9kb21haW5fbXBhOiBzdGFydD0weCVseCxlbmQ9MHglbHghXG4iLGRvbTBfc3Rh cnQsZG9tMF9zdGFydCtkb20wX3NpemUpOwogCQkJbXBhZm9vKG1wYWRkcik7CiAJCX0KIAkJ cHRlX3QgcHRldmFsID0gcGZuX3B0ZShtcGFkZHIgPj4gUEFHRV9TSElGVCwKQEAgLTU2MSw4 ICs1NjksOCBAQAogCWlmICgobXBhZGRyID4+IFBBR0VfU0hJRlQpIDwgZC0+bWF4X3BhZ2Vz KSB7CiAJCWlmIChhc3NpZ25fbmV3X2RvbWFpbl9wYWdlKGQsbXBhZGRyKSkgZ290byB0cnlh Z2FpbjsKIAl9Ci0JcHJpbnRrKCJsb29rdXBfZG9tYWluX21wYTogYmFkIG1wYSAlcCAoPiAl cFxuIiwKLQkJbXBhZGRyLGQtPm1heF9wYWdlczw8UEFHRV9TSElGVCk7CisJcHJpbnRrKCJs b29rdXBfZG9tYWluX21wYTogYmFkIG1wYSAweCVseCAoPiAweCVseClcbiIsCisJCW1wYWRk ciwgKHVuc2lnbmVkIGxvbmcpIGQtPm1heF9wYWdlczw8UEFHRV9TSElGVCk7CiAJbXBhZm9v KG1wYWRkcik7CiAJcmV0dXJuIDA7CiB9CkBAIC01NzUsNyArNTgzLDcgQEAKIAl1bnNpZ25l ZCBsb25nIGltdmE7CiAKIAlwdGUgJj0gX1BBR0VfUFBOX01BU0s7Ci0JaW12YSA9IF9fdmEo cHRlKTsKKwlpbXZhID0gKHVuc2lnbmVkIGxvbmcpIF9fdmEocHRlKTsKIAlpbXZhIHw9IG1w YWRkciAmIH5QQUdFX01BU0s7CiAJcmV0dXJuKGltdmEpOwogfQpAQCAtNjA0LDEzICs2MTIs MTMgQEAKIHsKIAlpbnQgcmVtYWluOwogCi0JaWYgKElTX1hFTl9BRERSRVNTKGRvbTAsc3Jj KSkgeworCWlmIChJU19YRU5fQUREUkVTUyhkb20wLCh1bnNpZ25lZCBsb25nKSBzcmMpKSB7 CiAJCW1lbWNweShkc3Qsc3JjLHNpemUpOwogCX0KIAllbHNlIHsKIAkJcHJpbnRmKCJBYm91 dCB0byBjYWxsIF9fY29weV9mcm9tX3VzZXIoJXAsJXAsJWQpXG4iLAogCQkJZHN0LHNyYyxz aXplKTsKLQkJd2hpbGUgKHJlbWFpbiA9IF9fY29weV9mcm9tX3VzZXIoZHN0LHNyYyxzaXpl KSkgeworCQl3aGlsZSAoKHJlbWFpbiA9IF9fY29weV9mcm9tX3VzZXIoZHN0LHNyYyxzaXpl KSkgIT0gMCkgewogCQkJcHJpbnRmKCJpbmNvbXBsZXRlIHVzZXIgY29weSwgJWQgcmVtYWlu IG9mICVkXG4iLAogCQkJCXJlbWFpbixzaXplKTsKIAkJCWRzdCArPSBzaXplIC0gcmVtYWlu OyBzcmMgKz0gc2l6ZSAtIHJlbWFpbjsKQEAgLTYyMSwxNiArNjI5LDE1IEBACiAKIHZvaWQg bG9hZGRvbWFpbmVsZmltYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaW1h Z2Vfc3RhcnQpCiB7Ci0JY2hhciAqZWxmYmFzZSA9IGltYWdlX3N0YXJ0OworCWNoYXIgKmVs ZmJhc2UgPSAoY2hhciAqKSBpbWFnZV9zdGFydDsKIAkvL0VsZl9FaGRyICplaGRyID0gKEVs Zl9FaGRyICopaW1hZ2Vfc3RhcnQ7CiAJRWxmX0VoZHIgZWhkcjsKIAlFbGZfUGhkciBwaGRy OwotCWludCBoLCBmaWxlc3osIG1lbXN6LCBwYWRkcjsKKwlpbnQgaCwgZmlsZXN6LCBtZW1z ejsKIAl1bnNpZ25lZCBsb25nIGVsZmFkZHIsIGRvbV9tcGFkZHIsIGRvbV9pbXZhOwogCXN0 cnVjdCBwYWdlICpwOwotCXVuc2lnbmVkIGxvbmcgcHRldmFsOwogICAKLQljb3B5X21lbW9y eSgmZWhkcixpbWFnZV9zdGFydCxzaXplb2YoRWxmX0VoZHIpKTsKKwljb3B5X21lbW9yeSgm ZWhkciwgKHZvaWQgKikgaW1hZ2Vfc3RhcnQsIHNpemVvZihFbGZfRWhkcikpOwogCWZvciAo IGggPSAwOyBoIDwgZWhkci5lX3BobnVtOyBoKysgKSB7CiAJCWNvcHlfbWVtb3J5KCZwaGRy LGVsZmJhc2UgKyBlaGRyLmVfcGhvZmYgKyAoaCplaGRyLmVfcGhlbnRzaXplKSwKIAkJc2l6 ZW9mKEVsZl9QaGRyKSk7CkBAIC02MzksNyArNjQ2LDcgQEAKIAkgICAgICAgIGNvbnRpbnVl OwogCX0KIAlmaWxlc3ogPSBwaGRyLnBfZmlsZXN6OyBtZW1zeiA9IHBoZHIucF9tZW1zejsK LQllbGZhZGRyID0gZWxmYmFzZSArIHBoZHIucF9vZmZzZXQ7CisJZWxmYWRkciA9ICh1bnNp Z25lZCBsb25nKSBlbGZiYXNlICsgcGhkci5wX29mZnNldDsKIAlkb21fbXBhZGRyID0gcGhk ci5wX3BhZGRyOwogLy9wcmludGYoInBfb2Zmc2V0OiAleCwgc2l6ZT0leFxuIixlbGZhZGRy LGZpbGVzeik7CiAjaWZkZWYgQ09ORklHX0RPTUFJTjBfQ09OVElHVU9VUwpAQCAtNjQ4LDkg KzY1NSw5IEBACiAJCQlwcmludGYoIkRvbWFpbjAgZG9lc24ndCBmaXQgaW4gYWxsb2NhdGVk IHNwYWNlIVxuIik7CiAJCQl3aGlsZSgxKTsKIAkJfQotCQlkb21faW12YSA9IF9fdmEoZG9t X21wYWRkciArIGRvbTBfc3RhcnQpOwotCQljb3B5X21lbW9yeShkb21faW12YSxlbGZhZGRy LGZpbGVzeik7Ci0JCWlmIChtZW1zeiA+IGZpbGVzeikgbWVtc2V0KGRvbV9pbXZhK2ZpbGVz eiwwLG1lbXN6LWZpbGVzeik7CisJCWRvbV9pbXZhID0gKHVuc2lnbmVkIGxvbmcpIF9fdmEo ZG9tX21wYWRkciArIGRvbTBfc3RhcnQpOworCQljb3B5X21lbW9yeSgodm9pZCAqKSBkb21f aW12YSwgKHZvaWQgKikgZWxmYWRkciwgZmlsZXN6KTsKKwkJaWYgKG1lbXN6ID4gZmlsZXN6 KSBtZW1zZXQoKHZvaWQgKikgZG9tX2ltdmErZmlsZXN6LCAwLCBtZW1zei1maWxlc3opOwog Ly9GSVhNRTogVGhpcyB0ZXN0IGZvciBjb2RlIHNlZW1zIHRvIGZpbmQgYSBsb3QgbW9yZSB0 aGFuIG9iamR1bXAgLXggZG9lcwogCQlpZiAocGhkci5wX2ZsYWdzICYgUEZfWCkgcHJpdmlm eV9tZW1vcnkoZG9tX2ltdmEsZmlsZXN6KTsKIAl9CkBAIC02NTksMjAgKzY2NiwyMCBAQAog CXdoaWxlIChtZW1zeiA+IDApIHsKIAkJcCA9IGFzc2lnbl9uZXdfZG9tYWluX3BhZ2UoZCxk b21fbXBhZGRyKTsKIAkJaWYgKHVubGlrZWx5KCFwKSkgQlVHKCk7Ci0JCWRvbV9pbXZhID0g X192YShwYWdlX3RvX21hZGRyKHApKTsKKwkJZG9tX2ltdmEgPSAodW5zaWduZWQgbG9uZykg X192YShwYWdlX3RvX21hZGRyKHApKTsKIAkJaWYgKGZpbGVzeiA+IDApIHsKIAkJCWlmIChm aWxlc3ogPj0gUEFHRV9TSVpFKQotCQkJCWNvcHlfbWVtb3J5KGRvbV9pbXZhLGVsZmFkZHIs UEFHRV9TSVpFKTsKKwkJCQljb3B5X21lbW9yeSgodm9pZCAqKSBkb21faW12YSwgKHZvaWQg KikgZWxmYWRkciwgUEFHRV9TSVpFKTsKIAkJCWVsc2UgeyAvLyBjb3B5IHBhcnRpYWwgcGFn ZSwgemVybyB0aGUgcmVzdCBvZiBwYWdlCi0JCQkJY29weV9tZW1vcnkoZG9tX2ltdmEsZWxm YWRkcixmaWxlc3opOwotCQkJCW1lbXNldChkb21faW12YStmaWxlc3osMCxQQUdFX1NJWkUt ZmlsZXN6KTsKKwkJCQljb3B5X21lbW9yeSgodm9pZCAqKSBkb21faW12YSwgKHZvaWQgKikg ZWxmYWRkciwgZmlsZXN6KTsKKwkJCQltZW1zZXQoKHZvaWQgKikgZG9tX2ltdmErZmlsZXN6 LCAwLCBQQUdFX1NJWkUtZmlsZXN6KTsKIAkJCX0KIC8vRklYTUU6IFRoaXMgdGVzdCBmb3Ig Y29kZSBzZWVtcyB0byBmaW5kIGEgbG90IG1vcmUgdGhhbiBvYmpkdW1wIC14IGRvZXMKIAkJ CWlmIChwaGRyLnBfZmxhZ3MgJiBQRl9YKQogCQkJCXByaXZpZnlfbWVtb3J5KGRvbV9pbXZh LFBBR0VfU0laRSk7CiAJCX0KIAkJZWxzZSBpZiAobWVtc3ogPiAwKSAvLyBhbHdheXMgemVy byBvdXQgZW50aXJlIHBhZ2UKLQkJCW1lbXNldChkb21faW12YSwwLFBBR0VfU0laRSk7CisJ CQltZW1zZXQoKHZvaWQgKikgZG9tX2ltdmEsIDAsIFBBR0VfU0laRSk7CiAJCW1lbXN6IC09 IFBBR0VfU0laRTsgZmlsZXN6IC09IFBBR0VfU0laRTsKIAkJZWxmYWRkciArPSBQQUdFX1NJ WkU7IGRvbV9tcGFkZHIgKz0gUEFHRV9TSVpFOwogCX0KQEAgLTY4NywzMyArNjk0LDMzIEBA CiAJY29weV9tZW1vcnkoJmVoZHIsZWxmYmFzZSxzaXplb2YoRWxmX0VoZHIpKTsKIAogCWlm ICggIWVsZl9zYW5pdHlfY2hlY2soJmVoZHIpICkgewotCSAgICBwcmludGsoIkVMRiBzYW5p dHkgY2hlY2sgZmFpbGVkLlxuIik7Ci0JICAgIHJldHVybiAtRUlOVkFMOworCQlwcmludGso IkVMRiBzYW5pdHkgY2hlY2sgZmFpbGVkLlxuIik7CisJCXJldHVybiAtRUlOVkFMOwogCX0K IAogCWlmICggKGVoZHIuZV9waG9mZiArIChlaGRyLmVfcGhudW0gKiBlaGRyLmVfcGhlbnRz aXplKSkgPiBlbGZzaXplICkKIAl7Ci0JICAgIHByaW50aygiRUxGIHByb2dyYW0gaGVhZGVy cyBleHRlbmQgYmV5b25kIGVuZCBvZiBpbWFnZS5cbiIpOwotCSAgICByZXR1cm4gLUVJTlZB TDsKKwkJcHJpbnRrKCJFTEYgcHJvZ3JhbSBoZWFkZXJzIGV4dGVuZCBiZXlvbmQgZW5kIG9m IGltYWdlLlxuIik7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWlmICggKGVoZHIuZV9z aG9mZiArIChlaGRyLmVfc2hudW0gKiBlaGRyLmVfc2hlbnRzaXplKSkgPiBlbGZzaXplICkK IAl7Ci0JICAgIHByaW50aygiRUxGIHNlY3Rpb24gaGVhZGVycyBleHRlbmQgYmV5b25kIGVu ZCBvZiBpbWFnZS5cbiIpOwotCSAgICByZXR1cm4gLUVJTlZBTDsKKwkJcHJpbnRrKCJFTEYg c2VjdGlvbiBoZWFkZXJzIGV4dGVuZCBiZXlvbmQgZW5kIG9mIGltYWdlLlxuIik7CisJCXJl dHVybiAtRUlOVkFMOwogCX0KIAogI2lmIDAKIAkvKiBGaW5kIHRoZSBzZWN0aW9uLWhlYWRl ciBzdHJpbmdzIHRhYmxlLiAqLwogCWlmICggZWhkci5lX3Noc3RybmR4ID09IFNITl9VTkRF RiApCiAJewotCSAgICBwcmludGsoIkVMRiBpbWFnZSBoYXMgbm8gc2VjdGlvbi1oZWFkZXIg c3RyaW5ncyB0YWJsZSAoc2hzdHJ0YWIpLlxuIik7Ci0JICAgIHJldHVybiAtRUlOVkFMOwor CQlwcmludGsoIkVMRiBpbWFnZSBoYXMgbm8gc2VjdGlvbi1oZWFkZXIgc3RyaW5ncyB0YWJs ZSAoc2hzdHJ0YWIpLlxuIik7CisJCXJldHVybiAtRUlOVkFMOwogCX0KICNlbmRpZgogCiAJ KmVudHJ5ID0gZWhkci5lX2VudHJ5OwotcHJpbnRmKCJwYXJzZWRvbWFpbmVsZmltYWdlOiBl bnRyeSBwb2ludCA9ICVwXG4iLCplbnRyeSk7CisJcHJpbnRmKCJwYXJzZWRvbWFpbmVsZmlt YWdlOiBlbnRyeSBwb2ludCA9IDB4JWx4XG4iLCAqZW50cnkpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC03MjUsMjIgKzczMiwyMSBAQAogCWlmIChwbGF0Zm9ybV9pc19ocF9za2koKSkgewog CWRvbTBfc2l6ZSA9IDEyOCoxMDI0KjEwMjQ7IC8vRklYTUU6IFNob3VsZCBiZSBjb25maWd1 cmFibGUKIAl9Ci0JcHJpbnRmKCJhbGxvY19kb20wOiBzdGFydGluZyAoaW5pdGlhbGl6aW5n ICVkIE1CLi4uKVxuIixkb20wX3NpemUvKDEwMjQqMTAyNCkpOworCXByaW50ZigiYWxsb2Nf ZG9tMDogc3RhcnRpbmcgKGluaXRpYWxpemluZyAlbHUgTUIuLi4pXG4iLGRvbTBfc2l6ZS8o MTAyNCoxMDI0KSk7CiAgCi0gICAgIC8qIEZJWE1FOiBUaGUgZmlyc3QgdHJ1bmsgKHNheSAy NTZNKSBzaG91bGQgYWx3YXlzIGJlIGFzc2lnbmVkIHRvCi0gICAgICAqIERvbTAsIHNpbmNl IERvbTAncyBwaHlzaWNhbCA9PSBtYWNoaW5lIGFkZHJlc3MgZm9yIERNQSBwdXJwb3NlLgot ICAgICAgKiBTb21lIG9sZCB2ZXJzaW9uIGxpbnV4LCBsaWtlIDIuNCwgYXNzdW1lcyBwaHlz aWNhbCBtZW1vcnkgZXhpc3RpbmcKLSAgICAgICogaW4gMm5kIDY0TSBzcGFjZS4KLSAgICAg ICovCi0gICAgIGRvbTBfc3RhcnQgPSBhbGxvY19ib290X3BhZ2VzKAotICAgICAgICAgZG9t MF9zaXplID4+IFBBR0VfU0hJRlQsIGRvbTBfYWxpZ24gPj4gUEFHRV9TSElGVCk7Ci0gICAg IGRvbTBfc3RhcnQgPDw9IFBBR0VfU0hJRlQ7CisJLyogRklYTUU6IFRoZSBmaXJzdCB0cnVu ayAoc2F5IDI1Nk0pIHNob3VsZCBhbHdheXMgYmUgYXNzaWduZWQgdG8KKwkgKiBEb20wLCBz aW5jZSBEb20wJ3MgcGh5c2ljYWwgPT0gbWFjaGluZSBhZGRyZXNzIGZvciBETUEgcHVycG9z ZS4KKwkgKiBTb21lIG9sZCB2ZXJzaW9uIGxpbnV4LCBsaWtlIDIuNCwgYXNzdW1lcyBwaHlz aWNhbCBtZW1vcnkgZXhpc3RpbmcKKwkgKiBpbiAybmQgNjRNIHNwYWNlLgorCSAqLworCWRv bTBfc3RhcnQgPSBhbGxvY19ib290X3BhZ2VzKGRvbTBfc2l6ZSA+PiBQQUdFX1NISUZULCBk b20wX2FsaWduID4+IFBBR0VfU0hJRlQpOworCWRvbTBfc3RhcnQgPDw9IFBBR0VfU0hJRlQ7 CiAJaWYgKCFkb20wX3N0YXJ0KSB7Ci0JcHJpbnRmKCJjb25zdHJ1Y3RfZG9tMDogY2FuJ3Qg YWxsb2NhdGUgY29udGlndW91cyBtZW1vcnkgc2l6ZT0lcFxuIiwKKwlwcmludGYoImFsbG9j X2RvbTA6IGNhbid0IGFsbG9jYXRlIGNvbnRpZ3VvdXMgbWVtb3J5IHNpemU9JWx1XG4iLAog CQlkb20wX3NpemUpOwogCXdoaWxlKDEpOwogCX0KLQlwcmludGYoImFsbG9jX2RvbTA6IGRv bTBfc3RhcnQ9JXBcbiIsZG9tMF9zdGFydCk7CisJcHJpbnRmKCJhbGxvY19kb20wOiBkb20w X3N0YXJ0PTB4JWx4XG4iLCBkb20wX3N0YXJ0KTsKICNlbHNlCiAJZG9tMF9zdGFydCA9IDA7 CiAjZW5kaWYKQEAgLTc2OCwxMyArNzc0LDggQEAKIAkgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGluaXRyZF9zdGFydCwgdW5zaWduZWQgbG9uZyBpbml0cmRfbGVuLAogCSAgICAg ICAgICAgICAgIGNoYXIgKmNtZGxpbmUpCiB7Ci0JY2hhciAqZHN0OwogCWludCBpLCByYzsK LQl1bnNpZ25lZCBsb25nIHBmbiwgbWZuOwotCXVuc2lnbmVkIGxvbmcgbnJfcHRfcGFnZXM7 Ci0JdW5zaWduZWQgbG9uZyBjb3VudDsKIAl1bnNpZ25lZCBsb25nIGFsbG9jX3N0YXJ0LCBh bGxvY19lbmQ7Ci0Jc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IE5VTEw7CiAJc3RhcnRfaW5m b190ICpzaTsKIAlzdHJ1Y3QgdmNwdSAqdiA9IGQtPnZjcHVbMF07CiAKQEAgLTc4NSw3ICs3 ODYsMTUgQEAKIAl1bnNpZ25lZCBsb25nIHBrZXJuX2VuZDsKIAl1bnNpZ25lZCBsb25nIHBp bml0cmRfc3RhcnQgPSAwOwogCXVuc2lnbmVkIGxvbmcgcHN0YXJ0X2luZm87Ci0JdW5zaWdu ZWQgbG9uZyByZXQsIHByb2dyZXNzID0gMDsKKyNpZiAwCisJY2hhciAqZHN0OworCXVuc2ln bmVkIGxvbmcgbnJfcHRfcGFnZXM7CisJdW5zaWduZWQgbG9uZyBjb3VudDsKKyNlbmRpZgor I2lmZGVmIFZBTElEQVRFX1ZUCisJdW5zaWduZWQgbG9uZyBtZm47CisJc3RydWN0IHBhZ2Vf aW5mbyAqcGFnZSA9IE5VTEw7CisjZW5kaWYKIAogLy9wcmludGYoImNvbnN0cnVjdF9kb20w OiBzdGFydGluZ1xuIik7CiAKQEAgLTg0MSw3ICs4NTAsNyBAQAogICAgICAgICAgICAgIHBp bml0cmRfc3RhcnQ9KGRvbTBfc3RhcnQrZG9tMF9zaXplKSAtCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIChQQUdFX0FMSUdOKGluaXRyZF9sZW4pICsgNCoxMDI0KjEwMjQpOwogCi0g ICAgICAgICAgICAgbWVtY3B5KF9fdmEocGluaXRyZF9zdGFydCksaW5pdHJkX3N0YXJ0LGlu aXRyZF9sZW4pOworICAgICAgICAgICAgIG1lbWNweShfX3ZhKHBpbml0cmRfc3RhcnQpLCAo dm9pZCAqKSBpbml0cmRfc3RhcnQsIGluaXRyZF9sZW4pOwogICAgICAgICAgICAgIHBzdGFy dF9pbmZvID0gUEFHRV9BTElHTihwaW5pdHJkX3N0YXJ0ICsgaW5pdHJkX2xlbik7CiAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcHN0YXJ0X2luZm8gPSBQQUdFX0FMSUdOKHBr ZXJuX2VuZCk7CkBAIC04NTksNyArODY4LDggQEAKIAl7CiAJICAgIHByaW50aygiSW5pdGlh bCBndWVzdCBPUyByZXF1aXJlcyB0b28gbXVjaCBzcGFjZVxuIgogCSAgICAgICAgICAgIigl bHVNQiBpcyBncmVhdGVyIHRoYW4gJWx1TUIgbGltaXQpXG4iLAotCSAgICAgICAgICAgKHBr ZXJuX2VuZC1wa2Vybl9zdGFydCk+PjIwLCAoZC0+bWF4X3BhZ2VzPDxQQUdFX1NISUZUKT4+ MjApOworCSAgICAgICAgICAgKHBrZXJuX2VuZC1wa2Vybl9zdGFydCk+PjIwLAorCSAgICAg ICAgICAgKHVuc2lnbmVkIGxvbmcpIChkLT5tYXhfcGFnZXM8PFBBR0VfU0hJRlQpPj4yMCk7 CiAJICAgIHJldHVybiAtRU5PTUVNOwogCX0KIApkaWZmIC1yIDZjNDMxMThiZGJhOCB4ZW4v YXJjaC9pYTY0L3hlbi9oeXBlcmNhbGwuYwotLS0gYS94ZW4vYXJjaC9pYTY0L3hlbi9oeXBl cmNhbGwuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2NC94 ZW4vaHlwZXJjYWxsLmMJU3VuIEZlYiAyNiAxNjo1MzowMiAyMDA2CkBAIC0xNiwxMCArMTYs MTUgQEAKIAogI2luY2x1ZGUgPGFzbS92Y3B1Lmg+CiAjaW5jbHVkZSA8YXNtL2RvbV9mdy5o PgorI2luY2x1ZGUgPHB1YmxpYy9kb20wX29wcy5oPgorI2luY2x1ZGUgPHB1YmxpYy9ldmVu dF9jaGFubmVsLmg+CiAjaW5jbHVkZSA8cHVibGljL21lbW9yeS5oPgogI2luY2x1ZGUgPHB1 YmxpYy9zY2hlZC5oPgogCiBleHRlcm4gdW5zaWduZWQgbG9uZyB0cmFuc2xhdGVfZG9tYWlu X21wYWRkcih1bnNpZ25lZCBsb25nKTsKKy8qIEZJWE1FOiB3aGVyZSB0aGVzZSBkZWNsYXJh dGlvbnMgc2hvdWxkIGJlIHRoZXJlID8gKi8KK2V4dGVybiBpbnQgZHVtcF9wcml2b3BfY291 bnRzX3RvX3VzZXIoY2hhciAqLCBpbnQpOworZXh0ZXJuIGludCB6ZXJvX3ByaXZvcF9jb3Vu dHNfdG9fdXNlcihjaGFyICosIGludCk7CiAKIHVuc2lnbmVkIGxvbmcgaWRsZV93aGVuX3Bl bmRpbmcgPSAwOwogdW5zaWduZWQgbG9uZyBwYWxfaGFsdF9saWdodF9jb3VudCA9IDA7CkBA IC0xMzUsMTIgKzE0MCwxMiBAQAogCQlyZWdzLT5yOCA9IEVGSV9VTlNVUFBPUlRFRDsKIAkJ YnJlYWs7CiAJICAgIGNhc2UgRldfSFlQRVJDQUxMX0VGSV9HRVRfVElNRToKLQkJdHYgPSB2 Y3B1X2dldF9ncih2LDMyKTsKLQkJdGMgPSB2Y3B1X2dldF9ncih2LDMzKTsKKwkJdHYgPSAo dW5zaWduZWQgbG9uZyAqKSB2Y3B1X2dldF9ncih2LDMyKTsKKwkJdGMgPSAodW5zaWduZWQg bG9uZyAqKSB2Y3B1X2dldF9ncih2LDMzKTsKIAkJLy9wcmludGYoImVmaV9nZXRfdGltZSgl cCwlcCkgY2FsbGVkLi4uIix0dix0Yyk7Ci0JCXR2ID0gX192YSh0cmFuc2xhdGVfZG9tYWlu X21wYWRkcih0dikpOwotCQlpZiAodGMpIHRjID0gX192YSh0cmFuc2xhdGVfZG9tYWluX21w YWRkcih0YykpOwotCQlyZWdzLT5yOCA9ICgqZWZpLmdldF90aW1lKSh0dix0Yyk7CisJCXR2 ID0gKHVuc2lnbmVkIGxvbmcgKikgX192YSh0cmFuc2xhdGVfZG9tYWluX21wYWRkcigodW5z aWduZWQgbG9uZykgdHYpKTsKKwkJaWYgKHRjKSB0YyA9ICh1bnNpZ25lZCBsb25nICopIF9f dmEodHJhbnNsYXRlX2RvbWFpbl9tcGFkZHIoKHVuc2lnbmVkIGxvbmcpIHRjKSk7CisJCXJl Z3MtPnI4ID0gKCplZmkuZ2V0X3RpbWUpKChlZmlfdGltZV90ICopIHR2LCAoZWZpX3RpbWVf Y2FwX3QgKikgdGMpOwogCQkvL3ByaW50ZigiYW5kIHJldHVybnMgJWx4XG4iLHJlZ3MtPnI4 KTsKIAkJYnJlYWs7CiAJICAgIGNhc2UgRldfSFlQRVJDQUxMX0VGSV9TRVRfVElNRToKQEAg LTE2MSwyMyArMTY2LDIzIEBACiAJCWJyZWFrOwogCSAgICBjYXNlIDB4ZmZmZjoKIAkJcmVn cy0+cjggPSBkdW1wX3ByaXZvcF9jb3VudHNfdG9fdXNlcigKLQkJCXZjcHVfZ2V0X2dyKHYs MzIpLAotCQkJdmNwdV9nZXRfZ3IodiwzMykpOworCQkJKGNoYXIgKikgdmNwdV9nZXRfZ3Io diwzMiksCisJCQkoaW50KSB2Y3B1X2dldF9ncih2LDMzKSk7CiAJCWJyZWFrOwogCSAgICBj YXNlIDB4ZmZmZToKIAkJcmVncy0+cjggPSB6ZXJvX3ByaXZvcF9jb3VudHNfdG9fdXNlcigK LQkJCXZjcHVfZ2V0X2dyKHYsMzIpLAotCQkJdmNwdV9nZXRfZ3IodiwzMykpOworCQkJKGNo YXIgKikgdmNwdV9nZXRfZ3IodiwzMiksCisJCQkoaW50KSB2Y3B1X2dldF9ncih2LDMzKSk7 CiAJCWJyZWFrOwogCSAgICBjYXNlIF9fSFlQRVJWSVNPUl9kb20wX29wOgotCQlyZWdzLT5y OCA9IGRvX2RvbTBfb3AocmVncy0+cjE0KTsKKwkJcmVncy0+cjggPSBkb19kb20wX29wKChz dHJ1Y3QgZG9tMF9vcCAqKSByZWdzLT5yMTQpOwogCQlicmVhazsKIAogCSAgICBjYXNlIF9f SFlQRVJWSVNPUl9tZW1vcnlfb3A6CiAJCS8qIHdlIGRvbid0IGhhbmRsZSByZXNlcnZhdGlv bnM7IGp1c3QgcmV0dXJuIHN1Y2Nlc3MgKi8KIAkJewogCQkgICAgc3RydWN0IHhlbl9tZW1v cnlfcmVzZXJ2YXRpb24gcmVzZXJ2YXRpb247Ci0JCSAgICB2b2lkICphcmcgPSByZWdzLT5y MTU7CisJCSAgICB2b2lkICphcmcgPSAodm9pZCAqKSByZWdzLT5yMTU7CiAKIAkJICAgIHN3 aXRjaChyZWdzLT5yMTQpIHsKIAkJICAgIGNhc2UgWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0 aW9uOgpAQCAtMTg5LDM0ICsxOTQsMzQgQEAKIAkJCSAgICByZWdzLT5yOCA9IHJlc2VydmF0 aW9uLm5yX2V4dGVudHM7CiAJCQlicmVhazsKIAkJICAgIGRlZmF1bHQ6Ci0JCQlyZWdzLT5y OCA9IGRvX21lbW9yeV9vcChyZWdzLT5yMTQsIHJlZ3MtPnIxNSk7CisJCQlyZWdzLT5yOCA9 IGRvX21lbW9yeV9vcCgoaW50KSByZWdzLT5yMTQsICh2b2lkICopcmVncy0+cjE1KTsKIAkJ CWJyZWFrOwogCQkgICAgfQogCQl9CiAJCWJyZWFrOwogCiAJICAgIGNhc2UgX19IWVBFUlZJ U09SX2V2ZW50X2NoYW5uZWxfb3A6Ci0JCXJlZ3MtPnI4ID0gZG9fZXZlbnRfY2hhbm5lbF9v cChyZWdzLT5yMTQpOworCQlyZWdzLT5yOCA9IGRvX2V2ZW50X2NoYW5uZWxfb3AoKHN0cnVj dCBldnRjaG5fb3AgKikgcmVncy0+cjE0KTsKIAkJYnJlYWs7CiAKIAkgICAgY2FzZSBfX0hZ UEVSVklTT1JfZ3JhbnRfdGFibGVfb3A6Ci0JCXJlZ3MtPnI4ID0gZG9fZ3JhbnRfdGFibGVf b3AocmVncy0+cjE0LCByZWdzLT5yMTUsIHJlZ3MtPnIxNik7CisJCXJlZ3MtPnI4ID0gZG9f Z3JhbnRfdGFibGVfb3AoKHVuc2lnbmVkIGludCkgcmVncy0+cjE0LCAodm9pZCAqKSByZWdz LT5yMTUsICh1bnNpZ25lZCBpbnQpIHJlZ3MtPnIxNik7CiAJCWJyZWFrOwogCiAJICAgIGNh c2UgX19IWVBFUlZJU09SX2NvbnNvbGVfaW86Ci0JCXJlZ3MtPnI4ID0gZG9fY29uc29sZV9p byhyZWdzLT5yMTQsIHJlZ3MtPnIxNSwgcmVncy0+cjE2KTsKKwkJcmVncy0+cjggPSBkb19j b25zb2xlX2lvKChpbnQpIHJlZ3MtPnIxNCwgKGludCkgcmVncy0+cjE1LCAoY2hhciAqKSBy ZWdzLT5yMTYpOwogCQlicmVhazsKIAogCSAgICBjYXNlIF9fSFlQRVJWSVNPUl94ZW5fdmVy c2lvbjoKLQkJcmVncy0+cjggPSBkb194ZW5fdmVyc2lvbihyZWdzLT5yMTQsIHJlZ3MtPnIx NSk7CisJCXJlZ3MtPnI4ID0gZG9feGVuX3ZlcnNpb24oKGludCkgcmVncy0+cjE0LCAodm9p ZCAqKSByZWdzLT5yMTUpOwogCQlicmVhazsKIAogCSAgICBjYXNlIF9fSFlQRVJWSVNPUl9t dWx0aWNhbGw6Ci0JCXJlZ3MtPnI4ID0gZG9fbXVsdGljYWxsKHJlZ3MtPnIxNCwgcmVncy0+ cjE1KTsKKwkJcmVncy0+cjggPSBkb19tdWx0aWNhbGwoKHN0cnVjdCBtdWx0aWNhbGxfZW50 cnkgKikgcmVncy0+cjE0LCAodW5zaWduZWQgaW50KSByZWdzLT5yMTUpOwogCQlicmVhazsK IAogCSAgICBkZWZhdWx0OgotCQlwcmludGYoInVua25vd24gaHlwZXJjYWxsICV4XG4iLCBy ZWdzLT5yMik7CisJCXByaW50ZigidW5rbm93biBoeXBlcmNhbGwgJWx4XG4iLCByZWdzLT5y Mik7CiAJCXJlZ3MtPnI4ID0gZG9fbmlfaHlwZXJjYWxsKCk7CiAJfQogCXJldHVybiAxOwpk aWZmIC1yIDZjNDMxMThiZGJhOCB4ZW4vYXJjaC9pYTY0L3hlbi9pcnEuYwotLS0gYS94ZW4v YXJjaC9pYTY0L3hlbi9pcnEuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVu L2FyY2gvaWE2NC94ZW4vaXJxLmMJU3VuIEZlYiAyNiAxNjo1MzowMiAyMDA2CkBAIC0yODYs NyArMjg2LDkgQEAKIGludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCBpcnEsCiAJ CXN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgaXJxYWN0aW9uICphY3Rpb24pCiB7Cisj aWZuZGVmIFhFTgogCWludCBzdGF0dXMgPSAxOwkvKiBGb3JjZSB0aGUgImRvIGJvdHRvbSBo YWx2ZXMiIGJpdCAqLworI2VuZGlmCiAJaW50IHJldHZhbCA9IDA7CiAKICNpZm5kZWYgWEVO CkBAIC02NTcsOCArNjU5LDEwIEBACiAJaWYgKCFhY3Rpb24pCiAJCXJldHVybiAtRU5PTUVN OwogCisjaWZkZWYgWEVOCisJYWN0aW9uLT5oYW5kbGVyID0gKHZvaWQgKikgaGFuZGxlcjsK KyNlbHNlCiAJYWN0aW9uLT5oYW5kbGVyID0gaGFuZGxlcjsKLSNpZm5kZWYgWEVOCiAJYWN0 aW9uLT5mbGFncyA9IGlycWZsYWdzOwogCWFjdGlvbi0+bWFzayA9IDA7CiAjZW5kaWYKQEAg LTY5OCw3ICs3MDIsOSBAQAogI2VuZGlmCiB7CiAJaXJxX2Rlc2NfdCAqZGVzYzsKKyNpZm5k ZWYgWEVOCiAJc3RydWN0IGlycWFjdGlvbiAqKnA7CisjZW5kaWYKIAl1bnNpZ25lZCBsb25n IGZsYWdzOwogCiAJaWYgKGlycSA+PSBOUl9JUlFTKQpAQCAtNzU1LDcgKzc2MSw4IEBACiAg KiBkaXNhYmxlZC4KICAqLwogCi1zdGF0aWMgREVDTEFSRV9NVVRFWChwcm9iZV9zZW0pOwor I2lmbmRlZiBYRU4KK3N0YXRpYyBpbnQgREVDTEFSRV9NVVRFWChwcm9iZV9zZW0pOwogCiAv KioKICAqCXByb2JlX2lycV9vbgktIGJlZ2luIGFuIGludGVycnVwdCBhdXRvZGV0ZWN0CkBA IC03NjUsNyArNzcyLDYgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBYRU4KIHVuc2lnbmVkIGxv bmcgcHJvYmVfaXJxX29uKHZvaWQpCiB7CiAJdW5zaWduZWQgaW50IGk7CkBAIC05MzYsNyAr OTQyLDkgQEAKIAogaW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgaXJx YWN0aW9uICogbmV3KQogeworI2lmbmRlZiBYRU4KIAlpbnQgc2hhcmVkID0gMDsKKyNlbmRp ZgogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IGlycWFjdGlvbiAqb2xkLCAqKnA7 CiAJaXJxX2Rlc2NfdCAqZGVzYyA9IGlycV9kZXNjcChpcnEpOwpAQCAtMTM3MSw3ICsxMzc5 LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50IHBpcnFfZ3Vlc3RfYmluZChzdHJ1Y3Qg dmNwdSAqZCwgaW50IGlycSwgaW50IHdpbGxfc2hhcmUpCitpbnQgcGlycV9ndWVzdF9iaW5k KHN0cnVjdCB2Y3B1ICp2LCBpbnQgaXJxLCBpbnQgd2lsbF9zaGFyZSkKIHsKICAgICBpcnFf ZGVzY190ICAgICAgICAgKmRlc2MgPSAmaXJxX2Rlc2NbaXJxXTsKICAgICBpcnFfZ3Vlc3Rf YWN0aW9uX3QgKmFjdGlvbjsKQEAgLTE0MzEsNyArMTQzOSw3IEBACiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KIAotICAgIGFjdGlvbi0+Z3Vlc3RbYWN0aW9uLT5ucl9ndWVzdHMrK10g PSBkOworICAgIGFjdGlvbi0+Z3Vlc3RbYWN0aW9uLT5ucl9ndWVzdHMrK10gPSB2LT5kb21h aW47CiAKICBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGVzYy0+bG9jaywg ZmxhZ3MpOwpAQCAtMTQ4MCw2ICsxNDg4LDcgQEAKICNpZmRlZiBYRU4KICNpZmRlZiBJQTY0 CiAvLyB0aGlzIGlzIGEgdGVtcG9yYXJ5IGhhY2sgdW50aWwgcmVhbCBjb25zb2xlIGlucHV0 IGlzIGltcGxlbWVudGVkCitleHRlcm4gdm9pZCBkb21haW5fcGVuZF9rZXlib2FyZF9pbnRl cnJ1cHQoaW50IGlycSk7CiBpcnFyZXR1cm5fdCBndWVzdF9mb3J3YXJkX2tleWJvYXJkX2lu cHV0KGludCBpcnEsIHZvaWQgKm5hZGEsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCWRv bWFpbl9wZW5kX2tleWJvYXJkX2ludGVycnVwdChpcnEpOwpkaWZmIC1yIDZjNDMxMThiZGJh OCB4ZW4vYXJjaC9pYTY0L3hlbi9tbV9pbml0LmMKLS0tIGEveGVuL2FyY2gvaWE2NC94ZW4v bW1faW5pdC5jCUZyaSBGZWIgMjQgMjI6NDE6MDggMjAwNgorKysgYi94ZW4vYXJjaC9pYTY0 L3hlbi9tbV9pbml0LmMJU3VuIEZlYiAyNiAxNjo1MzowMiAyMDA2CkBAIC00Nyw2ICs0Nyw3 IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+ CiAjaW5jbHVkZSA8YXNtL21jYS5oPgorI2luY2x1ZGUgPGFzbS92aHB0Lmg+CiAKICNpZm5k ZWYgWEVOCiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgbW11X2dhdGhlciwgbW11X2dhdGhlcnMp OwpAQCAtNjMsNyArNjQsNyBAQAogRVhQT1JUX1NZTUJPTCh2bWVtX21hcCk7CiAjZW5kaWYK IAotc3RhdGljIGludCBwZ3RfY2FjaGVfd2F0ZXJbMl0gPSB7IDI1LCA1MCB9OworLy8gc3Rh dGljIGludCBwZ3RfY2FjaGVfd2F0ZXJbMl0gPSB7IDI1LCA1MCB9OwogCiBzdHJ1Y3QgcGFn ZSAqemVyb19wYWdlX21lbW1hcF9wdHI7CQkvKiBtYXAgZW50cnkgZm9yIHplcm8gcGFnZSAq LwogRVhQT1JUX1NZTUJPTCh6ZXJvX3BhZ2VfbWVtbWFwX3B0cik7CkBAIC0yMjIsNyArMjIz LDcgQEAKIGlhNjRfc2V0X3Jic19ib3QgKHZvaWQpCiB7CiAjaWZkZWYgWEVOCi0JdW5zaWdu ZWQgc3RhY2tfc2l6ZSA9IE1BWF9VU0VSX1NUQUNLX1NJWkU7CisJdW5zaWduZWQgbG9uZyBz dGFja19zaXplID0gTUFYX1VTRVJfU1RBQ0tfU0laRTsKICNlbHNlCiAJdW5zaWduZWQgbG9u ZyBzdGFja19zaXplID0gY3VycmVudC0+cmxpbVtSTElNSVRfU1RBQ0tdLnJsaW1fbWF4ICYg LTE2OwogI2VuZGlmCkBAIC0yNzksNyArMjgwLDcgQEAKICNlbmRpZgogfQogCi1zZXR1cF9n YXRlICh2b2lkKQordm9pZCBzZXR1cF9nYXRlICh2b2lkKQogewogCXByaW50aygic2V0dXBf Z2F0ZSBub3QtaW1wbGVtZW50ZWQuXG4iKTsKIH0KQEAgLTI4Nyw3ICsyODgsMTAgQEAKIHZv aWQgX19kZXZpbml0CiBpYTY0X21tdV9pbml0ICh2b2lkICpteV9jcHVfZGF0YSkKIHsKLQl1 bnNpZ25lZCBsb25nIHBzciwgcHRhLCBpbXBsX3ZhX2JpdHM7CisJdW5zaWduZWQgbG9uZyBw c3IsIGltcGxfdmFfYml0czsKKyNpZiAwCisJdW5zaWduZWQgbG9uZyBwdGE7CisjZW5kaWYK IAlleHRlcm4gdm9pZCBfX2RldmluaXQgdGxiX2luaXQgKHZvaWQpOwogCWludCBjcHU7CiAK ZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC94ZW4vcGNkcC5jCi0tLSBhL3hl bi9hcmNoL2lhNjQveGVuL3BjZHAuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIv eGVuL2FyY2gvaWE2NC94ZW4vcGNkcC5jCVN1biBGZWIgMjYgMTY6NTM6MDIgMjAwNgpAQCAt NzEsNyArNzEsOSBAQAogewogCXN0cnVjdCBwY2RwICpwY2RwOwogCXN0cnVjdCBwY2RwX3Vh cnQgKnVhcnQ7CisjaWZuZGVmIFhFTgogCXN0cnVjdCBwY2RwX2RldmljZSAqZGV2LCAqZW5k OworI2VuZGlmCiAJaW50IGksIHNlcmlhbCA9IDA7CiAKIAlwY2RwID0gZWZpLmhjZHA7CmRp ZmYgLXIgNmM0MzExOGJkYmE4IHhlbi9hcmNoL2lhNjQveGVuL3ByaXZvcC5jCi0tLSBhL3hl bi9hcmNoL2lhNjQveGVuL3ByaXZvcC5jCUZyaSBGZWIgMjQgMjI6NDE6MDggMjAwNgorKysg Yi94ZW4vYXJjaC9pYTY0L3hlbi9wcml2b3AuYwlTdW4gRmViIDI2IDE2OjUzOjAyIDIwMDYK QEAgLTExLDcgKzExLDEyIEBACiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1 ZGUgPGFzbS9kZWxheS5oPgkvLyBEZWJ1ZyBvbmx5CiAjaW5jbHVkZSA8YXNtL2RvbV9mdy5o PgorI2luY2x1ZGUgPGFzbS92aHB0Lmg+CiAvLyNpbmNsdWRlIDxkZWJ1Zy5oPgorCisvKiBG SVhNRTogd2hlcmUgdGhlc2UgZGVjbGFyYXRpb25zIHNob3VsZCBiZSB0aGVyZSA/ICovCitl eHRlcm4gaW50IGR1bXBfcmVmbGVjdF9jb3VudHMoY2hhciAqKTsKK2V4dGVybiB2b2lkIHpl cm9fcmVmbGVjdF9jb3VudHModm9pZCk7CiAKIGxvbmcgcHJpdl92ZXJib3NlPTA7CiAKQEAg LTYwMCw3ICs2MDUsNyBAQAogCWlmIChfX2NvcHlfZnJvbV91c2VyKCZidW5kbGUsaWlwLHNp emVvZihidW5kbGUpKSkKICNlbmRpZgogCXsKLS8vcHJpbnRmKCIqKiogcHJpdl9oYW5kbGVf b3A6IHByaXZvcCBidW5kbGUgQCVwIG5vdCBtYXBwZWQsIHJldHJ5aW5nXG4iLGlpcCk7Cisv L3ByaW50ZigiKioqIHByaXZfaGFuZGxlX29wOiBwcml2b3AgYnVuZGxlIGF0IDB4JWx4IG5v dCBtYXBwZWQsIHJldHJ5aW5nXG4iLGlpcCk7CiAJCXJldHVybiB2Y3B1X2ZvcmNlX2RhdGFf bWlzcyh2Y3B1LHJlZ3MtPmNyX2lpcCk7CiAJfQogI2lmIDAKQEAgLTYxMyw4ICs2MTgsOCBA QAogI2VuZGlmCiAJaWYgKHByaXZvcF90cmFjZSkgewogCQlzdGF0aWMgbG9uZyBpID0gNDAw OwotCQkvL2lmIChpID4gMCkgcHJpbnRmKCJwcml2b3AgQCVwXG4iLGlpcCk7Ci0JCWlmIChp ID4gMCkgcHJpbnRmKCJwcml2X2hhbmRsZV9vcDogQCVwLCBpdGM9JWx4LCBpdG09JWx4XG4i LAorCQkvL2lmIChpID4gMCkgcHJpbnRmKCJwcml2X2hhbmRsZV9vcDogYXQgMHglbHhcbiIs aWlwKTsKKwkJaWYgKGkgPiAwKSBwcmludGYoInByaXZfaGFuZGxlX29wOiBwcml2b3AgdHJh Y2UgYXQgMHglbHgsIGl0Yz0lbHgsIGl0bT0lbHhcbiIsCiAJCQlpaXAsaWE2NF9nZXRfaXRj KCksaWE2NF9nZXRfaXRtKCkpOwogCQlpLS07CiAJfQpAQCAtNzI3LDcgKzczMiw3IEBACiAJ CWJyZWFrOwogCX0KICAgICAgICAgLy9wcmludGYoIldlIHdobyBhcmUgYWJvdXQgZG8gZGll IHNhbHV0ZSB5b3VcbiIpOwotCXByaW50ZigiaGFuZGxlX29wOiBjYW4ndCBoYW5kbGUgcHJp dm9wIGF0IDB4JWx4IChvcD0weCUwMTZseCkgc2xvdCAlZCAodHlwZT0lZCksIGlwc3I9JXBc biIsCisJcHJpbnRmKCJwcml2X2hhbmRsZV9vcDogY2FuJ3QgaGFuZGxlIHByaXZvcCBhdCAw eCVseCAob3A9MHglMDE2bHgpIHNsb3QgJWQgKHR5cGU9JWQpLCBpcHNyPTB4JWx4XG4iLAog CQkgaWlwLCAoVUlOVDY0KWluc3QuaW5zdCwgc2xvdCwgc2xvdF90eXBlLCBpcHNyKTsKICAg ICAgICAgLy9wcmludGYoInZ0b3AoMHglbHgpPT0weCVseFxuIiwgaWlwLCB0cl92dG9wKGlp cCkpOwogICAgICAgICAvL3RocmVhZF9tb3phbWJpcXVlKCJwcml2b3AgZmF1bHRcbiIpOwpA QCAtNzY4LDcgKzc3Myw3IEBACiAJCSh2b2lkKXZjcHVfaW5jcmVtZW50X2lpcCh2Y3B1KTsK IAl9CiAJaWYgKGZhdWx0ID09IElBNjRfSUxMT1BfRkFVTFQpCi0JCXByaW50ZigicHJpdl9l bXVsYXRlOiBwcml2X2hhbmRsZV9vcCBmYWlscywgaXNyPSVwXG4iLGlzcik7CisJCXByaW50 ZigicHJpdl9lbXVsYXRlOiBwcml2X2hhbmRsZV9vcCBmYWlscywgaXNyPTB4JWx4XG4iLGlz cik7CiAJcmV0dXJuIGZhdWx0OwogfQogCkBAIC03OTcsOCArODAyLDcgQEAKIGNoYXIgKmh5 cGVycHJpdl9zdHJbSFlQRVJQUklWT1BfTUFYKzFdID0gewogCTAsICJyZmkiLCAicnNtLmR0 IiwgInNzbS5kdCIsICJjb3ZlciIsICJpdGMuZCIsICJpdGMuaSIsICJzc20uaSIsCiAJIj1p dnIiLCAiPXRwciIsICJ0cHI9IiwgImVvaSIsICJpdG09IiwgInRoYXNoIiwgInB0Yy5nYSIs ICJpdHIuZCIsCi0JIj1yciIsICJycj0iLCAia3I9IiwKLQkwCisJIj1yciIsICJycj0iLCAi a3I9IgogfTsKIAogdW5zaWduZWQgbG9uZyBzbG93X2h5cGVycHJpdl9jbnRbSFlQRVJQUklW T1BfTUFYKzFdID0geyAwIH07CkBAIC04MDksMTUgKzgxMywxNCBAQAogaW50CiBpYTY0X2h5 cGVycHJpdm9wKHVuc2lnbmVkIGxvbmcgaWltLCBSRUdTICpyZWdzKQogewotCXN0cnVjdCB2 Y3B1ICp2ID0gKHN0cnVjdCBkb21haW4gKikgY3VycmVudDsKLQlJTlNUNjQgaW5zdDsKKwlz dHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CiAJVUlOVDY0IHZhbDsKIAlVSU5UNjQgaXRpciwg aWZhOwogCiAvLyBGSVhNRTogSGFuZGxlIGZhdWx0cyBhcHByb3ByaWF0ZWx5IGZvciB0aGVz ZQogCWlmICghaWltIHx8IGlpbSA+IEhZUEVSUFJJVk9QX01BWCkgewogCQlwcmludGYoImJh ZCBoeXBlcnByaXZvcDsgaWdub3JlZFxuIik7Ci0JCXByaW50ZigiaWltPSVkLCBpaXA9JXBc biIsaWltLHJlZ3MtPmNyX2lpcCk7CisJCXByaW50ZigiaWltPSVseCwgaWlwPTB4JWx4XG4i LCBpaW0sIHJlZ3MtPmNyX2lpcCk7CiAJCXJldHVybiAxOwogCX0KIAlzbG93X2h5cGVycHJp dl9jbnRbaWltXSsrOwpAQCAtOTQ2LDQ4ICs5NDksNDggQEAKIAlmb3IgKGk9MDsgaSA8IDY0 OyBpKyspIHN1bSArPSBwcml2Y250Lk1wcml2X2NudFtpXTsKIAlzICs9IHNwcmludGYocywi UHJpdm9wIHN0YXRpc3RpY3M6IChUb3RhbCBwcml2b3BzOiAlbGQpXG4iLHN1bSk7CiAJaWYg KHByaXZjbnQubW92X3RvX2FyX2ltbSkKLQkJcyArPSBzcHJpbnRmKHMsIiUxMGQgICVzIFsl ZCUlXVxuIiwgcHJpdmNudC5tb3ZfdG9fYXJfaW1tLAorCQlzICs9IHNwcmludGYocywiJTEw bGQgICVzIFslbGQlJV1cbiIsIHByaXZjbnQubW92X3RvX2FyX2ltbSwKIAkJCSJtb3ZfdG9f YXJfaW1tIiwgKHByaXZjbnQubW92X3RvX2FyX2ltbSoxMDBMKS9zdW0pOwogCWlmIChwcml2 Y250Lm1vdl90b19hcl9yZWcpCi0JCXMgKz0gc3ByaW50ZihzLCIlMTBkICAlcyBbJWQlJV1c biIsIHByaXZjbnQubW92X3RvX2FyX3JlZywKKwkJcyArPSBzcHJpbnRmKHMsIiUxMGxkICAl cyBbJWxkJSVdXG4iLCBwcml2Y250Lm1vdl90b19hcl9yZWcsCiAJCQkibW92X3RvX2FyX3Jl ZyIsIChwcml2Y250Lm1vdl90b19hcl9yZWcqMTAwTCkvc3VtKTsKIAlpZiAocHJpdmNudC5t b3ZfZnJvbV9hcikKLQkJcyArPSBzcHJpbnRmKHMsIiUxMGQgICVzIFslZCUlXVxuIiwgcHJp dmNudC5tb3ZfZnJvbV9hciwKKwkJcyArPSBzcHJpbnRmKHMsIiUxMGxkICAlcyBbJWxkJSVd XG4iLCBwcml2Y250Lm1vdl9mcm9tX2FyLAogCQkJInByaXZpZmllZC1tb3ZfZnJvbV9hciIs IChwcml2Y250Lm1vdl9mcm9tX2FyKjEwMEwpL3N1bSk7CiAJaWYgKHByaXZjbnQuc3NtKQot CQlzICs9IHNwcmludGYocywiJTEwZCAgJXMgWyVkJSVdXG4iLCBwcml2Y250LnNzbSwKKwkJ cyArPSBzcHJpbnRmKHMsIiUxMGxkICAlcyBbJWxkJSVdXG4iLCBwcml2Y250LnNzbSwKIAkJ CSJzc20iLCAocHJpdmNudC5zc20qMTAwTCkvc3VtKTsKIAlpZiAocHJpdmNudC5yc20pCi0J CXMgKz0gc3ByaW50ZihzLCIlMTBkICAlcyBbJWQlJV1cbiIsIHByaXZjbnQucnNtLAorCQlz ICs9IHNwcmludGYocywiJTEwbGQgICVzIFslbGQlJV1cbiIsIHByaXZjbnQucnNtLAogCQkJ InJzbSIsIChwcml2Y250LnJzbSoxMDBMKS9zdW0pOwogCWlmIChwcml2Y250LnJmaSkKLQkJ cyArPSBzcHJpbnRmKHMsIiUxMGQgICVzIFslZCUlXVxuIiwgcHJpdmNudC5yZmksCisJCXMg Kz0gc3ByaW50ZihzLCIlMTBsZCAgJXMgWyVsZCUlXVxuIiwgcHJpdmNudC5yZmksCiAJCQki cmZpIiwgKHByaXZjbnQucmZpKjEwMEwpL3N1bSk7CiAJaWYgKHByaXZjbnQuYnN3MCkKLQkJ cyArPSBzcHJpbnRmKHMsIiUxMGQgICVzIFslZCUlXVxuIiwgcHJpdmNudC5ic3cwLAorCQlz ICs9IHNwcmludGYocywiJTEwbGQgICVzIFslbGQlJV1cbiIsIHByaXZjbnQuYnN3MCwKIAkJ CSJic3cwIiwgKHByaXZjbnQuYnN3MCoxMDBMKS9zdW0pOwogCWlmIChwcml2Y250LmJzdzEp Ci0JCXMgKz0gc3ByaW50ZihzLCIlMTBkICAlcyBbJWQlJV1cbiIsIHByaXZjbnQuYnN3MSwK KwkJcyArPSBzcHJpbnRmKHMsIiUxMGxkICAlcyBbJWxkJSVdXG4iLCBwcml2Y250LmJzdzEs CiAJCQkiYnN3MSIsIChwcml2Y250LmJzdzEqMTAwTCkvc3VtKTsKIAlpZiAocHJpdmNudC5j b3ZlcikKLQkJcyArPSBzcHJpbnRmKHMsIiUxMGQgICVzIFslZCUlXVxuIiwgcHJpdmNudC5j b3ZlciwKKwkJcyArPSBzcHJpbnRmKHMsIiUxMGxkICAlcyBbJWxkJSVdXG4iLCBwcml2Y250 LmNvdmVyLAogCQkJImNvdmVyIiwgKHByaXZjbnQuY292ZXIqMTAwTCkvc3VtKTsKIAlpZiAo cHJpdmNudC5mYykKLQkJcyArPSBzcHJpbnRmKHMsIiUxMGQgICVzIFslZCUlXVxuIiwgcHJp dmNudC5mYywKKwkJcyArPSBzcHJpbnRmKHMsIiUxMGxkICAlcyBbJWxkJSVdXG4iLCBwcml2 Y250LmZjLAogCQkJInByaXZpZmllZC1mYyIsIChwcml2Y250LmZjKjEwMEwpL3N1bSk7CiAJ aWYgKHByaXZjbnQuY3B1aWQpCi0JCXMgKz0gc3ByaW50ZihzLCIlMTBkICAlcyBbJWQlJV1c biIsIHByaXZjbnQuY3B1aWQsCisJCXMgKz0gc3ByaW50ZihzLCIlMTBsZCAgJXMgWyVsZCUl XVxuIiwgcHJpdmNudC5jcHVpZCwKIAkJCSJwcml2aWZpZWQtZ2V0Y3B1aWQiLCAocHJpdmNu dC5jcHVpZCoxMDBMKS9zdW0pOwogCWZvciAoaT0wOyBpIDwgNjQ7IGkrKykgaWYgKHByaXZj bnQuTXByaXZfY250W2ldKSB7CiAJCWlmICghTXByaXZfc3RyW2ldKSBzICs9IHNwcmludGYo cywiUFJJVlNUUklORyBOVUxMISFcbiIpOwotCQllbHNlIHMgKz0gc3ByaW50ZihzLCIlMTBk ICAlcyBbJWQlJV1cbiIsIHByaXZjbnQuTXByaXZfY250W2ldLAorCQllbHNlIHMgKz0gc3By aW50ZihzLCIlMTBsZCAgJXMgWyVsZCUlXVxuIiwgcHJpdmNudC5NcHJpdl9jbnRbaV0sCiAJ CQlNcHJpdl9zdHJbaV0sIChwcml2Y250Lk1wcml2X2NudFtpXSoxMDBMKS9zdW0pOwogCQlp ZiAoaSA9PSAweDI0KSB7IC8vIG1vdiBmcm9tIENSCiAJCQlzICs9IHNwcmludGYocywiICAg ICAgICAgICAgWyIpOwogCQkJZm9yIChqPTA7IGogPCAxMjg7IGorKykgaWYgKGZyb21fY3Jf Y250W2pdKSB7CiAJCQkJaWYgKCFjcl9zdHJbal0pCiAJCQkJCXMgKz0gc3ByaW50ZihzLCJQ UklWU1RSSU5HIE5VTEwhIVxuIik7Ci0JCQkJcyArPSBzcHJpbnRmKHMsIiVzKCVkKSwiLGNy X3N0cltqXSxmcm9tX2NyX2NudFtqXSk7CisJCQkJcyArPSBzcHJpbnRmKHMsIiVzKCVsZCks Iixjcl9zdHJbal0sZnJvbV9jcl9jbnRbal0pOwogCQkJfQogCQkJcyArPSBzcHJpbnRmKHMs Il1cbiIpOwogCQl9CkBAIC05OTYsNyArOTk5LDcgQEAKIAkJCWZvciAoaj0wOyBqIDwgMTI4 OyBqKyspIGlmICh0b19jcl9jbnRbal0pIHsKIAkJCQlpZiAoIWNyX3N0cltqXSkKIAkJCQkJ cyArPSBzcHJpbnRmKHMsIlBSSVZTVFJJTkcgTlVMTCEhXG4iKTsKLQkJCQlzICs9IHNwcmlu dGYocywiJXMoJWQpLCIsY3Jfc3RyW2pdLHRvX2NyX2NudFtqXSk7CisJCQkJcyArPSBzcHJp bnRmKHMsIiVzKCVsZCksIixjcl9zdHJbal0sdG9fY3JfY250W2pdKTsKIAkJCX0KIAkJCXMg Kz0gc3ByaW50ZihzLCJdXG4iKTsKIAkJfQpAQCAtMTA1MCw3ICsxMDUzLDcgQEAKIAkJcyAr PSBzcHJpbnRmKHMsIiVzOlxuIix2LT5pbnN0bmFtZSk7CiAJCWZvciAoaiA9IDA7IGogPCBQ UklWT1BfQ09VTlRfTkFERFJTOyBqKyspIHsKIAkJCWlmICghdi0+YWRkcltqXSkgYnJlYWs7 Ci0JCQlzICs9IHNwcmludGYocywiIEAlcCAjJWxkXG4iLHYtPmFkZHJbal0sdi0+Y291bnRb al0pOworCQkJcyArPSBzcHJpbnRmKHMsIiBhdCAweCVseCAjJWxkXG4iLHYtPmFkZHJbal0s di0+Y291bnRbal0pOwogCQl9CiAJCWlmICh2LT5vdmVyZmxvdykgCiAJCQlzICs9IHNwcmlu dGYocywiIG90aGVyICMlbGRcbiIsdi0+b3ZlcmZsb3cpOwpAQCAtMTA4NSwxNyArMTA4OCwx NyBAQAogaW50IGR1bXBfbWlzY19zdGF0cyhjaGFyICpidWYpCiB7CiAJY2hhciAqcyA9IGJ1 ZjsKLQlzICs9IHNwcmludGYocywiVmlydHVhbCBUUiB0cmFuc2xhdGlvbnM6ICVkXG4iLHRy X3RyYW5zbGF0ZV9jb3VudCk7Ci0JcyArPSBzcHJpbnRmKHMsIlZpcnR1YWwgVkhQVCBzbG93 IHRyYW5zbGF0aW9uczogJWRcbiIsdmhwdF90cmFuc2xhdGVfY291bnQpOwotCXMgKz0gc3By aW50ZihzLCJWaXJ0dWFsIFZIUFQgZmFzdCB0cmFuc2xhdGlvbnM6ICVkXG4iLGZhc3Rfdmhw dF90cmFuc2xhdGVfY291bnQpOwotCXMgKz0gc3ByaW50ZihzLCJWaXJ0dWFsIERUTEIgdHJh bnNsYXRpb25zOiAlZFxuIixkdGxiX3RyYW5zbGF0ZV9jb3VudCk7Ci0JcyArPSBzcHJpbnRm KHMsIlBoeXNpY2FsIHRyYW5zbGF0aW9uczogJWRcbiIscGh5c190cmFuc2xhdGVfY291bnQp OwotCXMgKz0gc3ByaW50ZihzLCJSZWNvdmVyaWVzIHRvIHBhZ2UgZmF1bHQ6ICVkXG4iLHJl Y292ZXJfdG9fcGFnZV9mYXVsdF9jb3VudCk7Ci0JcyArPSBzcHJpbnRmKHMsIlJlY292ZXJp ZXMgdG8gYnJlYWsgZmF1bHQ6ICVkXG4iLHJlY292ZXJfdG9fYnJlYWtfZmF1bHRfY291bnQp OwotCXMgKz0gc3ByaW50ZihzLCJJZGxlIHdoZW4gcGVuZGluZzogJWRcbiIsaWRsZV93aGVu X3BlbmRpbmcpOwotCXMgKz0gc3ByaW50ZihzLCJQQUxfSEFMVF9MSUdIVCAobm8gcGVuZGlu Zyk6ICVkXG4iLHBhbF9oYWx0X2xpZ2h0X2NvdW50KTsKLQlzICs9IHNwcmludGYocywiY29u dGV4dCBzd2l0Y2hlczogJWRcbiIsY29udGV4dF9zd2l0Y2hfY291bnQpOwotCXMgKz0gc3By aW50ZihzLCJMYXp5IGNvdmVyczogJWRcbiIsbGF6eV9jb3Zlcl9jb3VudCk7CisJcyArPSBz cHJpbnRmKHMsIlZpcnR1YWwgVFIgdHJhbnNsYXRpb25zOiAlbGRcbiIsdHJfdHJhbnNsYXRl X2NvdW50KTsKKwlzICs9IHNwcmludGYocywiVmlydHVhbCBWSFBUIHNsb3cgdHJhbnNsYXRp b25zOiAlbGRcbiIsdmhwdF90cmFuc2xhdGVfY291bnQpOworCXMgKz0gc3ByaW50ZihzLCJW aXJ0dWFsIFZIUFQgZmFzdCB0cmFuc2xhdGlvbnM6ICVsZFxuIixmYXN0X3ZocHRfdHJhbnNs YXRlX2NvdW50KTsKKwlzICs9IHNwcmludGYocywiVmlydHVhbCBEVExCIHRyYW5zbGF0aW9u czogJWxkXG4iLGR0bGJfdHJhbnNsYXRlX2NvdW50KTsKKwlzICs9IHNwcmludGYocywiUGh5 c2ljYWwgdHJhbnNsYXRpb25zOiAlbGRcbiIscGh5c190cmFuc2xhdGVfY291bnQpOworCXMg Kz0gc3ByaW50ZihzLCJSZWNvdmVyaWVzIHRvIHBhZ2UgZmF1bHQ6ICVsZFxuIixyZWNvdmVy X3RvX3BhZ2VfZmF1bHRfY291bnQpOworCXMgKz0gc3ByaW50ZihzLCJSZWNvdmVyaWVzIHRv IGJyZWFrIGZhdWx0OiAlbGRcbiIscmVjb3Zlcl90b19icmVha19mYXVsdF9jb3VudCk7CisJ cyArPSBzcHJpbnRmKHMsIklkbGUgd2hlbiBwZW5kaW5nOiAlbGRcbiIsaWRsZV93aGVuX3Bl bmRpbmcpOworCXMgKz0gc3ByaW50ZihzLCJQQUxfSEFMVF9MSUdIVCAobm8gcGVuZGluZyk6 ICVsZFxuIixwYWxfaGFsdF9saWdodF9jb3VudCk7CisJcyArPSBzcHJpbnRmKHMsImNvbnRl eHQgc3dpdGNoZXM6ICVsZFxuIixjb250ZXh0X3N3aXRjaF9jb3VudCk7CisJcyArPSBzcHJp bnRmKHMsIkxhenkgY292ZXJzOiAlbGRcbiIsbGF6eV9jb3Zlcl9jb3VudCk7CiAJcmV0dXJu IHMgLSBidWY7CiB9CiAKQEAgLTExMjAsMTcgKzExMjMsMTcgQEAKIAljaGFyICpzID0gYnVm OwogCXVuc2lnbmVkIGxvbmcgdG90YWwgPSAwOwogCWZvciAoaSA9IDE7IGkgPD0gSFlQRVJQ UklWT1BfTUFYOyBpKyspIHRvdGFsICs9IHNsb3dfaHlwZXJwcml2X2NudFtpXTsKLQlzICs9 IHNwcmludGYocywiU2xvdyBoeXBlcnByaXZvcHMgKHRvdGFsICVkKTpcbiIsdG90YWwpOwor CXMgKz0gc3ByaW50ZihzLCJTbG93IGh5cGVycHJpdm9wcyAodG90YWwgJWxkKTpcbiIsdG90 YWwpOwogCWZvciAoaSA9IDE7IGkgPD0gSFlQRVJQUklWT1BfTUFYOyBpKyspCiAJCWlmIChz bG93X2h5cGVycHJpdl9jbnRbaV0pCi0JCQlzICs9IHNwcmludGYocywiJTEwZCAlc1xuIiwK KwkJCXMgKz0gc3ByaW50ZihzLCIlMTBsZCAlc1xuIiwKIAkJCQlzbG93X2h5cGVycHJpdl9j bnRbaV0sIGh5cGVycHJpdl9zdHJbaV0pOwogCXRvdGFsID0gMDsKIAlmb3IgKGkgPSAxOyBp IDw9IEhZUEVSUFJJVk9QX01BWDsgaSsrKSB0b3RhbCArPSBmYXN0X2h5cGVycHJpdl9jbnRb aV07Ci0JcyArPSBzcHJpbnRmKHMsIkZhc3QgaHlwZXJwcml2b3BzICh0b3RhbCAlZCk6XG4i LHRvdGFsKTsKKwlzICs9IHNwcmludGYocywiRmFzdCBoeXBlcnByaXZvcHMgKHRvdGFsICVs ZCk6XG4iLHRvdGFsKTsKIAlmb3IgKGkgPSAxOyBpIDw9IEhZUEVSUFJJVk9QX01BWDsgaSsr KQogCQlpZiAoZmFzdF9oeXBlcnByaXZfY250W2ldKQotCQkJcyArPSBzcHJpbnRmKHMsIiUx MGQgJXNcbiIsCisJCQlzICs9IHNwcmludGYocywiJTEwbGQgJXNcbiIsCiAJCQkJZmFzdF9o eXBlcnByaXZfY250W2ldLCBoeXBlcnByaXZfc3RyW2ldKTsKIAlyZXR1cm4gcyAtIGJ1ZjsK IH0KZGlmZiAtciA2YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC94ZW4vcHJvY2Vzcy5jCi0t LSBhL3hlbi9hcmNoL2lhNjQveGVuL3Byb2Nlc3MuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIw MDYKKysrIGIveGVuL2FyY2gvaWE2NC94ZW4vcHJvY2Vzcy5jCVN1biBGZWIgMjYgMTY6NTM6 MDIgMjAwNgpAQCAtMzMsOCArMzMsMTQgQEAKICNpbmNsdWRlIDx4ZW4vbXVsdGljYWxsLmg+ CiAjaW5jbHVkZSA8YXNtL2RlYnVnZ2VyLmg+CiAKLWV4dGVybiB1bnNpZ25lZCBsb25nIHZj cHVfZ2V0X2l0aXJfb25fZmF1bHQoc3RydWN0IHZjcHUgKiwgVUlOVDY0KTsKIGV4dGVybiB2 b2lkIGRpZV9pZl9rZXJuZWwoY2hhciAqc3RyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9u ZyBlcnIpOworLyogRklYTUU6IHdoZXJlIHRoZXNlIGRlY2xhcmF0aW9ucyBzaG9sZCBiZSB0 aGVyZSA/ICovCitleHRlcm4gdm9pZCBsb2FkX3JlZ2lvbl9yZWdzKHN0cnVjdCB2Y3B1ICop OworZXh0ZXJuIHZvaWQgcGFuaWNfZG9tYWluKHN0cnVjdCBwdF9yZWdzICosIGNvbnN0IGNo YXIgKiwgLi4uKTsKK2V4dGVybiBsb25nIHBsYXRmb3JtX2lzX2hwX3NraSh2b2lkKTsKK2V4 dGVybiBpbnQgaWE2NF9oeXBlcnByaXZvcCh1bnNpZ25lZCBsb25nLCBSRUdTICopOworZXh0 ZXJuIGludCBpYTY0X2h5cGVyY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4g dm9pZCB2bXhfZG9fbGF1bmNoKHN0cnVjdCB2Y3B1ICopOwogCiBleHRlcm4gdW5zaWduZWQg bG9uZyBkb20wX3N0YXJ0LCBkb20wX3NpemU7CiAKQEAgLTk4LDE0ICsxMDQsMTcgQEAKIAlt cGFkZHIgPSAoKHB0ZXZhbCAmIF9QQUdFX1BQTl9NQVNLKSAmIH5tYXNrKSB8IChhZGRyZXNz ICYgbWFzayk7CiAJaWYgKGQgPT0gZG9tMCkgewogCQlpZiAobXBhZGRyIDwgZG9tMF9zdGFy dCB8fCBtcGFkZHIgPj0gZG9tMF9zdGFydCArIGRvbTBfc2l6ZSkgewotCQkJLy9wcmludGso InRyYW5zbGF0ZV9kb21haW5fcHRlOiBvdXQtb2YtYm91bmRzIGRvbTAgbXBhZGRyICVwISBp dGM9JWx4Li4uXG4iLG1wYWRkcixpYTY0X2dldF9pdGMoKSk7CisJCQkvKgorCQkJcHJpbnRr KCJ0cmFuc2xhdGVfZG9tYWluX3B0ZTogb3V0LW9mLWJvdW5kcyBkb20wIG1wYWRkciAweCVs eCEgaXRjPSVseC4uLlxuIiwKKwkJCQltcGFkZHIsIGlhNjRfZ2V0X2l0YygpKTsKKwkJCSov CiAJCQl0ZHBmb28oKTsKIAkJfQogCX0KIAllbHNlIGlmICgobXBhZGRyID4+IFBBR0VfU0hJ RlQpID4gZC0+bWF4X3BhZ2VzKSB7CiAJCWlmICgobXBhZGRyICYgfjB4MWZmZkwgKSAhPSAo MUwgPDwgNDApKQotCQlwcmludGYoInRyYW5zbGF0ZV9kb21haW5fcHRlOiBiYWQgbXBhPSVw ICg+ICVwKSx2YWRyPSVwLHB0ZXZhbD0lcCxpdGlyPSVwXG4iLAotCQkJbXBhZGRyLGQtPm1h eF9wYWdlczw8UEFHRV9TSElGVCxhZGRyZXNzLHB0ZXZhbCxpdGlyKTsKKwkJcHJpbnRmKCJ0 cmFuc2xhdGVfZG9tYWluX3B0ZTogYmFkIG1wYT0weCVseCAoPiAweCVseCksdmFkcj0weCVs eCxwdGV2YWw9MHglbHgsaXRpcj0weCVseFxuIiwKKwkJCW1wYWRkciwgKHVuc2lnbmVkIGxv bmcpIGQtPm1heF9wYWdlczw8UEFHRV9TSElGVCwgYWRkcmVzcywgcHRldmFsLCBpdGlyKTsK IAkJdGRwZm9vKCk7CiAJfQogCXB0ZXZhbDIgPSBsb29rdXBfZG9tYWluX21wYShkLG1wYWRk cik7CkBAIC0xMjMsNyArMTMyLDggQEAKIAogCWlmIChjdXJyZW50LT5kb21haW4gPT0gZG9t MCkgewogCQlpZiAobXBhZGRyIDwgZG9tMF9zdGFydCB8fCBtcGFkZHIgPj0gZG9tMF9zdGFy dCArIGRvbTBfc2l6ZSkgewotCQkJcHJpbnRrKCJ0cmFuc2xhdGVfZG9tYWluX21wYWRkcjog b3V0LW9mLWJvdW5kcyBkb20wIG1wYWRkciAlcCEgY29udGludWluZy4uLlxuIixtcGFkZHIp OworCQkJcHJpbnRrKCJ0cmFuc2xhdGVfZG9tYWluX21wYWRkcjogb3V0LW9mLWJvdW5kcyBk b20wIG1wYWRkciAweCVseCEgY29udGludWluZy4uLlxuIiwKKwkJCQltcGFkZHIpOwogCQkJ dGRwZm9vKCk7CiAJCX0KIAl9CkBAIC0xNTAsNyArMTYwLDcgQEAKIAogCXMgKz0gc3ByaW50 ZihzLCJTbG93IHJlZmxlY3Rpb25zIGJ5IHZlY3RvcjpcbiIpOwogCWZvciAoaSA9IDAsIGog PSAwOyBpIDwgMHg4MDsgaSsrKSB7Ci0JCWlmIChjbnQgPSBzbG93X3JlZmxlY3RfY291bnRb aV0pIHsKKwkJaWYgKCAoY250ID0gc2xvd19yZWZsZWN0X2NvdW50W2ldKSAhPSAwICkgewog CQkJcyArPSBzcHJpbnRmKHMsIjB4JTAyeDAwOiUxMGQsICIsaSxjbnQpOwogCQkJaWYgKChq KysgJiAzKSA9PSAzKSBzICs9IHNwcmludGYocywiXG4iKTsKIAkJfQpAQCAtMTU4LDcgKzE2 OCw3IEBACiAJaWYgKGogJiAzKSBzICs9IHNwcmludGYocywiXG4iKTsKIAlzICs9IHNwcmlu dGYocywiRmFzdCByZWZsZWN0aW9ucyBieSB2ZWN0b3I6XG4iKTsKIAlmb3IgKGkgPSAwLCBq ID0gMDsgaSA8IDB4ODA7IGkrKykgewotCQlpZiAoY250ID0gZmFzdF9yZWZsZWN0X2NvdW50 W2ldKSB7CisJCWlmICggKGNudCA9IGZhc3RfcmVmbGVjdF9jb3VudFtpXSkgIT0gMCApIHsK IAkJCXMgKz0gc3ByaW50ZihzLCIweCUwMngwMDolMTBkLCAiLGksY250KTsKIAkJCWlmICgo aisrICYgMykgPT0gMykgcyArPSBzcHJpbnRmKHMsIlxuIik7CiAJCX0KQEAgLTE4Niw3ICsx OTYsNiBAQAogCiB2b2lkIHJlZmxlY3RfaW50ZXJydXB0aW9uKHVuc2lnbmVkIGxvbmcgaXNy LCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyB2ZWN0b3IpCiB7Ci0JdW5z aWduZWQgbG9uZyB2Y3B1X2dldF9pcHNyX2ludF9zdGF0ZShzdHJ1Y3QgdmNwdSAqLHVuc2ln bmVkIGxvbmcpOwogCXN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKIAogCWlmICghUFNDQih2 LGludGVycnVwdF9jb2xsZWN0aW9uX2VuYWJsZWQpKQpAQCAtMjA1LDcgKzIxNCw3IEBACiAj aWZkZWYgQ09ORklHX1NNUAogI3dhcm5pbmcgIlNNUCBGSVhNRTogc2hhcmVkaW5mbyBkb2Vz bid0IGhhbmRsZSBzbXAgeWV0LCBuZWVkIHBhZ2UgcGVyIHZjcHUiCiAjZW5kaWYKLQlyZWdz LT5yMzEgPSAmKCgobWFwcGVkX3JlZ3NfdCAqKVNIQVJFRF9BUkNISU5GT19BRERSKS0+aXBz cik7CisJcmVncy0+cjMxID0gKHVuc2lnbmVkIGxvbmcpICYoKChtYXBwZWRfcmVnc190ICop U0hBUkVEX0FSQ0hJTkZPX0FERFIpLT5pcHNyKTsKIAogCVBTQ0IodixpbnRlcnJ1cHRfZGVs aXZlcnlfZW5hYmxlZCkgPSAwOwogCVBTQ0IodixpbnRlcnJ1cHRfY29sbGVjdGlvbl9lbmFi bGVkKSA9IDA7CkBAIC0yMTksMTMgKzIyOCwxMyBAQAogCiB2b2lkIHJlZmxlY3RfZXh0aW50 KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCWV4dGVybiB1bnNpZ25lZCBsb25nIHZjcHVf dmVyYm9zZSwgcHJpdm9wX3RyYWNlOworLy8JZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmNwdV92 ZXJib3NlLCBwcml2b3BfdHJhY2U7CiAJdW5zaWduZWQgbG9uZyBpc3IgPSByZWdzLT5jcl9p cHNyICYgSUE2NF9QU1JfUkk7CiAJc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwotCXN0YXRp YyBmaXJzdF9leHRpbnQgPSAxOworCXN0YXRpYyBpbnQgZmlyc3RfZXh0aW50ID0gMTsKIAog CWlmIChmaXJzdF9leHRpbnQpIHsKLQkJcHJpbnRmKCJEZWxpdmVyaW5nIGZpcnN0IGV4dGlu dCB0byBkb21haW46IGlzcj0lcCwgaWlwPSVwXG4iLGlzcixyZWdzLT5jcl9paXApOworCQlw cmludGYoIkRlbGl2ZXJpbmcgZmlyc3QgZXh0aW50IHRvIGRvbWFpbjogaXNyPTB4JWx4LCBp aXA9MHglbHhcbiIsIGlzciwgcmVncy0+Y3JfaWlwKTsKIAkJLy9wcml2b3BfdHJhY2UgPSAx OyB2Y3B1X3ZlcmJvc2UgPSAxOwogCQlmaXJzdF9leHRpbnQgPSAwOwogCX0KQEAgLTI5Nywx MSArMzA2LDExIEBACiAJCQkvLyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgSWYgaXQgZG9lcywg cmVnaW9uIDAgYWRkciBtYXkKIAkJCS8vIGluZGljYXRlIGEgYmFkIHhlbiBwb2ludGVyCiAJ CQlwcmludGsoIioqKiB4ZW5faGFuZGxlX2RvbWFpbl9hY2Nlc3M6IGV4Y2VwdGlvbiB0YWJs ZSIKLQkJCSAgICAgICAiIGxvb2t1cCBmYWlsZWQsIGlpcD0lcCwgYWRkcj0lcCwgc3Bpbm5p bmcuLi5cbiIsCi0JCQkJaWlwLGFkZHJlc3MpOworCQkJICAgICAgICIgbG9va3VwIGZhaWxl ZCwgaWlwPTB4JWx4LCBhZGRyPTB4JWx4LCBzcGlubmluZy4uLlxuIiwKKwkJCQlpaXAsIGFk ZHJlc3MpOwogCQkJcGFuaWNfZG9tYWluKHJlZ3MsIioqKiB4ZW5faGFuZGxlX2RvbWFpbl9h Y2Nlc3M6IGV4Y2VwdGlvbiB0YWJsZSIKLQkJCSAgICAgICAiIGxvb2t1cCBmYWlsZWQsIGlp cD0lcCwgYWRkcj0lcCwgc3Bpbm5pbmcuLi5cbiIsCi0JCQkJaWlwLGFkZHJlc3MpOworCQkJ ICAgICAgICIgbG9va3VwIGZhaWxlZCwgaWlwPTB4JWx4LCBhZGRyPTB4JWx4LCBzcGlubmlu Zy4uLlxuIiwKKwkJCQlpaXAsIGFkZHJlc3MpOwogCQl9CiAJCXJldHVybjsKIAl9CkBAIC0z MjksOSArMzM4LDEyIEBACiAJICAgIHVuc2lnbmVkIGxvbmcgYXJnNiwgdW5zaWduZWQgbG9u ZyBhcmc3LCB1bnNpZ25lZCBsb25nIHN0YWNrKQogewogCXN0cnVjdCBwdF9yZWdzICpyZWdz ID0gKHN0cnVjdCBwdF9yZWdzICopICZzdGFjazsKLQl1bnNpZ25lZCBsb25nIGNvZGUsIGVy cm9yID0gaXNyOworCXVuc2lnbmVkIGxvbmcgY29kZTsKKyNpZiAwCisJdW5zaWduZWQgbG9u ZyBlcnJvciA9IGlzcjsKKwlpbnQgcmVzdWx0LCBzaWc7CisjZW5kaWYKIAljaGFyIGJ1Zlsx MjhdOwotCWludCByZXN1bHQsIHNpZzsKIAlzdGF0aWMgY29uc3QgY2hhciAqcmVhc29uW10g PSB7CiAJCSJJQS02NCBJbGxlZ2FsIE9wZXJhdGlvbiBmYXVsdCIsCiAJCSJJQS02NCBQcml2 aWxlZ2VkIE9wZXJhdGlvbiBmYXVsdCIsCkBAIC01NDMsNyArNTU1LDYgQEAKIC8qKi8Jc3Rh dGljIGludCBsYXN0X2ZkLCBsYXN0X2NvdW50OwkvLyBGSVhNRSBGSVhNRSBGSVhNRQogLyoq LwkJCQkJLy8gQlJPS0VOIEZPUiBNVUxUSVBMRSBET01BSU5TICYgU01QCiAvKiovCXN0cnVj dCBzc2NfZGlza19zdGF0IHsgaW50IGZkOyB1bnNpZ25lZCBjb3VudDt9ICpzdGF0LCBsYXN0 X3N0YXQ7Ci0JZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmNwdV92ZXJib3NlLCBwcml2b3BfdHJh Y2U7CiAKIAlhcmcwID0gdmNwdV9nZXRfZ3IoY3VycmVudCwzMik7CiAJc3dpdGNoKHNzYykg ewpAQCAtNTg4LDExICs1OTksMTEgQEAKIAkJYXJnMyA9IHZjcHVfZ2V0X2dyKGN1cnJlbnQs MzUpOwogCQlpZiAoYXJnMikgewkvLyBtZXRhcGh5c2ljYWwgYWRkcmVzcyBvZiBkZXNjcmlw dG9yCiAJCQlzdHJ1Y3Qgc3NjX2Rpc2tfcmVxICpyZXE7Ci0JCQl1bnNpZ25lZCBsb25nIG1w YWRkciwgcGFkZHI7CisJCQl1bnNpZ25lZCBsb25nIG1wYWRkcjsKIAkJCWxvbmcgbGVuOwog CiAJCQlhcmcyID0gdHJhbnNsYXRlX2RvbWFpbl9tcGFkZHIoYXJnMik7Ci0JCQlyZXEgPSAo c3RydWN0IGRpc2tfcmVxICopX192YShhcmcyKTsKKwkJCXJlcSA9IChzdHJ1Y3Qgc3NjX2Rp c2tfcmVxICopIF9fdmEoYXJnMik7CiAJCQlyZXEtPmxlbiAmPSAweGZmZmZmZmZmTDsJLy8g YXZvaWQgc3RyYW5nZSBidWcKIAkJCWxlbiA9IHJlcS0+bGVuOwogLyoqLwkJCWxhc3RfZmQg PSBhcmcxOwpAQCAtNjQwLDcgKzY1MSw4IEBACiAJCXZjcHVfc2V0X2dyKGN1cnJlbnQsOCwt MUwsMCk7CiAJCWJyZWFrOwogCSAgICBkZWZhdWx0OgotCQlwcmludGYoImlhNjRfaGFuZGxl X2JyZWFrOiBiYWQgc3NjIGNvZGUgJWx4LCBpaXA9JXAsIGIwPSVwLi4uIHNwaW5uaW5nXG4i LHNzYyxyZWdzLT5jcl9paXAscmVncy0+YjApOworCQlwcmludGYoImlhNjRfaGFuZGxlX2Jy ZWFrOiBiYWQgc3NjIGNvZGUgJWx4LCBpaXA9MHglbHgsIGIwPTB4JWx4Li4uIHNwaW5uaW5n XG4iLAorCQkJc3NjLCByZWdzLT5jcl9paXAsIHJlZ3MtPmIwKTsKIAkJd2hpbGUoMSk7CiAJ CWJyZWFrOwogCX0KQEAgLTY5Niw5ICs3MDgsOSBAQAogaWE2NF9oYW5kbGVfcHJpdm9wICh1 bnNpZ25lZCBsb25nIGlmYSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcg aXNyLCB1bnNpZ25lZCBsb25nIGl0aXIpCiB7CiAJSUE2NEZBVUxUIHZlY3RvcjsKLQlzdHJ1 Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwogCXN0cnVjdCB2Y3B1ICp2ID0gY3Vy cmVudDsKLQl2ZWN0b3IgPSBwcml2X2VtdWxhdGUoY3VycmVudCxyZWdzLGlzcik7CisKKwl2 ZWN0b3IgPSBwcml2X2VtdWxhdGUodixyZWdzLGlzcik7CiAJaWYgKHZlY3RvciAhPSBJQTY0 X05PX0ZBVUxUICYmIHZlY3RvciAhPSBJQTY0X1JGSV9JTl9QUk9HUkVTUykgewogCQkvLyBO b3RlOiBpZiBhIHBhdGggcmVzdWx0cyBpbiBhIHZlY3RvciB0byByZWZsZWN0IHRoYXQgcmVx dWlyZXMKIAkJLy8gaWhhL2l0aXIgKGUuZy4gdmNwdV9mb3JjZV9kYXRhX21pc3MpLCB0aGV5 IG11c3QgYmUgc2V0IHRoZXJlCkBAIC03MTIsOCArNzI0LDcgQEAKIHZvaWQKIGlhNjRfaGFu ZGxlX3JlZmxlY3Rpb24gKHVuc2lnbmVkIGxvbmcgaWZhLCBzdHJ1Y3QgcHRfcmVncyAqcmVn cywgdW5zaWduZWQgbG9uZyBpc3IsIHVuc2lnbmVkIGxvbmcgaWltLCB1bnNpZ25lZCBsb25n IHZlY3RvcikKIHsKLQlzdHJ1Y3QgZG9tYWluICpkID0gKHN0cnVjdCBkb21haW4gKikgY3Vy cmVudC0+ZG9tYWluOwotCXN0cnVjdCB2Y3B1ICp2ID0gKHN0cnVjdCBkb21haW4gKikgY3Vy cmVudDsKKwlzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CiAJdW5zaWduZWQgbG9uZyBjaGVj a19sYXp5X2NvdmVyID0gMDsKIAl1bnNpZ25lZCBsb25nIHBzciA9IHJlZ3MtPmNyX2lwc3I7 CiAKQEAgLTc1Myw3ICs3NjQsNyBAQAogCQl9CiAjZW5kaWYKIHByaW50ZigiKioqIE5hVCBm YXVsdC4uLiBhdHRlbXB0aW5nIHRvIGhhbmRsZSBhcyBwcml2b3BcbiIpOwotcHJpbnRmKCJp c3I9JXAsIGlmYT0lcCxpaXA9JXAsaXBzcj0lcFxuIixpc3IsaWZhLHJlZ3MtPmNyX2lpcCxw c3IpOworcHJpbnRmKCJpc3I9MHglbHgsIGlmYT0weCVseCwgaWlwPTB4JWx4LCBpcHNyPTB4 JWx4XG4iLCBpc3IsIGlmYSwgcmVncy0+Y3JfaWlwLCBwc3IpOwogCQkvL3JlZ3MtPmVtbF91 bmF0ID0gMDsgIEZJWE1FOiBETyBXRSBORUVEIFRISVM/Pz8KIAkJLy8gY2VydGFpbiBOYVQg ZmF1bHRzIGFyZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBwcml2b3AgZmF1bHRzCiAJCXZlY3Rv ciA9IHByaXZfZW11bGF0ZSh2LHJlZ3MsaXNyKTsKQEAgLTgwMCw4ICs4MTEsNyBAQAogCXVu c2lnbmVkIGludCBvcCwgdW5zaWduZWQgaW50IG5yX2FyZ3MsIC4uLikKIHsKICAgICBzdHJ1 Y3QgbWNfc3RhdGUgKm1jcyA9ICZtY19zdGF0ZVtzbXBfcHJvY2Vzc29yX2lkKCldOwotICAg IFZDUFUgKnZjcHUgPSBjdXJyZW50OwotICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz ID0gdmNwdV9yZWdzKHZjcHUpOworICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKICAg ICB1bnNpZ25lZCBpbnQgaTsKICAgICB2YV9saXN0IGFyZ3M7CiAKQEAgLTgwOSwyNSArODE5 LDI1IEBACiAgICAgaWYgKCB0ZXN0X2JpdChfTUNTRl9pbl9tdWx0aWNhbGwsICZtY3MtPmZs YWdzKSApIHsKIAlwYW5pYygiUFJFRU1QVCBoYXBwZW4gaW4gbXVsdGljYWxsXG4iKTsJLy8g Tm90IHN1cHBvcnQgeWV0CiAgICAgfSBlbHNlIHsKLQl2Y3B1X3NldF9ncih2Y3B1LCAyLCBv cCwgMCk7CisJdmNwdV9zZXRfZ3IodiwgMiwgb3AsIDApOwogCWZvciAoIGkgPSAwOyBpIDwg bnJfYXJnczsgaSsrKSB7CiAJICAgIHN3aXRjaCAoaSkgewotCSAgICBjYXNlIDA6IHZjcHVf c2V0X2dyKHZjcHUsIDE0LCB2YV9hcmcoYXJncywgdW5zaWduZWQgbG9uZyksIDApOworCSAg ICBjYXNlIDA6IHZjcHVfc2V0X2dyKHYsIDE0LCB2YV9hcmcoYXJncywgdW5zaWduZWQgbG9u ZyksIDApOwogCQkgICAgYnJlYWs7Ci0JICAgIGNhc2UgMTogdmNwdV9zZXRfZ3IodmNwdSwg MTUsIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBsb25nKSwgMCk7CisJICAgIGNhc2UgMTogdmNw dV9zZXRfZ3IodiwgMTUsIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBsb25nKSwgMCk7CiAJCSAg ICBicmVhazsKLQkgICAgY2FzZSAyOiB2Y3B1X3NldF9ncih2Y3B1LCAxNiwgdmFfYXJnKGFy Z3MsIHVuc2lnbmVkIGxvbmcpLCAwKTsKKwkgICAgY2FzZSAyOiB2Y3B1X3NldF9ncih2LCAx NiwgdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIGxvbmcpLCAwKTsKIAkJICAgIGJyZWFrOwotCSAg ICBjYXNlIDM6IHZjcHVfc2V0X2dyKHZjcHUsIDE3LCB2YV9hcmcoYXJncywgdW5zaWduZWQg bG9uZyksIDApOworCSAgICBjYXNlIDM6IHZjcHVfc2V0X2dyKHYsIDE3LCB2YV9hcmcoYXJn cywgdW5zaWduZWQgbG9uZyksIDApOwogCQkgICAgYnJlYWs7Ci0JICAgIGNhc2UgNDogdmNw dV9zZXRfZ3IodmNwdSwgMTgsIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBsb25nKSwgMCk7CisJ ICAgIGNhc2UgNDogdmNwdV9zZXRfZ3IodiwgMTgsIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBs b25nKSwgMCk7CiAJCSAgICBicmVhazsKIAkgICAgZGVmYXVsdDogcGFuaWMoIlRvbyBtYW55 IGFyZ3MgZm9yIGh5cGVyY2FsbCBjb250aW51YXRpb25cbiIpOwogCQkgICAgYnJlYWs7CiAJ ICAgIH0KIAl9CiAgICAgfQotICAgIHZjcHUtPmFyY2guaHlwZXJjYWxsX2NvbnRpbnVhdGlv biA9IDE7CisgICAgdi0+YXJjaC5oeXBlcmNhbGxfY29udGludWF0aW9uID0gMTsKICAgICB2 YV9lbmQoYXJncyk7CiAgICAgcmV0dXJuIG9wOwogfQpkaWZmIC1yIDZjNDMxMThiZGJhOCB4 ZW4vYXJjaC9pYTY0L3hlbi9yZWdpb25yZWcuYwotLS0gYS94ZW4vYXJjaC9pYTY0L3hlbi9y ZWdpb25yZWcuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2 NC94ZW4vcmVnaW9ucmVnLmMJU3VuIEZlYiAyNiAxNjo1MzowMiAyMDA2CkBAIC0xOCw2ICsx OCw4IEBACiBleHRlcm4gdm9pZCBpYTY0X25ld19ycjcodW5zaWduZWQgbG9uZyByaWQsdm9p ZCAqc2hhcmVkX2luZm8sIHZvaWQgKnNoYXJlZF9hcmNoX2luZm8sIHVuc2lnbmVkIGxvbmcg cF92aHB0LCB1bnNpZ25lZCBsb25nIHZfcGFsKTsKIGV4dGVybiB2b2lkICpwYWxfdmFkZHI7 CiAKKy8qIEZJWE1FOiB3aGVyZSB0aGVzZSBkZWNsYXJhdGlvbnMgc2hvdWxkIGJlIHRoZXJl ID8gKi8KK2V4dGVybiB2b2lkIHBhbmljX2RvbWFpbihzdHJ1Y3QgcHRfcmVncyAqLCBjb25z dCBjaGFyICosIC4uLik7CiAKICNkZWZpbmUJSUE2NF9NSU5fSU1QTF9SSURfQklUUwkoSUE2 NF9NSU5fSU1QTF9SSURfTVNCKzEpCiAjZGVmaW5lCUlBNjRfTUFYX0lNUExfUklEX0JJVFMJ MjQKQEAgLTE0Miw3ICsxNDQsNyBAQAogCS8vIHNldHVwIGRvbWFpbiBzdHJ1Y3QKIAlkLT5h cmNoLnJpZF9iaXRzID0gcmlkYml0czsKIAlkLT5hcmNoLnN0YXJ0aW5nX3JpZCA9IGkgPDwg SUE2NF9NSU5fSU1QTF9SSURfQklUUzsgZC0+YXJjaC5lbmRpbmdfcmlkID0gKGkrbl9yaWRf YmxvY2tzKSA8PCBJQTY0X01JTl9JTVBMX1JJRF9CSVRTOwotcHJpbnRmKCIjIyNhbGxvY2F0 aW5nIHJpZF9yYW5nZSwgZG9tYWluICVwOiBzdGFydGluZ19yaWQ9JWx4LCBlbmRpbmdfcmlk PSVseFxuIiwKK3ByaW50ZigiIyMjYWxsb2NhdGluZyByaWRfcmFuZ2UsIGRvbWFpbiAlcDog c3RhcnRpbmdfcmlkPSV4LCBlbmRpbmdfcmlkPSV4XG4iLAogZCxkLT5hcmNoLnN0YXJ0aW5n X3JpZCwgZC0+YXJjaC5lbmRpbmdfcmlkKTsKIAkKIAlyZXR1cm4gMTsKQEAgLTIyMCw4ICsy MjIsOCBAQAogCW5ld3JpZCA9IHYtPmFyY2guc3RhcnRpbmdfcmlkICsgcnJ2LnJpZDsKIAog CWlmIChuZXdyaWQgPiB2LT5hcmNoLmVuZGluZ19yaWQpIHsKLQkJcHJpbnRrKCJjYW4ndCBz ZXQgcnIlZCB0byAlbHgsIHN0YXJ0aW5nX3JpZD0lbHgsIgotCQkJImVuZGluZ19yaWQ9JWx4 LCB2YWw9JWx4XG4iLCBycmVnLCBuZXdyaWQsCisJCXByaW50aygiY2FuJ3Qgc2V0IHJyJWQg dG8gJWx4LCBzdGFydGluZ19yaWQ9JXgsIgorCQkJImVuZGluZ19yaWQ9JXgsIHZhbD0lbHhc biIsIChpbnQpIHJyZWcsIG5ld3JpZCwKIAkJCXYtPmFyY2guc3RhcnRpbmdfcmlkLHYtPmFy Y2guZW5kaW5nX3JpZCx2YWwpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC0yNTIsNyArMjU0LDcg QEAKIAlpZiAocnJlZyA9PSAwKSB2LT5hcmNoLm1ldGFwaHlzaWNhbF9zYXZlZF9ycjAgPQog CQl2bU1hbmdsZVJJRChuZXdycnYucnJ2YWwpOwogCWlmIChycmVnID09IDcpIGlhNjRfbmV3 X3JyNyh2bU1hbmdsZVJJRChuZXdycnYucnJ2YWwpLHYtPnZjcHVfaW5mbywKLQkJCQl2LT5h cmNoLnByaXZyZWdzLCB2aHB0X3BhZGRyLCBwYWxfdmFkZHIpOworCQkJCXYtPmFyY2gucHJp dnJlZ3MsIHZocHRfcGFkZHIsICh1bnNpZ25lZCBsb25nKSBwYWxfdmFkZHIpOwogCWVsc2Ug c2V0X3JyKHJyLG5ld3Jydi5ycnZhbCk7CiAjZW5kaWYKIAlyZXR1cm4gMTsKQEAgLTI2Miwx MSArMjY0LDEyIEBACiBpbnQgc2V0X21ldGFwaHlzaWNhbF9ycjAodm9pZCkKIHsKIAlzdHJ1 Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7Ci0JaWE2NF9yciBycnY7CisvLwlpYTY0X3JyIHJydjsK IAkKIC8vCXJydi52ZSA9IDE7IAlGSVhNRTogVFVSTiBNRSBCQUNLIE9OIFdIRU4gVkhQVCBJ UyBXT1JLSU5HCiAJaWE2NF9zZXRfcnIoMCx2LT5hcmNoLm1ldGFwaHlzaWNhbF9ycjApOwog CWlhNjRfc3Jsel9kKCk7CisJcmV0dXJuIDE7CiB9CiAKIC8vIHZhbGlkYXRlcy9jaGFuZ2Vz IHJlZ2lvbiByZWdpc3RlcnMgMC02IGluIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGRvbWFp bgpkaWZmIC1yIDZjNDMxMThiZGJhOCB4ZW4vYXJjaC9pYTY0L3hlbi9zbl9jb25zb2xlLmMK LS0tIGEveGVuL2FyY2gvaWE2NC94ZW4vc25fY29uc29sZS5jCUZyaSBGZWIgMjQgMjI6NDE6 MDggMjAwNgorKysgYi94ZW4vYXJjaC9pYTY0L3hlbi9zbl9jb25zb2xlLmMJU3VuIEZlYiAy NiAxNjo1MzowMiAyMDA2CkBAIC05LDcgKzksMTMgQEAKICNpbmNsdWRlIDxhc20vc24vc25f c2FsLmg+CiAjaW5jbHVkZSA8eGVuL3NlcmlhbC5oPgogCi12b2lkIHNuX3B1dGMoc3RydWN0 IHNlcmlhbF9wb3J0ICosIGNoYXIpOworLyoKKyAqIHNuX3B1dGMgLSBTZW5kIGEgY2hhcmFj dGVyIHRvIHRoZSBjb25zb2xlLCBwb2xsZWQgb3IgaW50ZXJydXB0IG1vZGUKKyAqLworc3Rh dGljIHZvaWQgc25fcHV0YyhzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQsIGNoYXIgYykKK3sK KwlpYTY0X3NuX2NvbnNvbGVfcHV0YyhjKTsKK30KIAogc3RhdGljIHN0cnVjdCB1YXJ0X2Ry aXZlciBzbl9zYWxfY29uc29sZSA9IHsKIAkucHV0YyA9IHNuX3B1dGMsCkBAIC03NSwxMSAr ODEsMyBAQAogCiAJcmV0dXJuIDA7CiB9Ci0KLS8qCi0gKiBzbl9wdXRjIC0gU2VuZCBhIGNo YXJhY3RlciB0byB0aGUgY29uc29sZSwgcG9sbGVkIG9yIGludGVycnVwdCBtb2RlCi0gKi8K LXZvaWQgc25fcHV0YyhzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQsIGNoYXIgYykKLXsKLQly ZXR1cm4gaWE2NF9zbl9jb25zb2xlX3B1dGMoYyk7Ci19CmRpZmYgLXIgNmM0MzExOGJkYmE4 IHhlbi9hcmNoL2lhNjQveGVuL3ZjcHUuYwotLS0gYS94ZW4vYXJjaC9pYTY0L3hlbi92Y3B1 LmMJRnJpIEZlYiAyNCAyMjo0MTowOCAyMDA2CisrKyBiL3hlbi9hcmNoL2lhNjQveGVuL3Zj cHUuYwlTdW4gRmViIDI2IDE2OjUzOjAyIDIwMDYKQEAgLTIxLDcgKzIxLDE1IEBACiAjaW5j bHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9kZWxheS5oPgogI2luY2x1 ZGUgPGFzbS92bXhfdmNwdS5oPgorI2luY2x1ZGUgPGFzbS92aHB0Lmg+CisjaW5jbHVkZSA8 YXNtL3RsYmZsdXNoLmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisKKy8qIEZJWE1FOiB3 aGVyZSB0aGVzZSBkZWNsYXJhdGlvbnMgc2hvdWxkIGJlIHRoZXJlID8gKi8KK2V4dGVybiB2 b2lkIGdldHJlZyh1bnNpZ25lZCBsb25nIHJlZ251bSwgdW5zaWduZWQgbG9uZyAqdmFsLCBp bnQgKm5hdCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgc2V0cmVnKHVu c2lnbmVkIGxvbmcgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbCwgaW50IG5hdCwgc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgcGFuaWNfZG9tYWluKHN0cnVjdCBwdF9y ZWdzICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKK2V4dGVybiBpbnQgc2V0X21ldGFwaHlzaWNh bF9ycjAodm9pZCk7CiAKIHR5cGVkZWYJdW5pb24gewogCXN0cnVjdCBpYTY0X3BzciBpYTY0 X3BzcjsKQEAgLTQ3LDEwICs1NSwxMCBAQAogI2RlZmluZSBTVEFUSUMKIAogI2lmZGVmIFBS SVZPUF9BRERSX0NPVU5UCi1zdHJ1Y3QgcHJpdm9wX2FkZHJfY291bnQgcHJpdm9wX2FkZHJf Y291bnRlcltQUklWT1BfQ09VTlRfTklOU1RTXSA9IHsKLQl7ICI9aWZhIiwgeyAwIH0sIHsg MCB9LCAwIH0sCitzdHJ1Y3QgcHJpdm9wX2FkZHJfY291bnQgcHJpdm9wX2FkZHJfY291bnRl cltQUklWT1BfQ09VTlRfTklOU1RTKzFdID0geworCXsgIj1pZmEiLCAgeyAwIH0sIHsgMCB9 LCAwIH0sCiAJeyAidGhhc2giLCB7IDAgfSwgeyAwIH0sIDAgfSwKLQkwCisJeyAwLCAgICAg ICB7IDAgfSwgeyAwIH0sIDAgfQogfTsKIGV4dGVybiB2b2lkIHByaXZvcF9jb3VudF9hZGRy KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGluc3QpOwogI2RlZmluZQlQUklWT1BfQ09VTlRf QUREUihyZWdzLGluc3QpIHByaXZvcF9jb3VudF9hZGRyKHJlZ3MtPmNyX2lpcCxpbnN0KQpA QCAtMzc1LDcgKzM4Myw3IEBACiBVSU5UNjQgdmNwdV9nZXRfaXBzcl9pbnRfc3RhdGUoVkNQ VSAqdmNwdSxVSU5UNjQgcHJldnBzcikKIHsKIAlVSU5UNjQgZGNyID0gUFNDQlgodmNwdSxk Y3IpOwotCVBTUiBwc3IgPSB7MH07CisJUFNSIHBzcjsKIAogCS8vcHJpbnRmKCIqKiogdmNw dV9nZXRfaXBzcl9pbnRfc3RhdGUgKDB4JTAxNmx4KS4uLiIscHJldnBzcik7CiAJcHNyLmk2 NCA9IHByZXZwc3I7CkBAIC0zOTcsNyArNDA1LDcgQEAKIAogSUE2NEZBVUxUIHZjcHVfZ2V0 X2RjcihWQ1BVICp2Y3B1LCBVSU5UNjQgKnB2YWwpCiB7Ci1leHRlcm4gdW5zaWduZWQgbG9u ZyBwcml2b3BfdHJhY2U7CisvL2V4dGVybiB1bnNpZ25lZCBsb25nIHByaXZvcF90cmFjZTsK IC8vcHJpdm9wX3RyYWNlPTA7CiAvL3ZlcmJvc2UoInZjcHVfZ2V0X2RjcjogY2FsbGVkIEAl cFxuIixQU0NCKHZjcHUsaWlwKSk7CiAJLy8gUmVhZHMgb2YgY3IuZGNyIG9uIFhlbiBhbHdh eXMgaGF2ZSB0aGUgc2lnbiBiaXQgc2V0LCBzbwpAQCAtNTI1LDcgKzUzMyw3IEBACiAKIElB NjRGQVVMVCB2Y3B1X3NldF9kY3IoVkNQVSAqdmNwdSwgVUlOVDY0IHZhbCkKIHsKLWV4dGVy biB1bnNpZ25lZCBsb25nIHByaXZvcF90cmFjZTsKKy8vZXh0ZXJuIHVuc2lnbmVkIGxvbmcg cHJpdm9wX3RyYWNlOwogLy9wcml2b3BfdHJhY2U9MTsKIAkvLyBSZWFkcyBvZiBjci5kY3Ig b24gU1AgYWx3YXlzIGhhdmUgdGhlIHNpZ24gYml0IHNldCwgc28KIAkvLyBhIGRvbWFpbiBj YW4gZGlmZmVyZW50aWF0ZSB3aGV0aGVyIGl0IGlzIHJ1bm5pbmcgb24gU1Agb3Igbm90CkBA IC03NDcsNyArNzU1LDcgQEAKIAogSUE2NEZBVUxUIHZjcHVfZ2V0X2xpZChWQ1BVICp2Y3B1 LCBVSU5UNjQgKnB2YWwpCiB7Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBwcml2b3BfdHJhY2U7 CisvL2V4dGVybiB1bnNpZ25lZCBsb25nIHByaXZvcF90cmFjZTsKIC8vcHJpdm9wX3RyYWNl PTE7CiAJLy9UT0RPOiBJbXBsZW1lbnQgdGhpcwogCXByaW50ZigidmNwdV9nZXRfbGlkOiBX QVJOSU5HOiBHZXR0aW5nIGNyLmxpZCBhbHdheXMgcmV0dXJucyB6ZXJvXG4iKTsKQEAgLTc2 NCw5ICs3NzIsMTAgQEAKICNkZWZpbmUgSEVBUlRCRUFUX0ZSRVEgMTYJLy8gcGVyaW9kIGlu IHNlY29uZHMKICNpZmRlZiBIRUFSVEJFQVRfRlJFUQogI2RlZmluZSBOX0RPTVMgMTYJLy8g cGVyaW9kIGluIHNlY29uZHMKKyNpZiAwCiAJc3RhdGljIGxvbmcgY291bnRbTl9ET01TXSA9 IHsgMCB9OworI2VuZGlmCiAJc3RhdGljIGxvbmcgbm9uY2xvY2tjb3VudFtOX0RPTVNdID0g eyAwIH07Ci0JUkVHUyAqcmVncyA9IHZjcHVfcmVncyh2Y3B1KTsKIAl1bnNpZ25lZCBkb21p ZCA9IHZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwogI2VuZGlmCiAjaWZkZWYgSVJRX0RFQlVH CkBAIC04MDMsNyArODEyLDcgQEAKIAkvLyBnZXR0aW5nIGl2ciBoYXMgInNpZGUgZWZmZWN0 cyIKICNpZmRlZiBJUlFfREVCVUcKIAlpZiAoZmlyc3R0aW1lW3ZlY3Rvcl0pIHsKLQkJcHJp bnRmKCIqKiogRmlyc3QgZ2V0X2l2ciBvbiB2ZWN0b3I9JWQsaXRjPSVseFxuIiwKKwkJcHJp bnRmKCIqKiogRmlyc3QgZ2V0X2l2ciBvbiB2ZWN0b3I9JWx1LGl0Yz0lbHhcbiIsCiAJCQl2 ZWN0b3IsaWE2NF9nZXRfaXRjKCkpOwogCQlmaXJzdHRpbWVbdmVjdG9yXT0wOwogCX0KQEAg LTgxNyw3ICs4MjYsNyBAQAogCiAJaSA9IHZlY3RvciA+PiA2OwogCW1hc2sgPSAxTCA8PCAo dmVjdG9yICYgMHgzZik7Ci0vL3ByaW50ZigiWlpaWlpaIHZjcHVfZ2V0X2l2cjogc2V0dGlu ZyBpbnN2YyBtYXNrIGZvciB2ZWN0b3IgJWxkXG4iLHZlY3Rvcik7CisvL3ByaW50ZigiWlpa WlpaIHZjcHVfZ2V0X2l2cjogc2V0dGluZyBpbnN2YyBtYXNrIGZvciB2ZWN0b3IgJWx1XG4i LHZlY3Rvcik7CiAJUFNDQlgodmNwdSxpbnN2Y1tpXSkgfD0gbWFzazsKIAlQU0NCWCh2Y3B1 LGlycltpXSkgJj0gfm1hc2s7CiAJLy9QU0NCKHZjcHUscGVuZGluZ19pbnRlcnJ1cHRpb24p LS07CkBAIC05ODMsMTkgKzk5MiwxOSBAQAogewogICAgIFBTQ0JYKHZjcHUseGVuX3RpbWVy X2ludGVydmFsKSA9IGN5Y2xlczsKICAgICB2Y3B1X3NldF9uZXh0X3RpbWVyKHZjcHUpOwot ICAgIHByaW50ZigidmNwdV9lbmFibGVfdGltZXIoJWQpOiBpbnRlcnZhbCBzZXQgdG8gJWQg Y3ljbGVzXG4iLAorICAgIHByaW50ZigidmNwdV9lbmFibGVfdGltZXI6IGludGVydmFsIHNl dCB0byAlbHUgY3ljbGVzXG4iLAogICAgICAgICAgICAgIFBTQ0JYKHZjcHUseGVuX3RpbWVy X2ludGVydmFsKSk7CiAgICAgX19zZXRfYml0KFBTQ0IodmNwdSxpdHYpLCBQU0NCKHZjcHUs ZGVsaXZlcnlfbWFzaykpOwogfQogCiBJQTY0RkFVTFQgdmNwdV9zZXRfaXR2KFZDUFUgKnZj cHUsIFVJTlQ2NCB2YWwpCiB7Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBwcml2b3BfdHJhY2U7 CisvL2V4dGVybiB1bnNpZ25lZCBsb25nIHByaXZvcF90cmFjZTsKIC8vcHJpdm9wX3RyYWNl PTE7CiAJaWYgKHZhbCAmIDB4ZWYwMCkgcmV0dXJuIChJQTY0X0lMTE9QX0ZBVUxUKTsKIAlQ U0NCKHZjcHUsaXR2KSA9IHZhbDsKIAlpZiAodmFsICYgMHgxMDAwMCkgewotcHJpbnRmKCIq KioqIHZjcHVfc2V0X2l0diglZCk6IHZpdG09JWx4LCBzZXR0aW5nIHRvIDBcbiIsdmFsLFBT Q0JYKHZjcHUsZG9tYWluX2l0bSkpOworcHJpbnRmKCIqKioqIHZjcHVfc2V0X2l0diglbHUp OiB2aXRtPSVseCwgc2V0dGluZyB0byAwXG4iLHZhbCxQU0NCWCh2Y3B1LGRvbWFpbl9pdG0p KTsKIAkJUFNDQlgodmNwdSxkb21haW5faXRtKSA9IDA7CiAJfQogCWVsc2UgdmNwdV9lbmFi bGVfdGltZXIodmNwdSwxMDAwMDAwTCk7CkBAIC0xMTAzLDcgKzExMTIsNyBAQAogCiBJQTY0 RkFVTFQgdmNwdV9zZXRfaXRtKFZDUFUgKnZjcHUsIFVJTlQ2NCB2YWwpCiB7Ci0JVUlOVCBu b3cgPSBpYTY0X2dldF9pdGMoKTsKKwkvL1VJTlQgbm93ID0gaWE2NF9nZXRfaXRjKCk7CiAK IAkvL2lmICh2YWwgPCBub3cpIHZhbCA9IG5vdyArIDEwMDA7CiAvL3ByaW50ZigiKioqIHZj cHVfc2V0X2l0bTogY2FsbGVkIHdpdGggJWx4XG4iLHZhbCk7CkBAIC0xMTE0LDcgKzExMjMs MTAgQEAKIAogSUE2NEZBVUxUIHZjcHVfc2V0X2l0YyhWQ1BVICp2Y3B1LCBVSU5UNjQgdmFs KQogewotCisjZGVmaW5lIERJU0FMTE9XX1NFVFRJTkdfSVRDX0ZPUl9OT1cKKyNpZmRlZiBE SVNBTExPV19TRVRUSU5HX0lUQ19GT1JfTk9XCitwcmludGYoInZjcHVfc2V0X2l0YzogU2V0 dGluZyBhci5pdGMgaXMgY3VycmVudGx5IGRpc2FibGVkXG4iKTsKKyNlbHNlCiAJVUlOVDY0 IG9sZG5vdyA9IGlhNjRfZ2V0X2l0YygpOwogCVVJTlQ2NCBvbGRpdG0gPSBQU0NCWCh2Y3B1 LGRvbWFpbl9pdG0pOwogCXVuc2lnbmVkIGxvbmcgZCA9IG9sZGl0bSAtIG9sZG5vdzsKQEAg LTExMjIsMTAgKzExMzQsNiBAQAogCiAJVUlOVDY0IG5ld25vdyA9IHZhbCwgbWluX2RlbHRh OwogCi0jZGVmaW5lIERJU0FMTE9XX1NFVFRJTkdfSVRDX0ZPUl9OT1cKLSNpZmRlZiBESVNB TExPV19TRVRUSU5HX0lUQ19GT1JfTk9XCi1wcmludGYoInZjcHVfc2V0X2l0YzogU2V0dGlu ZyBhci5pdGMgaXMgY3VycmVudGx5IGRpc2FibGVkXG4iKTsKLSNlbHNlCiAJbG9jYWxfaXJx X2Rpc2FibGUoKTsKIAlpZiAob2xkaXRtKSB7CiBwcmludGYoIioqKiogdmNwdV9zZXRfaXRj KCVseCk6IHZpdG0gY2hhbmdlZCB0byAlbHhcbiIsdmFsLG5ld25vdytkKTsKQEAgLTEzMTQs NyArMTMyMiw3IEBACiAvLyB0aGlzIGRvd24sIGJ1dCBzaW5jZSBpdCBoYXMgYmVlbiBhcHBh cmVudGx5IGhhcm1sZXNzLCBqdXN0IGZsYWcgaXQgZm9yIG5vdwogLy8JCQlwYW5pY19kb21h aW4odmNwdV9yZWdzKHZjcHUpLAogCQkJcHJpbnRrKAotCQkJICJ2Y3B1X3RyYW5zbGF0ZTog YmFkIHBoeXNpY2FsIGFkZHJlc3M6ICVwXG4iLGFkZHJlc3MpOworCQkJICJ2Y3B1X3RyYW5z bGF0ZTogYmFkIHBoeXNpY2FsIGFkZHJlc3M6IDB4JWx4XG4iLGFkZHJlc3MpOwogCQl9CiAJ CSpwdGV2YWwgPSAoYWRkcmVzcyAmIF9QQUdFX1BQTl9NQVNLKSB8IF9fRElSVFlfQklUUyB8 IF9QQUdFX1BMXzIgfCBfUEFHRV9BUl9SV1g7CiAJCSppdGlyID0gUEFHRV9TSElGVCA8PCAy OwpAQCAtMTMyNyw3ICsxMzM1LDggQEAKIAkJdW5zaWduZWQgbG9uZyB2aXBzciA9IFBTQ0Io dmNwdSxpcHNyKTsKIAkJdW5zaWduZWQgbG9uZyBpaXAgPSByZWdzLT5jcl9paXA7CiAJCXVu c2lnbmVkIGxvbmcgaXBzciA9IHJlZ3MtPmNyX2lwc3I7Ci0JCXByaW50aygidmNwdV90cmFu c2xhdGU6IGJhZCBhZGRyZXNzICVwLCB2aWlwPSVwLCB2aXBzcj0lcCwgaWlwPSVwLCBpcHNy PSVwIGNvbnRpbnVpbmdcbiIsIGFkZHJlc3MsIHZpaXAsIHZpcHNyLCBpaXAsIGlwc3IpOwor CQlwcmludGsoInZjcHVfdHJhbnNsYXRlOiBiYWQgYWRkcmVzcyAweCVseCwgdmlpcD0weCVs eCwgdmlwc3I9MHglbHgsIGlpcD0weCVseCwgaXBzcj0weCVseCBjb250aW51aW5nXG4iLAor CQkJYWRkcmVzcywgdmlpcCwgdmlwc3IsIGlpcCwgaXBzcik7CiAJfQogCiAJcnIgPSBQU0NC KHZjcHUscnJzKVtyZWdpb25dOwpAQCAtMTg4OCw3ICsxODk3LDcgQEAKIAogSUE2NEZBVUxU IHZjcHVfcHRjX2dhKFZDUFUgKnZjcHUsVUlOVDY0IHZhZHIsVUlOVDY0IGFkZHJfcmFuZ2Up CiB7Ci0JZXh0ZXJuIGlhNjRfZ2xvYmFsX3RsYl9wdXJnZShVSU5UNjQgc3RhcnQsIFVJTlQ2 NCBlbmQsIFVJTlQ2NCBuYml0cyk7CisJZXh0ZXJuIHZvaWQgaWE2NF9nbG9iYWxfdGxiX3B1 cmdlKFVJTlQ2NCBzdGFydCwgVUlOVDY0IGVuZCwgVUlOVDY0IG5iaXRzKTsKIAkvLyBGSVhN RTogdmFsaWRhdGUgbm90IGZsdXNoaW5nIFhlbiBhZGRyZXNzZXMKIAkvLyBpZiAoWGVuIGFk ZHJlc3MpIHJldHVybihJQTY0X0lMTE9QX0ZBVUxUKTsKIAkvLyBGSVhNRTogPz9icmVha3Mg aWYgZG9tYWluIFBBR0VfU0laRSA8IFhlbiBQQUdFX1NJWkUKZGlmZiAtciA2YzQzMTE4YmRi YTggeGVuL2FyY2gvaWE2NC94ZW4vdmhwdC5jCi0tLSBhL3hlbi9hcmNoL2lhNjQveGVuL3Zo cHQuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2NC94ZW4v dmhwdC5jCVN1biBGZWIgMjYgMTY6NTM6MDIgMjAwNgpAQCAtMjAsNyArMjAsNyBAQAogdm9p ZCB2aHB0X2ZsdXNoKHZvaWQpCiB7CiAJc3RydWN0IHZocHRfbGZfZW50cnkgKnYgPSAodm9p ZCAqKVZIUFRfQUREUjsKLQlpbnQgaSwgY250ID0gMDsKKwlpbnQgaTsKICNpZiAwCiBzdGF0 aWMgaW50IGZpcnN0dGltZSA9IDI7CiAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpZmRlZiBWSFBU X0dMT0JBTAogdm9pZCB2aHB0X2ZsdXNoX2FkZHJlc3ModW5zaWduZWQgbG9uZyB2YWRyLCB1 bnNpZ25lZCBsb25nIGFkZHJfcmFuZ2UpCiB7Ci0JdW5zaWduZWQgbG9uZyBwczsKIAlzdHJ1 Y3QgdmhwdF9sZl9lbnRyeSAqdmxmZTsKIAogCWlmICgodmFkciA+PiA2MSkgPT0gNykgewpA QCAtMTI4LDIwICsxMjcsMjAgQEAKIAkvLyBhbGxvY2F0ZSBhIGh1Z2UgY2h1bmsgb2YgcGh5 c2ljYWwgbWVtb3J5Li4uLiBob3c/Pz8KIAl2aHB0X3RvdGFsX3NpemUgPSAxIDw8IFZIUFRf U0laRV9MT0cyOwkvLyA0TUIsIDE2TUIsIDY0TUIsIG9yIDI1Nk1CCiAJdmhwdF9hbGlnbm1l bnQgPSAxIDw8IFZIUFRfU0laRV9MT0cyOwkvLyA0TUIsIDE2TUIsIDY0TUIsIG9yIDI1Nk1C Ci0JcHJpbnRmKCJ2aHB0X2luaXQ6IHZocHQgc2l6ZT0lcCwgYWxpZ249JXBcbiIsdmhwdF90 b3RhbF9zaXplLHZocHRfYWxpZ25tZW50KTsKKwlwcmludGYoInZocHRfaW5pdDogdmhwdCBz aXplPSVseCwgYWxpZ249JWx4XG4iLCB2aHB0X3RvdGFsX3NpemUsIHZocHRfYWxpZ25tZW50 KTsKIAkvKiBUaGlzIGFsbG9jYXRpb24gb25seSBob2xkcyB0cnVlIGlmIHZocHQgdGFibGUg aXMgdW5pcXVlIGZvcgogCSAqIGFsbCBkb21haW5zLiBPciBlbHNlIGxhdGVyIG5ldyB2aHB0 IHRhYmxlIHNob3VsZCBiZSBhbGxvY2F0ZWQKIAkgKiBmcm9tIGRvbWFpbiBoZWFwIHdoZW4g ZWFjaCBkb21haW4gaXMgY3JlYXRlZC4gQXNzdW1lIHhlbiBidWRkeQogCSAqIGFsbG9jYXRv ciBjYW4gcHJvdmlkZSBuYXR1cmFsIGFsaWduZWQgcGFnZSBieSBvcmRlcj8KIAkgKi8KLQl2 aHB0X2ltdmEgPSBhbGxvY194ZW5oZWFwX3BhZ2VzKFZIUFRfU0laRV9MT0cyIC0gUEFHRV9T SElGVCk7CisJdmhwdF9pbXZhID0gKHVuc2lnbmVkIGxvbmcpIGFsbG9jX3hlbmhlYXBfcGFn ZXMoVkhQVF9TSVpFX0xPRzIgLSBQQUdFX1NISUZUKTsKIAlpZiAoIXZocHRfaW12YSkgewog CQlwcmludGYoInZocHRfaW5pdDogY2FuJ3QgYWxsb2NhdGUgVkhQVCFcbiIpOwogCQl3aGls ZSgxKTsKIAl9CiAJdmhwdF9wYWRkciA9IF9fcGEodmhwdF9pbXZhKTsKIAl2aHB0X3BlbmQg PSB2aHB0X3BhZGRyICsgdmhwdF90b3RhbF9zaXplIC0gMTsKLQlwcmludGYoInZocHRfaW5p dDogdmhwdCBwYWRkcj0lcCwgZW5kPSVwXG4iLHZocHRfcGFkZHIsdmhwdF9wZW5kKTsKKwlw cmludGYoInZocHRfaW5pdDogdmhwdCBwYWRkcj0lbHgsIGVuZD0lbHhcbiIsIHZocHRfcGFk ZHIsIHZocHRfcGVuZCk7CiAJdmhwdF9wdGUgPSBwdGVfdmFsKHBmbl9wdGUodmhwdF9wYWRk ciA+PiBQQUdFX1NISUZULCBQQUdFX0tFUk5FTCkpOwogCXZocHRfbWFwKCk7CiAJaWE2NF9z ZXRfcHRhKFZIUFRfQUREUiB8ICgxIDw8IDgpIHwgKFZIUFRfU0laRV9MT0cyIDw8IDIpIHwK QEAgLTE2Nyw2ICsxNjYsNiBAQAogCQlpZiAodi0+Q0NoYWluKSB2aHB0X2NoYWlucysrOwog CX0KIAlzICs9IHNwcmludGYocywiVkhQVCB1c2FnZTogJWxkLyVsZCAoJWxkIGNvbGxpc2lv biBjaGFpbnMpXG4iLAotCQl2aHB0X3ZhbGlkLFZIUFRfTlVNX0VOVFJJRVMsdmhwdF9jaGFp bnMpOworCQl2aHB0X3ZhbGlkLCAodW5zaWduZWQgbG9uZykgVkhQVF9OVU1fRU5UUklFUywg dmhwdF9jaGFpbnMpOwogCXJldHVybiBzIC0gYnVmOwogfQpkaWZmIC1yIDZjNDMxMThiZGJh OCB4ZW4vYXJjaC9pYTY0L3hlbi94ZW5pcnEuYwotLS0gYS94ZW4vYXJjaC9pYTY0L3hlbi94 ZW5pcnEuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2NC94 ZW4veGVuaXJxLmMJU3VuIEZlYiAyNiAxNjo1MzowMiAyMDA2CkBAIC0yNCw3ICsyNCw3IEBA CiAJCWZpcnN0aXJxID0gMDsKIAl9CiAJaWYgKGZpcnN0dGltZVt2ZWN0b3JdKSB7Ci0JCXBy aW50ZigiKioqKiAoZW50cnkpIEZpcnN0IHJlY2VpdmVkIGludCBvbiB2ZWN0b3I9JWQsaXRj PSVseFxuIiwKKwkJcHJpbnRmKCIqKioqIChlbnRyeSkgRmlyc3QgcmVjZWl2ZWQgaW50IG9u IHZlY3Rvcj0lbHUsaXRjPSVseFxuIiwKIAkJCSh1bnNpZ25lZCBsb25nKSB2ZWN0b3IsIGlh NjRfZ2V0X2l0YygpKTsKIAkJZmlyc3R0aW1lW3ZlY3Rvcl0gPSAwOwogCX0KQEAgLTM4LDEz ICszOCwxMyBAQAogCQlleHRlcm4gdm9pZCB2Y3B1X3BlbmRfaW50ZXJydXB0KHZvaWQgKiwg aW50KTsKICNpZiAwCiAJCWlmIChmaXJzdHRpbWVbdmVjdG9yXSkgewotCQkJcHJpbnRmKCIq KioqIChpdGVyYXRlKSBGaXJzdCByZWNlaXZlZCBpbnQgb24gdmVjdG9yPSVkLGl0Yz0lbHhc biIsCi0JCQkodW5zaWduZWQgbG9uZykgdmVjdG9yLCBpYTY0X2dldF9pdGMoKSk7CisJCQlw cmludGYoIioqKiogKGl0ZXJhdGUpIEZpcnN0IHJlY2VpdmVkIGludCBvbiB2ZWN0b3I9JWx1 LGl0Yz0lbHhcbiIsCisJCQkJKHVuc2lnbmVkIGxvbmcpIHZlY3RvciwgaWE2NF9nZXRfaXRj KCkpOwogCQkJZmlyc3R0aW1lW3ZlY3Rvcl0gPSAwOwogCQl9CiAJCWlmIChmaXJzdHBlbmRb dmVjdG9yXSkgewotCQkJcHJpbnRmKCIqKioqIEZpcnN0IHBlbmRlZCBpbnQgb24gdmVjdG9y PSVkLGl0Yz0lbHhcbiIsCi0JCQkJKHVuc2lnbmVkIGxvbmcpIHZlY3RvcixpYTY0X2dldF9p dGMoKSk7CisJCQlwcmludGYoIioqKiogRmlyc3QgcGVuZGVkIGludCBvbiB2ZWN0b3I9JWx1 LGl0Yz0lbHhcbiIsCisJCQkJKHVuc2lnbmVkIGxvbmcpIHZlY3RvciwgaWE2NF9nZXRfaXRj KCkpOwogCQkJZmlyc3RwZW5kW3ZlY3Rvcl0gPSAwOwogCQl9CiAjZW5kaWYKZGlmZiAtciA2 YzQzMTE4YmRiYTggeGVuL2FyY2gvaWE2NC94ZW4veGVubWVtLmMKLS0tIGEveGVuL2FyY2gv aWE2NC94ZW4veGVubWVtLmMJRnJpIEZlYiAyNCAyMjo0MTowOCAyMDA2CisrKyBiL3hlbi9h cmNoL2lhNjQveGVuL3hlbm1lbS5jCVN1biBGZWIgMjYgMTY6NTM6MDIgMjAwNgpAQCAtMzQs NyArMzQsNiBAQAogdm9pZAogcGFnaW5nX2luaXQgKHZvaWQpCiB7Ci0Jc3RydWN0IHBhZ2Vf aW5mbyAqcGc7CiAJdW5zaWduZWQgaW50IG1wdF9vcmRlcjsKIAkvKiBDcmVhdGUgbWFjaGlu ZSB0byBwaHlzaWNhbCBtYXBwaW5nIHRhYmxlCiAJICogTk9URTogc2ltaWxhciB0byBmcmFt ZSB0YWJsZSwgbGF0ZXIgd2UgbWF5IG5lZWQgdmlydHVhbGx5CkBAIC02MSw3ICs2MCw3IEBA CiAjZGVmaW5lIEZUX0FMSUdOX1NJWkUJKDE2VUwgPDwgMjApCiB2b2lkIF9faW5pdCBpbml0 X2ZyYW1ldGFibGUodm9pZCkKIHsKLQl1bnNpZ25lZCBsb25nIGksIHBmbjsKKwl1bnNpZ25l ZCBsb25nIHBmbjsKIAlmcmFtZV90YWJsZV9zaXplID0gbWF4X3BhZ2UgKiBzaXplb2Yoc3Ry dWN0IHBhZ2VfaW5mbyk7CiAJZnJhbWVfdGFibGVfc2l6ZSA9IChmcmFtZV90YWJsZV9zaXpl ICsgUEFHRV9TSVpFIC0gMSkgJiBQQUdFX01BU0s7CiAKZGlmZiAtciA2YzQzMTE4YmRiYTgg eGVuL2FyY2gvaWE2NC94ZW4veGVubWlzYy5jCi0tLSBhL3hlbi9hcmNoL2lhNjQveGVuL3hl bm1pc2MuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIwMDYKKysrIGIveGVuL2FyY2gvaWE2NC94 ZW4veGVubWlzYy5jCVN1biBGZWIgMjYgMTY6NTM6MDIgMjAwNgpAQCAtMTksMTIgKzE5LDE4 IEBACiAjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+CiAjaW5jbHVkZSA8YXNtL3ZocHQuaD4K ICNpbmNsdWRlIDxhc20vZGVidWdnZXIuaD4KKyNpbmNsdWRlIDxhc20vdm14Lmg+CisjaW5j bHVkZSA8YXNtL3ZteF92Y3B1Lmg+CiAKIGVmaV9tZW1vcnlfZGVzY190IGlhNjRfZWZpX2lv X21kOwogRVhQT1JUX1NZTUJPTChpYTY0X2VmaV9pb19tZCk7CiB1bnNpZ25lZCBsb25nIHdh aXRfaW5pdF9pZGxlOwogaW50IHBoeXNfcHJvY19pZFtOUl9DUFVTXTsKIHVuc2lnbmVkIGxv bmcgbG9vcHNfcGVyX2ppZmZ5ID0gKDE8PDEyKTsJLy8gZnJvbSBsaW51eC9pbml0L21haW4u YworCisvKiBGSVhNRTogd2hlcmUgdGhlc2UgZGVjbGFyYXRpb25zIHNob3VsZCBiZSB0aGVy ZSA/ICovCitleHRlcm4gdm9pZCBsb2FkX3JlZ2lvbl9yZWdzKHN0cnVjdCB2Y3B1ICopOwor ZXh0ZXJuIHZvaWQgc2hvd19yZWdpc3RlcnMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwogCiB2 b2lkIGlhNjRfbWNhX2luaXQodm9pZCkgeyBwcmludGYoImlhNjRfbWNhX2luaXQoKSBza2lw cGVkIChNYWNoaW5lIGNoZWNrIGFib3J0IGhhbmRsaW5nKVxuIik7IH0KIHZvaWQgaWE2NF9t Y2FfY3B1X2luaXQodm9pZCAqeCkgeyB9CkBAIC0yNTEsNiArMjU3LDcgQEAKIAkgICB1bnNp Z25lZCBsb25nIHVzZXJfcmJzX2VuZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBsb25nICp2YWwp CiB7CiAJcHJpbnRrKCJpYTY0X3BlZWs6IGNhbGxlZCwgbm90IGltcGxlbWVudGVkXG4iKTsK KwlyZXR1cm4gMTsKIH0KIAogbG9uZwpAQCAtMjU4LDYgKzI2NSw3IEBACiAJICAgdW5zaWdu ZWQgbG9uZyB1c2VyX3Jic19lbmQsIHVuc2lnbmVkIGxvbmcgYWRkciwgbG9uZyB2YWwpCiB7 CiAJcHJpbnRrKCJpYTY0X3Bva2U6IGNhbGxlZCwgbm90IGltcGxlbWVudGVkXG4iKTsKKwly ZXR1cm4gMTsKIH0KIAogdm9pZApAQCAtMzE0LDcgKzMyMiw3IEBACiBzdGF0aWMgaW50IGkg PSAxMDA7CiBpbnQgaWQgPSAoKHN0cnVjdCB2Y3B1ICopY3VycmVudCktPmRvbWFpbi0+ZG9t YWluX2lkICYgMHhmOwogaWYgKCFjbnRbaWRdLS0pIHsgcHJpbnRrKCIleCIsaWQpOyBjbnRb aWRdID0gNTAwMDAwOyB9Ci1pZiAoIWktLSkgeyBwcmludGsoIisiLGlkKTsgaSA9IDEwMDAw MDA7IH0KK2lmICghaS0tKSB7IHByaW50aygiKyIpOyBpID0gMTAwMDAwMDsgfQogfQogCiAg ICAgaWYgKFZNWF9ET01BSU4oY3VycmVudCkpewpAQCAtMzU4LDEyICszNjYsMTIgQEAKIAl2 YV9saXN0IGFyZ3M7CiAJY2hhciBidWZbMTI4XTsKIAlzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJl bnQ7Ci0Jc3RhdGljIHZvbGF0aWxlIGludCB0ZXN0ID0gMTsJLy8gc28gY2FuIGNvbnRpbnVl IGVhc2lseSBpbiBkZWJ1ZwotCWV4dGVybiBzcGlubG9ja190IGNvbnNvbGVfbG9jazsKLQl1 bnNpZ25lZCBsb25nIGZsYWdzOworLy8Jc3RhdGljIHZvbGF0aWxlIGludCB0ZXN0ID0gMTsJ Ly8gc28gY2FuIGNvbnRpbnVlIGVhc2lseSBpbiBkZWJ1ZworLy8JZXh0ZXJuIHNwaW5sb2Nr X3QgY29uc29sZV9sb2NrOworLy8JdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAKIGxvb3A6 Ci0JcHJpbnRmKCIkJCQkJCBQQU5JQyBpbiBkb21haW4gJWQgKGs2PSVwKTogIiwKKwlwcmlu dGYoIiQkJCQkIFBBTklDIGluIGRvbWFpbiAlZCAoazY9MHglbHgpOiAiLAogCQl2LT5kb21h aW4tPmRvbWFpbl9pZCwgCiAJCV9fZ2V0X2NwdV92YXIoY3B1X2tyKS5fa3JbSUE2NF9LUl9D VVJSRU5UXSk7CiAJdmFfc3RhcnQoYXJncywgZm10KTsKQEAgLTM3OCw3ICszODYsNyBAQAog CX0KIAlkb21haW5fcGF1c2VfYnlfc3lzdGVtY29udHJvbGxlcihjdXJyZW50LT5kb21haW4p OwogCXYtPmRvbWFpbi0+c2h1dGRvd25fY29kZSA9IFNIVVRET1dOX2NyYXNoOwotCXNldF9i aXQoX0RPTUZfc2h1dGRvd24sIHYtPmRvbWFpbi0+ZG9tYWluX2ZsYWdzKTsKKwlzZXRfYml0 KF9ET01GX3NodXRkb3duLCAmdi0+ZG9tYWluLT5kb21haW5fZmxhZ3MpOwogCWlmICh2LT5k b21haW4tPmRvbWFpbl9pZCA9PSAwKSB7CiAJCWludCBpID0gMTAwMDAwMDAwMEw7CiAJCS8v IGlmIGRvbWFpbjAgY3Jhc2hlcywganVzdCBwZXJpb2RpY2FsbHkgcHJpbnQgb3V0IHBhbmlj CmRpZmYgLXIgNmM0MzExOGJkYmE4IHhlbi9hcmNoL2lhNjQveGVuL3hlbnNldHVwLmMKLS0t IGEveGVuL2FyY2gvaWE2NC94ZW4veGVuc2V0dXAuYwlGcmkgRmViIDI0IDIyOjQxOjA4IDIw MDYKKysrIGIveGVuL2FyY2gvaWE2NC94ZW4veGVuc2V0dXAuYwlTdW4gRmViIDI2IDE2OjUz OjAyIDIwMDYKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5o PgogLy8jaW5jbHVkZSA8eGVuL2RlbGF5Lmg+CiAjaW5jbHVkZSA8eGVuL2NvbXBpbGUuaD4K LS8vI2luY2x1ZGUgPHhlbi9jb25zb2xlLmg+CisjaW5jbHVkZSA8eGVuL2NvbnNvbGUuaD4K ICNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+CiAjaW5jbHVkZSA8eGVuL3RyYWNlLmg+CiAjaW5j bHVkZSA8YXNtL21lbWluaXQuaD4KQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxhc20v c2V0dXAuaD4KICNpbmNsdWRlIDx4ZW4vc3RyaW5nLmg+CiAjaW5jbHVkZSA8YXNtL3ZteC5o PgorI2luY2x1ZGUgPGxpbnV4L2VmaS5oPgogCiB1bnNpZ25lZCBsb25nIHhlbmhlYXBfcGh5 c19lbmQ7CiAKQEAgLTM1LDYgKzM2LDE2IEBACiAKIGludCBmaW5kX21heF9wZm4gKHVuc2ln bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CiB2b2lkIHN0YXJ0X29mX2RheSh2 b2lkKTsKKworLyogRklYTUU6IHdoaWNoIGhlYWRlciB0aGVzZSBkZWNsYXJhdGlvbnMgc2hv dWxkIGJlIHRoZXJlID8gKi8KK2V4dGVybiBsb25nIGlzX3BsYXRmb3JtX2hwX3NraSh2b2lk KTsKK2V4dGVybiB2b2lkIGVhcmx5X3NldHVwX2FyY2goY2hhciAqKik7CitleHRlcm4gdm9p ZCBsYXRlX3NldHVwX2FyY2goY2hhciAqKik7CitleHRlcm4gdm9pZCBocHNpbV9zZXJpYWxf aW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGFsbG9jX2RvbTAodm9pZCk7CitleHRlcm4gdm9p ZCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpOworZXh0ZXJuIHZvaWQgbWVtX2luaXQodm9p ZCk7CitleHRlcm4gdm9pZCBpbml0X0lSUSh2b2lkKTsKIAogLyogb3B0X25vc21wOiBJZiB0 cnVlLCBzZWNvbmRhcnkgcHJvY2Vzc29ycyBhcmUgaWdub3JlZC4gKi8KIHN0YXRpYyBpbnQg b3B0X25vc21wID0gMDsKQEAgLTE0OSw4ICsxNjAsNyBAQAogewogICAgIHVuc2lnbmVkIGNo YXIgKmNtZGxpbmU7CiAgICAgdm9pZCAqaGVhcF9zdGFydDsKLSAgICBpbnQgaTsKLSAgICB1 bnNpZ25lZCBsb25nIG1heF9tZW0sIG5yX3BhZ2VzLCBmaXJzdGhvbGVfc3RhcnQ7CisgICAg dW5zaWduZWQgbG9uZyBucl9wYWdlcywgZmlyc3Rob2xlX3N0YXJ0OwogICAgIHVuc2lnbmVk IGxvbmcgZG9tMF9tZW1vcnlfc3RhcnQsIGRvbTBfbWVtb3J5X3NpemU7CiAgICAgdW5zaWdu ZWQgbG9uZyBkb20wX2luaXRyZF9zdGFydCwgZG9tMF9pbml0cmRfc2l6ZTsKICAgICB1bnNp Z25lZCBsb25nIGluaXRpYWxfaW1hZ2VzX3N0YXJ0LCBpbml0aWFsX2ltYWdlc19lbmQ7CkBA IC0xNjAsNyArMTcwLDcgQEAKICAgICAvKiBLZXJuZWwgbWF5IGJlIHJlbG9jYXRlZCBieSBF RkkgbG9hZGVyICovCiAgICAgeGVuX3BzdGFydCA9IGlhNjRfdHBhKEtFUk5FTF9TVEFSVCk7 CiAKLSAgICBlYXJseV9zZXR1cF9hcmNoKCZjbWRsaW5lKTsKKyAgICBlYXJseV9zZXR1cF9h cmNoKChjaGFyICoqKSAmY21kbGluZSk7CiAKICAgICAvKiBXZSBpbml0aWFsaXNlIHRoZSBz ZXJpYWwgZGV2aWNlcyB2ZXJ5IGVhcmx5IHNvIHdlIGNhbiBnZXQgZGVidWdnaW5nLiAqLwog ICAgIGlmIChydW5uaW5nX29uX3NpbSkgaHBzaW1fc2VyaWFsX2luaXQoKTsKQEAgLTI0OCw5 ICsyNTgsOSBAQAogCW1heF9wYWdlKTsKIAogICAgIGhlYXBfc3RhcnQgPSBtZW1ndWFyZF9p bml0KGlhNjRfaW12YSgmX2VuZCkpOwotICAgIHByaW50ZigiQmVmb3JlIGhlYXBfc3RhcnQ6 IDB4JWx4XG4iLCBoZWFwX3N0YXJ0KTsKKyAgICBwcmludGYoIkJlZm9yZSBoZWFwX3N0YXJ0 OiAlcFxuIiwgaGVhcF9zdGFydCk7CiAgICAgaGVhcF9zdGFydCA9IF9fdmEoaW5pdF9ib290 X2FsbG9jYXRvcihfX3BhKGhlYXBfc3RhcnQpKSk7Ci0gICAgcHJpbnRmKCJBZnRlciBoZWFw X3N0YXJ0OiAweCVseFxuIiwgaGVhcF9zdGFydCk7CisgICAgcHJpbnRmKCJBZnRlciBoZWFw X3N0YXJ0OiAlcFxuIiwgaGVhcF9zdGFydCk7CiAKICAgICByZXNlcnZlX21lbW9yeSgpOwog CkBAIC0yODEsNyArMjkxLDcgQEAKICAgICBpZGxlX2RvbWFpbiA9IGRvbWFpbl9jcmVhdGUo SURMRV9ET01BSU5fSUQsIDApOwogICAgIEJVR19PTihpZGxlX2RvbWFpbiA9PSBOVUxMKTsK IAotICAgIGxhdGVfc2V0dXBfYXJjaCgmY21kbGluZSk7CisgICAgbGF0ZV9zZXR1cF9hcmNo KChjaGFyICoqKSAmY21kbGluZSk7CiAgICAgc2V0dXBfcGVyX2NwdV9hcmVhcygpOwogICAg IG1lbV9pbml0KCk7CiAKQEAgLTI5OCw2ICszMDgsOCBAQAogI2VuZGlmCiAKICNpZmRlZiBD T05GSUdfU01QCisgICAgaW50IGk7CisKICAgICBpZiAoIG9wdF9ub3NtcCApCiAgICAgewog ICAgICAgICBtYXhfY3B1cyA9IDA7CkBAIC0zNDksOSArMzYxLDkgQEAKICAgICAgKiBhYm92 ZSBvdXIgaGVhcC4gVGhlIHNlY29uZCBtb2R1bGUsIGlmIHByZXNlbnQsIGlzIGFuIGluaXRy ZCByYW1kaXNrLgogICAgICAqLwogICAgIHByaW50aygiQWJvdXQgdG8gY2FsbCBjb25zdHJ1 Y3RfZG9tMCgpXG4iKTsKLSAgICBkb20wX21lbW9yeV9zdGFydCA9IF9fdmEoaW5pdGlhbF9p bWFnZXNfc3RhcnQpOworICAgIGRvbTBfbWVtb3J5X3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcp IF9fdmEoaW5pdGlhbF9pbWFnZXNfc3RhcnQpOwogICAgIGRvbTBfbWVtb3J5X3NpemUgPSBp YTY0X2Jvb3RfcGFyYW0tPmRvbWFpbl9zaXplOwotICAgIGRvbTBfaW5pdHJkX3N0YXJ0ID0g X192YShpbml0aWFsX2ltYWdlc19zdGFydCArCisgICAgZG9tMF9pbml0cmRfc3RhcnQgPSAo dW5zaWduZWQgbG9uZykgX192YShpbml0aWFsX2ltYWdlc19zdGFydCArCiAJCQkgICAgIFBB R0VfQUxJR04oaWE2NF9ib290X3BhcmFtLT5kb21haW5fc2l6ZSkpOwogICAgIGRvbTBfaW5p dHJkX3NpemUgPSBpYTY0X2Jvb3RfcGFyYW0tPmluaXRyZF9zaXplOwogIApkaWZmIC1yIDZj NDMxMThiZGJhOCB4ZW4vYXJjaC9pYTY0L3hlbi94ZW50aW1lLmMKLS0tIGEveGVuL2FyY2gv aWE2NC94ZW4veGVudGltZS5jCUZyaSBGZWIgMjQgMjI6NDE6MDggMjAwNgorKysgYi94ZW4v YXJjaC9pYTY0L3hlbi94ZW50aW1lLmMJU3VuIEZlYiAyNiAxNjo1MzowMiAyMDA2CkBAIC0z MCw2ICszMCw5IEBACiAjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgkvLyBub3QgaW5jbHVk ZWQgYnkgeGVuL3NjaGVkLmgKICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgogCisvKiBGSVhN RTogd2hlcmUgdGhlc2UgZGVjbGFyYXRpb25zIHNob3VsZCBiZSB0aGVyZSA/ICovCitleHRl cm4gdm9pZCBpYTY0X2luaXRfaXRtKHZvaWQpOworCiBzZXFsb2NrX3QgeHRpbWVfbG9jayBf X2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCA9IFNFUUxPQ0tfVU5MT0NLRUQ7CiAKICNkZWZp bmUgVElNRV9LRUVQRVJfSUQgIDAKQEAgLTcwLDcgKzczLDcgQEAKIHNfdGltZV90IGdldF9z X3RpbWUodm9pZCkKIHsKICAgICBzX3RpbWVfdCBub3c7Ci0gICAgdW5zaWduZWQgbG9uZyBm bGFncywgc2VxOworICAgIHVuc2lnbmVkIGxvbmcgc2VxOwogCiAgICAgZG8gewogCXNlcSA9 IHJlYWRfc2VxYmVnaW4oJnh0aW1lX2xvY2spOwpAQCAtMjAyLDcgKzIwNSw3IEBACiB9CiAK IHN0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIHhlbl90aW1lcl9pcnFhY3Rpb24gPSB7Ci0JLmhh bmRsZXIgPQl4ZW5fdGltZXJfaW50ZXJydXB0LAorCS5oYW5kbGVyID0JKHZvaWQgKikgeGVu X3RpbWVyX2ludGVycnVwdCwKIAkubmFtZSA9CQkidGltZXIiCiB9OwogCkBAIC0yMTcsOCAr MjIwLDYgQEAKIC8qIExhdGUgaW5pdCBmdW5jdGlvbiAoYWZ0ZXIgYWxsIENQVXMgYXJlIGJv b3RlZCkuICovCiBpbnQgX19pbml0IGluaXRfeGVuX3RpbWUoKQogewotICAgIHN0cnVjdCB0 aW1lc3BlYyB0bTsKLQogICAgIGlhNjRfdGltZV9pbml0KCk7CiAgICAgaXRjX3NjYWxlICA9 IDEwMDAwMDAwMDBVTCA8PCAzMiA7CiAgICAgaXRjX3NjYWxlIC89IGxvY2FsX2NwdV9kYXRh LT5pdGNfZnJlcTsKQEAgLTI1Myw3ICsyNTQsNyBAQAogCX0gd2hpbGUgKHVubGlrZWx5KHJl YWRfc2VxcmV0cnkoJnh0aW1lX2xvY2ssIHNlcSkpKTsKIAogCWxvY2FsX2NwdV9kYXRhLT5p dG1fbmV4dCA9IGl0bV9uZXh0OwotCXZjcHVfc2V0X25leHRfdGltZXIoY3VycmVudCk7CisJ dmNwdV9zZXRfbmV4dF90aW1lcih2KTsKIAlyZXR1cm4gMTsKIH0KIAo= --Boundary-gFirvE2HaF7PmlwUVhiDO Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --Boundary-gFirvE2HaF7PmlwUVhiDO--