From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 12/12] drm/i915: Stop frobbing with DDI encoder->type Date: Wed, 8 Jun 2016 13:41:47 +0300 Message-ID: <1465382507-23085-13-git-send-email-ville.syrjala@linux.intel.com> References: <1465382507-23085-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 88F546E987 for ; Wed, 8 Jun 2016 10:42:29 +0000 (UTC) In-Reply-To: <1465382507-23085-1-git-send-email-ville.syrjala@linux.intel.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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCk5v dyB0aGF0IHdlIGhhdmUgdGhlIG91dHB1dF90eXBlcyBiaXRtYXNrIGluIHRoZSBjcnRjIHN0YXRl LCB3ZQpjYW4gdXNlIGl0IHRvIGluZGljYXRlIGluIHdoaWNoIG1vZGUgd2Ugd2FudCB0byBkcml2 ZSB0aGUgRERJCmVuY29kZXJzLiBGb3IgcHJlLURESSBvdXRwdXRfdHlwZXMgd2lsbCBpbnN0ZWFk IGluZGljYXRlIHdoYXQKa2luZCBvZiBjbG9uaW5nIGlzIGJlaW5nIGRvbmUsIGJ1dCBhcyBEREkg cGxhdGZvcm1zIGRvbid0CnN1cHBvcnQgY2xvbmluZyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5 IGFib3V0IG1peGluZyB0aGUgdHdvCmFwcHJvYWNoZXMuCgpGcm9tIGhlcmUgb24gb3V0IGFuIGVu Y29kZXIgb24gRERJIHBsYXRmb3JtcyBjYW4gbm93IGhhdmUgYQp0eXBlIG9mIERESSwgRURQLCBB TkFMT0csIG9yIERQX01TVC4gQSBEREkgdHlwZSBlbmNvZGVyIGNhbiBiZQpkcml2ZW4gZWl0aGVy IGluIEhETUkgb3IgRFAgU1NUIG1vZGUuIFdlIG1haW50YWluIEVEUCBhcyBhCnNlYXBhcmV0ZSB0 eXBlIGZyb20gRERJIHRvIGtlZXAgaXNfZWRwKCkgZXRjLiB3b3JraW5nLiBBTkFMT0cKKGllLiBG REkpIHdhcyBhbHJlYWR5IHRyZWF0ZWQgcXVpdGUgZGlmZnJlbnRseSwgc28gd2UnbGwgc3RpY2sK dG8gdGhhdC4gQW5kIE1TVCBlbmNvZGVycyByZW1haW4gc2VwYXJhdGUgYmVhc3RzIGFzIHdlbGwu CgpUbyBhY2hpZXZlIHRoaXMgbmVhdGx5IHdlJ2xsIGFkZCBhIG5ldyBvcHRpb25hbAouY29tcHV0 ZV9vdXRwdXRfdHlwZSgpIGhvb2sgZm9yIGVuY29kZXJzLiBPbmx5IGVuY29kZXJzIHdpdGgKbXVs dGlwbGUgcGVyc29uYWxpdGllcyB3aWxsIG5lZWQgdG8gcHJvdmlkZSBvbmUuIFRoZSBob29rIGNh bgpkbyB3aGF0ZXZlciBpdCBuZWVkcyB0byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBzaWduYWwg c2hvdWxkCmJlIG91dHB1dC4gQWRkaXRpb25hbHkgLmdldF9jb25maWcoKSB3aWxsIGFsc28gbmVl ZCB0byByZWFkIG91dAp0aGUgY3VycmVudCB0eXBlIGZyb20gdGhlIGhhcmR3YXJlIHNvbWVob3cg YW5kIGZpbGwgdGhhdCBpbi4KTm90ZSB0aGF0IGluIHRoZSBuYW1lIG9mIGNvbnNpc3RlbmN5IHdl J2xsIHBvcHVsYXRlIHRoZSBob29rCmFsc28gZm9yIEVEUCBlbmNvZGVycyBvbiBEREkgcGxhdGZv cm1zIGV2ZW4gdGhvdWdoIHRoZSBkZWZhdWx0CmZhbGxiYWNrIG9mIHVzaW5nIGVuY29kZXItPnR5 cGUgd291bGQgd29yayBqdXN0IGFzIHdlbGwgdGhlcmUuCgpUaGUgcmVhc29uIGZvciBhZGRpbmcg YSBuZXcgaG9vayBpbnN0ZWFkIG9mIGxldHRpbmcKLmNvbXB1dGVfY29uZmlnKCkgZG8gdGhlIHdv cmsgaXMgdG8gZm9sbG93IHRoZSBydWxlIHRoYXQKb3V0cHV0X3R5cGVzIHdpbGwgYWxyZWFkeSBi ZSBmdWxseSBwb3B1bGF0ZWQgYnkgdGhlIHRpbWUKLmNvbXB1dGVfY29uZmlnKCkgaXMgY2FsbGVk IGZvciB0aGUgZmlyc3QgZW5jb2RlciAod2hpY2gKc2ltcGxpZmllcyB0aGluZ3Mgc3VjaCBhcyBo ZG1pXzEyYnBjX3Bvc3NpYmxlKCkpLgoKV2l0aCBvdXRwdXRfdHlwZXMgY29ycmVjdGx5IHBvcHVs YXRlZCwgdGhlIGJpZ2dlc3QgY2h1cm4gY29tZXMKZnJvbSBjaGFuZ2luZyB2YXJpb3VzIGVuY29k ZXItPnR5cGUgY2hlY2tzIHRvIGNvbnN1bHQgb3V0cHV0X3R5cGVzCmluc3RlYWQuCgpTaWduZWQt b2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgICAgfCAgIDMgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgfCAyMDQgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICB8 ICAzNyArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgfCAgMTYg Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIHwgIDIxICsrLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX29wcmVnaW9uLmMgfCAgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlv bnMoKyksIDEyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwppbmRl eCAwNjUzZmIxZDlkMjYuLjI4MTVjOGMzNGE2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXVkaW8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRp by5jCkBAIC02NTMsNyArNjUzLDggQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9z eW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAogCWludGVsX2VuY29kZXIgPSBkZXZf cHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOwogCS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVM TCBmb3IgRFAgTVNUICovCiAJaWYgKCFpbnRlbF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5i YXNlLmNydGMgfHwKLQkgICAgaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERN SSkgeworCSAgICAhaW50ZWxfY3J0Y19oYXNfdHlwZSh0b19pbnRlbF9jcnRjKGludGVsX2VuY29k ZXItPmJhc2UuY3J0YyktPmNvbmZpZywKKwkJCQkgSU5URUxfT1VUUFVUX0hETUkpKSB7CiAJCURS TV9ERUJVR19LTVMoIm5vIHZhbGlkIHBvcnQgJWNcbiIsIHBvcnRfbmFtZShwb3J0KSk7CiAJCWVy ciA9IC1FTk9ERVY7CiAJCWdvdG8gdW5sb2NrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwppbmRl eCA0ZjdmYzBlZDg3OTYuLmExYzVmZWIwZTE0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK QEAgLTMwMSw4ICszMDEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5z IGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKIAl7IDE1NCwgMHg5QSwgMSwgMTI4LCB0 cnVlIH0sCS8qIDk6CTEyMDAJCTAgICAqLwogfTsKIAotc3RhdGljIHZvaWQgYnh0X2RkaV92c3dp bmdfc2VxdWVuY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICB1 MzIgbGV2ZWwsIGVudW0gcG9ydCBwb3J0LCBpbnQgdHlwZSk7CitzdGF0aWMgdm9pZCBieHRfZGRp X3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAg dTMyIGxldmVsKTsKIAogc3RhdGljIHZvaWQgZGRpX2dldF9lbmNvZGVyX3BvcnQoc3RydWN0IGlu dGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJCQkJIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKipkaWdfcG9ydCwKQEAgLTMxOCwxMCArMzE4LDggQEAgc3RhdGljIHZvaWQgZGRpX2dldF9l bmNvZGVyX3BvcnQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJZGVmYXVs dDoKIAkJV0FSTigxLCAiSW52YWxpZCBEREkgZW5jb2RlciB0eXBlICVkXG4iLCBpbnRlbF9lbmNv ZGVyLT50eXBlKTsKIAkJLyogZmFsbHRocm91Z2ggYW5kIHRyZWF0IGFzIHVua25vd24gKi8KLQlj YXNlIElOVEVMX09VVFBVVF9EUDoKKwljYXNlIElOVEVMX09VVFBVVF9EREk6CiAJY2FzZSBJTlRF TF9PVVRQVVRfRURQOgotCWNhc2UgSU5URUxfT1VUUFVUX0hETUk6Ci0JY2FzZSBJTlRFTF9PVVRQ VVRfVU5LTk9XTjoKIAkJKmRpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOwogCQkq cG9ydCA9ICgqZGlnX3BvcnQpLT5wb3J0OwogCQlicmVhazsKQEAgLTM5OCw2ICszOTYsNyBAQCBz a2xfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aW50ICpuX2VudHJpZXMpCiB2b2lkIGludGVsX3ByZXBhcmVfZGRpX2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKIAl1MzIgaWJvb3N0X2JpdCA9 IDA7CiAJaW50IGksIG5faGRtaV9lbnRyaWVzLCBuX2RwX2VudHJpZXMsIG5fZWRwX2VudHJpZXMs IGhkbWlfZGVmYXVsdF9lbnRyeSwKIAkgICAgc2l6ZTsKQEAgLTQxMywxMiArNDEyLDkgQEAgdm9p ZCBpbnRlbF9wcmVwYXJlX2RkaV9idWZmZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp CiAJaGRtaV9sZXZlbCA9IGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0XS5oZG1pX2xl dmVsX3NoaWZ0OwogCiAJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Ci0JCWlmIChlbmNvZGVy LT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKQotCQkJcmV0dXJuOwotCiAJCS8qIFZzd2luZyBw cm9ncmFtbWluZyBmb3IgSERNSSAqLwotCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShkZXZfcHJp diwgaGRtaV9sZXZlbCwgcG9ydCwKLQkJCQkJSU5URUxfT1VUUFVUX0hETUkpOworCQlpZiAoaW50 ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJCWJ4 dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGhkbWlfbGV2ZWwpOwogCQlyZXR1cm47CiAJ fQogCkBAIC00MzYsNyArNDMyLDcgQEAgdm9pZCBpbnRlbF9wcmVwYXJlX2RkaV9idWZmZXIoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJCSAgICBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0 X2luZm9bcG9ydF0uZHBfYm9vc3RfbGV2ZWwpCiAJCQlpYm9vc3RfYml0ID0gMTw8MzE7CiAKLQkJ aWYgKFdBUk5fT04oZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmCisJCWlmIChX QVJOX09OKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRURQ KSAmJgogCQkJICAgIHBvcnQgIT0gUE9SVF9BICYmIHBvcnQgIT0gUE9SVF9FICYmCiAJCQkgICAg bl9lZHBfZW50cmllcyA+IDkpKQogCQkJbl9lZHBfZW50cmllcyA9IDk7CkBAIC00NzcsMjIgKzQ3 MywyMCBAQCB2b2lkIGludGVsX3ByZXBhcmVfZGRpX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKIAkJaGRtaV9kZWZhdWx0X2VudHJ5ID0gNzsKIAl9CiAKLQlzd2l0Y2ggKGVu Y29kZXItPnR5cGUpIHsKLQljYXNlIElOVEVMX09VVFBVVF9FRFA6CisJaWYgKGludGVsX2NydGNf aGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRURQKSkgewogCQlkZGlfdHJhbnNs YXRpb25zID0gZGRpX3RyYW5zbGF0aW9uc19lZHA7CiAJCXNpemUgPSBuX2VkcF9lbnRyaWVzOwot CQlicmVhazsKLQljYXNlIElOVEVMX09VVFBVVF9EUDoKLQljYXNlIElOVEVMX09VVFBVVF9IRE1J OgorCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09V VFBVVF9EUCkgfHwKKwkJICAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVM X09VVFBVVF9IRE1JKSkgewogCQlkZGlfdHJhbnNsYXRpb25zID0gZGRpX3RyYW5zbGF0aW9uc19k cDsKIAkJc2l6ZSA9IG5fZHBfZW50cmllczsKLQkJYnJlYWs7Ci0JY2FzZSBJTlRFTF9PVVRQVVRf QU5BTE9HOgorCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElO VEVMX09VVFBVVF9BTkFMT0cpKSB7CiAJCWRkaV90cmFuc2xhdGlvbnMgPSBkZGlfdHJhbnNsYXRp b25zX2ZkaTsKIAkJc2l6ZSA9IG5fZHBfZW50cmllczsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJ QlVHKCk7CisJfSBlbHNlIHsKKwkJV0FSTigxLCAiSW52YWxpZCBlbmNvZGVyIHR5cGUgMHgleCBm b3IgcGlwZSAlY1xuIiwKKwkJICAgICBjcnRjLT5jb25maWctPm91dHB1dF90eXBlcywgcGlwZV9u YW1lKGNydGMtPnBpcGUpKTsKKwkJcmV0dXJuOwogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBzaXpl OyBpKyspIHsKQEAgLTUwMiw3ICs0OTYsNyBAQCB2b2lkIGludGVsX3ByZXBhcmVfZGRpX2J1ZmZl cihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkJCSAgIGRkaV90cmFuc2xhdGlvbnNb aV0udHJhbnMyKTsKIAl9CiAKLQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERN SSkKKwlpZiAoIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRf SERNSSkpCiAJCXJldHVybjsKIAogCS8qIENob29zZSBhIGdvb2QgZGVmYXVsdCBpZiBWQlQgaXMg YmFkbHkgcG9wdWxhdGVkICovCkBAIC01NDksNyArNTQzLDcgQEAgdm9pZCBoc3dfZmRpX2xpbmtf dHJhaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXUzMiB0ZW1wLCBpLCByeF9jdGxfdmFsOwog CiAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2RlcikgewotCQlXQVJO X09OKGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0FOQUxPRyk7CisJCVdBUk5fT04oIWlu dGVsX2NydGNfaGFzX3R5cGUoaW50ZWxfY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfQU5BTE9H KSk7CiAJCWludGVsX3ByZXBhcmVfZGRpX2J1ZmZlcihlbmNvZGVyKTsKIAl9CiAKQEAgLTEwNjMs MTIgKzEwNTcsMTAgQEAgdm9pZCBpbnRlbF9kZGlfc2V0X3BpcGVfc2V0dGluZ3Moc3RydWN0IGRy bV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNy dGMtPmRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwotCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVy ID0gaW50ZWxfZGRpX2dldF9jcnRjX2VuY29kZXIoY3J0Yyk7CiAJZW51bSB0cmFuc2NvZGVyIGNw dV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKLQlpbnQg dHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7CiAJdWludDMyX3QgdGVtcDsKIAotCWlmICh0eXBl ID09IElOVEVMX09VVFBVVF9EUCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFAgfHwgdHlwZSA9 PSBJTlRFTF9PVVRQVVRfRFBfTVNUKSB7CisJaWYgKGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIo aW50ZWxfY3J0Yy0+Y29uZmlnKSkgewogCQlXQVJOX09OKHRyYW5zY29kZXJfaXNfZHNpKGNwdV90 cmFuc2NvZGVyKSk7CiAKIAkJdGVtcCA9IFRSQU5TX01TQV9TWU5DX0NMSzsKQEAgLTExMTcsNyAr MTEwOSw2IEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAllbnVt IHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFu c2NvZGVyOwogCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoaW50 ZWxfZW5jb2Rlcik7Ci0JaW50IHR5cGUgPSBpbnRlbF9lbmNvZGVyLT50eXBlOwogCXVpbnQzMl90 IHRlbXA7CiAKIAkvKiBFbmFibGUgVFJBTlNfRERJX0ZVTkNfQ1RMIGZvciB0aGUgcGlwZSB0byB3 b3JrIGluIEhETUkgbW9kZSAqLwpAQCAtMTE3MiwxOCArMTE2MywxNiBAQCB2b2lkIGludGVsX2Rk aV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJfQogCX0K IAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7CisJaWYgKGludGVsX2NydGNfaGFz X3R5cGUoaW50ZWxfY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpIHsKIAkJaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+aGFzX2hkbWlfc2luaykKIAkJCXRlbXAgfD0gVFJBTlNfRERJX01P REVfU0VMRUNUX0hETUk7CiAJCWVsc2UKIAkJCXRlbXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNU X0RWSTsKLQotCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfQU5BTE9HKSB7CisJfSBl bHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywgSU5URUxfT1VU UFVUX0FOQUxPRykpIHsKIAkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRkRJOwogCQl0 ZW1wIHw9IChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyAtIDEpIDw8IDE7Ci0KLQl9IGVs c2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RQIHx8Ci0JCSAgIHR5cGUgPT0gSU5URUxfT1VU UFVUX0VEUCkgeworCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShpbnRlbF9jcnRjLT5j b25maWcsIElOVEVMX09VVFBVVF9EUCkgfHwKKwkJICAgaW50ZWxfY3J0Y19oYXNfdHlwZShpbnRl bF9jcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9FRFApKSB7CiAJCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKIAkJaWYgKGludGVsX2RwLT5p c19tc3QpIHsKQEAgLTExOTIsNyArMTE4MSw3IEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFu c2NvZGVyX2Z1bmMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJdGVtcCB8PSBUUkFOU19ERElf TU9ERV9TRUxFQ1RfRFBfU1NUOwogCiAJCXRlbXAgfD0gRERJX1BPUlRfV0lEVEgoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5sYW5lX2NvdW50KTsKLQl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0RQX01TVCkgeworCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShpbnRlbF9jcnRjLT5j b25maWcsIElOVEVMX09VVFBVVF9EUF9NU1QpKSB7CiAJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAgPSAmZW5jX3RvX21zdChlbmNvZGVyKS0+cHJpbWFyeS0+ZHA7CiAKIAkJaWYgKGludGVsX2Rw LT5pc19tc3QpIHsKQEAgLTEyMDIsOCArMTE5MSw4IEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90 cmFuc2NvZGVyX2Z1bmMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJCXRlbXAgfD0gRERJX1BP UlRfV0lEVEgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50KTsKIAl9IGVsc2UgewotCQlX QVJOKDEsICJJbnZhbGlkIGVuY29kZXIgdHlwZSAlZCBmb3IgcGlwZSAlY1xuIiwKLQkJICAgICBp bnRlbF9lbmNvZGVyLT50eXBlLCBwaXBlX25hbWUocGlwZSkpOworCQlXQVJOKDEsICJJbnZhbGlk IGVuY29kZXIgdHlwZSAweCV4IGZvciBwaXBlICVjXG4iLAorCQkgICAgIGludGVsX2NydGMtPmNv bmZpZy0+b3V0cHV0X3R5cGVzLCBwaXBlX25hbWUocGlwZSkpOwogCX0KIAogCUk5MTVfV1JJVEUo VFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSwgdGVtcCk7CkBAIC0xMzcxLDkgKzEz NjAsMTMgQEAgdm9pZCBpbnRlbF9kZGlfZGlzYWJsZV9waXBlX2Nsb2NrKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQogCQkJICAgVFJBTlNfQ0xLX1NFTF9ESVNBQkxFRCk7CiB9CiAKLXN0 YXRpYyB2b2lkIHNrbF9kZGlfc2V0X2lib29zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCi0JCQkgICAgICAgdTMyIGxldmVsLCBlbnVtIHBvcnQgcG9ydCwgaW50IHR5cGUpCitz dGF0aWMgdm9pZCBza2xfZGRpX3NldF9pYm9vc3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkgICAgICAgdTMyIGxldmVsKQorCiB7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJZW51bSBwb3J0 IHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpLT5wb3J0OwogCWNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zOwogCXVpbnQ4X3QgaWJvb3N0Owog CXVpbnQ4X3QgZHBfaWJvb3N0LCBoZG1pX2lib29zdDsKQEAgLTEzODQsMTQgKzEzNzcsMTQgQEAg c3RhdGljIHZvaWQgc2tsX2RkaV9zZXRfaWJvb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlkcF9pYm9vc3QgPSBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0u ZHBfYm9vc3RfbGV2ZWw7CiAJaGRtaV9pYm9vc3QgPSBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2lu Zm9bcG9ydF0uaGRtaV9ib29zdF9sZXZlbDsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9E UCkgeworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVU X0RQKSkgewogCQlpZiAoZHBfaWJvb3N0KSB7CiAJCQlpYm9vc3QgPSBkcF9pYm9vc3Q7CiAJCX0g ZWxzZSB7CiAJCQlkZGlfdHJhbnNsYXRpb25zID0gc2tsX2dldF9idWZfdHJhbnNfZHAoZGV2X3By aXYsICZuX2VudHJpZXMpOwogCQkJaWJvb3N0ID0gZGRpX3RyYW5zbGF0aW9uc1tsZXZlbF0uaV9i b29zdDsKIAkJfQotCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJfSBl bHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0VE UCkpIHsKIAkJaWYgKGRwX2lib29zdCkgewogCQkJaWJvb3N0ID0gZHBfaWJvb3N0OwogCQl9IGVs c2UgewpAQCAtMTQwMyw3ICsxMzk2LDcgQEAgc3RhdGljIHZvaWQgc2tsX2RkaV9zZXRfaWJvb3N0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCQkJaWJvb3N0ID0gZGRpX3Ry YW5zbGF0aW9uc1tsZXZlbF0uaV9ib29zdDsKIAkJfQotCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRF TF9PVVRQVVRfSERNSSkgeworCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5j b25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkgewogCQlpZiAoaGRtaV9pYm9vc3QpIHsKIAkJCWli b29zdCA9IGhkbWlfaWJvb3N0OwogCQl9IGVsc2UgewpAQCAtMTQzMiwzMiArMTQyNSwzOCBAQCBz dGF0aWMgdm9pZCBza2xfZGRpX3NldF9pYm9vc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCUk5MTVfV1JJVEUoRElTUElPX0NSX1RYX0JNVV9DUjAsIHJlZyk7CiB9CiAKLXN0 YXRpYyB2b2lkIGJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCQkgICAgdTMyIGxldmVsLCBlbnVtIHBvcnQgcG9ydCwgaW50IHR5cGUp CitzdGF0aWMgdm9pZCBieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJCQkgICAgdTMyIGxldmVsKQogeworCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCWVudW0g cG9ydCBwb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKS0+cG9ydDsKKwogCWNv bnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9uczsKIAl1MzIgbl9l bnRyaWVzLCBpOwogCXVpbnQzMl90IHZhbDsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9F RFAgJiYgZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgeworCWlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0VEUCkgJiYKKwkgICAgZGV2X3ByaXYt PnZidC5lZHAubG93X3Zzd2luZykgewogCQluX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlf dHJhbnNsYXRpb25zX2VkcCk7CiAJCWRkaV90cmFuc2xhdGlvbnMgPSBieHRfZGRpX3RyYW5zbGF0 aW9uc19lZHA7Ci0JfSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUAotCQkJfHwgdHlw ZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJfSBlbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSB8fAorCQkgICBpbnRlbF9jcnRjX2hhc190 eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0VEUCkpIHsKIAkJbl9lbnRyaWVzID0gQVJS QVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19kcCk7CiAJCWRkaV90cmFuc2xhdGlvbnMgPSBi eHRfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0hETUkpIHsKKwl9IGVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJ TlRFTF9PVVRQVVRfSERNSSkpIHsKIAkJbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3Ry YW5zbGF0aW9uc19oZG1pKTsKIAkJZGRpX3RyYW5zbGF0aW9ucyA9IGJ4dF9kZGlfdHJhbnNsYXRp b25zX2hkbWk7CiAJfSBlbHNlIHsKLQkJRFJNX0RFQlVHX0tNUygiVnN3aW5nIHByb2dyYW1taW5n IG5vdCBkb25lIGZvciBlbmNvZGVyICVkXG4iLAotCQkJCXR5cGUpOworCQlEUk1fREVCVUdfS01T KCJWc3dpbmcgcHJvZ3JhbW1pbmcgbm90IGRvbmUgZm9yIGVuY29kZXIgMHgleFxuIiwKKwkJCSAg ICAgIGNydGMtPmNvbmZpZy0+b3V0cHV0X3R5cGVzKTsKIAkJcmV0dXJuOwogCX0KIAogCS8qIENo ZWNrIGlmIGRlZmF1bHQgdmFsdWUgaGFzIHRvIGJlIHVzZWQgKi8KIAlpZiAobGV2ZWwgPj0gbl9l bnRyaWVzIHx8Ci0JICAgICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JICYmIGxldmVsID09IEhE TUlfTEVWRUxfU0hJRlRfVU5LTk9XTikpIHsKKwkgICAgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkgJiYKKwkgICAgIGxldmVsID09IEhETUlfTEVW RUxfU0hJRlRfVU5LTk9XTikpIHsKIAkJZm9yIChpID0gMDsgaSA8IG5fZW50cmllczsgaSsrKSB7 CiAJCQlpZiAoZGRpX3RyYW5zbGF0aW9uc1tpXS5kZWZhdWx0X2luZGV4KSB7CiAJCQkJbGV2ZWwg PSBpOwpAQCAtMTU0OCwyMSArMTU0NywxOSBAQCBzdGF0aWMgdWludDMyX3QgdHJhbnNsYXRlX3Np Z25hbF9sZXZlbChpbnQgc2lnbmFsX2xldmVscykKIAogdWludDMyX3QgZGRpX3NpZ25hbF9sZXZl bHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRwb3J0LT5iYXNlLmJhc2UuZGV2KTsKLQlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZkcG9ydC0+YmFzZTsKKwlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7CiAJdWludDhfdCB0cmFpbl9zZXQgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBdOwogCWludCBz aWduYWxfbGV2ZWxzID0gdHJhaW5fc2V0ICYgKERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSyB8 CiAJCQkJCSBEUF9UUkFJTl9QUkVfRU1QSEFTSVNfTUFTSyk7Ci0JZW51bSBwb3J0IHBvcnQgPSBk cG9ydC0+cG9ydDsKIAl1aW50MzJfdCBsZXZlbDsKIAogCWxldmVsID0gdHJhbnNsYXRlX3NpZ25h bF9sZXZlbChzaWduYWxfbGV2ZWxzKTsKIAogCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJ U19LQUJZTEFLRShkZXZfcHJpdikpCi0JCXNrbF9kZGlfc2V0X2lib29zdChkZXZfcHJpdiwgbGV2 ZWwsIHBvcnQsIGVuY29kZXItPnR5cGUpOworCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2Rlciwg bGV2ZWwpOwogCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQotCQlieHRfZGRpX3Zzd2lu Z19zZXF1ZW5jZShkZXZfcHJpdiwgbGV2ZWwsIHBvcnQsIGVuY29kZXItPnR5cGUpOworCQlieHRf ZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCk7CiAKIAlyZXR1cm4gRERJX0JVRl9U UkFOU19TRUxFQ1QobGV2ZWwpOwogfQpAQCAtMTU5OSw5ICsxNTk2LDggQEAgc3RhdGljIHZvaWQg aW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIp CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5k ZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5j cnRjKTsKIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVs X2VuY29kZXIpOwotCWludCB0eXBlID0gaW50ZWxfZW5jb2Rlci0+dHlwZTsKIAotCWlmICh0eXBl ID09IElOVEVMX09VVFBVVF9IRE1JKSB7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+ Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpIHsKIAkJc3RydWN0IGludGVsX2hkbWkgKmludGVs X2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaShlbmNvZGVyKTsKIAogCQlpbnRlbF9kcF9kdWFsX21v ZGVfc2V0X3RtZHNfb3V0cHV0KGludGVsX2hkbWksIHRydWUpOwpAQCAtMTYwOSwxNCArMTYwNSwx NSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlcikKIAogCWludGVsX3ByZXBhcmVfZGRpX2J1ZmZlcihpbnRlbF9lbmNv ZGVyKTsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwlpZiAoaW50ZWxfY3J0 Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9FRFApKSB7CiAJCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAJCWludGVsX2Vk cF9wYW5lbF9vbihpbnRlbF9kcCk7CiAJfQogCiAJaW50ZWxfZGRpX2Nsa19zZWxlY3QoaW50ZWxf ZW5jb2RlciwgY3J0Yy0+Y29uZmlnKTsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUCB8 fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkgfHwKKwkgICAgaW50ZWxfY3J0Y19oYXNfdHlw ZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9FRFApKSB7CiAJCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKIAkJaW50ZWxfZHBfc2V0X2xp bmtfcGFyYW1zKGludGVsX2RwLCBjcnRjLT5jb25maWcpOwpAQCAtMTYyNyw3ICsxNjI0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIpCiAJCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwogCQlp ZiAocG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQogCQkJ aW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKLQl9IGVsc2UgaWYgKHR5cGUgPT0g SU5URUxfT1VUUFVUX0hETUkpIHsKKwl9IGVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpIHsKIAkJc3RydWN0IGludGVsX2hkbWkgKmlu dGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaShlbmNvZGVyKTsKIAogCQlpbnRlbF9oZG1pLT5z ZXRfaW5mb2ZyYW1lcyhlbmNvZGVyLApAQCAtMTYzOSwxMCArMTYzNiwxMCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kZGlfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rl cikKIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIpCiB7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmlu dGVsX2VuY29kZXItPmJhc2U7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGVuY29kZXItPmNydGMpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5k ZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2Vu Y29kZXIpOwotCWludCB0eXBlID0gaW50ZWxfZW5jb2Rlci0+dHlwZTsKIAl1aW50MzJfdCB2YWw7 CiAJYm9vbCB3YWl0ID0gZmFsc2U7CiAKQEAgLTE2NjEsNyArMTY1OCw4IEBAIHN0YXRpYyB2b2lk IGludGVsX2RkaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIpCiAJaWYgKHdhaXQpCiAJCWludGVsX3dhaXRfZGRpX2J1Zl9pZGxlKGRldl9wcml2LCBwb3J0 KTsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUCB8fCB0eXBlID09IElOVEVMX09VVFBV VF9FRFApIHsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09V VFBVVF9EUCkgfHwKKwkgICAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVM X09VVFBVVF9FRFApKSB7CiAJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoZW5jb2Rlcik7CiAJCWludGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwgRFJNX01PREVf RFBNU19PRkYpOwogCQlpbnRlbF9lZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKQEAgLTE2NzQs NyArMTY3Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rpc2FibGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPCA5KQogCQlJOTE1X1dSSVRFKFBPUlRfQ0xLX1NFTChwb3J0KSwgUE9SVF9DTEtfU0VMX05P TkUpOwogCi0JaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpIHsKKwlpZiAoaW50ZWxfY3J0 Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkgewogCQlzdHJ1Y3Qg aW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKGVuY29kZXIpOwogCiAJ CWludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoaW50ZWxfaGRtaSwgZmFsc2UpOwpA QCAtMTY4OSw5ICsxNjg3LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RkaShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZW5jb2Rlci0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9y dChpbnRlbF9lbmNvZGVyKTsKLQlpbnQgdHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7CiAKLQlp ZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgeworCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGludGVsX2NydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0hETUkpKSB7CiAJCXN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0KIAkJCWVuY190b19kaWdfcG9ydChlbmNv ZGVyKTsKIApAQCAtMTcwMiw3ICsxNjk5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2Rk aShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIAkJSTkxNV9XUklURShERElf QlVGX0NUTChwb3J0KSwKIAkJCSAgIGludGVsX2RpZ19wb3J0LT5zYXZlZF9wb3J0X2JpdHMgfAog CQkJICAgRERJX0JVRl9DVExfRU5BQkxFKTsKLQl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VU UFVUX0VEUCkgeworCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShpbnRlbF9jcnRjLT5j b25maWcsIElOVEVMX09VVFBVVF9FRFApKSB7CiAJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKIAkJaWYgKHBvcnQgPT0gUE9SVF9BICYmIElO VEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkKQEAgLTE3MjQsNyArMTcyMSw2IEBAIHN0YXRpYyB2b2lk IGludGVsX2Rpc2FibGVfZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQog CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNvZGVyLT5iYXNlOwogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGVuY29kZXItPmNydGM7CiAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCWludCB0eXBlID0gaW50ZWxfZW5j b2Rlci0+dHlwZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKQEAg LTE3MzMsNyArMTcyOSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfZGRpKHN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQogCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChk ZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0FVRElPKTsKIAl9CiAKLQlpZiAodHlwZSA9PSBJTlRFTF9P VVRQVVRfRURQKSB7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoaW50ZWxfY3J0Yy0+Y29uZmln LCBJTlRFTF9PVVRQVVRfRURQKSkgewogCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpOwogCiAJCWludGVsX2VkcF9kcnJzX2Rpc2FibGUoaW50ZWxf ZHApOwpAQCAtMjE1Nyw2ICsyMTUzLDI2IEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXJldHVybjsKIAogCXRlbXAgPSBJOTE1X1JF QUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7CisKKwlzd2l0Y2ggKHRlbXAg JiBUUkFOU19ERElfTU9ERV9TRUxFQ1RfTUFTSykgeworCWNhc2UgVFJBTlNfRERJX01PREVfU0VM RUNUX0hETUk6CisJY2FzZSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFZJOgorCQlwaXBlX2NvbmZp Zy0+b3V0cHV0X3R5cGVzIHw9IDEgPDwgSU5URUxfT1VUUFVUX0hETUk7CisJCWJyZWFrOworCWNh c2UgVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX1NTVDoKKwkJaWYgKGVuY29kZXItPnR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCkKKwkJCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0gMSA8PCBJ TlRFTF9PVVRQVVRfRURQOworCQllbHNlCisJCQlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9 IDEgPDwgSU5URUxfT1VUUFVUX0RQOworCQlicmVhazsKKwljYXNlIFRSQU5TX0RESV9NT0RFX1NF TEVDVF9GREk6CisJCVdBUk5fT04ocGlwZV9jb25maWctPm91dHB1dF90eXBlcyAhPSAxIDw8IElO VEVMX09VVFBVVF9BTkFMT0cpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0Uo cGlwZV9jb25maWctPm91dHB1dF90eXBlcyk7CisJCWJyZWFrOworCX0KKwogCWlmICh0ZW1wICYg VFJBTlNfRERJX1BIU1lOQykKIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QSFNZTkM7CiAJZWxz ZQpAQCAtMjIxNCw3ICsyMjMwLDggQEAgdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCXBpcGVfY29uZmlnLT5oYXNfYXVkaW8gPSB0cnVl OwogCX0KIAotCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAgJiYgZGV2X3By aXYtPnZidC5lZHAuYnBwICYmCisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUocGlwZV9jb25maWcs IElOVEVMX09VVFBVVF9FRFApICYmCisJICAgIGRldl9wcml2LT52YnQuZWRwLmJwcCAmJgogCSAg ICBwaXBlX2NvbmZpZy0+cGlwZV9icHAgPiBkZXZfcHJpdi0+dmJ0LmVkcC5icHApIHsKIAkJLyoK IAkJICogVGhpcyBpcyBhIGJpZyBmYXQgdWdseSBoYWNrLgpAQCAtMjIzNywxOCArMjI1NCw1NCBA QCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAogCWludGVsX2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwogfQogCitzdGF0 aWMgZW51bSBpbnRlbF9vdXRwdXRfdHlwZQoraW50ZWxfZGRpX2NvbXB1dGVfb3V0cHV0X3R5cGUo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUg PSBjcnRjX3N0YXRlLT5iYXNlLnN0YXRlOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNf c3RhdGUtPmJhc2UuY3J0YzsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CisJaW50IGk7CisKKwlm b3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0 YXRlLCBpKSB7CisJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNydGMgIT0gY3J0YykKKwkJCWNvbnRp bnVlOworCisJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSAmZW5jb2Rlci0+ YmFzZSkKKwkJCWNvbnRpbnVlOworCisJCXN3aXRjaCAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlw ZSkgeworCQljYXNlIERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQToKKwkJCXJldHVybiBJTlRFTF9P VVRQVVRfSERNSTsKKwkJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfZURQOgorCQkJcmV0dXJuIElO VEVMX09VVFBVVF9FRFA7CisJCWNhc2UgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0Ogor CQkJcmV0dXJuIElOVEVMX09VVFBVVF9EUDsKKwkJZGVmYXVsdDoKKwkJCU1JU1NJTkdfQ0FTRShj b25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJcmV0dXJu IElOVEVMX09VVFBVVF9VTlVTRUQ7Cit9CisKIHN0YXRpYyBib29sIGludGVsX2RkaV9jb21wdXRl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgICAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKIHsKLQlpbnQgdHlwZSA9IGVuY29kZXItPnR5 cGU7Ci0JaW50IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVyKTsKKwll bnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOwogCi0J V0FSTih0eXBlID09IElOVEVMX09VVFBVVF9VTktOT1dOLCAiY29tcHV0ZV9jb25maWcoKSBvbiB1 bmtub3duIG91dHB1dCFcbiIpOworCVdBUk4ocGlwZV9jb25maWctPm91dHB1dF90eXBlcyA9PSAw IHx8CisJICAgICBwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzICYgfigxIDw8IElOVEVMX09VVFBV VF9FRFAgfAorCQkJCQkgICAxIDw8IElOVEVMX09VVFBVVF9EUCB8CisJCQkJCSAgIDEgPDwgSU5U RUxfT1VUUFVUX0hETUkpLAorCSAgICAgIkJhZCBvdXRwdXRfdHlwZXMgPSAweCV4XG4iLCBwaXBl X2NvbmZpZy0+b3V0cHV0X3R5cGVzKTsKIAogCWlmIChwb3J0ID09IFBPUlRfQSkKIAkJcGlwZV9j b25maWctPmNwdV90cmFuc2NvZGVyID0gVFJBTlNDT0RFUl9FRFA7CiAKLQlpZiAodHlwZSA9PSBJ TlRFTF9PVVRQVVRfSERNSSkKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShwaXBlX2NvbmZpZywg SU5URUxfT1VUUFVUX0hETUkpKQogCQlyZXR1cm4gaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhl bmNvZGVyLCBwaXBlX2NvbmZpZyk7CiAJZWxzZQogCQlyZXR1cm4gaW50ZWxfZHBfY29tcHV0ZV9j b25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOwpAQCAtMjM0OCw2ICsyNDAxLDcgQEAgdm9pZCBp bnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKIAlk cm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2RlciwgJmludGVsX2RkaV9mdW5jcywKIAkJCSBEUk1f TU9ERV9FTkNPREVSX1RNRFMsICJEREkgJWMiLCBwb3J0X25hbWUocG9ydCkpOwogCisJaW50ZWxf ZW5jb2Rlci0+Y29tcHV0ZV9vdXRwdXRfdHlwZSA9IGludGVsX2RkaV9jb21wdXRlX291dHB1dF90 eXBlOwogCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmlnID0gaW50ZWxfZGRpX2NvbXB1dGVf Y29uZmlnOwogCWludGVsX2VuY29kZXItPmVuYWJsZSA9IGludGVsX2VuYWJsZV9kZGk7CiAJaW50 ZWxfZW5jb2Rlci0+cHJlX2VuYWJsZSA9IGludGVsX2RkaV9wcmVfZW5hYmxlOwpAQCAtMjM3OSw3 ICsyNDMzLDcgQEAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBl bnVtIHBvcnQgcG9ydCkKIAogCWludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMgPSBtYXhfbGFuZXM7 CiAKLQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX1VOS05PV047CisJaW50ZWxf ZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9EREk7CiAJaW50ZWxfZW5jb2Rlci0+Y3J0Y19t YXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIpOwogCWludGVsX2VuY29kZXItPmNs b25lYWJsZSA9IDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA0NDJl ZDYzMjAwODIuLmE2ZDcyM2E1MGNjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwpAQCAtNTExMyw3ICs1MTEzLDcgQEAgaW50ZWxfZGlzcGxheV9wb3J0X3Bvd2VyX2RvbWFpbihz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydDsKIAogCXN3aXRjaCAoaW50ZWxfZW5jb2Rlci0+dHlwZSkg ewotCWNhc2UgSU5URUxfT1VUUFVUX1VOS05PV046CisJY2FzZSBJTlRFTF9PVVRQVVRfRERJOgog CQkvKiBPbmx5IERESSBwbGF0Zm9ybXMgc2hvdWxkIGV2ZXIgdXNlIHRoaXMgb3V0cHV0IHR5cGUg Ki8KIAkJV0FSTl9PTl9PTkNFKCFIQVNfRERJKGRldikpOwogCWNhc2UgSU5URUxfT1VUUFVUX0RQ OgpAQCAtNTE0MCwxNSArNTE0MCw4IEBAIGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9t YWluKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQogCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0OwogCiAJc3dpdGNoIChpbnRlbF9lbmNvZGVyLT50 eXBlKSB7Ci0JY2FzZSBJTlRFTF9PVVRQVVRfVU5LTk9XTjoKLQljYXNlIElOVEVMX09VVFBVVF9I RE1JOgotCQkvKgotCQkgKiBPbmx5IERESSBwbGF0Zm9ybXMgc2hvdWxkIGV2ZXIgdXNlIHRoZXNl IG91dHB1dCB0eXBlcy4KLQkJICogV2UgY2FuIGdldCBoZXJlIGFmdGVyIHRoZSBIRE1JIGRldGVj dCBjb2RlIGhhcyBhbHJlYWR5IHNldAotCQkgKiB0aGUgdHlwZSBvZiB0aGUgc2hhcmVkIGVuY29k ZXIuIFNpbmNlIHdlIGNhbid0IGJlIHN1cmUKLQkJICogd2hhdCdzIHRoZSBzdGF0dXMgb2YgdGhl IGdpdmVuIGNvbm5lY3RvcnMsIHBsYXkgc2FmZSBhbmQKLQkJICogcnVuIHRoZSBEUCBkZXRlY3Rp b24gdG9vLgotCQkgKi8KKwljYXNlIElOVEVMX09VVFBVVF9EREk6CisJCS8qIE9ubHkgRERJIHBs YXRmb3JtcyBzaG91bGQgZXZlciB1c2UgdGhpcyBvdXRwdXQgdHlwZSAqLwogCQlXQVJOX09OX09O Q0UoIUhBU19EREkoZGV2KSk7CiAJY2FzZSBJTlRFTF9PVVRQVVRfRFA6CiAJY2FzZSBJTlRFTF9P VVRQVVRfRURQOgpAQCAtMTIzNDEsNyArMTIzMzQsNyBAQCBzdGF0aWMgYm9vbCBjaGVja19kaWdp dGFsX3BvcnRfY29uZmxpY3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCQlz d2l0Y2ggKGVuY29kZXItPnR5cGUpIHsKIAkJCXVuc2lnbmVkIGludCBwb3J0X21hc2s7Ci0JCWNh c2UgSU5URUxfT1VUUFVUX1VOS05PV046CisJCWNhc2UgSU5URUxfT1VUUFVUX0RESToKIAkJCWlm IChXQVJOX09OKCFIQVNfRERJKGRldikpKQogCQkJCWJyZWFrOwogCQljYXNlIElOVEVMX09VVFBV VF9EUDoKQEAgLTEyNDQ3LDYgKzEyNDQwLDggQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAkJZW5jb2RlciA9IHRvX2ludGVsX2VuY29kZXIoY29u bmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIpOwogCisJCURSTV9ERUJVR19LTVMoIlVzaW5nIGVu Y29kZXIgJXNcbiIsIGVuY29kZXItPmJhc2UubmFtZSk7CisKIAkJaWYgKCFjaGVja19zaW5nbGVf ZW5jb2Rlcl9jbG9uaW5nKHN0YXRlLCB0b19pbnRlbF9jcnRjKGNydGMpLCBlbmNvZGVyKSkgewog CQkJRFJNX0RFQlVHX0tNUygicmVqZWN0aW5nIGludmFsaWQgY2xvbmluZyBjb25maWd1cmF0aW9u XG4iKTsKIAkJCWdvdG8gZmFpbDsKQEAgLTEyNDU2LDcgKzEyNDUxLDExIEBAIGludGVsX21vZGVz ZXRfcGlwZV9jb25maWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkgKiBEZXRlcm1pbmUgb3V0 cHV0X3R5cGVzIGJlZm9yZSBjYWxsaW5nIHRoZSAuY29tcHV0ZV9jb25maWcoKQogCQkgKiBob29r cyBzbyB0aGF0IHRoZSBob29rcyBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gc2FmZWx5LgogCQkg Ki8KLQkJcGlwZV9jb25maWctPm91dHB1dF90eXBlcyB8PSAxIDw8IGVuY29kZXItPnR5cGU7CisJ CWlmIChlbmNvZGVyLT5jb21wdXRlX291dHB1dF90eXBlKQorCQkJcGlwZV9jb25maWctPm91dHB1 dF90eXBlcyB8PQorCQkJCTEgPDwgZW5jb2Rlci0+Y29tcHV0ZV9vdXRwdXRfdHlwZShlbmNvZGVy LCBwaXBlX2NvbmZpZyk7CisJCWVsc2UKKwkJCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0g MSA8PCBlbmNvZGVyLT50eXBlOwogCX0KIAogZW5jb2Rlcl9yZXRyeToKQEAgLTEzMDIzLDcgKzEz MDIyLDEyIEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQlw aXBlX25hbWUocGlwZSkpOwogCiAJCWlmIChhY3RpdmUpIHsKLQkJCXBpcGVfY29uZmlnLT5vdXRw dXRfdHlwZXMgfD0gMSA8PCBlbmNvZGVyLT50eXBlOworCQkJLyoKKwkJCSAqIC5nZXRfY29uZmln KCkgaXMgcmVzcG9uc2libGUgZm9yIHRoaXMgaWYgdGhlCisJCQkgKiBlbmNvZGVyIGhhcyBtdWx0 aXBsZSBwZXJzb25hbGl0aWVzCisJCQkgKi8KKwkJCWlmICghZW5jb2Rlci0+Y29tcHV0ZV9vdXRw dXRfdHlwZSkKKwkJCQlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IDEgPDwgZW5jb2Rlci0+ dHlwZTsKIAkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOwogCQl9 CiAJfQpAQCAtMTU5MTYsNyArMTU5MjAsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9y ZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWlmIChlbmNvZGVyLT5n ZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpKSB7CiAJCQljcnRjID0gdG9faW50ZWxfY3J0Yyhk ZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV0pOwogCQkJZW5jb2Rlci0+YmFzZS5j cnRjID0gJmNydGMtPmJhc2U7Ci0JCQljcnRjLT5jb25maWctPm91dHB1dF90eXBlcyB8PSAxIDw8 IGVuY29kZXItPnR5cGU7CisJCQkvKgorCQkJICogLmdldF9jb25maWcoKSBpcyByZXNwb25zaWJs ZSBmb3IgdGhpcyBpZiB0aGUKKwkJCSAqIGVuY29kZXIgaGFzIG11bHRpcGxlIHBlcnNvbmFsaXRp ZXMKKwkJCSAqLworCQkJaWYgKCFlbmNvZGVyLT5jb21wdXRlX291dHB1dF90eXBlKQorCQkJCWNy dGMtPmNvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IDEgPDwgZW5jb2Rlci0+dHlwZTsKIAkJCWVuY29k ZXItPmdldF9jb25maWcoZW5jb2RlciwgY3J0Yy0+Y29uZmlnKTsKIAkJfSBlbHNlIHsKIAkJCWVu Y29kZXItPmJhc2UuY3J0YyA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBlMzQ0 MjZkYzVjMWUuLjVlZTc3NzVkNzFkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC00MjAw LDkgKzQyMDAsNiBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmludGVsX2Nvbm5lY3RvcikKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKGludGVsX2VuY29kZXIt PnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkKLQkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVM X09VVFBVVF9EUDsKLQogCWludGVsX2RwX3Byb2JlX291aShpbnRlbF9kcCk7CiAKIAlyZXQgPSBp bnRlbF9kcF9wcm9iZV9tc3QoaW50ZWxfZHApOwpAQCAtNDI2Niw4ICs0MjYzLDYgQEAgc3RhdGlj IGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogewogCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPSBpbnRlbF9hdHRhY2hlZF9kcChjb25uZWN0b3IpOwotCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwotCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2RpZ19wb3J0LT5iYXNl OwogCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nv bm5lY3Rvcihjb25uZWN0b3IpOwogCiAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11c biIsCkBAIC00Mjc2LDggKzQyNzEsNiBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAlpZiAoaW50ZWxfZHAtPmlzX21zdCkgewog CQkvKiBNU1QgZGV2aWNlcyBhcmUgZGlzY29ubmVjdGVkIGZyb20gYSBtb25pdG9yIFBPViAqLwog CQlpbnRlbF9kcF91bnNldF9lZGlkKGludGVsX2RwKTsKLQkJaWYgKGludGVsX2VuY29kZXItPnR5 cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkKLQkJCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9P VVRQVVRfRFA7CiAJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKIAl9CiAK QEAgLTQzMTQsOSArNDMwNyw2IEBAIGludGVsX2RwX2ZvcmNlKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpCiAJaW50ZWxfZHBfc2V0X2VkaWQoaW50ZWxfZHApOwogCiAJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Ci0KLQlpZiAoaW50ZWxfZW5j b2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQotCQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0RQOwogfQogCiBzdGF0aWMgaW50IGludGVsX2RwX2dldF9tb2RlcyhzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQpAQCAtNDU5NSwxMCArNDU4NSw2IEBAIGludGVs X2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwg Ym9vbCBsb25nX2hwZCkKIAllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2Rv bWFpbjsKIAllbnVtIGlycXJldHVybiByZXQgPSBJUlFfTk9ORTsKIAotCWlmIChpbnRlbF9kaWdf cG9ydC0+YmFzZS50eXBlICE9IElOVEVMX09VVFBVVF9FRFAgJiYKLQkgICAgaW50ZWxfZGlnX3Bv cnQtPmJhc2UudHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkKLQkJaW50ZWxfZGlnX3BvcnQtPmJh c2UudHlwZSA9IElOVEVMX09VVFBVVF9EUDsKLQogCWlmIChsb25nX2hwZCAmJiBpbnRlbF9kaWdf cG9ydC0+YmFzZS50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKIAkJLyoKIAkJICogdmRkIG9m ZiBjYW4gZ2VuZXJhdGUgYSBsb25nIHB1bHNlIG9uIGVEUCB3aGljaApAQCAtNTQ1NSw3ICs1NDQx LDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCiAJLyoKIAkgKiBGb3IgZURQIHdlIGFsd2F5cyBzZXQgdGhlIGVuY29k ZXIgdHlwZSB0byBJTlRFTF9PVVRQVVRfRURQLCBidXQKIAkgKiBmb3IgRFAgdGhlIGVuY29kZXIg dHlwZSBjYW4gYmUgc2V0IGJ5IHRoZSBjYWxsZXIgdG8KLQkgKiBJTlRFTF9PVVRQVVRfVU5LTk9X TiBmb3IgRERJLCBzbyBkb24ndCByZXdyaXRlIGl0LgorCSAqIElOVEVMX09VVFBVVF9EREksIHNv IGRvbid0IHJld3JpdGUgaXQuCiAJICovCiAJaWYgKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9S X2VEUCkKIAkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9FRFA7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwppbmRleCA1Zjk2NDY2ZTRlNDcuLmYyZTI4MjllYmY1 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCkBAIC02OTgsNyArNjk4LDcg QEAgaHN3X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAltZW1zZXQoJmNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUs IDAsCiAJICAgICAgIHNpemVvZihjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlKSk7CiAKLQlpZiAo ZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgeworCWlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkgewogCQl1aW50MzJfdCB2YWw7 CiAJCXVuc2lnbmVkIHAsIG4yLCByMjsKIApAQCAtNzEzLDkgKzcxMyw3IEBAIGhzd19nZXRfZHBs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCiAJCXBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwoY3J0YywgY3J0Y19zdGF0ZSwK IAkJCQkJICAgICBEUExMX0lEX1dSUExMMSwgRFBMTF9JRF9XUlBMTDIpOwogCi0JfSBlbHNlIGlm IChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUCB8fAotCQkgICBlbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9EUF9NU1QgfHwKLQkJICAgZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9P VVRQVVRfRURQKSB7CisJfSBlbHNlIGlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNf c3RhdGUpKSB7CiAJCWVudW0gaW50ZWxfZHBsbF9pZCBwbGxfaWQ7CiAKIAkJc3dpdGNoIChjbG9j ayAvIDIpIHsKQEAgLTczNSw3ICs3MzMsNyBAQCBoc3dfZ2V0X2RwbGwoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiAJCXBsbCA9 IGludGVsX2dldF9zaGFyZWRfZHBsbF9ieV9pZChkZXZfcHJpdiwgcGxsX2lkKTsKIAotCX0gZWxz ZSBpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfQU5BTE9HKSB7CisJfSBlbHNlIGlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9BTkFMT0cpKSB7 CiAJCWlmIChXQVJOX09OKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgLyAyICE9IDEzNTAwMCkpCiAJ CQlyZXR1cm4gTlVMTDsKIApAQCAtMTIwNSw3ICsxMjAzLDcgQEAgc2tsX2dldF9kcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IAogCWN0cmwxID0gRFBMTF9DVFJMMV9PVkVSUklERSgwKTsKIAotCWlmIChlbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9IRE1JKSB7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19z dGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKSB7CiAJCXN0cnVjdCBza2xfd3JwbGxfcGFyYW1zIHdy cGxsX3BhcmFtcyA9IHsgMCwgfTsKIAogCQljdHJsMSB8PSBEUExMX0NUUkwxX0hETUlfTU9ERSgw KTsKQEAgLTEyMjIsOSArMTIyMCw3IEBAIHNrbF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgRFBMTF9DRkdD UjJfS0RJVih3cnBsbF9wYXJhbXMua2RpdikgfAogCQkJIERQTExfQ0ZHQ1IyX1BESVYod3JwbGxf cGFyYW1zLnBkaXYpIHwKIAkJCSB3cnBsbF9wYXJhbXMuY2VudHJhbF9mcmVxOwotCX0gZWxzZSBp ZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFAgfHwKLQkJICAgZW5jb2Rlci0+dHlw ZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNUIHx8Ci0JCSAgIGVuY29kZXItPnR5cGUgPT0gSU5URUxf T1VUUFVUX0VEUCkgeworCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRj X3N0YXRlKSkgewogCQlzd2l0Y2ggKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgLyAyKSB7CiAJCWNh c2UgODEwMDA6CiAJCQljdHJsMSB8PSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJ TktfUkFURV84MTAsIDApOwpAQCAtMTI1OSw3ICsxMjU1LDcgQEAgc2tsX2dldF9kcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IAljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmNmZ2NyMSA9IGNmZ2NyMTsKIAljcnRjX3N0YXRl LT5kcGxsX2h3X3N0YXRlLmNmZ2NyMiA9IGNmZ2NyMjsKIAotCWlmIChlbmNvZGVyLT50eXBlID09 IElOVEVMX09VVFBVVF9FRFApCisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0VEUCkpCiAJCXBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwoY3J0Yywg Y3J0Y19zdGF0ZSwKIAkJCQkJICAgICBEUExMX0lEX1NLTF9EUExMMCwKIAkJCQkJICAgICBEUExM X0lEX1NLTF9EUExMMCk7CkBAIC0xNTA3LDcgKzE1MDMsNyBAQCBieHRfZ2V0X2RwbGwoc3RydWN0 IGludGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CXVpbnQzMl90IGxhbmVzdGFnZ2VyOwogCWludCBjbG9jayA9IGNydGNfc3RhdGUtPnBvcnRfY2xv Y2s7CiAKLQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgeworCWlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkgewogCQlz dHJ1Y3QgZHBsbCBiZXN0X2Nsb2NrOwogCiAJCS8qIENhbGN1bGF0ZSBIRE1JIGRpdiAqLwpAQCAt MTUzMCw4ICsxNTI2LDcgQEAgYnh0X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJY2xrX2Rpdi5tMl9mcmFjX2Vu ID0gY2xrX2Rpdi5tMl9mcmFjICE9IDA7CiAKIAkJdmNvID0gYmVzdF9jbG9jay52Y287Ci0JfSBl bHNlIGlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUCB8fAotCQkgICBlbmNvZGVy LT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwl9IGVsc2UgaWYgKGludGVsX2NydGNfaGFz X2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpIHsKIAkJaW50IGk7CiAKIAkJY2xrX2RpdiA9IGJ4dF9k cF9jbGtfdmFsWzBdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAzY2MwZDRmY2RjMzYu LmQ4MjlkNTdjOWZhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTEzOCw3ICsxMzgs NyBAQCBlbnVtIGludGVsX291dHB1dF90eXBlIHsKIAlJTlRFTF9PVVRQVVRfRFAgPSA3LAogCUlO VEVMX09VVFBVVF9FRFAgPSA4LAogCUlOVEVMX09VVFBVVF9EU0kgPSA5LAotCUlOVEVMX09VVFBV VF9VTktOT1dOID0gMTAsCisJSU5URUxfT1VUUFVUX0RESSA9IDEwLAogCUlOVEVMX09VVFBVVF9E UF9NU1QgPSAxMSwKIH07CiAKQEAgLTE2OCw2ICsxNjgsOCBAQCBzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciB7CiAJZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB0eXBlOwogCXVuc2lnbmVkIGludCBjbG9uZWFi bGU7CiAJdm9pZCAoKmhvdF9wbHVnKShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqKTsKKwllbnVtIGlu dGVsX291dHB1dF90eXBlICgqY29tcHV0ZV9vdXRwdXRfdHlwZSkoc3RydWN0IGludGVsX2VuY29k ZXIgKiwKKwkJCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICopOwogCWJvb2wgKCpj b21wdXRlX2NvbmZpZykoc3RydWN0IGludGVsX2VuY29kZXIgKiwKIAkJCSAgICAgICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqKTsKIAl2b2lkICgqcHJlX3BsbF9lbmFibGUpKHN0cnVjdCBpbnRl bF9lbmNvZGVyICopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRt aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCmluZGV4IDFiOTFkNjVlY2Zi OS4uODMwOTY4Y2RjMWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCkBAIC0xNDk1LDEy ICsxNDk1LDkgQEAgaW50ZWxfaGRtaV9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgYm9vbCBmb3JjZSkKIAogCWludGVsX2hkbWlfdW5zZXRfZWRpZChjb25uZWN0b3IpOwog Ci0JaWYgKGludGVsX2hkbWlfc2V0X2VkaWQoY29ubmVjdG9yLCBsaXZlX3N0YXR1cykpIHsKLQkJ c3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBpbnRlbF9hdHRhY2hlZF9oZG1pKGNvbm5l Y3Rvcik7Ci0KLQkJaGRtaV90b19kaWdfcG9ydChpbnRlbF9oZG1pKS0+YmFzZS50eXBlID0gSU5U RUxfT1VUUFVUX0hETUk7CisJaWYgKGludGVsX2hkbWlfc2V0X2VkaWQoY29ubmVjdG9yLCBsaXZl X3N0YXR1cykpCiAJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwotCX0gZWxz ZQorCWVsc2UKIAkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7CiAKIAlp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKQEAg LTE1MTEsOCArMTUwOCw2IEBAIGludGVsX2hkbWlfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCiBzdGF0aWMgdm9pZAogaW50ZWxfaGRtaV9mb3JjZShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewotCXN0cnVjdCBpbnRlbF9oZG1pICpp bnRlbF9oZG1pID0gaW50ZWxfYXR0YWNoZWRfaGRtaShjb25uZWN0b3IpOwotCiAJRFJNX0RFQlVH X0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCiAJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwg Y29ubmVjdG9yLT5uYW1lKTsKIApAQCAtMTUyMiw3ICsxNTE3LDYgQEAgaW50ZWxfaGRtaV9mb3Jj ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlyZXR1cm47CiAKIAlpbnRlbF9o ZG1pX3NldF9lZGlkKGNvbm5lY3RvciwgdHJ1ZSk7Ci0JaGRtaV90b19kaWdfcG9ydChpbnRlbF9o ZG1pKS0+YmFzZS50eXBlID0gSU5URUxfT1VUUFVUX0hETUk7CiB9CiAKIHN0YXRpYyBpbnQgaW50 ZWxfaGRtaV9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCmluZGV4IGU2MTMxN2Y1YTU4Ni4uYmY5ZGY2NjRj ZjEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKQEAgLTM2NSw3ICszNjUs NyBAQCBpbnQgaW50ZWxfb3ByZWdpb25fbm90aWZ5X2VuY29kZXIoc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIsCiAJY2FzZSBJTlRFTF9PVVRQVVRfQU5BTE9HOgogCQl0eXBlID0g RElTUExBWV9UWVBFX0NSVDsKIAkJYnJlYWs7Ci0JY2FzZSBJTlRFTF9PVVRQVVRfVU5LTk9XTjoK KwljYXNlIElOVEVMX09VVFBVVF9EREk6CiAJY2FzZSBJTlRFTF9PVVRQVVRfRFA6CiAJY2FzZSBJ TlRFTF9PVVRQVVRfSERNSToKIAljYXNlIElOVEVMX09VVFBVVF9EUF9NU1Q6Ci0tIAoyLjcuNAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==