Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Aug 2001 17:15:18 -0700 (PDT)
From:      Dave Zarzycki <zarzycki@freebsd.org>
To:        <freebsd-net@freebsd.org>
Subject:   RFC: SACK/FACK patch port to Current
Message-ID:  <Pine.LNX.4.33.0108221713240.16888-200000@bonk.apple.com>

next in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---904840148-831484259-998525718=:16888
Content-Type: text/plain; charset="us-ascii"

Attached and tested.

I'd like to merge this in unless anybody objects.

davez

-- 
Dave Zarzycki
Darwin & Mac OS X
Apple Computer, Inc.

---904840148-831484259-998525718=:16888
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="SACK-FreeBSD-current.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0108221715180.16888@bonk.apple.com>
Content-Description: SACK-FreeBSD-current.diff
Content-Disposition: attachment; filename="SACK-FreeBSD-current.diff"

SW5kZXg6IHRjcC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls
ZTogL2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQvdGNwLmgsdg0KcmV0cmll
dmluZyByZXZpc2lvbiAxLjE2DQpkaWZmIC11IC1kIC1iIC13IC11IC1kIC1y
MS4xNiB0Y3AuaA0KLS0tIHRjcC5oCTIwMDEvMDEvMDkgMTg6MjY6MTcJMS4x
Ng0KKysrIHRjcC5oCTIwMDEvMDgvMjIgMjM6MTE6MjENCkBAIC04NSwxMiAr
ODUsMjIgQEANCiAjZGVmaW5lIFRDUE9QVF9TQUNLX1BFUk1JVFRFRAk0CQkv
KiBFeHBlcmltZW50YWwgKi8NCiAjZGVmaW5lICAgIFRDUE9MRU5fU0FDS19Q
RVJNSVRURUQJMg0KICNkZWZpbmUgVENQT1BUX1NBQ0sJCTUJCS8qIEV4cGVy
aW1lbnRhbCAqLw0KKyNkZWZpbmUgICAgVENQT0xFTl9TQUNLICAgICAgICAg
ICAgICAgICA4ICAgLyoyKnNpemVvZih0Y3Bfc2VxKTpsZW4gb2Ygc2FjayBi
bGsgKi8gICAgDQogI2RlZmluZSBUQ1BPUFRfVElNRVNUQU1QCTgNCiAjZGVm
aW5lICAgIFRDUE9MRU5fVElNRVNUQU1QCQkxMA0KICNkZWZpbmUgICAgVENQ
T0xFTl9UU1RBTVBfQVBQQQkJKFRDUE9MRU5fVElNRVNUQU1QKzIpIC8qIGFw
cGVuZGl4IEEgKi8NCiAjZGVmaW5lICAgIFRDUE9QVF9UU1RBTVBfSERSCQlc
DQogICAgIChUQ1BPUFRfTk9QPDwyNHxUQ1BPUFRfTk9QPDwxNnxUQ1BPUFRf
VElNRVNUQU1QPDw4fFRDUE9MRU5fVElNRVNUQU1QKQ0KIA0KKyNkZWZpbmUg
VENQT1BUX1NBQ0tfUEVSTUlUX0hEUiAgXA0KKyAoVENQT1BUX05PUDw8MjR8
VENQT1BUX05PUDw8MTZ8VENQT1BUX1NBQ0tfUEVSTUlUVEVEPDw4fFRDUE9M
RU5fU0FDS19QRVJNSVRURUQpDQorI2RlZmluZSBUQ1BPUFRfU0FDS19IRFIg
ICAgICAgICAgKFRDUE9QVF9OT1A8PDI0fFRDUE9QVF9OT1A8PDE2fFRDUE9Q
VF9TQUNLPDw4KQ0KKw0KKy8qIE1pc2NlbGxhbmVvdXMgY29uc3RhbnRzICov
DQorI2RlZmluZSBNQVhfU0FDS19CTEtTCTYJLyogTWF4ICMgU0FDSyBibG9j
a3Mgc3RvcmVkIGF0IHNlbmRlciBzaWRlICovDQorI2RlZmluZSBUQ1BfTUFY
X1NBQ0sJMwkvKiBNQVggIyBTQUNLcyBzZW50IGluIGFueSBzZWdtZW50ICov
DQorDQorDQogI2RlZmluZQlUQ1BPUFRfQ0MJCTExCQkvKiBDQyBvcHRpb25z
OiBSRkMtMTY0NCAqLw0KICNkZWZpbmUgVENQT1BUX0NDTkVXCQkxMg0KICNk
ZWZpbmUgVENQT1BUX0NDRUNITwkJMTMNCkBAIC0xMzMsNSArMTQzLDYgQEAN
CiAjZGVmaW5lCVRDUF9NQVhTRUcJMHgwMgkvKiBzZXQgbWF4aW11bSBzZWdt
ZW50IHNpemUgKi8NCiAjZGVmaW5lIFRDUF9OT1BVU0gJMHgwNAkvKiBkb24n
dCBwdXNoIGxhc3QgYmxvY2sgb2Ygd3JpdGUgKi8NCiAjZGVmaW5lIFRDUF9O
T09QVAkweDA4CS8qIGRvbid0IHVzZSBUQ1Agb3B0aW9ucyAqLw0KKyNkZWZp
bmUJVENQX1NBQ0tfRElTQUJMRSAweDMwMCAgLyogZGlzYWJsZSBTQUNLcyAo
aWYgZW5hYmxlZCBieSBkZWYuKSAqLw0KIA0KICNlbmRpZg0KSW5kZXg6IHRj
cF9pbnB1dC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
L2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQvdGNwX2lucHV0LmMsdg0KcmV0
cmlldmluZyByZXZpc2lvbiAxLjEzNw0KZGlmZiAtdSAtZCAtYiAtdyAtdSAt
ZCAtcjEuMTM3IHRjcF9pbnB1dC5jDQotLS0gdGNwX2lucHV0LmMJMjAwMS8w
OC8yMiAwMDo1ODoxNgkxLjEzNw0KKysrIHRjcF9pbnB1dC5jCTIwMDEvMDgv
MjIgMjM6MTE6MjENCkBAIC0xMDAsNyArMTAwLDcgQEANCiANCiBNQUxMT0Nf
REVGSU5FKE1fVFNFR1EsICJ0c2VnX3FlbnQiLCAiVENQIHNlZ21lbnQgcXVl
dWUgZW50cnkiKTsNCiANCi1zdGF0aWMgaW50CXRjcHJleG10dGhyZXNoID0g
MzsNCitpbnQJdGNwcmV4bXR0aHJlc2ggPSAzOw0KIHRjcF9jYwl0Y3BfY2Nn
ZW47DQogDQogc3RydWN0CXRjcHN0YXQgdGNwc3RhdDsNCkBAIC04NzAsNiAr
ODcwLDEwIEBADQogCXRwLT50X3JjdnRpbWUgPSB0aWNrczsNCiAJaWYgKFRD
UFNfSEFWRUVTVEFCTElTSEVEKHRwLT50X3N0YXRlKSkNCiAJCWNhbGxvdXRf
cmVzZXQodHAtPnR0X2tlZXAsIHRjcF9rZWVwaWRsZSwgdGNwX3RpbWVyX2tl
ZXAsIHRwKTsNCisjaWZkZWYgVENQX1NBQ0sNCisJaWYgKCF0cC0+c2Fja19k
aXNhYmxlKQ0KKwkJdGNwX2RlbF9zYWNraG9sZXModHAsIHRoKTsgLyogRGVs
ZXRlIHN0YWxlIFNBQ0sgaG9sZXMgKi8NCisjZW5kaWYgLyogVENQX1NBQ0sg
Ki8NCiANCiAJLyoNCiAJICogUHJvY2VzcyBvcHRpb25zIGlmIG5vdCBpbiBM
SVNURU4gc3RhdGUsDQpAQCAtODc4LDYgKzg4MiwxMiBAQA0KIAlpZiAodHAt
PnRfc3RhdGUgIT0gVENQU19MSVNURU4pDQogCQl0Y3BfZG9vcHRpb25zKHRw
LCBvcHRwLCBvcHRsZW4sIHRoLCAmdG8pOw0KIA0KKyNpZmRlZiBUQ1BfU0FD
Sw0KKwlpZiAoIXRwLT5zYWNrX2Rpc2FibGUpIHsNCisJCXRwLT5yY3ZfbGFz
dHN0YXJ0ID0gdGgtPnRoX3NlcTsgLyogbGFzdCByZWMndmQgc2VnbWVudCov
DQorCQl0cC0+cmN2X2xhc3RlbmQgPSB0aC0+dGhfc2VxICsgdGxlbjsNCisJ
fQ0KKyNlbmRpZiAvKiBUQ1BfU0FDSyAqLw0KIAkvKg0KIAkgKiBIZWFkZXIg
cHJlZGljdGlvbjogY2hlY2sgZm9yIHRoZSB0d28gY29tbW9uIGNhc2VzDQog
CSAqIG9mIGEgdW5pLWRpcmVjdGlvbmFsIGRhdGEgeGZlci4gIElmIHRoZSBw
YWNrZXQgaGFzDQpAQCAtOTU0LDYgKzk2NCwxOSBAQA0KIAkJCQl0Y3BzdGF0
LnRjcHNfcmN2YWNrYnl0ZSArPSBhY2tlZDsNCiAJCQkJc2Jkcm9wKCZzby0+
c29fc25kLCBhY2tlZCk7DQogCQkJCXRwLT5zbmRfdW5hID0gdGgtPnRoX2Fj
azsNCisNCisjaWYgZGVmaW5lZChUQ1BfU0FDSykNCisJCQkJLyogDQorCQkJ
CSAqIFdlIHdhbnQgc25kX2xhc3QgdG8gdHJhY2sgc25kX3VuYSBzbw0KKwkJ
CQkgKiBhcyB0byBhdm9pZCBzZXF1ZW5jZSB3cmFwYXJvdW5kIHByb2JsZW1z
DQorCQkJCSAqIGZvciB2ZXJ5IGxhcmdlIHRyYW5zZmVycy4NCisJCQkJICov
DQorCQkJCXRwLT5zbmRfbGFzdCA9IHRwLT5zbmRfdW5hOw0KKyNlbmRpZiAv
KiBUQ1BfU0FDSyAqLw0KKyNpZiBkZWZpbmVkKFRDUF9TQUNLKSAmJiBkZWZp
bmVkKFRDUF9GQUNLKQ0KKwkJCQl0cC0+c25kX2ZhY2sgPSB0cC0+c25kX3Vu
YTsNCisJCQkJdHAtPnJldHJhbl9kYXRhID0gMDsNCisjZW5kaWYgLyogVENQ
X0ZBQ0sgKi8NCiAJCQkJbV9mcmVlbShtKTsNCiAJCQkJTkQ2X0hJTlQodHAp
OyAvKiBzb21lIHByb2dyZXNzIGhhcyBiZWVuIGRvbmUgKi8NCiANCkBAIC05
ODYsNiArMTAwOSwxMiBAQA0KIAkJCSAqIHdpdGggbm90aGluZyBvbiB0aGUg
cmVhc3NlbWJseSBxdWV1ZSBhbmQNCiAJCQkgKiB3ZSBoYXZlIGVub3VnaCBi
dWZmZXIgc3BhY2UgdG8gdGFrZSBpdC4NCiAJCQkgKi8NCisNCisjaWZkZWYg
VENQX1NBQ0sNCisJCQkvKiBDbGVhbiByZWNlaXZlciBTQUNLIHJlcG9ydCBp
ZiBwcmVzZW50ICovDQorCQkJaWYgKCF0cC0+c2Fja19kaXNhYmxlICYmIHRw
LT5yY3ZfbnVtc2Fja3MpDQorCQkJCXRjcF9jbGVhbl9zYWNrcmVwb3J0KHRw
KTsNCisjZW5kaWYgLyogVENQX1NBQ0sgKi8NCiAJCQkrK3RjcHN0YXQudGNw
c19wcmVkZGF0Ow0KIAkJCXRwLT5yY3Zfbnh0ICs9IHRsZW47DQogCQkJdGNw
c3RhdC50Y3BzX3JjdnBhY2srKzsNCkBAIC0xMTMxLDYgKzExNjAsMTcgQEAN
CiAJCQliemVybyh0YW9wLCBzaXplb2YoKnRhb3ApKTsNCiAJCX0NCiAJCXRj
cF9kb29wdGlvbnModHAsIG9wdHAsIG9wdGxlbiwgdGgsICZ0byk7DQorDQor
I2lmZGVmIFRDUF9TQUNLDQorCQkvKg0KKwkJICogSWYgcGVlciBkaWQgbm90
IHNlbmQgYSBTQUNLX1BFUk1JVFRFRCBvcHRpb24gKGkuZS4sIGlmDQorCQkg
KiB0Y3BfZG9vcHRpb25zKCkgZGlkIG5vdCBzZXQgVEZfU0FDS19QRVJNSVQp
LCBzZXQgDQorICAgICAgICAgICAgICAgICAqIHNhY2tfZGlzYWJsZSB0byAx
IGlmIGl0IGlzIGN1cnJlbnRseSAwLg0KKyAgICAgICAgICAgICAgICAgKi8N
CisgICAgICAgICAgICAgICAgaWYgKCF0cC0+c2Fja19kaXNhYmxlKQ0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgodHAtPnRfZmxhZ3MgJiBURl9T
QUNLX1BFUk1JVCkgPT0gMCkgDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cC0+c2Fja19kaXNhYmxlID0gMTsNCisjZW5kaWYNCiAJCWlm
IChpc3MpDQogCQkJdHAtPmlzcyA9IGlzczsNCiAJCWVsc2Ugew0KQEAgLTEx
MzgsNiArMTE3OCwxNCBAQA0KICAJCX0NCiAJCXRwLT5pcnMgPSB0aC0+dGhf
c2VxOw0KIAkJdGNwX3NlbmRzZXFpbml0KHRwKTsNCisjaWYgZGVmaW5lZCAo
VENQX1NBQ0spDQorCQl0cC0+c25kX2xhc3QgPSB0cC0+c25kX3VuYTsNCisj
ZW5kaWYgLyogVENQX1NBQ0sgKi8NCisjaWYgZGVmaW5lZChUQ1BfU0FDSykg
JiYgZGVmaW5lZChUQ1BfRkFDSykNCisJCXRwLT5zbmRfZmFjayA9IHRwLT5z
bmRfdW5hOw0KKwkJdHAtPnJldHJhbl9kYXRhID0gMDsNCisJCXRwLT5zbmRf
YXduZCA9IDA7DQorI2VuZGlmIC8qIFRDUF9GQUNLICovDQogCQl0Y3BfcmN2
c2VxaW5pdCh0cCk7DQogCQl0cC0+c25kX3JlY292ZXIgPSB0cC0+c25kX3Vu
YTsNCiAJCS8qDQpAQCAtMTMwOSw2ICsxMzU3LDE3IEBADQogCQkJCX0NCiAJ
CQl9IGVsc2UNCiAJCQkJdHAtPnRfZmxhZ3MgJj0gflRGX1JDVkRfQ0M7DQor
I2lmZGVmIFRDUF9TQUNLDQorICAgICAgICAgICAgICAgIC8qDQorICAgICAg
ICAgICAgICAgICAqIElmIHdlJ3ZlIHNlbnQgYSBTQUNLX1BFUk1JVFRFRCBv
cHRpb24sIGFuZCB0aGUgcGVlcg0KKyAgICAgICAgICAgICAgICAgKiBhbHNv
IHJlcGxpZWQgd2l0aCBvbmUsIHRoZW4gVEZfU0FDS19QRVJNSVQgc2hvdWxk
IGhhdmUNCisgICAgICAgICAgICAgICAgICogYmVlbiBzZXQgaW4gdGNwX2Rv
b3B0aW9ucygpLiAgSWYgaXQgd2FzIG5vdCwgZGlzYWJsZSBTQUNLcy4NCisg
ICAgICAgICAgICAgICAgICovDQorICAgICAgICAgICAgICAgIGlmICghdHAt
PnNhY2tfZGlzYWJsZSkNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KHRwLT50X2ZsYWdzICYgVEZfU0FDS19QRVJNSVQpID09IDApIA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnNhY2tfZGlzYWJsZSA9
IDE7DQorI2VuZGlmDQorCQ0KIAkJCXRjcHN0YXQudGNwc19jb25uZWN0cysr
Ow0KIAkJCXNvaXNjb25uZWN0ZWQoc28pOw0KIAkJCS8qIERvIHdpbmRvdyBz
Y2FsaW5nIG9uIHRoaXMgY29ubmVjdGlvbj8gKi8NCkBAIC0xODIwLDE0ICsx
ODc5LDM2IEBADQogCQkJCSAqIHRvIGtlZXAgYSBjb25zdGFudCBjd25kIHBh
Y2tldHMgaW4gdGhlDQogCQkJCSAqIG5ldHdvcmsuDQogCQkJCSAqLw0KKw0K
IAkJCQlpZiAoIWNhbGxvdXRfYWN0aXZlKHRwLT50dF9yZXhtdCkgfHwNCiAJ
CQkJICAgIHRoLT50aF9hY2sgIT0gdHAtPnNuZF91bmEpDQogCQkJCQl0cC0+
dF9kdXBhY2tzID0gMDsNCisjaWYgZGVmaW5lZChUQ1BfU0FDSykgJiYgZGVm
aW5lZChUQ1BfRkFDSykNCisJCQkJLyogDQorCQkJCSAqIEluIEZBQ0ssIGNh
biBlbnRlciBmYXN0IHJlYy4gaWYgdGhlIHJlY2VpdmVyDQorCQkJCSAqIHJl
cG9ydHMgYSByZWFzcy4gcXVldWUgbG9uZ2VyIHRoYW4gMyBzZWdzLg0KKwkJ
CQkgKi8NCisJCQkJZWxzZSBpZiAoKyt0cC0+dF9kdXBhY2tzID09IHRjcHJl
eG10dGhyZXNoIHx8DQorCQkJCQkgKChTRVFfR1QodHAtPnNuZF9mYWNrLCB0
Y3ByZXhtdHRocmVzaCAqIA0KKwkJCQkJCSAgdHAtPnRfbWF4c2VnICsgdHAt
PnNuZF91bmEpKSAmJg0KKwkJCQkJICBTRVFfR1QodHAtPnNuZF91bmEsIHRw
LT5zbmRfbGFzdCkpKSB7DQorI2Vsc2UNCiAJCQkJZWxzZSBpZiAoKyt0cC0+
dF9kdXBhY2tzID09IHRjcHJleG10dGhyZXNoKSB7DQorI2VuZGlmIC8qIFRD
UF9GQUNLICovDQogCQkJCQl0Y3Bfc2VxIG9ueHQgPSB0cC0+c25kX254dDsN
CiAJCQkJCXVfaW50IHdpbiA9DQogCQkJCQkgICAgbWluKHRwLT5zbmRfd25k
LCB0cC0+c25kX2N3bmQpIC8gMiAvDQogCQkJCQkJdHAtPnRfbWF4c2VnOw0K
KyNpZiBkZWZpbmVkKFRDUF9TQUNLKQ0KKwkJCQkgIGlmIChTRVFfTFQodGgt
PnRoX2FjaywgdHAtPnNuZF9sYXN0KSl7DQorCQkJCSAgICAvKiANCisJCQkJ
ICAgICAqIEZhbHNlIGZhc3QgcmV0eCBhZnRlciANCisJCQkJICAgICAqIHRp
bWVvdXQuICBEbyBub3QgY3V0IHdpbmRvdy4NCisJCQkJICAgICAqLw0KKwkJ
CQkgICAgdHAtPnRfZHVwYWNrcyA9IDA7DQorCQkJCSAgICBnb3RvIGRyb3A7
DQorCQkJCSAgfQ0KKyNlbHNlDQogCQkJCQlpZiAodGNwX2RvX25ld3Jlbm8g
JiYgU0VRX0xUKHRoLT50aF9hY2ssDQogCQkJCQkgICAgdHAtPnNuZF9yZWNv
dmVyKSkgew0KIAkJCQkJCS8qIEZhbHNlIHJldHJhbnNtaXQsIHNob3VsZCBu
b3QNCkBAIC0xODM4LDIxICsxOTE5LDYyIEBADQogCQkJCQkJKHZvaWQpIHRj
cF9vdXRwdXQodHApOw0KIAkJCQkJCWdvdG8gZHJvcDsNCiAJCQkJCX0NCisj
ZW5kaWYNCiAJCQkJCWlmICh3aW4gPCAyKQ0KIAkJCQkJCXdpbiA9IDI7DQog
CQkJCQl0cC0+c25kX3NzdGhyZXNoID0gd2luICogdHAtPnRfbWF4c2VnOw0K
KyNpZiBkZWZpbmVkKFRDUF9TQUNLKQ0KKwkJCQkgIHRwLT5zbmRfbGFzdCA9
IHRwLT5zbmRfbWF4Ow0KKyNlbHNlDQogCQkJCQl0cC0+c25kX3JlY292ZXIg
PSB0cC0+c25kX21heDsNCisjZW5kaWYNCisjaWZkZWYgVENQX1NBQ0sNCisJ
CQkJICAgIGlmICghdHAtPnNhY2tfZGlzYWJsZSkgew0KIAkJCQkJY2FsbG91
dF9zdG9wKHRwLT50dF9yZXhtdCk7DQogCQkJCQl0cC0+dF9ydHR0aW1lID0g
MDsNCisjaWYgZGVmaW5lZChUQ1BfU0FDSykgJiYgZGVmaW5lZChUQ1BfRkFD
SykgDQorCQkJCSAgICAgIHRwLT50X2R1cGFja3MgPSB0Y3ByZXhtdHRocmVz
aDsNCisJCQkJICAgICAgKHZvaWQpIHRjcF9vdXRwdXQodHApOw0KKwkJCQkg
ICAgICAvKg0KKwkJCQkgICAgICAgKiBEdXJpbmcgRlIsIHNuZF9jd25kIGlz
IGhlbGQNCisJCQkJICAgICAgICogY29uc3RhbnQgZm9yIEZBQ0suDQorCQkJ
CSAgICAgICAqLw0KKwkJCQkgICAgICB0cC0+c25kX2N3bmQgPSB0cC0+c25k
X3NzdGhyZXNoOw0KKyNlbHNlDQorCQkJCSAgICAgIC8qIA0KKwkJCQkgICAg
ICAgKiB0Y3Bfb3V0cHV0KCkgd2lsbCBzZW5kDQorCQkJCSAgICAgICAqIG9s
ZGVzdCBTQUNLLWVsaWdpYmxlIHJ0eC4NCisJCQkJICAgICAgICovDQorCQkJ
CSAgICAgICh2b2lkKSB0Y3Bfb3V0cHV0KHRwKTsNCisJCQkJICAgICAgdHAt
PnNuZF9jd25kID0gdHAtPnNuZF9zc3RocmVzaCsNCisJCQkJICAgICAgdHAt
PnRfbWF4c2VnICogdHAtPnRfZHVwYWNrczsNCisjZW5kaWYgLyogVENQX0ZB
Q0sgKi8NCisJCQkJICAgICAgZ290byBkcm9wOw0KKwkJCQkgICAgfQ0KKyNl
bmRpZiAvKiBUQ1BfU0FDSyAqLw0KKwkJCQkgIGNhbGxvdXRfc3RvcCh0cC0+
dHRfcmV4bXQpOw0KKwkJCQkgIHRwLT50X3J0dHRpbWUgPSAwOw0KIAkJCQkJ
dHAtPnNuZF9ueHQgPSB0aC0+dGhfYWNrOw0KIAkJCQkJdHAtPnNuZF9jd25k
ID0gdHAtPnRfbWF4c2VnOw0KIAkJCQkJKHZvaWQpIHRjcF9vdXRwdXQodHAp
Ow0KKwkJCQkgIA0KIAkJCQkJdHAtPnNuZF9jd25kID0gdHAtPnNuZF9zc3Ro
cmVzaCArDQogCQkJCQkgICAgICAgdHAtPnRfbWF4c2VnICogdHAtPnRfZHVw
YWNrczsNCiAJCQkJCWlmIChTRVFfR1Qob254dCwgdHAtPnNuZF9ueHQpKQ0K
IAkJCQkJCXRwLT5zbmRfbnh0ID0gb254dDsNCiAJCQkJCWdvdG8gZHJvcDsN
CiAJCQkJfSBlbHNlIGlmICh0cC0+dF9kdXBhY2tzID4gdGNwcmV4bXR0aHJl
c2gpIHsNCisjaWYgZGVmaW5lZChUQ1BfU0FDSykgJiYgZGVmaW5lZChUQ1Bf
RkFDSykNCisJCQkJICAvKiANCisJCQkJICAgKiB3aGlsZSAoYXduZCA8IGN3
bmQpIA0KKwkJCQkgICAqICAgICAgICAgc2VuZHNvbWV0aGluZygpOyANCisJ
CQkJICAgKi8NCisJCQkJICBpZiAoIXRwLT5zYWNrX2Rpc2FibGUpIHsNCisJ
CQkJICAgIGlmICh0cC0+c25kX2F3bmQgPCB0cC0+c25kX2N3bmQpDQorCQkJ
CSAgICAgIHRjcF9vdXRwdXQodHApOw0KKwkJCQkgICAgZ290byBkcm9wOw0K
KwkJCQkgIH0NCisjZW5kaWYgLyogVENQX0ZBQ0sgKi8NCiAJCQkJCXRwLT5z
bmRfY3duZCArPSB0cC0+dF9tYXhzZWc7DQogCQkJCQkodm9pZCkgdGNwX291
dHB1dCh0cCk7DQogCQkJCQlnb3RvIGRyb3A7DQpAQCAtMTg2MSwxMCArMTk4
Myw1NyBAQA0KIAkJCQl0cC0+dF9kdXBhY2tzID0gMDsNCiAJCQlicmVhazsN
CiAJCX0NCisJCQkNCiAJCS8qDQogCQkgKiBJZiB0aGUgY29uZ2VzdGlvbiB3
aW5kb3cgd2FzIGluZmxhdGVkIHRvIGFjY291bnQNCiAJCSAqIGZvciB0aGUg
b3RoZXIgc2lkZSdzIGNhY2hlZCBwYWNrZXRzLCByZXRyYWN0IGl0Lg0KKwkJ
CSAqIElmIHRoZSBjb25nZXN0aW9uIHdpbmRvdyB3YXMgaW5mbGF0ZWQgdG8g
YWNjb3VudA0KKwkJCSAqIGZvciB0aGUgb3RoZXIgc2lkZSdzIGNhY2hlZCBw
YWNrZXRzLCByZXRyYWN0IGl0Lg0KIAkJICovDQorI2lmIGRlZmluZWQoVENQ
X1NBQ0spDQorCQkJaWYgKCF0cC0+c2Fja19kaXNhYmxlKSB7DQorCQkJICBp
ZiAodHAtPnRfZHVwYWNrcyA+PSB0Y3ByZXhtdHRocmVzaCkgew0KKwkJCQkv
KiBDaGVjayBmb3IgYSBwYXJ0aWFsIEFDSyAqLw0KKwkJCSAgICBpZiAodGNw
X3NhY2tfcGFydGlhbGFjayh0cCwgdGgpKSB7DQorI2lmIGRlZmluZWQoVENQ
X1NBQ0spICYmIGRlZmluZWQoVENQX0ZBQ0spDQorCQkJICAgICAgLyogRm9y
Y2UgY2FsbCB0byB0Y3Bfb3V0cHV0ICovDQorCQkJICAgICAgaWYgKHRwLT5z
bmRfYXduZCA8IHRwLT5zbmRfY3duZCkgDQorCQkJCW5lZWRvdXRwdXQgPSAx
Ow0KKyNlbHNlDQorCQkJICAgICAgdHAtPnNuZF9jd25kICs9IHRwLT50X21h
eHNlZzsNCisJCQkgICAgICBuZWVkb3V0cHV0ID0gMTsNCisjZW5kaWYgLyog
VENQX0ZBQ0sgKi8NCisJCQkgICAgfSBlbHNlIHsNCisJCQkgICAgICAvKiBP
dXQgb2YgZmFzdCByZWNvdmVyeSAqLw0KKwkJCSAgICAgIHRwLT5zbmRfY3du
ZCA9IHRwLT5zbmRfc3N0aHJlc2g7DQorCQkJICAgICAgaWYgKHRjcF9zZXFf
c3VidHJhY3QodHAtPnNuZF9tYXgsIA0KKwkJCQkJCSAgIHRoLT50aF9hY2sp
IDwgdHAtPnNuZF9zc3RocmVzaCkNCisJCQkJdHAtPnNuZF9jd25kID0gDQor
CQkJCSAgdGNwX3NlcV9zdWJ0cmFjdCh0cC0+c25kX21heCwNCisJCQkJCSAg
ICAgICAgICAgdGgtPnRoX2Fjayk7DQorCQkJICAgICAgdHAtPnRfZHVwYWNr
cyA9IDA7DQorI2lmIGRlZmluZWQoVENQX1NBQ0spICYmIGRlZmluZWQoVENQ
X0ZBQ0spDQorCQkJICAgICAgaWYgKFNFUV9HVCh0aC0+dGhfYWNrLCB0cC0+
c25kX2ZhY2spKQ0KKwkJCQl0cC0+c25kX2ZhY2sgPSB0aC0+dGhfYWNrOw0K
KyNlbmRpZiAvKiBUQ1BfRkFDSyAqLw0KKwkJCSAgICB9DQorCQkJICB9IA0K
KwkJCX0gZWxzZSB7DQorCQkJICBpZiAodHAtPnRfZHVwYWNrcyA+PSB0Y3By
ZXhtdHRocmVzaCAmJiANCisJCQkgICAgICAhdGNwX25ld3Jlbm8odHAsIHRo
KSkgew0KKwkJCQkvKiBPdXQgb2YgZmFzdCByZWNvdmVyeSAqLw0KKwkJCSAg
ICB0cC0+c25kX2N3bmQgPSB0cC0+c25kX3NzdGhyZXNoOw0KKwkJCSAgICBp
ZiAodGNwX3NlcV9zdWJ0cmFjdCh0cC0+c25kX21heCwgdGgtPnRoX2Fjaykg
PA0KKwkJCQl0cC0+c25kX3NzdGhyZXNoKQ0KKwkJCSAgICAgIHRwLT5zbmRf
Y3duZCA9IA0KKwkJCQl0Y3Bfc2VxX3N1YnRyYWN0KHRwLT5zbmRfbWF4LA0K
KwkJCQkJCSB0aC0+dGhfYWNrKTsNCisJCQkgICAgdHAtPnRfZHVwYWNrcyA9
IDA7DQorCQkJICB9DQorCQkJfQ0KKwkJCWlmICh0cC0+dF9kdXBhY2tzIDwg
dGNwcmV4bXR0aHJlc2gpDQorCQkJICB0cC0+dF9kdXBhY2tzID0gMDsNCisj
ZWxzZSAvKiBlbHNlIG5vIFRDUF9TQUNLICovDQogCQlpZiAodGNwX2RvX25l
d3Jlbm8gPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
cC0+dF9kdXBhY2tzID49IHRjcHJleG10dGhyZXNoICYmDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cC0+c25kX2N3bmQgPiB0cC0+c25k
X3NzdGhyZXNoKQ0KQEAgLTE4ODUsNiArMjA1NCw4IEBADQogICAgICAgICAg
ICAgICAgICAgICAgICAgCXRwLT5zbmRfY3duZCA9IHRwLT5zbmRfc3N0aHJl
c2g7DQogICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnRfZHVwYWNrcyA9
IDA7DQogICAgICAgICAgICAgICAgIH0NCisjZW5kaWYNCisJCQkNCiAJCWlm
IChTRVFfR1QodGgtPnRoX2FjaywgdHAtPnNuZF9tYXgpKSB7DQogCQkJdGNw
c3RhdC50Y3BzX3JjdmFja3Rvb211Y2grKzsNCiAJCQlnb3RvIGRyb3BhZnRl
cmFjazsNCkBAIC0xOTgyLDggKzIxNTMsMTQgQEANCiAJCSAqIGluIE5ld1Jl
bm8gZmFzdCByZWNvdmVyeSBtb2RlLCBzbyB3ZSBsZWF2ZSB0aGUgY29uZ2Vz
dGlvbg0KIAkJICogd2luZG93IGFsb25lLg0KIAkJICovDQorDQorI2lmIGRl
ZmluZWQgKFRDUF9TQUNLKQ0KKwkJaWYgKHRwLT50X2R1cGFja3MgPCB0Y3By
ZXhtdHRocmVzaCkNCisJCSAgdHAtPnNuZF9jd25kID0gbWluKGN3ICsgaW5j
cixUQ1BfTUFYV0lOPDx0cC0+c25kX3NjYWxlKTsNCisjZWxzZQkNCiAJCWlm
ICh0Y3BfZG9fbmV3cmVubyA9PSAwIHx8IHRwLT50X2R1cGFja3MgPT0gMCkN
CiAJCQl0cC0+c25kX2N3bmQgPSBtaW4oY3cgKyBpbmNyLFRDUF9NQVhXSU48
PHRwLT5zbmRfc2NhbGUpOw0KKyNlbmRpZg0KIAkJfQ0KIAkJaWYgKGFja2Vk
ID4gc28tPnNvX3NuZC5zYl9jYykgew0KIAkJCXRwLT5zbmRfd25kIC09IHNv
LT5zb19zbmQuc2JfY2M7DQpAQCAtMTk5OCw2ICsyMTc1LDE2IEBADQogCQl0
cC0+c25kX3VuYSA9IHRoLT50aF9hY2s7DQogCQlpZiAoU0VRX0xUKHRwLT5z
bmRfbnh0LCB0cC0+c25kX3VuYSkpDQogCQkJdHAtPnNuZF9ueHQgPSB0cC0+
c25kX3VuYTsNCisjaWYgZGVmaW5lZCAoVENQX1NBQ0spICYmIGRlZmluZWQg
KFRDUF9GQUNLKQ0KKwkJaWYgKFNFUV9HVCh0cC0+c25kX3VuYSwgdHAtPnNu
ZF9mYWNrKSkgew0KKwkJICB0cC0+c25kX2ZhY2sgPSB0cC0+c25kX3VuYTsN
CisJCSAgLyogVXBkYXRlIHNuZF9hd25kIGZvciBwYXJ0aWFsIEFDSw0KKwkJ
ICAgKiB3aXRob3V0IGFueSBTQUNLIGJsb2Nrcy4NCisJCSAgICovDQorCQkg
IHRwLT5zbmRfYXduZCA9IHRjcF9zZXFfc3VidHJhY3QodHAtPnNuZF9ueHQs
DQorCQkJCQkJICB0cC0+c25kX2ZhY2spICsgdHAtPnJldHJhbl9kYXRhOw0K
KwkJfQ0KKyNlbmRpZg0KIA0KIAkJc3dpdGNoICh0cC0+dF9zdGF0ZSkgew0K
IA0KQEAgLTIxOTYsNyArMjM4MywxMCBAQA0KIAkJCXRoZmxhZ3MgPSB0Y3Bf
cmVhc3ModHAsIHRoLCAmdGxlbiwgbSk7DQogCQkJdHAtPnRfZmxhZ3MgfD0g
VEZfQUNLTk9XOw0KIAkJfQ0KLQ0KKyNpZmRlZiBUQ1BfU0FDSw0KKwkJaWYg
KCF0cC0+c2Fja19kaXNhYmxlKQ0KKwkJCXRjcF91cGRhdGVfc2Fja19saXN0
KHRwKTsgDQorI2VuZGlmIA0KIAkJLyoNCiAJCSAqIE5vdGUgdGhlIGFtb3Vu
dCBvZiBkYXRhIHRoYXQgcGVlciBoYXMgc2VudCBpbnRvDQogCQkgKiBvdXIg
d2luZG93LCBpbiBvcmRlciB0byBlc3RpbWF0ZSB0aGUgc2VuZGVyJ3MNCkBA
IC0yMjA4LDYgKzIzOTgsNyBAQA0KIAkJdGhmbGFncyAmPSB+VEhfRklOOw0K
IAl9DQogDQorDQogCS8qDQogCSAqIElmIEZJTiBpcyByZWNlaXZlZCBBQ0sg
dGhlIEZJTiBhbmQgbGV0IHRoZSB1c2VyIGtub3cNCiAJICogdGhhdCB0aGUg
Y29ubmVjdGlvbiBpcyBjbG9zaW5nLg0KQEAgLTI0OTgsMTMgKzI2ODksNDM5
IEBADQogCQkJICAgIChjaGFyICopJnRvLT50b19jY2VjaG8sIHNpemVvZih0
by0+dG9fY2NlY2hvKSk7DQogCQkJTlRPSEwodG8tPnRvX2NjZWNobyk7DQog
CQkJYnJlYWs7DQorI2lmZGVmIFRDUF9TQUNLIA0KKwkJY2FzZSBUQ1BPUFRf
U0FDS19QRVJNSVRURUQ6DQorCQkJaWYgKHRwLT5zYWNrX2Rpc2FibGUgfHwg
b3B0bGVuIT1UQ1BPTEVOX1NBQ0tfUEVSTUlUVEVEKQ0KKwkJCQljb250aW51
ZTsNCisJCQlpZiAodGgtPnRoX2ZsYWdzICYgVEhfU1lOKQ0KKwkJCQkvKiBN
VVNUIG9ubHkgYmUgc2V0IG9uIFNZTiAqLw0KKwkJCQl0cC0+dF9mbGFncyB8
PSBURl9TQUNLX1BFUk1JVDsNCisJCQlicmVhazsNCisJCWNhc2UgVENQT1BU
X1NBQ0s6DQorCQkJaWYgKHRjcF9zYWNrX29wdGlvbih0cCwgdGgsIGNwLCBv
cHRsZW4pKQ0KKwkJCQljb250aW51ZTsNCisJCQlicmVhazsNCisjZW5kaWYg
ICAgIA0KIAkJfQ0KIAl9DQogCWlmICh0aC0+dGhfZmxhZ3MgJiBUSF9TWU4p
DQogCQl0Y3BfbXNzKHRwLCBtc3MpOwkvKiBzZXRzIHRfbWF4c2VnICovDQog
fQ0KIA0KKyNpZiBkZWZpbmVkKFRDUF9TQUNLKQ0KK3VfbG9uZyANCit0Y3Bf
c2VxX3N1YnRyYWN0KGEsIGIpDQorCXVfbG9uZyBhLCBiOw0KK3sgDQorCXJl
dHVybiAoKGxvbmcpKGEgLSBiKSk7IA0KK30NCisjZW5kaWYNCisNCisNCisN
CisjaWZkZWYgVENQX1NBQ0sgDQorLyoNCisgKiBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCB1cG9uIHJlY2VpcHQgb2YgbmV3IHZhbGlkIGRhdGEgKHdoaWxl
IG5vdCBpbiBoZWFkZXINCisgKiBwcmVkaWN0aW9uIG1vZGUpLCBhbmQgaXQg
dXBkYXRlcyB0aGUgb3JkZXJlZCBsaXN0IG9mIHNhY2tzLiANCisgKi8NCit2
b2lkIA0KK3RjcF91cGRhdGVfc2Fja19saXN0KHRwKQ0KKwlzdHJ1Y3QgdGNw
Y2IgKnRwOyANCit7ICAgIA0KKwkvKiANCisJICogRmlyc3QgcmVwb3J0ZWQg
YmxvY2sgTVVTVCBiZSB0aGUgbW9zdCByZWNlbnQgb25lLiAgU3Vic2VxdWVu
dA0KKwkgKiBibG9ja3MgU0hPVUxEIGJlIGluIHRoZSBvcmRlciBpbiB3aGlj
aCB0aGV5IGFycml2ZWQgYXQgdGhlDQorCSAqIHJlY2VpdmVyLiAgVGhlc2Ug
dHdvIGNvbmRpdGlvbnMgbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gZnVsbHkN
CisJICogY29tcGxpYW50IHdpdGggUkZDIDIwMTguDQorCSAqLyAgICAgDQor
CWludCBpLCBqID0gMCwgY291bnQgPSAwLCBsYXN0cG9zID0gLTE7DQorCXN0
cnVjdCBzYWNrYmxrIHNhY2ssIGZpcnN0c2FjaywgdGVtcFtNQVhfU0FDS19C
TEtTXTsNCisgICAgDQorCS8qIEZpcnN0IGNsZWFuIHVwIGN1cnJlbnQgbGlz
dCBvZiBzYWNrcyAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgdHAtPnJjdl9udW1z
YWNrczsgaSsrKSB7DQorCQlzYWNrID0gdHAtPnNhY2tibGtzW2ldOw0KKwkJ
aWYgKHNhY2suc3RhcnQgPT0gMCAmJiBzYWNrLmVuZCA9PSAwKSB7DQorCQkJ
Y291bnQrKzsgLyogY291bnQgPSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGRp
c2NhcmRlZCAqLw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKwkJaWYgKFNFUV9M
RVEoc2Fjay5lbmQsIHRwLT5yY3Zfbnh0KSkgew0KKwkJCXRwLT5zYWNrYmxr
c1tpXS5zdGFydCA9IHRwLT5zYWNrYmxrc1tpXS5lbmQgPSAwOw0KKwkJCWNv
dW50Kys7DQorCQl9IGVsc2UgeyANCisJCQl0ZW1wW2pdLnN0YXJ0ID0gdHAt
PnNhY2tibGtzW2ldLnN0YXJ0Ow0KKwkJCXRlbXBbaisrXS5lbmQgPSB0cC0+
c2Fja2Jsa3NbaV0uZW5kOw0KKwkJfQ0KKwl9ICAgDQorCXRwLT5yY3ZfbnVt
c2Fja3MgLT0gY291bnQ7DQorCWlmICh0cC0+cmN2X251bXNhY2tzID09IDAp
IHsgLyogbm8gc2FjayBibG9ja3MgY3VycmVudGx5IChmYXN0IHBhdGgpICov
DQorCQl0Y3BfY2xlYW5fc2Fja3JlcG9ydCh0cCk7DQorCQlpZiAoU0VRX0xU
KHRwLT5yY3Zfbnh0LCB0cC0+cmN2X2xhc3RzdGFydCkpIHsNCisJCQkvKiA9
PT4gbmVlZCBmaXJzdCBzYWNrIGJsb2NrICovDQorCQkJdHAtPnNhY2tibGtz
WzBdLnN0YXJ0ID0gdHAtPnJjdl9sYXN0c3RhcnQ7DQorCQkJdHAtPnNhY2ti
bGtzWzBdLmVuZCA9IHRwLT5yY3ZfbGFzdGVuZDsNCisJCQl0cC0+cmN2X251
bXNhY2tzID0gMTsNCisJCX0NCisJCXJldHVybjsNCisJfQ0KKwkvKiBPdGhl
cndpc2UsIHNhY2sgYmxvY2tzIGFyZSBhbHJlYWR5IHByZXNlbnQuICovDQor
CWZvciAoaSA9IDA7IGkgPCB0cC0+cmN2X251bXNhY2tzOyBpKyspDQorCQl0
cC0+c2Fja2Jsa3NbaV0gPSB0ZW1wW2ldOyAvKiBmaXJzdCBjb3B5IGJhY2sg
c2FjayBsaXN0ICovDQorCWlmIChTRVFfR0VRKHRwLT5yY3Zfbnh0LCB0cC0+
cmN2X2xhc3RlbmQpKSANCisJCXJldHVybjsgICAgIC8qIHNhY2sgbGlzdCBy
ZW1haW5zIHVuY2hhbmdlZCAqLw0KKwkvKiANCisJICogRnJvbSBoZXJlLCBz
ZWdtZW50IGp1c3QgcmVjZWl2ZWQgc2hvdWxkIGJlIChwYXJ0IG9mKSB0aGUg
MXN0IHNhY2suDQorCSAqIEdvIHRocm91Z2ggbGlzdCwgcG9zc2libHkgY29h
bGVzY2luZyBzYWNrIGJsb2NrIGVudHJpZXMuDQorCSAqLw0KKwlmaXJzdHNh
Y2suc3RhcnQgPSB0cC0+cmN2X2xhc3RzdGFydDsNCisJZmlyc3RzYWNrLmVu
ZCA9IHRwLT5yY3ZfbGFzdGVuZDsNCisJZm9yIChpID0gMDsgaSA8IHRwLT5y
Y3ZfbnVtc2Fja3M7IGkrKykgew0KKwkJc2FjayA9IHRwLT5zYWNrYmxrc1tp
XTsNCisJCWlmIChTRVFfTFQoc2Fjay5lbmQsIGZpcnN0c2Fjay5zdGFydCkg
fHwNCisJCSAgICBTRVFfR1Qoc2Fjay5zdGFydCwgZmlyc3RzYWNrLmVuZCkp
DQorCQkJY29udGludWU7IC8qIG5vIG92ZXJsYXAgKi8NCisJCWlmIChzYWNr
LnN0YXJ0ID09IGZpcnN0c2Fjay5zdGFydCAmJiBzYWNrLmVuZCA9PSBmaXJz
dHNhY2suZW5kKXsNCisJCQkvKiANCisJCQkgKiBpZGVudGljYWwgYmxvY2s7
IGRlbGV0ZSBpdCBoZXJlIHNpbmNlIHdlIHdpbGwNCisJCQkgKiBtb3ZlIGl0
IHRvIHRoZSBmcm9udCBvZiB0aGUgbGlzdC4NCisJCQkgKi8NCisJCQl0cC0+
c2Fja2Jsa3NbaV0uc3RhcnQgPSB0cC0+c2Fja2Jsa3NbaV0uZW5kID0gMDsN
CisJCQlsYXN0cG9zID0gaTsgICAgLyogbGFzdCBwb3NuIHdpdGggYSB6ZXJv
IGVudHJ5ICovDQorCQkJY29udGludWU7DQorCQl9DQorCQlpZiAoU0VRX0xF
UShzYWNrLnN0YXJ0LCBmaXJzdHNhY2suc3RhcnQpKQ0KKwkJCWZpcnN0c2Fj
ay5zdGFydCA9IHNhY2suc3RhcnQ7IC8qIG1lcmdlIGJsb2NrcyAqLw0KKwkJ
aWYgKFNFUV9HRVEoc2Fjay5lbmQsIGZpcnN0c2Fjay5lbmQpKQ0KKwkJCWZp
cnN0c2Fjay5lbmQgPSBzYWNrLmVuZDsgICAgIC8qIG1lcmdlIGJsb2NrcyAq
Lw0KKwkJdHAtPnNhY2tibGtzW2ldLnN0YXJ0ID0gdHAtPnNhY2tibGtzW2ld
LmVuZCA9IDA7DQorCQlsYXN0cG9zID0gaTsgICAgLyogbGFzdCBwb3NuIHdp
dGggYSB6ZXJvIGVudHJ5ICovDQorCX0NCisJaWYgKGxhc3Rwb3MgIT0gLTEp
IHsgICAgLyogYXQgbGVhc3Qgb25lIG1lcmdlICovDQorCQlmb3IgKGkgPSAw
LCBqID0gMTsgaSA8IHRwLT5yY3ZfbnVtc2Fja3M7IGkrKykgew0KKwkJCXNh
Y2sgPSB0cC0+c2Fja2Jsa3NbaV07DQorCQkJaWYgKHNhY2suc3RhcnQgPT0g
MCAmJiBzYWNrLmVuZCA9PSAwKQ0KKwkJCQljb250aW51ZTsNCisJCQl0ZW1w
W2orK10gPSBzYWNrOw0KKwkJfQ0KKwkJdHAtPnJjdl9udW1zYWNrcyA9IGo7
IC8qIGluY2x1ZGluZyBmaXJzdCBibGsgKGFkZGVkIGxhdGVyKSAqLw0KKwkJ
Zm9yIChpID0gMTsgaSA8IHRwLT5yY3ZfbnVtc2Fja3M7IGkrKykgLyogbm93
IGNvcHkgYmFjayAqLw0KKwkJCXRwLT5zYWNrYmxrc1tpXSA9IHRlbXBbaV07
DQorCX0gZWxzZSB7ICAgICAgICAvKiBubyBtZXJnZXMgLS0gc2hpZnQgc2Fj
a3MgYnkgMSAqLw0KKwkJaWYgKHRwLT5yY3ZfbnVtc2Fja3MgPCBNQVhfU0FD
S19CTEtTKQ0KKwkJCXRwLT5yY3ZfbnVtc2Fja3MrKzsNCisJCWZvciAoaSA9
IHRwLT5yY3ZfbnVtc2Fja3MtMTsgaSA+IDA7IGktLSkNCisJCQl0cC0+c2Fj
a2Jsa3NbaV0gPSB0cC0+c2Fja2Jsa3NbaS0xXTsNCisJfQ0KKwl0cC0+c2Fj
a2Jsa3NbMF0gPSBmaXJzdHNhY2s7DQorCXJldHVybjsNCit9ICANCisNCiAv
Kg0KKyAqIFByb2Nlc3MgdGhlIFRDUCBTQUNLIG9wdGlvbi4gIFJldHVybnMg
MSBpZiB0Y3BfZG9vcHRpb25zKCkgc2hvdWxkIGNvbnRpbnVlLA0KKyAqIGFu
ZCAwIG90aGVyd2lzZSwgaWYgdGhlIG9wdGlvbiB3YXMgZmluZS4gIHRwLT5z
bmRfaG9sZXMgaXMgYW4gb3JkZXJlZCBsaXN0DQorICogb2YgaG9sZXMgKG9s
ZGVzdCB0byBuZXdlc3QsIGluIHRlcm1zIG9mIHRoZSBzZXF1ZW5jZSBzcGFj
ZSkuICANCisgKi8gICAgICAgICAgICAgDQoraW50DQordGNwX3NhY2tfb3B0
aW9uKHRwLCB0aCwgY3AsIG9wdGxlbikNCisJc3RydWN0IHRjcGNiICp0cDsN
CisJc3RydWN0IHRjcGhkciAqdGg7DQorCXVfY2hhciAqY3A7DQorCWludCAg
ICBvcHRsZW47DQoreyAgICAgICANCisJaW50IHRtcF9vbGVuOw0KKwl1X2No
YXIgKnRtcF9jcDsNCisJc3RydWN0IHNhY2tob2xlICpjdXIsICpwLCAqdGVt
cDsNCisgICANCisJaWYgKHRwLT5zYWNrX2Rpc2FibGUpDQorCQlyZXR1cm4g
MTsNCisgICAgICAgICAgIA0KKwkvKiBOb3RlOiBUQ1BPTEVOX1NBQ0sgbXVz
dCBiZSAyKnNpemVvZih0Y3Bfc2VxKSAqLw0KKwlpZiAob3B0bGVuIDw9IDIg
fHwgKG9wdGxlbiAtIDIpICUgVENQT0xFTl9TQUNLICE9IDApDQorCQlyZXR1
cm4gMTsNCisJdG1wX2NwID0gY3AgKyAyOw0KKwl0bXBfb2xlbiA9IG9wdGxl
biAtIDI7DQorCWlmICh0cC0+c25kX251bWhvbGVzIDwgMCkNCisJCXRwLT5z
bmRfbnVtaG9sZXMgPSAwOw0KKwlpZiAodHAtPnRfbWF4c2VnID09IDApDQor
CQlwYW5pYygidGNwX3NhY2tfb3B0aW9uIik7IC8qIFNob3VsZCBuZXZlciBo
YXBwZW4gKi8NCisJd2hpbGUgKHRtcF9vbGVuID4gMCkgew0KKwkJc3RydWN0
IHNhY2tibGsgc2FjazsNCisgICAgICAgICAgICANCisJCWJjb3B5KChjaGFy
ICopIHRtcF9jcCwgKGNoYXIgKikgJihzYWNrLnN0YXJ0KSwgc2l6ZW9mKHRj
cF9zZXEpKTsNCisJCU5UT0hMKHNhY2suc3RhcnQpOyANCisJCWJjb3B5KChj
aGFyICopIHRtcF9jcCArIHNpemVvZih0Y3Bfc2VxKSwNCisJCSAgICAoY2hh
ciAqKSAmKHNhY2suZW5kKSwgc2l6ZW9mKHRjcF9zZXEpKTsNCisJCU5UT0hM
KHNhY2suZW5kKTsNCisJCXRtcF9vbGVuIC09IFRDUE9MRU5fU0FDSzsNCisJ
CXRtcF9jcCArPSBUQ1BPTEVOX1NBQ0s7DQorCQlpZiAoU0VRX0xFUShzYWNr
LmVuZCwgc2Fjay5zdGFydCkpDQorCQkJY29udGludWU7IC8qIGJhZCBTQUNL
IGZpZWxkcyAqLw0KKwkJaWYgKFNFUV9MRVEoc2Fjay5lbmQsIHRwLT5zbmRf
dW5hKSkgDQorCQkJY29udGludWU7IC8qIG9sZCBibG9jayAqLw0KKyNpZiBk
ZWZpbmVkKFRDUF9TQUNLKSAmJiBkZWZpbmVkKFRDUF9GQUNLKQ0KKwkJLyog
VXBkYXRlcyBzbmRfZmFjay4gICovDQorCQlpZiAoU0VRX0dFUShzYWNrLmVu
ZCwgdHAtPnNuZF9mYWNrKSkNCisJCQl0cC0+c25kX2ZhY2sgPSBzYWNrLmVu
ZDsNCisjZW5kaWYgLyogVENQX0ZBQ0sgKi8NCisJCWlmIChTRVFfR1QodGgt
PnRoX2FjaywgdHAtPnNuZF91bmEpKSB7DQorCQkJaWYgKFNFUV9MVChzYWNr
LnN0YXJ0LCB0aC0+dGhfYWNrKSkNCisJCQkJY29udGludWU7DQorCQl9IGVs
c2Ugew0KKwkJCWlmIChTRVFfTFQoc2Fjay5zdGFydCwgdHAtPnNuZF91bmEp
KQ0KKwkJCQljb250aW51ZTsNCisJCX0NCisJCWlmIChTRVFfR1Qoc2Fjay5l
bmQsIHRwLT5zbmRfbWF4KSkNCisJCQljb250aW51ZTsNCisJCWlmICh0cC0+
c25kX2hvbGVzID09IDApIHsgLyogZmlyc3QgaG9sZSAqLw0KKwkJCXRwLT5z
bmRfaG9sZXMgPSAoc3RydWN0IHNhY2tob2xlICopDQorCQkJICAgIG1hbGxv
YyhzaXplb2Yoc3RydWN0IHNhY2tob2xlKSwgTV9QQ0IsIE1fTk9XQUlUKTsN
CisJCQlpZiAodHAtPnNuZF9ob2xlcyA9PSBOVUxMKSB7DQorCQkJCS8qIEVO
T0JVRlMsIHNvIGlnbm9yZSBTQUNLZWQgYmxvY2sgZm9yIG5vdyovDQorCQkJ
CWNvbnRpbnVlOyAgDQorCQkJfQ0KKwkJCWN1ciA9IHRwLT5zbmRfaG9sZXM7
DQorCQkJY3VyLT5zdGFydCA9IHRoLT50aF9hY2s7DQorCQkJY3VyLT5lbmQg
PSBzYWNrLnN0YXJ0Ow0KKwkJCWN1ci0+cnhtaXQgPSBjdXItPnN0YXJ0Ow0K
KwkJCWN1ci0+bmV4dCA9IDA7DQorCQkJdHAtPnNuZF9udW1ob2xlcyA9IDE7
DQorCQkJdHAtPnJjdl9sYXN0c2FjayA9IHNhY2suZW5kOw0KKwkJCS8qIA0K
KwkJCSAqIGR1cHMgaXMgYXQgbGVhc3Qgb25lLiAgSWYgbW9yZSBkYXRhIGhh
cyBiZWVuIA0KKwkJCSAqIFNBQ0tlZCwgaXQgY2FuIGJlIGdyZWF0ZXIgdGhh
biBvbmUuDQorCQkJICovDQorCQkJY3VyLT5kdXBzID0gbWluKHRjcHJleG10
dGhyZXNoLCANCisJCQkgICAgKChzYWNrLmVuZCAtIGN1ci0+ZW5kKS90cC0+
dF9tYXhzZWcpKTsNCisJCQlpZiAoY3VyLT5kdXBzIDwgMSkNCisJCQkJY3Vy
LT5kdXBzID0gMTsNCisJCQljb250aW51ZTsgLyogd2l0aCBuZXh0IHNhY2sg
YmxvY2sgKi8NCisJCX0NCisJCS8qIEdvIHRocnUgbGlzdCBvZiBob2xlczog
IHAgPSBwcmV2aW91cywgIGN1ciA9IGN1cnJlbnQgKi8NCisJCXAgPSBjdXIg
PSB0cC0+c25kX2hvbGVzOw0KKwkJd2hpbGUgKGN1cikgew0KKwkJCWlmIChT
RVFfTEVRKHNhY2suZW5kLCBjdXItPnN0YXJ0KSkgDQorCQkJCS8qIFNBQ0tz
IGRhdGEgYmVmb3JlIHRoZSBjdXJyZW50IGhvbGUgKi8gDQorCQkJCWJyZWFr
OyAvKiBubyB1c2UgZ29pbmcgdGhyb3VnaCBtb3JlIGhvbGVzICovDQorCQkJ
aWYgKFNFUV9HRVEoc2Fjay5zdGFydCwgY3VyLT5lbmQpKSB7DQorCQkJCS8q
IFNBQ0tzIGRhdGEgYmV5b25kIHRoZSBjdXJyZW50IGhvbGUgKi8NCisJCQkJ
Y3VyLT5kdXBzKys7DQorCQkJCWlmICggKChzYWNrLmVuZCAtIGN1ci0+ZW5k
KS90cC0+dF9tYXhzZWcpID49DQorCQkJCQl0Y3ByZXhtdHRocmVzaCkNCisJ
CQkJCWN1ci0+ZHVwcyA9IHRjcHJleG10dGhyZXNoOw0KKwkJCQlwID0gY3Vy
Ow0KKwkJCQljdXIgPSBjdXItPm5leHQ7DQorCQkJCWNvbnRpbnVlOw0KKwkJ
CX0NCisJCQlpZiAoU0VRX0xFUShzYWNrLnN0YXJ0LCBjdXItPnN0YXJ0KSkg
ew0KKwkJCQkvKiBEYXRhIGFja3MgYXQgbGVhc3QgdGhlIGJlZ2lubmluZyBv
ZiBob2xlICovDQorI2lmIGRlZmluZWQoVENQX1NBQ0spICYmIGRlZmluZWQo
VENQX0ZBQ0spDQorCQkJCWlmIChTRVFfR1Qoc2Fjay5lbmQsIGN1ci0+cnht
aXQpKQ0KKwkJCQkJdHAtPnJldHJhbl9kYXRhIC09IA0KKwkJCQkgICAgCSAg
ICB0Y3Bfc2VxX3N1YnRyYWN0KGN1ci0+cnhtaXQsIA0KKwkJCQkJICAgIGN1
ci0+c3RhcnQpOw0KKwkJCQllbHNlDQorCQkJCQl0cC0+cmV0cmFuX2RhdGEg
LT0NCisJCQkJCSAgICB0Y3Bfc2VxX3N1YnRyYWN0KHNhY2suZW5kLCANCisJ
CQkJCSAgICBjdXItPnN0YXJ0KTsNCisjZW5kaWYgLyogVENQX0ZBQ0sgKi8N
CisJCQkJaWYgKFNFUV9HRVEoc2Fjay5lbmQsY3VyLT5lbmQpKXsNCisJCQkJ
CS8qIEFja3MgZW50aXJlIGhvbGUsIHNvIGRlbGV0ZSBob2xlICovDQorCQkJ
CQlpZiAocCAhPSBjdXIpIHsNCisJCQkJCQlwLT5uZXh0ID0gY3VyLT5uZXh0
Ow0KKwkJCQkJCWZyZWUoY3VyLCBNX1BDQik7DQorCQkJCQkJY3VyID0gcC0+
bmV4dDsNCisJCQkJCX0gZWxzZSB7DQorCQkJCQkJY3VyPWN1ci0+bmV4dDsN
CisJCQkJCQlmcmVlKHAsIE1fUENCKTsNCisJCQkJCQlwID0gY3VyOw0KKwkJ
CQkJCXRwLT5zbmRfaG9sZXMgPSBwOw0KKwkJCQkJfQ0KKwkJCQkJdHAtPnNu
ZF9udW1ob2xlcy0tOw0KKwkJCQkJY29udGludWU7DQorCQkJCX0NCisJCQkJ
Lyogb3RoZXJ3aXNlLCBtb3ZlIHN0YXJ0IG9mIGhvbGUgZm9yd2FyZCAqLw0K
KwkJCQljdXItPnN0YXJ0ID0gc2Fjay5lbmQ7DQorCQkJCWN1ci0+cnhtaXQg
PSBtYXggKGN1ci0+cnhtaXQsIGN1ci0+c3RhcnQpOw0KKwkJCQlwID0gY3Vy
Ow0KKwkJCQljdXIgPSBjdXItPm5leHQ7DQorCQkJCWNvbnRpbnVlOw0KKwkJ
CX0NCisJCQkvKiBtb3ZlIGVuZCBvZiBob2xlIGJhY2t3YXJkICovDQorCQkJ
aWYgKFNFUV9HRVEoc2Fjay5lbmQsIGN1ci0+ZW5kKSkgew0KKyNpZiBkZWZp
bmVkKFRDUF9TQUNLKSAmJiBkZWZpbmVkKFRDUF9GQUNLKQ0KKwkJCQlpZiAo
U0VRX0dUKGN1ci0+cnhtaXQsIHNhY2suc3RhcnQpKSANCisJCQkJCXRwLT5y
ZXRyYW5fZGF0YSAtPSANCisJCQkJCSAgICB0Y3Bfc2VxX3N1YnRyYWN0KGN1
ci0+cnhtaXQsIA0KKwkJCQkJICAgIHNhY2suc3RhcnQpOw0KKyNlbmRpZiAv
KiBUQ1BfRkFDSyAqLw0KKwkJCQljdXItPmVuZCA9IHNhY2suc3RhcnQ7DQor
CQkJCWN1ci0+cnhtaXQgPSBtaW4gKGN1ci0+cnhtaXQsIGN1ci0+ZW5kKTsN
CisJCQkJY3VyLT5kdXBzKys7DQorCQkJCWlmICggKChzYWNrLmVuZCAtIGN1
ci0+ZW5kKS90cC0+dF9tYXhzZWcpID49DQorCQkJCQl0Y3ByZXhtdHRocmVz
aCkNCisJCQkJCWN1ci0+ZHVwcyA9IHRjcHJleG10dGhyZXNoOw0KKwkJCQlw
ID0gY3VyOw0KKwkJCQljdXIgPSBjdXItPm5leHQ7DQorCQkJCWNvbnRpbnVl
Ow0KKwkJCX0NCisJCQlpZiAoU0VRX0xUKGN1ci0+c3RhcnQsIHNhY2suc3Rh
cnQpICYmDQorCQkJICAgIFNFUV9HVChjdXItPmVuZCwgc2Fjay5lbmQpKSB7
DQorCQkJCS8qIA0KKwkJCQkgKiBBQ0tzIHNvbWUgZGF0YSBpbiBtaWRkbGUg
b2YgYSBob2xlOyBuZWVkIHRvIA0KKwkJCQkgKiBzcGxpdCBjdXJyZW50IGhv
bGUNCisJCQkJICovDQorCQkJCXRlbXAgPSAoc3RydWN0IHNhY2tob2xlICop
bWFsbG9jKHNpemVvZigqdGVtcCksDQorCQkJCSAgICBNX1BDQixNX05PV0FJ
VCk7DQorCQkJCWlmICh0ZW1wID09IE5VTEwpIA0KKwkJCQkJY29udGludWU7
IC8qIEVOT0JVRlMgKi8NCisjaWYgZGVmaW5lZChUQ1BfU0FDSykgJiYgZGVm
aW5lZChUQ1BfRkFDSykNCisJCQkJaWYgKFNFUV9HVChjdXItPnJ4bWl0LCBz
YWNrLmVuZCkpIA0KKwkJCQkJdHAtPnJldHJhbl9kYXRhIC09IA0KKwkJCQkJ
ICAgIHRjcF9zZXFfc3VidHJhY3Qoc2Fjay5lbmQsIA0KKwkJCQkJICAgIHNh
Y2suc3RhcnQpOw0KKwkJCQllbHNlIGlmIChTRVFfR1QoY3VyLT5yeG1pdCwg
c2Fjay5zdGFydCkpDQorCQkJCQl0cC0+cmV0cmFuX2RhdGEgLT0gDQorCQkJ
CQkgICAgdGNwX3NlcV9zdWJ0cmFjdChjdXItPnJ4bWl0LCANCisJCQkJCSAg
ICBzYWNrLnN0YXJ0KTsNCisjZW5kaWYgLyogVENQX0ZBQ0sgKi8NCisJCQkJ
dGVtcC0+bmV4dCA9IGN1ci0+bmV4dDsNCisJCQkJdGVtcC0+c3RhcnQgPSBz
YWNrLmVuZDsNCisJCQkJdGVtcC0+ZW5kID0gY3VyLT5lbmQ7DQorCQkJCXRl
bXAtPmR1cHMgPSBjdXItPmR1cHM7DQorCQkJCXRlbXAtPnJ4bWl0ID0gbWF4
IChjdXItPnJ4bWl0LCB0ZW1wLT5zdGFydCk7DQorCQkJCWN1ci0+ZW5kID0g
c2Fjay5zdGFydDsNCisJCQkJY3VyLT5yeG1pdCA9IG1pbiAoY3VyLT5yeG1p
dCwgY3VyLT5lbmQpOw0KKwkJCQljdXItPmR1cHMrKzsNCisJCQkJaWYgKCAo
KHNhY2suZW5kIC0gY3VyLT5lbmQpL3RwLT50X21heHNlZykgPj0NCisJCQkJ
CXRjcHJleG10dGhyZXNoKQ0KKwkJCQkJY3VyLT5kdXBzID0gdGNwcmV4bXR0
aHJlc2g7DQorCQkJCWN1ci0+bmV4dCA9IHRlbXA7DQorCQkJCXAgPSB0ZW1w
Ow0KKwkJCQljdXIgPSBwLT5uZXh0Ow0KKwkJCQl0cC0+c25kX251bWhvbGVz
Kys7DQorCQkJfQ0KKwkJfQ0KKwkJLyogQXQgdGhpcyBwb2ludCwgcCBwb2lu
dHMgdG8gdGhlIGxhc3QgaG9sZSBvbiB0aGUgbGlzdCAqLw0KKwkJaWYgKFNF
UV9MVCh0cC0+cmN2X2xhc3RzYWNrLCBzYWNrLnN0YXJ0KSkgew0KKwkJCS8q
DQorCQkJICogTmVlZCB0byBhcHBlbmQgbmV3IGhvbGUgYXQgZW5kLg0KKwkJ
CSAqIExhc3QgaG9sZSBpcyBwIChhbmQgaXQncyBub3QgTlVMTCkuDQorCQkJ
ICovDQorCQkJdGVtcCA9IChzdHJ1Y3Qgc2Fja2hvbGUgKikgbWFsbG9jKHNp
emVvZigqdGVtcCksDQorCQkJICAgIE1fUENCLCBNX05PV0FJVCk7DQorCQkJ
aWYgKHRlbXAgPT0gTlVMTCkgDQorCQkJCWNvbnRpbnVlOyAvKiBFTk9CVUZT
ICovDQorCQkJdGVtcC0+c3RhcnQgPSB0cC0+cmN2X2xhc3RzYWNrOw0KKwkJ
CXRlbXAtPmVuZCA9IHNhY2suc3RhcnQ7DQorCQkJdGVtcC0+ZHVwcyA9IG1p
bih0Y3ByZXhtdHRocmVzaCwgDQorCQkJICAgICgoc2Fjay5lbmQgLSBzYWNr
LnN0YXJ0KS90cC0+dF9tYXhzZWcpKTsNCisJCQlpZiAodGVtcC0+ZHVwcyA8
IDEpDQorCQkJCXRlbXAtPmR1cHMgPSAxOw0KKwkJCXRlbXAtPnJ4bWl0ID0g
dGVtcC0+c3RhcnQ7DQorCQkJdGVtcC0+bmV4dCA9IDA7DQorCQkJcC0+bmV4
dCA9IHRlbXA7DQorCQkJdHAtPnJjdl9sYXN0c2FjayA9IHNhY2suZW5kOw0K
KwkJCXRwLT5zbmRfbnVtaG9sZXMrKzsNCisJCX0NCisJfQ0KKyNpZiBkZWZp
bmVkKFRDUF9TQUNLKSAmJiBkZWZpbmVkKFRDUF9GQUNLKQ0KKwkvKiANCisJ
ICogVXBkYXRlIHJldHJhbl9kYXRhIGFuZCBzbmRfYXduZC4gIEdvIHRocm91
Z2ggdGhlIGxpc3Qgb2YgDQorCSAqIGhvbGVzLiAgIEluY3JlbWVudCByZXRy
YW5fZGF0YSBieSAoaG9sZS0+cnhtaXQgLSBob2xlLT5zdGFydCkuDQorCSAq
Lw0KKwl0cC0+cmV0cmFuX2RhdGEgPSAwOw0KKwljdXIgPSB0cC0+c25kX2hv
bGVzOw0KKwl3aGlsZSAoY3VyKSB7DQorCQl0cC0+cmV0cmFuX2RhdGEgKz0g
Y3VyLT5yeG1pdCAtIGN1ci0+c3RhcnQ7DQorCQljdXIgPSBjdXItPm5leHQ7
DQorCX0NCisJdHAtPnNuZF9hd25kID0gdGNwX3NlcV9zdWJ0cmFjdCh0cC0+
c25kX254dCwgdHAtPnNuZF9mYWNrKSArIA0KKwkgICAgdHAtPnJldHJhbl9k
YXRhOw0KKyNlbmRpZiAvKiBUQ1BfRkFDSyAqLw0KKw0KKwlyZXR1cm4gMDsN
Cit9ICAgDQorDQorLyoNCisgKiBEZWxldGUgc3RhbGUgKGkuZSwgY3VtdWxh
dGl2ZWx5IGFjaydkKSBob2xlcy4gIEhvbGUgaXMgZGVsZXRlZCBvbmx5IGlm
DQorICogaXQgaXMgY29tcGxldGVseSBhY2tlZDsgb3RoZXJ3aXNlLCB0Y3Bf
c2Fja19vcHRpb24oKSwgY2FsbGVkIGZyb20gDQorICogdGNwX2Rvb3B0aW9u
cygpLCB3aWxsIGZpeCB1cCB0aGUgaG9sZS4NCisgKi8NCit2b2lkDQordGNw
X2RlbF9zYWNraG9sZXModHAsIHRoKQ0KKwlzdHJ1Y3QgdGNwY2IgKnRwOw0K
KwlzdHJ1Y3QgdGNwaGRyICp0aDsNCit7DQorCWlmICghdHAtPnNhY2tfZGlz
YWJsZSAmJiB0cC0+dF9zdGF0ZSAhPSBUQ1BTX0xJU1RFTikgew0KKwkJLyog
bWF4IGJlY2F1c2UgdGhpcyBjb3VsZCBiZSBhbiBvbGRlciBhY2sganVzdCBh
cnJpdmVkICovDQorCQl0Y3Bfc2VxIGxhc3RhY2sgPSBTRVFfR1QodGgtPnRo
X2FjaywgdHAtPnNuZF91bmEpID8NCisJCQl0aC0+dGhfYWNrIDogdHAtPnNu
ZF91bmE7DQorCQlzdHJ1Y3Qgc2Fja2hvbGUgKmN1ciA9IHRwLT5zbmRfaG9s
ZXM7DQorCQlzdHJ1Y3Qgc2Fja2hvbGUgKnByZXYgPSBjdXI7DQorCQl3aGls
ZSAoY3VyKQ0KKwkJCWlmIChTRVFfTEVRKGN1ci0+ZW5kLCBsYXN0YWNrKSkg
ew0KKwkJCQljdXIgPSBjdXItPm5leHQ7DQorCQkJCWZyZWUocHJldiwgTV9Q
Q0IpOw0KKwkJCQlwcmV2ID0gY3VyOw0KKwkJCQl0cC0+c25kX251bWhvbGVz
LS07DQorCQkJfSBlbHNlIGlmIChTRVFfTFQoY3VyLT5zdGFydCwgbGFzdGFj
aykpIHsNCisJCQkJY3VyLT5zdGFydCA9IGxhc3RhY2s7DQorCQkJCWlmIChT
RVFfTFQoY3VyLT5yeG1pdCwgY3VyLT5zdGFydCkpDQorCQkJCQljdXItPnJ4
bWl0ID0gY3VyLT5zdGFydDsNCisJCQkJYnJlYWs7DQorCQkJfSBlbHNlDQor
CQkJCWJyZWFrOw0KKwkJdHAtPnNuZF9ob2xlcyA9IGN1cjsNCisJfQ0KK30N
CisNCisvKiANCisgKiBEZWxldGUgYWxsIHJlY2VpdmVyLXNpZGUgU0FDSyBp
bmZvcm1hdGlvbi4NCisgKi8NCit2b2lkDQordGNwX2NsZWFuX3NhY2tyZXBv
cnQodHApDQorCXN0cnVjdCB0Y3BjYiAqdHA7DQorew0KKwlpbnQgaTsNCisN
CisJdHAtPnJjdl9udW1zYWNrcyA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBN
QVhfU0FDS19CTEtTOyBpKyspDQorCQl0cC0+c2Fja2Jsa3NbaV0uc3RhcnQg
PSB0cC0+c2Fja2Jsa3NbaV0uZW5kPTA7DQorDQorfQ0KKw0KKy8qIA0KKyAq
IENoZWNrcyBmb3IgcGFydGlhbCBhY2suICBJZiBwYXJ0aWFsIGFjayBhcnJp
dmVzLCB0dXJuIG9mZiByZXRyYW5zbWlzc2lvbg0KKyAqIHRpbWVyLCBkZWZs
YXRlIHRoZSB3aW5kb3csIGRvIG5vdCBjbGVhciB0cC0+dF9kdXBhY2tzLCBh
bmQgcmV0dXJuIDEuDQorICogSWYgdGhlIGFjayBhZHZhbmNlcyBhdCBsZWFz
dCB0byB0cC0+c25kX2xhc3QsIHJldHVybiAwLg0KKyAqLw0KK2ludA0KK3Rj
cF9zYWNrX3BhcnRpYWxhY2sodHAsIHRoKQ0KKwlzdHJ1Y3QgdGNwY2IgKnRw
Ow0KKwlzdHJ1Y3QgdGNwaGRyICp0aDsNCit7DQorCWlmIChTRVFfTFQodGgt
PnRoX2FjaywgdHAtPnNuZF9sYXN0KSkgew0KKwkJLyogVHVybiBvZmYgcmV0
eC4gdGltZXIgKHdpbGwgc3RhcnQgYWdhaW4gbmV4dCBzZWdtZW50KSAqLw0K
KyAgICAgICAgICAgICAgY2FsbG91dF9zdG9wKHRwLT50dF9yZXhtdCk7DQor
CSAgICAgIHRwLT50X3J0dHRpbWUgPSAwOw0KKyNpZm5kZWYgVENQX0ZBQ0sN
CisJCS8qIA0KKwkJICogUGFydGlhbCB3aW5kb3cgZGVmbGF0aW9uLiAgVGhp
cyBzdGF0ZW1lbnQgcmVsaWVzIG9uIHRoZSANCisJCSAqIGZhY3QgdGhhdCB0
cC0+c25kX3VuYSBoYXMgbm90IGJlZW4gdXBkYXRlZCB5ZXQuICBJbiBGQUNL
DQorCQkgKiBob2xkIHNuZF9jd25kIGNvbnN0YW50IGR1cmluZyBmYXN0IHJl
Y292ZXJ5Lg0KKwkJICovDQorCQlpZiAodHAtPnNuZF9jd25kID4gKHRoLT50
aF9hY2sgLSB0cC0+c25kX3VuYSkpIHsNCisJCQl0cC0+c25kX2N3bmQgLT0g
dGgtPnRoX2FjayAtIHRwLT5zbmRfdW5hOw0KKwkJCXRwLT5zbmRfY3duZCAr
PSB0cC0+dF9tYXhzZWc7DQorCQl9IGVsc2UNCisJCQl0cC0+c25kX2N3bmQg
PSB0cC0+dF9tYXhzZWc7DQorI2VuZGlmDQorCQlyZXR1cm4gMTsNCisJfQ0K
KwlyZXR1cm4gMDsNCit9DQorI2VuZGlmIFRDUF9TQUNLDQorDQorLyoNCiAg
KiBQdWxsIG91dCBvZiBiYW5kIGJ5dGUgb3V0IG9mIGEgc2VnbWVudCBzbw0K
ICAqIGl0IGRvZXNuJ3QgYXBwZWFyIGluIHRoZSB1c2VyJ3MgZGF0YSBxdWV1
ZS4NCiAgKiBJdCBpcyBzdGlsbCByZWZsZWN0ZWQgaW4gdGhlIHNlZ21lbnQg
bGVuZ3RoIGZvcg0KQEAgLTI5MDksNyArMzUyNiwxMiBAQA0KIAlzdHJ1Y3Qg
dGNwY2IgKnRwOw0KIAlzdHJ1Y3QgdGNwaGRyICp0aDsNCiB7DQorDQorI2lm
IGRlZmluZWQgKFRDUF9TQUNLKQ0KK2lmIChTRVFfTFQodGgtPnRoX2Fjaywg
dHAtPnNuZF9sYXN0KSkgew0KKyNlbHNlDQogCWlmIChTRVFfTFQodGgtPnRo
X2FjaywgdHAtPnNuZF9yZWNvdmVyKSkgew0KKyNlbmRpZg0KIAkJdGNwX3Nl
cSBvbnh0ID0gdHAtPnNuZF9ueHQ7DQogCQl1X2xvbmcgIG9jd25kID0gdHAt
PnNuZF9jd25kOw0KIA0KSW5kZXg6IHRjcF9vdXRwdXQuYw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9u
ZXRpbmV0L3RjcF9vdXRwdXQuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NTINCmRpZmYgLXUgLWQgLWIgLXcgLXUgLWQgLXIxLjUyIHRjcF9vdXRwdXQu
Yw0KLS0tIHRjcF9vdXRwdXQuYwkyMDAxLzA2LzIzIDAzOjIxOjQ2CTEuNTIN
CisrKyB0Y3Bfb3V0cHV0LmMJMjAwMS8wOC8yMiAyMzoxMToyMQ0KQEAgLTk4
LDYgKzk4LDEwNiBAQA0KIGludCAgICAgdGNwX2RvX25ld3Jlbm8gPSAxOw0K
IFNZU0NUTF9JTlQoX25ldF9pbmV0X3RjcCwgT0lEX0FVVE8sIG5ld3Jlbm8s
IENUTEZMQUdfUlcsICZ0Y3BfZG9fbmV3cmVubywNCiAgICAgICAgIDAsICJF
bmFibGUgTmV3UmVubyBBbGdvcml0aG1zIik7DQorDQorI2lmZGVmIFRDUF9T
QUNLDQorZXh0ZXJuIGludCB0Y3ByZXhtdHRocmVzaDsNCisjZW5kaWYNCisN
CisjaWZkZWYgVENQX1NBQ0sNCisjaWZkZWYgVENQX1NBQ0tfREVCVUcNCit2
b2lkDQordGNwX3ByaW50X2hvbGVzKHRwKQ0KK3N0cnVjdCB0Y3BjYiAqdHA7
DQorew0KKwlzdHJ1Y3Qgc2Fja2hvbGUgKnAgPSB0cC0+c25kX2hvbGVzOw0K
KwlpZiAocCA9PSAwKQ0KKwkJcmV0dXJuOw0KKwlwcmludGYoIkhvbGUgcmVw
b3J0OiBzdGFydC0tZW5kIGR1cHMgcnhtaXRcbiIpOw0KKwl3aGlsZSAocCkg
ew0KKwkJcHJpbnRmKCIlZC0tJWQgZCAlZCByICVkXG4iLCAgcC0+c3RhcnQs
IHAtPmVuZCwgcC0+ZHVwcywNCisgICAgICAgICAgICAgICAgICAgIHAtPnJ4
bWl0KTsNCisJCXAgPSBwLT5uZXh0Ow0KKwl9DQorCXByaW50ZigiXG4iKTsN
Cit9DQorI2VuZGlmIC8qIFRDUF9TQUNLX0RFQlVHICovDQorDQorLyoNCisg
KiBSZXR1cm5zIHBvaW50ZXIgdG8gYSBzYWNraG9sZSBpZiB0aGVyZSBhcmUg
YW55IHBlbmRpbmcgcmV0cmFuc21pc3Npb25zOw0KKyAqIE5VTEwgb3RoZXJ3
aXNlLg0KKyAqLw0KK3N0cnVjdCBzYWNraG9sZSAqDQordGNwX3NhY2tfb3V0
cHV0KHRwKQ0KK3JlZ2lzdGVyIHN0cnVjdCB0Y3BjYiAqdHA7DQorew0KKwlz
dHJ1Y3Qgc2Fja2hvbGUgKnA7DQorCWlmICh0cC0+c2Fja19kaXNhYmxlKQ0K
KwkJcmV0dXJuIDA7DQorCXAgPSB0cC0+c25kX2hvbGVzOw0KKwl3aGlsZSAo
cCkgew0KKyNpZm5kZWYgVENQX0ZBQ0sNCisJCWlmIChwLT5kdXBzID49IHRj
cHJleG10dGhyZXNoICYmIFNFUV9MVChwLT5yeG1pdCwgcC0+ZW5kKSkgew0K
KyNlbHNlDQorCQkvKiBJbiBGQUNLLCBpZiBwLT5kdXBzIGlzIGxlc3MgdGhh
biB0Y3ByZXhtdHRocmVzaCwgYnV0DQorCQkgKiBzbmRfZmFjayBhZHZhbmNl
cyBtb3JlIHRoYW4gdGNwcmV4dG10dGhyZXNoICogdHAtPnRfbWF4c2VnLA0K
KwkJICogdGNwX2lucHV0KCkgd2lsbCB0cnkgZmFzdCByZXRyYW5zbWl0LiBU
aGlzIGZvcmNlcyBvdXRwdXQuDQorCQkgKi8NCisJCWlmICgocC0+ZHVwcyA+
PSB0Y3ByZXhtdHRocmVzaCB8fA0KKwkJICAgICB0cC0+dF9kdXBhY2tzID09
IHRjcHJleG10dGhyZXNoKSAmJg0KKwkJICAgIFNFUV9MVChwLT5yeG1pdCwg
cC0+ZW5kKSkgew0KKyNlbmRpZiAvKiBUQ1BfRkFDSyAqLw0KKwkJCWlmIChT
RVFfTFQocC0+cnhtaXQsIHRwLT5zbmRfdW5hKSkgey8qIG9sZCBTQUNLIGhv
bGUgKi8NCisJCQkJcCA9IHAtPm5leHQ7DQorCQkJCWNvbnRpbnVlOw0KKwkJ
CX0NCisjaWZkZWYgVENQX1NBQ0tfREVCVUcNCisJCQlpZiAocCkNCisJCQkJ
dGNwX3ByaW50X2hvbGVzKHRwKTsNCisjZW5kaWYNCisJCQlyZXR1cm4gcDsN
CisJCX0NCisgICAgICAgIAlwID0gcC0+bmV4dDsNCisJfQ0KKwlyZXR1cm4g
MDsNCit9DQorDQorLyoNCisgKiBBZnRlciBhIHRpbWVvdXQsIHRoZSBTQUNL
IGxpc3QgbWF5IGJlIHJlYnVpbHQuICBUaGlzIFNBQ0sgaW5mb3JtYXRpb24N
CisgKiBzaG91bGQgYmUgdXNlZCB0byBhdm9pZCByZXRyYW5zbWl0dGluZyBT
QUNLZWQgZGF0YS4gIFRoaXMgZnVuY3Rpb24NCisgKiB0cmF2ZXJzZXMgdGhl
IFNBQ0sgbGlzdCB0byBzZWUgaWYgc25kX254dCBzaG91bGQgYmUgbW92ZWQg
Zm9yd2FyZC4NCisgKi8NCit2b2lkDQordGNwX3NhY2tfYWRqdXN0KHRwKQ0K
KwlzdHJ1Y3QgdGNwY2IgKnRwOw0KK3sNCisJc3RydWN0IHNhY2tob2xlICpj
dXIgPSB0cC0+c25kX2hvbGVzOw0KKwlpZiAoY3VyID09IDApDQorCQlyZXR1
cm47IC8qIE5vIGhvbGVzICovDQorCWlmIChTRVFfR0VRKHRwLT5zbmRfbnh0
LCB0cC0+cmN2X2xhc3RzYWNrKSkNCisJCXJldHVybjsgLyogV2UncmUgYWxy
ZWFkeSBiZXlvbmQgYW55IFNBQ0tlZCBibG9ja3MgKi8NCisJLyogDQorCSAq
IFR3byBjYXNlcyBmb3Igd2hpY2ggd2Ugd2FudCB0byBhZHZhbmNlIHNuZF9u
eHQ6ICANCisJICogaSkgc25kX254dCBsaWVzIGJldHdlZW4gZW5kIG9mIG9u
ZSBob2xlIGFuZCBiZWdpbm5pbmcgb2YgYW5vdGhlcg0KKwkgKiBpaSkgc25k
X254dCBsaWVzIGJldHdlZW4gZW5kIG9mIGxhc3QgaG9sZSBhbmQgcmN2X2xh
c3RzYWNrDQorCSAqLw0KKwl3aGlsZSAoY3VyLT5uZXh0KSB7DQorCQlpZiAo
U0VRX0xUKHRwLT5zbmRfbnh0LCBjdXItPmVuZCkpDQorCQkJcmV0dXJuOw0K
KwkJaWYgKFNFUV9HRVEodHAtPnNuZF9ueHQsIGN1ci0+bmV4dC0+c3RhcnQp
KSANCisJCQljdXIgPSBjdXItPm5leHQ7DQorCQllbHNlIHsNCisJCQl0cC0+
c25kX254dCA9IGN1ci0+bmV4dC0+c3RhcnQ7DQorCQkJcmV0dXJuOw0KKwkJ
fQ0KKwl9DQorCWlmIChTRVFfTFQodHAtPnNuZF9ueHQsIGN1ci0+ZW5kKSkN
CisJCXJldHVybjsNCisJdHAtPnNuZF9ueHQgPSB0cC0+cmN2X2xhc3RzYWNr
Ow0KKwlyZXR1cm47DQorfQ0KKyNlbmRpZiAvKiBUQ1BfU0FDSyAqLw0KKw0K
Kw0KIC8qDQogICogVGNwIG91dHB1dCByb3V0aW5lOiBmaWd1cmUgb3V0IHdo
YXQgc2hvdWxkIGJlIHNlbnQgYW5kIHNlbmQgaXQuDQogICovDQpAQCAtMTE4
LDYgKzIxOCwxMCBAQA0KIAl1X2NoYXIgb3B0W1RDUF9NQVhPTEVOXTsNCiAJ
dW5zaWduZWQgaXBvcHRsZW4sIG9wdGxlbiwgaGRybGVuOw0KIAlpbnQgaWRs
ZSwgc2VuZGFsb3Q7DQorI2lmZGVmIFRDUF9TQUNLDQorCWludCBpLCBzYWNr
X3J4bWl0ID0gMDsNCisJc3RydWN0IHNhY2tob2xlICpwOw0KKyNlbmRpZg0K
IAlpbnQgbWF4YnVyc3QgPSBUQ1BfTUFYQlVSU1Q7DQogCXN0cnVjdCBybXhw
X3RhbyAqdGFvcDsNCiAJc3RydWN0IHJteHBfdGFvIHRhb19ub25jYWNoZWQ7
DQpAQCAtMTYxLDEwICsyNjUsMzAgQEANCiAJfQ0KIGFnYWluOg0KIAlzZW5k
YWxvdCA9IDA7DQorI2lmZGVmIFRDUF9TQUNLDQorCS8qDQorCSAqIElmIHdl
J3ZlIHJlY2VudGx5IHRha2VuIGEgdGltZW91dCwgc25kX21heCB3aWxsIGJl
IGdyZWF0ZXIgdGhhbg0KKwkgKiBzbmRfbnh0LiAgVGhlcmUgbWF5IGJlIFNB
Q0sgaW5mb3JtYXRpb24gdGhhdCBhbGxvd3MgdXMgdG8gYXZvaWQNCisJICog
cmVzZW5kaW5nIGFscmVhZHkgZGVsaXZlcmVkIGRhdGEuICBBZGp1c3Qgc25k
X254dCBhY2NvcmRpbmdseS4NCisJICovDQorCWlmICghdHAtPnNhY2tfZGlz
YWJsZSAmJiBTRVFfTFQodHAtPnNuZF9ueHQsIHRwLT5zbmRfbWF4KSkNCisJ
CXRjcF9zYWNrX2FkanVzdCh0cCk7DQorI2VuZGlmDQogCW9mZiA9IHRwLT5z
bmRfbnh0IC0gdHAtPnNuZF91bmE7DQorI2lmIGRlZmluZWQoVENQX1NBQ0sp
ICYmIGRlZmluZWQoVENQX0ZBQ0spDQorCS8qIE5vcm1hbGx5LCBzZW5kYWJs
ZSBkYXRhIGlzIGxpbWl0ZWQgYnkgb2ZmIDwgdHAtPnNuZF9jd25kLg0KKwkg
KiBCdXQgaW4gRkFDSywgc2VuZGFibGUgZGF0YSBpcyBsaW1pdGVkIGJ5IHNu
ZF9hd25kIDwgc25kX2N3bmQsDQorCSAqIHJlZ2FyZGxlc3Mgb2Ygb2Zmc2V0
Lg0KKwkgKi8NCisJaWYgKCF0cC0+c2Fja19kaXNhYmxlICYmICh0cC0+dF9k
dXBhY2tzID4gdGNwcmV4bXR0aHJlc2gpKQ0KKwkgIHdpbiA9IHRwLT5zbmRf
d25kOw0KKwllbHNlDQorI2VuZGlmDQogCXdpbiA9IG1pbih0cC0+c25kX3du
ZCwgdHAtPnNuZF9jd25kKTsNCiANCiAJZmxhZ3MgPSB0Y3Bfb3V0ZmxhZ3Nb
dHAtPnRfc3RhdGVdOw0KKwkNCisJDQogCS8qDQogCSAqIEdldCBzdGFuZGFy
ZCBmbGFncywgYW5kIGFkZCBTWU4gb3IgRklOIGlmIHJlcXVlc3RlZCBieSAn
aGlkZGVuJw0KIAkgKiBzdGF0ZSBmbGFncy4NCkBAIC0xNzMsNyArMjk3LDMz
IEBADQogCQlmbGFncyB8PSBUSF9GSU47DQogCWlmICh0cC0+dF9mbGFncyAm
IFRGX05FRURTWU4pDQogCQlmbGFncyB8PSBUSF9TWU47DQorI2lmZGVmIFRD
UF9TQUNLDQorCS8qIA0KKwkgKiBTZW5kIGFueSBTQUNLLWdlbmVyYXRlZCBy
ZXRyYW5zbWlzc2lvbnMuICBJZiB3ZSdyZSBleHBsaWNpdGx5IHRyeWluZw0K
KwkgKiB0byBzZW5kIG91dCBuZXcgZGF0YSAod2hlbiBzZW5kYWxvdCBpcyAx
KSwgYnlwYXNzIHRoaXMgZnVuY3Rpb24uDQorCSAqIElmIHdlIHJldHJhbnNt
aXQgaW4gZmFzdCByZWNvdmVyeSBtb2RlLCBkZWNyZW1lbnQgc25kX2N3bmQs
IHNpbmNlDQorCSAqIHdlJ3JlIHJlcGxhY2luZyBhIChmdXR1cmUpIG5ldyB0
cmFuc21pc3Npb24gd2l0aCBhIHJldHJhbnNtaXNzaW9uIA0KKwkgKiBub3cs
IGFuZCB3ZSBwcmV2aW91c2x5IGluY3JlbWVudGVkIHNuZF9jd25kIGluIHRj
cF9pbnB1dCgpLg0KKwkgKi8NCisJaWYgKCF0cC0+c2Fja19kaXNhYmxlICYm
ICFzZW5kYWxvdCkgew0KKwkgIGlmICh0cC0+dF9kdXBhY2tzID49IHRjcHJl
eG10dGhyZXNoICYmDQorCSAgICAgIChwID0gdGNwX3NhY2tfb3V0cHV0KHRw
KSkpIHsNCisJICAgIG9mZiA9IHAtPnJ4bWl0IC0gdHAtPnNuZF91bmE7DQor
CSAgICBzYWNrX3J4bWl0ID0gMTsNCisjaWYgMA0KKwkgICAgLyogQ29hbGVz
Y2UgaG9sZXMgaW50byBhIHNpbmdsZSByZXRyYW5zbWlzc2lvbiAqLw0KKyNl
bmRpZg0KKwkgICAgbGVuID0gbWluKHRwLT50X21heHNlZywgcC0+ZW5kIC0g
cC0+cnhtaXQpOw0KKyNpZm5kZWYgVENQX0ZBQ0sNCisJICAgIC8qIGluIEZB
Q0ssIGhvbGQgc25kX2N3bmQgY29uc3RhbnQgZHVyaW5nIHJlY292ZXJ5ICov
DQorCSAgICBpZiAoU0VRX0xUKHRwLT5zbmRfdW5hLCB0cC0+c25kX2xhc3Qp
KQ0KKwkgICAgICB0cC0+c25kX2N3bmQgLT0gdHAtPnRfbWF4c2VnOw0KKyNl
bmRpZg0KKwkgIH0NCisJfQ0KKyNlbmRpZiAvKiBUQ1BfU0FDSyAqLw0KIA0K
KwlzZW5kYWxvdCA9IDA7DQogCS8qDQogCSAqIElmIGluIHBlcnNpc3QgdGlt
ZW91dCB3aXRoIHdpbmRvdyBvZiAwLCBzZW5kIDEgYnl0ZS4NCiAJICogT3Ro
ZXJ3aXNlLCBpZiB3aW5kb3cgaXMgc21hbGwgYnV0IG5vbnplcm8NCkBAIC0y
MDcsOCArMzU3LDI2IEBADQogCQl9DQogCX0NCiANCisjaWZkZWYgVENQX1NB
Q0sNCisJaWYgKCFzYWNrX3J4bWl0KSB7DQorI2VuZGlmDQogCWxlbiA9IChs
b25nKXVsbWluKHNvLT5zb19zbmQuc2JfY2MsIHdpbikgLSBvZmY7DQogDQor
I2lmIGRlZmluZWQoVENQX1NBQ0spICYmIGRlZmluZWQoVENQX0ZBQ0spDQor
CS8qIA0KKwkgKiBJZiB3ZSdyZSBpbiBmYXN0IHJlY292ZXJ5IChTRVFfR1Qo
dHAtPnNuZF9sYXN0LCB0cC0+c25kX3VuYSkpLCBhbmQgDQorCSAqIGFtb3Vu
dCBvZiBvdXRzdGFuZGluZyBkYXRhIChzbmRfYXduZCkgaXMgPj0gc25kX2N3
bmQsIHRoZW4NCisJICogZG8gbm90IHNlbmQgZGF0YSAobGlrZSB6ZXJvIHdp
bmRvdyBjb25kaXRpb25zKQ0KKwkgKi8NCisJaWYgKCF0cC0+c2Fja19kaXNh
YmxlICYmIGxlbiAmJiBTRVFfR1QodHAtPnNuZF9sYXN0LCB0cC0+c25kX3Vu
YSkgJiYgDQorCSAgICAodHAtPnNuZF9hd25kID49IHRwLT5zbmRfY3duZCkp
IA0KKwkJbGVuID0gMDsNCisjZW5kaWYgLyogVENQX0ZBQ0sgKi8NCisjaWZk
ZWYgVENQX1NBQ0sNCisJfQ0KKyNlbmRpZg0KKw0KKw0KIAlpZiAoKHRhb3Ag
PSB0Y3BfZ2V0dGFvY2FjaGUodHAtPnRfaW5wY2IpKSA9PSBOVUxMKSB7DQog
CQl0YW9wID0gJnRhb19ub25jYWNoZWQ7DQogCQliemVybyh0YW9wLCBzaXpl
b2YoKnRhb3ApKTsNCkBAIC0yOTMsNiArNDYxLDEwIEBADQogCQkJZ290byBz
ZW5kOw0KIAkJaWYgKFNFUV9MVCh0cC0+c25kX254dCwgdHAtPnNuZF9tYXgp
KQ0KIAkJCWdvdG8gc2VuZDsNCisjaWZkZWYgVENQX1NBQ0sNCisJCWlmIChz
YWNrX3J4bWl0KQ0KKwkJICBnb3RvIHNlbmQ7DQorI2VuZGlmDQogCX0NCiAN
CiAJLyoNCkBAIC0zMzUsNiArNTA3LDIwIEBADQogCWlmIChmbGFncyAmIFRI
X0ZJTiAmJg0KIAkgICAgKCh0cC0+dF9mbGFncyAmIFRGX1NFTlRGSU4pID09
IDAgfHwgdHAtPnNuZF9ueHQgPT0gdHAtPnNuZF91bmEpKQ0KIAkJZ290byBz
ZW5kOw0KKyNpZmRlZiBUQ1BfU0FDSw0KKwkvKg0KKwkgKiBJbiBTQUNLLCBp
dCBpcyBwb3NzaWJsZSBmb3IgdGNwX291dHB1dCB0byBmYWlsIHRvIHNlbmQg
YSBzZWdtZW50IA0KKwkgKiBhZnRlciB0aGUgcmV0cmFuc21pc3Npb24gdGlt
ZXIgaGFzIGJlZW4gdHVybmVkIG9mZi4gIE1ha2Ugc3VyZQ0KKwkgKiB0aGF0
IHRoZSByZXRyYW5zbWlzc2lvbiB0aW1lciBpcyBzZXQuDQorCSAqLw0KKwlp
ZiAoU0VRX0dUKHRwLT5zbmRfbWF4LCB0cC0+c25kX3VuYSkgJiYNCisJICAg
ICFjYWxsb3V0X2FjdGl2ZSh0cC0+dHRfcmV4bXQpICYmDQorCSAgICAhY2Fs
bG91dF9hY3RpdmUodHAtPnR0X3BlcnNpc3QpKXsNCisJICBjYWxsb3V0X3Jl
c2V0KHRwLT50dF9yZXhtdCwgdHAtPnRfcnh0Y3VyLA0KKwkJCXRjcF90aW1l
cl9yZXhtdCwgdHApOw0KKwkgIHJldHVybiAoMCk7DQorCX0NCisjZW5kaWYg
LyogVENQX1NBQ0sgKi8NCiANCiAJLyoNCiAJICogVENQIHdpbmRvdyB1cGRh
dGVzIGFyZSBub3QgcmVsaWFibGUsIHJhdGhlciBhIHBvbGxpbmcgcHJvdG9j
b2wNCkBAIC0zOTUsNyArNTgxLDIyIEBADQogCQkJbXNzID0gaHRvbnMoKHVf
c2hvcnQpIHRjcF9tc3NvcHQodHApKTsNCiAJCQkodm9pZCltZW1jcHkob3B0
ICsgMiwgJm1zcywgc2l6ZW9mKG1zcykpOw0KIAkJCW9wdGxlbiA9IFRDUE9M
RU5fTUFYU0VHOw0KKyNpZmRlZiBUQ1BfU0FDSw0KKwkJCS8qIA0KKwkJCSAq
IElmIHRoaXMgaXMgdGhlIGZpcnN0IFNZTiBvZiBjb25uZWN0aW9uIChub3Qg
YSBTWU4gDQorCQkJICogQUNLKSwgaW5jbHVkZSBTQUNLX1BFUk1JVF9IRFIg
b3B0aW9uLiAgSWYgdGhpcyBpcyBhIA0KKwkJCSAqIFNZTiBBQ0ssIGluY2x1
ZGUgU0FDS19QRVJNSVRfSERSIG9wdGlvbiBpZiBwZWVyIGhhcyANCisJCQkg
KiBhbHJlYWR5IGRvbmUgc28uDQorCQkJICovDQorCQkJaWYgKCF0cC0+c2Fj
a19kaXNhYmxlICYmICgoZmxhZ3MgJiBUSF9BQ0spID09IDAgfHwNCisJCQkg
ICAgKHRwLT50X2ZsYWdzICYgVEZfU0FDS19QRVJNSVQpKSkgew0KKwkJCQkq
KCh1X2ludDMyX3QgKikgKG9wdCArIG9wdGxlbikpID0NCisJCQkJICAgIGh0
b25sKFRDUE9QVF9TQUNLX1BFUk1JVF9IRFIpOw0KKwkJCQlvcHRsZW4gKz0g
NDsNCisJCQl9DQorI2VuZGlmDQogDQorDQogCQkJaWYgKCh0cC0+dF9mbGFn
cyAmIFRGX1JFUV9TQ0FMRSkgJiYNCiAJCQkgICAgKChmbGFncyAmIFRIX0FD
SykgPT0gMCB8fA0KIAkJCSAgICAodHAtPnRfZmxhZ3MgJiBURl9SQ1ZEX1ND
QUxFKSkpIHsNCkBAIC00MjYsNiArNjI3LDMzIEBADQogIAkJKmxwICAgPSBo
dG9ubCh0cC0+dHNfcmVjZW50KTsNCiAgCQlvcHRsZW4gKz0gVENQT0xFTl9U
U1RBTVBfQVBQQTsNCiAgCX0NCisjaWZkZWYgVENQX1NBQ0sNCisJLyoNCisJ
ICogU2VuZCBTQUNLcyBpZiBuZWNlc3NhcnkuICBUaGlzIHNob3VsZCBiZSB0
aGUgbGFzdCBvcHRpb24gcHJvY2Vzc2VkLg0KKwkgKiBPbmx5IGFzIG1hbnkg
U0FDS3MgYXJlIHNlbnQgYXMgYXJlIHBlcm1pdHRlZCBieSB0aGUgbWF4aW11
bSBvcHRpb25zDQorCSAqIHNpemUuICBObyBtb3JlIHRoYW4gdGhyZWUgU0FD
S3MgYXJlIHNlbnQuDQorCSAqLw0KKwlpZiAoIXRwLT5zYWNrX2Rpc2FibGUg
JiYgdHAtPnRfc3RhdGUgPT0gVENQU19FU1RBQkxJU0hFRCAmJg0KKwkgICAg
KHRwLT50X2ZsYWdzICYgKFRGX1NBQ0tfUEVSTUlUfFRGX05PT1BUKSkgPT0g
VEZfU0FDS19QRVJNSVQgJiYNCisJICAgIHRwLT5yY3ZfbnVtc2Fja3MpIHsN
CisJCXVfaW50MzJfdCAqbHAgPSAodV9pbnQzMl90ICopKG9wdCArIG9wdGxl
bik7DQorCQl1X2ludDMyX3QgKm9scCA9IGxwKys7DQorCQlpbnQgY291bnQg
PSAwOyAgLyogYWN0dWFsIG51bWJlciBvZiBTQUNLcyBpbnNlcnRlZCAqLw0K
KwkJaW50IG1heHNhY2sgPSAoVENQX01BWE9MRU4gLSAob3B0bGVuICsgNCkp
L1RDUE9MRU5fU0FDSzsNCisNCisJCW1heHNhY2sgPSBtaW4obWF4c2Fjaywg
VENQX01BWF9TQUNLKTsNCisJCWZvciAoaSA9IDA7IChpIDwgdHAtPnJjdl9u
dW1zYWNrcyAmJiBjb3VudCA8IG1heHNhY2spOyBpKyspIHsNCisJCQlzdHJ1
Y3Qgc2Fja2JsayBzYWNrID0gdHAtPnNhY2tibGtzW2ldOw0KKwkJCWlmIChz
YWNrLnN0YXJ0ID09IDAgJiYgc2Fjay5lbmQgPT0gMCkNCisJCQkJY29udGlu
dWU7DQorCQkJKmxwKysgPSBodG9ubChzYWNrLnN0YXJ0KTsNCisJCQkqbHAr
KyA9IGh0b25sKHNhY2suZW5kKTsNCisJCQljb3VudCsrOw0KKwkJfQ0KKwkJ
Km9scCA9IGh0b25sKFRDUE9QVF9TQUNLX0hEUnwoVENQT0xFTl9TQUNLKmNv
dW50KzIpKTsNCisJCW9wdGxlbiArPSBUQ1BPTEVOX1NBQ0sqY291bnQgKyA0
OyAvKiBpbmNsdWRpbmcgbGVhZGluZyBOT1BzICovDQorCX0NCisjZW5kaWYg
LyogVENQX1NBQ0sgKi8NCiANCiAgCS8qDQogCSAqIFNlbmQgYENDLWZhbWls
eScgb3B0aW9ucyBpZiBvdXIgc2lkZSB3YW50cyB0byB1c2UgdGhlbSAoVEZf
UkVRX0NDKSwNCkBAIC02NzMsNiArOTAxLDIzIEBADQogCQl0aC0+dGhfc2Vx
ID0gaHRvbmwodHAtPnNuZF9ueHQpOw0KIAllbHNlDQogCQl0aC0+dGhfc2Vx
ID0gaHRvbmwodHAtPnNuZF9tYXgpOw0KKyNpZmRlZiBUQ1BfU0FDSw0KKwlp
ZiAoc2Fja19yeG1pdCkgew0KKwkgIC8qIA0KKwkgICAqIElmIHNlbmRhbG90
IHdhcyB0dXJuZWQgb24gKGR1ZSB0byBvcHRpb24gc3R1ZmZpbmcpLCB0dXJu
IGl0IA0KKwkgICAqIG9mZi4gUHJvcGVybHkgc2V0IHRoX3NlcSBmaWVsZC4g
IEFkdmFuY2UgdGhlIHJldCd4IHBvaW50ZXIgDQorCSAgICogYnkgbGVuLiAg
DQorCSAgICovDQorCSAgaWYgKHNlbmRhbG90KQ0KKwkgICAgc2VuZGFsb3Qg
PSAwOw0KKwkgIHRoLT50aF9zZXEgPSBodG9ubChwLT5yeG1pdCk7DQorCSAg
cC0+cnhtaXQgKz0gbGVuOw0KKyNpZiBkZWZpbmVkKFRDUF9TQUNLKSAmJiBk
ZWZpbmVkKFRDUF9GQUNLKQ0KKwkgIHRwLT5yZXRyYW5fZGF0YSArPSBsZW47
DQorI2VuZGlmIC8qIFRDUF9GQUNLICovDQorCX0NCisjZW5kaWYgLyogVENQ
X1NBQ0sgKi8NCisNCiAJdGgtPnRoX2FjayA9IGh0b25sKHRwLT5yY3Zfbnh0
KTsNCiAJaWYgKG9wdGxlbikgew0KIAkJYmNvcHkob3B0LCB0aCArIDEsIG9w
dGxlbik7DQpAQCAtNzQ3LDYgKzk5MiwxNCBAQA0KIAkJCQl0cC0+dF9mbGFn
cyB8PSBURl9TRU5URklOOw0KIAkJCX0NCiAJCX0NCisjaWZkZWYgVENQX1NB
Q0sNCisJCWlmICghdHAtPnNhY2tfZGlzYWJsZSkgew0KKwkJCWlmIChzYWNr
X3J4bWl0ICYmIChwLT5yeG1pdCAhPSB0cC0+c25kX254dCkpIHsNCisJCQkJ
Z290byB0aW1lcjsNCisJCQl9DQorCQl9DQorI2VuZGlmDQorDQogCQl0cC0+
c25kX254dCArPSBsZW47DQogCQlpZiAoU0VRX0dUKHRwLT5zbmRfbnh0LCB0
cC0+c25kX21heCkpIHsNCiAJCQl0cC0+c25kX21heCA9IHRwLT5zbmRfbnh0
Ow0KQEAgLTc2OSw2ICsxMDIyLDE5IEBADQogCQkgKiBJbml0aWFsaXplIHNo
aWZ0IGNvdW50ZXIgd2hpY2ggaXMgdXNlZCBmb3IgYmFja29mZg0KIAkJICog
b2YgcmV0cmFuc21pdCB0aW1lLg0KIAkJICovDQorI2lmZGVmIFRDUF9TQUNL
DQorIHRpbWVyOg0KKwkJaWYgKCF0cC0+c2Fja19kaXNhYmxlICYmIHNhY2tf
cnhtaXQgJiYNCisJCSAgICAhY2FsbG91dF9hY3RpdmUodHAtPnR0X3JleG10
KSAmJg0KKwkJICAgIHRwLT5zbmRfbnh0ICE9IHRwLT5zbmRfdW5hKSB7DQor
CQkJaWYgKGNhbGxvdXRfYWN0aXZlKHRwLT50dF9wZXJzaXN0KSkgew0KKwkJ
CQljYWxsb3V0X3N0b3AodHAtPnR0X3BlcnNpc3QpOw0KKwkJCQl0cC0+dF9y
eHRzaGlmdCA9IDA7DQorCQkJfQ0KKwkJCWNhbGxvdXRfcmVzZXQodHAtPnR0
X3JleG10LCB0cC0+dF9yeHRjdXIsDQorCQkJCSAgICAgIHRjcF90aW1lcl9y
ZXhtdCwgdHApOw0KKwkJfQ0KKyNlbmRpZg0KIAkJaWYgKCFjYWxsb3V0X2Fj
dGl2ZSh0cC0+dHRfcmV4bXQpICYmDQogCQkgICAgdHAtPnNuZF9ueHQgIT0g
dHAtPnNuZF91bmEpIHsNCiAJCQlpZiAoY2FsbG91dF9hY3RpdmUodHAtPnR0
X3BlcnNpc3QpKSB7DQpAQCAtODU5LDYgKzExMjUsMTIgQEANCiAJZXJyb3Ig
PSBpcF9vdXRwdXQobSwgdHAtPnRfaW5wY2ItPmlucF9vcHRpb25zLCAmdHAt
PnRfaW5wY2ItPmlucF9yb3V0ZSwNCiAJICAgIChzby0+c29fb3B0aW9ucyAm
IFNPX0RPTlRST1VURSksIDApOw0KICAgICB9DQorCQ0KKyNpZiBkZWZpbmVk
KFRDUF9TQUNLKSAmJiBkZWZpbmVkKFRDUF9GQUNLKQ0KKwkvKiBVcGRhdGUg
c25kX2F3bmQgdG8gcmVmbGVjdCB0aGUgbmV3IGRhdGEgdGhhdCB3YXMgc2Vu
dC4gICovDQorCXRwLT5zbmRfYXduZCA9IHRjcF9zZXFfc3VidHJhY3QodHAt
PnNuZF9tYXgsIHRwLT5zbmRfZmFjaykgKw0KKwkgIHRwLT5yZXRyYW5fZGF0
YTsgICAgICAgICAgICAgICAgDQorI2VuZGlmIC8qIGRlZmluZWQoVENQX1NB
Q0spICYmIGRlZmluZWQoVENQX0ZBQ0spICovDQogCWlmIChlcnJvcikgew0K
IA0KIAkJLyoNCkluZGV4OiB0Y3Bfc3Vici5jDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQv
dGNwX3N1YnIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEzDQpkaWZm
IC11IC1kIC1iIC13IC11IC1kIC1yMS4xMTMgdGNwX3N1YnIuYw0KLS0tIHRj
cF9zdWJyLmMJMjAwMS8wOC8yMiAwMDo1ODoxNgkxLjExMw0KKysrIHRjcF9z
dWJyLmMJMjAwMS8wOC8yMiAyMzoxMToyMQ0KQEAgLTE0OCw2ICsxNDgsMTIg
QEANCiBTWVNDVExfSU5UKF9uZXRfaW5ldF90Y3AsIE9JRF9BVVRPLCBpc25f
cmVzZWVkX2ludGVydmFsLCBDVExGTEFHX1JXLA0KICAgICAmdGNwX2lzbl9y
ZXNlZWRfaW50ZXJ2YWwsIDAsICJTZWNvbmRzIGJldHdlZW4gcmVzZWVkaW5n
IG9mIElTTiBzZWNyZXQiKTsNCiANCisjaWZkZWYgVENQX1NBQ0sNCitzdGF0
aWMgaW50IAl0Y3BfZG9fc2FjayA9IDE7DQorU1lTQ1RMX0lOVChfbmV0X2lu
ZXRfdGNwLCBPSURfQVVUTywgdGNwX2RvX3NhY2ssIENUTEZMQUdfUlcsICZ0
Y3BfZG9fc2FjaywgMCwgDQorICAgICJFeHBlcmltZW50YWwgU2FjayIpOw0K
KyNlbmRpZg0KKw0KIHN0YXRpYyB2b2lkCXRjcF9jbGVhcnRhb2NhY2hlIF9f
UCgodm9pZCkpOw0KIHN0YXRpYyB2b2lkCXRjcF9ub3RpZnkgX19QKChzdHJ1
Y3QgaW5wY2IgKiwgaW50KSk7DQogDQpAQCAtMTYxLDYgKzE2NywxNCBAQA0K
ICNkZWZpbmUgVENCSEFTSFNJWkUJNTEyDQogI2VuZGlmDQogDQorI2lmbmRl
ZiBUQ1BfRE9fU0FDSw0KKyNpZmRlZiBUQ1BfU0FDSw0KKyNkZWZpbmUgVENQ
X0RPX1NBQ0sJMQ0KKyNlbHNlDQorI2RlZmluZSBUQ1BfRE9fU0FDSwkwDQor
I2VuZGlmDQorI2VuZGlmDQorDQogLyoNCiAgKiBUaGlzIGlzIHRoZSBhY3R1
YWwgc2hhcGUgb2Ygd2hhdCB3ZSBhbGxvY2F0ZSB1c2luZyB0aGUgem9uZQ0K
ICAqIGFsbG9jYXRvci4gIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0
byBwcm90ZWN0IGJvdGggc3RydWN0dXJlcw0KQEAgLTUyNyw2ICs1NDEsOSBA
QA0KIAljYWxsb3V0X2luaXQodHAtPnR0XzJtc2wgPSAmaXQtPmlucF90cF8y
bXNsLCAwKTsNCiAJY2FsbG91dF9pbml0KHRwLT50dF9kZWxhY2sgPSAmaXQt
PmlucF90cF9kZWxhY2ssIDApOw0KIA0KKyNpZmRlZiBUQ1BfU0FDSw0KKwl0
cC0+c2Fja19kaXNhYmxlID0gdGNwX2RvX3NhY2sgPyAwIDogMTsNCisjZW5k
aWYNCiAJaWYgKHRjcF9kb19yZmMxMzIzKQ0KIAkJdHAtPnRfZmxhZ3MgPSAo
VEZfUkVRX1NDQUxFfFRGX1JFUV9UU1RNUCk7DQogCWlmICh0Y3BfZG9fcmZj
MTY0NCkNCkBAIC01OTEsNiArNjA4LDkgQEANCiAJcmVnaXN0ZXIgc3RydWN0
IHRzZWdfcWVudCAqcTsNCiAJc3RydWN0IGlucGNiICppbnAgPSB0cC0+dF9p
bnBjYjsNCiAJc3RydWN0IHNvY2tldCAqc28gPSBpbnAtPmlucF9zb2NrZXQ7
DQorI2lmZGVmIFRDUF9TQUNLDQorCXN0cnVjdCBzYWNraG9sZSAqcCwgKnFf
c2FjazsNCisjZW5kaWYNCiAjaWZkZWYgSU5FVDYNCiAJaW50IGlzaXB2NiA9
IChpbnAtPmlucF92ZmxhZyAmIElOUF9JUFY2KSAhPSAwOw0KICNlbmRpZiAv
KiBJTkVUNiAqLw0KQEAgLTcyOSw2ICs3NDksMTUgQEANCiAJCW1fZnJlZW0o
cS0+dHFlX20pOw0KIAkJRlJFRShxLCBNX1RTRUdRKTsNCiAJfQ0KKyNpZmRl
ZiBUQ1BfU0FDSw0KKwkvKiBGcmVlIFNBQ0sgaG9sZXMuICovDQorCXFfc2Fj
ayA9IHAgPSB0cC0+c25kX2hvbGVzOw0KKwl3aGlsZSAocCAhPSAwKSB7DQor
CQlxX3NhY2sgPSBwLT5uZXh0Ow0KKwkJZnJlZShwLCBNX1BDQik7DQorCQlw
ID0gcV9zYWNrOw0KKwl9DQorI2VuZGlmDQogCWlucC0+aW5wX3BwY2IgPSBO
VUxMOw0KIAlzb2lzZGlzY29ubmVjdGVkKHNvKTsNCiAjaWZkZWYgSU5FVDYN
CkluZGV4OiB0Y3BfdGltZXIuYw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
UkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9uZXRpbmV0L3RjcF90aW1l
ci5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS40Nw0KZGlmZiAtdSAtZCAt
YiAtdyAtdSAtZCAtcjEuNDcgdGNwX3RpbWVyLmMNCi0tLSB0Y3BfdGltZXIu
YwkyMDAxLzA4LzIyIDAwOjU4OjE2CTEuNDcNCisrKyB0Y3BfdGltZXIuYwky
MDAxLzA4LzIyIDIzOjExOjIxDQpAQCAtNDAsNiArNDAsOCBAQA0KIA0KICNp
bmNsdWRlIDxzeXMvcGFyYW0uaD4NCiAjaW5jbHVkZSA8c3lzL3N5c3RtLmg+
DQorI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4NCisjaW5jbHVkZSA8c3lzL21i
dWYuaD4NCiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPg0KICNpbmNsdWRlIDxz
eXMvbWJ1Zi5oPg0KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+DQpAQCAtMTg2
LDYgKzE4OCw5IEBADQogew0KIAlzdHJ1Y3QgdGNwY2IgKnRwID0geHRwOw0K
IAlpbnQgczsNCisjaWZkZWYgVENQX1NBQ0sNCisJc3RydWN0IHNhY2tob2xl
ICpwLCAqcTsNCisjZW5kaWYNCiAjaWZkZWYgVENQREVCVUcNCiAJaW50IG9z
dGF0ZTsNCiANCkBAIC0xOTcsNyArMjAyLDI1IEBADQogCQlyZXR1cm47DQog
CX0NCiAJY2FsbG91dF9kZWFjdGl2YXRlKHRwLT50dF8ybXNsKTsNCisJDQor
I2lmZGVmIFRDUF9TQUNLDQogCS8qDQorCSAqIEZyZWUgU0FDSyBob2xlcyBm
b3IgMk1TTCBhbmQgUkVYTVQgdGltZXJzLg0KKwkgKi8NCisJcSA9IHAgPSB0
cC0+c25kX2hvbGVzOw0KKwl3aGlsZSAocCAhPSAwKSB7DQorCSAgcSA9IHAt
Pm5leHQ7DQorCSAgZnJlZShwLCBNX1BDQik7DQorCSAgcCA9IHE7DQorCX0N
CisJdHAtPnNuZF9ob2xlcyA9IDA7DQorI2lmIGRlZmluZWQoVENQX1NBQ0sp
ICYmIGRlZmluZWQoVENQX0ZBQ0spDQorCXRwLT5zbmRfZmFjayA9IHRwLT5z
bmRfdW5hOw0KKwl0cC0+cmV0cmFuX2RhdGEgPSAwOw0KKwl0cC0+c25kX2F3
bmQgPSAwOw0KKyNlbmRpZiAvKiBUQ1BfRkFDSyAqLw0KKyNlbmRpZiAvKiBU
Q1BfU0FDSyAqLwkNCisJLyoNCiAJICogMiBNU0wgdGltZW91dCBpbiBzaHV0
ZG93biB3ZW50IG9mZi4gIElmIHdlJ3JlIGNsb3NlZCBidXQNCiAJICogc3Rp
bGwgd2FpdGluZyBmb3IgcGVlciB0byBjbG9zZSBhbmQgY29ubmVjdGlvbiBo
YXMgYmVlbiBpZGxlDQogCSAqIHRvbyBsb25nLCBvciBpZiAyTVNMIHRpbWUg
aXMgdXAgZnJvbSBUSU1FX1dBSVQsIGRlbGV0ZSBjb25uZWN0aW9uDQpAQCAt
MzQ5LDYgKzM3Miw5IEBADQogCXN0cnVjdCB0Y3BjYiAqdHAgPSB4dHA7DQog
CWludCBzOw0KIAlpbnQgcmV4bXQ7DQorI2lmZGVmIFRDUF9TQUNLDQorCXN0
cnVjdCBzYWNraG9sZSAqcCwgKnE7DQorI2VuZGlmDQogI2lmZGVmIFRDUERF
QlVHDQogCWludCBvc3RhdGU7DQogDQpAQCAtMzYwLDcgKzM4NiwyNSBAQA0K
IAkJcmV0dXJuOw0KIAl9DQogCWNhbGxvdXRfZGVhY3RpdmF0ZSh0cC0+dHRf
cmV4bXQpOw0KKyNpZmRlZiBUQ1BfU0FDSw0KIAkvKg0KKwkgKiBGcmVlIFNB
Q0sgaG9sZXMgZm9yIDJNU0wgYW5kIFJFWE1UIHRpbWVycy4NCisJICovDQor
CXEgPSBwID0gdHAtPnNuZF9ob2xlczsNCisJd2hpbGUgKHAgIT0gMCkgew0K
KwkgIHEgPSBwLT5uZXh0Ow0KKwkgIGZyZWUocCwgTV9QQ0IpOw0KKwkgIHAg
PSBxOw0KKwl9DQorCXRwLT5zbmRfaG9sZXMgPSAwOw0KKyNpZiBkZWZpbmVk
KFRDUF9TQUNLKSAmJiBkZWZpbmVkKFRDUF9GQUNLKQ0KKwl0cC0+c25kX2Zh
Y2sgPSB0cC0+c25kX3VuYTsNCisJdHAtPnJldHJhbl9kYXRhID0gMDsNCisJ
dHAtPnNuZF9hd25kID0gMDsNCisjZW5kaWYgLyogVENQX0ZBQ0sgKi8NCisj
ZW5kaWYgLyogVENQX1NBQ0sgKi8NCisNCisJLyoNCiAJICogUmV0cmFuc21p
c3Npb24gdGltZXIgd2VudCBvZmYuICBNZXNzYWdlIGhhcyBub3QNCiAJICog
YmVlbiBhY2tlZCB3aXRoaW4gcmV0cmFuc21pdCBpbnRlcnZhbC4gIEJhY2sg
b2ZmDQogCSAqIHRvIGEgbG9uZ2VyIHJldHJhbnNtaXQgaW50ZXJ2YWwgYW5k
IHJldHJhbnNtaXQgb25lIHNlZ21lbnQuDQpAQCAtNDIxLDExICs0NjUsMjAg
QEANCiAJCXRwLT50X3NydHQgPSAwOw0KIAl9DQogCXRwLT5zbmRfbnh0ID0g
dHAtPnNuZF91bmE7DQorI2lmIGRlZmluZWQoVENQX1NBQ0spDQogCS8qDQor
CSAqIE5vdGU6ICBXZSBvdmVybG9hZCBzbmRfbGFzdCB0byBmdW5jdGlvbiBh
bHNvIGFzIHRoZQ0KKwkgKiBzbmRfbGFzdCB2YXJpYWJsZSBkZXNjcmliZWQg
aW4gUkZDIDI1ODINCisJICovDQorCXRwLT5zbmRfbGFzdCA9IHRwLT5zbmRf
bWF4Ow0KKyNlbHNlDQorCS8qDQogCSAqIE5vdGU6ICBXZSBvdmVybG9hZCBz
bmRfcmVjb3ZlciB0byBmdW5jdGlvbiBhbHNvIGFzIHRoZQ0KIAkgKiBzbmRf
bGFzdCB2YXJpYWJsZSBkZXNjcmliZWQgaW4gUkZDIDI1ODINCiAJICovDQor
DQogCXRwLT5zbmRfcmVjb3ZlciA9IHRwLT5zbmRfbWF4Ow0KKyNlbmRpZiAv
KiBUQ1BfU0FDSyAqLw0KIAkvKg0KIAkgKiBGb3JjZSBhIHNlZ21lbnQgdG8g
YmUgc2VudC4NCiAJICovDQpJbmRleDogdGNwX3VzcnJlcS5jDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lz
L25ldGluZXQvdGNwX3VzcnJlcS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g
MS42Ng0KZGlmZiAtdSAtZCAtYiAtdyAtdSAtZCAtcjEuNjYgdGNwX3VzcnJl
cS5jDQotLS0gdGNwX3VzcnJlcS5jCTIwMDEvMDgvMjIgMDA6NTg6MTYJMS42
Ng0KKysrIHRjcF91c3JyZXEuYwkyMDAxLzA4LzIyIDIzOjExOjIxDQpAQCAt
NzYxLDYgKzc2MSwxNiBAQA0KIAl0cC0+aXNzID0gdGNwX25ld19pc24odHAp
Ow0KIAl0Y3Bfc2VuZHNlcWluaXQodHApOw0KIA0KKyNpZiBkZWZpbmVkKFRD
UF9TQUNLKQ0KKwkJdHAtPnNuZF9sYXN0ID0gdHAtPnNuZF91bmE7DQorI2Vu
ZGlmDQorI2lmIGRlZmluZWQoVENQX1NBQ0spICYmIGRlZmluZWQoVENQX0ZB
Q0spDQorCQl0cC0+c25kX2ZhY2sgPSB0cC0+c25kX3VuYTsNCisJCXRwLT5y
ZXRyYW5fZGF0YSA9IDA7DQorCQl0cC0+c25kX2F3bmQgPSAwOw0KKyNlbmRp
Zg0KKw0KKw0KIAkvKg0KIAkgKiBHZW5lcmF0ZSBhIENDIHZhbHVlIGZvciB0
aGlzIGNvbm5lY3Rpb24gYW5kDQogCSAqIGNoZWNrIHdoZXRoZXIgQ0Mgb3Ig
Q0NuZXcgc2hvdWxkIGJlIHVzZWQuDQpAQCAtOTc4LDYgKzk4OCwxMSBAQA0K
IAkJY2FzZSBUQ1BfTk9QVVNIOg0KIAkJCW9wdHZhbCA9IHRwLT50X2ZsYWdz
ICYgVEZfTk9QVVNIOw0KIAkJCWJyZWFrOw0KKyNpZmRlZiBUQ1BfU0FDSw0K
KwkJY2FzZSBUQ1BfU0FDS19ESVNBQkxFOg0KKwkJCW9wdHZhbCA9IHRwLT5z
YWNrX2Rpc2FibGU7DQorCQkJYnJlYWs7DQorI2VuZGlmCQkJDQogCQlkZWZh
dWx0Og0KIAkJCWVycm9yID0gRU5PUFJPVE9PUFQ7DQogCQkJYnJlYWs7DQpJ
bmRleDogdGNwX3Zhci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQvdGNwX3Zhci5oLHYN
CnJldHJpZXZpbmcgcmV2aXNpb24gMS43MQ0KZGlmZiAtdSAtZCAtYiAtdyAt
dSAtZCAtcjEuNzEgdGNwX3Zhci5oDQotLS0gdGNwX3Zhci5oCTIwMDEvMDgv
MjIgMDA6NTg6MTYJMS43MQ0KKysrIHRjcF92YXIuaAkyMDAxLzA4LzIyIDIz
OjExOjIxDQpAQCAtMzYsNiArMzYsMjEgQEANCiANCiAjaWZuZGVmIF9ORVRJ
TkVUX1RDUF9WQVJfSF8NCiAjZGVmaW5lIF9ORVRJTkVUX1RDUF9WQVJfSF8N
CisNCitzdHJ1Y3Qgc2Fja2JsayB7DQorCXRjcF9zZXEgc3RhcnQ7CQkvKiBz
dGFydCBzZXEgbm8uIG9mIHNhY2sgYmxvY2sgKi8NCisJdGNwX3NlcSBlbmQ7
IAkJLyogZW5kIHNlcSBuby4gKi8NCit9OyAgDQorDQorc3RydWN0IHNhY2to
b2xlIHsNCisJdGNwX3NlcSBzdGFydDsJCS8qIHN0YXJ0IHNlcSBuby4gb2Yg
aG9sZSAqLyANCisJdGNwX3NlcSBlbmQ7CQkvKiBlbmQgc2VxIG5vLiAqLw0K
KwlpbnQJZHVwczsJCS8qIG51bWJlciBvZiBkdXAocylhY2tzIGZvciB0aGlz
IGhvbGUgKi8NCisJdGNwX3NlcSByeG1pdDsJCS8qIG5leHQgc2VxLiBubyBp
biBob2xlIHRvIGJlIHJldHJhbnNtaXR0ZWQgKi8NCisJc3RydWN0IHNhY2to
b2xlICpuZXh0OwkvKiBuZXh0IGluIGxpc3QgKi8NCit9Ow0KKw0KKw0KIC8q
DQogICogS2VybmVsIHZhcmlhYmxlcyBmb3IgdGNwLg0KICAqLw0KQEAgLTEx
NCw2ICsxMjksMzEgQEANCiAJdV9sb25nCXJjdl93bmQ7CQkvKiByZWNlaXZl
IHdpbmRvdyAqLw0KIAl0Y3Bfc2VxCXJjdl91cDsJCQkvKiByZWNlaXZlIHVy
Z2VudCBwb2ludGVyICovDQogDQorI2lmZGVmIFRDUF9TQUNLDQorCWludAlz
YWNrX2Rpc2FibGU7CQkvKiBkaXNhYmxlIFNBQ0sgZm9yIHRoaXMgY29ubmVj
dGlvbiAqLw0KKwlpbnQJc25kX251bWhvbGVzOwkJLyogbnVtYmVyIG9mIGhv
bGVzIHNlZW4gYnkgc2VuZGVyICovDQorCXN0cnVjdCBzYWNraG9sZSAqc25k
X2hvbGVzOwkvKiBsaW5rZWQgbGlzdCBvZiBob2xlcyAoc29ydGVkKSAqLw0K
KyNpZiBkZWZpbmVkKFRDUF9TQUNLKSAmJiBkZWZpbmVkKFRDUF9GQUNLKQ0K
Kwl0Y3Bfc2VxIHNuZF9mYWNrOwkJLyogZm9yIEZBQ0sgY29uZ2VzdGlvbiBj
b250cm9sICovDQorCXVfbG9uZwlzbmRfYXduZDsJCS8qIHNuZF9ueHQgLSBz
bmRfZmFjayArICovDQorCQkJCQkvKiByZXRyYW5zbWl0dGVkIGRhdGEgKi8N
CisJaW50IHJldHJhbl9kYXRhOwkJLyogYW1vdW50IG9mIG91dHN0YW5kaW5n
IHJldHguIGRhdGEgICovDQorI2VuZGlmIC8qIFRDUF9GQUNLICovDQorI2Vu
ZGlmIC8qIFRDUF9TQUNLICovDQorI2lmIGRlZmluZWQoVENQX1NBQ0spDQor
CXRjcF9zZXEgc25kX2xhc3Q7CQkvKiBmb3IgdXNlIGluIGZhc3QgcmVjb3Zl
cnkgKi8NCisjZW5kaWYNCisNCisjaWZkZWYgVENQX1NBQ0sNCisJdGNwX3Nl
cSByY3ZfbGFzdHN0YXJ0OwkJLyogc3RhcnQgb2YgbGFzdCBzZWdtZW50IHJl
Y2QuICovDQorCXRjcF9zZXEgcmN2X2xhc3RlbmQ7CQkvKiBlbmQgb2YgLi4u
ICovDQorCXRjcF9zZXEgcmN2X2xhc3RzYWNrOwkJLyogbGFzdCBzZXEgbnVt
YmVyKCsxKSBzYWNrJ2QgYnkgcmN2J3IqLw0KKwlpbnQJcmN2X251bXNhY2tz
OwkJLyogIyBkaXN0aW5jdCBzYWNrIGJsa3MgcHJlc2VudCAqLw0KKwlzdHJ1
Y3Qgc2Fja2JsayBzYWNrYmxrc1tNQVhfU0FDS19CTEtTXTsgLyogc2VxIG5v
cy4gb2Ygc2FjayBibG9ja3MgKi8NCisjZW5kaWYNCisNCisNCisNCiAJdV9s
b25nCXNuZF93bmQ7CQkvKiBzZW5kIHdpbmRvdyAqLw0KIAl1X2xvbmcJc25k
X2N3bmQ7CQkvKiBjb25nZXN0aW9uLWNvbnRyb2xsZWQgd2luZG93ICovDQog
CXVfbG9uZwlzbmRfc3N0aHJlc2g7CQkvKiBzbmRfY3duZCBzaXplIHRocmVz
aG9sZCBmb3INCkBAIC0zMzgsOCArMzc4LDEyIEBADQogI2RlZmluZQlUQ1BD
VExfUENCTElTVAkJMTEJLyogbGlzdCBvZiBhbGwgb3V0c3RhbmRpbmcgUENC
cyAqLw0KICNkZWZpbmUJVENQQ1RMX0RFTEFDS1RJTUUJMTIJLyogdGltZSBi
ZWZvcmUgc2VuZGluZyBkZWxheWVkIEFDSyAqLw0KICNkZWZpbmUJVENQQ1RM
X1Y2TVNTREZMVAkxMwkvKiBNU1MgZGVmYXVsdCBmb3IgSVB2NiAqLw0KKyNp
ZmRlZiAgVENQX1NBQ0sNCisjZGVmaW5lIFRDUENUTF9TQUNLICAgICAgICAg
ICAgIDE0ICAgICAgLypuZWVkcyB0byByZXZpc3QqLw0KKyNkZWZpbmUJVENQ
Q1RMX01BWElECQkxNQ0KKyNlbHNlDQogI2RlZmluZQlUQ1BDVExfTUFYSUQJ
CTE0DQotDQorI2VuZGlmDQogI2RlZmluZSBUQ1BDVExfTkFNRVMgeyBcDQog
CXsgMCwgMCB9LCBcDQogCXsgInJmYzEzMjMiLCBDVExUWVBFX0lOVCB9LCBc
DQpAQCAtMzU1LDggKzM5OSwxMSBAQA0KIAl7ICJwY2JsaXN0IiwgQ1RMVFlQ
RV9TVFJVQ1QgfSwgXA0KIAl7ICJkZWxhY2t0aW1lIiwgQ1RMVFlQRV9JTlQg
fSwgXA0KIAl7ICJ2Nm1zc2RmbHQiLCBDVExUWVBFX0lOVCB9LCBcDQorICAg
ICAgICB7ICJzYWNrIiwgICAgICBDVExUWVBFX0lOVH0sIFwNCiB9DQotDQor
LyoNCisjZGVmaW5lIFRDUF9TQUNLX0RFQlVHDQorKi8NCiANCiAjaWZkZWYg
X0tFUk5FTA0KICNpZmRlZiBTWVNDVExfREVDTA0KQEAgLTM2Nyw2ICs0MTQs
OSBAQA0KIGV4dGVybglzdHJ1Y3QgaW5wY2JpbmZvIHRjYmluZm87DQogZXh0
ZXJuCXN0cnVjdCB0Y3BzdGF0IHRjcHN0YXQ7CS8qIHRjcCBzdGF0aXN0aWNz
ICovDQogZXh0ZXJuCWludCB0Y3BfbXNzZGZsdDsJLyogWFhYICovDQorI2lm
ZGVmIFRDUF9TQUNLDQorZXh0ZXJuCWludCB0Y3BfZG9fc2FjazsJLyogU0FD
SyBlbmFibGVkL2Rpc2FibGVkICovDQorI2VuZGlmDQogZXh0ZXJuCWludCB0
Y3BfZGVsYWNrX2VuYWJsZWQ7DQogZXh0ZXJuCWludCB0Y3BfZG9fbmV3cmVu
bzsNCiBleHRlcm4JaW50IHNzX2ZsdHN6Ow0KQEAgLTQwNiw3ICs0NTYsMjAg
QEANCiAJIHRjcF90aW1lcnMgX19QKChzdHJ1Y3QgdGNwY2IgKiwgaW50KSk7
DQogdm9pZAkgdGNwX3RyYWNlIF9fUCgoaW50LCBpbnQsIHN0cnVjdCB0Y3Bj
YiAqLCB2b2lkICosIHN0cnVjdCB0Y3BoZHIgKiwNCiAJCQlpbnQpKTsNCisj
aWZkZWYgVENQX1NBQ0sNCitpbnQJIHRjcF9zYWNrX29wdGlvbiBfX1AoKHN0
cnVjdCB0Y3BjYiAqLHN0cnVjdCB0Y3BoZHIgKix1X2NoYXIgKixpbnQpKTsN
Cit2b2lkCSB0Y3BfdXBkYXRlX3NhY2tfbGlzdCBfX1AoKHN0cnVjdCB0Y3Bj
YiAqdHApKTsNCit2b2lkCSB0Y3BfZGVsX3NhY2tob2xlcyBfX1AoKHN0cnVj
dCB0Y3BjYiAqLCBzdHJ1Y3QgdGNwaGRyICopKTsNCit2b2lkCSB0Y3BfY2xl
YW5fc2Fja3JlcG9ydCBfX1AoKHN0cnVjdCB0Y3BjYiAqdHApKTsNCit2b2lk
CSB0Y3Bfc2Fja19hZGp1c3QgX19QKChzdHJ1Y3QgdGNwY2IgKnRwKSk7DQor
c3RydWN0IHNhY2tob2xlICoNCisJIHRjcF9zYWNrX291dHB1dCBfX1AoKHN0
cnVjdCB0Y3BjYiAqdHApKTsNCitpbnQJIHRjcF9zYWNrX3BhcnRpYWxhY2sg
X19QKChzdHJ1Y3QgdGNwY2IgKiwgc3RydWN0IHRjcGhkciAqKSk7DQogDQor
I2VuZGlmIC8qIFRDUF9TQUNLICovDQorI2lmIGRlZmluZWQoVENQX1NBQ0sp
DQordV9sb25nCSB0Y3Bfc2VxX3N1YnRyYWN0ICBfX1AoKHVfbG9uZywgdV9s
b25nICkpOyANCisjZW5kaWYgLyogVENQX1NBQ0sgKi8NCiBleHRlcm4Jc3Ry
dWN0IHByX3VzcnJlcXMgdGNwX3VzcnJlcXM7DQogZXh0ZXJuCXVfbG9uZyB0
Y3Bfc2VuZHNwYWNlOw0KIGV4dGVybgl1X2xvbmcgdGNwX3JlY3ZzcGFjZTsN
Cg==
---904840148-831484259-998525718=:16888--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.33.0108221713240.16888-200000>