From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Hv0kI-00081e-Rt for qemu-devel@nongnu.org; Sun, 03 Jun 2007 20:48:30 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Hv0kF-00081J-3U for qemu-devel@nongnu.org; Sun, 03 Jun 2007 20:48:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hv0kE-000814-UN for qemu-devel@nongnu.org; Sun, 03 Jun 2007 20:48:26 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Hv0kD-0003a0-EF for qemu-devel@nongnu.org; Sun, 03 Jun 2007 20:48:26 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1Hv0kC-0000xj-00 for ; Sun, 03 Jun 2007 20:48:24 -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 bx6kh+wghCoV for ; Sun, 3 Jun 2007 20:48:09 -0400 (EDT) Received: from [71.31.89.73] (helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1Hv0jv-0000xb-00 for ; Sun, 03 Jun 2007 20:48:07 -0400 Date: Sun, 3 Jun 2007 20:47:45 -0400 (EDT) From: Stuart Anderson Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-1889484900-1180918065=:21792" Subject: [Qemu-devel] [PATCH] EFAULT implmentation in linux-user 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-1889484900-1180918065=:21792 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed The attached patch implements EFAULT detection in linux-user. It is suprising how much software "relies" on the kernel returning EFAULT instead of just crashing. This patch can be broken down into 3 parts: exec.c: Add page_check_range(), which uses the page map of the target to determine wether an address and range are valid.EFAULT is returned when an invalid address is detected. linux-user/qemu.h: Add lock_and_check_user_struct(), wich is similar to lock_user_struct(), but adds a call to page_check_range() to detect bad addresses. Once all occurrances of lock_user_struct() have been converted over to this new function, the new function could be renamed back to lock_user_struct() to shorten it slightly. linux-user/syscall.s: This is where lock_and_check_user_struct() is used. It is used to perform the mapping from target to host addresses. Generally, calls to lock_user_struct() have been replaced with calls to lock_and_check_user_struct(). For example - lock_user_struct(target_tv, target_addr, 0); + if( (ret=lock_and_check_user_struct(&target_tv,target_addr, sizeof(*target_tv),0,PAGE_WRITE)) != 0 ) return -ret; These changes permit many of the tests in LTP for error conditions to now pass. 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-1889484900-1180918065=:21792 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 LS0gcWVtdS5vcmlnL2V4ZWMuYwkyMDA3LTA2LTAzIDIwOjM2OjA3LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvZXhlYy5jCTIwMDctMDYtMDMgMjA6MzY6 MjcuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTg0Niw2ICsxODQ2LDI5IEBADQog ICAgIHNwaW5fdW5sb2NrKCZ0Yl9sb2NrKTsNCiB9DQogDQoraW50IHBhZ2Vf Y2hlY2tfcmFuZ2UodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcg bGVuLCBpbnQgZmxhZ3MpDQorew0KKyAgICBQYWdlRGVzYyAqcDsNCisgICAg dGFyZ2V0X3Vsb25nIGVuZDsNCisgICAgdGFyZ2V0X3Vsb25nIGFkZHI7DQor DQorICAgIGVuZCA9IFRBUkdFVF9QQUdFX0FMSUdOKHN0YXJ0K2xlbik7IC8q IG11c3QgZG8gYmVmb3JlIHdlIGxvb3NlIGJpdHMgaW4gdGhlIG5leHQgc3Rl cCAqLw0KKyAgICBzdGFydCA9IHN0YXJ0ICYgVEFSR0VUX1BBR0VfTUFTSzsN CisNCisgICAgaWYoIGVuZCA8IHN0YXJ0ICkgcmV0dXJuIEVGQVVMVDsgIC8q IHdlJ3ZlIHdyYXBwZWQgYXJvdW5kICovDQorICAgIGZvcihhZGRyID0gc3Rh cnQ7IGFkZHIgPCBlbmQ7IGFkZHIgKz0gVEFSR0VUX1BBR0VfU0laRSkgew0K KyAgICAgICAgcCA9IHBhZ2VfZmluZChhZGRyID4+IFRBUkdFVF9QQUdFX0JJ VFMpOw0KKwlpZiggIXAgKSByZXR1cm4gRUZBVUxUOw0KKwlpZiggIShwLT5m bGFncyAmIFBBR0VfVkFMSUQpICkgcmV0dXJuIEVGQVVMVDsNCisNCisgICAg ICAgIGlmICghKHAtPmZsYWdzICYgUEFHRV9SRUFEKSAmJg0KKyAgICAgICAg ICAgIChmbGFncyAmIFBBR0VfUkVBRCkgKSByZXR1cm4gRUZBVUxUOw0KKyAg ICAgICAgaWYgKCEocC0+ZmxhZ3MgJiBQQUdFX1dSSVRFKSAmJg0KKyAgICAg ICAgICAgIChmbGFncyAmIFBBR0VfV1JJVEUpICkgcmV0dXJuIEVGQVVMVDsN CisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorDQogLyogY2FsbGVkIGZy b20gc2lnbmFsIGhhbmRsZXI6IGludmFsaWRhdGUgdGhlIGNvZGUgYW5kIHVu cHJvdGVjdCB0aGUNCiAgICBwYWdlLiBSZXR1cm4gVFJVRSBpZiB0aGUgZmF1 bHQgd2FzIHN1Y2Nlc2Z1bGx5IGhhbmRsZWQuICovDQogaW50IHBhZ2VfdW5w cm90ZWN0KHRhcmdldF91bG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHBj LCB2b2lkICpwdWMpDQpJbmRleDogcWVtdS9jcHUtYWxsLmgNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCi0tLSBxZW11Lm9yaWcvY3B1LWFsbC5oCTIwMDct MDYtMDMgMjA6MzY6MDcuMDAwMDAwMDAwIC0wNDAwDQorKysgcWVtdS9jcHUt YWxsLmgJMjAwNy0wNi0wMyAyMDozNjoyNy4wMDAwMDAwMDAgLTA0MDANCkBA IC02OTEsNiArNjkxLDcgQEANCiBpbnQgcGFnZV9nZXRfZmxhZ3ModGFyZ2V0 X3Vsb25nIGFkZHJlc3MpOw0KIHZvaWQgcGFnZV9zZXRfZmxhZ3ModGFyZ2V0 X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgZW5kLCBpbnQgZmxhZ3MpOw0K IHZvaWQgcGFnZV91bnByb3RlY3RfcmFuZ2UodGFyZ2V0X3Vsb25nIGRhdGEs IHRhcmdldF91bG9uZyBkYXRhX3NpemUpOw0KK2ludCBwYWdlX2NoZWNrX3Jh bmdlKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50 IGZsYWdzKTsNCiANCiAjZGVmaW5lIFNJTkdMRV9DUFVfREVGSU5FUw0KICNp ZmRlZiBTSU5HTEVfQ1BVX0RFRklORVMNCkluZGV4OiBxZW11L2xpbnV4LXVz ZXIvc3lzY2FsbC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gcWVt dS5vcmlnL2xpbnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDYtMDMgMjA6MzY6 MDcuMDAwMDAwMDAwIC0wNDAwDQorKysgcWVtdS9saW51eC11c2VyL3N5c2Nh bGwuYwkyMDA3LTA2LTAzIDIwOjM3OjM2LjAwMDAwMDAwMCAtMDQwMA0KQEAg LTQwMiwxMiArNDAyLDEzIEBADQogI2VuZGlmDQogfQ0KIA0KLXN0YXRpYyBp bmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9ydXNhZ2UodGFyZ2V0X3Vsb25n IHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBob3N0X3RvX3Rh cmdldF9ydXNhZ2UodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHJ1c2FnZSAqcnVzYWdlKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0K ICAgICBzdHJ1Y3QgdGFyZ2V0X3J1c2FnZSAqdGFyZ2V0X3J1c2FnZTsNCiAN Ci0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfcnVzYWdlLCB0YXJnZXRf YWRkciwgMCk7DQorICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJf c3RydWN0KCZ0YXJnZXRfcnVzYWdlLHRhcmdldF9hZGRyLHNpemVvZigqdGFy Z2V0X3J1c2FnZSksMCxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0 Ow0KICAgICB0YXJnZXRfcnVzYWdlLT5ydV91dGltZS50dl9zZWMgPSB0c3dh cGwocnVzYWdlLT5ydV91dGltZS50dl9zZWMpOw0KICAgICB0YXJnZXRfcnVz YWdlLT5ydV91dGltZS50dl91c2VjID0gdHN3YXBsKHJ1c2FnZS0+cnVfdXRp bWUudHZfdXNlYyk7DQogICAgIHRhcmdldF9ydXNhZ2UtPnJ1X3N0aW1lLnR2 X3NlYyA9IHRzd2FwbChydXNhZ2UtPnJ1X3N0aW1lLnR2X3NlYyk7DQpAQCAt NDI5LDIzICs0MzAsMjUgQEANCiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRh cmdldF9ydXNhZ2UsIHRhcmdldF9hZGRyLCAxKTsNCiB9DQogDQotc3RhdGlj IGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3RpbWV2YWwoc3RydWN0IHRp bWV2YWwgKnR2LA0KK3N0YXRpYyBpbmxpbmUgbG9uZyB0YXJnZXRfdG9faG9z dF90aW1ldmFsKHN0cnVjdCB0aW1ldmFsICp0diwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFy Z2V0X2FkZHIpDQogew0KKyAgICBsb25nIHJldCA9IDA7DQogICAgIHN0cnVj dCB0YXJnZXRfdGltZXZhbCAqdGFyZ2V0X3R2Ow0KIA0KLSAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF90diwgdGFyZ2V0X2FkZHIsIDEpOw0KKyAgICBp ZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3R2 LHRhcmdldF9hZGRyLHNpemVvZigqdGFyZ2V0X3R2KSwxLFBBR0VfUkVBRCkp ICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgdHYtPnR2X3NlYyA9IHRzd2Fw bCh0YXJnZXRfdHYtPnR2X3NlYyk7DQogICAgIHR2LT50dl91c2VjID0gdHN3 YXBsKHRhcmdldF90di0+dHZfdXNlYyk7DQogICAgIHVubG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfdHYsIHRhcmdldF9hZGRyLCAwKTsNCiB9DQogDQotc3Rh dGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwodGFyZ2V0 X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBob3N0 X3RvX3RhcmdldF90aW1ldmFsKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgdGltZXZhbCAqdHYpDQogew0KKyAgICBsb25nIHJldCA9 IDA7DQogICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFyZ2V0X3R2Ow0K IA0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF90diwgdGFyZ2V0X2Fk ZHIsIDApOw0KKyAgICBpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmdGFyZ2V0X3R2LHRhcmdldF9hZGRyLHNpemVvZigqdGFyZ2V0X3R2 KSwwLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIHRh cmdldF90di0+dHZfc2VjID0gdHN3YXBsKHR2LT50dl9zZWMpOw0KICAgICB0 YXJnZXRfdHYtPnR2X3VzZWMgPSB0c3dhcGwodHYtPnR2X3VzZWMpOw0KICAg ICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3R2LCB0YXJnZXRfYWRkciwg MSk7DQpAQCAtNDY0LDIxICs0NjcsMjEgQEANCiAgICAgaW50IG9rOw0KIA0K ICAgICBpZiAocmZkX3ApIHsNCi0gICAgICAgIHRhcmdldF9yZmRzID0gbG9j a191c2VyKHJmZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcpICogbiwgMSk7DQor CWlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRf cmZkcyxyZmRfcCxzaXplb2YodGFyZ2V0X2xvbmcpKm4sMSxQQUdFX1JFQUQp KSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICByZmRzX3B0ciA9IHRh cmdldF90b19ob3N0X2ZkcygmcmZkcywgdGFyZ2V0X3JmZHMsIG4pOw0KICAg ICB9IGVsc2Ugew0KICAgICAgICAgdGFyZ2V0X3JmZHMgPSBOVUxMOw0KICAg ICAgICAgcmZkc19wdHIgPSBOVUxMOw0KICAgICB9DQogICAgIGlmICh3ZmRf cCkgew0KLSAgICAgICAgdGFyZ2V0X3dmZHMgPSBsb2NrX3VzZXIod2ZkX3As IHNpemVvZih0YXJnZXRfbG9uZykgKiBuLCAxKTsNCisJaWYoIChyZXQ9bG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF93ZmRzLHdmZF9wLHNp emVvZih0YXJnZXRfbG9uZykqbiwxLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1 cm4gLXJldDsNCiAgICAgICAgIHdmZHNfcHRyID0gdGFyZ2V0X3RvX2hvc3Rf ZmRzKCZ3ZmRzLCB0YXJnZXRfd2Zkcywgbik7DQogICAgIH0gZWxzZSB7DQog ICAgICAgICB0YXJnZXRfd2ZkcyA9IE5VTEw7DQogICAgICAgICB3ZmRzX3B0 ciA9IE5VTEw7DQogICAgIH0NCiAgICAgaWYgKGVmZF9wKSB7DQotICAgICAg ICB0YXJnZXRfZWZkcyA9IGxvY2tfdXNlcihlZmRfcCwgc2l6ZW9mKHRhcmdl dF9sb25nKSAqIG4sIDEpOw0KKwlpZiggKHJldD1sb2NrX2FuZF9jaGVja191 c2VyX3N0cnVjdCgmdGFyZ2V0X2VmZHMsZWZkX3Asc2l6ZW9mKHRhcmdldF9s b25nKSpuLDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICAgICAgZWZkc19wdHIgPSB0YXJnZXRfdG9faG9zdF9mZHMoJmVmZHMsIHRh cmdldF9lZmRzLCBuKTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHRhcmdl dF9lZmRzID0gTlVMTDsNCkBAIC00ODYsNyArNDg5LDcgQEANCiAgICAgfQ0K ICAgICAgICAgICAgIA0KICAgICBpZiAodGFyZ2V0X3R2KSB7DQotICAgICAg ICB0YXJnZXRfdG9faG9zdF90aW1ldmFsKCZ0diwgdGFyZ2V0X3R2KTsNCisg ICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3RpbWV2YWwoJnR2LCB0 YXJnZXRfdHYpKSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgICAgIHR2X3B0 ciA9ICZ0djsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHR2X3B0ciA9IE5V TEw7DQpAQCAtNTAwLDcgKzUwMyw3IEBADQogICAgICAgICBob3N0X3RvX3Rh cmdldF9mZHModGFyZ2V0X2VmZHMsIGVmZHNfcHRyLCBuKTsNCiANCiAgICAg ICAgIGlmICh0YXJnZXRfdHYpIHsNCi0gICAgICAgICAgICBob3N0X3RvX3Rh cmdldF90aW1ldmFsKHRhcmdldF90diwgJnR2KTsNCisgICAgICAgICAgICBp ZiggKHJldD1ob3N0X3RvX3RhcmdldF90aW1ldmFsKHRhcmdldF90diwgJnR2 KSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAgICB9DQogICAgIH0NCiAg ICAgaWYgKHRhcmdldF9yZmRzKQ0KQEAgLTUxMywyOCArNTE2LDM0IEBADQog ICAgIHJldHVybiByZXQ7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCB0 YXJnZXRfdG9faG9zdF9zb2NrYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs DQorc3RhdGljIGlubGluZSBsb25nIHRhcmdldF90b19ob3N0X3NvY2thZGRy KHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzb2NrbGVuX3QgbGVuKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgbGVuLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNj ZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFy Z2V0X3NvY2thZGRyICp0YXJnZXRfc2FkZHI7DQogDQotICAgIHRhcmdldF9z YWRkciA9IGxvY2tfdXNlcih0YXJnZXRfYWRkciwgbGVuLCAxKTsNCisgICAg aWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9z YWRkcix0YXJnZXRfYWRkcixsZW4sMSxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0 dXJuIC1yZXQ7DQogICAgIG1lbWNweShhZGRyLCB0YXJnZXRfc2FkZHIsIGxl bik7DQogICAgIGFkZHItPnNhX2ZhbWlseSA9IHRzd2FwMTYodGFyZ2V0X3Nh ZGRyLT5zYV9mYW1pbHkpOw0KICAgICB1bmxvY2tfdXNlcih0YXJnZXRfc2Fk ZHIsIHRhcmdldF9hZGRyLCAwKTsNCisgICAgcmV0dXJuIHJldDsNCiB9DQog DQotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRy KHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCitzdGF0aWMgaW5saW5lIGxv bmcgaG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4p DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNvY2tsZW5fdCBsZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBwZ19hY2Nlc3MpDQogew0KKyAgICBsb25n IHJldCA9IDA7DQogICAgIHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKnRhcmdl dF9zYWRkcjsNCiANCi0gICAgdGFyZ2V0X3NhZGRyID0gbG9ja191c2VyKHRh cmdldF9hZGRyLCBsZW4sIDApOw0KKyAgICBpZiggKHJldD1sb2NrX2FuZF9j aGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3NhZGRyLHRhcmdldF9hZGRyLGxl biwxLHBnX2FjY2VzcykpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgbWVt Y3B5KHRhcmdldF9zYWRkciwgYWRkciwgbGVuKTsNCiAgICAgdGFyZ2V0X3Nh ZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KGFkZHItPnNhX2ZhbWlseSk7DQog ICAgIHVubG9ja191c2VyKHRhcmdldF9zYWRkciwgdGFyZ2V0X2FkZHIsIGxl bik7DQorICAgIHJldHVybiByZXQ7DQogfQ0KIA0KIC8qID8/PyBTaG91bGQg dGhpcyBhbHNvIHN3YXAgbXNnaC0+bmFtZT8gICovDQpAQCAtODk1LDE4ICs5 MDQsMjAgQEANCiBzdGF0aWMgbG9uZyBkb19iaW5kKGludCBzb2NrZmQsIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAgICAgICAgICAgICAgICAg IHNvY2tsZW5fdCBhZGRybGVuKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0K ICAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KICAgICANCi0g ICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIs IGFkZHJsZW4pOw0KKyAgICBpZiggKHJldD10YXJnZXRfdG9faG9zdF9zb2Nr YWRkcihhZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxlbixQQUdFX1JFQUQpKSAh PSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIHJldHVybiBnZXRfZXJybm8oYmlu ZChzb2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsNCiB9DQogDQogc3RhdGljIGxv bmcgZG9fY29ubmVjdChpbnQgc29ja2ZkLCB0YXJnZXRfdWxvbmcgdGFyZ2V0 X2FkZHIsDQogICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgYWRkcmxl bikNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgdm9pZCAqYWRkciA9 IGFsbG9jYShhZGRybGVuKTsNCiAgICAgDQotICAgIHRhcmdldF90b19ob3N0 X3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKTsNCisgICAg aWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0 X2FkZHIsIGFkZHJsZW4sUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0 Ow0KICAgICByZXR1cm4gZ2V0X2Vycm5vKGNvbm5lY3Qoc29ja2ZkLCBhZGRy LCBhZGRybGVuKSk7DQogfQ0KIA0KQEAgLTkyMCwxMiArOTMxLDIzIEBADQog ICAgIHN0cnVjdCBpb3ZlYyAqdmVjOw0KICAgICB0YXJnZXRfdWxvbmcgdGFy Z2V0X3ZlYzsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdChtc2dwLCB0YXJn ZXRfbXNnLCAxKTsNCisgICAgaWYoIHNlbmQgKSB7DQorICAgICAgIGlmKCAo cmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZtc2dwLHRhcmdldF9t c2csc2l6ZW9mKCptc2dwKSwxLA0KKwkJUEFHRV9SRUFEKSkgIT0gMCAgKSBy ZXR1cm4gLXJldDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJm1zZ3AsdGFyZ2V0X21zZyxz aXplb2YoKm1zZ3ApLDEsDQorCQlQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVy biAtcmV0Ow0KKyAgICB9DQogICAgIGlmIChtc2dwLT5tc2dfbmFtZSkgew0K ICAgICAgICAgbXNnLm1zZ19uYW1lbGVuID0gdHN3YXAzMihtc2dwLT5tc2df bmFtZWxlbik7DQogICAgICAgICBtc2cubXNnX25hbWUgPSBhbGxvY2EobXNn Lm1zZ19uYW1lbGVuKTsNCi0gICAgICAgIHRhcmdldF90b19ob3N0X3NvY2th ZGRyKG1zZy5tc2dfbmFtZSwgdHN3YXBsKG1zZ3AtPm1zZ19uYW1lKSwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5tc2dfbmFtZWxl bik7DQorICAgICAgICBpZiggc2VuZCApIHsNCisgICAgICAgICAgaWYoIChy ZXQ9dGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIobXNnLm1zZ19uYW1lLCB0c3dh cGwobXNncC0+bXNnX25hbWUpLA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbXNnLm1zZ19uYW1lbGVuLFBBR0VfUkVBRCkpICE9IDAgKSBy ZXR1cm4gLXJldDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgIGlm KCAocmV0PXRhcmdldF90b19ob3N0X3NvY2thZGRyKG1zZy5tc2dfbmFtZSwg dHN3YXBsKG1zZ3AtPm1zZ19uYW1lKSwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1zZy5tc2dfbmFtZWxlbixQQUdFX1dSSVRFKSkgIT0g MCApIHJldHVybiAtcmV0Ow0KKwl9DQogICAgIH0gZWxzZSB7DQogICAgICAg ICBtc2cubXNnX25hbWUgPSBOVUxMOw0KICAgICAgICAgbXNnLm1zZ19uYW1l bGVuID0gMDsNCkBAIC05NTgsMTEgKzk4MCwxMiBAQA0KIHsNCiAgICAgc29j a2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0KICAg ICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KLSAgICBsb25nIHJl dDsNCisgICAgbG9uZyByZXQscmV0MjsNCiANCiAgICAgcmV0ID0gZ2V0X2Vy cm5vKGFjY2VwdChmZCwgYWRkciwgJmFkZHJsZW4pKTsNCiAgICAgaWYgKCFp c19lcnJvcihyZXQpKSB7DQotICAgICAgICBob3N0X3RvX3RhcmdldF9zb2Nr YWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbik7DQorICAgICAgICBp ZiggKHJldDI9aG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIs IGFkZHIsIGFkZHJsZW4sIFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1y ZXQyOw0KKyAgICAgICAgaWYoIChyZXQyPXBhZ2VfY2hlY2tfcmFuZ2UodGFy Z2V0X2FkZHJsZW4sc2l6ZW9mKHNvY2tsZW5fdCksUEFHRV9XUklURSkpICE9 IDAgKSByZXR1cm4gLXJldDI7DQogICAgICAgICB0cHV0MzIodGFyZ2V0X2Fk ZHJsZW4sIGFkZHJsZW4pOw0KICAgICB9DQogICAgIHJldHVybiByZXQ7DQpA QCAtOTcxLDEzICs5OTQsMTggQEANCiBzdGF0aWMgbG9uZyBkb19nZXRwZWVy bmFtZShpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHJsZW4pDQogew0KLSAgICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0 YXJnZXRfYWRkcmxlbik7DQotICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRk cmxlbik7DQotICAgIGxvbmcgcmV0Ow0KKyAgICBzb2NrbGVuX3QgYWRkcmxl bjsNCisgICAgdm9pZCAqYWRkcjsNCisgICAgbG9uZyByZXQscmV0MjsNCisN CisgICAgaWYoIChyZXQ9cGFnZV9jaGVja19yYW5nZSh0YXJnZXRfYWRkcmxl bixzaXplb2Yoc29ja2xlbl90KSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJu IC1yZXQ7DQorICAgIGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4p Ow0KKyAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KIA0KICAgICByZXQg PSBnZXRfZXJybm8oZ2V0cGVlcm5hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7 DQogICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAgaG9zdF90 b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4p Ow0KKyAgICAgICAgaWYoIChyZXQyPWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRy KHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuLCBQQUdFX1dSSVRFKSkgIT0g MCApIHJldHVybiAtcmV0MjsNCisgICAgICAgIGlmKCAocmV0Mj1wYWdlX2No ZWNrX3JhbmdlKHRhcmdldF9hZGRybGVuLHNpemVvZihzb2NrbGVuX3QpLFBB R0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1yZXQyOw0KICAgICAgICAgdHB1 dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAgICAgfQ0KICAgICBy ZXR1cm4gcmV0Ow0KQEAgLTk4NiwxMyArMTAxNCwxNyBAQA0KIHN0YXRpYyBs b25nIGRvX2dldHNvY2tuYW1lKGludCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91 bG9uZyB0YXJnZXRfYWRkcmxlbikNCiB7DQotICAgIHNvY2tsZW5fdCBhZGRy bGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVuKTsNCi0gICAgdm9pZCAqYWRk ciA9IGFsbG9jYShhZGRybGVuKTsNCi0gICAgbG9uZyByZXQ7DQorICAgIHNv Y2tsZW5fdCBhZGRybGVuOw0KKyAgICB2b2lkICphZGRyOw0KKyAgICBsb25n IHJldCxyZXQyOw0KKw0KKyAgICBpZiggKHJldD1wYWdlX2NoZWNrX3Jhbmdl KHRhcmdldF9hZGRybGVuLHNpemVvZihzb2NrbGVuX3QpLFBBR0VfV1JJVEUp KSAhPSAwICkgcmV0dXJuIC1yZXQ7DQorICAgIGFkZHJsZW4gPSB0Z2V0MzIo dGFyZ2V0X2FkZHJsZW4pOw0KKyAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4p Ow0KIA0KICAgICByZXQgPSBnZXRfZXJybm8oZ2V0c29ja25hbWUoZmQsIGFk ZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0K LSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIs IGFkZHIsIGFkZHJsZW4pOw0KKyAgICAgICAgaWYoIChyZXQyPWhvc3RfdG9f dGFyZ2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuLCBQ QUdFX1dSSVRFKSkgKSByZXR1cm4gLXJldDI7DQogICAgICAgICB0cHV0MzIo dGFyZ2V0X2FkZHJsZW4sIGFkZHJsZW4pOw0KICAgICB9DQogICAgIHJldHVy biByZXQ7DQpAQCAtMTAxOSwxMCArMTA1MSwxMCBAQA0KICAgICB2b2lkICpo b3N0X21zZzsNCiAgICAgbG9uZyByZXQ7DQogDQotICAgIGhvc3RfbXNnID0g bG9ja191c2VyKG1zZywgbGVuLCAxKTsNCisgICAgaWYoIChyZXQ9bG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJmhvc3RfbXNnLG1zZyxsZW4sMSxQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIGlmICh0YXJnZXRf YWRkcikgew0KICAgICAgICAgYWRkciA9IGFsbG9jYShhZGRybGVuKTsNCi0g ICAgICAgIHRhcmdldF90b19ob3N0X3NvY2thZGRyKGFkZHIsIHRhcmdldF9h ZGRyLCBhZGRybGVuKTsNCisgICAgICAgIGlmKCAocmV0PXRhcmdldF90b19o b3N0X3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuLCBQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICByZXQgPSBn ZXRfZXJybm8oc2VuZHRvKGZkLCBob3N0X21zZywgbGVuLCBmbGFncywgYWRk ciwgYWRkcmxlbikpOw0KICAgICB9IGVsc2Ugew0KICAgICAgICAgcmV0ID0g Z2V0X2Vycm5vKHNlbmQoZmQsIGhvc3RfbXNnLCBsZW4sIGZsYWdzKSk7DQpA QCAtMTAzNyw5ICsxMDY5LDkgQEANCiAgICAgc29ja2xlbl90IGFkZHJsZW47 DQogICAgIHZvaWQgKmFkZHI7DQogICAgIHZvaWQgKmhvc3RfbXNnOw0KLSAg ICBsb25nIHJldDsNCisgICAgbG9uZyByZXQscmV0MjsNCiANCi0gICAgaG9z dF9tc2cgPSBsb2NrX3VzZXIobXNnLCBsZW4sIDApOw0KKyAgICBpZiggKHJl dDI9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJmhvc3RfbXNnLG1zZyxs ZW4sMCxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0MjsNCiAgICAg aWYgKHRhcmdldF9hZGRyKSB7DQogICAgICAgICBhZGRybGVuID0gdGdldDMy KHRhcmdldF9hZGRybGVuKTsNCiAgICAgICAgIGFkZHIgPSBhbGxvY2EoYWRk cmxlbik7DQpAQCAtMTA1MCw3ICsxMDgyLDcgQEANCiAgICAgfQ0KICAgICBp ZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgIGlmICh0YXJnZXRfYWRk cikgew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRh cmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAgICAgICBpZigg KHJldDI9aG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFk ZHIsIGFkZHJsZW4sIFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1yZXQy Ow0KICAgICAgICAgICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxl bik7DQogICAgICAgICB9DQogICAgICAgICB1bmxvY2tfdXNlcihob3N0X21z ZywgbXNnLCBsZW4pOw0KQEAgLTEyNTcsMTMgKzEyODksMTUgQEANCiAgIHRh cmdldF91bG9uZyBfX3VudXNlZDQ7DQogfTsNCiANCi1zdGF0aWMgaW5saW5l IHZvaWQgdGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oc3RydWN0IGlwY19wZXJt ICpob3N0X2lwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQorc3RhdGlj IGlubGluZSBsb25nIHRhcmdldF90b19ob3N0X2lwY19wZXJtKHN0cnVjdCBp cGNfcGVybSAqaG9zdF9pcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgcGdfYWNjZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBz dHJ1Y3QgdGFyZ2V0X2lwY19wZXJtICp0YXJnZXRfaXA7DQogICAgIHN0cnVj dCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsNCiANCi0gICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAxKTsNCisgICAg aWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9z ZCx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9zZCksMSxwZ19hY2Nlc3Mp KSApIHJldHVybiAtcmV0Ow0KICAgICB0YXJnZXRfaXA9Jih0YXJnZXRfc2Qt PnNlbV9wZXJtKTsNCiAgICAgaG9zdF9pcC0+X19rZXkgPSB0c3dhcGwodGFy Z2V0X2lwLT5fX2tleSk7DQogICAgIGhvc3RfaXAtPnVpZCA9IHRzd2FwbCh0 YXJnZXRfaXAtPnVpZCk7DQpAQCAtMTI3MiwxNSArMTMwNiwxOSBAQA0KICAg ICBob3N0X2lwLT5jZ2lkID0gdHN3YXBsKHRhcmdldF9pcC0+Y2dpZCk7DQog ICAgIGhvc3RfaXAtPm1vZGUgPSB0c3dhcGwodGFyZ2V0X2lwLT5tb2RlKTsN CiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2Fk ZHIsIDApOw0KKw0KKyAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMg aW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfaXBjX3Blcm0odGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gKmhvc3RfaXApDQor c3RhdGljIGlubGluZSBsb25nIGhvc3RfdG9fdGFyZ2V0X2lwY19wZXJtKHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlwY19wZXJtICpob3N0 X2lwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgcGdfYWNjZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0K ICAgICBzdHJ1Y3QgdGFyZ2V0X2lwY19wZXJtICp0YXJnZXRfaXA7DQogICAg IHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsNCiANCi0gICAg bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsN CisgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRh cmdldF9zZCx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9zZCksMCxwZ19h Y2Nlc3MpKSApIHJldHVybiAtcmV0Ow0KICAgICB0YXJnZXRfaXAgPSAmKHRh cmdldF9zZC0+c2VtX3Blcm0pOw0KICAgICB0YXJnZXRfaXAtPl9fa2V5ID0g dHN3YXBsKGhvc3RfaXAtPl9fa2V5KTsNCiAgICAgdGFyZ2V0X2lwLT51aWQg PSB0c3dhcGwoaG9zdF9pcC0+dWlkKTsNCkBAIC0xMjg5LDMyICsxMzI3LDQy IEBADQogICAgIHRhcmdldF9pcC0+Y2dpZCA9IHRzd2FwbChob3N0X2lwLT5j Z2lkKTsNCiAgICAgdGFyZ2V0X2lwLT5tb2RlID0gdHN3YXBsKGhvc3RfaXAt Pm1vZGUpOw0KICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0 YXJnZXRfYWRkciwgMSk7DQorDQorICAgIHJldHVybiByZXQ7DQogfQ0KIA0K LXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9zZW1pZF9kcyhz dHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QsDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRyKQ0KK3N0YXRpYyBpbmxpbmUgbG9uZyB0YXJnZXRfdG9faG9zdF9zZW1p ZF9kcyhzdHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRh cmdldF9hZGRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBwZ19hY2Nlc3MpDQogew0KKyAgICBsb25nIHJldCA9 IDA7DQogICAgIHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsN CiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9h ZGRyLCAxKTsNCi0gICAgdGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oJihob3N0 X3NkLT5zZW1fcGVybSksdGFyZ2V0X2FkZHIpOw0KKyAgICBpZiggKHJldD1s b2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3NkLHRhcmdldF9h ZGRyLHNpemVvZigqdGFyZ2V0X3NkKSwxLHBnX2FjY2VzcykpICE9IDAgKSBy ZXR1cm4gLXJldDsNCisgICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfaXBj X3Blcm0oJihob3N0X3NkLT5zZW1fcGVybSksdGFyZ2V0X2FkZHIscGdfYWNj ZXNzKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgIGhvc3Rfc2QtPnNlbV9u c2VtcyA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9uc2Vtcyk7DQogICAgIGhv c3Rfc2QtPnNlbV9vdGltZSA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9vdGlt ZSk7DQogICAgIGhvc3Rfc2QtPnNlbV9jdGltZSA9IHRzd2FwbCh0YXJnZXRf c2QtPnNlbV9jdGltZSk7DQogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsNCisNCisgICAgcmV0dXJuIHJldDsN CiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3Nl bWlkX2RzKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlk X2RzICpob3N0X3NkKQ0KK3N0YXRpYyBpbmxpbmUgbG9uZyBob3N0X3RvX3Rh cmdldF9zZW1pZF9kcyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBzZW1pZF9kcyAqaG9zdF9zZCwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQorICAg IGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdldF9zZW1pZF9kcyAq dGFyZ2V0X3NkOw0KIA0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9z ZCwgdGFyZ2V0X2FkZHIsIDApOw0KLSAgICBob3N0X3RvX3RhcmdldF9pcGNf cGVybSh0YXJnZXRfYWRkciwmKGhvc3Rfc2QtPnNlbV9wZXJtKSk7DQorICAg IGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRf c2QsdGFyZ2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRfc2QpLDAscGdfYWNjZXNz KSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKyAgICBpZiggKHJldD1ob3N0X3Rv X3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRkciwmKGhvc3Rfc2QtPnNlbV9w ZXJtKSxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgdGFy Z2V0X3NkLT5zZW1fbnNlbXMgPSB0c3dhcGwoaG9zdF9zZC0+c2VtX25zZW1z KTsNCiAgICAgdGFyZ2V0X3NkLT5zZW1fb3RpbWUgPSB0c3dhcGwoaG9zdF9z ZC0+c2VtX290aW1lKTsNCiAgICAgdGFyZ2V0X3NkLT5zZW1fY3RpbWUgPSB0 c3dhcGwoaG9zdF9zZC0+c2VtX2N0aW1lKTsNCiAgICAgdW5sb2NrX3VzZXJf c3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDEpOw0KKw0KKyAgICBy ZXR1cm4gcmV0Ow0KIH0NCiANCiB1bmlvbiBzZW11biB7DQpAQCAtMTMyOSw2 NyArMTM3Nyw3NSBAQA0KIAl1bnNpZ25lZCBzaG9ydCBpbnQgKmFycmF5Ow0K IH07DQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3Nl bXVuKHVuc2lnbmVkIGxvbmcgY21kLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyB0 YXJnZXRfdG9faG9zdF9zZW11bih1bnNpZ25lZCBsb25nIGNtZCwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gc2Vt dW4gKmhvc3Rfc3UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlk X2RzICpkcykNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHNlbWlkX2RzICpkcywNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQor ICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgdW5pb24gdGFyZ2V0X3NlbXVuICp0 YXJnZXRfc3U7DQogDQogICAgIHN3aXRjaCggY21kICkgew0KIAljYXNlIElQ Q19TVEFUOg0KIAljYXNlIElQQ19TRVQ6DQotICAgICAgICAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDEpOw0KLQkgICB0 YXJnZXRfdG9faG9zdF9zZW1pZF9kcyhkcyx0YXJnZXRfc3UtPmJ1Zik7DQor CSAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJn ZXRfc3UsdGFyZ2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDEscGdfYWNj ZXNzKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKwkgICBpZiggKHJldD10YXJn ZXRfdG9faG9zdF9zZW1pZF9kcyhkcyx0YXJnZXRfc3UtPmJ1ZiwgcGdfYWNj ZXNzKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KIAkgICBob3N0X3N1LT5idWYg PSBkczsNCiAgICAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRf c3UsIHRhcmdldF9hZGRyLCAwKTsNCiAJICAgYnJlYWs7DQogCWNhc2UgR0VU VkFMOg0KIAljYXNlIFNFVFZBTDoNCi0gICAgICAgICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQorCSAgIGlmKCAo cmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3UsdGFy Z2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDEscGdfYWNjZXNzKSkgIT0g MCApIHJldHVybiAtcmV0Ow0KIAkgICBob3N0X3N1LT52YWwgPSB0c3dhcGwo dGFyZ2V0X3N1LT52YWwpOw0KICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KIAkgICBicmVhazsN CiAJY2FzZSBHRVRBTEw6DQogCWNhc2UgU0VUQUxMOg0KLSAgICAgICAgICAg bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAxKTsN CisJICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRh cmdldF9zdSx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9zdSksMSxwZ19h Y2Nlc3MpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogCSAgICpob3N0X3N1LT5h cnJheSA9IHRzd2FwMTYoKnRhcmdldF9zdS0+YXJyYXkpOw0KICAgICAgICAg ICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIs IDApOw0KIAkgICBicmVhazsNCiAJZGVmYXVsdDoNCiAgICAgICAgICAgIGdl bXVfbG9nKCJzZW11biBvcGVyYXRpb24gbm90IGZ1bGx5IHN1cHBvcnRlZDog JWRcbiIsIChpbnQpY21kKTsNCiAgICAgfQ0KKw0KKyAgICByZXR1cm4gcmV0 Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRf c2VtdW4odW5zaWduZWQgbG9uZyBjbWQsDQorc3RhdGljIGlubGluZSBsb25n IGhvc3RfdG9fdGFyZ2V0X3NlbXVuKHVuc2lnbmVkIGxvbmcgY21kLA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuaW9uIHNlbXVuICpob3N0X3N1LA0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Vt aWRfZHMgKmRzKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmRzLA0KKwkJCQkJaW50IHBnX2Fj Y2VzcykNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgdW5pb24gdGFy Z2V0X3NlbXVuICp0YXJnZXRfc3U7DQogDQogICAgIHN3aXRjaCggY21kICkg ew0KIAljYXNlIElQQ19TVEFUOg0KIAljYXNlIElQQ19TRVQ6DQotICAgICAg ICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIs IDApOw0KLQkgICBob3N0X3RvX3RhcmdldF9zZW1pZF9kcyh0YXJnZXRfc3Ut PmJ1Zixkcyk7DQorCSAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJf c3RydWN0KCZ0YXJnZXRfc3UsdGFyZ2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRf c3UpLDAscGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKwkgICBp ZiggKHJldD1ob3N0X3RvX3RhcmdldF9zZW1pZF9kcyh0YXJnZXRfc3UtPmJ1 ZixkcywgcGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAg ICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2Fk ZHIsIDEpOw0KIAkgICBicmVhazsNCiAJY2FzZSBHRVRWQUw6DQogCWNhc2Ug U0VUVkFMOg0KLSAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRf c3UsIHRhcmdldF9hZGRyLCAwKTsNCisJICAgaWYoIChyZXQ9bG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9zdSx0YXJnZXRfYWRkcixzaXpl b2YoKnRhcmdldF9zdSksMCxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0dXJuIC1y ZXQ7DQogCSAgIHRhcmdldF9zdS0+dmFsID0gdHN3YXBsKGhvc3Rfc3UtPnZh bCk7DQogICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1 LCB0YXJnZXRfYWRkciwgMSk7DQogCSAgIGJyZWFrOw0KIAljYXNlIEdFVEFM TDoNCiAJY2FzZSBTRVRBTEw6DQotICAgICAgICAgICBsb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KKwkgICBpZiggKHJl dD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3N1LHRhcmdl dF9hZGRyLHNpemVvZigqdGFyZ2V0X3N1KSwwLHBnX2FjY2VzcykpICE9IDAg KSByZXR1cm4gLXJldDsNCiAJICAgKnRhcmdldF9zdS0+YXJyYXkgPSB0c3dh cDE2KCpob3N0X3N1LT5hcnJheSk7DQogICAgICAgICAgICB1bmxvY2tfdXNl cl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQogCSAgIGJy ZWFrOw0KICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGdlbXVfbG9n KCJzZW11biBvcGVyYXRpb24gbm90IGZ1bGx5IHN1cHBvcnRlZDogJWRcbiIs IChpbnQpY21kKTsNCiAgICAgfQ0KKw0KKyAgICByZXR1cm4gcmV0Ow0KIH0N CiANCiBzdGF0aWMgaW5saW5lIGxvbmcgZG9fc2VtY3RsKGxvbmcgZmlyc3Qs IGxvbmcgc2Vjb25kLCBsb25nIHRoaXJkLCBsb25nIHB0cikNCkBAIC0xNDAx LDM0ICsxNDU3LDM0IEBADQogDQogICAgIHN3aXRjaCggY21kICkgew0KIAlj YXNlIEdFVFZBTDoNCi0gICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zZW11 bihjbWQsJmFyZyxwdHIsJmRzYXJnKTsNCisgICAgICAgICAgICBpZiggKHJl dD10YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnLFBB R0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAg cmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFy ZykpOw0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxw dHIsJmFyZywmZHNhcmcpOw0KKyAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0 X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcsUEFHRV9XUklURSk7DQogICAg ICAgICAgICAgYnJlYWs7DQogCWNhc2UgU0VUVkFMOg0KLSAgICAgICAgICAg IHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0K KyAgICAgICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3NlbXVuKGNt ZCwmYXJnLHB0ciwmZHNhcmcsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAt cmV0Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmly c3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0X3Rv X3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAgICAg ICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJn LFBBR0VfUkVBRCk7DQogICAgICAgICAgICAgYnJlYWs7DQogCWNhc2UgR0VU QUxMOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwm YXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCAocmV0PXRhcmdl dF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcsUEFHRV9XUklU RSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgICAgICByZXQgPSBn ZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7DQot ICAgICAgICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJn LCZkc2FyZyk7DQorICAgICAgICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4o Y21kLHB0ciwmYXJnLCZkc2FyZyxQQUdFX1dSSVRFKTsNCiAgICAgICAgICAg ICBicmVhazsNCiAJY2FzZSBTRVRBTEw6DQotICAgICAgICAgICAgdGFyZ2V0 X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQorICAgICAg ICAgICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcs cHRyLCZkc2FyZyxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQog ICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vj b25kLCBjbWQsIGFyZykpOw0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0 X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcpOw0KKyAgICAgICAgICAgIGhv c3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcsUEFHRV9S RUFEKTsNCiAgICAgICAgICAgICBicmVhazsNCiAJY2FzZSBJUENfU1RBVDoN Ci0gICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFyZyxw dHIsJmRzYXJnKTsNCisgICAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9f aG9zdF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnLFBBR0VfV1JJVEUpKSAh PSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vy cm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFyZykpOw0KLSAgICAg ICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNh cmcpOw0KKyAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxw dHIsJmFyZywmZHNhcmcsUEFHRV9SRUFEKTsNCiAgICAgICAgICAgICBicmVh azsNCiAJY2FzZSBJUENfU0VUOg0KLSAgICAgICAgICAgIHRhcmdldF90b19o b3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAg IGlmKCAocmV0PXRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwm ZHNhcmcsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAg ICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwg Y21kLCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11 bihjbWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAgICAgICAgICBob3N0X3Rv X3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfUkVBRCk7 DQogICAgICAgICAgICAgYnJlYWs7DQogICAgIGRlZmF1bHQ6DQogICAgICAg ICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBj bWQsIGFyZykpOw0KQEAgLTE0NTUsMTMgKzE1MTEsMTUgQEANCiAgIHRhcmdl dF91bG9uZyBfX3VudXNlZDU7DQogfTsNCiANCi1zdGF0aWMgaW5saW5lIHZv aWQgdGFyZ2V0X3RvX2hvc3RfbXNxaWRfZHMoc3RydWN0IG1zcWlkX2RzICpo b3N0X21kLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcikNCitzdGF0aWMgaW5s aW5lIGxvbmcgdGFyZ2V0X3RvX2hvc3RfbXNxaWRfZHMoc3RydWN0IG1zcWlk X2RzICpob3N0X21kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdf YWNjZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3Qg dGFyZ2V0X21zcWlkX2RzICp0YXJnZXRfbWQ7DQogDQotICAgIGxvY2tfdXNl cl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMSk7DQotICAgIHRh cmdldF90b19ob3N0X2lwY19wZXJtKCYoaG9zdF9tZC0+bXNnX3Blcm0pLHRh cmdldF9hZGRyKTsNCisgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJnRhcmdldF9tZCx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdl dF9tZCksMSxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQorICAg IGlmKCAocmV0PXRhcmdldF90b19ob3N0X2lwY19wZXJtKCYoaG9zdF9tZC0+ bXNnX3Blcm0pLHRhcmdldF9hZGRyLHBnX2FjY2VzcykpICE9IDAgKSByZXR1 cm4gcmV0Ow0KICAgICBob3N0X21kLT5tc2dfc3RpbWUgPSB0c3dhcGwodGFy Z2V0X21kLT5tc2dfc3RpbWUpOw0KICAgICBob3N0X21kLT5tc2dfcnRpbWUg PSB0c3dhcGwodGFyZ2V0X21kLT5tc2dfcnRpbWUpOw0KICAgICBob3N0X21k LT5tc2dfY3RpbWUgPSB0c3dhcGwodGFyZ2V0X21kLT5tc2dfY3RpbWUpOw0K QEAgLTE0NzEsMTUgKzE1MjksMTggQEANCiAgICAgaG9zdF9tZC0+bXNnX2xz cGlkID0gdHN3YXBsKHRhcmdldF9tZC0+bXNnX2xzcGlkKTsNCiAgICAgaG9z dF9tZC0+bXNnX2xycGlkID0gdHN3YXBsKHRhcmdldF9tZC0+bXNnX2xycGlk KTsNCiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0 X2FkZHIsIDApOw0KKyAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMg aW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfbXNxaWRfZHModGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNxaWRfZHMgKmhvc3RfbWQpDQor c3RhdGljIGlubGluZSBsb25nIGhvc3RfdG9fdGFyZ2V0X21zcWlkX2RzKHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNxaWRfZHMgKmhvc3Rf bWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHBnX2FjY2VzcykNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAg ICAgc3RydWN0IHRhcmdldF9tc3FpZF9kcyAqdGFyZ2V0X21kOw0KIA0KLSAg ICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0X2FkZHIsIDAp Ow0KLSAgICBob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRkciwm KGhvc3RfbWQtPm1zZ19wZXJtKSk7DQorICAgIGlmKCAocmV0PWxvY2tfYW5k X2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfbWQsdGFyZ2V0X2FkZHIsc2l6 ZW9mKCp0YXJnZXRfbWQpLDAscGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiAt cmV0Ow0KKyAgICBpZiggKHJldD1ob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0 YXJnZXRfYWRkciwmKGhvc3RfbWQtPm1zZ19wZXJtKSxwZ19hY2Nlc3MpKSAh PSAwICkgcmV0dXJuIHJldDsNCiAgICAgdGFyZ2V0X21kLT5tc2dfc3RpbWUg PSB0c3dhcGwoaG9zdF9tZC0+bXNnX3N0aW1lKTsNCiAgICAgdGFyZ2V0X21k LT5tc2dfcnRpbWUgPSB0c3dhcGwoaG9zdF9tZC0+bXNnX3J0aW1lKTsNCiAg ICAgdGFyZ2V0X21kLT5tc2dfY3RpbWUgPSB0c3dhcGwoaG9zdF9tZC0+bXNn X2N0aW1lKTsNCkBAIC0xNDg5LDYgKzE1NTAsOCBAQA0KICAgICB0YXJnZXRf bWQtPm1zZ19sc3BpZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHNwaWQpOw0K ICAgICB0YXJnZXRfbWQtPm1zZ19scnBpZCA9IHRzd2FwbChob3N0X21kLT5t c2dfbHJwaWQpOw0KICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21k LCB0YXJnZXRfYWRkciwgMSk7DQorDQorICAgIHJldHVybiByZXQ7DQogfQ0K IA0KIHN0YXRpYyBpbmxpbmUgbG9uZyBkb19tc2djdGwobG9uZyBmaXJzdCwg bG9uZyBzZWNvbmQsIGxvbmcgcHRyKQ0KQEAgLTE0OTgsMTAgKzE1NjEsMTUg QEANCiAgICAgbG9uZyByZXQgPSAwOw0KICAgICBzd2l0Y2goIGNtZCApIHsN CiAgICAgY2FzZSBJUENfU1RBVDoNCisgICAgICAgIGlmKCAocmV0PXRhcmdl dF90b19ob3N0X21zcWlkX2RzKCZkc2FyZyxwdHIsUEFHRV9XUklURSkpICE9 IDAgKSByZXR1cm4gLXJldDsNCisgICAgICAgIHJldCA9IGdldF9lcnJubyht c2djdGwoZmlyc3QsIGNtZCwgJmRzYXJnKSk7DQorICAgICAgICBob3N0X3Rv X3RhcmdldF9tc3FpZF9kcyhwdHIsJmRzYXJnLFBBR0VfV1JJVEUpOw0KKwli cmVhazsNCiAgICAgY2FzZSBJUENfU0VUOg0KLSAgICAgICAgdGFyZ2V0X3Rv X2hvc3RfbXNxaWRfZHMoJmRzYXJnLHB0cik7DQorICAgICAgICBpZiggKHJl dD10YXJnZXRfdG9faG9zdF9tc3FpZF9kcygmZHNhcmcscHRyLFBBR0VfUkVB RCkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgIHJldCA9IGdldF9l cnJubyhtc2djdGwoZmlyc3QsIGNtZCwgJmRzYXJnKSk7DQotICAgICAgICBo b3N0X3RvX3RhcmdldF9tc3FpZF9kcyhwdHIsJmRzYXJnKTsNCisgICAgICAg IGhvc3RfdG9fdGFyZ2V0X21zcWlkX2RzKHB0ciwmZHNhcmcsUEFHRV9XUklU RSk7DQorCWJyZWFrOw0KICAgICBkZWZhdWx0Og0KICAgICAgICAgcmV0ID0g Z2V0X2Vycm5vKG1zZ2N0bChmaXJzdCwgY21kLCAmZHNhcmcpKTsNCiAgICAg fQ0KQEAgLTE1MTksNyArMTU4Nyw3IEBADQogICAgIHN0cnVjdCBtc2didWYg Kmhvc3RfbWI7DQogICAgIGxvbmcgcmV0ID0gMDsNCiANCi0gICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfbWIsbXNncCwwKTsNCisgICAgaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9tYixtc2dwLHNp emVvZihsb25nKSttc2dzeiwxLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4g LXJldDsNCiAgICAgaG9zdF9tYiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9u ZykpOw0KICAgICBob3N0X21iLT5tdHlwZSA9IHRzd2FwbCh0YXJnZXRfbWIt Pm10eXBlKTsNCiAgICAgbWVtY3B5KGhvc3RfbWItPm10ZXh0LHRhcmdldF9t Yi0+bXRleHQsbXNnc3opOw0KQEAgLTE1MzYsNyArMTYwNCw3IEBADQogICAg IHN0cnVjdCBtc2didWYgKmhvc3RfbWI7DQogICAgIGxvbmcgcmV0ID0gMDsN CiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfbWIsIG1zZ3AsIDAp Ow0KKyAgICBpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm dGFyZ2V0X21iLG1zZ3Asc2l6ZW9mKGxvbmcpK21zZ3N6LDAsUEFHRV9XUklU RSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgaG9zdF9tYiA9IG1hbGxv Yyhtc2dzeitzaXplb2YobG9uZykpOw0KICAgICByZXQgPSBnZXRfZXJybm8o bXNncmN2KG1zcWlkLCBob3N0X21iLCBtc2dzeiwgMSwgbXNnZmxnKSk7DQog ICAgIGlmIChyZXQgPiAwKQ0KQEAgLTIwMTYsNiArMjA4NCw3IEBADQogc3Rh dGljIGludCB3cml0ZV9sZHQoQ1BVWDg2U3RhdGUgKmVudiwgDQogICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHB0ciwgdW5zaWduZWQgbG9u ZyBieXRlY291bnQsIGludCBvbGRtb2RlKQ0KIHsNCisgICAgbG9uZyByZXQg PSAwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X21vZGlmeV9sZHRfbGR0X3MgbGR0 X2luZm87DQogICAgIHN0cnVjdCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyAq dGFyZ2V0X2xkdF9pbmZvOw0KICAgICBpbnQgc2VnXzMyYml0LCBjb250ZW50 cywgcmVhZF9leGVjX29ubHksIGxpbWl0X2luX3BhZ2VzOw0KQEAgLTIwMjQs NyArMjA5Myw3IEBADQogDQogICAgIGlmIChieXRlY291bnQgIT0gc2l6ZW9m KGxkdF9pbmZvKSkNCiAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KLSAgICBs b2NrX3VzZXJfc3RydWN0KHRhcmdldF9sZHRfaW5mbywgcHRyLCAxKTsNCisg ICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdl dF9sZHRfaW5mbyxwdHIsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfbW9kaWZ5X2xk dF9sZHRfcyksMSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQog ICAgIGxkdF9pbmZvLmVudHJ5X251bWJlciA9IHRzd2FwMzIodGFyZ2V0X2xk dF9pbmZvLT5lbnRyeV9udW1iZXIpOw0KICAgICBsZHRfaW5mby5iYXNlX2Fk ZHIgPSB0c3dhcGwodGFyZ2V0X2xkdF9pbmZvLT5iYXNlX2FkZHIpOw0KICAg ICBsZHRfaW5mby5saW1pdCA9IHRzd2FwMzIodGFyZ2V0X2xkdF9pbmZvLT5s aW1pdCk7DQpAQCAtMjIyMyw3ICsyMjkyLDcgQEANCiANCiAgICAgc3dpdGNo KGNtZCkgew0KICAgICBjYXNlIFRBUkdFVF9GX0dFVExLOg0KLSAgICAgICAg bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmwsIGFyZywgMSk7DQorCWlmKCAo cmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfZmwsYXJn LHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2NrKSwxLFBBR0VfUkVBRCkpICE9 IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgIGZsLmxfdHlwZSA9IHRzd2Fw MTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0KICAgICAgICAgZmwubF93aGVuY2Ug PSB0c3dhcDE2KHRhcmdldF9mbC0+bF93aGVuY2UpOw0KICAgICAgICAgZmwu bF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmwtPmxfc3RhcnQpOw0KQEAgLTIy MzIsNiArMjMwMSw3IEBADQogICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3Qo dGFyZ2V0X2ZsLCBhcmcsIDApOw0KICAgICAgICAgcmV0ID0gZmNudGwoZmQs IGNtZCwgJmZsKTsNCiAgICAgICAgIGlmIChyZXQgPT0gMCkgew0KKwkgICAg aWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9m bCxhcmcsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfZmxvY2spLDAsUEFHRV9XUklU RSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgICAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9mbCwgYXJnLCAwKTsNCiAgICAgICAgICAgICB0 YXJnZXRfZmwtPmxfdHlwZSA9IHRzd2FwMTYoZmwubF90eXBlKTsNCiAgICAg ICAgICAgICB0YXJnZXRfZmwtPmxfd2hlbmNlID0gdHN3YXAxNihmbC5sX3do ZW5jZSk7DQpAQCAtMjI0NCw3ICsyMzE0LDcgQEANCiAgICAgICAgIA0KICAg ICBjYXNlIFRBUkdFVF9GX1NFVExLOg0KICAgICBjYXNlIFRBUkdFVF9GX1NF VExLVzoNCi0gICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X2ZsLCBh cmcsIDEpOw0KKwlpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVj dCgmdGFyZ2V0X2ZsLGFyZyxzaXplb2Yoc3RydWN0IHRhcmdldF9mbG9jayks MSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICBm bC5sX3R5cGUgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF90eXBlKTsNCiAgICAg ICAgIGZsLmxfd2hlbmNlID0gdHN3YXAxNih0YXJnZXRfZmwtPmxfd2hlbmNl KTsNCiAgICAgICAgIGZsLmxfc3RhcnQgPSB0c3dhcGwodGFyZ2V0X2ZsLT5s X3N0YXJ0KTsNCkBAIC0yMjU1LDcgKzIzMjUsNyBAQA0KICAgICAgICAgYnJl YWs7DQogICAgICAgICANCiAgICAgY2FzZSBUQVJHRVRfRl9HRVRMSzY0Og0K LSAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAx KTsNCisJaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRh cmdldF9mbDY0LGFyZyxzaXplb2Yoc3RydWN0IHRhcmdldF9mbG9jazY0KSwx LFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgIGZs NjQubF90eXBlID0gdHN3YXAxNih0YXJnZXRfZmw2NC0+bF90eXBlKSA+PiAx Ow0KICAgICAgICAgZmw2NC5sX3doZW5jZSA9IHRzd2FwMTYodGFyZ2V0X2Zs NjQtPmxfd2hlbmNlKTsNCiAgICAgICAgIGZsNjQubF9zdGFydCA9IHRzd2Fw bCh0YXJnZXRfZmw2NC0+bF9zdGFydCk7DQpAQCAtMjI2NCw3ICsyMzM0LDcg QEANCiAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwg YXJnLCAwKTsNCiAgICAgICAgIHJldCA9IGZjbnRsKGZkLCBjbWQgPj4gMSwg JmZsNjQpOw0KICAgICAgICAgaWYgKHJldCA9PSAwKSB7DQotICAgICAgICAg ICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAwKTsNCisJ ICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJn ZXRfZmw2NCxhcmcsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfZmxvY2s2NCksMCxQ QUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAg IHRhcmdldF9mbDY0LT5sX3R5cGUgPSB0c3dhcDE2KGZsNjQubF90eXBlKSA+ PiAxOw0KICAgICAgICAgICAgIHRhcmdldF9mbDY0LT5sX3doZW5jZSA9IHRz d2FwMTYoZmw2NC5sX3doZW5jZSk7DQogICAgICAgICAgICAgdGFyZ2V0X2Zs NjQtPmxfc3RhcnQgPSB0c3dhcGwoZmw2NC5sX3N0YXJ0KTsNCkBAIC0yMjc1 LDcgKzIzNDUsNyBAQA0KIAkJYnJlYWs7DQogICAgIGNhc2UgVEFSR0VUX0Zf U0VUTEs2NDoNCiAgICAgY2FzZSBUQVJHRVRfRl9TRVRMS1c2NDoNCi0gICAg ICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X2ZsNjQsIGFyZywgMSk7DQor CWlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRf Zmw2NCxhcmcsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfZmxvY2s2NCksMSxQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICBmbDY0Lmxf dHlwZSA9IHRzd2FwMTYodGFyZ2V0X2ZsNjQtPmxfdHlwZSkgPj4gMTsNCiAg ICAgICAgIGZsNjQubF93aGVuY2UgPSB0c3dhcDE2KHRhcmdldF9mbDY0LT5s X3doZW5jZSk7DQogICAgICAgICBmbDY0Lmxfc3RhcnQgPSB0c3dhcGwodGFy Z2V0X2ZsNjQtPmxfc3RhcnQpOw0KQEAgLTI0MTcsMjMgKzI0ODcsMjYgQEAN CiB9DQogI2VuZGlmDQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90 b19ob3N0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cywNCitz dGF0aWMgaW5saW5lIGxvbmcgdGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoc3Ry dWN0IHRpbWVzcGVjICpob3N0X3RzLA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIpDQogew0KKyAgICBsb25nIHJldCA9IDA7DQogICAgIHN0cnVjdCB0YXJn ZXRfdGltZXNwZWMgKnRhcmdldF90czsNCiANCi0gICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfdHMsIHRhcmdldF9hZGRyLCAxKTsNCisgICAgaWYoIChy ZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF90cyx0YXJn ZXRfYWRkcixzaXplb2Yoc3RydWN0IHRhcmdldF90aW1lc3BlYyksMSxQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIGhvc3RfdHMtPnR2 X3NlYyA9IHRzd2FwbCh0YXJnZXRfdHMtPnR2X3NlYyk7DQogICAgIGhvc3Rf dHMtPnR2X25zZWMgPSB0c3dhcGwodGFyZ2V0X3RzLT50dl9uc2VjKTsNCiAg ICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90cywgdGFyZ2V0X2FkZHIs IDApOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJn ZXRfdGltZXNwZWModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRp YyBpbmxpbmUgbG9uZyBob3N0X3RvX3RhcmdldF90aW1lc3BlYyh0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cykN CiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdldF90 aW1lc3BlYyAqdGFyZ2V0X3RzOw0KIA0KICAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDApOw0KKyAgICBpZiggKHJldD1s b2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3RzLHRhcmdldF9h ZGRyLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWVzcGVjKSwwLFBBR0VfV1JJ VEUpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIHRhcmdldF90cy0+dHZf c2VjID0gdHN3YXBsKGhvc3RfdHMtPnR2X3NlYyk7DQogICAgIHRhcmdldF90 cy0+dHZfbnNlYyA9IHRzd2FwbChob3N0X3RzLT50dl9uc2VjKTsNCiAgICAg dW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDEp Ow0KQEAgLTI0NDIsNyArMjUxNSw3IEBADQogbG9uZyBkb19zeXNjYWxsKHZv aWQgKmNwdV9lbnYsIGludCBudW0sIGxvbmcgYXJnMSwgbG9uZyBhcmcyLCBs b25nIGFyZzMsIA0KICAgICAgICAgICAgICAgICBsb25nIGFyZzQsIGxvbmcg YXJnNSwgbG9uZyBhcmc2KQ0KIHsNCi0gICAgbG9uZyByZXQ7DQorICAgIGxv bmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHN0YXQgc3Q7DQogICAgIHN0cnVj dCBzdGF0ZnMgc3RmczsNCiAgICAgdm9pZCAqcDsNCkBAIC0yNjY5LDcgKzI3 NDIsNyBAQA0KICAgICAgICAgICAgIHN0cnVjdCB1dGltYnVmIHRidWYsICpo b3N0X3RidWY7DQogICAgICAgICAgICAgc3RydWN0IHRhcmdldF91dGltYnVm ICp0YXJnZXRfdGJ1ZjsNCiAgICAgICAgICAgICBpZiAoYXJnMikgew0KLSAg ICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF90YnVmLCBh cmcyLCAxKTsNCisJCWlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3Ry dWN0KCZ0YXJnZXRfdGJ1ZixhcmcyLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3V0 aW1idWYpLDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICAgICAgICAgICAgICB0YnVmLmFjdGltZSA9IHRzd2FwbCh0YXJnZXRfdGJ1 Zi0+YWN0aW1lKTsNCiAgICAgICAgICAgICAgICAgdGJ1Zi5tb2R0aW1lID0g dHN3YXBsKHRhcmdldF90YnVmLT5tb2R0aW1lKTsNCiAgICAgICAgICAgICAg ICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90YnVmLCBhcmcyLCAwKTsN CkBAIC0yNjg3LDkgKzI3NjAsOSBAQA0KICAgICAgICAgew0KICAgICAgICAg ICAgIHN0cnVjdCB0aW1ldmFsICp0dnAsIHR2WzJdOw0KICAgICAgICAgICAg IGlmIChhcmcyKSB7DQotICAgICAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X3RpbWV2YWwoJnR2WzBdLCBhcmcyKTsNCi0gICAgICAgICAgICAgICAgdGFy Z2V0X3RvX2hvc3RfdGltZXZhbCgmdHZbMV0sDQotICAgICAgICAgICAgICAg ICAgICBhcmcyICsgc2l6ZW9mIChzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKTsN CisgICAgICAgICAgICAgICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGlt ZXZhbCgmdHZbMF0sIGFyZzIpKSAhPSAwICkgcmV0dXJuIHJldDsNCisgICAg ICAgICAgICAgICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgm dHZbMV0sDQorICAgICAgICAgICAgICAgICAgICBhcmcyICsgc2l6ZW9mIChz dHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKSkgIT0gMCApIHJldHVybiByZXQ7DQog ICAgICAgICAgICAgICAgIHR2cCA9IHR2Ow0KICAgICAgICAgICAgIH0gZWxz ZSB7DQogICAgICAgICAgICAgICAgIHR2cCA9IE5VTEw7DQpAQCAtMjg1OCw3 ICsyOTMxLDcgQEANCiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X29sZF9z aWdhY3Rpb24gKm9sZF9hY3Q7DQogICAgICAgICAgICAgc3RydWN0IHRhcmdl dF9zaWdhY3Rpb24gYWN0LCBvYWN0LCAqcGFjdDsNCiAgICAgICAgICAgICBp ZiAoYXJnMikgew0KLSAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0 KG9sZF9hY3QsIGFyZzIsIDEpOw0KKwkJaWYoIChyZXQ9bG9ja19hbmRfY2hl Y2tfdXNlcl9zdHJ1Y3QoJm9sZF9hY3QsYXJnMixzaXplb2YoKm9sZF9hY3Qp LDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAg ICAgICAgICBhY3QuX3NhX2hhbmRsZXIgPSBvbGRfYWN0LT5fc2FfaGFuZGxl cjsNCiAgICAgICAgICAgICAgICAgdGFyZ2V0X3NpZ2luaXRzZXQoJmFjdC5z YV9tYXNrLCBvbGRfYWN0LT5zYV9tYXNrKTsNCiAgICAgICAgICAgICAgICAg YWN0LnNhX2ZsYWdzID0gb2xkX2FjdC0+c2FfZmxhZ3M7DQpAQCAtMjg3MCw3 ICsyOTQzLDcgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKGRvX3NpZ2FjdGlvbihhcmcxLCBwYWN0LCAmb2FjdCkp Ow0KICAgICAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSAmJiBhcmczKSB7 DQotICAgICAgICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3Qob2xkX2FjdCwg YXJnMywgMCk7DQorCQlpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmb2xkX2FjdCxhcmczLHNpemVvZigqb2xkX2FjdCksMCxQQUdFX1dS SVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgICAgICBv bGRfYWN0LT5fc2FfaGFuZGxlciA9IG9hY3QuX3NhX2hhbmRsZXI7DQogICAg ICAgICAgICAgICAgIG9sZF9hY3QtPnNhX21hc2sgPSBvYWN0LnNhX21hc2su c2lnWzBdOw0KICAgICAgICAgICAgICAgICBvbGRfYWN0LT5zYV9mbGFncyA9 IG9hY3Quc2FfZmxhZ3M7DQpAQCAtMjg4MSw3ICsyOTU0LDcgQEANCiAJICAg IHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uIGFjdCwgb2FjdCwgKnBhY3QsICpv bGRfYWN0Ow0KIA0KIAkgICAgaWYgKGFyZzIpIHsNCi0JCWxvY2tfdXNlcl9z dHJ1Y3Qob2xkX2FjdCwgYXJnMiwgMSk7DQorCQlpZiggKHJldD1sb2NrX2Fu ZF9jaGVja191c2VyX3N0cnVjdCgmb2xkX2FjdCxhcmcyLHNpemVvZigqb2xk X2FjdCksMSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogCQlh Y3QuX3NhX2hhbmRsZXIgPSBvbGRfYWN0LT5fc2FfaGFuZGxlcjsNCiAJCXRh cmdldF9zaWdpbml0c2V0KCZhY3Quc2FfbWFzaywgb2xkX2FjdC0+c2FfbWFz ay5zaWdbMF0pOw0KIAkJYWN0LnNhX2ZsYWdzID0gb2xkX2FjdC0+c2FfZmxh Z3M7DQpAQCAtMjg5NCw3ICsyOTY3LDcgQEANCiAJICAgIHJldCA9IGdldF9l cnJubyhkb19zaWdhY3Rpb24oYXJnMSwgcGFjdCwgJm9hY3QpKTsNCiANCiAJ ICAgIGlmICghaXNfZXJyb3IocmV0KSAmJiBhcmczKSB7DQotCQlsb2NrX3Vz ZXJfc3RydWN0KG9sZF9hY3QsIGFyZzMsIDApOw0KKwkJaWYoIChyZXQ9bG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJm9sZF9hY3QsYXJnMyxzaXplb2Yo Km9sZF9hY3QpLDAsUEFHRV9XUklURSkpICE9IDAgKSByZXR1cm4gLXJldDsN CiAJCW9sZF9hY3QtPl9zYV9oYW5kbGVyID0gb2FjdC5fc2FfaGFuZGxlcjsN CiAJCW9sZF9hY3QtPnNhX2ZsYWdzID0gb2FjdC5zYV9mbGFnczsNCiAJCW9s ZF9hY3QtPnNhX21hc2suc2lnWzBdID0gb2FjdC5zYV9tYXNrLnNpZ1swXTsN CkBAIC0yOTEyLDEyICsyOTg1LDE0IEBADQogICAgICAgICAgICAgc3RydWN0 IHRhcmdldF9zaWdhY3Rpb24gKmFjdDsNCiAgICAgICAgICAgICBzdHJ1Y3Qg dGFyZ2V0X3NpZ2FjdGlvbiAqb2FjdDsNCiANCi0gICAgICAgICAgICBpZiAo YXJnMikNCi0gICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdChhY3Qs IGFyZzIsIDEpOw0KKyAgICAgICAgICAgIGlmIChhcmcyKSB7DQorCQlpZigg KHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmYWN0LGFyZzIsc2l6 ZW9mKCphY3QpLDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0K KyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgZWxzZQ0KICAgICAg ICAgICAgICAgICBhY3QgPSBOVUxMOw0KLSAgICAgICAgICAgIGlmIChhcmcz KQ0KLSAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KG9hY3QsIGFy ZzMsIDApOw0KKyAgICAgICAgICAgIGlmIChhcmczKSB7DQorCQlpZiggKHJl dD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmb2FjdCxhcmcyLHNpemVv Zigqb2FjdCksMCxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0K KyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgZWxzZQ0KICAgICAg ICAgICAgICAgICBvYWN0ID0gTlVMTDsNCiAgICAgICAgICAgICByZXQgPSBn ZXRfZXJybm8oZG9fc2lnYWN0aW9uKGFyZzEsIGFjdCwgb2FjdCkpOw0KQEAg LTMwNDQsNyArMzExOSw3IEBADQogICAgICAgICAgICAgc2lnc2V0X3Qgc2V0 Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzaWdwZW5kaW5nKCZz ZXQpKTsNCiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0g ICAgICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcxLCBzaXplb2YodGFy Z2V0X3NpZ3NldF90KSwgMCk7DQorCQlpZiggKHJldD1sb2NrX2FuZF9jaGVj a191c2VyX3N0cnVjdCgmcCxhcmcxLHNpemVvZih0YXJnZXRfc2lnc2V0X3Qp LDAsUEFHRV9XUklURSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAg ICAgICAgICAgaG9zdF90b190YXJnZXRfc2lnc2V0KHAsICZzZXQpOw0KICAg ICAgICAgICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcxLCBzaXplb2YodGFy Z2V0X3NpZ3NldF90KSk7DQogICAgICAgICAgICAgfQ0KQEAgLTMwNTQsNyAr MzEyOSw3IEBADQogICAgIGNhc2UgVEFSR0VUX05SX3NpZ3N1c3BlbmQ6DQog ICAgICAgICB7DQogICAgICAgICAgICAgc2lnc2V0X3Qgc2V0Ow0KLSAgICAg ICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMSwgc2l6ZW9mKHRhcmdldF9zaWdz ZXRfdCksIDEpOw0KKwkgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJnAsYXJnMSxzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwxLFBB R0VfUkVBRCkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgICAgICB0 YXJnZXRfdG9faG9zdF9vbGRfc2lnc2V0KCZzZXQsIHApOw0KICAgICAgICAg ICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgICAgIHJl dCA9IGdldF9lcnJubyhzaWdzdXNwZW5kKCZzZXQpKTsNCkBAIC0zMDY0LDcg KzMxMzksNyBAQA0KICAgICBjYXNlIFRBUkdFVF9OUl9ydF9zaWdzdXNwZW5k Og0KICAgICAgICAgew0KICAgICAgICAgICAgIHNpZ3NldF90IHNldDsNCi0g ICAgICAgICAgICBwID0gbG9ja191c2VyKGFyZzEsIHNpemVvZih0YXJnZXRf c2lnc2V0X3QpLCAxKTsNCisJICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNr X3VzZXJfc3RydWN0KCZwLGFyZzEsc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCks MSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAg ICAgdGFyZ2V0X3RvX2hvc3Rfc2lnc2V0KCZzZXQsIHApOw0KICAgICAgICAg ICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgICAgIHJl dCA9IGdldF9lcnJubyhzaWdzdXNwZW5kKCZzZXQpKTsNCkBAIC0zMDc2LDE4 ICszMTUxLDE4IEBADQogICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHV0 cywgKnB1dHM7DQogICAgICAgICAgICAgc2lnaW5mb190IHVpbmZvOw0KICAg ICAgICAgICAgIA0KLSAgICAgICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMSwg c2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksIDEpOw0KKwkgICAgaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJnMSxzaXplb2YodGFy Z2V0X3NpZ3NldF90KSwxLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4gLXJl dDsNCiAgICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zaWdzZXQoJnNldCwg cCk7DQogICAgICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQog ICAgICAgICAgICAgaWYgKGFyZzMpIHsNCiAgICAgICAgICAgICAgICAgcHV0 cyA9ICZ1dHM7DQotICAgICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3Rp bWVzcGVjKHB1dHMsIGFyZzMpOw0KKyAgICAgICAgICAgICAgICBpZiggKHJl dD10YXJnZXRfdG9faG9zdF90aW1lc3BlYyhwdXRzLCBhcmczKSkgIT0gMCAp IHJldHVybiByZXQ7DQogICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICAgcHV0cyA9IE5VTEw7DQogICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgIHJldCA9IGdldF9lcnJubyhzaWd0aW1lZHdhaXQoJnNldCwgJnVp bmZvLCBwdXRzKSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQp ICYmIGFyZzIpIHsNCi0gICAgICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihh cmcyLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwgMCk7DQorCQlpZiggKHJl dD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmcCxhcmcyLHNpemVvZih0 YXJnZXRfc2lnc2V0X3QpLDAsUEFHRV9XUklURSkpICE9IDAgKSByZXR1cm4g LXJldDsNCiAgICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfc2lnaW5m byhwLCAmdWluZm8pOw0KICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcihw LCBhcmcyLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSk7DQogICAgICAgICAg ICAgfQ0KQEAgLTMwOTYsNyArMzE3MSw3IEBADQogICAgIGNhc2UgVEFSR0VU X05SX3J0X3NpZ3F1ZXVlaW5mbzoNCiAgICAgICAgIHsNCiAgICAgICAgICAg ICBzaWdpbmZvX3QgdWluZm87DQotICAgICAgICAgICAgcCA9IGxvY2tfdXNl cihhcmczLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwgMSk7DQorCSAgICBp ZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmcCxhcmczLHNp emVvZih0YXJnZXRfc2lnc2V0X3QpLDEsUEFHRV9SRUFEKSkgIT0gMCApIHJl dHVybiAtcmV0Ow0KICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NpZ2lu Zm8oJnVpbmZvLCBwKTsNCiAgICAgICAgICAgICB1bmxvY2tfdXNlcihwLCBh cmcxLCAwKTsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc3lzX3J0 X3NpZ3F1ZXVlaW5mbyhhcmcxLCBhcmcyLCAmdWluZm8pKTsNCkBAIC0zMTUx LDcgKzMyMjYsNyBAQA0KICAgICAgICAgICAgIHN0cnVjdCBydXNhZ2UgcnVz YWdlOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhnZXRydXNhZ2Uo YXJnMSwgJnJ1c2FnZSkpOw0KICAgICAgICAgICAgIGlmICghaXNfZXJyb3Io cmV0KSkgew0KLSAgICAgICAgICAgICAgICBob3N0X3RvX3RhcmdldF9ydXNh Z2UoYXJnMiwgJnJ1c2FnZSk7DQorICAgICAgICAgICAgICAgIGlmKCAocmV0 PWhvc3RfdG9fdGFyZ2V0X3J1c2FnZShhcmcyLCAmcnVzYWdlKSkgIT0gMCAp IHJldHVybiByZXQ7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAg ICAgICAgYnJlYWs7DQpAQCAtMzE2MCwxNCArMzIzNSwxNCBAQA0KICAgICAg ICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2Ow0KICAgICAgICAgICAgIHJldCA9 IGdldF9lcnJubyhnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKSk7DQogICAgICAg ICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICAgICAgICAg IGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJnMSwgJnR2KTsNCisgICAgICAg ICAgICAgICAgaWYoIChyZXQ9aG9zdF90b190YXJnZXRfdGltZXZhbChhcmcx LCAmdHYpKSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgICAgICAgICB9DQog ICAgICAgICB9DQogICAgICAgICBicmVhazsNCiAgICAgY2FzZSBUQVJHRVRf TlJfc2V0dGltZW9mZGF5Og0KICAgICAgICAgew0KICAgICAgICAgICAgIHN0 cnVjdCB0aW1ldmFsIHR2Ow0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X3RpbWV2YWwoJnR2LCBhcmcxKTsNCisgICAgICAgICAgICBpZiggKHJldD10 YXJnZXRfdG9faG9zdF90aW1ldmFsKCZ0diwgYXJnMSkpICE9IDAgKSByZXR1 cm4gcmV0Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZXR0aW1l b2ZkYXkoJnR2LCBOVUxMKSk7DQogICAgICAgICB9DQogICAgICAgICBicmVh azsNCkBAIC0zNDg2LDE5ICszNTYxLDE5IEBADQogDQogICAgICAgICAgICAg aWYgKGFyZzIpIHsNCiAgICAgICAgICAgICAgICAgcHZhbHVlID0gJnZhbHVl Ow0KLSAgICAgICAgICAgICAgICB0YXJnZXRfdG9faG9zdF90aW1ldmFsKCZw dmFsdWUtPml0X2ludGVydmFsLCANCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcmcyKTsNCi0gICAgICAgICAgICAgICAgdGFy Z2V0X3RvX2hvc3RfdGltZXZhbCgmcHZhbHVlLT5pdF92YWx1ZSwgDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMiArIHNp emVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKTsNCisgICAgICAgICAgICAg ICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmcHZhbHVlLT5p dF9pbnRlcnZhbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcmcyKSkgIT0gMCApIHJldHVybiByZXQ7DQorICAgICAgICAg ICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3RpbWV2YWwoJnB2YWx1 ZS0+aXRfdmFsdWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXJnMiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwp KSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAgICAgICAgfSBlbHNlIHsN CiAgICAgICAgICAgICAgICAgcHZhbHVlID0gTlVMTDsNCiAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNldGl0aW1lcihh cmcxLCBwdmFsdWUsICZvdmFsdWUpKTsNCiAgICAgICAgICAgICBpZiAoIWlz X2Vycm9yKHJldCkgJiYgYXJnMykgew0KLSAgICAgICAgICAgICAgICBob3N0 X3RvX3RhcmdldF90aW1ldmFsKGFyZzMsDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm92YWx1ZS5pdF9pbnRlcnZhbCk7DQot ICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJnMyAr IHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpLA0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdmFsdWUuaXRfdmFsdWUp Ow0KKyAgICAgICAgICAgICAgICBpZiggKHJldD1ob3N0X3RvX3RhcmdldF90 aW1ldmFsKGFyZzMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJm92YWx1ZS5pdF9pbnRlcnZhbCkpICE9IDAgKSByZXR1cm4g cmV0Ow0KKyAgICAgICAgICAgICAgICBpZiggKHJldD1ob3N0X3RvX3Rhcmdl dF90aW1ldmFsKGFyZzMgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1ldmFs KSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b3ZhbHVlLml0X3ZhbHVlKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAg ICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQpAQCAtMzUw OCwxMCArMzU4MywxMCBAQA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhnZXRpdGltZXIoYXJnMSwgJnZhbHVlKSk7DQog ICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0g ICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXZhbChhcmcyLA0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1 ZS5pdF9pbnRlcnZhbCk7DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFy Z2V0X3RpbWV2YWwoYXJnMiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2 YWwpLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZ2YWx1ZS5pdF92YWx1ZSk7DQorICAgICAgICAgICAgICAgIGlmKCAocmV0 PWhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJnMiwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUuaXRfaW50ZXJ2YWwp KSAhPSAwICkgcmV0dXJuIHJldDsNCisgICAgICAgICAgICAgICAgaWYoIChy ZXQ9aG9zdF90b190YXJnZXRfdGltZXZhbChhcmcyICsgc2l6ZW9mKHN0cnVj dCB0YXJnZXRfdGltZXZhbCksDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnZhbHVlLml0X3ZhbHVlKSkgIT0gMCApIHJldHVy biByZXQ7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAg YnJlYWs7DQpAQCAtMzUzMiw3ICszNjA3LDcgQEANCiAgICAgICAgICAgICBp ZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgICAgICAgICAgc3RydWN0 IHRhcmdldF9zdGF0ICp0YXJnZXRfc3Q7DQogDQotICAgICAgICAgICAgICAg IGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0LCBhcmcyLCAwKTsNCisJCWlm KCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3Qs YXJnMixzaXplb2YoKnRhcmdldF9zdCksOSxQQUdFX1dSSVRFKSkgIT0gMCAp IHJldHVybiAtcmV0Ow0KICNpZiBkZWZpbmVkKFRBUkdFVF9NSVBTKQ0KICAg ICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X2RldiA9IHRzd2FwMzIoc3Qu c3RfZGV2KTsNCiAjZWxzZQ0KQEAgLTM5NjMsMTcgKzQwMzgsMTcgQEANCiAg ICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7DQogICAgICAgICAgICAg cmV0ID0gZ2V0X2Vycm5vKHNjaGVkX3JyX2dldF9pbnRlcnZhbChhcmcxLCAm dHMpKTsNCiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0g ICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwg JnRzKTsNCisgICAgICAgICAgICAgICAgaWYoIChyZXQ9aG9zdF90b190YXJn ZXRfdGltZXNwZWMoYXJnMiwgJnRzKSkgIT0gMCApIHJldHVybiByZXQ7DQog ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQog ICAgIGNhc2UgVEFSR0VUX05SX25hbm9zbGVlcDoNCiAgICAgICAgIHsNCiAg ICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVxLCByZW07DQotICAgICAg ICAgICAgdGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoJnJlcSwgYXJnMSk7DQor ICAgICAgICAgICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMo JnJlcSwgYXJnMSkpICE9IDAgKSByZXR1cm4gcmV0Ow0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhuYW5vc2xlZXAoJnJlcSwgJnJlbSkpOw0KICAg ICAgICAgICAgIGlmIChpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAg ICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnJl bSk7DQorICAgICAgICAgICAgICAgIGlmKCAocmV0PWhvc3RfdG9fdGFyZ2V0 X3RpbWVzcGVjKGFyZzIsICZyZW0pKSAhPSAwICkgcmV0dXJuIHJldDsNCiAg ICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBA IC00MDcwLDYgKzQxNDUsNyBAQA0KICNpZmRlZiBUQVJHRVRfTlJfc3RhdDY0 DQogICAgIGNhc2UgVEFSR0VUX05SX3N0YXQ2NDoNCiAgICAgICAgIHAgPSBs b2NrX3VzZXJfc3RyaW5nKGFyZzEpOw0KKyAgICAgICAgaWYoIHJldD1wYWdl X2NoZWNrX3JhbmdlKHAsMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1yZXQ7DQog ICAgICAgICByZXQgPSBnZXRfZXJybm8oc3RhdChwYXRoKHApLCAmc3QpKTsN CiAgICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAg Z290byBkb19zdGF0NjQ7DQpAQCAtNDA3Nyw2ICs0MTUzLDcgQEANCiAjaWZk ZWYgVEFSR0VUX05SX2xzdGF0NjQNCiAgICAgY2FzZSBUQVJHRVRfTlJfbHN0 YXQ2NDoNCiAgICAgICAgIHAgPSBsb2NrX3VzZXJfc3RyaW5nKGFyZzEpOw0K KyAgICAgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHAsMSxQQUdFX1JF QUQpICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8o bHN0YXQocGF0aChwKSwgJnN0KSk7DQogICAgICAgICB1bmxvY2tfdXNlcihw LCBhcmcxLCAwKTsNCiAgICAgICAgIGdvdG8gZG9fc3RhdDY0Ow0KQEAgLTQw OTAsNyArNDE2Nyw3IEBADQogI2lmZGVmIFRBUkdFVF9BUk0NCiAgICAgICAg ICAgICAgICAgaWYgKCgoQ1BVQVJNU3RhdGUgKiljcHVfZW52KS0+ZWFiaSkg ew0KICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9lYWJpX3N0 YXQ2NCAqdGFyZ2V0X3N0Ow0KLSAgICAgICAgICAgICAgICAgICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDEpOw0KKwkJICAgIGlmKCAo cmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3QsYXJn MixzaXplb2YoKnRhcmdldF9zdCksMSxQQUdFX1dSSVRFKSkgIT0gMCApIHJl dHVybiAtcmV0Ow0KICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhcmdl dF9zdCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfZWFiaV9zdGF0NjQpKTsN CiAgICAgICAgICAgICAgICAgICAgIC8qIHB1dF91c2VyIGlzIHByb2JhYmx5 IHdyb25nLiAgKi8NCiAgICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0 LnN0X2RldiwgJnRhcmdldF9zdC0+c3RfZGV2KTsNCkBAIC00MTE1LDcgKzQx OTIsNyBAQA0KICNlbmRpZg0KICAgICAgICAgICAgICAgICB7DQogICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCAqdGFyZ2V0X3N0 Ow0KLSAgICAgICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfc3QsIGFyZzIsIDEpOw0KKwkJICAgIGlmKCAocmV0PWxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3QsYXJnMixzaXplb2YoKnRhcmdl dF9zdCksMSxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9m KHN0cnVjdCB0YXJnZXRfc3RhdDY0KSk7DQogICAgICAgICAgICAgICAgICAg ICAvKiA/Pz8gcHV0X3VzZXIgaXMgcHJvYmFibHkgd3JvbmcuICAqLw0KICAg ICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfZGV2LCAmdGFyZ2V0 X3N0LT5zdF9kZXYpOw0KQEAgLTQ1ODEsNyArNDY1OCw3IEBADQogICAgICAg ICBzdHJ1Y3QgdGltZXNwZWMgdHM7DQogICAgICAgICByZXQgPSBnZXRfZXJy bm8oY2xvY2tfZ2V0dGltZShhcmcxLCAmdHMpKTsNCiAgICAgICAgIGlmICgh aXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0 X3RpbWVzcGVjKGFyZzIsICZ0cyk7DQorICAgICAgICAgICAgaWYoIChyZXQ9 aG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnRzKSkgIT0gMCApIHJl dHVybiByZXQ7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCiAgICAg fQ0KQEAgLTQ1OTIsNyArNDY2OSw3IEBADQogICAgICAgICBzdHJ1Y3QgdGlt ZXNwZWMgdHM7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8oY2xvY2tfZ2V0 cmVzKGFyZzEsICZ0cykpOw0KICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQp KSB7DQotICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJn MiwgJnRzKTsNCisgICAgICAgICAgICBpZiggKHJldD1ob3N0X3RvX3Rhcmdl dF90aW1lc3BlYyhhcmcyLCAmdHMpKSAhPSAwICkgcmV0dXJuIHJldDsNCiAg ICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KICAgICB9DQpJbmRleDogcWVt dS9saW51eC11c2VyL3FlbXUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K LS0tIHFlbXUub3JpZy9saW51eC11c2VyL3FlbXUuaAkyMDA3LTA2LTAzIDIw OjM2OjU0LjAwMDAwMDAwMCAtMDQwMA0KKysrIHFlbXUvbGludXgtdXNlci9x ZW11LmgJMjAwNy0wNi0wMyAyMDozNzoxMC4wMDAwMDAwMDAgLTA0MDANCkBA IC0yOTUsNiArMjk1LDE1IEBADQogI2RlZmluZSB1bmxvY2tfdXNlcl9zdHJ1 Y3QoaG9zdF9wdHIsIGd1ZXN0X2FkZHIsIGNvcHkpIFwNCiAgICAgdW5sb2Nr X3VzZXIoaG9zdF9wdHIsIGd1ZXN0X2FkZHIsIChjb3B5KSA/IHNpemVvZigq aG9zdF9wdHIpIDogMCkNCiANCitzdGF0aWMgaW5saW5lIGxvbmcgbG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3Qodm9pZCAqaG9zdF9hZGRyLCB0YXJnZXRf dWxvbmcgZ3Vlc3RfYWRkciwgbG9uZyBsZW4sIGludCBjb3B5LCBpbnQgcGdf YWNjZXNzKQ0KK3sNCisgICAgbG9uZyAqaGFkZHIsIHJldCA9IDA7DQorICAg IGhhZGRyID0gKGxvbmcgKilob3N0X2FkZHI7DQorICAgIGlmKCAocmV0PXBh Z2VfY2hlY2tfcmFuZ2UoZ3Vlc3RfYWRkcixsZW4scGdfYWNjZXNzKSkgIT0g MCApIHJldHVybiByZXQ7DQorICAgICpoYWRkciA9IChsb25nKWxvY2tfdXNl cihndWVzdF9hZGRyLCBsZW4sIGNvcHkpOw0KKyAgICByZXR1cm4gMDsNCit9 DQorDQogI2RlZmluZSB0Z2V0OChhZGRyKSBsZHViKGFkZHIpDQogI2RlZmlu ZSB0cHV0OChhZGRyLCB2YWwpIHN0YihhZGRyLCB2YWwpDQogI2RlZmluZSB0 Z2V0MTYoYWRkcikgbGR1dyhhZGRyKQ0K ---1463811327-1889484900-1180918065=:21792--