patch for SLES 10 SP2

Lino Sanfilippo <[email protected]> Tue, 07 Jul 2009 17:13:23 +0200
Newsgroups gmane.linux.dazuko.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------060807020802090205070005
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



Geschäftsführender Gesellschafter: Tjark Auerbach
Sitz der Gesellschaft: Tettnang
Handelsregister: Amtsgericht Ulm, HRB 630992
ALLGEMEINE GESCHÄFTSBEDINGUNGEN
Es gelten unsere Allgemeinen Geschäftsbedingungen
(AGB). Sie finden sie in der jeweils gültigen Fassung
im Internet unter http://www.avira.de/agb
***************************************************
--------------060807020802090205070005
Content-Type: text/plain;
 name="patch_SLES10SP2"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="patch_SLES10SP2"

ZGlmZiAteCBDVlMgLXJ1cCBkYXp1a29mcy0zLjAuMC9DSEFOR0VMT0cgZGF6dWtvZnMtMy4w
LjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIvQ0hBTkdFTE9HCi0tLSBkYXp1a29mcy0zLjAuMC9D
SEFOR0VMT0cJMjAwOS0wMi0yMiAxNzo1MToyMi4wMDAwMDAwMDAgKzAxMDAKKysrIGRhenVr
b2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AyL0NIQU5HRUxPRwkyMDA5LTAyLTA2IDE3
OjQ4OjIxLjAwMDAwMDAwMCArMDEwMApAQCAtMiwxMSArMiw2IEBACiAgRGF6dWtvRlMgQ0hB
TkdFTE9HCiA9PT09PT09PT09PT09PT09PT09PQogCi0zLjAuMCAoMjAwOS0wMi0yMikKLS0g
YWRkZWQgZGVmaW5lIGZvciB2ZXJzaW9uIG51bWJlciBvdXRwdXQKLS0gYWRkZWQgcGF0Y2hl
cyBmb3IgdmFyaW91cyBvdGhlciBrZXJuZWxzCi0KLQogMy4wLjAtcmM0ICgyMDA4LTExLTMw
KQogLSBmaXggaW5jb3JyZWN0IGRlbnRyeS92ZnNtbnQgcmVmZXJlbmNpbmcgd2hlbiBhY2Nl
c3MgZGVuaWVkCiAtIGZpeCBpbXByb3BlciBjbGVhbnVwIGluIHNldmVyYWwgZXJyb3IgaGFu
ZGxpbmcgY29uZGl0aW9ucwpkaWZmIC14IENWUyAtcnVwIGRhenVrb2ZzLTMuMC4wL2N0cmxf
ZGV2LmMgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIvY3RybF9kZXYuYwot
LS0gZGF6dWtvZnMtMy4wLjAvY3RybF9kZXYuYwkyMDA5LTAyLTIyIDE3OjQ1OjIwLjAwMDAw
MDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIvY3Ry
bF9kZXYuYwkyMDA5LTAyLTA2IDE4OjI3OjQzLjAwMDAwMDAwMCArMDEwMApAQCAtMjEsNyAr
MjEsOCBAQAogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2Zz
Lmg+CiAjaW5jbHVkZSA8bGludXgvY2Rldi5oPgotI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3Mu
aD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxhc20v
dWFjY2Vzcy5oPgogCiAjaW5jbHVkZSAiZXZlbnQuaCIKICNpbmNsdWRlICJkZXYuaCIKQEAg
LTE1OCw3ICsxNTksMTEgQEAgc3RhdGljIHNzaXplX3QgZGF6dWtvZnNfY3RybF93cml0ZShz
dHJ1YwogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgY2RldiBjdHJsX2NkZXY7
CitzdGF0aWMgc3RydWN0IHsKKwlzdHJ1Y3QgY2RldiBjZGV2OworCXN0cnVjdCBkZXZpY2Ug
ZGV2OworCXN0cnVjdCBjbGFzc19kZXZpY2UgY2xzX2RldjsKK30gY3RybF9kZXY7CiAKIHN0
YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGN0cmxfZm9wcyA9IHsKIAkub3duZXIJCT0g
VEhJU19NT0RVTEUsCkBAIC0xNjgsMzggKzE3Myw2NyBAQCBzdGF0aWMgc3RydWN0IGZpbGVf
b3BlcmF0aW9ucyBjdHJsX2ZvcHMgCiAJLndyaXRlCQk9IGRhenVrb2ZzX2N0cmxfd3JpdGUs
CiB9OwogCitzdGF0aWMgdm9pZCBkYXp1a29mc19jdHJsX2NsYXNzX2Rldl9yZWxlYXNlKHN0
cnVjdCBjbGFzc19kZXZpY2UgKmRldikKK3sKKwkvLyBub3RoaW5nCit9CisKK3N0YXRpYyB2
b2lkIGRhenVrb2ZzX2N0cmxfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQorewor
CS8vIG5vdGhpbmcKK30KKwogaW50IGRhenVrb2ZzX2N0cmxfZGV2X2luaXQoaW50IGRldl9t
YWpvciwgaW50IGRldl9taW5vciwKIAkJCSAgIHN0cnVjdCBjbGFzcyAqZGF6dWtvZnNfY2xh
c3MpCiB7CiAJaW50IGVyciA9IDA7Ci0Jc3RydWN0IGRldmljZSAqZGV2OworCWRldl90IGRl
dnQ7CisKKwlkZXZ0ID0gTUtERVYoZGV2X21ham9yLCBkZXZfbWlub3IpOwogCiAJLyogc2V0
dXAgY2RldiBmb3IgY29udHJvbCAqLwotCWNkZXZfaW5pdCgmY3RybF9jZGV2LCAmY3RybF9m
b3BzKTsKLQljdHJsX2NkZXYub3duZXIgPSBUSElTX01PRFVMRTsKLQllcnIgPSBjZGV2X2Fk
ZCgmY3RybF9jZGV2LCBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5vciksIDEpOworCWNkZXZf
aW5pdCgmY3RybF9kZXYuY2RldiwgJmN0cmxfZm9wcyk7CisJY3RybF9kZXYuY2Rldi5vd25l
ciA9IFRISVNfTU9EVUxFOworCWVyciA9IGNkZXZfYWRkKCZjdHJsX2Rldi5jZGV2LCBkZXZ0
LCAxKTsKIAlpZiAoZXJyKQotCQlnb3RvIGVycm9yX291dDE7CisJCXJldHVybiBlcnI7CiAK
LQkvKiBjcmVhdGUgY29udHJvbCBkZXZpY2UgKi8KLQlkZXYgPSBkZXZpY2VfY3JlYXRlKGRh
enVrb2ZzX2NsYXNzLCBOVUxMLCBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5vciksCi0JCQkg
ICAgTlVMTCwgIiVzLmN0cmwiLCBERVZJQ0VfTkFNRSk7Ci0JaWYgKElTX0VSUihkZXYpKSB7
Ci0JCWVyciA9IFBUUl9FUlIoZGV2KTsKLQkJZ290byBlcnJvcl9vdXQyOwotCX0KIAorCWN0
cmxfZGV2LmRldi5wYXJlbnQgPSAmcGxhdGZvcm1fYnVzOworCWN0cmxfZGV2LmRldi5yZWxl
YXNlID0gZGF6dWtvZnNfY3RybF9kZXZfcmVsZWFzZTsKKwlzbnByaW50ZihjdHJsX2Rldi5k
ZXYuYnVzX2lkLCBCVVNfSURfU0laRSwgIiVzLmN0cmwiLCBERVZJQ0VfTkFNRSk7CisKKwll
cnIgPSBkZXZpY2VfcmVnaXN0ZXIoJmN0cmxfZGV2LmRldik7CisKKwlpZiAoZXJyKSAKKwkJ
Z290byBlcnJvcl9vdXQ7IAorCisJY3RybF9kZXYuY2xzX2Rldi5yZWxlYXNlID0gZGF6dWtv
ZnNfY3RybF9jbGFzc19kZXZfcmVsZWFzZTsKKwljdHJsX2Rldi5jbHNfZGV2LmNsYXNzID0g
ZGF6dWtvZnNfY2xhc3M7CisJY3RybF9kZXYuY2xzX2Rldi5kZXYgPSAmY3RybF9kZXYuZGV2
OworCisJc25wcmludGYoY3RybF9kZXYuY2xzX2Rldi5jbGFzc19pZCwgQlVTX0lEX1NJWkUs
ICIlcy5jdHJsIiwgREVWSUNFX05BTUUpOworCWN0cmxfZGV2LmNsc19kZXYuZGV2dCA9IGRl
dnQ7CQorCisJZXJyID0gY2xhc3NfZGV2aWNlX3JlZ2lzdGVyKCZjdHJsX2Rldi5jbHNfZGV2
KTsKKworCWlmIChlcnIpCisJCWdvdG8gZXJyb3Jfb3V0MjsKKwkKIAlyZXR1cm4gMDsKIAog
ZXJyb3Jfb3V0MjoKLQljZGV2X2RlbCgmY3RybF9jZGV2KTsKLWVycm9yX291dDE6CisJZGV2
aWNlX3VucmVnaXN0ZXIoJmN0cmxfZGV2LmRldik7CitlcnJvcl9vdXQ6CisJY2Rldl9kZWwo
JmN0cmxfZGV2LmNkZXYpOwogCXJldHVybiBlcnI7CiB9CiAKKwogdm9pZCBkYXp1a29mc19j
dHJsX2Rldl9kZXN0cm95KGludCBkZXZfbWFqb3IsIGludCBkZXZfbWlub3IsCiAJCQkgICAg
ICAgc3RydWN0IGNsYXNzICpkYXp1a29mc19jbGFzcykKIHsKLQlkZXZpY2VfZGVzdHJveShk
YXp1a29mc19jbGFzcywgTUtERVYoZGV2X21ham9yLCBkZXZfbWlub3IpKTsKLQljZGV2X2Rl
bCgmY3RybF9jZGV2KTsKKwljbGFzc19kZXZpY2VfdW5yZWdpc3RlcigmY3RybF9kZXYuY2xz
X2Rldik7CisJZGV2aWNlX3VucmVnaXN0ZXIoJmN0cmxfZGV2LmRldik7CisJY2Rldl9kZWwo
JmN0cmxfZGV2LmNkZXYpOwogfQpkaWZmIC14IENWUyAtcnVwIGRhenVrb2ZzLTMuMC4wL2Rh
enVrb2ZzX2ZzLmggZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIvZGF6dWtv
ZnNfZnMuaAotLS0gZGF6dWtvZnMtMy4wLjAvZGF6dWtvZnNfZnMuaAkyMDA5LTAyLTIyIDE3
OjQzOjExLjAwMDAwMDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9T
TEVTMTBTUDIvZGF6dWtvZnNfZnMuaAkyMDA5LTA3LTAzIDE4OjAyOjEyLjAwMDAwMDAwMCAr
MDIwMApAQCAtMyw3ICszLDcgQEAKICAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDA0IEVyZXog
WmFkb2sKICAgIENvcHlyaWdodCAoQykgMjAwMS0yMDA0IFN0b255IEJyb29rIFVuaXZlcnNp
dHkKICAgIENvcHlyaWdodCAoQykgMjAwNC0yMDA3IEludGVybmF0aW9uYWwgQnVzaW5lc3Mg
TWFjaGluZXMgQ29ycC4KLSAgIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IEpvaG4gT2duZXNz
CisgICBDb3B5cmlnaHQgKEMpIDIwMDggSm9obiBPZ25lc3MKICAgICAgQXV0aG9yOiBKb2hu
IE9nbmVzcyA8ZGF6dWtvY29kZUBvZ25lc3MubmV0PgogCiAgICBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNCwx
MiArMjQsMTAgQEAKICNpZm5kZWYgX19EQVpVS09GU19GU19ICiAjZGVmaW5lIF9fREFaVUtP
RlNfRlNfSAogCi0jZGVmaW5lIERBWlVLT0ZTX1ZFUlNJT04gIjMuMC4wIgotCiBleHRlcm4g
c3RydWN0IGttZW1fY2FjaGUgKmRhenVrb2ZzX2RlbnRyeV9pbmZvX2NhY2hlcDsKIGV4dGVy
biBzdHJ1Y3Qga21lbV9jYWNoZSAqZGF6dWtvZnNfZmlsZV9pbmZvX2NhY2hlcDsKIGV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRhenVrb2ZzX21haW5fZm9wczsKLWV4dGVybiBj
b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRhenVrb2ZzX2Rpcl9mb3BzOworZXh0ZXJu
IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGF6dWtvZnNfZGlyX2ZvcHM7CiBleHRlcm4gc3Ry
dWN0IGRlbnRyeV9vcGVyYXRpb25zIGRhenVrb2ZzX2RvcHM7CiBleHRlcm4gc3RydWN0IGFk
ZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBkYXp1a29mc19hb3BzOwogCkBAIC01OSw2ICs1Nywz
NyBAQCBzdHJ1Y3QgZGF6dWtvZnNfZmlsZV9pbmZvIHsKIAlzdHJ1Y3QgZmlsZSAqbG93ZXJf
ZmlsZTsKIH07CiAKK3ZvaWQgZnNzdGFja19jb3B5X2lub2RlX3NpemUoc3RydWN0IGlub2Rl
ICpkc3QsIGNvbnN0IHN0cnVjdCBpbm9kZSAqc3JjKTsKKworc3RhdGljIGlubGluZQordm9p
ZCBmc3N0YWNrX2NvcHlfYXR0cl9hdGltZShzdHJ1Y3QgaW5vZGUgKmRzdCwgY29uc3Qgc3Ry
dWN0IGlub2RlICpzcmMpCit7CisJZHN0LT5pX2F0aW1lID0gc3JjLT5pX2F0aW1lOworfQor
CitzdGF0aWMgaW5saW5lCit2b2lkIGZzc3RhY2tfY29weV9hdHRyX3RpbWVzKHN0cnVjdCBp
bm9kZSAqZHN0LCBjb25zdCBzdHJ1Y3QgaW5vZGUgKnNyYykKK3sKKwlkc3QtPmlfYXRpbWUg
PSBzcmMtPmlfYXRpbWU7CisJZHN0LT5pX210aW1lID0gc3JjLT5pX210aW1lOworCWRzdC0+
aV9jdGltZSA9IHNyYy0+aV9jdGltZTsKK30KKworc3RhdGljIGlubGluZSAKK3ZvaWQgZnNz
dGFja19jb3B5X2F0dHJfYWxsKHN0cnVjdCBpbm9kZSAqZHN0LCBjb25zdCBzdHJ1Y3QgaW5v
ZGUgKnNyYykKK3sKKwlkc3QtPmlfbW9kZSA9IHNyYy0+aV9tb2RlOworCWRzdC0+aV91aWQg
PSBzcmMtPmlfdWlkOworCWRzdC0+aV9naWQgPSBzcmMtPmlfZ2lkOworCWRzdC0+aV9yZGV2
ID0gc3JjLT5pX3JkZXY7CisJZHN0LT5pX2F0aW1lID0gc3JjLT5pX2F0aW1lOworCWRzdC0+
aV9tdGltZSA9IHNyYy0+aV9tdGltZTsKKwlkc3QtPmlfY3RpbWUgPSBzcmMtPmlfY3RpbWU7
CisJZHN0LT5pX2Jsa3NpemUgPSBzcmMtPmlfYmxrc2l6ZTsKKwlkc3QtPmlfYmxrYml0cyA9
IHNyYy0+aV9ibGtiaXRzOworCWRzdC0+aV9mbGFncyA9IHNyYy0+aV9mbGFnczsKK30KKwog
c3RhdGljIGlubGluZQogc3RydWN0IGRhenVrb2ZzX3NiX2luZm8gKkdFVF9TQl9JTkZPKHN0
cnVjdCBzdXBlcl9ibG9jayAqdXBwZXJfc2IpCiB7CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtv
ZnMtMy4wLjAvZGVudHJ5LmMgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIv
ZGVudHJ5LmMKLS0tIGRhenVrb2ZzLTMuMC4wL2RlbnRyeS5jCTIwMDktMDItMjIgMTc6NDQ6
MjIuMDAwMDAwMDAwICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMx
MFNQMi9kZW50cnkuYwkyMDA5LTAyLTA2IDE3OjQ4OjIxLjAwMDAwMDAwMCArMDEwMApAQCAt
MjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgv
bmFtZWkuaD4KICNpbmNsdWRlIDxsaW51eC9tb3VudC5oPgotI2luY2x1ZGUgPGxpbnV4L2Zz
X3N0YWNrLmg+CisKIAogI2luY2x1ZGUgImRhenVrb2ZzX2ZzLmgiCiAKQEAgLTY1LDE5ICs2
NSwxOSBAQCBzdGF0aWMgaW50IGRhenVrb2ZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgCiAKIAls
b3dlcl9tbnQgPSBHRVRfTE9XRVJfTU5UKGRlbnRyeSk7CiAKLQl2ZnNtb3VudF9zYXZlID0g
bmQtPnBhdGgubW50OwotCWRlbnRyeV9zYXZlID0gbmQtPnBhdGguZGVudHJ5OworCXZmc21v
dW50X3NhdmUgPSBuZC0+bW50OworCWRlbnRyeV9zYXZlID0gbmQtPmRlbnRyeTsKIAotCW5k
LT5wYXRoLm1udCA9IG1udGdldChsb3dlcl9tbnQpOwotCW5kLT5wYXRoLmRlbnRyeSA9IGRn
ZXQobG93ZXJfZGVudHJ5KTsKKwluZC0+bW50ID0gbW50Z2V0KGxvd2VyX21udCk7CisJbmQt
PmRlbnRyeSA9IGRnZXQobG93ZXJfZGVudHJ5KTsKIAogCXZhbGlkID0gbG93ZXJfZGVudHJ5
LT5kX29wLT5kX3JldmFsaWRhdGUobG93ZXJfZGVudHJ5LCBuZCk7CiAKIAltbnRwdXQobG93
ZXJfbW50KTsKIAlkcHV0KGxvd2VyX2RlbnRyeSk7CiAKLQluZC0+cGF0aC5tbnQgPSB2ZnNt
b3VudF9zYXZlOwotCW5kLT5wYXRoLmRlbnRyeSA9IGRlbnRyeV9zYXZlOworCW5kLT5tbnQg
PSB2ZnNtb3VudF9zYXZlOworCW5kLT5kZW50cnkgPSBkZW50cnlfc2F2ZTsKIAogCS8qIHVw
ZGF0ZSB0aGUgaW5vZGUsIGV2ZW4gaWYgZF9yZXZhbGlkYXRlKCkgIT0gMSAqLwogCWlmIChk
ZW50cnktPmRfaW5vZGUpIHsKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGludCBkYXp1a29m
c19kX3JldmFsaWRhdGUoc3RydWN0IAogCiAJCWxvd2VyX2lub2RlID0gR0VUX0xPV0VSX0lO
T0RFKGRlbnRyeS0+ZF9pbm9kZSk7CiAKLQkJZnNzdGFja19jb3B5X2F0dHJfYWxsKGRlbnRy
eS0+ZF9pbm9kZSwgbG93ZXJfaW5vZGUsIE5VTEwpOworCQlmc3N0YWNrX2NvcHlfYXR0cl9h
bGwoZGVudHJ5LT5kX2lub2RlLCBsb3dlcl9pbm9kZSk7CiAJfQogb3V0OgogCXJldHVybiB2
YWxpZDsKZGlmZiAteCBDVlMgLXJ1cCBkYXp1a29mcy0zLjAuMC9kZXYuYyBkYXp1a29mcy0z
LjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9kZXYuYwotLS0gZGF6dWtvZnMtMy4wLjAvZGV2
LmMJMjAwOS0wMi0yMiAxNzo0MjoyNS4wMDAwMDAwMDAgKzAxMDAKKysrIGRhenVrb2ZzLTMu
MC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AyL2Rldi5jCTIwMDktMDItMDYgMTc6NDg6MjEuMDAw
MDAwMDAwICswMTAwCkBAIC0yMSwxOCArMjEsMzEgQEAKICNpbmNsdWRlIDxsaW51eC9kZXZp
Y2UuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L2NkZXYuaD4K
LSNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CiAKKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5o
PgogI2luY2x1ZGUgImRhenVrb2ZzX2ZzLmgiCiAjaW5jbHVkZSAiZXZlbnQuaCIKICNpbmNs
dWRlICJkZXYuaCIKIAorCisvL3N0YXRpYyBDTEFTU19ERVZJQ0VfQVRUUihkZXYsIFNfSVJV
R08sIHJlYWRfZGV2bnVtLCBOVUxMKTsKKwogc3RhdGljIHN0cnVjdCBjbGFzcyAqZGF6dWtv
ZnNfY2xhc3M7CiAKIHN0YXRpYyBpbnQgZGV2X21ham9yOwogc3RhdGljIGludCBkZXZfbWlu
b3Jfc3RhcnQ7CiBzdGF0aWMgaW50IGRldl9taW5vcl9lbmQ7CiAKKyNpZiAwCitzdGF0aWMg
c3NpemVfdCByZWFkX2Rldm51bShzdHJ1dCBjbGFzc19kZXZpY2UgKmNsc19kZXYsIGNoYXIg
KmJ1ZikKK3sKKwlkZXZfdCBkZXZudW07CisKKwlkZXZudW0gPSBjbHNfZGV2LT5kZXYtPgor
Cit9CisjZW5kaWYKKwogaW50IGRhenVrb2ZzX2Rldl9pbml0KHZvaWQpCiB7CiAJaW50IGVy
ciA9IDA7CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMtMy4wLjAvZXZlbnQuYyBkYXp1a29m
cy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9ldmVudC5jCi0tLSBkYXp1a29mcy0zLjAu
MC9ldmVudC5jCTIwMDktMDItMjIgMTc6NDQ6MDMuMDAwMDAwMDAwICswMTAwCisrKyBkYXp1
a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9ldmVudC5jCTIwMDktMDctMDMgMTg6
NTc6MTIuMDAwMDAwMDAwICswMjAwCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSA8bGlu
dXgvZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvbW91
bnQuaD4KLSNpbmNsdWRlIDxsaW51eC9mcmVlemVyLmg+CisKIAogI2luY2x1ZGUgImRldi5o
IgogI2luY2x1ZGUgImRhenVrb2ZzX2ZzLmgiCkBAIC0xMTMsMjEgKzExMywyMSBAQCBpbnQg
ZGF6dWtvZnNfaW5pdF9ldmVudHModm9pZCkKIAlkYXp1a29mc19ncm91cF9jYWNoZXAgPQog
CQlrbWVtX2NhY2hlX2NyZWF0ZSgiZGF6dWtvZnNfZ3JvdXBfY2FjaGUiLAogCQkJCSAgc2l6
ZW9mKHN0cnVjdCBkYXp1a29mc19ncm91cCksIDAsCi0JCQkJICBTTEFCX0hXQ0FDSEVfQUxJ
R04sIE5VTEwpOworCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOLCBOVUxMLCBOVUxMKTsKIAlp
ZiAoIWRhenVrb2ZzX2dyb3VwX2NhY2hlcCkKIAkJZ290byBlcnJvcl9vdXQ7CiAKIAlkYXp1
a29mc19ldmVudF9jb250YWluZXJfY2FjaGVwID0KIAkJa21lbV9jYWNoZV9jcmVhdGUoImRh
enVrb2ZzX2V2ZW50X2NvbnRhaW5lcl9jYWNoZSIsCiAJCQkJICBzaXplb2Yoc3RydWN0IGRh
enVrb2ZzX2V2ZW50X2NvbnRhaW5lciksIDAsCi0JCQkJICBTTEFCX0hXQ0FDSEVfQUxJR04s
IE5VTEwpOworCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOLCBOVUxMLCBOVUxMKTsKIAlpZiAo
IWRhenVrb2ZzX2V2ZW50X2NvbnRhaW5lcl9jYWNoZXApCiAJCWdvdG8gZXJyb3Jfb3V0Owog
CiAJZGF6dWtvZnNfZXZlbnRfY2FjaGVwID0KIAkJa21lbV9jYWNoZV9jcmVhdGUoImRhenVr
b2ZzX2V2ZW50X2NhY2hlIiwKIAkJCQkgIHNpemVvZihzdHJ1Y3QgZGF6dWtvZnNfZXZlbnQp
LCAwLAotCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOLCBOVUxMKTsKKwkJCQkgIFNMQUJfSFdD
QUNIRV9BTElHTiwgTlVMTCwgTlVMTCk7CiAJaWYgKCFkYXp1a29mc19ldmVudF9jYWNoZXAp
CiAJCWdvdG8gZXJyb3Jfb3V0OwogCkBAIC0xNjIsMTYgKzE2MiwyMyBAQCBzdGF0aWMgaW50
IGNhcHR1cmVfZ3JvdXBfY291bnQoaW50ICpjYWNoCiAJcmV0dXJuIGVycjsKIH0KIAotc3Rh
dGljIGludCBnZXRfZ3JvdXBfY291bnQodm9pZCkKK3N0YXRpYyBpbnQgZ2V0X2dyb3VwX2Nv
dW50X2ludGVycnVwdGlibGUodm9pZCkKIHsKIAlpbnQgY2FjaGUgPSAwOwotCWludCByZXQg
PSB3YWl0X2V2ZW50X2ZyZWV6YWJsZShfX2dyb3VwX2NvdW50X3F1ZXVlLAotCQkJCSAgICAg
ICBjYXB0dXJlX2dyb3VwX2NvdW50KCZjYWNoZSkgPT0gMCk7CisJaW50IHJldCA9IHdhaXRf
ZXZlbnRfaW50ZXJydXB0aWJsZShfX2dyb3VwX2NvdW50X3F1ZXVlLAorCQkJCSAJY2FwdHVy
ZV9ncm91cF9jb3VudCgmY2FjaGUpID09IDApOwogCWlmIChyZXQgPT0gMCkKIAkJcmV0ID0g
X19ncm91cF9jb3VudDsKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGdldF9ncm91
cF9jb3VudCh2b2lkKQoreworCWludCBjYWNoZSA9IDA7CisJd2FpdF9ldmVudChfX2dyb3Vw
X2NvdW50X3F1ZXVlLCBjYXB0dXJlX2dyb3VwX2NvdW50KCZjYWNoZSkgPT0gMCk7CisJcmV0
dXJuIF9fZ3JvdXBfY291bnQ7Cit9CisKIHN0YXRpYyB2b2lkIHB1dF9ncm91cF9jb3VudCh2
b2lkKQogewogCW11dGV4X2xvY2soJmdyb3VwX2NvdW50X211dGV4KTsKQEAgLTM3Myw5ICsz
ODAsMTAgQEAgc3RhdGljIHN0cnVjdCBkYXp1a29mc19ncm91cCAqY3JlYXRlX2dybwogewog
CXN0cnVjdCBkYXp1a29mc19ncm91cCAqZ3JwOwogCi0JZ3JwID0ga21lbV9jYWNoZV96YWxs
b2MoZGF6dWtvZnNfZ3JvdXBfY2FjaGVwLCBHRlBfS0VSTkVMKTsKKwlncnAgPSBrbWVtX2Nh
Y2hlX2FsbG9jKGRhenVrb2ZzX2dyb3VwX2NhY2hlcCwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFn
cnApCiAJCXJldHVybiBOVUxMOworCW1lbXNldChncnAsIDAsIHNpemVvZigqZ3JwKSk7CiAK
IAlhdG9taWNfc2V0KCZncnAtPnVzZV9jb3VudCwgMCk7CiAJZ3JwLT5ncm91cF9pZCA9IGlk
OwpAQCAtMzk5LDcgKzQwNyw3IEBAIGludCBkYXp1a29mc19hZGRfZ3JvdXAoY29uc3QgY2hh
ciAqbmFtZSwKIAlpbnQgYWxyZWFkeV9leGlzdHM7CiAJaW50IGF2YWlsYWJsZV9pZCA9IDA7
CiAJc3RydWN0IGRhenVrb2ZzX2dyb3VwICpncnA7Ci0JaW50IGdycF9jb3VudCA9IGdldF9n
cm91cF9jb3VudCgpOworCWludCBncnBfY291bnQgPSBnZXRfZ3JvdXBfY291bnRfaW50ZXJy
dXB0aWJsZSgpOwogCiAJaWYgKGdycF9jb3VudCA8IDApIHsKIAkJcmV0ID0gZ3JwX2NvdW50
OwpAQCAtNDQ3LDcgKzQ1NSw3IEBAIGludCBkYXp1a29mc19yZW1vdmVfZ3JvdXAoY29uc3Qg
Y2hhciAqbmEKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3QgZGF6dWtvZnNfZ3JvdXAgKmdycDsK
IAlzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7Ci0JaW50IGdycF9jb3VudCA9IGdldF9ncm91cF9j
b3VudCgpOworCWludCBncnBfY291bnQgPSBnZXRfZ3JvdXBfY291bnRfaW50ZXJydXB0aWJs
ZSgpOwogCiAJaWYgKGdycF9jb3VudCA8IDApIHsKIAkJcmV0ID0gZ3JwX2NvdW50OwpAQCAt
NjYxLDE4ICs2NjksMjQgQEAgYWxsb2NhdGVfZXZlbnRfYW5kX2NvbnRhaW5lcnMoc3RydWN0
IGRhegogewogCWludCBpOwogCi0JKmV2dCA9IGttZW1fY2FjaGVfemFsbG9jKGRhenVrb2Zz
X2V2ZW50X2NhY2hlcCwgR0ZQX0tFUk5FTCk7CisJKmV2dCA9IGttZW1fY2FjaGVfYWxsb2Mo
ZGF6dWtvZnNfZXZlbnRfY2FjaGVwLCBHRlBfS0VSTkVMKTsKIAlpZiAoISpldnQpCiAJCXJl
dHVybiAtMTsKKwltZW1zZXQoKmV2dCwgMCwgc2l6ZW9mKCoqZXZ0KSk7CiAJaW5pdF93YWl0
cXVldWVfaGVhZCgmKCpldnQpLT5xdWV1ZSk7CiAJbXV0ZXhfaW5pdCgmKCpldnQpLT5hc3Np
Z25lZF9tdXRleCk7CiAKIAkvKiBhbGxvY2F0ZSBjb250YWluZXJzIG5vdyB3aGlsZSB3ZSBk
b24ndCBoYXZlIGEgbG9jayAqLwogCWZvciAoaSA9IDA7IGkgPCBncnBfY291bnQ7IGkrKykg
ewotCQllY19hcnJheVtpXSA9IGttZW1fY2FjaGVfemFsbG9jKAotCQkJCWRhenVrb2ZzX2V2
ZW50X2NvbnRhaW5lcl9jYWNoZXAsIEdGUF9LRVJORUwpOwotCQlpZiAoIWVjX2FycmF5W2ld
KQorCQlzdHJ1Y3QgZGF6dWtvZnNfZXZlbnRfY29udGFpbmVyICplYzsKKworCQllYyA9IGtt
ZW1fY2FjaGVfYWxsb2MoZGF6dWtvZnNfZXZlbnRfY29udGFpbmVyX2NhY2hlcCwgCisJCQkJ
ICAgICAgR0ZQX0tFUk5FTCk7CisJCWlmICghZWMpCiAJCQlnb3RvIGVycm9yX291dDsKKwkJ
bWVtc2V0KGVjLCAwLCBzaXplb2YoKmVjKSk7CisKKwkJZWNfYXJyYXlbaV0gPSBlYzsKIAl9
CiAKIAlyZXR1cm4gMDsKQEAgLTcwMSwxMSArNzE1LDEwIEBAIGludCBkYXp1a29mc19jaGVj
a19hY2Nlc3Moc3RydWN0IGRlbnRyeSAKIHsKIAlzdHJ1Y3QgZGF6dWtvZnNfZXZlbnRfY29u
dGFpbmVyICplY19hcnJheVtHUk9VUF9DT1VOVF07CiAJc3RydWN0IGRhenVrb2ZzX2V2ZW50
ICpldnQ7Ci0JaW50IGdycF9jb3VudCA9IGdldF9ncm91cF9jb3VudCgpOwotCWludCBlcnI7
CisJaW50IGdycF9jb3VudDsKKwlpbnQgZXJyID0gMDsKIAotCWlmIChncnBfY291bnQgPCAw
KQotCQlyZXR1cm4gZ3JwX2NvdW50OworCWdycF9jb3VudCA9IGdldF9ncm91cF9jb3VudCgp
OwogCiAJaWYgKGNoZWNrX2FjY2Vzc19wcmVjaGVjayhncnBfY291bnQpKSB7CiAJCXB1dF9n
cm91cF9jb3VudCgpOwpAQCAtNzEzLDMyICs3MjYsMjkgQEAgaW50IGRhenVrb2ZzX2NoZWNr
X2FjY2VzcyhzdHJ1Y3QgZGVudHJ5IAogCX0KIAogCS8qIGF0IHRoaXMgcG9pbnQsIHRoZSBh
Y2Nlc3Mgc2hvdWxkIGJlIGhhbmRsZWQgKi8KLQogCWlmIChhbGxvY2F0ZV9ldmVudF9hbmRf
Y29udGFpbmVycygmZXZ0LCBlY19hcnJheSwgZ3JwX2NvdW50KSkgewogCQlwdXRfZ3JvdXBf
Y291bnQoKTsKLQkJZXJyID0gLUVOT01FTTsKLQkJZ290byBvdXQ7CisJCXJldHVybiAtRU5P
TUVNOwogCX0KLQogCWV2dC0+ZGVudHJ5ID0gZGdldChkZW50cnkpOwogCWV2dC0+bW50ID0g
bW50Z2V0KG1udCk7CiAJZXZ0LT5waWQgPSBjdXJyZW50LT5waWQ7Ci0KIAlhc3NpZ25fZXZl
bnRfdG9fZ3JvdXBzKGV2dCwgZWNfYXJyYXkpOwogCiAJcHV0X2dyb3VwX2NvdW50KCk7CiAK
LQkvKiB3YWl0IHVudGlsIGV2ZW50IGNvbXBsZXRlbHkgcHJvY2Vzc2VkIG9yIHNpZ25hbCAq
LwotCWVyciA9IHdhaXRfZXZlbnRfZnJlZXphYmxlKGV2dC0+cXVldWUsIGV2ZW50X2Fzc2ln
bmVkKGV2dCkgPT0gMCk7CisJLyogd2FpdCB1bnRpbCBldmVudCBjb21wbGV0ZWx5IHByb2Nl
c3NlZCAqLworCXdhaXRfZXZlbnQoZXZ0LT5xdWV1ZSwgZXZlbnRfYXNzaWduZWQoZXZ0KSA9
PSAwKTsKIAogCWlmIChldnQtPmRlbnkpCiAJCWVyciA9IC1FUEVSTTsKIAogCXJlbGVhc2Vf
ZXZlbnQoZXZ0LCAwLCAwKTsKLW91dDoKKwkKIAlyZXR1cm4gZXJyOwogfQogCisKIGludCBk
YXp1a29mc19ncm91cF9vcGVuX3RyYWNraW5nKHVuc2lnbmVkIGxvbmcgZ3JvdXBfaWQpCiB7
CiAJc3RydWN0IGRhenVrb2ZzX2dyb3VwICpncnA7CkBAIC04NzQsNyArODg0LDggQEAgc3Rh
dGljIHN0cnVjdCBkYXp1a29mc19ldmVudF9jb250YWluZXIgKgogCS8qIG1vdmUgZmlyc3Qg
dG9kby1pdGVtIHRvIHdvcmtpbmcgbGlzdCAqLwogCW11dGV4X2xvY2soJndvcmtfbXV0ZXgp
OwogCWlmICghbGlzdF9lbXB0eSgmZ3JwLT50b2RvX2xpc3QubGlzdCkpIHsKLQkJZWMgPSBs
aXN0X2ZpcnN0X2VudHJ5KCZncnAtPnRvZG9fbGlzdC5saXN0LAorCQlzdHJ1Y3QgbGlzdF9o
ZWFkICpoZWFkID0gJmdycC0+dG9kb19saXN0Lmxpc3Q7CisJCWVjID0gbGlzdF9lbnRyeSho
ZWFkLT5uZXh0LAogCQkJCSAgICAgIHN0cnVjdCBkYXp1a29mc19ldmVudF9jb250YWluZXIs
IGxpc3QpOwogCQlsaXN0X2RlbCgmZWMtPmxpc3QpOwogCQlsaXN0X2FkZCgmZWMtPmxpc3Qs
ICZncnAtPndvcmtpbmdfbGlzdC5saXN0KTsKQEAgLTkyOCw3ICs5MzksOCBAQCBzdGF0aWMg
aW50IG9wZW5fZmlsZShzdHJ1Y3QgZGF6dWtvZnNfZXZlCiAJLyogYWRkIG15c2VsZiB0byBi
ZSBpZ25vcmVkIG9uIGZpbGUgb3BlbiAodG8gYXZvaWQgcmVjdXJzaW9uKSAqLwogCW1hc2tf
cHJvYygmcHJvYyk7CiAKLQllYy0+ZmlsZSA9IGRlbnRyeV9vcGVuKGRnZXQoZXZ0LT5kZW50
cnkpLCBtbnRnZXQoZXZ0LT5tbnQpLCBPX1JET05MWSk7CisJZWMtPmZpbGUgPSBkZW50cnlf
b3BlbihkZ2V0KGV2dC0+ZGVudHJ5KSwgbW50Z2V0KGV2dC0+bW50KSwgCisJCQkgICAgICAg
T19SRE9OTFkgfCBPX0xBUkdFRklMRSk7CiAJaWYgKElTX0VSUihlYy0+ZmlsZSkpIHsKIAkJ
Y2hlY2tfcmVjdXJzaW9uKCk7ICAvKiByZW1vdmUgbXlzZWxmIGZyb20gcHJvY19saXN0ICov
CiAJCXJldCA9IFBUUl9FUlIoZWMtPmZpbGUpOwpAQCAtMTAwNCw5ICsxMDE2LDkgQEAgaW50
IGRhenVrb2ZzX2dldF9ldmVudCh1bnNpZ25lZCBsb25nIGdybwogCX0KIAogCXdoaWxlICgx
KSB7Ci0JCXJldCA9IHdhaXRfZXZlbnRfZnJlZXphYmxlKGdycC0+cXVldWUsCi0JCQkJCSAg
IGlzX2V2ZW50X2F2YWlsYWJsZShncnApIHx8Ci0JCQkJCSAgIGdycC0+ZGVwcmVjYXRlZCk7
CisJCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShncnAtPnF1ZXVlLAorCQkJCQkg
ICAJaXNfZXZlbnRfYXZhaWxhYmxlKGdycCkgfHwKKwkJCQkJICAgCWdycC0+ZGVwcmVjYXRl
ZCk7CiAJCWlmIChyZXQgIT0gMCkKIAkJCWJyZWFrOwogCmRpZmYgLXggQ1ZTIC1ydXAgZGF6
dWtvZnMtMy4wLjAvZmlsZS5jIGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1Ay
L2ZpbGUuYwotLS0gZGF6dWtvZnMtMy4wLjAvZmlsZS5jCTIwMDktMDItMjIgMTc6NDM6MTEu
MDAwMDAwMDAwICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQ
Mi9maWxlLmMJMjAwOS0wNy0wMyAxODo1MDo1Mi4wMDAwMDAwMDAgKzAyMDAKQEAgLTI1LDcg
KzI1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L21vdW50
Lmg+CiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPgotI2luY2x1ZGUgPGxpbnV4L2ZzX3N0YWNr
Lmg+CisKIAogI2luY2x1ZGUgImRhenVrb2ZzX2ZzLmgiCiAjaW5jbHVkZSAiZXZlbnQuaCIK
QEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGxvZmZfdCBkYXp1a29mc19sbHNlZWsoc3RydWN0
IGZpbAogewogCWxvZmZfdCByZXR2YWwgPSAtRUlOVkFMOwogCXN0cnVjdCBmaWxlICpsb3dl
cl9maWxlID0gR0VUX0xPV0VSX0ZJTEUoZmlsZSk7Ci0KKwkKIAlsb3dlcl9maWxlLT5mX3Bv
cyA9IGZpbGUtPmZfcG9zOwogCiAJbWVtY3B5KCYobG93ZXJfZmlsZS0+Zl9yYSksICYoZmls
ZS0+Zl9yYSksCkBAIC0xNzQsMTkgKzE3NCwyMyBAQCBzdGF0aWMgaW50IGRhenVrb2ZzX29w
ZW4oc3RydWN0IGlub2RlICppCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gZmlsZS0+Zl9k
ZW50cnk7CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5ID0gZGdldChHRVRfTE9XRVJf
REVOVFJZKGRlbnRyeSkpOwogCXN0cnVjdCB2ZnNtb3VudCAqbG93ZXJfbW50ID0gbW50Z2V0
KEdFVF9MT1dFUl9NTlQoZGVudHJ5KSk7CisJc3RydWN0IGRhenVrb2ZzX2ZpbGVfaW5mbyAq
Zmk7CiAJc3RydWN0IGZpbGUgKmxvd2VyX2ZpbGU7CiAJaW50IGVycjsKIAotCWVyciA9IGRh
enVrb2ZzX2NoZWNrX2FjY2VzcyhmaWxlLT5mX2RlbnRyeSwgZmlsZS0+Zl92ZnNtbnQpOwot
CWlmIChlcnIpCi0JCWdvdG8gZXJyb3Jfb3V0MTsKLQotCVNFVF9GSUxFX0lORk8oZmlsZSwg
a21lbV9jYWNoZV96YWxsb2MoZGF6dWtvZnNfZmlsZV9pbmZvX2NhY2hlcCwKLQkJICAgICAg
R0ZQX0tFUk5FTCkpOwotCWlmICghR0VUX0ZJTEVfSU5GTyhmaWxlKSkgeworCWlmIChTX0lT
UkVHKGlub2RlLT5pX21vZGUpKSB7CisJCWVyciA9IGRhenVrb2ZzX2NoZWNrX2FjY2Vzcyhm
aWxlLT5mX2RlbnRyeSwgZmlsZS0+Zl92ZnNtbnQpOworCQlpZiAoZXJyKQorCQkJZ290byBl
cnJvcl9vdXQxOworCX0JCisJZmkgPSBrbWVtX2NhY2hlX2FsbG9jKGRhenVrb2ZzX2ZpbGVf
aW5mb19jYWNoZXAsIEdGUF9LRVJORUwpOworCWlmICghZmkpIHsKIAkJZXJyID0gLUVOT01F
TTsKIAkJZ290byBlcnJvcl9vdXQxOwogCX0KKwltZW1zZXQoZmksIDAsIHNpemVvZigqZmkp
KTsKKworCVNFVF9GSUxFX0lORk8oZmlsZSwgZmkpOwogCiAJbG93ZXJfZmlsZSA9IGRlbnRy
eV9vcGVuKGxvd2VyX2RlbnRyeSwgbG93ZXJfbW50LCBmaWxlLT5mX2ZsYWdzKTsKIAlpZiAo
SVNfRVJSKGxvd2VyX2ZpbGUpKSB7CkBAIC0yNzIsNiArMjc2LDIwIEBAIG91dDoKIAlyZXR1
cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGRhenVrb2ZzX21tYXAgKHN0cnVjdCBmaWxlICpm
aWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtKQoreworCisJc3RydWN0IGZpbGUgKmxv
d2VyX2ZpbGUgPSBHRVRfTE9XRVJfRklMRShmaWxlKTsKKworCS8qIGlmIGxvd2VyIGZzIGRv
ZXMgbm90IHN1cHBvcnQgbW1hcCgpLCB3ZSBkb250IGNhbGwgZ2VuZXJpY19maWxlX3JlYWRv
bmx5X21tYXAoKSwgCisJICogc2luY2UgdGhpcyB3b3VsZCByZXN1bHQgaW4gY2FsbGluZyBs
b3dlciByZWFkcGFnZSgpLCB3aGljaCBtaWdodCBub3QgYmUgCisJICogZGVmaW5lZCBieSBs
b3dlciBmcyBpZiBtbWFwKCkgaXMgbm90IHN1cHBvcnRlZCovCisJaWYgKCFsb3dlcl9maWxl
LT5mX29wIHx8ICFsb3dlcl9maWxlLT5mX29wLT5tbWFwKSAKKwkJcmV0dXJuIC1FTk9ERVY7
CisJCisKKwlyZXR1cm4gZ2VuZXJpY19maWxlX3JlYWRvbmx5X21tYXAoZmlsZSwgdm0pOwor
fQogLyoqCiAgKiBVbnVzZWQgb3BlcmF0aW9uczoKICAqICAgLSBvd25lcgpAQCAtMjk1LDE4
ICszMTMsMTUgQEAgb3V0Ogogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkYXp1a29mc19tYWlu
X2ZvcHMgPSB7CiAJLmxsc2VlawkJPSBkYXp1a29mc19sbHNlZWssCiAJLnJlYWQJCT0gZGF6
dWtvZnNfcmVhZCwKLQkuYWlvX3JlYWQJPSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQsCiAJLndy
aXRlCQk9IGRhenVrb2ZzX3dyaXRlLAotCS5haW9fd3JpdGUJPSBnZW5lcmljX2ZpbGVfYWlv
X3dyaXRlLAogCS5yZWFkZGlyCT0gZGF6dWtvZnNfcmVhZGRpciwKIAkuaW9jdGwJCT0gZGF6
dWtvZnNfaW9jdGwsCi0JLm1tYXAJCT0gZ2VuZXJpY19maWxlX21tYXAsCisJLm1tYXAJCT0g
ZGF6dWtvZnNfbW1hcCwKIAkub3BlbgkJPSBkYXp1a29mc19vcGVuLAogCS5mbHVzaAkJPSBk
YXp1a29mc19mbHVzaCwKIAkucmVsZWFzZQk9IGRhenVrb2ZzX3JlbGVhc2UsCiAJLmZzeW5j
CQk9IGRhenVrb2ZzX2ZzeW5jLAogCS5mYXN5bmMJCT0gZGF6dWtvZnNfZmFzeW5jLAotCS5z
cGxpY2VfcmVhZAk9IGdlbmVyaWNfZmlsZV9zcGxpY2VfcmVhZCwKIH07CiAKIC8qKgpAQCAt
MzMyLDE0ICszNDcsMTMgQEAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkYXp1a29mc19tYWlu
X2ZvcAogICogICAtIHNwbGljZV9yZWFkIChnZW5lcmljKQogICogICAtIHNldGxlYXNlCiAg
Ki8KLWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGF6dWtvZnNfZGlyX2ZvcHMgPSB7
CitzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRhenVrb2ZzX2Rpcl9mb3BzID0gewogCS5yZWFk
ZGlyCT0gZGF6dWtvZnNfcmVhZGRpciwKIAkuaW9jdGwJCT0gZGF6dWtvZnNfaW9jdGwsCi0J
Lm1tYXAJCT0gZ2VuZXJpY19maWxlX21tYXAsCisJLm1tYXAJCT0gZGF6dWtvZnNfbW1hcCwK
IAkub3BlbgkJPSBkYXp1a29mc19vcGVuLAogCS5mbHVzaAkJPSBkYXp1a29mc19mbHVzaCwK
IAkucmVsZWFzZQk9IGRhenVrb2ZzX3JlbGVhc2UsCiAJLmZzeW5jCQk9IGRhenVrb2ZzX2Zz
eW5jLAogCS5mYXN5bmMJCT0gZGF6dWtvZnNfZmFzeW5jLAotCS5zcGxpY2VfcmVhZAk9IGdl
bmVyaWNfZmlsZV9zcGxpY2VfcmVhZCwKIH07CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMt
My4wLjAvZ3JvdXBfZGV2LmMgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIv
Z3JvdXBfZGV2LmMKLS0tIGRhenVrb2ZzLTMuMC4wL2dyb3VwX2Rldi5jCTIwMDktMDItMjIg
MTc6NDU6MjAuMDAwMDAwMDAwICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2
X1NMRVMxMFNQMi9ncm91cF9kZXYuYwkyMDA5LTAyLTA2IDE5OjA0OjI4LjAwMDAwMDAwMCAr
MDEwMApAQCAtMjEsMzEgKzIxLDU1IEBACiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CiAj
aW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+Ci0jaW5jbHVk
ZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o
PgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAKICNpbmNsdWRlICJkYXp1a29mc19mcy5o
IgogI2luY2x1ZGUgImV2ZW50LmgiCiAjaW5jbHVkZSAiZGV2LmgiCiAKLXN0YXRpYyBpbnQg
ZGF6dWtvZnNfZ3JvdXBfb3BlbihpbnQgZ3JvdXBfaWQsIHN0cnVjdCBpbm9kZSAqaW5vZGUs
CisKKworCitzdHJ1Y3QgZ3JvdXBfZGV2aWNlIHsKKwlzdHJ1Y3QgY2RldiBjZGV2OworCXN0
cnVjdCBkZXZpY2UgZGV2OworCXN0cnVjdCBjbGFzc19kZXZpY2UgY2xzX2RldjsKKwlpbnQg
aWQ7CisJaW50IHRyYWNrOworfTsKKworc3RhdGljIHN0cnVjdCBncm91cF9kZXZpY2UgKmdy
cF9kZXZzOworc3RhdGljIGludCBtaW5vcl9zdGFydDsgIC8qIGluaXRpYWwgbWlub3IgbnVt
YmVyICovCisKK3N0YXRpYyBpbnQgZGF6dWtvZnNfZ3JvdXBfb3BlbihzdHJ1Y3QgaW5vZGUg
Kmlub2RlLAogCQkJICAgICAgIHN0cnVjdCBmaWxlICpmaWxlKQogewotCWlmIChkYXp1a29m
c19ncm91cF9vcGVuX3RyYWNraW5nKGdyb3VwX2lkKSkKLQkJZmlsZS0+cHJpdmF0ZV9kYXRh
ID0gZmlsZTsKLQllbHNlCi0JCWZpbGUtPnByaXZhdGVfZGF0YSA9IE5VTEw7CisJaW50IGlk
OworCXN0cnVjdCBncm91cF9kZXZpY2UgKmdkZXY7CisKKwlpZCA9IE1JTk9SKGlub2RlLT5p
X3JkZXYpIC0gbWlub3Jfc3RhcnQ7CisJZ2RldiA9ICZncnBfZGV2c1tpZF07CisKKwlnZGV2
LT50cmFjayA9IGRhenVrb2ZzX2dyb3VwX29wZW5fdHJhY2tpbmcoaWQpOworCWdkZXYtPmlk
ID0gaWQ7CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gZ2RldjsKIAlyZXR1cm4gMDsKIH0KIAot
c3RhdGljIGludCBkYXp1a29mc19ncm91cF9yZWxlYXNlKGludCBncm91cF9pZCwgc3RydWN0
IGlub2RlICppbm9kZSwKK3N0YXRpYyBpbnQgZGF6dWtvZnNfZ3JvdXBfcmVsZWFzZShzdHJ1
Y3QgaW5vZGUgKmlub2RlLAogCQkJCSAgc3RydWN0IGZpbGUgKmZpbGUpCiB7Ci0JaWYgKGZp
bGUtPnByaXZhdGVfZGF0YSkKLQkJZGF6dWtvZnNfZ3JvdXBfcmVsZWFzZV90cmFja2luZyhn
cm91cF9pZCk7CisJc3RydWN0IGdyb3VwX2RldmljZSAqZ2RldjsKKworCWdkZXYgPSAoc3Ry
dWN0IGdyb3VwX2RldmljZSAqKSBmaWxlLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoZ2Rldi0+
dHJhY2spCisJCWRhenVrb2ZzX2dyb3VwX3JlbGVhc2VfdHJhY2tpbmcoZ2Rldi0+aWQpOwog
CXJldHVybiAwOwogfQogCi1zdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF9yZWFkKGlu
dCBncm91cF9pZCwgc3RydWN0IGZpbGUgKmZpbGUsCitzdGF0aWMgc3NpemVfdCBkYXp1a29m
c19ncm91cF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAogCQkJCSAgIGNoYXIgX191c2VyICpi
dWZmZXIsIHNpemVfdCBsZW5ndGgsCiAJCQkJICAgbG9mZl90ICpwb3MpCiB7CkBAIC01Niw2
ICs4MCw5IEBAIHN0YXRpYyBzc2l6ZV90IGRhenVrb2ZzX2dyb3VwX3JlYWQoaW50IGcKIAlp
bnQgZmQ7CiAJaW50IGVycjsKIAl1bnNpZ25lZCBsb25nIGV2ZW50X2lkOworCXN0cnVjdCBn
cm91cF9kZXZpY2UgKmdkZXY7CisgIAorCWdkZXYgPSAoc3RydWN0IGdyb3VwX2RldmljZSAq
KSBmaWxlLT5wcml2YXRlX2RhdGE7CiAKIAlpZiAoKnBvcyA+IDApCiAJCXJldHVybiAwOwpA
QCAtNjMsNyArOTAsNyBAQCBzdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF9yZWFkKGlu
dCBnCiAJaWYgKGxlbmd0aCA8IERBWlVLT0ZTX01JTl9SRUFEX0JVRkZFUikKIAkJcmV0dXJu
IC1FSU5WQUw7CiAKLQllcnIgPSBkYXp1a29mc19nZXRfZXZlbnQoZ3JvdXBfaWQsICZldmVu
dF9pZCwgJmZkLCAmcGlkKTsKKwllcnIgPSBkYXp1a29mc19nZXRfZXZlbnQoZ2Rldi0+aWQs
ICZldmVudF9pZCwgJmZkLCAmcGlkKTsKIAlpZiAoZXJyKSB7CiAJCWlmIChlcnIgPT0gLUVS
RVNUQVJUU1lTKQogCQkJcmV0dXJuIC1FSU5UUjsKQEAgLTgzLDcgKzExMCw3IEBAIHN0YXRp
YyBzc2l6ZV90IGRhenVrb2ZzX2dyb3VwX3JlYWQoaW50IGcKIAlyZXR1cm4gdG1wX3VzZWQ7
CiB9CiAKLXN0YXRpYyBzc2l6ZV90IGRhenVrb2ZzX2dyb3VwX3dyaXRlKGludCBncm91cF9p
ZCwgc3RydWN0IGZpbGUgKmZpbGUsCitzdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF93
cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCQkgICAgY29uc3QgY2hhciBfX3VzZXIgKmJ1
ZmZlciwgc2l6ZV90IGxlbmd0aCwKIAkJCQkgICAgbG9mZl90ICpwb3MpCiB7CkBAIC05NCw2
ICsxMjEsOSBAQCBzdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF93cml0ZShpbnQgCiAJ
Y2hhciAqcDsKIAljaGFyICpwMjsKIAlpbnQgcmV0OworCXN0cnVjdCBncm91cF9kZXZpY2Ug
KmdkZXY7CisKKwlnZGV2ID0gKHN0cnVjdCBncm91cF9kZXZpY2UgKikgZmlsZS0+cHJpdmF0
ZV9kYXRhOwogCiAJaWYgKGxlbmd0aCA+PSBEQVpVS09GU19NQVhfV1JJVEVfQlVGRkVSKQog
CQlsZW5ndGggPSBEQVpVS09GU19NQVhfV1JJVEVfQlVGRkVSIC0gMTsKQEAgLTExOCw3ICsx
NDgsNyBAQCBzdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF93cml0ZShpbnQgCiAJCXJl
dHVybiAtRUlOVkFMOwogCXJlc3BvbnNlID0gKCoocCArIDIpKSAtICcwJzsKIAotCXJldCA9
IGRhenVrb2ZzX3JldHVybl9ldmVudChncm91cF9pZCwgZXZlbnRfaWQsIHJlc3BvbnNlKTsK
KwlyZXQgPSBkYXp1a29mc19yZXR1cm5fZXZlbnQoZ2Rldi0+aWQsIGV2ZW50X2lkLCByZXNw
b25zZSk7CiAJaWYgKHJldCA9PSAwKSB7CiAJCSpwb3MgKz0gbGVuZ3RoOwogCQlyZXQgPSBs
ZW5ndGg7CkBAIC0xMjksMTA0ICsxNTksMTA1IEBAIHN0YXRpYyBzc2l6ZV90IGRhenVrb2Zz
X2dyb3VwX3dyaXRlKGludCAKIAlyZXR1cm4gcmV0OwogfQogCi0jZGVmaW5lIERFQ0xBUkVf
R1JPVVBfRk9QUyhncm91cF9pZCkgXAotc3RhdGljIGludCBcCi1kYXp1a29mc19ncm91cF9v
cGVuXyMjZ3JvdXBfaWQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUp
IFwKLXsgXAotCXJldHVybiBkYXp1a29mc19ncm91cF9vcGVuKGdyb3VwX2lkLCBpbm9kZSwg
ZmlsZSk7IFwKLX0gXAotc3RhdGljIGludCBcCi1kYXp1a29mc19ncm91cF9yZWxlYXNlXyMj
Z3JvdXBfaWQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpIFwKLXsg
XAotCXJldHVybiBkYXp1a29mc19ncm91cF9yZWxlYXNlKGdyb3VwX2lkLCBpbm9kZSwgZmls
ZSk7IFwKLX0gXAotc3RhdGljIHNzaXplX3QgXAotZGF6dWtvZnNfZ3JvdXBfcmVhZF8jI2dy
b3VwX2lkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmZmVyLCBcCi0JCQkg
ICAgICAgc2l6ZV90IGxlbmd0aCwgbG9mZl90ICpwb3MpIFwKLXsgXAotCXJldHVybiBkYXp1
a29mc19ncm91cF9yZWFkKGdyb3VwX2lkLCBmaWxlLCBidWZmZXIsIGxlbmd0aCwgcG9zKTsg
XAotfSBcCi1zdGF0aWMgc3NpemVfdCBcCi1kYXp1a29mc19ncm91cF93cml0ZV8jI2dyb3Vw
X2lkKHN0cnVjdCBmaWxlICpmaWxlLCBcCi0JCQkJY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZl
ciwgc2l6ZV90IGxlbmd0aCwgXAotCQkJCWxvZmZfdCAqcG9zKSBcCi17IFwKLQlyZXR1cm4g
ZGF6dWtvZnNfZ3JvdXBfd3JpdGUoZ3JvdXBfaWQsIGZpbGUsIGJ1ZmZlciwgbGVuZ3RoLCBw
b3MpOyBcCi19IFwKLXN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdyb3VwX2ZvcHNf
IyNncm91cF9pZCA9IHsgXAotCS5vd25lcgkJPSBUSElTX01PRFVMRSwgXAotCS5vcGVuCQk9
IGRhenVrb2ZzX2dyb3VwX29wZW5fIyNncm91cF9pZCwgXAotCS5yZWxlYXNlCT0gZGF6dWtv
ZnNfZ3JvdXBfcmVsZWFzZV8jI2dyb3VwX2lkLCBcCi0JLnJlYWQJCT0gZGF6dWtvZnNfZ3Jv
dXBfcmVhZF8jI2dyb3VwX2lkLCBcCi0JLndyaXRlCQk9IGRhenVrb2ZzX2dyb3VwX3dyaXRl
XyMjZ3JvdXBfaWQsIFwKK3N0cnVjdCBmaWxlX29wZXJhdGlvbnMgZ3JwX2ZvcHMgPSB7CisJ
Lm93bmVyCSAgID0gVEhJU19NT0RVTEUsCisJLm9wZW4gCSAgID0gZGF6dWtvZnNfZ3JvdXBf
b3BlbiwKKwkucmVsZWFzZSAgID0gZGF6dWtvZnNfZ3JvdXBfcmVsZWFzZSwKKwkucmVhZAkg
ICA9IGRhenVrb2ZzX2dyb3VwX3JlYWQsCisJLndyaXRlIAkgICA9IGRhenVrb2ZzX2dyb3Vw
X3dyaXRlLAogfTsKIAotREVDTEFSRV9HUk9VUF9GT1BTKDApCi1ERUNMQVJFX0dST1VQX0ZP
UFMoMSkKLURFQ0xBUkVfR1JPVVBfRk9QUygyKQotREVDTEFSRV9HUk9VUF9GT1BTKDMpCi1E
RUNMQVJFX0dST1VQX0ZPUFMoNCkKLURFQ0xBUkVfR1JPVVBfRk9QUyg1KQotREVDTEFSRV9H
Uk9VUF9GT1BTKDYpCi1ERUNMQVJFX0dST1VQX0ZPUFMoNykKLURFQ0xBUkVfR1JPVVBfRk9Q
Uyg4KQotREVDTEFSRV9HUk9VUF9GT1BTKDkpCi0KLXN0YXRpYyBzdHJ1Y3QgY2RldiBncm91
cHNfY2RldltHUk9VUF9DT1VOVF07Ci0KLXN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
ICpncm91cF9mb3BzW0dST1VQX0NPVU5UXSA9IHsKLQkmZ3JvdXBfZm9wc18wLAotCSZncm91
cF9mb3BzXzEsCi0JJmdyb3VwX2ZvcHNfMiwKLQkmZ3JvdXBfZm9wc18zLAotCSZncm91cF9m
b3BzXzQsCi0JJmdyb3VwX2ZvcHNfNSwKLQkmZ3JvdXBfZm9wc182LAotCSZncm91cF9mb3Bz
XzcsCi0JJmdyb3VwX2ZvcHNfOCwKLQkmZ3JvdXBfZm9wc185LAotfTsKKworc3RhdGljIHZv
aWQgZGF6dWtvZnNfZ3JvdXBfY2xhc3NfZGV2X3JlbGVhc2Uoc3RydWN0IGNsYXNzX2Rldmlj
ZSAqY2xzX2RldikKK3sKKwkvLyBub3RoaW5nCit9CisKK3N0YXRpYyB2b2lkIGRhenVrb2Zz
X2dyb3VwX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwkvLyBOb3RoaW5n
Cit9CisKK3N0YXRpYyBpbnQgX19kYXp1a29mc19ncm91cF9kZXZfaW5pdChkZXZfdCBkZXZ0
LCBzdHJ1Y3QgY2xhc3MgKmNscywgCisJCQkJICAgICBzdHJ1Y3QgZ3JvdXBfZGV2aWNlICpn
ZGV2LCBjaGFyICpuYW1lKQoreworCWludCBlcnI7CisJCisJY2Rldl9pbml0KCZnZGV2LT5j
ZGV2LCAmZ3JwX2ZvcHMpOworCWdkZXYtPmNkZXYub3duZXIgPSBUSElTX01PRFVMRTsKKwor
CWVyciA9IGNkZXZfYWRkKCZnZGV2LT5jZGV2LCBkZXZ0LCBHUk9VUF9DT1VOVCk7CisKKwlp
ZiAoZXJyKQorCQlyZXR1cm4gLTE7IAorCisJZ2Rldi0+ZGV2LnBhcmVudCA9ICZwbGF0Zm9y
bV9idXM7CisJZ2Rldi0+ZGV2LnJlbGVhc2UgPSBkYXp1a29mc19ncm91cF9kZXZfcmVsZWFz
ZTsKKwlzdHJuY3B5KGdkZXYtPmRldi5idXNfaWQsIG5hbWUsIEJVU19JRF9TSVpFKTsKKwor
CWVyciA9IGRldmljZV9yZWdpc3RlcigmZ2Rldi0+ZGV2KTsKKworCWlmIChlcnIpIAorCQln
b3RvIGVycl9vdXQ7CisKKwlnZGV2LT5jbHNfZGV2LnJlbGVhc2UgPSBkYXp1a29mc19ncm91
cF9jbGFzc19kZXZfcmVsZWFzZTsKKwlnZGV2LT5jbHNfZGV2LmNsYXNzID0gY2xzOyAKKwln
ZGV2LT5jbHNfZGV2LmRldiA9ICZnZGV2LT5kZXY7CisJc3RybmNweShnZGV2LT5jbHNfZGV2
LmNsYXNzX2lkLCBuYW1lLCBCVVNfSURfU0laRSk7CisJZ2Rldi0+Y2xzX2Rldi5kZXZ0ID0g
ZGV2dDsJCisJCisJZXJyID0gY2xhc3NfZGV2aWNlX3JlZ2lzdGVyKCZnZGV2LT5jbHNfZGV2
KTsgCisKKwlpZiAoZXJyKSAKKwkJZ290byBlcnJfb3V0MjsKKworCXJldHVybiAwOworCitl
cnJfb3V0MjoKKwlkZXZpY2VfdW5yZWdpc3RlcigmZ2Rldi0+ZGV2KTsKK2Vycl9vdXQ6CisJ
Y2Rldl9kZWwoJmdkZXYtPmNkZXYpOworCisJcmV0dXJuIGVycjsKK30KIAogaW50IGRhenVr
b2ZzX2dyb3VwX2Rldl9pbml0KGludCBkZXZfbWFqb3IsIGludCBkZXZfbWlub3Jfc3RhcnQs
CiAJCQkgICAgc3RydWN0IGNsYXNzICpkYXp1a29mc19jbGFzcykKIHsKLQlpbnQgZXJyID0g
MDsKLQlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJaW50IGVycjsKIAlpbnQgaTsKLQlpbnQgY2Rl
dl9jb3VudDsKLQlpbnQgZGV2X21pbm9yX2VuZCA9IGRldl9taW5vcl9zdGFydDsKKwlkZXZf
dCBkZXZ0OworCXN0cnVjdCBncm91cF9kZXZpY2UgKmdkZXY7CisJY2hhciBuYW1lW0JVU19J
RF9TSVpFXTsKIAotCS8qIHNldHVwIGNkZXZzIGZvciBncm91cHMgKi8KLQlmb3IgKGNkZXZf
Y291bnQgPSAwOyBjZGV2X2NvdW50IDwgR1JPVVBfQ09VTlQ7IGNkZXZfY291bnQrKykgewot
CQljZGV2X2luaXQoJmdyb3Vwc19jZGV2W2NkZXZfY291bnRdLCBncm91cF9mb3BzW2NkZXZf
Y291bnRdKTsKLQkJZ3JvdXBzX2NkZXZbY2Rldl9jb3VudF0ub3duZXIgPSBUSElTX01PRFVM
RTsKLQkJZXJyID0gY2Rldl9hZGQoJmdyb3Vwc19jZGV2W2NkZXZfY291bnRdLAotCQkJICAg
ICAgIE1LREVWKGRldl9tYWpvciwgZGV2X21pbm9yX3N0YXJ0ICsgY2Rldl9jb3VudCksCi0J
CQkgICAgICAgR1JPVVBfQ09VTlQpOwotCQlpZiAoZXJyKQotCQkJZ290byBlcnJvcl9vdXQx
OwotCX0KKwlncnBfZGV2cyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBncm91cF9kZXZpY2Up
ICogR1JPVVBfQ09VTlQsCisJCQkgICBHRlBfS0VSTkVMKTsKKworCWlmICghZ3JwX2RldnMp
CisJCXJldHVybiAtRU5PTUVNOwogCiAJLyogY3JlYXRlIGdyb3VwIGRldmljZXMgKi8KIAlm
b3IgKGkgPSAwOyBpIDwgR1JPVVBfQ09VTlQ7IGkrKykgewotCQlkZXYgPSBkZXZpY2VfY3Jl
YXRlKGRhenVrb2ZzX2NsYXNzLCBOVUxMLAotCQkJCSAgICBNS0RFVihkZXZfbWFqb3IsIGRl
dl9taW5vcl9lbmQpLCBOVUxMLAotCQkJCSAgICAiJXMuJWQiLCBERVZJQ0VfTkFNRSwgaSk7
Ci0JCWlmIChJU19FUlIoZGV2KSkgewotCQkJZXJyID0gUFRSX0VSUihkZXYpOwotCQkJZ290
byBlcnJvcl9vdXQyOwotCQl9Ci0JCWRldl9taW5vcl9lbmQrKzsKKwkJZ2RldiA9ICZncnBf
ZGV2c1tpXTsKKwkJZGV2dCA9IE1LREVWKGRldl9tYWpvciwgZGV2X21pbm9yX3N0YXJ0ICsg
aSk7CisJCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgIiVzLiVpIiwgREVWSUNFX05B
TUUsIGkpOwkJCisJCWVyciA9IF9fZGF6dWtvZnNfZ3JvdXBfZGV2X2luaXQoZGV2dCwgZGF6
dWtvZnNfY2xhc3MsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2RldiwgbmFtZSk7IAkJCisJCWlmIChlcnIpCisJCQlnb3RvIHVuZG87CiAJ
fQogCi0JcmV0dXJuIGRldl9taW5vcl9lbmQ7CisJbWlub3Jfc3RhcnQgPSBkZXZfbWlub3Jf
c3RhcnQ7CisJcmV0dXJuIGk7CiAKLWVycm9yX291dDI6Ci0JZm9yIChpID0gZGV2X21pbm9y
X3N0YXJ0OyBpIDwgZGV2X21pbm9yX2VuZDsgaSsrKQotCQlkZXZpY2VfZGVzdHJveShkYXp1
a29mc19jbGFzcywgTUtERVYoZGV2X21ham9yLCBpKSk7Ci1lcnJvcl9vdXQxOgotCWZvciAo
aSA9IDA7IGkgPCBjZGV2X2NvdW50OyBpKyspCi0JCWNkZXZfZGVsKCZncm91cHNfY2Rldltp
XSk7Cit1bmRvOgorCXdoaWxlKGkpIHsJCQorCQlpLS07CisJCWdkZXYgPSAmZ3JwX2RldnNb
aV07CisJCWNsYXNzX2RldmljZV91bnJlZ2lzdGVyKCZnZGV2LT5jbHNfZGV2KTsKKwkJZGV2
aWNlX3VucmVnaXN0ZXIoJmdkZXYtPmRldik7CisJCWNkZXZfZGVsKCZnZGV2LT5jZGV2KTsK
Kwl9CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtMjM2LDkgKzI2NywxNCBAQCB2b2lkIGRhenVr
b2ZzX2dyb3VwX2Rldl9kZXN0cm95KGludCBkZXZfCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkg
PSBkZXZfbWlub3Jfc3RhcnQ7IGkgPCBkZXZfbWlub3JfZW5kOyBpKyspCi0JCWRldmljZV9k
ZXN0cm95KGRhenVrb2ZzX2NsYXNzLCBNS0RFVihkZXZfbWFqb3IsIGkpKTsKKwlmb3IgKGkg
PSAwOyBpIDwgR1JPVVBfQ09VTlQ7IGkrKykgeworCQlzdHJ1Y3QgZ3JvdXBfZGV2aWNlICpn
ZGV2OworCisJCWdkZXYgPSAmZ3JwX2RldnNbaV07CiAKLQlmb3IgKGkgPSAwOyBpIDwgR1JP
VVBfQ09VTlQ7IGkrKykKLQkJY2Rldl9kZWwoJmdyb3Vwc19jZGV2W2ldKTsKKwkJY2xhc3Nf
ZGV2aWNlX3VucmVnaXN0ZXIoJmdkZXYtPmNsc19kZXYpOworCQlkZXZpY2VfdW5yZWdpc3Rl
cigmZ2Rldi0+ZGV2KTsKKwkJY2Rldl9kZWwoJmdkZXYtPmNkZXYpOworCX0KKwlrZnJlZShn
cnBfZGV2cyk7CiB9CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMtMy4wLjAvaWduX2Rldi5j
IGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AyL2lnbl9kZXYuYwotLS0gZGF6
dWtvZnMtMy4wLjAvaWduX2Rldi5jCTIwMDktMDItMjIgMTc6NDU6MjAuMDAwMDAwMDAwICsw
MTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9pZ25fZGV2LmMJ
MjAwOS0wMi0wNiAxODoyOToxOS4wMDAwMDAwMDAgKzAxMDAKQEAgLTIxLDcgKzIxLDggQEAK
ICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2lu
Y2x1ZGUgPGxpbnV4L2NkZXYuaD4KLSNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CisjaW5j
bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8YXNtL3VhY2Nlc3Mu
aD4KIAogI2luY2x1ZGUgImRhenVrb2ZzX2ZzLmgiCiAjaW5jbHVkZSAiZGV2LmgiCkBAIC01
NiwxMiArNTcsMTQgQEAgaW50IGRhenVrb2ZzX2NoZWNrX2lnbm9yZV9wcm9jZXNzKHZvaWQp
CiAKIHN0YXRpYyBpbnQgZGF6dWtvZnNfYWRkX2lnbihzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsK
LQlzdHJ1Y3QgZGF6dWtvZnNfcHJvYyAqcHJvYyA9Ci0JCWttZW1fY2FjaGVfemFsbG9jKGRh
enVrb2ZzX2lnbl9jYWNoZXAsIEdGUF9LRVJORUwpOworCXN0cnVjdCBkYXp1a29mc19wcm9j
ICpwcm9jOworCisJcHJvYyA9IGttZW1fY2FjaGVfYWxsb2MoZGF6dWtvZnNfaWduX2NhY2hl
cCwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcm9jKSB7CiAJCWZpbGUtPnByaXZhdGVfZGF0YSA9
IE5VTEw7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KKwltZW1zZXQocHJvYywgMCwgc2l6ZW9m
KCpwcm9jKSk7CiAKIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBwcm9jOwogCXByb2MtPmN1cnIg
PSBjdXJyZW50OwpAQCAtMTI0LDcgKzEyNywxMSBAQCBzdGF0aWMgdm9pZCBkYXp1a29mc19k
ZXN0cm95X2lnbmxpc3Qodm9pCiAJfQogfQogCi1zdGF0aWMgc3RydWN0IGNkZXYgaWduX2Nk
ZXY7CitzdGF0aWMgc3RydWN0IHsKKwlzdHJ1Y3QgY2RldiBjZGV2OworCXN0cnVjdCBkZXZp
Y2UgZGV2OworCXN0cnVjdCBjbGFzc19kZXZpY2UgY2xzX2RldjsKK30gaWduX2RldjsKIAog
c3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaWduX2ZvcHMgPSB7CiAJLm93bmVyCQk9
IFRISVNfTU9EVUxFLApAQCAtMTMyLDExICsxMzksMjMgQEAgc3RhdGljIHN0cnVjdCBmaWxl
X29wZXJhdGlvbnMgaWduX2ZvcHMgPQogCS5yZWxlYXNlCT0gZGF6dWtvZnNfaWduX3JlbGVh
c2UsCiB9OwogCisKK3N0YXRpYyB2b2lkIGRhenVrb2ZzX2lnbl9jbGFzc19kZXZfcmVsZWFz
ZShzdHJ1Y3QgY2xhc3NfZGV2aWNlICpkZXYpCit7CisJLy8gbm90aGluZworfQorCitzdGF0
aWMgdm9pZCBkYXp1a29mc19pZ25fZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQor
eworCS8vIG5vdGhpbmcKK30KKworCiBpbnQgZGF6dWtvZnNfaWduX2Rldl9pbml0KGludCBk
ZXZfbWFqb3IsIGludCBkZXZfbWlub3IsCiAJCQkgIHN0cnVjdCBjbGFzcyAqZGF6dWtvZnNf
Y2xhc3MpCiB7Ci0JaW50IGVyciA9IDA7Ci0Jc3RydWN0IGRldmljZSAqZGV2OworCWRldl90
IGRldnQ7CisJaW50IGVycjsKIAogCUlOSVRfTElTVF9IRUFEKCZpZ25fbGlzdC5saXN0KTsK
IAltdXRleF9pbml0KCZpZ25fbGlzdF9tdXRleCk7CkBAIC0xNDQsNDMgKzE2Myw1NyBAQCBp
bnQgZGF6dWtvZnNfaWduX2Rldl9pbml0KGludCBkZXZfbWFqb3IsCiAJZGF6dWtvZnNfaWdu
X2NhY2hlcCA9CiAJCWttZW1fY2FjaGVfY3JlYXRlKCJkYXp1a29mc19pZ25fY2FjaGUiLAog
CQkJCSAgc2l6ZW9mKHN0cnVjdCBkYXp1a29mc19wcm9jKSwgMCwKLQkJCQkgIFNMQUJfSFdD
QUNIRV9BTElHTiwgTlVMTCk7Ci0JaWYgKCFkYXp1a29mc19pZ25fY2FjaGVwKSB7Ci0JCWVy
ciA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyb3Jfb3V0MTsKLQl9CisJCQkJICBTTEFCX0hXQ0FD
SEVfQUxJR04sIE5VTEwsIE5VTEwpOworCWlmICghZGF6dWtvZnNfaWduX2NhY2hlcCkgCisJ
CXJldHVybiAtRU5PTUVNOworCisJZGV2dCA9IE1LREVWKGRldl9tYWpvciwgZGV2X21pbm9y
KTsKIAogCS8qIHNldHVwIGNkZXYgZm9yIGlnbm9yZSAqLwotCWNkZXZfaW5pdCgmaWduX2Nk
ZXYsICZpZ25fZm9wcyk7Ci0JaWduX2NkZXYub3duZXIgPSBUSElTX01PRFVMRTsKLQllcnIg
PSBjZGV2X2FkZCgmaWduX2NkZXYsIE1LREVWKGRldl9tYWpvciwgZGV2X21pbm9yKSwgMSk7
CisJY2Rldl9pbml0KCZpZ25fZGV2LmNkZXYsICZpZ25fZm9wcyk7CisJaWduX2Rldi5jZGV2
Lm93bmVyID0gVEhJU19NT0RVTEU7CisJZXJyID0gY2Rldl9hZGQoJmlnbl9kZXYuY2Rldiwg
ZGV2dCwgMSk7CiAJaWYgKGVycikKKwkJZ290byBlcnJvcl9vdXQ7CQkKKworCWlnbl9kZXYu
ZGV2LnBhcmVudCA9ICZwbGF0Zm9ybV9idXM7CisJaWduX2Rldi5kZXYucmVsZWFzZSA9IGRh
enVrb2ZzX2lnbl9kZXZfcmVsZWFzZTsKKwlzbnByaW50ZihpZ25fZGV2LmRldi5idXNfaWQs
IEJVU19JRF9TSVpFLCAiJXMuaWduIiwgREVWSUNFX05BTUUpOworCisJZXJyID0gZGV2aWNl
X3JlZ2lzdGVyKCZpZ25fZGV2LmRldik7CisKKwlpZiAoZXJyKSAKIAkJZ290byBlcnJvcl9v
dXQyOwogCi0JLyogY3JlYXRlIGlnbm9yZSBkZXZpY2UgKi8KLQlkZXYgPSBkZXZpY2VfY3Jl
YXRlKGRhenVrb2ZzX2NsYXNzLCBOVUxMLCBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5vciks
Ci0JCQkgICAgTlVMTCwgIiVzLmlnbiIsIERFVklDRV9OQU1FKTsKLQlpZiAoSVNfRVJSKGRl
dikpIHsKLQkJZXJyID0gUFRSX0VSUihkZXYpOworCWlnbl9kZXYuY2xzX2Rldi5yZWxlYXNl
ID0gZGF6dWtvZnNfaWduX2NsYXNzX2Rldl9yZWxlYXNlOworCWlnbl9kZXYuY2xzX2Rldi5j
bGFzcyA9IGRhenVrb2ZzX2NsYXNzOworCWlnbl9kZXYuY2xzX2Rldi5kZXYgPSAmaWduX2Rl
di5kZXY7CisJc25wcmludGYoaWduX2Rldi5jbHNfZGV2LmNsYXNzX2lkLCBCVVNfSURfU0la
RSwgIiVzLmlnbiIsIERFVklDRV9OQU1FKTsKKwlpZ25fZGV2LmNsc19kZXYuZGV2dCA9IGRl
dnQ7CisKKwllcnIgPSBjbGFzc19kZXZpY2VfcmVnaXN0ZXIoJmlnbl9kZXYuY2xzX2Rldik7
CisKKwlpZiAoZXJyKQogCQlnb3RvIGVycm9yX291dDM7Ci0JfQogCi0JcmV0dXJuIDA7CiAK
KwlyZXR1cm4gMDsKIGVycm9yX291dDM6Ci0JY2Rldl9kZWwoJmlnbl9jZGV2KTsKKwlkZXZp
Y2VfdW5yZWdpc3RlcigmaWduX2Rldi5kZXYpOwogZXJyb3Jfb3V0MjoKLQlkYXp1a29mc19k
ZXN0cm95X2lnbmxpc3QoKTsKKwljZGV2X2RlbCgmaWduX2Rldi5jZGV2KTsKK2Vycm9yX291
dDoKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGF6dWtvZnNfaWduX2NhY2hlcCk7Ci1lcnJvcl9v
dXQxOgogCXJldHVybiBlcnI7CiB9CiAKKwogdm9pZCBkYXp1a29mc19pZ25fZGV2X2Rlc3Ry
b3koaW50IGRldl9tYWpvciwgaW50IGRldl9taW5vciwKIAkJCSAgICAgIHN0cnVjdCBjbGFz
cyAqZGF6dWtvZnNfY2xhc3MpCiB7Ci0JZGV2aWNlX2Rlc3Ryb3koZGF6dWtvZnNfY2xhc3Ms
IE1LREVWKGRldl9tYWpvciwgZGV2X21pbm9yKSk7Ci0JY2Rldl9kZWwoJmlnbl9jZGV2KTsK
KwljbGFzc19kZXZpY2VfdW5yZWdpc3RlcigmaWduX2Rldi5jbHNfZGV2KTsKKwlkZXZpY2Vf
dW5yZWdpc3RlcigmaWduX2Rldi5kZXYpOworCWNkZXZfZGVsKCZpZ25fZGV2LmNkZXYpOwog
CWRhenVrb2ZzX2Rlc3Ryb3lfaWdubGlzdCgpOwogCWttZW1fY2FjaGVfZGVzdHJveShkYXp1
a29mc19pZ25fY2FjaGVwKTsKIH0KZGlmZiAteCBDVlMgLXJ1cCBkYXp1a29mcy0zLjAuMC9p
bm9kZS5jIGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AyL2lub2RlLmMKLS0t
IGRhenVrb2ZzLTMuMC4wL2lub2RlLmMJMjAwOS0wMi0yMiAxNzo0NjowMi4wMDAwMDAwMDAg
KzAxMDAKKysrIGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AyL2lub2RlLmMJ
MjAwOS0wNy0wNiAxMDoyNjoxMy4wMDAwMDAwMDAgKzAyMDAKQEAgLTI1LDE1ICsyNSwxOSBA
QAogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvbmFtZWkuaD4KICNp
bmNsdWRlIDxsaW51eC9tb3VudC5oPgotI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KLSNp
bmNsdWRlIDxsaW51eC9mc19zdGFjay5oPgotCisjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4K
ICNpbmNsdWRlICJkYXp1a29mc19mcy5oIgogCiBzdGF0aWMgc3RydWN0IGlub2RlX29wZXJh
dGlvbnMgZGF6dWtvZnNfc3ltbGlua19pb3BzOwogc3RhdGljIHN0cnVjdCBpbm9kZV9vcGVy
YXRpb25zIGRhenVrb2ZzX2Rpcl9pb3BzOwogc3RhdGljIHN0cnVjdCBpbm9kZV9vcGVyYXRp
b25zIGRhenVrb2ZzX21haW5faW9wczsKIAordm9pZCBmc3N0YWNrX2NvcHlfaW5vZGVfc2l6
ZShzdHJ1Y3QgaW5vZGUgKmRzdCwgY29uc3Qgc3RydWN0IGlub2RlICpzcmMpCit7CisJaV9z
aXplX3dyaXRlKGRzdCwgaV9zaXplX3JlYWQoKHN0cnVjdCBpbm9kZSAqKSBzcmMpKTsKKwlk
c3QtPmlfYmxvY2tzID0gc3JjLT5pX2Jsb2NrczsKK30KKwogc3RhdGljIGludCBkYXp1a29m
c19pbm9kZV90ZXN0KHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQkgICAgICAgdm9pZCAqY2Fu
ZGlkYXRlX2xvd2VyX2lub2RlKQogewpAQCAtNDcsMTQgKzUxLDI4IEBAIHN0YXRpYyBpbnQg
ZGF6dWtvZnNfaW5vZGVfdGVzdChzdHJ1Y3QgaW4KIAogc3RhdGljIHZvaWQgZGF6dWtvZnNf
aW5pdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaW5vZGUgKmxvd2VyX2lu
b2RlKQogewotCVNFVF9MT1dFUl9JTk9ERShpbm9kZSwgbG93ZXJfaW5vZGUpOwotCWlub2Rl
LT5pX2lubyA9IGxvd2VyX2lub2RlLT5pX2lubzsKLQlpbm9kZS0+aV92ZXJzaW9uKys7Ci0J
aW5vZGUtPmlfb3AgPSAmZGF6dWtvZnNfbWFpbl9pb3BzOwotCWlub2RlLT5pX2ZvcCA9ICZk
YXp1a29mc19tYWluX2ZvcHM7Ci0JaW5vZGUtPmlfbWFwcGluZy0+YV9vcHMgPSAmZGF6dWtv
ZnNfYW9wczsKKyAgICAgICAgU0VUX0xPV0VSX0lOT0RFKGlub2RlLCBsb3dlcl9pbm9kZSk7
CisgICAgICAgIGlub2RlLT5pX2lubyA9IGxvd2VyX2lub2RlLT5pX2lubzsKKyAgICAgICAg
aW5vZGUtPmlfdmVyc2lvbisrOworCisgICAgICAgIGlmIChTX0lTRElSKGxvd2VyX2lub2Rl
LT5pX21vZGUpKSB7CisgICAgICAgICAgICAgICAgaW5vZGUtPmlfb3AgPSAmZGF6dWtvZnNf
ZGlyX2lvcHM7CisgICAgICAgICAgICAgICAgaW5vZGUtPmlfZm9wID0gJmRhenVrb2ZzX2Rp
cl9mb3BzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlub2RlLT5pX29w
ID0gJmRhenVrb2ZzX21haW5faW9wczsKKyAgICAgICAgICAgICAgICBpbm9kZS0+aV9mb3Ag
PSAmZGF6dWtvZnNfbWFpbl9mb3BzOworCisgICAgICAgICAgICAgICAgaWYgKFNfSVNMTkso
bG93ZXJfaW5vZGUtPmlfbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZS0+
aV9vcCA9ICZkYXp1a29mc19zeW1saW5rX2lvcHM7CisgICAgICAgICAgICAgICAgZWxzZSAg
aWYgKHNwZWNpYWxfZmlsZShsb3dlcl9pbm9kZS0+aV9tb2RlKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaW5pdF9zcGVjaWFsX2lub2RlKGlub2RlLCBsb3dlcl9pbm9kZS0+aV9t
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2Vy
X2lub2RlLT5pX3JkZXYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBpbm9kZS0+aV9tYXBwaW5nLT5hX29wcyA9ICZkYXp1a29mc19hb3BzOwogfQogCisKIHN0
YXRpYyBpbnQgZGF6dWtvZnNfaW5vZGVfc2V0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQg
Kmxvd2VyX2lub2RlKQogewogCWRhenVrb2ZzX2luaXRfaW5vZGUoaW5vZGUsIChzdHJ1Y3Qg
aW5vZGUgKilsb3dlcl9pbm9kZSk7CkBAIC02Miw3MiArODAsMTI0IEBAIHN0YXRpYyBpbnQg
ZGF6dWtvZnNfaW5vZGVfc2V0KHN0cnVjdCBpbm8KIH0KIAogaW50IGRhenVrb2ZzX2ludGVy
cG9zZShzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9kZW50cnksIHN0cnVjdCBkZW50cnkgKmRlbnRy
eSwKLQkJICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgZmxhZykKKwkJICAgICBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgaGFzaCkKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlu
b2RlOwotCXN0cnVjdCBpbm9kZSAqbG93ZXJfaW5vZGUgPSBpZ3JhYihsb3dlcl9kZW50cnkt
PmRfaW5vZGUpOwotCWludCBlcnIgPSAwOworCXN0cnVjdCBpbm9kZSAqbG93ZXJfaW5vZGU7
CisJaW50IGVycjsKIAotCWlmICghbG93ZXJfaW5vZGUpIHsKLQkJZXJyID0gLUVTVEFMRTsK
LQkJZ290byBvdXQ7Ci0JfQorCWxvd2VyX2lub2RlID0gaWdyYWIobG93ZXJfZGVudHJ5LT5k
X2lub2RlKTsKIAotCWlmIChsb3dlcl9pbm9kZS0+aV9zYiAhPSBHRVRfTE9XRVJfU0Ioc2Ip
KSB7Ci0JCWlwdXQobG93ZXJfaW5vZGUpOwotCQllcnIgPSAtRVhERVY7Ci0JCWdvdG8gb3V0
OwotCX0KKwlpZiAoIWxvd2VyX2lub2RlKSAKKwkJcmV0dXJuIC1FU1RBTEU7CiAKIAlpbm9k
ZSA9IGlnZXQ1X2xvY2tlZChzYiwgKHVuc2lnbmVkIGxvbmcpbG93ZXJfaW5vZGUsCiAJCQkg
ICAgIGRhenVrb2ZzX2lub2RlX3Rlc3QsIGRhenVrb2ZzX2lub2RlX3NldCwKIAkJCSAgICAg
bG93ZXJfaW5vZGUpOwotCiAJaWYgKCFpbm9kZSkgewotCQlpcHV0KGxvd2VyX2lub2RlKTsK
IAkJZXJyID0gLUVBQ0NFUzsKLQkJZ290byBvdXQ7CisJCWdvdG8gZXJyOwogCX0KIAotCWlm
IChpbm9kZS0+aV9zdGF0ZSAmIElfTkVXKSB7CisJaWYgKGlub2RlLT5pX3N0YXRlICYgSV9O
RVcpIAogCQl1bmxvY2tfbmV3X2lub2RlKGlub2RlKTsKIAkJLyoKIAkJICogVGhpcyBpcyBh
IG5ldyBub2RlIHNvIHdlIGxlYXZlIHRoZSBsb3dlcl9ub2RlICJpbiB1c2UiCiAJCSAqIGFu
ZCBkbyBub3QgY2FsbCBpcHV0KCkuCiAJCSAqLwotCX0gZWxzZSB7CisJZWxzZSAKIAkJLyoK
IAkJICogVGhpcyBpcyBub3QgYSBuZXcgbm9kZSBzbyB3ZSBkZWNyZW1lbnQgdGhlIHVzYWdl
IGNvdW50LgogCQkgKi8KIAkJaXB1dChsb3dlcl9pbm9kZSk7Ci0JfQogCi0JaWYgKFNfSVNM
TksobG93ZXJfaW5vZGUtPmlfbW9kZSkpCi0JCWlub2RlLT5pX29wID0gJmRhenVrb2ZzX3N5
bWxpbmtfaW9wczsKLQllbHNlIGlmIChTX0lTRElSKGxvd2VyX2lub2RlLT5pX21vZGUpKQot
CQlpbm9kZS0+aV9vcCA9ICZkYXp1a29mc19kaXJfaW9wczsKLQotCWlmIChTX0lTRElSKGxv
d2VyX2lub2RlLT5pX21vZGUpKQotCQlpbm9kZS0+aV9mb3AgPSAmZGF6dWtvZnNfZGlyX2Zv
cHM7Ci0KLQlpZiAoc3BlY2lhbF9maWxlKGxvd2VyX2lub2RlLT5pX21vZGUpKSB7Ci0JCWlu
aXRfc3BlY2lhbF9pbm9kZShpbm9kZSwgbG93ZXJfaW5vZGUtPmlfbW9kZSwKLQkJCQkgICBs
b3dlcl9pbm9kZS0+aV9yZGV2KTsKLQl9Ci0KLQlkZW50cnktPmRfb3AgPSAmZGF6dWtvZnNf
ZG9wczsKIAotCWlmIChmbGFnKQorCWlmIChoYXNoKQogCQlkX2FkZChkZW50cnksIGlub2Rl
KTsKIAllbHNlCiAJCWRfaW5zdGFudGlhdGUoZGVudHJ5LCBpbm9kZSk7CiAKLQlmc3N0YWNr
X2NvcHlfYXR0cl9hbGwoaW5vZGUsIGxvd2VyX2lub2RlLCBOVUxMKTsKKwlmc3N0YWNrX2Nv
cHlfYXR0cl9hbGwoaW5vZGUsIGxvd2VyX2lub2RlKTsKIAlmc3N0YWNrX2NvcHlfaW5vZGVf
c2l6ZShpbm9kZSwgbG93ZXJfaW5vZGUpOwotb3V0OgorCisJcmV0dXJuIDA7CitlcnI6CisJ
aXB1dChsb3dlcl9pbm9kZSk7CiAJcmV0dXJuIGVycjsKIH0KIAorLyogY3JlYXRlcyBhIG5l
dyBsb3dlciBkZW50cnkgKi8KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkYXp1a29mc19uZXdf
bG93ZXJfZGVudHJ5KHN0cnVjdCBxc3RyICpuYW1lLAorCQkJCQkJc3RydWN0IGRlbnRyeSAq
bG93ZXJfYmFzZSwgCisJCQkJCQlzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKK3sKKwlzdHJ1Y3Qg
ZGVudHJ5ICpuZXdfZGVudHJ5OworCXN0cnVjdCBkZW50cnkgKnRtcDsKKwlzdHJ1Y3QgaW5v
ZGUgKmxvd2VyX2lub2RlOworCisJbG93ZXJfaW5vZGUgPSBsb3dlcl9iYXNlLT5kX2lub2Rl
OworCS8qIFhYWDogaXMgdGhpcyBjaGVjayBzdGlsbCBuZWNlc3Nhcnk/IChzZWUgX19sb29r
dXBfaGFzaCgpKQorCSAgIFRoaXMgaXMgKGhvcGVseSkgcHJvdGVjdGVkIGJ5IGxvY2tlZCB1
cHBlciBpbm9kZSAqLworCWlmIChJU19ERUFERElSKGxvd2VyX2lub2RlKSkgeworCQluZXdf
ZGVudHJ5ID0gRVJSX1BUUigtRU5PRU5UKTsKKwkJZ290byBvdXQ7CisJfQorCXRtcCA9IGRf
YWxsb2MobG93ZXJfYmFzZSwgbmFtZSk7CisJaWYgKCF0bXApIHsKKwkJbmV3X2RlbnRyeSA9
IEVSUl9QVFIoLUVOT01FTSk7CisJCWdvdG8gb3V0OworCX0KKwluZXdfZGVudHJ5ID0gbG93
ZXJfaW5vZGUtPmlfb3AtPmxvb2t1cChsb3dlcl9pbm9kZSwgdG1wLCBuZCk7CisJLyogbG9v
a3VwKCkgc2VlbWluZ2x5IGlzIGFsbG93ZWQgdG8gcmV0dXJuIGl0cyBvd24gZGVudHJ5ICh3
aGljaCAKKwkgKiBtYXkgaW5kZWVkIGJlIGEgZGVudHJ5IG9yIG9ubHkgYW4gZXJyb3IpLiBJ
ZiBzbworCSAqIHdlIHVzZSBpdCBhbmQgZGlzY2FyZCBvdXJzLiBPdGhlcndpc2Ugd2UgdXNl
IG91cnMgKi8gCisJaWYgKCFuZXdfZGVudHJ5KSAKKwkJbmV3X2RlbnRyeSA9IHRtcDsKKwll
bHNlIAorCQlkcHV0KHRtcCk7CisJCQorb3V0OgkJCisJcmV0dXJuIG5ld19kZW50cnk7Cit9
CisKKworLyogZ2V0IGxvd2VyIGRlbnRyeSBmb3IgZ2l2ZW4gbmFtZSAqLworc3RhdGljIHN0
cnVjdCBkZW50cnkgKmRhenVrb2ZzX2xvb2t1cF9vbmVfbG93ZXIoc3RydWN0IHFzdHIgKm5h
bWUsIAorCQkJCQkJc3RydWN0IGRlbnRyeSAqbG93ZXJfYmFzZSwKKwkJCQkJCXN0cnVjdCB2
ZnNtb3VudCAqbG93ZXJfbW50KQoreworCXN0cnVjdCBkZW50cnkgKnJlc3VsdDsKKwlzdHJ1
Y3QgbmFtZWlkYXRhIG5kOworCWludCBlcnI7CisKKwkvKiBzZWUgdmZzX3BhdGhfbG9va3Vw
IGluIGtlcm5lbCB2ZXJzaW9ucyA+PSAyLjYuMjQgKi8KKwluZC5sYXN0X3R5cGUgPSBMQVNU
X1JPT1Q7CisJbmQuZmxhZ3MgPSAwOworCW5kLmRlcHRoID0gMDsKKwluZC5kZW50cnkgPSBk
Z2V0KGxvd2VyX2Jhc2UpOworCW5kLm1udCA9IG1udGdldChsb3dlcl9tbnQpOworCisJZXJy
ID0gcGF0aF93YWxrKG5hbWUtPm5hbWUsICZuZCk7CisKKwlpZiAoIWVycikgeworCQkvKiBp
bm9kZSBhbHJlYWR5IGV4aXN0cyBvbiBkaXNrICovCisJCXJlc3VsdCA9IG5kLmRlbnRyeTsK
KwkJLyogd2UgZG9udCBuZWVkIHRoZSBtb3VudCAqLworCQltbnRwdXQobmQubW50KTsKKwkJ
Z290byBvdXQ7CisJfQorCWlmIChlcnIgIT0gLUVOT0VOVCkgeyAvKiB0aGlzIGlzIGEgUkVB
TCBlcnJvciAqLwkKKwkJcmVzdWx0ID0gRVJSX1BUUihlcnIpOworCQlnb3RvIG91dDsKKwl9
CQorCS8qIGNyZWF0ZSBhIG5ldyAobG93ZXIpIGRlbnRyeSAqLworCXJlc3VsdCA9IGRhenVr
b2ZzX25ld19sb3dlcl9kZW50cnkobmFtZSwgbG93ZXJfYmFzZSwgJm5kKTsKK291dDoKKwly
ZXR1cm4gcmVzdWx0OworCit9CisKKwogLyoqCiAgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIHdo
ZW4gdGhlIFZGUyBuZWVkcyB0byBsb29rIHVwIGFuIGlub2RlIGluIGEgcGFyZW50CiAgKiBk
aXJlY3RvcnkuIFRoZSBuYW1lIHRvIGxvb2sgZm9yIGlzIGZvdW5kIGluIHRoZSBkZW50cnku
IFRoaXMgbWV0aG9kCkBAIC0xNDgsNjQgKzIxOCw1MiBAQCBzdGF0aWMgc3RydWN0IGRlbnRy
eSAqZGF6dWtvZnNfbG9va3VwKHN0CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5Owog
CXN0cnVjdCBkZW50cnkgKmxvd2VyX2RlbnRyeV9wYXJlbnQ7CiAJc3RydWN0IHZmc21vdW50
ICpsb3dlcl9tbnQ7Ci0JaW50IGVyciA9IDA7Ci0KLQlpZiAoKGRlbnRyeS0+ZF9uYW1lLmxl
biA9PSAxICYmICFzdHJjbXAoZGVudHJ5LT5kX25hbWUubmFtZSwgIi4iKSkKLQkgICAgfHwg
KGRlbnRyeS0+ZF9uYW1lLmxlbiA9PSAyICYmCi0JCSFzdHJjbXAoZGVudHJ5LT5kX25hbWUu
bmFtZSwgIi4uIikpKSB7Ci0JCWRfZHJvcChkZW50cnkpOwotCQlnb3RvIG91dDsKLQl9Ci0K
LQlkZW50cnktPmRfb3AgPSAmZGF6dWtvZnNfZG9wczsKKwlzdHJ1Y3QgZGF6dWtvZnNfZGVu
dHJ5X2luZm8gKmRpOworCWludCBlcnI7CiAKIAlsb3dlcl9kZW50cnlfcGFyZW50ID0gR0VU
X0xPV0VSX0RFTlRSWShkZW50cnktPmRfcGFyZW50KTsKLQlsb3dlcl9kZW50cnkgPSBsb29r
dXBfb25lX2xlbihkZW50cnktPmRfbmFtZS5uYW1lLCBsb3dlcl9kZW50cnlfcGFyZW50LAot
CQkJCSAgICAgIGRlbnRyeS0+ZF9uYW1lLmxlbik7CisJLyogc2hvdWxkIGJlIHJlbGVhc2Vk
IGluIGRfcmVsZWFzZSgpICovCisJbG93ZXJfbW50ID0gbW50Z2V0KEdFVF9MT1dFUl9NTlQo
ZGVudHJ5LT5kX3BhcmVudCkpOwogCisJbG93ZXJfZGVudHJ5ID0gZGF6dWtvZnNfbG9va3Vw
X29uZV9sb3dlcigmZGVudHJ5LT5kX25hbWUsIAorCQkJCQkJIGxvd2VyX2RlbnRyeV9wYXJl
bnQsIAorCQkJCQkJIGxvd2VyX21udCk7IAogCWlmIChJU19FUlIobG93ZXJfZGVudHJ5KSkg
ewotCQllcnIgPSBQVFJfRVJSKGxvd2VyX2RlbnRyeSk7Ci0JCWRfZHJvcChkZW50cnkpOwot
CQlnb3RvIG91dDsKKwkJbW50cHV0KGxvd2VyX21udCk7CisJCXJldHVybiBsb3dlcl9kZW50
cnk7CiAJfQotCiAJQlVHX09OKCFhdG9taWNfcmVhZCgmbG93ZXJfZGVudHJ5LT5kX2NvdW50
KSk7CiAKLQlTRVRfREVOVFJZX0lORk8oZGVudHJ5LCBrbWVtX2NhY2hlX3phbGxvYyhkYXp1
a29mc19kZW50cnlfaW5mb19jYWNoZXAsCi0JCQlHRlBfS0VSTkVMKSk7Ci0KLQlpZiAoIUdF
VF9ERU5UUllfSU5GTyhkZW50cnkpKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gb3V0
X2RwdXQ7CisJZGVudHJ5LT5kX29wID0gJmRhenVrb2ZzX2RvcHM7CisJZGkgPSBrbWVtX2Nh
Y2hlX2FsbG9jKGRhenVrb2ZzX2RlbnRyeV9pbmZvX2NhY2hlcCwgR0ZQX0tFUk5FTCk7CisJ
aWYgKCFkaSkgeworCQltbnRwdXQobG93ZXJfbW50KTsKKwkJZHB1dChsb3dlcl9kZW50cnkp
OworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAl9Ci0KLQlsb3dlcl9tbnQgPSBtbnRn
ZXQoR0VUX0xPV0VSX01OVChkZW50cnktPmRfcGFyZW50KSk7Ci0KLQlmc3N0YWNrX2NvcHlf
YXR0cl9hdGltZShkaXIsIGxvd2VyX2RlbnRyeV9wYXJlbnQtPmRfaW5vZGUpOwotCisJbWVt
c2V0KGRpLCAwLCBzaXplb2YoKmRpKSk7CisJU0VUX0RFTlRSWV9JTkZPKGRlbnRyeSwgZGkp
OwogCVNFVF9MT1dFUl9ERU5UUlkoZGVudHJ5LCBsb3dlcl9kZW50cnksIGxvd2VyX21udCk7
Ci0KKwkvKiBmcm9tIG5vdyBsb3dlciBkZW50cnkgYW5kIGxvd2VyIG1vdW50IGFyZSByZWxl
YXNlZCBpbiAKKwkgIGRfcmVsZWFzZSBvZiB1cHBlciBkZW50cnkgKi8KKwlmc3N0YWNrX2Nv
cHlfYXR0cl9hdGltZShkaXIsIGxvd2VyX2RlbnRyeV9wYXJlbnQtPmRfaW5vZGUpOwogCWlm
ICghbG93ZXJfZGVudHJ5LT5kX2lub2RlKSB7CiAJCS8qCiAJCSAqIFdlIHdhbnQgdG8gYWRk
IGJlY2F1c2Ugd2UgY291bGQgbm90IGZpbmQgaW4gbG93ZXIuCiAJCSAqLwogCQlkX2FkZChk
ZW50cnksIE5VTEwpOwotCQlnb3RvIG91dDsKKwkJZ290byBvazsKIAl9CiAKIAllcnIgPSBk
YXp1a29mc19pbnRlcnBvc2UobG93ZXJfZGVudHJ5LCBkZW50cnksIGRpci0+aV9zYiwgMSk7
Ci0JaWYgKGVycikKLQkJZ290byBvdXRfZHB1dDsKLQlnb3RvIG91dDsKKwlpZiAoZXJyKSAK
KwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAotb3V0X2RwdXQ6Ci0JZHB1dChsb3dlcl9kZW50
cnkpOwotCWRfZHJvcChkZW50cnkpOwotCi1vdXQ6Ci0JcmV0dXJuIEVSUl9QVFIoZXJyKTsK
K29rOgorCXJldHVybiBOVUxMOyAvKiB0ZWxsIGNhbGxlciB0byB1c2UgaXRzIG93biwgcGFz
c2VkIGRlbnRyeSwgbm90IG91cnMgKi8KIH0KIAorCiAvKioKICAqIERlc2NyaXB0aW9uOiBD
YWxsZWQgYnkgdGhlIG1rbm9kKDIpIHN5c3RlbSBjYWxsIHRvIGNyZWF0ZSBhIGRldmljZQog
ICogKGNoYXIsIGJsb2NrKSBpbm9kZSBvciBhIG5hbWVkIHBpcGUgKEZJRk8pIG9yIHNvY2tl
dC4gT25seSByZXF1aXJlZCBpZgpAQCAtMjE2LDE0ICsyNzQsMTUgQEAgc3RhdGljIGludCBk
YXp1a29mc19ta25vZChzdHJ1Y3QgaW5vZGUgKgogCQkJICBkZXZfdCBkZXYpCiB7CiAJc3Ry
dWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5ID0gR0VUX0xPV0VSX0RFTlRSWShkZW50cnkpOwor
CXN0cnVjdCB2ZnNtb3VudCAqbG93ZXJfbW91bnQgPSBHRVRfTE9XRVJfTU5UKGRlbnRyeSk7
CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5X3BhcmVudCA9IGRnZXQobG93ZXJfZGVu
dHJ5LT5kX3BhcmVudCk7CiAJc3RydWN0IGlub2RlICpsb3dlcl9kZW50cnlfcGFyZW50X2lu
b2RlID0gbG93ZXJfZGVudHJ5X3BhcmVudC0+ZF9pbm9kZTsKIAlpbnQgZXJyID0gLUVOT0VO
VDsKIAotCW11dGV4X2xvY2tfbmVzdGVkKCYobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZS0+
aV9tdXRleCksCi0JCQkgIElfTVVURVhfUEFSRU5UKTsKKwltdXRleF9sb2NrKCYobG93ZXJf
ZGVudHJ5X3BhcmVudF9pbm9kZS0+aV9tdXRleCkpOwogCi0JZXJyID0gdmZzX21rbm9kKGxv
d2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUsIGxvd2VyX2RlbnRyeSwgbW9kZSwgZGV2KTsKKwll
cnIgPSB2ZnNfbWtub2QobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93ZXJfZGVudHJ5
LCBsb3dlcl9tb3VudCwgCisJCQltb2RlLCBkZXYpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0
OwogCkBAIC0yNDgsMTQgKzMwNywxNSBAQCBvdXQ6CiBzdGF0aWMgaW50IGRhenVrb2ZzX21r
ZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2Rl
KQogewogCXN0cnVjdCBkZW50cnkgKmxvd2VyX2RlbnRyeSA9IEdFVF9MT1dFUl9ERU5UUlko
ZGVudHJ5KTsKKwlzdHJ1Y3QgdmZzbW91bnQgKmxvd2VyX21vdW50ID0gR0VUX0xPV0VSX01O
VChkZW50cnkpOwogCXN0cnVjdCBkZW50cnkgKmxvd2VyX2RlbnRyeV9wYXJlbnQgPSBkZ2V0
KGxvd2VyX2RlbnRyeS0+ZF9wYXJlbnQpOwogCXN0cnVjdCBpbm9kZSAqbG93ZXJfZGVudHJ5
X3BhcmVudF9pbm9kZSA9IGxvd2VyX2RlbnRyeV9wYXJlbnQtPmRfaW5vZGU7CiAJaW50IGVy
ciA9IC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrX25lc3RlZCgmKGxvd2VyX2RlbnRyeV9wYXJl
bnRfaW5vZGUtPmlfbXV0ZXgpLAotCQkJICBJX01VVEVYX1BBUkVOVCk7CisJbXV0ZXhfbG9j
aygmKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgpKTsKIAotCWVyciA9IHZm
c19ta2Rpcihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLCBsb3dlcl9kZW50cnksIG1vZGUp
OworCWVyciA9IHZmc19ta2Rpcihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLCBsb3dlcl9k
ZW50cnksIGxvd2VyX21vdW50LCAKKwkJCW1vZGUpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0
OwogCkBAIC0yOTEsMjIgKzM1MSwyMSBAQCBzdGF0aWMgaW50IGRhenVrb2ZzX2NyZWF0ZShz
dHJ1Y3QgaW5vZGUgCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5X3NhdmU7CiAJaW50IGVyciA9
IC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrX25lc3RlZCgmKGxvd2VyX2RlbnRyeV9wYXJlbnRf
aW5vZGUtPmlfbXV0ZXgpLAotCQkJICBJX01VVEVYX1BBUkVOVCk7CisJbXV0ZXhfbG9jaygm
KGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgpKTsKIAotCXZmc21vdW50X3Nh
dmUgPSBuZC0+cGF0aC5tbnQ7Ci0JZGVudHJ5X3NhdmUgPSBuZC0+cGF0aC5kZW50cnk7CisJ
dmZzbW91bnRfc2F2ZSA9IG5kLT5tbnQ7CisJZGVudHJ5X3NhdmUgPSBuZC0+ZGVudHJ5Owog
Ci0JbmQtPnBhdGgubW50ID0gbW50Z2V0KGxvd2VyX21udCk7Ci0JbmQtPnBhdGguZGVudHJ5
ID0gZGdldChsb3dlcl9kZW50cnkpOworCW5kLT5tbnQgPSBtbnRnZXQobG93ZXJfbW50KTsK
KwluZC0+ZGVudHJ5ID0gZGdldChsb3dlcl9kZW50cnkpOwogCiAJZXJyID0gdmZzX2NyZWF0
ZShsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLCBsb3dlcl9kZW50cnksIG1vZGUsIG5kKTsK
IAogCW1udHB1dChsb3dlcl9tbnQpOwogCWRwdXQobG93ZXJfZGVudHJ5KTsKIAotCW5kLT5w
YXRoLm1udCA9IHZmc21vdW50X3NhdmU7Ci0JbmQtPnBhdGguZGVudHJ5ID0gZGVudHJ5X3Nh
dmU7CisJbmQtPm1udCA9IHZmc21vdW50X3NhdmU7CisJbmQtPmRlbnRyeSA9IGRlbnRyeV9z
YXZlOwogCiAJaWYgKGVycikKIAkJZ290byBvdXQ7CkBAIC0zMzMsMTQgKzM5MiwxNSBAQCBz
dGF0aWMgaW50IGRhenVrb2ZzX3N5bWxpbmsoc3RydWN0IGlub2RlCiAJCQkgICAgY29uc3Qg
Y2hhciAqc3ltbmFtZSkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9kZW50cnkgPSBHRVRf
TE9XRVJfREVOVFJZKGRlbnRyeSk7CisJc3RydWN0IHZmc21vdW50ICpsb3dlcl9tb3VudCA9
IEdFVF9MT1dFUl9NTlQoZGVudHJ5KTsKIAlzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9kZW50cnlf
cGFyZW50ID0gZGdldChsb3dlcl9kZW50cnktPmRfcGFyZW50KTsKIAlzdHJ1Y3QgaW5vZGUg
Kmxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUgPSBsb3dlcl9kZW50cnlfcGFyZW50LT5kX2lu
b2RlOwogCWludCBlcnIgPSAtRU5PRU5UOwogCi0JbXV0ZXhfbG9ja19uZXN0ZWQoJihsb3dl
cl9kZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSwKLQkJCSAgSV9NVVRFWF9QQVJFTlQp
OworCW11dGV4X2xvY2soJihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSk7
CiAKLQllcnIgPSB2ZnNfc3ltbGluayhsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLCBsb3dl
cl9kZW50cnksIHN5bW5hbWUpOworCWVyciA9IHZmc19zeW1saW5rKGxvd2VyX2RlbnRyeV9w
YXJlbnRfaW5vZGUsIGxvd2VyX2RlbnRyeSwgbG93ZXJfbW91bnQsCisJCSAJICBzeW1uYW1l
LCBTX0lBTExVR08pOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCkBAIC00NTIsOSArNTEy
LDM3IEBAIHN0YXRpYyB2b2lkIGRhenVrb2ZzX3B1dF9saW5rKHN0cnVjdCBkZW4KICAqIERl
c2NyaXB0aW9uOiBDYWxsZWQgYnkgdGhlIFZGUyB0byBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0
cyBvbiBhCiAgKiBQT1NJWC1saWtlIGZpbGVzeXN0ZW0uCiAgKi8KLXN0YXRpYyBpbnQgZGF6
dWtvZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKK3N0YXRp
YyBpbnQgZGF6dWtvZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFz
aywKKwkJCSAgICAgICBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKIHsKLQlyZXR1cm4gaW5vZGVf
cGVybWlzc2lvbihHRVRfTE9XRVJfSU5PREUoaW5vZGUpLCBtYXNrKTsKKwlzdHJ1Y3QgdmZz
bW91bnQgKmxvd2VyX21udCA9IE5VTEw7CisJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5
ID0gTlVMTDsKKwlzdHJ1Y3QgdmZzbW91bnQgKnZmc21udF9zYXZlID0gTlVMTDsKKwlzdHJ1
Y3QgZGVudHJ5ICpkZW50cnlfc2F2ZSA9IE5VTEw7CisJaW50IGVycjsKKworCWlmIChuZCkg
eworCQlsb3dlcl9tbnQgPSBHRVRfTE9XRVJfTU5UKG5kLT5kZW50cnkpOworCQlsb3dlcl9k
ZW50cnkgPSBHRVRfTE9XRVJfREVOVFJZKG5kLT5kZW50cnkpOworCisJCXZmc21udF9zYXZl
ID0gbmQtPm1udDsKKwkJZGVudHJ5X3NhdmUgPSBuZC0+ZGVudHJ5OworCisJCW5kLT5tbnQg
PSBtbnRnZXQobG93ZXJfbW50KTsKKwkJbmQtPmRlbnRyeSA9IGRnZXQobG93ZXJfZGVudHJ5
KTsKKwl9CisKKwllcnIgPSBwZXJtaXNzaW9uKEdFVF9MT1dFUl9JTk9ERShpbm9kZSksIG1h
c2ssIG5kKTsKKworCWlmIChuZCkgeworCQltbnRwdXQobG93ZXJfbW50KTsKKwkJZHB1dChs
b3dlcl9kZW50cnkpOworCisJCW5kLT5tbnQgPSB2ZnNtbnRfc2F2ZTsKKwkJbmQtPmRlbnRy
eSA9IGRlbnRyeV9zYXZlOworCX0KKworICAgICAgICByZXR1cm4gZXJyOwogfQogCiAvKioK
QEAgLTQ2NCwxOCArNTUyLDMyIEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfcGVybWlzc2lvbihz
dHJ1Y3QgaW4KIHN0YXRpYyBpbnQgZGF6dWtvZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnksIHN0cnVjdCBpYXR0ciAqaWEpCiB7CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVu
dHJ5ID0gR0VUX0xPV0VSX0RFTlRSWShkZW50cnkpOworCXN0cnVjdCB2ZnNtb3VudCAqbG93
ZXJfbW50ID0gR0VUX0xPV0VSX01OVChkZW50cnkpOwogCXN0cnVjdCBpbm9kZSAqaW5vZGUg
PSBkZW50cnktPmRfaW5vZGU7CiAJc3RydWN0IGlub2RlICpsb3dlcl9pbm9kZSA9IEdFVF9M
T1dFUl9JTk9ERShpbm9kZSk7CiAJaW50IGVycjsKIAotCWVyciA9IG5vdGlmeV9jaGFuZ2Uo
bG93ZXJfZGVudHJ5LCBpYSk7CiAKLQlmc3N0YWNrX2NvcHlfYXR0cl9hbGwoaW5vZGUsIGxv
d2VyX2lub2RlLCBOVUxMKTsKLQlmc3N0YWNrX2NvcHlfaW5vZGVfc2l6ZShpbm9kZSwgbG93
ZXJfaW5vZGUpOworCWlmICghbG93ZXJfaW5vZGUtPmlfb3AgfHwgIWxvd2VyX2lub2RlLT5p
X29wLT5zZXRhdHRyKSAKKwkJLyogWFhYOiBhdCB0aGlzIHBvaW50IGl0IGlzIHRvbyBsYXRl
IHRvIGhhbmRsZSBpbm9kZXMgcHJvcGVybHkgdGhhdCBkbyBOT1QKKwkJc3BlY2lmeSBzZXRh
dHRyKCkuIFZGUyB3b3VsZCBub3JtYWxseSBjYWxsIGlub2RlX3NldGF0dHIoKSBpbiAKKwkJ
dGhpcyBjYXNlLiBTbyB0byBmb3JjZSB0aGlzIHdlIGp1bXAgYmFjayB0byBub3RpZnlfY2hh
bmdlIHdoaWNoIHdpbGwKKwkJaGFuZGxlIHRoaXMgZm9yIHVzLiBCdXQgdGhpcyBpcyBkYW5n
ZXJvdXM6CisJCVRoZSBhdHRyaWJ1dGVzIG1pZ2h0IGJlIG1vZGlmaWVkIGJ5IG5vdGlmeV9j
aGFuZ2UoKSBpbiBhIHdheQorCQl0aGF0IHJlc3VsdHMgaW4gaW52YWxpZCBhdHRyaWJ1dGVz
LiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjYXNlCisJCWlmIHRoZSBpbm9kZSBmb3Igd2hpY2gg
dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaGFzIHRoZSBzZXR1aWQKKwkJb3Igc2V0Z2lkIGJp
dCBzZXQgKi8gCisJCWVyciA9IG5vdGlmeV9jaGFuZ2UobG93ZXJfZGVudHJ5LCBsb3dlcl9t
bnQsIGlhKTsKKwllbHNlIAorCQllcnIgPSBsb3dlcl9pbm9kZS0+aV9vcC0+c2V0YXR0cihs
b3dlcl9kZW50cnksIGlhKTsKKwkKKwlpZiAoIWVycikgeworCQlmc3N0YWNrX2NvcHlfYXR0
cl9hbGwoaW5vZGUsIGxvd2VyX2lub2RlKTsKKwkJZnNzdGFja19jb3B5X2lub2RlX3NpemUo
aW5vZGUsIGxvd2VyX2lub2RlKTsKKwl9IAogCiAJcmV0dXJuIGVycjsKIH0KLQogLyoqCiAg
KiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IHRoZSBWRlMgdG8gc2V0IGFuIGV4dGVuZGVkIGF0
dHJpYnV0ZSBmb3IgYSBmaWxlLgogICogRXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgbmFtZTp2
YWx1ZSBwYWlyIGFzc29jaWF0ZWQgd2l0aCBhbiBpbm9kZS4gVGhpcwpAQCAtNDk2LDE0ICs1
OTgsMTQgQEAgc3RhdGljIGludCBkYXp1a29mc19zZXR4YXR0cihzdHJ1Y3QgZGVudAogCiAJ
aWYgKCFsb3dlcl9kZW50cnlfaW5vZGUtPmlfb3AgfHwKIAkgICAgIWxvd2VyX2RlbnRyeV9p
bm9kZS0+aV9vcC0+c2V0eGF0dHIpIHsKLQkJZXJyID0gLUVOT1NZUzsKKwkJZXJyID0gLUVP
UE5PVFNVUFA7CiAJCWdvdG8gb3V0OwogCX0KIAogCWVyciA9IGxvd2VyX2RlbnRyeV9pbm9k
ZS0+aV9vcC0+c2V0eGF0dHIobG93ZXJfZGVudHJ5LCBuYW1lLCB2YWx1ZSwKIAkJCQkJCSBz
aXplLCBmbGFncyk7CiAKLQlmc3N0YWNrX2NvcHlfYXR0cl9hbGwoZGVudHJ5LT5kX2lub2Rl
LCBsb3dlcl9kZW50cnlfaW5vZGUsIE5VTEwpOworCWZzc3RhY2tfY29weV9hdHRyX2FsbChk
ZW50cnktPmRfaW5vZGUsIGxvd2VyX2RlbnRyeV9pbm9kZSk7CiAJZnNzdGFja19jb3B5X2lu
b2RlX3NpemUoZGVudHJ5LT5kX2lub2RlLCBsb3dlcl9kZW50cnlfaW5vZGUpOwogb3V0Ogog
CXJldHVybiBlcnI7CkBAIC01MjgsNyArNjMwLDcgQEAgc3RhdGljIHNzaXplX3QgZGF6dWtv
ZnNfZ2V0eGF0dHIoc3RydWN0IAogCiAJaWYgKCFsb3dlcl9kZW50cnlfaW5vZGUtPmlfb3Ag
fHwKIAkgICAgIWxvd2VyX2RlbnRyeV9pbm9kZS0+aV9vcC0+Z2V0eGF0dHIpIHsKLQkJZXJy
ID0gLUVOT1NZUzsKKwkJZXJyID0gLUVPUE5PVFNVUFA7CiAJCWdvdG8gb3V0OwogCX0KIApA
QCAtNTU3LDcgKzY1OSw3IEBAIHN0YXRpYyBzc2l6ZV90IGRhenVrb2ZzX2xpc3R4YXR0cihz
dHJ1Y3QKIAogCWlmICghbG93ZXJfZGVudHJ5X2lub2RlLT5pX29wIHx8CiAJICAgICFsb3dl
cl9kZW50cnlfaW5vZGUtPmlfb3AtPmxpc3R4YXR0cikgewotCQllcnIgPSAtRU5PU1lTOwor
CQllcnIgPSAtRU9QTk9UU1VQUDsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC01ODQsNyArNjg2
LDcgQEAgc3RhdGljIGludCBkYXp1a29mc19yZW1vdmV4YXR0cihzdHJ1Y3QgZAogCiAJaWYg
KCFsb3dlcl9kZW50cnlfaW5vZGUtPmlfb3AgfHwKIAkgICAgIWxvd2VyX2RlbnRyeV9pbm9k
ZS0+aV9vcC0+cmVtb3ZleGF0dHIpIHsKLQkJZXJyID0gLUVOT1NZUzsKKwkJZXJyID0gLUVP
UE5PVFNVUFA7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtNjAyLDE2ICs3MDQsMTkgQEAgc3Rh
dGljIGludCBkYXp1a29mc19saW5rKHN0cnVjdCBkZW50cnkgKgogCQkJIHN0cnVjdCBkZW50
cnkgKm5ld19kZW50cnkpCiB7CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfb2xkX2RlbnRyeSA9
IEdFVF9MT1dFUl9ERU5UUlkob2xkX2RlbnRyeSk7CisJc3RydWN0IHZmc21vdW50ICpsb3dl
cl9vbGRfbW91bnQgPSBHRVRfTE9XRVJfTU5UKG9sZF9kZW50cnkpOwogCXN0cnVjdCBkZW50
cnkgKmxvd2VyX25ld19kZW50cnkgPSBHRVRfTE9XRVJfREVOVFJZKG5ld19kZW50cnkpOwor
CXN0cnVjdCB2ZnNtb3VudCAqbG93ZXJfbmV3X21vdW50ID0gR0VUX0xPV0VSX01OVChuZXdf
ZGVudHJ5KTsKKwkKIAlzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9kZW50cnlfcGFyZW50ID0gZGdl
dChsb3dlcl9uZXdfZGVudHJ5LT5kX3BhcmVudCk7CiAJc3RydWN0IGlub2RlICpsb3dlcl9k
ZW50cnlfcGFyZW50X2lub2RlID0gbG93ZXJfZGVudHJ5X3BhcmVudC0+ZF9pbm9kZTsKIAlp
bnQgZXJyID0gLUVOT0VOVDsKIAotCW11dGV4X2xvY2tfbmVzdGVkKCYobG93ZXJfZGVudHJ5
X3BhcmVudF9pbm9kZS0+aV9tdXRleCksCi0JCQkgIElfTVVURVhfUEFSRU5UKTsKKwltdXRl
eF9sb2NrKCYobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZS0+aV9tdXRleCkpOwogCi0JZXJy
ID0gdmZzX2xpbmsobG93ZXJfb2xkX2RlbnRyeSwgbG93ZXJfZGVudHJ5X3BhcmVudF9pbm9k
ZSwKLQkJICAgICAgIGxvd2VyX25ld19kZW50cnkpOworCWVyciA9IHZmc19saW5rKGxvd2Vy
X29sZF9kZW50cnksIGxvd2VyX29sZF9tb3VudCwgCisJCSAgICAgICBsb3dlcl9kZW50cnlf
cGFyZW50X2lub2RlLCBsb3dlcl9uZXdfZGVudHJ5LAorCQkgICAgICAgbG93ZXJfbmV3X21v
dW50KTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIApAQCAtNjM1LDE0ICs3NDAsMTQgQEAg
b3V0Ogogc3RhdGljIGludCBkYXp1a29mc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0
cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9kZW50cnkg
PSBHRVRfTE9XRVJfREVOVFJZKGRlbnRyeSk7CisJc3RydWN0IHZmc21vdW50ICpsb3dlcl9t
b3VudCA9IEdFVF9MT1dFUl9NTlQoZGVudHJ5KTsKIAlzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9k
ZW50cnlfcGFyZW50ID0gZGdldChsb3dlcl9kZW50cnktPmRfcGFyZW50KTsKIAlzdHJ1Y3Qg
aW5vZGUgKmxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUgPSBsb3dlcl9kZW50cnlfcGFyZW50
LT5kX2lub2RlOwogCWludCBlcnI7CiAKLQltdXRleF9sb2NrX25lc3RlZCgmKGxvd2VyX2Rl
bnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgpLAotCQkJICBJX01VVEVYX1BBUkVOVCk7CisJ
bXV0ZXhfbG9jaygmKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgpKTsKIAot
CWVyciA9IHZmc191bmxpbmsobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93ZXJfZGVu
dHJ5KTsKKwllcnIgPSB2ZnNfdW5saW5rKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUsIGxv
d2VyX2RlbnRyeSwgbG93ZXJfbW91bnQpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCkBA
IC02NjQsMTQgKzc2OSwxNCBAQCBvdXQ6CiBzdGF0aWMgaW50IGRhenVrb2ZzX3JtZGlyKHN0
cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiB7CiAJc3RydWN0IGRl
bnRyeSAqbG93ZXJfZGVudHJ5ID0gR0VUX0xPV0VSX0RFTlRSWShkZW50cnkpOworCXN0cnVj
dCB2ZnNtb3VudCAqbG93ZXJfbW91bnQgPSBHRVRfTE9XRVJfTU5UKGRlbnRyeSk7CiAJc3Ry
dWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5X3BhcmVudCA9IGRnZXQobG93ZXJfZGVudHJ5LT5k
X3BhcmVudCk7CiAJc3RydWN0IGlub2RlICpsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlID0g
bG93ZXJfZGVudHJ5X3BhcmVudC0+ZF9pbm9kZTsKIAlpbnQgZXJyOwogCi0JbXV0ZXhfbG9j
a19uZXN0ZWQoJihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSwKLQkJCSAg
SV9NVVRFWF9QQVJFTlQpOworCW11dGV4X2xvY2soJihsb3dlcl9kZW50cnlfcGFyZW50X2lu
b2RlLT5pX211dGV4KSk7CiAKLQllcnIgPSB2ZnNfcm1kaXIobG93ZXJfZGVudHJ5X3BhcmVu
dF9pbm9kZSwgbG93ZXJfZGVudHJ5KTsKKwllcnIgPSB2ZnNfcm1kaXIobG93ZXJfZGVudHJ5
X3BhcmVudF9pbm9kZSwgbG93ZXJfZGVudHJ5LCBsb3dlcl9tb3VudCk7CiAJaWYgKGVycikK
IAkJZ290byBvdXQ7CiAKQEAgLTY5NSw3ICs4MDAsOSBAQCBzdGF0aWMgaW50IGRhenVrb2Zz
X3JlbmFtZShzdHJ1Y3QgaW5vZGUgCiAJCQkgICBzdHJ1Y3QgaW5vZGUgKm5ld19kaXIsIHN0
cnVjdCBkZW50cnkgKm5ld19kZW50cnkpCiB7CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfb2xk
X2RlbnRyeSA9IEdFVF9MT1dFUl9ERU5UUlkob2xkX2RlbnRyeSk7CisJc3RydWN0IHZmc21v
dW50ICpsb3dlcl9vbGRfbW91bnQgPSBHRVRfTE9XRVJfTU5UKG9sZF9kZW50cnkpOwogCXN0
cnVjdCBkZW50cnkgKmxvd2VyX25ld19kZW50cnkgPSBHRVRfTE9XRVJfREVOVFJZKG5ld19k
ZW50cnkpOworCXN0cnVjdCB2ZnNtb3VudCAqbG93ZXJfbmV3X21vdW50ID0gR0VUX0xPV0VS
X01OVChuZXdfZGVudHJ5KTsKIAlzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9vbGRfZGVudHJ5X3Bh
cmVudCA9CiAJCWRnZXQobG93ZXJfb2xkX2RlbnRyeS0+ZF9wYXJlbnQpOwogCXN0cnVjdCBk
ZW50cnkgKmxvd2VyX25ld19kZW50cnlfcGFyZW50ID0KQEAgLTcxOCwxNiArODI1LDE3IEBA
IHN0YXRpYyBpbnQgZGF6dWtvZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAKIAogCWxvY2tfcmVu
YW1lKGxvd2VyX29sZF9kZW50cnlfcGFyZW50LCBsb3dlcl9uZXdfZGVudHJ5X3BhcmVudCk7
CiAJZXJyID0gdmZzX3JlbmFtZShsb3dlcl9vbGRfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93
ZXJfb2xkX2RlbnRyeSwKLQkJCSBsb3dlcl9uZXdfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93
ZXJfbmV3X2RlbnRyeSk7CisJCQkgbG93ZXJfb2xkX21vdW50LCBsb3dlcl9uZXdfZGVudHJ5
X3BhcmVudF9pbm9kZSwKKwkJCSBsb3dlcl9uZXdfZGVudHJ5LCBsb3dlcl9uZXdfbW91bnQp
OwogCXVubG9ja19yZW5hbWUobG93ZXJfb2xkX2RlbnRyeV9wYXJlbnQsIGxvd2VyX25ld19k
ZW50cnlfcGFyZW50KTsKIAogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCi0JZnNzdGFja19j
b3B5X2F0dHJfYWxsKG5ld19kaXIsIGxvd2VyX25ld19kZW50cnlfcGFyZW50X2lub2RlLCBO
VUxMKTsKKwlmc3N0YWNrX2NvcHlfYXR0cl9hbGwobmV3X2RpciwgbG93ZXJfbmV3X2RlbnRy
eV9wYXJlbnRfaW5vZGUpOwogCWlmIChuZXdfZGlyICE9IG9sZF9kaXIpCi0JCWZzc3RhY2tf
Y29weV9hdHRyX2FsbChvbGRfZGlyLCBsb3dlcl9vbGRfZGVudHJ5X3BhcmVudF9pbm9kZSwK
LQkJCQkgICAgICBOVUxMKTsKKwkJZnNzdGFja19jb3B5X2F0dHJfYWxsKG9sZF9kaXIsIGxv
d2VyX29sZF9kZW50cnlfcGFyZW50X2lub2RlKTsKKwkJCQkgICAgIAogb3V0OgogCWRwdXQo
bG93ZXJfb2xkX2RlbnRyeV9wYXJlbnQpOwogCWRwdXQobG93ZXJfbmV3X2RlbnRyeV9wYXJl
bnQpOwpkaWZmIC14IENWUyAtcnVwIGRhenVrb2ZzLTMuMC4wL01ha2VmaWxlIGRhenVrb2Zz
LTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AyL01ha2VmaWxlCi0tLSBkYXp1a29mcy0zLjAu
MC9NYWtlZmlsZQkyMDA5LTAyLTIyIDE3OjQ2OjAyLjAwMDAwMDAwMCArMDEwMAorKysgZGF6
dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIvTWFrZWZpbGUJMjAwOS0wNS0xMSAx
OTo1MzowMy4wMDAwMDAwMDAgKzAyMDAKQEAgLTE4LDcgKzE4LDggQEAgZGF6dWtvZnNfaW5z
dGFsbDogZGF6dWtvZnNfbW9kdWxlcwogCS9zYmluL2RlcG1vZCAtYWUKIAogY2xlYW46Ci0J
cm0gLWYgTW9kdWxlLnN5bXZlcnMKKwlybSAtZiBNb2R1bGVzLnN5bXZlcnMKKwlybSAtZiBt
b2R1bGVzLm9yZGVyCiAJbWFrZSAtQyAkKERBWlVLT0ZTX0tFUk5FTF9TUkMpIFNVQkRJUlM9
ImBwd2RgIiBjbGVhbgogCiAuUEhPTlk6IGRhenVrb2ZzX21vZHVsZXMgZGF6dWtvZnNfaW5z
dGFsbCBjbGVhbgpkaWZmIC14IENWUyAtcnVwIGRhenVrb2ZzLTMuMC4wL1JFQURNRSBkYXp1
a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9SRUFETUUKLS0tIGRhenVrb2ZzLTMu
MC4wL1JFQURNRQkyMDA5LTAyLTIyIDE3OjM4OjIxLjAwMDAwMDAwMCArMDEwMAorKysgZGF6
dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDIvUkVBRE1FCTIwMDktMDItMDYgMTc6
NDg6MjEuMDAwMDAwMDAwICswMTAwCkBAIC0yMSwxMCArMjEsMTAgQEAgTk9URTogRGF6dWtv
RlMgaXMgY29tcGxldGVseSBzZXBhcmF0ZSBmcgogPT09PT09PT09PT09PT09PT0KIAogQmVs
b3cgYXJlIGJyaWVmIGluc3RydWN0aW9ucyB0byBnZXQgRGF6dWtvRlMgY29tcGlsZWQgYW5k
IHJ1bm5pbmcgb24gYQotc3lzdGVtIHdpdGggYSBMaW51eCAyLjYuMjgga2VybmVsLiBZb3Ug
bWF5IG5lZWQgdG8gbWFudWFsbHkgYWRqdXN0IHRoZQorc3lzdGVtIHdpdGggYSBMaW51eCAy
LjYuMjcga2VybmVsLiBZb3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgYWRqdXN0IHRoZQogTWFr
ZWZpbGUgaWYgeW91IGtlcm5lbCBzb3VyY2VzIGFyZSBub3QgaW4gdGhlIGRlZmF1bHQgbG9j
YXRpb24uCi0oUGF0Y2hlcyBhcmUgcHJvdmlkZWQgZm9yIHZhcmlvdXMgb3RoZXIga2VybmVs
cy4gU2VlIHRoZSBzZWN0aW9uIGJlbG93Ci10aXRsZWQgIlBBVENISU5HIiBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4pCisoQSBwYXRjaCBpcyBwcm92aWRlZCB0byBjb252ZXJ0IHRoZSBEYXp1
a29GUyBjb2RlIHRvIHN1cHBvcnQgTGludXgKKzIuNi4yNi4pCiAKIGNvbXBpbGUgdGhlIGtl
cm5lbCBtb2R1bGUKICAgIyBtYWtlCkBAIC01MiwyNSArNTIsNiBAQCB1bm1vdW50IERhenVr
b0ZTCiAKIAogCi09PT09PT09PT09Ci0gUEFUQ0hJTkcKLT09PT09PT09PT0KLQotSW4gdGhl
ICJwYXRjaGVzIiBkaXJlY3RvcnkgdGhlcmUgYXJlIHBhdGNoZXMgYXZhaWxhYmxlIHRvIG1v
ZGlmeSB0aGUKLURhenVrb0ZTIGNvZGUgdG8gZml0IHZhcmlvdXMgb3RoZXIga2VybmVscy4g
Rm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUKLXJ1bm5pbmcgb3BlblNVU0UgMTEuMSB5b3UgY2Fu
IHBhdGNoIHRoZSBjb2RlIHdpdGggdGhlIGZvbGxvd2luZwotY29tbWFuZDoKLQotJCBwYXRj
aCAtcDEgPCBwYXRjaGVzL3BhdGNoLW9wZW5zdXNlLTExLjEKLQotVGhlcmUgc2hvdWxkIG5v
dCBiZSBhbnkgZXJyb3JzLiBJZiB0aGVyZSBhcmUgZXJyb3JzLCB0aGVuIHRoZSBwYXRjaAot
aXMgYnJva2VuIGFuZCBzaG91bGQgYmUgcmVwb3J0ZWQgb24gdGhlIGRhenVrby1kZXZlbCBt
YWlsaW5nIGxpc3QuCi0KLU9uY2UgdGhlIGNvZGUgaGFzIGJlZW4gcGF0Y2hlZCB5b3UgY2Fu
IGJ1aWxkIHRoZSBrZXJuZWwgbW9kdWxlIGFzCi1kZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24g
IkJVSUxEIC8gSU5TVEFMTCIgYWJvdmUuCi0KLQotCiA9PT09PT09PT0KICBURVNUSU5HCiA9
PT09PT09PT0KQEAgLTE1NCw5ICsxMzUsNiBAQCBhbnkgcHJvYmxlbXMuCiAgS05PV04gSVNT
VUVTCiA9PT09PT09PT09PT09PQogCi0tIFRoZSBrZXJuZWwgd2lsbCBjcmFzaCBpZiB5b3Ug
YXR0ZW1wdCB0byBtb3VudCBEYXp1a29GUyB0byBhIGZpbGUgaW5zdGVhZAotICBvZiBhIGRp
cmVjdG9yeS4gKFRoZSB2YXJpb3VzIGtlcm5lbCBwYXRjaGVzIGhhbmRsZSB0aGlzIGVycm9y
LikKLQogLSBEYXp1a29GUyBkb2VzIG5vdCBzdXBwb3J0IHdyaXRpbmcgdG8gbWVtb3J5IG1h
cHBlZCBmaWxlcy4gVGhpcyBzaG91bGQgbm90CiAgIGNhdXNlIHRoZSBrZXJuZWwgdG8gY3Jh
c2gsIGJ1dCB3aWxsIGluc3RlYWQgcmVzdWx0IGluIHRoZSBhcHBsaWNhdGlvbgogICBmYWls
aW5nIHRvIHBlcmZvcm0gdGhlIHdyaXRlcyAoYWx0aG91Z2ggbW1hcCgpIHdpbGwgYXBwZWFy
IHRvIGJlCmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMtMy4wLjAvc3VwZXIuYyBkYXp1a29m
cy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9zdXBlci5jCi0tLSBkYXp1a29mcy0zLjAu
MC9zdXBlci5jCTIwMDktMDItMjIgMTc6NDY6MDIuMDAwMDAwMDAwICswMTAwCisrKyBkYXp1
a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMi9zdXBlci5jCTIwMDktMDctMDMgMTc6
NTk6MDIuMDAwMDAwMDAwICswMjAwCkBAIC0zNSw2ICszNSwxMCBAQCBzdGF0aWMgc3RydWN0
IGttZW1fY2FjaGUgKmRhenVrb2ZzX3NiX2luCiBzdHJ1Y3Qga21lbV9jYWNoZSAqZGF6dWtv
ZnNfZGVudHJ5X2luZm9fY2FjaGVwOwogc3RydWN0IGttZW1fY2FjaGUgKmRhenVrb2ZzX2Zp
bGVfaW5mb19jYWNoZXA7CiAKKworI2RlZmluZSBEQVpVS09GU19WRVJTSU9OICIzLjAuMC1y
YzQtYXZpcmEtYjIuNiIKKworCiBzdGF0aWMgc3RydWN0IGlub2RlICpkYXp1a29mc19hbGxv
Y19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogewogCXN0cnVjdCBkYXp1a29mc19p
bm9kZV9pbmZvICppbm9kZWk7CkBAIC0xMTQsOSArMTE4LDEwIEBAIHN0YXRpYyBpbnQgZGF6
dWtvZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3UKIAlzdGF0aWMgY29uc3Qgc3RydWN0IHFzdHIg
bmFtZSA9IHsgLm5hbWUgPSAiLyIsIC5sZW4gPSAxIH07CiAJc3RydWN0IGRhenVrb2ZzX2Rl
bnRyeV9pbmZvICpkaTsKIAotCXNiaSA9ICBrbWVtX2NhY2hlX3phbGxvYyhkYXp1a29mc19z
Yl9pbmZvX2NhY2hlcCwgR0ZQX0tFUk5FTCk7CisJc2JpID0gIGttZW1fY2FjaGVfYWxsb2Mo
ZGF6dWtvZnNfc2JfaW5mb19jYWNoZXAsIEdGUF9LRVJORUwpOwogCWlmICghc2JpKQogCQly
ZXR1cm4gLUVOT01FTTsKKwltZW1zZXQoc2JpLCAwLCBzaXplb2YoKnNiaSkpOwogCiAJc2It
PnNfb3AgPSAmZGF6dWtvZnNfc29wczsKIApAQCAtMTMyLDEyICsxMzcsMTMgQEAgc3RhdGlj
IGludCBkYXp1a29mc19maWxsX3N1cGVyKHN0cnVjdCBzdQogCXNiLT5zX3Jvb3QtPmRfc2Ig
PSBzYjsKIAlzYi0+c19yb290LT5kX3BhcmVudCA9IHNiLT5zX3Jvb3Q7CiAKLQlkaSA9IGtt
ZW1fY2FjaGVfemFsbG9jKGRhenVrb2ZzX2RlbnRyeV9pbmZvX2NhY2hlcCwgR0ZQX0tFUk5F
TCk7CisJZGkgPSBrbWVtX2NhY2hlX2FsbG9jKGRhenVrb2ZzX2RlbnRyeV9pbmZvX2NhY2hl
cCwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFkaSkgewogCQlrbWVtX2NhY2hlX2ZyZWUoZGF6dWtv
ZnNfc2JfaW5mb19jYWNoZXAsIHNiaSk7CiAJCWRwdXQoc2ItPnNfcm9vdCk7CiAJCXJldHVy
biAtRU5PTUVNOwogCX0KKwltZW1zZXQoZGksIDAsIHNpemVvZigqZGkpKTsKIAogCVNFVF9E
RU5UUllfSU5GTyhzYi0+c19yb290LCBkaSk7CiAKQEAgLTE1OCw4ICsxNjQsOCBAQCBzdGF0
aWMgaW50IGRhenVrb2ZzX3JlYWRfc3VwZXIoc3RydWN0IHN1CiAJaWYgKGVycikKIAkJcmV0
dXJuIGVycjsKIAotCWxvd2VyX3Jvb3QgPSBkZ2V0KG5kLnBhdGguZGVudHJ5KTsKLQlsb3dl
cl9tbnQgPSBtbnRnZXQobmQucGF0aC5tbnQpOworCWxvd2VyX3Jvb3QgPSBkZ2V0KG5kLmRl
bnRyeSk7CisJbG93ZXJfbW50ID0gbW50Z2V0KG5kLm1udCk7CiAKIAlpZiAoSVNfRVJSKGxv
d2VyX3Jvb3QpKSB7CiAJCWVyciA9IFBUUl9FUlIobG93ZXJfcm9vdCk7CkBAIC0xNzEsNiAr
MTc3LDExIEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfcmVhZF9zdXBlcihzdHJ1Y3Qgc3UKIAkJ
Z290byBvdXRfcHV0OwogCX0KIAorCWlmICghU19JU0RJUihsb3dlcl9yb290LT5kX2lub2Rl
LT5pX21vZGUpKSB7CisJCWVyciA9IC1FTk9FTlQ7CisJCWdvdG8gb3V0X3B1dDsKKwl9CisK
IAlTRVRfTE9XRVJfU0Ioc2IsIGxvd2VyX3Jvb3QtPmRfc2IpOwogCXNiLT5zX21heGJ5dGVz
ID0gbG93ZXJfcm9vdC0+ZF9zYi0+c19tYXhieXRlczsKIAlTRVRfTE9XRVJfREVOVFJZKHNi
LT5zX3Jvb3QsIGxvd2VyX3Jvb3QsIGxvd2VyX21udCk7CkBAIC0xODQsNDQgKzE5NSw0MiBA
QCBvdXRfcHV0OgogCWRwdXQobG93ZXJfcm9vdCk7CiAJbW50cHV0KGxvd2VyX21udCk7CiBv
dXQ6Ci0JcGF0aF9wdXQoJm5kLnBhdGgpOworCXBhdGhfcmVsZWFzZSgmbmQpOwogCXJldHVy
biBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgZGF6dWtvZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5
c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsCi0JCQkgICBjb25zdCBjaGFyICpkZXZf
bmFtZSwgdm9pZCAqZGF0YSwKLQkJCSAgIHN0cnVjdCB2ZnNtb3VudCAqbW50KQorc3RhdGlj
IHN0cnVjdCBzdXBlcl9ibG9jayAqIAorZGF6dWtvZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5
c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsICAKKwkgICAgICAgY29uc3QgY2hhciAq
ZGV2X25hbWUsIHZvaWQgKmRhdGEpIAogewogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiAJ
aW50IGVycjsKIAotCWVyciA9IGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwg
ZGF6dWtvZnNfZmlsbF9zdXBlciwgbW50KTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQot
CXNiID0gbW50LT5tbnRfc2I7CisJc2IgPSBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3Ms
IGRhdGEsIGRhenVrb2ZzX2ZpbGxfc3VwZXIpOworCWlmIChJU19FUlIoc2IpKQorCQlyZXR1
cm4gc2I7CiAKIAllcnIgPSBkYXp1a29mc19wYXJzZV9tb3VudF9vcHRpb25zKGRhdGEsIHNi
KTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dF9hYm9ydDsKKwkJZ290byBvdXQ7CiAKIAllcnIg
PSBkYXp1a29mc19yZWFkX3N1cGVyKHNiLCBkZXZfbmFtZSk7CiAJaWYgKGVycikKLQkJZ290
byBvdXRfYWJvcnQ7CisJCWdvdG8gb3V0OwogCi0JZ290byBvdXQ7CisJcmV0dXJuIHNiOwog
Ci1vdXRfYWJvcnQ6CitvdXQ6CiAJdXBfd3JpdGUoJnNiLT5zX3Vtb3VudCk7CisJZHB1dChz
Yi0+c19yb290KTsJCiAJZGVhY3RpdmF0ZV9zdXBlcihzYik7Ci1vdXQ6Ci0JcmV0dXJuIGVy
cjsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOwogfQogCi1zdGF0aWMgdm9pZCBpbml0X29uY2Uo
dm9pZCAqZGF0YSkKK3N0YXRpYyB2b2lkIGluaXRfb25jZSh2b2lkICp2cHRyLCBzdHJ1Y3Qg
a21lbV9jYWNoZSAqY2FjaGVwLCB1bnNpZ25lZCBsb25nIGZsYWdzKQogewogCXN0cnVjdCBk
YXp1a29mc19pbm9kZV9pbmZvICppbm9kZV9pbmZvID0KLQkJKHN0cnVjdCBkYXp1a29mc19p
bm9kZV9pbmZvICopZGF0YTsKKwkJKHN0cnVjdCBkYXp1a29mc19pbm9kZV9pbmZvICopdnB0
cjsKIAogCW1lbXNldChpbm9kZV9pbmZvLCAwLCBzaXplb2Yoc3RydWN0IGRhenVrb2ZzX2lu
b2RlX2luZm8pKTsKIAlpbm9kZV9pbml0X29uY2UoJihpbm9kZV9pbmZvLT52ZnNfaW5vZGUp
KTsKQEAgLTI1Niw3ICsyNjUsNyBAQCBzdGF0aWMgaW50IGluaXRfY2FjaGVzKHZvaWQpCiAJ
CWttZW1fY2FjaGVfY3JlYXRlKCJkYXp1a29mc19pbm9kZV9pbmZvX2NhY2hlIiwKIAkJCQkg
IHNpemVvZihzdHJ1Y3QgZGF6dWtvZnNfaW5vZGVfaW5mbyksIDAsCiAJCQkJICBTTEFCX0hX
Q0FDSEVfQUxJR04sCi0JCQkJICBpbml0X29uY2UpOworCQkJCSAgaW5pdF9vbmNlLCBOVUxM
KTsKIAlpZiAoIWRhenVrb2ZzX2lub2RlX2luZm9fY2FjaGVwKQogCQlnb3RvIG91dF9ub21l
bTsKIApAQCAtMjY0LDcgKzI3Myw3IEBAIHN0YXRpYyBpbnQgaW5pdF9jYWNoZXModm9pZCkK
IAkJa21lbV9jYWNoZV9jcmVhdGUoImRhenVrb2ZzX3NiX2luZm9fY2FjaGUiLAogCQkJCSAg
c2l6ZW9mKHN0cnVjdCBkYXp1a29mc19zYl9pbmZvKSwgMCwKIAkJCQkgIFNMQUJfSFdDQUNI
RV9BTElHTiwKLQkJCQkgIE5VTEwpOworCQkJCSAgTlVMTCwgTlVMTCk7CiAJaWYgKCFkYXp1
a29mc19zYl9pbmZvX2NhY2hlcCkKIAkJZ290byBvdXRfbm9tZW07CiAKQEAgLTI3Miw3ICsy
ODEsNyBAQCBzdGF0aWMgaW50IGluaXRfY2FjaGVzKHZvaWQpCiAJCWttZW1fY2FjaGVfY3Jl
YXRlKCJkYXp1a29mc19kZW50cnlfaW5mb19jYWNoZSIsCiAJCQkJICBzaXplb2Yoc3RydWN0
IGRhenVrb2ZzX2RlbnRyeV9pbmZvKSwgMCwKIAkJCQkgIFNMQUJfSFdDQUNIRV9BTElHTiwK
LQkJCQkgIE5VTEwpOworCQkJCSAgTlVMTCwgTlVMTCk7CiAJaWYgKCFkYXp1a29mc19kZW50
cnlfaW5mb19jYWNoZXApCiAJCWdvdG8gb3V0X25vbWVtOwogCkBAIC0yODAsNyArMjg5LDcg
QEAgc3RhdGljIGludCBpbml0X2NhY2hlcyh2b2lkKQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgi
ZGF6dWtvZnNfZmlsZV9pbmZvX2NhY2hlIiwKIAkJCQkgIHNpemVvZihzdHJ1Y3QgZGF6dWtv
ZnNfZmlsZV9pbmZvKSwgMCwKIAkJCQkgIFNMQUJfSFdDQUNIRV9BTElHTiwKLQkJCQkgIE5V
TEwpOworCQkJCSAgTlVMTCwgTlVMTCk7CiAJaWYgKCFkYXp1a29mc19maWxlX2luZm9fY2Fj
aGVwKQogCQlnb3RvIG91dF9ub21lbTsKIApAQCAtMzA1LDcgKzMxNCw3IEBAIHN0YXRpYyBz
dHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBkYXp1a29mc18KIAogc3RhdGljIGludCBfX2luaXQg
aW5pdF9kYXp1a29mc19mcyh2b2lkKQogewotCWludCBlcnIgPSAwOworCWludCBlcnI7CiAK
IAllcnIgPSBkYXp1a29mc19kZXZfaW5pdCgpOwogCWlmIChlcnIpCkBAIC0zMTksNyArMzI4
LDcgQEAgc3RhdGljIGludCBfX2luaXQgaW5pdF9kYXp1a29mc19mcyh2b2lkKQogCWlmIChl
cnIpCiAJCWdvdG8gZXJyb3Jfb3V0MzsKIAotCXByaW50ayhLRVJOX0lORk8gImRhenVrb2Zz
OiBsb2FkZWQsIHZlcnNpb249JXNcbiIsIERBWlVLT0ZTX1ZFUlNJT04pOworCXByaW50ayhL
RVJOX0lORk8gImRhenVrb2ZzOiBsb2FkZWQsIHZlcnNpb249IiBEQVpVS09GU19WRVJTSU9O
ICJcbiIpOwogCXJldHVybiAwOwogCiBlcnJvcl9vdXQzOgpAQCAtMzM1LDcgKzM0NCw3IEBA
IHN0YXRpYyB2b2lkIF9fZXhpdCBleGl0X2RhenVrb2ZzX2ZzKHZvaWQKIAl1bnJlZ2lzdGVy
X2ZpbGVzeXN0ZW0oJmRhenVrb2ZzX2ZzX3R5cGUpOwogCWRlc3Ryb3lfY2FjaGVzKCk7CiAJ
ZGF6dWtvZnNfZGV2X2Rlc3Ryb3koKTsKLQlwcmludGsoS0VSTl9JTkZPICJkYXp1a29mczog
dW5sb2FkZWQsIHZlcnNpb249JXNcbiIsIERBWlVLT0ZTX1ZFUlNJT04pOworCXByaW50ayhL
RVJOX0lORk8gImRhenVrb2ZzOiB1bmxvYWRlZCwgdmVyc2lvbj0iIERBWlVLT0ZTX1ZFUlNJ
T04gIlxuIik7CiB9CiAKIE1PRFVMRV9BVVRIT1IoIkpvaG4gT2duZXNzIik7Cg==
--------------060807020802090205070005
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Dazuko-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/dazuko-devel

--------------060807020802090205070005--