From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 1/7] iommu: introduce the concept of BFN... Date: Mon, 12 Feb 2018 10:47:08 +0000 Message-ID: <20180212104714.1922-2-paul.durrant@citrix.com> References: <20180212104714.1922-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.84_2) (envelope-from ) id 1elBgE-0004AC-3n for xen-devel@lists.xenproject.org; Mon, 12 Feb 2018 10:49:50 +0000 In-Reply-To: <20180212104714.1922-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 ZSBNTVUuCgpUaGUgb25seSBub24tY29zbWV0aWMgcGFydCBpcyB0aGUgaW50cm9kdWN0aW9uIG9m IGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uCm9mIGJmbl90IGFuZCBkZWZpbml0aW9uIG9mIElOVkFM SURfQkZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZgpnZm5feChJTlZBTElEX0dGTikgbWVj aGFuaWNhbC4gQSBzdWJlc3F1ZW50IHBhdGNoIHdpbGwgYWN0dWFsbHkgY29udmVydApjb2RlIHRv IG1ha2UgdXNlIG9mIHRoZSBuZXcgdHlwZS4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8 cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxz dXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0 YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5j b20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZXZpbiBUaWFuIDxr ZXZpbi50aWFuQGludGVsLmNvbT4KLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9t bXVfY21kLmMgICAgIHwgMTggKysrLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lv bW11X21hcC5jICAgICB8IDc2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIHwgIDIgKy0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAgICAgfCAxNCArKystLS0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAgfCAyNCArKysrLS0tLS0KIHhlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAgICAgfCAzMCArKysrKystLS0tLS0KIHhl bi9pbmNsdWRlL3hlbi9pb21tdS5oICAgICAgICAgICAgICAgICAgICAgfCAxNiArKystLS0KIDcg ZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2NtZC5jIGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2NtZC5jCmluZGV4IDA4MjQ3ZmEzNTQuLmZmNTViMzg5 YTAgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYwor KysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMKQEAgLTI4NCw3ICsy ODQsNyBAQCB2b2lkIGludmFsaWRhdGVfaW9tbXVfYWxsKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11 KQogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9pb3RsYih1OCBkZXZmbiwgY29uc3Qgc3RydWN0 IHBjaV9kZXYgKnBkZXYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBnYWRk ciwgdW5zaWduZWQgaW50IG9yZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3QgYmFkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdz OwogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11OwpAQCAtMzE1LDEyICszMTUsMTIgQEAgdm9p ZCBhbWRfaW9tbXVfZmx1c2hfaW90bGIodTggZGV2Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpw ZGV2LAogCiAgICAgLyogc2VuZCBJTlZBTElEQVRFX0lPVExCX1BBR0VTIGNvbW1hbmQgKi8KICAg ICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKLSAgICBpbnZhbGlkYXRl X2lvdGxiX3BhZ2VzKGlvbW11LCBtYXhwZW5kLCAwLCBxdWV1ZWlkLCBnYWRkciwgcmVxX2lkLCBv cmRlcik7CisgICAgaW52YWxpZGF0ZV9pb3RsYl9wYWdlcyhpb21tdSwgbWF4cGVuZCwgMCwgcXVl dWVpZCwgYmFkZHIsIHJlcV9pZCwgb3JkZXIpOwogICAgIGZsdXNoX2NvbW1hbmRfYnVmZmVyKGlv bW11KTsKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb21tdS0+bG9jaywgZmxhZ3MpOwog fQogCi1zdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWlu ICpkLCB1aW50NjRfdCBnYWRkciwKK3N0YXRpYyB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90 bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGJhZGRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9yZGVyKQogewogICAgIHN0cnVjdCBw Y2lfZGV2ICpwZGV2OwpAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyB2b2lkIGFtZF9pb21tdV9m bHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAogICAgICAg ICB1OCBkZXZmbiA9IHBkZXYtPmRldmZuOwogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGFt ZF9pb21tdV9mbHVzaF9pb3RsYihkZXZmbiwgcGRldiwgZ2FkZHIsIG9yZGVyKTsKKyAgICAgICAg ICAgIGFtZF9pb21tdV9mbHVzaF9pb3RsYihkZXZmbiwgcGRldiwgYmFkZHIsIG9yZGVyKTsKICAg ICAgICAgICAgIGRldmZuICs9IHBkZXYtPnBoYW50b21fc3RyaWRlOwogICAgICAgICB9IHdoaWxl ICggZGV2Zm4gIT0gcGRldi0+ZGV2Zm4gJiYKICAgICAgICAgICAgICAgICAgIFBDSV9TTE9UKGRl dmZuKSA9PSBQQ0lfU0xPVChwZGV2LT5kZXZmbikgKTsKQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0 aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWluICpkLCB1aW50 NjRfdCBnYWRkciwKIAogLyogRmx1c2ggaW9tbXUgY2FjaGUgYWZ0ZXIgcDJtIGNoYW5nZXMuICov CiBzdGF0aWMgdm9pZCBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGdhZGRyLCB1bnNpZ25l ZCBpbnQgb3JkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IGJhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK ICAgICBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdTsKQEAgLTM1MiwxMyArMzUyLDEzIEBAIHN0YXRp YyB2b2lkIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKICAgICBmb3Jf ZWFjaF9hbWRfaW9tbXUgKCBpb21tdSApCiAgICAgewogICAgICAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKLSAgICAgICAgaW52YWxpZGF0ZV9pb21tdV9wYWdlcyhp b21tdSwgZ2FkZHIsIGRvbV9pZCwgb3JkZXIpOworICAgICAgICBpbnZhbGlkYXRlX2lvbW11X3Bh Z2VzKGlvbW11LCBiYWRkciwgZG9tX2lkLCBvcmRlcik7CiAgICAgICAgIGZsdXNoX2NvbW1hbmRf YnVmZmVyKGlvbW11KTsKICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxv Y2ssIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAoIGF0c19lbmFibGVkICkKLSAgICAgICAgYW1k X2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoZCwgZ2FkZHIsIG9yZGVyKTsKKyAgICAgICAgYW1kX2lv bW11X2ZsdXNoX2FsbF9pb3RsYnMoZCwgYmFkZHIsIG9yZGVyKTsKIH0KIAogdm9pZCBhbWRfaW9t bXVfZmx1c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQpCkBAIC0zNjcsOSArMzY3LDkgQEAg dm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHZv aWQgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IG9yZGVyKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGludCBv cmRlcikKIHsKLSAgICBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsICh1aW50NjRfdCkgZ2ZuIDw8 IFBBR0VfU0hJRlQsIG9yZGVyKTsKKyAgICBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsICh1aW50 NjRfdCkgYmZuIDw8IFBBR0VfU0hJRlQsIG9yZGVyKTsKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1 c2hfZGV2aWNlKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11LCB1aW50MTZfdCBiZGYpCmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKaW5kZXggZmQyMzI3ZDNlNS4uMDlkMjllZjAy NiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCisr KyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwpAQCAtMzUsMTIgKzM1 LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGZuX3RvX3BkZV9pZHgodW5zaWduZWQgbG9uZyBw Zm4sIHVuc2lnbmVkIGludCBsZXZlbCkKICAgICByZXR1cm4gaWR4OwogfQogCi12b2lkIGNsZWFy X2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgbDFfbWZuLCB1bnNpZ25lZCBsb25nIGdm bikKK3ZvaWQgY2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBsMV9tZm4sIHVu c2lnbmVkIGxvbmcgYmZuKQogewogICAgIHU2NCAqdGFibGUsICpwdGU7CiAKICAgICB0YWJsZSA9 IG1hcF9kb21haW5fcGFnZShfbWZuKGwxX21mbikpOwotICAgIHB0ZSA9IHRhYmxlICsgcGZuX3Rv X3BkZV9pZHgoZ2ZuLCBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8xKTsKKyAgICBwdGUgPSB0YWJs ZSArIHBmbl90b19wZGVfaWR4KGJmbiwgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSk7CiAgICAg KnB0ZSA9IDA7CiAgICAgdW5tYXBfZG9tYWluX3BhZ2UodGFibGUpOwogfQpAQCAtMTA0LDcgKzEw NCw3IEBAIHN0YXRpYyBib29sX3Qgc2V0X2lvbW11X3BkZV9wcmVzZW50KHUzMiAqcGRlLCB1bnNp Z25lZCBsb25nIG5leHRfbWZuLAogICAgIHJldHVybiBuZWVkX2ZsdXNoOwogfQogCi1zdGF0aWMg Ym9vbF90IHNldF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIHB0X21mbiwgdW5zaWdu ZWQgbG9uZyBnZm4sIAorc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWdu ZWQgbG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwgaW50IHBkZV9sZXZlbCwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgaXcsIGJvb2xfdCBpcikK IHsKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgYm9vbF90IHNldF9pb21tdV9wdGVfcHJlc2Vu dCh1bnNpZ25lZCBsb25nIHB0X21mbiwgdW5zaWduZWQgbG9uZyBnZm4sCiAKICAgICB0YWJsZSA9 IG1hcF9kb21haW5fcGFnZShfbWZuKHB0X21mbikpOwogCi0gICAgcGRlID0gKHUzMiopKHRhYmxl ICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBwZGVfbGV2ZWwpKTsKKyAgICBwZGUgPSAodTMyKikodGFi bGUgKyBwZm5fdG9fcGRlX2lkeChiZm4sIHBkZV9sZXZlbCkpOwogCiAgICAgbmVlZF9mbHVzaCA9 IHNldF9pb21tdV9wZGVfcHJlc2VudChwZGUsIG5leHRfbWZuLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElPTU1VX1BBR0lOR19NT0RFX0xFVkVMXzAsIGl3LCBpcik7 CkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIHZvaWQgc2V0X3BkZV9jb3VudCh1NjQgKnBkZSwg dW5zaWduZWQgaW50IGNvdW50KQogICogb3RoZXJ3aXNlIGluY3JlYXNlIHBkZSBjb3VudCBpZiBt Zm4gaXMgY29udGlnb3VzIHdpdGggbWZuIC0gMQogICovCiBzdGF0aWMgaW50IGlvbW11X3VwZGF0 ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVk IGxvbmcgbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgbWVyZ2VfbGV2ZWwpCiB7CiAgICAgdW5zaWduZWQgaW50IHBkZV9j b3VudCwgbmV4dF9sZXZlbDsKQEAgLTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMgaW50IGlvbW11X3Vw ZGF0ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAK ICAgICAvKiBnZXQgcGRlIGF0IG1lcmdlIGxldmVsICovCiAgICAgdGFibGUgPSBtYXBfZG9tYWlu X3BhZ2UoX21mbihwdF9tZm4pKTsKLSAgICBwZGUgPSB0YWJsZSArIHBmbl90b19wZGVfaWR4KGdm biwgbWVyZ2VfbGV2ZWwpOworICAgIHBkZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoYmZuLCBt ZXJnZV9sZXZlbCk7CiAKICAgICAvKiBnZXQgcGFnZSB0YWJsZSBvZiBuZXh0IGxldmVsICovCiAg ICAgbnRhYmxlX21hZGRyID0gYW1kX2lvbW11X2dldF9uZXh0X3RhYmxlX2Zyb21fcHRlKCh1MzIq KXBkZSk7CkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGludCBpb21tdV91cGRhdGVfcGRlX2Nv dW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRfbWZuLAogICAgIG1hc2sgPSAo MVVMTDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZlbCkpIC0gMTsKIAogICAgIGlm ICggKChmaXJzdF9tZm4gJiBtYXNrKSA9PSAwKSAmJgotICAgICAgICAgKCgoZ2ZuICYgbWFzaykg fCBmaXJzdF9tZm4pID09IG1mbikgKQorICAgICAgICAgKCgoYmZuICYgbWFzaykgfCBmaXJzdF9t Zm4pID09IG1mbikgKQogICAgIHsKICAgICAgICAgcGRlX2NvdW50ID0gZ2V0X3BkZV9jb3VudCgq cGRlKTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIG91dDoKIH0KIAogc3RhdGljIGludCBpb21tdV9t ZXJnZV9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGludCBm bGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4sIHVu c2lnbmVkIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG1lcmdlX2xldmVsKQogewogICAgIHU2NCAqdGFibGUsICpwZGUsICpudGFibGU7CkBAIC0z OTgsNyArMzk4LDcgQEAgc3RhdGljIGludCBpb21tdV9tZXJnZV9wYWdlcyhzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKICAgICBBU1NFUlQoIHNwaW5faXNfbG9ja2VkKCZo ZC0+YXJjaC5tYXBwaW5nX2xvY2spICYmIHB0X21mbiApOwogCiAgICAgdGFibGUgPSBtYXBfZG9t YWluX3BhZ2UoX21mbihwdF9tZm4pKTsKLSAgICBwZGUgPSB0YWJsZSArIHBmbl90b19wZGVfaWR4 KGdmbiwgbWVyZ2VfbGV2ZWwpOworICAgIHBkZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoYmZu LCBtZXJnZV9sZXZlbCk7CiAKICAgICAvKiBnZXQgZmlyc3QgbWZuICovCiAgICAgbnRhYmxlX21m biA9IGFtZF9pb21tdV9nZXRfbmV4dF90YWJsZV9mcm9tX3B0ZSgodTMyKilwZGUpID4+IFBBR0Vf U0hJRlQ7CkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIGludCBpb21tdV9tZXJnZV9wYWdlcyhz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKICAqIHtSZSwgdW59bWFwcGlu ZyBzdXBlciBwYWdlIGZyYW1lcyBjYXVzZXMgcmUtYWxsb2NhdGlvbiBvZiBpbwogICogcGFnZSB0 YWJsZXMuCiAgKi8KLXN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgcGZuLCAKK3N0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21fYmZuKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bXSkKIHsKICAgICB1NjQgKnBkZSwgKm5leHRf dGFibGVfdmFkZHI7CkBAIC00NzcsMTEgKzQ3NywxMSBAQCBzdGF0aWMgaW50IGlvbW11X3BkZV9m cm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKICAgICAgICAgICAg ICBuZXh0X3RhYmxlX21mbiAhPSAwICkKICAgICAgICAgewogICAgICAgICAgICAgaW50IGk7Ci0g ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuOworICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBtZm4sIGJmbjsKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX3N6OwogCiAgICAg ICAgICAgICBwYWdlX3N6ID0gMSA8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIChuZXh0X2xldmVs IC0gMSkpOwotICAgICAgICAgICAgZ2ZuID0gIHBmbiAmIH4oKDEgPDwgKFBURV9QRVJfVEFCTEVf U0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxKTsKKyAgICAgICAgICAgIGJmbiA9ICBwZm4gJiB+KCgx IDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZlbCkpIC0gMSk7CiAgICAgICAgICAg ICBtZm4gPSBuZXh0X3RhYmxlX21mbjsKIAogICAgICAgICAgICAgLyogYWxsb2NhdGUgbG93ZXIg bGV2ZWwgcGFnZSB0YWJsZSAqLwpAQCAtNDk5LDEwICs0OTksMTAgQEAgc3RhdGljIGludCBpb21t dV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAKICAg ICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgUFRFX1BFUl9UQUJMRV9TSVpFOyBpKysgKQogICAg ICAgICAgICAgewotICAgICAgICAgICAgICAgIHNldF9pb21tdV9wdGVfcHJlc2VudChuZXh0X3Rh YmxlX21mbiwgZ2ZuLCBtZm4sIG5leHRfbGV2ZWwsCisgICAgICAgICAgICAgICAgc2V0X2lvbW11 X3B0ZV9wcmVzZW50KG5leHRfdGFibGVfbWZuLCBiZm4sIG1mbiwgbmV4dF9sZXZlbCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFJT01NVUZfd3JpdGFibGUsICEhSU9N TVVGX3JlYWRhYmxlKTsKICAgICAgICAgICAgICAgICBtZm4gKz0gcGFnZV9zejsKLSAgICAgICAg ICAgICAgICBnZm4gKz0gcGFnZV9zejsKKyAgICAgICAgICAgICAgICBiZm4gKz0gcGFnZV9zejsK ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfcGFnZXMo ZCk7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgZ2ZuKQorc3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBiZm4pCiB7CiAgICAgdTE2IGJkZjsKICAgICB2b2lkICpkZXZpY2VfZW50 cnk7CkBAIC01NTQsMTMgKzU1NCwxMyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICB1bnNpZ25lZCBsb25nIG9s ZF9yb290X21mbjsKICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsK IAotICAgIGlmICggZ2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCisgICAgaWYgKCBiZm4gPT0g YmZuX3goSU5WQUxJRF9CRk4pICkKICAgICAgICAgcmV0dXJuIC1FQUREUk5PVEFWQUlMOwotICAg IEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRIKSk7CisgICAgQVNT RVJUKCEoYmZuID4+IERFRkFVTFRfRE9NQUlOX0FERFJFU1NfV0lEVEgpKTsKIAogICAgIGxldmVs ID0gaGQtPmFyY2gucGFnaW5nX21vZGU7CiAgICAgb2xkX3Jvb3QgPSBoZC0+YXJjaC5yb290X3Rh YmxlOwotICAgIG9mZnNldCA9IGdmbiA+PiAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIChsZXZlbCAt IDEpKTsKKyAgICBvZmZzZXQgPSBiZm4gPj4gKFBURV9QRVJfVEFCTEVfU0hJRlQgKiAobGV2ZWwg LSAxKSk7CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmhkLT5hcmNoLm1hcHBpbmdfbG9j aykgJiYgaXNfaHZtX2RvbWFpbihkKSk7CiAKQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgaW50 IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikK ICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCitpbnQgYW1kX2lvbW11 X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBs b25nIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQogewog ICAgIGJvb2xfdCBuZWVkX2ZsdXNoID0gMDsKQEAgLTY1MSwzNCArNjUxLDM0IEBAIGludCBhbWRf aW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2ln bmVkIGxvbmcgbWZuLAogICAgIGlmICggcmMgKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9JT01NVV9ERUJVRygiUm9vdCB0 YWJsZSBhbGxvYyBmYWlsZWQsIGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZhaWxlZCwgYmZuID0gJWx4XG4iLCBiZm4pOwogICAg ICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9CiAKICAgICAv KiBTaW5jZSBIVk0gZG9tYWluIGlzIGluaXRpYWxpemVkIHdpdGggMiBsZXZlbCBJTyBwYWdlIHRh YmxlLAotICAgICAqIHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIg Z2ZuIG5vdyAqLworICAgICAqIHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3Ig bGFnZXIgYmZuIG5vdyAqLwogICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAg ICAgICBpZiAoIHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBnZm4pICkKKyAgICAgICAgaWYgKCB1cGRh dGVfcGFnaW5nX21vZGUoZCwgYmZuKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5s b2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVH KCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBnZm4gPSAlbHhcbiIsIGdmbik7CisgICAgICAgICAg ICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGJmbiA9ICVseFxuIiwg YmZuKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiAt RUZBVUxUOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9nZm4o ZCwgZ2ZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRl X2Zyb21fYmZuKGQsIGJmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKICAgICB7CiAg ICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURf SU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGdmbiA9ICVseFxuIiwgZ2Zu KTsKKyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBi Zm4gPSAlbHhcbiIsIGJmbik7CiAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CiAgICAgfQogCiAgICAgLyogSW5zdGFsbCA0ayBtYXBwaW5nIGZpcnN0ICov Ci0gICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGdmbiwg bWZuLCAKKyAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwg YmZuLCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9Q QUdJTkdfTU9ERV9MRVZFTF8xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgISEoZmxhZ3MgJiBJT01NVUZfd3JpdGFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJT01NVUZfcmVhZGFibGUpKTsKQEAgLTY5MCw3ICs2 OTAsNyBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAvKiA0SyBtYXBwaW5nIGZvciBQViBn dWVzdHMgbmV2ZXIgY2hhbmdlcywgCiAgICAgICogbm8gbmVlZCB0byBmbHVzaCBpZiB3ZSB0cnVz dCBub24tcHJlc2VudCBiaXRzICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKLSAgICAg ICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGdmbiwgMCk7CisgICAgICAgIGFtZF9pb21tdV9m bHVzaF9wYWdlcyhkLCBiZm4sIDApOwogCiAgICAgZm9yICggbWVyZ2VfbGV2ZWwgPSBJT01NVV9Q QUdJTkdfTU9ERV9MRVZFTF8yOwogICAgICAgICAgIG1lcmdlX2xldmVsIDw9IGhkLT5hcmNoLnBh Z2luZ19tb2RlOyBtZXJnZV9sZXZlbCsrICkKQEAgLTY5OCwxNSArNjk4LDE1IEBAIGludCBhbWRf aW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2ln bmVkIGxvbmcgbWZuLAogICAgICAgICBpZiAoIHB0X21mblttZXJnZV9sZXZlbF0gPT0gMCApCiAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCAhaW9tbXVfdXBkYXRlX3BkZV9jb3VudChk LCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQogICAgICAgICAgICAgYnJlYWs7CiAK LSAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdlcyhkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLCBn Zm4sIAorICAgICAgICBpZiAoIGlvbW11X21lcmdlX3BhZ2VzKGQsIHB0X21mblttZXJnZV9sZXZl bF0sIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncywgbWVyZ2VfbGV2 ZWwpICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBp bmdfbG9jayk7CiAgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIk1lcmdlIGlvbW11IHBhZ2Ug ZmFpbGVkIGF0IGxldmVsICVkLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImdmbiA9 ICVseCBtZm4gPSAlbHhcbiIsIG1lcmdlX2xldmVsLCBnZm4sIG1mbik7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImJmbiA9ICVseCBtZm4gPSAlbHhcbiIsIG1lcmdlX2xldmVsLCBiZm4s IG1mbik7CiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgICAgICByZXR1cm4g LUVGQVVMVDsKICAgICAgICAgfQpAQCAtNzIwLDcgKzcyMCw3IEBAIG91dDoKICAgICByZXR1cm4g MDsKIH0KIAotaW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuKQoraW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIHVuc2lnbmVkIGxvbmcgcHRfbWZuWzddOwogICAg IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwpAQCAtNzM5LDM0ICs3Mzks MzQgQEAgaW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuKQogICAgIH0KIAogICAgIC8qIFNpbmNlIEhWTSBkb21haW4gaXMgaW5pdGlhbGl6 ZWQgd2l0aCAyIGxldmVsIElPIHBhZ2UgdGFibGUsCi0gICAgICogd2UgbWlnaHQgbmVlZCBhIGRl ZXBlciBwYWdlIHRhYmxlIGZvciBsYWdlciBnZm4gbm93ICovCisgICAgICogd2UgbWlnaHQgbmVl ZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdlciBiZm4gbm93ICovCiAgICAgaWYgKCBpc19o dm1fZG9tYWluKGQpICkKICAgICB7Ci0gICAgICAgIGludCByYyA9IHVwZGF0ZV9wYWdpbmdfbW9k ZShkLCBnZm4pOworICAgICAgICBpbnQgcmMgPSB1cGRhdGVfcGFnaW5nX21vZGUoZCwgYmZuKTsK IAogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVw ZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAgICAgIEFN RF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgYmZuID0gJWx4XG4iLCBiZm4p OwogICAgICAgICAgICAgaWYgKCByYyAhPSAtRUFERFJOT1RBVkFJTCApCiAgICAgICAgICAgICAg ICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICB9CiAg ICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9nZm4oZCwgZ2ZuLCBwdF9tZm4pIHx8IChw dF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRlX2Zyb21fYmZuKGQsIGJmbiwgcHRf bWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZo ZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQg SU8gcGFnZXRhYmxlIGVudHJ5IGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBiZm4gPSAlbHhcbiIsIGJmbik7CiAg ICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgfQog CiAgICAgLyogbWFyayBQVEUgYXMgJ3BhZ2Ugbm90IHByZXNlbnQnICovCi0gICAgY2xlYXJfaW9t bXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBnZm4pOworICAgIGNsZWFyX2lvbW11X3B0ZV9wcmVz ZW50KHB0X21mblsxXSwgYmZuKTsKICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19s b2NrKTsKIAotICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBnZm4sIDApOworICAgIGFtZF9p b21tdV9mbHVzaF9wYWdlcyhkLCBiZm4sIDApOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwppbmRleCAxMmQyNjk1Yjg5Li5k NjA4NjMxZTZlIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2Ft ZF9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11 LmMKQEAgLTU3OCw3ICs1NzgsNyBAQCBzdGF0aWMgdm9pZCBhbWRfZHVtcF9wMm1fdGFibGVfbGV2 ZWwoc3RydWN0IHBhZ2VfaW5mbyogcGcsIGludCBsZXZlbCwKICAgICAgICAgICAgICAgICBtYWRk cl90b19wYWdlKG5leHRfdGFibGVfbWFkZHIpLCBuZXh0X2xldmVsLAogICAgICAgICAgICAgICAg IGFkZHJlc3MsIGluZGVudCArIDEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGso IiUqc2dmbjogJTA4bHggIG1mbjogJTA4bHhcbiIsCisgICAgICAgICAgICBwcmludGsoIiUqc2Jm bjogJTA4bHggIG1mbjogJTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiIiwK ICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylQRk5fRE9XTihhZGRyZXNzKSwKICAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylQRk5fRE9XTihuZXh0X3RhYmxlX21hZGRy KSk7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwppbmRleCA3NGMwOWIwOTkxLi4zNjA1ZTIw YWZkIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCisrKyBi L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKQEAgLTI1NTEsNyArMjU1MSw3IEBA IHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3Qg ZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewog CS8qIEFSTSBTTU1VIHYxIGRvZXNuJ3QgaGF2ZSBmbHVzaCBieSBWTUEgYW5kIFZNSUQgKi8KQEAg LTI3MzcsNyArMjczNyw3IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X2lvbW11X2RvbWFpbl90ZWFy ZG93bihzdHJ1Y3QgZG9tYWluICpkKQogCXhmcmVlKHhlbl9kb21haW4pOwogfQogCi1zdGF0aWMg aW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbiwKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogCQkJdW5zaWduZWQgbG9uZyBt Zm4sIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlwMm1fdHlwZV90IHQ7CkBAIC0yNzQ4LDEwICsy NzQ4LDEwIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogCSAqIHByb3RlY3RlZCBieSBhbiBJT01N VSwgWGVuIG5lZWRzIHRvIGFkZCBhIDE6MSBtYXBwaW5nIGluIHRoZSBkb21haW4KIAkgKiBwMm0g dG8gYWxsb3cgRE1BIHJlcXVlc3QgdG8gd29yay4KIAkgKiBUaGlzIGlzIG9ubHkgdmFsaWQgd2hl biB0aGUgZG9tYWluIGlzIGRpcmVjdGVkIG1hcHBlZC4gSGVuY2UgdGhpcwotCSAqIGZ1bmN0aW9u IHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUgd2l0aCBnZm4gPT0gbWZuLgorCSAq IGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUgd2l0aCBiZm4gPT0g bWZuLgogCSAqLwogCUJVR19PTighaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkpOwotCUJVR19P TihtZm4gIT0gZ2ZuKTsKKwlCVUdfT04obWZuICE9IGJmbik7CiAKIAkvKiBXZSBvbmx5IHN1cHBv cnQgcmVhZGFibGUgYW5kIHdyaXRhYmxlIGZsYWdzICovCiAJaWYgKCEoZmxhZ3MgJiAoSU9NTVVG X3JlYWRhYmxlIHwgSU9NTVVGX3dyaXRhYmxlKSkpCkBAIC0yNzYzLDEwICsyNzYzLDEwIEBAIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgZ2ZuLAogCSAqIFRoZSBmdW5jdGlvbiBndWVzdF9waHlzbWFwX2FkZF9l bnRyeSByZXBsYWNlcyB0aGUgY3VycmVudCBtYXBwaW5nCiAJICogaWYgdGhlcmUgaXMgYWxyZWFk eSBvbmUuLi4KIAkgKi8KLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoZCwgX2dmbihn Zm4pLCBfbWZuKG1mbiksIDAsIHQpOworCXJldHVybiBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShk LCBfZ2ZuKGJmbiksIF9tZm4obWZuKSwgMCwgdCk7CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2No ZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBn Zm4pCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogewogCS8qCiAJICogVGhpcyBmdW5jdGlvbiBz aG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdoZW4gdGhlIGRvbWFpbgpAQCAtMjc3 NSw3ICsyNzc1LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKIAlpZiAoICFpc19kb21haW5f ZGlyZWN0X21hcHBlZChkKSApCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGd1ZXN0X3Bo eXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBfbWZuKGdmbiksIDApOworCXJldHVybiBn dWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oYmZuKSwgX21mbihiZm4pLCAwKTsKIH0K IAogc3RhdGljIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgYXJtX3NtbXVfaW9tbXVfb3BzID0gewpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5kZXggMWFlY2Y3Y2YzNC4uZGY3YzIyZjM5YyAxMDA2NDQK LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pb21tdS5jCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBpb21tdV9kb21haW5f ZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQogICAgIGFyY2hfaW9tbXVfZG9tYWluX2Rlc3Ryb3ko ZCk7CiB9CiAKLWludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCitpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWlu X2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTI2NCwxMyArMjY0LDEzIEBAIGludCBpb21t dV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQg bG9uZyBtZm4sCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyAp CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFn ZShkLCBnZm4sIG1mbiwgZmxhZ3MpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3Bh Z2UoZCwgYmZuLCBtZm4sIGZsYWdzKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewog ICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSAp CiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAgICAgICAgICJkJWQ6 IElPTU1VIG1hcHBpbmcgZ2ZuICUjbHggdG8gbWZuICUjbHggZmFpbGVkOiAlZFxuIiwKLSAgICAg ICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGdmbiwgbWZuLCByYyk7CisgICAgICAgICAgICAg ICAgICAgImQlZDogSU9NTVUgbWFwcGluZyBiZm4gJSNseCB0byBtZm4gJSNseCBmYWlsZWQ6ICVk XG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgYmZuLCBtZm4sIHJjKTsKIAog ICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9tYWlu X2NyYXNoKGQpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIGludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgcmV0 dXJuIHJjOwogfQogCi1pbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbikKK2ludCBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgYmZuKQogewogICAgIGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0g ZG9tX2lvbW11KGQpOwogICAgIGludCByYzsKQEAgLTI4NywxMyArMjg3LDEzIEBAIGludCBpb21t dV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIGlm ICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1cm4g MDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBnZm4pOworICAg IHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBiZm4pOwogICAgIGlmICggdW5s aWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYg cHJpbnRrX3JhdGVsaW1pdCgpICkKICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSCi0gICAg ICAgICAgICAgICAgICAgImQlZDogSU9NTVUgdW5tYXBwaW5nIGdmbiAlI2x4IGZhaWxlZDogJWRc biIsCi0gICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBnZm4sIHJjKTsKKyAgICAgICAg ICAgICAgICAgICAiZCVkOiBJT01NVSB1bm1hcHBpbmcgYmZuICUjbHggZmFpbGVkOiAlZFxuIiwK KyAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGJmbiwgcmMpOwogCiAgICAgICAgIGlm ICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7 CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIHZvaWQgaW9tbXVfZnJlZV9wYWdldGFibGVzKHVu c2lnbmVkIGxvbmcgdW51c2VkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1hc2tf Y3ljbGUoc21wX3Byb2Nlc3Nvcl9pZCgpLCAmY3B1X29ubGluZV9tYXApKTsKIH0KIAotaW50IGlv bW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAoraW50 IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAog ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewogICAgIGNv bnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwpAQCAtMzI4LDEzICsz MjgsMTMgQEAgaW50IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLAogICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMg fHwgIWhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoICkKICAgICAgICAgcmV0dXJuIDA7CiAK LSAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGdmbiwgcGFnZV9jb3Vu dCk7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaChkLCBiZm4sIHBhZ2Vf Y291bnQpOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlmICggIWQt PmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKICAgICAgICAgICAgIHBy aW50ayhYRU5MT0dfRVJSCi0gICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgSU9UTEIgZmx1 c2ggZmFpbGVkOiAlZCwgZ2ZuICUjbHgsIHBhZ2UgY291bnQgJXVcbiIsCi0gICAgICAgICAgICAg ICAgICAgZC0+ZG9tYWluX2lkLCByYywgZ2ZuLCBwYWdlX2NvdW50KTsKKyAgICAgICAgICAgICAg ICAgICAiZCVkOiBJT01NVSBJT1RMQiBmbHVzaCBmYWlsZWQ6ICVkLCBiZm4gJSNseCwgcGFnZSBj b3VudCAldVxuIiwKKyAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjLCBiZm4sIHBh Z2VfY291bnQpOwogCiAgICAgICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAgICAg ICAgICAgICBkb21haW5fY3Jhc2goZCk7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCmlu ZGV4IGRhYWVkMGFiYmQuLjE4NzUyODE5YTcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21t dS5jCkBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1 c2hfYWxsKHZvaWQpCiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lv dGxiKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbF90IGRtYV9vbGRfcHRlX3ByZXNlbnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkK IHsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2Zs dXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIGlmICggaW9tbXVfZG9taWQgPT0g LTEgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCBwYWdlX2NvdW50ICE9 IDEgfHwgZ2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCisgICAgICAgIGlmICggcGFnZV9jb3Vu dCAhPSAxIHx8IGJmbiA9PSBiZm5feChJTlZBTElEX0JGTikgKQogICAgICAgICAgICAgcmMgPSBp b21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAgZWxz ZQogICAgICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2Rv bWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2Zu IDw8IFBBR0VfU0hJRlRfNEssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocGFkZHJfdCliZm4gPDwgUEFHRV9TSElGVF80SywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CkBAIC02MzMsMTUgKzYzMywxNSBA QCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWlu ICpkLAogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wYWdl cyhzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50 KQogewotICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBnZm4sIDEsIHBhZ2VfY291bnQp OworICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBiZm4sIDEsIHBhZ2VfY291bnQpOwog fQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0 IGRvbWFpbiAqZCkKIHsKLSAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgZ2ZuX3goSU5W QUxJRF9HRk4pLCAwLCAwKTsKKyAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgYmZuX3go SU5WQUxJRF9CRk4pLCAwLCAwKTsKIH0KIAogLyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxl ICovCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCBzdGF0aWMgdm9pZCBpb21tdV9kb21haW5fdGVhcmRv d24oc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxf aW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBmbGFncykKIHsKQEAgLTE3ODAsMTQgKzE3ODAsMTQgQEAgc3RhdGljIGludCBfX211c3RfY2hl Y2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKIAogICAgIHNwaW5fbG9j aygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKIAotICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFf cGFnZV9tYWRkcihkLCAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywgMSk7CisgICAgcGdf bWFkZHIgPSBhZGRyX3RvX2RtYV9wYWdlX21hZGRyKGQsIChwYWRkcl90KWJmbiA8PCBQQUdFX1NI SUZUXzRLLCAxKTsKICAgICBpZiAoIHBnX21hZGRyID09IDAgKQogICAgIHsKICAgICAgICAgc3Bp bl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgIHJldHVybiAtRU5PTUVN OwogICAgIH0KICAgICBwYWdlID0gKHN0cnVjdCBkbWFfcHRlICopbWFwX3Z0ZF9kb21haW5fcGFn ZShwZ19tYWRkcik7Ci0gICAgcHRlID0gcGFnZSArIChnZm4gJiBMRVZFTF9NQVNLKTsKKyAgICBw dGUgPSBwYWdlICsgKGJmbiAmIExFVkVMX01BU0spOwogICAgIG9sZCA9ICpwdGU7CiAgICAgZG1h X3NldF9wdGVfYWRkcihuZXcsIChwYWRkcl90KW1mbiA8PCBQQUdFX1NISUZUXzRLKTsKICAgICBk bWFfc2V0X3B0ZV9wcm90KG5ldywKQEAgLTE4MTEsMjIgKzE4MTEsMjIgQEAgc3RhdGljIGludCBf X211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKICAgICB1 bm1hcF92dGRfZG9tYWluX3BhZ2UocGFnZSk7CiAKICAgICBpZiAoICF0aGlzX2NwdShpb21tdV9k b250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGIoZCwgZ2Zu LCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90 bGIoZCwgYmZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CiAKICAgICByZXR1cm4gcmM7CiB9 CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBnZm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIC8qIERvIG5vdGhpbmcgaWYg aGFyZHdhcmUgZG9tYWluIGFuZCBpb21tdSBzdXBwb3J0cyBwYXNzIHRocnUuICovCiAgICAgaWYg KCBpb21tdV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICBy ZXR1cm4gMDsKIAotICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29uZShkLCAocGFkZHJfdClnZm4g PDwgUEFHRV9TSElGVF80Syk7CisgICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJfb25lKGQsIChwYWRk cl90KWJmbiA8PCBQQUdFX1NISUZUXzRLKTsKIH0KIAotaW50IGlvbW11X3B0ZV9mbHVzaChzdHJ1 Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKK2ludCBpb21tdV9wdGVfZmx1c2goc3Ry dWN0IGRvbWFpbiAqZCwgdTY0IGJmbiwgdTY0ICpwdGUsCiAgICAgICAgICAgICAgICAgICAgIGlu dCBvcmRlciwgaW50IHByZXNlbnQpCiB7CiAgICAgc3RydWN0IGFjcGlfZHJoZF91bml0ICpkcmhk OwpAQCAtMTg1MCw3ICsxODUwLDcgQEAgaW50IGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWlu ICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg IHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBBR0VfU0hJRlRfNEss CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWJmbiA8PCBQQUdF X1NISUZUXzRLLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciwgIXBy ZXNlbnQsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAgIGlmICggcmMgPiAwICkKICAgICAgICAg ewpAQCAtMjYyMCw3ICsyNjIwLDcgQEAgc3RhdGljIHZvaWQgdnRkX2R1bXBfcDJtX3RhYmxlX2xl dmVsKHBhZGRyX3QgcHRfbWFkZHIsIGludCBsZXZlbCwgcGFkZHJfdCBncGEsCiAgICAgICAgICAg ICB2dGRfZHVtcF9wMm1fdGFibGVfbGV2ZWwoZG1hX3B0ZV9hZGRyKCpwdGUpLCBuZXh0X2xldmVs LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLCBpbmRlbnQg KyAxKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRrKCIlKnNnZm46ICUwOGx4IG1m bjogJTA4bHhcbiIsCisgICAgICAgICAgICBwcmludGsoIiUqc2JmbjogJTA4bHggbWZuOiAlMDhs eFxuIiwKICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIiLAogICAgICAgICAgICAgICAgICAg ICh1bnNpZ25lZCBsb25nKShhZGRyZXNzID4+IFBBR0VfU0hJRlRfNEspLAogICAgICAgICAgICAg ICAgICAgICh1bnNpZ25lZCBsb25nKShkbWFfcHRlX2FkZHIoKnB0ZSkgPj4gUEFHRV9TSElGVF80 SykpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94 ZW4vaW9tbXUuaAppbmRleCAzM2M4YjIyMWRjLi5kZTFjNTgxY2RkIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMjMs MTEgKzIzLDE1IEBACiAjaW5jbHVkZSA8eGVuL3BhZ2UtZGVmcy5oPgogI2luY2x1ZGUgPHhlbi9z cGlubG9jay5oPgogI2luY2x1ZGUgPHhlbi9wY2kuaD4KKyNpbmNsdWRlIDx4ZW4vdHlwZXNhZmUu aD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2lvcmVxLmg+CiAjaW5jbHVkZSA8cHVibGljL2RvbWN0 bC5oPgogI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4KICNpbmNsdWRlIDxhc20vaW9tbXUuaD4KIAor VFlQRV9TQUZFKHVuc2lnbmVkIGxvbmcsIGJmbik7CisjZGVmaW5lIElOVkFMSURfQkZOICAgICAg X2Jmbih+MFVMKQorCiBleHRlcm4gYm9vbF90IGlvbW11X2VuYWJsZSwgaW9tbXVfZW5hYmxlZDsK IGV4dGVybiBib29sX3QgZm9yY2VfaW9tbXUsIGlvbW11X3ZlcmJvc2U7CiBleHRlcm4gYm9vbF90 IGlvbW11X3dvcmthcm91bmRfYmlvc19idWcsIGlvbW11X2lnZngsIGlvbW11X3Bhc3N0aHJvdWdo OwpAQCAtNjAsOSArNjQsOSBAQCB2b2lkIGlvbW11X3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQp OwogI2RlZmluZSBJT01NVUZfcmVhZGFibGUgICgxdTw8X0lPTU1VRl9yZWFkYWJsZSkKICNkZWZp bmUgX0lPTU1VRl93cml0YWJsZSAxCiAjZGVmaW5lIElPTU1VRl93cml0YWJsZSAgKDF1PDxfSU9N TVVGX3dyaXRhYmxlKQotaW50IF9fbXVzdF9jaGVjayBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwot aW50IF9fbXVzdF9jaGVjayBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuKTsKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbik7CiAKIGVudW0gaW9tbXVfZmVhdHVyZQogewpA QCAtMTUyLDkgKzE1Niw5IEBAIHN0cnVjdCBpb21tdV9vcHMgewogI2VuZGlmIC8qIEhBU19QQ0kg Ki8KIAogICAgIHZvaWQgKCp0ZWFyZG93bikoc3RydWN0IGRvbWFpbiAqZCk7Ci0gICAgaW50IF9f bXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdm biwKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqbWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFncyk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAo KnVubWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKTsKKyAgICBp bnQgX19tdXN0X2NoZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBiZm4pOwogICAgIHZvaWQgKCpmcmVlX3BhZ2VfdGFibGUpKHN0cnVjdCBwYWdlX2luZm8g Kik7CiAjaWZkZWYgQ09ORklHX1g4NgogICAgIHZvaWQgKCp1cGRhdGVfaXJlX2Zyb21fYXBpYyko dW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWx1ZSk7 CkBAIC0xNjUsNyArMTY5LDcgQEAgc3RydWN0IGlvbW11X29wcyB7CiAgICAgdm9pZCAoKnJlc3Vt ZSkodm9pZCk7CiAgICAgdm9pZCAoKnNoYXJlX3AybSkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAg dm9pZCAoKmNyYXNoX3NodXRkb3duKSh2b2lkKTsKLSAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90 bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgIGludCBf X211c3RfY2hlY2sgKCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZV9jb3VudCk7CiAgICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoX2FsbCkoc3Ry dWN0IGRvbWFpbiAqZCk7CiAgICAgaW50ICgqZ2V0X3Jlc2VydmVkX2RldmljZV9tZW1vcnkpKGlv bW11X2dyZG1fdCAqLCB2b2lkICopOwpAQCAtMTg3LDcgKzE5MSw3IEBAIGludCBpb21tdV9kb19w Y2lfZG9tY3RsKHN0cnVjdCB4ZW5fZG9tY3RsICosIHN0cnVjdCBkb21haW4gKmQsCiBpbnQgaW9t bXVfZG9fZG9tY3RsKHN0cnVjdCB4ZW5fZG9tY3RsICosIHN0cnVjdCBkb21haW4gKmQsCiAgICAg ICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RvbWN0bF90KSk7CiAK LWludCBfX211c3RfY2hlY2sgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sCitpbnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCk7CiBpbnQgX19tdXN0X2NoZWNrIGlv bW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKTsKIAotLSAKMi4xMS4wCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==