From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benny Sjostrand Subject: [PATCH] cs46xx update SMP fixes Date: Thu, 22 Aug 2002 11:59:41 +0200 Sender: alsa-devel-admin@lists.sourceforge.net Message-ID: <3D64B60D.5070907@cucumelo.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010103060304060507010707" Return-path: Errors-To: alsa-devel-admin@lists.sourceforge.net List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , List-Archive: To: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org This is a multi-part message in MIME format. --------------010103060304060507010707 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi! In my prev. patch I've missed a up(...) call with no good consequences, however only affects when looking in /proc. Finally, just use this one instead. /Benny PS. see my previous mail for details. --------------010103060304060507010707 Content-Type: application/x-java-vm; name="cs46xx_patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="cs46xx_patch" ZGlmZiAtTmF1ciAtLWV4Y2x1ZGU9RW50cmllcyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLi4vY3Zz X3JlZi9hbHNhLWtlcm5lbC9pbmNsdWRlL2NzNDZ4eC5oIGFsc2Eta2VybmVsL2luY2x1ZGUv Y3M0Nnh4LmgKLS0tIC4uL2N2c19yZWYvYWxzYS1rZXJuZWwvaW5jbHVkZS9jczQ2eHguaAlU dWUgQXVnIDEzIDIzOjIyOjQ1IDIwMDIKKysrIGFsc2Eta2VybmVsL2luY2x1ZGUvY3M0Nnh4 LmgJVHVlIEF1ZyAyMCAyMToxNToyNCAyMDAyCkBAIC0xODE3LDYgKzE4MTcsNyBAQAogICBp bnQgY3VycmVudF9ncGlvOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX1NORF9DUzQ2WFhfTkVX X0RTUAorCXN0cnVjdCBzZW1hcGhvcmUgc3Bvc19tdXRleDsKIAlkc3Bfc3Bvc19pbnN0YW5j ZV90ICogZHNwX3Nwb3NfaW5zdGFuY2U7CiAjZWxzZSAvKiBmb3IgY29tcGF0aWJpbGl0eSAq LwogCWNzNDZ4eF9wY21fdCAqcGxheWJhY2tfcGNtOwpkaWZmIC1OYXVyIC0tZXhjbHVkZT1F bnRyaWVzIC0tZXhjbHVkZT1NYWtlZmlsZSAuLi9jdnNfcmVmL2Fsc2Eta2VybmVsL2luY2x1 ZGUvY3M0Nnh4X2RzcF9zcG9zLmggYWxzYS1rZXJuZWwvaW5jbHVkZS9jczQ2eHhfZHNwX3Nw b3MuaAotLS0gLi4vY3ZzX3JlZi9hbHNhLWtlcm5lbC9pbmNsdWRlL2NzNDZ4eF9kc3Bfc3Bv cy5oCVR1ZSBBdWcgMjAgMDg6MDU6MzkgMjAwMgorKysgYWxzYS1rZXJuZWwvaW5jbHVkZS9j czQ2eHhfZHNwX3Nwb3MuaAlUdWUgQXVnIDIwIDIxOjE1OjQ0IDIwMDIKQEAgLTE0MSw4ICsx NDEsNiBAQAogCXNlZ21lbnRfZGVzY190IGNvZGU7CiAKIAkvKiBQQ00gcGxheWJhY2sgKi8K LQlzdHJ1Y3Qgc2VtYXBob3JlIHBjbV9tdXRleDsKLQogCWRzcF9zY2JfZGVzY3JpcHRvcl90 ICogbWFzdGVyX21peF9zY2I7CiAJaW50IG5wY21fY2hhbm5lbHM7CiAJaW50IG5zcmNfc2Ni OwpAQCAtMTYyLDcgKzE2MCw2IEBACiAJc25kX2luZm9fZW50cnlfdCAqIHByb2Nfc2FtcGxl X2R1bXBfaW5mb19lbnRyeTsKIAogCS8qIFNDQidzIGRlc2NyaXB0b3JzICovCi0Jc3RydWN0 IHNlbWFwaG9yZSBzY2JfbXV0ZXg7CiAJaW50IG5zY2I7CiAJaW50IHNjYl9oaWdoZXN0X2Zy YWdfaW5kZXg7CiAJZHNwX3NjYl9kZXNjcmlwdG9yX3Qgc2Nic1tEU1BfTUFYX1NDQl9ERVND XTsKZGlmZiAtTmF1ciAtLWV4Y2x1ZGU9RW50cmllcyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLi4v Y3ZzX3JlZi9hbHNhLWtlcm5lbC9wY2kvYWM5Ny9hYzk3X2NvZGVjLmMgYWxzYS1rZXJuZWwv cGNpL2FjOTcvYWM5N19jb2RlYy5jCi0tLSAuLi9jdnNfcmVmL2Fsc2Eta2VybmVsL3BjaS9h Yzk3L2FjOTdfY29kZWMuYwlGcmkgQXVnIDE2IDAwOjA3OjUwIDIwMDIKKysrIGFsc2Eta2Vy bmVsL3BjaS9hYzk3L2FjOTdfY29kZWMuYwlXZWQgQXVnIDIxIDE4OjM2OjA4IDIwMDIKQEAg LTI3NiwxNCArMjc2LDEzIEBACiAJcmV0dXJuIGNoYW5nZTsKIH0KIAotaW50IHNuZF9hYzk3 X3VwZGF0ZV9iaXRzKGFjOTdfdCAqYWM5NywgdW5zaWduZWQgc2hvcnQgcmVnLCB1bnNpZ25l ZCBzaG9ydCBtYXNrLCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK2ludCBzbmRfYWM5N191cGRh dGVfYml0c19ub2xvY2soYWM5N190ICphYzk3LCB1bnNpZ25lZCBzaG9ydCByZWcsIHVuc2ln bmVkIHNob3J0IG1hc2ssIHVuc2lnbmVkIHNob3J0IHZhbHVlKQogewogCWludCBjaGFuZ2U7 CiAJdW5zaWduZWQgc2hvcnQgb2xkLCBuZXc7CiAKIAlpZiAoIXNuZF9hYzk3X3ZhbGlkX3Jl ZyhhYzk3LCByZWcpKQogCQlyZXR1cm4gLUVJTlZBTDsKLQlzcGluX2xvY2soJmFjOTctPnJl Z19sb2NrKTsKIAlvbGQgPSBhYzk3LT5yZWdzW3JlZ107CiAJbmV3ID0gKG9sZCAmIH5tYXNr KSB8IHZhbHVlOwogCWNoYW5nZSA9IG9sZCAhPSBuZXc7CkBAIC0yOTEsNiArMjkwLDE0IEBA CiAJCWFjOTctPndyaXRlKGFjOTcsIHJlZywgbmV3KTsKIAkJYWM5Ny0+cmVnc1tyZWddID0g bmV3OwogCX0KKwlyZXR1cm4gY2hhbmdlOworfQorCitpbnQgc25kX2FjOTdfdXBkYXRlX2Jp dHMoYWM5N190ICphYzk3LCB1bnNpZ25lZCBzaG9ydCByZWcsIHVuc2lnbmVkIHNob3J0IG1h c2ssIHVuc2lnbmVkIHNob3J0IHZhbHVlKQoreworCWludCBjaGFuZ2U7CisJc3Bpbl9sb2Nr KCZhYzk3LT5yZWdfbG9jayk7CisJY2hhbmdlID0gc25kX2FjOTdfdXBkYXRlX2JpdHNfbm9s b2NrKGFjOTcsIHJlZywgbWFzaywgdmFsdWUpOwogCXNwaW5fdW5sb2NrKCZhYzk3LT5yZWdf bG9jayk7CiAJcmV0dXJuIGNoYW5nZTsKIH0KQEAgLTc0MCwxNiArNzQ3LDE2IEBACiAJCWNh c2UgMjogeCA9IDA7IGJyZWFrOyAgLy8gNDguMAogCQlkZWZhdWx0OiB4ID0gMDsgYnJlYWs7 IC8vIGlsbGVnYWwuCiAJCX0KLQkJY2hhbmdlID0gc25kX2FjOTdfdXBkYXRlX2JpdHMoYWM5 NywgQUM5N19DU1JfU1BESUYsIDB4M2ZmZiwgKCh2YWwgJiAweGNmZmYpIHwgKHggPDwgMTIp KSk7CisJCWNoYW5nZSA9IHNuZF9hYzk3X3VwZGF0ZV9iaXRzX25vbG9jayhhYzk3LCBBQzk3 X0NTUl9TUERJRiwgMHgzZmZmLCAoKHZhbCAmIDB4Y2ZmZikgfCAoeCA8PCAxMikpKTsKIAl9 IGVsc2UgaWYgKGFjOTctPmZsYWdzICYgQUM5N19DWF9TUERJRikgewogCQlpbnQgdjsKIAkJ diA9IHVjb250cm9sLT52YWx1ZS5pZWM5NTguc3RhdHVzWzBdICYgKElFQzk1OF9BRVMwX0NP Tl9FTVBIQVNJU181MDE1fElFQzk1OF9BRVMwX0NPTl9OT1RfQ09QWVJJR0hUKSA/IDAgOiBB Qzk3X0NYUl9DT1BZUkdUOwogCQl2IHw9IHVjb250cm9sLT52YWx1ZS5pZWM5NTguc3RhdHVz WzBdICYgSUVDOTU4X0FFUzBfTk9OQVVESU8gPyBBQzk3X0NYUl9TUERJRl9BQzMgOiBBQzk3 X0NYUl9TUERJRl9QQ007Ci0JCWNoYW5nZSA9IHNuZF9hYzk3X3VwZGF0ZV9iaXRzKGFjOTcs IEFDOTdfQ1hSX0FVRElPX01JU0MsIAotCQkJCQkgICAgICBBQzk3X0NYUl9TUERJRl9NQVNL IHwgQUM5N19DWFJfQ09QWVJHVCwKLQkJCQkJICAgICAgdik7CisJCWNoYW5nZSA9IHNuZF9h Yzk3X3VwZGF0ZV9iaXRzX25vbG9jayhhYzk3LCBBQzk3X0NYUl9BVURJT19NSVNDLCAKKwkJ CQkJCSAgICAgQUM5N19DWFJfU1BESUZfTUFTSyB8IEFDOTdfQ1hSX0NPUFlSR1QsCisJCQkJ CQkgICAgIHYpOwogCX0gZWxzZSB7Ci0JCWNoYW5nZSA9IHNuZF9hYzk3X3VwZGF0ZV9iaXRz KGFjOTcsIEFDOTdfU1BESUYsIDB4M2ZmZiwgdmFsKTsKKwkJY2hhbmdlID0gc25kX2FjOTdf dXBkYXRlX2JpdHNfbm9sb2NrKGFjOTcsIEFDOTdfU1BESUYsIDB4M2ZmZiwgdmFsKTsKIAl9 CiAKIAljaGFuZ2UgfD0gYWM5Ny0+c3BkaWZfc3RhdHVzICE9IG5ldzsKZGlmZiAtTmF1ciAt LWV4Y2x1ZGU9RW50cmllcyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLi4vY3ZzX3JlZi9hbHNhLWtl cm5lbC9wY2kvY3M0Nnh4L2NzNDZ4eF9saWIuYyBhbHNhLWtlcm5lbC9wY2kvY3M0Nnh4L2Nz NDZ4eF9saWIuYwotLS0gLi4vY3ZzX3JlZi9hbHNhLWtlcm5lbC9wY2kvY3M0Nnh4L2NzNDZ4 eF9saWIuYwlUdWUgQXVnIDIwIDA4OjA1OjM5IDIwMDIKKysrIGFsc2Eta2VybmVsL3BjaS9j czQ2eHgvY3M0Nnh4X2xpYi5jCVR1ZSBBdWcgMjAgMjI6NTg6NDcgMjAwMgpAQCAtODU1LDYg Kzg1NSw3IEBACiAKIAlpZiAoY29weV9mcm9tX3VzZXIoaHdidWYsIHNyYywgYnl0ZXMpKQog CQlyZXR1cm4gLUVGQVVMVDsKKwogCXNwaW5fbG9ja19pcnEoJnJ1bnRpbWUtPmxvY2spOwog CXNuZF9jczQ2eHhfcGxheWJhY2tfdHJhbnNmZXIoc3Vic3RyZWFtLCBmcmFtZXMpOwogCXNw aW5fdW5sb2NrX2lycSgmcnVudGltZS0+bG9jayk7CkBAIC04ODUsMTcgKzg4NiwyMCBAQAog ewogCWNzNDZ4eF90ICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0p OwogCS8qc25kX3BjbV9ydW50aW1lX3QgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7 Ki8KKwlpbnQgcmVzdWx0ID0gMDsKKwogI2lmZGVmIENPTkZJR19TTkRfQ1M0NlhYX05FV19E U1AKIAljczQ2eHhfcGNtX3QgKmNwY20gPSBzbmRfbWFnaWNfY2FzdChjczQ2eHhfcGNtX3Qs IHN1YnN0cmVhbS0+cnVudGltZS0+cHJpdmF0ZV9kYXRhLCByZXR1cm4gLUVOWElPKTsKKyNl bHNlCisJc3Bpbl9sb2NrKCZjaGlwLT5yZWdfbG9jayk7CiAjZW5kaWYKLQlpbnQgcmVzdWx0 ID0gMDsKIAotCXNwaW5fbG9jaygmY2hpcC0+cmVnX2xvY2spOwogI2lmZGVmIENPTkZJR19T TkRfQ1M0NlhYX05FV19EU1AKKwogCWlmICghIGNwY20tPnBjbV9jaGFubmVsKSB7Ci0JCXNw aW5fdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7CiAJCXJldHVybiAtRU5YSU87CiAJfQorICAg IGRvd24gKCZjaGlwLT5zcG9zX211dGV4KTsKICNlbmRpZgogCXN3aXRjaCAoY21kKSB7CiAJ Y2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVEFSVDoKQEAgLTkwNSw2ICs5MDksNyBAQAogCQkJ Y3M0Nnh4X2RzcF9wY21fbGluayhjaGlwLGNwY20tPnBjbV9jaGFubmVsKTsKIAkJaWYgKHN1 YnN0cmVhbS0+cnVudGltZS0+cGVyaW9kcyAhPSBDUzQ2WFhfRlJBR1MpCiAJCQlzbmRfY3M0 Nnh4X3BsYXliYWNrX3RyYW5zZmVyKHN1YnN0cmVhbSwgMCk7CisKIAkJLyogcmFpc2UgcGxh eWJhY2sgdm9sdW1lICovCiAJCXNuZF9jczQ2eHhfcG9rZShjaGlwLCAoY3BjbS0+cGNtX2No YW5uZWwtPnBjbV9yZWFkZXJfc2NiLT5hZGRyZXNzICsgMHhFKSA8PCAyLCAweDgwMDA4MDAw KTsKICNlbHNlCkBAIC05MjAsNiArOTI1LDggQEAKIAljYXNlIFNORFJWX1BDTV9UUklHR0VS X1NUT1A6CiAJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVVNQRU5EOgogI2lmZGVmIENPTkZJ R19TTkRfQ1M0NlhYX05FV19EU1AKKyAgICAgICAgLyogbXV0ZSBjaGFubmVsICovCisJCXNu ZF9jczQ2eHhfcG9rZShjaGlwLCAoY3BjbS0+cGNtX2NoYW5uZWwtPnBjbV9yZWFkZXJfc2Ni LT5hZGRyZXNzICsgMHhFKSA8PCAyLCAweGZmZmZmZmZmKTsKIAkJaWYgKCFjcGNtLT5wY21f Y2hhbm5lbC0+dW5saW5rZWQpCiAJCQljczQ2eHhfZHNwX3BjbV91bmxpbmsoY2hpcCxjcGNt LT5wY21fY2hhbm5lbCk7CiAjZWxzZQpAQCAtOTM0LDcgKzk0MSwxMyBAQAogCQlyZXN1bHQg PSAtRUlOVkFMOwogCQlicmVhazsKIAl9CisKKyNpZmRlZiBDT05GSUdfU05EX0NTNDZYWF9O RVdfRFNQCisgICAgdXAgKCZjaGlwLT5zcG9zX211dGV4KTsKKyNlbHNlCiAJc3Bpbl91bmxv Y2soJmNoaXAtPnJlZ19sb2NrKTsKKyNlbmRpZgorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApA QCAtOTY0LDYgKzk3Nyw3IEBACiAJCWJyZWFrOwogCX0KIAlzcGluX3VubG9jaygmY2hpcC0+ cmVnX2xvY2spOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtOTk0LDYgKzEwMDgsNyBA QAogCQkJcmV0dXJuIGVycjsKIAkJc3Vic3RyZWFtLT5vcHMgPSAmc25kX2NzNDZ4eF9wbGF5 YmFja19pbmRpcmVjdF9vcHM7CiAJfQorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwMTEsNiAr MTAyNiw3IEBACiAJcnVudGltZS0+ZG1hX2FyZWEgPSBOVUxMOwogCXJ1bnRpbWUtPmRtYV9h ZGRyID0gMDsKIAlydW50aW1lLT5kbWFfYnl0ZXMgPSAwOworCiAJcmV0dXJuIDA7CiB9CiAK QEAgLTEwMjUsNyArMTA0MSw4IEBACiAJY3BjbSA9IHNuZF9tYWdpY19jYXN0KGNzNDZ4eF9w Y21fdCwgcnVudGltZS0+cHJpdmF0ZV9kYXRhLCByZXR1cm4gLUVOWElPKTsKIAogI2lmZGVm IENPTkZJR19TTkRfQ1M0NlhYX05FV19EU1AKLQlkb3duICgmY2hpcC0+ZHNwX3Nwb3NfaW5z dGFuY2UtPnBjbV9tdXRleCk7CisgICAgZG93biAoJmNoaXAtPnNwb3NfbXV0ZXgpOworCiAJ aWYgKCBjcGNtLT5wY21fY2hhbm5lbC0+c3JjX3NjYi0+cmVmX2NvdW50ID09IDEgJiYKIAkg ICAgIGNwY20tPnBjbV9jaGFubmVsLT5zYW1wbGVfcmF0ZSAhPSBydW50aW1lLT5yYXRlKSB7 CiAJCS8qIHNhbXBsZSByYXRlIG5vdCBzZXQgb3Igd2UgY2FuIHJldXNlCkBAIC0xMDM0LDIz ICsxMDUxLDI1IEBACiAJCWNzNDZ4eF9kc3Bfc2V0X3NyY19zYW1wbGVfcmF0ZSAoY2hpcCxj cGNtLT5wY21fY2hhbm5lbC0+c3JjX3NjYixydW50aW1lLT5yYXRlKTsKIAkJY3BjbS0+cGNt X2NoYW5uZWwtPnNhbXBsZV9yYXRlID0gcnVudGltZS0+cmF0ZTsKIAl9IAotCXVwICgmY2hp cC0+ZHNwX3Nwb3NfaW5zdGFuY2UtPnBjbV9tdXRleCk7CiAKIAlpZiAoY3BjbS0+cGNtX2No YW5uZWwtPnNhbXBsZV9yYXRlICE9IHJ1bnRpbWUtPnJhdGUgJiYKIAkgICAgY3BjbS0+cGNt X2NoYW5uZWwtPnNyY19zY2ItPnJlZl9jb3VudCAhPSAxKSB7CisgICAgICAgIGludCB1bmxp bmtlZCA9IGNwY20tPnBjbV9jaGFubmVsLT51bmxpbmtlZDsKIAkJY3M0Nnh4X2RzcF9kZXN0 cm95X3BjbV9jaGFubmVsIChjaGlwLGNwY20tPnBjbV9jaGFubmVsKTsKIAogCQlpZiAoIChj cGNtLT5wY21fY2hhbm5lbCA9IGNzNDZ4eF9kc3BfY3JlYXRlX3BjbV9jaGFubmVsIChjaGlw LCBydW50aW1lLT5yYXRlLCBjcGNtLCBjcGNtLT5od19hZGRyKSkgPT0gTlVMTCkgewogCQkJ c25kX3ByaW50ayhLRVJOX0VSUiAiY3M0Nnh4OiBmYWlsZWQgdG8gcmUtY3JlYXRlIHZpcnR1 YWwgUENNIGNoYW5uZWxcbiIpOworICAgICAgICAgICAgdXAgKCZjaGlwLT5zcG9zX211dGV4 KTsKIAkJCXJldHVybiAtRU5YSU87CiAJCX0KIAotCQljczQ2eHhfZHNwX3BjbV91bmxpbmsg KGNoaXAsY3BjbS0+cGNtX2NoYW5uZWwpOworCQlpZiAodW5saW5rZWQpIGNzNDZ4eF9kc3Bf cGNtX3VubGluayAoY2hpcCxjcGNtLT5wY21fY2hhbm5lbCk7CiAJCWNwY20tPnBjbV9jaGFu bmVsLT5zYW1wbGVfcmF0ZSA9IHJ1bnRpbWUtPnJhdGU7CiAJfQogCiAJcGZpZSA9IHNuZF9j czQ2eHhfcGVlayhjaGlwLCAoY3BjbS0+cGNtX2NoYW5uZWwtPnBjbV9yZWFkZXJfc2NiLT5h ZGRyZXNzICsgMSkgPDwgMiApOwogCXBmaWUgJj0gfjB4MDAwMGYwM2Y7CisgICAgdXAgKCZj aGlwLT5zcG9zX211dGV4KTsKICNlbHNlCiAJLyogb2xkIGRzcCAqLwogCXBmaWUgPSBzbmRf Y3M0Nnh4X3BlZWsoY2hpcCwgQkExX1BGSUUpOwpAQCAtMTExMyw2ICsxMTMyLDcgQEAKIAlz bmRfcGNtX3J1bnRpbWVfdCAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKIAlpbnQg ZXJyOwogCisKIAlpZiAocnVudGltZS0+cGVyaW9kcyA9PSBDUzQ2WFhfRlJBR1MpIHsKIAkJ aWYgKHJ1bnRpbWUtPmRtYV9hcmVhICE9IGNoaXAtPmNhcHQuaHdfYXJlYSkKIAkJCXNuZF9w Y21fbGliX2ZyZWVfcGFnZXMoc3Vic3RyZWFtKTsKQEAgLTExMzAsNiArMTE1MCw3IEBACiAJ CQlyZXR1cm4gZXJyOwogCQlzdWJzdHJlYW0tPm9wcyA9ICZzbmRfY3M0Nnh4X2NhcHR1cmVf aW5kaXJlY3Rfb3BzOwogCX0KKwogCXJldHVybiAwOwogfQogCkBAIC0xMTQzLDYgKzExNjQs NyBAQAogCXJ1bnRpbWUtPmRtYV9hcmVhID0gTlVMTDsKIAlydW50aW1lLT5kbWFfYWRkciA9 IDA7CiAJcnVudGltZS0+ZG1hX2J5dGVzID0gMDsKKwogCXJldHVybiAwOwogfQogCkBAIC0x MTU4LDYgKzExODAsNyBAQAogCWNoaXAtPmNhcHQuaHdfZGF0YSA9IGNoaXAtPmNhcHQuaHdf aW8gPSBjaGlwLT5jYXB0Lmh3X3JlYWR5ID0gMDsKIAljaGlwLT5jYXB0LmFwcGxfcHRyID0g MDsKIAlzbmRfY3M0Nnh4X3NldF9jYXB0dXJlX3NhbXBsZV9yYXRlKGNoaXAsIHJ1bnRpbWUt PnJhdGUpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTExODMsNiArMTIwNiw3IEBACiAKICNp ZmRlZiBDT05GSUdfU05EX0NTNDZYWF9ORVdfRFNQCiAJc3RhdHVzMiA9IHNuZF9jczQ2eHhf cGVla0JBMChjaGlwLCBCQTBfSFNSMCk7CisKIAlmb3IgKGkgPSAwOyBpIDwgRFNQX01BWF9Q Q01fQ0hBTk5FTFM7ICsraSkgewogCQlpZiAoaSA8PSAxNSkgewogCQkJaWYgKCBzdGF0dXMx ICYgKDEgPDwgaSkgKSB7CkBAIC0xMjEzLDYgKzEyMzcsNyBAQAogCV9pbnZhbGlkX3BvaW50 ZXI6CiAJCXByaW50ayAoS0VSTl9FUlIgImNzNDZ4eDogKGludGVycnVwdCkgaW52YWxpZCBw b2ludGVyIGF0IHBjbV9jaGFubmVsWyVkXVxuIixpKTsKIAl9CisKICNlbHNlCiAJLyogb2xk IGRzcCAqLwogCWlmICgoc3RhdHVzMSAmIEhJU1JfVkMwKSAmJiBjaGlwLT5wbGF5YmFja19w Y20pIHsKQEAgLTEzMjQsMjQgKzEzNDksMjggQEAKIAogCWNwY20tPnN1YnN0cmVhbSA9IHN1 YnN0cmVhbTsKICNpZmRlZiBDT05GSUdfU05EX0NTNDZYWF9ORVdfRFNQCisgICAgZG93biAo JmNoaXAtPnNwb3NfbXV0ZXgpOwogCWNwY20tPnBjbV9jaGFubmVsID0gY3M0Nnh4X2RzcF9j cmVhdGVfcGNtX2NoYW5uZWwgKGNoaXAsIHJ1bnRpbWUtPnJhdGUsIGNwY20sIGNwY20tPmh3 X2FkZHIpOwogCiAJaWYgKGNwY20tPnBjbV9jaGFubmVsID09IE5VTEwpIHsKIAkJc25kX3By aW50ayhLRVJOX0VSUiAiY3M0Nnh4OiBmYWlsZWQgdG8gY3JlYXRlIHZpcnR1YWwgUENNIGNo YW5uZWxcbiIpOwogCQlzbmRfZnJlZV9wY2lfcGFnZXMoY2hpcC0+cGNpLCBjcGNtLT5od19z aXplLCBjcGNtLT5od19hcmVhLCBjcGNtLT5od19hZGRyKTsKIAkJc25kX21hZ2ljX2tmcmVl KGNwY20pOworICAgICAgICB1cCAoJmNoaXAtPnNwb3NfbXV0ZXgpOwogCQlyZXR1cm4gLUVO T01FTTsKIAl9CiAKIAljczQ2eHhfZHNwX3BjbV91bmxpbmsgKGNoaXAsY3BjbS0+cGNtX2No YW5uZWwpOworICAgIHVwICgmY2hpcC0+c3Bvc19tdXRleCk7CiAjZWxzZQogCWNoaXAtPnBs YXliYWNrX3BjbSA9IGNwY207IC8qIEhBQ0sgKi8KICNlbmRpZgogCiAJaWYgKGNoaXAtPmFj Y2VwdF92YWxpZCkKLQkJc3Vic3RyZWFtLT5ydW50aW1lLT5ody5pbmZvIHw9IFNORFJWX1BD TV9JTkZPX01NQVBfVkFMSUQ7CisgICAgICBzdWJzdHJlYW0tPnJ1bnRpbWUtPmh3LmluZm8g fD0gU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRDsKIAljaGlwLT5hY3RpdmVfY3RybChjaGlw LCAxKTsKIAljaGlwLT5hbXBsaWZpZXJfY3RybChjaGlwLCAxKTsKKwogCXJldHVybiAwOwog fQogCkBAIC0xMzUzLDEwICsxMzgyLDEzIEBACiAJCXJldHVybiAtRU5PTUVNOwogCWNoaXAt PmNhcHQuc3Vic3RyZWFtID0gc3Vic3RyZWFtOwogCXN1YnN0cmVhbS0+cnVudGltZS0+aHcg PSBzbmRfY3M0Nnh4X2NhcHR1cmU7CisKIAlpZiAoY2hpcC0+YWNjZXB0X3ZhbGlkKQotCQlz dWJzdHJlYW0tPnJ1bnRpbWUtPmh3LmluZm8gfD0gU05EUlZfUENNX0lORk9fTU1BUF9WQUxJ RDsKKyAgICAgIHN1YnN0cmVhbS0+cnVudGltZS0+aHcuaW5mbyB8PSBTTkRSVl9QQ01fSU5G T19NTUFQX1ZBTElEOworCiAJY2hpcC0+YWN0aXZlX2N0cmwoY2hpcCwgMSk7CiAJY2hpcC0+ YW1wbGlmaWVyX2N0cmwoY2hpcCwgMSk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTM2OSwx MCArMTQwMSwxMiBAQAogCWNwY20gPSBzbmRfbWFnaWNfY2FzdChjczQ2eHhfcGNtX3QsIHJ1 bnRpbWUtPnByaXZhdGVfZGF0YSwgcmV0dXJuIC1FTlhJTyk7CiAKICNpZmRlZiBDT05GSUdf U05EX0NTNDZYWF9ORVdfRFNQCisgICAgZG93biAoJmNoaXAtPnNwb3NfbXV0ZXgpOwogCWlm IChjcGNtLT5wY21fY2hhbm5lbCkgewogCQljczQ2eHhfZHNwX2Rlc3Ryb3lfcGNtX2NoYW5u ZWwoY2hpcCxjcGNtLT5wY21fY2hhbm5lbCk7CiAJCWNwY20tPnBjbV9jaGFubmVsID0gTlVM TDsKIAl9CisgICAgdXAgKCZjaGlwLT5zcG9zX211dGV4KTsKICNlbHNlCiAJY2hpcC0+cGxh eWJhY2tfcGNtID0gTlVMTDsKICNlbmRpZgpAQCAtMTM4MSw2ICsxNDE1LDcgQEAKIAlzbmRf ZnJlZV9wY2lfcGFnZXMoY2hpcC0+cGNpLCBjcGNtLT5od19zaXplLCBjcGNtLT5od19hcmVh LCBjcGNtLT5od19hZGRyKTsKIAljaGlwLT5hY3RpdmVfY3RybChjaGlwLCAtMSk7CiAJY2hp cC0+YW1wbGlmaWVyX2N0cmwoY2hpcCwgLTEpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEz OTIsNiArMTQyNyw3IEBACiAJc25kX2ZyZWVfcGNpX3BhZ2VzKGNoaXAtPnBjaSwgY2hpcC0+ Y2FwdC5od19zaXplLCBjaGlwLT5jYXB0Lmh3X2FyZWEsIGNoaXAtPmNhcHQuaHdfYWRkcik7 CiAJY2hpcC0+YWN0aXZlX2N0cmwoY2hpcCwgLTEpOwogCWNoaXAtPmFtcGxpZmllcl9jdHJs KGNoaXAsIC0xKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xNTQ5LDcgKzE1ODUsOCBAQAog CQkJY2hpcC0+ZHNwX3Nwb3NfaW5zdGFuY2UtPnNwZGlmX2lucHV0X3ZvbHVtZSA9IHZhbDsK IAkJfQogI2VuZGlmCi0JfQorICAgIH0KKwogCXJldHVybiBjaGFuZ2U7CiB9CiAKQEAgLTE1 NzUsNiArMTYxMiw3IEBACiAJCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0g Y2hpcC0+ZHNwX3Nwb3NfaW5zdGFuY2UtPnNwZGlmX3N0YXR1c19vdXQ7CiAJZWxzZQogCQl1 Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9IGNoaXAtPmRzcF9zcG9zX2luc3Rh bmNlLT5zcGRpZl9zdGF0dXNfaW47CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTcxOSw3ICsx NzU3LDYgQEAKIAogI2VuZGlmIC8qIENPTkZJR19TTkRfQ1M0NlhYX05FV19EU1AgKi8KIAot CiAjaWZkZWYgQ09ORklHX1NORF9DUzQ2WFhfREVCVUdfR1BJTwogc3RhdGljIGludCBzbmRf Y3M0Nnh4X2VncGlvX3NlbGVjdF9pbmZvKHNuZF9rY29udHJvbF90ICprY29udHJvbCwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kX2N0bF9lbGVtX2lu Zm9fdCAqdWluZm8pCkBAIC0xOTc5LDYgKzIwMTYsNyBAQAogICAgIAogCS8qIGFkZCBjczQ2 MzAgbWl4ZXIgY29udHJvbHMgKi8KICBfZW5kOgorCiAJLyogZG9zb3VuZGNhcmQgc3BlY2lm aWMgbWl4ZXIgc2V0dXAgKi8KIAlpZiAoY2hpcC0+bWl4ZXJfaW5pdCkgewogCQlzbmRfcHJp bnRkZCAoImNhbGxpbmcgY2hpcC0+bWl4ZXJfaW5pdChjaGlwKTtcbiIpOwpAQCAtMjQ0Nyw3 ICsyNDg1LDcgQEAKIAkJY2hpcC0+YWN0aXZlX2N0cmwoY2hpcCwgLWNoaXAtPmFtcGxpZmll cik7CiAKICNpZmRlZiBDT05GSUdfU05EX0NTNDZYWF9ORVdfRFNQCi0JY3M0Nnh4X2RzcF9z cG9zX2Rlc3Ryb3koY2hpcC0+ZHNwX3Nwb3NfaW5zdGFuY2UpOworCWNzNDZ4eF9kc3Bfc3Bv c19kZXN0cm95KGNoaXApOwogI2VuZGlmCiAJc25kX21hZ2ljX2tmcmVlKGNoaXApOwogCXJl dHVybiAwOwpAQCAtMjkyMCw3ICsyOTU4LDYgQEAKICNlbmRpZgogfQogCi0KIHN0YXRpYyB2 b2lkIGhlcmN1bGVzX2luaXQoY3M0Nnh4X3QgKmNoaXApIAogewogCS8qIGRlZmF1bHQ6IEFN UCBvZmYsIGFuZCBTUERJRiBpbnB1dCBvcHRpY2FsICovCkBAIC0yOTI4LDYgKzI5NjUsNyBA QAogCXNuZF9jczQ2eHhfcG9rZUJBMChjaGlwLCBCQTBfRUdQSU9QVFIsIEVHUElPRFJfR1BP RTApOwogfQogCisKIC8qCiAgKglHYW1lIFRoZWF0cmUgWFAgY2FyZCAtIEVHUElPWzJdIGlz IHVzZWQgdG8gZW5hYmxlIHRoZSBleHRlcm5hbCBhbXAuCiAgKi8gCkBAIC0yOTQwLDYgKzI5 NzgsNyBAQAogCWNoaXAtPmFtcGxpZmllciArPSBjaGFuZ2U7CiAJaWYgKGNoaXAtPmFtcGxp ZmllciAmJiAhb2xkKSB7CiAJCXNuZF9wcmludGRkICgiSGVyY3VsZXMgYW1wbGlmaWVyIE9O XG4iKTsKKwogCQlzbmRfY3M0Nnh4X3Bva2VCQTAoY2hpcCwgQkEwX0VHUElPRFIsIAogCQkJ CSAgIEVHUElPRFJfR1BPRTIgfCB2YWwxKTsgICAgIC8qIGVuYWJsZSBFR1BJTzIgb3V0cHV0 ICovCiAJCXNuZF9jczQ2eHhfcG9rZUJBMChjaGlwLCBCQTBfRUdQSU9QVFIsIApAQCAtMjk4 MCw2ICszMDE5LDcgQEAKICNlbmRpZgogfQogCisKICNpZiAwCiAvKgogICoJVW50ZXN0ZWQK QEAgLTMyMDgsMTAgKzMyNDgsMTIgQEAKIAlpZiAoY2hpcCA9PSBOVUxMKQogCQlyZXR1cm4g LUVOT01FTTsKIAlzcGluX2xvY2tfaW5pdCgmY2hpcC0+cmVnX2xvY2spOworICAgIGluaXRf TVVURVgoJmNoaXAtPnNwb3NfbXV0ZXgpOwogCWNoaXAtPmNhcmQgPSBjYXJkOwogCWNoaXAt PnBjaSA9IHBjaTsKIAljaGlwLT5jYXB0Lmh3X3NpemUgPSBQQUdFX1NJWkU7CiAJY2hpcC0+ aXJxID0gLTE7CisgICAgY2hpcC0+YWNjZXB0X3ZhbGlkID0gMTsKIAljaGlwLT5iYTBfYWRk ciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwogCWNoaXAtPmJhMV9hZGRyID0gcGNp X3Jlc291cmNlX3N0YXJ0KHBjaSwgMSk7CiAJaWYgKGNoaXAtPmJhMF9hZGRyID09IDAgfHwg Y2hpcC0+YmEwX2FkZHIgPT0gfjAgfHwKZGlmZiAtTmF1ciAtLWV4Y2x1ZGU9RW50cmllcyAt LWV4Y2x1ZGU9TWFrZWZpbGUgLi4vY3ZzX3JlZi9hbHNhLWtlcm5lbC9wY2kvY3M0Nnh4L2Nz NDZ4eF9saWIuaCBhbHNhLWtlcm5lbC9wY2kvY3M0Nnh4L2NzNDZ4eF9saWIuaAotLS0gLi4v Y3ZzX3JlZi9hbHNhLWtlcm5lbC9wY2kvY3M0Nnh4L2NzNDZ4eF9saWIuaAlUdWUgQXVnIDIw IDA4OjA1OjM5IDIwMDIKKysrIGFsc2Eta2VybmVsL3BjaS9jczQ2eHgvY3M0Nnh4X2xpYi5o CVR1ZSBBdWcgMjAgMjE6NTI6NDcgMjAwMgpAQCAtMjgsMTEgKzI4LDExIEBACiAgKiAgY29u c3RhbnRzCiAgKi8KIAotI2RlZmluZSBDUzQ2WFhfQkEwX1NJWkUJCTB4MTAwMAotI2RlZmlu ZSBDUzQ2WFhfQkExX0RBVEEwX1NJWkUJMHgzMDAwCi0jZGVmaW5lIENTNDZYWF9CQTFfREFU QTFfU0laRQkweDM4MDAKLSNkZWZpbmUgQ1M0NlhYX0JBMV9QUkdfU0laRQkweDcwMDAKLSNk ZWZpbmUgQ1M0NlhYX0JBMV9SRUdfU0laRQkweDAxMDAKKyNkZWZpbmUgQ1M0NlhYX0JBMF9T SVpFCQkgIDB4MTAwMAorI2RlZmluZSBDUzQ2WFhfQkExX0RBVEEwX1NJWkUgMHgzMDAwCisj ZGVmaW5lIENTNDZYWF9CQTFfREFUQTFfU0laRSAweDM4MDAKKyNkZWZpbmUgQ1M0NlhYX0JB MV9QUkdfU0laRQkgIDB4NzAwMAorI2RlZmluZSBDUzQ2WFhfQkExX1JFR19TSVpFCSAgMHgw MTAwCiAKIAogI2RlZmluZSBDUzQ2WFhfUEVSSU9EX1NJWkUgMjA0OApAQCAtODQsNyArODQs NyBAQAogfQogCiBkc3Bfc3Bvc19pbnN0YW5jZV90ICogIGNzNDZ4eF9kc3Bfc3Bvc19jcmVh dGUgKGNzNDZ4eF90ICogY2hpcCk7Ci12b2lkICAgICAgICAgICAgICAgICAgIGNzNDZ4eF9k c3Bfc3Bvc19kZXN0cm95IChkc3Bfc3Bvc19pbnN0YW5jZV90ICogaW5zdGFuY2UpOwordm9p ZCAgICAgICAgICAgICAgICAgICBjczQ2eHhfZHNwX3Nwb3NfZGVzdHJveSAoY3M0Nnh4X3Qg KiBjaGlwKTsKIGludCAgICAgICAgICAgICAgICAgICAgY3M0Nnh4X2RzcF9sb2FkX21vZHVs ZSAoY3M0Nnh4X3QgKiBjaGlwLGRzcF9tb2R1bGVfZGVzY190ICogbW9kdWxlKTsKIHN5bWJv bF9lbnRyeV90ICogICAgICAgY3M0Nnh4X2RzcF9sb29rdXBfc3ltYm9sIChjczQ2eHhfdCAq IGNoaXAsY2hhciAqIHN5bWJvbF9uYW1lLGludCBzeW1ib2xfdHlwZSk7CiBzeW1ib2xfZW50 cnlfdCAqICAgICAgIGNzNDZ4eF9kc3BfbG9va3VwX3N5bWJvbF9hZGRyIChjczQ2eHhfdCAq IGNoaXAsdTMyIGFkZHJlc3MsaW50IHN5bWJvbF90eXBlKTsKZGlmZiAtTmF1ciAtLWV4Y2x1 ZGU9RW50cmllcyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLi4vY3ZzX3JlZi9hbHNhLWtlcm5lbC9w Y2kvY3M0Nnh4L2RzcF9zcG9zLmMgYWxzYS1rZXJuZWwvcGNpL2NzNDZ4eC9kc3Bfc3Bvcy5j Ci0tLSAuLi9jdnNfcmVmL2Fsc2Eta2VybmVsL3BjaS9jczQ2eHgvZHNwX3Nwb3MuYwlUdWUg QXVnIDIwIDA4OjA1OjM5IDIwMDIKKysrIGFsc2Eta2VybmVsL3BjaS9jczQ2eHgvZHNwX3Nw b3MuYwlUdWUgQXVnIDIwIDIyOjUxOjAxIDIwMDIKQEAgLTIyMSwxNiArMjIxLDEzIEBACiAJ CXJldHVybiBOVUxMOwogCW1lbXNldChpbnMsIDAsIHNpemVvZigqaW5zKSk7CiAKLQlpbml0 X01VVEVYKCZpbnMtPnNjYl9tdXRleCk7Ci0JaW5pdF9NVVRFWCgmaW5zLT5wY21fbXV0ZXgp OwotCiAJLyogYmV0dGVyIHRvIHVzZSB2bWFsbG9jIGZvciB0aGlzIGJpZyB0YWJsZSAqLwog CWlucy0+c3ltYm9sX3RhYmxlLm5zeW1ib2xzID0gMDsKIAlpbnMtPnN5bWJvbF90YWJsZS5z eW1ib2xzID0gdm1hbGxvYyhzaXplb2Yoc3ltYm9sX2VudHJ5X3QpICogRFNQX01BWF9TWU1C T0xTKTsKIAlpbnMtPnN5bWJvbF90YWJsZS5oaWdoZXN0X2ZyYWdfaW5kZXggPSAwOwogCiAJ aWYgKGlucy0+c3ltYm9sX3RhYmxlLnN5bWJvbHMgPT0gTlVMTCkgewotCQljczQ2eHhfZHNw X3Nwb3NfZGVzdHJveShpbnMpOworCQljczQ2eHhfZHNwX3Nwb3NfZGVzdHJveShjaGlwKTsK IAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0yMzksNyArMjM2LDcgQEAKIAlpbnMtPmNvZGUu ZGF0YSA9IGttYWxsb2MoRFNQX0NPREVfQllURV9TSVpFLCBHRlBfS0VSTkVMKTsKIAogCWlm IChpbnMtPmNvZGUuZGF0YSA9PSBOVUxMKSB7Ci0JCWNzNDZ4eF9kc3Bfc3Bvc19kZXN0cm95 KGlucyk7CisJCWNzNDZ4eF9kc3Bfc3Bvc19kZXN0cm95KGNoaXApOwogCQlyZXR1cm4gTlVM TDsKIAl9CiAKQEAgLTI1MCw3ICsyNDcsNyBAQAogCWlucy0+bW9kdWxlcyA9IGttYWxsb2Mo c2l6ZW9mKGRzcF9tb2R1bGVfZGVzY190KSAqIERTUF9NQVhfTU9EVUxFUywgR0ZQX0tFUk5F TCk7CiAKIAlpZiAoaW5zLT5tb2R1bGVzID09IE5VTEwpIHsKLQkJY3M0Nnh4X2RzcF9zcG9z X2Rlc3Ryb3koaW5zKTsKKwkJY3M0Nnh4X2RzcF9zcG9zX2Rlc3Ryb3koY2hpcCk7CiAJCXJl dHVybiBOVUxMOwogCX0KIApAQCAtMjY0LDE5ICsyNjEsMTkgQEAKIAlyZXR1cm4gaW5zOwog fQogCi12b2lkICBjczQ2eHhfZHNwX3Nwb3NfZGVzdHJveSAoZHNwX3Nwb3NfaW5zdGFuY2Vf dCAqIGlucykKK3ZvaWQgIGNzNDZ4eF9kc3Bfc3Bvc19kZXN0cm95IChjczQ2eHhfdCAqIGNo aXApCiB7CiAJaW50IGk7CisJZHNwX3Nwb3NfaW5zdGFuY2VfdCAqIGlucyA9IGNoaXAtPmRz cF9zcG9zX2luc3RhbmNlOwogCiAJc25kX2Fzc2VydChpbnMgIT0gTlVMTCwgcmV0dXJuKTsK IAotCWRvd24oJmlucy0+c2NiX211dGV4KTsKKwlkb3duKCZjaGlwLT5zcG9zX211dGV4KTsK IAlmb3IgKGkgPSAwOyBpIDwgaW5zLT5uc2NiOyArK2kpIHsKIAkJaWYgKGlucy0+c2Nic1tp XS5kZWxldGVkKSBjb250aW51ZTsKIAogCQljczQ2eHhfZHNwX3Byb2NfZnJlZV9zY2JfZGVz YyAoIChpbnMtPnNjYnMgKyBpKSApOwogCX0KLQl1cCgmaW5zLT5zY2JfbXV0ZXgpOwogCiAJ aWYgKGlucy0+Y29kZS5kYXRhKQogCQlrZnJlZShpbnMtPmNvZGUuZGF0YSk7CkBAIC0yODUs NiArMjgyLDcgQEAKIAlpZiAoaW5zLT5tb2R1bGVzKQogCQlrZnJlZShpbnMtPm1vZHVsZXMp OwogCWtmcmVlKGlucyk7ICAKKwl1cCgmY2hpcC0+c3Bvc19tdXRleCk7CiB9CiAKIGludCBj czQ2eHhfZHNwX2xvYWRfbW9kdWxlIChjczQ2eHhfdCAqIGNoaXAsIGRzcF9tb2R1bGVfZGVz Y190ICogbW9kdWxlKQpAQCAtNDc4LDYgKzQ3Niw3IEBACiAJZHNwX3Nwb3NfaW5zdGFuY2Vf dCAqIGlucyA9IGNoaXAtPmRzcF9zcG9zX2luc3RhbmNlOwogCWludCBpLGo7CiAKKwlkb3du KCZjaGlwLT5zcG9zX211dGV4KTsKIAlzbmRfaXByaW50ZihidWZmZXIsICJNT0RVTEVTOlxu Iik7CiAJZm9yICggaSA9IDA7IGkgPCBpbnMtPm5tb2R1bGVzOyArK2kgKSB7CiAJCXNuZF9p cHJpbnRmKGJ1ZmZlciwgIlxuJXM6XG4iLCBpbnMtPm1vZHVsZXNbaV0ubW9kdWxlX25hbWUp OwpAQCAtNDkwLDYgKzQ4OSw3IEBACiAJCQkJICAgIGRlc2MtPnNlZ21lbnRfdHlwZSxkZXNj LT5vZmZzZXQsIGRlc2MtPnNpemUpOwogCQl9CiAJfQorCXVwKCZjaGlwLT5zcG9zX211dGV4 KTsKIH0KIAogc3RhdGljIHZvaWQgY3M0Nnh4X2RzcF9wcm9jX3Rhc2tfdHJlZV9yZWFkIChz bmRfaW5mb19lbnRyeV90ICplbnRyeSwgc25kX2luZm9fYnVmZmVyX3QgKiBidWZmZXIpCkBA IC00OTksNiArNDk5LDcgQEAKIAlpbnQgaSxqLGNvbDsKIAl1bnNpZ25lZCBsb25nIGRzdCA9 IGNoaXAtPnJlZ2lvbi5pZHhbMV0ucmVtYXBfYWRkciArIERTUF9QQVJBTUVURVJfQllURV9P RkZTRVQ7CiAKKwlkb3duKCZjaGlwLT5zcG9zX211dGV4KTsKIAlzbmRfaXByaW50ZihidWZm ZXIsICJUQVNLIFRSRUVTOlxuIik7CiAJZm9yICggaSA9IDA7IGkgPCBpbnMtPm50YXNrOyAr K2kpIHsKIAkJc25kX2lwcmludGYoYnVmZmVyLCJcbiUwNHggJXM6XG4iLGlucy0+dGFza3Nb aV0uYWRkcmVzcyxpbnMtPnRhc2tzW2ldLnRhc2tfbmFtZSk7CkBAIC01MTUsNiArNTE2LDcg QEAKIAl9CiAKIAlzbmRfaXByaW50ZihidWZmZXIsIlxuIik7ICAKKwl1cCgmY2hpcC0+c3Bv c19tdXRleCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNzNDZ4eF9kc3BfcHJvY19zY2JfcmVhZCAo c25kX2luZm9fZW50cnlfdCAqZW50cnksIHNuZF9pbmZvX2J1ZmZlcl90ICogYnVmZmVyKQpA QCAtNTIzLDYgKzUyNSw3IEBACiAJZHNwX3Nwb3NfaW5zdGFuY2VfdCAqIGlucyA9IGNoaXAt PmRzcF9zcG9zX2luc3RhbmNlOwogCWludCBpOwogCisJZG93bigmY2hpcC0+c3Bvc19tdXRl eCk7CiAJc25kX2lwcmludGYoYnVmZmVyLCAiU0NCJ3M6XG4iKTsKIAlmb3IgKCBpID0gMDsg aSA8IGlucy0+bnNjYjsgKytpKSB7CiAJCWlmIChpbnMtPnNjYnNbaV0uZGVsZXRlZCkKQEAg LTU0NSw2ICs1NDgsNyBAQAogCX0KIAogCXNuZF9pcHJpbnRmKGJ1ZmZlciwiXG4iKTsKKwl1 cCgmY2hpcC0+c3Bvc19tdXRleCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNzNDZ4eF9kc3BfcHJv Y19wYXJhbWV0ZXJfZHVtcF9yZWFkIChzbmRfaW5mb19lbnRyeV90ICplbnRyeSwgc25kX2lu Zm9fYnVmZmVyX3QgKiBidWZmZXIpCkBAIC04MDgsMTIgKzgxMiwxNCBAQAogCX0KIAlpbnMt PnByb2Nfc2NiX2luZm9fZW50cnkgPSBlbnRyeTsKIAorCWRvd24oJmNoaXAtPnNwb3NfbXV0 ZXgpOwogCS8qIHJlZ2lzdGVyL3VwZGF0ZSBTQ0IncyBlbnRyaWVzIG9uIHByb2MgKi8KIAlm b3IgKGkgPSAwOyBpIDwgaW5zLT5uc2NiOyArK2kpIHsKIAkJaWYgKGlucy0+c2Nic1tpXS5k ZWxldGVkKSBjb250aW51ZTsKIAogCQljczQ2eHhfZHNwX3Byb2NfcmVnaXN0ZXJfc2NiX2Rl c2MgKGNoaXAsIChpbnMtPnNjYnMgKyBpKSk7CiAJfQorCXVwKCZjaGlwLT5zcG9zX211dGV4 KTsKIAogCXJldHVybiAwOwogfQpAQCAtODUzLDEyICs4NTksMTIgQEAKIAkJaW5zLT5wcm9j X3Rhc2tfaW5mb19lbnRyeSA9IE5VTEw7CiAJfQogCi0JZG93bigmaW5zLT5zY2JfbXV0ZXgp OworCWRvd24oJmNoaXAtPnNwb3NfbXV0ZXgpOwogCWZvciAoaSA9IDA7IGkgPCBpbnMtPm5z Y2I7ICsraSkgewogCQlpZiAoaW5zLT5zY2JzW2ldLmRlbGV0ZWQpIGNvbnRpbnVlOwogCQlj czQ2eHhfZHNwX3Byb2NfZnJlZV9zY2JfZGVzYyAoIChpbnMtPnNjYnMgKyBpKSApOwogCX0K LQl1cCgmaW5zLT5zY2JfbXV0ZXgpOworCXVwKCZjaGlwLT5zcG9zX211dGV4KTsKIAogCWlm IChpbnMtPnByb2NfZHNwX2RpcikgewogCQlzbmRfaW5mb191bnJlZ2lzdGVyIChpbnMtPnBy b2NfZHNwX2Rpcik7CkBAIC0xMzEyLDkgKzEzMTgsMTEgQEAKIAkJCQkJCQkgICAgIGNvZGVj X291dF9zY2IsCiAJCQkJCQkJICAgICBzZWNfY29kZWNfb3V0X3NjYiwKIAkJCQkJCQkgICAg IFNDQl9PTl9QQVJFTlRfU1VCTElTVF9TQ0IpOworCiAJaWYgKCFtYWdpY19zbm9vcF9zY2Ip IGdvdG8gX2ZhaWxfZW5kOwogCWlucy0+cmVmX3Nub29wX3NjYiA9IG1hZ2ljX3Nub29wX3Nj YjsKIAorCiAJLyogVGhlIGFzeW5jaC4gdHJhbnNmZXIgdGFzayAqLwogCWFzeW5jaF90eF9z Y2IgPSBjczQ2eHhfZHNwX2NyZWF0ZV9hc3luY2hfZmdfdHhfc2NiKGNoaXAsIkFzeW5jaEZH VHhTQ0IiLEFTWU5DVFhfU0NCX0FERFIsCiAJCQkJCQkJICAgU1BESUZPX1NDQl9JTlNULApA QCAtMTMzNiw3ICsxMzQ0LDcgQEAKIAlpZiAoIWNzNDZ4eF9kc3BfY3JlYXRlX3NwaW9fd3Jp dGVfc2NiKGNoaXAsIlNQSU9Xcml0ZVNDQiIsU1BJT1dSSVRFX1NDQl9BRERSLAogCQkJCQkg ICAgICBhc3luY2hfdHhfc2NiLAogCQkJCQkgICAgICBTQ0JfT05fUEFSRU5UX05FWFRfU0NC KSkKLQkJZ290byBfZmFpbF9lbmQ7CisgICAgICBnb3RvIF9mYWlsX2VuZDsKIAogCiAJLyog U1BESUYgaW5wdXQgc2FtcGVsIHJhdGUgY29udmVydGVyICovCkBAIC0xNTY5LDEyICsxNTc3 LDE0IEBACiAJZHNwX3Nwb3NfaW5zdGFuY2VfdCAqIGlucyA9IGNoaXAtPmRzcF9zcG9zX2lu c3RhbmNlOwogCXVuc2lnbmVkIGludCBmbGFnczsKIAotCS8qIHR1cm4gb24gYW1wbGlmaWVy ICovCisgICAgLyogdHVybiBvbiBhbXBsaWZpZXIgKi8KIAljaGlwLT5hY3RpdmVfY3RybChj aGlwLCAxKTsKIAljaGlwLT5hbXBsaWZpZXJfY3RybChjaGlwLCAxKTsKIAogCXNuZF9hc3Nl cnQgKGlucy0+YXN5bmNoX3J4X3NjYiA9PSBOVUxMLHJldHVybiAtRUlOVkFMKTsKIAlzbmRf YXNzZXJ0IChpbnMtPnNwZGlmX2luX3NyYyAhPSBOVUxMLHJldHVybiAtRUlOVkFMKTsKKwor CWRvd24oJmNoaXAtPnNwb3NfbXV0ZXgpOwogCS8qIGNyZWF0ZSBhbmQgc3RhcnQgdGhlIGFz eW5jaHJvbm91cyByZWNlaXZlciBTQ0IgKi8KIAlpbnMtPmFzeW5jaF9yeF9zY2IgPSBjczQ2 eHhfZHNwX2NyZWF0ZV9hc3luY2hfZmdfcnhfc2NiKGNoaXAsIkFzeW5jaEZHUnhTQ0IiLAog CQkJCQkJCQlBU1lOQ1JYX1NDQl9BRERSLApAQCAtMTU4NSw2ICsxNTk1LDcgQEAKIAogCXNh dmVfZmxhZ3MoZmxhZ3MpOwogCWNsaSgpOworCiAJLyogcmVzZXQgU1BESUYgaW5wdXQgc2Ft cGxlIGJ1ZmZlciBwb2ludGVyICovCiAJc25kX2NzNDZ4eF9wb2tlIChjaGlwLCAoU1BESUZJ X1NDQl9JTlNUICsgMHgwYykgPDwgMiwKIAkJCSAoU1BESUZJX0lQX09VVFBVVF9CVUZGRVIx IDw8IDB4MTApIHwgMHhGRkZDKTsKQEAgLTE2MDQsNiArMTYxNSw3IEBACiAKIAkvKiBtb25p dG9yIHN0YXRlICovCiAJaW5zLT5zcGRpZl9zdGF0dXNfaW4gPSAxOworCXVwKCZjaGlwLT5z cG9zX211dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYxMiwxNyArMTYyNCwxOSBAQAog ewogCWRzcF9zcG9zX2luc3RhbmNlX3QgKiBpbnMgPSBjaGlwLT5kc3Bfc3Bvc19pbnN0YW5j ZTsKIAotCXNuZF9hc3NlcnQgKGlucy0+YXN5bmNoX3J4X3NjYiAhPSBOVUxMLCByZXR1cm4g LUVJTlZBTCk7Ci0Jc25kX2Fzc2VydCAoaW5zLT5zcGRpZl9pbl9zcmMgIT0gTlVMTCxyZXR1 cm4gLUVJTlZBTCk7CisgICAgc25kX2Fzc2VydCAoaW5zLT5hc3luY2hfcnhfc2NiICE9IE5V TEwsIHJldHVybiAtRUlOVkFMKTsKKyAgICBzbmRfYXNzZXJ0IChpbnMtPnNwZGlmX2luX3Ny YyAhPSBOVUxMLHJldHVybiAtRUlOVkFMKTsKIAotCS8qIFJlbW92ZSB0aGUgYXN5bmNocm9u b3VzIHJlY2VpdmVyIFNDQiAqLwotCWNzNDZ4eF9kc3BfcmVtb3ZlX3NjYiAoY2hpcCxpbnMt PmFzeW5jaF9yeF9zY2IpOwotCWlucy0+YXN5bmNoX3J4X3NjYiA9IE5VTEw7CisJZG93bigm Y2hpcC0+c3Bvc19tdXRleCk7CisgICAgLyogUmVtb3ZlIHRoZSBhc3luY2hyb25vdXMgcmVj ZWl2ZXIgU0NCICovCisgICAgY3M0Nnh4X2RzcF9yZW1vdmVfc2NiIChjaGlwLGlucy0+YXN5 bmNoX3J4X3NjYik7CisgICAgaW5zLT5hc3luY2hfcnhfc2NiID0gTlVMTDsKIAogCWNzNDZ4 eF9zcmNfdW5saW5rKGNoaXAsaW5zLT5zcGRpZl9pbl9zcmMpOwogCiAJLyogbW9uaXRvciBz dGF0ZSAqLwogCWlucy0+c3BkaWZfc3RhdHVzX2luID0gMDsKKwl1cCgmY2hpcC0+c3Bvc19t dXRleCk7CiAKIAkvKiByZXN0b3JlIGFtcGxpZmllciAqLwogCWNoaXAtPmFjdGl2ZV9jdHJs KGNoaXAsIC0xKTsKQEAgLTE2MzgsOSArMTY1MiwxMSBAQAogCXNuZF9hc3NlcnQgKGlucy0+ cGNtX2lucHV0ID09IE5VTEwscmV0dXJuIC1FSU5WQUwpOwogCXNuZF9hc3NlcnQgKGlucy0+ cmVmX3Nub29wX3NjYiAhPSBOVUxMLHJldHVybiAtRUlOVkFMKTsKIAorICAgIGRvd24oJmNo aXAtPnNwb3NfbXV0ZXgpOwogCWlucy0+cGNtX2lucHV0ID0gY3M0Nnh4X2FkZF9yZWNvcmRf c291cmNlKGNoaXAsaW5zLT5yZWZfc25vb3Bfc2NiLFBDTVNFUklBTElOX1BDTV9TQ0JfQURE UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlBDTVNlcmlhbElucHV0X1dhdmUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgdXAoJmNoaXAtPnNwb3NfbXV0ZXgpOworCiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTE2NTAsOCArMTY2NiwxMCBAQAogCiAJc25kX2Fzc2VydCAo aW5zLT5wY21faW5wdXQgIT0gTlVMTCxyZXR1cm4gLUVJTlZBTCk7CiAKKyAgICBkb3duKCZj aGlwLT5zcG9zX211dGV4KTsKIAljczQ2eHhfZHNwX3JlbW92ZV9zY2IgKGNoaXAsaW5zLT5w Y21faW5wdXQpOwogCWlucy0+cGNtX2lucHV0ID0gTlVMTDsKKyAgICB1cCgmY2hpcC0+c3Bv c19tdXRleCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE2NjMsOSArMTY4MSwxMSBAQAogCXNu ZF9hc3NlcnQgKGlucy0+YWRjX2lucHV0ID09IE5VTEwscmV0dXJuIC1FSU5WQUwpOwogCXNu ZF9hc3NlcnQgKGlucy0+Y29kZWNfaW5fc2NiICE9IE5VTEwscmV0dXJuIC1FSU5WQUwpOwog CisgICAgZG93bigmY2hpcC0+c3Bvc19tdXRleCk7CiAJaW5zLT5hZGNfaW5wdXQgPSBjczQ2 eHhfYWRkX3JlY29yZF9zb3VyY2UoY2hpcCxpbnMtPmNvZGVjX2luX3NjYixQQ01TRVJJQUxJ Tl9TQ0JfQUREUiwKIAkJCQkJCSAgIlBDTVNlcmlhbElucHV0X0FEQyIpOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB1cCgmY2hp cC0+c3Bvc19tdXRleCk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTY3NSw4ICsxNjk1LDEw IEBACiAKIAlzbmRfYXNzZXJ0IChpbnMtPmFkY19pbnB1dCAhPSBOVUxMLHJldHVybiAtRUlO VkFMKTsKIAorICAgIGRvd24oJmNoaXAtPnNwb3NfbXV0ZXgpOwogCWNzNDZ4eF9kc3BfcmVt b3ZlX3NjYiAoY2hpcCxpbnMtPmFkY19pbnB1dCk7CiAJaW5zLT5hZGNfaW5wdXQgPSBOVUxM OworICAgIHVwKCZjaGlwLT5zcG9zX211dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY5 Niw3ICsxNzE4LDcgQEAKIAogCXNuZF9jczQ2eHhfcG9rZShjaGlwLCggU1BJT1dSSVRFX1ND Ql9BRERSICAgICAgPDwgMiksIHRlbXApOwogCXNuZF9jczQ2eHhfcG9rZShjaGlwLCgoU1BJ T1dSSVRFX1NDQl9BRERSICsgMSkgPDwgMiksIGRhdGEpOyAvKiBvZmZzZXQgMSA8LS0gZGF0 YTEgKi8KLQlzbmRfY3M0Nnh4X3Bva2UoY2hpcCwoKFNQSU9XUklURV9TQ0JfQUREUiArIDIp IDw8IDIpLCBkYXRhKTsgLyogb2Zmc2V0IDEgPC0tIGRhdGEyKi8KKwlzbmRfY3M0Nnh4X3Bv a2UoY2hpcCwoKFNQSU9XUklURV9TQ0JfQUREUiArIDIpIDw8IDIpLCBkYXRhKTsgLyogb2Zm c2V0IDEgPC0tIGRhdGEyICovCiAgICAgCiAJLyogUG9rZSB0aGlzIGxvY2F0aW9uIHRvIHRl bGwgdGhlIHRhc2sgdG8gc3RhcnQgKi8KIAlzbmRfY3M0Nnh4X3Bva2UoY2hpcCwoKFNQSU9X UklURV9TQ0JfQUREUiArIDYpIDw8IDIpLCBTUElPV1JJVEVfU0NCX0FERFIgPDwgMHgxMCk7 CmRpZmYgLU5hdXIgLS1leGNsdWRlPUVudHJpZXMgLS1leGNsdWRlPU1ha2VmaWxlIC4uL2N2 c19yZWYvYWxzYS1rZXJuZWwvcGNpL2NzNDZ4eC9kc3Bfc3Bvc19zY2JfbGliLmMgYWxzYS1r ZXJuZWwvcGNpL2NzNDZ4eC9kc3Bfc3Bvc19zY2JfbGliLmMKLS0tIC4uL2N2c19yZWYvYWxz YS1rZXJuZWwvcGNpL2NzNDZ4eC9kc3Bfc3Bvc19zY2JfbGliLmMJVHVlIEF1ZyAyMCAwODow NTozOSAyMDAyCisrKyBhbHNhLWtlcm5lbC9wY2kvY3M0Nnh4L2RzcF9zcG9zX3NjYl9saWIu YwlUaHUgQXVnIDIyIDA4OjQ4OjU1IDIwMDIKQEAgLTc1LDcgKzc1LDcgQEAKIAogCWlucyA9 IGNoaXAtPmRzcF9zcG9zX2luc3RhbmNlOwogCi0JZG93bigmaW5zLT5zY2JfbXV0ZXgpOwor CWRvd24oJmNoaXAtPnNwb3NfbXV0ZXgpOwogCXNuZF9pcHJpbnRmKGJ1ZmZlciwiJTA0eCAl czpcbiIsc2NiLT5hZGRyZXNzLHNjYi0+c2NiX25hbWUpOwogCiAJZm9yIChjb2wgPSAwLGog PSAwO2ogPCAweDEwOyBqKyssY29sKyspIHsKQEAgLTEwMyw3ICsxMDMsNyBAQAogCQkgICAg c2NiLT50YXNrX2VudHJ5LT5hZGRyZXNzKTsKIAogCXNuZF9pcHJpbnRmKGJ1ZmZlciwiaW5k ZXggWyVkXSByZWZfY291bnQgWyVkXVxuIixzY2ItPmluZGV4LHNjYi0+cmVmX2NvdW50KTsg IAotCXVwKCZpbnMtPnNjYl9tdXRleCk7CisJdXAoJmNoaXAtPnNwb3NfbXV0ZXgpOwogfQog CiBzdGF0aWMgdm9pZCBfZHNwX3VubGlua19zY2IgKGNzNDZ4eF90ICpjaGlwLGRzcF9zY2Jf ZGVzY3JpcHRvcl90ICogc2NiKQpAQCAtMTgwLDExICsxODAsMTAgQEAKIHsKIAlkc3Bfc3Bv c19pbnN0YW5jZV90ICogaW5zID0gY2hpcC0+ZHNwX3Nwb3NfaW5zdGFuY2U7CiAKLQlkb3du KCZpbnMtPnNjYl9tdXRleCk7CiAJLyogY2hlY2sgaW50ZWdyZXR5ICovCiAJc25kX2Fzc2Vy dCAoIChzY2ItPmluZGV4ID49IDAgJiYgCiAJCSAgICAgIHNjYi0+aW5kZXggPCBpbnMtPm5z Y2IgJiYgCi0JCSAgICAgIChpbnMtPnNjYnMgKyBzY2ItPmluZGV4KSA9PSBzY2IpLCBnb3Rv IF9lbmQgKTsKKwkJICAgICAgKGlucy0+c2NicyArIHNjYi0+aW5kZXgpID09IHNjYiksIHJl dHVybiApOwogCiAjaWYgMAogCS8qIGNhbnQgcmVtb3ZlIGEgU0NCIHdpdGggY2hpbGRzIGJl Zm9yZSAKQEAgLTE5Nyw3ICsxOTYsNyBAQAogCV9kc3BfdW5saW5rX3NjYiAoY2hpcCxzY2Ip OwogICAKIAljczQ2eHhfZHNwX3Byb2NfZnJlZV9zY2JfZGVzYyhzY2IpOwotCXNuZF9hc3Nl cnQgKHNjYi0+c2NiX3N5bWJvbCAhPSBOVUxMLCBnb3RvIF9lbmQpOworCXNuZF9hc3NlcnQg KHNjYi0+c2NiX3N5bWJvbCAhPSBOVUxMLCByZXR1cm4gKTsKIAlyZW1vdmVfc3ltYm9sIChj aGlwLHNjYi0+c2NiX3N5bWJvbCk7CiAKIAlpbnMtPnNjYnNbc2NiLT5pbmRleF0uZGVsZXRl ZCA9IDE7CkBAIC0yMTksMTEgKzIxOCw2IEBACiAJCWlucy0+c2Nic1tpIC0gMV0uaW5kZXgg PSBpIC0gMTsKIAl9CiAjZW5kaWYKLQotI2lmZGVmIENPTkZJR19TTkRfREVCVUcKLSBfZW5k OgotI2VuZGlmCi0JdXAoJmlucy0+c2NiX211dGV4KTsKIH0KIAogCkBAIC0yNDgsNyArMjQy LDYgQEAKIAlzbmRfaW5mb19lbnRyeV90ICogZW50cnk7CiAJcHJvY19zY2JfaW5mb190ICog c2NiX2luZm87CiAKLQlkb3duKCZpbnMtPnNjYl9tdXRleCk7CiAJLyogcmVnaXN0ZXIgdG8g cHJvYyAqLwogCWlmIChpbnMtPnNuZF9jYXJkICE9IE5VTEwgJiYgaW5zLT5wcm9jX2RzcF9k aXIgIT0gTlVMTCAmJgogCSAgICBzY2ItPnByb2NfaW5mbyA9PSBOVUxMKSB7CkBAIC0yNzUs NyArMjY4LDYgQEAKIAogCQlzY2ItPnByb2NfaW5mbyA9IGVudHJ5OwogCX0KLQl1cCgmaW5z LT5zY2JfbXV0ZXgpOwogfQogCiBzdGF0aWMgZHNwX3NjYl9kZXNjcmlwdG9yX3QgKiAKQEAg LTI4OSw4ICsyODEsNyBAQAogICAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JZG93bigm aW5zLT5zY2JfbXV0ZXgpOwotCXNuZF9hc3NlcnQgKGlucy0+dGhlX251bGxfc2NiICE9IE5V TEwsZ290byBfZmFpbF9lbmQpOworCXNuZF9hc3NlcnQgKGlucy0+dGhlX251bGxfc2NiICE9 IE5VTEwscmV0dXJuIE5VTEwpOwogCiAJLyogZmlsbCB0aGUgZGF0YSB0aGF0IHdpbGwgYmUg d3JvdGVuIHRvIERTUCAqLwogCXNjYl9kYXRhW1NDQnN1Ykxpc3RQdHJdID0gCkBAIC0zMjEs MTcgKzMxMiwxNyBAQAogCQkvKiBsaW5rIHRvICBwYXJlbnQgU0NCICovCiAJCWlmIChzY2Jf Y2hpbGRfdHlwZSA9PSBTQ0JfT05fUEFSRU5UX05FWFRfU0NCKSB7CiAJCQlzbmRfYXNzZXJ0 ICggKHNjYi0+cGFyZW50X3NjYl9wdHItPm5leHRfc2NiX3B0ciA9PSBpbnMtPnRoZV9udWxs X3NjYiksCi0JCQkJICAgICBnb3RvIF9mYWlsX2VuZCk7CisJCQkJICAgICByZXR1cm4gTlVM TCk7CiAKIAkJCXNjYi0+cGFyZW50X3NjYl9wdHItPm5leHRfc2NiX3B0ciA9IHNjYjsKIAog CQl9IGVsc2UgaWYgKHNjYl9jaGlsZF90eXBlID09IFNDQl9PTl9QQVJFTlRfU1VCTElTVF9T Q0IpIHsKIAkJCXNuZF9hc3NlcnQgKCAoc2NiLT5wYXJlbnRfc2NiX3B0ci0+c3ViX2xpc3Rf cHRyID09IGlucy0+dGhlX251bGxfc2NiKSwKLQkJCQkgICAgIGdvdG8gX2ZhaWxfZW5kKTsK KwkJCQkgICAgIHJldHVybiBOVUxMKTsKIAogCQkJc2NiLT5wYXJlbnRfc2NiX3B0ci0+c3Vi X2xpc3RfcHRyID0gc2NiOwogCQl9IGVsc2UgewotCQkJc25kX2Fzc2VydCAoMCxnb3RvIF9m YWlsX2VuZCk7CisJCQlzbmRfYXNzZXJ0ICgwLHJldHVybiBOVUxMKTsKIAkJfQogCiAJCXNw aW5fbG9ja19pcnFzYXZlKCZjaGlwLT5yZWdfbG9jaywgZmxhZ3MpOwpAQCAtMzQ1LDE3ICsz MzYsOSBAQAogCX0KIAogCi0JdXAoJmlucy0+c2NiX211dGV4KTsKLQogCWNzNDZ4eF9kc3Bf cHJvY19yZWdpc3Rlcl9zY2JfZGVzYyAoY2hpcCxzY2IpOwogCiAJcmV0dXJuIHNjYjsKLSNp ZmRlZiBDT05GSUdfU05EX0RFQlVHCi0gX2ZhaWxfZW5kOgotCi0JdXAoJmlucy0+c2NiX211 dGV4KTsKLQlyZXR1cm4gTlVMTDsKLSNlbmRpZgogfQogCiBkc3Bfc2NiX2Rlc2NyaXB0b3Jf dCAqIApAQCAtOTE0LDYgKzg5Nyw3IEBACiAJCS8qIFRoZXJlIGlzIG5vIGNvcnJlY3QgaW5p dGlhbCB2YWx1ZSwgaXQgd2lsbCBkZXBlbmQgdXBvbiB0aGUgZGV0ZWN0ZWQKIAkJICAgcmF0 ZSBldGMgICovCiAJCTB4MTgwMDAwMDAsICAgICAgICAgCisKIAkJLyogTXV0ZSBzdHJlYW0g Ki8KIAkJMHg4MDAwLDB4ODAwMCwgICAgICAgCiAJCTB4ZmZmZiwweGZmZmYKQEAgLTExMTYs OCArMTEwMCw2IEBACiAJaW50IGkscGNtX2luZGV4ID0gLTEsIGluc2VydF9wb2ludCwgc3Jj X2luZGV4ID0gLTE7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWRvd24oJmlucy0+cGNt X211dGV4KTsgCi0KIAkvKiBkZWZhdWx0IHNhbXBsZSByYXRlIGlzIDQ0MTAwICovCiAJaWYg KCFzYW1wbGVfcmF0ZSkgc2FtcGxlX3JhdGUgPSA0NDEwMDsKIApAQCAtMTE0Miw3ICsxMTI0 LDcgQEAKIAogCWlmIChwY21faW5kZXggPT0gLTEpIHsKIAkJc25kX3ByaW50ayAoS0VSTl9F UlIgImRzcF9zcG9zOiBubyBmcmVlIFBDTSBjaGFubmVsXG4iKTsKLQkJZ290byBfZW5kOwor CQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlpZiAoc3JjX3NjYiA9PSBOVUxMKSB7CkBAIC0xMTUw LDcgKzExMzIsNyBAQAogCiAJCWlmIChpbnMtPm5zcmNfc2NiID49IERTUF9NQVhfU1JDX05S KSB7CiAJCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJkc3Bfc3BvczogdG8gbWFueSBTUkMgaW5z dGFuY2VzXG4hIik7Ci0JCQlnb3RvIF9lbmQ7CisJCQlyZXR1cm4gTlVMTDsKIAkJfQogCiAJ CS8qIGZpbmQgYSBmcmVlIHNsb3QgKi8KQEAgLTExNjEsNyArMTE0Myw3IEBACiAJCQkJYnJl YWs7CiAJCQl9CiAJCX0KLQkJc25kX2Fzc2VydCAoc3JjX2luZGV4ICE9IC0xLGdvdG8gX2Vu ZCk7CisJCXNuZF9hc3NlcnQgKHNyY19pbmRleCAhPSAtMSxyZXR1cm4gTlVMTCk7CiAKIAkJ Lyogd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgU1JDIFNDQiAqLwogCQlpZiAoaW5zLT5tYXN0 ZXJfbWl4X3NjYi0+c3ViX2xpc3RfcHRyID09IGlucy0+dGhlX251bGxfc2NiKSB7CkBAIC0x MTg1LDcgKzExNjcsNyBAQAogCiAJCWlmICghc3JjX3NjYikgewogCQkJc25kX3ByaW50ayAo S0VSTl9FUlIgImRzcF9zcG9zOiBmYWlsZWQgdG8gY3JlYXRlIFNSQ3Rhc2tTQ0JcbiIpOwot CQkJZ290byBfZW5kOworCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAogCQljczQ2eHhfZHNwX3Nl dF9zcmNfc2FtcGxlX3JhdGUoY2hpcCxzcmNfc2NiLHNhbXBsZV9yYXRlKTsKQEAgLTEyMjgs NyArMTIxMCw3IEBACiAKIAlpZiAoIXBjbV9zY2IpIHsKIAkJc25kX3ByaW50ayAoS0VSTl9F UlIgImRzcF9zcG9zOiBmYWlsZWQgdG8gY3JlYXRlIFBDTXJlYWRlclNDQlxuIik7Ci0JCWdv dG8gX2VuZDsKKwkJcmV0dXJuIE5VTEw7CiAJfQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNo aXAtPnJlZ19sb2NrLCBmbGFncyk7CkBAIC0xMjQzLDEyICsxMjI1LDcgQEAKIAlpbnMtPm5w Y21fY2hhbm5lbHMgKys7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+cmVnX2xv Y2ssIGZsYWdzKTsKIAotCXVwKCZpbnMtPnBjbV9tdXRleCk7ICAKIAlyZXR1cm4gKGlucy0+ cGNtX2NoYW5uZWxzICsgcGNtX2luZGV4KTsKLSBfZW5kOgotCi0JdXAoJmlucy0+cGNtX211 dGV4KTsKLQlyZXR1cm4gTlVMTDsKIH0KIAogdm9pZCBjczQ2eHhfZHNwX2Rlc3Ryb3lfcGNt X2NoYW5uZWwgKGNzNDZ4eF90ICogY2hpcCxwY21fY2hhbm5lbF9kZXNjcmlwdG9yX3QgKiBw Y21fY2hhbm5lbCkKQEAgLTEyNTYsMTEgKzEyMzMsOSBAQAogCWRzcF9zcG9zX2luc3RhbmNl X3QgKiBpbnMgPSBjaGlwLT5kc3Bfc3Bvc19pbnN0YW5jZTsKIAl1bnNpZ25lZCBsb25nIGZs YWdzOwogCi0JZG93bigmaW5zLT5wY21fbXV0ZXgpOwotICAKLQlzbmRfYXNzZXJ0KHBjbV9j aGFubmVsLT5hY3RpdmUsZ290byBfZW5kKTsKLQlzbmRfYXNzZXJ0KGlucy0+bnBjbV9jaGFu bmVscyA+IDAsZ290byBfZW5kKTsKLQlzbmRfYXNzZXJ0KHBjbV9jaGFubmVsLT5zcmNfc2Ni LT5yZWZfY291bnQgPiAwLGdvdG8gX2VuZCk7CisJc25kX2Fzc2VydChwY21fY2hhbm5lbC0+ YWN0aXZlLCByZXR1cm4gKTsKKwlzbmRfYXNzZXJ0KGlucy0+bnBjbV9jaGFubmVscyA+IDAs IHJldHVybiApOworCXNuZF9hc3NlcnQocGNtX2NoYW5uZWwtPnNyY19zY2ItPnJlZl9jb3Vu dCA+IDAsIHJldHVybiApOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPnJlZ19sb2Nr LCBmbGFncyk7CiAJcGNtX2NoYW5uZWwtPnVubGlua2VkID0gMTsKQEAgLTEyNzYsMTggKzEy NTEsMTEgQEAKIAkJY3M0Nnh4X2RzcF9yZW1vdmVfc2NiKGNoaXAscGNtX2NoYW5uZWwtPnNy Y19zY2IpOwogCiAJCXNuZF9hc3NlcnQgKHBjbV9jaGFubmVsLT5zcmNfc2xvdCA+PSAwICYm IHBjbV9jaGFubmVsLT5zcmNfc2xvdCA8PSBEU1BfTUFYX1NSQ19OUiwKLQkJCSAgICBnb3Rv IF9lbmQpOworCQkJICAgIHJldHVybiApOwogCiAJCWlucy0+c3JjX3NjYl9zbG90c1twY21f Y2hhbm5lbC0+c3JjX3Nsb3RdID0gMDsKIAkJaW5zLT5uc3JjX3NjYiAtLTsKIAl9Ci0KLQot I2lmZGVmIENPTkZJR19TTkRfREVCVUcKLSBfZW5kOgotI2VuZGlmCi0KLQl1cCgmaW5zLT5w Y21fbXV0ZXgpOwogfQogCiBpbnQgY3M0Nnh4X2RzcF9wY21fdW5saW5rIChjczQ2eHhfdCAq IGNoaXAscGNtX2NoYW5uZWxfZGVzY3JpcHRvcl90ICogcGNtX2NoYW5uZWwpCkBAIC0xMjk1 LDE0ICsxMjYzLDExIEBACiAJZHNwX3Nwb3NfaW5zdGFuY2VfdCAqIGlucyA9IGNoaXAtPmRz cF9zcG9zX2luc3RhbmNlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlkb3duKCZpbnMt PnBjbV9tdXRleCk7Ci0JZG93bigmaW5zLT5zY2JfbXV0ZXgpOwotCi0Jc25kX2Fzc2VydChw Y21fY2hhbm5lbC0+YWN0aXZlLGdvdG8gX2VuZCk7Ci0Jc25kX2Fzc2VydChpbnMtPm5wY21f Y2hhbm5lbHMgPiAwLGdvdG8gX2VuZCk7CisJc25kX2Fzc2VydChwY21fY2hhbm5lbC0+YWN0 aXZlLHJldHVybiAtRUlPKTsKKwlzbmRfYXNzZXJ0KGlucy0+bnBjbV9jaGFubmVscyA+IDAs cmV0dXJuIC1FSU8pOwogCiAJaWYgKHBjbV9jaGFubmVsLT51bmxpbmtlZCkKLQkJZ290byBf ZW5kOworCQlyZXR1cm4gLUVJTzsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZjaGlwLT5yZWdf bG9jaywgZmxhZ3MpOwogCXBjbV9jaGFubmVsLT51bmxpbmtlZCA9IDE7CkBAIC0xMzEwLDEw ICsxMjc1LDYgQEAKIAogCV9kc3BfdW5saW5rX3NjYiAoY2hpcCxwY21fY2hhbm5lbC0+cGNt X3JlYWRlcl9zY2IpOwogCi0gX2VuZDoKLQl1cCgmaW5zLT5zY2JfbXV0ZXgpOwotCXVwKCZp bnMtPnBjbV9tdXRleCk7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtMTMyNCwxMSArMTI4NSw4 IEBACiAJZHNwX3NjYl9kZXNjcmlwdG9yX3QgKiBzcmNfc2NiID0gcGNtX2NoYW5uZWwtPnNy Y19zY2I7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWRvd24oJmlucy0+cGNtX211dGV4 KTsKLQlkb3duKCZpbnMtPnNjYl9tdXRleCk7Ci0KIAlpZiAocGNtX2NoYW5uZWwtPnVubGlu a2VkID09IDApCi0JCWdvdG8gX2VuZDsKKwkJcmV0dXJuIC1FSU87CiAKIAlpZiAoc3JjX3Nj Yi0+c3ViX2xpc3RfcHRyID09IGlucy0+dGhlX251bGxfc2NiKSB7CiAJCXBhcmVudF9zY2Ig PSBzcmNfc2NiOwpAQCAtMTM1MSwxMyArMTMwOSwxMCBAQAogCXBjbV9jaGFubmVsLT51bmxp bmtlZCA9IDA7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+cmVnX2xvY2ssIGZs YWdzKTsKIAotIF9lbmQ6Ci0JdXAoJmlucy0+c2NiX211dGV4KTsKLQl1cCgmaW5zLT5wY21f bXV0ZXgpOwotCiAJcmV0dXJuIDA7CiB9CiAKKwogI2RlZmluZSBHT0ZfUEVSX1NFQyAyMDAK ICAgCiB2b2lkIGNzNDZ4eF9kc3Bfc2V0X3NyY19zYW1wbGVfcmF0ZShjczQ2eHhfdCAqY2hp cCxkc3Bfc2NiX2Rlc2NyaXB0b3JfdCAqIHNyYywgdTMyIHJhdGUpCkBAIC0xNDE0LDk3ICsx MzY5LDcwIEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+cmVnX2xvY2ssIGZs YWdzKTsKIH0KIAotZHNwX3NjYl9kZXNjcmlwdG9yX3QgKgotY3M0Nnh4X2FkZF9yZWNvcmRf c291cmNlIChjczQ2eHhfdCAqY2hpcCxkc3Bfc2NiX2Rlc2NyaXB0b3JfdCAqIHNvdXJjZSwK LQkJCSAgdTE2IGFkZHIsY2hhciAqIHNjYl9uYW1lKQoteworZHNwX3NjYl9kZXNjcmlwdG9y X3QgKiBjczQ2eHhfYWRkX3JlY29yZF9zb3VyY2UgKGNzNDZ4eF90ICpjaGlwLGRzcF9zY2Jf ZGVzY3JpcHRvcl90ICogc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHUxNiBhZGRyLGNoYXIgKiBzY2JfbmFtZSkgewogICAJZHNw X3Nwb3NfaW5zdGFuY2VfdCAqIGlucyA9IGNoaXAtPmRzcF9zcG9zX2luc3RhbmNlOwotCWRz cF9zY2JfZGVzY3JpcHRvcl90ICogcGFyZW50OwotCWRzcF9zY2JfZGVzY3JpcHRvcl90ICog cGNtX2lucHV0OwotCWludCBpbnNlcnRfcG9pbnQ7Ci0KLQlzbmRfYXNzZXJ0IChpbnMtPnJl Y29yZF9taXhlcl9zY2IgIT0gTlVMTCxyZXR1cm4gTlVMTCk7Ci0KLQlpZiAoaW5zLT5yZWNv cmRfbWl4ZXJfc2NiLT5zdWJfbGlzdF9wdHIgIT0gaW5zLT50aGVfbnVsbF9zY2IpIHsKLQkJ cGFyZW50ID0gZmluZF9uZXh0X2ZyZWVfc2NiIChjaGlwLGlucy0+cmVjb3JkX21peGVyX3Nj Yi0+c3ViX2xpc3RfcHRyKTsKLQkJaW5zZXJ0X3BvaW50ID0gU0NCX09OX1BBUkVOVF9ORVhU X1NDQjsKLQl9IGVsc2UgewotCQlwYXJlbnQgPSBpbnMtPnJlY29yZF9taXhlcl9zY2I7Ci0J CWluc2VydF9wb2ludCA9IFNDQl9PTl9QQVJFTlRfU1VCTElTVF9TQ0I7Ci0JfQorICAgIGRz cF9zY2JfZGVzY3JpcHRvcl90ICogcGFyZW50OworICAgIGRzcF9zY2JfZGVzY3JpcHRvcl90 ICogcGNtX2lucHV0OworICAgIGludCBpbnNlcnRfcG9pbnQ7CisKKyAgICBzbmRfYXNzZXJ0 IChpbnMtPnJlY29yZF9taXhlcl9zY2IgIT0gTlVMTCxyZXR1cm4gTlVMTCk7CisKKyAgICBp ZiAoaW5zLT5yZWNvcmRfbWl4ZXJfc2NiLT5zdWJfbGlzdF9wdHIgIT0gaW5zLT50aGVfbnVs bF9zY2IpIHsKKyAgICAgIHBhcmVudCA9IGZpbmRfbmV4dF9mcmVlX3NjYiAoY2hpcCxpbnMt PnJlY29yZF9taXhlcl9zY2ItPnN1Yl9saXN0X3B0cik7CisgICAgICBpbnNlcnRfcG9pbnQg PSBTQ0JfT05fUEFSRU5UX05FWFRfU0NCOworICAgIH0gZWxzZSB7CisgICAgICBwYXJlbnQg PSBpbnMtPnJlY29yZF9taXhlcl9zY2I7CisgICAgICBpbnNlcnRfcG9pbnQgPSBTQ0JfT05f UEFSRU5UX1NVQkxJU1RfU0NCOworICAgIH0KIAogCXBjbV9pbnB1dCA9IGNzNDZ4eF9kc3Bf Y3JlYXRlX3BjbV9zZXJpYWxfaW5wdXRfc2NiKGNoaXAsc2NiX25hbWUsYWRkciwKLQkJCQkJ CQkgICBzb3VyY2UsIHBhcmVudCwKLQkJCQkJCQkgICBpbnNlcnRfcG9pbnQpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJj ZSwgcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc2VydF9wb2ludCk7CiAKLQlyZXR1cm4gcGNtX2lucHV0OworICAg IHJldHVybiBwY21faW5wdXQ7CiB9CiAKIGludCBjczQ2eHhfc3JjX3VubGluayhjczQ2eHhf dCAqY2hpcCxkc3Bfc2NiX2Rlc2NyaXB0b3JfdCAqIHNyYykKIHsKLQlkc3Bfc3Bvc19pbnN0 YW5jZV90ICogaW5zID0gY2hpcC0+ZHNwX3Nwb3NfaW5zdGFuY2U7Ci0JZG93bigmaW5zLT5w Y21fbXV0ZXgpOwotCWRvd24oJmlucy0+c2NiX211dGV4KTsKLQotCXNuZF9hc3NlcnQgKHNy Yy0+cGFyZW50X3NjYl9wdHIgIT0gTlVMTCxnb3RvIF9mYWlsX2VuZCk7Ci0KLQkvKiBtdXRl IFNDQiAqLwotCXNuZF9jczQ2eHhfcG9rZShjaGlwLCAoc3JjLT5hZGRyZXNzICsgMHhFKSA8 PCAyLCAweGZmZmZmZmZmKTsKLQotCV9kc3BfdW5saW5rX3NjYiAoY2hpcCxzcmMpOworICBz bmRfYXNzZXJ0IChzcmMtPnBhcmVudF9zY2JfcHRyICE9IE5VTEwsICByZXR1cm4gLUVJTlZB TCApOwogCi0JdXAoJmlucy0+c2NiX211dGV4KTsKLQl1cCgmaW5zLT5wY21fbXV0ZXgpOwor ICAvKiBtdXRlIFNDQiAqLworICBzbmRfY3M0Nnh4X3Bva2UoY2hpcCwgKHNyYy0+YWRkcmVz cyArIDB4RSkgPDwgMiwgMHhmZmZmZmZmZik7CiAKLQlyZXR1cm4gMDsKLQotIF9mYWlsX2Vu ZDoKLQl1cCgmaW5zLT5zY2JfbXV0ZXgpOwotCXVwKCZpbnMtPnBjbV9tdXRleCk7CisgIF9k c3BfdW5saW5rX3NjYiAoY2hpcCxzcmMpOwogCi0JcmV0dXJuIC1FSU5WQUw7CisgIHJldHVy biAwOwogfQogCiBpbnQgY3M0Nnh4X3NyY19saW5rKGNzNDZ4eF90ICpjaGlwLGRzcF9zY2Jf ZGVzY3JpcHRvcl90ICogc3JjKQogewotCWRzcF9zcG9zX2luc3RhbmNlX3QgKiBpbnMgPSBj aGlwLT5kc3Bfc3Bvc19pbnN0YW5jZTsKLQlkc3Bfc2NiX2Rlc2NyaXB0b3JfdCAqIHBhcmVu dF9zY2I7Ci0JdW5zaWduZWQgaW50IGZsYWdzOwotCi0JZG93bigmaW5zLT5wY21fbXV0ZXgp OwotCWRvd24oJmlucy0+c2NiX211dGV4KTsKLQotCXNuZF9hc3NlcnQgKHNyYy0+cGFyZW50 X3NjYl9wdHIgPT0gTlVMTCxnb3RvIF9mYWlsX2VuZCk7Ci0Jc25kX2Fzc2VydChpbnMtPm1h c3Rlcl9taXhfc2NiICE9TlVMTCxnb3RvIF9mYWlsX2VuZCk7Ci0KLQlpZiAoaW5zLT5tYXN0 ZXJfbWl4X3NjYi0+c3ViX2xpc3RfcHRyICE9IGlucy0+dGhlX251bGxfc2NiKSB7Ci0JCXBh cmVudF9zY2IgPSBmaW5kX25leHRfZnJlZV9zY2IgKGNoaXAsaW5zLT5tYXN0ZXJfbWl4X3Nj Yi0+c3ViX2xpc3RfcHRyKTsKLQkJcGFyZW50X3NjYi0+bmV4dF9zY2JfcHRyID0gc3JjOwot CX0gZWxzZSB7Ci0JCXBhcmVudF9zY2IgPSBpbnMtPm1hc3Rlcl9taXhfc2NiOwotCQlwYXJl bnRfc2NiLT5zdWJfbGlzdF9wdHIgPSBzcmM7Ci0JfQotCi0Jc3JjLT5wYXJlbnRfc2NiX3B0 ciA9IHBhcmVudF9zY2I7Ci0KLQkvKiB1cGRhdGUgZW50cnkgaW4gRFNQIFJBTSAqLwotCXNw aW5fbG9ja19pcnFzYXZlKCZjaGlwLT5yZWdfbG9jaywgZmxhZ3MpOwotCXNuZF9jczQ2eHhf cG9rZShjaGlwLAotCQkJKHBhcmVudF9zY2ItPmFkZHJlc3MgKyBTQ0JzdWJMaXN0UHRyKSA8 PCAyLAotCQkJKHBhcmVudF9zY2ItPnN1Yl9saXN0X3B0ci0+YWRkcmVzcyA8PCAweDEwKSB8 Ci0JCQkocGFyZW50X3NjYi0+bmV4dF9zY2JfcHRyLT5hZGRyZXNzKSk7CisgIGRzcF9zcG9z X2luc3RhbmNlX3QgKiBpbnMgPSBjaGlwLT5kc3Bfc3Bvc19pbnN0YW5jZTsKKyAgZHNwX3Nj Yl9kZXNjcmlwdG9yX3QgKiBwYXJlbnRfc2NiOworICB1bnNpZ25lZCBpbnQgZmxhZ3M7CisK KyAgc25kX2Fzc2VydCAoc3JjLT5wYXJlbnRfc2NiX3B0ciA9PSBOVUxMLCAgIHJldHVybiAt RUlOVkFMICk7CisgIHNuZF9hc3NlcnQoaW5zLT5tYXN0ZXJfbWl4X3NjYiAhPU5VTEwsICAg cmV0dXJuIC1FSU5WQUwgKTsKKworICBpZiAoaW5zLT5tYXN0ZXJfbWl4X3NjYi0+c3ViX2xp c3RfcHRyICE9IGlucy0+dGhlX251bGxfc2NiKSB7CisgICAgcGFyZW50X3NjYiA9IGZpbmRf bmV4dF9mcmVlX3NjYiAoY2hpcCxpbnMtPm1hc3Rlcl9taXhfc2NiLT5zdWJfbGlzdF9wdHIp OworICAgIHBhcmVudF9zY2ItPm5leHRfc2NiX3B0ciA9IHNyYzsKKyAgfSBlbHNlIHsKKyAg ICBwYXJlbnRfc2NiID0gaW5zLT5tYXN0ZXJfbWl4X3NjYjsKKyAgICBwYXJlbnRfc2NiLT5z dWJfbGlzdF9wdHIgPSBzcmM7CisgIH0KKworICBzcmMtPnBhcmVudF9zY2JfcHRyID0gcGFy ZW50X3NjYjsKKworICAvKiB1cGRhdGUgZW50cnkgaW4gRFNQIFJBTSAqLworICBzcGluX2xv Y2tfaXJxc2F2ZSgmY2hpcC0+cmVnX2xvY2ssIGZsYWdzKTsKKyAgc25kX2NzNDZ4eF9wb2tl KGNoaXAsCisgICAgICAgICAgICAgICAgICAocGFyZW50X3NjYi0+YWRkcmVzcyArIFNDQnN1 Ykxpc3RQdHIpIDw8IDIsCisgICAgICAgICAgICAgICAgICAocGFyZW50X3NjYi0+c3ViX2xp c3RfcHRyLT5hZGRyZXNzIDw8IDB4MTApIHwKKyAgICAgICAgICAgICAgICAgIChwYXJlbnRf c2NiLT5uZXh0X3NjYl9wdHItPmFkZHJlc3MpKTsKICAgCiAKLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjaGlwLT5yZWdfbG9jaywgZmxhZ3MpOworICBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjaGlwLT5yZWdfbG9jaywgZmxhZ3MpOwogICAKLQl1cCgmaW5zLT5zY2JfbXV0ZXgp OwotCXVwKCZpbnMtPnBjbV9tdXRleCk7Ci0KLQlyZXR1cm4gMDsKLQotIF9mYWlsX2VuZDoK LQl1cCgmaW5zLT5zY2JfbXV0ZXgpOwotCXVwKCZpbnMtPnBjbV9tdXRleCk7Ci0gCi0JcmV0 dXJuIC1FSU5WQUw7CisgIHJldHVybiAwOwogfQo= --------------010103060304060507010707-- ------------------------------------------------------- This sf.net email is sponsored by: OSDN - Tired of that same old cell phone? Get a new here for FREE! https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390