From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IXoAg-0003aI-LH for qemu-devel@nongnu.org; Tue, 18 Sep 2007 21:16:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IXoAf-0003Xq-9c for qemu-devel@nongnu.org; Tue, 18 Sep 2007 21:16:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IXoAf-0003XP-2D for qemu-devel@nongnu.org; Tue, 18 Sep 2007 21:16:05 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IXoAe-000640-Gb for qemu-devel@nongnu.org; Tue, 18 Sep 2007 21:16:04 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1IXoAd-0007Wv-00 for ; Tue, 18 Sep 2007 21:16:03 -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 IoQNvNlFwbPL for ; Tue, 18 Sep 2007 21:15:44 -0400 (EDT) Received: from h134.99.28.71.ip.alltel.net ([71.28.99.134] helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1IXoA5-0007Re-00 for ; Tue, 18 Sep 2007 21:15:29 -0400 Date: Tue, 18 Sep 2007 21:15:08 -0400 (EDT) From: Stuart Anderson Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-175645891-1190164508=:20150" Subject: [Qemu-devel] RFC: [3/11] EFAULT patch 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-175645891-1190164508=:20150 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed This part contains the changes to teh socket interfaces. This includes updates to the functions for reading and writing struct sockaddr, as well as updates and some fixes to do_setsockopt() and do_getsockopt(). The implementations of bind() connect(), accept(), getpeername() and getsockname() have adjustments to use the newer kernel-like apis. the same is true for the functions that implement send(), sendto(), recv() and recvfrom(). 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-175645891-1190164508=:20150 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=06_efault.patch.3 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: efault patch 3 of 11 Content-Disposition: attachment; filename=06_efault.patch.3 SW5kZXg6IHFlbXUvbGludXgtdXNlci9zeXNjYWxsLmMNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCi0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9zeXNjYWxs LmMJMjAwNy0wOS0xNyAwMDo1NTozNC4wMDAwMDAwMDAgLTA0MDANCisrKyBx ZW11L2xpbnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDktMTcgMDE6MDA6MzYu MDAwMDAwMDAwIC0wNDAwDQpAQCAtNTI3LDI4ICs1MjcsMjQgQEANCiAgICAg cmV0dXJuIHJldDsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdl dF90b19ob3N0X3NvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgbG9uZyBj b3B5X2Zyb21fdXNlcl9zb2NrYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKiB0YXJnZXRfc2FkZHIsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ts ZW5fdCBsZW4pDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3NvY2thZGRyICp0 YXJnZXRfc2FkZHI7DQorICAgIGlmKCBjb3B5X2Zyb21fdXNlcihhZGRyLHRh cmdldF9zYWRkcixsZW4pICkgcmV0dXJuIC0xOw0KKyAgICBfX2dldF91c2Vy KGFkZHItPnNhX2ZhbWlseSwgJnRhcmdldF9zYWRkci0+c2FfZmFtaWx5KTsN CiANCi0gICAgdGFyZ2V0X3NhZGRyID0gbG9ja191c2VyKHRhcmdldF9hZGRy LCBsZW4sIDEpOw0KLSAgICBtZW1jcHkoYWRkciwgdGFyZ2V0X3NhZGRyLCBs ZW4pOw0KLSAgICBhZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KHRhcmdldF9z YWRkci0+c2FfZmFtaWx5KTsNCi0gICAgdW5sb2NrX3VzZXIodGFyZ2V0X3Nh ZGRyLCB0YXJnZXRfYWRkciwgMCk7DQorICAgIHJldHVybiAwOw0KIH0NCiAN Ci1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfc29ja2FkZHIo dGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgbG9u ZyBjb3B5X3RvX3VzZXJfc29ja2FkZHIoc3RydWN0IHRhcmdldF9zb2NrYWRk ciAqdGFyZ2V0X3NhZGRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ts ZW5fdCBsZW4pDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3NvY2thZGRyICp0 YXJnZXRfc2FkZHI7DQorICAgIGlmKCBjb3B5X3RvX3VzZXIodGFyZ2V0X3Nh ZGRyLGFkZHIsbGVuKSApIHJldHVybiAtMTsNCisgICAgX19wdXRfdXNlcihh ZGRyLT5zYV9mYW1pbHksICZ0YXJnZXRfc2FkZHItPnNhX2ZhbWlseSk7DQog DQotICAgIHRhcmdldF9zYWRkciA9IGxvY2tfdXNlcih0YXJnZXRfYWRkciwg bGVuLCAwKTsNCi0gICAgbWVtY3B5KHRhcmdldF9zYWRkciwgYWRkciwgbGVu KTsNCi0gICAgdGFyZ2V0X3NhZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KGFk ZHItPnNhX2ZhbWlseSk7DQotICAgIHVubG9ja191c2VyKHRhcmdldF9zYWRk ciwgdGFyZ2V0X2FkZHIsIGxlbik7DQorICAgIHJldHVybiAwOw0KIH0NCiAN CiAvKiA/Pz8gU2hvdWxkIHRoaXMgYWxzbyBzd2FwIG1zZ2gtPm5hbWU/ICAq Lw0KQEAgLTY1MSw2ICs2NDcsOCBAQA0KICAgICAgICAgaWYgKG9wdGxlbiA8 IHNpemVvZih1aW50MzJfdCkpDQogICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7DQogICAgICAgIA0KKyAgICAgIGlmKCAhYWNjZXNzX29rKFZFUklGWV9S RUFELCBvcHR2YWwsIG9wdGxlbikgKQ0KKyAgICAgICAgICAgIHJldHVybiAt RUZBVUxUOw0KICAgICAgICAgdmFsID0gdGdldDMyKG9wdHZhbCk7DQogICAg ICAgICByZXQgPSBnZXRfZXJybm8oc2V0c29ja29wdChzb2NrZmQsIGxldmVs LCBvcHRuYW1lLCAmdmFsLCBzaXplb2YodmFsKSkpOw0KICAgICAgICAgYnJl YWs7DQpAQCAtNjcyLDYgKzY3MCw4IEBADQogICAgICAgICBjYXNlIElQX01V TFRJQ0FTVF9UVEw6DQogICAgICAgICBjYXNlIElQX01VTFRJQ0FTVF9MT09Q Og0KICAgICAgICAgICAgIHZhbCA9IDA7DQorCSAgICBpZiggIWFjY2Vzc19v ayhWRVJJRllfUkVBRCwgb3B0dmFsLCBvcHRsZW4pICkNCisgICAgICAgICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgaWYgKG9wdGxl biA+PSBzaXplb2YodWludDMyX3QpKSB7DQogICAgICAgICAgICAgICAgIHZh bCA9IHRnZXQzMihvcHR2YWwpOw0KICAgICAgICAgICAgIH0gZWxzZSBpZiAo b3B0bGVuID49IDEpIHsNCkBAIC02ODAsNyArNjgwLDcgQEANCiAgICAgICAg ICAgICByZXQgPSBnZXRfZXJybm8oc2V0c29ja29wdChzb2NrZmQsIGxldmVs LCBvcHRuYW1lLCAmdmFsLCBzaXplb2YodmFsKSkpOw0KICAgICAgICAgICAg IGJyZWFrOw0KICAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICBnb3Rv IHVuaW1wbGVtZW50ZWQ7DQorCSAgICAgZ290byB1bmltcGxlbWVudGVkOw0K ICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgVEFSR0VU X1NPTF9TT0NLRVQ6DQpAQCAtNzQ2LDggKzc0NiwxMSBAQA0KICAgICAgICAg ZGVmYXVsdDoNCiAgICAgICAgICAgICBnb3RvIHVuaW1wbGVtZW50ZWQ7DQog ICAgICAgICB9DQotCWlmIChvcHRsZW4gPCBzaXplb2YodWludDMyX3QpKQ0K LQlyZXR1cm4gLUVJTlZBTDsNCisgICAgICAgIGlmIChvcHRsZW4gPCBzaXpl b2YodWludDMyX3QpKQ0KKwkgIHJldHVybiAtRUlOVkFMOw0KKyAgICAgICAg aWYoICFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIG9wdHZhbCwgb3B0bGVuKSAp DQorICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KKw0KIA0KIAl2YWwgPSB0 Z2V0MzIob3B0dmFsKTsNCiAJcmV0ID0gZ2V0X2Vycm5vKHNldHNvY2tvcHQo c29ja2ZkLCBTT0xfU09DS0VULCBvcHRuYW1lLCAmdmFsLCBzaXplb2YodmFs KSkpOw0KQEAgLTc1NSwxMyArNzU4LDEzIEBADQogICAgIGRlZmF1bHQ6DQog ICAgIHVuaW1wbGVtZW50ZWQ6DQogICAgICAgICBnZW11X2xvZygiVW5zdXBw b3J0ZWQgc2V0c29ja29wdCBsZXZlbD0lZCBvcHRuYW1lPSVkIFxuIiwgbGV2 ZWwsIG9wdG5hbWUpOw0KLSAgICAgICAgcmV0ID0gLUVOT1NZUzsNCisgICAg ICAgIHJldCA9IC1FTk9QUk9UT09QVDsNCiAgICAgfQ0KICAgICByZXR1cm4g cmV0Ow0KIH0NCiANCiBzdGF0aWMgbG9uZyBkb19nZXRzb2Nrb3B0KGludCBz b2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsDQotICAgICAgICAgICAg ICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgb3B0dmFsLCB0YXJnZXRfdWxv bmcgb3B0bGVuKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIG9wdHZhbCwgc29ja2xlbl90ICpvcHRsZW4pDQogew0KICAgICBp bnQgbGVuLCBsdiwgdmFsLCByZXQ7DQogDQpAQCAtNzgzLDcgKzc4NiwxMCBA QA0KICAgICBjYXNlIFNPTF9UQ1A6DQogICAgICAgICAvKiBUQ1Agb3B0aW9u cyBhbGwgdGFrZSBhbiAnaW50JyB2YWx1ZS4gICovDQogICAgIGludF9jYXNl Og0KLSAgICAgICAgbGVuID0gdGdldDMyKG9wdGxlbik7DQorCWlmKCBnZXRf dXNlcihsZW4sb3B0bGVuKSApDQorICAgICAgICAgICAgcmV0dXJuIC1FRkFV TFQ7DQorCWlmKCAhYWNjZXNzX29rKFZFUklGWV9XUklURSwgb3B0dmFsLGxl bikgKQ0KKyAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAg aWYgKGxlbiA8IDApDQogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQog ICAgICAgICBsdiA9IHNpemVvZihpbnQpOw0KQEAgLTgxNiw3ICs4MjIsMTAg QEANCiAjZW5kaWYNCiAgICAgICAgIGNhc2UgSVBfTVVMVElDQVNUX1RUTDoN CiAgICAgICAgIGNhc2UgSVBfTVVMVElDQVNUX0xPT1A6DQotICAgICAgICAg ICAgbGVuID0gdGdldDMyKG9wdGxlbik7DQorCSAgICBpZiggZ2V0X3VzZXIo bGVuLG9wdGxlbikgKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCisJaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCBvcHR2YWwsbGVu KSApDQorICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAg ICAgaWYgKGxlbiA8IDApDQogICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KICAgICAgICAgICAgIGx2ID0gc2l6ZW9mKGludCk7DQpAQCAtODM1 LDE0ICs4NDQsMTUgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAg YnJlYWs7DQogICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgIGdvdG8g dW5pbXBsZW1lbnRlZDsNCisgICAgICAgICAgICByZXQgPSAtRU5PUFJPVE9P UFQ7DQorICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICB9DQogICAgICAg ICBicmVhazsNCiAgICAgZGVmYXVsdDoNCiAgICAgdW5pbXBsZW1lbnRlZDoN CiAgICAgICAgIGdlbXVfbG9nKCJnZXRzb2Nrb3B0IGxldmVsPSVkIG9wdG5h bWU9JWQgbm90IHlldCBzdXBwb3J0ZWRcbiIsDQogICAgICAgICAgICAgICAg ICBsZXZlbCwgb3B0bmFtZSk7DQotICAgICAgICByZXQgPSAtRU5PU1lTOw0K KyAgICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7DQogICAgICAgICBicmVhazsN CiAgICAgfQ0KICAgICByZXR1cm4gcmV0Ow0KQEAgLTkxMSw3ICs5MjEsNyBA QA0KIHsNCiAgICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRybGVuKTsNCiAg ICANCi0gICAgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0 X2FkZHIsIGFkZHJsZW4pOw0KKyAgICBpZiggY29weV9mcm9tX3VzZXJfc29j a2FkZHIoYWRkciwgKHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKil0YXJnZXRf YWRkciwgYWRkcmxlbikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgcmV0dXJu IGdldF9lcnJubyhiaW5kKHNvY2tmZCwgYWRkciwgYWRkcmxlbikpOw0KIH0N CiANCkBAIC05MjAsNyArOTMwLDcgQEANCiB7DQogICAgIHZvaWQgKmFkZHIg PSBhbGxvY2EoYWRkcmxlbik7DQogICAgDQotICAgIHRhcmdldF90b19ob3N0 X3NvY2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKTsNCisgICAg aWYoIGNvcHlfZnJvbV91c2VyX3NvY2thZGRyKGFkZHIsIChzdHJ1Y3QgdGFy Z2V0X3NvY2thZGRyICopdGFyZ2V0X2FkZHIsIGFkZHJsZW4pICkgcmV0dXJu IC1FRkFVTFQ7DQogICAgIHJldHVybiBnZXRfZXJybm8oY29ubmVjdChzb2Nr ZmQsIGFkZHIsIGFkZHJsZW4pKTsNCiB9DQogDQpAQCAtOTM3LDkgKzk0Nywx MCBAQA0KICAgICBsb2NrX3VzZXJfc3RydWN0KG1zZ3AsIHRhcmdldF9tc2cs IDEpOw0KICAgICBpZiAobXNncC0+bXNnX25hbWUpIHsNCiAgICAgICAgIG1z Zy5tc2dfbmFtZWxlbiA9IHRzd2FwMzIobXNncC0+bXNnX25hbWVsZW4pOw0K KwlpZiggbXNnLm1zZ19uYW1lbGVuID4gc2l6ZW9mKHN0cnVjdCBzb2NrYWRk cl9zdG9yYWdlKSApIHJldHVybiAtRUlOVkFMOw0KICAgICAgICAgbXNnLm1z Z19uYW1lID0gYWxsb2NhKG1zZy5tc2dfbmFtZWxlbik7DQotICAgICAgICB0 YXJnZXRfdG9faG9zdF9zb2NrYWRkcihtc2cubXNnX25hbWUsIHRzd2FwbCht c2dwLT5tc2dfbmFtZSksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtc2cubXNnX25hbWVsZW4pOw0KKyAgICAgICAgaWYoIGNvcHlfZnJv bV91c2VyX3NvY2thZGRyKG1zZy5tc2dfbmFtZSwgKHN0cnVjdCB0YXJnZXRf c29ja2FkZHIgKiltc2dwLT5tc2dfbmFtZSwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1zZy5tc2dfbmFtZWxlbikgKSByZXR1cm4gLUVG QVVMVDsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIG1zZy5tc2dfbmFtZSA9 IE5VTEw7DQogICAgICAgICBtc2cubXNnX25hbWVsZW4gPSAwOw0KQEAgLTk2 OCw0NiArOTc5LDU1IEBADQogfQ0KIA0KIHN0YXRpYyBsb25nIGRvX2FjY2Vw dChpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQ0K KyAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKnRhcmdldF9hZGRy bGVuKQ0KIHsNCi0gICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIodGFy Z2V0X2FkZHJsZW4pOw0KLSAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJs ZW4pOw0KKyAgICBzb2NrbGVuX3QgYWRkcmxlbjsNCisgICAgdm9pZCAqYWRk cjsNCiAgICAgbG9uZyByZXQ7DQogDQorICAgIGlmKCBnZXRfdXNlcihhZGRy bGVuLHRhcmdldF9hZGRybGVuKSApIHJldHVybiAtRUlOVkFMOw0KKyAgICBh ZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KKw0KICAgICByZXQgPSBnZXRfZXJy bm8oYWNjZXB0KGZkLCBhZGRyLCAmYWRkcmxlbikpOw0KICAgICBpZiAoIWlz X2Vycm9yKHJldCkpIHsNCi0gICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2th ZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAgIGlm KCBjb3B5X3RvX3VzZXJfc29ja2FkZHIoKHN0cnVjdCB0YXJnZXRfc29ja2Fk ZHIgKil0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbikgKSByZXR1cm4gLUVG QVVMVDsNCiAgICAgICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxl bik7DQogICAgIH0NCiAgICAgcmV0dXJuIHJldDsNCiB9DQogDQogc3RhdGlj IGxvbmcgZG9fZ2V0cGVlcm5hbWUoaW50IGZkLCB0YXJnZXRfdWxvbmcgdGFy Z2V0X2FkZHIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIHRhcmdldF9hZGRybGVuKQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNvY2tsZW5fdCAqdGFyZ2V0X2FkZHJsZW4pDQogew0KLSAgICBz b2NrbGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7DQot ICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxlbik7DQorICAgIHNvY2ts ZW5fdCBhZGRybGVuOw0KKyAgICB2b2lkICphZGRyOw0KICAgICBsb25nIHJl dDsNCiANCisgICAgaWYoIGdldF91c2VyKGFkZHJsZW4sdGFyZ2V0X2FkZHJs ZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgIGFkZHIgPSBhbGxvY2EoYWRk cmxlbik7DQorDQogICAgIHJldCA9IGdldF9lcnJubyhnZXRwZWVybmFtZShm ZCwgYWRkciwgJmFkZHJsZW4pKTsNCiAgICAgaWYgKCFpc19lcnJvcihyZXQp KSB7DQotICAgICAgICBob3N0X3RvX3RhcmdldF9zb2NrYWRkcih0YXJnZXRf YWRkciwgYWRkciwgYWRkcmxlbik7DQotICAgICAgICB0cHV0MzIodGFyZ2V0 X2FkZHJsZW4sIGFkZHJsZW4pOw0KKyAgICAgICAgaWYoIGNvcHlfdG9fdXNl cl9zb2NrYWRkcigoc3RydWN0IHRhcmdldF9zb2NrYWRkciAqKXRhcmdldF9h ZGRyLCBhZGRyLCBhZGRybGVuKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICAg ICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLGFkZHJsZW4pOw0KICAgICB9DQog ICAgIHJldHVybiByZXQ7DQogfQ0KIA0KIHN0YXRpYyBsb25nIGRvX2dldHNv Y2tuYW1lKGludCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRf YWRkcmxlbikNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVu X3QgKnRhcmdldF9hZGRybGVuKQ0KIHsNCi0gICAgc29ja2xlbl90IGFkZHJs ZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0KLSAgICB2b2lkICphZGRy ID0gYWxsb2NhKGFkZHJsZW4pOw0KKyAgICBzb2NrbGVuX3QgYWRkcmxlbjsN CisgICAgdm9pZCAqYWRkcjsNCiAgICAgbG9uZyByZXQ7DQogDQorICAgIGlm KCBnZXRfdXNlcihhZGRybGVuLHRhcmdldF9hZGRybGVuKSApIHJldHVybiAt RUZBVUxUOw0KKyAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KKw0KICAg ICByZXQgPSBnZXRfZXJybm8oZ2V0c29ja25hbWUoZmQsIGFkZHIsICZhZGRy bGVuKSk7DQogICAgIGlmICghaXNfZXJyb3IocmV0KSkgew0KLSAgICAgICAg aG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFk ZHJsZW4pOw0KLSAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLCBhZGRy bGVuKTsNCisgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfc29ja2FkZHIoKHN0 cnVjdCB0YXJnZXRfc29ja2FkZHIgKil0YXJnZXRfYWRkciwgYWRkciwgYWRk cmxlbikgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgICAgIHRwdXQzMih0YXJn ZXRfYWRkcmxlbixhZGRybGVuKTsNCiAgICAgfQ0KICAgICByZXR1cm4gcmV0 Ow0KIH0NCkBAIC0xMDE4LDYgKzEwMzgsOCBAQA0KICAgICBpbnQgdGFiWzJd Ow0KICAgICBsb25nIHJldDsNCiANCisgICAgaWYoICFhY2Nlc3Nfb2soVkVS SUZZX1dSSVRFLHRhcmdldF90YWIsMipzaXplb2YoaW50KSkgKQ0KKwlyZXR1 cm4gLUVGQVVMVDsNCiAgICAgcmV0ID0gZ2V0X2Vycm5vKHNvY2tldHBhaXIo ZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgdGFiKSk7DQogICAgIGlmICghaXNf ZXJyb3IocmV0KSkgew0KICAgICAgICAgdHB1dDMyKHRhcmdldF90YWIsIHRh YlswXSk7DQpAQCAtMTAzMCwxOCArMTA1MiwxOCBAQA0KICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsIHNvY2tsZW5f dCBhZGRybGVuKQ0KIHsNCiAgICAgdm9pZCAqYWRkcjsNCi0gICAgdm9pZCAq aG9zdF9tc2c7DQorICAgIHZvaWQgKnRhcmdldF9tc2cgPSAodm9pZCAqKW1z ZzsNCisgICAgdm9pZCAqaG9zdF9tc2cgPSBhbGxvY2EobGVuKTsNCiAgICAg bG9uZyByZXQ7DQogDQotICAgIGhvc3RfbXNnID0gbG9ja191c2VyKG1zZywg bGVuLCAxKTsNCisgICAgaWYgKGNvcHlfZnJvbV91c2VyKGhvc3RfbXNnLHRh cmdldF9tc2csbGVuKSApIHJldHVybiAtRUZBVUxUOw0KICAgICBpZiAodGFy Z2V0X2FkZHIpIHsNCiAgICAgICAgIGFkZHIgPSBhbGxvY2EoYWRkcmxlbik7 DQotICAgICAgICB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihhZGRyLCB0YXJn ZXRfYWRkciwgYWRkcmxlbik7DQorICAgICAgICBpZiAoY29weV9mcm9tX3Vz ZXJfc29ja2FkZHIoYWRkciwgKHN0cnVjdCB0YXJnZXRfc29ja2FkZHIgKil0 YXJnZXRfYWRkciwgYWRkcmxlbikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgIHJldCA9IGdldF9lcnJubyhzZW5kdG8oZmQsIGhvc3RfbXNnLCBsZW4s IGZsYWdzLCBhZGRyLCBhZGRybGVuKSk7DQogICAgIH0gZWxzZSB7DQogICAg ICAgICByZXQgPSBnZXRfZXJybm8oc2VuZChmZCwgaG9zdF9tc2csIGxlbiwg ZmxhZ3MpKTsNCiAgICAgfQ0KLSAgICB1bmxvY2tfdXNlcihob3N0X21zZywg bXNnLCAwKTsNCiAgICAgcmV0dXJuIHJldDsNCiB9DQogDQpAQCAtMTA1MCwx MiArMTA3MiwxMyBAQA0KIHsNCiAgICAgc29ja2xlbl90IGFkZHJsZW47DQog ICAgIHZvaWQgKmFkZHI7DQotICAgIHZvaWQgKmhvc3RfbXNnOw0KKyAgICB2 b2lkICp0YXJnZXRfbXNnID0gKHZvaWQgKiltc2c7DQorICAgIHZvaWQgKmhv c3RfbXNnID0gYWxsb2NhKGxlbik7DQogICAgIGxvbmcgcmV0Ow0KIA0KLSAg ICBob3N0X21zZyA9IGxvY2tfdXNlcihtc2csIGxlbiwgMCk7DQogICAgIGlm ICh0YXJnZXRfYWRkcikgew0KLSAgICAgICAgYWRkcmxlbiA9IHRnZXQzMih0 YXJnZXRfYWRkcmxlbik7DQorCWFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2Fk ZHJsZW4pOw0KKwlpZiggYWRkcmxlbiA+IHNpemVvZihzdHJ1Y3Qgc29ja2Fk ZHJfc3RvcmFnZSkgKSByZXR1cm4gLUVJTlZBTDsNCiAgICAgICAgIGFkZHIg PSBhbGxvY2EoYWRkcmxlbik7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8o cmVjdmZyb20oZmQsIGhvc3RfbXNnLCBsZW4sIGZsYWdzLCBhZGRyLCAmYWRk cmxlbikpOw0KICAgICB9IGVsc2Ugew0KQEAgLTEwNjQsMTIgKzEwODcsMTAg QEANCiAgICAgfQ0KICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAg ICAgIGlmICh0YXJnZXRfYWRkcikgew0KLSAgICAgICAgICAgIGhvc3RfdG9f dGFyZ2V0X3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKTsN CisgICAgICAgICAgICBpZiAoY29weV90b191c2VyX3NvY2thZGRyKChzdHJ1 Y3QgdGFyZ2V0X3NvY2thZGRyICopdGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJs ZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgdHB1dDMyKHRh cmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAgICAgICAgIH0NCi0gICAgICAg IHVubG9ja191c2VyKGhvc3RfbXNnLCBtc2csIGxlbik7DQotICAgIH0gZWxz ZSB7DQotICAgICAgICB1bmxvY2tfdXNlcihob3N0X21zZywgbXNnLCAwKTsN CisgICAgICAgIGlmKCBjb3B5X3RvX3VzZXIodGFyZ2V0X21zZywgaG9zdF9t c2csIGxlbikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgfQ0KICAgICByZXR1 cm4gcmV0Ow0KIH0NCkBAIC0xMTE2LDcgKzExMzcsNyBAQA0KICAgICAgICAg ICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsNCiAgICAgICAgICAgICB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7DQog ICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuID0gdGdl dGwodnB0ciArIDIgKiBuKTsNCi0gICAgICAgICAgICByZXQgPSBkb19hY2Nl cHQoc29ja2ZkLCB0YXJnZXRfYWRkciwgdGFyZ2V0X2FkZHJsZW4pOw0KKyAg ICAgICAgICAgIHJldCA9IGRvX2FjY2VwdChzb2NrZmQsIHRhcmdldF9hZGRy LCAoc29ja2xlbl90ICopdGFyZ2V0X2FkZHJsZW4pOw0KICAgICAgICAgfQ0K ICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgU09DS09QX2dldHNvY2tuYW1l Og0KQEAgLTExMjQsNyArMTE0NSw3IEBADQogICAgICAgICAgICAgaW50IHNv Y2tmZCA9IHRnZXRsKHZwdHIpOw0KICAgICAgICAgICAgIHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBuKTsNCiAgICAgICAgICAg ICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsg MiAqIG4pOw0KLSAgICAgICAgICAgIHJldCA9IGRvX2dldHNvY2tuYW1lKHNv Y2tmZCwgdGFyZ2V0X2FkZHIsIHRhcmdldF9hZGRybGVuKTsNCisgICAgICAg ICAgICByZXQgPSBkb19nZXRzb2NrbmFtZShzb2NrZmQsIHRhcmdldF9hZGRy LCAoc29ja2xlbl90ICopdGFyZ2V0X2FkZHJsZW4pOw0KICAgICAgICAgfQ0K ICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgU09DS09QX2dldHBlZXJuYW1l Og0KQEAgLTExMzIsNyArMTE1Myw3IEBADQogICAgICAgICAgICAgaW50IHNv Y2tmZCA9IHRnZXRsKHZwdHIpOw0KICAgICAgICAgICAgIHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBuKTsNCiAgICAgICAgICAg ICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsg MiAqIG4pOw0KLSAgICAgICAgICAgIHJldCA9IGRvX2dldHBlZXJuYW1lKHNv Y2tmZCwgdGFyZ2V0X2FkZHIsIHRhcmdldF9hZGRybGVuKTsNCisgICAgICAg ICAgICByZXQgPSBkb19nZXRwZWVybmFtZShzb2NrZmQsIHRhcmdldF9hZGRy LCAoc29ja2xlbl90ICopdGFyZ2V0X2FkZHJsZW4pOw0KICAgICAgICAgfQ0K ICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgU09DS09QX3NvY2tldHBhaXI6 DQpAQCAtMTIyNiwxMiArMTI0NywxMiBAQA0KICAgICAgICAgICAgIHRhcmdl dF91bG9uZyBvcHR2YWwgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOw0KICAgICAg ICAgICAgIHRhcmdldF91bG9uZyBwb3B0bGVuID0gdGdldGwodnB0ciArIDQg KiBuKTsNCiANCi0gICAgICAgICAgICByZXQgPSBkb19nZXRzb2Nrb3B0KHNv Y2tmZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgcG9wdGxlbik7DQorICAg ICAgICAgICAgcmV0ID0gZG9fZ2V0c29ja29wdChzb2NrZmQsIGxldmVsLCBv cHRuYW1lLCBvcHR2YWwsIChzb2NrbGVuX3QgKilwb3B0bGVuKTsNCiAgICAg ICAgIH0NCiAgICAgICAgIGJyZWFrOw0KICAgICBkZWZhdWx0Og0KICAgICAg ICAgZ2VtdV9sb2coIlVuc3VwcG9ydGVkIHNvY2tldGNhbGw6ICVkXG4iLCBu dW0pOw0KLSAgICAgICAgcmV0ID0gLUVOT1NZUzsNCisgICAgICAgIHJldCA9 IC1FSU5WQUw7DQogICAgICAgICBicmVhazsNCiAgICAgfQ0KICAgICByZXR1 cm4gcmV0Ow0K ---1463811327-175645891-1190164508=:20150--