Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Aug 2010 13:10:56 -0600
From:      "Couch, Tom" <Tom.Couch@lsi.com>
To:        "FreeBSD-gnats-submit@FreeBSD.org" <FreeBSD-gnats-submit@FreeBSD.org>, "freebsd-bugs@FreeBSD.org" <freebsd-bugs@FreeBSD.org>
Subject:   RE: kern/149968: Kernel panic with ZFS and twa version 3.80.06.002
Message-ID:  <27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504C@cosmail03.lsi.com>
In-Reply-To: <201008251830.o7PIU6fK019184@freefall.freebsd.org>
References:  Your message of Wed, 25 Aug 2010 18:28:49 GMT <201008251828.o7PISnUL062450@www.freebsd.org> <201008251830.o7PIU6fK019184@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Ccosmail03lsicom_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Attaching patch FreeBSD_RELENG_7_src_sys_dev_twa.txt for RELENG_7.

Tom Couch



-----Original Message-----
From: FreeBSD-gnats-submit@FreeBSD.org [mailto:FreeBSD-gnats-submit@FreeBSD=
.org]=20
Sent: Wednesday, August 25, 2010 11:30 AM
To: Couch, Tom
Subject: Re: kern/149968: Kernel panic with ZFS and twa version 3.80.06.002

Thank you very much for your problem report.
It has the internal identification `kern/149968'.
The individual assigned to look at your
report is: freebsd-bugs.=20

You can access the state of your problem report at any time
via this link:

http://www.freebsd.org/cgi/query-pr.cgi?pr=3D149968

>Category:       kern
>Responsible:    freebsd-bugs
>Synopsis:       Kernel panic with ZFS and twa version 3.80.06.002
>Arrival-Date:   Wed Aug 25 18:30:06 UTC 2010

--_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Ccosmail03lsicom_
Content-Type: text/plain; name="FreeBSD_RELENG_7_src_sys_dev_twa.txt"
Content-Description: FreeBSD_RELENG_7_src_sys_dev_twa.txt
Content-Disposition: attachment;
	filename="FreeBSD_RELENG_7_src_sys_dev_twa.txt"; size=45377;
	creation-date="Thu, 26 Aug 2010 16:56:26 GMT";
	modification-date="Thu, 26 Aug 2010 16:56:26 GMT"
Content-Transfer-Encoding: base64

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

--_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Ccosmail03lsicom_--



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