From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IByu6-0007v9-NS for qemu-devel@nongnu.org; Fri, 20 Jul 2007 16:16:46 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IByu5-0007ux-FR for qemu-devel@nongnu.org; Fri, 20 Jul 2007 16:16:46 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IByu5-0007uu-9o for qemu-devel@nongnu.org; Fri, 20 Jul 2007 16:16:45 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IByu4-0000Po-7h for qemu-devel@nongnu.org; Fri, 20 Jul 2007 16:16:45 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1IByu3-0004Jz-00 for ; Fri, 20 Jul 2007 16:16:43 -0400 Received: from grayson.netsweng.com ([127.0.0.1]) by localhost (grayson.netsweng.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h6UehmE0LYz8 for ; Fri, 20 Jul 2007 16:16:27 -0400 (EDT) Received: from [71.31.88.35] (helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1IBytk-0004IN-00 for ; Fri, 20 Jul 2007 16:16:24 -0400 Date: Fri, 20 Jul 2007 16:16:00 -0400 (EDT) From: Stuart Anderson In-Reply-To: Message-ID: References: <4692A55D.5050102@bellard.org> <200707101338.44885.paul@codesourcery.com> <4693EFDC.3080604@bellard.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-1329163033-1184962560=:13035" Subject: [Qemu-devel] [PATCH] linux-user EFAULT implementation Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1463811327-1329163033-1184962560=:13035 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed > On Tue, 10 Jul 2007, Stuart Anderson wrote: > > Further comments would be appreciated. Having heard no further comments, I have continued on in the process of coverting things to use the copy_{to|from}_user() interfaces. The attached patch does well with the LTP test suite, and is currently happily building an armel Debian glibc package on a x86_64 host. There are still a few uses of the lock*() interfaces remaining, but considering the size of this patch already, I'd like to suggest that if this patch is acceptable, to commit this patch, and the rest will be sent in as smaller, easier to digest patches, probably one or two syscalls at a time. Stuart Stuart R. Anderson anderson@netsweng.com Network & Software Engineering http://www.netsweng.com/ 1024D/37A79149: 0791 D3B8 9A4C 2CDC A31F BD03 0A62 E534 37A7 9149 ---1463811327-1329163033-1184962560=:13035 Content-Type: TEXT/x-diff; charset=US-ASCII; name=06_efault.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: EFAULT implementation Content-Disposition: attachment; filename=06_efault.patch SW5kZXg6IHFlbXUvZXhlYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gcWVtdS5vcmlnL2V4ZWMuYwkyMDA3LTA3LTIwIDEzOjQzOjU4LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvZXhlYy5jCTIwMDctMDctMjAgMTM6NDg6 MjkuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTg2Miw2ICsxODYyLDI5IEBADQog ICAgIHNwaW5fdW5sb2NrKCZ0Yl9sb2NrKTsNCiB9DQogDQoraW50IHBhZ2Vf Y2hlY2tfcmFuZ2UodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcg bGVuLCBpbnQgZmxhZ3MpDQorew0KKyAgICBQYWdlRGVzYyAqcDsNCisgICAg dGFyZ2V0X3Vsb25nIGVuZDsNCisgICAgdGFyZ2V0X3Vsb25nIGFkZHI7DQor DQorICAgIGVuZCA9IFRBUkdFVF9QQUdFX0FMSUdOKHN0YXJ0K2xlbik7IC8q IG11c3QgZG8gYmVmb3JlIHdlIGxvb3NlIGJpdHMgaW4gdGhlIG5leHQgc3Rl cCAqLw0KKyAgICBzdGFydCA9IHN0YXJ0ICYgVEFSR0VUX1BBR0VfTUFTSzsN CisNCisgICAgaWYoIGVuZCA8IHN0YXJ0ICkgcmV0dXJuIC0xOyAgLyogd2Un dmUgd3JhcHBlZCBhcm91bmQgKi8NCisgICAgZm9yKGFkZHIgPSBzdGFydDsg YWRkciA8IGVuZDsgYWRkciArPSBUQVJHRVRfUEFHRV9TSVpFKSB7DQorICAg ICAgICBwID0gcGFnZV9maW5kKGFkZHIgPj4gVEFSR0VUX1BBR0VfQklUUyk7 DQorCWlmKCAhcCApIHJldHVybiAtMTsNCisJaWYoICEocC0+ZmxhZ3MgJiBQ QUdFX1ZBTElEKSApIHJldHVybiAtMTsNCisNCisgICAgICAgIGlmICghKHAt PmZsYWdzICYgUEFHRV9SRUFEKSAmJg0KKyAgICAgICAgICAgIChmbGFncyAm IFBBR0VfUkVBRCkgKSByZXR1cm4gLTE7DQorICAgICAgICBpZiAoIShwLT5m bGFncyAmIFBBR0VfV1JJVEUpICYmDQorICAgICAgICAgICAgKGZsYWdzICYg UEFHRV9XUklURSkgKSByZXR1cm4gLTE7DQorICAgIH0NCisgICAgcmV0dXJu IDA7DQorfQ0KKw0KIC8qIGNhbGxlZCBmcm9tIHNpZ25hbCBoYW5kbGVyOiBp bnZhbGlkYXRlIHRoZSBjb2RlIGFuZCB1bnByb3RlY3QgdGhlDQogICAgcGFn ZS4gUmV0dXJuIFRSVUUgaWYgdGhlIGZhdWx0IHdhcyBzdWNjZXNmdWxseSBo YW5kbGVkLiAqLw0KIGludCBwYWdlX3VucHJvdGVjdCh0YXJnZXRfdWxvbmcg YWRkcmVzcywgdW5zaWduZWQgbG9uZyBwYywgdm9pZCAqcHVjKQ0KSW5kZXg6 IHFlbXUvY3B1LWFsbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g cWVtdS5vcmlnL2NwdS1hbGwuaAkyMDA3LTA3LTIwIDEzOjQzOjU4LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvY3B1LWFsbC5oCTIwMDctMDctMjAgMTM6 NDg6MjkuMDAwMDAwMDAwIC0wNDAwDQpAQCAtNjkxLDYgKzY5MSw3IEBADQog aW50IHBhZ2VfZ2V0X2ZsYWdzKHRhcmdldF91bG9uZyBhZGRyZXNzKTsNCiB2 b2lkIHBhZ2Vfc2V0X2ZsYWdzKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0 X3Vsb25nIGVuZCwgaW50IGZsYWdzKTsNCiB2b2lkIHBhZ2VfdW5wcm90ZWN0 X3JhbmdlKHRhcmdldF91bG9uZyBkYXRhLCB0YXJnZXRfdWxvbmcgZGF0YV9z aXplKTsNCitpbnQgcGFnZV9jaGVja19yYW5nZSh0YXJnZXRfdWxvbmcgc3Rh cnQsIHRhcmdldF91bG9uZyBsZW4sIGludCBmbGFncyk7DQogDQogQ1BVU3Rh dGUgKmNwdV9jb3B5KENQVVN0YXRlICplbnYpOw0KIA0KSW5kZXg6IHFlbXUv bGludXgtdXNlci9zeXNjYWxsLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9zeXNjYWxsLmMJMjAwNy0wNy0y MCAxMzo0Mzo1OC4wMDAwMDAwMDAgLTA0MDANCisrKyBxZW11L2xpbnV4LXVz ZXIvc3lzY2FsbC5jCTIwMDctMDctMjAgMTU6Mzg6MTMuMDAwMDAwMDAwIC0w NDAwDQpAQCAtNDA0LDEyICs0MDQsMTAgQEANCiAjZW5kaWYNCiB9DQogDQot c3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3J1c2FnZSh0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGljIGlubGluZSBsb25nIGNv cHlfdG9fdXNlcl9ydXNhZ2Uoc3RydWN0IHRhcmdldF9ydXNhZ2UgKnRhcmdl dF9ydXNhZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgcnVzYWdlICpydXNhZ2UpDQogew0KLSAg ICBzdHJ1Y3QgdGFyZ2V0X3J1c2FnZSAqdGFyZ2V0X3J1c2FnZTsNCi0NCi0g ICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfcnVzYWdlLCB0YXJnZXRfYWRk ciwgMCk7DQorICAgIGlmKCBjb3B5X3RvX3VzZXIodGFyZ2V0X3J1c2FnZSxy dXNhZ2Usc2l6ZW9mKCp0YXJnZXRfcnVzYWdlKSkgKSByZXR1cm4gLTE7DQog ICAgIHRhcmdldF9ydXNhZ2UtPnJ1X3V0aW1lLnR2X3NlYyA9IHRzd2FwbChy dXNhZ2UtPnJ1X3V0aW1lLnR2X3NlYyk7DQogICAgIHRhcmdldF9ydXNhZ2Ut PnJ1X3V0aW1lLnR2X3VzZWMgPSB0c3dhcGwocnVzYWdlLT5ydV91dGltZS50 dl91c2VjKTsNCiAgICAgdGFyZ2V0X3J1c2FnZS0+cnVfc3RpbWUudHZfc2Vj ID0gdHN3YXBsKHJ1c2FnZS0+cnVfc3RpbWUudHZfc2VjKTsNCkBAIC00Mjgs MjkgKzQyNiwyOCBAQA0KICAgICB0YXJnZXRfcnVzYWdlLT5ydV9uc2lnbmFs cyA9IHRzd2FwbChydXNhZ2UtPnJ1X25zaWduYWxzKTsNCiAgICAgdGFyZ2V0 X3J1c2FnZS0+cnVfbnZjc3cgPSB0c3dhcGwocnVzYWdlLT5ydV9udmNzdyk7 DQogICAgIHRhcmdldF9ydXNhZ2UtPnJ1X25pdmNzdyA9IHRzd2FwbChydXNh Z2UtPnJ1X25pdmNzdyk7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfcnVzYWdlLCB0YXJnZXRfYWRkciwgMSk7DQorDQorICAgIHJldHVybiAw Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rf dGltZXZhbChzdHJ1Y3QgdGltZXZhbCAqdHYsDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyKQ0KK3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zyb21fdXNlcl90 aW1ldmFsKHN0cnVjdCB0aW1ldmFsICp0diwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWV2 YWwgKnRhcmdldF90dikNCiB7DQotICAgIHN0cnVjdCB0YXJnZXRfdGltZXZh bCAqdGFyZ2V0X3R2Ow0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdl dF90diwgdGFyZ2V0X2FkZHIsIDEpOw0KKyAgICBpZiggY29weV9mcm9tX3Vz ZXIodHYsdGFyZ2V0X3R2LHNpemVvZigqdGFyZ2V0X3R2KSkgKSByZXR1cm4g LTE7DQogICAgIHR2LT50dl9zZWMgPSB0c3dhcGwodGFyZ2V0X3R2LT50dl9z ZWMpOw0KICAgICB0di0+dHZfdXNlYyA9IHRzd2FwbCh0YXJnZXRfdHYtPnR2 X3VzZWMpOw0KLSAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3R2LCB0 YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCi1z dGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfdGltZXZhbCh0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGljIGlubGluZSBsb25nIGNv cHlfdG9fdXNlcl90aW1ldmFsKHN0cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFy Z2V0X3R2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0dikNCiB7DQotICAgIHN0 cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFyZ2V0X3R2Ow0KLQ0KLSAgICBsb2Nr X3VzZXJfc3RydWN0KHRhcmdldF90diwgdGFyZ2V0X2FkZHIsIDApOw0KKyAg ICBpZiggY29weV90b191c2VyKHRhcmdldF90dix0dixzaXplb2YoKnRhcmdl dF90dikpICkgcmV0dXJuIC0xOw0KICAgICB0YXJnZXRfdHYtPnR2X3NlYyA9 IHRzd2FwbCh0di0+dHZfc2VjKTsNCiAgICAgdGFyZ2V0X3R2LT50dl91c2Vj ID0gdHN3YXBsKHR2LT50dl91c2VjKTsNCi0gICAgdW5sb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF90diwgdGFyZ2V0X2FkZHIsIDEpOw0KKw0KKyAgICByZXR1 cm4gMDsNCiB9DQogDQogDQpAQCAtNDY2LDIxICs0NjMsMjEgQEANCiAgICAg aW50IG9rOw0KIA0KICAgICBpZiAocmZkX3ApIHsNCi0gICAgICAgIHRhcmdl dF9yZmRzID0gbG9ja191c2VyKHJmZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcp ICogbiwgMSk7DQorCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm dGFyZ2V0X3JmZHMscmZkX3Asc2l6ZW9mKHRhcmdldF9sb25nKSpuLDEsUEFH RV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgcmZkc19wdHIg PSB0YXJnZXRfdG9faG9zdF9mZHMoJnJmZHMsIHRhcmdldF9yZmRzLCBuKTsN CiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHRhcmdldF9yZmRzID0gTlVMTDsN CiAgICAgICAgIHJmZHNfcHRyID0gTlVMTDsNCiAgICAgfQ0KICAgICBpZiAo d2ZkX3ApIHsNCi0gICAgICAgIHRhcmdldF93ZmRzID0gbG9ja191c2VyKHdm ZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcpICogbiwgMSk7DQorCWlmKCBsb2Nr X2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3dmZHMsd2ZkX3Asc2l6 ZW9mKHRhcmdldF9sb25nKSpuLDEsUEFHRV9SRUFEKSApIHJldHVybiAtRUZB VUxUOw0KICAgICAgICAgd2Zkc19wdHIgPSB0YXJnZXRfdG9faG9zdF9mZHMo JndmZHMsIHRhcmdldF93ZmRzLCBuKTsNCiAgICAgfSBlbHNlIHsNCiAgICAg ICAgIHRhcmdldF93ZmRzID0gTlVMTDsNCiAgICAgICAgIHdmZHNfcHRyID0g TlVMTDsNCiAgICAgfQ0KICAgICBpZiAoZWZkX3ApIHsNCi0gICAgICAgIHRh cmdldF9lZmRzID0gbG9ja191c2VyKGVmZF9wLCBzaXplb2YodGFyZ2V0X2xv bmcpICogbiwgMSk7DQorCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVj dCgmdGFyZ2V0X2VmZHMsZWZkX3Asc2l6ZW9mKHRhcmdldF9sb25nKSpuLDEs UEFHRV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgZWZkc19w dHIgPSB0YXJnZXRfdG9faG9zdF9mZHMoJmVmZHMsIHRhcmdldF9lZmRzLCBu KTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHRhcmdldF9lZmRzID0gTlVM TDsNCkBAIC00ODgsNyArNDg1LDcgQEANCiAgICAgfQ0KICAgICAgICAgICAg IA0KICAgICBpZiAodGFyZ2V0X3R2KSB7DQotICAgICAgICB0YXJnZXRfdG9f aG9zdF90aW1ldmFsKCZ0diwgdGFyZ2V0X3R2KTsNCisgICAgICAgIGlmKCBj b3B5X2Zyb21fdXNlcl90aW1ldmFsKCZ0diwgKHN0cnVjdCB0YXJnZXRfdGlt ZXZhbCAqKXRhcmdldF90dikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg IHR2X3B0ciA9ICZ0djsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHR2X3B0 ciA9IE5VTEw7DQpAQCAtNTAyLDcgKzQ5OSw3IEBADQogICAgICAgICBob3N0 X3RvX3RhcmdldF9mZHModGFyZ2V0X2VmZHMsIGVmZHNfcHRyLCBuKTsNCiAN CiAgICAgICAgIGlmICh0YXJnZXRfdHYpIHsNCi0gICAgICAgICAgICBob3N0 X3RvX3RhcmdldF90aW1ldmFsKHRhcmdldF90diwgJnR2KTsNCisgICAgICAg ICAgICBpZiggY29weV90b191c2VyX3RpbWV2YWwoKHN0cnVjdCB0YXJnZXRf dGltZXZhbCAqKXRhcmdldF90diwgJnR2KSApIHJldHVybiAtRUZBVUxUOw0K ICAgICAgICAgfQ0KICAgICB9DQogICAgIGlmICh0YXJnZXRfcmZkcykNCkBA IC01MTUsMjggKzUxMiwyNCBAQA0KICAgICByZXR1cm4gcmV0Ow0KIH0NCiAN Ci1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIo c3RydWN0IHNvY2thZGRyICphZGRyLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIsDQorc3RhdGljIGlubGluZSBsb25nIGNvcHlfZnJvbV91c2VyX3NvY2th ZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zb2Nr YWRkciAqdGFyZ2V0X3NhZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgbGVuKQ0KIHsNCi0gICAg c3RydWN0IHRhcmdldF9zb2NrYWRkciAqdGFyZ2V0X3NhZGRyOw0KLQ0KLSAg ICB0YXJnZXRfc2FkZHIgPSBsb2NrX3VzZXIodGFyZ2V0X2FkZHIsIGxlbiwg MSk7DQotICAgIG1lbWNweShhZGRyLCB0YXJnZXRfc2FkZHIsIGxlbik7DQor ICAgIGlmKCBjb3B5X2Zyb21fdXNlcihhZGRyLHRhcmdldF9zYWRkcixsZW4p KSByZXR1cm4gLTE7DQogICAgIGFkZHItPnNhX2ZhbWlseSA9IHRzd2FwMTYo dGFyZ2V0X3NhZGRyLT5zYV9mYW1pbHkpOw0KLSAgICB1bmxvY2tfdXNlcih0 YXJnZXRfc2FkZHIsIHRhcmdldF9hZGRyLCAwKTsNCisNCisgICAgcmV0dXJu IDA7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3Rhcmdl dF9zb2NrYWRkcih0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGlj IGlubGluZSBsb25nIGNvcHlfdG9fdXNlcl9zb2NrYWRkcihzdHJ1Y3QgdGFy Z2V0X3NvY2thZGRyICp0YXJnZXRfc2FkZHIsDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAq YWRkciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc29ja2xlbl90IGxlbikNCiB7DQotICAgIHN0cnVjdCB0YXJnZXRf c29ja2FkZHIgKnRhcmdldF9zYWRkcjsNCi0NCi0gICAgdGFyZ2V0X3NhZGRy ID0gbG9ja191c2VyKHRhcmdldF9hZGRyLCBsZW4sIDApOw0KLSAgICBtZW1j cHkodGFyZ2V0X3NhZGRyLCBhZGRyLCBsZW4pOw0KKyAgICBpZiggY29weV90 b191c2VyKHRhcmdldF9zYWRkcixhZGRyLGxlbikgKSByZXR1cm4gLTE7DQog ICAgIHRhcmdldF9zYWRkci0+c2FfZmFtaWx5ID0gdHN3YXAxNihhZGRyLT5z YV9mYW1pbHkpOw0KLSAgICB1bmxvY2tfdXNlcih0YXJnZXRfc2FkZHIsIHRh cmdldF9hZGRyLCBsZW4pOw0KKw0KKyAgICByZXR1cm4gMDsNCiB9DQogDQog LyogPz8/IFNob3VsZCB0aGlzIGFsc28gc3dhcCBtc2doLT5uYW1lPyAgKi8N CkBAIC02MjgsNyArNjIxLDcgQEANCiAgICAgbXNnaC0+bXNnX2NvbnRyb2xs ZW4gPSB0c3dhcGwoc3BhY2UpOw0KIH0NCiANCi1zdGF0aWMgbG9uZyBkb19z ZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5hbWUs IA0KK3N0YXRpYyBsb25nIGRvX3NldHNvY2tvcHQoaW50IHNvY2tmZCwgaW50 IGxldmVsLCBpbnQgb3B0bmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyBvcHR2YWwsIHNvY2tsZW5fdCBvcHRsZW4pDQog ew0KICAgICBpbnQgdmFsLCByZXQ7DQpAQCAtNjM5LDYgKzYzMiw4IEBADQog ICAgICAgICBpZiAob3B0bGVuIDwgc2l6ZW9mKHVpbnQzMl90KSkNCiAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsNCiAgICAgICAgIA0KKwlpZiggIWFj Y2Vzc19vayhWRVJJRllfUkVBRCwgb3B0dmFsLCBvcHRsZW4pICkNCisgICAg ICAgICAgICByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIHZhbCA9IHRnZXQz MihvcHR2YWwpOw0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNldHNvY2tv cHQoc29ja2ZkLCBsZXZlbCwgb3B0bmFtZSwgJnZhbCwgc2l6ZW9mKHZhbCkp KTsNCiAgICAgICAgIGJyZWFrOw0KQEAgLTY2MCw2ICs2NTUsOCBAQA0KICAg ICAgICAgY2FzZSBJUF9NVUxUSUNBU1RfVFRMOg0KICAgICAgICAgY2FzZSBJ UF9NVUxUSUNBU1RfTE9PUDoNCiAgICAgICAgICAgICB2YWwgPSAwOw0KKwkg ICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIG9wdHZhbCwgb3B0bGVu KSApDQorICAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KICAgICAg ICAgICAgIGlmIChvcHRsZW4gPj0gc2l6ZW9mKHVpbnQzMl90KSkgew0KICAg ICAgICAgICAgICAgICB2YWwgPSB0Z2V0MzIob3B0dmFsKTsNCiAgICAgICAg ICAgICB9IGVsc2UgaWYgKG9wdGxlbiA+PSAxKSB7DQpAQCAtNjY4LDcgKzY2 NSw3IEBADQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNldHNvY2tv cHQoc29ja2ZkLCBsZXZlbCwgb3B0bmFtZSwgJnZhbCwgc2l6ZW9mKHZhbCkp KTsNCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgIGRlZmF1bHQ6DQot ICAgICAgICAgICAgZ290byB1bmltcGxlbWVudGVkOw0KKwkgICAgIGdvdG8g dW5pbXBsZW1lbnRlZDsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0K ICAgICBjYXNlIFRBUkdFVF9TT0xfU09DS0VUOg0KQEAgLTczMiwyNCArNzI5 LDI2IEBADQogCQlicmVhazsNCiAgICAgICAgICAgICBicmVhazsNCiAgICAg ICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgZ290byB1bmltcGxlbWVudGVk Ow0KKwkgICAgIGdvdG8gdW5pbXBsZW1lbnRlZDsNCiAgICAgICAgIH0NCiAJ aWYgKG9wdGxlbiA8IHNpemVvZih1aW50MzJfdCkpDQotCXJldHVybiAtRUlO VkFMOw0KKwkgICAgcmV0dXJuIC1FSU5WQUw7DQorCWlmKCAhYWNjZXNzX29r KFZFUklGWV9SRUFELCBvcHR2YWwsIG9wdGxlbikgKQ0KKyAgICAgICAgICAg IHJldHVybiAtRUZBVUxUOw0KIA0KIAl2YWwgPSB0Z2V0MzIob3B0dmFsKTsN CiAJcmV0ID0gZ2V0X2Vycm5vKHNldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09D S0VULCBvcHRuYW1lLCAmdmFsLCBzaXplb2YodmFsKSkpOw0KICAgICAgICAg YnJlYWs7DQogICAgIGRlZmF1bHQ6DQogICAgIHVuaW1wbGVtZW50ZWQ6DQot ICAgICAgICBnZW11X2xvZygiVW5zdXBwb3J0ZWQgc2V0c29ja29wdCBsZXZl bD0lZCBvcHRuYW1lPSVkIFxuIiwgbGV2ZWwsIG9wdG5hbWUpOw0KLSAgICAg ICAgcmV0ID0gLUVOT1NZUzsNCisgICAgICAgIGdlbXVfbG9nKCJVbnN1cHBv cnRlZCBzZXRzb2Nrb3B0IGxldmVsPSVkIG9wdG5hbWU9JWRcbiIsIGxldmVs LCBvcHRuYW1lKTsNCisgICAgICAgIHJldCA9IC1FTk9QUk9UT09QVDsNCiAg ICAgfQ0KICAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMgbG9uZyBk b19nZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5h bWUsIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25n IG9wdHZhbCwgdGFyZ2V0X3Vsb25nIG9wdGxlbikNCitzdGF0aWMgbG9uZyBk b19nZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5h bWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcg b3B0dmFsLCBzb2NrbGVuX3QgKm9wdGxlbikNCiB7DQogICAgIGludCBsZW4s IGx2LCB2YWwsIHJldDsNCiANCkBAIC03NzEsNyArNzcwLDEwIEBADQogICAg IGNhc2UgU09MX1RDUDoNCiAgICAgICAgIC8qIFRDUCBvcHRpb25zIGFsbCB0 YWtlIGFuICdpbnQnIHZhbHVlLiAgKi8NCiAgICAgaW50X2Nhc2U6DQotICAg ICAgICBsZW4gPSB0Z2V0MzIob3B0bGVuKTsNCisJaWYoIGdldF91c2VyKGxl bixvcHRsZW4pICkNCisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCisJ aWYoICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCBvcHR2YWwsbGVuKSApDQor ICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICBpZiAobGVu IDwgMCkNCiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCiAgICAgICAg IGx2ID0gc2l6ZW9mKGludCk7DQpAQCAtODA0LDcgKzgwNiwxMCBAQA0KICNl bmRpZg0KICAgICAgICAgY2FzZSBJUF9NVUxUSUNBU1RfVFRMOg0KICAgICAg ICAgY2FzZSBJUF9NVUxUSUNBU1RfTE9PUDoNCi0gICAgICAgICAgICBsZW4g PSB0Z2V0MzIob3B0bGVuKTsNCisJICAgIGlmKCBnZXRfdXNlcihsZW4sb3B0 bGVuKSApDQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKwlp ZiggIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIG9wdHZhbCxsZW4pICkNCisg ICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICBpZiAo bGVuIDwgMCkNCiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQog ICAgICAgICAgICAgbHYgPSBzaXplb2YoaW50KTsNCkBAIC04MjMsMTQgKzgy OCwxNSBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsN CiAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgZ290byB1bmltcGxl bWVudGVkOw0KKyAgICAgICAgICAgIHJldCA9IC1FTk9QUk9UT09QVDsNCisg ICAgICAgICAgICBicmVhazsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFr Ow0KICAgICBkZWZhdWx0Og0KICAgICB1bmltcGxlbWVudGVkOg0KICAgICAg ICAgZ2VtdV9sb2coImdldHNvY2tvcHQgbGV2ZWw9JWQgb3B0bmFtZT0lZCBu b3QgeWV0IHN1cHBvcnRlZFxuIiwNCiAgICAgICAgICAgICAgICAgIGxldmVs LCBvcHRuYW1lKTsNCi0gICAgICAgIHJldCA9IC1FTk9TWVM7DQorICAgICAg ICByZXQgPSAtRU9QTk9UU1VQUDsNCiAgICAgICAgIGJyZWFrOw0KICAgICB9 DQogICAgIHJldHVybiByZXQ7DQpAQCAtODk5LDcgKzkwNSw3IEBADQogew0K ICAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KICAgICANCi0g ICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIs IGFkZHJsZW4pOw0KKyAgICBpZiggY29weV9mcm9tX3VzZXJfc29ja2FkZHIo YWRkciwgKHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKil0YXJnZXRfYWRkciwg YWRkcmxlbikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgcmV0dXJuIGdldF9l cnJubyhiaW5kKHNvY2tmZCwgYWRkciwgYWRkcmxlbikpOw0KIH0NCiANCkBA IC05MDgsNyArOTE0LDcgQEANCiB7DQogICAgIHZvaWQgKmFkZHIgPSBhbGxv Y2EoYWRkcmxlbik7DQogICAgIA0KLSAgICB0YXJnZXRfdG9faG9zdF9zb2Nr YWRkcihhZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxlbik7DQorICAgIGlmKCBj b3B5X2Zyb21fdXNlcl9zb2NrYWRkcihhZGRyLCAoc3RydWN0IHRhcmdldF9z b2NrYWRkciAqKXRhcmdldF9hZGRyLCBhZGRybGVuKSApIHJldHVybiAtRUZB VUxUOw0KICAgICByZXR1cm4gZ2V0X2Vycm5vKGNvbm5lY3Qoc29ja2ZkLCBh ZGRyLCBhZGRybGVuKSk7DQogfQ0KIA0KQEAgLTkyNiw4ICs5MzIsOCBAQA0K ICAgICBpZiAobXNncC0+bXNnX25hbWUpIHsNCiAgICAgICAgIG1zZy5tc2df bmFtZWxlbiA9IHRzd2FwMzIobXNncC0+bXNnX25hbWVsZW4pOw0KICAgICAg ICAgbXNnLm1zZ19uYW1lID0gYWxsb2NhKG1zZy5tc2dfbmFtZWxlbik7DQot ICAgICAgICB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihtc2cubXNnX25hbWUs IHRzd2FwbChtc2dwLT5tc2dfbmFtZSksDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtc2cubXNnX25hbWVsZW4pOw0KKyAgICAgICAgaWYo IGNvcHlfZnJvbV91c2VyX3NvY2thZGRyKG1zZy5tc2dfbmFtZSwgKHN0cnVj dCB0YXJnZXRfc29ja2FkZHIgKiltc2dwLT5tc2dfbmFtZSwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5tc2dfbmFtZWxlbikgKSBy ZXR1cm4gLUVGQVVMVDsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIG1zZy5t c2dfbmFtZSA9IE5VTEw7DQogICAgICAgICBtc2cubXNnX25hbWVsZW4gPSAw Ow0KQEAgLTk1Niw0NiArOTYyLDU1IEBADQogfQ0KIA0KIHN0YXRpYyBsb25n IGRvX2FjY2VwdChpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwN Ci0gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRybGVuKQ0KKyAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKnRh cmdldF9hZGRybGVuKQ0KIHsNCi0gICAgc29ja2xlbl90IGFkZHJsZW4gPSB0 Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0KLSAgICB2b2lkICphZGRyID0gYWxs b2NhKGFkZHJsZW4pOw0KKyAgICBzb2NrbGVuX3QgYWRkcmxlbjsNCisgICAg dm9pZCAqYWRkcjsNCiAgICAgbG9uZyByZXQ7DQogDQorICAgIGlmKCBnZXRf dXNlcihhZGRybGVuLHRhcmdldF9hZGRybGVuKSApIHJldHVybiAtRUlOVkFM Ow0KKyAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KKw0KICAgICByZXQg PSBnZXRfZXJybm8oYWNjZXB0KGZkLCBhZGRyLCAmYWRkcmxlbikpOw0KICAg ICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgIGhvc3RfdG9fdGFy Z2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisg ICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfc29ja2FkZHIoKHN0cnVjdCB0YXJn ZXRfc29ja2FkZHIgKil0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbikgKSBy ZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIHRwdXQzMih0YXJnZXRfYWRkcmxl biwgYWRkcmxlbik7DQogICAgIH0NCiAgICAgcmV0dXJuIHJldDsNCiB9DQog DQogc3RhdGljIGxvbmcgZG9fZ2V0cGVlcm5hbWUoaW50IGZkLCB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHIsDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQ0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqdGFyZ2V0X2FkZHJsZW4pDQog ew0KLSAgICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRk cmxlbik7DQotICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxlbik7DQor ICAgIHNvY2tsZW5fdCBhZGRybGVuOw0KKyAgICB2b2lkICphZGRyOw0KICAg ICBsb25nIHJldDsNCiANCisgICAgaWYoIGdldF91c2VyKGFkZHJsZW4sdGFy Z2V0X2FkZHJsZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgIGFkZHIgPSBh bGxvY2EoYWRkcmxlbik7DQorDQogICAgIHJldCA9IGdldF9lcnJubyhnZXRw ZWVybmFtZShmZCwgYWRkciwgJmFkZHJsZW4pKTsNCiAgICAgaWYgKCFpc19l cnJvcihyZXQpKSB7DQotICAgICAgICBob3N0X3RvX3RhcmdldF9zb2NrYWRk cih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbik7DQotICAgICAgICB0cHV0 MzIodGFyZ2V0X2FkZHJsZW4sIGFkZHJsZW4pOw0KKyAgICAgICAgaWYoIGNv cHlfdG9fdXNlcl9zb2NrYWRkcigoc3RydWN0IHRhcmdldF9zb2NrYWRkciAq KXRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKSApIHJldHVybiAtRUZBVUxU Ow0KKyAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLGFkZHJsZW4pOw0K ICAgICB9DQogICAgIHJldHVybiByZXQ7DQogfQ0KIA0KIHN0YXRpYyBsb25n IGRvX2dldHNvY2tuYW1lKGludCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkcmxlbikNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBzb2NrbGVuX3QgKnRhcmdldF9hZGRybGVuKQ0KIHsNCi0gICAgc29ja2xl bl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0KLSAgICB2 b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KKyAgICBzb2NrbGVuX3Qg YWRkcmxlbjsNCisgICAgdm9pZCAqYWRkcjsNCiAgICAgbG9uZyByZXQ7DQog DQorICAgIGlmKCBnZXRfdXNlcihhZGRybGVuLHRhcmdldF9hZGRybGVuKSAp IHJldHVybiAtRUZBVUxUOw0KKyAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4p Ow0KKw0KICAgICByZXQgPSBnZXRfZXJybm8oZ2V0c29ja25hbWUoZmQsIGFk ZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0K LSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIs IGFkZHIsIGFkZHJsZW4pOw0KLSAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRy bGVuLCBhZGRybGVuKTsNCisgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfc29j a2FkZHIoKHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKil0YXJnZXRfYWRkciwg YWRkciwgYWRkcmxlbikgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgICAgIHRw dXQzMih0YXJnZXRfYWRkcmxlbixhZGRybGVuKTsNCiAgICAgfQ0KICAgICBy ZXR1cm4gcmV0Ow0KIH0NCkBAIC0xMDA2LDYgKzEwMjEsOCBAQA0KICAgICBp bnQgdGFiWzJdOw0KICAgICBsb25nIHJldDsNCiANCisgICAgaWYoICFhY2Nl c3Nfb2soVkVSSUZZX1dSSVRFLHRhcmdldF90YWIsMipzaXplb2YoaW50KSkg KQ0KKwlyZXR1cm4gLUVGQVVMVDsNCiAgICAgcmV0ID0gZ2V0X2Vycm5vKHNv Y2tldHBhaXIoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgdGFiKSk7DQogICAg IGlmICghaXNfZXJyb3IocmV0KSkgew0KICAgICAgICAgdHB1dDMyKHRhcmdl dF90YWIsIHRhYlswXSk7DQpAQCAtMTAxOCwxOCArMTAzNSwxOCBAQA0KICAg ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIs IHNvY2tsZW5fdCBhZGRybGVuKQ0KIHsNCiAgICAgdm9pZCAqYWRkcjsNCi0g ICAgdm9pZCAqaG9zdF9tc2c7DQorICAgIHZvaWQgKnRhcmdldF9tc2cgPSAo dm9pZCAqKW1zZzsNCisgICAgdm9pZCAqaG9zdF9tc2cgPSBhbGxvY2EobGVu KTsNCiAgICAgbG9uZyByZXQ7DQogDQotICAgIGhvc3RfbXNnID0gbG9ja191 c2VyKG1zZywgbGVuLCAxKTsNCisgICAgaWYgKGNvcHlfZnJvbV91c2VyKGhv c3RfbXNnLHRhcmdldF9tc2csbGVuKSApIHJldHVybiAtRUZBVUxUOw0KICAg ICBpZiAodGFyZ2V0X2FkZHIpIHsNCiAgICAgICAgIGFkZHIgPSBhbGxvY2Eo YWRkcmxlbik7DQotICAgICAgICB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihh ZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxlbik7DQorICAgICAgICBpZiAoY29w eV9mcm9tX3VzZXJfc29ja2FkZHIoYWRkciwgKHN0cnVjdCB0YXJnZXRfc29j a2FkZHIgKil0YXJnZXRfYWRkciwgYWRkcmxlbikgKSByZXR1cm4gLUVGQVVM VDsNCiAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW5kdG8oZmQsIGhvc3Rf bXNnLCBsZW4sIGZsYWdzLCBhZGRyLCBhZGRybGVuKSk7DQogICAgIH0gZWxz ZSB7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VuZChmZCwgaG9zdF9t c2csIGxlbiwgZmxhZ3MpKTsNCiAgICAgfQ0KLSAgICB1bmxvY2tfdXNlciho b3N0X21zZywgbXNnLCAwKTsNCiAgICAgcmV0dXJuIHJldDsNCiB9DQogDQpA QCAtMTAzOCwxMCArMTA1NSwxMCBAQA0KIHsNCiAgICAgc29ja2xlbl90IGFk ZHJsZW47DQogICAgIHZvaWQgKmFkZHI7DQotICAgIHZvaWQgKmhvc3RfbXNn Ow0KKyAgICB2b2lkICp0YXJnZXRfbXNnID0gKHZvaWQgKiltc2c7DQorICAg IHZvaWQgKmhvc3RfbXNnID0gYWxsb2NhKGxlbik7DQogICAgIGxvbmcgcmV0 Ow0KIA0KLSAgICBob3N0X21zZyA9IGxvY2tfdXNlcihtc2csIGxlbiwgMCk7 DQogICAgIGlmICh0YXJnZXRfYWRkcikgew0KICAgICAgICAgYWRkcmxlbiA9 IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7DQogICAgICAgICBhZGRyID0gYWxs b2NhKGFkZHJsZW4pOw0KQEAgLTEwNTIsMTIgKzEwNjksMTAgQEANCiAgICAg fQ0KICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgIGlmICh0 YXJnZXRfYWRkcikgew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3Nv Y2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAg ICAgICBpZiAoY29weV90b191c2VyX3NvY2thZGRyKChzdHJ1Y3QgdGFyZ2V0 X3NvY2thZGRyICopdGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pICkgcmV0 dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRy bGVuLCBhZGRybGVuKTsNCiAgICAgICAgIH0NCi0gICAgICAgIHVubG9ja191 c2VyKGhvc3RfbXNnLCBtc2csIGxlbik7DQotICAgIH0gZWxzZSB7DQotICAg ICAgICB1bmxvY2tfdXNlcihob3N0X21zZywgbXNnLCAwKTsNCisgICAgICAg IGlmKCBjb3B5X3RvX3VzZXIodGFyZ2V0X21zZywgaG9zdF9tc2csIGxlbikg KSByZXR1cm4gLUVGQVVMVDsNCiAgICAgfQ0KICAgICByZXR1cm4gcmV0Ow0K IH0NCkBAIC0xMTA0LDcgKzExMTksNyBAQA0KICAgICAgICAgICAgIGludCBz b2NrZmQgPSB0Z2V0bCh2cHRyKTsNCiAgICAgICAgICAgICB0YXJnZXRfdWxv bmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7DQogICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuID0gdGdldGwodnB0ciAr IDIgKiBuKTsNCi0gICAgICAgICAgICByZXQgPSBkb19hY2NlcHQoc29ja2Zk LCB0YXJnZXRfYWRkciwgdGFyZ2V0X2FkZHJsZW4pOw0KKyAgICAgICAgICAg IHJldCA9IGRvX2FjY2VwdChzb2NrZmQsIHRhcmdldF9hZGRyLCAoc29ja2xl bl90ICopdGFyZ2V0X2FkZHJsZW4pOw0KICAgICAgICAgfQ0KICAgICAgICAg YnJlYWs7DQogICAgIGNhc2UgU09DS09QX2dldHNvY2tuYW1lOg0KQEAgLTEx MTIsNyArMTEyNyw3IEBADQogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRn ZXRsKHZwdHIpOw0KICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRf YWRkciA9IHRnZXRsKHZwdHIgKyBuKTsNCiAgICAgICAgICAgICB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4pOw0K LSAgICAgICAgICAgIHJldCA9IGRvX2dldHNvY2tuYW1lKHNvY2tmZCwgdGFy Z2V0X2FkZHIsIHRhcmdldF9hZGRybGVuKTsNCisgICAgICAgICAgICByZXQg PSBkb19nZXRzb2NrbmFtZShzb2NrZmQsIHRhcmdldF9hZGRyLCAoc29ja2xl bl90ICopdGFyZ2V0X2FkZHJsZW4pOw0KICAgICAgICAgfQ0KICAgICAgICAg YnJlYWs7DQogICAgIGNhc2UgU09DS09QX2dldHBlZXJuYW1lOg0KQEAgLTEx MjAsNyArMTEzNSw3IEBADQogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRn ZXRsKHZwdHIpOw0KICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRf YWRkciA9IHRnZXRsKHZwdHIgKyBuKTsNCiAgICAgICAgICAgICB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4pOw0K LSAgICAgICAgICAgIHJldCA9IGRvX2dldHBlZXJuYW1lKHNvY2tmZCwgdGFy Z2V0X2FkZHIsIHRhcmdldF9hZGRybGVuKTsNCisgICAgICAgICAgICByZXQg PSBkb19nZXRwZWVybmFtZShzb2NrZmQsIHRhcmdldF9hZGRyLCAoc29ja2xl bl90ICopdGFyZ2V0X2FkZHJsZW4pOw0KICAgICAgICAgfQ0KICAgICAgICAg YnJlYWs7DQogICAgIGNhc2UgU09DS09QX3NvY2tldHBhaXI6DQpAQCAtMTIx NCwxMiArMTIyOSwxMiBAQA0KICAgICAgICAgICAgIHRhcmdldF91bG9uZyBv cHR2YWwgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOw0KICAgICAgICAgICAgIHRh cmdldF91bG9uZyBwb3B0bGVuID0gdGdldGwodnB0ciArIDQgKiBuKTsNCiAN Ci0gICAgICAgICAgICByZXQgPSBkb19nZXRzb2Nrb3B0KHNvY2tmZCwgbGV2 ZWwsIG9wdG5hbWUsIG9wdHZhbCwgcG9wdGxlbik7DQorICAgICAgICAgICAg cmV0ID0gZG9fZ2V0c29ja29wdChzb2NrZmQsIGxldmVsLCBvcHRuYW1lLCBv cHR2YWwsIChzb2NrbGVuX3QgKilwb3B0bGVuKTsNCiAgICAgICAgIH0NCiAg ICAgICAgIGJyZWFrOw0KICAgICBkZWZhdWx0Og0KICAgICAgICAgZ2VtdV9s b2coIlVuc3VwcG9ydGVkIHNvY2tldGNhbGw6ICVkXG4iLCBudW0pOw0KLSAg ICAgICAgcmV0ID0gLUVOT1NZUzsNCisgICAgICAgIHJldCA9IC1FSU5WQUw7 DQogICAgICAgICBicmVhazsNCiAgICAgfQ0KICAgICByZXR1cm4gcmV0Ow0K QEAgLTEyNTksNjQgKzEyNzQsNDYgQEANCiAgIHRhcmdldF91bG9uZyBfX3Vu dXNlZDQ7DQogfTsNCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3Rv X2hvc3RfaXBjX3Blcm0oc3RydWN0IGlwY19wZXJtICpob3N0X2lwLA0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQorc3RhdGljIGlubGluZSB2b2lkIGNv cHlfZnJvbV91c2VyX2lwY19wZXJtKHN0cnVjdCBpcGNfcGVybSAqaG9zdF9p cCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lwKQ0KIHsNCi0g ICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lwOw0KLSAgICBz dHJ1Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7DQotDQotICAgIGxv Y2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMSk7DQot ICAgIHRhcmdldF9pcD0mKHRhcmdldF9zZC0+c2VtX3Blcm0pOw0KICAgICBo b3N0X2lwLT5fX2tleSA9IHRzd2FwbCh0YXJnZXRfaXAtPl9fa2V5KTsNCiAg ICAgaG9zdF9pcC0+dWlkID0gdHN3YXBsKHRhcmdldF9pcC0+dWlkKTsNCiAg ICAgaG9zdF9pcC0+Z2lkID0gdHN3YXBsKHRhcmdldF9pcC0+Z2lkKTsNCiAg ICAgaG9zdF9pcC0+Y3VpZCA9IHRzd2FwbCh0YXJnZXRfaXAtPmN1aWQpOw0K ICAgICBob3N0X2lwLT5jZ2lkID0gdHN3YXBsKHRhcmdldF9pcC0+Y2dpZCk7 DQotICAgIGhvc3RfaXAtPm1vZGUgPSB0c3dhcGwodGFyZ2V0X2lwLT5tb2Rl KTsNCi0gICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0 X2FkZHIsIDApOw0KKyAgICBob3N0X2lwLT5tb2RlID0gdHN3YXAxNih0YXJn ZXRfaXAtPm1vZGUpOw0KKyAgICBob3N0X2lwLT5fX3NlcSA9IHRzd2FwMTYo dGFyZ2V0X2lwLT5fX3NlcSk7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9p ZCBob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfdWxvbmcgdGFyZ2V0 X2FkZHIsDQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfdG9fdXNlcl9pcGNf cGVybShzdHJ1Y3QgdGFyZ2V0X2lwY19wZXJtICp0YXJnZXRfaXAsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBpcGNfcGVybSAqaG9zdF9pcCkNCiB7DQotICAgIHN0cnVjdCB0YXJnZXRf aXBjX3Blcm0gKnRhcmdldF9pcDsNCi0gICAgc3RydWN0IHRhcmdldF9zZW1p ZF9kcyAqdGFyZ2V0X3NkOw0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRh cmdldF9zZCwgdGFyZ2V0X2FkZHIsIDApOw0KLSAgICB0YXJnZXRfaXAgPSAm KHRhcmdldF9zZC0+c2VtX3Blcm0pOw0KICAgICB0YXJnZXRfaXAtPl9fa2V5 ID0gdHN3YXBsKGhvc3RfaXAtPl9fa2V5KTsNCiAgICAgdGFyZ2V0X2lwLT51 aWQgPSB0c3dhcGwoaG9zdF9pcC0+dWlkKTsNCiAgICAgdGFyZ2V0X2lwLT5n aWQgPSB0c3dhcGwoaG9zdF9pcC0+Z2lkKTsNCiAgICAgdGFyZ2V0X2lwLT5j dWlkID0gdHN3YXBsKGhvc3RfaXAtPmN1aWQpOw0KICAgICB0YXJnZXRfaXAt PmNnaWQgPSB0c3dhcGwoaG9zdF9pcC0+Y2dpZCk7DQotICAgIHRhcmdldF9p cC0+bW9kZSA9IHRzd2FwbChob3N0X2lwLT5tb2RlKTsNCi0gICAgdW5sb2Nr X3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDEpOw0KKyAg ICB0YXJnZXRfaXAtPm1vZGUgPSB0c3dhcDE2KGhvc3RfaXAtPm1vZGUpOw0K KyAgICB0YXJnZXRfaXAtPl9fc2VxID0gdHN3YXAxNihob3N0X2lwLT5fX3Nl cSk7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9z dF9zZW1pZF9kcyhzdHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QsDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyKQ0KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2Zy b21fdXNlcl9zZW1pZF9kcyhzdHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHRhcmdldF9zZW1pZF9kcyAqdGFyZ2V0X3NkKQ0KIHsNCi0gICAgc3Ry dWN0IHRhcmdldF9zZW1pZF9kcyAqdGFyZ2V0X3NkOw0KLQ0KLSAgICBsb2Nr X3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDEpOw0KLSAg ICB0YXJnZXRfdG9faG9zdF9pcGNfcGVybSgmKGhvc3Rfc2QtPnNlbV9wZXJt KSx0YXJnZXRfYWRkcik7DQorICAgIGNvcHlfZnJvbV91c2VyX2lwY19wZXJt KCYoaG9zdF9zZC0+c2VtX3Blcm0pLCYodGFyZ2V0X3NkLT5zZW1fcGVybSkp Ow0KICAgICBob3N0X3NkLT5zZW1fbnNlbXMgPSB0c3dhcGwodGFyZ2V0X3Nk LT5zZW1fbnNlbXMpOw0KICAgICBob3N0X3NkLT5zZW1fb3RpbWUgPSB0c3dh cGwodGFyZ2V0X3NkLT5zZW1fb3RpbWUpOw0KICAgICBob3N0X3NkLT5zZW1f Y3RpbWUgPSB0c3dhcGwodGFyZ2V0X3NkLT5zZW1fY3RpbWUpOw0KLSAgICB1 bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMCk7 DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9z ZW1pZF9kcyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGljIGlu bGluZSB2b2lkIGNvcHlfdG9fdXNlcl9zZW1pZF9kcyhzdHJ1Y3QgdGFyZ2V0 X3NlbWlkX2RzICp0YXJnZXRfc2QsDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqaG9zdF9z ZCkNCiB7DQotICAgIHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9z ZDsNCi0NCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdl dF9hZGRyLCAwKTsNCi0gICAgaG9zdF90b190YXJnZXRfaXBjX3Blcm0odGFy Z2V0X2FkZHIsJihob3N0X3NkLT5zZW1fcGVybSkpOw0KKyAgICBjb3B5X3Rv X3VzZXJfaXBjX3Blcm0oJih0YXJnZXRfc2QtPnNlbV9wZXJtKSwmKGhvc3Rf c2QtPnNlbV9wZXJtKSk7DQogICAgIHRhcmdldF9zZC0+c2VtX25zZW1zID0g dHN3YXBsKGhvc3Rfc2QtPnNlbV9uc2Vtcyk7DQogICAgIHRhcmdldF9zZC0+ c2VtX290aW1lID0gdHN3YXBsKGhvc3Rfc2QtPnNlbV9vdGltZSk7DQogICAg IHRhcmdldF9zZC0+c2VtX2N0aW1lID0gdHN3YXBsKGhvc3Rfc2QtPnNlbV9j dGltZSk7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRh cmdldF9hZGRyLCAxKTsNCiB9DQogDQogdW5pb24gc2VtdW4gew0KQEAgLTEz MjcsMTEzICsxMzI0LDEwNyBAQA0KIA0KIHVuaW9uIHRhcmdldF9zZW11biB7 DQogCWludCB2YWw7DQotCXRhcmdldF9sb25nIGJ1ZjsNCi0JdW5zaWduZWQg c2hvcnQgaW50ICphcnJheTsNCisJc3RydWN0IHRhcmdldF9zZW1pZF9kcyAq YnVmOw0KKwl1bnNpZ25lZCBzaG9ydCAqYXJyYXk7DQorCWxvbmcgaG9zdF9w dHI7DQogfTsNCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hv c3Rfc2VtdW4odW5zaWduZWQgbG9uZyBjbWQsDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHNlbXVuICpob3N0X3N1 LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGljIGlubGluZSBsb25n IGNvcHlfZnJvbV91c2VyX3NlbXVuKHVuc2lnbmVkIGxvbmcgY21kLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBz ZW11biBob3N0X3N1LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bmlvbiB0YXJnZXRfc2VtdW4gdGFyZ2V0X3N1LA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2VtaWRfZHMgKmRzKQ0KIHsNCi0gICAgdW5pb24gdGFyZ2V0X3NlbXVuICp0 YXJnZXRfc3U7DQotDQogICAgIHN3aXRjaCggY21kICkgew0KLQljYXNlIElQ Q19TVEFUOg0KIAljYXNlIElQQ19TRVQ6DQotICAgICAgICAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDEpOw0KLQkgICB0 YXJnZXRfdG9faG9zdF9zZW1pZF9kcyhkcyx0YXJnZXRfc3UtPmJ1Zik7DQot CSAgIGhvc3Rfc3UtPmJ1ZiA9IGRzOw0KLSAgICAgICAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KLQkgICBi cmVhazsNCi0JY2FzZSBHRVRWQUw6DQotCWNhc2UgU0VUVkFMOg0KLSAgICAg ICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRy LCAxKTsNCi0JICAgaG9zdF9zdS0+dmFsID0gdHN3YXBsKHRhcmdldF9zdS0+ dmFsKTsNCi0gICAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRf c3UsIHRhcmdldF9hZGRyLCAwKTsNCisJICAgY29weV9mcm9tX3VzZXJfc2Vt aWRfZHMoZHMsdGFyZ2V0X3N1LmJ1Zik7DQorCSAgIGhvc3Rfc3UuYnVmID0g ZHM7DQogCSAgIGJyZWFrOw0KLQljYXNlIEdFVEFMTDoNCiAJY2FzZSBTRVRB TEw6DQotICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwg dGFyZ2V0X2FkZHIsIDEpOw0KLQkgICAqaG9zdF9zdS0+YXJyYXkgPSB0c3dh cDE2KCp0YXJnZXRfc3UtPmFycmF5KTsNCi0gICAgICAgICAgIHVubG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAwKTsNCisgICAg ICAgICAgIHsNCisgICAgICAgICAgIGludCBpOw0KKyAgICAgICAgICAgZm9y KGk9MDtpPGRzLT5zZW1fbnNlbXM7aSsrKQ0KKwkgICAgICAgaWYgKGdldF91 c2VyKGhvc3Rfc3UuYXJyYXlbaV0sJih0YXJnZXRfc3UuYXJyYXlbaV0pKSkg cmV0dXJuIC0xOw0KIAkgICBicmVhazsNCisgICAgICAgICAgIH0NCiAJZGVm YXVsdDoNCiAgICAgICAgICAgIGdlbXVfbG9nKCJzZW11biBvcGVyYXRpb24g bm90IGZ1bGx5IHN1cHBvcnRlZDogJWRcbiIsIChpbnQpY21kKTsNCiAgICAg fQ0KKw0KKyAgICByZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIGlubGluZSB2 b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKHVuc2lnbmVkIGxvbmcgY21kLA0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuaW9uIHNlbXVuICpob3N0X3N1LA0KK3N0 YXRpYyBpbmxpbmUgbG9uZyBjb3B5X3RvX3VzZXJfc2VtdW4odW5zaWduZWQg bG9uZyBjbWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuaW9uIHRhcmdldF9zZW11biB0YXJnZXRfc3UsDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHNlbXVu IGhvc3Rfc3UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqZHMpDQogew0KLSAgICB1bmlvbiB0 YXJnZXRfc2VtdW4gKnRhcmdldF9zdTsNCi0NCiAgICAgc3dpdGNoKCBjbWQg KSB7DQogCWNhc2UgSVBDX1NUQVQ6DQotCWNhc2UgSVBDX1NFVDoNCi0gICAg ICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRk ciwgMCk7DQotCSAgIGhvc3RfdG9fdGFyZ2V0X3NlbWlkX2RzKHRhcmdldF9z dS0+YnVmLGRzKTsNCi0gICAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAxKTsNCi0JICAgYnJlYWs7DQotCWNh c2UgR0VUVkFMOg0KLQljYXNlIFNFVFZBTDoNCi0gICAgICAgICAgIGxvY2tf dXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMCk7DQotCSAg IHRhcmdldF9zdS0+dmFsID0gdHN3YXBsKGhvc3Rfc3UtPnZhbCk7DQotICAg ICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRf YWRkciwgMSk7DQorCSAgIGlmKCAhYWNjZXNzX29rKFZFUklGWV9XUklURSwo dGFyZ2V0X3Vsb25nKXRhcmdldF9zdS5idWYsc2l6ZW9mKHN0cnVjdCB0YXJn ZXRfc2VtaWRfZHMpKSApIHJldHVybiAtMTsNCisJICAgY29weV90b191c2Vy X3NlbWlkX2RzKHRhcmdldF9zdS5idWYsZHMpOw0KIAkgICBicmVhazsNCiAJ Y2FzZSBHRVRBTEw6DQotCWNhc2UgU0VUQUxMOg0KLSAgICAgICAgICAgbG9j a191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAwKTsNCi0J ICAgKnRhcmdldF9zdS0+YXJyYXkgPSB0c3dhcDE2KCpob3N0X3N1LT5hcnJh eSk7DQotICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1 LCB0YXJnZXRfYWRkciwgMSk7DQorICAgICAgICAgICB7DQorICAgICAgICAg ICBpbnQgaTsNCisgICAgICAgICAgIGZvcihpPTA7aTxkcy0+c2VtX25zZW1z O2krKykNCisJICAgICAgIGlmIChwdXRfdXNlcihob3N0X3N1LmFycmF5W2ld LCYodGFyZ2V0X3N1LmFycmF5W2ldKSkpIHJldHVybiAtMTsNCiAJICAgYnJl YWs7DQorICAgICAgICAgICB9DQogICAgICAgICBkZWZhdWx0Og0KICAgICAg ICAgICAgZ2VtdV9sb2coInNlbXVuIG9wZXJhdGlvbiBub3QgZnVsbHkgc3Vw cG9ydGVkOiAlZFxuIiwgKGludCljbWQpOw0KICAgICB9DQorDQorICAgIHJl dHVybiAwOw0KIH0NCiANCiBzdGF0aWMgaW5saW5lIGxvbmcgZG9fc2VtY3Rs KGxvbmcgZmlyc3QsIGxvbmcgc2Vjb25kLCBsb25nIHRoaXJkLCBsb25nIHB0 cikNCiB7DQogICAgIHVuaW9uIHNlbXVuIGFyZzsNCisgICAgdW5pb24gdGFy Z2V0X3NlbXVuIHRhcmcgPSAodW5pb24gdGFyZ2V0X3NlbXVuKXB0cjsNCiAg ICAgc3RydWN0IHNlbWlkX2RzIGRzYXJnOw0KICAgICBpbnQgY21kID0gdGhp cmQmMHhmZjsNCiAgICAgbG9uZyByZXQgPSAwOw0KIA0KKyAgICBhcmcuYnVm ID0gJmRzYXJnOw0KKw0KICAgICBzd2l0Y2goIGNtZCApIHsNCiAJY2FzZSBH RVRWQUw6DQotICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21k LCZhcmcscHRyLCZkc2FyZyk7DQotICAgICAgICAgICAgcmV0ID0gZ2V0X2Vy cm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFyZykpOw0KLSAgICAg ICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNh cmcpOw0KKyAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmly c3QsIHNlY29uZCwgY21kLCB0YXJnKSk7DQogICAgICAgICAgICAgYnJlYWs7 DQogCWNhc2UgU0VUVkFMOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KLSAgICAgICAgICAgIHJl dCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcp KTsNCi0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRy LCZhcmcsJmRzYXJnKTsNCisgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8o c2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgdGFyZy52YWwpKTsNCiAgICAg ICAgICAgICBicmVhazsNCiAJY2FzZSBHRVRBTEw6DQotICAgICAgICAgICAg dGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQor CQkvKiBVc2UgSVBDX1NUQVQgdG8gZmlndXJlIG91dCBob3cgbWFueSBzZW1h cGhvcmVzIGFyZSBpbg0KKwkJICogdGhlIHNldCwgYW5kIGFsbG9jYXRlIGJ1 ZmZlciBzcGFjZSBmb3IgdGhlbS4NCisJCSAqLw0KKyAgICAgICAgICAgIHNl bWN0bChmaXJzdCxzZWNvbmQsIElQQ19TVEFULGFyZyk7DQorICAgICAgICAg ICAgYXJnLmFycmF5ID0gYWxsb2NhKHNpemVvZih1bnNpZ25lZCBzaG9ydCkq ZHNhcmcuc2VtX25zZW1zKTsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJy bm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7DQotICAgICAg ICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJnLCZkc2Fy Zyk7DQorICAgIAkgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQorICAgICAg ICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfc2VtdW4oY21kLHRhcmcsYXJn LCZkc2FyZykgKSByZXR1cm4gLUVGQVVMVDsNCisJICAgIH0NCiAgICAgICAg ICAgICBicmVhazsNCiAJY2FzZSBTRVRBTEw6DQotICAgICAgICAgICAgdGFy Z2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQorCQkv KiBVc2UgSVBDX1NUQVQgdG8gZmlndXJlIG91dCBob3cgbWFueSBzZW1hcGhv cmVzIGFyZSBpbg0KKwkJICogdGhlIHNldCwgYW5kIGFsbG9jYXRlIGJ1ZmZl ciBzcGFjZSBmb3IgdGhlbS4NCisJCSAqLw0KKyAgICAgICAgICAgIHNlbWN0 bChmaXJzdCxzZWNvbmQsIElQQ19TVEFULGFyZyk7DQorICAgICAgICAgICAg YXJnLmFycmF5ID0gYWxsb2NhKHNpemVvZih1bnNpZ25lZCBzaG9ydCkqZHNh cmcuc2VtX25zZW1zKTsNCisgICAgICAgICAgICBpZiggY29weV9mcm9tX3Vz ZXJfc2VtdW4oY21kLGFyZyx0YXJnLCZkc2FyZykgKSByZXR1cm4gLUVGQVVM VDsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0 LCBzZWNvbmQsIGNtZCwgYXJnKSk7DQotICAgICAgICAgICAgaG9zdF90b190 YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJnLCZkc2FyZyk7DQogICAgICAgICAg ICAgYnJlYWs7DQogCWNhc2UgSVBDX1NUQVQ6DQotICAgICAgICAgICAgdGFy Z2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQogICAg ICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25k LCBjbWQsIGFyZykpOw0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3Nl bXVuKGNtZCxwdHIsJmFyZywmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCBj b3B5X3RvX3VzZXJfc2VtdW4oY21kLHRhcmcsYXJnLCZkc2FyZykgKSByZXR1 cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICBicmVhazsNCiAJY2FzZSBJUENf U0VUOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwm YXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21f dXNlcihhcmcuYnVmLHRhcmcuYnVmLHNpemVvZih1bmlvbiB0YXJnZXRfc2Vt dW4pKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICAgICAgICAgIGlmKCBjb3B5 X2Zyb21fdXNlcl9zZW11bihjbWQsYXJnLHRhcmcsJmRzYXJnKSApIHJldHVy biAtRUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1j dGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAgICBo b3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsNCiAg ICAgICAgICAgICBicmVhazsNCiAgICAgZGVmYXVsdDoNCi0gICAgICAgICAg ICByZXQgPSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwg YXJnKSk7DQorICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChm aXJzdCwgc2Vjb25kLCBjbWQsIHB0cikpOw0KICAgICB9DQogDQogICAgIHJl dHVybiByZXQ7DQpAQCAtMTQ1NywxMyArMTQ0OCwxMCBAQA0KICAgdGFyZ2V0 X3Vsb25nIF9fdW51c2VkNTsNCiB9Ow0KIA0KLXN0YXRpYyBpbmxpbmUgdm9p ZCB0YXJnZXRfdG9faG9zdF9tc3FpZF9kcyhzdHJ1Y3QgbXNxaWRfZHMgKmhv c3RfbWQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQ0KK3N0YXRpYyBpbmxp bmUgbG9uZyBjb3B5X2Zyb21fdXNlcl9tc3FpZF9kcyhzdHJ1Y3QgbXNxaWRf ZHMgKmhvc3RfbWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHRhcmdldF9tc3FpZF9kcyAqdGFyZ2V0X21k KQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF9tc3FpZF9kcyAqdGFyZ2V0X21k Ow0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0 X2FkZHIsIDEpOw0KLSAgICB0YXJnZXRfdG9faG9zdF9pcGNfcGVybSgmKGhv c3RfbWQtPm1zZ19wZXJtKSx0YXJnZXRfYWRkcik7DQorICAgIGNvcHlfZnJv bV91c2VyX2lwY19wZXJtKCYoaG9zdF9tZC0+bXNnX3Blcm0pLCYodGFyZ2V0 X21kLT5tc2dfcGVybSkpOw0KICAgICBob3N0X21kLT5tc2dfc3RpbWUgPSB0 c3dhcGwodGFyZ2V0X21kLT5tc2dfc3RpbWUpOw0KICAgICBob3N0X21kLT5t c2dfcnRpbWUgPSB0c3dhcGwodGFyZ2V0X21kLT5tc2dfcnRpbWUpOw0KICAg ICBob3N0X21kLT5tc2dfY3RpbWUgPSB0c3dhcGwodGFyZ2V0X21kLT5tc2df Y3RpbWUpOw0KQEAgLTE0NzIsMTYgKzE0NjAsMTQgQEANCiAgICAgaG9zdF9t ZC0+bXNnX3FieXRlcyA9IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19xYnl0ZXMp Ow0KICAgICBob3N0X21kLT5tc2dfbHNwaWQgPSB0c3dhcGwodGFyZ2V0X21k LT5tc2dfbHNwaWQpOw0KICAgICBob3N0X21kLT5tc2dfbHJwaWQgPSB0c3dh cGwodGFyZ2V0X21kLT5tc2dfbHJwaWQpOw0KLSAgICB1bmxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJl dHVybiAwOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190 YXJnZXRfbXNxaWRfZHModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbXNxaWRfZHMgKmhvc3RfbWQpDQorc3RhdGljIGlubGluZSBsb25nIGNv cHlfdG9fdXNlcm1zcWlkX2RzKHN0cnVjdCB0YXJnZXRfbXNxaWRfZHMgKnRh cmdldF9tZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgbXNxaWRfZHMgKmhvc3RfbWQpDQogew0KLSAgICBz dHJ1Y3QgdGFyZ2V0X21zcWlkX2RzICp0YXJnZXRfbWQ7DQotDQotICAgIGxv Y2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMCk7DQot ICAgIGhvc3RfdG9fdGFyZ2V0X2lwY19wZXJtKHRhcmdldF9hZGRyLCYoaG9z dF9tZC0+bXNnX3Blcm0pKTsNCisgICAgY29weV90b191c2VyX2lwY19wZXJt KCYodGFyZ2V0X21kLT5tc2dfcGVybSksJihob3N0X21kLT5tc2dfcGVybSkp Ow0KICAgICB0YXJnZXRfbWQtPm1zZ19zdGltZSA9IHRzd2FwbChob3N0X21k LT5tc2dfc3RpbWUpOw0KICAgICB0YXJnZXRfbWQtPm1zZ19ydGltZSA9IHRz d2FwbChob3N0X21kLT5tc2dfcnRpbWUpOw0KICAgICB0YXJnZXRfbWQtPm1z Z19jdGltZSA9IHRzd2FwbChob3N0X21kLT5tc2dfY3RpbWUpOw0KQEAgLTE0 OTAsMjAgKzE0NzYsMjkgQEANCiAgICAgdGFyZ2V0X21kLT5tc2dfcWJ5dGVz ID0gdHN3YXBsKGhvc3RfbWQtPm1zZ19xYnl0ZXMpOw0KICAgICB0YXJnZXRf bWQtPm1zZ19sc3BpZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHNwaWQpOw0K ICAgICB0YXJnZXRfbWQtPm1zZ19scnBpZCA9IHRzd2FwbChob3N0X21kLT5t c2dfbHJwaWQpOw0KLSAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21k LCB0YXJnZXRfYWRkciwgMSk7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiAN CiBzdGF0aWMgaW5saW5lIGxvbmcgZG9fbXNnY3RsKGxvbmcgZmlyc3QsIGxv bmcgc2Vjb25kLCBsb25nIHB0cikNCiB7DQogICAgIHN0cnVjdCBtc3FpZF9k cyBkc2FyZzsNCisgICAgc3RydWN0IHRhcmdldF9tc3FpZF9kcyAqdGFyZ2V0 X2RzID0gKHN0cnVjdCB0YXJnZXRfbXNxaWRfZHMgKilwdHI7DQogICAgIGlu dCBjbWQgPSBzZWNvbmQmMHhmZjsNCiAgICAgbG9uZyByZXQgPSAwOw0KICAg ICBzd2l0Y2goIGNtZCApIHsNCiAgICAgY2FzZSBJUENfU1RBVDoNCisJaWYo IGNvcHlfZnJvbV91c2VyKCZkc2FyZyx0YXJnZXRfZHMsc2l6ZW9mKHN0cnVj dCBtc3FpZF9kcykpICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgICAgICBjb3B5 X2Zyb21fdXNlcl9tc3FpZF9kcygmZHNhcmcsdGFyZ2V0X2RzKTsNCisgICAg ICAgIHJldCA9IGdldF9lcnJubyhtc2djdGwoZmlyc3QsIGNtZCwgJmRzYXJn KSk7DQorICAgICAgICBpZiggY29weV90b191c2VybXNxaWRfZHModGFyZ2V0 X2RzLCZkc2FyZykgKSByZXR1cm4gLUVGQVVMVDsNCisJYnJlYWs7DQogICAg IGNhc2UgSVBDX1NFVDoNCi0gICAgICAgIHRhcmdldF90b19ob3N0X21zcWlk X2RzKCZkc2FyZyxwdHIpOw0KKwlpZiggY29weV9mcm9tX3VzZXIoJmRzYXJn LHRhcmdldF9kcyxzaXplb2Yoc3RydWN0IG1zcWlkX2RzKSkgKSByZXR1cm4g LUVGQVVMVDsNCisgICAgICAgIGNvcHlfZnJvbV91c2VyX21zcWlkX2RzKCZk c2FyZyx0YXJnZXRfZHMpOw0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKG1z Z2N0bChmaXJzdCwgY21kLCAmZHNhcmcpKTsNCi0gICAgICAgIGhvc3RfdG9f dGFyZ2V0X21zcWlkX2RzKHB0ciwmZHNhcmcpOw0KKyAgICAgICAgaWYoIGNv cHlfdG9fdXNlcm1zcWlkX2RzKHRhcmdldF9kcywmZHNhcmcpICkgcmV0dXJu IC1FRkFVTFQ7DQorCWJyZWFrOw0KICAgICBkZWZhdWx0Og0KICAgICAgICAg cmV0ID0gZ2V0X2Vycm5vKG1zZ2N0bChmaXJzdCwgY21kLCAmZHNhcmcpKTsN CiAgICAgfQ0KQEAgLTE1MTEsNDEgKzE1MDYsNDQgQEANCiB9DQogDQogc3Ry dWN0IHRhcmdldF9tc2didWYgew0KLQl0YXJnZXRfdWxvbmcgbXR5cGU7DQor CXRhcmdldF9sb25nIG10eXBlOw0KIAljaGFyCW10ZXh0WzFdOw0KIH07DQog DQogc3RhdGljIGlubGluZSBsb25nIGRvX21zZ3NuZChsb25nIG1zcWlkLCBs b25nIG1zZ3AsIGxvbmcgbXNnc3osIGxvbmcgbXNnZmxnKQ0KIHsNCi0gICAg c3RydWN0IHRhcmdldF9tc2didWYgKnRhcmdldF9tYjsNCisgICAgc3RydWN0 IHRhcmdldF9tc2didWYgKnRhcmdldF9tYiA9IChzdHJ1Y3QgdGFyZ2V0X21z Z2J1ZiAqKW1zZ3A7DQorICAgIHRhcmdldF9sb25nIHRtc2dzeiA9IHRzd2Fw MzIobXNnc3opOw0KICAgICBzdHJ1Y3QgbXNnYnVmICpob3N0X21iOw0KICAg ICBsb25nIHJldCA9IDA7DQogDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFy Z2V0X21iLG1zZ3AsMCk7DQotICAgIGhvc3RfbWIgPSBtYWxsb2MobXNnc3or c2l6ZW9mKGxvbmcpKTsNCisgICAgaWYoIHRtc2dzeiA8IDAgKSByZXR1cm4g LUVJTlZBTDsNCisgICAgaWYoICEodGFyZ2V0X21iLT5tdHlwZSA+IDApICkg cmV0dXJuIC1FSU5WQUw7DQorDQorICAgIGhvc3RfbWIgPSBhbGxvY2Eoc2l6 ZW9mKGxvbmcpK21zZ3N6KTsNCisNCisgICAgaWYoIGNvcHlfZnJvbV91c2Vy KGhvc3RfbWItPm10ZXh0LHRhcmdldF9tYi0+bXRleHQsbXNnc3opICkgcmV0 dXJuIC1FRkFVTFQ7DQogICAgIGhvc3RfbWItPm10eXBlID0gdHN3YXBsKHRh cmdldF9tYi0+bXR5cGUpOw0KLSAgICBtZW1jcHkoaG9zdF9tYi0+bXRleHQs dGFyZ2V0X21iLT5tdGV4dCxtc2dzeik7DQogICAgIHJldCA9IGdldF9lcnJu byhtc2dzbmQobXNxaWQsIGhvc3RfbWIsIG1zZ3N6LCBtc2dmbGcpKTsNCi0g ICAgZnJlZShob3N0X21iKTsNCi0gICAgdW5sb2NrX3VzZXJfc3RydWN0KHRh cmdldF9tYiwgbXNncCwgMCk7DQogDQogICAgIHJldHVybiByZXQ7DQogfQ0K IA0KIHN0YXRpYyBpbmxpbmUgbG9uZyBkb19tc2dyY3YobG9uZyBtc3FpZCwg bG9uZyBtc2dwLCBsb25nIG1zZ3N6LCBsb25nIG1zZ3R5cGUsIGxvbmcgbXNn ZmxnKQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF9tc2didWYgKnRhcmdldF9t YjsNCisgICAgc3RydWN0IHRhcmdldF9tc2didWYgKnRhcmdldF9tYiA9IChz dHJ1Y3QgdGFyZ2V0X21zZ2J1ZiAqKW1zZ3A7DQorICAgIHRhcmdldF9sb25n IHRtc2dzeiA9IHRzd2FwMzIobXNnc3opOw0KICAgICBzdHJ1Y3QgbXNnYnVm ICpob3N0X21iOw0KICAgICBsb25nIHJldCA9IDA7DQogDQotICAgIGxvY2tf dXNlcl9zdHJ1Y3QodGFyZ2V0X21iLCBtc2dwLCAwKTsNCi0gICAgaG9zdF9t YiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9uZykpOw0KLSAgICByZXQgPSBn ZXRfZXJybm8obXNncmN2KG1zcWlkLCBob3N0X21iLCBtc2dzeiwgMSwgbXNn ZmxnKSk7DQorICAgIGlmKCB0bXNnc3ogPCAwICkgcmV0dXJuIC1FSU5WQUw7 DQorDQorICAgIGhvc3RfbWIgPSBhbGxvY2Eoc2l6ZW9mKGxvbmcpK21zZ3N6 KTsNCisNCisgICAgcmV0ID0gZ2V0X2Vycm5vKG1zZ3Jjdihtc3FpZCwgaG9z dF9tYiwgbXNnc3osIG1zZ3R5cGUsIG1zZ2ZsZykpOw0KICAgICBpZiAocmV0 ID4gMCkNCi0gICAgCW1lbWNweSh0YXJnZXRfbWItPm10ZXh0LCBob3N0X21i LT5tdGV4dCwgcmV0KTsNCisJaWYoIGNvcHlfdG9fdXNlcih0YXJnZXRfbWIt Pm10ZXh0LGhvc3RfbWItPm10ZXh0LHJldCkgKSByZXR1cm4gLUVGQVVMVDsN CiAgICAgdGFyZ2V0X21iLT5tdHlwZSA9IHRzd2FwbChob3N0X21iLT5tdHlw ZSk7DQotICAgIGZyZWUoaG9zdF9tYik7DQotICAgIHVubG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfbWIsIG1zZ3AsIDApOw0KIA0KICAgICByZXR1cm4gcmV0 Ow0KIH0NCkBAIC0yMDE4LDYgKzIwMTYsNyBAQA0KIHN0YXRpYyBpbnQgd3Jp dGVfbGR0KENQVVg4NlN0YXRlICplbnYsIA0KICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0ZWNvdW50 LCBpbnQgb2xkbW9kZSkNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAg c3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zIGxkdF9pbmZvOw0KICAg ICBzdHJ1Y3QgdGFyZ2V0X21vZGlmeV9sZHRfbGR0X3MgKnRhcmdldF9sZHRf aW5mbzsNCiAgICAgaW50IHNlZ18zMmJpdCwgY29udGVudHMsIHJlYWRfZXhl Y19vbmx5LCBsaW1pdF9pbl9wYWdlczsNCkBAIC0yMDI2LDcgKzIwMjUsNyBA QA0KIA0KICAgICBpZiAoYnl0ZWNvdW50ICE9IHNpemVvZihsZHRfaW5mbykp DQogICAgICAgICByZXR1cm4gLUVJTlZBTDsNCi0gICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfbGR0X2luZm8sIHB0ciwgMSk7DQorICAgIGlmKCBsb2Nr X2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X2xkdF9pbmZvLHB0cixz aXplb2Yoc3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zKSwxLFBBR0Vf UkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgbGR0X2luZm8uZW50cnlf bnVtYmVyID0gdHN3YXAzMih0YXJnZXRfbGR0X2luZm8tPmVudHJ5X251bWJl cik7DQogICAgIGxkdF9pbmZvLmJhc2VfYWRkciA9IHRzd2FwbCh0YXJnZXRf bGR0X2luZm8tPmJhc2VfYWRkcik7DQogICAgIGxkdF9pbmZvLmxpbWl0ID0g dHN3YXAzMih0YXJnZXRfbGR0X2luZm8tPmxpbWl0KTsNCkBAIC0yMjI1LDcg KzIyMjQsNyBAQA0KIA0KICAgICBzd2l0Y2goY21kKSB7DQogICAgIGNhc2Ug VEFSR0VUX0ZfR0VUTEs6DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRh cmdldF9mbCwgYXJnLCAxKTsNCisJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJf c3RydWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zs b2NrKSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg IGZsLmxfdHlwZSA9IHRzd2FwMTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0KICAg ICAgICAgZmwubF93aGVuY2UgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF93aGVu Y2UpOw0KICAgICAgICAgZmwubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmwt Pmxfc3RhcnQpOw0KQEAgLTIyMzQsNiArMjIzMyw3IEBADQogICAgICAgICB1 bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X2ZsLCBhcmcsIDApOw0KICAgICAg ICAgcmV0ID0gZmNudGwoZmQsIGNtZCwgJmZsKTsNCiAgICAgICAgIGlmIChy ZXQgPT0gMCkgew0KKwkgICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3Ry dWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2Nr KSwwLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAg ICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmwsIGFyZywgMCk7DQogICAg ICAgICAgICAgdGFyZ2V0X2ZsLT5sX3R5cGUgPSB0c3dhcDE2KGZsLmxfdHlw ZSk7DQogICAgICAgICAgICAgdGFyZ2V0X2ZsLT5sX3doZW5jZSA9IHRzd2Fw MTYoZmwubF93aGVuY2UpOw0KQEAgLTIyNDYsNyArMjI0Niw3IEBADQogICAg ICAgICANCiAgICAgY2FzZSBUQVJHRVRfRl9TRVRMSzoNCiAgICAgY2FzZSBU QVJHRVRfRl9TRVRMS1c6DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRh cmdldF9mbCwgYXJnLCAxKTsNCisJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJf c3RydWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zs b2NrKSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg IGZsLmxfdHlwZSA9IHRzd2FwMTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0KICAg ICAgICAgZmwubF93aGVuY2UgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF93aGVu Y2UpOw0KICAgICAgICAgZmwubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmwt Pmxfc3RhcnQpOw0KQEAgLTIyNTcsNyArMjI1Nyw3IEBADQogICAgICAgICBi cmVhazsNCiAgICAgICAgIA0KICAgICBjYXNlIFRBUkdFVF9GX0dFVExLNjQ6 DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9mbDY0LCBhcmcs IDEpOw0KKwlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdl dF9mbDY0LGFyZyxzaXplb2Yoc3RydWN0IHRhcmdldF9mbG9jazY0KSwxLFBB R0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIGZsNjQubF90 eXBlID0gdHN3YXAxNih0YXJnZXRfZmw2NC0+bF90eXBlKSA+PiAxOw0KICAg ICAgICAgZmw2NC5sX3doZW5jZSA9IHRzd2FwMTYodGFyZ2V0X2ZsNjQtPmxf d2hlbmNlKTsNCiAgICAgICAgIGZsNjQubF9zdGFydCA9IHRzd2FwbCh0YXJn ZXRfZmw2NC0+bF9zdGFydCk7DQpAQCAtMjI2Niw3ICsyMjY2LDcgQEANCiAg ICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAw KTsNCiAgICAgICAgIHJldCA9IGZjbnRsKGZkLCBjbWQgPj4gMSwgJmZsNjQp Ow0KICAgICAgICAgaWYgKHJldCA9PSAwKSB7DQotICAgICAgICAgICAgbG9j a191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAwKTsNCisJICAgIGlm KCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X2ZsNjQsYXJn LHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2NrNjQpLDAsUEFHRV9XUklURSkg KSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICB0YXJnZXRfZmw2NC0+ bF90eXBlID0gdHN3YXAxNihmbDY0LmxfdHlwZSkgPj4gMTsNCiAgICAgICAg ICAgICB0YXJnZXRfZmw2NC0+bF93aGVuY2UgPSB0c3dhcDE2KGZsNjQubF93 aGVuY2UpOw0KICAgICAgICAgICAgIHRhcmdldF9mbDY0LT5sX3N0YXJ0ID0g dHN3YXBsKGZsNjQubF9zdGFydCk7DQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAN CiAJCWJyZWFrOw0KICAgICBjYXNlIFRBUkdFVF9GX1NFVExLNjQ6DQogICAg IGNhc2UgVEFSR0VUX0ZfU0VUTEtXNjQ6DQotICAgICAgICBsb2NrX3VzZXJf c3RydWN0KHRhcmdldF9mbDY0LCBhcmcsIDEpOw0KKwlpZiggbG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9mbDY0LGFyZyxzaXplb2Yoc3Ry dWN0IHRhcmdldF9mbG9jazY0KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVG QVVMVDsNCiAgICAgICAgIGZsNjQubF90eXBlID0gdHN3YXAxNih0YXJnZXRf Zmw2NC0+bF90eXBlKSA+PiAxOw0KICAgICAgICAgZmw2NC5sX3doZW5jZSA9 IHRzd2FwMTYodGFyZ2V0X2ZsNjQtPmxfd2hlbmNlKTsNCiAgICAgICAgIGZs NjQubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmw2NC0+bF9zdGFydCk7DQpA QCAtMjQxOSwzMiArMjQxOSwzMCBAQA0KIH0NCiAjZW5kaWYNCiANCi1zdGF0 aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoc3RydWN0 IHRpbWVzcGVjICpob3N0X3RzLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIp DQorc3RhdGljIGlubGluZSBsb25nIGNvcHlfZnJvbV91c2VyX3RpbWVzcGVj KHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cywNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF90aW1l c3BlYyAqdGFyZ2V0X3RzKQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF90aW1l c3BlYyAqdGFyZ2V0X3RzOw0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRh cmdldF90cywgdGFyZ2V0X2FkZHIsIDEpOw0KKyAgICBpZiggY29weV9mcm9t X3VzZXIoaG9zdF90cyx0YXJnZXRfdHMsc2l6ZW9mKCp0YXJnZXRfdHMpKSAp IHJldHVybiAtMTsNCiAgICAgaG9zdF90cy0+dHZfc2VjID0gdHN3YXBsKHRh cmdldF90cy0+dHZfc2VjKTsNCiAgICAgaG9zdF90cy0+dHZfbnNlYyA9IHRz d2FwbCh0YXJnZXRfdHMtPnR2X25zZWMpOw0KLSAgICB1bmxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3RzLCB0YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJl dHVybiAwOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190 YXJnZXRfdGltZXNwZWModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0 YXRpYyBpbmxpbmUgbG9uZyBjb3B5X3RvX3VzZXJfdGltZXNwZWMoc3RydWN0 IHRhcmdldF90aW1lc3BlYyAqdGFyZ2V0X3RzLA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMg Kmhvc3RfdHMpDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWVzcGVjICp0 YXJnZXRfdHM7DQotDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3Rz LCB0YXJnZXRfYWRkciwgMCk7DQorICAgIGlmKCBjb3B5X3RvX3VzZXIodGFy Z2V0X3RzLCBob3N0X3RzLCBzaXplb2YoKnRhcmdldF90cykpICkgcmV0dXJu IC0xOw0KICAgICB0YXJnZXRfdHMtPnR2X3NlYyA9IHRzd2FwbChob3N0X3Rz LT50dl9zZWMpOw0KICAgICB0YXJnZXRfdHMtPnR2X25zZWMgPSB0c3dhcGwo aG9zdF90cy0+dHZfbnNlYyk7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfdHMsIHRhcmdldF9hZGRyLCAxKTsNCisNCisgICAgcmV0dXJuIDA7 DQogfQ0KIA0KIGxvbmcgZG9fc3lzY2FsbCh2b2lkICpjcHVfZW52LCBpbnQg bnVtLCBsb25nIGFyZzEsIGxvbmcgYXJnMiwgbG9uZyBhcmczLCANCiAgICAg ICAgICAgICAgICAgbG9uZyBhcmc0LCBsb25nIGFyZzUsIGxvbmcgYXJnNikN CiB7DQotICAgIGxvbmcgcmV0Ow0KKyAgICBsb25nIHJldCA9IDA7DQogICAg IHN0cnVjdCBzdGF0IHN0Ow0KICAgICBzdHJ1Y3Qgc3RhdGZzIHN0ZnM7DQog ICAgIHZvaWQgKnA7DQpAQCAtMjY3MSw3ICsyNjY5LDcgQEANCiAgICAgICAg ICAgICBzdHJ1Y3QgdXRpbWJ1ZiB0YnVmLCAqaG9zdF90YnVmOw0KICAgICAg ICAgICAgIHN0cnVjdCB0YXJnZXRfdXRpbWJ1ZiAqdGFyZ2V0X3RidWY7DQog ICAgICAgICAgICAgaWYgKGFyZzIpIHsNCi0gICAgICAgICAgICAgICAgbG9j a191c2VyX3N0cnVjdCh0YXJnZXRfdGJ1ZiwgYXJnMiwgMSk7DQorCQlpZigg bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF90YnVmLGFyZzIs c2l6ZW9mKHN0cnVjdCB0YXJnZXRfdXRpbWJ1ZiksMSxQQUdFX1JFQUQpICkg cmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgICAgIHRidWYuYWN0aW1l ID0gdHN3YXBsKHRhcmdldF90YnVmLT5hY3RpbWUpOw0KICAgICAgICAgICAg ICAgICB0YnVmLm1vZHRpbWUgPSB0c3dhcGwodGFyZ2V0X3RidWYtPm1vZHRp bWUpOw0KICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFy Z2V0X3RidWYsIGFyZzIsIDApOw0KQEAgLTI2ODksOSArMjY4NywxMSBAQA0K ICAgICAgICAgew0KICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICp0dnAs IHR2WzJdOw0KICAgICAgICAgICAgIGlmIChhcmcyKSB7DQotICAgICAgICAg ICAgICAgIHRhcmdldF90b19ob3N0X3RpbWV2YWwoJnR2WzBdLCBhcmcyKTsN Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmdHZb MV0sDQotICAgICAgICAgICAgICAgICAgICBhcmcyICsgc2l6ZW9mIChzdHJ1 Y3QgdGFyZ2V0X3RpbWV2YWwpKTsNCisgICAgICAgICAgICAgICAgaWYoIGNv cHlfZnJvbV91c2VyX3RpbWV2YWwoJnR2WzBdLCAoc3RydWN0IHRhcmdldF90 aW1ldmFsICopYXJnMikgKQ0KKwkJCXJldHVybiAtRUZBVUxUOw0KKyAgICAg ICAgICAgICAgICBpZiggY29weV9mcm9tX3VzZXJfdGltZXZhbCgmdHZbMV0s DQorCQkgICAgKHN0cnVjdCB0YXJnZXRfdGltZXZhbCAqKShhcmcyICsgc2l6 ZW9mIChzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKSkgKQ0KKwkJCXJldHVybiAt RUZBVUxUOw0KICAgICAgICAgICAgICAgICB0dnAgPSB0djsNCiAgICAgICAg ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICB0dnAgPSBOVUxMOw0K QEAgLTI4NjAsNyArMjg2MCw3IEBADQogICAgICAgICAgICAgc3RydWN0IHRh cmdldF9vbGRfc2lnYWN0aW9uICpvbGRfYWN0Ow0KICAgICAgICAgICAgIHN0 cnVjdCB0YXJnZXRfc2lnYWN0aW9uIGFjdCwgb2FjdCwgKnBhY3Q7DQogICAg ICAgICAgICAgaWYgKGFyZzIpIHsNCi0gICAgICAgICAgICAgICAgbG9ja191 c2VyX3N0cnVjdChvbGRfYWN0LCBhcmcyLCAxKTsNCisJCWlmKCBsb2NrX2Fu ZF9jaGVja191c2VyX3N0cnVjdCgmb2xkX2FjdCxhcmcyLHNpemVvZigqb2xk X2FjdCksMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICAgICAgICAgIGFjdC5fc2FfaGFuZGxlciA9IG9sZF9hY3QtPl9zYV9oYW5k bGVyOw0KICAgICAgICAgICAgICAgICB0YXJnZXRfc2lnaW5pdHNldCgmYWN0 LnNhX21hc2ssIG9sZF9hY3QtPnNhX21hc2spOw0KICAgICAgICAgICAgICAg ICBhY3Quc2FfZmxhZ3MgPSBvbGRfYWN0LT5zYV9mbGFnczsNCkBAIC0yODcy LDcgKzI4NzIsNyBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBy ZXQgPSBnZXRfZXJybm8oZG9fc2lnYWN0aW9uKGFyZzEsIHBhY3QsICZvYWN0 KSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzMp IHsNCi0gICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdChvbGRfYWN0 LCBhcmczLCAwKTsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVj dCgmb2xkX2FjdCxhcmczLHNpemVvZigqb2xkX2FjdCksMCxQQUdFX1dSSVRF KSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgICAgICBvbGRfYWN0 LT5fc2FfaGFuZGxlciA9IG9hY3QuX3NhX2hhbmRsZXI7DQogICAgICAgICAg ICAgICAgIG9sZF9hY3QtPnNhX21hc2sgPSBvYWN0LnNhX21hc2suc2lnWzBd Ow0KICAgICAgICAgICAgICAgICBvbGRfYWN0LT5zYV9mbGFncyA9IG9hY3Qu c2FfZmxhZ3M7DQpAQCAtMjg4Myw3ICsyODgzLDcgQEANCiAJICAgIHN0cnVj dCB0YXJnZXRfc2lnYWN0aW9uIGFjdCwgb2FjdCwgKnBhY3QsICpvbGRfYWN0 Ow0KIA0KIAkgICAgaWYgKGFyZzIpIHsNCi0JCWxvY2tfdXNlcl9zdHJ1Y3Qo b2xkX2FjdCwgYXJnMiwgMSk7DQorCQlpZiggbG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJm9sZF9hY3QsYXJnMixzaXplb2YoKm9sZF9hY3QpLDEsUEFH RV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KIAkJYWN0Ll9zYV9oYW5kbGVy ID0gb2xkX2FjdC0+X3NhX2hhbmRsZXI7DQogCQl0YXJnZXRfc2lnaW5pdHNl dCgmYWN0LnNhX21hc2ssIG9sZF9hY3QtPnNhX21hc2suc2lnWzBdKTsNCiAJ CWFjdC5zYV9mbGFncyA9IG9sZF9hY3QtPnNhX2ZsYWdzOw0KQEAgLTI4OTYs NyArMjg5Niw3IEBADQogCSAgICByZXQgPSBnZXRfZXJybm8oZG9fc2lnYWN0 aW9uKGFyZzEsIHBhY3QsICZvYWN0KSk7DQogDQogCSAgICBpZiAoIWlzX2Vy cm9yKHJldCkgJiYgYXJnMykgew0KLQkJbG9ja191c2VyX3N0cnVjdChvbGRf YWN0LCBhcmczLCAwKTsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmb2xkX2FjdCxhcmczLHNpemVvZigqb2xkX2FjdCksMCxQQUdFX1dS SVRFKSApIHJldHVybiAtRUZBVUxUOw0KIAkJb2xkX2FjdC0+X3NhX2hhbmRs ZXIgPSBvYWN0Ll9zYV9oYW5kbGVyOw0KIAkJb2xkX2FjdC0+c2FfZmxhZ3Mg PSBvYWN0LnNhX2ZsYWdzOw0KIAkJb2xkX2FjdC0+c2FfbWFzay5zaWdbMF0g PSBvYWN0LnNhX21hc2suc2lnWzBdOw0KQEAgLTI5MTQsMTIgKzI5MTQsMTQg QEANCiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqYWN0 Ow0KICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uICpvYWN0 Ow0KIA0KLSAgICAgICAgICAgIGlmIChhcmcyKQ0KLSAgICAgICAgICAgICAg ICBsb2NrX3VzZXJfc3RydWN0KGFjdCwgYXJnMiwgMSk7DQorICAgICAgICAg ICAgaWYgKGFyZzIpIHsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmYWN0LGFyZzIsc2l6ZW9mKCphY3QpLDEsUEFHRV9SRUFEKSApIHJl dHVybiAtRUZBVUxUOw0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgZWxzZQ0KICAgICAgICAgICAgICAgICBhY3QgPSBOVUxMOw0KLSAgICAg ICAgICAgIGlmIChhcmczKQ0KLSAgICAgICAgICAgICAgICBsb2NrX3VzZXJf c3RydWN0KG9hY3QsIGFyZzMsIDApOw0KKyAgICAgICAgICAgIGlmIChhcmcz KSB7DQorCQlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJm9hY3Qs YXJnMixzaXplb2YoKm9hY3QpLDAsUEFHRV9XUklURSkgKSByZXR1cm4gLUVG QVVMVDsNCisgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGVsc2UN CiAgICAgICAgICAgICAgICAgb2FjdCA9IE5VTEw7DQogICAgICAgICAgICAg cmV0ID0gZ2V0X2Vycm5vKGRvX3NpZ2FjdGlvbihhcmcxLCBhY3QsIG9hY3Qp KTsNCkBAIC0zMDQ2LDcgKzMwNDgsNyBAQA0KICAgICAgICAgICAgIHNpZ3Nl dF90IHNldDsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2lncGVu ZGluZygmc2V0KSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQp KSB7DQotICAgICAgICAgICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMSwgc2l6 ZW9mKHRhcmdldF9zaWdzZXRfdCksIDApOw0KKwkJaWYoIGxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZwLGFyZzEsc2l6ZW9mKHRhcmdldF9zaWdzZXRf dCksMCxQQUdFX1dSSVRFKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAg ICAgICAgICBob3N0X3RvX3RhcmdldF9zaWdzZXQocCwgJnNldCk7DQogICAg ICAgICAgICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIHNpemVvZih0YXJn ZXRfc2lnc2V0X3QpKTsNCiAgICAgICAgICAgICB9DQpAQCAtMzA1Niw3ICsz MDU4LDcgQEANCiAgICAgY2FzZSBUQVJHRVRfTlJfc2lnc3VzcGVuZDoNCiAg ICAgICAgIHsNCiAgICAgICAgICAgICBzaWdzZXRfdCBzZXQ7DQotICAgICAg ICAgICAgcCA9IGxvY2tfdXNlcihhcmcxLCBzaXplb2YodGFyZ2V0X3NpZ3Nl dF90KSwgMSk7DQorCSAgICBpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1 Y3QoJnAsYXJnMSxzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwxLFBBR0VfUkVB RCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICB0YXJnZXRfdG9f aG9zdF9vbGRfc2lnc2V0KCZzZXQsIHApOw0KICAgICAgICAgICAgIHVubG9j a191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgICAgIHJldCA9IGdldF9l cnJubyhzaWdzdXNwZW5kKCZzZXQpKTsNCkBAIC0zMDY2LDcgKzMwNjgsNyBA QA0KICAgICBjYXNlIFRBUkdFVF9OUl9ydF9zaWdzdXNwZW5kOg0KICAgICAg ICAgew0KICAgICAgICAgICAgIHNpZ3NldF90IHNldDsNCi0gICAgICAgICAg ICBwID0gbG9ja191c2VyKGFyZzEsIHNpemVvZih0YXJnZXRfc2lnc2V0X3Qp LCAxKTsNCisJICAgIGlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm cCxhcmcxLHNpemVvZih0YXJnZXRfc2lnc2V0X3QpLDEsUEFHRV9SRUFEKSAp IHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X3NpZ3NldCgmc2V0LCBwKTsNCiAgICAgICAgICAgICB1bmxvY2tfdXNlcihw LCBhcmcxLCAwKTsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2ln c3VzcGVuZCgmc2V0KSk7DQpAQCAtMzA3OCwxOCArMzA4MCwxOCBAQA0KICAg ICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB1dHMsICpwdXRzOw0KICAgICAg ICAgICAgIHNpZ2luZm9fdCB1aW5mbzsNCiAgICAgICAgICAgICANCi0gICAg ICAgICAgICBwID0gbG9ja191c2VyKGFyZzEsIHNpemVvZih0YXJnZXRfc2ln c2V0X3QpLCAxKTsNCisJICAgIGlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmcCxhcmcxLHNpemVvZih0YXJnZXRfc2lnc2V0X3QpLDEsUEFHRV9S RUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHRhcmdldF90 b19ob3N0X3NpZ3NldCgmc2V0LCBwKTsNCiAgICAgICAgICAgICB1bmxvY2tf dXNlcihwLCBhcmcxLCAwKTsNCiAgICAgICAgICAgICBpZiAoYXJnMykgew0K ICAgICAgICAgICAgICAgICBwdXRzID0gJnV0czsNCi0gICAgICAgICAgICAg ICAgdGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMocHV0cywgYXJnMyk7DQorICAg ICAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl90aW1lc3BlYyhwdXRz LCAoc3RydWN0IHRhcmdldF90aW1lc3BlYyAqKWFyZzMpICkgcmV0dXJuIC1F RkFVTFQ7DQogICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg ICAgcHV0cyA9IE5VTEw7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhzaWd0aW1lZHdhaXQoJnNldCwgJnVpbmZvLCBw dXRzKSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFy ZzIpIHsNCi0gICAgICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcyLCBz aXplb2YodGFyZ2V0X3NpZ3NldF90KSwgMCk7DQorCQlpZiggbG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJnMixzaXplb2YodGFyZ2V0X3NpZ3Nl dF90KSwwLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NpZ2luZm8ocCwgJnVpbmZvKTsN CiAgICAgICAgICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMiwgc2l6ZW9m KHRhcmdldF9zaWdzZXRfdCkpOw0KICAgICAgICAgICAgIH0NCkBAIC0zMDk4 LDcgKzMxMDAsNyBAQA0KICAgICBjYXNlIFRBUkdFVF9OUl9ydF9zaWdxdWV1 ZWluZm86DQogICAgICAgICB7DQogICAgICAgICAgICAgc2lnaW5mb190IHVp bmZvOw0KLSAgICAgICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMywgc2l6ZW9m KHRhcmdldF9zaWdzZXRfdCksIDEpOw0KKwkgICAgaWYoIGxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZwLGFyZzMsc2l6ZW9mKHRhcmdldF9zaWdzZXRf dCksMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAg ICAgdGFyZ2V0X3RvX2hvc3Rfc2lnaW5mbygmdWluZm8sIHApOw0KICAgICAg ICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhzeXNfcnRfc2lncXVldWVpbmZvKGFyZzEsIGFy ZzIsICZ1aW5mbykpOw0KQEAgLTMxNTMsNyArMzE1NSw3IEBADQogICAgICAg ICAgICAgc3RydWN0IHJ1c2FnZSBydXNhZ2U7DQogICAgICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKGdldHJ1c2FnZShhcmcxLCAmcnVzYWdlKSk7DQogICAg ICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICAgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X3J1c2FnZShhcmcyLCAmcnVzYWdlKTsNCisg ICAgICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl9ydXNhZ2UoKHN0cnVj dCB0YXJnZXRfcnVzYWdlICopYXJnMiwgJnJ1c2FnZSkgKSByZXR1cm4gLUVG QVVMVDsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBi cmVhazsNCkBAIC0zMTYyLDE0ICszMTY0LDE0IEBADQogICAgICAgICAgICAg c3RydWN0IHRpbWV2YWwgdHY7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vy cm5vKGdldHRpbWVvZmRheSgmdHYsIE5VTEwpKTsNCiAgICAgICAgICAgICBp ZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgICAgICAgICAgaG9zdF90 b190YXJnZXRfdGltZXZhbChhcmcxLCAmdHYpOw0KKyAgICAgICAgICAgICAg ICBpZiggY29weV90b191c2VyX3RpbWV2YWwoKHN0cnVjdCB0YXJnZXRfdGlt ZXZhbCAqKWFyZzEsICZ0dikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg ICAgICB9DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCiAgICAgY2Fz ZSBUQVJHRVRfTlJfc2V0dGltZW9mZGF5Og0KICAgICAgICAgew0KICAgICAg ICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2Ow0KLSAgICAgICAgICAgIHRhcmdl dF90b19ob3N0X3RpbWV2YWwoJnR2LCBhcmcxKTsNCisgICAgICAgICAgICBp ZiggY29weV9mcm9tX3VzZXJfdGltZXZhbCgmdHYsIChzdHJ1Y3QgdGFyZ2V0 X3RpbWV2YWwgKilhcmcxKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAg ICAgIHJldCA9IGdldF9lcnJubyhzZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKSk7 DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC0zMzMxLDI0ICsz MzMzLDI0IEBADQogI2VuZGlmDQogICAgIGNhc2UgVEFSR0VUX05SX3N0YXRm czoNCiAgICAgICAgIHAgPSBsb2NrX3VzZXJfc3RyaW5nKGFyZzEpOw0KKyAg ICAgICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQscCwxKSApIHJldHVy biAtRUZBVUxUOw0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHN0YXRmcyhw YXRoKHApLCAmc3RmcykpOw0KICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJn MSwgMCk7DQogICAgIGNvbnZlcnRfc3RhdGZzOg0KICAgICAgICAgaWYgKCFp c19lcnJvcihyZXQpKSB7DQotICAgICAgICAgICAgc3RydWN0IHRhcmdldF9z dGF0ZnMgKnRhcmdldF9zdGZzOw0KKyAgICAgICAgICAgIHN0cnVjdCB0YXJn ZXRfc3RhdGZzICp0YXJnZXRfc3RmcyA9IChzdHJ1Y3QgdGFyZ2V0X3N0YXRm cyAqKWFyZzI7DQogICAgICAgICAgICAgDQotICAgICAgICAgICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfc3RmcywgYXJnMiwgMCk7DQotICAgICAgICAg ICAgLyogPz8/IHB1dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCi0g ICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfdHlwZSwgJnRhcmdldF9zdGZz LT5mX3R5cGUpOw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9ic2l6 ZSwgJnRhcmdldF9zdGZzLT5mX2JzaXplKTsNCi0gICAgICAgICAgICBwdXRf dXNlcihzdGZzLmZfYmxvY2tzLCAmdGFyZ2V0X3N0ZnMtPmZfYmxvY2tzKTsN Ci0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfYmZyZWUsICZ0YXJnZXRf c3Rmcy0+Zl9iZnJlZSk7DQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5m X2JhdmFpbCwgJnRhcmdldF9zdGZzLT5mX2JhdmFpbCk7DQotICAgICAgICAg ICAgcHV0X3VzZXIoc3Rmcy5mX2ZpbGVzLCAmdGFyZ2V0X3N0ZnMtPmZfZmls ZXMpOw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9mZnJlZSwgJnRh cmdldF9zdGZzLT5mX2ZmcmVlKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihz dGZzLmZfZnNpZC5fX3ZhbFswXSwgJnRhcmdldF9zdGZzLT5mX2ZzaWQpOw0K LSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9uYW1lbGVuLCAmdGFyZ2V0 X3N0ZnMtPmZfbmFtZWxlbik7DQotICAgICAgICAgICAgdW5sb2NrX3VzZXJf c3RydWN0KHRhcmdldF9zdGZzLCBhcmcyLCAxKTsNCisJICAgIGlmKCAhYWNj ZXNzX29rKFZFUklGWV9XUklURSx0YXJnZXRfc3RmcyxzaXplb2Yoc3RydWN0 IHRhcmdldF9zdGF0ZnMpKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICAgICAg ICAgIC8qIHVzZSBfX3B1dF91c2VyIHNpbmNlIHdlIGp1c3QgdmFsaWRhdGVk IHRoZSBlbnRpcmUgYnVmZmZlci4gICovDQorICAgICAgICAgICAgX19wdXRf dXNlcihzdGZzLmZfdHlwZSwgJnRhcmdldF9zdGZzLT5mX3R5cGUpOw0KKyAg ICAgICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2JzaXplLCAmdGFyZ2V0X3N0 ZnMtPmZfYnNpemUpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5m X2Jsb2NrcywgJnRhcmdldF9zdGZzLT5mX2Jsb2Nrcyk7DQorICAgICAgICAg ICAgX19wdXRfdXNlcihzdGZzLmZfYmZyZWUsICZ0YXJnZXRfc3Rmcy0+Zl9i ZnJlZSk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfYmF2YWls LCAmdGFyZ2V0X3N0ZnMtPmZfYmF2YWlsKTsNCisgICAgICAgICAgICBfX3B1 dF91c2VyKHN0ZnMuZl9maWxlcywgJnRhcmdldF9zdGZzLT5mX2ZpbGVzKTsN CisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9mZnJlZSwgJnRhcmdl dF9zdGZzLT5mX2ZmcmVlKTsNCisgICAgICAgICAgICBfX3B1dF91c2VyKHN0 ZnMuZl9mc2lkLl9fdmFsWzBdLCAmdGFyZ2V0X3N0ZnMtPmZfZnNpZCk7DQor ICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfbmFtZWxlbiwgJnRhcmdl dF9zdGZzLT5mX25hbWVsZW4pOw0KICAgICAgICAgfQ0KICAgICAgICAgYnJl YWs7DQogICAgIGNhc2UgVEFSR0VUX05SX2ZzdGF0ZnM6DQpAQCAtMzM1Nywy NCArMzM1OSwyNCBAQA0KICNpZmRlZiBUQVJHRVRfTlJfc3RhdGZzNjQNCiAg ICAgY2FzZSBUQVJHRVRfTlJfc3RhdGZzNjQ6DQogICAgICAgICBwID0gbG9j a191c2VyX3N0cmluZyhhcmcxKTsNCisgICAgICAgIGlmKCAhYWNjZXNzX29r KFZFUklGWV9SRUFELHAsMSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg IHJldCA9IGdldF9lcnJubyhzdGF0ZnMocGF0aChwKSwgJnN0ZnMpKTsNCiAg ICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICBjb252ZXJ0 X3N0YXRmczY0Og0KICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQot ICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0ZnM2NCAqdGFyZ2V0X3N0 ZnM7DQorICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0ZnM2NCAqdGFy Z2V0X3N0ZnMgPSAoc3RydWN0IHRhcmdldF9zdGF0ZnM2NCAqKWFyZzM7DQog ICAgICAgICAgICAgDQotICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfc3RmcywgYXJnMywgMCk7DQotICAgICAgICAgICAgLyogPz8/IHB1 dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCi0gICAgICAgICAgICBw dXRfdXNlcihzdGZzLmZfdHlwZSwgJnRhcmdldF9zdGZzLT5mX3R5cGUpOw0K LSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9ic2l6ZSwgJnRhcmdldF9z dGZzLT5mX2JzaXplKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZf YmxvY2tzLCAmdGFyZ2V0X3N0ZnMtPmZfYmxvY2tzKTsNCi0gICAgICAgICAg ICBwdXRfdXNlcihzdGZzLmZfYmZyZWUsICZ0YXJnZXRfc3Rmcy0+Zl9iZnJl ZSk7DQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX2JhdmFpbCwgJnRh cmdldF9zdGZzLT5mX2JhdmFpbCk7DQotICAgICAgICAgICAgcHV0X3VzZXIo c3Rmcy5mX2ZpbGVzLCAmdGFyZ2V0X3N0ZnMtPmZfZmlsZXMpOw0KLSAgICAg ICAgICAgIHB1dF91c2VyKHN0ZnMuZl9mZnJlZSwgJnRhcmdldF9zdGZzLT5m X2ZmcmVlKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfZnNpZC5f X3ZhbFswXSwgJnRhcmdldF9zdGZzLT5mX2ZzaWQpOw0KLSAgICAgICAgICAg IHB1dF91c2VyKHN0ZnMuZl9uYW1lbGVuLCAmdGFyZ2V0X3N0ZnMtPmZfbmFt ZWxlbik7DQotICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdl dF9zdGZzLCBhcmczLCAwKTsNCisJICAgIGlmKCAhYWNjZXNzX29rKFZFUklG WV9XUklURSx0YXJnZXRfc3RmcyxzaXplb2Yoc3RydWN0IHRhcmdldF9zdGF0 ZnM2NCkpICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgICAgICAgICAgLyogdXNl IF9fcHV0X3VzZXIgc2luY2Ugd2UganVzdCB2YWxpZGF0ZWQgdGhlIGVudGly ZSBidWZmZmVyLiAgKi8NCisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMu Zl90eXBlLCAmdGFyZ2V0X3N0ZnMtPmZfdHlwZSk7DQorICAgICAgICAgICAg X19wdXRfdXNlcihzdGZzLmZfYnNpemUsICZ0YXJnZXRfc3Rmcy0+Zl9ic2l6 ZSk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfYmxvY2tzLCAm dGFyZ2V0X3N0ZnMtPmZfYmxvY2tzKTsNCisgICAgICAgICAgICBfX3B1dF91 c2VyKHN0ZnMuZl9iZnJlZSwgJnRhcmdldF9zdGZzLT5mX2JmcmVlKTsNCisg ICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9iYXZhaWwsICZ0YXJnZXRf c3Rmcy0+Zl9iYXZhaWwpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Rm cy5mX2ZpbGVzLCAmdGFyZ2V0X3N0ZnMtPmZfZmlsZXMpOw0KKyAgICAgICAg ICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2ZmcmVlLCAmdGFyZ2V0X3N0ZnMtPmZf ZmZyZWUpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2ZzaWQu X192YWxbMF0sICZ0YXJnZXRfc3Rmcy0+Zl9mc2lkKTsNCisgICAgICAgICAg ICBfX3B1dF91c2VyKHN0ZnMuZl9uYW1lbGVuLCAmdGFyZ2V0X3N0ZnMtPmZf bmFtZWxlbik7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCiAgICAg Y2FzZSBUQVJHRVRfTlJfZnN0YXRmczY0Og0KQEAgLTMzOTIsNyArMzM5NCw3 IEBADQogI2VuZGlmDQogI2lmZGVmIFRBUkdFVF9OUl9hY2NlcHQNCiAgICAg Y2FzZSBUQVJHRVRfTlJfYWNjZXB0Og0KLSAgICAgICAgcmV0ID0gZG9fYWNj ZXB0KGFyZzEsIGFyZzIsIGFyZzMpOw0KKyAgICAgICAgcmV0ID0gZG9fYWNj ZXB0KGFyZzEsIGFyZzIsIChzb2NrbGVuX3QgKilhcmczKTsNCiAgICAgICAg IGJyZWFrOw0KICNlbmRpZg0KICNpZmRlZiBUQVJHRVRfTlJfYmluZA0KQEAg LTM0MDcsMTcgKzM0MDksMTcgQEANCiAjZW5kaWYNCiAjaWZkZWYgVEFSR0VU X05SX2dldHBlZXJuYW1lDQogICAgIGNhc2UgVEFSR0VUX05SX2dldHBlZXJu YW1lOg0KLSAgICAgICAgcmV0ID0gZG9fZ2V0cGVlcm5hbWUoYXJnMSwgYXJn MiwgYXJnMyk7DQorICAgICAgICByZXQgPSBkb19nZXRwZWVybmFtZShhcmcx LCBhcmcyLCAoc29ja2xlbl90ICopYXJnMyk7DQogICAgICAgICBicmVhazsN CiAjZW5kaWYNCiAjaWZkZWYgVEFSR0VUX05SX2dldHNvY2tuYW1lDQogICAg IGNhc2UgVEFSR0VUX05SX2dldHNvY2tuYW1lOg0KLSAgICAgICAgcmV0ID0g ZG9fZ2V0c29ja25hbWUoYXJnMSwgYXJnMiwgYXJnMyk7DQorICAgICAgICBy ZXQgPSBkb19nZXRzb2NrbmFtZShhcmcxLCBhcmcyLCAoc29ja2xlbl90ICop YXJnMyk7DQogICAgICAgICBicmVhazsNCiAjZW5kaWYNCiAjaWZkZWYgVEFS R0VUX05SX2dldHNvY2tvcHQNCiAgICAgY2FzZSBUQVJHRVRfTlJfZ2V0c29j a29wdDoNCi0gICAgICAgIHJldCA9IGRvX2dldHNvY2tvcHQoYXJnMSwgYXJn MiwgYXJnMywgYXJnNCwgYXJnNSk7DQorICAgICAgICByZXQgPSBkb19nZXRz b2Nrb3B0KGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIChzb2NrbGVuX3QgKilh cmc1KTsNCiAgICAgICAgIGJyZWFrOw0KICNlbmRpZg0KICNpZmRlZiBUQVJH RVRfTlJfbGlzdGVuDQpAQCAtMzQ4OCwxOSArMzQ5MCwyMCBAQA0KIA0KICAg ICAgICAgICAgIGlmIChhcmcyKSB7DQogICAgICAgICAgICAgICAgIHB2YWx1 ZSA9ICZ2YWx1ZTsNCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rf dGltZXZhbCgmcHZhbHVlLT5pdF9pbnRlcnZhbCwgDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMik7DQotICAgICAgICAg ICAgICAgIHRhcmdldF90b19ob3N0X3RpbWV2YWwoJnB2YWx1ZS0+aXRfdmFs dWUsIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFyZzIgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1ldmFsKSk7DQorICAg ICAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl90aW1ldmFsKCZwdmFs dWUtPml0X2ludGVydmFsLCAoc3RydWN0IHRhcmdldF90aW1ldmFsICopYXJn MikgKQ0KKwkJCXJldHVybiAtRUZBVUxUOw0KKyAgICAgICAgICAgICAgICBp ZiggY29weV9mcm9tX3VzZXJfdGltZXZhbCgmcHZhbHVlLT5pdF92YWx1ZSwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ry dWN0IHRhcmdldF90aW1ldmFsICopKGFyZzIgKyBzaXplb2Yoc3RydWN0IHRh cmdldF90aW1ldmFsKSkpICkNCisJCQlyZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICBwdmFsdWUgPSBO VUxMOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICByZXQgPSBnZXRf ZXJybm8oc2V0aXRpbWVyKGFyZzEsIHB2YWx1ZSwgJm92YWx1ZSkpOw0KICAg ICAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSAmJiBhcmczKSB7DQotICAg ICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJnMywNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3ZhbHVl Lml0X2ludGVydmFsKTsNCi0gICAgICAgICAgICAgICAgaG9zdF90b190YXJn ZXRfdGltZXZhbChhcmczICsgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfdGltZXZh bCksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jm92YWx1ZS5pdF92YWx1ZSk7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5 X3RvX3VzZXJfdGltZXZhbCgoc3RydWN0IHRhcmdldF90aW1ldmFsICopYXJn MywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b3ZhbHVlLml0X2ludGVydmFsKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICAg ICAgICAgICAgICBpZiggY29weV90b191c2VyX3RpbWV2YWwoKHN0cnVjdCB0 YXJnZXRfdGltZXZhbCAqKShhcmczICsgc2l6ZW9mKHN0cnVjdCB0YXJnZXRf dGltZXZhbCkpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZvdmFsdWUuaXRfdmFsdWUpICkgcmV0dXJuIC1FRkFVTFQ7DQog ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQpA QCAtMzUxMCwyMCArMzUxMywyMiBAQA0KICAgICAgICAgICAgIA0KICAgICAg ICAgICAgIHJldCA9IGdldF9lcnJubyhnZXRpdGltZXIoYXJnMSwgJnZhbHVl KSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzIp IHsNCi0gICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXZhbChh cmcyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZ2YWx1ZS5pdF9pbnRlcnZhbCk7DQotICAgICAgICAgICAgICAgIGhvc3Rf dG9fdGFyZ2V0X3RpbWV2YWwoYXJnMiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0 X3RpbWV2YWwpLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ2YWx1ZS5pdF92YWx1ZSk7DQorICAgICAgICAgICAgICAgIGlm KCBjb3B5X3RvX3VzZXJfdGltZXZhbCgoc3RydWN0IHRhcmdldF90aW1ldmFs ICopYXJnMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmdmFsdWUuaXRfaW50ZXJ2YWwpICkgcmV0dXJuIC1FRkFVTFQ7DQor ICAgICAgICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfdGltZXZhbCgoc3Ry dWN0IHRhcmdldF90aW1ldmFsICopKGFyZzIgKyBzaXplb2Yoc3RydWN0IHRh cmdldF90aW1ldmFsKSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnZhbHVlLml0X3ZhbHVlKSApIHJldHVybiAtRUZBVUxU Ow0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFr Ow0KICAgICBjYXNlIFRBUkdFVF9OUl9zdGF0Og0KICAgICAgICAgcCA9IGxv Y2tfdXNlcl9zdHJpbmcoYXJnMSk7DQorICAgICAgICBpZiggIWFjY2Vzc19v ayhWRVJJRllfUkVBRCxwLDEpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICByZXQgPSBnZXRfZXJybm8oc3RhdChwYXRoKHApLCAmc3QpKTsNCiAgICAg ICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgZ290byBk b19zdGF0Ow0KICAgICBjYXNlIFRBUkdFVF9OUl9sc3RhdDoNCiAgICAgICAg IHAgPSBsb2NrX3VzZXJfc3RyaW5nKGFyZzEpOw0KKyAgICAgICAgaWYoICFh Y2Nlc3Nfb2soVkVSSUZZX1JFQUQscCwxKSApIHJldHVybiAtRUZBVUxUOw0K ICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGxzdGF0KHBhdGgocCksICZzdCkp Ow0KICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgICAg ICBnb3RvIGRvX3N0YXQ7DQpAQCAtMzUzNCw3ICszNTM5LDcgQEANCiAgICAg ICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgICAgICAg ICAgc3RydWN0IHRhcmdldF9zdGF0ICp0YXJnZXRfc3Q7DQogDQotICAgICAg ICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0LCBhcmcyLCAw KTsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0 X3N0LGFyZzIsc2l6ZW9mKCp0YXJnZXRfc3QpLDksUEFHRV9XUklURSkgKSBy ZXR1cm4gLUVGQVVMVDsNCiAjaWYgZGVmaW5lZChUQVJHRVRfTUlQUykNCiAg ICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF9kZXYgPSB0c3dhcDMyKHN0 LnN0X2Rldik7DQogI2Vsc2UNCkBAIC0zNTkzLDcgKzM1OTgsNyBAQA0KICAg ICAgICAgICAgIGludCBzdGF0dXM7DQogICAgICAgICAgICAgdGFyZ2V0X2xv bmcgc3RhdHVzX3B0ciA9IGFyZzI7DQogICAgICAgICAgICAgc3RydWN0IHJ1 c2FnZSBydXNhZ2UsICpydXNhZ2VfcHRyOw0KLSAgICAgICAgICAgIHRhcmdl dF91bG9uZyB0YXJnZXRfcnVzYWdlID0gYXJnNDsNCisgICAgICAgICAgICBz dHJ1Y3QgdGFyZ2V0X3J1c2FnZSAqdGFyZ2V0X3J1c2FnZSA9IChzdHJ1Y3Qg dGFyZ2V0X3J1c2FnZSAqKWFyZzQ7DQogICAgICAgICAgICAgaWYgKHRhcmdl dF9ydXNhZ2UpDQogICAgICAgICAgICAgICAgIHJ1c2FnZV9wdHIgPSAmcnVz YWdlOw0KICAgICAgICAgICAgIGVsc2UNCkBAIC0zNjAzLDcgKzM2MDgsOCBA QA0KICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX3B0cikNCiAgICAgICAg ICAgICAgICAgICAgIHRwdXRsKHN0YXR1c19wdHIsIHN0YXR1cyk7DQogICAg ICAgICAgICAgICAgIGlmICh0YXJnZXRfcnVzYWdlKSB7DQotICAgICAgICAg ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9ydXNhZ2UodGFyZ2V0X3J1c2Fn ZSwgJnJ1c2FnZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiggIWNvcHlf dG9fdXNlcl9ydXNhZ2UodGFyZ2V0X3J1c2FnZSwgJnJ1c2FnZSkgKQ0KKwkJ CXJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgfQ0KICAgICAgICAgfQ0KQEAgLTM5NjUsMTcgKzM5NzEsMTcgQEAN CiAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7DQogICAgICAgICAg ICAgcmV0ID0gZ2V0X2Vycm5vKHNjaGVkX3JyX2dldF9pbnRlcnZhbChhcmcx LCAmdHMpKTsNCiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsN Ci0gICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJn MiwgJnRzKTsNCisgICAgICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl90 aW1lc3BlYygoc3RydWN0IHRhcmdldF90aW1lc3BlYyAqKWFyZzIsICZ0cykg KSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9 DQogICAgICAgICBicmVhazsNCiAgICAgY2FzZSBUQVJHRVRfTlJfbmFub3Ns ZWVwOg0KICAgICAgICAgew0KICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3Bl YyByZXEsIHJlbTsNCi0gICAgICAgICAgICB0YXJnZXRfdG9faG9zdF90aW1l c3BlYygmcmVxLCBhcmcxKTsNCisgICAgICAgICAgICBpZiggY29weV9mcm9t X3VzZXJfdGltZXNwZWMoJnJlcSwgKHN0cnVjdCB0YXJnZXRfdGltZXNwZWMg KilhcmcxKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9 IGdldF9lcnJubyhuYW5vc2xlZXAoJnJlcSwgJnJlbSkpOw0KICAgICAgICAg ICAgIGlmIChpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAgICAgICAg ICAgICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnJlbSk7DQor ICAgICAgICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfdGltZXNwZWMoKHN0 cnVjdCB0YXJnZXRfdGltZXNwZWMgKilhcmcyLCAmcmVtKSApIHJldHVybiAt RUZBVUxUOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAg IGJyZWFrOw0KQEAgLTQwNzIsNiArNDA3OCw3IEBADQogI2lmZGVmIFRBUkdF VF9OUl9zdGF0NjQNCiAgICAgY2FzZSBUQVJHRVRfTlJfc3RhdDY0Og0KICAg ICAgICAgcCA9IGxvY2tfdXNlcl9zdHJpbmcoYXJnMSk7DQorICAgICAgICBp ZiggIWFjY2Vzc19vayhWRVJJRllfUkVBRCxwLDEpICkgcmV0dXJuIC1FRkFV TFQ7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8oc3RhdChwYXRoKHApLCAm c3QpKTsNCiAgICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAg ICAgICAgZ290byBkb19zdGF0NjQ7DQpAQCAtNDA3OSw2ICs0MDg2LDcgQEAN CiAjaWZkZWYgVEFSR0VUX05SX2xzdGF0NjQNCiAgICAgY2FzZSBUQVJHRVRf TlJfbHN0YXQ2NDoNCiAgICAgICAgIHAgPSBsb2NrX3VzZXJfc3RyaW5nKGFy ZzEpOw0KKyAgICAgICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQscCwx KSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5v KGxzdGF0KHBhdGgocCksICZzdCkpOw0KICAgICAgICAgdW5sb2NrX3VzZXIo cCwgYXJnMSwgMCk7DQogICAgICAgICBnb3RvIGRvX3N0YXQ2NDsNCkBAIC00 MDkxLDUzICs0MDk5LDUxIEBADQogICAgICAgICAgICAgaWYgKCFpc19lcnJv cihyZXQpKSB7DQogI2lmZGVmIFRBUkdFVF9BUk0NCiAgICAgICAgICAgICAg ICAgaWYgKCgoQ1BVQVJNU3RhdGUgKiljcHVfZW52KS0+ZWFiaSkgew0KLSAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCAq dGFyZ2V0X3N0Ow0KLSAgICAgICAgICAgICAgICAgICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDEpOw0KKyAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCAqdGFyZ2V0X3N0ID0gKHN0 cnVjdCB0YXJnZXRfZWFiaV9zdGF0NjQgKilhcmcyOw0KKwkJICAgIGlmKCAh YWNjZXNzX29rKFZFUklGWV9XUklURSx0YXJnZXRfc3Qsc2l6ZW9mKHN0cnVj dCB0YXJnZXRfZWFiaV9zdGF0NjQpKSApIHJldHVybiAtRUZBVUxUOw0KICAg ICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9m KHN0cnVjdCB0YXJnZXRfZWFiaV9zdGF0NjQpKTsNCi0gICAgICAgICAgICAg ICAgICAgIC8qIHB1dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCi0g ICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2RldiwgJnRhcmdl dF9zdC0+c3RfZGV2KTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2Vy KHN0LnN0X2lubywgJnRhcmdldF9zdC0+c3RfaW5vKTsNCisgICAgICAgICAg ICAgICAgICAgIC8qIHVzZSBfX3B1dF91c2VyKCkgc2luY2Ugd2UganVzdCBj aGVja2VkIHRoYXQgdGhlIGJ1ZmZlciBpcyB2YWxpZCAgKi8NCisgICAgICAg ICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfZGV2LCAmdGFyZ2V0X3N0 LT5zdF9kZXYpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihz dC5zdF9pbm8sICZ0YXJnZXRfc3QtPnN0X2lubyk7DQogI2lmZGVmIFRBUkdF VF9TVEFUNjRfSEFTX0JST0tFTl9TVF9JTk8NCi0gICAgICAgICAgICAgICAg ICAgIHB1dF91c2VyKHN0LnN0X2lubywgJnRhcmdldF9zdC0+X19zdF9pbm8p Ow0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9pbm8s ICZ0YXJnZXRfc3QtPl9fc3RfaW5vKTsNCiAjZW5kaWYNCi0gICAgICAgICAg ICAgICAgICAgIHB1dF91c2VyKHN0LnN0X21vZGUsICZ0YXJnZXRfc3QtPnN0 X21vZGUpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3Rf bmxpbmssICZ0YXJnZXRfc3QtPnN0X25saW5rKTsNCi0gICAgICAgICAgICAg ICAgICAgIHB1dF91c2VyKHN0LnN0X3VpZCwgJnRhcmdldF9zdC0+c3RfdWlk KTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2dpZCwg JnRhcmdldF9zdC0+c3RfZ2lkKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1 dF91c2VyKHN0LnN0X3JkZXYsICZ0YXJnZXRfc3QtPnN0X3JkZXYpOw0KKyAg ICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9tb2RlLCAmdGFy Z2V0X3N0LT5zdF9tb2RlKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0 X3VzZXIoc3Quc3RfbmxpbmssICZ0YXJnZXRfc3QtPnN0X25saW5rKTsNCisg ICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfdWlkLCAmdGFy Z2V0X3N0LT5zdF91aWQpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRf dXNlcihzdC5zdF9naWQsICZ0YXJnZXRfc3QtPnN0X2dpZCk7DQorICAgICAg ICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X3JkZXYsICZ0YXJnZXRf c3QtPnN0X3JkZXYpOw0KICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiBi ZXR0ZXIgdXNlIG9mIGtlcm5lbCBzdHJ1Y3QgKi8NCi0gICAgICAgICAgICAg ICAgICAgIHB1dF91c2VyKHN0LnN0X3NpemUsICZ0YXJnZXRfc3QtPnN0X3Np emUpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfYmxr c2l6ZSwgJnRhcmdldF9zdC0+c3RfYmxrc2l6ZSk7DQotICAgICAgICAgICAg ICAgICAgICBwdXRfdXNlcihzdC5zdF9ibG9ja3MsICZ0YXJnZXRfc3QtPnN0 X2Jsb2Nrcyk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5z dF9hdGltZSwgJnRhcmdldF9zdC0+dGFyZ2V0X3N0X2F0aW1lKTsNCi0gICAg ICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X210aW1lLCAmdGFyZ2V0 X3N0LT50YXJnZXRfc3RfbXRpbWUpOw0KLSAgICAgICAgICAgICAgICAgICAg cHV0X3VzZXIoc3Quc3RfY3RpbWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9j dGltZSk7DQotICAgICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1 Y3QodGFyZ2V0X3N0LCBhcmcyLCAwKTsNCisgICAgICAgICAgICAgICAgICAg IF9fcHV0X3VzZXIoc3Quc3Rfc2l6ZSwgJnRhcmdldF9zdC0+c3Rfc2l6ZSk7 DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2Jsa3Np emUsICZ0YXJnZXRfc3QtPnN0X2Jsa3NpemUpOw0KKyAgICAgICAgICAgICAg ICAgICAgX19wdXRfdXNlcihzdC5zdF9ibG9ja3MsICZ0YXJnZXRfc3QtPnN0 X2Jsb2Nrcyk7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0 LnN0X2F0aW1lLCAmdGFyZ2V0X3N0LT50YXJnZXRfc3RfYXRpbWUpOw0KKyAg ICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9tdGltZSwgJnRh cmdldF9zdC0+dGFyZ2V0X3N0X210aW1lKTsNCisgICAgICAgICAgICAgICAg ICAgIF9fcHV0X3VzZXIoc3Quc3RfY3RpbWUsICZ0YXJnZXRfc3QtPnRhcmdl dF9zdF9jdGltZSk7DQogICAgICAgICAgICAgICAgIH0gZWxzZQ0KICNlbmRp Zg0KICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdGFyZ2V0X3N0YXQ2NCAqdGFyZ2V0X3N0Ow0KLSAgICAgICAgICAg ICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDEp Ow0KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0NjQg KnRhcmdldF9zdCA9IChzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCAqKWFyZzI7DQor CQkgICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLHRhcmdldF9zdCxz aXplb2Yoc3RydWN0IHRhcmdldF9zdGF0NjQpKSApIHJldHVybiAtRUZBVUxU Ow0KICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwg c2l6ZW9mKHN0cnVjdCB0YXJnZXRfc3RhdDY0KSk7DQotICAgICAgICAgICAg ICAgICAgICAvKiA/Pz8gcHV0X3VzZXIgaXMgcHJvYmFibHkgd3JvbmcuICAq Lw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfZGV2LCAm dGFyZ2V0X3N0LT5zdF9kZXYpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0 X3VzZXIoc3Quc3RfaW5vLCAmdGFyZ2V0X3N0LT5zdF9pbm8pOw0KKyAgICAg ICAgICAgICAgICAgICAgLyogdXNlIF9fcHV0X3VzZXIoKSBzaW5jZSB3ZSBq dXN0IGNoZWNrZWQgdGhhdCB0aGUgYnVmZmVyIGlzIHZhbGlkICAqLw0KKyAg ICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9kZXYsICZ0YXJn ZXRfc3QtPnN0X2Rldik7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91 c2VyKHN0LnN0X2lubywgJnRhcmdldF9zdC0+c3RfaW5vKTsNCiAjaWZkZWYg VEFSR0VUX1NUQVQ2NF9IQVNfQlJPS0VOX1NUX0lOTw0KLSAgICAgICAgICAg ICAgICAgICAgcHV0X3VzZXIoc3Quc3RfaW5vLCAmdGFyZ2V0X3N0LT5fX3N0 X2lubyk7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0 X2lubywgJnRhcmdldF9zdC0+X19zdF9pbm8pOw0KICNlbmRpZg0KLSAgICAg ICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfbW9kZSwgJnRhcmdldF9z dC0+c3RfbW9kZSk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihz dC5zdF9ubGluaywgJnRhcmdldF9zdC0+c3RfbmxpbmspOw0KLSAgICAgICAg ICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfdWlkLCAmdGFyZ2V0X3N0LT5z dF91aWQpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3Rf Z2lkLCAmdGFyZ2V0X3N0LT5zdF9naWQpOw0KLSAgICAgICAgICAgICAgICAg ICAgcHV0X3VzZXIoc3Quc3RfcmRldiwgJnRhcmdldF9zdC0+c3RfcmRldik7 DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X21vZGUs ICZ0YXJnZXRfc3QtPnN0X21vZGUpOw0KKyAgICAgICAgICAgICAgICAgICAg X19wdXRfdXNlcihzdC5zdF9ubGluaywgJnRhcmdldF9zdC0+c3Rfbmxpbmsp Ow0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF91aWQs ICZ0YXJnZXRfc3QtPnN0X3VpZCk7DQorICAgICAgICAgICAgICAgICAgICBf X3B1dF91c2VyKHN0LnN0X2dpZCwgJnRhcmdldF9zdC0+c3RfZ2lkKTsNCisg ICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfcmRldiwgJnRh cmdldF9zdC0+c3RfcmRldik7DQogICAgICAgICAgICAgICAgICAgICAvKiBY WFg6IGJldHRlciB1c2Ugb2Yga2VybmVsIHN0cnVjdCAqLw0KLSAgICAgICAg ICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3Rfc2l6ZSwgJnRhcmdldF9zdC0+ c3Rfc2l6ZSk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5z dF9ibGtzaXplLCAmdGFyZ2V0X3N0LT5zdF9ibGtzaXplKTsNCi0gICAgICAg ICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2Jsb2NrcywgJnRhcmdldF9z dC0+c3RfYmxvY2tzKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2Vy KHN0LnN0X2F0aW1lLCAmdGFyZ2V0X3N0LT50YXJnZXRfc3RfYXRpbWUpOw0K LSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfbXRpbWUsICZ0 YXJnZXRfc3QtPnRhcmdldF9zdF9tdGltZSk7DQotICAgICAgICAgICAgICAg ICAgICBwdXRfdXNlcihzdC5zdF9jdGltZSwgJnRhcmdldF9zdC0+dGFyZ2V0 X3N0X2N0aW1lKTsNCi0gICAgICAgICAgICAgICAgICAgIHVubG9ja191c2Vy X3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDApOw0KKyAgICAgICAgICAgICAg ICAgICAgX19wdXRfdXNlcihzdC5zdF9zaXplLCAmdGFyZ2V0X3N0LT5zdF9z aXplKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3Rf Ymxrc2l6ZSwgJnRhcmdldF9zdC0+c3RfYmxrc2l6ZSk7DQorICAgICAgICAg ICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2Jsb2NrcywgJnRhcmdldF9z dC0+c3RfYmxvY2tzKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3Vz ZXIoc3Quc3RfYXRpbWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9hdGltZSk7 DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X210aW1l LCAmdGFyZ2V0X3N0LT50YXJnZXRfc3RfbXRpbWUpOw0KKyAgICAgICAgICAg ICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9jdGltZSwgJnRhcmdldF9zdC0+ dGFyZ2V0X3N0X2N0aW1lKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgIH0NCiAgICAgICAgIH0NCkBAIC00NTgzLDcgKzQ1ODksNyBAQA0K ICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHRzOw0KICAgICAgICAgcmV0ID0g Z2V0X2Vycm5vKGNsb2NrX2dldHRpbWUoYXJnMSwgJnRzKSk7DQogICAgICAg ICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgICAgICBob3N0X3Rv X3RhcmdldF90aW1lc3BlYyhhcmcyLCAmdHMpOw0KKyAgICAgICAgICAgIGlm KCBjb3B5X3RvX3VzZXJfdGltZXNwZWMoKHN0cnVjdCB0YXJnZXRfdGltZXNw ZWMgKilhcmcyLCAmdHMpKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIH0N CiAgICAgICAgIGJyZWFrOw0KICAgICB9DQpAQCAtNDU5NCw3ICs0NjAwLDcg QEANCiAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0czsNCiAgICAgICAgIHJl dCA9IGdldF9lcnJubyhjbG9ja19nZXRyZXMoYXJnMSwgJnRzKSk7DQogICAg ICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgICAgICBob3N0 X3RvX3RhcmdldF90aW1lc3BlYyhhcmcyLCAmdHMpOw0KKyAgICAgICAgICAg IGlmKCBjb3B5X3RvX3VzZXJfdGltZXNwZWMoKHN0cnVjdCB0YXJnZXRfdGlt ZXNwZWMgKilhcmcyLCAmdHMpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICB9DQogICAgICAgICBicmVhazsNCiAgICAgfQ0KSW5kZXg6IHFlbXUvbGlu dXgtdXNlci9xZW11LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBx ZW11Lm9yaWcvbGludXgtdXNlci9xZW11LmgJMjAwNy0wNy0yMCAxMzo0Mzo1 OC4wMDAwMDAwMDAgLTA0MDANCisrKyBxZW11L2xpbnV4LXVzZXIvcWVtdS5o CTIwMDctMDctMjAgMTQ6NTI6NDkuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTcx LDcgKzE3MSw4IEBADQogI2RlZmluZSBWRVJJRllfUkVBRCAwDQogI2RlZmlu ZSBWRVJJRllfV1JJVEUgMQ0KIA0KLSNkZWZpbmUgYWNjZXNzX29rKHR5cGUs YWRkcixzaXplKSAoMSkNCisjZGVmaW5lIGFjY2Vzc19vayh0eXBlLGFkZHIs c2l6ZSkgXA0KKyAgICAocGFnZV9jaGVja19yYW5nZSgodGFyZ2V0X3Vsb25n KWFkZHIsc2l6ZSwodHlwZT09VkVSSUZZX1JFQUQpP1BBR0VfUkVBRDpQQUdF X1dSSVRFKT09MCkNCiANCiAvKiBOT1RFIGdldF91c2VyIGFuZCBwdXRfdXNl ciB1c2UgaG9zdCBhZGRyZXNzZXMuICAqLw0KICNkZWZpbmUgX19wdXRfdXNl cih4LHB0cilcDQpAQCAtMjM4LDYgKzIzOSwyNiBAQA0KICAgICBfX3JldDtc DQogfSkNCiANCisjZGVmaW5lIGNvcHlfZnJvbV91c2VyKGhwdHIsIGdwdHIs IGxlbikgXA0KKyh7IFwNCisgICAgaW50IF9fY2Z1X3JldD0wO1wNCisgICAg aWYoIGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZ3B0ciwgKGxlbikgKSApXA0K KyAgICAgICAgbWVtY3B5KGhwdHIsZ3B0ciwobGVuKSk7IFwNCisgICAgZWxz ZSBcDQorICAgICAgICBfX2NmdV9yZXQ9MTtcDQorICAgIF9fY2Z1X3JldDsg XA0KK30pDQorDQorI2RlZmluZSBjb3B5X3RvX3VzZXIoZ3B0ciwgaHB0ciwg bGVuKSBcDQorKHsgXA0KKyAgICBpbnQgX19jdHVfcmV0PTA7XA0KKyAgICBp ZiggYWNjZXNzX29rKFZFUklGWV9XUklURSwgZ3B0ciwgKGxlbikpIClcDQor ICAgICAgICBtZW1jcHkoZ3B0cixocHRyLChsZW4pKTsgXA0KKyAgICBlbHNl IFwNCisgICAgICAgIF9fY3R1X3JldD0xO1wNCisgICAgX19jdHVfcmV0OyBc DQorfSkNCisNCiAvKiBGdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyBndWVzdCBt ZW1vcnkuICBUaGUgdGdldCBhbmQgdHB1dCBmdW5jdGlvbnMNCiAgICByZWFk L3dyaXRlIHNpbmdsZSB2YWx1ZXMsIGJ5dGVzd2FwcGluZyBhcyBuZWNjZXNz YXJ5LiAgVGhlIGxvY2tfdXNlcg0KICAgIGdldHMgYSBwb2ludGVyIHRvIGEg Y29udGlndW91cyBhcmVhIG9mIGd1ZXN0IG1lbW9yeSwgYnV0IGRvZXMgbm90 IHBlcmZvcm0NCkBAIC0yOTUsNiArMzE2LDE2IEBADQogI2RlZmluZSB1bmxv Y2tfdXNlcl9zdHJ1Y3QoaG9zdF9wdHIsIGd1ZXN0X2FkZHIsIGNvcHkpIFwN CiAgICAgdW5sb2NrX3VzZXIoaG9zdF9wdHIsIGd1ZXN0X2FkZHIsIChjb3B5 KSA/IHNpemVvZigqaG9zdF9wdHIpIDogMCkNCiANCisvKiBUaGlzIGlzIGJl aW5nIHBoYXNlZCBvdXQgaW4gZmF2b3Igb2YgdGhlIGNvcHkqdXNlcigpIGlu dGVyZmFjZXMgKi8NCitzdGF0aWMgaW5saW5lIGxvbmcgbG9ja19hbmRfY2hl Y2tfdXNlcl9zdHJ1Y3Qodm9pZCAqaG9zdF9hZGRyLCB0YXJnZXRfdWxvbmcg Z3Vlc3RfYWRkciwgbG9uZyBsZW4sIGludCBjb3B5LCBpbnQgcGdfYWNjZXNz KQ0KK3sNCisgICAgbG9uZyAqaGFkZHIsIHJldCA9IDA7DQorICAgIGhhZGRy ID0gKGxvbmcgKilob3N0X2FkZHI7DQorICAgIGlmKCAocmV0PXBhZ2VfY2hl Y2tfcmFuZ2UoZ3Vlc3RfYWRkcixsZW4scGdfYWNjZXNzKSkgIT0gMCApIHJl dHVybiByZXQ7DQorICAgICpoYWRkciA9IChsb25nKWxvY2tfdXNlcihndWVz dF9hZGRyLCBsZW4sIGNvcHkpOw0KKyAgICByZXR1cm4gMDsNCit9DQorDQog I2RlZmluZSB0Z2V0OChhZGRyKSBsZHViKGFkZHIpDQogI2RlZmluZSB0cHV0 OChhZGRyLCB2YWwpIHN0YihhZGRyLCB2YWwpDQogI2RlZmluZSB0Z2V0MTYo YWRkcikgbGR1dyhhZGRyKQ0K ---1463811327-1329163033-1184962560=:13035--