From: Thomas Garnier Subject: [PATCH v3 23/27] x86/modules: Adapt module loading for PIE support Date: Wed, 23 May 2018 12:54:17 -0700 Message-ID: <20180523195421.180248-24-thgarnie@google.com> References: <20180523195421.180248-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 , Thomas Garnier , Philippe Ombredanne , Kate Stewart , Arnaldo Carvalho de Melo , Yonghong Song , Andrey Ryabinin , Kees Cook , Tom Lendacky , "Kirill A . Shutemov" , Andy Lutomirski , Dominik Brodowski , Borislav Petkov , Borislav Petkov , "Rafael J . Wysocki" , Len Return-path: In-Reply-To: <20180523195421.180248-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 IGIvYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggMjc3ZmZjNTdhZTEzLi4yMGJiNmNiZDg5MzggMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL2FyY2gveDg2L01ha2VmaWxlCkBAIC0x MzQsNyArMTM0LDExIEBAIGVsc2UKICAgICAgICAgS0JVSUxEX0NGTEFHUyArPSAkKGNmbGFncy15 KQogCiAgICAgICAgIEtCVUlMRF9DRkxBR1MgKz0gLW1uby1yZWQtem9uZQoraWZkZWYgQ09ORklH X1g4Nl9QSUUKKyAgICAgICAgS0JVSUxEX0xERkxBR1NfTU9EVUxFICs9IC1UICQoc3JjdHJlZSkv YXJjaC94ODYva2VybmVsL21vZHVsZS5sZHMKK2Vsc2UKICAgICAgICAgS0JVSUxEX0NGTEFHUyAr PSAtbWNtb2RlbD1rZXJuZWwKK2VuZGlmCiAKICAgICAgICAgIyAtZnVuaXQtYXQtYS10aW1lIHNo cmlua3MgdGhlIGtlcm5lbCAudGV4dCBjb25zaWRlcmFibHkKICAgICAgICAgIyB1bmZvcnR1bmF0 ZWx5IGl0IG1ha2VzIHJlYWRpbmcgb29wc2VzIGhhcmRlci4KZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL21vZHVsZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbW9kdWxlLmgKaW5k ZXggNzk0OGExN2ZlYmI0Li42OGZmMDVlMTQyODggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1 ZGUvYXNtL21vZHVsZS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL21vZHVsZS5oCkBAIC01 LDEyICs1LDIzIEBACiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbW9kdWxlLmg+CiAjaW5jbHVkZSA8 YXNtL29yY190eXBlcy5oPgogCisjaWZkZWYgQ09ORklHX1g4Nl9QSUUKK3N0cnVjdCBtb2RfZ290 X3NlYyB7CisJc3RydWN0IGVsZjY0X3NoZHIJKmdvdDsKKwlpbnQJCQlnb3RfbnVtX2VudHJpZXM7 CisJaW50CQkJZ290X21heF9lbnRyaWVzOworfTsKKyNlbmRpZgorCiBzdHJ1Y3QgbW9kX2FyY2hf c3BlY2lmaWMgewogI2lmZGVmIENPTkZJR19VTldJTkRFUl9PUkMKIAl1bnNpZ25lZCBpbnQgbnVt X29yY3M7CiAJaW50ICpvcmNfdW53aW5kX2lwOwogCXN0cnVjdCBvcmNfZW50cnkgKm9yY191bndp bmQ7CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfWDg2X1BJRQorCXN0cnVjdCBtb2RfZ290X3NlYwlj b3JlOworI2VuZGlmCiB9OwogCiAjaWZkZWYgQ09ORklHX1g4Nl82NApkaWZmIC0tZ2l0IGEvYXJj aC94ODYvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlY3Rp b25zLmgKaW5kZXggZGEzZDk4YmIyYmNiLi44OWIzYTk1YzhkMTEgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NlY3Rpb25zLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc2Vj dGlvbnMuaApAQCAtMTcsNCArMTcsOCBAQCBleHRlcm4gY2hhciBfX2VudHJ5X3RyYW1wb2xpbmVf c3RhcnRbXSwgX19lbnRyeV90cmFtcG9saW5lX2VuZFtdOwogZXh0ZXJuIGNoYXIgX19zdGFydF9n b3RbXSwgX19lbmRfZ290W107CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQ09ORklHX1g4Nl9QSUUp CitleHRlcm4gY2hhciBfX3N0YXJ0X2dvdFtdLCBfX2VuZF9nb3RbXTsKKyNlbmRpZgorCiAjZW5k aWYJLyogX0FTTV9YODZfU0VDVElPTlNfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVs L21vZHVsZS5jIGIvYXJjaC94ODYva2VybmVsL21vZHVsZS5jCmluZGV4IGY1ODMzNmFmMDk1Yy4u ODg4OTVmM2Q0NzRiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmMKKysrIGIv YXJjaC94ODYva2VybmVsL21vZHVsZS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8bGlu dXgvZ2ZwLmg+CiAjaW5jbHVkZSA8bGludXgvanVtcF9sYWJlbC5oPgogI2luY2x1ZGUgPGxpbnV4 L3JhbmRvbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4KIAogI2luY2x1ZGUgPGFzbS90ZXh0 LXBhdGNoaW5nLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KQEAgLTc3LDYgKzc4LDE3MyBAQCBz dGF0aWMgdW5zaWduZWQgbG9uZyBpbnQgZ2V0X21vZHVsZV9sb2FkX29mZnNldCh2b2lkKQogfQog I2VuZGlmCiAKKyNpZmRlZiBDT05GSUdfWDg2X1BJRQorc3RhdGljIHU2NCBmaW5kX2dvdF9rZXJu ZWxfZW50cnkoRWxmNjRfU3ltICpzeW0sIGNvbnN0IEVsZjY0X1JlbGEgKnJlbGEpCit7CisJdTY0 ICpwb3M7CisKKwlmb3IgKHBvcyA9ICh1NjQqKV9fc3RhcnRfZ290OyBwb3MgPCAodTY0KilfX2Vu ZF9nb3Q7IHBvcysrKSB7CisJCWlmICgqcG9zID09IHN5bS0+c3RfdmFsdWUpCisJCQlyZXR1cm4g KHU2NClwb3MgKyByZWxhLT5yX2FkZGVuZDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHU2NCBtb2R1bGVfZW1pdF9nb3RfZW50cnkoc3RydWN0IG1vZHVsZSAqbW9kLCB2b2lkICpsb2Ms CisJCQkJIGNvbnN0IEVsZjY0X1JlbGEgKnJlbGEsIEVsZjY0X1N5bSAqc3ltKQoreworCXN0cnVj dCBtb2RfZ290X3NlYyAqZ290c2VjID0gJm1vZC0+YXJjaC5jb3JlOworCXU2NCAqZ290ID0gKHU2 NCopZ290c2VjLT5nb3QtPnNoX2FkZHI7CisJaW50IGkgPSBnb3RzZWMtPmdvdF9udW1fZW50cmll czsKKwl1NjQgcmV0OworCisJLyogQ2hlY2sgaWYgd2UgY2FuIHVzZSB0aGUga2VybmVsIEdPVCAq LworCXJldCA9IGZpbmRfZ290X2tlcm5lbF9lbnRyeShzeW0sIHJlbGEpOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CisKKwlnb3RbaV0gPSBzeW0tPnN0X3ZhbHVlOworCisJLyoKKwkgKiBDaGVj ayBpZiB0aGUgZW50cnkgd2UganVzdCBjcmVhdGVkIGlzIGEgZHVwbGljYXRlLiBHaXZlbiB0aGF0 IHRoZQorCSAqIHJlbG9jYXRpb25zIGFyZSBzb3J0ZWQsIHRoaXMgd2lsbCBiZSB0aGUgbGFzdCBl bnRyeSB3ZSBhbGxvY2F0ZWQuCisJICogKGlmIG9uZSBleGlzdHMpLgorCSAqLworCWlmIChpID4g MCAmJiBnb3RbaV0gPT0gZ290W2kgLSAyXSkgeworCQlyZXQgPSAodTY0KSZnb3RbaSAtIDFdOwor CX0gZWxzZSB7CisJCWdvdHNlYy0+Z290X251bV9lbnRyaWVzKys7CisJCUJVR19PTihnb3RzZWMt PmdvdF9udW1fZW50cmllcyA+IGdvdHNlYy0+Z290X21heF9lbnRyaWVzKTsKKwkJcmV0ID0gKHU2 NCkmZ290W2ldOworCX0KKworCXJldHVybiByZXQgKyByZWxhLT5yX2FkZGVuZDsKK30KKworI2Rl ZmluZSBjbXBfM3dheShhLGIpCSgoYSkgPCAoYikgPyAtMSA6IChhKSA+IChiKSkKKworc3RhdGlj IGludCBjbXBfcmVsYShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWNvbnN0IEVs ZjY0X1JlbGEgKnggPSBhLCAqeSA9IGI7CisJaW50IGk7CisKKwkvKiBzb3J0IGJ5IHR5cGUsIHN5 bWJvbCBpbmRleCBhbmQgYWRkZW5kICovCisJaSA9IGNtcF8zd2F5KEVMRjY0X1JfVFlQRSh4LT5y X2luZm8pLCBFTEY2NF9SX1RZUEUoeS0+cl9pbmZvKSk7CisJaWYgKGkgPT0gMCkKKwkJaSA9IGNt cF8zd2F5KEVMRjY0X1JfU1lNKHgtPnJfaW5mbyksIEVMRjY0X1JfU1lNKHktPnJfaW5mbykpOwor CWlmIChpID09IDApCisJCWkgPSBjbXBfM3dheSh4LT5yX2FkZGVuZCwgeS0+cl9hZGRlbmQpOwor CXJldHVybiBpOworfQorCitzdGF0aWMgYm9vbCBkdXBsaWNhdGVfcmVsKGNvbnN0IEVsZjY0X1Jl bGEgKnJlbGEsIGludCBudW0pCit7CisJLyoKKwkgKiBFbnRyaWVzIGFyZSBzb3J0ZWQgYnkgdHlw ZSwgc3ltYm9sIGluZGV4IGFuZCBhZGRlbmQuIFRoYXQgbWVhbnMKKwkgKiB0aGF0LCBpZiBhIGR1 cGxpY2F0ZSBlbnRyeSBleGlzdHMsIGl0IG11c3QgYmUgaW4gdGhlIHByZWNlZGluZworCSAqIHNs b3QuCisJICovCisJcmV0dXJuIG51bSA+IDAgJiYgY21wX3JlbGEocmVsYSArIG51bSwgcmVsYSAr IG51bSAtIDEpID09IDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY291bnRfZ290cyhFbGY2 NF9TeW0gKnN5bXMsIEVsZjY0X1JlbGEgKnJlbGEsIGludCBudW0pCit7CisJdW5zaWduZWQgaW50 IHJldCA9IDA7CisJRWxmNjRfU3ltICpzOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG51 bTsgaSsrKSB7CisJCXN3aXRjaCAoRUxGNjRfUl9UWVBFKHJlbGFbaV0ucl9pbmZvKSkgeworCQlj YXNlIFJfWDg2XzY0X0dPVFBDUkVMOgorCQkJcyA9IHN5bXMgKyBFTEY2NF9SX1NZTShyZWxhW2ld LnJfaW5mbyk7CisKKwkJCS8qCisJCQkgKiBVc2UgdGhlIGtlcm5lbCBHT1Qgd2hlbiBwb3NzaWJs ZSwgZWxzZSByZXNlcnZlIGEKKwkJCSAqIGN1c3RvbSBvbmUgZm9yIHRoaXMgbW9kdWxlLgorCQkJ ICovCisJCQlpZiAoIWR1cGxpY2F0ZV9yZWwocmVsYSwgaSkgJiYKKwkJCSAgICAhZmluZF9nb3Rf a2VybmVsX2VudHJ5KHMsIHJlbGEgKyBpKSkKKwkJCQlyZXQrKzsKKwkJCWJyZWFrOworCQl9CisJ fQorCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBHZW5lcmF0ZSBHT1QgZW50cmllcyBmb3IgR09U UENSRUwgcmVsb2NhdGlvbnMgdGhhdCBkbyBub3QgZXhpc3RzIGluIHRoZQorICoga2VybmVsIEdP VC4gQmFzZWQgb24gYXJtNjQgbW9kdWxlLXBsdHMgaW1wbGVtZW50YXRpb24uCisgKi8KK2ludCBt b2R1bGVfZnJvYl9hcmNoX3NlY3Rpb25zKEVsZl9FaGRyICplaGRyLCBFbGZfU2hkciAqc2VjaGRy cywKKwkJCSAgICAgIGNoYXIgKnNlY3N0cmluZ3MsIHN0cnVjdCBtb2R1bGUgKm1vZCkKK3sKKwl1 bnNpZ25lZCBsb25nIGdvdHMgPSAwOworCUVsZl9TaGRyICpzeW10YWIgPSBOVUxMOworCUVsZjY0 X1N5bSAqc3ltcyA9IE5VTEw7CisJY2hhciAqc3RyaW5ncywgKm5hbWU7CisJaW50IGk7CisKKwkv KgorCSAqIEZpbmQgdGhlIGVtcHR5IC5nb3Qgc2VjdGlvbiBzbyB3ZSBjYW4gZXhwYW5kIGl0IHRv IHN0b3JlIHRoZSBQTFQKKwkgKiBlbnRyaWVzLiBSZWNvcmQgdGhlIHN5bXRhYiBhZGRyZXNzIGFz IHdlbGwuCisJICovCisJZm9yIChpID0gMDsgaSA8IGVoZHItPmVfc2hudW07IGkrKykgeworCQlp ZiAoIXN0cmNtcChzZWNzdHJpbmdzICsgc2VjaGRyc1tpXS5zaF9uYW1lLCAiLmdvdCIpKSB7CisJ CQltb2QtPmFyY2guY29yZS5nb3QgPSBzZWNoZHJzICsgaTsKKwkJfSBlbHNlIGlmIChzZWNoZHJz W2ldLnNoX3R5cGUgPT0gU0hUX1NZTVRBQikgeworCQkJc3ltdGFiID0gc2VjaGRycyArIGk7CisJ CQlzeW1zID0gKEVsZjY0X1N5bSAqKXN5bXRhYi0+c2hfYWRkcjsKKwkJfQorCX0KKworCWlmICgh bW9kLT5hcmNoLmNvcmUuZ290KSB7CisJCXByX2VycigiJXM6IG1vZHVsZSBHT1Qgc2VjdGlvbiBt aXNzaW5nXG4iLCBtb2QtPm5hbWUpOworCQlyZXR1cm4gLUVOT0VYRUM7CisJfQorCWlmICghc3lt cykgeworCQlwcl9lcnIoIiVzOiBtb2R1bGUgc3ltdGFiIHNlY3Rpb24gbWlzc2luZ1xuIiwgbW9k LT5uYW1lKTsKKwkJcmV0dXJuIC1FTk9FWEVDOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBlaGRy LT5lX3NobnVtOyBpKyspIHsKKwkJRWxmNjRfUmVsYSAqcmVscyA9ICh2b2lkICopZWhkciArIHNl Y2hkcnNbaV0uc2hfb2Zmc2V0OworCQlpbnQgbnVtcmVscyA9IHNlY2hkcnNbaV0uc2hfc2l6ZSAv IHNpemVvZihFbGY2NF9SZWxhKTsKKworCQlpZiAoc2VjaGRyc1tpXS5zaF90eXBlICE9IFNIVF9S RUxBKQorCQkJY29udGludWU7CisKKwkJLyogc29ydCBieSB0eXBlLCBzeW1ib2wgaW5kZXggYW5k IGFkZGVuZCAqLworCQlzb3J0KHJlbHMsIG51bXJlbHMsIHNpemVvZihFbGY2NF9SZWxhKSwgY21w X3JlbGEsIE5VTEwpOworCisJCWdvdHMgKz0gY291bnRfZ290cyhzeW1zLCByZWxzLCBudW1yZWxz KTsKKwl9CisKKwltb2QtPmFyY2guY29yZS5nb3QtPnNoX3R5cGUgPSBTSFRfTk9CSVRTOworCW1v ZC0+YXJjaC5jb3JlLmdvdC0+c2hfZmxhZ3MgPSBTSEZfQUxMT0M7CisJbW9kLT5hcmNoLmNvcmUu Z290LT5zaF9hZGRyYWxpZ24gPSBMMV9DQUNIRV9CWVRFUzsKKwltb2QtPmFyY2guY29yZS5nb3Qt PnNoX3NpemUgPSAoZ290cyArIDEpICogc2l6ZW9mKHU2NCk7CisJbW9kLT5hcmNoLmNvcmUuZ290 X251bV9lbnRyaWVzID0gMDsKKwltb2QtPmFyY2guY29yZS5nb3RfbWF4X2VudHJpZXMgPSBnb3Rz OworCisJLyoKKwkgKiBJZiBhIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXyBzeW1ib2wgZXhpc3RzLCBt YWtlIGl0IGFic29sdXRlIGZvcgorCSAqIG1vZHVsZXMgdG8gY29ycmVjdGx5IHJlZmVyZW5jZSBp dC4gU2ltaWxhciB0byBzMzkwIGltcGxlbWVudGF0aW9uLgorCSAqLworCXN0cmluZ3MgPSAodm9p ZCAqKSBlaGRyICsgc2VjaGRyc1tzeW10YWItPnNoX2xpbmtdLnNoX29mZnNldDsKKwlmb3IgKGkg PSAwOyBpIDwgc3ltdGFiLT5zaF9zaXplL3NpemVvZihFbGZfU3ltKTsgaSsrKSB7CisJCWlmIChz eW1zW2ldLnN0X3NobmR4ICE9IFNITl9VTkRFRikKKwkJCWNvbnRpbnVlOworCQluYW1lID0gc3Ry aW5ncyArIHN5bXNbaV0uc3RfbmFtZTsKKwkJaWYgKCFzdHJjbXAobmFtZSwgIl9HTE9CQUxfT0ZG U0VUX1RBQkxFXyIpKSB7CisJCQlzeW1zW2ldLnN0X3NobmR4ID0gU0hOX0FCUzsKKwkJCWJyZWFr OworCQl9CisJfQorCXJldHVybiAwOworfQorI2VuZGlmCisKIHZvaWQgKm1vZHVsZV9hbGxvYyh1 bnNpZ25lZCBsb25nIHNpemUpCiB7CiAJdm9pZCAqcDsKQEAgLTE5MCwxNiArMzU4LDIwIEBAIGlu dCBhcHBseV9yZWxvY2F0ZV9hZGQoRWxmNjRfU2hkciAqc2VjaGRycywKIAkJCWlmICgoczY0KXZh bCAhPSAqKHMzMiAqKWxvYykKIAkJCQlnb3RvIG92ZXJmbG93OwogCQkJYnJlYWs7CisjaWZkZWYg Q09ORklHX1g4Nl9QSUUKKwkJY2FzZSBSX1g4Nl82NF9HT1RQQ1JFTDoKKwkJCXZhbCA9IG1vZHVs ZV9lbWl0X2dvdF9lbnRyeShtZSwgbG9jLCByZWwgKyBpLCBzeW0pOworCQkJLyogZmFsbHRocm91 Z2ggKi8KKyNlbmRpZgogCQljYXNlIFJfWDg2XzY0X1BDMzI6CiAJCWNhc2UgUl9YODZfNjRfUExU MzI6CiAJCQlpZiAoKih1MzIgKilsb2MgIT0gMCkKIAkJCQlnb3RvIGludmFsaWRfcmVsb2NhdGlv bjsKIAkJCXZhbCAtPSAodTY0KWxvYzsKIAkJCSoodTMyICopbG9jID0gdmFsOwotI2lmIDAKLQkJ CWlmICgoczY0KXZhbCAhPSAqKHMzMiAqKWxvYykKKwkJCWlmIChJU19FTkFCTEVEKENPTkZJR19Y ODZfUElFKSAmJgorCQkJICAgIChzNjQpdmFsICE9ICooczMyICopbG9jKQogCQkJCWdvdG8gb3Zl cmZsb3c7Ci0jZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcHJfZXJyKCIlczogVW5r bm93biByZWxhIHJlbG9jYXRpb246ICVsbHVcbiIsCkBAIC0yMTcsOCArMzg5LDcgQEAgaW50IGFw cGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpzZWNoZHJzLAogb3ZlcmZsb3c6CiAJcHJfZXJy KCJvdmVyZmxvdyBpbiByZWxvY2F0aW9uIHR5cGUgJWQgdmFsICVMeFxuIiwKIAkgICAgICAgKGlu dClFTEY2NF9SX1RZUEUocmVsW2ldLnJfaW5mbyksIHZhbCk7Ci0JcHJfZXJyKCJgJXMnIGxpa2Vs eSBub3QgY29tcGlsZWQgd2l0aCAtbWNtb2RlbD1rZXJuZWxcbiIsCi0JICAgICAgIG1lLT5uYW1l KTsKKwlwcl9lcnIoImAlcycgbGlrZWx5IHRvbyBmYXIgZnJvbSB0aGUga2VybmVsXG4iLCBtZS0+ bmFtZSk7CiAJcmV0dXJuIC1FTk9FWEVDOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rZXJuZWwvbW9kdWxlLmxkcyBiL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUubGRzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmQ2ZTk1YTRiNDU0Ci0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC94ODYva2VybmVsL21vZHVsZS5sZHMKQEAgLTAsMCArMSwzIEBACitTRUNU SU9OUyB7CisJLmdvdCAoTk9MT0FEKSA6IHsgQllURSgwKSB9Cit9Ci0tIAoyLjE3LjAuNDQxLmdi NDZmZTYwZTFkLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs