From: Thomas Garnier Subject: [PATCH v2 23/27] x86/modules: Adapt module loading for PIE support Date: Tue, 13 Mar 2018 13:59:41 -0700 Message-ID: <20180313205945.245105-24-thgarnie@google.com> References: <20180313205945.245105-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 , Greg Kroah-Hartman , Kate Stewart , Thomas Garnier , Arnd Bergmann , Philippe Ombredanne , Arnaldo Carvalho de Melo , Andrey Ryabinin , Matthias Kaehlcke , Kees Cook , Tom Lendacky , "Kirill A . Shutemov" , Andy Lutomirski , Dominik Brodowski , Borislav Petkov , Borislav Petkov , "Raf Return-path: In-Reply-To: <20180313205945.245105-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org QWRhcHQgbW9kdWxlIGxvYWRpbmcgdG8gc3VwcG9ydCBQSUUgcmVsb2NhdGlvbnMuIEdlbmVyYXRl IGR5bmFtaWMgR09UIGlmCmEgc3ltYm9sIHJlcXVpcmVzIGl0IGJ1dCBubyBlbnRyeSBleGlzdCBp biB0aGUga2VybmVsIEdPVC4KClBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGUgKFBJRSkg c3VwcG9ydCB3aWxsIGFsbG93IHRvIGV4dGVuZGVkIHRoZQpLQVNMUiByYW5kb21pemF0aW9uIHJh bmdlIGJlbG93IHRoZSAtMkcgbWVtb3J5IGxpbWl0LgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdh cm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+Ci0tLQogYXJjaC94ODYvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICAgNCArCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9tb2R1bGUuaCAgIHwgIDExICsr CiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWN0aW9ucy5oIHwgICA0ICsKIGFyY2gveDg2L2tlcm5l bC9tb2R1bGUuYyAgICAgICAgfCAxODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K IGFyY2gveDg2L2tlcm5lbC9tb2R1bGUubGRzICAgICAgfCAgIDMgKwogNSBmaWxlcyBjaGFuZ2Vk LCAxOTggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBh cmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmxkcwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L01ha2VmaWxl IGIvYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggMTZkYWZjNTUxZjNiLi5mMjRkMjAwYzBkOWQgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL2FyY2gveDg2L01ha2VmaWxlCkBAIC0x MzUsNyArMTM1LDExIEBAIGVsc2UKICAgICAgICAgS0JVSUxEX0NGTEFHUyArPSAkKGNmbGFncy15 KQogCiAgICAgICAgIEtCVUlMRF9DRkxBR1MgKz0gLW1uby1yZWQtem9uZQoraWZkZWYgQ09ORklH X1g4Nl9QSUUKKyAgICAgICAgS0JVSUxEX0xERkxBR1NfTU9EVUxFICs9IC1UICQoc3JjdHJlZSkv YXJjaC94ODYva2VybmVsL21vZHVsZS5sZHMKK2Vsc2UKICAgICAgICAgS0JVSUxEX0NGTEFHUyAr PSAtbWNtb2RlbD1rZXJuZWwKK2VuZGlmCiAKICAgICAgICAgIyAtZnVuaXQtYXQtYS10aW1lIHNo cmlua3MgdGhlIGtlcm5lbCAudGV4dCBjb25zaWRlcmFibHkKICAgICAgICAgIyB1bmZvcnR1bmF0 ZWx5IGl0IG1ha2VzIHJlYWRpbmcgb29wc2VzIGhhcmRlci4KZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL21vZHVsZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbW9kdWxlLmgKaW5k ZXggNzk0OGExN2ZlYmI0Li42OGZmMDVlMTQyODggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1 ZGUvYXNtL21vZHVsZS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL21vZHVsZS5oCkBAIC01 LDEyICs1LDIzIEBACiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbW9kdWxlLmg+CiAjaW5jbHVkZSA8 YXNtL29yY190eXBlcy5oPgogCisjaWZkZWYgQ09ORklHX1g4Nl9QSUUKK3N0cnVjdCBtb2RfZ290 X3NlYyB7CisJc3RydWN0IGVsZjY0X3NoZHIJKmdvdDsKKwlpbnQJCQlnb3RfbnVtX2VudHJpZXM7 CisJaW50CQkJZ290X21heF9lbnRyaWVzOworfTsKKyNlbmRpZgorCiBzdHJ1Y3QgbW9kX2FyY2hf c3BlY2lmaWMgewogI2lmZGVmIENPTkZJR19VTldJTkRFUl9PUkMKIAl1bnNpZ25lZCBpbnQgbnVt X29yY3M7CiAJaW50ICpvcmNfdW53aW5kX2lwOwogCXN0cnVjdCBvcmNfZW50cnkgKm9yY191bndp bmQ7CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfWDg2X1BJRQorCXN0cnVjdCBtb2RfZ290X3NlYwlj b3JlOworI2VuZGlmCiB9OwogCiAjaWZkZWYgQ09ORklHX1g4Nl82NApkaWZmIC0tZ2l0IGEvYXJj aC94ODYvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlY3Rp b25zLmgKaW5kZXggY2FkMjkyZjYyZWVkLi4wYmJkOWY5NDE1NzMgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NlY3Rpb25zLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc2Vj dGlvbnMuaApAQCAtMTYsNCArMTYsOCBAQCBleHRlcm4gY2hhciBfX2VuZF9yb2RhdGFfaHBhZ2Vf YWxpZ25bXTsKIGV4dGVybiBjaGFyIF9fc3RhcnRfZ290W10sIF9fZW5kX2dvdFtdOwogI2VuZGlm CiAKKyNpZiBkZWZpbmVkKENPTkZJR19YODZfUElFKQorZXh0ZXJuIGNoYXIgX19zdGFydF9nb3Rb XSwgX19lbmRfZ290W107CisjZW5kaWYKKwogI2VuZGlmCS8qIF9BU01fWDg2X1NFQ1RJT05TX0gg Ki8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUuYyBiL2FyY2gveDg2L2tlcm5l bC9tb2R1bGUuYwppbmRleCBmNTgzMzZhZjA5NWMuLjg4ODk1ZjNkNDc0YiAxMDA2NDQKLS0tIGEv YXJjaC94ODYva2VybmVsL21vZHVsZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUuYwpA QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2dmcC5oPgogI2luY2x1ZGUgPGxpbnV4 L2p1bXBfbGFiZWwuaD4KICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyNpbmNsdWRlIDxsaW51 eC9zb3J0Lmg+CiAKICNpbmNsdWRlIDxhc20vdGV4dC1wYXRjaGluZy5oPgogI2luY2x1ZGUgPGFz bS9wYWdlLmg+CkBAIC03Nyw2ICs3OCwxNzMgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50IGdl dF9tb2R1bGVfbG9hZF9vZmZzZXQodm9pZCkKIH0KICNlbmRpZgogCisjaWZkZWYgQ09ORklHX1g4 Nl9QSUUKK3N0YXRpYyB1NjQgZmluZF9nb3Rfa2VybmVsX2VudHJ5KEVsZjY0X1N5bSAqc3ltLCBj b25zdCBFbGY2NF9SZWxhICpyZWxhKQoreworCXU2NCAqcG9zOworCisJZm9yIChwb3MgPSAodTY0 KilfX3N0YXJ0X2dvdDsgcG9zIDwgKHU2NCopX19lbmRfZ290OyBwb3MrKykgeworCQlpZiAoKnBv cyA9PSBzeW0tPnN0X3ZhbHVlKQorCQkJcmV0dXJuICh1NjQpcG9zICsgcmVsYS0+cl9hZGRlbmQ7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1NjQgbW9kdWxlX2VtaXRfZ290X2VudHJ5 KHN0cnVjdCBtb2R1bGUgKm1vZCwgdm9pZCAqbG9jLAorCQkJCSBjb25zdCBFbGY2NF9SZWxhICpy ZWxhLCBFbGY2NF9TeW0gKnN5bSkKK3sKKwlzdHJ1Y3QgbW9kX2dvdF9zZWMgKmdvdHNlYyA9ICZt b2QtPmFyY2guY29yZTsKKwl1NjQgKmdvdCA9ICh1NjQqKWdvdHNlYy0+Z290LT5zaF9hZGRyOwor CWludCBpID0gZ290c2VjLT5nb3RfbnVtX2VudHJpZXM7CisJdTY0IHJldDsKKworCS8qIENoZWNr IGlmIHdlIGNhbiB1c2UgdGhlIGtlcm5lbCBHT1QgKi8KKwlyZXQgPSBmaW5kX2dvdF9rZXJuZWxf ZW50cnkoc3ltLCByZWxhKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZ290W2ldID0g c3ltLT5zdF92YWx1ZTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIGVudHJ5IHdlIGp1c3QgY3Jl YXRlZCBpcyBhIGR1cGxpY2F0ZS4gR2l2ZW4gdGhhdCB0aGUKKwkgKiByZWxvY2F0aW9ucyBhcmUg c29ydGVkLCB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgZW50cnkgd2UgYWxsb2NhdGVkLgorCSAqIChp ZiBvbmUgZXhpc3RzKS4KKwkgKi8KKwlpZiAoaSA+IDAgJiYgZ290W2ldID09IGdvdFtpIC0gMl0p IHsKKwkJcmV0ID0gKHU2NCkmZ290W2kgLSAxXTsKKwl9IGVsc2UgeworCQlnb3RzZWMtPmdvdF9u dW1fZW50cmllcysrOworCQlCVUdfT04oZ290c2VjLT5nb3RfbnVtX2VudHJpZXMgPiBnb3RzZWMt PmdvdF9tYXhfZW50cmllcyk7CisJCXJldCA9ICh1NjQpJmdvdFtpXTsKKwl9CisKKwlyZXR1cm4g cmV0ICsgcmVsYS0+cl9hZGRlbmQ7Cit9CisKKyNkZWZpbmUgY21wXzN3YXkoYSxiKQkoKGEpIDwg KGIpID8gLTEgOiAoYSkgPiAoYikpCisKK3N0YXRpYyBpbnQgY21wX3JlbGEoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBFbGY2NF9SZWxhICp4ID0gYSwgKnkgPSBiOwor CWludCBpOworCisJLyogc29ydCBieSB0eXBlLCBzeW1ib2wgaW5kZXggYW5kIGFkZGVuZCAqLwor CWkgPSBjbXBfM3dheShFTEY2NF9SX1RZUEUoeC0+cl9pbmZvKSwgRUxGNjRfUl9UWVBFKHktPnJf aW5mbykpOworCWlmIChpID09IDApCisJCWkgPSBjbXBfM3dheShFTEY2NF9SX1NZTSh4LT5yX2lu Zm8pLCBFTEY2NF9SX1NZTSh5LT5yX2luZm8pKTsKKwlpZiAoaSA9PSAwKQorCQlpID0gY21wXzN3 YXkoeC0+cl9hZGRlbmQsIHktPnJfYWRkZW5kKTsKKwlyZXR1cm4gaTsKK30KKworc3RhdGljIGJv b2wgZHVwbGljYXRlX3JlbChjb25zdCBFbGY2NF9SZWxhICpyZWxhLCBpbnQgbnVtKQoreworCS8q CisJICogRW50cmllcyBhcmUgc29ydGVkIGJ5IHR5cGUsIHN5bWJvbCBpbmRleCBhbmQgYWRkZW5k LiBUaGF0IG1lYW5zCisJICogdGhhdCwgaWYgYSBkdXBsaWNhdGUgZW50cnkgZXhpc3RzLCBpdCBt dXN0IGJlIGluIHRoZSBwcmVjZWRpbmcKKwkgKiBzbG90LgorCSAqLworCXJldHVybiBudW0gPiAw ICYmIGNtcF9yZWxhKHJlbGEgKyBudW0sIHJlbGEgKyBudW0gLSAxKSA9PSAwOworfQorCitzdGF0 aWMgdW5zaWduZWQgaW50IGNvdW50X2dvdHMoRWxmNjRfU3ltICpzeW1zLCBFbGY2NF9SZWxhICpy ZWxhLCBpbnQgbnVtKQoreworCXVuc2lnbmVkIGludCByZXQgPSAwOworCUVsZjY0X1N5bSAqczsK KwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgeworCQlzd2l0Y2ggKEVMRjY0 X1JfVFlQRShyZWxhW2ldLnJfaW5mbykpIHsKKwkJY2FzZSBSX1g4Nl82NF9HT1RQQ1JFTDoKKwkJ CXMgPSBzeW1zICsgRUxGNjRfUl9TWU0ocmVsYVtpXS5yX2luZm8pOworCisJCQkvKgorCQkJICog VXNlIHRoZSBrZXJuZWwgR09UIHdoZW4gcG9zc2libGUsIGVsc2UgcmVzZXJ2ZSBhCisJCQkgKiBj dXN0b20gb25lIGZvciB0aGlzIG1vZHVsZS4KKwkJCSAqLworCQkJaWYgKCFkdXBsaWNhdGVfcmVs KHJlbGEsIGkpICYmCisJCQkgICAgIWZpbmRfZ290X2tlcm5lbF9lbnRyeShzLCByZWxhICsgaSkp CisJCQkJcmV0Kys7CisJCQlicmVhazsKKwkJfQorCX0KKwlyZXR1cm4gcmV0OworfQorCisvKgor ICogR2VuZXJhdGUgR09UIGVudHJpZXMgZm9yIEdPVFBDUkVMIHJlbG9jYXRpb25zIHRoYXQgZG8g bm90IGV4aXN0cyBpbiB0aGUKKyAqIGtlcm5lbCBHT1QuIEJhc2VkIG9uIGFybTY0IG1vZHVsZS1w bHRzIGltcGxlbWVudGF0aW9uLgorICovCitpbnQgbW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhF bGZfRWhkciAqZWhkciwgRWxmX1NoZHIgKnNlY2hkcnMsCisJCQkgICAgICBjaGFyICpzZWNzdHJp bmdzLCBzdHJ1Y3QgbW9kdWxlICptb2QpCit7CisJdW5zaWduZWQgbG9uZyBnb3RzID0gMDsKKwlF bGZfU2hkciAqc3ltdGFiID0gTlVMTDsKKwlFbGY2NF9TeW0gKnN5bXMgPSBOVUxMOworCWNoYXIg KnN0cmluZ3MsICpuYW1lOworCWludCBpOworCisJLyoKKwkgKiBGaW5kIHRoZSBlbXB0eSAuZ290 IHNlY3Rpb24gc28gd2UgY2FuIGV4cGFuZCBpdCB0byBzdG9yZSB0aGUgUExUCisJICogZW50cmll cy4gUmVjb3JkIHRoZSBzeW10YWIgYWRkcmVzcyBhcyB3ZWxsLgorCSAqLworCWZvciAoaSA9IDA7 IGkgPCBlaGRyLT5lX3NobnVtOyBpKyspIHsKKwkJaWYgKCFzdHJjbXAoc2Vjc3RyaW5ncyArIHNl Y2hkcnNbaV0uc2hfbmFtZSwgIi5nb3QiKSkgeworCQkJbW9kLT5hcmNoLmNvcmUuZ290ID0gc2Vj aGRycyArIGk7CisJCX0gZWxzZSBpZiAoc2VjaGRyc1tpXS5zaF90eXBlID09IFNIVF9TWU1UQUIp IHsKKwkJCXN5bXRhYiA9IHNlY2hkcnMgKyBpOworCQkJc3ltcyA9IChFbGY2NF9TeW0gKilzeW10 YWItPnNoX2FkZHI7CisJCX0KKwl9CisKKwlpZiAoIW1vZC0+YXJjaC5jb3JlLmdvdCkgeworCQlw cl9lcnIoIiVzOiBtb2R1bGUgR09UIHNlY3Rpb24gbWlzc2luZ1xuIiwgbW9kLT5uYW1lKTsKKwkJ cmV0dXJuIC1FTk9FWEVDOworCX0KKwlpZiAoIXN5bXMpIHsKKwkJcHJfZXJyKCIlczogbW9kdWxl IHN5bXRhYiBzZWN0aW9uIG1pc3NpbmdcbiIsIG1vZC0+bmFtZSk7CisJCXJldHVybiAtRU5PRVhF QzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgZWhkci0+ZV9zaG51bTsgaSsrKSB7CisJCUVsZjY0 X1JlbGEgKnJlbHMgPSAodm9pZCAqKWVoZHIgKyBzZWNoZHJzW2ldLnNoX29mZnNldDsKKwkJaW50 IG51bXJlbHMgPSBzZWNoZHJzW2ldLnNoX3NpemUgLyBzaXplb2YoRWxmNjRfUmVsYSk7CisKKwkJ aWYgKHNlY2hkcnNbaV0uc2hfdHlwZSAhPSBTSFRfUkVMQSkKKwkJCWNvbnRpbnVlOworCisJCS8q IHNvcnQgYnkgdHlwZSwgc3ltYm9sIGluZGV4IGFuZCBhZGRlbmQgKi8KKwkJc29ydChyZWxzLCBu dW1yZWxzLCBzaXplb2YoRWxmNjRfUmVsYSksIGNtcF9yZWxhLCBOVUxMKTsKKworCQlnb3RzICs9 IGNvdW50X2dvdHMoc3ltcywgcmVscywgbnVtcmVscyk7CisJfQorCisJbW9kLT5hcmNoLmNvcmUu Z290LT5zaF90eXBlID0gU0hUX05PQklUUzsKKwltb2QtPmFyY2guY29yZS5nb3QtPnNoX2ZsYWdz ID0gU0hGX0FMTE9DOworCW1vZC0+YXJjaC5jb3JlLmdvdC0+c2hfYWRkcmFsaWduID0gTDFfQ0FD SEVfQllURVM7CisJbW9kLT5hcmNoLmNvcmUuZ290LT5zaF9zaXplID0gKGdvdHMgKyAxKSAqIHNp emVvZih1NjQpOworCW1vZC0+YXJjaC5jb3JlLmdvdF9udW1fZW50cmllcyA9IDA7CisJbW9kLT5h cmNoLmNvcmUuZ290X21heF9lbnRyaWVzID0gZ290czsKKworCS8qCisJICogSWYgYSBfR0xPQkFM X09GRlNFVF9UQUJMRV8gc3ltYm9sIGV4aXN0cywgbWFrZSBpdCBhYnNvbHV0ZSBmb3IKKwkgKiBt b2R1bGVzIHRvIGNvcnJlY3RseSByZWZlcmVuY2UgaXQuIFNpbWlsYXIgdG8gczM5MCBpbXBsZW1l bnRhdGlvbi4KKwkgKi8KKwlzdHJpbmdzID0gKHZvaWQgKikgZWhkciArIHNlY2hkcnNbc3ltdGFi LT5zaF9saW5rXS5zaF9vZmZzZXQ7CisJZm9yIChpID0gMDsgaSA8IHN5bXRhYi0+c2hfc2l6ZS9z aXplb2YoRWxmX1N5bSk7IGkrKykgeworCQlpZiAoc3ltc1tpXS5zdF9zaG5keCAhPSBTSE5fVU5E RUYpCisJCQljb250aW51ZTsKKwkJbmFtZSA9IHN0cmluZ3MgKyBzeW1zW2ldLnN0X25hbWU7CisJ CWlmICghc3RyY21wKG5hbWUsICJfR0xPQkFMX09GRlNFVF9UQUJMRV8iKSkgeworCQkJc3ltc1tp XS5zdF9zaG5keCA9IFNITl9BQlM7CisJCQlicmVhazsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30K KyNlbmRpZgorCiB2b2lkICptb2R1bGVfYWxsb2ModW5zaWduZWQgbG9uZyBzaXplKQogewogCXZv aWQgKnA7CkBAIC0xOTAsMTYgKzM1OCwyMCBAQCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRkKEVsZjY0 X1NoZHIgKnNlY2hkcnMsCiAJCQlpZiAoKHM2NCl2YWwgIT0gKihzMzIgKilsb2MpCiAJCQkJZ290 byBvdmVyZmxvdzsKIAkJCWJyZWFrOworI2lmZGVmIENPTkZJR19YODZfUElFCisJCWNhc2UgUl9Y ODZfNjRfR09UUENSRUw6CisJCQl2YWwgPSBtb2R1bGVfZW1pdF9nb3RfZW50cnkobWUsIGxvYywg cmVsICsgaSwgc3ltKTsKKwkJCS8qIGZhbGx0aHJvdWdoICovCisjZW5kaWYKIAkJY2FzZSBSX1g4 Nl82NF9QQzMyOgogCQljYXNlIFJfWDg2XzY0X1BMVDMyOgogCQkJaWYgKCoodTMyICopbG9jICE9 IDApCiAJCQkJZ290byBpbnZhbGlkX3JlbG9jYXRpb247CiAJCQl2YWwgLT0gKHU2NClsb2M7CiAJ CQkqKHUzMiAqKWxvYyA9IHZhbDsKLSNpZiAwCi0JCQlpZiAoKHM2NCl2YWwgIT0gKihzMzIgKils b2MpCisJCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2X1BJRSkgJiYKKwkJCSAgICAoczY0KXZh bCAhPSAqKHMzMiAqKWxvYykKIAkJCQlnb3RvIG92ZXJmbG93OwotI2VuZGlmCiAJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCXByX2VycigiJXM6IFVua25vd24gcmVsYSByZWxvY2F0aW9uOiAlbGx1 XG4iLApAQCAtMjE3LDggKzM4OSw3IEBAIGludCBhcHBseV9yZWxvY2F0ZV9hZGQoRWxmNjRfU2hk ciAqc2VjaGRycywKIG92ZXJmbG93OgogCXByX2Vycigib3ZlcmZsb3cgaW4gcmVsb2NhdGlvbiB0 eXBlICVkIHZhbCAlTHhcbiIsCiAJICAgICAgIChpbnQpRUxGNjRfUl9UWVBFKHJlbFtpXS5yX2lu Zm8pLCB2YWwpOwotCXByX2VycigiYCVzJyBsaWtlbHkgbm90IGNvbXBpbGVkIHdpdGggLW1jbW9k ZWw9a2VybmVsXG4iLAotCSAgICAgICBtZS0+bmFtZSk7CisJcHJfZXJyKCJgJXMnIGxpa2VseSB0 b28gZmFyIGZyb20gdGhlIGtlcm5lbFxuIiwgbWUtPm5hbWUpOwogCXJldHVybiAtRU5PRVhFQzsK IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL21vZHVsZS5sZHMgYi9hcmNo L3g4Ni9rZXJuZWwvbW9kdWxlLmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmZkNmU5NWE0YjQ1NAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gveDg2L2tlcm5lbC9t b2R1bGUubGRzCkBAIC0wLDAgKzEsMyBAQAorU0VDVElPTlMgeworCS5nb3QgKE5PTE9BRCkgOiB7 IEJZVEUoMCkgfQorfQotLSAKMi4xNi4yLjY2MC5nNzA5ODg3OTcxYi1nb29nCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==