From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 38/39] drm/i915/execlists: Preempt-to-busy Date: Wed, 13 Mar 2019 14:44:00 +0000 Message-ID: <20190313144401.17735-38-chris@chris-wilson.co.uk> References: <20190313144401.17735-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBC286E08F for ; Wed, 13 Mar 2019 14:45:03 +0000 (UTC) In-Reply-To: <20190313144401.17735-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org V2hlbiB1c2luZyBhIGdsb2JhbCBzZXFubywgd2UgcmVxdWlyZWQgYSBwcmVjaXNlIHN0b3AtdGhl LXdvcmtkIGV2ZW50IHRvCmhhbmRsZSBwcmVlbXB0aW9uIGFuZCB1bndpbmQgdGhlIGdsb2JhbCBz ZXFubyBjb3VudGVyLiBUbyBhY2NvbXBsaXNoCnRoaXMsIHdlIHdvdWxkIHByZWVtcHQgdG8gYSBz cGVjaWFsIG91dC1vZi1iYW5kIGNvbnRleHQgYW5kIHdhaXQgZm9yIHRoZQptYWNoaW5lIHRvIHJl cG9ydCB0aGF0IGl0IHdhcyBpZGxlLiBHaXZlbiBhbiBpZGxlIG1hY2hpbmUsIHdlIGNvdWxkIHZl cnkKcHJlY2lzZWx5IHNlZSB3aGljaCByZXF1ZXN0cyBoYWQgY29tcGxldGVkIGFuZCB3aGljaCB3 ZSBuZWVkZWQgdG8gZmVlZApiYWNrIGludG8gdGhlIHJ1biBxdWV1ZS4KCkhvd2V2ZXIsIG5vdyB0 aGF0IHdlIGhhdmUgc2NyYXBwZWQgdGhlIGdsb2JhbCBzZXFubywgd2Ugbm8gbG9uZ2VyIG5lZWQK dG8gcHJlY2lzZWx5IHVud2luZCB0aGUgZ2xvYmFsIGNvdW50ZXIgYW5kIG9ubHkgdHJhY2sgcmVx dWVzdHMgYnkgdGhlaXIKcGVyLWNvbnRleHQgc2Vxbm8uIFRoaXMgYWxsb3dzIHVzIHRvIGxvb3Nl bHkgdW53aW5kIGluZmxpZ2h0IHJlcXVlc3RzCndoaWxlIHNjaGVkdWxpbmcgYSBwcmVlbXB0aW9u LCB3aXRoIHRoZSBlbm9ybW91cyBjYXZlYXQgdGhhdCB0aGUKcmVxdWVzdHMgd2UgcHV0IGJhY2sg b24gdGhlIHJ1biBxdWV1ZSBhcmUgc3RpbGwgX2luZmxpZ2h0XyAodW50aWwgdGhlCnByZWVtcHRp b24gcmVxdWVzdCBpcyBjb21wbGV0ZSkuIFRoaXMgbWFrZXMgcmVxdWVzdCB0cmFja2luZyBtdWNo IG1vcmUKbWVzc3ksIGFzIGF0IGFueSBwb2ludCB0aGVuIHdlIGNhbiBzZWUgYSBjb21wbGV0ZWQg cmVxdWVzdCB0aGF0IHdlCmJlbGlldmUgaXMgbm90IGN1cnJlbnRseSBzY2hlZHVsZWQgZm9yIGV4 ZWN1dGlvbi4gV2UgYWxzbyBoYXZlIHRvIGJlCmNhcmVmdWwgbm90IHRvIHJld2luZCBSSU5HX1RB SUwgcGFzdCBSSU5HX0hFQUQgb24gcHJlZW1wdGluZyB0byB0aGUKcnVubmluZyBjb250ZXh0LCBh bmQgZm9yIHRoaXMgd2UgdXNlIGEgc2VtYXBob3JlIHRvIHByZXZlbnQgY29tcGxldGlvbgpvZiB0 aGUgcmVxdWVzdCBiZWZvcmUgY29udGludWluZy4KClRvIGFjY29tcGxpc2ggdGhpcyBmZWF0LCB3 ZSBjaGFuZ2UgaG93IHdlIHRyYWNrIHJlcXVlc3RzIHNjaGVkdWxlZCB0bwp0aGUgSFcuIEluc3Rl YWQgb2YgYXBwZW5kaW5nIG91ciByZXF1ZXN0cyBvbnRvIGEgc2luZ2xlIGxpc3QgYXMgd2UKc3Vi bWl0LCB3ZSB0cmFjayBlYWNoIHN1Ym1pc3Npb24gdG8gRUxTUCBhcyBpdHMgb3duIGJsb2NrLiBU aGVuIHVwb24KcmVjZWl2aW5nIHRoZSBDUyBwcmVlbXB0aW9uIGV2ZW50LCB3ZSBwcm9tb3RlIHRo ZSBwZW5kaW5nIGJsb2NrIHRvIHRoZQppbmZsaWdodCBibG9jayAoZGlzY2FyZGluZyB3aGF0IHdh cyBwcmV2aW91c2x5IGJlaW5nIHRyYWNrZWQpLiBBcyBub3JtYWwKQ1MgY29tcGxldGlvbiBldmVu dHMgYXJyaXZlLCB3ZSB0aGVuIHJlbW92ZSBzdGFsZSBlbnRyaWVzIGZyb20gdGhlCmluZmxpZ2h0 IHRyYWNrZXIuCgpmaXhtZTogc3RhdHMKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fY29udGV4dC5jICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYyAgICAgICAgfCAgMTkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5jICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVy LmMgICAgICAgIHwgIDE1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmggICAg ICAgICAgICB8ICAxMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVz LmggICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAg ICB8ICA1OCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmggICAg fCAgNTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgIHwg MTcxICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgICAgICAg fCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICAgfCA1 NzcgKysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oICAgICAgfCAgNjIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9scmMuYyAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19l bmdpbmUuYyB8ICAgMSArCiAxNCBmaWxlcyBjaGFuZ2VkLCA0MTYgaW5zZXJ0aW9ucygrKSwgNTY5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4 dC5jCmluZGV4IGUwOGE5YWZlZTdjZC4uZTc2M2UxMTQyY2U5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTYwNyw3ICs2MDcsNyBAQCBzdGF0aWMg dm9pZCBpbml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiBzdGF0 aWMgYm9vbCBuZWVkc19wcmVlbXB0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiB7Ci0JcmV0dXJuIEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihpOTE1KTsKKwlyZXR1 cm4gVVNFU19HVUNfU1VCTUlTU0lPTihpOTE1KTsKIH0KIAogaW50IGk5MTVfZ2VtX2NvbnRleHRz X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggNmE1ZDI3ZGM2MzM4Li5mYTk4MjdlZWQ4ZWYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtMTIzNCwxMCArMTIzNCwxMCBAQCBz dGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVf c3RhdGUgKmVycm9yLAogCX0KIH0KIAotc3RhdGljIHZvaWQgcmVjb3JkX3JlcXVlc3Qoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKK3N0YXRpYyB2b2lkIHJlY29yZF9yZXF1ZXN0KGNvbnN0 IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCiAJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZXJy b3JfcmVxdWVzdCAqZXJxKQogewotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSByZXF1 ZXN0LT5nZW1fY29udGV4dDsKKwljb25zdCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0g cmVxdWVzdC0+Z2VtX2NvbnRleHQ7CiAKIAllcnEtPmZsYWdzID0gcmVxdWVzdC0+ZmVuY2UuZmxh Z3M7CiAJZXJxLT5jb250ZXh0ID0gcmVxdWVzdC0+ZmVuY2UuY29udGV4dDsKQEAgLTEzMDEsMjAg KzEzMDEsMTUgQEAgc3RhdGljIHZvaWQgZW5naW5lX3JlY29yZF9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJZWUtPm51bV9yZXF1ZXN0cyA9IGNvdW50OwogfQogCi1z dGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX2V4ZWNsaXN0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCitzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX2V4ZWNsaXN0 cyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkJCSAgc3RydWN0IGRy bV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUpCiB7CiAJY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0JdW5zaWdu ZWQgaW50IG47CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqIGNvbnN0ICpwb3J0ID0gZXhlY2xpc3Rz LT5hY3RpdmU7CisJdW5zaWduZWQgaW50IG4gPSAwOwogCi0JZm9yIChuID0gMDsgbiA8IGV4ZWNs aXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgbisrKSB7Ci0JCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxID0gcG9ydF9yZXF1ZXN0KCZleGVjbGlzdHMtPnBvcnRbbl0pOwotCi0JCWlmICghcnEpCi0J CQlicmVhazsKLQotCQlyZWNvcmRfcmVxdWVzdChycSwgJmVlLT5leGVjbGlzdFtuXSk7Ci0JfQor CXdoaWxlICgqcG9ydCkKKwkJcmVjb3JkX3JlcXVlc3QoKnBvcnQrKywgJmVlLT5leGVjbGlzdFtu KytdKTsKIAogCWVlLT5udW1fcG9ydHMgPSBuOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYwppbmRleCA3MzY1YTg2YTQ0OGEuLmMyOWZiNmY3ZWY0YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMKQEAgLTIxMiw2ICsyMTIsMTIgQEAgc3RhdGljIGJvb2wgaTkxNV9yZXF1 ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlHRU1fQlVHX09OKCFpOTE1X3N3 X2ZlbmNlX3NpZ25hbGVkKCZycS0+c3VibWl0KSk7CiAJdHJhY2VfaTkxNV9yZXF1ZXN0X3JldGly ZShycSk7CiAKKwkvKgorCSAqIFdlIG9ubHkgbG9vc2VseSB0cmFjayBpbmZsaWdodCByZXF1ZXN0 cyBhY3Jvc3MgcHJlZW1wdGlvbiwKKwkgKiBhbmQgc28gd2UgbWF5IGZpbmQgb3Vyc2VsdmVzIGF0 dGVtcHRpbmcgdG8gcmV0aXJlIGEgX2NvbXBsZXRlZF8KKwkgKiByZXF1ZXN0IHRoYXQgd2UgaGF2 ZSByZW1vdmVkIGZyb20gdGhlIEhXIGFuZCBwdXQgYmFjayBvbiBhIHJ1bgorCSAqIHF1ZXVlLgor CSAqLwogCXNwaW5fbG9ja19pcnEoJnJxLT5lbmdpbmUtPmFjdGl2ZS5sb2NrKTsKIAlsaXN0X2Rl bCgmcnEtPnNjaGVkLmxpbmspOwogCXNwaW5fdW5sb2NrX2lycSgmcnEtPmVuZ2luZS0+YWN0aXZl LmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKaW5kZXggOTVkMGVmMDQ4 N2RjLi43YTEwNTRhYWM5NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwpA QCAtMjY3LDE4ICsyNjcsNiBAQCBzY2hlZF9sb2NrX2VuZ2luZShjb25zdCBzdHJ1Y3QgaTkxNV9z Y2hlZF9ub2RlICpub2RlLAogCXJldHVybiBsb2NrZWQ7CiB9CiAKLXN0YXRpYyBib29sIGluZmxp Z2h0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAotCQkgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKLXsKLQljb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICph Y3RpdmU7Ci0KLQlpZiAoIWk5MTVfcmVxdWVzdF9pc19hY3RpdmUocnEpKQotCQlyZXR1cm4gZmFs c2U7Ci0KLQlhY3RpdmUgPSBwb3J0X3JlcXVlc3QoZW5naW5lLT5leGVjbGlzdHMucG9ydCk7Ci0J cmV0dXJuIGFjdGl2ZS0+aHdfY29udGV4dCA9PSBycS0+aHdfY29udGV4dDsKLX0KLQogc3RhdGlj IHZvaWQgX19pOTE1X3NjaGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQkJICAgIGNv bnN0IHN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIpCiB7CkBAIC00MTIsNyArNDAwLDggQEAg c3RhdGljIHZvaWQgX19pOTE1X3NjaGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQkg KiBJZiB3ZSBhcmUgYWxyZWFkeSB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb250ZXh0LCBkb24n dAogCQkgKiBib3RoZXIgZXZhbHVhdGluZyBpZiB3ZSBzaG91bGQgcHJlZW1wdCBvdXJzZWx2ZXMu CiAJCSAqLwotCQlpZiAoaW5mbGlnaHQobm9kZV90b19yZXF1ZXN0KG5vZGUpLCBlbmdpbmUpKQor CQlpZiAoZXhlY2xpc3RzX2luZmxpZ2h0KCZlbmdpbmUtPmV4ZWNsaXN0cywKKwkJCQkgICAgICAg bm9kZV90b19yZXF1ZXN0KG5vZGUpKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIERlZmVyICh0YXNr bGV0KSBzdWJtaXNzaW9uIHVudGlsIGFmdGVyIGFsbCBvZiBvdXIgdXBkYXRlcy4gKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdXRpbHMuaAppbmRleCBiOTZkMTEwYzFjMmIuLjMxMzczOGEwZTVjOSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvb3ZlcmZsb3cuaD4KKyNpbmNsdWRlIDxs aW51eC93b3JrcXVldWUuaD4KIAogI3VuZGVmIFdBUk5fT04KIC8qIE1hbnkgZ2NjIHNlZW0gdG8g bm8gc2VlIHRocm91Z2ggdGhpcyBhbmQgZmFsbCBvdmVyIDooICovCkBAIC0xMTUsNiArMTE2LDE4 IEBAIF9fY2hlY2tfc3RydWN0X3NpemUoc2l6ZV90IGJhc2UsIHNpemVfdCBhcnIsIHNpemVfdCBj b3VudCwgc2l6ZV90ICpzaXplKQogCSgodHlwZW9mKHB0cikpKCh1bnNpZ25lZCBsb25nKShwdHIp IHwgX19iaXRzKSk7CQkJXAogfSkKIAorI2RlZmluZSBwdHJfY291bnRfZGVjKHBfcHRyKSBkbyB7 CQkJCQlcCisJdHlwZW9mKHBfcHRyKSBfX3AgPSAocF9wdHIpOwkJCQkJXAorCXVuc2lnbmVkIGxv bmcgX192ID0gKHVuc2lnbmVkIGxvbmcpKCpfX3ApOwkJCVwKKwkqX19wID0gKHR5cGVvZigqcF9w dHIpKSgtLV9fdik7CQkJCQlcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIHB0cl9jb3VudF9pbmMo cF9wdHIpIGRvIHsJCQkJCVwKKwl0eXBlb2YocF9wdHIpIF9fcCA9IChwX3B0cik7CQkJCQlcCisJ dW5zaWduZWQgbG9uZyBfX3YgPSAodW5zaWduZWQgbG9uZykoKl9fcCk7CQkJXAorCSpfX3AgPSAo dHlwZW9mKCpwX3B0cikpKCsrX192KTsJCQkJCVwKK30gd2hpbGUgKDApCisKICNkZWZpbmUgcGFn ZV9tYXNrX2JpdHMocHRyKSBwdHJfbWFza19iaXRzKHB0ciwgUEFHRV9TSElGVCkKICNkZWZpbmUg cGFnZV91bm1hc2tfYml0cyhwdHIpIHB0cl91bm1hc2tfYml0cyhwdHIsIFBBR0VfU0hJRlQpCiAj ZGVmaW5lIHBhZ2VfcGFja19iaXRzKHB0ciwgYml0cykgcHRyX3BhY2tfYml0cyhwdHIsIGJpdHMs IFBBR0VfU0hJRlQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250 ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmgK aW5kZXggNWM5OTkzMzhiY2Q1Li41YzNjMzNkMDVhNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NvbnRleHRfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgogCiAjaW5jbHVkZSAiaTkxNV9hY3RpdmVfdHlwZXMuaCIKKyNpbmNsdWRlICJp OTE1X3V0aWxzLmgiCiAKIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0Owogc3RydWN0IGk5MTVfdm1h OwpAQCAtNDMsNiArNDQsMTAgQEAgc3RydWN0IGludGVsX2NvbnRleHQgewogCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpnZW1fY29udGV4dDsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqaW5mbGlnaHQ7CisjZGVmaW5lIGludGVsX2Nv bnRleHRfaW5mbGlnaHQoY2UpIHB0cl9tYXNrX2JpdHMoKGNlKS0+aW5mbGlnaHQsIDIpCisjZGVm aW5lIGludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpICBwdHJfdW5tYXNrX2JpdHMoKGNl KS0+aW5mbGlnaHQsIDIpCisjZGVmaW5lIGludGVsX2NvbnRleHRfaW5mbGlnaHRfaW5jKGNlKSBw dHJfY291bnRfaW5jKCYoY2UpLT5pbmZsaWdodCkKKyNkZWZpbmUgaW50ZWxfY29udGV4dF9pbmZs aWdodF9kZWMoY2UpIHB0cl9jb3VudF9kZWMoJihjZSktPmluZmxpZ2h0KQogCiAJc3RydWN0IGxp c3RfaGVhZCBhY3RpdmVfbGluazsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9saW5rOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA5Yzk4ZDA3ZDE4ZWUuLmUxOGRj Mjg2YTM5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTQ2MSw2 ICs0NjEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZXhlY2xpc3RzLT5wb3J0X21hc2sgPSAxOwogCUdF TV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpKSk7 CiAJR0VNX0JVR19PTihleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0cykgPiBFWEVDTElTVF9N QVhfUE9SVFMpOworCWV4ZWNsaXN0cy0+YWN0aXZlID0gJmV4ZWNsaXN0cy0+aW5mbGlnaHRbMF07 CiAKIAlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBJTlRfTUlOOwogCWV4ZWNsaXN0 cy0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKQEAgLTEwNTEsNyArMTA1Miw3IEBAIGJvb2wgaW50 ZWxfZW5naW5lX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlyZXR1 cm4gdHJ1ZTsKIAogCS8qIFdhaXRpbmcgdG8gZHJhaW4gRUxTUD8gKi8KLQlpZiAoUkVBRF9PTkNF KGVuZ2luZS0+ZXhlY2xpc3RzLmFjdGl2ZSkpIHsKKwlpZiAoZXhlY2xpc3RzX2FjdGl2ZSgmZW5n aW5lLT5leGVjbGlzdHMpKSB7CiAJCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCA9ICZlbmdpbmUt PmV4ZWNsaXN0cy50YXNrbGV0OwogCiAJCWxvY2FsX2JoX2Rpc2FibGUoKTsKQEAgLTEwNjYsNyAr MTA2Nyw3IEBAIGJvb2wgaW50ZWxfZW5naW5lX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCQkvKiBPdGhlcndpc2UgZmx1c2ggdGhlIHRhc2tsZXQgaWYgaXQgd2FzIG9u IGFub3RoZXIgY3B1ICovCiAJCXRhc2tsZXRfdW5sb2NrX3dhaXQodCk7CiAKLQkJaWYgKFJFQURf T05DRShlbmdpbmUtPmV4ZWNsaXN0cy5hY3RpdmUpKQorCQlpZiAoZXhlY2xpc3RzX2FjdGl2ZSgm ZW5naW5lLT5leGVjbGlzdHMpKQogCQkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTM3MSw2ICsx MzcyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhjb25zdCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJfQogCiAJaWYgKEhBU19FWEVDTElTVFMo ZGV2X3ByaXYpKSB7CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKiBjb25zdCAqcG9ydCwgKnJxOwog CQljb25zdCB1MzIgKmh3cyA9CiAJCQkmZW5naW5lLT5zdGF0dXNfcGFnZS5hZGRyW0k5MTVfSFdT X0NTQl9CVUYwX0lOREVYXTsKIAkJdW5zaWduZWQgaW50IGlkeDsKQEAgLTE0MDYsMjYgKzE0MDgs MjggQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCX0KIAogCQlyY3VfcmVhZF9sb2NrKCk7Ci0J CWZvciAoaWR4ID0gMDsgaWR4IDwgZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOyBpZHgr KykgewotCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0JCQl1bnNpZ25lZCBpbnQgY291bnQ7 Ci0KLQkJCXJxID0gcG9ydF91bnBhY2soJmV4ZWNsaXN0cy0+cG9ydFtpZHhdLCAmY291bnQpOwot CQkJaWYgKHJxKSB7Ci0JCQkJY2hhciBoZHJbODBdOwotCi0JCQkJc25wcmludGYoaGRyLCBzaXpl b2YoaGRyKSwKLQkJCQkJICJcdFx0RUxTUFslZF0gY291bnQ9JWQsIHJpbmc6e3N0YXJ0OiUwOHgs IGh3c3A6JTA4eCwgc2Vxbm86JTA4eH0sIHJxOiAiLAotCQkJCQkgaWR4LCBjb3VudCwKLQkJCQkJ IGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmctPnZtYSksCi0JCQkJCSBycS0+dGltZWxpbmUtPmh3 c3Bfb2Zmc2V0LAotCQkJCQkgaHdzcF9zZXFubyhycSkpOwotCQkJCXByaW50X3JlcXVlc3QobSwg cnEsIGhkcik7Ci0JCQl9IGVsc2UgewotCQkJCWRybV9wcmludGYobSwgIlx0XHRFTFNQWyVkXSBp ZGxlXG4iLCBpZHgpOwotCQkJfQorCQlmb3IgKHBvcnQgPSBleGVjbGlzdHMtPmFjdGl2ZTsgKHJx ID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJCWNoYXIgaGRyWzgwXTsKKworCQkJc25wcmludGYoaGRy LCBzaXplb2YoaGRyKSwKKwkJCQkgIlx0XHRBY3RpdmVbJWxkXSByaW5nOntzdGFydDolMDh4LCBo d3NwOiUwOHgsIHNlcW5vOiUwOHh9LCBycTogIiwKKwkJCQkgcG9ydCAtIGV4ZWNsaXN0cy0+YWN0 aXZlLAorCQkJCSBpOTE1X2dndHRfb2Zmc2V0KHJxLT5yaW5nLT52bWEpLAorCQkJCSBycS0+dGlt ZWxpbmUtPmh3c3Bfb2Zmc2V0LAorCQkJCSBod3NwX3NlcW5vKHJxKSk7CisJCQlwcmludF9yZXF1 ZXN0KG0sIHJxLCBoZHIpOworCQl9CisJCWZvciAocG9ydCA9IGV4ZWNsaXN0cy0+cGVuZGluZzsg KHJxID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJCWNoYXIgaGRyWzgwXTsKKworCQkJc25wcmludGYo aGRyLCBzaXplb2YoaGRyKSwKKwkJCQkgIlx0XHRQZW5kaW5nWyVsZF0gcmluZzp7c3RhcnQ6JTA4 eCwgaHdzcDolMDh4LCBzZXFubzolMDh4fSwgcnE6ICIsCisJCQkJIHBvcnQgLSBleGVjbGlzdHMt PnBlbmRpbmcsCisJCQkJIGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmctPnZtYSksCisJCQkJIHJx LT50aW1lbGluZS0+aHdzcF9vZmZzZXQsCisJCQkJIGh3c3Bfc2Vxbm8ocnEpKTsKKwkJCXByaW50 X3JlcXVlc3QobSwgcnEsIGhkcik7CiAJCX0KLQkJZHJtX3ByaW50ZihtLCAiXHRcdEhXIGFjdGl2 ZT8gMHgleFxuIiwgZXhlY2xpc3RzLT5hY3RpdmUpOwogCQlyY3VfcmVhZF91bmxvY2soKTsKIAl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KSB7CiAJCWRybV9wcmludGYobSwgIlx0 UFBfRElSX0JBU0U6IDB4JTA4eFxuIiwKQEAgLTE1OTAsMTYgKzE1OTQsMTggQEAgaW50IGludGVs X2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0K IAogCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQrKyA9PSAwKSB7Ci0JCWNvbnN0IHN0cnVjdCBl eGVjbGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzLT5wb3J0OwotCQl1bnNpZ25lZCBpbnQgbnVt X3BvcnRzID0gZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOworCQlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICogY29uc3QgKnBvcnQ7CiAKIAkJZW5naW5lLT5zdGF0cy5lbmFibGVkX2F0ID0ga3Rp bWVfZ2V0KCk7CiAKIAkJLyogWFhYIHN1Ym1pc3Npb24gbWV0aG9kIG9ibGl2aW91cz8gKi8KLQkJ d2hpbGUgKG51bV9wb3J0cy0tICYmIHBvcnRfaXNzZXQocG9ydCkpIHsKKwkJcG9ydCA9IGV4ZWNs aXN0cy0+YWN0aXZlOworCQl3aGlsZSAoKnBvcnQrKykKKwkJCWVuZ2luZS0+c3RhdHMuYWN0aXZl Kys7CisKKwkJcG9ydCA9IGV4ZWNsaXN0cy0+cGVuZGluZzsKKwkJd2hpbGUgKCpwb3J0KyspCiAJ CQllbmdpbmUtPnN0YXRzLmFjdGl2ZSsrOwotCQkJcG9ydCsrOwotCQl9CiAKIAkJaWYgKGVuZ2lu ZS0+c3RhdHMuYWN0aXZlKQogCQkJZW5naW5lLT5zdGF0cy5zdGFydCA9IGVuZ2luZS0+c3RhdHMu ZW5hYmxlZF9hdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKaW5k ZXggN2MwNGJhNDRiMDU3Li45NWE2MWI0MzhjZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2VuZ2luZV90eXBlcy5oCkBAIC0xNTEsNTEgKzE1MSwxMCBAQCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2V4ZWNsaXN0cyB7CiAJICovCiAJdTMyIF9faW9tZW0gKmN0cmxfcmVnOwogCi0JLyoqCi0J ICogQHBvcnQ6IGV4ZWNsaXN0IHBvcnQgc3RhdGVzCi0JICoKLQkgKiBGb3IgZWFjaCBoYXJkd2Fy ZSBFTFNQIChFeGVjTGlzdCBTdWJtaXNzaW9uIFBvcnQpIHdlIGtlZXAKLQkgKiB0cmFjayBvZiB0 aGUgbGFzdCByZXF1ZXN0IGFuZCB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIHN1Ym1pdHRlZAotCSAq IHRoYXQgcG9ydCB0byBody4gV2UgdGhlbiBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBo dyByZXBvcnRzCi0JICogYSBjb250ZXh0IGNvbXBsZXRpb24gb3IgcHJlZW1wdGlvbi4gQXMgb25s eSBvbmUgY29udGV4dCBjYW4KLQkgKiBiZSBhY3RpdmUgb24gaHcsIHdlIGxpbWl0IHJlc3VibWlz c2lvbiBvZiBjb250ZXh0IHRvIHBvcnRbMF0uIFRoaXMKLQkgKiBpcyBjYWxsZWQgTGl0ZSBSZXN0 b3JlLCBvZiB0aGUgY29udGV4dC4KLQkgKi8KLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCB7Ci0JCS8q KgotCQkgKiBAcmVxdWVzdF9jb3VudDogY29tYmluZWQgcmVxdWVzdCBhbmQgc3VibWlzc2lvbiBj b3VudAotCQkgKi8KLQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdF9jb3VudDsKLSNkZWZp bmUgRVhFQ0xJU1RfQ09VTlRfQklUUyAyCi0jZGVmaW5lIHBvcnRfcmVxdWVzdChwKSBwdHJfbWFz a19iaXRzKChwKS0+cmVxdWVzdF9jb3VudCwgRVhFQ0xJU1RfQ09VTlRfQklUUykKLSNkZWZpbmUg cG9ydF9jb3VudChwKSBwdHJfdW5tYXNrX2JpdHMoKHApLT5yZXF1ZXN0X2NvdW50LCBFWEVDTElT VF9DT1VOVF9CSVRTKQotI2RlZmluZSBwb3J0X3BhY2socnEsIGNvdW50KSBwdHJfcGFja19iaXRz KHJxLCBjb3VudCwgRVhFQ0xJU1RfQ09VTlRfQklUUykKLSNkZWZpbmUgcG9ydF91bnBhY2socCwg Y291bnQpIHB0cl91bnBhY2tfYml0cygocCktPnJlcXVlc3RfY291bnQsIGNvdW50LCBFWEVDTElT VF9DT1VOVF9CSVRTKQotI2RlZmluZSBwb3J0X3NldChwLCBwYWNrZWQpICgocCktPnJlcXVlc3Rf Y291bnQgPSAocGFja2VkKSkKLSNkZWZpbmUgcG9ydF9pc3NldChwKSAoKHApLT5yZXF1ZXN0X2Nv dW50KQotI2RlZmluZSBwb3J0X2luZGV4KHAsIGV4ZWNsaXN0cykgKChwKSAtIChleGVjbGlzdHMp LT5wb3J0KQotCi0JCS8qKgotCQkgKiBAY29udGV4dF9pZDogY29udGV4dCBJRCBmb3IgcG9ydAot CQkgKi8KLQkJR0VNX0RFQlVHX0RFQ0wodTMyIGNvbnRleHRfaWQpOwotCiAjZGVmaW5lIEVYRUNM SVNUX01BWF9QT1JUUyAyCi0JfSBwb3J0W0VYRUNMSVNUX01BWF9QT1JUU107Ci0KLQkvKioKLQkg KiBAYWN0aXZlOiBpcyB0aGUgSFcgYWN0aXZlPyBXZSBjb25zaWRlciB0aGUgSFcgYXMgYWN0aXZl IGFmdGVyCi0JICogc3VibWl0dGluZyBhbnkgY29udGV4dCBmb3IgZXhlY3V0aW9uIGFuZCB1bnRp bCB3ZSBoYXZlIHNlZW4gdGhlCi0JICogbGFzdCBjb250ZXh0IGNvbXBsZXRpb24gZXZlbnQuIEFm dGVyIHRoYXQsIHdlIGRvIG5vdCBleHBlY3QgYW55Ci0JICogbW9yZSBldmVudHMgdW50aWwgd2Ug c3VibWl0LCBhbmQgc28gY2FuIHBhcmsgdGhlIEhXLgotCSAqCi0JICogQXMgd2UgaGF2ZSBhIHNt YWxsIG51bWJlciBvZiBkaWZmZXJlbnQgc291cmNlcyBmcm9tIHdoaWNoIHdlIGZlZWQKLQkgKiB0 aGUgSFcsIHdlIHRyYWNrIHRoZSBzdGF0ZSBvZiBlYWNoIGluc2lkZSBhIHNpbmdsZSBiaXRmaWVs ZC4KLQkgKi8KLQl1bnNpZ25lZCBpbnQgYWN0aXZlOwotI2RlZmluZSBFWEVDTElTVFNfQUNUSVZF X1VTRVIgMAotI2RlZmluZSBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQgMQotI2RlZmluZSBFWEVD TElTVFNfQUNUSVZFX0hXQUNLIDIKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgKmFjdGl2 ZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICppbmZsaWdodFtFWEVDTElTVF9NQVhfUE9SVFMgKyAx IC8qIHNlbnRpbmVsICovXTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwZW5kaW5nW0VYRUNMSVNU X01BWF9QT1JUUyArIDFdOwogCiAJLyoqCiAJICogQHBvcnRfbWFzazogbnVtYmVyIG9mIGV4ZWNs aXN0IHBvcnRzIC0gMQpAQCAtMjM2LDExICsxOTUsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyB7CiAJICovCiAJdTMyICpjc2Jfc3RhdHVzOwogCi0JLyoqCi0JICogQHByZWVtcHRf Y29tcGxldGVfc3RhdHVzOiBleHBlY3RlZCBDU0IgdXBvbiBjb21wbGV0aW5nIHByZWVtcHRpb24K LQkgKi8KLQl1MzIgcHJlZW1wdF9jb21wbGV0ZV9zdGF0dXM7Ci0KIAkvKioKIAkgKiBAY3NiX2hl YWQ6IGNvbnRleHQgc3RhdHVzIGJ1ZmZlciBoZWFkCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA1M2I4NDVmMzQ3MTcuLjY0YTI4MDQxNzdm ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCkBAIC0z MCw3ICszMCwxMSBAQAogI2luY2x1ZGUgImludGVsX2xyY19yZWcuaCIKICNpbmNsdWRlICJpOTE1 X2Rydi5oIgogCi0jZGVmaW5lIEdVQ19QUkVFTVBUX0ZJTklTSEVECQkweDEKK2VudW0geworCUdV Q19QUkVFTVBUX05PTkUgPSAwLAorCUdVQ19QUkVFTVBUX0lOUFJPR1JFU1MsCisJR1VDX1BSRUVN UFRfRklOSVNIRUQsCit9OwogI2RlZmluZSBHVUNfUFJFRU1QVF9CUkVBRENSVU1CX0RXT1JEUwkw eDgKICNkZWZpbmUgR1VDX1BSRUVNUFRfQlJFQURDUlVNQl9CWVRFUwlcCiAJKHNpemVvZih1MzIp ICogR1VDX1BSRUVNUFRfQlJFQURDUlVNQl9EV09SRFMpCkBAIC01MzMsMTUgKzUzNywxMSBAQCBz dGF0aWMgdm9pZCBndWNfYWRkX3JlcXVlc3Qoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKIAl1MzIgY3R4X2Rlc2MgPSBsb3dlcl8zMl9iaXRzKHJxLT5od19j b250ZXh0LT5scmNfZGVzYyk7CiAJdTMyIHJpbmdfdGFpbCA9IGludGVsX3Jpbmdfc2V0X3RhaWwo cnEtPnJpbmcsIHJxLT50YWlsKSAvIHNpemVvZih1NjQpOwogCi0Jc3Bpbl9sb2NrKCZjbGllbnQt PndxX2xvY2spOwotCiAJZ3VjX3dxX2l0ZW1fYXBwZW5kKGNsaWVudCwgZW5naW5lLT5ndWNfaWQs IGN0eF9kZXNjLAogCQkJICAgcmluZ190YWlsLCBycS0+ZmVuY2Uuc2Vxbm8pOwogCWd1Y19yaW5n X2Rvb3JiZWxsKGNsaWVudCk7CiAKIAljbGllbnQtPnN1Ym1pc3Npb25zW2VuZ2luZS0+aWRdICs9 IDE7Ci0KLQlzcGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsKIH0KIAogLyoKQEAgLTYyNyw4 ICs2MjcsOSBAQCBzdGF0aWMgdm9pZCBpbmplY3RfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKIAlkYXRhWzZdID0gaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1YywgZ3Vj LT5zaGFyZWRfZGF0YSk7CiAKIAlpZiAoV0FSTl9PTihpbnRlbF9ndWNfc2VuZChndWMsIGRhdGEs IEFSUkFZX1NJWkUoZGF0YSkpKSkgewotCQlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKCZlbmdpbmUt PmV4ZWNsaXN0cywKLQkJCQkgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKTsKKwkJaW50 ZWxfd3JpdGVfc3RhdHVzX3BhZ2UoZW5naW5lLAorCQkJCQlJOTE1X0dFTV9IV1NfUFJFRU1QVCwK KwkJCQkJR1VDX1BSRUVNUFRfTk9ORSk7CiAJCXRhc2tsZXRfc2NoZWR1bGUoJmVuZ2luZS0+ZXhl Y2xpc3RzLnRhc2tsZXQpOwogCX0KIApAQCAtNjY3LDggKzY2OCw2IEBAIHN0YXRpYyB2b2lkIGNv bXBsZXRlX3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7 CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4 ZWNsaXN0czsKIAotCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLCBF WEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpKTsKLQogCWlmIChpbmplY3RfcHJlZW1wdF9oYW5nKGV4 ZWNsaXN0cykpCiAJCXJldHVybjsKIApAQCAtNjc2LDg4ICs2NzUsODggQEAgc3RhdGljIHZvaWQg Y29tcGxldGVfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAlleGVjbGlzdHNfdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoZXhlY2xpc3RzKTsKIAogCXdh aXRfZm9yX2d1Y19wcmVlbXB0X3JlcG9ydChlbmdpbmUpOwotCWludGVsX3dyaXRlX3N0YXR1c19w YWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX1BSRUVNUFQsIDApOworCWludGVsX3dyaXRlX3N0YXR1 c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX1BSRUVNUFQsIEdVQ19QUkVFTVBUX05PTkUpOwog fQogCi0vKioKLSAqIGd1Y19zdWJtaXQoKSAtIFN1Ym1pdCBjb21tYW5kcyB0aHJvdWdoIEd1Qwot ICogQGVuZ2luZTogZW5naW5lIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZHMKLSAqCi0gKiBU aGUgb25seSBlcnJvciBoZXJlIGFyaXNlcyBpZiB0aGUgZG9vcmJlbGwgaGFyZHdhcmUgaXNuJ3Qg ZnVuY3Rpb25pbmcKLSAqIGFzIGV4cGVjdGVkLCB3aGljaCByZWFsbHkgc2hvdWxuJ3QgaGFwcGVu LgotICovCi1zdGF0aWMgdm9pZCBndWNfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKK3N0YXRpYyB2b2lkIGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAorCQkgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqKm91dCwKKwkJICAgICAgIHN0cnVj dCBpOTE1X3JlcXVlc3QgKiplbmQpCiB7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmVuZ2lu ZS0+aTkxNS0+Z3VjOwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhl Y2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwotCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0 ID0gZXhlY2xpc3RzLT5wb3J0OwotCXVuc2lnbmVkIGludCBuOworCXN0cnVjdCBpbnRlbF9ndWNf Y2xpZW50ICpjbGllbnQgPSBndWMtPmV4ZWNidWZfY2xpZW50OwogCi0JZm9yIChuID0gMDsgbiA8 IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgbisrKSB7Ci0JCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOwotCQl1bnNpZ25lZCBpbnQgY291bnQ7CisJc3Bpbl9sb2NrKCZjbGllbnQtPndx X2xvY2spOwogCi0JCXJxID0gcG9ydF91bnBhY2soJnBvcnRbbl0sICZjb3VudCk7Ci0JCWlmIChy cSAmJiBjb3VudCA9PSAwKSB7Ci0JCQlwb3J0X3NldCgmcG9ydFtuXSwgcG9ydF9wYWNrKHJxLCAr K2NvdW50KSk7CisJZG8geworCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9ICpvdXQrKzsKIAot CQkJZmx1c2hfZ2d0dF93cml0ZXMocnEtPnJpbmctPnZtYSk7CisJCWZsdXNoX2dndHRfd3JpdGVz KHJxLT5yaW5nLT52bWEpOworCQlndWNfYWRkX3JlcXVlc3QoZ3VjLCBycSk7CisJfSB3aGlsZSAo b3V0ICE9IGVuZCk7CiAKLQkJCWd1Y19hZGRfcmVxdWVzdChndWMsIHJxKTsKLQkJfQotCX0KKwlz cGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgcG9ydF9hc3Np Z24oc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQor c3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK IHsKLQlHRU1fQlVHX09OKHBvcnRfaXNzZXQocG9ydCkpOwotCi0JcG9ydF9zZXQocG9ydCwgaTkx NV9yZXF1ZXN0X2dldChycSkpOworCXJldHVybiBycS0+c2NoZWQuYXR0ci5wcmlvcml0eSB8IF9f Tk9fUFJFRU1QVElPTjsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpzY2hlZHVs ZV9pbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IGlkeCkKIHsKLQlyZXR1cm4gcnEtPnNj aGVkLmF0dHIucHJpb3JpdHk7CisJdHJhY2VfaTkxNV9yZXF1ZXN0X2luKHJxLCBpZHgpOworCisJ aWYgKCFycS0+aHdfY29udGV4dC0+aW5mbGlnaHQpCisJCXJxLT5od19jb250ZXh0LT5pbmZsaWdo dCA9IHJxLT5lbmdpbmU7CisJaW50ZWxfY29udGV4dF9pbmZsaWdodF9pbmMocnEtPmh3X2NvbnRl eHQpOworCisJcmV0dXJuIGk5MTVfcmVxdWVzdF9nZXQocnEpOwogfQogCi1zdGF0aWMgaW5saW5l IGludCBwb3J0X3ByaW8oY29uc3Qgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQpCitzdGF0aWMg dm9pZCBzY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7Ci0JcmV0dXJuIHJx X3ByaW8ocG9ydF9yZXF1ZXN0KHBvcnQpKSB8IF9fTk9fUFJFRU1QVElPTjsKKwl0cmFjZV9pOTE1 X3JlcXVlc3Rfb3V0KHJxKTsKKworCWludGVsX2NvbnRleHRfaW5mbGlnaHRfZGVjKHJxLT5od19j b250ZXh0KTsKKwlpZiAoIWludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQocnEtPmh3X2NvbnRl eHQpKQorCQlycS0+aHdfY29udGV4dC0+aW5mbGlnaHQgPSBOVUxMOworCisJaTkxNV9yZXF1ZXN0 X3B1dChycSk7CiB9CiAKLXN0YXRpYyBib29sIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBj b25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGV4ZWNsaXN0X3Bv cnQgKnBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdCA9 IE5VTEw7Ci0JY29uc3Qgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKiBjb25zdCBsYXN0X3BvcnQgPQot CQkmZXhlY2xpc3RzLT5wb3J0W2V4ZWNsaXN0cy0+cG9ydF9tYXNrXTsKKwlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICoqZmlyc3QgPSBleGVjbGlzdHMtPmluZmxpZ2h0OworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKiogY29uc3QgZW5kID0gZmlyc3QgKyBleGVjbGlzdHMtPnBvcnRfbWFzazsKKwlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpsYXN0ID0gZmlyc3RbMF07CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnBv cnQ7CiAJYm9vbCBzdWJtaXQgPSBmYWxzZTsKIAlzdHJ1Y3QgcmJfbm9kZSAqcmI7CiAKIAlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKIAotCWlmIChwb3J0X2lzc2V0 KHBvcnQpKSB7CisJaWYgKGxhc3QpIHsKIAkJaWYgKGludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlv bihlbmdpbmUpKSB7CiAJCQlzdHJ1Y3QgZ3VjX3ByZWVtcHRfd29yayAqcHJlZW1wdF93b3JrID0K IAkJCQkmZW5naW5lLT5pOTE1LT5ndWMucHJlZW1wdF93b3JrW2VuZ2luZS0+aWRdOwogCQkJaW50 IHByaW8gPSBleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQ7CiAKLQkJCWlmIChfX2V4ZWNs aXN0c19uZWVkX3ByZWVtcHQocHJpbywgcG9ydF9wcmlvKHBvcnQpKSkgewotCQkJCWV4ZWNsaXN0 c19zZXRfYWN0aXZlKGV4ZWNsaXN0cywKLQkJCQkJCSAgICAgRVhFQ0xJU1RTX0FDVElWRV9QUkVF TVBUKTsKKwkJCWlmIChfX2V4ZWNsaXN0c19uZWVkX3ByZWVtcHQocHJpbywgcnFfcHJpbyhsYXN0 KSkpIHsKKwkJCQlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShlbmdpbmUsCisJCQkJCQkJSTkxNV9H RU1fSFdTX1BSRUVNUFQsCisJCQkJCQkJR1VDX1BSRUVNUFRfSU5QUk9HUkVTUyk7CiAJCQkJcXVl dWVfd29yayhlbmdpbmUtPmk5MTUtPmd1Yy5wcmVlbXB0X3dxLAogCQkJCQkgICAmcHJlZW1wdF93 b3JrLT53b3JrKTsKLQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJcmV0dXJuOwogCQkJfQogCQl9CiAK LQkJcG9ydCsrOwotCQlpZiAocG9ydF9pc3NldChwb3J0KSkKLQkJCXJldHVybiBmYWxzZTsKKwkJ aWYgKCorK2ZpcnN0KQorCQkJcmV0dXJuOwogCX0KLQlHRU1fQlVHX09OKHBvcnRfaXNzZXQocG9y dCkpOwogCisJcG9ydCA9IGZpcnN0OwogCXdoaWxlICgocmIgPSByYl9maXJzdF9jYWNoZWQoJmV4 ZWNsaXN0cy0+cXVldWUpKSkgewogCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9s aXN0KHJiKTsKIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKQEAgLTc2NSwyMSArNzY0 LDE3IEBAIHN0YXRpYyBib29sIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCiAJCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShycSwgcm4sIHAs IGkpIHsKIAkJCWlmIChsYXN0ICYmIHJxLT5od19jb250ZXh0ICE9IGxhc3QtPmh3X2NvbnRleHQp IHsKLQkJCQlpZiAocG9ydCA9PSBsYXN0X3BvcnQpCisJCQkJaWYgKHBvcnQgPT0gZW5kKQogCQkJ CQlnb3RvIGRvbmU7CiAKLQkJCQlpZiAoc3VibWl0KQotCQkJCQlwb3J0X2Fzc2lnbihwb3J0LCBs YXN0KTsKKwkJCQkqcG9ydCA9IHNjaGVkdWxlX2luKGxhc3QsIHBvcnQgLSBmaXJzdCk7CiAJCQkJ cG9ydCsrOwogCQkJfQogCiAJCQlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGluayk7Ci0KIAkJ CV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Ci0JCQl0cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEs IHBvcnRfaW5kZXgocG9ydCwgZXhlY2xpc3RzKSk7Ci0KLQkJCWxhc3QgPSBycTsKIAkJCXN1Ym1p dCA9IHRydWU7CisJCQlsYXN0ID0gcnE7CiAJCX0KIAogCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5v ZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsKQEAgLTc4OCw1OCArNzgzLDQwIEBAIHN0YXRpYyBib29s IF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogZG9uZToKIAll eGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPQogCQlyYiA/IHRvX3ByaW9saXN0KHJiKS0+ cHJpb3JpdHkgOiBJTlRfTUlOOwotCWlmIChzdWJtaXQpCi0JCXBvcnRfYXNzaWduKHBvcnQsIGxh c3QpOwotCWlmIChsYXN0KQotCQlleGVjbGlzdHNfdXNlcl9iZWdpbihleGVjbGlzdHMsIGV4ZWNs aXN0cy0+cG9ydCk7Ci0KLQkvKiBXZSBtdXN0IGFsd2F5cyBrZWVwIHRoZSBiZWFzdCBmZWQgaWYg d2UgaGF2ZSB3b3JrIHBpbGVkIHVwICovCi0JR0VNX0JVR19PTihwb3J0X2lzc2V0KGV4ZWNsaXN0 cy0+cG9ydCkgJiYKLQkJICAgIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLCBFWEVDTElT VFNfQUNUSVZFX1VTRVIpKTsKLQlHRU1fQlVHX09OKHJiX2ZpcnN0X2NhY2hlZCgmZXhlY2xpc3Rz LT5xdWV1ZSkgJiYKLQkJICAgIXBvcnRfaXNzZXQoZXhlY2xpc3RzLT5wb3J0KSk7Ci0KLQlyZXR1 cm4gc3VibWl0OwotfQotCi1zdGF0aWMgdm9pZCBndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCi17Ci0JaWYgKF9fZ3VjX2RlcXVldWUoZW5naW5lKSkKLQkJZ3VjX3N1 Ym1pdChlbmdpbmUpOworCWlmIChzdWJtaXQpIHsKKwkJKnBvcnQgPSBzY2hlZHVsZV9pbihsYXN0 LCBwb3J0IC0gZmlyc3QpOworCQlndWNfc3VibWl0KGVuZ2luZSwgZmlyc3QsICsrcG9ydCk7CisJ fQorCWV4ZWNsaXN0cy0+YWN0aXZlID0gZXhlY2xpc3RzLT5pbmZsaWdodDsKIH0KIAogc3RhdGlj IHZvaWQgZ3VjX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiB7CiAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICopZGF0YTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNs aXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9 IGV4ZWNsaXN0cy0+cG9ydDsKLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICoqcG9ydCwgKnJxOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlzcGluX2xv Y2tfaXJxc2F2ZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogCi0JcnEgPSBwb3J0X3Jl cXVlc3QocG9ydCk7Ci0Jd2hpbGUgKHJxICYmIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7 Ci0JCXRyYWNlX2k5MTVfcmVxdWVzdF9vdXQocnEpOwotCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsK Kwlmb3IgKHBvcnQgPSBleGVjbGlzdHMtPmluZmxpZ2h0OyAocnEgPSAqcG9ydCk7IHBvcnQrKykg eworCQlpZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJYnJlYWs7CiAKLQkJcG9y dCA9IGV4ZWNsaXN0c19wb3J0X2NvbXBsZXRlKGV4ZWNsaXN0cywgcG9ydCk7Ci0JCWlmIChwb3J0 X2lzc2V0KHBvcnQpKSB7Ci0JCQlleGVjbGlzdHNfdXNlcl9iZWdpbihleGVjbGlzdHMsIHBvcnQp OwotCQkJcnEgPSBwb3J0X3JlcXVlc3QocG9ydCk7Ci0JCX0gZWxzZSB7Ci0JCQlleGVjbGlzdHNf dXNlcl9lbmQoZXhlY2xpc3RzKTsKLQkJCXJxID0gTlVMTDsKLQkJfQorCQlzY2hlZHVsZV9vdXQo cnEpOworCX0KKwlpZiAocG9ydCAhPSBleGVjbGlzdHMtPmluZmxpZ2h0KSB7CisJCWludCBpZHgg PSBwb3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodDsKKwkJaW50IHJlbSA9IEFSUkFZX1NJWkUoZXhl Y2xpc3RzLT5pbmZsaWdodCkgLSBpZHg7CisJCW1lbW1vdmUoZXhlY2xpc3RzLT5pbmZsaWdodCwg cG9ydCwgcmVtICogc2l6ZW9mKHJxKSk7CiAJfQogCi0JaWYgKGV4ZWNsaXN0c19pc19hY3RpdmUo ZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpICYmCi0JICAgIGludGVsX3JlYWRf c3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfUFJFRU1QVCkgPT0KKwlpZiAoaW50ZWxf cmVhZF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19QUkVFTVBUKSA9PQogCSAgICBH VUNfUFJFRU1QVF9GSU5JU0hFRCkKIAkJY29tcGxldGVfcHJlZW1wdF9jb250ZXh0KGVuZ2luZSk7 CiAKLQlpZiAoIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZF X1BSRUVNUFQpKQotCQlndWNfZGVxdWV1ZShlbmdpbmUpOworCWlmICghaW50ZWxfcmVhZF9zdGF0 dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19QUkVFTVBUKSkKKwkJX19ndWNfZGVxdWV1ZShl bmdpbmUpOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywg ZmxhZ3MpOwogfQpAQCAtMTMxMSw3ICsxMjg4LDcgQEAgaW50IGludGVsX2d1Y19zdWJtaXNzaW9u X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJICogYW5kIGl0IGlzIGd1YXJhbnRlZWQg dGhhdCBpdCB3aWxsIHJlbW92ZSB0aGUgd29yayBpdGVtIGZyb20gdGhlCiAJICogcXVldWUgYmVm b3JlIG91ciByZXF1ZXN0IGlzIGNvbXBsZXRlZC4KIAkgKi8KLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShlbmdpbmUtPmV4ZWNsaXN0cy5wb3J0KSAqCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZW5naW5lLT5leGVjbGlzdHMuaW5mbGlnaHQpICoKIAkJICAgICBzaXplb2Yoc3RydWN0IGd1Y193 cV9pdGVtKSAqCiAJCSAgICAgSTkxNV9OVU1fRU5HSU5FUyA+IEdVQ19XUV9TSVpFKTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwppbmRleCA1N2VkNDlkYzE5YzQuLjMzZGQ2 MmE1NDUyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNr LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKQEAgLTMwMCw2 ICszMDAsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKIAogCQkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAmcCwgIiVzXG4i LCBlbmdpbmUtPm5hbWUpOwogCQl9CisKKwkJR0VNX1RSQUNFX0RVTVAoKTsKIAl9CiAKIAlpZiAo d2VkZ2VkKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGYwODU5NDBkNDkwNi4uYjFm MDNkMzM1ZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTYyLDYgKzE2Miw4IEBA CiAjZGVmaW5lIEdFTjhfQ1RYX1NUQVRVU19DT01QTEVURURfTUFTSyBcCiAJIChHRU44X0NUWF9T VEFUVVNfQ09NUExFVEUgfCBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKQogCisjZGVmaW5lIENU WF9ERVNDX0ZPUkNFX1JFU1RPUkUgQklUX1VMTCgyKQorCiAvKiBUeXBpY2FsIHNpemUgb2YgdGhl IGF2ZXJhZ2UgcmVxdWVzdCAoMiBwaXBlY29udHJvbHMgYW5kIGEgTUlfQkIpICovCiAjZGVmaW5l IEVYRUNMSVNUU19SRVFVRVNUX1NJWkUgNjQgLyogYnl0ZXMgKi8KICNkZWZpbmUgV0FfVEFJTF9E V09SRFMgMgpAQCAtMjIzLDYgKzIyNSwxNCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9y ZWdfc3RhdGUodTMyICpyZWdfc3RhdGUsCiAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyk7CiAKK3N0YXRpYyBp bmxpbmUgdTMyIGludGVsX2h3c19wcmVlbXB0X2FkZHJlc3Moc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCXJldHVybiAoaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnN0YXR1c19w YWdlLnZtYSkgKworCQlJOTE1X0dFTV9IV1NfUFJFRU1QVF9BRERSKTsKK30KKworI2RlZmluZSBy aW5nX3N1c3BlbmQoRSkgKChFKS0+c3RhdHVzX3BhZ2UuYWRkcltJOTE1X0dFTV9IV1NfUFJFRU1Q VF0pCisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnRvX3ByaW9saXN0KHN0 cnVjdCByYl9ub2RlICpyYikKIHsKIAlyZXR1cm4gcmJfZW50cnkocmIsIHN0cnVjdCBpOTE1X3By aW9saXN0LCBub2RlKTsKQEAgLTI4Nyw5ICsyOTcsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbmVl ZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlpZiAoIWlu dGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlvbihlbmdpbmUpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlp ZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCi0JCXJldHVybiBmYWxzZTsKLQogCS8qCiAJ ICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJpb3JpdHkgaGludCBtZXJpdHMgYSBwcmVlbXB0aW9u IGF0dGVtcHQuCiAJICoKQEAgLTM0OCw5ICszNTUsNiBAQCBfX21heWJlX3VudXNlZCBzdGF0aWMg aW5saW5lIGJvb2wKIGFzc2VydF9wcmlvcml0eV9xdWV1ZShjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpwcmV2LAogCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpuZXh0KQogewot CWNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMgPQotCQkmcHJl di0+ZW5naW5lLT5leGVjbGlzdHM7Ci0KIAkvKgogCSAqIFdpdGhvdXQgcHJlZW1wdGlvbiwgdGhl IHByZXYgbWF5IHJlZmVyIHRvIHRoZSBzdGlsbCBhY3RpdmUgZWxlbWVudAogCSAqIHdoaWNoIHdl IHJlZnVzZSB0byBsZXQgZ28uCkBAIC0zNTgsNyArMzYyLDcgQEAgYXNzZXJ0X3ByaW9yaXR5X3F1 ZXVlKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXYsCiAJICogRXZlbiB3aXRoIHByZWVt cHRpb24sIHRoZXJlIGFyZSB0aW1lcyB3aGVuIHdlIHRoaW5rIGl0IGlzIGJldHRlciBub3QKIAkg KiB0byBwcmVlbXB0IGFuZCBsZWF2ZSBhbiBvc3RlbnNpYmx5IGxvd2VyIHByaW9yaXR5IHJlcXVl c3QgaW4gZmxpZ2h0LgogCSAqLwotCWlmIChwb3J0X3JlcXVlc3QoZXhlY2xpc3RzLT5wb3J0KSA9 PSBwcmV2KQorCWlmIChpOTE1X3JlcXVlc3RfaXNfYWN0aXZlKHByZXYpKQogCQlyZXR1cm4gdHJ1 ZTsKIAogCXJldHVybiBycV9wcmlvKHByZXYpID49IHJxX3ByaW8obmV4dCk7CkBAIC00NTIsMTMg KzQ1NiwxMSBAQCBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqb3duZXI7CiAKIAkJaWYg KGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQotCQkJYnJlYWs7CisJCQljb250aW51ZTsgLyog WFhYICovCiAKIAkJX19pOTE1X3JlcXVlc3RfdW5zdWJtaXQocnEpOwogCQl1bndpbmRfd2FfdGFp bChycSk7CiAKLQkJR0VNX0JVR19PTihycS0+aHdfY29udGV4dC0+aW5mbGlnaHQpOwotCiAJCS8q CiAJCSAqIFB1c2ggdGhlIHJlcXVlc3QgYmFjayBpbnRvIHRoZSBxdWV1ZSBmb3IgbGF0ZXIgcmVz dWJtaXNzaW9uLgogCQkgKiBJZiB0aGlzIHJlcXVlc3QgaXMgbm90IG5hdGl2ZSB0byB0aGlzIHBo eXNpY2FsIGVuZ2luZSAoaS5lLgpAQCAtNTA3LDYgKzUwOSw3IEBAIF9fdW53aW5kX2luY29tcGxl dGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqLwogCWlmICh+ cHJpbyAmIEFDVElWRV9QUklPUklUWSAmJiBfX2k5MTVfcmVxdWVzdF9oYXNfc3RhcnRlZChhY3Rp dmUpKSB7CiAJCXByaW8gfD0gQUNUSVZFX1BSSU9SSVRZOworCQlHRU1fQlVHX09OKGFjdGl2ZS0+ c2NoZWQuYXR0ci5wcmlvcml0eSA+PSBwcmlvKTsKIAkJYWN0aXZlLT5zY2hlZC5hdHRyLnByaW9y aXR5ID0gcHJpbzsKIAkJbGlzdF9tb3ZlX3RhaWwoJmFjdGl2ZS0+c2NoZWQubGluaywKIAkJCSAg ICAgICBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChlbmdpbmUsIHByaW8pKTsKQEAgLTUzOCw0 MSArNTQxLDUzIEBAIGV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2Uoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsIHVuc2lnbmVkIGxvbmcgc3RhdHVzKQogCQkJCSAgIHN0YXR1cywgcnEpOwog fQogCi1pbmxpbmUgdm9pZAotZXhlY2xpc3RzX3VzZXJfYmVnaW4oc3RydWN0IGludGVsX2VuZ2lu ZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKLQkJICAgICBjb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9y dCAqcG9ydCkKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCitleGVjbGlzdHNf c2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBpZHgpCiB7Ci0JZXhlY2xp c3RzX3NldF9hY3RpdmVfb25jZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7Ci19 CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2NvbnRleHQ7CisJaW50IGNvdW50 OwogCi1pbmxpbmUgdm9pZAotZXhlY2xpc3RzX3VzZXJfZW5kKHN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICpleGVjbGlzdHMpCi17Ci0JZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlz dHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7Ci19CisJdHJhY2VfaTkxNV9yZXF1ZXN0X2luKHJx LCBpZHgpOwogCi1zdGF0aWMgaW5saW5lIHZvaWQKLWV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxl X2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQotewotCUdFTV9CVUdfT04ocnEtPmh3X2NvbnRl eHQtPmluZmxpZ2h0KTsKKwljb3VudCA9IGludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2Up OworCWlmICghY291bnQpIHsKKwkJaW50ZWxfY29udGV4dF9nZXQoY2UpOworCQlleGVjbGlzdHNf Y29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX0lOKTsKKwkJ aW50ZWxfZW5naW5lX2NvbnRleHRfaW4ocnEtPmVuZ2luZSk7CisJCWNlLT5pbmZsaWdodCA9IHJx LT5lbmdpbmU7CisJfQorCisJaW50ZWxfY29udGV4dF9pbmZsaWdodF9pbmMoY2UpOworCUdFTV9C VUdfT04oaW50ZWxfY29udGV4dF9pbmZsaWdodChjZSkgIT0gcnEtPmVuZ2luZSk7CiAKLQlleGVj bGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX0lO KTsKLQlpbnRlbF9lbmdpbmVfY29udGV4dF9pbihycS0+ZW5naW5lKTsKLQlycS0+aHdfY29udGV4 dC0+aW5mbGlnaHQgPSBycS0+ZW5naW5lOworCXJldHVybiBpOTE1X3JlcXVlc3RfZ2V0KHJxKTsK IH0KIAogc3RhdGljIGlubGluZSB2b2lkCi1leGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9vdXQo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGxvbmcgc3RhdHVzKQorZXhlY2xpc3Rz X3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKLQlycS0+aHdfY29udGV4 dC0+aW5mbGlnaHQgPSBOVUxMOwotCWludGVsX2VuZ2luZV9jb250ZXh0X291dChycS0+ZW5naW5l KTsKLQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBzdGF0dXMpOworCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5od19jb250ZXh0OworCisJR0VNX0JVR19PTihpbnRl bF9jb250ZXh0X2luZmxpZ2h0KGNlKSAhPSBycS0+ZW5naW5lKTsKKwlHRU1fQlVHX09OKCFpbnRl bF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKSk7CisKIAl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0 KHJxKTsKKworCWludGVsX2NvbnRleHRfaW5mbGlnaHRfZGVjKGNlKTsKKwlpZiAoIWludGVsX2Nv bnRleHRfaW5mbGlnaHRfY291bnQoY2UpKSB7CisJCWNlLT5pbmZsaWdodCA9IE5VTEw7CisJCWlu dGVsX2VuZ2luZV9jb250ZXh0X291dChycS0+ZW5naW5lKTsKKwkJZXhlY2xpc3RzX2NvbnRleHRf c3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9PVVQpOworCQlpbnRlbF9j b250ZXh0X3B1dChjZSk7CisJfQorCisJaTkxNV9yZXF1ZXN0X3B1dChycSk7CiB9CiAKLXN0YXRp YyB1NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQor c3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoY29uc3Qgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2NvbnRleHQ7 CisJdTY0IGRlc2M7CiAKIAljZS0+bHJjX3JlZ19zdGF0ZVtDVFhfUklOR19UQUlMICsgMV0gPQog CQlpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+dGFpbCk7CkBAIC01OTMsNyArNjA4 LDExIEBAIHN0YXRpYyB1NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQogCSAqIHdtYikuCiAJICovCiAJbWIoKTsKLQlyZXR1cm4gY2UtPmxyY19kZXNj OworCisJZGVzYyA9IGNlLT5scmNfZGVzYzsKKwljZS0+bHJjX2Rlc2MgJj0gfkNUWF9ERVNDX0ZP UkNFX1JFU1RPUkU7CisKKwlyZXR1cm4gZGVzYzsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHdy aXRlX2Rlc2Moc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywgdTY0IGRl c2MsIHUzMiBwb3J0KQpAQCAtNjA3LDEyICs2MjYsNTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHdy aXRlX2Rlc2Moc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywgdTY0IGRl c2MKIAl9CiB9CiAKK3N0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkCit0cmFjZV9wb3J0cyhjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzLAorCSAgICBjb25zdCBj aGFyICptc2csCisJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKiBjb25zdCAqcG9ydHMpCit7CisJ Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVyX29mKGV4 ZWNsaXN0cywgdHlwZW9mKCplbmdpbmUpLCBleGVjbGlzdHMpOworCisJR0VNX1RSQUNFKCIlczog JXMgeyAlbGx4OiVsbGQlcywgJWxseDolbGxkIH1cbiIsCisJCSAgZW5naW5lLT5uYW1lLCBtc2cs CisJCSAgcG9ydHNbMF0tPmZlbmNlLmNvbnRleHQsCisJCSAgcG9ydHNbMF0tPmZlbmNlLnNlcW5v LAorCQkgIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocG9ydHNbMF0pID8gIiEiIDoKKwkJICBpOTE1 X3JlcXVlc3Rfc3RhcnRlZChwb3J0c1swXSkgPyAiKiIgOgorCQkgICIiLAorCQkgIHBvcnRzWzFd ID8gcG9ydHNbMV0tPmZlbmNlLmNvbnRleHQgOiAwLAorCQkgIHBvcnRzWzFdID8gcG9ydHNbMV0t PmZlbmNlLnNlcW5vIDogMCk7Cit9CisKK3N0YXRpYyBfX21heWJlX3VudXNlZCBib29sCithc3Nl cnRfcGVuZGluZ192YWxpZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhl Y2xpc3RzLAorCQkgICAgIGNvbnN0IGNoYXIgKm1zZykKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICogY29uc3QgKnBvcnQsICpycTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBOVUxMOwor CisJdHJhY2VfcG9ydHMoZXhlY2xpc3RzLCBtc2csIGV4ZWNsaXN0cy0+cGVuZGluZyk7CisKKwlp ZiAoZXhlY2xpc3RzLT5wZW5kaW5nW2V4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKV0pCisJ CXJldHVybiBmYWxzZTsKKworCWZvciAocG9ydCA9IGV4ZWNsaXN0cy0+cGVuZGluZzsgKHJxID0g KnBvcnQpOyBwb3J0KyspIHsKKwkJaWYgKGNlID09IHJxLT5od19jb250ZXh0KQorCQkJcmV0dXJu IGZhbHNlOworCisJCWNlID0gcnEtPmh3X2NvbnRleHQ7CisJfQorCisJcmV0dXJuIGNlICE9IE5V TEw7Cit9CisKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpl eGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBv cnQgPSBleGVjbGlzdHMtPnBvcnQ7CiAJdW5zaWduZWQgaW50IG47CiAKKwlHRU1fQlVHX09OKCFh c3NlcnRfcGVuZGluZ192YWxpZChleGVjbGlzdHMsICJzdWJtaXQiKSk7CisKIAkvKgogCSAqIFdl IGNhbiBza2lwIGFjcXVpcmluZyBpbnRlbF9ydW50aW1lX3BtX2dldCgpIGhlcmUgYXMgaXQgd2Fz IHRha2VuCiAJICogb24gb3VyIGJlaGFsZiBieSB0aGUgcmVxdWVzdCAoc2VlIGk5MTVfZ2VtX21h cmtfYnVzeSgpKSBhbmQgaXQgd2lsbApAQCAtNjMwLDM4ICs2OTEsMTYgQEAgc3RhdGljIHZvaWQg ZXhlY2xpc3RzX3N1Ym1pdF9wb3J0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ ICogb2YgZWxzcSBlbnRyaWVzLCBrZWVwIHRoaXMgaW4gbWluZCBiZWZvcmUgY2hhbmdpbmcgdGhl IGxvb3AgYmVsb3cuCiAJICovCiAJZm9yIChuID0gZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlz dHMpOyBuLS07ICkgewotCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKLQkJdW5zaWduZWQgaW50 IGNvdW50OwotCQl1NjQgZGVzYzsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBleGVjbGlz dHMtPnBlbmRpbmdbbl07CiAKLQkJcnEgPSBwb3J0X3VucGFjaygmcG9ydFtuXSwgJmNvdW50KTsK LQkJaWYgKHJxKSB7Ci0JCQlHRU1fQlVHX09OKGNvdW50ID4gIW4pOwotCQkJaWYgKCFjb3VudCsr KQotCQkJCWV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxlX2luKHJxKTsKLQkJCXBvcnRfc2V0KCZw b3J0W25dLCBwb3J0X3BhY2socnEsIGNvdW50KSk7Ci0JCQlkZXNjID0gZXhlY2xpc3RzX3VwZGF0 ZV9jb250ZXh0KHJxKTsKLQkJCUdFTV9ERUJVR19FWEVDKHBvcnRbbl0uY29udGV4dF9pZCA9IHVw cGVyXzMyX2JpdHMoZGVzYykpOwotCi0JCQlHRU1fVFJBQ0UoIiVzIGluWyVkXTogIGN0eD0lZC4l ZCwgZmVuY2UgJWxseDolbGxkIChjdXJyZW50ICVkKSwgcHJpbz0lZFxuIiwKLQkJCQkgIGVuZ2lu ZS0+bmFtZSwgbiwKLQkJCQkgIHBvcnRbbl0uY29udGV4dF9pZCwgY291bnQsCi0JCQkJICBycS0+ ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vLAotCQkJCSAgaHdzcF9zZXFubyhycSksCi0J CQkJICBycV9wcmlvKHJxKSk7Ci0JCX0gZWxzZSB7Ci0JCQlHRU1fQlVHX09OKCFuKTsKLQkJCWRl c2MgPSAwOwotCQl9Ci0KLQkJd3JpdGVfZGVzYyhleGVjbGlzdHMsIGRlc2MsIG4pOworCQl3cml0 ZV9kZXNjKGV4ZWNsaXN0cywKKwkJCSAgIHJxID8gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHJx KSA6IDAsCisJCQkgICBuKTsKIAl9CiAKIAkvKiB3ZSBuZWVkIHRvIG1hbnVhbGx5IGxvYWQgdGhl IHN1Ym1pdCBxdWV1ZSAqLwogCWlmIChleGVjbGlzdHMtPmN0cmxfcmVnKQogCQl3cml0ZWwoRUxf Q1RSTF9MT0FELCBleGVjbGlzdHMtPmN0cmxfcmVnKTsKLQotCWV4ZWNsaXN0c19jbGVhcl9hY3Rp dmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsKIH0KIAogc3RhdGljIGJvb2wg Y3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24oY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQpAQCAtNjg1LDYgKzcyNCw3IEBAIHN0YXRpYyBib29sIGNhbl9tZXJnZV9jdHgoY29uc3Qgc3Ry dWN0IGludGVsX2NvbnRleHQgKnByZXYsCiBzdGF0aWMgYm9vbCBjYW5fbWVyZ2VfcnEoY29uc3Qg c3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldiwKIAkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpuZXh0KQogeworCUdFTV9CVUdfT04ocHJldiA9PSBuZXh0KTsKIAlHRU1fQlVHX09OKCFhc3Nl cnRfcHJpb3JpdHlfcXVldWUocHJldiwgbmV4dCkpOwogCiAJaWYgKCFjYW5fbWVyZ2VfY3R4KHBy ZXYtPmh3X2NvbnRleHQsIG5leHQtPmh3X2NvbnRleHQpKQpAQCAtNjkzLDU4ICs3MzMsNiBAQCBz dGF0aWMgYm9vbCBjYW5fbWVyZ2VfcnEoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldiwK IAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcG9ydF9hc3NpZ24oc3RydWN0IGV4ZWNs aXN0X3BvcnQgKnBvcnQsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQotewotCUdFTV9CVUdfT04o cnEgPT0gcG9ydF9yZXF1ZXN0KHBvcnQpKTsKLQotCWlmIChwb3J0X2lzc2V0KHBvcnQpKQotCQlp OTE1X3JlcXVlc3RfcHV0KHBvcnRfcmVxdWVzdChwb3J0KSk7Ci0KLQlwb3J0X3NldChwb3J0LCBw b3J0X3BhY2soaTkxNV9yZXF1ZXN0X2dldChycSksIHBvcnRfY291bnQocG9ydCkpKTsKLX0KLQot c3RhdGljIHZvaWQgaW5qZWN0X3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCi17Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cyA9 ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlbmdpbmUt PnByZWVtcHRfY29udGV4dDsKLQl1bnNpZ25lZCBpbnQgbjsKLQotCUdFTV9CVUdfT04oZXhlY2xp c3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cyAhPQotCQkgICB1cHBlcl8zMl9iaXRzKGNlLT5s cmNfZGVzYykpOwotCi0JLyoKLQkgKiBTd2l0Y2ggdG8gb3VyIGVtcHR5IHByZWVtcHQgY29udGV4 dCBzbwotCSAqIHRoZSBzdGF0ZSBvZiB0aGUgR1BVIGlzIGtub3duIChpZGxlKS4KLQkgKi8KLQlH RU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwotCWZvciAobiA9IGV4ZWNsaXN0c19udW1f cG9ydHMoZXhlY2xpc3RzKTsgLS1uOyApCi0JCXdyaXRlX2Rlc2MoZXhlY2xpc3RzLCAwLCBuKTsK LQotCXdyaXRlX2Rlc2MoZXhlY2xpc3RzLCBjZS0+bHJjX2Rlc2MsIG4pOwotCi0JLyogd2UgbmVl ZCB0byBtYW51YWxseSBsb2FkIHRoZSBzdWJtaXQgcXVldWUgKi8KLQlpZiAoZXhlY2xpc3RzLT5j dHJsX3JlZykKLQkJd3JpdGVsKEVMX0NUUkxfTE9BRCwgZXhlY2xpc3RzLT5jdHJsX3JlZyk7Ci0K LQlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9IV0FD Syk7Ci0JZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1BS RUVNUFQpOwotCi0JKHZvaWQpSTkxNV9TRUxGVEVTVF9PTkxZKGV4ZWNsaXN0cy0+cHJlZW1wdF9o YW5nLmNvdW50KyspOwotfQotCi1zdGF0aWMgdm9pZCBjb21wbGV0ZV9wcmVlbXB0X2NvbnRleHQo c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cykKLXsKLQlHRU1fQlVHX09O KCFleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBU KSk7Ci0KLQlpZiAoaW5qZWN0X3ByZWVtcHRfaGFuZyhleGVjbGlzdHMpKQotCQlyZXR1cm47Ci0K LQlleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xpc3RzKTsKLQlfX3Vud2luZF9p bmNvbXBsZXRlX3JlcXVlc3RzKGNvbnRhaW5lcl9vZihleGVjbGlzdHMsCi0JCQkJCQkgIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MsCi0JCQkJCQkgIGV4ZWNsaXN0cykpOwotfQotCiBzdGF0aWMgdm9p ZCB2aXJ0dWFsX3VwZGF0ZV9yZWdpc3Rlcl9vZmZzZXRzKHUzMiAqcmVncywKIAkJCQkJICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKQEAgLTc4OSwxMyArNzc3LDIzIEBAIHN0 YXRpYyB2b2lkIHZpcnR1YWxfdXBkYXRlX3JlZ2lzdGVyX29mZnNldHModTMyICpyZWdzLAogCX0K IH0KIAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQorc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgorbGFzdF9hY3RpdmUoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cykKK3sKKwlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICogY29uc3QgKmxhc3QgPSBleGVjbGlzdHMtPmFjdGl2ZTsKKworCXdoaWxl ICgqbGFzdCAmJiBpOTE1X3JlcXVlc3RfY29tcGxldGVkKCpsYXN0KSkKKwkJbGFzdCsrOworCisJ cmV0dXJuICpsYXN0OworfQorCitzdGF0aWMgYm9vbCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlz dHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGV4ZWNs aXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7Ci0JY29uc3Qgc3RydWN0IGV4ZWNsaXN0 X3BvcnQgKiBjb25zdCBsYXN0X3BvcnQgPQotCQkmZXhlY2xpc3RzLT5wb3J0W2V4ZWNsaXN0cy0+ cG9ydF9tYXNrXTsKLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gcG9ydF9yZXF1ZXN0KHBv cnQpOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0ID0gZXhlY2xpc3RzLT5wZW5kaW5nOwor CXN0cnVjdCBpOTE1X3JlcXVlc3QgKiogY29uc3QgbGFzdF9wb3J0ID0gcG9ydCArIGV4ZWNsaXN0 cy0+cG9ydF9tYXNrOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKmxhc3Q7CiAJc3RydWN0IHJiX25v ZGUgKnJiOwogCWJvb2wgc3VibWl0ID0gZmFsc2U7CiAKQEAgLTg0Myw3ICs4NDEsNyBAQCBzdGF0 aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAJCSAqIHdlIHJldXNlIHRoZSByZWdpc3RlciBvZmZzZXRzKS4gVGhpcyBpcyBhIHZlcnkgc21h bGwKIAkJICogaHlzdGVyc2lzIG9uIHRoZSBncmVlZHkgc2VlbGN0aW9uIGFsZ29yaXRobS4KIAkJ ICovCi0JCWluZmxpZ2h0ID0gUkVBRF9PTkNFKHZlLT5jb250ZXh0LmluZmxpZ2h0KTsKKwkJaW5m bGlnaHQgPSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0KCZ2ZS0+Y29udGV4dCk7CiAJCWlmIChpbmZs aWdodCAmJiBpbmZsaWdodCAhPSBlbmdpbmUpIHsKIAkJCXJiID0gcmJfbmV4dChyYik7CiAJCQlj b250aW51ZTsKQEAgLTg1Miw2NSArODUwLDcxIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1 ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJYnJlYWs7CiAJfQogCisJLyoK KwkgKiBJZiB0aGUgcXVldWUgaXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhlIGxhc3QKKwkgKiBy ZXF1ZXN0IGluIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNvbnRleHQsIHN1Ym1pdCBhZnJlc2guCisJ ICogV2Ugd2lsbCByZXN1Ym1pdCBhZ2FpbiBhZnRlcndhcmRzIGluIGNhc2Ugd2UgbmVlZCB0byBz cGxpdAorCSAqIHRoZSBhY3RpdmUgY29udGV4dCB0byBpbnRlcmplY3QgdGhlIHByZWVtcHRpb24g cmVxdWVzdCwKKwkgKiBpLmUuIHdlIHdpbGwgcmV0cmlnZ2VyIHByZWVtcHRpb24gZm9sbG93aW5n IHRoZSBhY2sgaW4gY2FzZQorCSAqIG9mIHRyb3VibGUuCisJICovCisJbGFzdCA9IGxhc3RfYWN0 aXZlKGV4ZWNsaXN0cyk7CiAJaWYgKGxhc3QpIHsKLQkJLyoKLQkJICogRG9uJ3QgcmVzdWJtaXQg b3Igc3dpdGNoIHVudGlsIGFsbCBvdXRzdGFuZGluZwotCQkgKiBwcmVlbXB0aW9ucyAobGl0ZS1y ZXN0b3JlKSBhcmUgc2Vlbi4gVGhlbiB3ZQotCQkgKiBrbm93IHRoZSBuZXh0IHByZWVtcHRpb24g c3RhdHVzIHdlIHNlZSBjb3JyZXNwb25kcwotCQkgKiB0byB0aGlzIEVMU1AgdXBkYXRlLgotCQkg Ki8KLQkJR0VNX0JVR19PTighZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsCi0JCQkJCQlF WEVDTElTVFNfQUNUSVZFX1VTRVIpKTsKLQkJR0VNX0JVR19PTighcG9ydF9jb3VudCgmcG9ydFsw XSkpOwotCi0JCS8qCi0JCSAqIElmIHdlIHdyaXRlIHRvIEVMU1AgYSBzZWNvbmQgdGltZSBiZWZv cmUgdGhlIEhXIGhhcyBoYWQKLQkJICogYSBjaGFuY2UgdG8gcmVzcG9uZCB0byB0aGUgcHJldmlv dXMgd3JpdGUsIHdlIGNhbiBjb25mdXNlCi0JCSAqIHRoZSBIVyBhbmQgaGl0ICJ1bmRlZmluZWQg YmVoYXZpb3VyIi4gQWZ0ZXIgd3JpdGluZyB0byBFTFNQLAotCQkgKiB3ZSBtdXN0IHRoZW4gd2Fp dCB1bnRpbCB3ZSBzZWUgYSBjb250ZXh0LXN3aXRjaCBldmVudCBmcm9tCi0JCSAqIHRoZSBIVyB0 byBpbmRpY2F0ZSB0aGF0IGl0IGhhcyBoYWQgYSBjaGFuY2UgdG8gcmVzcG9uZC4KLQkJICovCi0J CWlmICghZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfSFdB Q0spKQotCQkJcmV0dXJuOwotCiAJCWlmIChuZWVkX3ByZWVtcHQoZW5naW5lLCBsYXN0LCByYikp IHsKLQkJCWluamVjdF9wcmVlbXB0X2NvbnRleHQoZW5naW5lKTsKLQkJCXJldHVybjsKLQkJfQor CQkJR0VNX1RSQUNFKCJwcmVlbXB0aW5nIGxhc3Q9JWxseDolbGxkLCBwcmlvPSVkLCBoaW50PSVk XG4iLAorCQkJCSAgbGFzdC0+ZmVuY2UuY29udGV4dCwKKwkJCQkgIGxhc3QtPmZlbmNlLnNlcW5v LAorCQkJCSAgbGFzdC0+c2NoZWQuYXR0ci5wcmlvcml0eSwKKwkJCQkgIGV4ZWNsaXN0cy0+cXVl dWVfcHJpb3JpdHlfaGludCk7CisJCQkvKgorCQkJICogRG9uJ3QgbGV0IHRoZSBSSU5HX0hFQUQg YWR2YW5jZSBwYXN0IHRoZSBicmVhZGNydW1iCisJCQkgKiBhcyB3ZSB1bndpbmQgKGFuZCB1bnRp bCB3ZSByZXN1Ym1pdCkgc28gdGhhdCB3ZSBkbworCQkJICogbm90IGFjY2lkZW50YWxseSB0ZWxs IGl0IHRvIGdvIGJhY2t3YXJkcy4KKwkJCSAqLworCQkJcmluZ19zdXNwZW5kKGVuZ2luZSkgPSAx OwogCi0JCS8qCi0JCSAqIEluIHRoZW9yeSwgd2UgY291bGQgY29hbGVzY2UgbW9yZSByZXF1ZXN0 cyBvbnRvCi0JCSAqIHRoZSBzZWNvbmQgcG9ydCAodGhlIGZpcnN0IHBvcnQgaXMgYWN0aXZlLCB3 aXRoCi0JCSAqIG5vIHByZWVtcHRpb25zIHBlbmRpbmcpLiBIb3dldmVyLCB0aGF0IG1lYW5zIHdl Ci0JCSAqIHRoZW4gaGF2ZSB0byBkZWFsIHdpdGggdGhlIHBvc3NpYmxlIGxpdGUtcmVzdG9yZQot CQkgKiBvZiB0aGUgc2Vjb25kIHBvcnQgKGFzIHdlIHN1Ym1pdCB0aGUgRUxTUCwgdGhlcmUKLQkJ ICogbWF5IGJlIGEgY29udGV4dC1zd2l0Y2gpIGJ1dCBhbHNvIHdlIG1heSBjb21wbGV0ZQotCQkg KiB0aGUgcmVzdWJtaXNzaW9uIGJlZm9yZSB0aGUgY29udGV4dC1zd2l0Y2guIEVyZ28sCi0JCSAq IGNvYWxlc2Npbmcgb250byB0aGUgc2Vjb25kIHBvcnQgd2lsbCBjYXVzZSBhCi0JCSAqIHByZWVt cHRpb24gZXZlbnQsIGJ1dCB3ZSBjYW5ub3QgcHJlZGljdCB3aGV0aGVyCi0JCSAqIHRoYXQgd2ls bCBhZmZlY3QgcG9ydFswXSBvciBwb3J0WzFdLgotCQkgKgotCQkgKiBJZiB0aGUgc2Vjb25kIHBv cnQgaXMgYWxyZWFkeSBhY3RpdmUsIHdlIGNhbiB3YWl0Ci0JCSAqIHVudGlsIHRoZSBuZXh0IGNv bnRleHQtc3dpdGNoIGJlZm9yZSBjb250ZW1wbGF0aW5nCi0JCSAqIG5ldyByZXF1ZXN0cy4gVGhl IEdQVSB3aWxsIGJlIGJ1c3kgYW5kIHdlIHNob3VsZCBiZQotCQkgKiBhYmxlIHRvIHJlc3VibWl0 IHRoZSBuZXcgRUxTUCBiZWZvcmUgaXQgaWRsZXMsCi0JCSAqIGF2b2lkaW5nIHBpcGVsaW5lIGJ1 YmJsZXMgKG1vbWVudGFyeSBwYXVzZXMgd2hlcmUKLQkJICogdGhlIGRyaXZlciBpcyB1bmFibGUg dG8ga2VlcCB1cCB0aGUgc3VwcGx5IG9mIG5ldwotCQkgKiB3b3JrKS4gSG93ZXZlciwgd2UgaGF2 ZSB0byBkb3VibGUgY2hlY2sgdGhhdCB0aGUKLQkJICogcHJpb3JpdGllcyBvZiB0aGUgcG9ydHMg aGF2ZW4ndCBiZWVuIHN3aXRjaC4KLQkJICovCi0JCWlmIChwb3J0X2NvdW50KCZwb3J0WzFdKSkK LQkJCXJldHVybjsKKwkJCS8qCisJCQkgKiBJZiB3ZSBuZWVkIHRvIHJldHVybiB0byB0aGUgcHJl ZW1wdGVkIGNvbnRleHQsIHdlCisJCQkgKiBuZWVkIHRvIHNraXAgdGhlIGxpdGUtcmVzdG9yZSBh bmQgZm9yY2UgaXQgdG8KKwkJCSAqIHJlbG9hZCB0aGUgUklOR19UQUlMLiBPdGhlcndpc2UsIHRo ZSBIVyBoYXMgYQorCQkJICogdGVuZGVuY3kgdG8gaWdub3JlIHVzIHJld2luZGluZyB0aGUgVEFJ TCB0byB0aGUKKwkJCSAqIGVuZCBvZiBhbiBlYXJsaWVyIHJlcXVlc3QuCisJCQkgKi8KKwkJCWxh c3QtPmh3X2NvbnRleHQtPmxyY19kZXNjIHw9IENUWF9ERVNDX0ZPUkNFX1JFU1RPUkU7CiAKLQkJ LyoKLQkJICogV2FJZGxlTGl0ZVJlc3RvcmU6YmR3LHNrbAotCQkgKiBBcHBseSB0aGUgd2EgTk9P UHMgdG8gcHJldmVudAotCQkgKiByaW5nOkhFQUQgPT0gcnE6VEFJTCBhcyB3ZSByZXN1Ym1pdCB0 aGUKLQkJICogcmVxdWVzdC4gU2VlIGdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWIoKSBmb3IKLQkJ ICogd2hlcmUgd2UgcHJlcGFyZSB0aGUgcGFkZGluZyBhZnRlciB0aGUKLQkJICogZW5kIG9mIHRo ZSByZXF1ZXN0LgotCQkgKi8KLQkJbGFzdC0+dGFpbCA9IGxhc3QtPndhX3RhaWw7CisJCQkvKgor CQkJICogTm90ZSB0aGF0IHdlIGhhdmUgbm90IHN0b3BwZWQgdGhlIEdQVSBhdCB0aGlzIHBvaW50 LAorCQkJICogc28gd2UgYXJlIHVud2luZGluZyB0aGUgaW5jb21wbGV0ZSByZXF1ZXN0cyBhcyB0 aGV5CisJCQkgKiByZW1haW4gaW5mbGlnaHQgYW5kIHNvIGJ5IHRoZSB0aW1lIHdlIGRvIGNvbXBs ZXRlCisJCQkgKiB0aGUgcHJlZW1wdGlvbiwgc29tZSBvZiB0aGUgdW53b3VuZCByZXF1ZXN0cyBt YXkKKwkJCSAqIGNvbXBsZXRlIQorCQkJICovCisJCQlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVl c3RzKGVuZ2luZSk7CisJCQlsYXN0ID0gTlVMTDsKKwkJfSBlbHNlIHsKKwkJCS8qCisJCQkgKiBP dGhlcndpc2UgaWYgd2UgYWxyZWFkeSBoYXZlIGEgcmVxdWVzdCBwZW5kaW5nCisJCQkgKiBmb3Ig ZXhlY3V0aW9uIGFmdGVyIHRoZSBjdXJyZW50IG9uZSwgd2UgY2FuCisJCQkgKiBqdXN0IHdhaXQg dW50aWwgdGhlIG5leHQgQ1MgZXZlbnQgYmVmb3JlCisJCQkgKiBxdWV1aW5nIG1vcmUuIEluIGVp dGhlciBjYXNlIHdlIHdpbGwgZm9yY2UgYQorCQkJICogbGl0ZS1yZXN0b3JlIHByZWVtcHRpb24g ZXZlbnQsIGJ1dCBpZiB3ZSB3YWl0CisJCQkgKiB3ZSBob3BlZnVsbHkgY29hbGVzY2Ugc2V2ZXJh bCB1cGRhdGVzIGludG8gYSBzaW5nbGUKKwkJCSAqIHN1Ym1pc3Npb24uCisJCQkgKi8KKwkJCWlm ICghbGlzdF9pc19sYXN0KCZsYXN0LT5zY2hlZC5saW5rLAorCQkJCQkgICZlbmdpbmUtPmFjdGl2 ZS5yZXF1ZXN0cykpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQkvKgorCQkJICogV2FJZGxlTGl0 ZVJlc3RvcmU6YmR3LHNrbAorCQkJICogQXBwbHkgdGhlIHdhIE5PT1BzIHRvIHByZXZlbnQKKwkJ CSAqIHJpbmc6SEVBRCA9PSBycTpUQUlMIGFzIHdlIHJlc3VibWl0IHRoZQorCQkJICogcmVxdWVz dC4gU2VlIGdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWIoKSBmb3IKKwkJCSAqIHdoZXJlIHdlIHBy ZXBhcmUgdGhlIHBhZGRpbmcgYWZ0ZXIgdGhlCisJCQkgKiBlbmQgb2YgdGhlIHJlcXVlc3QuCisJ CQkgKi8KKwkJCWxhc3QtPnRhaWwgPSBsYXN0LT53YV90YWlsOworCQl9CiAJfQogCiAJd2hpbGUg KHJiKSB7IC8qIFhYWCB2aXJ0dWFsIGlzIGFsd2F5cyB0YWtpbmcgcHJlY2VkZW5jZSAqLwpAQCAt OTMyLDcgKzkzNiw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJaWYgKHJxX3ByaW8ocnEpID49IHF1ZXVlX3ByaW8oZXhl Y2xpc3RzKSkgewogCQkJaWYgKGxhc3QgJiYgIWNhbl9tZXJnZV9ycShsYXN0LCBycSkpIHsKIAkJ CQlzcGluX3VubG9jaygmdmUtPmJhc2UuYWN0aXZlLmxvY2spOwotCQkJCXJldHVybjsgLyogbGVh dmUgdGhpcyBycSBmb3IgYW5vdGhlciBlbmdpbmUgKi8KKwkJCQlyZXR1cm4gZmFsc2U7IC8qIGxl YXZlIHRoaXMgZm9yIGFub3RoZXIgKi8KIAkJCX0KIAogCQkJR0VNX0JVR19PTihycS0+ZW5naW5l ICE9ICZ2ZS0+YmFzZSk7CkBAIC05NzAsOSArOTc0LDEwIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCX0KIAogCQkJX19p OTE1X3JlcXVlc3Rfc3VibWl0KHJxKTsKLQkJCXRyYWNlX2k5MTVfcmVxdWVzdF9pbihycSwgcG9y dF9pbmRleChwb3J0LCBleGVjbGlzdHMpKTsKLQkJCXN1Ym1pdCA9IHRydWU7Ci0JCQlsYXN0ID0g cnE7CisJCQlpZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7CisJCQkJc3VibWl0ID0g dHJ1ZTsKKwkJCQlsYXN0ID0gcnE7CisJCQl9CiAJCX0KIAogCQlzcGluX3VubG9jaygmdmUtPmJh c2UuYWN0aXZlLmxvY2spOwpAQCAtOTg1LDYgKzk5MCw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJaW50IGk7CiAKIAkJ cHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCwgaSkgeworCQkJaWYg KGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJCWdvdG8gc2tpcDsKKwogCQkJLyoKIAkJ CSAqIENhbiB3ZSBjb21iaW5lIHRoaXMgcmVxdWVzdCB3aXRoIHRoZSBjdXJyZW50IHBvcnQ/CiAJ CQkgKiBJdCBoYXMgdG8gYmUgdGhlIHNhbWUgY29udGV4dC9yaW5nYnVmZmVyIGFuZCBub3QKQEAg LTEwMjQsMTkgKzEwMzIsMTQgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJCSAgICBjdHhfc2luZ2xlX3BvcnRfc3VibWlz c2lvbihycS0+aHdfY29udGV4dCkpCiAJCQkJCWdvdG8gZG9uZTsKIAotCi0JCQkJaWYgKHN1Ym1p dCkKLQkJCQkJcG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7CisJCQkJKnBvcnQgPSBleGVjbGlzdHNf c2NoZWR1bGVfaW4obGFzdCwgcG9ydCAtIGV4ZWNsaXN0cy0+cGVuZGluZyk7CiAJCQkJcG9ydCsr OwotCi0JCQkJR0VNX0JVR19PTihwb3J0X2lzc2V0KHBvcnQpKTsKIAkJCX0KIAotCQkJX19pOTE1 X3JlcXVlc3Rfc3VibWl0KHJxKTsKLQkJCXRyYWNlX2k5MTVfcmVxdWVzdF9pbihycSwgcG9ydF9p bmRleChwb3J0LCBleGVjbGlzdHMpKTsKLQogCQkJbGFzdCA9IHJxOwogCQkJc3VibWl0ID0gdHJ1 ZTsKK3NraXA6CisJCQlfX2k5MTVfcmVxdWVzdF9zdWJtaXQocnEpOwogCQl9CiAKIAkJcmJfZXJh c2VfY2FjaGVkKCZwLT5ub2RlLCAmZXhlY2xpc3RzLT5xdWV1ZSk7CkBAIC0xMDYxLDU0ICsxMDY0 LDMxIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAkgKiBpbnRlcnJ1cHQgZm9yIHNlY29uZGFyeSBwb3J0cykuCiAJICovCiAJ ZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gcXVldWVfcHJpbyhleGVjbGlzdHMpOwor CUdFTV9UUkFDRSgiJXM6IHF1ZXVlX3ByaW9yaXR5X2hpbnQ6JWQsIHN1Ym1pdDolZFxuIiwKKwkJ ICBlbmdpbmUtPm5hbWUsIGV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCwgc3VibWl0KTsK IAogCWlmIChzdWJtaXQpIHsKLQkJcG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7CisJCSpwb3J0ID0g ZXhlY2xpc3RzX3NjaGVkdWxlX2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPnBlbmRpbmcpOwor CQltZW1zZXQocG9ydCArIDEsIDAsIChsYXN0X3BvcnQgLSBwb3J0KSAqIHNpemVvZigqcG9ydCkp OwogCQlleGVjbGlzdHNfc3VibWl0X3BvcnRzKGVuZ2luZSk7CiAJfQogCi0JLyogV2UgbXVzdCBh bHdheXMga2VlcCB0aGUgYmVhc3QgZmVkIGlmIHdlIGhhdmUgd29yayBwaWxlZCB1cCAqLwotCUdF TV9CVUdfT04ocmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnF1ZXVlKSAmJgotCQkgICAhcG9y dF9pc3NldChleGVjbGlzdHMtPnBvcnQpKTsKLQotCS8qIFJlLWV2YWx1YXRlIHRoZSBleGVjdXRp bmcgY29udGV4dCBzZXR1cCBhZnRlciBlYWNoIHByZWVtcHRpdmUga2ljayAqLwotCWlmIChsYXN0 KQotCQlleGVjbGlzdHNfdXNlcl9iZWdpbihleGVjbGlzdHMsIGV4ZWNsaXN0cy0+cG9ydCk7Ci0K LQkvKiBJZiB0aGUgZW5naW5lIGlzIG5vdyBpZGxlLCBzbyBzaG91bGQgYmUgdGhlIGZsYWc7IGFu ZCB2aWNlIHZlcnNhLiAqLwotCUdFTV9CVUdfT04oZXhlY2xpc3RzX2lzX2FjdGl2ZSgmZW5naW5l LT5leGVjbGlzdHMsCi0JCQkJICAgICAgIEVYRUNMSVNUU19BQ1RJVkVfVVNFUikgPT0KLQkJICAg IXBvcnRfaXNzZXQoZW5naW5lLT5leGVjbGlzdHMucG9ydCkpOworCXJldHVybiBzdWJtaXQ7CiB9 CiAKIHZvaWQKIGV4ZWNsaXN0c19jYW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cykKIHsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9y dCAqcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKLQl1bnNpZ25lZCBpbnQgbnVtX3BvcnRzID0gZXhl Y2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOwotCi0Jd2hpbGUgKG51bV9wb3J0cy0tICYmIHBv cnRfaXNzZXQocG9ydCkpIHsKLQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBwb3J0X3JlcXVl c3QocG9ydCk7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqIGNvbnN0ICpwb3J0LCAqcnE7CiAKLQkJ R0VNX1RSQUNFKCIlczpwb3J0JXUgZmVuY2UgJWxseDolbGxkLCAoY3VycmVudCAlZClcbiIsCi0J CQkgIHJxLT5lbmdpbmUtPm5hbWUsCi0JCQkgICh1bnNpZ25lZCBpbnQpKHBvcnQgLSBleGVjbGlz dHMtPnBvcnQpLAotCQkJICBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vLAotCQkJ ICBod3NwX3NlcW5vKHJxKSk7CisJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5wZW5kaW5nOyAocnEg PSAqcG9ydCk7IHBvcnQrKykKKwkJZXhlY2xpc3RzX3NjaGVkdWxlX291dChycSk7CisJbWVtc2V0 KGV4ZWNsaXN0cy0+cGVuZGluZywgMCwgc2l6ZW9mKGV4ZWNsaXN0cy0+cGVuZGluZykpOwogCi0J CUdFTV9CVUdfT04oIWV4ZWNsaXN0cy0+YWN0aXZlKTsKLQkJZXhlY2xpc3RzX2NvbnRleHRfc2No ZWR1bGVfb3V0KHJxLAotCQkJCQkgICAgICAgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkgPwot CQkJCQkgICAgICAgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9PVVQgOgotCQkJCQkgICAgICAgSU5U RUxfQ09OVEVYVF9TQ0hFRFVMRV9QUkVFTVBURUQpOwotCi0JCWk5MTVfcmVxdWVzdF9wdXQocnEp OwotCi0JCW1lbXNldChwb3J0LCAwLCBzaXplb2YoKnBvcnQpKTsKLQkJcG9ydCsrOwotCX0KLQot CWV4ZWNsaXN0c19jbGVhcl9hbGxfYWN0aXZlKGV4ZWNsaXN0cyk7CisJZm9yIChwb3J0ID0gZXhl Y2xpc3RzLT5hY3RpdmU7IChycSA9ICpwb3J0KTsgcG9ydCsrKQorCQlleGVjbGlzdHNfc2NoZWR1 bGVfb3V0KHJxKTsKKwlleGVjbGlzdHMtPmFjdGl2ZSA9CisJCW1lbXNldChleGVjbGlzdHMtPmlu ZmxpZ2h0LCAwLCBzaXplb2YoZXhlY2xpc3RzLT5pbmZsaWdodCkpOwogfQogCiBzdGF0aWMgaW5s aW5lIHZvaWQKQEAgLTExNzAsNyArMTE1MCw2IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYW5j ZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJLyogQ2FuY2Vs IHRoZSByZXF1ZXN0cyBvbiB0aGUgSFcgYW5kIGNsZWFyIHRoZSBFTFNQIHRyYWNrZXIuICovCiAJ ZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7Ci0JZXhlY2xpc3RzX3Vz ZXJfZW5kKGV4ZWNsaXN0cyk7CiAKIAkvKiBNYXJrIGFsbCBleGVjdXRpbmcgcmVxdWVzdHMgYXMg c2tpcHBlZC4gKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5naW5lLT5hY3RpdmUucmVx dWVzdHMsIHNjaGVkLmxpbmspIHsKQEAgLTEyMTcsNyArMTE5Niw2IEBAIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19jYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKIAlleGVjbGlzdHMt PnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7Ci0JR0VNX0JVR19PTihwb3J0X2lzc2V0KGV4ZWNsaXN0 cy0+cG9ydCkpOwogCiAJR0VNX0JVR19PTihfX3Rhc2tsZXRfaXNfZW5hYmxlZCgmZXhlY2xpc3Rz LT50YXNrbGV0KSk7CiAJZXhlY2xpc3RzLT50YXNrbGV0LmZ1bmMgPSBub3Bfc3VibWlzc2lvbl90 YXNrbGV0OwpAQCAtMTIzNCw3ICsxMjEyLDYgQEAgcmVzZXRfaW5fcHJvZ3Jlc3MoY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cykKIHN0YXRpYyB2b2lkIHByb2Nl c3NfY3NiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsK LQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKIAljb25zdCB1 MzIgKiBjb25zdCBidWYgPSBleGVjbGlzdHMtPmNzYl9zdGF0dXM7CiAJdTggaGVhZCwgdGFpbDsK IApAQCAtMTI2Nyw5ICsxMjQ0LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJtYigpOwogCiAJZG8gewotCQlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycTsKIAkJdW5zaWduZWQgaW50IHN0YXR1czsKLQkJdW5zaWduZWQgaW50IGNvdW50 OwogCiAJCWlmICgrK2hlYWQgPT0gR0VOOF9DU0JfRU5UUklFUykKIAkJCWhlYWQgPSAwOwpAQCAt MTI5Miw2OCArMTI2NywzNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2NzYihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJCSAqIHN0YXR1cyBub3RpZmllci4KIAkJICovCiAKLQkJR0VN X1RSQUNFKCIlcyBjc2JbJWRdOiBzdGF0dXM9MHglMDh4OjB4JTA4eCwgYWN0aXZlPTB4JXhcbiIs CisJCUdFTV9UUkFDRSgiJXMgY3NiWyVkXTogc3RhdHVzPTB4JTA4eDoweCUwOHhcbiIsCiAJCQkg IGVuZ2luZS0+bmFtZSwgaGVhZCwKLQkJCSAgYnVmWzIgKiBoZWFkICsgMF0sIGJ1ZlsyICogaGVh ZCArIDFdLAotCQkJICBleGVjbGlzdHMtPmFjdGl2ZSk7CisJCQkgIGJ1ZlsyICogaGVhZCArIDBd LCBidWZbMiAqIGhlYWQgKyAxXSk7CiAKIAkJc3RhdHVzID0gYnVmWzIgKiBoZWFkXTsKLQkJaWYg KHN0YXR1cyAmIChHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUgfAotCQkJICAgICAgR0VOOF9D VFhfU1RBVFVTX1BSRUVNUFRFRCkpCi0JCQlleGVjbGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMs Ci0JCQkJCSAgICAgRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Ci0JCWlmIChzdGF0dXMgJiBHRU44 X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpCi0JCQlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNs aXN0cywKLQkJCQkJICAgICAgIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spOwotCi0JCWlmICghKHN0 YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19DT01QTEVURURfTUFTSykpCi0JCQljb250aW51ZTsKLQot CQkvKiBXZSBzaG91bGQgbmV2ZXIgZ2V0IGEgQ09NUExFVEVEIHwgSURMRV9BQ1RJVkUhICovCi0J CUdFTV9CVUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0lETEVfQUNUSVZFKTsKLQotCQlp ZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFICYmCi0JCSAgICBidWZbMipoZWFk ICsgMV0gPT0gZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cykgewotCQkJR0VNX1RS QUNFKCIlcyBwcmVlbXB0LWlkbGVcbiIsIGVuZ2luZS0+bmFtZSk7Ci0JCQljb21wbGV0ZV9wcmVl bXB0X2NvbnRleHQoZXhlY2xpc3RzKTsKLQkJCWNvbnRpbnVlOwotCQl9CisJCWlmIChzdGF0dXMg JiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpIHsKK3Byb21vdGU6CisJCQlHRU1fQlVHX09O KCFhc3NlcnRfcGVuZGluZ192YWxpZChleGVjbGlzdHMsICJwcm9tb3RlIikpOworCQkJZXhlY2xp c3RzLT5hY3RpdmUgPQorCQkJCW1lbWNweShleGVjbGlzdHMtPmluZmxpZ2h0LAorCQkJCSAgICAg ICBleGVjbGlzdHMtPnBlbmRpbmcsCisJCQkJICAgICAgIGV4ZWNsaXN0c19udW1fcG9ydHMoZXhl Y2xpc3RzKSAqCisJCQkJICAgICAgIHNpemVvZigqZXhlY2xpc3RzLT5wZW5kaW5nKSk7CisJCQll eGVjbGlzdHMtPnBlbmRpbmdbMF0gPSBOVUxMOwogCi0JCWlmIChzdGF0dXMgJiBHRU44X0NUWF9T VEFUVVNfUFJFRU1QVEVEICYmCi0JCSAgICBleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywK LQkJCQkJRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSkKLQkJCWNvbnRpbnVlOworCQkJaWYgKCFp bmplY3RfcHJlZW1wdF9oYW5nKGV4ZWNsaXN0cykpCisJCQkJcmluZ19zdXNwZW5kKGVuZ2luZSkg PSAwOworCQl9IGVsc2UgaWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpIHsK KwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKiBjb25zdCAqcG9ydCA9IGV4ZWNsaXN0cy0+YWN0aXZl OwogCi0JCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLAotCQkJCQkJ RVhFQ0xJU1RTX0FDVElWRV9VU0VSKSk7CisJCQl0cmFjZV9wb3J0cyhleGVjbGlzdHMsICJwcmVl bXB0ZWQiLCBleGVjbGlzdHMtPmFjdGl2ZSk7CiAKLQkJcnEgPSBwb3J0X3VucGFjayhwb3J0LCAm Y291bnQpOwotCQlHRU1fVFJBQ0UoIiVzIG91dFswXTogY3R4PSVkLiVkLCBmZW5jZSAlbGx4OiVs bGQgKGN1cnJlbnQgJWQpLCBwcmlvPSVkXG4iLAotCQkJICBlbmdpbmUtPm5hbWUsCi0JCQkgIHBv cnQtPmNvbnRleHRfaWQsIGNvdW50LAotCQkJICBycSA/IHJxLT5mZW5jZS5jb250ZXh0IDogMCwK LQkJCSAgcnEgPyBycS0+ZmVuY2Uuc2Vxbm8gOiAwLAotCQkJICBycSA/IGh3c3Bfc2Vxbm8ocnEp IDogMCwKLQkJCSAgcnEgPyBycV9wcmlvKHJxKSA6IDApOworCQkJd2hpbGUgKCpwb3J0KQorCQkJ CWV4ZWNsaXN0c19zY2hlZHVsZV9vdXQoKnBvcnQrKyk7CiAKLQkJLyogQ2hlY2sgdGhlIGNvbnRl eHQvZGVzYyBpZCBmb3IgdGhpcyBldmVudCBtYXRjaGVzICovCi0JCUdFTV9ERUJVR19CVUdfT04o YnVmWzIgKiBoZWFkICsgMV0gIT0gcG9ydC0+Y29udGV4dF9pZCk7CisJCQlnb3RvIHByb21vdGU7 CisJCX0gZWxzZSBpZiAoKmV4ZWNsaXN0cy0+YWN0aXZlKSB7CisJCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSA9ICpleGVjbGlzdHMtPmFjdGl2ZSsrOwogCi0JCUdFTV9CVUdfT04oY291bnQgPT0g MCk7Ci0JCWlmICgtLWNvdW50ID09IDApIHsKLQkJCS8qCi0JCQkgKiBPbiB0aGUgZmluYWwgZXZl bnQgY29ycmVzcG9uZGluZyB0byB0aGUKLQkJCSAqIHN1Ym1pc3Npb24gb2YgdGhpcyBjb250ZXh0 LCB3ZSBleHBlY3QgZWl0aGVyCi0JCQkgKiBhbiBlbGVtZW50LXN3aXRjaCBldmVudCBvciBhIGNv bXBsZXRpb24KLQkJCSAqIGV2ZW50IChhbmQgb24gY29tcGxldGlvbiwgdGhlIGFjdGl2ZS1pZGxl Ci0JCQkgKiBtYXJrZXIpLiBObyBtb3JlIHByZWVtcHRpb25zLCBsaXRlLXJlc3RvcmUKLQkJCSAq IG9yIG90aGVyd2lzZS4KLQkJCSAqLwotCQkJR0VNX0JVR19PTihzdGF0dXMgJiBHRU44X0NUWF9T VEFUVVNfUFJFRU1QVEVEKTsKLQkJCUdFTV9CVUdfT04ocG9ydF9pc3NldCgmcG9ydFsxXSkgJiYK LQkJCQkgICAhKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19FTEVNRU5UX1NXSVRDSCkpOwotCQkJ R0VNX0JVR19PTighcG9ydF9pc3NldCgmcG9ydFsxXSkgJiYKLQkJCQkgICAhKHN0YXR1cyAmIEdF TjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSkpOworCQkJdHJhY2VfcG9ydHMoZXhlY2xpc3RzLCAi Y29tcGxldGVkIiwKKwkJCQkgICAgZXhlY2xpc3RzLT5hY3RpdmUgLSAxKTsKIAogCQkJLyoKIAkJ CSAqIFdlIHJlbHkgb24gdGhlIGhhcmR3YXJlIGJlaW5nIHN0cm9uZ2x5CkBAIC0xMzYyLDIxICsx MzA2LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3NiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkJCSAqIHVzZXIgaW50ZXJydXB0IGFuZCBDU0IgaXMgcHJvY2Vzc2VkLgogCQkJ ICovCiAJCQlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSk7CisJCQlleGVj bGlzdHNfc2NoZWR1bGVfb3V0KHJxKTsKIAotCQkJZXhlY2xpc3RzX2NvbnRleHRfc2NoZWR1bGVf b3V0KHJxLAotCQkJCQkJICAgICAgIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfT1VUKTsKLQkJCWk5 MTVfcmVxdWVzdF9wdXQocnEpOwotCi0JCQlHRU1fVFJBQ0UoIiVzIGNvbXBsZXRlZCBjdHg9JWRc biIsCi0JCQkJICBlbmdpbmUtPm5hbWUsIHBvcnQtPmNvbnRleHRfaWQpOwotCi0JCQlwb3J0ID0g ZXhlY2xpc3RzX3BvcnRfY29tcGxldGUoZXhlY2xpc3RzLCBwb3J0KTsKLQkJCWlmIChwb3J0X2lz c2V0KHBvcnQpKQotCQkJCWV4ZWNsaXN0c191c2VyX2JlZ2luKGV4ZWNsaXN0cywgcG9ydCk7Ci0J CQllbHNlCi0JCQkJZXhlY2xpc3RzX3VzZXJfZW5kKGV4ZWNsaXN0cyk7Ci0JCX0gZWxzZSB7Ci0J CQlwb3J0X3NldChwb3J0LCBwb3J0X3BhY2socnEsIGNvdW50KSk7CisJCQlHRU1fQlVHX09OKGV4 ZWNsaXN0cy0+YWN0aXZlIC0gZXhlY2xpc3RzLT5pbmZsaWdodCA+CisJCQkJICAgZXhlY2xpc3Rz X251bV9wb3J0cyhleGVjbGlzdHMpKTsKIAkJfQogCX0gd2hpbGUgKGhlYWQgIT0gdGFpbCk7CiAK QEAgLTEzOTgsMTEgKzEzMzEsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19zdWJtaXNz aW9uX3Rhc2tsZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqY29uc3QgZW5naW5lKQogeworCWJv b2wgc3VibWl0OworCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT5hY3RpdmUubG9jayk7 CiAKLQlwcm9jZXNzX2NzYihlbmdpbmUpOwotCWlmICghZXhlY2xpc3RzX2lzX2FjdGl2ZSgmZW5n aW5lLT5leGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCkpCi0JCWV4ZWNsaXN0c19k ZXF1ZXVlKGVuZ2luZSk7CisJZG8geworCQlwcm9jZXNzX2NzYihlbmdpbmUpOworCisJCXN1Ym1p dCA9IGZhbHNlOworCQlpZiAoIWVuZ2luZS0+ZXhlY2xpc3RzLnBlbmRpbmdbMF0pCisJCQlzdWJt aXQgPSBleGVjbGlzdHNfZGVxdWV1ZShlbmdpbmUpOworCX0gd2hpbGUgKHN1Ym1pdCk7CiB9CiAK IC8qCkBAIC0xNDE0LDEwICsxMzUzLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pc3Np b25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq IGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwogCi0JR0VNX1RSQUNFKCIlcyBhd2FrZT89JWQsIGFjdGl2ZT0leFxuIiwK LQkJICBlbmdpbmUtPm5hbWUsCi0JCSAgISFlbmdpbmUtPmk5MTUtPmd0LmF3YWtlLAotCQkgIGVu Z2luZS0+ZXhlY2xpc3RzLmFjdGl2ZSk7CisJR0VNX1RSQUNFKCIlcyBhd2FrZT89JWRcbiIsIGVu Z2luZS0+bmFtZSwgISFlbmdpbmUtPmk5MTUtPmd0LmF3YWtlKTsKIAogCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7CiAJX19leGVjbGlzdHNfc3VibWlzc2lv bl90YXNrbGV0KGVuZ2luZSk7CkBAIC0xNDQ0LDE0ICsxMzgwLDYgQEAgc3RhdGljIHZvaWQgX19z dWJtaXRfcXVldWVfaW1tKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJdGFza2xl dF9oaV9zY2hlZHVsZSgmZXhlY2xpc3RzLT50YXNrbGV0KTsKIH0KIAotc3RhdGljIGJvb2wgaW5m bGlnaHQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKLQkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKLXsKLQljb25zdCBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICphY3RpdmUgPSBwb3J0X3JlcXVlc3QoZXhlY2xpc3RzLT5wb3J0KTsKLQotCXJl dHVybiBhY3RpdmUgJiYgYWN0aXZlLT5od19jb250ZXh0ID09IHJxLT5od19jb250ZXh0OwotfQot CiBzdGF0aWMgdm9pZCBzdWJtaXRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAogCQkJIGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewpAQCAtMTQ2Miw3ICsxMzkw LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0X3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAogCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IHJxX3ByaW8ocnEpOwog Ci0JaWYgKCFpbmZsaWdodChleGVjbGlzdHMsIHJxKSkKKwlpZiAoIWV4ZWNsaXN0c19pbmZsaWdo dChleGVjbGlzdHMsIHJxKSkKIAkJX19zdWJtaXRfcXVldWVfaW1tKGVuZ2luZSk7CiB9CiAKQEAg LTI0MTIsNiArMjM0MCwxOSBAQCBzdGF0aWMgdTMyICpnZW44X2VtaXRfd2FfdGFpbChzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgKmNzKQogCXJldHVybiBjczsKIH0KIAorc3RhdGlj IHUzMiAqZW1pdF9wcmVlbXB0X2J1c3l3YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Qs IHUzMiAqY3MpCit7CisJKmNzKysgPSBNSV9TRU1BUEhPUkVfV0FJVCB8CisJCU1JX1NFTUFQSE9S RV9HTE9CQUxfR1RUIHwKKwkJTUlfU0VNQVBIT1JFX1BPTEwgfAorCQlNSV9TRU1BUEhPUkVfU0FE X0VRX1NERDsKKwkqY3MrKyA9IDA7CisJKmNzKysgPSBpbnRlbF9od3NfcHJlZW1wdF9hZGRyZXNz KHJlcXVlc3QtPmVuZ2luZSk7CisJKmNzKysgPSAwOworCisJcmV0dXJuIGNzOworfQorCiBzdGF0 aWMgdTMyICpnZW44X2VtaXRfZmluaV9icmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJl cXVlc3QsIHUzMiAqY3MpCiB7CiAJY3MgPSBnZW44X2VtaXRfZ2d0dF93cml0ZShjcywKQEAgLTI0 MjYsNyArMjM2Nyw5IEBAIHN0YXRpYyB1MzIgKmdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWIoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpjcykKIAogCiAJKmNzKysgPSBNSV9VU0VS X0lOVEVSUlVQVDsKKwogCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEU7CisJ Y3MgPSBlbWl0X3ByZWVtcHRfYnVzeXdhaXQocmVxdWVzdCwgY3MpOwogCiAJcmVxdWVzdC0+dGFp bCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QsIGNzKTsKIAlhc3NlcnRfcmluZ190YWlsX3Zh bGlkKHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnRhaWwpOwpAQCAtMjQ1MSw3ICsyMzk0LDkgQEAg c3RhdGljIHUzMiAqZ2VuOF9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5MTVfcmVx dWVzdCAqcmVxdWVzdCwgdTMyICpjcykKIAkJCQkgICAgICBQSVBFX0NPTlRST0xfU1RPUkVfREFU QV9JTkRFWCk7CiAKIAkqY3MrKyA9IE1JX1VTRVJfSU5URVJSVVBUOworCiAJKmNzKysgPSBNSV9B UkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRTsKKwljcyA9IGVtaXRfcHJlZW1wdF9idXN5d2FpdChy ZXF1ZXN0LCBjcyk7CiAKIAlyZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVz dCwgY3MpOwogCWFzc2VydF9yaW5nX3RhaWxfdmFsaWQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+ dGFpbCk7CkBAIC0yNTI2LDcgKzI0NzEsNyBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19zZXRfZGVm YXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWVuZ2lu ZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7CiAJZW5naW5lLT5mbGFncyB8 PSBJOTE1X0VOR0lORV9TVVBQT1JUU19TVEFUUzsKLQlpZiAoZW5naW5lLT5wcmVlbXB0X2NvbnRl eHQpCisJaWYgKEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihlbmdpbmUtPmk5MTUpKQogCQll bmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOwogfQogCkBAIC0yNjI3 LDExICsyNTcyLDYgQEAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJCQlpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0VMU1AoZW5n aW5lKSk7CiAJfQogCi0JZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cyA9IH4wdTsK LQlpZiAoZW5naW5lLT5wcmVlbXB0X2NvbnRleHQpCi0JCWV4ZWNsaXN0cy0+cHJlZW1wdF9jb21w bGV0ZV9zdGF0dXMgPQotCQkJdXBwZXJfMzJfYml0cyhlbmdpbmUtPnByZWVtcHRfY29udGV4dC0+ bHJjX2Rlc2MpOwotCiAJZXhlY2xpc3RzLT5jc2Jfc3RhdHVzID0KIAkJJmVuZ2luZS0+c3RhdHVz X3BhZ2UuYWRkcltJOTE1X0hXU19DU0JfQlVGMF9JTkRFWF07CiAKQEAgLTMwMDMsMTEgKzI5NDMs NiBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAlpZiAo IWVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkKIAkJcmVnc1tDVFhfQ09OVEVYVF9DT05UUk9MICsgMV0g fD0KIAkJCV9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5I SUJJVCk7Ci0JaWYgKGNlLT5nZW1fY29udGV4dCA9PSBlbmdpbmUtPmk5MTUtPnByZWVtcHRfY29u dGV4dCAmJgotCSAgICBJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKQotCQlyZWdzW0NUWF9D T05URVhUX0NPTlRST0wgKyAxXSB8PQotCQkJX01BU0tFRF9CSVRfRU5BQkxFKENUWF9DVFJMX0VO R0lORV9DVFhfUkVTVE9SRV9JTkhJQklUIHwKLQkJCQkJICAgQ1RYX0NUUkxfRU5HSU5FX0NUWF9T QVZFX0lOSElCSVQpOwogCiBlcnJfdW5waW5fY3R4OgogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9t YXAoY3R4X29iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXgg NWNjNDdhMGM3ZWM3Li4zMWUxNmM3NTM4YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKQEAgLTEwMyw0MyArMTAzLDI4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfX2V4 ZWNsaXN0c19uZWVkX3ByZWVtcHQoaW50IHByaW8sIGludCBsYXN0KQogCXJldHVybiBwcmlvID4g bWF4KEk5MTVfUFJJT1JJVFlfTk9STUFMIC0gMSwgbGFzdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dm9pZAotZXhlY2xpc3RzX3NldF9hY3RpdmUoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMg KmV4ZWNsaXN0cywKLQkJICAgICB1bnNpZ25lZCBpbnQgYml0KQotewotCV9fc2V0X2JpdChiaXQs ICh1bnNpZ25lZCBsb25nICopJmV4ZWNsaXN0cy0+YWN0aXZlKTsKLX0KLQotc3RhdGljIGlubGlu ZSBib29sCi1leGVjbGlzdHNfc2V0X2FjdGl2ZV9vbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhl Y2xpc3RzICpleGVjbGlzdHMsCi0JCQkgIHVuc2lnbmVkIGludCBiaXQpCi17Ci0JcmV0dXJuICFf X3Rlc3RfYW5kX3NldF9iaXQoYml0LCAodW5zaWduZWQgbG9uZyAqKSZleGVjbGlzdHMtPmFjdGl2 ZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZAotZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzLAotCQkgICAgICAgdW5zaWduZWQg aW50IGJpdCkKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CitleGVjbGlzdHNfbnVtX3BvcnRz KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzKQog ewotCV9fY2xlYXJfYml0KGJpdCwgKHVuc2lnbmVkIGxvbmcgKikmZXhlY2xpc3RzLT5hY3RpdmUp OworCXJldHVybiBleGVjbGlzdHMtPnBvcnRfbWFzayArIDE7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dm9pZAotZXhlY2xpc3RzX2NsZWFyX2FsbF9hY3RpdmUoc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cykKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCitl eGVjbGlzdHNfYWN0aXZlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVj bGlzdHMpCiB7Ci0JZXhlY2xpc3RzLT5hY3RpdmUgPSAwOworCUdFTV9CVUdfT04oZXhlY2xpc3Rz LT5hY3RpdmUgLSBleGVjbGlzdHMtPmluZmxpZ2h0ID4KKwkJICAgZXhlY2xpc3RzX251bV9wb3J0 cyhleGVjbGlzdHMpKTsKKwlyZXR1cm4gUkVBRF9PTkNFKCpleGVjbGlzdHMtPmFjdGl2ZSk7CiB9 CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAotZXhlY2xpc3RzX2lzX2FjdGl2ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzLAotCQkgICAgdW5zaWduZWQgaW50IGJp dCkKK2V4ZWNsaXN0c19pbmZsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0 cyAqZXhlY2xpc3RzLAorCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKLQly ZXR1cm4gdGVzdF9iaXQoYml0LCAodW5zaWduZWQgbG9uZyAqKSZleGVjbGlzdHMtPmFjdGl2ZSk7 Ci19CisJY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqYWN0aXZlID0gZXhlY2xpc3RzX2FjdGl2 ZShleGVjbGlzdHMpOwogCi12b2lkIGV4ZWNsaXN0c191c2VyX2JlZ2luKHN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMsCi0JCQkgIGNvbnN0IHN0cnVjdCBleGVjbGlzdF9w b3J0ICpwb3J0KTsKLXZvaWQgZXhlY2xpc3RzX3VzZXJfZW5kKHN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICpleGVjbGlzdHMpOworCXJldHVybiBhY3RpdmUgJiYgYWN0aXZlLT5od19jb250 ZXh0ID09IHJxLT5od19jb250ZXh0OworfQogCiB2b2lkCiBleGVjbGlzdHNfY2FuY2VsX3BvcnRf cmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMp OwpAQCAtMTQ3LDI3ICsxMzIsNiBAQCBleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoc3Ry dWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpOwogdm9pZAogZXhl Y2xpc3RzX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhl Y2xpc3RzICpleGVjbGlzdHMpOwogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAotZXhlY2xp c3RzX251bV9wb3J0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0 IGV4ZWNsaXN0cykKLXsKLQlyZXR1cm4gZXhlY2xpc3RzLT5wb3J0X21hc2sgKyAxOwotfQotCi1z dGF0aWMgaW5saW5lIHN0cnVjdCBleGVjbGlzdF9wb3J0ICoKLWV4ZWNsaXN0c19wb3J0X2NvbXBs ZXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzLAotCQkJ c3RydWN0IGV4ZWNsaXN0X3BvcnQgKiBjb25zdCBwb3J0KQotewotCWNvbnN0IHVuc2lnbmVkIGlu dCBtID0gZXhlY2xpc3RzLT5wb3J0X21hc2s7Ci0KLQlHRU1fQlVHX09OKHBvcnRfaW5kZXgocG9y dCwgZXhlY2xpc3RzKSAhPSAwKTsKLQlHRU1fQlVHX09OKCFleGVjbGlzdHNfaXNfYWN0aXZlKGV4 ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9VU0VSKSk7Ci0KLQltZW1tb3ZlKHBvcnQsIHBvcnQg KyAxLCBtICogc2l6ZW9mKHN0cnVjdCBleGVjbGlzdF9wb3J0KSk7Ci0JbWVtc2V0KHBvcnQgKyBt LCAwLCBzaXplb2Yoc3RydWN0IGV4ZWNsaXN0X3BvcnQpKTsKLQotCXJldHVybiBwb3J0OwotfQot CiBzdGF0aWMgaW5saW5lIHUzMgogaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShjb25zdCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCByZWcpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKaW5kZXggZGU2MjZjNmEwMDNkLi43ZGFhMDI2OGY4YjMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKQEAgLTYyMyw3 ICs2MjMsNyBAQCBzdGF0aWMgaW50IGxpdmVfY2hhaW5fcHJlZW1wdCh2b2lkICphcmcpCiAJCWlm ICghaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGVuZ2luZSkpCiAJCQljb250aW51ZTsKIAot CQlmb3JfZWFjaF9wcmltZV9udW1iZXJfZnJvbShjb3VudCwgMSwgMzIpIHsgLyogbXVzdCBmaXQg cmluZyEgKi8KKwkJZm9yX2VhY2hfcHJpbWVfbnVtYmVyX2Zyb20oY291bnQsIDEsIDE2KSB7IC8q IG11c3QgZml0IHJpbmchICovCiAJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKIAogCQkJcnEg PSBpZ3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgmaGkuc3BpbiwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKaW5kZXggYjkxNGIwMGIyYmIzLi42NmZmMWE0 Y2IxZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2Vu Z2luZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j CkBAIC0yNjksNiArMjY5LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIAlpbnRlbF9lbmdpbmVfaW5pdF9hY3Rp dmUoJmVuZ2luZS0+YmFzZSwgRU5HSU5FX01PQ0spOwogCWludGVsX2VuZ2luZV9pbml0X2JyZWFk Y3J1bWJzKCZlbmdpbmUtPmJhc2UpOworCWludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KCZlbmdp bmUtPmJhc2UpOwogCiAJLyogZmFrZSBodyBxdWV1ZSAqLwogCXNwaW5fbG9ja19pbml0KCZlbmdp bmUtPmh3X2xvY2spOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZng=