From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v9 1/7] iommu: introduce the concept of DFN... Date: Thu, 13 Sep 2018 16:21:21 +0100 Message-ID: <20180913152128.6114-2-paul.durrant@citrix.com> References: <20180913152128.6114-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 1g0TR1-0008Th-1Y for xen-devel@lists.xenproject.org; Thu, 13 Sep 2018 15:21:35 +0000 In-Reply-To: <20180913152128.6114-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 , Wei Liu , Julien Grall , Paul Durrant , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnZGV2aWNlIERNQSBmcmFtZSBudW1iZXInIGkuZS4gYSBmcmFtZSBudW1iZXIg bWFwcGVkIGluIHRoZSBJT01NVQoocmF0aGVyIHRoYW4gdGhlIE1NVSkgYW5kIGhlbmNlIHVzZWQg Zm9yIERNQSBhZGRyZXNzIHRyYW5zbGF0aW9uLgoKVGhpcyBwYXRjaCBpcyBhIGxhcmdlbHkgY29z bWV0aWMgY2hhbmdlIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHRlcm1zICdnZm4nCmFuZCAnZ2FkZHIn IGZvciAnZGZuJyBhbmQgJ2RhZGRyJyBpbiBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGUgZnJhbWUg bnVtYmVyCm9yIGFkZHJlc3MgcmVsYXRlIHRvIGEgZGV2aWNlIHJhdGhlciB0aGFuIHRoZSBDUFUu CgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0aGUgaW50 cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGRmbl90IGFuZCBkZWZpbml0 aW9uIG9mCiAgIElOVkFMSURfREZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBnZm5feChJ TlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Rmbl90b19k YWRkciBhbmQgX19kYWRkcl90b19kZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMgd2l0aG91 dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vic2VxdWVu dCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2FmZSBERk5z LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4K QWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCkNjOiBXZWkgTGl1 IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVl LnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNj OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnY5OgogLSBSZS13b3JkIGNvbW1l bnQgaW4gbW0uaC4KIC0gTW92ZSBkZWZpbml0aW9ucyByZWxhdGluZyB0byBkYWRkciBpbnRvIGFz bS14ODYvaW9tbXUuaCBzaW5jZSB0aGVzZSBhcmUKICAgbm90IHVzZWQgYnkgYW55IEFSTSBJT01N VSBpbXBsZW1lbnRhdGlvbi4KIC0gRml4IF9fZGFkZHJfdG9fZGZuKCkgdG8gcHJvcGVybHkgcGFy ZW50aGVzaXplIGFuZCByZW1vdmUgY2FzdC4KCnY4OgogLSBDb3JyZWN0IGRlZmluaXRpb24gb2Yg SU5WQUxJRF9ERk4uCiAtIERvbid0IHVzZSBfQUMgaW4gZGVmaW5pdGlvbiBvZiBJT01NVV9QQUdF X1NJWkUuCgp2NzoKIC0gUmUtbmFtZSBCRk4gLT4gREZOIGFzIHJlcXVlc3RlZCBieSBKYW4uCiAt IERyb3BwZWQgV2VpJ3MgUi1iIGJlY2F1c2Ugb2YgbmFtZSBjaGFuZ2UuCgp2NjoKIC0gRHJvcHBl ZCBjaGFuZ2VzIHRvICdtZm4nIHNlY3Rpb24gaW4geGVuL21tLmggYXMgc3VnZ2VzdGVkIGJ5IEtl dmluLgoKdjM6CiAtIEdldCByaWQgb2YgaW50ZXJtZWRpYXRlICdmcmFtZScgdmFyaWFibGVzIGFn YWluLgoKdjI6CiAtIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIEphbi4KLS0tCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMgICAgIHwgMTggKysrLS0tLQogeGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAgICB8IDc4ICsrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5j IHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAgICAgfCAx NiArKystLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAgfCAy OCArKysrKy0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAgICAg ICB8IDMwICsrKysrLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmggICAgICAgICAg ICAgICAgIHwgMTIgKysrKysKIHhlbi9pbmNsdWRlL3hlbi9pb21tdS5oICAgICAgICAgICAgICAg ICAgICAgfCAyNiArKysrKysrLS0tCiB4ZW4vaW5jbHVkZS94ZW4vbW0uaCAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDUgKysKIDkgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDky IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9p b21tdV9jbWQuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYwppbmRl eCAwODI0N2ZhMzU0Li5kNGQwNzFlNTNlIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9hbWQvaW9tbXVfY21kLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lv bW11X2NtZC5jCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBpbnZhbGlkYXRlX2lvbW11X2FsbChz dHJ1Y3QgYW1kX2lvbW11ICppb21tdSkKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1c2hfaW90bGIo dTggZGV2Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhZGRyX3QgZGFkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKIHsKICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11OwpAQCAt MzE1LDEyICszMTUsMTIgQEAgdm9pZCBhbWRfaW9tbXVfZmx1c2hfaW90bGIodTggZGV2Zm4sIGNv bnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCiAgICAgLyogc2VuZCBJTlZBTElEQVRFX0lPVExC X1BBR0VTIGNvbW1hbmQgKi8KICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmxvY2ssIGZs YWdzKTsKLSAgICBpbnZhbGlkYXRlX2lvdGxiX3BhZ2VzKGlvbW11LCBtYXhwZW5kLCAwLCBxdWV1 ZWlkLCBnYWRkciwgcmVxX2lkLCBvcmRlcik7CisgICAgaW52YWxpZGF0ZV9pb3RsYl9wYWdlcyhp b21tdSwgbWF4cGVuZCwgMCwgcXVldWVpZCwgZGFkZHIsIHJlcV9pZCwgb3JkZXIpOwogICAgIGZs dXNoX2NvbW1hbmRfYnVmZmVyKGlvbW11KTsKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZp b21tdS0+bG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxs X2lvdGxicyhzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBnYWRkciwKK3N0YXRpYyB2b2lkIGFt ZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIGRhZGRyX3QgZGFkZHIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3Jk ZXIpCiB7CiAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7CkBAIC0zMzMsNyArMzMzLDcgQEAgc3Rh dGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoc3RydWN0IGRvbWFpbiAqZCwgdWlu dDY0X3QgZ2FkZHIsCiAgICAgICAgIHU4IGRldmZuID0gcGRldi0+ZGV2Zm47CiAKICAgICAgICAg ZG8gewotICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKGRldmZuLCBwZGV2LCBnYWRk ciwgb3JkZXIpOworICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKGRldmZuLCBwZGV2 LCBkYWRkciwgb3JkZXIpOwogICAgICAgICAgICAgZGV2Zm4gKz0gcGRldi0+cGhhbnRvbV9zdHJp ZGU7CiAgICAgICAgIH0gd2hpbGUgKCBkZXZmbiAhPSBwZGV2LT5kZXZmbiAmJgogICAgICAgICAg ICAgICAgICAgUENJX1NMT1QoZGV2Zm4pID09IFBDSV9TTE9UKHBkZXYtPmRldmZuKSApOwpAQCAt MzQyLDcgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKHN0 cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAogCiAvKiBGbHVzaCBpb21tdSBjYWNoZSBh ZnRlciBwMm0gY2hhbmdlcy4gKi8KIHN0YXRpYyB2b2lkIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMo c3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGFkZHJfdCBkYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQogewogICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGFtZF9pb21tdSAqaW9tbXU7CkBAIC0zNTIs MTMgKzM1MiwxMyBAQCBzdGF0aWMgdm9pZCBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVjdCBk b21haW4gKmQsCiAgICAgZm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUgKQogICAgIHsKICAgICAg ICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvbW11LT5sb2NrLCBmbGFncyk7Ci0gICAgICAgIGludmFs aWRhdGVfaW9tbXVfcGFnZXMoaW9tbXUsIGdhZGRyLCBkb21faWQsIG9yZGVyKTsKKyAgICAgICAg aW52YWxpZGF0ZV9pb21tdV9wYWdlcyhpb21tdSwgZGFkZHIsIGRvbV9pZCwgb3JkZXIpOwogICAg ICAgICBmbHVzaF9jb21tYW5kX2J1ZmZlcihpb21tdSk7CiAgICAgICAgIHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmlvbW11LT5sb2NrLCBmbGFncyk7CiAgICAgfQogCiAgICAgaWYgKCBhdHNfZW5h YmxlZCApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKGQsIGdhZGRyLCBvcmRl cik7CisgICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKGQsIGRhZGRyLCBvcmRlcik7 CiB9CiAKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkKQpA QCAtMzY3LDkgKzM2Nyw5IEBAIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdlcyhzdHJ1Y3Qg ZG9tYWluICpkKQogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWlu ICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2ln bmVkIGludCBvcmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg ZGZuLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7Ci0gICAgX2FtZF9pb21tdV9mbHVzaF9wYWdlcyhk LCAodWludDY0X3QpIGdmbiA8PCBQQUdFX1NISUZULCBvcmRlcik7CisgICAgX2FtZF9pb21tdV9m bHVzaF9wYWdlcyhkLCBfX2Rmbl90b19kYWRkcihkZm4pLCBvcmRlcik7CiB9CiAKIHZvaWQgYW1k X2lvbW11X2ZsdXNoX2RldmljZShzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSwgdWludDE2X3QgYmRm KQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCmluZGV4IDcwYjQzNDViMzcu LjYxYWRlNzE4NTAgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21t dV9tYXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKQEAg LTM1LDEyICszNSwxMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHBmbl90b19wZGVfaWR4KHVuc2ln bmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBpbnQgbGV2ZWwpCiAgICAgcmV0dXJuIGlkeDsKIH0KIAot dm9pZCBjbGVhcl9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIGwxX21mbiwgdW5zaWdu ZWQgbG9uZyBnZm4pCit2b2lkIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcg bDFfbWZuLCB1bnNpZ25lZCBsb25nIGRmbikKIHsKICAgICB1NjQgKnRhYmxlLCAqcHRlOwogCiAg ICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihsMV9tZm4pKTsKLSAgICBwdGUgPSB0YWJs ZSArIHBmbl90b19wZGVfaWR4KGdmbiwgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSk7CisgICAg cHRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChkZm4sIElPTU1VX1BBR0lOR19NT0RFX0xFVkVM XzEpOwogICAgICpwdGUgPSAwOwogICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxlKTsKIH0KQEAg LTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgYm9vbF90IHNldF9pb21tdV9wZGVfcHJlc2VudCh1MzIg KnBkZSwgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwKICAgICByZXR1cm4gbmVlZF9mbHVzaDsKIH0K IAotc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwdF9t Zm4sIHVuc2lnbmVkIGxvbmcgZ2ZuLCAKK3N0YXRpYyBib29sX3Qgc2V0X2lvbW11X3B0ZV9wcmVz ZW50KHVuc2lnbmVkIGxvbmcgcHRfbWZuLCB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4dF9tZm4sIGludCBwZGVf bGV2ZWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGl3LCBi b29sX3QgaXIpCiB7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVf cHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgZ2ZuLAogCiAg ICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKIAotICAgIHBkZSA9ICh1 MzIqKSh0YWJsZSArIHBmbl90b19wZGVfaWR4KGdmbiwgcGRlX2xldmVsKSk7CisgICAgcGRlID0g KHUzMiopKHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZGZuLCBwZGVfbGV2ZWwpKTsKIAogICAgIG5l ZWRfZmx1c2ggPSBzZXRfaW9tbXVfcGRlX3ByZXNlbnQocGRlLCBuZXh0X21mbiwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8w LCBpdywgaXIpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIHNldF9wZGVfY291bnQo dTY0ICpwZGUsIHVuc2lnbmVkIGludCBjb3VudCkKICAqIG90aGVyd2lzZSBpbmNyZWFzZSBwZGUg Y291bnQgaWYgbWZuIGlzIGNvbnRpZ291cyB3aXRoIG1mbiAtIDEKICAqLwogc3RhdGljIGludCBp b21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRf bWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2Zu LCB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGRmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1lcmdlX2xldmVsKQogewogICAgIHVuc2lnbmVk IGludCBwZGVfY291bnQsIG5leHRfbGV2ZWw7CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGlu dCBpb21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg cHRfbWZuLAogCiAgICAgLyogZ2V0IHBkZSBhdCBtZXJnZSBsZXZlbCAqLwogICAgIHRhYmxlID0g bWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7Ci0gICAgcGRlID0gdGFibGUgKyBwZm5fdG9f cGRlX2lkeChnZm4sIG1lcmdlX2xldmVsKTsKKyAgICBwZGUgPSB0YWJsZSArIHBmbl90b19wZGVf aWR4KGRmbiwgbWVyZ2VfbGV2ZWwpOwogCiAgICAgLyogZ2V0IHBhZ2UgdGFibGUgb2YgbmV4dCBs ZXZlbCAqLwogICAgIG50YWJsZV9tYWRkciA9IGFtZF9pb21tdV9nZXRfbmV4dF90YWJsZV9mcm9t X3B0ZSgodTMyKilwZGUpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfdXBk YXRlX3BkZV9jb3VudChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKICAg ICBtYXNrID0gKDFVTEw8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIG5leHRfbGV2ZWwpKSAtIDE7 CiAKICAgICBpZiAoICgoZmlyc3RfbWZuICYgbWFzaykgPT0gMCkgJiYKLSAgICAgICAgICgoKGdm biAmIG1hc2spIHwgZmlyc3RfbWZuKSA9PSBtZm4pICkKKyAgICAgICAgICgoKGRmbiAmIG1hc2sp IHwgZmlyc3RfbWZuKSA9PSBtZm4pICkKICAgICB7CiAgICAgICAgIHBkZV9jb3VudCA9IGdldF9w ZGVfY291bnQoKnBkZSk7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCBvdXQ6CiB9CiAKIHN0YXRpYyBp bnQgaW9tbXVfbWVyZ2VfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9t Zm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNp Z25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZGZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBtZXJnZV9sZXZlbCkKIHsKICAgICB1NjQgKnRhYmxlLCAqcGRlLCAqbnRh YmxlOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfbWVyZ2VfcGFnZXMoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAgICAgQVNTRVJUKCBzcGluX2lz X2xvY2tlZCgmaGQtPmFyY2gubWFwcGluZ19sb2NrKSAmJiBwdF9tZm4gKTsKIAogICAgIHRhYmxl ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7Ci0gICAgcGRlID0gdGFibGUgKyBwZm5f dG9fcGRlX2lkeChnZm4sIG1lcmdlX2xldmVsKTsKKyAgICBwZGUgPSB0YWJsZSArIHBmbl90b19w ZGVfaWR4KGRmbiwgbWVyZ2VfbGV2ZWwpOwogCiAgICAgLyogZ2V0IGZpcnN0IG1mbiAqLwogICAg IG50YWJsZV9tZm4gPSBhbWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJvbV9wdGUoKHUzMiopcGRl KSA+PiBQQUdFX1NISUZUOwpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfbWVy Z2VfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAgKiB7UmUs IHVufW1hcHBpbmcgc3VwZXIgcGFnZSBmcmFtZXMgY2F1c2VzIHJlLWFsbG9jYXRpb24gb2YgaW8K ICAqIHBhZ2UgdGFibGVzLgogICovCi1zdGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwgCitzdGF0aWMgaW50IGlvbW11X3BkZV9m cm9tX2RmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcHRfbWZuW10pCiB7CiAgICAgdTY0ICpw ZGUsICpuZXh0X3RhYmxlX3ZhZGRyOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyBpbnQgaW9t bXVfcGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAg ICAgICBwdF9tZm5bbGV2ZWxdID0gbmV4dF90YWJsZV9tZm47CiAKICAgICAgICAgbmV4dF90YWJs ZV92YWRkciA9IG1hcF9kb21haW5fcGFnZShfbWZuKG5leHRfdGFibGVfbWZuKSk7Ci0gICAgICAg IHBkZSA9IG5leHRfdGFibGVfdmFkZHIgKyBwZm5fdG9fcGRlX2lkeChwZm4sIGxldmVsKTsKKyAg ICAgICAgcGRlID0gbmV4dF90YWJsZV92YWRkciArIHBmbl90b19wZGVfaWR4KGRmbiwgbGV2ZWwp OwogCiAgICAgICAgIC8qIEhlcmUgbWlnaHQgYmUgYSBzdXBlciBwYWdlIGZyYW1lICovCiAgICAg ICAgIG5leHRfdGFibGVfbWZuID0gYW1kX2lvbW11X2dldF9uZXh0X3RhYmxlX2Zyb21fcHRlKCh1 aW50MzJfdCopcGRlKSAKQEAgLTQ3NywxMSArNDc3LDExIEBAIHN0YXRpYyBpbnQgaW9tbXVfcGRl X2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAgICAgICAg ICAgIG5leHRfdGFibGVfbWZuICE9IDAgKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgaTsK LSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCBnZm47CisgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1mbiwgcGZuOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vfc3o7CiAKICAg ICAgICAgICAgIHBhZ2Vfc3ogPSAxIDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogKG5leHRfbGV2 ZWwgLSAxKSk7Ci0gICAgICAgICAgICBnZm4gPSAgcGZuICYgfigoMSA8PCAoUFRFX1BFUl9UQUJM RV9TSElGVCAqIG5leHRfbGV2ZWwpKSAtIDEpOworICAgICAgICAgICAgcGZuID0gIGRmbiAmIH4o KDEgPDwgKFBURV9QRVJfVEFCTEVfU0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxKTsKICAgICAgICAg ICAgIG1mbiA9IG5leHRfdGFibGVfbWZuOwogCiAgICAgICAgICAgICAvKiBhbGxvY2F0ZSBsb3dl ciBsZXZlbCBwYWdlIHRhYmxlICovCkBAIC00OTksMTAgKzQ5OSwxMCBAQCBzdGF0aWMgaW50IGlv bW11X3BkZV9mcm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKIAog ICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBQVEVfUEVSX1RBQkxFX1NJWkU7IGkrKyApCiAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2V0X2lvbW11X3B0ZV9wcmVzZW50KG5leHRf dGFibGVfbWZuLCBnZm4sIG1mbiwgbmV4dF9sZXZlbCwKKyAgICAgICAgICAgICAgICBzZXRfaW9t bXVfcHRlX3ByZXNlbnQobmV4dF90YWJsZV9tZm4sIHBmbiwgbWZuLCBuZXh0X2xldmVsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIUlPTU1VRl93cml0YWJsZSwgISFJ T01NVUZfcmVhZGFibGUpOwogICAgICAgICAgICAgICAgIG1mbiArPSBwYWdlX3N6OwotICAgICAg ICAgICAgICAgIGdmbiArPSBwYWdlX3N6OworICAgICAgICAgICAgICAgIHBmbiArPSBwYWdlX3N6 OwogICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdl cyhkKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKICAgICByZXR1cm4gMDsKIH0KIAot c3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm4pCitzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGRmbikKIHsKICAgICB1MTYgYmRmOwogICAgIHZvaWQgKmRldmljZV9l bnRyeTsKQEAgLTU1NCwxMyArNTU0LDEzIEBAIHN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2Rl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIHVuc2lnbmVkIGxvbmcg b2xkX3Jvb3RfbWZuOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQp OwogCi0gICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKKyAgICBpZiAoIGRmbiA9 PSBkZm5feChJTlZBTElEX0RGTikgKQogICAgICAgICByZXR1cm4gLUVBRERSTk9UQVZBSUw7Ci0g ICAgQVNTRVJUKCEoZ2ZuID4+IERFRkFVTFRfRE9NQUlOX0FERFJFU1NfV0lEVEgpKTsKKyAgICBB U1NFUlQoIShkZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwogCiAgICAgbGV2 ZWwgPSBoZC0+YXJjaC5wYWdpbmdfbW9kZTsKICAgICBvbGRfcm9vdCA9IGhkLT5hcmNoLnJvb3Rf dGFibGU7Ci0gICAgb2Zmc2V0ID0gZ2ZuID4+IChQVEVfUEVSX1RBQkxFX1NISUZUICogKGxldmVs IC0gMSkpOworICAgIG9mZnNldCA9IGRmbiA+PiAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIChsZXZl bCAtIDEpKTsKIAogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmaGQtPmFyY2gubWFwcGluZ19s b2NrKSAmJiBpc19odm1fZG9tYWluKGQpKTsKIApAQCAtNjMxLDcgKzYzMSw3IEBAIHN0YXRpYyBp bnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2Zu KQogICAgIHJldHVybiAwOwogfQogCi1pbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKK2ludCBhbWRfaW9t bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sIHVuc2lnbmVk IGxvbmcgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 CiAgICAgYm9vbF90IG5lZWRfZmx1c2ggPSAwOwpAQCAtNjUxLDM0ICs2NTEsMzQgQEAgaW50IGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgbG9uZyBtZm4sCiAgICAgaWYgKCByYyApCiAgICAgewogICAgICAgICBzcGluX3VubG9j aygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJSb290 IHRhYmxlIGFsbG9jIGZhaWxlZCwgZ2ZuID0gJWx4XG4iLCBnZm4pOworICAgICAgICBBTURfSU9N TVVfREVCVUcoIlJvb3QgdGFibGUgYWxsb2MgZmFpbGVkLCBkZm4gPSAlbHhcbiIsIGRmbik7CiAg ICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAg IC8qIFNpbmNlIEhWTSBkb21haW4gaXMgaW5pdGlhbGl6ZWQgd2l0aCAyIGxldmVsIElPIHBhZ2Ug dGFibGUsCi0gICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdl ciBnZm4gbm93ICovCisgICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZv ciB3aWRlciBkZm4gbm93ICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKICAgICB7Ci0g ICAgICAgIGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGdmbikgKQorICAgICAgICBpZiAoIHVw ZGF0ZV9wYWdpbmdfbW9kZShkLCBkZm4pICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91 bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgICAgICBBTURfSU9NTVVfREVC VUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAg ICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZGZuID0gJWx4XG4i LCBkZm4pOwogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2dm bihkLCBnZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCisgICAgaWYgKCBpb21tdV9w ZGVfZnJvbV9kZm4oZCwgZGZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQogICAgIHsK ICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFN RF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgZ2ZuID0gJWx4XG4iLCBn Zm4pOworICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5 IGRmbiA9ICVseFxuIiwgZGZuKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICBy ZXR1cm4gLUVGQVVMVDsKICAgICB9CiAKICAgICAvKiBJbnN0YWxsIDRrIG1hcHBpbmcgZmlyc3Qg Ki8KLSAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZ2Zu LCBtZm4sIAorICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFd LCBkZm4sIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V X1BBR0lOR19NT0RFX0xFVkVMXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIShmbGFncyAmIElPTU1VRl93cml0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl9yZWFkYWJsZSkpOwpAQCAtNjkwLDcg KzY5MCw3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIC8qIDRLIG1hcHBpbmcgZm9yIFBW IGd1ZXN0cyBuZXZlciBjaGFuZ2VzLCAKICAgICAgKiBubyBuZWVkIHRvIGZsdXNoIGlmIHdlIHRy dXN0IG5vbi1wcmVzZW50IGJpdHMgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgKQotICAg ICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZ2ZuLCAwKTsKKyAgICAgICAgYW1kX2lvbW11 X2ZsdXNoX3BhZ2VzKGQsIGRmbiwgMCk7CiAKICAgICBmb3IgKCBtZXJnZV9sZXZlbCA9IElPTU1V X1BBR0lOR19NT0RFX0xFVkVMXzI7CiAgICAgICAgICAgbWVyZ2VfbGV2ZWwgPD0gaGQtPmFyY2gu cGFnaW5nX21vZGU7IG1lcmdlX2xldmVsKysgKQpAQCAtNjk4LDE1ICs2OTgsMTUgQEAgaW50IGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgbG9uZyBtZm4sCiAgICAgICAgIGlmICggcHRfbWZuW21lcmdlX2xldmVsXSA9PSAwICkK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoICFpb21tdV91cGRhdGVfcGRlX2NvdW50 KGQsIHB0X21mblttZXJnZV9sZXZlbF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ZuLCBtZm4sIG1lcmdlX2xldmVsKSApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGZuLCBtZm4sIG1lcmdlX2xldmVsKSApCiAgICAgICAgICAgICBicmVhazsK IAotICAgICAgICBpZiAoIGlvbW11X21lcmdlX3BhZ2VzKGQsIHB0X21mblttZXJnZV9sZXZlbF0s IGdmbiwgCisgICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRfbWZuW21lcmdlX2xl dmVsXSwgZGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBtZXJnZV9s ZXZlbCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFw cGluZ19sb2NrKTsKICAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiTWVyZ2UgaW9tbXUgcGFn ZSBmYWlsZWQgYXQgbGV2ZWwgJWQsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2Zu ID0gJWx4IG1mbiA9ICVseFxuIiwgbWVyZ2VfbGV2ZWwsIGdmbiwgbWZuKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZGZuID0gJWx4IG1mbiA9ICVseFxuIiwgbWVyZ2VfbGV2ZWwsIGRm biwgbWZuKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVy biAtRUZBVUxUOwogICAgICAgICB9CkBAIC03MjAsNyArNzIwLDcgQEAgb3V0OgogICAgIHJldHVy biAwOwogfQogCi1pbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4pCitpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBkZm4pCiB7CiAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bN107CiAg ICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CkBAIC03MzksMzQgKzcz OSwzNCBAQCBpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4pCiAgICAgfQogCiAgICAgLyogU2luY2UgSFZNIGRvbWFpbiBpcyBpbml0aWFs aXplZCB3aXRoIDIgbGV2ZWwgSU8gcGFnZSB0YWJsZSwKLSAgICAgKiB3ZSBtaWdodCBuZWVkIGEg ZGVlcGVyIHBhZ2UgdGFibGUgZm9yIGxhZ2VyIGdmbiBub3cgKi8KKyAgICAgKiB3ZSBtaWdodCBu ZWVkIGEgZGVlcGVyIHBhZ2UgdGFibGUgZm9yIGxhZ2VyIGRmbiBub3cgKi8KICAgICBpZiAoIGlz X2h2bV9kb21haW4oZCkgKQogICAgIHsKLSAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19t b2RlKGQsIGdmbik7CisgICAgICAgIGludCByYyA9IHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBkZm4p OwogCiAgICAgICAgIGlmICggcmMgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9j aygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygi VXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZ2ZuID0gJWx4XG4iLCBnZm4pOworICAgICAgICAgICAg QU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBkZm4gPSAlbHhcbiIsIGRm bik7CiAgICAgICAgICAgICBpZiAoIHJjICE9IC1FQUREUk5PVEFWQUlMICkKICAgICAgICAgICAg ICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgIH0K ICAgICB9CiAKLSAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2dmbihkLCBnZm4sIHB0X21mbikgfHwg KHB0X21mblsxXSA9PSAwKSApCisgICAgaWYgKCBpb21tdV9wZGVfZnJvbV9kZm4oZCwgZGZuLCBw dF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxp ZCBJTyBwYWdldGFibGUgZW50cnkgZ2ZuID0gJWx4XG4iLCBnZm4pOworICAgICAgICBBTURfSU9N TVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGRmbiA9ICVseFxuIiwgZGZuKTsK ICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICB9 CiAKICAgICAvKiBtYXJrIFBURSBhcyAncGFnZSBub3QgcHJlc2VudCcgKi8KLSAgICBjbGVhcl9p b21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGdmbik7CisgICAgY2xlYXJfaW9tbXVfcHRlX3By ZXNlbnQocHRfbWZuWzFdLCBkZm4pOwogICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5n X2xvY2spOwogCi0gICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGdmbiwgMCk7CisgICAgYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGRmbiwgMCk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4IDMzMGY5Y2UzODYu LmJjYzQ3ZWI5NmMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lf YW1kX2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9t bXUuYwpAQCAtNTg1LDcgKzU4NSw3IEBAIHN0YXRpYyB2b2lkIGFtZF9kdW1wX3AybV90YWJsZV9s ZXZlbChzdHJ1Y3QgcGFnZV9pbmZvKiBwZywgaW50IGxldmVsLAogICAgICAgICAgICAgICAgIG1h ZGRyX3RvX3BhZ2UobmV4dF90YWJsZV9tYWRkciksIG5leHRfbGV2ZWwsCiAgICAgICAgICAgICAg ICAgYWRkcmVzcywgaW5kZW50ICsgMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50 aygiJSpzZ2ZuOiAlMDhseCAgbWZuOiAlMDhseFxuIiwKKyAgICAgICAgICAgIHByaW50aygiJSpz ZGZuOiAlMDhseCAgbWZuOiAlMDhseFxuIiwKICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIi LAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKVBGTl9ET1dOKGFkZHJlc3MpLAog ICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKVBGTl9ET1dOKG5leHRfdGFibGVfbWFk ZHIpKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IDQzZWNlNDJhNTAuLjFmZjA5 YmJiMDIgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKKysr IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAtMjU1MSw3ICsyNTUxLDcg QEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVj dCBkb21haW4gKmQpCiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxi X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7 CiAJLyogQVJNIFNNTVUgdjEgZG9lc24ndCBoYXZlIGZsdXNoIGJ5IFZNQSBhbmQgVk1JRCAqLwpA QCAtMjc0Niw3ICsyNzQ2LDcgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfaW9tbXVfZG9tYWluX3Rl YXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiAJeGZyZWUoeGVuX2RvbWFpbik7CiB9CiAKLXN0YXRp YyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgZ2ZuLAorc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sCiAJCQl1bnNpZ25lZCBsb25n IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXAybV90eXBlX3QgdDsKQEAgLTI3NTcsMTAg KzI3NTcsMTAgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAJICogcHJvdGVjdGVkIGJ5IGFuIElP TU1VLCBYZW4gbmVlZHMgdG8gYWRkIGEgMToxIG1hcHBpbmcgaW4gdGhlIGRvbWFpbgogCSAqIHAy bSB0byBhbGxvdyBETUEgcmVxdWVzdCB0byB3b3JrLgogCSAqIFRoaXMgaXMgb25seSB2YWxpZCB3 aGVuIHRoZSBkb21haW4gaXMgZGlyZWN0ZWQgbWFwcGVkLiBIZW5jZSB0aGlzCi0JICogZnVuY3Rp b24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aXRoIGdmbiA9PSBtZm4uCisJ ICogZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aXRoIGdmbiA9 PSBtZm4gPT0gZGZuLgogCSAqLwogCUJVR19PTighaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkp OwotCUJVR19PTihtZm4gIT0gZ2ZuKTsKKwlCVUdfT04obWZuICE9IGRmbik7CiAKIAkvKiBXZSBv bmx5IHN1cHBvcnQgcmVhZGFibGUgYW5kIHdyaXRhYmxlIGZsYWdzICovCiAJaWYgKCEoZmxhZ3Mg JiAoSU9NTVVGX3JlYWRhYmxlIHwgSU9NTVVGX3dyaXRhYmxlKSkpCkBAIC0yNzcyLDE5ICsyNzcy LDE5IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogCSAqIFRoZSBmdW5jdGlvbiBndWVzdF9waHlz bWFwX2FkZF9lbnRyeSByZXBsYWNlcyB0aGUgY3VycmVudCBtYXBwaW5nCiAJICogaWYgdGhlcmUg aXMgYWxyZWFkeSBvbmUuLi4KIAkgKi8KLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnko ZCwgX2dmbihnZm4pLCBfbWZuKG1mbiksIDAsIHQpOworCXJldHVybiBndWVzdF9waHlzbWFwX2Fk ZF9lbnRyeShkLCBfZ2ZuKGRmbiksIF9tZm4oZGZuKSwgMCwgdCk7CiB9CiAKLXN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4pCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKQogewogCS8qCiAJICogVGhpcyBm dW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdoZW4gdGhlIGRvbWFp bgotCSAqIGlzIGRpcmVjdCBtYXBwZWQKKwkgKiBpcyBkaXJlY3QgbWFwcGVkIChpLmUuIGdmbiA9 PSBtZm4gPT0gZGZuKS4KIAkgKi8KIAlpZiAoICFpc19kb21haW5fZGlyZWN0X21hcHBlZChkKSAp CiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2Uo ZCwgX2dmbihnZm4pLCBfbWZuKGdmbiksIDApOworCXJldHVybiBndWVzdF9waHlzbWFwX3JlbW92 ZV9wYWdlKGQsIF9nZm4oZGZuKSwgX21mbihkZm4pLCAwKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBpb21tdV9vcHMgYXJtX3NtbXVfaW9tbXVfb3BzID0gewpkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11 LmMKaW5kZXggZWUzZjUyM2ZkZi4uY2E4MjYyYmU3YyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5j CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChz dHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBwYWdlX2xpc3RfZm9yX2VhY2ggKCBwYWdlLCAmZC0+ cGFnZV9saXN0ICkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBt Zm5feChwYWdlX3RvX21mbihwYWdlKSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9 IG1mbl90b19nbWZuKGQsIG1mbik7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRmbiA9IG1m bl90b19nbWZuKGQsIG1mbik7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFwcGluZyA9IElP TU1VRl9yZWFkYWJsZTsKICAgICAgICAgICAgIGludCByZXQ7CiAKQEAgLTIyNCw3ICsyMjQsNyBA QCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAg ICAgICAgICAgICAgICAgICA9PSBQR1Rfd3JpdGFibGVfcGFnZSkgKQogICAgICAgICAgICAgICAg IG1hcHBpbmcgfD0gSU9NTVVGX3dyaXRhYmxlOwogCi0gICAgICAgICAgICByZXQgPSBoZC0+cGxh dGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1mbiwgbWFwcGluZyk7CisgICAgICAgICAgICBy ZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBkZm4sIG1mbiwgbWFwcGluZyk7CiAg ICAgICAgICAgICBpZiAoICFyYyApCiAgICAgICAgICAgICAgICAgcmMgPSByZXQ7CiAKQEAgLTI5 NSw3ICsyOTUsNyBAQCB2b2lkIGlvbW11X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQp CiAgICAgYXJjaF9pb21tdV9kb21haW5fZGVzdHJveShkKTsKIH0KIAotaW50IGlvbW11X21hcF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1m biwKK2ludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRm biwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZs YWdzKQogewogICAgIGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQp OwpAQCAtMzA0LDEzICszMDQsMTMgQEAgaW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBpZiAoICFpb21t dV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg ICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBmbGFncyk7Cisg ICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBkZm4sIG1mbiwgZmxhZ3MpOwog ICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlmICggIWQtPmlzX3NodXR0 aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKICAgICAgICAgICAgIHByaW50ayhYRU5M T0dfRVJSCi0gICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgbWFwcGluZyBnZm4gJSNseCB0 byBtZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9p ZCwgZ2ZuLCBtZm4sIHJjKTsKKyAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBtYXBwaW5n IGRmbiAlI2x4IHRvIG1mbiAlI2x4IGZhaWxlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAg ZC0+ZG9tYWluX2lkLCBkZm4sIG1mbiwgcmMpOwogCiAgICAgICAgIGlmICggIWlzX2hhcmR3YXJl X2RvbWFpbihkKSApCiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CkBAIC0zMTksNyArMzE5 LDcgQEAgaW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBpb21tdV91 bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQoraW50IGlvbW11 X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pCiB7CiAgICAg Y29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CiAgICAgaW50IHJj OwpAQCAtMzI3LDEzICszMjcsMTMgQEAgaW50IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQt PnBsYXRmb3JtX29wcyApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZv cm1fb3BzLT51bm1hcF9wYWdlKGQsIGdmbik7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT51 bm1hcF9wYWdlKGQsIGRmbik7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAg ICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQogICAg ICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKLSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01N VSB1bm1hcHBpbmcgZ2ZuICUjbHggZmFpbGVkOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICBk LT5kb21haW5faWQsIGdmbiwgcmMpOworICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIHVu bWFwcGluZyBkZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRv bWFpbl9pZCwgZGZuLCByYyk7CiAKICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQp ICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0 aWMgdm9pZCBpb21tdV9mcmVlX3BhZ2V0YWJsZXModW5zaWduZWQgbG9uZyB1bnVzZWQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19jeWNsZShzbXBfcHJvY2Vzc29yX2lkKCks ICZjcHVfb25saW5lX21hcCkpOwogfQogCi1pbnQgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHBhZ2VfY291bnQpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAq aGQgPSBkb21faW9tbXUoZCk7CkBAIC0zNjgsMTMgKzM2OCwxMyBAQCBpbnQgaW9tbXVfaW90bGJf Zmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgaWYgKCAhaW9t bXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyB8fCAhaGQtPnBsYXRmb3JtX29wcy0+aW90 bGJfZmx1c2ggKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29w cy0+aW90bGJfZmx1c2goZCwgZ2ZuLCBwYWdlX2NvdW50KTsKKyAgICByYyA9IGhkLT5wbGF0Zm9y bV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGRmbiwgcGFnZV9jb3VudCk7CiAgICAgaWYgKCB1bmxpa2Vs eShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmlu dGtfcmF0ZWxpbWl0KCkgKQogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKLSAgICAgICAg ICAgICAgICAgICAiZCVkOiBJT01NVSBJT1RMQiBmbHVzaCBmYWlsZWQ6ICVkLCBnZm4gJSNseCwg cGFnZSBjb3VudCAldVxuIiwKLSAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjLCBn Zm4sIHBhZ2VfY291bnQpOworICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIElPVExCIGZs dXNoIGZhaWxlZDogJWQsIGRmbiAlI2x4LCBwYWdlIGNvdW50ICV1XG4iLAorICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgcmMsIGRmbiwgcGFnZV9jb3VudCk7CiAKICAgICAgICAgaWYg KCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsK ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggYWRjNzBmMjA1YS4uODg3MjBkNDQw NiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU4NSw3ICs1ODUsNyBAQCBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkKIH0KIAogc3RhdGlj IGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2Zu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3Qg ZG1hX29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewpAQCAtNjEyLDEyICs2MTIsMTIgQEAg c3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAq ZCwKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250aW51 ZTsKIAotICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKKyAgICAgICAgaWYgKCBwYWdlX2NvdW50ICE9IDEgfHwgZGZuID09IGRmbl94KElO VkFMSURfREZOKSApCiAgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21t dSwgaW9tbXVfZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LCBmbHVzaF9kZXZfaW90bGIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByYyA9IGlvbW11 X2ZsdXNoX2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGZuX3RvX2RhZGRyKGRmbiksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRtYV9vbGRfcHRlX3ByZXNlbnQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9kZXZfaW90bGIp OwpAQCAtNjMzLDE1ICs2MzMsMTUgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1 c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sg aW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKLSAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIo ZCwgZ2ZuLCAxLCBwYWdlX2NvdW50KTsKKyAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwg ZGZuLCAxLCBwYWdlX2NvdW50KTsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVf Zmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgcmV0dXJuIGlvbW11X2Zs dXNoX2lvdGxiKGQsIGdmbl94KElOVkFMSURfR0ZOKSwgMCwgMCk7CisgICAgcmV0dXJuIGlvbW11 X2ZsdXNoX2lvdGxiKGQsIGRmbl94KElOVkFMSURfREZOKSwgMCwgMCk7CiB9CiAKIC8qIGNsZWFy IG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAqLwpAQCAtMTc2OCw3ICsxNzY4LDcgQEAgc3RhdGljIHZv aWQgaW9tbXVfZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHN0YXRpYyBp bnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CkBAIC0xNzg3LDE0ICsxNzg3LDE0IEBA IHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsCiAKICAgICBzcGluX2xvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAgICBw Z19tYWRkciA9IGFkZHJfdG9fZG1hX3BhZ2VfbWFkZHIoZCwgKHBhZGRyX3QpZ2ZuIDw8IFBBR0Vf U0hJRlRfNEssIDEpOworICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCBf X2Rmbl90b19kYWRkcihkZm4pLCAxKTsKICAgICBpZiAoIHBnX21hZGRyID09IDAgKQogICAgIHsK ICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgIHJl dHVybiAtRU5PTUVNOwogICAgIH0KICAgICBwYWdlID0gKHN0cnVjdCBkbWFfcHRlICopbWFwX3Z0 ZF9kb21haW5fcGFnZShwZ19tYWRkcik7Ci0gICAgcHRlID0gcGFnZSArIChnZm4gJiBMRVZFTF9N QVNLKTsKKyAgICBwdGUgPSBwYWdlICsgKGRmbiAmIExFVkVMX01BU0spOwogICAgIG9sZCA9ICpw dGU7CiAgICAgZG1hX3NldF9wdGVfYWRkcihuZXcsIChwYWRkcl90KW1mbiA8PCBQQUdFX1NISUZU XzRLKTsKICAgICBkbWFfc2V0X3B0ZV9wcm90KG5ldywKQEAgLTE4MTgsMjIgKzE4MTgsMjIgQEAg c3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwKICAgICB1bm1hcF92dGRfZG9tYWluX3BhZ2UocGFnZSk7CiAKICAgICBpZiAoICF0aGlz X2NwdShpb21tdV9kb250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIHJjID0gaW9tbXVfZmx1c2hf aW90bGIoZCwgZ2ZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CisgICAgICAgIHJjID0gaW9t bXVfZmx1c2hfaW90bGIoZCwgZGZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CiAKICAgICBy ZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuKQogewogICAgIC8qIERv IG5vdGhpbmcgaWYgaGFyZHdhcmUgZG9tYWluIGFuZCBpb21tdSBzdXBwb3J0cyBwYXNzIHRocnUu ICovCiAgICAgaWYgKCBpb21tdV9od2RvbV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21h aW4oZCkgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29u ZShkLCAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80Syk7CisgICAgcmV0dXJuIGRtYV9wdGVf Y2xlYXJfb25lKGQsIF9fZGZuX3RvX2RhZGRyKGRmbikpOwogfQogCi1pbnQgaW9tbXVfcHRlX2Zs dXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAoraW50IGlvbW11X3B0ZV9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBkZm4sIHVpbnQ2NF90ICpwdGUsCiAgICAg ICAgICAgICAgICAgICAgIGludCBvcmRlciwgaW50IHByZXNlbnQpCiB7CiAgICAgc3RydWN0IGFj cGlfZHJoZF91bml0ICpkcmhkOwpAQCAtMTg1Nyw3ICsxODU3LDcgQEAgaW50IGlvbW11X3B0ZV9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICAgICAgICAgIGNv bnRpbnVlOwogCiAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21t dV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2Zu IDw8IFBBR0VfU0hJRlRfNEssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f ZGZuX3RvX2RhZGRyKGRmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9y ZGVyLCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAgaWYgKCByYyA+IDAgKQog ICAgICAgICB7CkBAIC0yNjI3LDcgKzI2MjcsNyBAQCBzdGF0aWMgdm9pZCB2dGRfZHVtcF9wMm1f dGFibGVfbGV2ZWwocGFkZHJfdCBwdF9tYWRkciwgaW50IGxldmVsLCBwYWRkcl90IGdwYSwKICAg ICAgICAgICAgIHZ0ZF9kdW1wX3AybV90YWJsZV9sZXZlbChkbWFfcHRlX2FkZHIoKnB0ZSksIG5l eHRfbGV2ZWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Ms IGluZGVudCArIDEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGsoIiUqc2dmbjog JTA4bHggbWZuOiAlMDhseFxuIiwKKyAgICAgICAgICAgIHByaW50aygiJSpzZGZuOiAlMDhseCBt Zm46ICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiIsCiAgICAgICAgICAg ICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MgPj4gUEFHRV9TSElGVF80SyksCiAgICAg ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGRtYV9wdGVfYWRkcigqcHRlKSA+PiBQQUdF X1NISUZUXzRLKSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmgKaW5kZXggMTRhZDA0ODlhNi4uMGVkNGE5ZTg2ZCAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaW9tbXUuaApAQCAtMzAsNiArMzAsMTggQEAgc3RydWN0IGcybV9pb3BvcnQgewog ICAgIHVuc2lnbmVkIGludCBucDsKIH07CiAKKyNkZWZpbmUgSU9NTVVfUEFHRV9TSElGVCAxMgor I2RlZmluZSBJT01NVV9QQUdFX1NJWkUgICgxIDw8IElPTU1VX1BBR0VfU0hJRlQpCisjZGVmaW5l IElPTU1VX1BBR0VfTUFTSyAgKH4oSU9NTVVfUEFHRV9TSVpFIC0gMSkpCisKK3R5cGVkZWYgdWlu dDY0X3QgZGFkZHJfdDsKKworI2RlZmluZSBfX2Rmbl90b19kYWRkcihkZm4pICgoZGFkZHJfdCko ZGZuKSA8PCBJT01NVV9QQUdFX1NISUZUKQorI2RlZmluZSBfX2RhZGRyX3RvX2RmbihkYWRkcikg KChkYWRkcikgPj4gSU9NTVVfUEFHRV9TSElGVCkKKworI2RlZmluZSBkZm5fdG9fZGFkZHIoZGZu KSBfX2Rmbl90b19kYWRkcihkZm5feChkZm4pKQorI2RlZmluZSBkYWRkcl90b19kZm4oZGFkZHIp IF9kZm4oX19kYWRkcl90b19kZm4oZGFkZHIpKQorCiBzdHJ1Y3QgYXJjaF9pb21tdQogewogICAg IHU2NCBwZ2RfbWFkZHI7ICAgICAgICAgICAgICAgICAvKiBpbyBwYWdlIGRpcmVjdG9yeSBtYWNo aW5lIGFkZHJlc3MgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIveGVu L2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggNTdjNGU4MWVjNi4uMjkwZTBhYWRhNiAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lvbW11 LmgKQEAgLTIzLDExICsyMywyNSBAQAogI2luY2x1ZGUgPHhlbi9wYWdlLWRlZnMuaD4KICNpbmNs dWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vcGNpLmg+CisjaW5jbHVkZSA8eGVu L3R5cGVzYWZlLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgogI2luY2x1ZGUgPHB1 YmxpYy9kb21jdGwuaD4KICNpbmNsdWRlIDxhc20vZGV2aWNlLmg+CiAjaW5jbHVkZSA8YXNtL2lv bW11Lmg+CiAKK1RZUEVfU0FGRSh1aW50NjRfdCwgZGZuKTsKKyNkZWZpbmUgUFJJX2RmbiAgICAg UFJJeDY0CisjZGVmaW5lIElOVkFMSURfREZOIF9kZm4ofjBVTEwpCisKKyNpZm5kZWYgZGZuX3QK KyNkZWZpbmUgZGZuX3QgLyogR3JlcCBmb2RkZXI6IGRmbl90LCBfZGZuKCkgYW5kIGRmbl94KCkg YXJlIGRlZmluZWQgYWJvdmUgKi8KKyNkZWZpbmUgX2RmbgorI2RlZmluZSBkZm5feAorI3VuZGVm IGRmbl90CisjdW5kZWYgX2RmbgorI3VuZGVmIGRmbl94CisjZW5kaWYKKwogZXh0ZXJuIGJvb2xf dCBpb21tdV9lbmFibGUsIGlvbW11X2VuYWJsZWQ7CiBleHRlcm4gYm9vbF90IGZvcmNlX2lvbW11 LCBpb21tdV92ZXJib3NlOwogZXh0ZXJuIGJvb2xfdCBpb21tdV93b3JrYXJvdW5kX2Jpb3NfYnVn LCBpb21tdV9pZ2Z4OwpAQCAtNjQsOSArNzgsOSBAQCB2b2lkIGlvbW11X3RlYXJkb3duKHN0cnVj dCBkb21haW4gKmQpOwogI2RlZmluZSBJT01NVUZfcmVhZGFibGUgICgxdTw8X0lPTU1VRl9yZWFk YWJsZSkKICNkZWZpbmUgX0lPTU1VRl93cml0YWJsZSAxCiAjZGVmaW5lIElPTU1VRl93cml0YWJs ZSAgKDF1PDxfSU9NTVVGX3dyaXRhYmxlKQotaW50IF9fbXVzdF9jaGVjayBpb21tdV9tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBfX211c3RfY2hlY2sg aW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBp bnQgZmxhZ3MpOwotaW50IF9fbXVzdF9jaGVjayBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKTsKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbik7CiAKIGVudW0gaW9tbXVf ZmVhdHVyZQogewpAQCAtMTU0LDkgKzE2OCw5IEBAIHN0cnVjdCBpb21tdV9vcHMgewogI2VuZGlm IC8qIEhBU19QQ0kgKi8KIAogICAgIHZvaWQgKCp0ZWFyZG93bikoc3RydWN0IGRvbWFpbiAqZCk7 Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbiwKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqbWFwX3BhZ2UpKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFncyk7Ci0gICAgaW50IF9f bXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuKTsKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBkZm4pOwogICAgIHZvaWQgKCpmcmVlX3BhZ2VfdGFibGUpKHN0cnVj dCBwYWdlX2luZm8gKik7CiAjaWZkZWYgQ09ORklHX1g4NgogICAgIHZvaWQgKCp1cGRhdGVfaXJl X2Zyb21fYXBpYykodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVk IGludCB2YWx1ZSk7CkBAIC0xNjcsNyArMTgxLDcgQEAgc3RydWN0IGlvbW11X29wcyB7CiAgICAg dm9pZCAoKnJlc3VtZSkodm9pZCk7CiAgICAgdm9pZCAoKnNoYXJlX3AybSkoc3RydWN0IGRvbWFp biAqZCk7CiAgICAgdm9pZCAoKmNyYXNoX3NodXRkb3duKSh2b2lkKTsKLSAgICBpbnQgX19tdXN0 X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2Zu LAorICAgIGludCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9jb3VudCk7CiAgICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2Zs dXNoX2FsbCkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgaW50ICgqZ2V0X3Jlc2VydmVkX2Rldmlj ZV9tZW1vcnkpKGlvbW11X2dyZG1fdCAqLCB2b2lkICopOwpAQCAtMTg5LDcgKzIwMyw3IEBAIGlu dCBpb21tdV9kb19wY2lfZG9tY3RsKHN0cnVjdCB4ZW5fZG9tY3RsICosIHN0cnVjdCBkb21haW4g KmQsCiBpbnQgaW9tbXVfZG9fZG9tY3RsKHN0cnVjdCB4ZW5fZG9tY3RsICosIHN0cnVjdCBkb21h aW4gKmQsCiAgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2Rv bWN0bF90KSk7CiAKLWludCBfX211c3RfY2hlY2sgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxi X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCk7CiBpbnQgX19t dXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKTsKIApkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL21tLmggYi94ZW4vaW5jbHVkZS94ZW4vbW0uaAppbmRl eCBiM2Q0NmFiNTZiLi43MjBhYTQ5YjA1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbW0u aAorKysgYi94ZW4vaW5jbHVkZS94ZW4vbW0uaApAQCAtMjYsNiArMjYsMTEgQEAKICAqICAgQSBs aW5lYXIgaWRlYSBvZiBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuIEZvciBhbiBhdXRv LXRyYW5zbGF0ZWQKICAqICAgZ3Vlc3QsIHBmbiA9PSBnZm4gd2hpbGUgZm9yIGEgbm9uLXRyYW5z bGF0ZWQgZ3Vlc3QsIHBmbiAhPSBnZm4uCiAgKgorICogZGZuOiBEZXZpY2UgRE1BIEZyYW1lIE51 bWJlciAoZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS94ZW4vaW9tbXUuaCkKKyAqICAgVGhlIGxpbmVh ciBmcmFtZSBudW1iZXJzIG9mIGRldmljZSBETUEgYWRkcmVzcyBzcGFjZS4gQWxsIGluaXRpYXRv cnMgZm9yCisgKiAgIChpLmUuIGFsbCBkZXZpY2VzIGFzc2lnbmVkIHRvKSBhIGd1ZXN0IHNoYXJl IGEgc2luZ2xlIERNQSBhZGRyZXNzIHNwYWNlCisgKiAgIGFuZCwgYnkgZGVmYXVsdCwgWGVuIHdp bGwgZW5zdXJlIGRmbiA9PSBwZm4uCisgKgogICogV0FSTklORzogU29tZSBvZiB0aGVzZSB0ZXJt cyBoYXZlIGNoYW5nZWQgb3ZlciB0aW1lIHdoaWxlIG90aGVycyBoYXZlIGJlZW4KICAqIHVzZWQg aW5jb25zaXN0ZW50bHksIG1lYW5pbmcgdGhhdCBhIGxvdCBvZiBleGlzdGluZyBjb2RlIGRvZXMg bm90IG1hdGNoIHRoZQogICogZGVmaW5pdGlvbnMgYWJvdmUuICBOZXcgY29kZSBzaG91bGQgdXNl IHRoZXNlIHRlcm1zIGFzIGRlc2NyaWJlZCBoZXJlLCBhbmQKLS0gCjIuMTEuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=