From owner-freebsd-bugs@FreeBSD.ORG Mon Aug 30 19:23:59 2010 Return-Path: Delivered-To: freebsd-bugs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 19DEE106566B; Mon, 30 Aug 2010 19:23:59 +0000 (UTC) (envelope-from Tom.Couch@lsi.com) Received: from na3sys009aog101.obsmtp.com (na3sys009aog101.obsmtp.com [74.125.149.67]) by mx1.freebsd.org (Postfix) with ESMTP id ABA1B8FC1D; Mon, 30 Aug 2010 19:23:58 +0000 (UTC) Received: from source ([147.145.40.20]) by na3sys009aob101.postini.com ([74.125.148.12]) with SMTP ID DSNKTHwFTo5Kt6zk6Kb2vM2HwghfvhZJA4Xg@postini.com; Mon, 30 Aug 2010 12:23:58 PDT Received: from milmhbs0.lsil.com (mhbs.lsil.com [147.145.1.30]) by mail0.lsil.com (8.12.11/8.12.11) with ESMTP id o7UJAtfi009066; Mon, 30 Aug 2010 12:10:55 -0700 (PDT) Received: from coscas01.lsi.com (coscas01.co.lsil.com [172.21.36.60]) by milmhbs0.lsil.com (8.12.11/8.12.11) with ESMTP id o7UJAxYJ027497; Mon, 30 Aug 2010 12:10:59 -0700 Received: from cosmail03.lsi.com ([172.21.36.37]) by coscas01.lsi.com ([172.21.36.60]) with mapi; Mon, 30 Aug 2010 13:10:54 -0600 From: "Couch, Tom" To: "FreeBSD-gnats-submit@FreeBSD.org" , "freebsd-bugs@FreeBSD.org" Date: Mon, 30 Aug 2010 13:10:53 -0600 Thread-Topic: kern/149968: Kernel panic with ZFS and twa version 3.80.06.002 Thread-Index: ActEg5WdG1KJNPxkR2CEqTAf0lmvhwD8sdRw Message-ID: <27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504B@cosmail03.lsi.com> References: Your message of Wed, 25 Aug 2010 18:28:49 GMT <201008251828.o7PISnUL062450@www.freebsd.org> <201008251830.o7PIU6fK019184@freefall.freebsd.org> In-Reply-To: <201008251830.o7PIU6fK019184@freefall.freebsd.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/mixed; boundary="_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Bcosmail03lsicom_" MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.39 Cc: Subject: RE: kern/149968: Kernel panic with ZFS and twa version 3.80.06.002 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Aug 2010 19:23:59 -0000 --_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Bcosmail03lsicom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Attaching patch FreeBSD_RELENG_8_src_sys_dev_twa.txt for RELENG_8. 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_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Bcosmail03lsicom_ Content-Type: text/plain; name="FreeBSD_RELENG_8_src_sys_dev_twa.txt" Content-Description: FreeBSD_RELENG_8_src_sys_dev_twa.txt Content-Disposition: attachment; filename="FreeBSD_RELENG_8_src_sys_dev_twa.txt"; size=44088; creation-date="Thu, 26 Aug 2010 16:56:00 GMT"; modification-date="Thu, 26 Aug 2010 16:56:00 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMvdHdfY2wuaCBGcmVlQlNEOF90d2FfM184 MF8wNl8wMDMvdHdfY2wuaAotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3ZzL3R3X2NsLmgJMjAx MC0wOC0yNiAxNTozNToyMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q4X3R3YV8zXzgwXzA2 XzAwMy90d19jbC5oCTIwMTAtMDgtMjQgMTg6MDE6NDQuMDAwMDAwMDAwIC0wNzAwCkBAIC04OCw3 ICs4OCw4IEBACiAjZGVmaW5lIFRXX0NMSV9CVVNZX1EJCTEJLyogcSBvZiByZXFzIHN1Ym1pdHRl ZCB0byBmdyAqLwogI2RlZmluZSBUV19DTElfUEVORElOR19RCTIJLyogcSBvZiByZXFzIGRlZmVy cmVkIGR1ZSB0byAncSBmdWxsJyAqLwogI2RlZmluZSBUV19DTElfQ09NUExFVEVfUQkzCS8qIHEg b2YgcmVxcyBjb21wbGV0ZWQgYnkgZncgKi8KLSNkZWZpbmUgVFdfQ0xJX1FfQ09VTlQJCTQJLyog dG90YWwgbnVtYmVyIG9mIHF1ZXVlcyAqLworI2RlZmluZSBUV19DTElfUkVTRVRfUQkJNAkvKiBx IG9mIHJlcXMgcmVzZXQgYnkgdGltZW91dCAqLworI2RlZmluZSBUV19DTElfUV9DT1VOVAkJNQkv KiB0b3RhbCBudW1iZXIgb2YgcXVldWVzICovCiAKIAogLyogQ0wncyBpbnRlcm5hbCByZXF1ZXN0 IGNvbnRleHQuICovCkBAIC0xMzMsNiArMTM0LDcgQEAKIAlUV19VSU5UOCAJCWludGVycnVwdHNf ZW5hYmxlZDsJICAvKiBJbnRlcnJ1cHRzIG9uIGNvbnRyb2xsZXIgZW5hYmxlZC4gKi8KIAlUV19V SU5UOCAJCWludGVybmFsX3JlcV9idXN5OwkgIC8qIERhdGEgYnVmZmVyIGZvciBpbnRlcm5hbCBy ZXF1ZXN0cyBpbiB1c2UuICovCiAJVFdfVUlOVDggCQlnZXRfbW9yZV9hZW5zOwkJICAvKiBNb3Jl IEFFTidzIG5lZWQgdG8gYmUgcmV0cmlldmVkLiAqLworCVRXX1VJTlQ4IAkJcmVzZXRfbmVlZGVk OwkJICAvKiBDb250cm9sbGVyIG5lZWRzIGEgc29mdCByZXNldC4gKi8KIAlUV19VSU5UOCAJCXJl c2V0X2luX3Byb2dyZXNzOwkgIC8qIENvbnRyb2xsZXIgaXMgYmVpbmcgcmVzZXQuICovCiAJVFdf VUlOVDggCQlyZXNldF9waGFzZTFfaW5fcHJvZ3Jlc3M7IC8qIEluICdwaGFzZSAxJyBvZiByZXNl dC4gKi8KIAlUV19VSU5UMzIJCWZsYWdzOwkJLyogY29udHJvbGxlciBzZXR0aW5ncyAqLwpkaWZm IC11IEZyZWVCU0RfUkVMRU5HXzhfdHdhX2N2cy90d19jbF9leHRlcm5zLmggRnJlZUJTRDhfdHdh XzNfODBfMDZfMDAzL3R3X2NsX2V4dGVybnMuaAotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3Zz L3R3X2NsX2V4dGVybnMuaAkyMDEwLTA4LTI2IDE1OjM1OjIwLjAwMDAwMDAwMCAtMDcwMAorKysg RnJlZUJTRDhfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2V4dGVybnMuaAkyMDEwLTA4LTI0IDE4OjAx OjQ0LjAwMDAwMDAwMCAtMDcwMApAQCAtODYsNiArODYsOCBAQAogCiAvKiBTb2Z0IHJlc2V0IHRo ZSBjb250cm9sbGVyLiAqLwogZXh0ZXJuIFRXX0lOVDMyCXR3X2NsaV9zb2Z0X3Jlc2V0KHN0cnVj dCB0d19jbGlfY3Rscl9jb250ZXh0ICpjdGxyKTsKK2V4dGVybiBpbnQgdHdhX3NldHVwX2ludHIo c3RydWN0IHR3YV9zb2Z0YyAqc2MpOworZXh0ZXJuIGludCB0d2FfdGVhcmRvd25faW50cihzdHJ1 Y3QgdHdhX3NvZnRjICpzYyk7CiAKIC8qIFNlbmQgZG93biBhIFNDU0kgY29tbWFuZCB0byB0aGUg ZmlybXdhcmUgKHVzdWFsbHksIGFuIGludGVybmFsIFJlcSBTZW5zZS4gKi8KIGV4dGVybiBUV19J TlQzMgl0d19jbGlfc2VuZF9zY3NpX2NtZChzdHJ1Y3QgdHdfY2xpX3JlcV9jb250ZXh0ICpyZXEs CmRpZmYgLXUgRnJlZUJTRF9SRUxFTkdfOF90d2FfY3ZzL3R3X2NsX2Z3aWYuaCBGcmVlQlNEOF90 d2FfM184MF8wNl8wMDMvdHdfY2xfZndpZi5oCi0tLSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMv dHdfY2xfZndpZi5oCTIwMTAtMDgtMjYgMTU6MzU6MjAuMDAwMDAwMDAwIC0wNzAwCisrKyBGcmVl QlNEOF90d2FfM184MF8wNl8wMDMvdHdfY2xfZndpZi5oCTIwMTAtMDgtMjQgMTg6MDE6NDQuMDAw MDAwMDAwIC0wNzAwCkBAIC04OSw3ICs4OSw3IEBACiAjZGVmaW5lIFRXQV9TVEFUVVNfTUlOT1Jf VkVSU0lPTl9NQVNLCQkweDBGMDAwMDAwCiAjZGVmaW5lIFRXQV9TVEFUVVNfTUFKT1JfVkVSU0lP Tl9NQVNLCQkweEYwMDAwMDAwCiAKLSNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJ CTB4MDBGMDAwMDAKKyNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJCTB4MDBEMDAw MDAKIAogCiAvKiBQQ0kgcmVsYXRlZCBkZWZpbmVzLiAqLwpkaWZmIC11IEZyZWVCU0RfUkVMRU5H XzhfdHdhX2N2cy90d19jbF9pbml0LmMgRnJlZUJTRDhfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2lu aXQuYwotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3ZzL3R3X2NsX2luaXQuYwkyMDEwLTA4LTI2 IDE1OjM1OjIwLjAwMDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRDhfdHdhXzNfODBfMDZfMDAzL3R3 X2NsX2luaXQuYwkyMDEwLTA4LTI0IDE4OjAxOjQ0LjAwMDAwMDAwMCAtMDcwMApAQCAtMzE1LDYg KzMxNSw3IEBACiAJdHdfY2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX0JVU1lfUSk7CiAJdHdf Y2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSk7CiAJdHdfY2xpX3JlcV9xX2lu aXQoY3RsciwgVFdfQ0xJX0NPTVBMRVRFX1EpOworCXR3X2NsaV9yZXFfcV9pbml0KGN0bHIsIFRX X0NMSV9SRVNFVF9RKTsKIAogCS8qIEluaXRpYWxpemUgYWxsIGxvY2tzIHVzZWQgYnkgQ0wuICov CiAJY3Rsci0+Z2VuX2xvY2sgPSAmKGN0bHItPmdlbl9sb2NrX2hhbmRsZSk7CkBAIC02NzUsMTUg KzY3NiwxNCBAQAogCS8qIFN1Ym1pdCB0aGUgY29tbWFuZCwgYW5kIHdhaXQgZm9yIGl0IHRvIGNv bXBsZXRlLiAqLwogCWVycm9yID0gdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwK IAkJVFdfQ0xJX1JFUVVFU1RfVElNRU9VVF9QRVJJT0QpOwotCWlmIChlcnJvciA9PSBUV19PU0xf RVRJTUVET1VUKQotCQkvKiBDbGVhbi11cCBkb25lIGJ5IHR3X2NsaV9zdWJtaXRfYW5kX3BvbGxf cmVxdWVzdC4gKi8KLQkJcmV0dXJuKGVycm9yKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0Owog CWlmICgoZXJyb3IgPSBpbml0X2Nvbm5lY3QtPnN0YXR1cykpIHsKKyNpZiAgICAgICAwCiAJCXR3 X2NsaV9jcmVhdGVfY3Rscl9ldmVudChjdGxyLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09O VFJPTExFUl9FUlJPUiwKIAkJCSYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjZW5kaWYgLy8g MAogCQlnb3RvIG91dDsKIAl9CiAJaWYgKHNldF9mZWF0dXJlcyAmIFRXQV9FWFRFTkRFRF9JTklU X0NPTk5FQ1QpIHsKZGlmZiAtdSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMvdHdfY2xfaW50ci5j IEZyZWVCU0Q4X3R3YV8zXzgwXzA2XzAwMy90d19jbF9pbnRyLmMKLS0tIEZyZWVCU0RfUkVMRU5H XzhfdHdhX2N2cy90d19jbF9pbnRyLmMJMjAxMC0wOC0yNiAxNTozNToyMC4wMDAwMDAwMDAgLTA3 MDAKKysrIEZyZWVCU0Q4X3R3YV8zXzgwXzA2XzAwMy90d19jbF9pbnRyLmMJMjAxMC0wOC0yNCAx ODowMTo0NC4wMDAwMDAwMDAgLTA3MDAKQEAgLTI0OCw4ICsyNDgsNyBAQAogI2lmZGVmIFRXX09T 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 RVJST1JfU1RSSU5HLApkaWZmIC11IEZyZWVCU0RfUkVMRU5HXzhfdHdhX2N2cy90d19jbF9pby5j IEZyZWVCU0Q4X3R3YV8zXzgwXzA2XzAwMy90d19jbF9pby5jCi0tLSBGcmVlQlNEX1JFTEVOR184 X3R3YV9jdnMvdHdfY2xfaW8uYwkyMDEwLTA4LTI2IDE1OjM1OjIwLjAwMDAwMDAwMCAtMDcwMAor KysgRnJlZUJTRDhfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2lvLmMJMjAxMC0wOC0yNCAxODowMTo0 NC4wMDAwMDAwMDAgLTA3MDAKQEAgLTc0LDE4ICs3NCwxMiBAQAogCXN0cnVjdCB0d19jbGlfcmVx 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 ZWVCU0RfUkVMRU5HXzhfdHdhX2N2cy90d19jbF9taXNjLmMgRnJlZUJTRDhfdHdhXzNfODBfMDZf MDAzL3R3X2NsX21pc2MuYwotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3ZzL3R3X2NsX21pc2Mu YwkyMDEwLTA4LTI2IDE1OjM1OjIwLjAwMDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRDhfdHdhXzNf ODBfMDZfMDAzL3R3X2NsX21pc2MuYwkyMDEwLTA4LTI0IDE4OjAxOjQ0LjAwMDAwMDAwMCAtMDcw 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 ZGlmZiAtdSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMvdHdfY2xfc2hhcmUuaCBGcmVlQlNEOF90 d2FfM184MF8wNl8wMDMvdHdfY2xfc2hhcmUuaAotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3Zz L3R3X2NsX3NoYXJlLmgJMjAxMC0wOC0yNiAxNTozNToyMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZy ZWVCU0Q4X3R3YV8zXzgwXzA2XzAwMy90d19jbF9zaGFyZS5oCTIwMTAtMDgtMjQgMTg6MDE6NDQu MDAwMDAwMDAwIC0wNzAwCkBAIC0zNDksMTAgKzM0OSwxNCBAQAogI2VuZGlmCiAKIAotI2lmbmRl ZiB0d19vc2xfY3Rscl9idXN5Ci0vKiBDYWxsZWQgd2hlbiBDTCBpcyB0b28gYnVzeSB0byBhY2Nl cHQgbmV3IHJlcXVlc3RzLiAqLwotZXh0ZXJuIFRXX1ZPSUQJdHdfb3NsX2N0bHJfYnVzeShzdHJ1 Y3QgdHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlLAotCXN0cnVjdCB0d19jbF9yZXFfaGFu ZGxlICpyZXFfaGFuZGxlKTsKKyNpZm5kZWYgdHdfb3NsX3RpbWVvdXQKKy8qIFN0YXJ0IE9TIHRp bWVvdXQoKSByb3V0aW5lIGFmdGVyIGNvbnRyb2xsZXIgcmVzZXQgc2VxdWVuY2UgKi8KK2V4dGVy biBUV19WT0lECXR3X29zbF90aW1lb3V0KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFu ZGxlKTsKKyNlbmRpZgorCisjaWZuZGVmIHR3X29zbF91bnRpbWVvdXQKKy8qIFN0b3AgT1MgdGlt ZW91dCgpIHJvdXRpbmUgZHVyaW5nIGNvbnRyb2xsZXIgcmVzZXQgc2VxdWVuY2UgKi8KK2V4dGVy biBUV19WT0lECXR3X29zbF91bnRpbWVvdXQoc3RydWN0IHR3X2NsX3JlcV9oYW5kbGUgKnJlcV9o YW5kbGUpOwogI2VuZGlmCiAKIApAQCAtNTUyLDEzICs1NTYsMTcgQEAKIAkpOwogCiAKK2V4dGVy biBUV19WT0lEICB0d19jbF9zZXRfcmVzZXRfbmVlZGVkKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRs ZSAqY3Rscl9oYW5kbGUpOworZXh0ZXJuIFRXX0lOVDMyIHR3X2NsX2lzX3Jlc2V0X25lZWRlZChz dHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlKTsKK2V4dGVybiBUV19JTlQzMiB0 d19jbF9pc19hY3RpdmUoc3RydWN0IHR3X2NsX2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSk7CisK IC8qIENMJ3MgaW50ZXJydXB0IGhhbmRsZXIuICovCiBleHRlcm4gVFdfSU5UMzIJdHdfY2xfaW50 ZXJydXB0KHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUpOwogCiAKIC8qIENM J3MgaW9jdGwgaGFuZGxlci4gKi8KIGV4dGVybiBUV19JTlQzMgl0d19jbF9pb2N0bChzdHJ1Y3Qg dHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlLAotCVRXX0lOVDMyIGNtZCwgVFdfVk9JRCAq YnVmKTsKKwl1X2xvbmcgY21kLCBUV19WT0lEICpidWYpOwogCiAKICNpZmRlZiBUV19PU0xfREVC VUcKZGlmZiAtdSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMvdHdfb3NsLmggRnJlZUJTRDhfdHdh XzNfODBfMDZfMDAzL3R3X29zbC5oCi0tLSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMvdHdfb3Ns LmgJMjAxMC0wOC0yNiAxNTozNToyMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q4X3R3YV8z XzgwXzA2XzAwMy90d19vc2wuaAkyMDEwLTA4LTI0IDE4OjAxOjQ0LjAwMDAwMDAwMCAtMDcwMApA QCAtNzcsNiArNzcsNyBAQAogCQkJCQkJRUlOUFJPR1JFU1MgKi8KICNkZWZpbmUgVFdfT1NMSV9S RVFfRkxBR1NfUEFTU1RIUlUJKDE8PDUpCS8qIHBhc3MgdGhyb3VnaCByZXF1ZXN0ICovCiAjZGVm aW5lIFRXX09TTElfUkVRX0ZMQUdTX1NMRUVQSU5HCSgxPDw2KQkvKiBvd25lciBzbGVlcGluZyBv biB0aGlzIGNtZCAqLworI2RlZmluZSBUV19PU0xJX1JFUV9GTEFHU19GQUlMRUQJKDE8PDcpCS8q IGJ1c19kbWFtYXBfbG9hZCgpIGZhaWxlZCAqLwogCiAKICNpZmRlZiBUV19PU0xfREVCVUcKQEAg LTEwMCw2ICsxMDEsNyBAQAogCXN0cnVjdCB0d2Ffc29mdGMJKmN0bHI7CS8qIHB0ciB0byBPU0wn cyBjb250cm9sbGVyIGNvbnRleHQgKi8KIAlUV19WT0lECQkJKmRhdGE7CS8qIHB0ciB0byBkYXRh IGJlaW5nIHBhc3NlZCB0byBDTCAqLwogCVRXX1VJTlQzMgkJbGVuZ3RoOwkvKiBsZW5ndGggb2Yg YnVmIGJlaW5nIHBhc3NlZCB0byBDTCAqLworCVRXX1VJTlQ2NAkJZGVhZGxpbmU7LyogcmVxdWVz dCB0aW1lb3V0IChpbiBhYnNvbHV0ZSB0aW1lKSAqLwogCiAJLyoKIAkgKiBwdHIgdG8sIGFuZCBs ZW5ndGggb2YgZGF0YSBwYXNzZWQgdG8gdXMgZnJvbSBhYm92ZSwgaW4gY2FzZSBhIGJ1ZmZlcgpA QCAtMTUxLDYgKzE1Myw5IEBACiAJc3RydWN0IG10eAkJc2ltX2xvY2tfaGFuZGxlOy8qIHNpbSBs b2NrIHNoYXJlZCB3aXRoIGNhbSAqLwogCXN0cnVjdCBtdHgJCSpzaW1fbG9jazsvKiBwdHIgdG8g c2ltIGxvY2sgKi8KIAorCXN0cnVjdCBjYWxsb3V0CQl3YXRjaGRvZ19jYWxsb3V0WzJdOyAvKiBG b3IgY29tbWFuZCB0aW1vdXQgKi8KKwlUV19VSU5UMzIJCXdhdGNoZG9nX2luZGV4OworCiAjaWZk ZWYgVFdfT1NMX0RFQlVHCiAJc3RydWN0IHR3X29zbGlfcV9zdGF0cwlxX3N0YXRzW1RXX09TTElf UV9DT1VOVF07LyogcXVldWUgc3RhdGlzdGljcyAqLwogI2VuZGlmIC8qIFRXX09TTF9ERUJVRyAq LwpkaWZmIC11IEZyZWVCU0RfUkVMRU5HXzhfdHdhX2N2cy90d19vc2xfY2FtLmMgRnJlZUJTRDhf dHdhXzNfODBfMDZfMDAzL3R3X29zbF9jYW0uYwotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3Zz L3R3X29zbF9jYW0uYwkyMDEwLTA4LTI2IDE1OjM1OjIwLjAwMDAwMDAwMCAtMDcwMAorKysgRnJl ZUJTRDhfdHdhXzNfODBfMDZfMDAzL3R3X29zbF9jYW0uYwkyMDEwLTA4LTI0IDE4OjAxOjQ0LjAw MDAwMDAwMCAtMDcwMApAQCAtNTUsNyArNTUsNiBAQAogCiBzdGF0aWMgVFdfVk9JRAl0d2FfYWN0 aW9uKHN0cnVjdCBjYW1fc2ltICpzaW0sIHVuaW9uIGNjYiAqY2NiKTsKIHN0YXRpYyBUV19WT0lE CXR3YV9wb2xsKHN0cnVjdCBjYW1fc2ltICpzaW0pOwotc3RhdGljIFRXX1ZPSUQJdHdhX3RpbWVv dXQoVFdfVk9JRCAqYXJnKTsKIAogc3RhdGljIFRXX0lOVDMyCXR3X29zbGlfZXhlY3V0ZV9zY3Np KHN0cnVjdCB0d19vc2xpX3JlcV9jb250ZXh0ICpyZXEsCiAJdW5pb24gY2NiICpjY2IpOwpAQCAt ODEsNyArODAsNyBAQAogCS8qCiAJICogQ3JlYXRlIHRoZSBkZXZpY2UgcXVldWUgZm9yIG91ciBT SU0uCiAJICovCi0JaWYgKChkZXZxID0gY2FtX3NpbXFfYWxsb2MoVFdfT1NMSV9NQVhfTlVNX1JF UVVFU1RTKSkgPT0gTlVMTCkgeworCWlmICgoZGV2cSA9IGNhbV9zaW1xX2FsbG9jKFRXX09TTElf TUFYX05VTV9JT1MpKSA9PSBOVUxMKSB7CiAJCXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAl ZCIsCiAJCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQlUV19DTF9NRVNTQUdFX1NP VVJDRV9GUkVFQlNEX0RSSVZFUiwKQEAgLTI3NSw2ICsyNzQsNyBAQAogCQkJCQkiSS9PIHNpemUg dG9vIGJpZyIsCiAJCQkJCWNzaW8tPmR4ZmVyX2xlbik7CiAJCQkJY2NiX2gtPnN0YXR1cyA9IENB TV9SRVFfVE9PX0JJRzsKKwkJCQljY2JfaC0+c3RhdHVzICY9IH5DQU1fU0lNX1FVRVVFRDsKIAkJ CQl4cHRfZG9uZShjY2IpOwogCQkJCXJldHVybigxKTsKIAkJCX0KQEAgLTI5MCw2ICsyOTAsNyBA QAogCQkJCTB4MjEwNywKIAkJCQkiWFBUX1NDU0lfSU86IEdvdCBTR0xpc3QiKTsKIAkJCWNjYl9o LT5zdGF0dXMgPSBDQU1fUkVRX0lOVkFMSUQ7CisJCQljY2JfaC0+c3RhdHVzICY9IH5DQU1fU0lN X1FVRVVFRDsKIAkJCXhwdF9kb25lKGNjYik7CiAJCQlyZXR1cm4oMSk7CiAJCX0KQEAgLTMwNiwx MyArMzA3LDIwIEBACiAJCXJldHVybigxKTsKIAl9CiAKLQljY2JfaC0+dGltZW91dF9jaCA9IHRp bWVvdXQodHdhX3RpbWVvdXQsIHJlcSwKLQkJKGNjYl9oLT50aW1lb3V0ICogaHopIC8gMTAwMCk7 CisJcmVxLT5kZWFkbGluZSA9IHR3X29zbF9nZXRfbG9jYWxfdGltZSgpICsgKGNjYl9oLT50aW1l b3V0IC8gMTAwMCk7CisKKwogCS8qCiAJICogdHdhX21hcF9sb2FkX2RhdGFfY2FsbGJhY2sgd2ls bCBmaWxsIGluIHRoZSBTR0wsCiAJICogYW5kIHN1Ym1pdCB0aGUgSS9PLgogCSAqLwogCWVycm9y ID0gdHdfb3NsaV9tYXBfcmVxdWVzdChyZXEpOworCWlmICgoZXJyb3IpICYmIChyZXEtPmZsYWdz ICYgVFdfT1NMSV9SRVFfRkxBR1NfRkFJTEVEKSkgeworCQlyZXEtPmRlYWRsaW5lID0gMDsKKwkJ Y2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QX0VSUjsKKwkJY2NiX2gtPnN0YXR1cyAmPSB+Q0FN X1NJTV9RVUVVRUQ7CisJCXhwdF9kb25lKGNjYik7CisJfQogCXJldHVybihlcnJvcik7CiB9CiAK QEAgLTM0NSwxMCArMzUzLDIwIEBACiAJCQkgKiBGcmVlemUgdGhlIHNpbXEgdG8gbWFpbnRhaW4g Y2NiIG9yZGVyaW5nLiAgVGhlIG5leHQKIAkJCSAqIGNjYiB0aGF0IGdldHMgY29tcGxldGVkIHdp bGwgdW5mcmVlemUgdGhlIHNpbXEuCiAJCQkgKi8KKwkJCWNjYl9oLT5zdGF0dXMgJj0gfkNBTV9T SU1fUVVFVUVEOworCQkJY2NiX2gtPnN0YXR1cyB8PSBDQU1fUkVRVUVVRV9SRVE7CisJCQl4cHRf ZG9uZShjY2IpOworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoKHR3X2NsX2lzX3Jlc2V0X25lZWRl ZCgmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKSkpIHsKKwkJCWNjYl9oLT5zdGF0dXMgJj0gfkNB TV9TSU1fUVVFVUVEOwogCQkJY2NiX2gtPnN0YXR1cyB8PSBDQU1fUkVRVUVVRV9SRVE7CiAJCQl4 cHRfZG9uZShjY2IpOworCQkJdHdfb3NsaV9yZXFfcV9pbnNlcnRfdGFpbChyZXEsIFRXX09TTElf RlJFRV9RKTsKIAkJCWJyZWFrOwogCQl9CisKIAkJcmVxLT5yZXFfaGFuZGxlLm9zbF9yZXFfY3R4 dCA9IHJlcTsKIAkJcmVxLT5yZXFfaGFuZGxlLmlzX2lvID0gVFdfQ0xfVFJVRTsKIAkJcmVxLT5v cmlnX3JlcSA9IGNjYjsKQEAgLTM2NCwyNSArMzgyLDE0IEBACiAJCWJyZWFrOwogCiAJY2FzZSBY UFRfUkVTRVRfQlVTOgotCQl0d19jbF9jcmVhdGVfZXZlbnQoJihzYy0+Y3Rscl9oYW5kbGUpLCBU V19DTF9UUlVFLAorCQl0d19jbF9jcmVhdGVfZXZlbnQoJihzYy0+Y3Rscl9oYW5kbGUpLCBUV19D TF9GQUxTRSwKIAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLAogCQkJMHgy MTA4LCAweDMsIFRXX0NMX1NFVkVSSVRZX0lORk9fU1RSSU5HLAogCQkJIlJlY2VpdmVkIFJlc2V0 IEJ1cyByZXF1ZXN0IGZyb20gQ0FNIiwKIAkJCSIgIik7CiAKLQkJbXR4X3VubG9jayhzYy0+c2lt X2xvY2spOwotCQlpZiAodHdfY2xfcmVzZXRfY3Rscigmc2MtPmN0bHJfaGFuZGxlKSkgewotCQkJ dHdfY2xfY3JlYXRlX2V2ZW50KCYoc2MtPmN0bHJfaGFuZGxlKSwgVFdfQ0xfVFJVRSwKLQkJCQlU V19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJCQkweDIxMDksIDB4MSwgVFdf Q0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAotCQkJCSJGYWlsZWQgdG8gcmVzZXQgYnVzIiwKLQkJ CQkiICIpOwotCQkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QX0VSUjsKLQkJfQotCQllbHNl Ci0JCQljY2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9DTVA7Ci0KLQkJbXR4X2xvY2soc2MtPnNpbV9s b2NrKTsKKwkJdHdfY2xfc2V0X3Jlc2V0X25lZWRlZCgmKHNjLT5jdGxyX2hhbmRsZSkpOworCQlj Y2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9DTVA7CiAJCXhwdF9kb25lKGNjYik7CiAJCWJyZWFrOwog CkBAIC00NTAsNiArNDU3LDcgQEAKICAgICAgICAgICAgICAgICBwYXRoX2lucS0+dHJhbnNwb3J0 X3ZlcnNpb24gPSAyOwogICAgICAgICAgICAgICAgIHBhdGhfaW5xLT5wcm90b2NvbCA9IFBST1RP X1NDU0k7CiAgICAgICAgICAgICAgICAgcGF0aF9pbnEtPnByb3RvY29sX3ZlcnNpb24gPSBTQ1NJ X1JFVl8yOworICAgICAgICAgICAgICAgIHBhdGhfaW5xLT5tYXhpbyA9IFRXX0NMX01BWF9JT19T SVpFOwogCQljY2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9DTVA7CiAJCXhwdF9kb25lKGNjYik7CiAJ CWJyZWFrOwpAQCAtNDg3LDMxICs0OTUsNiBAQAogCiAKIC8qCi0gKiBGdW5jdGlvbiBuYW1lOgl0 d2FfdGltZW91dAotICogRGVzY3JpcHRpb246CQlEcml2ZXIgZW50cnkgcG9pbnQgZm9yIGJlaW5n IGFsZXJ0ZWQgb24gYSByZXF1ZXN0Ci0gKgkJCXRpbWluZyBvdXQuCi0gKgotICogSW5wdXQ6CQlh cmcJLS0gcHRyIHRvIHRpbWVkIG91dCByZXF1ZXN0Ci0gKiBPdXRwdXQ6CQlOb25lCi0gKiBSZXR1 cm4gdmFsdWU6CU5vbmUKLSAqLwotc3RhdGljIFRXX1ZPSUQKLXR3YV90aW1lb3V0KFRXX1ZPSUQg KmFyZykKLXsKLQlzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dAkqcmVxID0KLQkJKHN0cnVjdCB0 d19vc2xpX3JlcV9jb250ZXh0ICopYXJnOwotCi0JdHdfY2xfY3JlYXRlX2V2ZW50KCYocmVxLT5j dGxyLT5jdGxyX2hhbmRsZSksIFRXX0NMX1RSVUUsCi0JCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZS RUVCU0RfRFJJVkVSLAotCQkweDIxMEIsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5H LAotCQkiUmVxdWVzdCB0aW1lZCBvdXQhIiwKLQkJInJlcXVlc3QgPSAlcCIsIHJlcSk7Ci0JdHdf Y2xfcmVzZXRfY3RscigmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKTsKLX0KLQotCi0KLS8qCiAg KiBGdW5jdGlvbiBuYW1lOgl0d19vc2xpX3JlcXVlc3RfYnVzX3NjYW4KICAqIERlc2NyaXB0aW9u OgkJUmVxdWVzdHMgQ0FNIGZvciBhIHNjYW4gb2YgdGhlIGJ1cy4KICAqCkBAIC01NzQsMjAgKzU1 NywzOSBAQAogCiAKIC8qCi0gKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xfY3Rscl9idXN5Ci0gKiBE ZXNjcmlwdGlvbjoJCUNMIGNhbGxzIHRoaXMgZnVuY3Rpb24gb24gY21kIHF1ZXVlIGZ1bGwgb3Ig b3RoZXJ3aXNlLAotICoJCQl3aGVuIGl0IGlzIHRvbyBidXN5IHRvIGFjY2VwdCBuZXcgcmVxdWVz dHMuCisgKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xfdGltZW91dAorICogRGVzY3JpcHRpb246CQlD YWxsIHRvIHRpbWVvdXQoKS4KICAqCi0gKiBJbnB1dDoJCWN0bHJfaGFuZGxlCS0tIHB0ciB0byBj b250cm9sbGVyIGhhbmRsZQotICoJCQlyZXFfaGFuZGxlCS0tIHB0ciB0byByZXF1ZXN0IGhhbmRs ZSBzZW50IGJ5IE9TTC4KKyAqIElucHV0OgkJcmVxX2hhbmRsZSAtLSBwdHIgdG8gcmVxdWVzdCBo YW5kbGUgc2VudCBieSBPU0wuCiAgKiBPdXRwdXQ6CQlOb25lCiAgKiBSZXR1cm4gdmFsdWU6CU5v bmUKICAqLwogVFdfVk9JRAotdHdfb3NsX2N0bHJfYnVzeShzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5k bGUgKmN0bHJfaGFuZGxlLAotCXN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKQor dHdfb3NsX3RpbWVvdXQoc3RydWN0IHR3X2NsX3JlcV9oYW5kbGUgKnJlcV9oYW5kbGUpCit7CisJ c3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9IHJlcV9oYW5kbGUtPm9zbF9yZXFfY3R4 dDsKKwl1bmlvbiBjY2IJCQkqY2NiID0gKHVuaW9uIGNjYiAqKShyZXEtPm9yaWdfcmVxKTsKKwlz dHJ1Y3QgY2NiX2hkcgkJCSpjY2JfaCA9ICYoY2NiLT5jY2JfaCk7CisKKwlyZXEtPmRlYWRsaW5l ID0gdHdfb3NsX2dldF9sb2NhbF90aW1lKCkgKyAoY2NiX2gtPnRpbWVvdXQgLyAxMDAwKTsKK30K KworCisKKy8qCisgKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xfdW50aW1lb3V0CisgKiBEZXNjcmlw dGlvbjoJCUludmVyc2Ugb2YgY2FsbCB0byB0aW1lb3V0KCkuCisgKgorICogSW5wdXQ6CQlyZXFf aGFuZGxlIC0tIHB0ciB0byByZXF1ZXN0IGhhbmRsZSBzZW50IGJ5IE9TTC4KKyAqIE91dHB1dDoJ CU5vbmUKKyAqIFJldHVybiB2YWx1ZToJTm9uZQorICovCitUV19WT0lECit0d19vc2xfdW50aW1l b3V0KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKQogewotCXR3X29zbGlfZGlz YWxsb3dfbmV3X3JlcXVlc3RzKGN0bHJfaGFuZGxlLT5vc2xfY3Rscl9jdHh0LCByZXFfaGFuZGxl KTsKKwlzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dAkqcmVxID0gcmVxX2hhbmRsZS0+b3NsX3Jl cV9jdHh0OworCisJcmVxLT5kZWFkbGluZSA9IDA7CiB9CiAKIApAQCAtNjU1LDcgKzY1Nyw3IEBA CiAKIAl0d19vc2xpX3VubWFwX3JlcXVlc3QocmVxKTsKIAotCXVudGltZW91dCh0d2FfdGltZW91 dCwgcmVxLCBjY2ItPmNjYl9oLnRpbWVvdXRfY2gpOworCXJlcS0+ZGVhZGxpbmUgPSAwOwogCWlm IChyZXEtPmVycm9yX2NvZGUpIHsKIAkJLyogVGhpcyByZXF1ZXN0IG5ldmVyIGdvdCBzdWJtaXR0 ZWQgdG8gdGhlIGZpcm13YXJlLiAqLwogCQlpZiAocmVxLT5lcnJvcl9jb2RlID09IEVCVVNZKSB7 CkBAIC02ODIsNyArNjg0LDcgQEAKIAkJCWVsc2UgaWYgKHJlcV9wa3QtPnN0YXR1cyAmIFRXX0NM X0VSUl9SRVFfU0NTSV9FUlJPUikKIAkJCQljY2ItPmNjYl9oLnN0YXR1cyB8PSBDQU1fU0NTSV9T VEFUVVNfRVJST1I7CiAJCQllbHNlIGlmIChyZXFfcGt0LT5zdGF0dXMgJiBUV19DTF9FUlJfUkVR X0JVU19SRVNFVCkKLQkJCQljY2ItPmNjYl9oLnN0YXR1cyB8PSBDQU1fU0NTSV9CVVNfUkVTRVQ7 CisJCQkJY2NiLT5jY2JfaC5zdGF0dXMgfD0gKENBTV9SRVFVRVVFX1JFUSB8IENBTV9TQ1NJX0JV U19SRVNFVCk7CiAJCQkvKgogCQkJICogSWYgbm9uZSBvZiB0aGUgYWJvdmUgZXJyb3JzIG9jY3Vy cmVkLCBzaW1wbHkKIAkJCSAqIG1hcmsgY29tcGxldGlvbiBlcnJvci4KZGlmZiAtdSBGcmVlQlNE X1JFTEVOR184X3R3YV9jdnMvdHdfb3NsX2ZyZWVic2QuYyBGcmVlQlNEOF90d2FfM184MF8wNl8w MDMvdHdfb3NsX2ZyZWVic2QuYwotLS0gRnJlZUJTRF9SRUxFTkdfOF90d2FfY3ZzL3R3X29zbF9m cmVlYnNkLmMJMjAxMC0wOC0yNiAxNTozNToyMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q4 X3R3YV8zXzgwXzA2XzAwMy90d19vc2xfZnJlZWJzZC5jCTIwMTAtMDgtMjYgMTU6MTQ6MzkuMDAw MDAwMDAwIC0wNzAwCkBAIC0xNzUsNiArMTc1LDkgQEAKIHN0YXRpYyBUV19JTlQzMgl0d2Ffc2h1 dGRvd24oZGV2aWNlX3QgZGV2KTsKIHN0YXRpYyBUV19WT0lECXR3YV9idXNkbWFfbG9jayhUV19W T0lEICpsb2NrX2FyZywgYnVzX2RtYV9sb2NrX29wX3Qgb3ApOwogc3RhdGljIFRXX1ZPSUQJdHdh X3BjaV9pbnRyKFRXX1ZPSUQgKmFyZyk7CitzdGF0aWMgVFdfVk9JRAl0d2Ffd2F0Y2hkb2coVFdf Vk9JRCAqYXJnKTsKK2ludCB0d2Ffc2V0dXBfaW50cihzdHJ1Y3QgdHdhX3NvZnRjICpzYyk7Citp bnQgdHdhX3RlYXJkb3duX2ludHIoc3RydWN0IHR3YV9zb2Z0YyAqc2MpOwogCiBzdGF0aWMgVFdf SU5UMzIJdHdfb3NsaV9hbGxvY19tZW0oc3RydWN0IHR3YV9zb2Z0YyAqc2MpOwogc3RhdGljIFRX X1ZPSUQJdHdfb3NsaV9mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgdHdhX3NvZnRjICpzYyk7CkBAIC0y MzgsNiArMjQxLDMyIEBACiAJcmV0dXJuKEVOWElPKTsKIH0KIAoraW50IHR3YV9zZXR1cF9pbnRy KHN0cnVjdCB0d2Ffc29mdGMgKnNjKQoreworCWludCBlcnJvciA9IDA7CisKKwlpZiAoIShzYy0+ aW50cl9oYW5kbGUpICYmIChzYy0+aXJxX3JlcykpIHsKKwkJZXJyb3IgPSBidXNfc2V0dXBfaW50 cihzYy0+YnVzX2Rldiwgc2MtPmlycV9yZXMsCisJCQkJCUlOVFJfVFlQRV9DQU0gfCBJTlRSX01Q U0FGRSwKKwkJCQkJTlVMTCwgdHdhX3BjaV9pbnRyLAorCQkJCQlzYywgJnNjLT5pbnRyX2hhbmRs ZSk7CisJfQorCXJldHVybiggZXJyb3IgKTsKK30KKworCitpbnQgdHdhX3RlYXJkb3duX2ludHIo c3RydWN0IHR3YV9zb2Z0YyAqc2MpCit7CisJaW50IGVycm9yID0gMDsKKworCWlmICgoc2MtPmlu dHJfaGFuZGxlKSAmJiAoc2MtPmlycV9yZXMpKSB7CisJCWVycm9yID0gYnVzX3RlYXJkb3duX2lu dHIoc2MtPmJ1c19kZXYsCisJCQkJCQlzYy0+aXJxX3Jlcywgc2MtPmludHJfaGFuZGxlKTsKKwkJ c2MtPmludHJfaGFuZGxlID0gTlVMTDsKKwl9CisJcmV0dXJuKCBlcnJvciApOworfQorCiAKIAog LyoKQEAgLTM1NCwxMCArMzgzLDcgQEAKIAkJdHdfb3NsaV9mcmVlX3Jlc291cmNlcyhzYyk7CiAJ CXJldHVybihFTlhJTyk7CiAJfQotCWlmICgoZXJyb3IgPSBidXNfc2V0dXBfaW50cihzYy0+YnVz X2Rldiwgc2MtPmlycV9yZXMsCi0JCQlJTlRSX1RZUEVfQ0FNIHwgSU5UUl9NUFNBRkUsCi0JCQlO VUxMLCB0d2FfcGNpX2ludHIsCSAgICAKLQkJCXNjLCAmc2MtPmludHJfaGFuZGxlKSkpIHsKKwlp ZiAoKGVycm9yID0gdHdhX3NldHVwX2ludHIoc2MpKSkgewogCQl0d19vc2xpX3ByaW50ZihzYywg ImVycm9yID0gJWQiLAogCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAogCQkJVFdfQ0xf TUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCkBAIC00MTIsMTAgKzQzOCw3NyBAQAogCQly ZXR1cm4oZXJyb3IpOwogCX0KIAorCXNjLT53YXRjaGRvZ19pbmRleCA9IDA7CisJY2FsbG91dF9p bml0KCYoc2MtPndhdGNoZG9nX2NhbGxvdXRbMF0pLCBDQUxMT1VUX01QU0FGRSk7CisJY2FsbG91 dF9pbml0KCYoc2MtPndhdGNoZG9nX2NhbGxvdXRbMV0pLCBDQUxMT1VUX01QU0FGRSk7CisJY2Fs bG91dF9yZXNldCgmKHNjLT53YXRjaGRvZ19jYWxsb3V0WzBdKSwgNSpoeiwgdHdhX3dhdGNoZG9n LCAmc2MtPmN0bHJfaGFuZGxlKTsKKwogCXJldHVybigwKTsKIH0KIAogCitzdGF0aWMgVFdfVk9J RAordHdhX3dhdGNoZG9nKFRXX1ZPSUQgKmFyZykKK3sKKwlzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5k bGUgKmN0bHJfaGFuZGxlID0KKwkJKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqKWFyZzsKKwlz dHJ1Y3QgdHdhX3NvZnRjCQkqc2MgPSBjdGxyX2hhbmRsZS0+b3NsX2N0bHJfY3R4dDsKKwlpbnQJ CQkJaTsKKwlpbnQJCQkJaV9uZWVkX2FfcmVzZXQgPSAwOworCWludAkJCQlkcml2ZXJfaXNfYWN0 aXZlID0gMDsKKwlpbnQJCQkJbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcgPSAxMjM0OworCVRXX1VJ TlQ2NAkJCWN1cnJlbnRfdGltZTsKKwlzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dAkqbXlfcmVx OworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJY3VycmVudF90aW1lID0gKFRXX1VJTlQ2 NCkgKHR3X29zbF9nZXRfbG9jYWxfdGltZSgpKTsKKworCWZvciAoaSA9IDA7IGkgPCBUV19PU0xJ X01BWF9OVU1fUkVRVUVTVFM7IGkrKykgeworCQlteV9yZXEgPSAmKHNjLT5yZXFfY3R4X2J1Zltp XSk7CisKKwkJaWYgKChteV9yZXEtPnN0YXRlID09IFRXX09TTElfUkVRX1NUQVRFX0JVU1kpICYm CisJCQkobXlfcmVxLT5kZWFkbGluZSkgJiYKKwkJCShteV9yZXEtPmRlYWRsaW5lIDwgY3VycmVu dF90aW1lKSkgeworCQkJdHdfY2xfc2V0X3Jlc2V0X25lZWRlZChjdGxyX2hhbmRsZSk7CisjaWZk ZWYgICAgVFdfT1NMX0RFQlVHCisJCQlkZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJSZXF1 ZXN0ICVkIHRpbWVkIG91dCEgZCA9ICVwLCBjID0gJXBcbiIsIGksICh2b2lkKilteV9yZXEtPmRl YWRsaW5lLCAodm9pZCopY3VycmVudF90aW1lKTsKKyNlbHNlICAvKiBUV19PU0xfREVCVUcgKi8K KwkJCWRldmljZV9wcmludGYoKHNjKS0+YnVzX2RldiwgIlJlcXVlc3QgJWQgdGltZWQgb3V0IVxu IiwgaSk7CisjZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCisJCQlicmVhazsKKwkJfQorCX0KKy8v PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisKKwlpX25lZWRfYV9yZXNldCA9IHR3X2NsX2lzX3Jlc2V0 X25lZWRlZChjdGxyX2hhbmRsZSk7CisKKwlpID0gKGludCkgKChzYy0+d2F0Y2hkb2dfaW5kZXgr KykgJiAxKTsKKworCWRyaXZlcl9pc19hY3RpdmUgPSB0d19jbF9pc19hY3RpdmUoY3Rscl9oYW5k bGUpOworCisJaWYgKGlfbmVlZF9hX3Jlc2V0KSB7CisjaWZkZWYgICAgVFdfT1NMX0RFQlVHCisJ CWRldmljZV9wcmludGYoKHNjKS0+YnVzX2RldiwgIldhdGNoZG9nIHJlc2NoZWR1bGVkIGluIDcw IHNlY29uZHNcbiIpOworI2VuZGlmIC8qIFRXX09TTF9ERUJVRyAqLworCQlteV93YXRjaGRvZ193 YXNfcGVuZGluZyA9CisJCQljYWxsb3V0X3Jlc2V0KCYoc2MtPndhdGNoZG9nX2NhbGxvdXRbaV0p LCA3MCpoeiwgdHdhX3dhdGNoZG9nLCAmc2MtPmN0bHJfaGFuZGxlKTsKKwkJdHdfY2xfcmVzZXRf Y3RscihjdGxyX2hhbmRsZSk7CisjaWZkZWYgICAgVFdfT1NMX0RFQlVHCisJCWRldmljZV9wcmlu dGYoKHNjKS0+YnVzX2RldiwgIldhdGNoZG9nIHJlc2V0IGNvbXBsZXRlZCFcbiIpOworI2VuZGlm IC8qIFRXX09TTF9ERUJVRyAqLworCX0gZWxzZSBpZiAoZHJpdmVyX2lzX2FjdGl2ZSkgeworCQlt eV93YXRjaGRvZ193YXNfcGVuZGluZyA9CisJCQljYWxsb3V0X3Jlc2V0KCYoc2MtPndhdGNoZG9n X2NhbGxvdXRbaV0pLCAgNSpoeiwgdHdhX3dhdGNoZG9nLCAmc2MtPmN0bHJfaGFuZGxlKTsKKwl9 CisjaWZkZWYgICAgVFdfT1NMX0RFQlVHCisJaWYgKGlfbmVlZF9hX3Jlc2V0IHx8IG15X3dhdGNo ZG9nX3dhc19wZW5kaW5nKQorCQlkZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJpX25lZWRf YV9yZXNldCA9ICVkLCAiCisJCSJkcml2ZXJfaXNfYWN0aXZlID0gJWQsIG15X3dhdGNoZG9nX3dh c19wZW5kaW5nID0gJWRcbiIsCisJCWlfbmVlZF9hX3Jlc2V0LCBkcml2ZXJfaXNfYWN0aXZlLCBt eV93YXRjaGRvZ193YXNfcGVuZGluZyk7CisjZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCit9CisK IAogLyoKICAqIEZ1bmN0aW9uIG5hbWU6CXR3X29zbGlfYWxsb2NfbWVtCkBAIC03MTUsOSArODA4 LDcgQEAKIAogCiAJLyogRGlzY29ubmVjdCB0aGUgaW50ZXJydXB0IGhhbmRsZXIuICovCi0JaWYg KHNjLT5pbnRyX2hhbmRsZSkKLQkJaWYgKChlcnJvciA9IGJ1c190ZWFyZG93bl9pbnRyKHNjLT5i dXNfZGV2LAotCQkJCXNjLT5pcnFfcmVzLCBzYy0+aW50cl9oYW5kbGUpKSkKKwlpZiAoKGVycm9y ID0gdHdhX3RlYXJkb3duX2ludHIoc2MpKSkKIAkJCXR3X29zbGlfZGJnX2RwcmludGYoMSwgc2Ms CiAJCQkJInRlYXJkb3duX2ludHIgcmV0dXJuZWQgJWQiLCBlcnJvcik7CiAKQEAgLTgwOSw2ICs5 MDAsMTMgQEAKIAogCXR3X29zbGlfZGJnX2RwcmludGYoMywgc2MsICJlbnRlcmVkIik7CiAKKwkv KiBTdG9wIHdhdGNoZG9nIHRhc2suICovCisJY2FsbG91dF9kcmFpbigmKHNjLT53YXRjaGRvZ19j YWxsb3V0WzBdKSk7CisJY2FsbG91dF9kcmFpbigmKHNjLT53YXRjaGRvZ19jYWxsb3V0WzFdKSk7 CisKKwkvKiBEaXNjb25uZWN0IGludGVycnVwdHMuICovCisJZXJyb3IgPSB0d2FfdGVhcmRvd25f aW50cihzYyk7CisKIAkvKiBEaXNjb25uZWN0IGZyb20gdGhlIGNvbnRyb2xsZXIuICovCiAJaWYg KChlcnJvciA9IHR3X2NsX3NodXRkb3duX2N0bHIoJihzYy0+Y3Rscl9oYW5kbGUpLCAwKSkpIHsK IAkJdHdfb3NsaV9wcmludGYoc2MsICJlcnJvciA9ICVkIiwKQEAgLTk5NywzMyArMTA5NSwzNSBA QAogCQkJCWVycm9yID0gMDsgLyogRmFsc2UgZXJyb3IgKi8KIAkJCQlicmVhazsKIAkJCX0KLQkJ CXR3X29zbGlfcHJpbnRmKHNjLCAicmVxdWVzdCA9ICVwIiwKLQkJCQlUV19DTF9TRVZFUklUWV9F UlJPUl9TVFJJTkcsCi0JCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCi0J CQkJMHgyMDE4LAotCQkJCSJQYXNzdGhydSByZXF1ZXN0IHRpbWVkIG91dCEiLAotCQkJCXJlcSk7 Ci0JCQkvKgotCQkJICogU2hvdWxkIEkgY2hlY2sgaGVyZSBpZiB0aGUgdGltZW91dCBoYXBwZW5l ZAotCQkJICogYmVjYXVzZSBvZiB5ZXQgYW5vdGhlciByZXNldCwgYW5kIG5vdCBkbyBhCi0JCQkg KiBzZWNvbmQgcmVzZXQ/Ci0JCQkgKi8KLQkJCXR3X2NsX3Jlc2V0X2N0bHIoJnNjLT5jdGxyX2hh bmRsZSk7CisJCQlpZiAoISh0d19jbF9pc19yZXNldF9uZWVkZWQoJihyZXEtPmN0bHItPmN0bHJf aGFuZGxlKSkpKSB7CisjaWZkZWYgICAgVFdfT1NMX0RFQlVHCisJCQkJdHdfb3NsaV9wcmludGYo c2MsICJyZXF1ZXN0ID0gJXAiLAorCQkJCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCisJ CQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLAorCQkJCQkweDIwMTgsCisJ CQkJCSJQYXNzdGhydSByZXF1ZXN0IHRpbWVkIG91dCEiLAorCQkJCQlyZXEpOworI2Vsc2UgIC8q IFRXX09TTF9ERUJVRyAqLworCQkJZGV2aWNlX3ByaW50Zigoc2MpLT5idXNfZGV2LCAiUGFzc3Ro cnUgcmVxdWVzdCB0aW1lZCBvdXQhXG4iKTsKKyNlbmRpZiAvKiBUV19PU0xfREVCVUcgKi8KKwkJ CQl0d19jbF9yZXNldF9jdGxyKCYocmVxLT5jdGxyLT5jdGxyX2hhbmRsZSkpOworCQkJfQorCisJ CQllcnJvciA9IDA7CisJCQllbmRfdGltZSA9IHR3X29zbF9nZXRfbG9jYWxfdGltZSgpICsgdGlt ZW91dDsKKwkJCWNvbnRpbnVlOwogCQkJLyoKIAkJCSAqIERvbid0IHRvdWNoIHJlcSBhZnRlciBh IHJlc2V0LiAgSXQgKGFuZCBhbnkKLQkJCSAqIGFzc29jaWF0ZWQgZGF0YSkgd2lsbCBhbHJlYWR5 IGhhdmUgYmVlbgorCQkJICogYXNzb2NpYXRlZCBkYXRhKSB3aWxsIGJlCiAJCQkgKiB1bm1hcHBl ZCBieSB0aGUgY2FsbGJhY2suCiAJCQkgKi8KLQkJCXVzZXJfYnVmLT5kcml2ZXJfcGt0Lm9zX3N0 YXR1cyA9IGVycm9yOwotCQkJZXJyb3IgPSBFVElNRURPVVQ7Ci0JCQlnb3RvIGZ3X3Bhc3N0aHJ1 X2VycjsKIAkJfQogCQkvKiAKIAkJICogRWl0aGVyIHRoZSByZXF1ZXN0IGdvdCBjb21wbGV0ZWQs IG9yIHdlIHdlcmUgd29rZW4gdXAgYnkgYQogCQkgKiBzaWduYWwuICBDYWxjdWxhdGUgdGhlIG5l dyB0aW1lb3V0LCBpbiBjYXNlIGl0IHdhcyB0aGUgbGF0dGVyLgogCQkgKi8KIAkJdGltZW91dCA9 IChlbmRfdGltZSAtIHR3X29zbF9nZXRfbG9jYWxfdGltZSgpKTsKLQl9CisJfSAvKiBFbmQgb2Yg d2hpbGUgbG9vcCAqLwogCiAJLyogSWYgdGhlcmUgd2FzIGEgcGF5bG9hZCwgY29weSBpdCBiYWNr LiAqLwogCWlmICgoIWVycm9yKSAmJiAocmVxLT5sZW5ndGgpKQpAQCAtMTAzNywxOSArMTEzNyw5 IEBACiAJCQkJZXJyb3IpOwogCQogZndfcGFzc3RocnVfZXJyOgotCS8qCi0JICogUHJpbnQgdGhl IGZhaWx1cmUgbWVzc2FnZS4gIEZvciBzb21lIHJlYXNvbiwgb24gY2VydGFpbiBPUyB2ZXJzaW9u cywKLQkgKiBwcmludGluZyB0aGlzIGVycm9yIG1lc3NhZ2UgZHVyaW5nIHJlc2V0IGhhbmdzIHRo ZSBkaXNwbGF5IChhbHRob3VnaAotCSAqIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gaXMgcnVubmlu ZyBmaW5lLiAgU28sIGRvbid0IHByaW50IGl0IGlmIHRoZQotCSAqIGZhaWx1cmUgd2FzIGR1ZSB0 byBhIHJlc2V0LgotCSAqLwotCWlmICgoZXJyb3IpICYmIChlcnJvciAhPSBUV19DTF9FUlJfUkVR X0JVU19SRVNFVCkpCi0JCXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAlZCIsCQkKLQkJCVRX X0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVC U0RfRFJJVkVSLAotCQkJMHgyMDFBLAotCQkJIkZpcm13YXJlIHBhc3N0aHJ1IGZhaWxlZCEiLAot CQkJZXJyb3IpOworCisJaWYgKHJlcV9wa3QtPnN0YXR1cyA9PSBUV19DTF9FUlJfUkVRX0JVU19S RVNFVCkKKwkJZXJyb3IgPSBFQlVTWTsKIAogCXVzZXJfYnVmLT5kcml2ZXJfcGt0Lm9zX3N0YXR1 cyA9IGVycm9yOwogCS8qIEZyZWUgcmVzb3VyY2VzLiAqLwpAQCAtMTA3Myw2ICsxMTYzLDggQEAK IHR3X29zbF9jb21wbGV0ZV9wYXNzdGhydShzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVxX2hh bmRsZSkKIHsKIAlzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dAkqcmVxID0gcmVxX2hhbmRsZS0+ b3NsX3JlcV9jdHh0OworCXN0cnVjdCB0d19jbF9yZXFfcGFja2V0CQkqcmVxX3BrdCA9CisJCShz dHJ1Y3QgdHdfY2xfcmVxX3BhY2tldCAqKSgmcmVxLT5yZXFfcGt0KTsKIAlzdHJ1Y3QgdHdhX3Nv ZnRjCQkqc2MgPSByZXEtPmN0bHI7CiAKIAl0d19vc2xpX2RiZ19kcHJpbnRmKDUsIHNjLCAiZW50 ZXJlZCIpOwpAQCAtMTEyMCw2ICsxMjEyLDkgQEAKIAkJCWlmIChyZXEtPmZsYWdzICYgVFdfT1NM SV9SRVFfRkxBR1NfTUFQUEVEKQogCQkJCXJldHVybjsKIAorCQkJaWYgKHJlcV9wa3QtPnN0YXR1 cyA9PSBUV19DTF9FUlJfUkVRX0JVU19SRVNFVCkKKwkJCQlyZXR1cm47CisKIAkJCXR3X29zbGlf cHJpbnRmKHNjLCAicmVxdWVzdCA9ICVwIiwKIAkJCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJ TkcsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCkBAIC0xMTY2LDYg KzEyNjEsNyBAQAogCQlyZXEtPnJlcV9oYW5kbGUuaXNfaW8gPSAwOwogCQlyZXEtPmRhdGEgPSBO VUxMOwogCQlyZXEtPmxlbmd0aCA9IDA7CisJCXJlcS0+ZGVhZGxpbmUgPSAwOwogCQlyZXEtPnJl YWxfZGF0YSA9IE5VTEw7CiAJCXJlcS0+cmVhbF9sZW5ndGggPSAwOwogCQlyZXEtPnN0YXRlID0g VFdfT1NMSV9SRVFfU1RBVEVfSU5JVDsvKiByZXEgYmVpbmcgaW5pdGlhbGl6ZWQgKi8KQEAgLTEy MDcsNiArMTMwMywxMSBAQAogCiAJdHdfb3NsaV9kYmdfZHByaW50ZigxMCwgc2MsICJlbnRlcmVk Iik7CiAKKwlpZiAoZXJyb3IgPT0gRUlOVkFMKSB7CisJCXJlcS0+ZXJyb3JfY29kZSA9IGVycm9y OworCQlyZXR1cm47CisJfQorCiAJLyogTWFyayB0aGUgcmVxdWVzdCBhcyBjdXJyZW50bHkgYmVp bmcgcHJvY2Vzc2VkLiAqLwogCXJlcS0+c3RhdGUgPSBUV19PU0xJX1JFUV9TVEFURV9CVVNZOwog CS8qIE1vdmUgdGhlIHJlcXVlc3QgaW50byB0aGUgYnVzeSBxdWV1ZS4gKi8KQEAgLTE0MDAsNiAr MTUwMSwxNCBAQAogCQkJCW10eF91bmxvY2tfc3BpbihzYy0+aW9fbG9jayk7CiAJCQkJZXJyb3Ig PSAwOwogCQkJfSBlbHNlIHsKKwkJCQl0d19vc2xpX3ByaW50ZihzYywgImVycm9yID0gJWQiLAor CQkJCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCisJCQkJCVRXX0NMX01FU1NBR0VfU09V UkNFX0ZSRUVCU0RfRFJJVkVSLAorCQkJCQkweDk5OTksCisJCQkJCSJGYWlsZWQgdG8gbWFwIERN QSBtZW1vcnkgIgorCQkJCQkiZm9yIEkvTyByZXF1ZXN0IiwKKwkJCQkJZXJyb3IpOworCQkJCXJl cS0+ZmxhZ3MgfD0gVFdfT1NMSV9SRVFfRkxBR1NfRkFJTEVEOwogCQkJCS8qIEZyZWUgYWxpZ25t ZW50IGJ1ZmZlciBpZiBpdCB3YXMgdXNlZC4gKi8KIAkJCQlpZiAocmVxLT5mbGFncyAmCiAJCQkJ CVRXX09TTElfUkVRX0ZMQUdTX0RBVEFfQ09QWV9ORUVERUQpIHsKZGlmZiAtdSBGcmVlQlNEX1JF TEVOR184X3R3YV9jdnMvdHdfb3NsX3NoYXJlLmggRnJlZUJTRDhfdHdhXzNfODBfMDZfMDAzL3R3 X29zbF9zaGFyZS5oCi0tLSBGcmVlQlNEX1JFTEVOR184X3R3YV9jdnMvdHdfb3NsX3NoYXJlLmgJ MjAxMC0wOC0yNiAxNTozNToyMC4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Q4X3R3YV8zXzgw XzA2XzAwMy90d19vc2xfc2hhcmUuaAkyMDEwLTA4LTI0IDE4OjAxOjQ0LjAwMDAwMDAwMCAtMDcw MApAQCAtNzUsNyArNzUsNyBAQAogI2RlZmluZSBUV19PU0xfRU5DTE9TVVJFX1NVUFBPUlQKICNl bmRpZgogCi0jZGVmaW5lIFRXX09TTF9EUklWRVJfVkVSU0lPTl9TVFJJTkcJIjMuODAuMDYuMDAy IgorI2RlZmluZSBUV19PU0xfRFJJVkVSX1ZFUlNJT05fU1RSSU5HCSIzLjgwLjA2LjAwMyIKIAog I2RlZmluZQlUV19PU0xfQ0FOX1NMRUVQCiAK --_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Bcosmail03lsicom_--