From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v4 9/9] drm/i915: Convert intel_sdvo connector properties to atomic. Date: Wed, 12 Apr 2017 12:50:07 +0200 Message-ID: <1491994207-25965-10-git-send-email-maarten.lankhorst@linux.intel.com> References: <1491994207-25965-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id D039A6E6D1 for ; Wed, 12 Apr 2017 10:50:38 +0000 (UTC) In-Reply-To: <1491994207-25965-1-git-send-email-maarten.lankhorst@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 U0RWTyB3YXMgdGhlIGxhc3QgY29ubmVjdG9yIHRoYXQncyBzdGlsbCB1c2luZyB0aGUgbGVnYWN5 IHBhdGhzCmZvciBwcm9wZXJ0aWVzLCBhbmQgdGhpcyBpcyB3aXRoIGEgcmVhc29uIQoKVGhpcyBj b25uZWN0b3IgaW1wbGVtZW50cyBhIGxvdCBvZiBwcm9wZXJ0aWVzIGR5bmFtaWNhbGx5LAphbmQg c29tZSBvZiB0aGVtIHNoYXJlZCB3aXRoIHRoZSBkaWdpdGFsIGNvbm5lY3RvciBzdGF0ZSwKc28g c2R2b19jb25uZWN0b3Jfc3RhdGUgc3ViY2xhc3NlcyBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9z dGF0ZS4KCnNldF9wcm9wZXJ0eSBoYWQgYSBsb3Qgb2YgdmFsaWRhdGlvbiwgYnV0IHRoaXMgaXMg aGFuZGxlZCBpbiB0aGUKZHJtIGNvcmUsIHNvIG1vc3Qgb2YgdGhlIHZhbGlkYXRpb24gY2FuIGRp ZSBvZmYuIFRoZSBwcm9wZXJ0aWVzCmFyZSB3cml0dGVuIHJpZ2h0IGJlZm9yZSBlbmFibGluZyB0 aGUgY29ubmVjdG9yLCBzaW5jZSB0aGVyZSBpcyBubwpnb29kIHdheSB0byB1cGRhdGUgdGhlIHBy b3BlcnRpZXMgd2l0aG91dCBjcnRjLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWMuYyAgfCAgNDAgLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgfCAgMzcgLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgfCAgIDYgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jICAgIHwgNTM4ICsr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDI4MSBp bnNlcnRpb25zKCspLCAzNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9t aWMuYwppbmRleCBlYjcyMTY2Njc1ZjAuLmYwNjhiNjIzY2YxMCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljLmMKQEAgLTM2LDQ2ICszNiw2IEBACiAjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi CiAKIC8qKgotICogaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkgLSBmZXRjaCBs ZWdhY3kgY29ubmVjdG9yIHByb3BlcnR5IHZhbHVlCi0gKiBAY29ubmVjdG9yOiBjb25uZWN0b3Ig dG8gZmV0Y2ggcHJvcGVydHkgZm9yCi0gKiBAc3RhdGU6IHN0YXRlIGNvbnRhaW5pbmcgdGhlIHBy b3BlcnR5IHZhbHVlCi0gKiBAcHJvcGVydHk6IHByb3BlcnR5IHRvIGxvb2sgdXAKLSAqIEB2YWw6 IHBvaW50ZXIgdG8gd3JpdGUgcHJvcGVydHkgdmFsdWUgaW50bwotICoKLSAqIFRoZSBEUk0gY29y ZSBkb2VzIG5vdCBzdG9yZSBzaGFkb3cgY29waWVzIG9mIHByb3BlcnRpZXMgZm9yCi0gKiBhdG9t aWMtY2FwYWJsZSBkcml2ZXJzLiAgVGhpcyBlbnRyeXBvaW50IGlzIHVzZWQgdG8gZmV0Y2gKLSAq IHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgZHJpdmVyLXNwZWNpZmljIGNvbm5lY3RvciBwcm9wZXJ0 eS4KLSAqCi0gKiBUaGlzIGlzIGEgaW50ZXJtZWRpYXJ5IHNvbHV0aW9uIHVudGlsIGFsbCBjb25u ZWN0b3JzIGFyZQotICogY29udmVydGVkIHRvIHN1cHBvcnQgZnVsbCBhdG9taWMgcHJvcGVydGll cy4KLSAqLwotaW50IGludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCQkJCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpzdGF0ZSwKLQkJCQkJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCi0JCQkJ CXVpbnQ2NF90ICp2YWwpCi17Ci0JaW50IGk7Ci0KLQkvKgotCSAqIFRPRE86IFdlIG9ubHkgaGF2 ZSBhdG9taWMgbW9kZXNldCBmb3IgcGxhbmVzIGF0IHRoZSBtb21lbnQsIHNvIHRoZQotCSAqIGNy dGMvY29ubmVjdG9yIGNvZGUgaXNuJ3QgcXVpdGUgcmVhZHkgeWV0LiAgVW50aWwgaXQncyByZWFk eSwKLQkgKiBjb250aW51ZSB0byBsb29rIHVwIGFsbCBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIERS TSdzIHNoYWRvdyBjb3B5Ci0JICogaW4gb2JqLT5wcm9wZXJ0aWVzLT52YWx1ZXNbXS4KLQkgKgot CSAqIFdoZW4gdGhlIGNydGMvY29ubmVjdG9yIHN0YXRlIHdvcmsgbWF0dXJlcywgdGhpcyBmdW5j dGlvbiBzaG91bGQKLQkgKiBiZSB1cGRhdGVkIHRvIHJlYWQgdGhlIHZhbHVlcyBvdXQgb2YgdGhl IHN0YXRlIHN0cnVjdHVyZSBpbnN0ZWFkLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBjb25uZWN0 b3ItPmJhc2UucHJvcGVydGllcy0+Y291bnQ7IGkrKykgewotCQlpZiAoY29ubmVjdG9yLT5iYXNl LnByb3BlcnRpZXMtPnByb3BlcnRpZXNbaV0gPT0gcHJvcGVydHkpIHsKLQkJCSp2YWwgPSBjb25u ZWN0b3ItPmJhc2UucHJvcGVydGllcy0+dmFsdWVzW2ldOwotCQkJcmV0dXJuIDA7Ci0JCX0KLQl9 Ci0KLQlyZXR1cm4gLUVJTlZBTDsKLX0KLQotLyoqCiAgKiBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rv cl9hdG9taWNfZ2V0X3Byb3BlcnR5IC0gaG9vayBmb3IgY29ubmVjdG9yLT5hdG9taWNfZ2V0X3By b3BlcnR5LgogICogQGNvbm5lY3RvcjogQ29ubmVjdG9yIHRvIGdldCB0aGUgcHJvcGVydHkgZm9y LgogICogQHN0YXRlOiBDb25uZWN0b3Igc3RhdGUgdG8gcmV0cmlldmUgdGhlIHByb3BlcnR5IGZy b20uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggNWViNGRkYjA0Nzk3Li5j MmMzNjdiOTBjMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzMDc1 LDQzICsxMzA3NSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCXJldHVybiAwOwogfQogCi12b2lkIGludGVsX2NydGNfcmVzdG9yZV9t b2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+ZGV2OwotCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKLQlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0JaW50IHJldDsKLQotCXN0YXRlID0gZHJtX2F0b21p Y19zdGF0ZV9hbGxvYyhkZXYpOwotCWlmICghc3RhdGUpIHsKLQkJRFJNX0RFQlVHX0tNUygiW0NS VEM6JWQ6JXNdIGNydGMgcmVzdG9yZSBmYWlsZWQsIG91dCBvZiBtZW1vcnkiLAotCQkJICAgICAg Y3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Ci0JCXJldHVybjsKLQl9Ci0KLQlzdGF0ZS0+YWNx dWlyZV9jdHggPSBjcnRjLT5kZXYtPm1vZGVfY29uZmlnLmFjcXVpcmVfY3R4OwotCi1yZXRyeToK LQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Ci0J cmV0ID0gUFRSX0VSUl9PUl9aRVJPKGNydGNfc3RhdGUpOwotCWlmICghcmV0KSB7Ci0JCWlmICgh Y3J0Y19zdGF0ZS0+YWN0aXZlKQotCQkJZ290byBvdXQ7Ci0KLQkJY3J0Y19zdGF0ZS0+bW9kZV9j aGFuZ2VkID0gdHJ1ZTsKLQkJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwotCX0KLQot CWlmIChyZXQgPT0gLUVERUFETEspIHsKLQkJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7 Ci0JCWRybV9tb2Rlc2V0X2JhY2tvZmYoc3RhdGUtPmFjcXVpcmVfY3R4KTsKLQkJZ290byByZXRy eTsKLQl9Ci0KLW91dDoKLQlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Ci19Ci0KIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgaW50ZWxfY3J0Y19mdW5jcyA9IHsKIAkuZ2Ft bWFfc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCwKIAkuc2V0X2NvbmZp ZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CmluZGV4IGQxYmJhNDc5MGVhZS4uZDIxMTg0MTNkZDE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaApAQCAtMTMxOCw3ICsxMzE4LDYgQEAgdW5zaWduZWQgaW50IGludGVsX3JvdGF0aW9uX2lu Zm9fc2l6ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqcm90X2luZm8KIGJvb2wg aW50ZWxfaGFzX3BlbmRpbmdfZmJfdW5waW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKIHZvaWQgaW50ZWxfbWFya19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiB2b2lkIGludGVsX21hcmtfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwotdm9pZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwogaW50IGludGVsX2Rpc3BsYXlfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IHZvaWQgaW50ZWxfcHBzX3VubG9ja19yZWdzX3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiB2b2lkIGludGVsX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpOwpAQCAtMTg3OSwxMSArMTg3OCw2IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVf ZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3Jr CiB2b2lkIGludGVsX3R2X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IAogLyogaW50ZWxfYXRvbWljLmMgKi8KLWludCBpbnRlbF9jb25uZWN0b3JfYXRvbWljX2dldF9w cm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkJCQljb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCi0JCQkJCXN0cnVjdCBkcm1fcHJvcGVydHkg KnByb3BlcnR5LAotCQkJCQl1aW50NjRfdCAqdmFsKTsKLQogaW50IGludGVsX2RpZ2l0YWxfY29u bmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKIAkJCQkJCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwKIAkJCQkJ CXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc2R2by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5j CmluZGV4IDk4NTVlNGQ0ODU0Mi4uMGFhYzdjZTJiMjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c2R2by5jCkBAIC0xMDAsMTggKzEwMCw2IEBAIHN0cnVjdCBpbnRlbF9zZHZvIHsKIAl1aW50MTZf dCBob3RwbHVnX2FjdGl2ZTsKIAogCS8qKgotCSAqIFRoaXMgaXMgdXNlZCB0byBzZWxlY3QgdGhl IGNvbG9yIHJhbmdlIG9mIFJCRyBvdXRwdXRzIGluIEhETUkgbW9kZS4KLQkgKiBJdCBpcyBvbmx5 IHZhbGlkIHdoZW4gdXNpbmcgVE1EUyBlbmNvZGluZyBhbmQgOCBiaXQgcGVyIGNvbG9yIG1vZGUu Ci0JICovCi0JdWludDMyX3QgY29sb3JfcmFuZ2U7Ci0JYm9vbCBjb2xvcl9yYW5nZV9hdXRvOwot Ci0JLyoqCi0JICogSERNSSB1c2VyIHNwZWNpZmllZCBhc3BlY3QgcmF0aW8KLQkgKi8KLQllbnVt IGhkbWlfcGljdHVyZV9hc3BlY3QgYXNwZWN0X3JhdGlvOwotCi0JLyoqCiAJICogVGhpcyBpcyBz ZXQgaWYgd2UncmUgZ29pbmcgdG8gdHJlYXQgdGhlIGRldmljZSBhcyBUVi1vdXQuCiAJICoKIAkg KiBXaGlsZSB3ZSBoYXZlIHRoZXNlIG5pY2UgZnJpZW5kbHkgZmxhZ3MgZm9yIG91dHB1dCB0eXBl cyB0aGF0IG91Z2h0CkBAIC0xMjIsOSArMTEwLDYgQEAgc3RydWN0IGludGVsX3Nkdm8gewogCiAJ ZW51bSBwb3J0IHBvcnQ7CiAKLQkvKiBUaGlzIGlzIGZvciBjdXJyZW50IHR2IGZvcm1hdCBuYW1l ICovCi0JaW50IHR2X2Zvcm1hdF9pbmRleDsKLQogCS8qKgogCSAqIFRoaXMgaXMgc2V0IGlmIHdl IHRyZWF0IHRoZSBkZXZpY2UgYXMgSERNSSwgaW5zdGVhZCBvZiBEVkkuCiAJICovCkBAIC0xNTks OCArMTQ0LDYgQEAgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yIHsKIAkvKiBNYXJrIHRoZSB0 eXBlIG9mIGNvbm5lY3RvciAqLwogCXVpbnQxNl90IG91dHB1dF9mbGFnOwogCi0JZW51bSBoZG1p X2ZvcmNlX2F1ZGlvIGZvcmNlX2F1ZGlvOwotCiAJLyogVGhpcyBjb250YWlucyBhbGwgY3VycmVu dCBzdXBwb3J0ZWQgVFYgZm9ybWF0ICovCiAJdTggdHZfZm9ybWF0X3N1cHBvcnRlZFtUVl9GT1JN QVRfTlVNXTsKIAlpbnQgICBmb3JtYXRfc3VwcG9ydGVkX251bTsKQEAgLTE4NywyNCArMTcwLDE5 IEBAIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciB7CiAJLyogYWRkIHRoZSBwcm9wZXJ0eSBm b3IgdGhlIFNEVk8tVFYvTFZEUyAqLwogCXN0cnVjdCBkcm1fcHJvcGVydHkgKmJyaWdodG5lc3M7 CiAKLQkvKiBBZGQgdmFyaWFibGUgdG8gcmVjb3JkIGN1cnJlbnQgc2V0dGluZyBmb3IgdGhlIGFi b3ZlIHByb3BlcnR5ICovCi0JdTMyCWxlZnRfbWFyZ2luLCByaWdodF9tYXJnaW4sIHRvcF9tYXJn aW4sIGJvdHRvbV9tYXJnaW47Ci0KIAkvKiB0aGlzIGlzIHRvIGdldCB0aGUgcmFuZ2Ugb2YgbWFy Z2luLiovCi0JdTMyCW1heF9oc2NhbiwgIG1heF92c2NhbjsKLQl1MzIJbWF4X2hwb3MsIGN1cl9o cG9zOwotCXUzMgltYXhfdnBvcywgY3VyX3Zwb3M7Ci0JdTMyCWN1cl9icmlnaHRuZXNzLCBtYXhf YnJpZ2h0bmVzczsKLQl1MzIJY3VyX2NvbnRyYXN0LAltYXhfY29udHJhc3Q7Ci0JdTMyCWN1cl9z YXR1cmF0aW9uLCBtYXhfc2F0dXJhdGlvbjsKLQl1MzIJY3VyX2h1ZSwJbWF4X2h1ZTsKLQl1MzIJ Y3VyX3NoYXJwbmVzcywJbWF4X3NoYXJwbmVzczsKLQl1MzIJY3VyX2ZsaWNrZXJfZmlsdGVyLAkJ bWF4X2ZsaWNrZXJfZmlsdGVyOwotCXUzMgljdXJfZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmUsCW1h eF9mbGlja2VyX2ZpbHRlcl9hZGFwdGl2ZTsKLQl1MzIJY3VyX2ZsaWNrZXJfZmlsdGVyXzJkLAkJ bWF4X2ZsaWNrZXJfZmlsdGVyXzJkOwotCXUzMgljdXJfdHZfY2hyb21hX2ZpbHRlciwJbWF4X3R2 X2Nocm9tYV9maWx0ZXI7Ci0JdTMyCWN1cl90dl9sdW1hX2ZpbHRlciwJbWF4X3R2X2x1bWFfZmls dGVyOwotCXUzMgljdXJfZG90X2NyYXdsLAltYXhfZG90X2NyYXdsOworCXUzMiBtYXhfaHNjYW4s IG1heF92c2NhbjsKK307CisKK3N0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZSB7CisJ LyogYmFzZS5iYXNlOiB0di5zYXR1cmF0aW9uL2NvbnRyYXN0L2h1ZS9icmlnaHRuZXNzICovCisJ c3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlIGJhc2U7CisKKwlzdHJ1Y3Qgewor CQl1bnNpZ25lZCBvdmVyc2Nhbl9oLCBvdmVyc2Nhbl92LCBocG9zLCB2cG9zLCBzaGFycG5lc3M7 CisJCXVuc2lnbmVkIGZsaWNrZXJfZmlsdGVyLCBmbGlja2VyX2ZpbHRlcl8yZCwgZmxpY2tlcl9m aWx0ZXJfYWRhcHRpdmU7CisJCXVuc2lnbmVkIGNocm9tYV9maWx0ZXIsIGx1bWFfZmlsdGVyLCBk b3RfY3Jhd2w7CisJfSB0djsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2R2byAqdG9fc2R2 byhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKQEAgLTIxNyw5ICsxOTUsMTYgQEAgc3Rh dGljIHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9hdHRhY2hlZF9zZHZvKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCiAJcmV0dXJuIHRvX3Nkdm8oaW50ZWxfYXR0YWNoZWRfZW5jb2Rl cihjb25uZWN0b3IpKTsKIH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAq dG9faW50ZWxfc2R2b19jb25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikK K3N0YXRpYyBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgKgordG9faW50ZWxfc2R2b19jb25u ZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKLQlyZXR1cm4gY29udGFp bmVyX29mKHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpLCBzdHJ1Y3QgaW50ZWxfc2R2b19j b25uZWN0b3IsIGJhc2UpOworCXJldHVybiBjb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3Qg aW50ZWxfc2R2b19jb25uZWN0b3IsIGJhc2UuYmFzZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW50 ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUgKgordG9faW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUo c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIGNvbnRh aW5lcl9vZihjb25uX3N0YXRlLCBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUsIGJh c2UuYmFzZSk7CiB9CiAKIHN0YXRpYyBib29sCkBAIC0xMDM1LDEyICsxMDIwLDEzIEBAIHN0YXRp YyBib29sIGludGVsX3Nkdm9fc2V0X2F2aV9pbmZvZnJhbWUoc3RydWN0IGludGVsX3Nkdm8gKmlu dGVsX3Nkdm8sCiAJCQkJCSAgc2R2b19kYXRhLCBzaXplb2Yoc2R2b19kYXRhKSk7CiB9CiAKLXN0 YXRpYyBib29sIGludGVsX3Nkdm9fc2V0X3R2X2Zvcm1hdChzdHJ1Y3QgaW50ZWxfc2R2byAqaW50 ZWxfc2R2bykKK3N0YXRpYyBib29sIGludGVsX3Nkdm9fc2V0X3R2X2Zvcm1hdChzdHJ1Y3QgaW50 ZWxfc2R2byAqaW50ZWxfc2R2bywKKwkJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICpjb25uX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9zZHZvX3R2X2Zvcm1hdCBmb3JtYXQ7CiAJ dWludDMyX3QgZm9ybWF0X21hcDsKIAotCWZvcm1hdF9tYXAgPSAxIDw8IGludGVsX3Nkdm8tPnR2 X2Zvcm1hdF9pbmRleDsKKwlmb3JtYXRfbWFwID0gMSA8PCBjb25uX3N0YXRlLT50di5tb2RlOwog CW1lbXNldCgmZm9ybWF0LCAwLCBzaXplb2YoZm9ybWF0KSk7CiAJbWVtY3B5KCZmb3JtYXQsICZm b3JtYXRfbWFwLCBtaW4oc2l6ZW9mKGZvcm1hdCksIHNpemVvZihmb3JtYXRfbWFwKSkpOwogCkBA IC0xMTI3LDggKzExMTMsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAgICAgIHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9z ZHZvID0gdG9fc2R2byhlbmNvZGVyKTsKLQlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgKmlu dGVsX3Nkdm9fY29ubmVjdG9yID0KLQkJdG9faW50ZWxfc2R2b19jb25uZWN0b3IoY29ubl9zdGF0 ZS0+Y29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUgKmludGVs X3Nkdm9fc3RhdGUgPQorCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRl KTsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0g JnBpcGVfY29uZmlnLT5iYXNlLm1vZGU7CiAKQEAgLTExNjcsMTQgKzExNTMsMTQgQEAgc3RhdGlj IGJvb2wgaW50ZWxfc2R2b19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKIAlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9CiAJCWludGVsX3Nkdm9fZ2V0 X3BpeGVsX211bHRpcGxpZXIoYWRqdXN0ZWRfbW9kZSk7CiAKLQlpZiAoaW50ZWxfc2R2b19jb25u ZWN0b3ItPmZvcmNlX2F1ZGlvICE9IEhETUlfQVVESU9fT0ZGX0RWSSkKKwlpZiAoaW50ZWxfc2R2 b19zdGF0ZS0+YmFzZS5mb3JjZV9hdWRpbyAhPSBIRE1JX0FVRElPX09GRl9EVkkpCiAJCXBpcGVf Y29uZmlnLT5oYXNfaGRtaV9zaW5rID0gaW50ZWxfc2R2by0+aGFzX2hkbWlfbW9uaXRvcjsKIAot CWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Zm9yY2VfYXVkaW8gPT0gSERNSV9BVURJT19PTiB8 fAotCSAgICAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmZvcmNlX2F1ZGlvID09IEhETUlfQVVESU9f QVVUTyAmJiBpbnRlbF9zZHZvLT5oYXNfaGRtaV9hdWRpbykpCisJaWYgKGludGVsX3Nkdm9fc3Rh dGUtPmJhc2UuZm9yY2VfYXVkaW8gPT0gSERNSV9BVURJT19PTiB8fAorCSAgICAoaW50ZWxfc2R2 b19zdGF0ZS0+YmFzZS5mb3JjZV9hdWRpbyA9PSBIRE1JX0FVRElPX0FVVE8gJiYgaW50ZWxfc2R2 by0+aGFzX2hkbWlfYXVkaW8pKQogCQlwaXBlX2NvbmZpZy0+aGFzX2F1ZGlvID0gdHJ1ZTsKIAot CWlmIChpbnRlbF9zZHZvLT5jb2xvcl9yYW5nZV9hdXRvKSB7CisJaWYgKGludGVsX3Nkdm9fc3Rh dGUtPmJhc2UuYnJvYWRjYXN0X3JnYiA9PSBJTlRFTF9CUk9BRENBU1RfUkdCX0FVVE8pIHsKIAkJ LyogU2VlIENFQS04NjEtRSAtIDUuMSBEZWZhdWx0IEVuY29kaW5nIFBhcmFtZXRlcnMgKi8KIAkJ LyogRklYTUU6IFRoaXMgYml0IGlzIG9ubHkgdmFsaWQgd2hlbiB1c2luZyBUTURTIGVuY29kaW5n IGFuZCA4CiAJCSAqIGJpdCBwZXIgY29sb3IgbW9kZS4gKi8KQEAgLTExODMsNyArMTE2OSw3IEBA IHN0YXRpYyBib29sIGludGVsX3Nkdm9fY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCiAJCQlwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSA9IHRydWU7 CiAJfSBlbHNlIHsKIAkJaWYgKHBpcGVfY29uZmlnLT5oYXNfaGRtaV9zaW5rICYmCi0JCSAgICBp bnRlbF9zZHZvLT5jb2xvcl9yYW5nZSA9PSBIRE1JX0NPTE9SX1JBTkdFXzE2XzIzNSkKKwkJICAg IGludGVsX3Nkdm9fc3RhdGUtPmJhc2UuYnJvYWRjYXN0X3JnYiA9PSBJTlRFTF9CUk9BRENBU1Rf UkdCX0xJTUlURUQpCiAJCQlwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSA9IHRydWU7 CiAJfQogCkBAIC0xMTkzLDExICsxMTc5LDczIEBAIHN0YXRpYyBib29sIGludGVsX3Nkdm9fY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAkvKiBTZXQgdXNl ciBzZWxlY3RlZCBQQVIgdG8gaW5jb21pbmcgbW9kZSdzIG1lbWJlciAqLwogCWlmIChpbnRlbF9z ZHZvLT5pc19oZG1pKQotCQlhZGp1c3RlZF9tb2RlLT5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IGlu dGVsX3Nkdm8tPmFzcGVjdF9yYXRpbzsKKwkJYWRqdXN0ZWRfbW9kZS0+cGljdHVyZV9hc3BlY3Rf cmF0aW8gPSBjb25uX3N0YXRlLT5waWN0dXJlX2FzcGVjdF9yYXRpbzsKIAogCXJldHVybiB0cnVl OwogfQogCisjZGVmaW5lIFVQREFURV9QUk9QRVJUWShpbnB1dCwgTkFNRSkgXAorCWRvIHsgXAor CQl2YWwgPSBpbnB1dDsgXAorCQlpbnRlbF9zZHZvX3NldF92YWx1ZShpbnRlbF9zZHZvLCBTRFZP X0NNRF9TRVRfIyNOQU1FLCAmdmFsLCBzaXplb2YodmFsKSk7IFwKKwl9IHdoaWxlICgwKQorCitz dGF0aWMgdm9pZCBpbnRlbF9zZHZvX3VwZGF0ZV9wcm9wcyhzdHJ1Y3QgaW50ZWxfc2R2byAqaW50 ZWxfc2R2bywKKwkJCQkgICAgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpzZHZv X3N0YXRlKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlID0gJnNk dm9fc3RhdGUtPmJhc2UuYmFzZTsKKwlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgKmludGVs X3Nkdm9fY29ubiA9CisJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5l Y3Rvcik7CisJdWludDE2X3QgdmFsOworCisJaWYgKGludGVsX3Nkdm9fY29ubi0+bGVmdCkKKwkJ VVBEQVRFX1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2Lm92ZXJzY2FuX2gsIE9WRVJTQ0FOX0gpOwor CisJaWYgKGludGVsX3Nkdm9fY29ubi0+dG9wKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0 ZS0+dHYub3ZlcnNjYW5fdiwgT1ZFUlNDQU5fVik7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5o cG9zKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYuaHBvcywgSFBPUyk7CisKKwlp ZiAoaW50ZWxfc2R2b19jb25uLT52cG9zKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+ dHYudnBvcywgVlBPUyk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5zYXR1cmF0aW9uKQorCQlV UERBVEVfUFJPUEVSVFkoY29ubl9zdGF0ZS0+dHYuc2F0dXJhdGlvbiwgU0FUVVJBVElPTik7CisK KwlpZiAoaW50ZWxfc2R2b19jb25uLT5jb250cmFzdCkKKwkJVVBEQVRFX1BST1BFUlRZKGNvbm5f c3RhdGUtPnR2LmNvbnRyYXN0LCBDT05UUkFTVCk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5o dWUpCisJCVVQREFURV9QUk9QRVJUWShjb25uX3N0YXRlLT50di5odWUsIEhVRSk7CisKKwlpZiAo aW50ZWxfc2R2b19jb25uLT5icmlnaHRuZXNzKQorCQlVUERBVEVfUFJPUEVSVFkoY29ubl9zdGF0 ZS0+dHYuYnJpZ2h0bmVzcywgQlJJR0hUTkVTUyk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5z aGFycG5lc3MpCisJCVVQREFURV9QUk9QRVJUWShzZHZvX3N0YXRlLT50di5zaGFycG5lc3MsIFNI QVJQTkVTUyk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5mbGlja2VyX2ZpbHRlcikKKwkJVVBE QVRFX1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2LmZsaWNrZXJfZmlsdGVyLCBGTElDS0VSX0ZJTFRF Uik7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5mbGlja2VyX2ZpbHRlcl8yZCkKKwkJVVBEQVRF X1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2LmZsaWNrZXJfZmlsdGVyXzJkLCBGTElDS0VSX0ZJTFRF Ul8yRCk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5mbGlja2VyX2ZpbHRlcl9hZGFwdGl2ZSkK KwkJVVBEQVRFX1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2LmZsaWNrZXJfZmlsdGVyX2FkYXB0aXZl LCBGTElDS0VSX0ZJTFRFUl9BREFQVElWRSk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT50dl9j aHJvbWFfZmlsdGVyKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYuY2hyb21hX2Zp bHRlciwgVFZfQ0hST01BX0ZJTFRFUik7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT50dl9sdW1h X2ZpbHRlcikKKwkJVVBEQVRFX1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2Lmx1bWFfZmlsdGVyLCBU Vl9MVU1BX0ZJTFRFUik7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT5kb3RfY3Jhd2wpCisJCVVQ REFURV9QUk9QRVJUWShzZHZvX3N0YXRlLT50di5kb3RfY3Jhd2wsIERPVF9DUkFXTCk7CisKKyN1 bmRlZiBVUERBVEVfUFJPUEVSVFkKK30KKwogc3RhdGljIHZvaWQgaW50ZWxfc2R2b19wcmVfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAogCQkJCSAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSkKQEAgLTEyMDUsNiArMTI1Myw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2VuY29kZXIt PmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGlu dGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpzZHZvX3N0YXRlID0gdG9faW50ZWxfc2R2b19jb25u ZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUg PSAmY3J0Y19zdGF0ZS0+YmFzZS5tb2RlOwogCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZv ID0gdG9fc2R2byhpbnRlbF9lbmNvZGVyKTsKIAl1MzIgc2R2b3g7CkBAIC0xMjEyLDYgKzEyNjEs OCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIsCiAJc3RydWN0IGludGVsX3Nkdm9fZHRkIGlucHV0X2R0ZCwgb3V0 cHV0X2R0ZDsKIAlpbnQgcmF0ZTsKIAorCWludGVsX3Nkdm9fdXBkYXRlX3Byb3BzKGludGVsX3Nk dm8sIHNkdm9fc3RhdGUpOworCiAJLyogRmlyc3QsIHNldCB0aGUgaW5wdXQgbWFwcGluZyBmb3Ig dGhlIGZpcnN0IGlucHV0IHRvIG91ciBjb250cm9sbGVkCiAJICogb3V0cHV0LiBUaGlzIGlzIG9u bHkgY29ycmVjdCBpZiB3ZSdyZSBhIHNpbmdsZS1pbnB1dCBkZXZpY2UsIGluCiAJICogd2hpY2gg Y2FzZSB0aGUgZmlyc3QgaW5wdXQgaXMgdGhlIG91dHB1dCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBT RFZPCkBAIC0xMjUzLDcgKzEzMDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFi bGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJCWludGVsX3Nkdm9fc2V0 X2VuY29kZShpbnRlbF9zZHZvLCBTRFZPX0VOQ09ERV9EVkkpOwogCiAJaWYgKGludGVsX3Nkdm8t PmlzX3R2ICYmCi0JICAgICFpbnRlbF9zZHZvX3NldF90dl9mb3JtYXQoaW50ZWxfc2R2bykpCisJ ICAgICFpbnRlbF9zZHZvX3NldF90dl9mb3JtYXQoaW50ZWxfc2R2bywgY29ubl9zdGF0ZSkpCiAJ CXJldHVybjsKIAogCWludGVsX3Nkdm9fZ2V0X2R0ZF9mcm9tX21vZGUoJmlucHV0X2R0ZCwgYWRq dXN0ZWRfbW9kZSk7CkBAIC0xODg1LDYgKzE5MzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgc2R2b190dl9tb2Rlc1tdID0gewogc3RhdGljIHZvaWQgaW50ZWxfc2R2 b19nZXRfdHZfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1 Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2byA9IGludGVsX2F0dGFjaGVkX3Nkdm8oY29ubmVjdG9y KTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSA9IGNvbm5l Y3Rvci0+c3RhdGU7CiAJc3RydWN0IGludGVsX3Nkdm9fc2R0dl9yZXNvbHV0aW9uX3JlcXVlc3Qg dHZfcmVzOwogCXVpbnQzMl90IHJlcGx5ID0gMCwgZm9ybWF0X21hcCA9IDA7CiAJaW50IGk7CkBA IC0xODk1LDcgKzE5NDcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX2dldF90dl9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCS8qIFJlYWQgdGhlIGxpc3Qgb2Ygc3Vw cG9ydGVkIGlucHV0IHJlc29sdXRpb25zIGZvciB0aGUgc2VsZWN0ZWQgVFYKIAkgKiBmb3JtYXQu CiAJICovCi0JZm9ybWF0X21hcCA9IDEgPDwgaW50ZWxfc2R2by0+dHZfZm9ybWF0X2luZGV4Owor CWZvcm1hdF9tYXAgPSAxIDw8IGNvbm5fc3RhdGUtPnR2Lm1vZGU7CiAJbWVtY3B5KCZ0dl9yZXMs ICZmb3JtYXRfbWFwLAogCSAgICAgICBtaW4oc2l6ZW9mKGZvcm1hdF9tYXApLCBzaXplb2Yoc3Ry dWN0IGludGVsX3Nkdm9fc2R0dl9yZXNvbHV0aW9uX3JlcXVlc3QpKSk7CiAKQEAgLTE5ODUsMTg3 ICsyMDM3LDEyMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX2Rlc3Ryb3koc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKIH0KIAogc3RhdGljIGludAotaW50ZWxfc2R2b19zZXRfcHJv cGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJCXN0cnVjdCBkcm1fcHJv cGVydHkgKnByb3BlcnR5LAotCQkJdWludDY0X3QgdmFsKQoraW50ZWxfc2R2b19jb25uZWN0b3Jf YXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJ CQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAorCQkJCQkgc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCisJCQkJCSB1aW50NjRfdCAqdmFsKQogewotCXN0cnVj dCBpbnRlbF9zZHZvICppbnRlbF9zZHZvID0gaW50ZWxfYXR0YWNoZWRfc2R2byhjb25uZWN0b3Ip OwogCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2b19jb25uZWN0b3IgPSB0 b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5kZXYpOwotCXVpbnQxNl90IHRlbXBf dmFsdWU7Ci0JdWludDhfdCBjbWQ7Ci0JaW50IHJldDsKLQotCXJldCA9IGRybV9vYmplY3RfcHJv cGVydHlfc2V0X3ZhbHVlKCZjb25uZWN0b3ItPmJhc2UsIHByb3BlcnR5LCB2YWwpOwotCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYtPmZvcmNlX2F1 ZGlvX3Byb3BlcnR5KSB7Ci0JCWludCBpID0gdmFsOwotCQlib29sIGhhc19hdWRpbywgb2xkX2F1 ZGlvOwotCi0JCWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Zm9yY2VfYXVkaW8gPT0gSERNSV9B VURJT19BVVRPKQotCQkJb2xkX2F1ZGlvID0gaW50ZWxfc2R2by0+aGFzX2hkbWlfYXVkaW87Ci0J CWVsc2UKLQkJCW9sZF9hdWRpbyA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT5mb3JjZV9hdWRpbyA9 PSBIRE1JX0FVRElPX09OOwotCi0JCWlmIChpID09IEhETUlfQVVESU9fQVVUTykKLQkJCWhhc19h dWRpbyA9IGludGVsX3Nkdm8tPmhhc19oZG1pX2F1ZGlvOwotCQllbHNlCi0JCQloYXNfYXVkaW8g PSAoaSA9PSBIRE1JX0FVRElPX09OKTsKLQotCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Zm9yY2Vf YXVkaW8gPSBpOwotCi0JCWlmIChoYXNfYXVkaW8gPT0gb2xkX2F1ZGlvKQotCQkJcmV0dXJuIDA7 Ci0KLQkJZ290byBkb25lOwotCX0KLQotCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+YnJvYWRj YXN0X3JnYl9wcm9wZXJ0eSkgewotCQlib29sIG9sZF9hdXRvID0gaW50ZWxfc2R2by0+Y29sb3Jf cmFuZ2VfYXV0bzsKLQkJdWludDMyX3Qgb2xkX3JhbmdlID0gaW50ZWxfc2R2by0+Y29sb3JfcmFu Z2U7Ci0KLQkJc3dpdGNoICh2YWwpIHsKLQkJY2FzZSBJTlRFTF9CUk9BRENBU1RfUkdCX0FVVE86 Ci0JCQlpbnRlbF9zZHZvLT5jb2xvcl9yYW5nZV9hdXRvID0gdHJ1ZTsKLQkJCWJyZWFrOwotCQlj YXNlIElOVEVMX0JST0FEQ0FTVF9SR0JfRlVMTDoKLQkJCWludGVsX3Nkdm8tPmNvbG9yX3Jhbmdl X2F1dG8gPSBmYWxzZTsKLQkJCWludGVsX3Nkdm8tPmNvbG9yX3JhbmdlID0gMDsKLQkJCWJyZWFr OwotCQljYXNlIElOVEVMX0JST0FEQ0FTVF9SR0JfTElNSVRFRDoKLQkJCWludGVsX3Nkdm8tPmNv bG9yX3JhbmdlX2F1dG8gPSBmYWxzZTsKLQkJCS8qIEZJWE1FOiB0aGlzIGJpdCBpcyBvbmx5IHZh bGlkIHdoZW4gdXNpbmcgVE1EUwotCQkJICogZW5jb2RpbmcgYW5kIDggYml0IHBlciBjb2xvciBt b2RlLiAqLwotCQkJaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2UgPSBIRE1JX0NPTE9SX1JBTkdFXzE2 XzIzNTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQot CQlpZiAob2xkX2F1dG8gPT0gaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2VfYXV0byAmJgotCQkgICAg b2xkX3JhbmdlID09IGludGVsX3Nkdm8tPmNvbG9yX3JhbmdlKQotCQkJcmV0dXJuIDA7Ci0KLQkJ Z290byBkb25lOwotCX0KLQotCWlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPmRldi0+bW9kZV9j b25maWcuYXNwZWN0X3JhdGlvX3Byb3BlcnR5KSB7Ci0JCXN3aXRjaCAodmFsKSB7Ci0JCWNhc2Ug RFJNX01PREVfUElDVFVSRV9BU1BFQ1RfTk9ORToKLQkJCWludGVsX3Nkdm8tPmFzcGVjdF9yYXRp byA9IEhETUlfUElDVFVSRV9BU1BFQ1RfTk9ORTsKLQkJCWJyZWFrOwotCQljYXNlIERSTV9NT0RF X1BJQ1RVUkVfQVNQRUNUXzRfMzoKLQkJCWludGVsX3Nkdm8tPmFzcGVjdF9yYXRpbyA9IEhETUlf UElDVFVSRV9BU1BFQ1RfNF8zOwotCQkJYnJlYWs7Ci0JCWNhc2UgRFJNX01PREVfUElDVFVSRV9B U1BFQ1RfMTZfOToKLQkJCWludGVsX3Nkdm8tPmFzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9B U1BFQ1RfMTZfOTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJcmV0dXJuIC1FSU5WQUw7Ci0J CX0KLQkJZ290byBkb25lOwotCX0KLQotI2RlZmluZSBDSEVDS19QUk9QRVJUWShuYW1lLCBOQU1F KSBcCi0JaWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5uYW1lID09IHByb3BlcnR5KSB7IFwKLQkJ aWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5jdXJfIyNuYW1lID09IHRlbXBfdmFsdWUpIHJldHVy biAwOyBcCi0JCWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bWF4XyMjbmFtZSA8IHRlbXBfdmFs dWUpIHJldHVybiAtRUlOVkFMOyBcCi0JCWNtZCA9IFNEVk9fQ01EX1NFVF8jI05BTUU7IFwKLQkJ aW50ZWxfc2R2b19jb25uZWN0b3ItPmN1cl8jI25hbWUgPSB0ZW1wX3ZhbHVlOyBcCi0JCWdvdG8g c2V0X3ZhbHVlOyBcCi0JfQorCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0 ZSAqc2R2b19zdGF0ZSA9IHRvX2ludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlKCh2b2lkICopc3Rh dGUpOwogCiAJaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9mb3JtYXQp IHsKLQkJaWYgKHZhbCA+PSBUVl9GT1JNQVRfTlVNKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkJ aWYgKGludGVsX3Nkdm8tPnR2X2Zvcm1hdF9pbmRleCA9PQotCQkgICAgaW50ZWxfc2R2b19jb25u ZWN0b3ItPnR2X2Zvcm1hdF9zdXBwb3J0ZWRbdmFsXSkKLQkJCXJldHVybiAwOwotCi0JCWludGVs X3Nkdm8tPnR2X2Zvcm1hdF9pbmRleCA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9mb3JtYXRf c3VwcG9ydGVkW3ZhbF07Ci0JCWdvdG8gZG9uZTsKLQl9IGVsc2UgaWYgKElTX1RWX09SX0xWRFMo aW50ZWxfc2R2b19jb25uZWN0b3IpKSB7Ci0JCXRlbXBfdmFsdWUgPSB2YWw7Ci0JCWlmIChpbnRl bF9zZHZvX2Nvbm5lY3Rvci0+bGVmdCA9PSBwcm9wZXJ0eSkgewotCQkJZHJtX29iamVjdF9wcm9w ZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKLQkJCQkJCQkgaW50ZWxfc2R2b19jb25u ZWN0b3ItPnJpZ2h0LCB2YWwpOwotCQkJaWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0X21h cmdpbiA9PSB0ZW1wX3ZhbHVlKQotCQkJCXJldHVybiAwOworCQlpbnQgaTsKIAotCQkJaW50ZWxf c2R2b19jb25uZWN0b3ItPmxlZnRfbWFyZ2luID0gdGVtcF92YWx1ZTsKLQkJCWludGVsX3Nkdm9f Y29ubmVjdG9yLT5yaWdodF9tYXJnaW4gPSB0ZW1wX3ZhbHVlOwotCQkJdGVtcF92YWx1ZSA9IGlu dGVsX3Nkdm9fY29ubmVjdG9yLT5tYXhfaHNjYW4gLQotCQkJCWludGVsX3Nkdm9fY29ubmVjdG9y LT5sZWZ0X21hcmdpbjsKLQkJCWNtZCA9IFNEVk9fQ01EX1NFVF9PVkVSU0NBTl9IOwotCQkJZ290 byBzZXRfdmFsdWU7Ci0JCX0gZWxzZSBpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPnJpZ2h0ID09 IHByb3BlcnR5KSB7Ci0JCQlkcm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9y LT5iYXNlLAotCQkJCQkJCSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdCwgdmFsKTsKLQkJCWlm IChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+cmlnaHRfbWFyZ2luID09IHRlbXBfdmFsdWUpCi0JCQkJ cmV0dXJuIDA7CisJCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Zm9ybWF0 X3N1cHBvcnRlZF9udW07IGkrKykKKwkJCWlmIChzdGF0ZS0+dHYubW9kZSA9PSBpbnRlbF9zZHZv X2Nvbm5lY3Rvci0+dHZfZm9ybWF0X3N1cHBvcnRlZFtpXSkgeworCQkJCSp2YWwgPSBpOwogCi0J CQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdF9tYXJnaW4gPSB0ZW1wX3ZhbHVlOwotCQkJaW50 ZWxfc2R2b19jb25uZWN0b3ItPnJpZ2h0X21hcmdpbiA9IHRlbXBfdmFsdWU7Ci0JCQl0ZW1wX3Zh bHVlID0gaW50ZWxfc2R2b19jb25uZWN0b3ItPm1heF9oc2NhbiAtCi0JCQkJaW50ZWxfc2R2b19j b25uZWN0b3ItPmxlZnRfbWFyZ2luOwotCQkJY21kID0gU0RWT19DTURfU0VUX09WRVJTQ0FOX0g7 Ci0JCQlnb3RvIHNldF92YWx1ZTsKLQkJfSBlbHNlIGlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ dG9wID09IHByb3BlcnR5KSB7Ci0JCQlkcm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZSgmY29u bmVjdG9yLT5iYXNlLAotCQkJCQkJCSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tLCB2YWwp OwotCQkJaWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT50b3BfbWFyZ2luID09IHRlbXBfdmFsdWUp CiAJCQkJcmV0dXJuIDA7CisJCQl9CiAKLQkJCWludGVsX3Nkdm9fY29ubmVjdG9yLT50b3BfbWFy Z2luID0gdGVtcF92YWx1ZTsKLQkJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5ib3R0b21fbWFyZ2lu ID0gdGVtcF92YWx1ZTsKLQkJCXRlbXBfdmFsdWUgPSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bWF4 X3ZzY2FuIC0KLQkJCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wX21hcmdpbjsKLQkJCWNtZCA9 IFNEVk9fQ01EX1NFVF9PVkVSU0NBTl9WOwotCQkJZ290byBzZXRfdmFsdWU7Ci0JCX0gZWxzZSBp ZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmJvdHRvbSA9PSBwcm9wZXJ0eSkgewotCQkJZHJtX29i amVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKLQkJCQkJCQkgaW50ZWxf c2R2b19jb25uZWN0b3ItPnRvcCwgdmFsKTsKLQkJCWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ Ym90dG9tX21hcmdpbiA9PSB0ZW1wX3ZhbHVlKQotCQkJCXJldHVybiAwOworCQlXQVJOX09OKDEp OworCQkqdmFsID0gMDsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVj dG9yLT50b3AgfHwKKwkJICAgcHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmJvdHRv bSkKKwkJKnZhbCA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT5tYXhfdnNjYW4gLSBzZHZvX3N0YXRl LT50di5vdmVyc2Nhbl92OworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVj dG9yLT5sZWZ0IHx8CisJCSBwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+cmlnaHQp CisJCSp2YWwgPSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bWF4X2hzY2FuIC0gc2R2b19zdGF0ZS0+ dHYub3ZlcnNjYW5faDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rv ci0+aHBvcykKKwkJKnZhbCA9IHNkdm9fc3RhdGUtPnR2Lmhwb3M7CisJZWxzZSBpZiAocHJvcGVy dHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnZwb3MpCisJCSp2YWwgPSBzZHZvX3N0YXRlLT50 di52cG9zOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5zYXR1 cmF0aW9uKQorCQkqdmFsID0gc3RhdGUtPnR2LnNhdHVyYXRpb247CisJZWxzZSBpZiAocHJvcGVy dHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmNvbnRyYXN0KQorCQkqdmFsID0gc3RhdGUtPnR2 LmNvbnRyYXN0OworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5o dWUpCisJCSp2YWwgPSBzdGF0ZS0+dHYuaHVlOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVs X3Nkdm9fY29ubmVjdG9yLT5icmlnaHRuZXNzKQorCQkqdmFsID0gc3RhdGUtPnR2LmJyaWdodG5l c3M7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnNoYXJwbmVz cykKKwkJKnZhbCA9IHNkdm9fc3RhdGUtPnR2LnNoYXJwbmVzczsKKwllbHNlIGlmIChwcm9wZXJ0 eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ZmxpY2tlcl9maWx0ZXIpCisJCSp2YWwgPSBzZHZv X3N0YXRlLT50di5mbGlja2VyX2ZpbHRlcjsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9z ZHZvX2Nvbm5lY3Rvci0+ZmxpY2tlcl9maWx0ZXJfMmQpCisJCSp2YWwgPSBzZHZvX3N0YXRlLT50 di5mbGlja2VyX2ZpbHRlcl8yZDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nv bm5lY3Rvci0+ZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmUpCisJCSp2YWwgPSBzZHZvX3N0YXRlLT50 di5mbGlja2VyX2ZpbHRlcl9hZGFwdGl2ZTsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9z ZHZvX2Nvbm5lY3Rvci0+dHZfY2hyb21hX2ZpbHRlcikKKwkJKnZhbCA9IHNkdm9fc3RhdGUtPnR2 LmNocm9tYV9maWx0ZXI7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0 b3ItPnR2X2x1bWFfZmlsdGVyKQorCQkqdmFsID0gc2R2b19zdGF0ZS0+dHYubHVtYV9maWx0ZXI7 CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmRvdF9jcmF3bCkK KwkJKnZhbCA9IHNkdm9fc3RhdGUtPnR2LmRvdF9jcmF3bDsKKwllbHNlCisJCXJldHVybiBpbnRl bF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KGNvbm5lY3Rvciwgc3RhdGUs IHByb3BlcnR5LCB2YWwpOwogCi0JCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wX21hcmdpbiA9 IHRlbXBfdmFsdWU7Ci0JCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tX21hcmdpbiA9IHRl bXBfdmFsdWU7Ci0JCQl0ZW1wX3ZhbHVlID0gaW50ZWxfc2R2b19jb25uZWN0b3ItPm1heF92c2Nh biAtCi0JCQkJaW50ZWxfc2R2b19jb25uZWN0b3ItPnRvcF9tYXJnaW47Ci0JCQljbWQgPSBTRFZP X0NNRF9TRVRfT1ZFUlNDQU5fVjsKLQkJCWdvdG8gc2V0X3ZhbHVlOwotCQl9Ci0JCUNIRUNLX1BS T1BFUlRZKGhwb3MsIEhQT1MpCi0JCUNIRUNLX1BST1BFUlRZKHZwb3MsIFZQT1MpCi0JCUNIRUNL X1BST1BFUlRZKHNhdHVyYXRpb24sIFNBVFVSQVRJT04pCi0JCUNIRUNLX1BST1BFUlRZKGNvbnRy YXN0LCBDT05UUkFTVCkKLQkJQ0hFQ0tfUFJPUEVSVFkoaHVlLCBIVUUpCi0JCUNIRUNLX1BST1BF UlRZKGJyaWdodG5lc3MsIEJSSUdIVE5FU1MpCi0JCUNIRUNLX1BST1BFUlRZKHNoYXJwbmVzcywg U0hBUlBORVNTKQotCQlDSEVDS19QUk9QRVJUWShmbGlja2VyX2ZpbHRlciwgRkxJQ0tFUl9GSUxU RVIpCi0JCUNIRUNLX1BST1BFUlRZKGZsaWNrZXJfZmlsdGVyXzJkLCBGTElDS0VSX0ZJTFRFUl8y RCkKLQkJQ0hFQ0tfUFJPUEVSVFkoZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmUsIEZMSUNLRVJfRklM VEVSX0FEQVBUSVZFKQotCQlDSEVDS19QUk9QRVJUWSh0dl9jaHJvbWFfZmlsdGVyLCBUVl9DSFJP TUFfRklMVEVSKQotCQlDSEVDS19QUk9QRVJUWSh0dl9sdW1hX2ZpbHRlciwgVFZfTFVNQV9GSUxU RVIpCi0JCUNIRUNLX1BST1BFUlRZKGRvdF9jcmF3bCwgRE9UX0NSQVdMKQotCX0KKwlyZXR1cm4g MDsKK30KIAotCXJldHVybiAtRUlOVkFMOyAvKiB1bmtub3duIHByb3BlcnR5ICovCitzdGF0aWMg aW50CitpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9hdG9taWNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq c3RhdGUsCisJCQkJCSBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJIHVpbnQ2 NF90IHZhbCkKK3sKKwlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgKmludGVsX3Nkdm9fY29u bmVjdG9yID0gdG9faW50ZWxfc2R2b19jb25uZWN0b3IoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50 ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUgKnNkdm9fc3RhdGUgPSB0b19pbnRlbF9zZHZvX2Nvbm5l Y3Rvcl9zdGF0ZShzdGF0ZSk7CiAKLXNldF92YWx1ZToKLQlpZiAoIWludGVsX3Nkdm9fc2V0X3Zh bHVlKGludGVsX3Nkdm8sIGNtZCwgJnRlbXBfdmFsdWUsIDIpKQotCQlyZXR1cm4gLUVJTzsKKwlp ZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnR2X2Zvcm1hdCkgeworCQlzdGF0 ZS0+dHYubW9kZSA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9mb3JtYXRfc3VwcG9ydGVkW3Zh bF07CiAKKwkJaWYgKHN0YXRlLT5jcnRjKSB7CisJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUgPQorCQkJCWRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLT5zdGF0 ZSwgc3RhdGUtPmNydGMpOwogCi1kb25lOgotCWlmIChpbnRlbF9zZHZvLT5iYXNlLmJhc2UuY3J0 YykKLQkJaW50ZWxfY3J0Y19yZXN0b3JlX21vZGUoaW50ZWxfc2R2by0+YmFzZS5iYXNlLmNydGMp OworCQkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKKwkJfQorCX0gZWxz ZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnRvcCB8fAorCQkgICBwcm9w ZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tKQorCQkvKiBDYW5ub3Qgc2V0IHRo ZXNlIGluZGVwZW5kZW50IGZyb20gZWFjaCBvdGhlciAqLworCQlzZHZvX3N0YXRlLT50di5vdmVy c2Nhbl92ID0gaW50ZWxfc2R2b19jb25uZWN0b3ItPm1heF92c2NhbiAtIHZhbDsKKwllbHNlIGlm IChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdCB8fAorCQkgcHJvcGVydHkg PT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnJpZ2h0KQorCQkvKiBDYW5ub3Qgc2V0IHRoZXNlIGlu ZGVwZW5kZW50IGZyb20gZWFjaCBvdGhlciAqLworCQlzZHZvX3N0YXRlLT50di5vdmVyc2Nhbl9o ID0gaW50ZWxfc2R2b19jb25uZWN0b3ItPm1heF9oc2NhbiAtIHZhbDsKKwllbHNlIGlmIChwcm9w ZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+aHBvcykKKwkJc2R2b19zdGF0ZS0+dHYuaHBv cyA9IHZhbDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dnBv cykKKwkJc2R2b19zdGF0ZS0+dHYudnBvcyA9IHZhbDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBp bnRlbF9zZHZvX2Nvbm5lY3Rvci0+c2F0dXJhdGlvbikKKwkJc3RhdGUtPnR2LnNhdHVyYXRpb24g PSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmNvbnRy YXN0KQorCQlzdGF0ZS0+dHYuY29udHJhc3QgPSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0g aW50ZWxfc2R2b19jb25uZWN0b3ItPmh1ZSkKKwkJc3RhdGUtPnR2Lmh1ZSA9IHZhbDsKKwllbHNl IGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+YnJpZ2h0bmVzcykKKwkJc3Rh dGUtPnR2LmJyaWdodG5lc3MgPSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2 b19jb25uZWN0b3ItPnNoYXJwbmVzcykKKwkJc2R2b19zdGF0ZS0+dHYuc2hhcnBuZXNzID0gdmFs OworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5mbGlja2VyX2Zp bHRlcikKKwkJc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9maWx0ZXIgPSB2YWw7CisJZWxzZSBpZiAo cHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmZsaWNrZXJfZmlsdGVyXzJkKQorCQlz ZHZvX3N0YXRlLT50di5mbGlja2VyX2ZpbHRlcl8yZCA9IHZhbDsKKwllbHNlIGlmIChwcm9wZXJ0 eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmUpCisJCXNk dm9fc3RhdGUtPnR2LmZsaWNrZXJfZmlsdGVyX2FkYXB0aXZlID0gdmFsOworCWVsc2UgaWYgKHBy b3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9jaHJvbWFfZmlsdGVyKQorCQlzZHZv X3N0YXRlLT50di5jaHJvbWFfZmlsdGVyID0gdmFsOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGlu dGVsX3Nkdm9fY29ubmVjdG9yLT50dl9sdW1hX2ZpbHRlcikKKwkJc2R2b19zdGF0ZS0+dHYubHVt YV9maWx0ZXIgPSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0 b3ItPmRvdF9jcmF3bCkKKwkJc2R2b19zdGF0ZS0+dHYuZG90X2NyYXdsID0gdmFsOworCWVsc2UK KwkJcmV0dXJuIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19zZXRfcHJvcGVydHkoY29u bmVjdG9yLCBzdGF0ZSwgcHJvcGVydHksIHZhbCk7CiAKIAlyZXR1cm4gMDsKLSN1bmRlZiBDSEVD S19QUk9QRVJUWQogfQogCiBzdGF0aWMgaW50CkBAIC0yMTkzLDIyICsyMTc4LDYxIEBAIGludGVs X3Nkdm9fY29ubmVjdG9yX3VucmVnaXN0ZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKIAlpbnRlbF9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwogfQogCitzdGF0aWMg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKgoraW50ZWxfc2R2b19jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGlu dGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpzdGF0ZTsKKworCXN0YXRlID0ga21lbWR1cChjb25u ZWN0b3ItPnN0YXRlLCBzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzdGF0ZSkK KwkJcmV0dXJuIE5VTEw7CisKKwlfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNh dGVfc3RhdGUoY29ubmVjdG9yLCAmc3RhdGUtPmJhc2UuYmFzZSk7CisJcmV0dXJuICZzdGF0ZS0+ YmFzZS5iYXNlOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3Mg aW50ZWxfc2R2b19jb25uZWN0b3JfZnVuY3MgPSB7CiAJLmRwbXMgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZHBtcywKIAkuZGV0ZWN0ID0gaW50ZWxfc2R2b19kZXRlY3QsCiAJLmZpbGxf bW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCi0JLnNldF9w cm9wZXJ0eSA9IGludGVsX3Nkdm9fc2V0X3Byb3BlcnR5LAotCS5hdG9taWNfZ2V0X3Byb3BlcnR5 ID0gaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHksCisJLnNldF9wcm9wZXJ0eSA9 IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHksCisJLmF0b21pY19nZXRf cHJvcGVydHkgPSBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5LAorCS5h dG9taWNfc2V0X3Byb3BlcnR5ID0gaW50ZWxfc2R2b19jb25uZWN0b3JfYXRvbWljX3NldF9wcm9w ZXJ0eSwKIAkubGF0ZV9yZWdpc3RlciA9IGludGVsX3Nkdm9fY29ubmVjdG9yX3JlZ2lzdGVyLAog CS5lYXJseV91bnJlZ2lzdGVyID0gaW50ZWxfc2R2b19jb25uZWN0b3JfdW5yZWdpc3RlciwKIAku ZGVzdHJveSA9IGludGVsX3Nkdm9fZGVzdHJveSwKIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKLQkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUs CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9kdXBsaWNh dGVfc3RhdGUsCiB9OwogCitzdGF0aWMgaW50IGludGVsX3Nkdm9fYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uLAorCQkJCSAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICpuZXdfY29ubl9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBu ZXdfY29ubl9zdGF0ZS0+c3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9j b25uX3N0YXRlID0KKwkJZHJtX2F0b21pY19nZXRfb2xkX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwg Y29ubik7CisJc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpvbGRfc3RhdGUgPQor CQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZShvbGRfY29ubl9zdGF0ZSk7CisJc3RydWN0 IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpuZXdfc3RhdGUgPQorCQl0b19pbnRlbF9zZHZv X2Nvbm5lY3Rvcl9zdGF0ZShuZXdfY29ubl9zdGF0ZSk7CisKKwlpZiAobmV3X2Nvbm5fc3RhdGUt PmNydGMgJiYKKwkgICAgKG1lbWNtcCgmb2xkX3N0YXRlLT50diwgJm5ld19zdGF0ZS0+dHYsIHNp emVvZihvbGRfc3RhdGUtPnR2KSkgfHwKKwkgICAgIG1lbWNtcCgmb2xkX2Nvbm5fc3RhdGUtPnR2 LCAmbmV3X2Nvbm5fc3RhdGUtPnR2LCBzaXplb2Yob2xkX2Nvbm5fc3RhdGUtPnR2KSkpKSB7CisJ CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCQlkcm1fYXRvbWljX2dldF9u ZXdfY3J0Y19zdGF0ZShuZXdfY29ubl9zdGF0ZS0+c3RhdGUsCisJCQkJCQkgICAgICBuZXdfY29u bl9zdGF0ZS0+Y3J0Yyk7CisKKwkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1 ZTsKKwl9CisKKwlyZXR1cm4gaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRvbWljX2NoZWNrKGNv bm4sIG5ld19jb25uX3N0YXRlKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVj dG9yX2hlbHBlcl9mdW5jcyBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CiAJ LmdldF9tb2RlcyA9IGludGVsX3Nkdm9fZ2V0X21vZGVzLAogCS5tb2RlX3ZhbGlkID0gaW50ZWxf c2R2b19tb2RlX3ZhbGlkLAorCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9zZHZvX2F0b21pY19jaGVj aywKIH07CiAKIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fZW5jX2Rlc3Ryb3koc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQpAQCAtMjQwMCwyNSArMjQyNCwyOCBAQCBpbnRlbF9zZHZvX2FkZF9o ZG1pX3Byb3BlcnRpZXMoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCiAJaW50ZWxfYXR0 YWNoX2ZvcmNlX2F1ZGlvX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UuYmFzZSk7CiAJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNCAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7CiAJCWludGVs X2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UuYmFzZSk7Ci0J CWludGVsX3Nkdm8tPmNvbG9yX3JhbmdlX2F1dG8gPSB0cnVlOwogCX0KIAlpbnRlbF9hdHRhY2hf YXNwZWN0X3JhdGlvX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UuYmFzZSk7Ci0JaW50ZWxfc2R2 by0+YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF9OT05FOwogfQogCiBzdGF0aWMg c3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3Rvcl9hbGxvYyh2 b2lkKQogewogCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqc2R2b19jb25uZWN0b3I7CisJ c3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwogCiAJc2R2b19j b25uZWN0b3IgPSBremFsbG9jKHNpemVvZigqc2R2b19jb25uZWN0b3IpLCBHRlBfS0VSTkVMKTsK IAlpZiAoIXNkdm9fY29ubmVjdG9yKQogCQlyZXR1cm4gTlVMTDsKIAotCWlmIChpbnRlbF9jb25u ZWN0b3JfaW5pdCgmc2R2b19jb25uZWN0b3ItPmJhc2UpIDwgMCkgeworCWNvbm5fc3RhdGUgPSBr emFsbG9jKHNpemVvZigqY29ubl9zdGF0ZSksIEdGUF9LRVJORUwpOworCWlmICghY29ubl9zdGF0 ZSkgewogCQlrZnJlZShzZHZvX2Nvbm5lY3Rvcik7CiAJCXJldHVybiBOVUxMOwogCX0KIAorCV9f ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0KCZzZHZvX2Nvbm5lY3Rvci0+YmFzZS5i YXNlLAorCQkJCQkgICAgJmNvbm5fc3RhdGUtPmJhc2UuYmFzZSk7CisKIAlyZXR1cm4gc2R2b19j b25uZWN0b3I7CiB9CiAKQEAgLTI3MTAsMzEgKzI3MzcsMzAgQEAgc3RhdGljIGJvb2wgaW50ZWxf c2R2b190dl9jcmVhdGVfcHJvcGVydHkoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCiAJ CQkJaW50ZWxfc2R2b19jb25uZWN0b3ItPnR2X2Zvcm1hdCwgaSwKIAkJCQlpLCB0dl9mb3JtYXRf bmFtZXNbaW50ZWxfc2R2b19jb25uZWN0b3ItPnR2X2Zvcm1hdF9zdXBwb3J0ZWRbaV1dKTsKIAot CWludGVsX3Nkdm8tPnR2X2Zvcm1hdF9pbmRleCA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9m b3JtYXRfc3VwcG9ydGVkWzBdOwotCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZpbnRlbF9z ZHZvX2Nvbm5lY3Rvci0+YmFzZS5iYXNlLmJhc2UsCi0JCQkJICAgICAgaW50ZWxfc2R2b19jb25u ZWN0b3ItPnR2X2Zvcm1hdCwgMCk7CisJaW50ZWxfc2R2b19jb25uZWN0b3ItPmJhc2UuYmFzZS5z dGF0ZS0+dHYubW9kZSA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9mb3JtYXRfc3VwcG9ydGVk WzBdOworCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ YmFzZS5iYXNlLmJhc2UsIDAsIDApOwogCXJldHVybiB0cnVlOwogCiB9CiAKLSNkZWZpbmUgRU5I QU5DRU1FTlQobmFtZSwgTkFNRSkgZG8geyBcCisjZGVmaW5lIF9FTkhBTkNFTUVOVChzdGF0ZV9h c3NpZ25tZW50LCBuYW1lLCBOQU1FKSBkbyB7IFwKIAlpZiAoZW5oYW5jZW1lbnRzLm5hbWUpIHsg XAogCQlpZiAoIWludGVsX3Nkdm9fZ2V0X3ZhbHVlKGludGVsX3Nkdm8sIFNEVk9fQ01EX0dFVF9N QVhfIyNOQU1FLCAmZGF0YV92YWx1ZSwgNCkgfHwgXAogCQkgICAgIWludGVsX3Nkdm9fZ2V0X3Zh bHVlKGludGVsX3Nkdm8sIFNEVk9fQ01EX0dFVF8jI05BTUUsICZyZXNwb25zZSwgMikpIFwKIAkJ CXJldHVybiBmYWxzZTsgXAotCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bWF4XyMjbmFtZSA9IGRh dGFfdmFsdWVbMF07IFwKLQkJaW50ZWxfc2R2b19jb25uZWN0b3ItPmN1cl8jI25hbWUgPSByZXNw b25zZTsgXAogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bmFtZSA9IFwKIAkJCWRybV9wcm9wZXJ0 eV9jcmVhdGVfcmFuZ2UoZGV2LCAwLCAjbmFtZSwgMCwgZGF0YV92YWx1ZVswXSk7IFwKIAkJaWYg KCFpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bmFtZSkgcmV0dXJuIGZhbHNlOyBcCisJCXN0YXRlX2Fz c2lnbm1lbnQgPSByZXNwb25zZTsgXAogCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29u bmVjdG9yLT5iYXNlLCBcCi0JCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5uYW1lLCBc Ci0JCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5jdXJfIyNuYW1lKTsgXAorCQkJCQkg ICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bmFtZSwgMCk7IFwKIAkJRFJNX0RFQlVHX0tNUygjbmFt ZSAiOiBtYXggJWQsIGRlZmF1bHQgJWQsIGN1cnJlbnQgJWRcbiIsIFwKIAkJCSAgICAgIGRhdGFf dmFsdWVbMF0sIGRhdGFfdmFsdWVbMV0sIHJlc3BvbnNlKTsgXAogCX0gXAogfSB3aGlsZSAoMCkK IAorI2RlZmluZSBFTkhBTkNFTUVOVChzdGF0ZSwgbmFtZSwgTkFNRSkgX0VOSEFOQ0VNRU5UKChz dGF0ZSktPm5hbWUsIG5hbWUsIE5BTUUpCisKIHN0YXRpYyBib29sCiBpbnRlbF9zZHZvX2NyZWF0 ZV9lbmhhbmNlX3Byb3BlcnR5X3R2KHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogCQkJ CSAgICAgIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2b19jb25uZWN0b3Is CkBAIC0yNzQyLDYgKzI3NjgsOSBAQCBpbnRlbF9zZHZvX2NyZWF0ZV9lbmhhbmNlX3Byb3BlcnR5 X3R2KHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBpbnRlbF9zZHZvLT5iYXNlLmJhc2UuZGV2OwogCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IgPSAmaW50ZWxfc2R2b19jb25uZWN0b3ItPmJhc2UuYmFzZTsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGU7CisJc3Ry dWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpzZHZvX3N0YXRlID0KKwkJdG9faW50ZWxf c2R2b19jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7CiAJdWludDE2X3QgcmVzcG9uc2UsIGRh dGFfdmFsdWVbMl07CiAKIAkvKiB3aGVuIGhvcml6b250YWwgb3ZlcnNjYW4gaXMgc3VwcG9ydGVk LCBBZGQgdGhlIGxlZnQvcmlnaHQgIHByb3BlcnR5ICovCkBAIC0yNzU2LDE3ICsyNzg1LDE2IEBA IGludGVsX3Nkdm9fY3JlYXRlX2VuaGFuY2VfcHJvcGVydHlfdHYoc3RydWN0IGludGVsX3Nkdm8g KmludGVsX3Nkdm8sCiAJCQkJCSAgJnJlc3BvbnNlLCAyKSkKIAkJCXJldHVybiBmYWxzZTsKIAor CQlzZHZvX3N0YXRlLT50di5vdmVyc2Nhbl9oID0gcmVzcG9uc2U7CisKIAkJaW50ZWxfc2R2b19j b25uZWN0b3ItPm1heF9oc2NhbiA9IGRhdGFfdmFsdWVbMF07Ci0JCWludGVsX3Nkdm9fY29ubmVj dG9yLT5sZWZ0X21hcmdpbiA9IGRhdGFfdmFsdWVbMF0gLSByZXNwb25zZTsKLQkJaW50ZWxfc2R2 b19jb25uZWN0b3ItPnJpZ2h0X21hcmdpbiA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0X21h cmdpbjsKIAkJaW50ZWxfc2R2b19jb25uZWN0b3ItPmxlZnQgPQogCQkJZHJtX3Byb3BlcnR5X2Ny ZWF0ZV9yYW5nZShkZXYsIDAsICJsZWZ0X21hcmdpbiIsIDAsIGRhdGFfdmFsdWVbMF0pOwogCQlp ZiAoIWludGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0KQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWRy bV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCi0JCQkJCSAgICAgIGlu dGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0LAotCQkJCQkgICAgICBpbnRlbF9zZHZvX2Nvbm5lY3Rv ci0+bGVmdF9tYXJnaW4pOworCQkJCQkgICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdCwgMCk7 CiAKIAkJaW50ZWxfc2R2b19jb25uZWN0b3ItPnJpZ2h0ID0KIAkJCWRybV9wcm9wZXJ0eV9jcmVh dGVfcmFuZ2UoZGV2LCAwLCAicmlnaHRfbWFyZ2luIiwgMCwgZGF0YV92YWx1ZVswXSk7CkBAIC0y Nzc0LDggKzI4MDIsNyBAQCBpbnRlbF9zZHZvX2NyZWF0ZV9lbmhhbmNlX3Byb3BlcnR5X3R2KHN0 cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWRybV9v YmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCi0JCQkJCSAgICAgIGludGVs X3Nkdm9fY29ubmVjdG9yLT5yaWdodCwKLQkJCQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3It PnJpZ2h0X21hcmdpbik7CisJCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5yaWdodCwg MCk7CiAJCURSTV9ERUJVR19LTVMoImhfb3ZlcnNjYW46IG1heCAlZCwgIgogCQkJICAgICAgImRl ZmF1bHQgJWQsIGN1cnJlbnQgJWRcbiIsCiAJCQkgICAgICBkYXRhX3ZhbHVlWzBdLCBkYXRhX3Zh bHVlWzFdLCByZXNwb25zZSk7CkBAIC0yNzkyLDkgKzI4MTksOSBAQCBpbnRlbF9zZHZvX2NyZWF0 ZV9lbmhhbmNlX3Byb3BlcnR5X3R2KHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogCQkJ CQkgICZyZXNwb25zZSwgMikpCiAJCQlyZXR1cm4gZmFsc2U7CiAKKwkJc2R2b19zdGF0ZS0+dHYu b3ZlcnNjYW5fdiA9IHJlc3BvbnNlOworCiAJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5tYXhfdnNj YW4gPSBkYXRhX3ZhbHVlWzBdOwotCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wX21hcmdpbiA9 IGRhdGFfdmFsdWVbMF0gLSByZXNwb25zZTsKLQkJaW50ZWxfc2R2b19jb25uZWN0b3ItPmJvdHRv bV9tYXJnaW4gPSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wX21hcmdpbjsKIAkJaW50ZWxfc2R2 b19jb25uZWN0b3ItPnRvcCA9CiAJCQlkcm1fcHJvcGVydHlfY3JlYXRlX3JhbmdlKGRldiwgMCwK IAkJCQkJICAgICJ0b3BfbWFyZ2luIiwgMCwgZGF0YV92YWx1ZVswXSk7CkBAIC0yODAyLDggKzI4 MjksNyBAQCBpbnRlbF9zZHZvX2NyZWF0ZV9lbmhhbmNlX3Byb3BlcnR5X3R2KHN0cnVjdCBpbnRl bF9zZHZvICppbnRlbF9zZHZvLAogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWRybV9vYmplY3RfYXR0 YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCi0JCQkJCSAgICAgIGludGVsX3Nkdm9fY29u bmVjdG9yLT50b3AsCi0JCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT50b3BfbWFyZ2lu KTsKKwkJCQkJICAgaW50ZWxfc2R2b19jb25uZWN0b3ItPnRvcCwgMCk7CiAKIAkJaW50ZWxfc2R2 b19jb25uZWN0b3ItPmJvdHRvbSA9CiAJCQlkcm1fcHJvcGVydHlfY3JlYXRlX3JhbmdlKGRldiwg MCwKQEAgLTI4MTIsNDAgKzI4MzgsMzcgQEAgaW50ZWxfc2R2b19jcmVhdGVfZW5oYW5jZV9wcm9w ZXJ0eV90dihzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywKIAkJCXJldHVybiBmYWxzZTsK IAogCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAotCQkJCQkg ICAgICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tLAotCQkJCQkgICAgICBpbnRlbF9zZHZv X2Nvbm5lY3Rvci0+Ym90dG9tX21hcmdpbik7CisJCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVj dG9yLT5ib3R0b20sIDApOwogCQlEUk1fREVCVUdfS01TKCJ2X292ZXJzY2FuOiBtYXggJWQsICIK IAkJCSAgICAgICJkZWZhdWx0ICVkLCBjdXJyZW50ICVkXG4iLAogCQkJICAgICAgZGF0YV92YWx1 ZVswXSwgZGF0YV92YWx1ZVsxXSwgcmVzcG9uc2UpOwogCX0KIAotCUVOSEFOQ0VNRU5UKGhwb3Ms IEhQT1MpOwotCUVOSEFOQ0VNRU5UKHZwb3MsIFZQT1MpOwotCUVOSEFOQ0VNRU5UKHNhdHVyYXRp b24sIFNBVFVSQVRJT04pOwotCUVOSEFOQ0VNRU5UKGNvbnRyYXN0LCBDT05UUkFTVCk7Ci0JRU5I QU5DRU1FTlQoaHVlLCBIVUUpOwotCUVOSEFOQ0VNRU5UKHNoYXJwbmVzcywgU0hBUlBORVNTKTsK LQlFTkhBTkNFTUVOVChicmlnaHRuZXNzLCBCUklHSFRORVNTKTsKLQlFTkhBTkNFTUVOVChmbGlj a2VyX2ZpbHRlciwgRkxJQ0tFUl9GSUxURVIpOwotCUVOSEFOQ0VNRU5UKGZsaWNrZXJfZmlsdGVy X2FkYXB0aXZlLCBGTElDS0VSX0ZJTFRFUl9BREFQVElWRSk7Ci0JRU5IQU5DRU1FTlQoZmxpY2tl cl9maWx0ZXJfMmQsIEZMSUNLRVJfRklMVEVSXzJEKTsKLQlFTkhBTkNFTUVOVCh0dl9jaHJvbWFf ZmlsdGVyLCBUVl9DSFJPTUFfRklMVEVSKTsKLQlFTkhBTkNFTUVOVCh0dl9sdW1hX2ZpbHRlciwg VFZfTFVNQV9GSUxURVIpOworCUVOSEFOQ0VNRU5UKCZzZHZvX3N0YXRlLT50diwgaHBvcywgSFBP Uyk7CisJRU5IQU5DRU1FTlQoJnNkdm9fc3RhdGUtPnR2LCB2cG9zLCBWUE9TKTsKKwlFTkhBTkNF TUVOVCgmY29ubl9zdGF0ZS0+dHYsIHNhdHVyYXRpb24sIFNBVFVSQVRJT04pOworCUVOSEFOQ0VN RU5UKCZjb25uX3N0YXRlLT50diwgY29udHJhc3QsIENPTlRSQVNUKTsKKwlFTkhBTkNFTUVOVCgm Y29ubl9zdGF0ZS0+dHYsIGh1ZSwgSFVFKTsKKwlFTkhBTkNFTUVOVCgmY29ubl9zdGF0ZS0+dHYs IGJyaWdodG5lc3MsIEJSSUdIVE5FU1MpOworCUVOSEFOQ0VNRU5UKCZzZHZvX3N0YXRlLT50diwg c2hhcnBuZXNzLCBTSEFSUE5FU1MpOworCUVOSEFOQ0VNRU5UKCZzZHZvX3N0YXRlLT50diwgZmxp Y2tlcl9maWx0ZXIsIEZMSUNLRVJfRklMVEVSKTsKKwlFTkhBTkNFTUVOVCgmc2R2b19zdGF0ZS0+ dHYsIGZsaWNrZXJfZmlsdGVyX2FkYXB0aXZlLCBGTElDS0VSX0ZJTFRFUl9BREFQVElWRSk7CisJ RU5IQU5DRU1FTlQoJnNkdm9fc3RhdGUtPnR2LCBmbGlja2VyX2ZpbHRlcl8yZCwgRkxJQ0tFUl9G SUxURVJfMkQpOworCV9FTkhBTkNFTUVOVChzZHZvX3N0YXRlLT50di5jaHJvbWFfZmlsdGVyLCB0 dl9jaHJvbWFfZmlsdGVyLCBUVl9DSFJPTUFfRklMVEVSKTsKKwlfRU5IQU5DRU1FTlQoc2R2b19z dGF0ZS0+dHYubHVtYV9maWx0ZXIsIHR2X2x1bWFfZmlsdGVyLCBUVl9MVU1BX0ZJTFRFUik7CiAK IAlpZiAoZW5oYW5jZW1lbnRzLmRvdF9jcmF3bCkgewogCQlpZiAoIWludGVsX3Nkdm9fZ2V0X3Zh bHVlKGludGVsX3Nkdm8sIFNEVk9fQ01EX0dFVF9ET1RfQ1JBV0wsICZyZXNwb25zZSwgMikpCiAJ CQlyZXR1cm4gZmFsc2U7CiAKLQkJaW50ZWxfc2R2b19jb25uZWN0b3ItPm1heF9kb3RfY3Jhd2wg PSAxOwotCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Y3VyX2RvdF9jcmF3bCA9IHJlc3BvbnNlICYg MHgxOworCQlzZHZvX3N0YXRlLT50di5kb3RfY3Jhd2wgPSByZXNwb25zZSAmIDB4MTsKIAkJaW50 ZWxfc2R2b19jb25uZWN0b3ItPmRvdF9jcmF3bCA9CiAJCQlkcm1fcHJvcGVydHlfY3JlYXRlX3Jh bmdlKGRldiwgMCwgImRvdF9jcmF3bCIsIDAsIDEpOwogCQlpZiAoIWludGVsX3Nkdm9fY29ubmVj dG9yLT5kb3RfY3Jhd2wpCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJZHJtX29iamVjdF9hdHRhY2hf cHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKLQkJCQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0 b3ItPmRvdF9jcmF3bCwKLQkJCQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3ItPmN1cl9kb3Rf Y3Jhd2wpOworCQkJCQkgICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ZG90X2NyYXdsLCAwKTsKIAkJ RFJNX0RFQlVHX0tNUygiZG90IGNyYXdsOiBjdXJyZW50ICVkXG4iLCByZXNwb25zZSk7CiAJfQog CkBAIC0yODYxLDExICsyODg0LDEyIEBAIGludGVsX3Nkdm9fY3JlYXRlX2VuaGFuY2VfcHJvcGVy dHlfbHZkcyhzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywKIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yID0gJmludGVsX3Nkdm9fY29ubmVjdG9yLT5iYXNlLmJhc2U7CiAJdWlu dDE2X3QgcmVzcG9uc2UsIGRhdGFfdmFsdWVbMl07CiAKLQlFTkhBTkNFTUVOVChicmlnaHRuZXNz LCBCUklHSFRORVNTKTsKKwlFTkhBTkNFTUVOVCgmY29ubmVjdG9yLT5zdGF0ZS0+dHYsIGJyaWdo dG5lc3MsIEJSSUdIVE5FU1MpOwogCiAJcmV0dXJuIHRydWU7CiB9CiAjdW5kZWYgRU5IQU5DRU1F TlQKKyN1bmRlZiBfRU5IQU5DRU1FTlQKIAogc3RhdGljIGJvb2wgaW50ZWxfc2R2b19jcmVhdGVf ZW5oYW5jZV9wcm9wZXJ0eShzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywKIAkJCQkJICAg ICAgIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2b19jb25uZWN0b3IpCi0t IAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==