From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v7] drm/i915: Emit to ringbuffer directly Date: Thu, 9 Feb 2017 09:02:06 +0000 Message-ID: <1486630926-14501-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20170208182137.GZ11545@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 113986EA3B for ; Thu, 9 Feb 2017 09:02:23 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id v77so1809057wmv.0 for ; Thu, 09 Feb 2017 01:02:22 -0800 (PST) In-Reply-To: <20170208182137.GZ11545@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcmVt b3ZlcyB0aGUgdXNhZ2Ugb2YgaW50ZWxfcmluZ19lbWl0IGluIGZhdm91ciBvZgpkaXJlY3RseSB3 cml0aW5nIHRvIHRoZSByaW5nIGJ1ZmZlci4KCmludGVsX3JpbmdfZW1pdCB3YXMgcHJldmVudGlu ZyB0aGUgY29tcGlsZXIgZm9yIG9wdGltaXNpbmcKZmV0Y2ggYW5kIGluY3JlbWVudCBvZiB0aGUg Y3VycmVudCByaW5nIGJ1ZmZlciBwb2ludGVyIGFuZAp0aGVyZWZvcmUgZ2VuZXJhdGluZyB2ZXJ5 IHZlcmJvc2UgY29kZSBmb3IgZXZlcnkgd3JpdGUuCgpJdCBoYWQgbm8gdXNlZnVsIHB1cnBvc2Ug c2luY2UgYWxsIHJpbmdidWZmZXIgb3BlcmF0aW9ucwphcmUgc3RhcnRlZCBhbmQgZW5kZWQgd2l0 aCBpbnRlbF9yaW5nX2JlZ2luIGFuZAppbnRlbF9yaW5nX2FkdmFuY2UgcmVzcGVjdGl2ZWx5LCB3 aXRoIG5vIGJhaWwgb3V0IGluIHRoZQptaWRkbGUgcG9zc2libGUsIHNvIGl0IGlzIGZpbmUgdG8g aW5jcmVtZW50IHRoZSB0YWlsIGluCmludGVsX3JpbmdfYmVnaW4gYW5kIGxldCB0aGUgY29kZSBt YW5hZ2UgdGhlIHBvaW50ZXIKaXRzZWxmLgoKVXNlbGVzcyBpbnN0cnVjdGlvbiByZW1vdmFsIGFt b3VudHMgdG8gYXBwcm94aW1hdGVseQp0d28gYW5kIGhhbGYga2lsb2J5dGVzIG9mIHNhdmVkIHRl eHQgb24gbXkgYnVpbGQuCgpOb3Qgc3VyZSBpZiB0aGlzIGhhcyBhbnkgbWVhc3VyYWJsZSBwZXJm b3JtYW5jZQppbXBsaWNhdGlvbnMgYnV0IGV4ZWN1dGluZyBhIHRvbiBvZiB1c2VsZXNzIGluc3Ry dWN0aW9ucwpvbiBmYXN0IHBhdGhzIGNhbm5vdCBiZSBnb29kLgoKUGF0Y2ggaXMgbm90IGZ1bGx5 IHBvbGlzaGVkLCBidXQgaXQgY29tcGlsZXMgYW5kIHJ1bnMKb24gR2VuOSBhdCBsZWFzdC4KCnYy OgogKiBDaGFuZ2UgcmV0dXJuIGZyb20gaW50ZWxfcmluZ19iZWdpbiB0byBlcnJvciBwb2ludGVy IGJ5CiAgIHBvcHVsYXIgZGVtYW5kLgogKiBNb3ZlIHRhaWwgaW5jcmVtZW50IHRvIGludGVsX3Jp bmdfYWR2YW5jZSB0byBlbmFibGUgc29tZQogICBlcnJvciBjaGVja2luZy4KCnYzOgogKiBNb3Zl IHRhaWwgYWR2YW5jZSBiYWNrIGludG8gaW50ZWxfcmluZ19iZWdpbi4KICogUmViYXNlIGFuZCB0 aWR5LgoKdjQ6CiAqIENvbXBsZXRlIHJlYmFzZSBhZnRlciBhIGZldyBtb250aHMgc2luY2UgdjMu Cgp2NToKICogUmVtb3ZlIHVuZWNlc3NhcnkgY2FzdCBhbmQgZml4ICFkZWJ1ZyBjb21waWxlLiAo Q2hyaXMgV2lsc29uKQoKdjY6CiAqIE1ha2UgaW50ZWxfcmluZ19vZmZzZXQgdGFrZSByZXF1ZXN0 IGFzIHdlbGwuCiAqIEZpeCByZWNvcmRpbmcgb2YgcmVxdWVzdCBwb3N0Zml4IHBsdXMgYSBzcHJp bmtsZSBvZiBhc3NlcnRzLgogICAoQ2hyaXMgV2lsc29uKQoKdjc6CiAqIFVzZSBpbnRlbF9yaW5n X29mZnNldCB0byBnZXQgdGhlIHBvc3RmaXguIChDaHJpcyBXaWxzb24pCiAqIENvbnZlcnQgR1ZU IGNvZGUgYXMgd2VsbC4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K Q2M6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0tCgpaaGksIGNvdWxkIHlvdSBw bGVhc2UgY2hlY2sgdGhhdCB0aGV5IHdheSBJIGhhbmRsZWQgdGhlIEdWVApjb2RlIG1ha2VzIHNl bnNlLgoKSSBjaGFuZ2VkIGNvcHlfZ21hX3RvX2h2YSB0byByZXR1cm4gZXJyb3Igb3IgbnVtYmVy IG9mIGJ5dGVzCmNvcGllZCBzaW5jZSB0aGF0IG1ha2VzIGl0IGVhc2llciBmb3IgdGhlIG5ldyBm bGF2b3VyIG9mCmludGVsX3JpbmdfYmVnaW4gYW5kIGludGVsX3JpbmdfYWR2YW5jZSB0byB3b3Jr LgoKSSB3YXMgb25seSBhYmxlIHRvIGNvbXBpbGUgdGVzdCBpdC4KClRoYW5rcywKClR2cnRrbwot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMgICAgICB8ICAzNiArLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICB8ICA3NiArKy0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDQwICsrLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgIDY5ICsrLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgICB8ICAgOCArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwgMTMyICsrKystLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAxNjIgKysrKystLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAgIHwgIDUxICsrLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jICAgICAgIHwgIDc5ICsrLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgfCA0OTIgKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAg ICB8ICAyNiArLQogMTEgZmlsZXMgY2hhbmdlZCwgNTQwIGluc2VydGlvbnMoKyksIDYzMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwppbmRleCA3ZWUxZGI3 NDQ3Y2UuLjQ0YTY2YWE4YTRjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2NtZF9wYXJzZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5j CkBAIC0xNTEyLDcgKzE1MTIsNyBAQCBzdGF0aWMgaW50IGNvcHlfZ21hX3RvX2h2YShzdHJ1Y3Qg aW50ZWxfdmdwdSAqdmdwdSwgc3RydWN0IGludGVsX3ZncHVfbW0gKm1tLAogCQlsZW4gKz0gY29w eV9sZW47CiAJCWdtYSArPSBjb3B5X2xlbjsKIAl9Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGxlbjsK IH0KIAogCkBAIC0xNjI2LDcgKzE2MjYsNyBAQCBzdGF0aWMgaW50IHBlcmZvcm1fYmJfc2hhZG93 KHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKIAlyZXQgPSBjb3B5X2dtYV90b19odmEocy0+ dmdwdSwgcy0+dmdwdS0+Z3R0LmdndHRfbW0sCiAJCQkgICAgICBnbWEsIGdtYSArIGJiX3NpemUs CiAJCQkgICAgICBkc3QpOwotCWlmIChyZXQpIHsKKwlpZiAocmV0IDwgMCkgewogCQlndnRfZXJy KCJmYWlsIHRvIGNvcHkgZ3Vlc3QgcmluZyBidWZmZXJcbiIpOwogCQlnb3RvIHVubWFwX3NyYzsK IAl9CkBAIC0yNTkwLDExICsyNTkwLDggQEAgc3RhdGljIGludCBzY2FuX3dhX2N0eChzdHJ1Y3Qg aW50ZWxfc2hhZG93X3dhX2N0eCAqd2FfY3R4KQogc3RhdGljIGludCBzaGFkb3dfd29ya2xvYWRf cmluZ19idWZmZXIoc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQogewogCXN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7Ci0JaW50IHJpbmdfaWQgPSB3 b3JrbG9hZC0+cmluZ19pZDsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc2hhZG93X2N0eCA9 IHZncHUtPnNoYWRvd19jdHg7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBzaGFkb3dfY3R4 LT5lbmdpbmVbcmluZ19pZF0ucmluZzsKIAl1bnNpZ25lZCBsb25nIGdtYV9oZWFkLCBnbWFfdGFp bCwgZ21hX3RvcCwgZ3Vlc3RfcmJfc2l6ZTsKLQl1bnNpZ25lZCBpbnQgY29weV9sZW4gPSAwOwor CXUzMiAqb3V0OwogCWludCByZXQ7CiAKIAlndWVzdF9yYl9zaXplID0gX1JJTkdfQ1RMX0JVRl9T SVpFKHdvcmtsb2FkLT5yYl9jdGwpOwpAQCAtMjYwOCwzNiArMjYwNSwzMyBAQCBzdGF0aWMgaW50 IHNoYWRvd193b3JrbG9hZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAq d29ya2xvYWQpCiAJZ21hX3RvcCA9IHdvcmtsb2FkLT5yYl9zdGFydCArIGd1ZXN0X3JiX3NpemU7 CiAKIAkvKiBhbGxvY2F0ZSBzaGFkb3cgcmluZyBidWZmZXIgKi8KLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHdvcmtsb2FkLT5yZXEsIHdvcmtsb2FkLT5yYl9sZW4gLyA0KTsKLQlpZiAocmV0KQot CQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4od29ya2xvYWQtPnJlcSwgd29y a2xvYWQtPnJiX2xlbiAvIHNpemVvZih1MzIpKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVy biBQVFJfRVJSKG91dCk7CiAKIAkvKiBnZXQgc2hhZG93IHJpbmcgYnVmZmVyIHZhICovCi0Jd29y a2xvYWQtPnNoYWRvd19yaW5nX2J1ZmZlcl92YSA9IHJpbmctPnZhZGRyICsgcmluZy0+dGFpbDsK Kwl3b3JrbG9hZC0+c2hhZG93X3JpbmdfYnVmZmVyX3ZhID0gb3V0OwogCiAJLyogaGVhZCA+IHRh aWwgLS0+IGNvcHkgaGVhZCA8LT4gdG9wICovCiAJaWYgKGdtYV9oZWFkID4gZ21hX3RhaWwpIHsK IAkJcmV0ID0gY29weV9nbWFfdG9faHZhKHZncHUsIHZncHUtPmd0dC5nZ3R0X21tLAotCQkJCWdt YV9oZWFkLCBnbWFfdG9wLAotCQkJCXdvcmtsb2FkLT5zaGFkb3dfcmluZ19idWZmZXJfdmEpOwot CQlpZiAocmV0KSB7CisJCQkJICAgICAgZ21hX2hlYWQsIGdtYV90b3AsIG91dCk7CisJCWlmIChy ZXQgPCAwKSB7CiAJCQlndnRfZXJyKCJmYWlsIHRvIGNvcHkgZ3Vlc3QgcmluZyBidWZmZXJcbiIp OwogCQkJcmV0dXJuIHJldDsKIAkJfQotCQljb3B5X2xlbiA9IGdtYV90b3AgLSBnbWFfaGVhZDsK KwkJb3V0ICs9IHJldCAvIHNpemVvZih1MzIpOwogCQlnbWFfaGVhZCA9IHdvcmtsb2FkLT5yYl9z dGFydDsKIAl9CiAKIAkvKiBjb3B5IGhlYWQgb3Igc3RhcnQgPC0+IHRhaWwgKi8KLQlyZXQgPSBj b3B5X2dtYV90b19odmEodmdwdSwgdmdwdS0+Z3R0LmdndHRfbW0sCi0JCQlnbWFfaGVhZCwgZ21h X3RhaWwsCi0JCQl3b3JrbG9hZC0+c2hhZG93X3JpbmdfYnVmZmVyX3ZhICsgY29weV9sZW4pOwot CWlmIChyZXQpIHsKKwlyZXQgPSBjb3B5X2dtYV90b19odmEodmdwdSwgdmdwdS0+Z3R0LmdndHRf bW0sIGdtYV9oZWFkLCBnbWFfdGFpbCwgb3V0KTsKKwlpZiAocmV0IDwgMCkgewogCQlndnRfZXJy KCJmYWlsIHRvIGNvcHkgZ3Vlc3QgcmluZyBidWZmZXJcbiIpOwogCQlyZXR1cm4gcmV0OwogCX0K LQlyaW5nLT50YWlsICs9IHdvcmtsb2FkLT5yYl9sZW47Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOworCW91dCArPSByZXQgLyBzaXplb2YodTMyKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uod29y a2xvYWQtPnJlcSwgb3V0KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjY5MSw3ICsyNjg1LDcgQEAg c3RhdGljIGludCBzaGFkb3dfaW5kaXJlY3RfY3R4KHN0cnVjdCBpbnRlbF9zaGFkb3dfd2FfY3R4 ICp3YV9jdHgpCiAJCQkJd2FfY3R4LT53b3JrbG9hZC0+dmdwdS0+Z3R0LmdndHRfbW0sCiAJCQkJ Z3Vlc3RfZ21hLCBndWVzdF9nbWEgKyBjdHhfc2l6ZSwKIAkJCQltYXApOwotCWlmIChyZXQpIHsK KwlpZiAocmV0IDwgMCkgewogCQlndnRfZXJyKCJmYWlsIHRvIGNvcHkgZ3Vlc3QgaW5kaXJlY3Qg Y3R4XG4iKTsKIAkJZ290byB1bm1hcF9zcmM7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jCmluZGV4IDY4MDEwNTQyMWJiOS4uNDkwNzBiN2FhZDMwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC01ODQsMTAgKzU4NCw5IEBAIHN0YXRp YyBpbmxpbmUgaW50CiBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwgdTMyIGh3X2ZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHJlcS0+aTkxNTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKIAllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKLQl1MzIgZmxhZ3MgPSBod19mbGFncyB8IE1JX01NX1NQQUNFX0dUVDsK Kwl1MzIgKm91dCwgZmxhZ3MgPSBod19mbGFncyB8IE1JX01NX1NQQUNFX0dUVDsKIAljb25zdCBp bnQgbnVtX3JpbmdzID0KIAkJLyogVXNlIGFuIGV4dGVuZGVkIHcvYSBvbiBpdmIrIGlmIHNpZ25h bGxpbmcgZnJvbSBvdGhlciByaW5ncyAqLwogCQlpOTE1LnNlbWFwaG9yZXMgPwpAQCAtNjE3LDk5 ICs2MTYsOTIgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIHUzMiBod19mbGFncykKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KQogCQlsZW4g Kz0gMiArIChudW1fcmluZ3MgPyA0Km51bV9yaW5ncyArIDYgOiAwKTsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIGxlbik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4g UFRSX0VSUihvdXQpOwogCiAJLyogV2FQcm9ncmFtTWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4 dDppdmIsdmx2LGhzdyxiZHcsY2h2ICovCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykg ewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxF KTsKKwkJKm91dCsrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFOwogCQlpZiAobnVt X3JpbmdzKSB7CiAJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7CiAKLQkJCWlu dGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3Mp KTsKKwkJCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9yaW5ncyk7CiAJCQlmb3Jf ZWFjaF9lbmdpbmUoc2lnbmFsbGVyLCBkZXZfcHJpdiwgaWQpIHsKIAkJCQlpZiAoc2lnbmFsbGVy ID09IGVuZ2luZSkKIAkJCQkJY29udGludWU7CiAKLQkJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJp bmcsCi0JCQkJCQkgICAgUklOR19QU01JX0NUTChzaWduYWxsZXItPm1taW9fYmFzZSkpOwotCQkJ CWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCQkJX01BU0tFRF9CSVRfRU5BQkxFKEdFTjZfUFNN SV9TTEVFUF9NU0dfRElTQUJMRSkpOworCQkJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KAorCQkJCQkgICBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxlci0+bW1pb19iYXNlKSk7CisJCQkJKm91 dCsrID0gX01BU0tFRF9CSVRfRU5BQkxFKAorCQkJCQkgR0VONl9QU01JX1NMRUVQX01TR19ESVNB QkxFKTsKIAkJCX0KIAkJfQogCX0KIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU0VUX0NPTlRFWFQpOwotCWludGVsX3JpbmdfZW1p dChyaW5nLAotCQkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUp IHwgZmxhZ3MpOworCSpvdXQrKyA9IE1JX05PT1A7CisJKm91dCsrID0gTUlfU0VUX0NPTlRFWFQ7 CisJKm91dCsrID0gaTkxNV9nZ3R0X29mZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUp IHwgZmxhZ3M7CiAJLyoKIAkgKiB3L2E6IE1JX1NFVF9DT05URVhUIG11c3QgYWx3YXlzIGJlIGZv bGxvd2VkIGJ5IE1JX05PT1AKIAkgKiBXYU1pU2V0Q29udGV4dF9IYW5nOnNuYixpdmIsdmx2CiAJ ICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCSpvdXQrKyA9IE1JX05PT1A7 CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7CiAJCWlmIChudW1fcmluZ3MpIHsK IAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAkJCWk5MTVfcmVnX3QgbGFz dF9yZWcgPSB7fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KIAotCQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsCi0JCQkJCU1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9yaW5ncykpOworCQkJKm91dCsrID0g TUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKTsKIAkJCWZvcl9lYWNoX2VuZ2luZShzaWdu YWxsZXIsIGRldl9wcml2LCBpZCkgewogCQkJCWlmIChzaWduYWxsZXIgPT0gZW5naW5lKQogCQkJ CQljb250aW51ZTsKIAogCQkJCWxhc3RfcmVnID0gUklOR19QU01JX0NUTChzaWduYWxsZXItPm1t aW9fYmFzZSk7Ci0JCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBsYXN0X3JlZyk7Ci0JCQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKEdFTjZfUFNN SV9TTEVFUF9NU0dfRElTQUJMRSkpOworCQkJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KGxhc3RfcmVnKTsKKwkJCQkqb3V0KysgPSBfTUFTS0VEX0JJVF9ESVNBQkxFKAorCQkJCQkgR0VO Nl9QU01JX1NMRUVQX01TR19ESVNBQkxFKTsKIAkJCX0KIAogCQkJLyogSW5zZXJ0IGEgZGVsYXkg YmVmb3JlIHRoZSBuZXh0IHN3aXRjaCEgKi8KLQkJCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJ CQlNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAotCQkJCQlNSV9TUk1fTFJNX0dMT0JBTF9HVFQpOwot CQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBsYXN0X3JlZyk7Ci0JCQlpbnRlbF9yaW5nX2Vt aXQocmluZywKLQkJCQkJaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpKTsKLQkJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJCSpvdXQrKyA9IE1JX1NUT1JFX1JFR0lT VEVSX01FTSB8IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKKwkJCSpvdXQrKyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KGxhc3RfcmVnKTsKKwkJCSpvdXQrKyA9IGk5MTVfZ2d0dF9vZmZzZXQoZW5naW5l LT5zY3JhdGNoKTsKKwkJCSpvdXQrKyA9IE1JX05PT1A7CiAJCX0KLQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsKKwkJKm91dCsrID0gTUlfQVJC X09OX09GRiB8IE1JX0FSQl9FTkFCTEU7CiAJfQogCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQg c2xpY2UpCiB7Ci0JdTMyICpyZW1hcF9pbmZvID0gcmVxLT5pOTE1LT5sM19wYXJpdHkucmVtYXBf aW5mb1tzbGljZV07Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50 IGksIHJldDsKKwl1MzIgKm91dCwgKnJlbWFwX2luZm8gPSByZXEtPmk5MTUtPmwzX3Bhcml0eS5y ZW1hcF9pbmZvW3NsaWNlXTsKKwlpbnQgaTsKIAogCWlmICghcmVtYXBfaW5mbykKIAkJcmV0dXJu IDA7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgR0VON19MM0xPR19TSVpFLzQgKiAy ICsgMik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgR0VON19MM0xPR19TSVpFLzQgKiAyICsgMik7CisJaWYgKElTX0VSUihvdXQpKQorCQly ZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJLyoKIAkgKiBOb3RlOiBXZSBkbyBub3Qgd29ycnkgYWJv dXQgdGhlIGNvbmN1cnJlbnQgcmVnaXN0ZXIgY2FjaGVsaW5lIGhhbmcKIAkgKiBoZXJlIGJlY2F1 c2Ugbm8gb3RoZXIgY29kZSBzaG91bGQgYWNjZXNzIHRoZXNlIHJlZ2lzdGVycyBvdGhlciB0aGFu CiAJICogYXQgaW5pdGlhbGl6YXRpb24gdGltZS4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VON19MM0xPR19TSVpFLzQpKTsKKwkqb3V0KysgPSBN SV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCk7CiAJZm9yIChpID0gMDsgaSA8 IEdFTjdfTDNMT0dfU0laRS80OyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBH RU43X0wzTE9HKHNsaWNlLCBpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCByZW1hcF9pbmZv W2ldKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VON19MM0xPRyhzbGljZSwg aSkpOworCQkqb3V0KysgPSByZW1hcF9pbmZvW2ldOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX05P T1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDhiNjBhMTRhZjll Mi4uOGZmMGYxODZmNTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCkBAIC0xMzM2LDI1ICsxMzM2LDI1IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90 b19hY3RpdmUoc3RydWN0IGxpc3RfaGVhZCAqdm1hcywKIHN0YXRpYyBpbnQKIGk5MTVfcmVzZXRf Z2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0LCBpOworCXUzMiAq b3V0OworCWludCBpOwogCiAJaWYgKCFJU19HRU43KHJlcS0+aTkxNSkgfHwgcmVxLT5lbmdpbmUt PmlkICE9IFJDUykgewogCQlEUk1fREVCVUcoInNvbCByZXNldCBpcyBnZW43L3JjcyBvbmx5XG4i KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDQgKiAzKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCA0ICogMyk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQp OwogCiAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdF TjdfU09fV1JJVEVfT0ZGU0VUKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkq b3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3Jl Z19vZmZzZXQoR0VON19TT19XUklURV9PRkZTRVQoaSkpOworCQkqb3V0KysgPSAwOwogCX0KIAot CWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQp OwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDE1LDcgKzE0MTUsNyBAQCBleGVjYnVmX3N1Ym1pdChz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHBhcmFtcy0+cmVxdWVzdC0+aTkxNTsKIAl1NjQgZXhlY19zdGFy dCwgZXhlY19sZW47CiAJaW50IGluc3RwX21vZGU7Ci0JdTMyIGluc3RwX21hc2s7CisJdTMyIGlu c3RwX21hc2ssICpvdXQ7CiAJaW50IHJldDsKIAogCXJldCA9IGk5MTVfZ2VtX2V4ZWNidWZmZXJf bW92ZV90b19ncHUocGFyYW1zLT5yZXF1ZXN0LCB2bWFzKTsKQEAgLTE0NjEsMTcgKzE0NjEsMTUg QEAgZXhlY2J1Zl9zdWJtaXQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywK IAogCWlmIChwYXJhbXMtPmVuZ2luZS0+aWQgPT0gUkNTICYmCiAJICAgIGluc3RwX21vZGUgIT0g ZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Ci0JCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nID0gcGFyYW1zLT5yZXF1ZXN0LT5yaW5nOwotCi0JCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocGFyYW1zLT5yZXF1ZXN0LCA0KTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0KLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIElO U1RQTSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBf bW9kZSk7Ci0JCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkJb3V0ID0gaW50ZWxfcmluZ19i ZWdpbihwYXJhbXMtPnJlcXVlc3QsIDQpOworCQlpZiAoSVNfRVJSKG91dCkpCisJCQlyZXR1cm4g UFRSX0VSUihvdXQpOworCisJCSpvdXQrKyA9IE1JX05PT1A7CisJCSpvdXQrKyA9IE1JX0xPQURf UkVHSVNURVJfSU1NKDEpOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChJTlNUUE0p OworCQkqb3V0KysgPSBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZTsKKwkJaW50ZWxfcmlu Z19hZHZhbmNlKHBhcmFtcy0+cmVxdWVzdCwgb3V0KTsKIAogCQlkZXZfcHJpdi0+cmVsYXRpdmVf Y29uc3RhbnRzX21vZGUgPSBpbnN0cF9tb2RlOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKaW5kZXggMjJiMzM3NDA5NmU4Li5hNjJhMjMzZWJjNTggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCkBAIC02ODAsMjMgKzY4MCwyMiBAQCBzdGF0aWMgaW50IGdlbjhfd3Jp dGVfcGRwKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICB1bnNpZ25lZCBl bnRyeSwKIAkJCSAgZG1hX2FkZHJfdCBhZGRyKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5n aW5lOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKIAlCVUdfT04oZW50cnkgPj0gNCk7CiAKLQly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKQorCQly ZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVH SVNURVJfSU1NKDEpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjhfUklOR19QRFBf VURXKGVuZ2luZSwgZW50cnkpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0 cyhhZGRyKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEp KTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwg ZW50cnkpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1N KDEpOworCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGVu Z2luZSwgZW50cnkpKTsKKwkqb3V0KysgPSB1cHBlcl8zMl9iaXRzKGFkZHIpOworCSpvdXQrKyA9 IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOworCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgZW50cnkpKTsKKwkqb3V0KysgPSBsb3dlcl8zMl9i aXRzKGFkZHIpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTE3MjMsOCArMTcyMiw4IEBAIHN0YXRpYyB1aW50MzJfdCBnZXRfcGRfb2Zmc2V0KHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRjaChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJdTMyICpvdXQ7CiAJaW50 IHJldDsKIAogCS8qIE5COiBUTEJzIG11c3QgYmUgZmx1c2hlZCBhbmQgaW52YWxpZGF0ZWQgYmVm b3JlIGEgc3dpdGNoICovCkBAIC0xNzMyLDE3ICsxNzMxLDE3IEBAIHN0YXRpYyBpbnQgaHN3X21t X3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJS KG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTE9BRF9SRUdJU1RFUl9JTU0oMikpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklO R19QUF9ESVJfRENMVihlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgUFBfRElSX0RD TFZfMkcpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfQkFTRShlbmdp bmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZ2V0X3BkX29mZnNldChwcGd0dCkpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 CisJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMik7CisJKm91dCsrID0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoUklOR19QUF9ESVJfRENMVihlbmdpbmUpKTsKKwkqb3V0KysgPSBQUF9ESVJf RENMVl8yRzsKKwkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9CQVNF KGVuZ2luZSkpOworCSpvdXQrKyA9IGdldF9wZF9vZmZzZXQocHBndHQpOworCSpvdXQrKyA9IE1J X05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpA QCAtMTc1MCw4ICsxNzQ5LDggQEAgc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCwKIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0LAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK IHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwl1MzIgKm91dDsKIAlpbnQgcmV0Owog CiAJLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlkYXRlZCBiZWZvcmUgYSBz d2l0Y2ggKi8KQEAgLTE3NTksMTcgKzE3NTgsMTcgQEAgc3RhdGljIGludCBnZW43X21tX3N3aXRj aChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OwotCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDIpKTsK LQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0RDTFYoZW5naW5lKSk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIFBQX0RJUl9EQ0xWXzJHKTsKLQlpbnRlbF9yaW5nX2VtaXRf cmVnKHJpbmcsIFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIGdldF9wZF9vZmZzZXQocHBndHQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCW91dCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CisKKwkq b3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsKKwkqb3V0KysgPSBpOTE1X21taW9fcmVn X29mZnNldChSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZSkpOworCSpvdXQrKyA9IFBQX0RJUl9EQ0xW XzJHOworCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfUFBfRElSX0JBU0UoZW5n aW5lKSk7CisJKm91dCsrID0gZ2V0X3BkX29mZnNldChwcGd0dCk7CisJKm91dCsrID0gTUlfTk9P UDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJLyogWFhYOiBSQ1MgaXMgdGhl IG9ubHkgb25lIHRvIGF1dG8gaW52YWxpZGF0ZSB0aGUgVExCcz8gKi8KIAlpZiAoZW5naW5lLT5p ZCAhPSBSQ1MpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl cXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwppbmRleCA2 Y2YzYjNlN2MwZmQuLjg0NGM4MzI2NWNhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuYwpAQCAtODMwLDYgKzgzMCw3IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCiAJ c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwogCXN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGltZWxpbmUgPSByZXF1ZXN0LT50aW1lbGluZTsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnByZXY7CisJdTMyICpvdXQ7CiAJaW50IGVycjsKIAogCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJnJlcXVlc3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwpAQCAtODY4LDEwICs4 NjksOSBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCSAqIEdQVSBwcm9jZXNzaW5nIHRoZSBy ZXF1ZXN0LCB3ZSBuZXZlciBvdmVyLWVzdGltYXRlIHRoZQogCSAqIHBvc2l0aW9uIG9mIHRoZSBy aW5nJ3MgSEVBRC4KIAkgKi8KLQllcnIgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIGVuZ2lu ZS0+ZW1pdF9icmVhZGNydW1iX3N6KTsKLQlHRU1fQlVHX09OKGVycik7Ci0JcmVxdWVzdC0+cG9z dGZpeCA9IHJpbmctPnRhaWw7Ci0JcmluZy0+dGFpbCArPSBlbmdpbmUtPmVtaXRfYnJlYWRjcnVt Yl9zeiAqIHNpemVvZih1MzIpOworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgZW5n aW5lLT5lbWl0X2JyZWFkY3J1bWJfc3opOworCUdFTV9CVUdfT04oSVNfRVJSKG91dCkpOworCXJl cXVlc3QtPnBvc3RmaXggPSBpbnRlbF9yaW5nX29mZnNldChyZXF1ZXN0LCBvdXQpOwogCiAJLyog U2VhbCB0aGUgcmVxdWVzdCBhbmQgbWFyayBpdCBhcyBwZW5kaW5nIGV4ZWN1dGlvbi4gTm90ZSB0 aGF0CiAJICogd2UgbWF5IGluc3BlY3QgdGhpcyBzdGF0ZSwgd2l0aG91dCBob2xkaW5nIGFueSBs b2NrcywgZHVyaW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZDBkMDQy NDk1ZGM3Li4yODVhMzU2ZTllNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK QEAgLTExNzYyLDE0ICsxMTc2MiwxMiBAQCBzdGF0aWMgaW50IGludGVsX2dlbjJfcXVldWVfZmxp cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJp bmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwotCXUzMiBmbGlwX21hc2s7Ci0JaW50IHJldDsKKwl1MzIgZmxpcF9tYXNr LCAqb3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19F UlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCS8qIENhbid0IHF1ZXVlIG11bHRp cGxlIGZsaXBzLCBzbyB3YWl0IGZvciB0aGUgcHJldmlvdXMKIAkgKiBvbmUgdG8gZmluaXNoIGJl Zm9yZSBleGVjdXRpbmcgdGhlIG5leHQuCkBAIC0xMTc3OCwxMyArMTE3NzYsMTIgQEAgc3RhdGlj IGludCBpbnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZmxp cF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQOwogCWVsc2UKIAkJZmxpcF9tYXNrID0g TUlfV0FJVF9GT1JfUExBTkVfQV9GTElQOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlU X0ZPUl9FVkVOVCB8IGZsaXBfbWFzayk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1Ap OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAotCQkJTUlfRElTUExB WV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IGZiLT5waXRjaGVzWzBdKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+Zmxp cF93b3JrLT5ndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIGF1eCBk aXNwbGF5IGJhc2UgYWRkcmVzcywgdW51c2VkICovCisJKm91dCsrID0gTUlfV0FJVF9GT1JfRVZF TlQgfCBmbGlwX21hc2s7CisJKm91dCsrID0gTUlfTk9PUDsKKwkqb3V0KysgPSBNSV9ESVNQTEFZ X0ZMSVAgfCBNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpOworCSpvdXQr KyA9IGZiLT5waXRjaGVzWzBdOworCSpvdXQrKyA9IGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0 X29mZnNldDsKKwkqb3V0KysgPSAwOyAvKiBhdXggZGlzcGxheSBiYXNlIGFkZHJlc3MsIHVudXNl ZCAqLwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMTc5NiwyNiArMTE3OTMsMjQgQEAgc3RhdGljIGlu dCBpbnRlbF9nZW4zX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQogewot CXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQl1MzIgZmxpcF9tYXNrOwotCWlu dCByZXQ7CisJdTMyIGZsaXBfbWFzaywgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCA2KTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAK IAlpZiAoaW50ZWxfY3J0Yy0+cGxhbmUpCiAJCWZsaXBfbWFzayA9IE1JX1dBSVRfRk9SX1BMQU5F X0JfRkxJUDsKIAllbHNlCiAJCWZsaXBfbWFzayA9IE1JX1dBSVRfRk9SX1BMQU5FX0FfRkxJUDsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2spOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfRElTUExBWV9GTElQX0k5MTUgfAotCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2Ny dGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJKm91dCsrID0gTUlfV0FJVF9GT1Jf RVZFTlQgfCBmbGlwX21hc2s7CisJKm91dCsrID0gTUlfTk9PUDsKKwkqb3V0KysgPSBNSV9ESVNQ TEFZX0ZMSVBfSTkxNSB8CisJCSBNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxh bmUpOworCSpvdXQrKyA9IGZiLT5waXRjaGVzWzBdOworCSpvdXQrKyA9IGludGVsX2NydGMtPmZs aXBfd29yay0+Z3R0X29mZnNldDsKKwkqb3V0KysgPSBNSV9OT09QOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC0xMTgyNywyNSArMTE4MjIsMjIgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2Zs aXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7Ci0JdWludDMyX3QgcGYsIHBpcGVzcmM7Ci0JaW50IHJldDsKKwl1MzIgcGYsIHBp cGVzcmMsICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYg KElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCiAJLyogaTk2NSsgdXNlcyB0 aGUgbGluZWFyIG9yIHRpbGVkIG9mZnNldHMgZnJvbSB0aGUKIAkgKiBEaXNwbGF5IFJlZ2lzdGVy cyAod2hpY2ggZG8gbm90IGNoYW5nZSBhY3Jvc3MgYSBwYWdlLWZsaXApCiAJICogc28gd2UgbmVl ZCBvbmx5IHJlcHJvZ3JhbSB0aGUgYmFzZSBhZGRyZXNzLgogCSAqLwotCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAotCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVs X2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0 IHwKLQkJCWludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpKTsKKwkqb3V0 KysgPSBNSV9ESVNQTEFZX0ZMSVAgfCBNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+ cGxhbmUpOworCSpvdXQrKyA9IGZiLT5waXRjaGVzWzBdOworCSpvdXQrKyA9IGludGVsX2NydGMt PmZsaXBfd29yay0+Z3R0X29mZnNldCB8CisJCSBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmco ZmItPm1vZGlmaWVyKTsKIAogCS8qIFhYWCBFbmFibGluZyB0aGUgcGFuZWwtZml0dGVyIGFjcm9z cyBwYWdlLWZsaXAgaXMgc28gZmFyCiAJICogdW50ZXN0ZWQgb24gbm9uLW5hdGl2ZSBtb2Rlcywg c28gaWdub3JlIGl0IGZvciBub3cuCkBAIC0xMTg1Myw3ICsxMTg0NSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZ2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAJcGYg PSAwOwogCXBpcGVzcmMgPSBJOTE1X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAw eDBmZmYwZmZmOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBwZiB8IHBpcGVzcmMpOworCSpvdXQr KyA9IHBmIHwgcGlwZXNyYzsKIAogCXJldHVybiAwOwogfQpAQCAtMTE4NjUsMjEgKzExODU3LDE3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJf dCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXVpbnQzMl90IHBm LCBwaXBlc3JjOwotCWludCByZXQ7CisJdTMyIHBmLCBwaXBlc3JjLCAqb3V0OwogCi0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJu IFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAg fAotCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdIHwKLQkJCWludGVsX2ZiX21vZGlmaWVyX3Rv X3RpbGluZyhmYi0+bW9kaWZpZXIpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0 Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKKwkqb3V0KysgPSBNSV9ESVNQTEFZX0ZMSVAgfCBN SV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpOworCSpvdXQrKyA9IGZiLT5w aXRjaGVzWzBdIHwgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllcik7CisJ Km91dCsrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0OwogCiAJLyogQ29udHJh cnkgdG8gdGhlIHN1Z2dlc3Rpb25zIGluIHRoZSBkb2N1bWVudGF0aW9uLAogCSAqICJFbmFibGUg UGFuZWwgRml0dGVyIiBkb2VzIG5vdCBzZWVtIHRvIGJlIHJlcXVpcmVkIHdoZW4gcGFnZQpAQCAt MTE4ODksNyArMTE4NzcsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqLwogCXBmID0gMDsKIAlwaXBlc3JjID0gSTkxNV9SRUFE KFBJUEVTUkMoaW50ZWxfY3J0Yy0+cGlwZSkpICYgMHgwZmZmMGZmZjsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgcGYgfCBwaXBlc3JjKTsKKwkqb3V0KysgPSBwZiB8IHBpcGVzcmM7CiAKIAlyZXR1 cm4gMDsKIH0KQEAgLTExOTAyLDkgKzExODkwLDggQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1 ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQl1aW50MzJfdCBwbGFuZV9iaXQgPSAw OworCXUzMiAqb3V0LCBwbGFuZV9iaXQgPSAwOwogCWludCBsZW4sIHJldDsKIAogCXN3aXRjaCAo aW50ZWxfY3J0Yy0+cGxhbmUpIHsKQEAgLTExOTQ4LDkgKzExOTM1LDkgQEAgc3RhdGljIGludCBp bnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIGxlbik7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgbGVuKTsK KwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKiBVbm1hc2sg dGhlIGZsaXAtZG9uZSBjb21wbGV0aW9uIG1lc3NhZ2UuIE5vdGUgdGhhdCB0aGUgYnNwZWMgc2F5 cyB0aGF0CiAJICogd2Ugc2hvdWxkIGRvIHRoaXMgZm9yIGJvdGggdGhlIEJDUyBhbmQgUkNTLCBh bmQgdGhhdCB3ZSBtdXN0IG5vdCB1bm1hc2sKQEAgLTExOTYyLDMxICsxMTk0OSwyOCBAQCBzdGF0 aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAq IHRvIHplcm8gZG9lcyBsZWFkIHRvIGxvY2t1cHMgd2l0aGluIE1JX0RJU1BMQVlfRkxJUC4KIAkg Ki8KIAlpZiAocmVxLT5lbmdpbmUtPmlkID09IFJDUykgewotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IERFUlJNUik7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB+KERFUlJNUl9QSVBFQV9QUklfRkxJ UF9ET05FIHwKLQkJCQkJICBERVJSTVJfUElQRUJfUFJJX0ZMSVBfRE9ORSB8Ci0JCQkJCSAgREVS Uk1SX1BJUEVDX1BSSV9GTElQX0RPTkUpKTsKKwkJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KERFUlJNUik7CisJCSpvdXQr KyA9IH4oREVSUk1SX1BJUEVBX1BSSV9GTElQX0RPTkUgfAorCQkJIERFUlJNUl9QSVBFQl9QUklf RkxJUF9ET05FIHwKKwkJCSBERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSk7CiAJCWlmIChJU19H RU44KGRldl9wcml2KSkKLQkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9SRUdJU1RF Ul9NRU1fR0VOOCB8Ci0JCQkJCSAgICAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7CisJCQkqb3V0 KysgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCB8CisJCQkJIE1JX1NSTV9MUk1fR0xPQkFM X0dUVDsKIAkJZWxzZQotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVS X01FTSB8Ci0JCQkJCSAgICAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7Ci0JCWludGVsX3Jpbmdf ZW1pdF9yZWcocmluZywgREVSUk1SKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJaTkx NV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAyNTYpOworCQkJKm91dCsrID0g TUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOworCQkqb3V0Kysg PSBpOTE1X21taW9fcmVnX29mZnNldChERVJSTVIpOworCQkqb3V0KysgPSBpOTE1X2dndHRfb2Zm c2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDI1NjsKIAkJaWYgKElTX0dFTjgoZGV2X3ByaXYp KSB7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJCQkqb3V0KysgPSAwOworCQkJKm91dCsrID0gTUlfTk9PUDsKIAkJfQog CX0KIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5l X2JpdCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdIHwKLQkJCWludGVs X2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgKE1JX05PT1ApKTsKKwkqb3V0KysgPSBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBs YW5lX2JpdDsKKwkqb3V0KysgPSBmYi0+cGl0Y2hlc1swXSB8IGludGVsX2ZiX21vZGlmaWVyX3Rv X3RpbGluZyhmYi0+bW9kaWZpZXIpOworCSpvdXQrKyA9IGludGVsX2NydGMtPmZsaXBfd29yay0+ Z3R0X29mZnNldDsKKwkqb3V0KysgPSBNSV9OT09QOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCmluZGV4IGUwNzFiY2RjMjgzMy4uMWQ4NjNlOGE1NWUwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtODUwLDYgKzg1MCw3IEBAIHN0YXRpYyBpbnQgZXhlY2xp c3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQog ewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSAmcmVxdWVzdC0+Y3R4LT5lbmdpbmVbZW5naW5lLT5p ZF07CisJdTMyICpvdXQ7CiAJaW50IHJldDsKIAogCUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQp OwpAQCAtODc0LDkgKzg3NSwxMSBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0X2FsbG9j KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAkJCWdvdG8gZXJyOwogCX0K IAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgMCk7Ci0JaWYgKHJldCkKKwlvdXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDApOworCWlmIChJU19FUlIob3V0KSkgeworCQly ZXQgPSBQVFJfRVJSKG91dCk7CiAJCWdvdG8gZXJyX3VucmVzZXJ2ZTsKKwl9CiAKIAlpZiAoIWNl LT5pbml0aWFsaXNlZCkgewogCQlyZXQgPSBlbmdpbmUtPmluaXRfY29udGV4dChyZXF1ZXN0KTsK QEAgLTkwNSw5ICs5MDgsOSBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogc3RhdGljIGludCBpbnRlbF9s b2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKIHsKLQlpbnQgcmV0LCBpOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5y aW5nOwogCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+aTkxNS0+d29ya2Fyb3Vu ZHM7CisJdTMyICpvdXQ7CisJaW50IHJldCwgaTsKIAogCWlmICh3LT5jb3VudCA9PSAwKQogCQly ZXR1cm4gMDsKQEAgLTkxNiwxOCArOTE5LDE4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9y aW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCB3 LT5jb3VudCAqIDIgKyAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCB3LT5jb3VudCAqIDIgKyAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJ CXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9S RUdJU1RFUl9JTU0ody0+Y291bnQpKTsKKwkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3 LT5jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKyspIHsKLQkJaW50ZWxfcmlu Z19lbWl0X3JlZyhyaW5nLCB3LT5yZWdbaV0uYWRkcik7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5n LCB3LT5yZWdbaV0udmFsdWUpOworCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldCh3LT5y ZWdbaV0uYWRkcik7CisJCSpvdXQrKyA9IHctPnJlZ1tpXS52YWx1ZTsKIAl9Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOworCSpvdXQrKyA9IE1JX05PT1A7CiAKLQlpbnRlbF9yaW5n X2FkdmFuY2UocmluZyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldCA9 IHJlcS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwgRU1JVF9CQVJSSUVSKTsKIAlpZiAocmV0KQpA QCAtMTQyMCwyNyArMTQyMywyNyBAQCBzdGF0aWMgdm9pZCByZXNldF9jb21tb25fcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmlu Z19lbWl0X3BkcHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcmVxLT5jdHgtPnBwZ3R0OwotCXN0cnVjdCBpbnRlbF9y aW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9 IHJlcS0+ZW5naW5lOwogCWNvbnN0IGludCBudW1fbHJpX2NtZHMgPSBHRU44X0xFR0FDWV9QRFBF UyAqIDI7Ci0JaW50IGksIHJldDsKKwl1MzIgKm91dDsKKwlpbnQgaTsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCBudW1fbHJpX2NtZHMgKiAyICsgMik7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgbnVtX2xyaV9jbWRzICogMiAr IDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpKTsKKwkq b3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpOwogCWZvciAoaSA9IEdF TjhfTEVHQUNZX1BEUEVTIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJY29uc3QgZG1hX2FkZHJfdCBw ZF9kYWRkciA9IGk5MTVfcGFnZV9kaXJfZG1hX2FkZHIocHBndHQsIGkpOwogCi0JCWludGVsX3Jp bmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBpKSk7Ci0JCWludGVs X3JpbmdfZW1pdChyaW5nLCB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKSk7Ci0JCWludGVsX3Jpbmdf ZW1pdF9yZWcocmluZywgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCBpKSk7Ci0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKSk7CisJCSpvdXQrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkpOworCQkqb3V0Kysg PSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZz ZXQoR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCBpKSk7CisJCSpvdXQrKyA9IGxvd2VyXzMyX2Jp dHMocGRfZGFkZHIpOwogCX0KIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlp bnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5n X2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDQ5LDggKzE0NTIsOCBA QCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkgICAgICB1bnNpZ25l ZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEt PnJpbmc7CiAJYm9vbCBwcGd0dCA9ICEoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NF Q1VSRSk7CisJdTMyICpvdXQ7CiAJaW50IHJldDsKIAogCS8qIERvbid0IHJlbHkgaW4gaHcgdXBk YXRpbmcgUERQcywgc3BlY2lhbGx5IGluIGxpdGUtcmVzdG9yZS4KQEAgLTE0NzEsMTkgKzE0NzQs MTggQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAJCXJlcS0+Y3R4LT5wcGd0dC0+cGRfZGlydHlfcmluZ3MgJj0gfmludGVs X2VuZ2luZV9mbGFnKHJlcS0+ZW5naW5lKTsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwog CiAJLyogRklYTUUoQkRXKTogQWRkcmVzcyBzcGFjZSBhbmQgc2VjdXJpdHkgc2VsZWN0b3JzLiAq LwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOCB8Ci0J CQkocHBndHQ8PDgpIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwot CQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBl cl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlp bnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJU X0dFTjggfCAocHBndHQ8PDgpIHwKKwkJIChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hf UlMgPworCQkgTUlfQkFUQ0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKTsKKwkqb3V0KysgPSBsb3dl cl8zMl9iaXRzKG9mZnNldCk7CisJKm91dCsrID0gdXBwZXJfMzJfYml0cyhvZmZzZXQpOworCSpv dXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVy biAwOwogfQpAQCAtMTUwNCwxMyArMTUwNiwxMSBAQCBzdGF0aWMgdm9pZCBnZW44X2xvZ2ljYWxf cmluZ19kaXNhYmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRp YyBpbnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5n OwotCXUzMiBjbWQ7Ci0JaW50IHJldDsKKwl1MzIgY21kLCAqb3V0OwogCi0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXF1ZXN0LCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1 cm4gUFRSX0VSUihvdXQpOwogCiAJY21kID0gTUlfRkxVU0hfRFcgKyAxOwogCkBAIC0xNTI3LDEz ICsxNTI3LDExIEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCwgdTMyIG1vZGUpCiAJCQljbWQgfD0gTUlfSU5WQUxJREFURV9C U0Q7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsCi0JCQlJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwKLQkJCU1JX0ZMVVNIX0RXX1VT RV9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUgKi8KLQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJKm91dCsrID0gY21kOworCSpvdXQrKyA9IEk5MTVfR0VNX0hXU19TQ1JBVENIX0FE RFIgfCBNSV9GTFVTSF9EV19VU0VfR1RUOworCSpvdXQrKyA9IDA7IC8qIHVwcGVyIGFkZHIgKi8K Kwkqb3V0KysgPSAwOyAvKiB2YWx1ZSAqLworCWludGVsX3JpbmdfYWR2YW5jZShyZXF1ZXN0LCBv dXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNTQxLDEzICsxNTM5LDExIEBAIHN0YXRpYyBpbnQg Z2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgdTMy IG1vZGUpCiBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCQkJCSAgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAl1MzIgc2NyYXRjaF9hZGRyID0KIAkJaTkxNV9nZ3R0 X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElORV9CWVRFUzsKIAlib29sIHZm X2ZsdXNoX3dhID0gZmFsc2UsIGRjX2ZsdXNoX3dhID0gZmFsc2U7Ci0JdTMyIGZsYWdzID0gMDsK LQlpbnQgcmV0OworCXUzMiAqb3V0LCBmbGFncyA9IDA7CiAJaW50IGxlbjsKIAogCWZsYWdzIHw9 IFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKQEAgLTE1ODksNDUgKzE1ODUsNDUgQEAgc3RhdGljIGlu dCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCwKIAlpZiAoZGNfZmx1c2hfd2EpCiAJCWxlbiArPSAxMjsKIAotCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxdWVzdCwgbGVuKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgbGVuKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJl dHVybiBQVFJfRVJSKG91dCk7CiAKIAlpZiAodmZfZmx1c2hfd2EpIHsKLQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCAwKTsKKwkJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkJKm91dCsrID0g MDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsr ID0gMDsKIAl9CiAKIAlpZiAoZGNfZmx1c2hfd2EpIHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgUElQRV9D T05UUk9MX0RDX0ZMVVNIX0VOQUJMRSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJP TCg2KTsKKwkJKm91dCsrID0gUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJMRTsKKwkJKm91dCsr ID0gMDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gMDsKIAl9CiAK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIGZsYWdzKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9h ZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkqb3V0KysgPSBHRlhfT1BfUElQRV9D T05UUk9MKDYpOworCSpvdXQrKyA9IGZsYWdzOworCSpvdXQrKyA9IHNjcmF0Y2hfYWRkcjsKKwkq b3V0KysgPSAwOworCSpvdXQrKyA9IDA7CisJKm91dCsrID0gMDsKIAogCWlmIChkY19mbHVzaF93 YSkgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCBQSVBFX0NPTlRST0xfQ1NfU1RBTEwpOwotCQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCSpvdXQr KyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJCSpvdXQrKyA9IFBJUEVfQ09OVFJPTF9DU19T VEFMTDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gMDsKKwkJKm91 dCsrID0gMDsKIAl9CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50ZWxfcmluZ19h ZHZhbmNlKHJlcXVlc3QsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE2NDEsNyArMTYzNyw3 IEBAIHN0YXRpYyB2b2lkIGdlbjhfZW1pdF93YV90YWlsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwgdTMyICpvdXQpCiB7CiAJKm91dCsrID0gTUlfTk9PUDsKIAkqb3V0Kysg PSBNSV9OT09QOwotCXJlcXVlc3QtPndhX3RhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXF1ZXN0 LT5yaW5nLCBvdXQpOworCXJlcXVlc3QtPndhX3RhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXF1 ZXN0LCBvdXQpOwogfQogCiBzdGF0aWMgdm9pZCBnZW44X2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCkBAIC0xNjU2LDcgKzE2NTIsNyBAQCBzdGF0 aWMgdm9pZCBnZW44X2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsCiAJKm91dCsrID0gcmVxdWVzdC0+Z2xvYmFsX3NlcW5vOwogCSpvdXQrKyA9IE1J X1VTRVJfSU5URVJSVVBUOwogCSpvdXQrKyA9IE1JX05PT1A7Ci0JcmVxdWVzdC0+dGFpbCA9IGlu dGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91dCk7CisJcmVxdWVzdC0+dGFpbCA9IGlu dGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QsIG91dCk7CiAKIAlnZW44X2VtaXRfd2FfdGFpbChyZXF1 ZXN0LCBvdXQpOwogfQpAQCAtMTY4NCw3ICsxNjgwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9lbWl0 X2JyZWFkY3J1bWJfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwK IAkqb3V0KysgPSAwOwogCSpvdXQrKyA9IE1JX1VTRVJfSU5URVJSVVBUOwogCSpvdXQrKyA9IE1J X05PT1A7Ci0JcmVxdWVzdC0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcs IG91dCk7CisJcmVxdWVzdC0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QsIG91dCk7 CiAKIAlnZW44X2VtaXRfd2FfdGFpbChyZXF1ZXN0LCBvdXQpOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbW9jcy5jCmluZGV4IDc3M2UzNjI1M2U3Yy4uYTdhMjhjNDk2ODkwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbW9jcy5jCkBAIC0yNzYsMjMgKzI3NiwyMiBAQCBpbnQgaW50ZWxfbW9jc19pbml0 X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50IGVtaXRf bW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJ CSAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBlbmdp bmUgPSByZXEtPmVuZ2luZS0+aWQ7CiAJdW5zaWduZWQgaW50IGluZGV4OwotCWludCByZXQ7CisJ dTMyICpvdXQ7CiAKIAlpZiAoV0FSTl9PTih0YWJsZS0+c2l6ZSA+IEdFTjlfTlVNX01PQ1NfRU5U UklFUykpCiAJCXJldHVybiAtRU5PREVWOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDIgKyAyICogR0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0 OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyICsgMiAqIEdFTjlfTlVNX01PQ1NfRU5U UklFUyk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5U UklFUykpOworCSpvdXQrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5U UklFUyk7CiAKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgrKykg ewotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRl eCkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdGFibGUtPnRhYmxlW2luZGV4XS5jb250cm9s X3ZhbHVlKTsKKwkJKm91dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQobW9jc19yZWdpc3Rlcihl bmdpbmUsIGluZGV4KSk7CisJCSpvdXQrKyA9IHRhYmxlLT50YWJsZVtpbmRleF0uY29udHJvbF92 YWx1ZTsKIAl9CiAKIAkvKgpAQCAtMzA0LDEyICszMDMsMTIgQEAgc3RhdGljIGludCBlbWl0X21v Y3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiB0 aGF0IHZhbHVlIHRvIGFsbCB0aGUgdXNlZCBlbnRyaWVzLgogCSAqLwogCWZvciAoOyBpbmRleCA8 IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsgaW5kZXgrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmcsIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkpOwotCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgdGFibGUtPnRhYmxlWzBdLmNvbnRyb2xfdmFsdWUpOworCQkqb3V0KysgPSBpOTE1X21t aW9fcmVnX29mZnNldChtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKKwkJKm91dCsrID0g dGFibGUtPnRhYmxlWzBdLmNvbnRyb2xfdmFsdWU7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9O T09QOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTMzNiwyOSArMzM1LDI3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGwzY2NfY29tYmluZShjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAqdGFibGUsCiBzdGF0aWMgaW50IGVtaXRfbW9jc19s M2NjX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCWNvbnN0IHN0 cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAq cmluZyA9IHJlcS0+cmluZzsKIAl1bnNpZ25lZCBpbnQgaTsKLQlpbnQgcmV0OworCXUzMiAqb3V0 OwogCiAJaWYgKFdBUk5fT04odGFibGUtPnNpemUgPiBHRU45X05VTV9NT0NTX0VOVFJJRVMpKQog CQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyICsgR0VO OV9OVU1fTU9DU19FTlRSSUVTKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCAyICsgR0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKKwlpZiAoSVNf RVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywKLQkJCU1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDIpKTsK Kwkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAy KTsKIAogCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+c2l6ZS8yOyBpKyspIHsKLQkJaW50ZWxfcmlu Z19lbWl0X3JlZyhyaW5nLCBHRU45X0xOQ0ZDTU9DUyhpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCBsM2NjX2NvbWJpbmUodGFibGUsIDIqaSwgMippKzEpKTsKKwkJKm91dCsrID0gaTkxNV9t bWlvX3JlZ19vZmZzZXQoR0VOOV9MTkNGQ01PQ1MoaSkpOworCQkqb3V0KysgPSBsM2NjX2NvbWJp bmUodGFibGUsIDIgKiBpLCAyICogaSArIDEpOwogCX0KIAogCWlmICh0YWJsZS0+c2l6ZSAmIDB4 MDEpIHsKIAkJLyogT2RkIHRhYmxlIHNpemUgLSAxIGxlZnQgb3ZlciAqLwotCQlpbnRlbF9yaW5n X2VtaXRfcmVnKHJpbmcsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIGwzY2NfY29tYmluZSh0YWJsZSwgMippLCAwKSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KEdFTjlfTE5DRkNNT0NTKGkpKTsKKwkJKm91dCsrID0gbDNjY19jb21iaW5lKHRh YmxlLCAyICogaSwgMCk7CiAJCWkrKzsKIAl9CiAKQEAgLTM2OCwxMiArMzY1LDEyIEBAIHN0YXRp YyBpbnQgZW1pdF9tb2NzX2wzY2NfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCiAJICogdGhleSBhcmUgcmVzZXJ2ZWQgYnkgdGhlIGhhcmR3YXJlLgogCSAqLwogCWZvciAo OyBpIDwgR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMjsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1p dF9yZWcocmluZywgR0VOOV9MTkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg bDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKSk7CisJCSpvdXQrKyA9IGk5MTVfbW1pb19yZWdfb2Zm c2V0KEdFTjlfTE5DRkNNT0NTKGkpKTsKKwkJKm91dCsrID0gbDNjY19jb21iaW5lKHRhYmxlLCAw LCAwKTsKIAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNl KHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jCmluZGV4IDA2MDhmYWQ3ZjU5My4uZjYxMmEwMmRkZmJlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfb3ZlcmxheS5jCkBAIC0yNjcsOCArMjY3LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVy bGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXE7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Ci0JaW50IHJldDsKKwl1 MzIgKm91dDsKIAogCVdBUk5fT04ob3ZlcmxheS0+YWN0aXZlKTsKIAlXQVJOX09OKElTX0k4MzAo ZGV2X3ByaXYpICYmICEoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJUEVBX0ZPUkNFKSk7CkBA IC0yNzcsMTAgKzI3NiwxMCBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGlu dGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJaWYgKElTX0VSUihyZXEpKQogCQlyZXR1cm4gUFRSX0VS UihyZXEpOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpIHsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKSB7CiAJ CWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKLQkJcmV0dXJuIHJldDsKKwkJcmV0dXJu IFBUUl9FUlIob3V0KTsKIAl9CiAKIAlvdmVybGF5LT5hY3RpdmUgPSB0cnVlOwpAQCAtMjg4LDEy ICsyODcsMTEgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5KQogCWlmIChJU19JODMwKGRldl9wcml2KSkKIAkJaTgzMF9vdmVybGF5X2Ns b2NrX2dhdGluZyhkZXZfcHJpdiwgZmFsc2UpOwogCi0JcmluZyA9IHJlcS0+cmluZzsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PTik7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIG92ZXJsYXktPmZsaXBfYWRkciB8IE9GQ19VUERBVEUpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJM QVlfRkxJUCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09O OworCSpvdXQrKyA9IG92ZXJsYXktPmZsaXBfYWRkciB8IE9GQ19VUERBVEU7CisJKm91dCsrID0g TUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CisJKm91dCsrID0g TUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIGludGVs X292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwgTlVMTCk7CiB9CkBAIC0zMjYs MTAgKzMyNCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1Y3QgaW50 ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBvdmVybGF5LT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwot CXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwogCXUzMiBmbGlwX2FkZHIgPSBvdmVybGF5LT5mbGlw X2FkZHI7Ci0JdTMyIHRtcDsKLQlpbnQgcmV0OworCXUzMiB0bXAsICpvdXQ7CiAKIAlXQVJOX09O KCFvdmVybGF5LT5hY3RpdmUpOwogCkBAIC0zNDUsMTYgKzM0MSwxNSBAQCBzdGF0aWMgaW50IGlu dGVsX292ZXJsYXlfY29udGludWUoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCiAJaWYg KElTX0VSUihyZXEpKQogCQlyZXR1cm4gUFRSX0VSUihyZXEpOwogCi0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpIHsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgMik7CisJaWYgKElTX0VSUihvdXQpKSB7CiAJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2go cmVxKTsKLQkJcmV0dXJuIHJldDsKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAl9CiAKLQlyaW5n ID0gcmVxLT5yaW5nOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBN SV9PVkVSTEFZX0NPTlRJTlVFKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxpcF9hZGRyKTsK LQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gTUlfT1ZFUkxBWV9GTElQIHwg TUlfT1ZFUkxBWV9DT05USU5VRTsKKwkqb3V0KysgPSBmbGlwX2FkZHI7CisJaW50ZWxfcmluZ19h ZHZhbmNlKHJlcSwgb3V0KTsKIAogCWludGVsX292ZXJsYXlfZmxpcF9wcmVwYXJlKG92ZXJsYXks IHZtYSk7CiAKQEAgLTQwOCw5ICs0MDMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9vdmVybGF5X29m Zl90YWlsKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKIHN0YXRpYyBpbnQgaW50ZWxf b3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Ci0JdTMy IGZsaXBfYWRkciA9IG92ZXJsYXktPmZsaXBfYWRkcjsKLQlpbnQgcmV0OworCXUzMiAqb3V0LCBm bGlwX2FkZHIgPSBvdmVybGF5LT5mbGlwX2FkZHI7CiAKIAlXQVJOX09OKCFvdmVybGF5LT5hY3Rp dmUpOwogCkBAIC00MjQsMjUgKzQxNywyMyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb2Zm KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQogCWlmIChJU19FUlIocmVxKSkKIAkJcmV0 dXJuIFBUUl9FUlIocmVxKTsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlp ZiAocmV0KSB7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIo b3V0KSkgewogCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Ci0JCXJldHVybiByZXQ7 CisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAJfQogCi0JcmluZyA9IHJlcS0+cmluZzsKLQogCS8q IHdhaXQgZm9yIG92ZXJsYXkgdG8gZ28gaWRsZSAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgZmxpcF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZF TlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOworCSpvdXQrKyA9IE1JX09WRVJMQVlfRkxJ UCB8IE1JX09WRVJMQVlfQ09OVElOVUU7CisJKm91dCsrID0gZmxpcF9hZGRyOworCSpvdXQrKyA9 IE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQOwogCiAJLyogdHVy biBvdmVybGF5IG9mZiAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9PVkVSTEFZX0ZMSVAg fCBNSV9PVkVSTEFZX09GRik7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZF UkxBWV9GTElQKTsKKwkqb3V0KysgPSBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09GRjsK Kwkqb3V0KysgPSBmbGlwX2FkZHI7CisJKm91dCsrID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9X QUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJaW50 ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCWludGVsX292ZXJsYXlfZmxpcF9wcmVwYXJl KG92ZXJsYXksIE5VTEwpOwogCkBAIC00NjUsNiArNDU2LDcgQEAgc3RhdGljIGludCBpbnRlbF9v dmVybGF5X3JlY292ZXJfZnJvbV9pbnRlcnJ1cHQoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJs YXkpCiBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRl bF9vdmVybGF5ICpvdmVybGF5KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG92ZXJsYXktPmk5MTU7CisJdTMyICpvdXQ7CiAJaW50IHJldDsKIAogCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKQEAgLTQ3OCwyMyArNDcwLDIw IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVs X292ZXJsYXkgKm92ZXJsYXkpCiAJaWYgKEk5MTVfUkVBRChJU1IpICYgSTkxNV9PVkVSTEFZX1BM QU5FX0ZMSVBfUEVORElOR19JTlRFUlJVUFQpIHsKIAkJLyogc3luY2hyb25vdXMgc2xvd3BhdGgg Ki8KIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Ci0JCXN0cnVjdCBpbnRlbF9y aW5nICpyaW5nOwogCiAJCXJlcSA9IGFsbG9jX3JlcXVlc3Qob3ZlcmxheSk7CiAJCWlmIChJU19F UlIocmVxKSkKIAkJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKLQkJcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDIpOwotCQlpZiAocmV0KSB7CisJCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCAyKTsKKwkJaWYgKElTX0VSUihvdXQpKSB7CiAJCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNo KHJlcSk7Ci0JCQlyZXR1cm4gcmV0OworCQkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAkJfQogCi0J CXJpbmcgPSByZXEtPnJpbmc7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCU1JX1dBSVRf Rk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKLQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJCSpvdXQrKyA9 IE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQOworCQkqb3V0Kysg PSBNSV9OT09QOworCQlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJCXJldCA9IGlu dGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwKIAkJCQkJCSAgICBpbnRl bF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZF90YWlsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwppbmRleCBkM2QxZTY0ZjI0OTguLmYzNmQwM2Y3ZmY2ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtNjEsMjIgKzYxLDIwIEBAIHZvaWQg aW50ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCiBzdGF0aWMg aW50CiBnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsK LQl1MzIgY21kOwotCWludCByZXQ7CisJdTMyIGNtZCwgKm91dDsKIAogCWNtZCA9IE1JX0ZMVVNI OwogCiAJaWYgKG1vZGUgJiBFTUlUX0lOVkFMSURBVEUpCiAJCWNtZCB8PSBNSV9SRUFEX0ZMVVNI OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCWlmIChJU19FUlIob3V0 KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJKm91dCsrID0gY21kOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19h ZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtODQsOSArODIsNyBAQCBnZW4y X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIg bW9kZSkKIHN0YXRpYyBpbnQKIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxLT5yaW5nOwotCXUzMiBjbWQ7Ci0JaW50IHJldDsKKwl1MzIgY21kLCAqb3V0OwogCiAJ LyoKIAkgKiByZWFkL3dyaXRlIGNhY2hlczoKQEAgLTEyMywxMyArMTE5LDEzIEBAIGdlbjRfcmVu ZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2Rl KQogCQkJY21kIHw9IE1JX0lOVkFMSURBVEVfSVNQOwogCX0KIAotCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91 dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IGNtZDsK Kwkqb3V0KysgPSBNSV9OT09QOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTE3NCwzNSArMTcwLDMzIEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2go c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogc3RhdGljIGludAog aW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1 MzIgc2NyYXRjaF9hZGRyID0KIAkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRj aCkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlv dXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1 cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NP TlRST0woNSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBQSVBFX0NPTlRST0xfQ1NfU1RBTEwg fAotCQkJUElQRV9DT05UUk9MX1NUQUxMX0FUX1NDT1JFQk9BUkQpOwotCWludGVsX3JpbmdfZW1p dChyaW5nLCBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOyAvKiBsb3cgZHdvcmQgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgMCk7IC8qIGhpZ2ggZHdvcmQgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRS T0woNSk7CisJKm91dCsrID0gUElQRV9DT05UUk9MX0NTX1NUQUxMIHwgUElQRV9DT05UUk9MX1NU QUxMX0FUX1NDT1JFQk9BUkQ7CisJKm91dCsrID0gc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9M X0dMT0JBTF9HVFQ7CisJKm91dCsrID0gMDsgLyogbG93IGR3b3JkICovCisJKm91dCsrID0gMDsg LyogaGlnaCBkd29yZCAqLworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNl KHJlcSwgb3V0KTsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAocmV0 KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlpZiAo SVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg1KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBJ UEVfQ09OVFJPTF9RV19XUklURSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRk ciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gR0ZYX09QX1BJUEVf Q09OVFJPTCg1KTsKKwkqb3V0KysgPSBQSVBFX0NPTlRST0xfUVdfV1JJVEU7CisJKm91dCsrID0g c2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7CisJKm91dCsrID0gMDsKKwkq b3V0KysgPSAwOworCSpvdXQrKyA9IE1JX05PT1A7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwg b3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjEwLDEwICsyMDQsOSBAQCBpbnRlbF9lbWl0X3Bv c3Rfc3luY19ub256ZXJvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQog c3RhdGljIGludAogZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEt PnJpbmc7CiAJdTMyIHNjcmF0Y2hfYWRkciA9CiAJCWk5MTVfZ2d0dF9vZmZzZXQocmVxLT5lbmdp bmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElORV9CWVRFUzsKLQl1MzIgZmxhZ3MgPSAwOworCXUz MiAqb3V0LCBmbGFncyA9IDA7CiAJaW50IHJldDsKIAogCS8qIEZvcmNlIFNOQiB3b3JrYXJvdW5k cyBmb3IgUElQRV9DT05UUk9MIGZsdXNoZXMgKi8KQEAgLTI0NywxNSArMjQwLDE1IEBAIGdlbjZf cmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBt b2RlKQogCQlmbGFncyB8PSBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfCBQSVBFX0NPTlRST0xfQ1Nf U1RBTEw7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJ U19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChy aW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxh Z3MpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xf R0xPQkFMX0dUVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfYWR2 YW5jZShyaW5nKTsKKwkqb3V0KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDQpOworCSpvdXQrKyA9 IGZsYWdzOworCSpvdXQrKyA9IHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RU OworCSpvdXQrKyA9IDA7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVy biAwOwogfQpAQCAtMjYzLDIwICsyNTYsMTcgQEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiBzdGF0aWMgaW50CiBnZW43 X3JlbmRlcl9yaW5nX2NzX3N0YWxsX3dhKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJ dTMyICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkK LQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElT X0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJ UElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCVBJUEVfQ09OVFJPTF9TVEFMTF9BVF9TQ09SRUJP QVJEKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IDApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBHRlhfT1BfUElQRV9D T05UUk9MKDQpOworCSpvdXQrKyA9IFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8IFBJUEVfQ09OVFJP TF9TVEFMTF9BVF9TQ09SRUJPQVJEOworCSpvdXQrKyA9IDA7CisJKm91dCsrID0gMDsKKwlpbnRl bF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yODQsMTEgKzI3 NCw5IEBAIGdlbjdfcmVuZGVyX3JpbmdfY3Nfc3RhbGxfd2Eoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCiBzdGF0aWMgaW50CiBnZW43X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1MzIgc2NyYXRjaF9hZGRyID0KIAkJaTkxNV9nZ3R0X29m ZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwotCXUzMiBm bGFncyA9IDA7Ci0JaW50IHJldDsKKwl1MzIgKm91dCwgZmxhZ3MgPSAwOwogCiAJLyoKIAkgKiBF bnN1cmUgdGhhdCBhbnkgZm9sbG93aW5nIHNlcW5vIHdyaXRlcyBvbmx5IGhhcHBlbiB3aGVuIHRo ZSByZW5kZXIKQEAgLTMzMiwxNSArMzIwLDE1IEBAIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogCQlnZW43X3JlbmRlcl9y aW5nX2NzX3N0YWxsX3dhKHJlcSk7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDQpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgZmxhZ3MpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg0KTsKKwkqb3V0KysgPSBmbGFnczsKKwkq b3V0KysgPSBzY3JhdGNoX2FkZHI7CisJKm91dCsrID0gMDsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmVxLCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNDksMjAgKzMzNywxOSBAQCBzdGF0aWMg aW50CiBnZW44X2VtaXRfcGlwZV9jb250cm9sKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCQkgICAgICAgdTMyIGZsYWdzLCB1MzIgc2NyYXRjaF9hZGRyKQogewotCXN0cnVjdCBp bnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJdTMyICpvdXQ7CiAKLQly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJaWYgKElTX0VSUihvdXQpKQorCQly ZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBF X0NPTlRST0woNikpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFncyk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0wo Nik7CisJKm91dCsrID0gZmxhZ3M7CisJKm91dCsrID0gc2NyYXRjaF9hZGRyOworCSpvdXQrKyA9 IDA7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSAwOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEs IG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTY1OSw4ICs2NDYsOCBAQCBzdGF0aWMgdm9pZCBy ZXNldF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIHN0YXRp YyBpbnQgaW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0 cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+aTkxNS0+d29ya2Fyb3VuZHM7CisJdTMy ICpvdXQ7CiAJaW50IHJldCwgaTsKIAogCWlmICh3LT5jb3VudCA9PSAwKQpAQCAtNjcwLDE4ICs2 NTcsMTggQEAgc3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAody0+Y291bnQgKiAyICsgMikpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsICh3LT5jb3VudCAq IDIgKyAyKSk7CisJaWYgKElTX0VSUihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKHctPmNvdW50KSk7CisJ Km91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpOwogCWZvciAoaSA9IDA7IGkg PCB3LT5jb3VudDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgdy0+cmVnW2ld LmFkZHIpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdy0+cmVnW2ldLnZhbHVlKTsKKwkJKm91 dCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQody0+cmVnW2ldLmFkZHIpOworCQkqb3V0KysgPSB3 LT5yZWdbaV0udmFsdWU7CiAJfQotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkq b3V0KysgPSBNSV9OT09QOwogCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3Jp bmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXQgPSByZXEtPmVuZ2luZS0+ZW1pdF9mbHVzaChy ZXEsIEVNSVRfQkFSUklFUik7CiAJaWYgKHJldCkKQEAgLTEzNzAsNyArMTM1Nyw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCSpvdXQrKyA9IHJlcS0+Z2xvYmFsX3NlcW5vOwogCSpvdXQrKyA9IE1JX1VTRVJfSU5U RVJSVVBUOwogCi0JcmVxLT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxLT5yaW5nLCBvdXQp OworCXJlcS0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcSwgb3V0KTsKIH0KIAogc3RhdGlj IGNvbnN0IGludCBpOXh4X2VtaXRfYnJlYWRjcnVtYl9zeiA9IDQ7CkBAIC0xNDEwLDcgKzEzOTcs NyBAQCBzdGF0aWMgdm9pZCBnZW44X3JlbmRlcl9lbWl0X2JyZWFkY3J1bWIoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJKm91dCsrID0gTUlfVVNFUl9JTlRFUlJVUFQ7CiAJKm91 dCsrID0gTUlfTk9PUDsKIAotCXJlcS0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcS0+cmlu Zywgb3V0KTsKKwlyZXEtPnRhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXEsIG91dCk7CiB9CiAK IHN0YXRpYyBjb25zdCBpbnQgZ2VuOF9yZW5kZXJfZW1pdF9icmVhZGNydW1iX3N6ID0gODsKQEAg LTE0MjcsMjQgKzE0MTQsMjEgQEAgc3RhdGljIGludAogZ2VuOF9yaW5nX3N5bmNfdG8oc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpzaWduYWwpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1OwogCXU2NCBvZmZz ZXQgPSBHRU44X1dBSVRfT0ZGU0VUKHJlcS0+ZW5naW5lLCBzaWduYWwtPmVuZ2luZS0+aWQpOwog CXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKLQlpbnQgcmV0OworCXUzMiAqb3V0OwogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIob3V0KSkKKwkJ cmV0dXJuIFBUUl9FUlIob3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfU0VN QVBIT1JFX1dBSVQgfAotCQkJTUlfU0VNQVBIT1JFX0dMT0JBTF9HVFQgfAotCQkJTUlfU0VNQVBI T1JFX1NBRF9HVEVfU0REKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2lnbmFsLT5nbG9iYWxf c2Vxbm8pOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9TRU1BUEhPUkVfV0FJVCB8IE1JX1NFTUFQ SE9SRV9HTE9CQUxfR1RUIHwKKwkJIE1JX1NFTUFQSE9SRV9TQURfR1RFX1NERDsKKwkqb3V0Kysg PSBzaWduYWwtPmdsb2JhbF9zZXFubzsKKwkqb3V0KysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7 CisJKm91dCsrID0gdXBwZXJfMzJfYml0cyhvZmZzZXQpOworCWludGVsX3JpbmdfYWR2YW5jZShy ZXEsIG91dCk7CiAKIAkvKiBXaGVuIHRoZSAhUkNTIGVuZ2luZXMgaWRsZSB3YWl0aW5nIHVwb24g YSBzZW1hcGhvcmUsIHRoZXkgbG9zZSB0aGVpcgogCSAqIHBhZ2V0YWJsZXMgYW5kIHdlIG11c3Qg cmVsb2FkIHRoZW0gYmVmb3JlIGV4ZWN1dGluZyB0aGUgYmF0Y2guCkBAIC0xNDYxLDI4ICsxNDQ1 LDI3IEBAIHN0YXRpYyBpbnQKIGdlbjZfcmluZ19zeW5jX3RvKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAogCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBkdzEgPSBNSV9T RU1BUEhPUkVfTUJPWCB8CiAJCSAgTUlfU0VNQVBIT1JFX0NPTVBBUkUgfAogCQkgIE1JX1NFTUFQ SE9SRV9SRUdJU1RFUjsKIAl1MzIgd2FpdF9tYm94ID0gc2lnbmFsLT5lbmdpbmUtPnNlbWFwaG9y ZS5tYm94LndhaXRbcmVxLT5lbmdpbmUtPmh3X2lkXTsKLQlpbnQgcmV0OworCXUzMiAqb3V0Owog CiAJV0FSTl9PTih3YWl0X21ib3ggPT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCk7CiAKLQly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJaWYgKElTX0VSUihvdXQpKQorCQly ZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGR3MSB8IHdhaXRf bWJveCk7CisJKm91dCsrID0gZHcxIHwgd2FpdF9tYm94OwogCS8qIFRocm91Z2hvdXQgYWxsIG9m IHRoZSBHRU0gY29kZSwgc2Vxbm8gcGFzc2VkIGltcGxpZXMgb3VyIGN1cnJlbnQKIAkgKiBzZXFu byBpcyA+PSB0aGUgbGFzdCBzZXFubyBleGVjdXRlZC4gSG93ZXZlciBmb3IgaGFyZHdhcmUgdGhl CiAJICogY29tcGFyaXNvbiBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4uCiAJICovCi0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIHNpZ25hbC0+Z2xvYmFsX3NlcW5vIC0gMSk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gc2lnbmFsLT5nbG9iYWxfc2Vxbm8gLSAxOwor CSpvdXQrKyA9IDA7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVx LCBvdXQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNTgzLDE2ICsxNTY2LDE1IEBAIGk4eHhfaXJx X2Rpc2FibGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogc3RhdGljIGludAogYnNk X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwotCWludCByZXQ7CisJdTMy ICpvdXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Ci0JaWYgKHJldCkKLQkJ cmV0dXJuIHJldDsKKwlvdXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJaWYgKElTX0VS UihvdXQpKQorCQlyZXR1cm4gUFRSX0VSUihvdXQpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX0ZMVVNIKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOworCSpvdXQrKyA9IE1JX0ZMVVNIOworCSpvdXQrKyA9IE1JX05PT1A7 CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTY1 OCwyMCArMTY0MCwxNyBAQCBpOTY1X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZzZXQsIHUzMiBsZW5ndGgsCiAJCSAgIHVuc2lnbmVk IGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+ cmluZzsKLQlpbnQgcmV0OworCXUzMiAqb3V0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDIpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDIpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAot CWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwKLQkJCU1J X0JBVENIX0dUVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/ Ci0JCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSkpOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9C QVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQgfAorCQkgKGRpc3BhdGNoX2ZsYWdzICYg STkxNV9ESVNQQVRDSF9TRUNVUkUgPworCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSk7 CisJKm91dCsrID0gb2Zmc2V0OworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTE2ODUsNTkgKzE2NjQsNTYgQEAgaTgzMF9lbWl0X2JiX3N0YXJ0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1NjQgb2Zmc2V0LCB1MzIgbGVu LAogCQkgICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JdTMyIGNzX29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQo cmVxLT5lbmdpbmUtPnNjcmF0Y2gpOwotCWludCByZXQ7CisJdTMyICpvdXQsIGNzX29mZnNldCA9 IGk5MTVfZ2d0dF9vZmZzZXQocmVxLT5lbmdpbmUtPnNjcmF0Y2gpOwogCi0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBUUl9F UlIob3V0KTsKIAogCS8qIEV2aWN0IHRoZSBpbnZhbGlkIFBURSBUTEJzICovCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIENPTE9SX0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdCQSk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEJMVF9ERVBUSF8zMiB8IEJMVF9ST1BfQ09MT1JfQ09QWSB8IDQwOTYpOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCBJODMwX1RMQl9FTlRSSUVTIDw8IDE2IHwgNCk7IC8qIGxv YWQgZWFjaCBwYWdlICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNzX29mZnNldCk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDB4ZGVhZGJlZWYpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gQ09MT1JfQkxU X0NNRCB8IEJMVF9XUklURV9SR0JBOworCSpvdXQrKyA9IEJMVF9ERVBUSF8zMiB8IEJMVF9ST1Bf Q09MT1JfQ09QWSB8IDQwOTY7CisJKm91dCsrID0gSTgzMF9UTEJfRU5UUklFUyA8PCAxNiB8IDQ7 IC8qIGxvYWQgZWFjaCBwYWdlICovCisJKm91dCsrID0gY3Nfb2Zmc2V0OworCSpvdXQrKyA9IDB4 ZGVhZGJlZWY7CisJKm91dCsrID0gTUlfTk9PUDsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBv dXQpOwogCiAJaWYgKChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUElOTkVEKSA9PSAw KSB7CiAJCWlmIChsZW4gPiBJODMwX0JBVENIX0xJTUlUKQogCQkJcmV0dXJuIC1FTk9TUEM7CiAK LQkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYgKyAyKTsKLQkJaWYgKHJldCkKLQkJCXJl dHVybiByZXQ7CisJCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2ICsgMik7CisJCWlmIChJ U19FUlIob3V0KSkKKwkJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKIAkJLyogQmxpdCB0aGUgYmF0 Y2ggKHdoaWNoIGhhcyBub3cgYWxsIHJlbG9jcyBhcHBsaWVkKSB0byB0aGUKIAkJICogc3RhYmxl IGJhdGNoIHNjcmF0Y2ggYm8gYXJlYSAoc28gdGhhdCB0aGUgQ1MgbmV2ZXIKIAkJICogc3R1bWJs ZXMgb3ZlciBpdHMgdGxiIGludmFsaWRhdGlvbiBidWcpIC4uLgogCQkgKi8KLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIFNSQ19DT1BZX0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdCQSk7Ci0JCWludGVs X3JpbmdfZW1pdChyaW5nLAotCQkJCUJMVF9ERVBUSF8zMiB8IEJMVF9ST1BfU1JDX0NPUFkgfCA0 MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIERJVl9ST1VORF9VUChsZW4sIDQwOTYpIDw8 IDE2IHwgNDA5Nik7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBjc19vZmZzZXQpOwotCQlpbnRl bF9yaW5nX2VtaXQocmluZywgNDA5Nik7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQp OwotCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9GTFVTSCk7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCQkqb3V0Kysg PSBTUkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkE7CisJCSpvdXQrKyA9IEJMVF9ERVBU SF8zMiB8IEJMVF9ST1BfU1JDX0NPUFkgfCA0MDk2OworCQkqb3V0KysgPSBESVZfUk9VTkRfVVAo bGVuLCA0MDk2KSA8PCAxNiB8IDQwOTY7CisJCSpvdXQrKyA9IGNzX29mZnNldDsKKwkJKm91dCsr ID0gNDA5NjsKKwkJKm91dCsrID0gb2Zmc2V0OworCisJCSpvdXQrKyA9IE1JX0ZMVVNIOworCQkq b3V0KysgPSBNSV9OT09QOworCQlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJCS8q IC4uLiBhbmQgZXhlY3V0ZSBpdC4gKi8KIAkJb2Zmc2V0ID0gY3Nfb2Zmc2V0OwogCX0KIAotCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owor CW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJl dHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVG RkVSX1NUQVJUIHwgTUlfQkFUQ0hfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0 IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPwotCQkJCQkwIDogTUlf QkFUQ0hfTk9OX1NFQ1VSRSkpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0Kysg PSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQ7CisJKm91dCsrID0gb2Zmc2V0 IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPworCQkgMCA6IE1JX0JB VENIX05PTl9TRUNVUkUpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1 cm4gMDsKIH0KQEAgLTE3NDcsMTcgKzE3MjMsMTYgQEAgaTkxNV9lbWl0X2JiX3N0YXJ0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAog CQkgICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJf RVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVSX1NUQVJU IHwgTUlfQkFUQ0hfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0IHwgKGRpc3Bh dGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPwotCQkJCQkwIDogTUlfQkFUQ0hfTk9O X1NFQ1VSRSkpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBNSV9CQVRD SF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQ7CisJKm91dCsrID0gb2Zmc2V0IHwgKGRpc3Bh dGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPworCQkgMCA6IE1JX0JBVENIX05PTl9T RUNVUkUpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTIxNzEsNyArMjE0Niw3IEBAIHZvaWQgaW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVzdW1l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGljIGludCByaW5nX3Jl cXVlc3RfYWxsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewotCWlu dCByZXQ7CisJdTMyICpvdXQ7CiAKIAlHRU1fQlVHX09OKCFyZXF1ZXN0LT5jdHgtPmVuZ2luZVty ZXF1ZXN0LT5lbmdpbmUtPmlkXS5waW5fY291bnQpOwogCkBAIC0yMTg0LDkgKzIxNTksOSBAQCBz dGF0aWMgaW50IHJpbmdfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCiAJR0VNX0JVR19PTighcmVxdWVzdC0+ZW5naW5lLT5idWZmZXIpOwogCXJlcXVl c3QtPnJpbmcgPSByZXF1ZXN0LT5lbmdpbmUtPmJ1ZmZlcjsKIAotCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxdWVzdCwgMCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlvdXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcXVlc3QsIDApOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJuIFBU Ul9FUlIob3V0KTsKIAogCXJlcXVlc3QtPnJlc2VydmVkX3NwYWNlIC09IExFR0FDWV9SRVFVRVNU X1NJWkU7CiAJcmV0dXJuIDA7CkBAIC0yMjQxLDcgKzIyMTYsNyBAQCBzdGF0aWMgaW50IHdhaXRf Zm9yX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCiAJ cmV0dXJuIDA7CiB9CiAKLWludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykKK3UzMiAqaW50ZWxfcmluZ19iZWdpbihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMpCiB7CiAJc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJaW50IHJlbWFpbl9hY3R1YWwgPSByaW5n LT5zaXplIC0gcmluZy0+dGFpbDsKQEAgLTIyNDksNiArMjIyNCw3IEBAIGludCBpbnRlbF9yaW5n X2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykK IAlpbnQgYnl0ZXMgPSBudW1fZHdvcmRzICogc2l6ZW9mKHUzMik7CiAJaW50IHRvdGFsX2J5dGVz LCB3YWl0X2J5dGVzOwogCWJvb2wgbmVlZF93cmFwID0gZmFsc2U7CisJdTMyICpvdXQ7CiAKIAl0 b3RhbF9ieXRlcyA9IGJ5dGVzICsgcmVxLT5yZXNlcnZlZF9zcGFjZTsKIApAQCAtMjI3NSw3ICsy MjUxLDcgQEAgaW50IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsIGludCBudW1fZHdvcmRzKQogCWlmICh3YWl0X2J5dGVzID4gcmluZy0+c3BhY2UpIHsK IAkJaW50IHJldCA9IHdhaXRfZm9yX3NwYWNlKHJlcSwgd2FpdF9ieXRlcyk7CiAJCWlmICh1bmxp a2VseShyZXQpKQotCQkJcmV0dXJuIHJldDsKKwkJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQog CiAJaWYgKHVubGlrZWx5KG5lZWRfd3JhcCkpIHsKQEAgLTIyODgsMzIgKzIyNjQsMzQgQEAgaW50 IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBu dW1fZHdvcmRzKQogCQlyaW5nLT5zcGFjZSAtPSByZW1haW5fYWN0dWFsOwogCX0KIAorCUdFTV9C VUdfT04ocmluZy0+dGFpbCA+IHJpbmctPnNpemUgLSBieXRlcyk7CisJb3V0ID0gcmluZy0+dmFk ZHIgKyByaW5nLT50YWlsOworCXJpbmctPnRhaWwgKz0gYnl0ZXM7CiAJcmluZy0+c3BhY2UgLT0g Ynl0ZXM7CiAJR0VNX0JVR19PTihyaW5nLT5zcGFjZSA8IDApOwotCUdFTV9CVUdfT05MWShyaW5n LT5hZHZhbmNlID0gcmluZy0+dGFpbCArIGJ5dGVzKTsKLQlyZXR1cm4gMDsKKworCXJldHVybiBv dXQ7CiB9CiAKIC8qIEFsaWduIHRoZSByaW5nIHRhaWwgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkg Ki8KIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlp bnQgbnVtX2R3b3JkcyA9Ci0JCShyaW5nLT50YWlsICYgKENBQ0hFTElORV9CWVRFUyAtIDEpKSAv IHNpemVvZih1aW50MzJfdCk7Ci0JaW50IHJldDsKKwkJKHJlcS0+cmluZy0+dGFpbCAmIChDQUNI RUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodWludDMyX3QpOworCXUzMiAqb3V0OwogCiAJaWYg KG51bV9kd29yZHMgPT0gMCkKIAkJcmV0dXJuIDA7CiAKIAludW1fZHdvcmRzID0gQ0FDSEVMSU5F X0JZVEVTIC8gc2l6ZW9mKHVpbnQzMl90KSAtIG51bV9kd29yZHM7Ci0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIG51bV9kd29yZHMpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIG51bV9kd29yZHMpOworCWlmIChJU19FUlIob3V0KSkK KwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCXdoaWxlIChudW1fZHdvcmRzLS0pCi0JCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJKm91dCsrID0gTUlfTk9PUDsKIAotCWludGVs X3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0yMzU3LDEzICsyMzM1LDExIEBAIHN0YXRpYyB2b2lkIGdlbjZfYnNk X3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAog c3RhdGljIGludCBnZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmlu ZzsKLQl1aW50MzJfdCBjbWQ7Ci0JaW50IHJldDsKKwl1MzIgY21kLCAqb3V0OwogCi0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJb3V0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIob3V0KSkKKwkJcmV0dXJu IFBUUl9FUlIob3V0KTsKIAogCWNtZCA9IE1JX0ZMVVNIX0RXOwogCWlmIChJTlRFTF9HRU4ocmVx LT5pOTE1KSA+PSA4KQpAQCAtMjM4NSwxNiArMjM2MSwxNiBAQCBzdGF0aWMgaW50IGdlbjZfYnNk X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQog CWlmIChtb2RlICYgRU1JVF9JTlZBTElEQVRFKQogCQljbWQgfD0gTUlfSU5WQUxJREFURV9UTEIg fCBNSV9JTlZBTElEQVRFX0JTRDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwgTUlfRkxVU0hf RFdfVVNFX0dUVCk7CisJKm91dCsrID0gY21kOworCSpvdXQrKyA9IEk5MTVfR0VNX0hXU19TQ1JB VENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RUOwogCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1 KSA+PSA4KSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdXBwZXIgYWRkciAqLwot CQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHZhbHVlICovCisJCSpvdXQrKyA9IDA7IC8q IHVwcGVyIGFkZHIgKi8KKwkJKm91dCsrID0gMDsgLyogdmFsdWUgKi8KIAl9IGVsc2UgIHsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IE1JX05PT1A7CiAJfQotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLCBvdXQpOwogCXJldHVybiAw OwogfQogCkBAIC0yNDAzLDIzICsyMzc5LDIyIEBAIGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKIAkJ ICAgdW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nID0gcmVxLT5yaW5nOwogCWJvb2wgcHBndHQgPSBVU0VTX1BQR1RUKHJlcS0+aTkxNSkgJiYK IAkJCSEoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSk7Ci0JaW50IHJldDsK Kwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0 KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlpZiAo SVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKIAkvKiBGSVhNRShCRFcpOiBB ZGRyZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCi0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwgKHBwZ3R0PDw4KSB8Ci0JCQkoZGlz cGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KLQkJCSBNSV9CQVRDSF9SRVNPVVJDRV9T VFJFQU1FUiA6IDApKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhvZmZz ZXQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OworCSpvdXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwgKHBwZ3R0PDw4KSB8CisJ CSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJIE1JX0JBVENIX1JFU09V UkNFX1NUUkVBTUVSIDogMCk7CisJKm91dCsrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpv dXQrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqb3V0KysgPSBNSV9OT09QOworCWludGVs X3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI0MjksMjIgKzI0 MDQsMjAgQEAgaHN3X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCiAJCSAgdTY0IG9mZnNldCwgdTMyIGxlbiwKIAkJICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hf ZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJl dDsKKwl1MzIgKm91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlp ZiAoSVNfRVJSKG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywKLQkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3Mg JiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkgMCA6IE1JX0JBVENIX1BQR1RUX0hTVyB8IE1J X0JBVENIX05PTl9TRUNVUkVfSFNXKSB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BB VENIX1JTID8KLQkJCSBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApKTsKKwkqb3V0Kysg PSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAorCQkgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQ QVRDSF9TRUNVUkUgPworCQkgMCA6IE1JX0JBVENIX1BQR1RUX0hTVyB8IE1JX0JBVENIX05PTl9T RUNVUkVfSFNXKSB8CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJ IE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCk7CiAJLyogYml0MC03IGlzIHRoZSBsZW5n dGggb24gR0VONisgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0KTsKLQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CisJKm91dCsrID0gb2Zmc2V0OworCWludGVsX3JpbmdfYWR2YW5j ZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI0NTQsMjAgKzI0MjcsMTggQEAgZ2Vu Nl9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICB1 NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkgICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hfZmxhZ3MpCiB7 Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsKKwl1MzIg Km91dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCW91dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlpZiAoSVNfRVJS KG91dCkpCisJCXJldHVybiBQVFJfRVJSKG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywK LQkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJ U1BBVENIX1NFQ1VSRSA/Ci0JCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSkpOworCSpv dXQrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8CisJCSAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1 X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KTsKIAkv KiBiaXQwLTcgaXMgdGhlIGxlbmd0aCBvbiBHRU42KyAqLwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqb3V0KysgPSBvZmZzZXQ7 CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcSwgb3V0KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjQ3 NiwxMyArMjQ0NywxMSBAQCBnZW42X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAKIHN0YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZyA9IHJlcS0+cmluZzsKLQl1aW50MzJfdCBjbWQ7Ci0JaW50IHJldDsKKwl1MzIgY21kLCAqb3V0 OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJb3V0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCWlmIChJU19FUlIob3V0 KSkKKwkJcmV0dXJuIFBUUl9FUlIob3V0KTsKIAogCWNtZCA9IE1JX0ZMVVNIX0RXOwogCWlmIChJ TlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KQpAQCAtMjUwMywxNyArMjQ3MiwxNiBAQCBzdGF0aWMg aW50IGdlbjZfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMy IG1vZGUpCiAJICovCiAJaWYgKG1vZGUgJiBFTUlUX0lOVkFMSURBVEUpCiAJCWNtZCB8PSBNSV9J TlZBTElEQVRFX1RMQjsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywKLQkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19V U0VfR1RUKTsKKwkqb3V0KysgPSBjbWQ7CisJKm91dCsrID0gSTkxNV9HRU1fSFdTX1NDUkFUQ0hf QUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQ7CiAJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49 IDgpIHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBhZGRyICovCi0JCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUgKi8KKwkJKm91dCsrID0gMDsgLyogdXBw ZXIgYWRkciAqLworCQkqb3V0KysgPSAwOyAvKiB2YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK KwkJKm91dCsrID0gMDsKKwkJKm91dCsrID0gTUlfTk9PUDsKIAl9Ci0JaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEsIG91dCk7CiAKIAlyZXR1cm4gMDsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCA4OTY4MzhjYTUw MmMuLjc3OTYwZGIwZGRlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aApAQCAtMTQ0LDcgKzE0NCw2IEBAIHN0cnVjdCBpbnRlbF9yaW5nIHsKIAogCXUzMiBoZWFkOwog CXUzMiB0YWlsOwotCUdFTV9CVUdfT05MWV9ERUNMQVJFKHUzMiBhZHZhbmNlKTsKIAogCWludCBz cGFjZTsKIAlpbnQgc2l6ZTsKQEAgLTQ5NSwyMSArNDk0LDEyIEBAIHZvaWQgaW50ZWxfZW5naW5l X2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogdm9pZCBpbnRlbF9s ZWdhY3lfc3VibWlzc2lvbl9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKIAotaW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLCBpbnQgbik7CiBpbnQgX19tdXN0X2NoZWNrIGludGVsX3JpbmdfY2Fj aGVsaW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKIAotc3RhdGlj IGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdTMy IGRhdGEpCi17Ci0JKih1aW50MzJfdCAqKShyaW5nLT52YWRkciArIHJpbmctPnRhaWwpID0gZGF0 YTsKLQlyaW5nLT50YWlsICs9IDQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5n X2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCBpOTE1X3JlZ190IHJlZykKLXsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7Ci19Cit1MzIg X19tdXN0X2NoZWNrICppbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCBpbnQgbik7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uo c3RydWN0IGludGVsX3JpbmcgKnJpbmcpCitzdGF0aWMgaW5saW5lIHZvaWQKK2ludGVsX3Jpbmdf YWR2YW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyICpvdXQpCiB7CiAJ LyogRHVtbXkgZnVuY3Rpb24uCiAJICoKQEAgLTUxOSwxNCArNTA5LDE2IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCiAJICog cmVzZXJ2ZWQgZm9yIHRoZSBjb21tYW5kIHBhY2tldCAoaS5lLiB0aGUgdmFsdWUgcGFzc2VkIHRv CiAJICogaW50ZWxfcmluZ19iZWdpbigpKS4KIAkgKi8KLQlHRU1fQlVHX09OTFlfT04ocmluZy0+ dGFpbCAhPSByaW5nLT5hZHZhbmNlKTsKKwlHRU1fQlVHX09OKChyZXEtPnJpbmctPnZhZGRyICsg cmVxLT5yaW5nLT50YWlsKSAhPSBvdXQpOwogfQogCi1zdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9y aW5nX29mZnNldChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdm9pZCAqYWRkcikKK3N0YXRpYyBp bmxpbmUKK3UzMiBpbnRlbF9yaW5nX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwgdm9pZCAqYWRkcikKIHsKIAkvKiBEb24ndCB3cml0ZSByaW5nLT5zaXplIChlcXVpdmFs ZW50IHRvIDApIGFzIHRoYXQgaGFuZ3Mgc29tZSBHUFVzLiAqLwotCXUzMiBvZmZzZXQgPSBhZGRy IC0gcmluZy0+dmFkZHI7Ci0JcmV0dXJuIG9mZnNldCAmIChyaW5nLT5zaXplIC0gMSk7CisJdTMy IG9mZnNldCA9IGFkZHIgLSByZXEtPnJpbmctPnZhZGRyOworCUdFTV9CVUdfT04ob2Zmc2V0ID4g cmVxLT5yaW5nLT5zaXplKTsKKwlyZXR1cm4gb2Zmc2V0ICYgKHJlcS0+cmluZy0+c2l6ZSAtIDEp OwogfQogCiBpbnQgX19pbnRlbF9yaW5nX3NwYWNlKGludCBoZWFkLCBpbnQgdGFpbCwgaW50IHNp emUpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=