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

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

Attaching patch FreeBSD_HEAD_src_sys_dev_twa.txt for HEAD (MAIN).

Tom Couch



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

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

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

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

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

--_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Acosmail03lsicom_
Content-Type: text/plain; name="FreeBSD_HEAD_src_sys_dev_twa.txt"
Content-Description: FreeBSD_HEAD_src_sys_dev_twa.txt
Content-Disposition: attachment;
	filename="FreeBSD_HEAD_src_sys_dev_twa.txt"; size=43585;
	creation-date="Thu, 26 Aug 2010 16:55:26 GMT";
	modification-date="Thu, 26 Aug 2010 16:55:26 GMT"
Content-Transfer-Encoding: base64

ZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19jbC5oIEZyZWVCU0RfSEVBRF90d2FfM184
MF8wNl8wMDMvdHdfY2wuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2wuaAkyMDEwLTA4
LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAorKysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2
XzAwMy90d19jbC5oCTIwMTAtMDgtMjQgMTg6MDI6MTIuMDAwMDAwMDAwIC0wNzAwCkBAIC04OCw3
ICs4OCw4IEBACiAjZGVmaW5lIFRXX0NMSV9CVVNZX1EJCTEJLyogcSBvZiByZXFzIHN1Ym1pdHRl
ZCB0byBmdyAqLwogI2RlZmluZSBUV19DTElfUEVORElOR19RCTIJLyogcSBvZiByZXFzIGRlZmVy
cmVkIGR1ZSB0byAncSBmdWxsJyAqLwogI2RlZmluZSBUV19DTElfQ09NUExFVEVfUQkzCS8qIHEg
b2YgcmVxcyBjb21wbGV0ZWQgYnkgZncgKi8KLSNkZWZpbmUgVFdfQ0xJX1FfQ09VTlQJCTQJLyog
dG90YWwgbnVtYmVyIG9mIHF1ZXVlcyAqLworI2RlZmluZSBUV19DTElfUkVTRVRfUQkJNAkvKiBx
IG9mIHJlcXMgcmVzZXQgYnkgdGltZW91dCAqLworI2RlZmluZSBUV19DTElfUV9DT1VOVAkJNQkv
KiB0b3RhbCBudW1iZXIgb2YgcXVldWVzICovCiAKIAogLyogQ0wncyBpbnRlcm5hbCByZXF1ZXN0
IGNvbnRleHQuICovCkBAIC0xMzMsNiArMTM0LDcgQEAKIAlUV19VSU5UOCAJCWludGVycnVwdHNf
ZW5hYmxlZDsJICAvKiBJbnRlcnJ1cHRzIG9uIGNvbnRyb2xsZXIgZW5hYmxlZC4gKi8KIAlUV19V
SU5UOCAJCWludGVybmFsX3JlcV9idXN5OwkgIC8qIERhdGEgYnVmZmVyIGZvciBpbnRlcm5hbCBy
ZXF1ZXN0cyBpbiB1c2UuICovCiAJVFdfVUlOVDggCQlnZXRfbW9yZV9hZW5zOwkJICAvKiBNb3Jl
IEFFTidzIG5lZWQgdG8gYmUgcmV0cmlldmVkLiAqLworCVRXX1VJTlQ4IAkJcmVzZXRfbmVlZGVk
OwkJICAvKiBDb250cm9sbGVyIG5lZWRzIGEgc29mdCByZXNldC4gKi8KIAlUV19VSU5UOCAJCXJl
c2V0X2luX3Byb2dyZXNzOwkgIC8qIENvbnRyb2xsZXIgaXMgYmVpbmcgcmVzZXQuICovCiAJVFdf
VUlOVDggCQlyZXNldF9waGFzZTFfaW5fcHJvZ3Jlc3M7IC8qIEluICdwaGFzZSAxJyBvZiByZXNl
dC4gKi8KIAlUV19VSU5UMzIJCWZsYWdzOwkJLyogY29udHJvbGxlciBzZXR0aW5ncyAqLwpkaWZm
IC11IEZyZWVCU0RfSEVBRF90d2FfY3ZzL3R3X2NsX2V4dGVybnMuaCBGcmVlQlNEX0hFQURfdHdh
XzNfODBfMDZfMDAzL3R3X2NsX2V4dGVybnMuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdf
Y2xfZXh0ZXJucy5oCTIwMTAtMDgtMjYgMTU6MzQ6MzMuMDAwMDAwMDAwIC0wNzAwCisrKyBGcmVl
QlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2V4dGVybnMuaAkyMDEwLTA4LTI0IDE4OjAy
OjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtODYsNiArODYsOCBAQAogCiAvKiBTb2Z0IHJlc2V0IHRo
ZSBjb250cm9sbGVyLiAqLwogZXh0ZXJuIFRXX0lOVDMyCXR3X2NsaV9zb2Z0X3Jlc2V0KHN0cnVj
dCB0d19jbGlfY3Rscl9jb250ZXh0ICpjdGxyKTsKK2V4dGVybiBpbnQgdHdhX3NldHVwX2ludHIo
c3RydWN0IHR3YV9zb2Z0YyAqc2MpOworZXh0ZXJuIGludCB0d2FfdGVhcmRvd25faW50cihzdHJ1
Y3QgdHdhX3NvZnRjICpzYyk7CiAKIC8qIFNlbmQgZG93biBhIFNDU0kgY29tbWFuZCB0byB0aGUg
ZmlybXdhcmUgKHVzdWFsbHksIGFuIGludGVybmFsIFJlcSBTZW5zZS4gKi8KIGV4dGVybiBUV19J
TlQzMgl0d19jbGlfc2VuZF9zY3NpX2NtZChzdHJ1Y3QgdHdfY2xpX3JlcV9jb250ZXh0ICpyZXEs
CmRpZmYgLXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2xfZndpZi5oIEZyZWVCU0RfSEVBRF90
d2FfM184MF8wNl8wMDMvdHdfY2xfZndpZi5oCi0tLSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19j
bF9md2lmLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Rf
SEVBRF90d2FfM184MF8wNl8wMDMvdHdfY2xfZndpZi5oCTIwMTAtMDgtMjQgMTg6MDI6MTIuMDAw
MDAwMDAwIC0wNzAwCkBAIC04OSw3ICs4OSw3IEBACiAjZGVmaW5lIFRXQV9TVEFUVVNfTUlOT1Jf
VkVSU0lPTl9NQVNLCQkweDBGMDAwMDAwCiAjZGVmaW5lIFRXQV9TVEFUVVNfTUFKT1JfVkVSU0lP
Tl9NQVNLCQkweEYwMDAwMDAwCiAKLSNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJ
CTB4MDBGMDAwMDAKKyNkZWZpbmUgVFdBX1NUQVRVU19VTkVYUEVDVEVEX0JJVFMJCTB4MDBEMDAw
MDAKIAogCiAvKiBQQ0kgcmVsYXRlZCBkZWZpbmVzLiAqLwpkaWZmIC11IEZyZWVCU0RfSEVBRF90
d2FfY3ZzL3R3X2NsX2luaXQuYyBGcmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2lu
aXQuYwotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2xfaW5pdC5jCTIwMTAtMDgtMjYgMTU6
MzQ6MzMuMDAwMDAwMDAwIC0wNzAwCisrKyBGcmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3
X2NsX2luaXQuYwkyMDEwLTA4LTI0IDE4OjAyOjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtMzE1LDYg
KzMxNSw3IEBACiAJdHdfY2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX0JVU1lfUSk7CiAJdHdf
Y2xpX3JlcV9xX2luaXQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSk7CiAJdHdfY2xpX3JlcV9xX2lu
aXQoY3RsciwgVFdfQ0xJX0NPTVBMRVRFX1EpOworCXR3X2NsaV9yZXFfcV9pbml0KGN0bHIsIFRX
X0NMSV9SRVNFVF9RKTsKIAogCS8qIEluaXRpYWxpemUgYWxsIGxvY2tzIHVzZWQgYnkgQ0wuICov
CiAJY3Rsci0+Z2VuX2xvY2sgPSAmKGN0bHItPmdlbl9sb2NrX2hhbmRsZSk7CkBAIC02NzUsMTUg
KzY3NiwxNCBAQAogCS8qIFN1Ym1pdCB0aGUgY29tbWFuZCwgYW5kIHdhaXQgZm9yIGl0IHRvIGNv
bXBsZXRlLiAqLwogCWVycm9yID0gdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwK
IAkJVFdfQ0xJX1JFUVVFU1RfVElNRU9VVF9QRVJJT0QpOwotCWlmIChlcnJvciA9PSBUV19PU0xf
RVRJTUVET1VUKQotCQkvKiBDbGVhbi11cCBkb25lIGJ5IHR3X2NsaV9zdWJtaXRfYW5kX3BvbGxf
cmVxdWVzdC4gKi8KLQkJcmV0dXJuKGVycm9yKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0Owog
CWlmICgoZXJyb3IgPSBpbml0X2Nvbm5lY3QtPnN0YXR1cykpIHsKKyNpZiAgICAgICAwCiAJCXR3
X2NsaV9jcmVhdGVfY3Rscl9ldmVudChjdGxyLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09O
VFJPTExFUl9FUlJPUiwKIAkJCSYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjZW5kaWYgLy8g
MAogCQlnb3RvIG91dDsKIAl9CiAJaWYgKHNldF9mZWF0dXJlcyAmIFRXQV9FWFRFTkRFRF9JTklU
X0NPTk5FQ1QpIHsKZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19jbF9pbnRyLmMgRnJl
ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9pbnRyLmMKLS0tIEZyZWVCU0RfSEVBRF90
d2FfY3ZzL3R3X2NsX2ludHIuYwkyMDEwLTA4LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAor
KysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9pbnRyLmMJMjAxMC0wOC0yNCAx
ODowMjoxMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTI0OCw4ICsyNDgsNyBAQAogI2lmZGVmIFRXX09T
TF9ERUJVRwogCQkJdHdfY2xfcHJpbnRfY3Rscl9zdGF0cyhjdGxyLT5jdGxyX2hhbmRsZSk7CiAj
ZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCi0JCQl0d19jbF9yZXNldF9jdGxyKGN0bHItPmN0bHJf
aGFuZGxlKTsKLQkJCXJldHVybihUV19PU0xfRUlPKTsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJ
LyoKQEAgLTQwMiw5ICs0MDEsNyBAQAogI2lmZGVmIFRXX09TTF9ERUJVRwogCQl0d19jbF9wcmlu
dF9jdGxyX3N0YXRzKGN0bHItPmN0bHJfaGFuZGxlKTsKICNlbmRpZiAvKiBUV19PU0xfREVCVUcg
Ki8KLQkJdHdfY2xfcmVzZXRfY3RscihjdGxyLT5jdGxyX2hhbmRsZSk7Ci0JCXJlcV9wa3QtPnN0
YXR1cyA9IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuOwog
CX0KIAogCWlmIChyZXEtPmZsYWdzICYgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSkgewpAQCAt
NDgzLDYgKzQ4MCw3IEBACiAJCQljZGJbOF0sIGNkYls5XSwgY2RiWzEwXSwgY2RiWzExXSwKIAkJ
CWNkYlsxMl0sIGNkYlsxM10sIGNkYlsxNF0sIGNkYlsxNV0pOwogCisjaWYgICAgICAgMAogCQkv
KiAKIAkJICogUHJpbnQgdGhlIGVycm9yLiBGaXJtd2FyZSBkb2Vzbid0IHlldCBzdXBwb3J0CiAJ
CSAqIHRoZSAnTW9kZSBTZW5zZScgY21kLiAgRG9uJ3QgcHJpbnQgaWYgdGhlIGNtZApAQCAtNDkz
LDYgKzQ5MSw3IEBACiAJCQl0d19jbGlfY3JlYXRlX2N0bHJfZXZlbnQocmVxLT5jdGxyLAogCQkJ
CVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTlRST0xMRVJfRVJST1IsCiAJCQkJY21kX2hkcik7Cisj
ZW5kaWYgLy8gMAogCX0KIAogCWlmIChzY3NpX3JlcS0+c2Vuc2VfZGF0YSkgewpAQCAtNTMwLDkg
KzUyOSwxMSBAQAogCSAqLwogCWlmICghIHJlcS0+ZXJyb3JfY29kZSkKIAkJaWYgKGNtZC0+cGFy
YW0uc3RhdHVzKSB7CisjaWYgICAgICAgMAogCQkJdHdfY2xpX2NyZWF0ZV9jdGxyX2V2ZW50KGN0
bHIsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09OVFJPTExFUl9FUlJPUiwKIAkJCQkmKHJl
cS0+Y21kX3BrdC0+Y21kX2hkcikpOworI2VuZGlmIC8vIDAKIAkJCXR3X2NsX2NyZWF0ZV9ldmVu
dChjdGxyLT5jdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VS
Q0VfQ09NTU9OX0xBWUVSX0VSUk9SLAogCQkJCTB4MTIwNCwgMHgxLCBUV19DTF9TRVZFUklUWV9F
UlJPUl9TVFJJTkcsCkBAIC01OTAsOSArNTkxLDExIEBACiAJCWlmICgoZXJyb3IgPSBjbWQtPnN0
YXR1cykpIHsKIAkJCWNtZF9oZHIgPSAoc3RydWN0IHR3X2NsX2NvbW1hbmRfaGVhZGVyICopCiAJ
CQkJKCYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjaWYgICAgICAgMAogCQkJdHdfY2xpX2Ny
ZWF0ZV9jdGxyX2V2ZW50KGN0bHIsCiAJCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09OVFJPTExF
Ul9FUlJPUiwKIAkJCQljbWRfaGRyKTsKKyNlbmRpZiAvLyAwCiAJCQl0d19jbF9jcmVhdGVfZXZl
bnQoY3Rsci0+Y3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQkJCVRXX0NMX01FU1NBR0VfU09V
UkNFX0NPTU1PTl9MQVlFUl9FUlJPUiwKIAkJCQkweDEyMDYsIDB4MSwgVFdfQ0xfU0VWRVJJVFlf
RVJST1JfU1RSSU5HLApkaWZmIC11IEZyZWVCU0RfSEVBRF90d2FfY3ZzL3R3X2NsX2lvLmMgRnJl
ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9pby5jCi0tLSBGcmVlQlNEX0hFQURfdHdh
X2N2cy90d19jbF9pby5jCTIwMTAtMDgtMjYgMTU6MzQ6MzMuMDAwMDAwMDAwIC0wNzAwCisrKyBG
cmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX2lvLmMJMjAxMC0wOC0yNCAxODowMjox
Mi4wMDAwMDAwMDAgLTA3MDAKQEAgLTc0LDE4ICs3NCwxMiBAQAogCXN0cnVjdCB0d19jbGlfcmVx
X2NvbnRleHQJCSpyZXE7CiAJc3RydWN0IHR3X2NsX2NvbW1hbmRfOWsJCQkqY21kOwogCXN0cnVj
dCB0d19jbF9zY3NpX3JlcV9wYWNrZXQJCSpzY3NpX3JlcTsKLQlUV19JTlQzMgkJCQllcnJvcjsK
KwlUV19JTlQzMgkJCQllcnJvciA9IFRXX0NMX0VSUl9SRVFfU1VDQ0VTUzsKIAogCXR3X2NsaV9k
YmdfcHJpbnRmKDEwLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7
CiAKIAljdGxyID0gKHN0cnVjdCB0d19jbGlfY3Rscl9jb250ZXh0ICopKGN0bHJfaGFuZGxlLT5j
bF9jdGxyX2N0eHQpOwogCi0JaWYgKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSB7Ci0JCXR3X2Ns
aV9kYmdfcHJpbnRmKDIsIGN0bHJfaGFuZGxlLCB0d19vc2xfY3VyX2Z1bmMoKSwKLQkJCSJJL08g
ZHVyaW5nIHJlc2V0OiByZXR1cm5pbmcgYnVzeS4iKTsKLQkJcmV0dXJuKFRXX09TTF9FQlVTWSk7
Ci0JfQotCiAJLyoKIAkgKiBJZiB3b3JraW5nIHdpdGggYSBmaXJtd2FyZSB2ZXJzaW9uIHRoYXQg
ZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZQogCSAqIGx1bnMsIGFuZCB0aGlzIHJlcXVlc3QgaXMg
ZGlyZWN0ZWQgYXQgYSBub24temVybyBsdW4sIGVycm9yIGl0CkBAIC0xNDUsNyArMTM5LDEyIEBA
CiAJCQljbWQtPnNnX2xpc3QsIHNjc2lfcmVxLT5zZ2xfZW50cmllcyk7CiAJfQogCi0JaWYgKChl
cnJvciA9IHR3X2NsaV9zdWJtaXRfY21kKHJlcSkpKSB7CisJaWYgKCgoVFdfQ0xfUV9GSVJTVF9J
VEVNKCYoY3Rsci0+cmVxX3FfaGVhZFtUV19DTElfUEVORElOR19RXSkpKSAhPSBUV19DTF9OVUxM
KSB8fAorCQkoY3Rsci0+cmVzZXRfaW5fcHJvZ3Jlc3MpKSB7CisJCXR3X2NsaV9yZXFfcV9pbnNl
cnRfdGFpbChyZXEsIFRXX0NMSV9QRU5ESU5HX1EpOworCQlUV19DTElfV1JJVEVfQ09OVFJPTF9S
RUdJU1RFUihjdGxyX2hhbmRsZSwKKwkJCVRXQV9DT05UUk9MX1VOTUFTS19DT01NQU5EX0lOVEVS
UlVQVCk7CisJfSBlbHNlIGlmICgoZXJyb3IgPSB0d19jbGlfc3VibWl0X2NtZChyZXEpKSkgewog
CQl0d19jbGlfZGJnX3ByaW50ZigyLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksCiAJ
CQkiQ291bGQgbm90IHN0YXJ0IHJlcXVlc3QuIHJlcXVlc3QgPSAlcCwgZXJyb3IgPSAlZCIsCiAJ
CQlyZXEsIGVycm9yKTsKQEAgLTE3MSw3ICsxNzAsNyBAQAogCXN0cnVjdCB0d19jbGlfY3Rscl9j
b250ZXh0CSpjdGxyID0gcmVxLT5jdGxyOwogCXN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZQkqY3Rs
cl9oYW5kbGUgPSBjdGxyLT5jdGxyX2hhbmRsZTsKIAlUV19VSU5UMzIJCQlzdGF0dXNfcmVnOwot
CVRXX0lOVDMyCQkJZXJyb3I7CisJVFdfSU5UMzIJCQllcnJvciA9IDA7CiAKIAl0d19jbGlfZGJn
X3ByaW50ZigxMCwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLCAiZW50ZXJlZCIpOwog
CkBAIC0xODUsMTEgKzE4NCw3IEBACiAJCQkJIFRXQV9DT01NQU5EX1FVRVVFX09GRlNFVF9MT1cs
CiAJCQkJIChUV19VSU5UMzIpKHJlcS0+Y21kX3BrdF9waHlzICsgc2l6ZW9mKHN0cnVjdCB0d19j
bF9jb21tYW5kX2hlYWRlcikpLCA0KTsKIAotCS8qIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gcG9z
dCBhIGNvbW1hbmQuICovCiAJc3RhdHVzX3JlZyA9IFRXX0NMSV9SRUFEX1NUQVRVU19SRUdJU1RF
UihjdGxyX2hhbmRsZSk7Ci0JaWYgKChlcnJvciA9IHR3X2NsaV9jaGVja19jdGxyX3N0YXRlKGN0
bHIsIHN0YXR1c19yZWcpKSkKLQkJZ290byBvdXQ7Ci0KIAlpZiAoc3RhdHVzX3JlZyAmIFRXQV9T
VEFUVVNfQ09NTUFORF9RVUVVRV9GVUxMKSB7CiAJCXN0cnVjdCB0d19jbF9yZXFfcGFja2V0CSpy
ZXFfcGt0ID0KIAkJCShzdHJ1Y3QgdHdfY2xfcmVxX3BhY2tldCAqKShyZXEtPm9yaWdfcmVxKTsK
QEAgLTIwNywxNCArMjAyLDEyIEBACiAJCQkJCSJwZW5kaW5nIGludGVybmFsL2lvY3RsIHJlcXVl
c3QiKTsKIAkJCQlyZXEtPnN0YXRlID0gVFdfQ0xJX1JFUV9TVEFURV9QRU5ESU5HOwogCQkJCXR3
X2NsaV9yZXFfcV9pbnNlcnRfdGFpbChyZXEsIFRXX0NMSV9QRU5ESU5HX1EpOwotCQkJCWVycm9y
ID0gMDsKIAkJCQkvKiBVbm1hc2sgY29tbWFuZCBpbnRlcnJ1cHQuICovCiAJCQkJVFdfQ0xJX1dS
SVRFX0NPTlRST0xfUkVHSVNURVIoY3Rscl9oYW5kbGUsCiAJCQkJCVRXQV9DT05UUk9MX1VOTUFT
S19DT01NQU5EX0lOVEVSUlVQVCk7CiAJCQl9IGVsc2UKIAkJCQllcnJvciA9IFRXX09TTF9FQlVT
WTsKIAkJfSBlbHNlIHsKLQkJCXR3X29zbF9jdGxyX2J1c3koY3Rscl9oYW5kbGUsIHJlcS0+cmVx
X2hhbmRsZSk7CiAJCQllcnJvciA9IFRXX09TTF9FQlVTWTsKIAkJfQogCX0gZWxzZSB7CkBAIC0y
NDYsNyArMjM5LDcgQEAKIAkJCQkJCSAoVFdfVUlOVDMyKShyZXEtPmNtZF9wa3RfcGh5cyArIHNp
emVvZihzdHJ1Y3QgdHdfY2xfY29tbWFuZF9oZWFkZXIpKSwgNCk7CiAJCX0KIAl9Ci1vdXQ6CisK
IAl0d19vc2xfZnJlZV9sb2NrKGN0bHJfaGFuZGxlLCBjdGxyLT5pb19sb2NrKTsKIAogCXJldHVy
bihlcnJvcik7CkBAIC0yNzcsMTggKzI3MCwxMiBAQAogCVRXX1VJTlQ4CQkJCW9wY29kZTsKIAlU
V19VSU5UOAkJCQlzZ2xfb2Zmc2V0OwogCVRXX1ZPSUQJCQkJCSpzZ2wgPSBUV19DTF9OVUxMOwot
CVRXX0lOVDMyCQkJCWVycm9yOworCVRXX0lOVDMyCQkJCWVycm9yID0gVFdfQ0xfRVJSX1JFUV9T
VUNDRVNTOwogCiAJdHdfY2xpX2RiZ19wcmludGYoNSwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJf
ZnVuYygpLCAiZW50ZXJlZCIpOwogCiAJY3RsciA9IChzdHJ1Y3QgdHdfY2xpX2N0bHJfY29udGV4
dCAqKShjdGxyX2hhbmRsZS0+Y2xfY3Rscl9jdHh0KTsKIAotCWlmIChjdGxyLT5yZXNldF9pbl9w
cm9ncmVzcykgewotCQl0d19jbGlfZGJnX3ByaW50ZigyLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1
cl9mdW5jKCksCi0JCQkiUGFzc3RocnUgcmVxdWVzdCBkdXJpbmcgcmVzZXQ6IHJldHVybmluZyBi
dXN5LiIpOwotCQlyZXR1cm4oVFdfT1NMX0VCVVNZKTsKLQl9Ci0KIAlpZiAoKHJlcSA9IHR3X2Ns
aV9nZXRfcmVxdWVzdChjdGxyCiAJCSkpID09IFRXX0NMX05VTEwpIHsKIAkJdHdfY2xpX2RiZ19w
cmludGYoMiwgY3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLApAQCAtMzAxLDcgKzI4OCw3
IEBACiAJcmVxLT5vcmlnX3JlcSA9IHJlcV9wa3Q7CiAJcmVxLT50d19jbGlfY2FsbGJhY2sgPSB0
d19jbGlfY29tcGxldGVfaW87CiAKLQlyZXEtPmZsYWdzIHw9IChUV19DTElfUkVRX0ZMQUdTX0VY
VEVSTkFMIHwgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSk7CisJcmVxLT5mbGFncyB8PSBUV19D
TElfUkVRX0ZMQUdTX1BBU1NUSFJVOwogCiAJcHRfcmVxID0gJihyZXFfcGt0LT5nZW5fcmVxX3Br
dC5wdF9yZXEpOwogCkBAIC0zNDgsNyArMzM1LDEyIEBACiAJCXR3X2NsaV9maWxsX3NnX2xpc3Qo
Y3RsciwgcHRfcmVxLT5zZ19saXN0LAogCQkJc2dsLCBwdF9yZXEtPnNnbF9lbnRyaWVzKTsKIAot
CWlmICgoZXJyb3IgPSB0d19jbGlfc3VibWl0X2NtZChyZXEpKSkgeworCWlmICgoKFRXX0NMX1Ff
RklSU1RfSVRFTSgmKGN0bHItPnJlcV9xX2hlYWRbVFdfQ0xJX1BFTkRJTkdfUV0pKSkgIT0gVFdf
Q0xfTlVMTCkgfHwKKwkJKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSkgeworCQl0d19jbGlfcmVx
X3FfaW5zZXJ0X3RhaWwocmVxLCBUV19DTElfUEVORElOR19RKTsKKwkJVFdfQ0xJX1dSSVRFX0NP
TlRST0xfUkVHSVNURVIoY3Rscl9oYW5kbGUsCisJCQlUV0FfQ09OVFJPTF9VTk1BU0tfQ09NTUFO
RF9JTlRFUlJVUFQpOworCX0gZWxzZSBpZiAoKGVycm9yID0gdHdfY2xpX3N1Ym1pdF9jbWQocmVx
KSkpIHsKIAkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ
CVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FUlJPUiwKIAkJCTB4MTEwMCwgMHgx
LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCkBAIC03NjAsOCArNzUyLDcgQEAKIAogCWNt
ZC0+cGFyYW0uc2dsX29mZl9fb3Bjb2RlID0KIAkJQlVJTERfU0dMX09GRl9fT1BDT0RFKDIsIFRX
QV9GV19DTURfR0VUX1BBUkFNKTsKLQljbWQtPnBhcmFtLnJlcXVlc3RfaWQgPQotCQkoVFdfVUlO
VDgpKFRXX0NMX1NXQVAxNihyZXEtPnJlcXVlc3RfaWQpKTsKKwljbWQtPnBhcmFtLnJlcXVlc3Rf
aWQgPSAoVFdfVUlOVDgpKFRXX0NMX1NXQVAxNihyZXEtPnJlcXVlc3RfaWQpKTsKIAljbWQtPnBh
cmFtLmhvc3RfaWRfX3VuaXQgPSBCVUlMRF9IT1NUX0lEX19VTklUKDAsIDApOwogCWNtZC0+cGFy
YW0ucGFyYW1fY291bnQgPSBUV19DTF9TV0FQMTYoMSk7CiAKQEAgLTc4OSwxNSArNzgwLDE0IEBA
CiAJCS8qIFRoZXJlJ3Mgbm8gY2FsbCBiYWNrOyB3YWl0IHRpbGwgdGhlIGNvbW1hbmQgY29tcGxl
dGVzLiAqLwogCQllcnJvciA9IHR3X2NsaV9zdWJtaXRfYW5kX3BvbGxfcmVxdWVzdChyZXEsCiAJ
CQkJVFdfQ0xJX1JFUVVFU1RfVElNRU9VVF9QRVJJT0QpOwotCQlpZiAoZXJyb3IgPT0gVFdfT1NM
X0VUSU1FRE9VVCkKLQkJCS8qIENsZWFuLXVwIGRvbmUgYnkgdHdfY2xpX3N1Ym1pdF9hbmRfcG9s
bF9yZXF1ZXN0LiAqLwotCQkJcmV0dXJuKGVycm9yKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBv
dXQ7CiAJCWlmICgoZXJyb3IgPSBjbWQtPnBhcmFtLnN0YXR1cykpIHsKKyNpZiAgICAgICAwCiAJ
CQl0d19jbGlfY3JlYXRlX2N0bHJfZXZlbnQoY3RsciwKIAkJCQlUV19DTF9NRVNTQUdFX1NPVVJD
RV9DT05UUk9MTEVSX0VSUk9SLAogCQkJCSYocmVxLT5jbWRfcGt0LT5jbWRfaGRyKSk7CisjZW5k
aWYgLy8gMAogCQkJZ290byBvdXQ7CiAJCX0KIAkJdHdfb3NsX21lbWNweShwYXJhbV9kYXRhLCBw
YXJhbS0+ZGF0YSwgcGFyYW1fc2l6ZSk7CkBAIC05MDUsMTggKzg5NSwxNyBAQAogCiAJLyogU3Vi
bWl0IHRoZSBjb21tYW5kLiAqLwogCWlmIChjYWxsYmFjayA9PSBUV19DTF9OVUxMKSB7Ci0JCS8q
IFRoZXJlJ3Mgbm8gY2FsbCBiYWNrOyAgd2FpdCB0aWxsIHRoZSBjb21tYW5kIGNvbXBsZXRlcy4g
Ki8KKwkJLyogVGhlcmUncyBubyBjYWxsIGJhY2s7IHdhaXQgdGlsbCB0aGUgY29tbWFuZCBjb21w
bGV0ZXMuICovCiAJCWVycm9yID0gdHdfY2xpX3N1Ym1pdF9hbmRfcG9sbF9yZXF1ZXN0KHJlcSwK
LQkJCVRXX0NMSV9SRVFVRVNUX1RJTUVPVVRfUEVSSU9EKTsKLQkJaWYgKGVycm9yID09IFRXX09T
TF9FVElNRURPVVQpCi0JCQkvKiBDbGVhbi11cCBkb25lIGJ5IHR3X2NsaV9zdWJtaXRfYW5kX3Bv
bGxfcmVxdWVzdC4gKi8KLQkJCXJldHVybihlcnJvcik7CisJCQkJVFdfQ0xJX1JFUVVFU1RfVElN
RU9VVF9QRVJJT0QpOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIG91dDsKIAkJaWYgKChlcnJvciA9
IGNtZC0+cGFyYW0uc3RhdHVzKSkgeworI2lmICAgICAgIDAKIAkJCXR3X2NsaV9jcmVhdGVfY3Rs
cl9ldmVudChjdGxyLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTlRST0xMRVJfRVJST1Is
CiAJCQkJJihyZXEtPmNtZF9wa3QtPmNtZF9oZHIpKTsKKyNlbmRpZiAvLyAwCiAJCQlnb3RvIG91
dDsKIAkJfQogCQljdGxyLT5pbnRlcm5hbF9yZXFfYnVzeSA9IFRXX0NMX0ZBTFNFOwpAQCAtMTAy
Miw5ICsxMDExLDcgQEAKIAkgKiB0d19jbGlfc3VibWl0X3BlbmRpbmdfcXVldWUuICBUaGVyZSBj
b3VsZCBiZSBhIHJhY2UgaW4gdGhhdCBjYXNlLgogCSAqIE5lZWQgdG8gcmV2aXNpdC4KIAkgKi8K
LQlpZiAocmVxLT5zdGF0ZSAhPSBUV19DTElfUkVRX1NUQVRFX1BFTkRJTkcpCi0JCXR3X2NsX3Jl
c2V0X2N0bHIoY3Rsci0+Y3Rscl9oYW5kbGUpOwotCWVsc2UgeworCWlmIChyZXEtPnN0YXRlID09
IFRXX0NMSV9SRVFfU1RBVEVfUEVORElORykgewogCQl0d19jbGlfZGJnX3ByaW50ZigzLCBjdGxy
LT5jdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksCiAJCQkiUmVtb3ZpbmcgcmVxdWVzdCBm
cm9tIHBlbmRpbmcgcXVldWUiKTsKIAkJLyoKQEAgLTEwNTMsNiArMTA0MCw3IEBACiAgKgkJCWRy
YWlucyBhbnkgaW5jb21wbGV0ZSByZXF1ZXN0cy4KICAqCiAgKiBJbnB1dDoJCWN0bHIJLS0gcHRy
IHRvIHBlciBjdGxyIHN0cnVjdHVyZQorICogCQkJcmVxX2hhbmRsZQktLSBwdHIgdG8gcmVxdWVz
dCBoYW5kbGUKICAqIE91dHB1dDoJCU5vbmUKICAqIFJldHVybiB2YWx1ZToJMAktLSBzdWNjZXNz
CiAgKgkJCW5vbi16ZXJvLS0gZmFpbHVyZQpAQCAtMTA2MywxNSArMTA1MSwxNSBAQAogCXN0cnVj
dCB0d19jbGlfY3Rscl9jb250ZXh0CSpjdGxyID0KIAkJKHN0cnVjdCB0d19jbGlfY3Rscl9jb250
ZXh0ICopKGN0bHJfaGFuZGxlLT5jbF9jdGxyX2N0eHQpOwogCXN0cnVjdCB0d2Ffc29mdGMJCSpz
YyA9IGN0bHJfaGFuZGxlLT5vc2xfY3Rscl9jdHh0OworCXN0cnVjdCB0d19jbGlfcmVxX2NvbnRl
eHQJKnJlcTsKIAlUV19JTlQzMgkJCXJlc2V0X2F0dGVtcHQgPSAxOwotCVRXX0lOVDMyCQkJZXJy
b3I7CisJVFdfSU5UMzIJCQllcnJvciA9IDA7CiAKIAl0d19jbGlfZGJnX3ByaW50ZigyLCBjdGxy
X2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7CiAKIAljdGxyLT5yZXNldF9p
bl9wcm9ncmVzcyA9IFRXX0NMX1RSVUU7Ci0JeHB0X2ZyZWV6ZV9zaW1xKHNjLT5zaW0sIDEpOwor
CXR3YV90ZWFyZG93bl9pbnRyKHNjKTsKIAotCXR3X2NsaV9kaXNhYmxlX2ludGVycnVwdHMoY3Rs
cik7CiAKIAkvKgogCSAqIEVycm9yIGJhY2sgYWxsIHJlcXVlc3RzIGluIHRoZSBjb21wbGV0ZSwg
YnVzeSwgYW5kIHBlbmRpbmcgcXVldWVzLgpAQCAtMTA4MCw4ICsxMDY4LDYgQEAKIAkgKiB3aWxs
IGNvbnRpbnVlIGl0cyBjb3Vyc2UgYW5kIGdldCBzdWJtaXR0ZWQgdG8gdGhlIGNvbnRyb2xsZXIg
YWZ0ZXIKIAkgKiB0aGUgcmVzZXQgaXMgZG9uZSAoYW5kIGlvX2xvY2sgaXMgcmVsZWFzZWQpLgog
CSAqLwotCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHJfaGFuZGxlLCB0d19vc2xfY3VyX2Z1bmMo
KSwKLQkJIkRyYWluaW5nIGFsbCBxdWV1ZXMgZm9sbG93aW5nIHJlc2V0Iik7CiAJdHdfY2xpX2Ry
YWluX2NvbXBsZXRlX3F1ZXVlKGN0bHIpOwogCXR3X2NsaV9kcmFpbl9idXN5X3F1ZXVlKGN0bHIp
OwogCXR3X2NsaV9kcmFpbl9wZW5kaW5nX3F1ZXVlKGN0bHIpOwpAQCAtMTA4OSw1MyArMTA3NSw4
OCBAQAogCWN0bHItPmdldF9tb3JlX2FlbnMgICAgID0gVFdfQ0xfRkFMU0U7CiAKIAkvKiBTb2Z0
IHJlc2V0IHRoZSBjb250cm9sbGVyLiAqLwotdHJ5X3Jlc2V0OgotCWlmICgoZXJyb3IgPSB0d19j
bGlfc29mdF9yZXNldChjdGxyKSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxl
LCBUV19DTF9UUlVFLAotCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5U
LAotCQkJMHgxMTA1LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCSJDb250
cm9sbGVyIHJlc2V0IGZhaWxlZCIsCi0JCQkiZXJyb3IgPSAlZDsgYXR0ZW1wdCAlZCIsIGVycm9y
LCByZXNldF9hdHRlbXB0KyspOwotCQlpZiAocmVzZXRfYXR0ZW1wdCA8PSBUV19DTElfTUFYX1JF
U0VUX0FUVEVNUFRTKQotCQkJZ290byB0cnlfcmVzZXQ7Ci0JCWVsc2UKLQkJCWdvdG8gb3V0Owot
CX0KKwl3aGlsZSAocmVzZXRfYXR0ZW1wdCA8PSBUV19DTElfTUFYX1JFU0VUX0FUVEVNUFRTKSB7
CisJCWlmICgoZXJyb3IgPSB0d19jbGlfc29mdF9yZXNldChjdGxyKSkpIHsKKwkJCXR3X2NsX2Ny
ZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCisJCQkJVFdfQ0xfTUVTU0FHRV9T
T1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAorCQkJCTB4MTEwNSwgMHgxLCBUV19DTF9TRVZFUklU
WV9FUlJPUl9TVFJJTkcsCisJCQkJIkNvbnRyb2xsZXIgcmVzZXQgZmFpbGVkIiwKKwkJCQkiZXJy
b3IgPSAlZDsgYXR0ZW1wdCAlZCIsIGVycm9yLCByZXNldF9hdHRlbXB0KyspOworCQkJcmVzZXRf
YXR0ZW1wdCsrOworCQkJY29udGludWU7CisJCX0KIAotCS8qIFJlLWVzdGFibGlzaCBsb2dpY2Fs
IGNvbm5lY3Rpb24gd2l0aCB0aGUgY29udHJvbGxlci4gKi8KLQlpZiAoKGVycm9yID0gdHdfY2xp
X2luaXRfY29ubmVjdGlvbihjdGxyLAotCQkJKFRXX1VJTlQxNikoY3Rsci0+bWF4X3NpbXVsdF9y
ZXFzKSwKLQkJCTAsIDAsIDAsIDAsIDAsIFRXX0NMX05VTEwsIFRXX0NMX05VTEwsIFRXX0NMX05V
TEwsCi0JCQlUV19DTF9OVUxMLCBUV19DTF9OVUxMKSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50
KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQkvKiBSZS1lc3RhYmxpc2ggbG9naWNhbCBjb25u
ZWN0aW9uIHdpdGggdGhlIGNvbnRyb2xsZXIuICovCisJCWlmICgoZXJyb3IgPSB0d19jbGlfaW5p
dF9jb25uZWN0aW9uKGN0bHIsCisJCQkJKFRXX1VJTlQxNikoY3Rsci0+bWF4X3NpbXVsdF9yZXFz
KSwKKwkJCQkwLCAwLCAwLCAwLCAwLCBUV19DTF9OVUxMLCBUV19DTF9OVUxMLCBUV19DTF9OVUxM
LAorCQkJCVRXX0NMX05VTEwsIFRXX0NMX05VTEwpKSkgeworCQkJdHdfY2xfY3JlYXRlX2V2ZW50
KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKKwkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01N
T05fTEFZRVJfRVZFTlQsCisJCQkJMHgxMTA2LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NU
UklORywKKwkJCQkiQ2FuJ3QgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFmdGVyIHJlc2V0IiwKKwkJ
CQkiZXJyb3IgPSAlZCIsIGVycm9yKTsKKwkJCXJlc2V0X2F0dGVtcHQrKzsKKwkJCWNvbnRpbnVl
OworCQl9CisKKyNpZmRlZiAgICBUV19PU0xfREVCVUcKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0
bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9M
QVlFUl9FVkVOVCwKLQkJCTB4MTEwNiwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcs
Ci0JCQkiQ2FuJ3QgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFmdGVyIHJlc2V0IiwKLQkJCSJlcnJv
ciA9ICVkIiwgZXJyb3IpOwotCQlnb3RvIG91dDsKLQl9CisJCQkweDExMDcsIDB4MywgVFdfQ0xf
U0VWRVJJVFlfSU5GT19TVFJJTkcsCisJCQkiQ29udHJvbGxlciByZXNldCBkb25lISIsICIgIik7
CisjZW5kaWYgLyogVFdfT1NMX0RFQlVHICovCisJCWJyZWFrOworCX0gLyogRW5kIG9mIHdoaWxl
ICovCiAKLQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCi0JCVRX
X0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKLQkJMHgxMTA3LCAweDMsIFRX
X0NMX1NFVkVSSVRZX0lORk9fU1RSSU5HLAotCQkiQ29udHJvbGxlciByZXNldCBkb25lISIsCi0J
CSIgIik7CisJLyogTW92ZSBjb21tYW5kcyBmcm9tIHRoZSByZXNldCBxdWV1ZSB0byB0aGUgcGVu
ZGluZyBxdWV1ZS4gKi8KKwl3aGlsZSAoKHJlcSA9IHR3X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChj
dGxyLCBUV19DTElfUkVTRVRfUSkpICE9IFRXX0NMX05VTEwpIHsKKwkJdHdfb3NsX3RpbWVvdXQo
cmVxLT5yZXFfaGFuZGxlKTsKKwkJdHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJ
X1BFTkRJTkdfUSk7CisJfQogCi1vdXQ6CisJdHdhX3NldHVwX2ludHIoc2MpOworCXR3X2NsaV9l
bmFibGVfaW50ZXJydXB0cyhjdGxyKTsKKwlpZiAoKFRXX0NMX1FfRklSU1RfSVRFTSgmKGN0bHIt
PnJlcV9xX2hlYWRbVFdfQ0xJX1BFTkRJTkdfUV0pKSkgIT0gVFdfQ0xfTlVMTCkKKwkJVFdfQ0xJ
X1dSSVRFX0NPTlRST0xfUkVHSVNURVIoY3Rscl9oYW5kbGUsCisJCQlUV0FfQ09OVFJPTF9VTk1B
U0tfQ09NTUFORF9JTlRFUlJVUFQpOwogCWN0bHItPnJlc2V0X2luX3Byb2dyZXNzID0gVFdfQ0xf
RkFMU0U7Ci0JeHB0X3JlbGVhc2Vfc2ltcShzYy0+c2ltLCAxKTsKKwljdGxyLT5yZXNldF9uZWVk
ZWQgPSBUV19DTF9GQUxTRTsKIAotCS8qCi0JICogRW5hYmxlIGludGVycnVwdHMsIGFuZCBhbHNv
IGNsZWFyIGF0dGVudGlvbiBhbmQgcmVzcG9uc2UgaW50ZXJydXB0cy4KLQkgKi8KLQl0d19jbGlf
ZW5hYmxlX2ludGVycnVwdHMoY3Rscik7Ci0JCiAJLyogUmVxdWVzdCBmb3IgYSBidXMgcmUtc2Nh
bi4gKi8KLQlpZiAoIWVycm9yKQotCQl0d19vc2xfc2Nhbl9idXMoY3Rscl9oYW5kbGUpOworCXR3
X29zbF9zY2FuX2J1cyhjdGxyX2hhbmRsZSk7CisKIAlyZXR1cm4oZXJyb3IpOwogfQogCitUV19W
T0lECit0d19jbF9zZXRfcmVzZXRfbmVlZGVkKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rs
cl9oYW5kbGUpCit7CisJc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQJKmN0bHIgPQorCQkoc3Ry
dWN0IHR3X2NsaV9jdGxyX2NvbnRleHQgKikoY3Rscl9oYW5kbGUtPmNsX2N0bHJfY3R4dCk7CisK
KwljdGxyLT5yZXNldF9uZWVkZWQgPSBUV19DTF9UUlVFOworfQorCitUV19JTlQzMgordHdfY2xf
aXNfcmVzZXRfbmVlZGVkKHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUpCit7
CisJc3RydWN0IHR3X2NsaV9jdGxyX2NvbnRleHQJKmN0bHIgPQorCQkoc3RydWN0IHR3X2NsaV9j
dGxyX2NvbnRleHQgKikoY3Rscl9oYW5kbGUtPmNsX2N0bHJfY3R4dCk7CisKKwlyZXR1cm4oY3Rs
ci0+cmVzZXRfbmVlZGVkKTsKK30KKworVFdfSU5UMzIKK3R3X2NsX2lzX2FjdGl2ZShzdHJ1Y3Qg
dHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxlKQoreworCXN0cnVjdCB0d19jbGlfY3Rscl9j
b250ZXh0CSpjdGxyID0KKwkJKHN0cnVjdCB0d19jbGlfY3Rscl9jb250ZXh0ICopCisJCShjdGxy
X2hhbmRsZS0+Y2xfY3Rscl9jdHh0KTsKKworCQlyZXR1cm4oY3Rsci0+YWN0aXZlKTsKK30KKwog
CiAKIC8qCkBAIC0xMTUxLDE0ICsxMTcyLDEzIEBACiB0d19jbGlfc29mdF9yZXNldChzdHJ1Y3Qg
dHdfY2xpX2N0bHJfY29udGV4dCAqY3RscikKIHsKIAlzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUJ
KmN0bHJfaGFuZGxlID0gY3Rsci0+Y3Rscl9oYW5kbGU7Ci0JVFdfVUlOVDMyCQkJc3RhdHVzX3Jl
ZzsKIAlpbnQJCQkJZm91bmQ7CiAJaW50CQkJCWxvb3BfY291bnQ7CiAJVFdfVUlOVDMyCQkJZXJy
b3I7CiAKIAl0d19jbGlfZGJnX3ByaW50ZigxLCBjdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5j
KCksICJlbnRlcmVkIik7CiAKLQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NM
X1RSVUUsCisJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ
VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkweDExMDgsIDB4Mywg
VFdfQ0xfU0VWRVJJVFlfSU5GT19TVFJJTkcsCiAJCSJSZXNldHRpbmcgY29udHJvbGxlci4uLiIs
CkBAIC0xMTkzLDcgKzEyMTMsNyBAQAogCQl9IHdoaWxlICghZm91bmQgJiYgKGxvb3BfY291bnQg
PCA2MDAwMDAwKSk7IC8qIExvb3AgZm9yIG5vIG1vcmUgdGhhbiA2MCBzZWNvbmRzICovCiAKIAkJ
aWYgKCFmb3VuZCkgewotCQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9U
UlVFLAorCQkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwKIAkJ
CQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01NT05fTEFZRVJfRVZFTlQsCiAJCQkJMHgxMTA5LCAw
eDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKIAkJCQkiTWlzc2VkIGZpcm13YXJlIGhh
bmRzaGFrZSBhZnRlciBzb2Z0LXJlc2V0IiwKQEAgLTEyMTAsNyArMTIzMCw3IEBACiAJCQlUV0Ff
U1RBVFVTX01JQ1JPQ09OVFJPTExFUl9SRUFEWSB8CiAJCQlUV0FfU1RBVFVTX0FUVEVOVElPTl9J
TlRFUlJVUFQsCiAJCQlUV19DTElfUkVTRVRfVElNRU9VVF9QRVJJT0QpKSkgewotCQl0d19jbF9j
cmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCisJCXR3X2NsX2NyZWF0ZV9ldmVu
dChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01N
T05fTEFZRVJfRVZFTlQsCiAJCQkweDExMDksIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RS
SU5HLAogCQkJIk1pY3JvLWN0bHIgbm90IHJlYWR5L05vIGF0dG4gaW50ciBhZnRlciByZXNldCIs
CkBAIC0xMjQ0LDI2ICsxMjY0LDE0IEBACiAJfQogCQogCWlmICgoZXJyb3IgPSB0d19jbGlfZmlu
ZF9hZW4oY3RsciwgVFdBX0FFTl9TT0ZUX1JFU0VUKSkpIHsKLQkJdHdfY2xfY3JlYXRlX2V2ZW50
KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5k
bGUsIFRXX0NMX0ZBTFNFLAogCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VW
RU5ULAogCQkJMHgxMTBDLCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKIAkJCSJS
ZXNldCBub3QgcmVwb3J0ZWQgYnkgY29udHJvbGxlciIsCiAJCQkiZXJyb3IgPSAlZCIsIGVycm9y
KTsKIAkJcmV0dXJuKGVycm9yKTsKIAl9Ci0JCi0Jc3RhdHVzX3JlZyA9IFRXX0NMSV9SRUFEX1NU
QVRVU19SRUdJU1RFUihjdGxyX2hhbmRsZSk7Ci0JCi0JaWYgKChlcnJvciA9IFRXX0NMSV9TVEFU
VVNfRVJST1JTKHN0YXR1c19yZWcpKSB8fAotCQkJKGVycm9yID0gdHdfY2xpX2NoZWNrX2N0bHJf
c3RhdGUoY3Rsciwgc3RhdHVzX3JlZykpKSB7Ci0JCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hh
bmRsZSwgVFdfQ0xfVFJVRSwKLQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9F
VkVOVCwKLQkJCTB4MTEwRCwgMHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCi0JCQki
Q29udHJvbGxlciBlcnJvcnMgZGV0ZWN0ZWQgYWZ0ZXIgcmVzZXQiLAotCQkJImVycm9yID0gJWQi
LCBlcnJvcik7Ci0JCXJldHVybihlcnJvcik7Ci0JfQotCQorCiAJcmV0dXJuKFRXX09TTF9FU1VD
Q0VTUyk7CiB9CiAKZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19jbF9taXNjLmMgRnJl
ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9taXNjLmMKLS0tIEZyZWVCU0RfSEVBRF90
d2FfY3ZzL3R3X2NsX21pc2MuYwkyMDEwLTA4LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAor
KysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19jbF9taXNjLmMJMjAxMC0wOC0yNCAx
ODowMjoxMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTgzLDcgKzgzLDggQEAKIAl0d19jbGlfZGJnX3By
aW50ZigzLCBjdGxyLT5jdGxyX2hhbmRsZSwgdHdfb3NsX2N1cl9mdW5jKCksICJlbnRlcmVkIik7
CiAKIAkvKiBXYWxrIHRoZSBidXN5IHF1ZXVlLiAqLwotCXdoaWxlICgocmVxID0gdHdfY2xpX3Jl
cV9xX3JlbW92ZV9oZWFkKGN0bHIsIFRXX0NMSV9DT01QTEVURV9RKSkpIHsKKwl3aGlsZSAoKHJl
cSA9IHR3X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChjdGxyLCBUV19DTElfQ09NUExFVEVfUSkpICE9
CisJCVRXX0NMX05VTEwpIHsKIAkJaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdTX0lO
VEVSTkFMKSB7CiAJCQkvKgogCQkJICogSXQncyBhbiBpbnRlcm5hbCByZXF1ZXN0LiAgU2V0IHRo
ZSBhcHByb3ByaWF0ZQpAQCAtOTcsMjAgKzk4LDIxIEBACiAJCQlyZXEtPmVycm9yX2NvZGUgPSBU
V19DTF9FUlJfUkVRX0JVU19SRVNFVDsKIAkJCWlmIChyZXEtPnR3X2NsaV9jYWxsYmFjaykKIAkJ
CQlyZXEtPnR3X2NsaV9jYWxsYmFjayhyZXEpOwotCQl9IGVsc2UgewotCQkJaWYgKChyZXFfcGt0
ID0gcmVxLT5vcmlnX3JlcSkpIHsKLQkJCQkvKiBJdCdzIGEgU0NTSSByZXF1ZXN0LiAgQ29tcGxl
dGUgaXQuICovCi0JCQkJdHdfY2xpX2RiZ19wcmludGYoMiwgY3Rsci0+Y3Rscl9oYW5kbGUsCi0J
CQkJCXR3X29zbF9jdXJfZnVuYygpLAotCQkJCQkiQ29tcGxldGluZyBjb21wbGV0ZSByZXF1ZXN0
ICVwICIKLQkJCQkJIm9uIHJlc2V0IiwKLQkJCQkJcmVxKTsKKwkJfSBlbHNlIGlmIChyZXEtPmZs
YWdzICYgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSkgeworCQkJLyogSXQncyBhIHBhc3N0aHJ1
IHJlcXVlc3QuICBDb21wbGV0ZSBpdC4gKi8KKwkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19y
ZXEpICE9IFRXX0NMX05VTEwpIHsKIAkJCQlyZXFfcGt0LT5zdGF0dXMgPSBUV19DTF9FUlJfUkVR
X0JVU19SRVNFVDsKLQkJCQlyZXFfcGt0LT50d19vc2xfY2FsbGJhY2socmVxLT5yZXFfaGFuZGxl
KTsKKworCQkJCWlmIChyZXFfcGt0LT50d19vc2xfY2FsbGJhY2spCisJCQkJCXJlcV9wa3QtPnR3
X29zbF9jYWxsYmFjayhyZXEtPnJlcV9oYW5kbGUpOwogCQkJfQogCQkJdHdfY2xpX3JlcV9xX2lu
c2VydF90YWlsKHJlcSwgVFdfQ0xJX0ZSRUVfUSk7CisJCX0gZWxzZSB7CisJCQkvKiBJdCdzIGFu
IGV4dGVybmFsIChTQ1NJKSByZXF1ZXN0LiAgQWRkIGl0IHRvIHRoZSByZXNldCBxdWV1ZS4gKi8K
KwkJCXR3X29zbF91bnRpbWVvdXQocmVxLT5yZXFfaGFuZGxlKTsKKwkJCXR3X2NsaV9yZXFfcV9p
bnNlcnRfdGFpbChyZXEsIFRXX0NMSV9SRVNFVF9RKTsKIAkJfQotCX0KKwl9IC8qIEVuZCBvZiB3
aGlsZSBsb29wICovCiB9CiAKIApAQCAtMTM1LDcgKzEzNyw4IEBACiAJdHdfY2xpX2RiZ19wcmlu
dGYoMywgY3Rsci0+Y3Rscl9oYW5kbGUsIHR3X29zbF9jdXJfZnVuYygpLCAiZW50ZXJlZCIpOwog
CiAJLyogV2FsayB0aGUgYnVzeSBxdWV1ZS4gKi8KLQl3aGlsZSAoKHJlcSA9IHR3X2NsaV9yZXFf
cV9yZW1vdmVfaGVhZChjdGxyLCBUV19DTElfQlVTWV9RKSkpIHsKKwl3aGlsZSAoKHJlcSA9IHR3
X2NsaV9yZXFfcV9yZW1vdmVfaGVhZChjdGxyLCBUV19DTElfQlVTWV9RKSkgIT0KKwkJVFdfQ0xf
TlVMTCkgewogCQlpZiAocmVxLT5mbGFncyAmIFRXX0NMSV9SRVFfRkxBR1NfSU5URVJOQUwpIHsK
IAkJCS8qCiAJCQkgKiBJdCdzIGFuIGludGVybmFsIHJlcXVlc3QuICBTZXQgdGhlIGFwcHJvcHJp
YXRlCkBAIC0xNDksMTkgKzE1MiwyMSBAQAogCQkJcmVxLT5lcnJvcl9jb2RlID0gVFdfQ0xfRVJS
X1JFUV9CVVNfUkVTRVQ7CiAJCQlpZiAocmVxLT50d19jbGlfY2FsbGJhY2spCiAJCQkJcmVxLT50
d19jbGlfY2FsbGJhY2socmVxKTsKLQkJfSBlbHNlIHsKLQkJCWlmICgocmVxX3BrdCA9IHJlcS0+
b3JpZ19yZXEpKSB7Ci0JCQkJLyogSXQncyBhIFNDU0kgcmVxdWVzdC4gIENvbXBsZXRlIGl0LiAq
LwotCQkJCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHItPmN0bHJfaGFuZGxlLAotCQkJCQl0d19v
c2xfY3VyX2Z1bmMoKSwKLQkJCQkJIkNvbXBsZXRpbmcgYnVzeSByZXF1ZXN0ICVwIG9uIHJlc2V0
IiwKLQkJCQkJcmVxKTsKKwkJfSBlbHNlIGlmIChyZXEtPmZsYWdzICYgVFdfQ0xJX1JFUV9GTEFH
U19QQVNTVEhSVSkgeworCQkJLyogSXQncyBhIHBhc3N0aHJ1IHJlcXVlc3QuICBDb21wbGV0ZSBp
dC4gKi8KKwkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19yZXEpICE9IFRXX0NMX05VTEwpIHsK
IAkJCQlyZXFfcGt0LT5zdGF0dXMgPSBUV19DTF9FUlJfUkVRX0JVU19SRVNFVDsKLQkJCQlyZXFf
cGt0LT50d19vc2xfY2FsbGJhY2socmVxLT5yZXFfaGFuZGxlKTsKKworCQkJCWlmIChyZXFfcGt0
LT50d19vc2xfY2FsbGJhY2spCisJCQkJCXJlcV9wa3QtPnR3X29zbF9jYWxsYmFjayhyZXEtPnJl
cV9oYW5kbGUpOwogCQkJfQogCQkJdHdfY2xpX3JlcV9xX2luc2VydF90YWlsKHJlcSwgVFdfQ0xJ
X0ZSRUVfUSk7CisJCX0gZWxzZSB7CisJCQkvKiBJdCdzIGFuIGV4dGVybmFsIChTQ1NJKSByZXF1
ZXN0LiAgQWRkIGl0IHRvIHRoZSByZXNldCBxdWV1ZS4gKi8KKwkJCXR3X29zbF91bnRpbWVvdXQo
cmVxLT5yZXFfaGFuZGxlKTsKKwkJCXR3X2NsaV9yZXFfcV9pbnNlcnRfdGFpbChyZXEsIFRXX0NM
SV9SRVNFVF9RKTsKIAkJfQotCX0KKwl9IC8qIEVuZCBvZiB3aGlsZSBsb29wICovCiB9CiAKIApA
QCAtMTg4LDcgKzE5Myw4IEBACiAJLyoKIAkgKiBQdWxsIHJlcXVlc3RzIG9mZiB0aGUgcGVuZGlu
ZyBxdWV1ZSwgYW5kIGNvbXBsZXRlIHRoZW0uCiAJICovCi0Jd2hpbGUgKChyZXEgPSB0d19jbGlf
cmVxX3FfcmVtb3ZlX2hlYWQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSkpKSB7CisJd2hpbGUgKChy
ZXEgPSB0d19jbGlfcmVxX3FfcmVtb3ZlX2hlYWQoY3RsciwgVFdfQ0xJX1BFTkRJTkdfUSkpICE9
CisJCVRXX0NMX05VTEwpIHsKIAkJaWYgKHJlcS0+ZmxhZ3MgJiBUV19DTElfUkVRX0ZMQUdTX0lO
VEVSTkFMKSB7CiAJCQkvKgogCQkJICogSXQncyBhbiBpbnRlcm5hbCByZXF1ZXN0LiAgU2V0IHRo
ZSBhcHByb3ByaWF0ZQpAQCAtMjAyLDE5ICsyMDgsMjEgQEAKIAkJCXJlcS0+ZXJyb3JfY29kZSA9
IFRXX0NMX0VSUl9SRVFfQlVTX1JFU0VUOwogCQkJaWYgKHJlcS0+dHdfY2xpX2NhbGxiYWNrKQog
CQkJCXJlcS0+dHdfY2xpX2NhbGxiYWNrKHJlcSk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoKHJlcV9w
a3QgPSByZXEtPm9yaWdfcmVxKSkgewotCQkJCS8qIEl0J3MgYW4gZXh0ZXJuYWwgcmVxdWVzdC4g
IENvbXBsZXRlIGl0LiAqLwotCQkJCXR3X2NsaV9kYmdfcHJpbnRmKDIsIGN0bHItPmN0bHJfaGFu
ZGxlLAotCQkJCQl0d19vc2xfY3VyX2Z1bmMoKSwKLQkJCQkJIkNvbXBsZXRpbmcgcGVuZGluZyBy
ZXF1ZXN0ICVwICIKLQkJCQkJIm9uIHJlc2V0IiwgcmVxKTsKKwkJfSBlbHNlIGlmIChyZXEtPmZs
YWdzICYgVFdfQ0xJX1JFUV9GTEFHU19QQVNTVEhSVSkgeworCQkJLyogSXQncyBhIHBhc3N0aHJ1
IHJlcXVlc3QuICBDb21wbGV0ZSBpdC4gKi8KKwkJCWlmICgocmVxX3BrdCA9IHJlcS0+b3JpZ19y
ZXEpICE9IFRXX0NMX05VTEwpIHsKIAkJCQlyZXFfcGt0LT5zdGF0dXMgPSBUV19DTF9FUlJfUkVR
X0JVU19SRVNFVDsKLQkJCQlyZXFfcGt0LT50d19vc2xfY2FsbGJhY2socmVxLT5yZXFfaGFuZGxl
KTsKKworCQkJCWlmIChyZXFfcGt0LT50d19vc2xfY2FsbGJhY2spCisJCQkJCXJlcV9wa3QtPnR3
X29zbF9jYWxsYmFjayhyZXEtPnJlcV9oYW5kbGUpOwogCQkJfQogCQkJdHdfY2xpX3JlcV9xX2lu
c2VydF90YWlsKHJlcSwgVFdfQ0xJX0ZSRUVfUSk7CisJCX0gZWxzZSB7CisJCQkvKiBJdCdzIGFu
IGV4dGVybmFsIChTQ1NJKSByZXF1ZXN0LiAgQWRkIGl0IHRvIHRoZSByZXNldCBxdWV1ZS4gKi8K
KwkJCXR3X29zbF91bnRpbWVvdXQocmVxLT5yZXFfaGFuZGxlKTsKKwkJCXR3X2NsaV9yZXFfcV9p
bnNlcnRfdGFpbChyZXEsIFRXX0NMSV9SRVNFVF9RKTsKIAkJfQotCX0KKwl9IC8qIEVuZCBvZiB3
aGlsZSBsb29wICovCiB9CiAKIApAQCAtMjM5LDkgKzI0Nyw2IEBACiAJZm9yICg7OykgewogCQlz
dGF0dXNfcmVnID0gVFdfQ0xJX1JFQURfU1RBVFVTX1JFR0lTVEVSKGN0bHItPmN0bHJfaGFuZGxl
KTsKIAotCQlpZiAodHdfY2xpX2NoZWNrX2N0bHJfc3RhdGUoY3Rsciwgc3RhdHVzX3JlZykpCi0J
CQlyZXR1cm4oVFdfT1NMX0VHRU5GQUlMVVJFKTsKLQogCQlpZiAoc3RhdHVzX3JlZyAmIFRXQV9T
VEFUVVNfUkVTUE9OU0VfUVVFVUVfRU1QVFkpCiAJCQlyZXR1cm4oVFdfT1NMX0VTVUNDRVNTKTsg
Lyogbm8gbW9yZSByZXNwb25zZSBxdWV1ZSBlbnRyaWVzICovCiAKQEAgLTI3Myw5ICsyNzgsNiBA
QAogCWZvciAoOzspIHsKIAkJc3RhdHVzX3JlZyA9IFRXX0NMSV9SRUFEX1NUQVRVU19SRUdJU1RF
UihjdGxyLT5jdGxyX2hhbmRsZSk7CiAKLQkJaWYgKHR3X2NsaV9jaGVja19jdGxyX3N0YXRlKGN0
bHIsIHN0YXR1c19yZWcpKQotCQkJcmV0dXJuKFRXX09TTF9FR0VORkFJTFVSRSk7Ci0KIAkJaWYg
KHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1JFU1BPTlNFX1FVRVVFX0VNUFRZKQogCQkJcmV0dXJu
KFRXX09TTF9FTk9UVFkpOyAvKiBubyBtb3JlIHJlc3BvbnNlIHF1ZXVlIGVudHJpZXMgKi8KIApA
QCAtMzU2LDkgKzM1OCwxMSBAQAogCiAJCWlmICgoZXJyb3IgPSByZXEtPmNtZF9wa3QtPmNvbW1h
bmQuY21kX3BrdF85ay5zdGF0dXMpKSB7CiAJCQljbWRfaGRyID0gJnJlcS0+Y21kX3BrdC0+Y21k
X2hkcjsKKyNpZiAgICAgICAwCiAJCQl0d19jbGlfY3JlYXRlX2N0bHJfZXZlbnQoY3RsciwKIAkJ
CQlUV19DTF9NRVNTQUdFX1NPVVJDRV9DT05UUk9MTEVSX0VSUk9SLAogCQkJCWNtZF9oZHIpOwor
I2VuZGlmIC8vIDAKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTcxNCw3ICs3MTgsNyBAQAogCiAJCXR3
X29zbF9tZW16ZXJvKGRlc2MsIDIwMCk7CiAJCWlmICghKGN0bHItPnJlc2V0X3BoYXNlMV9pbl9w
cm9ncmVzcykpIHsKLQkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfVFJV
RSwKKwkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJ
VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAogCQkJCTB4MTMwMSwgMHgx
LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkJIk1pc3NpbmcgZXhwZWN0ZWQgc3Rh
dHVzIGJpdChzKSIsCkBAIC03MzgsNyArNzQyLDcgQEAKIAkJICAgICAoY3Rsci0+ZGV2aWNlX2lk
ICE9IFRXX0NMX0RFVklDRV9JRF85S19TQSkpIHx8CiAJCSAgICAoIShjdGxyLT5yZXNldF9pbl9w
cm9ncmVzcykpIHx8CiAJCSAgICAoKHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1FVRVVFX0VSUk9S
X0lOVEVSUlVQVCkgPT0gMCkpCi0JCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hhbmRsZSwgVFdf
Q0xfVFJVRSwKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KGN0bHJfaGFuZGxlLCBUV19DTF9GQUxTRSwK
IAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCTB4MTMwMiwg
MHgxLCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCiAJCQkiVW5leHBlY3RlZCBzdGF0dXMg
Yml0KHMpIiwKQEAgLTc0OCw3ICs3NTIsNyBAQAogCQkJCVRXQV9TVEFUVVNfVU5FWFBFQ1RFRF9C
SVRTLCBkZXNjKSk7CiAKIAkJaWYgKHN0YXR1c19yZWcgJiBUV0FfU1RBVFVTX1BDSV9QQVJJVFlf
RVJST1JfSU5URVJSVVBUKSB7Ci0JCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRX
X0NMX1RSVUUsCisJCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNF
LAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1PTl9MQVlFUl9FVkVOVCwKIAkJCQkweDEz
MDMsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAogCQkJCSJQQ0kgcGFyaXR5IGVy
cm9yOiBjbGVhcmluZy4uLiAiCkBAIC03NjgsNyArNzcyLDcgQEAKIAkJfQogCiAJCWlmIChzdGF0
dXNfcmVnICYgVFdBX1NUQVRVU19QQ0lfQUJPUlRfSU5URVJSVVBUKSB7Ci0JCQl0d19jbF9jcmVh
dGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCisJCQl0d19jbF9jcmVhdGVfZXZlbnQo
Y3Rscl9oYW5kbGUsIFRXX0NMX0ZBTFNFLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0NPTU1P
Tl9MQVlFUl9FVkVOVCwKIAkJCQkweDEzMDQsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RS
SU5HLAogCQkJCSJQQ0kgYWJvcnQ6IGNsZWFyaW5nLi4uICIsCkBAIC03OTEsNyArNzk1LDcgQEAK
IAkJCWlmICgoKGN0bHItPmRldmljZV9pZCAhPSBUV19DTF9ERVZJQ0VfSURfOUtfRSkgJiYKIAkJ
CSAgICAgKGN0bHItPmRldmljZV9pZCAhPSBUV19DTF9ERVZJQ0VfSURfOUtfU0EpKSB8fAogCQkJ
ICAgICghKGN0bHItPnJlc2V0X2luX3Byb2dyZXNzKSkpCi0JCQkJdHdfY2xfY3JlYXRlX2V2ZW50
KGN0bHJfaGFuZGxlLCBUV19DTF9UUlVFLAorCQkJCXR3X2NsX2NyZWF0ZV9ldmVudChjdGxyX2hh
bmRsZSwgVFdfQ0xfRkFMU0UsCiAJCQkJCQkgICBUV19DTF9NRVNTQUdFX1NPVVJDRV9DT01NT05f
TEFZRVJfRVZFTlQsCiAJCQkJCQkgICAweDEzMDUsIDB4MSwgVFdfQ0xfU0VWRVJJVFlfRVJST1Jf
U1RSSU5HLAogCQkJCQkJICAgIkNvbnRyb2xsZXIgcXVldWUgZXJyb3I6IGNsZWFyaW5nLi4uICIs
CkBAIC04MDEsMTcgKzgwNSw2IEBACiAJCQlUV19DTElfV1JJVEVfQ09OVFJPTF9SRUdJU1RFUihj
dGxyLT5jdGxyX2hhbmRsZSwKIAkJCQlUV0FfQ09OVFJPTF9DTEVBUl9RVUVVRV9FUlJPUik7CiAJ
CX0KLQotCQlpZiAoc3RhdHVzX3JlZyAmIFRXQV9TVEFUVVNfTUlDUk9DT05UUk9MTEVSX0VSUk9S
KSB7Ci0JCQl0d19jbF9jcmVhdGVfZXZlbnQoY3Rscl9oYW5kbGUsIFRXX0NMX1RSVUUsCi0JCQkJ
VFdfQ0xfTUVTU0FHRV9TT1VSQ0VfQ09NTU9OX0xBWUVSX0VWRU5ULAotCQkJCTB4MTMwNywgMHgx
LCBUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCi0JCQkJIk1pY3JvLWNvbnRyb2xsZXIgZXJy
b3IhICIsCi0JCQkJInN0YXR1cyByZWcgPSAweCV4ICVzIiwKLQkJCQlzdGF0dXNfcmVnLAotCQkJ
CXR3X2NsaV9kZXNjcmliZV9iaXRzKHN0YXR1c19yZWcsIGRlc2MpKTsKLQkJCWVycm9yID0gVFdf
T1NMX0VHRU5GQUlMVVJFOwotCQl9CiAJfQogCXJldHVybihlcnJvcik7CiB9CQpAQCAtODUwLDgg
Kzg0Myw2IEBACiAJCXR3X29zbF9zdHJjcHkoJnN0clt0d19vc2xfc3RybGVuKHN0cildLCAiSE9T
VF9JTlRSLCIpOwogCWlmIChyZWcgJiBUV0FfU1RBVFVTX1BDSV9BQk9SVF9JTlRFUlJVUFQpCiAJ
CXR3X29zbF9zdHJjcHkoJnN0clt0d19vc2xfc3RybGVuKHN0cildLCAiUENJX0FCUlQsIik7Ci0J
aWYgKHJlZyAmIFRXQV9TVEFUVVNfTUlDUk9DT05UUk9MTEVSX0VSUk9SKQotCQl0d19vc2xfc3Ry
Y3B5KCZzdHJbdHdfb3NsX3N0cmxlbihzdHIpXSwgIk1DX0VSUiwiKTsKIAlpZiAocmVnICYgVFdB
X1NUQVRVU19RVUVVRV9FUlJPUl9JTlRFUlJVUFQpCiAJCXR3X29zbF9zdHJjcHkoJnN0clt0d19v
c2xfc3RybGVuKHN0cildLCAiUV9FUlIsIik7CiAJaWYgKHJlZyAmIFRXQV9TVEFUVVNfUENJX1BB
UklUWV9FUlJPUl9JTlRFUlJVUFQpCmRpZmYgLXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfY2xf
c2hhcmUuaCBGcmVlQlNEX0hFQURfdHdhXzNfODBfMDZfMDAzL3R3X2NsX3NoYXJlLmgKLS0tIEZy
ZWVCU0RfSEVBRF90d2FfY3ZzL3R3X2NsX3NoYXJlLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAw
MDAwMDAgLTA3MDAKKysrIEZyZWVCU0RfSEVBRF90d2FfM184MF8wNl8wMDMvdHdfY2xfc2hhcmUu
aAkyMDEwLTA4LTI0IDE4OjAyOjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtMzQ5LDEwICszNDksMTQg
QEAKICNlbmRpZgogCiAKLSNpZm5kZWYgdHdfb3NsX2N0bHJfYnVzeQotLyogQ2FsbGVkIHdoZW4g
Q0wgaXMgdG9vIGJ1c3kgdG8gYWNjZXB0IG5ldyByZXF1ZXN0cy4gKi8KLWV4dGVybiBUV19WT0lE
CXR3X29zbF9jdGxyX2J1c3koc3RydWN0IHR3X2NsX2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSwK
LQlzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVxX2hhbmRsZSk7CisjaWZuZGVmIHR3X29zbF90
aW1lb3V0CisvKiBTdGFydCBPUyB0aW1lb3V0KCkgcm91dGluZSBhZnRlciBjb250cm9sbGVyIHJl
c2V0IHNlcXVlbmNlICovCitleHRlcm4gVFdfVk9JRAl0d19vc2xfdGltZW91dChzdHJ1Y3QgdHdf
Y2xfcmVxX2hhbmRsZSAqcmVxX2hhbmRsZSk7CisjZW5kaWYKKworI2lmbmRlZiB0d19vc2xfdW50
aW1lb3V0CisvKiBTdG9wIE9TIHRpbWVvdXQoKSByb3V0aW5lIGR1cmluZyBjb250cm9sbGVyIHJl
c2V0IHNlcXVlbmNlICovCitleHRlcm4gVFdfVk9JRAl0d19vc2xfdW50aW1lb3V0KHN0cnVjdCB0
d19jbF9yZXFfaGFuZGxlICpyZXFfaGFuZGxlKTsKICNlbmRpZgogCiAKQEAgLTU1Miw2ICs1NTYs
MTAgQEAKIAkpOwogCiAKK2V4dGVybiBUV19WT0lEICB0d19jbF9zZXRfcmVzZXRfbmVlZGVkKHN0
cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rscl9oYW5kbGUpOworZXh0ZXJuIFRXX0lOVDMyIHR3
X2NsX2lzX3Jlc2V0X25lZWRlZChzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUgKmN0bHJfaGFuZGxl
KTsKK2V4dGVybiBUV19JTlQzMiB0d19jbF9pc19hY3RpdmUoc3RydWN0IHR3X2NsX2N0bHJfaGFu
ZGxlICpjdGxyX2hhbmRsZSk7CisKIC8qIENMJ3MgaW50ZXJydXB0IGhhbmRsZXIuICovCiBleHRl
cm4gVFdfSU5UMzIJdHdfY2xfaW50ZXJydXB0KHN0cnVjdCB0d19jbF9jdGxyX2hhbmRsZSAqY3Rs
cl9oYW5kbGUpOwogCmRpZmYgLXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsLmggRnJlZUJT
RF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19vc2wuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMv
dHdfb3NsLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0Rf
SEVBRF90d2FfM184MF8wNl8wMDMvdHdfb3NsLmgJMjAxMC0wOC0yNCAxODowMjoxMi4wMDAwMDAw
MDAgLTA3MDAKQEAgLTc3LDYgKzc3LDcgQEAKIAkJCQkJCUVJTlBST0dSRVNTICovCiAjZGVmaW5l
IFRXX09TTElfUkVRX0ZMQUdTX1BBU1NUSFJVCSgxPDw1KQkvKiBwYXNzIHRocm91Z2ggcmVxdWVz
dCAqLwogI2RlZmluZSBUV19PU0xJX1JFUV9GTEFHU19TTEVFUElORwkoMTw8NikJLyogb3duZXIg
c2xlZXBpbmcgb24gdGhpcyBjbWQgKi8KKyNkZWZpbmUgVFdfT1NMSV9SRVFfRkxBR1NfRkFJTEVE
CSgxPDw3KQkvKiBidXNfZG1hbWFwX2xvYWQoKSBmYWlsZWQgKi8KIAogCiAjaWZkZWYgVFdfT1NM
X0RFQlVHCkBAIC0xMDAsNiArMTAxLDcgQEAKIAlzdHJ1Y3QgdHdhX3NvZnRjCSpjdGxyOwkvKiBw
dHIgdG8gT1NMJ3MgY29udHJvbGxlciBjb250ZXh0ICovCiAJVFdfVk9JRAkJCSpkYXRhOwkvKiBw
dHIgdG8gZGF0YSBiZWluZyBwYXNzZWQgdG8gQ0wgKi8KIAlUV19VSU5UMzIJCWxlbmd0aDsJLyog
bGVuZ3RoIG9mIGJ1ZiBiZWluZyBwYXNzZWQgdG8gQ0wgKi8KKwlUV19VSU5UNjQJCWRlYWRsaW5l
Oy8qIHJlcXVlc3QgdGltZW91dCAoaW4gYWJzb2x1dGUgdGltZSkgKi8KIAogCS8qCiAJICogcHRy
IHRvLCBhbmQgbGVuZ3RoIG9mIGRhdGEgcGFzc2VkIHRvIHVzIGZyb20gYWJvdmUsIGluIGNhc2Ug
YSBidWZmZXIKQEAgLTE1MSw2ICsxNTMsOSBAQAogCXN0cnVjdCBtdHgJCXNpbV9sb2NrX2hhbmRs
ZTsvKiBzaW0gbG9jayBzaGFyZWQgd2l0aCBjYW0gKi8KIAlzdHJ1Y3QgbXR4CQkqc2ltX2xvY2s7
LyogcHRyIHRvIHNpbSBsb2NrICovCiAKKwlzdHJ1Y3QgY2FsbG91dAkJd2F0Y2hkb2dfY2FsbG91
dFsyXTsgLyogRm9yIGNvbW1hbmQgdGltb3V0ICovCisJVFdfVUlOVDMyCQl3YXRjaGRvZ19pbmRl
eDsKKwogI2lmZGVmIFRXX09TTF9ERUJVRwogCXN0cnVjdCB0d19vc2xpX3Ffc3RhdHMJcV9zdGF0
c1tUV19PU0xJX1FfQ09VTlRdOy8qIHF1ZXVlIHN0YXRpc3RpY3MgKi8KICNlbmRpZiAvKiBUV19P
U0xfREVCVUcgKi8KZGlmZiAtdSBGcmVlQlNEX0hFQURfdHdhX2N2cy90d19vc2xfY2FtLmMgRnJl
ZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19vc2xfY2FtLmMKLS0tIEZyZWVCU0RfSEVBRF90
d2FfY3ZzL3R3X29zbF9jYW0uYwkyMDEwLTA4LTI2IDE1OjM0OjMzLjAwMDAwMDAwMCAtMDcwMAor
KysgRnJlZUJTRF9IRUFEX3R3YV8zXzgwXzA2XzAwMy90d19vc2xfY2FtLmMJMjAxMC0wOC0yNCAx
ODowMjoxMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTU1LDcgKzU1LDYgQEAKIAogc3RhdGljIFRXX1ZP
SUQJdHdhX2FjdGlvbihzdHJ1Y3QgY2FtX3NpbSAqc2ltLCB1bmlvbiBjY2IgKmNjYik7CiBzdGF0
aWMgVFdfVk9JRAl0d2FfcG9sbChzdHJ1Y3QgY2FtX3NpbSAqc2ltKTsKLXN0YXRpYyBUV19WT0lE
CXR3YV90aW1lb3V0KFRXX1ZPSUQgKmFyZyk7CiAKIHN0YXRpYyBUV19JTlQzMgl0d19vc2xpX2V4
ZWN1dGVfc2NzaShzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dCAqcmVxLAogCXVuaW9uIGNjYiAq
Y2NiKTsKQEAgLTgxLDcgKzgwLDcgQEAKIAkvKgogCSAqIENyZWF0ZSB0aGUgZGV2aWNlIHF1ZXVl
IGZvciBvdXIgU0lNLgogCSAqLwotCWlmICgoZGV2cSA9IGNhbV9zaW1xX2FsbG9jKFRXX09TTElf
TUFYX05VTV9SRVFVRVNUUykpID09IE5VTEwpIHsKKwlpZiAoKGRldnEgPSBjYW1fc2ltcV9hbGxv
YyhUV19PU0xJX01BWF9OVU1fSU9TKSkgPT0gTlVMTCkgewogCQl0d19vc2xpX3ByaW50ZihzYywg
ImVycm9yID0gJWQiLAogCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAogCQkJVFdfQ0xf
TUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCkBAIC0yNzUsNiArMjc0LDcgQEAKIAkJCQkJ
IkkvTyBzaXplIHRvbyBiaWciLAogCQkJCQljc2lvLT5keGZlcl9sZW4pOwogCQkJCWNjYl9oLT5z
dGF0dXMgPSBDQU1fUkVRX1RPT19CSUc7CisJCQkJY2NiX2gtPnN0YXR1cyAmPSB+Q0FNX1NJTV9R
VUVVRUQ7CiAJCQkJeHB0X2RvbmUoY2NiKTsKIAkJCQlyZXR1cm4oMSk7CiAJCQl9CkBAIC0yOTAs
NiArMjkwLDcgQEAKIAkJCQkweDIxMDcsCiAJCQkJIlhQVF9TQ1NJX0lPOiBHb3QgU0dMaXN0Iik7
CiAJCQljY2JfaC0+c3RhdHVzID0gQ0FNX1JFUV9JTlZBTElEOworCQkJY2NiX2gtPnN0YXR1cyAm
PSB+Q0FNX1NJTV9RVUVVRUQ7CiAJCQl4cHRfZG9uZShjY2IpOwogCQkJcmV0dXJuKDEpOwogCQl9
CkBAIC0zMDYsMTMgKzMwNywyMCBAQAogCQlyZXR1cm4oMSk7CiAJfQogCi0JY2NiX2gtPnRpbWVv
dXRfY2ggPSB0aW1lb3V0KHR3YV90aW1lb3V0LCByZXEsCi0JCShjY2JfaC0+dGltZW91dCAqIGh6
KSAvIDEwMDApOworCXJlcS0+ZGVhZGxpbmUgPSB0d19vc2xfZ2V0X2xvY2FsX3RpbWUoKSArIChj
Y2JfaC0+dGltZW91dCAvIDEwMDApOworCisKIAkvKgogCSAqIHR3YV9tYXBfbG9hZF9kYXRhX2Nh
bGxiYWNrIHdpbGwgZmlsbCBpbiB0aGUgU0dMLAogCSAqIGFuZCBzdWJtaXQgdGhlIEkvTy4KIAkg
Ki8KIAllcnJvciA9IHR3X29zbGlfbWFwX3JlcXVlc3QocmVxKTsKKwlpZiAoKGVycm9yKSAmJiAo
cmVxLT5mbGFncyAmIFRXX09TTElfUkVRX0ZMQUdTX0ZBSUxFRCkpIHsKKwkJcmVxLT5kZWFkbGlu
ZSA9IDA7CisJCWNjYl9oLT5zdGF0dXMgPSBDQU1fUkVRX0NNUF9FUlI7CisJCWNjYl9oLT5zdGF0
dXMgJj0gfkNBTV9TSU1fUVVFVUVEOworCQl4cHRfZG9uZShjY2IpOworCX0KIAlyZXR1cm4oZXJy
b3IpOwogfQogCkBAIC0zNDUsMTAgKzM1MywyMCBAQAogCQkJICogRnJlZXplIHRoZSBzaW1xIHRv
IG1haW50YWluIGNjYiBvcmRlcmluZy4gIFRoZSBuZXh0CiAJCQkgKiBjY2IgdGhhdCBnZXRzIGNv
bXBsZXRlZCB3aWxsIHVuZnJlZXplIHRoZSBzaW1xLgogCQkJICovCisJCQljY2JfaC0+c3RhdHVz
ICY9IH5DQU1fU0lNX1FVRVVFRDsKKwkJCWNjYl9oLT5zdGF0dXMgfD0gQ0FNX1JFUVVFVUVfUkVR
OworCQkJeHB0X2RvbmUoY2NiKTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKCh0d19jbF9pc19y
ZXNldF9uZWVkZWQoJihyZXEtPmN0bHItPmN0bHJfaGFuZGxlKSkpKSB7CisJCQljY2JfaC0+c3Rh
dHVzICY9IH5DQU1fU0lNX1FVRVVFRDsKIAkJCWNjYl9oLT5zdGF0dXMgfD0gQ0FNX1JFUVVFVUVf
UkVROwogCQkJeHB0X2RvbmUoY2NiKTsKKwkJCXR3X29zbGlfcmVxX3FfaW5zZXJ0X3RhaWwocmVx
LCBUV19PU0xJX0ZSRUVfUSk7CiAJCQlicmVhazsKIAkJfQorCiAJCXJlcS0+cmVxX2hhbmRsZS5v
c2xfcmVxX2N0eHQgPSByZXE7CiAJCXJlcS0+cmVxX2hhbmRsZS5pc19pbyA9IFRXX0NMX1RSVUU7
CiAJCXJlcS0+b3JpZ19yZXEgPSBjY2I7CkBAIC0zNjQsMjUgKzM4MiwxNCBAQAogCQlicmVhazsK
IAogCWNhc2UgWFBUX1JFU0VUX0JVUzoKLQkJdHdfY2xfY3JlYXRlX2V2ZW50KCYoc2MtPmN0bHJf
aGFuZGxlKSwgVFdfQ0xfVFJVRSwKKwkJdHdfY2xfY3JlYXRlX2V2ZW50KCYoc2MtPmN0bHJfaGFu
ZGxlKSwgVFdfQ0xfRkFMU0UsCiAJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZF
UiwKIAkJCTB4MjEwOCwgMHgzLCBUV19DTF9TRVZFUklUWV9JTkZPX1NUUklORywKIAkJCSJSZWNl
aXZlZCBSZXNldCBCdXMgcmVxdWVzdCBmcm9tIENBTSIsCiAJCQkiICIpOwogCi0JCW10eF91bmxv
Y2soc2MtPnNpbV9sb2NrKTsKLQkJaWYgKHR3X2NsX3Jlc2V0X2N0bHIoJnNjLT5jdGxyX2hhbmRs
ZSkpIHsKLQkJCXR3X2NsX2NyZWF0ZV9ldmVudCgmKHNjLT5jdGxyX2hhbmRsZSksIFRXX0NMX1RS
VUUsCi0JCQkJVFdfQ0xfTUVTU0FHRV9TT1VSQ0VfRlJFRUJTRF9EUklWRVIsCi0JCQkJMHgyMTA5
LCAweDEsIFRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywKLQkJCQkiRmFpbGVkIHRvIHJlc2V0
IGJ1cyIsCi0JCQkJIiAiKTsKLQkJCWNjYl9oLT5zdGF0dXMgPSBDQU1fUkVRX0NNUF9FUlI7Ci0J
CX0KLQkJZWxzZQotCQkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QOwotCi0JCW10eF9sb2Nr
KHNjLT5zaW1fbG9jayk7CisJCXR3X2NsX3NldF9yZXNldF9uZWVkZWQoJihzYy0+Y3Rscl9oYW5k
bGUpKTsKKwkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QOwogCQl4cHRfZG9uZShjY2IpOwog
CQlicmVhazsKIApAQCAtNDUwLDYgKzQ1Nyw3IEBACiAgICAgICAgICAgICAgICAgcGF0aF9pbnEt
PnRyYW5zcG9ydF92ZXJzaW9uID0gMjsKICAgICAgICAgICAgICAgICBwYXRoX2lucS0+cHJvdG9j
b2wgPSBQUk9UT19TQ1NJOwogICAgICAgICAgICAgICAgIHBhdGhfaW5xLT5wcm90b2NvbF92ZXJz
aW9uID0gU0NTSV9SRVZfMjsKKyAgICAgICAgICAgICAgICBwYXRoX2lucS0+bWF4aW8gPSBUV19D
TF9NQVhfSU9fU0laRTsKIAkJY2NiX2gtPnN0YXR1cyA9IENBTV9SRVFfQ01QOwogCQl4cHRfZG9u
ZShjY2IpOwogCQlicmVhazsKQEAgLTQ4NywzMSArNDk1LDYgQEAKIAogCiAvKgotICogRnVuY3Rp
b24gbmFtZToJdHdhX3RpbWVvdXQKLSAqIERlc2NyaXB0aW9uOgkJRHJpdmVyIGVudHJ5IHBvaW50
IGZvciBiZWluZyBhbGVydGVkIG9uIGEgcmVxdWVzdAotICoJCQl0aW1pbmcgb3V0LgotICoKLSAq
IElucHV0OgkJYXJnCS0tIHB0ciB0byB0aW1lZCBvdXQgcmVxdWVzdAotICogT3V0cHV0OgkJTm9u
ZQotICogUmV0dXJuIHZhbHVlOglOb25lCi0gKi8KLXN0YXRpYyBUV19WT0lECi10d2FfdGltZW91
dChUV19WT0lEICphcmcpCi17Ci0Jc3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9Ci0J
CShzdHJ1Y3QgdHdfb3NsaV9yZXFfY29udGV4dCAqKWFyZzsKLQotCXR3X2NsX2NyZWF0ZV9ldmVu
dCgmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpLCBUV19DTF9UUlVFLAotCQlUV19DTF9NRVNTQUdF
X1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJMHgyMTBCLCAweDEsIFRXX0NMX1NFVkVSSVRZX0VS
Uk9SX1NUUklORywKLQkJIlJlcXVlc3QgdGltZWQgb3V0ISIsCi0JCSJyZXF1ZXN0ID0gJXAiLCBy
ZXEpOwotCXR3X2NsX3Jlc2V0X2N0bHIoJihyZXEtPmN0bHItPmN0bHJfaGFuZGxlKSk7Ci19Ci0K
LQotCi0vKgogICogRnVuY3Rpb24gbmFtZToJdHdfb3NsaV9yZXF1ZXN0X2J1c19zY2FuCiAgKiBE
ZXNjcmlwdGlvbjoJCVJlcXVlc3RzIENBTSBmb3IgYSBzY2FuIG9mIHRoZSBidXMuCiAgKgpAQCAt
NTc0LDIwICs1NTcsMzkgQEAKIAogCiAvKgotICogRnVuY3Rpb24gbmFtZToJdHdfb3NsX2N0bHJf
YnVzeQotICogRGVzY3JpcHRpb246CQlDTCBjYWxscyB0aGlzIGZ1bmN0aW9uIG9uIGNtZCBxdWV1
ZSBmdWxsIG9yIG90aGVyd2lzZSwKLSAqCQkJd2hlbiBpdCBpcyB0b28gYnVzeSB0byBhY2NlcHQg
bmV3IHJlcXVlc3RzLgorICogRnVuY3Rpb24gbmFtZToJdHdfb3NsX3RpbWVvdXQKKyAqIERlc2Ny
aXB0aW9uOgkJQ2FsbCB0byB0aW1lb3V0KCkuCiAgKgotICogSW5wdXQ6CQljdGxyX2hhbmRsZQkt
LSBwdHIgdG8gY29udHJvbGxlciBoYW5kbGUKLSAqCQkJcmVxX2hhbmRsZQktLSBwdHIgdG8gcmVx
dWVzdCBoYW5kbGUgc2VudCBieSBPU0wuCisgKiBJbnB1dDoJCXJlcV9oYW5kbGUgLS0gcHRyIHRv
IHJlcXVlc3QgaGFuZGxlIHNlbnQgYnkgT1NMLgogICogT3V0cHV0OgkJTm9uZQogICogUmV0dXJu
IHZhbHVlOglOb25lCiAgKi8KIFRXX1ZPSUQKLXR3X29zbF9jdGxyX2J1c3koc3RydWN0IHR3X2Ns
X2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSwKLQlzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVx
X2hhbmRsZSkKK3R3X29zbF90aW1lb3V0KHN0cnVjdCB0d19jbF9yZXFfaGFuZGxlICpyZXFfaGFu
ZGxlKQoreworCXN0cnVjdCB0d19vc2xpX3JlcV9jb250ZXh0CSpyZXEgPSByZXFfaGFuZGxlLT5v
c2xfcmVxX2N0eHQ7CisJdW5pb24gY2NiCQkJKmNjYiA9ICh1bmlvbiBjY2IgKikocmVxLT5vcmln
X3JlcSk7CisJc3RydWN0IGNjYl9oZHIJCQkqY2NiX2ggPSAmKGNjYi0+Y2NiX2gpOworCisJcmVx
LT5kZWFkbGluZSA9IHR3X29zbF9nZXRfbG9jYWxfdGltZSgpICsgKGNjYl9oLT50aW1lb3V0IC8g
MTAwMCk7Cit9CisKKworCisvKgorICogRnVuY3Rpb24gbmFtZToJdHdfb3NsX3VudGltZW91dAor
ICogRGVzY3JpcHRpb246CQlJbnZlcnNlIG9mIGNhbGwgdG8gdGltZW91dCgpLgorICoKKyAqIElu
cHV0OgkJcmVxX2hhbmRsZSAtLSBwdHIgdG8gcmVxdWVzdCBoYW5kbGUgc2VudCBieSBPU0wuCisg
KiBPdXRwdXQ6CQlOb25lCisgKiBSZXR1cm4gdmFsdWU6CU5vbmUKKyAqLworVFdfVk9JRAordHdf
b3NsX3VudGltZW91dChzdHJ1Y3QgdHdfY2xfcmVxX2hhbmRsZSAqcmVxX2hhbmRsZSkKIHsKLQl0
d19vc2xpX2Rpc2FsbG93X25ld19yZXF1ZXN0cyhjdGxyX2hhbmRsZS0+b3NsX2N0bHJfY3R4dCwg
cmVxX2hhbmRsZSk7CisJc3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9IHJlcV9oYW5k
bGUtPm9zbF9yZXFfY3R4dDsKKworCXJlcS0+ZGVhZGxpbmUgPSAwOwogfQogCiAKQEAgLTY1NSw3
ICs2NTcsNyBAQAogCiAJdHdfb3NsaV91bm1hcF9yZXF1ZXN0KHJlcSk7CiAKLQl1bnRpbWVvdXQo
dHdhX3RpbWVvdXQsIHJlcSwgY2NiLT5jY2JfaC50aW1lb3V0X2NoKTsKKwlyZXEtPmRlYWRsaW5l
ID0gMDsKIAlpZiAocmVxLT5lcnJvcl9jb2RlKSB7CiAJCS8qIFRoaXMgcmVxdWVzdCBuZXZlciBn
b3Qgc3VibWl0dGVkIHRvIHRoZSBmaXJtd2FyZS4gKi8KIAkJaWYgKHJlcS0+ZXJyb3JfY29kZSA9
PSBFQlVTWSkgewpAQCAtNjgyLDcgKzY4NCw3IEBACiAJCQllbHNlIGlmIChyZXFfcGt0LT5zdGF0
dXMgJiBUV19DTF9FUlJfUkVRX1NDU0lfRVJST1IpCiAJCQkJY2NiLT5jY2JfaC5zdGF0dXMgfD0g
Q0FNX1NDU0lfU1RBVFVTX0VSUk9SOwogCQkJZWxzZSBpZiAocmVxX3BrdC0+c3RhdHVzICYgVFdf
Q0xfRVJSX1JFUV9CVVNfUkVTRVQpCi0JCQkJY2NiLT5jY2JfaC5zdGF0dXMgfD0gQ0FNX1NDU0lf
QlVTX1JFU0VUOworCQkJCWNjYi0+Y2NiX2guc3RhdHVzIHw9IChDQU1fUkVRVUVVRV9SRVEgfCBD
QU1fU0NTSV9CVVNfUkVTRVQpOwogCQkJLyoKIAkJCSAqIElmIG5vbmUgb2YgdGhlIGFib3ZlIGVy
cm9ycyBvY2N1cnJlZCwgc2ltcGx5CiAJCQkgKiBtYXJrIGNvbXBsZXRpb24gZXJyb3IuCmRpZmYg
LXUgRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsX2ZyZWVic2QuYyBGcmVlQlNEX0hFQURfdHdh
XzNfODBfMDZfMDAzL3R3X29zbF9mcmVlYnNkLmMKLS0tIEZyZWVCU0RfSEVBRF90d2FfY3ZzL3R3
X29zbF9mcmVlYnNkLmMJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZy
ZWVCU0RfSEVBRF90d2FfM184MF8wNl8wMDMvdHdfb3NsX2ZyZWVic2QuYwkyMDEwLTA4LTI2IDE1
OjE0OjIyLjAwMDAwMDAwMCAtMDcwMApAQCAtMTc1LDYgKzE3NSw5IEBACiBzdGF0aWMgVFdfSU5U
MzIJdHdhX3NodXRkb3duKGRldmljZV90IGRldik7CiBzdGF0aWMgVFdfVk9JRAl0d2FfYnVzZG1h
X2xvY2soVFdfVk9JRCAqbG9ja19hcmcsIGJ1c19kbWFfbG9ja19vcF90IG9wKTsKIHN0YXRpYyBU
V19WT0lECXR3YV9wY2lfaW50cihUV19WT0lEICphcmcpOworc3RhdGljIFRXX1ZPSUQJdHdhX3dh
dGNoZG9nKFRXX1ZPSUQgKmFyZyk7CitpbnQgdHdhX3NldHVwX2ludHIoc3RydWN0IHR3YV9zb2Z0
YyAqc2MpOworaW50IHR3YV90ZWFyZG93bl9pbnRyKHN0cnVjdCB0d2Ffc29mdGMgKnNjKTsKIAog
c3RhdGljIFRXX0lOVDMyCXR3X29zbGlfYWxsb2NfbWVtKHN0cnVjdCB0d2Ffc29mdGMgKnNjKTsK
IHN0YXRpYyBUV19WT0lECXR3X29zbGlfZnJlZV9yZXNvdXJjZXMoc3RydWN0IHR3YV9zb2Z0YyAq
c2MpOwpAQCAtMjM4LDYgKzI0MSwzMiBAQAogCXJldHVybihFTlhJTyk7CiB9CiAKK2ludCB0d2Ff
c2V0dXBfaW50cihzdHJ1Y3QgdHdhX3NvZnRjICpzYykKK3sKKwlpbnQgZXJyb3IgPSAwOworCisJ
aWYgKCEoc2MtPmludHJfaGFuZGxlKSAmJiAoc2MtPmlycV9yZXMpKSB7CisJCWVycm9yID0gYnVz
X3NldHVwX2ludHIoc2MtPmJ1c19kZXYsIHNjLT5pcnFfcmVzLAorCQkJCQlJTlRSX1RZUEVfQ0FN
IHwgSU5UUl9NUFNBRkUsCisJCQkJCU5VTEwsIHR3YV9wY2lfaW50ciwKKwkJCQkJc2MsICZzYy0+
aW50cl9oYW5kbGUpOworCX0KKwlyZXR1cm4oIGVycm9yICk7Cit9CisKKworaW50IHR3YV90ZWFy
ZG93bl9pbnRyKHN0cnVjdCB0d2Ffc29mdGMgKnNjKQoreworCWludCBlcnJvciA9IDA7CisKKwlp
ZiAoKHNjLT5pbnRyX2hhbmRsZSkgJiYgKHNjLT5pcnFfcmVzKSkgeworCQllcnJvciA9IGJ1c190
ZWFyZG93bl9pbnRyKHNjLT5idXNfZGV2LAorCQkJCQkJc2MtPmlycV9yZXMsIHNjLT5pbnRyX2hh
bmRsZSk7CisJCXNjLT5pbnRyX2hhbmRsZSA9IE5VTEw7CisJfQorCXJldHVybiggZXJyb3IgKTsK
K30KKwogCiAKIC8qCkBAIC0zNTQsMTAgKzM4Myw3IEBACiAJCXR3X29zbGlfZnJlZV9yZXNvdXJj
ZXMoc2MpOwogCQlyZXR1cm4oRU5YSU8pOwogCX0KLQlpZiAoKGVycm9yID0gYnVzX3NldHVwX2lu
dHIoc2MtPmJ1c19kZXYsIHNjLT5pcnFfcmVzLAotCQkJSU5UUl9UWVBFX0NBTSB8IElOVFJfTVBT
QUZFLAotCQkJTlVMTCwgdHdhX3BjaV9pbnRyLAkgICAgCi0JCQlzYywgJnNjLT5pbnRyX2hhbmRs
ZSkpKSB7CisJaWYgKChlcnJvciA9IHR3YV9zZXR1cF9pbnRyKHNjKSkpIHsKIAkJdHdfb3NsaV9w
cmludGYoc2MsICJlcnJvciA9ICVkIiwKIAkJCVRXX0NMX1NFVkVSSVRZX0VSUk9SX1NUUklORywK
IAkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLApAQCAtNDEyLDEwICs0Mzgs
NzcgQEAKIAkJcmV0dXJuKGVycm9yKTsKIAl9CiAKKwlzYy0+d2F0Y2hkb2dfaW5kZXggPSAwOwor
CWNhbGxvdXRfaW5pdCgmKHNjLT53YXRjaGRvZ19jYWxsb3V0WzBdKSwgQ0FMTE9VVF9NUFNBRkUp
OworCWNhbGxvdXRfaW5pdCgmKHNjLT53YXRjaGRvZ19jYWxsb3V0WzFdKSwgQ0FMTE9VVF9NUFNB
RkUpOworCWNhbGxvdXRfcmVzZXQoJihzYy0+d2F0Y2hkb2dfY2FsbG91dFswXSksIDUqaHosIHR3
YV93YXRjaGRvZywgJnNjLT5jdGxyX2hhbmRsZSk7CisKIAlyZXR1cm4oMCk7CiB9CiAKIAorc3Rh
dGljIFRXX1ZPSUQKK3R3YV93YXRjaGRvZyhUV19WT0lEICphcmcpCit7CisJc3RydWN0IHR3X2Ns
X2N0bHJfaGFuZGxlICpjdGxyX2hhbmRsZSA9CisJCShzdHJ1Y3QgdHdfY2xfY3Rscl9oYW5kbGUg
Kilhcmc7CisJc3RydWN0IHR3YV9zb2Z0YwkJKnNjID0gY3Rscl9oYW5kbGUtPm9zbF9jdGxyX2N0
eHQ7CisJaW50CQkJCWk7CisJaW50CQkJCWlfbmVlZF9hX3Jlc2V0ID0gMDsKKwlpbnQJCQkJZHJp
dmVyX2lzX2FjdGl2ZSA9IDA7CisJaW50CQkJCW15X3dhdGNoZG9nX3dhc19wZW5kaW5nID0gMTIz
NDsKKwlUV19VSU5UNjQJCQljdXJyZW50X3RpbWU7CisJc3RydWN0IHR3X29zbGlfcmVxX2NvbnRl
eHQJKm15X3JlcTsKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCWN1cnJlbnRfdGltZSA9
IChUV19VSU5UNjQpICh0d19vc2xfZ2V0X2xvY2FsX3RpbWUoKSk7CisKKwlmb3IgKGkgPSAwOyBp
IDwgVFdfT1NMSV9NQVhfTlVNX1JFUVVFU1RTOyBpKyspIHsKKwkJbXlfcmVxID0gJihzYy0+cmVx
X2N0eF9idWZbaV0pOworCisJCWlmICgobXlfcmVxLT5zdGF0ZSA9PSBUV19PU0xJX1JFUV9TVEFU
RV9CVVNZKSAmJgorCQkJKG15X3JlcS0+ZGVhZGxpbmUpICYmCisJCQkobXlfcmVxLT5kZWFkbGlu
ZSA8IGN1cnJlbnRfdGltZSkpIHsKKwkJCXR3X2NsX3NldF9yZXNldF9uZWVkZWQoY3Rscl9oYW5k
bGUpOworI2lmZGVmICAgIFRXX09TTF9ERUJVRworCQkJZGV2aWNlX3ByaW50Zigoc2MpLT5idXNf
ZGV2LCAiUmVxdWVzdCAlZCB0aW1lZCBvdXQhIGQgPSAlcCwgYyA9ICVwXG4iLCBpLCAodm9pZCop
bXlfcmVxLT5kZWFkbGluZSwgKHZvaWQqKWN1cnJlbnRfdGltZSk7CisjZWxzZSAgLyogVFdfT1NM
X0RFQlVHICovCisJCQlkZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJSZXF1ZXN0ICVkIHRp
bWVkIG91dCFcbiIsIGkpOworI2VuZGlmIC8qIFRXX09TTF9ERUJVRyAqLworCQkJYnJlYWs7CisJ
CX0KKwl9CisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJaV9uZWVkX2FfcmVzZXQgPSB0d19j
bF9pc19yZXNldF9uZWVkZWQoY3Rscl9oYW5kbGUpOworCisJaSA9IChpbnQpICgoc2MtPndhdGNo
ZG9nX2luZGV4KyspICYgMSk7CisKKwlkcml2ZXJfaXNfYWN0aXZlID0gdHdfY2xfaXNfYWN0aXZl
KGN0bHJfaGFuZGxlKTsKKworCWlmIChpX25lZWRfYV9yZXNldCkgeworI2lmZGVmICAgIFRXX09T
TF9ERUJVRworCQlkZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJXYXRjaGRvZyByZXNjaGVk
dWxlZCBpbiA3MCBzZWNvbmRzXG4iKTsKKyNlbmRpZiAvKiBUV19PU0xfREVCVUcgKi8KKwkJbXlf
d2F0Y2hkb2dfd2FzX3BlbmRpbmcgPQorCQkJY2FsbG91dF9yZXNldCgmKHNjLT53YXRjaGRvZ19j
YWxsb3V0W2ldKSwgNzAqaHosIHR3YV93YXRjaGRvZywgJnNjLT5jdGxyX2hhbmRsZSk7CisJCXR3
X2NsX3Jlc2V0X2N0bHIoY3Rscl9oYW5kbGUpOworI2lmZGVmICAgIFRXX09TTF9ERUJVRworCQlk
ZXZpY2VfcHJpbnRmKChzYyktPmJ1c19kZXYsICJXYXRjaGRvZyByZXNldCBjb21wbGV0ZWQhXG4i
KTsKKyNlbmRpZiAvKiBUV19PU0xfREVCVUcgKi8KKwl9IGVsc2UgaWYgKGRyaXZlcl9pc19hY3Rp
dmUpIHsKKwkJbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcgPQorCQkJY2FsbG91dF9yZXNldCgmKHNj
LT53YXRjaGRvZ19jYWxsb3V0W2ldKSwgIDUqaHosIHR3YV93YXRjaGRvZywgJnNjLT5jdGxyX2hh
bmRsZSk7CisJfQorI2lmZGVmICAgIFRXX09TTF9ERUJVRworCWlmIChpX25lZWRfYV9yZXNldCB8
fCBteV93YXRjaGRvZ193YXNfcGVuZGluZykKKwkJZGV2aWNlX3ByaW50Zigoc2MpLT5idXNfZGV2
LCAiaV9uZWVkX2FfcmVzZXQgPSAlZCwgIgorCQkiZHJpdmVyX2lzX2FjdGl2ZSA9ICVkLCBteV93
YXRjaGRvZ193YXNfcGVuZGluZyA9ICVkXG4iLAorCQlpX25lZWRfYV9yZXNldCwgZHJpdmVyX2lz
X2FjdGl2ZSwgbXlfd2F0Y2hkb2dfd2FzX3BlbmRpbmcpOworI2VuZGlmIC8qIFRXX09TTF9ERUJV
RyAqLworfQorCiAKIC8qCiAgKiBGdW5jdGlvbiBuYW1lOgl0d19vc2xpX2FsbG9jX21lbQpAQCAt
NzE1LDkgKzgwOCw3IEBACiAKIAogCS8qIERpc2Nvbm5lY3QgdGhlIGludGVycnVwdCBoYW5kbGVy
LiAqLwotCWlmIChzYy0+aW50cl9oYW5kbGUpCi0JCWlmICgoZXJyb3IgPSBidXNfdGVhcmRvd25f
aW50cihzYy0+YnVzX2RldiwKLQkJCQlzYy0+aXJxX3Jlcywgc2MtPmludHJfaGFuZGxlKSkpCisJ
aWYgKChlcnJvciA9IHR3YV90ZWFyZG93bl9pbnRyKHNjKSkpCiAJCQl0d19vc2xpX2RiZ19kcHJp
bnRmKDEsIHNjLAogCQkJCSJ0ZWFyZG93bl9pbnRyIHJldHVybmVkICVkIiwgZXJyb3IpOwogCkBA
IC04MDksNiArOTAwLDEzIEBACiAKIAl0d19vc2xpX2RiZ19kcHJpbnRmKDMsIHNjLCAiZW50ZXJl
ZCIpOwogCisJLyogRGlzY29ubmVjdCBpbnRlcnJ1cHRzLiAqLworCWVycm9yID0gdHdhX3RlYXJk
b3duX2ludHIoc2MpOworCisJLyogU3RvcCB3YXRjaGRvZyB0YXNrLiAqLworCWNhbGxvdXRfZHJh
aW4oJihzYy0+d2F0Y2hkb2dfY2FsbG91dFswXSkpOworCWNhbGxvdXRfZHJhaW4oJihzYy0+d2F0
Y2hkb2dfY2FsbG91dFsxXSkpOworCiAJLyogRGlzY29ubmVjdCBmcm9tIHRoZSBjb250cm9sbGVy
LiAqLwogCWlmICgoZXJyb3IgPSB0d19jbF9zaHV0ZG93bl9jdGxyKCYoc2MtPmN0bHJfaGFuZGxl
KSwgMCkpKSB7CiAJCXR3X29zbGlfcHJpbnRmKHNjLCAiZXJyb3IgPSAlZCIsCkBAIC05OTcsMzMg
KzEwOTUsMzUgQEAKIAkJCQllcnJvciA9IDA7IC8qIEZhbHNlIGVycm9yICovCiAJCQkJYnJlYWs7
CiAJCQl9Ci0JCQl0d19vc2xpX3ByaW50ZihzYywgInJlcXVlc3QgPSAlcCIsCi0JCQkJVFdfQ0xf
U0VWRVJJVFlfRVJST1JfU1RSSU5HLAotCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0Rf
RFJJVkVSLAotCQkJCTB4MjAxOCwKLQkJCQkiUGFzc3RocnUgcmVxdWVzdCB0aW1lZCBvdXQhIiwK
LQkJCQlyZXEpOwotCQkJLyoKLQkJCSAqIFNob3VsZCBJIGNoZWNrIGhlcmUgaWYgdGhlIHRpbWVv
dXQgaGFwcGVuZWQKLQkJCSAqIGJlY2F1c2Ugb2YgeWV0IGFub3RoZXIgcmVzZXQsIGFuZCBub3Qg
ZG8gYQotCQkJICogc2Vjb25kIHJlc2V0PwotCQkJICovCi0JCQl0d19jbF9yZXNldF9jdGxyKCZz
Yy0+Y3Rscl9oYW5kbGUpOworCQkJaWYgKCEodHdfY2xfaXNfcmVzZXRfbmVlZGVkKCYocmVxLT5j
dGxyLT5jdGxyX2hhbmRsZSkpKSkgeworI2lmZGVmICAgIFRXX09TTF9ERUJVRworCQkJCXR3X29z
bGlfcHJpbnRmKHNjLCAicmVxdWVzdCA9ICVwIiwKKwkJCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1Jf
U1RSSU5HLAorCQkJCQlUV19DTF9NRVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKKwkJCQkJ
MHgyMDE4LAorCQkJCQkiUGFzc3RocnUgcmVxdWVzdCB0aW1lZCBvdXQhIiwKKwkJCQkJcmVxKTsK
KyNlbHNlICAvKiBUV19PU0xfREVCVUcgKi8KKwkJCWRldmljZV9wcmludGYoKHNjKS0+YnVzX2Rl
diwgIlBhc3N0aHJ1IHJlcXVlc3QgdGltZWQgb3V0IVxuIik7CisjZW5kaWYgLyogVFdfT1NMX0RF
QlVHICovCisJCQkJdHdfY2xfcmVzZXRfY3RscigmKHJlcS0+Y3Rsci0+Y3Rscl9oYW5kbGUpKTsK
KwkJCX0KKworCQkJZXJyb3IgPSAwOworCQkJZW5kX3RpbWUgPSB0d19vc2xfZ2V0X2xvY2FsX3Rp
bWUoKSArIHRpbWVvdXQ7CisJCQljb250aW51ZTsKIAkJCS8qCiAJCQkgKiBEb24ndCB0b3VjaCBy
ZXEgYWZ0ZXIgYSByZXNldC4gIEl0IChhbmQgYW55Ci0JCQkgKiBhc3NvY2lhdGVkIGRhdGEpIHdp
bGwgYWxyZWFkeSBoYXZlIGJlZW4KKwkJCSAqIGFzc29jaWF0ZWQgZGF0YSkgd2lsbCBiZQogCQkJ
ICogdW5tYXBwZWQgYnkgdGhlIGNhbGxiYWNrLgogCQkJICovCi0JCQl1c2VyX2J1Zi0+ZHJpdmVy
X3BrdC5vc19zdGF0dXMgPSBlcnJvcjsKLQkJCWVycm9yID0gRVRJTUVET1VUOwotCQkJZ290byBm
d19wYXNzdGhydV9lcnI7CiAJCX0KIAkJLyogCiAJCSAqIEVpdGhlciB0aGUgcmVxdWVzdCBnb3Qg
Y29tcGxldGVkLCBvciB3ZSB3ZXJlIHdva2VuIHVwIGJ5IGEKIAkJICogc2lnbmFsLiAgQ2FsY3Vs
YXRlIHRoZSBuZXcgdGltZW91dCwgaW4gY2FzZSBpdCB3YXMgdGhlIGxhdHRlci4KIAkJICovCiAJ
CXRpbWVvdXQgPSAoZW5kX3RpbWUgLSB0d19vc2xfZ2V0X2xvY2FsX3RpbWUoKSk7Ci0JfQorCX0g
LyogRW5kIG9mIHdoaWxlIGxvb3AgKi8KIAogCS8qIElmIHRoZXJlIHdhcyBhIHBheWxvYWQsIGNv
cHkgaXQgYmFjay4gKi8KIAlpZiAoKCFlcnJvcikgJiYgKHJlcS0+bGVuZ3RoKSkKQEAgLTEwMzcs
MTkgKzExMzcsOSBAQAogCQkJCWVycm9yKTsKIAkKIGZ3X3Bhc3N0aHJ1X2VycjoKLQkvKgotCSAq
IFByaW50IHRoZSBmYWlsdXJlIG1lc3NhZ2UuICBGb3Igc29tZSByZWFzb24sIG9uIGNlcnRhaW4g
T1MgdmVyc2lvbnMsCi0JICogcHJpbnRpbmcgdGhpcyBlcnJvciBtZXNzYWdlIGR1cmluZyByZXNl
dCBoYW5ncyB0aGUgZGlzcGxheSAoYWx0aG91Z2gKLQkgKiB0aGUgcmVzdCBvZiB0aGUgc3lzdGVt
IGlzIHJ1bm5pbmcgZmluZS4gIFNvLCBkb24ndCBwcmludCBpdCBpZiB0aGUKLQkgKiBmYWlsdXJl
IHdhcyBkdWUgdG8gYSByZXNldC4KLQkgKi8KLQlpZiAoKGVycm9yKSAmJiAoZXJyb3IgIT0gVFdf
Q0xfRVJSX1JFUV9CVVNfUkVTRVQpKQotCQl0d19vc2xpX3ByaW50ZihzYywgImVycm9yID0gJWQi
LAkJCi0JCQlUV19DTF9TRVZFUklUWV9FUlJPUl9TVFJJTkcsCi0JCQlUV19DTF9NRVNTQUdFX1NP
VVJDRV9GUkVFQlNEX0RSSVZFUiwKLQkJCTB4MjAxQSwKLQkJCSJGaXJtd2FyZSBwYXNzdGhydSBm
YWlsZWQhIiwKLQkJCWVycm9yKTsKKworCWlmIChyZXFfcGt0LT5zdGF0dXMgPT0gVFdfQ0xfRVJS
X1JFUV9CVVNfUkVTRVQpCisJCWVycm9yID0gRUJVU1k7CiAKIAl1c2VyX2J1Zi0+ZHJpdmVyX3Br
dC5vc19zdGF0dXMgPSBlcnJvcjsKIAkvKiBGcmVlIHJlc291cmNlcy4gKi8KQEAgLTEwNzMsNiAr
MTE2Myw4IEBACiB0d19vc2xfY29tcGxldGVfcGFzc3RocnUoc3RydWN0IHR3X2NsX3JlcV9oYW5k
bGUgKnJlcV9oYW5kbGUpCiB7CiAJc3RydWN0IHR3X29zbGlfcmVxX2NvbnRleHQJKnJlcSA9IHJl
cV9oYW5kbGUtPm9zbF9yZXFfY3R4dDsKKwlzdHJ1Y3QgdHdfY2xfcmVxX3BhY2tldAkJKnJlcV9w
a3QgPQorCQkoc3RydWN0IHR3X2NsX3JlcV9wYWNrZXQgKikoJnJlcS0+cmVxX3BrdCk7CiAJc3Ry
dWN0IHR3YV9zb2Z0YwkJKnNjID0gcmVxLT5jdGxyOwogCiAJdHdfb3NsaV9kYmdfZHByaW50Zig1
LCBzYywgImVudGVyZWQiKTsKQEAgLTExMjAsNiArMTIxMiw5IEBACiAJCQlpZiAocmVxLT5mbGFn
cyAmIFRXX09TTElfUkVRX0ZMQUdTX01BUFBFRCkKIAkJCQlyZXR1cm47CiAKKwkJCWlmIChyZXFf
cGt0LT5zdGF0dXMgPT0gVFdfQ0xfRVJSX1JFUV9CVVNfUkVTRVQpCisJCQkJcmV0dXJuOworCiAJ
CQl0d19vc2xpX3ByaW50ZihzYywgInJlcXVlc3QgPSAlcCIsCiAJCQkJVFdfQ0xfU0VWRVJJVFlf
RVJST1JfU1RSSU5HLAogCQkJCVRXX0NMX01FU1NBR0VfU09VUkNFX0ZSRUVCU0RfRFJJVkVSLApA
QCAtMTE2Niw2ICsxMjYxLDcgQEAKIAkJcmVxLT5yZXFfaGFuZGxlLmlzX2lvID0gMDsKIAkJcmVx
LT5kYXRhID0gTlVMTDsKIAkJcmVxLT5sZW5ndGggPSAwOworCQlyZXEtPmRlYWRsaW5lID0gMDsK
IAkJcmVxLT5yZWFsX2RhdGEgPSBOVUxMOwogCQlyZXEtPnJlYWxfbGVuZ3RoID0gMDsKIAkJcmVx
LT5zdGF0ZSA9IFRXX09TTElfUkVRX1NUQVRFX0lOSVQ7LyogcmVxIGJlaW5nIGluaXRpYWxpemVk
ICovCkBAIC0xMjA3LDYgKzEzMDMsMTEgQEAKIAogCXR3X29zbGlfZGJnX2RwcmludGYoMTAsIHNj
LCAiZW50ZXJlZCIpOwogCisJaWYgKGVycm9yID09IEVJTlZBTCkgeworCQlyZXEtPmVycm9yX2Nv
ZGUgPSBlcnJvcjsKKwkJcmV0dXJuOworCX0KKwogCS8qIE1hcmsgdGhlIHJlcXVlc3QgYXMgY3Vy
cmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gKi8KIAlyZXEtPnN0YXRlID0gVFdfT1NMSV9SRVFfU1RB
VEVfQlVTWTsKIAkvKiBNb3ZlIHRoZSByZXF1ZXN0IGludG8gdGhlIGJ1c3kgcXVldWUuICovCkBA
IC0xNDAwLDYgKzE1MDEsMTQgQEAKIAkJCQltdHhfdW5sb2NrX3NwaW4oc2MtPmlvX2xvY2spOwog
CQkJCWVycm9yID0gMDsKIAkJCX0gZWxzZSB7CisJCQkJdHdfb3NsaV9wcmludGYoc2MsICJlcnJv
ciA9ICVkIiwKKwkJCQkJVFdfQ0xfU0VWRVJJVFlfRVJST1JfU1RSSU5HLAorCQkJCQlUV19DTF9N
RVNTQUdFX1NPVVJDRV9GUkVFQlNEX0RSSVZFUiwKKwkJCQkJMHg5OTk5LAorCQkJCQkiRmFpbGVk
IHRvIG1hcCBETUEgbWVtb3J5ICIKKwkJCQkJImZvciBJL08gcmVxdWVzdCIsCisJCQkJCWVycm9y
KTsKKwkJCQlyZXEtPmZsYWdzIHw9IFRXX09TTElfUkVRX0ZMQUdTX0ZBSUxFRDsKIAkJCQkvKiBG
cmVlIGFsaWdubWVudCBidWZmZXIgaWYgaXQgd2FzIHVzZWQuICovCiAJCQkJaWYgKHJlcS0+Zmxh
Z3MgJgogCQkJCQlUV19PU0xJX1JFUV9GTEFHU19EQVRBX0NPUFlfTkVFREVEKSB7CmRpZmYgLXUg
RnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsX3NoYXJlLmggRnJlZUJTRF9IRUFEX3R3YV8zXzgw
XzA2XzAwMy90d19vc2xfc2hhcmUuaAotLS0gRnJlZUJTRF9IRUFEX3R3YV9jdnMvdHdfb3NsX3No
YXJlLmgJMjAxMC0wOC0yNiAxNTozNDozMy4wMDAwMDAwMDAgLTA3MDAKKysrIEZyZWVCU0RfSEVB
RF90d2FfM184MF8wNl8wMDMvdHdfb3NsX3NoYXJlLmgJMjAxMC0wOC0yNCAxODowMjoxMi4wMDAw
MDAwMDAgLTA3MDAKQEAgLTc1LDcgKzc1LDcgQEAKICNkZWZpbmUgVFdfT1NMX0VOQ0xPU1VSRV9T
VVBQT1JUCiAjZW5kaWYKIAotI2RlZmluZSBUV19PU0xfRFJJVkVSX1ZFUlNJT05fU1RSSU5HCSIz
LjgwLjA2LjAwMiIKKyNkZWZpbmUgVFdfT1NMX0RSSVZFUl9WRVJTSU9OX1NUUklORwkiMy44MC4w
Ni4wMDMiCiAKICNkZWZpbmUJVFdfT1NMX0NBTl9TTEVFUAogCg==

--_002_27AEC73CFDE2EA41849ACAC11A0B39D5E9B0504Acosmail03lsicom_--



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