From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC] drm/i915: Emit to ringbuffer directly Date: Thu, 8 Sep 2016 16:12:55 +0100 Message-ID: <1473347575-21365-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8EAB46E305 for ; Thu, 8 Sep 2016 15:13:10 +0000 (UTC) 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 b3VudHMgdG8gYXBwcm94aW1hdGVseQoyMzg0IGJ5dGVzIG9mIHNhdmVkIHRleHQgb24gbXkgYnVp bGQuCgpOb3Qgc3VyZSBpZiB0aGlzIGhhcyBhbnkgbWVhc3VyYWJsZSBwZXJmb3JtYW5jZQppbXBs aWNhdGlvbnMgYnV0IGV4ZWN1dGluZyBhIHRvbiBvZiB1c2VsZXNzIGluc3RydWN0aW9ucwpvbiBm YXN0IHBhdGhzIGNhbm5vdCBiZSBnb29kLgoKUGF0Y2ggaXMgbm90IGZ1bGx5IHBvbGlzaGVkLCBi dXQgaXQgY29tcGlsZXMgYW5kIHJ1bnMKb24gR2VuOSBhdCBsZWFzdC4KClNpZ25lZC1vZmYtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgIHwgIDYyICsrLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICAyNyArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgIDU3ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICB8IDExMyArKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAyMjMgKysrKysrKy0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyAgICAgICAgICB8ICA0MyArLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAgICB8ICA2OSArKy0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgNDgwICsrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgfCAg MTkgKy0KIDkgZmlsZXMgY2hhbmdlZCwgNTU1IGluc2VydGlvbnMoKyksIDUzOCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggMzU5NTBlZTQ2 YTFkLi5jOWI2MTk1M2YyM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKQEAgLTU3Nyw3ICs1NzcsNiBAQCBzdGF0aWMgaW5saW5lIGludAogbWlfc2V0X2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7CiAJdTMyIGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7 CiAJY29uc3QgaW50IG51bV9yaW5ncyA9CkBAIC01ODUsNiArNTg0LDcgQEAgbWlfc2V0X2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAkJaTkx NS5zZW1hcGhvcmVzID8KIAkJSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9yaW5ncyAtIDEgOgog CQkwOworCXUzMiAqcmJ1ZjsKIAlpbnQgbGVuLCByZXQ7CiAKIAkvKiB3L2E6IElmIEZsdXNoIFRM QiBJbnZhbGlkYXRpb24gTW9kZSBpcyBlbmFibGVkLCBkcml2ZXIgbXVzdCBkbyBhIFRMQgpAQCAt NjA5LDcwICs2MDksNjEgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KQog CQlsZW4gKz0gMiArIChudW1fcmluZ3MgPyA0Km51bV9yaW5ncyArIDYgOiAwKTsKIAotCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCBsZW4pOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCBsZW4sICZyYnVmKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJLyogV2FQcm9ncmFt TWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4dDppdmIsdmx2LGhzdyxiZHcsY2h2ICovCiAJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf QVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKKwkJKnJidWYrKyA9IE1JX0FSQl9PTl9PRkYg fCBNSV9BUkJfRElTQUJMRTsKIAkJaWYgKG51bV9yaW5ncykgewogCQkJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqc2lnbmFsbGVyOwogCi0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkJTUlf TE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7CisJCQkqcmJ1ZisrID0gTUlfTE9BRF9SRUdJ U1RFUl9JTU0obnVtX3JpbmdzKTsKIAkJCWZvcl9lYWNoX2VuZ2luZShzaWduYWxsZXIsIGRldl9w cml2KSB7CiAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCiAJCQkJCWNvbnRpbnVlOwogCi0J CQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLAotCQkJCQkJICAgIFJJTkdfUFNNSV9DVEwoc2ln bmFsbGVyLT5tbWlvX2Jhc2UpKTsKLQkJCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkJCV9N QVNLRURfQklUX0VOQUJMRShHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpKTsKKwkJCQkqcmJ1 ZisrID0gUklOR19QU01JX0NUTChzaWduYWxsZXItPm1taW9fYmFzZSkucmVnOworCQkJCSpyYnVm KysgPSBfTUFTS0VEX0JJVF9FTkFCTEUoR0VONl9QU01JX1NMRUVQX01TR19ESVNBQkxFKTsKIAkJ CX0KIAkJfQogCX0KIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfU0VUX0NPTlRFWFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAot CQkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUpIHwgZmxhZ3Mp OworCSpyYnVmKysgPSBNSV9OT09QOworCSpyYnVmKysgPSBNSV9TRVRfQ09OVEVYVDsKKwkqcmJ1 ZisrID0gaTkxNV9nZ3R0X29mZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUpIHwgZmxh Z3M7CiAJLyoKIAkgKiB3L2E6IE1JX1NFVF9DT05URVhUIG11c3QgYWx3YXlzIGJlIGZvbGxvd2Vk IGJ5IE1JX05PT1AKIAkgKiBXYU1pU2V0Q29udGV4dF9IYW5nOnNuYixpdmIsdmx2CiAJICovCi0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCSpyYnVmKysgPSBNSV9OT09QOwogCiAJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewogCQlpZiAobnVtX3JpbmdzKSB7CiAJCQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7CiAJCQlpOTE1X3JlZ190IGxhc3RfcmVn ID0ge307IC8qIGtlZXAgZ2NjIHF1aWV0ICovCiAKLQkJCWludGVsX3JpbmdfZW1pdChyaW5nLAot CQkJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3MpKTsKKwkJCSpyYnVmKysgPSBNSV9M T0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3MpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxl ciwgZGV2X3ByaXYpIHsKIAkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKIAkJCQkJY29udGlu dWU7CiAKIAkJCQlsYXN0X3JlZyA9IFJJTkdfUFNNSV9DVEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2Up OwotCQkJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbGFzdF9yZWcpOwotCQkJCWludGVsX3Jp bmdfZW1pdChyaW5nLAotCQkJCQkJX01BU0tFRF9CSVRfRElTQUJMRShHRU42X1BTTUlfU0xFRVBf TVNHX0RJU0FCTEUpKTsKKwkJCQkqcmJ1ZisrID0gbGFzdF9yZWcucmVnOworCQkJCSpyYnVmKysg PSBfTUFTS0VEX0JJVF9ESVNBQkxFKEdFTjZfUFNNSV9TTEVFUF9NU0dfRElTQUJMRSk7CiAJCQl9 CiAKIAkJCS8qIEluc2VydCBhIGRlbGF5IGJlZm9yZSB0aGUgbmV4dCBzd2l0Y2ghICovCi0JCQlp bnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkJTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwKLQkJCQkJ TUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKLQkJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbGFz dF9yZWcpOwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJCWk5MTVfZ2d0dF9vZmZzZXQo ZW5naW5lLT5zY3JhdGNoKSk7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJ CQkqcmJ1ZisrID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RU OworCQkJKnJidWYrKyA9IGxhc3RfcmVnLnJlZzsKKwkJCSpyYnVmKysgPSBpOTE1X2dndHRfb2Zm c2V0KGVuZ2luZS0+c2NyYXRjaCk7CisJCQkqcmJ1ZisrID0gTUlfTk9PUDsKIAkJfQotCQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEUpOworCQkqcmJ1 ZisrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEU7CiAJfQogCi0JaW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJu IHJldDsKIH0KQEAgLTY4MCwxMyArNjcxLDEzIEBAIG1pX3NldF9jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3MpCiBzdGF0aWMgaW50IHJlbWFwX2wz KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc2xpY2UpCiB7CiAJdTMyICpy ZW1hcF9pbmZvID0gcmVxLT5pOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tzbGljZV07Ci0Jc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CisJdTMyICpyYnVmOwogCWludCBpLCBy ZXQ7CiAKIAlpZiAoIXJlbWFwX2luZm8pCiAJCXJldHVybiAwOwogCi0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIEdFTjdfTDNMT0dfU0laRS80ICogMiArIDIpOworCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCBHRU43X0wzTE9HX1NJWkUvNCAqIDIgKyAyLCAmcmJ1Zik7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNjk1LDEzICs2ODYsMTQgQEAgc3RhdGljIGludCByZW1h cF9sMyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHNsaWNlKQogCSAqIGhl cmUgYmVjYXVzZSBubyBvdGhlciBjb2RlIHNob3VsZCBhY2Nlc3MgdGhlc2UgcmVnaXN0ZXJzIG90 aGVyIHRoYW4KIAkgKiBhdCBpbml0aWFsaXphdGlvbiB0aW1lLgogCSAqLwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCkpOworCSpy YnVmKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCk7CiAJZm9yIChp ID0gMDsgaSA8IEdFTjdfTDNMT0dfU0laRS80OyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3Jl ZyhyaW5nLCBHRU43X0wzTE9HKHNsaWNlLCBpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBy ZW1hcF9pbmZvW2ldKTsKKwkJKnJidWYrKyA9IEdFTjdfTDNMT0coc2xpY2UsIGkpLnJlZzsKKwkJ KnJidWYrKyA9IHJlbWFwX2luZm9baV07CiAJfQotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IE1JX05PT1A7CisK KwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDk0MzJkNGNlOWZmYi4u ZDlhMjI2ZWE3NjhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fYWN0 aXZlKHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMsCiBzdGF0aWMgaW50CiBpOTE1X3Jlc2V0X2dlbjdf c29sX29mZnNldHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CisJdTMyICpyYnVmOwogCWludCByZXQsIGk7 CiAKIAlpZiAoIUlTX0dFTjcocmVxLT5pOTE1KSB8fCByZXEtPmVuZ2luZS0+aWQgIT0gUkNTKSB7 CkBAIC0xMzY2LDE3ICsxMzY2LDE3IEBAIGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQgKiAzKTsKKwlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNCAqIDMsICZyYnVmKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJZm9y IChpID0gMDsgaSA8IDQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9S RUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjdfU09fV1JJ VEVfT0ZGU0VUKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqcmJ1ZisrID0g TUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7CisJCSpyYnVmKysgPSBHRU43X1NPX1dSSVRFX09GRlNF VChpKS5yZWc7CisJCSpyYnVmKysgPSAwOwogCX0KIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5n KTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAt MTQ4MywxNyArMTQ4MywxOCBAQCBleGVjYnVmX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVy X3BhcmFtcyAqcGFyYW1zLAogCiAJaWYgKHBhcmFtcy0+ZW5naW5lLT5pZCA9PSBSQ1MgJiYKIAkg ICAgaW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKLQkJ c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBwYXJhbXMtPnJlcXVlc3QtPnJpbmc7CisJCXUzMiAq cmJ1ZjsKIAotCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHBhcmFtcy0+cmVxdWVzdCwgNCk7CisJ CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocGFyYW1zLT5yZXF1ZXN0LCA0LCAmcmJ1Zik7CiAJCWlm IChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09Q KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQkJ aW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBJTlNUUE0pOwotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOwotCQlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CisJCSpyYnVmKysgPSBNSV9OT09QOworCQkqcmJ1ZisrID0gTUlfTE9BRF9SRUdJU1RF Ul9JTU0oMSk7CisJCSpyYnVmKysgPSBJTlNUUE0ucmVnOworCQkqcmJ1ZisrID0gaW5zdHBfbWFz ayA8PCAxNiB8IGluc3RwX21vZGU7CisKKwkJaW50ZWxfcmluZ19hZHZhbmNlKHBhcmFtcy0+cmVx dWVzdC0+cmluZyk7CiAKIAkJZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlID0gaW5z dHBfbW9kZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGUxNmMzODA4 NmFiZS4uZDViNWNlYTA4MjYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAt NjYzLDIzICs2NjMsMjQgQEAgc3RhdGljIGludCBnZW44X3dyaXRlX3BkcChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSAgdW5zaWduZWQgZW50cnksCiAJCQkgIGRtYV9hZGRy X3QgYWRkcikKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwl1MzIgKnJidWY7CiAJ aW50IHJldDsKIAogCUJVR19PTihlbnRyeSA+PSA0KTsKIAotCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCA2KTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNiwgJnJidWYpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9S RUdJU1RFUl9JTU0oMSkpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5HX1BE UF9VRFcoZW5naW5lLCBlbnRyeSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8zMl9i aXRzKGFkZHIpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSkpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5l LCBlbnRyeSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsK LQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJf SU1NKDEpOworCSpyYnVmKysgPSBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGVudHJ5KS5yZWc7 CisJKnJidWYrKyA9IHVwcGVyXzMyX2JpdHMoYWRkcik7CisJKnJidWYrKyA9IE1JX0xPQURfUkVH SVNURVJfSU1NKDEpOworCSpyYnVmKysgPSBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGVudHJ5 KS5yZWc7CisJKnJidWYrKyA9IGxvd2VyXzMyX2JpdHMoYWRkcik7CisKKwlpbnRlbF9yaW5nX2Fk dmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY1NSw4ICsxNjU2LDggQEAg c3RhdGljIHVpbnQzMl90IGdldF9wZF9vZmZzZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 KQogc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwK IAkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXEtPmVuZ2luZTsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAogCS8qIE5COiBUTEJzIG11 c3QgYmUgZmx1c2hlZCBhbmQgaW52YWxpZGF0ZWQgYmVmb3JlIGEgc3dpdGNoICovCkBAIC0xNjY0 LDE3ICsxNjY1LDE4IEBAIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA2KTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNiwgJnJidWYp OwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf TE9BRF9SRUdJU1RFUl9JTU0oMikpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19Q UF9ESVJfRENMVihlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgUFBfRElSX0RDTFZf MkcpOwotCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfQkFTRShlbmdpbmUp KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZ2V0X3BkX29mZnNldChwcGd0dCkpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJ KnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDIpOworCSpyYnVmKysgPSBSSU5HX1BQX0RJ Ul9EQ0xWKGVuZ2luZSkucmVnOworCSpyYnVmKysgPSBQUF9ESVJfRENMVl8yRzsKKwkqcmJ1Zisr ID0gUklOR19QUF9ESVJfQkFTRShlbmdpbmUpLnJlZzsKKwkqcmJ1ZisrID0gZ2V0X3BkX29mZnNl dChwcGd0dCk7CisJKnJidWYrKyA9IE1JX05PT1A7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVx LT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY4Miw4ICsxNjg0LDggQEAgc3RhdGljIGlu dCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIHN0YXRpYyBpbnQg Z2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCQkJICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9 IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2lu ZTsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAogCS8qIE5COiBUTEJzIG11c3QgYmUgZmx1c2hl ZCBhbmQgaW52YWxpZGF0ZWQgYmVmb3JlIGEgc3dpdGNoICovCkBAIC0xNjkxLDE3ICsxNjkzLDE4 IEBAIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgNik7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYsICZyYnVmKTsKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNU RVJfSU1NKDIpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0RDTFYo ZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBQX0RJUl9EQ0xWXzJHKTsKLQlpbnRl bF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIGdldF9wZF9vZmZzZXQocHBndHQpKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBN SV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsKKwkqcmJ1ZisrID0gUklOR19QUF9ESVJfRENMVihlbmdp bmUpLnJlZzsKKwkqcmJ1ZisrID0gUFBfRElSX0RDTFZfMkc7CisJKnJidWYrKyA9IFJJTkdfUFBf RElSX0JBU0UoZW5naW5lKS5yZWc7CisJKnJidWYrKyA9IGdldF9wZF9vZmZzZXQocHBndHQpOwor CSpyYnVmKysgPSBNSV9OT09QOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAK IAkvKiBYWFg6IFJDUyBpcyB0aGUgb25seSBvbmUgdG8gYXV0byBpbnZhbGlkYXRlIHRoZSBUTEJz PyAqLwogCWlmIChlbmdpbmUtPmlkICE9IFJDUykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCmluZGV4IDBjNjUyMTI3ODFlNC4uMTEwMjUyNjQ0Mjg3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMTY3OSwxMiArMTE2NzksMTEgQEAgc3RhdGljIGludCBp bnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQogewotCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQl1MzIgZmxpcF9tYXNrOworCXUzMiBm bGlwX21hc2ssICpyYnVmOwogCWludCByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgNik7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYsICZyYnVmKTsKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMTY5NSwxMyArMTE2OTQsMTQgQEAgc3RhdGljIGludCBp bnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZmxpcF9tYXNr ID0gTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQOwogCWVsc2UKIAkJZmxpcF9tYXNrID0gTUlfV0FJ VF9GT1JfUExBTkVfQV9GTElQOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9F VkVOVCB8IGZsaXBfbWFzayk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAotCQkJTUlfRElTUExBWV9GTElQ X1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5w aXRjaGVzWzBdKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3Jr LT5ndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIGF1eCBkaXNwbGF5 IGJhc2UgYWRkcmVzcywgdW51c2VkICovCisKKwkqcmJ1ZisrID0gTUlfV0FJVF9GT1JfRVZFTlQg fCBmbGlwX21hc2s7CisJKnJidWYrKyA9IE1JX05PT1A7CisJKnJidWYrKyA9IE1JX0RJU1BMQVlf RkxJUCB8CisJCSAgTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkq cmJ1ZisrID0gZmItPnBpdGNoZXNbMF07CisJKnJidWYrKyA9IGludGVsX2NydGMtPmZsaXBfd29y ay0+Z3R0X29mZnNldDsKKwkqcmJ1ZisrID0gMDsgLyogYXV4IGRpc3BsYXkgYmFzZSBhZGRyZXNz LCB1bnVzZWQgKi8KIAogCXJldHVybiAwOwogfQpAQCAtMTE3MTMsMTIgKzExNzEzLDExIEBAIHN0 YXRpYyBpbnQgaW50ZWxfZ2VuM19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJfdCBmbGFn cykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdTMyIGZsaXBfbWFz azsKKwl1MzIgZmxpcF9tYXNrLCAqcmJ1ZjsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDYpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2LCAmcmJ1Zik7 CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTE3MjYsMTMgKzExNzI1LDE0IEBAIHN0 YXRpYyBpbnQgaW50ZWxfZ2VuM19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CWZsaXBfbWFzayA9IE1JX1dBSVRfRk9SX1BMQU5FX0JfRkxJUDsKIAllbHNlCiAJCWZsaXBfbWFz ayA9IE1JX1dBSVRfRk9SX1BMQU5FX0FfRkxJUDsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf V0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2spOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfAotCQkJ TUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxf Y3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf Tk9PUCk7CisKKwkqcmJ1ZisrID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2s7CisJKnJi dWYrKyA9IE1JX05PT1A7CisJKnJidWYrKyA9IE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwKKwkJICBN SV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpOworCSpyYnVmKysgPSBmYi0+ cGl0Y2hlc1swXTsKKwkqcmJ1ZisrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0 OworCSpyYnVmKysgPSBNSV9OT09QOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMTc0NCwxMyArMTE3 NDQsMTMgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVp bnQzMl90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJdTMyICpy YnVmOwogCXVpbnQzMl90IHBmLCBwaXBlc3JjOwogCWludCByZXQ7CiAKLQlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgNCk7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQsICZyYnVm KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMTc1OCwxMSArMTE3NTgsMTEgQEAg c3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkgKiBEaXNwbGF5IFJlZ2lzdGVycyAod2hpY2ggZG8gbm90IGNoYW5nZSBhY3Jvc3MgYSBwYWdl LWZsaXApCiAJICogc28gd2UgbmVlZCBvbmx5IHJlcHJvZ3JhbSB0aGUgYmFzZSBhZGRyZXNzLgog CSAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAotCQkJTUlfRElT UExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIGZiLT5waXRjaGVzWzBdKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ ZmxpcF93b3JrLT5ndHRfb2Zmc2V0IHwKLQkJCWludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhm Yi0+bW9kaWZpZXJbMF0pKTsKKwkqcmJ1ZisrID0gTUlfRElTUExBWV9GTElQIHwKKwkJICBNSV9E SVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpOworCSpyYnVmKysgPSBmYi0+cGl0 Y2hlc1swXTsKKwkqcmJ1ZisrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0IHwK KwkJICBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlmaWVyWzBdKTsKIAogCS8q IFhYWCBFbmFibGluZyB0aGUgcGFuZWwtZml0dGVyIGFjcm9zcyBwYWdlLWZsaXAgaXMgc28gZmFy CiAJICogdW50ZXN0ZWQgb24gbm9uLW5hdGl2ZSBtb2Rlcywgc28gaWdub3JlIGl0IGZvciBub3cu CkBAIC0xMTc3MCw3ICsxMTc3MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAJcGYgPSAwOwogCXBpcGVzcmMgPSBJOTE1 X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAweDBmZmYwZmZmOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBwZiB8IHBpcGVzcmMpOworCSpyYnVmKysgPSBwZiB8IHBpcGVzcmM7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTExNzgyLDIxICsxMTc4MiwyMSBAQCBzdGF0aWMgaW50IGludGVs X2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwl1MzIgKnJidWY7CiAJdWludDMyX3QgcGYsIHBpcGVz cmM7CiAJaW50IHJldDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCwgJnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQIHwKLQkJCU1JX0RJ U1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBmYi0+cGl0Y2hlc1swXSB8Ci0JCQlpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmIt Pm1vZGlmaWVyWzBdKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBf d29yay0+Z3R0X29mZnNldCk7CisJKnJidWYrKyA9IE1JX0RJU1BMQVlfRkxJUCB8CisJCSAgTUlf RElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKTsKKwkqcmJ1ZisrID0gZmItPnBp dGNoZXNbMF0gfAorCQkgIGludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXJb MF0pOworCSpyYnVmKysgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQ7CiAKIAkv KiBDb250cmFyeSB0byB0aGUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24sCiAJICog IkVuYWJsZSBQYW5lbCBGaXR0ZXIiIGRvZXMgbm90IHNlZW0gdG8gYmUgcmVxdWlyZWQgd2hlbiBw YWdlCkBAIC0xMTgwNiw3ICsxMTgwNiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAJcGYgPSAwOwogCXBpcGVzcmMgPSBJ OTE1X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAweDBmZmYwZmZmOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBwZiB8IHBpcGVzcmMpOworCSpyYnVmKysgPSBwZiB8IHBpcGVzcmM7 CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExODE4LDggKzExODE4LDggQEAgc3RhdGljIGludCBpbnRl bF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQogewotCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwl1MzIgKnJidWY7CiAJdWludDMyX3QgcGxh bmVfYml0ID0gMDsKIAlpbnQgbGVuLCByZXQ7CiAKQEAgLTExODY0LDcgKzExODY0LDcgQEAgc3Rh dGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIGxl bik7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIGxlbiwgJnJidWYpOwogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CiAKQEAgLTExODc4LDMxICsxMTg3OCwzMCBAQCBzdGF0aWMgaW50IGlu dGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIHRvIHplcm8g ZG9lcyBsZWFkIHRvIGxvY2t1cHMgd2l0aGluIE1JX0RJU1BMQVlfRkxJUC4KIAkgKi8KIAlpZiAo cmVxLT5lbmdpbmUtPmlkID09IFJDUykgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9B RF9SRUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIERFUlJNUik7 Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB+KERFUlJNUl9QSVBFQV9QUklfRkxJUF9ET05FIHwK LQkJCQkJICBERVJSTVJfUElQRUJfUFJJX0ZMSVBfRE9ORSB8Ci0JCQkJCSAgREVSUk1SX1BJUEVD X1BSSV9GTElQX0RPTkUpKTsKKwkJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwor CQkqcmJ1ZisrID0gREVSUk1SLnJlZzsKKwkJKnJidWYrKyA9IH4oREVSUk1SX1BJUEVBX1BSSV9G TElQX0RPTkUgfAorCQkJICAgREVSUk1SX1BJUEVCX1BSSV9GTElQX0RPTkUgfAorCQkJICAgREVS Uk1SX1BJUEVDX1BSSV9GTElQX0RPTkUpOwogCQlpZiAoSVNfR0VOOChkZXYpKQotCQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IHwKLQkJCQkJICAgICAg TUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKKwkJCSpyYnVmKysgPSBNSV9TVE9SRV9SRUdJU1RFUl9N RU1fR0VOOCB8CisJCQkJICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQ7CiAJCWVsc2UKLQkJCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAotCQkJCQkgICAgICBNSV9T Uk1fTFJNX0dMT0JBTF9HVFQpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIERFUlJNUik7 Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCWk5MTVfZ2d0dF9vZmZzZXQocmVxLT5lbmdp bmUtPnNjcmF0Y2gpICsgMjU2KTsKKwkJCSpyYnVmKysgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0g fAorCQkJCSAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOworCQkqcmJ1ZisrID0gREVSUk1SLnJlZzsK KwkJKnJidWYrKyA9IGk5MTVfZ2d0dF9vZmZzZXQocmVxLT5lbmdpbmUtPnNjcmF0Y2gpICsgMjU2 OwogCQlpZiAoSVNfR0VOOChkZXYpKSB7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0J CQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCQkqcmJ1ZisrID0gMDsKKwkJCSpy YnVmKysgPSBNSV9OT09QOwogCQl9CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJ U1BMQVlfRkxJUF9JOTE1IHwgcGxhbmVfYml0KTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmIt PnBpdGNoZXNbMF0gfAotCQkJaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmll clswXSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0 dF9vZmZzZXQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfTk9PUCkpOworCSpyYnVmKysg PSBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5lX2JpdDsKKwkqcmJ1ZisrID0gZmItPnBpdGNo ZXNbMF0gfAorCQkgIGludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXJbMF0p OworCSpyYnVmKysgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQ7CisJKnJidWYr KyA9IE1JX05PT1A7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5k ZXggOTJiZmU0N2FkMzNjLi5lODg0NjUyM2JlNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CkBAIC02NzcsNyArNjc3LDcgQEAgaW50IGludGVsX2xvZ2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0 X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCAwKTsKKwly ZXQgPSBfX2ludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgMCk7CiAJaWYgKHJldCkKIAkJZ290byBl cnJfdW5waW47CiAKQEAgLTcwNSw2ICs3MDUsMTMgQEAgZXJyX3VucGluOgogfQogCiAvKgorICog UmVzZXJ2ZSBzcGFjZSBmb3IgMiBOT09QcyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVxdWVzdCB0byBi ZQorICogdXNlZCBhcyBhIHdvcmthcm91bmQgZm9yIG5vdCBiZWluZyBhbGxvd2VkIHRvIGRvIGxp dGUKKyAqIHJlc3RvcmUgd2l0aCBIRUFEPT1UQUlMIChXYUlkbGVMaXRlUmVzdG9yZSkuCisgKi8K KyNkZWZpbmUgV0FfVEFJTF9EV09SRFMgMgorCisvKgogICogaW50ZWxfbG9naWNhbF9yaW5nX2Fk dmFuY2UoKSAtIGFkdmFuY2UgdGhlIHRhaWwgYW5kIHByZXBhcmUgZm9yIHN1Ym1pc3Npb24KICAq IEByZXF1ZXN0OiBSZXF1ZXN0IHRvIGFkdmFuY2UgdGhlIGxvZ2ljYWwgcmluZ2J1ZmZlciBvZi4K ICAqCkBAIC03MTQsMTMgKzcyMSwxNCBAQCBlcnJfdW5waW46CiAgKiBwb2ludCwgdGhlIHRhaWwg Kmluc2lkZSogdGhlIGNvbnRleHQgaXMgdXBkYXRlZCBhbmQgdGhlIEVMU1Agd3JpdHRlbiB0by4K ICAqLwogc3RhdGljIGludAotaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQoraW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgKnJidWYpCiB7CiAJc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAogCWludGVsX3JpbmdfYWR2YW5jZShyaW5n KTsKLQlyZXF1ZXN0LT50YWlsID0gcmluZy0+dGFpbDsKKworCXJlcXVlc3QtPnRhaWwgPSByaW5n LT50YWlsIC0gV0FfVEFJTF9EV09SRFMgKiBzaXplb2YodTMyKTsKIAogCS8qCiAJICogSGVyZSB3 ZSBhZGQgdHdvIGV4dHJhIE5PT1BzIGFzIHBhZGRpbmcgdG8gYXZvaWQKQEAgLTcyOCw4ICs3MzYs OSBAQCBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpCiAJICoKIAkgKiBDYWxsZXIgbXVzdCByZXNlcnZlIFdBX1RBSUxfRFdPUkRT IGZvciB1cyEKIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCSpyYnVmKysgPSBNSV9OT09QOworCSpyYnVmKysg PSBNSV9OT09QOworCiAJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJLyogV2Uga2VlcCB0 aGUgcHJldmlvdXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3ZSByZXRpcmUgdGhlIGZvbGxvd2luZwpA QCAtODM3LDcgKzg0Niw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fy b3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlpbnQgcmV0 LCBpOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOworCXUzMiAqcmJ1ZjsK IAlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyAqdyA9ICZyZXEtPmk5MTUtPndvcmthcm91bmRzOwog CiAJaWYgKHctPmNvdW50ID09IDApCkBAIC04NDcsMTggKzg1NiwxOCBAQCBzdGF0aWMgaW50IGlu dGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgdy0+Y291bnQgKiAyICsgMik7Ci0JaWYgKHJldCkKKwlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgdy0+Y291bnQgKiAyICsgMiwgJnJidWYpOworCWlmICh1bmxpa2VseShy ZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVH SVNURVJfSU1NKHctPmNvdW50KSk7CisJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKHct PmNvdW50KTsKIAlmb3IgKGkgPSAwOyBpIDwgdy0+Y291bnQ7IGkrKykgewotCQlpbnRlbF9yaW5n X2VtaXRfcmVnKHJpbmcsIHctPnJlZ1tpXS5hZGRyKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IHctPnJlZ1tpXS52YWx1ZSk7CisJCSpyYnVmKysgPSB3LT5yZWdbaV0uYWRkci5yZWc7CisJCSpy YnVmKysgPSB3LT5yZWdbaV0udmFsdWU7CiAJfQotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKIAotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsK KwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldCA9IHJlcS0+ZW5naW5lLT5l bWl0X2ZsdXNoKHJlcSwgRU1JVF9CQVJSSUVSKTsKIAlpZiAocmV0KQpAQCAtMTM2MCwyNyArMTM2 OSwyNyBAQCBzdGF0aWMgaW50IGdlbjlfaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3BkcHMo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0gcmVxLT5jdHgtPnBwZ3R0OwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxLT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5l OwogCWNvbnN0IGludCBudW1fbHJpX2NtZHMgPSBHRU44X0xFR0FDWV9QRFBFUyAqIDI7Ci0JaW50 IGksIHJldDsKKwl1MzIgKnJidWY7CisJaW50IHJldCwgaTsKIAotCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCBudW1fbHJpX2NtZHMgKiAyICsgMik7Ci0JaWYgKHJldCkKKwlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgbnVtX2xyaV9jbWRzICogMiArIDIsICZyYnVmKTsKKwlpZiAodW5s aWtlbHkocmV0KSkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9M T0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpKTsKKwkqcmJ1ZisrID0gTUlfTE9BRF9SRUdJ U1RFUl9JTU0obnVtX2xyaV9jbWRzKTsKIAlmb3IgKGkgPSBHRU44X0xFR0FDWV9QRFBFUyAtIDE7 IGkgPj0gMDsgaS0tKSB7CiAJCWNvbnN0IGRtYV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2Vf ZGlyX2RtYV9hZGRyKHBwZ3R0LCBpKTsKIAotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdF TjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBw ZXJfMzJfYml0cyhwZF9kYWRkcikpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjhf UklOR19QRFBfTERXKGVuZ2luZSwgaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJf MzJfYml0cyhwZF9kYWRkcikpOworCQkqcmJ1ZisrID0gR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5l LCBpKS5yZWc7CisJCSpyYnVmKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKKwkJKnJidWYr KyA9IEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgaSkucmVnOworCQkqcmJ1ZisrID0gbG93ZXJf MzJfYml0cyhwZF9kYWRkcik7CiAJfQorCSpyYnVmKysgPSBNSV9OT09QOwogCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRl bF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTM4OSw4ICsx Mzk4LDggQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCiAJCQkgICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkJICAgICAg dW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxLT5yaW5nOwogCWJvb2wgcHBndHQgPSAhKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQ QVRDSF9TRUNVUkUpOworCXUzMiAqcmJ1ZjsKIAlpbnQgcmV0OwogCiAJLyogRG9uJ3QgcmVseSBp biBodyB1cGRhdGluZyBQRFBzLCBzcGVjaWFsbHkgaW4gbGl0ZS1yZXN0b3JlLgpAQCAtMTQxMSwx OSArMTQyMCwyMCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJcmVxLT5jdHgtPnBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAm PSB+aW50ZWxfZW5naW5lX2ZsYWcocmVxLT5lbmdpbmUpOwogCX0KIAotCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQorCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCA0LCAmcmJ1Zik7CisJaWYgKHVubGlrZWx5KHJldCkpCiAJCXJldHVybiByZXQ7CiAKIAkvKiBG SVhNRShCRFcpOiBBZGRyZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCi0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwKLQkJCShwcGd0 dDw8OCkgfAotCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/Ci0JCQkgTUlf QkFUQ0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxv d2VyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2Jp dHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjgg fAorCQkgIChwcGd0dCA8PCA4KSB8CisJCSAgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRD SF9SUyA/CisJCSAgTUlfQkFUQ0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKTsKKwkqcmJ1ZisrID0g bG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpyYnVmKysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7 CisJKnJidWYrKyA9IE1JX05PT1A7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsK IAogCXJldHVybiAwOwogfQpAQCAtMTQ0NCwxMiArMTQ1NCwxMSBAQCBzdGF0aWMgdm9pZCBnZW44 X2xvZ2ljYWxfcmluZ19kaXNhYmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAKIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1 ZXN0LT5yaW5nOwotCXUzMiBjbWQ7CiAJaW50IHJldDsKKwl1MzIgY21kLCAqcmJ1ZjsKIAotCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNCk7Ci0JaWYgKHJldCkKKwlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcXVlc3QsIDQsICZyYnVmKTsKKwlpZiAodW5saWtlbHkocmV0KSkKIAkJ cmV0dXJuIHJldDsKIAogCWNtZCA9IE1JX0ZMVVNIX0RXICsgMTsKQEAgLTE0NjcsMTMgKzE0NzYs MTIgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0LCB1MzIgbW9kZSkKIAkJCWNtZCB8PSBNSV9JTlZBTElEQVRFX0JTRDsKIAl9 CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywK LQkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfAotCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBhZGRyICovCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsK KwkqcmJ1ZisrID0gY21kOworCSpyYnVmKysgPSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwg TUlfRkxVU0hfRFdfVVNFX0dUVDsKKwkqcmJ1ZisrID0gMDsgLyogdXBwZXIgYWRkciAqLworCSpy YnVmKysgPSAwOyAvKiB2YWx1ZSAqLworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcXVlc3QtPnJp bmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDgxLDE0ICsxNDg5LDExIEBAIHN0YXRpYyBpbnQg Z2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgdTMy IG1vZGUpCiBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCQkJCSAgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAl1MzIgc2NyYXRjaF9hZGRyID0KLQkJaTkxNV9nZ3R0 X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElORV9CWVRFUzsKKwkgICAgICAg aTkxNV9nZ3R0X29mZnNldChyZXF1ZXN0LT5lbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElO RV9CWVRFUzsKIAlib29sIHZmX2ZsdXNoX3dhID0gZmFsc2UsIGRjX2ZsdXNoX3dhID0gZmFsc2U7 Ci0JdTMyIGZsYWdzID0gMDsKLQlpbnQgcmV0OwotCWludCBsZW47CisJdTMyICpyYnVmLCBmbGFn cyA9IDA7CisJaW50IHJldCwgbGVuOwogCiAJZmxhZ3MgfD0gUElQRV9DT05UUk9MX0NTX1NUQUxM OwogCkBAIC0xNTI5LDQ1ICsxNTM0LDQ1IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoX3Jl bmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiAJaWYgKGRjX2ZsdXNo X3dhKQogCQlsZW4gKz0gMTI7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIGxl bik7Ci0JaWYgKHJldCkKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIGxlbiwgJnJi dWYpOworCWlmICh1bmxpa2VseShyZXQpKQogCQlyZXR1cm4gcmV0OwogCiAJaWYgKHZmX2ZsdXNo X3dhKSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsK LQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDAp OwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCSpyYnVmKysgPSBHRlhfT1BfUElQRV9D T05UUk9MKDYpOworCQkqcmJ1ZisrID0gMDsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysgPSAw OworCQkqcmJ1ZisrID0gMDsKKwkJKnJidWYrKyA9IDA7CiAJfQogCiAJaWYgKGRjX2ZsdXNoX3dh KSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9EQ19GTFVTSF9FTkFCTEUpOwotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJ CSpyYnVmKysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDYpOworCQkqcmJ1ZisrID0gUElQRV9DT05U Uk9MX0RDX0ZMVVNIX0VOQUJMRTsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysgPSAwOworCQkq cmJ1ZisrID0gMDsKKwkJKnJidWYrKyA9IDA7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFncyk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7CisJKnJidWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJKnJidWYrKyA9 IGZsYWdzOworCSpyYnVmKysgPSBzY3JhdGNoX2FkZHI7CisJKnJidWYrKyA9IDA7CisJKnJidWYr KyA9IDA7CisJKnJidWYrKyA9IDA7CiAKIAlpZiAoZGNfZmx1c2hfd2EpIHsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDAp OwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAw KTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqcmJ1ZisrID0gR0ZYX09QX1BJUEVf Q09OVFJPTCg2KTsKKwkJKnJidWYrKyA9IFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKKwkJKnJidWYr KyA9IDA7CisJCSpyYnVmKysgPSAwOworCQkqcmJ1ZisrID0gMDsKKwkJKnJidWYrKyA9IDA7CiAJ fQogCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCWludGVsX3JpbmdfYWR2YW5jZShyZXF1 ZXN0LT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTU4Nyw0MyArMTU5MiwzNiBAQCBzdGF0 aWMgdm9pZCBieHRfYV9zZXFub19iYXJyaWVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAlpbnRlbF9mbHVzaF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19JTkRFWCk7 CiB9CiAKLS8qCi0gKiBSZXNlcnZlIHNwYWNlIGZvciAyIE5PT1BzIGF0IHRoZSBlbmQgb2YgZWFj aCByZXF1ZXN0IHRvIGJlCi0gKiB1c2VkIGFzIGEgd29ya2Fyb3VuZCBmb3Igbm90IGJlaW5nIGFs bG93ZWQgdG8gZG8gbGl0ZQotICogcmVzdG9yZSB3aXRoIEhFQUQ9PVRBSUwgKFdhSWRsZUxpdGVS ZXN0b3JlKS4KLSAqLwotI2RlZmluZSBXQV9UQUlMX0RXT1JEUyAyCi0KIHN0YXRpYyBpbnQgZ2Vu OF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewot CXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKIAlpbnQgcmV0OworCXUz MiAqcmJ1ZjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNiArIFdBX1RBSUxf RFdPUkRTKTsKLQlpZiAocmV0KQorCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNiAr IFdBX1RBSUxfRFdPUkRTLCAmcmJ1Zik7CisJaWYgKHVubGlrZWx5KHJldCkpCiAJCXJldHVybiBy ZXQ7CiAKIAkvKiB3L2E6IGJpdCA1IG5lZWRzIHRvIGJlIHplcm8gZm9yIE1JX0ZMVVNIX0RXIGFk ZHJlc3MuICovCiAJQlVJTERfQlVHX09OKEk5MTVfR0VNX0hXU19JTkRFWF9BRERSICYgKDEgPDwg NSkpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIChNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxV U0hfRFdfT1BfU1RPUkVEVyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlpbnRlbF9od3Nf c2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpIHwKLQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVx dWVzdC0+ZmVuY2Uuc2Vxbm8pOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVS UlVQVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCXJldHVybiBpbnRlbF9s b2dpY2FsX3JpbmdfYWR2YW5jZShyZXF1ZXN0KTsKKwkqcmJ1ZisrID0gKE1JX0ZMVVNIX0RXICsg MSkgfCBNSV9GTFVTSF9EV19PUF9TVE9SRURXOworCSpyYnVmKysgPSAgaW50ZWxfaHdzX3NlcW5v X2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSB8CisJCSAgIE1JX0ZMVVNIX0RXX1VTRV9HVFQ7CisJ KnJidWYrKyA9IDA7CisJKnJidWYrKyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5vOworCSpyYnVmKysg PSBNSV9VU0VSX0lOVEVSUlVQVDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCXJldHVybiBpbnRl bF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyZXF1ZXN0LCByYnVmKTsKIH0KIAogc3RhdGljIGludCBn ZW44X2VtaXRfcmVxdWVzdF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKIAlpbnQg cmV0OworCXUzMiAqcmJ1ZjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgOCAr IFdBX1RBSUxfRFdPUkRTKTsKLQlpZiAocmV0KQorCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx dWVzdCwgOCArIFdBX1RBSUxfRFdPUkRTLCAmcmJ1Zik7CisJaWYgKHVubGlrZWx5KHJldCkpCiAJ CXJldHVybiByZXQ7CiAKIAkvKiBXZSdyZSB1c2luZyBxd29yZCB3cml0ZSwgc2Vxbm8gc2hvdWxk IGJlIGFsaWduZWQgdG8gOCBieXRlcy4gKi8KQEAgLTE2MzMsMTkgKzE2MzEsMTggQEAgc3RhdGlj IGludCBnZW44X2VtaXRfcmVxdWVzdF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0KQogCSAqIG5lZWQgYSBwcmlvciBDU19TVEFMTCwgd2hpY2ggaXMgZW1pdHRlZCBi eSB0aGUgZmx1c2gKIAkgKiBmb2xsb3dpbmcgdGhlIGJhdGNoLgogCSAqLwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywKLQkJCShQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAotCQkJIFBJUEVfQ09OVFJPTF9D U19TVEFMTCB8Ci0JCQkgUElQRV9DT05UUk9MX1FXX1dSSVRFKSk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSkpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaTkxNV9nZW1fcmVx dWVzdF9nZXRfc2Vxbm8ocmVxdWVzdCkpOworCSpyYnVmKysgPSBHRlhfT1BfUElQRV9DT05UUk9M KDYpOworCSpyYnVmKysgPSBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfCBQSVBFX0NPTlRS T0xfQ1NfU1RBTEwgfAorCQkgIFBJUEVfQ09OVFJPTF9RV19XUklURTsKKwkqcmJ1ZisrID0gaW50 ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKTsKKwkqcmJ1ZisrID0gMDsKKwkq cmJ1ZisrID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxdWVzdCk7CiAJLyogV2UncmUg dGhyYXNoaW5nIG9uZSBkd29yZCBvZiBIV1MuICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDAp OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOwotCXJldHVybiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5j ZShyZXF1ZXN0KTsKKwkqcmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gTUlfVVNFUl9JTlRFUlJVUFQ7 CisJKnJidWYrKyA9IE1JX05PT1A7CisKKwlyZXR1cm4gaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFu Y2UocmVxdWVzdCwgcmJ1Zik7CiB9CiAKIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3Jjc19jb250ZXh0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9j cy5jCmluZGV4IDgwYmI5MjQ3Y2U2Ni4uNzA4MGQzMjI1ZjZiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbW9jcy5jCkBAIC0yNzYsMjMgKzI3NiwyMyBAQCBpbnQgaW50ZWxfbW9jc19pbml0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50IGVtaXRfbW9jc19j b250cm9sX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSAgIGNv bnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBlbmdpbmUgPSBy ZXEtPmVuZ2luZS0+aWQ7CiAJdW5zaWduZWQgaW50IGluZGV4OworCXUzMiAqcmJ1ZjsKIAlpbnQg cmV0OwogCiAJaWYgKFdBUk5fT04odGFibGUtPnNpemUgPiBHRU45X05VTV9NT0NTX0VOVFJJRVMp KQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyICsg MiAqIEdFTjlfTlVNX01PQ1NfRU5UUklFUyk7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDIgKyAyICogR0VOOV9OVU1fTU9DU19FTlRSSUVTLCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShH RU45X05VTV9NT0NTX0VOVFJJRVMpKTsKKwkqcmJ1ZisrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0o R0VOOV9OVU1fTU9DU19FTlRSSUVTKTsKIAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHRhYmxl LT5zaXplOyBpbmRleCsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbW9jc19yZWdp c3RlcihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB0YWJsZS0+dGFi bGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUpOworCQkqcmJ1ZisrID0gbW9jc19yZWdpc3Rlcihlbmdp bmUsIGluZGV4KS5yZWc7CisJCSpyYnVmKysgPSB0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xf dmFsdWU7CiAJfQogCiAJLyoKQEAgLTMwNCwxMiArMzA0LDEzIEBAIHN0YXRpYyBpbnQgZW1pdF9t b2NzX2NvbnRyb2xfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJICog dGhhdCB2YWx1ZSB0byBhbGwgdGhlIHVzZWQgZW50cmllcy4KIAkgKi8KIAlmb3IgKDsgaW5kZXgg PCBHRU45X05VTV9NT0NTX0VOVFJJRVM7IGluZGV4KyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3Jl ZyhyaW5nLCBtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKLQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIHRhYmxlLT50YWJsZVswXS5jb250cm9sX3ZhbHVlKTsKKwkJKnJidWYrKyA9IG1vY3Nf cmVnaXN0ZXIoZW5naW5lLCBpbmRleCkucmVnOworCQkqcmJ1ZisrID0gdGFibGUtPnRhYmxlWzBd LmNvbnRyb2xfdmFsdWU7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwot CWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVs X3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zMzYsMjkgKzMz NywyOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsM2NjX2NvbWJpbmUoY29uc3Qgc3RydWN0IGRybV9p OTE1X21vY3NfdGFibGUgKnRhYmxlLAogc3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQljb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfbW9jc190YWJsZSAqdGFibGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEt PnJpbmc7CisJdTMyICpyYnVmOwogCXVuc2lnbmVkIGludCBpOwogCWludCByZXQ7CiAKIAlpZiAo V0FSTl9PTih0YWJsZS0+c2l6ZSA+IEdFTjlfTlVNX01PQ1NfRU5UUklFUykpCiAJCXJldHVybiAt RU5PREVWOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIgKyBHRU45X05VTV9NT0NT X0VOVFJJRVMpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyICsgR0VOOV9OVU1fTU9D U19FTlRSSUVTLCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3Jp bmdfZW1pdChyaW5nLAotCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRS SUVTIC8gMikpOworCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NT X0VOVFJJRVMgLyAyKTsKIAogCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+c2l6ZS8yOyBpKyspIHsK LQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU45X0xOQ0ZDTU9DUyhpKSk7Ci0JCWludGVs X3JpbmdfZW1pdChyaW5nLCBsM2NjX2NvbWJpbmUodGFibGUsIDIqaSwgMippKzEpKTsKKwkJKnJi dWYrKyA9IEdFTjlfTE5DRkNNT0NTKGkpLnJlZzsKKwkJKnJidWYrKyA9IGwzY2NfY29tYmluZSh0 YWJsZSwgMippLCAyKmkrMSk7CiAJfQogCiAJaWYgKHRhYmxlLT5zaXplICYgMHgwMSkgewogCQkv KiBPZGQgdGFibGUgc2l6ZSAtIDEgbGVmdCBvdmVyICovCi0JCWludGVsX3JpbmdfZW1pdF9yZWco cmluZywgR0VOOV9MTkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbDNjY19j b21iaW5lKHRhYmxlLCAyKmksIDApKTsKKwkJKnJidWYrKyA9IEdFTjlfTE5DRkNNT0NTKGkpLnJl ZzsKKwkJKnJidWYrKyA9IGwzY2NfY29tYmluZSh0YWJsZSwgMippLCAwKTsKIAkJaSsrOwogCX0K IApAQCAtMzY4LDEyICszNjgsMTMgQEAgc3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiB0aGV5IGFyZSByZXNlcnZlZCBi eSB0aGUgaGFyZHdhcmUuCiAJICovCiAJZm9yICg7IGkgPCBHRU45X05VTV9NT0NTX0VOVFJJRVMg LyAyOyBpKyspIHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU45X0xOQ0ZDTU9DUyhp KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBsM2NjX2NvbWJpbmUodGFibGUsIDAsIDApKTsK KwkJKnJidWYrKyA9IEdFTjlfTE5DRkNNT0NTKGkpLnJlZzsKKwkJKnJidWYrKyA9IGwzY2NfY29t YmluZSh0YWJsZSwgMCwgMCk7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1Ap OwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWlu dGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vdmVybGF5LmMKaW5kZXggYTI0YmM4Yzc4ODlmLi5jZjQ5ZTU4NTVkZjcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0 aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZzsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAogCVdBUk5fT04ob3ZlcmxheS0+YWN0aXZlKTsK QEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGlu dGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJaWYgKElTX0VSUihyZXEpKQogCQlyZXR1cm4gUFRSX0VS UihyZXEpOwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0LCAmcmJ1Zik7CiAJaWYgKHJldCkgewogCQlpOTE1X2FkZF9yZXF1 ZXN0X25vX2ZsdXNoKHJlcSk7CiAJCXJldHVybiByZXQ7CkBAIC0yNjEsMTIgKzI2MSwxMiBAQCBz dGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkp CiAKIAlvdmVybGF5LT5hY3RpdmUgPSB0cnVlOwogCi0JcmluZyA9IHJlcS0+cmluZzsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PTik7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIG92ZXJsYXktPmZsaXBfYWRkciB8IE9GQ19VUERBVEUpOwotCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJM QVlfRkxJUCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9P TjsKKwkqcmJ1ZisrID0gb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURTsKKwkqcmJ1Zisr ID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CisJKnJidWYr KyA9IE1JX05PT1A7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVy biBpbnRlbF9vdmVybGF5X2RvX3dhaXRfcmVxdWVzdChvdmVybGF5LCByZXEsIE5VTEwpOwogfQpA QCAtMjc3LDkgKzI3Nyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1 Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBvdmVybGF5LT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwogCXUzMiBmbGlwX2FkZHIgPSBvdmVybGF5 LT5mbGlwX2FkZHI7Ci0JdTMyIHRtcDsKKwl1MzIgKnJidWYsIHRtcDsKIAlpbnQgcmV0OwogCiAJ V0FSTl9PTighb3ZlcmxheS0+YWN0aXZlKTsKQEAgLTI5NiwxNiArMjk1LDE2IEBAIHN0YXRpYyBp bnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwK IAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKLQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgMik7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIsICZy YnVmKTsKIAlpZiAocmV0KSB7CiAJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKIAkJ cmV0dXJuIHJldDsKIAl9CiAKLQlyaW5nID0gcmVxLT5yaW5nOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgZmxpcF9hZGRyKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJi dWYrKyA9IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUU7CisJKnJidWYrKyA9 IGZsaXBfYWRkcjsKKworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJaW50ZWxf b3ZlcmxheV9zdWJtaXRfcmVxdWVzdChvdmVybGF5LCByZXEsIE5VTEwpOwogCkBAIC0zNTUsOCAr MzU0LDggQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3Zlcmxh eSAqb3ZlcmxheSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvdmVy bGF5LT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwotCXN0cnVjdCBp bnRlbF9yaW5nICpyaW5nOwogCXUzMiBmbGlwX2FkZHIgPSBvdmVybGF5LT5mbGlwX2FkZHI7CisJ dTMyICpyYnVmOwogCWludCByZXQ7CiAKIAlXQVJOX09OKCFvdmVybGF5LT5hY3RpdmUpOwpAQCAt MzcxLDMxICszNzAsMzAgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50 ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJS KHJlcSk7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDYsICZyYnVmKTsKIAlpZiAocmV0KSB7CiAJCWk5MTVfYWRkX3JlcXVl c3Rfbm9fZmx1c2gocmVxKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQlyaW5nID0gcmVxLT5yaW5n OwogCS8qIHdhaXQgZm9yIG92ZXJsYXkgdG8gZ28gaWRsZSAqLwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgZmxpcF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9G T1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOworCSpyYnVmKysgPSBNSV9PVkVS TEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFOworCSpyYnVmKysgPSBmbGlwX2FkZHI7CisJ KnJidWYrKyA9IE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQOwog CS8qIHR1cm4gb3ZlcmxheSBvZmYgKi8KIAlpZiAoSVNfSTgzMChkZXZfcHJpdikpIHsKIAkJLyog V29ya2Fyb3VuZDogRG9uJ3QgZGlzYWJsZSB0aGUgb3ZlcmxheSBmdWxseSwgc2luY2Ugb3RoZXJ3 aXNlCiAJCSAqIGl0IGRpZXMgb24gdGhlIG5leHQgT1ZFUkxBWV9PTiBjbWQuICovCi0JCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05P T1ApOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCSpyYnVmKysgPSBNSV9O T09QOworCQkqcmJ1ZisrID0gTUlfTk9PUDsKKwkJKnJidWYrKyA9IE1JX05PT1A7CiAJfSBlbHNl IHsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlf T0ZGKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7Ci0JCWludGVsX3Jpbmdf ZW1pdChyaW5nLAotCQkJCU1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9G TElQKTsKKwkJKnJidWYrKyA9IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZGOworCQkq cmJ1ZisrID0gZmxpcF9hZGRyOworCQkqcmJ1ZisrID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9X QUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwor CWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJuIGludGVsX292ZXJsYXlf ZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwKIAkJCQkJICAgICBpbnRlbF9vdmVybGF5X29m Zl90YWlsKTsKQEAgLTQyOSwyMyArNDI3LDIyIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9y ZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJaWYgKEk5MTVf UkVBRChJU1IpICYgSTkxNV9PVkVSTEFZX1BMQU5FX0ZMSVBfUEVORElOR19JTlRFUlJVUFQpIHsK IAkJLyogc3luY2hyb25vdXMgc2xvd3BhdGggKi8KIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXE7Ci0JCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCQl1MzIgKnJidWY7CiAKIAkJ cmVxID0gYWxsb2NfcmVxdWVzdChvdmVybGF5KTsKIAkJaWYgKElTX0VSUihyZXEpKQogCQkJcmV0 dXJuIFBUUl9FUlIocmVxKTsKIAotCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CisJ CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyLCAmcmJ1Zik7CiAJCWlmIChyZXQpIHsKIAkJ CWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKIAkJCXJldHVybiByZXQ7CiAJCX0KIAot CQlyaW5nID0gcmVxLT5yaW5nOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlNSV9XQUlU X0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Ci0JCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCQkqcmJ1Zisr ID0gTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVA7CisJCSpyYnVm KysgPSBNSV9OT09QOworCisJCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJCXJl dCA9IGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwKIAkJCQkJCSAg ICBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZF90YWlsKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCBmZDhmY2M2ZWM5NzAuLmQ3ODkyNTM4ZDEzMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtNjEsOCArNjEsNyBAQCB2 b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQogc3Rh dGljIGludAogZ2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJp bmc7Ci0JdTMyIGNtZDsKKwl1MzIgY21kLCAqcmJ1ZjsKIAlpbnQgcmV0OwogCiAJY21kID0gTUlf RkxVU0g7CkBAIC03MCwxMyArNjksMTQgQEAgZ2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiAJaWYgKG1vZGUgJiBFTUlUX0lO VkFMSURBVEUpCiAJCWNtZCB8PSBNSV9SRUFEX0ZMVVNIOwogCi0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDIpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyLCAmcmJ1Zik7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu Zyk7CisJKnJidWYrKyA9IGNtZDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3Jpbmdf YWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC04NCw4ICs4NCw3IEBAIGdl bjJfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUz MiBtb2RlKQogc3RhdGljIGludAogZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJp bmcgPSByZXEtPnJpbmc7Ci0JdTMyIGNtZDsKKwl1MzIgY21kLCAqcmJ1ZjsKIAlpbnQgcmV0Owog CiAJLyoKQEAgLTEyMywxMyArMTIyLDE0IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogCQkJY21kIHw9IE1JX0lOVkFM SURBVEVfSVNQOwogCX0KIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMiwgJnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBjbWQ7 CisJKnJidWYrKyA9IE1JX05PT1A7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsK IAogCXJldHVybiAwOwogfQpAQCAtMTc0LDM1ICsxNzQsMzcgQEAgZ2VuNF9yZW5kZXJfcmluZ19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiBzdGF0aWMg aW50CiBpbnRlbF9lbWl0X3Bvc3Rfc3luY19ub256ZXJvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5n OwogCXUzMiBzY3JhdGNoX2FkZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5z Y3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7CisJdTMyICpyYnVmOwogCWludCByZXQ7CiAK LQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDYsICZyYnVmKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNSkpOwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAotCQkJUElQRV9DT05UUk9MX1NUQUxMX0FUX1ND T1JFQk9BUkQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIgfCBQSVBFX0NP TlRST0xfR0xPQkFMX0dUVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiBsb3cgZHdv cmQgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIGhpZ2ggZHdvcmQgKi8KLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwor CSpyYnVmKysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDUpOworCSpyYnVmKysgPSBQSVBFX0NPTlRS T0xfQ1NfU1RBTEwgfAorCQkgIFBJUEVfQ09OVFJPTF9TVEFMTF9BVF9TQ09SRUJPQVJEOworCSpy YnVmKysgPSBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKKwkqcmJ1Zisr ID0gMDsgLyogbG93IGR3b3JkICovCisJKnJidWYrKyA9IDA7IC8qIGhpZ2ggZHdvcmQgKi8KKwkq cmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCA2LCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgUElQRV9DT05UUk9MX1FXX1dSSVRFKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRj aF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gR0ZYX09Q X1BJUEVfQ09OVFJPTCg1KTsKKwkqcmJ1ZisrID0gUElQRV9DT05UUk9MX1FXX1dSSVRFOworCSpy YnVmKysgPSBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKKwkqcmJ1Zisr ID0gMDsKKwkqcmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3Jpbmdf YWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMTAsMTAgKzIxMiw5IEBA IGludGVsX2VtaXRfcG9zdF9zeW5jX25vbnplcm9fZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCiBzdGF0aWMgaW50CiBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1MzIgc2NyYXRjaF9hZGRyID0KIAkJaTkxNV9nZ3R0X29m ZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwotCXUzMiBm bGFncyA9IDA7CisJdTMyICpyYnVmLCBmbGFncyA9IDA7CiAJaW50IHJldDsKIAogCS8qIEZvcmNl IFNOQiB3b3JrYXJvdW5kcyBmb3IgUElQRV9DT05UUk9MIGZsdXNoZXMgKi8KQEAgLTI0NywxNSAr MjQ4LDE2IEBAIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBtb2RlKQogCQlmbGFncyB8PSBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfCBQ SVBFX0NPTlRST0xfQ1NfU1RBTEw7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDQpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0LCAmcmJ1Zik7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05U Uk9MKDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxhZ3MpOwotCWludGVsX3JpbmdfZW1p dChyaW5nLCBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Ci0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1Zisr ID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg0KTsKKwkqcmJ1ZisrID0gZmxhZ3M7CisJKnJidWYrKyA9 IHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOworCSpyYnVmKysgPSAwOwor CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI2 MywyMCArMjY1LDIwIEBAIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogc3RhdGljIGludAogZ2VuN19yZW5kZXJfcmluZ19j c19zdGFsbF93YShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAot CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNCwgJnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJp bmcsCi0JCQlQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAotCQkJUElQRV9DT05UUk9MX1NUQUxMX0FU X1NDT1JFQk9BUkQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVmKysgPSBHRlhf T1BfUElQRV9DT05UUk9MKDQpOworCSpyYnVmKysgPSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAor CQkgIFBJUEVfQ09OVFJPTF9TVEFMTF9BVF9TQ09SRUJPQVJEOworCSpyYnVmKysgPSAwOworCSpy YnVmKysgPSAwOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAlyZXR1cm4g MDsKIH0KQEAgLTI4NCwxMCArMjg2LDkgQEAgZ2VuN19yZW5kZXJfcmluZ19jc19zdGFsbF93YShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVy X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQog ewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2Fk ZHIgPQogCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNI RUxJTkVfQllURVM7Ci0JdTMyIGZsYWdzID0gMDsKKwl1MzIgKnJidWYsIGZsYWdzID0gMDsKIAlp bnQgcmV0OwogCiAJLyoKQEAgLTMzMiwxNSArMzMzLDE2IEBAIGdlbjdfcmVuZGVyX3JpbmdfZmx1 c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogCQlnZW43X3Jl bmRlcl9yaW5nX2NzX3N0YWxsX3dhKHJlcSk7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDQpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0LCAmcmJ1Zik7CiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQ RV9DT05UUk9MKDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxhZ3MpOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsK LQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRS T0woNCk7CisJKnJidWYrKyA9IGZsYWdzOworCSpyYnVmKysgPSBzY3JhdGNoX2FkZHI7CisJKnJi dWYrKyA9IDA7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAw OwogfQpAQCAtMzQ5LDIwICszNTEsMjEgQEAgc3RhdGljIGludAogZ2VuOF9lbWl0X3BpcGVfY29u dHJvbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgICAgIHUzMiBmbGFn cywgdTMyIHNjcmF0Y2hfYWRkcikKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+ cmluZzsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCA2KTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNiwgJnJidWYpOwogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVf Q09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdzKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgc2NyYXRjaF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlp bnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0wo Nik7CisJKnJidWYrKyA9IGZsYWdzOworCSpyYnVmKysgPSBzY3JhdGNoX2FkZHI7CisJKnJidWYr KyA9IDA7CisJKnJidWYrKyA9IDA7CisJKnJidWYrKyA9IDA7CisKKwlpbnRlbF9yaW5nX2FkdmFu Y2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtNjE1LDggKzYxOCw4IEBAIG91dDoK IAogc3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJp bmc7CiAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcmVxLT5pOTE1LT53b3JrYXJvdW5k czsKKwl1MzIgKnJidWY7CiAJaW50IHJldCwgaTsKIAogCWlmICh3LT5jb3VudCA9PSAwKQpAQCAt NjI2LDE4ICs2MjksMTggQEAgc3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAody0+Y291bnQgKiAyICsgMikpOwor CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCB3LT5jb3VudCAqIDIgKyAyLCAmcmJ1Zik7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FE X1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOworCSpyYnVmKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lN TSh3LT5jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKyspIHsKLQkJaW50ZWxf cmluZ19lbWl0X3JlZyhyaW5nLCB3LT5yZWdbaV0uYWRkcik7Ci0JCWludGVsX3JpbmdfZW1pdChy aW5nLCB3LT5yZWdbaV0udmFsdWUpOworCQkqcmJ1ZisrID0gdy0+cmVnW2ldLmFkZHIucmVnOwor CQkqcmJ1ZisrID0gdy0+cmVnW2ldLnZhbHVlOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTk9PUCk7CisJKnJidWYrKyA9IE1JX05PT1A7CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu Zyk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAlyZXQgPSByZXEtPmVuZ2lu ZS0+ZW1pdF9mbHVzaChyZXEsIEVNSVRfQkFSUklFUik7CiAJaWYgKHJldCkKQEAgLTEyNjMsMTQg KzEyNjYsMTQgQEAgc3RhdGljIHZvaWQgcmVuZGVyX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBpbnQgZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxLT5yaW5nOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkx NTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXI7CiAJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7CisJdTMyICpyYnVmOwogCWludCByZXQsIG51bV9yaW5nczsKIAogCW51bV9yaW5ncyA9 IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIChudW1fcmluZ3MtMSkgKiA4KTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg KG51bV9yaW5ncy0xKSAqIDgsICZyYnVmKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBA IC0xMjc5LDM1ICsxMjgyLDMzIEBAIHN0YXRpYyBpbnQgZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCQlpZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhP UkVfU1lOQ19JTlZBTElEKQogCQkJY29udGludWU7CiAKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAotCQkJCVBJUEVfQ09OVFJPTF9RV19XUklURSB8 Ci0JCQkJUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxv d2VyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJf MzJfYml0cyhndHRfb2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZlbmNl LnNlcW5vKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQo cmluZywKLQkJCQlNSV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJCQlNSV9TRU1BUEhPUkVfVEFSR0VU KHdhaXRlci0+aHdfaWQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqcmJ1Zisr ID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkJKnJidWYrKyA9IFBJUEVfQ09OVFJPTF9HTE9C QUxfR1RUX0lWQiB8CisJCQkgIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CisJCQkgIFBJUEVfQ09O VFJPTF9DU19TVEFMTDsKKwkJKnJidWYrKyA9IGxvd2VyXzMyX2JpdHMoZ3R0X29mZnNldCk7CisJ CSpyYnVmKysgPSB1cHBlcl8zMl9iaXRzKGd0dF9vZmZzZXQpOworCQkqcmJ1ZisrID0gcmVxLT5m ZW5jZS5zZXFubzsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysgPSBNSV9TRU1BUEhPUkVfU0lH TkFMIHwKKwkJCSAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKTsKKwkJKnJidWYr KyA9IDA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwlpbnRlbF9yaW5nX2FkdmFu Y2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGdlbjhfeGNzX3Np Z25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSByZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOworCXUzMiAqcmJ1ZjsKIAlpbnQgcmV0LCBudW1fcmluZ3M7CiAK IAludW1fcmluZ3MgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3JpbmdzOwotCXJldCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCAobnVtX3JpbmdzLTEpICogNik7CisJcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIChudW1fcmluZ3MtMSkgKiA2LCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIApAQCAtMTMxNiwzMiArMTMxNywyOCBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3Np Z25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJaWYgKGd0dF9vZmZzZXQg PT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCkKIAkJCWNvbnRpbnVlOwogCi0JCWludGVsX3Jp bmdfZW1pdChyaW5nLAotCQkJCShNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RP UkVEVyk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCWxvd2VyXzMyX2JpdHMoZ3R0X29m ZnNldCkgfAotCQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOwotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgdXBwZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBy ZXEtPmZlbmNlLnNlcW5vKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJTUlfU0VNQVBI T1JFX1NJR05BTCB8Ci0JCQkJTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKnJidWYrKyA9IChNSV9GTFVTSF9EVyArIDEp IHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVzsKKwkJKnJidWYrKyA9IGxvd2VyXzMyX2JpdHMoZ3R0 X29mZnNldCkgfCBNSV9GTFVTSF9EV19VU0VfR1RUOworCQkqcmJ1ZisrID0gdXBwZXJfMzJfYml0 cyhndHRfb2Zmc2V0KTsKKwkJKnJidWYrKyA9IHJlcS0+ZmVuY2Uuc2Vxbm87CisJCSpyYnVmKysg PSBNSV9TRU1BUEhPUkVfU0lHTkFMIHwKKwkJCSAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXIt Pmh3X2lkKTsKKwkJKnJidWYrKyA9IDA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsK KwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0 aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewot CXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7CisJdTMyICpyYnVmOwogCWludCByZXQsIG51bV9yaW5nczsKIAogCW51bV9yaW5ncyA9 IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIHJvdW5kX3VwKChudW1fcmluZ3MtMSkgKiAzLCAyKSk7CisJcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIHJvdW5kX3VwKChudW1fcmluZ3MtMSkgKiAzLCAyKSwgJnJidWYpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTEzNTMsMTYgKzEzNTAsMTcgQEAgc3RhdGljIGlu dCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAogCQltYm94 X3JlZyA9IHJlcS0+ZW5naW5lLT5zZW1hcGhvcmUubWJveC5zaWduYWxbZW5naW5lLT5od19pZF07 CiAJCWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKG1ib3hfcmVnKSkgewotCQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQkJCWludGVsX3JpbmdfZW1pdF9y ZWcocmluZywgbWJveF9yZWcpOwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+ZmVuY2Uu c2Vxbm8pOworCQkJKnJidWYrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOworCQkJKnJidWYr KyA9IG1ib3hfcmVnLnJlZzsKKwkJCSpyYnVmKysgPSByZXEtPmZlbmNlLnNlcW5vOwogCQl9CiAJ fQogCiAJLyogSWYgbnVtX2R3b3JkcyB3YXMgcm91bmRlZCwgbWFrZSBzdXJlIHRoZSB0YWlsIHBv aW50ZXIgaXMgY29ycmVjdCAqLwogCWlmIChudW1fcmluZ3MgJSAyID09IDApCi0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJCSpy YnVmKysgPSBNSV9OT09QOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTEzNzgsMTYgKzEzNzYsMTggQEAgc3RhdGljIHZvaWQgaTl4eF9zdWJt aXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiBzdGF0aWMg aW50IGk5eHhfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQog ewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOworCXUzMiAqcmJ1ZjsKIAlp bnQgcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0LCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9EV09SRF9JTkRFWCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9T SElGVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+ZmVuY2Uuc2Vxbm8pOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7CisJKnJidWYrKyA9IE1JX1NUT1JF X0RXT1JEX0lOREVYOworCSpyYnVmKysgPSBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVf RFdPUkRfSU5ERVhfU0hJRlQ7CisJKnJidWYrKyA9IHJlcS0+ZmVuY2Uuc2Vxbm87CisJKnJidWYr KyA9IE1JX1VTRVJfSU5URVJSVVBUOworCiAJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJ cmVxLT50YWlsID0gcmluZy0+dGFpbDsKQEAgLTE0MTgsNiArMTQxOCw3IEBAIHN0YXRpYyBpbnQg Z2VuOF9yZW5kZXJfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwogCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOworCXUzMiAqcmJ1ZjsKIAlpbnQgcmV0 OwogCiAJaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkgewpAQCAtMTQyNiwyMSArMTQyNywy MiBAQCBzdGF0aWMgaW50IGdlbjhfcmVuZGVyX2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIAkJCXJldHVybiByZXQ7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDgpOworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA4LCAmcmJ1Zik7 CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhf T1BfUElQRV9DT05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgKFBJUEVfQ09OVFJP TF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkgICAgICAgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJ CSAgICAgICBQSVBFX0NPTlRST0xfUVdfV1JJVEUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg aW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhy ZXEpKTsKKwkqcmJ1ZisrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkqcmJ1ZisrID0gKFBJ UEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8CisJCSAgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwK KwkJICBQSVBFX0NPTlRST0xfUVdfV1JJVEUpOworCSpyYnVmKysgPSBpbnRlbF9od3Nfc2Vxbm9f YWRkcmVzcyhlbmdpbmUpOworCSpyYnVmKysgPSAwOworCSpyYnVmKysgPSBpOTE1X2dlbV9yZXF1 ZXN0X2dldF9zZXFubyhyZXEpOwogCS8qIFdlJ3JlIHRocmFzaGluZyBvbmUgZHdvcmQgb2YgSFdT LiAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfVVNFUl9JTlRFUlJVUFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkq cmJ1ZisrID0gMDsKKwkqcmJ1ZisrID0gTUlfVVNFUl9JTlRFUlJVUFQ7CisJKnJidWYrKyA9IE1J X05PT1A7CisKIAlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXEtPnRhaWwgPSByaW5n LT50YWlsOwpAQCAtMTQ2MCwyNCArMTQ2MiwyNCBAQCBzdGF0aWMgaW50CiBnZW44X3Jpbmdfc3lu Y190byhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJl cS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7 CiAJdTY0IG9mZnNldCA9IEdFTjhfV0FJVF9PRkZTRVQocmVxLT5lbmdpbmUsIHNpZ25hbC0+ZW5n aW5lLT5pZCk7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0OworCXUzMiAqcmJ1ZjsKIAlp bnQgcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOworCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmVxLCA0LCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfU0VNQVBIT1JFX1dBSVQgfAotCQkJTUlfU0VN QVBIT1JFX0dMT0JBTF9HVFQgfAotCQkJTUlfU0VNQVBIT1JFX1NBRF9HVEVfU0REKTsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgc2lnbmFsLT5mZW5jZS5zZXFubyk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVw cGVyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpyYnVm KysgPSBNSV9TRU1BUEhPUkVfV0FJVCB8CisJCSAgTUlfU0VNQVBIT1JFX0dMT0JBTF9HVFQgfAor CQkgIE1JX1NFTUFQSE9SRV9TQURfR1RFX1NERDsKKwkqcmJ1ZisrID0gc2lnbmFsLT5mZW5jZS5z ZXFubzsKKwkqcmJ1ZisrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpyYnVmKysgPSB1cHBl cl8zMl9iaXRzKG9mZnNldCk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAog CS8qIFdoZW4gdGhlICFSQ1MgZW5naW5lcyBpZGxlIHdhaXRpbmcgdXBvbiBhIHNlbWFwaG9yZSwg dGhleSBsb3NlIHRoZWlyCiAJICogcGFnZXRhYmxlcyBhbmQgd2UgbXVzdCByZWxvYWQgdGhlbSBi ZWZvcmUgZXhlY3V0aW5nIHRoZSBiYXRjaC4KQEAgLTE0OTQsMjggKzE0OTYsMjkgQEAgc3RhdGlj IGludAogZ2VuNl9yaW5nX3N5bmNfdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs CiAJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWwpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJdTMyIGR3MSA9IE1JX1NFTUFQSE9SRV9NQk9Y IHwKIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFSRSB8CiAJCSAgTUlfU0VNQVBIT1JFX1JFR0lTVEVS OwogCXUzMiB3YWl0X21ib3ggPSBzaWduYWwtPmVuZ2luZS0+c2VtYXBob3JlLm1ib3gud2FpdFty ZXEtPmVuZ2luZS0+aHdfaWRdOworCXUzMiAqcmJ1ZjsKIAlpbnQgcmV0OwogCiAJV0FSTl9PTih3 YWl0X21ib3ggPT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCk7CiAKLQlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgNCk7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQsICZyYnVm KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGR3 MSB8IHdhaXRfbWJveCk7CisJKnJidWYrKyA9IGR3MSB8IHdhaXRfbWJveDsKIAkvKiBUaHJvdWdo b3V0IGFsbCBvZiB0aGUgR0VNIGNvZGUsIHNlcW5vIHBhc3NlZCBpbXBsaWVzIG91ciBjdXJyZW50 CiAJICogc2Vxbm8gaXMgPj0gdGhlIGxhc3Qgc2Vxbm8gZXhlY3V0ZWQuIEhvd2V2ZXIgZm9yIGhh cmR3YXJlIHRoZQogCSAqIGNvbXBhcmlzb24gaXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuLgogCSAq LwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBzaWduYWwtPmZlbmNlLnNlcW5vIC0gMSk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK LQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisJKnJidWYrKyA9IHNpZ25hbC0+ZmVuY2Uuc2Vx bm8gLSAxOworCSpyYnVmKysgPSAwOworCSpyYnVmKysgPSBNSV9OT09QOworCisJaW50ZWxfcmlu Z19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE2MTYsMTYgKzE2MTks MTcgQEAgaTh4eF9pcnFfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBz dGF0aWMgaW50CiBic2RfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CisJ dTMyICpyYnVmOwogCWludCByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7 CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIsICZyYnVmKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0ZMVVNIKTsKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpy YnVmKysgPSBNSV9GTFVTSDsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKworCWludGVsX3JpbmdfYWR2 YW5jZShyZXEtPnJpbmcpOwogCXJldHVybiAwOwogfQogCkBAIC0xNjkxLDIwICsxNjk1LDIwIEBA IGk5NjVfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJ ICAgdTY0IG9mZnNldCwgdTMyIGxlbmd0aCwKIAkJICAgdW5zaWduZWQgaW50IGRpc3BhdGNoX2Zs YWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOworCXUzMiAqcmJ1 ZjsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOworCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyLCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwK LQkJCU1JX0JBVENIX0dUVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NF Q1VSRSA/Ci0JCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSkpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1Zisr ID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwKKwkJICBNSV9CQVRDSF9HVFQgfAorCQkgIChkaXNw YXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KKwkJICAwIDogTUlfQkFUQ0hfTk9O X1NFQ1VSRV9JOTY1KTsKKwkqcmJ1ZisrID0gb2Zmc2V0OworCisJaW50ZWxfcmluZ19hZHZhbmNl KHJlcS0+cmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE3MjAsMjYgKzE3MjQsMjggQEAgaTgz MF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogewogCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBjc19vZmZzZXQgPSBpOTE1 X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKTsKKwl1MzIgKnJidWY7CiAJaW50IHJl dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKwlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNiwgJnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAkvKiBF dmljdCB0aGUgaW52YWxpZCBQVEUgVExCcyAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBDT0xP Ul9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkEpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBCTFRf REVQVEhfMzIgfCBCTFRfUk9QX0NPTE9SX0NPUFkgfCA0MDk2KTsKLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgSTgzMF9UTEJfRU5UUklFUyA8PCAxNiB8IDQpOyAvKiBsb2FkIGVhY2ggcGFnZSAqLwot CWludGVsX3JpbmdfZW1pdChyaW5nLCBjc19vZmZzZXQpOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCAweGRlYWRiZWVmKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJKnJidWYr KyA9IENPTE9SX0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdCQTsKKwkqcmJ1ZisrID0gQkxUX0RFUFRI XzMyIHwgQkxUX1JPUF9DT0xPUl9DT1BZIHwgNDA5NjsKKwkqcmJ1ZisrID0gSTgzMF9UTEJfRU5U UklFUyA8PCAxNiB8IDQ7IC8qIGxvYWQgZWFjaCBwYWdlICovCisJKnJidWYrKyA9IGNzX29mZnNl dDsKKwkqcmJ1ZisrID0gMHhkZWFkYmVlZjsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKwogCWludGVs X3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCWlmICgoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BB VENIX1BJTk5FRCkgPT0gMCkgewogCQlpZiAobGVuID4gSTgzMF9CQVRDSF9MSU1JVCkKIAkJCXJl dHVybiAtRU5PU1BDOwogCi0JCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2ICsgMik7CisJ CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2ICsgMiwgJnJidWYpOwogCQlpZiAocmV0KQog CQkJcmV0dXJuIHJldDsKIApAQCAtMTc0NywyOSArMTc1MywzMCBAQCBpODMwX2VtaXRfYmJfc3Rh cnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAqIHN0YWJsZSBiYXRjaCBz Y3JhdGNoIGJvIGFyZWEgKHNvIHRoYXQgdGhlIENTIG5ldmVyCiAJCSAqIHN0dW1ibGVzIG92ZXIg aXRzIHRsYiBpbnZhbGlkYXRpb24gYnVnKSAuLi4KIAkJICovCi0JCWludGVsX3JpbmdfZW1pdChy aW5nLCBTUkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkEpOwotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywKLQkJCQlCTFRfREVQVEhfMzIgfCBCTFRfUk9QX1NSQ19DT1BZIHwgNDA5Nik7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCBESVZfUk9VTkRfVVAobGVuLCA0MDk2KSA8PCAxNiB8IDQw OTYpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgY3Nfb2Zmc2V0KTsKLQkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIDQwOTYpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0KTsKLQotCQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfRkxVU0gpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTk9PUCk7CisJCSpyYnVmKysgPSBTUkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkE7 CisJCSpyYnVmKysgPSBCTFRfREVQVEhfMzIgfCBCTFRfUk9QX1NSQ19DT1BZIHwgNDA5NjsKKwkJ KnJidWYrKyA9IERJVl9ST1VORF9VUChsZW4sIDQwOTYpIDw8IDE2IHwgNDA5NjsKKwkJKnJidWYr KyA9IGNzX29mZnNldDsKKwkJKnJidWYrKyA9IDQwOTY7CisJCSpyYnVmKysgPSBvZmZzZXQ7CisK KwkJKnJidWYrKyA9IE1JX0ZMVVNIOworCQkqcmJ1ZisrID0gTUlfTk9PUDsKKwogCQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CiAKIAkJLyogLi4uIGFuZCBleGVjdXRlIGl0LiAqLwogCQlvZmZz ZXQgPSBjc19vZmZzZXQ7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwor CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyLCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQg fCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0 Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkJCTAgOiBNSV9CQVRDSF9OT05f U0VDVVJFKSk7CisJKnJidWYrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dU VDsKKwkqcmJ1ZisrID0gb2Zmc2V0IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9T RUNVUkUgPworCQkgIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKTsKKwogCWludGVsX3JpbmdfYWR2 YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwpAQCAtMTc4MCwxNyArMTc4NywxOCBAQCBpOTE1X2Vt aXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBv ZmZzZXQsIHUzMiBsZW4sCiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKKwl1MzIgKnJidWY7CiAJaW50IHJl dDsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgMiwgJnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgTUlfQkFUQ0hfR1RUKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9E SVNQQVRDSF9TRUNVUkUgPwotCQkJCQkwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSkpOwotCWludGVs X3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwg TUlfQkFUQ0hfR1RUOworCSpyYnVmKysgPSBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1 X0RJU1BBVENIX1NFQ1VSRSA/CisJCSAgMCA6IE1JX0JBVENIX05PTl9TRUNVUkUpOworCisJaW50 ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIxODEsNyAr MjE4OSw3IEBAIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogCXJlcXVlc3QtPnJpbmcgPSByZXF1ZXN0LT5l bmdpbmUtPmJ1ZmZlcjsKIAotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgMCk7CisJ cmV0ID0gX19pbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDApOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKQEAgLTIyMzcsNyArMjI0NSw3IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3Jfc3BhY2Uo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBieXRlcykKIAlyZXR1cm4gMDsK IH0KIAotaW50IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIGludCBudW1fZHdvcmRzKQoraW50IF9faW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMpCiB7CiAJc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJaW50IHJlbWFpbl9hY3R1YWwgPSByaW5nLT5zaXplIC0g cmluZy0+dGFpbDsKQEAgLTIyOTUsMTggKzIzMDMsMTkgQEAgaW50IGludGVsX3JpbmdfY2FjaGVs aW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCXN0cnVjdCBpbnRl bF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCWludCBudW1fZHdvcmRzID0KIAkJKHJpbmctPnRh aWwgJiAoQ0FDSEVMSU5FX0JZVEVTIC0gMSkpIC8gc2l6ZW9mKHVpbnQzMl90KTsKKwl1MzIgKnJi dWY7CiAJaW50IHJldDsKIAogCWlmIChudW1fZHdvcmRzID09IDApCiAJCXJldHVybiAwOwogCiAJ bnVtX2R3b3JkcyA9IENBQ0hFTElORV9CWVRFUyAvIHNpemVvZih1aW50MzJfdCkgLSBudW1fZHdv cmRzOwotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBudW1fZHdvcmRzKTsKKwlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgbnVtX2R3b3JkcywgJnJidWYpOwogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKIAl3aGlsZSAobnVtX2R3b3Jkcy0tKQotCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJCSpyYnVmKysgPSBNSV9OT09QOwogCiAJaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOwogCkBAIC0yMzUyLDExICsyMzYxLDEwIEBAIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3N1 Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogc3Rh dGljIGludCBnZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLCB1MzIgbW9kZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsK LQl1aW50MzJfdCBjbWQ7CisJdTMyIGNtZCwgKnJidWY7CiAJaW50IHJldDsKIAotCXJldCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCwg JnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIzODAsMTYgKzIzODgsMTgg QEAgc3RhdGljIGludCBnZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCB1MzIgbW9kZSkKIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJREFURSkKIAkJY21k IHw9IE1JX0lOVkFMSURBVEVfVExCIHwgTUlfSU5WQUxJREFURV9CU0Q7CiAKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgSTkxNV9HRU1fSFdTX1ND UkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCSpyYnVmKysgPSBjbWQ7CisJKnJi dWYrKyA9IEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RUOwog CWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KSB7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5n LCAwKTsgLyogdXBwZXIgYWRkciAqLwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHZh bHVlICovCisJCSpyYnVmKysgPSAwOyAvKiB1cHBlciBhZGRyICovCisJCSpyYnVmKysgPSAwOyAv KiB2YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJKnJidWYrKyA9IDA7CisJCSpyYnVmKysg PSBNSV9OT09QOwogCX0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisKKwlpbnRlbF9yaW5n X2FkdmFuY2UocmVxLT5yaW5nKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0yMzk4LDIzICsyNDA4 LDI0IEBAIGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAkJICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKIAkJICAgdW5zaWduZWQgaW50IGRpc3BhdGNo X2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCWJvb2wg cHBndHQgPSBVU0VTX1BQR1RUKHJlcS0+aTkxNSkgJiYKIAkJCSEoZGlzcGF0Y2hfZmxhZ3MgJiBJ OTE1X0RJU1BBVENIX1NFQ1VSRSk7CisJdTMyICpyYnVmOwogCWludCByZXQ7CiAKLQlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQs ICZyYnVmKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJLyogRklYTUUoQkRXKTogQWRk cmVzcyBzcGFjZSBhbmQgc2VjdXJpdHkgc2VsZWN0b3JzLiAqLwotCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOCB8IChwcGd0dDw8OCkgfAotCQkJKGRpc3Bh dGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/Ci0JCQkgTUlfQkFUQ0hfUkVTT1VSQ0VfU1RS RUFNRVIgOiAwKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMob2Zmc2V0 KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsK KwkqcmJ1ZisrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwKKwkJ ICAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJICBNSV9CQVRDSF9SRVNP VVJDRV9TVFJFQU1FUiA6IDApOworCSpyYnVmKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJ KnJidWYrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqcmJ1ZisrID0gTUlfTk9PUDsKKwor CWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNDI0 LDIyICsyNDM1LDIyIEBAIGhzd19lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAogCQkgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCSAgdW5zaWduZWQgaW50IGRp c3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwor CXUzMiAqcmJ1ZjsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIp OworCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyLCAmcmJ1Zik7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJTUlfQkFUQ0hfQlVGRkVS X1NUQVJUIHwKLQkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KLQkJ CSAwIDogTUlfQkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9IU1cpIHwKLQkJ CShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwotCQkJIE1JX0JBVENIX1JFU09V UkNFX1NUUkVBTUVSIDogMCkpOworCSpyYnVmKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAor CQkgIChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KKwkJICAwIDogTUlf QkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9IU1cpIHwKKwkJICAoZGlzcGF0 Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KKwkJICBNSV9CQVRDSF9SRVNPVVJDRV9TVFJF QU1FUiA6IDApOwogCS8qIGJpdDAtNyBpcyB0aGUgbGVuZ3RoIG9uIEdFTjYrICovCi0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIG9mZnNldCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCSpy YnVmKysgPSBvZmZzZXQ7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJl dHVybiAwOwogfQpAQCAtMjQ0OSwyMCArMjQ2MCwyMCBAQCBnZW42X2VtaXRfYmJfc3RhcnQoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgIHU2NCBvZmZzZXQsIHUzMiBsZW4s CiAJCSAgIHVuc2lnbmVkIGludCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcS0+cmluZzsKKwl1MzIgKnJidWY7CiAJaW50IHJldDsKIAotCXJldCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMiwg JnJidWYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmlu ZywKLQkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8Ci0JCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1 X0RJU1BBVENIX1NFQ1VSRSA/Ci0JCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSkpOwor CSpyYnVmKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAorCQkgIChkaXNwYXRjaF9mbGFncyAm IEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KKwkJICAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1 KTsKIAkvKiBiaXQwLTcgaXMgdGhlIGxlbmd0aCBvbiBHRU42KyAqLwotCWludGVsX3JpbmdfZW1p dChyaW5nLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKKwkqcmJ1ZisrID0g b2Zmc2V0OworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTI0NzEsMTEgKzI0ODIsMTAgQEAgZ2VuNl9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCiBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiB7Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JdWludDMyX3QgY21kOworCXUzMiBjbWQsICpyYnVm OwogCWludCByZXQ7CiAKLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CisJcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDQsICZyYnVmKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCkBAIC0yNDk4LDE3ICsyNTA4LDE3IEBAIHN0YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9kZSkKIAkgKi8KIAlpZiAobW9k ZSAmIEVNSVRfSU5WQUxJREFURSkKIAkJY21kIHw9IE1JX0lOVkFMSURBVEVfVExCOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBjbWQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJSTkxNV9H RU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCSpyYnVmKysgPSBj bWQ7CisJKnJidWYrKyA9IEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19V U0VfR1RUOwogCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KSB7Ci0JCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7IC8qIHZhbHVlICovCisJCSpyYnVmKysgPSAwOyAvKiB1cHBlciBhZGRyICovCisJCSpyYnVm KysgPSAwOyAvKiB2YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJKnJidWYrKyA9IDA7CisJ CSpyYnVmKysgPSBNSV9OT09QOwogCX0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CisKKwlp bnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDg0YWVhNTQ5ZGU1ZC4uMTE4MjExNmYy MGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC00NDMsNyAr NDQzLDI0IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKIAogaW50IGludGVsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKIAotaW50IF9fbXVzdF9jaGVjayBpbnRl bF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbik7Citp bnQgX19tdXN0X2NoZWNrIF9faW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwgaW50IG4pOworCitzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKK2lu dGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBuLCB1 MzIgKipyYnVmKQoreworCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOworCWlu dCByZXQ7CisKKwlyZXQgPSBfX2ludGVsX3JpbmdfYmVnaW4ocmVxLCBuKTsKKwlpZiAodW5saWtl bHkocmV0KSkKKwkJcmV0dXJuIHJldDsKKworCSpyYnVmID0gKHUzMiAqKShyaW5nLT52YWRkciAr IHJpbmctPnRhaWwpOworCXJpbmctPnRhaWwgKz0gbiAqIHNpemVvZih1MzIpOworCisJcmV0dXJu IDA7Cit9CisKIGludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxpZ24oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50 ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgZGF0YSkKLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK