From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I6pXY-0001C3-Jr for qemu-devel@nongnu.org; Fri, 06 Jul 2007 11:16:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I6pXX-00017u-Lm for qemu-devel@nongnu.org; Fri, 06 Jul 2007 11:16:11 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I6pXW-00017M-Vk for qemu-devel@nongnu.org; Fri, 06 Jul 2007 11:16:11 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1I6pXV-0004Cs-AZ for qemu-devel@nongnu.org; Fri, 06 Jul 2007 11:16:10 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1I6pX9-0002Ue-00 for ; Fri, 06 Jul 2007 11:15:47 -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 s4yHFaTL-j2D for ; Fri, 6 Jul 2007 11:15:31 -0400 (EDT) Received: from h150.93.213.151.ip.alltel.net ([151.213.93.150] helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1I6pWr-0002OW-00 for ; Fri, 06 Jul 2007 11:15:29 -0400 Date: Fri, 6 Jul 2007 11:15:05 -0400 (EDT) From: Stuart Anderson Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-33015542-1183734905=:12799" Subject: [Qemu-devel] [PATCH] linux-user EFAULT implementation Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1463811327-33015542-1183734905=:12799 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Here is a refresh of the linux-user EFAULT patch vs todays cvs. This patch has now received a lot more runtime, and a couple of bug have been fixed that affected some of the socket APIs. The purpose of this patch is to detect bad pointers and return EFAULT instead of just crashing when the bad pointers are used by qemu. 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-33015542-1183734905=:12799 Content-Type: TEXT/x-diff; charset=US-ASCII; name=06_efault.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: efault patch Content-Disposition: attachment; filename=06_efault.patch SW5kZXg6IHFlbXUvZXhlYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gcWVtdS5vcmlnL2V4ZWMuYwkyMDA3LTA3LTA2IDA5OjQ2OjQ1LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvZXhlYy5jCTIwMDctMDctMDYgMDk6NDk6 MzcuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTg2Miw2ICsxODYyLDI5IEBADQog 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 MDctMDYgMDk6NDc6NDIuMDAwMDAwMDAwIC0wNDAwDQorKysgcWVtdS9jcHUt YWxsLmgJMjAwNy0wNy0wNiAwOTo0OTozNy4wMDAwMDAwMDAgLTA0MDANCkBA IC02OTEsNiArNjkxLDcgQEANCiBpbnQgcGFnZV9nZXRfZmxhZ3ModGFyZ2V0 X3Vsb25nIGFkZHJlc3MpOw0KIHZvaWQgcGFnZV9zZXRfZmxhZ3ModGFyZ2V0 X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgZW5kLCBpbnQgZmxhZ3MpOw0K IHZvaWQgcGFnZV91bnByb3RlY3RfcmFuZ2UodGFyZ2V0X3Vsb25nIGRhdGEs IHRhcmdldF91bG9uZyBkYXRhX3NpemUpOw0KK2ludCBwYWdlX2NoZWNrX3Jh bmdlKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50 IGZsYWdzKTsNCiANCiBDUFVTdGF0ZSAqY3B1X2NvcHkoQ1BVU3RhdGUgKmVu dik7DQogDQpJbmRleDogcWVtdS9saW51eC11c2VyL3N5c2NhbGwuYw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KLS0tIHFlbXUub3JpZy9saW51eC11c2Vy L3N5c2NhbGwuYwkyMDA3LTA3LTA2IDA5OjQ2OjQ1LjAwMDAwMDAwMCAtMDQw MA0KKysrIHFlbXUvbGludXgtdXNlci9zeXNjYWxsLmMJMjAwNy0wNy0wNiAw OTo0OTozNy4wMDAwMDAwMDAgLTA0MDANCkBAIC00MDQsMTIgKzQwNCwxMyBA QA0KICNlbmRpZg0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90 b190YXJnZXRfcnVzYWdlKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCitz dGF0aWMgaW5saW5lIGxvbmcgaG9zdF90b190YXJnZXRfcnVzYWdlKHRhcmdl dF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydXNhZ2UgKnJ1c2Fn ZSkNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdl dF9ydXNhZ2UgKnRhcmdldF9ydXNhZ2U7DQogDQotICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3J1c2FnZSwgdGFyZ2V0X2FkZHIsIDApOw0KKyAgICBp ZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3J1 c2FnZSx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9ydXNhZ2UpLDAsUEFH RV9XUklURSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgdGFyZ2V0X3J1 c2FnZS0+cnVfdXRpbWUudHZfc2VjID0gdHN3YXBsKHJ1c2FnZS0+cnVfdXRp bWUudHZfc2VjKTsNCiAgICAgdGFyZ2V0X3J1c2FnZS0+cnVfdXRpbWUudHZf dXNlYyA9IHRzd2FwbChydXNhZ2UtPnJ1X3V0aW1lLnR2X3VzZWMpOw0KICAg ICB0YXJnZXRfcnVzYWdlLT5ydV9zdGltZS50dl9zZWMgPSB0c3dhcGwocnVz YWdlLT5ydV9zdGltZS50dl9zZWMpOw0KQEAgLTQzMSwyNiArNDMyLDMyIEBA DQogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfcnVzYWdlLCB0YXJn ZXRfYWRkciwgMSk7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJn ZXRfdG9faG9zdF90aW1ldmFsKHN0cnVjdCB0aW1ldmFsICp0diwNCitzdGF0 aWMgaW5saW5lIGxvbmcgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbChzdHJ1Y3Qg dGltZXZhbCAqdHYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQ0KIHsNCisg ICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwg KnRhcmdldF90djsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRf dHYsIHRhcmdldF9hZGRyLCAxKTsNCisgICAgaWYoIChyZXQ9bG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF90dix0YXJnZXRfYWRkcixzaXpl b2YoKnRhcmdldF90diksMSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1y ZXQ7DQogICAgIHR2LT50dl9zZWMgPSB0c3dhcGwodGFyZ2V0X3R2LT50dl9z ZWMpOw0KICAgICB0di0+dHZfdXNlYyA9IHRzd2FwbCh0YXJnZXRfdHYtPnR2 X3VzZWMpOw0KICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3R2LCB0 YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJldHVybiByZXQ7DQogfQ0KIA0K LXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF90aW1ldmFsKHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCitzdGF0aWMgaW5saW5lIGxvbmcg aG9zdF90b190YXJnZXRfdGltZXZhbCh0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnR2KQ0KIHsNCisgICAgbG9uZyBy ZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwgKnRhcmdldF90 djsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfdHYsIHRhcmdl dF9hZGRyLCAwKTsNCisgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJnRhcmdldF90dix0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdl dF90diksMCxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICB0YXJnZXRfdHYtPnR2X3NlYyA9IHRzd2FwbCh0di0+dHZfc2VjKTsNCiAg ICAgdGFyZ2V0X3R2LT50dl91c2VjID0gdHN3YXBsKHR2LT50dl91c2VjKTsN CiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90diwgdGFyZ2V0X2Fk ZHIsIDEpOw0KKw0KKyAgICByZXR1cm4gcmV0Ow0KIH0NCiANCiANCkBAIC00 NjIsMjUgKzQ2OSwyNSBAQA0KICAgICBmZF9zZXQgKnJmZHNfcHRyLCAqd2Zk c19wdHIsICplZmRzX3B0cjsNCiAgICAgdGFyZ2V0X2xvbmcgKnRhcmdldF9y ZmRzLCAqdGFyZ2V0X3dmZHMsICp0YXJnZXRfZWZkczsNCiAgICAgc3RydWN0 IHRpbWV2YWwgdHYsICp0dl9wdHI7DQotICAgIGxvbmcgcmV0Ow0KKyAgICBs b25nIHJldCxyZXQyOw0KICAgICBpbnQgb2s7DQogDQogICAgIGlmIChyZmRf cCkgew0KLSAgICAgICAgdGFyZ2V0X3JmZHMgPSBsb2NrX3VzZXIocmZkX3As IHNpemVvZih0YXJnZXRfbG9uZykgKiBuLCAxKTsNCisJaWYoIChyZXQ9bG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9yZmRzLHJmZF9wLHNp emVvZih0YXJnZXRfbG9uZykqbiwxLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1 cm4gLXJldDsNCiAgICAgICAgIHJmZHNfcHRyID0gdGFyZ2V0X3RvX2hvc3Rf ZmRzKCZyZmRzLCB0YXJnZXRfcmZkcywgbik7DQogICAgIH0gZWxzZSB7DQog ICAgICAgICB0YXJnZXRfcmZkcyA9IE5VTEw7DQogICAgICAgICByZmRzX3B0 ciA9IE5VTEw7DQogICAgIH0NCiAgICAgaWYgKHdmZF9wKSB7DQotICAgICAg ICB0YXJnZXRfd2ZkcyA9IGxvY2tfdXNlcih3ZmRfcCwgc2l6ZW9mKHRhcmdl dF9sb25nKSAqIG4sIDEpOw0KKwlpZiggKHJldD1sb2NrX2FuZF9jaGVja191 c2VyX3N0cnVjdCgmdGFyZ2V0X3dmZHMsd2ZkX3Asc2l6ZW9mKHRhcmdldF9s b25nKSpuLDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICAgICAgd2Zkc19wdHIgPSB0YXJnZXRfdG9faG9zdF9mZHMoJndmZHMsIHRh cmdldF93ZmRzLCBuKTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHRhcmdl dF93ZmRzID0gTlVMTDsNCiAgICAgICAgIHdmZHNfcHRyID0gTlVMTDsNCiAg ICAgfQ0KICAgICBpZiAoZWZkX3ApIHsNCi0gICAgICAgIHRhcmdldF9lZmRz ID0gbG9ja191c2VyKGVmZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcpICogbiwg MSk7DQorCWlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0 YXJnZXRfZWZkcyxlZmRfcCxzaXplb2YodGFyZ2V0X2xvbmcpKm4sMSxQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICBlZmRzX3B0 ciA9IHRhcmdldF90b19ob3N0X2ZkcygmZWZkcywgdGFyZ2V0X2VmZHMsIG4p Ow0KICAgICB9IGVsc2Ugew0KICAgICAgICAgdGFyZ2V0X2VmZHMgPSBOVUxM Ow0KQEAgLTQ4OCw3ICs0OTUsNyBAQA0KICAgICB9DQogICAgICAgICAgICAg DQogICAgIGlmICh0YXJnZXRfdHYpIHsNCi0gICAgICAgIHRhcmdldF90b19o b3N0X3RpbWV2YWwoJnR2LCB0YXJnZXRfdHYpOw0KKyAgICAgICAgaWYoIChy ZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmdHYsIHRhcmdldF90dikpICE9 IDAgKSByZXR1cm4gcmV0Ow0KICAgICAgICAgdHZfcHRyID0gJnR2Ow0KICAg ICB9IGVsc2Ugew0KICAgICAgICAgdHZfcHRyID0gTlVMTDsNCkBAIC01MDIs NyArNTA5LDcgQEANCiAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X2Zkcyh0YXJn ZXRfZWZkcywgZWZkc19wdHIsIG4pOw0KIA0KICAgICAgICAgaWYgKHRhcmdl dF90dikgew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwo dGFyZ2V0X3R2LCAmdHYpOw0KKyAgICAgICAgICAgIGlmKCAocmV0Mj1ob3N0 X3RvX3RhcmdldF90aW1ldmFsKHRhcmdldF90diwgJnR2KSkgIT0gMCApIHJl dHVybiByZXQyOw0KICAgICAgICAgfQ0KICAgICB9DQogICAgIGlmICh0YXJn ZXRfcmZkcykNCkBAIC01MTUsMjggKzUyMiwzNCBAQA0KICAgICByZXR1cm4g cmV0Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hv c3Rfc29ja2FkZHIoc3RydWN0IHNvY2thZGRyICphZGRyLA0KK3N0YXRpYyBp bmxpbmUgbG9uZyB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihzdHJ1Y3Qgc29j a2FkZHIgKmFkZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xl bl90IGxlbikNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc29ja2xlbl90IGxlbiwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQor ICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdldF9zb2NrYWRk ciAqdGFyZ2V0X3NhZGRyOw0KIA0KLSAgICB0YXJnZXRfc2FkZHIgPSBsb2Nr X3VzZXIodGFyZ2V0X2FkZHIsIGxlbiwgMSk7DQorICAgIGlmKCAocmV0PWxv Y2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc2FkZHIsdGFyZ2V0 X2FkZHIsbGVuLDEscGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiByZXQ7DQog ICAgIG1lbWNweShhZGRyLCB0YXJnZXRfc2FkZHIsIGxlbik7DQogICAgIGFk ZHItPnNhX2ZhbWlseSA9IHRzd2FwMTYodGFyZ2V0X3NhZGRyLT5zYV9mYW1p bHkpOw0KICAgICB1bmxvY2tfdXNlcih0YXJnZXRfc2FkZHIsIHRhcmdldF9h ZGRyLCAwKTsNCisgICAgcmV0dXJuIHJldDsNCiB9DQogDQotc3RhdGljIGlu bGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciwNCitzdGF0aWMgaW5saW5lIGxvbmcgaG9zdF90b190 YXJnZXRfc29ja2FkZHIodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgc29ja2FkZHIgKmFkZHIsDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4pDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBs ZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBwZ19hY2Nlc3MpDQogew0KKyAgICBsb25nIHJldCA9IDA7DQog ICAgIHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKnRhcmdldF9zYWRkcjsNCiAN Ci0gICAgdGFyZ2V0X3NhZGRyID0gbG9ja191c2VyKHRhcmdldF9hZGRyLCBs ZW4sIDApOw0KKyAgICBpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmdGFyZ2V0X3NhZGRyLHRhcmdldF9hZGRyLGxlbiwxLHBnX2FjY2Vz cykpICE9IDAgKSByZXR1cm4gcmV0Ow0KICAgICBtZW1jcHkodGFyZ2V0X3Nh ZGRyLCBhZGRyLCBsZW4pOw0KICAgICB0YXJnZXRfc2FkZHItPnNhX2ZhbWls eSA9IHRzd2FwMTYoYWRkci0+c2FfZmFtaWx5KTsNCiAgICAgdW5sb2NrX3Vz ZXIodGFyZ2V0X3NhZGRyLCB0YXJnZXRfYWRkciwgbGVuKTsNCisgICAgcmV0 dXJuIHJldDsNCiB9DQogDQogLyogPz8/IFNob3VsZCB0aGlzIGFsc28gc3dh cCBtc2doLT5uYW1lPyAgKi8NCkBAIC04OTcsMTggKzkxMCwyMCBAQA0KIHN0 YXRpYyBsb25nIGRvX2JpbmQoaW50IHNvY2tmZCwgdGFyZ2V0X3Vsb25nIHRh cmdldF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGFk ZHJsZW4pDQogew0KKyAgICBsb25nIHJldCA9IDA7DQogICAgIHZvaWQgKmFk ZHIgPSBhbGxvY2EoYWRkcmxlbik7DQogICAgIA0KLSAgICB0YXJnZXRfdG9f aG9zdF9zb2NrYWRkcihhZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxlbik7DQor ICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3NvY2thZGRyKGFkZHIsIHRh cmdldF9hZGRyLCBhZGRybGVuLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4g LXJldDsNCiAgICAgcmV0dXJuIGdldF9lcnJubyhiaW5kKHNvY2tmZCwgYWRk ciwgYWRkcmxlbikpOw0KIH0NCiANCiBzdGF0aWMgbG9uZyBkb19jb25uZWN0 KGludCBzb2NrZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAg ICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuKQ0KIHsNCisgICAg bG9uZyByZXQgPSAwOw0KICAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJs ZW4pOw0KICAgICANCi0gICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRk ciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4pOw0KKyAgICBpZiggKHJldD10YXJn ZXRfdG9faG9zdF9zb2NrYWRkcihhZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxl bixQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIHJldHVy biBnZXRfZXJybm8oY29ubmVjdChzb2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsN CiB9DQogDQpAQCAtOTIyLDEyICs5MzcsMjMgQEANCiAgICAgc3RydWN0IGlv dmVjICp2ZWM7DQogICAgIHRhcmdldF91bG9uZyB0YXJnZXRfdmVjOw0KIA0K LSAgICBsb2NrX3VzZXJfc3RydWN0KG1zZ3AsIHRhcmdldF9tc2csIDEpOw0K KyAgICBpZiggc2VuZCApIHsNCisgICAgICAgaWYoIChyZXQ9bG9ja19hbmRf Y2hlY2tfdXNlcl9zdHJ1Y3QoJm1zZ3AsdGFyZ2V0X21zZyxzaXplb2YoKm1z Z3ApLDEsDQorCQlQQUdFX1JFQUQpKSAhPSAwICApIHJldHVybiAtcmV0Ow0K KyAgICB9IGVsc2Ugew0KKyAgICAgICBpZiggKHJldD1sb2NrX2FuZF9jaGVj a191c2VyX3N0cnVjdCgmbXNncCx0YXJnZXRfbXNnLHNpemVvZigqbXNncCks MSwNCisJCVBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQorICAg IH0NCiAgICAgaWYgKG1zZ3AtPm1zZ19uYW1lKSB7DQogICAgICAgICBtc2cu bXNnX25hbWVsZW4gPSB0c3dhcDMyKG1zZ3AtPm1zZ19uYW1lbGVuKTsNCiAg ICAgICAgIG1zZy5tc2dfbmFtZSA9IGFsbG9jYShtc2cubXNnX25hbWVsZW4p Ow0KLSAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIobXNnLm1zZ19u YW1lLCB0c3dhcGwobXNncC0+bXNnX25hbWUpLA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXNnLm1zZ19uYW1lbGVuKTsNCisgICAgICAg IGlmKCBzZW5kICkgew0KKyAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9f aG9zdF9zb2NrYWRkcihtc2cubXNnX25hbWUsIHRzd2FwbChtc2dwLT5tc2df bmFtZSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cu bXNnX25hbWVsZW4sUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0K KyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgaWYoIChyZXQ9dGFyZ2V0 X3RvX2hvc3Rfc29ja2FkZHIobXNnLm1zZ19uYW1lLCB0c3dhcGwobXNncC0+ bXNnX25hbWUpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bXNnLm1zZ19uYW1lbGVuLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1y ZXQ7DQorCX0NCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIG1zZy5tc2dfbmFt ZSA9IE5VTEw7DQogICAgICAgICBtc2cubXNnX25hbWVsZW4gPSAwOw0KQEAg LTk1OCwxMyArOTg0LDE2IEBADQogc3RhdGljIGxvbmcgZG9fYWNjZXB0KGlu dCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pDQogew0K LSAgICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxl bik7DQorICAgIHNvY2tsZW5fdCBhZGRybGVuOw0KICAgICB2b2lkICphZGRy ID0gYWxsb2NhKGFkZHJsZW4pOw0KLSAgICBsb25nIHJldDsNCisgICAgbG9u ZyByZXQscmV0MjsNCisNCisgICAgaWYoIChyZXQyPXBhZ2VfY2hlY2tfcmFu Z2UodGFyZ2V0X2FkZHJsZW4sc2l6ZW9mKHNvY2tsZW5fdCksUEFHRV9XUklU RSkpICE9IDAgKSByZXR1cm4gLUVJTlZBTDsNCisgICAgYWRkcmxlbiA9IHRn ZXQzMih0YXJnZXRfYWRkcmxlbik7DQogDQogICAgIHJldCA9IGdldF9lcnJu byhhY2NlcHQoZmQsIGFkZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNf ZXJyb3IocmV0KSkgew0KLSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2Fk ZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pOw0KKyAgICAgICAgaWYo IChyZXQyPWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBh ZGRyLCBhZGRybGVuLCBQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0 MjsNCiAgICAgICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxlbik7 DQogICAgIH0NCiAgICAgcmV0dXJuIHJldDsNCkBAIC05NzMsMTMgKzEwMDIs MTggQEANCiBzdGF0aWMgbG9uZyBkb19nZXRwZWVybmFtZShpbnQgZmQsIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pDQogew0KLSAg ICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7 DQotICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxlbik7DQotICAgIGxv bmcgcmV0Ow0KKyAgICBzb2NrbGVuX3QgYWRkcmxlbjsNCisgICAgdm9pZCAq YWRkcjsNCisgICAgbG9uZyByZXQscmV0MjsNCisNCisgICAgaWYoIChyZXQ9 cGFnZV9jaGVja19yYW5nZSh0YXJnZXRfYWRkcmxlbixzaXplb2Yoc29ja2xl bl90KSxQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQorICAgIGFk ZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0KKyAgICBhZGRyID0g YWxsb2NhKGFkZHJsZW4pOw0KIA0KICAgICByZXQgPSBnZXRfZXJybm8oZ2V0 cGVlcm5hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNf ZXJyb3IocmV0KSkgew0KLSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2Fk ZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pOw0KKyAgICAgICAgaWYo IChyZXQyPWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBh ZGRyLCBhZGRybGVuLCBQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0 MjsNCisgICAgICAgIGlmKCAocmV0Mj1wYWdlX2NoZWNrX3JhbmdlKHRhcmdl dF9hZGRybGVuLHNpemVvZihzb2NrbGVuX3QpLFBBR0VfV1JJVEUpKSAhPSAw ICkgcmV0dXJuIC1yZXQyOw0KICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRy bGVuLCBhZGRybGVuKTsNCiAgICAgfQ0KICAgICByZXR1cm4gcmV0Ow0KQEAg LTk4OCwxMyArMTAyMiwxNyBAQA0KIHN0YXRpYyBsb25nIGRvX2dldHNvY2tu YW1lKGludCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRk cmxlbikNCiB7DQotICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldDMyKHRh cmdldF9hZGRybGVuKTsNCi0gICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRy bGVuKTsNCi0gICAgbG9uZyByZXQ7DQorICAgIHNvY2tsZW5fdCBhZGRybGVu Ow0KKyAgICB2b2lkICphZGRyOw0KKyAgICBsb25nIHJldCxyZXQyOw0KKw0K KyAgICBpZiggKHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdldF9hZGRybGVu LHNpemVvZihzb2NrbGVuX3QpLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJu IC1yZXQ7DQorICAgIGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4p Ow0KKyAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KIA0KICAgICByZXQg PSBnZXRfZXJybm8oZ2V0c29ja25hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7 DQogICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAgaG9zdF90 b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4p Ow0KKyAgICAgICAgaWYoIChyZXQyPWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRy KHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuLCBQQUdFX1dSSVRFKSkgKSBy ZXR1cm4gLXJldDI7DQogICAgICAgICB0cHV0MzIodGFyZ2V0X2FkZHJsZW4s IGFkZHJsZW4pOw0KICAgICB9DQogICAgIHJldHVybiByZXQ7DQpAQCAtMTAy MSwxMCArMTA1OSwxMCBAQA0KICAgICB2b2lkICpob3N0X21zZzsNCiAgICAg bG9uZyByZXQ7DQogDQotICAgIGhvc3RfbXNnID0gbG9ja191c2VyKG1zZywg bGVuLCAxKTsNCisgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9z dHJ1Y3QoJmhvc3RfbXNnLG1zZyxsZW4sMSxQQUdFX1JFQUQpKSAhPSAwICkg cmV0dXJuIC1yZXQ7DQogICAgIGlmICh0YXJnZXRfYWRkcikgew0KICAgICAg ICAgYWRkciA9IGFsbG9jYShhZGRybGVuKTsNCi0gICAgICAgIHRhcmdldF90 b19ob3N0X3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKTsN CisgICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3NvY2thZGRyKGFk ZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuLCBQQUdFX1JFQUQpKSAhPSAwICkg cmV0dXJuIC1yZXQ7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VuZHRv KGZkLCBob3N0X21zZywgbGVuLCBmbGFncywgYWRkciwgYWRkcmxlbikpOw0K ICAgICB9IGVsc2Ugew0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbmQo ZmQsIGhvc3RfbXNnLCBsZW4sIGZsYWdzKSk7DQpAQCAtMTAzOSw5ICsxMDc3 LDkgQEANCiAgICAgc29ja2xlbl90IGFkZHJsZW47DQogICAgIHZvaWQgKmFk ZHI7DQogICAgIHZvaWQgKmhvc3RfbXNnOw0KLSAgICBsb25nIHJldDsNCisg ICAgbG9uZyByZXQscmV0MjsNCiANCi0gICAgaG9zdF9tc2cgPSBsb2NrX3Vz ZXIobXNnLCBsZW4sIDApOw0KKyAgICBpZiggKHJldDI9bG9ja19hbmRfY2hl Y2tfdXNlcl9zdHJ1Y3QoJmhvc3RfbXNnLG1zZyxsZW4sMCxQQUdFX1dSSVRF KSkgIT0gMCApIHJldHVybiAtcmV0MjsNCiAgICAgaWYgKHRhcmdldF9hZGRy KSB7DQogICAgICAgICBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVu KTsNCiAgICAgICAgIGFkZHIgPSBhbGxvY2EoYWRkcmxlbik7DQpAQCAtMTA1 Miw3ICsxMDkwLDcgQEANCiAgICAgfQ0KICAgICBpZiAoIWlzX2Vycm9yKHJl dCkpIHsNCiAgICAgICAgIGlmICh0YXJnZXRfYWRkcikgew0KLSAgICAgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRy LCBhZGRybGVuKTsNCisgICAgICAgICAgICBpZiggKHJldDI9aG9zdF90b190 YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4sIFBB R0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1yZXQyOw0KICAgICAgICAgICAg IHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxlbik7DQogICAgICAgICB9 DQogICAgICAgICB1bmxvY2tfdXNlcihob3N0X21zZywgbXNnLCBsZW4pOw0K QEAgLTEyNTksMTMgKzEyOTcsMTUgQEANCiAgIHRhcmdldF91bG9uZyBfX3Vu dXNlZDQ7DQogfTsNCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3Rv X2hvc3RfaXBjX3Blcm0oc3RydWN0IGlwY19wZXJtICpob3N0X2lwLA0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQorc3RhdGljIGlubGluZSBsb25nIHRh cmdldF90b19ob3N0X2lwY19wZXJtKHN0cnVjdCBpcGNfcGVybSAqaG9zdF9p cCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNjZXNzKQ0K IHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X2lw Y19wZXJtICp0YXJnZXRfaXA7DQogICAgIHN0cnVjdCB0YXJnZXRfc2VtaWRf ZHMgKnRhcmdldF9zZDsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfc2QsIHRhcmdldF9hZGRyLCAxKTsNCisgICAgaWYoIChyZXQ9bG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9zZCx0YXJnZXRfYWRkcixz aXplb2YoKnRhcmdldF9zZCksMSxwZ19hY2Nlc3MpKSApIHJldHVybiAtcmV0 Ow0KICAgICB0YXJnZXRfaXA9Jih0YXJnZXRfc2QtPnNlbV9wZXJtKTsNCiAg ICAgaG9zdF9pcC0+X19rZXkgPSB0c3dhcGwodGFyZ2V0X2lwLT5fX2tleSk7 DQogICAgIGhvc3RfaXAtPnVpZCA9IHRzd2FwbCh0YXJnZXRfaXAtPnVpZCk7 DQpAQCAtMTI3NCwxNSArMTMxNCwxOSBAQA0KICAgICBob3N0X2lwLT5jZ2lk ID0gdHN3YXBsKHRhcmdldF9pcC0+Y2dpZCk7DQogICAgIGhvc3RfaXAtPm1v ZGUgPSB0c3dhcGwodGFyZ2V0X2lwLT5tb2RlKTsNCiAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDApOw0KKw0KKyAg ICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9z dF90b190YXJnZXRfaXBjX3Blcm0odGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRy LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaXBjX3Blcm0gKmhvc3RfaXApDQorc3RhdGljIGlubGluZSBs b25nIGhvc3RfdG9fdGFyZ2V0X2lwY19wZXJtKHRhcmdldF91bG9uZyB0YXJn ZXRfYWRkciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGlwY19wZXJtICpob3N0X2lwLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNj ZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFy Z2V0X2lwY19wZXJtICp0YXJnZXRfaXA7DQogICAgIHN0cnVjdCB0YXJnZXRf c2VtaWRfZHMgKnRhcmdldF9zZDsNCiANCi0gICAgbG9ja191c2VyX3N0cnVj dCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsNCisgICAgaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9zZCx0YXJnZXRf YWRkcixzaXplb2YoKnRhcmdldF9zZCksMCxwZ19hY2Nlc3MpKSApIHJldHVy biAtcmV0Ow0KICAgICB0YXJnZXRfaXAgPSAmKHRhcmdldF9zZC0+c2VtX3Bl cm0pOw0KICAgICB0YXJnZXRfaXAtPl9fa2V5ID0gdHN3YXBsKGhvc3RfaXAt Pl9fa2V5KTsNCiAgICAgdGFyZ2V0X2lwLT51aWQgPSB0c3dhcGwoaG9zdF9p cC0+dWlkKTsNCkBAIC0xMjkxLDMyICsxMzM1LDQyIEBADQogICAgIHRhcmdl dF9pcC0+Y2dpZCA9IHRzd2FwbChob3N0X2lwLT5jZ2lkKTsNCiAgICAgdGFy Z2V0X2lwLT5tb2RlID0gdHN3YXBsKGhvc3RfaXAtPm1vZGUpOw0KICAgICB1 bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMSk7 DQorDQorICAgIHJldHVybiByZXQ7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUg dm9pZCB0YXJnZXRfdG9faG9zdF9zZW1pZF9kcyhzdHJ1Y3Qgc2VtaWRfZHMg Kmhvc3Rfc2QsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQ0KK3N0YXRpYyBp bmxpbmUgbG9uZyB0YXJnZXRfdG9faG9zdF9zZW1pZF9kcyhzdHJ1Y3Qgc2Vt aWRfZHMgKmhvc3Rfc2QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBw Z19hY2Nlc3MpDQogew0KKyAgICBsb25nIHJldCA9IDA7DQogICAgIHN0cnVj dCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsNCiANCi0gICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAxKTsNCi0gICAg dGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oJihob3N0X3NkLT5zZW1fcGVybSks dGFyZ2V0X2FkZHIpOw0KKyAgICBpZiggKHJldD1sb2NrX2FuZF9jaGVja191 c2VyX3N0cnVjdCgmdGFyZ2V0X3NkLHRhcmdldF9hZGRyLHNpemVvZigqdGFy Z2V0X3NkKSwxLHBnX2FjY2VzcykpICE9IDAgKSByZXR1cm4gLXJldDsNCisg ICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oJihob3N0X3Nk LT5zZW1fcGVybSksdGFyZ2V0X2FkZHIscGdfYWNjZXNzKSkgIT0gMCApIHJl dHVybiByZXQ7DQogICAgIGhvc3Rfc2QtPnNlbV9uc2VtcyA9IHRzd2FwbCh0 YXJnZXRfc2QtPnNlbV9uc2Vtcyk7DQogICAgIGhvc3Rfc2QtPnNlbV9vdGlt ZSA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9vdGltZSk7DQogICAgIGhvc3Rf c2QtPnNlbV9jdGltZSA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9jdGltZSk7 DQogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9h ZGRyLCAwKTsNCisNCisgICAgcmV0dXJuIHJldDsNCiB9DQogDQotc3RhdGlj IGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbWlkX2RzKHRhcmdldF91 bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpob3N0X3NkKQ0K K3N0YXRpYyBpbmxpbmUgbG9uZyBob3N0X3RvX3RhcmdldF9zZW1pZF9kcyh0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqaG9z dF9zZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsN CiAgICAgc3RydWN0IHRhcmdldF9zZW1pZF9kcyAqdGFyZ2V0X3NkOw0KIA0K LSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIs IDApOw0KLSAgICBob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRk ciwmKGhvc3Rfc2QtPnNlbV9wZXJtKSk7DQorICAgIGlmKCAocmV0PWxvY2tf YW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc2QsdGFyZ2V0X2FkZHIs c2l6ZW9mKCp0YXJnZXRfc2QpLDAscGdfYWNjZXNzKSkgIT0gMCApIHJldHVy biAtcmV0Ow0KKyAgICBpZiggKHJldD1ob3N0X3RvX3RhcmdldF9pcGNfcGVy bSh0YXJnZXRfYWRkciwmKGhvc3Rfc2QtPnNlbV9wZXJtKSxwZ19hY2Nlc3Mp KSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgdGFyZ2V0X3NkLT5zZW1fbnNl bXMgPSB0c3dhcGwoaG9zdF9zZC0+c2VtX25zZW1zKTsNCiAgICAgdGFyZ2V0 X3NkLT5zZW1fb3RpbWUgPSB0c3dhcGwoaG9zdF9zZC0+c2VtX290aW1lKTsN CiAgICAgdGFyZ2V0X3NkLT5zZW1fY3RpbWUgPSB0c3dhcGwoaG9zdF9zZC0+ c2VtX2N0aW1lKTsNCiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9z ZCwgdGFyZ2V0X2FkZHIsIDEpOw0KKw0KKyAgICByZXR1cm4gcmV0Ow0KIH0N CiANCiB1bmlvbiBzZW11biB7DQpAQCAtMTMzMSw2NyArMTM4NSw3NSBAQA0K IAl1bnNpZ25lZCBzaG9ydCBpbnQgKmFycmF5Ow0KIH07DQogDQotc3RhdGlj IGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3NlbXVuKHVuc2lnbmVkIGxv bmcgY21kLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyB0YXJnZXRfdG9faG9zdF9z ZW11bih1bnNpZ25lZCBsb25nIGNtZCwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5pb24gc2VtdW4gKmhvc3Rfc3UsDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpkcykNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNl bWlkX2RzICpkcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQorICAgIGxvbmcgcmV0ID0g MDsNCiAgICAgdW5pb24gdGFyZ2V0X3NlbXVuICp0YXJnZXRfc3U7DQogDQog ICAgIHN3aXRjaCggY21kICkgew0KIAljYXNlIElQQ19TVEFUOg0KIAljYXNl IElQQ19TRVQ6DQotICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdl dF9zdSwgdGFyZ2V0X2FkZHIsIDEpOw0KLQkgICB0YXJnZXRfdG9faG9zdF9z ZW1pZF9kcyhkcyx0YXJnZXRfc3UtPmJ1Zik7DQorCSAgIGlmKCAocmV0PWxv Y2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3UsdGFyZ2V0X2Fk ZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDEscGdfYWNjZXNzKSkgIT0gMCApIHJl dHVybiAtcmV0Ow0KKwkgICBpZiggKHJldD10YXJnZXRfdG9faG9zdF9zZW1p ZF9kcyhkcyx0YXJnZXRfc3UtPmJ1ZiwgcGdfYWNjZXNzKSkgIT0gMCApIHJl dHVybiAtcmV0Ow0KIAkgICBob3N0X3N1LT5idWYgPSBkczsNCiAgICAgICAg ICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRy LCAwKTsNCiAJICAgYnJlYWs7DQogCWNhc2UgR0VUVkFMOg0KIAljYXNlIFNF VFZBTDoNCi0gICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1 LCB0YXJnZXRfYWRkciwgMSk7DQorCSAgIGlmKCAocmV0PWxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3UsdGFyZ2V0X2FkZHIsc2l6ZW9m KCp0YXJnZXRfc3UpLDEscGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiAtcmV0 Ow0KIAkgICBob3N0X3N1LT52YWwgPSB0c3dhcGwodGFyZ2V0X3N1LT52YWwp Ow0KICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwg dGFyZ2V0X2FkZHIsIDApOw0KIAkgICBicmVhazsNCiAJY2FzZSBHRVRBTEw6 DQogCWNhc2UgU0VUQUxMOg0KLSAgICAgICAgICAgbG9ja191c2VyX3N0cnVj dCh0YXJnZXRfc3UsIHRhcmdldF9hZGRyLCAxKTsNCisJICAgaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9zdSx0YXJnZXRf YWRkcixzaXplb2YoKnRhcmdldF9zdSksMSxwZ19hY2Nlc3MpKSAhPSAwICkg cmV0dXJuIC1yZXQ7DQogCSAgICpob3N0X3N1LT5hcnJheSA9IHRzd2FwMTYo KnRhcmdldF9zdS0+YXJyYXkpOw0KICAgICAgICAgICAgdW5sb2NrX3VzZXJf c3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KIAkgICBicmVh azsNCiAJZGVmYXVsdDoNCiAgICAgICAgICAgIGdlbXVfbG9nKCJzZW11biBv cGVyYXRpb24gbm90IGZ1bGx5IHN1cHBvcnRlZDogJWRcbiIsIChpbnQpY21k KTsNCiAgICAgfQ0KKw0KKyAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0 aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfc2VtdW4odW5zaWduZWQg bG9uZyBjbWQsDQorc3RhdGljIGlubGluZSBsb25nIGhvc3RfdG9fdGFyZ2V0 X3NlbXVuKHVuc2lnbmVkIGxvbmcgY21kLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuaW9uIHNlbXVuICpob3N0X3N1LA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmRzKQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2VtaWRfZHMgKmRzLA0KKwkJCQkJaW50IHBnX2FjY2VzcykNCiB7DQorICAg IGxvbmcgcmV0ID0gMDsNCiAgICAgdW5pb24gdGFyZ2V0X3NlbXVuICp0YXJn ZXRfc3U7DQogDQogICAgIHN3aXRjaCggY21kICkgew0KIAljYXNlIElQQ19T VEFUOg0KIAljYXNlIElQQ19TRVQ6DQotICAgICAgICAgICBsb2NrX3VzZXJf c3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KLQkgICBob3N0 X3RvX3RhcmdldF9zZW1pZF9kcyh0YXJnZXRfc3UtPmJ1Zixkcyk7DQorCSAg IGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRf c3UsdGFyZ2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDAscGdfYWNjZXNz KSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKwkgICBpZiggKHJldD1ob3N0X3Rv X3RhcmdldF9zZW1pZF9kcyh0YXJnZXRfc3UtPmJ1ZixkcywgcGdfYWNjZXNz KSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDEpOw0KIAkgICBi cmVhazsNCiAJY2FzZSBHRVRWQUw6DQogCWNhc2UgU0VUVkFMOg0KLSAgICAg ICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9hZGRy LCAwKTsNCisJICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1 Y3QoJnRhcmdldF9zdSx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9zdSks MCxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogCSAgIHRhcmdl dF9zdS0+dmFsID0gdHN3YXBsKGhvc3Rfc3UtPnZhbCk7DQogICAgICAgICAg ICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwg MSk7DQogCSAgIGJyZWFrOw0KIAljYXNlIEdFVEFMTDoNCiAJY2FzZSBTRVRB TEw6DQotICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwg dGFyZ2V0X2FkZHIsIDApOw0KKwkgICBpZiggKHJldD1sb2NrX2FuZF9jaGVj a191c2VyX3N0cnVjdCgmdGFyZ2V0X3N1LHRhcmdldF9hZGRyLHNpemVvZigq dGFyZ2V0X3N1KSwwLHBnX2FjY2VzcykpICE9IDAgKSByZXR1cm4gLXJldDsN CiAJICAgKnRhcmdldF9zdS0+YXJyYXkgPSB0c3dhcDE2KCpob3N0X3N1LT5h cnJheSk7DQogICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0 X3N1LCB0YXJnZXRfYWRkciwgMSk7DQogCSAgIGJyZWFrOw0KICAgICAgICAg ZGVmYXVsdDoNCiAgICAgICAgICAgIGdlbXVfbG9nKCJzZW11biBvcGVyYXRp b24gbm90IGZ1bGx5IHN1cHBvcnRlZDogJWRcbiIsIChpbnQpY21kKTsNCiAg ICAgfQ0KKw0KKyAgICByZXR1cm4gcmV0Ow0KIH0NCiANCiBzdGF0aWMgaW5s aW5lIGxvbmcgZG9fc2VtY3RsKGxvbmcgZmlyc3QsIGxvbmcgc2Vjb25kLCBs b25nIHRoaXJkLCBsb25nIHB0cikNCkBAIC0xNDAzLDM0ICsxNDY1LDM0IEBA DQogDQogICAgIHN3aXRjaCggY21kICkgew0KIAljYXNlIEdFVFZBTDoNCi0g ICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFyZyxwdHIs JmRzYXJnKTsNCisgICAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9z dF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnLFBBR0VfV1JJVEUpKSAhPSAw ICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5v KHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFyZykpOw0KLSAgICAgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcp Ow0KKyAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIs JmFyZywmZHNhcmcsUEFHRV9XUklURSk7DQogICAgICAgICAgICAgYnJlYWs7 DQogCWNhc2UgU0VUVkFMOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlm KCAocmV0PXRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNh cmcsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAg ICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21k LCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihj bWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAgICAgICAgICBob3N0X3RvX3Rh cmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfUkVBRCk7DQog ICAgICAgICAgICAgYnJlYWs7DQogCWNhc2UgR0VUQUxMOg0KLSAgICAgICAg ICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcp Ow0KKyAgICAgICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3NlbXVu KGNtZCwmYXJnLHB0ciwmZHNhcmcsUEFHRV9XUklURSkpICE9IDAgKSByZXR1 cm4gLXJldDsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VtY3Rs KGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7DQotICAgICAgICAgICAgaG9z dF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJnLCZkc2FyZyk7DQorICAg ICAgICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJnLCZk c2FyZyxQQUdFX1dSSVRFKTsNCiAgICAgICAgICAgICBicmVhazsNCiAJY2Fz ZSBTRVRBTEw6DQotICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfc2VtdW4o Y21kLCZhcmcscHRyLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYoIChyZXQ9 dGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyxQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFyZykp Ow0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIs JmFyZywmZHNhcmcpOw0KKyAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3Nl bXVuKGNtZCxwdHIsJmFyZywmZHNhcmcsUEFHRV9SRUFEKTsNCiAgICAgICAg ICAgICBicmVhazsNCiAJY2FzZSBJUENfU1RBVDoNCi0gICAgICAgICAgICB0 YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnKTsNCisg ICAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9zdF9zZW11bihjbWQs JmFyZyxwdHIsJmRzYXJnLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIC1y ZXQ7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJz dCwgc2Vjb25kLCBjbWQsIGFyZykpOw0KLSAgICAgICAgICAgIGhvc3RfdG9f dGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcpOw0KKyAgICAgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcs UEFHRV9SRUFEKTsNCiAgICAgICAgICAgICBicmVhazsNCiAJY2FzZSBJUENf U0VUOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwm YXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCAocmV0PXRhcmdl dF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcsUEFHRV9SRUFE KSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgIHJldCA9IGdl dF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0g ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcs JmRzYXJnKTsNCisgICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihj bWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfUkVBRCk7DQogICAgICAgICAgICAg YnJlYWs7DQogICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgcmV0ID0gZ2V0 X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFyZykpOw0KQEAg LTE0NTcsMTMgKzE1MTksMTUgQEANCiAgIHRhcmdldF91bG9uZyBfX3VudXNl ZDU7DQogfTsNCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hv c3RfbXNxaWRfZHMoc3RydWN0IG1zcWlkX2RzICpob3N0X21kLA0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91 bG9uZyB0YXJnZXRfYWRkcikNCitzdGF0aWMgaW5saW5lIGxvbmcgdGFyZ2V0 X3RvX2hvc3RfbXNxaWRfZHMoc3RydWN0IG1zcWlkX2RzICpob3N0X21kLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNjZXNzKQ0KIHsNCisg ICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X21zcWlkX2Rz ICp0YXJnZXRfbWQ7DQogDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0 X21kLCB0YXJnZXRfYWRkciwgMSk7DQotICAgIHRhcmdldF90b19ob3N0X2lw Y19wZXJtKCYoaG9zdF9tZC0+bXNnX3Blcm0pLHRhcmdldF9hZGRyKTsNCisg ICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdl dF9tZCx0YXJnZXRfYWRkcixzaXplb2YoKnRhcmdldF9tZCksMSxwZ19hY2Nl c3MpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQorICAgIGlmKCAocmV0PXRhcmdl dF90b19ob3N0X2lwY19wZXJtKCYoaG9zdF9tZC0+bXNnX3Blcm0pLHRhcmdl dF9hZGRyLHBnX2FjY2VzcykpICE9IDAgKSByZXR1cm4gcmV0Ow0KICAgICBo b3N0X21kLT5tc2dfc3RpbWUgPSB0c3dhcGwodGFyZ2V0X21kLT5tc2dfc3Rp bWUpOw0KICAgICBob3N0X21kLT5tc2dfcnRpbWUgPSB0c3dhcGwodGFyZ2V0 X21kLT5tc2dfcnRpbWUpOw0KICAgICBob3N0X21kLT5tc2dfY3RpbWUgPSB0 c3dhcGwodGFyZ2V0X21kLT5tc2dfY3RpbWUpOw0KQEAgLTE0NzMsMTUgKzE1 MzcsMTggQEANCiAgICAgaG9zdF9tZC0+bXNnX2xzcGlkID0gdHN3YXBsKHRh cmdldF9tZC0+bXNnX2xzcGlkKTsNCiAgICAgaG9zdF9tZC0+bXNnX2xycGlk ID0gdHN3YXBsKHRhcmdldF9tZC0+bXNnX2xycGlkKTsNCiAgICAgdW5sb2Nr X3VzZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0X2FkZHIsIDApOw0KKyAg ICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9z dF90b190YXJnZXRfbXNxaWRfZHModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRy LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgbXNxaWRfZHMgKmhvc3RfbWQpDQorc3RhdGljIGlubGluZSBs b25nIGhvc3RfdG9fdGFyZ2V0X21zcWlkX2RzKHRhcmdldF91bG9uZyB0YXJn ZXRfYWRkciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgbXNxaWRfZHMgKmhvc3RfbWQsDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2Vz cykNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdl dF9tc3FpZF9kcyAqdGFyZ2V0X21kOw0KIA0KLSAgICBsb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF9tZCwgdGFyZ2V0X2FkZHIsIDApOw0KLSAgICBob3N0X3Rv X3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRkciwmKGhvc3RfbWQtPm1zZ19w ZXJtKSk7DQorICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3Ry dWN0KCZ0YXJnZXRfbWQsdGFyZ2V0X2FkZHIsc2l6ZW9mKCp0YXJnZXRfbWQp LDAscGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKyAgICBpZigg KHJldD1ob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRkciwmKGhv c3RfbWQtPm1zZ19wZXJtKSxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0dXJuIHJl dDsNCiAgICAgdGFyZ2V0X21kLT5tc2dfc3RpbWUgPSB0c3dhcGwoaG9zdF9t ZC0+bXNnX3N0aW1lKTsNCiAgICAgdGFyZ2V0X21kLT5tc2dfcnRpbWUgPSB0 c3dhcGwoaG9zdF9tZC0+bXNnX3J0aW1lKTsNCiAgICAgdGFyZ2V0X21kLT5t c2dfY3RpbWUgPSB0c3dhcGwoaG9zdF9tZC0+bXNnX2N0aW1lKTsNCkBAIC0x NDkxLDYgKzE1NTgsOCBAQA0KICAgICB0YXJnZXRfbWQtPm1zZ19sc3BpZCA9 IHRzd2FwbChob3N0X21kLT5tc2dfbHNwaWQpOw0KICAgICB0YXJnZXRfbWQt Pm1zZ19scnBpZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHJwaWQpOw0KICAg ICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwg MSk7DQorDQorICAgIHJldHVybiByZXQ7DQogfQ0KIA0KIHN0YXRpYyBpbmxp bmUgbG9uZyBkb19tc2djdGwobG9uZyBmaXJzdCwgbG9uZyBzZWNvbmQsIGxv bmcgcHRyKQ0KQEAgLTE1MDAsMTAgKzE1NjksMTUgQEANCiAgICAgbG9uZyBy ZXQgPSAwOw0KICAgICBzd2l0Y2goIGNtZCApIHsNCiAgICAgY2FzZSBJUENf U1RBVDoNCisgICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X21zcWlk X2RzKCZkc2FyZyxwdHIsUEFHRV9XUklURSkpICE9IDAgKSByZXR1cm4gLXJl dDsNCisgICAgICAgIHJldCA9IGdldF9lcnJubyhtc2djdGwoZmlyc3QsIGNt ZCwgJmRzYXJnKSk7DQorICAgICAgICBob3N0X3RvX3RhcmdldF9tc3FpZF9k cyhwdHIsJmRzYXJnLFBBR0VfV1JJVEUpOw0KKwlicmVhazsNCiAgICAgY2Fz ZSBJUENfU0VUOg0KLSAgICAgICAgdGFyZ2V0X3RvX2hvc3RfbXNxaWRfZHMo JmRzYXJnLHB0cik7DQorICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9z dF9tc3FpZF9kcygmZHNhcmcscHRyLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1 cm4gLXJldDsNCiAgICAgICAgIHJldCA9IGdldF9lcnJubyhtc2djdGwoZmly c3QsIGNtZCwgJmRzYXJnKSk7DQotICAgICAgICBob3N0X3RvX3RhcmdldF9t c3FpZF9kcyhwdHIsJmRzYXJnKTsNCisgICAgICAgIGhvc3RfdG9fdGFyZ2V0 X21zcWlkX2RzKHB0ciwmZHNhcmcsUEFHRV9XUklURSk7DQorCWJyZWFrOw0K ICAgICBkZWZhdWx0Og0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKG1zZ2N0 bChmaXJzdCwgY21kLCAmZHNhcmcpKTsNCiAgICAgfQ0KQEAgLTE1MjEsNyAr MTU5NSw3IEBADQogICAgIHN0cnVjdCBtc2didWYgKmhvc3RfbWI7DQogICAg IGxvbmcgcmV0ID0gMDsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfbWIsbXNncCwwKTsNCisgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tf dXNlcl9zdHJ1Y3QoJnRhcmdldF9tYixtc2dwLHNpemVvZihsb25nKSttc2dz eiwxLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgaG9z dF9tYiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9uZykpOw0KICAgICBob3N0 X21iLT5tdHlwZSA9IHRzd2FwbCh0YXJnZXRfbWItPm10eXBlKTsNCiAgICAg bWVtY3B5KGhvc3RfbWItPm10ZXh0LHRhcmdldF9tYi0+bXRleHQsbXNnc3op Ow0KQEAgLTE1MzgsNyArMTYxMiw3IEBADQogICAgIHN0cnVjdCBtc2didWYg Kmhvc3RfbWI7DQogICAgIGxvbmcgcmV0ID0gMDsNCiANCi0gICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfbWIsIG1zZ3AsIDApOw0KKyAgICBpZiggKHJl dD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X21iLG1zZ3As c2l6ZW9mKGxvbmcpK21zZ3N6LDAsUEFHRV9XUklURSkpICE9IDAgKSByZXR1 cm4gLXJldDsNCiAgICAgaG9zdF9tYiA9IG1hbGxvYyhtc2dzeitzaXplb2Yo bG9uZykpOw0KICAgICByZXQgPSBnZXRfZXJybm8obXNncmN2KG1zcWlkLCBo b3N0X21iLCBtc2dzeiwgMSwgbXNnZmxnKSk7DQogICAgIGlmIChyZXQgPiAw KQ0KQEAgLTIwMTgsNiArMjA5Miw3IEBADQogc3RhdGljIGludCB3cml0ZV9s ZHQoQ1BVWDg2U3RhdGUgKmVudiwgDQogICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIHB0ciwgdW5zaWduZWQgbG9uZyBieXRlY291bnQsIGlu dCBvbGRtb2RlKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1 Y3QgdGFyZ2V0X21vZGlmeV9sZHRfbGR0X3MgbGR0X2luZm87DQogICAgIHN0 cnVjdCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyAqdGFyZ2V0X2xkdF9pbmZv Ow0KICAgICBpbnQgc2VnXzMyYml0LCBjb250ZW50cywgcmVhZF9leGVjX29u bHksIGxpbWl0X2luX3BhZ2VzOw0KQEAgLTIwMjYsNyArMjEwMSw3IEBADQog DQogICAgIGlmIChieXRlY291bnQgIT0gc2l6ZW9mKGxkdF9pbmZvKSkNCiAg ICAgICAgIHJldHVybiAtRUlOVkFMOw0KLSAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF9sZHRfaW5mbywgcHRyLCAxKTsNCisgICAgaWYoIChyZXQ9bG9j a19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9sZHRfaW5mbyxwdHIs c2l6ZW9mKHN0cnVjdCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyksMSxQQUdF X1JFQUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogICAgIGxkdF9pbmZvLmVu dHJ5X251bWJlciA9IHRzd2FwMzIodGFyZ2V0X2xkdF9pbmZvLT5lbnRyeV9u dW1iZXIpOw0KICAgICBsZHRfaW5mby5iYXNlX2FkZHIgPSB0c3dhcGwodGFy Z2V0X2xkdF9pbmZvLT5iYXNlX2FkZHIpOw0KICAgICBsZHRfaW5mby5saW1p dCA9IHRzd2FwMzIodGFyZ2V0X2xkdF9pbmZvLT5saW1pdCk7DQpAQCAtMjIy NSw3ICsyMzAwLDcgQEANCiANCiAgICAgc3dpdGNoKGNtZCkgew0KICAgICBj YXNlIFRBUkdFVF9GX0dFVExLOg0KLSAgICAgICAgbG9ja191c2VyX3N0cnVj dCh0YXJnZXRfZmwsIGFyZywgMSk7DQorCWlmKCAocmV0PWxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3Qg dGFyZ2V0X2Zsb2NrKSwxLFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4gLXJl dDsNCiAgICAgICAgIGZsLmxfdHlwZSA9IHRzd2FwMTYodGFyZ2V0X2ZsLT5s X3R5cGUpOw0KICAgICAgICAgZmwubF93aGVuY2UgPSB0c3dhcDE2KHRhcmdl dF9mbC0+bF93aGVuY2UpOw0KICAgICAgICAgZmwubF9zdGFydCA9IHRzd2Fw bCh0YXJnZXRfZmwtPmxfc3RhcnQpOw0KQEAgLTIyMzQsNiArMjMwOSw3IEBA DQogICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X2ZsLCBhcmcs IDApOw0KICAgICAgICAgcmV0ID0gZmNudGwoZmQsIGNtZCwgJmZsKTsNCiAg ICAgICAgIGlmIChyZXQgPT0gMCkgew0KKwkgICAgaWYoIChyZXQ9bG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9mbCxhcmcsc2l6ZW9mKHN0 cnVjdCB0YXJnZXRfZmxvY2spLDAsUEFHRV9XUklURSkpICE9IDAgKSByZXR1 cm4gLXJldDsNCiAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdl dF9mbCwgYXJnLCAwKTsNCiAgICAgICAgICAgICB0YXJnZXRfZmwtPmxfdHlw ZSA9IHRzd2FwMTYoZmwubF90eXBlKTsNCiAgICAgICAgICAgICB0YXJnZXRf ZmwtPmxfd2hlbmNlID0gdHN3YXAxNihmbC5sX3doZW5jZSk7DQpAQCAtMjI0 Niw3ICsyMzIyLDcgQEANCiAgICAgICAgIA0KICAgICBjYXNlIFRBUkdFVF9G X1NFVExLOg0KICAgICBjYXNlIFRBUkdFVF9GX1NFVExLVzoNCi0gICAgICAg IGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X2ZsLCBhcmcsIDEpOw0KKwlpZigg KHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X2ZsLGFy ZyxzaXplb2Yoc3RydWN0IHRhcmdldF9mbG9jayksMSxQQUdFX1JFQUQpKSAh PSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICBmbC5sX3R5cGUgPSB0c3dh cDE2KHRhcmdldF9mbC0+bF90eXBlKTsNCiAgICAgICAgIGZsLmxfd2hlbmNl ID0gdHN3YXAxNih0YXJnZXRfZmwtPmxfd2hlbmNlKTsNCiAgICAgICAgIGZs Lmxfc3RhcnQgPSB0c3dhcGwodGFyZ2V0X2ZsLT5sX3N0YXJ0KTsNCkBAIC0y MjU3LDcgKzIzMzMsNyBAQA0KICAgICAgICAgYnJlYWs7DQogICAgICAgICAN CiAgICAgY2FzZSBUQVJHRVRfRl9HRVRMSzY0Og0KLSAgICAgICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAxKTsNCisJaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9mbDY0LGFyZyxz aXplb2Yoc3RydWN0IHRhcmdldF9mbG9jazY0KSwxLFBBR0VfUkVBRCkpICE9 IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgIGZsNjQubF90eXBlID0gdHN3 YXAxNih0YXJnZXRfZmw2NC0+bF90eXBlKSA+PiAxOw0KICAgICAgICAgZmw2 NC5sX3doZW5jZSA9IHRzd2FwMTYodGFyZ2V0X2ZsNjQtPmxfd2hlbmNlKTsN CiAgICAgICAgIGZsNjQubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmw2NC0+ bF9zdGFydCk7DQpAQCAtMjI2Niw3ICsyMzQyLDcgQEANCiAgICAgICAgIHVu bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAwKTsNCiAgICAg ICAgIHJldCA9IGZjbnRsKGZkLCBjbWQgPj4gMSwgJmZsNjQpOw0KICAgICAg ICAgaWYgKHJldCA9PSAwKSB7DQotICAgICAgICAgICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAwKTsNCisJICAgIGlmKCAocmV0PWxv Y2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfZmw2NCxhcmcsc2l6 ZW9mKHN0cnVjdCB0YXJnZXRfZmxvY2s2NCksMCxQQUdFX1dSSVRFKSkgIT0g MCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgIHRhcmdldF9mbDY0LT5s X3R5cGUgPSB0c3dhcDE2KGZsNjQubF90eXBlKSA+PiAxOw0KICAgICAgICAg ICAgIHRhcmdldF9mbDY0LT5sX3doZW5jZSA9IHRzd2FwMTYoZmw2NC5sX3do ZW5jZSk7DQogICAgICAgICAgICAgdGFyZ2V0X2ZsNjQtPmxfc3RhcnQgPSB0 c3dhcGwoZmw2NC5sX3N0YXJ0KTsNCkBAIC0yMjc3LDcgKzIzNTMsNyBAQA0K IAkJYnJlYWs7DQogICAgIGNhc2UgVEFSR0VUX0ZfU0VUTEs2NDoNCiAgICAg Y2FzZSBUQVJHRVRfRl9TRVRMS1c2NDoNCi0gICAgICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X2ZsNjQsIGFyZywgMSk7DQorCWlmKCAocmV0PWxvY2tf YW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfZmw2NCxhcmcsc2l6ZW9m KHN0cnVjdCB0YXJnZXRfZmxvY2s2NCksMSxQQUdFX1JFQUQpKSAhPSAwICkg cmV0dXJuIC1yZXQ7DQogICAgICAgICBmbDY0LmxfdHlwZSA9IHRzd2FwMTYo dGFyZ2V0X2ZsNjQtPmxfdHlwZSkgPj4gMTsNCiAgICAgICAgIGZsNjQubF93 aGVuY2UgPSB0c3dhcDE2KHRhcmdldF9mbDY0LT5sX3doZW5jZSk7DQogICAg ICAgICBmbDY0Lmxfc3RhcnQgPSB0c3dhcGwodGFyZ2V0X2ZsNjQtPmxfc3Rh cnQpOw0KQEAgLTI0MTksMjMgKzI0OTUsMjYgQEANCiB9DQogI2VuZGlmDQog DQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3RpbWVzcGVj KHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cywNCitzdGF0aWMgaW5saW5lIGxv bmcgdGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICpo b3N0X3RzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQogew0KKyAgICBs b25nIHJldCA9IDA7DQogICAgIHN0cnVjdCB0YXJnZXRfdGltZXNwZWMgKnRh cmdldF90czsNCiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfdHMs IHRhcmdldF9hZGRyLCAxKTsNCisgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hl Y2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF90cyx0YXJnZXRfYWRkcixzaXplb2Yo c3RydWN0IHRhcmdldF90aW1lc3BlYyksMSxQQUdFX1JFQUQpKSAhPSAwICkg cmV0dXJuIC1yZXQ7DQogICAgIGhvc3RfdHMtPnR2X3NlYyA9IHRzd2FwbCh0 YXJnZXRfdHMtPnR2X3NlYyk7DQogICAgIGhvc3RfdHMtPnR2X25zZWMgPSB0 c3dhcGwodGFyZ2V0X3RzLT50dl9uc2VjKTsNCiAgICAgdW5sb2NrX3VzZXJf c3RydWN0KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDApOw0KIH0NCiANCi1z dGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfdGltZXNwZWModGFy Z2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBo b3N0X3RvX3RhcmdldF90aW1lc3BlYyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cykNCiB7DQorICAgIGxvbmcg cmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdldF90aW1lc3BlYyAqdGFyZ2V0 X3RzOw0KIA0KICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF90cywgdGFy Z2V0X2FkZHIsIDApOw0KKyAgICBpZiggKHJldD1sb2NrX2FuZF9jaGVja191 c2VyX3N0cnVjdCgmdGFyZ2V0X3RzLHRhcmdldF9hZGRyLHNpemVvZihzdHJ1 Y3QgdGFyZ2V0X3RpbWVzcGVjKSwwLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0 dXJuIC1yZXQ7DQogICAgIHRhcmdldF90cy0+dHZfc2VjID0gdHN3YXBsKGhv c3RfdHMtPnR2X3NlYyk7DQogICAgIHRhcmdldF90cy0+dHZfbnNlYyA9IHRz d2FwbChob3N0X3RzLT50dl9uc2VjKTsNCiAgICAgdW5sb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDEpOw0KQEAgLTI0NDQsNyAr MjUyMyw3IEBADQogbG9uZyBkb19zeXNjYWxsKHZvaWQgKmNwdV9lbnYsIGlu dCBudW0sIGxvbmcgYXJnMSwgbG9uZyBhcmcyLCBsb25nIGFyZzMsIA0KICAg ICAgICAgICAgICAgICBsb25nIGFyZzQsIGxvbmcgYXJnNSwgbG9uZyBhcmc2 KQ0KIHsNCi0gICAgbG9uZyByZXQ7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAg ICAgc3RydWN0IHN0YXQgc3Q7DQogICAgIHN0cnVjdCBzdGF0ZnMgc3RmczsN CiAgICAgdm9pZCAqcDsNCkBAIC0yNjcxLDcgKzI3NTAsNyBAQA0KICAgICAg ICAgICAgIHN0cnVjdCB1dGltYnVmIHRidWYsICpob3N0X3RidWY7DQogICAg ICAgICAgICAgc3RydWN0IHRhcmdldF91dGltYnVmICp0YXJnZXRfdGJ1ZjsN CiAgICAgICAgICAgICBpZiAoYXJnMikgew0KLSAgICAgICAgICAgICAgICBs b2NrX3VzZXJfc3RydWN0KHRhcmdldF90YnVmLCBhcmcyLCAxKTsNCisJCWlm KCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfdGJ1 ZixhcmcyLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3V0aW1idWYpLDEsUEFHRV9S RUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgICAgICB0 YnVmLmFjdGltZSA9IHRzd2FwbCh0YXJnZXRfdGJ1Zi0+YWN0aW1lKTsNCiAg ICAgICAgICAgICAgICAgdGJ1Zi5tb2R0aW1lID0gdHN3YXBsKHRhcmdldF90 YnVmLT5tb2R0aW1lKTsNCiAgICAgICAgICAgICAgICAgdW5sb2NrX3VzZXJf c3RydWN0KHRhcmdldF90YnVmLCBhcmcyLCAwKTsNCkBAIC0yNjg5LDkgKzI3 NjgsOSBAQA0KICAgICAgICAgew0KICAgICAgICAgICAgIHN0cnVjdCB0aW1l dmFsICp0dnAsIHR2WzJdOw0KICAgICAgICAgICAgIGlmIChhcmcyKSB7DQot ICAgICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWV2YWwoJnR2WzBd LCBhcmcyKTsNCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3RfdGlt ZXZhbCgmdHZbMV0sDQotICAgICAgICAgICAgICAgICAgICBhcmcyICsgc2l6 ZW9mIChzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKTsNCisgICAgICAgICAgICAg ICAgaWYoIChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmdHZbMF0sIGFy ZzIpKSAhPSAwICkgcmV0dXJuIHJldDsNCisgICAgICAgICAgICAgICAgaWYo IChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmdHZbMV0sDQorICAgICAg ICAgICAgICAgICAgICBhcmcyICsgc2l6ZW9mIChzdHJ1Y3QgdGFyZ2V0X3Rp bWV2YWwpKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAgICAgICAgICAg IHR2cCA9IHR2Ow0KICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg ICAgICAgIHR2cCA9IE5VTEw7DQpAQCAtMjg2MCw3ICsyOTM5LDcgQEANCiAg ICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X29sZF9zaWdhY3Rpb24gKm9sZF9h Y3Q7DQogICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zaWdhY3Rpb24gYWN0 LCBvYWN0LCAqcGFjdDsNCiAgICAgICAgICAgICBpZiAoYXJnMikgew0KLSAg ICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KG9sZF9hY3QsIGFyZzIs IDEpOw0KKwkJaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3Qo Jm9sZF9hY3QsYXJnMixzaXplb2YoKm9sZF9hY3QpLDEsUEFHRV9SRUFEKSkg IT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgICAgICBhY3QuX3Nh X2hhbmRsZXIgPSBvbGRfYWN0LT5fc2FfaGFuZGxlcjsNCiAgICAgICAgICAg ICAgICAgdGFyZ2V0X3NpZ2luaXRzZXQoJmFjdC5zYV9tYXNrLCBvbGRfYWN0 LT5zYV9tYXNrKTsNCiAgICAgICAgICAgICAgICAgYWN0LnNhX2ZsYWdzID0g b2xkX2FjdC0+c2FfZmxhZ3M7DQpAQCAtMjg3Miw3ICsyOTUxLDcgQEANCiAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGRv X3NpZ2FjdGlvbihhcmcxLCBwYWN0LCAmb2FjdCkpOw0KICAgICAgICAgICAg IGlmICghaXNfZXJyb3IocmV0KSAmJiBhcmczKSB7DQotICAgICAgICAgICAg ICAgIGxvY2tfdXNlcl9zdHJ1Y3Qob2xkX2FjdCwgYXJnMywgMCk7DQorCQlp ZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmb2xkX2FjdCxh cmczLHNpemVvZigqb2xkX2FjdCksMCxQQUdFX1dSSVRFKSkgIT0gMCApIHJl dHVybiAtcmV0Ow0KICAgICAgICAgICAgICAgICBvbGRfYWN0LT5fc2FfaGFu ZGxlciA9IG9hY3QuX3NhX2hhbmRsZXI7DQogICAgICAgICAgICAgICAgIG9s ZF9hY3QtPnNhX21hc2sgPSBvYWN0LnNhX21hc2suc2lnWzBdOw0KICAgICAg ICAgICAgICAgICBvbGRfYWN0LT5zYV9mbGFncyA9IG9hY3Quc2FfZmxhZ3M7 DQpAQCAtMjg4Myw3ICsyOTYyLDcgQEANCiAJICAgIHN0cnVjdCB0YXJnZXRf c2lnYWN0aW9uIGFjdCwgb2FjdCwgKnBhY3QsICpvbGRfYWN0Ow0KIA0KIAkg ICAgaWYgKGFyZzIpIHsNCi0JCWxvY2tfdXNlcl9zdHJ1Y3Qob2xkX2FjdCwg YXJnMiwgMSk7DQorCQlpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmb2xkX2FjdCxhcmcyLHNpemVvZigqb2xkX2FjdCksMSxQQUdFX1JF QUQpKSAhPSAwICkgcmV0dXJuIC1yZXQ7DQogCQlhY3QuX3NhX2hhbmRsZXIg PSBvbGRfYWN0LT5fc2FfaGFuZGxlcjsNCiAJCXRhcmdldF9zaWdpbml0c2V0 KCZhY3Quc2FfbWFzaywgb2xkX2FjdC0+c2FfbWFzay5zaWdbMF0pOw0KIAkJ YWN0LnNhX2ZsYWdzID0gb2xkX2FjdC0+c2FfZmxhZ3M7DQpAQCAtMjg5Niw3 ICsyOTc1LDcgQEANCiAJICAgIHJldCA9IGdldF9lcnJubyhkb19zaWdhY3Rp b24oYXJnMSwgcGFjdCwgJm9hY3QpKTsNCiANCiAJICAgIGlmICghaXNfZXJy b3IocmV0KSAmJiBhcmczKSB7DQotCQlsb2NrX3VzZXJfc3RydWN0KG9sZF9h Y3QsIGFyZzMsIDApOw0KKwkJaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJm9sZF9hY3QsYXJnMyxzaXplb2YoKm9sZF9hY3QpLDAsUEFH RV9XUklURSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAJCW9sZF9hY3QtPl9z YV9oYW5kbGVyID0gb2FjdC5fc2FfaGFuZGxlcjsNCiAJCW9sZF9hY3QtPnNh X2ZsYWdzID0gb2FjdC5zYV9mbGFnczsNCiAJCW9sZF9hY3QtPnNhX21hc2su c2lnWzBdID0gb2FjdC5zYV9tYXNrLnNpZ1swXTsNCkBAIC0yOTE0LDEyICsy OTkzLDE0IEBADQogICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zaWdhY3Rp b24gKmFjdDsNCiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlv biAqb2FjdDsNCiANCi0gICAgICAgICAgICBpZiAoYXJnMikNCi0gICAgICAg ICAgICAgICAgbG9ja191c2VyX3N0cnVjdChhY3QsIGFyZzIsIDEpOw0KKyAg ICAgICAgICAgIGlmIChhcmcyKSB7DQorCQlpZiggKHJldD1sb2NrX2FuZF9j aGVja191c2VyX3N0cnVjdCgmYWN0LGFyZzIsc2l6ZW9mKCphY3QpLDEsUEFH RV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKyAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICBhY3Qg PSBOVUxMOw0KLSAgICAgICAgICAgIGlmIChhcmczKQ0KLSAgICAgICAgICAg ICAgICBsb2NrX3VzZXJfc3RydWN0KG9hY3QsIGFyZzMsIDApOw0KKyAgICAg ICAgICAgIGlmIChhcmczKSB7DQorCQlpZiggKHJldD1sb2NrX2FuZF9jaGVj a191c2VyX3N0cnVjdCgmb2FjdCxhcmcyLHNpemVvZigqb2FjdCksMCxQQUdF X1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KKyAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICBvYWN0 ID0gTlVMTDsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oZG9fc2ln YWN0aW9uKGFyZzEsIGFjdCwgb2FjdCkpOw0KQEAgLTMwNDYsNyArMzEyNyw3 IEBADQogICAgICAgICAgICAgc2lnc2V0X3Qgc2V0Ow0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhzaWdwZW5kaW5nKCZzZXQpKTsNCiAgICAgICAg ICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgICAgICAgICAg cCA9IGxvY2tfdXNlcihhcmcxLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwg MCk7DQorCQlpZiggKHJldD1sb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm cCxhcmcxLHNpemVvZih0YXJnZXRfc2lnc2V0X3QpLDAsUEFHRV9XUklURSkp ICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgICAgICAgICAgaG9zdF90 b190YXJnZXRfc2lnc2V0KHAsICZzZXQpOw0KICAgICAgICAgICAgICAgICB1 bmxvY2tfdXNlcihwLCBhcmcxLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSk7 DQogICAgICAgICAgICAgfQ0KQEAgLTMwNTYsNyArMzEzNyw3IEBADQogICAg IGNhc2UgVEFSR0VUX05SX3NpZ3N1c3BlbmQ6DQogICAgICAgICB7DQogICAg ICAgICAgICAgc2lnc2V0X3Qgc2V0Ow0KLSAgICAgICAgICAgIHAgPSBsb2Nr X3VzZXIoYXJnMSwgc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksIDEpOw0KKwkg ICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJn MSxzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwxLFBBR0VfUkVBRCkpICE9IDAg KSByZXR1cm4gLXJldDsNCiAgICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9v bGRfc2lnc2V0KCZzZXQsIHApOw0KICAgICAgICAgICAgIHVubG9ja191c2Vy KHAsIGFyZzEsIDApOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhz aWdzdXNwZW5kKCZzZXQpKTsNCkBAIC0zMDY2LDcgKzMxNDcsNyBAQA0KICAg ICBjYXNlIFRBUkdFVF9OUl9ydF9zaWdzdXNwZW5kOg0KICAgICAgICAgew0K ICAgICAgICAgICAgIHNpZ3NldF90IHNldDsNCi0gICAgICAgICAgICBwID0g bG9ja191c2VyKGFyZzEsIHNpemVvZih0YXJnZXRfc2lnc2V0X3QpLCAxKTsN CisJICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZw LGFyZzEsc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksMSxQQUdFX1JFQUQpKSAh PSAwICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAgdGFyZ2V0X3RvX2hv c3Rfc2lnc2V0KCZzZXQsIHApOw0KICAgICAgICAgICAgIHVubG9ja191c2Vy KHAsIGFyZzEsIDApOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhz aWdzdXNwZW5kKCZzZXQpKTsNCkBAIC0zMDc4LDE4ICszMTU5LDE4IEBADQog ICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHV0cywgKnB1dHM7DQogICAg ICAgICAgICAgc2lnaW5mb190IHVpbmZvOw0KICAgICAgICAgICAgIA0KLSAg ICAgICAgICAgIHAgPSBsb2NrX3VzZXIoYXJnMSwgc2l6ZW9mKHRhcmdldF9z aWdzZXRfdCksIDEpOw0KKwkgICAgaWYoIChyZXQ9bG9ja19hbmRfY2hlY2tf dXNlcl9zdHJ1Y3QoJnAsYXJnMSxzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwx LFBBR0VfUkVBRCkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAgICAg ICB0YXJnZXRfdG9faG9zdF9zaWdzZXQoJnNldCwgcCk7DQogICAgICAgICAg ICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgICAgICAgICAgaWYg KGFyZzMpIHsNCiAgICAgICAgICAgICAgICAgcHV0cyA9ICZ1dHM7DQotICAg ICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWVzcGVjKHB1dHMsIGFy ZzMpOw0KKyAgICAgICAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9z dF90aW1lc3BlYyhwdXRzLCBhcmczKSkgIT0gMCApIHJldHVybiByZXQ7DQog ICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgcHV0cyA9 IE5VTEw7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIHJldCA9IGdl dF9lcnJubyhzaWd0aW1lZHdhaXQoJnNldCwgJnVpbmZvLCBwdXRzKSk7DQog ICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0g ICAgICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcyLCBzaXplb2YodGFy Z2V0X3NpZ3NldF90KSwgMCk7DQorCQlpZiggKHJldD1sb2NrX2FuZF9jaGVj a191c2VyX3N0cnVjdCgmcCxhcmcyLHNpemVvZih0YXJnZXRfc2lnc2V0X3Qp LDAsUEFHRV9XUklURSkpICE9IDAgKSByZXR1cm4gLXJldDsNCiAgICAgICAg ICAgICAgICAgaG9zdF90b190YXJnZXRfc2lnaW5mbyhwLCAmdWluZm8pOw0K ICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcyLCBzaXplb2Yo dGFyZ2V0X3NpZ3NldF90KSk7DQogICAgICAgICAgICAgfQ0KQEAgLTMwOTgs NyArMzE3OSw3IEBADQogICAgIGNhc2UgVEFSR0VUX05SX3J0X3NpZ3F1ZXVl aW5mbzoNCiAgICAgICAgIHsNCiAgICAgICAgICAgICBzaWdpbmZvX3QgdWlu Zm87DQotICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmczLCBzaXplb2Yo dGFyZ2V0X3NpZ3NldF90KSwgMSk7DQorCSAgICBpZiggKHJldD1sb2NrX2Fu ZF9jaGVja191c2VyX3N0cnVjdCgmcCxhcmczLHNpemVvZih0YXJnZXRfc2ln c2V0X3QpLDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICAgICAgICAgIHRhcmdldF90b19ob3N0X3NpZ2luZm8oJnVpbmZvLCBwKTsN CiAgICAgICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcxLCAwKTsNCiAgICAg ICAgICAgICByZXQgPSBnZXRfZXJybm8oc3lzX3J0X3NpZ3F1ZXVlaW5mbyhh cmcxLCBhcmcyLCAmdWluZm8pKTsNCkBAIC0zMTUzLDcgKzMyMzQsNyBAQA0K ICAgICAgICAgICAgIHN0cnVjdCBydXNhZ2UgcnVzYWdlOw0KICAgICAgICAg ICAgIHJldCA9IGdldF9lcnJubyhnZXRydXNhZ2UoYXJnMSwgJnJ1c2FnZSkp Ow0KICAgICAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAg ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9ydXNhZ2UoYXJnMiwgJnJ1c2Fn ZSk7DQorICAgICAgICAgICAgICAgIGlmKCAocmV0PWhvc3RfdG9fdGFyZ2V0 X3J1c2FnZShhcmcyLCAmcnVzYWdlKSkgIT0gMCApIHJldHVybiByZXQ7DQog ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQpA QCAtMzE2MiwxNCArMzI0MywxNCBAQA0KICAgICAgICAgICAgIHN0cnVjdCB0 aW1ldmFsIHR2Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhnZXR0 aW1lb2ZkYXkoJnR2LCBOVUxMKSk7DQogICAgICAgICAgICAgaWYgKCFpc19l cnJvcihyZXQpKSB7DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0 X3RpbWV2YWwoYXJnMSwgJnR2KTsNCisgICAgICAgICAgICAgICAgaWYoIChy ZXQ9aG9zdF90b190YXJnZXRfdGltZXZhbChhcmcxLCAmdHYpKSAhPSAwICkg cmV0dXJuIHJldDsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAg ICAgICBicmVhazsNCiAgICAgY2FzZSBUQVJHRVRfTlJfc2V0dGltZW9mZGF5 Og0KICAgICAgICAgew0KICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2 Ow0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWV2YWwoJnR2LCBh cmcxKTsNCisgICAgICAgICAgICBpZiggKHJldD10YXJnZXRfdG9faG9zdF90 aW1ldmFsKCZ0diwgYXJnMSkpICE9IDAgKSByZXR1cm4gcmV0Ow0KICAgICAg ICAgICAgIHJldCA9IGdldF9lcnJubyhzZXR0aW1lb2ZkYXkoJnR2LCBOVUxM KSk7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC0zNDg4LDE5 ICszNTY5LDE5IEBADQogDQogICAgICAgICAgICAgaWYgKGFyZzIpIHsNCiAg ICAgICAgICAgICAgICAgcHZhbHVlID0gJnZhbHVlOw0KLSAgICAgICAgICAg ICAgICB0YXJnZXRfdG9faG9zdF90aW1ldmFsKCZwdmFsdWUtPml0X2ludGVy dmFsLCANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcmcyKTsNCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3RfdGlt ZXZhbCgmcHZhbHVlLT5pdF92YWx1ZSwgDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXJnMiArIHNpemVvZihzdHJ1Y3QgdGFy Z2V0X3RpbWV2YWwpKTsNCisgICAgICAgICAgICAgICAgaWYoIChyZXQ9dGFy Z2V0X3RvX2hvc3RfdGltZXZhbCgmcHZhbHVlLT5pdF9pbnRlcnZhbCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyKSkg IT0gMCApIHJldHVybiByZXQ7DQorICAgICAgICAgICAgICAgIGlmKCAocmV0 PXRhcmdldF90b19ob3N0X3RpbWV2YWwoJnB2YWx1ZS0+aXRfdmFsdWUsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMiAr IHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKSkgIT0gMCApIHJldHVy biByZXQ7DQogICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg ICAgcHZhbHVlID0gTlVMTDsNCiAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgcmV0ID0gZ2V0X2Vycm5vKHNldGl0aW1lcihhcmcxLCBwdmFsdWUsICZv dmFsdWUpKTsNCiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkgJiYg YXJnMykgew0KLSAgICAgICAgICAgICAgICBob3N0X3RvX3RhcmdldF90aW1l dmFsKGFyZzMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm92YWx1ZS5pdF9pbnRlcnZhbCk7DQotICAgICAgICAgICAgICAg IGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJnMyArIHNpemVvZihzdHJ1Y3Qg dGFyZ2V0X3RpbWV2YWwpLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZvdmFsdWUuaXRfdmFsdWUpOw0KKyAgICAgICAgICAg ICAgICBpZiggKHJldD1ob3N0X3RvX3RhcmdldF90aW1ldmFsKGFyZzMsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm92YWx1 ZS5pdF9pbnRlcnZhbCkpICE9IDAgKSByZXR1cm4gcmV0Ow0KKyAgICAgICAg ICAgICAgICBpZiggKHJldD1ob3N0X3RvX3RhcmdldF90aW1ldmFsKGFyZzMg KyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1ldmFsKSwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3ZhbHVlLml0X3ZhbHVl KSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAgICAgICAgfQ0KICAgICAg ICAgfQ0KICAgICAgICAgYnJlYWs7DQpAQCAtMzUxMCwxMCArMzU5MSwxMCBA QA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJu byhnZXRpdGltZXIoYXJnMSwgJnZhbHVlKSk7DQogICAgICAgICAgICAgaWYg KCFpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAgICAgICAgICAgICAg aG9zdF90b190YXJnZXRfdGltZXZhbChhcmcyLA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZS5pdF9pbnRlcnZhbCk7 DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJn MiArIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpLA0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZS5pdF92YWx1 ZSk7DQorICAgICAgICAgICAgICAgIGlmKCAocmV0PWhvc3RfdG9fdGFyZ2V0 X3RpbWV2YWwoYXJnMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmdmFsdWUuaXRfaW50ZXJ2YWwpKSAhPSAwICkgcmV0dXJu IHJldDsNCisgICAgICAgICAgICAgICAgaWYoIChyZXQ9aG9zdF90b190YXJn ZXRfdGltZXZhbChhcmcyICsgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfdGltZXZh bCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnZhbHVlLml0X3ZhbHVlKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAg ICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQpAQCAtMzUz NCw3ICszNjE1LDcgQEANCiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJl dCkpIHsNCiAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0ICp0 YXJnZXRfc3Q7DQogDQotICAgICAgICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1 Y3QodGFyZ2V0X3N0LCBhcmcyLCAwKTsNCisJCWlmKCAocmV0PWxvY2tfYW5k X2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3QsYXJnMixzaXplb2YoKnRh cmdldF9zdCksOSxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0K ICNpZiBkZWZpbmVkKFRBUkdFVF9NSVBTKQ0KICAgICAgICAgICAgICAgICB0 YXJnZXRfc3QtPnN0X2RldiA9IHRzd2FwMzIoc3Quc3RfZGV2KTsNCiAjZWxz ZQ0KQEAgLTM5NjUsMTcgKzQwNDYsMTcgQEANCiAgICAgICAgICAgICBzdHJ1 Y3QgdGltZXNwZWMgdHM7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5v KHNjaGVkX3JyX2dldF9pbnRlcnZhbChhcmcxLCAmdHMpKTsNCiAgICAgICAg ICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAgICAgICAgICAgICAg aG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnRzKTsNCisgICAgICAg ICAgICAgICAgaWYoIChyZXQ9aG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJn MiwgJnRzKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAgICAgICAgfQ0K ICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgVEFSR0VU X05SX25hbm9zbGVlcDoNCiAgICAgICAgIHsNCiAgICAgICAgICAgICBzdHJ1 Y3QgdGltZXNwZWMgcmVxLCByZW07DQotICAgICAgICAgICAgdGFyZ2V0X3Rv X2hvc3RfdGltZXNwZWMoJnJlcSwgYXJnMSk7DQorICAgICAgICAgICAgaWYo IChyZXQ9dGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoJnJlcSwgYXJnMSkpICE9 IDAgKSByZXR1cm4gcmV0Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJu byhuYW5vc2xlZXAoJnJlcSwgJnJlbSkpOw0KICAgICAgICAgICAgIGlmIChp c19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAgICAgICAgICAgICAgaG9z dF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnJlbSk7DQorICAgICAgICAg ICAgICAgIGlmKCAocmV0PWhvc3RfdG9fdGFyZ2V0X3RpbWVzcGVjKGFyZzIs ICZyZW0pKSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgICAgICAgICB9DQog ICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC00MDcyLDYgKzQxNTMs NyBAQA0KICNpZmRlZiBUQVJHRVRfTlJfc3RhdDY0DQogICAgIGNhc2UgVEFS R0VUX05SX3N0YXQ2NDoNCiAgICAgICAgIHAgPSBsb2NrX3VzZXJfc3RyaW5n KGFyZzEpOw0KKyAgICAgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHAs MSxQQUdFX1JFQUQpICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICByZXQgPSBn ZXRfZXJybm8oc3RhdChwYXRoKHApLCAmc3QpKTsNCiAgICAgICAgIHVubG9j a191c2VyKHAsIGFyZzEsIDApOw0KICAgICAgICAgZ290byBkb19zdGF0NjQ7 DQpAQCAtNDA3OSw2ICs0MTYxLDcgQEANCiAjaWZkZWYgVEFSR0VUX05SX2xz dGF0NjQNCiAgICAgY2FzZSBUQVJHRVRfTlJfbHN0YXQ2NDoNCiAgICAgICAg IHAgPSBsb2NrX3VzZXJfc3RyaW5nKGFyZzEpOw0KKyAgICAgICAgaWYoIHJl dD1wYWdlX2NoZWNrX3JhbmdlKHAsMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1y ZXQ7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8obHN0YXQocGF0aChwKSwg JnN0KSk7DQogICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcxLCAwKTsNCiAg ICAgICAgIGdvdG8gZG9fc3RhdDY0Ow0KQEAgLTQwOTIsNyArNDE3NSw3IEBA DQogI2lmZGVmIFRBUkdFVF9BUk0NCiAgICAgICAgICAgICAgICAgaWYgKCgo Q1BVQVJNU3RhdGUgKiljcHVfZW52KS0+ZWFiaSkgew0KICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCAqdGFyZ2V0X3N0 Ow0KLSAgICAgICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfc3QsIGFyZzIsIDEpOw0KKwkJICAgIGlmKCAocmV0PWxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3QsYXJnMixzaXplb2YoKnRhcmdl dF9zdCksMSxQQUdFX1dSSVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAg ICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9m KHN0cnVjdCB0YXJnZXRfZWFiaV9zdGF0NjQpKTsNCiAgICAgICAgICAgICAg ICAgICAgIC8qIHB1dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCiAg ICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2RldiwgJnRhcmdl dF9zdC0+c3RfZGV2KTsNCkBAIC00MTE3LDcgKzQyMDAsNyBAQA0KICNlbmRp Zg0KICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdGFyZ2V0X3N0YXQ2NCAqdGFyZ2V0X3N0Ow0KLSAgICAgICAgICAg ICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDEp Ow0KKwkJICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0 KCZ0YXJnZXRfc3QsYXJnMixzaXplb2YoKnRhcmdldF9zdCksMSxQQUdFX1dS SVRFKSkgIT0gMCApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgICAgICAg ICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJnZXRf c3RhdDY0KSk7DQogICAgICAgICAgICAgICAgICAgICAvKiA/Pz8gcHV0X3Vz ZXIgaXMgcHJvYmFibHkgd3JvbmcuICAqLw0KICAgICAgICAgICAgICAgICAg ICAgcHV0X3VzZXIoc3Quc3RfZGV2LCAmdGFyZ2V0X3N0LT5zdF9kZXYpOw0K QEAgLTQ1ODMsNyArNDY2Niw3IEBADQogICAgICAgICBzdHJ1Y3QgdGltZXNw ZWMgdHM7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8oY2xvY2tfZ2V0dGlt ZShhcmcxLCAmdHMpKTsNCiAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSkg ew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWVzcGVjKGFyZzIs ICZ0cyk7DQorICAgICAgICAgICAgaWYoIChyZXQ9aG9zdF90b190YXJnZXRf dGltZXNwZWMoYXJnMiwgJnRzKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAg ICAgICB9DQogICAgICAgICBicmVhazsNCiAgICAgfQ0KQEAgLTQ1OTQsNyAr NDY3Nyw3IEBADQogICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7DQogICAg ICAgICByZXQgPSBnZXRfZXJybm8oY2xvY2tfZ2V0cmVzKGFyZzEsICZ0cykp Ow0KICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICAg ICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnRzKTsNCisgICAg ICAgICAgICBpZiggKHJldD1ob3N0X3RvX3RhcmdldF90aW1lc3BlYyhhcmcy LCAmdHMpKSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgICAgIH0NCiAgICAg ICAgIGJyZWFrOw0KICAgICB9DQpJbmRleDogcWVtdS9saW51eC11c2VyL3Fl bXUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHFlbXUub3JpZy9s aW51eC11c2VyL3FlbXUuaAkyMDA3LTA3LTA2IDA5OjQyOjI5LjAwMDAwMDAw MCAtMDQwMA0KKysrIHFlbXUvbGludXgtdXNlci9xZW11LmgJMjAwNy0wNy0w NiAwOTo0OTozNy4wMDAwMDAwMDAgLTA0MDANCkBAIC0yOTUsNiArMjk1LDE1 IEBADQogI2RlZmluZSB1bmxvY2tfdXNlcl9zdHJ1Y3QoaG9zdF9wdHIsIGd1 ZXN0X2FkZHIsIGNvcHkpIFwNCiAgICAgdW5sb2NrX3VzZXIoaG9zdF9wdHIs IGd1ZXN0X2FkZHIsIChjb3B5KSA/IHNpemVvZigqaG9zdF9wdHIpIDogMCkN CiANCitzdGF0aWMgaW5saW5lIGxvbmcgbG9ja19hbmRfY2hlY2tfdXNlcl9z dHJ1Y3Qodm9pZCAqaG9zdF9hZGRyLCB0YXJnZXRfdWxvbmcgZ3Vlc3RfYWRk ciwgbG9uZyBsZW4sIGludCBjb3B5LCBpbnQgcGdfYWNjZXNzKQ0KK3sNCisg ICAgbG9uZyAqaGFkZHIsIHJldCA9IDA7DQorICAgIGhhZGRyID0gKGxvbmcg Kilob3N0X2FkZHI7DQorICAgIGlmKCAocmV0PXBhZ2VfY2hlY2tfcmFuZ2Uo Z3Vlc3RfYWRkcixsZW4scGdfYWNjZXNzKSkgIT0gMCApIHJldHVybiByZXQ7 DQorICAgICpoYWRkciA9IChsb25nKWxvY2tfdXNlcihndWVzdF9hZGRyLCBs ZW4sIGNvcHkpOw0KKyAgICByZXR1cm4gMDsNCit9DQorDQogI2RlZmluZSB0 Z2V0OChhZGRyKSBsZHViKGFkZHIpDQogI2RlZmluZSB0cHV0OChhZGRyLCB2 YWwpIHN0YihhZGRyLCB2YWwpDQogI2RlZmluZSB0Z2V0MTYoYWRkcikgbGR1 dyhhZGRyKQ0K ---1463811327-33015542-1183734905=:12799--