From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I85Ny-0000SU-G6 for qemu-devel@nongnu.org; Mon, 09 Jul 2007 22:23:30 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I85Nt-0000Ln-Ef for qemu-devel@nongnu.org; Mon, 09 Jul 2007 22:23:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I85Nt-0000Lk-AE for qemu-devel@nongnu.org; Mon, 09 Jul 2007 22:23:25 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1I85Nr-00074v-Rs for qemu-devel@nongnu.org; Mon, 09 Jul 2007 22:23:25 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1I85Nr-00047A-00 for ; Mon, 09 Jul 2007 22:23:23 -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 83TCUQkt5ngf for ; Mon, 9 Jul 2007 22:23:04 -0400 (EDT) Received: from h231.94.213.151.ip.alltel.net ([151.213.94.231] helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1I85NV-00046p-00 for ; Mon, 09 Jul 2007 22:23:01 -0400 Date: Mon, 9 Jul 2007 22:22:38 -0400 (EDT) From: Stuart Anderson Subject: Re: [Qemu-devel] [PATCH] linux-user EFAULT implementation In-Reply-To: <4692A55D.5050102@bellard.org> Message-ID: References: <468E68F7.8070005@bellard.org> <4692A55D.5050102@bellard.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-740702015-1184034158=:12799" 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-740702015-1184034158=:12799 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Mon, 9 Jul 2007, Fabrice Bellard wrote: > No. Ideally you should use the same conventions as the Linux kernel and > assume that you cannot access the user data directly. That's what I had already started doing today. > For the time being, I would suggest to minimize the number of changes and > just extend lock_user()/unlock_user() as you began to do to handle -EFAULT. > The rest is mostly a question of cosmetics. The attached patch is my in-progress work of the complete overhaul to use the kernel conventions. It needs some more work to finish the conversion, but enough should be done to see how it is going to turn out. Overall, I think the converted code is easier to read, especially if you are familiar with reading kernel code. I also think it will end up being more correct both becasue of the additional time now spent on reviewing each syscall, as well as the kernel conventions tend to make you be more thorough and explicite. 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-740702015-1184034158=:12799 Content-Type: TEXT/x-diff; charset=US-ASCII; name=06_efault.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: efault overhaul Content-Disposition: attachment; filename=06_efault.patch SW5kZXg6IHFlbXUvZXhlYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gcWVtdS5vcmlnL2V4ZWMuYwkyMDA3LTA3LTA5IDEzOjE4OjU2LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvZXhlYy5jCTIwMDctMDctMDkgMTM6MTk6 MDguMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTg2Miw2ICsxODYyLDI5IEBADQog ICAgIHNwaW5fdW5sb2NrKCZ0Yl9sb2NrKTsNCiB9DQogDQoraW50IHBhZ2Vf Y2hlY2tfcmFuZ2UodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcg bGVuLCBpbnQgZmxhZ3MpDQorew0KKyAgICBQYWdlRGVzYyAqcDsNCisgICAg dGFyZ2V0X3Vsb25nIGVuZDsNCisgICAgdGFyZ2V0X3Vsb25nIGFkZHI7DQor DQorICAgIGVuZCA9IFRBUkdFVF9QQUdFX0FMSUdOKHN0YXJ0K2xlbik7IC8q IG11c3QgZG8gYmVmb3JlIHdlIGxvb3NlIGJpdHMgaW4gdGhlIG5leHQgc3Rl cCAqLw0KKyAgICBzdGFydCA9IHN0YXJ0ICYgVEFSR0VUX1BBR0VfTUFTSzsN CisNCisgICAgaWYoIGVuZCA8IHN0YXJ0ICkgcmV0dXJuIEVGQVVMVDsgIC8q IHdlJ3ZlIHdyYXBwZWQgYXJvdW5kICovDQorICAgIGZvcihhZGRyID0gc3Rh cnQ7IGFkZHIgPCBlbmQ7IGFkZHIgKz0gVEFSR0VUX1BBR0VfU0laRSkgew0K KyAgICAgICAgcCA9IHBhZ2VfZmluZChhZGRyID4+IFRBUkdFVF9QQUdFX0JJ VFMpOw0KKwlpZiggIXAgKSByZXR1cm4gLUVGQVVMVDsNCisJaWYoICEocC0+ ZmxhZ3MgJiBQQUdFX1ZBTElEKSApIHJldHVybiAtRUZBVUxUOw0KKw0KKyAg ICAgICAgaWYgKCEocC0+ZmxhZ3MgJiBQQUdFX1JFQUQpICYmDQorICAgICAg ICAgICAgKGZsYWdzICYgUEFHRV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0K KyAgICAgICAgaWYgKCEocC0+ZmxhZ3MgJiBQQUdFX1dSSVRFKSAmJg0KKyAg ICAgICAgICAgIChmbGFncyAmIFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFV TFQ7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KIC8qIGNhbGxl ZCBmcm9tIHNpZ25hbCBoYW5kbGVyOiBpbnZhbGlkYXRlIHRoZSBjb2RlIGFu ZCB1bnByb3RlY3QgdGhlDQogICAgcGFnZS4gUmV0dXJuIFRSVUUgaWYgdGhl IGZhdWx0IHdhcyBzdWNjZXNmdWxseSBoYW5kbGVkLiAqLw0KIGludCBwYWdl X3VucHJvdGVjdCh0YXJnZXRfdWxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9u ZyBwYywgdm9pZCAqcHVjKQ0KSW5kZXg6IHFlbXUvY3B1LWFsbC5oDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQotLS0gcWVtdS5vcmlnL2NwdS1hbGwuaAky MDA3LTA3LTA5IDEzOjE4OjU2LjAwMDAwMDAwMCAtMDQwMA0KKysrIHFlbXUv Y3B1LWFsbC5oCTIwMDctMDctMDkgMTM6MTk6MDguMDAwMDAwMDAwIC0wNDAw DQpAQCAtNjkxLDYgKzY5MSw3IEBADQogaW50IHBhZ2VfZ2V0X2ZsYWdzKHRh cmdldF91bG9uZyBhZGRyZXNzKTsNCiB2b2lkIHBhZ2Vfc2V0X2ZsYWdzKHRh cmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGVuZCwgaW50IGZsYWdz KTsNCiB2b2lkIHBhZ2VfdW5wcm90ZWN0X3JhbmdlKHRhcmdldF91bG9uZyBk YXRhLCB0YXJnZXRfdWxvbmcgZGF0YV9zaXplKTsNCitpbnQgcGFnZV9jaGVj a19yYW5nZSh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBsZW4s IGludCBmbGFncyk7DQogDQogQ1BVU3RhdGUgKmNwdV9jb3B5KENQVVN0YXRl ICplbnYpOw0KIA0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9zeXNjYWxsLmMN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBxZW11Lm9yaWcvbGludXgt dXNlci9zeXNjYWxsLmMJMjAwNy0wNy0wOSAxMzoxODo1Ni4wMDAwMDAwMDAg LTA0MDANCisrKyBxZW11L2xpbnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDct MDkgMjI6MTI6MzMuMDAwMDAwMDAwIC0wNDAwDQpAQCAtNDA0LDEyICs0MDQs MTMgQEANCiAjZW5kaWYNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhv c3RfdG9fdGFyZ2V0X3J1c2FnZSh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIs DQorc3RhdGljIGlubGluZSBsb25nIGNvcHlfZnJvbV91c2VyX3J1c2FnZSh0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnVzYWdlICpy dXNhZ2UpDQogew0KICAgICBzdHJ1Y3QgdGFyZ2V0X3J1c2FnZSAqdGFyZ2V0 X3J1c2FnZTsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfcnVz YWdlLCB0YXJnZXRfYWRkciwgMCk7DQorICAgIGlmKCAhYWNjZXNzX29rKFZF UklGWV9SRUFELHRhcmdldF9hZGRyLHNpemVvZigqdGFyZ2V0X3J1c2FnZSkp ICkgcmV0dXJuIC0xOw0KKyAgICB0YXJnZXRfcnVzYWdlID0gKHN0cnVjdCB0 YXJnZXRfcnVzYWdlICopZzJoKHRhcmdldF9hZGRyKTsNCiAgICAgdGFyZ2V0 X3J1c2FnZS0+cnVfdXRpbWUudHZfc2VjID0gdHN3YXBsKHJ1c2FnZS0+cnVf dXRpbWUudHZfc2VjKTsNCiAgICAgdGFyZ2V0X3J1c2FnZS0+cnVfdXRpbWUu dHZfdXNlYyA9IHRzd2FwbChydXNhZ2UtPnJ1X3V0aW1lLnR2X3VzZWMpOw0K ICAgICB0YXJnZXRfcnVzYWdlLT5ydV9zdGltZS50dl9zZWMgPSB0c3dhcGwo cnVzYWdlLT5ydV9zdGltZS50dl9zZWMpOw0KQEAgLTQyOCwyOSArNDI5LDM0 IEBADQogICAgIHRhcmdldF9ydXNhZ2UtPnJ1X25zaWduYWxzID0gdHN3YXBs KHJ1c2FnZS0+cnVfbnNpZ25hbHMpOw0KICAgICB0YXJnZXRfcnVzYWdlLT5y dV9udmNzdyA9IHRzd2FwbChydXNhZ2UtPnJ1X252Y3N3KTsNCiAgICAgdGFy Z2V0X3J1c2FnZS0+cnVfbml2Y3N3ID0gdHN3YXBsKHJ1c2FnZS0+cnVfbml2 Y3N3KTsNCi0gICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9ydXNhZ2Us IHRhcmdldF9hZGRyLCAxKTsNCisNCisgICAgcmV0dXJuIDA7DQogfQ0KIA0K LXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF90aW1ldmFsKHN0 cnVjdCB0aW1ldmFsICp0diwNCitzdGF0aWMgaW5saW5lIGxvbmcgY29weV9m cm9tX3VzZXJfdGltZXZhbChzdHJ1Y3QgdGltZXZhbCAqdHYsDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyKQ0KIHsNCiAgICAgc3RydWN0IHRhcmdldF90aW1l dmFsICp0YXJnZXRfdHY7DQogDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFy Z2V0X3R2LCB0YXJnZXRfYWRkciwgMSk7DQorICAgIGlmKCAhYWNjZXNzX29r KFZFUklGWV9SRUFELHRhcmdldF9hZGRyLHNpemVvZigqdGFyZ2V0X3R2KSkg KSByZXR1cm4gLTE7DQorICAgIHRhcmdldF90diA9IChzdHJ1Y3QgdGFyZ2V0 X3RpbWV2YWwgKilnMmgodGFyZ2V0X2FkZHIpOw0KICAgICB0di0+dHZfc2Vj ID0gdHN3YXBsKHRhcmdldF90di0+dHZfc2VjKTsNCiAgICAgdHYtPnR2X3Vz ZWMgPSB0c3dhcGwodGFyZ2V0X3R2LT50dl91c2VjKTsNCi0gICAgdW5sb2Nr X3VzZXJfc3RydWN0KHRhcmdldF90diwgdGFyZ2V0X2FkZHIsIDApOw0KKw0K KyAgICByZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhv c3RfdG9fdGFyZ2V0X3RpbWV2YWwodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRy LA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X3RvX3VzZXJfdGltZXZhbCh0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWV2YWwg KnR2KQ0KIHsNCiAgICAgc3RydWN0IHRhcmdldF90aW1ldmFsICp0YXJnZXRf dHY7DQogDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3R2LCB0YXJn ZXRfYWRkciwgMCk7DQorICAgIGlmKCAhYWNjZXNzX29rKFZFUklGWV9XUklU RSx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF90dikpICkgcmV0dXJuIC0x Ow0KKyAgICB0YXJnZXRfdHYgPSAoc3RydWN0IHRhcmdldF90aW1ldmFsICop ZzJoKHRhcmdldF9hZGRyKTsNCiAgICAgdGFyZ2V0X3R2LT50dl9zZWMgPSB0 c3dhcGwodHYtPnR2X3NlYyk7DQogICAgIHRhcmdldF90di0+dHZfdXNlYyA9 IHRzd2FwbCh0di0+dHZfdXNlYyk7DQotICAgIHVubG9ja191c2VyX3N0cnVj dCh0YXJnZXRfdHYsIHRhcmdldF9hZGRyLCAxKTsNCisNCisgICAgcmV0dXJu IDA7DQogfQ0KIA0KIA0KQEAgLTQ2NiwyMSArNDcyLDIxIEBADQogICAgIGlu dCBvazsNCiANCiAgICAgaWYgKHJmZF9wKSB7DQotICAgICAgICB0YXJnZXRf cmZkcyA9IGxvY2tfdXNlcihyZmRfcCwgc2l6ZW9mKHRhcmdldF9sb25nKSAq IG4sIDEpOw0KKwlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRh cmdldF9yZmRzLHJmZF9wLHNpemVvZih0YXJnZXRfbG9uZykqbiwxLFBBR0Vf UkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIHJmZHNfcHRyID0g dGFyZ2V0X3RvX2hvc3RfZmRzKCZyZmRzLCB0YXJnZXRfcmZkcywgbik7DQog ICAgIH0gZWxzZSB7DQogICAgICAgICB0YXJnZXRfcmZkcyA9IE5VTEw7DQog ICAgICAgICByZmRzX3B0ciA9IE5VTEw7DQogICAgIH0NCiAgICAgaWYgKHdm ZF9wKSB7DQotICAgICAgICB0YXJnZXRfd2ZkcyA9IGxvY2tfdXNlcih3ZmRf cCwgc2l6ZW9mKHRhcmdldF9sb25nKSAqIG4sIDEpOw0KKwlpZiggbG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF93ZmRzLHdmZF9wLHNpemVv Zih0YXJnZXRfbG9uZykqbiwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVM VDsNCiAgICAgICAgIHdmZHNfcHRyID0gdGFyZ2V0X3RvX2hvc3RfZmRzKCZ3 ZmRzLCB0YXJnZXRfd2Zkcywgbik7DQogICAgIH0gZWxzZSB7DQogICAgICAg ICB0YXJnZXRfd2ZkcyA9IE5VTEw7DQogICAgICAgICB3ZmRzX3B0ciA9IE5V TEw7DQogICAgIH0NCiAgICAgaWYgKGVmZF9wKSB7DQotICAgICAgICB0YXJn ZXRfZWZkcyA9IGxvY2tfdXNlcihlZmRfcCwgc2l6ZW9mKHRhcmdldF9sb25n KSAqIG4sIDEpOw0KKwlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3Qo JnRhcmdldF9lZmRzLGVmZF9wLHNpemVvZih0YXJnZXRfbG9uZykqbiwxLFBB R0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIGVmZHNfcHRy ID0gdGFyZ2V0X3RvX2hvc3RfZmRzKCZlZmRzLCB0YXJnZXRfZWZkcywgbik7 DQogICAgIH0gZWxzZSB7DQogICAgICAgICB0YXJnZXRfZWZkcyA9IE5VTEw7 DQpAQCAtNDg4LDcgKzQ5NCw3IEBADQogICAgIH0NCiAgICAgICAgICAgICAN CiAgICAgaWYgKHRhcmdldF90dikgew0KLSAgICAgICAgdGFyZ2V0X3RvX2hv c3RfdGltZXZhbCgmdHYsIHRhcmdldF90dik7DQorICAgICAgICBpZiggY29w eV9mcm9tX3VzZXJfdGltZXZhbCgmdHYsIHRhcmdldF90dikgKSByZXR1cm4g LUVGQVVMVDsNCiAgICAgICAgIHR2X3B0ciA9ICZ0djsNCiAgICAgfSBlbHNl IHsNCiAgICAgICAgIHR2X3B0ciA9IE5VTEw7DQpAQCAtNTAyLDcgKzUwOCw3 IEBADQogICAgICAgICBob3N0X3RvX3RhcmdldF9mZHModGFyZ2V0X2VmZHMs IGVmZHNfcHRyLCBuKTsNCiANCiAgICAgICAgIGlmICh0YXJnZXRfdHYpIHsN Ci0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF90aW1ldmFsKHRhcmdldF90 diwgJnR2KTsNCisgICAgICAgICAgICBpZiggY29weV90b191c2VyX3RpbWV2 YWwodGFyZ2V0X3R2LCAmdHYpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICB9DQogICAgIH0NCiAgICAgaWYgKHRhcmdldF9yZmRzKQ0KQEAgLTUxNSwy OCArNTIxLDMyIEBADQogICAgIHJldHVybiByZXQ7DQogfQ0KIA0KLXN0YXRp YyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihzdHJ1Y3Qg c29ja2FkZHIgKmFkZHIsDQorc3RhdGljIGlubGluZSBsb25nIGNvcHlfZnJv bV91c2VyX3NvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgbGVuKQ0KIHsNCiAgICAg c3RydWN0IHRhcmdldF9zb2NrYWRkciAqdGFyZ2V0X3NhZGRyOw0KIA0KLSAg ICB0YXJnZXRfc2FkZHIgPSBsb2NrX3VzZXIodGFyZ2V0X2FkZHIsIGxlbiwg MSk7DQorICAgIGlmKCAhYWNjZXNzX29rKFZFUklGWV9SRUFELHRhcmdldF9h ZGRyLGxlbikpIHJldHVybiAtMTsNCisgICAgdGFyZ2V0X3NhZGRyID0gKHN0 cnVjdCB0YXJnZXRfc29ja2FkZHIgKilnMmgodGFyZ2V0X2FkZHIpOw0KICAg ICBtZW1jcHkoYWRkciwgdGFyZ2V0X3NhZGRyLCBsZW4pOw0KICAgICBhZGRy LT5zYV9mYW1pbHkgPSB0c3dhcDE2KHRhcmdldF9zYWRkci0+c2FfZmFtaWx5 KTsNCi0gICAgdW5sb2NrX3VzZXIodGFyZ2V0X3NhZGRyLCB0YXJnZXRfYWRk ciwgMCk7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCi1zdGF0aWMgaW5s aW5lIHZvaWQgaG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X3Vsb25n IHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X3RvX3Vz ZXJfc29ja2FkZHIodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c29ja2FkZHIgKmFkZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4pDQogew0KICAgICBzdHJ1 Y3QgdGFyZ2V0X3NvY2thZGRyICp0YXJnZXRfc2FkZHI7DQogDQotICAgIHRh cmdldF9zYWRkciA9IGxvY2tfdXNlcih0YXJnZXRfYWRkciwgbGVuLCAwKTsN CisgICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLHRhcmdldF9hZGRy LGxlbikgKSByZXR1cm4gLTE7DQorICAgIHRhcmdldF9zYWRkciA9IChzdHJ1 Y3QgdGFyZ2V0X3NvY2thZGRyICopZzJoKHRhcmdldF9hZGRyKTsNCiAgICAg bWVtY3B5KHRhcmdldF9zYWRkciwgYWRkciwgbGVuKTsNCiAgICAgdGFyZ2V0 X3NhZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KGFkZHItPnNhX2ZhbWlseSk7 DQotICAgIHVubG9ja191c2VyKHRhcmdldF9zYWRkciwgdGFyZ2V0X2FkZHIs IGxlbik7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCiAvKiA/Pz8gU2hv dWxkIHRoaXMgYWxzbyBzd2FwIG1zZ2gtPm5hbWU/ICAqLw0KQEAgLTg5OSw3 ICs5MDksNyBAQA0KIHsNCiAgICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRy bGVuKTsNCiAgICAgDQotICAgIHRhcmdldF90b19ob3N0X3NvY2thZGRyKGFk ZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKTsNCisgICAgaWYoIGNvcHlfZnJv bV91c2VyX3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKSAp IHJldHVybiAtRUZBVUxUOw0KICAgICByZXR1cm4gZ2V0X2Vycm5vKGJpbmQo c29ja2ZkLCBhZGRyLCBhZGRybGVuKSk7DQogfQ0KIA0KQEAgLTkwOCw3ICs5 MTgsNyBAQA0KIHsNCiAgICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRybGVu KTsNCiAgICAgDQotICAgIHRhcmdldF90b19ob3N0X3NvY2thZGRyKGFkZHIs IHRhcmdldF9hZGRyLCBhZGRybGVuKTsNCisgICAgaWYoIGNvcHlfZnJvbV91 c2VyX3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKSApIHJl dHVybiAtRUZBVUxUOw0KICAgICByZXR1cm4gZ2V0X2Vycm5vKGNvbm5lY3Qo c29ja2ZkLCBhZGRyLCBhZGRybGVuKSk7DQogfQ0KIA0KQEAgLTkyMiwxMiAr OTMyLDI1IEBADQogICAgIHN0cnVjdCBpb3ZlYyAqdmVjOw0KICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X3ZlYzsNCiANCi0gICAgbG9ja191c2VyX3N0cnVj dChtc2dwLCB0YXJnZXRfbXNnLCAxKTsNCisgICAgaWYoIHNlbmQgKSB7DQor ICAgICAgIGlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmbXNncCx0 YXJnZXRfbXNnLHNpemVvZigqbXNncCksMSwNCisJCVBBR0VfUkVBRCkgICkg cmV0dXJuIC1FRkFVTFQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgIGlmKCBs b2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmbXNncCx0YXJnZXRfbXNnLHNp emVvZigqbXNncCksMSwNCisJCVBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFV TFQ7DQorICAgIH0NCiAgICAgaWYgKG1zZ3AtPm1zZ19uYW1lKSB7DQogICAg ICAgICBtc2cubXNnX25hbWVsZW4gPSB0c3dhcDMyKG1zZ3AtPm1zZ19uYW1l bGVuKTsNCiAgICAgICAgIG1zZy5tc2dfbmFtZSA9IGFsbG9jYShtc2cubXNn X25hbWVsZW4pOw0KLSAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIo bXNnLm1zZ19uYW1lLCB0c3dhcGwobXNncC0+bXNnX25hbWUpLA0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLm1zZ19uYW1lbGVuKTsN CisgICAgICAgIGlmKCBzZW5kICkgew0KKyAgICAgICAgICBpZiggY29weV9m cm9tX3VzZXJfc29ja2FkZHIobXNnLm1zZ19uYW1lLCB0c3dhcGwobXNncC0+ bXNnX25hbWUpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bXNnLm1zZ19uYW1lbGVuKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICAgICAg fSBlbHNlIHsNCisJICAvKiBGSVhNRQ0KKyAgICAgICAgICBpZiggKHJldD1j b3B5X2Zyb21fdXNlcl9zb2NrYWRkcihtc2cubXNnX25hbWUsIHRzd2FwbCht c2dwLT5tc2dfbmFtZSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtc2cubXNnX25hbWVsZW4sUEFHRV9XUklURSkpICE9IDAgKSByZXR1 cm4gcmV0Ow0KKwkJCQkqLw0KKwl9DQogICAgIH0gZWxzZSB7DQogICAgICAg ICBtc2cubXNnX25hbWUgPSBOVUxMOw0KICAgICAgICAgbXNnLm1zZ19uYW1l bGVuID0gMDsNCkBAIC05NTgsMTMgKzk4MSwxNSBAQA0KIHN0YXRpYyBsb25n IGRvX2FjY2VwdChpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwN CiAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRybGVuKQ0KIHsNCi0gICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIo dGFyZ2V0X2FkZHJsZW4pOw0KLSAgICB2b2lkICphZGRyID0gYWxsb2NhKGFk ZHJsZW4pOw0KKyAgICBzb2NrbGVuX3QgYWRkcmxlbjsNCisgICAgdm9pZCAq YWRkcjsNCiAgICAgbG9uZyByZXQ7DQogDQorICAgIGFkZHIgPSBhbGxvY2Eo YWRkcmxlbik7DQorDQogICAgIHJldCA9IGdldF9lcnJubyhhY2NlcHQoZmQs IGFkZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNfZXJyb3IocmV0KSkg ew0KLSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2Fk ZHIsIGFkZHIsIGFkZHJsZW4pOw0KKyAgICAgICAgaWYoIGNvcHlfdG9fdXNl cl9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbikgKSByZXR1 cm4gLUVGQVVMVDsNCiAgICAgICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwg YWRkcmxlbik7DQogICAgIH0NCiAgICAgcmV0dXJuIHJldDsNCkBAIC05NzMs MTMgKzk5OCwxOCBAQA0KIHN0YXRpYyBsb25nIGRvX2dldHBlZXJuYW1lKGlu dCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikN CiB7DQotICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldDMyKHRhcmdldF9h ZGRybGVuKTsNCi0gICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRybGVuKTsN Ci0gICAgbG9uZyByZXQ7DQorICAgIHNvY2tsZW5fdCBhZGRybGVuOw0KKyAg ICB2b2lkICphZGRyOw0KKyAgICBsb25nIHJldCxyZXQyOw0KKw0KKyAgICBp ZiggKHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdldF9hZGRybGVuLHNpemVv Zihzb2NrbGVuX3QpLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4gcmV0Ow0K KyAgICBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVuKTsNCisgICAg YWRkciA9IGFsbG9jYShhZGRybGVuKTsNCiANCiAgICAgcmV0ID0gZ2V0X2Vy cm5vKGdldHBlZXJuYW1lKGZkLCBhZGRyLCAmYWRkcmxlbikpOw0KICAgICBp ZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgIGhvc3RfdG9fdGFyZ2V0 X3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAg ICAgIGlmKCBjb3B5X3RvX3VzZXJfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFk ZHIsIGFkZHJsZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgICAgICBpZigg KHJldDI9cGFnZV9jaGVja19yYW5nZSh0YXJnZXRfYWRkcmxlbixzaXplb2Yo c29ja2xlbl90KSxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiByZXQyOw0K ICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAg ICAgfQ0KICAgICByZXR1cm4gcmV0Ow0KQEAgLTk4OCwxMyArMTAxOCwxNyBA QA0KIHN0YXRpYyBsb25nIGRvX2dldHNvY2tuYW1lKGludCBmZCwgdGFyZ2V0 X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikNCiB7DQotICAgIHNv Y2tsZW5fdCBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVuKTsNCi0g ICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRybGVuKTsNCisgICAgc29ja2xl bl90IGFkZHJsZW47DQorICAgIHZvaWQgKmFkZHI7DQogICAgIGxvbmcgcmV0 Ow0KIA0KKyAgICBpZiggKHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdldF9h ZGRybGVuLHNpemVvZihzb2NrbGVuX3QpLFBBR0VfV1JJVEUpKSAhPSAwICkg cmV0dXJuIHJldDsNCisgICAgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRk cmxlbik7DQorICAgIGFkZHIgPSBhbGxvY2EoYWRkcmxlbik7DQorDQogICAg IHJldCA9IGdldF9lcnJubyhnZXRzb2NrbmFtZShmZCwgYWRkciwgJmFkZHJs ZW4pKTsNCiAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICBo b3N0X3RvX3RhcmdldF9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRk cmxlbik7DQorICAgICAgICBpZiggY29weV90b191c2VyX3NvY2thZGRyKHRh cmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKSApIHJldHVybiAtRUZBVUxUOw0K ICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAg ICAgfQ0KICAgICByZXR1cm4gcmV0Ow0KQEAgLTEwMjEsMTUgKzEwNTUsMTQg QEANCiAgICAgdm9pZCAqaG9zdF9tc2c7DQogICAgIGxvbmcgcmV0Ow0KIA0K LSAgICBob3N0X21zZyA9IGxvY2tfdXNlcihtc2csIGxlbiwgMSk7DQorICAg IGlmIChjb3B5X2Zyb21fdXNlcigmaG9zdF9tc2csbXNnLGxlbikgKSByZXR1 cm4gLUVGQVVMVDsNCiAgICAgaWYgKHRhcmdldF9hZGRyKSB7DQogICAgICAg ICBhZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KLSAgICAgICAgdGFyZ2V0X3Rv X2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4pOw0K KyAgICAgICAgaWYgKGNvcHlfZnJvbV91c2VyX3NvY2thZGRyKGFkZHIsIHRh cmdldF9hZGRyLCBhZGRybGVuKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAg ICAgcmV0ID0gZ2V0X2Vycm5vKHNlbmR0byhmZCwgaG9zdF9tc2csIGxlbiwg ZmxhZ3MsIGFkZHIsIGFkZHJsZW4pKTsNCiAgICAgfSBlbHNlIHsNCiAgICAg ICAgIHJldCA9IGdldF9lcnJubyhzZW5kKGZkLCBob3N0X21zZywgbGVuLCBm bGFncykpOw0KICAgICB9DQotICAgIHVubG9ja191c2VyKGhvc3RfbXNnLCBt c2csIDApOw0KICAgICByZXR1cm4gcmV0Ow0KIH0NCiANCkBAIC0xMDQxLDcg KzEwNzQsNyBAQA0KICAgICB2b2lkICpob3N0X21zZzsNCiAgICAgbG9uZyBy ZXQ7DQogDQotICAgIGhvc3RfbXNnID0gbG9ja191c2VyKG1zZywgbGVuLCAw KTsNCisgICAgaWYgKGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZob3N0 X21zZyxtc2csbGVuLDAsUEFHRV9XUklURSkgKSByZXR1cm4gLUVGQVVMVDsN CiAgICAgaWYgKHRhcmdldF9hZGRyKSB7DQogICAgICAgICBhZGRybGVuID0g dGdldDMyKHRhcmdldF9hZGRybGVuKTsNCiAgICAgICAgIGFkZHIgPSBhbGxv Y2EoYWRkcmxlbik7DQpAQCAtMTA1Miw3ICsxMDg1LDcgQEANCiAgICAgfQ0K ICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgIGlmICh0YXJn ZXRfYWRkcikgew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2th ZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAgICAg ICBpZiAoY29weV90b191c2VyX3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRy LCBhZGRybGVuKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHRw dXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxlbik7DQogICAgICAgICB9DQog ICAgICAgICB1bmxvY2tfdXNlcihob3N0X21zZywgbXNnLCBsZW4pOw0KQEAg LTEyNTksNjQgKzEyOTIsNDQgQEANCiAgIHRhcmdldF91bG9uZyBfX3VudXNl ZDQ7DQogfTsNCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hv c3RfaXBjX3Blcm0oc3RydWN0IGlwY19wZXJtICpob3N0X2lwLA0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHIpDQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlf ZnJvbV91c2VyX2lwY19wZXJtKHN0cnVjdCBpcGNfcGVybSAqaG9zdF9pcCwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lwKQ0KIHsNCi0gICAg c3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lwOw0KLSAgICBzdHJ1 Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7DQotDQotICAgIGxvY2tf dXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMSk7DQotICAg IHRhcmdldF9pcD0mKHRhcmdldF9zZC0+c2VtX3Blcm0pOw0KICAgICBob3N0 X2lwLT5fX2tleSA9IHRzd2FwbCh0YXJnZXRfaXAtPl9fa2V5KTsNCiAgICAg aG9zdF9pcC0+dWlkID0gdHN3YXBsKHRhcmdldF9pcC0+dWlkKTsNCiAgICAg aG9zdF9pcC0+Z2lkID0gdHN3YXBsKHRhcmdldF9pcC0+Z2lkKTsNCiAgICAg aG9zdF9pcC0+Y3VpZCA9IHRzd2FwbCh0YXJnZXRfaXAtPmN1aWQpOw0KICAg ICBob3N0X2lwLT5jZ2lkID0gdHN3YXBsKHRhcmdldF9pcC0+Y2dpZCk7DQog ICAgIGhvc3RfaXAtPm1vZGUgPSB0c3dhcGwodGFyZ2V0X2lwLT5tb2RlKTsN Ci0gICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2Fk ZHIsIDApOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190 YXJnZXRfaXBjX3Blcm0odGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0 YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX3VzZXJfaXBjX3Blcm0oc3RydWN0 IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lwLA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0g Kmhvc3RfaXApDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X2lwY19wZXJtICp0 YXJnZXRfaXA7DQotICAgIHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdl dF9zZDsNCi0NCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRh cmdldF9hZGRyLCAwKTsNCi0gICAgdGFyZ2V0X2lwID0gJih0YXJnZXRfc2Qt PnNlbV9wZXJtKTsNCiAgICAgdGFyZ2V0X2lwLT5fX2tleSA9IHRzd2FwbCho b3N0X2lwLT5fX2tleSk7DQogICAgIHRhcmdldF9pcC0+dWlkID0gdHN3YXBs KGhvc3RfaXAtPnVpZCk7DQogICAgIHRhcmdldF9pcC0+Z2lkID0gdHN3YXBs KGhvc3RfaXAtPmdpZCk7DQogICAgIHRhcmdldF9pcC0+Y3VpZCA9IHRzd2Fw bChob3N0X2lwLT5jdWlkKTsNCiAgICAgdGFyZ2V0X2lwLT5jZ2lkID0gdHN3 YXBsKGhvc3RfaXAtPmNnaWQpOw0KICAgICB0YXJnZXRfaXAtPm1vZGUgPSB0 c3dhcGwoaG9zdF9pcC0+bW9kZSk7DQotICAgIHVubG9ja191c2VyX3N0cnVj dCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAxKTsNCiB9DQogDQotc3RhdGlj IGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3NlbWlkX2RzKHN0cnVjdCBz ZW1pZF9kcyAqaG9zdF9zZCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQor c3RhdGljIGlubGluZSB2b2lkIGNvcHlfZnJvbV91c2VyX3NlbWlkX2RzKHN0 cnVjdCBzZW1pZF9kcyAqaG9zdF9zZCwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NlbWlkX2Rz ICp0YXJnZXRfc2QpDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3NlbWlkX2Rz ICp0YXJnZXRfc2Q7DQotDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0 X3NkLCB0YXJnZXRfYWRkciwgMSk7DQotICAgIHRhcmdldF90b19ob3N0X2lw Y19wZXJtKCYoaG9zdF9zZC0+c2VtX3Blcm0pLHRhcmdldF9hZGRyKTsNCisg ICAgY29weV9mcm9tX3VzZXJfaXBjX3Blcm0oJihob3N0X3NkLT5zZW1fcGVy bSksJih0YXJnZXRfc2QtPnNlbV9wZXJtKSk7DQogICAgIGhvc3Rfc2QtPnNl bV9uc2VtcyA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9uc2Vtcyk7DQogICAg IGhvc3Rfc2QtPnNlbV9vdGltZSA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9v dGltZSk7DQogICAgIGhvc3Rfc2QtPnNlbV9jdGltZSA9IHRzd2FwbCh0YXJn ZXRfc2QtPnNlbV9jdGltZSk7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsNCiB9DQogDQotc3RhdGljIGlu bGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbWlkX2RzKHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciwNCitzdGF0aWMgaW5saW5lIHZvaWQgY29weV90b191 c2VyX3NlbWlkX2RzKHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9z ZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHNlbWlkX2RzICpob3N0X3NkKQ0KIHsNCi0gICAgc3RydWN0 IHRhcmdldF9zZW1pZF9kcyAqdGFyZ2V0X3NkOw0KLQ0KLSAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDApOw0KLSAgICBo b3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRkciwmKGhvc3Rfc2Qt PnNlbV9wZXJtKSk7DQorICAgIGNvcHlfdG9fdXNlcl9pcGNfcGVybSgmKHRh cmdldF9zZC0+c2VtX3Blcm0pLCYoaG9zdF9zZC0+c2VtX3Blcm0pKTsNCiAg ICAgdGFyZ2V0X3NkLT5zZW1fbnNlbXMgPSB0c3dhcGwoaG9zdF9zZC0+c2Vt X25zZW1zKTsNCiAgICAgdGFyZ2V0X3NkLT5zZW1fb3RpbWUgPSB0c3dhcGwo aG9zdF9zZC0+c2VtX290aW1lKTsNCiAgICAgdGFyZ2V0X3NkLT5zZW1fY3Rp bWUgPSB0c3dhcGwoaG9zdF9zZC0+c2VtX2N0aW1lKTsNCi0gICAgdW5sb2Nr X3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDEpOw0KIH0N CiANCiB1bmlvbiBzZW11biB7DQpAQCAtMTMzMSw2NyArMTM0NCw3MyBAQA0K IAl1bnNpZ25lZCBzaG9ydCBpbnQgKmFycmF5Ow0KIH07DQogDQotc3RhdGlj IGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3NlbXVuKHVuc2lnbmVkIGxv bmcgY21kLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zyb21fdXNlcl9z ZW11bih1bnNpZ25lZCBsb25nIGNtZCwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5pb24gc2VtdW4gKmhvc3Rfc3UsDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpkcykNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNl bWlkX2RzICpkcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQogICAgIHVuaW9uIHRhcmdl dF9zZW11biAqdGFyZ2V0X3N1Ow0KIA0KICAgICBzd2l0Y2goIGNtZCApIHsN CiAJY2FzZSBJUENfU1RBVDoNCiAJY2FzZSBJUENfU0VUOg0KLSAgICAgICAg ICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAx KTsNCi0JICAgdGFyZ2V0X3RvX2hvc3Rfc2VtaWRfZHMoZHMsdGFyZ2V0X3N1 LT5idWYpOw0KKwkgICBpZiAobG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3Qo JnRhcmdldF9zdSx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9zdSksMSxw Z19hY2Nlc3MpICkgcmV0dXJuIC0xOw0KKwkgICBjb3B5X2Zyb21fdXNlcl9z ZW1pZF9kcyhkcyx0YXJnZXRfc3UtPmJ1Zik7DQogCSAgIGhvc3Rfc3UtPmJ1 ZiA9IGRzOw0KICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdl dF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KIAkgICBicmVhazsNCiAJY2FzZSBH RVRWQUw6DQogCWNhc2UgU0VUVkFMOg0KLSAgICAgICAgICAgbG9ja191c2Vy X3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAxKTsNCisJICAgaWYg KGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3UsdGFyZ2V0 X2FkZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDEscGdfYWNjZXNzKSApIHJldHVy biAtMTsNCiAJICAgaG9zdF9zdS0+dmFsID0gdHN3YXBsKHRhcmdldF9zdS0+ dmFsKTsNCiAgICAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRf c3UsIHRhcmdldF9hZGRyLCAwKTsNCiAJICAgYnJlYWs7DQogCWNhc2UgR0VU QUxMOg0KIAljYXNlIFNFVEFMTDoNCi0gICAgICAgICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQorCSAgIGlmIChs b2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3N1LHRhcmdldF9h ZGRyLHNpemVvZigqdGFyZ2V0X3N1KSwxLHBnX2FjY2VzcykgKSByZXR1cm4g LTE7DQogCSAgICpob3N0X3N1LT5hcnJheSA9IHRzd2FwMTYoKnRhcmdldF9z dS0+YXJyYXkpOw0KICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRh cmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KIAkgICBicmVhazsNCiAJZGVm YXVsdDoNCiAgICAgICAgICAgIGdlbXVfbG9nKCJzZW11biBvcGVyYXRpb24g bm90IGZ1bGx5IHN1cHBvcnRlZDogJWRcbiIsIChpbnQpY21kKTsNCiAgICAg fQ0KKw0KKyAgICByZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIGlubGluZSB2 b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKHVuc2lnbmVkIGxvbmcgY21kLA0K K3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X3RvX3VzZXJfc2VtdW4odW5zaWdu ZWQgbG9uZyBjbWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gc2VtdW4g Kmhvc3Rfc3UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqZHMpDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqZHMs DQorCQkJCQlpbnQgcGdfYWNjZXNzKQ0KIHsNCiAgICAgdW5pb24gdGFyZ2V0 X3NlbXVuICp0YXJnZXRfc3U7DQogDQogICAgIHN3aXRjaCggY21kICkgew0K IAljYXNlIElQQ19TVEFUOg0KIAljYXNlIElQQ19TRVQ6DQotICAgICAgICAg ICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDAp Ow0KLQkgICBob3N0X3RvX3RhcmdldF9zZW1pZF9kcyh0YXJnZXRfc3UtPmJ1 Zixkcyk7DQorCSAgIGlmIChsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm dGFyZ2V0X3N1LHRhcmdldF9hZGRyLHNpemVvZigqdGFyZ2V0X3N1KSwwLHBn X2FjY2VzcykgKSByZXR1cm4gLTE7DQorCSAgIGNvcHlfdG9fdXNlcl9zZW1p ZF9kcyh0YXJnZXRfc3UtPmJ1Zixkcyk7DQogICAgICAgICAgICB1bmxvY2tf dXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQogCSAg IGJyZWFrOw0KIAljYXNlIEdFVFZBTDoNCiAJY2FzZSBTRVRWQUw6DQotICAg ICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2Fk ZHIsIDApOw0KKwkgICBpZiAobG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3Qo JnRhcmdldF9zdSx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9zdSksMCxw Z19hY2Nlc3MpICkgcmV0dXJuIC0xOw0KIAkgICB0YXJnZXRfc3UtPnZhbCA9 IHRzd2FwbChob3N0X3N1LT52YWwpOw0KICAgICAgICAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDEpOw0KIAkgICBi cmVhazsNCiAJY2FzZSBHRVRBTEw6DQogCWNhc2UgU0VUQUxMOg0KLSAgICAg ICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRy LCAwKTsNCisJICAgaWYgKGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0 YXJnZXRfc3UsdGFyZ2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDAscGdf YWNjZXNzKSApIHJldHVybiAtMTsNCiAJICAgKnRhcmdldF9zdS0+YXJyYXkg PSB0c3dhcDE2KCpob3N0X3N1LT5hcnJheSk7DQogICAgICAgICAgICB1bmxv Y2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQog CSAgIGJyZWFrOw0KICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGdl bXVfbG9nKCJzZW11biBvcGVyYXRpb24gbm90IGZ1bGx5IHN1cHBvcnRlZDog JWRcbiIsIChpbnQpY21kKTsNCiAgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsN CiB9DQogDQogc3RhdGljIGlubGluZSBsb25nIGRvX3NlbWN0bChsb25nIGZp cnN0LCBsb25nIHNlY29uZCwgbG9uZyB0aGlyZCwgbG9uZyBwdHIpDQpAQCAt MTQwMywzNCArMTQyMiwzNCBAQA0KIA0KICAgICBzd2l0Y2goIGNtZCApIHsN CiAJY2FzZSBHRVRWQUw6DQotICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rf c2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYo IGNvcHlfZnJvbV91c2VyX3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcsUEFH RV9XUklURSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICByZXQg PSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7 DQotICAgICAgICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwm YXJnLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl9z ZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfV1JJVEUpICkgcmV0dXJu IC1FRkFVTFQ7DQogICAgICAgICAgICAgYnJlYWs7DQogCWNhc2UgU0VUVkFM Og0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJn LHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNl cl9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnLFBBR0VfUkVBRCkgKSByZXR1 cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2Vt Y3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7DQotICAgICAgICAgICAg aG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJnLCZkc2FyZyk7DQor ICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl9zZW11bihjbWQscHRyLCZh cmcsJmRzYXJnLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgICAgICBicmVhazsNCiAJY2FzZSBHRVRBTEw6DQotICAgICAgICAgICAg dGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQor ICAgICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3NlbXVuKGNtZCwmYXJn LHB0ciwmZHNhcmcsUEFHRV9XUklURSkgKSByZXR1cm4gLUVGQVVMVDsNCiAg ICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNv bmQsIGNtZCwgYXJnKSk7DQotICAgICAgICAgICAgaG9zdF90b190YXJnZXRf c2VtdW4oY21kLHB0ciwmYXJnLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYo IGNvcHlfdG9fdXNlcl9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBBR0Vf V1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgYnJlYWs7 DQogCWNhc2UgU0VUQUxMOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlm KCBjb3B5X2Zyb21fdXNlcl9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnLFBB R0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICByZXQg PSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7 DQotICAgICAgICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwm YXJnLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl9z ZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfUkVBRCkgKSByZXR1cm4g LUVGQVVMVDsNCiAgICAgICAgICAgICBicmVhazsNCiAJY2FzZSBJUENfU1RB VDoNCi0gICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFy ZyxwdHIsJmRzYXJnKTsNCisgICAgICAgICAgICBpZiggY29weV9mcm9tX3Vz ZXJfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyxQQUdFX1dSSVRFKSApIHJl dHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhz ZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAg ICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsN CisgICAgICAgICAgICBpZiggY29weV90b191c2VyX3NlbXVuKGNtZCxwdHIs JmFyZywmZHNhcmcsUEFHRV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAg ICAgICAgICAgIGJyZWFrOw0KIAljYXNlIElQQ19TRVQ6DQotICAgICAgICAg ICAgdGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7 DQorICAgICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3NlbXVuKGNtZCwm YXJnLHB0ciwmZHNhcmcsUEFHRV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0K ICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNl Y29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0X3RvX3Rhcmdl dF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAgICAgICAgICBp ZiggY29weV90b191c2VyX3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcsUEFH RV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIGJyZWFr Ow0KICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJu byhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCkBAIC0xNDU3 LDEzICsxNDc2LDE0IEBADQogICB0YXJnZXRfdWxvbmcgX191bnVzZWQ1Ow0K IH07DQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X21z cWlkX2RzKHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCwNCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcg dGFyZ2V0X2FkZHIpDQorc3RhdGljIGlubGluZSBsb25nIHRhcmdldF90b19o b3N0X21zcWlkX2RzKHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHIsDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQogICAgIHN0 cnVjdCB0YXJnZXRfbXNxaWRfZHMgKnRhcmdldF9tZDsNCiANCi0gICAgbG9j a191c2VyX3N0cnVjdCh0YXJnZXRfbWQsIHRhcmdldF9hZGRyLCAxKTsNCi0g ICAgdGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oJihob3N0X21kLT5tc2dfcGVy bSksdGFyZ2V0X2FkZHIpOw0KKyAgICBpZiggbG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJnRhcmdldF9tZCx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdl dF9tZCksMSxwZ19hY2Nlc3MpICkgcmV0dXJuIC0xOw0KKyAgICBjb3B5X2Zy b21fdXNlcl9pcGNfcGVybSgmKGhvc3RfbWQtPm1zZ19wZXJtKSwmKHRhcmdl dF9tZC0+bXNnX3Blcm0pKTsNCiAgICAgaG9zdF9tZC0+bXNnX3N0aW1lID0g dHN3YXBsKHRhcmdldF9tZC0+bXNnX3N0aW1lKTsNCiAgICAgaG9zdF9tZC0+ bXNnX3J0aW1lID0gdHN3YXBsKHRhcmdldF9tZC0+bXNnX3J0aW1lKTsNCiAg ICAgaG9zdF9tZC0+bXNnX2N0aW1lID0gdHN3YXBsKHRhcmdldF9tZC0+bXNn X2N0aW1lKTsNCkBAIC0xNDczLDE1ICsxNDkzLDE4IEBADQogICAgIGhvc3Rf bWQtPm1zZ19sc3BpZCA9IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19sc3BpZCk7 DQogICAgIGhvc3RfbWQtPm1zZ19scnBpZCA9IHRzd2FwbCh0YXJnZXRfbWQt Pm1zZ19scnBpZCk7DQogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRf bWQsIHRhcmdldF9hZGRyLCAwKTsNCisNCisgICAgcmV0dXJuIDA7DQogfQ0K IA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9tc3FpZF9k cyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc3FpZF9kcyAq aG9zdF9tZCkNCitzdGF0aWMgaW5saW5lIGxvbmcgaG9zdF90b190YXJnZXRf bXNxaWRfZHModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc3Fp ZF9kcyAqaG9zdF9tZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcGdfYWNjZXNzKQ0KIHsNCiAgICAgc3RydWN0 IHRhcmdldF9tc3FpZF9kcyAqdGFyZ2V0X21kOw0KIA0KLSAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0X2FkZHIsIDApOw0KLSAgICBo b3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRkciwmKGhvc3RfbWQt Pm1zZ19wZXJtKSk7DQorICAgIGlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmdGFyZ2V0X21kLHRhcmdldF9hZGRyLHNpemVvZigqdGFyZ2V0X21k KSwwLHBnX2FjY2VzcykgKSByZXR1cm4gLTE7DQorICAgIGNvcHlfdG9fdXNl cl9pcGNfcGVybSgmKHRhcmdldF9tZC0+bXNnX3Blcm0pLCYoaG9zdF9tZC0+ bXNnX3Blcm0pKTsNCiAgICAgdGFyZ2V0X21kLT5tc2dfc3RpbWUgPSB0c3dh cGwoaG9zdF9tZC0+bXNnX3N0aW1lKTsNCiAgICAgdGFyZ2V0X21kLT5tc2df cnRpbWUgPSB0c3dhcGwoaG9zdF9tZC0+bXNnX3J0aW1lKTsNCiAgICAgdGFy Z2V0X21kLT5tc2dfY3RpbWUgPSB0c3dhcGwoaG9zdF9tZC0+bXNnX2N0aW1l KTsNCkBAIC0xNDkxLDYgKzE1MTQsOCBAQA0KICAgICB0YXJnZXRfbWQtPm1z Z19sc3BpZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHNwaWQpOw0KICAgICB0 YXJnZXRfbWQtPm1zZ19scnBpZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHJw aWQpOw0KICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJn ZXRfYWRkciwgMSk7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCiBzdGF0 aWMgaW5saW5lIGxvbmcgZG9fbXNnY3RsKGxvbmcgZmlyc3QsIGxvbmcgc2Vj b25kLCBsb25nIHB0cikNCkBAIC0xNTAwLDEwICsxNTI1LDE1IEBADQogICAg IGxvbmcgcmV0ID0gMDsNCiAgICAgc3dpdGNoKCBjbWQgKSB7DQogICAgIGNh c2UgSVBDX1NUQVQ6DQorICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9z dF9tc3FpZF9kcygmZHNhcmcscHRyLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0 dXJuIHJldDsNCisgICAgICAgIHJldCA9IGdldF9lcnJubyhtc2djdGwoZmly c3QsIGNtZCwgJmRzYXJnKSk7DQorICAgICAgICBob3N0X3RvX3RhcmdldF9t c3FpZF9kcyhwdHIsJmRzYXJnLFBBR0VfV1JJVEUpOw0KKwlicmVhazsNCiAg ICAgY2FzZSBJUENfU0VUOg0KLSAgICAgICAgdGFyZ2V0X3RvX2hvc3RfbXNx aWRfZHMoJmRzYXJnLHB0cik7DQorICAgICAgICBpZiggKHJldD10YXJnZXRf dG9faG9zdF9tc3FpZF9kcygmZHNhcmcscHRyLFBBR0VfUkVBRCkpICE9IDAg KSByZXR1cm4gcmV0Ow0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKG1zZ2N0 bChmaXJzdCwgY21kLCAmZHNhcmcpKTsNCi0gICAgICAgIGhvc3RfdG9fdGFy Z2V0X21zcWlkX2RzKHB0ciwmZHNhcmcpOw0KKyAgICAgICAgaG9zdF90b190 YXJnZXRfbXNxaWRfZHMocHRyLCZkc2FyZyxQQUdFX1dSSVRFKTsNCisJYnJl YWs7DQogICAgIGRlZmF1bHQ6DQogICAgICAgICByZXQgPSBnZXRfZXJybm8o bXNnY3RsKGZpcnN0LCBjbWQsICZkc2FyZykpOw0KICAgICB9DQpAQCAtMTUy MSw3ICsxNTUxLDcgQEANCiAgICAgc3RydWN0IG1zZ2J1ZiAqaG9zdF9tYjsN CiAgICAgbG9uZyByZXQgPSAwOw0KIA0KLSAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF9tYixtc2dwLDApOw0KKyAgICBpZiggbG9ja19hbmRfY2hlY2tf dXNlcl9zdHJ1Y3QoJnRhcmdldF9tYixtc2dwLHNpemVvZihsb25nKSttc2dz eiwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgaG9zdF9t YiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9uZykpOw0KICAgICBob3N0X21i LT5tdHlwZSA9IHRzd2FwbCh0YXJnZXRfbWItPm10eXBlKTsNCiAgICAgbWVt Y3B5KGhvc3RfbWItPm10ZXh0LHRhcmdldF9tYi0+bXRleHQsbXNnc3opOw0K QEAgLTE1MzgsNyArMTU2OCw3IEBADQogICAgIHN0cnVjdCBtc2didWYgKmhv c3RfbWI7DQogICAgIGxvbmcgcmV0ID0gMDsNCiANCi0gICAgbG9ja191c2Vy X3N0cnVjdCh0YXJnZXRfbWIsIG1zZ3AsIDApOw0KKyAgICBpZiggbG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9tYixtc2dwLHNpemVvZihs b25nKSttc2dzeiwwLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQog ICAgIGhvc3RfbWIgPSBtYWxsb2MobXNnc3orc2l6ZW9mKGxvbmcpKTsNCiAg ICAgcmV0ID0gZ2V0X2Vycm5vKG1zZ3Jjdihtc3FpZCwgaG9zdF9tYiwgbXNn c3osIDEsIG1zZ2ZsZykpOw0KICAgICBpZiAocmV0ID4gMCkNCkBAIC0yMDE4 LDYgKzIwNDgsNyBAQA0KIHN0YXRpYyBpbnQgd3JpdGVfbGR0KENQVVg4NlN0 YXRlICplbnYsIA0KICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9u ZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0ZWNvdW50LCBpbnQgb2xkbW9kZSkN CiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdldF9t b2RpZnlfbGR0X2xkdF9zIGxkdF9pbmZvOw0KICAgICBzdHJ1Y3QgdGFyZ2V0 X21vZGlmeV9sZHRfbGR0X3MgKnRhcmdldF9sZHRfaW5mbzsNCiAgICAgaW50 IHNlZ18zMmJpdCwgY29udGVudHMsIHJlYWRfZXhlY19vbmx5LCBsaW1pdF9p bl9wYWdlczsNCkBAIC0yMDI2LDcgKzIwNTcsNyBAQA0KIA0KICAgICBpZiAo Ynl0ZWNvdW50ICE9IHNpemVvZihsZHRfaW5mbykpDQogICAgICAgICByZXR1 cm4gLUVJTlZBTDsNCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfbGR0 X2luZm8sIHB0ciwgMSk7DQorICAgIGlmKCBsb2NrX2FuZF9jaGVja191c2Vy X3N0cnVjdCgmdGFyZ2V0X2xkdF9pbmZvLHB0cixzaXplb2Yoc3RydWN0IHRh cmdldF9tb2RpZnlfbGR0X2xkdF9zKSwxLFBBR0VfUkVBRCkgKSByZXR1cm4g LUVGQVVMVDsNCiAgICAgbGR0X2luZm8uZW50cnlfbnVtYmVyID0gdHN3YXAz Mih0YXJnZXRfbGR0X2luZm8tPmVudHJ5X251bWJlcik7DQogICAgIGxkdF9p bmZvLmJhc2VfYWRkciA9IHRzd2FwbCh0YXJnZXRfbGR0X2luZm8tPmJhc2Vf YWRkcik7DQogICAgIGxkdF9pbmZvLmxpbWl0ID0gdHN3YXAzMih0YXJnZXRf bGR0X2luZm8tPmxpbWl0KTsNCkBAIC0yMjI1LDcgKzIyNTYsNyBAQA0KIA0K ICAgICBzd2l0Y2goY21kKSB7DQogICAgIGNhc2UgVEFSR0VUX0ZfR0VUTEs6 DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9mbCwgYXJnLCAx KTsNCisJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRf ZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2NrKSwxLFBBR0VfUkVB RCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIGZsLmxfdHlwZSA9IHRz d2FwMTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0KICAgICAgICAgZmwubF93aGVu Y2UgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF93aGVuY2UpOw0KICAgICAgICAg ZmwubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmwtPmxfc3RhcnQpOw0KQEAg LTIyMzQsNiArMjI2NSw3IEBADQogICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1 Y3QodGFyZ2V0X2ZsLCBhcmcsIDApOw0KICAgICAgICAgcmV0ID0gZmNudGwo ZmQsIGNtZCwgJmZsKTsNCiAgICAgICAgIGlmIChyZXQgPT0gMCkgew0KKwkg ICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfZmws YXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2NrKSwwLFBBR0VfV1JJVEUp ICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfZmwsIGFyZywgMCk7DQogICAgICAgICAgICAgdGFyZ2V0 X2ZsLT5sX3R5cGUgPSB0c3dhcDE2KGZsLmxfdHlwZSk7DQogICAgICAgICAg ICAgdGFyZ2V0X2ZsLT5sX3doZW5jZSA9IHRzd2FwMTYoZmwubF93aGVuY2Up Ow0KQEAgLTIyNDYsNyArMjI3OCw3IEBADQogICAgICAgICANCiAgICAgY2Fz ZSBUQVJHRVRfRl9TRVRMSzoNCiAgICAgY2FzZSBUQVJHRVRfRl9TRVRMS1c6 DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9mbCwgYXJnLCAx KTsNCisJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRf ZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2NrKSwxLFBBR0VfUkVB RCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIGZsLmxfdHlwZSA9IHRz d2FwMTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0KICAgICAgICAgZmwubF93aGVu Y2UgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF93aGVuY2UpOw0KICAgICAgICAg ZmwubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmwtPmxfc3RhcnQpOw0KQEAg LTIyNTcsNyArMjI4OSw3IEBADQogICAgICAgICBicmVhazsNCiAgICAgICAg IA0KICAgICBjYXNlIFRBUkdFVF9GX0dFVExLNjQ6DQotICAgICAgICBsb2Nr X3VzZXJfc3RydWN0KHRhcmdldF9mbDY0LCBhcmcsIDEpOw0KKwlpZiggbG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9mbDY0LGFyZyxzaXpl b2Yoc3RydWN0IHRhcmdldF9mbG9jazY0KSwxLFBBR0VfUkVBRCkgKSByZXR1 cm4gLUVGQVVMVDsNCiAgICAgICAgIGZsNjQubF90eXBlID0gdHN3YXAxNih0 YXJnZXRfZmw2NC0+bF90eXBlKSA+PiAxOw0KICAgICAgICAgZmw2NC5sX3do ZW5jZSA9IHRzd2FwMTYodGFyZ2V0X2ZsNjQtPmxfd2hlbmNlKTsNCiAgICAg ICAgIGZsNjQubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmw2NC0+bF9zdGFy dCk7DQpAQCAtMjI2Niw3ICsyMjk4LDcgQEANCiAgICAgICAgIHVubG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAwKTsNCiAgICAgICAgIHJl dCA9IGZjbnRsKGZkLCBjbWQgPj4gMSwgJmZsNjQpOw0KICAgICAgICAgaWYg KHJldCA9PSAwKSB7DQotICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfZmw2NCwgYXJnLCAwKTsNCisJICAgIGlmKCBsb2NrX2FuZF9jaGVj a191c2VyX3N0cnVjdCgmdGFyZ2V0X2ZsNjQsYXJnLHNpemVvZihzdHJ1Y3Qg dGFyZ2V0X2Zsb2NrNjQpLDAsUEFHRV9XUklURSkgKSByZXR1cm4gLUVGQVVM VDsNCiAgICAgICAgICAgICB0YXJnZXRfZmw2NC0+bF90eXBlID0gdHN3YXAx NihmbDY0LmxfdHlwZSkgPj4gMTsNCiAgICAgICAgICAgICB0YXJnZXRfZmw2 NC0+bF93aGVuY2UgPSB0c3dhcDE2KGZsNjQubF93aGVuY2UpOw0KICAgICAg ICAgICAgIHRhcmdldF9mbDY0LT5sX3N0YXJ0ID0gdHN3YXBsKGZsNjQubF9z dGFydCk7DQpAQCAtMjI3Nyw3ICsyMzA5LDcgQEANCiAJCWJyZWFrOw0KICAg ICBjYXNlIFRBUkdFVF9GX1NFVExLNjQ6DQogICAgIGNhc2UgVEFSR0VUX0Zf U0VUTEtXNjQ6DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9m bDY0LCBhcmcsIDEpOw0KKwlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1 Y3QoJnRhcmdldF9mbDY0LGFyZyxzaXplb2Yoc3RydWN0IHRhcmdldF9mbG9j azY0KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg IGZsNjQubF90eXBlID0gdHN3YXAxNih0YXJnZXRfZmw2NC0+bF90eXBlKSA+ PiAxOw0KICAgICAgICAgZmw2NC5sX3doZW5jZSA9IHRzd2FwMTYodGFyZ2V0 X2ZsNjQtPmxfd2hlbmNlKTsNCiAgICAgICAgIGZsNjQubF9zdGFydCA9IHRz d2FwbCh0YXJnZXRfZmw2NC0+bF9zdGFydCk7DQpAQCAtMjQxOSwzMiArMjQ1 MSwzNyBAQA0KIH0NCiAjZW5kaWYNCiANCi1zdGF0aWMgaW5saW5lIHZvaWQg dGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICpob3N0 X3RzLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyB0YXJnZXRfdG9faG9zdF90aW1l c3BlYyhzdHJ1Y3QgdGltZXNwZWMgKmhvc3RfdHMsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0 YXJnZXRfYWRkcikNCiB7DQogICAgIHN0cnVjdCB0YXJnZXRfdGltZXNwZWMg KnRhcmdldF90czsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRf dHMsIHRhcmdldF9hZGRyLCAxKTsNCisgICAgaWYoIGxvY2tfYW5kX2NoZWNr X3VzZXJfc3RydWN0KCZ0YXJnZXRfdHMsdGFyZ2V0X2FkZHIsc2l6ZW9mKHN0 cnVjdCB0YXJnZXRfdGltZXNwZWMpLDEsUEFHRV9SRUFEKSApIHJldHVybiAt MTsNCiAgICAgaG9zdF90cy0+dHZfc2VjID0gdHN3YXBsKHRhcmdldF90cy0+ dHZfc2VjKTsNCiAgICAgaG9zdF90cy0+dHZfbnNlYyA9IHRzd2FwbCh0YXJn ZXRfdHMtPnR2X25zZWMpOw0KICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFy Z2V0X3RzLCB0YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJldHVybiAwOw0K IH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfdGlt ZXNwZWModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxp bmUgbG9uZyBob3N0X3RvX3RhcmdldF90aW1lc3BlYyh0YXJnZXRfdWxvbmcg dGFyZ2V0X2FkZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cykNCiB7DQog ICAgIHN0cnVjdCB0YXJnZXRfdGltZXNwZWMgKnRhcmdldF90czsNCiANCiAg ICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfdHMsIHRhcmdldF9hZGRyLCAw KTsNCisgICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJn ZXRfdHMsdGFyZ2V0X2FkZHIsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfdGltZXNw ZWMpLDAsUEFHRV9XUklURSkgKSByZXR1cm4gLTE7DQogICAgIHRhcmdldF90 cy0+dHZfc2VjID0gdHN3YXBsKGhvc3RfdHMtPnR2X3NlYyk7DQogICAgIHRh cmdldF90cy0+dHZfbnNlYyA9IHRzd2FwbChob3N0X3RzLT50dl9uc2VjKTsN CiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90cywgdGFyZ2V0X2Fk ZHIsIDEpOw0KKw0KKyAgICByZXR1cm4gMDsNCiB9DQogDQogbG9uZyBkb19z eXNjYWxsKHZvaWQgKmNwdV9lbnYsIGludCBudW0sIGxvbmcgYXJnMSwgbG9u ZyBhcmcyLCBsb25nIGFyZzMsIA0KICAgICAgICAgICAgICAgICBsb25nIGFy ZzQsIGxvbmcgYXJnNSwgbG9uZyBhcmc2KQ0KIHsNCi0gICAgbG9uZyByZXQ7 DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHN0YXQgc3Q7DQog ICAgIHN0cnVjdCBzdGF0ZnMgc3RmczsNCiAgICAgdm9pZCAqcDsNCkBAIC0y NjcxLDcgKzI3MDgsNyBAQA0KICAgICAgICAgICAgIHN0cnVjdCB1dGltYnVm IHRidWYsICpob3N0X3RidWY7DQogICAgICAgICAgICAgc3RydWN0IHRhcmdl dF91dGltYnVmICp0YXJnZXRfdGJ1ZjsNCiAgICAgICAgICAgICBpZiAoYXJn Mikgew0KLSAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdl dF90YnVmLCBhcmcyLCAxKTsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2Vy X3N0cnVjdCgmdGFyZ2V0X3RidWYsYXJnMixzaXplb2Yoc3RydWN0IHRhcmdl dF91dGltYnVmKSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAg ICAgICAgICAgICAgICAgdGJ1Zi5hY3RpbWUgPSB0c3dhcGwodGFyZ2V0X3Ri dWYtPmFjdGltZSk7DQogICAgICAgICAgICAgICAgIHRidWYubW9kdGltZSA9 IHRzd2FwbCh0YXJnZXRfdGJ1Zi0+bW9kdGltZSk7DQogICAgICAgICAgICAg ICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfdGJ1ZiwgYXJnMiwgMCk7 DQpAQCAtMjY4OSw5ICsyNzI2LDExIEBADQogICAgICAgICB7DQogICAgICAg ICAgICAgc3RydWN0IHRpbWV2YWwgKnR2cCwgdHZbMl07DQogICAgICAgICAg ICAgaWYgKGFyZzIpIHsNCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3RvX2hv c3RfdGltZXZhbCgmdHZbMF0sIGFyZzIpOw0KLSAgICAgICAgICAgICAgICB0 YXJnZXRfdG9faG9zdF90aW1ldmFsKCZ0dlsxXSwNCi0gICAgICAgICAgICAg ICAgICAgIGFyZzIgKyBzaXplb2YgKHN0cnVjdCB0YXJnZXRfdGltZXZhbCkp Ow0KKyAgICAgICAgICAgICAgICBpZiggY29weV9mcm9tX3VzZXJfdGltZXZh bCgmdHZbMF0sIGFyZzIpICkNCisJCQlyZXR1cm4gLUVGQVVMVDsNCisgICAg ICAgICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3RpbWV2YWwoJnR2WzFd LA0KKwkJICAgIGFyZzIgKyBzaXplb2YgKHN0cnVjdCB0YXJnZXRfdGltZXZh bCkpICkNCisJCQlyZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICAgICAg dHZwID0gdHY7DQogICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg ICAgICAgdHZwID0gTlVMTDsNCkBAIC0yODYwLDcgKzI4OTksNyBAQA0KICAg ICAgICAgICAgIHN0cnVjdCB0YXJnZXRfb2xkX3NpZ2FjdGlvbiAqb2xkX2Fj dDsNCiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiBhY3Qs IG9hY3QsICpwYWN0Ow0KICAgICAgICAgICAgIGlmIChhcmcyKSB7DQotICAg ICAgICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3Qob2xkX2FjdCwgYXJnMiwg MSk7DQorCQlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJm9sZF9h Y3QsYXJnMixzaXplb2YoKm9sZF9hY3QpLDEsUEFHRV9SRUFEKSApIHJldHVy biAtRUZBVUxUOw0KICAgICAgICAgICAgICAgICBhY3QuX3NhX2hhbmRsZXIg PSBvbGRfYWN0LT5fc2FfaGFuZGxlcjsNCiAgICAgICAgICAgICAgICAgdGFy Z2V0X3NpZ2luaXRzZXQoJmFjdC5zYV9tYXNrLCBvbGRfYWN0LT5zYV9tYXNr KTsNCiAgICAgICAgICAgICAgICAgYWN0LnNhX2ZsYWdzID0gb2xkX2FjdC0+ c2FfZmxhZ3M7DQpAQCAtMjg3Miw3ICsyOTExLDcgQEANCiAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGRvX3NpZ2FjdGlv bihhcmcxLCBwYWN0LCAmb2FjdCkpOw0KICAgICAgICAgICAgIGlmICghaXNf ZXJyb3IocmV0KSAmJiBhcmczKSB7DQotICAgICAgICAgICAgICAgIGxvY2tf dXNlcl9zdHJ1Y3Qob2xkX2FjdCwgYXJnMywgMCk7DQorCQlpZiggbG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJm9sZF9hY3QsYXJnMyxzaXplb2YoKm9s ZF9hY3QpLDAsUEFHRV9XUklURSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgICAgICAgICAgb2xkX2FjdC0+X3NhX2hhbmRsZXIgPSBvYWN0Ll9zYV9o YW5kbGVyOw0KICAgICAgICAgICAgICAgICBvbGRfYWN0LT5zYV9tYXNrID0g b2FjdC5zYV9tYXNrLnNpZ1swXTsNCiAgICAgICAgICAgICAgICAgb2xkX2Fj dC0+c2FfZmxhZ3MgPSBvYWN0LnNhX2ZsYWdzOw0KQEAgLTI4ODMsNyArMjky Miw3IEBADQogCSAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiBhY3QsIG9h Y3QsICpwYWN0LCAqb2xkX2FjdDsNCiANCiAJICAgIGlmIChhcmcyKSB7DQot CQlsb2NrX3VzZXJfc3RydWN0KG9sZF9hY3QsIGFyZzIsIDEpOw0KKwkJaWYo IGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZvbGRfYWN0LGFyZzIsc2l6 ZW9mKCpvbGRfYWN0KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsN CiAJCWFjdC5fc2FfaGFuZGxlciA9IG9sZF9hY3QtPl9zYV9oYW5kbGVyOw0K IAkJdGFyZ2V0X3NpZ2luaXRzZXQoJmFjdC5zYV9tYXNrLCBvbGRfYWN0LT5z YV9tYXNrLnNpZ1swXSk7DQogCQlhY3Quc2FfZmxhZ3MgPSBvbGRfYWN0LT5z YV9mbGFnczsNCkBAIC0yODk2LDcgKzI5MzUsNyBAQA0KIAkgICAgcmV0ID0g Z2V0X2Vycm5vKGRvX3NpZ2FjdGlvbihhcmcxLCBwYWN0LCAmb2FjdCkpOw0K IA0KIAkgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzMpIHsNCi0JCWxv Y2tfdXNlcl9zdHJ1Y3Qob2xkX2FjdCwgYXJnMywgMCk7DQorCQlpZiggbG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJm9sZF9hY3QsYXJnMyxzaXplb2Yo Km9sZF9hY3QpLDAsUEFHRV9XUklURSkgKSByZXR1cm4gLUVGQVVMVDsNCiAJ CW9sZF9hY3QtPl9zYV9oYW5kbGVyID0gb2FjdC5fc2FfaGFuZGxlcjsNCiAJ CW9sZF9hY3QtPnNhX2ZsYWdzID0gb2FjdC5zYV9mbGFnczsNCiAJCW9sZF9h Y3QtPnNhX21hc2suc2lnWzBdID0gb2FjdC5zYV9tYXNrLnNpZ1swXTsNCkBA IC0yOTE0LDEyICsyOTUzLDE0IEBADQogICAgICAgICAgICAgc3RydWN0IHRh cmdldF9zaWdhY3Rpb24gKmFjdDsNCiAgICAgICAgICAgICBzdHJ1Y3QgdGFy Z2V0X3NpZ2FjdGlvbiAqb2FjdDsNCiANCi0gICAgICAgICAgICBpZiAoYXJn MikNCi0gICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdChhY3QsIGFy ZzIsIDEpOw0KKyAgICAgICAgICAgIGlmIChhcmcyKSB7DQorCQlpZiggbG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJmFjdCxhcmcyLHNpemVvZigqYWN0 KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAg YWN0ID0gTlVMTDsNCi0gICAgICAgICAgICBpZiAoYXJnMykNCi0gICAgICAg ICAgICAgICAgbG9ja191c2VyX3N0cnVjdChvYWN0LCBhcmczLCAwKTsNCisg ICAgICAgICAgICBpZiAoYXJnMykgew0KKwkJaWYoIGxvY2tfYW5kX2NoZWNr X3VzZXJfc3RydWN0KCZvYWN0LGFyZzIsc2l6ZW9mKCpvYWN0KSwwLFBBR0Vf V1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgIG9hY3QgPSBO VUxMOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhkb19zaWdhY3Rp b24oYXJnMSwgYWN0LCBvYWN0KSk7DQpAQCAtMzA0Niw3ICszMDg3LDcgQEAN CiAgICAgICAgICAgICBzaWdzZXRfdCBzZXQ7DQogICAgICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKHNpZ3BlbmRpbmcoJnNldCkpOw0KICAgICAgICAgICAg IGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAgICAgICAgICBwID0g bG9ja191c2VyKGFyZzEsIHNpemVvZih0YXJnZXRfc2lnc2V0X3QpLCAwKTsN CisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmcCxhcmcxLHNp emVvZih0YXJnZXRfc2lnc2V0X3QpLDAsUEFHRV9XUklURSkgKSByZXR1cm4g LUVGQVVMVDsNCiAgICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfc2ln c2V0KHAsICZzZXQpOw0KICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcihw LCBhcmcxLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSk7DQogICAgICAgICAg ICAgfQ0KQEAgLTMwNTYsNyArMzA5Nyw3IEBADQogICAgIGNhc2UgVEFSR0VU X05SX3NpZ3N1c3BlbmQ6DQogICAgICAgICB7DQogICAgICAgICAgICAgc2ln c2V0X3Qgc2V0Ow0KLSAgICAgICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMSwg c2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksIDEpOw0KKwkgICAgaWYoIGxvY2tf YW5kX2NoZWNrX3VzZXJfc3RydWN0KCZwLGFyZzEsc2l6ZW9mKHRhcmdldF9z aWdzZXRfdCksMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAg ICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfb2xkX3NpZ3NldCgmc2V0LCBwKTsN CiAgICAgICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcxLCAwKTsNCiAgICAg ICAgICAgICByZXQgPSBnZXRfZXJybm8oc2lnc3VzcGVuZCgmc2V0KSk7DQpA QCAtMzA2Niw3ICszMTA3LDcgQEANCiAgICAgY2FzZSBUQVJHRVRfTlJfcnRf c2lnc3VzcGVuZDoNCiAgICAgICAgIHsNCiAgICAgICAgICAgICBzaWdzZXRf dCBzZXQ7DQotICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcxLCBzaXpl b2YodGFyZ2V0X3NpZ3NldF90KSwgMSk7DQorCSAgICBpZiggbG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJnMSxzaXplb2YodGFyZ2V0X3NpZ3Nl dF90KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAg ICAgICB0YXJnZXRfdG9faG9zdF9zaWdzZXQoJnNldCwgcCk7DQogICAgICAg ICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgICAgICAgICAg cmV0ID0gZ2V0X2Vycm5vKHNpZ3N1c3BlbmQoJnNldCkpOw0KQEAgLTMwNzgs MTggKzMxMTksMTggQEANCiAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMg dXRzLCAqcHV0czsNCiAgICAgICAgICAgICBzaWdpbmZvX3QgdWluZm87DQog ICAgICAgICAgICAgDQotICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcx LCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwgMSk7DQorCSAgICBpZiggbG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJnMSxzaXplb2YodGFyZ2V0 X3NpZ3NldF90KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAg ICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zaWdzZXQoJnNldCwgcCk7DQog ICAgICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgICAg ICAgICAgaWYgKGFyZzMpIHsNCiAgICAgICAgICAgICAgICAgcHV0cyA9ICZ1 dHM7DQotICAgICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWVzcGVj KHB1dHMsIGFyZzMpOw0KKyAgICAgICAgICAgICAgICBpZiggKHJldD10YXJn ZXRfdG9faG9zdF90aW1lc3BlYyhwdXRzLCBhcmczKSkgIT0gMCApIHJldHVy biByZXQ7DQogICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg ICAgcHV0cyA9IE5VTEw7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhzaWd0aW1lZHdhaXQoJnNldCwgJnVpbmZvLCBw dXRzKSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFy ZzIpIHsNCi0gICAgICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcyLCBz aXplb2YodGFyZ2V0X3NpZ3NldF90KSwgMCk7DQorCQlpZiggbG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJnMixzaXplb2YodGFyZ2V0X3NpZ3Nl dF90KSwwLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NpZ2luZm8ocCwgJnVpbmZvKTsN CiAgICAgICAgICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMiwgc2l6ZW9m KHRhcmdldF9zaWdzZXRfdCkpOw0KICAgICAgICAgICAgIH0NCkBAIC0zMDk4 LDcgKzMxMzksNyBAQA0KICAgICBjYXNlIFRBUkdFVF9OUl9ydF9zaWdxdWV1 ZWluZm86DQogICAgICAgICB7DQogICAgICAgICAgICAgc2lnaW5mb190IHVp bmZvOw0KLSAgICAgICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMywgc2l6ZW9m KHRhcmdldF9zaWdzZXRfdCksIDEpOw0KKwkgICAgaWYoIGxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZwLGFyZzMsc2l6ZW9mKHRhcmdldF9zaWdzZXRf dCksMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAg ICAgdGFyZ2V0X3RvX2hvc3Rfc2lnaW5mbygmdWluZm8sIHApOw0KICAgICAg ICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhzeXNfcnRfc2lncXVldWVpbmZvKGFyZzEsIGFy ZzIsICZ1aW5mbykpOw0KQEAgLTMxNTMsNyArMzE5NCw3IEBADQogICAgICAg ICAgICAgc3RydWN0IHJ1c2FnZSBydXNhZ2U7DQogICAgICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKGdldHJ1c2FnZShhcmcxLCAmcnVzYWdlKSk7DQogICAg ICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICAgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X3J1c2FnZShhcmcyLCAmcnVzYWdlKTsNCisg ICAgICAgICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3J1c2FnZShhcmcy LCAmcnVzYWdlKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIH0N CiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KQEAgLTMxNjIsMTQgKzMy MDMsMTQgQEANCiAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsNCiAg ICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oZ2V0dGltZW9mZGF5KCZ0diwg TlVMTCkpOw0KICAgICAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0K LSAgICAgICAgICAgICAgICBob3N0X3RvX3RhcmdldF90aW1ldmFsKGFyZzEs ICZ0dik7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfdGlt ZXZhbChhcmcxLCAmdHYpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAg ICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2Ug VEFSR0VUX05SX3NldHRpbWVvZmRheToNCiAgICAgICAgIHsNCiAgICAgICAg ICAgICBzdHJ1Y3QgdGltZXZhbCB0djsNCi0gICAgICAgICAgICB0YXJnZXRf dG9faG9zdF90aW1ldmFsKCZ0diwgYXJnMSk7DQorICAgICAgICAgICAgaWYo IGNvcHlfZnJvbV91c2VyX3RpbWV2YWwoJnR2LCBhcmcxKSApIHJldHVybiAt RUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZXR0aW1l b2ZkYXkoJnR2LCBOVUxMKSk7DQogICAgICAgICB9DQogICAgICAgICBicmVh azsNCkBAIC0zMzM1LDIwICszMzc2LDE5IEBADQogICAgICAgICB1bmxvY2tf dXNlcihwLCBhcmcxLCAwKTsNCiAgICAgY29udmVydF9zdGF0ZnM6DQogICAg ICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgICAgICBzdHJ1 Y3QgdGFyZ2V0X3N0YXRmcyAqdGFyZ2V0X3N0ZnM7DQorICAgICAgICAgICAg c3RydWN0IHRhcmdldF9zdGF0ZnMgKnRhcmdldF9zdGZzID0gKHN0cnVjdCB0 YXJnZXRfc3RhdGZzICopYXJnMjsNCiAgICAgICAgICAgICANCi0gICAgICAg ICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdGZzLCBhcmcyLCAwKTsN Ci0gICAgICAgICAgICAvKiA/Pz8gcHV0X3VzZXIgaXMgcHJvYmFibHkgd3Jv bmcuICAqLw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl90eXBlLCAm dGFyZ2V0X3N0ZnMtPmZfdHlwZSk7DQotICAgICAgICAgICAgcHV0X3VzZXIo c3Rmcy5mX2JzaXplLCAmdGFyZ2V0X3N0ZnMtPmZfYnNpemUpOw0KLSAgICAg ICAgICAgIHB1dF91c2VyKHN0ZnMuZl9ibG9ja3MsICZ0YXJnZXRfc3Rmcy0+ Zl9ibG9ja3MpOw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9iZnJl ZSwgJnRhcmdldF9zdGZzLT5mX2JmcmVlKTsNCi0gICAgICAgICAgICBwdXRf dXNlcihzdGZzLmZfYmF2YWlsLCAmdGFyZ2V0X3N0ZnMtPmZfYmF2YWlsKTsN Ci0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfZmlsZXMsICZ0YXJnZXRf c3Rmcy0+Zl9maWxlcyk7DQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5m X2ZmcmVlLCAmdGFyZ2V0X3N0ZnMtPmZfZmZyZWUpOw0KLSAgICAgICAgICAg IHB1dF91c2VyKHN0ZnMuZl9mc2lkLl9fdmFsWzBdLCAmdGFyZ2V0X3N0ZnMt PmZfZnNpZCk7DQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX25hbWVs ZW4sICZ0YXJnZXRfc3Rmcy0+Zl9uYW1lbGVuKTsNCi0gICAgICAgICAgICB1 bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0ZnMsIGFyZzIsIDEpOw0KKwkg ICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLHRhcmdldF9zdGZzLHNp emVvZihzdHJ1Y3QgdGFyZ2V0X3N0YXRmcykpICkgcmV0dXJuIC1FRkFVTFQ7 DQorICAgICAgICAgICAgLyogdXNlIF9fcHV0X3VzZXIgc2luY2Ugd2UganVz dCB2YWxpZGF0ZWQgdGhlIGVudGlyZSBidWZmZmVyLiAgKi8NCisgICAgICAg ICAgICBfX3B1dF91c2VyKHN0ZnMuZl90eXBlLCAmdGFyZ2V0X3N0ZnMtPmZf dHlwZSk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfYnNpemUs ICZ0YXJnZXRfc3Rmcy0+Zl9ic2l6ZSk7DQorICAgICAgICAgICAgX19wdXRf dXNlcihzdGZzLmZfYmxvY2tzLCAmdGFyZ2V0X3N0ZnMtPmZfYmxvY2tzKTsN CisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9iZnJlZSwgJnRhcmdl dF9zdGZzLT5mX2JmcmVlKTsNCisgICAgICAgICAgICBfX3B1dF91c2VyKHN0 ZnMuZl9iYXZhaWwsICZ0YXJnZXRfc3Rmcy0+Zl9iYXZhaWwpOw0KKyAgICAg ICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2ZpbGVzLCAmdGFyZ2V0X3N0ZnMt PmZfZmlsZXMpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2Zm cmVlLCAmdGFyZ2V0X3N0ZnMtPmZfZmZyZWUpOw0KKyAgICAgICAgICAgIF9f cHV0X3VzZXIoc3Rmcy5mX2ZzaWQuX192YWxbMF0sICZ0YXJnZXRfc3Rmcy0+ Zl9mc2lkKTsNCisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9uYW1l bGVuLCAmdGFyZ2V0X3N0ZnMtPmZfbmFtZWxlbik7DQogICAgICAgICB9DQog ICAgICAgICBicmVhazsNCiAgICAgY2FzZSBUQVJHRVRfTlJfZnN0YXRmczoN CkBAIC0zMzYxLDIwICszNDAxLDE5IEBADQogICAgICAgICB1bmxvY2tfdXNl cihwLCBhcmcxLCAwKTsNCiAgICAgY29udmVydF9zdGF0ZnM2NDoNCiAgICAg ICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAgICAgIHN0cnVj dCB0YXJnZXRfc3RhdGZzNjQgKnRhcmdldF9zdGZzOw0KKyAgICAgICAgICAg IHN0cnVjdCB0YXJnZXRfc3RhdGZzNjQgKnRhcmdldF9zdGZzID0gKHN0cnVj dCB0YXJnZXRfc3RhdGZzNjQgKilhcmczOw0KICAgICAgICAgICAgIA0KLSAg ICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0ZnMsIGFyZzMs IDApOw0KLSAgICAgICAgICAgIC8qID8/PyBwdXRfdXNlciBpcyBwcm9iYWJs eSB3cm9uZy4gICovDQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX3R5 cGUsICZ0YXJnZXRfc3Rmcy0+Zl90eXBlKTsNCi0gICAgICAgICAgICBwdXRf dXNlcihzdGZzLmZfYnNpemUsICZ0YXJnZXRfc3Rmcy0+Zl9ic2l6ZSk7DQot ICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX2Jsb2NrcywgJnRhcmdldF9z dGZzLT5mX2Jsb2Nrcyk7DQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5m X2JmcmVlLCAmdGFyZ2V0X3N0ZnMtPmZfYmZyZWUpOw0KLSAgICAgICAgICAg IHB1dF91c2VyKHN0ZnMuZl9iYXZhaWwsICZ0YXJnZXRfc3Rmcy0+Zl9iYXZh aWwpOw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9maWxlcywgJnRh cmdldF9zdGZzLT5mX2ZpbGVzKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihz dGZzLmZfZmZyZWUsICZ0YXJnZXRfc3Rmcy0+Zl9mZnJlZSk7DQotICAgICAg ICAgICAgcHV0X3VzZXIoc3Rmcy5mX2ZzaWQuX192YWxbMF0sICZ0YXJnZXRf c3Rmcy0+Zl9mc2lkKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZf bmFtZWxlbiwgJnRhcmdldF9zdGZzLT5mX25hbWVsZW4pOw0KLSAgICAgICAg ICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3RmcywgYXJnMywgMCk7 DQorCSAgICBpZiggIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsdGFyZ2V0X3N0 ZnMsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfc3RhdGZzNjQpKSApIHJldHVybiAt RUZBVUxUOw0KKyAgICAgICAgICAgIC8qIHVzZSBfX3B1dF91c2VyIHNpbmNl IHdlIGp1c3QgdmFsaWRhdGVkIHRoZSBlbnRpcmUgYnVmZmZlci4gICovDQor ICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfdHlwZSwgJnRhcmdldF9z dGZzLT5mX3R5cGUpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5m X2JzaXplLCAmdGFyZ2V0X3N0ZnMtPmZfYnNpemUpOw0KKyAgICAgICAgICAg IF9fcHV0X3VzZXIoc3Rmcy5mX2Jsb2NrcywgJnRhcmdldF9zdGZzLT5mX2Js b2Nrcyk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfYmZyZWUs ICZ0YXJnZXRfc3Rmcy0+Zl9iZnJlZSk7DQorICAgICAgICAgICAgX19wdXRf dXNlcihzdGZzLmZfYmF2YWlsLCAmdGFyZ2V0X3N0ZnMtPmZfYmF2YWlsKTsN CisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9maWxlcywgJnRhcmdl dF9zdGZzLT5mX2ZpbGVzKTsNCisgICAgICAgICAgICBfX3B1dF91c2VyKHN0 ZnMuZl9mZnJlZSwgJnRhcmdldF9zdGZzLT5mX2ZmcmVlKTsNCisgICAgICAg ICAgICBfX3B1dF91c2VyKHN0ZnMuZl9mc2lkLl9fdmFsWzBdLCAmdGFyZ2V0 X3N0ZnMtPmZfZnNpZCk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZz LmZfbmFtZWxlbiwgJnRhcmdldF9zdGZzLT5mX25hbWVsZW4pOw0KICAgICAg ICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgVEFSR0VUX05SX2Zz dGF0ZnM2NDoNCkBAIC0zNDg4LDE5ICszNTI3LDIwIEBADQogDQogICAgICAg ICAgICAgaWYgKGFyZzIpIHsNCiAgICAgICAgICAgICAgICAgcHZhbHVlID0g JnZhbHVlOw0KLSAgICAgICAgICAgICAgICB0YXJnZXRfdG9faG9zdF90aW1l dmFsKCZwdmFsdWUtPml0X2ludGVydmFsLCANCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcmcyKTsNCi0gICAgICAgICAgICAg ICAgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmcHZhbHVlLT5pdF92YWx1ZSwg DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn MiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKTsNCisgICAgICAg ICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3RpbWV2YWwoJnB2YWx1ZS0+ aXRfaW50ZXJ2YWwsIGFyZzIpICkNCisJCQlyZXR1cm4gLUVGQVVMVDsNCisg ICAgICAgICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3RpbWV2YWwoJnB2 YWx1ZS0+aXRfdmFsdWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXJnMiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2 YWwpKSApDQorCQkJcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgfSBl bHNlIHsNCiAgICAgICAgICAgICAgICAgcHZhbHVlID0gTlVMTDsNCiAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNldGl0 aW1lcihhcmcxLCBwdmFsdWUsICZvdmFsdWUpKTsNCiAgICAgICAgICAgICBp ZiAoIWlzX2Vycm9yKHJldCkgJiYgYXJnMykgew0KLSAgICAgICAgICAgICAg ICBob3N0X3RvX3RhcmdldF90aW1ldmFsKGFyZzMsDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm92YWx1ZS5pdF9pbnRlcnZh bCk7DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwo YXJnMyArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpLA0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdmFsdWUuaXRf dmFsdWUpOw0KKyAgICAgICAgICAgICAgICBpZiggY29weV90b191c2VyX3Rp bWV2YWwoYXJnMywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3ZhbHVlLml0X2ludGVydmFsKSApIHJldHVybiAtRUZBVUxU Ow0KKyAgICAgICAgICAgICAgICBpZiggY29weV90b191c2VyX3RpbWV2YWwo YXJnMyArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdmFsdWUuaXRf dmFsdWUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgfQ0KICAg ICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQpAQCAtMzUxMCwxMCArMzU1MCwx MCBAQA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgIHJldCA9IGdldF9l cnJubyhnZXRpdGltZXIoYXJnMSwgJnZhbHVlKSk7DQogICAgICAgICAgICAg aWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAgICAgICAgICAg ICAgaG9zdF90b190YXJnZXRfdGltZXZhbChhcmcyLA0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZS5pdF9pbnRlcnZh bCk7DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwo YXJnMiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpLA0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZS5pdF92 YWx1ZSk7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfdGlt ZXZhbChhcmcyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ2YWx1ZS5pdF9pbnRlcnZhbCkgKSByZXR1cm4gLUVGQVVMVDsN CisgICAgICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl90aW1ldmFsKGFy ZzIgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1ldmFsKSwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUuaXRfdmFs dWUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgfQ0KICAgICAg ICAgfQ0KICAgICAgICAgYnJlYWs7DQpAQCAtMzUzNCw3ICszNTc0LDcgQEAN CiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAg ICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0ICp0YXJnZXRfc3Q7DQogDQot ICAgICAgICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0LCBh cmcyLCAwKTsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm dGFyZ2V0X3N0LGFyZzIsc2l6ZW9mKCp0YXJnZXRfc3QpLDksUEFHRV9XUklU RSkgKSByZXR1cm4gLUVGQVVMVDsNCiAjaWYgZGVmaW5lZChUQVJHRVRfTUlQ UykNCiAgICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF9kZXYgPSB0c3dh cDMyKHN0LnN0X2Rldik7DQogI2Vsc2UNCkBAIC0zNjAzLDcgKzM2NDMsOCBA QA0KICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX3B0cikNCiAgICAgICAg ICAgICAgICAgICAgIHRwdXRsKHN0YXR1c19wdHIsIHN0YXR1cyk7DQogICAg ICAgICAgICAgICAgIGlmICh0YXJnZXRfcnVzYWdlKSB7DQotICAgICAgICAg ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9ydXNhZ2UodGFyZ2V0X3J1c2Fn ZSwgJnJ1c2FnZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiggIWNvcHlf ZnJvbV91c2VyX3J1c2FnZSh0YXJnZXRfcnVzYWdlLCAmcnVzYWdlKSApDQor CQkJcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICB9DQogICAgICAgICB9DQpAQCAtMzk2NSwxNyArNDAwNiwxNyBA QA0KICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0czsNCiAgICAgICAg ICAgICByZXQgPSBnZXRfZXJybm8oc2NoZWRfcnJfZ2V0X2ludGVydmFsKGFy ZzEsICZ0cykpOw0KICAgICAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSkg ew0KLSAgICAgICAgICAgICAgICBob3N0X3RvX3RhcmdldF90aW1lc3BlYyhh cmcyLCAmdHMpOw0KKyAgICAgICAgICAgICAgICBpZiggKHJldD1ob3N0X3Rv X3RhcmdldF90aW1lc3BlYyhhcmcyLCAmdHMpKSAhPSAwICkgcmV0dXJuIHJl dDsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBicmVh azsNCiAgICAgY2FzZSBUQVJHRVRfTlJfbmFub3NsZWVwOg0KICAgICAgICAg ew0KICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXEsIHJlbTsNCi0g ICAgICAgICAgICB0YXJnZXRfdG9faG9zdF90aW1lc3BlYygmcmVxLCBhcmcx KTsNCisgICAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9zdF90aW1l c3BlYygmcmVxLCBhcmcxKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAg ICAgICAgcmV0ID0gZ2V0X2Vycm5vKG5hbm9zbGVlcCgmcmVxLCAmcmVtKSk7 DQogICAgICAgICAgICAgaWYgKGlzX2Vycm9yKHJldCkgJiYgYXJnMikgew0K LSAgICAgICAgICAgICAgICBob3N0X3RvX3RhcmdldF90aW1lc3BlYyhhcmcy LCAmcmVtKTsNCisgICAgICAgICAgICAgICAgaWYoIChyZXQ9aG9zdF90b190 YXJnZXRfdGltZXNwZWMoYXJnMiwgJnJlbSkpICE9IDAgKSByZXR1cm4gcmV0 Ow0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFr Ow0KQEAgLTQwNzIsNiArNDExMyw3IEBADQogI2lmZGVmIFRBUkdFVF9OUl9z dGF0NjQNCiAgICAgY2FzZSBUQVJHRVRfTlJfc3RhdDY0Og0KICAgICAgICAg cCA9IGxvY2tfdXNlcl9zdHJpbmcoYXJnMSk7DQorICAgICAgICBpZiggcmV0 PXBhZ2VfY2hlY2tfcmFuZ2UocCwxLFBBR0VfUkVBRCkgKSByZXR1cm4gcmV0 Ow0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHN0YXQocGF0aChwKSwgJnN0 KSk7DQogICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcxLCAwKTsNCiAgICAg ICAgIGdvdG8gZG9fc3RhdDY0Ow0KQEAgLTQwNzksNiArNDEyMSw3IEBADQog I2lmZGVmIFRBUkdFVF9OUl9sc3RhdDY0DQogICAgIGNhc2UgVEFSR0VUX05S X2xzdGF0NjQ6DQogICAgICAgICBwID0gbG9ja191c2VyX3N0cmluZyhhcmcx KTsNCisgICAgICAgIGlmKCByZXQ9cGFnZV9jaGVja19yYW5nZShwLDEsUEFH RV9SRUFEKSApIHJldHVybiByZXQ7DQogICAgICAgICByZXQgPSBnZXRfZXJy bm8obHN0YXQocGF0aChwKSwgJnN0KSk7DQogICAgICAgICB1bmxvY2tfdXNl cihwLCBhcmcxLCAwKTsNCiAgICAgICAgIGdvdG8gZG9fc3RhdDY0Ow0KQEAg LTQwOTEsNTMgKzQxMzQsNTEgQEANCiAgICAgICAgICAgICBpZiAoIWlzX2Vy cm9yKHJldCkpIHsNCiAjaWZkZWYgVEFSR0VUX0FSTQ0KICAgICAgICAgICAg ICAgICBpZiAoKChDUFVBUk1TdGF0ZSAqKWNwdV9lbnYpLT5lYWJpKSB7DQot ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X2VhYmlfc3RhdDY0 ICp0YXJnZXRfc3Q7DQotICAgICAgICAgICAgICAgICAgICBsb2NrX3VzZXJf c3RydWN0KHRhcmdldF9zdCwgYXJnMiwgMSk7DQorICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgdGFyZ2V0X2VhYmlfc3RhdDY0ICp0YXJnZXRfc3QgPSAo c3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCAqKWFyZzI7DQorCQkgICAgaWYo ICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLHRhcmdldF9zdCxzaXplb2Yoc3Ry dWN0IHRhcmdldF9lYWJpX3N0YXQ2NCkpICkgcmV0dXJuIC1FRkFVTFQ7DQog ICAgICAgICAgICAgICAgICAgICBtZW1zZXQodGFyZ2V0X3N0LCAwLCBzaXpl b2Yoc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCkpOw0KLSAgICAgICAgICAg ICAgICAgICAgLyogcHV0X3VzZXIgaXMgcHJvYmFibHkgd3JvbmcuICAqLw0K LSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfZGV2LCAmdGFy Z2V0X3N0LT5zdF9kZXYpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3Vz ZXIoc3Quc3RfaW5vLCAmdGFyZ2V0X3N0LT5zdF9pbm8pOw0KKyAgICAgICAg ICAgICAgICAgICAgLyogdXNlIF9fcHV0X3VzZXIoKSBzaW5jZSB3ZSBqdXN0 IGNoZWNrZWQgdGhhdCB0aGUgYnVmZmVyIGlzIHZhbGlkICAqLw0KKyAgICAg ICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9kZXYsICZ0YXJnZXRf c3QtPnN0X2Rldik7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2Vy KHN0LnN0X2lubywgJnRhcmdldF9zdC0+c3RfaW5vKTsNCiAjaWZkZWYgVEFS R0VUX1NUQVQ2NF9IQVNfQlJPS0VOX1NUX0lOTw0KLSAgICAgICAgICAgICAg ICAgICAgcHV0X3VzZXIoc3Quc3RfaW5vLCAmdGFyZ2V0X3N0LT5fX3N0X2lu byk7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2lu bywgJnRhcmdldF9zdC0+X19zdF9pbm8pOw0KICNlbmRpZg0KLSAgICAgICAg ICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfbW9kZSwgJnRhcmdldF9zdC0+ c3RfbW9kZSk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5z dF9ubGluaywgJnRhcmdldF9zdC0+c3RfbmxpbmspOw0KLSAgICAgICAgICAg ICAgICAgICAgcHV0X3VzZXIoc3Quc3RfdWlkLCAmdGFyZ2V0X3N0LT5zdF91 aWQpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfZ2lk LCAmdGFyZ2V0X3N0LT5zdF9naWQpOw0KLSAgICAgICAgICAgICAgICAgICAg cHV0X3VzZXIoc3Quc3RfcmRldiwgJnRhcmdldF9zdC0+c3RfcmRldik7DQor ICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X21vZGUsICZ0 YXJnZXRfc3QtPnN0X21vZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgX19w dXRfdXNlcihzdC5zdF9ubGluaywgJnRhcmdldF9zdC0+c3RfbmxpbmspOw0K KyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF91aWQsICZ0 YXJnZXRfc3QtPnN0X3VpZCk7DQorICAgICAgICAgICAgICAgICAgICBfX3B1 dF91c2VyKHN0LnN0X2dpZCwgJnRhcmdldF9zdC0+c3RfZ2lkKTsNCisgICAg ICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfcmRldiwgJnRhcmdl dF9zdC0+c3RfcmRldik7DQogICAgICAgICAgICAgICAgICAgICAvKiBYWFg6 IGJldHRlciB1c2Ugb2Yga2VybmVsIHN0cnVjdCAqLw0KLSAgICAgICAgICAg ICAgICAgICAgcHV0X3VzZXIoc3Quc3Rfc2l6ZSwgJnRhcmdldF9zdC0+c3Rf c2l6ZSk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9i bGtzaXplLCAmdGFyZ2V0X3N0LT5zdF9ibGtzaXplKTsNCi0gICAgICAgICAg ICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2Jsb2NrcywgJnRhcmdldF9zdC0+ c3RfYmxvY2tzKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0 LnN0X2F0aW1lLCAmdGFyZ2V0X3N0LT50YXJnZXRfc3RfYXRpbWUpOw0KLSAg ICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfbXRpbWUsICZ0YXJn ZXRfc3QtPnRhcmdldF9zdF9tdGltZSk7DQotICAgICAgICAgICAgICAgICAg ICBwdXRfdXNlcihzdC5zdF9jdGltZSwgJnRhcmdldF9zdC0+dGFyZ2V0X3N0 X2N0aW1lKTsNCi0gICAgICAgICAgICAgICAgICAgIHVubG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDApOw0KKyAgICAgICAgICAgICAgICAg ICAgX19wdXRfdXNlcihzdC5zdF9zaXplLCAmdGFyZ2V0X3N0LT5zdF9zaXpl KTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfYmxr c2l6ZSwgJnRhcmdldF9zdC0+c3RfYmxrc2l6ZSk7DQorICAgICAgICAgICAg ICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2Jsb2NrcywgJnRhcmdldF9zdC0+ c3RfYmxvY2tzKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIo c3Quc3RfYXRpbWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9hdGltZSk7DQor ICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X210aW1lLCAm dGFyZ2V0X3N0LT50YXJnZXRfc3RfbXRpbWUpOw0KKyAgICAgICAgICAgICAg ICAgICAgX19wdXRfdXNlcihzdC5zdF9jdGltZSwgJnRhcmdldF9zdC0+dGFy Z2V0X3N0X2N0aW1lKTsNCiAgICAgICAgICAgICAgICAgfSBlbHNlDQogI2Vu ZGlmDQogICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAg IHN0cnVjdCB0YXJnZXRfc3RhdDY0ICp0YXJnZXRfc3Q7DQotICAgICAgICAg ICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdCwgYXJnMiwg MSk7DQorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3N0YXQ2 NCAqdGFyZ2V0X3N0ID0gKHN0cnVjdCB0YXJnZXRfc3RhdDY0ICopYXJnMjsN CisJCSAgICBpZiggIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsdGFyZ2V0X3N0 LHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCkpICkgcmV0dXJuIC1FRkFV TFQ7DQogICAgICAgICAgICAgICAgICAgICBtZW1zZXQodGFyZ2V0X3N0LCAw LCBzaXplb2Yoc3RydWN0IHRhcmdldF9zdGF0NjQpKTsNCi0gICAgICAgICAg ICAgICAgICAgIC8qID8/PyBwdXRfdXNlciBpcyBwcm9iYWJseSB3cm9uZy4g ICovDQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9kZXYs ICZ0YXJnZXRfc3QtPnN0X2Rldik7DQotICAgICAgICAgICAgICAgICAgICBw dXRfdXNlcihzdC5zdF9pbm8sICZ0YXJnZXRfc3QtPnN0X2lubyk7DQorICAg ICAgICAgICAgICAgICAgICAvKiB1c2UgX19wdXRfdXNlcigpIHNpbmNlIHdl IGp1c3QgY2hlY2tlZCB0aGF0IHRoZSBidWZmZXIgaXMgdmFsaWQgICovDQor ICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2RldiwgJnRh cmdldF9zdC0+c3RfZGV2KTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0 X3VzZXIoc3Quc3RfaW5vLCAmdGFyZ2V0X3N0LT5zdF9pbm8pOw0KICNpZmRl ZiBUQVJHRVRfU1RBVDY0X0hBU19CUk9LRU5fU1RfSU5PDQotICAgICAgICAg ICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9pbm8sICZ0YXJnZXRfc3QtPl9f c3RfaW5vKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Qu c3RfaW5vLCAmdGFyZ2V0X3N0LT5fX3N0X2lubyk7DQogI2VuZGlmDQotICAg ICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9tb2RlLCAmdGFyZ2V0 X3N0LT5zdF9tb2RlKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2Vy KHN0LnN0X25saW5rLCAmdGFyZ2V0X3N0LT5zdF9ubGluayk7DQotICAgICAg ICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF91aWQsICZ0YXJnZXRfc3Qt PnN0X3VpZCk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5z dF9naWQsICZ0YXJnZXRfc3QtPnN0X2dpZCk7DQotICAgICAgICAgICAgICAg ICAgICBwdXRfdXNlcihzdC5zdF9yZGV2LCAmdGFyZ2V0X3N0LT5zdF9yZGV2 KTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfbW9k ZSwgJnRhcmdldF9zdC0+c3RfbW9kZSk7DQorICAgICAgICAgICAgICAgICAg ICBfX3B1dF91c2VyKHN0LnN0X25saW5rLCAmdGFyZ2V0X3N0LT5zdF9ubGlu ayk7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X3Vp ZCwgJnRhcmdldF9zdC0+c3RfdWlkKTsNCisgICAgICAgICAgICAgICAgICAg IF9fcHV0X3VzZXIoc3Quc3RfZ2lkLCAmdGFyZ2V0X3N0LT5zdF9naWQpOw0K KyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9yZGV2LCAm dGFyZ2V0X3N0LT5zdF9yZGV2KTsNCiAgICAgICAgICAgICAgICAgICAgIC8q IFhYWDogYmV0dGVyIHVzZSBvZiBrZXJuZWwgc3RydWN0ICovDQotICAgICAg ICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9zaXplLCAmdGFyZ2V0X3N0 LT5zdF9zaXplKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0 LnN0X2Jsa3NpemUsICZ0YXJnZXRfc3QtPnN0X2Jsa3NpemUpOw0KLSAgICAg ICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfYmxvY2tzLCAmdGFyZ2V0 X3N0LT5zdF9ibG9ja3MpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3Vz ZXIoc3Quc3RfYXRpbWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9hdGltZSk7 DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9tdGltZSwg JnRhcmdldF9zdC0+dGFyZ2V0X3N0X210aW1lKTsNCi0gICAgICAgICAgICAg ICAgICAgIHB1dF91c2VyKHN0LnN0X2N0aW1lLCAmdGFyZ2V0X3N0LT50YXJn ZXRfc3RfY3RpbWUpOw0KLSAgICAgICAgICAgICAgICAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdCwgYXJnMiwgMCk7DQorICAgICAgICAgICAg ICAgICAgICBfX3B1dF91c2VyKHN0LnN0X3NpemUsICZ0YXJnZXRfc3QtPnN0 X3NpemUpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5z dF9ibGtzaXplLCAmdGFyZ2V0X3N0LT5zdF9ibGtzaXplKTsNCisgICAgICAg ICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfYmxvY2tzLCAmdGFyZ2V0 X3N0LT5zdF9ibG9ja3MpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRf dXNlcihzdC5zdF9hdGltZSwgJnRhcmdldF9zdC0+dGFyZ2V0X3N0X2F0aW1l KTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfbXRp bWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9tdGltZSk7DQorICAgICAgICAg ICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2N0aW1lLCAmdGFyZ2V0X3N0 LT50YXJnZXRfc3RfY3RpbWUpOw0KICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgfQ0KICAgICAgICAgfQ0KQEAgLTQ1ODMsNyArNDYyNCw3IEBA DQogICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7DQogICAgICAgICByZXQg PSBnZXRfZXJybm8oY2xvY2tfZ2V0dGltZShhcmcxLCAmdHMpKTsNCiAgICAg ICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAgICAgIGhvc3Rf dG9fdGFyZ2V0X3RpbWVzcGVjKGFyZzIsICZ0cyk7DQorICAgICAgICAgICAg aWYoIChyZXQ9aG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnRzKSkg IT0gMCApIHJldHVybiByZXQ7DQogICAgICAgICB9DQogICAgICAgICBicmVh azsNCiAgICAgfQ0KQEAgLTQ1OTQsNyArNDYzNSw3IEBADQogICAgICAgICBz dHJ1Y3QgdGltZXNwZWMgdHM7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8o Y2xvY2tfZ2V0cmVzKGFyZzEsICZ0cykpOw0KICAgICAgICAgaWYgKCFpc19l cnJvcihyZXQpKSB7DQotICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGlt ZXNwZWMoYXJnMiwgJnRzKTsNCisgICAgICAgICAgICBpZiggKHJldD1ob3N0 X3RvX3RhcmdldF90aW1lc3BlYyhhcmcyLCAmdHMpKSAhPSAwICkgcmV0dXJu IHJldDsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KICAgICB9DQpJ bmRleDogcWVtdS9saW51eC11c2VyL3FlbXUuaA0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3FlbXUuaAkyMDA3 LTA3LTA5IDEzOjE4OjU2LjAwMDAwMDAwMCAtMDQwMA0KKysrIHFlbXUvbGlu dXgtdXNlci9xZW11LmgJMjAwNy0wNy0wOSAyMToyNjoyMi4wMDAwMDAwMDAg LTA0MDANCkBAIC0xNzEsNyArMTcxLDggQEANCiAjZGVmaW5lIFZFUklGWV9S RUFEIDANCiAjZGVmaW5lIFZFUklGWV9XUklURSAxDQogDQotI2RlZmluZSBh Y2Nlc3Nfb2sodHlwZSxhZGRyLHNpemUpICgxKQ0KKyNkZWZpbmUgYWNjZXNz X29rKHR5cGUsYWRkcixzaXplKSBcDQorICAgIChwYWdlX2NoZWNrX3Jhbmdl KCh0YXJnZXRfdWxvbmcpYWRkcixzaXplLCh0eXBlPT1WRVJJRllfUkVBRCk/ UEFHRV9SRUFEOlBBR0VfV1JJVEUpPT0wKQ0KIA0KIC8qIE5PVEUgZ2V0X3Vz ZXIgYW5kIHB1dF91c2VyIHVzZSBob3N0IGFkZHJlc3Nlcy4gICovDQogI2Rl ZmluZSBfX3B1dF91c2VyKHgscHRyKVwNCkBAIC0yMTgsMTMgKzIxOSwxNCBA QA0KICAgICAwO1wNCiB9KQ0KIA0KKy8qIFRoZSBhYm9ydCgpIGlzIGp1c3Qg Zm9yIGRlYnVnZ2luZy4gVGFrZSBpdCBvdXQgYWZ0ZXIgYSB3aGlsZSAqLw0K ICNkZWZpbmUgcHV0X3VzZXIoeCxwdHIpXA0KICh7XA0KICAgICBpbnQgX19y ZXQ7XA0KICAgICBpZiAoYWNjZXNzX29rKFZFUklGWV9XUklURSwgcHRyLCBz aXplb2YoKnB0cikpKVwNCiAgICAgICAgIF9fcmV0ID0gX19wdXRfdXNlcih4 LCBwdHIpO1wNCiAgICAgZWxzZVwNCi0gICAgICAgIF9fcmV0ID0gLUVGQVVM VDtcDQorICAgICAgICB7X19yZXQgPSAtRUZBVUxUO2Fib3J0KCk7fVwNCiAg ICAgX19yZXQ7XA0KIH0pDQogDQpAQCAtMjM0LDEwICsyMzYsMTYgQEANCiAg ICAgaWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgcHRyLCBzaXplb2YoKnB0 cikpKVwNCiAgICAgICAgIF9fcmV0ID0gX19nZXRfdXNlcih4LCBwdHIpO1wN CiAgICAgZWxzZVwNCi0gICAgICAgIF9fcmV0ID0gLUVGQVVMVDtcDQorICAg ICAgICB7X19yZXQgPSAtRUZBVUxUO2Fib3J0KCk7fVwNCiAgICAgX19yZXQ7 XA0KIH0pDQogDQorI2RlZmluZSBjb3B5X2Zyb21fdXNlcihocHB0ciwgZ3B0 ciwgbGVuKSBcDQorKHsgXA0KKyAgICAqKGhwcHRyKSA9IGcyaChncHRyKTsg XA0KKyAgICBhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGdwdHIsIGxlbik7XA0K K30pDQorDQogLyogRnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgZ3Vlc3QgbWVt b3J5LiAgVGhlIHRnZXQgYW5kIHRwdXQgZnVuY3Rpb25zDQogICAgcmVhZC93 cml0ZSBzaW5nbGUgdmFsdWVzLCBieXRlc3dhcHBpbmcgYXMgbmVjY2Vzc2Fy eS4gIFRoZSBsb2NrX3VzZXINCiAgICBnZXRzIGEgcG9pbnRlciB0byBhIGNv bnRpZ3VvdXMgYXJlYSBvZiBndWVzdCBtZW1vcnksIGJ1dCBkb2VzIG5vdCBw ZXJmb3JtDQpAQCAtMjk1LDYgKzMwMywxNSBAQA0KICNkZWZpbmUgdW5sb2Nr X3VzZXJfc3RydWN0KGhvc3RfcHRyLCBndWVzdF9hZGRyLCBjb3B5KSBcDQog ICAgIHVubG9ja191c2VyKGhvc3RfcHRyLCBndWVzdF9hZGRyLCAoY29weSkg PyBzaXplb2YoKmhvc3RfcHRyKSA6IDApDQogDQorc3RhdGljIGlubGluZSBs b25nIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KHZvaWQgKmhvc3RfYWRk ciwgdGFyZ2V0X3Vsb25nIGd1ZXN0X2FkZHIsIGxvbmcgbGVuLCBpbnQgY29w eSwgaW50IHBnX2FjY2VzcykNCit7DQorICAgIGxvbmcgKmhhZGRyLCByZXQg PSAwOw0KKyAgICBoYWRkciA9IChsb25nICopaG9zdF9hZGRyOw0KKyAgICBp ZiggKHJldD1wYWdlX2NoZWNrX3JhbmdlKGd1ZXN0X2FkZHIsbGVuLHBnX2Fj Y2VzcykpICE9IDAgKSByZXR1cm4gcmV0Ow0KKyAgICAqaGFkZHIgPSAobG9u Zylsb2NrX3VzZXIoZ3Vlc3RfYWRkciwgbGVuLCBjb3B5KTsNCisgICAgcmV0 dXJuIDA7DQorfQ0KKw0KICNkZWZpbmUgdGdldDgoYWRkcikgbGR1YihhZGRy KQ0KICNkZWZpbmUgdHB1dDgoYWRkciwgdmFsKSBzdGIoYWRkciwgdmFsKQ0K ICNkZWZpbmUgdGdldDE2KGFkZHIpIGxkdXcoYWRkcikNCg== ---1463811327-740702015-1184034158=:12799--