From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v6 01/14] iommu: introduce the concept of BFN... Date: Thu, 23 Aug 2018 10:46:58 +0100 Message-ID: <20180823094711.21376-2-paul.durrant@citrix.com> References: <20180823094711.21376-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fsmD0-00005I-SS for xen-devel@lists.xenproject.org; Thu, 23 Aug 2018 09:47:18 +0000 In-Reply-To: <20180823094711.21376-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Stefano Stabellini , Suravee Suthikulpanit , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnYnVzIGZyYW1lIG51bWJlcicgaS5lLiBhIGZyYW1lIG51bWJlciBtYXBwZWQg aW4gdGhlIElPTU1VCnJhdGhlciB0aGFuIHRoZSBNTVUuCgpUaGlzIHBhdGNoIGlzIGEgbGFyZ2Vs eSBjb3NtZXRpYyBjaGFuZ2UgdGhhdCBzdWJzdGl0dXRlcyB0aGUgdGVybXMgJ2dmbicKYW5kICdn YWRkcicgZm9yICdiZm4nIGFuZCAnYmFkZHInIGluIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBm cmFtZSBudW1iZXIKb3IgYWRkcmVzcyByZWxhdGUgdG8gdGhlIElPTU1VIHJhdGhlciB0aGFuIHRo ZSBNTVUuCgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0 aGUgaW50cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGJmbl90IGFuZCBk ZWZpbml0aW9uIG9mCiAgIElOVkFMSURfQkZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBn Zm5feChJTlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Jm bl90b19iYWRkciBhbmQgX19iYWRkcl90b19iZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMg d2l0aG91dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vi c2VxdWVudCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2Fm ZSBCRk5zLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4KUmV2aWV3ZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpDYzog U3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6 IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBH cmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnY2OgogLSBEcm9w cGVkIGNoYW5nZXMgdG8gJ21mbicgc2VjdGlvbiBpbiB4ZW4vbW0uaCBhcyBzdWdnZXN0ZWQgYnkg S2V2aW4uCgp2MzoKIC0gR2V0IHJpZCBvZiBpbnRlcm1lZGlhdGUgJ2ZyYW1lJyB2YXJpYWJsZXMg YWdhaW4uCgp2MjoKIC0gQWRkcmVzc2VkIGNvbW1lbnRzIGZyb20gSmFuLgotLS0KIHhlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYyAgICAgfCAxOCArKystLS0tCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgICAgIHwgNzYgKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11 LmMgfCAgMiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYyAgICAgICAgICB8 IDE2ICsrKy0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgICAgICAgICB8 IDI4ICsrKysrLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgICAg ICAgIHwgMzAgKysrKysrLS0tLS0tCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAg ICAgICAgICAgIHwgMzggKysrKysrKysrKysrLS0tCiB4ZW4vaW5jbHVkZS94ZW4vbW0uaCAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDUgKysKIDggZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlv bnMoKyksIDkxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9pb21tdV9jbWQuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9j bWQuYwppbmRleCAwODI0N2ZhMzU0Li5mOTNiZWNkNmUxIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYW1kL2lvbW11X2NtZC5jCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBpbnZhbGlkYXRlX2lv bW11X2FsbChzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSkKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1 c2hfaW90bGIodTggZGV2Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGRyX3QgYmFkZHIsIHVuc2lnbmVkIGludCBvcmRl cikKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlv bW11OwpAQCAtMzE1LDEyICszMTUsMTIgQEAgdm9pZCBhbWRfaW9tbXVfZmx1c2hfaW90bGIodTgg ZGV2Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCiAgICAgLyogc2VuZCBJTlZBTElE QVRFX0lPVExCX1BBR0VTIGNvbW1hbmQgKi8KICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUt PmxvY2ssIGZsYWdzKTsKLSAgICBpbnZhbGlkYXRlX2lvdGxiX3BhZ2VzKGlvbW11LCBtYXhwZW5k LCAwLCBxdWV1ZWlkLCBnYWRkciwgcmVxX2lkLCBvcmRlcik7CisgICAgaW52YWxpZGF0ZV9pb3Rs Yl9wYWdlcyhpb21tdSwgbWF4cGVuZCwgMCwgcXVldWVpZCwgYmFkZHIsIHJlcV9pZCwgb3JkZXIp OwogICAgIGZsdXNoX2NvbW1hbmRfYnVmZmVyKGlvbW11KTsKICAgICBzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZpb21tdS0+bG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBhbWRfaW9tbXVf Zmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBnYWRkciwKK3N0YXRp YyB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIGJhZGRy X3QgYmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgb3JkZXIpCiB7CiAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7CkBAIC0zMzMsNyArMzMz LDcgQEAgc3RhdGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoc3RydWN0IGRvbWFp biAqZCwgdWludDY0X3QgZ2FkZHIsCiAgICAgICAgIHU4IGRldmZuID0gcGRldi0+ZGV2Zm47CiAK ICAgICAgICAgZG8gewotICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKGRldmZuLCBw ZGV2LCBnYWRkciwgb3JkZXIpOworICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKGRl dmZuLCBwZGV2LCBiYWRkciwgb3JkZXIpOwogICAgICAgICAgICAgZGV2Zm4gKz0gcGRldi0+cGhh bnRvbV9zdHJpZGU7CiAgICAgICAgIH0gd2hpbGUgKCBkZXZmbiAhPSBwZGV2LT5kZXZmbiAmJgog ICAgICAgICAgICAgICAgICAgUENJX1NMT1QoZGV2Zm4pID09IFBDSV9TTE9UKHBkZXYtPmRldmZu KSApOwpAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxf aW90bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAogCiAvKiBGbHVzaCBpb21t dSBjYWNoZSBhZnRlciBwMm0gY2hhbmdlcy4gKi8KIHN0YXRpYyB2b2lkIF9hbWRfaW9tbXVfZmx1 c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmFkZHJfdCBiYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQog ewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGFtZF9pb21tdSAqaW9tbXU7 CkBAIC0zNTIsMTMgKzM1MiwxMyBAQCBzdGF0aWMgdm9pZCBfYW1kX2lvbW11X2ZsdXNoX3BhZ2Vz KHN0cnVjdCBkb21haW4gKmQsCiAgICAgZm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUgKQogICAg IHsKICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvbW11LT5sb2NrLCBmbGFncyk7Ci0gICAg ICAgIGludmFsaWRhdGVfaW9tbXVfcGFnZXMoaW9tbXUsIGdhZGRyLCBkb21faWQsIG9yZGVyKTsK KyAgICAgICAgaW52YWxpZGF0ZV9pb21tdV9wYWdlcyhpb21tdSwgYmFkZHIsIGRvbV9pZCwgb3Jk ZXIpOwogICAgICAgICBmbHVzaF9jb21tYW5kX2J1ZmZlcihpb21tdSk7CiAgICAgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmlvbW11LT5sb2NrLCBmbGFncyk7CiAgICAgfQogCiAgICAgaWYg KCBhdHNfZW5hYmxlZCApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKGQsIGdh ZGRyLCBvcmRlcik7CisgICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKGQsIGJhZGRy LCBvcmRlcik7CiB9CiAKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdlcyhzdHJ1Y3QgZG9t YWluICpkKQpAQCAtMzY3LDkgKzM2Nyw5IEBAIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdl cyhzdHJ1Y3QgZG9tYWluICpkKQogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1 Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBn Zm4sIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7Ci0gICAgX2FtZF9pb21tdV9mbHVz aF9wYWdlcyhkLCAodWludDY0X3QpIGdmbiA8PCBQQUdFX1NISUZULCBvcmRlcik7CisgICAgX2Ft ZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBfX2Jmbl90b19iYWRkcihiZm4pLCBvcmRlcik7CiB9CiAK IHZvaWQgYW1kX2lvbW11X2ZsdXNoX2RldmljZShzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSwgdWlu dDE2X3QgYmRmKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11 X21hcC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCmluZGV4IDcw YjQzNDViMzcuLjRkZWFiOWNkMmYgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FtZC9pb21tdV9tYXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVf bWFwLmMKQEAgLTM1LDEyICszNSwxMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHBmbl90b19wZGVf aWR4KHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBpbnQgbGV2ZWwpCiAgICAgcmV0dXJuIGlk eDsKIH0KIAotdm9pZCBjbGVhcl9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIGwxX21m biwgdW5zaWduZWQgbG9uZyBnZm4pCit2b2lkIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHVuc2ln bmVkIGxvbmcgbDFfbWZuLCB1bnNpZ25lZCBsb25nIGJmbikKIHsKICAgICB1NjQgKnRhYmxlLCAq cHRlOwogCiAgICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihsMV9tZm4pKTsKLSAgICBw dGUgPSB0YWJsZSArIHBmbl90b19wZGVfaWR4KGdmbiwgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxf MSk7CisgICAgcHRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChiZm4sIElPTU1VX1BBR0lOR19N T0RFX0xFVkVMXzEpOwogICAgICpwdGUgPSAwOwogICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxl KTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgYm9vbF90IHNldF9pb21tdV9wZGVfcHJl c2VudCh1MzIgKnBkZSwgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwKICAgICByZXR1cm4gbmVlZF9m bHVzaDsKIH0KIAotc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQg bG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgZ2ZuLCAKK3N0YXRpYyBib29sX3Qgc2V0X2lvbW11 X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcHRfbWZuLCB1bnNpZ25lZCBsb25nIGJmbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4dF9tZm4s IGludCBwZGVfbGV2ZWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bF90IGl3LCBib29sX3QgaXIpCiB7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGJvb2xfdCBz ZXRfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcg Z2ZuLAogCiAgICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKIAotICAg IHBkZSA9ICh1MzIqKSh0YWJsZSArIHBmbl90b19wZGVfaWR4KGdmbiwgcGRlX2xldmVsKSk7Cisg ICAgcGRlID0gKHUzMiopKHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoYmZuLCBwZGVfbGV2ZWwpKTsK IAogICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcGRlX3ByZXNlbnQocGRlLCBuZXh0X21mbiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9QQUdJTkdfTU9E RV9MRVZFTF8wLCBpdywgaXIpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIHNldF9w ZGVfY291bnQodTY0ICpwZGUsIHVuc2lnbmVkIGludCBjb3VudCkKICAqIG90aGVyd2lzZSBpbmNy ZWFzZSBwZGUgY291bnQgaWYgbWZuIGlzIGNvbnRpZ291cyB3aXRoIG1mbiAtIDEKICAqLwogc3Rh dGljIGludCBpb21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgcHRfbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1lcmdlX2xldmVsKQogewogICAg IHVuc2lnbmVkIGludCBwZGVfY291bnQsIG5leHRfbGV2ZWw7CkBAIC0zNDcsNyArMzQ3LDcgQEAg c3RhdGljIGludCBpb21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgcHRfbWZuLAogCiAgICAgLyogZ2V0IHBkZSBhdCBtZXJnZSBsZXZlbCAqLwogICAg IHRhYmxlID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7Ci0gICAgcGRlID0gdGFibGUg KyBwZm5fdG9fcGRlX2lkeChnZm4sIG1lcmdlX2xldmVsKTsKKyAgICBwZGUgPSB0YWJsZSArIHBm bl90b19wZGVfaWR4KGJmbiwgbWVyZ2VfbGV2ZWwpOwogCiAgICAgLyogZ2V0IHBhZ2UgdGFibGUg b2YgbmV4dCBsZXZlbCAqLwogICAgIG50YWJsZV9tYWRkciA9IGFtZF9pb21tdV9nZXRfbmV4dF90 YWJsZV9mcm9tX3B0ZSgodTMyKilwZGUpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQg aW9tbXVfdXBkYXRlX3BkZV9jb3VudChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0 X21mbiwKICAgICBtYXNrID0gKDFVTEw8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIG5leHRfbGV2 ZWwpKSAtIDE7CiAKICAgICBpZiAoICgoZmlyc3RfbWZuICYgbWFzaykgPT0gMCkgJiYKLSAgICAg ICAgICgoKGdmbiAmIG1hc2spIHwgZmlyc3RfbWZuKSA9PSBtZm4pICkKKyAgICAgICAgICgoKGJm biAmIG1hc2spIHwgZmlyc3RfbWZuKSA9PSBtZm4pICkKICAgICB7CiAgICAgICAgIHBkZV9jb3Vu dCA9IGdldF9wZGVfY291bnQoKnBkZSk7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCBvdXQ6CiB9CiAK IHN0YXRpYyBpbnQgaW9tbXVfbWVyZ2VfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBwdF9tZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg Z2ZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBtZXJnZV9sZXZlbCkKIHsKICAgICB1NjQgKnRhYmxlLCAq cGRlLCAqbnRhYmxlOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfbWVyZ2Vf cGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAgICAgQVNTRVJU KCBzcGluX2lzX2xvY2tlZCgmaGQtPmFyY2gubWFwcGluZ19sb2NrKSAmJiBwdF9tZm4gKTsKIAog ICAgIHRhYmxlID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7Ci0gICAgcGRlID0gdGFi bGUgKyBwZm5fdG9fcGRlX2lkeChnZm4sIG1lcmdlX2xldmVsKTsKKyAgICBwZGUgPSB0YWJsZSAr IHBmbl90b19wZGVfaWR4KGJmbiwgbWVyZ2VfbGV2ZWwpOwogCiAgICAgLyogZ2V0IGZpcnN0IG1m biAqLwogICAgIG50YWJsZV9tZm4gPSBhbWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJvbV9wdGUo KHUzMiopcGRlKSA+PiBQQUdFX1NISUZUOwpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBpbnQg aW9tbXVfbWVyZ2VfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4s CiAgKiB7UmUsIHVufW1hcHBpbmcgc3VwZXIgcGFnZSBmcmFtZXMgY2F1c2VzIHJlLWFsbG9jYXRp b24gb2YgaW8KICAqIHBhZ2UgdGFibGVzLgogICovCi1zdGF0aWMgaW50IGlvbW11X3BkZV9mcm9t X2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwgCitzdGF0aWMgaW50IGlv bW11X3BkZV9mcm9tX2JmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcHRfbWZuW10pCiB7CiAg ICAgdTY0ICpwZGUsICpuZXh0X3RhYmxlX3ZhZGRyOwpAQCAtNDc3LDExICs0NzcsMTEgQEAgc3Rh dGljIGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBwZm4sCiAgICAgICAgICAgICAgbmV4dF90YWJsZV9tZm4gIT0gMCApCiAgICAgICAgIHsKICAg ICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKKyAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCBiZm47CiAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgcGFnZV9zejsKIAogICAgICAgICAgICAgcGFnZV9zeiA9IDEgPDwgKFBURV9QRVJfVEFCTEVf U0hJRlQgKiAobmV4dF9sZXZlbCAtIDEpKTsKLSAgICAgICAgICAgIGdmbiA9ICBwZm4gJiB+KCgx IDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZlbCkpIC0gMSk7CisgICAgICAgICAg ICBiZm4gPSAgcGZuICYgfigoMSA8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIG5leHRfbGV2ZWwp KSAtIDEpOwogICAgICAgICAgICAgbWZuID0gbmV4dF90YWJsZV9tZm47CiAKICAgICAgICAgICAg IC8qIGFsbG9jYXRlIGxvd2VyIGxldmVsIHBhZ2UgdGFibGUgKi8KQEAgLTQ5OSwxMCArNDk5LDEw IEBAIHN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgcGZuLAogCiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IFBURV9QRVJfVEFC TEVfU0laRTsgaSsrICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzZXRfaW9tbXVf cHRlX3ByZXNlbnQobmV4dF90YWJsZV9tZm4sIGdmbiwgbWZuLCBuZXh0X2xldmVsLAorICAgICAg ICAgICAgICAgIHNldF9pb21tdV9wdGVfcHJlc2VudChuZXh0X3RhYmxlX21mbiwgYmZuLCBtZm4s IG5leHRfbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhSU9N TVVGX3dyaXRhYmxlLCAhIUlPTU1VRl9yZWFkYWJsZSk7CiAgICAgICAgICAgICAgICAgbWZuICs9 IHBhZ2Vfc3o7Ci0gICAgICAgICAgICAgICAgZ2ZuICs9IHBhZ2Vfc3o7CisgICAgICAgICAgICAg ICAgYmZuICs9IHBhZ2Vfc3o7CiAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhbWRfaW9t bXVfZmx1c2hfYWxsX3BhZ2VzKGQpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRpYyBpbnQgaW9t bXVfcGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAg IHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2Rl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIHUxNiBiZGY7CiAg ICAgdm9pZCAqZGV2aWNlX2VudHJ5OwpAQCAtNTU0LDEzICs1NTQsMTMgQEAgc3RhdGljIGludCB1 cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAg ICAgdW5zaWduZWQgbG9uZyBvbGRfcm9vdF9tZm47CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAq aGQgPSBkb21faW9tbXUoZCk7CiAKLSAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikg KQorICAgIGlmICggYmZuID09IGJmbl94KElOVkFMSURfQkZOKSApCiAgICAgICAgIHJldHVybiAt RUFERFJOT1RBVkFJTDsKLSAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVT U19XSURUSCkpOworICAgIEFTU0VSVCghKGJmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJ RFRIKSk7CiAKICAgICBsZXZlbCA9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOwogICAgIG9sZF9yb290 ID0gaGQtPmFyY2gucm9vdF90YWJsZTsKLSAgICBvZmZzZXQgPSBnZm4gPj4gKFBURV9QRVJfVEFC TEVfU0hJRlQgKiAobGV2ZWwgLSAxKSk7CisgICAgb2Zmc2V0ID0gYmZuID4+IChQVEVfUEVSX1RB QkxFX1NISUZUICogKGxldmVsIC0gMSkpOwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZo ZC0+YXJjaC5tYXBwaW5nX2xvY2spICYmIGlzX2h2bV9kb21haW4oZCkpOwogCkBAIC02MzEsNyAr NjMxLDcgQEAgc3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnZm4pCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfbWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcg bWZuLAoraW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGJmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBmbGFncykKIHsKICAgICBib29sX3QgbmVlZF9mbHVzaCA9IDA7CkBAIC02NTEsMzQg KzY1MSwzNCBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBpZiAoIHJjICkKICAgICB7CiAg ICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURf SU9NTVVfREVCVUcoIlJvb3QgdGFibGUgYWxsb2MgZmFpbGVkLCBnZm4gPSAlbHhcbiIsIGdmbik7 CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiUm9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGJmbiA9 ICVseFxuIiwgYmZuKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4g cmM7CiAgICAgfQogCiAgICAgLyogU2luY2UgSFZNIGRvbWFpbiBpcyBpbml0aWFsaXplZCB3aXRo IDIgbGV2ZWwgSU8gcGFnZSB0YWJsZSwKLSAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBh Z2UgdGFibGUgZm9yIGxhZ2VyIGdmbiBub3cgKi8KKyAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVl cGVyIHBhZ2UgdGFibGUgZm9yIHdpZGVyIGJmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2bV9kb21h aW4oZCkgKQogICAgIHsKLSAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZ2ZuKSAp CisgICAgICAgIGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGJmbikgKQogICAgICAgICB7CiAg ICAgICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAg ICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZ2ZuID0gJWx4XG4i LCBnZm4pOworICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZh aWxlZCBiZm4gPSAlbHhcbiIsIGJmbik7CiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAg ICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgg aW9tbXVfcGRlX2Zyb21fZ2ZuKGQsIGdmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkK KyAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2JmbihkLCBiZm4sIHB0X21mbikgfHwgKHB0X21mblsx XSA9PSAwKSApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19s b2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRy eSBnZm4gPSAlbHhcbiIsIGdmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJ TyBwYWdldGFibGUgZW50cnkgYmZuID0gJWx4XG4iLCBiZm4pOwogICAgICAgICBkb21haW5fY3Jh c2goZCk7CiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIEluc3RhbGwg NGsgbWFwcGluZyBmaXJzdCAqLwotICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNl bnQocHRfbWZuWzFdLCBnZm4sIG1mbiwgCisgICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVf cHJlc2VudChwdF9tZm5bMV0sIGJmbiwgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3dyaXRhYmxlKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3JlYWRh YmxlKSk7CkBAIC02OTAsNyArNjkwLDcgQEAgaW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgLyog NEsgbWFwcGluZyBmb3IgUFYgZ3Vlc3RzIG5ldmVyIGNoYW5nZXMsIAogICAgICAqIG5vIG5lZWQg dG8gZmx1c2ggaWYgd2UgdHJ1c3Qgbm9uLXByZXNlbnQgYml0cyAqLwogICAgIGlmICggaXNfaHZt X2RvbWFpbihkKSApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBnZm4sIDApOwor ICAgICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuLCAwKTsKIAogICAgIGZvciAoIG1l cmdlX2xldmVsID0gSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMjsKICAgICAgICAgICBtZXJnZV9s ZXZlbCA8PSBoZC0+YXJjaC5wYWdpbmdfbW9kZTsgbWVyZ2VfbGV2ZWwrKyApCkBAIC02OTgsMTUg KzY5OCwxNSBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgaWYgKCBwdF9tZm5bbWVy Z2VfbGV2ZWxdID09IDAgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICggIWlvbW11 X3VwZGF0ZV9wZGVfY291bnQoZCwgcHRfbWZuW21lcmdlX2xldmVsXSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZm4sIG1mbiwgbWVyZ2VfbGV2ZWwpICkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZm4sIG1mbiwgbWVyZ2VfbGV2ZWwpICkKICAg ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRf bWZuW21lcmdlX2xldmVsXSwgZ2ZuLCAKKyAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdlcyhk LCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLCBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmxhZ3MsIG1lcmdlX2xldmVsKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5s b2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVH KCJNZXJnZSBpb21tdSBwYWdlIGZhaWxlZCBhdCBsZXZlbCAlZCwgIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJnZm4gPSAlbHggbWZuID0gJWx4XG4iLCBtZXJnZV9sZXZlbCwgZ2ZuLCBt Zm4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZm4gPSAlbHggbWZuID0gJWx4XG4i LCBtZXJnZV9sZXZlbCwgYmZuLCBtZm4pOwogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwog ICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgIH0KQEAgLTcyMCw3ICs3MjAsNyBA QCBvdXQ6CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK2ludCBhbWRfaW9tbXVfdW5tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbikKIHsKICAgICB1bnNpZ25lZCBs b25nIHB0X21mbls3XTsKICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShk KTsKQEAgLTczOSwzNCArNzM5LDM0IEBAIGludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICB9CiAKICAgICAvKiBTaW5jZSBIVk0g ZG9tYWluIGlzIGluaXRpYWxpemVkIHdpdGggMiBsZXZlbCBJTyBwYWdlIHRhYmxlLAotICAgICAq IHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgZ2ZuIG5vdyAqLwor ICAgICAqIHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgYmZuIG5v dyAqLwogICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpbnQgcmMg PSB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZ2ZuKTsKKyAgICAgICAgaW50IHJjID0gdXBkYXRlX3Bh Z2luZ19tb2RlKGQsIGJmbik7CiAKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgIHsKICAgICAg ICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICAgICAg QU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBnZm4gPSAlbHhcbiIsIGdm bik7CisgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVk IGJmbiA9ICVseFxuIiwgYmZuKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gLUVBRERSTk9UQVZB SUwgKQogICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVy biByYzsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICggaW9tbXVfcGRlX2Zyb21fZ2ZuKGQs IGdmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKKyAgICBpZiAoIGlvbW11X3BkZV9m cm9tX2JmbihkLCBiZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCiAgICAgewogICAg ICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lP TU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBnZm4gPSAlbHhcbiIsIGdmbik7 CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgYmZu ID0gJWx4XG4iLCBiZm4pOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVy biAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIG1hcmsgUFRFIGFzICdwYWdlIG5vdCBwcmVzZW50 JyAqLwotICAgIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZ2ZuKTsKKyAgICBj bGVhcl9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGJmbik7CiAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwg Z2ZuLCAwKTsKKyAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuLCAwKTsKIAogICAgIHJl dHVybiAwOwogfQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9h bWRfaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMK aW5kZXggMTJkMjY5NWI4OS4uZDYwODYzMWU2ZSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvcGNpX2FtZF9pb21tdS5jCkBAIC01NzgsNyArNTc4LDcgQEAgc3RhdGljIHZvaWQgYW1k X2R1bXBfcDJtX3RhYmxlX2xldmVsKHN0cnVjdCBwYWdlX2luZm8qIHBnLCBpbnQgbGV2ZWwsCiAg ICAgICAgICAgICAgICAgbWFkZHJfdG9fcGFnZShuZXh0X3RhYmxlX21hZGRyKSwgbmV4dF9sZXZl bCwKICAgICAgICAgICAgICAgICBhZGRyZXNzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgZWxzZQot ICAgICAgICAgICAgcHJpbnRrKCIlKnNnZm46ICUwOGx4ICBtZm46ICUwOGx4XG4iLAorICAgICAg ICAgICAgcHJpbnRrKCIlKnNiZm46ICUwOGx4ICBtZm46ICUwOGx4XG4iLAogICAgICAgICAgICAg ICAgICAgIGluZGVudCwgIiIsCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpUEZO X0RPV04oYWRkcmVzcyksCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpUEZOX0RP V04obmV4dF90YWJsZV9tYWRkcikpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYXJtL3NtbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKaW5kZXgg NzRjMDliMDk5MS4uMWU0ZDU2MWI0NyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYXJtL3NtbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCkBA IC0yNTUxLDcgKzI1NTEsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3Rs Yl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hl Y2sgYXJtX3NtbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgcGFnZV9jb3VudCkKIHsKIAkvKiBBUk0gU01NVSB2MSBkb2Vzbid0IGhhdmUgZmx1c2ggYnkg Vk1BIGFuZCBWTUlEICovCkBAIC0yNzM3LDcgKzI3MzcsNyBAQCBzdGF0aWMgdm9pZCBhcm1fc21t dV9pb21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKIAl4ZnJlZSh4ZW5fZG9t YWluKTsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitzdGF0aWMgaW50IF9fbXVzdF9jaGVj ayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwK IAkJCXVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJcDJtX3R5cGVf dCB0OwpAQCAtMjc0OCwxMCArMjc0OCwxMCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1f c21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKIAkgKiBw cm90ZWN0ZWQgYnkgYW4gSU9NTVUsIFhlbiBuZWVkcyB0byBhZGQgYSAxOjEgbWFwcGluZyBpbiB0 aGUgZG9tYWluCiAJICogcDJtIHRvIGFsbG93IERNQSByZXF1ZXN0IHRvIHdvcmsuCiAJICogVGhp cyBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlIGRvbWFpbiBpcyBkaXJlY3RlZCBtYXBwZWQuIEhlbmNl IHRoaXMKLQkgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdp dGggZ2ZuID09IG1mbi4KKwkgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRh YiBjb2RlIHdpdGggZ2ZuID09IG1mbiA9PSBiZm4uCiAJICovCiAJQlVHX09OKCFpc19kb21haW5f ZGlyZWN0X21hcHBlZChkKSk7Ci0JQlVHX09OKG1mbiAhPSBnZm4pOworCUJVR19PTihtZm4gIT0g YmZuKTsKIAogCS8qIFdlIG9ubHkgc3VwcG9ydCByZWFkYWJsZSBhbmQgd3JpdGFibGUgZmxhZ3Mg Ki8KIAlpZiAoIShmbGFncyAmIChJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpKSkK QEAgLTI3NjMsMTkgKzI3NjMsMTkgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVf bWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAJICogVGhlIGZ1 bmN0aW9uIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IHJlcGxhY2VzIHRoZSBjdXJyZW50IG1hcHBp bmcKIAkgKiBpZiB0aGVyZSBpcyBhbHJlYWR5IG9uZS4uLgogCSAqLwotCXJldHVybiBndWVzdF9w aHlzbWFwX2FkZF9lbnRyeShkLCBfZ2ZuKGdmbiksIF9tZm4obWZuKSwgMCwgdCk7CisJcmV0dXJu IGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oYmZuKSwgX21mbihiZm4pLCAwLCB0KTsK IH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFy bV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pCiB7 CiAJLyoKIAkgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNv ZGUgd2hlbiB0aGUgZG9tYWluCi0JICogaXMgZGlyZWN0IG1hcHBlZAorCSAqIGlzIGRpcmVjdCBt YXBwZWQgKGkuZS4gZ2ZuID09IG1mbiA9PSBiZm4pLgogCSAqLwogCWlmICggIWlzX2RvbWFpbl9k aXJlY3RfbWFwcGVkKGQpICkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZ3Vlc3RfcGh5 c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdmbiksIF9tZm4oZ2ZuKSwgMCk7CisJcmV0dXJuIGd1 ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihiZm4pLCBfbWZuKGJmbiksIDApOwogfQog CiBzdGF0aWMgY29uc3Qgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9vcHMgPSB7CmRp ZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYwppbmRleCA3MGQyMThmOTEwLi5mODhkYWQwMTc3IDEwMDY0NAot LS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2lvbW11LmMKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIF9faHdkb21faW5pdCBp b21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgIHBhZ2VfbGlzdF9mb3Jf ZWFjaCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKLSAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKKyAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYmZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKICAgICAgICAgICAgIHVuc2lnbmVk IGludCBtYXBwaW5nID0gSU9NTVVGX3JlYWRhYmxlOwogICAgICAgICAgICAgaW50IHJldDsKIApA QCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgX19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3Ry dWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgICAgICAgID09IFBHVF93cml0YWJsZV9wYWdlKSAp CiAgICAgICAgICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3JpdGFibGU7CiAKLSAgICAgICAg ICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBtYXBwaW5n KTsKKyAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbiwg bWZuLCBtYXBwaW5nKTsKICAgICAgICAgICAgIGlmICggIXJjICkKICAgICAgICAgICAgICAgICBy YyA9IHJldDsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgaW9tbXVfZG9tYWluX2Rlc3Ryb3ko c3RydWN0IGRvbWFpbiAqZCkKICAgICBhcmNoX2lvbW11X2RvbWFpbl9kZXN0cm95KGQpOwogfQog Ci1pbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4s IHVuc2lnbmVkIGxvbmcgbWZuLAoraW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAq aGQgPSBkb21faW9tbXUoZCk7CkBAIC0yNjQsMTMgKzI2NCwxMyBAQCBpbnQgaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZu LAogICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAg ICByZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2Zu LCBtZm4sIGZsYWdzKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJm biwgbWZuLCBmbGFncyk7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAgICAg aWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQogICAgICAg ICAgICAgcHJpbnRrKFhFTkxPR19FUlIKLSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBt YXBwaW5nIGdmbiAlI2x4IHRvIG1mbiAlI2x4IGZhaWxlZDogJWRcbiIsCi0gICAgICAgICAgICAg ICAgICAgZC0+ZG9tYWluX2lkLCBnZm4sIG1mbiwgcmMpOworICAgICAgICAgICAgICAgICAgICJk JWQ6IElPTU1VIG1hcHBpbmcgYmZuICUjbHggdG8gbWZuICUjbHggZmFpbGVkOiAlZFxuIiwKKyAg ICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGJmbiwgbWZuLCByYyk7CiAKICAgICAgICAg aWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChk KTsKQEAgLTI3OSw3ICsyNzksNyBAQCBpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIHJldHVybiByYzsK IH0KIAotaW50IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBnZm4pCitpbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGJmbikKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21t dShkKTsKICAgICBpbnQgcmM7CkBAIC0yODcsMTMgKzI4NywxMyBAQCBpbnQgaW9tbXVfdW5tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICBpZiAoICFpb21t dV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg ICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgZ2ZuKTsKKyAgICByYyA9IGhk LT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgYmZuKTsKICAgICBpZiAoIHVubGlrZWx5KHJj KSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19y YXRlbGltaXQoKSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAg ICAgICAgICJkJWQ6IElPTU1VIHVubWFwcGluZyBnZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAotICAg ICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuLCByYyk7CisgICAgICAgICAgICAgICAg ICAgImQlZDogSU9NTVUgdW5tYXBwaW5nIGJmbiAlI2x4IGZhaWxlZDogJWRcbiIsCisgICAgICAg ICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBiZm4sIHJjKTsKIAogICAgICAgICBpZiAoICFpc19o YXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwpAQCAtMzE5 LDcgKzMxOSw3IEBAIHN0YXRpYyB2b2lkIGlvbW11X2ZyZWVfcGFnZXRhYmxlcyh1bnNpZ25lZCBs b25nIHVudXNlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX2N5Y2xlKHNt cF9wcm9jZXNzb3JfaWQoKSwgJmNwdV9vbmxpbmVfbWFwKSk7CiB9CiAKLWludCBpb21tdV9pb3Rs Yl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBpb21tdV9p b3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKICAgICBjb25zdCBzdHJ1 Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTMyOCwxMyArMzI4LDEzIEBA IGludCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdm biwKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+ cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaCApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMg PSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaChkLCBnZm4sIHBhZ2VfY291bnQpOworICAg IHJjID0gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgYmZuLCBwYWdlX2NvdW50KTsK ICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0 dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCiAgICAgICAgICAgICBwcmludGsoWEVO TE9HX0VSUgotICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIElPVExCIGZsdXNoIGZhaWxl ZDogJWQsIGdmbiAlI2x4LCBwYWdlIGNvdW50ICV1XG4iLAotICAgICAgICAgICAgICAgICAgIGQt PmRvbWFpbl9pZCwgcmMsIGdmbiwgcGFnZV9jb3VudCk7CisgICAgICAgICAgICAgICAgICAgImQl ZDogSU9NTVUgSU9UTEIgZmx1c2ggZmFpbGVkOiAlZCwgYmZuICUjbHgsIHBhZ2UgY291bnQgJXVc biIsCisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByYywgYmZuLCBwYWdlX2NvdW50 KTsKIAogICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAg ZG9tYWluX2NyYXNoKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCAxNzEw MjU2ODIzLi40OGY2MmUwZThkIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92 dGQvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAt NTg1LDcgKzU4NSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2FsbCh2 b2lkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1 Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2xfdCBkbWFfb2xkX3B0ZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7CkBAIC02 MTIsMTIgKzYxMiwxMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3Rs YihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBpZiAoIGlvbW11X2RvbWlkID09IC0xICkKICAg ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGdm biA9PSBnZm5feChJTlZBTElEX0dGTikgKQorICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8 fCBiZm4gPT0gYmZuX3goSU5WQUxJRF9CRk4pICkKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1 c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKICAgICAg ICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdF X1NISUZUXzRLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iZm5f dG9fYmFkZHIoYmZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBB R0VfT1JERVJfNEssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1h X29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZsdXNoX2Rldl9pb3RsYik7CkBAIC02MzMsMTUgKzYzMywxNSBAQCBzdGF0aWMgaW50IF9fbXVz dF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogfQogCiBzdGF0aWMg aW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewotICAgIHJldHVybiBp b21tdV9mbHVzaF9pb3RsYihkLCBnZm4sIDEsIHBhZ2VfY291bnQpOworICAgIHJldHVybiBpb21t dV9mbHVzaF9pb3RsYihkLCBiZm4sIDEsIHBhZ2VfY291bnQpOwogfQogCiBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAg ICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgZ2ZuX3goSU5WQUxJRF9HRk4pLCAwLCAwKTsK KyAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgYmZuX3goSU5WQUxJRF9CRk4pLCAwLCAw KTsKIH0KIAogLyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC0xNzY3LDcgKzE3 NjcsNyBAQCBzdGF0aWMgdm9pZCBpb21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAq ZCkKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTE3 ODYsMTQgKzE3ODYsMTQgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKIAogICAgIHNwaW5fbG9jaygmaGQtPmFyY2gubWFwcGlu Z19sb2NrKTsKIAotICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCAocGFk ZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywgMSk7CisgICAgcGdfbWFkZHIgPSBhZGRyX3RvX2Rt YV9wYWdlX21hZGRyKGQsIF9fYmZuX3RvX2JhZGRyKGJmbiksIDEpOwogICAgIGlmICggcGdfbWFk ZHIgPT0gMCApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19s b2NrKTsKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAgfQogICAgIHBhZ2UgPSAoc3RydWN0 IGRtYV9wdGUgKiltYXBfdnRkX2RvbWFpbl9wYWdlKHBnX21hZGRyKTsKLSAgICBwdGUgPSBwYWdl ICsgKGdmbiAmIExFVkVMX01BU0spOworICAgIHB0ZSA9IHBhZ2UgKyAoYmZuICYgTEVWRUxfTUFT Syk7CiAgICAgb2xkID0gKnB0ZTsKICAgICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgKHBhZGRyX3Qp bWZuIDw8IFBBR0VfU0hJRlRfNEspOwogICAgIGRtYV9zZXRfcHRlX3Byb3QobmV3LApAQCAtMTgx NywyMiArMTgxNywyMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLAogICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShwYWdlKTsK IAogICAgIGlmICggIXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpICkKLSAgICAgICAg cmMgPSBpb21tdV9mbHVzaF9pb3RsYihkLCBnZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsK KyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYihkLCBiZm4sIGRtYV9wdGVfcHJlc2VudChv bGQpLCAxKTsKIAogICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sg aW50ZWxfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBi Zm4pCiB7CiAgICAgLyogRG8gbm90aGluZyBpZiBoYXJkd2FyZSBkb21haW4gYW5kIGlvbW11IHN1 cHBvcnRzIHBhc3MgdGhydS4gKi8KICAgICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hh cmR3YXJlX2RvbWFpbihkKSApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRtYV9w dGVfY2xlYXJfb25lKGQsIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLKTsKKyAgICByZXR1 cm4gZG1hX3B0ZV9jbGVhcl9vbmUoZCwgX19iZm5fdG9fYmFkZHIoYmZuKSk7CiB9CiAKLWludCBp b21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCitpbnQg aW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGJmbiwgdWludDY0X3Qg KnB0ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IG9yZGVyLCBpbnQgcHJlc2VudCkKIHsKICAg ICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CkBAIC0xODU2LDcgKzE4NTYsNyBAQCBpbnQg aW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAogICAg ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2ko aW9tbXUsIGlvbW11X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19iZm5fdG9fYmFkZHIoYmZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpOwogICAgICAgICBpZiAo IHJjID4gMCApCiAgICAgICAgIHsKQEAgLTI2MjYsNyArMjYyNiw3IEBAIHN0YXRpYyB2b2lkIHZ0 ZF9kdW1wX3AybV90YWJsZV9sZXZlbChwYWRkcl90IHB0X21hZGRyLCBpbnQgbGV2ZWwsIHBhZGRy X3QgZ3BhLAogICAgICAgICAgICAgdnRkX2R1bXBfcDJtX3RhYmxlX2xldmVsKGRtYV9wdGVfYWRk cigqcHRlKSwgbmV4dF9sZXZlbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWRkcmVzcywgaW5kZW50ICsgMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50 aygiJSpzZ2ZuOiAlMDhseCBtZm46ICUwOGx4XG4iLAorICAgICAgICAgICAgcHJpbnRrKCIlKnNi Zm46ICUwOGx4IG1mbjogJTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiIiwK ICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoYWRkcmVzcyA+PiBQQUdFX1NISUZU XzRLKSwKICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoZG1hX3B0ZV9hZGRyKCpw dGUpID4+IFBBR0VfU0hJRlRfNEspKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21t dS5oIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggZTM1ZDk0MWYzYy4uNDBhZjdiZDdj OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUv eGVuL2lvbW11LmgKQEAgLTIzLDExICsyMywzNyBAQAogI2luY2x1ZGUgPHhlbi9wYWdlLWRlZnMu aD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vcGNpLmg+CisjaW5j bHVkZSA8eGVuL3R5cGVzYWZlLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgogI2lu Y2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4KICNpbmNsdWRlIDxhc20vZGV2aWNlLmg+CiAjaW5jbHVk ZSA8YXNtL2lvbW11Lmg+CiAKK1RZUEVfU0FGRSh1aW50NjRfdCwgYmZuKTsKKyNkZWZpbmUgUFJJ X2JmbiAgICAgUFJJeDY0CisjZGVmaW5lIElOVkFMSURfQkZOIF9iZm4ofjBVTCkKKworI2lmbmRl ZiBiZm5fdAorI2RlZmluZSBiZm5fdCAvKiBHcmVwIGZvZGRlcjogYmZuX3QsIF9iZm4oKSBhbmQg YmZuX3goKSBhcmUgZGVmaW5lZCBhYm92ZSAqLworI2RlZmluZSBfYmZuCisjZGVmaW5lIGJmbl94 CisjdW5kZWYgYmZuX3QKKyN1bmRlZiBfYmZuCisjdW5kZWYgYmZuX3gKKyNlbmRpZgorCisjZGVm aW5lIElPTU1VX1BBR0VfU0hJRlQgMTIKKyNkZWZpbmUgSU9NTVVfUEFHRV9TSVpFICAoX0FDKDEs TCkgPDwgSU9NTVVfUEFHRV9TSElGVCkKKyNkZWZpbmUgSU9NTVVfUEFHRV9NQVNLICAofihJT01N VV9QQUdFX1NJWkUgLSAxKSkKKwordHlwZWRlZiB1aW50NjRfdCBiYWRkcl90OworCisjZGVmaW5l IF9fYmZuX3RvX2JhZGRyKGJmbikgKChiYWRkcl90KShiZm4pIDw8IElPTU1VX1BBR0VfU0hJRlQp CisjZGVmaW5lIF9fYmFkZHJfdG9fYmZuKGJhZGRyKSAoKHVpbnQ2NF90KShiYWRkciA+PiBJT01N VV9QQUdFX1NISUZUKSkKKworI2RlZmluZSBiZm5fdG9fYmFkZHIoYmZuKSBfX2Jmbl90b19iYWRk cihiZm5feChiZm4pKQorI2RlZmluZSBiYWRkcl90b19iZm4oYmFkZHIpIF9iZm4oX19iYWRkcl90 b19iZm4oYmFkZHIpKQorCiBleHRlcm4gYm9vbF90IGlvbW11X2VuYWJsZSwgaW9tbXVfZW5hYmxl ZDsKIGV4dGVybiBib29sX3QgZm9yY2VfaW9tbXUsIGlvbW11X2RvbTBfc3RyaWN0LCBpb21tdV92 ZXJib3NlOwogZXh0ZXJuIGJvb2xfdCBpb21tdV93b3JrYXJvdW5kX2Jpb3NfYnVnLCBpb21tdV9p Z2Z4LCBpb21tdV9wYXNzdGhyb3VnaDsKQEAgLTYwLDkgKzg2LDkgQEAgdm9pZCBpb21tdV90ZWFy ZG93bihzdHJ1Y3QgZG9tYWluICpkKTsKICNkZWZpbmUgSU9NTVVGX3JlYWRhYmxlICAoMXU8PF9J T01NVUZfcmVhZGFibGUpCiAjZGVmaW5lIF9JT01NVUZfd3JpdGFibGUgMQogI2RlZmluZSBJT01N VUZfd3JpdGFibGUgICgxdTw8X0lPTU1VRl93cml0YWJsZSkKLWludCBfX211c3RfY2hlY2sgaW9t bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgX19t dXN0X2NoZWNrIGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg YmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwg dW5zaWduZWQgaW50IGZsYWdzKTsKLWludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBfcGFnZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7CitpbnQgX19tdXN0X2NoZWNrIGlv bW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pOwogCiBl bnVtIGlvbW11X2ZlYXR1cmUKIHsKQEAgLTE1MCw5ICsxNzYsOSBAQCBzdHJ1Y3QgaW9tbXVfb3Bz IHsKICNlbmRpZiAvKiBIQVNfUENJICovCiAKICAgICB2b2lkICgqdGVhcmRvd24pKHN0cnVjdCBk b21haW4gKmQpOwotICAgIGludCBfX211c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdl KShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwot ICAgIGludCBfX211c3RfY2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbik7CisgICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKTsKICAgICB2b2lkICgqZnJlZV9wYWdlX3Rh YmxlKShzdHJ1Y3QgcGFnZV9pbmZvICopOwogI2lmZGVmIENPTkZJR19YODYKICAgICB2b2lkICgq dXBkYXRlX2lyZV9mcm9tX2FwaWMpKHVuc2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVn LCB1bnNpZ25lZCBpbnQgdmFsdWUpOwpAQCAtMTYzLDcgKzE4OSw3IEBAIHN0cnVjdCBpb21tdV9v cHMgewogICAgIHZvaWQgKCpyZXN1bWUpKHZvaWQpOwogICAgIHZvaWQgKCpzaGFyZV9wMm0pKHN0 cnVjdCBkb21haW4gKmQpOwogICAgIHZvaWQgKCpjcmFzaF9zaHV0ZG93bikodm9pZCk7Ci0gICAg aW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGdmbiwKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpOwogICAgIGludCBfX211c3RfY2hlY2sg KCppb3RsYl9mbHVzaF9hbGwpKHN0cnVjdCBkb21haW4gKmQpOwogICAgIGludCAoKmdldF9yZXNl cnZlZF9kZXZpY2VfbWVtb3J5KShpb21tdV9ncmRtX3QgKiwgdm9pZCAqKTsKQEAgLTE4NSw3ICsy MTEsNyBAQCBpbnQgaW9tbXVfZG9fcGNpX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1 Y3QgZG9tYWluICpkLAogaW50IGlvbW11X2RvX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBz dHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHhlbl9kb21jdGxfdCkpOwogCi1pbnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNo KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAoraW50IF9fbXVzdF9jaGVjayBp b21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQp OwogaW50IF9fbXVzdF9jaGVjayBpb21tdV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAq ZCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVu L21tLmgKaW5kZXggMjQ2NTRlOGUyMi4uZTBiMWZmNDFhNiAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUveGVuL21tLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL21tLmgKQEAgLTI2LDYgKzI2LDExIEBA CiAgKiAgIEEgbGluZWFyIGlkZWEgb2YgYSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiBG b3IgYW4gYXV0by10cmFuc2xhdGVkCiAgKiAgIGd1ZXN0LCBwZm4gPT0gZ2ZuIHdoaWxlIGZvciBh IG5vbi10cmFuc2xhdGVkIGd1ZXN0LCBwZm4gIT0gZ2ZuLgogICoKKyAqIGJmbjogQnVzIEZyYW1l IE51bWJlciAoZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS94ZW4vaW9tbXUuaCkKKyAqICAgVGhlIGxp bmVhciBmcmFtZSBudW1iZXJzIG9mIElPTU1VIGFkZHJlc3Mgc3BhY2UuIEFsbCBpbml0aWF0b3Jz IGZvciAoaS5lLgorICogICBhbGwgZGV2aWNlcyBhc3NpZ25lZCB0bykgYSBndWVzdCBzaGFyZSBh IHNpbmdsZSBJT01NVSBhZGRyZXNzIHNwYWNlIGFuZCwKKyAqICAgYnkgZGVmYXVsdCwgWGVuIHdp bGwgZW5zdXJlIGJmbiA9PSBwZm4uCisgKgogICogV0FSTklORzogU29tZSBvZiB0aGVzZSB0ZXJt cyBoYXZlIGNoYW5nZWQgb3ZlciB0aW1lIHdoaWxlIG90aGVycyBoYXZlIGJlZW4KICAqIHVzZWQg aW5jb25zaXN0ZW50bHksIG1lYW5pbmcgdGhhdCBhIGxvdCBvZiBleGlzdGluZyBjb2RlIGRvZXMg bm90IG1hdGNoIHRoZQogICogZGVmaW5pdGlvbnMgYWJvdmUuICBOZXcgY29kZSBzaG91bGQgdXNl IHRoZXNlIHRlcm1zIGFzIGRlc2NyaWJlZCBoZXJlLCBhbmQKLS0gCjIuMTEuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=