patch for SLES 10 SP1

Lino Sanfilippo <[email protected]> Tue, 07 Jul 2009 17:13:54 +0200
Newsgroups gmane.linux.dazuko.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------080505080702070604050207
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
***************************************************
--------------080505080702070604050207
Content-Type: text/plain;
 name="patch_SLES10SP1"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="patch_SLES10SP1"

ZGlmZiAteCBDVlMgLXJ1cCBkYXp1a29mcy0zLjAuMC9DSEFOR0VMT0cgZGF6dWtvZnMtMy4w
LjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEvQ0hBTkdFTE9HCi0tLSBkYXp1a29mcy0zLjAuMC9D
SEFOR0VMT0cJMjAwOS0wMi0yMiAxNzo1MToyMi4wMDAwMDAwMDAgKzAxMDAKKysrIGRhenVr
b2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AxL0NIQU5HRUxPRwkyMDA5LTAyLTIzIDE2
OjAxOjM0LjAwMDAwMDAwMCArMDEwMApAQCAtMiwxMSArMiw2IEBACiAgRGF6dWtvRlMgQ0hB
TkdFTE9HCiA9PT09PT09PT09PT09PT09PT09PQogCi0zLjAuMCAoMjAwOS0wMi0yMikKLS0g
YWRkZWQgZGVmaW5lIGZvciB2ZXJzaW9uIG51bWJlciBvdXRwdXQKLS0gYWRkZWQgcGF0Y2hl
cyBmb3IgdmFyaW91cyBvdGhlciBrZXJuZWxzCi0KLQogMy4wLjAtcmM0ICgyMDA4LTExLTMw
KQogLSBmaXggaW5jb3JyZWN0IGRlbnRyeS92ZnNtbnQgcmVmZXJlbmNpbmcgd2hlbiBhY2Nl
c3MgZGVuaWVkCiAtIGZpeCBpbXByb3BlciBjbGVhbnVwIGluIHNldmVyYWwgZXJyb3IgaGFu
ZGxpbmcgY29uZGl0aW9ucwpkaWZmIC14IENWUyAtcnVwIGRhenVrb2ZzLTMuMC4wL2N0cmxf
ZGV2LmMgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEvY3RybF9kZXYuYwot
LS0gZGF6dWtvZnMtMy4wLjAvY3RybF9kZXYuYwkyMDA5LTAyLTIyIDE3OjQ1OjIwLjAwMDAw
MDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEvY3Ry
bF9kZXYuYwkyMDA5LTAyLTIzIDE2OjAxOjM2LjAwMDAwMDAwMCArMDEwMApAQCAtMjEsNyAr
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
enVrb2ZzX2ZzLmggZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEvZGF6dWtv
ZnNfZnMuaAotLS0gZGF6dWtvZnMtMy4wLjAvZGF6dWtvZnNfZnMuaAkyMDA5LTAyLTIyIDE3
OjQzOjExLjAwMDAwMDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9T
TEVTMTBTUDEvZGF6dWtvZnNfZnMuaAkyMDA5LTA3LTAzIDE4OjAyOjE5LjAwMDAwMDAwMCAr
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
ZnMtMy4wLjAvZGVudHJ5LmMgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEv
ZGVudHJ5LmMKLS0tIGRhenVrb2ZzLTMuMC4wL2RlbnRyeS5jCTIwMDktMDItMjIgMTc6NDQ6
MjIuMDAwMDAwMDAwICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMx
MFNQMS9kZW50cnkuYwkyMDA5LTAyLTIzIDE2OjAxOjM3LjAwMDAwMDAwMCArMDEwMApAQCAt
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
LjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9kZXYuYwotLS0gZGF6dWtvZnMtMy4wLjAvZGV2
LmMJMjAwOS0wMi0yMiAxNzo0MjoyNS4wMDAwMDAwMDAgKzAxMDAKKysrIGRhenVrb2ZzLTMu
MC4wLXJjNF8yLjYuMTZfU0xFUzEwU1AxL2Rldi5jCTIwMDktMDItMjMgMTY6MDE6MjkuMDAw
MDAwMDAwICswMTAwCkBAIC0yMSwxOCArMjEsMzEgQEAKICNpbmNsdWRlIDxsaW51eC9kZXZp
Y2UuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L2NkZXYuaD4K
LSNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CiAKKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5o
PgogI2luY2x1ZGUgImRhenVrb2ZzX2ZzLmgiCiAjaW5jbHVkZSAiZXZlbnQuaCIKICNpbmNs
dWRlICJkZXYuaCIKIAorCisvL3N0YXRpYyBDTEFTU19ERVZJQ0VfQVRUUihkZXYsIFNfSVJV
R08sIHJlYWRfZGV2bnVtLCBOVUxMKTsKKwogc3RhdGljIHN0cnVjdCBjbGFzcyAqZGF6dWtv
ZnNfY2xhc3M7CiAKIHN0YXRpYyBpbnQgZGV2X21ham9yOwogc3RhdGljIGludCBkZXZfbWlu
b3Jfc3RhcnQ7CiBzdGF0aWMgaW50IGRldl9taW5vcl9lbmQ7CiAKKyNpZiAwCitzdGF0aWMg
c3NpemVfdCByZWFkX2Rldm51bShzdHJ1dCBjbGFzc19kZXZpY2UgKmNsc19kZXYsIGNoYXIg
KmJ1ZikKK3sKKwlkZXZfdCBkZXZudW07CisKKwlkZXZudW0gPSBjbHNfZGV2LT5kZXYtPgor
Cit9CisjZW5kaWYKKwogaW50IGRhenVrb2ZzX2Rldl9pbml0KHZvaWQpCiB7CiAJaW50IGVy
ciA9IDA7CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMtMy4wLjAvZXZlbnQuYyBkYXp1a29m
cy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9ldmVudC5jCi0tLSBkYXp1a29mcy0zLjAu
MC9ldmVudC5jCTIwMDktMDItMjIgMTc6NDQ6MDMuMDAwMDAwMDAwICswMTAwCisrKyBkYXp1
a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9ldmVudC5jCTIwMDktMDctMDMgMTg6
NTc6MjQuMDAwMDAwMDAwICswMjAwCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSA8bGlu
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
dWtvZnMtMy4wLjAvZmlsZS5jIGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEwU1Ax
L2ZpbGUuYwotLS0gZGF6dWtvZnMtMy4wLjAvZmlsZS5jCTIwMDktMDItMjIgMTc6NDM6MTEu
MDAwMDAwMDAwICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQ
MS9maWxlLmMJMjAwOS0wNy0wMyAxODo1MTowNi4wMDAwMDAwMDAgKzAyMDAKQEAgLTI1LDcg
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
SVNfRVJSKGxvd2VyX2ZpbGUpKSB7CkBAIC0yMDksNyArMjEzLDcgQEAgZXJyb3Jfb3V0MjoK
IC8qKgogICogRGVzY3JpcHRpb246IENhbGxlZCBieSB0aGUgY2xvc2UoMikgc3lzdGVtIGNh
bGwgdG8gZmx1c2ggYSBmaWxlLgogICovCi1zdGF0aWMgaW50IGRhenVrb2ZzX2ZsdXNoKHN0
cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IHRkKQorc3RhdGljIGludCBkYXp1a29mc19m
bHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZmlsZSAqbG93ZXJfZmlsZSA9
IEdFVF9MT1dFUl9GSUxFKGZpbGUpOwogCWludCBlcnIgPSAwOwpAQCAtMjE3LDcgKzIyMSw3
IEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfZmx1c2goc3RydWN0IGZpbGUgKmYKIAlpZiAoIWxv
d2VyX2ZpbGUgfHwgIWxvd2VyX2ZpbGUtPmZfb3AgfHwgIWxvd2VyX2ZpbGUtPmZfb3AtPmZs
dXNoKQogCQlnb3RvIG91dDsKIAotCWVyciA9IGxvd2VyX2ZpbGUtPmZfb3AtPmZsdXNoKGxv
d2VyX2ZpbGUsIHRkKTsKKwllcnIgPSBsb3dlcl9maWxlLT5mX29wLT5mbHVzaChsb3dlcl9m
aWxlKTsKIG91dDoKIAlyZXR1cm4gZXJyOwogfQpAQCAtMjcyLDYgKzI3NiwyMCBAQCBvdXQ6
CiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGljIGludCBkYXp1a29mc19tbWFwIChzdHJ1Y3Qg
ZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bSkKK3sKKworCXN0cnVjdCBm
aWxlICpsb3dlcl9maWxlID0gR0VUX0xPV0VSX0ZJTEUoZmlsZSk7CisKKwkvKiBpZiBsb3dl
ciBmcyBkb2VzIG5vdCBzdXBwb3J0IG1tYXAoKSwgd2UgZG9udCBjYWxsIGdlbmVyaWNfZmls
ZV9yZWFkb25seV9tbWFwKCksIAorCSAqIHNpbmNlIHRoaXMgd291bGQgcmVzdWx0IGluIGNh
bGxpbmcgbG93ZXIgcmVhZHBhZ2UoKSwgd2hpY2ggbWlnaHQgbm90IGJlIAorCSAqIGRlZmlu
ZWQgYnkgbG93ZXIgZnMgaWYgbW1hcCgpIGlzIG5vdCBzdXBwb3J0ZWQqLworCWlmICghbG93
ZXJfZmlsZS0+Zl9vcCB8fCAhbG93ZXJfZmlsZS0+Zl9vcC0+bW1hcCkgCisJCXJldHVybiAt
RU5PREVWOworCQorCisJcmV0dXJuIGdlbmVyaWNfZmlsZV9yZWFkb25seV9tbWFwKGZpbGUs
IHZtKTsKK30KIC8qKgogICogVW51c2VkIG9wZXJhdGlvbnM6CiAgKiAgIC0gb3duZXIKQEAg
LTI5NSwxOCArMzEzLDE1IEBAIG91dDoKIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGF6dWtv
ZnNfbWFpbl9mb3BzID0gewogCS5sbHNlZWsJCT0gZGF6dWtvZnNfbGxzZWVrLAogCS5yZWFk
CQk9IGRhenVrb2ZzX3JlYWQsCi0JLmFpb19yZWFkCT0gZ2VuZXJpY19maWxlX2Fpb19yZWFk
LAogCS53cml0ZQkJPSBkYXp1a29mc193cml0ZSwKLQkuYWlvX3dyaXRlCT0gZ2VuZXJpY19m
aWxlX2Fpb193cml0ZSwKIAkucmVhZGRpcgk9IGRhenVrb2ZzX3JlYWRkaXIsCiAJLmlvY3Rs
CQk9IGRhenVrb2ZzX2lvY3RsLAotCS5tbWFwCQk9IGdlbmVyaWNfZmlsZV9tbWFwLAorCS5t
bWFwCQk9IGRhenVrb2ZzX21tYXAsCiAJLm9wZW4JCT0gZGF6dWtvZnNfb3BlbiwKIAkuZmx1
c2gJCT0gZGF6dWtvZnNfZmx1c2gsCiAJLnJlbGVhc2UJPSBkYXp1a29mc19yZWxlYXNlLAog
CS5mc3luYwkJPSBkYXp1a29mc19mc3luYywKIAkuZmFzeW5jCQk9IGRhenVrb2ZzX2Zhc3lu
YywKLQkuc3BsaWNlX3JlYWQJPSBnZW5lcmljX2ZpbGVfc3BsaWNlX3JlYWQsCiB9OwogCiAv
KioKQEAgLTMzMiwxNCArMzQ3LDEzIEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGF6dWtv
ZnNfbWFpbl9mb3AKICAqICAgLSBzcGxpY2VfcmVhZCAoZ2VuZXJpYykKICAqICAgLSBzZXRs
ZWFzZQogICovCi1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRhenVrb2ZzX2Rpcl9m
b3BzID0geworc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkYXp1a29mc19kaXJfZm9wcyA9IHsK
IAkucmVhZGRpcgk9IGRhenVrb2ZzX3JlYWRkaXIsCiAJLmlvY3RsCQk9IGRhenVrb2ZzX2lv
Y3RsLAotCS5tbWFwCQk9IGdlbmVyaWNfZmlsZV9tbWFwLAorCS5tbWFwCQk9IGRhenVrb2Zz
X21tYXAsCiAJLm9wZW4JCT0gZGF6dWtvZnNfb3BlbiwKIAkuZmx1c2gJCT0gZGF6dWtvZnNf
Zmx1c2gsCiAJLnJlbGVhc2UJPSBkYXp1a29mc19yZWxlYXNlLAogCS5mc3luYwkJPSBkYXp1
a29mc19mc3luYywKIAkuZmFzeW5jCQk9IGRhenVrb2ZzX2Zhc3luYywKLQkuc3BsaWNlX3Jl
YWQJPSBnZW5lcmljX2ZpbGVfc3BsaWNlX3JlYWQsCiB9OwpkaWZmIC14IENWUyAtcnVwIGRh
enVrb2ZzLTMuMC4wL2dyb3VwX2Rldi5jIGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xF
UzEwU1AxL2dyb3VwX2Rldi5jCi0tLSBkYXp1a29mcy0zLjAuMC9ncm91cF9kZXYuYwkyMDA5
LTAyLTIyIDE3OjQ1OjIwLjAwMDAwMDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0
XzIuNi4xNl9TTEVTMTBTUDEvZ3JvdXBfZGV2LmMJMjAwOS0wMi0yMyAxNjowMTo0MC4wMDAw
MDAwMDAgKzAxMDAKQEAgLTIxLDMxICsyMSw1NSBAQAogI2luY2x1ZGUgPGxpbnV4L2Rldmlj
ZS5oPgogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvY2Rldi5oPgot
I2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k
ZXZpY2UuaD4KKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogCiAjaW5jbHVkZSAiZGF6dWtv
ZnNfZnMuaCIKICNpbmNsdWRlICJldmVudC5oIgogI2luY2x1ZGUgImRldi5oIgogCi1zdGF0
aWMgaW50IGRhenVrb2ZzX2dyb3VwX29wZW4oaW50IGdyb3VwX2lkLCBzdHJ1Y3QgaW5vZGUg
Kmlub2RlLAorCisKKworc3RydWN0IGdyb3VwX2RldmljZSB7CisJc3RydWN0IGNkZXYgY2Rl
djsKKwlzdHJ1Y3QgZGV2aWNlIGRldjsKKwlzdHJ1Y3QgY2xhc3NfZGV2aWNlIGNsc19kZXY7
CisJaW50IGlkOworCWludCB0cmFjazsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ3JvdXBfZGV2
aWNlICpncnBfZGV2czsKK3N0YXRpYyBpbnQgbWlub3Jfc3RhcnQ7ICAvKiBpbml0aWFsIG1p
bm9yIG51bWJlciAqLworCitzdGF0aWMgaW50IGRhenVrb2ZzX2dyb3VwX29wZW4oc3RydWN0
IGlub2RlICppbm9kZSwKIAkJCSAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKLQlpZiAo
ZGF6dWtvZnNfZ3JvdXBfb3Blbl90cmFja2luZyhncm91cF9pZCkpCi0JCWZpbGUtPnByaXZh
dGVfZGF0YSA9IGZpbGU7Ci0JZWxzZQotCQlmaWxlLT5wcml2YXRlX2RhdGEgPSBOVUxMOwor
CWludCBpZDsKKwlzdHJ1Y3QgZ3JvdXBfZGV2aWNlICpnZGV2OworCisJaWQgPSBNSU5PUihp
bm9kZS0+aV9yZGV2KSAtIG1pbm9yX3N0YXJ0OworCWdkZXYgPSAmZ3JwX2RldnNbaWRdOwor
CisJZ2Rldi0+dHJhY2sgPSBkYXp1a29mc19ncm91cF9vcGVuX3RyYWNraW5nKGlkKTsKKwln
ZGV2LT5pZCA9IGlkOworCWZpbGUtPnByaXZhdGVfZGF0YSA9IGdkZXY7CiAJcmV0dXJuIDA7
CiB9CiAKLXN0YXRpYyBpbnQgZGF6dWtvZnNfZ3JvdXBfcmVsZWFzZShpbnQgZ3JvdXBfaWQs
IHN0cnVjdCBpbm9kZSAqaW5vZGUsCitzdGF0aWMgaW50IGRhenVrb2ZzX2dyb3VwX3JlbGVh
c2Uoc3RydWN0IGlub2RlICppbm9kZSwKIAkJCQkgIHN0cnVjdCBmaWxlICpmaWxlKQogewot
CWlmIChmaWxlLT5wcml2YXRlX2RhdGEpCi0JCWRhenVrb2ZzX2dyb3VwX3JlbGVhc2VfdHJh
Y2tpbmcoZ3JvdXBfaWQpOworCXN0cnVjdCBncm91cF9kZXZpY2UgKmdkZXY7CisKKwlnZGV2
ID0gKHN0cnVjdCBncm91cF9kZXZpY2UgKikgZmlsZS0+cHJpdmF0ZV9kYXRhOworCisJaWYg
KGdkZXYtPnRyYWNrKQorCQlkYXp1a29mc19ncm91cF9yZWxlYXNlX3RyYWNraW5nKGdkZXYt
PmlkKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHNzaXplX3QgZGF6dWtvZnNfZ3JvdXBf
cmVhZChpbnQgZ3JvdXBfaWQsIHN0cnVjdCBmaWxlICpmaWxlLAorc3RhdGljIHNzaXplX3Qg
ZGF6dWtvZnNfZ3JvdXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCQkgICBjaGFyIF9f
dXNlciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLAogCQkJCSAgIGxvZmZfdCAqcG9zKQogewpA
QCAtNTYsNiArODAsOSBAQCBzdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF9yZWFkKGlu
dCBnCiAJaW50IGZkOwogCWludCBlcnI7CiAJdW5zaWduZWQgbG9uZyBldmVudF9pZDsKKwlz
dHJ1Y3QgZ3JvdXBfZGV2aWNlICpnZGV2OworICAKKwlnZGV2ID0gKHN0cnVjdCBncm91cF9k
ZXZpY2UgKikgZmlsZS0+cHJpdmF0ZV9kYXRhOwogCiAJaWYgKCpwb3MgPiAwKQogCQlyZXR1
cm4gMDsKQEAgLTYzLDcgKzkwLDcgQEAgc3RhdGljIHNzaXplX3QgZGF6dWtvZnNfZ3JvdXBf
cmVhZChpbnQgZwogCWlmIChsZW5ndGggPCBEQVpVS09GU19NSU5fUkVBRF9CVUZGRVIpCiAJ
CXJldHVybiAtRUlOVkFMOwogCi0JZXJyID0gZGF6dWtvZnNfZ2V0X2V2ZW50KGdyb3VwX2lk
LCAmZXZlbnRfaWQsICZmZCwgJnBpZCk7CisJZXJyID0gZGF6dWtvZnNfZ2V0X2V2ZW50KGdk
ZXYtPmlkLCAmZXZlbnRfaWQsICZmZCwgJnBpZCk7CiAJaWYgKGVycikgewogCQlpZiAoZXJy
ID09IC1FUkVTVEFSVFNZUykKIAkJCXJldHVybiAtRUlOVFI7CkBAIC04Myw3ICsxMTAsNyBA
QCBzdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF9yZWFkKGludCBnCiAJcmV0dXJuIHRt
cF91c2VkOwogfQogCi1zdGF0aWMgc3NpemVfdCBkYXp1a29mc19ncm91cF93cml0ZShpbnQg
Z3JvdXBfaWQsIHN0cnVjdCBmaWxlICpmaWxlLAorc3RhdGljIHNzaXplX3QgZGF6dWtvZnNf
Z3JvdXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCQkJICAgIGNvbnN0IGNoYXIgX191
c2VyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsCiAJCQkJICAgIGxvZmZfdCAqcG9zKQogewpA
QCAtOTQsNiArMTIxLDkgQEAgc3RhdGljIHNzaXplX3QgZGF6dWtvZnNfZ3JvdXBfd3JpdGUo
aW50IAogCWNoYXIgKnA7CiAJY2hhciAqcDI7CiAJaW50IHJldDsKKwlzdHJ1Y3QgZ3JvdXBf
ZGV2aWNlICpnZGV2OworCisJZ2RldiA9IChzdHJ1Y3QgZ3JvdXBfZGV2aWNlICopIGZpbGUt
PnByaXZhdGVfZGF0YTsKIAogCWlmIChsZW5ndGggPj0gREFaVUtPRlNfTUFYX1dSSVRFX0JV
RkZFUikKIAkJbGVuZ3RoID0gREFaVUtPRlNfTUFYX1dSSVRFX0JVRkZFUiAtIDE7CkBAIC0x
MTgsNyArMTQ4LDcgQEAgc3RhdGljIHNzaXplX3QgZGF6dWtvZnNfZ3JvdXBfd3JpdGUoaW50
IAogCQlyZXR1cm4gLUVJTlZBTDsKIAlyZXNwb25zZSA9ICgqKHAgKyAyKSkgLSAnMCc7CiAK
LQlyZXQgPSBkYXp1a29mc19yZXR1cm5fZXZlbnQoZ3JvdXBfaWQsIGV2ZW50X2lkLCByZXNw
b25zZSk7CisJcmV0ID0gZGF6dWtvZnNfcmV0dXJuX2V2ZW50KGdkZXYtPmlkLCBldmVudF9p
ZCwgcmVzcG9uc2UpOwogCWlmIChyZXQgPT0gMCkgewogCQkqcG9zICs9IGxlbmd0aDsKIAkJ
cmV0ID0gbGVuZ3RoOwpAQCAtMTI5LDEwNCArMTU5LDEwNSBAQCBzdGF0aWMgc3NpemVfdCBk
YXp1a29mc19ncm91cF93cml0ZShpbnQgCiAJcmV0dXJuIHJldDsKIH0KIAotI2RlZmluZSBE
RUNMQVJFX0dST1VQX0ZPUFMoZ3JvdXBfaWQpIFwKLXN0YXRpYyBpbnQgXAotZGF6dWtvZnNf
Z3JvdXBfb3Blbl8jI2dyb3VwX2lkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl
ICpmaWxlKSBcCi17IFwKLQlyZXR1cm4gZGF6dWtvZnNfZ3JvdXBfb3Blbihncm91cF9pZCwg
aW5vZGUsIGZpbGUpOyBcCi19IFwKLXN0YXRpYyBpbnQgXAotZGF6dWtvZnNfZ3JvdXBfcmVs
ZWFzZV8jI2dyb3VwX2lkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxl
KSBcCi17IFwKLQlyZXR1cm4gZGF6dWtvZnNfZ3JvdXBfcmVsZWFzZShncm91cF9pZCwgaW5v
ZGUsIGZpbGUpOyBcCi19IFwKLXN0YXRpYyBzc2l6ZV90IFwKLWRhenVrb2ZzX2dyb3VwX3Jl
YWRfIyNncm91cF9pZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZmZlciwg
XAotCQkJICAgICAgIHNpemVfdCBsZW5ndGgsIGxvZmZfdCAqcG9zKSBcCi17IFwKLQlyZXR1
cm4gZGF6dWtvZnNfZ3JvdXBfcmVhZChncm91cF9pZCwgZmlsZSwgYnVmZmVyLCBsZW5ndGgs
IHBvcyk7IFwKLX0gXAotc3RhdGljIHNzaXplX3QgXAotZGF6dWtvZnNfZ3JvdXBfd3JpdGVf
IyNncm91cF9pZChzdHJ1Y3QgZmlsZSAqZmlsZSwgXAotCQkJCWNvbnN0IGNoYXIgX191c2Vy
ICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIFwKLQkJCQlsb2ZmX3QgKnBvcykgXAoteyBcCi0J
cmV0dXJuIGRhenVrb2ZzX2dyb3VwX3dyaXRlKGdyb3VwX2lkLCBmaWxlLCBidWZmZXIsIGxl
bmd0aCwgcG9zKTsgXAotfSBcCi1zdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBncm91
cF9mb3BzXyMjZ3JvdXBfaWQgPSB7IFwKLQkub3duZXIJCT0gVEhJU19NT0RVTEUsIFwKLQku
b3BlbgkJPSBkYXp1a29mc19ncm91cF9vcGVuXyMjZ3JvdXBfaWQsIFwKLQkucmVsZWFzZQk9
IGRhenVrb2ZzX2dyb3VwX3JlbGVhc2VfIyNncm91cF9pZCwgXAotCS5yZWFkCQk9IGRhenVr
b2ZzX2dyb3VwX3JlYWRfIyNncm91cF9pZCwgXAotCS53cml0ZQkJPSBkYXp1a29mc19ncm91
cF93cml0ZV8jI2dyb3VwX2lkLCBcCitzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdycF9mb3Bz
ID0geworCS5vd25lcgkgICA9IFRISVNfTU9EVUxFLAorCS5vcGVuIAkgICA9IGRhenVrb2Zz
X2dyb3VwX29wZW4sCisJLnJlbGVhc2UgICA9IGRhenVrb2ZzX2dyb3VwX3JlbGVhc2UsCisJ
LnJlYWQJICAgPSBkYXp1a29mc19ncm91cF9yZWFkLAorCS53cml0ZSAJICAgPSBkYXp1a29m
c19ncm91cF93cml0ZSwKIH07CiAKLURFQ0xBUkVfR1JPVVBfRk9QUygwKQotREVDTEFSRV9H
Uk9VUF9GT1BTKDEpCi1ERUNMQVJFX0dST1VQX0ZPUFMoMikKLURFQ0xBUkVfR1JPVVBfRk9Q
UygzKQotREVDTEFSRV9HUk9VUF9GT1BTKDQpCi1ERUNMQVJFX0dST1VQX0ZPUFMoNSkKLURF
Q0xBUkVfR1JPVVBfRk9QUyg2KQotREVDTEFSRV9HUk9VUF9GT1BTKDcpCi1ERUNMQVJFX0dS
T1VQX0ZPUFMoOCkKLURFQ0xBUkVfR1JPVVBfRk9QUyg5KQotCi1zdGF0aWMgc3RydWN0IGNk
ZXYgZ3JvdXBzX2NkZXZbR1JPVVBfQ09VTlRdOwotCi1zdGF0aWMgc3RydWN0IGZpbGVfb3Bl
cmF0aW9ucyAqZ3JvdXBfZm9wc1tHUk9VUF9DT1VOVF0gPSB7Ci0JJmdyb3VwX2ZvcHNfMCwK
LQkmZ3JvdXBfZm9wc18xLAotCSZncm91cF9mb3BzXzIsCi0JJmdyb3VwX2ZvcHNfMywKLQkm
Z3JvdXBfZm9wc180LAotCSZncm91cF9mb3BzXzUsCi0JJmdyb3VwX2ZvcHNfNiwKLQkmZ3Jv
dXBfZm9wc183LAotCSZncm91cF9mb3BzXzgsCi0JJmdyb3VwX2ZvcHNfOSwKLX07CisKK3N0
YXRpYyB2b2lkIGRhenVrb2ZzX2dyb3VwX2NsYXNzX2Rldl9yZWxlYXNlKHN0cnVjdCBjbGFz
c19kZXZpY2UgKmNsc19kZXYpCit7CisJLy8gbm90aGluZworfQorCitzdGF0aWMgdm9pZCBk
YXp1a29mc19ncm91cF9kZXZfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJLy8g
Tm90aGluZworfQorCitzdGF0aWMgaW50IF9fZGF6dWtvZnNfZ3JvdXBfZGV2X2luaXQoZGV2
X3QgZGV2dCwgc3RydWN0IGNsYXNzICpjbHMsIAorCQkJCSAgICAgc3RydWN0IGdyb3VwX2Rl
dmljZSAqZ2RldiwgY2hhciAqbmFtZSkKK3sKKwlpbnQgZXJyOworCQorCWNkZXZfaW5pdCgm
Z2Rldi0+Y2RldiwgJmdycF9mb3BzKTsKKwlnZGV2LT5jZGV2Lm93bmVyID0gVEhJU19NT0RV
TEU7CisKKwllcnIgPSBjZGV2X2FkZCgmZ2Rldi0+Y2RldiwgZGV2dCwgR1JPVVBfQ09VTlQp
OworCisJaWYgKGVycikKKwkJcmV0dXJuIC0xOyAKKworCWdkZXYtPmRldi5wYXJlbnQgPSAm
cGxhdGZvcm1fYnVzOworCWdkZXYtPmRldi5yZWxlYXNlID0gZGF6dWtvZnNfZ3JvdXBfZGV2
X3JlbGVhc2U7CisJc3RybmNweShnZGV2LT5kZXYuYnVzX2lkLCBuYW1lLCBCVVNfSURfU0la
RSk7CisKKwllcnIgPSBkZXZpY2VfcmVnaXN0ZXIoJmdkZXYtPmRldik7CisKKwlpZiAoZXJy
KSAKKwkJZ290byBlcnJfb3V0OworCisJZ2Rldi0+Y2xzX2Rldi5yZWxlYXNlID0gZGF6dWtv
ZnNfZ3JvdXBfY2xhc3NfZGV2X3JlbGVhc2U7CisJZ2Rldi0+Y2xzX2Rldi5jbGFzcyA9IGNs
czsgCisJZ2Rldi0+Y2xzX2Rldi5kZXYgPSAmZ2Rldi0+ZGV2OworCXN0cm5jcHkoZ2Rldi0+
Y2xzX2Rldi5jbGFzc19pZCwgbmFtZSwgQlVTX0lEX1NJWkUpOworCWdkZXYtPmNsc19kZXYu
ZGV2dCA9IGRldnQ7CQorCQorCWVyciA9IGNsYXNzX2RldmljZV9yZWdpc3RlcigmZ2Rldi0+
Y2xzX2Rldik7IAorCisJaWYgKGVycikgCisJCWdvdG8gZXJyX291dDI7CisKKwlyZXR1cm4g
MDsKKworZXJyX291dDI6CisJZGV2aWNlX3VucmVnaXN0ZXIoJmdkZXYtPmRldik7CitlcnJf
b3V0OgorCWNkZXZfZGVsKCZnZGV2LT5jZGV2KTsKKworCXJldHVybiBlcnI7Cit9CiAKIGlu
dCBkYXp1a29mc19ncm91cF9kZXZfaW5pdChpbnQgZGV2X21ham9yLCBpbnQgZGV2X21pbm9y
X3N0YXJ0LAogCQkJICAgIHN0cnVjdCBjbGFzcyAqZGF6dWtvZnNfY2xhc3MpCiB7Ci0JaW50
IGVyciA9IDA7Ci0Jc3RydWN0IGRldmljZSAqZGV2OworCWludCBlcnI7CiAJaW50IGk7Ci0J
aW50IGNkZXZfY291bnQ7Ci0JaW50IGRldl9taW5vcl9lbmQgPSBkZXZfbWlub3Jfc3RhcnQ7
CisJZGV2X3QgZGV2dDsKKwlzdHJ1Y3QgZ3JvdXBfZGV2aWNlICpnZGV2OworCWNoYXIgbmFt
ZVtCVVNfSURfU0laRV07CiAKLQkvKiBzZXR1cCBjZGV2cyBmb3IgZ3JvdXBzICovCi0JZm9y
IChjZGV2X2NvdW50ID0gMDsgY2Rldl9jb3VudCA8IEdST1VQX0NPVU5UOyBjZGV2X2NvdW50
KyspIHsKLQkJY2Rldl9pbml0KCZncm91cHNfY2RldltjZGV2X2NvdW50XSwgZ3JvdXBfZm9w
c1tjZGV2X2NvdW50XSk7Ci0JCWdyb3Vwc19jZGV2W2NkZXZfY291bnRdLm93bmVyID0gVEhJ
U19NT0RVTEU7Ci0JCWVyciA9IGNkZXZfYWRkKCZncm91cHNfY2RldltjZGV2X2NvdW50XSwK
LQkJCSAgICAgICBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5vcl9zdGFydCArIGNkZXZfY291
bnQpLAotCQkJICAgICAgIEdST1VQX0NPVU5UKTsKLQkJaWYgKGVycikKLQkJCWdvdG8gZXJy
b3Jfb3V0MTsKLQl9CisJZ3JwX2RldnMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZ3JvdXBf
ZGV2aWNlKSAqIEdST1VQX0NPVU5ULAorCQkJICAgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIWdy
cF9kZXZzKQorCQlyZXR1cm4gLUVOT01FTTsKIAogCS8qIGNyZWF0ZSBncm91cCBkZXZpY2Vz
ICovCiAJZm9yIChpID0gMDsgaSA8IEdST1VQX0NPVU5UOyBpKyspIHsKLQkJZGV2ID0gZGV2
aWNlX2NyZWF0ZShkYXp1a29mc19jbGFzcywgTlVMTCwKLQkJCQkgICAgTUtERVYoZGV2X21h
am9yLCBkZXZfbWlub3JfZW5kKSwgTlVMTCwKLQkJCQkgICAgIiVzLiVkIiwgREVWSUNFX05B
TUUsIGkpOwotCQlpZiAoSVNfRVJSKGRldikpIHsKLQkJCWVyciA9IFBUUl9FUlIoZGV2KTsK
LQkJCWdvdG8gZXJyb3Jfb3V0MjsKLQkJfQotCQlkZXZfbWlub3JfZW5kKys7CisJCWdkZXYg
PSAmZ3JwX2RldnNbaV07CisJCWRldnQgPSBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5vcl9z
dGFydCArIGkpOworCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICIlcy4laSIsIERF
VklDRV9OQU1FLCBpKTsJCQorCQllcnIgPSBfX2RhenVrb2ZzX2dyb3VwX2Rldl9pbml0KGRl
dnQsIGRhenVrb2ZzX2NsYXNzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdkZXYsIG5hbWUpOyAJCQorCQlpZiAoZXJyKQorCQkJZ290byB1
bmRvOwogCX0KIAotCXJldHVybiBkZXZfbWlub3JfZW5kOworCW1pbm9yX3N0YXJ0ID0gZGV2
X21pbm9yX3N0YXJ0OworCXJldHVybiBpOwogCi1lcnJvcl9vdXQyOgotCWZvciAoaSA9IGRl
dl9taW5vcl9zdGFydDsgaSA8IGRldl9taW5vcl9lbmQ7IGkrKykKLQkJZGV2aWNlX2Rlc3Ry
b3koZGF6dWtvZnNfY2xhc3MsIE1LREVWKGRldl9tYWpvciwgaSkpOwotZXJyb3Jfb3V0MToK
LQlmb3IgKGkgPSAwOyBpIDwgY2Rldl9jb3VudDsgaSsrKQotCQljZGV2X2RlbCgmZ3JvdXBz
X2NkZXZbaV0pOwordW5kbzoKKwl3aGlsZShpKSB7CQkKKwkJaS0tOworCQlnZGV2ID0gJmdy
cF9kZXZzW2ldOworCQljbGFzc19kZXZpY2VfdW5yZWdpc3RlcigmZ2Rldi0+Y2xzX2Rldik7
CisJCWRldmljZV91bnJlZ2lzdGVyKCZnZGV2LT5kZXYpOworCQljZGV2X2RlbCgmZ2Rldi0+
Y2Rldik7CisJfQogCXJldHVybiBlcnI7CiB9CiAKQEAgLTIzNiw5ICsyNjcsMTQgQEAgdm9p
ZCBkYXp1a29mc19ncm91cF9kZXZfZGVzdHJveShpbnQgZGV2XwogewogCWludCBpOwogCi0J
Zm9yIChpID0gZGV2X21pbm9yX3N0YXJ0OyBpIDwgZGV2X21pbm9yX2VuZDsgaSsrKQotCQlk
ZXZpY2VfZGVzdHJveShkYXp1a29mc19jbGFzcywgTUtERVYoZGV2X21ham9yLCBpKSk7CisJ
Zm9yIChpID0gMDsgaSA8IEdST1VQX0NPVU5UOyBpKyspIHsKKwkJc3RydWN0IGdyb3VwX2Rl
dmljZSAqZ2RldjsKKworCQlnZGV2ID0gJmdycF9kZXZzW2ldOwogCi0JZm9yIChpID0gMDsg
aSA8IEdST1VQX0NPVU5UOyBpKyspCi0JCWNkZXZfZGVsKCZncm91cHNfY2RldltpXSk7CisJ
CWNsYXNzX2RldmljZV91bnJlZ2lzdGVyKCZnZGV2LT5jbHNfZGV2KTsKKwkJZGV2aWNlX3Vu
cmVnaXN0ZXIoJmdkZXYtPmRldik7CisJCWNkZXZfZGVsKCZnZGV2LT5jZGV2KTsKKwl9CisJ
a2ZyZWUoZ3JwX2RldnMpOwogfQpkaWZmIC14IENWUyAtcnVwIGRhenVrb2ZzLTMuMC4wL2ln
bl9kZXYuYyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9pZ25fZGV2LmMK
LS0tIGRhenVrb2ZzLTMuMC4wL2lnbl9kZXYuYwkyMDA5LTAyLTIyIDE3OjQ1OjIwLjAwMDAw
MDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEvaWdu
X2Rldi5jCTIwMDktMDItMjMgMTY6MDE6MzguMDAwMDAwMDAwICswMTAwCkBAIC0yMSw3ICsy
MSw4IEBACiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvZnMu
aD4KICNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+Ci0jaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5o
PgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGFzbS91
YWNjZXNzLmg+CiAKICNpbmNsdWRlICJkYXp1a29mc19mcy5oIgogI2luY2x1ZGUgImRldi5o
IgpAQCAtNTYsMTIgKzU3LDE0IEBAIGludCBkYXp1a29mc19jaGVja19pZ25vcmVfcHJvY2Vz
cyh2b2lkKQogCiBzdGF0aWMgaW50IGRhenVrb2ZzX2FkZF9pZ24oc3RydWN0IGZpbGUgKmZp
bGUpCiB7Ci0Jc3RydWN0IGRhenVrb2ZzX3Byb2MgKnByb2MgPQotCQlrbWVtX2NhY2hlX3ph
bGxvYyhkYXp1a29mc19pZ25fY2FjaGVwLCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3QgZGF6dWtv
ZnNfcHJvYyAqcHJvYzsKKworCXByb2MgPSBrbWVtX2NhY2hlX2FsbG9jKGRhenVrb2ZzX2ln
bl9jYWNoZXAsIEdGUF9LRVJORUwpOwogCWlmICghcHJvYykgewogCQlmaWxlLT5wcml2YXRl
X2RhdGEgPSBOVUxMOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CisJbWVtc2V0KHByb2MsIDAs
IHNpemVvZigqcHJvYykpOwogCiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcHJvYzsKIAlwcm9j
LT5jdXJyID0gY3VycmVudDsKQEAgLTEyNCw3ICsxMjcsMTEgQEAgc3RhdGljIHZvaWQgZGF6
dWtvZnNfZGVzdHJveV9pZ25saXN0KHZvaQogCX0KIH0KIAotc3RhdGljIHN0cnVjdCBjZGV2
IGlnbl9jZGV2Oworc3RhdGljIHN0cnVjdCB7CisJc3RydWN0IGNkZXYgY2RldjsKKwlzdHJ1
Y3QgZGV2aWNlIGRldjsKKwlzdHJ1Y3QgY2xhc3NfZGV2aWNlIGNsc19kZXY7Cit9IGlnbl9k
ZXY7CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGlnbl9mb3BzID0gewogCS5v
d25lcgkJPSBUSElTX01PRFVMRSwKQEAgLTEzMiwxMSArMTM5LDIzIEBAIHN0YXRpYyBzdHJ1
Y3QgZmlsZV9vcGVyYXRpb25zIGlnbl9mb3BzID0KIAkucmVsZWFzZQk9IGRhenVrb2ZzX2ln
bl9yZWxlYXNlLAogfTsKIAorCitzdGF0aWMgdm9pZCBkYXp1a29mc19pZ25fY2xhc3NfZGV2
X3JlbGVhc2Uoc3RydWN0IGNsYXNzX2RldmljZSAqZGV2KQoreworCS8vIG5vdGhpbmcKK30K
Kworc3RhdGljIHZvaWQgZGF6dWtvZnNfaWduX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2Ug
KmRldikKK3sKKwkvLyBub3RoaW5nCit9CisKKwogaW50IGRhenVrb2ZzX2lnbl9kZXZfaW5p
dChpbnQgZGV2X21ham9yLCBpbnQgZGV2X21pbm9yLAogCQkJICBzdHJ1Y3QgY2xhc3MgKmRh
enVrb2ZzX2NsYXNzKQogewotCWludCBlcnIgPSAwOwotCXN0cnVjdCBkZXZpY2UgKmRldjsK
KwlkZXZfdCBkZXZ0OworCWludCBlcnI7CiAKIAlJTklUX0xJU1RfSEVBRCgmaWduX2xpc3Qu
bGlzdCk7CiAJbXV0ZXhfaW5pdCgmaWduX2xpc3RfbXV0ZXgpOwpAQCAtMTQ0LDQzICsxNjMs
NTcgQEAgaW50IGRhenVrb2ZzX2lnbl9kZXZfaW5pdChpbnQgZGV2X21ham9yLAogCWRhenVr
b2ZzX2lnbl9jYWNoZXAgPQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgiZGF6dWtvZnNfaWduX2Nh
Y2hlIiwKIAkJCQkgIHNpemVvZihzdHJ1Y3QgZGF6dWtvZnNfcHJvYyksIDAsCi0JCQkJICBT
TEFCX0hXQ0FDSEVfQUxJR04sIE5VTEwpOwotCWlmICghZGF6dWtvZnNfaWduX2NhY2hlcCkg
ewotCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIGVycm9yX291dDE7Ci0JfQorCQkJCSAgU0xB
Ql9IV0NBQ0hFX0FMSUdOLCBOVUxMLCBOVUxMKTsKKwlpZiAoIWRhenVrb2ZzX2lnbl9jYWNo
ZXApIAorCQlyZXR1cm4gLUVOT01FTTsKKworCWRldnQgPSBNS0RFVihkZXZfbWFqb3IsIGRl
dl9taW5vcik7CiAKIAkvKiBzZXR1cCBjZGV2IGZvciBpZ25vcmUgKi8KLQljZGV2X2luaXQo
Jmlnbl9jZGV2LCAmaWduX2ZvcHMpOwotCWlnbl9jZGV2Lm93bmVyID0gVEhJU19NT0RVTEU7
Ci0JZXJyID0gY2Rldl9hZGQoJmlnbl9jZGV2LCBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5v
ciksIDEpOworCWNkZXZfaW5pdCgmaWduX2Rldi5jZGV2LCAmaWduX2ZvcHMpOworCWlnbl9k
ZXYuY2Rldi5vd25lciA9IFRISVNfTU9EVUxFOworCWVyciA9IGNkZXZfYWRkKCZpZ25fZGV2
LmNkZXYsIGRldnQsIDEpOwogCWlmIChlcnIpCisJCWdvdG8gZXJyb3Jfb3V0OwkJCisKKwlp
Z25fZGV2LmRldi5wYXJlbnQgPSAmcGxhdGZvcm1fYnVzOworCWlnbl9kZXYuZGV2LnJlbGVh
c2UgPSBkYXp1a29mc19pZ25fZGV2X3JlbGVhc2U7CisJc25wcmludGYoaWduX2Rldi5kZXYu
YnVzX2lkLCBCVVNfSURfU0laRSwgIiVzLmlnbiIsIERFVklDRV9OQU1FKTsKKworCWVyciA9
IGRldmljZV9yZWdpc3RlcigmaWduX2Rldi5kZXYpOworCisJaWYgKGVycikgCiAJCWdvdG8g
ZXJyb3Jfb3V0MjsKIAotCS8qIGNyZWF0ZSBpZ25vcmUgZGV2aWNlICovCi0JZGV2ID0gZGV2
aWNlX2NyZWF0ZShkYXp1a29mc19jbGFzcywgTlVMTCwgTUtERVYoZGV2X21ham9yLCBkZXZf
bWlub3IpLAotCQkJICAgIE5VTEwsICIlcy5pZ24iLCBERVZJQ0VfTkFNRSk7Ci0JaWYgKElT
X0VSUihkZXYpKSB7Ci0JCWVyciA9IFBUUl9FUlIoZGV2KTsKKwlpZ25fZGV2LmNsc19kZXYu
cmVsZWFzZSA9IGRhenVrb2ZzX2lnbl9jbGFzc19kZXZfcmVsZWFzZTsKKwlpZ25fZGV2LmNs
c19kZXYuY2xhc3MgPSBkYXp1a29mc19jbGFzczsKKwlpZ25fZGV2LmNsc19kZXYuZGV2ID0g
Jmlnbl9kZXYuZGV2OworCXNucHJpbnRmKGlnbl9kZXYuY2xzX2Rldi5jbGFzc19pZCwgQlVT
X0lEX1NJWkUsICIlcy5pZ24iLCBERVZJQ0VfTkFNRSk7CisJaWduX2Rldi5jbHNfZGV2LmRl
dnQgPSBkZXZ0OworCisJZXJyID0gY2xhc3NfZGV2aWNlX3JlZ2lzdGVyKCZpZ25fZGV2LmNs
c19kZXYpOworCisJaWYgKGVycikKIAkJZ290byBlcnJvcl9vdXQzOwotCX0KIAotCXJldHVy
biAwOwogCisJcmV0dXJuIDA7CiBlcnJvcl9vdXQzOgotCWNkZXZfZGVsKCZpZ25fY2Rldik7
CisJZGV2aWNlX3VucmVnaXN0ZXIoJmlnbl9kZXYuZGV2KTsKIGVycm9yX291dDI6Ci0JZGF6
dWtvZnNfZGVzdHJveV9pZ25saXN0KCk7CisJY2Rldl9kZWwoJmlnbl9kZXYuY2Rldik7Citl
cnJvcl9vdXQ6CiAJa21lbV9jYWNoZV9kZXN0cm95KGRhenVrb2ZzX2lnbl9jYWNoZXApOwot
ZXJyb3Jfb3V0MToKIAlyZXR1cm4gZXJyOwogfQogCisKIHZvaWQgZGF6dWtvZnNfaWduX2Rl
dl9kZXN0cm95KGludCBkZXZfbWFqb3IsIGludCBkZXZfbWlub3IsCiAJCQkgICAgICBzdHJ1
Y3QgY2xhc3MgKmRhenVrb2ZzX2NsYXNzKQogewotCWRldmljZV9kZXN0cm95KGRhenVrb2Zz
X2NsYXNzLCBNS0RFVihkZXZfbWFqb3IsIGRldl9taW5vcikpOwotCWNkZXZfZGVsKCZpZ25f
Y2Rldik7CisJY2xhc3NfZGV2aWNlX3VucmVnaXN0ZXIoJmlnbl9kZXYuY2xzX2Rldik7CisJ
ZGV2aWNlX3VucmVnaXN0ZXIoJmlnbl9kZXYuZGV2KTsKKwljZGV2X2RlbCgmaWduX2Rldi5j
ZGV2KTsKIAlkYXp1a29mc19kZXN0cm95X2lnbmxpc3QoKTsKIAlrbWVtX2NhY2hlX2Rlc3Ry
b3koZGF6dWtvZnNfaWduX2NhY2hlcCk7CiB9CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMt
My4wLjAvaW5vZGUuYyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9pbm9k
ZS5jCi0tLSBkYXp1a29mcy0zLjAuMC9pbm9kZS5jCTIwMDktMDItMjIgMTc6NDY6MDIuMDAw
MDAwMDAwICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9p
bm9kZS5jCTIwMDktMDctMDYgMTA6MjA6MjYuMDAwMDAwMDAwICswMjAwCkBAIC0yNSwxNSAr
MjUsMTkgQEAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L25hbWVp
Lmg+CiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4KLSNpbmNsdWRlIDxsaW51eC91YWNjZXNz
Lmg+Ci0jaW5jbHVkZSA8bGludXgvZnNfc3RhY2suaD4KLQorI2luY2x1ZGUgPGFzbS91YWNj
ZXNzLmg+CiAjaW5jbHVkZSAiZGF6dWtvZnNfZnMuaCIKIAogc3RhdGljIHN0cnVjdCBpbm9k
ZV9vcGVyYXRpb25zIGRhenVrb2ZzX3N5bWxpbmtfaW9wczsKIHN0YXRpYyBzdHJ1Y3QgaW5v
ZGVfb3BlcmF0aW9ucyBkYXp1a29mc19kaXJfaW9wczsKIHN0YXRpYyBzdHJ1Y3QgaW5vZGVf
b3BlcmF0aW9ucyBkYXp1a29mc19tYWluX2lvcHM7CiAKK3ZvaWQgZnNzdGFja19jb3B5X2lu
b2RlX3NpemUoc3RydWN0IGlub2RlICpkc3QsIGNvbnN0IHN0cnVjdCBpbm9kZSAqc3JjKQor
eworCWlfc2l6ZV93cml0ZShkc3QsIGlfc2l6ZV9yZWFkKChzdHJ1Y3QgaW5vZGUgKikgc3Jj
KSk7CisJZHN0LT5pX2Jsb2NrcyA9IHNyYy0+aV9ibG9ja3M7Cit9CisKIHN0YXRpYyBpbnQg
ZGF6dWtvZnNfaW5vZGVfdGVzdChzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQkJICAgICAgIHZv
aWQgKmNhbmRpZGF0ZV9sb3dlcl9pbm9kZSkKIHsKQEAgLTQ3LDEyICs1MSwyNSBAQCBzdGF0
aWMgaW50IGRhenVrb2ZzX2lub2RlX3Rlc3Qoc3RydWN0IGluCiAKIHN0YXRpYyB2b2lkIGRh
enVrb2ZzX2luaXRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICps
b3dlcl9pbm9kZSkKIHsKLQlTRVRfTE9XRVJfSU5PREUoaW5vZGUsIGxvd2VyX2lub2RlKTsK
LQlpbm9kZS0+aV9pbm8gPSBsb3dlcl9pbm9kZS0+aV9pbm87Ci0JaW5vZGUtPmlfdmVyc2lv
bisrOwotCWlub2RlLT5pX29wID0gJmRhenVrb2ZzX21haW5faW9wczsKLQlpbm9kZS0+aV9m
b3AgPSAmZGF6dWtvZnNfbWFpbl9mb3BzOwotCWlub2RlLT5pX21hcHBpbmctPmFfb3BzID0g
JmRhenVrb2ZzX2FvcHM7CisgICAgICAgIFNFVF9MT1dFUl9JTk9ERShpbm9kZSwgbG93ZXJf
aW5vZGUpOworICAgICAgICBpbm9kZS0+aV9pbm8gPSBsb3dlcl9pbm9kZS0+aV9pbm87Cisg
ICAgICAgIGlub2RlLT5pX3ZlcnNpb24rKzsKKworICAgICAgICBpZiAoU19JU0RJUihsb3dl
cl9pbm9kZS0+aV9tb2RlKSkgeworICAgICAgICAgICAgICAgIGlub2RlLT5pX29wID0gJmRh
enVrb2ZzX2Rpcl9pb3BzOworICAgICAgICAgICAgICAgIGlub2RlLT5pX2ZvcCA9ICZkYXp1
a29mc19kaXJfZm9wczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbm9k
ZS0+aV9vcCA9ICZkYXp1a29mc19tYWluX2lvcHM7CisgICAgICAgICAgICAgICAgaW5vZGUt
PmlfZm9wID0gJmRhenVrb2ZzX21haW5fZm9wczsKKworICAgICAgICAgICAgICAgIGlmIChT
X0lTTE5LKGxvd2VyX2lub2RlLT5pX21vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aW5vZGUtPmlfb3AgPSAmZGF6dWtvZnNfc3ltbGlua19pb3BzOworICAgICAgICAgICAgICAg
IGVsc2UgIGlmIChzcGVjaWFsX2ZpbGUobG93ZXJfaW5vZGUtPmlfbW9kZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluaXRfc3BlY2lhbF9pbm9kZShpbm9kZSwgbG93ZXJfaW5v
ZGUtPmlfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb3dlcl9pbm9kZS0+aV9yZGV2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaW5vZGUtPmlfbWFwcGluZy0+YV9vcHMgPSAmZGF6dWtvZnNfYW9wczsKIH0K
IAogc3RhdGljIGludCBkYXp1a29mc19pbm9kZV9zZXQoc3RydWN0IGlub2RlICppbm9kZSwg
dm9pZCAqbG93ZXJfaW5vZGUpCkBAIC02Miw3MiArNzksMTI0IEBAIHN0YXRpYyBpbnQgZGF6
dWtvZnNfaW5vZGVfc2V0KHN0cnVjdCBpbm8KIH0KIAogaW50IGRhenVrb2ZzX2ludGVycG9z
ZShzdHJ1Y3QgZGVudHJ5ICpsb3dlcl9kZW50cnksIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwK
LQkJICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgZmxhZykKKwkJICAgICBzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgaGFzaCkKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl
OwotCXN0cnVjdCBpbm9kZSAqbG93ZXJfaW5vZGUgPSBpZ3JhYihsb3dlcl9kZW50cnktPmRf
aW5vZGUpOwotCWludCBlcnIgPSAwOworCXN0cnVjdCBpbm9kZSAqbG93ZXJfaW5vZGU7CisJ
aW50IGVycjsKIAotCWlmICghbG93ZXJfaW5vZGUpIHsKLQkJZXJyID0gLUVTVEFMRTsKLQkJ
Z290byBvdXQ7Ci0JfQorCWxvd2VyX2lub2RlID0gaWdyYWIobG93ZXJfZGVudHJ5LT5kX2lu
b2RlKTsKIAotCWlmIChsb3dlcl9pbm9kZS0+aV9zYiAhPSBHRVRfTE9XRVJfU0Ioc2IpKSB7
Ci0JCWlwdXQobG93ZXJfaW5vZGUpOwotCQllcnIgPSAtRVhERVY7Ci0JCWdvdG8gb3V0Owot
CX0KKwlpZiAoIWxvd2VyX2lub2RlKSAKKwkJcmV0dXJuIC1FU1RBTEU7CiAKIAlpbm9kZSA9
IGlnZXQ1X2xvY2tlZChzYiwgKHVuc2lnbmVkIGxvbmcpbG93ZXJfaW5vZGUsCiAJCQkgICAg
IGRhenVrb2ZzX2lub2RlX3Rlc3QsIGRhenVrb2ZzX2lub2RlX3NldCwKIAkJCSAgICAgbG93
ZXJfaW5vZGUpOwotCiAJaWYgKCFpbm9kZSkgewotCQlpcHV0KGxvd2VyX2lub2RlKTsKIAkJ
ZXJyID0gLUVBQ0NFUzsKLQkJZ290byBvdXQ7CisJCWdvdG8gZXJyOwogCX0KIAotCWlmIChp
bm9kZS0+aV9zdGF0ZSAmIElfTkVXKSB7CisJaWYgKGlub2RlLT5pX3N0YXRlICYgSV9ORVcp
IAogCQl1bmxvY2tfbmV3X2lub2RlKGlub2RlKTsKIAkJLyoKIAkJICogVGhpcyBpcyBhIG5l
dyBub2RlIHNvIHdlIGxlYXZlIHRoZSBsb3dlcl9ub2RlICJpbiB1c2UiCiAJCSAqIGFuZCBk
byBub3QgY2FsbCBpcHV0KCkuCiAJCSAqLwotCX0gZWxzZSB7CisJZWxzZSAKIAkJLyoKIAkJ
ICogVGhpcyBpcyBub3QgYSBuZXcgbm9kZSBzbyB3ZSBkZWNyZW1lbnQgdGhlIHVzYWdlIGNv
dW50LgogCQkgKi8KIAkJaXB1dChsb3dlcl9pbm9kZSk7Ci0JfQogCi0JaWYgKFNfSVNMTkso
bG93ZXJfaW5vZGUtPmlfbW9kZSkpCi0JCWlub2RlLT5pX29wID0gJmRhenVrb2ZzX3N5bWxp
bmtfaW9wczsKLQllbHNlIGlmIChTX0lTRElSKGxvd2VyX2lub2RlLT5pX21vZGUpKQotCQlp
bm9kZS0+aV9vcCA9ICZkYXp1a29mc19kaXJfaW9wczsKLQotCWlmIChTX0lTRElSKGxvd2Vy
X2lub2RlLT5pX21vZGUpKQotCQlpbm9kZS0+aV9mb3AgPSAmZGF6dWtvZnNfZGlyX2ZvcHM7
Ci0KLQlpZiAoc3BlY2lhbF9maWxlKGxvd2VyX2lub2RlLT5pX21vZGUpKSB7Ci0JCWluaXRf
c3BlY2lhbF9pbm9kZShpbm9kZSwgbG93ZXJfaW5vZGUtPmlfbW9kZSwKLQkJCQkgICBsb3dl
cl9pbm9kZS0+aV9yZGV2KTsKLQl9Ci0KLQlkZW50cnktPmRfb3AgPSAmZGF6dWtvZnNfZG9w
czsKIAotCWlmIChmbGFnKQorCWlmIChoYXNoKQogCQlkX2FkZChkZW50cnksIGlub2RlKTsK
IAllbHNlCiAJCWRfaW5zdGFudGlhdGUoZGVudHJ5LCBpbm9kZSk7CiAKLQlmc3N0YWNrX2Nv
cHlfYXR0cl9hbGwoaW5vZGUsIGxvd2VyX2lub2RlLCBOVUxMKTsKKwlmc3N0YWNrX2NvcHlf
YXR0cl9hbGwoaW5vZGUsIGxvd2VyX2lub2RlKTsKIAlmc3N0YWNrX2NvcHlfaW5vZGVfc2l6
ZShpbm9kZSwgbG93ZXJfaW5vZGUpOwotb3V0OgorCisJcmV0dXJuIDA7CitlcnI6CisJaXB1
dChsb3dlcl9pbm9kZSk7CiAJcmV0dXJuIGVycjsKIH0KIAorLyogY3JlYXRlcyBhIG5ldyBs
b3dlciBkZW50cnkgKi8KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkYXp1a29mc19uZXdfbG93
ZXJfZGVudHJ5KHN0cnVjdCBxc3RyICpuYW1lLAorCQkJCQkJc3RydWN0IGRlbnRyeSAqbG93
ZXJfYmFzZSwgCisJCQkJCQlzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKK3sKKwlzdHJ1Y3QgZGVu
dHJ5ICpuZXdfZGVudHJ5OworCXN0cnVjdCBkZW50cnkgKnRtcDsKKwlzdHJ1Y3QgaW5vZGUg
Kmxvd2VyX2lub2RlOworCisJbG93ZXJfaW5vZGUgPSBsb3dlcl9iYXNlLT5kX2lub2RlOwor
CS8qIFhYWDogaXMgdGhpcyBjaGVjayBzdGlsbCBuZWNlc3Nhcnk/IChzZWUgX19sb29rdXBf
aGFzaCgpKQorCSAgIFRoaXMgaXMgKGhvcGVseSkgcHJvdGVjdGVkIGJ5IGxvY2tlZCB1cHBl
ciBpbm9kZSAqLworCWlmIChJU19ERUFERElSKGxvd2VyX2lub2RlKSkgeworCQluZXdfZGVu
dHJ5ID0gRVJSX1BUUigtRU5PRU5UKTsKKwkJZ290byBvdXQ7CisJfQorCXRtcCA9IGRfYWxs
b2MobG93ZXJfYmFzZSwgbmFtZSk7CisJaWYgKCF0bXApIHsKKwkJbmV3X2RlbnRyeSA9IEVS
Ul9QVFIoLUVOT01FTSk7CisJCWdvdG8gb3V0OworCX0KKwluZXdfZGVudHJ5ID0gbG93ZXJf
aW5vZGUtPmlfb3AtPmxvb2t1cChsb3dlcl9pbm9kZSwgdG1wLCBuZCk7CisJLyogbG9va3Vw
KCkgc2VlbWluZ2x5IGlzIGFsbG93ZWQgdG8gcmV0dXJuIGl0cyBvd24gZGVudHJ5ICh3aGlj
aCAKKwkgKiBtYXkgaW5kZWVkIGJlIGEgZGVudHJ5IG9yIG9ubHkgYW4gZXJyb3IpLiBJZiBz
bworCSAqIHdlIHVzZSBpdCBhbmQgZGlzY2FyZCBvdXJzLiBPdGhlcndpc2Ugd2UgdXNlIG91
cnMgKi8gCisJaWYgKCFuZXdfZGVudHJ5KSAKKwkJbmV3X2RlbnRyeSA9IHRtcDsKKwllbHNl
IAorCQlkcHV0KHRtcCk7CisJCQorb3V0OgkJCisJcmV0dXJuIG5ld19kZW50cnk7Cit9CisK
KworLyogZ2V0IGxvd2VyIGRlbnRyeSBmb3IgZ2l2ZW4gbmFtZSAqLworc3RhdGljIHN0cnVj
dCBkZW50cnkgKmRhenVrb2ZzX2xvb2t1cF9vbmVfbG93ZXIoc3RydWN0IHFzdHIgKm5hbWUs
IAorCQkJCQkJc3RydWN0IGRlbnRyeSAqbG93ZXJfYmFzZSwKKwkJCQkJCXN0cnVjdCB2ZnNt
b3VudCAqbG93ZXJfbW50KQoreworCXN0cnVjdCBkZW50cnkgKnJlc3VsdDsKKwlzdHJ1Y3Qg
bmFtZWlkYXRhIG5kOworCWludCBlcnI7CisKKwkvKiBzZWUgdmZzX3BhdGhfbG9va3VwIGlu
IGtlcm5lbCB2ZXJzaW9ucyA+PSAyLjYuMjQgKi8KKwluZC5sYXN0X3R5cGUgPSBMQVNUX1JP
T1Q7CisJbmQuZmxhZ3MgPSAwOworCW5kLmRlcHRoID0gMDsKKwluZC5kZW50cnkgPSBkZ2V0
KGxvd2VyX2Jhc2UpOworCW5kLm1udCA9IG1udGdldChsb3dlcl9tbnQpOworCisJZXJyID0g
cGF0aF93YWxrKG5hbWUtPm5hbWUsICZuZCk7CisKKwlpZiAoIWVycikgeworCQkvKiBpbm9k
ZSBhbHJlYWR5IGV4aXN0cyBvbiBkaXNrICovCisJCXJlc3VsdCA9IG5kLmRlbnRyeTsKKwkJ
Lyogd2UgZG9udCBuZWVkIHRoZSBtb3VudCAqLworCQltbnRwdXQobmQubW50KTsKKwkJZ290
byBvdXQ7CisJfQorCWlmIChlcnIgIT0gLUVOT0VOVCkgeyAvKiB0aGlzIGlzIGEgUkVBTCBl
cnJvciAqLwkKKwkJcmVzdWx0ID0gRVJSX1BUUihlcnIpOworCQlnb3RvIG91dDsKKwl9CQor
CS8qIGNyZWF0ZSBhIG5ldyAobG93ZXIpIGRlbnRyeSAqLworCXJlc3VsdCA9IGRhenVrb2Zz
X25ld19sb3dlcl9kZW50cnkobmFtZSwgbG93ZXJfYmFzZSwgJm5kKTsKK291dDoKKwlyZXR1
cm4gcmVzdWx0OworCit9CisKKwogLyoqCiAgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIHdoZW4g
dGhlIFZGUyBuZWVkcyB0byBsb29rIHVwIGFuIGlub2RlIGluIGEgcGFyZW50CiAgKiBkaXJl
Y3RvcnkuIFRoZSBuYW1lIHRvIGxvb2sgZm9yIGlzIGZvdW5kIGluIHRoZSBkZW50cnkuIFRo
aXMgbWV0aG9kCkBAIC0xNDgsNjIgKzIxNyw0OSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAq
ZGF6dWtvZnNfbG9va3VwKHN0CiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5OwogCXN0
cnVjdCBkZW50cnkgKmxvd2VyX2RlbnRyeV9wYXJlbnQ7CiAJc3RydWN0IHZmc21vdW50ICps
b3dlcl9tbnQ7Ci0JaW50IGVyciA9IDA7Ci0KLQlpZiAoKGRlbnRyeS0+ZF9uYW1lLmxlbiA9
PSAxICYmICFzdHJjbXAoZGVudHJ5LT5kX25hbWUubmFtZSwgIi4iKSkKLQkgICAgfHwgKGRl
bnRyeS0+ZF9uYW1lLmxlbiA9PSAyICYmCi0JCSFzdHJjbXAoZGVudHJ5LT5kX25hbWUubmFt
ZSwgIi4uIikpKSB7Ci0JCWRfZHJvcChkZW50cnkpOwotCQlnb3RvIG91dDsKLQl9Ci0KLQlk
ZW50cnktPmRfb3AgPSAmZGF6dWtvZnNfZG9wczsKKwlzdHJ1Y3QgZGF6dWtvZnNfZGVudHJ5
X2luZm8gKmRpOworCWludCBlcnI7CiAKIAlsb3dlcl9kZW50cnlfcGFyZW50ID0gR0VUX0xP
V0VSX0RFTlRSWShkZW50cnktPmRfcGFyZW50KTsKLQlsb3dlcl9kZW50cnkgPSBsb29rdXBf
b25lX2xlbihkZW50cnktPmRfbmFtZS5uYW1lLCBsb3dlcl9kZW50cnlfcGFyZW50LAotCQkJ
CSAgICAgIGRlbnRyeS0+ZF9uYW1lLmxlbik7CisJLyogc2hvdWxkIGJlIHJlbGVhc2VkIGlu
IGRfcmVsZWFzZSgpICovCisJbG93ZXJfbW50ID0gbW50Z2V0KEdFVF9MT1dFUl9NTlQoZGVu
dHJ5LT5kX3BhcmVudCkpOwogCisJbG93ZXJfZGVudHJ5ID0gZGF6dWtvZnNfbG9va3VwX29u
ZV9sb3dlcigmZGVudHJ5LT5kX25hbWUsIAorCQkJCQkJIGxvd2VyX2RlbnRyeV9wYXJlbnQs
IAorCQkJCQkJIGxvd2VyX21udCk7IAogCWlmIChJU19FUlIobG93ZXJfZGVudHJ5KSkgewot
CQllcnIgPSBQVFJfRVJSKGxvd2VyX2RlbnRyeSk7Ci0JCWRfZHJvcChkZW50cnkpOwotCQln
b3RvIG91dDsKKwkJbW50cHV0KGxvd2VyX21udCk7CisJCXJldHVybiBsb3dlcl9kZW50cnk7
CiAJfQotCiAJQlVHX09OKCFhdG9taWNfcmVhZCgmbG93ZXJfZGVudHJ5LT5kX2NvdW50KSk7
CiAKLQlTRVRfREVOVFJZX0lORk8oZGVudHJ5LCBrbWVtX2NhY2hlX3phbGxvYyhkYXp1a29m
c19kZW50cnlfaW5mb19jYWNoZXAsCi0JCQlHRlBfS0VSTkVMKSk7Ci0KLQlpZiAoIUdFVF9E
RU5UUllfSU5GTyhkZW50cnkpKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gb3V0X2Rw
dXQ7CisJZGVudHJ5LT5kX29wID0gJmRhenVrb2ZzX2RvcHM7CisJZGkgPSBrbWVtX2NhY2hl
X2FsbG9jKGRhenVrb2ZzX2RlbnRyeV9pbmZvX2NhY2hlcCwgR0ZQX0tFUk5FTCk7CisJaWYg
KCFkaSkgeworCQltbnRwdXQobG93ZXJfbW50KTsKKwkJZHB1dChsb3dlcl9kZW50cnkpOwor
CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAl9Ci0KLQlsb3dlcl9tbnQgPSBtbnRnZXQo
R0VUX0xPV0VSX01OVChkZW50cnktPmRfcGFyZW50KSk7Ci0KLQlmc3N0YWNrX2NvcHlfYXR0
cl9hdGltZShkaXIsIGxvd2VyX2RlbnRyeV9wYXJlbnQtPmRfaW5vZGUpOwotCisJbWVtc2V0
KGRpLCAwLCBzaXplb2YoKmRpKSk7CisJU0VUX0RFTlRSWV9JTkZPKGRlbnRyeSwgZGkpOwog
CVNFVF9MT1dFUl9ERU5UUlkoZGVudHJ5LCBsb3dlcl9kZW50cnksIGxvd2VyX21udCk7Ci0K
KwkvKiBmcm9tIG5vdyBsb3dlciBkZW50cnkgYW5kIGxvd2VyIG1vdW50IGFyZSByZWxlYXNl
ZCBpbiAKKwkgIGRfcmVsZWFzZSBvZiB1cHBlciBkZW50cnkgKi8KKwlmc3N0YWNrX2NvcHlf
YXR0cl9hdGltZShkaXIsIGxvd2VyX2RlbnRyeV9wYXJlbnQtPmRfaW5vZGUpOwogCWlmICgh
bG93ZXJfZGVudHJ5LT5kX2lub2RlKSB7CiAJCS8qCiAJCSAqIFdlIHdhbnQgdG8gYWRkIGJl
Y2F1c2Ugd2UgY291bGQgbm90IGZpbmQgaW4gbG93ZXIuCiAJCSAqLwogCQlkX2FkZChkZW50
cnksIE5VTEwpOwotCQlnb3RvIG91dDsKKwkJZ290byBvazsKIAl9CiAKIAllcnIgPSBkYXp1
a29mc19pbnRlcnBvc2UobG93ZXJfZGVudHJ5LCBkZW50cnksIGRpci0+aV9zYiwgMSk7Ci0J
aWYgKGVycikKLQkJZ290byBvdXRfZHB1dDsKLQlnb3RvIG91dDsKLQotb3V0X2RwdXQ6Ci0J
ZHB1dChsb3dlcl9kZW50cnkpOwotCWRfZHJvcChkZW50cnkpOworCWlmIChlcnIpIAorCQly
ZXR1cm4gRVJSX1BUUihlcnIpOwogCi1vdXQ6Ci0JcmV0dXJuIEVSUl9QVFIoZXJyKTsKK29r
OgorCXJldHVybiBOVUxMOyAvKiB0ZWxsIGNhbGxlciB0byB1c2UgaXRzIG93biwgcGFzc2Vk
IGRlbnRyeSwgbm90IG91cnMgKi8KIH0KIAogLyoqCkBAIC0yMjAsMTAgKzI3Niw5IEBAIHN0
YXRpYyBpbnQgZGF6dWtvZnNfbWtub2Qoc3RydWN0IGlub2RlICoKIAlzdHJ1Y3QgaW5vZGUg
Kmxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUgPSBsb3dlcl9kZW50cnlfcGFyZW50LT5kX2lu
b2RlOwogCWludCBlcnIgPSAtRU5PRU5UOwogCi0JbXV0ZXhfbG9ja19uZXN0ZWQoJihsb3dl
cl9kZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSwKLQkJCSAgSV9NVVRFWF9QQVJFTlQp
OworCW11dGV4X2xvY2soJihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSk7
CiAKLQllcnIgPSB2ZnNfbWtub2QobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93ZXJf
ZGVudHJ5LCBtb2RlLCBkZXYpOworCWVyciA9IHZmc19ta25vZChsb3dlcl9kZW50cnlfcGFy
ZW50X2lub2RlLCBsb3dlcl9kZW50cnksIG1vZGUsIGRldik7IAogCWlmIChlcnIpCiAJCWdv
dG8gb3V0OwogCkBAIC0yNTIsMTAgKzMwNyw5IEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfbWtk
aXIoc3RydWN0IGlub2RlICoKIAlzdHJ1Y3QgaW5vZGUgKmxvd2VyX2RlbnRyeV9wYXJlbnRf
aW5vZGUgPSBsb3dlcl9kZW50cnlfcGFyZW50LT5kX2lub2RlOwogCWludCBlcnIgPSAtRU5P
RU5UOwogCi0JbXV0ZXhfbG9ja19uZXN0ZWQoJihsb3dlcl9kZW50cnlfcGFyZW50X2lub2Rl
LT5pX211dGV4KSwKLQkJCSAgSV9NVVRFWF9QQVJFTlQpOworCW11dGV4X2xvY2soJihsb3dl
cl9kZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSk7CiAKLQllcnIgPSB2ZnNfbWtkaXIo
bG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93ZXJfZGVudHJ5LCBtb2RlKTsKKwllcnIg
PSB2ZnNfbWtkaXIobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZSwgbG93ZXJfZGVudHJ5LCBt
b2RlKTsgCiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKQEAgLTI5MSwyMiArMzQ1LDIxIEBA
IHN0YXRpYyBpbnQgZGF6dWtvZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAKIAlzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnlfc2F2ZTsKIAlpbnQgZXJyID0gLUVOT0VOVDsKIAotCW11dGV4X2xvY2tf
bmVzdGVkKCYobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9kZS0+aV9tdXRleCksCi0JCQkgIElf
TVVURVhfUEFSRU5UKTsKKwltdXRleF9sb2NrKCYobG93ZXJfZGVudHJ5X3BhcmVudF9pbm9k
ZS0+aV9tdXRleCkpOwogCi0JdmZzbW91bnRfc2F2ZSA9IG5kLT5wYXRoLm1udDsKLQlkZW50
cnlfc2F2ZSA9IG5kLT5wYXRoLmRlbnRyeTsKKwl2ZnNtb3VudF9zYXZlID0gbmQtPm1udDsK
KwlkZW50cnlfc2F2ZSA9IG5kLT5kZW50cnk7CiAKLQluZC0+cGF0aC5tbnQgPSBtbnRnZXQo
bG93ZXJfbW50KTsKLQluZC0+cGF0aC5kZW50cnkgPSBkZ2V0KGxvd2VyX2RlbnRyeSk7CisJ
bmQtPm1udCA9IG1udGdldChsb3dlcl9tbnQpOworCW5kLT5kZW50cnkgPSBkZ2V0KGxvd2Vy
X2RlbnRyeSk7CiAKIAllcnIgPSB2ZnNfY3JlYXRlKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5v
ZGUsIGxvd2VyX2RlbnRyeSwgbW9kZSwgbmQpOwogCiAJbW50cHV0KGxvd2VyX21udCk7CiAJ
ZHB1dChsb3dlcl9kZW50cnkpOwogCi0JbmQtPnBhdGgubW50ID0gdmZzbW91bnRfc2F2ZTsK
LQluZC0+cGF0aC5kZW50cnkgPSBkZW50cnlfc2F2ZTsKKwluZC0+bW50ID0gdmZzbW91bnRf
c2F2ZTsKKwluZC0+ZGVudHJ5ID0gZGVudHJ5X3NhdmU7CiAKIAlpZiAoZXJyKQogCQlnb3Rv
IG91dDsKQEAgLTMzNywxMCArMzkwLDEwIEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfc3ltbGlu
ayhzdHJ1Y3QgaW5vZGUKIAlzdHJ1Y3QgaW5vZGUgKmxvd2VyX2RlbnRyeV9wYXJlbnRfaW5v
ZGUgPSBsb3dlcl9kZW50cnlfcGFyZW50LT5kX2lub2RlOwogCWludCBlcnIgPSAtRU5PRU5U
OwogCi0JbXV0ZXhfbG9ja19uZXN0ZWQoJihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLT5p
X211dGV4KSwKLQkJCSAgSV9NVVRFWF9QQVJFTlQpOworCW11dGV4X2xvY2soJihsb3dlcl9k
ZW50cnlfcGFyZW50X2lub2RlLT5pX211dGV4KSk7CiAKLQllcnIgPSB2ZnNfc3ltbGluayhs
b3dlcl9kZW50cnlfcGFyZW50X2lub2RlLCBsb3dlcl9kZW50cnksIHN5bW5hbWUpOworCWVy
ciA9IHZmc19zeW1saW5rKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUsIGxvd2VyX2RlbnRy
eSwgc3ltbmFtZSwKKwkJIAkgIFNfSUFMTFVHTyk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7
CiAKQEAgLTQ1Miw5ICs1MDUsMzcgQEAgc3RhdGljIHZvaWQgZGF6dWtvZnNfcHV0X2xpbmso
c3RydWN0IGRlbgogICogRGVzY3JpcHRpb246IENhbGxlZCBieSB0aGUgVkZTIHRvIGNoZWNr
IGZvciBhY2Nlc3MgcmlnaHRzIG9uIGEKICAqIFBPU0lYLWxpa2UgZmlsZXN5c3RlbS4KICAq
Lwotc3RhdGljIGludCBkYXp1a29mc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUs
IGludCBtYXNrKQorc3RhdGljIGludCBkYXp1a29mc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9k
ZSAqaW5vZGUsIGludCBtYXNrLAorCQkJICAgICAgIHN0cnVjdCBuYW1laWRhdGEgKm5kKQog
ewotCXJldHVybiBpbm9kZV9wZXJtaXNzaW9uKEdFVF9MT1dFUl9JTk9ERShpbm9kZSksIG1h
c2spOworCXN0cnVjdCB2ZnNtb3VudCAqbG93ZXJfbW50ID0gTlVMTDsKKwlzdHJ1Y3QgZGVu
dHJ5ICpsb3dlcl9kZW50cnkgPSBOVUxMOworCXN0cnVjdCB2ZnNtb3VudCAqdmZzbW50X3Nh
dmUgPSBOVUxMOworCXN0cnVjdCBkZW50cnkgKmRlbnRyeV9zYXZlID0gTlVMTDsKKwlpbnQg
ZXJyOworCisJaWYgKG5kKSB7CisJCWxvd2VyX21udCA9IEdFVF9MT1dFUl9NTlQobmQtPmRl
bnRyeSk7CisJCWxvd2VyX2RlbnRyeSA9IEdFVF9MT1dFUl9ERU5UUlkobmQtPmRlbnRyeSk7
CisKKwkJdmZzbW50X3NhdmUgPSBuZC0+bW50OworCQlkZW50cnlfc2F2ZSA9IG5kLT5kZW50
cnk7CisKKwkJbmQtPm1udCA9IG1udGdldChsb3dlcl9tbnQpOworCQluZC0+ZGVudHJ5ID0g
ZGdldChsb3dlcl9kZW50cnkpOworCX0KKworCWVyciA9IHBlcm1pc3Npb24oR0VUX0xPV0VS
X0lOT0RFKGlub2RlKSwgbWFzaywgbmQpOworCisJaWYgKG5kKSB7CisJCW1udHB1dChsb3dl
cl9tbnQpOworCQlkcHV0KGxvd2VyX2RlbnRyeSk7CisKKwkJbmQtPm1udCA9IHZmc21udF9z
YXZlOworCQluZC0+ZGVudHJ5ID0gZGVudHJ5X3NhdmU7CisJfQorCisgICAgICAgIHJldHVy
biBlcnI7CiB9CiAKIC8qKgpAQCAtNDY4LDE0ICs1NDksMjcgQEAgc3RhdGljIGludCBkYXp1
a29mc19zZXRhdHRyKHN0cnVjdCBkZW50cgogCXN0cnVjdCBpbm9kZSAqbG93ZXJfaW5vZGUg
PSBHRVRfTE9XRVJfSU5PREUoaW5vZGUpOwogCWludCBlcnI7CiAKLQllcnIgPSBub3RpZnlf
Y2hhbmdlKGxvd2VyX2RlbnRyeSwgaWEpOwogCi0JZnNzdGFja19jb3B5X2F0dHJfYWxsKGlu
b2RlLCBsb3dlcl9pbm9kZSwgTlVMTCk7Ci0JZnNzdGFja19jb3B5X2lub2RlX3NpemUoaW5v
ZGUsIGxvd2VyX2lub2RlKTsKKwlpZiAoIWxvd2VyX2lub2RlLT5pX29wIHx8ICFsb3dlcl9p
bm9kZS0+aV9vcC0+c2V0YXR0cikgCisJCS8qIFhYWDogYXQgdGhpcyBwb2ludCBpdCBpcyB0
b28gbGF0ZSB0byBoYW5kbGUgaW5vZGVzIHByb3Blcmx5IHRoYXQgZG8gTk9UCisJCXNwZWNp
Znkgc2V0YXR0cigpLiBWRlMgd291bGQgbm9ybWFsbHkgY2FsbCBpbm9kZV9zZXRhdHRyKCkg
aW4gCisJCXRoaXMgY2FzZS4gU28gdG8gZm9yY2UgdGhpcyB3ZSBqdW1wIGJhY2sgdG8gbm90
aWZ5X2NoYW5nZSB3aGljaCB3aWxsCisJCWhhbmRsZSB0aGlzIGZvciB1cy4gQnV0IHRoaXMg
aXMgZGFuZ2Vyb3VzOgorCQlUaGUgYXR0cmlidXRlcyBtaWdodCBiZSBtb2RpZmllZCBieSBu
b3RpZnlfY2hhbmdlKCkgaW4gYSB3YXkKKwkJdGhhdCByZXN1bHRzIGluIGludmFsaWQgYXR0
cmlidXRlcy4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY2FzZQorCQlpZiB0aGUgaW5vZGUgZm9y
IHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGhhcyB0aGUgc2V0dWlkCisJCW9yIHNl
dGdpZCBiaXQgc2V0ICovIAorCQllcnIgPSBub3RpZnlfY2hhbmdlKGxvd2VyX2RlbnRyeSwg
aWEpOworCWVsc2UgCisJCWVyciA9IGxvd2VyX2lub2RlLT5pX29wLT5zZXRhdHRyKGxvd2Vy
X2RlbnRyeSwgaWEpOworCQorCWlmICghZXJyKSB7CisJCWZzc3RhY2tfY29weV9hdHRyX2Fs
bChpbm9kZSwgbG93ZXJfaW5vZGUpOworCQlmc3N0YWNrX2NvcHlfaW5vZGVfc2l6ZShpbm9k
ZSwgbG93ZXJfaW5vZGUpOworCX0gCiAKIAlyZXR1cm4gZXJyOwogfQotCiAvKioKICAqIERl
c2NyaXB0aW9uOiBDYWxsZWQgYnkgdGhlIFZGUyB0byBzZXQgYW4gZXh0ZW5kZWQgYXR0cmli
dXRlIGZvciBhIGZpbGUuCiAgKiBFeHRlbmRlZCBhdHRyaWJ1dGUgaXMgYSBuYW1lOnZhbHVl
IHBhaXIgYXNzb2NpYXRlZCB3aXRoIGFuIGlub2RlLiBUaGlzCkBAIC00OTYsMTQgKzU5MCwx
NCBAQCBzdGF0aWMgaW50IGRhenVrb2ZzX3NldHhhdHRyKHN0cnVjdCBkZW50CiAKIAlpZiAo
IWxvd2VyX2RlbnRyeV9pbm9kZS0+aV9vcCB8fAogCSAgICAhbG93ZXJfZGVudHJ5X2lub2Rl
LT5pX29wLT5zZXR4YXR0cikgewotCQllcnIgPSAtRU5PU1lTOworCQllcnIgPSAtRU9QTk9U
U1VQUDsKIAkJZ290byBvdXQ7CiAJfQogCiAJZXJyID0gbG93ZXJfZGVudHJ5X2lub2RlLT5p
X29wLT5zZXR4YXR0cihsb3dlcl9kZW50cnksIG5hbWUsIHZhbHVlLAogCQkJCQkJIHNpemUs
IGZsYWdzKTsKIAotCWZzc3RhY2tfY29weV9hdHRyX2FsbChkZW50cnktPmRfaW5vZGUsIGxv
d2VyX2RlbnRyeV9pbm9kZSwgTlVMTCk7CisJZnNzdGFja19jb3B5X2F0dHJfYWxsKGRlbnRy
eS0+ZF9pbm9kZSwgbG93ZXJfZGVudHJ5X2lub2RlKTsKIAlmc3N0YWNrX2NvcHlfaW5vZGVf
c2l6ZShkZW50cnktPmRfaW5vZGUsIGxvd2VyX2RlbnRyeV9pbm9kZSk7CiBvdXQ6CiAJcmV0
dXJuIGVycjsKQEAgLTUyOCw3ICs2MjIsNyBAQCBzdGF0aWMgc3NpemVfdCBkYXp1a29mc19n
ZXR4YXR0cihzdHJ1Y3QgCiAKIAlpZiAoIWxvd2VyX2RlbnRyeV9pbm9kZS0+aV9vcCB8fAog
CSAgICAhbG93ZXJfZGVudHJ5X2lub2RlLT5pX29wLT5nZXR4YXR0cikgewotCQllcnIgPSAt
RU5PU1lTOworCQllcnIgPSAtRU9QTk9UU1VQUDsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC01
NTcsNyArNjUxLDcgQEAgc3RhdGljIHNzaXplX3QgZGF6dWtvZnNfbGlzdHhhdHRyKHN0cnVj
dAogCiAJaWYgKCFsb3dlcl9kZW50cnlfaW5vZGUtPmlfb3AgfHwKIAkgICAgIWxvd2VyX2Rl
bnRyeV9pbm9kZS0+aV9vcC0+bGlzdHhhdHRyKSB7Ci0JCWVyciA9IC1FTk9TWVM7CisJCWVy
ciA9IC1FT1BOT1RTVVBQOwogCQlnb3RvIG91dDsKIAl9CiAKQEAgLTU4NCw3ICs2NzgsNyBA
QCBzdGF0aWMgaW50IGRhenVrb2ZzX3JlbW92ZXhhdHRyKHN0cnVjdCBkCiAKIAlpZiAoIWxv
d2VyX2RlbnRyeV9pbm9kZS0+aV9vcCB8fAogCSAgICAhbG93ZXJfZGVudHJ5X2lub2RlLT5p
X29wLT5yZW1vdmV4YXR0cikgewotCQllcnIgPSAtRU5PU1lTOworCQllcnIgPSAtRU9QTk9U
U1VQUDsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC02MDMsMTQgKzY5NywxNCBAQCBzdGF0aWMg
aW50IGRhenVrb2ZzX2xpbmsoc3RydWN0IGRlbnRyeSAqCiB7CiAJc3RydWN0IGRlbnRyeSAq
bG93ZXJfb2xkX2RlbnRyeSA9IEdFVF9MT1dFUl9ERU5UUlkob2xkX2RlbnRyeSk7CiAJc3Ry
dWN0IGRlbnRyeSAqbG93ZXJfbmV3X2RlbnRyeSA9IEdFVF9MT1dFUl9ERU5UUlkobmV3X2Rl
bnRyeSk7CisJCiAJc3RydWN0IGRlbnRyeSAqbG93ZXJfZGVudHJ5X3BhcmVudCA9IGRnZXQo
bG93ZXJfbmV3X2RlbnRyeS0+ZF9wYXJlbnQpOwogCXN0cnVjdCBpbm9kZSAqbG93ZXJfZGVu
dHJ5X3BhcmVudF9pbm9kZSA9IGxvd2VyX2RlbnRyeV9wYXJlbnQtPmRfaW5vZGU7CiAJaW50
IGVyciA9IC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrX25lc3RlZCgmKGxvd2VyX2RlbnRyeV9w
YXJlbnRfaW5vZGUtPmlfbXV0ZXgpLAotCQkJICBJX01VVEVYX1BBUkVOVCk7CisJbXV0ZXhf
bG9jaygmKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgpKTsKIAotCWVyciA9
IHZmc19saW5rKGxvd2VyX29sZF9kZW50cnksIGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUs
CisJZXJyID0gdmZzX2xpbmsobG93ZXJfb2xkX2RlbnRyeSwgbG93ZXJfZGVudHJ5X3BhcmVu
dF9pbm9kZSwgICAKIAkJICAgICAgIGxvd2VyX25ld19kZW50cnkpOwogCWlmIChlcnIpCiAJ
CWdvdG8gb3V0OwpAQCAtNjM5LDggKzczMyw3IEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfdW5s
aW5rKHN0cnVjdCBpbm9kZSAKIAlzdHJ1Y3QgaW5vZGUgKmxvd2VyX2RlbnRyeV9wYXJlbnRf
aW5vZGUgPSBsb3dlcl9kZW50cnlfcGFyZW50LT5kX2lub2RlOwogCWludCBlcnI7CiAKLQlt
dXRleF9sb2NrX25lc3RlZCgmKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgp
LAotCQkJICBJX01VVEVYX1BBUkVOVCk7CisJbXV0ZXhfbG9jaygmKGxvd2VyX2RlbnRyeV9w
YXJlbnRfaW5vZGUtPmlfbXV0ZXgpKTsKIAogCWVyciA9IHZmc191bmxpbmsobG93ZXJfZGVu
dHJ5X3BhcmVudF9pbm9kZSwgbG93ZXJfZGVudHJ5KTsKIAlpZiAoZXJyKQpAQCAtNjY4LDgg
Kzc2MSw3IEBAIHN0YXRpYyBpbnQgZGF6dWtvZnNfcm1kaXIoc3RydWN0IGlub2RlICoKIAlz
dHJ1Y3QgaW5vZGUgKmxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUgPSBsb3dlcl9kZW50cnlf
cGFyZW50LT5kX2lub2RlOwogCWludCBlcnI7CiAKLQltdXRleF9sb2NrX25lc3RlZCgmKGxv
d2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgpLAotCQkJICBJX01VVEVYX1BBUkVO
VCk7CisJbXV0ZXhfbG9jaygmKGxvd2VyX2RlbnRyeV9wYXJlbnRfaW5vZGUtPmlfbXV0ZXgp
KTsKIAogCWVyciA9IHZmc19ybWRpcihsb3dlcl9kZW50cnlfcGFyZW50X2lub2RlLCBsb3dl
cl9kZW50cnkpOwogCWlmIChlcnIpCkBAIC03MjQsMTAgKzgxNiwxMCBAQCBzdGF0aWMgaW50
IGRhenVrb2ZzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgCiAJaWYgKGVycikKIAkJZ290byBvdXQ7
CiAKLQlmc3N0YWNrX2NvcHlfYXR0cl9hbGwobmV3X2RpciwgbG93ZXJfbmV3X2RlbnRyeV9w
YXJlbnRfaW5vZGUsIE5VTEwpOworCWZzc3RhY2tfY29weV9hdHRyX2FsbChuZXdfZGlyLCBs
b3dlcl9uZXdfZGVudHJ5X3BhcmVudF9pbm9kZSk7CiAJaWYgKG5ld19kaXIgIT0gb2xkX2Rp
cikKLQkJZnNzdGFja19jb3B5X2F0dHJfYWxsKG9sZF9kaXIsIGxvd2VyX29sZF9kZW50cnlf
cGFyZW50X2lub2RlLAotCQkJCSAgICAgIE5VTEwpOworCQlmc3N0YWNrX2NvcHlfYXR0cl9h
bGwob2xkX2RpciwgbG93ZXJfb2xkX2RlbnRyeV9wYXJlbnRfaW5vZGUpOworCQkJCSAgICAg
CiBvdXQ6CiAJZHB1dChsb3dlcl9vbGRfZGVudHJ5X3BhcmVudCk7CiAJZHB1dChsb3dlcl9u
ZXdfZGVudHJ5X3BhcmVudCk7CmRpZmYgLXggQ1ZTIC1ydXAgZGF6dWtvZnMtMy4wLjAvTWFr
ZWZpbGUgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEvTWFrZWZpbGUKLS0t
IGRhenVrb2ZzLTMuMC4wL01ha2VmaWxlCTIwMDktMDItMjIgMTc6NDY6MDIuMDAwMDAwMDAw
ICswMTAwCisrKyBkYXp1a29mcy0zLjAuMC1yYzRfMi42LjE2X1NMRVMxMFNQMS9NYWtlZmls
ZQkyMDA5LTA1LTExIDE5OjUwOjI2LjAwMDAwMDAwMCArMDIwMApAQCAtMTksNiArMTksNyBA
QCBkYXp1a29mc19pbnN0YWxsOiBkYXp1a29mc19tb2R1bGVzCiAKIGNsZWFuOgogCXJtIC1m
IE1vZHVsZS5zeW12ZXJzCisJcm0gLWYgbW9kdWxlcy5vcmRlcgogCW1ha2UgLUMgJChEQVpV
S09GU19LRVJORUxfU1JDKSBTVUJESVJTPSJgcHdkYCIgY2xlYW4KIAogLlBIT05ZOiBkYXp1
a29mc19tb2R1bGVzIGRhenVrb2ZzX2luc3RhbGwgY2xlYW4KZGlmZiAteCBDVlMgLXJ1cCBk
YXp1a29mcy0zLjAuMC9SRUFETUUgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBT
UDEvUkVBRE1FCi0tLSBkYXp1a29mcy0zLjAuMC9SRUFETUUJMjAwOS0wMi0yMiAxNzozODoy
MS4wMDAwMDAwMDAgKzAxMDAKKysrIGRhenVrb2ZzLTMuMC4wLXJjNF8yLjYuMTZfU0xFUzEw
U1AxL1JFQURNRQkyMDA5LTAyLTIzIDE2OjAxOjMwLjAwMDAwMDAwMCArMDEwMApAQCAtMjEs
MTAgKzIxLDEwIEBAIE5PVEU6IERhenVrb0ZTIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnIK
ID09PT09PT09PT09PT09PT09CiAKIEJlbG93IGFyZSBicmllZiBpbnN0cnVjdGlvbnMgdG8g
Z2V0IERhenVrb0ZTIGNvbXBpbGVkIGFuZCBydW5uaW5nIG9uIGEKLXN5c3RlbSB3aXRoIGEg
TGludXggMi42LjI4IGtlcm5lbC4gWW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IGFkanVzdCB0
aGUKK3N5c3RlbSB3aXRoIGEgTGludXggMi42LjI3IGtlcm5lbC4gWW91IG1heSBuZWVkIHRv
IG1hbnVhbGx5IGFkanVzdCB0aGUKIE1ha2VmaWxlIGlmIHlvdSBrZXJuZWwgc291cmNlcyBh
cmUgbm90IGluIHRoZSBkZWZhdWx0IGxvY2F0aW9uLgotKFBhdGNoZXMgYXJlIHByb3ZpZGVk
IGZvciB2YXJpb3VzIG90aGVyIGtlcm5lbHMuIFNlZSB0aGUgc2VjdGlvbiBiZWxvdwotdGl0
bGVkICJQQVRDSElORyIgZm9yIG1vcmUgaW5mb3JtYXRpb24uKQorKEEgcGF0Y2ggaXMgcHJv
dmlkZWQgdG8gY29udmVydCB0aGUgRGF6dWtvRlMgY29kZSB0byBzdXBwb3J0IExpbnV4Cisy
LjYuMjYuKQogCiBjb21waWxlIHRoZSBrZXJuZWwgbW9kdWxlCiAgICMgbWFrZQpAQCAtNTIs
MjUgKzUyLDYgQEAgdW5tb3VudCBEYXp1a29GUwogCiAKIAotPT09PT09PT09PQotIFBBVENI
SU5HCi09PT09PT09PT09Ci0KLUluIHRoZSAicGF0Y2hlcyIgZGlyZWN0b3J5IHRoZXJlIGFy
ZSBwYXRjaGVzIGF2YWlsYWJsZSB0byBtb2RpZnkgdGhlCi1EYXp1a29GUyBjb2RlIHRvIGZp
dCB2YXJpb3VzIG90aGVyIGtlcm5lbHMuIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlCi1ydW5u
aW5nIG9wZW5TVVNFIDExLjEgeW91IGNhbiBwYXRjaCB0aGUgY29kZSB3aXRoIHRoZSBmb2xs
b3dpbmcKLWNvbW1hbmQ6Ci0KLSQgcGF0Y2ggLXAxIDwgcGF0Y2hlcy9wYXRjaC1vcGVuc3Vz
ZS0xMS4xCi0KLVRoZXJlIHNob3VsZCBub3QgYmUgYW55IGVycm9ycy4gSWYgdGhlcmUgYXJl
IGVycm9ycywgdGhlbiB0aGUgcGF0Y2gKLWlzIGJyb2tlbiBhbmQgc2hvdWxkIGJlIHJlcG9y
dGVkIG9uIHRoZSBkYXp1a28tZGV2ZWwgbWFpbGluZyBsaXN0LgotCi1PbmNlIHRoZSBjb2Rl
IGhhcyBiZWVuIHBhdGNoZWQgeW91IGNhbiBidWlsZCB0aGUga2VybmVsIG1vZHVsZSBhcwot
ZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uICJCVUlMRCAvIElOU1RBTEwiIGFib3ZlLgotCi0K
LQogPT09PT09PT09CiAgVEVTVElORwogPT09PT09PT09CkBAIC0xNTQsOSArMTM1LDYgQEAg
YW55IHByb2JsZW1zLgogIEtOT1dOIElTU1VFUwogPT09PT09PT09PT09PT0KIAotLSBUaGUg
a2VybmVsIHdpbGwgY3Jhc2ggaWYgeW91IGF0dGVtcHQgdG8gbW91bnQgRGF6dWtvRlMgdG8g
YSBmaWxlIGluc3RlYWQKLSAgb2YgYSBkaXJlY3RvcnkuIChUaGUgdmFyaW91cyBrZXJuZWwg
cGF0Y2hlcyBoYW5kbGUgdGhpcyBlcnJvci4pCi0KIC0gRGF6dWtvRlMgZG9lcyBub3Qgc3Vw
cG9ydCB3cml0aW5nIHRvIG1lbW9yeSBtYXBwZWQgZmlsZXMuIFRoaXMgc2hvdWxkIG5vdAog
ICBjYXVzZSB0aGUga2VybmVsIHRvIGNyYXNoLCBidXQgd2lsbCBpbnN0ZWFkIHJlc3VsdCBp
biB0aGUgYXBwbGljYXRpb24KICAgZmFpbGluZyB0byBwZXJmb3JtIHRoZSB3cml0ZXMgKGFs
dGhvdWdoIG1tYXAoKSB3aWxsIGFwcGVhciB0byBiZQpkaWZmIC14IENWUyAtcnVwIGRhenVr
b2ZzLTMuMC4wL3N1cGVyLmMgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBTUDEv
c3VwZXIuYwotLS0gZGF6dWtvZnMtMy4wLjAvc3VwZXIuYwkyMDA5LTAyLTIyIDE3OjQ2OjAy
LjAwMDAwMDAwMCArMDEwMAorKysgZGF6dWtvZnMtMy4wLjAtcmM0XzIuNi4xNl9TTEVTMTBT
UDEvc3VwZXIuYwkyMDA5LTA3LTAzIDE3OjU5OjE2LjAwMDAwMDAwMCArMDIwMApAQCAtMzUs
NiArMzUsMTAgQEAgc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpkYXp1a29mc19zYl9pbgog
c3RydWN0IGttZW1fY2FjaGUgKmRhenVrb2ZzX2RlbnRyeV9pbmZvX2NhY2hlcDsKIHN0cnVj
dCBrbWVtX2NhY2hlICpkYXp1a29mc19maWxlX2luZm9fY2FjaGVwOwogCisKKyNkZWZpbmUg
REFaVUtPRlNfVkVSU0lPTiAiMy4wLjAtcmM0LWF2aXJhLWIyLjYiCisKKwogc3RhdGljIHN0
cnVjdCBpbm9kZSAqZGF6dWtvZnNfYWxsb2NfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpz
YikKIHsKIAlzdHJ1Y3QgZGF6dWtvZnNfaW5vZGVfaW5mbyAqaW5vZGVpOwpAQCAtNTgsOSAr
NjIsOSBAQCBzdGF0aWMgdm9pZCBkYXp1a29mc19kZXN0cm95X2lub2RlKHN0cnVjCiAJCQlH
RVRfSU5PREVfSU5GTyhpbm9kZSkpOwogfQogCi1zdGF0aWMgaW50IGRhenVrb2ZzX3N0YXRm
cyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMg
aW50IGRhenVrb2ZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1cGVyLCBzdHJ1Y3Qg
a3N0YXRmcyAqYnVmKQogewotCXJldHVybiB2ZnNfc3RhdGZzKEdFVF9MT1dFUl9ERU5UUlko
ZGVudHJ5KSwgYnVmKTsKKwlyZXR1cm4gdmZzX3N0YXRmcyhHRVRfTE9XRVJfU0Ioc3VwZXIp
LCBidWYpOwogfQogCiBzdGF0aWMgdm9pZCBkYXp1a29mc19jbGVhcl9pbm9kZShzdHJ1Y3Qg
aW5vZGUgKmlub2RlKQpAQCAtMTE0LDkgKzExOCwxMCBAQCBzdGF0aWMgaW50IGRhenVrb2Zz
X2ZpbGxfc3VwZXIoc3RydWN0IHN1CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBxc3RyIG5hbWUg
PSB7IC5uYW1lID0gIi8iLCAubGVuID0gMSB9OwogCXN0cnVjdCBkYXp1a29mc19kZW50cnlf
aW5mbyAqZGk7CiAKLQlzYmkgPSAga21lbV9jYWNoZV96YWxsb2MoZGF6dWtvZnNfc2JfaW5m
b19jYWNoZXAsIEdGUF9LRVJORUwpOworCXNiaSA9ICBrbWVtX2NhY2hlX2FsbG9jKGRhenVr
b2ZzX3NiX2luZm9fY2FjaGVwLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXNiaSkKIAkJcmV0dXJu
IC1FTk9NRU07CisJbWVtc2V0KHNiaSwgMCwgc2l6ZW9mKCpzYmkpKTsKIAogCXNiLT5zX29w
ID0gJmRhenVrb2ZzX3NvcHM7CiAKQEAgLTEzMiwxMiArMTM3LDEzIEBAIHN0YXRpYyBpbnQg
ZGF6dWtvZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3UKIAlzYi0+c19yb290LT5kX3NiID0gc2I7
CiAJc2ItPnNfcm9vdC0+ZF9wYXJlbnQgPSBzYi0+c19yb290OwogCi0JZGkgPSBrbWVtX2Nh
Y2hlX3phbGxvYyhkYXp1a29mc19kZW50cnlfaW5mb19jYWNoZXAsIEdGUF9LRVJORUwpOwor
CWRpID0ga21lbV9jYWNoZV9hbGxvYyhkYXp1a29mc19kZW50cnlfaW5mb19jYWNoZXAsIEdG
UF9LRVJORUwpOwogCWlmICghZGkpIHsKIAkJa21lbV9jYWNoZV9mcmVlKGRhenVrb2ZzX3Ni
X2luZm9fY2FjaGVwLCBzYmkpOwogCQlkcHV0KHNiLT5zX3Jvb3QpOwogCQlyZXR1cm4gLUVO
T01FTTsKIAl9CisJbWVtc2V0KGRpLCAwLCBzaXplb2YoKmRpKSk7CiAKIAlTRVRfREVOVFJZ
X0lORk8oc2ItPnNfcm9vdCwgZGkpOwogCkBAIC0xNTgsOCArMTY0LDggQEAgc3RhdGljIGlu
dCBkYXp1a29mc19yZWFkX3N1cGVyKHN0cnVjdCBzdQogCWlmIChlcnIpCiAJCXJldHVybiBl
cnI7CiAKLQlsb3dlcl9yb290ID0gZGdldChuZC5wYXRoLmRlbnRyeSk7Ci0JbG93ZXJfbW50
ID0gbW50Z2V0KG5kLnBhdGgubW50KTsKKwlsb3dlcl9yb290ID0gZGdldChuZC5kZW50cnkp
OworCWxvd2VyX21udCA9IG1udGdldChuZC5tbnQpOwogCiAJaWYgKElTX0VSUihsb3dlcl9y
b290KSkgewogCQllcnIgPSBQVFJfRVJSKGxvd2VyX3Jvb3QpOwpAQCAtMTcxLDYgKzE3Nywx
MSBAQCBzdGF0aWMgaW50IGRhenVrb2ZzX3JlYWRfc3VwZXIoc3RydWN0IHN1CiAJCWdvdG8g
b3V0X3B1dDsKIAl9CiAKKwlpZiAoIVNfSVNESVIobG93ZXJfcm9vdC0+ZF9pbm9kZS0+aV9t
b2RlKSkgeworCQllcnIgPSAtRU5PRU5UOworCQlnb3RvIG91dF9wdXQ7CisJfQorCiAJU0VU
X0xPV0VSX1NCKHNiLCBsb3dlcl9yb290LT5kX3NiKTsKIAlzYi0+c19tYXhieXRlcyA9IGxv
d2VyX3Jvb3QtPmRfc2ItPnNfbWF4Ynl0ZXM7CiAJU0VUX0xPV0VSX0RFTlRSWShzYi0+c19y
b290LCBsb3dlcl9yb290LCBsb3dlcl9tbnQpOwpAQCAtMTg0LDQ0ICsxOTUsNDIgQEAgb3V0
X3B1dDoKIAlkcHV0KGxvd2VyX3Jvb3QpOwogCW1udHB1dChsb3dlcl9tbnQpOwogb3V0Ogot
CXBhdGhfcHV0KCZuZC5wYXRoKTsKKwlwYXRoX3JlbGVhc2UoJm5kKTsKIAlyZXR1cm4gZXJy
OwogfQogCi1zdGF0aWMgaW50IGRhenVrb2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1f
dHlwZSAqZnNfdHlwZSwgaW50IGZsYWdzLAotCQkJICAgY29uc3QgY2hhciAqZGV2X25hbWUs
IHZvaWQgKmRhdGEsCi0JCQkgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKK3N0YXRpYyBzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKiAKK2RhenVrb2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1f
dHlwZSAqZnNfdHlwZSwgaW50IGZsYWdzLCAgCisJICAgICAgIGNvbnN0IGNoYXIgKmRldl9u
YW1lLCB2b2lkICpkYXRhKSAKIHsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiOwogCWludCBl
cnI7CiAKLQllcnIgPSBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGRhenVr
b2ZzX2ZpbGxfc3VwZXIsIG1udCk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7Ci0KLQlzYiA9
IG1udC0+bW50X3NiOworCXNiID0gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRh
LCBkYXp1a29mc19maWxsX3N1cGVyKTsKKwlpZiAoSVNfRVJSKHNiKSkKKwkJcmV0dXJuIHNi
OwogCiAJZXJyID0gZGF6dWtvZnNfcGFyc2VfbW91bnRfb3B0aW9ucyhkYXRhLCBzYik7CiAJ
aWYgKGVycikKLQkJZ290byBvdXRfYWJvcnQ7CisJCWdvdG8gb3V0OwogCiAJZXJyID0gZGF6
dWtvZnNfcmVhZF9zdXBlcihzYiwgZGV2X25hbWUpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0
X2Fib3J0OworCQlnb3RvIG91dDsKIAotCWdvdG8gb3V0OworCXJldHVybiBzYjsKIAotb3V0
X2Fib3J0Ogorb3V0OgogCXVwX3dyaXRlKCZzYi0+c191bW91bnQpOworCWRwdXQoc2ItPnNf
cm9vdCk7CQogCWRlYWN0aXZhdGVfc3VwZXIoc2IpOwotb3V0OgotCXJldHVybiBlcnI7CisJ
cmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAotc3RhdGljIHZvaWQgaW5pdF9vbmNlKHZvaWQg
KmRhdGEpCitzdGF0aWMgdm9pZCBpbml0X29uY2Uodm9pZCAqdnB0ciwgc3RydWN0IGttZW1f
Y2FjaGUgKmNhY2hlcCwgdW5zaWduZWQgbG9uZyBmbGFncykKIHsKIAlzdHJ1Y3QgZGF6dWtv
ZnNfaW5vZGVfaW5mbyAqaW5vZGVfaW5mbyA9Ci0JCShzdHJ1Y3QgZGF6dWtvZnNfaW5vZGVf
aW5mbyAqKWRhdGE7CisJCShzdHJ1Y3QgZGF6dWtvZnNfaW5vZGVfaW5mbyAqKXZwdHI7CiAK
IAltZW1zZXQoaW5vZGVfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBkYXp1a29mc19pbm9kZV9p
bmZvKSk7CiAJaW5vZGVfaW5pdF9vbmNlKCYoaW5vZGVfaW5mby0+dmZzX2lub2RlKSk7CkBA
IC0yNTYsNyArMjY1LDcgQEAgc3RhdGljIGludCBpbml0X2NhY2hlcyh2b2lkKQogCQlrbWVt
X2NhY2hlX2NyZWF0ZSgiZGF6dWtvZnNfaW5vZGVfaW5mb19jYWNoZSIsCiAJCQkJICBzaXpl
b2Yoc3RydWN0IGRhenVrb2ZzX2lub2RlX2luZm8pLCAwLAogCQkJCSAgU0xBQl9IV0NBQ0hF
X0FMSUdOLAotCQkJCSAgaW5pdF9vbmNlKTsKKwkJCQkgIGluaXRfb25jZSwgTlVMTCk7CiAJ
aWYgKCFkYXp1a29mc19pbm9kZV9pbmZvX2NhY2hlcCkKIAkJZ290byBvdXRfbm9tZW07CiAK
QEAgLTI2NCw3ICsyNzMsNyBAQCBzdGF0aWMgaW50IGluaXRfY2FjaGVzKHZvaWQpCiAJCWtt
ZW1fY2FjaGVfY3JlYXRlKCJkYXp1a29mc19zYl9pbmZvX2NhY2hlIiwKIAkJCQkgIHNpemVv
ZihzdHJ1Y3QgZGF6dWtvZnNfc2JfaW5mbyksIDAsCiAJCQkJICBTTEFCX0hXQ0FDSEVfQUxJ
R04sCi0JCQkJICBOVUxMKTsKKwkJCQkgIE5VTEwsIE5VTEwpOwogCWlmICghZGF6dWtvZnNf
c2JfaW5mb19jYWNoZXApCiAJCWdvdG8gb3V0X25vbWVtOwogCkBAIC0yNzIsNyArMjgxLDcg
QEAgc3RhdGljIGludCBpbml0X2NhY2hlcyh2b2lkKQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgi
ZGF6dWtvZnNfZGVudHJ5X2luZm9fY2FjaGUiLAogCQkJCSAgc2l6ZW9mKHN0cnVjdCBkYXp1
a29mc19kZW50cnlfaW5mbyksIDAsCiAJCQkJICBTTEFCX0hXQ0FDSEVfQUxJR04sCi0JCQkJ
ICBOVUxMKTsKKwkJCQkgIE5VTEwsIE5VTEwpOwogCWlmICghZGF6dWtvZnNfZGVudHJ5X2lu
Zm9fY2FjaGVwKQogCQlnb3RvIG91dF9ub21lbTsKIApAQCAtMjgwLDcgKzI4OSw3IEBAIHN0
YXRpYyBpbnQgaW5pdF9jYWNoZXModm9pZCkKIAkJa21lbV9jYWNoZV9jcmVhdGUoImRhenVr
b2ZzX2ZpbGVfaW5mb19jYWNoZSIsCiAJCQkJICBzaXplb2Yoc3RydWN0IGRhenVrb2ZzX2Zp
bGVfaW5mbyksIDAsCiAJCQkJICBTTEFCX0hXQ0FDSEVfQUxJR04sCi0JCQkJICBOVUxMKTsK
KwkJCQkgIE5VTEwsIE5VTEwpOwogCWlmICghZGF6dWtvZnNfZmlsZV9pbmZvX2NhY2hlcCkK
IAkJZ290byBvdXRfbm9tZW07CiAKQEAgLTMwNSw3ICszMTQsNyBAQCBzdGF0aWMgc3RydWN0
IGZpbGVfc3lzdGVtX3R5cGUgZGF6dWtvZnNfCiAKIHN0YXRpYyBpbnQgX19pbml0IGluaXRf
ZGF6dWtvZnNfZnModm9pZCkKIHsKLQlpbnQgZXJyID0gMDsKKwlpbnQgZXJyOwogCiAJZXJy
ID0gZGF6dWtvZnNfZGV2X2luaXQoKTsKIAlpZiAoZXJyKQpAQCAtMzE5LDcgKzMyOCw3IEBA
IHN0YXRpYyBpbnQgX19pbml0IGluaXRfZGF6dWtvZnNfZnModm9pZCkKIAlpZiAoZXJyKQog
CQlnb3RvIGVycm9yX291dDM7CiAKLQlwcmludGsoS0VSTl9JTkZPICJkYXp1a29mczogbG9h
ZGVkLCB2ZXJzaW9uPSVzXG4iLCBEQVpVS09GU19WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9J
TkZPICJkYXp1a29mczogbG9hZGVkLCB2ZXJzaW9uPSIgREFaVUtPRlNfVkVSU0lPTiAiXG4i
KTsKIAlyZXR1cm4gMDsKIAogZXJyb3Jfb3V0MzoKQEAgLTMzNSw3ICszNDQsNyBAQCBzdGF0
aWMgdm9pZCBfX2V4aXQgZXhpdF9kYXp1a29mc19mcyh2b2lkCiAJdW5yZWdpc3Rlcl9maWxl
c3lzdGVtKCZkYXp1a29mc19mc190eXBlKTsKIAlkZXN0cm95X2NhY2hlcygpOwogCWRhenVr
b2ZzX2Rldl9kZXN0cm95KCk7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiZGF6dWtvZnM6IHVubG9h
ZGVkLCB2ZXJzaW9uPSVzXG4iLCBEQVpVS09GU19WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9J
TkZPICJkYXp1a29mczogdW5sb2FkZWQsIHZlcnNpb249IiBEQVpVS09GU19WRVJTSU9OICJc
biIpOwogfQogCiBNT0RVTEVfQVVUSE9SKCJKb2huIE9nbmVzcyIpOwo=
--------------080505080702070604050207
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

--------------080505080702070604050207--