From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v3] drm/i915: Emit to ringbuffer directly Date: Mon, 12 Sep 2016 10:44:57 +0100 Message-ID: <1473673497-27567-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20160909160450.GE20027@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 435126E39A for ; Mon, 12 Sep 2016 09:45:01 +0000 (UTC) In-Reply-To: <20160909160450.GE20027@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 aWR5LgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogRGF2 ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCAgNzUgKystLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDM3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyAgICAgICAgfCAgNzAgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jICAgICAgIHwgMTMyICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgICAgICAgICAgIHwgMjQ1ICsrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAgNTMgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMgICAgICAgfCAgODggKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jICAgIHwgNjM4ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgfCAgMjQgKy0KIDkgZmls ZXMgY2hhbmdlZCwgNjU1IGluc2VydGlvbnMoKyksIDcwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZGYxMGY0ZTk1NzM2Li4xMzk0NDA4 MjAzYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTU2MSw3 ICs1NjEsNiBAQCBzdGF0aWMgaW5saW5lIGludAogbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcg PSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdp bmU7CiAJdTMyIGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7CiAJY29uc3QgaW50 IG51bV9yaW5ncyA9CkBAIC01NjksNiArNTY4LDcgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAkJaTkxNS5zZW1hcGhvcmVz ID8KIAkJSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9yaW5ncyAtIDEgOgogCQkwOworCXUzMiAq cmJ1ZjsKIAlpbnQgbGVuLCByZXQ7CiAKIAkvKiB3L2E6IElmIEZsdXNoIFRMQiBJbnZhbGlkYXRp b24gTW9kZSBpcyBlbmFibGVkLCBkcml2ZXIgbXVzdCBkbyBhIFRMQgpAQCAtNTkzLDcwICs1OTMs NjQgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUz MiBod19mbGFncykKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KQogCQlsZW4gKz0gMiAr IChudW1fcmluZ3MgPyA0Km51bV9yaW5ncyArIDYgOiAwKTsKIAotCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCBsZW4pOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJf RVJSKHJidWYpOwogCiAJLyogV2FQcm9ncmFtTWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4dDpp dmIsdmx2LGhzdyxiZHcsY2h2ICovCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewot CQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsK KwkJKnJidWYrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRTsKIAkJaWYgKG51bV9y aW5ncykgewogCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCi0JCQlpbnRl bF9yaW5nX2VtaXQocmluZywKLQkJCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7 CisJCQkqcmJ1ZisrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKTsKIAkJCWZvcl9l YWNoX2VuZ2luZShzaWduYWxsZXIsIGRldl9wcml2KSB7CiAJCQkJaWYgKHNpZ25hbGxlciA9PSBl bmdpbmUpCiAJCQkJCWNvbnRpbnVlOwogCi0JCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLAot CQkJCQkJICAgIFJJTkdfUFNNSV9DVEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2UpKTsKLQkJCQlpbnRl bF9yaW5nX2VtaXQocmluZywKLQkJCQkJCV9NQVNLRURfQklUX0VOQUJMRShHRU42X1BTTUlfU0xF RVBfTVNHX0RJU0FCTEUpKTsKKwkJCQkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoCisJ CQkJCSAgUklOR19QU01JX0NUTChzaWduYWxsZXItPm1taW9fYmFzZSkpOworCQkJCSpyYnVmKysg PSBfTUFTS0VEX0JJVF9FTkFCTEUoCisJCQkJCSAgIEdFTjZfUFNNSV9TTEVFUF9NU0dfRElTQUJM RSk7CiAJCQl9CiAJCX0KIAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NFVF9DT05URVhUKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywKLQkJCWk5MTVfZ2d0dF9vZmZzZXQocmVxLT5jdHgtPmVuZ2luZVtSQ1NdLnN0YXRlKSB8 IGZsYWdzKTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKwkqcmJ1ZisrID0gTUlfU0VUX0NPTlRFWFQ7 CisJKnJidWYrKyA9IGk5MTVfZ2d0dF9vZmZzZXQocmVxLT5jdHgtPmVuZ2luZVtSQ1NdLnN0YXRl KSB8IGZsYWdzOwogCS8qCiAJICogdy9hOiBNSV9TRVRfQ09OVEVYVCBtdXN0IGFsd2F5cyBiZSBm b2xsb3dlZCBieSBNSV9OT09QCiAJICogV2FNaVNldENvbnRleHRfSGFuZzpzbmIsaXZiLHZsdgog CSAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkqcmJ1ZisrID0gTUlfTk9P UDsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKIAkJaWYgKG51bV9yaW5ncykg ewogCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCQkJaTkxNV9yZWdfdCBs YXN0X3JlZyA9IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwogCi0JCQlpbnRlbF9yaW5nX2VtaXQo cmluZywKLQkJCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7CisJCQkqcmJ1Zisr ID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKTsKIAkJCWZvcl9lYWNoX2VuZ2luZShz aWduYWxsZXIsIGRldl9wcml2KSB7CiAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCiAJCQkJ CWNvbnRpbnVlOwogCiAJCQkJbGFzdF9yZWcgPSBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxlci0+bW1p b19iYXNlKTsKLQkJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIGxhc3RfcmVnKTsKLQkJCQlp bnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkJCV9NQVNLRURfQklUX0RJU0FCTEUoR0VONl9QU01J X1NMRUVQX01TR19ESVNBQkxFKSk7CisJCQkJKnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KGxhc3RfcmVnKTsKKwkJCQkqcmJ1ZisrID0gX01BU0tFRF9CSVRfRElTQUJMRSgKKwkJCQkJICBH RU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpOwogCQkJfQogCiAJCQkvKiBJbnNlcnQgYSBkZWxh eSBiZWZvcmUgdGhlIG5leHQgc3dpdGNoISAqLwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0J CQkJCU1JX1NUT1JFX1JFR0lTVEVSX01FTSB8Ci0JCQkJCU1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7 Ci0JCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIGxhc3RfcmVnKTsKLQkJCWludGVsX3Jpbmdf ZW1pdChyaW5nLAotCQkJCQlpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCkpOwotCQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCQkJKnJidWYrKyA9IE1JX1NUT1JFX1JF R0lTVEVSX01FTSB8IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKKwkJCSpyYnVmKysgPSBpOTE1X21t aW9fcmVnX29mZnNldChsYXN0X3JlZyk7CisJCQkqcmJ1ZisrID0gaTkxNV9nZ3R0X29mZnNldChl bmdpbmUtPnNjcmF0Y2gpOworCQkJKnJidWYrKyA9IE1JX05PT1A7CiAJCX0KLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsKKwkJKnJidWYrKyA9 IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwogCX0KIAotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVmKTsKIAogCXJldHVy biByZXQ7CiB9CkBAIC02NjQsMjggKzY1OCwyOSBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQogc3RhdGljIGludCByZW1hcF9s MyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHNsaWNlKQogewogCXUzMiAq cmVtYXBfaW5mbyA9IHJlcS0+aTkxNS0+bDNfcGFyaXR5LnJlbWFwX2luZm9bc2xpY2VdOwotCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCBpLCByZXQ7CisJdTMyICpy YnVmOworCWludCBpOwogCiAJaWYgKCFyZW1hcF9pbmZvKQogCQlyZXR1cm4gMDsKIAotCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCBHRU43X0wzTE9HX1NJWkUvNCAqIDIgKyAyKTsKLQlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgR0VON19M M0xPR19TSVpFIC8gNCAqIDIgKyAyKTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRS X0VSUihyYnVmKTsKIAogCS8qCiAJICogTm90ZTogV2UgZG8gbm90IHdvcnJ5IGFib3V0IHRoZSBj b25jdXJyZW50IHJlZ2lzdGVyIGNhY2hlbGluZSBoYW5nCiAJICogaGVyZSBiZWNhdXNlIG5vIG90 aGVyIGNvZGUgc2hvdWxkIGFjY2VzcyB0aGVzZSByZWdpc3RlcnMgb3RoZXIgdGhhbgogCSAqIGF0 IGluaXRpYWxpemF0aW9uIHRpbWUuCiAJICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xP QURfUkVHSVNURVJfSU1NKEdFTjdfTDNMT0dfU0laRS80KSk7CisJKnJidWYrKyA9IE1JX0xPQURf UkVHSVNURVJfSU1NKEdFTjdfTDNMT0dfU0laRSAvIDQpOwogCWZvciAoaSA9IDA7IGkgPCBHRU43 X0wzTE9HX1NJWkUvNDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VON19M M0xPRyhzbGljZSwgaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVtYXBfaW5mb1tpXSk7 CisJCSpyYnVmKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU43X0wzTE9HKHNsaWNlLCBpKSk7 CisJCSpyYnVmKysgPSByZW1hcF9pbmZvW2ldOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBNSV9OT09Q OworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCAzM2M4 NTIyNzY0M2QuLjA2ZjNhYWQzN2JjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwpAQCAtMTM3MCwyNSArMTM3MCwyNSBAQCBpOTE1X2dlbV9leGVjYnVmZmVy X21vdmVfdG9fYWN0aXZlKHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMsCiBzdGF0aWMgaW50CiBpOTE1 X3Jlc2V0X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp CiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldCwgaTsK Kwl1MzIgKnJidWY7CisJaW50IGk7CiAKIAlpZiAoIUlTX0dFTjcocmVxLT5pOTE1KSB8fCByZXEt PmVuZ2luZS0+aWQgIT0gUkNTKSB7CiAJCURSTV9ERUJVRygic29sIHJlc2V0IGlzIGdlbjcvcmNz IG9ubHlcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNCAqIDMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0ICogMyk7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBU Ul9FUlIocmJ1Zik7CiAKIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0JCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9y ZWcocmluZywgR0VON19TT19XUklURV9PRkZTRVQoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgMCk7CisJCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkJKnJidWYrKyA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjdfU09fV1JJVEVfT0ZGU0VUKGkpKTsKKwkJKnJidWYr KyA9IDA7CiAJfQogCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2 YW5jZShyZXEtPnJpbmcsIHJidWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDk1LDE3ICsxNDk1 LDE4IEBAIGV4ZWNidWZfc3VibWl0KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJh bXMsCiAKIAlpZiAocGFyYW1zLT5lbmdpbmUtPmlkID09IFJDUyAmJgogCSAgICBpbnN0cF9tb2Rl ICE9IGRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSkgewotCQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHBhcmFtcy0+cmVxdWVzdC0+cmluZzsKKwkJdTMyICpyYnVmOwogCi0JCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocGFyYW1zLT5yZXF1ZXN0LCA0KTsKLQkJaWYgKHJldCkKLQkJ CXJldHVybiByZXQ7CisJCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHBhcmFtcy0+cmVxdWVzdCwg NCk7CisJCWlmIChJU19FUlIocmJ1ZikpCisJCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKKworCQkq cmJ1ZisrID0gTUlfTk9PUDsKKwkJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwor CQkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoSU5TVFBNKTsKKwkJKnJidWYrKyA9IGlu c3RwX21hc2sgPDwgMTYgfCBpbnN0cF9tb2RlOwogCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEp KTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBJTlNUUE0pOwotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOwotCQlpbnRlbF9yaW5nX2Fk dmFuY2UocmluZyk7CisJCWludGVsX3JpbmdfYWR2YW5jZShwYXJhbXMtPnJlcXVlc3QtPnJpbmcs IHJidWYpOwogCiAJCWRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IGluc3RwX21v ZGU7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCAwYmI0MjMyZjY2YmMu LjllYTgyZGNlYzAyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTY2Mywy MyArNjYzLDIzIEBAIHN0YXRpYyBpbnQgZ2VuOF93cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCiAJCQkgIHVuc2lnbmVkIGVudHJ5LAogCQkJICBkbWFfYWRkcl90IGFk ZHIpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0JaW50IHJldDsKKwl1MzIgKnJi dWY7CiAKIAlCVUdfT04oZW50cnkgPj0gNCk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDYpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOwog Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQlpbnRl bF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgZW50cnkpKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhhZGRyKSk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQlpbnRlbF9yaW5nX2VtaXRf cmVnKHJpbmcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgZW50cnkpKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOworCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkqcmJ1ZisrID0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBlbnRyeSkpOworCSpy YnVmKysgPSB1cHBlcl8zMl9iaXRzKGFkZHIpOworCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lTVEVS X0lNTSgxKTsKKwkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9M RFcoZW5naW5lLCBlbnRyeSkpOworCSpyYnVmKysgPSBsb3dlcl8zMl9iaXRzKGFkZHIpOworCisJ aW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTE2NTUsOCArMTY1NSw4IEBAIHN0YXRpYyB1aW50MzJfdCBnZXRfcGRfb2Zmc2V0KHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCkKIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRjaChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsCiAJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp CiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJdTMyICpyYnVmOwogCWludCByZXQ7 CiAKIAkvKiBOQjogVExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJlZm9yZSBh IHN3aXRjaCAqLwpAQCAtMTY2NCwxNyArMTY2NCwxOCBAQCBzdGF0aWMgaW50IGhzd19tbV9zd2l0 Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJu IHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIocmJ1 ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOworCisJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNU RVJfSU1NKDIpOworCSpyYnVmKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9E Q0xWKGVuZ2luZSkpOworCSpyYnVmKysgPSBQUF9ESVJfRENMVl8yRzsKKwkqcmJ1ZisrID0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKTsKKwkqcmJ1ZisrID0g Z2V0X3BkX29mZnNldChwcGd0dCk7CisJKnJidWYrKyA9IE1JX05PT1A7CiAKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMikpOwotCWludGVsX3JpbmdfZW1pdF9y ZWcocmluZywgUklOR19QUF9ESVJfRENMVihlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgUFBfRElSX0RDTFZfMkcpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9E SVJfQkFTRShlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZ2V0X3BkX29mZnNldChw cGd0dCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2Fk dmFuY2UocmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTE2ODIsOCArMTY4Myw4IEBAIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRj aChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiBzdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNo KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJdTMyICpyYnVm OwogCWludCByZXQ7CiAKIAkvKiBOQjogVExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRh dGVkIGJlZm9yZSBhIHN3aXRjaCAqLwpAQCAtMTY5MSwxNyArMTY5MiwxOCBAQCBzdGF0aWMgaW50 IGdlbjdfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlp ZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKKworCSpyYnVmKysgPSBN SV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsKKwkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo UklOR19QUF9ESVJfRENMVihlbmdpbmUpKTsKKwkqcmJ1ZisrID0gUFBfRElSX0RDTFZfMkc7CisJ KnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7 CisJKnJidWYrKyA9IGdldF9wZF9vZmZzZXQocHBndHQpOworCSpyYnVmKysgPSBNSV9OT09QOwog Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDIpKTsKLQlpbnRl bF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0RDTFYoZW5naW5lKSk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIFBQX0RJUl9EQ0xWXzJHKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJp bmcsIFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGdl dF9wZF9vZmZzZXQocHBndHQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcs IHJidWYpOwogCiAJLyogWFhYOiBSQ1MgaXMgdGhlIG9ubHkgb25lIHRvIGF1dG8gaW52YWxpZGF0 ZSB0aGUgVExCcz8gKi8KIAlpZiAoZW5naW5lLT5pZCAhPSBSQ1MpIHsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwppbmRleCA0OTdkOTliODg0NjguLmVlZTc3OGUyZGRhNiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTE2ODYsMTQgKzExNjg2LDEyIEBAIHN0 YXRpYyBpbnQgaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJfdCBmbGFn cykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdTMyIGZsaXBfbWFz azsKLQlpbnQgcmV0OworCXUzMiBmbGlwX21hc2ssICpyYnVmOwogCi0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VS UihyYnVmKTsKIAogCS8qIENhbid0IHF1ZXVlIG11bHRpcGxlIGZsaXBzLCBzbyB3YWl0IGZvciB0 aGUgcHJldmlvdXMKIAkgKiBvbmUgdG8gZmluaXNoIGJlZm9yZSBleGVjdXRpbmcgdGhlIG5leHQu CkBAIC0xMTcwMiwxMyArMTE3MDAsMTQgQEAgc3RhdGljIGludCBpbnRlbF9nZW4yX3F1ZXVlX2Zs aXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExB TkVfQl9GTElQOwogCWVsc2UKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQV9GTElQ OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IGZsaXBfbWFzayk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9ESVNQTEFZX0ZMSVAgfAotCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMt PnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIGF1eCBkaXNwbGF5IGJhc2UgYWRkcmVzcywgdW51 c2VkICovCisKKwkqcmJ1ZisrID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2s7CisJKnJi dWYrKyA9IE1JX05PT1A7CisJKnJidWYrKyA9IE1JX0RJU1BMQVlfRkxJUCB8CisJCSAgTUlfRElT UExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkqcmJ1ZisrID0gZmItPnBpdGNo ZXNbMF07CisJKnJidWYrKyA9IGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldDsKKwkq cmJ1ZisrID0gMDsgLyogYXV4IGRpc3BsYXkgYmFzZSBhZGRyZXNzLCB1bnVzZWQgKi8KIAogCXJl dHVybiAwOwogfQpAQCAtMTE3MjAsMjYgKzExNzE5LDI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2Vu M19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdTMyIGZsaXBfbWFzazsKLQlpbnQgcmV0OworCXUz MiBmbGlwX21hc2ssICpyYnVmOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwot CWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2 KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCWlmIChp bnRlbF9jcnRjLT5wbGFuZSkKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQ OwogCWVsc2UKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQV9GTElQOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IGZsaXBfbWFzayk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQ TEFZX0ZMSVBfSTkxNSB8Ci0JCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxh bmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKworCSpyYnVmKysgPSBNSV9XQUlUX0ZPUl9FVkVO VCB8IGZsaXBfbWFzazsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKwkqcmJ1ZisrID0gTUlfRElTUExB WV9GTElQX0k5MTUgfAorCQkgIE1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFu ZSk7CisJKnJidWYrKyA9IGZiLT5waXRjaGVzWzBdOworCSpyYnVmKysgPSBpbnRlbF9jcnRjLT5m bGlwX3dvcmstPmd0dF9vZmZzZXQ7CisJKnJidWYrKyA9IE1JX05PT1A7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTExNzUxLDI1ICsxMTc0OSwyMyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVf ZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKKwl1MzIgKnJidWY7CiAJdWludDMyX3QgcGYsIHBpcGVzcmM7Ci0JaW50IHJl dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihy YnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAKIAkvKiBpOTY1KyB1c2VzIHRoZSBsaW5l YXIgb3IgdGlsZWQgb2Zmc2V0cyBmcm9tIHRoZQogCSAqIERpc3BsYXkgUmVnaXN0ZXJzICh3aGlj aCBkbyBub3QgY2hhbmdlIGFjcm9zcyBhIHBhZ2UtZmxpcCkKIAkgKiBzbyB3ZSBuZWVkIG9ubHkg cmVwcm9ncmFtIHRoZSBiYXNlIGFkZHJlc3MuCiAJICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX0RJU1BMQVlfRkxJUCB8Ci0JCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+ cGxhbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0pOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQgfAotCQkJ aW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllclswXSkpOworCSpyYnVmKysg PSBNSV9ESVNQTEFZX0ZMSVAgfCBNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxh bmUpOworCSpyYnVmKysgPSBmYi0+cGl0Y2hlc1swXTsKKwkqcmJ1ZisrID0gaW50ZWxfY3J0Yy0+ ZmxpcF93b3JrLT5ndHRfb2Zmc2V0IHwKKwkJICBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmco ZmItPm1vZGlmaWVyWzBdKTsKIAogCS8qIFhYWCBFbmFibGluZyB0aGUgcGFuZWwtZml0dGVyIGFj cm9zcyBwYWdlLWZsaXAgaXMgc28gZmFyCiAJICogdW50ZXN0ZWQgb24gbm9uLW5hdGl2ZSBtb2Rl cywgc28gaWdub3JlIGl0IGZvciBub3cuCkBAIC0xMTc3Nyw3ICsxMTc3Myw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAJ cGYgPSAwOwogCXBpcGVzcmMgPSBJOTE1X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkg JiAweDBmZmYwZmZmOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBwZiB8IHBpcGVzcmMpOworCSpy YnVmKysgPSBwZiB8IHBpcGVzcmM7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExNzg5LDIxICsxMTc4 NSwxOCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWlu dDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwl1MzIgKnJi dWY7CiAJdWludDMyX3QgcGYsIHBpcGVzcmM7Ci0JaW50IHJldDsKIAotCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9F UlIocmJ1Zik7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQIHwKLQkJ CU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8Ci0JCQlpbnRlbF9mYl9tb2RpZmllcl90b190aWxp bmcoZmItPm1vZGlmaWVyWzBdKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMt PmZsaXBfd29yay0+Z3R0X29mZnNldCk7CisJKnJidWYrKyA9IE1JX0RJU1BMQVlfRkxJUCB8IE1J X0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSk7CisJKnJidWYrKyA9IGZiLT5w aXRjaGVzWzBdIHwgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllclswXSk7 CisJKnJidWYrKyA9IGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldDsKIAogCS8qIENv bnRyYXJ5IHRvIHRoZSBzdWdnZXN0aW9ucyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwKIAkgKiAiRW5h YmxlIFBhbmVsIEZpdHRlciIgZG9lcyBub3Qgc2VlbSB0byBiZSByZXF1aXJlZCB3aGVuIHBhZ2UK QEAgLTExODEzLDcgKzExODA2LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKi8KIAlwZiA9IDA7CiAJcGlwZXNyYyA9IEk5MTVf UkVBRChQSVBFU1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHBmIHwgcGlwZXNyYyk7CisJKnJidWYrKyA9IHBmIHwgcGlwZXNyYzsKIAog CXJldHVybiAwOwogfQpAQCAtMTE4MjUsOCArMTE4MTgsOCBAQCBzdGF0aWMgaW50IGludGVsX2dl bjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXUzMiAqcmJ1ZjsKIAl1aW50MzJfdCBwbGFuZV9i aXQgPSAwOwogCWludCBsZW4sIHJldDsKIApAQCAtMTE4NzEsOSArMTE4NjQsOSBAQCBzdGF0aWMg aW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgbGVuKTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg bGVuKTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCS8q IFVubWFzayB0aGUgZmxpcC1kb25lIGNvbXBsZXRpb24gbWVzc2FnZS4gTm90ZSB0aGF0IHRoZSBi c3BlYyBzYXlzIHRoYXQKIAkgKiB3ZSBzaG91bGQgZG8gdGhpcyBmb3IgYm90aCB0aGUgQkNTIGFu ZCBSQ1MsIGFuZCB0aGF0IHdlIG11c3Qgbm90IHVubWFzawpAQCAtMTE4ODUsMzEgKzExODc4LDI4 IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJICogdG8gemVybyBkb2VzIGxlYWQgdG8gbG9ja3VwcyB3aXRoaW4gTUlfRElTUExBWV9G TElQLgogCSAqLwogCWlmIChyZXEtPmVuZ2luZS0+aWQgPT0gUkNTKSB7Ci0JCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9y ZWcocmluZywgREVSUk1SKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIH4oREVSUk1SX1BJUEVB X1BSSV9GTElQX0RPTkUgfAotCQkJCQkgIERFUlJNUl9QSVBFQl9QUklfRkxJUF9ET05FIHwKLQkJ CQkJICBERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSkpOworCQkqcmJ1ZisrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU0oMSk7CisJCSpyYnVmKysgPSBpOTE1X21taW9fcmVnX29mZnNldChERVJSTVIp OworCQkqcmJ1ZisrID0gfihERVJSTVJfUElQRUFfUFJJX0ZMSVBfRE9ORSB8CisJCQkgICBERVJS TVJfUElQRUJfUFJJX0ZMSVBfRE9ORSB8CisJCQkgICBERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9O RSk7CiAJCWlmIChJU19HRU44KGRldikpCi0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RP UkVfUkVHSVNURVJfTUVNX0dFTjggfAotCQkJCQkgICAgICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQp OworCQkJKnJidWYrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IHwKKwkJCQkgIE1JX1NS TV9MUk1fR0xPQkFMX0dUVDsKIAkJZWxzZQotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NU T1JFX1JFR0lTVEVSX01FTSB8Ci0JCQkJCSAgICAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7Ci0J CWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgREVSUk1SKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsCi0JCQkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAyNTYpOwor CQkJKnJidWYrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8IE1JX1NSTV9MUk1fR0xPQkFMX0dU VDsKKwkJKnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KERFUlJNUik7CisJCSpyYnVmKysg PSBpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDI1NjsKIAkJaWYgKElT X0dFTjgoZGV2KSkgewotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOworCQkJKnJidWYrKyA9IDA7CisJCQkqcmJ1ZisrID0gTUlf Tk9PUDsKIAkJfQogCX0KIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVBf STkxNSB8IHBsYW5lX2JpdCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBd IHwKLQkJCWludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXJbMF0pKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgKE1JX05PT1ApKTsKKwkqcmJ1ZisrID0gTUlfRElTUExB WV9GTElQX0k5MTUgfCBwbGFuZV9iaXQ7CisJKnJidWYrKyA9IGZiLT5waXRjaGVzWzBdIHwgaW50 ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllclswXSk7CisJKnJidWYrKyA9IGlu dGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKIAog CXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCAxNmQ3Y2RkMTEwODIu LjgyYWUzOTY1MTkxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTYwNSw2ICs2MDUs NyBAQCBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdAogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSAm cmVxdWVzdC0+Y3R4LT5lbmdpbmVbZW5naW5lLT5pZF07CisJdTMyICpyYnVmOwogCWludCByZXQ7 CiAKIAkvKiBGbHVzaCBlbm91Z2ggc3BhY2UgdG8gcmVkdWNlIHRoZSBsaWtlbGlob29kIG9mIHdh aXRpbmcgYWZ0ZXIKQEAgLTYzNiw5ICs2MzcsMTEgQEAgaW50IGludGVsX2xvZ2ljYWxfcmluZ19h bGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXF1 ZXN0LCAwKTsKLQlpZiAocmV0KQorCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDAp OworCWlmIChJU19FUlIocmJ1ZikpIHsKKwkJcmV0ID0gUFRSX0VSUihyYnVmKTsKIAkJZ290byBl cnJfdW5waW47CisJfQogCiAJaWYgKCFjZS0+aW5pdGlhbGlzZWQpIHsKIAkJcmV0ID0gZW5naW5l LT5pbml0X2NvbnRleHQocmVxdWVzdCk7CkBAIC02NjQsNiArNjY3LDEzIEBAIGVycl91bnBpbjoK IH0KIAogLyoKKyAqIFJlc2VydmUgc3BhY2UgZm9yIDIgTk9PUHMgYXQgdGhlIGVuZCBvZiBlYWNo IHJlcXVlc3QgdG8gYmUKKyAqIHVzZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBub3QgYmVpbmcgYWxs b3dlZCB0byBkbyBsaXRlCisgKiByZXN0b3JlIHdpdGggSEVBRD09VEFJTCAoV2FJZGxlTGl0ZVJl c3RvcmUpLgorICovCisjZGVmaW5lIFdBX1RBSUxfRFdPUkRTIDIKKworLyoKICAqIGludGVsX2xv Z2ljYWxfcmluZ19hZHZhbmNlKCkgLSBhZHZhbmNlIHRoZSB0YWlsIGFuZCBwcmVwYXJlIGZvciBz dWJtaXNzaW9uCiAgKiBAcmVxdWVzdDogUmVxdWVzdCB0byBhZHZhbmNlIHRoZSBsb2dpY2FsIHJp bmdidWZmZXIgb2YuCiAgKgpAQCAtNjczLDEzICs2ODMsMTIgQEAgZXJyX3VucGluOgogICogcG9p bnQsIHRoZSB0YWlsICppbnNpZGUqIHRoZSBjb250ZXh0IGlzIHVwZGF0ZWQgYW5kIHRoZSBFTFNQ IHdyaXR0ZW4gdG8uCiAgKi8KIHN0YXRpYyBpbnQKLWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNl KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK2ludGVsX2xvZ2ljYWxfcmlu Z19hZHZhbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpyYnVm KQogewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAKLQlpbnRlbF9yaW5n X2FkdmFuY2UocmluZyk7Ci0JcmVxdWVzdC0+dGFpbCA9IHJpbmctPnRhaWw7CisJcmVxdWVzdC0+ dGFpbCA9IHJpbmctPnRhaWwgLSBXQV9UQUlMX0RXT1JEUyAqIHNpemVvZih1MzIpOwogCiAJLyoK IAkgKiBIZXJlIHdlIGFkZCB0d28gZXh0cmEgTk9PUHMgYXMgcGFkZGluZyB0byBhdm9pZApAQCAt Njg3LDkgKzY5NiwxMSBAQCBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJICoKIAkgKiBDYWxsZXIgbXVzdCByZXNlcnZlIFdB X1RBSUxfRFdPUkRTIGZvciB1cyEKIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nLCByYnVmKTsKKwogCXJlcXVlc3QtPndhX3RhaWwgPSByaW5n LT50YWlsOwogCiAJLyogV2Uga2VlcCB0aGUgcHJldmlvdXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3 ZSByZXRpcmUgdGhlIGZvbGxvd2luZwpAQCAtNzgwLDcgKzc5MSw3IEBAIHZvaWQgaW50ZWxfbHJf Y29udGV4dF91bnBpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogc3RhdGljIGludCBp bnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIHsKIAlpbnQgcmV0LCBpOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxLT5yaW5nOworCXUzMiAqcmJ1ZjsKIAlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyAqdyA9ICZy ZXEtPmk5MTUtPndvcmthcm91bmRzOwogCiAJaWYgKHctPmNvdW50ID09IDApCkBAIC03OTAsMTgg KzgwMSwxOCBAQCBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgdy0+Y291bnQgKiAyICsgMik7Ci0J aWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIHct PmNvdW50ICogMiArIDIpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJi dWYpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKHctPmNv dW50KSk7CisJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKHctPmNvdW50KTsKIAlmb3Ig KGkgPSAwOyBpIDwgdy0+Y291bnQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IHctPnJlZ1tpXS5hZGRyKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHctPnJlZ1tpXS52YWx1 ZSk7CisJCSpyYnVmKysgPSBpOTE1X21taW9fcmVnX29mZnNldCh3LT5yZWdbaV0uYWRkcik7CisJ CSpyYnVmKysgPSB3LT5yZWdbaV0udmFsdWU7CiAJfQotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5n KTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVmKTsKIAogCXJldCA9IHJlcS0+ ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwgRU1JVF9CQVJSSUVSKTsKIAlpZiAocmV0KQpAQCAtMTMx NSwyNyArMTMyNiwyNyBAQCBzdGF0aWMgdm9pZCByZXNldF9jb21tb25fcmluZyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCiBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0 X3BkcHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0ID0gcmVxLT5jdHgtPnBwZ3R0OwotCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ ZW5naW5lOwogCWNvbnN0IGludCBudW1fbHJpX2NtZHMgPSBHRU44X0xFR0FDWV9QRFBFUyAqIDI7 Ci0JaW50IGksIHJldDsKKwl1MzIgKnJidWY7CisJaW50IGk7CiAKLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgbnVtX2xyaV9jbWRzICogMiArIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBudW1fbHJpX2NtZHMgKiAyICsgMik7 CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX2xyaV9jbWRzKSk7CisJKnJi dWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9scmlfY21kcyk7CiAJZm9yIChpID0gR0VO OF9MRUdBQ1lfUERQRVMgLSAxOyBpID49IDA7IGktLSkgewogCQljb25zdCBkbWFfYWRkcl90IHBk X2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihwcGd0dCwgaSk7CiAKLQkJaW50ZWxfcmlu Z19lbWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkpKTsKLQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMocGRfZGFkZHIpKTsKLQkJaW50ZWxfcmluZ19l bWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpKTsKKwkJKnJidWYrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkpOworCQkqcmJ1Zisr ID0gdXBwZXJfMzJfYml0cyhwZF9kYWRkcik7CisJCSpyYnVmKysgPSBpOTE1X21taW9fcmVnX29m ZnNldChHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKKwkJKnJidWYrKyA9IGxvd2VyXzMy X2JpdHMocGRfZGFkZHIpOwogCX0KKwkqcmJ1ZisrID0gTUlfTk9PUDsKIAotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50ZWxf cmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEzNDQs OCArMTM1NSw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICAgICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKIAkJCSAg ICAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAq cmluZyA9IHJlcS0+cmluZzsKIAlib29sIHBwZ3R0ID0gIShkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfU0VDVVJFKTsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAogCS8qIERvbid0IHJl bHkgaW4gaHcgdXBkYXRpbmcgUERQcywgc3BlY2lhbGx5IGluIGxpdGUtcmVzdG9yZS4KQEAgLTEz NjYsMTkgKzEzNzcsMTkgQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCXJlcS0+Y3R4LT5wcGd0dC0+cGRfZGlydHlfcmlu Z3MgJj0gfmludGVsX2VuZ2luZV9mbGFnKHJlcS0+ZW5naW5lKTsKIAl9CiAKLQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQ VFJfRVJSKHJidWYpOwogCiAJLyogRklYTUUoQkRXKTogQWRkcmVzcyBzcGFjZSBhbmQgc2VjdXJp dHkgc2VsZWN0b3JzLiAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJf U1RBUlRfR0VOOCB8Ci0JCQkocHBndHQ8PDgpIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfUlMgPwotCQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCB1cHBlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IE1JX0JB VENIX0JVRkZFUl9TVEFSVF9HRU44IHwgKHBwZ3R0IDw8IDgpIHwKKwkJICAoZGlzcGF0Y2hfZmxh Z3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJICBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6 IDApOworCSpyYnVmKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJKnJidWYrKyA9IHVwcGVy XzMyX2JpdHMob2Zmc2V0KTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2 YW5jZShyZXEtPnJpbmcsIHJidWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMzk5LDEzICsxNDEw LDExIEBAIHN0YXRpYyB2b2lkIGdlbjhfbG9naWNhbF9yaW5nX2Rpc2FibGVfaXJxKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Ci0JdTMyIGNtZDsKLQlpbnQgcmV0Owor CXUzMiBjbWQsICpyYnVmOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCA0KTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVl c3QsIDQpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOwogCiAJ Y21kID0gTUlfRkxVU0hfRFcgKyAxOwogCkBAIC0xNDIyLDEzICsxNDMxLDEyIEBAIHN0YXRpYyBp bnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwg dTMyIG1vZGUpCiAJCQljbWQgfD0gTUlfSU5WQUxJREFURV9CU0Q7CiAJfQogCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlJOTE1X0dFTV9I V1NfU0NSQVRDSF9BRERSIHwKLQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAw KTsgLyogdmFsdWUgKi8KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IGNt ZDsKKwkqcmJ1ZisrID0gSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VT RV9HVFQ7CisJKnJidWYrKyA9IDA7IC8qIHVwcGVyIGFkZHIgKi8KKwkqcmJ1ZisrID0gMDsgLyog dmFsdWUgKi8KKworCWludGVsX3JpbmdfYWR2YW5jZShyZXF1ZXN0LT5yaW5nLCByYnVmKTsKIAog CXJldHVybiAwOwogfQpAQCAtMTQzNiwxMyArMTQ0NCwxMCBAQCBzdGF0aWMgaW50IGdlbjhfZW1p dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIHUzMiBtb2RlKQog c3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwKIAkJCQkgIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nID0gcmVxdWVzdC0+cmluZzsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy ZXF1ZXN0LT5lbmdpbmU7CiAJdTMyIHNjcmF0Y2hfYWRkciA9Ci0JCWk5MTVfZ2d0dF9vZmZzZXQo ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7CisJICAgICAgIGk5MTVfZ2d0 dF9vZmZzZXQocmVxdWVzdC0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7 CiAJYm9vbCB2Zl9mbHVzaF93YSA9IGZhbHNlLCBkY19mbHVzaF93YSA9IGZhbHNlOwotCXUzMiBm bGFncyA9IDA7Ci0JaW50IHJldDsKKwl1MzIgKnJidWYsIGZsYWdzID0gMDsKIAlpbnQgbGVuOwog CiAJZmxhZ3MgfD0gUElQRV9DT05UUk9MX0NTX1NUQUxMOwpAQCAtMTQ4NCw0NSArMTQ4OSw0NSBA QCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0LAogCWlmIChkY19mbHVzaF93YSkKIAkJbGVuICs9IDEyOwogCi0JcmV0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgbGVuKTsKKwlpZiAoSVNfRVJS KHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCWlmICh2Zl9mbHVzaF93YSkgewot CQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JCWludGVs X3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqcmJ1ZisrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2 KTsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysgPSAwOworCQkqcmJ1ZisrID0gMDsKKwkJKnJi dWYrKyA9IDA7CisJCSpyYnVmKysgPSAwOwogCX0KIAogCWlmIChkY19mbHVzaF93YSkgewotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCBQSVBFX0NPTlRST0xfRENfRkxVU0hfRU5BQkxFKTsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqcmJ1Zisr ID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkJKnJidWYrKyA9IFBJUEVfQ09OVFJPTF9EQ19G TFVTSF9FTkFCTEU7CisJCSpyYnVmKysgPSAwOworCQkqcmJ1ZisrID0gMDsKKwkJKnJidWYrKyA9 IDA7CisJCSpyYnVmKysgPSAwOwogCX0KIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1Bf UElQRV9DT05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxhZ3MpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAw KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDAp OworCSpyYnVmKysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDYpOworCSpyYnVmKysgPSBmbGFnczsK KwkqcmJ1ZisrID0gc2NyYXRjaF9hZGRyOworCSpyYnVmKysgPSAwOworCSpyYnVmKysgPSAwOwor CSpyYnVmKysgPSAwOwogCiAJaWYgKGRjX2ZsdXNoX3dhKSB7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBJ UEVfQ09OVFJPTF9DU19TVEFMTCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKnJidWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0wo Nik7CisJCSpyYnVmKysgPSBQSVBFX0NPTlRST0xfQ1NfU1RBTEw7CisJCSpyYnVmKysgPSAwOwor CQkqcmJ1ZisrID0gMDsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysgPSAwOwogCX0KIAotCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxdWVzdC0+cmlu ZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1NDIsNDQgKzE1NDcsMzUgQEAgc3RhdGlj IHZvaWQgYnh0X2Ffc2Vxbm9fYmFycmllcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAJaW50ZWxfZmx1c2hfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgpOwog fQogCi0vKgotICogUmVzZXJ2ZSBzcGFjZSBmb3IgMiBOT09QcyBhdCB0aGUgZW5kIG9mIGVhY2gg cmVxdWVzdCB0byBiZQotICogdXNlZCBhcyBhIHdvcmthcm91bmQgZm9yIG5vdCBiZWluZyBhbGxv d2VkIHRvIGRvIGxpdGUKLSAqIHJlc3RvcmUgd2l0aCBIRUFEPT1UQUlMIChXYUlkbGVMaXRlUmVz dG9yZSkuCi0gKi8KLSNkZWZpbmUgV0FfVEFJTF9EV09SRFMgMgotCiBzdGF0aWMgaW50IGdlbjhf ZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKLQlz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIg KnJidWY7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDYgKyBXQV9UQUlMX0RX T1JEUyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdp bihyZXF1ZXN0LCA2ICsgV0FfVEFJTF9EV09SRFMpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJl dHVybiBQVFJfRVJSKHJidWYpOwogCiAJLyogdy9hOiBiaXQgNSBuZWVkcyB0byBiZSB6ZXJvIGZv ciBNSV9GTFVTSF9EVyBhZGRyZXNzLiAqLwogCUJVSUxEX0JVR19PTihJOTE1X0dFTV9IV1NfSU5E RVhfQUREUiAmICgxIDw8IDUpKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfRkxVU0hf RFcgKyAxKSB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LAotCQkJaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSB8Ci0JCQlNSV9G TFVTSF9EV19VU0VfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHJlcXVlc3QtPmZlbmNlLnNlcW5vKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfVVNFUl9JTlRFUlJVUFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK LQlyZXR1cm4gaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmVxdWVzdCk7CisJKnJidWYrKyA9 IChNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVzsKKwkqcmJ1ZisrID0g aW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSB8CisJCSAgTUlfRkxVU0hf RFdfVVNFX0dUVDsKKwkqcmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gcmVxdWVzdC0+ZmVuY2Uuc2Vx bm87CisJKnJidWYrKyA9IE1JX1VTRVJfSU5URVJSVVBUOworCSpyYnVmKysgPSBNSV9OT09QOwor CisJcmV0dXJuIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJlcXVlc3QsIHJidWYpOwogfQog CiBzdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0 LT5yaW5nOwotCWludCByZXQ7CisJdTMyICpyYnVmOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXF1ZXN0LCA4ICsgV0FfVEFJTF9EV09SRFMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgOCArIFdBX1RBSUxfRFdPUkRTKTsK KwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCS8qIFdlJ3Jl IHVzaW5nIHF3b3JkIHdyaXRlLCBzZXFubyBzaG91bGQgYmUgYWxpZ25lZCB0byA4IGJ5dGVzLiAq LwogCUJVSUxEX0JVR19PTihJOTE1X0dFTV9IV1NfSU5ERVggJiAxKTsKQEAgLTE1ODgsMTkgKzE1 ODQsMTggQEAgc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdF9yZW5kZXIoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCSAqIG5lZWQgYSBwcmlvciBDU19TVEFMTCwgd2hp Y2ggaXMgZW1pdHRlZCBieSB0aGUgZmx1c2gKIAkgKiBmb2xsb3dpbmcgdGhlIGJhdGNoLgogCSAq LwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywKLQkJCShQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAotCQkJ IFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8Ci0JCQkgUElQRV9DT05UUk9MX1FXX1dSSVRFKSk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVu Z2luZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxdWVzdCkpOworCSpyYnVmKysgPSBHRlhf T1BfUElQRV9DT05UUk9MKDYpOworCSpyYnVmKysgPSBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9J VkIgfCBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkgIFBJUEVfQ09OVFJPTF9RV19XUklURTsK KwkqcmJ1ZisrID0gaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKTsKKwkq cmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxdWVz dCk7CiAJLyogV2UncmUgdGhyYXNoaW5nIG9uZSBkd29yZCBvZiBIV1MuICovCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQ VCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCXJldHVybiBpbnRlbF9sb2dp Y2FsX3JpbmdfYWR2YW5jZShyZXF1ZXN0KTsKKwkqcmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gTUlf VVNFUl9JTlRFUlJVUFQ7CisJKnJidWYrKyA9IE1JX05PT1A7CisKKwlyZXR1cm4gaW50ZWxfbG9n aWNhbF9yaW5nX2FkdmFuY2UocmVxdWVzdCwgcmJ1Zik7CiB9CiAKIHN0YXRpYyBpbnQgZ2VuOF9p bml0X3Jjc19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbW9jcy5jCmluZGV4IDgwYmI5MjQ3Y2U2Ni4uODA2MDY1OGQ5NTNmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCkBAIC0yNzYsMjMgKzI3NiwyMiBAQCBpbnQgaW50ZWxf bW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMg aW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkKIHsK LQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAllbnVtIGludGVsX2VuZ2lu ZV9pZCBlbmdpbmUgPSByZXEtPmVuZ2luZS0+aWQ7CiAJdW5zaWduZWQgaW50IGluZGV4OwotCWlu dCByZXQ7CisJdTMyICpyYnVmOwogCiAJaWYgKFdBUk5fT04odGFibGUtPnNpemUgPiBHRU45X05V TV9NT0NTX0VOVFJJRVMpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCAyICsgMiAqIEdFTjlfTlVNX01PQ1NfRU5UUklFUyk7Ci0JaWYgKHJldCkKLQkJ cmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIgKyAyICogR0VOOV9O VU1fTU9DU19FTlRSSUVTKTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihy YnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45 X05VTV9NT0NTX0VOVFJJRVMpKTsKKwkqcmJ1ZisrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VO OV9OVU1fTU9DU19FTlRSSUVTKTsKIAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLT5z aXplOyBpbmRleCsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbW9jc19yZWdpc3Rl cihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB0YWJsZS0+dGFibGVb aW5kZXhdLmNvbnRyb2xfdmFsdWUpOworCQkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo bW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CisJCSpyYnVmKysgPSB0YWJsZS0+dGFibGVb aW5kZXhdLmNvbnRyb2xfdmFsdWU7CiAJfQogCiAJLyoKQEAgLTMwNCwxMiArMzAzLDEzIEBAIHN0 YXRpYyBpbnQgZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCiAJICogdGhhdCB2YWx1ZSB0byBhbGwgdGhlIHVzZWQgZW50cmllcy4KIAkgKi8K IAlmb3IgKDsgaW5kZXggPCBHRU45X05VTV9NT0NTX0VOVFJJRVM7IGluZGV4KyspIHsKLQkJaW50 ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIHRhYmxlLT50YWJsZVswXS5jb250cm9sX3ZhbHVlKTsKKwkJ KnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRl eCkpOworCQkqcmJ1ZisrID0gdGFibGUtPnRhYmxlWzBdLmNvbnRyb2xfdmFsdWU7CiAJfQogCi0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5n KTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcs IHJidWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zMzYsMjkgKzMzNiwyNyBAQCBzdGF0aWMgaW5s aW5lIHUzMiBsM2NjX2NvbWJpbmUoY29uc3Qgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRh YmxlLAogc3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKIAkJCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAqdGFi bGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CisJdTMyICpyYnVm OwogCXVuc2lnbmVkIGludCBpOwotCWludCByZXQ7CiAKIAlpZiAoV0FSTl9PTih0YWJsZS0+c2l6 ZSA+IEdFTjlfTlVNX01PQ1NfRU5UUklFUykpCiAJCXJldHVybiAtRU5PREVWOwogCi0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDIgKyBHRU45X05VTV9NT0NTX0VOVFJJRVMpOwotCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyICsgR0VO OV9OVU1fTU9DU19FTlRSSUVTKTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VS UihyYnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfTE9BRF9SRUdJU1RFUl9J TU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMikpOworCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lT VEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyKTsKIAogCWZvciAoaSA9IDA7IGkgPCB0 YWJsZS0+c2l6ZS8yOyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU45X0xO Q0ZDTU9DUyhpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBsM2NjX2NvbWJpbmUodGFibGUs IDIqaSwgMippKzEpKTsKKwkJKnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjlfTE5D RkNNT0NTKGkpKTsKKwkJKnJidWYrKyA9IGwzY2NfY29tYmluZSh0YWJsZSwgMiAqIGksIDIgKiBp ICsgMSk7CiAJfQogCiAJaWYgKHRhYmxlLT5zaXplICYgMHgwMSkgewogCQkvKiBPZGQgdGFibGUg c2l6ZSAtIDEgbGVmdCBvdmVyICovCi0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOV9M TkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbDNjY19jb21iaW5lKHRhYmxl LCAyKmksIDApKTsKKwkJKnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjlfTE5DRkNN T0NTKGkpKTsKKwkJKnJidWYrKyA9IGwzY2NfY29tYmluZSh0YWJsZSwgMiAqIGksIDApOwogCQlp Kys7CiAJfQogCkBAIC0zNjgsMTIgKzM2NiwxMyBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19sM2Nj X3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCSAqIHRoZXkgYXJlIHJl c2VydmVkIGJ5IHRoZSBoYXJkd2FyZS4KIAkgKi8KIAlmb3IgKDsgaSA8IEdFTjlfTlVNX01PQ1Nf RU5UUklFUyAvIDI7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjlfTE5D RkNNT0NTKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGwzY2NfY29tYmluZSh0YWJsZSwg MCwgMCkpOworCQkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9MTkNGQ01PQ1Mo aSkpOworCQkqcmJ1ZisrID0gbDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKTsKIAl9CiAKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwor CSpyYnVmKysgPSBNSV9OT09QOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1 Zik7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwppbmRl eCBhMjRiYzhjNzg4OWYuLjFkZTg2YzMxNjA1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfb3ZlcmxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkuYwpAQCAtMjQzLDggKzI0Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihz dHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBvdmVybGF5LT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwotCWludCByZXQ7CisJdTMyICpyYnVm OwogCiAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwogCVdBUk5fT04oSVNfSTgzMChkZXZfcHJp dikgJiYgIShkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpKTsKQEAgLTI1Mywy MCArMjUyLDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihzdHJ1Y3QgaW50ZWxfb3Zl cmxheSAqb3ZlcmxheSkKIAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7 CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkgeworCXJidWYg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihyYnVmKSkgewogCQlpOTE1 X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Ci0JCXJldHVybiByZXQ7CisJCXJldHVybiBQVFJf RVJSKHJidWYpOwogCX0KIAogCW92ZXJsYXktPmFjdGl2ZSA9IHRydWU7CiAKLQlyaW5nID0gcmVx LT5yaW5nOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVS TEFZX09OKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZD X1VQREFURSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlf V0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBNSV9PVkVSTEFZX0ZMSVAg fCBNSV9PVkVSTEFZX09OOworCSpyYnVmKysgPSBvdmVybGF5LT5mbGlwX2FkZHIgfCBPRkNfVVBE QVRFOworCSpyYnVmKysgPSBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlf RkxJUDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJp bmcsIHJidWYpOwogCiAJcmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJs YXksIHJlcSwgTlVMTCk7CiB9CkBAIC0yNzcsMTAgKzI3Niw4IEBAIHN0YXRpYyBpbnQgaW50ZWxf b3ZlcmxheV9jb250aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvdmVybGF5LT5pOTE1OwogCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwogCXUz MiBmbGlwX2FkZHIgPSBvdmVybGF5LT5mbGlwX2FkZHI7Ci0JdTMyIHRtcDsKLQlpbnQgcmV0Owor CXUzMiAqcmJ1ZiwgdG1wOwogCiAJV0FSTl9PTighb3ZlcmxheS0+YWN0aXZlKTsKIApAQCAtMjk2 LDE2ICsyOTMsMTYgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVlKHN0cnVjdCBp bnRlbF9vdmVybGF5ICpvdmVybGF5LAogCWlmIChJU19FUlIocmVxKSkKIAkJcmV0dXJuIFBUUl9F UlIocmVxKTsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KSB7 CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKHJidWYpKSB7 CiAJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKLQkJcmV0dXJuIHJldDsKKwkJcmV0 dXJuIFBUUl9FUlIocmJ1Zik7CiAJfQogCi0JcmluZyA9IHJlcS0+cmluZzsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCSpyYnVmKysgPSBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFOworCSpy YnVmKysgPSBmbGlwX2FkZHI7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVm KTsKIAogCWludGVsX292ZXJsYXlfc3VibWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLCBOVUxMKTsK IApAQCAtMzU1LDkgKzM1Miw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0 IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKIAl1MzIgZmxpcF9hZGRyID0gb3ZlcmxheS0+ ZmxpcF9hZGRyOwotCWludCByZXQ7CisJdTMyICpyYnVmOwogCiAJV0FSTl9PTighb3ZlcmxheS0+ YWN0aXZlKTsKIApAQCAtMzcxLDMxICszNjcsMzAgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5 X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIAlpZiAoSVNfRVJSKHJlcSkpCiAJ CXJldHVybiBQVFJfRVJSKHJlcSk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7 Ci0JaWYgKHJldCkgeworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElT X0VSUihyYnVmKSkgewogCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Ci0JCXJldHVy biByZXQ7CisJCXJldHVybiBQVFJfRVJSKHJidWYpOwogCX0KIAotCXJpbmcgPSByZXEtPnJpbmc7 CiAJLyogd2FpdCBmb3Igb3ZlcmxheSB0byBnbyBpZGxlICovCi0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBmbGlwX2FkZHIpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZP Ul9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7CisJKnJidWYrKyA9IE1JX09WRVJM QVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUU7CisJKnJidWYrKyA9IGZsaXBfYWRkcjsKKwkq cmJ1ZisrID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CiAJ LyogdHVybiBvdmVybGF5IG9mZiAqLwogCWlmIChJU19JODMwKGRldl9wcml2KSkgewogCQkvKiBX b3JrYXJvdW5kOiBEb24ndCBkaXNhYmxlIHRoZSBvdmVybGF5IGZ1bGx5LCBzaW5jZSBvdGhlcndp c2UKIAkJICogaXQgZGllcyBvbiB0aGUgbmV4dCBPVkVSTEFZX09OIGNtZC4gKi8KLQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJKnJidWYrKyA9IE1JX05P T1A7CisJCSpyYnVmKysgPSBNSV9OT09QOworCQkqcmJ1ZisrID0gTUlfTk9PUDsKIAl9IGVsc2Ug ewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9P RkYpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxpcF9hZGRyKTsKLQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsCi0JCQkJTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZM SVApOworCQkqcmJ1ZisrID0gTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PRkY7CisJCSpy YnVmKysgPSBmbGlwX2FkZHI7CisJCSpyYnVmKysgPSBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dB SVRfRk9SX09WRVJMQVlfRkxJUDsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCisJ aW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gaW50ZWxfb3Zl cmxheV9kb193YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLAogCQkJCQkgICAgIGludGVsX292ZXJs YXlfb2ZmX3RhaWwpOwpAQCAtNDI5LDIzICs0MjQsMjIgQEAgc3RhdGljIGludCBpbnRlbF9vdmVy bGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIAlpZiAo STkxNV9SRUFEKElTUikgJiBJOTE1X09WRVJMQVlfUExBTkVfRkxJUF9QRU5ESU5HX0lOVEVSUlVQ VCkgewogCQkvKiBzeW5jaHJvbm91cyBzbG93cGF0aCAqLwogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcTsKLQkJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7CisJCXUzMiAqcmJ1ZjsK IAogCQlyZXEgPSBhbGxvY19yZXF1ZXN0KG92ZXJsYXkpOwogCQlpZiAoSVNfRVJSKHJlcSkpCiAJ CQlyZXR1cm4gUFRSX0VSUihyZXEpOwogCi0JCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAy KTsKLQkJaWYgKHJldCkgeworCQlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCQlp ZiAoSVNfRVJSKHJidWYpKSB7CiAJCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Ci0J CQlyZXR1cm4gcmV0OworCQkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAJCX0KIAotCQlyaW5nID0g cmVxLT5yaW5nOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlNSV9XQUlUX0ZPUl9FVkVO VCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKLQkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCQkqcmJ1ZisrID0gTUlfV0FJ VF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CisJCSpyYnVmKysgPSBNSV9O T09QOworCisJCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcsIHJidWYpOwogCiAJCXJldCA9 IGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwKIAkJCQkJCSAgICBp bnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZF90YWlsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwppbmRleCA3YTc0NzUwMDc2YzUuLjA2OTU1NjkxZjUyZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtNjEsMjIgKzYxLDIxIEBAIHZv aWQgaW50ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCiBzdGF0 aWMgaW50CiBnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmlu ZzsKLQl1MzIgY21kOwotCWludCByZXQ7CisJdTMyIGNtZCwgKnJidWY7CiAKIAljbWQgPSBNSV9G TFVTSDsKIAogCWlmIChtb2RlICYgRU1JVF9JTlZBTElEQVRFKQogCQljbWQgfD0gTUlfUkVBRF9G TFVTSDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYgKElTX0VS UihyYnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CisKKwkqcmJ1ZisrID0gY21kOworCSpy YnVmKysgPSBNSV9OT09QOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlp bnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAt ODQsOSArODMsNyBAQCBnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHN0YXRpYyBpbnQKIGdlbjRfcmVuZGVyX3JpbmdfZmx1 c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCXUzMiBjbWQ7Ci0JaW50IHJldDsKKwl1 MzIgY21kLCAqcmJ1ZjsKIAogCS8qCiAJICogcmVhZC93cml0ZSBjYWNoZXM6CkBAIC0xMjMsMTMg KzEyMCwxNCBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCB1MzIgbW9kZSkKIAkJCWNtZCB8PSBNSV9JTlZBTElEQVRFX0lTUDsKIAl9CiAK LQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJl dDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIocmJ1Zikp CisJCXJldHVybiBQVFJfRVJSKHJidWYpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKKwkqcmJ1ZisrID0gY21kOworCSpyYnVmKysgPSBNSV9OT09QOworCisJaW50ZWxfcmlu Z19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE3NCwzNSAr MTcyLDM1IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBtb2RlKQogc3RhdGljIGludAogaW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9u emVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1MzIgc2NyYXRjaF9hZGRyID0KIAkJaTkx NV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAyICogQ0FDSEVMSU5FX0JZVEVT OwotCWludCByZXQ7CisJdTMyICpyYnVmOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCA2KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAot CWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDUpKTsKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCVBJUEVfQ09OVFJPTF9T VEFMTF9BVF9TQ09SRUJPQVJEKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRy IHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsg LyogbG93IGR3b3JkICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiBoaWdoIGR3b3Jk ICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwkqcmJ1ZisrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg1KTsKKwkqcmJ1ZisrID0g UElQRV9DT05UUk9MX0NTX1NUQUxMIHwgUElQRV9DT05UUk9MX1NUQUxMX0FUX1NDT1JFQk9BUkQ7 CisJKnJidWYrKyA9IHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOworCSpy YnVmKysgPSAwOyAvKiBsb3cgZHdvcmQgKi8KKwkqcmJ1ZisrID0gMDsgLyogaGlnaCBkd29yZCAq LworCSpyYnVmKysgPSBNSV9OT09QOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYp OwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmlu ZywgcmJ1Zik7CisKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19F UlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBQSVBF X0NPTlRST0xfUVdfV1JJVEUpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIg fCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBHRlhfT1BfUElQRV9D T05UUk9MKDUpOworCSpyYnVmKysgPSBQSVBFX0NPTlRST0xfUVdfV1JJVEU7CisJKnJidWYrKyA9 IHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOworCSpyYnVmKysgPSAwOwor CSpyYnVmKysgPSAwOworCSpyYnVmKysgPSBNSV9OT09QOworCisJaW50ZWxfcmluZ19hZHZhbmNl KHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIxMCwxMCArMjA4LDkgQEAg aW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIHN0YXRpYyBpbnQKIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIgPQogCQlpOTE1X2dndHRfb2Zm c2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Ci0JdTMyIGZs YWdzID0gMDsKKwl1MzIgKnJidWYsIGZsYWdzID0gMDsKIAlpbnQgcmV0OwogCiAJLyogRm9yY2Ug U05CIHdvcmthcm91bmRzIGZvciBQSVBFX0NPTlRST0wgZmx1c2hlcyAqLwpAQCAtMjQ3LDE1ICsy NDQsMTYgQEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgdTMyIG1vZGUpCiAJCWZsYWdzIHw9IFBJUEVfQ09OVFJPTF9RV19XUklURSB8IFBJ UEVfQ09OVFJPTF9DU19TVEFMTDsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg NCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDQpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOworCisJ KnJidWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7CisJKnJidWYrKyA9IGZsYWdzOworCSpy YnVmKysgPSBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKKwkqcmJ1Zisr ID0gMDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxhZ3MpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBz Y3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFu Y2UocmVxLT5yaW5nLCByYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjYzLDIwICsyNjEsMTgg QEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwgdTMyIG1vZGUpCiBzdGF0aWMgaW50CiBnZW43X3JlbmRlcl9yaW5nX2NzX3N0YWxsX3dhKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJdTMyICpyYnVmOwogCi0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRS X0VSUihyYnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9M KDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCVBJUEVfQ09OVFJPTF9DU19TVEFMTCB8 Ci0JCQlQSVBFX0NPTlRST0xfU1RBTExfQVRfU0NPUkVCT0FSRCk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7CisJKnJidWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7CisJKnJidWYrKyA9 IFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8IFBJUEVfQ09OVFJPTF9TVEFMTF9BVF9TQ09SRUJPQVJE OworCSpyYnVmKysgPSAwOworCSpyYnVmKysgPSAwOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJl cS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI4NCwxMSArMjgwLDkgQEAgZ2Vu N19yZW5kZXJfcmluZ19jc19zdGFsbF93YShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Ci0JdTMyIGZsYWdzID0gMDsK LQlpbnQgcmV0OworCXUzMiAqcmJ1ZiwgZmxhZ3MgPSAwOwogCiAJLyoKIAkgKiBFbnN1cmUgdGhh dCBhbnkgZm9sbG93aW5nIHNlcW5vIHdyaXRlcyBvbmx5IGhhcHBlbiB3aGVuIHRoZSByZW5kZXIK QEAgLTMzMiwxNSArMzI2LDE2IEBAIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogCQlnZW43X3JlbmRlcl9yaW5nX2NzX3N0 YWxsX3dhKHJlcSk7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsK KwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgZmxhZ3MpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJi dWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7CisJKnJidWYrKyA9IGZsYWdzOworCSpyYnVm KysgPSBzY3JhdGNoX2FkZHI7CisJKnJidWYrKyA9IDA7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmVxLT5yaW5nLCByYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzQ5LDIwICszNDQsMjAgQEAg c3RhdGljIGludAogZ2VuOF9lbWl0X3BpcGVfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKIAkJICAgICAgIHUzMiBmbGFncywgdTMyIHNjcmF0Y2hfYWRkcikKIHsKLQlz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0OworCXUzMiAqcmJ1 ZjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihy YnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg R0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdzKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IEdGWF9PUF9Q SVBFX0NPTlRST0woNik7CisJKnJidWYrKyA9IGZsYWdzOworCSpyYnVmKysgPSBzY3JhdGNoX2Fk ZHI7CisJKnJidWYrKyA9IDA7CisJKnJidWYrKyA9IDA7CisJKnJidWYrKyA9IDA7CisKKwlpbnRl bF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtNjI1 LDggKzYyMCw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIAogc3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2Vt aXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcmVx LT5pOTE1LT53b3JrYXJvdW5kczsKKwl1MzIgKnJidWY7CiAJaW50IHJldCwgaTsKIAogCWlmICh3 LT5jb3VudCA9PSAwKQpAQCAtNjM2LDE4ICs2MzEsMTggQEAgc3RhdGljIGludCBpbnRlbF9yaW5n X3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAody0+ Y291bnQgKiAyICsgMikpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCB3LT5jb3VudCAqIDIgKyAyKTsKKwlpZiAoSVNfRVJSKHJidWYpKQor CQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FE X1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOworCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lN TSh3LT5jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKyspIHsKLQkJaW50ZWxf cmluZ19lbWl0X3JlZyhyaW5nLCB3LT5yZWdbaV0uYWRkcik7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCB3LT5yZWdbaV0udmFsdWUpOworCQkqcmJ1ZisrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo dy0+cmVnW2ldLmFkZHIpOworCQkqcmJ1ZisrID0gdy0+cmVnW2ldLnZhbHVlOwogCX0KLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJKnJidWYrKyA9IE1JX05PT1A7CiAKLQlpbnRl bF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1 Zik7CiAKIAlyZXQgPSByZXEtPmVuZ2luZS0+ZW1pdF9mbHVzaChyZXEsIEVNSVRfQkFSUklFUik7 CiAJaWYgKHJldCkKQEAgLTEyNzMsODcgKzEyNjgsODAgQEAgc3RhdGljIHZvaWQgcmVuZGVyX3Jp bmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBpbnQg Z2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0 ZXI7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0JaW50IHJldCwgbnVtX3JpbmdzOworCXUz MiAqcmJ1ZjsKKwlpbnQgbnVtX3JpbmdzOwogCiAJbnVtX3JpbmdzID0gSU5URUxfSU5GTyhkZXZf cHJpdiktPm51bV9yaW5nczsKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgKG51bV9yaW5n cy0xKSAqIDgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCAobnVtX3JpbmdzIC0gMSkgKiA4KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQly ZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCWZvcl9lYWNoX2VuZ2luZV9pZCh3YWl0ZXIsIGRldl9w cml2LCBpZCkgewogCQl1NjQgZ3R0X29mZnNldCA9IHJlcS0+ZW5naW5lLT5zZW1hcGhvcmUuc2ln bmFsX2dndHRbaWRdOwogCQlpZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZB TElEKQogCQkJY29udGludWU7CiAKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBF X0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlQSVBFX0NPTlRST0xf R0xPQkFMX0dUVF9JVkIgfAotCQkJCVBJUEVfQ09OVFJPTF9RV19XUklURSB8Ci0JCQkJUElQRV9D T05UUk9MX0NTX1NUQUxMKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMo Z3R0X29mZnNldCkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhndHRf b2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZlbmNlLnNlcW5vKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlN SV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJCQlNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aHdf aWQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqcmJ1ZisrID0gR0ZYX09QX1BJ UEVfQ09OVFJPTCg2KTsKKwkJKnJidWYrKyA9IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8 IFBJUEVfQ09OVFJPTF9RV19XUklURSB8CisJCQkgIFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKKwkJ KnJidWYrKyA9IGxvd2VyXzMyX2JpdHMoZ3R0X29mZnNldCk7CisJCSpyYnVmKysgPSB1cHBlcl8z Ml9iaXRzKGd0dF9vZmZzZXQpOworCQkqcmJ1ZisrID0gcmVxLT5mZW5jZS5zZXFubzsKKwkJKnJi dWYrKyA9IDA7CisJCSpyYnVmKysgPSBNSV9TRU1BUEhPUkVfU0lHTkFMIHwKKwkJCSAgTUlfU0VN QVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKTsKKwkJKnJidWYrKyA9IDA7CiAJfQotCWludGVs X3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVm KTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9 IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5 MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxfZW5naW5l X2lkIGlkOwotCWludCByZXQsIG51bV9yaW5nczsKKwl1MzIgKnJidWY7CisJaW50IG51bV9yaW5n czsKIAogCW51bV9yaW5ncyA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIChudW1fcmluZ3MtMSkgKiA2KTsKLQlpZiAocmV0KQot CQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgKG51bV9yaW5ncyAt IDEpICogNik7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAK IAlmb3JfZWFjaF9lbmdpbmVfaWQod2FpdGVyLCBkZXZfcHJpdiwgaWQpIHsKIAkJdTY0IGd0dF9v ZmZzZXQgPSByZXEtPmVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W2lkXTsKIAkJaWYgKGd0 dF9vZmZzZXQgPT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCkKIAkJCWNvbnRpbnVlOwogCi0J CWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCShNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hf RFdfT1BfU1RPUkVEVyk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCWxvd2VyXzMyX2Jp dHMoZ3R0X29mZnNldCkgfAotCQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOwotCQlpbnRlbF9yaW5n X2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCByZXEtPmZlbmNlLnNlcW5vKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJ TUlfU0VNQVBIT1JFX1NJR05BTCB8Ci0JCQkJTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3 X2lkKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKnJidWYrKyA9IChNSV9GTFVT SF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVzsKKwkJKnJidWYrKyA9IGxvd2VyXzMy X2JpdHMoZ3R0X29mZnNldCkgfCBNSV9GTFVTSF9EV19VU0VfR1RUOworCQkqcmJ1ZisrID0gdXBw ZXJfMzJfYml0cyhndHRfb2Zmc2V0KTsKKwkJKnJidWYrKyA9IHJlcS0+ZmVuY2Uuc2Vxbm87CisJ CSpyYnVmKysgPSBNSV9TRU1BUEhPUkVfU0lHTkFMIHwKKwkJCSAgTUlfU0VNQVBIT1JFX1RBUkdF VCh3YWl0ZXItPmh3X2lkKTsKKwkJKnJidWYrKyA9IDA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCByYnVmKTsKIAogCXJldHVy biAwOwogfQogCiBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKIAlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JaW50IHJldCwgbnVtX3JpbmdzOworCXUzMiAqcmJ1ZjsK KwlpbnQgbnVtX3JpbmdzOwogCiAJbnVtX3JpbmdzID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPm51 bV9yaW5nczsKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgcm91bmRfdXAoKG51bV9yaW5n cy0xKSAqIDMsIDIpKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgcm91bmRfdXAoKG51bV9yaW5ncyAtIDEpICogMywgMikpOworCWlmIChJ U19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOwogCiAJZm9yX2VhY2hfZW5naW5l KGVuZ2luZSwgZGV2X3ByaXYpIHsKIAkJaTkxNV9yZWdfdCBtYm94X3JlZzsKQEAgLTEzNjMsMTYg KzEzNTEsMTcgQEAgc3RhdGljIGludCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIAogCQltYm94X3JlZyA9IHJlcS0+ZW5naW5lLT5zZW1hcGhvcmUubWJveC5z aWduYWxbZW5naW5lLT5od19pZF07CiAJCWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKG1ib3hfcmVn KSkgewotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsK LQkJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbWJveF9yZWcpOwotCQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIHJlcS0+ZmVuY2Uuc2Vxbm8pOworCQkJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNU RVJfSU1NKDEpOworCQkJKnJidWYrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KG1ib3hfcmVnKTsK KwkJCSpyYnVmKysgPSByZXEtPmZlbmNlLnNlcW5vOwogCQl9CiAJfQogCiAJLyogSWYgbnVtX2R3 b3JkcyB3YXMgcm91bmRlZCwgbWFrZSBzdXJlIHRoZSB0YWlsIHBvaW50ZXIgaXMgY29ycmVjdCAq LwogCWlmIChudW1fcmluZ3MgJSAyID09IDApCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJCSpyYnVmKysgPSBNSV9OT09QOwor CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTEzODgsMTcgKzEzNzcsMTggQEAgc3RhdGljIHZvaWQgaTl4eF9zdWJtaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiBzdGF0aWMgaW50IGk5eHhfZW1p dF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCBp bnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJdTMyICpyYnVmOwogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKHJidWYpKQor CQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKKworCSpyYnVmKysgPSBNSV9TVE9SRV9EV09SRF9JTkRF WDsKKwkqcmJ1ZisrID0gSTkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVY X1NISUZUOworCSpyYnVmKysgPSByZXEtPmZlbmNlLnNlcW5vOworCSpyYnVmKysgPSBNSV9VU0VS X0lOVEVSUlVQVDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9EV09SRF9JTkRF WCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9S RV9EV09SRF9JTkRFWF9TSElGVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+ZmVuY2Uu c2Vxbm8pOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50 ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nLCByYnVmKTsK IAogCXJlcS0+dGFpbCA9IHJpbmctPnRhaWw7CiAKQEAgLTE0MjgsNiArMTQxOCw3IEBAIHN0YXRp YyBpbnQgZ2VuOF9yZW5kZXJfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5l OwogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOworCXUzMiAqcmJ1ZjsKIAlp bnQgcmV0OwogCiAJaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkgewpAQCAtMTQzNiwyMiAr MTQyNywyMiBAQCBzdGF0aWMgaW50IGdlbjhfcmVuZGVyX2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJCXJldHVybiByZXQ7CiAJfQogCi0JcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXEsIDgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCA4KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4g UFRSX0VSUihyYnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05U Uk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgKFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RU X0lWQiB8Ci0JCQkgICAgICAgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCSAgICAgICBQSVBF X0NPTlRST0xfUVdfV1JJVEUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfaHdzX3Nl cW5vX2FkZHJlc3MoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXEpKTsKKwkqcmJ1 ZisrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkqcmJ1ZisrID0gKFBJUEVfQ09OVFJPTF9H TE9CQUxfR1RUX0lWQiB8IFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8CisJCSAgUElQRV9DT05UUk9M X1FXX1dSSVRFKTsKKwkqcmJ1ZisrID0gaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MoZW5naW5lKTsK KwkqcmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVx KTsKIAkvKiBXZSdyZSB0aHJhc2hpbmcgb25lIGR3b3JkIG9mIEhXUy4gKi8KLQlpbnRlbF9yaW5n X2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJfSU5URVJSVVBU KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOworCSpyYnVmKysgPSAwOworCSpyYnVmKysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKKwkq cmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nLCByYnVmKTsKIAog CXJlcS0+dGFpbCA9IHJpbmctPnRhaWw7CiAKQEAgLTE0NzAsMjQgKzE0NjEsMjIgQEAgc3RhdGlj IGludAogZ2VuOF9yaW5nX3N5bmNfdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs CiAJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWwpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcmVxLT5pOTE1OwogCXU2NCBvZmZzZXQgPSBHRU44X1dBSVRfT0ZGU0VUKHJlcS0+ ZW5naW5lLCBzaWduYWwtPmVuZ2luZS0+aWQpOwogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dDsKLQlpbnQgcmV0OworCXUzMiAqcmJ1ZjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNCk7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CisK KwkqcmJ1ZisrID0gTUlfU0VNQVBIT1JFX1dBSVQgfCBNSV9TRU1BUEhPUkVfR0xPQkFMX0dUVCB8 CisJCSAgTUlfU0VNQVBIT1JFX1NBRF9HVEVfU0REOworCSpyYnVmKysgPSBzaWduYWwtPmZlbmNl LnNlcW5vOworCSpyYnVmKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJKnJidWYrKyA9IHVw cGVyXzMyX2JpdHMob2Zmc2V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfU0VN QVBIT1JFX1dBSVQgfAotCQkJTUlfU0VNQVBIT1JFX0dMT0JBTF9HVFQgfAotCQkJTUlfU0VNQVBI T1JFX1NBRF9HVEVfU0REKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2lnbmFsLT5mZW5jZS5z ZXFubyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcsIHJidWYpOwog CiAJLyogV2hlbiB0aGUgIVJDUyBlbmdpbmVzIGlkbGUgd2FpdGluZyB1cG9uIGEgc2VtYXBob3Jl LCB0aGV5IGxvc2UgdGhlaXIKIAkgKiBwYWdldGFibGVzIGFuZCB3ZSBtdXN0IHJlbG9hZCB0aGVt IGJlZm9yZSBleGVjdXRpbmcgdGhlIGJhdGNoLgpAQCAtMTUwNCwyOCArMTQ5MywyOCBAQCBzdGF0 aWMgaW50CiBnZW42X3Jpbmdfc3luY190byhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbCkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1MzIgZHcxID0gTUlfU0VNQVBIT1JFX01C T1ggfAogCQkgIE1JX1NFTUFQSE9SRV9DT01QQVJFIHwKIAkJICBNSV9TRU1BUEhPUkVfUkVHSVNU RVI7CiAJdTMyIHdhaXRfbWJveCA9IHNpZ25hbC0+ZW5naW5lLT5zZW1hcGhvcmUubWJveC53YWl0 W3JlcS0+ZW5naW5lLT5od19pZF07Ci0JaW50IHJldDsKKwl1MzIgKnJidWY7CiAKIAlXQVJOX09O KHdhaXRfbWJveCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKTsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBU Ul9FUlIocmJ1Zik7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZHcxIHwgd2FpdF9tYm94KTsK KwkqcmJ1ZisrID0gZHcxIHwgd2FpdF9tYm94OwogCS8qIFRocm91Z2hvdXQgYWxsIG9mIHRoZSBH RU0gY29kZSwgc2Vxbm8gcGFzc2VkIGltcGxpZXMgb3VyIGN1cnJlbnQKIAkgKiBzZXFubyBpcyA+ PSB0aGUgbGFzdCBzZXFubyBleGVjdXRlZC4gSG93ZXZlciBmb3IgaGFyZHdhcmUgdGhlCiAJICog Y29tcGFyaXNvbiBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4uCiAJICovCi0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIHNpZ25hbC0+ZmVuY2Uuc2Vxbm8gLSAxKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2 YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gc2lnbmFsLT5mZW5jZS5zZXFubyAtIDE7CisJKnJidWYr KyA9IDA7CisJKnJidWYrKyA9IE1JX05PT1A7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5y aW5nLCByYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYyNiwxNiArMTYxNSwxNiBAQCBpOHh4 X2lycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHN0YXRpYyBpbnQK IGJzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9k ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0Owor CXUzMiAqcmJ1ZjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0 KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYg KElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfRkxVU0gpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlp bnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IE1JX0ZMVVNIOworCSpyYnVmKysg PSBNSV9OT09QOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAJcmV0 dXJuIDA7CiB9CiAKQEAgLTE3MDEsMjAgKzE2OTAsMTggQEAgaTk2NV9lbWl0X2JiX3N0YXJ0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1NjQgb2Zmc2V0LCB1MzIgbGVu Z3RoLAogCQkgICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKnJidWY7CiAKLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwly YnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJl dHVybiBQVFJfRVJSKHJidWYpOworCisJKnJidWYrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8 IE1JX0JBVENIX0dUVCB8CisJCSAgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNV UkUgPworCQkgIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFX0k5NjUpOworCSpyYnVmKysgPSBvZmZz ZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8 Ci0JCQlNSV9CQVRDSF9HVFQgfAotCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9T RUNVUkUgPwotCQkJIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFX0k5NjUpKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50ZWxf cmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE3MzAs NTcgKzE3MTcsNTkgQEAgaTgzMF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAogewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUz MiBjc19vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKTsKLQlp bnQgcmV0OworCXUzMiAqcmJ1ZjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg Nik7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAKIAkvKiBF dmljdCB0aGUgaW52YWxpZCBQVEUgVExCcyAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBDT0xP Ul9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkEpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBCTFRf REVQVEhfMzIgfCBCTFRfUk9QX0NPTE9SX0NPUFkgfCA0MDk2KTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgSTgzMF9UTEJfRU5UUklFUyA8PCAxNiB8IDQpOyAvKiBsb2FkIGVhY2ggcGFnZSAqLwot CWludGVsX3JpbmdfZW1pdChyaW5nLCBjc19vZmZzZXQpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCAweGRlYWRiZWVmKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxf cmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBDT0xPUl9CTFRfQ01EIHwgQkxUX1dSSVRF X1JHQkE7CisJKnJidWYrKyA9IEJMVF9ERVBUSF8zMiB8IEJMVF9ST1BfQ09MT1JfQ09QWSB8IDQw OTY7CisJKnJidWYrKyA9IEk4MzBfVExCX0VOVFJJRVMgPDwgMTYgfCA0OyAvKiBsb2FkIGVhY2gg cGFnZSAqLworCSpyYnVmKysgPSBjc19vZmZzZXQ7CisJKnJidWYrKyA9IDB4ZGVhZGJlZWY7CisJ KnJidWYrKyA9IE1JX05PT1A7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZywgcmJ1Zik7CiAK IAlpZiAoKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9QSU5ORUQpID09IDApIHsKIAkJ aWYgKGxlbiA+IEk4MzBfQkFUQ0hfTElNSVQpCiAJCQlyZXR1cm4gLUVOT1NQQzsKIAotCQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNiArIDIpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJl dDsKKwkJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2ICsgMik7CisJCWlmIChJU19FUlIo cmJ1ZikpCisJCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCQkvKiBCbGl0IHRoZSBiYXRjaCAo d2hpY2ggaGFzIG5vdyBhbGwgcmVsb2NzIGFwcGxpZWQpIHRvIHRoZQogCQkgKiBzdGFibGUgYmF0 Y2ggc2NyYXRjaCBibyBhcmVhIChzbyB0aGF0IHRoZSBDUyBuZXZlcgogCQkgKiBzdHVtYmxlcyBv dmVyIGl0cyB0bGIgaW52YWxpZGF0aW9uIGJ1ZykgLi4uCiAJCSAqLwotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgU1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsCi0JCQkJQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IDQwOTYp OwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgRElWX1JPVU5EX1VQKGxlbiwgNDA5NikgPDwgMTYg fCA0MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNzX29mZnNldCk7Ci0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCA0MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCk7Ci0K LQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0ZMVVNIKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJCSpyYnVmKysgPSBT UkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkE7CisJCSpyYnVmKysgPSBCTFRfREVQVEhf MzIgfCBCTFRfUk9QX1NSQ19DT1BZIHwgNDA5NjsKKwkJKnJidWYrKyA9IERJVl9ST1VORF9VUChs ZW4sIDQwOTYpIDw8IDE2IHwgNDA5NjsKKwkJKnJidWYrKyA9IGNzX29mZnNldDsKKwkJKnJidWYr KyA9IDQwOTY7CisJCSpyYnVmKysgPSBvZmZzZXQ7CisKKwkJKnJidWYrKyA9IE1JX0ZMVVNIOwor CQkqcmJ1ZisrID0gTUlfTk9PUDsKKworCQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZywgcmJ1Zik7 CiAKIAkJLyogLi4uIGFuZCBleGVjdXRlIGl0LiAqLwogCQlvZmZzZXQgPSBjc19vZmZzZXQ7CiAJ fQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKHJi dWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0J CQkJCTAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCSpyYnVmKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQ7CisJKnJi dWYrKyA9IG9mZnNldCB8IChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8K KwkJICAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu ZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE3OTAsMTcgKzE3NzksMTcgQEAgaTkxNV9l bWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1NjQg b2Zmc2V0LCB1MzIgbGVuLAogCQkgICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0J c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKnJi dWY7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIo cmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOworCisJKnJidWYrKyA9IE1JX0JBVENIX0JV RkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVDsKKwkqcmJ1ZisrID0gb2Zmc2V0IHwgKGRpc3BhdGNo X2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPworCQkgIDAgOiBNSV9CQVRDSF9OT05fU0VD VVJFKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBN SV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0Y2hf ZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkJCTAgOiBNSV9CQVRDSF9OT05fU0VD VVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShy ZXEtPnJpbmcsIHJidWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMTg5LDcgKzIxNzgsNyBAQCB2 b2lkIGludGVsX2xlZ2FjeV9zdWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAKIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKLQlpbnQgcmV0OworCXUzMiAqcmJ1 ZjsKIAogCS8qIEZsdXNoIGVub3VnaCBzcGFjZSB0byByZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2Yg d2FpdGluZyBhZnRlcgogCSAqIHdlIHN0YXJ0IGJ1aWxkaW5nIHRoZSByZXF1ZXN0IC0gaW4gd2hp Y2ggY2FzZSB3ZSB3aWxsIGp1c3QKQEAgLTIxOTksOSArMjE4OCw5IEBAIGludCBpbnRlbF9yaW5n X2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCkKIAogCXJlcXVlc3QtPnJpbmcgPSByZXF1ZXN0LT5lbmdpbmUtPmJ1ZmZlcjsKIAotCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgMCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCAwKTsKKwlpZiAoSVNfRVJSKHJidWYp KQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCXJlcXVlc3QtPnJlc2VydmVkX3NwYWNlIC09 IExFR0FDWV9SRVFVRVNUX1NJWkU7CiAJcmV0dXJuIDA7CkBAIC0yMjU0LDEzICsyMjQzLDE0IEBA IHN0YXRpYyBpbnQgd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIGludCBieXRlcykKIAlyZXR1cm4gMDsKIH0KIAotaW50IGludGVsX3JpbmdfYmVnaW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQordTMyICppbnRl bF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3 b3JkcykKIHsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlpbnQgcmVt YWluX2FjdHVhbCA9IHJpbmctPnNpemUgLSByaW5nLT50YWlsOwogCWludCByZW1haW5fdXNhYmxl ID0gcmluZy0+ZWZmZWN0aXZlX3NpemUgLSByaW5nLT50YWlsOwogCWludCBieXRlcyA9IG51bV9k d29yZHMgKiBzaXplb2YodTMyKTsKIAlpbnQgdG90YWxfYnl0ZXMsIHdhaXRfYnl0ZXM7CisJdTMy ICpyYnVmOwogCWJvb2wgbmVlZF93cmFwID0gZmFsc2U7CiAKIAl0b3RhbF9ieXRlcyA9IGJ5dGVz ICsgcmVxLT5yZXNlcnZlZF9zcGFjZTsKQEAgLTIyODgsNyArMjI3OCw3IEBAIGludCBpbnRlbF9y aW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3Jk cykKIAlpZiAod2FpdF9ieXRlcyA+IHJpbmctPnNwYWNlKSB7CiAJCWludCByZXQgPSB3YWl0X2Zv cl9zcGFjZShyZXEsIHdhaXRfYnl0ZXMpOwogCQlpZiAodW5saWtlbHkocmV0KSkKLQkJCXJldHVy biByZXQ7CisJCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAogCWlmICh1bmxpa2VseShuZWVk X3dyYXApKSB7CkBAIC0yMzAzLDcgKzIyOTMsMTEgQEAgaW50IGludGVsX3JpbmdfYmVnaW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQogCiAJcmluZy0+ c3BhY2UgLT0gYnl0ZXM7CiAJR0VNX0JVR19PTihyaW5nLT5zcGFjZSA8IDApOwotCXJldHVybiAw OworCisJcmJ1ZiA9ICh1MzIgKikocmluZy0+dmFkZHIgKyByaW5nLT50YWlsKTsKKwlyaW5nLT50 YWlsICs9IGJ5dGVzOworCisJcmV0dXJuIHJidWY7CiB9CiAKIC8qIEFsaWduIHRoZSByaW5nIHRh aWwgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkgKi8KQEAgLTIzMTIsMjAgKzIzMDYsMjAgQEAgaW50 IGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCWludCBudW1fZHdv cmRzID0KIAkJKHJpbmctPnRhaWwgJiAoQ0FDSEVMSU5FX0JZVEVTIC0gMSkpIC8gc2l6ZW9mKHVp bnQzMl90KTsKLQlpbnQgcmV0OworCXUzMiAqcmJ1ZjsKIAogCWlmIChudW1fZHdvcmRzID09IDAp CiAJCXJldHVybiAwOwogCiAJbnVtX2R3b3JkcyA9IENBQ0hFTElORV9CWVRFUyAvIHNpemVvZih1 aW50MzJfdCkgLSBudW1fZHdvcmRzOwotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBudW1f ZHdvcmRzKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgbnVtX2R3b3Jkcyk7CisJaWYgKElTX0VSUihyYnVmKSkKKwkJcmV0dXJuIFBUUl9F UlIocmJ1Zik7CiAKIAl3aGlsZSAobnVtX2R3b3Jkcy0tKQotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJCSpyYnVmKysgPSBNSV9OT09QOwogCi0JaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nLCByYnVmKTsKIAogCXJldHVybiAwOwog fQpAQCAtMjM2OSwxMyArMjM2MywxMSBAQCBzdGF0aWMgdm9pZCBnZW42X2JzZF9zdWJtaXRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAKIHN0YXRpYyBpbnQg Z2VuNl9ic2RfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMy IG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JdWludDMy X3QgY21kOwotCWludCByZXQ7CisJdTMyIGNtZCwgKnJidWY7CiAKLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJS KHJidWYpOwogCiAJY21kID0gTUlfRkxVU0hfRFc7CiAJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUp ID49IDgpCkBAIC0yMzk3LDE2ICsyMzg5LDE4IEBAIHN0YXRpYyBpbnQgZ2VuNl9ic2RfcmluZ19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJaWYgKG1v ZGUgJiBFTUlUX0lOVkFMSURBVEUpCiAJCWNtZCB8PSBNSV9JTlZBTElEQVRFX1RMQiB8IE1JX0lO VkFMSURBVEVfQlNEOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0Vf R1RUKTsKKwkqcmJ1ZisrID0gY21kOworCSpyYnVmKysgPSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9B RERSIHwgTUlfRkxVU0hfRFdfVVNFX0dUVDsKIAlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkgPj0g OCkgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHVwcGVyIGFkZHIgKi8KLQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLworCQkqcmJ1ZisrID0gMDsgLyogdXBw ZXIgYWRkciAqLworCQkqcmJ1ZisrID0gMDsgLyogdmFsdWUgKi8KIAl9IGVsc2UgIHsKLQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 CisJCSpyYnVmKysgPSAwOworCQkqcmJ1ZisrID0gTUlfTk9PUDsKIAl9Ci0JaW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CisK IAlyZXR1cm4gMDsKIH0KIApAQCAtMjQxNSwyMyArMjQwOSwyMyBAQCBnZW44X2VtaXRfYmJfc3Rh cnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZzZXQsIHUz MiBsZW4sCiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlib29sIHBwZ3R0ID0gVVNFU19QUEdUVChyZXEt Pmk5MTUpICYmCiAJCQkhKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpOwot CWludCByZXQ7CisJdTMyICpyYnVmOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQp OwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCA0KTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1cm4gUFRSX0VSUihyYnVmKTsKIAogCS8q IEZJWE1FKEJEVyk6IEFkZHJlc3Mgc3BhY2UgYW5kIHNlY3VyaXR5IHNlbGVjdG9ycy4gKi8KLQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8 PDgpIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwotCQkJIE1JX0JB VENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dl cl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8zMl9iaXRz KG9mZnNldCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5n X2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwg KHBwZ3R0IDw8IDgpIHwKKwkJICAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8K KwkJICBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApOworCSpyYnVmKysgPSBsb3dlcl8z Ml9iaXRzKG9mZnNldCk7CisJKnJidWYrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqcmJ1 ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcsIHJidWYpOwog CiAJcmV0dXJuIDA7CiB9CkBAIC0yNDQxLDIyICsyNDM1LDIxIEBAIGhzd19lbWl0X2JiX3N0YXJ0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgIHU2NCBvZmZzZXQsIHUzMiBs ZW4sCiAJCSAgdW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9y aW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJdTMyICpyYnVmOwogCi0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJcmJ1 ZiA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKHJidWYpKQorCQlyZXR1 cm4gUFRSX0VSUihyYnVmKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfQkFUQ0hf QlVGRkVSX1NUQVJUIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJF ID8KLQkJCSAwIDogTUlfQkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9IU1cp IHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwotCQkJIE1JX0JBVENI X1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOworCSpyYnVmKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RB UlQgfAorCQkgIChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KKwkJICAw IDogTUlfQkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9IU1cpIHwKKwkJICAo ZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJICBNSV9CQVRDSF9SRVNPVVJD RV9TVFJFQU1FUiA6IDApOwogCS8qIGJpdDAtNyBpcyB0aGUgbGVuZ3RoIG9uIEdFTjYrICovCi0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCSpyYnVmKysgPSBvZmZzZXQ7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nLCBy YnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjQ2NiwyMCArMjQ1OSwxOSBAQCBnZW42X2VtaXRf YmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZz ZXQsIHUzMiBsZW4sCiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1 Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0OworCXUzMiAqcmJ1ZjsK IAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OworCXJidWYgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYgKElTX0VSUihyYnVm KSkKKwkJcmV0dXJuIFBUUl9FUlIocmJ1Zik7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJ CU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BB VENIX1NFQ1VSRSA/Ci0JCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSkpOworCSpyYnVm KysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAorCQkgIChkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfU0VDVVJFID8KKwkJICAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KTsKIAkv KiBiaXQwLTcgaXMgdGhlIGxlbmd0aCBvbiBHRU42KyAqLwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gb2Zmc2V0 OworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZywgcmJ1Zik7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTI0ODgsMTMgKzI0ODAsMTEgQEAgZ2VuNl9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCiBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JdWludDMyX3QgY21kOwotCWludCByZXQ7CisJdTMy IGNtZCwgKnJidWY7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKKwlyYnVmID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlm IChJU19FUlIocmJ1ZikpCisJCXJldHVybiBQVFJfRVJSKHJidWYpOwogCiAJY21kID0gTUlfRkxV U0hfRFc7CiAJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49IDgpCkBAIC0yNTE1LDE3ICsyNTA1 LDE3IEBAIHN0YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCB1MzIgbW9kZSkKIAkgKi8KIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJREFURSkK IAkJY21kIHw9IE1JX0lOVkFMSURBVEVfVExCOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8 IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCSpyYnVmKysgPSBjbWQ7CisJKnJidWYrKyA9IEk5MTVf R0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RUOwogCWlmIChJTlRFTF9H RU4ocmVxLT5pOTE1KSA+PSA4KSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdXBw ZXIgYWRkciAqLwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHZhbHVlICovCisJCSpy YnVmKysgPSAwOyAvKiB1cHBlciBhZGRyICovCisJCSpyYnVmKysgPSAwOyAvKiB2YWx1ZSAqLwog CX0gZWxzZSAgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysgPSBNSV9OT09QOwog CX0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVx LT5yaW5nLCByYnVmKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCmluZGV4IDdmNjRkNjExMTU5Yi4uNTNkY2Q3YjlhNzJkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC00NTYsMzAgKzQ1NiwxMiBAQCB2b2lk IGludGVsX2xlZ2FjeV9zdWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogCiBpbnQgaW50ZWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpOwogCi1pbnQgX19tdXN0X2NoZWNrIGludGVs X3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBuKTsKK3Uz MiBfX211c3RfY2hlY2sgKmludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIGludCBuKTsKIGludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19jYWNoZWxpbmVf YWxpZ24oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogCi1zdGF0aWMgaW5saW5l IHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgZGF0YSkK K3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3Jpbmcg KnJpbmcsIHUzMiAqcmJ1ZikKIHsKLQkqKHVpbnQzMl90ICopKHJpbmctPnZhZGRyICsgcmluZy0+ dGFpbCkgPSBkYXRhOwotCXJpbmctPnRhaWwgKz0gNDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk IGludGVsX3JpbmdfZW1pdF9yZWcoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIGk5MTVfcmVnX3Qg cmVnKQotewotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpOTE1X21taW9fcmVnX29mZnNldChyZWcp KTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZykKLXsKLQkvKiBEdW1teSBmdW5jdGlvbi4KLQkgKgotCSAqIFRoaXMgc2Vy dmVzIGFzIGEgcGxhY2Vob2xkZXIgaW4gdGhlIGNvZGUgc28gdGhhdCB0aGUgcmVhZGVyCi0JICog Y2FuIGNvbXBhcmUgYWdhaW5zdCB0aGUgcHJlY2VkaW5nIGludGVsX3JpbmdfYmVnaW4oKSBhbmQK LQkgKiBjaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgZHdvcmRzIGVtaXR0ZWQgbWF0Y2hlcyB0aGUg c3BhY2UKLQkgKiByZXNlcnZlZCBmb3IgdGhlIGNvbW1hbmQgcGFja2V0IChpLmUuIHRoZSB2YWx1 ZSBwYXNzZWQgdG8KLQkgKiBpbnRlbF9yaW5nX2JlZ2luKCkpLgotCSAqLworCUdFTV9CVUdfT04o KHJpbmctPnZhZGRyICsgcmluZy0+dGFpbCkgIT0gcmJ1Zik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg dTMyIGludGVsX3Jpbmdfb2Zmc2V0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgdmFsdWUp Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==