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--