From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v6] drm/i915: Emit to ringbuffer directly Date: Wed, 8 Feb 2017 18:04:20 +0000 Message-ID: <1486577060-29499-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20170208174928.GW11545@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id B18386E94F for ; Wed, 8 Feb 2017 18:04:33 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id o16so9472408wra.2 for ; Wed, 08 Feb 2017 10:04:33 -0800 (PST) In-Reply-To: <20170208174928.GW11545@nuc-i3427.alporthouse.com> 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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcmVt b3ZlcyB0aGUgdXNhZ2Ugb2YgaW50ZWxfcmluZ19lbWl0IGluIGZhdm91ciBvZgpkaXJlY3RseSB3 cml0aW5nIHRvIHRoZSByaW5nIGJ1ZmZlci4KCmludGVsX3JpbmdfZW1pdCB3YXMgcHJldmVudGlu ZyB0aGUgY29tcGlsZXIgZm9yIG9wdGltaXNpbmcKZmV0Y2ggYW5kIGluY3JlbWVudCBvZiB0aGUg Y3VycmVudCByaW5nIGJ1ZmZlciBwb2ludGVyIGFuZAp0aGVyZWZvcmUgZ2VuZXJhdGluZyB2ZXJ5 IHZlcmJvc2UgY29kZSBmb3IgZXZlcnkgd3JpdGUuCgpJdCBoYWQgbm8gdXNlZnVsIHB1cnBvc2Ug c2luY2UgYWxsIHJpbmdidWZmZXIgb3BlcmF0aW9ucwphcmUgc3RhcnRlZCBhbmQgZW5kZWQgd2l0 aCBpbnRlbF9yaW5nX2JlZ2luIGFuZAppbnRlbF9yaW5nX2FkdmFuY2UgcmVzcGVjdGl2ZWx5LCB3 aXRoIG5vIGJhaWwgb3V0IGluIHRoZQptaWRkbGUgcG9zc2libGUsIHNvIGl0IGlzIGZpbmUgdG8g aW5jcmVtZW50IHRoZSB0YWlsIGluCmludGVsX3JpbmdfYmVnaW4gYW5kIGxldCB0aGUgY29kZSBt YW5hZ2UgdGhlIHBvaW50ZXIKaXRzZWxmLgoKVXNlbGVzcyBpbnN0cnVjdGlvbiByZW1vdmFsIGFt b3VudHMgdG8gYXBwcm94aW1hdGVseQp0d28gYW5kIGhhbGYga2lsb2J5dGVzIG9mIHNhdmVkIHRl eHQgb24gbXkgYnVpbGQuCgpOb3Qgc3VyZSBpZiB0aGlzIGhhcyBhbnkgbWVhc3VyYWJsZSBwZXJm b3JtYW5jZQppbXBsaWNhdGlvbnMgYnV0IGV4ZWN1dGluZyBhIHRvbiBvZiB1c2VsZXNzIGluc3Ry dWN0aW9ucwpvbiBmYXN0IHBhdGhzIGNhbm5vdCBiZSBnb29kLgoKUGF0Y2ggaXMgbm90IGZ1bGx5 IHBvbGlzaGVkLCBidXQgaXQgY29tcGlsZXMgYW5kIHJ1bnMKb24gR2VuOSBhdCBsZWFzdC4KCnYy OgogKiBDaGFuZ2UgcmV0dXJuIGZyb20gaW50ZWxfcmluZ19iZWdpbiB0byBlcnJvciBwb2ludGVy IGJ5CiAgIHBvcHVsYXIgZGVtYW5kLgogKiBNb3ZlIHRhaWwgaW5jcmVtZW50IHRvIGludGVsX3Jp bmdfYWR2YW5jZSB0byBlbmFibGUgc29tZQogICBlcnJvciBjaGVja2luZy4KCnYzOgogKiBNb3Zl IHRhaWwgYWR2YW5jZSBiYWNrIGludG8gaW50ZWxfcmluZ19iZWdpbi4KICogUmViYXNlIGFuZCB0 aWR5LgoKdjQ6CiAqIENvbXBsZXRlIHJlYmFzZSBhZnRlciBhIGZldyBtb250aHMgc2luY2UgdjMu Cgp2NToKICogUmVtb3ZlIHVuZWNlc3NhcnkgY2FzdCBhbmQgZml4ICFkZWJ1ZyBjb21waWxlLiAo Q2hyaXMgV2lsc29uKQoKdjY6CiAqIE1ha2UgaW50ZWxfcmluZ19vZmZzZXQgdGFrZSByZXF1ZXN0 IGFzIHdlbGwuCiAqIEZpeCByZWNvcmRpbmcgb2YgcmVxdWVzdCBwb3N0Zml4IHBsdXMgYSBzcHJp bmtsZSBvZiBhc3NlcnRzLgogICAoQ2hyaXMgV2lsc29uKQoKU2lnbmVkLW9mZi1ieTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyAgICB8ICA3NiArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jIHwgIDQwICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgICAgICAgIHwgIDY5ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYyAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAg ICAgIHwgMTMyICsrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgICAgfCAxNjIgKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5j ICAgICAgICAgIHwgIDUxICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5j ICAgICAgIHwgIDc5ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMgICAgfCA0OTIgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAyNiArLQogMTAgZmlsZXMgY2hhbmdlZCwg NTI3IGluc2VydGlvbnMoKyksIDYxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNjgwMTA1NDIxYmI5Li40OTA3MGI3YWFkMzAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTU4NCwxMCArNTg0LDkgQEAg c3RhdGljIGlubGluZSBpbnQKIG1pX3NldF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3MpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcmVxLT5pOTE1OwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5n OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwogCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwotCXUzMiBmbGFncyA9IGh3X2ZsYWdzIHwgTUlfTU1fU1BBQ0Vf R1RUOworCXUzMiAqb3V0LCBmbGFncyA9IGh3X2ZsYWdzIHwgTUlfTU1fU1BBQ0VfR1RUOwogCWNv bnN0IGludCBudW1fcmluZ3MgPQogCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9hIG9uIGl2YisgaWYg c2lnbmFsbGluZyBmcm9tIG90aGVyIHJpbmdzICovCiAJCWk5MTUuc2VtYXBob3JlcyA/CkBAIC02 MTcsOTkgKzYxNiw5MiBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCiAJ CWxlbiArPSAyICsgKG51bV9yaW5ncyA/IDQqbnVtX3JpbmdzICsgNiA6IDApOwogCi0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIGxlbik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlv dXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgbGVuKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJl dHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKiBXYVByb2dyYW1NaUFyYk9uT2ZmQXJvdW5kTWlTZXRD b250ZXh0Oml2Yix2bHYsaHN3LGJkdyxjaHYgKi8KIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA3KSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJ U0FCTEUpOworCQkqb3V0KysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJU0FCTEU7CiAJCWlm IChudW1fcmluZ3MpIHsKIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAot CQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJCU1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9y aW5ncykpOworCQkJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKTsKIAkJ CWZvcl9lYWNoX2VuZ2luZShzaWduYWxsZXIsIGRldl9wcml2LCBpZCkgewogCQkJCWlmIChzaWdu YWxsZXIgPT0gZW5naW5lKQogCQkJCQljb250aW51ZTsKIAotCQkJCWludGVsX3JpbmdfZW1pdF9y ZWcocmluZywKLQkJCQkJCSAgICBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxlci0+bW1pb19iYXNlKSk7 Ci0JCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJCQlfTUFTS0VEX0JJVF9FTkFCTEUoR0VO Nl9QU01JX1NMRUVQX01TR19ESVNBQkxFKSk7CisJCQkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoCisJCQkJCSAgIFJJTkdfUFNNSV9DVEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2UpKTsKKwkJ CQkqb3V0KysgPSBfTUFTS0VEX0JJVF9FTkFCTEUoCisJCQkJCSBHRU42X1BTTUlfU0xFRVBfTVNH X0RJU0FCTEUpOwogCQkJfQogCQl9CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05P T1ApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TRVRfQ09OVEVYVCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsCi0JCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+Y3R4LT5lbmdpbmVbUkNTXS5z dGF0ZSkgfCBmbGFncyk7CisJKm91dCsrID0gTUlfTk9PUDsKKwkqb3V0KysgPSBNSV9TRVRfQ09O VEVYVDsKKwkqb3V0KysgPSBpOTE1X2dndHRfb2Zmc2V0KHJlcS0+Y3R4LT5lbmdpbmVbUkNTXS5z dGF0ZSkgfCBmbGFnczsKIAkvKgogCSAqIHcvYTogTUlfU0VUX0NPTlRFWFQgbXVzdCBhbHdheXMg YmUgZm9sbG93ZWQgYnkgTUlfTk9PUAogCSAqIFdhTWlTZXRDb250ZXh0X0hhbmc6c25iLGl2Yix2 bHYKIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJKm91dCsrID0gTUlf Tk9PUDsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKIAkJaWYgKG51bV9yaW5n cykgewogCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCQkJaTkxNV9yZWdf dCBsYXN0X3JlZyA9IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwogCi0JCQlpbnRlbF9yaW5nX2Vt aXQocmluZywKLQkJCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7CisJCQkqb3V0 KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3MpOwogCQkJZm9yX2VhY2hfZW5naW5l KHNpZ25hbGxlciwgZGV2X3ByaXYsIGlkKSB7CiAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUp CiAJCQkJCWNvbnRpbnVlOwogCiAJCQkJbGFzdF9yZWcgPSBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxl ci0+bW1pb19iYXNlKTsKLQkJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIGxhc3RfcmVnKTsK LQkJCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkJCV9NQVNLRURfQklUX0RJU0FCTEUoR0VO Nl9QU01JX1NMRUVQX01TR19ESVNBQkxFKSk7CisJCQkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQobGFzdF9yZWcpOworCQkJCSpvdXQrKyA9IF9NQVNLRURfQklUX0RJU0FCTEUoCisJCQkJ CSBHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpOwogCQkJfQogCiAJCQkvKiBJbnNlcnQgYSBk ZWxheSBiZWZvcmUgdGhlIG5leHQgc3dpdGNoISAqLwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs Ci0JCQkJCU1JX1NUT1JFX1JFR0lTVEVSX01FTSB8Ci0JCQkJCU1JX1NSTV9MUk1fR0xPQkFMX0dU VCk7Ci0JCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIGxhc3RfcmVnKTsKLQkJCWludGVsX3Jp bmdfZW1pdChyaW5nLAotCQkJCQlpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCkpOwot CQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCQkJKm91dCsrID0gTUlfU1RPUkVf UkVHSVNURVJfTUVNIHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOworCQkJKm91dCsrID0gaTkxNV9t bWlvX3JlZ19vZmZzZXQobGFzdF9yZWcpOworCQkJKm91dCsrID0gaTkxNV9nZ3R0X29mZnNldChl bmdpbmUtPnNjcmF0Y2gpOworCQkJKm91dCsrID0gTUlfTk9PUDsKIAkJfQotCQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEUpOworCQkqb3V0KysgPSBN SV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRTsKIAl9CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiByZXQ7CiB9 CiAKIHN0YXRpYyBpbnQgcmVtYXBfbDMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBzbGljZSkKIHsKLQl1MzIgKnJlbWFwX2luZm8gPSByZXEtPmk5MTUtPmwzX3Bhcml0eS5y ZW1hcF9pbmZvW3NsaWNlXTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsK LQlpbnQgaSwgcmV0OworCXUzMiAqb3V0LCAqcmVtYXBfaW5mbyA9IHJlcS0+aTkxNS0+bDNfcGFy aXR5LnJlbWFwX2luZm9bc2xpY2VdOworCWludCBpOwogCiAJaWYgKCFyZW1hcF9pbmZvKQogCQly ZXR1cm4gMDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBHRU43X0wzTE9HX1NJWkUv NCAqIDIgKyAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCBHRU43X0wzTE9HX1NJWkUvNCAqIDIgKyAyKTsKKwlpZiAoSVNfRVJSKG91dCkp CisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKgogCSAqIE5vdGU6IFdlIGRvIG5vdCB3b3Jy eSBhYm91dCB0aGUgY29uY3VycmVudCByZWdpc3RlciBjYWNoZWxpbmUgaGFuZwogCSAqIGhlcmUg YmVjYXVzZSBubyBvdGhlciBjb2RlIHNob3VsZCBhY2Nlc3MgdGhlc2UgcmVnaXN0ZXJzIG90aGVy IHRoYW4KIAkgKiBhdCBpbml0aWFsaXphdGlvbiB0aW1lLgogCSAqLwotCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCkpOworCSpvdXQr KyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjdfTDNMT0dfU0laRS80KTsKIAlmb3IgKGkgPSAw OyBpIDwgR0VON19MM0xPR19TSVpFLzQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJp bmcsIEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlbWFw X2luZm9baV0pOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU43X0wzTE9HKHNs aWNlLCBpKSk7CisJCSpvdXQrKyA9IHJlbWFwX2luZm9baV07CiAJfQotCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0g TUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggOGI2MGEx NGFmOWUyLi44ZmYwZjE4NmY1NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKQEAgLTEzMzYsMjUgKzEzMzYsMjUgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9t b3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzLAogc3RhdGljIGludAogaTkxNV9y ZXNldF9nZW43X3NvbF9vZmZzZXRzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQsIGk7CisJ dTMyICpvdXQ7CisJaW50IGk7CiAKIAlpZiAoIUlTX0dFTjcocmVxLT5pOTE1KSB8fCByZXEtPmVu Z2luZS0+aWQgIT0gUkNTKSB7CiAJCURSTV9ERUJVRygic29sIHJlc2V0IGlzIGdlbjcvcmNzIG9u bHlcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNCAqIDMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDQgKiAzKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJS KG91dCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmlu ZywgR0VON19TT19XUklURV9PRkZTRVQoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 CisJCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOworCQkqb3V0KysgPSBpOTE1X21t aW9fcmVnX29mZnNldChHRU43X1NPX1dSSVRFX09GRlNFVChpKSk7CisJCSpvdXQrKyA9IDA7CiAJ fQogCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEs IG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0MTUsNyArMTQxNSw3IEBAIGV4ZWNidWZfc3Vi bWl0KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcGFyYW1zLT5yZXF1ZXN0LT5pOTE1OwogCXU2NCBleGVj X3N0YXJ0LCBleGVjX2xlbjsKIAlpbnQgaW5zdHBfbW9kZTsKLQl1MzIgaW5zdHBfbWFzazsKKwl1 MzIgaW5zdHBfbWFzaywgKm91dDsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaTkxNV9nZW1fZXhlY2J1 ZmZlcl9tb3ZlX3RvX2dwdShwYXJhbXMtPnJlcXVlc3QsIHZtYXMpOwpAQCAtMTQ2MSwxNyArMTQ2 MSwxNSBAQCBleGVjYnVmX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFy YW1zLAogCiAJaWYgKHBhcmFtcy0+ZW5naW5lLT5pZCA9PSBSQ1MgJiYKIAkgICAgaW5zdHBfbW9k ZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKLQkJc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSBwYXJhbXMtPnJlcXVlc3QtPnJpbmc7Ci0KLQkJcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihwYXJhbXMtPnJlcXVlc3QsIDQpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsK LQotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmlu ZywgSU5TVFBNKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGluc3RwX21hc2sgPDwgMTYgfCBp bnN0cF9tb2RlKTsKLQkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCQlvdXQgPSBpbnRlbF9y aW5nX2JlZ2luKHBhcmFtcy0+cmVxdWVzdCwgNCk7CisJCWlmIChJU19FUlIob3V0KSkKKwkJCXJl dHVybiBQVFJfRVJSKG91dCk7CisKKwkJKm91dCsrID0gTUlfTk9PUDsKKwkJKm91dCsrID0gTUlf TE9BRF9SRUdJU1RFUl9JTU0oMSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KElO U1RQTSk7CisJCSpvdXQrKyA9IGluc3RwX21hc2sgPDwgMTYgfCBpbnN0cF9tb2RlOworCQlpbnRl bF9yaW5nX2FkdmFuY2UocGFyYW1zLT5yZXF1ZXN0LCBvdXQpOwogCiAJCWRldl9wcml2LT5yZWxh dGl2ZV9jb25zdGFudHNfbW9kZSA9IGluc3RwX21vZGU7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwppbmRleCAyMmIzMzc0MDk2ZTguLmE2MmEyMzNlYmM1OCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTY4MCwyMyArNjgwLDIyIEBAIHN0YXRpYyBpbnQgZ2Vu OF93cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgIHVuc2ln bmVkIGVudHJ5LAogCQkJICBkbWFfYWRkcl90IGFkZHIpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVx LT5lbmdpbmU7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAogCUJVR19PTihlbnRyeSA+PSA0KTsK IAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkp CisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9B RF9SRUdJU1RFUl9JTU0oMSkpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5H X1BEUF9VRFcoZW5naW5lLCBlbnRyeSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8z Ml9iaXRzKGFkZHIpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5HX1BEUF9MRFcoZW5n aW5lLCBlbnRyeSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKGFkZHIp KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RF Ul9JTU0oMSk7CisJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9V RFcoZW5naW5lLCBlbnRyeSkpOworCSpvdXQrKyA9IHVwcGVyXzMyX2JpdHMoYWRkcik7CisJKm91 dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7CisJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCBlbnRyeSkpOworCSpvdXQrKyA9IGxvd2Vy XzMyX2JpdHMoYWRkcik7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVy biAwOwogfQpAQCAtMTcyMyw4ICsxNzIyLDggQEAgc3RhdGljIHVpbnQzMl90IGdldF9wZF9vZmZz ZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogc3RhdGljIGludCBoc3dfbW1fc3dpdGNo KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwl1MzIgKm91dDsK IAlpbnQgcmV0OwogCiAJLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlkYXRl ZCBiZWZvcmUgYSBzd2l0Y2ggKi8KQEAgLTE3MzIsMTcgKzE3MzEsMTcgQEAgc3RhdGljIGludCBo c3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJ U19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKSk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5n LCBSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBQUF9E SVJfRENMVl8yRyk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9CQVNF KGVuZ2luZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBnZXRfcGRfb2Zmc2V0KHBwZ3R0KSk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKKwkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsKKwkqb3V0KysgPSBpOTE1 X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZSkpOworCSpvdXQrKyA9IFBQ X0RJUl9EQ0xWXzJHOworCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfUFBfRElS X0JBU0UoZW5naW5lKSk7CisJKm91dCsrID0gZ2V0X3BkX29mZnNldChwcGd0dCk7CisJKm91dCsr ID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC0xNzUwLDggKzE3NDksOCBAQCBzdGF0aWMgaW50IGhzd19tbV9zd2l0Y2goc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogc3RhdGljIGludCBnZW43X21tX3N3aXRjaChzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQsCiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXUzMiAqb3V0OwogCWludCBy ZXQ7CiAKIAkvKiBOQjogVExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJlZm9y ZSBhIHN3aXRjaCAqLwpAQCAtMTc1OSwxNyArMTc1OCwxNyBAQCBzdGF0aWMgaW50IGdlbjdfbW1f c3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0o MikpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfRENMVihlbmdpbmUp KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgUFBfRElSX0RDTFZfMkcpOwotCWludGVsX3Jpbmdf ZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgZ2V0X3BkX29mZnNldChwcGd0dCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJb3V0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsK KworCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDIpOworCSpvdXQrKyA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KFJJTkdfUFBfRElSX0RDTFYoZW5naW5lKSk7CisJKm91dCsrID0gUFBfRElS X0RDTFZfMkc7CisJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfQkFT RShlbmdpbmUpKTsKKwkqb3V0KysgPSBnZXRfcGRfb2Zmc2V0KHBwZ3R0KTsKKwkqb3V0KysgPSBN SV9OT09QOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAkvKiBYWFg6IFJDUyBp cyB0aGUgb25seSBvbmUgdG8gYXV0byBpbnZhbGlkYXRlIHRoZSBUTEJzPyAqLwogCWlmIChlbmdp bmUtPmlkICE9IFJDUykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCmlu ZGV4IDZjZjNiM2U3YzBmZC4uNjNkN2YyZmI1MDE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5jCkBAIC04MzAsNiArODMwLDcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hl cykKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7CiAJc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0aW1lbGluZSA9IHJlcXVlc3QtPnRpbWVsaW5lOwogCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcHJldjsKKwl1MzIgKm91dDsKIAlpbnQgZXJyOwogCiAJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmcmVxdWVzdC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC04Njgs MTAgKzg2OSwxMSBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCSAqIEdQVSBwcm9jZXNzaW5n IHRoZSByZXF1ZXN0LCB3ZSBuZXZlciBvdmVyLWVzdGltYXRlIHRoZQogCSAqIHBvc2l0aW9uIG9m IHRoZSByaW5nJ3MgSEVBRC4KIAkgKi8KLQllcnIgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3Qs IGVuZ2luZS0+ZW1pdF9icmVhZGNydW1iX3N6KTsKLQlHRU1fQlVHX09OKGVycik7Ci0JcmVxdWVz dC0+cG9zdGZpeCA9IHJpbmctPnRhaWw7Ci0JcmluZy0+dGFpbCArPSBlbmdpbmUtPmVtaXRfYnJl YWRjcnVtYl9zeiAqIHNpemVvZih1MzIpOworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVz dCwgZW5naW5lLT5lbWl0X2JyZWFkY3J1bWJfc3opOworCUdFTV9CVUdfT04oSVNfRVJSKG91dCkp OworCUdFTV9CVUdfT04oZW5naW5lLT5lbWl0X2JyZWFkY3J1bWJfc3ogKiBzaXplb2YodTMyKSA+ IHJpbmctPnRhaWwpOworCXJlcXVlc3QtPnBvc3RmaXggPSByaW5nLT50YWlsIC0KKwkJCSAgIGVu Z2luZS0+ZW1pdF9icmVhZGNydW1iX3N6ICogc2l6ZW9mKHUzMik7CiAKIAkvKiBTZWFsIHRoZSBy ZXF1ZXN0IGFuZCBtYXJrIGl0IGFzIHBlbmRpbmcgZXhlY3V0aW9uLiBOb3RlIHRoYXQKIAkgKiB3 ZSBtYXkgaW5zcGVjdCB0aGlzIHN0YXRlLCB3aXRob3V0IGhvbGRpbmcgYW55IGxvY2tzLCBkdXJp bmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBkMGQwNDI0OTVkYzcuLjI4 NWEzNTZlOWU0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTE3NjIs MTQgKzExNzYyLDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAog CQkJCSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+ cmluZzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Ci0JdTMyIGZsaXBfbWFzazsKLQlpbnQgcmV0OworCXUzMiBmbGlwX21hc2ssICpvdXQ7CiAK LQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJl dDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKQor CQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJLyogQ2FuJ3QgcXVldWUgbXVsdGlwbGUgZmxpcHMs IHNvIHdhaXQgZm9yIHRoZSBwcmV2aW91cwogCSAqIG9uZSB0byBmaW5pc2ggYmVmb3JlIGV4ZWN1 dGluZyB0aGUgbmV4dC4KQEAgLTExNzc4LDEzICsxMTc3NiwxMiBAQCBzdGF0aWMgaW50IGludGVs X2dlbjJfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlmbGlwX21hc2sgPSBN SV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVA7CiAJZWxzZQogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZP Ul9QTEFORV9BX0ZMSVA7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5U IHwgZmxpcF9tYXNrKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUCB8Ci0JCQlNSV9ESVNQTEFZX0ZMSVBfUExB TkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNo ZXNbMF0pOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0 dF9vZmZzZXQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogYXV4IGRpc3BsYXkgYmFz ZSBhZGRyZXNzLCB1bnVzZWQgKi8KKwkqb3V0KysgPSBNSV9XQUlUX0ZPUl9FVkVOVCB8IGZsaXBf bWFzazsKKwkqb3V0KysgPSBNSV9OT09QOworCSpvdXQrKyA9IE1JX0RJU1BMQVlfRkxJUCB8IE1J X0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSk7CisJKm91dCsrID0gZmItPnBp dGNoZXNbMF07CisJKm91dCsrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0Owor CSpvdXQrKyA9IDA7IC8qIGF1eCBkaXNwbGF5IGJhc2UgYWRkcmVzcywgdW51c2VkICovCiAKIAly ZXR1cm4gMDsKIH0KQEAgLTExNzk2LDI2ICsxMTc5MywyNCBAQCBzdGF0aWMgaW50IGludGVsX2dl bjNfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXUzMiBmbGlwX21hc2s7Ci0JaW50IHJldDsKKwl1 MzIgZmxpcF9tYXNrLCAqb3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwot CWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYp OworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCWlmIChpbnRl bF9jcnRjLT5wbGFuZSkKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQOwog CWVsc2UKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQV9GTElQOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IGZsaXBfbWFzayk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZ X0ZMSVBfSTkxNSB8Ci0JCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUp KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkqb3V0KysgPSBNSV9XQUlUX0ZPUl9FVkVOVCB8IGZs aXBfbWFzazsKKwkqb3V0KysgPSBNSV9OT09QOworCSpvdXQrKyA9IE1JX0RJU1BMQVlfRkxJUF9J OTE1IHwKKwkJIE1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSk7CisJKm91 dCsrID0gZmItPnBpdGNoZXNbMF07CisJKm91dCsrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5n dHRfb2Zmc2V0OworCSpvdXQrKyA9IE1JX05PT1A7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExODI3 LDI1ICsxMTgyMiwyMiBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVfZmxpcChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK IAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEt PnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK LQl1aW50MzJfdCBwZiwgcGlwZXNyYzsKLQlpbnQgcmV0OworCXUzMiBwZiwgcGlwZXNyYywgKm91 dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91 dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKiBpOTY1KyB1c2VzIHRoZSBsaW5lYXIg b3IgdGlsZWQgb2Zmc2V0cyBmcm9tIHRoZQogCSAqIERpc3BsYXkgUmVnaXN0ZXJzICh3aGljaCBk byBub3QgY2hhbmdlIGFjcm9zcyBhIHBhZ2UtZmxpcCkKIAkgKiBzbyB3ZSBuZWVkIG9ubHkgcmVw cm9ncmFtIHRoZSBiYXNlIGFkZHJlc3MuCiAJICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X0RJU1BMQVlfRkxJUCB8Ci0JCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxh bmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQgfAotCQkJaW50 ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllcikpOworCSpvdXQrKyA9IE1JX0RJ U1BMQVlfRkxJUCB8IE1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSk7CisJ Km91dCsrID0gZmItPnBpdGNoZXNbMF07CisJKm91dCsrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3Jr LT5ndHRfb2Zmc2V0IHwKKwkJIGludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZp ZXIpOwogCiAJLyogWFhYIEVuYWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxp cCBpcyBzbyBmYXIKIAkgKiB1bnRlc3RlZCBvbiBub24tbmF0aXZlIG1vZGVzLCBzbyBpZ25vcmUg aXQgZm9yIG5vdy4KQEAgLTExODUzLDcgKzExODQ1LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40 X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKi8KIAlwZiA9IDA7CiAJcGlw ZXNyYyA9IEk5MTVfUkVBRChQSVBFU1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHBmIHwgcGlwZXNyYyk7CisJKm91dCsrID0gcGYgfCBw aXBlc3JjOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMTg2NSwyMSArMTE4NTcsMTcgQEAgc3RhdGlj IGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdWludDMyX3QgcGYsIHBpcGVzcmM7 Ci0JaW50IHJldDsKKwl1MzIgcGYsIHBpcGVzcmMsICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihv dXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUCB8Ci0JCQlNSV9E SVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgZmItPnBpdGNoZXNbMF0gfAotCQkJaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZi LT5tb2RpZmllcikpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dv cmstPmd0dF9vZmZzZXQpOworCSpvdXQrKyA9IE1JX0RJU1BMQVlfRkxJUCB8IE1JX0RJU1BMQVlf RkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSk7CisJKm91dCsrID0gZmItPnBpdGNoZXNbMF0g fCBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlmaWVyKTsKKwkqb3V0KysgPSBp bnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQ7CiAKIAkvKiBDb250cmFyeSB0byB0aGUg c3VnZ2VzdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24sCiAJICogIkVuYWJsZSBQYW5lbCBGaXR0 ZXIiIGRvZXMgbm90IHNlZW0gdG8gYmUgcmVxdWlyZWQgd2hlbiBwYWdlCkBAIC0xMTg4OSw3ICsx MTg3Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJICovCiAJcGYgPSAwOwogCXBpcGVzcmMgPSBJOTE1X1JFQUQoUElQRVNSQyhp bnRlbF9jcnRjLT5waXBlKSkgJiAweDBmZmYwZmZmOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBw ZiB8IHBpcGVzcmMpOworCSpvdXQrKyA9IHBmIHwgcGlwZXNyYzsKIAogCXJldHVybiAwOwogfQpA QCAtMTE5MDIsOSArMTE4OTAsOCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSB1aW50MzJfdCBmbGFncykKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXVpbnQzMl90IHBsYW5lX2JpdCA9IDA7CisJdTMyICpv dXQsIHBsYW5lX2JpdCA9IDA7CiAJaW50IGxlbiwgcmV0OwogCiAJc3dpdGNoIChpbnRlbF9jcnRj LT5wbGFuZSkgewpAQCAtMTE5NDgsOSArMTE5MzUsOSBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdf cXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgbGVuKTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBsZW4pOworCWlmIChJU19F UlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCS8qIFVubWFzayB0aGUgZmxpcC1k b25lIGNvbXBsZXRpb24gbWVzc2FnZS4gTm90ZSB0aGF0IHRoZSBic3BlYyBzYXlzIHRoYXQKIAkg KiB3ZSBzaG91bGQgZG8gdGhpcyBmb3IgYm90aCB0aGUgQkNTIGFuZCBSQ1MsIGFuZCB0aGF0IHdl IG11c3Qgbm90IHVubWFzawpAQCAtMTE5NjIsMzEgKzExOTQ5LDI4IEBAIHN0YXRpYyBpbnQgaW50 ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICogdG8gemVybyBk b2VzIGxlYWQgdG8gbG9ja3VwcyB3aXRoaW4gTUlfRElTUExBWV9GTElQLgogCSAqLwogCWlmIChy ZXEtPmVuZ2luZS0+aWQgPT0gUkNTKSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FE X1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgREVSUk1SKTsK LQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIH4oREVSUk1SX1BJUEVBX1BSSV9GTElQX0RPTkUgfAot CQkJCQkgIERFUlJNUl9QSVBFQl9QUklfRkxJUF9ET05FIHwKLQkJCQkJICBERVJSTVJfUElQRUNf UFJJX0ZMSVBfRE9ORSkpOworCQkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkJ Km91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoREVSUk1SKTsKKwkJKm91dCsrID0gfihERVJS TVJfUElQRUFfUFJJX0ZMSVBfRE9ORSB8CisJCQkgREVSUk1SX1BJUEVCX1BSSV9GTElQX0RPTkUg fAorCQkJIERFUlJNUl9QSVBFQ19QUklfRkxJUF9ET05FKTsKIAkJaWYgKElTX0dFTjgoZGV2X3By aXYpKQotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44 IHwKLQkJCQkJICAgICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKKwkJCSpvdXQrKyA9IE1JX1NU T1JFX1JFR0lTVEVSX01FTV9HRU44IHwKKwkJCQkgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOwogCQll bHNlCi0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwKLQkJ CQkJICAgICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nLCBERVJSTVIpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlpOTE1X2dndHRfb2Zm c2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDI1Nik7CisJCQkqb3V0KysgPSBNSV9TVE9SRV9S RUdJU1RFUl9NRU0gfCBNSV9TUk1fTFJNX0dMT0JBTF9HVFQ7CisJCSpvdXQrKyA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KERFUlJNUik7CisJCSpvdXQrKyA9IGk5MTVfZ2d0dF9vZmZzZXQocmVxLT5l bmdpbmUtPnNjcmF0Y2gpICsgMjU2OwogCQlpZiAoSVNfR0VOOChkZXZfcHJpdikpIHsKLQkJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09Q KTsKKwkJCSpvdXQrKyA9IDA7CisJCQkqb3V0KysgPSBNSV9OT09QOwogCQl9CiAJfQogCi0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwgcGxhbmVfYml0KTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0gfAotCQkJaW50ZWxfZmJfbW9kaWZp ZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllcikpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRl bF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAo TUlfTk9PUCkpOworCSpvdXQrKyA9IE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwgcGxhbmVfYml0Owor CSpvdXQrKyA9IGZiLT5waXRjaGVzWzBdIHwgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZi LT5tb2RpZmllcik7CisJKm91dCsrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0 OworCSpvdXQrKyA9IE1JX05PT1A7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKaW5kZXggZTA3MWJjZGMyODMzLi4xZDg2M2U4YTU1ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCkBAIC04NTAsNiArODUwLDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7CiAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwogCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9ICZyZXF1ZXN0LT5jdHgtPmVuZ2luZVtlbmdpbmUtPmlkXTsKKwl1MzIg Km91dDsKIAlpbnQgcmV0OwogCiAJR0VNX0JVR19PTighY2UtPnBpbl9jb3VudCk7CkBAIC04NzQs OSArODc1LDExIEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCQkJZ290byBlcnI7CiAJfQogCi0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCAwKTsKLQlpZiAocmV0KQorCW91dCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxdWVzdCwgMCk7CisJaWYgKElTX0VSUihvdXQpKSB7CisJCXJldCA9IFBUUl9F UlIob3V0KTsKIAkJZ290byBlcnJfdW5yZXNlcnZlOworCX0KIAogCWlmICghY2UtPmluaXRpYWxp c2VkKSB7CiAJCXJldCA9IGVuZ2luZS0+aW5pdF9jb250ZXh0KHJlcXVlc3QpOwpAQCAtOTA1LDkg KzkwOCw5IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCiBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmlu Z193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewot CWludCByZXQsIGk7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3Ry dWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcmVxLT5pOTE1LT53b3JrYXJvdW5kczsKKwl1MzIg Km91dDsKKwlpbnQgcmV0LCBpOwogCiAJaWYgKHctPmNvdW50ID09IDApCiAJCXJldHVybiAwOwpA QCAtOTE2LDE4ICs5MTksMTggQEAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fy b3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIHctPmNvdW50ICog MiArIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIHctPmNvdW50ICogMiArIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBU Ul9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lN TSh3LT5jb3VudCkpOworCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKHctPmNvdW50KTsK IAlmb3IgKGkgPSAwOyBpIDwgdy0+Y291bnQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmcsIHctPnJlZ1tpXS5hZGRyKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHctPnJlZ1tp XS52YWx1ZSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KHctPnJlZ1tpXS5hZGRy KTsKKwkJKm91dCsrID0gdy0+cmVnW2ldLnZhbHVlOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJKm91dCsrID0gTUlfTk9PUDsKIAotCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0ID0gcmVxLT5lbmdp bmUtPmVtaXRfZmx1c2gocmVxLCBFTUlUX0JBUlJJRVIpOwogCWlmIChyZXQpCkBAIC0xNDIwLDI3 ICsxNDIzLDI3IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRw cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQgPSByZXEtPmN0eC0+cHBndHQ7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcg PSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdp bmU7CiAJY29uc3QgaW50IG51bV9scmlfY21kcyA9IEdFTjhfTEVHQUNZX1BEUEVTICogMjsKLQlp bnQgaSwgcmV0OworCXUzMiAqb3V0OworCWludCBpOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIG51bV9scmlfY21kcyAqIDIgKyAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owor CW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBudW1fbHJpX2NtZHMgKiAyICsgMik7CisJaWYg KElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9scmlfY21kcykpOworCSpvdXQrKyA9IE1J X0xPQURfUkVHSVNURVJfSU1NKG51bV9scmlfY21kcyk7CiAJZm9yIChpID0gR0VOOF9MRUdBQ1lf UERQRVMgLSAxOyBpID49IDA7IGktLSkgewogCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0g aTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihwcGd0dCwgaSk7CiAKLQkJaW50ZWxfcmluZ19lbWl0X3Jl ZyhyaW5nLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIHVwcGVyXzMyX2JpdHMocGRfZGFkZHIpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBpKSk7CisJCSpvdXQrKyA9IHVwcGVyXzMy X2JpdHMocGRfZGFkZHIpOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJ TkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKKwkJKm91dCsrID0gbG93ZXJfMzJfYml0cyhwZF9kYWRk cik7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3JpbmdfYWR2YW5jZShy ZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0NDksOCArMTQ1Miw4IEBAIHN0YXRpYyBp bnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAog CQkJICAgICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKIAkJCSAgICAgIHVuc2lnbmVkIGludCBkaXNw YXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAli b29sIHBwZ3R0ID0gIShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFKTsKKwl1 MzIgKm91dDsKIAlpbnQgcmV0OwogCiAJLyogRG9uJ3QgcmVseSBpbiBodyB1cGRhdGluZyBQRFBz LCBzcGVjaWFsbHkgaW4gbGl0ZS1yZXN0b3JlLgpAQCAtMTQ3MSwxOSArMTQ3NCwxOCBAQCBzdGF0 aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAkJcmVxLT5jdHgtPnBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAmPSB+aW50ZWxfZW5naW5lX2Zs YWcocmVxLT5lbmdpbmUpOwogCX0KIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0 KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKiBGSVhN RShCRFcpOiBBZGRyZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCi0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwKLQkJCShwcGd0dDw8 OCkgfAotCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/Ci0JCQkgTUlfQkFU Q0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2Vy XzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMo b2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOCB8IChw cGd0dDw8OCkgfAorCQkgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/CisJCSBN SV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApOworCSpvdXQrKyA9IGxvd2VyXzMyX2JpdHMo b2Zmc2V0KTsKKwkqb3V0KysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJKm91dCsrID0gTUlf Tk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC0xNTA0LDEzICsxNTA2LDExIEBAIHN0YXRpYyB2b2lkIGdlbjhfbG9naWNhbF9yaW5nX2Rpc2Fi bGVfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIGludCBnZW44 X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgbW9k ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Ci0JdTMyIGNt ZDsKLQlpbnQgcmV0OworCXUzMiBjbWQsICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcXVlc3QsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXF1ZXN0LCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJS KG91dCk7CiAKIAljbWQgPSBNSV9GTFVTSF9EVyArIDE7CiAKQEAgLTE1MjcsMTMgKzE1MjcsMTEg QEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0LCB1MzIgbW9kZSkKIAkJCWNtZCB8PSBNSV9JTlZBTElEQVRFX0JTRDsKIAl9CiAK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJ CUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfAotCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBhZGRyICovCi0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkq b3V0KysgPSBjbWQ7CisJKm91dCsrID0gSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZM VVNIX0RXX1VTRV9HVFQ7CisJKm91dCsrID0gMDsgLyogdXBwZXIgYWRkciAqLworCSpvdXQrKyA9 IDA7IC8qIHZhbHVlICovCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcXVlc3QsIG91dCk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTE1NDEsMTMgKzE1MzksMTEgQEAgc3RhdGljIGludCBnZW44X2VtaXRf Zmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgbW9kZSkKIHN0 YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoX3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QsCiAJCQkJICB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZyA9IHJlcXVlc3QtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVx dWVzdC0+ZW5naW5lOwogCXUzMiBzY3JhdGNoX2FkZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KGVu Z2luZS0+c2NyYXRjaCkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCWJvb2wgdmZfZmx1c2hfd2Eg PSBmYWxzZSwgZGNfZmx1c2hfd2EgPSBmYWxzZTsKLQl1MzIgZmxhZ3MgPSAwOwotCWludCByZXQ7 CisJdTMyICpvdXQsIGZsYWdzID0gMDsKIAlpbnQgbGVuOwogCiAJZmxhZ3MgfD0gUElQRV9DT05U Uk9MX0NTX1NUQUxMOwpAQCAtMTU4OSw0NSArMTU4NSw0NSBAQCBzdGF0aWMgaW50IGdlbjhfZW1p dF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCWlm IChkY19mbHVzaF93YSkKIAkJbGVuICs9IDEyOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXF1ZXN0LCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXF1ZXN0LCBsZW4pOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9F UlIob3V0KTsKIAogCWlmICh2Zl9mbHVzaF93YSkgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg R0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwor CQkqb3V0KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDYpOworCQkqb3V0KysgPSAwOworCQkqb3V0 KysgPSAwOworCQkqb3V0KysgPSAwOworCQkqb3V0KysgPSAwOworCQkqb3V0KysgPSAwOwogCX0K IAogCWlmIChkY19mbHVzaF93YSkgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJ UEVfQ09OVFJPTCg2KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBQSVBFX0NPTlRST0xfRENf RkxVU0hfRU5BQkxFKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5n X2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOworCQkqb3V0KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDYpOworCQkq b3V0KysgPSBQSVBFX0NPTlRST0xfRENfRkxVU0hfRU5BQkxFOworCQkqb3V0KysgPSAwOworCQkq b3V0KysgPSAwOworCQkqb3V0KysgPSAwOworCQkqb3V0KysgPSAwOwogCX0KIAotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgZmxhZ3MpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7 CisJKm91dCsrID0gZmxhZ3M7CisJKm91dCsrID0gc2NyYXRjaF9hZGRyOworCSpvdXQrKyA9IDA7 CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSAwOwogCiAJaWYgKGRjX2ZsdXNoX3dhKSB7Ci0JCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCk7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKm91dCsrID0gR0ZYX09Q X1BJUEVfQ09OVFJPTCg2KTsKKwkJKm91dCsrID0gUElQRV9DT05UUk9MX0NTX1NUQUxMOworCQkq b3V0KysgPSAwOworCQkqb3V0KysgPSAwOworCQkqb3V0KysgPSAwOworCQkqb3V0KysgPSAwOwog CX0KIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVx dWVzdCwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY0MSw3ICsxNjM3LDcgQEAgc3RhdGlj IHZvaWQgZ2VuOF9lbWl0X3dhX3RhaWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0LCB1MzIgKm91dCkKIHsKIAkqb3V0KysgPSBNSV9OT09QOwogCSpvdXQrKyA9IE1JX05PT1A7 Ci0JcmVxdWVzdC0+d2FfdGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91 dCk7CisJcmVxdWVzdC0+d2FfdGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QsIG91dCk7 CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjhfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCwKQEAgLTE2NTYsNyArMTY1Miw3IEBAIHN0YXRpYyB2b2lkIGdl bjhfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwK IAkqb3V0KysgPSByZXF1ZXN0LT5nbG9iYWxfc2Vxbm87CiAJKm91dCsrID0gTUlfVVNFUl9JTlRF UlJVUFQ7CiAJKm91dCsrID0gTUlfTk9PUDsKLQlyZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19v ZmZzZXQocmVxdWVzdC0+cmluZywgb3V0KTsKKwlyZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19v ZmZzZXQocmVxdWVzdCwgb3V0KTsKIAogCWdlbjhfZW1pdF93YV90YWlsKHJlcXVlc3QsIG91dCk7 CiB9CkBAIC0xNjg0LDcgKzE2ODAsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2VtaXRfYnJlYWRjcnVt Yl9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCSpvdXQrKyA9 IDA7CiAJKm91dCsrID0gTUlfVVNFUl9JTlRFUlJVUFQ7CiAJKm91dCsrID0gTUlfTk9PUDsKLQly ZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVzdC0+cmluZywgb3V0KTsKKwly ZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVzdCwgb3V0KTsKIAogCWdlbjhf ZW1pdF93YV90YWlsKHJlcXVlc3QsIG91dCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMK aW5kZXggNzczZTM2MjUzZTdjLi5hN2EyOGM0OTY4OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX21vY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9t b2NzLmMKQEAgLTI3NiwyMyArMjc2LDIyIEBAIGludCBpbnRlbF9tb2NzX2luaXRfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2NvbnRy b2xfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJICAgY29uc3Qg c3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlKQogewotCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nID0gcmVxLT5yaW5nOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGVuZ2luZSA9IHJlcS0+ ZW5naW5lLT5pZDsKIAl1bnNpZ25lZCBpbnQgaW5kZXg7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsK IAogCWlmIChXQVJOX09OKHRhYmxlLT5zaXplID4gR0VOOV9OVU1fTU9DU19FTlRSSUVTKSkKIAkJ cmV0dXJuIC1FTk9ERVY7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMiArIDIgKiBH RU45X05VTV9NT0NTX0VOVFJJRVMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDIgKyAyICogR0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKKwlp ZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTKSk7CisJ Km91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKIAog CWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLT5zaXplOyBpbmRleCsrKSB7Ci0JCWludGVs X3JpbmdfZW1pdF9yZWcocmluZywgbW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7Ci0JCWlu dGVsX3JpbmdfZW1pdChyaW5nLCB0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUpOwor CQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5k ZXgpKTsKKwkJKm91dCsrID0gdGFibGUtPnRhYmxlW2luZGV4XS5jb250cm9sX3ZhbHVlOwogCX0K IAogCS8qCkBAIC0zMDQsMTIgKzMwMywxMiBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9s X3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCSAqIHRoYXQgdmFsdWUg dG8gYWxsIHRoZSB1c2VkIGVudHJpZXMuCiAJICovCiAJZm9yICg7IGluZGV4IDwgR0VOOV9OVU1f TU9DU19FTlRSSUVTOyBpbmRleCsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbW9j c19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB0YWJs ZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zm c2V0KG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkpOworCQkqb3V0KysgPSB0YWJsZS0+dGFi bGVbMF0uY29udHJvbF92YWx1ZTsKIAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50 ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMzM2LDI5ICsz MzUsMjcgQEAgc3RhdGljIGlubGluZSB1MzIgbDNjY19jb21iaW5lKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9tb2NzX3RhYmxlICp0YWJsZSwKIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2wzY2NfdGFibGUo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJY29uc3Qgc3RydWN0IGRybV9p OTE1X21vY3NfdGFibGUgKnRhYmxlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVx LT5yaW5nOwogCXVuc2lnbmVkIGludCBpOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKIAlpZiAo V0FSTl9PTih0YWJsZS0+c2l6ZSA+IEdFTjlfTlVNX01PQ1NfRU5UUklFUykpCiAJCXJldHVybiAt RU5PREVWOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIgKyBHRU45X05VTV9NT0NT X0VOVFJJRVMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDIgKyBHRU45X05VTV9NT0NTX0VOVFJJRVMpOworCWlmIChJU19FUlIob3V0KSkK KwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlf TE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMikpOworCSpvdXQrKyA9 IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDIpOwogCiAJZm9y IChpID0gMDsgaSA8IHRhYmxlLT5zaXplLzI7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmcsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGwzY2Nf Y29tYmluZSh0YWJsZSwgMippLCAyKmkrMSkpOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29m ZnNldChHRU45X0xOQ0ZDTU9DUyhpKSk7CisJCSpvdXQrKyA9IGwzY2NfY29tYmluZSh0YWJsZSwg MiAqIGksIDIgKiBpICsgMSk7CiAJfQogCiAJaWYgKHRhYmxlLT5zaXplICYgMHgwMSkgewogCQkv KiBPZGQgdGFibGUgc2l6ZSAtIDEgbGVmdCBvdmVyICovCi0JCWludGVsX3JpbmdfZW1pdF9yZWco cmluZywgR0VOOV9MTkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbDNjY19j b21iaW5lKHRhYmxlLCAyKmksIDApKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo R0VOOV9MTkNGQ01PQ1MoaSkpOworCQkqb3V0KysgPSBsM2NjX2NvbWJpbmUodGFibGUsIDIgKiBp LCAwKTsKIAkJaSsrOwogCX0KIApAQCAtMzY4LDEyICszNjUsMTIgQEAgc3RhdGljIGludCBlbWl0 X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiB0 aGV5IGFyZSByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCiAJICovCiAJZm9yICg7IGkgPCBHRU45 X05VTV9NT0NTX0VOVFJJRVMgLyAyOyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5n LCBHRU45X0xOQ0ZDTU9DUyhpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBsM2NjX2NvbWJp bmUodGFibGUsIDAsIDApKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9M TkNGQ01PQ1MoaSkpOworCQkqb3V0KysgPSBsM2NjX2NvbWJpbmUodGFibGUsIDAsIDApOwogCX0K IAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQp OwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKaW5kZXgg MDYwOGZhZDdmNTkzLi5mNjEyYTAyZGRmYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVy bGF5LmMKQEAgLTI2Nyw4ICsyNjcsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKLQlpbnQgcmV0OworCXUzMiAqb3V0Owog CiAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwogCVdBUk5fT04oSVNfSTgzMChkZXZfcHJpdikg JiYgIShkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpKTsKQEAgLTI3NywxMCAr Mjc2LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihzdHJ1Y3QgaW50ZWxfb3Zlcmxh eSAqb3ZlcmxheSkKIAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAK LQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkgeworCW91dCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpIHsKIAkJaTkxNV9hZGRf cmVxdWVzdF9ub19mbHVzaChyZXEpOwotCQlyZXR1cm4gcmV0OworCQlyZXR1cm4gUFRSX0VSUihv dXQpOwogCX0KIAogCW92ZXJsYXktPmFjdGl2ZSA9IHRydWU7CkBAIC0yODgsMTIgKzI4NywxMSBA QCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJs YXkpCiAJaWYgKElTX0k4MzAoZGV2X3ByaXYpKQogCQlpODMwX292ZXJsYXlfY2xvY2tfZ2F0aW5n KGRldl9wcml2LCBmYWxzZSk7CiAKLQlyaW5nID0gcmVxLT5yaW5nOwotCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09OKTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURSk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOworCSpvdXQrKyA9IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT047CisJKm91dCsr ID0gb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURTsKKwkqb3V0KysgPSBNSV9XQUlUX0ZP Ul9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUDsKKwkqb3V0KysgPSBNSV9OT09QOwor CWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gaW50ZWxfb3ZlcmxheV9k b193YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLCBOVUxMKTsKIH0KQEAgLTMyNiwxMCArMzI0LDgg QEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5 ICpvdmVybGF5LAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJs YXktPmk5MTU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmc7CiAJdTMyIGZsaXBfYWRkciA9IG92ZXJsYXktPmZsaXBfYWRkcjsKLQl1 MzIgdG1wOwotCWludCByZXQ7CisJdTMyIHRtcCwgKm91dDsKIAogCVdBUk5fT04oIW92ZXJsYXkt PmFjdGl2ZSk7CiAKQEAgLTM0NSwxNiArMzQxLDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3Zlcmxh eV9jb250aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAlpZiAoSVNfRVJSKHJl cSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgMik7Ci0JaWYgKHJldCkgeworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlp ZiAoSVNfRVJSKG91dCkpIHsKIAkJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXEpOwotCQly ZXR1cm4gcmV0OworCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCX0KIAotCXJpbmcgPSByZXEtPnJp bmc7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlf Q09OVElOVUUpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGlwX2FkZHIpOwotCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZ X0NPTlRJTlVFOworCSpvdXQrKyA9IGZsaXBfYWRkcjsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVx LCBvdXQpOwogCiAJaW50ZWxfb3ZlcmxheV9mbGlwX3ByZXBhcmUob3ZlcmxheSwgdm1hKTsKIApA QCAtNDA4LDkgKzQwMyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX292ZXJsYXlfb2ZmX3RhaWwoc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAogc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29m ZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKLQl1MzIgZmxpcF9hZGRy ID0gb3ZlcmxheS0+ZmxpcF9hZGRyOwotCWludCByZXQ7CisJdTMyICpvdXQsIGZsaXBfYWRkciA9 IG92ZXJsYXktPmZsaXBfYWRkcjsKIAogCVdBUk5fT04oIW92ZXJsYXktPmFjdGl2ZSk7CiAKQEAg LTQyNCwyNSArNDE3LDIzIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGlu dGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJaWYgKElTX0VSUihyZXEpKQogCQlyZXR1cm4gUFRSX0VS UihyZXEpOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpIHsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKSB7CiAJ CWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKLQkJcmV0dXJuIHJldDsKKwkJcmV0dXJu IFBUUl9FUlIob3V0KTsKIAl9CiAKLQlyaW5nID0gcmVxLT5yaW5nOwotCiAJLyogd2FpdCBmb3Ig b3ZlcmxheSB0byBnbyBpZGxlICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlf RkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGlw X2FkZHIpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dB SVRfRk9SX09WRVJMQVlfRkxJUCk7CisJKm91dCsrID0gTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZF UkxBWV9DT05USU5VRTsKKwkqb3V0KysgPSBmbGlwX2FkZHI7CisJKm91dCsrID0gTUlfV0FJVF9G T1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CiAKIAkvKiB0dXJuIG92ZXJsYXkg b2ZmICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJM QVlfT0ZGKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxpcF9hZGRyKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVAp OworCSpvdXQrKyA9IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZGOworCSpvdXQrKyA9 IGZsaXBfYWRkcjsKKwkqb3V0KysgPSBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09W RVJMQVlfRkxJUDsKIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2Fk dmFuY2UocmVxLCBvdXQpOwogCiAJaW50ZWxfb3ZlcmxheV9mbGlwX3ByZXBhcmUob3ZlcmxheSwg TlVMTCk7CiAKQEAgLTQ2NSw2ICs0NTYsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfcmVj b3Zlcl9mcm9tX2ludGVycnVwdChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIHN0YXRp YyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVsX292ZXJsYXkg Km92ZXJsYXkpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb3Zlcmxh eS0+aTkxNTsKKwl1MzIgKm91dDsKIAlpbnQgcmV0OwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgm ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwpAQCAtNDc4LDIzICs0NzAsMjAgQEAgc3RhdGlj IGludCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSkKIAlpZiAoSTkxNV9SRUFEKElTUikgJiBJOTE1X09WRVJMQVlfUExBTkVfRkxJUF9Q RU5ESU5HX0lOVEVSUlVQVCkgewogCQkvKiBzeW5jaHJvbm91cyBzbG93cGF0aCAqLwogCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKLQkJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7 CiAKIAkJcmVxID0gYWxsb2NfcmVxdWVzdChvdmVybGF5KTsKIAkJaWYgKElTX0VSUihyZXEpKQog CQkJcmV0dXJuIFBUUl9FUlIocmVxKTsKIAotCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg Mik7Ci0JCWlmIChyZXQpIHsKKwkJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCQlp ZiAoSVNfRVJSKG91dCkpIHsKIAkJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKLQkJ CXJldHVybiByZXQ7CisJCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCQl9CiAKLQkJcmluZyA9IHJl cS0+cmluZzsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJTUlfV0FJVF9GT1JfRVZFTlQg fCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf Tk9PUCk7Ci0JCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkJKm91dCsrID0gTUlfV0FJVF9G T1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CisJCSpvdXQrKyA9IE1JX05PT1A7 CisJCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAkJcmV0ID0gaW50ZWxfb3Zlcmxh eV9kb193YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLAogCQkJCQkJICAgIGludGVsX292ZXJsYXlf cmVsZWFzZV9vbGRfdmlkX3RhaWwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCmluZGV4IGQzZDFlNjRmMjQ5OC4uZjM2ZDAzZjdmZjZkIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC02MSwyMiArNjEsMjAgQEAgdm9pZCBpbnRlbF9yaW5n X3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIHN0YXRpYyBpbnQKIGdlbjJf cmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBt b2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCXUzMiBjbWQ7 Ci0JaW50IHJldDsKKwl1MzIgY21kLCAqb3V0OwogCiAJY21kID0gTUlfRkxVU0g7CiAKIAlpZiAo bW9kZSAmIEVNSVRfSU5WQUxJREFURSkKIAkJY21kIHw9IE1JX1JFQURfRkxVU0g7CiAKLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlv dXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1 cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkq b3V0KysgPSBjbWQ7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVx LCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC04NCw5ICs4Miw3IEBAIGdlbjJfcmVuZGVyX3Jp bmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogc3Rh dGljIGludAogZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJp bmc7Ci0JdTMyIGNtZDsKLQlpbnQgcmV0OworCXUzMiBjbWQsICpvdXQ7CiAKIAkvKgogCSAqIHJl YWQvd3JpdGUgY2FjaGVzOgpAQCAtMTIzLDEzICsxMTksMTMgQEAgZ2VuNF9yZW5kZXJfcmluZ19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJCQljbWQg fD0gTUlfSU5WQUxJREFURV9JU1A7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09Q KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gY21kOworCSpvdXQrKyA9 IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwog fQpAQCAtMTc0LDM1ICsxNzAsMzMgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiBzdGF0aWMgaW50CiBpbnRlbF9lbWl0 X3Bvc3Rfc3luY19ub256ZXJvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNo X2FkZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBD QUNIRUxJTkVfQllURVM7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJS KG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg1KSk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8Ci0JCQlQSVBF X0NPTlRST0xfU1RBTExfQVRfU0NPUkVCT0FSRCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNj cmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7IC8qIGxvdyBkd29yZCAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyog aGlnaCBkd29yZCAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg1KTsKKwkq b3V0KysgPSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfCBQSVBFX0NPTlRST0xfU1RBTExfQVRfU0NP UkVCT0FSRDsKKwkqb3V0KysgPSBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dU VDsKKwkqb3V0KysgPSAwOyAvKiBsb3cgZHdvcmQgKi8KKwkqb3V0KysgPSAwOyAvKiBoaWdoIGR3 b3JkICovCisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQp OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIob3V0 KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhf T1BfUElQRV9DT05UUk9MKDUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgUElQRV9DT05UUk9M X1FXX1dSSVRFKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyIHwgUElQRV9D T05UUk9MX0dMT0JBTF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDUp OworCSpvdXQrKyA9IFBJUEVfQ09OVFJPTF9RV19XUklURTsKKwkqb3V0KysgPSBzY3JhdGNoX2Fk ZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKKwkqb3V0KysgPSAwOworCSpvdXQrKyA9IDA7 CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0yMTAsMTAgKzIwNCw5IEBAIGludGVsX2VtaXRfcG9zdF9zeW5jX25v bnplcm9fZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiBzdGF0aWMgaW50 CiBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1 MzIgc2NyYXRjaF9hZGRyID0KIAkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRj aCkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwotCXUzMiBmbGFncyA9IDA7CisJdTMyICpvdXQsIGZs YWdzID0gMDsKIAlpbnQgcmV0OwogCiAJLyogRm9yY2UgU05CIHdvcmthcm91bmRzIGZvciBQSVBF X0NPTlRST0wgZmx1c2hlcyAqLwpAQCAtMjQ3LDE1ICsyNDAsMTUgQEAgZ2VuNl9yZW5kZXJfcmlu Z19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJCWZs YWdzIHw9IFBJUEVfQ09OVFJPTF9RV19XUklURSB8IFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKIAl9 CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJu IHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQp KQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9P UF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFncyk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RU KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7CisJKm91dCsrID0gZmxhZ3M7CisJ Km91dCsrID0gc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7CisJKm91dCsr ID0gMDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC0yNjMsMjAgKzI1NiwxNyBAQCBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3Jp bmdfY3Nfc3RhbGxfd2Eoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsK IAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkp CisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09Q X1BJUEVfQ09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlQSVBFX0NPTlRS T0xfQ1NfU1RBTEwgfAotCQkJUElQRV9DT05UUk9MX1NUQUxMX0FUX1NDT1JFQk9BUkQpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50 ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7 CisJKm91dCsrID0gUElQRV9DT05UUk9MX0NTX1NUQUxMIHwgUElQRV9DT05UUk9MX1NUQUxMX0FU X1NDT1JFQk9BUkQ7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSAwOworCWludGVsX3JpbmdfYWR2 YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI4NCwxMSArMjc0LDkgQEAgZ2Vu N19yZW5kZXJfcmluZ19jc19zdGFsbF93YShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Ci0JdTMyIGZsYWdzID0gMDsK LQlpbnQgcmV0OworCXUzMiAqb3V0LCBmbGFncyA9IDA7CiAKIAkvKgogCSAqIEVuc3VyZSB0aGF0 IGFueSBmb2xsb3dpbmcgc2Vxbm8gd3JpdGVzIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJlbmRlcgpA QCAtMzMyLDE1ICszMjAsMTUgQEAgZ2VuN19yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJCWdlbjdfcmVuZGVyX3JpbmdfY3Nfc3Rh bGxfd2EocmVxKTsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJ aWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBmbGFncyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0Kysg PSBHRlhfT1BfUElQRV9DT05UUk9MKDQpOworCSpvdXQrKyA9IGZsYWdzOworCSpvdXQrKyA9IHNj cmF0Y2hfYWRkcjsKKwkqb3V0KysgPSAwOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7 CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTM0OSwyMCArMzM3LDE5IEBAIHN0YXRpYyBpbnQKIGdlbjhf ZW1pdF9waXBlX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAg ICAgICB1MzIgZmxhZ3MsIHUzMiBzY3JhdGNoX2FkZHIpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJf RVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2 KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdzKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu Zywgc2NyYXRjaF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5n X2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkqb3V0 KysgPSBmbGFnczsKKwkqb3V0KysgPSBzY3JhdGNoX2FkZHI7CisJKm91dCsrID0gMDsKKwkqb3V0 KysgPSAwOworCSpvdXQrKyA9IDA7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAog CXJldHVybiAwOwogfQpAQCAtNjU5LDggKzY0Niw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3Jpbmdf Y29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogc3RhdGljIGludCBpbnRl bF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp CiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGk5MTVf d29ya2Fyb3VuZHMgKncgPSAmcmVxLT5pOTE1LT53b3JrYXJvdW5kczsKKwl1MzIgKm91dDsKIAlp bnQgcmV0LCBpOwogCiAJaWYgKHctPmNvdW50ID09IDApCkBAIC02NzAsMTggKzY1NywxOCBAQCBz dGF0aWMgaW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsICh3LT5jb3VudCAqIDIgKyAyKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJu IHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgKHctPmNvdW50ICogMiArIDIpKTsK KwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsKKwkqb3V0KysgPSBN SV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50 OyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCB3LT5yZWdbaV0uYWRkcik7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCB3LT5yZWdbaV0udmFsdWUpOworCQkqb3V0KysgPSBpOTE1 X21taW9fcmVnX29mZnNldCh3LT5yZWdbaV0uYWRkcik7CisJCSpvdXQrKyA9IHctPnJlZ1tpXS52 YWx1ZTsKIAl9Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCSpvdXQrKyA9IE1J X05PT1A7CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNl KHJlcSwgb3V0KTsKIAogCXJldCA9IHJlcS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwgRU1JVF9C QVJSSUVSKTsKIAlpZiAocmV0KQpAQCAtMTM3MCw3ICsxMzU3LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9lbWl0X2JyZWFkY3J1bWIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJKm91 dCsrID0gcmVxLT5nbG9iYWxfc2Vxbm87CiAJKm91dCsrID0gTUlfVVNFUl9JTlRFUlJVUFQ7CiAK LQlyZXEtPnRhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXEtPnJpbmcsIG91dCk7CisJcmVxLT50 YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxLCBvdXQpOwogfQogCiBzdGF0aWMgY29uc3QgaW50 IGk5eHhfZW1pdF9icmVhZGNydW1iX3N6ID0gNDsKQEAgLTE0MTAsNyArMTM5Nyw3IEBAIHN0YXRp YyB2b2lkIGdlbjhfcmVuZGVyX2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKIAkqb3V0KysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKIAkqb3V0KysgPSBNSV9O T09QOwogCi0JcmVxLT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxLT5yaW5nLCBvdXQpOwor CXJlcS0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcSwgb3V0KTsKIH0KIAogc3RhdGljIGNv bnN0IGludCBnZW44X3JlbmRlcl9lbWl0X2JyZWFkY3J1bWJfc3ogPSA4OwpAQCAtMTQyNywyNCAr MTQxNCwyMSBAQCBzdGF0aWMgaW50CiBnZW44X3Jpbmdfc3luY190byhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKIAkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25h bCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7CiAJdTY0IG9mZnNldCA9IEdFTjhf V0FJVF9PRkZTRVQocmVxLT5lbmdpbmUsIHNpZ25hbC0+ZW5naW5lLT5pZCk7CiAJc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0OwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKLQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRS X0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlNSV9TRU1BUEhPUkVfV0FJ VCB8Ci0JCQlNSV9TRU1BUEhPUkVfR0xPQkFMX0dUVCB8Ci0JCQlNSV9TRU1BUEhPUkVfU0FEX0dU RV9TREQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzaWduYWwtPmdsb2JhbF9zZXFubyk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOworCSpvdXQrKyA9IE1JX1NFTUFQSE9SRV9XQUlUIHwgTUlfU0VNQVBIT1JFX0dMT0JB TF9HVFQgfAorCQkgTUlfU0VNQVBIT1JFX1NBRF9HVEVfU0REOworCSpvdXQrKyA9IHNpZ25hbC0+ Z2xvYmFsX3NlcW5vOworCSpvdXQrKyA9IGxvd2VyXzMyX2JpdHMob2Zmc2V0KTsKKwkqb3V0Kysg PSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsK IAogCS8qIFdoZW4gdGhlICFSQ1MgZW5naW5lcyBpZGxlIHdhaXRpbmcgdXBvbiBhIHNlbWFwaG9y ZSwgdGhleSBsb3NlIHRoZWlyCiAJICogcGFnZXRhYmxlcyBhbmQgd2UgbXVzdCByZWxvYWQgdGhl bSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBiYXRjaC4KQEAgLTE0NjEsMjggKzE0NDUsMjcgQEAgc3Rh dGljIGludAogZ2VuNl9yaW5nX3N5bmNfdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCiAJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWwpCiB7Ci0Jc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJdTMyIGR3MSA9IE1JX1NFTUFQSE9SRV9N Qk9YIHwKIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFSRSB8CiAJCSAgTUlfU0VNQVBIT1JFX1JFR0lT VEVSOwogCXUzMiB3YWl0X21ib3ggPSBzaWduYWwtPmVuZ2luZS0+c2VtYXBob3JlLm1ib3gud2Fp dFtyZXEtPmVuZ2luZS0+aHdfaWRdOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKIAlXQVJOX09O KHdhaXRfbWJveCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKTsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJf RVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZHcxIHwgd2FpdF9tYm94KTsKKwkq b3V0KysgPSBkdzEgfCB3YWl0X21ib3g7CiAJLyogVGhyb3VnaG91dCBhbGwgb2YgdGhlIEdFTSBj b2RlLCBzZXFubyBwYXNzZWQgaW1wbGllcyBvdXIgY3VycmVudAogCSAqIHNlcW5vIGlzID49IHRo ZSBsYXN0IHNlcW5vIGV4ZWN1dGVkLiBIb3dldmVyIGZvciBoYXJkd2FyZSB0aGUKIAkgKiBjb21w YXJpc29uIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbi4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgc2lnbmFsLT5nbG9iYWxfc2Vxbm8gLSAxKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwkqb3V0KysgPSBzaWduYWwtPmdsb2JhbF9zZXFubyAtIDE7CisJKm91dCsrID0g MDsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTE1ODMsMTYgKzE1NjYsMTUgQEAgaTh4eF9pcnFfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50CiBic2RfcmluZ19mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAot CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0 OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJ CXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRkxVU0gp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJKm91dCsrID0gTUlfRkxVU0g7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9y aW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCXJldHVybiAwOwogfQogCkBAIC0xNjU4LDIwICsxNjQw LDE3IEBAIGk5NjVfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAkJICAgdTY0IG9mZnNldCwgdTMyIGxlbmd0aCwKIAkJICAgdW5zaWduZWQgaW50IGRpc3Bh dGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWlu dCByZXQ7CisJdTMyICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0J aWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7 CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsCi0JCQlNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAotCQkJTUlfQkFUQ0hfR1RU IHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KLQkJCSAwIDog TUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNl dCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZF Ul9TVEFSVCB8IE1JX0JBVENIX0dUVCB8CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BB VENIX1NFQ1VSRSA/CisJCSAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KTsKKwkqb3V0Kysg PSBvZmZzZXQ7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwog fQpAQCAtMTY4NSw1OSArMTY2NCw1NiBAQCBpODMwX2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCSAgIHVu c2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9 IHJlcS0+cmluZzsKLQl1MzIgY3Nfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2lu ZS0+c2NyYXRjaCk7Ci0JaW50IHJldDsKKwl1MzIgKm91dCwgY3Nfb2Zmc2V0ID0gaTkxNV9nZ3R0 X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwog CiAJLyogRXZpY3QgdGhlIGludmFsaWQgUFRFIFRMQnMgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9DT0xPUl9DT1BZIHwgNDA5Nik7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEk4MzBfVExCX0VOVFJJRVMgPDwgMTYgfCA0KTsgLyogbG9hZCBlYWNoIHBh Z2UgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgY3Nfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgMHhkZWFkYmVlZik7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwot CWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBDT0xPUl9CTFRfQ01EIHwgQkxU X1dSSVRFX1JHQkE7CisJKm91dCsrID0gQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9DT0xPUl9DT1BZ IHwgNDA5NjsKKwkqb3V0KysgPSBJODMwX1RMQl9FTlRSSUVTIDw8IDE2IHwgNDsgLyogbG9hZCBl YWNoIHBhZ2UgKi8KKwkqb3V0KysgPSBjc19vZmZzZXQ7CisJKm91dCsrID0gMHhkZWFkYmVlZjsK Kwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlp ZiAoKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9QSU5ORUQpID09IDApIHsKIAkJaWYg KGxlbiA+IEk4MzBfQkFUQ0hfTElNSVQpCiAJCQlyZXR1cm4gLUVOT1NQQzsKIAotCQlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNiArIDIpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsK KwkJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYgKyAyKTsKKwkJaWYgKElTX0VSUihvdXQp KQorCQkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCQkvKiBCbGl0IHRoZSBiYXRjaCAod2hpY2gg aGFzIG5vdyBhbGwgcmVsb2NzIGFwcGxpZWQpIHRvIHRoZQogCQkgKiBzdGFibGUgYmF0Y2ggc2Ny YXRjaCBibyBhcmVhIChzbyB0aGF0IHRoZSBDUyBuZXZlcgogCQkgKiBzdHVtYmxlcyBvdmVyIGl0 cyB0bGIgaW52YWxpZGF0aW9uIGJ1ZykgLi4uCiAJCSAqLwotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgU1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKLQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsCi0JCQkJQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IDQwOTYpOwotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgRElWX1JPVU5EX1VQKGxlbiwgNDA5NikgPDwgMTYgfCA0MDk2 KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNzX29mZnNldCk7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCA0MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCk7Ci0KLQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0ZMVVNIKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X05PT1ApOwotCQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJCSpvdXQrKyA9IFNSQ19DT1BZ X0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdCQTsKKwkJKm91dCsrID0gQkxUX0RFUFRIXzMyIHwgQkxU X1JPUF9TUkNfQ09QWSB8IDQwOTY7CisJCSpvdXQrKyA9IERJVl9ST1VORF9VUChsZW4sIDQwOTYp IDw8IDE2IHwgNDA5NjsKKwkJKm91dCsrID0gY3Nfb2Zmc2V0OworCQkqb3V0KysgPSA0MDk2Owor CQkqb3V0KysgPSBvZmZzZXQ7CisKKwkJKm91dCsrID0gTUlfRkxVU0g7CisJCSpvdXQrKyA9IE1J X05PT1A7CisJCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAkJLyogLi4uIGFuZCBl eGVjdXRlIGl0LiAqLwogCQlvZmZzZXQgPSBjc19vZmZzZXQ7CiAJfQogCi0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9F UlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQg fCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0 Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkJCTAgOiBNSV9CQVRDSF9OT05f U0VDVVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0JBVENI X0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVDsKKwkqb3V0KysgPSBvZmZzZXQgfCAoZGlzcGF0 Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAwIDogTUlfQkFUQ0hfTk9OX1NF Q1VSRSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpA QCAtMTc0NywxNyArMTcyMywxNiBAQCBpOTE1X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCSAgIHVuc2ln bmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJl cS0+cmluZzsKLQlpbnQgcmV0OworCXUzMiAqb3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsK IAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRD SF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3Mg JiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkJCTAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7 Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9T VEFSVCB8IE1JX0JBVENIX0dUVDsKKwkqb3V0KysgPSBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3Mg JiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSk7CisJ aW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjE3MSw3 ICsyMTQ2LDcgQEAgdm9pZCBpbnRlbF9sZWdhY3lfc3VibWlzc2lvbl9yZXN1bWUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiBzdGF0aWMgaW50IHJpbmdfcmVxdWVzdF9hbGxv YyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7Ci0JaW50IHJldDsKKwl1 MzIgKm91dDsKIAogCUdFTV9CVUdfT04oIXJlcXVlc3QtPmN0eC0+ZW5naW5lW3JlcXVlc3QtPmVu Z2luZS0+aWRdLnBpbl9jb3VudCk7CiAKQEAgLTIxODQsOSArMjE1OSw5IEBAIHN0YXRpYyBpbnQg cmluZ19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkK IAlHRU1fQlVHX09OKCFyZXF1ZXN0LT5lbmdpbmUtPmJ1ZmZlcik7CiAJcmVxdWVzdC0+cmluZyA9 IHJlcXVlc3QtPmVuZ2luZS0+YnVmZmVyOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXF1 ZXN0LCAwKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVn aW4ocmVxdWVzdCwgMCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQp OwogCiAJcmVxdWVzdC0+cmVzZXJ2ZWRfc3BhY2UgLT0gTEVHQUNZX1JFUVVFU1RfU0laRTsKIAly ZXR1cm4gMDsKQEAgLTIyNDEsNyArMjIxNiw3IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3Jfc3BhY2Uo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBieXRlcykKIAlyZXR1cm4gMDsK IH0KIAotaW50IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIGludCBudW1fZHdvcmRzKQordTMyICppbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykKIHsKIAlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcS0+cmluZzsKIAlpbnQgcmVtYWluX2FjdHVhbCA9IHJpbmctPnNpemUgLSBy aW5nLT50YWlsOwpAQCAtMjI0OSw2ICsyMjI0LDcgQEAgaW50IGludGVsX3JpbmdfYmVnaW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQogCWludCBieXRl cyA9IG51bV9kd29yZHMgKiBzaXplb2YodTMyKTsKIAlpbnQgdG90YWxfYnl0ZXMsIHdhaXRfYnl0 ZXM7CiAJYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsKKwl1MzIgKm91dDsKIAogCXRvdGFsX2J5dGVz ID0gYnl0ZXMgKyByZXEtPnJlc2VydmVkX3NwYWNlOwogCkBAIC0yMjc1LDcgKzIyNTEsNyBAQCBp bnQgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50 IG51bV9kd29yZHMpCiAJaWYgKHdhaXRfYnl0ZXMgPiByaW5nLT5zcGFjZSkgewogCQlpbnQgcmV0 ID0gd2FpdF9mb3Jfc3BhY2UocmVxLCB3YWl0X2J5dGVzKTsKIAkJaWYgKHVubGlrZWx5KHJldCkp Ci0JCQlyZXR1cm4gcmV0OworCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKIAlpZiAodW5s aWtlbHkobmVlZF93cmFwKSkgewpAQCAtMjI4OCwzMiArMjI2NCwzNCBAQCBpbnQgaW50ZWxfcmlu Z19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMp CiAJCXJpbmctPnNwYWNlIC09IHJlbWFpbl9hY3R1YWw7CiAJfQogCisJR0VNX0JVR19PTihyaW5n LT50YWlsID4gcmluZy0+c2l6ZSAtIGJ5dGVzKTsKKwlvdXQgPSByaW5nLT52YWRkciArIHJpbmct PnRhaWw7CisJcmluZy0+dGFpbCArPSBieXRlczsKIAlyaW5nLT5zcGFjZSAtPSBieXRlczsKIAlH RU1fQlVHX09OKHJpbmctPnNwYWNlIDwgMCk7Ci0JR0VNX0JVR19PTkxZKHJpbmctPmFkdmFuY2Ug PSByaW5nLT50YWlsICsgYnl0ZXMpOwotCXJldHVybiAwOworCisJcmV0dXJuIG91dDsKIH0KIAog LyogQWxpZ24gdGhlIHJpbmcgdGFpbCB0byBhIGNhY2hlbGluZSBib3VuZGFyeSAqLwogaW50IGlu dGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCWludCBudW1fZHdv cmRzID0KLQkJKHJpbmctPnRhaWwgJiAoQ0FDSEVMSU5FX0JZVEVTIC0gMSkpIC8gc2l6ZW9mKHVp bnQzMl90KTsKLQlpbnQgcmV0OworCQkocmVxLT5yaW5nLT50YWlsICYgKENBQ0hFTElORV9CWVRF UyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7CisJdTMyICpvdXQ7CiAKIAlpZiAobnVtX2R3b3Jk cyA9PSAwKQogCQlyZXR1cm4gMDsKIAogCW51bV9kd29yZHMgPSBDQUNIRUxJTkVfQllURVMgLyBz aXplb2YodWludDMyX3QpIC0gbnVtX2R3b3JkczsKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgbnVtX2R3b3Jkcyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgbnVtX2R3b3Jkcyk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4g UFRSX0VSUihvdXQpOwogCiAJd2hpbGUgKG51bV9kd29yZHMtLSkKLQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX05PT1ApOworCQkqb3V0KysgPSBNSV9OT09QOwogCi0JaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTIzNTcsMTMgKzIzMzUsMTEgQEAgc3RhdGljIHZvaWQgZ2VuNl9ic2Rfc3VibWl0X3Jl cXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCiBzdGF0aWMgaW50 IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUz MiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCXVpbnQz Ml90IGNtZDsKLQlpbnQgcmV0OworCXUzMiBjbWQsICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihv dXQpOwogCiAJY21kID0gTUlfRkxVU0hfRFc7CiAJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49 IDgpCkBAIC0yMzg1LDE2ICsyMzYxLDE2IEBAIHN0YXRpYyBpbnQgZ2VuNl9ic2RfcmluZ19mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJaWYgKG1vZGUg JiBFTUlUX0lOVkFMSURBVEUpCiAJCWNtZCB8PSBNSV9JTlZBTElEQVRFX1RMQiB8IE1JX0lOVkFM SURBVEVfQlNEOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RU KTsKKwkqb3V0KysgPSBjbWQ7CisJKm91dCsrID0gSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8 IE1JX0ZMVVNIX0RXX1VTRV9HVFQ7CiAJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49IDgpIHsK LQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBhZGRyICovCi0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUgKi8KKwkJKm91dCsrID0gMDsgLyogdXBwZXIgYWRk ciAqLworCQkqb3V0KysgPSAwOyAvKiB2YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRlbF9yaW5n X2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJKm91 dCsrID0gMDsKKwkJKm91dCsrID0gTUlfTk9PUDsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAg LTI0MDMsMjMgKzIzNzksMjIgQEAgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkgICB1bnNpZ25l ZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEt PnJpbmc7CiAJYm9vbCBwcGd0dCA9IFVTRVNfUFBHVFQocmVxLT5pOTE1KSAmJgogCQkJIShkaXNw YXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFKTsKLQlpbnQgcmV0OworCXUzMiAqb3V0 OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIob3V0 KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCS8qIEZJWE1FKEJEVyk6IEFkZHJlc3Mgc3Bh Y2UgYW5kIHNlY3VyaXR5IHNlbGVjdG9ycy4gKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf QkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwKLQkJCShkaXNwYXRjaF9mbGFn cyAmIEk5MTVfRElTUEFUQ0hfUlMgPwotCQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDog MCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsr ID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwKKwkJIChkaXNwYXRj aF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPworCQkgTUlfQkFUQ0hfUkVTT1VSQ0VfU1RSRUFN RVIgOiAwKTsKKwkqb3V0KysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJKm91dCsrID0gdXBw ZXJfMzJfYml0cyhvZmZzZXQpOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZh bmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjQyOSwyMiArMjQwNCwyMCBAQCBo c3dfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICB1 NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsK LQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0OworCXUzMiAq b3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIo b3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAot CQkJTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElT UEFUQ0hfU0VDVVJFID8KLQkJCSAwIDogTUlfQkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9O X1NFQ1VSRV9IU1cpIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwot CQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOworCSpvdXQrKyA9IE1JX0JBVENI X0JVRkZFUl9TVEFSVCB8CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VS RSA/CisJCSAwIDogTUlfQkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9IU1cp IHwKKwkJIChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPworCQkgTUlfQkFUQ0hf UkVTT1VSQ0VfU1RSRUFNRVIgOiAwKTsKIAkvKiBiaXQwLTcgaXMgdGhlIGxlbmd0aCBvbiBHRU42 KyAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwkqb3V0KysgPSBvZmZzZXQ7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0 KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjQ1NCwyMCArMjQyNywxOCBAQCBnZW42X2VtaXRfYmJf c3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZzZXQs IHUzMiBsZW4sCiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0OworCXUzMiAqb3V0OwogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJ cmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfQkFU Q0hfQlVGRkVSX1NUQVJUIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VD VVJFID8KLQkJCSAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KSk7CisJKm91dCsrID0gTUlf QkFUQ0hfQlVGRkVSX1NUQVJUIHwKKwkJIChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hf U0VDVVJFID8KKwkJIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFX0k5NjUpOwogCS8qIGJpdDAtNyBp cyB0aGUgbGVuZ3RoIG9uIEdFTjYrICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCk7 Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IG9mZnNldDsKKwlpbnRlbF9y aW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNDc2LDEzICsyNDQ3 LDExIEBAIGdlbjZfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAogc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5y aW5nOwotCXVpbnQzMl90IGNtZDsKLQlpbnQgcmV0OworCXUzMiBjbWQsICpvdXQ7CiAKLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlv dXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1 cm4gUFRSX0VSUihvdXQpOwogCiAJY21kID0gTUlfRkxVU0hfRFc7CiAJaWYgKElOVEVMX0dFTihy ZXEtPmk5MTUpID49IDgpCkBAIC0yNTAzLDE3ICsyNDcyLDE2IEBAIHN0YXRpYyBpbnQgZ2VuNl9y aW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIAkg Ki8KIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJREFURSkKIAkJY21kIHw9IE1JX0lOVkFMSURBVEVf VExCOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LAotCQkJSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOwor CSpvdXQrKyA9IGNtZDsKKwkqb3V0KysgPSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwgTUlf RkxVU0hfRFdfVVNFX0dUVDsKIAlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkgPj0gOCkgewotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHVwcGVyIGFkZHIgKi8KLQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLworCQkqb3V0KysgPSAwOyAvKiB1cHBlciBhZGRyICov CisJCSpvdXQrKyA9IDA7IC8qIHZhbHVlICovCiAJfSBlbHNlICB7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCQkqb3V0Kysg PSAwOworCQkqb3V0KysgPSBNSV9OT09QOwogCX0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDg5NjgzOGNhNTAyYy4uNzc5NjBk YjBkZGU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC0xNDQs NyArMTQ0LDYgQEAgc3RydWN0IGludGVsX3JpbmcgewogCiAJdTMyIGhlYWQ7CiAJdTMyIHRhaWw7 Ci0JR0VNX0JVR19PTkxZX0RFQ0xBUkUodTMyIGFkdmFuY2UpOwogCiAJaW50IHNwYWNlOwogCWlu dCBzaXplOwpAQCAtNDk1LDIxICs0OTQsMTIgQEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiB2b2lkIGludGVsX2xlZ2FjeV9zdWJt aXNzaW9uX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCi1pbnQg X19tdXN0X2NoZWNrIGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsIGludCBuKTsKIGludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxp Z24oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogCi1zdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgZGF0YSkKLXsK LQkqKHVpbnQzMl90ICopKHJpbmctPnZhZGRyICsgcmluZy0+dGFpbCkgPSBkYXRhOwotCXJpbmct PnRhaWwgKz0gNDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdF9yZWco c3RydWN0IGludGVsX3JpbmcgKnJpbmcsIGk5MTVfcmVnX3QgcmVnKQotewotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBpOTE1X21taW9fcmVnX29mZnNldChyZWcpKTsKLX0KK3UzMiBfX211c3RfY2hl Y2sgKmludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGlu dCBuKTsKIAotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZykKK3N0YXRpYyBpbmxpbmUgdm9pZAoraW50ZWxfcmluZ19hZHZhbmNlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgKm91dCkKIHsKIAkvKiBEdW1teSBm dW5jdGlvbi4KIAkgKgpAQCAtNTE5LDE0ICs1MDksMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlu dGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIAkgKiByZXNlcnZlZCBm b3IgdGhlIGNvbW1hbmQgcGFja2V0IChpLmUuIHRoZSB2YWx1ZSBwYXNzZWQgdG8KIAkgKiBpbnRl bF9yaW5nX2JlZ2luKCkpLgogCSAqLwotCUdFTV9CVUdfT05MWV9PTihyaW5nLT50YWlsICE9IHJp bmctPmFkdmFuY2UpOworCUdFTV9CVUdfT04oKHJlcS0+cmluZy0+dmFkZHIgKyByZXEtPnJpbmct PnRhaWwpICE9IG91dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0 KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB2b2lkICphZGRyKQorc3RhdGljIGlubGluZQordTMy IGludGVsX3Jpbmdfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB2b2lk ICphZGRyKQogewogCS8qIERvbid0IHdyaXRlIHJpbmctPnNpemUgKGVxdWl2YWxlbnQgdG8gMCkg YXMgdGhhdCBoYW5ncyBzb21lIEdQVXMuICovCi0JdTMyIG9mZnNldCA9IGFkZHIgLSByaW5nLT52 YWRkcjsKLQlyZXR1cm4gb2Zmc2V0ICYgKHJpbmctPnNpemUgLSAxKTsKKwl1MzIgb2Zmc2V0ID0g YWRkciAtIHJlcS0+cmluZy0+dmFkZHI7CisJR0VNX0JVR19PTihvZmZzZXQgPiByZXEtPnJpbmct PnNpemUpOworCXJldHVybiBvZmZzZXQgJiAocmVxLT5yaW5nLT5zaXplIC0gMSk7CiB9CiAKIGlu dCBfX2ludGVsX3Jpbmdfc3BhY2UoaW50IGhlYWQsIGludCB0YWlsLCBpbnQgc2l6ZSk7Ci0tIAoy LjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==