From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v5] drm/i915: Emit to ringbuffer directly Date: Wed, 8 Feb 2017 14:14:34 +0000 Message-ID: <1486563274-7960-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20170208133653.GR11545@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBED36E0F9 for ; Wed, 8 Feb 2017 14:14:45 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id r18so33535574wmd.3 for ; Wed, 08 Feb 2017 06:14:45 -0800 (PST) In-Reply-To: <20170208133653.GR11545@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcmVt b3ZlcyB0aGUgdXNhZ2Ugb2YgaW50ZWxfcmluZ19lbWl0IGluIGZhdm91ciBvZgpkaXJlY3RseSB3 cml0aW5nIHRvIHRoZSByaW5nIGJ1ZmZlci4KCmludGVsX3JpbmdfZW1pdCB3YXMgcHJldmVudGlu ZyB0aGUgY29tcGlsZXIgZm9yIG9wdGltaXNpbmcKZmV0Y2ggYW5kIGluY3JlbWVudCBvZiB0aGUg Y3VycmVudCByaW5nIGJ1ZmZlciBwb2ludGVyIGFuZAp0aGVyZWZvcmUgZ2VuZXJhdGluZyB2ZXJ5 IHZlcmJvc2UgY29kZSBmb3IgZXZlcnkgd3JpdGUuCgpJdCBoYWQgbm8gdXNlZnVsIHB1cnBvc2Ug c2luY2UgYWxsIHJpbmdidWZmZXIgb3BlcmF0aW9ucwphcmUgc3RhcnRlZCBhbmQgZW5kZWQgd2l0 aCBpbnRlbF9yaW5nX2JlZ2luIGFuZAppbnRlbF9yaW5nX2FkdmFuY2UgcmVzcGVjdGl2ZWx5LCB3 aXRoIG5vIGJhaWwgb3V0IGluIHRoZQptaWRkbGUgcG9zc2libGUsIHNvIGl0IGlzIGZpbmUgdG8g aW5jcmVtZW50IHRoZSB0YWlsIGluCmludGVsX3JpbmdfYmVnaW4gYW5kIGxldCB0aGUgY29kZSBt YW5hZ2UgdGhlIHBvaW50ZXIKaXRzZWxmLgoKVXNlbGVzcyBpbnN0cnVjdGlvbiByZW1vdmFsIGFt b3VudHMgdG8gYXBwcm94aW1hdGVseQp0d28gYW5kIGhhbGYga2lsb2J5dGVzIG9mIHNhdmVkIHRl eHQgb24gbXkgYnVpbGQuCgpOb3Qgc3VyZSBpZiB0aGlzIGhhcyBhbnkgbWVhc3VyYWJsZSBwZXJm b3JtYW5jZQppbXBsaWNhdGlvbnMgYnV0IGV4ZWN1dGluZyBhIHRvbiBvZiB1c2VsZXNzIGluc3Ry dWN0aW9ucwpvbiBmYXN0IHBhdGhzIGNhbm5vdCBiZSBnb29kLgoKUGF0Y2ggaXMgbm90IGZ1bGx5 IHBvbGlzaGVkLCBidXQgaXQgY29tcGlsZXMgYW5kIHJ1bnMKb24gR2VuOSBhdCBsZWFzdC4KCnYy OgogKiBDaGFuZ2UgcmV0dXJuIGZyb20gaW50ZWxfcmluZ19iZWdpbiB0byBlcnJvciBwb2ludGVy IGJ5CiAgIHBvcHVsYXIgZGVtYW5kLgogKiBNb3ZlIHRhaWwgaW5jcmVtZW50IHRvIGludGVsX3Jp bmdfYWR2YW5jZSB0byBlbmFibGUgc29tZQogICBlcnJvciBjaGVja2luZy4KCnYzOgogKiBNb3Zl IHRhaWwgYWR2YW5jZSBiYWNrIGludG8gaW50ZWxfcmluZ19iZWdpbi4KICogUmViYXNlIGFuZCB0 aWR5LgoKdjQ6CiAqIENvbXBsZXRlIHJlYmFzZSBhZnRlciBhIGZldyBtb250aHMgc2luY2UgdjMu Cgp2NToKICogUmVtb3ZlIHVuZWNlc3NhcnkgY2FzdCBhbmQgZml4ICFkZWJ1ZyBjb21waWxlLiAo Q2hyaXMgV2lsc29uKQoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICB8ICA3NiAr Ky0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDQwICsr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgIDY5ICsrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgICB8ICAgNiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwgMTMyICsrKystLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAxNTYgKysrKystLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAgNTEgKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgfCAgNzkgKystLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICB8IDQ4NyArKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oICAgIHwgIDE4ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA1MTMgaW5zZXJ0aW9ucygrKSwgNjAx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRl eCA2ODAxMDU0MjFiYjkuLjQ5MDcwYjdhYWQzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYwpAQCAtNTg0LDEwICs1ODQsOSBAQCBzdGF0aWMgaW5saW5lIGludAogbWlf c2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFn cykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7Ci0J c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0J dTMyIGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7CisJdTMyICpvdXQsIGZsYWdz ID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7CiAJY29uc3QgaW50IG51bV9yaW5ncyA9CiAJ CS8qIFVzZSBhbiBleHRlbmRlZCB3L2Egb24gaXZiKyBpZiBzaWduYWxsaW5nIGZyb20gb3RoZXIg cmluZ3MgKi8KIAkJaTkxNS5zZW1hcGhvcmVzID8KQEAgLTYxNyw5OSArNjE2LDkyIEBAIG1pX3Nl dF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3Mp CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKIAkJbGVuICs9IDIgKyAobnVtX3Jpbmdz ID8gNCpudW1fcmluZ3MgKyA2IDogMCk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg bGVuKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCBsZW4pOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAog CS8qIFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRNaVNldENvbnRleHQ6aXZiLHZsdixoc3csYmR3 LGNodiAqLwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKLQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRSk7CisJCSpvdXQrKyA9IE1J X0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRTsKIAkJaWYgKG51bV9yaW5ncykgewogCQkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCi0JCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywKLQkJCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7CisJCQkqb3V0KysgPSBN SV9MT0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3MpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25h bGxlciwgZGV2X3ByaXYsIGlkKSB7CiAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCiAJCQkJ CWNvbnRpbnVlOwogCi0JCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLAotCQkJCQkJICAgIFJJ TkdfUFNNSV9DVEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2UpKTsKLQkJCQlpbnRlbF9yaW5nX2VtaXQo cmluZywKLQkJCQkJCV9NQVNLRURfQklUX0VOQUJMRShHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FC TEUpKTsKKwkJCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldCgKKwkJCQkJICAgUklOR19Q U01JX0NUTChzaWduYWxsZXItPm1taW9fYmFzZSkpOworCQkJCSpvdXQrKyA9IF9NQVNLRURfQklU X0VOQUJMRSgKKwkJCQkJIEdFTjZfUFNNSV9TTEVFUF9NU0dfRElTQUJMRSk7CiAJCQl9CiAJCX0K IAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX1NFVF9DT05URVhUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCWk5MTVf Z2d0dF9vZmZzZXQocmVxLT5jdHgtPmVuZ2luZVtSQ1NdLnN0YXRlKSB8IGZsYWdzKTsKKwkqb3V0 KysgPSBNSV9OT09QOworCSpvdXQrKyA9IE1JX1NFVF9DT05URVhUOworCSpvdXQrKyA9IGk5MTVf Z2d0dF9vZmZzZXQocmVxLT5jdHgtPmVuZ2luZVtSQ1NdLnN0YXRlKSB8IGZsYWdzOwogCS8qCiAJ ICogdy9hOiBNSV9TRVRfQ09OVEVYVCBtdXN0IGFsd2F5cyBiZSBmb2xsb3dlZCBieSBNSV9OT09Q CiAJICogV2FNaVNldENvbnRleHRfSGFuZzpzbmIsaXZiLHZsdgogCSAqLwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9OT09QKTsKKwkqb3V0KysgPSBNSV9OT09QOwogCiAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNykgewogCQlpZiAobnVtX3JpbmdzKSB7CiAJCQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpzaWduYWxsZXI7CiAJCQlpOTE1X3JlZ190IGxhc3RfcmVnID0ge307IC8qIGtl ZXAgZ2NjIHF1aWV0ICovCiAKLQkJCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCQlNSV9MT0FE X1JFR0lTVEVSX0lNTShudW1fcmluZ3MpKTsKKwkJCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJf SU1NKG51bV9yaW5ncyk7CiAJCQlmb3JfZWFjaF9lbmdpbmUoc2lnbmFsbGVyLCBkZXZfcHJpdiwg aWQpIHsKIAkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKIAkJCQkJY29udGludWU7CiAKIAkJ CQlsYXN0X3JlZyA9IFJJTkdfUFNNSV9DVEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2UpOwotCQkJCWlu dGVsX3JpbmdfZW1pdF9yZWcocmluZywgbGFzdF9yZWcpOwotCQkJCWludGVsX3JpbmdfZW1pdChy aW5nLAotCQkJCQkJX01BU0tFRF9CSVRfRElTQUJMRShHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FC TEUpKTsKKwkJCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChsYXN0X3JlZyk7CisJCQkJ Km91dCsrID0gX01BU0tFRF9CSVRfRElTQUJMRSgKKwkJCQkJIEdFTjZfUFNNSV9TTEVFUF9NU0df RElTQUJMRSk7CiAJCQl9CiAKIAkJCS8qIEluc2VydCBhIGRlbGF5IGJlZm9yZSB0aGUgbmV4dCBz d2l0Y2ghICovCi0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkJTUlfU1RPUkVfUkVHSVNU RVJfTUVNIHwKLQkJCQkJTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKLQkJCWludGVsX3JpbmdfZW1p dF9yZWcocmluZywgbGFzdF9yZWcpOwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJCWk5 MTVfZ2d0dF9vZmZzZXQoZW5naW5lLT5zY3JhdGNoKSk7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJCQkqb3V0KysgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfCBNSV9TUk1f TFJNX0dMT0JBTF9HVFQ7CisJCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChsYXN0X3Jl Zyk7CisJCQkqb3V0KysgPSBpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCk7CisJCQkq b3V0KysgPSBNSV9OT09QOwogCQl9Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9BUkJfT05f T0ZGIHwgTUlfQVJCX0VOQUJMRSk7CisJCSpvdXQrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJf RU5BQkxFOwogCX0KIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2Fk dmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCByZW1hcF9s MyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHNsaWNlKQogewotCXUzMiAq cmVtYXBfaW5mbyA9IHJlcS0+aTkxNS0+bDNfcGFyaXR5LnJlbWFwX2luZm9bc2xpY2VdOwotCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCBpLCByZXQ7CisJdTMyICpv dXQsICpyZW1hcF9pbmZvID0gcmVxLT5pOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tzbGljZV07 CisJaW50IGk7CiAKIAlpZiAoIXJlbWFwX2luZm8pCiAJCXJldHVybiAwOwogCi0JcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXEsIEdFTjdfTDNMT0dfU0laRS80ICogMiArIDIpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIEdFTjdfTDNMT0df U0laRS80ICogMiArIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0 KTsKIAogCS8qCiAJICogTm90ZTogV2UgZG8gbm90IHdvcnJ5IGFib3V0IHRoZSBjb25jdXJyZW50 IHJlZ2lzdGVyIGNhY2hlbGluZSBoYW5nCiAJICogaGVyZSBiZWNhdXNlIG5vIG90aGVyIGNvZGUg c2hvdWxkIGFjY2VzcyB0aGVzZSByZWdpc3RlcnMgb3RoZXIgdGhhbgogCSAqIGF0IGluaXRpYWxp emF0aW9uIHRpbWUuCiAJICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNU RVJfSU1NKEdFTjdfTDNMT0dfU0laRS80KSk7CisJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9J TU0oR0VON19MM0xPR19TSVpFLzQpOwogCWZvciAoaSA9IDA7IGkgPCBHRU43X0wzTE9HX1NJWkUv NDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VON19MM0xPRyhzbGljZSwg aSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVtYXBfaW5mb1tpXSk7CisJCSpvdXQrKyA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKKwkJKm91dCsrID0g cmVtYXBfaW5mb1tpXTsKIAl9Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3Jpbmdf YWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCAxMTFiN2Y4YzYxN2EuLjVkNGYwZTAyYzBlYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMTMzNiwy NSArMTMzNiwyNSBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBs aXN0X2hlYWQgKnZtYXMsCiBzdGF0aWMgaW50CiBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldCwgaTsKKwl1MzIgKm91dDsKKwlpbnQgaTsKIAog CWlmICghSVNfR0VONyhyZXEtPmk5MTUpIHx8IHJlcS0+ZW5naW5lLT5pZCAhPSBSQ1MpIHsKIAkJ RFJNX0RFQlVHKCJzb2wgcmVzZXQgaXMgZ2VuNy9yY3Mgb25seVxuIik7CiAJCXJldHVybiAtRUlO VkFMOwogCX0KIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0ICogMyk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCAqIDMpOwor CWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCWZvciAoaSA9IDA7 IGkgPCA0OyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJf SU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU43X1NPX1dSSVRFX09GRlNF VChpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKm91dCsrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU0oMSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjdfU09f V1JJVEVfT0ZGU0VUKGkpKTsKKwkJKm91dCsrID0gMDsKIAl9CiAKLQlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwog fQpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgZXhlY2J1Zl9zdWJtaXQoc3RydWN0IGk5MTVfZXhlY2J1 ZmZlcl9wYXJhbXMgKnBhcmFtcywKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBwYXJhbXMtPnJlcXVlc3QtPmk5MTU7CiAJdTY0IGV4ZWNfc3RhcnQsIGV4ZWNfbGVuOwogCWlu dCBpbnN0cF9tb2RlOwotCXUzMiBpbnN0cF9tYXNrOworCXUzMiBpbnN0cF9tYXNrLCAqb3V0Owog CWludCByZXQ7CiAKIAlyZXQgPSBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fZ3B1KHBhcmFt cy0+cmVxdWVzdCwgdm1hcyk7CkBAIC0xNDYxLDE3ICsxNDYxLDE1IEBAIGV4ZWNidWZfc3VibWl0 KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCiAKIAlpZiAocGFyYW1zLT5l bmdpbmUtPmlkID09IFJDUyAmJgogCSAgICBpbnN0cF9tb2RlICE9IGRldl9wcml2LT5yZWxhdGl2 ZV9jb25zdGFudHNfbW9kZSkgewotCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHBhcmFtcy0+ cmVxdWVzdC0+cmluZzsKLQotCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHBhcmFtcy0+cmVxdWVz dCwgNCk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJf SU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBJTlNUUE0pOwotCQlpbnRlbF9y aW5nX2VtaXQocmluZywgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOwotCQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CisJCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocGFyYW1zLT5yZXF1 ZXN0LCA0KTsKKwkJaWYgKElTX0VSUihvdXQpKQorCQkJcmV0dXJuIFBUUl9FUlIob3V0KTsKKwor CQkqb3V0KysgPSBNSV9OT09QOworCQkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsK KwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoSU5TVFBNKTsKKwkJKm91dCsrID0gaW5z dHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGU7CisJCWludGVsX3JpbmdfYWR2YW5jZShwYXJhbXMt PnJlcXVlc3QsIG91dCk7CiAKIAkJZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlID0g aW5zdHBfbW9kZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDIyYjMz NzQwOTZlOC4uYTYyYTIzM2ViYzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpA QCAtNjgwLDIzICs2ODAsMjIgQEAgc3RhdGljIGludCBnZW44X3dyaXRlX3BkcChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSAgdW5zaWduZWQgZW50cnksCiAJCQkgIGRtYV9h ZGRyX3QgYWRkcikKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKLQlpbnQgcmV0Owor CXUzMiAqb3V0OwogCiAJQlVHX09OKGVudHJ5ID49IDQpOwogCi0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0 KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0J aW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGVudHJ5 KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMoYWRkcikpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JaW50ZWxfcmluZ19l bWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGVudHJ5KSk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMoYWRkcikpOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkqb3V0KysgPSBp OTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGVudHJ5KSk7CisJ Km91dCsrID0gdXBwZXJfMzJfYml0cyhhZGRyKTsKKwkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVS X0lNTSgxKTsKKwkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX0xE VyhlbmdpbmUsIGVudHJ5KSk7CisJKm91dCsrID0gbG93ZXJfMzJfYml0cyhhZGRyKTsKKwlpbnRl bF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNzIzLDggKzE3 MjIsOCBAQCBzdGF0aWMgdWludDMyX3QgZ2V0X3BkX29mZnNldChzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCiBzdGF0aWMgaW50IGhzd19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0LAogCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXUzMiAqb3V0OwogCWludCByZXQ7CiAKIAkvKiBOQjog VExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJlZm9yZSBhIHN3aXRjaCAqLwpA QCAtMTczMiwxNyArMTczMSwxNyBAQCBzdGF0aWMgaW50IGhzd19tbV9zd2l0Y2goc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4g UFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJf SU1NKDIpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0RDTFYoZW5n aW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBQX0RJUl9EQ0xWXzJHKTsKLQlpbnRlbF9y aW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGdldF9wZF9vZmZzZXQocHBndHQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0xP QURfUkVHSVNURVJfSU1NKDIpOworCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdf UFBfRElSX0RDTFYoZW5naW5lKSk7CisJKm91dCsrID0gUFBfRElSX0RDTFZfMkc7CisJKm91dCsr ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKTsKKwkqb3V0 KysgPSBnZXRfcGRfb2Zmc2V0KHBwZ3R0KTsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3Jp bmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE3NTAsOCArMTc0OSw4 IEBAIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQs CiBzdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwK IAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7CisJdTMyICpvdXQ7CiAJaW50IHJldDsKIAogCS8qIE5COiBUTEJzIG11 c3QgYmUgZmx1c2hlZCBhbmQgaW52YWxpZGF0ZWQgYmVmb3JlIGEgc3dpdGNoICovCkBAIC0xNzU5 LDE3ICsxNzU4LDE3IEBAIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKSk7Ci0JaW50ZWxfcmluZ19lbWl0 X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZSkpOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBQUF9ESVJfRENMVl8yRyk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBSSU5HX1BQ X0RJUl9CQVNFKGVuZ2luZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBnZXRfcGRfb2Zmc2V0 KHBwZ3R0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElT X0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOworCisJKm91dCsrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU0oMik7CisJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9E SVJfRENMVihlbmdpbmUpKTsKKwkqb3V0KysgPSBQUF9ESVJfRENMVl8yRzsKKwkqb3V0KysgPSBp OTE1X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkpOworCSpvdXQrKyA9 IGdldF9wZF9vZmZzZXQocHBndHQpOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19h ZHZhbmNlKHJlcSwgb3V0KTsKIAogCS8qIFhYWDogUkNTIGlzIHRoZSBvbmx5IG9uZSB0byBhdXRv IGludmFsaWRhdGUgdGhlIFRMQnM/ICovCiAJaWYgKGVuZ2luZS0+aWQgIT0gUkNTKSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggNzJiN2Y3ZDk0NjFkLi45MGZm Y2JhMGYyZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTgy NCw2ICs4MjQsNyBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nID0gcmVxdWVzdC0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5l ID0gcmVxdWVzdC0+dGltZWxpbmU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpwcmV2 OworCXUzMiAqb3V0OwogCWludCBlcnI7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZyZXF1ZXN0 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKQEAgLTg2MiwxMCArODYzLDkgQEAgdm9pZCBfX2k5 MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCBib29s IGZsdXNoX2NhY2hlcykKIAkgKiBHUFUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdCwgd2UgbmV2ZXIg b3Zlci1lc3RpbWF0ZSB0aGUKIAkgKiBwb3NpdGlvbiBvZiB0aGUgcmluZydzIEhFQUQuCiAJICov Ci0JZXJyID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCBlbmdpbmUtPmVtaXRfYnJlYWRjcnVt Yl9zeik7Ci0JR0VNX0JVR19PTihlcnIpOwogCXJlcXVlc3QtPnBvc3RmaXggPSByaW5nLT50YWls OwotCXJpbmctPnRhaWwgKz0gZW5naW5lLT5lbWl0X2JyZWFkY3J1bWJfc3ogKiBzaXplb2YodTMy KTsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIGVuZ2luZS0+ZW1pdF9icmVhZGNy dW1iX3N6KTsKKwlHRU1fQlVHX09OKElTX0VSUihvdXQpKTsKIAogCS8qIFNlYWwgdGhlIHJlcXVl c3QgYW5kIG1hcmsgaXQgYXMgcGVuZGluZyBleGVjdXRpb24uIE5vdGUgdGhhdAogCSAqIHdlIG1h eSBpbnNwZWN0IHRoaXMgc3RhdGUsIHdpdGhvdXQgaG9sZGluZyBhbnkgbG9ja3MsIGR1cmluZwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGQwZDA0MjQ5NWRjNy4uMjg1YTM1 NmU5ZTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMTc2MiwxNCAr MTE3NjIsMTIgQEAgc3RhdGljIGludCBpbnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJ IHVpbnQzMl90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5n OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK LQl1MzIgZmxpcF9tYXNrOwotCWludCByZXQ7CisJdTMyIGZsaXBfbWFzaywgKm91dDsKIAotCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owor CW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJl dHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKiBDYW4ndCBxdWV1ZSBtdWx0aXBsZSBmbGlwcywgc28g d2FpdCBmb3IgdGhlIHByZXZpb3VzCiAJICogb25lIHRvIGZpbmlzaCBiZWZvcmUgZXhlY3V0aW5n IHRoZSBuZXh0LgpAQCAtMTE3NzgsMTMgKzExNzc2LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2Vu Ml9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWZsaXBfbWFzayA9IE1JX1dB SVRfRk9SX1BMQU5FX0JfRkxJUDsKIAllbHNlCiAJCWZsaXBfbWFzayA9IE1JX1dBSVRfRk9SX1BM QU5FX0FfRkxJUDsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBm bGlwX21hc2spOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfRElTUExBWV9GTElQIHwKLQkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShp bnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1sw XSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29m ZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiBhdXggZGlzcGxheSBiYXNlIGFk ZHJlc3MsIHVudXNlZCAqLworCSpvdXQrKyA9IE1JX1dBSVRfRk9SX0VWRU5UIHwgZmxpcF9tYXNr OworCSpvdXQrKyA9IE1JX05PT1A7CisJKm91dCsrID0gTUlfRElTUExBWV9GTElQIHwgTUlfRElT UExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkqb3V0KysgPSBmYi0+cGl0Y2hl c1swXTsKKwkqb3V0KysgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQ7CisJKm91 dCsrID0gMDsgLyogYXV4IGRpc3BsYXkgYmFzZSBhZGRyZXNzLCB1bnVzZWQgKi8KIAogCXJldHVy biAwOwogfQpAQCAtMTE3OTYsMjYgKzExNzkzLDI0IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuM19x dWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdTMyIGZsaXBfbWFzazsKLQlpbnQgcmV0OworCXUzMiBm bGlwX21hc2ssICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJ aWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJaWYgKGludGVsX2Ny dGMtPnBsYW5lKQogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVA7CiAJZWxz ZQogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVA7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgZmxpcF9tYXNrKTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJ UF9JOTE1IHwKLQkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX05PT1ApOworCSpvdXQrKyA9IE1JX1dBSVRfRk9SX0VWRU5UIHwgZmxpcF9t YXNrOworCSpvdXQrKyA9IE1JX05PT1A7CisJKm91dCsrID0gTUlfRElTUExBWV9GTElQX0k5MTUg fAorCQkgTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkqb3V0Kysg PSBmYi0+cGl0Y2hlc1swXTsKKwkqb3V0KysgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9v ZmZzZXQ7CisJKm91dCsrID0gTUlfTk9PUDsKIAogCXJldHVybiAwOwogfQpAQCAtMTE4MjcsMjUg KzExODIyLDIyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJ CSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmlu ZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXVp bnQzMl90IHBmLCBwaXBlc3JjOwotCWludCByZXQ7CisJdTMyIHBmLCBwaXBlc3JjLCAqb3V0Owog Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIob3V0KSkK KwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCS8qIGk5NjUrIHVzZXMgdGhlIGxpbmVhciBvciB0 aWxlZCBvZmZzZXRzIGZyb20gdGhlCiAJICogRGlzcGxheSBSZWdpc3RlcnMgKHdoaWNoIGRvIG5v dCBjaGFuZ2UgYWNyb3NzIGEgcGFnZS1mbGlwKQogCSAqIHNvIHdlIG5lZWQgb25seSByZXByb2dy YW0gdGhlIGJhc2UgYWRkcmVzcy4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElT UExBWV9GTElQIHwKLQkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCB8Ci0JCQlpbnRlbF9m Yl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlmaWVyKSk7CisJKm91dCsrID0gTUlfRElTUExB WV9GTElQIHwgTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkqb3V0 KysgPSBmYi0+cGl0Y2hlc1swXTsKKwkqb3V0KysgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0 dF9vZmZzZXQgfAorCQkgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllcik7 CiAKIAkvKiBYWFggRW5hYmxpbmcgdGhlIHBhbmVsLWZpdHRlciBhY3Jvc3MgcGFnZS1mbGlwIGlz IHNvIGZhcgogCSAqIHVudGVzdGVkIG9uIG5vbi1uYXRpdmUgbW9kZXMsIHNvIGlnbm9yZSBpdCBm b3Igbm93LgpAQCAtMTE4NTMsNyArMTE4NDUsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVl dWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqLwogCXBmID0gMDsKIAlwaXBlc3Jj ID0gSTkxNV9SRUFEKFBJUEVTUkMoaW50ZWxfY3J0Yy0+cGlwZSkpICYgMHgwZmZmMGZmZjsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgcGYgfCBwaXBlc3JjKTsKKwkqb3V0KysgPSBwZiB8IHBpcGVz cmM7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExODY1LDIxICsxMTg1NywxNyBAQCBzdGF0aWMgaW50 IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0J c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQl1aW50MzJfdCBwZiwgcGlwZXNyYzsKLQlp bnQgcmV0OworCXUzMiBwZiwgcGlwZXNyYywgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7 CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQIHwKLQkJCU1JX0RJU1BM QVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBmYi0+cGl0Y2hlc1swXSB8Ci0JCQlpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1v ZGlmaWVyKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+ Z3R0X29mZnNldCk7CisJKm91dCsrID0gTUlfRElTUExBWV9GTElQIHwgTUlfRElTUExBWV9GTElQ X1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkqb3V0KysgPSBmYi0+cGl0Y2hlc1swXSB8IGlu dGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpOworCSpvdXQrKyA9IGludGVs X2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldDsKIAogCS8qIENvbnRyYXJ5IHRvIHRoZSBzdWdn ZXN0aW9ucyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwKIAkgKiAiRW5hYmxlIFBhbmVsIEZpdHRlciIg ZG9lcyBub3Qgc2VlbSB0byBiZSByZXF1aXJlZCB3aGVuIHBhZ2UKQEAgLTExODg5LDcgKzExODc3 LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkgKi8KIAlwZiA9IDA7CiAJcGlwZXNyYyA9IEk5MTVfUkVBRChQSVBFU1JDKGludGVs X2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHBmIHwg cGlwZXNyYyk7CisJKm91dCsrID0gcGYgfCBwaXBlc3JjOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0x MTkwMiw5ICsxMTg5MCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Ci0JdWludDMyX3QgcGxhbmVfYml0ID0gMDsKKwl1MzIgKm91dCwg cGxhbmVfYml0ID0gMDsKIAlpbnQgbGVuLCByZXQ7CiAKIAlzd2l0Y2ggKGludGVsX2NydGMtPnBs YW5lKSB7CkBAIC0xMTk0OCw5ICsxMTkzNSw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1 ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIGxlbik7CisJaWYgKElTX0VSUihv dXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJLyogVW5tYXNrIHRoZSBmbGlwLWRvbmUg Y29tcGxldGlvbiBtZXNzYWdlLiBOb3RlIHRoYXQgdGhlIGJzcGVjIHNheXMgdGhhdAogCSAqIHdl IHNob3VsZCBkbyB0aGlzIGZvciBib3RoIHRoZSBCQ1MgYW5kIFJDUywgYW5kIHRoYXQgd2UgbXVz dCBub3QgdW5tYXNrCkBAIC0xMTk2MiwzMSArMTE5NDksMjggQEAgc3RhdGljIGludCBpbnRlbF9n ZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiB0byB6ZXJvIGRvZXMg bGVhZCB0byBsb2NrdXBzIHdpdGhpbiBNSV9ESVNQTEFZX0ZMSVAuCiAJICovCiAJaWYgKHJlcS0+ ZW5naW5lLT5pZCA9PSBSQ1MpIHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVH SVNURVJfSU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBERVJSTVIpOwotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgfihERVJSTVJfUElQRUFfUFJJX0ZMSVBfRE9ORSB8Ci0JCQkJ CSAgREVSUk1SX1BJUEVCX1BSSV9GTElQX0RPTkUgfAotCQkJCQkgIERFUlJNUl9QSVBFQ19QUklf RkxJUF9ET05FKSk7CisJCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOworCQkqb3V0 KysgPSBpOTE1X21taW9fcmVnX29mZnNldChERVJSTVIpOworCQkqb3V0KysgPSB+KERFUlJNUl9Q SVBFQV9QUklfRkxJUF9ET05FIHwKKwkJCSBERVJSTVJfUElQRUJfUFJJX0ZMSVBfRE9ORSB8CisJ CQkgREVSUk1SX1BJUEVDX1BSSV9GTElQX0RPTkUpOwogCQlpZiAoSVNfR0VOOChkZXZfcHJpdikp Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfAot CQkJCQkgICAgICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQpOworCQkJKm91dCsrID0gTUlfU1RPUkVf UkVHSVNURVJfTUVNX0dFTjggfAorCQkJCSBNSV9TUk1fTFJNX0dMT0JBTF9HVFQ7CiAJCWVsc2UK LQkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAotCQkJCQkg ICAgICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IERFUlJNUik7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCWk5MTVfZ2d0dF9vZmZzZXQo cmVxLT5lbmdpbmUtPnNjcmF0Y2gpICsgMjU2KTsKKwkJCSpvdXQrKyA9IE1JX1NUT1JFX1JFR0lT VEVSX01FTSB8IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3Jl Z19vZmZzZXQoREVSUk1SKTsKKwkJKm91dCsrID0gaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2lu ZS0+c2NyYXRjaCkgKyAyNTY7CiAJCWlmIChJU19HRU44KGRldl9wcml2KSkgewotCQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwor CQkJKm91dCsrID0gMDsKKwkJCSpvdXQrKyA9IE1JX05PT1A7CiAJCX0KIAl9CiAKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9iaXQpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8Ci0JCQlpbnRlbF9mYl9tb2RpZmllcl90 b190aWxpbmcoZmItPm1vZGlmaWVyKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2Ny dGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIChNSV9O T09QKSk7CisJKm91dCsrID0gTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9iaXQ7CisJKm91 dCsrID0gZmItPnBpdGNoZXNbMF0gfCBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1v ZGlmaWVyKTsKKwkqb3V0KysgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQ7CisJ Km91dCsrID0gTUlfTk9PUDsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwppbmRleCBlNDI5OTBiNTZmYTguLjVlZWEwN2RhZDY3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKQEAgLTgzNiw2ICs4MzYsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0X2Fs bG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKIAlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAJc3RydWN0IGludGVsX2Nv bnRleHQgKmNlID0gJnJlcXVlc3QtPmN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdOworCXUzMiAqb3V0 OwogCWludCByZXQ7CiAKIAlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKQEAgLTg2MCw5ICs4 NjEsMTEgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJCQlnb3RvIGVycjsKIAl9CiAKLQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcXVlc3QsIDApOwotCWlmIChyZXQpCisJb3V0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXF1ZXN0LCAwKTsKKwlpZiAoSVNfRVJSKG91dCkpIHsKKwkJcmV0ID0gUFRSX0VSUihv dXQpOwogCQlnb3RvIGVycl91bnJlc2VydmU7CisJfQogCiAJaWYgKCFjZS0+aW5pdGlhbGlzZWQp IHsKIAkJcmV0ID0gZW5naW5lLT5pbml0X2NvbnRleHQocmVxdWVzdCk7CkBAIC04OTEsOSArODk0 LDkgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAKIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX3dv cmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0JaW50 IHJldCwgaTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3Qg aTkxNV93b3JrYXJvdW5kcyAqdyA9ICZyZXEtPmk5MTUtPndvcmthcm91bmRzOworCXUzMiAqb3V0 OworCWludCByZXQsIGk7CiAKIAlpZiAody0+Y291bnQgPT0gMCkKIAkJcmV0dXJuIDA7CkBAIC05 MDIsMTggKzkwNSwxOCBAQCBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5k c19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgdy0+Y291bnQgKiAyICsg Mik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgdy0+Y291bnQgKiAyICsgMik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VS UihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKHct PmNvdW50KSk7CisJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpOwogCWZv ciAoaSA9IDA7IGkgPCB3LT5jb3VudDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmlu Zywgdy0+cmVnW2ldLmFkZHIpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdy0+cmVnW2ldLnZh bHVlKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQody0+cmVnW2ldLmFkZHIpOwor CQkqb3V0KysgPSB3LT5yZWdbaV0udmFsdWU7CiAJfQotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKKwkqb3V0KysgPSBNSV9OT09QOwogCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXQgPSByZXEtPmVuZ2luZS0+ ZW1pdF9mbHVzaChyZXEsIEVNSVRfQkFSUklFUik7CiAJaWYgKHJldCkKQEAgLTE0MDYsMjcgKzE0 MDksMjcgQEAgc3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCA9IHJlcS0+Y3R4LT5wcGd0dDsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJl cS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsK IAljb25zdCBpbnQgbnVtX2xyaV9jbWRzID0gR0VOOF9MRUdBQ1lfUERQRVMgKiAyOwotCWludCBp LCByZXQ7CisJdTMyICpvdXQ7CisJaW50IGk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgbnVtX2xyaV9jbWRzICogMiArIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIG51bV9scmlfY21kcyAqIDIgKyAyKTsKKwlpZiAoSVNf RVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX2xyaV9jbWRzKSk7CisJKm91dCsrID0gTUlfTE9B RF9SRUdJU1RFUl9JTU0obnVtX2xyaV9jbWRzKTsKIAlmb3IgKGkgPSBHRU44X0xFR0FDWV9QRFBF UyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCWNvbnN0IGRtYV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1 X3BhZ2VfZGlyX2RtYV9hZGRyKHBwZ3R0LCBpKTsKIAotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJp bmcsIEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgdXBwZXJfMzJfYml0cyhwZF9kYWRkcikpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg bG93ZXJfMzJfYml0cyhwZF9kYWRkcikpOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNl dChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkpKTsKKwkJKm91dCsrID0gdXBwZXJfMzJfYml0 cyhwZF9kYWRkcik7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19Q RFBfTERXKGVuZ2luZSwgaSkpOworCQkqb3V0KysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsK IAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwg b3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTQzNSw4ICsxNDM4LDggQEAgc3RhdGljIGludCBn ZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkg ICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkJICAgICAgdW5zaWduZWQgaW50IGRpc3BhdGNo X2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCWJvb2wg cHBndHQgPSAhKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpOworCXUzMiAq b3V0OwogCWludCByZXQ7CiAKIAkvKiBEb24ndCByZWx5IGluIGh3IHVwZGF0aW5nIFBEUHMsIHNw ZWNpYWxseSBpbiBsaXRlLXJlc3RvcmUuCkBAIC0xNDU3LDE5ICsxNDYwLDE4IEBAIHN0YXRpYyBp bnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAog CQlyZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzICY9IH5pbnRlbF9lbmdpbmVfZmxhZyhy ZXEtPmVuZ2luZSk7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwor CWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCS8qIEZJWE1FKEJE Vyk6IEFkZHJlc3Mgc3BhY2UgYW5kIHNlY3VyaXR5IHNlbGVjdG9ycy4gKi8KLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfAotCQkJKHBwZ3R0PDw4KSB8 Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KLQkJCSBNSV9CQVRDSF9S RVNPVVJDRV9TVFJFQU1FUiA6IDApKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJf Yml0cyhvZmZzZXQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhvZmZz ZXQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwgKHBwZ3R0 PDw4KSB8CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJIE1JX0JB VENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCk7CisJKm91dCsrID0gbG93ZXJfMzJfYml0cyhvZmZz ZXQpOworCSpvdXQrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqb3V0KysgPSBNSV9OT09Q OworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0 OTAsMTMgKzE0OTIsMTEgQEAgc3RhdGljIHZvaWQgZ2VuOF9sb2dpY2FsX3JpbmdfZGlzYWJsZV9p cnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgaW50IGdlbjhfZW1p dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIHUzMiBtb2RlKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKLQl1MzIgY21kOwot CWludCByZXQ7CisJdTMyIGNtZCwgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx dWVzdCwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcXVlc3QsIDQpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0 KTsKIAogCWNtZCA9IE1JX0ZMVVNIX0RXICsgMTsKIApAQCAtMTUxMywxMyArMTUxMywxMSBAQCBz dGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QsIHUzMiBtb2RlKQogCQkJY21kIHw9IE1JX0lOVkFMSURBVEVfQlNEOwogCX0KIAotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJSTkx NV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8Ci0JCQlNSV9GTFVTSF9EV19VU0VfR1RUKTsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHVwcGVyIGFkZHIgKi8KLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7IC8qIHZhbHVlICovCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQr KyA9IGNtZDsKKwkqb3V0KysgPSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwgTUlfRkxVU0hf RFdfVVNFX0dUVDsKKwkqb3V0KysgPSAwOyAvKiB1cHBlciBhZGRyICovCisJKm91dCsrID0gMDsg LyogdmFsdWUgKi8KKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxdWVzdCwgb3V0KTsKIAogCXJldHVy biAwOwogfQpAQCAtMTUyNywxMyArMTUyNSwxMSBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIHUzMiBtb2RlKQogc3RhdGlj IGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCwKIAkJCQkgIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxdWVzdC0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0 LT5lbmdpbmU7CiAJdTMyIHNjcmF0Y2hfYWRkciA9CiAJCWk5MTVfZ2d0dF9vZmZzZXQoZW5naW5l LT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7CiAJYm9vbCB2Zl9mbHVzaF93YSA9IGZh bHNlLCBkY19mbHVzaF93YSA9IGZhbHNlOwotCXUzMiBmbGFncyA9IDA7Ci0JaW50IHJldDsKKwl1 MzIgKm91dCwgZmxhZ3MgPSAwOwogCWludCBsZW47CiAKIAlmbGFncyB8PSBQSVBFX0NPTlRST0xf Q1NfU1RBTEw7CkBAIC0xNTc1LDQ1ICsxNTcxLDQ1IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2Zs dXNoX3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiAJaWYgKGRj X2ZsdXNoX3dhKQogCQlsZW4gKz0gMTI7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVl c3QsIGxlbik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcXVlc3QsIGxlbik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihv dXQpOwogCiAJaWYgKHZmX2ZsdXNoX3dhKSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhf T1BfUElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCSpv dXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9 IDA7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IDA7CiAJfQogCiAJ aWYgKGRjX2ZsdXNoX3dhKSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9D T05UUk9MKDYpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9EQ19GTFVT SF9FTkFCTEUpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7CisJCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJCSpvdXQr KyA9IFBJUEVfQ09OVFJPTF9EQ19GTFVTSF9FTkFCTEU7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQr KyA9IDA7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IDA7CiAJfQogCi0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBmbGFncyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkq b3V0KysgPSBmbGFnczsKKwkqb3V0KysgPSBzY3JhdGNoX2FkZHI7CisJKm91dCsrID0gMDsKKwkq b3V0KysgPSAwOworCSpvdXQrKyA9IDA7CiAKIAlpZiAoZGNfZmx1c2hfd2EpIHsKLQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5n LCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqb3V0KysgPSBHRlhfT1BfUElQ RV9DT05UUk9MKDYpOworCQkqb3V0KysgPSBQSVBFX0NPTlRST0xfQ1NfU1RBTEw7CisJCSpvdXQr KyA9IDA7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IDA7CiAJfQog Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXF1ZXN0 LCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKaW5kZXgg NzczZTM2MjUzZTdjLi5hN2EyOGM0OTY4OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX21vY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMK QEAgLTI3NiwyMyArMjc2LDIyIEBAIGludCBpbnRlbF9tb2NzX2luaXRfZW5naW5lKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2NvbnRyb2xfdGFi bGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJICAgY29uc3Qgc3RydWN0 IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxLT5yaW5nOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGVuZ2luZSA9IHJlcS0+ZW5naW5l LT5pZDsKIAl1bnNpZ25lZCBpbnQgaW5kZXg7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAogCWlm IChXQVJOX09OKHRhYmxlLT5zaXplID4gR0VOOV9OVU1fTU9DU19FTlRSSUVTKSkKIAkJcmV0dXJu IC1FTk9ERVY7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMiArIDIgKiBHRU45X05V TV9NT0NTX0VOVFJJRVMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDIgKyAyICogR0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKKwlpZiAoSVNf RVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTKSk7CisJKm91dCsr ID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKIAogCWZvciAo aW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLT5zaXplOyBpbmRleCsrKSB7Ci0JCWludGVsX3Jpbmdf ZW1pdF9yZWcocmluZywgbW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCB0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUpOworCQkqb3V0 KysgPSBpOTE1X21taW9fcmVnX29mZnNldChtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsK KwkJKm91dCsrID0gdGFibGUtPnRhYmxlW2luZGV4XS5jb250cm9sX3ZhbHVlOwogCX0KIAogCS8q CkBAIC0zMDQsMTIgKzMwMywxMiBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxl KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCSAqIHRoYXQgdmFsdWUgdG8gYWxs IHRoZSB1c2VkIGVudHJpZXMuCiAJICovCiAJZm9yICg7IGluZGV4IDwgR0VOOV9OVU1fTU9DU19F TlRSSUVTOyBpbmRleCsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbW9jc19yZWdp c3RlcihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB0YWJsZS0+dGFi bGVbMF0uY29udHJvbF92YWx1ZSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KG1v Y3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkpOworCQkqb3V0KysgPSB0YWJsZS0+dGFibGVbMF0u Y29udHJvbF92YWx1ZTsKIAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmlu Z19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMzM2LDI5ICszMzUsMjcg QEAgc3RhdGljIGlubGluZSB1MzIgbDNjY19jb21iaW5lKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9t b2NzX3RhYmxlICp0YWJsZSwKIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2wzY2NfdGFibGUoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJY29uc3Qgc3RydWN0IGRybV9pOTE1X21v Y3NfdGFibGUgKnRhYmxlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5n OwogCXVuc2lnbmVkIGludCBpOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKIAlpZiAoV0FSTl9P Tih0YWJsZS0+c2l6ZSA+IEdFTjlfTlVNX01PQ1NfRU5UUklFUykpCiAJCXJldHVybiAtRU5PREVW OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIgKyBHRU45X05VTV9NT0NTX0VOVFJJ RVMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDIgKyBHRU45X05VTV9NT0NTX0VOVFJJRVMpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0 dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfTE9BRF9S RUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMikpOworCSpvdXQrKyA9IE1JX0xP QURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDIpOwogCiAJZm9yIChpID0g MDsgaSA8IHRhYmxlLT5zaXplLzI7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGwzY2NfY29tYmlu ZSh0YWJsZSwgMippLCAyKmkrMSkpOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChH RU45X0xOQ0ZDTU9DUyhpKSk7CisJCSpvdXQrKyA9IGwzY2NfY29tYmluZSh0YWJsZSwgMiAqIGks IDIgKiBpICsgMSk7CiAJfQogCiAJaWYgKHRhYmxlLT5zaXplICYgMHgwMSkgewogCQkvKiBPZGQg dGFibGUgc2l6ZSAtIDEgbGVmdCBvdmVyICovCi0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywg R0VOOV9MTkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbDNjY19jb21iaW5l KHRhYmxlLCAyKmksIDApKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9M TkNGQ01PQ1MoaSkpOworCQkqb3V0KysgPSBsM2NjX2NvbWJpbmUodGFibGUsIDIgKiBpLCAwKTsK IAkJaSsrOwogCX0KIApAQCAtMzY4LDEyICszNjUsMTIgQEAgc3RhdGljIGludCBlbWl0X21vY3Nf bDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiB0aGV5IGFy ZSByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCiAJICovCiAJZm9yICg7IGkgPCBHRU45X05VTV9N T0NTX0VOVFJJRVMgLyAyOyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU45 X0xOQ0ZDTU9DUyhpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBsM2NjX2NvbWJpbmUodGFi bGUsIDAsIDApKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9MTkNGQ01P Q1MoaSkpOworCQkqb3V0KysgPSBsM2NjX2NvbWJpbmUodGFibGUsIDAsIDApOwogCX0KIAotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJ cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVy bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKaW5kZXggMDYwOGZh ZDdmNTkzLi5mNjEyYTAyZGRmYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMK QEAgLTI2Nyw4ICsyNjcsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGlu dGVsX292ZXJsYXkgKm92ZXJsYXkpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsK LQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKLQlpbnQgcmV0OworCXUzMiAqb3V0OwogCiAJV0FS Tl9PTihvdmVybGF5LT5hY3RpdmUpOwogCVdBUk5fT04oSVNfSTgzMChkZXZfcHJpdikgJiYgIShk ZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpKTsKQEAgLTI3NywxMCArMjc2LDEw IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zl cmxheSkKIAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkgeworCW91dCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpIHsKIAkJaTkxNV9hZGRfcmVxdWVz dF9ub19mbHVzaChyZXEpOwotCQlyZXR1cm4gcmV0OworCQlyZXR1cm4gUFRSX0VSUihvdXQpOwog CX0KIAogCW92ZXJsYXktPmFjdGl2ZSA9IHRydWU7CkBAIC0yODgsMTIgKzI4NywxMSBAQCBzdGF0 aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJ aWYgKElTX0k4MzAoZGV2X3ByaXYpKQogCQlpODMwX292ZXJsYXlfY2xvY2tfZ2F0aW5nKGRldl9w cml2LCBmYWxzZSk7CiAKLQlyaW5nID0gcmVxLT5yaW5nOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09OKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu Zywgb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwor CSpvdXQrKyA9IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT047CisJKm91dCsrID0gb3Zl cmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURTsKKwkqb3V0KysgPSBNSV9XQUlUX0ZPUl9FVkVO VCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUDsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVs X3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gaW50ZWxfb3ZlcmxheV9kb193YWl0 X3JlcXVlc3Qob3ZlcmxheSwgcmVxLCBOVUxMKTsKIH0KQEAgLTMyNiwxMCArMzI0LDggQEAgc3Rh dGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVy bGF5LAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5 MTU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Ci0Jc3RydWN0IGludGVsX3Jp bmcgKnJpbmc7CiAJdTMyIGZsaXBfYWRkciA9IG92ZXJsYXktPmZsaXBfYWRkcjsKLQl1MzIgdG1w OwotCWludCByZXQ7CisJdTMyIHRtcCwgKm91dDsKIAogCVdBUk5fT04oIW92ZXJsYXktPmFjdGl2 ZSk7CiAKQEAgLTM0NSwxNiArMzQxLDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250 aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAlpZiAoSVNfRVJSKHJlcSkpCiAJ CXJldHVybiBQVFJfRVJSKHJlcSk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7 Ci0JaWYgKHJldCkgeworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNf RVJSKG91dCkpIHsKIAkJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXEpOwotCQlyZXR1cm4g cmV0OworCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCX0KIAotCXJpbmcgPSByZXEtPnJpbmc7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElO VUUpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGlwX2FkZHIpOwotCWludGVsX3JpbmdfYWR2 YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJ TlVFOworCSpvdXQrKyA9IGZsaXBfYWRkcjsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQp OwogCiAJaW50ZWxfb3ZlcmxheV9mbGlwX3ByZXBhcmUob3ZlcmxheSwgdm1hKTsKIApAQCAtNDA4 LDkgKzQwMyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX292ZXJsYXlfb2ZmX3RhaWwoc3RydWN0IGk5 MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAogc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1 Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKLQl1MzIgZmxpcF9hZGRyID0gb3Zl cmxheS0+ZmxpcF9hZGRyOwotCWludCByZXQ7CisJdTMyICpvdXQsIGZsaXBfYWRkciA9IG92ZXJs YXktPmZsaXBfYWRkcjsKIAogCVdBUk5fT04oIW92ZXJsYXktPmFjdGl2ZSk7CiAKQEAgLTQyNCwy NSArNDE3LDIzIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292 ZXJsYXkgKm92ZXJsYXkpCiAJaWYgKElTX0VSUihyZXEpKQogCQlyZXR1cm4gUFRSX0VSUihyZXEp OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpIHsKKwlvdXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKSB7CiAJCWk5MTVf YWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKLQkJcmV0dXJuIHJldDsKKwkJcmV0dXJuIFBUUl9F UlIob3V0KTsKIAl9CiAKLQlyaW5nID0gcmVxLT5yaW5nOwotCiAJLyogd2FpdCBmb3Igb3Zlcmxh eSB0byBnbyBpZGxlICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8 IE1JX09WRVJMQVlfQ09OVElOVUUpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGlwX2FkZHIp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9S X09WRVJMQVlfRkxJUCk7CisJKm91dCsrID0gTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9D T05USU5VRTsKKwkqb3V0KysgPSBmbGlwX2FkZHI7CisJKm91dCsrID0gTUlfV0FJVF9GT1JfRVZF TlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CiAKIAkvKiB0dXJuIG92ZXJsYXkgb2ZmICov Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZG KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxpcF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOworCSpv dXQrKyA9IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZGOworCSpvdXQrKyA9IGZsaXBf YWRkcjsKKwkqb3V0KysgPSBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlf RkxJUDsKIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmVxLCBvdXQpOwogCiAJaW50ZWxfb3ZlcmxheV9mbGlwX3ByZXBhcmUob3ZlcmxheSwgTlVMTCk7 CiAKQEAgLTQ2NSw2ICs0NTYsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfcmVjb3Zlcl9m cm9tX2ludGVycnVwdChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIHN0YXRpYyBpbnQg aW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJs YXkpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkx NTsKKwl1MzIgKm91dDsKIAlpbnQgcmV0OwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3By aXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwpAQCAtNDc4LDIzICs0NzAsMjAgQEAgc3RhdGljIGludCBp bnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zlcmxh eSkKIAlpZiAoSTkxNV9SRUFEKElTUikgJiBJOTE1X09WRVJMQVlfUExBTkVfRkxJUF9QRU5ESU5H X0lOVEVSUlVQVCkgewogCQkvKiBzeW5jaHJvbm91cyBzbG93cGF0aCAqLwogCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKLQkJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7CiAKIAkJ cmVxID0gYWxsb2NfcmVxdWVzdChvdmVybGF5KTsKIAkJaWYgKElTX0VSUihyZXEpKQogCQkJcmV0 dXJuIFBUUl9FUlIocmVxKTsKIAotCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0J CWlmIChyZXQpIHsKKwkJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCQlpZiAoSVNf RVJSKG91dCkpIHsKIAkJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKLQkJCXJldHVy biByZXQ7CisJCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCQl9CiAKLQkJcmluZyA9IHJlcS0+cmlu ZzsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9X QUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 Ci0JCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkJKm91dCsrID0gTUlfV0FJVF9GT1JfRVZF TlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CisJCSpvdXQrKyA9IE1JX05PT1A7CisJCWlu dGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAkJcmV0ID0gaW50ZWxfb3ZlcmxheV9kb193 YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLAogCQkJCQkJICAgIGludGVsX292ZXJsYXlfcmVsZWFz ZV9vbGRfdmlkX3RhaWwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmlu ZGV4IGQzZDFlNjRmMjQ5OC4uYmQzMzBlZGFiZWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCkBAIC02MSwyMiArNjEsMjAgQEAgdm9pZCBpbnRlbF9yaW5nX3VwZGF0 ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIHN0YXRpYyBpbnQKIGdlbjJfcmVuZGVy X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCXUzMiBjbWQ7Ci0JaW50 IHJldDsKKwl1MzIgY21kLCAqb3V0OwogCiAJY21kID0gTUlfRkxVU0g7CiAKIAlpZiAobW9kZSAm IEVNSVRfSU5WQUxJREFURSkKIAkJY21kIHw9IE1JX1JFQURfRkxVU0g7CiAKLQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRS X0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0Kysg PSBjbWQ7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQp OwogCiAJcmV0dXJuIDA7CiB9CkBAIC04NCw5ICs4Miw3IEBAIGdlbjJfcmVuZGVyX3JpbmdfZmx1 c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogc3RhdGljIGlu dAogZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0J dTMyIGNtZDsKLQlpbnQgcmV0OworCXUzMiBjbWQsICpvdXQ7CiAKIAkvKgogCSAqIHJlYWQvd3Jp dGUgY2FjaGVzOgpAQCAtMTIzLDEzICsxMTksMTMgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJCQljbWQgfD0gTUlf SU5WQUxJREFURV9JU1A7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwot CWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIp OworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBjbWQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlp bnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gY21kOworCSpvdXQrKyA9IE1JX05P T1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAt MTc0LDM1ICsxNzAsMzMgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiBzdGF0aWMgaW50CiBpbnRlbF9lbWl0X3Bvc3Rf c3luY19ub256ZXJvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewot CXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIg PQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJ TkVfQllURVM7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7 CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg1KSk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8Ci0JCQlQSVBFX0NPTlRS T0xfU1RBTExfQVRfU0NPUkVCT0FSRCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hf YWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7IC8qIGxvdyBkd29yZCAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogaGlnaCBk d29yZCAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2Fk dmFuY2UocmluZyk7CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg1KTsKKwkqb3V0Kysg PSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfCBQSVBFX0NPTlRST0xfU1RBTExfQVRfU0NPUkVCT0FS RDsKKwkqb3V0KysgPSBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKKwkq b3V0KysgPSAwOyAvKiBsb3cgZHdvcmQgKi8KKwkqb3V0KysgPSAwOyAvKiBoaWdoIGR3b3JkICov CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIob3V0KSkKKwkJ cmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQ RV9DT05UUk9MKDUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgUElQRV9DT05UUk9MX1FXX1dS SVRFKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9M X0dMT0JBTF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDUpOworCSpv dXQrKyA9IFBJUEVfQ09OVFJPTF9RV19XUklURTsKKwkqb3V0KysgPSBzY3JhdGNoX2FkZHIgfCBQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKKwkqb3V0KysgPSAwOworCSpvdXQrKyA9IDA7CisJKm91 dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJu IDA7CiB9CkBAIC0yMTAsMTAgKzIwNCw5IEBAIGludGVsX2VtaXRfcG9zdF9zeW5jX25vbnplcm9f Zmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiBzdGF0aWMgaW50CiBnZW42 X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIg bW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1MzIgc2Ny YXRjaF9hZGRyID0KIAkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAy ICogQ0FDSEVMSU5FX0JZVEVTOwotCXUzMiBmbGFncyA9IDA7CisJdTMyICpvdXQsIGZsYWdzID0g MDsKIAlpbnQgcmV0OwogCiAJLyogRm9yY2UgU05CIHdvcmthcm91bmRzIGZvciBQSVBFX0NPTlRS T0wgZmx1c2hlcyAqLwpAQCAtMjQ3LDE1ICsyNDAsMTUgQEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJCWZsYWdzIHw9 IFBJUEVfQ09OVFJPTF9RV19XUklURSB8IFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKIAl9CiAKLQly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQly ZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBF X0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFncyk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpv dXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7CisJKm91dCsrID0gZmxhZ3M7CisJKm91dCsr ID0gc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7CisJKm91dCsrID0gMDsK KwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNjMs MjAgKzI1NiwxNyBAQCBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3JpbmdfY3Nf c3RhbGxfd2Eoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owor CW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJl dHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVf Q09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlQSVBFX0NPTlRST0xfQ1Nf U1RBTEwgfAotCQkJUElQRV9DT05UUk9MX1NUQUxMX0FUX1NDT1JFQk9BUkQpOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNCk7CisJKm91 dCsrID0gUElQRV9DT05UUk9MX0NTX1NUQUxMIHwgUElQRV9DT05UUk9MX1NUQUxMX0FUX1NDT1JF Qk9BUkQ7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSAwOworCWludGVsX3JpbmdfYWR2YW5jZShy ZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI4NCwxMSArMjc0LDkgQEAgZ2VuN19yZW5k ZXJfcmluZ19jc19zdGFsbF93YShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHN0 YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5y aW5nOwogCXUzMiBzY3JhdGNoX2FkZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5l LT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Ci0JdTMyIGZsYWdzID0gMDsKLQlpbnQg cmV0OworCXUzMiAqb3V0LCBmbGFncyA9IDA7CiAKIAkvKgogCSAqIEVuc3VyZSB0aGF0IGFueSBm b2xsb3dpbmcgc2Vxbm8gd3JpdGVzIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJlbmRlcgpAQCAtMzMy LDE1ICszMjAsMTUgQEAgZ2VuN19yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJCWdlbjdfcmVuZGVyX3JpbmdfY3Nfc3RhbGxfd2Eo cmVxKTsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkK LQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElT X0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFn cyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBHRlhf T1BfUElQRV9DT05UUk9MKDQpOworCSpvdXQrKyA9IGZsYWdzOworCSpvdXQrKyA9IHNjcmF0Y2hf YWRkcjsKKwkqb3V0KysgPSAwOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTM0OSwyMCArMzM3LDE5IEBAIHN0YXRpYyBpbnQKIGdlbjhfZW1pdF9w aXBlX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1 MzIgZmxhZ3MsIHUzMiBzY3JhdGNoX2FkZHIpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcg PSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91 dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdzKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2Ny YXRjaF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkqb3V0KysgPSBm bGFnczsKKwkqb3V0KysgPSBzY3JhdGNoX2FkZHI7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSAw OworCSpvdXQrKyA9IDA7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVy biAwOwogfQpAQCAtNjU5LDggKzY0Niw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3JpbmdfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogc3RhdGljIGludCBpbnRlbF9yaW5n X3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0J c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGk5MTVfd29ya2Fy b3VuZHMgKncgPSAmcmVxLT5pOTE1LT53b3JrYXJvdW5kczsKKwl1MzIgKm91dDsKIAlpbnQgcmV0 LCBpOwogCiAJaWYgKHctPmNvdW50ID09IDApCkBAIC02NzAsMTggKzY1NywxOCBAQCBzdGF0aWMg aW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsICh3LT5jb3VudCAqIDIgKyAyKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgKHctPmNvdW50ICogMiArIDIpKTsKKwlpZiAo SVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsKKwkqb3V0KysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTSh3LT5jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKysp IHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCB3LT5yZWdbaV0uYWRkcik7Ci0JCWludGVs X3JpbmdfZW1pdChyaW5nLCB3LT5yZWdbaV0udmFsdWUpOworCQkqb3V0KysgPSBpOTE1X21taW9f cmVnX29mZnNldCh3LT5yZWdbaV0uYWRkcik7CisJCSpvdXQrKyA9IHctPnJlZ1tpXS52YWx1ZTsK IAl9Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCSpvdXQrKyA9IE1JX05PT1A7 CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwg b3V0KTsKIAogCXJldCA9IHJlcS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwgRU1JVF9CQVJSSUVS KTsKIAlpZiAocmV0KQpAQCAtMTQyNywyNCArMTQxNCwyMSBAQCBzdGF0aWMgaW50CiBnZW44X3Jp bmdfc3luY190byhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEt Pmk5MTU7CiAJdTY0IG9mZnNldCA9IEdFTjhfV0FJVF9PRkZTRVQocmVxLT5lbmdpbmUsIHNpZ25h bC0+ZW5naW5lLT5pZCk7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0OwotCWludCByZXQ7 CisJdTMyICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYg KElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsCi0JCQlNSV9TRU1BUEhPUkVfV0FJVCB8Ci0JCQlNSV9TRU1BUEhPUkVfR0xPQkFMX0dU VCB8Ci0JCQlNSV9TRU1BUEhPUkVfU0FEX0dURV9TREQpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBzaWduYWwtPmdsb2JhbF9zZXFubyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2VyXzMy X2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMob2Zm c2V0KSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX1NFTUFQSE9S RV9XQUlUIHwgTUlfU0VNQVBIT1JFX0dMT0JBTF9HVFQgfAorCQkgTUlfU0VNQVBIT1JFX1NBRF9H VEVfU0REOworCSpvdXQrKyA9IHNpZ25hbC0+Z2xvYmFsX3NlcW5vOworCSpvdXQrKyA9IGxvd2Vy XzMyX2JpdHMob2Zmc2V0KTsKKwkqb3V0KysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJaW50 ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCS8qIFdoZW4gdGhlICFSQ1MgZW5naW5lcyBp ZGxlIHdhaXRpbmcgdXBvbiBhIHNlbWFwaG9yZSwgdGhleSBsb3NlIHRoZWlyCiAJICogcGFnZXRh YmxlcyBhbmQgd2UgbXVzdCByZWxvYWQgdGhlbSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBiYXRjaC4K QEAgLTE0NjEsMjggKzE0NDUsMjcgQEAgc3RhdGljIGludAogZ2VuNl9yaW5nX3N5bmNfdG8oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpzaWduYWwpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7 CiAJdTMyIGR3MSA9IE1JX1NFTUFQSE9SRV9NQk9YIHwKIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFS RSB8CiAJCSAgTUlfU0VNQVBIT1JFX1JFR0lTVEVSOwogCXUzMiB3YWl0X21ib3ggPSBzaWduYWwt PmVuZ2luZS0+c2VtYXBob3JlLm1ib3gud2FpdFtyZXEtPmVuZ2luZS0+aHdfaWRdOwotCWludCBy ZXQ7CisJdTMyICpvdXQ7CiAKIAlXQVJOX09OKHdhaXRfbWJveCA9PSBNSV9TRU1BUEhPUkVfU1lO Q19JTlZBTElEKTsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0 KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAo SVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgZHcxIHwgd2FpdF9tYm94KTsKKwkqb3V0KysgPSBkdzEgfCB3YWl0X21ib3g7CiAJLyog VGhyb3VnaG91dCBhbGwgb2YgdGhlIEdFTSBjb2RlLCBzZXFubyBwYXNzZWQgaW1wbGllcyBvdXIg Y3VycmVudAogCSAqIHNlcW5vIGlzID49IHRoZSBsYXN0IHNlcW5vIGV4ZWN1dGVkLiBIb3dldmVy IGZvciBoYXJkd2FyZSB0aGUKIAkgKiBjb21wYXJpc29uIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhh bi4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2lnbmFsLT5nbG9iYWxfc2Vxbm8gLSAx KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBzaWduYWwtPmds b2JhbF9zZXFubyAtIDE7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVs X3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1ODMsMTYgKzE1 NjYsMTUgQEAgaTh4eF9pcnFfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiBzdGF0aWMgaW50CiBic2RfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7 Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAy KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfRkxVU0gpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gTUlfRkxVU0g7CisJ Km91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCXJldHVy biAwOwogfQogCkBAIC0xNjU4LDIwICsxNjQwLDE3IEBAIGk5NjVfZW1pdF9iYl9zdGFydChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgdTY0IG9mZnNldCwgdTMyIGxlbmd0 aCwKIAkJICAgdW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9y aW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKLQlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4g UFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlNSV9CQVRDSF9CVUZG RVJfU1RBUlQgfAotCQkJTUlfQkFUQ0hfR1RUIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfU0VDVVJFID8KLQkJCSAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KSk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVCB8CisJCSAo ZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAwIDogTUlfQkFUQ0hf Tk9OX1NFQ1VSRV9JOTY1KTsKKwkqb3V0KysgPSBvZmZzZXQ7CisJaW50ZWxfcmluZ19hZHZhbmNl KHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY4NSw1OSArMTY2NCw1NiBAQCBpODMw X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2 NCBvZmZzZXQsIHUzMiBsZW4sCiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsK LQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQl1MzIgY3Nfb2Zmc2V0ID0g aTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCk7Ci0JaW50IHJldDsKKwl1MzIg Km91dCwgY3Nfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCk7 CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJu IHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQp KQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJLyogRXZpY3QgdGhlIGludmFsaWQgUFRFIFRM QnMgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklURV9S R0JBKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9DT0xP Ul9DT1BZIHwgNDA5Nik7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEk4MzBfVExCX0VOVFJJRVMg PDwgMTYgfCA0KTsgLyogbG9hZCBlYWNoIHBhZ2UgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywg Y3Nfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMHhkZWFkYmVlZik7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkq b3V0KysgPSBDT0xPUl9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkE7CisJKm91dCsrID0gQkxUX0RF UFRIXzMyIHwgQkxUX1JPUF9DT0xPUl9DT1BZIHwgNDA5NjsKKwkqb3V0KysgPSBJODMwX1RMQl9F TlRSSUVTIDw8IDE2IHwgNDsgLyogbG9hZCBlYWNoIHBhZ2UgKi8KKwkqb3V0KysgPSBjc19vZmZz ZXQ7CisJKm91dCsrID0gMHhkZWFkYmVlZjsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3Jp bmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlpZiAoKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQ QVRDSF9QSU5ORUQpID09IDApIHsKIAkJaWYgKGxlbiA+IEk4MzBfQkFUQ0hfTElNSVQpCiAJCQly ZXR1cm4gLUVOT1NQQzsKIAotCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNiArIDIpOwot CQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKKwkJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDYgKyAyKTsKKwkJaWYgKElTX0VSUihvdXQpKQorCQkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAog CQkvKiBCbGl0IHRoZSBiYXRjaCAod2hpY2ggaGFzIG5vdyBhbGwgcmVsb2NzIGFwcGxpZWQpIHRv IHRoZQogCQkgKiBzdGFibGUgYmF0Y2ggc2NyYXRjaCBibyBhcmVhIChzbyB0aGF0IHRoZSBDUyBu ZXZlcgogCQkgKiBzdHVtYmxlcyBvdmVyIGl0cyB0bGIgaW52YWxpZGF0aW9uIGJ1ZykgLi4uCiAJ CSAqLwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgU1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklU RV9SR0JBKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJQkxUX0RFUFRIXzMyIHwgQkxU X1JPUF9TUkNfQ09QWSB8IDQwOTYpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgRElWX1JPVU5E X1VQKGxlbiwgNDA5NikgPDwgMTYgfCA0MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNz X29mZnNldCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCA0MDk2KTsKLQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIG9mZnNldCk7Ci0KLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0ZMVVNIKTsK LQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJCSpvdXQrKyA9IFNSQ19DT1BZX0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdCQTsKKwkJ Km91dCsrID0gQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IDQwOTY7CisJCSpvdXQr KyA9IERJVl9ST1VORF9VUChsZW4sIDQwOTYpIDw8IDE2IHwgNDA5NjsKKwkJKm91dCsrID0gY3Nf b2Zmc2V0OworCQkqb3V0KysgPSA0MDk2OworCQkqb3V0KysgPSBvZmZzZXQ7CisKKwkJKm91dCsr ID0gTUlfRkxVU0g7CisJCSpvdXQrKyA9IE1JX05PT1A7CisJCWludGVsX3JpbmdfYWR2YW5jZShy ZXEsIG91dCk7CiAKIAkJLyogLi4uIGFuZCBleGVjdXRlIGl0LiAqLwogCQlvZmZzZXQgPSBjc19v ZmZzZXQ7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJ U19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VS RSA/Ci0JCQkJCTAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVDsK Kwkqb3V0KysgPSBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VS RSA/CisJCSAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJl cSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTc0NywxNyArMTcyMywxNiBAQCBpOTE1X2Vt aXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBv ZmZzZXQsIHUzMiBsZW4sCiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0OworCXUzMiAqb3V0 OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIob3V0 KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9C QVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkJ CTAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwor CSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVDsKKwkqb3V0Kysg PSBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAw IDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsK IAogCXJldHVybiAwOwogfQpAQCAtMjE3MSw3ICsyMTQ2LDcgQEAgdm9pZCBpbnRlbF9sZWdhY3lf c3VibWlzc2lvbl9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiBz dGF0aWMgaW50IHJpbmdfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCiB7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAogCUdFTV9CVUdfT04oIXJlcXVl c3QtPmN0eC0+ZW5naW5lW3JlcXVlc3QtPmVuZ2luZS0+aWRdLnBpbl9jb3VudCk7CiAKQEAgLTIx ODQsOSArMjE1OSw5IEBAIHN0YXRpYyBpbnQgcmluZ19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlHRU1fQlVHX09OKCFyZXF1ZXN0LT5lbmdpbmUt PmJ1ZmZlcik7CiAJcmVxdWVzdC0+cmluZyA9IHJlcXVlc3QtPmVuZ2luZS0+YnVmZmVyOwogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCAwKTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgMCk7CisJaWYgKElTX0VSUihv dXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJcmVxdWVzdC0+cmVzZXJ2ZWRfc3BhY2Ug LT0gTEVHQUNZX1JFUVVFU1RfU0laRTsKIAlyZXR1cm4gMDsKQEAgLTIyNDEsNyArMjIxNiw3IEBA IHN0YXRpYyBpbnQgd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIGludCBieXRlcykKIAlyZXR1cm4gMDsKIH0KIAotaW50IGludGVsX3JpbmdfYmVnaW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQordTMyICppbnRl bF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3 b3JkcykKIHsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlpbnQgcmVt YWluX2FjdHVhbCA9IHJpbmctPnNpemUgLSByaW5nLT50YWlsOwpAQCAtMjI0OSw2ICsyMjI0LDcg QEAgaW50IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBudW1fZHdvcmRzKQogCWludCBieXRlcyA9IG51bV9kd29yZHMgKiBzaXplb2YodTMyKTsK IAlpbnQgdG90YWxfYnl0ZXMsIHdhaXRfYnl0ZXM7CiAJYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsK Kwl1MzIgKm91dDsKIAogCXRvdGFsX2J5dGVzID0gYnl0ZXMgKyByZXEtPnJlc2VydmVkX3NwYWNl OwogCkBAIC0yMjc1LDcgKzIyNTEsNyBAQCBpbnQgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMpCiAJaWYgKHdhaXRfYnl0ZXMg PiByaW5nLT5zcGFjZSkgewogCQlpbnQgcmV0ID0gd2FpdF9mb3Jfc3BhY2UocmVxLCB3YWl0X2J5 dGVzKTsKIAkJaWYgKHVubGlrZWx5KHJldCkpCi0JCQlyZXR1cm4gcmV0OworCQkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKIAl9CiAKIAlpZiAodW5saWtlbHkobmVlZF93cmFwKSkgewpAQCAtMjI4OCwz MiArMjI2NCwzMyBAQCBpbnQgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMpCiAJCXJpbmctPnNwYWNlIC09IHJlbWFpbl9hY3R1 YWw7CiAJfQogCisJb3V0ID0gcmluZy0+dmFkZHIgKyByaW5nLT50YWlsOworCXJpbmctPnRhaWwg Kz0gYnl0ZXM7CiAJcmluZy0+c3BhY2UgLT0gYnl0ZXM7CiAJR0VNX0JVR19PTihyaW5nLT5zcGFj ZSA8IDApOwotCUdFTV9CVUdfT05MWShyaW5nLT5hZHZhbmNlID0gcmluZy0+dGFpbCArIGJ5dGVz KTsKLQlyZXR1cm4gMDsKKworCXJldHVybiBvdXQ7CiB9CiAKIC8qIEFsaWduIHRoZSByaW5nIHRh aWwgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkgKi8KIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9h bGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlpbnQgbnVtX2R3b3JkcyA9Ci0JCShyaW5nLT50YWls ICYgKENBQ0hFTElORV9CWVRFUyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7Ci0JaW50IHJldDsK KwkJKHJlcS0+cmluZy0+dGFpbCAmIChDQUNIRUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodWlu dDMyX3QpOworCXUzMiAqb3V0OwogCiAJaWYgKG51bV9kd29yZHMgPT0gMCkKIAkJcmV0dXJuIDA7 CiAKIAludW1fZHdvcmRzID0gQ0FDSEVMSU5FX0JZVEVTIC8gc2l6ZW9mKHVpbnQzMl90KSAtIG51 bV9kd29yZHM7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIG51bV9kd29yZHMpOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIG51bV9k d29yZHMpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCXdo aWxlIChudW1fZHdvcmRzLS0pCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJ Km91dCsrID0gTUlfTk9PUDsKIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9y aW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMzU3LDEzICsyMzM0 LDExIEBAIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogc3RhdGljIGludCBnZW42X2JzZF9yaW5nX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQl1aW50MzJfdCBjbWQ7Ci0JaW50IHJldDsK Kwl1MzIgY21kLCAqb3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwor CWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCWNtZCA9IE1JX0ZM VVNIX0RXOwogCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KQpAQCAtMjM4NSwxNiArMjM2 MCwxNiBAQCBzdGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogCWlmIChtb2RlICYgRU1JVF9JTlZBTElEQVRFKQog CQljbWQgfD0gTUlfSU5WQUxJREFURV9UTEIgfCBNSV9JTlZBTElEQVRFX0JTRDsKIAotCWludGVs X3JpbmdfZW1pdChyaW5nLCBjbWQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9I V1NfU0NSQVRDSF9BRERSIHwgTUlfRkxVU0hfRFdfVVNFX0dUVCk7CisJKm91dCsrID0gY21kOwor CSpvdXQrKyA9IEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RU OwogCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KSB7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8q IHZhbHVlICovCisJCSpvdXQrKyA9IDA7IC8qIHVwcGVyIGFkZHIgKi8KKwkJKm91dCsrID0gMDsg LyogdmFsdWUgKi8KIAl9IGVsc2UgIHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9 IE1JX05PT1A7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2Fk dmFuY2UocmVxLCBvdXQpOwogCXJldHVybiAwOwogfQogCkBAIC0yNDAzLDIzICsyMzc4LDIyIEBA IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJ ICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKIAkJICAgdW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdz KQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCWJvb2wgcHBndHQg PSBVU0VTX1BQR1RUKHJlcS0+aTkxNSkgJiYKIAkJCSEoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJ U1BBVENIX1NFQ1VSRSk7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJS KG91dCk7CiAKIAkvKiBGSVhNRShCRFcpOiBBZGRyZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxl Y3RvcnMuICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVF9H RU44IHwgKHBwZ3R0PDw4KSB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JT ID8KLQkJCSBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApKTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg dXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9T VEFSVF9HRU44IHwgKHBwZ3R0PDw4KSB8CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BB VENIX1JTID8KKwkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCk7CisJKm91dCsrID0g bG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpvdXQrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsK Kwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTI0MjksMjIgKzI0MDMsMjAgQEAgaHN3X2VtaXRfYmJfc3RhcnQoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgdTY0IG9mZnNldCwgdTMyIGxlbiwK IAkJICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJf RVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCU1JX0JBVENIX0JVRkZFUl9T VEFSVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkg MCA6IE1JX0JBVENIX1BQR1RUX0hTVyB8IE1JX0JBVENIX05PTl9TRUNVUkVfSFNXKSB8Ci0JCQko ZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KLQkJCSBNSV9CQVRDSF9SRVNPVVJD RV9TVFJFQU1FUiA6IDApKTsKKwkqb3V0KysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAorCQkg KGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPworCQkgMCA6IE1JX0JBVENI X1BQR1RUX0hTVyB8IE1JX0JBVENIX05PTl9TRUNVUkVfSFNXKSB8CisJCSAoZGlzcGF0Y2hfZmxh Z3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDog MCk7CiAJLyogYml0MC03IGlzIHRoZSBsZW5ndGggb24gR0VONisgKi8KLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0g b2Zmc2V0OworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTI0NTQsMjAgKzI0MjYsMTggQEAgZ2VuNl9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkgICB1bnNp Z25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBy ZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7 CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8Ci0J CQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkgMCA6IE1JX0JB VENIX05PTl9TRUNVUkVfSTk2NSkpOworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8 CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAwIDogTUlf QkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KTsKIAkvKiBiaXQwLTcgaXMgdGhlIGxlbmd0aCBvbiBHRU42 KyAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKKwkqb3V0KysgPSBvZmZzZXQ7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0 KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjQ3NiwxMyArMjQ0NiwxMSBAQCBnZW42X2VtaXRfYmJf c3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAKIHN0YXRpYyBpbnQgZ2Vu Nl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkK IHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQl1aW50MzJfdCBjbWQ7 Ci0JaW50IHJldDsKKwl1MzIgY21kLCAqb3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDQpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAog CWNtZCA9IE1JX0ZMVVNIX0RXOwogCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KQpAQCAt MjUwMywxNyArMjQ3MSwxNiBAQCBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJICovCiAJaWYgKG1vZGUgJiBFTUlU X0lOVkFMSURBVEUpCiAJCWNtZCB8PSBNSV9JTlZBTElEQVRFX1RMQjsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCUk5MTVfR0VNX0hXU19T Q1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RUKTsKKwkqb3V0KysgPSBjbWQ7CisJKm91 dCsrID0gSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQ7CiAJ aWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49IDgpIHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IDApOyAvKiB1cHBlciBhZGRyICovCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFs dWUgKi8KKwkJKm91dCsrID0gMDsgLyogdXBwZXIgYWRkciAqLworCQkqb3V0KysgPSAwOyAvKiB2 YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gTUlf Tk9PUDsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5j ZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaAppbmRleCA4OTY4MzhjYTUwMmMuLjgzMDNmYTdhYmMwNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMTQ0LDcgKzE0NCw2IEBAIHN0cnVjdCBp bnRlbF9yaW5nIHsKIAogCXUzMiBoZWFkOwogCXUzMiB0YWlsOwotCUdFTV9CVUdfT05MWV9ERUNM QVJFKHUzMiBhZHZhbmNlKTsKIAogCWludCBzcGFjZTsKIAlpbnQgc2l6ZTsKQEAgLTQ5NSwyMSAr NDk0LDEyIEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKIAogdm9pZCBpbnRlbF9sZWdhY3lfc3VibWlzc2lvbl9yZXN1bWUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAotaW50IF9fbXVzdF9jaGVjayBpbnRlbF9y aW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbik7CiBpbnQg X19tdXN0X2NoZWNrIGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKIAotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdChz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdTMyIGRhdGEpCi17Ci0JKih1aW50MzJfdCAqKShyaW5n LT52YWRkciArIHJpbmctPnRhaWwpID0gZGF0YTsKLQlyaW5nLT50YWlsICs9IDQ7Ci19Ci0KLXN0 YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9yaW5nICpy aW5nLCBpOTE1X3JlZ190IHJlZykKLXsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaTkxNV9tbWlv X3JlZ19vZmZzZXQocmVnKSk7Ci19Cit1MzIgX19tdXN0X2NoZWNrICppbnRlbF9yaW5nX2JlZ2lu KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbik7CiAKLXN0YXRpYyBpbmxp bmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCitzdGF0 aWMgaW5saW5lIHZvaWQKK2ludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwgdTMyICpvdXQpCiB7CiAJLyogRHVtbXkgZnVuY3Rpb24uCiAJICoKQEAgLTUx OSw3ICs1MDksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19hZHZhbmNlKHN0cnVj dCBpbnRlbF9yaW5nICpyaW5nKQogCSAqIHJlc2VydmVkIGZvciB0aGUgY29tbWFuZCBwYWNrZXQg KGkuZS4gdGhlIHZhbHVlIHBhc3NlZCB0bwogCSAqIGludGVsX3JpbmdfYmVnaW4oKSkuCiAJICov Ci0JR0VNX0JVR19PTkxZX09OKHJpbmctPnRhaWwgIT0gcmluZy0+YWR2YW5jZSk7CisJR0VNX0JV R19PTigocmVxLT5yaW5nLT52YWRkciArIHJlcS0+cmluZy0+dGFpbCkgIT0gb3V0KTsKIH0KIAog c3RhdGljIGlubGluZSB1MzIgaW50ZWxfcmluZ19vZmZzZXQoc3RydWN0IGludGVsX3JpbmcgKnJp bmcsIHZvaWQgKmFkZHIpCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==