From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HUqWd-000762-2D for qemu-devel@nongnu.org; Fri, 23 Mar 2007 16:38:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HUqWc-000759-A4 for qemu-devel@nongnu.org; Fri, 23 Mar 2007 16:38:14 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HUqWc-00074t-6Z for qemu-devel@nongnu.org; Fri, 23 Mar 2007 15:38:14 -0500 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HUqUe-0007iW-9P for qemu-devel@nongnu.org; Fri, 23 Mar 2007 16:36:13 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1HUqUF-0007ne-00 for ; Fri, 23 Mar 2007 16:35: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 4+goonWgOo-k for ; Fri, 23 Mar 2007 16:35:33 -0400 (EDT) Received: from h211.241.141.67.ip.alltel.net ([67.141.241.211] helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1HUqTz-0007km-00 for ; Fri, 23 Mar 2007 16:35:31 -0400 Date: Fri, 23 Mar 2007 16:35:10 -0400 (EDT) From: Stuart Anderson Subject: Re: [Qemu-devel] generating EFAULT in linux-user In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-1014222984-1174682110=:12505" 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-1014222984-1174682110=:12505 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Here is an updated patch that show more of the changes that are needed to detect EFAULT situations in linux-user. The areas I focused on are the socket, semaphore, and message queue family of syscalls as they all make interesting use of pointers to structures. This patch does sit on top of the other patches I sent to this list this week for semaphores and message queues, so it can't be 'test driven' without them. With this patch, more of the Linux Test Project test suite is able to PASS, and qemu SEGVs less frequently. Still to be done is to actually fold this into lock_user(), and finish applying it in the other applicable syscalls. Comments would be appreciated. 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-1014222984-1174682110=:12505 Content-Type: TEXT/x-diff; charset=US-ASCII; name=06_efault.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: EFAULT patch #2 Content-Disposition: attachment; filename=06_efault.patch SW5kZXg6IHFlbXUvZXhlYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gcWVtdS5vcmlnL2V4ZWMuYwkyMDA3LTAzLTIzIDA5OjA1OjQ1LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvZXhlYy5jCTIwMDctMDMtMjMgMDk6MDY6 MjMuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTc4NSw2ICsxNzg1LDI5IEBADQog 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 MDMtMjMgMDk6MDU6NDUuMDAwMDAwMDAwIC0wNDAwDQorKysgcWVtdS9jcHUt YWxsLmgJMjAwNy0wMy0yMyAxMDo1MjoxNi4wMDAwMDAwMDAgLTA0MDANCkBA IC02ODksNiArNjg5LDcgQEANCiBpbnQgcGFnZV9nZXRfZmxhZ3ModGFyZ2V0 X3Vsb25nIGFkZHJlc3MpOw0KIHZvaWQgcGFnZV9zZXRfZmxhZ3ModGFyZ2V0 X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgZW5kLCBpbnQgZmxhZ3MpOw0K IHZvaWQgcGFnZV91bnByb3RlY3RfcmFuZ2UodGFyZ2V0X3Vsb25nIGRhdGEs IHRhcmdldF91bG9uZyBkYXRhX3NpemUpOw0KK2ludCBwYWdlX2NoZWNrX3Jh bmdlKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50 IGZsYWdzKTsNCiANCiAjZGVmaW5lIFNJTkdMRV9DUFVfREVGSU5FUw0KICNp ZmRlZiBTSU5HTEVfQ1BVX0RFRklORVMNCkluZGV4OiBxZW11L2xpbnV4LXVz ZXIvc3lzY2FsbC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gcWVt dS5vcmlnL2xpbnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDMtMjMgMDk6MDY6 MTYuMDAwMDAwMDAwIC0wNDAwDQorKysgcWVtdS9saW51eC11c2VyL3N5c2Nh bGwuYwkyMDA3LTAzLTIzIDEwOjU1OjAxLjAwMDAwMDAwMCAtMDQwMA0KQEAg LTQwNiwyOCArNDA2LDM2IEBADQogICAgIHJldHVybiByZXQ7DQogfQ0KIA0K LXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihz dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsDQorc3RhdGljIGlubGluZSBsb25nIHRh cmdldF90b19ob3N0X3NvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgbGVuKQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2Nr bGVuX3QgbGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgcGdfYWNjZXNzKQ0KIHsNCisgICAgbG9uZyByZXQg PSAwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X3NvY2thZGRyICp0YXJnZXRfc2Fk ZHI7DQogDQogICAgIHRhcmdldF9zYWRkciA9IGxvY2tfdXNlcih0YXJnZXRf YWRkciwgbGVuLCAxKTsNCisgICAgaWYoIHJldD1wYWdlX2NoZWNrX3Jhbmdl KHRhcmdldF9zYWRkcixsZW4scGdfYWNjZXNzKSApIHJldHVybiByZXQ7DQog ICAgIG1lbWNweShhZGRyLCB0YXJnZXRfc2FkZHIsIGxlbik7DQogICAgIGFk ZHItPnNhX2ZhbWlseSA9IHRzd2FwMTYodGFyZ2V0X3NhZGRyLT5zYV9mYW1p bHkpOw0KICAgICB1bmxvY2tfdXNlcih0YXJnZXRfc2FkZHIsIHRhcmdldF9h ZGRyLCAwKTsNCisgICAgcmV0dXJuIHJldDsNCiB9DQogDQotc3RhdGljIGlu bGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciwNCitzdGF0aWMgaW5saW5lIGxvbmcgaG9zdF90b190 YXJnZXRfc29ja2FkZHIodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgc29ja2FkZHIgKmFkZHIsDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4pDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBs ZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBwZ19hY2Nlc3MpDQogew0KKyAgICBsb25nIHJldCA9IDA7DQog ICAgIHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKnRhcmdldF9zYWRkcjsNCiAN CiAgICAgdGFyZ2V0X3NhZGRyID0gbG9ja191c2VyKHRhcmdldF9hZGRyLCBs ZW4sIDApOw0KKyAgICBpZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2UodGFyZ2V0 X3NhZGRyLGxlbixwZ19hY2Nlc3MpICkgcmV0dXJuIHJldDsNCiAgICAgbWVt Y3B5KHRhcmdldF9zYWRkciwgYWRkciwgbGVuKTsNCiAgICAgdGFyZ2V0X3Nh ZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KGFkZHItPnNhX2ZhbWlseSk7DQog ICAgIHVubG9ja191c2VyKHRhcmdldF9zYWRkciwgdGFyZ2V0X2FkZHIsIGxl bik7DQorICAgIHJldHVybiByZXQ7DQogfQ0KIA0KIC8qID8/PyBTaG91bGQg dGhpcyBhbHNvIHN3YXAgbXNnaC0+bmFtZT8gICovDQpAQCAtNzg4LDE4ICs3 OTYsMjAgQEANCiBzdGF0aWMgbG9uZyBkb19iaW5kKGludCBzb2NrZmQsIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAgICAgICAgICAgICAgICAg IHNvY2tsZW5fdCBhZGRybGVuKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0K ICAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KICAgICANCi0g ICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIs IGFkZHJsZW4pOw0KKyAgICBpZiggcmV0PXRhcmdldF90b19ob3N0X3NvY2th ZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuLFBBR0VfUkVBRCkgKSBy ZXR1cm4gLXJldDsNCiAgICAgcmV0dXJuIGdldF9lcnJubyhiaW5kKHNvY2tm ZCwgYWRkciwgYWRkcmxlbikpOw0KIH0NCiANCiBzdGF0aWMgbG9uZyBkb19j b25uZWN0KGludCBzb2NrZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwN CiAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuKQ0KIHsN CisgICAgbG9uZyByZXQgPSAwOw0KICAgICB2b2lkICphZGRyID0gYWxsb2Nh KGFkZHJsZW4pOw0KICAgICANCi0gICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2Fk ZHIoYWRkciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4pOw0KKyAgICBpZiggcmV0 PXRhcmdldF90b19ob3N0X3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBh ZGRybGVuLFBBR0VfUkVBRCkgKSByZXR1cm4gLXJldDsNCiAgICAgcmV0dXJu IGdldF9lcnJubyhjb25uZWN0KHNvY2tmZCwgYWRkciwgYWRkcmxlbikpOw0K IH0NCiANCkBAIC04MTQsMTEgKzgyNCwxOSBAQA0KICAgICB0YXJnZXRfdWxv bmcgdGFyZ2V0X3ZlYzsNCiANCiAgICAgbG9ja191c2VyX3N0cnVjdChtc2dw LCB0YXJnZXRfbXNnLCAxKTsNCisgICAgaWYoIHNlbmQgKQ0KKyAgICAgICBp ZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2UobXNncCxzaXplb2YoKm1zZ3ApLFBB R0VfUkVBRCkgKSByZXR1cm4gLXJldDsNCisgICAgZWxzZQ0KKyAgICAgICBp ZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2UobXNncCxzaXplb2YoKm1zZ3ApLFBB R0VfV1JJVEUpICkgcmV0dXJuIC1yZXQ7DQogICAgIGlmIChtc2dwLT5tc2df bmFtZSkgew0KICAgICAgICAgbXNnLm1zZ19uYW1lbGVuID0gdHN3YXAzMiht c2dwLT5tc2dfbmFtZWxlbik7DQogICAgICAgICBtc2cubXNnX25hbWUgPSBh bGxvY2EobXNnLm1zZ19uYW1lbGVuKTsNCi0gICAgICAgIHRhcmdldF90b19o b3N0X3NvY2thZGRyKG1zZy5tc2dfbmFtZSwgdHN3YXBsKG1zZ3AtPm1zZ19u YW1lKSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5t c2dfbmFtZWxlbik7DQorICAgICAgICBpZiggc2VuZCApDQorICAgICAgICAg IGlmKCByZXQ9dGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIobXNnLm1zZ19uYW1l LCB0c3dhcGwobXNncC0+bXNnX25hbWUpLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbXNnLm1zZ19uYW1lbGVuLFBBR0VfUkVBRCkgKSBy ZXR1cm4gLXJldDsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgaWYoIHJl dD10YXJnZXRfdG9faG9zdF9zb2NrYWRkcihtc2cubXNnX25hbWUsIHRzd2Fw bChtc2dwLT5tc2dfbmFtZSksDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtc2cubXNnX25hbWVsZW4sUEFHRV9XUklURSkgKSByZXR1cm4g LXJldDsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIG1zZy5tc2dfbmFtZSA9 IE5VTEw7DQogICAgICAgICBtc2cubXNnX25hbWVsZW4gPSAwOw0KQEAgLTg1 NSw3ICs4NzMsNyBAQA0KIA0KICAgICByZXQgPSBnZXRfZXJybm8oYWNjZXB0 KGZkLCBhZGRyLCAmYWRkcmxlbikpOw0KICAgICBpZiAoIWlzX2Vycm9yKHJl dCkpIHsNCi0gICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdl dF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAgIGlmKCByZXQ9aG9z dF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJs ZW4sIFBBR0VfV1JJVEUpICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICB0cHV0 MzIodGFyZ2V0X2FkZHJsZW4sIGFkZHJsZW4pOw0KICAgICB9DQogICAgIHJl dHVybiByZXQ7DQpAQCAtODY0LDEzICs4ODIsMTcgQEANCiBzdGF0aWMgbG9u ZyBkb19nZXRwZWVybmFtZShpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJnZXRf YWRkciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxv bmcgdGFyZ2V0X2FkZHJsZW4pDQogew0KLSAgICBzb2NrbGVuX3QgYWRkcmxl biA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7DQotICAgIHZvaWQgKmFkZHIg PSBhbGxvY2EoYWRkcmxlbik7DQorICAgIHNvY2tsZW5fdCBhZGRybGVuOw0K KyAgICB2b2lkICphZGRyOw0KICAgICBsb25nIHJldDsNCiANCisgICAgaWYo IHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdldF9hZGRybGVuLHNpemVvZihz b2NrbGVuX3QpLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1yZXQ7DQorICAgIGFk ZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0KKyAgICBhZGRyID0g YWxsb2NhKGFkZHJsZW4pOw0KKw0KICAgICByZXQgPSBnZXRfZXJybm8oZ2V0 cGVlcm5hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNf ZXJyb3IocmV0KSkgew0KLSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2Fk ZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pOw0KKyAgICAgICAgaWYo IHJldD1ob3N0X3RvX3RhcmdldF9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRk ciwgYWRkcmxlbiwgUEFHRV9XUklURSkgKSByZXR1cm4gLXJldDsNCiAgICAg ICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxlbik7DQogICAgIH0N CiAgICAgcmV0dXJuIHJldDsNCkBAIC04NzksMTMgKzkwMSwxNyBAQA0KIHN0 YXRpYyBsb25nIGRvX2dldHNvY2tuYW1lKGludCBmZCwgdGFyZ2V0X3Vsb25n IHRhcmdldF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikNCiB7DQotICAgIHNvY2tsZW5f dCBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVuKTsNCi0gICAgdm9p ZCAqYWRkciA9IGFsbG9jYShhZGRybGVuKTsNCisgICAgc29ja2xlbl90IGFk ZHJsZW47DQorICAgIHZvaWQgKmFkZHI7DQogICAgIGxvbmcgcmV0Ow0KIA0K KyAgICBpZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2UodGFyZ2V0X2FkZHJsZW4s c2l6ZW9mKHNvY2tsZW5fdCksUEFHRV9XUklURSkgKSByZXR1cm4gLXJldDsN CisgICAgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7DQorICAg IGFkZHIgPSBhbGxvY2EoYWRkcmxlbik7DQorDQogICAgIHJldCA9IGdldF9l cnJubyhnZXRzb2NrbmFtZShmZCwgYWRkciwgJmFkZHJsZW4pKTsNCiAgICAg aWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICBob3N0X3RvX3Rhcmdl dF9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbik7DQorICAg ICAgICBpZiggcmV0PWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF9h ZGRyLCBhZGRyLCBhZGRybGVuLCBQQUdFX1dSSVRFKSApIHJldHVybiAtcmV0 Ow0KICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsN CiAgICAgfQ0KICAgICByZXR1cm4gcmV0Ow0KQEAgLTkxMyw5ICs5MzksMTAg QEANCiAgICAgbG9uZyByZXQ7DQogDQogICAgIGhvc3RfbXNnID0gbG9ja191 c2VyKG1zZywgbGVuLCAxKTsNCisgICAgaWYoIHJldD1wYWdlX2NoZWNrX3Jh bmdlKGhvc3RfbXNnLGxlbixQQUdFX1JFQUQpICkgcmV0dXJuIC1yZXQ7DQog ICAgIGlmICh0YXJnZXRfYWRkcikgew0KICAgICAgICAgYWRkciA9IGFsbG9j YShhZGRybGVuKTsNCi0gICAgICAgIHRhcmdldF90b19ob3N0X3NvY2thZGRy KGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKTsNCisgICAgICAgIGlmKCBy ZXQ9dGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIs IGFkZHJsZW4sIFBBR0VfUkVBRCkgKSByZXR1cm4gLXJldDsNCiAgICAgICAg IHJldCA9IGdldF9lcnJubyhzZW5kdG8oZmQsIGhvc3RfbXNnLCBsZW4sIGZs YWdzLCBhZGRyLCBhZGRybGVuKSk7DQogICAgIH0gZWxzZSB7DQogICAgICAg ICByZXQgPSBnZXRfZXJybm8oc2VuZChmZCwgaG9zdF9tc2csIGxlbiwgZmxh Z3MpKTsNCkBAIC05NDMsNyArOTcwLDcgQEANCiAgICAgfQ0KICAgICBpZiAo IWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgIGlmICh0YXJnZXRfYWRkcikg ew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdl dF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAgICAgICBpZiggcmV0 PWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBh ZGRybGVuLCBQQUdFX1dSSVRFKSApIHJldHVybiAtcmV0Ow0KICAgICAgICAg ICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxlbik7DQogICAgICAg ICB9DQogICAgICAgICB1bmxvY2tfdXNlcihob3N0X21zZywgbXNnLCBsZW4p Ow0KQEAgLTk1Myw3ICs5ODAsNyBAQA0KICAgICByZXR1cm4gcmV0Ow0KIH0N CiANCi1zdGF0aWMgbG9uZyBkb19zb2NrZXRjYWxsKGludCBudW0sIHRhcmdl dF91bG9uZyB2cHRyKQ0KKy8qIHN0YXRpYyAqLyBsb25nIGRvX3NvY2tldGNh bGwoaW50IG51bSwgdGFyZ2V0X3Vsb25nIHZwdHIpDQogew0KICAgICBsb25n IHJldDsNCiAgICAgY29uc3QgaW50IG4gPSBzaXplb2YodGFyZ2V0X3Vsb25n KTsNCkBAIC0xMTUwLDEzICsxMTc3LDE2IEBADQogICB0YXJnZXRfdWxvbmcg X191bnVzZWQ0Ow0KIH07DQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdl dF90b19ob3N0X2lwY19wZXJtKHN0cnVjdCBpcGNfcGVybSAqaG9zdF9pcCwN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQ0KK3N0YXRpYyBpbmxpbmUgbG9u ZyB0YXJnZXRfdG9faG9zdF9pcGNfcGVybShzdHJ1Y3QgaXBjX3Blcm0gKmhv c3RfaXAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2Vz cykNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgc3RydWN0IHRhcmdl dF9pcGNfcGVybSAqdGFyZ2V0X2lwOw0KICAgICBzdHJ1Y3QgdGFyZ2V0X3Nl bWlkX2RzICp0YXJnZXRfc2Q7DQogDQogICAgIGxvY2tfdXNlcl9zdHJ1Y3Qo dGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMSk7DQorICAgIGlmKCByZXQ9cGFn ZV9jaGVja19yYW5nZSh0YXJnZXRfc2Qsc2l6ZW9mKCp0YXJnZXRfc2QpLHBn X2FjY2VzcykgKSByZXR1cm4gLXJldDsNCiAgICAgdGFyZ2V0X2lwPSYodGFy Z2V0X3NkLT5zZW1fcGVybSk7DQogICAgIGhvc3RfaXAtPl9fa2V5ID0gdHN3 YXBsKHRhcmdldF9pcC0+X19rZXkpOw0KICAgICBob3N0X2lwLT51aWQgPSB0 c3dhcGwodGFyZ2V0X2lwLT51aWQpOw0KQEAgLTExNjUsMTUgKzExOTUsMjAg QEANCiAgICAgaG9zdF9pcC0+Y2dpZCA9IHRzd2FwbCh0YXJnZXRfaXAtPmNn aWQpOw0KICAgICBob3N0X2lwLT5tb2RlID0gdHN3YXBsKHRhcmdldF9pcC0+ bW9kZSk7DQogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRh cmdldF9hZGRyLCAwKTsNCisNCisgICAgcmV0dXJuIHJldDsNCiB9DQogDQot c3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X2lwY19wZXJtKHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlwY19wZXJtICpob3N0 X2lwKQ0KK3N0YXRpYyBpbmxpbmUgbG9uZyBob3N0X3RvX3RhcmdldF9pcGNf cGVybSh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcGNfcGVy bSAqaG9zdF9pcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQorICAgIGxvbmcgcmV0 ID0gMDsNCiAgICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lw Ow0KICAgICBzdHJ1Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7DQog DQogICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRk ciwgMCk7DQorICAgIGlmKCByZXQ9cGFnZV9jaGVja19yYW5nZSh0YXJnZXRf c2Qsc2l6ZW9mKCp0YXJnZXRfc2QpLHBnX2FjY2VzcykgKSByZXR1cm4gLXJl dDsNCiAgICAgdGFyZ2V0X2lwID0gJih0YXJnZXRfc2QtPnNlbV9wZXJtKTsN CiAgICAgdGFyZ2V0X2lwLT5fX2tleSA9IHRzd2FwbChob3N0X2lwLT5fX2tl eSk7DQogICAgIHRhcmdldF9pcC0+dWlkID0gdHN3YXBsKGhvc3RfaXAtPnVp ZCk7DQpAQCAtMTE4MiwzMiArMTIxNyw0NCBAQA0KICAgICB0YXJnZXRfaXAt PmNnaWQgPSB0c3dhcGwoaG9zdF9pcC0+Y2dpZCk7DQogICAgIHRhcmdldF9p cC0+bW9kZSA9IHRzd2FwbChob3N0X2lwLT5tb2RlKTsNCiAgICAgdW5sb2Nr X3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDEpOw0KKw0K KyAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQg dGFyZ2V0X3RvX2hvc3Rfc2VtaWRfZHMoc3RydWN0IHNlbWlkX2RzICpob3N0 X3NkLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcikNCitzdGF0aWMgaW5saW5l IGxvbmcgdGFyZ2V0X3RvX2hvc3Rfc2VtaWRfZHMoc3RydWN0IHNlbWlkX2Rz ICpob3N0X3NkLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNj ZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFy Z2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7DQogDQogICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMSk7DQotICAgIHRhcmdl dF90b19ob3N0X2lwY19wZXJtKCYoaG9zdF9zZC0+c2VtX3Blcm0pLHRhcmdl dF9hZGRyKTsNCisgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdl dF9zZCxzaXplb2YoKnRhcmdldF9zZCkscGdfYWNjZXNzKSApIHJldHVybiAt cmV0Ow0KKyAgICB0YXJnZXRfdG9faG9zdF9pcGNfcGVybSgmKGhvc3Rfc2Qt PnNlbV9wZXJtKSx0YXJnZXRfYWRkcixwZ19hY2Nlc3MpOw0KICAgICBob3N0 X3NkLT5zZW1fbnNlbXMgPSB0c3dhcGwodGFyZ2V0X3NkLT5zZW1fbnNlbXMp Ow0KICAgICBob3N0X3NkLT5zZW1fb3RpbWUgPSB0c3dhcGwodGFyZ2V0X3Nk LT5zZW1fb3RpbWUpOw0KICAgICBob3N0X3NkLT5zZW1fY3RpbWUgPSB0c3dh cGwodGFyZ2V0X3NkLT5zZW1fY3RpbWUpOw0KICAgICB1bmxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJl dHVybiByZXQ7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3Rv X3RhcmdldF9zZW1pZF9kcyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBzZW1pZF9kcyAqaG9zdF9zZCkNCitzdGF0aWMgaW5saW5lIGxvbmcg aG9zdF90b190YXJnZXRfc2VtaWRfZHModGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwZ19hY2Nlc3Mp DQogew0KKyAgICBsb25nIHJldCA9IDA7DQogICAgIHN0cnVjdCB0YXJnZXRf c2VtaWRfZHMgKnRhcmdldF9zZDsNCiANCiAgICAgbG9ja191c2VyX3N0cnVj dCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsNCi0gICAgaG9zdF90b190 YXJnZXRfaXBjX3Blcm0odGFyZ2V0X2FkZHIsJihob3N0X3NkLT5zZW1fcGVy bSkpOw0KKyAgICBob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRk ciwmKGhvc3Rfc2QtPnNlbV9wZXJtKSxwZ19hY2Nlc3MpOw0KKyAgICBpZigg cmV0PXBhZ2VfY2hlY2tfcmFuZ2UodGFyZ2V0X3NkLHNpemVvZigqdGFyZ2V0 X3NkKSxwZ19hY2Nlc3MpICkgcmV0dXJuIC1yZXQ7DQogICAgIHRhcmdldF9z ZC0+c2VtX25zZW1zID0gdHN3YXBsKGhvc3Rfc2QtPnNlbV9uc2Vtcyk7DQog ICAgIHRhcmdldF9zZC0+c2VtX290aW1lID0gdHN3YXBsKGhvc3Rfc2QtPnNl bV9vdGltZSk7DQogICAgIHRhcmdldF9zZC0+c2VtX2N0aW1lID0gdHN3YXBs KGhvc3Rfc2QtPnNlbV9jdGltZSk7DQogICAgIHVubG9ja191c2VyX3N0cnVj dCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAxKTsNCisNCisgICAgcmV0dXJu IHJldDsNCiB9DQogDQogdW5pb24gc2VtdW4gew0KQEAgLTEyMjIsMTEgKzEy NjksMTMgQEANCiAJdGFyZ2V0X2xvbmcgYXJyYXk7DQogfTsNCiANCi1zdGF0 aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rfc2VtdW4odW5zaWduZWQg bG9uZyBjbWQsDQorc3RhdGljIGlubGluZSBsb25nIHRhcmdldF90b19ob3N0 X3NlbXVuKHVuc2lnbmVkIGxvbmcgY21kLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBzZW11biAqaG9zdF9zdSwN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmRzKQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2VtaWRfZHMgKmRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgcGdfYWNjZXNzKQ0KIHsNCisgICAgbG9uZyByZXQg PSAwOw0KICAgICB1bmlvbiB0YXJnZXRfc2VtdW4gKnRhcmdldF9zdTsNCiAN CiAgICAgc3dpdGNoKCBjbWQgKSB7DQpAQCAtMTIzNSwyNiArMTI4NCwzMiBA QA0KIAljYXNlIElQQ19TVEFUOg0KIAljYXNlIElQQ19TRVQ6DQogICAgICAg ICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIs IDEpOw0KLQkgICB0YXJnZXRfdG9faG9zdF9zZW1pZF9kcyhkcyx0YXJnZXRf c3UtPmJ1Zik7DQorICAgICAgICAgICBpZiggcmV0PXBhZ2VfY2hlY2tfcmFu Z2UodGFyZ2V0X3N1LHNpemVvZigqdGFyZ2V0X3N1KSxwZ19hY2Nlc3MpICkg cmV0dXJuIC1yZXQ7DQorCSAgIGlmKCByZXQ9dGFyZ2V0X3RvX2hvc3Rfc2Vt aWRfZHMoZHMsdGFyZ2V0X3N1LT5idWYsIHBnX2FjY2VzcykgKSByZXR1cm4g LXJldDsNCiAJICAgaG9zdF9zdS0+YnVmID0gZHM7DQogICAgICAgICAgICB1 bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMCk7 DQogCSAgIGJyZWFrOw0KIAljYXNlIEdFVFZBTDoNCiAJY2FzZSBTRVRWQUw6 DQogICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFy Z2V0X2FkZHIsIDEpOw0KKyAgICAgICAgICAgaWYoIHJldD1wYWdlX2NoZWNr X3JhbmdlKHRhcmdldF9zdSxzaXplb2YoKnRhcmdldF9zdSkscGdfYWNjZXNz KSApIHJldHVybiAtcmV0Ow0KIAkgICBob3N0X3N1LT52YWwgPSB0c3dhcGwo dGFyZ2V0X3N1LT52YWwpOw0KICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDApOw0KIAkgICBicmVhazsN CiAJZGVmYXVsdDoNCiAJICAgaG9zdF9zdS0+YXJyYXkgPSB0c3dhcGwodGFy Z2V0X3N1LT5hcnJheSk7DQogICAgIH0NCisNCisgICAgcmV0dXJuIHJldDsN CiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3Nl bXVuKHVuc2lnbmVkIGxvbmcgY21kLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBo b3N0X3RvX3RhcmdldF9zZW11bih1bnNpZ25lZCBsb25nIGNtZCwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bmlvbiBzZW11biAqaG9zdF9zdSwNCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlk X2RzICpkcykNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHNlbWlkX2RzICpkcywNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBnX2FjY2VzcykNCiB7DQor ICAgIGxvbmcgcmV0ID0gMDsNCiAgICAgdW5pb24gdGFyZ2V0X3NlbXVuICp0 YXJnZXRfc3U7DQogDQogICAgIHN3aXRjaCggY21kICkgew0KQEAgLTEyNjMs MTggKzEzMTgsMjIgQEANCiAJY2FzZSBJUENfU1RBVDoNCiAJY2FzZSBJUENf U0VUOg0KICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3Us IHRhcmdldF9hZGRyLCAwKTsNCi0JICAgaG9zdF90b190YXJnZXRfc2VtaWRf ZHModGFyZ2V0X3N1LT5idWYsZHMpOw0KKyAgICAgICAgICAgaWYoIHJldD1w YWdlX2NoZWNrX3JhbmdlKHRhcmdldF9zdSxzaXplb2YoKnRhcmdldF9zdSks cGdfYWNjZXNzKSApIHJldHVybiAtcmV0Ow0KKwkgICBpZiggcmV0PWhvc3Rf dG9fdGFyZ2V0X3NlbWlkX2RzKHRhcmdldF9zdS0+YnVmLGRzLCBwZ19hY2Nl c3MpICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICB1bmxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQogCSAgIGJyZWFr Ow0KIAljYXNlIEdFVFZBTDoNCiAJY2FzZSBTRVRWQUw6DQogICAgICAgICAg ICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDAp Ow0KKyAgICAgICAgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdl dF9zdSxzaXplb2YoKnRhcmdldF9zdSkscGdfYWNjZXNzKSApIHJldHVybiAt cmV0Ow0KIAkgICB0YXJnZXRfc3UtPnZhbCA9IHRzd2FwbChob3N0X3N1LT52 YWwpOw0KICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9z dSwgdGFyZ2V0X2FkZHIsIDEpOw0KIAkgICBicmVhazsNCiAgICAgICAgIGRl ZmF1bHQ6DQogCSAgIHRhcmdldF9zdS0+YXJyYXkgPSB0c3dhcGwoaG9zdF9z dS0+YXJyYXkpOw0KICAgICB9DQorDQorICAgIHJldHVybiByZXQ7DQogfQ0K IA0KIHN0YXRpYyBpbmxpbmUgbG9uZyBkb19zZW1jdGwobG9uZyBmaXJzdCwg bG9uZyBzZWNvbmQsIGxvbmcgdGhpcmQsIGxvbmcgcHRyKQ0KQEAgLTEyODYs MzQgKzEzNDUsMzQgQEANCiANCiAgICAgc3dpdGNoKCBjbWQgKSB7DQogCWNh c2UgR0VUVkFMOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NlbXVu KGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCByZXQ9 dGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyxQQUdF X1dSSVRFKSApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgIHJldCA9IGdl dF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0g ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcs JmRzYXJnKTsNCisgICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihj bWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfV1JJVEUpOw0KICAgICAgICAgICAg IGJyZWFrOw0KIAljYXNlIFNFVFZBTDoNCi0gICAgICAgICAgICB0YXJnZXRf dG9faG9zdF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnKTsNCisgICAgICAg ICAgICBpZiggcmV0PXRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0 ciwmZHNhcmcsUEFHRV9SRUFEKSApIHJldHVybiAtcmV0Ow0KICAgICAgICAg ICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21k LCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihj bWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAgICAgICAgICBob3N0X3RvX3Rh cmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBBR0VfUkVBRCk7DQog ICAgICAgICAgICAgYnJlYWs7DQogCWNhc2UgR0VUQUxMOg0KLSAgICAgICAg ICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcp Ow0KKyAgICAgICAgICAgIGlmKCByZXQ9dGFyZ2V0X3RvX2hvc3Rfc2VtdW4o Y21kLCZhcmcscHRyLCZkc2FyZyxQQUdFX1dSSVRFKSApIHJldHVybiAtcmV0 Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3Qs IHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0X3RvX3Rh cmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAgICAgICAg ICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnLFBB R0VfV1JJVEUpOw0KICAgICAgICAgICAgIGJyZWFrOw0KIAljYXNlIFNFVEFM TDoNCi0gICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFy ZyxwdHIsJmRzYXJnKTsNCisgICAgICAgICAgICBpZiggcmV0PXRhcmdldF90 b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcsUEFHRV9SRUFEKSAp IHJldHVybiAtcmV0Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhz ZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAg ICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsN CisgICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZh cmcsJmRzYXJnLFBBR0VfUkVBRCk7DQogICAgICAgICAgICAgYnJlYWs7DQog CWNhc2UgSVBDX1NUQVQ6DQotICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rf c2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYo IHJldD10YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJn LFBBR0VfV1JJVEUpICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25kLCBjbWQsIGFyZykp Ow0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIs JmFyZywmZHNhcmcpOw0KKyAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3Nl bXVuKGNtZCxwdHIsJmFyZywmZHNhcmcsUEFHRV9SRUFEKTsNCiAgICAgICAg ICAgICBicmVhazsNCiAJY2FzZSBJUENfU0VUOg0KLSAgICAgICAgICAgIHRh cmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAg ICAgICAgICAgIGlmKCByZXQ9dGFyZ2V0X3RvX2hvc3Rfc2VtdW4oY21kLCZh cmcscHRyLCZkc2FyZyxQQUdFX1JFQUQpICkgcmV0dXJuIC1yZXQ7DQogICAg ICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbWN0bChmaXJzdCwgc2Vjb25k LCBjbWQsIGFyZykpOw0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3Nl bXVuKGNtZCxwdHIsJmFyZywmZHNhcmcpOw0KKyAgICAgICAgICAgIGhvc3Rf dG9fdGFyZ2V0X3NlbXVuKGNtZCxwdHIsJmFyZywmZHNhcmcsUEFHRV9SRUFE KTsNCiAgICAgICAgICAgICBicmVhazsNCiAgICAgZGVmYXVsdDoNCiAgICAg ICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQs IGNtZCwgYXJnKSk7DQpAQCAtMTM0MCwxMyArMTM5OSwxNiBAQA0KICAgdGFy Z2V0X3Vsb25nIF9fdW51c2VkNTsNCiB9Ow0KIA0KLXN0YXRpYyBpbmxpbmUg dm9pZCB0YXJnZXRfdG9faG9zdF9tc3FpZF9kcyhzdHJ1Y3QgbXNxaWRfZHMg Kmhvc3RfbWQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQ0KK3N0YXRpYyBp bmxpbmUgbG9uZyB0YXJnZXRfdG9faG9zdF9tc3FpZF9kcyhzdHJ1Y3QgbXNx aWRfZHMgKmhvc3RfbWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBw Z19hY2Nlc3MpDQogew0KKyAgICBsb25nIHJldCA9IDA7DQogICAgIHN0cnVj dCB0YXJnZXRfbXNxaWRfZHMgKnRhcmdldF9tZDsNCiANCiAgICAgbG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfbWQsIHRhcmdldF9hZGRyLCAxKTsNCi0gICAg dGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oJihob3N0X21kLT5tc2dfcGVybSks dGFyZ2V0X2FkZHIpOw0KKyAgICBpZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2Uo dGFyZ2V0X21kLHNpemVvZigqdGFyZ2V0X21kKSxwZ19hY2Nlc3MpICkgcmV0 dXJuIC1yZXQ7DQorICAgIHRhcmdldF90b19ob3N0X2lwY19wZXJtKCYoaG9z dF9tZC0+bXNnX3Blcm0pLHRhcmdldF9hZGRyLHBnX2FjY2Vzcyk7DQogICAg IGhvc3RfbWQtPm1zZ19zdGltZSA9IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19z dGltZSk7DQogICAgIGhvc3RfbWQtPm1zZ19ydGltZSA9IHRzd2FwbCh0YXJn ZXRfbWQtPm1zZ19ydGltZSk7DQogICAgIGhvc3RfbWQtPm1zZ19jdGltZSA9 IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19jdGltZSk7DQpAQCAtMTM1NiwxNSAr MTQxOCwxOSBAQA0KICAgICBob3N0X21kLT5tc2dfbHNwaWQgPSB0c3dhcGwo dGFyZ2V0X21kLT5tc2dfbHNwaWQpOw0KICAgICBob3N0X21kLT5tc2dfbHJw aWQgPSB0c3dhcGwodGFyZ2V0X21kLT5tc2dfbHJwaWQpOw0KICAgICB1bmxv Y2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMCk7DQor ICAgIHJldHVybiByZXQ7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBo b3N0X3RvX3RhcmdldF9tc3FpZF9kcyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCkNCitzdGF0aWMgaW5saW5l IGxvbmcgaG9zdF90b190YXJnZXRfbXNxaWRfZHModGFyZ2V0X3Vsb25nIHRh cmdldF9hZGRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNj ZXNzKQ0KIHsNCisgICAgbG9uZyByZXQgPSAwOw0KICAgICBzdHJ1Y3QgdGFy Z2V0X21zcWlkX2RzICp0YXJnZXRfbWQ7DQogDQogICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMCk7DQotICAgIGhvc3Rf dG9fdGFyZ2V0X2lwY19wZXJtKHRhcmdldF9hZGRyLCYoaG9zdF9tZC0+bXNn X3Blcm0pKTsNCisgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdl dF9tZCxzaXplb2YoKnRhcmdldF9tZCkscGdfYWNjZXNzKSApIHJldHVybiAt cmV0Ow0KKyAgICBob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJnZXRfYWRk ciwmKGhvc3RfbWQtPm1zZ19wZXJtKSxwZ19hY2Nlc3MpOw0KICAgICB0YXJn ZXRfbWQtPm1zZ19zdGltZSA9IHRzd2FwbChob3N0X21kLT5tc2dfc3RpbWUp Ow0KICAgICB0YXJnZXRfbWQtPm1zZ19ydGltZSA9IHRzd2FwbChob3N0X21k LT5tc2dfcnRpbWUpOw0KICAgICB0YXJnZXRfbWQtPm1zZ19jdGltZSA9IHRz d2FwbChob3N0X21kLT5tc2dfY3RpbWUpOw0KQEAgLTEzNzQsNiArMTQ0MCw4 IEBADQogICAgIHRhcmdldF9tZC0+bXNnX2xzcGlkID0gdHN3YXBsKGhvc3Rf bWQtPm1zZ19sc3BpZCk7DQogICAgIHRhcmdldF9tZC0+bXNnX2xycGlkID0g dHN3YXBsKGhvc3RfbWQtPm1zZ19scnBpZCk7DQogICAgIHVubG9ja191c2Vy X3N0cnVjdCh0YXJnZXRfbWQsIHRhcmdldF9hZGRyLCAxKTsNCisNCisgICAg cmV0dXJuIHJldDsNCiB9DQogDQogc3RhdGljIGlubGluZSBsb25nIGRvX21z Z2N0bChsb25nIGZpcnN0LCBsb25nIHNlY29uZCwgbG9uZyBwdHIpDQpAQCAt MTM4MywxMCArMTQ1MSwxNSBAQA0KICAgICBsb25nIHJldCA9IDA7DQogICAg IHN3aXRjaCggY21kICkgew0KICAgICBjYXNlIElQQ19TVEFUOg0KKyAgICAg ICAgaWYoIHJldD10YXJnZXRfdG9faG9zdF9tc3FpZF9kcygmZHNhcmcscHRy LFBBR0VfV1JJVEUpICkgcmV0dXJuIC1yZXQ7DQorICAgICAgICByZXQgPSBn ZXRfZXJybm8obXNnY3RsKGZpcnN0LCBjbWQsICZkc2FyZykpOw0KKyAgICAg ICAgaG9zdF90b190YXJnZXRfbXNxaWRfZHMocHRyLCZkc2FyZyxQQUdFX1dS SVRFKTsNCisJYnJlYWs7DQogICAgIGNhc2UgSVBDX1NFVDoNCi0gICAgICAg IHRhcmdldF90b19ob3N0X21zcWlkX2RzKCZkc2FyZyxwdHIpOw0KKyAgICAg ICAgaWYoIHJldD10YXJnZXRfdG9faG9zdF9tc3FpZF9kcygmZHNhcmcscHRy LFBBR0VfUkVBRCkgKSByZXR1cm4gLXJldDsNCiAgICAgICAgIHJldCA9IGdl dF9lcnJubyhtc2djdGwoZmlyc3QsIGNtZCwgJmRzYXJnKSk7DQotICAgICAg ICBob3N0X3RvX3RhcmdldF9tc3FpZF9kcyhwdHIsJmRzYXJnKTsNCisgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X21zcWlkX2RzKHB0ciwmZHNhcmcsUEFHRV9X UklURSk7DQorCWJyZWFrOw0KICAgICBkZWZhdWx0Og0KICAgICAgICAgcmV0 ID0gZ2V0X2Vycm5vKG1zZ2N0bChmaXJzdCwgY21kLCAmZHNhcmcpKTsNCiAg ICAgfQ0KQEAgLTE0MDUsNiArMTQ3OCw3IEBADQogICAgIGxvbmcgcmV0ID0g MDsNCiANCiAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfbWIsbXNncCww KTsNCisgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdldF9tYixz aXplb2YobG9uZykrbXNnc3osUEFHRV9SRUFEKSApIHJldHVybiAtcmV0Ow0K ICAgICBob3N0X21iID0gbWFsbG9jKG1zZ3N6K3NpemVvZihsb25nKSk7DQog ICAgIGhvc3RfbWItPm10eXBlID0gdHN3YXBsKHRhcmdldF9tYi0+bXR5cGUp Ow0KICAgICBtZW1jcHkoaG9zdF9tYi0+bXRleHQsdGFyZ2V0X21iLT5tdGV4 dCxtc2dzeik7DQpAQCAtMTQyMiw2ICsxNDk2LDcgQEANCiAgICAgbG9uZyBy ZXQgPSAwOw0KIA0KICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tYixt c2dwLDApOw0KKyAgICBpZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2UodGFyZ2V0 X21iLHNpemVvZihsb25nKSttc2dzeixQQUdFX1dSSVRFKSApIHJldHVybiAt cmV0Ow0KICAgICBob3N0X21iID0gbWFsbG9jKG1zZ3N6K3NpemVvZihsb25n KSk7DQogICAgIHJldCA9IGdldF9lcnJubyhtc2dyY3YobXNxaWQsIGhvc3Rf bWIsIG1zZ3N6LCAxLCBtc2dmbGcpKTsNCiAgICAgaWYoIHJldCA+IDAgKQ0K QEAgLTI3MDEsNiArMjc3Niw3IEBADQogICAgICAgICAgICAgc3RydWN0IHRh cmdldF9zaWdhY3Rpb24gYWN0LCBvYWN0LCAqcGFjdDsNCiAgICAgICAgICAg ICBpZiAoYXJnMikgew0KICAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3Ry dWN0KG9sZF9hY3QsIGFyZzIsIDEpOw0KKyAgICAgICAgICAgICAgICBpZigg cmV0PXBhZ2VfY2hlY2tfcmFuZ2Uob2xkX2FjdCxzaXplb2YoKm9sZF9hY3Qp LFBBR0VfUkVBRCkgKSByZXR1cm4gLXJldDsNCiAgICAgICAgICAgICAgICAg YWN0Ll9zYV9oYW5kbGVyID0gb2xkX2FjdC0+X3NhX2hhbmRsZXI7DQogICAg ICAgICAgICAgICAgIHRhcmdldF9zaWdpbml0c2V0KCZhY3Quc2FfbWFzaywg b2xkX2FjdC0+c2FfbWFzayk7DQogICAgICAgICAgICAgICAgIGFjdC5zYV9m bGFncyA9IG9sZF9hY3QtPnNhX2ZsYWdzOw0KQEAgLTI3MTMsNiArMjc4OSw3 IEBADQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGRvX3NpZ2FjdGlv bihhcmcxLCBwYWN0LCAmb2FjdCkpOw0KICAgICAgICAgICAgIGlmICghaXNf ZXJyb3IocmV0KSAmJiBhcmczKSB7DQogICAgICAgICAgICAgICAgIGxvY2tf dXNlcl9zdHJ1Y3Qob2xkX2FjdCwgYXJnMywgMCk7DQorICAgICAgICAgICAg ICAgIGlmKCByZXQ9cGFnZV9jaGVja19yYW5nZShvbGRfYWN0LHNpemVvZigq b2xkX2FjdCksUEFHRV9XUklURSkgKSByZXR1cm4gLXJldDsNCiAgICAgICAg ICAgICAgICAgb2xkX2FjdC0+X3NhX2hhbmRsZXIgPSBvYWN0Ll9zYV9oYW5k bGVyOw0KICAgICAgICAgICAgICAgICBvbGRfYWN0LT5zYV9tYXNrID0gb2Fj dC5zYV9tYXNrLnNpZ1swXTsNCiAgICAgICAgICAgICAgICAgb2xkX2FjdC0+ c2FfZmxhZ3MgPSBvYWN0LnNhX2ZsYWdzOw0KQEAgLTI3MjQsNiArMjgwMSw3 IEBADQogDQogCSAgICBpZiAoYXJnMikgew0KIAkJbG9ja191c2VyX3N0cnVj dChvbGRfYWN0LCBhcmcyLCAxKTsNCisJCWlmKCByZXQ9cGFnZV9jaGVja19y YW5nZShvbGRfYWN0LHNpemVvZigqb2xkX2FjdCksUEFHRV9SRUFEKSApIHJl dHVybiAtcmV0Ow0KIAkJYWN0Ll9zYV9oYW5kbGVyID0gb2xkX2FjdC0+X3Nh X2hhbmRsZXI7DQogCQl0YXJnZXRfc2lnaW5pdHNldCgmYWN0LnNhX21hc2ss IG9sZF9hY3QtPnNhX21hc2suc2lnWzBdKTsNCiAJCWFjdC5zYV9mbGFncyA9 IG9sZF9hY3QtPnNhX2ZsYWdzOw0KQEAgLTI3MzcsNiArMjgxNSw3IEBADQog DQogCSAgICBpZiAoIWlzX2Vycm9yKHJldCkgJiYgYXJnMykgew0KIAkJbG9j a191c2VyX3N0cnVjdChvbGRfYWN0LCBhcmczLCAwKTsNCisJCWlmKCByZXQ9 cGFnZV9jaGVja19yYW5nZShvbGRfYWN0LHNpemVvZigqb2xkX2FjdCksUEFH RV9XUklURSkgKSByZXR1cm4gLXJldDsNCiAJCW9sZF9hY3QtPl9zYV9oYW5k bGVyID0gb2FjdC5fc2FfaGFuZGxlcjsNCiAJCW9sZF9hY3QtPnNhX2ZsYWdz ID0gb2FjdC5zYV9mbGFnczsNCiAJCW9sZF9hY3QtPnNhX21hc2suc2lnWzBd ID0gb2FjdC5zYV9tYXNrLnNpZ1swXTsNCkBAIC0yNzUzLDEyICsyODMyLDE2 IEBADQogICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zaWdhY3Rpb24gKmFj dDsNCiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqb2Fj dDsNCiANCi0gICAgICAgICAgICBpZiAoYXJnMikNCisgICAgICAgICAgICBp ZiAoYXJnMikgew0KICAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0 KGFjdCwgYXJnMiwgMSk7DQorICAgICAgICAgICAgICAgIGlmKCByZXQ9cGFn ZV9jaGVja19yYW5nZShhY3Qsc2l6ZW9mKCphY3QpLFBBR0VfUkVBRCkgKSBy ZXR1cm4gLXJldDsNCisgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg IGVsc2UNCiAgICAgICAgICAgICAgICAgYWN0ID0gTlVMTDsNCi0gICAgICAg ICAgICBpZiAoYXJnMykNCisgICAgICAgICAgICBpZiAoYXJnMykgew0KICAg ICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KG9hY3QsIGFyZzMsIDAp Ow0KKyAgICAgICAgICAgICAgICBpZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2Uo b2FjdCxzaXplb2YoKm9hY3QpLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1yZXQ7 DQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBlbHNlDQogICAg ICAgICAgICAgICAgIG9hY3QgPSBOVUxMOw0KICAgICAgICAgICAgIHJldCA9 IGdldF9lcnJubyhkb19zaWdhY3Rpb24oYXJnMSwgYWN0LCBvYWN0KSk7DQpA QCAtMzM0MSw2ICszNDI0LDcgQEANCiAgICAgICAgICAgICAgICAgc3RydWN0 IHRhcmdldF9zdGF0ICp0YXJnZXRfc3Q7DQogICAgICAgICAgICAgICAgIA0K ICAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdCwg YXJnMiwgMCk7DQorICAgICAgICAgICAgICAgIGlmKCByZXQ9cGFnZV9jaGVj a19yYW5nZSh0YXJnZXRfc3Qsc2l6ZW9mKCp0YXJnZXRfc3QpLFBBR0VfV1JJ VEUpICkgcmV0dXJuIC1yZXQ7DQogICAgICAgICAgICAgICAgIHRhcmdldF9z dC0+c3RfZGV2ID0gdHN3YXAxNihzdC5zdF9kZXYpOw0KICAgICAgICAgICAg ICAgICB0YXJnZXRfc3QtPnN0X2lubyA9IHRzd2FwbChzdC5zdF9pbm8pOw0K ICNpZiBkZWZpbmVkKFRBUkdFVF9QUEMpIHx8IGRlZmluZWQoVEFSR0VUX01J UFMpDQpAQCAtMzg0MCw2ICszOTI0LDcgQEANCiAjaWZkZWYgVEFSR0VUX05S X3N0YXQ2NA0KICAgICBjYXNlIFRBUkdFVF9OUl9zdGF0NjQ6DQogICAgICAg ICBwID0gbG9ja191c2VyX3N0cmluZyhhcmcxKTsNCisgICAgICAgIGlmKCBy ZXQ9cGFnZV9jaGVja19yYW5nZShwLDEsUEFHRV9SRUFEKSApIHJldHVybiAt cmV0Ow0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHN0YXQocGF0aChwKSwg JnN0KSk7DQogICAgICAgICB1bmxvY2tfdXNlcihwLCBhcmcxLCAwKTsNCiAg ICAgICAgIGdvdG8gZG9fc3RhdDY0Ow0KQEAgLTM4NDcsNiArMzkzMiw3IEBA DQogI2lmZGVmIFRBUkdFVF9OUl9sc3RhdDY0DQogICAgIGNhc2UgVEFSR0VU X05SX2xzdGF0NjQ6DQogICAgICAgICBwID0gbG9ja191c2VyX3N0cmluZyhh cmcxKTsNCisgICAgICAgIGlmKCByZXQ9cGFnZV9jaGVja19yYW5nZShwLDEs UEFHRV9SRUFEKSApIHJldHVybiAtcmV0Ow0KICAgICAgICAgcmV0ID0gZ2V0 X2Vycm5vKGxzdGF0KHBhdGgocCksICZzdCkpOw0KICAgICAgICAgdW5sb2Nr X3VzZXIocCwgYXJnMSwgMCk7DQogICAgICAgICBnb3RvIGRvX3N0YXQ2NDsN CkBAIC0zODYxLDYgKzM5NDcsNyBAQA0KICAgICAgICAgICAgICAgICBpZiAo KChDUFVBUk1TdGF0ZSAqKWNwdV9lbnYpLT5lYWJpKSB7DQogICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X2VhYmlfc3RhdDY0ICp0YXJnZXRf c3Q7DQogICAgICAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRh cmdldF9zdCwgYXJnMiwgMSk7DQorICAgICAgICAgICAgICAgICAgICBpZigg cmV0PXBhZ2VfY2hlY2tfcmFuZ2UodGFyZ2V0X3N0LHNpemVvZigqdGFyZ2V0 X3N0KSxQQUdFX1dSSVRFKSApIHJldHVybiAtcmV0Ow0KICAgICAgICAgICAg ICAgICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9mKHN0cnVjdCB0 YXJnZXRfZWFiaV9zdGF0NjQpKTsNCiAgICAgICAgICAgICAgICAgICAgIC8q IHB1dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCiAgICAgICAgICAg ICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2RldiwgJnRhcmdldF9zdC0+c3Rf ZGV2KTsNCkBAIC0zODg2LDYgKzM5NzMsNyBAQA0KICAgICAgICAgICAgICAg ICB7DQogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3N0YXQ2 NCAqdGFyZ2V0X3N0Ow0KICAgICAgICAgICAgICAgICAgICAgbG9ja191c2Vy X3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDEpOw0KKyAgICAgICAgICAgICAg ICAgICAgaWYoIHJldD1wYWdlX2NoZWNrX3JhbmdlKHRhcmdldF9zdCxzaXpl b2YoKnRhcmdldF9zdCksUEFHRV9XUklURSkgKSByZXR1cm4gLXJldDsNCiAg ICAgICAgICAgICAgICAgICAgIG1lbXNldCh0YXJnZXRfc3QsIDAsIHNpemVv ZihzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCkpOw0KICAgICAgICAgICAgICAgICAg ICAgLyogPz8/IHB1dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCiAg ICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2RldiwgJnRhcmdl dF9zdC0+c3RfZGV2KTsNCg== ---1463811327-1014222984-1174682110=:12505--