From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v2 21/22] drm/i915: Rewrite fb rotation GTT handling Date: Thu, 15 Oct 2015 20:59:45 +0300 Message-ID: <1444931985-26045-1-git-send-email-ville.syrjala@linux.intel.com> References: <1444840154-7804-22-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id C80B76E06B for ; Thu, 15 Oct 2015 10:59:57 -0700 (PDT) In-Reply-To: <1444840154-7804-22-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClJl ZG8gdGhlIGZiIHJvdGF0aW9uIGhhbmRsaW5nIGluIG9yZGVyIHRvOgotIGVsaW1pbmF0ZSB0aGUg TlYxMiBzcGVjaWFsIGNhc2luZwotIGhhbmRsZSBmYi0+b2Zmc2V0c1tdIHByb3Blcmx5Ci0gbWFr ZSB0aGUgcm90YXRpb24gaGFuZGxpbmcgcmVhc2llciBmb3IgdGhlIHBsYW5lIGNvZGUKClRvIGFj aGlldmUgdGhlc2UgZ29hbHMgd2UgcmVkdWNlIGludGVsX3JvdGF0aW9uX2luZm8gdG8gb25seSBj b250YWluCihmb3IgZWFjaCBwbGFuZSkgdGhlIHJvdGF0ZWQgdmlldyB3aWR0aCxoZWlnaHQsc3Ry aWRlIGluIHRpbGUgdW5pdHMsCmFuZCB0aGUgcGFnZSBvZmZzZXQgaW50byB0aGUgb2JqZWN0IHdo ZXJlIHRoZSBwbGFuZSBzdGFydHMuIEVhY2ggcGxhbmUKaXMgaGFuZGxlZCBleGFjdGx5IHRoZSBz YW1lIHdheSwgbm8gc3BlY2lhbCBjYXNpbmcgZm9yIE5WMTIgb3Igb3RoZXIKZm9ybWF0cy4gV2Ug dGhlbiBzdG9yZSB0aGUgY29tcHV0ZWQgcm90YXRpb25faW5mbyB1bmRlcgppbnRlbF9mcmFtZWJ1 ZmZlciBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmVjb21wdXRlIGl0IGFnYWluLgoKVG8gaGFu ZGxlIGZiLT5vZmZzZXRzW10gd2UgdHJlYXQgdGhlbSBhcyBhIGxpbmVhciBvZmZzZXRzIGFuZCBj b252ZXJ0CnRoZW0gdG8geC95IG9mZnNldHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHJlbGV2YW50 IEdUVCBtYXBwaW5nIChlaXRoZXIKbm9ybWFsIG9yIHJvdGF0ZWQpLiBXZSBzdG9yZSB0aGUgeC95 IG9mZnNldHMgdW5kZXIgaW50ZWxfZnJhbWVidWZmZXIsCmFuZCBmb3Igc29tZSBleHRyYSBjb252 ZW5pZW5jZSB3ZSBhbHNvIHN0b3JlIHRoZSByb3RhdGVkIHBpdGNoIChpZS4KdGlsZSBhbGlnbmVk IHBsYW5lIGhlaWdodCkuIFNvIGZvciBlYWNoIHBsYW5lIHdlIGhhdmUgdGhlIG5vcm1hbAp4L3kg b2Zmc2V0cywgcm90YXRlZCB4L3kgb2Zmc2V0cywgYW5kIHRoZSByb3RhdGVkIHBpdGNoLiBUaGUg bm9ybWFsCnBpdGNoIGlzIGF2YWlsYWJsZSBhbHJlYWR5IGluIGZiLT5waXRjaGVzW10uCgpXaGls ZSB3ZSdyZSBnYXRoZXJpbmcgdXAgYWxsIHRoYXQgZXh0cmEgaW5mb3JtYXRpb24sIHdlIGNhbiBh bHNvIGVhc2lseQpjb21wdXRlIHRoZSBzdG9yYWdlIHJlcXVpcmVtZW50cyBmb3IgdGhlIGZyYW1l YnVmZmVyLCBzbyB0aGF0IHdlIGNhbgpjaGVjayB0aGF0IHRoZSBvYmplY3QgaXMgYmlnIGVub3Vn aCB0byBob2xkIGl0LgoKV2hlbiBpdCBjb21lcyB0aW1lIHRvIGRlYWwgd2l0aCB0aGUgcGxhbmUg c291cmNlIGNvb3JkaW5hdGVzLCB3ZSBmaXJzdApyb3RhdGUgdGhlIGNsaXBwZWQgc3JjIGNvb3Jk aW5hdGVzIHRvIG1hdGNoIHRoZSByZWxldmFudCBHVFQgdmlldwpvcmllbnRhdGlvbiwgdGhlbiBh ZGQgdG8gdGhlbSB0aGUgZmIgeC95IG9mZnNldHMuIE5leHQgd2UgY29tcHV0ZQp0aGUgYWxpZ25l ZCBzdXJmYWNlIHBhZ2Ugb2Zmc2V0LCBhbmQgYXMgYSByZXN1bHQgd2UncmUgbGVmdCB3aXRoIHNv bWUKcmVzaWR1YWwgeC95IG9mZnNldHMuIEZpbmFsbHksIGlmIHJlcXVpcmVkIGJ5IHRoZSBoYXJk d2FyZSwgd2UgY29udmVydAp0aGUgcmVtYWluaW5nIHgveSBvZmZzZXRzIGludG8gYSBsaW5lYXIg b2Zmc2V0LgoKRm9yIGdlbjIvMyB3ZSBzaW1wbHkgc2tpcCBjb21wdXRpbmcgdGhlIGZpbmFsIHBh Z2Ugb2Zmc2V0LCBhbmQganVzdApjb252ZXJ0IHRoZSBzcmMrZmIgeC95IG9mZnNldHMgZGlyZWN0 bHkgaW50byBhIGxpbmVhciBvZmZzZXQgc2luY2UKdGhhdCdzIHdoYXQgdGhlIGhhcmR3YXJlIHdh bnRzLgoKQWZ0ZXIgdGhpcyBhbGwgcGxhdGZvcm1zLCBpbmNsdWluZyBTS0wrLCBjb21wdXRlIHRo ZXNlIHRoaW5ncyBpbiBleGFjdGx5CnRoZSBzYW1lIHdheSAoZXhjbHVkaW5nIGFsaWduZW1udCBk aWZmZXJlbmNlcykuCgp2MjogVXNlIEJJVChEUk1fUk9UQVRFXzI3MCkgaW5zdGVhZCBvZiBST1RB VEVfMjcwIHdoZW4gcm90YXRpbmcKICAgIHBsYW5lIHNyYyBjb29yZGluYXRlcwogICAgRHJvcCBz b21lIHNwdXJpb3VzIGNoYW5nZXMgdGhhdCBnb3QgbGVmdCBiZWhpbmQgZHVyaW5nIGRldmVsb3Bt ZW50CgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICB8ICA2 NiArKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICB8ICAxNCArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNDQ4ICsrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgfCAgMzIgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAxMDIg KysrKy0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDAyIGluc2VydGlvbnMoKyksIDI2MCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGJiOTViODYuLjk4YWVl NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0zMjU1LDExICszMjU1LDYg QEAgcm90YXRlX3BhZ2VzKGNvbnN0IGRtYV9hZGRyX3QgKmluLCB1bnNpZ25lZCBpbnQgb2Zmc2V0 LAogCXVuc2lnbmVkIGludCBjb2x1bW4sIHJvdzsKIAl1bnNpZ25lZCBpbnQgc3JjX2lkeDsKIAot CWlmICghc2cpIHsKLQkJc3QtPm5lbnRzID0gMDsKLQkJc2cgPSBzdC0+c2dsOwotCX0KLQogCWZv ciAoY29sdW1uID0gMDsgY29sdW1uIDwgd2lkdGg7IGNvbHVtbisrKSB7CiAJCXNyY19pZHggPSBz dHJpZGUgKiAoaGVpZ2h0IC0gMSkgKyBjb2x1bW47CiAJCWZvciAocm93ID0gMDsgcm93IDwgaGVp Z2h0OyByb3crKykgewpAQCAtMzI4MCwxNiArMzI3NSwxNCBAQCByb3RhdGVfcGFnZXMoY29uc3Qg ZG1hX2FkZHJfdCAqaW4sIHVuc2lnbmVkIGludCBvZmZzZXQsCiB9CiAKIHN0YXRpYyBzdHJ1Y3Qg c2dfdGFibGUgKgotaW50ZWxfcm90YXRlX2ZiX29ial9wYWdlcyhzdHJ1Y3QgaW50ZWxfcm90YXRp b25faW5mbyAqcm90X2luZm8sCitpbnRlbF9yb3RhdGVfZmJfb2JqX3BhZ2VzKGNvbnN0IHN0cnVj dCBpbnRlbF9yb3RhdGlvbl9pbmZvICppbmZvLAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogewotCXVuc2lnbmVkIGludCBzaXplX3BhZ2VzID0gcm90X2luZm8tPnNpemUg Pj4gUEFHRV9TSElGVDsKLQl1bnNpZ25lZCBpbnQgc2l6ZV9wYWdlc191djsKKwl1bnNpZ25lZCBp bnQgc2l6ZSA9IGludGVsX3JvdGF0aW9uX2luZm9fc2l6ZShpbmZvKTsKIAlzdHJ1Y3Qgc2dfcGFn ZV9pdGVyIHNnX2l0ZXI7CiAJdW5zaWduZWQgbG9uZyBpOwogCWRtYV9hZGRyX3QgKnBhZ2VfYWRk cl9saXN0OwogCXN0cnVjdCBzZ190YWJsZSAqc3Q7Ci0JdW5zaWduZWQgaW50IHV2X3N0YXJ0X3Bh Z2U7CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKIAlpbnQgcmV0ID0gLUVOT01FTTsKIApAQCAt MzI5OSw1NyArMzI5MiwzMiBAQCBpbnRlbF9yb3RhdGVfZmJfb2JqX3BhZ2VzKHN0cnVjdCBpbnRl bF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbywKIAlpZiAoIXBhZ2VfYWRkcl9saXN0KQogCQlyZXR1 cm4gRVJSX1BUUihyZXQpOwogCi0JLyogQWNjb3VudCBmb3IgVVYgcGxhbmUgd2l0aCBOVjEyLiAq LwotCWlmIChyb3RfaW5mby0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKLQkJc2l6 ZV9wYWdlc191diA9IHJvdF9pbmZvLT5zaXplX3V2ID4+IFBBR0VfU0hJRlQ7Ci0JZWxzZQotCQlz aXplX3BhZ2VzX3V2ID0gMDsKLQogCS8qIEFsbG9jYXRlIHRhcmdldCBTRyBsaXN0LiAqLwogCXN0 ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFzdCkKIAkJZ290byBl cnJfc3RfYWxsb2M7CiAKLQlyZXQgPSBzZ19hbGxvY190YWJsZShzdCwgc2l6ZV9wYWdlcyArIHNp emVfcGFnZXNfdXYsIEdGUF9LRVJORUwpOworCXJldCA9IHNnX2FsbG9jX3RhYmxlKHN0LCBzaXpl LCBHRlBfS0VSTkVMKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9zZ19hbGxvYzsKIAogCS8qIFBv cHVsYXRlIHNvdXJjZSBwYWdlIGxpc3QgZnJvbSB0aGUgb2JqZWN0LiAqLwogCWkgPSAwOwogCWZv cl9lYWNoX3NnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVu dHMsIDApIHsKLQkJcGFnZV9hZGRyX2xpc3RbaV0gPSBzZ19wYWdlX2l0ZXJfZG1hX2FkZHJlc3Mo JnNnX2l0ZXIpOwotCQlpKys7CisJCXBhZ2VfYWRkcl9saXN0W2krK10gPSBzZ19wYWdlX2l0ZXJf ZG1hX2FkZHJlc3MoJnNnX2l0ZXIpOwogCX0KIAotCS8qIFJvdGF0ZSB0aGUgcGFnZXMuICovCi0J c2cgPSByb3RhdGVfcGFnZXMocGFnZV9hZGRyX2xpc3QsIDAsCi0JCSAgICAgcm90X2luZm8tPndp ZHRoX3BhZ2VzLCByb3RfaW5mby0+aGVpZ2h0X3BhZ2VzLAotCQkgICAgIHJvdF9pbmZvLT53aWR0 aF9wYWdlcywKLQkJICAgICBzdCwgTlVMTCk7CisJc3QtPm5lbnRzID0gMDsKKwlzZyA9IHN0LT5z Z2w7CiAKLQkvKiBBcHBlbmQgdGhlIFVWIHBsYW5lIGlmIE5WMTIuICovCi0JaWYgKHJvdF9pbmZv LT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSB7Ci0JCXV2X3N0YXJ0X3BhZ2UgPSBz aXplX3BhZ2VzOwotCi0JCS8qIENoZWNrIGZvciB0aWxlLXJvdyB1bi1hbGlnbm1lbnQuICovCi0J CWlmIChvZmZzZXRfaW5fcGFnZShyb3RfaW5mby0+dXZfb2Zmc2V0KSkKLQkJCXV2X3N0YXJ0X3Bh Z2UtLTsKLQotCQlyb3RfaW5mby0+dXZfc3RhcnRfcGFnZSA9IHV2X3N0YXJ0X3BhZ2U7Ci0KLQkJ cm90YXRlX3BhZ2VzKHBhZ2VfYWRkcl9saXN0LCB1dl9zdGFydF9wYWdlLAotCQkJICAgICByb3Rf aW5mby0+d2lkdGhfcGFnZXNfdXYsCi0JCQkgICAgIHJvdF9pbmZvLT5oZWlnaHRfcGFnZXNfdXYs Ci0JCQkgICAgIHJvdF9pbmZvLT53aWR0aF9wYWdlc191diwKLQkJCSAgICAgc3QsIHNnKTsKKwlm b3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUoaW5mby0+cGxhbmUpOyBpKyspIHsKKwkJc2cgPSBy b3RhdGVfcGFnZXMocGFnZV9hZGRyX2xpc3QsIGluZm8tPnBsYW5lW2ldLm9mZnNldCwKKwkJCQkg IGluZm8tPnBsYW5lW2ldLndpZHRoLCBpbmZvLT5wbGFuZVtpXS5oZWlnaHQsCisJCQkJICBpbmZv LT5wbGFuZVtpXS5zdHJpZGUsIHN0LCBzZyk7CiAJfQogCi0JRFJNX0RFQlVHX0tNUygKLQkJICAg ICAgIkNyZWF0ZWQgcm90YXRlZCBwYWdlIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICV6dSAocGl0 Y2g9JXUsIGhlaWdodD0ldSwgcGl4ZWxfZm9ybWF0PTB4JXgsICV1eCV1IHRpbGVzLCAldSBwYWdl cyAoJXUgcGxhbmUgMCkpLlxuIiwKLQkJICAgICAgb2JqLT5iYXNlLnNpemUsIHJvdF9pbmZvLT5w aXRjaCwgcm90X2luZm8tPmhlaWdodCwKLQkJICAgICAgcm90X2luZm8tPnBpeGVsX2Zvcm1hdCwg cm90X2luZm8tPndpZHRoX3BhZ2VzLAotCQkgICAgICByb3RfaW5mby0+aGVpZ2h0X3BhZ2VzLCBz aXplX3BhZ2VzICsgc2l6ZV9wYWdlc191diwKLQkJICAgICAgc2l6ZV9wYWdlcyk7CisJRFJNX0RF QlVHX0tNUygiQ3JlYXRlZCByb3RhdGVkIHBhZ2UgbWFwcGluZyBmb3Igb2JqZWN0IHNpemUgJXp1 ICgldXgldSB0aWxlcywgJXUgcGFnZXMpXG4iLAorCQkgICAgICBvYmotPmJhc2Uuc2l6ZSwgaW5m by0+cGxhbmVbMF0ud2lkdGgsIGluZm8tPnBsYW5lWzBdLmhlaWdodCwgc2l6ZSk7CiAKIAlkcm1f ZnJlZV9sYXJnZShwYWdlX2FkZHJfbGlzdCk7CiAKQEAgLTMzNjAsMTIgKzMzMjgsOCBAQCBlcnJf c2dfYWxsb2M6CiBlcnJfc3RfYWxsb2M6CiAJZHJtX2ZyZWVfbGFyZ2UocGFnZV9hZGRyX2xpc3Qp OwogCi0JRFJNX0RFQlVHX0tNUygKLQkJICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcm90YXRlZCBt YXBwaW5nIGZvciBvYmplY3Qgc2l6ZSAlenUhICglZCkgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBp eGVsX2Zvcm1hdD0weCV4LCAldXgldSB0aWxlcywgJXUgcGFnZXMgKCV1IHBsYW5lIDApKVxuIiwK LQkJICAgICAgb2JqLT5iYXNlLnNpemUsIHJldCwgcm90X2luZm8tPnBpdGNoLCByb3RfaW5mby0+ aGVpZ2h0LAotCQkgICAgICByb3RfaW5mby0+cGl4ZWxfZm9ybWF0LCByb3RfaW5mby0+d2lkdGhf cGFnZXMsCi0JCSAgICAgIHJvdF9pbmZvLT5oZWlnaHRfcGFnZXMsIHNpemVfcGFnZXMgKyBzaXpl X3BhZ2VzX3V2LAotCQkgICAgICBzaXplX3BhZ2VzKTsKKwlEUk1fREVCVUdfS01TKCJGYWlsZWQg dG8gY3JlYXRlIHJvdGF0ZWQgbWFwcGluZyBmb3Igb2JqZWN0IHNpemUgJXp1ISAoJXV4JXUgdGls ZXMsICV1IHBhZ2VzKVxuIiwKKwkJICAgICAgb2JqLT5iYXNlLnNpemUsIGluZm8tPnBsYW5lWzBd LndpZHRoLCBpbmZvLT5wbGFuZVswXS5oZWlnaHQsIHNpemUpOwogCXJldHVybiBFUlJfUFRSKHJl dCk7CiB9CiAKQEAgLTM1MTYsNyArMzQ4MCw3IEBAIGk5MTVfZ2d0dF92aWV3X3NpemUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRf VklFV19OT1JNQUwpIHsKIAkJcmV0dXJuIG9iai0+YmFzZS5zaXplOwogCX0gZWxzZSBpZiAodmll dy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19ST1RBVEVEKSB7Ci0JCXJldHVybiB2aWV3LT5yb3Rh dGVkLnNpemU7CisJCXJldHVybiBpbnRlbF9yb3RhdGlvbl9pbmZvX3NpemUoJnZpZXctPnJvdGF0 ZWQpIDw8IFBBR0VfU0hJRlQ7CiAJfSBlbHNlIGlmICh2aWV3LT50eXBlID09IEk5MTVfR0dUVF9W SUVXX1BBUlRJQUwpIHsKIAkJcmV0dXJuIHZpZXctPnBhcnRpYWwuc2l6ZSA8PCBQQUdFX1NISUZU OwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDY4ZGU3MzQu LmVhMjhmN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC0xMzYsMTYgKzEz NiwxMCBAQCBlbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgewogfTsKIAogc3RydWN0IGludGVsX3Jv dGF0aW9uX2luZm8gewotCXVuc2lnbmVkIGludCBoZWlnaHQ7Ci0JdW5zaWduZWQgaW50IHBpdGNo OwotCXVuc2lnbmVkIGludCB1dl9vZmZzZXQ7Ci0JdWludDMyX3QgcGl4ZWxfZm9ybWF0OwotCXVp bnQ2NF90IGZiX21vZGlmaWVyOwotCXVuc2lnbmVkIGludCB3aWR0aF9wYWdlcywgaGVpZ2h0X3Bh Z2VzOwotCXVpbnQ2NF90IHNpemU7Ci0JdW5zaWduZWQgaW50IHdpZHRoX3BhZ2VzX3V2LCBoZWln aHRfcGFnZXNfdXY7Ci0JdWludDY0X3Qgc2l6ZV91djsKLQl1bnNpZ25lZCBpbnQgdXZfc3RhcnRf cGFnZTsKKwlzdHJ1Y3QgeworCQkvKiB0aWxlcyAqLworCQl1bnNpZ25lZCBpbnQgd2lkdGgsIGhl aWdodCwgc3RyaWRlLCBvZmZzZXQ7CisJfSBwbGFuZVsyXTsKIH07CiAKIHN0cnVjdCBpOTE1X2dn dHRfdmlldyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMDI4ZGM0YS4u MGRjYjcxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjI3NCw0OSAr MjI3NCwyOCBAQCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IGhlaWdodCwKIAlyZXR1cm4gQUxJR04oaGVpZ2h0LCB0aWxlX2hlaWdodCk7 CiB9CiAKLXN0YXRpYyBpbnQKK3Vuc2lnbmVkIGludCBpbnRlbF9yb3RhdGlvbl9pbmZvX3NpemUo Y29uc3Qgc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gKmluZm8pCit7CisJdW5zaWduZWQgaW50 IHNpemUgPSAwOworCWludCBpOworCisJZm9yIChpID0gMCA7IGkgPCBBUlJBWV9TSVpFKGluZm8t PnBsYW5lKTsgaSsrKQorCQlzaXplICs9IGluZm8tPnBsYW5lW2ldLndpZHRoICogaW5mby0+cGxh bmVbaV0uaGVpZ2h0OworCisJcmV0dXJuIHNpemU7Cit9CisKK3N0YXRpYyB2b2lkCiBpbnRlbF9m aWxsX2ZiX2dndHRfdmlldyhzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcsCiAJCQljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJCXVuc2lnbmVkIGludCByb3RhdGlvbikKIHsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGZiLT5kZXYpOwot CXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICppbmZvID0gJnZpZXctPnJvdGF0ZWQ7Ci0JdW5z aWduZWQgaW50IHRpbGVfc2l6ZSwgdGlsZV93aWR0aCwgdGlsZV9oZWlnaHQsIGNwcDsKLQotCSp2 aWV3ID0gaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsOwotCi0JaWYgKCFpbnRlbF9yb3RhdGlvbl85MF9v cl8yNzAocm90YXRpb24pKQotCQlyZXR1cm4gMDsKLQotCSp2aWV3ID0gaTkxNV9nZ3R0X3ZpZXdf cm90YXRlZDsKLQotCWluZm8tPmhlaWdodCA9IGZiLT5oZWlnaHQ7Ci0JaW5mby0+cGl4ZWxfZm9y bWF0ID0gZmItPnBpeGVsX2Zvcm1hdDsKLQlpbmZvLT5waXRjaCA9IGZiLT5waXRjaGVzWzBdOwot CWluZm8tPnV2X29mZnNldCA9IGZiLT5vZmZzZXRzWzFdOwotCWluZm8tPmZiX21vZGlmaWVyID0g ZmItPm1vZGlmaWVyWzBdOwotCi0JdGlsZV9zaXplID0gaW50ZWxfdGlsZV9zaXplKGRldl9wcml2 KTsKLQotCWNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwot CXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2LCBjcHAsIGZiLT5tb2RpZmll clswXSk7Ci0JdGlsZV9oZWlnaHQgPSB0aWxlX3NpemUgLyB0aWxlX3dpZHRoOwotCi0JaW5mby0+ d2lkdGhfcGFnZXMgPSBESVZfUk9VTkRfVVAoZmItPnBpdGNoZXNbMF0sIHRpbGVfd2lkdGgpOwot CWluZm8tPmhlaWdodF9wYWdlcyA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdo dCk7Ci0JaW5mby0+c2l6ZSA9IGluZm8tPndpZHRoX3BhZ2VzICogaW5mby0+aGVpZ2h0X3BhZ2Vz ICogdGlsZV9zaXplOwotCi0JaWYgKGluZm8tPnBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05W MTIpIHsKLQkJY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMSk7 Ci0JCXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2LCBmYi0+bW9kaWZpZXJb MV0sIGNwcCk7Ci0JCXRpbGVfaGVpZ2h0ID0gdGlsZV9zaXplIC8gdGlsZV93aWR0aDsKLQotCQlp bmZvLT53aWR0aF9wYWdlc191diA9IERJVl9ST1VORF9VUChmYi0+cGl0Y2hlc1sxXSwgdGlsZV93 aWR0aCk7Ci0JCWluZm8tPmhlaWdodF9wYWdlc191diA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0 IC8gMiwgdGlsZV9oZWlnaHQpOwotCQlpbmZvLT5zaXplX3V2ID0gaW5mby0+d2lkdGhfcGFnZXNf dXYgKiBpbmZvLT5oZWlnaHRfcGFnZXNfdXYgKiB0aWxlX3NpemU7CisJaWYgKGludGVsX3JvdGF0 aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKKwkJKnZpZXcgPSBpOTE1X2dndHRfdmlld19yb3Rh dGVkOworCQl2aWV3LT5yb3RhdGVkID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLT5pbmZvOwor CX0gZWxzZSB7CisJCSp2aWV3ID0gaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsOwogCX0KLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMjM2OCw5ICsyMzQ3LDcg QEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs CiAKIAlhbGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlm aWVyWzBdKTsKIAotCXJldCA9IGludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KCZ2aWV3LCBmYiwgcm90 YXRpb24pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJaW50ZWxfZmlsbF9mYl9nZ3R0X3Zp ZXcoJnZpZXcsIGZiLCByb3RhdGlvbik7CiAKIAkvKiBOb3RlIHRoYXQgdGhlIHcvYSBhbHNvIHJl cXVpcmVzIDY0IFBURSBvZiBwYWRkaW5nIGZvbGxvd2luZyB0aGUKIAkgKiBiby4gV2UgY3VycmVu dGx5IGZpbGwgYWxsIHVudXNlZCBQVEUgd2l0aCB0aGUgc2hhZG93IHBhZ2UgYW5kIHNvCkBAIC0y NDMzLDE4ICsyNDEwLDMxIEBAIHN0YXRpYyB2b2lkIGludGVsX3VucGluX2ZiX29iaihzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwgdW5zaWduZWQgaW50IHJvdGF0aW9uCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CiAJc3RydWN0IGk5MTVf Z2d0dF92aWV3IHZpZXc7Ci0JaW50IHJldDsKIAogCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgm b2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSk7CiAKLQlyZXQgPSBpbnRlbF9maWxsX2ZiX2dn dHRfdmlldygmdmlldywgZmIsIHJvdGF0aW9uKTsKLQlXQVJOX09OQ0UocmV0LCAiQ291bGRuJ3Qg Z2V0IHZpZXcgZnJvbSBwbGFuZSBzdGF0ZSEiKTsKKwlpbnRlbF9maWxsX2ZiX2dndHRfdmlldygm dmlldywgZmIsIHJvdGF0aW9uKTsKIAogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mZW5jZShvYmop OwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUob2JqLCAmdmlldyk7 CiB9CiAKIC8qCisgKiBDb252ZXJ0IHRoZSB4L3kgb2Zmc2V0cyBpbnRvIGEgbGluZWFyIG9mZnNl dC4KKyAqIE9ubHkgdmFsaWQgd2l0aCAwLzE4MCBkZWdyZWUgcm90YXRpb24sIHdoaWNoIGlzIGZp bmUgc2luY2UgbGluZWFyCisgKiBvZmZzZXQgaXMgb25seSB1c2VkIHdpdGggbGluZWFyIGJ1ZmZl cnMgb24gcHJlLWhzdyBhbmQgdGlsZWQgYnVmZmVycworICogd2l0aCBnZW4yLzMsIGFuZCA5MC8y NzAgZGVncmVlIHJvdGF0aW9ucyBpc24ndCBzdXBwb3J0ZWQgb24gYW55IG9mIHRoZW0uCisgKi8K K3Vuc2lnbmVkIGludCBpbnRlbF9mYl94eV90b19saW5lYXIoaW50IHgsIGludCB5LAorCQkJCSAg IGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUpCit7CisJdW5zaWdu ZWQgaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIHBsYW5l KTsKKwl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBmYi0+cGl0Y2hlc1twbGFuZV07CisKKwlyZXR1cm4g eSAqIHBpdGNoICsgeCAqIGNwcDsKK30KKworLyoKICAqIFJldHVybiB0aGUgdGlsZSBkaW1lbnNp b25zIGluIHBpeGVsIHVuaXRzIG1hdGNoaW5nCiAgKiB0aGUgc3BlY2lmaWVkIHJvdGF0aW9uIGFu Z2xlLgogICovCkBAIC0yNDc1LDYgKzI0NjUsNTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfcm90YXRl X3RpbGVfZGltcyh1bnNpZ25lZCBpbnQgKnRpbGVfd2lkdGgsCiB9CiAKIC8qCisgKiBBZGQgdGhl IHgveSBvZmZzZXRzIGRlcml2ZWQgZnJvbSBmYi0+b2Zmc2V0c1tdIHRvIHRoZSB1c2VyCisgKiBz cGVjaWZpZWQgcGxhbmUgc3JjIHgveSBvZmZzZXRzLiBUaGUgcmVzdWx0aW5nIHgveSBvZmZzZXRz CisgKiBzcGVjaWZ5IHRoZSBzdGFydCBvZiBzY2Fub3V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0 aGUgZ3R0IG1hcHBpbmcuCisgKi8KK3ZvaWQgaW50ZWxfYWRkX2ZiX29mZnNldHMoaW50ICp4LCBp bnQgKnksCisJCQkgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUs CisJCQkgIHVuc2lnbmVkIGludCByb3RhdGlvbikKKworeworCWNvbnN0IHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZmItPmRldik7CisJY29uc3Qgc3RydWN0IGlu dGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKKwl1 bnNpZ25lZCBpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwg cGxhbmUpOworCXVuc2lnbmVkIGludCBwaXRjaDsKKworCWlmIChpbnRlbF9yb3RhdGlvbl85MF9v cl8yNzAocm90YXRpb24pKSB7CisJCXBpdGNoID0gaW50ZWxfZmItPnBsYW5lW3BsYW5lXS5yb3Rh dGVkLnBpdGNoOworCisJCSp4ICs9IGludGVsX2ZiLT5wbGFuZVtwbGFuZV0ucm90YXRlZC54Owor CQkqeSArPSBpbnRlbF9mYi0+cGxhbmVbcGxhbmVdLnJvdGF0ZWQueTsKKwl9IGVsc2UgeworCQlw aXRjaCA9IGZiLT5waXRjaGVzW3BsYW5lXTsKKworCQkqeCArPSBpbnRlbF9mYi0+cGxhbmVbcGxh bmVdLm5vcm1hbC54OworCQkqeSArPSBpbnRlbF9mYi0+cGxhbmVbcGxhbmVdLm5vcm1hbC55Owor CX0KKworCS8qIG1pbmltaXplIHggKi8KKwlpZiAoZmItPm1vZGlmaWVyW3BsYW5lXSAhPSBEUk1f Rk9STUFUX01PRF9OT05FKSB7CisJCXVuc2lnbmVkIGludCB0aWxlX3NpemUsIHRpbGVfd2lkdGgs IHRpbGVfaGVpZ2h0OworCisJCXRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6ZShkZXZfcHJpdik7 CisJCXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2LCBmYi0+bW9kaWZpZXJb cGxhbmVdLCBjcHApOworCQl0aWxlX2hlaWdodCA9IHRpbGVfc2l6ZSAvIHRpbGVfd2lkdGg7CisK KwkJaW50ZWxfcm90YXRlX3RpbGVfZGltcygmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0LAorCQkJ CSAgICAgICAmcGl0Y2gsIGNwcCwgcm90YXRpb24pOworCisJCSp5ICs9ICp4IC8gcGl0Y2ggKiB0 aWxlX2hlaWdodDsKKwkJKnggID0gKnggJSBwaXRjaDsKKwl9IGVsc2UgeworCQkvKiBpbiBwaXhl bHMgKi8KKwkJcGl0Y2ggLz0gY3BwOworCisJCSp5ICs9ICp4IC8gcGl0Y2g7CisJCSp4ICA9ICp4 ICUgcGl0Y2g7CisJfQorfQorCisvKgogICogQWRqdXN0IHRoZSBwYWdlIG9mZnNldCBieSBtb3Zp bmcgdGhlIGRpZmZlcmVuY2UgaW50bwogICogdGhlIHgveSBvZmZzZXRzLgogICoKQEAgLTI1MTQs MjAgKzI1NTMsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfYWRqdXN0X3BhZ2Vfb2Zmc2V0KGludCAq eCwgaW50ICp5LAogICogSW4gdGhlIDkwLzI3MCByb3RhdGVkIGNhc2UsIHggYW5kIHkgYXJlIGFz c3VtZWQKICAqIHRvIGJlIGFscmVhZHkgcm90YXRlZCB0byBtYXRjaCB0aGUgcm90YXRlZCBHVFQg dmlldywgYW5kCiAgKiBwaXRjaCBpcyB0aGUgdGlsZV9oZWlnaHQgYWxpZ25lZCBmcmFtZWJ1ZmZl ciBoZWlnaHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHRo ZSBkZXJpdmVkIGluZm9ybWF0aW9uCisgKiB1bmRlciBpbnRlbF9mcmFtZWJ1ZmZlciwgc28gdXNp bmcgYW55IG9mIHRoYXQgaW5mb3JtYXRpb24KKyAqIGhlcmUgaXMgbm90IGFsbG93ZWQuIEFueXRo aW5nIHVuZGVyIGRybV9mcmFtZWJ1ZmZlciBjYW4gYmUKKyAqIHVzZWQuIFRoaXMgaXMgd2h5IHRo ZSB1c2VyIGhhcyB0byBwYXNzIGluIHRoZSBwaXRjaCBzaW5jZSBpdAorICogaXMgc3BlY2lmaWVk IGluIHRoZSByb3RhdGVkIG9yaWVudGF0aW9uLgogICovCi11bnNpZ25lZCBsb25nIGludGVsX2Nv bXB1dGVfcGFnZV9vZmZzZXQoaW50ICp4LCBpbnQgKnksCi0JCQkJCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCi0JCQkJCXVuc2lnbmVkIGludCBwaXRjaCwKLQkJ CQkJdW5zaWduZWQgaW50IHJvdGF0aW9uKQorc3RhdGljIHVuc2lnbmVkIGludCBfaW50ZWxfY29t cHV0ZV9wYWdlX29mZnNldChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkJCSAgICAgICBpbnQgKngsIGludCAqeSwKKwkJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCisJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQg cGl0Y2gsCisJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgcm90YXRpb24sCisJCQkJCSAgICAgICB1 bnNpZ25lZCBpbnQgYWxpZ25tZW50KQogewotCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZmItPmRldik7CiAJdWludDY0X3QgZmJfbW9kaWZpZXIgPSBm Yi0+bW9kaWZpZXJbcGxhbmVdOwogCXVuc2lnbmVkIGludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5l X2NwcChmYi0+cGl4ZWxfZm9ybWF0LCBwbGFuZSk7Ci0JdW5zaWduZWQgaW50IG9mZnNldCwgYWxp Z25tZW50OwotCi0JYWxpZ25tZW50ID0gaW50ZWxfc3VyZl9hbGlnbm1lbnQoZGV2X3ByaXYsIGZi X21vZGlmaWVyKTsKLQlpZiAoYWxpZ25tZW50KQotCQlhbGlnbm1lbnQtLTsKKwl1bnNpZ25lZCBp bnQgb2Zmc2V0OwogCiAJaWYgKGZiX21vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX05PTkUpIHsK IAkJdW5zaWduZWQgaW50IHRpbGVfc2l6ZSwgdGlsZV93aWR0aCwgdGlsZV9oZWlnaHQ7CkBAIC0y NTYwLDYgKzI2MDIsMTQ1IEBAIHVuc2lnbmVkIGxvbmcgaW50ZWxfY29tcHV0ZV9wYWdlX29mZnNl dChpbnQgKngsIGludCAqeSwKIAlyZXR1cm4gb2Zmc2V0ICYgfmFsaWdubWVudDsKIH0KIAordW5z aWduZWQgaW50IGludGVsX2NvbXB1dGVfcGFnZV9vZmZzZXQoaW50ICp4LCBpbnQgKnksCisJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCisJCQkJ ICAgICAgIHVuc2lnbmVkIGludCBwaXRjaCwKKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHJvdGF0 aW9uKQoreworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZmItPmRldik7CisJdW5zaWduZWQgaW50IGFsaWdubWVudCA9IGludGVsX3N1cmZfYWxpZ25t ZW50KGRldl9wcml2LCBmYi0+bW9kaWZpZXJbcGxhbmVdKTsKKworCXJldHVybiBfaW50ZWxfY29t cHV0ZV9wYWdlX29mZnNldChkZXZfcHJpdiwgeCwgeSwgZmIsIHBsYW5lLCBwaXRjaCwKKwkJCQkJ ICByb3RhdGlvbiwgYWxpZ25tZW50ID8gKGFsaWdubWVudCAtIDEpIDogMCk7Cit9CisKKy8qIENv bnZlcnQgdGhlIGZiLT5vZmZzZXRbXSBsaW5lYXIgb2Zmc2V0IGludG8geC95IG9mZnNldHMgKi8K K3N0YXRpYyB2b2lkIGludGVsX2ZiX29mZnNldF90b194eShpbnQgKngsIGludCAqeSwKKwkJCQkg IGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUpCit7CisJdW5zaWdu ZWQgaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIHBsYW5l KTsKKwl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBmYi0+cGl0Y2hlc1twbGFuZV07CisJdW5zaWduZWQg aW50IGxpbmVhcl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1twbGFuZV07CisKKwkqeSA9IGxpbmVhcl9v ZmZzZXQgLyBwaXRjaDsKKwkqeCA9IGxpbmVhcl9vZmZzZXQgJSBwaXRjaCAvIGNwcDsKK30KKwor c3RhdGljIGludAoraW50ZWxfZmlsbF9mYl9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKKwkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCit7CisJc3RydWN0IGlu dGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKKwlz dHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqaW5mbyA9ICZpbnRlbF9mYi0+aW5mbzsKKwl1bnNp Z25lZCBpbnQgdGlsZV9zaXplOworCXVuc2lnbmVkIGludCBndHRfb2Zmc2V0X3JvdGF0ZWQgPSAw OworCXVuc2lnbmVkIGludCBtYXhfc2l6ZSA9IDA7CisJdWludDMyX3QgZm9ybWF0ID0gZmItPnBp eGVsX2Zvcm1hdDsKKwlpbnQgaSwgbnVtX3BsYW5lcyA9IGRybV9mb3JtYXRfbnVtX3BsYW5lcyhm b3JtYXQpOworCisJdGlsZV9zaXplID0gaW50ZWxfdGlsZV9zaXplKGRldl9wcml2KTsKKworCWZv ciAoaSA9IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspIHsKKwkJdW5zaWduZWQgaW50IHdpZHRoLCBo ZWlnaHQ7CisJCXVuc2lnbmVkIGludCBjcHAsIG9mZnNldCwgc2l6ZTsKKwkJaW50IHgsIHk7CisK KwkJY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZm9ybWF0LCBpKTsKKwkJd2lkdGggPSBkcm1f Zm9ybWF0X3BsYW5lX3dpZHRoKGZiLT53aWR0aCwgZm9ybWF0LCBpKTsKKwkJaGVpZ2h0ID0gZHJt X2Zvcm1hdF9wbGFuZV9oZWlnaHQoZmItPmhlaWdodCwgZm9ybWF0LCBpKTsKKworCQlpbnRlbF9m Yl9vZmZzZXRfdG9feHkoJngsICZ5LCBmYiwgaSk7CisKKwkJLyoKKwkJICogRmlyc3QgcGl4ZWwg b2YgdGhlIGZyYW1lYnVmZmVyIGZyb20KKwkJICogdGhlIHN0YXJ0IG9mIHRoZSBub3JtYWwgZ3R0 IG1hcHBpbmcuCisJCSAqLworCQlpbnRlbF9mYi0+cGxhbmVbaV0ubm9ybWFsLnggPSB4OworCQlp bnRlbF9mYi0+cGxhbmVbaV0ubm9ybWFsLnkgPSB5OworCisJCW9mZnNldCA9IF9pbnRlbF9jb21w dXRlX3BhZ2Vfb2Zmc2V0KGRldl9wcml2LCAmeCwgJnksCisJCQkJCQkgICAgZmIsIDAsIGZiLT5w aXRjaGVzW2ldLAorCQkJCQkJICAgIEJJVChEUk1fUk9UQVRFXzApLAorCQkJCQkJICAgIHRpbGVf c2l6ZSk7CisJCW9mZnNldCAvPSB0aWxlX3NpemU7CisJCURSTV9ERUJVRygicGFnZSBvZmZzZXQg JXUgcGFnZXNcbiIsIG9mZnNldCk7CisKKwkJaWYgKGZiLT5tb2RpZmllcltpXSAhPSBEUk1fRk9S TUFUX01PRF9OT05FKSB7CisJCQl1bnNpZ25lZCBpbnQgdGlsZV93aWR0aCwgdGlsZV9oZWlnaHQ7 CisJCQl1bnNpZ25lZCBpbnQgcGl0Y2g7CisJCQlzdHJ1Y3QgZHJtX3JlY3QgcjsKKworCQkJdGls ZV93aWR0aCA9IGludGVsX3RpbGVfd2lkdGgoZGV2X3ByaXYsIGZiLT5tb2RpZmllcltpXSwgY3Bw KTsKKwkJCXRpbGVfaGVpZ2h0ID0gdGlsZV9zaXplIC8gdGlsZV93aWR0aDsKKworCQkJaW5mby0+ cGxhbmVbaV0ub2Zmc2V0ID0gb2Zmc2V0OworCQkJaW5mby0+cGxhbmVbaV0uc3RyaWRlID0gRElW X1JPVU5EX1VQKGZiLT5waXRjaGVzW2ldLCB0aWxlX3dpZHRoKTsKKwkJCWluZm8tPnBsYW5lW2ld LndpZHRoID0gRElWX1JPVU5EX1VQKCh4ICsgd2lkdGgpICogY3BwLCB0aWxlX3dpZHRoKTsKKwkJ CWluZm8tPnBsYW5lW2ldLmhlaWdodCA9IERJVl9ST1VORF9VUCh5ICsgaGVpZ2h0LCB0aWxlX2hl aWdodCk7CisKKworCQkJaW50ZWxfZmItPnBsYW5lW2ldLnJvdGF0ZWQucGl0Y2ggPQorCQkJCWlu Zm8tPnBsYW5lW2ldLmhlaWdodCAqIHRpbGVfaGVpZ2h0OworCisJCQkvKiBob3cgbWFueSB0aWxl cyBkb2VzIHRoaXMgcGxhbmUgbmVlZCAqLworCQkJc2l6ZSA9IGluZm8tPnBsYW5lW2ldLnN0cmlk ZSAqIGluZm8tPnBsYW5lW2ldLmhlaWdodDsKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGxhbmUgaXNu J3QgaG9yaXpvbnRhbGx5IHRpbGUgYWxpZ25lZCwKKwkJCSAqIHdlIG5lZWQgb25lIG1vcmUgdGls ZS4KKwkJCSAqLworCQkJaWYgKHggIT0gMCkKKwkJCQlzaXplKys7CisKKwkJCXBpdGNoID0gaW50 ZWxfZmItPnBsYW5lW2ldLnJvdGF0ZWQucGl0Y2g7CisKKwkJCS8qIHJvdGF0ZSB0aGUgeC95IG9m ZnNldHMgdG8gbWF0Y2ggdGhlIEdUVCB2aWV3ICovCisJCQlyLngxID0geDsKKwkJCXIueTEgPSB5 OworCQkJci54MiA9IHggKyB3aWR0aDsKKwkJCXIueTIgPSB5ICsgaGVpZ2h0OworCQkJZHJtX3Jl Y3Rfcm90YXRlKCZyLCB3aWR0aCwgcGl0Y2gsIEJJVChEUk1fUk9UQVRFXzI3MCkpOworCQkJeCA9 IHIueDE7CisJCQl5ID0gci55MTsKKworCQkJaW50ZWxfcm90YXRlX3RpbGVfZGltcygmdGlsZV93 aWR0aCwgJnRpbGVfaGVpZ2h0LCAmcGl0Y2gsCisJCQkJCSAgICAgICBjcHAsIEJJVChEUk1fUk9U QVRFXzI3MCkpOworCisJCQkvKgorCQkJICogV2Ugb25seSBrZWVwIHRoZSB4L3kgb2Zmc2V0cywg c28gcHVzaCBhbGwgb2YgdGhlCisJCQkgKiBndHQgb2Zmc2V0IGludG8gdGhlIHgveSBvZmZzZXRz LgorCQkJICovCisJCQlpbnRlbF9hZGp1c3RfcGFnZV9vZmZzZXQoJngsICZ5LCB0aWxlX3dpZHRo LCB0aWxlX2hlaWdodCwKKwkJCQkJCSB0aWxlX3NpemUsIHBpdGNoLAorCQkJCQkJIGd0dF9vZmZz ZXRfcm90YXRlZCAqIHRpbGVfc2l6ZSwgMCk7CisKKwkJCWd0dF9vZmZzZXRfcm90YXRlZCArPSBp bmZvLT5wbGFuZVtpXS53aWR0aCAqIGluZm8tPnBsYW5lW2ldLmhlaWdodDsKKworCQkJLyoKKwkJ CSAqIEZpcnN0IHBpeGVsIG9mIHRoZSBmcmFtZWJ1ZmZlciBmcm9tCisJCQkgKiB0aGUgc3RhcnQg b2YgdGhlIHJvdGF0ZWQgZ3R0IG1hcHBpbmcuCisJCQkgKi8KKwkJCWludGVsX2ZiLT5wbGFuZVtp XS5yb3RhdGVkLnggPSB4OworCQkJaW50ZWxfZmItPnBsYW5lW2ldLnJvdGF0ZWQueSA9IHk7CisJ CX0gZWxzZSB7CisJCQlzaXplID0gRElWX1JPVU5EX1VQKCh5ICsgaGVpZ2h0KSAqIGZiLT5waXRj aGVzW2ldICsKKwkJCQkJICAgIHggKiBjcHAsIHRpbGVfc2l6ZSk7CisJCX0KKwkJRFJNX0RFQlVH KCIlZCBvZmZzZXQgJXUsIHNpemUgJXUsIHN0cmlkZSAldSwgaGVpZ2h0ICV1XG4iLAorCQkJICBp LCBvZmZzZXQsIHNpemUsIGluZm8tPnBsYW5lW2ldLnN0cmlkZSwgaW5mby0+cGxhbmVbaV0uaGVp Z2h0KTsKKworCQkvKiBob3cgbWFueSB0aWxlcyBpbiB0b3RhbCBuZWVkZWQgaW4gdGhlIGJvICov CisJCW1heF9zaXplID0gbWF4KG1heF9zaXplLCBvZmZzZXQgKyBzaXplKTsKKwl9CisKKwlpZiAo bWF4X3NpemUgKiB0aWxlX3NpemUgPiB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPm9iai0+YmFz ZS5zaXplKSB7CisJCURSTV9ERUJVRygiZmIgdG9vIGJpZyBmb3IgYm8gKG5lZWQgJXUgYnl0ZXMs IGhhdmUgJXp1IGJ5dGVzKVxuIiwKKwkJCSAgbWF4X3NpemUgKiB0aWxlX3NpemUsIHRvX2ludGVs X2ZyYW1lYnVmZmVyKGZiKS0+b2JqLT5iYXNlLnNpemUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBpOXh4X2Zvcm1hdF90b19mb3VyY2MoaW50 IGZvcm1hdCkKIHsKIAlzd2l0Y2ggKGZvcm1hdCkgewpAQCAtMjc2MSw3ICsyOTQyLDcgQEAgc3Rh dGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlpbnQgcGxhbmUgPSBpbnRlbF9j cnRjLT5wbGFuZTsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb247Ci0JdW5zaWduZWQgbG9uZyBsaW5l YXJfb2Zmc2V0OworCXVuc2lnbmVkIGludCBsaW5lYXJfb2Zmc2V0OwogCXUzMiBkc3BjbnRyOwog CXUzMiByZWcgPSBEU1BDTlRSKHBsYW5lKTsKIAlpbnQgcGl4ZWxfc2l6ZTsKQEAgLTI4MzksMzAg KzMwMjAsMjUgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJaWYgKElTX0c0WChkZXYpKQogCQlkc3BjbnRyIHw9IERJU1BQTEFO RV9UUklDS0xFX0ZFRURfRElTQUJMRTsKIAotCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNo ZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKKwlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIGZi LCAwLCByb3RhdGlvbik7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQogCQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNl dCA9CiAJCQlpbnRlbF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgZmIsIDAsCiAJCQkJCQkg IGZiLT5waXRjaGVzWzBdLCByb3RhdGlvbik7Ci0JCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0 Yy0+ZHNwYWRkcl9vZmZzZXQ7Ci0JfSBlbHNlIHsKLQkJaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZz ZXQgPSBsaW5lYXJfb2Zmc2V0OwotCX0KIAogCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90 YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewogCQlkc3BjbnRyIHw9IERJU1BQTEFORV9S T1RBVEVfMTgwOwogCiAJCXggKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEp OwogCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKTsKLQotCQkvKiBG aW5kaW5nIHRoZSBsYXN0IHBpeGVsIG9mIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGRpc3BsYXkKLQkJ ZGF0YSBhbmQgYWRkaW5nIHRvIGxpbmVhcl9vZmZzZXQqLwotCQlsaW5lYXJfb2Zmc2V0ICs9Ci0J CQkoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSAr Ci0JCQkoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwog CX0KIAorCWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwgZmIsIDAp OworCisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKKwkJaW50ZWxfY3J0Yy0+ZHNwYWRk cl9vZmZzZXQgPSBsaW5lYXJfb2Zmc2V0OworCiAJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeCA9IHg7 CiAJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeSA9IHk7CiAKQEAgLTI4NzEsNyArMzA0Nyw4IEBAIHN0 YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRj LAogCUk5MTVfV1JJVEUoRFNQU1RSSURFKHBsYW5lKSwgZmItPnBpdGNoZXNbMF0pOwogCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CiAJCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSks Ci0JCQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGludGVsX2NydGMtPmRzcGFk ZHJfb2Zmc2V0KTsKKwkJCSAgIGludGVsX3N1cmZfZ3R0X29mZnNldChmYiwgMCwgcm90YXRpb24p ICsKKwkJCSAgIGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKIAkJSTkxNV9XUklURShEU1BU SUxFT0ZGKHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7CiAJCUk5MTVfV1JJVEUoRFNQTElOT0ZGKHBs YW5lKSwgbGluZWFyX29mZnNldCk7CiAJfSBlbHNlCkBAIC0yODkxLDcgKzMwNjgsNyBAQCBzdGF0 aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlpbnQgcGxhbmUgPSBpbnRl bF9jcnRjLT5wbGFuZTsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb247Ci0JdW5zaWduZWQgbG9uZyBs aW5lYXJfb2Zmc2V0OworCXVuc2lnbmVkIGludCBsaW5lYXJfb2Zmc2V0OwogCXUzMiBkc3BjbnRy OwogCXUzMiByZWcgPSBEU1BDTlRSKHBsYW5lKTsKIAlpbnQgcGl4ZWxfc2l6ZTsKQEAgLTI5NDYs MjYgKzMxMjMsMjIgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCWlmICghSVNfSEFTV0VMTChkZXYpICYmICFJU19CUk9B RFdFTEwoZGV2KSkKIAkJZHNwY250ciB8PSBESVNQUExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7 CiAKLQlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7 CisJaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBmYiwgMCwgcm90YXRpb24pOwogCWludGVs X2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0KIAkJaW50ZWxfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwg JnksIGZiLCAwLAogCQkJCQkgIGZiLT5waXRjaGVzWzBdLCByb3RhdGlvbik7Ci0JbGluZWFyX29m ZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKKwogCWlmIChyb3RhdGlvbiA9PSBC SVQoRFJNX1JPVEFURV8xODApKSB7CiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7 CiAKIAkJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKSB7CiAJCQl4 ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKTsKIAkJCXkgKz0gKGludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOwotCi0JCQkvKiBGaW5kaW5nIHRoZSBsYXN0 IHBpeGVsIG9mIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGRpc3BsYXkKLQkJCWRhdGEgYW5kIGFkZGlu ZyB0byBsaW5lYXJfb2Zmc2V0Ki8KLQkJCWxpbmVhcl9vZmZzZXQgKz0KLQkJCQkoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCi0JCQkJKGludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsKIAkJfQogCX0KIAor CWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwgZmIsIDApOworCiAJ aW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeCA9IHg7CiAJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeSA9IHk7 CiAKQEAgLTI5NzMsNyArMzE0Niw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCUk5MTVfV1JJVEUoRFNQU1RSSURF KHBsYW5lKSwgZmItPnBpdGNoZXNbMF0pOwogCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSksCi0J CSAgIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICsgaW50ZWxfY3J0Yy0+ZHNwYWRkcl9v ZmZzZXQpOworCQkgICBpbnRlbF9zdXJmX2d0dF9vZmZzZXQoZmIsIDAsIHJvdGF0aW9uKSArCisJ CSAgIGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKIAlpZiAoSVNfSEFTV0VMTChkZXYpIHx8 IElTX0JST0FEV0VMTChkZXYpKSB7CiAJCUk5MTVfV1JJVEUoRFNQT0ZGU0VUKHBsYW5lKSwgKHkg PDwgMTYpIHwgeCk7CiAJfSBlbHNlIHsKQEAgLTMwMDAsMzAgKzMxNzQsMTUgQEAgdTMyIGludGVs X2ZiX3N0cmlkZV9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCX0KIH0KIAotdW5zaWduZWQgbG9uZyBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHN0cnVj dCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAotCQkJCSAgICAgdW5zaWduZWQgaW50IHBsYW5lKQordW5zaWduZWQgaW50 IGludGVsX3N1cmZfZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHBs YW5lLAorCQkJCSAgIHVuc2lnbmVkIGludCByb3RhdGlvbikKIHsKLQljb25zdCBzdHJ1Y3QgaTkx NV9nZ3R0X3ZpZXcgKnZpZXcgPSAmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsOwotCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwotCXVuc2lnbmVkIGNoYXIgKm9mZnNldDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKKwlzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcg dmlldzsKIAotCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoaW50ZWxfcGxhbmUtPmJhc2Uu c3RhdGUtPnJvdGF0aW9uKSkKLQkJdmlldyA9ICZpOTE1X2dndHRfdmlld19yb3RhdGVkOworCWlu dGVsX2ZpbGxfZmJfZ2d0dF92aWV3KCZ2aWV3LCBmYiwgcm90YXRpb24pOwogCi0Jdm1hID0gaTkx NV9nZW1fb2JqX3RvX2dndHRfdmlldyhvYmosIHZpZXcpOwotCWlmIChXQVJOKCF2bWEsICJnZ3R0 IHZtYSBmb3IgZGlzcGxheSBvYmplY3Qgbm90IGZvdW5kISAodmlldz0ldSlcbiIsCi0JCXZpZXct PnR5cGUpKQotCQlyZXR1cm4gLTE7Ci0KLQlvZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXZtYS0+ bm9kZS5zdGFydDsKLQotCWlmIChwbGFuZSA9PSAxKSB7Ci0JCW9mZnNldCArPSB2bWEtPmdndHRf dmlldy5yb3RhdGVkLnV2X3N0YXJ0X3BhZ2UgKgotCQkJICBQQUdFX1NJWkU7Ci0JfQotCi0JcmV0 dXJuICh1bnNpZ25lZCBsb25nKW9mZnNldDsKKwlyZXR1cm4gaTkxNV9nZW1fb2JqX2dndHRfb2Zm c2V0X3ZpZXcob2JqLCAmdmlldyk7CiB9CiAKIHN0YXRpYyB2b2lkIHNrbF9kZXRhY2hfc2NhbGVy KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBpbnQgaWQpCkBAIC0zMTQyLDE4ICszMzAx LDE2IEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKKwlz dHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiOwogCWJvb2wgdmlzaWJsZSA9IHRvX2lu dGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSktPnZpc2libGU7Ci0Jc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJdTMyIHBs YW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwotCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zm c2V0LCBwbGFuZV9zaXplOwogCXVuc2lnbmVkIGludCByb3RhdGlvbjsKLQlpbnQgeF9vZmZzZXQs IHlfb2Zmc2V0OwogCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwogCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlID0gaW50ZWxfY3J0Yy0+Y29uZmlnOwogCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Ci0JaW50IHNyY194ID0gMCwgc3JjX3kgPSAwLCBzcmNf dyA9IDAsIHNyY19oID0gMDsKLQlpbnQgZHN0X3ggPSAwLCBkc3RfeSA9IDAsIGRzdF93ID0gMCwg ZHN0X2ggPSAwOworCWludCBzcmNfdywgc3JjX2g7CisJaW50IGRzdF94LCBkc3RfeSwgZHN0X3cs IGRzdF9oOwogCWludCBzY2FsZXJfaWQgPSAtMTsKIAlpbnQgcGl4ZWxfc2l6ZTsKIApAQCAtMzE2 Niw2ICszMzIzLDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXJldHVybjsKIAl9CiAKKwlpbnRlbF9mYiA9IHRvX2lu dGVsX2ZyYW1lYnVmZmVyKGZiKTsKIAlwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAo ZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAKIAlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwK QEAgLTMxNzksMTYgKzMzMzcsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+ cm90YXRpb247CiAJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfcm90YXRpb24ocm90YXRpb24p OwogCi0Jb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKLQlzdHJpZGVfZGl2ID0gaW50ZWxfZmJfc3Ry aWRlX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyWzBdLAotCQkJCQkgICAgICAgZmIt PnBpeGVsX2Zvcm1hdCk7Ci0Jc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19p bnRlbF9wbGFuZShwbGFuZSksIG9iaiwgMCk7Ci0KLQlXQVJOX09OKGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+c3JjKSA9PSAwKTsKLQogCXNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2Fs ZXJfaWQ7Ci0Jc3JjX3ggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2OwotCXNyY195ID0gcGxh bmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKIAlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+c3JjKSA+PiAxNjsKIAlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PnNyYykgPj4gMTY7CiAJZHN0X3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwpAQCAtMzE5NiwzMSAr MzM0NSw0OCBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ ZHN0KTsKIAlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmRzdCk7CiAKLQlX QVJOX09OKHggIT0gc3JjX3ggfHwgeSAhPSBzcmNfeSk7Ci0KIAlpZiAoaW50ZWxfcm90YXRpb25f OTBfb3JfMjcwKHJvdGF0aW9uKSkgewotCQkvKiBzdHJpZGUgPSBTdXJmYWNlIGhlaWdodCBpbiB0 aWxlcyAqLwotCQl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KGRldl9wcml2LCBmYi0+ bW9kaWZpZXJbMF0sCi0JCQkJCQlwaXhlbF9zaXplKTsKLQkJc3RyaWRlID0gRElWX1JPVU5EX1VQ KGZiLT5oZWlnaHQsIHRpbGVfaGVpZ2h0KTsKLQkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hl aWdodCAtIHkgLSBzcmNfaDsKLQkJeV9vZmZzZXQgPSB4OwotCQlwbGFuZV9zaXplID0gKHNyY193 IC0gMSkgPDwgMTYgfCAoc3JjX2ggLSAxKTsKKwkJc3RydWN0IGRybV9yZWN0IHIgPSB7CisJCQku eDEgPSB4LAorCQkJLngyID0geCArIHNyY193LAorCQkJLnkxID0geSwKKwkJCS55MiA9IHkgKyBz cmNfaCwKKwkJfTsKKworCQkvKiBSb3RhdGUgc3JjIGNvb3JkaW5hdGVzIHRvIG1hdGNoIHJvdGF0 ZWQgR1RUIHZpZXcgKi8KKwkJZHJtX3JlY3Rfcm90YXRlKCZyLCBmYi0+d2lkdGgsIGZiLT5oZWln aHQsIEJJVChEUk1fUk9UQVRFXzI3MCkpOworCisJCXggPSByLngxOworCQl5ID0gci55MTsKKwkJ c3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcik7CisJCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZy KTsKKworCQlzdHJpZGVfZGl2ID0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2Rp ZmllclswXSwKKwkJCQkJICAgICAgIHBpeGVsX3NpemUpOworCQlzdHJpZGUgPSBpbnRlbF9mYi0+ cGxhbmVbMF0ucm90YXRlZC5waXRjaDsKIAl9IGVsc2UgewotCQlzdHJpZGUgPSBmYi0+cGl0Y2hl c1swXSAvIHN0cmlkZV9kaXY7Ci0JCXhfb2Zmc2V0ID0geDsKLQkJeV9vZmZzZXQgPSB5OwotCQlw bGFuZV9zaXplID0gKHNyY19oIC0gMSkgPDwgMTYgfCAoc3JjX3cgLSAxKTsKKwkJc3RyaWRlX2Rp diA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwK KwkJCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKKwkJc3RyaWRlID0gZmItPnBpdGNoZXNb MF07CiAJfQotCXBsYW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7CiAKLQlp bnRlbF9jcnRjLT5hZGp1c3RlZF94ID0geF9vZmZzZXQ7Ci0JaW50ZWxfY3J0Yy0+YWRqdXN0ZWRf eSA9IHlfb2Zmc2V0OworCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgZmIsIDAsIHJvdGF0 aW9uKTsKKwlzdXJmX2FkZHIgPSBpbnRlbF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgZmIs IDAsCisJCQkJCSAgICAgIHN0cmlkZSwgcm90YXRpb24pOworCisJLyogU2l6ZXMgYXJlIDAgYmFz ZWQgKi8KKwlzcmNfdy0tOworCXNyY19oLS07CisJZHN0X3ctLTsKKwlkc3RfaC0tOworCisJaW50 ZWxfY3J0Yy0+YWRqdXN0ZWRfeCA9IHg7CisJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeSA9IHk7CiAK IAlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgcGxhbmVfY3RsKTsKLQlJOTE1X1dSSVRF KFBMQU5FX09GRlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zmc2V0KTsKLQlJOTE1X1dSSVRFKFBMQU5F X1NJWkUocGlwZSwgMCksIHBsYW5lX3NpemUpOwotCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBp cGUsIDApLCBzdHJpZGUpOworCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIDApLCAoeSA8 PCAxNikgfCB4KTsKKwlJOTE1X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCAwKSwgc3RyaWRlIC8g c3RyaWRlX2Rpdik7CisJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLCAoc3JjX2ggPDwg MTYpIHwgc3JjX3cpOwogCiAJaWYgKHNjYWxlcl9pZCA+PSAwKSB7CiAJCXVpbnQzMl90IHBzX2N0 cmwgPSAwOwpAQCAtMzIzNyw3ICszNDAzLDggQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVf cHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCUk5MTVfV1JJVEUoUExBTkVf UE9TKHBpcGUsIDApLCAoZHN0X3kgPDwgMTYpIHwgZHN0X3gpOwogCX0KIAotCUk5MTVfV1JJVEUo UExBTkVfU1VSRihwaXBlLCAwKSwgc3VyZl9hZGRyKTsKKwlJOTE1X1dSSVRFKFBMQU5FX1NVUkYo cGlwZSwgMCksCisJCSAgIGludGVsX3N1cmZfZ3R0X29mZnNldChmYiwgMCwgcm90YXRpb24pICsg c3VyZl9hZGRyKTsKIAogCVBPU1RJTkdfUkVBRChQTEFORV9TVVJGKHBpcGUsIDApKTsKIH0KQEAg LTExNTIxLDggKzExNjg4LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYgKHJldCkKIAkJZ290byBjbGVhbnVwX3BlbmRpbmc7CiAK LQl3b3JrLT5ndHRfb2Zmc2V0ID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19pbnRlbF9wbGFu ZShwcmltYXJ5KSwKLQkJCQkJCSAgb2JqLCAwKTsKKwl3b3JrLT5ndHRfb2Zmc2V0ID0gaW50ZWxf c3VyZl9ndHRfb2Zmc2V0KGZiLCAwLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOwogCXdvcmst Pmd0dF9vZmZzZXQgKz0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CiAKIAlpZiAobW1pb19m bGlwKSB7CkBAIC0xNDMxOSw3ICsxNDQ4NSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZm ZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Ci0JdW5zaWduZWQgaW50IGFsaWduZWRfaGVpZ2h0OwogCWludCByZXQ7CiAJ dTMyIHBpdGNoX2xpbWl0LCBzdHJpZGVfYWxpZ25tZW50OwogCkBAIC0xNDQ0MywxNiArMTQ2MDgs MTMgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWFsaWduZWRfaGVpZ2h0ID0gaW50 ZWxfZmJfYWxpZ25faGVpZ2h0KGRldiwgbW9kZV9jbWQtPmhlaWdodCwKLQkJCQkJICAgICAgIG1v ZGVfY21kLT5waXhlbF9mb3JtYXQsCi0JCQkJCSAgICAgICBtb2RlX2NtZC0+bW9kaWZpZXJbMF0p OwotCS8qIEZJWE1FIGRybSBoZWxwZXIgZm9yIHNpemUgY2hlY2tzIChlc3BlY2lhbGx5IHBsYW5h ciBmb3JtYXRzKT8gKi8KLQlpZiAob2JqLT5iYXNlLnNpemUgPCBhbGlnbmVkX2hlaWdodCAqIG1v ZGVfY21kLT5waXRjaGVzWzBdKQotCQlyZXR1cm4gLUVJTlZBTDsKLQogCWRybV9oZWxwZXJfbW9k ZV9maWxsX2ZiX3N0cnVjdCgmaW50ZWxfZmItPmJhc2UsIG1vZGVfY21kKTsKIAlpbnRlbF9mYi0+ b2JqID0gb2JqOwogCisJcmV0ID0gaW50ZWxfZmlsbF9mYl9pbmZvKGRldl9wcml2LCAmaW50ZWxf ZmItPmJhc2UpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlyZXQgPSBkcm1fZnJhbWVi dWZmZXJfaW5pdChkZXYsICZpbnRlbF9mYi0+YmFzZSwgJmludGVsX2ZiX2Z1bmNzKTsKIAlpZiAo cmV0KSB7CiAJCURSTV9FUlJPUigiZnJhbWVidWZmZXIgaW5pdCBmYWlsZWQgJWRcbiIsIHJldCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDM2ZDA0OWQuLjM5NWFmZDMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMTgsNiArMTE4LDE5IEBAIGVudW0gaW50ZWxfb3V0cHV0 X3R5cGUgewogc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyIHsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyIGJhc2U7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaW50 ZWxfcm90YXRpb25faW5mbyBpbmZvOworCisJc3RydWN0IHsKKwkJc3RydWN0IHsKKwkJCS8qIHBp eGVscyAqLworCQkJdW5zaWduZWQgaW50IHgsIHk7CisJCX0gbm9ybWFsOworCQlzdHJ1Y3Qgewor CQkJLyogcGl4ZWxzICovCisJCQl1bnNpZ25lZCBpbnQgeCwgeTsKKwkJCXVuc2lnbmVkIGludCBw aXRjaDsKKwkJfSByb3RhdGVkOworCX0gcGxhbmVbMl07CiB9OwogCiBzdHJ1Y3QgaW50ZWxfZmJk ZXYgewpAQCAtMTAyOCw2ICsxMDQxLDEyIEBAIHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2F1ZGlvX2Nv bXBvbmVudF9jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8q IGludGVsX2Rpc3BsYXkuYyAqLwordW5zaWduZWQgaW50IGludGVsX3JvdGF0aW9uX2luZm9fc2l6 ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqaW5mbyk7Cit1bnNpZ25lZCBpbnQg aW50ZWxfZmJfeHlfdG9fbGluZWFyKGludCB4LCBpbnQgeSwKKwkJCQkgICBjb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHBsYW5lKTsKK3ZvaWQgaW50ZWxfYWRkX2ZiX29mZnNl dHMoaW50ICp4LCBpbnQgKnksCisJCQkgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LCBpbnQgcGxhbmUsCisJCQkgIHVuc2lnbmVkIGludCByb3RhdGlvbik7CiBleHRlcm4gY29uc3Qg c3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jczsKIGJvb2wgaW50ZWxfaGFz X3BlbmRpbmdfZmJfdW5waW4oc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgaW50ZWxfcGNo X3Jhd2NsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKQEAgLTExMzQsMTAgKzExNTMsMTAgQEAg dm9pZCBhc3NlcnRfZmRpX3J4X3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiB2b2lkIGFzc2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51 bSBwaXBlIHBpcGUsIGJvb2wgc3RhdGUpOwogI2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQs IHApIGFzc2VydF9waXBlKGQsIHAsIHRydWUpCiAjZGVmaW5lIGFzc2VydF9waXBlX2Rpc2FibGVk KGQsIHApIGFzc2VydF9waXBlKGQsIHAsIGZhbHNlKQotdW5zaWduZWQgbG9uZyBpbnRlbF9jb21w dXRlX3BhZ2Vfb2Zmc2V0KGludCAqeCwgaW50ICp5LAotCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwgaW50IHBsYW5lLAotCQkJCQl1bnNpZ25lZCBpbnQgcGl0Y2gsCi0JCQkJ CXVuc2lnbmVkIGludCByb3RhdGlvbik7Cit1bnNpZ25lZCBpbnQgaW50ZWxfY29tcHV0ZV9wYWdl X29mZnNldChpbnQgKngsIGludCAqeSwKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsIGludCBwbGFuZSwKKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHBpdGNoLAor CQkJCSAgICAgICB1bnNpZ25lZCBpbnQgcm90YXRpb24pOwogdm9pZCBpbnRlbF9wcmVwYXJlX3Jl c2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGhzd19lbmFibGVfcGM4KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CkBAIC0xMTc0LDkgKzExOTMsOCBAQCB2b2lkIGludGVsX21v ZGVzZXRfcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpm aWxlKTsKIGludCBza2xfdXBkYXRlX3NjYWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKTsKIGludCBza2xfbWF4X3NjYWxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAKLXVuc2lnbmVkIGxvbmcg aW50ZWxfcGxhbmVfb2JqX29mZnNldChzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lLAot CQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgICAgIHVuc2ln bmVkIGludCBwbGFuZSk7Cit1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9ndHRfb2Zmc2V0KHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCisJCQkJICAgdW5zaWduZWQgaW50IHJv dGF0aW9uKTsKIAogdTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90IHBpeGVsX2Zvcm1h dCk7CiB1MzIgc2tsX3BsYW5lX2N0bF90aWxpbmcodWludDY0X3QgZmJfbW9kaWZpZXIpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCA4MjhjM2ViLi5kOWQzN2IwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpAQCAtMTg4LDE3ICsxODgsMTUgQEAgc2tsX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZHJtX3BsYW5lLT5kZXY7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUoZHJtX3BsYW5lKTsKLQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKKwlzdHJ1Y3Qg aW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOwog CWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CiAJY29uc3QgaW50IHBsYW5lID0g aW50ZWxfcGxhbmUtPnBsYW5lICsgMTsKIAl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2LCBzdHJp ZGU7CiAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9y bWF0LCAwKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0K IAkJJnRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZS0+c3RhdGUpLT5ja2V5OwotCXVuc2ln bmVkIGxvbmcgc3VyZl9hZGRyOwotCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFu ZV9zaXplOworCXVuc2lnbmVkIGludCBzdXJmX2FkZHI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9u OwotCWludCB4X29mZnNldCwgeV9vZmZzZXQ7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWc7CiAJaW50IHNjYWxlcl9pZDsK IApAQCAtMjE1LDE3ICsyMTMsOCBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAgICAgICBwaXhlbF9zaXpl LCB0cnVlLAogCQkJCSAgICAgICBzcmNfdyAhPSBjcnRjX3cgfHwgc3JjX2ggIT0gY3J0Y19oKTsK IAotCXN0cmlkZV9kaXYgPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldl9wcml2LCBmYi0+ bW9kaWZpZXJbMF0sCi0JCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKLQogCXNjYWxlcl9p ZCA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZS0+c3RhdGUpLT5zY2FsZXJfaWQ7CiAK LQkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwotCXNyY193LS07Ci0Jc3JjX2gtLTsKLQljcnRjX3ct LTsKLQljcnRjX2gtLTsKLQogCWlmIChrZXktPmZsYWdzKSB7CiAJCUk5MTVfV1JJVEUoUExBTkVf S0VZVkFMKHBpcGUsIHBsYW5lKSwga2V5LT5taW5fdmFsdWUpOwogCQlJOTE1X1dSSVRFKFBMQU5F X0tFWU1BWChwaXBlLCBwbGFuZSksIGtleS0+bWF4X3ZhbHVlKTsKQEAgLTIzNywyNyArMjI2LDQz IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJZWxzZSBpZiAoa2V5LT5mbGFncyAmIEk5MTVfU0VUX0NPTE9SS0VZ X1NPVVJDRSkKIAkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9LRVlfRU5BQkxFX1NPVVJDRTsKIAot CXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQoaW50ZWxfcGxhbmUsIG9iaiwgMCk7 Ci0KIAlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewotCQkvKiBzdHJp ZGU6IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCi0JCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGls ZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwKLQkJCQkJCXBpeGVsX3NpemUpOwot CQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwotCQlwbGFu ZV9zaXplID0gKHNyY193IDw8IDE2KSB8IHNyY19oOwotCQl4X29mZnNldCA9IHN0cmlkZSAqIHRp bGVfaGVpZ2h0IC0geSAtIChzcmNfaCArIDEpOwotCQl5X29mZnNldCA9IHg7CisJCXN0cnVjdCBk cm1fcmVjdCByID0geworCQkJLngxID0geCwKKwkJCS54MiA9IHggKyBzcmNfdywKKwkJCS55MSA9 IHksCisJCQkueTIgPSB5ICsgc3JjX2gsCisJCX07CisKKwkJLyogUm90YXRlIHNyYyBjb29yZGlu YXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCisJCWRybV9yZWN0X3JvdGF0ZSgmciwg ZmItPndpZHRoLCBmYi0+aGVpZ2h0LCBCSVQoRFJNX1JPVEFURV8yNzApKTsKKworCQl4ID0gci54 MTsKKwkJeSA9IHIueTE7CisJCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnIpOworCQlzcmNfaCA9 IGRybV9yZWN0X2hlaWdodCgmcik7CisKKwkJc3RyaWRlX2RpdiA9IGludGVsX3RpbGVfaGVpZ2h0 KGRldl9wcml2LCBmYi0+bW9kaWZpZXJbMF0sIHBpeGVsX3NpemUpOworCQlzdHJpZGUgPSBpbnRl bF9mYi0+cGxhbmVbMF0ucm90YXRlZC5waXRjaDsKIAl9IGVsc2UgewotCQlzdHJpZGUgPSBmYi0+ cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXY7Ci0JCXBsYW5lX3NpemUgPSAoc3JjX2ggPDwgMTYpIHwg c3JjX3c7Ci0JCXhfb2Zmc2V0ID0geDsKLQkJeV9vZmZzZXQgPSB5OworCQlzdHJpZGVfZGl2ID0g aW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyWzBdLAorCQkJ CQkJICAgICAgIGZiLT5waXhlbF9mb3JtYXQpOworCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXTsK IAl9Ci0JcGxhbmVfb2Zmc2V0ID0geV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsKIAotCUk5MTVf V1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lKSwgcGxhbmVfb2Zmc2V0KTsKLQlJOTE1X1dS SVRFKFBMQU5FX1NUUklERShwaXBlLCBwbGFuZSksIHN0cmlkZSk7Ci0JSTkxNV9XUklURShQTEFO RV9TSVpFKHBpcGUsIHBsYW5lKSwgcGxhbmVfc2l6ZSk7CisJaW50ZWxfYWRkX2ZiX29mZnNldHMo JngsICZ5LCBmYiwgMCwgcm90YXRpb24pOworCXN1cmZfYWRkciA9IGludGVsX2NvbXB1dGVfcGFn ZV9vZmZzZXQoJngsICZ5LCBmYiwgMCwKKwkJCQkJICAgICAgc3RyaWRlLCByb3RhdGlvbik7CisK KwkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLworCXNyY193LS07CisJc3JjX2gtLTsKKwljcnRjX3ct LTsKKwljcnRjX2gtLTsKKworCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lKSwg KHkgPDwgMTYpIHwgeCk7CisJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgcGxhbmUpLCBz dHJpZGUgLyBzdHJpZGVfZGl2KTsKKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUp LCAoc3JjX2ggPDwgMTYpIHwgc3JjX3cpOwogCiAJLyogcHJvZ3JhbSBwbGFuZSBzY2FsZXIgKi8K IAlpZiAoc2NhbGVyX2lkID49IDApIHsKQEAgLTI3OSw3ICsyODQsOCBAQCBza2xfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAog CX0KIAogCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIHBsYW5lKSwgcGxhbmVfY3RsKTsKLQlJ OTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpLCBzdXJmX2FkZHIpOworCUk5MTVfV1JJ VEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSksCisJCSAgIGludGVsX3N1cmZfZ3R0X29mZnNldChm YiwgMCwgcm90YXRpb24pICsgc3VyZl9hZGRyKTsKIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihw aXBlLCBwbGFuZSkpOwogfQogCkBAIC0zNTUsOCArMzYxLDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpbnQgcGxh bmUgPSBpbnRlbF9wbGFuZS0+cGxhbmU7CiAJdTMyIHNwcmN0bDsKIAl1bnNpZ25lZCBpbnQgcm90 YXRpb24gPSBkcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKLQl1bnNpZ25lZCBsb25nIHNwcnN1cmZf b2Zmc2V0LCBsaW5lYXJfb2Zmc2V0OwotCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFu ZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CisJdW5zaWduZWQgaW50IHNwcnN1cmZfb2Zmc2V0 LCBsaW5lYXJfb2Zmc2V0OwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5 ICprZXkgPQogCQkmdG9faW50ZWxfcGxhbmVfc3RhdGUoZHBsYW5lLT5zdGF0ZSktPmNrZXk7CiAK QEAgLTQyMCwxOSArNDI1LDE5IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq ZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJY3J0Y193LS07CiAJY3J0Y19oLS07CiAK LQlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7CisJ aW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBmYiwgMCwgcm90YXRpb24pOwogCXNwcnN1cmZf b2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIGZiLCAwLAogCQkJCQkJ ICAgZmItPnBpdGNoZXNbMF0sIHJvdGF0aW9uKTsKLQlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZf b2Zmc2V0OwogCiAJaWYgKHJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKIAkJc3By Y3RsIHw9IFNQX1JPVEFURV8xODA7CiAKIAkJeCArPSBzcmNfdzsKIAkJeSArPSBzcmNfaDsKLQkJ bGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBdICsgc3JjX3cgKiBwaXhlbF9z aXplOwogCX0KIAorCWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwg ZmIsIDApOworCiAJaWYgKGtleS0+ZmxhZ3MpIHsKIAkJSTkxNV9XUklURShTUEtFWU1JTlZBTChw aXBlLCBwbGFuZSksIGtleS0+bWluX3ZhbHVlKTsKIAkJSTkxNV9XUklURShTUEtFWU1BWFZBTChw aXBlLCBwbGFuZSksIGtleS0+bWF4X3ZhbHVlKTsKQEAgLTQ1Nyw4ICs0NjIsOCBAQCB2bHZfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRj LAogCiAJSTkxNV9XUklURShTUFNJWkUocGlwZSwgcGxhbmUpLCAoY3J0Y19oIDw8IDE2KSB8IGNy dGNfdyk7CiAJSTkxNV9XUklURShTUENOVFIocGlwZSwgcGxhbmUpLCBzcHJjdGwpOwotCUk5MTVf V1JJVEUoU1BTVVJGKHBpcGUsIHBsYW5lKSwgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikg KwotCQkgICBzcHJzdXJmX29mZnNldCk7CisJSTkxNV9XUklURShTUFNVUkYocGlwZSwgcGxhbmUp LAorCQkgICBpbnRlbF9zdXJmX2d0dF9vZmZzZXQoZmIsIDAsIHJvdGF0aW9uKSArIHNwcnN1cmZf b2Zmc2V0KTsKIAlQT1NUSU5HX1JFQUQoU1BTVVJGKHBpcGUsIHBsYW5lKSk7CiB9CiAKQEAgLTQ5 Miw3ICs0OTcsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlw ZTsKIAl1MzIgc3ByY3RsLCBzcHJzY2FsZSA9IDA7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKLQl1bnNpZ25lZCBsb25nIHNwcnN1cmZfb2Zmc2V0LCBs aW5lYXJfb2Zmc2V0OworCXVuc2lnbmVkIGludCBzcHJzdXJmX29mZnNldCwgbGluZWFyX29mZnNl dDsKIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3Jt YXQsIDApOwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPQog CQkmdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKS0+Y2tleTsKQEAgLTU1MiwxMCAr NTU3LDkgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCWlmIChjcnRjX3cgIT0gc3JjX3cgfHwgY3J0Y19oICE9IHNyY19o KQogCQlzcHJzY2FsZSA9IFNQUklURV9TQ0FMRV9FTkFCTEUgfCAoc3JjX3cgPDwgMTYpIHwgc3Jj X2g7CiAKLQlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3Np emU7CisJaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBmYiwgMCwgcm90YXRpb24pOwogCXNw cnN1cmZfb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIGZiLCAwLAog CQkJCQkJICAgZmItPnBpdGNoZXNbMF0sIHJvdGF0aW9uKTsKLQlsaW5lYXJfb2Zmc2V0IC09IHNw cnN1cmZfb2Zmc2V0OwogCiAJaWYgKHJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsK IAkJc3ByY3RsIHw9IFNQUklURV9ST1RBVEVfMTgwOwpAQCAtNTY0LDExICs1NjgsMTEgQEAgaXZi X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAogCQlpZiAoIUlTX0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKIAkJ CXggKz0gc3JjX3c7CiAJCQl5ICs9IHNyY19oOwotCQkJbGluZWFyX29mZnNldCArPSBzcmNfaCAq IGZiLT5waXRjaGVzWzBdICsKLQkJCQlzcmNfdyAqIHBpeGVsX3NpemU7CiAJCX0KIAl9CiAKKwls aW5lYXJfb2Zmc2V0ID0gaW50ZWxfZmJfeHlfdG9fbGluZWFyKHgsIHksIGZiLCAwKTsKKwogCWlm IChrZXktPmZsYWdzKSB7CiAJCUk5MTVfV1JJVEUoU1BSS0VZVkFMKHBpcGUpLCBrZXktPm1pbl92 YWx1ZSk7CiAJCUk5MTVfV1JJVEUoU1BSS0VZTUFYKHBpcGUpLCBrZXktPm1heF92YWx1ZSk7CkBA IC01OTcsNyArNjAxLDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlJOTE1X1dSSVRFKFNQUlNDQUxFKHBpcGUpLCBz cHJzY2FsZSk7CiAJSTkxNV9XUklURShTUFJDVEwocGlwZSksIHNwcmN0bCk7CiAJSTkxNV9XUklU RShTUFJTVVJGKHBpcGUpLAotCQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIHNw cnN1cmZfb2Zmc2V0KTsKKwkJICAgaW50ZWxfc3VyZl9ndHRfb2Zmc2V0KGZiLCAwLCByb3RhdGlv bikgKyBzcHJzdXJmX29mZnNldCk7CiAJUE9TVElOR19SRUFEKFNQUlNVUkYocGlwZSkpOwogfQog CkBAIC02MzIsNyArNjM2LDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwogCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7 CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKLQl1bnNp Z25lZCBsb25nIGR2c3N1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0OworCXVuc2lnbmVkIGludCBk dnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKIAl1MzIgZHZzY250ciwgZHZzc2NhbGU7CiAJ aW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAw KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0KQEAgLTY4 OSwxOSArNjkzLDE5IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoY3J0Y193ICE9IHNyY193IHx8IGNydGNfaCAh PSBzcmNfaCkKIAkJZHZzc2NhbGUgPSBEVlNfU0NBTEVfRU5BQkxFIHwgKHNyY193IDw8IDE2KSB8 IHNyY19oOwogCi0JbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBwaXhl bF9zaXplOworCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgZmIsIDAsIHJvdGF0aW9uKTsK IAlkdnNzdXJmX29mZnNldCA9IGludGVsX2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCBmYiwg MCwKIAkJCQkJCSAgIGZiLT5waXRjaGVzWzBdLCByb3RhdGlvbik7Ci0JbGluZWFyX29mZnNldCAt PSBkdnNzdXJmX29mZnNldDsKIAogCWlmIChyb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODAp KSB7CiAJCWR2c2NudHIgfD0gRFZTX1JPVEFURV8xODA7CiAKIAkJeCArPSBzcmNfdzsKIAkJeSAr PSBzcmNfaDsKLQkJbGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBdICsgc3Jj X3cgKiBwaXhlbF9zaXplOwogCX0KIAorCWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19s aW5lYXIoeCwgeSwgZmIsIDApOworCiAJaWYgKGtleS0+ZmxhZ3MpIHsKIAkJSTkxNV9XUklURShE VlNLRVlWQUwocGlwZSksIGtleS0+bWluX3ZhbHVlKTsKIAkJSTkxNV9XUklURShEVlNLRVlNQVgo cGlwZSksIGtleS0+bWF4X3ZhbHVlKTsKQEAgLTcyNSw3ICs3MjksNyBAQCBpbGtfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJSTkx NV9XUklURShEVlNTQ0FMRShwaXBlKSwgZHZzc2NhbGUpOwogCUk5MTVfV1JJVEUoRFZTQ05UUihw aXBlKSwgZHZzY250cik7CiAJSTkxNV9XUklURShEVlNTVVJGKHBpcGUpLAotCQkgICBpOTE1X2dl bV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGR2c3N1cmZfb2Zmc2V0KTsKKwkJICAgaW50ZWxfc3Vy Zl9ndHRfb2Zmc2V0KGZiLCAwLCByb3RhdGlvbikgKyBkdnNzdXJmX29mZnNldCk7CiAJUE9TVElO R19SRUFEKERWU1NVUkYocGlwZSkpOwogfQogCi0tIAoyLjQuOQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK