Re: most stable 2.2.x kernel?

Simon Kirby (sim@netnation.com)
Sat, 15 May 1999 10:44:39 -0700 (PDT)


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.

---1362361633-410649091-926790279=:23287
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Fri, 14 May 1999, Brian wrote:

> What is the most stable 2.2.x kernel out their for production use? I
> moved from 2.0.35 to 2.2.8 and had major crashes on about half dozen
> systems. I backed down to 2.2.7-ac4 (I wanted the >1024 descriptors), and
> had one crash so far.

Attached is a simple patch against 2.2.9 made from fdset-2.2.3.diff that
should work on x86 (I think I remember that other platforms rejected hunks
and I can't recall if I fixed them or not). This should get you on your
way with 2.2.9, which fixes most things (most importantly reverting the
mass buffer code that was causing problems and avoiding the tcp div by
zero that disabled net_bh :)).

Simon-

| Simon Kirby | Systems Administration |
| mailto:sim@netnation.com | NetNation Communications |
| http://www.netnation.com/ | Tech: (604) 684-6892 |

---1362361633-410649091-926790279=:23287
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="linux-2.2.9+sim_homemade_x86_only_big_fdset.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9905151044390.23287@peace.netnation.com>
Content-Description:
Content-Disposition: attachment; filename="linux-2.2.9+sim_homemade_x86_only_big_fdset.patch"

