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