Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Aug 2010 13:10:53 -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:  <27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504B@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_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_--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504B>