ZGlmZiAtdXJOIGxpbnV4Lm9yaWcvYXJjaC9hbHBoYS9rZXJuZWwvcHJvY2Vz
cy5jIGxpbnV4L2FyY2gvYWxwaGEva2VybmVsL3Byb2Nlc3MuYw0KLS0tIGxp
bnV4Lm9yaWcvYXJjaC9hbHBoYS9rZXJuZWwvcHJvY2Vzcy5jCUZyaSBNYXkg
MTQgMDk6MjI6MjEgMTk5OQ0KKysrIGxpbnV4L2FyY2gvYWxwaGEva2VybmVs
L3Byb2Nlc3MuYwlGcmkgTWF5IDE0IDA5OjIzOjU4IDE5OTkNCkBAIC01NSw3
ICs1NSw2IEBADQogdW5zaWduZWQgbG9uZyBpbml0X3VzZXJfc3RhY2tbMTAy
NF0gPSB7IFNUQUNLX01BR0lDLCB9Ow0KIHN0YXRpYyBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgaW5pdF9tbWFwID0gSU5JVF9NTUFQOw0KIHN0YXRpYyBzdHJ1
Y3QgZnNfc3RydWN0IGluaXRfZnMgPSBJTklUX0ZTOw0KLXN0YXRpYyBzdHJ1
Y3QgZmlsZSAqIGluaXRfZmRfYXJyYXlbTlJfT1BFTl0gPSB7IE5VTEwsIH07
DQogc3RhdGljIHN0cnVjdCBmaWxlc19zdHJ1Y3QgaW5pdF9maWxlcyA9IElO
SVRfRklMRVM7DQogc3RhdGljIHN0cnVjdCBzaWduYWxfc3RydWN0IGluaXRf
c2lnbmFscyA9IElOSVRfU0lHTkFMUzsNCiBzdHJ1Y3QgbW1fc3RydWN0IGlu
aXRfbW0gPSBJTklUX01NOw0KZGlmZiAtdXJOIGxpbnV4Lm9yaWcvYXJjaC9p
Mzg2L2tlcm5lbC9pbml0X3Rhc2suYyBsaW51eC9hcmNoL2kzODYva2VybmVs
L2luaXRfdGFzay5jDQotLS0gbGludXgub3JpZy9hcmNoL2kzODYva2VybmVs
L2luaXRfdGFzay5jCUZyaSBNYXkgMTQgMDk6MjI6MjEgMTk5OQ0KKysrIGxp
bnV4L2FyY2gvaTM4Ni9rZXJuZWwvaW5pdF90YXNrLmMJRnJpIE1heSAxNCAw
OToyMzo1OCAxOTk5DQpAQCAtNyw3ICs3LDYgQEANCiANCiBzdGF0aWMgc3Ry
dWN0IHZtX2FyZWFfc3RydWN0IGluaXRfbW1hcCA9IElOSVRfTU1BUDsNCiBz
dGF0aWMgc3RydWN0IGZzX3N0cnVjdCBpbml0X2ZzID0gSU5JVF9GUzsNCi1z
dGF0aWMgc3RydWN0IGZpbGUgKiBpbml0X2ZkX2FycmF5W05SX09QRU5dID0g
eyBOVUxMLCB9Ow0KIHN0YXRpYyBzdHJ1Y3QgZmlsZXNfc3RydWN0IGluaXRf
ZmlsZXMgPSBJTklUX0ZJTEVTOw0KIHN0YXRpYyBzdHJ1Y3Qgc2lnbmFsX3N0
cnVjdCBpbml0X3NpZ25hbHMgPSBJTklUX1NJR05BTFM7DQogc3RydWN0IG1t
X3N0cnVjdCBpbml0X21tID0gSU5JVF9NTTsNCmRpZmYgLXVyTiBsaW51eC5v
cmlnL2FyY2gvbTY4ay9rZXJuZWwvcHJvY2Vzcy5jIGxpbnV4L2FyY2gvbTY4
ay9rZXJuZWwvcHJvY2Vzcy5jDQotLS0gbGludXgub3JpZy9hcmNoL202OGsv
a2VybmVsL3Byb2Nlc3MuYwlGcmkgTWF5IDE0IDA5OjIyOjIxIDE5OTkNCisr
KyBsaW51eC9hcmNoL202OGsva2VybmVsL3Byb2Nlc3MuYwlGcmkgTWF5IDE0
IDA5OjIzOjU4IDE5OTkNCkBAIC00MCw3ICs0MCw2IEBADQogICovDQogc3Rh
dGljIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCBpbml0X21tYXAgPSBJTklUX01N
QVA7DQogc3RhdGljIHN0cnVjdCBmc19zdHJ1Y3QgaW5pdF9mcyA9IElOSVRf
RlM7DQotc3RhdGljIHN0cnVjdCBmaWxlICogaW5pdF9mZF9hcnJheVtOUl9P
UEVOXSA9IHsgTlVMTCwgfTsNCiBzdGF0aWMgc3RydWN0IGZpbGVzX3N0cnVj
dCBpbml0X2ZpbGVzID0gSU5JVF9GSUxFUzsNCiBzdGF0aWMgc3RydWN0IHNp
Z25hbF9zdHJ1Y3QgaW5pdF9zaWduYWxzID0gSU5JVF9TSUdOQUxTOw0KIHN0
cnVjdCBtbV9zdHJ1Y3QgaW5pdF9tbSA9IElOSVRfTU07DQpkaWZmIC11ck4g
bGludXgub3JpZy9hcmNoL21pcHMva2VybmVsL2luaXRfdGFzay5jIGxpbnV4
L2FyY2gvbWlwcy9rZXJuZWwvaW5pdF90YXNrLmMNCi0tLSBsaW51eC5vcmln
L2FyY2gvbWlwcy9rZXJuZWwvaW5pdF90YXNrLmMJRnJpIE1heSAxNCAwOToy
MjoyMSAxOTk5DQorKysgbGludXgvYXJjaC9taXBzL2tlcm5lbC9pbml0X3Rh
c2suYwlGcmkgTWF5IDE0IDA5OjIzOjU4IDE5OTkNCkBAIC02LDcgKzYsNiBA
QA0KIA0KIHN0YXRpYyBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgaW5pdF9tbWFw
ID0gSU5JVF9NTUFQOw0KIHN0YXRpYyBzdHJ1Y3QgZnNfc3RydWN0IGluaXRf
ZnMgPSBJTklUX0ZTOw0KLXN0YXRpYyBzdHJ1Y3QgZmlsZXMgKiBpbml0X2Zk
X2FycmF5W05SX09QRU5dID0geyBOVUxMLCB9Ow0KIHN0YXRpYyBzdHJ1Y3Qg
ZmlsZXNfc3RydWN0IGluaXRfZmlsZXMgPSBJTklUX0ZJTEVTOw0KIHN0YXRp
YyBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCBpbml0X3NpZ25hbHMgPSBJTklUX1NJ
R05BTFM7DQogc3RydWN0IG1tX3N0cnVjdCBpbml0X21tID0gSU5JVF9NTTsN
CmRpZmYgLXVyTiBsaW51eC5vcmlnL2FyY2gvcHBjL2tlcm5lbC9wcm9jZXNz
LmMgbGludXgvYXJjaC9wcGMva2VybmVsL3Byb2Nlc3MuYw0KLS0tIGxpbnV4
Lm9yaWcvYXJjaC9wcGMva2VybmVsL3Byb2Nlc3MuYwlGcmkgTWF5IDE0IDA5
OjIyOjIxIDE5OTkNCisrKyBsaW51eC9hcmNoL3BwYy9rZXJuZWwvcHJvY2Vz
cy5jCUZyaSBNYXkgMTQgMDk6MjM6NTggMTk5OQ0KQEAgLTQ4LDcgKzQ4LDYg
QEANCiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxhc3RfdGFza191c2VkX21hdGgg
PSBOVUxMOw0KIHN0YXRpYyBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgaW5pdF9t
bWFwID0gSU5JVF9NTUFQOw0KIHN0YXRpYyBzdHJ1Y3QgZnNfc3RydWN0IGlu
aXRfZnMgPSBJTklUX0ZTOw0KLXN0YXRpYyBzdHJ1Y3QgZmlsZSAqIGluaXRf
ZmRfYXJyYXlbTlJfT1BFTl0gPSB7IE5VTEwsIH07DQogc3RhdGljIHN0cnVj
dCBmaWxlc19zdHJ1Y3QgaW5pdF9maWxlcyA9IElOSVRfRklMRVM7DQogc3Rh
dGljIHN0cnVjdCBzaWduYWxfc3RydWN0IGluaXRfc2lnbmFscyA9IElOSVRf
U0lHTkFMUzsNCiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW0gPSBJTklUX01N
Ow0KZGlmZiAtdXJOIGxpbnV4Lm9yaWcvYXJjaC9zcGFyYy9rZXJuZWwvaW5p
dF90YXNrLmMgbGludXgvYXJjaC9zcGFyYy9rZXJuZWwvaW5pdF90YXNrLmMN
Ci0tLSBsaW51eC5vcmlnL2FyY2gvc3BhcmMva2VybmVsL2luaXRfdGFzay5j
CUZyaSBNYXkgMTQgMDk6MjI6MjEgMTk5OQ0KKysrIGxpbnV4L2FyY2gvc3Bh
cmMva2VybmVsL2luaXRfdGFzay5jCUZyaSBNYXkgMTQgMDk6MjM6NTggMTk5
OQ0KQEAgLTYsNyArNiw2IEBADQogDQogc3RhdGljIHN0cnVjdCB2bV9hcmVh
X3N0cnVjdCBpbml0X21tYXAgPSBJTklUX01NQVA7DQogc3RhdGljIHN0cnVj
dCBmc19zdHJ1Y3QgaW5pdF9mcyA9IElOSVRfRlM7DQotc3RhdGljIHN0cnVj
dCBmaWxlICogaW5pdF9mZF9hcnJheVtOUl9PUEVOXSA9IHsgTlVMTCwgfTsN
CiBzdGF0aWMgc3RydWN0IGZpbGVzX3N0cnVjdCBpbml0X2ZpbGVzID0gSU5J
VF9GSUxFUzsNCiBzdGF0aWMgc3RydWN0IHNpZ25hbF9zdHJ1Y3QgaW5pdF9z
aWduYWxzID0gSU5JVF9TSUdOQUxTOw0KIHN0cnVjdCBtbV9zdHJ1Y3QgaW5p
dF9tbSA9IElOSVRfTU07DQpkaWZmIC11ck4gbGludXgub3JpZy9hcmNoL3Nw
YXJjNjQva2VybmVsL2luaXRfdGFzay5jIGxpbnV4L2FyY2gvc3BhcmM2NC9r
ZXJuZWwvaW5pdF90YXNrLmMNCi0tLSBsaW51eC5vcmlnL2FyY2gvc3BhcmM2
NC9rZXJuZWwvaW5pdF90YXNrLmMJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5
DQorKysgbGludXgvYXJjaC9zcGFyYzY0L2tlcm5lbC9pbml0X3Rhc2suYwlG
cmkgTWF5IDE0IDA5OjIzOjU4IDE5OTkNCkBAIC02LDcgKzYsNiBAQA0KIA0K
IHN0YXRpYyBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgaW5pdF9tbWFwID0gSU5J
VF9NTUFQOw0KIHN0YXRpYyBzdHJ1Y3QgZnNfc3RydWN0IGluaXRfZnMgPSBJ
TklUX0ZTOw0KLXN0YXRpYyBzdHJ1Y3QgZmlsZSAqIGluaXRfZmRfYXJyYXlb
TlJfT1BFTl0gPSB7IE5VTEwsIH07DQogc3RhdGljIHN0cnVjdCBmaWxlc19z
dHJ1Y3QgaW5pdF9maWxlcyA9IElOSVRfRklMRVM7DQogc3RhdGljIHN0cnVj
dCBzaWduYWxfc3RydWN0IGluaXRfc2lnbmFscyA9IElOSVRfU0lHTkFMUzsN
CiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW0gPSBJTklUX01NOw0KZGlmZiAt
dXJOIGxpbnV4Lm9yaWcvYXJjaC9zcGFyYzY0L3NvbGFyaXMvdGltb2QuYyBs
aW51eC9hcmNoL3NwYXJjNjQvc29sYXJpcy90aW1vZC5jDQotLS0gbGludXgu
b3JpZy9hcmNoL3NwYXJjNjQvc29sYXJpcy90aW1vZC5jCUZyaSBNYXkgMTQg
MDk6MjI6MjEgMTk5OQ0KKysrIGxpbnV4L2FyY2gvc3BhcmM2NC9zb2xhcmlz
L3RpbW9kLmMJRnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtODY2LDcg
Kzg2Niw3IEBADQogDQogCVNPTEQoImVudHJ5Iik7DQogCWxvY2tfa2VybmVs
KCk7DQotCWlmKGZkID49IE5SX09QRU4pIGdvdG8gb3V0Ow0KKwlpZihmZCA+
PSBjdXJyZW50LT5maWxlcy0+bWF4X2ZkcykgZ290byBvdXQ7DQogDQogCWZp
bHAgPSBjdXJyZW50LT5maWxlcy0+ZmRbZmRdOw0KIAlpZighZmlscCkgZ290
byBvdXQ7DQpAQCAtOTMzLDcgKzkzMyw3IEBADQogDQogCVNPTEQoImVudHJ5
Iik7DQogCWxvY2tfa2VybmVsKCk7DQotCWlmKGZkID49IE5SX09QRU4pIGdv
dG8gb3V0Ow0KKwlpZihmZCA+PSBjdXJyZW50LT5maWxlcy0+bWF4X2Zkcykg
Z290byBvdXQ7DQogDQogCWZpbHAgPSBjdXJyZW50LT5maWxlcy0+ZmRbZmRd
Ow0KIAlpZighZmlscCkgZ290byBvdXQ7DQpkaWZmIC11ck4gbGludXgub3Jp
Zy9mcy9NYWtlZmlsZSBsaW51eC9mcy9NYWtlZmlsZQ0KLS0tIGxpbnV4Lm9y
aWcvZnMvTWFrZWZpbGUJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5DQorKysg
bGludXgvZnMvTWFrZWZpbGUJRnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpA
QCAtMTMsNyArMTMsNyBAQA0KIE9fT0JKUyAgICA9IG9wZW4ubyByZWFkX3dy
aXRlLm8gZGV2aWNlcy5vIGZpbGVfdGFibGUubyBidWZmZXIubyBcDQogCQlz
dXBlci5vICBibG9ja19kZXYubyBzdGF0Lm8gZXhlYy5vIHBpcGUubyBuYW1l
aS5vIGZjbnRsLm8gXA0KIAkJaW9jdGwubyByZWFkZGlyLm8gc2VsZWN0Lm8g
Zmlmby5vIGxvY2tzLm8gZmlsZXN5c3RlbXMubyBcDQotCQlkY2FjaGUubyBp
bm9kZS5vIGF0dHIubyBiYWRfaW5vZGUubyAkKEJJTkZNVFMpIA0KKwkJZGNh
Y2hlLm8gaW5vZGUubyBhdHRyLm8gYmFkX2lub2RlLm8gZmlsZS5vICQoQklO
Rk1UUykgDQogDQogTU9EX0xJU1RfTkFNRSA6PSBGU19NT0RVTEVTDQogQUxM
X1NVQl9ESVJTID0gY29kYSBtaW5peCBleHQyIGZhdCBtc2RvcyB2ZmF0IHBy
b2MgaXNvZnMgbmZzIHVtc2RvcyBudGZzIFwNCmRpZmYgLXVyTiBsaW51eC5v
cmlnL2ZzL2V4ZWMuYyBsaW51eC9mcy9leGVjLmMNCi0tLSBsaW51eC5vcmln
L2ZzL2V4ZWMuYwlGcmkgTWF5IDE0IDA5OjIyOjIxIDE5OTkNCisrKyBsaW51
eC9mcy9leGVjLmMJRnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtNDc4
LDEwICs0NzgsMTAgQEANCiAJCXVuc2lnbmVkIGxvbmcgc2V0LCBpOw0KIA0K
IAkJaSA9IGogKiBfX05GREJJVFM7DQotCQlpZiAoaSA+PSBmaWxlcy0+bWF4
X2ZkcykNCisJCWlmIChpID49IGZpbGVzLT5tYXhfZmRzIHx8IGkgPj0gZmls
ZXMtPm1heF9mZHNldCkNCiAJCQlicmVhazsNCi0JCXNldCA9IGZpbGVzLT5j
bG9zZV9vbl9leGVjLmZkc19iaXRzW2pdOw0KLQkJZmlsZXMtPmNsb3NlX29u
X2V4ZWMuZmRzX2JpdHNbal0gPSAwOw0KKwkJc2V0ID0gZmlsZXMtPmNsb3Nl
X29uX2V4ZWMtPmZkc19iaXRzW2pdOw0KKwkJZmlsZXMtPmNsb3NlX29uX2V4
ZWMtPmZkc19iaXRzW2pdID0gMDsNCiAJCWorKzsNCiAJCWZvciAoIDsgc2V0
IDsgaSsrLHNldCA+Pj0gMSkgew0KIAkJCWlmIChzZXQgJiAxKQ0KZGlmZiAt
dXJOIGxpbnV4Lm9yaWcvZnMvZmNudGwuYyBsaW51eC9mcy9mY250bC5jDQot
LS0gbGludXgub3JpZy9mcy9mY250bC5jCUZyaSBNYXkgMTQgMDk6MjI6MjEg
MTk5OQ0KKysrIGxpbnV4L2ZzL2ZjbnRsLmMJRnJpIE1heSAxNCAwOToyMzo1
OCAxOTk5DQpAQCAtMTIsMTQgKzEyLDE1IEBADQogDQogZXh0ZXJuIGludCBz
b2NrX2ZjbnRsIChzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQgY21kLCB1
bnNpZ25lZCBsb25nIGFyZyk7DQogDQotc3RhdGljIGlubGluZSBpbnQgZHVw
ZmQodW5zaWduZWQgaW50IGZkLCB1bnNpZ25lZCBpbnQgYXJnKQ0KK3N0YXRp
YyBpbmxpbmUgaW50IGR1cGZkKHVuc2lnbmVkIGludCBmZCwgdW5zaWduZWQg
aW50IHN0YXJ0KQ0KIHsNCiAJc3RydWN0IGZpbGVzX3N0cnVjdCAqIGZpbGVz
ID0gY3VycmVudC0+ZmlsZXM7DQogCXN0cnVjdCBmaWxlICogZmlsZTsNCisJ
dW5zaWduZWQgaW50IG5ld2ZkOw0KIAlpbnQgZXJyb3I7DQogDQogCWVycm9y
ID0gLUVJTlZBTDsNCi0JaWYgKGFyZyA+PSBOUl9PUEVOKQ0KKwlpZiAoc3Rh
cnQgPj0gTlJfT1BFTikNCiAJCWdvdG8gb3V0Ow0KIA0KIAllcnJvciA9IC1F
QkFERjsNCkBAIC0yNywxNSArMjgsMzkgQEANCiAJaWYgKCFmaWxlKQ0KIAkJ
Z290byBvdXQ7DQogDQorcmVwZWF0Og0KIAllcnJvciA9IC1FTUZJTEU7DQot
CWFyZyA9IGZpbmRfbmV4dF96ZXJvX2JpdCgmZmlsZXMtPm9wZW5fZmRzLCBO
Ul9PUEVOLCBhcmcpOw0KLQlpZiAoYXJnID49IGN1cnJlbnQtPnJsaW1bUkxJ
TUlUX05PRklMRV0ucmxpbV9jdXIpDQorCWlmIChzdGFydCA8IGZpbGVzLT5u
ZXh0X2ZkKQ0KKwkJc3RhcnQgPSBmaWxlcy0+bmV4dF9mZDsNCisJLyogQXQg
dGhpcyBwb2ludCwgc3RhcnQgTVVTVCBiZSA8PSBtYXhfZmRzZXQgKi8NCisj
aWYgMQ0KKwlpZiAoc3RhcnQgPiBmaWxlcy0+bWF4X2Zkc2V0KQ0KKwkJcHJp
bnRrIChLRVJOX0VSUiAiZHVwZmQ6IGZkICVkLCBtYXggJWRcbiIsIA0KKwkJ
CXN0YXJ0LCBmaWxlcy0+bWF4X2Zkc2V0KTsNCisjZW5kaWYNCisJbmV3ZmQg
PSBmaW5kX25leHRfemVyb19iaXQoZmlsZXMtPm9wZW5fZmRzLT5mZHNfYml0
cywgDQorCQkJCWZpbGVzLT5tYXhfZmRzZXQsDQorCQkJCXN0YXJ0KTsNCisJ
aWYgKG5ld2ZkID49IGN1cnJlbnQtPnJsaW1bUkxJTUlUX05PRklMRV0ucmxp
bV9jdXIpDQogCQlnb3RvIG91dF9wdXRmOw0KLQlGRF9TRVQoYXJnLCAmZmls
ZXMtPm9wZW5fZmRzKTsNCi0JRkRfQ0xSKGFyZywgJmZpbGVzLT5jbG9zZV9v
bl9leGVjKTsNCi0JZmRfaW5zdGFsbChhcmcsIGZpbGUpOw0KLQllcnJvciA9
IGFyZzsNCisNCisJZXJyb3IgPSBleHBhbmRfZmlsZXMoZmlsZXMsIG5ld2Zk
KTsNCisJaWYgKGVycm9yIDwgMCkNCisJCWdvdG8gb3V0X3B1dGY7DQorCWlm
IChlcnJvcikgLyogSWYgd2UgbWlnaHQgaGF2ZSBibG9ja2VkLCB0cnkgYWdh
aW4uICovDQorCQlnb3RvIHJlcGVhdDsNCisNCisJRkRfU0VUKG5ld2ZkLCBm
aWxlcy0+b3Blbl9mZHMpOw0KKwlGRF9DTFIobmV3ZmQsIGZpbGVzLT5jbG9z
ZV9vbl9leGVjKTsNCisJaWYgKHN0YXJ0IDw9IGZpbGVzLT5uZXh0X2ZkKQ0K
KwkJZmlsZXMtPm5leHRfZmQgPSBuZXdmZCArIDE7DQorCWZkX2luc3RhbGwo
bmV3ZmQsIGZpbGUpOw0KKwllcnJvciA9IG5ld2ZkOw0KIG91dDoNCisjaWZk
ZWYgRkRTRVRfREVCVUcJDQorCWlmIChlcnJvciA8IDApDQorCQlwcmludGsg
KEtFUk5fRVJSIF9fRlVOQ1RJT05fXyAiOiByZXR1cm4gJWRcbiIsIGVycm9y
KTsNCisjZW5kaWYNCiAJcmV0dXJuIGVycm9yOw0KIA0KIG91dF9wdXRmOg0K
QEAgLTQ4LDE4ICs3MywzMCBAQA0KIAlpbnQgZXJyID0gLUVCQURGOw0KIA0K
IAlsb2NrX2tlcm5lbCgpOw0KKyNpZmRlZiBGRFNFVF9ERUJVRwkNCisJcHJp
bnRrIChLRVJOX0VSUiBfX0ZVTkNUSU9OX18gIiAwOiBvbGRmZCA9ICVkLCBu
ZXdmZCA9ICVkXG4iLCANCisJCW9sZGZkLCBuZXdmZCk7DQorI2VuZGlmDQog
CWlmICghZmNoZWNrKG9sZGZkKSkNCiAJCWdvdG8gb3V0Ow0KKwlpZiAobmV3
ZmQgPj0gTlJfT1BFTikNCisJCWdvdG8gb3V0OwkvKiBmb2xsb3dpbmcgUE9T
SVguMSA2LjIuMSAqLw0KKw0KIAllcnIgPSBuZXdmZDsNCiAJaWYgKG5ld2Zk
ID09IG9sZGZkKQ0KIAkJZ290byBvdXQ7DQotCWVyciA9IC1FQkFERjsNCi0J
aWYgKG5ld2ZkID49IE5SX09QRU4pDQotCQlnb3RvIG91dDsJLyogZm9sbG93
aW5nIFBPU0lYLjEgNi4yLjEgKi8NCiANCisJLyogV2UgbXVzdCBiZSBhYmxl
IHRvIGRvIHRoZSBmZCBzZXR0aW5nIGluc2lkZSBkdXBmZCgpIHdpdGhvdXQN
CisgICAgICAgICAgIGJsb2NraW5nIGFmdGVyIHRoZSBzeXNfY2xvc2UoKS4g
Ki8NCisJaWYgKChlcnIgPSBleHBhbmRfZmlsZXMoY3VycmVudC0+ZmlsZXMs
IG5ld2ZkKSkgPCAwKQ0KKwkJZ290byBvdXQ7DQorCQ0KIAlzeXNfY2xvc2Uo
bmV3ZmQpOw0KIAllcnIgPSBkdXBmZChvbGRmZCwgbmV3ZmQpOw0KIG91dDoN
CisjaWZkZWYgRkRTRVRfREVCVUcJDQorCXByaW50ayAoS0VSTl9FUlIgX19G
VU5DVElPTl9fICI6IHJldHVybiAlZFxuIiwgZXJyKTsNCisjZW5kaWYNCiAJ
dW5sb2NrX2tlcm5lbCgpOw0KIAlyZXR1cm4gZXJyOw0KIH0NCkBAIC03MSw2
ICsxMDgsMTAgQEANCiAJbG9ja19rZXJuZWwoKTsNCiAJcmV0ID0gZHVwZmQo
ZmlsZGVzLCAwKTsNCiAJdW5sb2NrX2tlcm5lbCgpOw0KKyNpZmRlZiBGRFNF
VF9ERUJVRwkNCisJaWYgKHJldCA8IDApDQorCQlwcmludGsgKEtFUk5fRVJS
IF9fRlVOQ1RJT05fXyAiOiByZXR1cm4gJWRcbiIsIHJldCk7DQorI2VuZGlm
DQogCXJldHVybiByZXQ7DQogfQ0KIA0KQEAgLTExMSwxOSArMTUyLDIwIEBA
DQogCWZpbHAgPSBmZ2V0KGZkKTsNCiAJaWYgKCFmaWxwKQ0KIAkJZ290byBv
dXQ7DQorDQogCWVyciA9IDA7DQogCXN3aXRjaCAoY21kKSB7DQogCQljYXNl
IEZfRFVQRkQ6DQogCQkJZXJyID0gZHVwZmQoZmQsIGFyZyk7DQogCQkJYnJl
YWs7DQogCQljYXNlIEZfR0VURkQ6DQotCQkJZXJyID0gRkRfSVNTRVQoZmQs
ICZjdXJyZW50LT5maWxlcy0+Y2xvc2Vfb25fZXhlYyk7DQorCQkJZXJyID0g
RkRfSVNTRVQoZmQsIGN1cnJlbnQtPmZpbGVzLT5jbG9zZV9vbl9leGVjKTsN
CiAJCQlicmVhazsNCiAJCWNhc2UgRl9TRVRGRDoNCiAJCQlpZiAoYXJnJjEp
DQotCQkJCUZEX1NFVChmZCwgJmN1cnJlbnQtPmZpbGVzLT5jbG9zZV9vbl9l
eGVjKTsNCisJCQkJRkRfU0VUKGZkLCBjdXJyZW50LT5maWxlcy0+Y2xvc2Vf
b25fZXhlYyk7DQogCQkJZWxzZQ0KLQkJCQlGRF9DTFIoZmQsICZjdXJyZW50
LT5maWxlcy0+Y2xvc2Vfb25fZXhlYyk7DQorCQkJCUZEX0NMUihmZCwgY3Vy
cmVudC0+ZmlsZXMtPmNsb3NlX29uX2V4ZWMpOw0KIAkJCWJyZWFrOw0KIAkJ
Y2FzZSBGX0dFVEZMOg0KIAkJCWVyciA9IGZpbHAtPmZfZmxhZ3M7DQpAQCAt
MTUxLDcgKzE5Myw2IEBADQogCQkJZXJyID0gZmlscC0+Zl9vd25lci5waWQ7
DQogCQkJYnJlYWs7DQogCQljYXNlIEZfU0VUT1dOOg0KLQkJCWVyciA9IDA7
DQogCQkJZmlscC0+Zl9vd25lci5waWQgPSBhcmc7DQogCQkJZmlscC0+Zl9v
d25lci51aWQgPSBjdXJyZW50LT51aWQ7DQogCQkJZmlscC0+Zl9vd25lci5l
dWlkID0gY3VycmVudC0+ZXVpZDsNCkBAIC0xNzEsMTAgKzIxMiw5IEBADQog
CQkJYnJlYWs7DQogCQlkZWZhdWx0Og0KIAkJCS8qIHNvY2tldHMgbmVlZCBh
IGZldyBzcGVjaWFsIGZjbnRscy4gKi8NCisJCQllcnIgPSAtRUlOVkFMOw0K
IAkJCWlmIChTX0lTU09DSyAoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUtPmlf
bW9kZSkpDQogCQkJCWVyciA9IHNvY2tfZmNudGwgKGZpbHAsIGNtZCwgYXJn
KTsNCi0JCQllbHNlDQotCQkJCWVyciA9IC1FSU5WQUw7DQogCQkJYnJlYWs7
DQogCX0NCiAJZnB1dChmaWxwKTsNCmRpZmYgLXVyTiBsaW51eC5vcmlnL2Zz
L2ZpbGUuYyBsaW51eC9mcy9maWxlLmMNCi0tLSBsaW51eC5vcmlnL2ZzL2Zp
bGUuYwlXZWQgRGVjIDMxIDE2OjAwOjAwIDE5NjkNCisrKyBsaW51eC9mcy9m
aWxlLmMJRnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtMCwwICsxLDIy
NCBAQA0KKy8qDQorICogIGxpbnV4L2ZzL29wZW4uYw0KKyAqDQorICogIENv
cHlyaWdodCAoQykgMTk5OCwgU3RlcGhlbiBUd2VlZGllIGFuZCBCaWxsIEhh
d2VzDQorICoNCisgKiAgTWFuYWdlIHRoZSBkeW5hbWljIGZkIGFycmF5cyBp
biB0aGUgcHJvY2VzcyBmaWxlc19zdHJ1Y3QuDQorICovDQorDQorI2luY2x1
ZGUgPGxpbnV4L2ZzLmg+DQorI2luY2x1ZGUgPGxpbnV4L21tLmg+DQorI2lu
Y2x1ZGUgPGxpbnV4L3NjaGVkLmg+DQorI2luY2x1ZGUgPGxpbnV4L21hbGxv
Yy5oPg0KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+DQorDQorI2luY2x1
ZGUgPGFzbS9iaXRvcHMuaD4NCisNCisNCisvKg0KKyAqIEFsbG9jYXRlIGFu
IGZkIGFycmF5LCB1c2luZyBnZXRfZnJlZV9wYWdlKCkgaWYgcG9zc2libGUu
DQorICogTm90ZTogdGhlIGFycmF5IGlzbid0IGNsZWFyZWQgYXQgYWxsb2Nh
dGlvbiB0aW1lLg0KKyAqLw0KK3N0cnVjdCBmaWxlICoqIGFsbG9jX2ZkX2Fy
cmF5KGludCBudW0pDQorew0KKwlzdHJ1Y3QgZmlsZSAqKm5ld19mZHM7DQor
CWludCBzaXplID0gbnVtICogc2l6ZW9mKHN0cnVjdCBmaWxlICopOw0KKw0K
KwlpZiAoc2l6ZSA8IFBBR0VfU0laRSkNCisJCW5ld19mZHMgPSAoc3RydWN0
IGZpbGUgKiopIGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7DQorCWVsc2Ug
aWYgKHNpemUgPT0gUEFHRV9TSVpFKQ0KKwkJbmV3X2ZkcyA9IChzdHJ1Y3Qg
ZmlsZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOw0KKwllbHNl
DQorCQluZXdfZmRzID0gKHN0cnVjdCBmaWxlICoqKSB2bWFsbG9jKHNpemUp
Ow0KKwlyZXR1cm4gbmV3X2ZkczsNCit9DQorDQordm9pZCBmcmVlX2ZkX2Fy
cmF5KHN0cnVjdCBmaWxlICoqYXJyYXksIGludCBudW0pDQorew0KKwlpbnQg
c2l6ZSA9IG51bSAqIHNpemVvZihzdHJ1Y3QgZmlsZSAqKTsNCisNCisJaWYg
KCFhcnJheSkgew0KKwkJcHJpbnRrIChLRVJOX0VSUiBfX0ZVTkNUSU9OX18g
ImFycmF5ID0gMCAobnVtID0gJWQpXG4iLCBudW0pOw0KKwkJcmV0dXJuOw0K
Kwl9DQorDQorCWlmIChudW0gPD0gTlJfT1BFTl9ERUZBVUxUKSAvKiBEb24n
dCBmcmVlIHRoZSBlbWJlZGRlZCBmZCBhcnJheSEgKi8NCisJCXJldHVybjsN
CisJZWxzZSBpZiAoc2l6ZSA8IFBBR0VfU0laRSkNCisJCWtmcmVlKGFycmF5
KTsNCisJZWxzZSBpZiAoc2l6ZSA9PSBQQUdFX1NJWkUpDQorCQlmcmVlX3Bh
Z2UoKHVuc2lnbmVkIGxvbmcpIGFycmF5KTsNCisJZWxzZQ0KKwkJdmZyZWUo
YXJyYXkpOw0KK30NCisNCisvKg0KKyAqIEV4cGFuZCB0aGUgZmQgYXJyYXkg
aW4gdGhlIGZpbGVzX3N0cnVjdC4NCisgKi8NCisNCitpbnQgZXhwYW5kX2Zk
X2FycmF5KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzLCBpbnQgbnIpDQor
ew0KKwlzdHJ1Y3QgZmlsZSAqKm5ld19mZHM7DQorCWludCBlcnJvciwgbmZk
czsNCisNCisJDQorCWVycm9yID0gLUVNRklMRTsNCisJaWYgKGZpbGVzLT5t
YXhfZmRzID49IE5SX09QRU4gfHwgbnIgPiBOUl9PUEVOKQ0KKwkJZ290byBv
dXQ7DQorDQorCW5mZHMgPSBmaWxlcy0+bWF4X2ZkczsNCisNCisJLyogDQor
CSAqIEV4cGFuZCB0byB0aGUgbWF4IGluIGVhc3kgc3RlcHMsIGFuZCBrZWVw
IGV4cGFuZGluZyBpdCB1bnRpbA0KKwkgKiB3ZSBoYXZlIGVub3VnaCBmb3Ig
dGhlIHJlcXVlc3RlZCBmZCBhcnJheSBzaXplLiANCisJICovDQorDQorCWRv
IHsNCisjaWYgTlJfT1BFTl9ERUZBVUxUIDwgMjU2DQorCQlpZiAobmZkcyA8
IDI1NikNCisJCQluZmRzID0gMjU2Ow0KKwkJZWxzZSANCisjZW5kaWYNCisJ
CWlmIChuZmRzIDwgKFBBR0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgZmlsZSAq
KSkpDQorCQkJbmZkcyA9IFBBR0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgZmls
ZSAqKTsNCisJCWVsc2Ugew0KKwkJCW5mZHMgPSBuZmRzICogMjsNCisJCQlp
ZiAobmZkcyA+IE5SX09QRU4pDQorCQkJCW5mZHMgPSBOUl9PUEVOOw0KKwkJ
fQ0KKwl9IHdoaWxlIChuZmRzIDwgbnIpOw0KKw0KKwllcnJvciA9IC1FTk9N
RU07DQorCW5ld19mZHMgPSBhbGxvY19mZF9hcnJheShuZmRzKTsNCisJaWYg
KCFuZXdfZmRzKQ0KKwkJZ290byBvdXQ7DQorDQorCS8qIENvcHkgdGhlIGV4
aXN0aW5nIGFycmF5IGFuZCBpbnN0YWxsIHRoZSBuZXcgcG9pbnRlciAqLw0K
Kw0KKwlpZiAobmZkcyA+IGZpbGVzLT5tYXhfZmRzKSB7DQorCQlzdHJ1Y3Qg
ZmlsZSAqKm9sZF9mZHM7DQorCQlpbnQgaSA9IGZpbGVzLT5tYXhfZmRzOw0K
KwkJDQorCQlvbGRfZmRzID0gZmlsZXMtPmZkOw0KKwkJZmlsZXMtPmZkID0g
bmV3X2ZkczsNCisJCWZpbGVzLT5tYXhfZmRzID0gbmZkczsNCisJCS8qIERv
bid0IGNvcHkvY2xlYXIgdGhlIGFycmF5IGlmIHdlIGFyZSBjcmVhdGluZyBh
IG5ldw0KKwkJICAgZmQgYXJyYXkgZm9yIGZvcmsoKSAqLw0KKwkJaWYgKGkp
IHsNCisJCQltZW1jcHkobmV3X2Zkcywgb2xkX2ZkcywgaSAqIHNpemVvZihz
dHJ1Y3QgZmlsZSAqKSk7DQorCQkJLyogY2xlYXIgdGhlIHJlbWFpbmRlciBv
ZiB0aGUgYXJyYXkgKi8NCisJCQltZW1zZXQoJm5ld19mZHNbaV0sIDAsDQor
CQkJICAgICAgIChuZmRzLWkpICogc2l6ZW9mKHN0cnVjdCBmaWxlICopKTsg
DQorCQkJZnJlZV9mZF9hcnJheShvbGRfZmRzLCBpKTsNCisJCX0NCisJfSBl
bHNlIHsNCisJCS8qIFNvbWVib2R5IGV4cGFuZGVkIHRoZSBhcnJheSB3aGls
ZSB3ZSBzbGVwdCAuLi4gKi8NCisJCWZyZWVfZmRfYXJyYXkobmV3X2Zkcywg
bmZkcyk7DQorCX0NCisJZXJyb3IgPSAwOw0KK291dDoNCisJcmV0dXJuIGVy
cm9yOw0KK30NCisNCisvKg0KKyAqIEFsbG9jYXRlIGFuIGZkc2V0IGFycmF5
LCB1c2luZyBnZXRfZnJlZV9wYWdlKCkgaWYgcG9zc2libGUuDQorICogTm90
ZTogdGhlIGFycmF5IGlzbid0IGNsZWFyZWQgYXQgYWxsb2NhdGlvbiB0aW1l
Lg0KKyAqLw0KK2ZkX3NldCAqIGFsbG9jX2Zkc2V0KGludCBudW0pDQorew0K
KwlmZF9zZXQgKm5ld19mZHNldDsNCisJaW50IHNpemUgPSBudW0gLyA4Ow0K
Kw0KKwlpZiAoc2l6ZSA8IFBBR0VfU0laRSkNCisJCW5ld19mZHNldCA9IChm
ZF9zZXQgKikga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsNCisJZWxzZSBp
ZiAoc2l6ZSA9PSBQQUdFX1NJWkUpDQorCQluZXdfZmRzZXQgPSAoZmRfc2V0
ICopIF9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsNCisJZWxzZQ0KKwkJ
bmV3X2Zkc2V0ID0gKGZkX3NldCAqKSB2bWFsbG9jKHNpemUpOw0KKwlyZXR1
cm4gbmV3X2Zkc2V0Ow0KK30NCisNCit2b2lkIGZyZWVfZmRzZXQoZmRfc2V0
ICphcnJheSwgaW50IG51bSkNCit7DQorCWludCBzaXplID0gbnVtIC8gODsN
CisNCisJaWYgKCFhcnJheSkgew0KKwkJcHJpbnRrIChLRVJOX0VSUiBfX0ZV
TkNUSU9OX18gImFycmF5ID0gMCAobnVtID0gJWQpXG4iLCBudW0pOw0KKwkJ
cmV0dXJuOw0KKwl9DQorCQ0KKwlpZiAobnVtIDw9IF9fRkRfU0VUU0laRSkg
LyogRG9uJ3QgZnJlZSBhbiBlbWJlZGRlZCBmZHNldCAqLw0KKwkJcmV0dXJu
Ow0KKwllbHNlIGlmIChzaXplIDwgUEFHRV9TSVpFKQ0KKwkJa2ZyZWUoYXJy
YXkpOw0KKwllbHNlIGlmIChzaXplID09IFBBR0VfU0laRSkNCisJCWZyZWVf
cGFnZSgodW5zaWduZWQgbG9uZykgYXJyYXkpOw0KKwllbHNlDQorCQl2ZnJl
ZShhcnJheSk7DQorfQ0KKw0KKy8qDQorICogRXhwYW5kIHRoZSBmZHNldCBp
biB0aGUgZmlsZXNfc3RydWN0Lg0KKyAqLw0KK2ludCBleHBhbmRfZmRzZXQo
c3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXMsIGludCBucikNCit7DQorCWZk
X3NldCAqbmV3X29wZW5zZXQgPSAwLCAqbmV3X2V4ZWNzZXQgPSAwOw0KKwlp
bnQgZXJyb3IsIG5mZHMgPSAwOw0KKw0KKwllcnJvciA9IC1FTUZJTEU7DQor
CWlmIChmaWxlcy0+bWF4X2Zkc2V0ID49IE5SX09QRU4gfHwgbnIgPiBOUl9P
UEVOKQ0KKwkJZ290byBvdXQ7DQorDQorCW5mZHMgPSBmaWxlcy0+bWF4X2Zk
c2V0Ow0KKwkvKiBFeHBhbmQgdG8gdGhlIG1heCBpbiBlYXN5IHN0ZXBzICov
DQorCWRvIHsNCisJCWlmIChuZmRzIDwgKFBBR0VfU0laRSAqIDgpKQ0KKwkJ
CW5mZHMgPSBQQUdFX1NJWkUgKiA4Ow0KKwkJZWxzZSB7DQorCQkJbmZkcyA9
IG5mZHMgKiAyOw0KKwkJCWlmIChuZmRzID4gTlJfT1BFTikNCisJCQkJbmZk
cyA9IE5SX09QRU47DQorCQl9DQorCX0gd2hpbGUgKG5mZHMgPCBucik7DQor
DQorCWVycm9yID0gLUVOT01FTTsNCisJbmV3X29wZW5zZXQgPSBhbGxvY19m
ZHNldChuZmRzKTsNCisJbmV3X2V4ZWNzZXQgPSBhbGxvY19mZHNldChuZmRz
KTsNCisJaWYgKCFuZXdfb3BlbnNldCB8fCAhbmV3X2V4ZWNzZXQpDQorCQln
b3RvIG91dDsNCisNCisJZXJyb3IgPSAwOw0KKwkNCisJLyogQ29weSB0aGUg
ZXhpc3RpbmcgdGFibGVzIGFuZCBpbnN0YWxsIHRoZSBuZXcgcG9pbnRlcnMg
Ki8NCisJaWYgKG5mZHMgPiBmaWxlcy0+bWF4X2Zkc2V0KSB7DQorCQlpbnQg
aSA9IGZpbGVzLT5tYXhfZmRzZXQgLyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcp
ICogOCk7DQorCQlpbnQgY291bnQgPSAobmZkcyAtIGZpbGVzLT5tYXhfZmRz
ZXQpIC8gODsNCisNCisJCS8qIA0KKwkJICogRG9uJ3QgY29weSB0aGUgZW50
aXJlIGFycmF5IGlmIHRoZSBjdXJyZW50IGZkc2V0IGlzDQorCQkgKiBub3Qg
eWV0IGluaXRpYWxpc2VkLiAgDQorCQkgKi8NCisJCWlmIChpKSB7DQorCQkJ
bWVtY3B5IChuZXdfb3BlbnNldCwgZmlsZXMtPm9wZW5fZmRzLCBmaWxlcy0+
bWF4X2Zkc2V0LzgpOw0KKwkJCW1lbWNweSAobmV3X2V4ZWNzZXQsIGZpbGVz
LT5jbG9zZV9vbl9leGVjLCBmaWxlcy0+bWF4X2Zkc2V0LzgpOw0KKwkJCW1l
bXNldCAoJm5ld19vcGVuc2V0LT5mZHNfYml0c1tpXSwgMCwgY291bnQpOw0K
KwkJCW1lbXNldCAoJm5ld19leGVjc2V0LT5mZHNfYml0c1tpXSwgMCwgY291
bnQpOw0KKwkJfQ0KKw0KKwkJZnJlZV9mZHNldCAoZmlsZXMtPmNsb3NlX29u
X2V4ZWMsIGZpbGVzLT5tYXhfZmRzZXQpOw0KKwkJZnJlZV9mZHNldCAoZmls
ZXMtPm9wZW5fZmRzLCBmaWxlcy0+bWF4X2Zkc2V0KTsNCisJCWZpbGVzLT5t
YXhfZmRzZXQgPSBuZmRzOw0KKwkJZmlsZXMtPm9wZW5fZmRzID0gbmV3X29w
ZW5zZXQ7DQorCQlmaWxlcy0+Y2xvc2Vfb25fZXhlYyA9IG5ld19leGVjc2V0
Ow0KKwkJcmV0dXJuIDA7DQorCX0gDQorCS8qIFNvbWVib2R5IGV4cGFuZGVk
IHRoZSBhcnJheSB3aGlsZSB3ZSBzbGVwdCAuLi4gKi8NCisNCitvdXQ6DQor
CWlmIChuZXdfb3BlbnNldCkNCisJCWZyZWVfZmRzZXQobmV3X29wZW5zZXQs
IG5mZHMpOw0KKwlpZiAobmV3X2V4ZWNzZXQpDQorCQlmcmVlX2Zkc2V0KG5l
d19leGVjc2V0LCBuZmRzKTsNCisJcmV0dXJuIGVycm9yOw0KK30NCisNCmRp
ZmYgLXVyTiBsaW51eC5vcmlnL2ZzL2lvY3RsLmMgbGludXgvZnMvaW9jdGwu
Yw0KLS0tIGxpbnV4Lm9yaWcvZnMvaW9jdGwuYwlGcmkgTWF5IDE0IDA5OjIy
OjIxIDE5OTkNCisrKyBsaW51eC9mcy9pb2N0bC5jCUZyaSBNYXkgMTQgMDk6
MjM6NTggMTk5OQ0KQEAgLTUyLDExICs1MiwxMSBAQA0KIAllcnJvciA9IDA7
DQogCXN3aXRjaCAoY21kKSB7DQogCQljYXNlIEZJT0NMRVg6DQotCQkJRkRf
U0VUKGZkLCAmY3VycmVudC0+ZmlsZXMtPmNsb3NlX29uX2V4ZWMpOw0KKwkJ
CUZEX1NFVChmZCwgY3VycmVudC0+ZmlsZXMtPmNsb3NlX29uX2V4ZWMpOw0K
IAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBGSU9OQ0xFWDoNCi0JCQlGRF9DTFIo
ZmQsICZjdXJyZW50LT5maWxlcy0+Y2xvc2Vfb25fZXhlYyk7DQorCQkJRkRf
Q0xSKGZkLCBjdXJyZW50LT5maWxlcy0+Y2xvc2Vfb25fZXhlYyk7DQogCQkJ
YnJlYWs7DQogDQogCQljYXNlIEZJT05CSU86DQpkaWZmIC11ck4gbGludXgu
b3JpZy9mcy9vcGVuLmMgbGludXgvZnMvb3Blbi5jDQotLS0gbGludXgub3Jp
Zy9mcy9vcGVuLmMJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5DQorKysgbGlu
dXgvZnMvb3Blbi5jCUZyaSBNYXkgMTQgMDk6MjM6NTggMTk5OQ0KQEAgLTY5
MSw5ICs2OTEsMTMgQEANCiB7DQogCXN0cnVjdCBmaWxlc19zdHJ1Y3QgKiBm
aWxlcyA9IGN1cnJlbnQtPmZpbGVzOw0KIAlpbnQgZmQsIGVycm9yOw0KLQ0K
KwkNCityZXBlYXQ6DQogCWVycm9yID0gLUVNRklMRTsNCi0JZmQgPSBmaW5k
X2ZpcnN0X3plcm9fYml0KCZmaWxlcy0+b3Blbl9mZHMsIE5SX09QRU4pOw0K
Kw0KKwlmZCA9IGZpbmRfbmV4dF96ZXJvX2JpdChmaWxlcy0+b3Blbl9mZHMs
IA0KKwkJCQljdXJyZW50LT5maWxlcy0+bWF4X2Zkc2V0LCANCisJCQkJZmls
ZXMtPm5leHRfZmQpOw0KIAkvKg0KIAkgKiBOLkIuIEZvciBjbG9uZSB0YXNr
cyBzaGFyaW5nIGEgZmlsZXMgc3RydWN0dXJlLCB0aGlzIHRlc3QNCiAJICog
d2lsbCBsaW1pdCB0aGUgdG90YWwgbnVtYmVyIG9mIGZpbGVzIHRoYXQgY2Fu
IGJlIG9wZW5lZC4NCkBAIC03MDEsMTAgKzcwNSwyNyBAQA0KIAlpZiAoZmQg
Pj0gY3VycmVudC0+cmxpbVtSTElNSVRfTk9GSUxFXS5ybGltX2N1cikNCiAJ
CWdvdG8gb3V0Ow0KIA0KLQkvKiBDaGVjayBoZXJlIGZvciBmZCA+IGZpbGVz
LT5tYXhfZmRzIHRvIGRvIGR5bmFtaWMgZXhwYW5zaW9uICovDQorCS8qIERv
IHdlIG5lZWQgdG8gZXhwYW5kIHRoZSBmZHNldCBhcnJheT8gKi8NCisJaWYg
KGZkID49IGN1cnJlbnQtPmZpbGVzLT5tYXhfZmRzZXQpIHsNCisJCWVycm9y
ID0gZXhwYW5kX2Zkc2V0KGZpbGVzLCAwKTsNCisJCWlmICghZXJyb3IpDQor
CQkJZ290byByZXBlYXQ7DQorCQlnb3RvIG91dDsNCisJfQ0KKwkNCisJLyog
DQorCSAqIENoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byBleHBhbmQgdGhlIGZk
IGFycmF5Lg0KKwkgKi8NCisJaWYgKGZkID49IGZpbGVzLT5tYXhfZmRzKSB7
DQorCQllcnJvciA9IGV4cGFuZF9mZF9hcnJheShmaWxlcywgMCk7DQorCQlp
ZiAoIWVycm9yKQ0KKwkJCWdvdG8gcmVwZWF0Ow0KKwkJZ290byBvdXQ7DQor
CX0NCiANCi0JRkRfU0VUKGZkLCAmZmlsZXMtPm9wZW5fZmRzKTsNCi0JRkRf
Q0xSKGZkLCAmZmlsZXMtPmNsb3NlX29uX2V4ZWMpOw0KKwlGRF9TRVQoZmQs
IGZpbGVzLT5vcGVuX2Zkcyk7DQorCUZEX0NMUihmZCwgZmlsZXMtPmNsb3Nl
X29uX2V4ZWMpOw0KKwlmaWxlcy0+bmV4dF9mZCA9IGZkICsgMTsNCiAjaWYg
MQ0KIAkvKiBTYW5pdHkgY2hlY2sgKi8NCiAJaWYgKGZpbGVzLT5mZFtmZF0g
IT0gTlVMTCkgew0KQEAgLTcxNSwxMiArNzM2LDE4IEBADQogCWVycm9yID0g
ZmQ7DQogDQogb3V0Og0KKyNpZmRlZiBGRFNFVF9ERUJVRwkNCisJaWYgKGVy
cm9yIDwgMCkNCisJCXByaW50ayAoS0VSTl9FUlIgX19GVU5DVElPTl9fICI6
IHJldHVybiAlZFxuIiwgZXJyb3IpOw0KKyNlbmRpZg0KIAlyZXR1cm4gZXJy
b3I7DQogfQ0KIA0KIGlubGluZSB2b2lkIHB1dF91bnVzZWRfZmQodW5zaWdu
ZWQgaW50IGZkKQ0KIHsNCi0JRkRfQ0xSKGZkLCAmY3VycmVudC0+ZmlsZXMt
Pm9wZW5fZmRzKTsNCisJRkRfQ0xSKGZkLCBjdXJyZW50LT5maWxlcy0+b3Bl
bl9mZHMpOw0KKwlpZiAoZmQgPCBjdXJyZW50LT5maWxlcy0+bmV4dF9mZCkN
CisJCWN1cnJlbnQtPmZpbGVzLT5uZXh0X2ZkID0gZmQ7DQogfQ0KIA0KIGFz
bWxpbmthZ2UgaW50IHN5c19vcGVuKGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwg
aW50IGZsYWdzLCBpbnQgbW9kZSkNCkBAIC04MjAsNyArODQ3LDcgQEANCiAJ
CXN0cnVjdCBmaWxlc19zdHJ1Y3QgKiBmaWxlcyA9IGN1cnJlbnQtPmZpbGVz
Ow0KIAkJZmlsZXMtPmZkW2ZkXSA9IE5VTEw7DQogCQlwdXRfdW51c2VkX2Zk
KGZkKTsNCi0JCUZEX0NMUihmZCwgJmZpbGVzLT5jbG9zZV9vbl9leGVjKTsN
CisJCUZEX0NMUihmZCwgZmlsZXMtPmNsb3NlX29uX2V4ZWMpOw0KIAkJZXJy
b3IgPSBmaWxwX2Nsb3NlKGZpbHAsIGZpbGVzKTsNCiAJfQ0KIAl1bmxvY2tf
a2VybmVsKCk7DQpkaWZmIC11ck4gbGludXgub3JpZy9mcy9wcm9jL2FycmF5
LmMgbGludXgvZnMvcHJvYy9hcnJheS5jDQotLS0gbGludXgub3JpZy9mcy9w
cm9jL2FycmF5LmMJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5DQorKysgbGlu
dXgvZnMvcHJvYy9hcnJheS5jCUZyaSBNYXkgMTQgMDk6MjM6NTggMTk5OQ0K
QEAgLTcyNSwxMSArNzI1LDEzIEBADQogCQkiUFBpZDpcdCVkXG4iDQogCQki
VWlkOlx0JWRcdCVkXHQlZFx0JWRcbiINCiAJCSJHaWQ6XHQlZFx0JWRcdCVk
XHQlZFxuIg0KKwkJIkZEU2l6ZTpcdCVkXG4iDQogCQkiR3JvdXBzOlx0IiwN
CiAJCWdldF90YXNrX3N0YXRlKHApLA0KIAkJcC0+cGlkLCBwLT5wX3BwdHIt
PnBpZCwNCiAJCXAtPnVpZCwgcC0+ZXVpZCwgcC0+c3VpZCwgcC0+ZnN1aWQs
DQotCQlwLT5naWQsIHAtPmVnaWQsIHAtPnNnaWQsIHAtPmZzZ2lkKTsNCisJ
CXAtPmdpZCwgcC0+ZWdpZCwgcC0+c2dpZCwgcC0+ZnNnaWQsDQorCQlwLT5m
aWxlcyA/IHAtPmZpbGVzLT5tYXhfZmRzIDogMCk7DQogDQogCWZvciAoZyA9
IDA7IGcgPCBwLT5uZ3JvdXBzOyBnKyspDQogCQlidWZmZXIgKz0gc3ByaW50
ZihidWZmZXIsICIlZCAiLCBwLT5ncm91cHNbZ10pOw0KZGlmZiAtdXJOIGxp
bnV4Lm9yaWcvZnMvc2VsZWN0LmMgbGludXgvZnMvc2VsZWN0LmMNCi0tLSBs
aW51eC5vcmlnL2ZzL3NlbGVjdC5jCUZyaSBNYXkgMTQgMDk6MjI6MjEgMTk5
OQ0KKysrIGxpbnV4L2ZzL3NlbGVjdC5jCUZyaSBNYXkgMTQgMDk6MjM6NTgg
MTk5OQ0KQEAgLTEwNyw3ICsxMDcsNyBAQA0KIAkvKiBoYW5kbGUgbGFzdCBp
bi1jb21wbGV0ZSBsb25nLXdvcmQgZmlyc3QgKi8NCiAJc2V0ID0gfih+MFVM
IDw8IChuICYgKF9fTkZEQklUUy0xKSkpOw0KIAluIC89IF9fTkZEQklUUzsN
Ci0Jb3Blbl9mZHMgPSBjdXJyZW50LT5maWxlcy0+b3Blbl9mZHMuZmRzX2Jp
dHMrbjsNCisJb3Blbl9mZHMgPSBjdXJyZW50LT5maWxlcy0+b3Blbl9mZHMt
PmZkc19iaXRzK247DQogCW1heCA9IDA7DQogCWlmIChzZXQpIHsNCiAJCXNl
dCAmPSBCSVRTKGZkcywgbik7DQpAQCAtMzc5LDcgKzM3OSw3IEBADQogCWxv
Y2tfa2VybmVsKCk7DQogCS8qIERvIGEgc2FuaXR5IGNoZWNrIG9uIG5mZHMg
Li4uICovDQogCWVyciA9IC1FSU5WQUw7DQotCWlmIChuZmRzID4gTlJfT1BF
TikNCisJaWYgKG5mZHMgPiBjdXJyZW50LT5maWxlcy0+bWF4X2ZkcykNCiAJ
CWdvdG8gb3V0Ow0KIA0KIAlpZiAodGltZW91dCkgew0KZGlmZiAtdXJOIGxp
bnV4Lm9yaWcvaW5jbHVkZS9hc20tYWxwaGEvcmVzb3VyY2UuaCBsaW51eC9p
bmNsdWRlL2FzbS1hbHBoYS9yZXNvdXJjZS5oDQotLS0gbGludXgub3JpZy9p
bmNsdWRlL2FzbS1hbHBoYS9yZXNvdXJjZS5oCUZyaSBNYXkgMTQgMDk6MjI6
MjEgMTk5OQ0KKysrIGxpbnV4L2luY2x1ZGUvYXNtLWFscGhhL3Jlc291cmNl
LmgJRnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtMjgsNyArMjgsNyBA
QA0KICAgICB7X1NUS19MSU0sIF9TVEtfTElNfSwJCQkvKiBSTElNSVRfU1RB
Q0sgKi8JXA0KICAgICB7ICAgICAgIDAsIExPTkdfTUFYfSwJCQkvKiBSTElN
SVRfQ09SRSAqLwlcDQogICAgIHtMT05HX01BWCwgTE9OR19NQVh9LAkJCS8q
IFJMSU1JVF9SU1MgKi8JXA0KLSAgICB7IE5SX09QRU4sICBOUl9PUEVOfSwJ
CQkvKiBSTElNSVRfTk9GSUxFICovCVwNCisgICAge0lOUl9PUEVOLCBJTlJf
T1BFTn0sCQkJLyogUkxJTUlUX05PRklMRSAqLwlcDQogICAgIHtMT05HX01B
WCwgTE9OR19NQVh9LAkJCS8qIFJMSU1JVF9BUyAqLwkJXA0KICAgICB7TUFY
X1RBU0tTX1BFUl9VU0VSLCBNQVhfVEFTS1NfUEVSX1VTRVJ9LAkvKiBSTElN
SVRfTlBST0MgKi8JXA0KICAgICB7TE9OR19NQVgsIExPTkdfTUFYfSwJCQkv
KiBSTElNSVRfTUVNTE9DSyAqLwlcDQpkaWZmIC11ck4gbGludXgub3JpZy9p
bmNsdWRlL2FzbS1hcm0vcmVzb3VyY2UuaCBsaW51eC9pbmNsdWRlL2FzbS1h
cm0vcmVzb3VyY2UuaA0KLS0tIGxpbnV4Lm9yaWcvaW5jbHVkZS9hc20tYXJt
L3Jlc291cmNlLmgJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5DQorKysgbGlu
dXgvaW5jbHVkZS9hc20tYXJtL3Jlc291cmNlLmgJRnJpIE1heSAxNCAwOToy
Mzo1OCAxOTk5DQpAQCAtMjksNyArMjksNyBAQA0KIAl7ICAgICAgICAwLCBM
T05HX01BWCB9LAkJCQlcDQogCXsgTE9OR19NQVgsIExPTkdfTUFYIH0sCQkJ
CVwNCiAJeyBNQVhfVEFTS1NfUEVSX1VTRVIsIE1BWF9UQVNLU19QRVJfVVNF
UiB9LAlcDQotCXsgTlJfT1BFTiwgTlJfT1BFTiB9LAkJCQlcDQorCXsgSU5S
X09QRU4sIElOUl9PUEVOIH0sCQkJCVwNCiAJeyBMT05HX01BWCwgTE9OR19N
QVggfSwJCQkJXA0KIAl7IExPTkdfTUFYLCBMT05HX01BWCB9LAkJCQlcDQog
fQ0KZGlmZiAtdXJOIGxpbnV4Lm9yaWcvaW5jbHVkZS9hc20taTM4Ni9yZXNv
dXJjZS5oIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcmVzb3VyY2UuaA0KLS0t
IGxpbnV4Lm9yaWcvaW5jbHVkZS9hc20taTM4Ni9yZXNvdXJjZS5oCUZyaSBN
YXkgMTQgMDk6MjI6MjEgMTk5OQ0KKysrIGxpbnV4L2luY2x1ZGUvYXNtLWkz
ODYvcmVzb3VyY2UuaAlGcmkgTWF5IDE0IDA5OjIzOjU4IDE5OTkNCkBAIC0y
OSw3ICsyOSw3IEBADQogCXsgICAgICAgIDAsIExPTkdfTUFYIH0sCQkJCVwN
CiAJeyBMT05HX01BWCwgTE9OR19NQVggfSwJCQkJXA0KIAl7IE1BWF9UQVNL
U19QRVJfVVNFUiwgTUFYX1RBU0tTX1BFUl9VU0VSIH0sCVwNCi0JeyBOUl9P
UEVOLCBOUl9PUEVOIH0sCQkJCVwNCisJeyBJTlJfT1BFTiwgSU5SX09QRU4g
fSwJCQkJXA0KIAl7IExPTkdfTUFYLCBMT05HX01BWCB9LAkJCQlcDQogCXsg
TE9OR19NQVgsIExPTkdfTUFYIH0sCQkJCVwNCiB9DQpkaWZmIC11ck4gbGlu
dXgub3JpZy9pbmNsdWRlL2FzbS1tNjhrL3Jlc291cmNlLmggbGludXgvaW5j
bHVkZS9hc20tbTY4ay9yZXNvdXJjZS5oDQotLS0gbGludXgub3JpZy9pbmNs
dWRlL2FzbS1tNjhrL3Jlc291cmNlLmgJRnJpIE1heSAxNCAwOToyMjoyMSAx
OTk5DQorKysgbGludXgvaW5jbHVkZS9hc20tbTY4ay9yZXNvdXJjZS5oCUZy
aSBNYXkgMTQgMDk6MjM6NTggMTk5OQ0KQEAgLTI5LDcgKzI5LDcgQEANCiAg
IHsgICAgICAgMCwgTE9OR19NQVh9LCBcDQogICB7TE9OR19NQVgsIExPTkdf
TUFYfSwgXA0KICAge01BWF9UQVNLU19QRVJfVVNFUiwgTUFYX1RBU0tTX1BF
Ul9VU0VSfSwgXA0KLSAge05SX09QRU4sIE5SX09QRU59LCAgIFwNCisgIHtJ
TlJfT1BFTiwgSU5SX09QRU59LCBcDQogICB7TE9OR19NQVgsIExPTkdfTUFY
fSwgXA0KICAge0xPTkdfTUFYLCBMT05HX01BWH0gIFwNCiB9DQpkaWZmIC11
ck4gbGludXgub3JpZy9pbmNsdWRlL2FzbS1taXBzL3Jlc291cmNlLmggbGlu
dXgvaW5jbHVkZS9hc20tbWlwcy9yZXNvdXJjZS5oDQotLS0gbGludXgub3Jp
Zy9pbmNsdWRlL2FzbS1taXBzL3Jlc291cmNlLmgJRnJpIE1heSAxNCAwOToy
MjoyMSAxOTk5DQorKysgbGludXgvaW5jbHVkZS9hc20tbWlwcy9yZXNvdXJj
ZS5oCUZyaSBNYXkgMTQgMDk6MjM6NTggMTk5OQ0KQEAgLTM1LDcgKzM1LDcg
QEANCiAJe0xPTkdfTUFYLCBMT05HX01BWH0sCQkJCVwNCiAJe19TVEtfTElN
LCBfU1RLX0xJTX0sCQkJCVwNCiAJeyAgICAgICAwLCBMT05HX01BWH0sCQkJ
CVwNCi0Je05SX09QRU4sIE5SX09QRU59LAkJCQlcDQorCXtJTlJfT1BFTiwg
SU5SX09QRU59LAkJCQlcDQogCXtMT05HX01BWCwgTE9OR19NQVh9LAkJCQlc
DQogCXtMT05HX01BWCwgTE9OR19NQVh9LAkJCQlcDQogCXtNQVhfVEFTS1Nf
UEVSX1VTRVIsIE1BWF9UQVNLU19QRVJfVVNFUn0sCVwNCmRpZmYgLXVyTiBs
aW51eC5vcmlnL2luY2x1ZGUvYXNtLXBwYy9yZXNvdXJjZS5oIGxpbnV4L2lu
Y2x1ZGUvYXNtLXBwYy9yZXNvdXJjZS5oDQotLS0gbGludXgub3JpZy9pbmNs
dWRlL2FzbS1wcGMvcmVzb3VyY2UuaAlGcmkgTWF5IDE0IDA5OjIyOjIxIDE5
OTkNCisrKyBsaW51eC9pbmNsdWRlL2FzbS1wcGMvcmVzb3VyY2UuaAlGcmkg
TWF5IDE0IDA5OjIzOjU4IDE5OTkNCkBAIC0yNSw3ICsyNSw3IEBADQogICAg
IHsgICAgICAgMCwgTE9OR19NQVh9LAkJCS8qIFJMSU1JVF9DT1JFICovCVwN
CiAgICAge0xPTkdfTUFYLCBMT05HX01BWH0sCQkJLyogUkxJTUlUX1JTUyAq
LwlcDQogICAgIHtNQVhfVEFTS1NfUEVSX1VTRVIsIE1BWF9UQVNLU19QRVJf
VVNFUn0sCS8qIFJMSU1JVF9OUFJPQyAqLwlcDQotICAgIHsgTlJfT1BFTiwg
IE5SX09QRU59LAkJCS8qIFJMSU1JVF9OT0ZJTEUgKi8JXA0KKyAgICB7SU5S
X09QRU4sIElOUl9PUEVOfSwJCQkvKiBSTElNSVRfTk9GSUxFICovCVwNCiAg
ICAge0xPTkdfTUFYLCBMT05HX01BWH0sCQkJLyogUkxJTUlUX01FTUxPQ0sg
Ki8JXA0KICAgICB7TE9OR19NQVgsIExPTkdfTUFYfSwJCQkvKiBSTElNSVRf
QVMgKi8JCVwNCiB9DQpkaWZmIC11ck4gbGludXgub3JpZy9pbmNsdWRlL2Fz
bS1zcGFyYy9yZXNvdXJjZS5oIGxpbnV4L2luY2x1ZGUvYXNtLXNwYXJjL3Jl
c291cmNlLmgNCi0tLSBsaW51eC5vcmlnL2luY2x1ZGUvYXNtLXNwYXJjL3Jl
c291cmNlLmgJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5DQorKysgbGludXgv
aW5jbHVkZS9hc20tc3BhcmMvcmVzb3VyY2UuaAlGcmkgTWF5IDE0IDA5OjIz
OjU4IDE5OTkNCkBAIC0zMSw3ICszMSw3IEBADQogICAgIHtMT05HX01BWCwg
TE9OR19NQVh9LCB7TE9OR19NQVgsIExPTkdfTUFYfSwJCQkJXA0KICAgICB7
TE9OR19NQVgsIExPTkdfTUFYfSwge19TVEtfTElNLCBMT05HX01BWH0sCQkJ
CVwNCiAgICAgeyAgICAgICAwLCBMT05HX01BWH0sIHtMT05HX01BWCwgTE9O
R19NQVh9LAkJCQlcDQotICAgIHtOUl9PUEVOLCBOUl9PUEVOfSwge01BWF9U
QVNLU19QRVJfVVNFUiwgTUFYX1RBU0tTX1BFUl9VU0VSfSwJXA0KKyAgICB7
SU5SX09QRU4sIElOUl9PUEVOfSwge01BWF9UQVNLU19QRVJfVVNFUiwgTUFY
X1RBU0tTX1BFUl9VU0VSfSwJXA0KICAgICB7TE9OR19NQVgsIExPTkdfTUFY
fSwge0xPTkdfTUFYLCBMT05HX01BWH0gICAgICAgICAgICAgICAgICAgICAg
ICAgIFwNCiB9DQogDQpkaWZmIC11ck4gbGludXgub3JpZy9pbmNsdWRlL2Fz
bS1zcGFyYzY0L3Jlc291cmNlLmggbGludXgvaW5jbHVkZS9hc20tc3BhcmM2
NC9yZXNvdXJjZS5oDQotLS0gbGludXgub3JpZy9pbmNsdWRlL2FzbS1zcGFy
YzY0L3Jlc291cmNlLmgJRnJpIE1heSAxNCAwOToyMjoyMSAxOTk5DQorKysg
bGludXgvaW5jbHVkZS9hc20tc3BhcmM2NC9yZXNvdXJjZS5oCUZyaSBNYXkg
MTQgMDk6MjM6NTggMTk5OQ0KQEAgLTMwLDcgKzMwLDcgQEANCiAgICAge0xP
TkdfTUFYLCBMT05HX01BWH0sIHtMT05HX01BWCwgTE9OR19NQVh9LAkJCQlc
DQogICAgIHtMT05HX01BWCwgTE9OR19NQVh9LCB7X1NUS19MSU0sIExPTkdf
TUFYfSwJCQkJXA0KICAgICB7ICAgICAgIDAsIExPTkdfTUFYfSwge0xPTkdf
TUFYLCBMT05HX01BWH0sCQkJCVwNCi0gICAge05SX09QRU4sIE5SX09QRU59
LCB7TUFYX1RBU0tTX1BFUl9VU0VSLCBNQVhfVEFTS1NfUEVSX1VTRVJ9LAlc
DQorICAgIHtJTlJfT1BFTiwgSU5SX09QRU59LCB7TUFYX1RBU0tTX1BFUl9V
U0VSLCBNQVhfVEFTS1NfUEVSX1VTRVJ9LAlcDQogICAgIHtMT05HX01BWCwg
TE9OR19NQVh9LCB7TE9OR19NQVgsIExPTkdfTUFYfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KIH0NCiANCmRpZmYgLXVyTiBsaW51eC5vcmlnL2lu
Y2x1ZGUvbGludXgvZnMuaCBsaW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgNCi0t
LSBsaW51eC5vcmlnL2luY2x1ZGUvbGludXgvZnMuaAlGcmkgTWF5IDE0IDA5
OjIyOjIxIDE5OTkNCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgJRnJp
IE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtMjcsMTcgKzI3LDE5IEBADQog
DQogDQogLyoNCi0gKiBJdCdzIHNpbGx5IHRvIGhhdmUgTlJfT1BFTiBiaWdn
ZXIgdGhhbiBOUl9GSUxFLCBidXQgSSdsbCBmaXgNCi0gKiB0aGF0IGxhdGVy
LiBBbnl3YXksIG5vdyB0aGUgZmlsZSBjb2RlIGlzIG5vIGxvbmdlciBkZXBl
bmRlbnQNCi0gKiBvbiBiaXRtYXBzIGluIHVuc2lnbmVkIGxvbmdzLCBidXQg
dXNlcyB0aGUgbmV3IGZkX3NldCBzdHJ1Y3R1cmUuLg0KKyAqIEl0J3Mgc2ls
bHkgdG8gaGF2ZSBOUl9PUEVOIGJpZ2dlciB0aGFuIE5SX0ZJTEUsIGJ1dCB5
b3UgY2FuIGNoYW5nZQ0KKyAqIHRoZSBmaWxlIGxpbWl0IGF0IHJ1bnRpbWUg
YW5kIG9ubHkgcm9vdCBjYW4gaW5jcmVhc2UgdGhlIHBlci1wcm9jZXNzDQor
ICogbnJfZmlsZSBybGltaXQsIHNvIGl0J3Mgc2FmZSB0byBzZXQgdXAgYSBy
aWRpY3Vsb3VzbHkgaGlnaCBhYnNvbHV0ZQ0KKyAqIHVwcGVyIGxpbWl0IG9u
IGZpbGVzLXBlci1wcm9jZXNzLg0KICAqDQogICogU29tZSBwcm9ncmFtcyAo
bm90YWJseSB0aG9zZSB1c2luZyBzZWxlY3QoKSkgbWF5IGhhdmUgdG8gYmUg
DQotICogcmVjb21waWxlZCB0byB0YWtlIGZ1bGwgYWR2YW50YWdlIG9mIHRo
ZSBuZXcgbGltaXRzLi4NCisgKiByZWNvbXBpbGVkIHRvIHRha2UgZnVsbCBh
ZHZhbnRhZ2Ugb2YgdGhlIG5ldyBsaW1pdHMuLiAgDQogICovDQogDQogLyog
Rml4ZWQgY29uc3RhbnRzIGZpcnN0OiAqLw0KICN1bmRlZiBOUl9PUEVODQot
I2RlZmluZSBOUl9PUEVOIDEwMjQNCisjZGVmaW5lIE5SX09QRU4gKDEwMjQq
MTAyNCkJLyogQWJzb2x1dGUgdXBwZXIgbGltaXQgb24gZmQgbnVtICovDQor
I2RlZmluZSBJTlJfT1BFTiAxMDI0CQkvKiBJbml0aWFsIHNldHRpbmcgZm9y
IG5maWxlIHJsaW1pdHMgKi8NCiANCiAjZGVmaW5lIEJMT0NLX1NJWkVfQklU
UyAxMA0KICNkZWZpbmUgQkxPQ0tfU0laRSAoMTw8QkxPQ0tfU0laRV9CSVRT
KQ0KQEAgLTcwMiw3ICs3MDQsMTEgQEANCiAjZGVmaW5lIF9fZ2V0bmFtZSgp
CSgoY2hhciAqKSBfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCkpDQogI2Rl
ZmluZSBwdXRuYW1lKG5hbWUpCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyko
bmFtZSkpDQogDQorI2lmIDENCiBleHRlcm4gdm9pZCBraWxsX2Zhc3luYyhz
dHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmEsIGludCBzaWcpOw0KKyNlbHNlDQor
ZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMoc3RydWN0IGZhc3luY19zdHJ1Y3Qg
KmZhLCBpbnQgc2lnLCBpbnQgYmFuZCk7DQorI2VuZGlmDQogZXh0ZXJuIGlu
dCByZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICos
IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7DQogZXh0ZXJuIGludCB1bnJl
Z2lzdGVyX2Jsa2Rldih1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0IGNoYXIg
KiBuYW1lKTsNCiBleHRlcm4gaW50IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9k
ZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHApOw0KZGlmZiAtdXJOIGxp
bnV4Lm9yaWcvaW5jbHVkZS9saW51eC9saW1pdHMuaCBsaW51eC9pbmNsdWRl
L2xpbnV4L2xpbWl0cy5oDQotLS0gbGludXgub3JpZy9pbmNsdWRlL2xpbnV4
L2xpbWl0cy5oCUZyaSBNYXkgMTQgMDk6MjI6MjEgMTk5OQ0KKysrIGxpbnV4
L2luY2x1ZGUvbGludXgvbGltaXRzLmgJRnJpIE1heSAxNCAwOToyMzo1OCAx
OTk5DQpAQCAtMSw3ICsxLDcgQEANCiAjaWZuZGVmIF9MSU5VWF9MSU1JVFNf
SA0KICNkZWZpbmUgX0xJTlVYX0xJTUlUU19IDQogDQotI2RlZmluZSBOUl9P
UEVOCQkxMDI0DQorI2RlZmluZSBOUl9PUEVOCSAgICAgICAgMTAyNA0KIA0K
ICNkZWZpbmUgTkdST1VQU19NQVggICAgICAgMzIJLyogc3VwcGxlbWVudGFs
IGdyb3VwIElEcyBhcmUgYXZhaWxhYmxlICovDQogI2RlZmluZSBBUkdfTUFY
ICAgICAgIDEzMTA3MgkvKiAjIGJ5dGVzIG9mIGFyZ3MgKyBlbnZpcm9uIGZv
ciBleGVjKCkgKi8NCmRpZmYgLXVyTiBsaW51eC5vcmlnL2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCBsaW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgNCi0tLSBs
aW51eC5vcmlnL2luY2x1ZGUvbGludXgvc2NoZWQuaAlGcmkgTWF5IDE0IDA5
OjIyOjIxIDE5OTkNCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJ
RnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtMTI0LDIyICsxMjQsMzgg
QEANCiBhc21saW5rYWdlIHZvaWQgc2NoZWR1bGUodm9pZCk7DQogDQogLyoN
CisgKiBUaGUgZGVmYXVsdCBmZCBhcnJheSBuZWVkcyB0byBiZSBhdCBsZWFz
dCBCSVRTX1BFUl9MT05HLA0KKyAqIGFzIHRoaXMgaXMgdGhlIGdyYW51bGFy
aXR5IHJldHVybmVkIGJ5IGNvcHlfZmRzZXQoKS4NCisgKi8NCisjZGVmaW5l
IE5SX09QRU5fREVGQVVMVCBCSVRTX1BFUl9MT05HDQorDQorLyoNCiAgKiBP
cGVuIGZpbGUgdGFibGUgc3RydWN0dXJlDQogICovDQogc3RydWN0IGZpbGVz
X3N0cnVjdCB7DQogCWF0b21pY190IGNvdW50Ow0KIAlpbnQgbWF4X2ZkczsN
CisJaW50IG1heF9mZHNldDsNCisJaW50IG5leHRfZmQ7DQogCXN0cnVjdCBm
aWxlICoqIGZkOwkvKiBjdXJyZW50IGZkIGFycmF5ICovDQotCWZkX3NldCBj
bG9zZV9vbl9leGVjOw0KLQlmZF9zZXQgb3Blbl9mZHM7DQorCWZkX3NldCAq
Y2xvc2Vfb25fZXhlYzsNCisJZmRfc2V0ICpvcGVuX2ZkczsNCisJZmRfc2V0
IGNsb3NlX29uX2V4ZWNfaW5pdDsNCisJZmRfc2V0IG9wZW5fZmRzX2luaXQ7
DQorCXN0cnVjdCBmaWxlICogZmRfYXJyYXlbTlJfT1BFTl9ERUZBVUxUXTsN
CiB9Ow0KIA0KICNkZWZpbmUgSU5JVF9GSUxFUyB7IFwNCiAJQVRPTUlDX0lO
SVQoMSksIFwNCi0JTlJfT1BFTiwgXA0KLQkmaW5pdF9mZF9hcnJheVswXSwg
XA0KKwlOUl9PUEVOX0RFRkFVTFQsIFwNCisJX19GRF9TRVRTSVpFLCBcDQor
CTAsIFwNCisJJmluaXRfZmlsZXMuZmRfYXJyYXlbMF0sIFwNCisJJmluaXRf
ZmlsZXMuY2xvc2Vfb25fZXhlY19pbml0LCBcDQorCSZpbml0X2ZpbGVzLm9w
ZW5fZmRzX2luaXQsIFwNCiAJeyB7IDAsIH0gfSwgXA0KLQl7IHsgMCwgfSB9
IFwNCisJeyB7IDAsIH0gfSwgXA0KKwl7IE5VTEwsIH0gXA0KIH0NCiANCiBz
dHJ1Y3QgZnNfc3RydWN0IHsNCkBAIC02MTcsNiArNjMzLDQ1IEBADQogZXh0
ZXJuIHZvaWQgbW1wdXQoc3RydWN0IG1tX3N0cnVjdCAqKTsNCiAvKiBSZW1v
dmUgdGhlIGN1cnJlbnQgdGFza3Mgc3RhbGUgcmVmZXJlbmNlcyB0byB0aGUg
b2xkIG1tX3N0cnVjdCAqLw0KIGV4dGVybiB2b2lkIG1tX3JlbGVhc2Uodm9p
ZCk7DQorDQorLyoNCisgKiBSb3V0aW5lcyBmb3IgaGFuZGxpbmcgdGhlIGZk
IGFycmF5cw0KKyAqLw0KK2V4dGVybiBzdHJ1Y3QgZmlsZSAqKiBhbGxvY19m
ZF9hcnJheShpbnQpOw0KK2V4dGVybiBpbnQgZXhwYW5kX2ZkX2FycmF5KHN0
cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsNCitleHRlcm4gdm9pZCBm
cmVlX2ZkX2FycmF5KHN0cnVjdCBmaWxlICoqLCBpbnQpOw0KKw0KK2V4dGVy
biBmZF9zZXQgKmFsbG9jX2Zkc2V0KGludCk7DQorZXh0ZXJuIGludCBleHBh
bmRfZmRzZXQoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOw0KK2V4
dGVybiB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICosIGludCk7DQorDQorLyog
RXhwYW5kIGZpbGVzLiAgUmV0dXJuIDwwIG9uIGVycm9yOyAwIG5vdGhpbmcg
ZG9uZTsgMSBmaWxlcyBleHBhbmRlZCwNCisgKiB3ZSBtYXkgaGF2ZSBibG9j
a2VkLiAqLw0KK3N0YXRpYyBpbmxpbmUgaW50IGV4cGFuZF9maWxlcyhzdHJ1
Y3QgZmlsZXNfc3RydWN0ICpmaWxlcywgaW50IG5yKQ0KK3sNCisJaW50IGVy
ciwgZXhwYW5kID0gMDsNCisjaWZkZWYgRkRTRVRfREVCVUcJDQorCXByaW50
ayAoS0VSTl9FUlIgX19GVU5DVElPTl9fICIgJWQ6IG5yID0gJWRcbiIsIGN1
cnJlbnQtPnBpZCwgbnIpOw0KKyNlbmRpZg0KKwkNCisJaWYgKG5yID49IGZp
bGVzLT5tYXhfZmRzZXQpIHsNCisJCWV4cGFuZCA9IDE7DQorCQlpZiAoKGVy
ciA9IGV4cGFuZF9mZHNldChmaWxlcywgbnIpKSkNCisJCQlnb3RvIG91dDsN
CisJfQ0KKwlpZiAobnIgPj0gZmlsZXMtPm1heF9mZHMpIHsNCisJCWV4cGFu
ZCA9IDE7DQorCQlpZiAoKGVyciA9IGV4cGFuZF9mZF9hcnJheShmaWxlcywg
bnIpKSkNCisJCQlnb3RvIG91dDsNCisJfQ0KKwllcnIgPSBleHBhbmQ7DQor
IG91dDoNCisjaWZkZWYgRkRTRVRfREVCVUcJDQorCWlmIChlcnIpDQorCQlw
cmludGsgKEtFUk5fRVJSIF9fRlVOQ1RJT05fXyAiICVkOiByZXR1cm4gJWRc
biIsIGN1cnJlbnQtPnBpZCwgZXJyKTsNCisjZW5kaWYNCisJcmV0dXJuIGVy
cjsNCit9DQogDQogZXh0ZXJuIGludCAgY29weV90aHJlYWQoaW50LCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Kiwgc3RydWN0IHB0X3JlZ3MgKik7DQogZXh0ZXJuIHZvaWQgZmx1c2hfdGhy
ZWFkKHZvaWQpOw0KZGlmZiAtdXJOIGxpbnV4Lm9yaWcva2VybmVsL2V4aXQu
YyBsaW51eC9rZXJuZWwvZXhpdC5jDQotLS0gbGludXgub3JpZy9rZXJuZWwv
ZXhpdC5jCUZyaSBNYXkgMTQgMDk6MjI6MjEgMTk5OQ0KKysrIGxpbnV4L2tl
cm5lbC9leGl0LmMJRnJpIE1heSAxNCAwOToyMzo1OCAxOTk5DQpAQCAtMTU5
LDExICsxNTksMTEgQEANCiANCiAJaiA9IDA7DQogCWZvciAoOzspIHsNCi0J
CXVuc2lnbmVkIGxvbmcgc2V0ID0gZmlsZXMtPm9wZW5fZmRzLmZkc19iaXRz
W2pdOw0KKwkJdW5zaWduZWQgbG9uZyBzZXQ7DQogCQlpID0gaiAqIF9fTkZE
QklUUzsNCi0JCWorKzsNCi0JCWlmIChpID49IGZpbGVzLT5tYXhfZmRzKQ0K
KwkJaWYgKGkgPj0gZmlsZXMtPm1heF9mZHNldCB8fCBpID49IGZpbGVzLT5t
YXhfZmRzKQ0KIAkJCWJyZWFrOw0KKwkJc2V0ID0gZmlsZXMtPm9wZW5fZmRz
LT5mZHNfYml0c1tqKytdOw0KIAkJd2hpbGUgKHNldCkgew0KIAkJCWlmIChz
ZXQgJiAxKSB7DQogCQkJCXN0cnVjdCBmaWxlICogZmlsZSA9IGZpbGVzLT5m
ZFtpXTsNCkBAIC0xODksMTIgKzE4OSwxNCBAQA0KIAkJaWYgKGF0b21pY19k
ZWNfYW5kX3Rlc3QoJmZpbGVzLT5jb3VudCkpIHsNCiAJCQljbG9zZV9maWxl
cyhmaWxlcyk7DQogCQkJLyoNCi0JCQkgKiBGcmVlIHRoZSBmZCBhcnJheSBh
cyBhcHByb3ByaWF0ZSAuLi4NCisJCQkgKiBGcmVlIHRoZSBmZCBhbmQgZmRz
ZXQgYXJyYXlzIGlmIHdlIGV4cGFuZGVkIHRoZW0uDQogCQkJICovDQotCQkJ
aWYgKE5SX09QRU4gKiBzaXplb2Yoc3RydWN0IGZpbGUgKikgPT0gUEFHRV9T
SVpFKQ0KLQkJCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGZpbGVzLT5m
ZCk7DQotCQkJZWxzZQ0KLQkJCQlrZnJlZShmaWxlcy0+ZmQpOw0KKwkJCWlm
IChmaWxlcy0+ZmQgIT0gJmZpbGVzLT5mZF9hcnJheVswXSkNCisJCQkJZnJl
ZV9mZF9hcnJheShmaWxlcy0+ZmQsIGZpbGVzLT5tYXhfZmRzKTsNCisJCQlp
ZiAoZmlsZXMtPm1heF9mZHNldCA+IF9fRkRfU0VUU0laRSkgew0KKwkJCQlm
cmVlX2Zkc2V0KGZpbGVzLT5vcGVuX2ZkcywgZmlsZXMtPm1heF9mZHNldCk7
DQorCQkJCWZyZWVfZmRzZXQoZmlsZXMtPmNsb3NlX29uX2V4ZWMsIGZpbGVz
LT5tYXhfZmRzZXQpOw0KKwkJCX0NCiAJCQlrbWVtX2NhY2hlX2ZyZWUoZmls
ZXNfY2FjaGVwLCBmaWxlcyk7DQogCQl9DQogCX0NCmRpZmYgLXVyTiBsaW51
eC5vcmlnL2tlcm5lbC9mb3JrLmMgbGludXgva2VybmVsL2ZvcmsuYw0KLS0t
IGxpbnV4Lm9yaWcva2VybmVsL2ZvcmsuYwlGcmkgTWF5IDE0IDA5OjIyOjIx
IDE5OTkNCisrKyBsaW51eC9rZXJuZWwvZm9yay5jCUZyaSBNYXkgMTQgMDk6
MjM6NTggMTk5OQ0KQEAgLTQxNCwzMiArNDE0LDExIEBADQogCXJldHVybiAw
Ow0KIH0NCiANCi0vKg0KLSAqIENvcHkgYSBmZF9zZXQgYW5kIGNvbXB1dGUg
dGhlIG1heGltdW0gZmQgaXQgY29udGFpbnMuIA0KLSAqLw0KLXN0YXRpYyBp
bmxpbmUgaW50IF9fY29weV9mZHNldCh1bnNpZ25lZCBsb25nICpkLCB1bnNp
Z25lZCBsb25nICpzcmMpDQotew0KLQlpbnQgaTsgDQotCXVuc2lnbmVkIGxv
bmcgKnAgPSBzcmM7IA0KLQl1bnNpZ25lZCBsb25nICptYXggPSBzcmM7IA0K
LQ0KLQlmb3IgKGkgPSBfX0ZEU0VUX0xPTkdTOyBpOyAtLWkpIHsNCi0JCWlm
ICgoKmQrKyA9ICpwKyspICE9IDApIA0KLQkJCW1heCA9IHA7IA0KLQl9DQot
CXJldHVybiAobWF4IC0gc3JjKSpzaXplb2YobG9uZykqODsgDQotfQ0KLQ0K
LXN0YXRpYyBpbmxpbmUgaW50IGNvcHlfZmRzZXQoZmRfc2V0ICpkc3QsIGZk
X3NldCAqc3JjKQ0KLXsNCi0JcmV0dXJuIF9fY29weV9mZHNldChkc3QtPmZk
c19iaXRzLCBzcmMtPmZkc19iaXRzKTsgIA0KLX0NCi0NCiBzdGF0aWMgaW50
IGNvcHlfZmlsZXModW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgc3RydWN0
IHRhc2tfc3RydWN0ICogdHNrKQ0KIHsNCiAJc3RydWN0IGZpbGVzX3N0cnVj
dCAqb2xkZiwgKm5ld2Y7DQogCXN0cnVjdCBmaWxlICoqb2xkX2ZkcywgKipu
ZXdfZmRzOw0KLQlpbnQgc2l6ZSwgaSwgZXJyb3IgPSAwOw0KKwlpbnQgbmZk
cywgc2l6ZSwgaSwgZXJyb3IgPSAwOw0KIA0KIAkvKg0KIAkgKiBBIGJhY2tn
cm91bmQgcHJvY2VzcyBtYXkgbm90IGhhdmUgYW55IGZpbGVzIC4uLg0KQEAg
LTQ1OSwyNSArNDM4LDc0IEBADQogCWlmICghbmV3ZikgDQogCQlnb3RvIG91
dDsNCiANCi0JLyoNCi0JICogQWxsb2NhdGUgdGhlIGZkIGFycmF5LCB1c2lu
ZyBnZXRfZnJlZV9wYWdlKCkgaWYgcG9zc2libGUuDQotCSAqIEV2ZW50dWFs
bHkgd2Ugd2FudCB0byBtYWtlIHRoZSBhcnJheSBzaXplIHZhcmlhYmxlIC4u
Lg0KLQkgKi8NCi0Jc2l6ZSA9IE5SX09QRU4gKiBzaXplb2Yoc3RydWN0IGZp
bGUgKik7DQotCWlmIChzaXplID09IFBBR0VfU0laRSkNCi0JCW5ld19mZHMg
PSAoc3RydWN0IGZpbGUgKiopIF9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVM
KTsNCi0JZWxzZQ0KLQkJbmV3X2ZkcyA9IChzdHJ1Y3QgZmlsZSAqKikga21h
bGxvYyhzaXplLCBHRlBfS0VSTkVMKTsNCi0JaWYgKCFuZXdfZmRzKQ0KLQkJ
Z290byBvdXRfcmVsZWFzZTsNCisJc2l6ZSA9IG9sZGYtPm1heF9mZHNldDsN
CisJbmZkcyA9IE5SX09QRU5fREVGQVVMVDsNCiANCisjaWZkZWYgRkRTRVRf
REVCVUcJDQorCXByaW50ayAoS0VSTl9FUlIgX19GVU5DVElPTl9fICIgc2l6
ZSA9ICVkLyVkXG4iLA0KKwkJb2xkZi0+bWF4X2Zkcywgb2xkZi0+bWF4X2Zk
c2V0KTsNCisjZW5kaWYNCiAJYXRvbWljX3NldCgmbmV3Zi0+Y291bnQsIDEp
Ow0KLQluZXdmLT5tYXhfZmRzID0gTlJfT1BFTjsNCi0JbmV3Zi0+ZmQgPSBu
ZXdfZmRzOw0KLQluZXdmLT5jbG9zZV9vbl9leGVjID0gb2xkZi0+Y2xvc2Vf
b25fZXhlYzsNCi0JaSA9IGNvcHlfZmRzZXQoJm5ld2YtPm9wZW5fZmRzLCAm
b2xkZi0+b3Blbl9mZHMpOw0KIA0KKwluZXdmLT5uZXh0X2ZkCSAgICA9IDA7
DQorCW5ld2YtPm1heF9mZHMJICAgID0gTlJfT1BFTl9ERUZBVUxUOw0KKwlu
ZXdmLT5tYXhfZmRzZXQJICAgID0gX19GRF9TRVRTSVpFOw0KKwluZXdmLT5j
bG9zZV9vbl9leGVjID0gJm5ld2YtPmNsb3NlX29uX2V4ZWNfaW5pdDsNCisJ
bmV3Zi0+b3Blbl9mZHMJICAgID0gJm5ld2YtPm9wZW5fZmRzX2luaXQ7DQor
CW5ld2YtPmZkCSAgICA9ICZuZXdmLT5mZF9hcnJheVswXTsNCisNCisJLyog
RXZlbiBpZiB0aGUgb2xkIGZkc2V0IGdldHMgZ3Jvd24gaGVyZSwgd2UnbGwg
b25seSBjb3B5ICJzaXplIiBmZHMgKi8NCisJaWYgKHNpemUgPiBfX0ZEX1NF
VFNJWkUpIHsNCisJCW5ld2YtPm1heF9mZHNldCA9IDA7DQorCQllcnJvciA9
IGV4cGFuZF9mZHNldChuZXdmLCBzaXplKTsNCisJCWlmIChlcnJvcikNCisJ
CQlnb3RvIG91dF9yZWxlYXNlOw0KKwl9DQorCW1lbWNweShuZXdmLT5vcGVu
X2Zkcy0+ZmRzX2JpdHMsIG9sZGYtPm9wZW5fZmRzLT5mZHNfYml0cywgc2l6
ZS84KTsNCisJbWVtY3B5KG5ld2YtPmNsb3NlX29uX2V4ZWMtPmZkc19iaXRz
LCBvbGRmLT5jbG9zZV9vbl9leGVjLT5mZHNfYml0cywgc2l6ZS84KTsNCisJ
aWYgKG5ld2YtPm1heF9mZHNldCA+IHNpemUpIHsNCisJCWludCBsZWZ0ID0g
KG5ld2YtPm1heF9mZHNldC1zaXplKS84Ow0KKwkJaW50IHN0YXJ0ID0gc2l6
ZSAvICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsNCisJCQ0KKwkJbWVt
c2V0KCZuZXdmLT5vcGVuX2Zkcy0+ZmRzX2JpdHNbc3RhcnRdLCAwLCBsZWZ0
KTsNCisJCW1lbXNldCgmbmV3Zi0+Y2xvc2Vfb25fZXhlYy0+ZmRzX2JpdHNb
c3RhcnRdLCAwLCBsZWZ0KTsNCisJfQ0KKw0KKwkvKiBGaW5kIHRoZSBsYXN0
IG9wZW4gZmQgKi8NCisJZm9yIChpID0gc2l6ZS8oOCpzaXplb2YobG9uZykp
OyBpID4gMDsgKSB7DQorCQlpZiAobmV3Zi0+b3Blbl9mZHMtPmZkc19iaXRz
Wy0taV0pDQorCQkJYnJlYWs7DQorCX0NCisJaSA9IChpKzEpICogOCAqIHNp
emVvZihsb25nKTsNCisNCisjaWZkZWYgRkRTRVRfREVCVUcJDQorCXByaW50
ayAoS0VSTl9FUlIgX19GVU5DVElPTl9fICIgZmlyc3QtZnJlZSA9ICVkLyVk
XG4iLCBpLCBzaXplKTsNCisjZW5kaWYNCisNCisJLyogRG8gYSBzYW5pdHkg
Y2hlY2sgLi4uICovDQorCWlmIChpID4gb2xkZi0+bWF4X2ZkcykNCisJCXBy
aW50ayhLRVJOX0VSUiANCisJCSAgICAgICAiY29weV9maWxlczogcGlkICVk
LCBvcGVuIGZpbGVzICVkIGV4Y2VlZHMgbWF4ICVkIVxuIiwNCisJCSAgICAg
ICBjdXJyZW50LT5waWQsIGksIG9sZGYtPm1heF9mZHMpOw0KKw0KKwkvKg0K
KwkgKiBDaGVjayB3aGV0aGVyIHdlIG5lZWQgdG8gYWxsb2NhdGUgYSBsYXJn
ZXIgZmQgYXJyYXkuDQorCSAqIE5vdGU6IHdlJ3JlIG5vdCBhIGNsb25lIHRh
c2ssIHNvIHRoZSBvcGVuIGNvdW50IHdvbid0DQorCSAqIGNoYW5nZS4NCisJ
ICovDQorCWlmIChpID4gTlJfT1BFTl9ERUZBVUxUKSB7DQorCQluZXdmLT5t
YXhfZmRzID0gMDsNCisJCWVycm9yID0gZXhwYW5kX2ZkX2FycmF5KG5ld2Ys
IGkpOw0KKwkJaWYgKGVycm9yKQ0KKwkJCWdvdG8gb3V0X3JlbGVhc2U7DQor
CQluZmRzID0gbmV3Zi0+bWF4X2ZkczsNCisJfQ0KKw0KKwkvKiBjb21wdXRl
IHRoZSByZW1haW5kZXIgdG8gYmUgY2xlYXJlZCAqLw0KKwlzaXplID0gKG5m
ZHMgLSBpKSAqIHNpemVvZihzdHJ1Y3QgZmlsZSAqKTsNCiAJb2xkX2ZkcyA9
IG9sZGYtPmZkOw0KKwluZXdfZmRzID0gbmV3Zi0+ZmQ7DQorDQogCWZvciAo
OyBpICE9IDA7IGktLSkgew0KIAkJc3RydWN0IGZpbGUgKmYgPSAqb2xkX2Zk
cysrOw0KIAkJKm5ld19mZHMgPSBmOw0KQEAgLTQ4NiwxNCArNTE0LDIwIEBA
DQogCQluZXdfZmRzKys7DQogCX0NCiAJLyogVGhpcyBpcyBsb25nIHdvcmQg
YWxpZ25lZCB0aHVzIGNvdWxkIHVzZSBhIG9wdGltaXplZCB2ZXJzaW9uICov
IA0KLQltZW1zZXQobmV3X2ZkcywgMCwgKGNoYXIgKiluZXdmLT5mZCArIHNp
emUgLSAoY2hhciAqKW5ld19mZHMpOyANCisJbWVtc2V0KG5ld19mZHMsIDAs
IHNpemUpOyANCiAgICAgICANCiAJdHNrLT5maWxlcyA9IG5ld2Y7DQogCWVy
cm9yID0gMDsNCiBvdXQ6DQorI2lmZGVmIEZEU0VUX0RFQlVHCQ0KKwlpZiAo
ZXJyb3IpDQorCQlwcmludGsgKEtFUk5fRVJSICJjb3B5X2ZpbGVzOiByZXR1
cm4gJWRcbiIsIGVycm9yKTsNCisjZW5kaWYNCiAJcmV0dXJuIGVycm9yOw0K
IA0KIG91dF9yZWxlYXNlOg0KKwlmcmVlX2Zkc2V0IChuZXdmLT5jbG9zZV9v
bl9leGVjLCBuZXdmLT5tYXhfZmRzZXQpOw0KKwlmcmVlX2Zkc2V0IChuZXdm
LT5vcGVuX2ZkcywgbmV3Zi0+bWF4X2Zkc2V0KTsNCiAJa21lbV9jYWNoZV9m
cmVlKGZpbGVzX2NhY2hlcCwgbmV3Zik7DQogCWdvdG8gb3V0Ow0KIH0NCg==
---1362361633-410649091-926790279=:23287--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/