Date: Mon, 30 Aug 2010 13:10:48 -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: <27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504A@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_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Acosmail03lsicom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Attaching patch FreeBSD_HEAD_src_sys_dev_twa.txt for HEAD (MAIN). 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_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Acosmail03lsicom_ Content-Type: text/plain; name="FreeBSD_HEAD_src_sys_dev_twa.txt" Content-Description: FreeBSD_HEAD_src_sys_dev_twa.txt Content-Disposition: attachment; filename="FreeBSD_HEAD_src_sys_dev_twa.txt"; size=43585; creation-date="Thu, 26 Aug 2010 16:55:26 GMT"; modification-date="Thu, 26 Aug 2010 16:55:26 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19jbC5oIEZyZWVCU0RfSEVBRF90d2FfM184 MF8wNl8wMDMvdHdfY2wuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2wuaAkyMDEwLTA4 LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2 XzAwMy90d19jbC5oCTIwMTAtMDgtMjQgMTg6MDI6MTIuMDAwMDAwMDAwIC0wNzAwCkBAIC04OCw3 ICs4OCw4IEBACiAjZGVmaW5lIFRXX0NMSV9CVVNZX1EJCTEJLyogcSBvZiByZXFzIHN1Ym1pdHRl ZCB0byBmdyAqLwogI2RlZmluZSBUV19DTElfUEVORElOR19RCTIJLyogcSBvZiByZXFzIGRlZmVy cmVkIGR1ZSB0byAncSBmdWxsJyAqLwogI2RlZmluZSBUV19DTElfQ09NUExFVEVfUQkzCS8qIHEg b2YgcmVxcyBjb21wbGV0ZWQgYnkgZncgKi8KLSNkZWZpbmUgVFdfQ0xJX1FfQ09VTlQJCTQJLyog dG90YWwgbnVtYmVyIG9mIHF1ZXVlcyAqLworI2RlZmluZSBUV19DTElfUkVTRVRfUQkJNAkvKiBx IG9mIHJlcXMgcmVzZXQgYnkgdGltZW91dCAqLworI2RlZmluZSBUV19DTElfUV9DT1VOVAkJNQkv KiB0b3RhbCBudW1iZXIgb2YgcXVldWVzICovCiAKIAogLyogQ0wncyBpbnRlcm5hbCByZXF1ZXN0 IGNvbnRleHQuICovCkBAIC0xMzMsNiArMTM0LDcgQEAKIAlUV19VSU5UOCAJCWludGVycnVwdHNf ZW5hYmxlZDsJICAvKiBJbnRlcnJ1cHRzIG9uIGNvbnRyb2xsZXIgZW5hYmxlZC4gKi8KIAlUV19V SU5UOCAJCWludGVybmFsX3JlcV9idXN5OwkgIC8qIERhdGEgYnVmZmVyIGZvciBpbnRlcm5hbCBy ZXF1ZXN0cyBpbiB1c2UuICovCiAJVFdfVUlOVDggCQlnZXRfbW9yZV9hZW5zOwkJICAvKiBNb3Jl IEFFTidzIG5lZWQgdG8gYmUgcmV0cmlldmVkLiAqLworCVRXX1VJTlQ4IAkJcmVzZXRfbmVlZGVk OwkJICAvKiBDb250cm9sbGVyIG5lZWRzIGEgc29mdCByZXNldC4gKi8KIAlUV19VSU5UOCAJCXJl c2V0X2luX3Byb2dyZXNzOwkgIC8qIENvbnRyb2xsZXIgaXMgYmVpbmcgcmVzZXQuICovCiAJVFdf VUlOVDggCQlyZXNldF9waGFzZTFfaW5fcHJvZ3Jlc3M7IC8qIEluICdwaGFzZSAxJyBvZiByZXNl dC4gKi8KIAlUV19VSU5UMzIJCWZsYWdzOwkJLyogY29udHJvbGxlciBzZXR0aW5ncyAqLwpkaWZm IC11IEZyZWVCU0RfSEVBRF90d2FfY3ZzL3R3X2NsX2V4dGVybnMuaCBGcmVlQlNEX0hFQURfdHdh XzNfODBfMDZfMDAzL3R3X2NsX2V4dGVybnMuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdf Y2xfZXh0ZXJucy5oCTIwMTAtMDgtMjYgMTU6MzQ6MzMuMDAwMDAwMDAwIC0wNzAwCisrKyBGcmVl QlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2V4dGVybnMuaAkyMDEwLTA4LTI0IDE4OjAy OjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtODYsNiArODYsOCBAQAogCiAvKiBTb2Z0IHJlc2V0IHRo ZSBjb250cm9sbGVyLiAqLwogZXh0ZXJuIFRXX0lOVDMyCXR3X2NsaV9zb2Z0X3Jlc2V0KHN0cnVj dCB0d19jbGlfY3Rscl9jb250ZXh0ICpjdGxyKTsKK2V4dGVybiBpbnQgdHdhX3NldHVwX2ludHIo c3RydWN0IHR3YV9zb2Z0YyAqc2MpOworZXh0ZXJuIGludCB0d2FfdGVhcmRvd25faW50cihzdHJ1 Y3QgdHdhX3NvZnRjICpzYyk7CiAKIC8qIFNlbmQgZG93biBhIFNDU0kgY29tbWFuZCB0byB0aGUg ZmlybXdhcmUgKHVzdWFsbHksIGFuIGludGVybmFsIFJlcSBTZW5zZS4gKi8KIGV4dGVybiBUV19J TlQzMgl0d19jbGlfc2VuZF9zY3NpX2NtZChzdHJ1Y3QgdHdfY2xpX3JlcV9jb250ZXh0ICpyZXEs CmRpZmYgLXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2xfZndpZi5oIEZyZWVCU0RfSEVBRF90 d2FfM184MF8wNl8wMDMvdHdfY2xfZndpZi5oCi0tLSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19j bF9md2lmLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Rf SEVBRF90d2FfM184MF8wNl8wMDMvdHdfY2xfZndpZi5oCTIwMTAtMDgtMjQgMTg6MDI6MTIuMDAw MDAwMDAwIC0wNzAwCkBAIC04OSw3ICs4OSw3IEBACiAjZGVmaW5lIFRXQV9TVEFUVVNfTUlOT1Jf VkVSU0lPTl9NQVNLCQkweDBGMDAwMDAwCiAjZGVmaW5lIFRXQV9TVEFUVVNfTUFKT1JfVkVSU0lP Tl9NQVNLCQkweEYwMDAwMDAwCiAKLSNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJ CTB4MDBGMDAwMDAKKyNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJCTB4MDBEMDAw MDAKIAogCiAvKiBQQ0kgcmVsYXRlZCBkZWZpbmVzLiAqLwpkaWZmIC11IEZyZWVCU0RfSEVBRF90 d2FfY3ZzL3R3X2NsX2luaXQuYyBGcmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2lu aXQuYwotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2xfaW5pdC5jCTIwMTAtMDgtMjYgMTU6 MzQ6MzMuMDAwMDAwMDAwIC0wNzAwCisrKyBGcmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3 X2NsX2luaXQuYwkyMDEwLTA4LTI0IDE4OjAyOjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtMzE1LDYg KzMxNSw3IEBACiAJdHdfY2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX0JVU1lfUSk7CiAJdHdf Y2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSk7CiAJdHdfY2xpX3JlcV9xX2lu aXQoY3RsciwgVFdfQ0xJX0NPTVBMRVRFX1EpOworCXR3X2NsaV9yZXFfcV9pbml0KGN0bHIsIFRX X0NMSV9SRVNFVF9RKTsKIAogCS8qIEluaXRpYWxpemUgYWxsIGxvY2tzIHVzZWQgYnkgQ0wuICov CiAJY3Rsci0+Z2VuX2xvY2sgPSAmKGN0bHItPmdlbl9sb2NrX2hhbmRsZSk7CkBAIC02NzUsMTUg KzY3NiwxNCBAQAogCS8qIFN1Ym1pdCB0aGUgY29tbWFuZCwgYW5kIHdhaXQgZm9yIGl0IHRvIGNv bXBsZXRlLiAqLwogCWVycm9yID0gdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwK IAkJVFdfQ0xJX1JFUVVFU1RfVElNRU9VVF9QRVJJT0QpOwotCWlmIChlcnJvciA9PSBUV19PU0xf RVRJTUVET1VUKQotCQkvKiBDbGVhbi11cCBkb25lIGJ5IHR3X2NsaV9zdWJtaXRfYW5kX3BvbGxf cmVxdWVzdC4gKi8KLQkJcmV0dXJuKGVycm9yKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0Owog CWlmICgoZXJyb3IgPSBpbml0X2Nvbm5lY3QtPnN0YXR1cykpIHsKKyNpZiAgICAgICAwCiAJCXR3 X2NsaV9jcmVhdGVfY3Rscl9ldmVudChjdGxyLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09O VFJPTExFUl9FUlJPUiwKIAkJCSYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjZW5kaWYgLy8g MAogCQlnb3RvIG91dDsKIAl9CiAJaWYgKHNldF9mZWF0dXJlcyAmIFRXQV9FWFRFTkRFRF9JTklU X0NPTk5FQ1QpIHsKZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19jbF9pbnRyLmMgRnJl ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9pbnRyLmMKLS0tIEZyZWVCU0RfSEVBRF90 d2FfY3ZzL3R3X2NsX2ludHIuYwkyMDEwLTA4LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAor KysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9pbnRyLmMJMjAxMC0wOC0yNCAx ODowMjoxMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTI0OCw4ICsyNDgsNyBAQAogI2lmZGVmIFRXX09T 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 RVJST1JfU1RSSU5HLApkaWZmIC11IEZyZWVCU0RfSEVBRF90d2FfY3ZzL3R3X2NsX2lvLmMgRnJl ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9pby5jCi0tLSBGcmVlQlNEX0hFQURfdHdh X2N2cy90d19jbF9pby5jCTIwMTAtMDgtMjYgMTU6MzQ6MzMuMDAwMDAwMDAwIC0wNzAwCisrKyBG cmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2lvLmMJMjAxMC0wOC0yNCAxODowMjox Mi4wMDAwMDAwMDAgLTA3MDAKQEAgLTc0LDE4ICs3NCwxMiBAQAogCXN0cnVjdCB0d19jbGlfcmVx 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 LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCkBAIC03NjAsOCArNzUyLDcgQEAKIAogCWNt ZC0+cGFyYW0uc2dsX29mZl9fb3Bjb2RlID0KIAkJQlVJTERfU0dMX09GRl9fT1BDT0RFKDIsIFRX QV9GV19DTURfR0VUX1BBUkFNKTsKLQljbWQtPnBhcmFtLnJlcXVlc3RfaWQgPQotCQkoVFdfVUlO VDgpKFRXX0NMX1NXQVAxNihyZXEtPnJlcXVlc3RfaWQpKTsKKwljbWQtPnBhcmFtLnJlcXVlc3Rf aWQgPSAoVFdfVUlOVDgpKFRXX0NMX1NXQVAxNihyZXEtPnJlcXVlc3RfaWQpKTsKIAljbWQtPnBh cmFtLmhvc3RfaWRfX3VuaXQgPSBCVUlMRF9IT1NUX0lEX19VTklUKDAsIDApOwogCWNtZC0+cGFy YW0ucGFyYW1fY291bnQgPSBUV19DTF9TV0FQMTYoMSk7CiAKQEAgLTc4OSwxNSArNzgwLDE0IEBA CiAJCS8qIFRoZXJlJ3Mgbm8gY2FsbCBiYWNrOyB3YWl0IHRpbGwgdGhlIGNvbW1hbmQgY29tcGxl dGVzLiAqLwogCQllcnJvciA9IHR3X2NsaV9zdWJtaXRfYW5kX3BvbGxfcmVxdWVzdChyZXEsCiAJ CQkJVFdfQ0xJX1JFUVVFU1RfVElNRU9VVF9QRVJJT0QpOwotCQlpZiAoZXJyb3IgPT0gVFdfT1NM X0VUSU1FRE9VVCkKLQkJCS8qIENsZWFuLXVwIGRvbmUgYnkgdHdfY2xpX3N1Ym1pdF9hbmRfcG9s bF9yZXF1ZXN0LiAqLwotCQkJcmV0dXJuKGVycm9yKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBv dXQ7CiAJCWlmICgoZXJyb3IgPSBjbWQtPnBhcmFtLnN0YXR1cykpIHsKKyNpZiAgICAgICAwCiAJ CQl0d19jbGlfY3JlYXRlX2N0bHJfZXZlbnQoY3RsciwKIAkJCQlUV19DTF9NRVNTQUdFX1NPVVJD RV9DT05UUk9MTEVSX0VSUk9SLAogCQkJCSYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjZW5k aWYgLy8gMAogCQkJZ290byBvdXQ7CiAJCX0KIAkJdHdfb3NsX21lbWNweShwYXJhbV9kYXRhLCBw YXJhbS0+ZGF0YSwgcGFyYW1fc2l6ZSk7CkBAIC05MDUsMTggKzg5NSwxNyBAQAogCiAJLyogU3Vi bWl0IHRoZSBjb21tYW5kLiAqLwogCWlmIChjYWxsYmFjayA9PSBUV19DTF9OVUxMKSB7Ci0JCS8q IFRoZXJlJ3Mgbm8gY2FsbCBiYWNrOyAgd2FpdCB0aWxsIHRoZSBjb21tYW5kIGNvbXBsZXRlcy4g Ki8KKwkJLyogVGhlcmUncyBubyBjYWxsIGJhY2s7IHdhaXQgdGlsbCB0aGUgY29tbWFuZCBjb21w bGV0ZXMuICovCiAJCWVycm9yID0gdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwK LQkJCVRXX0NMSV9SRVFVRVNUX1RJTUVPVVRfUEVSSU9EKTsKLQkJaWYgKGVycm9yID09IFRXX09T TF9FVElNRURPVVQpCi0JCQkvKiBDbGVhbi11cCBkb25lIGJ5IHR3X2NsaV9zdWJtaXRfYW5kX3Bv bGxfcmVxdWVzdC4gKi8KLQkJCXJldHVybihlcnJvcik7CisJCQkJVFdfQ0xJX1JFUVVFU1RfVElN RU9VVF9QRVJJT0QpOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIG91dDsKIAkJaWYgKChlcnJvciA9 IGNtZC0+cGFyYW0uc3RhdHVzKSkgeworI2lmICAgICAgIDAKIAkJCXR3X2NsaV9jcmVhdGVfY3Rs cl9ldmVudChjdGxyLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTlRST0xMRVJfRVJST1Is CiAJCQkJJihyZXEtPmNtZF9wa3QtPmNtZF9oZHIpKTsKKyNlbmRpZiAvLyAwCiAJCQlnb3RvIG91 dDsKIAkJfQogCQljdGxyLT5pbnRlcm5hbF9yZXFfYnVzeSA9IFRXX0NMX0ZBTFNFOwpAQCAtMTAy Miw5ICsxMDExLDcgQEAKIAkgKiB0d19jbGlfc3VibWl0X3BlbmRpbmdfcXVldWUuICBUaGVyZSBj b3VsZCBiZSBhIHJhY2UgaW4gdGhhdCBjYXNlLgogCSAqIE5lZWQgdG8gcmV2aXNpdC4KIAkgKi8K LQlpZiAocmVxLT5zdGF0ZSAhPSBUV19DTElfUkVRX1NUQVRFX1BFTkRJTkcpCi0JCXR3X2NsX3Jl c2V0X2N0bHIoY3Rsci0+Y3Rscl9oYW5kbGUpOwotCWVsc2UgeworCWlmIChyZXEtPnN0YXRlID09 IFRXX0NMSV9SRVFfU1RBVEVfUEVORElORykgewogCQl0d19jbGlfZGJnX3ByaW50ZigzLCBjdGxy LT5jdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksCiAJCQkiUmVtb3ZpbmcgcmVxdWVzdCBm cm9tIHBlbmRpbmcgcXVldWUiKTsKIAkJLyoKQEAgLTEwNTMsNiArMTA0MCw3IEBACiAgKgkJCWRy YWlucyBhbnkgaW5jb21wbGV0ZSByZXF1ZXN0cy4KICAqCiAgKiBJbnB1dDoJCWN0bHIJLS0gcHRy IHRvIHBlciBjdGxyIHN0cnVjdHVyZQorICogCQkJcmVxX2hhbmRsZQktLSBwdHIgdG8gcmVxdWVz dCBoYW5kbGUKICAqIE91dHB1dDoJCU5vbmUKICAqIFJldHVybiB2YWx1ZToJMAktLSBzdWNjZXNz CiAgKgkJCW5vbi16ZXJvLS0gZmFpbHVyZQpAQCAtMTA2MywxNSArMTA1MSwxNSBAQAogCXN0cnVj dCB0d19jbGlfY3Rscl9jb250ZXh0CSpjdGxyID0KIAkJKHN0cnVjdCB0d19jbGlfY3Rscl9jb250 ZXh0ICopKGN0bHJfaGFuZGxlLT5jbF9jdGxyX2N0eHQpOwogCXN0cnVjdCB0d2Ffc29mdGMJCSpz YyA9IGN0bHJfaGFuZGxlLT5vc2xfY3Rscl9jdHh0OworCXN0cnVjdCB0d19jbGlfcmVxX2NvbnRl eHQJKnJlcTsKIAlUV19JTlQzMgkJCXJlc2V0X2F0dGVtcHQgPSAxOwotCVRXX0lOVDMyCQkJZXJy b3I7CisJVFdfSU5UMzIJCQllcnJvciA9IDA7CiAKIAl0d19jbGlfZGJnX3ByaW50ZigyLCBjdGxy X2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7CiAKIAljdGxyLT5yZXNldF9p bl9wcm9ncmVzcyA9IFRXX0NMX1RSVUU7Ci0JeHB0X2ZyZWV6ZV9zaW1xKHNjLT5zaW0sIDEpOwor CXR3YV90ZWFyZG93bl9pbnRyKHNjKTsKIAotCXR3X2NsaV9kaXNhYmxlX2ludGVycnVwdHMoY3Rs cik7CiAKIAkvKgogCSAqIEVycm9yIGJhY2sgYWxsIHJlcXVlc3RzIGluIHRoZSBjb21wbGV0ZSwg YnVzeSwgYW5kIHBlbmRpbmcgcXVldWVzLgpAQCAtMTA4MCw4ICsxMDY4LDYgQEAKIAkgKiB3aWxs IGNvbnRpbnVlIGl0cyBjb3Vyc2UgYW5kIGdldCBzdWJtaXR0ZWQgdG8gdGhlIGNvbnRyb2xsZXIg YWZ0ZXIKIAkgKiB0aGUgcmVzZXQgaXMgZG9uZSAoYW5kIGlvX2xvY2sgaXMgcmVsZWFzZWQpLgog CSAqLwotCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHJfaGFuZGxlLCB0d19vc2xfY3VyX2Z1bmMo KSwKLQkJIkRyYWluaW5nIGFsbCBxdWV1ZXMgZm9sbG93aW5nIHJlc2V0Iik7CiAJdHdfY2xpX2Ry YWluX2NvbXBsZXRlX3F1ZXVlKGN0bHIpOwogCXR3X2NsaV9kcmFpbl9idXN5X3F1ZXVlKGN0bHIp OwogCXR3X2NsaV9kcmFpbl9wZW5kaW5nX3F1ZXVlKGN0bHIpOwpAQCAtMTA4OSw1MyArMTA3NSw4 OCBAQAogCWN0bHItPmdldF9tb3JlX2FlbnMgICAgID0gVFdfQ0xfRkFMU0U7CiAKIAkvKiBTb2Z0 IHJlc2V0IHRoZSBjb250cm9sbGVyLiAqLwotdHJ5X3Jlc2V0OgotCWlmICgoZXJyb3IgPSB0d19j bGlfc29mdF9yZXNldChjdGxyKSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxl LCBUV19DTF9UUlVFLAotCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5U LAotCQkJMHgxMTA1LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCSJDb250 cm9sbGVyIHJlc2V0IGZhaWxlZCIsCi0JCQkiZXJyb3IgPSAlZDsgYXR0ZW1wdCAlZCIsIGVycm9y LCByZXNldF9hdHRlbXB0KyspOwotCQlpZiAocmVzZXRfYXR0ZW1wdCA8PSBUV19DTElfTUFYX1JF U0VUX0FUVEVNUFRTKQotCQkJZ290byB0cnlfcmVzZXQ7Ci0JCWVsc2UKLQkJCWdvdG8gb3V0Owot CX0KKwl3aGlsZSAocmVzZXRfYXR0ZW1wdCA8PSBUV19DTElfTUFYX1JFU0VUX0FUVEVNUFRTKSB7 CisJCWlmICgoZXJyb3IgPSB0d19jbGlfc29mdF9yZXNldChjdGxyKSkpIHsKKwkJCXR3X2NsX2Ny ZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCisJCQkJVFdfQ0xfTUVTU0FHRV9T T1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAorCQkJCTB4MTEwNSwgMHgxLCBUV19DTF9TRVZFUklU WV9FUlJPUl9TVFJJTkcsCisJCQkJIkNvbnRyb2xsZXIgcmVzZXQgZmFpbGVkIiwKKwkJCQkiZXJy b3IgPSAlZDsgYXR0ZW1wdCAlZCIsIGVycm9yLCByZXNldF9hdHRlbXB0KyspOworCQkJcmVzZXRf YXR0ZW1wdCsrOworCQkJY29udGludWU7CisJCX0KIAotCS8qIFJlLWVzdGFibGlzaCBsb2dpY2Fs IGNvbm5lY3Rpb24gd2l0aCB0aGUgY29udHJvbGxlci4gKi8KLQlpZiAoKGVycm9yID0gdHdfY2xp X2luaXRfY29ubmVjdGlvbihjdGxyLAotCQkJKFRXX1VJTlQxNikoY3Rsci0+bWF4X3NpbXVsdF9y ZXFzKSwKLQkJCTAsIDAsIDAsIDAsIDAsIFRXX0NMX05VTEwsIFRXX0NMX05VTEwsIFRXX0NMX05V TEwsCi0JCQlUV19DTF9OVUxMLCBUV19DTF9OVUxMKSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50 KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQkvKiBSZS1lc3RhYmxpc2ggbG9naWNhbCBjb25u ZWN0aW9uIHdpdGggdGhlIGNvbnRyb2xsZXIuICovCisJCWlmICgoZXJyb3IgPSB0d19jbGlfaW5p dF9jb25uZWN0aW9uKGN0bHIsCisJCQkJKFRXX1VJTlQxNikoY3Rsci0+bWF4X3NpbXVsdF9yZXFz KSwKKwkJCQkwLCAwLCAwLCAwLCAwLCBUV19DTF9OVUxMLCBUV19DTF9OVUxMLCBUV19DTF9OVUxM LAorCQkJCVRXX0NMX05VTEwsIFRXX0NMX05VTEwpKSkgeworCQkJdHdfY2xfY3JlYXRlX2V2ZW50 KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKKwkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01N T05fTEFZRVJfRVZFTlQsCisJCQkJMHgxMTA2LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NU UklORywKKwkJCQkiQ2FuJ3QgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFmdGVyIHJlc2V0IiwKKwkJ CQkiZXJyb3IgPSAlZCIsIGVycm9yKTsKKwkJCXJlc2V0X2F0dGVtcHQrKzsKKwkJCWNvbnRpbnVl OworCQl9CisKKyNpZmRlZiAgICBUV19PU0xfREVCVUcKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0 bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9M QVlFUl9FVkVOVCwKLQkJCTB4MTEwNiwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcs Ci0JCQkiQ2FuJ3QgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFmdGVyIHJlc2V0IiwKLQkJCSJlcnJv ciA9ICVkIiwgZXJyb3IpOwotCQlnb3RvIG91dDsKLQl9CisJCQkweDExMDcsIDB4MywgVFdfQ0xf U0VWRVJJVFlfSU5GT19TVFJJTkcsCisJCQkiQ29udHJvbGxlciByZXNldCBkb25lISIsICIgIik7 CisjZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCisJCWJyZWFrOworCX0gLyogRW5kIG9mIHdoaWxl ICovCiAKLQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCi0JCVRX X0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKLQkJMHgxMTA3LCAweDMsIFRX X0NMX1NFVkVSSVRZX0lORk9fU1RSSU5HLAotCQkiQ29udHJvbGxlciByZXNldCBkb25lISIsCi0J CSIgIik7CisJLyogTW92ZSBjb21tYW5kcyBmcm9tIHRoZSByZXNldCBxdWV1ZSB0byB0aGUgcGVu ZGluZyBxdWV1ZS4gKi8KKwl3aGlsZSAoKHJlcSA9IHR3X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChj dGxyLCBUV19DTElfUkVTRVRfUSkpICE9IFRXX0NMX05VTEwpIHsKKwkJdHdfb3NsX3RpbWVvdXQo cmVxLT5yZXFfaGFuZGxlKTsKKwkJdHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJ X1BFTkRJTkdfUSk7CisJfQogCi1vdXQ6CisJdHdhX3NldHVwX2ludHIoc2MpOworCXR3X2NsaV9l bmFibGVfaW50ZXJydXB0cyhjdGxyKTsKKwlpZiAoKFRXX0NMX1FfRklSU1RfSVRFTSgmKGN0bHIt PnJlcV9xX2hlYWRbVFdfQ0xJX1BFTkRJTkdfUV0pKSkgIT0gVFdfQ0xfTlVMTCkKKwkJVFdfQ0xJ X1dSSVRFX0NPTlRST0xfUkVHSVNURVIoY3Rscl9oYW5kbGUsCisJCQlUV0FfQ09OVFJPTF9VTk1B U0tfQ09NTUFORF9JTlRFUlJVUFQpOwogCWN0bHItPnJlc2V0X2luX3Byb2dyZXNzID0gVFdfQ0xf RkFMU0U7Ci0JeHB0X3JlbGVhc2Vfc2ltcShzYy0+c2ltLCAxKTsKKwljdGxyLT5yZXNldF9uZWVk ZWQgPSBUV19DTF9GQUxTRTsKIAotCS8qCi0JICogRW5hYmxlIGludGVycnVwdHMsIGFuZCBhbHNv IGNsZWFyIGF0dGVudGlvbiBhbmQgcmVzcG9uc2UgaW50ZXJydXB0cy4KLQkgKi8KLQl0d19jbGlf ZW5hYmxlX2ludGVycnVwdHMoY3Rscik7Ci0JCiAJLyogUmVxdWVzdCBmb3IgYSBidXMgcmUtc2Nh bi4gKi8KLQlpZiAoIWVycm9yKQotCQl0d19vc2xfc2Nhbl9idXMoY3Rscl9oYW5kbGUpOworCXR3 X29zbF9zY2FuX2J1cyhjdGxyX2hhbmRsZSk7CisKIAlyZXR1cm4oZXJyb3IpOwogfQogCitUV19W T0lECit0d19jbF9zZXRfcmVzZXRfbmVlZGVkKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rs cl9oYW5kbGUpCit7CisJc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQJKmN0bHIgPQorCQkoc3Ry dWN0IHR3X2NsaV9jdGxyX2NvbnRleHQgKikoY3Rscl9oYW5kbGUtPmNsX2N0bHJfY3R4dCk7CisK KwljdGxyLT5yZXNldF9uZWVkZWQgPSBUV19DTF9UUlVFOworfQorCitUV19JTlQzMgordHdfY2xf aXNfcmVzZXRfbmVlZGVkKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUpCit7 CisJc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQJKmN0bHIgPQorCQkoc3RydWN0IHR3X2NsaV9j dGxyX2NvbnRleHQgKikoY3Rscl9oYW5kbGUtPmNsX2N0bHJfY3R4dCk7CisKKwlyZXR1cm4oY3Rs ci0+cmVzZXRfbmVlZGVkKTsKK30KKworVFdfSU5UMzIKK3R3X2NsX2lzX2FjdGl2ZShzdHJ1Y3Qg dHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlKQoreworCXN0cnVjdCB0d19jbGlfY3Rscl9j b250ZXh0CSpjdGxyID0KKwkJKHN0cnVjdCB0d19jbGlfY3Rscl9jb250ZXh0ICopCisJCShjdGxy X2hhbmRsZS0+Y2xfY3Rscl9jdHh0KTsKKworCQlyZXR1cm4oY3Rsci0+YWN0aXZlKTsKK30KKwog CiAKIC8qCkBAIC0xMTUxLDE0ICsxMTcyLDEzIEBACiB0d19jbGlfc29mdF9yZXNldChzdHJ1Y3Qg dHdfY2xpX2N0bHJfY29udGV4dCAqY3RscikKIHsKIAlzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUJ KmN0bHJfaGFuZGxlID0gY3Rsci0+Y3Rscl9oYW5kbGU7Ci0JVFdfVUlOVDMyCQkJc3RhdHVzX3Jl ZzsKIAlpbnQJCQkJZm91bmQ7CiAJaW50CQkJCWxvb3BfY291bnQ7CiAJVFdfVUlOVDMyCQkJZXJy b3I7CiAKIAl0d19jbGlfZGJnX3ByaW50ZigxLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5j KCksICJlbnRlcmVkIik7CiAKLQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NM X1RSVUUsCisJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkweDExMDgsIDB4Mywg VFdfQ0xfU0VWRVJJVFlfSU5GT19TVFJJTkcsCiAJCSJSZXNldHRpbmcgY29udHJvbGxlci4uLiIs CkBAIC0xMTkzLDcgKzEyMTMsNyBAQAogCQl9IHdoaWxlICghZm91bmQgJiYgKGxvb3BfY291bnQg PCA2MDAwMDAwKSk7IC8qIExvb3AgZm9yIG5vIG1vcmUgdGhhbiA2MCBzZWNvbmRzICovCiAKIAkJ aWYgKCFmb3VuZCkgewotCQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9U UlVFLAorCQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ CQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01NT05fTEFZRVJfRVZFTlQsCiAJCQkJMHgxMTA5LCAw eDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKIAkJCQkiTWlzc2VkIGZpcm13YXJlIGhh bmRzaGFrZSBhZnRlciBzb2Z0LXJlc2V0IiwKQEAgLTEyMTAsNyArMTIzMCw3IEBACiAJCQlUV0Ff U1RBVFVTX01JQ1JPQ09OVFJPTExFUl9SRUFEWSB8CiAJCQlUV0FfU1RBVFVTX0FUVEVOVElPTl9J TlRFUlJVUFQsCiAJCQlUV19DTElfUkVTRVRfVElNRU9VVF9QRVJJT0QpKSkgewotCQl0d19jbF9j cmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCisJCXR3X2NsX2NyZWF0ZV9ldmVu dChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01N T05fTEFZRVJfRVZFTlQsCiAJCQkweDExMDksIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RS SU5HLAogCQkJIk1pY3JvLWN0bHIgbm90IHJlYWR5L05vIGF0dG4gaW50ciBhZnRlciByZXNldCIs CkBAIC0xMjQ0LDI2ICsxMjY0LDE0IEBACiAJfQogCQogCWlmICgoZXJyb3IgPSB0d19jbGlfZmlu ZF9hZW4oY3RsciwgVFdBX0FFTl9TT0ZUX1JFU0VUKSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50 KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5k bGUsIFRXX0NMX0ZBTFNFLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VW RU5ULAogCQkJMHgxMTBDLCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKIAkJCSJS ZXNldCBub3QgcmVwb3J0ZWQgYnkgY29udHJvbGxlciIsCiAJCQkiZXJyb3IgPSAlZCIsIGVycm9y KTsKIAkJcmV0dXJuKGVycm9yKTsKIAl9Ci0JCi0Jc3RhdHVzX3JlZyA9IFRXX0NMSV9SRUFEX1NU QVRVU19SRUdJU1RFUihjdGxyX2hhbmRsZSk7Ci0JCi0JaWYgKChlcnJvciA9IFRXX0NMSV9TVEFU VVNfRVJST1JTKHN0YXR1c19yZWcpKSB8fAotCQkJKGVycm9yID0gdHdfY2xpX2NoZWNrX2N0bHJf c3RhdGUoY3Rsciwgc3RhdHVzX3JlZykpKSB7Ci0JCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hh bmRsZSwgVFdfQ0xfVFJVRSwKLQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9F VkVOVCwKLQkJCTB4MTEwRCwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCi0JCQki Q29udHJvbGxlciBlcnJvcnMgZGV0ZWN0ZWQgYWZ0ZXIgcmVzZXQiLAotCQkJImVycm9yID0gJWQi LCBlcnJvcik7Ci0JCXJldHVybihlcnJvcik7Ci0JfQotCQorCiAJcmV0dXJuKFRXX09TTF9FU1VD Q0VTUyk7CiB9CiAKZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19jbF9taXNjLmMgRnJl ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9taXNjLmMKLS0tIEZyZWVCU0RfSEVBRF90 d2FfY3ZzL3R3X2NsX21pc2MuYwkyMDEwLTA4LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAor KysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9taXNjLmMJMjAxMC0wOC0yNCAx ODowMjoxMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTgzLDcgKzgzLDggQEAKIAl0d19jbGlfZGJnX3By aW50ZigzLCBjdGxyLT5jdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7 CiAKIAkvKiBXYWxrIHRoZSBidXN5IHF1ZXVlLiAqLwotCXdoaWxlICgocmVxID0gdHdfY2xpX3Jl cV9xX3JlbW92ZV9oZWFkKGN0bHIsIFRXX0NMSV9DT01QTEVURV9RKSkpIHsKKwl3aGlsZSAoKHJl cSA9IHR3X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChjdGxyLCBUV19DTElfQ09NUExFVEVfUSkpICE9 CisJCVRXX0NMX05VTEwpIHsKIAkJaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdTX0lO VEVSTkFMKSB7CiAJCQkvKgogCQkJICogSXQncyBhbiBpbnRlcm5hbCByZXF1ZXN0LiAgU2V0IHRo ZSBhcHByb3ByaWF0ZQpAQCAtOTcsMjAgKzk4LDIxIEBACiAJCQlyZXEtPmVycm9yX2NvZGUgPSBU V19DTF9FUlJfUkVRX0JVU19SRVNFVDsKIAkJCWlmIChyZXEtPnR3X2NsaV9jYWxsYmFjaykKIAkJ CQlyZXEtPnR3X2NsaV9jYWxsYmFjayhyZXEpOwotCQl9IGVsc2UgewotCQkJaWYgKChyZXFfcGt0 ID0gcmVxLT5vcmlnX3JlcSkpIHsKLQkJCQkvKiBJdCdzIGEgU0NTSSByZXF1ZXN0LiAgQ29tcGxl dGUgaXQuICovCi0JCQkJdHdfY2xpX2RiZ19wcmludGYoMiwgY3Rsci0+Y3Rscl9oYW5kbGUsCi0J CQkJCXR3X29zbF9jdXJfZnVuYygpLAotCQkJCQkiQ29tcGxldGluZyBjb21wbGV0ZSByZXF1ZXN0 ICVwICIKLQkJCQkJIm9uIHJlc2V0IiwKLQkJCQkJcmVxKTsKKwkJfSBlbHNlIGlmIChyZXEtPmZs YWdzICYgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSkgeworCQkJLyogSXQncyBhIHBhc3N0aHJ1 IHJlcXVlc3QuICBDb21wbGV0ZSBpdC4gKi8KKwkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19y ZXEpICE9IFRXX0NMX05VTEwpIHsKIAkJCQlyZXFfcGt0LT5zdGF0dXMgPSBUV19DTF9FUlJfUkVR X0JVU19SRVNFVDsKLQkJCQlyZXFfcGt0LT50d19vc2xfY2FsbGJhY2socmVxLT5yZXFfaGFuZGxl KTsKKworCQkJCWlmIChyZXFfcGt0LT50d19vc2xfY2FsbGJhY2spCisJCQkJCXJlcV9wa3QtPnR3 X29zbF9jYWxsYmFjayhyZXEtPnJlcV9oYW5kbGUpOwogCQkJfQogCQkJdHdfY2xpX3JlcV9xX2lu c2VydF90YWlsKHJlcSwgVFdfQ0xJX0ZSRUVfUSk7CisJCX0gZWxzZSB7CisJCQkvKiBJdCdzIGFu IGV4dGVybmFsIChTQ1NJKSByZXF1ZXN0LiAgQWRkIGl0IHRvIHRoZSByZXNldCBxdWV1ZS4gKi8K KwkJCXR3X29zbF91bnRpbWVvdXQocmVxLT5yZXFfaGFuZGxlKTsKKwkJCXR3X2NsaV9yZXFfcV9p bnNlcnRfdGFpbChyZXEsIFRXX0NMSV9SRVNFVF9RKTsKIAkJfQotCX0KKwl9IC8qIEVuZCBvZiB3 aGlsZSBsb29wICovCiB9CiAKIApAQCAtMTM1LDcgKzEzNyw4IEBACiAJdHdfY2xpX2RiZ19wcmlu dGYoMywgY3Rsci0+Y3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLCAiZW50ZXJlZCIpOwog CiAJLyogV2FsayB0aGUgYnVzeSBxdWV1ZS4gKi8KLQl3aGlsZSAoKHJlcSA9IHR3X2NsaV9yZXFf cV9yZW1vdmVfaGVhZChjdGxyLCBUV19DTElfQlVTWV9RKSkpIHsKKwl3aGlsZSAoKHJlcSA9IHR3 X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChjdGxyLCBUV19DTElfQlVTWV9RKSkgIT0KKwkJVFdfQ0xf TlVMTCkgewogCQlpZiAocmVxLT5mbGFncyAmIFRXX0NMSV9SRVFfRkxBR1NfSU5URVJOQUwpIHsK IAkJCS8qCiAJCQkgKiBJdCdzIGFuIGludGVybmFsIHJlcXVlc3QuICBTZXQgdGhlIGFwcHJvcHJp YXRlCkBAIC0xNDksMTkgKzE1MiwyMSBAQAogCQkJcmVxLT5lcnJvcl9jb2RlID0gVFdfQ0xfRVJS X1JFUV9CVVNfUkVTRVQ7CiAJCQlpZiAocmVxLT50d19jbGlfY2FsbGJhY2spCiAJCQkJcmVxLT50 d19jbGlfY2FsbGJhY2socmVxKTsKLQkJfSBlbHNlIHsKLQkJCWlmICgocmVxX3BrdCA9IHJlcS0+ b3JpZ19yZXEpKSB7Ci0JCQkJLyogSXQncyBhIFNDU0kgcmVxdWVzdC4gIENvbXBsZXRlIGl0LiAq LwotCQkJCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHItPmN0bHJfaGFuZGxlLAotCQkJCQl0d19v c2xfY3VyX2Z1bmMoKSwKLQkJCQkJIkNvbXBsZXRpbmcgYnVzeSByZXF1ZXN0ICVwIG9uIHJlc2V0 IiwKLQkJCQkJcmVxKTsKKwkJfSBlbHNlIGlmIChyZXEtPmZsYWdzICYgVFdfQ0xJX1JFUV9GTEFH U19QQVNTVEhSVSkgeworCQkJLyogSXQncyBhIHBhc3N0aHJ1IHJlcXVlc3QuICBDb21wbGV0ZSBp dC4gKi8KKwkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19yZXEpICE9IFRXX0NMX05VTEwpIHsK IAkJCQlyZXFfcGt0LT5zdGF0dXMgPSBUV19DTF9FUlJfUkVRX0JVU19SRVNFVDsKLQkJCQlyZXFf cGt0LT50d19vc2xfY2FsbGJhY2socmVxLT5yZXFfaGFuZGxlKTsKKworCQkJCWlmIChyZXFfcGt0 LT50d19vc2xfY2FsbGJhY2spCisJCQkJCXJlcV9wa3QtPnR3X29zbF9jYWxsYmFjayhyZXEtPnJl cV9oYW5kbGUpOwogCQkJfQogCQkJdHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJ X0ZSRUVfUSk7CisJCX0gZWxzZSB7CisJCQkvKiBJdCdzIGFuIGV4dGVybmFsIChTQ1NJKSByZXF1 ZXN0LiAgQWRkIGl0IHRvIHRoZSByZXNldCBxdWV1ZS4gKi8KKwkJCXR3X29zbF91bnRpbWVvdXQo cmVxLT5yZXFfaGFuZGxlKTsKKwkJCXR3X2NsaV9yZXFfcV9pbnNlcnRfdGFpbChyZXEsIFRXX0NM SV9SRVNFVF9RKTsKIAkJfQotCX0KKwl9IC8qIEVuZCBvZiB3aGlsZSBsb29wICovCiB9CiAKIApA QCAtMTg4LDcgKzE5Myw4IEBACiAJLyoKIAkgKiBQdWxsIHJlcXVlc3RzIG9mZiB0aGUgcGVuZGlu ZyBxdWV1ZSwgYW5kIGNvbXBsZXRlIHRoZW0uCiAJICovCi0Jd2hpbGUgKChyZXEgPSB0d19jbGlf cmVxX3FfcmVtb3ZlX2hlYWQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSkpKSB7CisJd2hpbGUgKChy ZXEgPSB0d19jbGlfcmVxX3FfcmVtb3ZlX2hlYWQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSkpICE9 CisJCVRXX0NMX05VTEwpIHsKIAkJaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdTX0lO VEVSTkFMKSB7CiAJCQkvKgogCQkJICogSXQncyBhbiBpbnRlcm5hbCByZXF1ZXN0LiAgU2V0IHRo ZSBhcHByb3ByaWF0ZQpAQCAtMjAyLDE5ICsyMDgsMjEgQEAKIAkJCXJlcS0+ZXJyb3JfY29kZSA9 IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwogCQkJaWYgKHJlcS0+dHdfY2xpX2NhbGxiYWNrKQog CQkJCXJlcS0+dHdfY2xpX2NhbGxiYWNrKHJlcSk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoKHJlcV9w a3QgPSByZXEtPm9yaWdfcmVxKSkgewotCQkJCS8qIEl0J3MgYW4gZXh0ZXJuYWwgcmVxdWVzdC4g IENvbXBsZXRlIGl0LiAqLwotCQkJCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHItPmN0bHJfaGFu ZGxlLAotCQkJCQl0d19vc2xfY3VyX2Z1bmMoKSwKLQkJCQkJIkNvbXBsZXRpbmcgcGVuZGluZyBy ZXF1ZXN0ICVwICIKLQkJCQkJIm9uIHJlc2V0IiwgcmVxKTsKKwkJfSBlbHNlIGlmIChyZXEtPmZs YWdzICYgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSkgeworCQkJLyogSXQncyBhIHBhc3N0aHJ1 IHJlcXVlc3QuICBDb21wbGV0ZSBpdC4gKi8KKwkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19y ZXEpICE9IFRXX0NMX05VTEwpIHsKIAkJCQlyZXFfcGt0LT5zdGF0dXMgPSBUV19DTF9FUlJfUkVR X0JVU19SRVNFVDsKLQkJCQlyZXFfcGt0LT50d19vc2xfY2FsbGJhY2socmVxLT5yZXFfaGFuZGxl KTsKKworCQkJCWlmIChyZXFfcGt0LT50d19vc2xfY2FsbGJhY2spCisJCQkJCXJlcV9wa3QtPnR3 X29zbF9jYWxsYmFjayhyZXEtPnJlcV9oYW5kbGUpOwogCQkJfQogCQkJdHdfY2xpX3JlcV9xX2lu c2VydF90YWlsKHJlcSwgVFdfQ0xJX0ZSRUVfUSk7CisJCX0gZWxzZSB7CisJCQkvKiBJdCdzIGFu IGV4dGVybmFsIChTQ1NJKSByZXF1ZXN0LiAgQWRkIGl0IHRvIHRoZSByZXNldCBxdWV1ZS4gKi8K KwkJCXR3X29zbF91bnRpbWVvdXQocmVxLT5yZXFfaGFuZGxlKTsKKwkJCXR3X2NsaV9yZXFfcV9p bnNlcnRfdGFpbChyZXEsIFRXX0NMSV9SRVNFVF9RKTsKIAkJfQotCX0KKwl9IC8qIEVuZCBvZiB3 aGlsZSBsb29wICovCiB9CiAKIApAQCAtMjM5LDkgKzI0Nyw2IEBACiAJZm9yICg7OykgewogCQlz dGF0dXNfcmVnID0gVFdfQ0xJX1JFQURfU1RBVFVTX1JFR0lTVEVSKGN0bHItPmN0bHJfaGFuZGxl KTsKIAotCQlpZiAodHdfY2xpX2NoZWNrX2N0bHJfc3RhdGUoY3Rsciwgc3RhdHVzX3JlZykpCi0J CQlyZXR1cm4oVFdfT1NMX0VHRU5GQUlMVVJFKTsKLQogCQlpZiAoc3RhdHVzX3JlZyAmIFRXQV9T VEFUVVNfUkVTUE9OU0VfUVVFVUVfRU1QVFkpCiAJCQlyZXR1cm4oVFdfT1NMX0VTVUNDRVNTKTsg Lyogbm8gbW9yZSByZXNwb25zZSBxdWV1ZSBlbnRyaWVzICovCiAKQEAgLTI3Myw5ICsyNzgsNiBA QAogCWZvciAoOzspIHsKIAkJc3RhdHVzX3JlZyA9IFRXX0NMSV9SRUFEX1NUQVRVU19SRUdJU1RF UihjdGxyLT5jdGxyX2hhbmRsZSk7CiAKLQkJaWYgKHR3X2NsaV9jaGVja19jdGxyX3N0YXRlKGN0 bHIsIHN0YXR1c19yZWcpKQotCQkJcmV0dXJuKFRXX09TTF9FR0VORkFJTFVSRSk7Ci0KIAkJaWYg KHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1JFU1BPTlNFX1FVRVVFX0VNUFRZKQogCQkJcmV0dXJu KFRXX09TTF9FTk9UVFkpOyAvKiBubyBtb3JlIHJlc3BvbnNlIHF1ZXVlIGVudHJpZXMgKi8KIApA QCAtMzU2LDkgKzM1OCwxMSBAQAogCiAJCWlmICgoZXJyb3IgPSByZXEtPmNtZF9wa3QtPmNvbW1h bmQuY21kX3BrdF85ay5zdGF0dXMpKSB7CiAJCQljbWRfaGRyID0gJnJlcS0+Y21kX3BrdC0+Y21k X2hkcjsKKyNpZiAgICAgICAwCiAJCQl0d19jbGlfY3JlYXRlX2N0bHJfZXZlbnQoY3RsciwKIAkJ CQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT05UUk9MTEVSX0VSUk9SLAogCQkJCWNtZF9oZHIpOwor I2VuZGlmIC8vIDAKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTcxNCw3ICs3MTgsNyBAQAogCiAJCXR3 X29zbF9tZW16ZXJvKGRlc2MsIDIwMCk7CiAJCWlmICghKGN0bHItPnJlc2V0X3BoYXNlMV9pbl9w cm9ncmVzcykpIHsKLQkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfVFJV RSwKKwkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJ VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkJCTB4MTMwMSwgMHgx LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkJIk1pc3NpbmcgZXhwZWN0ZWQgc3Rh dHVzIGJpdChzKSIsCkBAIC03MzgsNyArNzQyLDcgQEAKIAkJICAgICAoY3Rsci0+ZGV2aWNlX2lk ICE9IFRXX0NMX0RFVklDRV9JRF85S19TQSkpIHx8CiAJCSAgICAoIShjdGxyLT5yZXNldF9pbl9w cm9ncmVzcykpIHx8CiAJCSAgICAoKHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1FVRVVFX0VSUk9S X0lOVEVSUlVQVCkgPT0gMCkpCi0JCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdf Q0xfVFJVRSwKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwK IAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCTB4MTMwMiwg MHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkiVW5leHBlY3RlZCBzdGF0dXMg Yml0KHMpIiwKQEAgLTc0OCw3ICs3NTIsNyBAQAogCQkJCVRXQV9TVEFUVVNfVU5FWFBFQ1RFRF9C SVRTLCBkZXNjKSk7CiAKIAkJaWYgKHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1BDSV9QQVJJVFlf RVJST1JfSU5URVJSVVBUKSB7Ci0JCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRX X0NMX1RSVUUsCisJCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNF LAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCQkweDEz MDMsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAogCQkJCSJQQ0kgcGFyaXR5IGVy cm9yOiBjbGVhcmluZy4uLiAiCkBAIC03NjgsNyArNzcyLDcgQEAKIAkJfQogCiAJCWlmIChzdGF0 dXNfcmVnICYgVFdBX1NUQVRVU19QQ0lfQUJPUlRfSU5URVJSVVBUKSB7Ci0JCQl0d19jbF9jcmVh dGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCisJCQl0d19jbF9jcmVhdGVfZXZlbnQo Y3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1P Tl9MQVlFUl9FVkVOVCwKIAkJCQkweDEzMDQsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RS SU5HLAogCQkJCSJQQ0kgYWJvcnQ6IGNsZWFyaW5nLi4uICIsCkBAIC03OTEsNyArNzk1LDcgQEAK IAkJCWlmICgoKGN0bHItPmRldmljZV9pZCAhPSBUV19DTF9ERVZJQ0VfSURfOUtfRSkgJiYKIAkJ CSAgICAgKGN0bHItPmRldmljZV9pZCAhPSBUV19DTF9ERVZJQ0VfSURfOUtfU0EpKSB8fAogCQkJ ICAgICghKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSkpCi0JCQkJdHdfY2xfY3JlYXRlX2V2ZW50 KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hh bmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJCQkgICBUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01NT05f TEFZRVJfRVZFTlQsCiAJCQkJCQkgICAweDEzMDUsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1Jf U1RSSU5HLAogCQkJCQkJICAgIkNvbnRyb2xsZXIgcXVldWUgZXJyb3I6IGNsZWFyaW5nLi4uICIs CkBAIC04MDEsMTcgKzgwNSw2IEBACiAJCQlUV19DTElfV1JJVEVfQ09OVFJPTF9SRUdJU1RFUihj dGxyLT5jdGxyX2hhbmRsZSwKIAkJCQlUV0FfQ09OVFJPTF9DTEVBUl9RVUVVRV9FUlJPUik7CiAJ CX0KLQotCQlpZiAoc3RhdHVzX3JlZyAmIFRXQV9TVEFUVVNfTUlDUk9DT05UUk9MTEVSX0VSUk9S KSB7Ci0JCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCi0JCQkJ VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAotCQkJCTB4MTMwNywgMHgx LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCi0JCQkJIk1pY3JvLWNvbnRyb2xsZXIgZXJy b3IhICIsCi0JCQkJInN0YXR1cyByZWcgPSAweCV4ICVzIiwKLQkJCQlzdGF0dXNfcmVnLAotCQkJ CXR3X2NsaV9kZXNjcmliZV9iaXRzKHN0YXR1c19yZWcsIGRlc2MpKTsKLQkJCWVycm9yID0gVFdf T1NMX0VHRU5GQUlMVVJFOwotCQl9CiAJfQogCXJldHVybihlcnJvcik7CiB9CQpAQCAtODUwLDgg Kzg0Myw2IEBACiAJCXR3X29zbF9zdHJjcHkoJnN0clt0d19vc2xfc3RybGVuKHN0cildLCAiSE9T VF9JTlRSLCIpOwogCWlmIChyZWcgJiBUV0FfU1RBVFVTX1BDSV9BQk9SVF9JTlRFUlJVUFQpCiAJ CXR3X29zbF9zdHJjcHkoJnN0clt0d19vc2xfc3RybGVuKHN0cildLCAiUENJX0FCUlQsIik7Ci0J aWYgKHJlZyAmIFRXQV9TVEFUVVNfTUlDUk9DT05UUk9MTEVSX0VSUk9SKQotCQl0d19vc2xfc3Ry Y3B5KCZzdHJbdHdfb3NsX3N0cmxlbihzdHIpXSwgIk1DX0VSUiwiKTsKIAlpZiAocmVnICYgVFdB X1NUQVRVU19RVUVVRV9FUlJPUl9JTlRFUlJVUFQpCiAJCXR3X29zbF9zdHJjcHkoJnN0clt0d19v c2xfc3RybGVuKHN0cildLCAiUV9FUlIsIik7CiAJaWYgKHJlZyAmIFRXQV9TVEFUVVNfUENJX1BB UklUWV9FUlJPUl9JTlRFUlJVUFQpCmRpZmYgLXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2xf c2hhcmUuaCBGcmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX3NoYXJlLmgKLS0tIEZy ZWVCU0RfSEVBRF90d2FfY3ZzL3R3X2NsX3NoYXJlLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAw MDAwMDAgLTA3MDAKKysrIEZyZWVCU0RfSEVBRF90d2FfM184MF8wNl8wMDMvdHdfY2xfc2hhcmUu aAkyMDEwLTA4LTI0IDE4OjAyOjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtMzQ5LDEwICszNDksMTQg QEAKICNlbmRpZgogCiAKLSNpZm5kZWYgdHdfb3NsX2N0bHJfYnVzeQotLyogQ2FsbGVkIHdoZW4g Q0wgaXMgdG9vIGJ1c3kgdG8gYWNjZXB0IG5ldyByZXF1ZXN0cy4gKi8KLWV4dGVybiBUV19WT0lE CXR3X29zbF9jdGxyX2J1c3koc3RydWN0IHR3X2NsX2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSwK LQlzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVxX2hhbmRsZSk7CisjaWZuZGVmIHR3X29zbF90 aW1lb3V0CisvKiBTdGFydCBPUyB0aW1lb3V0KCkgcm91dGluZSBhZnRlciBjb250cm9sbGVyIHJl c2V0IHNlcXVlbmNlICovCitleHRlcm4gVFdfVk9JRAl0d19vc2xfdGltZW91dChzdHJ1Y3QgdHdf Y2xfcmVxX2hhbmRsZSAqcmVxX2hhbmRsZSk7CisjZW5kaWYKKworI2lmbmRlZiB0d19vc2xfdW50 aW1lb3V0CisvKiBTdG9wIE9TIHRpbWVvdXQoKSByb3V0aW5lIGR1cmluZyBjb250cm9sbGVyIHJl c2V0IHNlcXVlbmNlICovCitleHRlcm4gVFdfVk9JRAl0d19vc2xfdW50aW1lb3V0KHN0cnVjdCB0 d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKTsKICNlbmRpZgogCiAKQEAgLTU1Miw2ICs1NTYs MTAgQEAKIAkpOwogCiAKK2V4dGVybiBUV19WT0lEICB0d19jbF9zZXRfcmVzZXRfbmVlZGVkKHN0 cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUpOworZXh0ZXJuIFRXX0lOVDMyIHR3 X2NsX2lzX3Jlc2V0X25lZWRlZChzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxl KTsKK2V4dGVybiBUV19JTlQzMiB0d19jbF9pc19hY3RpdmUoc3RydWN0IHR3X2NsX2N0bHJfaGFu ZGxlICpjdGxyX2hhbmRsZSk7CisKIC8qIENMJ3MgaW50ZXJydXB0IGhhbmRsZXIuICovCiBleHRl cm4gVFdfSU5UMzIJdHdfY2xfaW50ZXJydXB0KHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rs cl9oYW5kbGUpOwogCmRpZmYgLXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsLmggRnJlZUJT RF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19vc2wuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMv dHdfb3NsLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Rf SEVBRF90d2FfM184MF8wNl8wMDMvdHdfb3NsLmgJMjAxMC0wOC0yNCAxODowMjoxMi4wMDAwMDAw MDAgLTA3MDAKQEAgLTc3LDYgKzc3LDcgQEAKIAkJCQkJCUVJTlBST0dSRVNTICovCiAjZGVmaW5l IFRXX09TTElfUkVRX0ZMQUdTX1BBU1NUSFJVCSgxPDw1KQkvKiBwYXNzIHRocm91Z2ggcmVxdWVz dCAqLwogI2RlZmluZSBUV19PU0xJX1JFUV9GTEFHU19TTEVFUElORwkoMTw8NikJLyogb3duZXIg c2xlZXBpbmcgb24gdGhpcyBjbWQgKi8KKyNkZWZpbmUgVFdfT1NMSV9SRVFfRkxBR1NfRkFJTEVE CSgxPDw3KQkvKiBidXNfZG1hbWFwX2xvYWQoKSBmYWlsZWQgKi8KIAogCiAjaWZkZWYgVFdfT1NM X0RFQlVHCkBAIC0xMDAsNiArMTAxLDcgQEAKIAlzdHJ1Y3QgdHdhX3NvZnRjCSpjdGxyOwkvKiBw dHIgdG8gT1NMJ3MgY29udHJvbGxlciBjb250ZXh0ICovCiAJVFdfVk9JRAkJCSpkYXRhOwkvKiBw dHIgdG8gZGF0YSBiZWluZyBwYXNzZWQgdG8gQ0wgKi8KIAlUV19VSU5UMzIJCWxlbmd0aDsJLyog bGVuZ3RoIG9mIGJ1ZiBiZWluZyBwYXNzZWQgdG8gQ0wgKi8KKwlUV19VSU5UNjQJCWRlYWRsaW5l Oy8qIHJlcXVlc3QgdGltZW91dCAoaW4gYWJzb2x1dGUgdGltZSkgKi8KIAogCS8qCiAJICogcHRy IHRvLCBhbmQgbGVuZ3RoIG9mIGRhdGEgcGFzc2VkIHRvIHVzIGZyb20gYWJvdmUsIGluIGNhc2Ug YSBidWZmZXIKQEAgLTE1MSw2ICsxNTMsOSBAQAogCXN0cnVjdCBtdHgJCXNpbV9sb2NrX2hhbmRs ZTsvKiBzaW0gbG9jayBzaGFyZWQgd2l0aCBjYW0gKi8KIAlzdHJ1Y3QgbXR4CQkqc2ltX2xvY2s7 LyogcHRyIHRvIHNpbSBsb2NrICovCiAKKwlzdHJ1Y3QgY2FsbG91dAkJd2F0Y2hkb2dfY2FsbG91 dFsyXTsgLyogRm9yIGNvbW1hbmQgdGltb3V0ICovCisJVFdfVUlOVDMyCQl3YXRjaGRvZ19pbmRl eDsKKwogI2lmZGVmIFRXX09TTF9ERUJVRwogCXN0cnVjdCB0d19vc2xpX3Ffc3RhdHMJcV9zdGF0 c1tUV19PU0xJX1FfQ09VTlRdOy8qIHF1ZXVlIHN0YXRpc3RpY3MgKi8KICNlbmRpZiAvKiBUV19P U0xfREVCVUcgKi8KZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19vc2xfY2FtLmMgRnJl ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19vc2xfY2FtLmMKLS0tIEZyZWVCU0RfSEVBRF90 d2FfY3ZzL3R3X29zbF9jYW0uYwkyMDEwLTA4LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAor KysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19vc2xfY2FtLmMJMjAxMC0wOC0yNCAx ODowMjoxMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTU1LDcgKzU1LDYgQEAKIAogc3RhdGljIFRXX1ZP SUQJdHdhX2FjdGlvbihzdHJ1Y3QgY2FtX3NpbSAqc2ltLCB1bmlvbiBjY2IgKmNjYik7CiBzdGF0 aWMgVFdfVk9JRAl0d2FfcG9sbChzdHJ1Y3QgY2FtX3NpbSAqc2ltKTsKLXN0YXRpYyBUV19WT0lE CXR3YV90aW1lb3V0KFRXX1ZPSUQgKmFyZyk7CiAKIHN0YXRpYyBUV19JTlQzMgl0d19vc2xpX2V4 ZWN1dGVfc2NzaShzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dCAqcmVxLAogCXVuaW9uIGNjYiAq Y2NiKTsKQEAgLTgxLDcgKzgwLDcgQEAKIAkvKgogCSAqIENyZWF0ZSB0aGUgZGV2aWNlIHF1ZXVl IGZvciBvdXIgU0lNLgogCSAqLwotCWlmICgoZGV2cSA9IGNhbV9zaW1xX2FsbG9jKFRXX09TTElf TUFYX05VTV9SRVFVRVNUUykpID09IE5VTEwpIHsKKwlpZiAoKGRldnEgPSBjYW1fc2ltcV9hbGxv YyhUV19PU0xJX01BWF9OVU1fSU9TKSkgPT0gTlVMTCkgewogCQl0d19vc2xpX3ByaW50ZihzYywg ImVycm9yID0gJWQiLAogCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAogCQkJVFdfQ0xf TUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCkBAIC0yNzUsNiArMjc0LDcgQEAKIAkJCQkJ IkkvTyBzaXplIHRvbyBiaWciLAogCQkJCQljc2lvLT5keGZlcl9sZW4pOwogCQkJCWNjYl9oLT5z dGF0dXMgPSBDQU1fUkVRX1RPT19CSUc7CisJCQkJY2NiX2gtPnN0YXR1cyAmPSB+Q0FNX1NJTV9R VUVVRUQ7CiAJCQkJeHB0X2RvbmUoY2NiKTsKIAkJCQlyZXR1cm4oMSk7CiAJCQl9CkBAIC0yOTAs NiArMjkwLDcgQEAKIAkJCQkweDIxMDcsCiAJCQkJIlhQVF9TQ1NJX0lPOiBHb3QgU0dMaXN0Iik7 CiAJCQljY2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9JTlZBTElEOworCQkJY2NiX2gtPnN0YXR1cyAm PSB+Q0FNX1NJTV9RVUVVRUQ7CiAJCQl4cHRfZG9uZShjY2IpOwogCQkJcmV0dXJuKDEpOwogCQl9 CkBAIC0zMDYsMTMgKzMwNywyMCBAQAogCQlyZXR1cm4oMSk7CiAJfQogCi0JY2NiX2gtPnRpbWVv dXRfY2ggPSB0aW1lb3V0KHR3YV90aW1lb3V0LCByZXEsCi0JCShjY2JfaC0+dGltZW91dCAqIGh6 KSAvIDEwMDApOworCXJlcS0+ZGVhZGxpbmUgPSB0d19vc2xfZ2V0X2xvY2FsX3RpbWUoKSArIChj Y2JfaC0+dGltZW91dCAvIDEwMDApOworCisKIAkvKgogCSAqIHR3YV9tYXBfbG9hZF9kYXRhX2Nh bGxiYWNrIHdpbGwgZmlsbCBpbiB0aGUgU0dMLAogCSAqIGFuZCBzdWJtaXQgdGhlIEkvTy4KIAkg Ki8KIAllcnJvciA9IHR3X29zbGlfbWFwX3JlcXVlc3QocmVxKTsKKwlpZiAoKGVycm9yKSAmJiAo cmVxLT5mbGFncyAmIFRXX09TTElfUkVRX0ZMQUdTX0ZBSUxFRCkpIHsKKwkJcmVxLT5kZWFkbGlu ZSA9IDA7CisJCWNjYl9oLT5zdGF0dXMgPSBDQU1fUkVRX0NNUF9FUlI7CisJCWNjYl9oLT5zdGF0 dXMgJj0gfkNBTV9TSU1fUVVFVUVEOworCQl4cHRfZG9uZShjY2IpOworCX0KIAlyZXR1cm4oZXJy b3IpOwogfQogCkBAIC0zNDUsMTAgKzM1MywyMCBAQAogCQkJICogRnJlZXplIHRoZSBzaW1xIHRv IG1haW50YWluIGNjYiBvcmRlcmluZy4gIFRoZSBuZXh0CiAJCQkgKiBjY2IgdGhhdCBnZXRzIGNv bXBsZXRlZCB3aWxsIHVuZnJlZXplIHRoZSBzaW1xLgogCQkJICovCisJCQljY2JfaC0+c3RhdHVz ICY9IH5DQU1fU0lNX1FVRVVFRDsKKwkJCWNjYl9oLT5zdGF0dXMgfD0gQ0FNX1JFUVVFVUVfUkVR OworCQkJeHB0X2RvbmUoY2NiKTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKCh0d19jbF9pc19y ZXNldF9uZWVkZWQoJihyZXEtPmN0bHItPmN0bHJfaGFuZGxlKSkpKSB7CisJCQljY2JfaC0+c3Rh dHVzICY9IH5DQU1fU0lNX1FVRVVFRDsKIAkJCWNjYl9oLT5zdGF0dXMgfD0gQ0FNX1JFUVVFVUVf UkVROwogCQkJeHB0X2RvbmUoY2NiKTsKKwkJCXR3X29zbGlfcmVxX3FfaW5zZXJ0X3RhaWwocmVx LCBUV19PU0xJX0ZSRUVfUSk7CiAJCQlicmVhazsKIAkJfQorCiAJCXJlcS0+cmVxX2hhbmRsZS5v c2xfcmVxX2N0eHQgPSByZXE7CiAJCXJlcS0+cmVxX2hhbmRsZS5pc19pbyA9IFRXX0NMX1RSVUU7 CiAJCXJlcS0+b3JpZ19yZXEgPSBjY2I7CkBAIC0zNjQsMjUgKzM4MiwxNCBAQAogCQlicmVhazsK IAogCWNhc2UgWFBUX1JFU0VUX0JVUzoKLQkJdHdfY2xfY3JlYXRlX2V2ZW50KCYoc2MtPmN0bHJf aGFuZGxlKSwgVFdfQ0xfVFJVRSwKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KCYoc2MtPmN0bHJfaGFu ZGxlKSwgVFdfQ0xfRkFMU0UsCiAJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZF UiwKIAkJCTB4MjEwOCwgMHgzLCBUV19DTF9TRVZFUklUWV9JTkZPX1NUUklORywKIAkJCSJSZWNl aXZlZCBSZXNldCBCdXMgcmVxdWVzdCBmcm9tIENBTSIsCiAJCQkiICIpOwogCi0JCW10eF91bmxv Y2soc2MtPnNpbV9sb2NrKTsKLQkJaWYgKHR3X2NsX3Jlc2V0X2N0bHIoJnNjLT5jdGxyX2hhbmRs ZSkpIHsKLQkJCXR3X2NsX2NyZWF0ZV9ldmVudCgmKHNjLT5jdGxyX2hhbmRsZSksIFRXX0NMX1RS VUUsCi0JCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCi0JCQkJMHgyMTA5 LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCQkiRmFpbGVkIHRvIHJlc2V0 IGJ1cyIsCi0JCQkJIiAiKTsKLQkJCWNjYl9oLT5zdGF0dXMgPSBDQU1fUkVRX0NNUF9FUlI7Ci0J CX0KLQkJZWxzZQotCQkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QOwotCi0JCW10eF9sb2Nr KHNjLT5zaW1fbG9jayk7CisJCXR3X2NsX3NldF9yZXNldF9uZWVkZWQoJihzYy0+Y3Rscl9oYW5k bGUpKTsKKwkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QOwogCQl4cHRfZG9uZShjY2IpOwog CQlicmVhazsKIApAQCAtNDUwLDYgKzQ1Nyw3IEBACiAgICAgICAgICAgICAgICAgcGF0aF9pbnEt PnRyYW5zcG9ydF92ZXJzaW9uID0gMjsKICAgICAgICAgICAgICAgICBwYXRoX2lucS0+cHJvdG9j b2wgPSBQUk9UT19TQ1NJOwogICAgICAgICAgICAgICAgIHBhdGhfaW5xLT5wcm90b2NvbF92ZXJz aW9uID0gU0NTSV9SRVZfMjsKKyAgICAgICAgICAgICAgICBwYXRoX2lucS0+bWF4aW8gPSBUV19D TF9NQVhfSU9fU0laRTsKIAkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QOwogCQl4cHRfZG9u ZShjY2IpOwogCQlicmVhazsKQEAgLTQ4NywzMSArNDk1LDYgQEAKIAogCiAvKgotICogRnVuY3Rp b24gbmFtZToJdHdhX3RpbWVvdXQKLSAqIERlc2NyaXB0aW9uOgkJRHJpdmVyIGVudHJ5IHBvaW50 IGZvciBiZWluZyBhbGVydGVkIG9uIGEgcmVxdWVzdAotICoJCQl0aW1pbmcgb3V0LgotICoKLSAq IElucHV0OgkJYXJnCS0tIHB0ciB0byB0aW1lZCBvdXQgcmVxdWVzdAotICogT3V0cHV0OgkJTm9u ZQotICogUmV0dXJuIHZhbHVlOglOb25lCi0gKi8KLXN0YXRpYyBUV19WT0lECi10d2FfdGltZW91 dChUV19WT0lEICphcmcpCi17Ci0Jc3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9Ci0J CShzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dCAqKWFyZzsKLQotCXR3X2NsX2NyZWF0ZV9ldmVu dCgmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpLCBUV19DTF9UUlVFLAotCQlUV19DTF9NRVNTQUdF X1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJMHgyMTBCLCAweDEsIFRXX0NMX1NFVkVSSVRZX0VS Uk9SX1NUUklORywKLQkJIlJlcXVlc3QgdGltZWQgb3V0ISIsCi0JCSJyZXF1ZXN0ID0gJXAiLCBy ZXEpOwotCXR3X2NsX3Jlc2V0X2N0bHIoJihyZXEtPmN0bHItPmN0bHJfaGFuZGxlKSk7Ci19Ci0K LQotCi0vKgogICogRnVuY3Rpb24gbmFtZToJdHdfb3NsaV9yZXF1ZXN0X2J1c19zY2FuCiAgKiBE ZXNjcmlwdGlvbjoJCVJlcXVlc3RzIENBTSBmb3IgYSBzY2FuIG9mIHRoZSBidXMuCiAgKgpAQCAt NTc0LDIwICs1NTcsMzkgQEAKIAogCiAvKgotICogRnVuY3Rpb24gbmFtZToJdHdfb3NsX2N0bHJf YnVzeQotICogRGVzY3JpcHRpb246CQlDTCBjYWxscyB0aGlzIGZ1bmN0aW9uIG9uIGNtZCBxdWV1 ZSBmdWxsIG9yIG90aGVyd2lzZSwKLSAqCQkJd2hlbiBpdCBpcyB0b28gYnVzeSB0byBhY2NlcHQg bmV3IHJlcXVlc3RzLgorICogRnVuY3Rpb24gbmFtZToJdHdfb3NsX3RpbWVvdXQKKyAqIERlc2Ny aXB0aW9uOgkJQ2FsbCB0byB0aW1lb3V0KCkuCiAgKgotICogSW5wdXQ6CQljdGxyX2hhbmRsZQkt LSBwdHIgdG8gY29udHJvbGxlciBoYW5kbGUKLSAqCQkJcmVxX2hhbmRsZQktLSBwdHIgdG8gcmVx dWVzdCBoYW5kbGUgc2VudCBieSBPU0wuCisgKiBJbnB1dDoJCXJlcV9oYW5kbGUgLS0gcHRyIHRv IHJlcXVlc3QgaGFuZGxlIHNlbnQgYnkgT1NMLgogICogT3V0cHV0OgkJTm9uZQogICogUmV0dXJu IHZhbHVlOglOb25lCiAgKi8KIFRXX1ZPSUQKLXR3X29zbF9jdGxyX2J1c3koc3RydWN0IHR3X2Ns X2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSwKLQlzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVx X2hhbmRsZSkKK3R3X29zbF90aW1lb3V0KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFu ZGxlKQoreworCXN0cnVjdCB0d19vc2xpX3JlcV9jb250ZXh0CSpyZXEgPSByZXFfaGFuZGxlLT5v c2xfcmVxX2N0eHQ7CisJdW5pb24gY2NiCQkJKmNjYiA9ICh1bmlvbiBjY2IgKikocmVxLT5vcmln X3JlcSk7CisJc3RydWN0IGNjYl9oZHIJCQkqY2NiX2ggPSAmKGNjYi0+Y2NiX2gpOworCisJcmVx LT5kZWFkbGluZSA9IHR3X29zbF9nZXRfbG9jYWxfdGltZSgpICsgKGNjYl9oLT50aW1lb3V0IC8g MTAwMCk7Cit9CisKKworCisvKgorICogRnVuY3Rpb24gbmFtZToJdHdfb3NsX3VudGltZW91dAor ICogRGVzY3JpcHRpb246CQlJbnZlcnNlIG9mIGNhbGwgdG8gdGltZW91dCgpLgorICoKKyAqIElu cHV0OgkJcmVxX2hhbmRsZSAtLSBwdHIgdG8gcmVxdWVzdCBoYW5kbGUgc2VudCBieSBPU0wuCisg KiBPdXRwdXQ6CQlOb25lCisgKiBSZXR1cm4gdmFsdWU6CU5vbmUKKyAqLworVFdfVk9JRAordHdf b3NsX3VudGltZW91dChzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVxX2hhbmRsZSkKIHsKLQl0 d19vc2xpX2Rpc2FsbG93X25ld19yZXF1ZXN0cyhjdGxyX2hhbmRsZS0+b3NsX2N0bHJfY3R4dCwg cmVxX2hhbmRsZSk7CisJc3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9IHJlcV9oYW5k bGUtPm9zbF9yZXFfY3R4dDsKKworCXJlcS0+ZGVhZGxpbmUgPSAwOwogfQogCiAKQEAgLTY1NSw3 ICs2NTcsNyBAQAogCiAJdHdfb3NsaV91bm1hcF9yZXF1ZXN0KHJlcSk7CiAKLQl1bnRpbWVvdXQo dHdhX3RpbWVvdXQsIHJlcSwgY2NiLT5jY2JfaC50aW1lb3V0X2NoKTsKKwlyZXEtPmRlYWRsaW5l ID0gMDsKIAlpZiAocmVxLT5lcnJvcl9jb2RlKSB7CiAJCS8qIFRoaXMgcmVxdWVzdCBuZXZlciBn b3Qgc3VibWl0dGVkIHRvIHRoZSBmaXJtd2FyZS4gKi8KIAkJaWYgKHJlcS0+ZXJyb3JfY29kZSA9 PSBFQlVTWSkgewpAQCAtNjgyLDcgKzY4NCw3IEBACiAJCQllbHNlIGlmIChyZXFfcGt0LT5zdGF0 dXMgJiBUV19DTF9FUlJfUkVRX1NDU0lfRVJST1IpCiAJCQkJY2NiLT5jY2JfaC5zdGF0dXMgfD0g Q0FNX1NDU0lfU1RBVFVTX0VSUk9SOwogCQkJZWxzZSBpZiAocmVxX3BrdC0+c3RhdHVzICYgVFdf Q0xfRVJSX1JFUV9CVVNfUkVTRVQpCi0JCQkJY2NiLT5jY2JfaC5zdGF0dXMgfD0gQ0FNX1NDU0lf QlVTX1JFU0VUOworCQkJCWNjYi0+Y2NiX2guc3RhdHVzIHw9IChDQU1fUkVRVUVVRV9SRVEgfCBD QU1fU0NTSV9CVVNfUkVTRVQpOwogCQkJLyoKIAkJCSAqIElmIG5vbmUgb2YgdGhlIGFib3ZlIGVy cm9ycyBvY2N1cnJlZCwgc2ltcGx5CiAJCQkgKiBtYXJrIGNvbXBsZXRpb24gZXJyb3IuCmRpZmYg LXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsX2ZyZWVic2QuYyBGcmVlQlNEX0hFQURfdHdh XzNfODBfMDZfMDAzL3R3X29zbF9mcmVlYnNkLmMKLS0tIEZyZWVCU0RfSEVBRF90d2FfY3ZzL3R3 X29zbF9mcmVlYnNkLmMJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZy ZWVCU0RfSEVBRF90d2FfM184MF8wNl8wMDMvdHdfb3NsX2ZyZWVic2QuYwkyMDEwLTA4LTI2IDE1 OjE0OjIyLjAwMDAwMDAwMCAtMDcwMApAQCAtMTc1LDYgKzE3NSw5IEBACiBzdGF0aWMgVFdfSU5U MzIJdHdhX3NodXRkb3duKGRldmljZV90IGRldik7CiBzdGF0aWMgVFdfVk9JRAl0d2FfYnVzZG1h X2xvY2soVFdfVk9JRCAqbG9ja19hcmcsIGJ1c19kbWFfbG9ja19vcF90IG9wKTsKIHN0YXRpYyBU V19WT0lECXR3YV9wY2lfaW50cihUV19WT0lEICphcmcpOworc3RhdGljIFRXX1ZPSUQJdHdhX3dh dGNoZG9nKFRXX1ZPSUQgKmFyZyk7CitpbnQgdHdhX3NldHVwX2ludHIoc3RydWN0IHR3YV9zb2Z0 YyAqc2MpOworaW50IHR3YV90ZWFyZG93bl9pbnRyKHN0cnVjdCB0d2Ffc29mdGMgKnNjKTsKIAog c3RhdGljIFRXX0lOVDMyCXR3X29zbGlfYWxsb2NfbWVtKHN0cnVjdCB0d2Ffc29mdGMgKnNjKTsK IHN0YXRpYyBUV19WT0lECXR3X29zbGlfZnJlZV9yZXNvdXJjZXMoc3RydWN0IHR3YV9zb2Z0YyAq c2MpOwpAQCAtMjM4LDYgKzI0MSwzMiBAQAogCXJldHVybihFTlhJTyk7CiB9CiAKK2ludCB0d2Ff c2V0dXBfaW50cihzdHJ1Y3QgdHdhX3NvZnRjICpzYykKK3sKKwlpbnQgZXJyb3IgPSAwOworCisJ aWYgKCEoc2MtPmludHJfaGFuZGxlKSAmJiAoc2MtPmlycV9yZXMpKSB7CisJCWVycm9yID0gYnVz X3NldHVwX2ludHIoc2MtPmJ1c19kZXYsIHNjLT5pcnFfcmVzLAorCQkJCQlJTlRSX1RZUEVfQ0FN IHwgSU5UUl9NUFNBRkUsCisJCQkJCU5VTEwsIHR3YV9wY2lfaW50ciwKKwkJCQkJc2MsICZzYy0+ aW50cl9oYW5kbGUpOworCX0KKwlyZXR1cm4oIGVycm9yICk7Cit9CisKKworaW50IHR3YV90ZWFy ZG93bl9pbnRyKHN0cnVjdCB0d2Ffc29mdGMgKnNjKQoreworCWludCBlcnJvciA9IDA7CisKKwlp ZiAoKHNjLT5pbnRyX2hhbmRsZSkgJiYgKHNjLT5pcnFfcmVzKSkgeworCQllcnJvciA9IGJ1c190 ZWFyZG93bl9pbnRyKHNjLT5idXNfZGV2LAorCQkJCQkJc2MtPmlycV9yZXMsIHNjLT5pbnRyX2hh bmRsZSk7CisJCXNjLT5pbnRyX2hhbmRsZSA9IE5VTEw7CisJfQorCXJldHVybiggZXJyb3IgKTsK K30KKwogCiAKIC8qCkBAIC0zNTQsMTAgKzM4Myw3IEBACiAJCXR3X29zbGlfZnJlZV9yZXNvdXJj ZXMoc2MpOwogCQlyZXR1cm4oRU5YSU8pOwogCX0KLQlpZiAoKGVycm9yID0gYnVzX3NldHVwX2lu dHIoc2MtPmJ1c19kZXYsIHNjLT5pcnFfcmVzLAotCQkJSU5UUl9UWVBFX0NBTSB8IElOVFJfTVBT QUZFLAotCQkJTlVMTCwgdHdhX3BjaV9pbnRyLAkgICAgCi0JCQlzYywgJnNjLT5pbnRyX2hhbmRs ZSkpKSB7CisJaWYgKChlcnJvciA9IHR3YV9zZXR1cF9pbnRyKHNjKSkpIHsKIAkJdHdfb3NsaV9w cmludGYoc2MsICJlcnJvciA9ICVkIiwKIAkJCVRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywK IAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLApAQCAtNDEyLDEwICs0Mzgs NzcgQEAKIAkJcmV0dXJuKGVycm9yKTsKIAl9CiAKKwlzYy0+d2F0Y2hkb2dfaW5kZXggPSAwOwor CWNhbGxvdXRfaW5pdCgmKHNjLT53YXRjaGRvZ19jYWxsb3V0WzBdKSwgQ0FMTE9VVF9NUFNBRkUp OworCWNhbGxvdXRfaW5pdCgmKHNjLT53YXRjaGRvZ19jYWxsb3V0WzFdKSwgQ0FMTE9VVF9NUFNB RkUpOworCWNhbGxvdXRfcmVzZXQoJihzYy0+d2F0Y2hkb2dfY2FsbG91dFswXSksIDUqaHosIHR3 YV93YXRjaGRvZywgJnNjLT5jdGxyX2hhbmRsZSk7CisKIAlyZXR1cm4oMCk7CiB9CiAKIAorc3Rh dGljIFRXX1ZPSUQKK3R3YV93YXRjaGRvZyhUV19WT0lEICphcmcpCit7CisJc3RydWN0IHR3X2Ns X2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSA9CisJCShzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUg Kilhcmc7CisJc3RydWN0IHR3YV9zb2Z0YwkJKnNjID0gY3Rscl9oYW5kbGUtPm9zbF9jdGxyX2N0 eHQ7CisJaW50CQkJCWk7CisJaW50CQkJCWlfbmVlZF9hX3Jlc2V0ID0gMDsKKwlpbnQJCQkJZHJp dmVyX2lzX2FjdGl2ZSA9IDA7CisJaW50CQkJCW15X3dhdGNoZG9nX3dhc19wZW5kaW5nID0gMTIz NDsKKwlUV19VSU5UNjQJCQljdXJyZW50X3RpbWU7CisJc3RydWN0IHR3X29zbGlfcmVxX2NvbnRl eHQJKm15X3JlcTsKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCWN1cnJlbnRfdGltZSA9 IChUV19VSU5UNjQpICh0d19vc2xfZ2V0X2xvY2FsX3RpbWUoKSk7CisKKwlmb3IgKGkgPSAwOyBp IDwgVFdfT1NMSV9NQVhfTlVNX1JFUVVFU1RTOyBpKyspIHsKKwkJbXlfcmVxID0gJihzYy0+cmVx X2N0eF9idWZbaV0pOworCisJCWlmICgobXlfcmVxLT5zdGF0ZSA9PSBUV19PU0xJX1JFUV9TVEFU RV9CVVNZKSAmJgorCQkJKG15X3JlcS0+ZGVhZGxpbmUpICYmCisJCQkobXlfcmVxLT5kZWFkbGlu ZSA8IGN1cnJlbnRfdGltZSkpIHsKKwkJCXR3X2NsX3NldF9yZXNldF9uZWVkZWQoY3Rscl9oYW5k bGUpOworI2lmZGVmICAgIFRXX09TTF9ERUJVRworCQkJZGV2aWNlX3ByaW50Zigoc2MpLT5idXNf ZGV2LCAiUmVxdWVzdCAlZCB0aW1lZCBvdXQhIGQgPSAlcCwgYyA9ICVwXG4iLCBpLCAodm9pZCop bXlfcmVxLT5kZWFkbGluZSwgKHZvaWQqKWN1cnJlbnRfdGltZSk7CisjZWxzZSAgLyogVFdfT1NM X0RFQlVHICovCisJCQlkZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJSZXF1ZXN0ICVkIHRp bWVkIG91dCFcbiIsIGkpOworI2VuZGlmIC8qIFRXX09TTF9ERUJVRyAqLworCQkJYnJlYWs7CisJ CX0KKwl9CisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJaV9uZWVkX2FfcmVzZXQgPSB0d19j bF9pc19yZXNldF9uZWVkZWQoY3Rscl9oYW5kbGUpOworCisJaSA9IChpbnQpICgoc2MtPndhdGNo ZG9nX2luZGV4KyspICYgMSk7CisKKwlkcml2ZXJfaXNfYWN0aXZlID0gdHdfY2xfaXNfYWN0aXZl KGN0bHJfaGFuZGxlKTsKKworCWlmIChpX25lZWRfYV9yZXNldCkgeworI2lmZGVmICAgIFRXX09T TF9ERUJVRworCQlkZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJXYXRjaGRvZyByZXNjaGVk dWxlZCBpbiA3MCBzZWNvbmRzXG4iKTsKKyNlbmRpZiAvKiBUV19PU0xfREVCVUcgKi8KKwkJbXlf d2F0Y2hkb2dfd2FzX3BlbmRpbmcgPQorCQkJY2FsbG91dF9yZXNldCgmKHNjLT53YXRjaGRvZ19j YWxsb3V0W2ldKSwgNzAqaHosIHR3YV93YXRjaGRvZywgJnNjLT5jdGxyX2hhbmRsZSk7CisJCXR3 X2NsX3Jlc2V0X2N0bHIoY3Rscl9oYW5kbGUpOworI2lmZGVmICAgIFRXX09TTF9ERUJVRworCQlk ZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJXYXRjaGRvZyByZXNldCBjb21wbGV0ZWQhXG4i KTsKKyNlbmRpZiAvKiBUV19PU0xfREVCVUcgKi8KKwl9IGVsc2UgaWYgKGRyaXZlcl9pc19hY3Rp dmUpIHsKKwkJbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcgPQorCQkJY2FsbG91dF9yZXNldCgmKHNj LT53YXRjaGRvZ19jYWxsb3V0W2ldKSwgIDUqaHosIHR3YV93YXRjaGRvZywgJnNjLT5jdGxyX2hh bmRsZSk7CisJfQorI2lmZGVmICAgIFRXX09TTF9ERUJVRworCWlmIChpX25lZWRfYV9yZXNldCB8 fCBteV93YXRjaGRvZ193YXNfcGVuZGluZykKKwkJZGV2aWNlX3ByaW50Zigoc2MpLT5idXNfZGV2 LCAiaV9uZWVkX2FfcmVzZXQgPSAlZCwgIgorCQkiZHJpdmVyX2lzX2FjdGl2ZSA9ICVkLCBteV93 YXRjaGRvZ193YXNfcGVuZGluZyA9ICVkXG4iLAorCQlpX25lZWRfYV9yZXNldCwgZHJpdmVyX2lz X2FjdGl2ZSwgbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcpOworI2VuZGlmIC8qIFRXX09TTF9ERUJV RyAqLworfQorCiAKIC8qCiAgKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xpX2FsbG9jX21lbQpAQCAt NzE1LDkgKzgwOCw3IEBACiAKIAogCS8qIERpc2Nvbm5lY3QgdGhlIGludGVycnVwdCBoYW5kbGVy LiAqLwotCWlmIChzYy0+aW50cl9oYW5kbGUpCi0JCWlmICgoZXJyb3IgPSBidXNfdGVhcmRvd25f aW50cihzYy0+YnVzX2RldiwKLQkJCQlzYy0+aXJxX3Jlcywgc2MtPmludHJfaGFuZGxlKSkpCisJ aWYgKChlcnJvciA9IHR3YV90ZWFyZG93bl9pbnRyKHNjKSkpCiAJCQl0d19vc2xpX2RiZ19kcHJp bnRmKDEsIHNjLAogCQkJCSJ0ZWFyZG93bl9pbnRyIHJldHVybmVkICVkIiwgZXJyb3IpOwogCkBA IC04MDksNiArOTAwLDEzIEBACiAKIAl0d19vc2xpX2RiZ19kcHJpbnRmKDMsIHNjLCAiZW50ZXJl ZCIpOwogCisJLyogRGlzY29ubmVjdCBpbnRlcnJ1cHRzLiAqLworCWVycm9yID0gdHdhX3RlYXJk b3duX2ludHIoc2MpOworCisJLyogU3RvcCB3YXRjaGRvZyB0YXNrLiAqLworCWNhbGxvdXRfZHJh aW4oJihzYy0+d2F0Y2hkb2dfY2FsbG91dFswXSkpOworCWNhbGxvdXRfZHJhaW4oJihzYy0+d2F0 Y2hkb2dfY2FsbG91dFsxXSkpOworCiAJLyogRGlzY29ubmVjdCBmcm9tIHRoZSBjb250cm9sbGVy LiAqLwogCWlmICgoZXJyb3IgPSB0d19jbF9zaHV0ZG93bl9jdGxyKCYoc2MtPmN0bHJfaGFuZGxl KSwgMCkpKSB7CiAJCXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAlZCIsCkBAIC05OTcsMzMg KzEwOTUsMzUgQEAKIAkJCQllcnJvciA9IDA7IC8qIEZhbHNlIGVycm9yICovCiAJCQkJYnJlYWs7 CiAJCQl9Ci0JCQl0d19vc2xpX3ByaW50ZihzYywgInJlcXVlc3QgPSAlcCIsCi0JCQkJVFdfQ0xf U0VWRVJJVFlfRVJST1JfU1RSSU5HLAotCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0Rf RFJJVkVSLAotCQkJCTB4MjAxOCwKLQkJCQkiUGFzc3RocnUgcmVxdWVzdCB0aW1lZCBvdXQhIiwK LQkJCQlyZXEpOwotCQkJLyoKLQkJCSAqIFNob3VsZCBJIGNoZWNrIGhlcmUgaWYgdGhlIHRpbWVv dXQgaGFwcGVuZWQKLQkJCSAqIGJlY2F1c2Ugb2YgeWV0IGFub3RoZXIgcmVzZXQsIGFuZCBub3Qg ZG8gYQotCQkJICogc2Vjb25kIHJlc2V0PwotCQkJICovCi0JCQl0d19jbF9yZXNldF9jdGxyKCZz Yy0+Y3Rscl9oYW5kbGUpOworCQkJaWYgKCEodHdfY2xfaXNfcmVzZXRfbmVlZGVkKCYocmVxLT5j dGxyLT5jdGxyX2hhbmRsZSkpKSkgeworI2lmZGVmICAgIFRXX09TTF9ERUJVRworCQkJCXR3X29z bGlfcHJpbnRmKHNjLCAicmVxdWVzdCA9ICVwIiwKKwkJCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1Jf U1RSSU5HLAorCQkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKKwkJCQkJ MHgyMDE4LAorCQkJCQkiUGFzc3RocnUgcmVxdWVzdCB0aW1lZCBvdXQhIiwKKwkJCQkJcmVxKTsK KyNlbHNlICAvKiBUV19PU0xfREVCVUcgKi8KKwkJCWRldmljZV9wcmludGYoKHNjKS0+YnVzX2Rl diwgIlBhc3N0aHJ1IHJlcXVlc3QgdGltZWQgb3V0IVxuIik7CisjZW5kaWYgLyogVFdfT1NMX0RF QlVHICovCisJCQkJdHdfY2xfcmVzZXRfY3RscigmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKTsK KwkJCX0KKworCQkJZXJyb3IgPSAwOworCQkJZW5kX3RpbWUgPSB0d19vc2xfZ2V0X2xvY2FsX3Rp bWUoKSArIHRpbWVvdXQ7CisJCQljb250aW51ZTsKIAkJCS8qCiAJCQkgKiBEb24ndCB0b3VjaCBy ZXEgYWZ0ZXIgYSByZXNldC4gIEl0IChhbmQgYW55Ci0JCQkgKiBhc3NvY2lhdGVkIGRhdGEpIHdp bGwgYWxyZWFkeSBoYXZlIGJlZW4KKwkJCSAqIGFzc29jaWF0ZWQgZGF0YSkgd2lsbCBiZQogCQkJ ICogdW5tYXBwZWQgYnkgdGhlIGNhbGxiYWNrLgogCQkJICovCi0JCQl1c2VyX2J1Zi0+ZHJpdmVy X3BrdC5vc19zdGF0dXMgPSBlcnJvcjsKLQkJCWVycm9yID0gRVRJTUVET1VUOwotCQkJZ290byBm d19wYXNzdGhydV9lcnI7CiAJCX0KIAkJLyogCiAJCSAqIEVpdGhlciB0aGUgcmVxdWVzdCBnb3Qg Y29tcGxldGVkLCBvciB3ZSB3ZXJlIHdva2VuIHVwIGJ5IGEKIAkJICogc2lnbmFsLiAgQ2FsY3Vs YXRlIHRoZSBuZXcgdGltZW91dCwgaW4gY2FzZSBpdCB3YXMgdGhlIGxhdHRlci4KIAkJICovCiAJ CXRpbWVvdXQgPSAoZW5kX3RpbWUgLSB0d19vc2xfZ2V0X2xvY2FsX3RpbWUoKSk7Ci0JfQorCX0g LyogRW5kIG9mIHdoaWxlIGxvb3AgKi8KIAogCS8qIElmIHRoZXJlIHdhcyBhIHBheWxvYWQsIGNv cHkgaXQgYmFjay4gKi8KIAlpZiAoKCFlcnJvcikgJiYgKHJlcS0+bGVuZ3RoKSkKQEAgLTEwMzcs MTkgKzExMzcsOSBAQAogCQkJCWVycm9yKTsKIAkKIGZ3X3Bhc3N0aHJ1X2VycjoKLQkvKgotCSAq IFByaW50IHRoZSBmYWlsdXJlIG1lc3NhZ2UuICBGb3Igc29tZSByZWFzb24sIG9uIGNlcnRhaW4g T1MgdmVyc2lvbnMsCi0JICogcHJpbnRpbmcgdGhpcyBlcnJvciBtZXNzYWdlIGR1cmluZyByZXNl dCBoYW5ncyB0aGUgZGlzcGxheSAoYWx0aG91Z2gKLQkgKiB0aGUgcmVzdCBvZiB0aGUgc3lzdGVt IGlzIHJ1bm5pbmcgZmluZS4gIFNvLCBkb24ndCBwcmludCBpdCBpZiB0aGUKLQkgKiBmYWlsdXJl IHdhcyBkdWUgdG8gYSByZXNldC4KLQkgKi8KLQlpZiAoKGVycm9yKSAmJiAoZXJyb3IgIT0gVFdf Q0xfRVJSX1JFUV9CVVNfUkVTRVQpKQotCQl0d19vc2xpX3ByaW50ZihzYywgImVycm9yID0gJWQi LAkJCi0JCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCi0JCQlUV19DTF9NRVNTQUdFX1NP VVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJCTB4MjAxQSwKLQkJCSJGaXJtd2FyZSBwYXNzdGhydSBm YWlsZWQhIiwKLQkJCWVycm9yKTsKKworCWlmIChyZXFfcGt0LT5zdGF0dXMgPT0gVFdfQ0xfRVJS X1JFUV9CVVNfUkVTRVQpCisJCWVycm9yID0gRUJVU1k7CiAKIAl1c2VyX2J1Zi0+ZHJpdmVyX3Br dC5vc19zdGF0dXMgPSBlcnJvcjsKIAkvKiBGcmVlIHJlc291cmNlcy4gKi8KQEAgLTEwNzMsNiAr MTE2Myw4IEBACiB0d19vc2xfY29tcGxldGVfcGFzc3RocnUoc3RydWN0IHR3X2NsX3JlcV9oYW5k bGUgKnJlcV9oYW5kbGUpCiB7CiAJc3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9IHJl cV9oYW5kbGUtPm9zbF9yZXFfY3R4dDsKKwlzdHJ1Y3QgdHdfY2xfcmVxX3BhY2tldAkJKnJlcV9w a3QgPQorCQkoc3RydWN0IHR3X2NsX3JlcV9wYWNrZXQgKikoJnJlcS0+cmVxX3BrdCk7CiAJc3Ry dWN0IHR3YV9zb2Z0YwkJKnNjID0gcmVxLT5jdGxyOwogCiAJdHdfb3NsaV9kYmdfZHByaW50Zig1 LCBzYywgImVudGVyZWQiKTsKQEAgLTExMjAsNiArMTIxMiw5IEBACiAJCQlpZiAocmVxLT5mbGFn cyAmIFRXX09TTElfUkVRX0ZMQUdTX01BUFBFRCkKIAkJCQlyZXR1cm47CiAKKwkJCWlmIChyZXFf cGt0LT5zdGF0dXMgPT0gVFdfQ0xfRVJSX1JFUV9CVVNfUkVTRVQpCisJCQkJcmV0dXJuOworCiAJ CQl0d19vc2xpX3ByaW50ZihzYywgInJlcXVlc3QgPSAlcCIsCiAJCQkJVFdfQ0xfU0VWRVJJVFlf RVJST1JfU1RSSU5HLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLApA QCAtMTE2Niw2ICsxMjYxLDcgQEAKIAkJcmVxLT5yZXFfaGFuZGxlLmlzX2lvID0gMDsKIAkJcmVx LT5kYXRhID0gTlVMTDsKIAkJcmVxLT5sZW5ndGggPSAwOworCQlyZXEtPmRlYWRsaW5lID0gMDsK IAkJcmVxLT5yZWFsX2RhdGEgPSBOVUxMOwogCQlyZXEtPnJlYWxfbGVuZ3RoID0gMDsKIAkJcmVx LT5zdGF0ZSA9IFRXX09TTElfUkVRX1NUQVRFX0lOSVQ7LyogcmVxIGJlaW5nIGluaXRpYWxpemVk ICovCkBAIC0xMjA3LDYgKzEzMDMsMTEgQEAKIAogCXR3X29zbGlfZGJnX2RwcmludGYoMTAsIHNj LCAiZW50ZXJlZCIpOwogCisJaWYgKGVycm9yID09IEVJTlZBTCkgeworCQlyZXEtPmVycm9yX2Nv ZGUgPSBlcnJvcjsKKwkJcmV0dXJuOworCX0KKwogCS8qIE1hcmsgdGhlIHJlcXVlc3QgYXMgY3Vy cmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gKi8KIAlyZXEtPnN0YXRlID0gVFdfT1NMSV9SRVFfU1RB VEVfQlVTWTsKIAkvKiBNb3ZlIHRoZSByZXF1ZXN0IGludG8gdGhlIGJ1c3kgcXVldWUuICovCkBA IC0xNDAwLDYgKzE1MDEsMTQgQEAKIAkJCQltdHhfdW5sb2NrX3NwaW4oc2MtPmlvX2xvY2spOwog CQkJCWVycm9yID0gMDsKIAkJCX0gZWxzZSB7CisJCQkJdHdfb3NsaV9wcmludGYoc2MsICJlcnJv ciA9ICVkIiwKKwkJCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAorCQkJCQlUV19DTF9N RVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKKwkJCQkJMHg5OTk5LAorCQkJCQkiRmFpbGVk IHRvIG1hcCBETUEgbWVtb3J5ICIKKwkJCQkJImZvciBJL08gcmVxdWVzdCIsCisJCQkJCWVycm9y KTsKKwkJCQlyZXEtPmZsYWdzIHw9IFRXX09TTElfUkVRX0ZMQUdTX0ZBSUxFRDsKIAkJCQkvKiBG cmVlIGFsaWdubWVudCBidWZmZXIgaWYgaXQgd2FzIHVzZWQuICovCiAJCQkJaWYgKHJlcS0+Zmxh Z3MgJgogCQkJCQlUV19PU0xJX1JFUV9GTEFHU19EQVRBX0NPUFlfTkVFREVEKSB7CmRpZmYgLXUg RnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsX3NoYXJlLmggRnJlZUJTRF9IRUFEX3R3YV8zXzgw XzA2XzAwMy90d19vc2xfc2hhcmUuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsX3No YXJlLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0RfSEVB RF90d2FfM184MF8wNl8wMDMvdHdfb3NsX3NoYXJlLmgJMjAxMC0wOC0yNCAxODowMjoxMi4wMDAw MDAwMDAgLTA3MDAKQEAgLTc1LDcgKzc1LDcgQEAKICNkZWZpbmUgVFdfT1NMX0VOQ0xPU1VSRV9T VVBQT1JUCiAjZW5kaWYKIAotI2RlZmluZSBUV19PU0xfRFJJVkVSX1ZFUlNJT05fU1RSSU5HCSIz LjgwLjA2LjAwMiIKKyNkZWZpbmUgVFdfT1NMX0RSSVZFUl9WRVJTSU9OX1NUUklORwkiMy44MC4w Ni4wMDMiCiAKICNkZWZpbmUJVFdfT1NMX0NBTl9TTEVFUAogCg== --_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Acosmail03lsicom_--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504A>