Date: Tue, 29 Apr 2014 08:50:00 -0300 From: Luiz Otavio O Souza <lists.br@gmail.com> To: freebsd-geom@freebsd.org, freebsd-embedded <freebsd-embedded@freebsd.org> Subject: [RFC] geom_uncompress(4) changes Message-ID: <CAB=2f8w2KmtfBAnC83yUS0n%2B7jq4jM2-Ub_1%2BaMAW=QczqbPwA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--001a11c382d422f85004f82d089e Content-Type: text/plain; charset=UTF-8 Hi, I've the attached changes to geom_uncompress(4) that modularise the compression support. It can now be built with support to mkuzip(8) or mkulzma(8) (or both) independently. It also make a lot easier to add the support to new compression methods on geom_uncompress. Now, building a kernel with 'options GEOM_UNCOMPRESS' (kept for backward compatibility) adds only the support to read mkulzma images. Building a kernel with 'options GEOM_UNCOMPRESS_UZIP' will add the support to read mkuzip images. The both options can be combined and they will produce a kernel which can read both formats. The geom_uncompress module is built with both compression methods enabled keeping the backward compatibility. I think we could eventually retire geom_uzip(8) as they are doing essentially the same thing (with the same implementation and code...). But this lets a lot of open questions regarding backward compatibility. Regards, Luiz --001a11c382d422f85004f82d089e Content-Type: text/plain; charset=US-ASCII; name="g_uncompress.diff" Content-Disposition: attachment; filename="g_uncompress.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hul4oxbq0 SW5kZXg6IHN5cy9jb25mL2ZpbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jb25mL2ZpbGVzCShyZXZp c2lvbiAyNjUwMTMpCisrKyBzeXMvY29uZi9maWxlcwkod29ya2luZyBjb3B5KQpAQCAtMjc0Miw3 ICsyNzQyLDkgQEAKIGdlb20vcmFpZDMvZ19yYWlkM19jdGwuYwlvcHRpb25hbCBnZW9tX3JhaWQz CiBnZW9tL3Noc2VjL2dfc2hzZWMuYwkJb3B0aW9uYWwgZ2VvbV9zaHNlYwogZ2VvbS9zdHJpcGUv Z19zdHJpcGUuYwkJb3B0aW9uYWwgZ2VvbV9zdHJpcGUKLWdlb20vdW5jb21wcmVzcy9nX3VuY29t cHJlc3MuYwlvcHRpb25hbCBnZW9tX3VuY29tcHJlc3MKK2dlb20vdW5jb21wcmVzcy9nX3VuY29t cHJlc3MuYwlvcHRpb25hbCBnZW9tX3VuY29tcHJlc3MgfCBnZW9tX3VuY29tcHJlc3NfdXppcAor Z2VvbS91bmNvbXByZXNzL2dfdW5jb21wcmVzc191bHptYS5jCW9wdGlvbmFsIGdlb21fdW5jb21w cmVzcworZ2VvbS91bmNvbXByZXNzL2dfdW5jb21wcmVzc191emlwLmMJb3B0aW9uYWwgZ2VvbV91 bmNvbXByZXNzX3V6aXAKIGNvbnRyaWIveHotZW1iZWRkZWQvZnJlZWJzZC94el9tYWxsb2MuYwlc CiAJb3B0aW9uYWwgeHpfZW1iZWRkZWQgfCBnZW9tX3VuY29tcHJlc3MgXAogCWNvbXBpbGUtd2l0 aCAiJHtOT1JNQUxfQ30gLUkkUy9jb250cmliL3h6LWVtYmVkZGVkL2ZyZWVic2QvIC1JJFMvY29u dHJpYi94ei1lbWJlZGRlZC9saW51eC9saWIveHovIC1JJFMvY29udHJpYi94ei1lbWJlZGRlZC9s aW51eC9pbmNsdWRlL2xpbnV4LyIKQEAgLTMxMzksNyArMzE0MSw3IEBACiBuZXQvdm5ldC5jCQkJ b3B0aW9uYWwgdmltYWdlCiBuZXQvemxpYi5jCQkJb3B0aW9uYWwgY3J5cHRvIHwgZ2VvbV91emlw IHwgaXBzZWMgfCBcCiAJCQkJCSBteGdlIHwgbmV0Z3JhcGhfZGVmbGF0ZSB8IFwKLQkJCQkJIGRk Yl9jdGYgfCBnemlvIHwgZ2VvbV91bmNvbXByZXNzCisJCQkJCSBkZGJfY3RmIHwgZ3ppbyB8IGdl b21fdW5jb21wcmVzc191emlwCiBuZXQ4MDIxMS9pZWVlODAyMTEuYwkJb3B0aW9uYWwgd2xhbgog bmV0ODAyMTEvaWVlZTgwMjExX2FjbC5jCW9wdGlvbmFsIHdsYW4gd2xhbl9hY2wKIG5ldDgwMjEx L2llZWU4MDIxMV9hY3Rpb24uYwlvcHRpb25hbCB3bGFuCkluZGV4OiBzeXMvY29uZi9vcHRpb25z Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29wdGlvbnMJKHJldmlzaW9uIDI2NTAxMykKKysrIHN5 cy9jb25mL29wdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQAogR0VPTV9T VFJJUEUJb3B0X2dlb20uaAogR0VPTV9TVU5MQUJFTAlvcHRfZ2VvbS5oCiBHRU9NX1VOQ09NUFJF U1MJb3B0X2dlb20uaAorR0VPTV9VTkNPTVBSRVNTX1VaSVAJb3B0X2dlb20uaAogR0VPTV9VWklQ CW9wdF9nZW9tLmgKIEdFT01fVklSU1RPUglvcHRfZ2VvbS5oCiBHRU9NX1ZPTAlvcHRfZ2VvbS5o CkluZGV4OiBzeXMvZ2VvbS91bmNvbXByZXNzL2dfdW5jb21wcmVzcy5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHN5cy9nZW9tL3VuY29tcHJlc3MvZ191bmNvbXByZXNzLmMJKHJldmlzaW9uIDI2NTAxMykKKysr IHN5cy9nZW9tL3VuY29tcHJlc3MvZ191bmNvbXByZXNzLmMJKHdvcmtpbmcgY29weSkKQEAgLTI3 LDE1ICsyNywxOSBAQAogCiAvKgogICogR0VPTSBVTkNPTVBSRVNTIG1vZHVsZSAtIHNpbXBsZSBk ZWNvbXByZXNzaW9uIG1vZHVsZSBmb3IgdXNlIHdpdGggcmVhZC1vbmx5Ci0gKiBjb3ByZXNzZWQg aW1hZ2VzIG1ha2VkIGJ5IG1rdXppcCg4KSBvciBta3Vsem1hKDgpIHV0aWxpdGllcy4KKyAqIGNv bXByZXNzZWQgaW1hZ2VzIGNyZWF0ZWQgYnkgbWt1emlwKDgpIG9yIG1rdWx6bWEoOCkgdXRpbGl0 aWVzLgogICoKLSAqIFRvIGVuYWJsZSBtb2R1bGUgaW4ga2VybmVsIGNvbmZpZywgcHV0IHRoaXMg bGluZToKLSAqIGRldmljZQlnZW9tX3VuY29tcHJlc3MKKyAqIFRvIGVuYWJsZSB1bmNvbXByZXNz IHN1cHBvcnQgaW4ga2VybmVsIGNvbmZpZywgYWRkIHRoZXNlIGxpbmVzIChmb3IgdWx6bWEKKyAq IGFuZCB1emlwIHN1cHBvcnQgcmVzcGVjdGl2ZWx5KToKKyAqIG9wdGlvbnMJZ2VvbV91bmNvbXBy ZXNzCisgKiBvcHRpb25zCWdlb21fdW5jb21wcmVzc191emlwCiAgKi8KIAogI2luY2x1ZGUgPHN5 cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCisjaW5jbHVkZSAib3B0X2dlb20u aCIKKwogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9iaW8uaD4KICNpbmNs dWRlIDxzeXMvZW5kaWFuLmg+CkBAIC00NywxMCArNTEsOCBAQAogI2luY2x1ZGUgPHN5cy9zeXN0 bS5oPgogCiAjaW5jbHVkZSA8Z2VvbS9nZW9tLmg+CisjaW5jbHVkZSA8Z2VvbS91bmNvbXByZXNz L2dfdW5jb21wcmVzcy5oPgogCi0jaW5jbHVkZSA8bmV0L3psaWIuaD4KLSNpbmNsdWRlIDxjb250 cmliL3h6LWVtYmVkZGVkL2xpbnV4L2luY2x1ZGUvbGludXgveHouaD4KLQogI2lmZGVmIEdFT01f VU5DT01QUkVTU19ERUJVRwogI2RlZmluZQlEUFJJTlRGKGEpCXByaW50ZiBhCiBleHRlcm4gaW50 IGdfZGVidWdmbGFnczsKQEAgLTU4LDEyICs2MCwxMCBAQAogI2RlZmluZQlEUFJJTlRGKGEpCiAj ZW5kaWYKIAotc3RhdGljIE1BTExPQ19ERUZJTkUoTV9HRU9NX1VOQ09NUFJFU1MsICJnZW9tX3Vu Y29tcHJlc3MiLAorTUFMTE9DX0RFRklORShNX0dFT01fVU5DT01QUkVTUywgImdlb21fdW5jb21w cmVzcyIsCiAgICAgIkdFT00gVU5DT01QUkVTUyBkYXRhIHN0cnVjdHVyZXMiKTsKIAogI2RlZmlu ZQlVTkNPTVBSRVNTX0NMQVNTX05BTUUJIlVOQ09NUFJFU1MiCi0jZGVmaW5lCUdFT01fVVpJUF9N QUpWRVIgJzInCi0jZGVmaW5lCUdFT01fVUxaTUFfTUFKVkVSICczJwogCiAvKgogICogTWF4aW11 bSBhbGxvd2VkIHZhbGlkIGJsb2NrIHNpemUgKHRvIHByZXZlbnQgZm9vdC1zaG9vdGluZykKQEAg LTcxLDI4ICs3MSwxNyBAQAogI2RlZmluZQlNQVhfQkxLU1oJKE1BWFBIWVMpCiAKIC8qCi0gKiBJ bnRlZ2VyIHZhbHVlcyAoYmxvY2sgc2l6ZSwgbnVtYmVyIG9mIGJsb2Nrcywgb2Zmc2V0cykKLSAq IGFyZSBzdG9yZWQgaW4gYmlnLWVuZGlhbiAobmV0d29yaykgb3JkZXIgb24gZGlzayBhbmQgc3Ry dWN0IGNsb29wX2hlYWRlcgotICogYW5kIGluIG5hdGl2ZSBvcmRlciBpbiBzdHJ1Y3QgZ191bmNv bXByZXNzX3NvZnRjCisgKiBJbnRlZ2VyIHZhbHVlcyAoYmxvY2sgc2l6ZSwgbnVtYmVyIG9mIGJs b2Nrcywgb2Zmc2V0cykgYXJlIHN0b3JlZCBpbiBuYXRpdmUKKyAqIG9yZGVyIGluIHN0cnVjdCBn X3VuY29tcHJlc3Nfc29mdGMuCiAgKi8KIAotI2RlZmluZQlDTE9PUF9NQUdJQ19MRU4JMTI4CiBz dGF0aWMgY2hhciBDTE9PUF9NQUdJQ19TVEFSVFtdID0gIiMhL2Jpbi9zaFxuIjsKIAotc3RydWN0 IGNsb29wX2hlYWRlciB7Ci0JY2hhciBtYWdpY1tDTE9PUF9NQUdJQ19MRU5dOwkvKiBjbG9vcCBt YWdpYyAqLwotCXVpbnQzMl90IGJsa3N6OwkJCS8qIGJsb2NrIHNpemUgKi8KLQl1aW50MzJfdCBu YmxvY2tzOwkJLyogbnVtYmVyIG9mIGJsb2NrcyAqLwotfTsKLQogc3RydWN0IGdfdW5jb21wcmVz c19zb2Z0YyB7CiAJdWludDMyX3QgYmxrc3o7CQkJLyogYmxvY2sgc2l6ZSAqLwogCXVpbnQzMl90 IG5ibG9ja3M7CQkvKiBudW1iZXIgb2YgYmxvY2tzICovCiAJdWludDY0X3QgKm9mZnNldHM7Ci0J ZW51bSB7Ci0JCUdFT01fVVpJUCA9IDEsCi0JCUdFT01fVUxaTUEKLQl9IHR5cGU7CisJaW50IHR5 cGU7CiAKIAlzdHJ1Y3QgbXR4IGxhc3RfbXR4OwogCXVpbnQzMl90IGxhc3RfYmxrOwkJLyogbGFz dCBibGsgbm8gKi8KQEAgLTk5LDExICs4OCwxNiBAQAogCWNoYXIgKmxhc3RfYnVmOwkJCS8qIGxh c3QgYmxrIGRhdGEgKi8KIAlpbnQgcmVxX3RvdGFsOwkJCS8qIHRvdGFsIHJlcXVlc3RzICovCiAJ aW50IHJlcV9jYWNoZWQ7CQkJLyogY2FjaGVkIHJlcXVlc3RzICovCit9OwogCi0JLyogWFogZGVj b2RlciBzdHJ1Y3RzICovCi0Jc3RydWN0IHh6X2J1ZiAqYjsKLQlzdHJ1Y3QgeHpfZGVjICpzOwot CXpfc3RyZWFtICp6czsKK3N0YXRpYyBzdHJ1Y3QgZ191bmNvbXByZXNzX2Rlc2MgKmdfdW5jb21w cmVzc1tdID0geworI2lmZGVmIEdFT01fVU5DT01QUkVTUworCSZnX3VuY29tcHJlc3NfdWx6bWEs CisjZW5kaWYKKyNpZmRlZiBHRU9NX1VOQ09NUFJFU1NfVVpJUAorCSZnX3VuY29tcHJlc3NfdXpp cCwKKyNlbmRpZgorCU5VTEwKIH07CiAKIHN0YXRpYyB2b2lkCkBAIC0xMTksMjUgKzExMyw4IEBA CiAJCXNjLT5vZmZzZXRzID0gMDsKIAl9CiAKLQlzd2l0Y2ggKHNjLT50eXBlKSB7Ci0JY2FzZSBH RU9NX1VMWk1BOgotCQlpZiAoc2MtPmIpIHsKLQkJCWZyZWUoc2MtPmIsIE1fR0VPTV9VTkNPTVBS RVNTKTsKLQkJCXNjLT5iID0gMDsKLQkJfQotCQlpZiAoc2MtPnMpIHsKLQkJCXh6X2RlY19lbmQo c2MtPnMpOwotCQkJc2MtPnMgPSAwOwotCQl9Ci0JCWJyZWFrOwotCWNhc2UgR0VPTV9VWklQOgot CQlpZiAoc2MtPnpzKSB7Ci0JCQlpbmZsYXRlRW5kKHNjLT56cyk7Ci0JCQlmcmVlKHNjLT56cywg TV9HRU9NX1VOQ09NUFJFU1MpOwotCQkJc2MtPnpzID0gMDsKLQkJfQotCQlicmVhazsKLQl9CisJ LyogQ2FsbCB0aGUgZnJlZSBtZXRob2QuICovCisJZ191bmNvbXByZXNzW3NjLT50eXBlXS0+ZF9m cmVlKGdfdW5jb21wcmVzc1tzYy0+dHlwZV0pOwogCiAJbXR4X2Rlc3Ryb3koJnNjLT5sYXN0X210 eCk7CiAJZnJlZShzYy0+bGFzdF9idWYsIE1fR0VPTV9VTkNPTVBSRVNTKTsKQEAgLTE0NCwyMyAr MTIxLDcgQEAKIAlmcmVlKHNjLCBNX0dFT01fVU5DT01QUkVTUyk7CiB9CiAKLXN0YXRpYyB2b2lk ICoKLXpfYWxsb2Modm9pZCAqbmlsLCB1X2ludCB0eXBlLCB1X2ludCBzaXplKQotewotCXZvaWQg KnB0cjsKLQotCXB0ciA9IG1hbGxvYyh0eXBlICogc2l6ZSwgTV9HRU9NX1VOQ09NUFJFU1MsIE1f Tk9XQUlUKTsKLQlyZXR1cm4gKHB0cik7Ci19Ci0KIHN0YXRpYyB2b2lkCi16X2ZyZWUodm9pZCAq bmlsLCB2b2lkICpwdHIpCi17Ci0KLQlmcmVlKHB0ciwgTV9HRU9NX1VOQ09NUFJFU1MpOwotfQot Ci1zdGF0aWMgdm9pZAogZ191bmNvbXByZXNzX2RvbmUoc3RydWN0IGJpbyAqYnApCiB7CiAJc3Ry dWN0IGdfdW5jb21wcmVzc19zb2Z0YyAqc2M7CkBAIC0yNTQsMzMgKzIxNSw5IEBACiAJCQloZXhk dW1wKGJwLT5iaW9fZGF0YSArIHBvcywgZGxlbiwgMCwgMCk7CiAjZW5kaWYKIAotCQlzd2l0Y2gg KHNjLT50eXBlKSB7Ci0JCWNhc2UgR0VPTV9VTFpNQToKLQkJCXNjLT5iLT5pbiA9IGJwLT5iaW9f ZGF0YSArIHBvczsKLQkJCXNjLT5iLT5vdXQgPSBzYy0+bGFzdF9idWY7Ci0JCQlzYy0+Yi0+aW5f cG9zID0gc2MtPmItPm91dF9wb3MgPSAwOwotCQkJc2MtPmItPmluX3NpemUgPSBkbGVuOwotCQkJ c2MtPmItPm91dF9zaXplID0gKHNpemVfdCktMTsKLQotCQkJZXJyID0gKHh6X2RlY19ydW4oc2Mt PnMsIHNjLT5iKSAhPSBYWl9TVFJFQU1fRU5EKSA/Ci0JCQkgICAgMSA6IDA7Ci0JCQkvKiBUT0RP IGRlY29kZXIgcmVjb3ZlcnksIGlmIG5lZWRlZCAqLwotCQkJYnJlYWs7Ci0JCWNhc2UgR0VPTV9V WklQOgotCQkJc2MtPnpzLT5uZXh0X2luID0gYnAtPmJpb19kYXRhICsgcG9zOwotCQkJc2MtPnpz LT5hdmFpbF9pbiA9IGRsZW47Ci0JCQlzYy0+enMtPm5leHRfb3V0ID0gc2MtPmxhc3RfYnVmOwot CQkJc2MtPnpzLT5hdmFpbF9vdXQgPSBzYy0+Ymxrc3o7Ci0KLQkJCWVyciA9IChpbmZsYXRlKHNj LT56cywgWl9GSU5JU0gpICE9IFpfU1RSRUFNX0VORCkgPwotCQkJICAgIDEgOiAwOwotCQkJaWYg KChlcnIpIHx8IChpbmZsYXRlUmVzZXQoc2MtPnpzKSAhPSBaX09LKSkKLQkJCQlwcmludGYoIiVz OiBVWklQIGRlY29kZXIgcmVzZXQgZmFpbGVkXG4iLAotCQkJCSAgICAgZ3AtPm5hbWUpOwotCQkJ YnJlYWs7Ci0JCX0KLQotCQlpZiAoZXJyKSB7CisJCWlmIChnX3VuY29tcHJlc3Nbc2MtPnR5cGVd LT5kX2RlY29tKGdfdW5jb21wcmVzc1tzYy0+dHlwZV0sCisJCSAgICBncC0+bmFtZSwgYnAtPmJp b19kYXRhICsgcG9zLCBsZW4sIHNjLT5sYXN0X2J1ZiwKKwkJICAgIHNjLT5ibGtzeikgIT0gMCkg ewogCQkJc2MtPmxhc3RfYmxrID0gLTE7CiAJCQltdHhfdW5sb2NrKCZzYy0+bGFzdF9tdHgpOwog CQkJRFBSSU5URigoIiVzOiBkb25lOiBpbmZsYXRlIGZhaWxlZCwgY29kZT0lZFxuIiwKQEAgLTI5 MSw3ICsyMjgsNyBAQAogCiAjaWZkZWYgR0VPTV9VTkNPTVBSRVNTX0RFQlVHCiAJCWlmIChnX2Rl YnVnZmxhZ3MgJiAzMikKLQkJCWhleGR1bXAoc2MtPmxhc3RfYnVmLCBzYy0+Yi0+b3V0X3NpemUs IDAsIDApOworCQkJaGV4ZHVtcChzYy0+bGFzdF9idWYsIHNjLT5ibGtzeiwgMCwgMCk7CiAjZW5k aWYKIAogCQlzYy0+bGFzdF9ibGsgPSBpOwpAQCAtNTIxLDI0ICs0NTgsMTYgQEAKIAkJZ290byBl cnI7CiAJfQogCi0Jc3dpdGNoIChoZWFkZXItPm1hZ2ljWzB4MGJdKSB7Ci0JY2FzZSAnTCc6Ci0J CXR5cGUgPSBHRU9NX1VMWk1BOwotCQlpZiAoaGVhZGVyLT5tYWdpY1sweDBjXSA8IEdFT01fVUxa TUFfTUFKVkVSKSB7Ci0JCQlEUFJJTlRGKCgiJXM6IGltYWdlIHZlcnNpb24gdG9vIG9sZFxuIiwg Z3AtPm5hbWUpKTsKKwlmb3IgKGkgPSAwOyBnX3VuY29tcHJlc3NbaV0gIT0gTlVMTDsgaSsrKSB7 CisJCWVycm9yID0gZ191bmNvbXByZXNzW2ldLT5kX3Rhc3RlKGhlYWRlciwgZ3AtPm5hbWUpOwor CQlpZiAoZXJyb3IgPT0gMSkgeworCQkJLyogTWF0Y2guICovCisJCQl0eXBlID0gaTsKKwkJCWJy ZWFrOworCQl9IGVsc2UgaWYgKGVycm9yID09IC0xKQogCQkJZ290byBlcnI7Ci0JCX0KLQkJcHJp bnRmKCIlczogR0VPTV9VTFpNQSBpbWFnZSBmb3VuZFxuIiwgZ3AtPm5hbWUpOwotCQlicmVhazsK LQljYXNlICdWJzoKLQkJdHlwZSA9IEdFT01fVVpJUDsKLQkJaWYgKGhlYWRlci0+bWFnaWNbMHgw Y10gPCBHRU9NX1VaSVBfTUFKVkVSKSB7Ci0JCQlEUFJJTlRGKCgiJXM6IGltYWdlIHZlcnNpb24g dG9vIG9sZFxuIiwgZ3AtPm5hbWUpKTsKLQkJCWdvdG8gZXJyOwotCQl9Ci0JCXByaW50ZigiJXM6 IEdFT01fVVpJUCBpbWFnZSBmb3VuZFxuIiwgZ3AtPm5hbWUpOwotCQlicmVhazsKLQlkZWZhdWx0 OgorCX0KKwlpZiAoZ191bmNvbXByZXNzW2ldID09IE5VTEwpIHsKIAkJRFBSSU5URigoIiVzOiB1 bnN1cHBvcnRlZCBpbWFnZSB0eXBlXG4iLCBncC0+bmFtZSkpOwogCQlnb3RvIGVycjsKIAl9CkBA IC01ODgsMjMgKzUxNyw5IEBACiAJc2MtPnJlcV90b3RhbCA9IDA7CiAJc2MtPnJlcV9jYWNoZWQg PSAwOwogCi0Jc3dpdGNoIChzYy0+dHlwZSkgewotCWNhc2UgR0VPTV9VTFpNQToKLQkJeHpfY3Jj MzJfaW5pdCgpOwotCQlzYy0+cyA9IHh6X2RlY19pbml0KFhaX1NJTkdMRSwgMCk7Ci0JCXNjLT5i ID0gKHN0cnVjdCB4el9idWYqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHh6X2J1ZiksCi0JCSAgICBN X0dFT01fVU5DT01QUkVTUywgTV9XQUlUT0spOwotCQlicmVhazsKLQljYXNlIEdFT01fVVpJUDoK LQkJc2MtPnpzID0gKHpfc3RyZWFtICopbWFsbG9jKHNpemVvZih6X3N0cmVhbSksCi0JCSAgICBN X0dFT01fVU5DT01QUkVTUywgTV9XQUlUT0spOwotCQlzYy0+enMtPnphbGxvYyA9IHpfYWxsb2M7 Ci0JCXNjLT56cy0+emZyZWUgPSB6X2ZyZWU7Ci0JCWlmIChpbmZsYXRlSW5pdChzYy0+enMpICE9 IFpfT0spIHsKLQkJCWdvdG8gZXJyOwotCQl9Ci0JCWJyZWFrOwotCX0KKwkvKiBJbml0aWFsaXpl IHRoZSBjb21wcmVzc2lvbiBtZXRob2QuICovCisJaWYgKGdfdW5jb21wcmVzc1tzYy0+dHlwZV0t PmRfaW5pdChnX3VuY29tcHJlc3Nbc2MtPnR5cGVdKSAhPSAwKQorCQlnb3RvIGVycjsKIAogCWdf dG9wb2xvZ3lfbG9jaygpOwogCXBwMiA9IGdfbmV3X3Byb3ZpZGVyZihncCwgIiVzIiwgZ3AtPm5h bWUpOwpJbmRleDogc3lzL21vZHVsZXMvZ2VvbS9nZW9tX3VuY29tcHJlc3MvTWFrZWZpbGUKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gc3lzL21vZHVsZXMvZ2VvbS9nZW9tX3VuY29tcHJlc3MvTWFrZWZpbGUJKHJl dmlzaW9uIDI2NTAxMykKKysrIHN5cy9tb2R1bGVzL2dlb20vZ2VvbV91bmNvbXByZXNzL01ha2Vm aWxlCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw5IEBACiBDRkxBR1MrPSAtSSR7LkNVUkRJ Un0vLi4vLi4vLi4vZ2VvbS91bmNvbXByZXNzLyBcCiAJLUkkey5DVVJESVJ9Ly4uLy4uLy4uL2Nv bnRyaWIveHotZW1iZWRkZWQvZnJlZWJzZCBcCiAJLUkkey5DVVJESVJ9Ly4uLy4uLy4uL2NvbnRy aWIveHotZW1iZWRkZWQvbGludXgvbGliL3h6LwotU1JDUz0JZ191bmNvbXByZXNzLmMgeHpfY3Jj MzIuYyB4el9kZWNfYmNqLmMgeHpfZGVjX2x6bWEyLmMgeHpfZGVjX3N0cmVhbS5jIFwKLSAgICB4 el9tYWxsb2MuYworQ0ZMQUdTKz0tREdFT01fVU5DT01QUkVTUyAtREdFT01fVU5DT01QUkVTU19V WklQCitTUkNTPQlnX3VuY29tcHJlc3MuYyBnX3VuY29tcHJlc3NfdWx6bWEuYyBnX3VuY29tcHJl c3NfdXppcC5jIG9wdF9nZW9tLmgKK1NSQ1MrPQl4el9jcmMzMi5jIHh6X2RlY19iY2ouYyB4el9k ZWNfbHptYTIuYyB4el9kZWNfc3RyZWFtLmMgeHpfbWFsbG9jLmMKIFNSQ1MrPQl4ei5oIHh6X2Nv bmZpZy5oIHh6X2x6bWEyLmggeHpfbWFsbG9jLmggeHpfcHJpdmF0ZS5oIHh6X3N0cmVhbS5oCiAK IC5pbmNsdWRlIDxic2Qua21vZC5taz4KLS0tIC9kZXYvbnVsbAkyMDE0LTA0LTI3IDEwOjMzOjAw LjAwMDAwMDAwMCAtMDMwMAorKysgc3lzL2dlb20vdW5jb21wcmVzcy9nX3VuY29tcHJlc3MuaAky MDE0LTA0LTI2IDE2OjE4OjM0LjgyMTU0OTUyNCAtMDMwMApAQCAtMCwwICsxLDcxIEBACisvKi0K KyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEyIEFsZWtzYW5kciBSeWJhbGtvCisgKiBDb3B5cmln aHQgKGMpIDIwMDQgTWF4IEtob24KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENP TlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC VVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZ LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g QU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl ZiBfR19VTkNPTVBSRVNTX0hfCisjZGVmaW5lIF9HX1VOQ09NUFJFU1NfSF8KKworTUFMTE9DX0RF Q0xBUkUoTV9HRU9NX1VOQ09NUFJFU1MpOworCisjZGVmaW5lCUNMT09QX01BR0lDX0xFTgkxMjgK KyNkZWZpbmUJQ0xPT1BfVFlQRQkweDBiCisjZGVmaW5lCUNMT09QX1ZFUlNJT04JMHgwYworCisv KgorICogSW50ZWdlciB2YWx1ZXMgKGJsb2NrIHNpemUsIG51bWJlciBvZiBibG9ja3MsIG9mZnNl dHMpIGFyZSBzdG9yZWQgaW4KKyAqIGJpZy1lbmRpYW4gKG5ldHdvcmspIG9yZGVyIG9uIGRpc2sg YW5kIHN0cnVjdCBjbG9vcF9oZWFkZXIuCisgKi8KK3N0cnVjdCBjbG9vcF9oZWFkZXIgeworCWNo YXIgbWFnaWNbQ0xPT1BfTUFHSUNfTEVOXTsJLyogY2xvb3AgbWFnaWMgKi8KKwl1aW50MzJfdCBi bGtzejsJCQkvKiBibG9jayBzaXplICovCisJdWludDMyX3QgbmJsb2NrczsJCS8qIG51bWJlciBv ZiBibG9ja3MgKi8KK307IAorCitzdHJ1Y3QgZ191bmNvbXByZXNzX2Rlc2M7CisKK3R5cGVkZWYg aW50IGdfdW5jb21wcmVzc19kZWNvbV90IChzdHJ1Y3QgZ191bmNvbXByZXNzX2Rlc2MgKiwgY2hh ciAqLAorCWNhZGRyX3QsIG9mZl90LCBjYWRkcl90LCBvZmZfdCk7Cit0eXBlZGVmIHZvaWQgZ191 bmNvbXByZXNzX2ZyZWVfdCAoc3RydWN0IGdfdW5jb21wcmVzc19kZXNjICopOwordHlwZWRlZiBp bnQgZ191bmNvbXByZXNzX2luaXRfdCAoc3RydWN0IGdfdW5jb21wcmVzc19kZXNjICopOwordHlw ZWRlZiBpbnQgZ191bmNvbXByZXNzX3Rhc3RlX3QgKHN0cnVjdCBjbG9vcF9oZWFkZXIgKiwgY2hh ciAqKTsKKworc3RydWN0IGdfdW5jb21wcmVzc19kZXNjIHsKKwl2b2lkCQkJKmRfZGF0YTsKKwln X3VuY29tcHJlc3NfZGVjb21fdAkqZF9kZWNvbTsKKwlnX3VuY29tcHJlc3NfZnJlZV90CSpkX2Zy ZWU7CisJZ191bmNvbXByZXNzX2luaXRfdAkqZF9pbml0OworCWdfdW5jb21wcmVzc190YXN0ZV90 CSpkX3Rhc3RlOworfTsKKworLyogU3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZHMuICovCisj aWZkZWYgR0VPTV9VTkNPTVBSRVNTCitleHRlcm4gc3RydWN0IGdfdW5jb21wcmVzc19kZXNjIGdf dW5jb21wcmVzc191bHptYTsKKyNlbmRpZgorI2lmZGVmIEdFT01fVU5DT01QUkVTU19VWklQCitl eHRlcm4gc3RydWN0IGdfdW5jb21wcmVzc19kZXNjIGdfdW5jb21wcmVzc191emlwOworI2VuZGlm CisKKyNlbmRpZiAvKiBfR19VTkNPTVBSRVNTX0hfICovCi0tLSAvZGV2L251bGwJMjAxNC0wNC0y NyAxMDozMzowMC4wMDAwMDAwMDAgLTAzMDAKKysrIHN5cy9nZW9tL3VuY29tcHJlc3MvZ191bmNv bXByZXNzX3Vsem1hLmMJMjAxNC0wNC0yNiAxNjoxOTowNC4wMDM1NDc3MTAgLTAzMDAKQEAgLTAs MCArMSwxMjkgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTIgQWxla3NhbmRyIFJ5 YmFsa28KKyAqIENvcHlyaWdodCAoYykgMjAwNCBNYXggS2hvbgorICogQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5 IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH RS4KKyAqLworCisvKgorICogR0VPTSBVTFpNQSBtb2R1bGUgLSBzaW1wbGUgZGVjb21wcmVzc2lv biBtb2R1bGUgZm9yIHVzZSB3aXRoIHJlYWQtb25seQorICogY29tcHJlc3NlZCBpbWFnZXMgY3Jl YXRlZCBieSBta3Vsem1hKDgpLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJT RElEKCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5 cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CisjaW5jbHVkZSA8c3lzL3N5c3Rt Lmg+CisKKyNpbmNsdWRlIDxnZW9tL3VuY29tcHJlc3MvZ191bmNvbXByZXNzLmg+CisKKyNpbmNs dWRlIDxjb250cmliL3h6LWVtYmVkZGVkL2xpbnV4L2luY2x1ZGUvbGludXgveHouaD4KKworI2Rl ZmluZQlHRU9NX1VMWk1BX01BSlZFUgknMycKKworc3RydWN0IGdfdW5jb21wcmVzc191bHptYV9z b2Z0YyB7CisJLyogWFogZGVjb2RlciBzdHJ1Y3RzICovCisJc3RydWN0IHh6X2J1ZiAqYjsKKwlz dHJ1Y3QgeHpfZGVjICpzOworfTsKKworc3RhdGljIHZvaWQKK2dfdW5jb21wcmVzc191bHptYV9m cmVlKHN0cnVjdCBnX3VuY29tcHJlc3NfZGVzYyAqdW5jb21wcmVzcykKK3sKKwlzdHJ1Y3QgZ191 bmNvbXByZXNzX3Vsem1hX3NvZnRjICpzYzsKKyAgICAgICAgICAgICAgICAKKwlzYyA9IChzdHJ1 Y3QgZ191bmNvbXByZXNzX3Vsem1hX3NvZnRjICopdW5jb21wcmVzcy0+ZF9kYXRhOworCWlmIChz YykgeworCQlpZiAoc2MtPmIpIHsKKwkJCWZyZWUoc2MtPmIsIE1fR0VPTV9VTkNPTVBSRVNTKTsK KwkJCXNjLT5iID0gTlVMTDsKKwkJfQorCQlpZiAoc2MtPnMpIHsKKwkJCXh6X2RlY19lbmQoc2Mt PnMpOworCQkJc2MtPnMgPSBOVUxMOworCQl9CisJCWZyZWUoc2MsIE1fR0VPTV9VTkNPTVBSRVNT KTsKKwkJdW5jb21wcmVzcy0+ZF9kYXRhID0gTlVMTDsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK2df dW5jb21wcmVzc191bHptYV9pbml0KHN0cnVjdCBnX3VuY29tcHJlc3NfZGVzYyAqdW5jb21wcmVz cykKK3sKKwlzdHJ1Y3QgZ191bmNvbXByZXNzX3Vsem1hX3NvZnRjICpzYzsKKworCXNjID0gKHN0 cnVjdCBnX3VuY29tcHJlc3NfdWx6bWFfc29mdGMgKiltYWxsb2Moc2l6ZW9mKCpzYyksCisJICAg IE1fR0VPTV9VTkNPTVBSRVNTLCBNX1dBSVRPSyB8IE1fWkVSTyk7CisJeHpfY3JjMzJfaW5pdCgp OworCXNjLT5zID0geHpfZGVjX2luaXQoWFpfU0lOR0xFLCAwKTsKKwlzYy0+YiA9IChzdHJ1Y3Qg eHpfYnVmICopbWFsbG9jKHNpemVvZihzdHJ1Y3QgeHpfYnVmKSwKKwkgICAgTV9HRU9NX1VOQ09N UFJFU1MsIE1fV0FJVE9LKTsKKworCXVuY29tcHJlc3MtPmRfZGF0YSA9ICh2b2lkICopc2M7CisK KwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitnX3VuY29tcHJlc3NfdWx6bWFfZGVjb20o c3RydWN0IGdfdW5jb21wcmVzc19kZXNjICp1bmNvbXByZXNzLCBjaGFyICpwcm92aWRlciwKKwlj YWRkcl90IGluLCBvZmZfdCBpbmxlbiwgY2FkZHJfdCBvdXQsIG9mZl90IG91dGxlbikKK3sKKwlz dHJ1Y3QgZ191bmNvbXByZXNzX3Vsem1hX3NvZnRjICpzYzsKKworCXNjID0gKHN0cnVjdCBnX3Vu Y29tcHJlc3NfdWx6bWFfc29mdGMgKil1bmNvbXByZXNzLT5kX2RhdGE7CisJc2MtPmItPmluID0g aW47CisJc2MtPmItPm91dCA9IG91dDsKKwlzYy0+Yi0+aW5fcG9zID0gc2MtPmItPm91dF9wb3Mg PSAwOworCXNjLT5iLT5pbl9zaXplID0gaW5sZW47CisJc2MtPmItPm91dF9zaXplID0gKHNpemVf dCktMTsKKworCWlmICh4el9kZWNfcnVuKHNjLT5zLCBzYy0+YikgIT0gWFpfU1RSRUFNX0VORCkK KwkJcmV0dXJuICgtMSk7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitnX3VuY29t cHJlc3NfdWx6bWFfdGFzdGUoc3RydWN0IGNsb29wX2hlYWRlciAqaGVhZGVyLCBjaGFyICpwcm92 aWRlcikKK3sgICAgICAgCisKKwlpZiAoaGVhZGVyLT5tYWdpY1tDTE9PUF9UWVBFXSAhPSAnTCcp CisJCXJldHVybiAoMCk7CisJaWYgKGhlYWRlci0+bWFnaWNbQ0xPT1BfVkVSU0lPTl0gPCBHRU9N X1VMWk1BX01BSlZFUikgeworCQlwcmludGYoIiVzOiBpbWFnZSB2ZXJzaW9uIHRvbyBvbGRcbiIs IHByb3ZpZGVyKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCXByaW50ZigiJXM6IEdFT01fVUxaTUEg aW1hZ2UgZm91bmRcbiIsIHByb3ZpZGVyKTsKKworCXJldHVybiAoMSk7Cit9CisKK3N0cnVjdCBn X3VuY29tcHJlc3NfZGVzYyBnX3VuY29tcHJlc3NfdWx6bWEgPSB7CisJLmRfZGVjb20gPSBnX3Vu Y29tcHJlc3NfdWx6bWFfZGVjb20sCisJLmRfZnJlZSA9IGdfdW5jb21wcmVzc191bHptYV9mcmVl LAorCS5kX2luaXQgPSBnX3VuY29tcHJlc3NfdWx6bWFfaW5pdCwKKwkuZF90YXN0ZSA9IGdfdW5j b21wcmVzc191bHptYV90YXN0ZSwKK307Ci0tLSAvZGV2L251bGwJMjAxNC0wNC0yNyAxMDozMzow MC4wMDAwMDAwMDAgLTAzMDAKKysrIHN5cy9nZW9tL3VuY29tcHJlc3MvZ191bmNvbXByZXNzX3V6 aXAuYwkyMDE0LTA0LTI2IDE2OjQwOjExLjQxMzQ2Mjg1NSAtMDMwMApAQCAtMCwwICsxLDE0OCBA QAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiBBbGVrc2FuZHIgUnliYWxrbworICog Q29weXJpZ2h0IChjKSAyMDA0IE1heCBLaG9uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQg Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK Ky8qCisgKiBHRU9NIFVaSVAgbW9kdWxlIC0gc2ltcGxlIGRlY29tcHJlc3Npb24gbW9kdWxlIGZv ciB1c2Ugd2l0aCByZWFkLW9ubHkKKyAqIGNvbXByZXNzZWQgaW1hZ2VzIGNyZWF0ZWQgYnkgbWt1 emlwKDgpLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJT RCQiKTsKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4K KyNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisKKyNpbmNs dWRlIDxnZW9tL3VuY29tcHJlc3MvZ191bmNvbXByZXNzLmg+CisKKyNpbmNsdWRlIDxuZXQvemxp Yi5oPgorCisjZGVmaW5lCUdFT01fVVpJUF9NQUpWRVIJJzInCisKK3N0cnVjdCBnX3VuY29tcHJl c3NfdXppcF9zb2Z0YyB7CisJel9zdHJlYW0gKnpzOworfTsKKworc3RhdGljIHZvaWQKK2dfdW5j b21wcmVzc191emlwX2ZyZWUoc3RydWN0IGdfdW5jb21wcmVzc19kZXNjICp1bmNvbXByZXNzKQor eworCXN0cnVjdCBnX3VuY29tcHJlc3NfdXppcF9zb2Z0YyAqc2M7CisKKwlzYyA9IChzdHJ1Y3Qg Z191bmNvbXByZXNzX3V6aXBfc29mdGMgKil1bmNvbXByZXNzLT5kX2RhdGE7CisJaWYgKHNjKSB7 CisJCWlmIChzYy0+enMpIHsKKwkJCWluZmxhdGVFbmQoc2MtPnpzKTsKKwkJCWZyZWUoc2MtPnpz LCBNX0dFT01fVU5DT01QUkVTUyk7CisJCQlzYy0+enMgPSBOVUxMOworCQl9CisJCWZyZWUoc2Ms IE1fR0VPTV9VTkNPTVBSRVNTKTsKKwkJdW5jb21wcmVzcy0+ZF9kYXRhID0gTlVMTDsKKwl9Cit9 CisKK3N0YXRpYyB2b2lkICoKK3pfYWxsb2Modm9pZCAqbmlsLCB1X2ludCB0eXBlLCB1X2ludCBz aXplKQoreworCXZvaWQgKnB0cjsKKworCXB0ciA9IG1hbGxvYyh0eXBlICogc2l6ZSwgTV9HRU9N X1VOQ09NUFJFU1MsIE1fTk9XQUlUKTsKKwlyZXR1cm4gKHB0cik7Cit9CisKK3N0YXRpYyB2b2lk Cit6X2ZyZWUodm9pZCAqbmlsLCB2b2lkICpwdHIpCit7CisKKwlmcmVlKHB0ciwgTV9HRU9NX1VO Q09NUFJFU1MpOworfQorCitzdGF0aWMgaW50CitnX3VuY29tcHJlc3NfdXppcF9pbml0KHN0cnVj dCBnX3VuY29tcHJlc3NfZGVzYyAqdW5jb21wcmVzcykKK3sKKwlzdHJ1Y3QgZ191bmNvbXByZXNz X3V6aXBfc29mdGMgKnNjOworCisJc2MgPSAoc3RydWN0IGdfdW5jb21wcmVzc191emlwX3NvZnRj ICopbWFsbG9jKHNpemVvZigqc2MpLAorCSAgICBNX0dFT01fVU5DT01QUkVTUywgTV9XQUlUT0sg fCBNX1pFUk8pOworCXNjLT56cyA9ICh6X3N0cmVhbSAqKW1hbGxvYyhzaXplb2Yoel9zdHJlYW0p LAorCSAgICBNX0dFT01fVU5DT01QUkVTUywgTV9XQUlUT0spOworCXNjLT56cy0+emFsbG9jID0g el9hbGxvYzsKKwlzYy0+enMtPnpmcmVlID0gel9mcmVlOworCWlmIChpbmZsYXRlSW5pdChzYy0+ enMpICE9IFpfT0spIHsKKwkJZnJlZSAoc2MtPnpzLCBNX0dFT01fVU5DT01QUkVTUyk7CisJCWZy ZWUgKHNjLCBNX0dFT01fVU5DT01QUkVTUyk7CisJCXJldHVybiAoLTEpOworCX0KKworCXVuY29t cHJlc3MtPmRfZGF0YSA9ICh2b2lkICopc2M7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMg aW50CitnX3VuY29tcHJlc3NfdXppcF9kZWNvbShzdHJ1Y3QgZ191bmNvbXByZXNzX2Rlc2MgKnVu Y29tcHJlc3MsIGNoYXIgKnByb3ZpZGVyLAorCWNhZGRyX3QgaW4sIG9mZl90IGlubGVuLCBjYWRk cl90IG91dCwgb2ZmX3Qgb3V0bGVuKQoreworCWludCBlcnI7CisJc3RydWN0IGdfdW5jb21wcmVz c191emlwX3NvZnRjICpzYzsKKworCXNjID0gKHN0cnVjdCBnX3VuY29tcHJlc3NfdXppcF9zb2Z0 YyAqKXVuY29tcHJlc3MtPmRfZGF0YTsKKwlzYy0+enMtPm5leHRfaW4gPSBpbjsKKwlzYy0+enMt PmF2YWlsX2luID0gaW5sZW47CisJc2MtPnpzLT5uZXh0X291dCA9IG91dDsKKwlzYy0+enMtPmF2 YWlsX291dCA9IG91dGxlbjsKKworCWVyciA9IChpbmZsYXRlKHNjLT56cywgWl9GSU5JU0gpICE9 IFpfU1RSRUFNX0VORCkgPyAgMSA6IDA7CisJaWYgKGVyciB8fCBpbmZsYXRlUmVzZXQoc2MtPnpz KSAhPSBaX09LKSB7CisJCXByaW50ZigiJXM6IFVaSVAgZGVjb2RlciByZXNldCBmYWlsZWRcbiIs IHByb3ZpZGVyKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJcmV0dXJuICgwKTsKK30KKworc3Rh dGljIGludAorZ191bmNvbXByZXNzX3V6aXBfdGFzdGUoc3RydWN0IGNsb29wX2hlYWRlciAqaGVh ZGVyLCBjaGFyICpwcm92aWRlcikKK3sKKworCWlmIChoZWFkZXItPm1hZ2ljW0NMT09QX1RZUEVd ICE9ICdWJykKKwkJcmV0dXJuICgwKTsKKwlpZiAoaGVhZGVyLT5tYWdpY1tDTE9PUF9WRVJTSU9O XSA8IEdFT01fVVpJUF9NQUpWRVIpIHsKKwkJcHJpbnRmKCIlczogaW1hZ2UgdmVyc2lvbiB0b28g b2xkXG4iLCBwcm92aWRlcik7CisJCXJldHVybiAoLTEpOworCX0KKwlwcmludGYoIiVzOiBHRU9N X1VaSVAgaW1hZ2UgZm91bmRcbiIsIHByb3ZpZGVyKTsKKworCXJldHVybiAoMSk7Cit9CisKK3N0 cnVjdCBnX3VuY29tcHJlc3NfZGVzYyBnX3VuY29tcHJlc3NfdXppcCA9IHsKKwkuZF9kZWNvbSA9 IGdfdW5jb21wcmVzc191emlwX2RlY29tLAorCS5kX2ZyZWUgPSBnX3VuY29tcHJlc3NfdXppcF9m cmVlLAorCS5kX2luaXQgPSBnX3VuY29tcHJlc3NfdXppcF9pbml0LAorCS5kX3Rhc3RlID0gZ191 bmNvbXByZXNzX3V6aXBfdGFzdGUsCit9OwpJbmRleDogc2hhcmUvbWFuL21hbjQvZ2VvbV91bmNv bXByZXNzLjQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gc2hhcmUvbWFuL21hbjQvZ2VvbV91bmNvbXByZXNzLjQJ KHJldmlzaW9uIDI2NTAxMykKKysrIHNoYXJlL21hbi9tYW40L2dlb21fdW5jb21wcmVzcy40CSh3 b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAuXCIKIC5cIiAkRnJlZUJTRCQKIC5cIgot LkRkIEphbnVhcnkgOSwgMjAxNAorLkRkIEFwcmlsIDI3LCAyMDE0CiAuRHQgR0VPTV9VTkNPTVBS RVNTIDQKIC5PcwogLlNoIE5BTUUKQEAgLTMxLDEwICszMSwxMSBAQAogLk5tIGdlb21fdW5jb21w cmVzcwogLk5kICJHRU9NIGJhc2VkIGNvbXByZXNzZWQgZGlzayBpbWFnZXMiCiAuU2ggU1lOT1BT SVMKLVRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgaW50byB0aGUga2VybmVsLCBwbGFjZSB0aGUgZm9s bG93aW5nIGxpbmUgaW4geW91cgorVG8gY29tcGlsZSB0aGlzIGRyaXZlciBpbnRvIHRoZSBrZXJu ZWwsIHBsYWNlIHRoZSBmb2xsb3dpbmcgbGluZXMgaW4geW91cgoga2VybmVsIGNvbmZpZ3VyYXRp b24gZmlsZToKIC5CZCAtcmFnZ2VkIC1vZmZzZXQgaW5kZW50CiAuQ2QgIm9wdGlvbnMgR0VPTV9V TkNPTVBSRVNTIgorLkNkICJvcHRpb25zIEdFT01fVU5DT01QUkVTU19VWklQIgogLkVkCiAuUHAK IEFsdGVybmF0aXZlbHksIHRvIGxvYWQgdGhlIGRyaXZlciBhcyBhIG1vZHVsZSBhdCBib290IHRp bWUsIHBsYWNlIHRoZQpAQCAtODksNiArOTAsMTggQEAKICAgIFNlY3RvcnNpemU6IDUxMgogICAg TW9kZTogcjF3MGUwCiAuRWQKKy5QcAorVGhlIGNvbXByZXNzaW9uIHN1cHBvcnQgY2FuIGJlIGNo b3NlbiBpbiBrZXJuZWwgY29uZmlndXJhdGlvbjoKKy5CbCAtdGFnIC13aWR0aCAiLlN5IG9wdGlv bnMgR0VPTV9VTkNPTVBSRVNTX1VaSVAiCisuSXQgU3kgb3B0aW9ucyBHRU9NX1VOQ09NUFJFU1MK K0VuYWJsZSB0aGUgc3VwcG9ydCBmb3IgbWt1bHptYSg4KSBpbWFnZXMuCisuSXQgU3kgb3B0aW9u cyBHRU9NX1VOQ09NUFJFU1NfVVpJUAorRW5hYmxlIHRoZSBzdXBwb3J0IGZvciBta3V6aXAoOCkg aW1hZ2VzLgorLkVsCisuUHAKK1RoZQorLk5tCittb2R1bGUgaXMgYnVpbHQgd2l0aCBib3RoIGNv bXByZXNzaW9uIG1ldGhvZHMgZW5hYmxlZC4KIC5TaCBTRUUgQUxTTwogLlhyIEdFT00gNCAsCiAu WHIgbWQgNCAsCg== --001a11c382d422f85004f82d089e--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAB=2f8w2KmtfBAnC83yUS0n%2B7jq4jM2-Ub_1%2BaMAW=QczqbPwA>