From: Thomas Garnier Subject: [PATCH v1 23/27] x86/modules: Adapt module loading for PIE support Date: Wed, 11 Oct 2017 13:30:23 -0700 Message-ID: <20171011203027.11248-24-thgarnie@google.com> References: <20171011203027.11248-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Arnd Bergmann , Thomas Garnier , Kees Cook , Andrey Ryabinin , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo In-Reply-To: <20171011203027.11248-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org QWRhcHQgbW9kdWxlIGxvYWRpbmcgdG8gc3VwcG9ydCBQSUUgcmVsb2NhdGlvbnMuIEdlbmVyYXRl IGR5bmFtaWMgR09UIGlmCmEgc3ltYm9sIHJlcXVpcmVzIGl0IGJ1dCBubyBlbnRyeSBleGlzdCBp biB0aGUga2VybmVsIEdPVC4KClBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGUgKFBJRSkg c3VwcG9ydCB3aWxsIGFsbG93IHRvIGV4dGVuZGVkIHRoZQpLQVNMUiByYW5kb21pemF0aW9uIHJh bmdlIGJlbG93IHRoZSAtMkcgbWVtb3J5IGxpbWl0LgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdh cm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+Ci0tLQogYXJjaC94ODYvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICAgNCArCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9tb2R1bGUuaCAgIHwgIDExICsr KwogYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCB8ICAgNCArCiBhcmNoL3g4Ni9rZXJu ZWwvbW9kdWxlLmMgICAgICAgIHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIGFyY2gveDg2L2tlcm5lbC9tb2R1bGUubGRzICAgICAgfCAgIDMgKwogNSBmaWxl cyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmxkcwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L01ha2VmaWxlIGIvYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggZGUyMjgyMDBlZjJhLi5iNTkyZDU3 YzUzMWIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL2FyY2gveDg2L01ha2Vm aWxlCkBAIC0xMzQsNyArMTM0LDExIEBAIGVsc2UKICAgICAgICAgS0JVSUxEX0NGTEFHUyArPSAk KGNmbGFncy15KQogCiAgICAgICAgIEtCVUlMRF9DRkxBR1MgKz0gLW1uby1yZWQtem9uZQoraWZk ZWYgQ09ORklHX1g4Nl9QSUUKKyAgICAgICAgS0JVSUxEX0xERkxBR1NfTU9EVUxFICs9IC1UICQo c3JjdHJlZSkvYXJjaC94ODYva2VybmVsL21vZHVsZS5sZHMKK2Vsc2UKICAgICAgICAgS0JVSUxE X0NGTEFHUyArPSAtbWNtb2RlbD1rZXJuZWwKK2VuZGlmCiAKICAgICAgICAgIyAtZnVuaXQtYXQt YS10aW1lIHNocmlua3MgdGhlIGtlcm5lbCAudGV4dCBjb25zaWRlcmFibHkKICAgICAgICAgIyB1 bmZvcnR1bmF0ZWx5IGl0IG1ha2VzIHJlYWRpbmcgb29wc2VzIGhhcmRlci4KZGlmZiAtLWdpdCBh L2FyY2gveDg2L2luY2x1ZGUvYXNtL21vZHVsZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbW9k dWxlLmgKaW5kZXggOWViN2M3MThhYWY4Li4yMWUwZTAyYzAzNDMgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL21vZHVsZS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL21vZHVs ZS5oCkBAIC00LDEyICs0LDIzIEBACiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbW9kdWxlLmg+CiAj aW5jbHVkZSA8YXNtL29yY190eXBlcy5oPgogCisjaWZkZWYgQ09ORklHX1g4Nl9QSUUKK3N0cnVj dCBtb2RfZ290X3NlYyB7CisJc3RydWN0IGVsZjY0X3NoZHIJKmdvdDsKKwlpbnQJCQlnb3RfbnVt X2VudHJpZXM7CisJaW50CQkJZ290X21heF9lbnRyaWVzOworfTsKKyNlbmRpZgorCiBzdHJ1Y3Qg bW9kX2FyY2hfc3BlY2lmaWMgewogI2lmZGVmIENPTkZJR19PUkNfVU5XSU5ERVIKIAl1bnNpZ25l ZCBpbnQgbnVtX29yY3M7CiAJaW50ICpvcmNfdW53aW5kX2lwOwogCXN0cnVjdCBvcmNfZW50cnkg Km9yY191bndpbmQ7CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfWDg2X1BJRQorCXN0cnVjdCBtb2Rf Z290X3NlYwljb3JlOworI2VuZGlmCiB9OwogCiAjaWZkZWYgQ09ORklHX1g4Nl82NApkaWZmIC0t Z2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCBiL2FyY2gveDg2L2luY2x1ZGUv YXNtL3NlY3Rpb25zLmgKaW5kZXggNmIyZDQ5NmNmMWFhLi45MmQ3OTYxMDlkYTEgMTAwNjQ0Ci0t LSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlY3Rpb25zLmgKKysrIGIvYXJjaC94ODYvaW5jbHVk ZS9hc20vc2VjdGlvbnMuaApAQCAtMTUsNCArMTUsOCBAQCBleHRlcm4gY2hhciBfX2VuZF9yb2Rh dGFfaHBhZ2VfYWxpZ25bXTsKIGV4dGVybiBjaGFyIF9fc3RhcnRfZ290W10sIF9fZW5kX2dvdFtd OwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKENPTkZJR19YODZfUElFKQorZXh0ZXJuIGNoYXIgX19z dGFydF9nb3RbXSwgX19lbmRfZ290W107CisjZW5kaWYKKwogI2VuZGlmCS8qIF9BU01fWDg2X1NF Q1RJT05TX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUuYyBiL2FyY2gv eDg2L2tlcm5lbC9tb2R1bGUuYwppbmRleCA2MmU3ZDcwYWFkZDUuLmFlZDI0ZGZhYzFkMyAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL21vZHVsZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9t b2R1bGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2dmcC5oPgogI2luY2x1 ZGUgPGxpbnV4L2p1bXBfbGFiZWwuaD4KICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyNpbmNs dWRlIDxsaW51eC9zb3J0Lmg+CiAKICNpbmNsdWRlIDxhc20vdGV4dC1wYXRjaGluZy5oPgogI2lu Y2x1ZGUgPGFzbS9wYWdlLmg+CkBAIC03Nyw2ICs3OCwxNzMgQEAgc3RhdGljIHVuc2lnbmVkIGxv bmcgaW50IGdldF9tb2R1bGVfbG9hZF9vZmZzZXQodm9pZCkKIH0KICNlbmRpZgogCisjaWZkZWYg Q09ORklHX1g4Nl9QSUUKK3N0YXRpYyB1NjQgZmluZF9nb3Rfa2VybmVsX2VudHJ5KEVsZjY0X1N5 bSAqc3ltLCBjb25zdCBFbGY2NF9SZWxhICpyZWxhKQoreworCXU2NCAqcG9zOworCisJZm9yIChw b3MgPSAodTY0KilfX3N0YXJ0X2dvdDsgcG9zIDwgKHU2NCopX19lbmRfZ290OyBwb3MrKykgewor CQlpZiAoKnBvcyA9PSBzeW0tPnN0X3ZhbHVlKQorCQkJcmV0dXJuICh1NjQpcG9zICsgcmVsYS0+ cl9hZGRlbmQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1NjQgbW9kdWxlX2VtaXRf Z290X2VudHJ5KHN0cnVjdCBtb2R1bGUgKm1vZCwgdm9pZCAqbG9jLAorCQkJCSBjb25zdCBFbGY2 NF9SZWxhICpyZWxhLCBFbGY2NF9TeW0gKnN5bSkKK3sKKwlzdHJ1Y3QgbW9kX2dvdF9zZWMgKmdv dHNlYyA9ICZtb2QtPmFyY2guY29yZTsKKwl1NjQgKmdvdCA9ICh1NjQqKWdvdHNlYy0+Z290LT5z aF9hZGRyOworCWludCBpID0gZ290c2VjLT5nb3RfbnVtX2VudHJpZXM7CisJdTY0IHJldDsKKwor CS8qIENoZWNrIGlmIHdlIGNhbiB1c2UgdGhlIGtlcm5lbCBHT1QgKi8KKwlyZXQgPSBmaW5kX2dv dF9rZXJuZWxfZW50cnkoc3ltLCByZWxhKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ Z290W2ldID0gc3ltLT5zdF92YWx1ZTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIGVudHJ5IHdl IGp1c3QgY3JlYXRlZCBpcyBhIGR1cGxpY2F0ZS4gR2l2ZW4gdGhhdCB0aGUKKwkgKiByZWxvY2F0 aW9ucyBhcmUgc29ydGVkLCB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgZW50cnkgd2UgYWxsb2NhdGVk LgorCSAqIChpZiBvbmUgZXhpc3RzKS4KKwkgKi8KKwlpZiAoaSA+IDAgJiYgZ290W2ldID09IGdv dFtpIC0gMl0pIHsKKwkJcmV0ID0gKHU2NCkmZ290W2kgLSAxXTsKKwl9IGVsc2UgeworCQlnb3Rz ZWMtPmdvdF9udW1fZW50cmllcysrOworCQlCVUdfT04oZ290c2VjLT5nb3RfbnVtX2VudHJpZXMg PiBnb3RzZWMtPmdvdF9tYXhfZW50cmllcyk7CisJCXJldCA9ICh1NjQpJmdvdFtpXTsKKwl9CisK KwlyZXR1cm4gcmV0ICsgcmVsYS0+cl9hZGRlbmQ7Cit9CisKKyNkZWZpbmUgY21wXzN3YXkoYSxi KQkoKGEpIDwgKGIpID8gLTEgOiAoYSkgPiAoYikpCisKK3N0YXRpYyBpbnQgY21wX3JlbGEoY29u c3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBFbGY2NF9SZWxhICp4ID0gYSwg KnkgPSBiOworCWludCBpOworCisJLyogc29ydCBieSB0eXBlLCBzeW1ib2wgaW5kZXggYW5kIGFk ZGVuZCAqLworCWkgPSBjbXBfM3dheShFTEY2NF9SX1RZUEUoeC0+cl9pbmZvKSwgRUxGNjRfUl9U WVBFKHktPnJfaW5mbykpOworCWlmIChpID09IDApCisJCWkgPSBjbXBfM3dheShFTEY2NF9SX1NZ TSh4LT5yX2luZm8pLCBFTEY2NF9SX1NZTSh5LT5yX2luZm8pKTsKKwlpZiAoaSA9PSAwKQorCQlp ID0gY21wXzN3YXkoeC0+cl9hZGRlbmQsIHktPnJfYWRkZW5kKTsKKwlyZXR1cm4gaTsKK30KKwor c3RhdGljIGJvb2wgZHVwbGljYXRlX3JlbChjb25zdCBFbGY2NF9SZWxhICpyZWxhLCBpbnQgbnVt KQoreworCS8qCisJICogRW50cmllcyBhcmUgc29ydGVkIGJ5IHR5cGUsIHN5bWJvbCBpbmRleCBh bmQgYWRkZW5kLiBUaGF0IG1lYW5zCisJICogdGhhdCwgaWYgYSBkdXBsaWNhdGUgZW50cnkgZXhp c3RzLCBpdCBtdXN0IGJlIGluIHRoZSBwcmVjZWRpbmcKKwkgKiBzbG90LgorCSAqLworCXJldHVy biBudW0gPiAwICYmIGNtcF9yZWxhKHJlbGEgKyBudW0sIHJlbGEgKyBudW0gLSAxKSA9PSAwOwor fQorCitzdGF0aWMgdW5zaWduZWQgaW50IGNvdW50X2dvdHMoRWxmNjRfU3ltICpzeW1zLCBFbGY2 NF9SZWxhICpyZWxhLCBpbnQgbnVtKQoreworCXVuc2lnbmVkIGludCByZXQgPSAwOworCUVsZjY0 X1N5bSAqczsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgeworCQlzd2l0 Y2ggKEVMRjY0X1JfVFlQRShyZWxhW2ldLnJfaW5mbykpIHsKKwkJY2FzZSBSX1g4Nl82NF9HT1RQ Q1JFTDoKKwkJCXMgPSBzeW1zICsgRUxGNjRfUl9TWU0ocmVsYVtpXS5yX2luZm8pOworCisJCQkv KgorCQkJICogVXNlIHRoZSBrZXJuZWwgR09UIHdoZW4gcG9zc2libGUsIGVsc2UgcmVzZXJ2ZSBh CisJCQkgKiBjdXN0b20gb25lIGZvciB0aGlzIG1vZHVsZS4KKwkJCSAqLworCQkJaWYgKCFkdXBs aWNhdGVfcmVsKHJlbGEsIGkpICYmCisJCQkgICAgIWZpbmRfZ290X2tlcm5lbF9lbnRyeShzLCBy ZWxhICsgaSkpCisJCQkJcmV0Kys7CisJCQlicmVhazsKKwkJfQorCX0KKwlyZXR1cm4gcmV0Owor fQorCisvKgorICogR2VuZXJhdGUgR09UIGVudHJpZXMgZm9yIEdPVFBDUkVMIHJlbG9jYXRpb25z IHRoYXQgZG8gbm90IGV4aXN0cyBpbiB0aGUKKyAqIGtlcm5lbCBHT1QuIEJhc2VkIG9uIGFybTY0 IG1vZHVsZS1wbHRzIGltcGxlbWVudGF0aW9uLgorICovCitpbnQgbW9kdWxlX2Zyb2JfYXJjaF9z ZWN0aW9ucyhFbGZfRWhkciAqZWhkciwgRWxmX1NoZHIgKnNlY2hkcnMsCisJCQkgICAgICBjaGFy ICpzZWNzdHJpbmdzLCBzdHJ1Y3QgbW9kdWxlICptb2QpCit7CisJdW5zaWduZWQgbG9uZyBnb3Rz ID0gMDsKKwlFbGZfU2hkciAqc3ltdGFiID0gTlVMTDsKKwlFbGY2NF9TeW0gKnN5bXMgPSBOVUxM OworCWNoYXIgKnN0cmluZ3MsICpuYW1lOworCWludCBpOworCisJLyoKKwkgKiBGaW5kIHRoZSBl bXB0eSAuZ290IHNlY3Rpb24gc28gd2UgY2FuIGV4cGFuZCBpdCB0byBzdG9yZSB0aGUgUExUCisJ ICogZW50cmllcy4gUmVjb3JkIHRoZSBzeW10YWIgYWRkcmVzcyBhcyB3ZWxsLgorCSAqLworCWZv ciAoaSA9IDA7IGkgPCBlaGRyLT5lX3NobnVtOyBpKyspIHsKKwkJaWYgKCFzdHJjbXAoc2Vjc3Ry aW5ncyArIHNlY2hkcnNbaV0uc2hfbmFtZSwgIi5nb3QiKSkgeworCQkJbW9kLT5hcmNoLmNvcmUu Z290ID0gc2VjaGRycyArIGk7CisJCX0gZWxzZSBpZiAoc2VjaGRyc1tpXS5zaF90eXBlID09IFNI VF9TWU1UQUIpIHsKKwkJCXN5bXRhYiA9IHNlY2hkcnMgKyBpOworCQkJc3ltcyA9IChFbGY2NF9T eW0gKilzeW10YWItPnNoX2FkZHI7CisJCX0KKwl9CisKKwlpZiAoIW1vZC0+YXJjaC5jb3JlLmdv dCkgeworCQlwcl9lcnIoIiVzOiBtb2R1bGUgR09UIHNlY3Rpb24gbWlzc2luZ1xuIiwgbW9kLT5u YW1lKTsKKwkJcmV0dXJuIC1FTk9FWEVDOworCX0KKwlpZiAoIXN5bXMpIHsKKwkJcHJfZXJyKCIl czogbW9kdWxlIHN5bXRhYiBzZWN0aW9uIG1pc3NpbmdcbiIsIG1vZC0+bmFtZSk7CisJCXJldHVy biAtRU5PRVhFQzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgZWhkci0+ZV9zaG51bTsgaSsrKSB7 CisJCUVsZjY0X1JlbGEgKnJlbHMgPSAodm9pZCAqKWVoZHIgKyBzZWNoZHJzW2ldLnNoX29mZnNl dDsKKwkJaW50IG51bXJlbHMgPSBzZWNoZHJzW2ldLnNoX3NpemUgLyBzaXplb2YoRWxmNjRfUmVs YSk7CisKKwkJaWYgKHNlY2hkcnNbaV0uc2hfdHlwZSAhPSBTSFRfUkVMQSkKKwkJCWNvbnRpbnVl OworCisJCS8qIHNvcnQgYnkgdHlwZSwgc3ltYm9sIGluZGV4IGFuZCBhZGRlbmQgKi8KKwkJc29y dChyZWxzLCBudW1yZWxzLCBzaXplb2YoRWxmNjRfUmVsYSksIGNtcF9yZWxhLCBOVUxMKTsKKwor CQlnb3RzICs9IGNvdW50X2dvdHMoc3ltcywgcmVscywgbnVtcmVscyk7CisJfQorCisJbW9kLT5h cmNoLmNvcmUuZ290LT5zaF90eXBlID0gU0hUX05PQklUUzsKKwltb2QtPmFyY2guY29yZS5nb3Qt PnNoX2ZsYWdzID0gU0hGX0FMTE9DOworCW1vZC0+YXJjaC5jb3JlLmdvdC0+c2hfYWRkcmFsaWdu ID0gTDFfQ0FDSEVfQllURVM7CisJbW9kLT5hcmNoLmNvcmUuZ290LT5zaF9zaXplID0gKGdvdHMg KyAxKSAqIHNpemVvZih1NjQpOworCW1vZC0+YXJjaC5jb3JlLmdvdF9udW1fZW50cmllcyA9IDA7 CisJbW9kLT5hcmNoLmNvcmUuZ290X21heF9lbnRyaWVzID0gZ290czsKKworCS8qCisJICogSWYg YSBfR0xPQkFMX09GRlNFVF9UQUJMRV8gc3ltYm9sIGV4aXN0cywgbWFrZSBpdCBhYnNvbHV0ZSBm b3IKKwkgKiBtb2R1bGVzIHRvIGNvcnJlY3RseSByZWZlcmVuY2UgaXQuIFNpbWlsYXIgdG8gczM5 MCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlzdHJpbmdzID0gKHZvaWQgKikgZWhkciArIHNlY2hk cnNbc3ltdGFiLT5zaF9saW5rXS5zaF9vZmZzZXQ7CisJZm9yIChpID0gMDsgaSA8IHN5bXRhYi0+ c2hfc2l6ZS9zaXplb2YoRWxmX1N5bSk7IGkrKykgeworCQlpZiAoc3ltc1tpXS5zdF9zaG5keCAh PSBTSE5fVU5ERUYpCisJCQljb250aW51ZTsKKwkJbmFtZSA9IHN0cmluZ3MgKyBzeW1zW2ldLnN0 X25hbWU7CisJCWlmICghc3RyY21wKG5hbWUsICJfR0xPQkFMX09GRlNFVF9UQUJMRV8iKSkgewor CQkJc3ltc1tpXS5zdF9zaG5keCA9IFNITl9BQlM7CisJCQlicmVhazsKKwkJfQorCX0KKwlyZXR1 cm4gMDsKK30KKyNlbmRpZgorCiB2b2lkICptb2R1bGVfYWxsb2ModW5zaWduZWQgbG9uZyBzaXpl KQogewogCXZvaWQgKnA7CkBAIC0xODQsMTMgKzM1MiwxOCBAQCBpbnQgYXBwbHlfcmVsb2NhdGVf YWRkKEVsZjY0X1NoZHIgKnNlY2hkcnMsCiAJCQlpZiAoKHM2NCl2YWwgIT0gKihzMzIgKilsb2Mp CiAJCQkJZ290byBvdmVyZmxvdzsKIAkJCWJyZWFrOworI2lmZGVmIENPTkZJR19YODZfUElFCisJ CWNhc2UgUl9YODZfNjRfR09UUENSRUw6CisJCQl2YWwgPSBtb2R1bGVfZW1pdF9nb3RfZW50cnko bWUsIGxvYywgcmVsICsgaSwgc3ltKTsKKwkJCS8qIGZhbGx0aHJvdWdoICovCisjZW5kaWYKKwkJ Y2FzZSBSX1g4Nl82NF9QTFQzMjoKIAkJY2FzZSBSX1g4Nl82NF9QQzMyOgogCQkJdmFsIC09ICh1 NjQpbG9jOwogCQkJKih1MzIgKilsb2MgPSB2YWw7Ci0jaWYgMAotCQkJaWYgKChzNjQpdmFsICE9 ICooczMyICopbG9jKQorCQkJaWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl9QSUUpICYmCisJCQkg ICAgKHM2NCl2YWwgIT0gKihzMzIgKilsb2MpCiAJCQkJZ290byBvdmVyZmxvdzsKLSNlbmRpZgog CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlwcl9lcnIoIiVzOiBVbmtub3duIHJlbGEgcmVsb2Nh dGlvbjogJWxsdVxuIiwKQEAgLTIwMyw4ICszNzYsNyBAQCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRk KEVsZjY0X1NoZHIgKnNlY2hkcnMsCiBvdmVyZmxvdzoKIAlwcl9lcnIoIm92ZXJmbG93IGluIHJl bG9jYXRpb24gdHlwZSAlZCB2YWwgJUx4XG4iLAogCSAgICAgICAoaW50KUVMRjY0X1JfVFlQRShy ZWxbaV0ucl9pbmZvKSwgdmFsKTsKLQlwcl9lcnIoImAlcycgbGlrZWx5IG5vdCBjb21waWxlZCB3 aXRoIC1tY21vZGVsPWtlcm5lbFxuIiwKLQkgICAgICAgbWUtPm5hbWUpOworCXByX2VycigiYCVz JyBsaWtlbHkgdG9vIGZhciBmcm9tIHRoZSBrZXJuZWxcbiIsIG1lLT5uYW1lKTsKIAlyZXR1cm4g LUVOT0VYRUM7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUu bGRzIGIvYXJjaC94ODYva2VybmVsL21vZHVsZS5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5mZDZlOTVhNGI0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3g4 Ni9rZXJuZWwvbW9kdWxlLmxkcwpAQCAtMCwwICsxLDMgQEAKK1NFQ1RJT05TIHsKKwkuZ290IChO T0xPQUQpIDogeyBCWVRFKDApIH0KK30KLS0gCjIuMTUuMC5yYzAuMjcxLmczNmI2NjllZGNjLWdv b2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK