From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 26/33] drm/i915: Track pinned VMA Date: Sun, 7 Aug 2016 15:45:34 +0100 Message-ID: <1470581141-14432-27-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24FC86E2EC for ; Sun, 7 Aug 2016 14:46:19 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id q128so11080352wma.1 for ; Sun, 07 Aug 2016 07:46:19 -0700 (PDT) In-Reply-To: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> 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 VHJlYXQgdGhlIFZNQSBhcyB0aGUgcHJpbWFyeSBzdHJ1Y3QgcmVzcG9uc2libGUgZm9yIHRyYWNr aW5nIGJpbmRpbmdzCmludG8gdGhlIEdQVSdzIFZNLiBUaGF0IGlzIHdlIHdhbnQgdG8gdHJlYXQg dGhlIFZNQSByZXR1cm5lZCBhZnRlciB3ZQpwaW4gYW4gb2JqZWN0IGludG8gdGhlIFZNIGFzIHRo ZSBjb29raWUgd2UgaG9sZCBhbmQgZXZlbnR1YWxseSByZWxlYXNlCndoZW4gdW5waW5uaW5nLiBE b2luZyBzbyBlbGltaW5hdGVzIHRoZSBhbWJpZ3VpdHkgaW4gcGlubmluZyB0aGUgb2JqZWN0CmFu ZCB0aGVuIHNlYXJjaGluZyBmb3IgdGhlIHJlbGV2YW50IHBpbiBsYXRlci4KClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDYwICsrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAyMjUgKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8 ICA2MCArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyAgICAg IHwgIDE0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCAg NjcgKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAg fCAgMTQgLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgIHwgICAyICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAgICAgfCAgIDIgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jICAgICB8ICAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgIHwgIDYyICsrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgfCAgNTUgKysrKy0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgIHwgICA1ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICAgICB8ICAxOSArLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8ICAyMSArLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYyAgICAgICB8ICAzMiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYyAgICAgICAgfCAgIDggKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDI1NiBp bnNlcnRpb25zKCspLCAzOTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwppbmRleCBjZjhhOGRmMDdiZWQuLjVmMDBkNjM0NzkwNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgY2hhciBnZXRfdGlsaW5n X2ZsYWcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAogc3RhdGljIGNoYXIgZ2V0 X2dsb2JhbF9mbGFnKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0JcmV0dXJu IGk5MTVfZ2VtX29ial90b19nZ3R0KG9iaikgPyAnZycgOiAnICc7CisJcmV0dXJuIGk5MTVfZ2Vt X29iamVjdF90b19nZ3R0KG9iaiwgTlVMTCkgPyAgJ2cnIDogJyAnOwogfQogCiBzdGF0aWMgY2hh ciBnZXRfcGluX21hcHBlZF9mbGFnKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA0ZmFlMDY1OTk0MWYuLmVkOWQ4NzI4NTliMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMDY2LDcgKzMwNjYsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoCiB2b2lkIGk5 MTVfZ2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwgc3RydWN0IGRy bV9maWxlICpmaWxlKTsKIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopOwogCi1pbnQgX19tdXN0X2NoZWNrCitzdHJ1Y3QgaTkxNV92bWEgKiBfX211 c3RfY2hlY2sKIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQkJIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywKIAkJCSB1 NjQgc2l6ZSwKQEAgLTMyNjIsMTIgKzMyNjIsMTEgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19n dHRfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJICBib29sIHdy aXRlKTsKIGludCBfX211c3RfY2hlY2sKIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFp bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHdyaXRlKTsKLWludCBfX211 c3RfY2hlY2sKK3N0cnVjdCBpOTE1X3ZtYSAqIF9fbXVzdF9jaGVjawogaTkxNV9nZW1fb2JqZWN0 X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJ CQkJICAgICB1MzIgYWxpZ25tZW50LAogCQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92 aWV3ICp2aWV3KTsKLXZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFu ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJCQkgICAgICBjb25zdCBzdHJ1 Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwordm9pZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJv bV9kaXNwbGF5X3BsYW5lKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKIGludCBpOTE1X2dlbV9vYmpl Y3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQlpbnQg YWxpZ24pOwogaW50IGk5MTVfZ2VtX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9maWxlICpmaWxlKTsKQEAgLTMyODcsNjMgKzMyODYsMzQgQEAgc3RydWN0IGRybV9nZW1f b2JqZWN0ICppOTE1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHN0 cnVjdCBkbWFfYnVmICppOTE1X2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkJCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosIGludCBmbGFncyk7CiAKLXU2 NCBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbywKLQkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldyk7Ci11NjQgaTkx NV9nZW1fb2JqX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKLQkJCXN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKLXN0YXRpYyBpbmxpbmUgdTY0Ci1pOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8pCi17Ci0JcmV0dXJu IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldF92aWV3KG8sICZpOTE1X2dndHRfdmlld19ub3JtYWwp OwotfQotCi1ib29sIGk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kX3ZpZXcoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm8sCi0JCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcp OwotYm9vbCBpOTE1X2dlbV9vYmpfYm91bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8s Ci0JCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Ci0KIHN0cnVjdCBpOTE1X3ZtYSAq CiBpOTE1X2dlbV9vYmpfdG9fdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0J CSAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Ci1zdHJ1Y3QgaTkxNV92bWEgKgot aTkxNV9nZW1fb2JqX3RvX2dndHRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAotCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOworCQkgICAgIHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRf dmlldyAqdmlldyk7CiAKIHN0cnVjdCBpOTE1X3ZtYSAqCiBpOTE1X2dlbV9vYmpfbG9va3VwX29y X2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgIHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKLXN0cnVjdCBpOTE1X3ZtYSAqCi1pOTE1X2dlbV9v YmpfbG9va3VwX29yX2NyZWF0ZV9nZ3R0X3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAotCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwotCi1z dGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3ZtYSAqCi1pOTE1X2dlbV9vYmpfdG9fZ2d0dChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewotCXJldHVybiBpOTE1X2dlbV9vYmpfdG9f Z2d0dF92aWV3KG9iaiwgJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7Ci19Ci1ib29sIGk5MTVfZ2Vt X29ial9pc19waW5uZWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CisJCQkJICBz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dn dHRfdmlldyAqdmlldyk7CiAKLS8qIFNvbWUgR0dUVCBWTSBoZWxwZXJzICovCiBzdGF0aWMgaW5s aW5lIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICoKIGk5MTVfdm1fdG9fcHBndHQoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCiB7CiAJcmV0dXJuIGNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5 MTVfaHdfcHBndHQsIGJhc2UpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fb2Jq X2dndHRfYm91bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyBpbmxp bmUgc3RydWN0IGk5MTVfdm1hICoKK2k5MTVfZ2VtX29iamVjdF90b19nZ3R0KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQljb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZp ZXcpCiB7Ci0JcmV0dXJuIGk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kX3ZpZXcob2JqLCAmaTkxNV9n Z3R0X3ZpZXdfbm9ybWFsKTsKKwlyZXR1cm4gaTkxNV9nZW1fb2JqX3RvX3ZtYShvYmosICZ0b19p OTE1KG9iai0+YmFzZS5kZXYpLT5nZ3R0LmJhc2UsIHZpZXcpOwogfQogCi11bnNpZ25lZCBsb25n Ci1pOTE1X2dlbV9vYmpfZ2d0dF9zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop OwotCi12b2lkIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluX3ZpZXcoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAq dmlldyk7Ci1zdGF0aWMgaW5saW5lIHZvaWQKLWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv bmcKK2k5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbywKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCiB7Ci0JaTkx NV9nZW1fb2JqZWN0X2dndHRfdW5waW5fdmlldyhvYmosICZpOTE1X2dndHRfdmlld19ub3JtYWwp OworCXJldHVybiBpOTE1X2dlbV9vYmplY3RfdG9fZ2d0dChvLCB2aWV3KS0+bm9kZS5zdGFydDsK IH0KIAogLyogaTkxNV9nZW1fZmVuY2UuYyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXgg Y2Y5NGM2ZWQwZmY1Li4yNDY0MWU0YWVhNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAt NzM3LDE0ICs3MzcsMTUgQEAgaTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7CisJc3RydWN0IGk5 MTVfdm1hICp2bWE7CiAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7CiAJY2hhciBfX3VzZXIgKnVz ZXJfZGF0YTsKIAl1aW50NjRfdCByZW1haW47CiAJdWludDY0X3Qgb2Zmc2V0OwogCWludCByZXQ7 CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLCBQSU5f TUFQUEFCTEUpOwotCWlmIChyZXQpIHsKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4o b2JqLCBOVUxMLCAwLCAwLCBQSU5fTUFQUEFCTEUpOworCWlmIChJU19FUlIodm1hKSkgewogCQly ZXQgPSBpbnNlcnRfbWFwcGFibGVfbm9kZShkZXZfcHJpdiwgJm5vZGUsIFBBR0VfU0laRSk7CiAJ CWlmIChyZXQpCiAJCQlnb3RvIG91dDsKQEAgLTc1Nyw3ICs3NTgsNyBAQCBpOTE1X2dlbV9ndHRf cHJlYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCQlpOTE1X2dlbV9vYmplY3RfcGluX3Bh Z2VzKG9iaik7CiAJfSBlbHNlIHsKLQkJbm9kZS5zdGFydCA9IGk5MTVfZ2VtX29ial9nZ3R0X29m ZnNldChvYmopOworCQlub2RlLnN0YXJ0ID0gdm1hLT5ub2RlLnN0YXJ0OwogCQlub2RlLmFsbG9j YXRlZCA9IGZhbHNlOwogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7CiAJ CWlmIChyZXQpCkBAIC04MzgsNyArODM5LDcgQEAgb3V0X3VucGluOgogCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fcGFnZXMob2JqKTsKIAkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwogCX0g ZWxzZSB7Ci0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7CisJCWk5MTVfdm1hX3Vu cGluKHZtYSk7CiAJfQogb3V0OgogCXJldHVybiByZXQ7CkBAIC0xMDM2LDYgKzEwMzcsNyBAQCBp OTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiB7 CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0OwogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXN0cnVj dCBkcm1fbW1fbm9kZSBub2RlOwogCXVpbnQ2NF90IHJlbWFpbiwgb2Zmc2V0OwogCWNoYXIgX191 c2VyICp1c2VyX2RhdGE7CkBAIC0xMDQ1LDkgKzEwNDcsOSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRl X2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJaWYgKGk5MTVfZ2VtX29iamVj dF9pc190aWxlZChvYmopKQogCQlyZXR1cm4gLUVGQVVMVDsKIAotCXJldCA9IGk5MTVfZ2VtX29i amVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIDAsCisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dn dHRfcGluKG9iaiwgTlVMTCwgMCwgMCwKIAkJCQkgICAgICAgUElOX01BUFBBQkxFIHwgUElOX05P TkJMT0NLKTsKLQlpZiAocmV0KSB7CisJaWYgKElTX0VSUih2bWEpKSB7CiAJCXJldCA9IGluc2Vy dF9tYXBwYWJsZV9ub2RlKGk5MTUsICZub2RlLCBQQUdFX1NJWkUpOwogCQlpZiAocmV0KQogCQkJ Z290byBvdXQ7CkBAIC0xMDYwLDcgKzEwNjIsNyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIAkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9w YWdlcyhvYmopOwogCX0gZWxzZSB7Ci0JCW5vZGUuc3RhcnQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9v ZmZzZXQob2JqKTsKKwkJbm9kZS5zdGFydCA9IHZtYS0+bm9kZS5zdGFydDsKIAkJbm9kZS5hbGxv Y2F0ZWQgPSBmYWxzZTsKIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmopOwog CQlpZiAocmV0KQpAQCAtMTE0OCw3ICsxMTUwLDcgQEAgb3V0X3VucGluOgogCQlpOTE1X2dlbV9v YmplY3RfdW5waW5fcGFnZXMob2JqKTsKIAkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwog CX0gZWxzZSB7Ci0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7CisJCWk5MTVfdm1h X3VucGluKHZtYSk7CiAJfQogb3V0OgogCXJldHVybiByZXQ7CkBAIC0xNjE2LDcgKzE2MTgsNyBA QCBpOTE1X2dlbV9tbWFwX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAKIC8qKgogICogaTkxNV9nZW1fZmF1bHQgLSBmYXVsdCBhIHBhZ2UgaW50byB0aGUgR1RUCi0g KiBAdm1hOiBWTUEgaW4gcXVlc3Rpb24KKyAqIEBtbTogVk1BIGluIHF1ZXN0aW9uCiAgKiBAdm1m OiBmYXVsdCBpbmZvCiAgKgogICogVGhlIGZhdWx0IGhhbmRsZXIgaXMgc2V0IHVwIGJ5IGRybV9n ZW1fbW1hcCgpIHdoZW4gYSBvYmplY3QgaXMgR1RUIG1hcHBlZApAQCAtMTYzMCwyMCArMTYzMiwy MSBAQCBpOTE1X2dlbV9tbWFwX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAgKiBzdWZmZXIgaWYgdGhlIEdUVCB3b3JraW5nIHNldCBpcyBsYXJnZSBvciB0aGVyZSBh cmUgZmV3IGZlbmNlIHJlZ2lzdGVycwogICogbGVmdC4KICAqLwotaW50IGk5MTVfZ2VtX2ZhdWx0 KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKK2ludCBp OTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtLCBzdHJ1Y3Qgdm1fZmF1bHQg KnZtZikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8o dm1hLT52bV9wcml2YXRlX2RhdGEpOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSB0b19pbnRlbF9ibyh2bS0+dm1fcHJpdmF0ZV9kYXRhKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0 dDsKIAlzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgdmlldyA9IGk5MTVfZ2d0dF92aWV3X25vcm1hbDsK IAlib29sIHdyaXRlID0gISEodm1mLT5mbGFncyAmIEZBVUxUX0ZMQUdfV1JJVEUpOworCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwogCXBnb2ZmX3QgcGFnZV9vZmZzZXQ7CiAJdW5zaWduZWQgbG9uZyBw Zm47CiAJaW50IHJldDsKIAogCS8qIFdlIGRvbid0IHVzZSB2bWYtPnBnb2ZmIHNpbmNlIHRoYXQg aGFzIHRoZSBmYWtlIG9mZnNldCAqLwotCXBhZ2Vfb2Zmc2V0ID0gKCh1bnNpZ25lZCBsb25nKXZt Zi0+dmlydHVhbF9hZGRyZXNzIC0gdm1hLT52bV9zdGFydCkgPj4KKwlwYWdlX29mZnNldCA9ICgo dW5zaWduZWQgbG9uZyl2bWYtPnZpcnR1YWxfYWRkcmVzcyAtIHZtLT52bV9zdGFydCkgPj4KIAkJ UEFHRV9TSElGVDsKIAogCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9mYXVsdChvYmosIHBhZ2Vfb2Zm c2V0LCB0cnVlLCB3cml0ZSk7CkBAIC0xNjgwLDE0ICsxNjgzLDE2IEBAIGludCBpOTE1X2dlbV9m YXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJ CXZpZXcucGFyYW1zLnBhcnRpYWwuc2l6ZSA9CiAJCQltaW5fdCh1bnNpZ25lZCBpbnQsCiAJCQkg ICAgICBjaHVua19zaXplLAotCQkJICAgICAgKHZtYS0+dm1fZW5kIC0gdm1hLT52bV9zdGFydCkv UEFHRV9TSVpFIC0KKwkJCSAgICAgICh2bS0+dm1fZW5kIC0gdm0tPnZtX3N0YXJ0KS9QQUdFX1NJ WkUgLQogCQkJICAgICAgdmlldy5wYXJhbXMucGFydGlhbC5vZmZzZXQpOwogCX0KIAogCS8qIE5v dyBwaW4gaXQgaW50byB0aGUgR1RUIGlmIG5lZWRlZCAqLwotCXJldCA9IGk5MTVfZ2VtX29iamVj dF9nZ3R0X3BpbihvYmosICZ2aWV3LCAwLCAwLCBQSU5fTUFQUEFCTEUpOwotCWlmIChyZXQpCisJ dm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgJnZpZXcsIDAsIDAsIFBJTl9NQVBQ QUJMRSk7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCXJldCA9IFBUUl9FUlIodm1hKTsKIAkJZ290 byBlcnJfdW5sb2NrOworCX0KIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2Rv bWFpbihvYmosIHdyaXRlKTsKIAlpZiAocmV0KQpAQCAtMTY5OCw4ICsxNzAzLDcgQEAgaW50IGk5 MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQg KnZtZikKIAkJZ290byBlcnJfdW5waW47CiAKIAkvKiBGaW5hbGx5LCByZW1hcCBpdCB1c2luZyB0 aGUgbmV3IEdUVCBvZmZzZXQgKi8KLQlwZm4gPSBnZ3R0LT5tYXBwYWJsZV9iYXNlICsKLQkJaTkx NV9nZW1fb2JqX2dndHRfb2Zmc2V0X3ZpZXcob2JqLCAmdmlldyk7CisJcGZuID0gZ2d0dC0+bWFw cGFibGVfYmFzZSArIHZtYS0+bm9kZS5zdGFydDsKIAlwZm4gPj49IFBBR0VfU0hJRlQ7CiAKIAlp ZiAodW5saWtlbHkodmlldy50eXBlID09IEk5MTVfR0dUVF9WSUVXX1BBUlRJQUwpKSB7CkBAIC0x NzA4LDEyICsxNzEyLDEyIEBAIGludCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCSAqIGlzIGR1ZSB0byB1c2Vyc3BhY2Ug bG9zaW5nIHBhcnQgb2YgdGhlIG1hcHBpbmcgb3IgbmV2ZXIKIAkJICogaGF2aW5nIGFjY2Vzc2Vk IGl0IGJlZm9yZSAoYXQgdGhpcyBwYXJ0aWFscycgcmFuZ2UpLgogCQkgKi8KLQkJdW5zaWduZWQg bG9uZyBiYXNlID0gdm1hLT52bV9zdGFydCArCisJCXVuc2lnbmVkIGxvbmcgYmFzZSA9IHZtLT52 bV9zdGFydCArCiAJCQkJICAgICAodmlldy5wYXJhbXMucGFydGlhbC5vZmZzZXQgPDwgUEFHRV9T SElGVCk7CiAJCXVuc2lnbmVkIGludCBpOwogCiAJCWZvciAoaSA9IDA7IGkgPCB2aWV3LnBhcmFt cy5wYXJ0aWFsLnNpemU7IGkrKykgewotCQkJcmV0ID0gdm1faW5zZXJ0X3Bmbih2bWEsIGJhc2Ug KyBpICogUEFHRV9TSVpFLCBwZm4gKyBpKTsKKwkJCXJldCA9IHZtX2luc2VydF9wZm4odm0sIGJh c2UgKyBpICogUEFHRV9TSVpFLCBwZm4gKyBpKTsKIAkJCWlmIChyZXQpCiAJCQkJYnJlYWs7CiAJ CX0KQEAgLTE3MjIsMTMgKzE3MjYsMTMgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAl9IGVsc2UgewogCQlpZiAo IW9iai0+ZmF1bHRfbWFwcGFibGUpIHsKIAkJCXVuc2lnbmVkIGxvbmcgc2l6ZSA9IG1pbl90KHVu c2lnbmVkIGxvbmcsCi0JCQkJCQkgICB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsCisJCQkJ CQkgICB2bS0+dm1fZW5kIC0gdm0tPnZtX3N0YXJ0LAogCQkJCQkJICAgb2JqLT5iYXNlLnNpemUp OwogCQkJaW50IGk7CiAKIAkJCWZvciAoaSA9IDA7IGkgPCBzaXplID4+IFBBR0VfU0hJRlQ7IGkr KykgewotCQkJCXJldCA9IHZtX2luc2VydF9wZm4odm1hLAotCQkJCQkJICAgICh1bnNpZ25lZCBs b25nKXZtYS0+dm1fc3RhcnQgKyBpICogUEFHRV9TSVpFLAorCQkJCXJldCA9IHZtX2luc2VydF9w Zm4odm0sCisJCQkJCQkgICAgKHVuc2lnbmVkIGxvbmcpdm0tPnZtX3N0YXJ0ICsgaSAqIFBBR0Vf U0laRSwKIAkJCQkJCSAgICBwZm4gKyBpKTsKIAkJCQlpZiAocmV0KQogCQkJCQlicmVhazsKQEAg LTE3MzYsMTIgKzE3NDAsMTIgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAogCQkJb2JqLT5mYXVsdF9tYXBwYWJs ZSA9IHRydWU7CiAJCX0gZWxzZQotCQkJcmV0ID0gdm1faW5zZXJ0X3Bmbih2bWEsCisJCQlyZXQg PSB2bV9pbnNlcnRfcGZuKHZtLAogCQkJCQkgICAgKHVuc2lnbmVkIGxvbmcpdm1mLT52aXJ0dWFs X2FkZHJlc3MsCiAJCQkJCSAgICBwZm4gKyBwYWdlX29mZnNldCk7CiAJfQogZXJyX3VucGluOgot CWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluX3ZpZXcob2JqLCAmdmlldyk7CisJX19pOTE1X3Zt YV91bnBpbih2bWEpOwogZXJyX3VubG9jazoKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKIGVycl9ycG06CkBAIC0zMTkwLDcgKzMxOTQsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB3cml0 ZSkKIAkJCQkJICAgIG9sZF93cml0ZV9kb21haW4pOwogCiAJLyogQW5kIGJ1bXAgdGhlIExSVSBm b3IgdGhpcyBhY2Nlc3MgKi8KLQl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChvYmopOworCXZt YSA9IGk5MTVfZ2VtX29iamVjdF90b19nZ3R0KG9iaiwgTlVMTCk7CiAJaWYgKHZtYSAmJgogCSAg ICBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkgJiYKIAkgICAgIWk5MTVfdm1hX2lz X2FjdGl2ZSh2bWEpKQpAQCAtMzQxNCwxMSArMzQxOCwxMiBAQCBycG1fcHV0OgogICogQ2FuIGJl IGNhbGxlZCBmcm9tIGFuIHVuaW50ZXJydXB0aWJsZSBwaGFzZSAobW9kZXNldHRpbmcpIGFuZCBh bGxvd3MKICAqIGFueSBmbHVzaGVzIHRvIGJlIHBpcGVsaW5lZCAoZm9yIHBhZ2VmbGlwcykuCiAg Ki8KLWludAorc3RydWN0IGk5MTVfdm1hICoKIGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxh eV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJCSAgICAgdTMyIGFs aWdubWVudCwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKIHsK KwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl1MzIgb2xkX3JlYWRfZG9tYWlucywgb2xkX3dyaXRl X2RvbWFpbjsKIAlpbnQgcmV0OwogCkBAIC0zNDM4LDE5ICszNDQzLDIzIEBAIGk5MTVfZ2VtX29i amVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCSAqLwogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLAogCQkJ CQkgICAgICBIQVNfV1Qob2JqLT5iYXNlLmRldikgPyBJOTE1X0NBQ0hFX1dUIDogSTkxNV9DQUNI RV9OT05FKTsKLQlpZiAocmV0KQorCWlmIChyZXQpIHsKKwkJdm1hID0gRVJSX1BUUihyZXQpOwog CQlnb3RvIGVycl91bnBpbl9kaXNwbGF5OworCX0KIAogCS8qIEFzIHRoZSB1c2VyIG1heSBtYXAg dGhlIGJ1ZmZlciBvbmNlIHBpbm5lZCBpbiB0aGUgZGlzcGxheSBwbGFuZQogCSAqIChlLmcuIGxp YmttcyBmb3IgdGhlIGJvb3R1cCBzcGxhc2gpLCB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0IHdlCiAJ ICogYWx3YXlzIHVzZSBtYXBfYW5kX2ZlbmNlYWJsZSBmb3IgYWxsIHNjYW5vdXQgYnVmZmVycy4K IAkgKi8KLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCB2aWV3LCAwLCBhbGln bm1lbnQsCisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgdmlldywgMCwgYWxp Z25tZW50LAogCQkJCSAgICAgICB2aWV3LT50eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCA/ CiAJCQkJICAgICAgIFBJTl9NQVBQQUJMRSA6IDApOwotCWlmIChyZXQpCisJaWYgKElTX0VSUih2 bWEpKQogCQlnb3RvIGVycl91bnBpbl9kaXNwbGF5OwogCisJV0FSTl9PTihvYmotPnBpbl9kaXNw bGF5ID4gaTkxNV92bWFfcGluX2NvdW50KHZtYSkpOworCiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNo X2NwdV93cml0ZV9kb21haW4ob2JqKTsKIAogCW9sZF93cml0ZV9kb21haW4gPSBvYmotPmJhc2Uu d3JpdGVfZG9tYWluOwpAQCAtMzQ2NiwyMyArMzQ3NSwyMyBAQCBpOTE1X2dlbV9vYmplY3RfcGlu X3RvX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkJ ICAgIG9sZF9yZWFkX2RvbWFpbnMsCiAJCQkJCSAgICBvbGRfd3JpdGVfZG9tYWluKTsKIAotCXJl dHVybiAwOworCXJldHVybiB2bWE7CiAKIGVycl91bnBpbl9kaXNwbGF5OgogCW9iai0+cGluX2Rp c3BsYXktLTsKLQlyZXR1cm4gcmV0OworCXJldHVybiB2bWE7CiB9CiAKIHZvaWQKLWk5MTVfZ2Vt X29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKLQkJCQkJIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKK2k5MTVf Z2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGk5MTVfdm1hICp2bWEp CiB7Ci0JaWYgKFdBUk5fT04ob2JqLT5waW5fZGlzcGxheSA9PSAwKSkKKwlpZiAoV0FSTl9PTih2 bWEtPm9iai0+cGluX2Rpc3BsYXkgPT0gMCkpCiAJCXJldHVybjsKIAotCWk5MTVfZ2VtX29iamVj dF9nZ3R0X3VucGluX3ZpZXcob2JqLCB2aWV3KTsKKwl2bWEtPm9iai0+cGluX2Rpc3BsYXktLTsK IAotCW9iai0+cGluX2Rpc3BsYXktLTsKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCVdBUk5fT04o dm1hLT5vYmotPnBpbl9kaXNwbGF5ID4gaTkxNV92bWFfcGluX2NvdW50KHZtYSkpOwogfQogCiAv KioKQEAgLTM2NzksMjcgKzM2ODgsMjUgQEAgZXJyOgogCXJldHVybiByZXQ7CiB9CiAKLWludAor c3RydWN0IGk5MTVfdm1hICoKIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmll dywKKwkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldywKIAkJCSB1NjQg c2l6ZSwKIAkJCSB1NjQgYWxpZ25tZW50LAogCQkJIHU2NCBmbGFncykKIHsKKwlzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSA9ICZ0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5nZ3R0LmJhc2U7 CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIAotCWlmICghdmlldykKLQkJdmll dyA9ICZpOTE1X2dndHRfdmlld19ub3JtYWw7Ci0KLQl2bWEgPSBpOTE1X2dlbV9vYmpfbG9va3Vw X29yX2NyZWF0ZV9nZ3R0X3ZtYShvYmosIHZpZXcpOworCXZtYSA9IGk5MTVfZ2VtX29ial9sb29r dXBfb3JfY3JlYXRlX3ZtYShvYmosIHZtLCBnZ3R0X3ZpZXcpOwogCWlmIChJU19FUlIodm1hKSkK LQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwkJcmV0dXJuIHZtYTsKIAogCWlmIChpOTE1X3ZtYV9t aXNwbGFjZWQodm1hLCBzaXplLCBhbGlnbm1lbnQsIGZsYWdzKSkgewogCQlpZiAoZmxhZ3MgJiBQ SU5fTk9OQkxPQ0sgJiYKIAkJICAgIChpOTE1X3ZtYV9pc19waW5uZWQodm1hKSB8fCBpOTE1X3Zt YV9pc19hY3RpdmUodm1hKSkpCi0JCQlyZXR1cm4gLUVOT1NQQzsKKwkJCXJldHVybiBFUlJfUFRS KC1FTk9TUEMpOwogCiAJCVdBUk4oaTkxNV92bWFfaXNfcGlubmVkKHZtYSksCiAJCSAgICAgImJv IGlzIGFscmVhZHkgcGlubmVkIGluIGdndHQgd2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50OiIKQEAg LTM3MTIsMTcgKzM3MTksMTQgQEAgaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAgICAgb2JqLT5tYXBfYW5kX2ZlbmNlYWJsZSk7CiAJ CXJldCA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwogCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsK KwkJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCi0JcmV0dXJuIGk5MTVfdm1hX3Bpbih2bWEs IHNpemUsIGFsaWdubWVudCwgZmxhZ3MgfCBQSU5fR0xPQkFMKTsKLX0KKwlyZXQgPSBpOTE1X3Zt YV9waW4odm1hLCBzaXplLCBhbGlnbm1lbnQsIGZsYWdzIHwgUElOX0dMT0JBTCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAotdm9pZAotaTkxNV9nZW1fb2JqZWN0X2dndHRf dW5waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJCWNvbnN0IHN0 cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKLXsKLQlpOTE1X3ZtYV91bnBpbihpOTE1X2dlbV9v YmpfdG9fZ2d0dF92aWV3KG9iaiwgdmlldykpOworCXJldHVybiB2bWE7CiB9CiAKIHN0YXRpYyBf X2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IF9fYnVzeV9yZWFkX2ZsYWcodW5zaWduZWQgaW50 IGlkKQpAQCAtNDA4NywzMiArNDA5MSw2IEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKIH0KIAotc3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fdm1hKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSkKLXsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKSB7Ci0JCWlmICh2bWEtPmdndHRfdmlldy50 eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCAmJgotCQkgICAgdm1hLT52bSA9PSB2bSkKLQkJ CXJldHVybiB2bWE7Ci0JfQotCXJldHVybiBOVUxMOwotfQotCi1zdHJ1Y3QgaTkxNV92bWEgKmk5 MTVfZ2VtX29ial90b19nZ3R0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK LQkJCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQotewotCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwotCi0JR0VNX0JVR19PTighdmlldyk7Ci0KLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKQotCQlpZiAoaTkxNV92bWFfaXNfZ2d0 dCh2bWEpICYmCi0JCSAgICBpOTE1X2dndHRfdmlld19lcXVhbCgmdm1hLT5nZ3R0X3ZpZXcsIHZp ZXcpKQotCQkJcmV0dXJuIHZtYTsKLQlyZXR1cm4gTlVMTDsKLX0KLQogaW50IGk5MTVfZ2VtX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CkBAIC00NTgwLDk3ICs0NTU4LDYgQEAgdm9pZCBp OTE1X2dlbV90cmFja19mYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkLAogCX0KIH0K IAotLyogQWxsIHRoZSBuZXcgVk0gc3R1ZmYgKi8KLXU2NCBpOTE1X2dlbV9vYmpfb2Zmc2V0KHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAotCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShv LT5iYXNlLmRldik7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0KLQlXQVJOX09OKHZtID09ICZk ZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQtPmJhc2UpOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZvLT52bWFfbGlzdCwgb2JqX2xpbmspIHsKLQkJaWYgKGk5MTVfdm1hX2lzX2dndHQo dm1hKSAmJgotCQkgICAgdm1hLT5nZ3R0X3ZpZXcudHlwZSAhPSBJOTE1X0dHVFRfVklFV19OT1JN QUwpCi0JCQljb250aW51ZTsKLQkJaWYgKHZtYS0+dm0gPT0gdm0pCi0JCQlyZXR1cm4gdm1hLT5u b2RlLnN0YXJ0OwotCX0KLQotCVdBUk4oMSwgIiVzIHZtYSBmb3IgdGhpcyBvYmplY3Qgbm90IGZv dW5kLlxuIiwKLQkgICAgIGk5MTVfaXNfZ2d0dCh2bSkgPyAiZ2xvYmFsIiA6ICJwcGd0dCIpOwot CXJldHVybiAtMTsKLX0KLQotdTY0IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldF92aWV3KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAotCQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92 aWV3ICp2aWV3KQotewotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCi0JbGlzdF9mb3JfZWFjaF9l bnRyeSh2bWEsICZvLT52bWFfbGlzdCwgb2JqX2xpbmspCi0JCWlmIChpOTE1X3ZtYV9pc19nZ3R0 KHZtYSkgJiYKLQkJICAgIGk5MTVfZ2d0dF92aWV3X2VxdWFsKCZ2bWEtPmdndHRfdmlldywgdmll dykpCi0JCQlyZXR1cm4gdm1hLT5ub2RlLnN0YXJ0OwotCi0JV0FSTigxLCAiZ2xvYmFsIHZtYSBm b3IgdGhpcyBvYmplY3Qgbm90IGZvdW5kLiAodmlldz0ldSlcbiIsIHZpZXctPnR5cGUpOwotCXJl dHVybiAtMTsKLX0KLQotYm9vbCBpOTE1X2dlbV9vYmpfYm91bmQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm8sCi0JCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKLXsKLQlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xp c3QsIG9ial9saW5rKSB7Ci0JCWlmIChpOTE1X3ZtYV9pc19nZ3R0KHZtYSkgJiYKLQkJICAgIHZt YS0+Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQotCQkJY29udGludWU7 Ci0JCWlmICh2bWEtPnZtID09IHZtICYmIGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2Rl KSkKLQkJCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBpOTE1 X2dlbV9vYmpfZ2d0dF9ib3VuZF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAot CQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQotewotCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvLT52bWFfbGlzdCwgb2Jq X2xpbmspCi0JCWlmIChpOTE1X3ZtYV9pc19nZ3R0KHZtYSkgJiYKLQkJICAgIGk5MTVfZ2d0dF92 aWV3X2VxdWFsKCZ2bWEtPmdndHRfdmlldywgdmlldykgJiYKLQkJICAgIGRybV9tbV9ub2RlX2Fs bG9jYXRlZCgmdm1hLT5ub2RlKSkKLQkJCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwot fQotCi11bnNpZ25lZCBsb25nIGk5MTVfZ2VtX29ial9nZ3R0X3NpemUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm8pCi17Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0KLQlHRU1fQlVHX09O KGxpc3RfZW1wdHkoJm8tPnZtYV9saXN0KSk7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm8tPnZtYV9saXN0LCBvYmpfbGluaykgewotCQlpZiAoaTkxNV92bWFfaXNfZ2d0dCh2bWEpICYm Ci0JCSAgICB2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKLQkJ CXJldHVybiB2bWEtPm5vZGUuc2l6ZTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotYm9vbCBpOTE1 X2dlbV9vYmpfaXNfcGlubmVkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCi17Ci0J c3RydWN0IGk5MTVfdm1hICp2bWE7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZt YV9saXN0LCBvYmpfbGluaykKLQkJaWYgKGk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKQotCQkJcmV0 dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KIC8qIExpa2UgaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlKCksIGJ1dCBtYXJrIHRoZSByZXR1cm5lZCBwYWdlIGRpcnR5ICovCiBzdHJ1Y3Qg cGFnZSAqCiBpOTE1X2dlbV9vYmplY3RfZ2V0X2RpcnR5X3BhZ2Uoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwgaW50IG4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKaW5kZXggYzhkMTNmZWE0YjI1Li4xNjA4NjdmNDhmOTEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTE4MCw4ICsxODAsOCBAQCBlYl9s b29rdXBfdm1hcyhzdHJ1Y3QgZWJfdm1hcyAqZWIsCiAJCSAqIGZyb20gdGhlIChvYmosIHZtKSB3 ZSBkb24ndCBydW4gdGhlIHJpc2sgb2YgY3JlYXRpbmcKIAkJICogZHVwbGljYXRlZCB2bWFzIGZv ciB0aGUgc2FtZSB2bS4KIAkJICovCi0JCXZtYSA9IGk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3Jl YXRlX3ZtYShvYmosIHZtKTsKLQkJaWYgKElTX0VSUih2bWEpKSB7CisJCXZtYSA9IGk5MTVfZ2Vt X29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYShvYmosIHZtLCBOVUxMKTsKKwkJaWYgKHVubGlrZWx5 KElTX0VSUih2bWEpKSkgewogCQkJRFJNX0RFQlVHKCJGYWlsZWQgdG8gbG9va3VwIFZNQVxuIik7 CiAJCQlyZXQgPSBQVFJfRVJSKHZtYSk7CiAJCQlnb3RvIGVycjsKQEAgLTM0OSwzMCArMzQ5LDM0 IEBAIHJlbG9jYXRlX2VudHJ5X2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAog CQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jLAogCQkgICB1 aW50NjRfdCB0YXJnZXRfb2Zmc2V0KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmot PmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+ YmFzZS5kZXYpOwogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7CisJ c3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdWludDY0X3QgZGVsdGEgPSByZWxvY2F0aW9uX3Rhcmdl dChyZWxvYywgdGFyZ2V0X29mZnNldCk7CiAJdWludDY0X3Qgb2Zmc2V0OwogCXZvaWQgX19pb21l bSAqcmVsb2NfcGFnZTsKIAlpbnQgcmV0OwogCisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRf cGluKG9iaiwgTlVMTCwgMCwgMCwgUElOX01BUFBBQkxFKTsKKwlpZiAoSVNfRVJSKHZtYSkpCisJ CXJldHVybiBQVFJfRVJSKHZtYSk7CisKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4ob2JqLCB0cnVlKTsKIAlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCQlnb3RvIHVu cGluOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmopOwogCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJCWdvdG8gdW5waW47CiAKIAkvKiBNYXAgdGhlIHBhZ2UgY29udGFp bmluZyB0aGUgcmVsb2NhdGlvbiB3ZSdyZSBnb2luZyB0byBwZXJmb3JtLiAgKi8KLQlvZmZzZXQg PSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKTsKKwlvZmZzZXQgPSB2bWEtPm5vZGUuc3Rh cnQ7CiAJb2Zmc2V0ICs9IHJlbG9jLT5vZmZzZXQ7CiAJcmVsb2NfcGFnZSA9IGlvX21hcHBpbmdf bWFwX2F0b21pY193YyhnZ3R0LT5tYXBwYWJsZSwKIAkJCQkJICAgICAgb2Zmc2V0ICYgUEFHRV9N QVNLKTsKIAlpb3dyaXRlMzIobG93ZXJfMzJfYml0cyhkZWx0YSksIHJlbG9jX3BhZ2UgKyBvZmZz ZXRfaW5fcGFnZShvZmZzZXQpKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7 CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewogCQlvZmZzZXQgKz0gc2l6ZW9mKHVp bnQzMl90KTsKIAogCQlpZiAob2Zmc2V0X2luX3BhZ2Uob2Zmc2V0KSA9PSAwKSB7CkBAIC0zODgs NyArMzkyLDkgQEAgcmVsb2NhdGVfZW50cnlfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCiAKIAlpb19tYXBwaW5nX3VubWFwX2F0b21pYyhyZWxvY19wYWdlKTsKIAotCXJldHVy biAwOwordW5waW46CisJaTkxNV92bWFfdW5waW4odm1hKTsKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgdm9pZApAQCAtMTI4MSw3ICsxMjg3LDcgQEAgaTkxNV9yZXNldF9nZW43X3NvbF9vZmZz ZXRzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCXJldHVybiAwOwogfQogCi1z dGF0aWMgc3RydWN0IGk5MTVfdm1hKgorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCiBpOTE1X2dl bV9leGVjYnVmZmVyX3BhcnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAg c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKnNoYWRvd19leGVjX2VudHJ5LAogCQkJ ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqLApAQCAtMTMwNSwzMSArMTMx MSwzMCBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3BhcnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKIAkJCQkgICAgICBiYXRjaF9zdGFydF9vZmZzZXQsCiAJCQkJICAgICAgYmF0Y2hf bGVuLAogCQkJCSAgICAgIGlzX21hc3Rlcik7Ci0JaWYgKHJldCkKKwlpZiAocmV0KSB7CisJCWlm IChyZXQgPT0gLUVBQ0NFUykgLyogdW5oYW5kbGVkIGNoYWluZWQgYmF0Y2ggKi8KKwkJCXZtYSA9 IE5VTEw7CisJCWVsc2UKKwkJCXZtYSA9IEVSUl9QVFIocmV0KTsKIAkJZ290byBlcnI7CisJfQog Ci0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHNoYWRvd19iYXRjaF9vYmosIE5VTEws IDAsIDAsIDApOwotCWlmIChyZXQpCisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHNo YWRvd19iYXRjaF9vYmosIE5VTEwsIDAsIDAsIDApOworCWlmIChJU19FUlIodm1hKSkgeworCQly ZXQgPSBQVFJfRVJSKHZtYSk7CiAJCWdvdG8gZXJyOwotCi0JaTkxNV9nZW1fb2JqZWN0X3VucGlu X3BhZ2VzKHNoYWRvd19iYXRjaF9vYmopOworCX0KIAogCW1lbXNldChzaGFkb3dfZXhlY19lbnRy eSwgMCwgc2l6ZW9mKCpzaGFkb3dfZXhlY19lbnRyeSkpOwogCi0Jdm1hID0gaTkxNV9nZW1fb2Jq X3RvX2dndHQoc2hhZG93X2JhdGNoX29iaik7CiAJdm1hLT5leGVjX2VudHJ5ID0gc2hhZG93X2V4 ZWNfZW50cnk7CiAJdm1hLT5leGVjX2VudHJ5LT5mbGFncyA9IF9fRVhFQ19PQkpFQ1RfSEFTX1BJ TjsKIAlpOTE1X2dlbV9vYmplY3RfZ2V0KHNoYWRvd19iYXRjaF9vYmopOwogCWxpc3RfYWRkX3Rh aWwoJnZtYS0+ZXhlY19saXN0LCAmZWItPnZtYXMpOwogCi0JcmV0dXJuIHZtYTsKLQogZXJyOgog CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzaGFkb3dfYmF0Y2hfb2JqKTsKLQlpZiAocmV0 ID09IC1FQUNDRVMpIC8qIHVuaGFuZGxlZCBjaGFpbmVkIGJhdGNoICovCi0JCXJldHVybiBOVUxM OwotCWVsc2UKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwlyZXR1cm4gdm1hOwogfQogCiBzdGF0 aWMgaW50CkBAIC0xNjc3LDYgKzE2ODIsNyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJICogaHN3IHNob3VsZCBoYXZlIHRoaXMg Zml4ZWQsIGJ1dCBiZHcgbXVja3MgaXQgdXAgYWdhaW4uICovCiAJaWYgKGRpc3BhdGNoX2ZsYWdz ICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpIHsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiA9IHBhcmFtcy0+YmF0Y2gtPm9iajsKKwkJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAKIAkJ LyoKIAkJICogU28gb24gZmlyc3QgZ2xhbmNlIGl0IGxvb2tzIGZyZWFreSB0aGF0IHdlIHBpbiB0 aGUgYmF0Y2ggaGVyZQpAQCAtMTY4OCwxMSArMTY5NCwxMyBAQCBpOTE1X2dlbV9kb19leGVjYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAqICAgZml0dGluZyBk dWUgdG8gZnJhZ21lbnRhdGlvbi4KIAkJICogU28gdGhpcyBpcyBhY3R1YWxseSBzYWZlLgogCQkg Ki8KLQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgMCwgMCk7 Ci0JCWlmIChyZXQpCisJCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEws IDAsIDAsIDApOworCQlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJCXJldCA9IFBUUl9FUlIodm1hKTsK IAkJCWdvdG8gZXJyOworCQl9CiAKLQkJcGFyYW1zLT5iYXRjaCA9IGk5MTVfZ2VtX29ial90b19n Z3R0KG9iaik7CisJCXBhcmFtcy0+YmF0Y2ggPSB2bWE7CiAJfQogCiAJLyogQWxsb2NhdGUgYSBy ZXF1ZXN0IGZvciB0aGlzIGJhdGNoIGJ1ZmZlciBuaWNlIGFuZCBlYXJseS4gKi8KQEAgLTE3MDgs NyArMTcxNiw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAkgKiBpbmFjdGl2ZV9saXN0IGFuZCBsb3NlIGl0cyBhY3RpdmUgcmVm ZXJlbmNlLiBIZW5jZSB3ZSBkbyBub3QgbmVlZAogCSAqIHRvIGV4cGxpY2l0bHkgaG9sZCBhbm90 aGVyIHJlZmVyZW5jZSBoZXJlLgogCSAqLwotCXBhcmFtcy0+cmVxdWVzdC0+YmF0Y2hfb2JqID0g cGFyYW1zLT5iYXRjaC0+b2JqOworCXBhcmFtcy0+cmVxdWVzdC0+YmF0Y2ggPSBwYXJhbXMtPmJh dGNoOwogCiAJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hZGRfdG9fY2xpZW50KHBhcmFtcy0+cmVx dWVzdCwgZmlsZSk7CiAJaWYgKHJldCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5j CmluZGV4IDYwNzQ5Y2QyM2YyMC4uZjk3OWFlYWViNzhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2ZlbmNlLmMKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgaTk2NV93cml0ZV9m ZW5jZV9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHJlZywKIAlQT1NUSU5HX1JFQUQo ZmVuY2VfcmVnX2xvKTsKIAogCWlmIChvYmopIHsKLQkJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBp OTE1X2dlbV9vYmpfdG9fZ2d0dChvYmopOworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGk5MTVf Z2VtX29iamVjdF90b19nZ3R0KG9iaiwgTlVMTCk7CiAJCXVuc2lnbmVkIGludCB0aWxpbmcgPSBp OTE1X2dlbV9vYmplY3RfZ2V0X3RpbGluZyhvYmopOwogCQl1bnNpZ25lZCBpbnQgc3RyaWRlID0g aTkxNV9nZW1fb2JqZWN0X2dldF9zdHJpZGUob2JqKTsKIAkJdTY0IHNpemUgPSB2bWEtPm5vZGUu c2l6ZTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3dyaXRlX2ZlbmNlX3Jl ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVnLAogCXUzMiB2YWw7CiAKIAlpZiAob2Jq KSB7Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQob2JqKTsK KwkJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBpOTE1X2dlbV9vYmplY3RfdG9fZ2d0dChvYmosIE5V TEwpOwogCQl1bnNpZ25lZCBpbnQgdGlsaW5nID0gaTkxNV9nZW1fb2JqZWN0X2dldF90aWxpbmco b2JqKTsKIAkJdW5zaWduZWQgaW50IHN0cmlkZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfc3RyaWRl KG9iaik7CiAJCWludCBwaXRjaF92YWw7CkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIHZvaWQg aTgzMF93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHJlZywKIAl1 MzIgdmFsOwogCiAJaWYgKG9iaikgewotCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGk5MTVfZ2Vt X29ial90b19nZ3R0KG9iaik7CisJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X3RvX2dndHQob2JqLCBOVUxMKTsKIAkJdW5zaWduZWQgaW50IHRpbGluZyA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfdGlsaW5nKG9iaik7CiAJCXVuc2lnbmVkIGludCBzdHJpZGUgPSBpOTE1X2dl bV9vYmplY3RfZ2V0X3N0cmlkZShvYmopOwogCQl1MzIgcGl0Y2hfdmFsOwpAQCAtNDMyLDEzICs0 MzIsNyBAQCBib29sCiBpOTE1X2dlbV9vYmplY3RfcGluX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiB7CiAJaWYgKG9iai0+ZmVuY2VfcmVnICE9IEk5MTVfRkVOQ0VfUkVH X05PTkUpIHsKLQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShv YmotPmJhc2UuZGV2KTsKLQkJc3RydWN0IGk5MTVfdm1hICpnZ3R0X3ZtYSA9IGk5MTVfZ2VtX29i al90b19nZ3R0KG9iaik7Ci0KLQkJV0FSTl9PTighZ2d0dF92bWEgfHwKLQkJCWRldl9wcml2LT5m ZW5jZV9yZWdzW29iai0+ZmVuY2VfcmVnXS5waW5fY291bnQgPgotCQkJaTkxNV92bWFfcGluX2Nv dW50KGdndHRfdm1hKSk7Ci0JCWRldl9wcml2LT5mZW5jZV9yZWdzW29iai0+ZmVuY2VfcmVnXS5w aW5fY291bnQrKzsKKwkJdG9faTkxNShvYmotPmJhc2UuZGV2KS0+ZmVuY2VfcmVnc1tvYmotPmZl bmNlX3JlZ10ucGluX2NvdW50Kys7CiAJCXJldHVybiB0cnVlOwogCX0gZWxzZQogCQlyZXR1cm4g ZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGNlNTNmMDgxODZmYS4u ZTg1NTkzYjNiYjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMzM1MSwx NCArMzM1MSwxMCBAQCBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKIAogCUdFTV9CVUdfT04odm0tPmNsb3NlZCk7CiAKLQlpZiAoV0FSTl9PTihp OTE1X2lzX2dndHQodm0pICE9ICEhdmlldykpCi0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwot CiAJdm1hID0ga21lbV9jYWNoZV96YWxsb2ModG9faTkxNShvYmotPmJhc2UuZGV2KS0+dm1hcywg R0ZQX0tFUk5FTCk7CiAJaWYgKHZtYSA9PSBOVUxMKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKIAotCUlOSVRfTElTVF9IRUFEKCZ2bWEtPm9ial9saW5rKTsKIAlJTklUX0xJU1RfSEVBRCgm dm1hLT5leGVjX2xpc3QpOwogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZtYS0+bGFzdF9y ZWFkKTsgaSsrKQogCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZ2bWEtPmxhc3RfcmVhZFtpXSwgaTkx NV92bWFfcmV0aXJlKTsKQEAgLTMzNjcsOCArMzM2Myw3IEBAIF9faTkxNV9nZW1fdm1hX2NyZWF0 ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXZtYS0+b2JqID0gb2JqOwogCXZt YS0+c2l6ZSA9IG9iai0+YmFzZS5zaXplOwogCi0JaWYgKGk5MTVfaXNfZ2d0dCh2bSkpIHsKLQkJ dm1hLT5mbGFncyB8PSBJOTE1X1ZNQV9HR1RUOworCWlmICh2aWV3KSB7CiAJCXZtYS0+Z2d0dF92 aWV3ID0gKnZpZXc7CiAJCWlmICh2aWV3LT50eXBlID09IEk5MTVfR0dUVF9WSUVXX1BBUlRJQUwp IHsKIAkJCXZtYS0+c2l6ZSA9IHZpZXctPnBhcmFtcy5wYXJ0aWFsLnNpemU7CkBAIC0zMzc4LDU2 ICszMzczLDc2IEBAIF9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQkJCWludGVsX3JvdGF0aW9uX2luZm9fc2l6ZSgmdmlldy0+cGFyYW1zLnJv dGF0ZWQpOwogCQkJdm1hLT5zaXplIDw8PSBQQUdFX1NISUZUOwogCQl9CisJfQorCisJaWYgKGk5 MTVfaXNfZ2d0dCh2bSkpIHsKKwkJdm1hLT5mbGFncyB8PSBJOTE1X1ZNQV9HR1RUOwogCX0gZWxz ZSB7CiAJCWk5MTVfcHBndHRfZ2V0KGk5MTVfdm1fdG9fcHBndHQodm0pKTsKIAl9CiAKIAlsaXN0 X2FkZF90YWlsKCZ2bWEtPm9ial9saW5rLCAmb2JqLT52bWFfbGlzdCk7Ci0KIAlyZXR1cm4gdm1h OwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgdm1hX21hdGNoZXMoc3RydWN0IGk5MTVfdm1hICp2 bWEsCisJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkgICAgICAg Y29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQoreworCWlmICh2bWEtPnZtICE9IHZt KQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoIWk5MTVfdm1hX2lzX2dndHQodm1hKSkKKwkJcmV0 dXJuIHRydWU7CisKKwlpZiAoIXZpZXcpCisJCXJldHVybiB2bWEtPmdndHRfdmlldy50eXBlID09 IDA7CisKKwlpZiAodm1hLT5nZ3R0X3ZpZXcudHlwZSAhPSB2aWV3LT50eXBlKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gbWVtY21wKCZ2bWEtPmdndHRfdmlldy5wYXJhbXMsCisJCSAgICAg ICZ2aWV3LT5wYXJhbXMsCisJCSAgICAgIHNpemVvZih2aWV3LT5wYXJhbXMpKSA9PSAwOworfQor CiBzdHJ1Y3QgaTkxNV92bWEgKgogaTkxNV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQljb25zdCBz dHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCiB7Ci0JR0VNX0JVR19PTih2aWV3ID8gaTkxNV9n ZW1fb2JqX3RvX2dndHRfdmlldyhvYmosIHZpZXcpIDogaTkxNV9nZW1fb2JqX3RvX3ZtYShvYmos IHZtKSk7CisJR0VNX0JVR19PTihpOTE1X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0sIHZpZXcpKTsK IAotCXJldHVybiBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUob2JqLCB2bSwgdmlldyA/OiAmaTkxNV9n Z3R0X3ZpZXdfbm9ybWFsKTsKKwlyZXR1cm4gX19pOTE1X2dlbV92bWFfY3JlYXRlKG9iaiwgdm0s IHZpZXcpOwogfQogCiBzdHJ1Y3QgaTkxNV92bWEgKgotaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9j cmVhdGVfdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKK2k5MTVfZ2VtX29ial90b192bWEoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt LAorCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQogewogCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwogCi0Jdm1hID0gaTkxNV9nZW1fb2JqX3RvX3ZtYShvYmosIHZtKTsKLQlp ZiAoIXZtYSkKLQkJdm1hID0gX19pOTE1X2dlbV92bWFfY3JlYXRlKG9iaiwgdm0sCi0JCQkJCSAg ICBpOTE1X2lzX2dndHQodm0pID8gJmk5MTVfZ2d0dF92aWV3X25vcm1hbCA6IE5VTEwpOworCWxp c3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZSh2bWEsICZvYmotPnZtYV9saXN0LCBvYmpfbGluaykK KwkJaWYgKHZtYV9tYXRjaGVzKHZtYSwgdm0sIHZpZXcpKQorCQkJcmV0dXJuIHZtYTsKIAotCXJl dHVybiB2bWE7CisJcmV0dXJuIE5VTEw7CiB9CiAKIHN0cnVjdCBpOTE1X3ZtYSAqCi1pOTE1X2dl bV9vYmpfbG9va3VwX29yX2NyZWF0ZV9nZ3R0X3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAotCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCitp OTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKKwkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQkJCSAgY29u c3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBvYmotPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0 OwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHRfdmlldyhvYmos IHZpZXcpOwotCi0JR0VNX0JVR19PTighdmlldyk7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAK Kwl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0sIHZpZXcpOwogCWlmICghdm1hKQot CQl2bWEgPSBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUob2JqLCAmZ2d0dC0+YmFzZSwgdmlldyk7CisJ CXZtYSA9IF9faTkxNV9nZW1fdm1hX2NyZWF0ZShvYmosIHZtLCB2aWV3KTsKIAogCUdFTV9CVUdf T04oaTkxNV92bWFfaXNfY2xvc2VkKHZtYSkpOwogCXJldHVybiB2bWE7Ci0KIH0KIAogc3RhdGlj IHN0cnVjdCBzY2F0dGVybGlzdCAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4 IGFjNDc2NjNhNGQzMi4uZDNlYjkxMGRkYjg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaApAQCAtNjEzLDIwICs2MTMsNiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBp bmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9n dHRfcHJlcGFyZV9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB2b2lk IGk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopOwogCi1zdGF0aWMgaW5saW5lIGJvb2wKLWk5MTVfZ2d0dF92aWV3X2VxdWFsKGNvbnN0IHN0 cnVjdCBpOTE1X2dndHRfdmlldyAqYSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBpOTE1X2dndHRfdmlldyAqYikKLXsKLQlpZiAoV0FSTl9PTighYSB8fCAhYikpCi0JCXJldHVy biBmYWxzZTsKLQotCWlmIChhLT50eXBlICE9IGItPnR5cGUpCi0JCXJldHVybiBmYWxzZTsKLQlp ZiAoYS0+dHlwZSAhPSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCi0JCXJldHVybiAhbWVtY21wKCZh LT5wYXJhbXMsICZiLT5wYXJhbXMsIHNpemVvZihhLT5wYXJhbXMpKTsKLQlyZXR1cm4gdHJ1ZTsK LX0KLQogLyogRmxhZ3MgdXNlZCBieSBwaW4vYmluZCZmcmllbmRzLiAqLwogI2RlZmluZSBQSU5f Tk9OQkxPQ0sJCUJJVCgwKQogI2RlZmluZSBQSU5fTUFQUEFCTEUJCUJJVCgxKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCmluZGV4IDAwOTJmNWU5MGNiMi4uMTg3YzRmOWNl OGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC00MDcsNyAr NDA3LDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJcmVxLT5zaWduYWxpbmcud2FpdC50c2sgPSBOVUxMOwogCXJlcS0+cHJldmlvdXNf Y29udGV4dCA9IE5VTEw7CiAJcmVxLT5maWxlX3ByaXYgPSBOVUxMOwotCXJlcS0+YmF0Y2hfb2Jq ID0gTlVMTDsKKwlyZXEtPmJhdGNoID0gTlVMTDsKIAlyZXEtPmVsc3Bfc3VibWl0dGVkID0gMDsK IAogCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKaW5kZXggZDUxNzZm OWNjMjJmLi4xZjM5NmY0NzBhODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewog CS8qKiBCYXRjaCBidWZmZXIgcmVsYXRlZCB0byB0aGlzIHJlcXVlc3QgaWYgYW55ICh1c2VkIGZv cgogCSAqIGVycm9yIHN0YXRlIGR1bXAgb25seSkuCiAJICovCi0Jc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmJhdGNoX29iajsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOwogCXN0cnVjdCBs aXN0X2hlYWQgYWN0aXZlX2xpc3Q7CiAKIAkvKiogVGltZSBhdCB3aGljaCB0aGlzIHJlcXVlc3Qg d2FzIGVtaXR0ZWQsIGluIGppZmZpZXMuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0 b2xlbi5jCmluZGV4IDEzMjc5NjEwZWVlYy4uYzNkY2ZiNzI0OTY2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtNjg1LDcgKzY4NSw3IEBAIGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlpZiAoZ3R0X29mZnNldCA9PSBJOTE1X0dUVF9PRkZTRVRfTk9ORSkKIAkJcmV0dXJuIG9iajsK IAotCXZtYSA9IGk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYShvYmosICZnZ3R0LT5i YXNlKTsKKwl2bWEgPSBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEob2JqLCAmZ2d0 dC0+YmFzZSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEpKSB7CiAJCXJldCA9IFBUUl9FUlIodm1h KTsKIAkJZ290byBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCmluZGV4 IDJjZWFkZGM5NTlkMy4uMjY1ZTQxMjNlNjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV90aWxpbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aWxpbmcuYwpAQCAtMTMwLDcgKzEzMCw3IEBAIGk5MTVfZ2VtX29iamVjdF9mZW5jZV9vayhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgdGlsaW5nX21vZGUpCiAJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNCkKIAkJcmV0dXJuIDA7CiAKLQl2bWEgPSBpOTE1X2dlbV9v YmpfdG9fZ2d0dChvYmopOworCXZtYSA9IGk5MTVfZ2VtX29iamVjdF90b19nZ3R0KG9iaiwgTlVM TCk7CiAJaWYgKCF2bWEpCiAJCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYwppbmRleCBhZDQzYzI2Yjc2YTAuLjFiY2VhZjk2YmM1ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC02MzQsNDYgKzYzNCw0MiBAQCBzdGF0aWMgdm9pZCBp OTE1X2Vycm9yX3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYgKmVycm9yX3JlZikKIAogc3RhdGljIHN0 cnVjdCBkcm1faTkxNV9lcnJvcl9vYmplY3QgKgogaTkxNV9lcnJvcl9vYmplY3RfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqc3JjLAotCQkJIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQorCQkJIHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQogewogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3By aXYtPmdndHQ7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnNyYzsKIAlzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfb2JqZWN0ICpkc3Q7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWEgPSBOVUxMOwog CWludCBudW1fcGFnZXM7CiAJYm9vbCB1c2VfZ2d0dDsKIAlpbnQgaSA9IDA7CiAJdTY0IHJlbG9j X29mZnNldDsKIAotCWlmIChzcmMgPT0gTlVMTCB8fCBzcmMtPnBhZ2VzID09IE5VTEwpCisJaWYg KCF2bWEpCisJCXJldHVybiBOVUxMOworCisJc3JjID0gdm1hLT5vYmo7CisJaWYgKCFzcmMtPnBh Z2VzKQogCQlyZXR1cm4gTlVMTDsKIAogCW51bV9wYWdlcyA9IHNyYy0+YmFzZS5zaXplID4+IFBB R0VfU0hJRlQ7CiAKIAlkc3QgPSBrbWFsbG9jKHNpemVvZigqZHN0KSArIG51bV9wYWdlcyAqIHNp emVvZih1MzIgKiksIEdGUF9BVE9NSUMpOwotCWlmIChkc3QgPT0gTlVMTCkKKwlpZiAoIWRzdCkK IAkJcmV0dXJuIE5VTEw7CiAKLQlpZiAoaTkxNV9nZW1fb2JqX2JvdW5kKHNyYywgdm0pKQotCQlk c3QtPmd0dF9vZmZzZXQgPSBpOTE1X2dlbV9vYmpfb2Zmc2V0KHNyYywgdm0pOwotCWVsc2UKLQkJ ZHN0LT5ndHRfb2Zmc2V0ID0gLTE7Ci0KLQlyZWxvY19vZmZzZXQgPSBkc3QtPmd0dF9vZmZzZXQ7 Ci0JaWYgKGk5MTVfaXNfZ2d0dCh2bSkpCi0JCXZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0KHNy Yyk7CisJcmVsb2Nfb2Zmc2V0ID0gZHN0LT5ndHRfb2Zmc2V0ID0gdm1hLT5ub2RlLnN0YXJ0Owog CXVzZV9nZ3R0ID0gKHNyYy0+Y2FjaGVfbGV2ZWwgPT0gSTkxNV9DQUNIRV9OT05FICYmCi0JCSAg IHZtYSAmJiAodm1hLT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSAmJgorCQkgICAodm1h LT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSAmJgogCQkgICByZWxvY19vZmZzZXQgKyBu dW1fcGFnZXMgKiBQQUdFX1NJWkUgPD0gZ2d0dC0+bWFwcGFibGVfZW5kKTsKIAogCS8qIENhbm5v dCBhY2Nlc3Mgc3RvbGVuIGFkZHJlc3MgZGlyZWN0bHksIHRyeSB0byB1c2UgdGhlIGFwZXJ0dXJl ICovCiAJaWYgKHNyYy0+c3RvbGVuKSB7CiAJCXVzZV9nZ3R0ID0gdHJ1ZTsKIAotCQlpZiAoISh2 bWEgJiYgdm1hLT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSkKKwkJaWYgKCEodm1hLT5m bGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSkKIAkJCWdvdG8gdW53aW5kOwogCi0JCXJlbG9j X29mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChzcmMpOworCQlyZWxvY19vZmZzZXQg PSB2bWEtPm5vZGUuc3RhcnQ7CiAJCWlmIChyZWxvY19vZmZzZXQgKyBudW1fcGFnZXMgKiBQQUdF X1NJWkUgPiBnZ3R0LT5tYXBwYWJsZV9lbmQpCiAJCQlnb3RvIHVud2luZDsKIAl9CkBAIC03MjYs OCArNzIyLDYgQEAgdW53aW5kOgogCWtmcmVlKGRzdCk7CiAJcmV0dXJuIE5VTEw7CiB9Ci0jZGVm aW5lIGk5MTVfZXJyb3JfZ2d0dF9vYmplY3RfY3JlYXRlKGRldl9wcml2LCBzcmMpIFwKLQlpOTE1 X2Vycm9yX29iamVjdF9jcmVhdGUoKGRldl9wcml2KSwgKHNyYyksICYoZGV2X3ByaXYpLT5nZ3R0 LmJhc2UpCiAKIC8qIFRoZSBlcnJvciBjYXB0dXJlIGlzIHNwZWNpYWwgYXMgdHJpZXMgdG8gcnVu IHVuZGVybmVhdGggdGhlIG5vcm1hbAogICogbG9ja2luZyBydWxlcyAtIHNvIHdlIHVzZSB0aGUg cmF3IHZlcnNpb24gb2YgdGhlIGk5MTVfZ2VtX2FjdGl2ZSBsb29rdXAuCkBAIC0xMDM1LDExICsx MDI5LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3Q7CiAJaW50IGksIGNvdW50OwogCi0JaWYgKGRldl9wcml2LT5zZW1hcGhvcmUpIHsKLQkJZXJy b3ItPnNlbWFwaG9yZSA9Ci0JCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJp diwKLQkJCQkJCSAgICAgIGRldl9wcml2LT5zZW1hcGhvcmUtPm9iaik7Ci0JfQorCWVycm9yLT5z ZW1hcGhvcmUgPQorCQlpOTE1X2Vycm9yX29iamVjdF9jcmVhdGUoZGV2X3ByaXYsIGRldl9wcml2 LT5zZW1hcGhvcmUpOwogCiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykg ewogCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtp XTsKQEAgLTEwNjksMTggKzEwNjAsMTYgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX3Jp bmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAqLwogCQkJZWUtPmJh dGNoYnVmZmVyID0KIAkJCQlpOTE1X2Vycm9yX29iamVjdF9jcmVhdGUoZGV2X3ByaXYsCi0JCQkJ CQkJIHJlcXVlc3QtPmJhdGNoX29iaiwKLQkJCQkJCQkgZWUtPnZtKTsKKwkJCQkJCQkgcmVxdWVz dC0+YmF0Y2gpOwogCiAJCQlpZiAoSEFTX0JST0tFTl9DU19UTEIoZGV2X3ByaXYpKQogCQkJCWVl LT53YV9iYXRjaGJ1ZmZlciA9Ci0JCQkJCWk5MTVfZXJyb3JfZ2d0dF9vYmplY3RfY3JlYXRlKGRl dl9wcml2LAotCQkJCQkJCQkgICAgICBlbmdpbmUtPnNjcmF0Y2gtPm9iaik7CisJCQkJCWk5MTVf ZXJyb3Jfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKKwkJCQkJCQkJIGVuZ2luZS0+c2NyYXRjaCk7 CiAKLQkJCWlmIChyZXF1ZXN0LT5jdHgtPmVuZ2luZVtpXS5zdGF0ZSkgewotCQkJCWVlLT5jdHgg PSBpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKLQkJCQkJCQkJCXJlcXVl c3QtPmN0eC0+ZW5naW5lW2ldLnN0YXRlLT5vYmopOwotCQkJfQorCQkJZWUtPmN0eCA9CisJCQkJ aTkxNV9lcnJvcl9vYmplY3RfY3JlYXRlKGRldl9wcml2LAorCQkJCQkJCSByZXF1ZXN0LT5jdHgt PmVuZ2luZVtpXS5zdGF0ZSk7CiAKIAkJCWlmIChyZXF1ZXN0LT5waWQpIHsKIAkJCQlzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2s7CkBAIC0xMTAxLDE2ICsxMDkwLDE1IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQllZS0+Y3B1X3JpbmdfaGVhZCA9IHJpbmctPmhlYWQ7CiAJCQllZS0+Y3B1X3JpbmdfdGFpbCA9 IHJpbmctPnRhaWw7CiAJCQllZS0+cmluZ2J1ZmZlciA9Ci0JCQkJaTkxNV9lcnJvcl9nZ3R0X29i amVjdF9jcmVhdGUoZGV2X3ByaXYsCi0JCQkJCQkJICAgICAgcmluZy0+dm1hLT5vYmopOworCQkJ CWk5MTVfZXJyb3Jfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwgcmluZy0+dm1hKTsKIAkJfQogCiAJ CWVlLT5od3NfcGFnZSA9Ci0JCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJp diwKLQkJCQkJCSAgICAgIGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hLT5vYmopOworCQkJaTkxNV9l cnJvcl9vYmplY3RfY3JlYXRlKGRldl9wcml2LAorCQkJCQkJIGVuZ2luZS0+c3RhdHVzX3BhZ2Uu dm1hKTsKIAotCQllZS0+d2FfY3R4ID0gaTkxNV9lcnJvcl9nZ3R0X29iamVjdF9jcmVhdGUoZGV2 X3ByaXYsCi0JCQkJCQkJICAgZW5naW5lLT53YV9jdHgudm1hLT5vYmopOworCQllZS0+d2FfY3R4 ID0KKwkJCWk5MTVfZXJyb3Jfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwgZW5naW5lLT53YV9jdHgu dm1hKTsKIAogCQljb3VudCA9IDA7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVu Z2luZS0+cmVxdWVzdF9saXN0LCBsaW5rKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CmluZGV4IDNkZWVlMDMwNmU4Mi4uMTUxMjljNjVkNjVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0yMjA2LDE0ICsyMjA2LDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg aW50ZWxfc3VyZl9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2CiAJfQogfQogCi1pbnQKLWludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLAotCQkJICAgdW5zaWduZWQgaW50IHJvdGF0aW9uKQorc3RydWN0IGk5 MTVfdm1hICoKK2ludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGZiLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmoo ZmIpOwogCXN0cnVjdCBpOTE1X2dndHRfdmlldyB2aWV3OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1h OwogCXUzMiBhbGlnbm1lbnQ7CiAJaW50IHJldDsKIApAQCAtMjI0MCwxMCArMjI0MCwxMSBAQCBp bnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkg Ki8KIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKLQlyZXQgPSBpOTE1X2dlbV9v YmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUob2JqLCBhbGlnbm1lbnQsCi0JCQkJCQkgICAmdmll dyk7Ci0JaWYgKHJldCkKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxh bmUob2JqLCBhbGlnbm1lbnQsICZ2aWV3KTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJcmV0ID0g UFRSX0VSUih2bWEpOwogCQlnb3RvIGVycl9wbTsKKwl9CiAKIAkvKiBJbnN0YWxsIGEgZmVuY2Ug Zm9yIHRpbGVkIHNjYW4tb3V0LiBQcmUtaTk2NSBhbHdheXMgbmVlZHMgYQogCSAqIGZlbmNlLCB3 aGVyZWFzIDk2NSsgb25seSByZXF1aXJlcyBhIGZlbmNlIGlmIHVzaW5nCkBAIC0yMjcwLDE5ICsy MjcxLDIwIEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLAogCX0KIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKLQlyZXR1cm4g MDsKKwlyZXR1cm4gdm1hOwogCiBlcnJfdW5waW46Ci0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zy b21fZGlzcGxheV9wbGFuZShvYmosICZ2aWV3KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJv bV9kaXNwbGF5X3BsYW5lKHZtYSk7CiBlcnJfcG06CiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2 X3ByaXYpOwotCXJldHVybiByZXQ7CisJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIAogdm9pZCBp bnRlbF91bnBpbl9mYl9vYmooc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHVuc2lnbmVkIGlu dCByb3RhdGlvbikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxf ZmJfb2JqKGZiKTsKIAlzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgdmlldzsKKwlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKIAogCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmb2JqLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KSk7CiAKQEAgLTIyOTEsNyArMjI5Myw4IEBAIHZvaWQgaW50ZWxfdW5waW5fZmJf b2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pCiAJ aWYgKHZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCiAJCWk5MTVfZ2VtX29iamVj dF91bnBpbl9mZW5jZShvYmopOwogCi0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxh eV9wbGFuZShvYmosICZ2aWV3KTsKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfdG9fZ2d0dChvYmos ICZ2aWV3KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKHZtYSk7 CiB9CiAKIC8qCkBAIC0yNTUyLDcgKzI1NTUsNyBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVf b2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJY29udGludWU7CiAKIAkJb2Jq ID0gaW50ZWxfZmJfb2JqKGZiKTsKLQkJaWYgKGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmop ID09IHBsYW5lX2NvbmZpZy0+YmFzZSkgeworCQlpZiAoaTkxNV9nZW1fb2JqZWN0X2dndHRfb2Zm c2V0KG9iaiwgTlVMTCkgPT0gcGxhbmVfY29uZmlnLT5iYXNlKSB7CiAJCQlkcm1fZnJhbWVidWZm ZXJfcmVmZXJlbmNlKGZiKTsKIAkJCWdvdG8gdmFsaWRfZmI7CiAJCX0KQEAgLTI3MDksMTEgKzI3 MTIsMTEgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwcmltYXJ5LAogCUk5MTVfV1JJVEUoRFNQU1RSSURFKHBsYW5lKSwgZmItPnBpdGNo ZXNbMF0pOwogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CiAJCUk5MTVfV1JJVEUo RFNQU1VSRihwbGFuZSksCi0JCQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGlu dGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKKwkJCSAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X29m ZnNldChvYmosIE5VTEwpICsgaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQpOwogCQlJOTE1X1dS SVRFKERTUFRJTEVPRkYocGxhbmUpLCAoeSA8PCAxNikgfCB4KTsKIAkJSTkxNV9XUklURShEU1BM SU5PRkYocGxhbmUpLCBsaW5lYXJfb2Zmc2V0KTsKIAl9IGVsc2UKLQkJSTkxNV9XUklURShEU1BB RERSKHBsYW5lKSwgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikgKyBsaW5lYXJfb2Zmc2V0 KTsKKwkJSTkxNV9XUklURShEU1BBRERSKHBsYW5lKSwgaTkxNV9nZW1fb2JqZWN0X2dndHRfb2Zm c2V0KG9iaiwgTlVMTCkgKyBsaW5lYXJfb2Zmc2V0KTsKIAlQT1NUSU5HX1JFQUQocmVnKTsKIH0K IApAQCAtMjgxMyw3ICsyODE2LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAogCUk5MTVfV1JJVEUoRFNQU1RS SURFKHBsYW5lKSwgZmItPnBpdGNoZXNbMF0pOwogCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSks Ci0JCSAgIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICsgaW50ZWxfY3J0Yy0+ZHNwYWRk cl9vZmZzZXQpOworCQkgICBpOTE1X2dlbV9vYmplY3RfZ2d0dF9vZmZzZXQob2JqLCBOVUxMKSAr IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKIAlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElT X0JST0FEV0VMTChkZXYpKSB7CiAJCUk5MTVfV1JJVEUoRFNQT0ZGU0VUKHBsYW5lKSwgKHkgPDwg MTYpIHwgeCk7CiAJfSBlbHNlIHsKQEAgLTI4NDYsNyArMjg0OSw3IEBAIHUzMiBpbnRlbF9wbGFu ZV9vYmpfb2Zmc2V0KHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsCiAJaW50ZWxfZmls bF9mYl9nZ3R0X3ZpZXcoJnZpZXcsIGludGVsX3BsYW5lLT5iYXNlLnN0YXRlLT5mYiwKIAkJCQlp bnRlbF9wbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRpb24pOwogCi0Jdm1hID0gaTkxNV9nZW1fb2Jq X3RvX2dndHRfdmlldyhvYmosICZ2aWV3KTsKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfdG9fZ2d0 dChvYmosICZ2aWV3KTsKIAlpZiAoV0FSTighdm1hLCAiZ2d0dCB2bWEgZm9yIGRpc3BsYXkgb2Jq ZWN0IG5vdCBmb3VuZCEgKHZpZXc9JXUpXG4iLAogCQl2aWV3LnR5cGUpKQogCQlyZXR1cm4gLTE7 CkBAIC0xMTU3Nyw2ICsxMTU4MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK IAlib29sIG1taW9fZmxpcDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7 CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIAogCS8qCkBAIC0xMTY4NSw5ICsx MTY4OSwxMSBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAogCW1taW9fZmxpcCA9IHVzZV9tbWlvX2ZsaXAoZW5naW5lLCBvYmopOwogCi0J cmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooZmIsIHByaW1hcnktPnN0YXRlLT5yb3Rh dGlvbik7Ci0JaWYgKHJldCkKKwl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihmYiwg cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJcmV0ID0g UFRSX0VSUih2bWEpOwogCQlnb3RvIGNsZWFudXBfcGVuZGluZzsKKwl9CiAKIAl3b3JrLT5ndHRf b2Zmc2V0ID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19pbnRlbF9wbGFuZShwcmltYXJ5KSwK IAkJCQkJCSAgb2JqLCAwKTsKQEAgLTE0MDQwLDcgKzE0MDQ2LDExIEBAIGludGVsX3ByZXBhcmVf cGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCWlmIChyZXQpCiAJCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0XG4iKTsKIAl9IGVsc2UgewotCQly ZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihmYiwgbmV3X3N0YXRlLT5yb3RhdGlvbik7 CisJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCisJCXZtYSA9IGludGVsX3Bpbl9hbmRfZmVuY2Vf ZmJfb2JqKGZiLCBuZXdfc3RhdGUtPnJvdGF0aW9uKTsKKwkJaWYgKElTX0VSUih2bWEpKQorCQkJ cmV0ID0gUFRSX0VSUih2bWEpOwogCX0KIAogCWlmIChyZXQgPT0gMCkgewpAQCAtMTQzOTYsNyAr MTQ0MDYsNyBAQCBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAogCWlmICghb2JqKQogCQlhZGRyID0gMDsKIAllbHNlIGlmICghSU5URUxfSU5GTyhkZXYp LT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpCi0JCWFkZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXQob2JqKTsKKwkJYWRkciA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChvYmosIE5VTEwp OwogCWVsc2UKIAkJYWRkciA9IG9iai0+cGh5c19oYW5kbGUtPmJ1c2FkZHI7CiAKQEAgLTE2MjI4 LDcgKzE2MjM4LDYgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwogCXN0cnVjdCBkcm1fY3J0YyAqYzsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOwotCWludCByZXQ7CiAKIAlpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7CiAK QEAgLTE2MjQyLDE1ICsxNjI1MSwxNyBAQCB2b2lkIGludGVsX21vZGVzZXRfZ2VtX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiBmb3IgdGhpcy4KIAkgKi8KIAlmb3JfZWFjaF9jcnRj KGRldiwgYykgeworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwogCQlvYmogPSBpbnRlbF9mYl9v YmooYy0+cHJpbWFyeS0+ZmIpOwogCQlpZiAob2JqID09IE5VTEwpCiAJCQljb250aW51ZTsKIAog CQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCXJldCA9IGludGVsX3Bpbl9hbmRf ZmVuY2VfZmJfb2JqKGMtPnByaW1hcnktPmZiLAorCQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNl X2ZiX29iaihjLT5wcmltYXJ5LT5mYiwKIAkJCQkJCSBjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRp b24pOwogCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQkJaWYgKHJldCkgewor CQlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHBpbiBib290IGZi IG9uIHBpcGUgJWRcbiIsCiAJCQkJICB0b19pbnRlbF9jcnRjKGMpLT5waXBlKTsKIAkJCWRybV9m cmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShjLT5wcmltYXJ5LT5mYik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCmluZGV4IDFhZDJlMmM1ZjU4MC4uNTA1MGNjMTI2OTE1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciB7 CiBzdHJ1Y3QgaW50ZWxfZmJkZXYgewogCXN0cnVjdCBkcm1fZmJfaGVscGVyIGhlbHBlcjsKIAlz dHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmZiOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWFz eW5jX2Nvb2tpZV90IGNvb2tpZTsKIAlpbnQgcHJlZmVycmVkX2JwcDsKIH07CkBAIC0xMjE3LDgg KzEyMTgsOCBAQCBib29sIGludGVsX2dldF9sb2FkX2RldGVjdF9waXBlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCiB2b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRlY3RfcGlwZShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJCSAgICBzdHJ1Y3QgaW50ZWxfbG9h ZF9kZXRlY3RfcGlwZSAqb2xkLAogCQkJCSAgICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9j dHggKmN0eCk7Ci1pbnQgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCi0JCQkgICAgICAgdW5zaWduZWQgaW50IHJvdGF0aW9uKTsKK3N0cnVjdCBp OTE1X3ZtYSAqCitpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKTsKIHZvaWQgaW50ZWxfdW5waW5fZmJfb2Jq KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pOwogc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqCiBfX2ludGVsX2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwppbmRleCA4NWFkYzJiOTI1 OTQuLmMyZWY3MWExMjE1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZmJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKQEAgLTczNyw3ICs3 MzcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAogCS8qIEZJWE1FOiBXZSBsYWNrIHRoZSBwcm9wZXIgbG9ja2luZyBo ZXJlLCBzbyBvbmx5IHJ1biB0aGlzIG9uIHRoZQogCSAqIHBsYXRmb3JtcyB0aGF0IG5lZWQuICov CiAJaWYgKElTX0dFTihkZXZfcHJpdiwgNSwgNikpCi0JCWNhY2hlLT5mYi5pbGtfZ2d0dF9vZmZz ZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKTsKKwkJY2FjaGUtPmZiLmlsa19nZ3R0 X29mZnNldCA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChvYmosIE5VTEwpOwogCWNhY2hl LT5mYi5waXhlbF9mb3JtYXQgPSBmYi0+cGl4ZWxfZm9ybWF0OwogCWNhY2hlLT5mYi5zdHJpZGUg PSBmYi0+cGl0Y2hlc1swXTsKIAljYWNoZS0+ZmIuZmVuY2VfcmVnID0gb2JqLT5mZW5jZV9yZWc7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCAwNDM2YjQ4NjlkNTcuLjY5MmJmNzVk YjNiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCkBAIC0xODgsNyArMTg4LDYgQEAg c3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAog CXN0cnVjdCBmYl9pbmZvICppbmZvOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwogCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJ Ym9vbCBwcmVhbGxvYyA9IGZhbHNlOwogCXZvaWQgX19pb21lbSAqdmFkZHI7CiAJaW50IHJldDsK QEAgLTIxNiwxNyArMjE1LDE3IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmhlbHBlciwKIAkJc2l6ZXMtPmZiX2hlaWdodCA9IGludGVsX2ZiLT5iYXNl LmhlaWdodDsKIAl9CiAKLQlvYmogPSBpbnRlbF9mYi0+b2JqOwotCiAJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJLyogUGluIHRoZSBHR1RUIHZtYSBmb3Igb3VyIGFjY2VzcyB2 aWEgaW5mby0+c2NyZWVuX2Jhc2UuCiAJICogVGhpcyBhbHNvIHZhbGlkYXRlcyB0aGF0IGFueSBl eGlzdGluZyBmYiBpbmhlcml0ZWQgZnJvbSB0aGUKIAkgKiBCSU9TIGlzIHN1aXRhYmxlIGZvciBv d24gYWNjZXNzLgogCSAqLwotCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKCZpZmJk ZXYtPmZiLT5iYXNlLCBCSVQoRFJNX1JPVEFURV8wKSk7Ci0JaWYgKHJldCkKKwl2bWEgPSBpbnRl bF9waW5fYW5kX2ZlbmNlX2ZiX29iaigmaWZiZGV2LT5mYi0+YmFzZSwgQklUKERSTV9ST1RBVEVf MCkpOworCWlmIChJU19FUlIodm1hKSkgeworCQlyZXQgPSBQVFJfRVJSKHZtYSk7CiAJCWdvdG8g b3V0X3VubG9jazsKKwl9CiAKIAlpbmZvID0gZHJtX2ZiX2hlbHBlcl9hbGxvY19mYmkoaGVscGVy KTsKIAlpZiAoSVNfRVJSKGluZm8pKSB7CkBAIC0yNDYsOCArMjQ1LDYgQEAgc3RhdGljIGludCBp bnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCWluZm8tPmZsYWdz ID0gRkJJTkZPX0RFRkFVTFQgfCBGQklORk9fQ0FOX0ZPUkNFX09VVFBVVDsKIAlpbmZvLT5mYm9w cyA9ICZpbnRlbGZiX29wczsKIAotCXZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0KG9iaik7Ci0K IAkvKiBzZXR1cCBhcGVydHVyZSBiYXNlL3NpemUgZm9yIHZlc2FmYiB0YWtlb3ZlciAqLwogCWlu Zm8tPmFwZXJ0dXJlcy0+cmFuZ2VzWzBdLmJhc2UgPSBkZXYtPm1vZGVfY29uZmlnLmZiX2Jhc2U7 CiAJaW5mby0+YXBlcnR1cmVzLT5yYW5nZXNbMF0uc2l6ZSA9IGdndHQtPm1hcHBhYmxlX2VuZDsK QEAgLTI3NCwxNCArMjcxLDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmhlbHBlciwKIAkgKiBJZiB0aGUgb2JqZWN0IGlzIHN0b2xlbiBob3dldmVy LCBpdCB3aWxsIGJlIGZ1bGwgb2Ygd2hhdGV2ZXIKIAkgKiBnYXJiYWdlIHdhcyBsZWZ0IGluIHRo ZXJlLgogCSAqLwotCWlmIChpZmJkZXYtPmZiLT5vYmotPnN0b2xlbiAmJiAhcHJlYWxsb2MpCisJ aWYgKGludGVsX2ZiLT5vYmotPnN0b2xlbiAmJiAhcHJlYWxsb2MpCiAJCW1lbXNldF9pbyhpbmZv LT5zY3JlZW5fYmFzZSwgMCwgaW5mby0+c2NyZWVuX3NpemUpOwogCiAJLyogVXNlIGRlZmF1bHQg c2NyYXRjaCBwaXhtYXAgKGluZm8tPnBpeG1hcC5mbGFncyA9IEZCX1BJWE1BUF9TWVNURU0pICov CiAKLQlEUk1fREVCVUdfS01TKCJhbGxvY2F0ZWQgJWR4JWQgZmI6IDB4JTA4bGx4LCBibyAlcFxu IiwKLQkJICAgICAgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAotCQkgICAgICBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQob2JqKSwgb2JqKTsKKwlEUk1fREVCVUdfS01TKCJhbGxvY2F0ZWQgJWR4JWQg ZmI6IDB4JTA4bGx4XG4iLAorCQkgICAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIHZtYS0+bm9k ZS5zdGFydCk7CisJaWZiZGV2LT52bWEgPSB2bWE7CiAKIAltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKIAl2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KGRldi0+cGRldiwgaW5m byk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggNThlZjQ0MThh MmVmLi4xMWVhMGFlMTI4NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKQEAgLTIzNywxMiArMjM3LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWNfdWNvZGVfcmVz cG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogICogTm90ZSB0aGF0IEd1 QyBuZWVkcyB0aGUgQ1NTIGhlYWRlciBwbHVzIHVLZXJuZWwgY29kZSB0byBiZSBjb3BpZWQgYnkg dGhlCiAgKiBETUEgZW5naW5lIGluIG9uZSBvcGVyYXRpb24sIHdoZXJlYXMgdGhlIFJTQSBzaWdu YXR1cmUgaXMgbG9hZGVkIHZpYSBNTUlPLgogICovCi1zdGF0aWMgaW50IGd1Y191Y29kZV94ZmVy X2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgaW50IGd1Y191 Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAg ICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncg PSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3 X29iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKIAl1bnNpZ25lZCBsb25nIG9mZnNldDsKLQlzdHJ1 Y3Qgc2dfdGFibGUgKnNnID0gZndfb2JqLT5wYWdlczsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0g dm1hLT5vYmotPnBhZ2VzOwogCXUzMiBzdGF0dXMsIHJzYVtVT1NfUlNBX1NDUkFUQ0hfTUFYX0NP VU5UXTsKIAlpbnQgaSwgcmV0ID0gMDsKIApAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBpbnQg Z3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlJ OTE1X1dSSVRFKERNQV9DT1BZX1NJWkUsIGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVj b2RlX3NpemUpOwogCiAJLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIG5ldyBibG9i ICovCi0Jb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGZ3X29iaikgKyBndWNfZnct PmhlYWRlcl9vZmZzZXQ7CisJb2Zmc2V0ID0gdm1hLT5ub2RlLnN0YXJ0ICsgZ3VjX2Z3LT5oZWFk ZXJfb2Zmc2V0OwogCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zm c2V0KSk7CiAJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0 KSAmIDB4RkZGRik7CiAKQEAgLTMxNCw2ICszMTQsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94 ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxf Z3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCBy ZXQ7CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT5n dWNfZndfb2JqLCBmYWxzZSk7CkBAIC0zMjIsMTAgKzMyMywxMCBAQCBzdGF0aWMgaW50IGd1Y191 Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJcmV0dXJuIHJl dDsKIAl9CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oZ3VjX2Z3LT5ndWNfZndf b2JqLCBOVUxMLCAwLCAwLCAwKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9ERUJVR19EUklWRVIoInBp biBmYWlsZWQgJWRcbiIsIHJldCk7Ci0JCXJldHVybiByZXQ7CisJdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X2dndHRfcGluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7CisJaWYgKElT X0VSUih2bWEpKSB7CisJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIChpbnQp UFRSX0VSUih2bWEpKTsKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsKIAl9CiAKIAkvKiBJbnZhbGlk YXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICov CkBAIC0zNjgsNyArMzY5LDcgQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlzZXRfZ3VjX2luaXRfcGFyYW1zKGRldl9wcml2 KTsKIAotCXJldCA9IGd1Y191Y29kZV94ZmVyX2RtYShkZXZfcHJpdik7CisJcmV0ID0gZ3VjX3Vj b2RlX3hmZXJfZG1hKGRldl9wcml2LCB2bWEpOwogCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwogCkBAIC0zNzYsNyArMzc3LDcgQEAgc3RhdGlj IGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ ICogV2Uga2VlcCB0aGUgb2JqZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQg d2UgY2FuIHVucGluIGl0CiAJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRv ZXNuJ3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4KIAkgKi8KLQlpOTE1X2dlbV9vYmplY3Rf Z2d0dF91bnBpbihndWNfZnctPmd1Y19md19vYmopOworCWk5MTVfdm1hX3VucGluKHZtYSk7CiAK IAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCmluZGV4IDNm NDRiNzdhYTBhMi4uY2UwODM1ZWVlMmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jCkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfb3ZlcmxheV9yZWxlYXNl X29sZF92aWRfdGFpbChzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJaTkxNV9nZW1f dHJhY2tfZmIodm1hLT5vYmosIE5VTEwsCiAJCQkgIElOVEVMX0ZST05UQlVGRkVSX09WRVJMQVko b3ZlcmxheS0+Y3J0Yy0+cGlwZSkpOwogCi0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlz cGxheV9wbGFuZSh2bWEtPm9iaiwgJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7CisJaTkxNV9nZW1f b2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZSh2bWEpOwogCWk5MTVfZ2VtX29iamVjdF9w dXQodm1hLT5vYmopOwogfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf b3ZlcmxheV9vZmZfdGFpbChzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJaWYgKFdB Uk5fT04oIXZtYSkpCiAJCXJldHVybjsKIAotCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rp c3BsYXlfcGxhbmUodm1hLT5vYmosICZpOTE1X2dndHRfdmlld19ub3JtYWwpOworCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUodm1hKTsKIAlpOTE1X2dlbV9vYmplY3Rf cHV0KHZtYS0+b2JqKTsKIAogCW92ZXJsYXktPmNydGMtPm92ZXJsYXkgPSBOVUxMOwpAQCAtNzU0 LDEyICs3NTQsMTAgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2RvX3B1dF9pbWFnZShzdHJ1 Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7 CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUobmV3X2JvLCAw LAorCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShuZXdfYm8sIDAs CiAJCQkJCQkgICAmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKLQlpZiAocmV0ICE9IDApCi0JCXJl dHVybiByZXQ7Ci0KLQl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dF92aWV3KG5ld19ibywgJmk5 MTVfZ2d0dF92aWV3X25vcm1hbCk7CisJaWYgKElTX0VSUih2bWEpKQorCQlyZXR1cm4gUFRSX0VS Uih2bWEpOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShuZXdfYm8pOwogCWlm IChyZXQpCkBAIC04MDIsNyArODAwLDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2RvX3B1 dF9pbWFnZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAlzd2lkdGggPSBwYXJhbXMt PnNyY193OwogCXN3aWR0aHN3ID0gY2FsY19zd2lkdGhzdyhkZXZfcHJpdiwgcGFyYW1zLT5vZmZz ZXRfWSwgdG1wX3dpZHRoKTsKIAlzaGVpZ2h0ID0gcGFyYW1zLT5zcmNfaDsKLQlpb3dyaXRlMzIo aTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG5ld19ibykgKyBwYXJhbXMtPm9mZnNldF9ZLCAmcmVn cy0+T0JVRl8wWSk7CisJaW93cml0ZTMyKHZtYS0+bm9kZS5zdGFydCArIHBhcmFtcy0+b2Zmc2V0 X1ksICZyZWdzLT5PQlVGXzBZKTsKIAlvc3RyaWRlID0gcGFyYW1zLT5zdHJpZGVfWTsKIAogCWlm IChwYXJhbXMtPmZvcm1hdCAmIEk5MTVfT1ZFUkxBWV9ZVVZfUExBTkFSKSB7CkBAIC04MTYsOCAr ODE0LDggQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2RvX3B1dF9pbWFnZShzdHJ1Y3QgaW50 ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAkJCQkgICAgICBwYXJhbXMtPnNyY193L3V2X2hzY2FsZSk7 CiAJCXN3aWR0aHN3IHw9IG1heF90KHUzMiwgdG1wX1UsIHRtcF9WKSA8PCAxNjsKIAkJc2hlaWdo dCB8PSAocGFyYW1zLT5zcmNfaC91dl92c2NhbGUpIDw8IDE2OwotCQlpb3dyaXRlMzIoaTkxNV9n ZW1fb2JqX2dndHRfb2Zmc2V0KG5ld19ibykgKyBwYXJhbXMtPm9mZnNldF9VLCAmcmVncy0+T0JV Rl8wVSk7Ci0JCWlvd3JpdGUzMihpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQobmV3X2JvKSArIHBh cmFtcy0+b2Zmc2V0X1YsICZyZWdzLT5PQlVGXzBWKTsKKwkJaW93cml0ZTMyKHZtYS0+bm9kZS5z dGFydCArIHBhcmFtcy0+b2Zmc2V0X1UsICZyZWdzLT5PQlVGXzBVKTsKKwkJaW93cml0ZTMyKHZt YS0+bm9kZS5zdGFydCArIHBhcmFtcy0+b2Zmc2V0X1YsICZyZWdzLT5PQlVGXzBWKTsKIAkJb3N0 cmlkZSB8PSBwYXJhbXMtPnN0cmlkZV9VViA8PCAxNjsKIAl9CiAKQEAgLTg0OSw3ICs4NDcsNyBA QCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9fcHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5LAogCXJldHVybiAwOwogCiBvdXRfdW5waW46Ci0JaTkxNV9nZW1fb2JqZWN0 X2dndHRfdW5waW4obmV3X2JvKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5 X3BsYW5lKHZtYSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTM3Miw2ICsxMzcwLDcgQEAgdm9p ZCBpbnRlbF9zZXR1cF9vdmVybGF5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqcmVnX2JvOwogCXN0cnVjdCBvdmVybGF5X3JlZ2lzdGVycyBfX2lvbWVtICpyZWdzOwor CXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gTlVMTDsKIAlpbnQgcmV0OwogCiAJaWYgKCFIQVNfT1ZF UkxBWShkZXZfcHJpdikpCkBAIC0xNDA1LDEzICsxNDA0LDE0IEBAIHZvaWQgaW50ZWxfc2V0dXBf b3ZlcmxheShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCX0KIAkJb3Zlcmxh eS0+ZmxpcF9hZGRyID0gcmVnX2JvLT5waHlzX2hhbmRsZS0+YnVzYWRkcjsKIAl9IGVsc2Ugewot CQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ocmVnX2JvLCBOVUxMLAorCQl2bWEgPSBp OTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ocmVnX2JvLCBOVUxMLAogCQkJCQkgICAgICAgMCwgUEFH RV9TSVpFLCBQSU5fTUFQUEFCTEUpOwotCQlpZiAocmV0KSB7CisJCWlmIChJU19FUlIodm1hKSkg ewogCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIG92ZXJsYXkgcmVnaXN0ZXIgYm9cbiIpOwor CQkJcmV0ID0gUFRSX0VSUih2bWEpOwogCQkJZ290byBvdXRfZnJlZV9ibzsKIAkJfQotCQlvdmVy bGF5LT5mbGlwX2FkZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQocmVnX2JvKTsKKwkJb3Zl cmxheS0+ZmxpcF9hZGRyID0gdm1hLT5ub2RlLnN0YXJ0OwogCiAJCXJldCA9IGk5MTVfZ2VtX29i amVjdF9zZXRfdG9fZ3R0X2RvbWFpbihyZWdfYm8sIHRydWUpOwogCQlpZiAocmV0KSB7CkBAIC0x NDQzLDggKzE0NDMsOCBAQCB2b2lkIGludGVsX3NldHVwX292ZXJsYXkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybjsKIAogb3V0X3VucGluX2JvOgotCWlmICghT1ZF UkxBWV9ORUVEU19QSFlTSUNBTChkZXZfcHJpdikpCi0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3Vu cGluKHJlZ19ibyk7CisJaWYgKHZtYSkKKwkJaTkxNV92bWFfdW5waW4odm1hKTsKIG91dF9mcmVl X2JvOgogCWk5MTVfZ2VtX29iamVjdF9wdXQocmVnX2JvKTsKIG91dF9mcmVlOgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCA1YmVhZmQ0YmMxYzEuLjAxMGQ2OTgxMDY1NyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2bHZfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwKIAogCUk5MTVfV1JJVEUoU1BTSVpF KHBpcGUsIHBsYW5lKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwogCUk5MTVfV1JJVEUoU1BD TlRSKHBpcGUsIHBsYW5lKSwgc3ByY3RsKTsKLQlJOTE1X1dSSVRFKFNQU1VSRihwaXBlLCBwbGFu ZSksIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICsKLQkJICAgc3Byc3VyZl9vZmZzZXQp OworCUk5MTVfV1JJVEUoU1BTVVJGKHBpcGUsIHBsYW5lKSwKKwkJICAgaTkxNV9nZW1fb2JqZWN0 X2dndHRfb2Zmc2V0KG9iaiwgTlVMTCkgKyBzcHJzdXJmX29mZnNldCk7CiAJUE9TVElOR19SRUFE KFNQU1VSRihwaXBlLCBwbGFuZSkpOwogfQogCkBAIC02MTcsNyArNjE3LDcgQEAgaXZiX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJSTkxNV9XUklURShTUFJTQ0FMRShw aXBlKSwgc3Byc2NhbGUpOwogCUk5MTVfV1JJVEUoU1BSQ1RMKHBpcGUpLCBzcHJjdGwpOwogCUk5 MTVfV1JJVEUoU1BSU1VSRihwaXBlKSwKLQkJICAgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9i aikgKyBzcHJzdXJmX29mZnNldCk7CisJCSAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChv YmosIE5VTEwpICsgc3Byc3VyZl9vZmZzZXQpOwogCVBPU1RJTkdfUkVBRChTUFJTVVJGKHBpcGUp KTsKIH0KIApAQCAtNzQ2LDcgKzc0Niw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJSTkxNV9XUklURShEVlNTQ0FMRShwaXBlKSwgZHZzc2NhbGUpOwogCUk5 MTVfV1JJVEUoRFZTQ05UUihwaXBlKSwgZHZzY250cik7CiAJSTkxNV9XUklURShEVlNTVVJGKHBp cGUpLAotCQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGR2c3N1cmZfb2Zmc2V0 KTsKKwkJICAgaTkxNV9nZW1fb2JqZWN0X2dndHRfb2Zmc2V0KG9iaiwgTlVMTCkgKyBkdnNzdXJm X29mZnNldCk7CiAJUE9TVElOR19SRUFEKERWU1NVUkYocGlwZSkpOwogfQogCi0tIAoyLjguMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==