[WBEL-devel] RHEL kernel interactivity patch

Yue Shi Lai ylai@linuxmail.org
Thu, 18 Dec 2003 16:10:34 +0800


This is a multi-part message in MIME format...

------------=_1071735034-1742-0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

Hi,

I the case that someone find it useful for WBEL, I finished my backport of Con Kolivas' O(1) scheduler interactivity patch for RHEL's kernel 2.4.21-4.0.1.EL. It essentially addresses the starvation issuel arises with the new O(1) scheduler (see like http://lkml.org/lkml/2003/3/4/6 for details), especially in desktop usage. If there is not much differnece to the RHEL kernel source RPM, this patch should be applied after the 4 scheduler patches as patch no. 50.

Best wishes,

Yue Shi Lai
-- 
______________________________________________
Check out the latest SMS services @ http://www.linuxmail.org 
This allows you to send and receive SMS through your mailbox.


Powered by Outblaze

------------=_1071735034-1742-0
Content-Type: application/octet-stream; name="linux-2.4.21-o1-int.patch"
Content-Disposition: attachment; filename="linux-2.4.21-o1-int.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtTmF1ciAvdXNyL3NyYy9saW51eC0yLjQuMjEtNC4wLjEuRUwvYXJj
aC9hcm0va2VybmVsL3RpbWUuYyBsaW51eC0yLjQuMjEtNC4wLjEuRUwtaW50
L2FyY2gvYXJtL2tlcm5lbC90aW1lLmMKLS0tIC91c3Ivc3JjL2xpbnV4LTIu
NC4yMS00LjAuMS5FTC9hcmNoL2FybS9rZXJuZWwvdGltZS5jCTIwMDMtMDYt
MTMgMTQ6NTE6MjkuMDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0yLjQuMjEt
NC4wLjEuRUwtaW50L2FyY2gvYXJtL2tlcm5lbC90aW1lLmMJMjAwMy0xMi0x
NCAyMTozNzo0My4wMDAwMDAwMDAgKzAwMDAKQEAgLTY4LDYgKzY4LDEzIEBA
CiAgKi8KIHVuc2lnbmVkIGxvbmcgKCpnZXR0aW1lb2Zmc2V0KSh2b2lkKSA9
IGR1bW15X2dldHRpbWVvZmZzZXQ7CiAKK3Vuc2lnbmVkIGxvbmcgbG9uZyBz
Y2hlZF9jbG9jayh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyB0aGlz
X29mZnNldDsKKworCXJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKWppZmZp
ZXMgKiAoMTAwMDAwMDAwMCAvIEhaKTsKK30KKwogLyoKICAqIEhhbmRsZSBr
ZXJuZWwgcHJvZmlsZSBzdHVmZi4uLgogICovCmRpZmYgLU5hdXIgL3Vzci9z
cmMvbGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gvaTM4Ni9rZXJuZWwvcHJv
Y2Vzcy5jIGxpbnV4LTIuNC4yMS00LjAuMS5FTC1pbnQvYXJjaC9pMzg2L2tl
cm5lbC9wcm9jZXNzLmMKLS0tIC91c3Ivc3JjL2xpbnV4LTIuNC4yMS00LjAu
MS5FTC9hcmNoL2kzODYva2VybmVsL3Byb2Nlc3MuYwkyMDAzLTEwLTIzIDA1
OjE4OjIyLjAwMDAwMDAwMCArMDAwMAorKysgbGludXgtMi40LjIxLTQuMC4x
LkVMLWludC9hcmNoL2kzODYva2VybmVsL3Byb2Nlc3MuYwkyMDAzLTEyLTE3
IDA0OjE5OjA0LjAwMDAwMDAwMCArMDAwMApAQCAtMTQxLDExICsxNDEsNiBA
QAogCQl2b2lkICgqaWRsZSkodm9pZCkgPSBwbV9pZGxlOwogCQlpZiAoIWlk
bGUpCiAJCQlpZGxlID0gZGVmYXVsdF9pZGxlOwotCQkvKgotCQkgKiBXZSB1
c2UgdGhlIGxhc3RfcnVuIHRpbWVzdGFtcCB0byBtZWFzdXJlIHRoZSBpZGxl
bmVzcwotCQkgKiBvZiBhIENQVS4KLQkJICovCi0JCWN1cnJlbnQtPmxhc3Rf
cnVuID0gamlmZmllczsKIAogCQl3aGlsZSAoIWN1cnJlbnQtPm5lZWRfcmVz
Y2hlZCkKIAkJCWlkbGUoKTsKZGlmZiAtTmF1ciAvdXNyL3NyYy9saW51eC0y
LjQuMjEtNC4wLjEuRUwvYXJjaC9pMzg2L2tlcm5lbC9zbXBib290LmMgbGlu
dXgtMi40LjIxLTQuMC4xLkVMLWludC9hcmNoL2kzODYva2VybmVsL3NtcGJv
b3QuYwotLS0gL3Vzci9zcmMvbGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gv
aTM4Ni9rZXJuZWwvc21wYm9vdC5jCTIwMDMtMTAtMjMgMDU6MTg6MTUuMDAw
MDAwMDAwICswMDAwCisrKyBsaW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2Fy
Y2gvaTM4Ni9rZXJuZWwvc21wYm9vdC5jCTIwMDMtMTItMTQgMTA6NTA6NTku
MDAwMDAwMDAwICswMDAwCkBAIC05NTQsMTMgKzk1NCwxMyBAQAogCQljYWNo
ZWZsdXNoX3RpbWUgPSAoY3B1X2toej4+MTApICogKGNhY2hlc2l6ZTw8MTAp
IC8gYmFuZHdpZHRoOwogCX0KIAotCWNhY2hlX2RlY2F5X3RpY2tzID0gKGxv
bmcpY2FjaGVmbHVzaF90aW1lL2NwdV9raHogKiBIWiAvIDEwMDA7CisJY2Fj
aGVfZGVjYXlfdGlja3MgPSAobG9uZyljYWNoZWZsdXNoX3RpbWUvY3B1X2to
eiArIDE7CiAKIAlwcmludGsoInBlci1DUFUgdGltZXNsaWNlIGN1dG9mZjog
JWxkLiUwMmxkIHVzZWNzLlxuIiwKIAkJKGxvbmcpY2FjaGVmbHVzaF90aW1l
LyhjcHVfa2h6LzEwMDApLAogCQkoKGxvbmcpY2FjaGVmbHVzaF90aW1lKjEw
MC8oY3B1X2toei8xMDAwKSkgJSAxMDApOwogCXByaW50aygidGFzayBtaWdy
YXRpb24gY2FjaGUgZGVjYXkgdGltZW91dDogJWxkIG1zZWNzLlxuIiwKLQkJ
KGNhY2hlX2RlY2F5X3RpY2tzICsgMSkgKiAxMDAwIC8gSFopOworCQljYWNo
ZV9kZWNheV90aWNrcyk7CiB9CiAKIC8qCmRpZmYgLU5hdXIgL3Vzci9zcmMv
bGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gvaTM4Ni9rZXJuZWwvdGltZS5j
IGxpbnV4LTIuNC4yMS00LjAuMS5FTC1pbnQvYXJjaC9pMzg2L2tlcm5lbC90
aW1lLmMKLS0tIC91c3Ivc3JjL2xpbnV4LTIuNC4yMS00LjAuMS5FTC9hcmNo
L2kzODYva2VybmVsL3RpbWUuYwkyMDAzLTEwLTIzIDA1OjE4OjI4LjAwMDAw
MDAwMCArMDAwMAorKysgbGludXgtMi40LjIxLTQuMC4xLkVMLWludC9hcmNo
L2kzODYva2VybmVsL3RpbWUuYwkyMDAzLTEyLTE3IDIyOjM0OjU3LjAwMDAw
MDAwMCArMDAwMApAQCAtOTY3LDMgKzk2NywyMyBAQAogCXNldHVwX2lycSgw
LCAmaXJxMCk7CiAjZW5kaWYKIH0KKworLyoKKyAqIFNjaGVkdWxlciBjbG9j
ayAtIHJldHVybnMgY3VycmVudCB0aW1lIGluIG5hbm9zZWMgdW5pdHMuCisg
Ki8KK3Vuc2lnbmVkIGxvbmcgbG9uZyBzY2hlZF9jbG9jayh2b2lkKQorewor
CXVuc2lnbmVkIGxvbmcgbG9uZyB0aGlzX29mZnNldDsKKworCS8qCisJICog
SW4gdGhlIE5VTUEgY2FzZSB3ZSBkb250IHVzZSB0aGUgVFNDIGFzIHRoZXkg
YXJlIG5vdAorCSAqIHN5bmNocm9uaXplZCBhY3Jvc3MgYWxsIENQVXMuCisJ
ICovCisJcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpamlmZmllcyAqICgx
MDAwMDAwMDAwIC8gSFopOworCisJLyogUmVhZCB0aGUgVGltZSBTdGFtcCBD
b3VudGVyICovCisJcmR0c2NsbCh0aGlzX29mZnNldCk7CisKKwkvKiByZXR1
cm4gdGhlIHZhbHVlIGluIG5zICovCisJcmV0dXJuIGN5Y2xlc18yX25zKHRo
aXNfb2Zmc2V0KTsKK30KZGlmZiAtTmF1ciAvdXNyL3NyYy9saW51eC0yLjQu
MjEtNC4wLjEuRUwvYXJjaC9pYTY0L2tlcm5lbC90aW1lLmMgbGludXgtMi40
LjIxLTQuMC4xLkVMLWludC9hcmNoL2lhNjQva2VybmVsL3RpbWUuYwotLS0g
L3Vzci9zcmMvbGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gvaWE2NC9rZXJu
ZWwvdGltZS5jCTIwMDMtMTAtMjMgMDU6MTg6MjcuMDAwMDAwMDAwICswMDAw
CisrKyBsaW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2FyY2gvaWE2NC9rZXJu
ZWwvdGltZS5jCTIwMDMtMTItMTQgMTA6NTM6MTIuMDAwMDAwMDAwICswMDAw
CkBAIC0xMjIsNiArMTIyLDE0IEBACiAJdHYtPnR2X3VzZWMgPSB1c2VjOwog
fQogCit1bnNpZ25lZCBsb25nIGxvbmcKK3NjaGVkX2Nsb2NrICh2b2lkKQor
eworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gaWE2NF9nZXRfaXRjKCk7CisK
KwlyZXR1cm4gKG9mZnNldCAqIGxvY2FsX2NwdV9kYXRhLT5uc2VjX3Blcl9j
eWMpID4+IElBNjRfTlNFQ19QRVJfQ1lDX1NISUZUOworfQorCiBzdGF0aWMg
dm9pZAogdGltZXJfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCwg
c3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CmRpZmYgLU5hdXIgL3Vzci9zcmMv
bGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gvcHBjL2tlcm5lbC90aW1lLmMg
bGludXgtMi40LjIxLTQuMC4xLkVMLWludC9hcmNoL3BwYy9rZXJuZWwvdGlt
ZS5jCi0tLSAvdXNyL3NyYy9saW51eC0yLjQuMjEtNC4wLjEuRUwvYXJjaC9w
cGMva2VybmVsL3RpbWUuYwkyMDAzLTA2LTEzIDE0OjUxOjMxLjAwMDAwMDAw
MCArMDAwMAorKysgbGludXgtMi40LjIxLTQuMC4xLkVMLWludC9hcmNoL3Bw
Yy9rZXJuZWwvdGltZS5jCTIwMDMtMTItMTQgMjE6NDU6NDIuMDAwMDAwMDAw
ICswMDAwCkBAIC00MjYsMyArNDI2LDI2IEBACiAJcmV0dXJuIG1sdDsKIH0K
IAordW5zaWduZWQgbG9uZyBsb25nIHNjaGVkX2Nsb2NrKHZvaWQpCit7CisJ
dW5zaWduZWQgbG9uZyBsbywgaGksIGhpMjsKKwl1bnNpZ25lZCBsb25nIGxv
bmcgdGI7CisKKwlpZiAoIV9fVVNFX1JUQygpKSB7CisJCWRvIHsKKwkJCWhp
ID0gZ2V0X3RidSgpOworCQkJbG8gPSBnZXRfdGJsKCk7CisJCQloaTIgPSBn
ZXRfdGJ1KCk7CisJCX0gd2hpbGUgKGhpMiAhPSBoaSk7CisJCXRiID0gKCh1
bnNpZ25lZCBsb25nIGxvbmcpIGhpIDw8IDMyKSB8IGxvOworCQl0YiA9ICh0
YiAqIHRiX3RvX25zX3NjYWxlKSA+PiAxMDsKKwl9IGVsc2UgeworICAgICAg
ICAJZG8geworCQkJaGkgPSBnZXRfcnRjdSgpOworCQkJbG8gPSBnZXRfcnRj
bCgpOworCQkJaGkyID0gZ2V0X3J0Y3UoKTsKKwkJfSB3aGlsZSAoaGkyICE9
IGhpKTsKKwkJdGIgPSAoKHVuc2lnbmVkIGxvbmcgbG9uZykgaGkpICogMTAw
MDAwMDAwMCArIGxvOworCX0KKwlyZXR1cm4gdGI7Cit9CmRpZmYgLU5hdXIg
L3Vzci9zcmMvbGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gvcHBjNjQva2Vy
bmVsL3RpbWUuYyBsaW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2FyY2gvcHBj
NjQva2VybmVsL3RpbWUuYwotLS0gL3Vzci9zcmMvbGludXgtMi40LjIxLTQu
MC4xLkVML2FyY2gvcHBjNjQva2VybmVsL3RpbWUuYwkyMDAzLTEwLTIzIDA1
OjE4OjI3LjAwMDAwMDAwMCArMDAwMAorKysgbGludXgtMi40LjIxLTQuMC4x
LkVMLWludC9hcmNoL3BwYzY0L2tlcm5lbC90aW1lLmMJMjAwMy0xMi0xNCAy
MTo0NjoyOS4wMDAwMDAwMDAgKzAwMDAKQEAgLTMxMCw2ICszMTAsMTUgQEAK
IAlyZXR1cm4gMTsKIH0KIAorLyoKKyAqIFNjaGVkdWxlciBjbG9jayAtIHJl
dHVybnMgY3VycmVudCB0aW1lIGluIG5hbm9zZWMgdW5pdHMuCisgKgorICog
VGhpcyBpcyB3cm9uZywgYnV0IG15IENQVXMgcnVuIGF0IDFHSHosIHNvIG55
ZXIgbnllci4KKyAqLwordW5zaWduZWQgbG9uZyBsb25nIHNjaGVkX2Nsb2Nr
KHZvaWQpCit7CisJcmV0dXJuIGdldF90YigpOworfQogCiAvKgogICogVGhp
cyB2ZXJzaW9uIG9mIGdldHRpbWVvZmRheSBoYXMgbWljcm9zZWNvbmQgcmVz
b2x1dGlvbi4KZGlmZiAtTmF1ciAvdXNyL3NyYy9saW51eC0yLjQuMjEtNC4w
LjEuRUwvYXJjaC9zMzkwL2tlcm5lbC90aW1lLmMgbGludXgtMi40LjIxLTQu
MC4xLkVMLWludC9hcmNoL3MzOTAva2VybmVsL3RpbWUuYwotLS0gL3Vzci9z
cmMvbGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gvczM5MC9rZXJuZWwvdGlt
ZS5jCTIwMDMtMTAtMjMgMDU6MTg6MjcuMDAwMDAwMDAwICswMDAwCisrKyBs
aW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2FyY2gvczM5MC9rZXJuZWwvdGlt
ZS5jCTIwMDMtMTItMTQgMjE6NDg6MTUuMDAwMDAwMDAwICswMDAwCkBAIC00
NSw2ICs0NSwxNCBAQAogCiBleHRlcm4gdW5zaWduZWQgbG9uZyB3YWxsX2pp
ZmZpZXM7CiAKKy8qCisgKiBTY2hlZHVsZXIgY2xvY2sgLSByZXR1cm5zIGN1
cnJlbnQgdGltZSBpbiBuYW5vc2VjIHVuaXRzLgorICovCit1bnNpZ25lZCBs
b25nIGxvbmcgc2NoZWRfY2xvY2sodm9pZCkKK3sKKwlyZXR1cm4gKGdldF9j
bG9jaygpIC0gamlmZmllc190aW1lcl9jYykgPj4gMjsKK30KKwogdm9pZCB0
b2RfdG9fdGltZXZhbChfX3U2NCB0b2R2YWwsIHN0cnVjdCB0aW1ldmFsICp4
dGltZSkKIHsKICAgICAgICAgY29uc3QgaW50IGhpZ2hfYml0ID0gMHg4MDAw
MDAwMEw7CmRpZmYgLU5hdXIgL3Vzci9zcmMvbGludXgtMi40LjIxLTQuMC4x
LkVML2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jIGxpbnV4LTIuNC4yMS00
LjAuMS5FTC1pbnQvYXJjaC9zcGFyYzY0L2tlcm5lbC90aW1lLmMKLS0tIC91
c3Ivc3JjL2xpbnV4LTIuNC4yMS00LjAuMS5FTC9hcmNoL3NwYXJjNjQva2Vy
bmVsL3RpbWUuYwkyMDAzLTA2LTEzIDE0OjUxOjMyLjAwMDAwMDAwMCArMDAw
MAorKysgbGludXgtMi40LjIxLTQuMC4xLkVMLWludC9hcmNoL3NwYXJjNjQv
a2VybmVsL3RpbWUuYwkyMDAzLTEyLTE0IDIxOjUwOjE0LjAwMDAwMDAwMCAr
MDAwMApAQCAtOTk5LDYgKzk5OSwxMyBAQAogCXJldHVybiAodGlja3MgKiB0
aW1lcl90aWNrc19wZXJfdXNlY19xdW90aWVudCkgPj4gMzBVTDsKIH0KIAor
dW5zaWduZWQgbG9uZyBsb25nIHNjaGVkX2Nsb2NrKHZvaWQpCit7CisJdW5z
aWduZWQgbG9uZyB0aWNrcyA9IHRpY2tfb3BzLT5nZXRfdGljaygpOworCisJ
cmV0dXJuICh0aWNrcyAqIHRpbWVyX3RpY2tzX3Blcl9uc2VjX3F1b3RpZW50
KSA+PiAzMFVMOworfQorCiB2b2lkIGRvX3NldHRpbWVvZmRheShzdHJ1Y3Qg
dGltZXZhbCAqdHYpCiB7CiAJaWYgKHRoaXNfaXNfc3RhcmZpcmUpCmRpZmYg
LU5hdXIgL3Vzci9zcmMvbGludXgtMi40LjIxLTQuMC4xLkVML2FyY2gveDg2
XzY0L2tlcm5lbC90aW1lLmMgbGludXgtMi40LjIxLTQuMC4xLkVMLWludC9h
cmNoL3g4Nl82NC9rZXJuZWwvdGltZS5jCi0tLSAvdXNyL3NyYy9saW51eC0y
LjQuMjEtNC4wLjEuRUwvYXJjaC94ODZfNjQva2VybmVsL3RpbWUuYwkyMDAz
LTEwLTIzIDA1OjE4OjI3LjAwMDAwMDAwMCArMDAwMAorKysgbGludXgtMi40
LjIxLTQuMC4xLkVMLWludC9hcmNoL3g4Nl82NC9rZXJuZWwvdGltZS5jCTIw
MDMtMTItMTQgMjE6NTI6NTkuMDAwMDAwMDAwICswMDAwCkBAIC0yODUsNiAr
Mjg1LDMwIEBACiAJYnJfd3JpdGVfdW5sb2NrKEJSX1hUSU1FX0xPQ0spOwog
fQogCisvKiBSRUQtUEVOOiBjYWxjdWxhdGlvbiBpcyBkb25lIGluIDMyYml0
cyB3aXRoIG11bHRpcGx5IGZvciBwZXJmb3JtYW5jZQorICAgYW5kIGNvdWxk
IG92ZXJmbG93LCBpdCBtYXkgYmUgYmV0dGVyIChidXQgc2xvd2VyKXRvIHVz
ZSBhbiA2NGJpdCBkaXZpc2lvbi4gKi8KK3Vuc2lnbmVkIGxvbmcgbG9uZyBz
Y2hlZF9jbG9jayh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgYSA9IDA7CisK
KyNpZiAwCisJLyogRG9uJ3QgZG8gYSBIUEVUIHJlYWQgaGVyZS4gVXNpbmcg
VFNDIGFsd2F5cyBpcyBtdWNoIGZhc3RlcgorCSAgIGFuZCBIUEVUIG1heSBu
b3QgYmUgbWFwcGVkIHlldCB3aGVuIHRoZSBzY2hlZHVsZXIgZmlyc3QgcnVu
cy4KKyAgICAgICAgICAgRGlzYWR2YW50YWdlIGlzIGEgc21hbGwgZHJpZnQg
YmV0d2VlbiBDUFVzIGluIHNvbWUgY29uZmlndXJhdGlvbnMsCisJICAgYnV0
IHRoYXQgc2hvdWxkIGJlIHRvbGVyYWJsZS4gKi8KKwlpZiAoX192eHRpbWUu
bW9kZSA9PSBWWFRJTUVfSFBFVCkKKwkJcmV0dXJuIChocGV0X3JlYWRsKEhQ
RVRfQ09VTlRFUikgKiB2eHRpbWUucXVvdCkgPj4gMzI7CisjZW5kaWYKKwor
CS8qIENvdWxkIGRvIENQVSBjb3JlIHN5bmMgaGVyZS4gT3B0ZXJvbiBjYW4g
ZXhlY3V0ZSByZHRzYyBzcGVjdWxhdGl2ZWx5LAorCSAgIHdoaWNoIG1lYW5z
IGl0IGlzIG5vdCBjb21wbGV0ZWx5IGV4YWN0IGFuZCBtYXkgbm90IGJlIG1v
bm90b25vdXMgYmV0d2VlbgorCSAgIENQVXMuIEJ1dCB0aGUgZXJyb3JzIHNo
b3VsZCBiZSB0b28gc21hbGwgdG8gbWF0dGVyIGZvciBzY2hlZHVsaW5nCisJ
ICAgcHVycG9zZXMuICovCisKKwlyZHRzY2xsKGEpOworCXJldHVybiAoYSAq
IHZ4dGltZS50c2NfcXVvdCkgPj4gMzI7Cit9CisKIHN0YXRpYyB1bnNpZ25l
ZCBsb25nIGdldF9jbW9zX3RpbWUodm9pZCkKIHsKIAl1bnNpZ25lZCBpbnQg
dGltZW91dCwgeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjOwpkaWZm
IC1OYXVyIC91c3Ivc3JjL2xpbnV4LTIuNC4yMS00LjAuMS5FTC9mcy9wcm9j
L2FycmF5LmMgbGludXgtMi40LjIxLTQuMC4xLkVMLWludC9mcy9wcm9jL2Fy
cmF5LmMKLS0tIC91c3Ivc3JjL2xpbnV4LTIuNC4yMS00LjAuMS5FTC9mcy9w
cm9jL2FycmF5LmMJMjAwMy0xMC0yMyAwNToxODoyOC4wMDAwMDAwMDAgKzAw
MDAKKysrIGxpbnV4LTIuNC4yMS00LjAuMS5FTC1pbnQvZnMvcHJvYy9hcnJh
eS5jCTIwMDMtMTItMTQgMjE6NTg6MjguMDAwMDAwMDAwICswMDAwCkBAIC0x
NTIsMTMgKzE1MiwxNiBAQAogCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7
CiAJYnVmZmVyICs9IHNwcmludGYoYnVmZmVyLAogCQkiU3RhdGU6XHQlc1xu
IgorCQkiU2xlZXBBVkc6XHQlbHUlJVxuIgogCQkiVGdpZDpcdCVkXG4iCiAJ
CSJQaWQ6XHQlZFxuIgogCQkiUFBpZDpcdCVkXG4iCiAJCSJUcmFjZXJQaWQ6
XHQlZFxuIgogCQkiVWlkOlx0JWRcdCVkXHQlZFx0JWRcbiIKIAkJIkdpZDpc
dCVkXHQlZFx0JWRcdCVkXG4iLAotCQlnZXRfdGFza19zdGF0ZShwKSwgcC0+
dGdpZCwKKwkJZ2V0X3Rhc2tfc3RhdGUocCksCisJCShwLT5zbGVlcF9hdmcv
MTAyNCkqMTAwLygxMDAwMDAwMDAwLzEwMjQpLAorCQlwLT50Z2lkLAogCQlw
LT5waWQsIHAtPnBpZCA/IHAtPnJlYWxfcGFyZW50LT5waWQgOiAwLCAwLAog
CQlwLT51aWQsIHAtPmV1aWQsIHAtPnN1aWQsIHAtPmZzdWlkLAogCQlwLT5n
aWQsIHAtPmVnaWQsIHAtPnNnaWQsIHAtPmZzZ2lkKTsKZGlmZiAtTmF1ciAv
dXNyL3NyYy9saW51eC0yLjQuMjEtNC4wLjEuRUwvaW5jbHVkZS9saW51eC9z
Y2hlZC5oIGxpbnV4LTIuNC4yMS00LjAuMS5FTC1pbnQvaW5jbHVkZS9saW51
eC9zY2hlZC5oCi0tLSAvdXNyL3NyYy9saW51eC0yLjQuMjEtNC4wLjEuRUwv
aW5jbHVkZS9saW51eC9zY2hlZC5oCTIwMDMtMTAtMjMgMDU6MTk6MjcuMDAw
MDAwMDAwICswMDAwCisrKyBsaW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2lu
Y2x1ZGUvbGludXgvc2NoZWQuaAkyMDAzLTEyLTE3IDAzOjEzOjIzLjAwMDAw
MDAwMCArMDAwMApAQCAtNDQ5LDcgKzQ0OSw5IEBACiAJcHJpb19hcnJheV90
ICphcnJheTsKIAogCXVuc2lnbmVkIGxvbmcgc2xlZXBfYXZnOwotCXVuc2ln
bmVkIGxvbmcgbGFzdF9ydW47CisJbG9uZyBpbnRlcmFjdGl2ZV9jcmVkaXQ7
CisJdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKwlpbnQgYWN0aXZh
dGVkOwogCiAJdW5zaWduZWQgbG9uZyBwb2xpY3k7CiAJdW5zaWduZWQgbG9u
ZyBjcHVzX2FsbG93ZWQ7CkBAIC02MTcsMTIgKzYxOSwxOCBAQAogICovCiAj
ZGVmaW5lIF9TVEtfTElNCSgxMCoxMDI0KjEwMjQpCiAKK2V4dGVybiB1bnNp
Z25lZCBsb25nIGxvbmcgc2NoZWRfY2xvY2sodm9pZCk7CisKKyNkZWZpbmUg
bnVtX29ubGluZV9jcHVzKCkgc21wX251bV9jcHVzCisKICNpZiBDT05GSUdf
U01QCiBleHRlcm4gdm9pZCBzZXRfY3B1c19hbGxvd2VkKHRhc2tfdCAqcCwg
dW5zaWduZWQgbG9uZyBuZXdfbWFzayk7CiAjZWxzZQogI2RlZmluZSBzZXRf
Y3B1c19hbGxvd2VkKHAsIG5ld19tYXNrKQlkbyB7IH0gd2hpbGUgKDApCiAj
ZW5kaWYKIAorI2RlZmluZSBjcHVfaXNzZXQoY3B1LCBtYXNrKSAoKDEgPDwg
KGNwdSkpICYgKG1hc2spKQorCiBleHRlcm4gdm9pZCBzZXRfdXNlcl9uaWNl
KHRhc2tfdCAqcCwgbG9uZyBuaWNlKTsKIGV4dGVybiBpbnQgdGFza19wcmlv
KHRhc2tfdCAqcCk7CiBleHRlcm4gaW50IHRhc2tfbmljZSh0YXNrX3QgKnAp
OwpAQCAtNjY3LDYgKzY3NSw4IEBACiAKICNlbmRpZiAvKiBDT05GSUdfU01Q
ICovCiAKK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2NoZWRfY2xvY2so
dm9pZCk7CisKIAogZXh0ZXJuIHZvaWQgeWllbGQodm9pZCk7CiAKZGlmZiAt
TmF1ciAvdXNyL3NyYy9saW51eC0yLjQuMjEtNC4wLjEuRUwva2VybmVsL2Zv
cmsuYyBsaW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2tlcm5lbC9mb3JrLmMK
LS0tIC91c3Ivc3JjL2xpbnV4LTIuNC4yMS00LjAuMS5FTC9rZXJuZWwvZm9y
ay5jCTIwMDMtMTAtMjMgMDU6MTg6MzEuMDAwMDAwMDAwICswMDAwCisrKyBs
aW51eC0yLjQuMjEtNC4wLjEuRUwtaW50L2tlcm5lbC9mb3JrLmMJMjAwMy0x
Mi0xNCAxMDo1MzoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTkxMCw3ICs5MTAs
NyBAQAogCSAqIHRoZSBwYXJlbnQgaWYgdGhlIGNoaWxkIGV4aXRzIGVhcmx5
IGVub3VnaC4KIAkgKi8KIAljdXJyZW50LT50aW1lX3NsaWNlID4+PSAxOwot
CXAtPmxhc3RfcnVuID0gamlmZmllczsKKwlwLT50aW1lc3RhbXAgPSBzY2hl
ZF9jbG9jaygpOwogCWlmICghY3VycmVudC0+dGltZV9zbGljZSkgewogCQkv
KgogCQkgKiBUaGlzIGNhc2UgaXMgcmFyZSwgaXQgaGFwcGVucyB3aGVuIHRo
ZSBwYXJlbnQgaGFzIG9ubHkKZGlmZiAtTmF1ciAvdXNyL3NyYy9saW51eC0y
LjQuMjEtNC4wLjEuRUwva2VybmVsL3NjaGVkLmMgbGludXgtMi40LjIxLTQu
MC4xLkVMLWludC9rZXJuZWwvc2NoZWQuYwotLS0gL3Vzci9zcmMvbGludXgt
Mi40LjIxLTQuMC4xLkVML2tlcm5lbC9zY2hlZC5jCTIwMDMtMTAtMjMgMDU6
MTg6MjguMDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0yLjQuMjEtNC4wLjEu
RUwtaW50L2tlcm5lbC9zY2hlZC5jCTIwMDMtMTItMTcgMDM6MTA6NTcuMDAw
MDAwMDAwICswMDAwCkBAIC0xNCw2ICsxNCw3IEBACiAgKgkJYW4gYXJyYXkt
c3dpdGNoIG1ldGhvZCBvZiBkaXN0cmlidXRpbmcgdGltZXNsaWNlcwogICoJ
CWFuZCBwZXItQ1BVIHJ1bnF1ZXVlcy4gIENsZWFudXBzIGFuZCB1c2VmdWwg
c3VnZ2VzdGlvbnMKICAqCQlieSBEYXZpZGUgTGliZW56aSwgcHJlZW1wdGli
bGUga2VybmVsIGJpdHMgYnkgUm9iZXJ0IExvdmUuCisgKiAgMjAwMy0wOS0w
MwlJbnRlcmFjdGl2aXR5IHR1bmluZyBieSBDb24gS29saXZhcy4KICAqLwog
CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KQEAgLTUyLDYgKzUzLDE0IEBACiAj
ZGVmaW5lIFVTRVJfUFJJTyhwKQkJKChwKS1NQVhfUlRfUFJJTykKICNkZWZp
bmUgVEFTS19VU0VSX1BSSU8ocCkJVVNFUl9QUklPKChwKS0+c3RhdGljX3By
aW8pCiAjZGVmaW5lIE1BWF9VU0VSX1BSSU8JCShVU0VSX1BSSU8oTUFYX1BS
SU8pKQorI2RlZmluZSBBVkdfVElNRVNMSUNFCShNSU5fVElNRVNMSUNFICsg
KChNQVhfVElNRVNMSUNFIC0gTUlOX1RJTUVTTElDRSkgKlwKKwkJCShNQVhf
UFJJTy0xLU5JQ0VfVE9fUFJJTygwKSkvKE1BWF9VU0VSX1BSSU8gLSAxKSkp
CisKKy8qCisgKiBTb21lIGhlbHBlcnMgZm9yIGNvbnZlcnRpbmcgbmFub3Nl
Y29uZCB0aW1pbmcgdG8gamlmZnkgcmVzb2x1dGlvbgorICovCisjZGVmaW5l
IE5TX1RPX0pJRkZJRVMoVElNRSkJKChUSU1FKSAvICgxMDAwMDAwMDAwIC8g
SFopKQorI2RlZmluZSBKSUZGSUVTX1RPX05TKFRJTUUpCSgoVElNRSkgKiAo
MTAwMDAwMDAwMCAvIEhaKSkKIAogLyoKICAqIFRoZXNlIGFyZSB0aGUgJ3R1
bmluZyBrbm9icycgb2YgdGhlIHNjaGVkdWxlcjoKQEAgLTYyLDE2ICs3MSwy
MCBAQAogICovCiAjZGVmaW5lIE1JTl9USU1FU0xJQ0UJCSggMTAgKiBIWiAv
IDEwMDApCiAjZGVmaW5lIE1BWF9USU1FU0xJQ0UJCSgyMDAgKiBIWiAvIDEw
MDApCi0jZGVmaW5lIENISUxEX1BFTkFMVFkJCTUwCisjZGVmaW5lIE9OX1JV
TlFVRVVFX1dFSUdIVAkzMAorI2RlZmluZSBDSElMRF9QRU5BTFRZCQk5NQog
I2RlZmluZSBQQVJFTlRfUEVOQUxUWQkJMTAwCiAjZGVmaW5lIEVYSVRfV0VJ
R0hUCQkzCiAjZGVmaW5lIFBSSU9fQk9OVVNfUkFUSU8JMjUKKyNkZWZpbmUg
TUFYX0JPTlVTCQkoTUFYX1VTRVJfUFJJTyAqIFBSSU9fQk9OVVNfUkFUSU8g
LyAxMDApCiAjZGVmaW5lIElOVEVSQUNUSVZFX0RFTFRBCTIKLSNkZWZpbmUg
TUFYX1NMRUVQX0FWRwkJKDEwKkhaKQotI2RlZmluZSBTVEFSVkFUSU9OX0xJ
TUlUCSgxMCpIWikKKyNkZWZpbmUgTUFYX1NMRUVQX0FWRwkJKEFWR19USU1F
U0xJQ0UgKiBNQVhfQk9OVVMpCisjZGVmaW5lIFNUQVJWQVRJT05fTElNSVQJ
KE1BWF9TTEVFUF9BVkcpCisjZGVmaW5lIE5TX01BWF9TTEVFUF9BVkcJKEpJ
RkZJRVNfVE9fTlMoTUFYX1NMRUVQX0FWRykpCiAjZGVmaW5lIEFHUkVTU0lW
RV9JRExFX1NURUFMCTAKICNkZWZpbmUgQlVTWV9TVEVBTAkJMQogI2RlZmlu
ZSBOT0RFX1RIUkVTSE9MRAkJMTI1CisjZGVmaW5lIENSRURJVF9MSU1JVAkJ
MTAwCiAKIC8qCiAgKiBJZiBhIHRhc2sgaXMgJ2ludGVyYWN0aXZlJyB0aGVu
IHdlIHJlaW5zZXJ0IGl0IGluIHRoZSBhY3RpdmUKQEAgLTEwMSw2ICsxMTQs
MTkgQEAKICAqIHRvbyBoYXJkLgogICovCiAKKyNkZWZpbmUgQ1VSUkVOVF9C
T05VUyhwKSBcCisJKE5TX1RPX0pJRkZJRVMoKHApLT5zbGVlcF9hdmcpICog
TUFYX0JPTlVTIC8gXAorCQlNQVhfU0xFRVBfQVZHKQorCisjaWZkZWYgQ09O
RklHX1NNUAorI2RlZmluZSBUSU1FU0xJQ0VfR1JBTlVMQVJJVFkocCkJKE1J
Tl9USU1FU0xJQ0UgKiBcCisJCSgxIDw8ICgoKE1BWF9CT05VUyAtIENVUlJF
TlRfQk9OVVMocCkpID8gOiAxKSAtIDEpKSAqIFwKKwkJCW51bV9vbmxpbmVf
Y3B1cygpKQorI2Vsc2UKKyNkZWZpbmUgVElNRVNMSUNFX0dSQU5VTEFSSVRZ
KHApCShNSU5fVElNRVNMSUNFICogXAorCQkoMSA8PCAoKChNQVhfQk9OVVMg
LSBDVVJSRU5UX0JPTlVTKHApKSA/IDogMSkgLSAxKSkpCisjZW5kaWYKKwog
I2RlZmluZSBTQ0FMRSh2MSx2MV9tYXgsdjJfbWF4KSBcCiAJKHYxKSAqICh2
Ml9tYXgpIC8gKHYxX21heCkKIApAQCAtMTExLDYgKzEzNywxOSBAQAogI2Rl
ZmluZSBUQVNLX0lOVEVSQUNUSVZFKHApIFwKIAkoKHApLT5wcmlvIDw9IChw
KS0+c3RhdGljX3ByaW8gLSBERUxUQShwKSkKIAorI2RlZmluZSBKVVNUX0lO
VEVSQUNUSVZFX1NMRUVQKHApIFwKKwkoSklGRklFU19UT19OUyhNQVhfU0xF
RVBfQVZHICogXAorCQkoTUFYX0JPTlVTIC8gMiArIERFTFRBKChwKSkgKyAx
KSAvIE1BWF9CT05VUyAtIDEpKQorCisjZGVmaW5lIEhJR0hfQ1JFRElUKHAp
IFwKKwkoKHApLT5pbnRlcmFjdGl2ZV9jcmVkaXQgPiBDUkVESVRfTElNSVQp
CisKKyNkZWZpbmUgTE9XX0NSRURJVChwKSBcCisJKChwKS0+aW50ZXJhY3Rp
dmVfY3JlZGl0IDwgLUNSRURJVF9MSU1JVCkKKworI2RlZmluZSBUQVNLX1BS
RUVNUFRTX0NVUlIocCkgXAorCSgocCktPnByaW8gPCBDUFVfQ1VSUl9QVFIo
dGFza19jcHUocCkpLT5wcmlvKQorCiAvKgogICogQkFTRV9USU1FU0xJQ0Ug
c2NhbGVzIHVzZXItbmljZSB2YWx1ZXMgWyAtMjAgLi4uIDE5IF0KICAqIHRv
IHRpbWUgc2xpY2UgdmFsdWVzLgpAQCAtMzIzLDggKzM2Miw3IEBACiAJaWYg
KHJ0X3Rhc2socCkpCiAJCXJldHVybiBwLT5wcmlvOwogCi0JYm9udXMgPSBN
QVhfVVNFUl9QUklPKlBSSU9fQk9OVVNfUkFUSU8qcC0+c2xlZXBfYXZnL01B
WF9TTEVFUF9BVkcvMTAwIC0KLQkJCU1BWF9VU0VSX1BSSU8qUFJJT19CT05V
U19SQVRJTy8xMDAvMjsKKwlib251cyA9IENVUlJFTlRfQk9OVVMocCkgLSBN
QVhfQk9OVVMgLyAyOwogCiAJcHJpbyA9IHAtPnN0YXRpY19wcmlvIC0gYm9u
dXM7CiAJaWYgKHByaW8gPCBNQVhfUlRfUFJJTykKQEAgLTM0Myw2ICszODEs
ODIgQEAKIAlucl9ydW5uaW5nX2luYyhycSk7CiB9CiAKK3N0YXRpYyB2b2lk
IHJlY2FsY190YXNrX3ByaW8odGFza190ICpwLCB1bnNpZ25lZCBsb25nIGxv
bmcgbm93KQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyBfX3NsZWVwX3RpbWUg
PSBub3cgLSBwLT50aW1lc3RhbXA7CisJdW5zaWduZWQgbG9uZyBzbGVlcF90
aW1lOworCisJaWYgKF9fc2xlZXBfdGltZSA+IE5TX01BWF9TTEVFUF9BVkcp
CisJCXNsZWVwX3RpbWUgPSBOU19NQVhfU0xFRVBfQVZHOworCWVsc2UKKwkJ
c2xlZXBfdGltZSA9ICh1bnNpZ25lZCBsb25nKV9fc2xlZXBfdGltZTsKKwor
CWlmIChsaWtlbHkoc2xlZXBfdGltZSA+IDApKSB7CisJCS8qCisJCSAqIFVz
ZXIgdGFza3MgdGhhdCBzbGVlcCBhIGxvbmcgdGltZSBhcmUgY2F0ZWdvcmlz
ZWQgYXMKKwkJICogaWRsZSBhbmQgd2lsbCBnZXQganVzdCBpbnRlcmFjdGl2
ZSBzdGF0dXMgdG8gc3RheSBhY3RpdmUgJgorCQkgKiBwcmV2ZW50IHRoZW0g
c3VkZGVubHkgYmVjb21pbmcgY3B1IGhvZ3MgYW5kIHN0YXJ2aW5nCisJCSAq
IG90aGVyIHByb2Nlc3Nlcy4KKwkJICovCisJCWlmIChwLT5tbSAmJiBwLT5h
Y3RpdmF0ZWQgIT0gLTEgJiYKKwkJCXNsZWVwX3RpbWUgPiBKVVNUX0lOVEVS
QUNUSVZFX1NMRUVQKHApKXsKKwkJCQlwLT5zbGVlcF9hdmcgPSBKSUZGSUVT
X1RPX05TKE1BWF9TTEVFUF9BVkcgLQorCQkJCQkJQVZHX1RJTUVTTElDRSk7
CisJCQkJaWYgKCFISUdIX0NSRURJVChwKSkKKwkJCQkJcC0+aW50ZXJhY3Rp
dmVfY3JlZGl0Kys7CisJCX0gZWxzZSB7CisJCQkvKgorCQkJICogVGhlIGxv
d2VyIHRoZSBzbGVlcCBhdmcgYSB0YXNrIGhhcyB0aGUgbW9yZQorCQkJICog
cmFwaWRseSBpdCB3aWxsIHJpc2Ugd2l0aCBzbGVlcCB0aW1lLgorCQkJICov
CisJCQlzbGVlcF90aW1lICo9IChNQVhfQk9OVVMgLSBDVVJSRU5UX0JPTlVT
KHApKSA/IDogMTsKKworCQkJLyoKKwkJCSAqIFRhc2tzIHdpdGggbG93IGlu
dGVyYWN0aXZlX2NyZWRpdCBhcmUgbGltaXRlZCB0bworCQkJICogb25lIHRp
bWVzbGljZSB3b3J0aCBvZiBzbGVlcCBhdmcgYm9udXMuCisJCQkgKi8KKwkJ
CWlmIChMT1dfQ1JFRElUKHApICYmCisJCQkJc2xlZXBfdGltZSA+IEpJRkZJ
RVNfVE9fTlModGFza190aW1lc2xpY2UocCkpKQorCQkJCQlzbGVlcF90aW1l
ID0KKwkJCQkJCUpJRkZJRVNfVE9fTlModGFza190aW1lc2xpY2UocCkpOwor
CisJCQkvKgorCQkJICogTm9uIGhpZ2hfY3JlZGl0IHRhc2tzIHdha2luZyBm
cm9tIHVuaW50ZXJydXB0aWJsZQorCQkJICogc2xlZXAgYXJlIGxpbWl0ZWQg
aW4gdGhlaXIgc2xlZXBfYXZnIHJpc2UgYXMgdGhleQorCQkJICogYXJlIGxp
a2VseSB0byBiZSBjcHUgaG9ncyB3YWl0aW5nIG9uIEkvTworCQkJICovCisJ
CQlpZiAocC0+YWN0aXZhdGVkID09IC0xICYmICFISUdIX0NSRURJVChwKSAm
JiBwLT5tbSl7CisJCQkJaWYgKHAtPnNsZWVwX2F2ZyA+PSBKVVNUX0lOVEVS
QUNUSVZFX1NMRUVQKHApKQorCQkJCQlzbGVlcF90aW1lID0gMDsKKwkJCQll
bHNlIGlmIChwLT5zbGVlcF9hdmcgKyBzbGVlcF90aW1lID49CisJCQkJCUpV
U1RfSU5URVJBQ1RJVkVfU0xFRVAocCkpeworCQkJCQkJcC0+c2xlZXBfYXZn
ID0KKwkJCQkJCQlKVVNUX0lOVEVSQUNUSVZFX1NMRUVQKHApOworCQkJCQkJ
c2xlZXBfdGltZSA9IDA7CisJCQkJCX0KKwkJCX0KKworCQkJLyoKKwkJCSAq
IFRoaXMgY29kZSBnaXZlcyBhIGJvbnVzIHRvIGludGVyYWN0aXZlIHRhc2tz
LgorCQkJICoKKwkJCSAqIFRoZSBib29zdCB3b3JrcyBieSB1cGRhdGluZyB0
aGUgJ2F2ZXJhZ2Ugc2xlZXAgdGltZScKKwkJCSAqIHZhbHVlIGhlcmUsIGJh
c2VkIG9uIC0+dGltZXN0YW1wLiBUaGUgbW9yZSB0aW1lIGEgdGFzaworCQkJ
ICogc3BlbmRzIHNsZWVwaW5nLCB0aGUgaGlnaGVyIHRoZSBhdmVyYWdlIGdl
dHMgLSBhbmQgdGhlCisJCQkgKiBoaWdoZXIgdGhlIHByaW9yaXR5IGJvb3N0
IGdldHMgYXMgd2VsbC4KKwkJCSAqLworCQkJcC0+c2xlZXBfYXZnICs9IHNs
ZWVwX3RpbWU7CisKKwkJCWlmIChwLT5zbGVlcF9hdmcgPiBOU19NQVhfU0xF
RVBfQVZHKXsKKwkJCQlwLT5zbGVlcF9hdmcgPSBOU19NQVhfU0xFRVBfQVZH
OworCQkJCWlmICghSElHSF9DUkVESVQocCkpCisJCQkJCXAtPmludGVyYWN0
aXZlX2NyZWRpdCsrOworCQkJfQorCQl9CisJfQorCisJcC0+cHJpbyA9IGVm
ZmVjdGl2ZV9wcmlvKHApOworfQorCiAvKgogICogYWN0aXZhdGVfdGFzayAt
IG1vdmUgYSB0YXNrIHRvIHRoZSBydW5xdWV1ZSBhbmQgZG8gcHJpb3JpdHkg
cmVjYWxjdWxhdGlvbgogICoKQEAgLTM1MSwzNSArNDY1LDM0IEBACiAgKi8K
IHN0YXRpYyBpbmxpbmUgaW50IGFjdGl2YXRlX3Rhc2sodGFza190ICpwLCBy
dW5xdWV1ZV90ICpycSkKIHsKLQlsb25nIHNsZWVwX3RpbWUgPSBqaWZmaWVz
IC0gcC0+bGFzdF9ydW4gLSAxOworCXVuc2lnbmVkIGxvbmcgbG9uZyBub3cg
PSBzY2hlZF9jbG9jaygpOwogCWludCByZXF1ZXVlX3dha2VyID0gMDsKIAot
CWlmIChzbGVlcF90aW1lID4gMCkgewotCQlpbnQgc2xlZXBfYXZnOwotCi0J
CS8qCi0JCSAqIFRoaXMgY29kZSBnaXZlcyBhIGJvbnVzIHRvIGludGVyYWN0
aXZlIHRhc2tzLgotCQkgKgotCQkgKiBUaGUgYm9vc3Qgd29ya3MgYnkgdXBk
YXRpbmcgdGhlICdhdmVyYWdlIHNsZWVwIHRpbWUnCi0JCSAqIHZhbHVlIGhl
cmUsIGJhc2VkIG9uIC0+bGFzdF9ydW4uIFRoZSBtb3JlIHRpbWUgYSB0YXNr
Ci0JCSAqIHNwZW5kcyBzbGVlcGluZywgdGhlIGhpZ2hlciB0aGUgYXZlcmFn
ZSBnZXRzIC0gYW5kIHRoZQotCQkgKiBoaWdoZXIgdGhlIHByaW9yaXR5IGJv
b3N0IGdldHMgYXMgd2VsbC4KLQkJICovCi0JCXNsZWVwX2F2ZyA9IHAtPnNs
ZWVwX2F2ZyArIHNsZWVwX3RpbWU7Ci0KLQkJLyoKLQkJICogJ092ZXJmbG93
JyBib251cyB0aWNrcyBnbyB0byB0aGUgd2FrZXIgYXMgd2VsbCwgc28gdGhl
Ci0JCSAqIHRpY2tzIGFyZSBub3QgbG9zdC4gVGhpcyBoYXMgdGhlIGVmZmVj
dCBvZiBmdXJ0aGVyCi0JCSAqIGJvb3N0aW5nIHRhc2tzIHRoYXQgYXJlIHJl
bGF0ZWQgdG8gbWF4aW11bS1pbnRlcmFjdGl2ZQotCQkgKiB0YXNrcy4KLQkJ
ICovCi0JCWlmIChzbGVlcF9hdmcgPiBNQVhfU0xFRVBfQVZHKQotCQkJc2xl
ZXBfYXZnID0gTUFYX1NMRUVQX0FWRzsKLQkJaWYgKHAtPnNsZWVwX2F2ZyAh
PSBzbGVlcF9hdmcpIHsKLQkJCXAtPnNsZWVwX2F2ZyA9IHNsZWVwX2F2ZzsK
LQkJCXAtPnByaW8gPSBlZmZlY3RpdmVfcHJpbyhwKTsKLQkJfQotCX0KKwly
ZWNhbGNfdGFza19wcmlvKHAsIG5vdyk7CisgIAorCS8qCisJICogVGhpcyBj
aGVja3MgdG8gbWFrZSBzdXJlIGl0J3Mgbm90IGFuIHVuaW50ZXJydXB0aWJs
ZSB0YXNrCisJICogdGhhdCBpcyBub3cgd2FraW5nIHVwLgorCSAqLworCWlm
ICghcC0+YWN0aXZhdGVkKXsKKyAJCS8qCisJCSAqIFRhc2tzIHdoaWNoIHdl
cmUgd29rZW4gdXAgYnkgaW50ZXJydXB0cyAoaWUuIGh3IGV2ZW50cykKKwkJ
ICogYXJlIG1vc3QgbGlrZWx5IG9mIGludGVyYWN0aXZlIG5hdHVyZS4gU28g
d2UgZ2l2ZSB0aGVtCisJCSAqIHRoZSBjcmVkaXQgb2YgZXh0ZW5kaW5nIHRo
ZWlyIHNsZWVwIHRpbWUgdG8gdGhlIHBlcmlvZAorCQkgKiBvZiB0aW1lIHRo
ZXkgc3BlbmQgb24gdGhlIHJ1bnF1ZXVlLCB3YWl0aW5nIGZvciBleGVjdXRp
b24KKwkJICogb24gYSBDUFUsIGZpcnN0IHRpbWUgYXJvdW5kOgorIAkJICov
CisJCWlmIChpbl9pbnRlcnJ1cHQoKSkKKwkJCXAtPmFjdGl2YXRlZCA9IDI7
CisJCWVsc2UKKyAJCS8qCisJCSAqIE5vcm1hbCBmaXJzdC10aW1lIHdha2V1
cHMgZ2V0IGEgY3JlZGl0IHRvbyBmb3Igb24tcnVucXVldWUKKwkJICogdGlt
ZSwgYnV0IGl0IHdpbGwgYmUgd2VpZ2h0ZWQgZG93bjoKKyAJCSAqLworCQkJ
cC0+YWN0aXZhdGVkID0gMTsKKyAJCX0KKwlwLT50aW1lc3RhbXAgPSBub3c7
CisgCiAJX19hY3RpdmF0ZV90YXNrKHAsIHJxKTsKIAogCXJldHVybiByZXF1
ZXVlX3dha2VyOwpAQCAtNTQyLDEzICs2NTUsMjEgQEAKIAkJCQl0YXNrX3Jx
X3VubG9jayhycSwgJmZsYWdzKTsKIAkJCQlnb3RvIHJlcGVhdF9sb2NrX3Rh
c2s7CiAJCQl9Ci0JCQlpZiAob2xkX3N0YXRlID09IFRBU0tfVU5JTlRFUlJV
UFRJQkxFKQorCQkJaWYgKG9sZF9zdGF0ZSA9PSBUQVNLX1VOSU5URVJSVVBU
SUJMRSl7CiAJCQkJcnEtPm5yX3VuaW50ZXJydXB0aWJsZS0tOworCQkJCS8q
CisJCQkJICogVGFza3Mgb24gaW52b2x1bnRhcnkgc2xlZXAgZG9uJ3QgZWFy
bgorCQkJCSAqIHNsZWVwX2F2ZyBiZXlvbmQganVzdCBpbnRlcmFjdGl2ZSBz
dGF0ZS4KKwkJCQkgKi8KKwkJCQlwLT5hY3RpdmF0ZWQgPSAtMTsKKwkJCX0K
IAkJCWlmIChzeW5jKQogCQkJCV9fYWN0aXZhdGVfdGFzayhwLCBycSk7CiAJ
CQllbHNlIHsKIAkJCQlyZXF1ZXVlX3dha2VyID0gYWN0aXZhdGVfdGFzayhw
LCBycSk7CiAJCQkJd2FrZV91cF9jcHUocnEsIHRhc2tfY3B1KHApLCBwKTsK
KwkJCQlpZiAoVEFTS19QUkVFTVBUU19DVVJSKHApKQorCQkJCQlyZXNjaGVk
X3Rhc2soY3B1X2N1cnJfcHRyKHRhc2tfY3B1KHApKSk7CiAJCQl9CiAJCQlz
dWNjZXNzID0gMTsKIAkJfQpAQCAtNjEyLDggKzczMywxNCBAQAogCSAqIGFu
ZCBjaGlsZHJlbiBhcyB3ZWxsLCB0byBrZWVwIG1heC1pbnRlcmFjdGl2ZSB0
YXNrcwogCSAqIGZyb20gZm9ya2luZyB0YXNrcyB0aGF0IGFyZSBtYXgtaW50
ZXJhY3RpdmUuCiAJICovCi0JY3VycmVudC0+c2xlZXBfYXZnID0gY3VycmVu
dC0+c2xlZXBfYXZnICogUEFSRU5UX1BFTkFMVFkgLyAxMDA7Ci0JcC0+c2xl
ZXBfYXZnID0gcC0+c2xlZXBfYXZnICogQ0hJTERfUEVOQUxUWSAvIDEwMDsK
KwljdXJyZW50LT5zbGVlcF9hdmcgPSBKSUZGSUVTX1RPX05TKENVUlJFTlRf
Qk9OVVMoY3VycmVudCkgKgorCQlQQVJFTlRfUEVOQUxUWSAvIDEwMCAqIE1B
WF9TTEVFUF9BVkcgLyBNQVhfQk9OVVMpOworCisJcC0+c2xlZXBfYXZnID0g
SklGRklFU19UT19OUyhDVVJSRU5UX0JPTlVTKHApICoKKwkJQ0hJTERfUEVO
QUxUWSAvIDEwMCAqIE1BWF9TTEVFUF9BVkcgLyBNQVhfQk9OVVMpOworCisJ
cC0+aW50ZXJhY3RpdmVfY3JlZGl0ID0gMDsKKwogCXAtPnByaW8gPSBlZmZl
Y3RpdmVfcHJpbyhwKTsKIAlzZXRfdGFza19jcHUocCwgc21wX3Byb2Nlc3Nv
cl9pZCgpKTsKIApAQCAtNjU0LDggKzc4MSw5IEBACiAJICogdGhlIHNsZWVw
X2F2ZyBvZiB0aGUgcGFyZW50IGFzIHdlbGwuCiAJICovCiAJaWYgKHAtPnNs
ZWVwX2F2ZyA8IHAtPnBhcmVudC0+c2xlZXBfYXZnKQotCQlwLT5wYXJlbnQt
PnNsZWVwX2F2ZyA9IChwLT5wYXJlbnQtPnNsZWVwX2F2ZyAqIEVYSVRfV0VJ
R0hUICsKLQkJCXAtPnNsZWVwX2F2ZykgLyAoRVhJVF9XRUlHSFQgKyAxKTsK
KwkJcC0+cGFyZW50LT5zbGVlcF9hdmcgPSBwLT5wYXJlbnQtPnNsZWVwX2F2
ZyAvCisJCShFWElUX1dFSUdIVCArIDEpICogRVhJVF9XRUlHSFQgKyBwLT5z
bGVlcF9hdmcgLworCQkoRVhJVF9XRUlHSFQgKyAxKTsKIH0KIAogLyoqCkBA
IC05NDgsNiArMTA3NiwzNSBAQAogCW5yX3J1bm5pbmdfaW5jKHRoaXNfcnEp
OwogCWVucXVldWVfdGFzayhwLCB0aGlzX3JxLT5hY3RpdmUpOwogCXdha2Vf
dXBfY3B1KHRoaXNfcnEsIHRoaXNfY3B1LCBwKTsKKyAJLyoKKyAJICogTm90
ZSB0aGF0IGlkbGUgdGhyZWFkcyBoYXZlIGEgcHJpbyBvZiBNQVhfUFJJTywg
Zm9yIHRoaXMgdGVzdAorIAkgKiB0byBiZSBhbHdheXMgdHJ1ZSBmb3IgdGhl
bS4KKyAJICovCisJaWYgKFRBU0tfUFJFRU1QVFNfQ1VSUihwKSkKKyAJCXNl
dF9uZWVkX3Jlc2NoZWQoKTsKK30KKworLyoKKyAqIFByZXZpb3VzbHk6Cisg
KgorICogI2RlZmluZSBDQU5fTUlHUkFURV9UQVNLKHAscnEsdGhpc19jcHUp
CVwKKyAqCSgoIWlkbGUgfHwgKE5TX1RPX0pJRkZJRVMobm93IC0gKHApLT50
aW1lc3RhbXApID4gXAorICoJCWNhY2hlX2RlY2F5X3RpY2tzKSkgJiYgIXRh
c2tfcnVubmluZyhycSwgcCkgJiYgXAorICoJCQljcHVfaXNzZXQodGhpc19j
cHUsIChwKS0+Y3B1c19hbGxvd2VkKSkKKyAqLworIAorc3RhdGljIGlubGlu
ZSBpbnQKK2Nhbl9taWdyYXRlX3Rhc2sodGFza190ICp0c2ssIHJ1bnF1ZXVl
X3QgKnJxLCBpbnQgdGhpc19jcHUsIGludCBpZGxlKQoreworCXVuc2lnbmVk
IGxvbmcgZGVsdGEgPSBzY2hlZF9jbG9jaygpIC0gdHNrLT50aW1lc3RhbXA7
CisKKwlpZiAoaWRsZSAmJiAoZGVsdGEgPD0gSklGRklFU19UT19OUyhjYWNo
ZV9kZWNheV90aWNrcykpKQorCQlyZXR1cm4gMDsKKwlpZiAodGFza19ydW5u
aW5nKHRzaykpCisJCXJldHVybiAwOworCWlmICghY3B1X2lzc2V0KHRoaXNf
Y3B1LCB0c2stPmNwdXNfYWxsb3dlZCkpCisJCXJldHVybiAwOworCXJldHVy
biAxOwogfQogCiAvKgpAQCAtMTAxMywxNCArMTE3MCw5IEBACiAJICogIGZv
cm0gb2YgcmViYWxhbmNpbmcuKQogCSAqLwogCi0jZGVmaW5lIENBTl9NSUdS
QVRFX1RBU0socCxycSxjcHUpCQlcCi0JKCgoKCFpZGxlICYmIEJVU1lfU1RF
QUwpIHx8IChpZGxlICYmIEFHUkVTU0lWRV9JRExFX1NURUFMKSkgfHwJXAot
CQkoamlmZmllcyAtIChwKS0+bGFzdF9ydW4gPiBjYWNoZV9kZWNheV90aWNr
cykpICYmIFwKLQkJCSF0YXNrX3J1bm5pbmcocCkgJiYgdGFza19hbGxvd2Vk
KHAsIGNwdSkpCi0KIAljdXJyID0gY3Vyci0+cHJldjsKIAotCWlmICghQ0FO
X01JR1JBVEVfVEFTSyh0bXAsIGJ1c2llc3QsIHRoaXNfY3B1KSkgeworCWlm
ICghY2FuX21pZ3JhdGVfdGFzayh0bXAsIGJ1c2llc3QsIHRoaXNfY3B1LCBp
ZGxlKSkgewogCQlpZiAoY3VyciAhPSBoZWFkKQogCQkJZ290byBza2lwX3F1
ZXVlOwogCQlpZHgrKzsKQEAgLTEyOTgsMTQgKzE0NTAsMTEgQEAKIAl9CiAJ
LyoKIAkgKiBUaGUgdGFzayB3YXMgcnVubmluZyBkdXJpbmcgdGhpcyB0aWNr
IC0gdXBkYXRlIHRoZQotCSAqIHRpbWUgc2xpY2UgY291bnRlciBhbmQgdGhl
IHNsZWVwIGF2ZXJhZ2UuIE5vdGU6IHdlCi0JICogZG8gbm90IHVwZGF0ZSBh
IHRocmVhZCdzIHByaW9yaXR5IHVudGlsIGl0IGVpdGhlcgotCSAqIGdvZXMg
dG8gc2xlZXAgb3IgdXNlcyB1cCBpdHMgdGltZXNsaWNlLiBUaGlzIG1ha2Vz
Ci0JICogaXQgcG9zc2libGUgZm9yIGludGVyYWN0aXZlIHRhc2tzIHRvIHVz
ZSB1cCB0aGVpcgotCSAqIHRpbWVzbGljZXMgYXQgdGhlaXIgaGlnaGVzdCBw
cmlvcml0eSBsZXZlbHMuCisJICogdGltZSBzbGljZSBjb3VudGVyLiBOb3Rl
OiB3ZSBkbyBub3QgdXBkYXRlIGEgdGhyZWFkJ3MKKwkgKiBwcmlvcml0eSB1
bnRpbCBpdCBlaXRoZXIgZ29lcyB0byBzbGVlcCBvciB1c2VzIHVwIGl0cwor
CSAqIHRpbWVzbGljZS4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgaW50
ZXJhY3RpdmUgdGFza3MKKwkgKiB0byB1c2UgdXAgdGhlaXIgdGltZXNsaWNl
cyBhdCB0aGVpciBoaWdoZXN0IHByaW9yaXR5IGxldmVscy4KIAkgKi8KLQlp
ZiAocC0+c2xlZXBfYXZnKQotCQlwLT5zbGVlcF9hdmctLTsKIAlpZiAodW5s
aWtlbHkocnRfdGFzayhwKSkpIHsKIAkJLyoKIAkJICogUlIgdGFza3MgbmVl
ZCBhIHNwZWNpYWwgZm9ybSBvZiB0aW1lc2xpY2UgbWFuYWdlbWVudC4KQEAg
LTEzMjksMTIgKzE0NzgsMzkgQEAKIAkJcC0+dGltZV9zbGljZSA9IHRhc2tf
dGltZXNsaWNlKHApOwogCQlwLT5maXJzdF90aW1lX3NsaWNlID0gMDsKIAor
CQlpZiAoIXJxLT5leHBpcmVkX3RpbWVzdGFtcCkKKwkJCXJxLT5leHBpcmVk
X3RpbWVzdGFtcCA9IGppZmZpZXM7CiAJCWlmICghVEFTS19JTlRFUkFDVElW
RShwKSB8fCBFWFBJUkVEX1NUQVJWSU5HKHJxKSkgewotCQkJaWYgKCFycS0+
ZXhwaXJlZF90aW1lc3RhbXApCi0JCQkJcnEtPmV4cGlyZWRfdGltZXN0YW1w
ID0gajsKIAkJCWVucXVldWVfdGFzayhwLCBycS0+ZXhwaXJlZCk7CiAJCX0g
ZWxzZQogCQkJZW5xdWV1ZV90YXNrKHAsIHJxLT5hY3RpdmUpOworCX0gZWxz
ZSB7CisJCS8qCisJCSAqIFByZXZlbnQgYSB0b28gbG9uZyB0aW1lc2xpY2Ug
YWxsb3dpbmcgYSB0YXNrIHRvIG1vbm9wb2xpemUKKwkJICogdGhlIENQVS4g
V2UgZG8gdGhpcyBieSBzcGxpdHRpbmcgdXAgdGhlIHRpbWVzbGljZSBpbnRv
CisJCSAqIHNtYWxsZXIgcGllY2VzLgorCQkgKgorCQkgKiBOb3RlOiB0aGlz
IGRvZXMgbm90IG1lYW4gdGhlIHRhc2sncyB0aW1lc2xpY2VzIGV4cGlyZSBv
cgorCQkgKiBnZXQgbG9zdCBpbiBhbnkgd2F5LCB0aGV5IGp1c3QgbWlnaHQg
YmUgcHJlZW1wdGVkIGJ5CisJCSAqIGFub3RoZXIgdGFzayBvZiBlcXVhbCBw
cmlvcml0eS4gKG9uZSB3aXRoIGhpZ2hlcgorCQkgKiBwcmlvcml0eSB3b3Vs
ZCBoYXZlIHByZWVtcHRlZCB0aGlzIHRhc2sgYWxyZWFkeS4pIFdlCisJCSAq
IHJlcXVldWUgdGhpcyB0YXNrIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qgb24g
dGhpcyBwcmlvcml0eQorCQkgKiBsZXZlbCwgd2hpY2ggaXMgaW4gZXNzZW5j
ZSBhIHJvdW5kLXJvYmluIG9mIHRhc2tzIHdpdGgKKwkJICogZXF1YWwgcHJp
b3JpdHkuCisJCSAqCisJCSAqIFRoaXMgb25seSBhcHBsaWVzIHRvIHRhc2tz
IGluIHRoZSBpbnRlcmFjdGl2ZQorCQkgKiBkZWx0YSByYW5nZSB3aXRoIGF0
IGxlYXN0IFRJTUVTTElDRV9HUkFOVUxBUklUWSB0byByZXF1ZXVlLgorCQkg
Ki8KKwkJaWYgKFRBU0tfSU5URVJBQ1RJVkUocCkgJiYgISgodGFza190aW1l
c2xpY2UocCkgLQorCQkJcC0+dGltZV9zbGljZSkgJSBUSU1FU0xJQ0VfR1JB
TlVMQVJJVFkocCkpICYmCisJCQkocC0+dGltZV9zbGljZSA+PSBUSU1FU0xJ
Q0VfR1JBTlVMQVJJVFkocCkpICYmCisJCQkocC0+YXJyYXkgPT0gcnEtPmFj
dGl2ZSkpIHsKKworCQkJZGVxdWV1ZV90YXNrKHAsIHJxLT5hY3RpdmUpOwor
CQkJc2V0X3Rza19uZWVkX3Jlc2NoZWQocCk7CisJCQlwLT5wcmlvID0gZWZm
ZWN0aXZlX3ByaW8ocCk7CisJCQllbnF1ZXVlX3Rhc2socCwgcnEtPmFjdGl2
ZSk7CisJCX0KIAl9CiBvdXQ6CiAJc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsK
QEAgLTEzNTMsMTYgKzE1MjksMzEgQEAKIAl0YXNrX3QgKnByZXYsICpuZXh0
OwogCXByaW9fYXJyYXlfdCAqYXJyYXk7CiAJcnVucXVldWVfdCAqcnE7CisJ
dW5zaWduZWQgbG9uZyBsb25nIG5vdzsKKwl1bnNpZ25lZCBsb25nIHJ1bl90
aW1lOwogCiAJQlVHX09OKGluX2ludGVycnVwdCgpKTsKIAogbmVlZF9yZXNj
aGVkOgotCXByZXYgPSBjdXJyZW50OwogCXRoaXNfY3B1ID0gc21wX3Byb2Nl
c3Nvcl9pZCgpOworCXByZXYgPSBjdXJyZW50OwogCXJxID0gdGhpc19ycSgp
OwogCiAJcmVsZWFzZV9rZXJuZWxfbG9jayhwcmV2LCB0aGlzX2NwdSk7Ci0J
cHJldi0+bGFzdF9ydW4gPSBqaWZmaWVzOworCW5vdyA9IHNjaGVkX2Nsb2Nr
KCk7CisJaWYgKGxpa2VseShub3cgLSBwcmV2LT50aW1lc3RhbXAgPCBOU19N
QVhfU0xFRVBfQVZHKSkKKwkJcnVuX3RpbWUgPSBub3cgLSBwcmV2LT50aW1l
c3RhbXA7CisJZWxzZQorCQlydW5fdGltZSA9IE5TX01BWF9TTEVFUF9BVkc7
CisKKwkvKgorCSAqIFRhc2tzIHdpdGggaW50ZXJhY3RpdmUgY3JlZGl0cyBn
ZXQgY2hhcmdlZCBsZXNzIHJ1bl90aW1lCisJICogYXQgaGlnaCBzbGVlcF9h
dmcgdG8gZGVsYXkgdGhlbSBsb3NpbmcgdGhlaXIgaW50ZXJhY3RpdmUKKwkg
KiBzdGF0dXMKKwkgKi8KKwlpZiAoSElHSF9DUkVESVQocHJldikpCisJCXJ1
bl90aW1lIC89IChDVVJSRU5UX0JPTlVTKHByZXYpID8gOiAxKTsKKwogCXNw
aW5fbG9ja19pcnEoJnJxLT5sb2NrKTsKIAogCXN3aXRjaCAocHJldi0+c3Rh
dGUpIHsKQEAgLTE0MzYsMTEgKzE2MjcsMzIgQEAKIAkJfQogCX0KIAorCWlm
IChuZXh0LT5hY3RpdmF0ZWQgPiAwKSB7CisJCXVuc2lnbmVkIGxvbmcgbG9u
ZyBkZWx0YSA9IG5vdyAtIG5leHQtPnRpbWVzdGFtcDsKKworCQlpZiAobmV4
dC0+YWN0aXZhdGVkID09IDEpCisJCQlkZWx0YSA9IGRlbHRhICogKE9OX1JV
TlFVRVVFX1dFSUdIVCAqIDEyOCAvIDEwMCkgLyAxMjg7CisKKwkJYXJyYXkg
PSBuZXh0LT5hcnJheTsKKwkJZGVxdWV1ZV90YXNrKG5leHQsIGFycmF5KTsK
KwkJcmVjYWxjX3Rhc2tfcHJpbyhuZXh0LCBuZXh0LT50aW1lc3RhbXAgKyBk
ZWx0YSk7CisJCWVucXVldWVfdGFzayhuZXh0LCBhcnJheSk7CisJfQorCW5l
eHQtPmFjdGl2YXRlZCA9IDA7CiBzd2l0Y2hfdGFza3M6CiAJcHJlZmV0Y2go
bmV4dCk7CiAJY2xlYXJfdHNrX25lZWRfcmVzY2hlZChwcmV2KTsKIAorCXBy
ZXYtPnNsZWVwX2F2ZyAtPSBydW5fdGltZTsKKwlpZiAoKGxvbmcpcHJldi0+
c2xlZXBfYXZnIDw9IDApeworCQlwcmV2LT5zbGVlcF9hdmcgPSAwOworCQlp
ZiAoIShISUdIX0NSRURJVChwcmV2KSB8fCBMT1dfQ1JFRElUKHByZXYpKSkK
KwkJCXByZXYtPmludGVyYWN0aXZlX2NyZWRpdC0tOworCX0KKwlwcmV2LT50
aW1lc3RhbXAgPSBub3c7CisKIAlpZiAobGlrZWx5KHByZXYgIT0gbmV4dCkp
IHsKKwkJbmV4dC0+dGltZXN0YW1wID0gbm93OwogCQlycS0+bnJfc3dpdGNo
ZXMrKzsKIAkJaWYgKHByb2Nlc3NfdGltaW5nLnRhc2tfc3dpdGNoKQogCQkJ
cHJvY2Vzc190aW1pbmcudGFza19zd2l0Y2gocHJldiwgbmV4dCk7CkBAIC0x
NjY3LDYgKzE4NzksNyBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJcHJp
b19hcnJheV90ICphcnJheTsKIAlydW5xdWV1ZV90ICpycTsKKwlpbnQgb2xk
X3ByaW8sIG5ld19wcmlvLCBkZWx0YTsKIAogCWlmIChUQVNLX05JQ0UocCkg
PT0gbmljZSB8fCBuaWNlIDwgLTIwIHx8IG5pY2UgPiAxOSkKIAkJcmV0dXJu
OwpAQCAtMTY3NSw2ICsxODg4LDEyIEBACiAJICogdGhlIHRhc2sgbWlnaHQg
YmUgaW4gdGhlIG1pZGRsZSBvZiBzY2hlZHVsaW5nIG9uIGFub3RoZXIgQ1BV
LgogCSAqLwogCXJxID0gdGFza19ycV9sb2NrKHAsICZmbGFncyk7CisJLyoK
KwkgKiBUaGUgUlQgcHJpb3JpdGllcyBhcmUgc2V0IHZpYSBzZXRzY2hlZHVs
ZXIoKSwgYnV0IHdlIHN0aWxsCisJICogYWxsb3cgdGhlICdub3JtYWwnIG5p
Y2UgdmFsdWUgdG8gYmUgc2V0IC0gYnV0IGFzIGV4cGVjdGVkCisJICogaXQg
d29udCBoYXZlIGFueSBlZmZlY3Qgb24gc2NoZWR1bGluZyB1bnRpbCB0aGUg
dGFzayBpcworCSAqIG5vdCBTQ0hFRF9OT1JNQUw6CisJICovCiAJaWYgKHJ0
X3Rhc2socCkpIHsKIAkJcC0+c3RhdGljX3ByaW8gPSBOSUNFX1RPX1BSSU8o
bmljZSk7CiAJCWdvdG8gb3V0X3VubG9jazsK

------------=_1071735034-1742-0--