From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v6 12/12] drm/i915: Convert intel_sdvo connector properties to atomic. Date: Mon, 1 May 2017 15:38:04 +0200 Message-ID: <20170501133804.8116-13-maarten.lankhorst@linux.intel.com> References: <20170501133804.8116-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170501133804.8116-1-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 Cc: dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U0RWTyB3YXMgdGhlIGxhc3QgY29ubmVjdG9yIHRoYXQncyBzdGlsbCB1c2luZyB0aGUgbGVnYWN5 IHBhdGhzCmZvciBwcm9wZXJ0aWVzLCBhbmQgdGhpcyBpcyB3aXRoIGEgcmVhc29uIQoKVGhpcyBj b25uZWN0b3IgaW1wbGVtZW50cyBhIGxvdCBvZiBwcm9wZXJ0aWVzIGR5bmFtaWNhbGx5LAphbmQg c29tZSBvZiB0aGVtIHNoYXJlZCB3aXRoIHRoZSBkaWdpdGFsIGNvbm5lY3RvciBzdGF0ZSwKc28g c2R2b19jb25uZWN0b3Jfc3RhdGUgc3ViY2xhc3NlcyBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9z dGF0ZS4KCnNldF9wcm9wZXJ0eSBoYWQgYSBsb3Qgb2YgdmFsaWRhdGlvbiwgYnV0IHRoaXMgaXMg aGFuZGxlZCBpbiB0aGUKZHJtIGNvcmUsIHNvIG1vc3Qgb2YgdGhlIHZhbGlkYXRpb24gY2FuIGRp ZSBvZmYuIFRoZSBwcm9wZXJ0aWVzCmFyZSB3cml0dGVuIHJpZ2h0IGJlZm9yZSBlbmFibGluZyB0 aGUgY29ubmVjdG9yLCBzaW5jZSB0aGVyZSBpcyBubwpnb29kIHdheSB0byB1cGRhdGUgdGhlIHBy b3BlcnRpZXMgd2l0aG91dCBjcnRjLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljLmMgIHwgIDQwIC0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgIDM3IC0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwg ICA2IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyAgICB8IDUxOCArKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAyODAgaW5zZXJ0 aW9ucygrKSwgMzIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMK aW5kZXggMTgyOTA5ZjI2NmY1Li5kNzkxYjNlZjg5YjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pYy5jCkBAIC0zNiw0NiArMzYsNiBAQAogI2luY2x1ZGUgImludGVsX2Rydi5oIgogCiAv KioKLSAqIGludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5IC0gZmV0Y2ggbGVnYWN5 IGNvbm5lY3RvciBwcm9wZXJ0eSB2YWx1ZQotICogQGNvbm5lY3RvcjogY29ubmVjdG9yIHRvIGZl dGNoIHByb3BlcnR5IGZvcgotICogQHN0YXRlOiBzdGF0ZSBjb250YWluaW5nIHRoZSBwcm9wZXJ0 eSB2YWx1ZQotICogQHByb3BlcnR5OiBwcm9wZXJ0eSB0byBsb29rIHVwCi0gKiBAdmFsOiBwb2lu dGVyIHRvIHdyaXRlIHByb3BlcnR5IHZhbHVlIGludG8KLSAqCi0gKiBUaGUgRFJNIGNvcmUgZG9l cyBub3Qgc3RvcmUgc2hhZG93IGNvcGllcyBvZiBwcm9wZXJ0aWVzIGZvcgotICogYXRvbWljLWNh cGFibGUgZHJpdmVycy4gIFRoaXMgZW50cnlwb2ludCBpcyB1c2VkIHRvIGZldGNoCi0gKiB0aGUg Y3VycmVudCB2YWx1ZSBvZiBhIGRyaXZlci1zcGVjaWZpYyBjb25uZWN0b3IgcHJvcGVydHkuCi0g KgotICogVGhpcyBpcyBhIGludGVybWVkaWFyeSBzb2x1dGlvbiB1bnRpbCBhbGwgY29ubmVjdG9y cyBhcmUKLSAqIGNvbnZlcnRlZCB0byBzdXBwb3J0IGZ1bGwgYXRvbWljIHByb3BlcnRpZXMuCi0g Ki8KLWludCBpbnRlbF9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAotCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqc3RhdGUsCi0JCQkJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAotCQkJCQl1aW50 NjRfdCAqdmFsKQotewotCWludCBpOwotCi0JLyoKLQkgKiBUT0RPOiBXZSBvbmx5IGhhdmUgYXRv bWljIG1vZGVzZXQgZm9yIHBsYW5lcyBhdCB0aGUgbW9tZW50LCBzbyB0aGUKLQkgKiBjcnRjL2Nv bm5lY3RvciBjb2RlIGlzbid0IHF1aXRlIHJlYWR5IHlldC4gIFVudGlsIGl0J3MgcmVhZHksCi0J ICogY29udGludWUgdG8gbG9vayB1cCBhbGwgcHJvcGVydHkgdmFsdWVzIGluIHRoZSBEUk0ncyBz aGFkb3cgY29weQotCSAqIGluIG9iai0+cHJvcGVydGllcy0+dmFsdWVzW10uCi0JICoKLQkgKiBX aGVuIHRoZSBjcnRjL2Nvbm5lY3RvciBzdGF0ZSB3b3JrIG1hdHVyZXMsIHRoaXMgZnVuY3Rpb24g c2hvdWxkCi0JICogYmUgdXBkYXRlZCB0byByZWFkIHRoZSB2YWx1ZXMgb3V0IG9mIHRoZSBzdGF0 ZSBzdHJ1Y3R1cmUgaW5zdGVhZC4KLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgY29ubmVjdG9yLT5i YXNlLnByb3BlcnRpZXMtPmNvdW50OyBpKyspIHsKLQkJaWYgKGNvbm5lY3Rvci0+YmFzZS5wcm9w ZXJ0aWVzLT5wcm9wZXJ0aWVzW2ldID09IHByb3BlcnR5KSB7Ci0JCQkqdmFsID0gY29ubmVjdG9y LT5iYXNlLnByb3BlcnRpZXMtPnZhbHVlc1tpXTsKLQkJCXJldHVybiAwOwotCQl9Ci0JfQotCi0J cmV0dXJuIC1FSU5WQUw7Ci19Ci0KLS8qKgogICogaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRv bWljX2dldF9wcm9wZXJ0eSAtIGhvb2sgZm9yIGNvbm5lY3Rvci0+YXRvbWljX2dldF9wcm9wZXJ0 eS4KICAqIEBjb25uZWN0b3I6IENvbm5lY3RvciB0byBnZXQgdGhlIHByb3BlcnR5IGZvci4KICAq IEBzdGF0ZTogQ29ubmVjdG9yIHN0YXRlIHRvIHJldHJpZXZlIHRoZSBwcm9wZXJ0eSBmcm9tLgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDEwODEyMmRhYTgwNy4uMmVlYTQ3 OWY0YzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMzA3Nyw0MyAr MTMwNzcsNiBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmRldjsKLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Ci0Jc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlOwotCWludCByZXQ7Ci0KLQlzdGF0ZSA9IGRybV9hdG9taWNfc3Rh dGVfYWxsb2MoZGV2KTsKLQlpZiAoIXN0YXRlKSB7Ci0JCURSTV9ERUJVR19LTVMoIltDUlRDOiVk OiVzXSBjcnRjIHJlc3RvcmUgZmFpbGVkLCBvdXQgb2YgbWVtb3J5IiwKLQkJCSAgICAgIGNydGMt PmJhc2UuaWQsIGNydGMtPm5hbWUpOwotCQlyZXR1cm47Ci0JfQotCi0Jc3RhdGUtPmFjcXVpcmVf Y3R4ID0gY3J0Yy0+ZGV2LT5tb2RlX2NvbmZpZy5hY3F1aXJlX2N0eDsKLQotcmV0cnk6Ci0JY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwotCXJldCA9 IFBUUl9FUlJfT1JfWkVSTyhjcnRjX3N0YXRlKTsKLQlpZiAoIXJldCkgewotCQlpZiAoIWNydGNf c3RhdGUtPmFjdGl2ZSkKLQkJCWdvdG8gb3V0OwotCi0JCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdl ZCA9IHRydWU7Ci0JCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQl9Ci0KLQlpZiAo cmV0ID09IC1FREVBRExLKSB7Ci0JCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwotCQlk cm1fbW9kZXNldF9iYWNrb2ZmKHN0YXRlLT5hY3F1aXJlX2N0eCk7Ci0JCWdvdG8gcmV0cnk7Ci0J fQotCi1vdXQ6Ci0JZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwotfQotCiBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGludGVsX2NydGNfZnVuY3MgPSB7CiAJLmdhbW1hX3Nl dCA9IGRybV9hdG9taWNfaGVscGVyX2xlZ2FjeV9nYW1tYV9zZXQsCiAJLnNldF9jb25maWcgPSBk cm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRl eCA5NTA3MzY0ZDQ3NzAuLjExMGQ5MDg4YmUzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK QEAgLTEzMjQsNyArMTMyNCw2IEBAIHVuc2lnbmVkIGludCBpbnRlbF9yb3RhdGlvbl9pbmZvX3Np emUoY29uc3Qgc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gKnJvdF9pbmZvCiBib29sIGludGVs X2hhc19wZW5kaW5nX2ZiX3VucGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiB2b2lkIGludGVsX21hcmtfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owogdm9pZCBpbnRlbF9tYXJrX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKLXZvaWQgaW50ZWxfY3J0Y19yZXN0b3JlX21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsK IGludCBpbnRlbF9kaXNwbGF5X3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lk IGludGVsX3Bwc191bmxvY2tfcmVnc193YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBpbnRlbF9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKTsKQEAgLTE4ODQsMTEgKzE4ODMsNiBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX2VuZChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yawogdm9p ZCBpbnRlbF90dl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8q IGludGVsX2F0b21pYy5jICovCi1pbnQgaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVy dHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJCQkJY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAotCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9w ZXJ0eSwKLQkJCQkJdWludDY0X3QgKnZhbCk7Ci0KIGludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rv cl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJ CQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCiAJCQkJCQlzdHJ1 Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nkdm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwppbmRl eCA0YmU4YmUxNjIwNTguLmUzMWEyNDM2Yzg4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc2R2by5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8u YwpAQCAtMTAwLDEzICsxMDAsNiBAQCBzdHJ1Y3QgaW50ZWxfc2R2byB7CiAJdWludDE2X3QgaG90 cGx1Z19hY3RpdmU7CiAKIAkvKioKLQkgKiBUaGlzIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBjb2xv ciByYW5nZSBvZiBSQkcgb3V0cHV0cyBpbiBIRE1JIG1vZGUuCi0JICogSXQgaXMgb25seSB2YWxp ZCB3aGVuIHVzaW5nIFRNRFMgZW5jb2RpbmcgYW5kIDggYml0IHBlciBjb2xvciBtb2RlLgotCSAq LwotCXVpbnQzMl90IGNvbG9yX3JhbmdlOwotCWJvb2wgY29sb3JfcmFuZ2VfYXV0bzsKLQotCS8q KgogCSAqIFRoaXMgaXMgc2V0IGlmIHdlJ3JlIGdvaW5nIHRvIHRyZWF0IHRoZSBkZXZpY2UgYXMg VFYtb3V0LgogCSAqCiAJICogV2hpbGUgd2UgaGF2ZSB0aGVzZSBuaWNlIGZyaWVuZGx5IGZsYWdz IGZvciBvdXRwdXQgdHlwZXMgdGhhdCBvdWdodApAQCAtMTE3LDkgKzExMCw2IEBAIHN0cnVjdCBp bnRlbF9zZHZvIHsKIAogCWVudW0gcG9ydCBwb3J0OwogCi0JLyogVGhpcyBpcyBmb3IgY3VycmVu dCB0diBmb3JtYXQgbmFtZSAqLwotCWludCB0dl9mb3JtYXRfaW5kZXg7Ci0KIAkvKioKIAkgKiBU aGlzIGlzIHNldCBpZiB3ZSB0cmVhdCB0aGUgZGV2aWNlIGFzIEhETUksIGluc3RlYWQgb2YgRFZJ LgogCSAqLwpAQCAtMTU0LDggKzE0NCw2IEBAIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciB7 CiAJLyogTWFyayB0aGUgdHlwZSBvZiBjb25uZWN0b3IgKi8KIAl1aW50MTZfdCBvdXRwdXRfZmxh ZzsKIAotCWVudW0gaGRtaV9mb3JjZV9hdWRpbyBmb3JjZV9hdWRpbzsKLQogCS8qIFRoaXMgY29u dGFpbnMgYWxsIGN1cnJlbnQgc3VwcG9ydGVkIFRWIGZvcm1hdCAqLwogCXU4IHR2X2Zvcm1hdF9z dXBwb3J0ZWRbVFZfRk9STUFUX05VTV07CiAJaW50ICAgZm9ybWF0X3N1cHBvcnRlZF9udW07CkBA IC0xODIsMjQgKzE3MCwxOSBAQCBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgewogCS8qIGFk ZCB0aGUgcHJvcGVydHkgZm9yIHRoZSBTRFZPLVRWL0xWRFMgKi8KIAlzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpicmlnaHRuZXNzOwogCi0JLyogQWRkIHZhcmlhYmxlIHRvIHJlY29yZCBjdXJyZW50IHNl dHRpbmcgZm9yIHRoZSBhYm92ZSBwcm9wZXJ0eSAqLwotCXUzMglsZWZ0X21hcmdpbiwgcmlnaHRf bWFyZ2luLCB0b3BfbWFyZ2luLCBib3R0b21fbWFyZ2luOwotCiAJLyogdGhpcyBpcyB0byBnZXQg dGhlIHJhbmdlIG9mIG1hcmdpbi4qLwotCXUzMgltYXhfaHNjYW4sICBtYXhfdnNjYW47Ci0JdTMy CW1heF9ocG9zLCBjdXJfaHBvczsKLQl1MzIJbWF4X3Zwb3MsIGN1cl92cG9zOwotCXUzMgljdXJf YnJpZ2h0bmVzcywgbWF4X2JyaWdodG5lc3M7Ci0JdTMyCWN1cl9jb250cmFzdCwJbWF4X2NvbnRy YXN0OwotCXUzMgljdXJfc2F0dXJhdGlvbiwgbWF4X3NhdHVyYXRpb247Ci0JdTMyCWN1cl9odWUs CW1heF9odWU7Ci0JdTMyCWN1cl9zaGFycG5lc3MsCW1heF9zaGFycG5lc3M7Ci0JdTMyCWN1cl9m bGlja2VyX2ZpbHRlciwJCW1heF9mbGlja2VyX2ZpbHRlcjsKLQl1MzIJY3VyX2ZsaWNrZXJfZmls dGVyX2FkYXB0aXZlLAltYXhfZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmU7Ci0JdTMyCWN1cl9mbGlj a2VyX2ZpbHRlcl8yZCwJCW1heF9mbGlja2VyX2ZpbHRlcl8yZDsKLQl1MzIJY3VyX3R2X2Nocm9t YV9maWx0ZXIsCW1heF90dl9jaHJvbWFfZmlsdGVyOwotCXUzMgljdXJfdHZfbHVtYV9maWx0ZXIs CW1heF90dl9sdW1hX2ZpbHRlcjsKLQl1MzIJY3VyX2RvdF9jcmF3bCwJbWF4X2RvdF9jcmF3bDsK Kwl1MzIgbWF4X2hzY2FuLCBtYXhfdnNjYW47Cit9OworCitzdHJ1Y3QgaW50ZWxfc2R2b19jb25u ZWN0b3Jfc3RhdGUgeworCS8qIGJhc2UuYmFzZTogdHYuc2F0dXJhdGlvbi9jb250cmFzdC9odWUv YnJpZ2h0bmVzcyAqLworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSBiYXNl OworCisJc3RydWN0IHsKKwkJdW5zaWduZWQgb3ZlcnNjYW5faCwgb3ZlcnNjYW5fdiwgaHBvcywg dnBvcywgc2hhcnBuZXNzOworCQl1bnNpZ25lZCBmbGlja2VyX2ZpbHRlciwgZmxpY2tlcl9maWx0 ZXJfMmQsIGZsaWNrZXJfZmlsdGVyX2FkYXB0aXZlOworCQl1bnNpZ25lZCBjaHJvbWFfZmlsdGVy LCBsdW1hX2ZpbHRlciwgZG90X2NyYXdsOworCX0gdHY7CiB9OwogCiBzdGF0aWMgc3RydWN0IGlu dGVsX3Nkdm8gKnRvX3Nkdm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCkBAIC0yMTIs OSArMTk1LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfYXR0YWNoZWRfc2R2 byhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXJldHVybiB0b19zZHZvKGludGVs X2F0dGFjaGVkX2VuY29kZXIoY29ubmVjdG9yKSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxf c2R2b19jb25uZWN0b3IgKnRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCitzdGF0aWMgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICoKK3Rv X2ludGVsX3Nkdm9fY29ubmVjdG9yKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7 CisJcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5l Y3RvciwgYmFzZS5iYXNlKTsKK30KKworc3RhdGljIHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rv cl9zdGF0ZSAqCit0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKLQlyZXR1cm4gY29udGFpbmVyX29mKHRvX2ludGVs X2Nvbm5lY3Rvcihjb25uZWN0b3IpLCBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IsIGJhc2Up OworCXJldHVybiBjb250YWluZXJfb2YoY29ubl9zdGF0ZSwgc3RydWN0IGludGVsX3Nkdm9fY29u bmVjdG9yX3N0YXRlLCBiYXNlLmJhc2UpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTAzMCwxMiAr MTAyMCwxMyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX3NldF9hdmlfaW5mb2ZyYW1lKHN0cnVj dCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogCQkJCQkgIHNkdm9fZGF0YSwgc2l6ZW9mKHNkdm9f ZGF0YSkpOwogfQogCi1zdGF0aWMgYm9vbCBpbnRlbF9zZHZvX3NldF90dl9mb3JtYXQoc3RydWN0 IGludGVsX3Nkdm8gKmludGVsX3Nkdm8pCitzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX3NldF90dl9m b3JtYXQoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCisJCQkJICAgICBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfc2R2b190dl9m b3JtYXQgZm9ybWF0OwogCXVpbnQzMl90IGZvcm1hdF9tYXA7CiAKLQlmb3JtYXRfbWFwID0gMSA8 PCBpbnRlbF9zZHZvLT50dl9mb3JtYXRfaW5kZXg7CisJZm9ybWF0X21hcCA9IDEgPDwgY29ubl9z dGF0ZS0+dHYubW9kZTsKIAltZW1zZXQoJmZvcm1hdCwgMCwgc2l6ZW9mKGZvcm1hdCkpOwogCW1l bWNweSgmZm9ybWF0LCAmZm9ybWF0X21hcCwgbWluKHNpemVvZihmb3JtYXQpLCBzaXplb2YoZm9y bWF0X21hcCkpKTsKIApAQCAtMTEyMiw4ICsxMTEzLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfc2R2 b19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50 ZWxfc2R2byAqaW50ZWxfc2R2byA9IHRvX3Nkdm8oZW5jb2Rlcik7Ci0Jc3RydWN0IGludGVsX3Nk dm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciA9Ci0JCXRvX2ludGVsX3Nkdm9fY29u bmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX3Nkdm9fY29ubmVj dG9yX3N0YXRlICppbnRlbF9zZHZvX3N0YXRlID0KKwkJdG9faW50ZWxfc2R2b19jb25uZWN0b3Jf c3RhdGUoY29ubl9zdGF0ZSk7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5tb2RlOwogCkBAIC0xMTYyLDE0ICsx MTUzLDE0IEBAIHN0YXRpYyBib29sIGludGVsX3Nkdm9fY29tcHV0ZV9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPQog CQlpbnRlbF9zZHZvX2dldF9waXhlbF9tdWx0aXBsaWVyKGFkanVzdGVkX21vZGUpOwogCi0JaWYg KGludGVsX3Nkdm9fY29ubmVjdG9yLT5mb3JjZV9hdWRpbyAhPSBIRE1JX0FVRElPX09GRl9EVkkp CisJaWYgKGludGVsX3Nkdm9fc3RhdGUtPmJhc2UuZm9yY2VfYXVkaW8gIT0gSERNSV9BVURJT19P RkZfRFZJKQogCQlwaXBlX2NvbmZpZy0+aGFzX2hkbWlfc2luayA9IGludGVsX3Nkdm8tPmhhc19o ZG1pX21vbml0b3I7CiAKLQlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmZvcmNlX2F1ZGlvID09 IEhETUlfQVVESU9fT04gfHwKLQkgICAgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5mb3JjZV9hdWRp byA9PSBIRE1JX0FVRElPX0FVVE8gJiYgaW50ZWxfc2R2by0+aGFzX2hkbWlfYXVkaW8pKQorCWlm IChpbnRlbF9zZHZvX3N0YXRlLT5iYXNlLmZvcmNlX2F1ZGlvID09IEhETUlfQVVESU9fT04gfHwK KwkgICAgKGludGVsX3Nkdm9fc3RhdGUtPmJhc2UuZm9yY2VfYXVkaW8gPT0gSERNSV9BVURJT19B VVRPICYmIGludGVsX3Nkdm8tPmhhc19oZG1pX2F1ZGlvKSkKIAkJcGlwZV9jb25maWctPmhhc19h dWRpbyA9IHRydWU7CiAKLQlpZiAoaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2VfYXV0bykgeworCWlm IChpbnRlbF9zZHZvX3N0YXRlLT5iYXNlLmJyb2FkY2FzdF9yZ2IgPT0gSU5URUxfQlJPQURDQVNU X1JHQl9BVVRPKSB7CiAJCS8qIFNlZSBDRUEtODYxLUUgLSA1LjEgRGVmYXVsdCBFbmNvZGluZyBQ YXJhbWV0ZXJzICovCiAJCS8qIEZJWE1FOiBUaGlzIGJpdCBpcyBvbmx5IHZhbGlkIHdoZW4gdXNp bmcgVE1EUyBlbmNvZGluZyBhbmQgOAogCQkgKiBiaXQgcGVyIGNvbG9yIG1vZGUuICovCkBAIC0x MTc4LDcgKzExNjksNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1dGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29s b3JfcmFuZ2UgPSB0cnVlOwogCX0gZWxzZSB7CiAJCWlmIChwaXBlX2NvbmZpZy0+aGFzX2hkbWlf c2luayAmJgotCQkgICAgaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2UgPT0gSERNSV9DT0xPUl9SQU5H RV8xNl8yMzUpCisJCSAgICBpbnRlbF9zZHZvX3N0YXRlLT5iYXNlLmJyb2FkY2FzdF9yZ2IgPT0g SU5URUxfQlJPQURDQVNUX1JHQl9MSU1JVEVEKQogCQkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29s b3JfcmFuZ2UgPSB0cnVlOwogCX0KIApAQCAtMTE5Myw2ICsxMTg0LDY4IEBAIHN0YXRpYyBib29s IGludGVsX3Nkdm9fY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJcmV0dXJuIHRydWU7CiB9CiAKKyNkZWZpbmUgVVBEQVRFX1BST1BFUlRZKGlucHV0LCBOQU1F KSBcCisJZG8geyBcCisJCXZhbCA9IGlucHV0OyBcCisJCWludGVsX3Nkdm9fc2V0X3ZhbHVlKGlu dGVsX3Nkdm8sIFNEVk9fQ01EX1NFVF8jI05BTUUsICZ2YWwsIHNpemVvZih2YWwpKTsgXAorCX0g d2hpbGUgKDApCisKK3N0YXRpYyB2b2lkIGludGVsX3Nkdm9fdXBkYXRlX3Byb3BzKHN0cnVjdCBp bnRlbF9zZHZvICppbnRlbF9zZHZvLAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0 b3Jfc3RhdGUgKnNkdm9fc3RhdGUpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNv bm5fc3RhdGUgPSAmc2R2b19zdGF0ZS0+YmFzZS5iYXNlOworCXN0cnVjdCBpbnRlbF9zZHZvX2Nv bm5lY3RvciAqaW50ZWxfc2R2b19jb25uID0KKwkJdG9faW50ZWxfc2R2b19jb25uZWN0b3IoY29u bl9zdGF0ZS0+Y29ubmVjdG9yKTsKKwl1aW50MTZfdCB2YWw7CisKKwlpZiAoaW50ZWxfc2R2b19j b25uLT5sZWZ0KQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYub3ZlcnNjYW5faCwg T1ZFUlNDQU5fSCk7CisKKwlpZiAoaW50ZWxfc2R2b19jb25uLT50b3ApCisJCVVQREFURV9QUk9Q RVJUWShzZHZvX3N0YXRlLT50di5vdmVyc2Nhbl92LCBPVkVSU0NBTl9WKTsKKworCWlmIChpbnRl bF9zZHZvX2Nvbm4tPmhwb3MpCisJCVVQREFURV9QUk9QRVJUWShzZHZvX3N0YXRlLT50di5ocG9z LCBIUE9TKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPnZwb3MpCisJCVVQREFURV9QUk9QRVJU WShzZHZvX3N0YXRlLT50di52cG9zLCBWUE9TKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPnNh dHVyYXRpb24pCisJCVVQREFURV9QUk9QRVJUWShjb25uX3N0YXRlLT50di5zYXR1cmF0aW9uLCBT QVRVUkFUSU9OKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPmNvbnRyYXN0KQorCQlVUERBVEVf UFJPUEVSVFkoY29ubl9zdGF0ZS0+dHYuY29udHJhc3QsIENPTlRSQVNUKTsKKworCWlmIChpbnRl bF9zZHZvX2Nvbm4tPmh1ZSkKKwkJVVBEQVRFX1BST1BFUlRZKGNvbm5fc3RhdGUtPnR2Lmh1ZSwg SFVFKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPmJyaWdodG5lc3MpCisJCVVQREFURV9QUk9Q RVJUWShjb25uX3N0YXRlLT50di5icmlnaHRuZXNzLCBCUklHSFRORVNTKTsKKworCWlmIChpbnRl bF9zZHZvX2Nvbm4tPnNoYXJwbmVzcykKKwkJVVBEQVRFX1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2 LnNoYXJwbmVzcywgU0hBUlBORVNTKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPmZsaWNrZXJf ZmlsdGVyKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9maWx0ZXIs IEZMSUNLRVJfRklMVEVSKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPmZsaWNrZXJfZmlsdGVy XzJkKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9maWx0ZXJfMmQs IEZMSUNLRVJfRklMVEVSXzJEKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPmZsaWNrZXJfZmls dGVyX2FkYXB0aXZlKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9m aWx0ZXJfYWRhcHRpdmUsIEZMSUNLRVJfRklMVEVSX0FEQVBUSVZFKTsKKworCWlmIChpbnRlbF9z ZHZvX2Nvbm4tPnR2X2Nocm9tYV9maWx0ZXIpCisJCVVQREFURV9QUk9QRVJUWShzZHZvX3N0YXRl LT50di5jaHJvbWFfZmlsdGVyLCBUVl9DSFJPTUFfRklMVEVSKTsKKworCWlmIChpbnRlbF9zZHZv X2Nvbm4tPnR2X2x1bWFfZmlsdGVyKQorCQlVUERBVEVfUFJPUEVSVFkoc2R2b19zdGF0ZS0+dHYu bHVtYV9maWx0ZXIsIFRWX0xVTUFfRklMVEVSKTsKKworCWlmIChpbnRlbF9zZHZvX2Nvbm4tPmRv dF9jcmF3bCkKKwkJVVBEQVRFX1BST1BFUlRZKHNkdm9fc3RhdGUtPnR2LmRvdF9jcmF3bCwgRE9U X0NSQVdMKTsKKworI3VuZGVmIFVQREFURV9QUk9QRVJUWQorfQorCiBzdGF0aWMgdm9pZCBpbnRl bF9zZHZvX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJ CQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgIHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQpAQCAtMTIwMCw2ICsxMjUzLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfc2R2b19wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRl bF9lbmNvZGVyLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo aW50ZWxfZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9k ZTsKKwlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUgKnNkdm9fc3RhdGUgPSB0b19p bnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLm1vZGU7CiAJc3RydWN0IGludGVsX3Nk dm8gKmludGVsX3Nkdm8gPSB0b19zZHZvKGludGVsX2VuY29kZXIpOwogCXUzMiBzZHZveDsKQEAg LTEyMDcsNiArMTI2MSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfc2R2b19kdGQg aW5wdXRfZHRkLCBvdXRwdXRfZHRkOwogCWludCByYXRlOwogCisJaW50ZWxfc2R2b191cGRhdGVf cHJvcHMoaW50ZWxfc2R2bywgc2R2b19zdGF0ZSk7CisKIAkvKiBGaXJzdCwgc2V0IHRoZSBpbnB1 dCBtYXBwaW5nIGZvciB0aGUgZmlyc3QgaW5wdXQgdG8gb3VyIGNvbnRyb2xsZWQKIAkgKiBvdXRw dXQuIFRoaXMgaXMgb25seSBjb3JyZWN0IGlmIHdlJ3JlIGEgc2luZ2xlLWlucHV0IGRldmljZSwg aW4KIAkgKiB3aGljaCBjYXNlIHRoZSBmaXJzdCBpbnB1dCBpcyB0aGUgb3V0cHV0IGZyb20gdGhl IGFwcHJvcHJpYXRlIFNEVk8KQEAgLTEyNDgsNyArMTMwNCw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAkJ aW50ZWxfc2R2b19zZXRfZW5jb2RlKGludGVsX3Nkdm8sIFNEVk9fRU5DT0RFX0RWSSk7CiAKIAlp ZiAoaW50ZWxfc2R2by0+aXNfdHYgJiYKLQkgICAgIWludGVsX3Nkdm9fc2V0X3R2X2Zvcm1hdChp bnRlbF9zZHZvKSkKKwkgICAgIWludGVsX3Nkdm9fc2V0X3R2X2Zvcm1hdChpbnRlbF9zZHZvLCBj b25uX3N0YXRlKSkKIAkJcmV0dXJuOwogCiAJaW50ZWxfc2R2b19nZXRfZHRkX2Zyb21fbW9kZSgm aW5wdXRfZHRkLCBhZGp1c3RlZF9tb2RlKTsKQEAgLTE4ODAsNiArMTkzNiw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBzZHZvX3R2X21vZGVzW10gPSB7CiBzdGF0aWMg dm9pZCBpbnRlbF9zZHZvX2dldF90dl9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQogewogCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvID0gaW50ZWxfYXR0YWNoZWRf c2R2byhjb25uZWN0b3IpOworCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlID0gY29ubmVjdG9yLT5zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfc2R2b19zZHR2X3Jlc29s dXRpb25fcmVxdWVzdCB0dl9yZXM7CiAJdWludDMyX3QgcmVwbHkgPSAwLCBmb3JtYXRfbWFwID0g MDsKIAlpbnQgaTsKQEAgLTE4OTAsNyArMTk0Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9f Z2V0X3R2X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJLyogUmVhZCB0 aGUgbGlzdCBvZiBzdXBwb3J0ZWQgaW5wdXQgcmVzb2x1dGlvbnMgZm9yIHRoZSBzZWxlY3RlZCBU VgogCSAqIGZvcm1hdC4KIAkgKi8KLQlmb3JtYXRfbWFwID0gMSA8PCBpbnRlbF9zZHZvLT50dl9m b3JtYXRfaW5kZXg7CisJZm9ybWF0X21hcCA9IDEgPDwgY29ubl9zdGF0ZS0+dHYubW9kZTsKIAlt ZW1jcHkoJnR2X3JlcywgJmZvcm1hdF9tYXAsCiAJICAgICAgIG1pbihzaXplb2YoZm9ybWF0X21h cCksIHNpemVvZihzdHJ1Y3QgaW50ZWxfc2R2b19zZHR2X3Jlc29sdXRpb25fcmVxdWVzdCkpKTsK IApAQCAtMTk4MCwxNzUgKzIwMzcsMTIwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fZGVzdHJv eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogfQogCiBzdGF0aWMgaW50Ci1pbnRl bF9zZHZvX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkJ c3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCi0JCQl1aW50NjRfdCB2YWwpCitpbnRlbF9z ZHZvX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCisJCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUs CisJCQkJCSBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJIHVpbnQ2NF90ICp2 YWwpCiB7Ci0Jc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8gPSBpbnRlbF9hdHRhY2hlZF9z ZHZvKGNvbm5lY3Rvcik7CiAJc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZv X2Nvbm5lY3RvciA9IHRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5lY3Rvcik7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmRldik7Ci0J dWludDE2X3QgdGVtcF92YWx1ZTsKLQl1aW50OF90IGNtZDsKLQlpbnQgcmV0OwotCi0JcmV0ID0g ZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwgcHJvcGVydHks IHZhbCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWlmIChwcm9wZXJ0eSA9PSBkZXZf cHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpIHsKLQkJaW50IGkgPSB2YWw7Ci0JCWJvb2wgaGFz X2F1ZGlvLCBvbGRfYXVkaW87Ci0KLQkJaWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5mb3JjZV9h dWRpbyA9PSBIRE1JX0FVRElPX0FVVE8pCi0JCQlvbGRfYXVkaW8gPSBpbnRlbF9zZHZvLT5oYXNf aGRtaV9hdWRpbzsKLQkJZWxzZQotCQkJb2xkX2F1ZGlvID0gaW50ZWxfc2R2b19jb25uZWN0b3It PmZvcmNlX2F1ZGlvID09IEhETUlfQVVESU9fT047Ci0KLQkJaWYgKGkgPT0gSERNSV9BVURJT19B VVRPKQotCQkJaGFzX2F1ZGlvID0gaW50ZWxfc2R2by0+aGFzX2hkbWlfYXVkaW87Ci0JCWVsc2UK LQkJCWhhc19hdWRpbyA9IChpID09IEhETUlfQVVESU9fT04pOwotCi0JCWludGVsX3Nkdm9fY29u bmVjdG9yLT5mb3JjZV9hdWRpbyA9IGk7Ci0KLQkJaWYgKGhhc19hdWRpbyA9PSBvbGRfYXVkaW8p Ci0JCQlyZXR1cm4gMDsKLQotCQlnb3RvIGRvbmU7Ci0JfQotCi0JaWYgKHByb3BlcnR5ID09IGRl dl9wcml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KSB7Ci0JCWJvb2wgb2xkX2F1dG8gPSBpbnRl bF9zZHZvLT5jb2xvcl9yYW5nZV9hdXRvOwotCQl1aW50MzJfdCBvbGRfcmFuZ2UgPSBpbnRlbF9z ZHZvLT5jb2xvcl9yYW5nZTsKLQotCQlzd2l0Y2ggKHZhbCkgewotCQljYXNlIElOVEVMX0JST0FE Q0FTVF9SR0JfQVVUTzoKLQkJCWludGVsX3Nkdm8tPmNvbG9yX3JhbmdlX2F1dG8gPSB0cnVlOwot CQkJYnJlYWs7Ci0JCWNhc2UgSU5URUxfQlJPQURDQVNUX1JHQl9GVUxMOgotCQkJaW50ZWxfc2R2 by0+Y29sb3JfcmFuZ2VfYXV0byA9IGZhbHNlOwotCQkJaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2Ug PSAwOwotCQkJYnJlYWs7Ci0JCWNhc2UgSU5URUxfQlJPQURDQVNUX1JHQl9MSU1JVEVEOgotCQkJ aW50ZWxfc2R2by0+Y29sb3JfcmFuZ2VfYXV0byA9IGZhbHNlOwotCQkJLyogRklYTUU6IHRoaXMg Yml0IGlzIG9ubHkgdmFsaWQgd2hlbiB1c2luZyBUTURTCi0JCQkgKiBlbmNvZGluZyBhbmQgOCBi aXQgcGVyIGNvbG9yIG1vZGUuICovCi0JCQlpbnRlbF9zZHZvLT5jb2xvcl9yYW5nZSA9IEhETUlf Q09MT1JfUkFOR0VfMTZfMjM1OwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gLUVJ TlZBTDsKLQkJfQotCi0JCWlmIChvbGRfYXV0byA9PSBpbnRlbF9zZHZvLT5jb2xvcl9yYW5nZV9h dXRvICYmCi0JCSAgICBvbGRfcmFuZ2UgPT0gaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2UpCi0JCQly ZXR1cm4gMDsKLQotCQlnb3RvIGRvbmU7Ci0JfQotCi0JaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rv ci0+ZGV2LT5tb2RlX2NvbmZpZy5hc3BlY3RfcmF0aW9fcHJvcGVydHkpIHsKLQkJY29ubmVjdG9y LT5zdGF0ZS0+cGljdHVyZV9hc3BlY3RfcmF0aW8gPSB2YWw7Ci0JCWdvdG8gZG9uZTsKLQl9Ci0K LSNkZWZpbmUgQ0hFQ0tfUFJPUEVSVFkobmFtZSwgTkFNRSkgXAotCWlmIChpbnRlbF9zZHZvX2Nv bm5lY3Rvci0+bmFtZSA9PSBwcm9wZXJ0eSkgeyBcCi0JCWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rv ci0+Y3VyXyMjbmFtZSA9PSB0ZW1wX3ZhbHVlKSByZXR1cm4gMDsgXAotCQlpZiAoaW50ZWxfc2R2 b19jb25uZWN0b3ItPm1heF8jI25hbWUgPCB0ZW1wX3ZhbHVlKSByZXR1cm4gLUVJTlZBTDsgXAot CQljbWQgPSBTRFZPX0NNRF9TRVRfIyNOQU1FOyBcCi0JCWludGVsX3Nkdm9fY29ubmVjdG9yLT5j dXJfIyNuYW1lID0gdGVtcF92YWx1ZTsgXAotCQlnb3RvIHNldF92YWx1ZTsgXAotCX0KKwljb25z dCBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUgKnNkdm9fc3RhdGUgPSB0b19pbnRl bF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZSgodm9pZCAqKXN0YXRlKTsKIAogCWlmIChwcm9wZXJ0eSA9 PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dHZfZm9ybWF0KSB7Ci0JCWlmICh2YWwgPj0gVFZfRk9S TUFUX05VTSkKLQkJCXJldHVybiAtRUlOVkFMOwotCi0JCWlmIChpbnRlbF9zZHZvLT50dl9mb3Jt YXRfaW5kZXggPT0KLQkJICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9mb3JtYXRfc3VwcG9y dGVkW3ZhbF0pCi0JCQlyZXR1cm4gMDsKLQotCQlpbnRlbF9zZHZvLT50dl9mb3JtYXRfaW5kZXgg PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dHZfZm9ybWF0X3N1cHBvcnRlZFt2YWxdOwotCQlnb3Rv IGRvbmU7Ci0JfSBlbHNlIGlmIChJU19UVl9PUl9MVkRTKGludGVsX3Nkdm9fY29ubmVjdG9yKSkg ewotCQl0ZW1wX3ZhbHVlID0gdmFsOwotCQlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmxlZnQg PT0gcHJvcGVydHkpIHsKLQkJCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVlKCZjb25uZWN0 b3ItPmJhc2UsCi0JCQkJCQkJIGludGVsX3Nkdm9fY29ubmVjdG9yLT5yaWdodCwgdmFsKTsKLQkJ CWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdF9tYXJnaW4gPT0gdGVtcF92YWx1ZSkKLQkJ CQlyZXR1cm4gMDsKKwkJaW50IGk7CiAKLQkJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0X21h cmdpbiA9IHRlbXBfdmFsdWU7Ci0JCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+cmlnaHRfbWFyZ2lu ID0gdGVtcF92YWx1ZTsKLQkJCXRlbXBfdmFsdWUgPSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bWF4 X2hzY2FuIC0KLQkJCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdF9tYXJnaW47Ci0JCQljbWQg PSBTRFZPX0NNRF9TRVRfT1ZFUlNDQU5fSDsKLQkJCWdvdG8gc2V0X3ZhbHVlOwotCQl9IGVsc2Ug aWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5yaWdodCA9PSBwcm9wZXJ0eSkgewotCQkJZHJtX29i amVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKLQkJCQkJCQkgaW50ZWxf c2R2b19jb25uZWN0b3ItPmxlZnQsIHZhbCk7Ci0JCQlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3It PnJpZ2h0X21hcmdpbiA9PSB0ZW1wX3ZhbHVlKQotCQkJCXJldHVybiAwOworCQlmb3IgKGkgPSAw OyBpIDwgaW50ZWxfc2R2b19jb25uZWN0b3ItPmZvcm1hdF9zdXBwb3J0ZWRfbnVtOyBpKyspCisJ CQlpZiAoc3RhdGUtPnR2Lm1vZGUgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnR2X2Zvcm1hdF9z dXBwb3J0ZWRbaV0pIHsKKwkJCQkqdmFsID0gaTsKIAotCQkJaW50ZWxfc2R2b19jb25uZWN0b3It PmxlZnRfbWFyZ2luID0gdGVtcF92YWx1ZTsKLQkJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5yaWdo dF9tYXJnaW4gPSB0ZW1wX3ZhbHVlOwotCQkJdGVtcF92YWx1ZSA9IGludGVsX3Nkdm9fY29ubmVj dG9yLT5tYXhfaHNjYW4gLQotCQkJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0X21hcmdpbjsK LQkJCWNtZCA9IFNEVk9fQ01EX1NFVF9PVkVSU0NBTl9IOwotCQkJZ290byBzZXRfdmFsdWU7Ci0J CX0gZWxzZSBpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPnRvcCA9PSBwcm9wZXJ0eSkgewotCQkJ ZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKLQkJCQkJCQkg aW50ZWxfc2R2b19jb25uZWN0b3ItPmJvdHRvbSwgdmFsKTsKLQkJCWlmIChpbnRlbF9zZHZvX2Nv bm5lY3Rvci0+dG9wX21hcmdpbiA9PSB0ZW1wX3ZhbHVlKQogCQkJCXJldHVybiAwOworCQkJfQog Ci0JCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wX21hcmdpbiA9IHRlbXBfdmFsdWU7Ci0JCQlp bnRlbF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tX21hcmdpbiA9IHRlbXBfdmFsdWU7Ci0JCQl0ZW1w X3ZhbHVlID0gaW50ZWxfc2R2b19jb25uZWN0b3ItPm1heF92c2NhbiAtCi0JCQkJaW50ZWxfc2R2 b19jb25uZWN0b3ItPnRvcF9tYXJnaW47Ci0JCQljbWQgPSBTRFZPX0NNRF9TRVRfT1ZFUlNDQU5f VjsKLQkJCWdvdG8gc2V0X3ZhbHVlOwotCQl9IGVsc2UgaWYgKGludGVsX3Nkdm9fY29ubmVjdG9y LT5ib3R0b20gPT0gcHJvcGVydHkpIHsKLQkJCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVl KCZjb25uZWN0b3ItPmJhc2UsCi0JCQkJCQkJIGludGVsX3Nkdm9fY29ubmVjdG9yLT50b3AsIHZh bCk7Ci0JCQlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmJvdHRvbV9tYXJnaW4gPT0gdGVtcF92 YWx1ZSkKLQkJCQlyZXR1cm4gMDsKKwkJV0FSTl9PTigxKTsKKwkJKnZhbCA9IDA7CisJfSBlbHNl IGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wIHx8CisJCSAgIHByb3Bl cnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5ib3R0b20pCisJCSp2YWwgPSBpbnRlbF9zZHZv X2Nvbm5lY3Rvci0+bWF4X3ZzY2FuIC0gc2R2b19zdGF0ZS0+dHYub3ZlcnNjYW5fdjsKKwllbHNl IGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVmdCB8fAorCQkgcHJvcGVy dHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnJpZ2h0KQorCQkqdmFsID0gaW50ZWxfc2R2b19j b25uZWN0b3ItPm1heF9oc2NhbiAtIHNkdm9fc3RhdGUtPnR2Lm92ZXJzY2FuX2g7CisJZWxzZSBp ZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmhwb3MpCisJCSp2YWwgPSBzZHZv X3N0YXRlLT50di5ocG9zOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVj dG9yLT52cG9zKQorCQkqdmFsID0gc2R2b19zdGF0ZS0+dHYudnBvczsKKwllbHNlIGlmIChwcm9w ZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+c2F0dXJhdGlvbikKKwkJKnZhbCA9IHN0YXRl LT50di5zYXR1cmF0aW9uOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVj dG9yLT5jb250cmFzdCkKKwkJKnZhbCA9IHN0YXRlLT50di5jb250cmFzdDsKKwllbHNlIGlmIChw cm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+aHVlKQorCQkqdmFsID0gc3RhdGUtPnR2 Lmh1ZTsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+YnJpZ2h0 bmVzcykKKwkJKnZhbCA9IHN0YXRlLT50di5icmlnaHRuZXNzOworCWVsc2UgaWYgKHByb3BlcnR5 ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5zaGFycG5lc3MpCisJCSp2YWwgPSBzZHZvX3N0YXRl LT50di5zaGFycG5lc3M7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0 b3ItPmZsaWNrZXJfZmlsdGVyKQorCQkqdmFsID0gc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9maWx0 ZXI7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmZsaWNrZXJf ZmlsdGVyXzJkKQorCQkqdmFsID0gc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9maWx0ZXJfMmQ7CisJ ZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPmZsaWNrZXJfZmlsdGVy X2FkYXB0aXZlKQorCQkqdmFsID0gc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9maWx0ZXJfYWRhcHRp dmU7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnR2X2Nocm9t YV9maWx0ZXIpCisJCSp2YWwgPSBzZHZvX3N0YXRlLT50di5jaHJvbWFfZmlsdGVyOworCWVsc2Ug aWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT50dl9sdW1hX2ZpbHRlcikKKwkJ KnZhbCA9IHNkdm9fc3RhdGUtPnR2Lmx1bWFfZmlsdGVyOworCWVsc2UgaWYgKHByb3BlcnR5ID09 IGludGVsX3Nkdm9fY29ubmVjdG9yLT5kb3RfY3Jhd2wpCisJCSp2YWwgPSBzZHZvX3N0YXRlLT50 di5kb3RfY3Jhd2w7CisJZWxzZQorCQlyZXR1cm4gaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRv bWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3IsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKIAotCQkJ aW50ZWxfc2R2b19jb25uZWN0b3ItPnRvcF9tYXJnaW4gPSB0ZW1wX3ZhbHVlOwotCQkJaW50ZWxf c2R2b19jb25uZWN0b3ItPmJvdHRvbV9tYXJnaW4gPSB0ZW1wX3ZhbHVlOwotCQkJdGVtcF92YWx1 ZSA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT5tYXhfdnNjYW4gLQotCQkJCWludGVsX3Nkdm9fY29u bmVjdG9yLT50b3BfbWFyZ2luOwotCQkJY21kID0gU0RWT19DTURfU0VUX09WRVJTQ0FOX1Y7Ci0J CQlnb3RvIHNldF92YWx1ZTsKLQkJfQotCQlDSEVDS19QUk9QRVJUWShocG9zLCBIUE9TKQotCQlD SEVDS19QUk9QRVJUWSh2cG9zLCBWUE9TKQotCQlDSEVDS19QUk9QRVJUWShzYXR1cmF0aW9uLCBT QVRVUkFUSU9OKQotCQlDSEVDS19QUk9QRVJUWShjb250cmFzdCwgQ09OVFJBU1QpCi0JCUNIRUNL X1BST1BFUlRZKGh1ZSwgSFVFKQotCQlDSEVDS19QUk9QRVJUWShicmlnaHRuZXNzLCBCUklHSFRO RVNTKQotCQlDSEVDS19QUk9QRVJUWShzaGFycG5lc3MsIFNIQVJQTkVTUykKLQkJQ0hFQ0tfUFJP UEVSVFkoZmxpY2tlcl9maWx0ZXIsIEZMSUNLRVJfRklMVEVSKQotCQlDSEVDS19QUk9QRVJUWShm bGlja2VyX2ZpbHRlcl8yZCwgRkxJQ0tFUl9GSUxURVJfMkQpCi0JCUNIRUNLX1BST1BFUlRZKGZs aWNrZXJfZmlsdGVyX2FkYXB0aXZlLCBGTElDS0VSX0ZJTFRFUl9BREFQVElWRSkKLQkJQ0hFQ0tf UFJPUEVSVFkodHZfY2hyb21hX2ZpbHRlciwgVFZfQ0hST01BX0ZJTFRFUikKLQkJQ0hFQ0tfUFJP UEVSVFkodHZfbHVtYV9maWx0ZXIsIFRWX0xVTUFfRklMVEVSKQotCQlDSEVDS19QUk9QRVJUWShk b3RfY3Jhd2wsIERPVF9DUkFXTCkKLQl9CisJcmV0dXJuIDA7Cit9CiAKLQlyZXR1cm4gLUVJTlZB TDsgLyogdW5rbm93biBwcm9wZXJ0eSAqLworc3RhdGljIGludAoraW50ZWxfc2R2b19jb25uZWN0 b3JfYXRvbWljX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAor CQkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAorCQkJCQkgc3RydWN0IGRy bV9wcm9wZXJ0eSAqcHJvcGVydHksCisJCQkJCSB1aW50NjRfdCB2YWwpCit7CisJc3RydWN0IGlu dGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciA9IHRvX2ludGVsX3Nkdm9f Y29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRl ICpzZHZvX3N0YXRlID0gdG9faW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUoc3RhdGUpOwogCi1z ZXRfdmFsdWU6Ci0JaWYgKCFpbnRlbF9zZHZvX3NldF92YWx1ZShpbnRlbF9zZHZvLCBjbWQsICZ0 ZW1wX3ZhbHVlLCAyKSkKLQkJcmV0dXJuIC1FSU87CisJaWYgKHByb3BlcnR5ID09IGludGVsX3Nk dm9fY29ubmVjdG9yLT50dl9mb3JtYXQpIHsKKwkJc3RhdGUtPnR2Lm1vZGUgPSBpbnRlbF9zZHZv X2Nvbm5lY3Rvci0+dHZfZm9ybWF0X3N1cHBvcnRlZFt2YWxdOwogCisJCWlmIChzdGF0ZS0+Y3J0 YykgeworCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJCQlkcm1fYXRv bWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZS0+c3RhdGUsIHN0YXRlLT5jcnRjKTsKIAotZG9u ZToKLQlpZiAoaW50ZWxfc2R2by0+YmFzZS5iYXNlLmNydGMpCi0JCWludGVsX2NydGNfcmVzdG9y ZV9tb2RlKGludGVsX3Nkdm8tPmJhc2UuYmFzZS5jcnRjKTsKKwkJCWNydGNfc3RhdGUtPmNvbm5l Y3RvcnNfY2hhbmdlZCA9IHRydWU7CisJCX0KKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGludGVs X3Nkdm9fY29ubmVjdG9yLT50b3AgfHwKKwkJICAgcHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25u ZWN0b3ItPmJvdHRvbSkKKwkJLyogQ2Fubm90IHNldCB0aGVzZSBpbmRlcGVuZGVudCBmcm9tIGVh Y2ggb3RoZXIgKi8KKwkJc2R2b19zdGF0ZS0+dHYub3ZlcnNjYW5fdiA9IGludGVsX3Nkdm9fY29u bmVjdG9yLT5tYXhfdnNjYW4gLSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2 b19jb25uZWN0b3ItPmxlZnQgfHwKKwkJIHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9y LT5yaWdodCkKKwkJLyogQ2Fubm90IHNldCB0aGVzZSBpbmRlcGVuZGVudCBmcm9tIGVhY2ggb3Ro ZXIgKi8KKwkJc2R2b19zdGF0ZS0+dHYub3ZlcnNjYW5faCA9IGludGVsX3Nkdm9fY29ubmVjdG9y LT5tYXhfaHNjYW4gLSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25u ZWN0b3ItPmhwb3MpCisJCXNkdm9fc3RhdGUtPnR2Lmhwb3MgPSB2YWw7CisJZWxzZSBpZiAocHJv cGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnZwb3MpCisJCXNkdm9fc3RhdGUtPnR2LnZw b3MgPSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0b3ItPnNh dHVyYXRpb24pCisJCXN0YXRlLT50di5zYXR1cmF0aW9uID0gdmFsOworCWVsc2UgaWYgKHByb3Bl cnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5jb250cmFzdCkKKwkJc3RhdGUtPnR2LmNvbnRy YXN0ID0gdmFsOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5o dWUpCisJCXN0YXRlLT50di5odWUgPSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxf c2R2b19jb25uZWN0b3ItPmJyaWdodG5lc3MpCisJCXN0YXRlLT50di5icmlnaHRuZXNzID0gdmFs OworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5zaGFycG5lc3Mp CisJCXNkdm9fc3RhdGUtPnR2LnNoYXJwbmVzcyA9IHZhbDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9 PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ZmxpY2tlcl9maWx0ZXIpCisJCXNkdm9fc3RhdGUtPnR2 LmZsaWNrZXJfZmlsdGVyID0gdmFsOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9f Y29ubmVjdG9yLT5mbGlja2VyX2ZpbHRlcl8yZCkKKwkJc2R2b19zdGF0ZS0+dHYuZmxpY2tlcl9m aWx0ZXJfMmQgPSB2YWw7CisJZWxzZSBpZiAocHJvcGVydHkgPT0gaW50ZWxfc2R2b19jb25uZWN0 b3ItPmZsaWNrZXJfZmlsdGVyX2FkYXB0aXZlKQorCQlzZHZvX3N0YXRlLT50di5mbGlja2VyX2Zp bHRlcl9hZGFwdGl2ZSA9IHZhbDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nv bm5lY3Rvci0+dHZfY2hyb21hX2ZpbHRlcikKKwkJc2R2b19zdGF0ZS0+dHYuY2hyb21hX2ZpbHRl ciA9IHZhbDsKKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dHZf bHVtYV9maWx0ZXIpCisJCXNkdm9fc3RhdGUtPnR2Lmx1bWFfZmlsdGVyID0gdmFsOworCWVsc2Ug aWYgKHByb3BlcnR5ID09IGludGVsX3Nkdm9fY29ubmVjdG9yLT5kb3RfY3Jhd2wpCisJCXNkdm9f c3RhdGUtPnR2LmRvdF9jcmF3bCA9IHZhbDsKKwllbHNlCisJCXJldHVybiBpbnRlbF9kaWdpdGFs X2Nvbm5lY3Rvcl9hdG9taWNfc2V0X3Byb3BlcnR5KGNvbm5lY3Rvciwgc3RhdGUsIHByb3BlcnR5 LCB2YWwpOwogCiAJcmV0dXJuIDA7Ci0jdW5kZWYgQ0hFQ0tfUFJPUEVSVFkKIH0KIAogc3RhdGlj IGludApAQCAtMjE3NiwyMiArMjE3OCw2MSBAQCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl91bnJlZ2lz dGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJaW50ZWxfY29ubmVjdG9yX3Vu cmVnaXN0ZXIoY29ubmVjdG9yKTsKIH0KIAorc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICoKK2ludGVsX3Nkdm9fY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0 ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IGttZW1kdXAoY29ubmVjdG9yLT5zdGF0ZSwgc2l6ZW9mKCpz dGF0ZSksIEdGUF9LRVJORUwpOworCWlmICghc3RhdGUpCisJCXJldHVybiBOVUxMOworCisJX19k cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKGNvbm5lY3RvciwgJnN0 YXRlLT5iYXNlLmJhc2UpOworCXJldHVybiAmc3RhdGUtPmJhc2UuYmFzZTsKK30KKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGludGVsX3Nkdm9fY29ubmVjdG9yX2Z1 bmNzID0gewogCS5kcG1zID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCiAJLmRl dGVjdCA9IGludGVsX3Nkdm9fZGV0ZWN0LAogCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9i ZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAotCS5zZXRfcHJvcGVydHkgPSBpbnRlbF9zZHZvX3Nl dF9wcm9wZXJ0eSwKLQkuYXRvbWljX2dldF9wcm9wZXJ0eSA9IGludGVsX2Nvbm5lY3Rvcl9hdG9t aWNfZ2V0X3Byb3BlcnR5LAorCS5zZXRfcHJvcGVydHkgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3Jfc2V0X3Byb3BlcnR5LAorCS5hdG9taWNfZ2V0X3Byb3BlcnR5ID0gaW50ZWxfc2R2b19j b25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eSwKKwkuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGlu dGVsX3Nkdm9fY29ubmVjdG9yX2F0b21pY19zZXRfcHJvcGVydHksCiAJLmxhdGVfcmVnaXN0ZXIg PSBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9yZWdpc3RlciwKIAkuZWFybHlfdW5yZWdpc3RlciA9IGlu dGVsX3Nkdm9fY29ubmVjdG9yX3VucmVnaXN0ZXIsCiAJLmRlc3Ryb3kgPSBpbnRlbF9zZHZvX2Rl c3Ryb3ksCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2Rlc3Ryb3lfc3RhdGUsCi0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gaW50ZWxfc2R2b19jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAogfTsKIAorc3RhdGlj IGludCBpbnRlbF9zZHZvX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiwK KwkJCQkgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGUpCit7CisJ c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gbmV3X2Nvbm5fc3RhdGUtPnN0YXRlOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSA9CisJCWRybV9hdG9t aWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm4pOworCXN0cnVjdCBpbnRlbF9z ZHZvX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX3N0YXRlID0KKwkJdG9faW50ZWxfc2R2b19jb25uZWN0 b3Jfc3RhdGUob2xkX2Nvbm5fc3RhdGUpOworCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9z dGF0ZSAqbmV3X3N0YXRlID0KKwkJdG9faW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUobmV3X2Nv bm5fc3RhdGUpOworCisJaWYgKG5ld19jb25uX3N0YXRlLT5jcnRjICYmCisJICAgIChtZW1jbXAo Jm9sZF9zdGF0ZS0+dHYsICZuZXdfc3RhdGUtPnR2LCBzaXplb2Yob2xkX3N0YXRlLT50dikpIHx8 CisJICAgICBtZW1jbXAoJm9sZF9jb25uX3N0YXRlLT50diwgJm5ld19jb25uX3N0YXRlLT50diwg c2l6ZW9mKG9sZF9jb25uX3N0YXRlLT50dikpKSkgeworCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGUgPQorCQkJZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUobmV3X2Nvbm5f c3RhdGUtPnN0YXRlLAorCQkJCQkJICAgICAgbmV3X2Nvbm5fc3RhdGUtPmNydGMpOworCisJCWNy dGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7CisJfQorCisJcmV0dXJuIGludGVs X2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19jaGVjayhjb25uLCBuZXdfY29ubl9zdGF0ZSk7Cit9 CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgaW50ZWxf c2R2b19jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewogCS5nZXRfbW9kZXMgPSBpbnRlbF9zZHZv X2dldF9tb2RlcywKIAkubW9kZV92YWxpZCA9IGludGVsX3Nkdm9fbW9kZV92YWxpZCwKKwkuYXRv bWljX2NoZWNrID0gaW50ZWxfc2R2b19hdG9taWNfY2hlY2ssCiB9OwogCiBzdGF0aWMgdm9pZCBp bnRlbF9zZHZvX2VuY19kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKQEAgLTIz ODMsNyArMjQyNCw2IEBAIGludGVsX3Nkdm9fYWRkX2hkbWlfcHJvcGVydGllcyhzdHJ1Y3QgaW50 ZWxfc2R2byAqaW50ZWxfc2R2bywKIAlpbnRlbF9hdHRhY2hfZm9yY2VfYXVkaW9fcHJvcGVydHko JmNvbm5lY3Rvci0+YmFzZS5iYXNlKTsKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ICYm IElTX01PQklMRShkZXZfcHJpdikpIHsKIAkJaW50ZWxfYXR0YWNoX2Jyb2FkY2FzdF9yZ2JfcHJv cGVydHkoJmNvbm5lY3Rvci0+YmFzZS5iYXNlKTsKLQkJaW50ZWxfc2R2by0+Y29sb3JfcmFuZ2Vf YXV0byA9IHRydWU7CiAJfQogCWludGVsX2F0dGFjaF9hc3BlY3RfcmF0aW9fcHJvcGVydHkoJmNv bm5lY3Rvci0+YmFzZS5iYXNlKTsKIAljb25uZWN0b3ItPmJhc2UuYmFzZS5zdGF0ZS0+cGljdHVy ZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUX05PTkU7CkBAIC0yMzkyLDE2ICsy NDMyLDIxIEBAIGludGVsX3Nkdm9fYWRkX2hkbWlfcHJvcGVydGllcyhzdHJ1Y3QgaW50ZWxfc2R2 byAqaW50ZWxfc2R2bywKIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgKmludGVs X3Nkdm9fY29ubmVjdG9yX2FsbG9jKHZvaWQpCiB7CiAJc3RydWN0IGludGVsX3Nkdm9fY29ubmVj dG9yICpzZHZvX2Nvbm5lY3RvcjsKKwlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7CiAKIAlzZHZvX2Nvbm5lY3RvciA9IGt6YWxsb2Moc2l6ZW9mKCpzZHZvX2Nv bm5lY3RvciksIEdGUF9LRVJORUwpOwogCWlmICghc2R2b19jb25uZWN0b3IpCiAJCXJldHVybiBO VUxMOwogCi0JaWYgKGludGVsX2Nvbm5lY3Rvcl9pbml0KCZzZHZvX2Nvbm5lY3Rvci0+YmFzZSkg PCAwKSB7CisJY29ubl9zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpjb25uX3N0YXRlKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFjb25uX3N0YXRlKSB7CiAJCWtmcmVlKHNkdm9fY29ubmVjdG9yKTsKIAkJ cmV0dXJuIE5VTEw7CiAJfQogCisJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQo JnNkdm9fY29ubmVjdG9yLT5iYXNlLmJhc2UsCisJCQkJCSAgICAmY29ubl9zdGF0ZS0+YmFzZS5i YXNlKTsKKwogCXJldHVybiBzZHZvX2Nvbm5lY3RvcjsKIH0KIApAQCAtMjY5MywzMSArMjczOCwz MCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX3R2X2NyZWF0ZV9wcm9wZXJ0eShzdHJ1Y3QgaW50 ZWxfc2R2byAqaW50ZWxfc2R2bywKIAkJCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dHZfZm9ybWF0 LCBpLAogCQkJCWksIHR2X2Zvcm1hdF9uYW1lc1tpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dHZfZm9y bWF0X3N1cHBvcnRlZFtpXV0pOwogCi0JaW50ZWxfc2R2by0+dHZfZm9ybWF0X2luZGV4ID0gaW50 ZWxfc2R2b19jb25uZWN0b3ItPnR2X2Zvcm1hdF9zdXBwb3J0ZWRbMF07Ci0JZHJtX29iamVjdF9h dHRhY2hfcHJvcGVydHkoJmludGVsX3Nkdm9fY29ubmVjdG9yLT5iYXNlLmJhc2UuYmFzZSwKLQkJ CQkgICAgICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dHZfZm9ybWF0LCAwKTsKKwlpbnRlbF9zZHZv X2Nvbm5lY3Rvci0+YmFzZS5iYXNlLnN0YXRlLT50di5tb2RlID0gaW50ZWxfc2R2b19jb25uZWN0 b3ItPnR2X2Zvcm1hdF9zdXBwb3J0ZWRbMF07CisJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHko JmludGVsX3Nkdm9fY29ubmVjdG9yLT5iYXNlLmJhc2UuYmFzZSwgMCwgMCk7CiAJcmV0dXJuIHRy dWU7CiAKIH0KIAotI2RlZmluZSBFTkhBTkNFTUVOVChuYW1lLCBOQU1FKSBkbyB7IFwKKyNkZWZp bmUgX0VOSEFOQ0VNRU5UKHN0YXRlX2Fzc2lnbm1lbnQsIG5hbWUsIE5BTUUpIGRvIHsgXAogCWlm IChlbmhhbmNlbWVudHMubmFtZSkgeyBcCiAJCWlmICghaW50ZWxfc2R2b19nZXRfdmFsdWUoaW50 ZWxfc2R2bywgU0RWT19DTURfR0VUX01BWF8jI05BTUUsICZkYXRhX3ZhbHVlLCA0KSB8fCBcCiAJ CSAgICAhaW50ZWxfc2R2b19nZXRfdmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUXyMjTkFN RSwgJnJlc3BvbnNlLCAyKSkgXAogCQkJcmV0dXJuIGZhbHNlOyBcCi0JCWludGVsX3Nkdm9fY29u bmVjdG9yLT5tYXhfIyNuYW1lID0gZGF0YV92YWx1ZVswXTsgXAotCQlpbnRlbF9zZHZvX2Nvbm5l Y3Rvci0+Y3VyXyMjbmFtZSA9IHJlc3BvbnNlOyBcCiAJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5u YW1lID0gXAogCQkJZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYsIDAsICNuYW1lLCAwLCBk YXRhX3ZhbHVlWzBdKTsgXAogCQlpZiAoIWludGVsX3Nkdm9fY29ubmVjdG9yLT5uYW1lKSByZXR1 cm4gZmFsc2U7IFwKKwkJc3RhdGVfYXNzaWdubWVudCA9IHJlc3BvbnNlOyBcCiAJCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsIFwKLQkJCQkJICAgICAgaW50ZWxf c2R2b19jb25uZWN0b3ItPm5hbWUsIFwKLQkJCQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3It PmN1cl8jI25hbWUpOyBcCisJCQkJCSAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5uYW1lLCAwKTsg XAogCQlEUk1fREVCVUdfS01TKCNuYW1lICI6IG1heCAlZCwgZGVmYXVsdCAlZCwgY3VycmVudCAl ZFxuIiwgXAogCQkJICAgICAgZGF0YV92YWx1ZVswXSwgZGF0YV92YWx1ZVsxXSwgcmVzcG9uc2Up OyBcCiAJfSBcCiB9IHdoaWxlICgwKQogCisjZGVmaW5lIEVOSEFOQ0VNRU5UKHN0YXRlLCBuYW1l LCBOQU1FKSBfRU5IQU5DRU1FTlQoKHN0YXRlKS0+bmFtZSwgbmFtZSwgTkFNRSkKKwogc3RhdGlj IGJvb2wKIGludGVsX3Nkdm9fY3JlYXRlX2VuaGFuY2VfcHJvcGVydHlfdHYoc3RydWN0IGludGVs X3Nkdm8gKmludGVsX3Nkdm8sCiAJCQkJICAgICAgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9y ICppbnRlbF9zZHZvX2Nvbm5lY3RvciwKQEAgLTI3MjUsNiArMjc2OSw5IEBAIGludGVsX3Nkdm9f Y3JlYXRlX2VuaGFuY2VfcHJvcGVydHlfdHYoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8s CiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX3Nkdm8tPmJhc2UuYmFzZS5kZXY7 CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9zZHZvX2Nvbm5lY3Rv ci0+YmFzZS5iYXNlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlID0g Y29ubmVjdG9yLT5zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUgKnNk dm9fc3RhdGUgPQorCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsK IAl1aW50MTZfdCByZXNwb25zZSwgZGF0YV92YWx1ZVsyXTsKIAogCS8qIHdoZW4gaG9yaXpvbnRh bCBvdmVyc2NhbiBpcyBzdXBwb3J0ZWQsIEFkZCB0aGUgbGVmdC9yaWdodCAgcHJvcGVydHkgKi8K QEAgLTI3MzksMTcgKzI3ODYsMTYgQEAgaW50ZWxfc2R2b19jcmVhdGVfZW5oYW5jZV9wcm9wZXJ0 eV90dihzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywKIAkJCQkJICAmcmVzcG9uc2UsIDIp KQogCQkJcmV0dXJuIGZhbHNlOwogCisJCXNkdm9fc3RhdGUtPnR2Lm92ZXJzY2FuX2ggPSByZXNw b25zZTsKKwogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bWF4X2hzY2FuID0gZGF0YV92YWx1ZVsw XTsKLQkJaW50ZWxfc2R2b19jb25uZWN0b3ItPmxlZnRfbWFyZ2luID0gZGF0YV92YWx1ZVswXSAt IHJlc3BvbnNlOwotCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+cmlnaHRfbWFyZ2luID0gaW50ZWxf c2R2b19jb25uZWN0b3ItPmxlZnRfbWFyZ2luOwogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+bGVm dCA9CiAJCQlkcm1fcHJvcGVydHlfY3JlYXRlX3JhbmdlKGRldiwgMCwgImxlZnRfbWFyZ2luIiwg MCwgZGF0YV92YWx1ZVswXSk7CiAJCWlmICghaW50ZWxfc2R2b19jb25uZWN0b3ItPmxlZnQpCiAJ CQlyZXR1cm4gZmFsc2U7CiAKIAkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rv ci0+YmFzZSwKLQkJCQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3ItPmxlZnQsCi0JCQkJCSAg ICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5sZWZ0X21hcmdpbik7CisJCQkJCSAgIGludGVsX3Nk dm9fY29ubmVjdG9yLT5sZWZ0LCAwKTsKIAogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+cmlnaHQg PQogCQkJZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYsIDAsICJyaWdodF9tYXJnaW4iLCAw LCBkYXRhX3ZhbHVlWzBdKTsKQEAgLTI3NTcsOCArMjgwMyw3IEBAIGludGVsX3Nkdm9fY3JlYXRl X2VuaGFuY2VfcHJvcGVydHlfdHYoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCiAJCQly ZXR1cm4gZmFsc2U7CiAKIAkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+ YmFzZSwKLQkJCQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3ItPnJpZ2h0LAotCQkJCQkgICAg ICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+cmlnaHRfbWFyZ2luKTsKKwkJCQkJICAgICAgaW50ZWxf c2R2b19jb25uZWN0b3ItPnJpZ2h0LCAwKTsKIAkJRFJNX0RFQlVHX0tNUygiaF9vdmVyc2Nhbjog bWF4ICVkLCAiCiAJCQkgICAgICAiZGVmYXVsdCAlZCwgY3VycmVudCAlZFxuIiwKIAkJCSAgICAg IGRhdGFfdmFsdWVbMF0sIGRhdGFfdmFsdWVbMV0sIHJlc3BvbnNlKTsKQEAgLTI3NzUsOSArMjgy MCw5IEBAIGludGVsX3Nkdm9fY3JlYXRlX2VuaGFuY2VfcHJvcGVydHlfdHYoc3RydWN0IGludGVs X3Nkdm8gKmludGVsX3Nkdm8sCiAJCQkJCSAgJnJlc3BvbnNlLCAyKSkKIAkJCXJldHVybiBmYWxz ZTsKIAorCQlzZHZvX3N0YXRlLT50di5vdmVyc2Nhbl92ID0gcmVzcG9uc2U7CisKIAkJaW50ZWxf c2R2b19jb25uZWN0b3ItPm1heF92c2NhbiA9IGRhdGFfdmFsdWVbMF07Ci0JCWludGVsX3Nkdm9f Y29ubmVjdG9yLT50b3BfbWFyZ2luID0gZGF0YV92YWx1ZVswXSAtIHJlc3BvbnNlOwotCQlpbnRl bF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tX21hcmdpbiA9IGludGVsX3Nkdm9fY29ubmVjdG9yLT50 b3BfbWFyZ2luOwogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+dG9wID0KIAkJCWRybV9wcm9wZXJ0 eV9jcmVhdGVfcmFuZ2UoZGV2LCAwLAogCQkJCQkgICAgInRvcF9tYXJnaW4iLCAwLCBkYXRhX3Zh bHVlWzBdKTsKQEAgLTI3ODUsOCArMjgzMCw3IEBAIGludGVsX3Nkdm9fY3JlYXRlX2VuaGFuY2Vf cHJvcGVydHlfdHYoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCiAJCQlyZXR1cm4gZmFs c2U7CiAKIAkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKLQkJ CQkJICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3ItPnRvcCwKLQkJCQkJICAgICAgaW50ZWxfc2R2 b19jb25uZWN0b3ItPnRvcF9tYXJnaW4pOworCQkJCQkgICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ dG9wLCAwKTsKIAogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+Ym90dG9tID0KIAkJCWRybV9wcm9w ZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2LCAwLApAQCAtMjc5NSw0MCArMjgzOSwzNyBAQCBpbnRlbF9z ZHZvX2NyZWF0ZV9lbmhhbmNlX3Byb3BlcnR5X3R2KHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9z ZHZvLAogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZj b25uZWN0b3ItPmJhc2UsCi0JCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5ib3R0b20s Ci0JCQkJCSAgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5ib3R0b21fbWFyZ2luKTsKKwkJCQkJ ICAgICAgaW50ZWxfc2R2b19jb25uZWN0b3ItPmJvdHRvbSwgMCk7CiAJCURSTV9ERUJVR19LTVMo InZfb3ZlcnNjYW46IG1heCAlZCwgIgogCQkJICAgICAgImRlZmF1bHQgJWQsIGN1cnJlbnQgJWRc biIsCiAJCQkgICAgICBkYXRhX3ZhbHVlWzBdLCBkYXRhX3ZhbHVlWzFdLCByZXNwb25zZSk7CiAJ fQogCi0JRU5IQU5DRU1FTlQoaHBvcywgSFBPUyk7Ci0JRU5IQU5DRU1FTlQodnBvcywgVlBPUyk7 Ci0JRU5IQU5DRU1FTlQoc2F0dXJhdGlvbiwgU0FUVVJBVElPTik7Ci0JRU5IQU5DRU1FTlQoY29u dHJhc3QsIENPTlRSQVNUKTsKLQlFTkhBTkNFTUVOVChodWUsIEhVRSk7Ci0JRU5IQU5DRU1FTlQo c2hhcnBuZXNzLCBTSEFSUE5FU1MpOwotCUVOSEFOQ0VNRU5UKGJyaWdodG5lc3MsIEJSSUdIVE5F U1MpOwotCUVOSEFOQ0VNRU5UKGZsaWNrZXJfZmlsdGVyLCBGTElDS0VSX0ZJTFRFUik7Ci0JRU5I QU5DRU1FTlQoZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmUsIEZMSUNLRVJfRklMVEVSX0FEQVBUSVZF KTsKLQlFTkhBTkNFTUVOVChmbGlja2VyX2ZpbHRlcl8yZCwgRkxJQ0tFUl9GSUxURVJfMkQpOwot CUVOSEFOQ0VNRU5UKHR2X2Nocm9tYV9maWx0ZXIsIFRWX0NIUk9NQV9GSUxURVIpOwotCUVOSEFO Q0VNRU5UKHR2X2x1bWFfZmlsdGVyLCBUVl9MVU1BX0ZJTFRFUik7CisJRU5IQU5DRU1FTlQoJnNk dm9fc3RhdGUtPnR2LCBocG9zLCBIUE9TKTsKKwlFTkhBTkNFTUVOVCgmc2R2b19zdGF0ZS0+dHYs IHZwb3MsIFZQT1MpOworCUVOSEFOQ0VNRU5UKCZjb25uX3N0YXRlLT50diwgc2F0dXJhdGlvbiwg U0FUVVJBVElPTik7CisJRU5IQU5DRU1FTlQoJmNvbm5fc3RhdGUtPnR2LCBjb250cmFzdCwgQ09O VFJBU1QpOworCUVOSEFOQ0VNRU5UKCZjb25uX3N0YXRlLT50diwgaHVlLCBIVUUpOworCUVOSEFO Q0VNRU5UKCZjb25uX3N0YXRlLT50diwgYnJpZ2h0bmVzcywgQlJJR0hUTkVTUyk7CisJRU5IQU5D RU1FTlQoJnNkdm9fc3RhdGUtPnR2LCBzaGFycG5lc3MsIFNIQVJQTkVTUyk7CisJRU5IQU5DRU1F TlQoJnNkdm9fc3RhdGUtPnR2LCBmbGlja2VyX2ZpbHRlciwgRkxJQ0tFUl9GSUxURVIpOworCUVO SEFOQ0VNRU5UKCZzZHZvX3N0YXRlLT50diwgZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmUsIEZMSUNL RVJfRklMVEVSX0FEQVBUSVZFKTsKKwlFTkhBTkNFTUVOVCgmc2R2b19zdGF0ZS0+dHYsIGZsaWNr ZXJfZmlsdGVyXzJkLCBGTElDS0VSX0ZJTFRFUl8yRCk7CisJX0VOSEFOQ0VNRU5UKHNkdm9fc3Rh dGUtPnR2LmNocm9tYV9maWx0ZXIsIHR2X2Nocm9tYV9maWx0ZXIsIFRWX0NIUk9NQV9GSUxURVIp OworCV9FTkhBTkNFTUVOVChzZHZvX3N0YXRlLT50di5sdW1hX2ZpbHRlciwgdHZfbHVtYV9maWx0 ZXIsIFRWX0xVTUFfRklMVEVSKTsKIAogCWlmIChlbmhhbmNlbWVudHMuZG90X2NyYXdsKSB7CiAJ CWlmICghaW50ZWxfc2R2b19nZXRfdmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUX0RPVF9D UkFXTCwgJnJlc3BvbnNlLCAyKSkKIAkJCXJldHVybiBmYWxzZTsKIAotCQlpbnRlbF9zZHZvX2Nv bm5lY3Rvci0+bWF4X2RvdF9jcmF3bCA9IDE7Ci0JCWludGVsX3Nkdm9fY29ubmVjdG9yLT5jdXJf ZG90X2NyYXdsID0gcmVzcG9uc2UgJiAweDE7CisJCXNkdm9fc3RhdGUtPnR2LmRvdF9jcmF3bCA9 IHJlc3BvbnNlICYgMHgxOwogCQlpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ZG90X2NyYXdsID0KIAkJ CWRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2LCAwLCAiZG90X2NyYXdsIiwgMCwgMSk7CiAJ CWlmICghaW50ZWxfc2R2b19jb25uZWN0b3ItPmRvdF9jcmF3bCkKIAkJCXJldHVybiBmYWxzZTsK IAogCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAotCQkJCQkg ICAgICBpbnRlbF9zZHZvX2Nvbm5lY3Rvci0+ZG90X2NyYXdsLAotCQkJCQkgICAgICBpbnRlbF9z ZHZvX2Nvbm5lY3Rvci0+Y3VyX2RvdF9jcmF3bCk7CisJCQkJCSAgIGludGVsX3Nkdm9fY29ubmVj dG9yLT5kb3RfY3Jhd2wsIDApOwogCQlEUk1fREVCVUdfS01TKCJkb3QgY3Jhd2w6IGN1cnJlbnQg JWRcbiIsIHJlc3BvbnNlKTsKIAl9CiAKQEAgLTI4NDQsMTEgKzI4ODUsMTIgQEAgaW50ZWxfc2R2 b19jcmVhdGVfZW5oYW5jZV9wcm9wZXJ0eV9sdmRzKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9z ZHZvLAogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfc2R2b19jb25u ZWN0b3ItPmJhc2UuYmFzZTsKIAl1aW50MTZfdCByZXNwb25zZSwgZGF0YV92YWx1ZVsyXTsKIAot CUVOSEFOQ0VNRU5UKGJyaWdodG5lc3MsIEJSSUdIVE5FU1MpOworCUVOSEFOQ0VNRU5UKCZjb25u ZWN0b3ItPnN0YXRlLT50diwgYnJpZ2h0bmVzcywgQlJJR0hUTkVTUyk7CiAKIAlyZXR1cm4gdHJ1 ZTsKIH0KICN1bmRlZiBFTkhBTkNFTUVOVAorI3VuZGVmIF9FTkhBTkNFTUVOVAogCiBzdGF0aWMg Ym9vbCBpbnRlbF9zZHZvX2NyZWF0ZV9lbmhhbmNlX3Byb3BlcnR5KHN0cnVjdCBpbnRlbF9zZHZv ICppbnRlbF9zZHZvLAogCQkJCQkgICAgICAgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICpp bnRlbF9zZHZvX2Nvbm5lY3RvcikKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK