Date: Mon, 30 Aug 2010 13:10:56 -0600 From: "Couch, Tom" <Tom.Couch@lsi.com> To: "FreeBSD-gnats-submit@FreeBSD.org" <FreeBSD-gnats-submit@FreeBSD.org>, "freebsd-bugs@FreeBSD.org" <freebsd-bugs@FreeBSD.org> Subject: RE: kern/149968: Kernel panic with ZFS and twa version 3.80.06.002 Message-ID: <27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504C@cosmail03.lsi.com> In-Reply-To: <201008251830.o7PIU6fK019184@freefall.freebsd.org> References: Your message of Wed, 25 Aug 2010 18:28:49 GMT <201008251828.o7PISnUL062450@www.freebsd.org> <201008251830.o7PIU6fK019184@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Ccosmail03lsicom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Attaching patch FreeBSD_RELENG_7_src_sys_dev_twa.txt for RELENG_7. Tom Couch -----Original Message----- From: FreeBSD-gnats-submit@FreeBSD.org [mailto:FreeBSD-gnats-submit@FreeBSD= .org]=20 Sent: Wednesday, August 25, 2010 11:30 AM To: Couch, Tom Subject: Re: kern/149968: Kernel panic with ZFS and twa version 3.80.06.002 Thank you very much for your problem report. It has the internal identification `kern/149968'. The individual assigned to look at your report is: freebsd-bugs.=20 You can access the state of your problem report at any time via this link: http://www.freebsd.org/cgi/query-pr.cgi?pr=3D149968 >Category: kern >Responsible: freebsd-bugs >Synopsis: Kernel panic with ZFS and twa version 3.80.06.002 >Arrival-Date: Wed Aug 25 18:30:06 UTC 2010 --_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Ccosmail03lsicom_ Content-Type: text/plain; name="FreeBSD_RELENG_7_src_sys_dev_twa.txt" Content-Description: FreeBSD_RELENG_7_src_sys_dev_twa.txt Content-Disposition: attachment; filename="FreeBSD_RELENG_7_src_sys_dev_twa.txt"; size=45377; creation-date="Thu, 26 Aug 2010 16:56:26 GMT"; modification-date="Thu, 26 Aug 2010 16:56:26 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSBGcmVlQlNEX1JFTEVOR183X3R3YV9jdnMvdHdfY2wuaCBGcmVlQlNEN190d2FfM183 MF8wNV8wMTAvdHdfY2wuaAotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3ZzL3R3X2NsLmgJMjAx MC0wOC0yNiAxNTozNTowMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q3X3R3YV8zXzcwXzA1 XzAxMC90d19jbC5oCTIwMTAtMDgtMjQgMTg6MDE6MTMuMDAwMDAwMDAwIC0wNzAwCkBAIC04OCw3 ICs4OCw4IEBACiAjZGVmaW5lIFRXX0NMSV9CVVNZX1EJCTEJLyogcSBvZiByZXFzIHN1Ym1pdHRl ZCB0byBmdyAqLwogI2RlZmluZSBUV19DTElfUEVORElOR19RCTIJLyogcSBvZiByZXFzIGRlZmVy cmVkIGR1ZSB0byAncSBmdWxsJyAqLwogI2RlZmluZSBUV19DTElfQ09NUExFVEVfUQkzCS8qIHEg b2YgcmVxcyBjb21wbGV0ZWQgYnkgZncgKi8KLSNkZWZpbmUgVFdfQ0xJX1FfQ09VTlQJCTQJLyog dG90YWwgbnVtYmVyIG9mIHF1ZXVlcyAqLworI2RlZmluZSBUV19DTElfUkVTRVRfUQkJNAkvKiBx IG9mIHJlcXMgcmVzZXQgYnkgdGltZW91dCAqLworI2RlZmluZSBUV19DTElfUV9DT1VOVAkJNQkv KiB0b3RhbCBudW1iZXIgb2YgcXVldWVzICovCiAKIAogLyogQ0wncyBpbnRlcm5hbCByZXF1ZXN0 IGNvbnRleHQuICovCkBAIC0xMzMsNiArMTM0LDcgQEAKIAlUV19VSU5UOCAJCWludGVycnVwdHNf ZW5hYmxlZDsJICAvKiBJbnRlcnJ1cHRzIG9uIGNvbnRyb2xsZXIgZW5hYmxlZC4gKi8KIAlUV19V SU5UOCAJCWludGVybmFsX3JlcV9idXN5OwkgIC8qIERhdGEgYnVmZmVyIGZvciBpbnRlcm5hbCBy ZXF1ZXN0cyBpbiB1c2UuICovCiAJVFdfVUlOVDggCQlnZXRfbW9yZV9hZW5zOwkJICAvKiBNb3Jl IEFFTidzIG5lZWQgdG8gYmUgcmV0cmlldmVkLiAqLworCVRXX1VJTlQ4IAkJcmVzZXRfbmVlZGVk OwkJICAvKiBDb250cm9sbGVyIG5lZWRzIGEgc29mdCByZXNldC4gKi8KIAlUV19VSU5UOCAJCXJl c2V0X2luX3Byb2dyZXNzOwkgIC8qIENvbnRyb2xsZXIgaXMgYmVpbmcgcmVzZXQuICovCiAJVFdf VUlOVDggCQlyZXNldF9waGFzZTFfaW5fcHJvZ3Jlc3M7IC8qIEluICdwaGFzZSAxJyBvZiByZXNl dC4gKi8KIAlUV19VSU5UMzIJCWZsYWdzOwkJLyogY29udHJvbGxlciBzZXR0aW5ncyAqLwpkaWZm IC11IEZyZWVCU0RfUkVMRU5HXzdfdHdhX2N2cy90d19jbF9leHRlcm5zLmggRnJlZUJTRDdfdHdh XzNfNzBfMDVfMDEwL3R3X2NsX2V4dGVybnMuaAotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3Zz L3R3X2NsX2V4dGVybnMuaAkyMDEwLTA4LTI2IDE1OjM1OjAwLjAwMDAwMDAwMCAtMDcwMAorKysg RnJlZUJTRDdfdHdhXzNfNzBfMDVfMDEwL3R3X2NsX2V4dGVybnMuaAkyMDEwLTA4LTI0IDE4OjAx OjEzLjAwMDAwMDAwMCAtMDcwMApAQCAtODYsNiArODYsOCBAQAogCiAvKiBTb2Z0IHJlc2V0IHRo ZSBjb250cm9sbGVyLiAqLwogZXh0ZXJuIFRXX0lOVDMyCXR3X2NsaV9zb2Z0X3Jlc2V0KHN0cnVj dCB0d19jbGlfY3Rscl9jb250ZXh0ICpjdGxyKTsKK2V4dGVybiBpbnQgdHdhX3NldHVwX2ludHIo c3RydWN0IHR3YV9zb2Z0YyAqc2MpOworZXh0ZXJuIGludCB0d2FfdGVhcmRvd25faW50cihzdHJ1 Y3QgdHdhX3NvZnRjICpzYyk7CiAKIC8qIFNlbmQgZG93biBhIFNDU0kgY29tbWFuZCB0byB0aGUg ZmlybXdhcmUgKHVzdWFsbHksIGFuIGludGVybmFsIFJlcSBTZW5zZS4gKi8KIGV4dGVybiBUV19J TlQzMgl0d19jbGlfc2VuZF9zY3NpX2NtZChzdHJ1Y3QgdHdfY2xpX3JlcV9jb250ZXh0ICpyZXEs CmRpZmYgLXUgRnJlZUJTRF9SRUxFTkdfN190d2FfY3ZzL3R3X2NsX2Z3aWYuaCBGcmVlQlNEN190 d2FfM183MF8wNV8wMTAvdHdfY2xfZndpZi5oCi0tLSBGcmVlQlNEX1JFTEVOR183X3R3YV9jdnMv dHdfY2xfZndpZi5oCTIwMTAtMDgtMjYgMTU6MzU6MDAuMDAwMDAwMDAwIC0wNzAwCisrKyBGcmVl QlNEN190d2FfM183MF8wNV8wMTAvdHdfY2xfZndpZi5oCTIwMTAtMDgtMjQgMTg6MDE6MTMuMDAw MDAwMDAwIC0wNzAwCkBAIC04OSw3ICs4OSw3IEBACiAjZGVmaW5lIFRXQV9TVEFUVVNfTUlOT1Jf VkVSU0lPTl9NQVNLCQkweDBGMDAwMDAwCiAjZGVmaW5lIFRXQV9TVEFUVVNfTUFKT1JfVkVSU0lP Tl9NQVNLCQkweEYwMDAwMDAwCiAKLSNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJ CTB4MDBGMDAwMDAKKyNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJCTB4MDBEMDAw MDAKIAogCiAvKiBQQ0kgcmVsYXRlZCBkZWZpbmVzLiAqLwpkaWZmIC11IEZyZWVCU0RfUkVMRU5H XzdfdHdhX2N2cy90d19jbF9pbml0LmMgRnJlZUJTRDdfdHdhXzNfNzBfMDVfMDEwL3R3X2NsX2lu aXQuYwotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3ZzL3R3X2NsX2luaXQuYwkyMDEwLTA4LTI2 IDE1OjM1OjAwLjAwMDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRDdfdHdhXzNfNzBfMDVfMDEwL3R3 X2NsX2luaXQuYwkyMDEwLTA4LTI0IDE4OjAxOjEzLjAwMDAwMDAwMCAtMDcwMApAQCAtMzE1LDYg KzMxNSw3IEBACiAJdHdfY2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX0JVU1lfUSk7CiAJdHdf Y2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSk7CiAJdHdfY2xpX3JlcV9xX2lu aXQoY3RsciwgVFdfQ0xJX0NPTVBMRVRFX1EpOworCXR3X2NsaV9yZXFfcV9pbml0KGN0bHIsIFRX X0NMSV9SRVNFVF9RKTsKIAogCS8qIEluaXRpYWxpemUgYWxsIGxvY2tzIHVzZWQgYnkgQ0wuICov CiAJY3Rsci0+Z2VuX2xvY2sgPSAmKGN0bHItPmdlbl9sb2NrX2hhbmRsZSk7CkBAIC02NzUsMTUg KzY3NiwxNCBAQAogCS8qIFN1Ym1pdCB0aGUgY29tbWFuZCwgYW5kIHdhaXQgZm9yIGl0IHRvIGNv bXBsZXRlLiAqLwogCWVycm9yID0gdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwK IAkJVFdfQ0xJX1JFUVVFU1RfVElNRU9VVF9QRVJJT0QpOwotCWlmIChlcnJvciA9PSBUV19PU0xf RVRJTUVET1VUKQotCQkvKiBDbGVhbi11cCBkb25lIGJ5IHR3X2NsaV9zdWJtaXRfYW5kX3BvbGxf cmVxdWVzdC4gKi8KLQkJcmV0dXJuKGVycm9yKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0Owog CWlmICgoZXJyb3IgPSBpbml0X2Nvbm5lY3QtPnN0YXR1cykpIHsKKyNpZiAgICAgICAwCiAJCXR3 X2NsaV9jcmVhdGVfY3Rscl9ldmVudChjdGxyLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09O VFJPTExFUl9FUlJPUiwKIAkJCSYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjZW5kaWYgLy8g MAogCQlnb3RvIG91dDsKIAl9CiAJaWYgKHNldF9mZWF0dXJlcyAmIFRXQV9FWFRFTkRFRF9JTklU X0NPTk5FQ1QpIHsKZGlmZiAtdSBGcmVlQlNEX1JFTEVOR183X3R3YV9jdnMvdHdfY2xfaW50ci5j IEZyZWVCU0Q3X3R3YV8zXzcwXzA1XzAxMC90d19jbF9pbnRyLmMKLS0tIEZyZWVCU0RfUkVMRU5H XzdfdHdhX2N2cy90d19jbF9pbnRyLmMJMjAxMC0wOC0yNiAxNTozNTowMC4wMDAwMDAwMDAgLTA3 MDAKKysrIEZyZWVCU0Q3X3R3YV8zXzcwXzA1XzAxMC90d19jbF9pbnRyLmMJMjAxMC0wOC0yNCAx ODowMToxMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTI0OCw4ICsyNDgsNyBAQAogI2lmZGVmIFRXX09T TF9ERUJVRwogCQkJdHdfY2xfcHJpbnRfY3Rscl9zdGF0cyhjdGxyLT5jdGxyX2hhbmRsZSk7CiAj ZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCi0JCQl0d19jbF9yZXNldF9jdGxyKGN0bHItPmN0bHJf aGFuZGxlKTsKLQkJCXJldHVybihUV19PU0xfRUlPKTsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJ LyoKQEAgLTQwMiw5ICs0MDEsNyBAQAogI2lmZGVmIFRXX09TTF9ERUJVRwogCQl0d19jbF9wcmlu dF9jdGxyX3N0YXRzKGN0bHItPmN0bHJfaGFuZGxlKTsKICNlbmRpZiAvKiBUV19PU0xfREVCVUcg Ki8KLQkJdHdfY2xfcmVzZXRfY3RscihjdGxyLT5jdGxyX2hhbmRsZSk7Ci0JCXJlcV9wa3QtPnN0 YXR1cyA9IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuOwog CX0KIAogCWlmIChyZXEtPmZsYWdzICYgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSkgewpAQCAt NDgzLDYgKzQ4MCw3IEBACiAJCQljZGJbOF0sIGNkYls5XSwgY2RiWzEwXSwgY2RiWzExXSwKIAkJ CWNkYlsxMl0sIGNkYlsxM10sIGNkYlsxNF0sIGNkYlsxNV0pOwogCisjaWYgICAgICAgMAogCQkv KiAKIAkJICogUHJpbnQgdGhlIGVycm9yLiBGaXJtd2FyZSBkb2Vzbid0IHlldCBzdXBwb3J0CiAJ CSAqIHRoZSAnTW9kZSBTZW5zZScgY21kLiAgRG9uJ3QgcHJpbnQgaWYgdGhlIGNtZApAQCAtNDkz LDYgKzQ5MSw3IEBACiAJCQl0d19jbGlfY3JlYXRlX2N0bHJfZXZlbnQocmVxLT5jdGxyLAogCQkJ CVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTlRST0xMRVJfRVJST1IsCiAJCQkJY21kX2hkcik7Cisj ZW5kaWYgLy8gMAogCX0KIAogCWlmIChzY3NpX3JlcS0+c2Vuc2VfZGF0YSkgewpAQCAtNTMwLDkg KzUyOSwxMSBAQAogCSAqLwogCWlmICghIHJlcS0+ZXJyb3JfY29kZSkKIAkJaWYgKGNtZC0+cGFy YW0uc3RhdHVzKSB7CisjaWYgICAgICAgMAogCQkJdHdfY2xpX2NyZWF0ZV9jdGxyX2V2ZW50KGN0 bHIsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09OVFJPTExFUl9FUlJPUiwKIAkJCQkmKHJl cS0+Y21kX3BrdC0+Y21kX2hkcikpOworI2VuZGlmIC8vIDAKIAkJCXR3X2NsX2NyZWF0ZV9ldmVu dChjdGxyLT5jdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VS Q0VfQ09NTU9OX0xBWUVSX0VSUk9SLAogCQkJCTB4MTIwNCwgMHgxLCBUV19DTF9TRVZFUklUWV9F UlJPUl9TVFJJTkcsCkBAIC01OTAsOSArNTkxLDExIEBACiAJCWlmICgoZXJyb3IgPSBjbWQtPnN0 YXR1cykpIHsKIAkJCWNtZF9oZHIgPSAoc3RydWN0IHR3X2NsX2NvbW1hbmRfaGVhZGVyICopCiAJ CQkJKCYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjaWYgICAgICAgMAogCQkJdHdfY2xpX2Ny ZWF0ZV9jdGxyX2V2ZW50KGN0bHIsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09OVFJPTExF Ul9FUlJPUiwKIAkJCQljbWRfaGRyKTsKKyNlbmRpZiAvLyAwCiAJCQl0d19jbF9jcmVhdGVfZXZl bnQoY3Rsci0+Y3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQkJCVRXX0NMX01FU1NBR0VfU09V UkNFX0NPTU1PTl9MQVlFUl9FUlJPUiwKIAkJCQkweDEyMDYsIDB4MSwgVFdfQ0xfU0VWRVJJVFlf RVJST1JfU1RSSU5HLApkaWZmIC11IEZyZWVCU0RfUkVMRU5HXzdfdHdhX2N2cy90d19jbF9pby5j IEZyZWVCU0Q3X3R3YV8zXzcwXzA1XzAxMC90d19jbF9pby5jCi0tLSBGcmVlQlNEX1JFTEVOR183 X3R3YV9jdnMvdHdfY2xfaW8uYwkyMDEwLTA4LTI2IDE1OjM1OjAwLjAwMDAwMDAwMCAtMDcwMAor KysgRnJlZUJTRDdfdHdhXzNfNzBfMDVfMDEwL3R3X2NsX2lvLmMJMjAxMC0wOC0yNCAxODowMTox My4wMDAwMDAwMDAgLTA3MDAKQEAgLTc0LDE4ICs3NCwxMiBAQAogCXN0cnVjdCB0d19jbGlfcmVx X2NvbnRleHQJCSpyZXE7CiAJc3RydWN0IHR3X2NsX2NvbW1hbmRfOWsJCQkqY21kOwogCXN0cnVj dCB0d19jbF9zY3NpX3JlcV9wYWNrZXQJCSpzY3NpX3JlcTsKLQlUV19JTlQzMgkJCQllcnJvcjsK KwlUV19JTlQzMgkJCQllcnJvciA9IFRXX0NMX0VSUl9SRVFfU1VDQ0VTUzsKIAogCXR3X2NsaV9k YmdfcHJpbnRmKDEwLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7 CiAKIAljdGxyID0gKHN0cnVjdCB0d19jbGlfY3Rscl9jb250ZXh0ICopKGN0bHJfaGFuZGxlLT5j bF9jdGxyX2N0eHQpOwogCi0JaWYgKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSB7Ci0JCXR3X2Ns aV9kYmdfcHJpbnRmKDIsIGN0bHJfaGFuZGxlLCB0d19vc2xfY3VyX2Z1bmMoKSwKLQkJCSJJL08g ZHVyaW5nIHJlc2V0OiByZXR1cm5pbmcgYnVzeS4iKTsKLQkJcmV0dXJuKFRXX09TTF9FQlVTWSk7 Ci0JfQotCiAJLyoKIAkgKiBJZiB3b3JraW5nIHdpdGggYSBmaXJtd2FyZSB2ZXJzaW9uIHRoYXQg ZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZQogCSAqIGx1bnMsIGFuZCB0aGlzIHJlcXVlc3QgaXMg ZGlyZWN0ZWQgYXQgYSBub24temVybyBsdW4sIGVycm9yIGl0CkBAIC0xNDUsNyArMTM5LDEyIEBA CiAJCQljbWQtPnNnX2xpc3QsIHNjc2lfcmVxLT5zZ2xfZW50cmllcyk7CiAJfQogCi0JaWYgKChl cnJvciA9IHR3X2NsaV9zdWJtaXRfY21kKHJlcSkpKSB7CisJaWYgKCgoVFdfQ0xfUV9GSVJTVF9J VEVNKCYoY3Rsci0+cmVxX3FfaGVhZFtUV19DTElfUEVORElOR19RXSkpKSAhPSBUV19DTF9OVUxM KSB8fAorCQkoY3Rsci0+cmVzZXRfaW5fcHJvZ3Jlc3MpKSB7CisJCXR3X2NsaV9yZXFfcV9pbnNl cnRfdGFpbChyZXEsIFRXX0NMSV9QRU5ESU5HX1EpOworCQlUV19DTElfV1JJVEVfQ09OVFJPTF9S RUdJU1RFUihjdGxyX2hhbmRsZSwKKwkJCVRXQV9DT05UUk9MX1VOTUFTS19DT01NQU5EX0lOVEVS UlVQVCk7CisJfSBlbHNlIGlmICgoZXJyb3IgPSB0d19jbGlfc3VibWl0X2NtZChyZXEpKSkgewog CQl0d19jbGlfZGJnX3ByaW50ZigyLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksCiAJ CQkiQ291bGQgbm90IHN0YXJ0IHJlcXVlc3QuIHJlcXVlc3QgPSAlcCwgZXJyb3IgPSAlZCIsCiAJ CQlyZXEsIGVycm9yKTsKQEAgLTE3MSw3ICsxNzAsNyBAQAogCXN0cnVjdCB0d19jbGlfY3Rscl9j b250ZXh0CSpjdGxyID0gcmVxLT5jdGxyOwogCXN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZQkqY3Rs cl9oYW5kbGUgPSBjdGxyLT5jdGxyX2hhbmRsZTsKIAlUV19VSU5UMzIJCQlzdGF0dXNfcmVnOwot CVRXX0lOVDMyCQkJZXJyb3I7CisJVFdfSU5UMzIJCQllcnJvciA9IDA7CiAKIAl0d19jbGlfZGJn X3ByaW50ZigxMCwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLCAiZW50ZXJlZCIpOwog CkBAIC0xODUsMTEgKzE4NCw3IEBACiAJCQkJIFRXQV9DT01NQU5EX1FVRVVFX09GRlNFVF9MT1cs CiAJCQkJIChUV19VSU5UMzIpKHJlcS0+Y21kX3BrdF9waHlzICsgc2l6ZW9mKHN0cnVjdCB0d19j bF9jb21tYW5kX2hlYWRlcikpLCA0KTsKIAotCS8qIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gcG9z dCBhIGNvbW1hbmQuICovCiAJc3RhdHVzX3JlZyA9IFRXX0NMSV9SRUFEX1NUQVRVU19SRUdJU1RF UihjdGxyX2hhbmRsZSk7Ci0JaWYgKChlcnJvciA9IHR3X2NsaV9jaGVja19jdGxyX3N0YXRlKGN0 bHIsIHN0YXR1c19yZWcpKSkKLQkJZ290byBvdXQ7Ci0KIAlpZiAoc3RhdHVzX3JlZyAmIFRXQV9T VEFUVVNfQ09NTUFORF9RVUVVRV9GVUxMKSB7CiAJCXN0cnVjdCB0d19jbF9yZXFfcGFja2V0CSpy ZXFfcGt0ID0KIAkJCShzdHJ1Y3QgdHdfY2xfcmVxX3BhY2tldCAqKShyZXEtPm9yaWdfcmVxKTsK QEAgLTIwNywxNCArMjAyLDEyIEBACiAJCQkJCSJwZW5kaW5nIGludGVybmFsL2lvY3RsIHJlcXVl c3QiKTsKIAkJCQlyZXEtPnN0YXRlID0gVFdfQ0xJX1JFUV9TVEFURV9QRU5ESU5HOwogCQkJCXR3 X2NsaV9yZXFfcV9pbnNlcnRfdGFpbChyZXEsIFRXX0NMSV9QRU5ESU5HX1EpOwotCQkJCWVycm9y ID0gMDsKIAkJCQkvKiBVbm1hc2sgY29tbWFuZCBpbnRlcnJ1cHQuICovCiAJCQkJVFdfQ0xJX1dS SVRFX0NPTlRST0xfUkVHSVNURVIoY3Rscl9oYW5kbGUsCiAJCQkJCVRXQV9DT05UUk9MX1VOTUFT S19DT01NQU5EX0lOVEVSUlVQVCk7CiAJCQl9IGVsc2UKIAkJCQllcnJvciA9IFRXX09TTF9FQlVT WTsKIAkJfSBlbHNlIHsKLQkJCXR3X29zbF9jdGxyX2J1c3koY3Rscl9oYW5kbGUsIHJlcS0+cmVx X2hhbmRsZSk7CiAJCQllcnJvciA9IFRXX09TTF9FQlVTWTsKIAkJfQogCX0gZWxzZSB7CkBAIC0y NDYsNyArMjM5LDcgQEAKIAkJCQkJCSAoVFdfVUlOVDMyKShyZXEtPmNtZF9wa3RfcGh5cyArIHNp emVvZihzdHJ1Y3QgdHdfY2xfY29tbWFuZF9oZWFkZXIpKSwgNCk7CiAJCX0KIAl9Ci1vdXQ6CisK IAl0d19vc2xfZnJlZV9sb2NrKGN0bHJfaGFuZGxlLCBjdGxyLT5pb19sb2NrKTsKIAogCXJldHVy bihlcnJvcik7CkBAIC0yNzcsMTggKzI3MCwxMiBAQAogCVRXX1VJTlQ4CQkJCW9wY29kZTsKIAlU V19VSU5UOAkJCQlzZ2xfb2Zmc2V0OwogCVRXX1ZPSUQJCQkJCSpzZ2wgPSBUV19DTF9OVUxMOwot CVRXX0lOVDMyCQkJCWVycm9yOworCVRXX0lOVDMyCQkJCWVycm9yID0gVFdfQ0xfRVJSX1JFUV9T VUNDRVNTOwogCiAJdHdfY2xpX2RiZ19wcmludGYoNSwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJf ZnVuYygpLCAiZW50ZXJlZCIpOwogCiAJY3RsciA9IChzdHJ1Y3QgdHdfY2xpX2N0bHJfY29udGV4 dCAqKShjdGxyX2hhbmRsZS0+Y2xfY3Rscl9jdHh0KTsKIAotCWlmIChjdGxyLT5yZXNldF9pbl9w cm9ncmVzcykgewotCQl0d19jbGlfZGJnX3ByaW50ZigyLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1 cl9mdW5jKCksCi0JCQkiUGFzc3RocnUgcmVxdWVzdCBkdXJpbmcgcmVzZXQ6IHJldHVybmluZyBi dXN5LiIpOwotCQlyZXR1cm4oVFdfT1NMX0VCVVNZKTsKLQl9Ci0KIAlpZiAoKHJlcSA9IHR3X2Ns aV9nZXRfcmVxdWVzdChjdGxyCiAJCSkpID09IFRXX0NMX05VTEwpIHsKIAkJdHdfY2xpX2RiZ19w cmludGYoMiwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLApAQCAtMzAxLDcgKzI4OCw3 IEBACiAJcmVxLT5vcmlnX3JlcSA9IHJlcV9wa3Q7CiAJcmVxLT50d19jbGlfY2FsbGJhY2sgPSB0 d19jbGlfY29tcGxldGVfaW87CiAKLQlyZXEtPmZsYWdzIHw9IChUV19DTElfUkVRX0ZMQUdTX0VY VEVSTkFMIHwgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSk7CisJcmVxLT5mbGFncyB8PSBUV19D TElfUkVRX0ZMQUdTX1BBU1NUSFJVOwogCiAJcHRfcmVxID0gJihyZXFfcGt0LT5nZW5fcmVxX3Br dC5wdF9yZXEpOwogCkBAIC0zNDgsNyArMzM1LDEyIEBACiAJCXR3X2NsaV9maWxsX3NnX2xpc3Qo Y3RsciwgcHRfcmVxLT5zZ19saXN0LAogCQkJc2dsLCBwdF9yZXEtPnNnbF9lbnRyaWVzKTsKIAot CWlmICgoZXJyb3IgPSB0d19jbGlfc3VibWl0X2NtZChyZXEpKSkgeworCWlmICgoKFRXX0NMX1Ff RklSU1RfSVRFTSgmKGN0bHItPnJlcV9xX2hlYWRbVFdfQ0xJX1BFTkRJTkdfUV0pKSkgIT0gVFdf Q0xfTlVMTCkgfHwKKwkJKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSkgeworCQl0d19jbGlfcmVx X3FfaW5zZXJ0X3RhaWwocmVxLCBUV19DTElfUEVORElOR19RKTsKKwkJVFdfQ0xJX1dSSVRFX0NP TlRST0xfUkVHSVNURVIoY3Rscl9oYW5kbGUsCisJCQlUV0FfQ09OVFJPTF9VTk1BU0tfQ09NTUFO RF9JTlRFUlJVUFQpOworCX0gZWxzZSBpZiAoKGVycm9yID0gdHdfY2xpX3N1Ym1pdF9jbWQocmVx KSkpIHsKIAkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ CVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FUlJPUiwKIAkJCTB4MTEwMCwgMHgx LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCkBAIC0zNzYsNyArMzY4LDcgQEAKICAqCQkJ bm9uLXplcm8tLSBmYWlsdXJlCiAgKi8KIFRXX0lOVDMyCi10d19jbF9pb2N0bChzdHJ1Y3QgdHdf Y2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlLCBUV19JTlQzMiBjbWQsIFRXX1ZPSUQgKmJ1ZikK K3R3X2NsX2lvY3RsKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUsIHVfbG9u ZyBjbWQsIFRXX1ZPSUQgKmJ1ZikKIHsKIAlzdHJ1Y3QgdHdfY2xpX2N0bHJfY29udGV4dAkqY3Rs ciA9CiAJCShzdHJ1Y3QgdHdfY2xpX2N0bHJfY29udGV4dCAqKShjdGxyX2hhbmRsZS0+Y2xfY3Rs cl9jdHh0KTsKQEAgLTc2MCw4ICs3NTIsNyBAQAogCiAJY21kLT5wYXJhbS5zZ2xfb2ZmX19vcGNv ZGUgPQogCQlCVUlMRF9TR0xfT0ZGX19PUENPREUoMiwgVFdBX0ZXX0NNRF9HRVRfUEFSQU0pOwot CWNtZC0+cGFyYW0ucmVxdWVzdF9pZCA9Ci0JCShUV19VSU5UOCkoVFdfQ0xfU1dBUDE2KHJlcS0+ cmVxdWVzdF9pZCkpOworCWNtZC0+cGFyYW0ucmVxdWVzdF9pZCA9IChUV19VSU5UOCkoVFdfQ0xf U1dBUDE2KHJlcS0+cmVxdWVzdF9pZCkpOwogCWNtZC0+cGFyYW0uaG9zdF9pZF9fdW5pdCA9IEJV SUxEX0hPU1RfSURfX1VOSVQoMCwgMCk7CiAJY21kLT5wYXJhbS5wYXJhbV9jb3VudCA9IFRXX0NM X1NXQVAxNigxKTsKIApAQCAtNzg5LDE1ICs3ODAsMTQgQEAKIAkJLyogVGhlcmUncyBubyBjYWxs IGJhY2s7IHdhaXQgdGlsbCB0aGUgY29tbWFuZCBjb21wbGV0ZXMuICovCiAJCWVycm9yID0gdHdf Y2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwKIAkJCQlUV19DTElfUkVRVUVTVF9USU1F T1VUX1BFUklPRCk7Ci0JCWlmIChlcnJvciA9PSBUV19PU0xfRVRJTUVET1VUKQotCQkJLyogQ2xl YW4tdXAgZG9uZSBieSB0d19jbGlfc3VibWl0X2FuZF9wb2xsX3JlcXVlc3QuICovCi0JCQlyZXR1 cm4oZXJyb3IpOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIG91dDsKIAkJaWYgKChlcnJvciA9IGNt ZC0+cGFyYW0uc3RhdHVzKSkgeworI2lmICAgICAgIDAKIAkJCXR3X2NsaV9jcmVhdGVfY3Rscl9l dmVudChjdGxyLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTlRST0xMRVJfRVJST1IsCiAJ CQkJJihyZXEtPmNtZF9wa3QtPmNtZF9oZHIpKTsKKyNlbmRpZiAvLyAwCiAJCQlnb3RvIG91dDsK IAkJfQogCQl0d19vc2xfbWVtY3B5KHBhcmFtX2RhdGEsIHBhcmFtLT5kYXRhLCBwYXJhbV9zaXpl KTsKQEAgLTkwNSwxOCArODk1LDE3IEBACiAKIAkvKiBTdWJtaXQgdGhlIGNvbW1hbmQuICovCiAJ aWYgKGNhbGxiYWNrID09IFRXX0NMX05VTEwpIHsKLQkJLyogVGhlcmUncyBubyBjYWxsIGJhY2s7 ICB3YWl0IHRpbGwgdGhlIGNvbW1hbmQgY29tcGxldGVzLiAqLworCQkvKiBUaGVyZSdzIG5vIGNh bGwgYmFjazsgd2FpdCB0aWxsIHRoZSBjb21tYW5kIGNvbXBsZXRlcy4gKi8KIAkJZXJyb3IgPSB0 d19jbGlfc3VibWl0X2FuZF9wb2xsX3JlcXVlc3QocmVxLAotCQkJVFdfQ0xJX1JFUVVFU1RfVElN RU9VVF9QRVJJT0QpOwotCQlpZiAoZXJyb3IgPT0gVFdfT1NMX0VUSU1FRE9VVCkKLQkJCS8qIENs ZWFuLXVwIGRvbmUgYnkgdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0LiAqLwotCQkJcmV0 dXJuKGVycm9yKTsKKwkJCQlUV19DTElfUkVRVUVTVF9USU1FT1VUX1BFUklPRCk7CiAJCWlmIChl cnJvcikKIAkJCWdvdG8gb3V0OwogCQlpZiAoKGVycm9yID0gY21kLT5wYXJhbS5zdGF0dXMpKSB7 CisjaWYgICAgICAgMAogCQkJdHdfY2xpX2NyZWF0ZV9jdGxyX2V2ZW50KGN0bHIsCiAJCQkJVFdf Q0xfTUVTU0FHRV9TT1VSQ0VfQ09OVFJPTExFUl9FUlJPUiwKIAkJCQkmKHJlcS0+Y21kX3BrdC0+ Y21kX2hkcikpOworI2VuZGlmIC8vIDAKIAkJCWdvdG8gb3V0OwogCQl9CiAJCWN0bHItPmludGVy bmFsX3JlcV9idXN5ID0gVFdfQ0xfRkFMU0U7CkBAIC0xMDIyLDkgKzEwMTEsNyBAQAogCSAqIHR3 X2NsaV9zdWJtaXRfcGVuZGluZ19xdWV1ZS4gIFRoZXJlIGNvdWxkIGJlIGEgcmFjZSBpbiB0aGF0 IGNhc2UuCiAJICogTmVlZCB0byByZXZpc2l0LgogCSAqLwotCWlmIChyZXEtPnN0YXRlICE9IFRX X0NMSV9SRVFfU1RBVEVfUEVORElORykKLQkJdHdfY2xfcmVzZXRfY3RscihjdGxyLT5jdGxyX2hh bmRsZSk7Ci0JZWxzZSB7CisJaWYgKHJlcS0+c3RhdGUgPT0gVFdfQ0xJX1JFUV9TVEFURV9QRU5E SU5HKSB7CiAJCXR3X2NsaV9kYmdfcHJpbnRmKDMsIGN0bHItPmN0bHJfaGFuZGxlLCB0d19vc2xf Y3VyX2Z1bmMoKSwKIAkJCSJSZW1vdmluZyByZXF1ZXN0IGZyb20gcGVuZGluZyBxdWV1ZSIpOwog CQkvKgpAQCAtMTA1Myw2ICsxMDQwLDcgQEAKICAqCQkJZHJhaW5zIGFueSBpbmNvbXBsZXRlIHJl cXVlc3RzLgogICoKICAqIElucHV0OgkJY3RscgktLSBwdHIgdG8gcGVyIGN0bHIgc3RydWN0dXJl CisgKiAJCQlyZXFfaGFuZGxlCS0tIHB0ciB0byByZXF1ZXN0IGhhbmRsZQogICogT3V0cHV0OgkJ Tm9uZQogICogUmV0dXJuIHZhbHVlOgkwCS0tIHN1Y2Nlc3MKICAqCQkJbm9uLXplcm8tLSBmYWls dXJlCkBAIC0xMDYzLDE1ICsxMDUxLDE1IEBACiAJc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQJ KmN0bHIgPQogCQkoc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQgKikoY3Rscl9oYW5kbGUtPmNs X2N0bHJfY3R4dCk7CiAJc3RydWN0IHR3YV9zb2Z0YwkJKnNjID0gY3Rscl9oYW5kbGUtPm9zbF9j dGxyX2N0eHQ7CisJc3RydWN0IHR3X2NsaV9yZXFfY29udGV4dAkqcmVxOwogCVRXX0lOVDMyCQkJ cmVzZXRfYXR0ZW1wdCA9IDE7Ci0JVFdfSU5UMzIJCQllcnJvcjsKKwlUV19JTlQzMgkJCWVycm9y ID0gMDsKIAogCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHJfaGFuZGxlLCB0d19vc2xfY3VyX2Z1 bmMoKSwgImVudGVyZWQiKTsKIAogCWN0bHItPnJlc2V0X2luX3Byb2dyZXNzID0gVFdfQ0xfVFJV RTsKLQl4cHRfZnJlZXplX3NpbXEoc2MtPnNpbSwgMSk7CisJdHdhX3RlYXJkb3duX2ludHIoc2Mp OwogCi0JdHdfY2xpX2Rpc2FibGVfaW50ZXJydXB0cyhjdGxyKTsKIAogCS8qCiAJICogRXJyb3Ig YmFjayBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvbXBsZXRlLCBidXN5LCBhbmQgcGVuZGluZyBxdWV1 ZXMuCkBAIC0xMDgwLDggKzEwNjgsNiBAQAogCSAqIHdpbGwgY29udGludWUgaXRzIGNvdXJzZSBh bmQgZ2V0IHN1Ym1pdHRlZCB0byB0aGUgY29udHJvbGxlciBhZnRlcgogCSAqIHRoZSByZXNldCBp cyBkb25lIChhbmQgaW9fbG9jayBpcyByZWxlYXNlZCkuCiAJICovCi0JdHdfY2xpX2RiZ19wcmlu dGYoMiwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLAotCQkiRHJhaW5pbmcgYWxsIHF1 ZXVlcyBmb2xsb3dpbmcgcmVzZXQiKTsKIAl0d19jbGlfZHJhaW5fY29tcGxldGVfcXVldWUoY3Rs cik7CiAJdHdfY2xpX2RyYWluX2J1c3lfcXVldWUoY3Rscik7CiAJdHdfY2xpX2RyYWluX3BlbmRp bmdfcXVldWUoY3Rscik7CkBAIC0xMDg5LDUzICsxMDc1LDg4IEBACiAJY3Rsci0+Z2V0X21vcmVf YWVucyAgICAgPSBUV19DTF9GQUxTRTsKIAogCS8qIFNvZnQgcmVzZXQgdGhlIGNvbnRyb2xsZXIu ICovCi10cnlfcmVzZXQ6Ci0JaWYgKChlcnJvciA9IHR3X2NsaV9zb2Z0X3Jlc2V0KGN0bHIpKSkg ewotCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCi0JCQlUV19D TF9NRVNTQUdFX1NPVVJDRV9DT01NT05fTEFZRVJfRVZFTlQsCi0JCQkweDExMDUsIDB4MSwgVFdf Q0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAotCQkJIkNvbnRyb2xsZXIgcmVzZXQgZmFpbGVkIiwK LQkJCSJlcnJvciA9ICVkOyBhdHRlbXB0ICVkIiwgZXJyb3IsIHJlc2V0X2F0dGVtcHQrKyk7Ci0J CWlmIChyZXNldF9hdHRlbXB0IDw9IFRXX0NMSV9NQVhfUkVTRVRfQVRURU1QVFMpCi0JCQlnb3Rv IHRyeV9yZXNldDsKLQkJZWxzZQotCQkJZ290byBvdXQ7Ci0JfQorCXdoaWxlIChyZXNldF9hdHRl bXB0IDw9IFRXX0NMSV9NQVhfUkVTRVRfQVRURU1QVFMpIHsKKwkJaWYgKChlcnJvciA9IHR3X2Ns aV9zb2Z0X3Jlc2V0KGN0bHIpKSkgeworCQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxl LCBUV19DTF9GQUxTRSwKKwkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01NT05fTEFZRVJfRVZF TlQsCisJCQkJMHgxMTA1LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKKwkJCQki Q29udHJvbGxlciByZXNldCBmYWlsZWQiLAorCQkJCSJlcnJvciA9ICVkOyBhdHRlbXB0ICVkIiwg ZXJyb3IsIHJlc2V0X2F0dGVtcHQrKyk7CisJCQlyZXNldF9hdHRlbXB0Kys7CisJCQljb250aW51 ZTsKKwkJfQogCi0JLyogUmUtZXN0YWJsaXNoIGxvZ2ljYWwgY29ubmVjdGlvbiB3aXRoIHRoZSBj b250cm9sbGVyLiAqLwotCWlmICgoZXJyb3IgPSB0d19jbGlfaW5pdF9jb25uZWN0aW9uKGN0bHIs Ci0JCQkoVFdfVUlOVDE2KShjdGxyLT5tYXhfc2ltdWx0X3JlcXMpLAotCQkJMCwgMCwgMCwgMCwg MCwgVFdfQ0xfTlVMTCwgVFdfQ0xfTlVMTCwgVFdfQ0xfTlVMTCwKLQkJCVRXX0NMX05VTEwsIFRX X0NMX05VTEwpKSkgewotCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RS VUUsCisJCS8qIFJlLWVzdGFibGlzaCBsb2dpY2FsIGNvbm5lY3Rpb24gd2l0aCB0aGUgY29udHJv bGxlci4gKi8KKwkJaWYgKChlcnJvciA9IHR3X2NsaV9pbml0X2Nvbm5lY3Rpb24oY3RsciwKKwkJ CQkoVFdfVUlOVDE2KShjdGxyLT5tYXhfc2ltdWx0X3JlcXMpLAorCQkJCTAsIDAsIDAsIDAsIDAs IFRXX0NMX05VTEwsIFRXX0NMX05VTEwsIFRXX0NMX05VTEwsCisJCQkJVFdfQ0xfTlVMTCwgVFdf Q0xfTlVMTCkpKSB7CisJCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZB TFNFLAorCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKKwkJCQkw eDExMDYsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAorCQkJCSJDYW4ndCBpbml0 aWFsaXplIGNvbm5lY3Rpb24gYWZ0ZXIgcmVzZXQiLAorCQkJCSJlcnJvciA9ICVkIiwgZXJyb3Ip OworCQkJcmVzZXRfYXR0ZW1wdCsrOworCQkJY29udGludWU7CisJCX0KKworI2lmZGVmICAgIFRX X09TTF9ERUJVRworCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNF LAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAotCQkJMHgxMTA2 LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCSJDYW4ndCBpbml0aWFsaXpl IGNvbm5lY3Rpb24gYWZ0ZXIgcmVzZXQiLAotCQkJImVycm9yID0gJWQiLCBlcnJvcik7Ci0JCWdv dG8gb3V0OwotCX0KKwkJCTB4MTEwNywgMHgzLCBUV19DTF9TRVZFUklUWV9JTkZPX1NUUklORywK KwkJCSJDb250cm9sbGVyIHJlc2V0IGRvbmUhIiwgIiAiKTsKKyNlbmRpZiAvKiBUV19PU0xfREVC VUcgKi8KKwkJYnJlYWs7CisJfSAvKiBFbmQgb2Ygd2hpbGUgKi8KIAotCXR3X2NsX2NyZWF0ZV9l dmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfVFJVRSwKLQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09N TU9OX0xBWUVSX0VWRU5ULAotCQkweDExMDcsIDB4MywgVFdfQ0xfU0VWRVJJVFlfSU5GT19TVFJJ TkcsCi0JCSJDb250cm9sbGVyIHJlc2V0IGRvbmUhIiwKLQkJIiAiKTsKKwkvKiBNb3ZlIGNvbW1h bmRzIGZyb20gdGhlIHJlc2V0IHF1ZXVlIHRvIHRoZSBwZW5kaW5nIHF1ZXVlLiAqLworCXdoaWxl ICgocmVxID0gdHdfY2xpX3JlcV9xX3JlbW92ZV9oZWFkKGN0bHIsIFRXX0NMSV9SRVNFVF9RKSkg IT0gVFdfQ0xfTlVMTCkgeworCQl0d19vc2xfdGltZW91dChyZXEtPnJlcV9oYW5kbGUpOworCQl0 d19jbGlfcmVxX3FfaW5zZXJ0X3RhaWwocmVxLCBUV19DTElfUEVORElOR19RKTsKKwl9CiAKLW91 dDoKKwl0d2Ffc2V0dXBfaW50cihzYyk7CisJdHdfY2xpX2VuYWJsZV9pbnRlcnJ1cHRzKGN0bHIp OworCWlmICgoVFdfQ0xfUV9GSVJTVF9JVEVNKCYoY3Rsci0+cmVxX3FfaGVhZFtUV19DTElfUEVO RElOR19RXSkpKSAhPSBUV19DTF9OVUxMKQorCQlUV19DTElfV1JJVEVfQ09OVFJPTF9SRUdJU1RF UihjdGxyX2hhbmRsZSwKKwkJCVRXQV9DT05UUk9MX1VOTUFTS19DT01NQU5EX0lOVEVSUlVQVCk7 CiAJY3Rsci0+cmVzZXRfaW5fcHJvZ3Jlc3MgPSBUV19DTF9GQUxTRTsKLQl4cHRfcmVsZWFzZV9z aW1xKHNjLT5zaW0sIDEpOworCWN0bHItPnJlc2V0X25lZWRlZCA9IFRXX0NMX0ZBTFNFOwogCi0J LyoKLQkgKiBFbmFibGUgaW50ZXJydXB0cywgYW5kIGFsc28gY2xlYXIgYXR0ZW50aW9uIGFuZCBy ZXNwb25zZSBpbnRlcnJ1cHRzLgotCSAqLwotCXR3X2NsaV9lbmFibGVfaW50ZXJydXB0cyhjdGxy KTsKLQkKIAkvKiBSZXF1ZXN0IGZvciBhIGJ1cyByZS1zY2FuLiAqLwotCWlmICghZXJyb3IpCi0J CXR3X29zbF9zY2FuX2J1cyhjdGxyX2hhbmRsZSk7CisJdHdfb3NsX3NjYW5fYnVzKGN0bHJfaGFu ZGxlKTsKKwogCXJldHVybihlcnJvcik7CiB9CiAKK1RXX1ZPSUQKK3R3X2NsX3NldF9yZXNldF9u ZWVkZWQoc3RydWN0IHR3X2NsX2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSkKK3sKKwlzdHJ1Y3Qg dHdfY2xpX2N0bHJfY29udGV4dAkqY3RsciA9CisJCShzdHJ1Y3QgdHdfY2xpX2N0bHJfY29udGV4 dCAqKShjdGxyX2hhbmRsZS0+Y2xfY3Rscl9jdHh0KTsKKworCWN0bHItPnJlc2V0X25lZWRlZCA9 IFRXX0NMX1RSVUU7Cit9CisKK1RXX0lOVDMyCit0d19jbF9pc19yZXNldF9uZWVkZWQoc3RydWN0 IHR3X2NsX2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSkKK3sKKwlzdHJ1Y3QgdHdfY2xpX2N0bHJf Y29udGV4dAkqY3RsciA9CisJCShzdHJ1Y3QgdHdfY2xpX2N0bHJfY29udGV4dCAqKShjdGxyX2hh bmRsZS0+Y2xfY3Rscl9jdHh0KTsKKworCXJldHVybihjdGxyLT5yZXNldF9uZWVkZWQpOworfQor CitUV19JTlQzMgordHdfY2xfaXNfYWN0aXZlKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rs cl9oYW5kbGUpCit7CisJc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQJKmN0bHIgPQorCQkoc3Ry dWN0IHR3X2NsaV9jdGxyX2NvbnRleHQgKikKKwkJKGN0bHJfaGFuZGxlLT5jbF9jdGxyX2N0eHQp OworCisJCXJldHVybihjdGxyLT5hY3RpdmUpOworfQorCiAKIAogLyoKQEAgLTExNTEsMTQgKzEx NzIsMTMgQEAKIHR3X2NsaV9zb2Z0X3Jlc2V0KHN0cnVjdCB0d19jbGlfY3Rscl9jb250ZXh0ICpj dGxyKQogewogCXN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZQkqY3Rscl9oYW5kbGUgPSBjdGxyLT5j dGxyX2hhbmRsZTsKLQlUV19VSU5UMzIJCQlzdGF0dXNfcmVnOwogCWludAkJCQlmb3VuZDsKIAlp bnQJCQkJbG9vcF9jb3VudDsKIAlUV19VSU5UMzIJCQllcnJvcjsKIAogCXR3X2NsaV9kYmdfcHJp bnRmKDEsIGN0bHJfaGFuZGxlLCB0d19vc2xfY3VyX2Z1bmMoKSwgImVudGVyZWQiKTsKIAotCXR3 X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfVFJVRSwKKwl0d19jbF9jcmVhdGVf ZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9D T01NT05fTEFZRVJfRVZFTlQsCiAJCTB4MTEwOCwgMHgzLCBUV19DTF9TRVZFUklUWV9JTkZPX1NU UklORywKIAkJIlJlc2V0dGluZyBjb250cm9sbGVyLi4uIiwKQEAgLTExOTMsNyArMTIxMyw3IEBA CiAJCX0gd2hpbGUgKCFmb3VuZCAmJiAobG9vcF9jb3VudCA8IDYwMDAwMDApKTsgLyogTG9vcCBm b3Igbm8gbW9yZSB0aGFuIDYwIHNlY29uZHMgKi8KIAogCQlpZiAoIWZvdW5kKSB7Ci0JCQl0d19j bF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCisJCQl0d19jbF9jcmVhdGVf ZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNF X0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCQkweDExMDksIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJS T1JfU1RSSU5HLAogCQkJCSJNaXNzZWQgZmlybXdhcmUgaGFuZHNoYWtlIGFmdGVyIHNvZnQtcmVz ZXQiLApAQCAtMTIxMCw3ICsxMjMwLDcgQEAKIAkJCVRXQV9TVEFUVVNfTUlDUk9DT05UUk9MTEVS X1JFQURZIHwKIAkJCVRXQV9TVEFUVVNfQVRURU5USU9OX0lOVEVSUlVQVCwKIAkJCVRXX0NMSV9S RVNFVF9USU1FT1VUX1BFUklPRCkpKSB7Ci0JCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRs ZSwgVFdfQ0xfVFJVRSwKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9G QUxTRSwKIAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCTB4 MTEwOSwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkiTWljcm8tY3RsciBu b3QgcmVhZHkvTm8gYXR0biBpbnRyIGFmdGVyIHJlc2V0IiwKQEAgLTEyNDQsMjYgKzEyNjQsMTQg QEAKIAl9CiAJCiAJaWYgKChlcnJvciA9IHR3X2NsaV9maW5kX2FlbihjdGxyLCBUV0FfQUVOX1NP RlRfUkVTRVQpKSkgewotCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RS VUUsCisJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQlU V19DTF9NRVNTQUdFX1NPVVJDRV9DT01NT05fTEFZRVJfRVZFTlQsCiAJCQkweDExMEMsIDB4MSwg VFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAogCQkJIlJlc2V0IG5vdCByZXBvcnRlZCBieSBj b250cm9sbGVyIiwKIAkJCSJlcnJvciA9ICVkIiwgZXJyb3IpOwogCQlyZXR1cm4oZXJyb3IpOwog CX0KLQkKLQlzdGF0dXNfcmVnID0gVFdfQ0xJX1JFQURfU1RBVFVTX1JFR0lTVEVSKGN0bHJfaGFu ZGxlKTsKLQkKLQlpZiAoKGVycm9yID0gVFdfQ0xJX1NUQVRVU19FUlJPUlMoc3RhdHVzX3JlZykp IHx8Ci0JCQkoZXJyb3IgPSB0d19jbGlfY2hlY2tfY3Rscl9zdGF0ZShjdGxyLCBzdGF0dXNfcmVn KSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAotCQkJ VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAotCQkJMHgxMTBELCAweDEs IFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCSJDb250cm9sbGVyIGVycm9ycyBkZXRl Y3RlZCBhZnRlciByZXNldCIsCi0JCQkiZXJyb3IgPSAlZCIsIGVycm9yKTsKLQkJcmV0dXJuKGVy cm9yKTsKLQl9Ci0JCisKIAlyZXR1cm4oVFdfT1NMX0VTVUNDRVNTKTsKIH0KIApkaWZmIC11IEZy ZWVCU0RfUkVMRU5HXzdfdHdhX2N2cy90d19jbF9taXNjLmMgRnJlZUJTRDdfdHdhXzNfNzBfMDVf MDEwL3R3X2NsX21pc2MuYwotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3ZzL3R3X2NsX21pc2Mu YwkyMDEwLTA4LTI2IDE1OjM1OjAwLjAwMDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRDdfdHdhXzNf NzBfMDVfMDEwL3R3X2NsX21pc2MuYwkyMDEwLTA4LTI0IDE4OjAxOjEzLjAwMDAwMDAwMCAtMDcw MApAQCAtODMsNyArODMsOCBAQAogCXR3X2NsaV9kYmdfcHJpbnRmKDMsIGN0bHItPmN0bHJfaGFu ZGxlLCB0d19vc2xfY3VyX2Z1bmMoKSwgImVudGVyZWQiKTsKIAogCS8qIFdhbGsgdGhlIGJ1c3kg cXVldWUuICovCi0Jd2hpbGUgKChyZXEgPSB0d19jbGlfcmVxX3FfcmVtb3ZlX2hlYWQoY3Rsciwg VFdfQ0xJX0NPTVBMRVRFX1EpKSkgeworCXdoaWxlICgocmVxID0gdHdfY2xpX3JlcV9xX3JlbW92 ZV9oZWFkKGN0bHIsIFRXX0NMSV9DT01QTEVURV9RKSkgIT0KKwkJVFdfQ0xfTlVMTCkgewogCQlp ZiAocmVxLT5mbGFncyAmIFRXX0NMSV9SRVFfRkxBR1NfSU5URVJOQUwpIHsKIAkJCS8qCiAJCQkg KiBJdCdzIGFuIGludGVybmFsIHJlcXVlc3QuICBTZXQgdGhlIGFwcHJvcHJpYXRlCkBAIC05Nywy MCArOTgsMjEgQEAKIAkJCXJlcS0+ZXJyb3JfY29kZSA9IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VU OwogCQkJaWYgKHJlcS0+dHdfY2xpX2NhbGxiYWNrKQogCQkJCXJlcS0+dHdfY2xpX2NhbGxiYWNr KHJlcSk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoKHJlcV9wa3QgPSByZXEtPm9yaWdfcmVxKSkgewot CQkJCS8qIEl0J3MgYSBTQ1NJIHJlcXVlc3QuICBDb21wbGV0ZSBpdC4gKi8KLQkJCQl0d19jbGlf ZGJnX3ByaW50ZigyLCBjdGxyLT5jdGxyX2hhbmRsZSwKLQkJCQkJdHdfb3NsX2N1cl9mdW5jKCks Ci0JCQkJCSJDb21wbGV0aW5nIGNvbXBsZXRlIHJlcXVlc3QgJXAgIgotCQkJCQkib24gcmVzZXQi LAotCQkJCQlyZXEpOworCQl9IGVsc2UgaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdT X1BBU1NUSFJVKSB7CisJCQkvKiBJdCdzIGEgcGFzc3RocnUgcmVxdWVzdC4gIENvbXBsZXRlIGl0 LiAqLworCQkJaWYgKChyZXFfcGt0ID0gcmVxLT5vcmlnX3JlcSkgIT0gVFdfQ0xfTlVMTCkgewog CQkJCXJlcV9wa3QtPnN0YXR1cyA9IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwotCQkJCXJlcV9w a3QtPnR3X29zbF9jYWxsYmFjayhyZXEtPnJlcV9oYW5kbGUpOworCisJCQkJaWYgKHJlcV9wa3Qt PnR3X29zbF9jYWxsYmFjaykKKwkJCQkJcmVxX3BrdC0+dHdfb3NsX2NhbGxiYWNrKHJlcS0+cmVx X2hhbmRsZSk7CiAJCQl9CiAJCQl0d19jbGlfcmVxX3FfaW5zZXJ0X3RhaWwocmVxLCBUV19DTElf RlJFRV9RKTsKKwkJfSBlbHNlIHsKKwkJCS8qIEl0J3MgYW4gZXh0ZXJuYWwgKFNDU0kpIHJlcXVl c3QuICBBZGQgaXQgdG8gdGhlIHJlc2V0IHF1ZXVlLiAqLworCQkJdHdfb3NsX3VudGltZW91dChy ZXEtPnJlcV9oYW5kbGUpOworCQkJdHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJ X1JFU0VUX1EpOwogCQl9Ci0JfQorCX0gLyogRW5kIG9mIHdoaWxlIGxvb3AgKi8KIH0KIAogCkBA IC0xMzUsNyArMTM3LDggQEAKIAl0d19jbGlfZGJnX3ByaW50ZigzLCBjdGxyLT5jdGxyX2hhbmRs ZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7CiAKIAkvKiBXYWxrIHRoZSBidXN5IHF1 ZXVlLiAqLwotCXdoaWxlICgocmVxID0gdHdfY2xpX3JlcV9xX3JlbW92ZV9oZWFkKGN0bHIsIFRX X0NMSV9CVVNZX1EpKSkgeworCXdoaWxlICgocmVxID0gdHdfY2xpX3JlcV9xX3JlbW92ZV9oZWFk KGN0bHIsIFRXX0NMSV9CVVNZX1EpKSAhPQorCQlUV19DTF9OVUxMKSB7CiAJCWlmIChyZXEtPmZs YWdzICYgVFdfQ0xJX1JFUV9GTEFHU19JTlRFUk5BTCkgewogCQkJLyoKIAkJCSAqIEl0J3MgYW4g aW50ZXJuYWwgcmVxdWVzdC4gIFNldCB0aGUgYXBwcm9wcmlhdGUKQEAgLTE0OSwxOSArMTUyLDIx IEBACiAJCQlyZXEtPmVycm9yX2NvZGUgPSBUV19DTF9FUlJfUkVRX0JVU19SRVNFVDsKIAkJCWlm IChyZXEtPnR3X2NsaV9jYWxsYmFjaykKIAkJCQlyZXEtPnR3X2NsaV9jYWxsYmFjayhyZXEpOwot CQl9IGVsc2UgewotCQkJaWYgKChyZXFfcGt0ID0gcmVxLT5vcmlnX3JlcSkpIHsKLQkJCQkvKiBJ dCdzIGEgU0NTSSByZXF1ZXN0LiAgQ29tcGxldGUgaXQuICovCi0JCQkJdHdfY2xpX2RiZ19wcmlu dGYoMiwgY3Rsci0+Y3Rscl9oYW5kbGUsCi0JCQkJCXR3X29zbF9jdXJfZnVuYygpLAotCQkJCQki Q29tcGxldGluZyBidXN5IHJlcXVlc3QgJXAgb24gcmVzZXQiLAotCQkJCQlyZXEpOworCQl9IGVs c2UgaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdTX1BBU1NUSFJVKSB7CisJCQkvKiBJ dCdzIGEgcGFzc3RocnUgcmVxdWVzdC4gIENvbXBsZXRlIGl0LiAqLworCQkJaWYgKChyZXFfcGt0 ID0gcmVxLT5vcmlnX3JlcSkgIT0gVFdfQ0xfTlVMTCkgewogCQkJCXJlcV9wa3QtPnN0YXR1cyA9 IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwotCQkJCXJlcV9wa3QtPnR3X29zbF9jYWxsYmFjayhy ZXEtPnJlcV9oYW5kbGUpOworCisJCQkJaWYgKHJlcV9wa3QtPnR3X29zbF9jYWxsYmFjaykKKwkJ CQkJcmVxX3BrdC0+dHdfb3NsX2NhbGxiYWNrKHJlcS0+cmVxX2hhbmRsZSk7CiAJCQl9CiAJCQl0 d19jbGlfcmVxX3FfaW5zZXJ0X3RhaWwocmVxLCBUV19DTElfRlJFRV9RKTsKKwkJfSBlbHNlIHsK KwkJCS8qIEl0J3MgYW4gZXh0ZXJuYWwgKFNDU0kpIHJlcXVlc3QuICBBZGQgaXQgdG8gdGhlIHJl c2V0IHF1ZXVlLiAqLworCQkJdHdfb3NsX3VudGltZW91dChyZXEtPnJlcV9oYW5kbGUpOworCQkJ dHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJX1JFU0VUX1EpOwogCQl9Ci0JfQor CX0gLyogRW5kIG9mIHdoaWxlIGxvb3AgKi8KIH0KIAogCkBAIC0xODgsNyArMTkzLDggQEAKIAkv KgogCSAqIFB1bGwgcmVxdWVzdHMgb2ZmIHRoZSBwZW5kaW5nIHF1ZXVlLCBhbmQgY29tcGxldGUg dGhlbS4KIAkgKi8KLQl3aGlsZSAoKHJlcSA9IHR3X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChjdGxy LCBUV19DTElfUEVORElOR19RKSkpIHsKKwl3aGlsZSAoKHJlcSA9IHR3X2NsaV9yZXFfcV9yZW1v dmVfaGVhZChjdGxyLCBUV19DTElfUEVORElOR19RKSkgIT0KKwkJVFdfQ0xfTlVMTCkgewogCQlp ZiAocmVxLT5mbGFncyAmIFRXX0NMSV9SRVFfRkxBR1NfSU5URVJOQUwpIHsKIAkJCS8qCiAJCQkg KiBJdCdzIGFuIGludGVybmFsIHJlcXVlc3QuICBTZXQgdGhlIGFwcHJvcHJpYXRlCkBAIC0yMDIs MTkgKzIwOCwyMSBAQAogCQkJcmVxLT5lcnJvcl9jb2RlID0gVFdfQ0xfRVJSX1JFUV9CVVNfUkVT RVQ7CiAJCQlpZiAocmVxLT50d19jbGlfY2FsbGJhY2spCiAJCQkJcmVxLT50d19jbGlfY2FsbGJh Y2socmVxKTsKLQkJfSBlbHNlIHsKLQkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19yZXEpKSB7 Ci0JCQkJLyogSXQncyBhbiBleHRlcm5hbCByZXF1ZXN0LiAgQ29tcGxldGUgaXQuICovCi0JCQkJ dHdfY2xpX2RiZ19wcmludGYoMiwgY3Rsci0+Y3Rscl9oYW5kbGUsCi0JCQkJCXR3X29zbF9jdXJf ZnVuYygpLAotCQkJCQkiQ29tcGxldGluZyBwZW5kaW5nIHJlcXVlc3QgJXAgIgotCQkJCQkib24g cmVzZXQiLCByZXEpOworCQl9IGVsc2UgaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdT X1BBU1NUSFJVKSB7CisJCQkvKiBJdCdzIGEgcGFzc3RocnUgcmVxdWVzdC4gIENvbXBsZXRlIGl0 LiAqLworCQkJaWYgKChyZXFfcGt0ID0gcmVxLT5vcmlnX3JlcSkgIT0gVFdfQ0xfTlVMTCkgewog CQkJCXJlcV9wa3QtPnN0YXR1cyA9IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwotCQkJCXJlcV9w a3QtPnR3X29zbF9jYWxsYmFjayhyZXEtPnJlcV9oYW5kbGUpOworCisJCQkJaWYgKHJlcV9wa3Qt PnR3X29zbF9jYWxsYmFjaykKKwkJCQkJcmVxX3BrdC0+dHdfb3NsX2NhbGxiYWNrKHJlcS0+cmVx X2hhbmRsZSk7CiAJCQl9CiAJCQl0d19jbGlfcmVxX3FfaW5zZXJ0X3RhaWwocmVxLCBUV19DTElf RlJFRV9RKTsKKwkJfSBlbHNlIHsKKwkJCS8qIEl0J3MgYW4gZXh0ZXJuYWwgKFNDU0kpIHJlcXVl c3QuICBBZGQgaXQgdG8gdGhlIHJlc2V0IHF1ZXVlLiAqLworCQkJdHdfb3NsX3VudGltZW91dChy ZXEtPnJlcV9oYW5kbGUpOworCQkJdHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJ X1JFU0VUX1EpOwogCQl9Ci0JfQorCX0gLyogRW5kIG9mIHdoaWxlIGxvb3AgKi8KIH0KIAogCkBA IC0yMzksOSArMjQ3LDYgQEAKIAlmb3IgKDs7KSB7CiAJCXN0YXR1c19yZWcgPSBUV19DTElfUkVB RF9TVEFUVVNfUkVHSVNURVIoY3Rsci0+Y3Rscl9oYW5kbGUpOwogCi0JCWlmICh0d19jbGlfY2hl Y2tfY3Rscl9zdGF0ZShjdGxyLCBzdGF0dXNfcmVnKSkKLQkJCXJldHVybihUV19PU0xfRUdFTkZB SUxVUkUpOwotCiAJCWlmIChzdGF0dXNfcmVnICYgVFdBX1NUQVRVU19SRVNQT05TRV9RVUVVRV9F TVBUWSkKIAkJCXJldHVybihUV19PU0xfRVNVQ0NFU1MpOyAvKiBubyBtb3JlIHJlc3BvbnNlIHF1 ZXVlIGVudHJpZXMgKi8KIApAQCAtMjczLDkgKzI3OCw2IEBACiAJZm9yICg7OykgewogCQlzdGF0 dXNfcmVnID0gVFdfQ0xJX1JFQURfU1RBVFVTX1JFR0lTVEVSKGN0bHItPmN0bHJfaGFuZGxlKTsK IAotCQlpZiAodHdfY2xpX2NoZWNrX2N0bHJfc3RhdGUoY3Rsciwgc3RhdHVzX3JlZykpCi0JCQly ZXR1cm4oVFdfT1NMX0VHRU5GQUlMVVJFKTsKLQogCQlpZiAoc3RhdHVzX3JlZyAmIFRXQV9TVEFU VVNfUkVTUE9OU0VfUVVFVUVfRU1QVFkpCiAJCQlyZXR1cm4oVFdfT1NMX0VOT1RUWSk7IC8qIG5v IG1vcmUgcmVzcG9uc2UgcXVldWUgZW50cmllcyAqLwogCkBAIC0zNTYsOSArMzU4LDExIEBACiAK IAkJaWYgKChlcnJvciA9IHJlcS0+Y21kX3BrdC0+Y29tbWFuZC5jbWRfcGt0XzlrLnN0YXR1cykp IHsKIAkJCWNtZF9oZHIgPSAmcmVxLT5jbWRfcGt0LT5jbWRfaGRyOworI2lmICAgICAgIDAKIAkJ CXR3X2NsaV9jcmVhdGVfY3Rscl9ldmVudChjdGxyLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNF X0NPTlRST0xMRVJfRVJST1IsCiAJCQkJY21kX2hkcik7CisjZW5kaWYgLy8gMAogCQkJYnJlYWs7 CiAJCX0KIApAQCAtNzE0LDcgKzcxOCw3IEBACiAKIAkJdHdfb3NsX21lbXplcm8oZGVzYywgMjAw KTsKIAkJaWYgKCEoY3Rsci0+cmVzZXRfcGhhc2UxX2luX3Byb2dyZXNzKSkgewotCQkJdHdfY2xf Y3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQkJdHdfY2xfY3JlYXRlX2V2 ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9D T01NT05fTEFZRVJfRVZFTlQsCiAJCQkJMHgxMzAxLCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9S X1NUUklORywKIAkJCQkiTWlzc2luZyBleHBlY3RlZCBzdGF0dXMgYml0KHMpIiwKQEAgLTczOCw3 ICs3NDIsNyBAQAogCQkgICAgIChjdGxyLT5kZXZpY2VfaWQgIT0gVFdfQ0xfREVWSUNFX0lEXzlL X1NBKSkgfHwKIAkJICAgICghKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSkgfHwKIAkJICAgICgo c3RhdHVzX3JlZyAmIFRXQV9TVEFUVVNfUVVFVUVfRVJST1JfSU5URVJSVVBUKSA9PSAwKSkKLQkJ dHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQl0d19jbF9jcmVh dGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VS Q0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkJMHgxMzAyLCAweDEsIFRXX0NMX1NFVkVSSVRZX0VS Uk9SX1NUUklORywKIAkJCSJVbmV4cGVjdGVkIHN0YXR1cyBiaXQocykiLApAQCAtNzQ4LDcgKzc1 Miw3IEBACiAJCQkJVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMsIGRlc2MpKTsKIAogCQlpZiAo c3RhdHVzX3JlZyAmIFRXQV9TVEFUVVNfUENJX1BBUklUWV9FUlJPUl9JTlRFUlJVUFQpIHsKLQkJ CXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfVFJVRSwKKwkJCXR3X2NsX2Ny ZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJVFdfQ0xfTUVTU0FHRV9T T1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkJCTB4MTMwMywgMHgxLCBUV19DTF9TRVZFUklU WV9FUlJPUl9TVFJJTkcsCiAJCQkJIlBDSSBwYXJpdHkgZXJyb3I6IGNsZWFyaW5nLi4uICIKQEAg LTc2OCw3ICs3NzIsNyBAQAogCQl9CiAKIAkJaWYgKHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1BD SV9BQk9SVF9JTlRFUlJVUFQpIHsKLQkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwg VFdfQ0xfVFJVRSwKKwkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFM U0UsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkJCTB4 MTMwNCwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkJIlBDSSBhYm9ydDog Y2xlYXJpbmcuLi4gIiwKQEAgLTc5MSw3ICs3OTUsNyBAQAogCQkJaWYgKCgoY3Rsci0+ZGV2aWNl X2lkICE9IFRXX0NMX0RFVklDRV9JRF85S19FKSAmJgogCQkJICAgICAoY3Rsci0+ZGV2aWNlX2lk ICE9IFRXX0NMX0RFVklDRV9JRF85S19TQSkpIHx8CiAJCQkgICAgKCEoY3Rsci0+cmVzZXRfaW5f cHJvZ3Jlc3MpKSkKLQkJCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RS VUUsCisJCQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ CQkJCSAgIFRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCQkJCSAg IDB4MTMwNSwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkJCQkgICAiQ29u dHJvbGxlciBxdWV1ZSBlcnJvcjogY2xlYXJpbmcuLi4gIiwKQEAgLTgwMSwxNyArODA1LDYgQEAK IAkJCVRXX0NMSV9XUklURV9DT05UUk9MX1JFR0lTVEVSKGN0bHItPmN0bHJfaGFuZGxlLAogCQkJ CVRXQV9DT05UUk9MX0NMRUFSX1FVRVVFX0VSUk9SKTsKIAkJfQotCi0JCWlmIChzdGF0dXNfcmVn ICYgVFdBX1NUQVRVU19NSUNST0NPTlRST0xMRVJfRVJST1IpIHsKLQkJCXR3X2NsX2NyZWF0ZV9l dmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfVFJVRSwKLQkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9D T01NT05fTEFZRVJfRVZFTlQsCi0JCQkJMHgxMzA3LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9S X1NUUklORywKLQkJCQkiTWljcm8tY29udHJvbGxlciBlcnJvciEgIiwKLQkJCQkic3RhdHVzIHJl ZyA9IDB4JXggJXMiLAotCQkJCXN0YXR1c19yZWcsCi0JCQkJdHdfY2xpX2Rlc2NyaWJlX2JpdHMo c3RhdHVzX3JlZywgZGVzYykpOwotCQkJZXJyb3IgPSBUV19PU0xfRUdFTkZBSUxVUkU7Ci0JCX0K IAl9CiAJcmV0dXJuKGVycm9yKTsKIH0JCkBAIC04NTAsOCArODQzLDYgQEAKIAkJdHdfb3NsX3N0 cmNweSgmc3RyW3R3X29zbF9zdHJsZW4oc3RyKV0sICJIT1NUX0lOVFIsIik7CiAJaWYgKHJlZyAm IFRXQV9TVEFUVVNfUENJX0FCT1JUX0lOVEVSUlVQVCkKIAkJdHdfb3NsX3N0cmNweSgmc3RyW3R3 X29zbF9zdHJsZW4oc3RyKV0sICJQQ0lfQUJSVCwiKTsKLQlpZiAocmVnICYgVFdBX1NUQVRVU19N SUNST0NPTlRST0xMRVJfRVJST1IpCi0JCXR3X29zbF9zdHJjcHkoJnN0clt0d19vc2xfc3RybGVu KHN0cildLCAiTUNfRVJSLCIpOwogCWlmIChyZWcgJiBUV0FfU1RBVFVTX1FVRVVFX0VSUk9SX0lO VEVSUlVQVCkKIAkJdHdfb3NsX3N0cmNweSgmc3RyW3R3X29zbF9zdHJsZW4oc3RyKV0sICJRX0VS UiwiKTsKIAlpZiAocmVnICYgVFdBX1NUQVRVU19QQ0lfUEFSSVRZX0VSUk9SX0lOVEVSUlVQVCkK ZGlmZiAtdSBGcmVlQlNEX1JFTEVOR183X3R3YV9jdnMvdHdfY2xfc2hhcmUuaCBGcmVlQlNEN190 d2FfM183MF8wNV8wMTAvdHdfY2xfc2hhcmUuaAotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3Zz L3R3X2NsX3NoYXJlLmgJMjAxMC0wOC0yNiAxNTozNTowMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZy ZWVCU0Q3X3R3YV8zXzcwXzA1XzAxMC90d19jbF9zaGFyZS5oCTIwMTAtMDgtMjQgMTg6MDE6MTMu MDAwMDAwMDAwIC0wNzAwCkBAIC0zNDksMTAgKzM0OSwxNCBAQAogI2VuZGlmCiAKIAotI2lmbmRl ZiB0d19vc2xfY3Rscl9idXN5Ci0vKiBDYWxsZWQgd2hlbiBDTCBpcyB0b28gYnVzeSB0byBhY2Nl cHQgbmV3IHJlcXVlc3RzLiAqLwotZXh0ZXJuIFRXX1ZPSUQJdHdfb3NsX2N0bHJfYnVzeShzdHJ1 Y3QgdHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlLAotCXN0cnVjdCB0d19jbF9yZXFfaGFu ZGxlICpyZXFfaGFuZGxlKTsKKyNpZm5kZWYgdHdfb3NsX3RpbWVvdXQKKy8qIFN0YXJ0IE9TIHRp bWVvdXQoKSByb3V0aW5lIGFmdGVyIGNvbnRyb2xsZXIgcmVzZXQgc2VxdWVuY2UgKi8KK2V4dGVy biBUV19WT0lECXR3X29zbF90aW1lb3V0KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFu ZGxlKTsKKyNlbmRpZgorCisjaWZuZGVmIHR3X29zbF91bnRpbWVvdXQKKy8qIFN0b3AgT1MgdGlt ZW91dCgpIHJvdXRpbmUgZHVyaW5nIGNvbnRyb2xsZXIgcmVzZXQgc2VxdWVuY2UgKi8KK2V4dGVy biBUV19WT0lECXR3X29zbF91bnRpbWVvdXQoc3RydWN0IHR3X2NsX3JlcV9oYW5kbGUgKnJlcV9o YW5kbGUpOwogI2VuZGlmCiAKIApAQCAtNTUyLDEzICs1NTYsMTcgQEAKIAkpOwogCiAKK2V4dGVy biBUV19WT0lEICB0d19jbF9zZXRfcmVzZXRfbmVlZGVkKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRs ZSAqY3Rscl9oYW5kbGUpOworZXh0ZXJuIFRXX0lOVDMyIHR3X2NsX2lzX3Jlc2V0X25lZWRlZChz dHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlKTsKK2V4dGVybiBUV19JTlQzMiB0 d19jbF9pc19hY3RpdmUoc3RydWN0IHR3X2NsX2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSk7CisK IC8qIENMJ3MgaW50ZXJydXB0IGhhbmRsZXIuICovCiBleHRlcm4gVFdfSU5UMzIJdHdfY2xfaW50 ZXJydXB0KHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUpOwogCiAKIC8qIENM J3MgaW9jdGwgaGFuZGxlci4gKi8KIGV4dGVybiBUV19JTlQzMgl0d19jbF9pb2N0bChzdHJ1Y3Qg dHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlLAotCVRXX0lOVDMyIGNtZCwgVFdfVk9JRCAq YnVmKTsKKwl1X2xvbmcgY21kLCBUV19WT0lEICpidWYpOwogCiAKICNpZmRlZiBUV19PU0xfREVC VUcKZGlmZiAtdSBGcmVlQlNEX1JFTEVOR183X3R3YV9jdnMvdHdfb3NsLmggRnJlZUJTRDdfdHdh XzNfNzBfMDVfMDEwL3R3X29zbC5oCi0tLSBGcmVlQlNEX1JFTEVOR183X3R3YV9jdnMvdHdfb3Ns LmgJMjAxMC0wOC0yNiAxNTozNTowMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q3X3R3YV8z XzcwXzA1XzAxMC90d19vc2wuaAkyMDEwLTA4LTI0IDE4OjAxOjEzLjAwMDAwMDAwMCAtMDcwMApA QCAtNzcsNiArNzcsNyBAQAogCQkJCQkJRUlOUFJPR1JFU1MgKi8KICNkZWZpbmUgVFdfT1NMSV9S RVFfRkxBR1NfUEFTU1RIUlUJKDE8PDUpCS8qIHBhc3MgdGhyb3VnaCByZXF1ZXN0ICovCiAjZGVm aW5lIFRXX09TTElfUkVRX0ZMQUdTX1NMRUVQSU5HCSgxPDw2KQkvKiBvd25lciBzbGVlcGluZyBv biB0aGlzIGNtZCAqLworI2RlZmluZSBUV19PU0xJX1JFUV9GTEFHU19GQUlMRUQJKDE8PDcpCS8q IGJ1c19kbWFtYXBfbG9hZCgpIGZhaWxlZCAqLwogCiAKICNpZmRlZiBUV19PU0xfREVCVUcKQEAg LTEwMCw2ICsxMDEsNyBAQAogCXN0cnVjdCB0d2Ffc29mdGMJKmN0bHI7CS8qIHB0ciB0byBPU0wn cyBjb250cm9sbGVyIGNvbnRleHQgKi8KIAlUV19WT0lECQkJKmRhdGE7CS8qIHB0ciB0byBkYXRh IGJlaW5nIHBhc3NlZCB0byBDTCAqLwogCVRXX1VJTlQzMgkJbGVuZ3RoOwkvKiBsZW5ndGggb2Yg YnVmIGJlaW5nIHBhc3NlZCB0byBDTCAqLworCVRXX1VJTlQ2NAkJZGVhZGxpbmU7LyogcmVxdWVz dCB0aW1lb3V0IChpbiBhYnNvbHV0ZSB0aW1lKSAqLwogCiAJLyoKIAkgKiBwdHIgdG8sIGFuZCBs ZW5ndGggb2YgZGF0YSBwYXNzZWQgdG8gdXMgZnJvbSBhYm92ZSwgaW4gY2FzZSBhIGJ1ZmZlcgpA QCAtMTUxLDYgKzE1Myw5IEBACiAJc3RydWN0IG10eAkJc2ltX2xvY2tfaGFuZGxlOy8qIHNpbSBs b2NrIHNoYXJlZCB3aXRoIGNhbSAqLwogCXN0cnVjdCBtdHgJCSpzaW1fbG9jazsvKiBwdHIgdG8g c2ltIGxvY2sgKi8KIAorCXN0cnVjdCBjYWxsb3V0CQl3YXRjaGRvZ19jYWxsb3V0WzJdOyAvKiBG b3IgY29tbWFuZCB0aW1vdXQgKi8KKwlUV19VSU5UMzIJCXdhdGNoZG9nX2luZGV4OworCiAjaWZk ZWYgVFdfT1NMX0RFQlVHCiAJc3RydWN0IHR3X29zbGlfcV9zdGF0cwlxX3N0YXRzW1RXX09TTElf UV9DT1VOVF07LyogcXVldWUgc3RhdGlzdGljcyAqLwogI2VuZGlmIC8qIFRXX09TTF9ERUJVRyAq LwpkaWZmIC11IEZyZWVCU0RfUkVMRU5HXzdfdHdhX2N2cy90d19vc2xfY2FtLmMgRnJlZUJTRDdf dHdhXzNfNzBfMDVfMDEwL3R3X29zbF9jYW0uYwotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3Zz L3R3X29zbF9jYW0uYwkyMDEwLTA4LTI2IDE1OjM1OjAwLjAwMDAwMDAwMCAtMDcwMAorKysgRnJl ZUJTRDdfdHdhXzNfNzBfMDVfMDEwL3R3X29zbF9jYW0uYwkyMDEwLTA4LTI0IDE4OjAxOjEzLjAw MDAwMDAwMCAtMDcwMApAQCAtNTUsNyArNTUsNiBAQAogCiBzdGF0aWMgVFdfVk9JRAl0d2FfYWN0 aW9uKHN0cnVjdCBjYW1fc2ltICpzaW0sIHVuaW9uIGNjYiAqY2NiKTsKIHN0YXRpYyBUV19WT0lE CXR3YV9wb2xsKHN0cnVjdCBjYW1fc2ltICpzaW0pOwotc3RhdGljIFRXX1ZPSUQJdHdhX3RpbWVv dXQoVFdfVk9JRCAqYXJnKTsKIHN0YXRpYyBUV19WT0lECXR3YV9idXNfc2Nhbl9jYihzdHJ1Y3Qg Y2FtX3BlcmlwaCAqcGVyaXBoLCB1bmlvbiBjY2IgKmNjYik7CiAKIHN0YXRpYyBUV19JTlQzMgl0 d19vc2xpX2V4ZWN1dGVfc2NzaShzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dCAqcmVxLApAQCAt ODMsNyArODIsNyBAQAogCS8qCiAJICogQ3JlYXRlIHRoZSBkZXZpY2UgcXVldWUgZm9yIG91ciBT SU0uCiAJICovCi0JaWYgKChkZXZxID0gY2FtX3NpbXFfYWxsb2MoVFdfT1NMSV9NQVhfTlVNX1JF UVVFU1RTKSkgPT0gTlVMTCkgeworCWlmICgoZGV2cSA9IGNhbV9zaW1xX2FsbG9jKFRXX09TTElf TUFYX05VTV9JT1MpKSA9PSBOVUxMKSB7CiAJCXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAl ZCIsCiAJCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQlUV19DTF9NRVNTQUdFX1NP VVJDRV9GUkVFQlNEX0RSSVZFUiwKQEAgLTI5Miw2ICsyOTEsNyBAQAogCQkJCQkiSS9PIHNpemUg dG9vIGJpZyIsCiAJCQkJCWNzaW8tPmR4ZmVyX2xlbik7CiAJCQkJY2NiX2gtPnN0YXR1cyA9IENB TV9SRVFfVE9PX0JJRzsKKwkJCQljY2JfaC0+c3RhdHVzICY9IH5DQU1fU0lNX1FVRVVFRDsKIAkJ CQl4cHRfZG9uZShjY2IpOwogCQkJCXJldHVybigxKTsKIAkJCX0KQEAgLTMwNyw2ICszMDcsNyBA QAogCQkJCTB4MjEwNywKIAkJCQkiWFBUX1NDU0lfSU86IEdvdCBTR0xpc3QiKTsKIAkJCWNjYl9o LT5zdGF0dXMgPSBDQU1fUkVRX0lOVkFMSUQ7CisJCQljY2JfaC0+c3RhdHVzICY9IH5DQU1fU0lN X1FVRVVFRDsKIAkJCXhwdF9kb25lKGNjYik7CiAJCQlyZXR1cm4oMSk7CiAJCX0KQEAgLTMyMywx MyArMzI0LDIwIEBACiAJCXJldHVybigxKTsKIAl9CiAKLQljY2JfaC0+dGltZW91dF9jaCA9IHRp bWVvdXQodHdhX3RpbWVvdXQsIHJlcSwKLQkJKGNjYl9oLT50aW1lb3V0ICogaHopIC8gMTAwMCk7 CisJcmVxLT5kZWFkbGluZSA9IHR3X29zbF9nZXRfbG9jYWxfdGltZSgpICsgKGNjYl9oLT50aW1l b3V0IC8gMTAwMCk7CisKKwogCS8qCiAJICogdHdhX21hcF9sb2FkX2RhdGFfY2FsbGJhY2sgd2ls bCBmaWxsIGluIHRoZSBTR0wsCiAJICogYW5kIHN1Ym1pdCB0aGUgSS9PLgogCSAqLwogCWVycm9y ID0gdHdfb3NsaV9tYXBfcmVxdWVzdChyZXEpOworCWlmICgoZXJyb3IpICYmIChyZXEtPmZsYWdz ICYgVFdfT1NMSV9SRVFfRkxBR1NfRkFJTEVEKSkgeworCQlyZXEtPmRlYWRsaW5lID0gMDsKKwkJ Y2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QX0VSUjsKKwkJY2NiX2gtPnN0YXR1cyAmPSB+Q0FN X1NJTV9RVUVVRUQ7CisJCXhwdF9kb25lKGNjYik7CisJfQogCXJldHVybihlcnJvcik7CiB9CiAK QEAgLTM2MiwxMCArMzcwLDIwIEBACiAJCQkgKiBGcmVlemUgdGhlIHNpbXEgdG8gbWFpbnRhaW4g Y2NiIG9yZGVyaW5nLiAgVGhlIG5leHQKIAkJCSAqIGNjYiB0aGF0IGdldHMgY29tcGxldGVkIHdp bGwgdW5mcmVlemUgdGhlIHNpbXEuCiAJCQkgKi8KKwkJCWNjYl9oLT5zdGF0dXMgJj0gfkNBTV9T SU1fUVVFVUVEOwogCQkJY2NiX2gtPnN0YXR1cyB8PSBDQU1fUkVRVUVVRV9SRVE7CiAJCQl4cHRf ZG9uZShjY2IpOwogCQkJYnJlYWs7CiAJCX0KKworCQlpZiAoKHR3X2NsX2lzX3Jlc2V0X25lZWRl ZCgmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKSkpIHsKKwkJCWNjYl9oLT5zdGF0dXMgJj0gfkNB TV9TSU1fUVVFVUVEOworCQkJY2NiX2gtPnN0YXR1cyB8PSBDQU1fUkVRVUVVRV9SRVE7CisJCQl4 cHRfZG9uZShjY2IpOworCQkJdHdfb3NsaV9yZXFfcV9pbnNlcnRfdGFpbChyZXEsIFRXX09TTElf RlJFRV9RKTsKKwkJCWJyZWFrOworCQl9CisKIAkJcmVxLT5yZXFfaGFuZGxlLm9zbF9yZXFfY3R4 dCA9IHJlcTsKIAkJcmVxLT5yZXFfaGFuZGxlLmlzX2lvID0gVFdfQ0xfVFJVRTsKIAkJcmVxLT5v cmlnX3JlcSA9IGNjYjsKQEAgLTM4MSwyNSArMzk5LDE0IEBACiAJCWJyZWFrOwogCiAJY2FzZSBY UFRfUkVTRVRfQlVTOgotCQl0d19jbF9jcmVhdGVfZXZlbnQoJihzYy0+Y3Rscl9oYW5kbGUpLCBU V19DTF9UUlVFLAorCQl0d19jbF9jcmVhdGVfZXZlbnQoJihzYy0+Y3Rscl9oYW5kbGUpLCBUV19D TF9GQUxTRSwKIAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLAogCQkJMHgy MTA4LCAweDMsIFRXX0NMX1NFVkVSSVRZX0lORk9fU1RSSU5HLAogCQkJIlJlY2VpdmVkIFJlc2V0 IEJ1cyByZXF1ZXN0IGZyb20gQ0FNIiwKIAkJCSIgIik7CiAKLQkJbXR4X3VubG9jayhzYy0+c2lt X2xvY2spOwotCQlpZiAodHdfY2xfcmVzZXRfY3Rscigmc2MtPmN0bHJfaGFuZGxlKSkgewotCQkJ dHdfY2xfY3JlYXRlX2V2ZW50KCYoc2MtPmN0bHJfaGFuZGxlKSwgVFdfQ0xfVFJVRSwKLQkJCQlU V19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJCQkweDIxMDksIDB4MSwgVFdf Q0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAotCQkJCSJGYWlsZWQgdG8gcmVzZXQgYnVzIiwKLQkJ CQkiICIpOwotCQkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QX0VSUjsKLQkJfQotCQllbHNl Ci0JCQljY2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9DTVA7Ci0KLQkJbXR4X2xvY2soc2MtPnNpbV9s b2NrKTsKKwkJdHdfY2xfc2V0X3Jlc2V0X25lZWRlZCgmKHNjLT5jdGxyX2hhbmRsZSkpOworCQlj Y2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9DTVA7CiAJCXhwdF9kb25lKGNjYik7CiAJCWJyZWFrOwog CkBAIC00NjcsNiArNDc0LDcgQEAKICAgICAgICAgICAgICAgICBwYXRoX2lucS0+dHJhbnNwb3J0 X3ZlcnNpb24gPSAyOwogICAgICAgICAgICAgICAgIHBhdGhfaW5xLT5wcm90b2NvbCA9IFBST1RP X1NDU0k7CiAgICAgICAgICAgICAgICAgcGF0aF9pbnEtPnByb3RvY29sX3ZlcnNpb24gPSBTQ1NJ X1JFVl8yOworICAgICAgICAgICAgICAgIHBhdGhfaW5xLT5tYXhpbyA9IFRXX0NMX01BWF9JT19T SVpFOwogCQljY2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9DTVA7CiAJCXhwdF9kb25lKGNjYik7CiAJ CWJyZWFrOwpAQCAtNTA0LDMxICs1MTIsNiBAQAogCiAKIC8qCi0gKiBGdW5jdGlvbiBuYW1lOgl0 d2FfdGltZW91dAotICogRGVzY3JpcHRpb246CQlEcml2ZXIgZW50cnkgcG9pbnQgZm9yIGJlaW5n IGFsZXJ0ZWQgb24gYSByZXF1ZXN0Ci0gKgkJCXRpbWluZyBvdXQuCi0gKgotICogSW5wdXQ6CQlh cmcJLS0gcHRyIHRvIHRpbWVkIG91dCByZXF1ZXN0Ci0gKiBPdXRwdXQ6CQlOb25lCi0gKiBSZXR1 cm4gdmFsdWU6CU5vbmUKLSAqLwotc3RhdGljIFRXX1ZPSUQKLXR3YV90aW1lb3V0KFRXX1ZPSUQg KmFyZykKLXsKLQlzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dAkqcmVxID0KLQkJKHN0cnVjdCB0 d19vc2xpX3JlcV9jb250ZXh0ICopYXJnOwotCi0JdHdfY2xfY3JlYXRlX2V2ZW50KCYocmVxLT5j dGxyLT5jdGxyX2hhbmRsZSksIFRXX0NMX1RSVUUsCi0JCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZS RUVCU0RfRFJJVkVSLAotCQkweDIxMEIsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5H LAotCQkiUmVxdWVzdCB0aW1lZCBvdXQhIiwKLQkJInJlcXVlc3QgPSAlcCIsIHJlcSk7Ci0JdHdf Y2xfcmVzZXRfY3RscigmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKTsKLX0KLQotCi0KLS8qCiAg KiBGdW5jdGlvbiBuYW1lOgl0d19vc2xpX3JlcXVlc3RfYnVzX3NjYW4KICAqIERlc2NyaXB0aW9u OgkJUmVxdWVzdHMgQ0FNIGZvciBhIHNjYW4gb2YgdGhlIGJ1cy4KICAqCkBAIC02MjMsMjAgKzYw NiwzOSBAQAogCiAKIC8qCi0gKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xfY3Rscl9idXN5Ci0gKiBE ZXNjcmlwdGlvbjoJCUNMIGNhbGxzIHRoaXMgZnVuY3Rpb24gb24gY21kIHF1ZXVlIGZ1bGwgb3Ig b3RoZXJ3aXNlLAotICoJCQl3aGVuIGl0IGlzIHRvbyBidXN5IHRvIGFjY2VwdCBuZXcgcmVxdWVz dHMuCisgKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xfdGltZW91dAorICogRGVzY3JpcHRpb246CQlD YWxsIHRvIHRpbWVvdXQoKS4KICAqCi0gKiBJbnB1dDoJCWN0bHJfaGFuZGxlCS0tIHB0ciB0byBj b250cm9sbGVyIGhhbmRsZQotICoJCQlyZXFfaGFuZGxlCS0tIHB0ciB0byByZXF1ZXN0IGhhbmRs ZSBzZW50IGJ5IE9TTC4KKyAqIElucHV0OgkJcmVxX2hhbmRsZSAtLSBwdHIgdG8gcmVxdWVzdCBo YW5kbGUgc2VudCBieSBPU0wuCiAgKiBPdXRwdXQ6CQlOb25lCiAgKiBSZXR1cm4gdmFsdWU6CU5v bmUKICAqLwogVFdfVk9JRAotdHdfb3NsX2N0bHJfYnVzeShzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5k bGUgKmN0bHJfaGFuZGxlLAotCXN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKQor dHdfb3NsX3RpbWVvdXQoc3RydWN0IHR3X2NsX3JlcV9oYW5kbGUgKnJlcV9oYW5kbGUpCit7CisJ c3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9IHJlcV9oYW5kbGUtPm9zbF9yZXFfY3R4 dDsKKwl1bmlvbiBjY2IJCQkqY2NiID0gKHVuaW9uIGNjYiAqKShyZXEtPm9yaWdfcmVxKTsKKwlz dHJ1Y3QgY2NiX2hkcgkJCSpjY2JfaCA9ICYoY2NiLT5jY2JfaCk7CisKKwlyZXEtPmRlYWRsaW5l ID0gdHdfb3NsX2dldF9sb2NhbF90aW1lKCkgKyAoY2NiX2gtPnRpbWVvdXQgLyAxMDAwKTsKK30K KworCisKKy8qCisgKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xfdW50aW1lb3V0CisgKiBEZXNjcmlw dGlvbjoJCUludmVyc2Ugb2YgY2FsbCB0byB0aW1lb3V0KCkuCisgKgorICogSW5wdXQ6CQlyZXFf aGFuZGxlIC0tIHB0ciB0byByZXF1ZXN0IGhhbmRsZSBzZW50IGJ5IE9TTC4KKyAqIE91dHB1dDoJ CU5vbmUKKyAqIFJldHVybiB2YWx1ZToJTm9uZQorICovCitUV19WT0lECit0d19vc2xfdW50aW1l b3V0KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKQogewotCXR3X29zbGlfZGlz YWxsb3dfbmV3X3JlcXVlc3RzKGN0bHJfaGFuZGxlLT5vc2xfY3Rscl9jdHh0LCByZXFfaGFuZGxl KTsKKwlzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dAkqcmVxID0gcmVxX2hhbmRsZS0+b3NsX3Jl cV9jdHh0OworCisJcmVxLT5kZWFkbGluZSA9IDA7CiB9CiAKIApAQCAtNzA0LDcgKzcwNiw3IEBA CiAKIAl0d19vc2xpX3VubWFwX3JlcXVlc3QocmVxKTsKIAotCXVudGltZW91dCh0d2FfdGltZW91 dCwgcmVxLCBjY2ItPmNjYl9oLnRpbWVvdXRfY2gpOworCXJlcS0+ZGVhZGxpbmUgPSAwOwogCWlm IChyZXEtPmVycm9yX2NvZGUpIHsKIAkJLyogVGhpcyByZXF1ZXN0IG5ldmVyIGdvdCBzdWJtaXR0 ZWQgdG8gdGhlIGZpcm13YXJlLiAqLwogCQlpZiAocmVxLT5lcnJvcl9jb2RlID09IEVCVVNZKSB7 CkBAIC03MzEsNyArNzMzLDcgQEAKIAkJCWVsc2UgaWYgKHJlcV9wa3QtPnN0YXR1cyAmIFRXX0NM X0VSUl9SRVFfU0NTSV9FUlJPUikKIAkJCQljY2ItPmNjYl9oLnN0YXR1cyB8PSBDQU1fU0NTSV9T VEFUVVNfRVJST1I7CiAJCQllbHNlIGlmIChyZXFfcGt0LT5zdGF0dXMgJiBUV19DTF9FUlJfUkVR X0JVU19SRVNFVCkKLQkJCQljY2ItPmNjYl9oLnN0YXR1cyB8PSBDQU1fU0NTSV9CVVNfUkVTRVQ7 CisJCQkJY2NiLT5jY2JfaC5zdGF0dXMgfD0gKENBTV9SRVFVRVVFX1JFUSB8IENBTV9TQ1NJX0JV U19SRVNFVCk7CiAJCQkvKgogCQkJICogSWYgbm9uZSBvZiB0aGUgYWJvdmUgZXJyb3JzIG9jY3Vy cmVkLCBzaW1wbHkKIAkJCSAqIG1hcmsgY29tcGxldGlvbiBlcnJvci4KZGlmZiAtdSBGcmVlQlNE X1JFTEVOR183X3R3YV9jdnMvdHdfb3NsX2ZyZWVic2QuYyBGcmVlQlNEN190d2FfM183MF8wNV8w MTAvdHdfb3NsX2ZyZWVic2QuYwotLS0gRnJlZUJTRF9SRUxFTkdfN190d2FfY3ZzL3R3X29zbF9m cmVlYnNkLmMJMjAxMC0wOC0yNiAxNTozNTowMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q3 X3R3YV8zXzcwXzA1XzAxMC90d19vc2xfZnJlZWJzZC5jCTIwMTAtMDgtMjYgMTU6MTU6MDcuMDAw MDAwMDAwIC0wNzAwCkBAIC04NiwxMCArODYsOSBAQAogICoJCQlub24temVyby0tIGZhaWx1cmUK ICAqLwogc3RhdGljIFRXX0lOVDMyCi10d2Ffb3BlbihzdHJ1Y3QgY2RldiAqZGV2LCBUV19JTlQz MiBmbGFncywgVFdfSU5UMzIgZm10LCBkX3RocmVhZF90ICpwcm9jKQordHdhX29wZW4oc3RydWN0 IGNkZXYgKmRldiwgVFdfSU5UMzIgZmxhZ3MsIFRXX0lOVDMyIGZtdCwgc3RydWN0IHRocmVhZCAq cHJvYykKIHsKLQlUV19JTlQzMgkJdW5pdCA9IG1pbm9yKGRldik7Ci0Jc3RydWN0IHR3YV9zb2Z0 Ywkqc2MgPSBkZXZjbGFzc19nZXRfc29mdGModHdhX2RldmNsYXNzLCB1bml0KTsKKwlzdHJ1Y3Qg dHdhX3NvZnRjCSpzYyA9IChzdHJ1Y3QgdHdhX3NvZnRjICopKGRldi0+c2lfZHJ2MSk7CiAKIAl0 d19vc2xpX2RiZ19kcHJpbnRmKDUsIHNjLCAiZW50ZXJlZCIpOwogCXNjLT5vcGVuID0gVFdfQ0xf VFJVRTsKQEAgLTExMiwxMCArMTExLDkgQEAKICAqCQkJbm9uLXplcm8tLSBmYWlsdXJlCiAgKi8K IHN0YXRpYyBUV19JTlQzMgotdHdhX2Nsb3NlKHN0cnVjdCBjZGV2ICpkZXYsIFRXX0lOVDMyIGZs YWdzLCBUV19JTlQzMiBmbXQsIGRfdGhyZWFkX3QgKnByb2MpCit0d2FfY2xvc2Uoc3RydWN0IGNk ZXYgKmRldiwgVFdfSU5UMzIgZmxhZ3MsIFRXX0lOVDMyIGZtdCwgc3RydWN0IHRocmVhZCAqcHJv YykKIHsKLQlUV19JTlQzMgkJdW5pdCA9IG1pbm9yKGRldik7Ci0Jc3RydWN0IHR3YV9zb2Z0Ywkq c2MgPSBkZXZjbGFzc19nZXRfc29mdGModHdhX2RldmNsYXNzLCB1bml0KTsKKwlzdHJ1Y3QgdHdh X3NvZnRjCSpzYyA9IChzdHJ1Y3QgdHdhX3NvZnRjICopKGRldi0+c2lfZHJ2MSk7CiAKIAl0d19v c2xpX2RiZ19kcHJpbnRmKDUsIHNjLCAiZW50ZXJlZCIpOwogCXNjLT5vcGVuID0gVFdfQ0xfRkFM U0U7CkBAIC0xNDIsNyArMTQwLDcgQEAKICAqCQkJbm9uLXplcm8tLSBmYWlsdXJlCiAgKi8KIHN0 YXRpYyBUV19JTlQzMgotdHdhX2lvY3RsKHN0cnVjdCBjZGV2ICpkZXYsIHVfbG9uZyBjbWQsIGNh ZGRyX3QgYnVmLCBUV19JTlQzMiBmbGFncywgZF90aHJlYWRfdCAqcHJvYykKK3R3YV9pb2N0bChz dHJ1Y3QgY2RldiAqZGV2LCB1X2xvbmcgY21kLCBjYWRkcl90IGJ1ZiwgVFdfSU5UMzIgZmxhZ3Ms IHN0cnVjdCB0aHJlYWQgKnByb2MpCiB7CiAJc3RydWN0IHR3YV9zb2Z0Ywkqc2MgPSAoc3RydWN0 IHR3YV9zb2Z0YyAqKShkZXYtPnNpX2RydjEpOwogCVRXX0lOVDMyCQllcnJvcjsKQEAgLTE3Nyw2 ICsxNzUsOSBAQAogc3RhdGljIFRXX0lOVDMyCXR3YV9zaHV0ZG93bihkZXZpY2VfdCBkZXYpOwog c3RhdGljIFRXX1ZPSUQJdHdhX2J1c2RtYV9sb2NrKFRXX1ZPSUQgKmxvY2tfYXJnLCBidXNfZG1h X2xvY2tfb3BfdCBvcCk7CiBzdGF0aWMgVFdfVk9JRAl0d2FfcGNpX2ludHIoVFdfVk9JRCAqYXJn KTsKK3N0YXRpYyBUV19WT0lECXR3YV93YXRjaGRvZyhUV19WT0lEICphcmcpOworaW50IHR3YV9z ZXR1cF9pbnRyKHN0cnVjdCB0d2Ffc29mdGMgKnNjKTsKK2ludCB0d2FfdGVhcmRvd25faW50cihz dHJ1Y3QgdHdhX3NvZnRjICpzYyk7CiAKIHN0YXRpYyBUV19JTlQzMgl0d19vc2xpX2FsbG9jX21l bShzdHJ1Y3QgdHdhX3NvZnRjICpzYyk7CiBzdGF0aWMgVFdfVk9JRAl0d19vc2xpX2ZyZWVfcmVz b3VyY2VzKHN0cnVjdCB0d2Ffc29mdGMgKnNjKTsKQEAgLTI0MCw2ICsyNDEsMzIgQEAKIAlyZXR1 cm4oRU5YSU8pOwogfQogCitpbnQgdHdhX3NldHVwX2ludHIoc3RydWN0IHR3YV9zb2Z0YyAqc2Mp Cit7CisJaW50IGVycm9yID0gMDsKKworCWlmICghKHNjLT5pbnRyX2hhbmRsZSkgJiYgKHNjLT5p cnFfcmVzKSkgeworCQllcnJvciA9IGJ1c19zZXR1cF9pbnRyKHNjLT5idXNfZGV2LCBzYy0+aXJx X3JlcywKKwkJCQkJSU5UUl9UWVBFX0NBTSB8IElOVFJfTVBTQUZFLAorCQkJCQlOVUxMLCB0d2Ff cGNpX2ludHIsCisJCQkJCXNjLCAmc2MtPmludHJfaGFuZGxlKTsKKwl9CisJcmV0dXJuKCBlcnJv ciApOworfQorCisKK2ludCB0d2FfdGVhcmRvd25faW50cihzdHJ1Y3QgdHdhX3NvZnRjICpzYykK K3sKKwlpbnQgZXJyb3IgPSAwOworCisJaWYgKChzYy0+aW50cl9oYW5kbGUpICYmIChzYy0+aXJx X3JlcykpIHsKKwkJZXJyb3IgPSBidXNfdGVhcmRvd25faW50cihzYy0+YnVzX2RldiwKKwkJCQkJ CXNjLT5pcnFfcmVzLCBzYy0+aW50cl9oYW5kbGUpOworCQlzYy0+aW50cl9oYW5kbGUgPSBOVUxM OworCX0KKwlyZXR1cm4oIGVycm9yICk7Cit9CisKIAogCiAvKgpAQCAtMzU2LDEwICszODMsNyBA QAogCQl0d19vc2xpX2ZyZWVfcmVzb3VyY2VzKHNjKTsKIAkJcmV0dXJuKEVOWElPKTsKIAl9Ci0J aWYgKChlcnJvciA9IGJ1c19zZXR1cF9pbnRyKHNjLT5idXNfZGV2LCBzYy0+aXJxX3JlcywKLQkJ CUlOVFJfVFlQRV9DQU0gfCBJTlRSX01QU0FGRSwKLQkJCU5VTEwsIHR3YV9wY2lfaW50ciwJICAg IAotCQkJc2MsICZzYy0+aW50cl9oYW5kbGUpKSkgeworCWlmICgoZXJyb3IgPSB0d2Ffc2V0dXBf aW50cihzYykpKSB7CiAJCXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAlZCIsCiAJCQlUV19D TF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNE X0RSSVZFUiwKQEAgLTQxNCwxMCArNDM4LDc3IEBACiAJCXJldHVybihlcnJvcik7CiAJfQogCisJ c2MtPndhdGNoZG9nX2luZGV4ID0gMDsKKwljYWxsb3V0X2luaXQoJihzYy0+d2F0Y2hkb2dfY2Fs bG91dFswXSksIENBTExPVVRfTVBTQUZFKTsKKwljYWxsb3V0X2luaXQoJihzYy0+d2F0Y2hkb2df Y2FsbG91dFsxXSksIENBTExPVVRfTVBTQUZFKTsKKwljYWxsb3V0X3Jlc2V0KCYoc2MtPndhdGNo ZG9nX2NhbGxvdXRbMF0pLCA1Kmh6LCB0d2Ffd2F0Y2hkb2csICZzYy0+Y3Rscl9oYW5kbGUpOwor CiAJcmV0dXJuKDApOwogfQogCiAKK3N0YXRpYyBUV19WT0lECit0d2Ffd2F0Y2hkb2coVFdfVk9J RCAqYXJnKQoreworCXN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUgPQorCQko c3RydWN0IHR3X2NsX2N0bHJfaGFuZGxlICopYXJnOworCXN0cnVjdCB0d2Ffc29mdGMJCSpzYyA9 IGN0bHJfaGFuZGxlLT5vc2xfY3Rscl9jdHh0OworCWludAkJCQlpOworCWludAkJCQlpX25lZWRf YV9yZXNldCA9IDA7CisJaW50CQkJCWRyaXZlcl9pc19hY3RpdmUgPSAwOworCWludAkJCQlteV93 YXRjaGRvZ193YXNfcGVuZGluZyA9IDEyMzQ7CisJVFdfVUlOVDY0CQkJY3VycmVudF90aW1lOwor CXN0cnVjdCB0d19vc2xpX3JlcV9jb250ZXh0CSpteV9yZXE7CisKKworLy89PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKwljdXJyZW50X3RpbWUgPSAoVFdfVUlOVDY0KSAodHdfb3NsX2dldF9sb2NhbF90 aW1lKCkpOworCisJZm9yIChpID0gMDsgaSA8IFRXX09TTElfTUFYX05VTV9SRVFVRVNUUzsgaSsr KSB7CisJCW15X3JlcSA9ICYoc2MtPnJlcV9jdHhfYnVmW2ldKTsKKworCQlpZiAoKG15X3JlcS0+ c3RhdGUgPT0gVFdfT1NMSV9SRVFfU1RBVEVfQlVTWSkgJiYKKwkJCShteV9yZXEtPmRlYWRsaW5l KSAmJgorCQkJKG15X3JlcS0+ZGVhZGxpbmUgPCBjdXJyZW50X3RpbWUpKSB7CisJCQl0d19jbF9z ZXRfcmVzZXRfbmVlZGVkKGN0bHJfaGFuZGxlKTsKKyNpZmRlZiAgICBUV19PU0xfREVCVUcKKwkJ CWRldmljZV9wcmludGYoKHNjKS0+YnVzX2RldiwgIlJlcXVlc3QgJWQgdGltZWQgb3V0ISBkID0g JXAsIGMgPSAlcFxuIiwgaSwgKHZvaWQqKW15X3JlcS0+ZGVhZGxpbmUsICh2b2lkKiljdXJyZW50 X3RpbWUpOworI2Vsc2UgIC8qIFRXX09TTF9ERUJVRyAqLworCQkJZGV2aWNlX3ByaW50Zigoc2Mp LT5idXNfZGV2LCAiUmVxdWVzdCAlZCB0aW1lZCBvdXQhXG4iLCBpKTsKKyNlbmRpZiAvKiBUV19P U0xfREVCVUcgKi8KKwkJCWJyZWFrOworCQl9CisJfQorLy89PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworCWlfbmVlZF9hX3Jlc2V0ID0gdHdfY2xfaXNfcmVzZXRfbmVlZGVkKGN0bHJfaGFuZGxlKTsK KworCWkgPSAoaW50KSAoKHNjLT53YXRjaGRvZ19pbmRleCsrKSAmIDEpOworCisJZHJpdmVyX2lz X2FjdGl2ZSA9IHR3X2NsX2lzX2FjdGl2ZShjdGxyX2hhbmRsZSk7CisKKwlpZiAoaV9uZWVkX2Ff cmVzZXQpIHsKKyNpZmRlZiAgICBUV19PU0xfREVCVUcKKwkJZGV2aWNlX3ByaW50Zigoc2MpLT5i dXNfZGV2LCAiV2F0Y2hkb2cgcmVzY2hlZHVsZWQgaW4gNzAgc2Vjb25kc1xuIik7CisjZW5kaWYg LyogVFdfT1NMX0RFQlVHICovCisJCW15X3dhdGNoZG9nX3dhc19wZW5kaW5nID0KKwkJCWNhbGxv dXRfcmVzZXQoJihzYy0+d2F0Y2hkb2dfY2FsbG91dFtpXSksIDcwKmh6LCB0d2Ffd2F0Y2hkb2cs ICZzYy0+Y3Rscl9oYW5kbGUpOworCQl0d19jbF9yZXNldF9jdGxyKGN0bHJfaGFuZGxlKTsKKyNp ZmRlZiAgICBUV19PU0xfREVCVUcKKwkJZGV2aWNlX3ByaW50Zigoc2MpLT5idXNfZGV2LCAiV2F0 Y2hkb2cgcmVzZXQgY29tcGxldGVkIVxuIik7CisjZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCisJ fSBlbHNlIGlmIChkcml2ZXJfaXNfYWN0aXZlKSB7CisJCW15X3dhdGNoZG9nX3dhc19wZW5kaW5n ID0KKwkJCWNhbGxvdXRfcmVzZXQoJihzYy0+d2F0Y2hkb2dfY2FsbG91dFtpXSksICA1Kmh6LCB0 d2Ffd2F0Y2hkb2csICZzYy0+Y3Rscl9oYW5kbGUpOworCX0KKyNpZmRlZiAgICBUV19PU0xfREVC VUcKKwlpZiAoaV9uZWVkX2FfcmVzZXQgfHwgbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcpCisJCWRl dmljZV9wcmludGYoKHNjKS0+YnVzX2RldiwgImlfbmVlZF9hX3Jlc2V0ID0gJWQsICIKKwkJImRy aXZlcl9pc19hY3RpdmUgPSAlZCwgbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcgPSAlZFxuIiwKKwkJ aV9uZWVkX2FfcmVzZXQsIGRyaXZlcl9pc19hY3RpdmUsIG15X3dhdGNoZG9nX3dhc19wZW5kaW5n KTsKKyNlbmRpZiAvKiBUV19PU0xfREVCVUcgKi8KK30KKwogCiAvKgogICogRnVuY3Rpb24gbmFt ZToJdHdfb3NsaV9hbGxvY19tZW0KQEAgLTcxNyw5ICs4MDgsNyBAQAogCiAKIAkvKiBEaXNjb25u ZWN0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gKi8KLQlpZiAoc2MtPmludHJfaGFuZGxlKQotCQlp ZiAoKGVycm9yID0gYnVzX3RlYXJkb3duX2ludHIoc2MtPmJ1c19kZXYsCi0JCQkJc2MtPmlycV9y ZXMsIHNjLT5pbnRyX2hhbmRsZSkpKQorCWlmICgoZXJyb3IgPSB0d2FfdGVhcmRvd25faW50cihz YykpKQogCQkJdHdfb3NsaV9kYmdfZHByaW50ZigxLCBzYywKIAkJCQkidGVhcmRvd25faW50ciBy ZXR1cm5lZCAlZCIsIGVycm9yKTsKIApAQCAtODExLDYgKzkwMCwxMyBAQAogCiAJdHdfb3NsaV9k YmdfZHByaW50ZigzLCBzYywgImVudGVyZWQiKTsKIAorCS8qIFN0b3Agd2F0Y2hkb2cgdGFzay4g Ki8KKwljYWxsb3V0X2RyYWluKCYoc2MtPndhdGNoZG9nX2NhbGxvdXRbMF0pKTsKKwljYWxsb3V0 X2RyYWluKCYoc2MtPndhdGNoZG9nX2NhbGxvdXRbMV0pKTsKKworCS8qIERpc2Nvbm5lY3QgaW50 ZXJydXB0cy4gKi8KKwllcnJvciA9IHR3YV90ZWFyZG93bl9pbnRyKHNjKTsKKwogCS8qIERpc2Nv bm5lY3QgZnJvbSB0aGUgY29udHJvbGxlci4gKi8KIAlpZiAoKGVycm9yID0gdHdfY2xfc2h1dGRv d25fY3RscigmKHNjLT5jdGxyX2hhbmRsZSksIDApKSkgewogCQl0d19vc2xpX3ByaW50ZihzYywg ImVycm9yID0gJWQiLApAQCAtOTk5LDMzICsxMDk1LDM1IEBACiAJCQkJZXJyb3IgPSAwOyAvKiBG YWxzZSBlcnJvciAqLwogCQkJCWJyZWFrOwogCQkJfQotCQkJdHdfb3NsaV9wcmludGYoc2MsICJy ZXF1ZXN0ID0gJXAiLAotCQkJCVRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCQlUV19D TF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJCQkweDIwMTgsCi0JCQkJIlBhc3N0 aHJ1IHJlcXVlc3QgdGltZWQgb3V0ISIsCi0JCQkJcmVxKTsKLQkJCS8qCi0JCQkgKiBTaG91bGQg SSBjaGVjayBoZXJlIGlmIHRoZSB0aW1lb3V0IGhhcHBlbmVkCi0JCQkgKiBiZWNhdXNlIG9mIHll dCBhbm90aGVyIHJlc2V0LCBhbmQgbm90IGRvIGEKLQkJCSAqIHNlY29uZCByZXNldD8KLQkJCSAq LwotCQkJdHdfY2xfcmVzZXRfY3Rscigmc2MtPmN0bHJfaGFuZGxlKTsKKwkJCWlmICghKHR3X2Ns X2lzX3Jlc2V0X25lZWRlZCgmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKSkpIHsKKyNpZmRlZiAg ICBUV19PU0xfREVCVUcKKwkJCQl0d19vc2xpX3ByaW50ZihzYywgInJlcXVlc3QgPSAlcCIsCisJ CQkJCVRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKKwkJCQkJVFdfQ0xfTUVTU0FHRV9TT1VS Q0VfRlJFRUJTRF9EUklWRVIsCisJCQkJCTB4MjAxOCwKKwkJCQkJIlBhc3N0aHJ1IHJlcXVlc3Qg dGltZWQgb3V0ISIsCisJCQkJCXJlcSk7CisjZWxzZSAgLyogVFdfT1NMX0RFQlVHICovCisJCQlk ZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJQYXNzdGhydSByZXF1ZXN0IHRpbWVkIG91dCFc biIpOworI2VuZGlmIC8qIFRXX09TTF9ERUJVRyAqLworCQkJCXR3X2NsX3Jlc2V0X2N0bHIoJihy ZXEtPmN0bHItPmN0bHJfaGFuZGxlKSk7CisJCQl9CisKKwkJCWVycm9yID0gMDsKKwkJCWVuZF90 aW1lID0gdHdfb3NsX2dldF9sb2NhbF90aW1lKCkgKyB0aW1lb3V0OworCQkJY29udGludWU7CiAJ CQkvKgogCQkJICogRG9uJ3QgdG91Y2ggcmVxIGFmdGVyIGEgcmVzZXQuICBJdCAoYW5kIGFueQot CQkJICogYXNzb2NpYXRlZCBkYXRhKSB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuCisJCQkgKiBhc3Nv Y2lhdGVkIGRhdGEpIHdpbGwgYmUKIAkJCSAqIHVubWFwcGVkIGJ5IHRoZSBjYWxsYmFjay4KIAkJ CSAqLwotCQkJdXNlcl9idWYtPmRyaXZlcl9wa3Qub3Nfc3RhdHVzID0gZXJyb3I7Ci0JCQllcnJv ciA9IEVUSU1FRE9VVDsKLQkJCWdvdG8gZndfcGFzc3RocnVfZXJyOwogCQl9CiAJCS8qIAogCQkg KiBFaXRoZXIgdGhlIHJlcXVlc3QgZ290IGNvbXBsZXRlZCwgb3Igd2Ugd2VyZSB3b2tlbiB1cCBi eSBhCiAJCSAqIHNpZ25hbC4gIENhbGN1bGF0ZSB0aGUgbmV3IHRpbWVvdXQsIGluIGNhc2UgaXQg d2FzIHRoZSBsYXR0ZXIuCiAJCSAqLwogCQl0aW1lb3V0ID0gKGVuZF90aW1lIC0gdHdfb3NsX2dl dF9sb2NhbF90aW1lKCkpOwotCX0KKwl9IC8qIEVuZCBvZiB3aGlsZSBsb29wICovCiAKIAkvKiBJ ZiB0aGVyZSB3YXMgYSBwYXlsb2FkLCBjb3B5IGl0IGJhY2suICovCiAJaWYgKCghZXJyb3IpICYm IChyZXEtPmxlbmd0aCkpCkBAIC0xMDM5LDE5ICsxMTM3LDkgQEAKIAkJCQllcnJvcik7CiAJCiBm d19wYXNzdGhydV9lcnI6Ci0JLyoKLQkgKiBQcmludCB0aGUgZmFpbHVyZSBtZXNzYWdlLiAgRm9y IHNvbWUgcmVhc29uLCBvbiBjZXJ0YWluIE9TIHZlcnNpb25zLAotCSAqIHByaW50aW5nIHRoaXMg ZXJyb3IgbWVzc2FnZSBkdXJpbmcgcmVzZXQgaGFuZ3MgdGhlIGRpc3BsYXkgKGFsdGhvdWdoCi0J ICogdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBpcyBydW5uaW5nIGZpbmUuICBTbywgZG9uJ3QgcHJp bnQgaXQgaWYgdGhlCi0JICogZmFpbHVyZSB3YXMgZHVlIHRvIGEgcmVzZXQuCi0JICovCi0JaWYg KChlcnJvcikgJiYgKGVycm9yICE9IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUKSkKLQkJdHdfb3Ns aV9wcmludGYoc2MsICJlcnJvciA9ICVkIiwJCQotCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RS SU5HLAotCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCi0JCQkweDIwMUEs Ci0JCQkiRmlybXdhcmUgcGFzc3RocnUgZmFpbGVkISIsCi0JCQllcnJvcik7CisKKwlpZiAocmVx X3BrdC0+c3RhdHVzID09IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUKQorCQllcnJvciA9IEVCVVNZ OwogCiAJdXNlcl9idWYtPmRyaXZlcl9wa3Qub3Nfc3RhdHVzID0gZXJyb3I7CiAJLyogRnJlZSBy ZXNvdXJjZXMuICovCkBAIC0xMDc1LDYgKzExNjMsOCBAQAogdHdfb3NsX2NvbXBsZXRlX3Bhc3N0 aHJ1KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKQogewogCXN0cnVjdCB0d19v c2xpX3JlcV9jb250ZXh0CSpyZXEgPSByZXFfaGFuZGxlLT5vc2xfcmVxX2N0eHQ7CisJc3RydWN0 IHR3X2NsX3JlcV9wYWNrZXQJCSpyZXFfcGt0ID0KKwkJKHN0cnVjdCB0d19jbF9yZXFfcGFja2V0 ICopKCZyZXEtPnJlcV9wa3QpOwogCXN0cnVjdCB0d2Ffc29mdGMJCSpzYyA9IHJlcS0+Y3RscjsK IAogCXR3X29zbGlfZGJnX2RwcmludGYoNSwgc2MsICJlbnRlcmVkIik7CkBAIC0xMTIyLDYgKzEy MTIsOSBAQAogCQkJaWYgKHJlcS0+ZmxhZ3MgJiBUV19PU0xJX1JFUV9GTEFHU19NQVBQRUQpCiAJ CQkJcmV0dXJuOwogCisJCQlpZiAocmVxX3BrdC0+c3RhdHVzID09IFRXX0NMX0VSUl9SRVFfQlVT X1JFU0VUKQorCQkJCXJldHVybjsKKwogCQkJdHdfb3NsaV9wcmludGYoc2MsICJyZXF1ZXN0ID0g JXAiLAogCQkJCVRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKIAkJCQlUV19DTF9NRVNTQUdF X1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKQEAgLTExNjgsNiArMTI2MSw3IEBACiAJCXJlcS0+cmVx X2hhbmRsZS5pc19pbyA9IDA7CiAJCXJlcS0+ZGF0YSA9IE5VTEw7CiAJCXJlcS0+bGVuZ3RoID0g MDsKKwkJcmVxLT5kZWFkbGluZSA9IDA7CiAJCXJlcS0+cmVhbF9kYXRhID0gTlVMTDsKIAkJcmVx LT5yZWFsX2xlbmd0aCA9IDA7CiAJCXJlcS0+c3RhdGUgPSBUV19PU0xJX1JFUV9TVEFURV9JTklU Oy8qIHJlcSBiZWluZyBpbml0aWFsaXplZCAqLwpAQCAtMTIwOSw2ICsxMzAzLDExIEBACiAKIAl0 d19vc2xpX2RiZ19kcHJpbnRmKDEwLCBzYywgImVudGVyZWQiKTsKIAorCWlmIChlcnJvciA9PSBF SU5WQUwpIHsKKwkJcmVxLT5lcnJvcl9jb2RlID0gZXJyb3I7CisJCXJldHVybjsKKwl9CisKIAkv KiBNYXJrIHRoZSByZXF1ZXN0IGFzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuICovCiAJcmVx LT5zdGF0ZSA9IFRXX09TTElfUkVRX1NUQVRFX0JVU1k7CiAJLyogTW92ZSB0aGUgcmVxdWVzdCBp bnRvIHRoZSBidXN5IHF1ZXVlLiAqLwpAQCAtMTQwMiw2ICsxNTAxLDE0IEBACiAJCQkJbXR4X3Vu bG9ja19zcGluKHNjLT5pb19sb2NrKTsKIAkJCQllcnJvciA9IDA7CiAJCQl9IGVsc2UgeworCQkJ CXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAlZCIsCisJCQkJCVRXX0NMX1NFVkVSSVRZX0VS Uk9SX1NUUklORywKKwkJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCisJ CQkJCTB4OTk5OSwKKwkJCQkJIkZhaWxlZCB0byBtYXAgRE1BIG1lbW9yeSAiCisJCQkJCSJmb3Ig SS9PIHJlcXVlc3QiLAorCQkJCQllcnJvcik7CisJCQkJcmVxLT5mbGFncyB8PSBUV19PU0xJX1JF UV9GTEFHU19GQUlMRUQ7CiAJCQkJLyogRnJlZSBhbGlnbm1lbnQgYnVmZmVyIGlmIGl0IHdhcyB1 c2VkLiAqLwogCQkJCWlmIChyZXEtPmZsYWdzICYKIAkJCQkJVFdfT1NMSV9SRVFfRkxBR1NfREFU QV9DT1BZX05FRURFRCkgewpkaWZmIC11IEZyZWVCU0RfUkVMRU5HXzdfdHdhX2N2cy90d19vc2xf c2hhcmUuaCBGcmVlQlNEN190d2FfM183MF8wNV8wMTAvdHdfb3NsX3NoYXJlLmgKLS0tIEZyZWVC U0RfUkVMRU5HXzdfdHdhX2N2cy90d19vc2xfc2hhcmUuaAkyMDEwLTA4LTI2IDE1OjM1OjAwLjAw MDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRDdfdHdhXzNfNzBfMDVfMDEwL3R3X29zbF9zaGFyZS5o CTIwMTAtMDgtMjQgMTg6MDE6MTMuMDAwMDAwMDAwIC0wNzAwCkBAIC03NSw3ICs3NSw3IEBACiAj ZGVmaW5lIFRXX09TTF9FTkNMT1NVUkVfU1VQUE9SVAogI2VuZGlmCiAKLSNkZWZpbmUgVFdfT1NM X0RSSVZFUl9WRVJTSU9OX1NUUklORwkiMy43MC4wNS4wMDgiCisjZGVmaW5lIFRXX09TTF9EUklW RVJfVkVSU0lPTl9TVFJJTkcJIjMuNzAuMDUuMDEwIgogCiAjZGVmaW5lCVRXX09TTF9DQU5fU0xF RVAKIAo= --_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Ccosmail03lsicom_--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504C>