From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 17/41] drm/i915: Refactor object page API Date: Thu, 20 Oct 2016 16:03:59 +0100 Message-ID: <20161020150423.4560-18-chris@chris-wilson.co.uk> References: <20161020150423.4560-1-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-lf0-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFB6D89229 for ; Thu, 20 Oct 2016 15:04:49 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id b75so717235lfg.3 for ; Thu, 20 Oct 2016 08:04:49 -0700 (PDT) In-Reply-To: <20161020150423.4560-1-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 VGhlIHBsYW4gaXMgdG8gbWFrZSBvYnRhaW5pbmcgdGhlIGJhY2tpbmcgc3RvcmFnZSBmb3IgdGhl IG9iamVjdCBhdm9pZApzdHJ1Y3RfbXV0ZXggKGkuZS4gdXNlIGl0cyBvd24gbG9ja2luZykuIFRo ZSBmaXJzdCBzdGVwIGlzIHRvIHVwZGF0ZSB0aGUKQVBJIHNvIHRoYXQgbm9ybWFsIHVzZXJzIG9u bHkgY2FsbCBwaW4vdW5waW4gd2hpbHN0IHdvcmtpbmcgb24gdGhlCmJhY2tpbmcgc3RvcmFnZS4K ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpS ZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2 aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyAgICAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgfCAgMTcg Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8ICA5NCAr KysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAg IHwgMjA1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fYmF0Y2hfcG9vbC5jICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2RtYWJ1Zi5jICAgICAgIHwgIDE0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZmVuY2UuYyAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jICAgICAgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9p bnRlcm5hbC5jICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVu ZGVyX3N0YXRlLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlu a2VyLmMgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4u YyAgICAgICB8ICAyNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcu YyAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5j ICAgICAgfCAgMzAgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAg ICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAg ICAgIHwgICA2ICstCiAxNyBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9ucygrKSwgMjE0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3Bh cnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKaW5kZXggZjE5 MWQ3YjY2YjFkLi5mNTAzOWY0Zjk4OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfY21kX3BhcnNlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3Bh cnNlci5jCkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBpbnQgaW50ZWxfZW5naW5lX2NtZF9wYXJzZXIo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCX0KIAogCWlmIChyZXQgPT0gMCAmJiBu ZWVkc19jbGZsdXNoX2FmdGVyKQotCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHNoYWRvd19iYXRj aF9vYmotPm1hcHBpbmcsIGJhdGNoX2xlbik7CisJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2Uoc2hh ZG93X2JhdGNoX29iai0+bW0ubWFwcGluZywgYmF0Y2hfbGVuKTsKIAlpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKHNoYWRvd19iYXRjaF9vYmopOwogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggODhjOWQyMjJhN2U2Li40ODkzYTNiNjJhNjggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIGNo YXIgZ2V0X2dsb2JhbF9mbGFnKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIHN0 YXRpYyBjaGFyIGdldF9waW5fbWFwcGVkX2ZsYWcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIHsKLQlyZXR1cm4gb2JqLT5tYXBwaW5nID8gJ00nIDogJyAnOworCXJldHVybiBvYmot Pm1tLm1hcHBpbmcgPyAnTScgOiAnICc7CiB9CiAKIHN0YXRpYyB1NjQgaTkxNV9nZW1fb2JqX3Rv dGFsX2dndHRfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQpAQCAtMTU4LDgg KzE1OCw4IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCiAJCSAgIGk5MTVfZ2VtX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+ bGFzdF93cml0ZSwKIAkJCQkJICAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSwKIAkJ ICAgaTkxNV9jYWNoZV9sZXZlbF9zdHIoZGV2X3ByaXYsIG9iai0+Y2FjaGVfbGV2ZWwpLAotCQkg ICBvYmotPmRpcnR5ID8gIiBkaXJ0eSIgOiAiIiwKLQkJICAgb2JqLT5tYWR2ID09IEk5MTVfTUFE Vl9ET05UTkVFRCA/ICIgcHVyZ2VhYmxlIiA6ICIiKTsKKwkJICAgb2JqLT5tbS5kaXJ0eSA/ICIg ZGlydHkiIDogIiIsCisJCSAgIG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgPyAi IHB1cmdlYWJsZSIgOiAiIik7CiAJaWYgKG9iai0+YmFzZS5uYW1lKQogCQlzZXFfcHJpbnRmKG0s ICIgKG5hbWU6ICVkKSIsIG9iai0+YmFzZS5uYW1lKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZt YSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKSB7CkBAIC00MDMsMTIgKzQwMywxMiBAQCBzdGF0 aWMgaW50IGk5MTVfZ2VtX29iamVjdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKIAkJc2l6ZSArPSBvYmotPmJhc2Uuc2l6ZTsKIAkJKytjb3VudDsKIAotCQlpZiAob2JqLT5t YWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCkgeworCQlpZiAob2JqLT5tbS5tYWR2ID09IEk5MTVf TUFEVl9ET05UTkVFRCkgewogCQkJcHVyZ2VhYmxlX3NpemUgKz0gb2JqLT5iYXNlLnNpemU7CiAJ CQkrK3B1cmdlYWJsZV9jb3VudDsKIAkJfQogCi0JCWlmIChvYmotPm1hcHBpbmcpIHsKKwkJaWYg KG9iai0+bW0ubWFwcGluZykgewogCQkJbWFwcGVkX2NvdW50Kys7CiAJCQltYXBwZWRfc2l6ZSAr PSBvYmotPmJhc2Uuc2l6ZTsKIAkJfQpAQCAtNDI1LDEyICs0MjUsMTIgQEAgc3RhdGljIGludCBp OTE1X2dlbV9vYmplY3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCQkr K2RweV9jb3VudDsKIAkJfQogCi0JCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVE KSB7CisJCWlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEKSB7CiAJCQlwdXJn ZWFibGVfc2l6ZSArPSBvYmotPmJhc2Uuc2l6ZTsKIAkJCSsrcHVyZ2VhYmxlX2NvdW50OwogCQl9 CiAKLQkJaWYgKG9iai0+bWFwcGluZykgeworCQlpZiAob2JqLT5tbS5tYXBwaW5nKSB7CiAJCQlt YXBwZWRfY291bnQrKzsKIAkJCW1hcHBlZF9zaXplICs9IG9iai0+YmFzZS5zaXplOwogCQl9CkBA IC0yMDI2LDcgKzIwMjYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2R1bXBfbHJjX29iaihzdHJ1Y3Qg c2VxX2ZpbGUgKm0sCiAJCXNlcV9wcmludGYobSwgIlx0Qm91bmQgaW4gR0dUVCBhdCAweCUwOHhc biIsCiAJCQkgICBpOTE1X2dndHRfb2Zmc2V0KHZtYSkpOwogCi0JaWYgKGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZXModm1hLT5vYmopKSB7CisJaWYgKGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMo dm1hLT5vYmopKSB7CiAJCXNlcV9wdXRzKG0sICJcdEZhaWxlZCB0byBnZXQgcGFnZXMgZm9yIGNv bnRleHQgb2JqZWN0XG5cbiIpOwogCQlyZXR1cm47CiAJfQpAQCAtMjA0NSw2ICsyMDQ1LDcgQEAg c3RhdGljIHZvaWQgaTkxNV9kdW1wX2xyY19vYmooc3RydWN0IHNlcV9maWxlICptLAogCQlrdW5t YXBfYXRvbWljKHJlZ19zdGF0ZSk7CiAJfQogCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2Vz KHZtYS0+b2JqKTsKIAlzZXFfcHV0YyhtLCAnXG4nKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggZTJlNDhhZjhkNDFmLi5mMmVkYTJiZjAyMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaApAQCAtMjIzOSwxNyArMjIzOSw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsK IAkgKi8KICNkZWZpbmUgSTkxNV9CT19BQ1RJVkVfUkVGIChJOTE1X0JPX0FDVElWRV9TSElGVCAr IEk5MTVfTlVNX0VOR0lORVMpCiAKLQkvKioKLQkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0 IGhhcyBiZWVuIHdyaXR0ZW4gdG8gc2luY2UgbGFzdCBib3VuZAotCSAqIHRvIHRoZSBHVFQKLQkg Ki8KLQl1bnNpZ25lZCBpbnQgZGlydHk6MTsKLQotCS8qKgotCSAqIEFkdmljZTogYXJlIHRoZSBi YWNraW5nIHBhZ2VzIHB1cmdlYWJsZT8KLQkgKi8KLQl1bnNpZ25lZCBpbnQgbWFkdjoyOwotCiAJ LyoKIAkgKiBJcyB0aGUgb2JqZWN0IHRvIGJlIG1hcHBlZCBhcyByZWFkLW9ubHkgdG8gdGhlIEdQ VQogCSAqIE9ubHkgaG9ub3VyZWQgaWYgaGFyZHdhcmUgaGFzIHJlbGV2YW50IHB0ZSBiaXQKQEAg LTIyNzEsMTYgKzIyNjAsMzEgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXVuc2ln bmVkIGludCBiaW5kX2NvdW50OwogCXVuc2lnbmVkIGludCBwaW5fZGlzcGxheTsKIAotCXN0cnVj dCBzZ190YWJsZSAqcGFnZXM7Ci0JaW50IHBhZ2VzX3Bpbl9jb3VudDsKLQlzdHJ1Y3QgaTkxNV9n ZW1fb2JqZWN0X3BhZ2VfaXRlciB7Ci0JCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dfcG9zOwotCQl1 bnNpZ25lZCBpbnQgc2dfaWR4OyAvKiBpbiBwYWdlcywgYnV0IDMyYml0IGVlayEgKi8KKwlzdHJ1 Y3QgeworCQl1bnNpZ25lZCBpbnQgcGFnZXNfcGluX2NvdW50OworCisJCXN0cnVjdCBzZ190YWJs ZSAqcGFnZXM7CisJCXZvaWQgKm1hcHBpbmc7CiAKLQkJc3RydWN0IHJhZGl4X3RyZWVfcm9vdCBy YWRpeDsKLQkJc3RydWN0IG11dGV4IGxvY2s7IC8qIHByb3RlY3RzIHRoaXMgY2FjaGUgKi8KLQl9 IGdldF9wYWdlOwotCXZvaWQgKm1hcHBpbmc7CisJCXN0cnVjdCBpOTE1X2dlbV9vYmplY3RfcGFn ZV9pdGVyIHsKKwkJCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dfcG9zOworCQkJdW5zaWduZWQgaW50 IHNnX2lkeDsgLyogaW4gcGFnZXMsIGJ1dCAzMmJpdCBlZWshICovCisKKwkJCXN0cnVjdCByYWRp eF90cmVlX3Jvb3QgcmFkaXg7CisJCQlzdHJ1Y3QgbXV0ZXggbG9jazsgLyogcHJvdGVjdHMgdGhp cyBjYWNoZSAqLworCQl9IGdldF9wYWdlOworCisJCS8qKgorCQkgKiBBZHZpY2U6IGFyZSB0aGUg YmFja2luZyBwYWdlcyBwdXJnZWFibGU/CisJCSAqLworCQl1bnNpZ25lZCBpbnQgbWFkdjoyOwor CisJCS8qKgorCQkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHdyaXR0ZW4g dG8gc2luY2UgdGhlCisJCSAqIHBhZ2VzIHdlcmUgbGFzdCBhY3F1aXJlZC4KKwkJICovCisJCWJv b2wgZGlydHk6MTsKKwl9IG1tOwogCiAJLyoqIEJyZWFkY3J1bWIgb2YgbGFzdCByZW5kZXJpbmcg dG8gdGhlIGJ1ZmZlci4KIAkgKiBUaGVyZSBjYW4gb25seSBiZSBvbmUgd3JpdGVyLCBidXQgd2Ug YWxsb3cgZm9yIG11bHRpcGxlIHJlYWRlcnMuCkBAIC0zMTY5LDE0ICszMTczLDExIEBAIHZvaWQg aTkxNV92bWFfY2xvc2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwogdm9pZCBpOTE1X3ZtYV9kZXN0 cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKIAogaW50IGk5MTVfZ2VtX29iamVjdF91bmJpbmQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Ci1pbnQgaTkxNV9nZW1fb2JqZWN0X3B1 dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgaTkxNV9nZW1f cmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogCiB2b2lkIGk5 MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OwogCi1pbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IF9fc2dfcGFnZV9j b3VudChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQorc3RhdGljIGlubGluZSBpbnQgX19zZ19wYWdl X2NvdW50KGNvbnN0IHN0cnVjdCBzY2F0dGVybGlzdCAqc2cpCiB7CiAJcmV0dXJuIHNnLT5sZW5n dGggPj4gUEFHRV9TSElGVDsKIH0KQEAgLTMxOTcsMTkgKzMxOTgsNTIgQEAgZG1hX2FkZHJfdAog aTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAogCQkJCXVuc2lnbmVkIGxvbmcgbik7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1 X2dlbV9vYmplY3RfcGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitp bnQgX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopOworCitzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKK2k5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKG9iai0+ bW0ucGFnZXNfcGluX2NvdW50KyspCisJCXJldHVybiAwOworCisJcmV0dXJuIF9faTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlcyhvYmopOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19faTkxNV9n ZW1fb2JqZWN0X3Bpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewot CUdFTV9CVUdfT04ob2JqLT5wYWdlcyA9PSBOVUxMKTsKLQlvYmotPnBhZ2VzX3Bpbl9jb3VudCsr OworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJ R0VNX0JVR19PTighb2JqLT5tbS5wYWdlcyk7CisKKwlvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCsr OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK2k5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3Bh Z2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJcmV0dXJuIG9iai0+bW0u cGFnZXNfcGluX2NvdW50OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19faTkxNV9nZW1fb2Jq ZWN0X3VucGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJbG9j a2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlHRU1fQlVH X09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmopKTsKKwlHRU1fQlVHX09O KCFvYmotPm1tLnBhZ2VzKTsKKworCW9iai0+bW0ucGFnZXNfcGluX2NvdW50LS07CisJR0VNX0JV R19PTihvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCA8IG9iai0+YmluZF9jb3VudCk7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlHRU1fQlVHX09OKG9iai0+cGFnZXNfcGluX2NvdW50 ID09IDApOwotCW9iai0+cGFnZXNfcGluX2NvdW50LS07Ci0JR0VNX0JVR19PTihvYmotPnBhZ2Vz X3Bpbl9jb3VudCA8IG9iai0+YmluZF9jb3VudCk7CisJX19pOTE1X2dlbV9vYmplY3RfdW5waW5f cGFnZXMob2JqKTsKIH0KIAoraW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKKwogZW51bSBpOTE1X21hcF90eXBlIHsKIAlJOTE1 X01BUF9XQiA9IDAsCiAJSTkxNV9NQVBfV0MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBh OWVhMjBkNTNlMjMuLjA1MzUyNzM4YzA3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0y MTYsNyArMjE2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19waHlzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc2dfZG1hX2FkZHJlc3Moc2cpID0gb2JqLT5waHlzX2hh bmRsZS0+YnVzYWRkcjsKIAlzZ19kbWFfbGVuKHNnKSA9IG9iai0+YmFzZS5zaXplOwogCi0Jb2Jq LT5wYWdlcyA9IHN0OworCW9iai0+bW0ucGFnZXMgPSBzdDsKIAlyZXR1cm4gMDsKIH0KIApAQCAt MjI1LDcgKzIyNSw3IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCWludCByZXQ7CiAKLQlCVUdfT04ob2JqLT5tYWR2 ID09IF9fSTkxNV9NQURWX1BVUkdFRCk7CisJR0VNX0JVR19PTihvYmotPm1tLm1hZHYgPT0gX19J OTE1X01BRFZfUFVSR0VEKTsKIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2Rv bWFpbihvYmosIHRydWUpOwogCWlmIChXQVJOX09OKHJldCkpIHsKQEAgLTIzNSwxMCArMjM1LDEw IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogCQlvYmotPmJhc2UucmVhZF9kb21haW5zID0gb2JqLT5iYXNlLndyaXRlX2Rv bWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7CiAJfQogCi0JaWYgKG9iai0+bWFkdiA9PSBJOTE1 X01BRFZfRE9OVE5FRUQpCi0JCW9iai0+ZGlydHkgPSAwOworCWlmIChvYmotPm1tLm1hZHYgPT0g STkxNV9NQURWX0RPTlRORUVEKQorCQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAKLQlpZiAob2Jq LT5kaXJ0eSkgeworCWlmIChvYmotPm1tLmRpcnR5KSB7CiAJCXN0cnVjdCBhZGRyZXNzX3NwYWNl ICptYXBwaW5nID0gb2JqLT5iYXNlLmZpbHAtPmZfbWFwcGluZzsKIAkJY2hhciAqdmFkZHIgPSBv YmotPnBoeXNfaGFuZGxlLT52YWRkcjsKIAkJaW50IGk7CkBAIC0yNTcsMjIgKzI1NywyMyBAQCBp OTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIAkJCWt1bm1hcF9hdG9taWMoZHN0KTsKIAogCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7 Ci0JCQlpZiAob2JqLT5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCkKKwkJCWlmIChvYmotPm1t Lm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEKQogCQkJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdl KTsKIAkJCXB1dF9wYWdlKHBhZ2UpOwogCQkJdmFkZHIgKz0gUEFHRV9TSVpFOwogCQl9Ci0JCW9i ai0+ZGlydHkgPSAwOworCQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAJfQogCi0Jc2dfZnJlZV90 YWJsZShvYmotPnBhZ2VzKTsKLQlrZnJlZShvYmotPnBhZ2VzKTsKKwlzZ19mcmVlX3RhYmxlKG9i ai0+bW0ucGFnZXMpOworCWtmcmVlKG9iai0+bW0ucGFnZXMpOwogfQogCiBzdGF0aWMgdm9pZAog aTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewogCWRybV9wY2lfZnJlZShvYmotPmJhc2UuZGV2LCBvYmotPnBoeXNfaGFuZGxlKTsK KwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9waHlzX29wcyA9IHsKQEAgLTUw Niw3ICs1MDcsNyBAQCBpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKG9iai0+bWFkdiAhPSBJ OTE1X01BRFZfV0lMTE5FRUQpCisJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5F RUQpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJaWYgKG9iai0+YmFzZS5maWxwID09IE5VTEwpCkBA IC01MTYsNyArNTE3LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKKwlyZXQgPSBfX2k5MTVfZ2VtX29iamVj dF9wdXRfcGFnZXMob2JqKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC01MjgsNyAr NTI5LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJb2JqLT5waHlzX2hhbmRsZSA9IHBoeXM7CiAJb2JqLT5vcHMgPSAmaTkx NV9nZW1fcGh5c19vcHM7CiAKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmop OworCXJldHVybiBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiB9CiAKIHN0YXRpYyBp bnQKQEAgLTcyNCwxMiArNzI1LDEwIEBAIGludCBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV9y ZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKKwlyZXQgPSBp OTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKLQogCWk5MTVfZ2VtX29iamVjdF9m bHVzaF9ndHRfd3JpdGVfZG9tYWluKG9iaik7CiAKIAkvKiBJZiB3ZSdyZSBub3QgaW4gdGhlIGNw dSByZWFkIGRvbWFpbiwgc2V0IG91cnNlbGYgaW50byB0aGUgZ3R0CkBAIC03NzcsMTIgKzc3Niwx MCBAQCBpbnQgaTkxNV9nZW1fb2JqX3ByZXBhcmVfc2htZW1fd3JpdGUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5f cGFnZXMob2JqKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaTkxNV9nZW1fb2JqZWN0 X3Bpbl9wYWdlcyhvYmopOwotCiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21h aW4ob2JqKTsKIAogCS8qIElmIHdlJ3JlIG5vdCBpbiB0aGUgY3B1IHdyaXRlIGRvbWFpbiwgc2V0 IG91cnNlbGYgaW50byB0aGUKQEAgLTgxMiw3ICs4MDksNyBAQCBpbnQgaTkxNV9nZW1fb2JqX3By ZXBhcmVfc2htZW1fd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJb2Jq LT5jYWNoZV9kaXJ0eSA9IHRydWU7CiAKIAlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9S SUdJTl9DUFUpOwotCW9iai0+ZGlydHkgPSAxOworCW9iai0+bW0uZGlydHkgPSB0cnVlOwogCS8q IHJldHVybiB3aXRoIHRoZSBwYWdlcyBwaW5uZWQgKi8KIAlyZXR1cm4gMDsKIApAQCAtOTUwLDEz ICs5NDcsMTEgQEAgaTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CWlmIChyZXQpCiAJCQlnb3RvIG91dDsKIAotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2VzKG9iaik7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAkJaWYg KHJldCkgewogCQkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwogCQkJZ290byBvdXQ7CiAJ CX0KLQotCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJfQogCiAJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwpAQCAtMTA2Myw3ICsx MDU4LDcgQEAgaTkxNV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlv ZmZzZXQgPSBhcmdzLT5vZmZzZXQ7CiAJcmVtYWluID0gYXJncy0+c2l6ZTsKIAotCWZvcl9lYWNo X3NnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsCisJ Zm9yX2VhY2hfc2dfcGFnZShvYmotPm1tLnBhZ2VzLT5zZ2wsICZzZ19pdGVyLCBvYmotPm1tLnBh Z2VzLT5uZW50cywKIAkJCSBvZmZzZXQgPj4gUEFHRV9TSElGVCkgewogCQlzdHJ1Y3QgcGFnZSAq cGFnZSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZzZ19pdGVyKTsKIApAQCAtMTI1MywxMyArMTI0OCwx MSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKIAotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2VzKG9iaik7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsK IAkJaWYgKHJldCkgewogCQkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwogCQkJZ290byBv dXQ7CiAJCX0KLQotCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJfQogCiAJcmV0 ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CkBAIC0xMjY3 LDcgKzEyNjAsNyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiAJCWdvdG8gb3V0X3VucGluOwogCiAJaW50ZWxfZmJfb2JqX2ludmFsaWRh dGUob2JqLCBPUklHSU5fQ1BVKTsKLQlvYmotPmRpcnR5ID0gdHJ1ZTsKKwlvYmotPm1tLmRpcnR5 ID0gdHJ1ZTsKIAogCXVzZXJfZGF0YSA9IHU2NF90b191c2VyX3B0cihhcmdzLT5kYXRhX3B0cik7 CiAJb2Zmc2V0ID0gYXJncy0+b2Zmc2V0OwpAQCAtMTQzOCw3ICsxNDMxLDcgQEAgaTkxNV9nZW1f c2htZW1fcHdyaXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJb2Zmc2V0ID0gYXJncy0+b2Zm c2V0OwogCXJlbWFpbiA9IGFyZ3MtPnNpemU7CiAKLQlmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFn ZXMtPnNnbCwgJnNnX2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLAorCWZvcl9lYWNoX3NnX3BhZ2Uo b2JqLT5tbS5wYWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5tbS5wYWdlcy0+bmVudHMsCiAJCQkg b2Zmc2V0ID4+IFBBR0VfU0hJRlQpIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBzZ19wYWdlX2l0 ZXJfcGFnZSgmc2dfaXRlcik7CiAJCWludCBwYXJ0aWFsX2NhY2hlbGluZV93cml0ZTsKQEAgLTIy NjksNyArMjI2Miw3IEBAIGk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogCSAqIGJhY2tpbmcgcGFnZXMsICpub3cqLgogCSAqLwogCXNobWVt X3RydW5jYXRlX3JhbmdlKGZpbGVfaW5vZGUob2JqLT5iYXNlLmZpbHApLCAwLCAobG9mZl90KS0x KTsKLQlvYmotPm1hZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJb2JqLT5tbS5tYWR2ID0gX19J OTE1X01BRFZfUFVSR0VEOwogfQogCiAvKiBUcnkgdG8gZGlzY2FyZCB1bndhbnRlZCBwYWdlcyAq LwpAQCAtMjI3OCw3ICsyMjcxLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2ludmFsaWRhdGUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZzsKIAotCXN3aXRjaCAob2JqLT5tYWR2KSB7CisJc3dpdGNoIChvYmotPm1tLm1hZHYpIHsK IAljYXNlIEk5MTVfTUFEVl9ET05UTkVFRDoKIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5jYXRlKG9i aik7CiAJY2FzZSBfX0k5MTVfTUFEVl9QVVJHRUQ6CkBAIC0yMjk5LDcgKzIyOTIsNyBAQCBpOTE1 X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogCXN0cnVjdCBwYWdlICpwYWdlOwogCWludCByZXQ7CiAKLQlCVUdfT04ob2JqLT5tYWR2ID09 IF9fSTkxNV9NQURWX1BVUkdFRCk7CisJR0VNX0JVR19PTihvYmotPm1tLm1hZHYgPT0gX19JOTE1 X01BRFZfUFVSR0VEKTsKIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFp bihvYmosIHRydWUpOwogCWlmIChXQVJOX09OKHJldCkpIHsKQEAgLTIzMTUsMjIgKzIzMDgsMjIg QEAgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIAlpZiAoaTkxNV9nZW1fb2JqZWN0X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkK IAkJaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUob2JqKTsKIAotCWlmIChvYmot Pm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEKQotCQlvYmotPmRpcnR5ID0gMDsKKwlpZiAob2Jq LT5tbS5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJb2JqLT5tbS5kaXJ0eSA9IGZhbHNl OwogCi0JZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+cGFnZXMpIHsKLQkJ aWYgKG9iai0+ZGlydHkpCisJZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+ bW0ucGFnZXMpIHsKKwkJaWYgKG9iai0+bW0uZGlydHkpCiAJCQlzZXRfcGFnZV9kaXJ0eShwYWdl KTsKIAotCQlpZiAob2JqLT5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCkKKwkJaWYgKG9iai0+ bW0ubWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQpCiAJCQltYXJrX3BhZ2VfYWNjZXNzZWQocGFn ZSk7CiAKIAkJcHV0X3BhZ2UocGFnZSk7CiAJfQotCW9iai0+ZGlydHkgPSAwOworCW9iai0+bW0u ZGlydHkgPSBmYWxzZTsKIAotCXNnX2ZyZWVfdGFibGUob2JqLT5wYWdlcyk7Ci0Ja2ZyZWUob2Jq LT5wYWdlcyk7CisJc2dfZnJlZV90YWJsZShvYmotPm1tLnBhZ2VzKTsKKwlrZnJlZShvYmotPm1t LnBhZ2VzKTsKIH0KIAogc3RhdGljIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfcmVzZXRfcGFnZV9p dGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCkBAIC0yMzM4LDIxICsyMzMxLDIw IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3Jlc2V0X3BhZ2VfaXRlcihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCByYWRpeF90cmVlX2l0ZXIgaXRlcjsK IAl2b2lkICoqc2xvdDsKIAotCXJhZGl4X3RyZWVfZm9yX2VhY2hfc2xvdChzbG90LCAmb2JqLT5n ZXRfcGFnZS5yYWRpeCwgJml0ZXIsIDApCi0JCXJhZGl4X3RyZWVfZGVsZXRlKCZvYmotPmdldF9w YWdlLnJhZGl4LCBpdGVyLmluZGV4KTsKKwlyYWRpeF90cmVlX2Zvcl9lYWNoX3Nsb3Qoc2xvdCwg Jm9iai0+bW0uZ2V0X3BhZ2UucmFkaXgsICZpdGVyLCAwKQorCQlyYWRpeF90cmVlX2RlbGV0ZSgm b2JqLT5tbS5nZXRfcGFnZS5yYWRpeCwgaXRlci5pbmRleCk7CiB9CiAKLWludAotaTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoraW50IF9f aTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogewogCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyAqb3BzID0gb2JqLT5v cHM7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogCi0JaWYgKG9iai0+cGFnZXMgPT0gTlVMTCkKKwlpZiAoIW9iai0+bW0ucGFnZXMpCiAJCXJl dHVybiAwOwogCi0JaWYgKG9iai0+cGFnZXNfcGluX2NvdW50KQorCWlmIChpOTE1X2dlbV9vYmpl Y3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmopKQogCQlyZXR1cm4gLUVCVVNZOwogCiAJR0VNX0JVR19P TihvYmotPmJpbmRfY291bnQpOwpAQCAtMjM2MiwyMiArMjM1NCwyMiBAQCBpOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJICogbGlzdHMg ZWFybHkuICovCiAJbGlzdF9kZWwoJm9iai0+Z2xvYmFsX2xpc3QpOwogCi0JaWYgKG9iai0+bWFw cGluZykgeworCWlmIChvYmotPm1tLm1hcHBpbmcpIHsKIAkJdm9pZCAqcHRyOwogCi0JCXB0ciA9 IHB0cl9tYXNrX2JpdHMob2JqLT5tYXBwaW5nKTsKKwkJcHRyID0gcHRyX21hc2tfYml0cyhvYmot Pm1tLm1hcHBpbmcpOwogCQlpZiAoaXNfdm1hbGxvY19hZGRyKHB0cikpCiAJCQl2dW5tYXAocHRy KTsKIAkJZWxzZQogCQkJa3VubWFwKGttYXBfdG9fcGFnZShwdHIpKTsKIAotCQlvYmotPm1hcHBp bmcgPSBOVUxMOworCQlvYmotPm1tLm1hcHBpbmcgPSBOVUxMOwogCX0KIAogCV9faTkxNV9nZW1f b2JqZWN0X3Jlc2V0X3BhZ2VfaXRlcihvYmopOwogCiAJb3BzLT5wdXRfcGFnZXMob2JqKTsKLQlv YmotPnBhZ2VzID0gTlVMTDsKKwlvYmotPm1tLnBhZ2VzID0gTlVMTDsKIAogCWk5MTVfZ2VtX29i amVjdF9pbnZhbGlkYXRlKG9iaik7CiAKQEAgLTI0NzcsNyArMjQ2OSw3IEBAIGk5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJfQog CWlmIChzZykgLyogbG9vcCB0ZXJtaW5hdGVkIGVhcmx5OyBzaG9ydCBzZyB0YWJsZSAqLwogCQlz Z19tYXJrX2VuZChzZyk7Ci0Jb2JqLT5wYWdlcyA9IHN0OworCW9iai0+bW0ucGFnZXMgPSBzdDsK IAogCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVwYXJlX29iamVjdChvYmopOwogCWlmIChyZXQpCkBA IC0yNDg4LDcgKzI0ODAsNyBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJaWYgKGk5MTVfZ2VtX29iamVjdF9pc190aWxl ZChvYmopICYmCiAJICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSU5fU1dJWlpMRURfUEFH RVMpCi0JCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwkJX19pOTE1X2dlbV9vYmpl Y3RfcGluX3BhZ2VzKG9iaik7CiAKIAlyZXR1cm4gMDsKIApAQCAtMjUyMCw4ICsyNTEyLDcgQEAg aTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKICAqIGVpdGhlciBhcyBhIHJlc3VsdCBvZiBtZW1vcnkgcHJlc3N1cmUgKHJlYXBpbmcg cGFnZXMgdW5kZXIgdGhlIHNocmlua2VyKQogICogb3IgYXMgdGhlIG9iamVjdCBpcyBpdHNlbGYg cmVsZWFzZWQuCiAgKi8KLWludAotaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQoraW50IF9faTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHMgPSBvYmotPm9wczsKQEAgLTI1MjksMjQgKzI1MjAs MjUgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211 dGV4KTsKIAotCWlmIChvYmotPnBhZ2VzKQorCWlmIChvYmotPm1tLnBhZ2VzKQogCQlyZXR1cm4g MDsKIAotCWlmIChvYmotPm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEKSB7CisJaWYgKG9iai0+ bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpIHsKIAkJRFJNX0RFQlVHKCJBdHRlbXB0aW5n IHRvIG9idGFpbiBhIHB1cmdlYWJsZSBvYmplY3RcbiIpOworCQlfX2k5MTVfZ2VtX29iamVjdF91 bnBpbl9wYWdlcyhvYmopOwogCQlyZXR1cm4gLUVGQVVMVDsKIAl9CiAKLQlCVUdfT04ob2JqLT5w YWdlc19waW5fY291bnQpOwotCiAJcmV0ID0gb3BzLT5nZXRfcGFnZXMob2JqKTsKLQlpZiAocmV0 KQorCWlmIChyZXQpIHsKKwkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIAkJ cmV0dXJuIHJldDsKKwl9CiAKIAlsaXN0X2FkZF90YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmZGV2 X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAKLQlvYmotPmdldF9wYWdlLnNnX3BvcyA9IG9iai0+ cGFnZXMtPnNnbDsKLQlvYmotPmdldF9wYWdlLnNnX2lkeCA9IDA7CisJb2JqLT5tbS5nZXRfcGFn ZS5zZ19wb3MgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7CisJb2JqLT5tbS5nZXRfcGFnZS5zZ19pZHgg PSAwOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNTU2LDcgKzI1NDgsNyBAQCBzdGF0aWMgdm9pZCAq aTkxNV9nZW1fb2JqZWN0X21hcChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCQkJCSBlbnVtIGk5MTVfbWFwX3R5cGUgdHlwZSkKIHsKIAl1bnNpZ25lZCBsb25nIG5fcGFn ZXMgPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwotCXN0cnVjdCBzZ190YWJsZSAqc2d0 ID0gb2JqLT5wYWdlczsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNndCA9IG9iai0+bW0ucGFnZXM7CiAJ c3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwogCXN0cnVjdCBwYWdlICpwYWdlOwogCXN0cnVjdCBw YWdlICpzdGFja19wYWdlc1szMl07CkBAIC0yNjEwLDE0ICsyNjAyLDEzIEBAIHZvaWQgKmk5MTVf Z2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJbG9j a2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAlHRU1fQlVH X09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpOwogCi0JcmV0ID0gaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5f cGFnZXMob2JqKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCi0JaTkxNV9n ZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwotCXBpbm5lZCA9IG9iai0+cGFnZXNfcGluX2NvdW50 ID4gMTsKKwlwaW5uZWQgPSBvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCA+IDE7CiAKLQlwdHIgPSBw dHJfdW5wYWNrX2JpdHMob2JqLT5tYXBwaW5nLCBoYXNfdHlwZSk7CisJcHRyID0gcHRyX3VucGFj a19iaXRzKG9iai0+bW0ubWFwcGluZywgaGFzX3R5cGUpOwogCWlmIChwdHIgJiYgaGFzX3R5cGUg IT0gdHlwZSkgewogCQlpZiAocGlubmVkKSB7CiAJCQlyZXQgPSAtRUJVU1k7CkBAIC0yNjI5LDcg KzI2MjAsNyBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX21hcChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAogCQllbHNlCiAJCQlrdW5tYXAoa21hcF90b19wYWdlKHB0cikpOwog Ci0JCXB0ciA9IG9iai0+bWFwcGluZyA9IE5VTEw7CisJCXB0ciA9IG9iai0+bW0ubWFwcGluZyA9 IE5VTEw7CiAJfQogCiAJaWYgKCFwdHIpIHsKQEAgLTI2MzksNyArMjYzMCw3IEBAIHZvaWQgKmk5 MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJ CQlnb3RvIGVycjsKIAkJfQogCi0JCW9iai0+bWFwcGluZyA9IHB0cl9wYWNrX2JpdHMocHRyLCB0 eXBlKTsKKwkJb2JqLT5tbS5tYXBwaW5nID0gcHRyX3BhY2tfYml0cyhwdHIsIHR5cGUpOwogCX0K IAogCXJldHVybiBwdHI7CkBAIC0zMDkwLDcgKzMwODEsNyBAQCBpbnQgaTkxNV92bWFfdW5iaW5k KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCQlnb3RvIGRlc3Ryb3k7CiAKIAlHRU1fQlVHX09OKG9i ai0+YmluZF9jb3VudCA9PSAwKTsKLQlHRU1fQlVHX09OKCFvYmotPnBhZ2VzKTsKKwlHRU1fQlVH X09OKCFvYmotPm1tLnBhZ2VzKTsKIAogCWlmIChpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNlYWJs ZSh2bWEpKSB7CiAJCS8qIHJlbGVhc2UgdGhlIGZlbmNlIHJlZyBfYWZ0ZXJfIGZsdXNoaW5nICov CkBAIC0zMTE0LDcgKzMxMDUsNyBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQogCWRybV9tbV9yZW1vdmVfbm9kZSgmdm1hLT5ub2RlKTsKIAlsaXN0X21vdmVfdGFp bCgmdm1hLT52bV9saW5rLCAmdm1hLT52bS0+dW5ib3VuZF9saXN0KTsKIAotCWlmICh2bWEtPnBh Z2VzICE9IG9iai0+cGFnZXMpIHsKKwlpZiAodm1hLT5wYWdlcyAhPSBvYmotPm1tLnBhZ2VzKSB7 CiAJCUdFTV9CVUdfT04oIXZtYS0+cGFnZXMpOwogCQlzZ19mcmVlX3RhYmxlKHZtYS0+cGFnZXMp OwogCQlrZnJlZSh2bWEtPnBhZ2VzKTsKQEAgLTMyNDcsMTIgKzMyMzgsMTAgQEAgaTkxNV92bWFf aW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0 IGZsYWdzKQogCQlyZXR1cm4gLUUyQklHOwogCX0KIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZXMob2JqKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2Jq KTsKLQogCWlmIChmbGFncyAmIFBJTl9PRkZTRVRfRklYRUQpIHsKIAkJdTY0IG9mZnNldCA9IGZs YWdzICYgUElOX09GRlNFVF9NQVNLOwogCQlpZiAob2Zmc2V0ICYgKGFsaWdubWVudCAtIDEpIHx8 IG9mZnNldCA+IGVuZCAtIHNpemUpIHsKQEAgLTMzMzQsNyArMzMyMyw3IEBAIGk5MTVfZ2VtX2Ns Zmx1c2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJICogdG8gR1BV LCBhbmQgd2UgY2FuIGlnbm9yZSB0aGUgY2FjaGUgZmx1c2ggYmVjYXVzZSBpdCdsbCBoYXBwZW4K IAkgKiBhZ2FpbiBhdCBiaW5kIHRpbWUuCiAJICovCi0JaWYgKG9iai0+cGFnZXMgPT0gTlVMTCkK KwlpZiAoIW9iai0+bW0ucGFnZXMpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCkBAIC0zMzU4LDcg KzMzNDcsNyBAQCBpOTE1X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCX0KIAogCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9jbGZsdXNoKG9iaik7Ci0J ZHJtX2NsZmx1c2hfc2cob2JqLT5wYWdlcyk7CisJZHJtX2NsZmx1c2hfc2cob2JqLT5tbS5wYWdl cyk7CiAJb2JqLT5jYWNoZV9kaXJ0eSA9IGZhbHNlOwogCiAJcmV0dXJuIHRydWU7CkBAIC0zNDcy LDcgKzM0NjEsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB3cml0ZSkKIAkgKiBjb250aW51ZSB0byBhc3N1 bWUgdGhhdCB0aGUgb2JqIHJlbWFpbmVkIG91dCBvZiB0aGUgQ1BVIGNhY2hlZAogCSAqIGRvbWFp bi4KIAkgKi8KLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7CisJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKQEAgLTM0OTYsNyArMzQ4NSw3IEBAIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHdyaXRlKQogCWlmICh3cml0 ZSkgewogCQlvYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0dUVDsKIAkJ b2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9HVFQ7Ci0JCW9iai0+ZGly dHkgPSAxOworCQlvYmotPm1tLmRpcnR5ID0gdHJ1ZTsKIAl9CiAKIAl0cmFjZV9pOTE1X2dlbV9v YmplY3RfY2hhbmdlX2RvbWFpbihvYmosCkBAIC0zNTA1LDYgKzM0OTQsNyBAQCBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwg Ym9vbCB3cml0ZSkKIAogCS8qIEFuZCBidW1wIHRoZSBMUlUgZm9yIHRoaXMgYWNjZXNzICovCiAJ aTkxNV9nZW1fb2JqZWN0X2J1bXBfaW5hY3RpdmVfZ2d0dChvYmopOworCWk5MTVfZ2VtX29iamVj dF91bnBpbl9wYWdlcyhvYmopOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00MzA1LDIzICs0Mjk1LDIz IEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJZ290byB1bmxvY2s7CiAJfQogCi0JaWYgKG9iai0+cGFnZXMgJiYKKwlpZiAob2Jq LT5tbS5wYWdlcyAmJgogCSAgICBpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSAmJgogCSAg ICBkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElOX1NXSVpaTEVEX1BBR0VTKSB7Ci0JCWlmIChv YmotPm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEKQotCQkJaTkxNV9nZW1fb2JqZWN0X3VucGlu X3BhZ2VzKG9iaik7CisJCWlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEKQor CQkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIAkJaWYgKGFyZ3MtPm1hZHYg PT0gSTkxNV9NQURWX1dJTExORUVEKQotCQkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmop OworCQkJX19pOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJfQogCi0JaWYgKG9iai0+ bWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQpCi0JCW9iai0+bWFkdiA9IGFyZ3MtPm1hZHY7CisJ aWYgKG9iai0+bW0ubWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQpCisJCW9iai0+bW0ubWFkdiA9 IGFyZ3MtPm1hZHY7CiAKIAkvKiBpZiB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciBhdHRhY2hlZCwg ZGlzY2FyZCBpdHMgYmFja2luZyBzdG9yYWdlICovCi0JaWYgKG9iai0+bWFkdiA9PSBJOTE1X01B RFZfRE9OVE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxMKQorCWlmIChvYmotPm1tLm1hZHYgPT0g STkxNV9NQURWX0RPTlRORUVEICYmICFvYmotPm1tLnBhZ2VzKQogCQlpOTE1X2dlbV9vYmplY3Rf dHJ1bmNhdGUob2JqKTsKIAotCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9N QURWX1BVUkdFRDsKKwlhcmdzLT5yZXRhaW5lZCA9IG9iai0+bW0ubWFkdiAhPSBfX0k5MTVfTUFE Vl9QVVJHRUQ7CiAKIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiB1bmxvY2s6CkBAIC00MzQ4 LDkgKzQzMzgsMTAgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAogCW9iai0+b3BzID0gb3BzOwogCiAJb2JqLT5mcm9udGJ1ZmZlcl9n Z3R0X29yaWdpbiA9IE9SSUdJTl9HVFQ7Ci0Jb2JqLT5tYWR2ID0gSTkxNV9NQURWX1dJTExORUVE OwotCUlOSVRfUkFESVhfVFJFRSgmb2JqLT5nZXRfcGFnZS5yYWRpeCwgR0ZQX0tFUk5FTCB8IF9f R0ZQX05PV0FSTik7Ci0JbXV0ZXhfaW5pdCgmb2JqLT5nZXRfcGFnZS5sb2NrKTsKKworCW9iai0+ bW0ubWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKKwlJTklUX1JBRElYX1RSRUUoJm9iai0+bW0u Z2V0X3BhZ2UucmFkaXgsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4pOworCW11dGV4X2luaXQo Jm9iai0+bW0uZ2V0X3BhZ2UubG9jayk7CiAKIAlpOTE1X2dlbV9pbmZvX2FkZF9vYmoodG9faTkx NShvYmotPmJhc2UuZGV2KSwgb2JqLT5iYXNlLnNpemUpOwogfQpAQCAtNDQ0Miw3ICs0NDMzLDcg QEAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIAkgKiBiYWNrIHRoZSBjb250ZW50cyBmcm9tIHRoZSBHUFUuCiAJICov CiAKLQlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCkKKwlpZiAob2JqLT5tbS5t YWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKG9iai0+ YmFzZS5maWxwID09IE5VTEwpCkBAIC00NDg0LDMyICs0NDc1LDI3IEBAIHZvaWQgaTkxNV9nZW1f ZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQogCX0KIAlHRU1fQlVH X09OKG9iai0+YmluZF9jb3VudCk7CiAKLQkvKiBTdG9sZW4gb2JqZWN0cyBkb24ndCBob2xkIGEg cmVmLCBidXQgZG8gaG9sZCBwaW4gY291bnQuIEZpeCB0aGF0IHVwCi0JICogYmVmb3JlIHByb2dy ZXNzaW5nLiAqLwotCWlmIChvYmotPnN0b2xlbikKLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3Bh Z2VzKG9iaik7Ci0KIAlXQVJOX09OKGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2JpdHMp KTsKIAotCWlmIChvYmotPnBhZ2VzICYmIG9iai0+bWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQg JiYKKwlpZiAob2JqLT5tbS5wYWdlcyAmJiBvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJTExO RUVEICYmCiAJICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSU5fU1dJWlpMRURfUEFHRVMg JiYKIAkgICAgaTkxNV9nZW1fb2JqZWN0X2lzX3RpbGVkKG9iaikpCi0JCWk5MTVfZ2VtX29iamVj dF91bnBpbl9wYWdlcyhvYmopOworCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmop OwogCi0JaWYgKFdBUk5fT04ob2JqLT5wYWdlc19waW5fY291bnQpKQotCQlvYmotPnBhZ2VzX3Bp bl9jb3VudCA9IDA7CisJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQorCQlvYmotPm9wcy0+cmVsZWFz ZShvYmopOworCisJaWYgKFdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMo b2JqKSkpCisJCW9iai0+bW0ucGFnZXNfcGluX2NvdW50ID0gMDsKIAlpZiAoZGlzY2FyZF9iYWNr aW5nX3N0b3JhZ2Uob2JqKSkKLQkJb2JqLT5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwotCWk5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKKwkJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURW X0RPTlRORUVEOworCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOwogCi0JQlVHX09O KG9iai0+cGFnZXMpOworCUdFTV9CVUdfT04ob2JqLT5tbS5wYWdlcyk7CiAKIAlpZiAob2JqLT5i YXNlLmltcG9ydF9hdHRhY2gpCiAJCWRybV9wcmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBO VUxMKTsKIAotCWlmIChvYmotPm9wcy0+cmVsZWFzZSkKLQkJb2JqLT5vcHMtPnJlbGVhc2Uob2Jq KTsKLQogCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7CiAJaTkxNV9nZW1faW5m b19yZW1vdmVfb2JqKGRldl9wcml2LCBvYmotPmJhc2Uuc2l6ZSk7CiAKQEAgLTUwNjIsMTQgKzUw NDgsMTMgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzKG9iaik7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmop OwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIAotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMo b2JqKTsKLQlzZyA9IG9iai0+cGFnZXM7CisJc2cgPSBvYmotPm1tLnBhZ2VzOwogCWJ5dGVzID0g c2dfY29weV9mcm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICh2b2lkICopZGF0YSwgc2l6 ZSk7Ci0Jb2JqLT5kaXJ0eSA9IDE7CQkvKiBCYWNraW5nIHN0b3JlIGlzIG5vdyBvdXQgb2YgZGF0 ZSAqLworCW9iai0+bW0uZGlydHkgPSB0cnVlOyAvKiBCYWNraW5nIHN0b3JlIGlzIG5vdyBvdXQg b2YgZGF0ZSAqLwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogCiAJaWYgKFdB Uk5fT04oYnl0ZXMgIT0gc2l6ZSkpIHsKQEAgLTUwOTAsMTMgKzUwNzUsMTMgQEAgaTkxNV9nZW1f b2JqZWN0X2dldF9zZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkgICAgICAg dW5zaWduZWQgaW50IG4sCiAJCSAgICAgICB1bnNpZ25lZCBpbnQgKm9mZnNldCkKIHsKLQlzdHJ1 Y3QgaTkxNV9nZW1fb2JqZWN0X3BhZ2VfaXRlciAqaXRlciA9ICZvYmotPmdldF9wYWdlOworCXN0 cnVjdCBpOTE1X2dlbV9vYmplY3RfcGFnZV9pdGVyICppdGVyID0gJm9iai0+bW0uZ2V0X3BhZ2U7 CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKIAl1bnNpZ25lZCBpbnQgaWR4LCBjb3VudDsKIAog CW1pZ2h0X3NsZWVwKCk7CiAJR0VNX0JVR19PTihuID49IG9iai0+YmFzZS5zaXplID4+IFBBR0Vf U0hJRlQpOwotCUdFTV9CVUdfT04ob2JqLT5wYWdlc19waW5fY291bnQgPT0gMCk7CisJR0VNX0JV R19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSk7CiAKIAkvKiBBcyB3 ZSBpdGVyYXRlIGZvcndhcmQgdGhyb3VnaCB0aGUgc2csIHdlIHJlY29yZCBlYWNoIGVudHJ5IGlu IGEKIAkgKiByYWRpeHRyZWUgZm9yIHF1aWNrIHJlcGVhdGVkIChiYWNrd2FyZHMpIGxvb2t1cHMu IElmIHdlIGhhdmUgc2VlbgpAQCAtNTIyMSw3ICs1MjA2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2dl dF9kaXJ0eV9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJc3RydWN0IHBh Z2UgKnBhZ2U7CiAKIAlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgbik7Ci0J aWYgKCFvYmotPmRpcnR5KQorCWlmICghb2JqLT5tbS5kaXJ0eSkKIAkJc2V0X3BhZ2VfZGlydHko cGFnZSk7CiAKIAlyZXR1cm4gcGFnZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Jh dGNoX3Bvb2wuYwppbmRleCBhYTRlMWUwNDNiNGUuLmUwZjM4ZTVjMGZiYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwpAQCAtMTMwLDExICsxMzAsMTAgQEAg aTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2ws CiAJCQlyZXR1cm4gb2JqOwogCX0KIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMo b2JqKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJaWYgKHJldCkK IAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAogCWxpc3RfbW92ZV90YWlsKCZvYmotPmJhdGNoX3Bv b2xfbGluaywgbGlzdCk7Ci0JaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCXJldHVy biBvYmo7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFi dWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCmluZGV4IDk3Yzlk NjhiNDVkZi4uMTA0NDFkYzcyZTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9kbWFidWYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFi dWYuYwpAQCAtNDgsMTIgKzQ4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmk5MTVfZ2Vt X21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lCiAJaWYgKHJl dCkKIAkJZ290byBlcnI7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7 CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChyZXQpCiAJCWdv dG8gZXJyX3VubG9jazsKIAotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKLQogCS8q IENvcHkgc2cgc28gdGhhdCB3ZSBtYWtlIGFuIGluZGVwZW5kZW50IG1hcHBpbmcgKi8KIAlzdCA9 IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzZ190YWJsZSksIEdGUF9LRVJORUwpOwogCWlmIChzdCA9 PSBOVUxMKSB7CkBAIC02MSwxMyArNTksMTMgQEAgc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqaTkx NV9nZW1fbWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWUKIAkJ Z290byBlcnJfdW5waW47CiAJfQogCi0JcmV0ID0gc2dfYWxsb2NfdGFibGUoc3QsIG9iai0+cGFn ZXMtPm5lbnRzLCBHRlBfS0VSTkVMKTsKKwlyZXQgPSBzZ19hbGxvY190YWJsZShzdCwgb2JqLT5t bS5wYWdlcy0+bmVudHMsIEdGUF9LRVJORUwpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX2ZyZWU7 CiAKLQlzcmMgPSBvYmotPnBhZ2VzLT5zZ2w7CisJc3JjID0gb2JqLT5tbS5wYWdlcy0+c2dsOwog CWRzdCA9IHN0LT5zZ2w7Ci0JZm9yIChpID0gMDsgaSA8IG9iai0+cGFnZXMtPm5lbnRzOyBpKysp IHsKKwlmb3IgKGkgPSAwOyBpIDwgb2JqLT5tbS5wYWdlcy0+bmVudHM7IGkrKykgewogCQlzZ19z ZXRfcGFnZShkc3QsIHNnX3BhZ2Uoc3JjKSwgc3JjLT5sZW5ndGgsIDApOwogCQlkc3QgPSBzZ19u ZXh0KGRzdCk7CiAJCXNyYyA9IHNnX25leHQoc3JjKTsKQEAgLTI5OSwxNCArMjk3LDE0IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKIAlpZiAoSVNfRVJSKHNnKSkKIAkJcmV0dXJuIFBUUl9FUlIoc2cp OwogCi0Jb2JqLT5wYWdlcyA9IHNnOworCW9iai0+bW0ucGFnZXMgPSBzZzsKIAlyZXR1cm4gMDsK IH0KIAogc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19kbWFidWYoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQo b2JqLT5iYXNlLmltcG9ydF9hdHRhY2gsCi0JCQkJIG9iai0+cGFnZXMsIERNQV9CSURJUkVDVElP TkFMKTsKKwkJCQkgb2JqLT5tbS5wYWdlcywgRE1BX0JJRElSRUNUSU9OQUwpOwogfQogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9k bWFidWZfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j CmluZGV4IDFhZmE2ZGJlODQ3Mi4uYWM2MmIwMTdiZjkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0xMjg5LDcgKzEyODksNyBAQCB2b2lkIGk5MTVf dm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCiAJR0VNX0JVR19PTigh ZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKIAotCW9iai0+ZGlydHkgPSAxOyAv KiBiZSBwYXJhbm9pZCAgKi8KKwlvYmotPm1tLmRpcnR5ID0gdHJ1ZTsgLyogYmUgcGFyYW5vaWQg ICovCiAKIAkvKiBBZGQgYSByZWZlcmVuY2UgaWYgd2UncmUgbmV3bHkgZW50ZXJpbmcgdGhlIGFj dGl2ZSBsaXN0LgogCSAqIFRoZSBvcmRlciBpbiB3aGljaCB3ZSBhZGQgb3BlcmF0aW9ucyB0byB0 aGUgcmV0aXJlbWVudCBxdWV1ZSBpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMK aW5kZXggM2M1YTgwODJjYWMzLi41YWFkYWI1OWYwNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZmVuY2UuYwpAQCAtNjY0LDcgKzY2NCw3IEBAIGk5MTVfZ2VtX29iamVjdF9kb19iaXRf MTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQlyZXR1cm47CiAK IAlpID0gMDsKLQlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5wYWdlcykg eworCWZvcl9lYWNoX3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPm1tLnBhZ2VzKSB7CiAJ CWNoYXIgbmV3X2JpdF8xNyA9IHBhZ2VfdG9fcGh5cyhwYWdlKSA+PiAxNzsKIAkJaWYgKChuZXdf Yml0XzE3ICYgMHgxKSAhPQogCQkgICAgKHRlc3RfYml0KGksIG9iai0+Yml0XzE3KSAhPSAwKSkg ewpAQCAtNzAzLDcgKzcwMyw3IEBAIGk5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6emxl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIAlpID0gMDsKIAotCWZvcl9lYWNo X3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPnBhZ2VzKSB7CisJZm9yX2VhY2hfc2d0X3Bh Z2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+bW0ucGFnZXMpIHsKIAkJaWYgKHBhZ2VfdG9fcGh5cyhw YWdlKSAmICgxIDw8IDE3KSkKIAkJCV9fc2V0X2JpdChpLCBvYmotPmJpdF8xNyk7CiAJCWVsc2UK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggYjNmMzQxZmU3N2JmLi43OTRjY2M0 Y2ZmYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0xNzUsNyArMTc1LDcg QEAgc3RhdGljIGludCBwcGd0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIHsKIAl1 MzIgcHRlX2ZsYWdzID0gMDsKIAotCXZtYS0+cGFnZXMgPSB2bWEtPm9iai0+cGFnZXM7CisJdm1h LT5wYWdlcyA9IHZtYS0+b2JqLT5tbS5wYWdlczsKIAogCS8qIEN1cnJlbnRseSBhcHBsaWNhYmxl IG9ubHkgdG8gVkxWICovCiAJaWYgKHZtYS0+b2JqLT5ndF9ybykKQEAgLTIzNzMsNyArMjM3Myw3 IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIGludCBpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKIAlpZiAoIWRtYV9tYXBfc2coJm9iai0+YmFzZS5kZXYtPnBkZXYt PmRldiwKLQkJCW9iai0+cGFnZXMtPnNnbCwgb2JqLT5wYWdlcy0+bmVudHMsCisJCQlvYmotPm1t LnBhZ2VzLT5zZ2wsIG9iai0+bW0ucGFnZXMtPm5lbnRzLAogCQkJUENJX0RNQV9CSURJUkVDVElP TkFMKSkKIAkJcmV0dXJuIC1FTk9TUEM7CiAKQEAgLTI3MTAsNyArMjcxMCw3IEBAIHZvaWQgaTkx NV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IAkJfQogCX0KIAotCWRtYV91bm1hcF9zZyhrZGV2LCBvYmotPnBhZ2VzLT5zZ2wsIG9iai0+cGFn ZXMtPm5lbnRzLAorCWRtYV91bm1hcF9zZyhrZGV2LCBvYmotPm1tLnBhZ2VzLT5zZ2wsIG9iai0+ bW0ucGFnZXMtPm5lbnRzLAogCQkgICAgIFBDSV9ETUFfQklESVJFQ1RJT05BTCk7CiB9CiAKQEAg LTM1NDgsNyArMzU0OCw3IEBAIGludGVsX3JvdGF0ZV9mYl9vYmpfcGFnZXMoY29uc3Qgc3RydWN0 IGludGVsX3JvdGF0aW9uX2luZm8gKnJvdF9pbmZvLAogCiAJLyogUG9wdWxhdGUgc291cmNlIHBh Z2UgbGlzdCBmcm9tIHRoZSBvYmplY3QuICovCiAJaSA9IDA7Ci0JZm9yX2VhY2hfc2d0X2RtYShk bWFfYWRkciwgc2d0X2l0ZXIsIG9iai0+cGFnZXMpCisJZm9yX2VhY2hfc2d0X2RtYShkbWFfYWRk ciwgc2d0X2l0ZXIsIG9iai0+bW0ucGFnZXMpCiAJCXBhZ2VfYWRkcl9saXN0W2krK10gPSBkbWFf YWRkcjsKIAogCUdFTV9CVUdfT04oaSAhPSBuX3BhZ2VzKTsKQEAgLTM2NDEsNyArMzY0MSw3IEBA IGk5MTVfZ2V0X2dndHRfdm1hX3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCQlyZXR1cm4g MDsKIAogCWlmICh2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkK LQkJdm1hLT5wYWdlcyA9IHZtYS0+b2JqLT5wYWdlczsKKwkJdm1hLT5wYWdlcyA9IHZtYS0+b2Jq LT5tbS5wYWdlczsKIAllbHNlIGlmICh2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dUVF9W SUVXX1JPVEFURUQpCiAJCXZtYS0+cGFnZXMgPQogCQkJaW50ZWxfcm90YXRlX2ZiX29ial9wYWdl cygmdm1hLT5nZ3R0X3ZpZXcucGFyYW1zLnJvdGF0ZWQsIHZtYS0+b2JqKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCmluZGV4IGU4NzFiZTQxOWZiZC4uMTk0NWI4YTI4 NDZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMKQEAgLTk5LDEw ICs5OSwxMCBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfaW50ZXJuYWwo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAogCQlzZyA9IF9fc2dfbmV4dChzZyk7 CiAJfSB3aGlsZSAoMSk7Ci0Jb2JqLT5wYWdlcyA9IHN0OworCW9iai0+bW0ucGFnZXMgPSBzdDsK IAogCWlmIChpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qob2JqKSkgewotCQlvYmotPnBhZ2Vz ID0gTlVMTDsKKwkJb2JqLT5tbS5wYWdlcyA9IE5VTEw7CiAJCWdvdG8gZXJyOwogCX0KIApAQCAt MTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19pbnRl cm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCSAqIGFuZCB0aGUgY2FsbGVy IGlzIGV4cGVjdGVkIHRvIHJlcG9wdWxhdGUgLSB0aGUgY29udGVudHMgb2YgdGhpcwogCSAqIG9i amVjdCBhcmUgb25seSB2YWxpZCB3aGlsc3QgYWN0aXZlIGFuZCBwaW5uZWQuCiAJICovCi0Jb2Jq LT5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOworCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9E T05UTkVFRDsKIAlyZXR1cm4gMDsKIAogZXJyOgpAQCAtMTIzLDEwICsxMjMsMTAgQEAgc3RhdGlj IGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2lu dGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJaTkxNV9nZW1fZ3R0 X2ZpbmlzaF9vYmplY3Qob2JqKTsKLQlpbnRlcm5hbF9mcmVlX3BhZ2VzKG9iai0+cGFnZXMpOwor CWludGVybmFsX2ZyZWVfcGFnZXMob2JqLT5tbS5wYWdlcyk7CiAKLQlvYmotPmRpcnR5ID0gMDsK LQlvYmotPm1hZHYgPSBJOTE1X01BRFZfV0lMTE5FRUQ7CisJb2JqLT5tbS5kaXJ0eSA9IGZhbHNl OworCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKIH0KIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3RfaW50ZXJuYWxf b3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVy X3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwpp bmRleCAwNTI5MzI0NmUwYjkuLjU3OTE4ZjIxZWNjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbnQgaTkxNV9n ZW1fcmVuZGVyX3N0YXRlX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJ CXJldHVybiAwOwogCiAJLyogUmVjcmVhdGUgdGhlIHBhZ2UgYWZ0ZXIgc2hyaW5raW5nICovCi0J aWYgKCFzby0+dm1hLT5vYmotPnBhZ2VzKQorCWlmICghc28tPnZtYS0+b2JqLT5tbS5wYWdlcykK IAkJc28tPmJhdGNoX29mZnNldCA9IC0xOwogCiAJcmV0ID0gaTkxNV92bWFfcGluKHNvLT52bWEs IDAsIDAsIFBJTl9HTE9CQUwgfCBQSU5fSElHSCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc2hyaW5rZXIuYwppbmRleCBkZTI1YjZlMGExMDEuLjEyNGY2OWE4MDE2MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRp YyBib29sIGNhbl9yZWxlYXNlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiAJICogdG8gdGhlIEdQVSwgc2ltcGx5IHVuYmluZGluZyBmcm9tIHRoZSBHUFUgaXMgbm90IGdv aW5nIHRvIHN1Y2NlZWQKIAkgKiBpbiByZWxlYXNpbmcgb3VyIHBpbiBjb3VudCBvbiB0aGUgcGFn ZXMgdGhlbXNlbHZlcy4KIAkgKi8KLQlpZiAob2JqLT5wYWdlc19waW5fY291bnQgPiBvYmotPmJp bmRfY291bnQpCisJaWYgKG9iai0+bW0ucGFnZXNfcGluX2NvdW50ID4gb2JqLT5iaW5kX2NvdW50 KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYW55X3ZtYV9waW5uZWQob2JqKSkKQEAgLTg4LDcg Kzg4LDcgQEAgc3RhdGljIGJvb2wgY2FuX3JlbGVhc2VfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIAkgKiBkaXNjYXJkIHRoZSBjb250ZW50cyAoYmVjYXVzZSB0aGUgdXNl ciBoYXMgbWFya2VkIHRoZW0gYXMgYmVpbmcKIAkgKiBwdXJnZWFibGUpIG9yIGlmIHdlIGNhbiBt b3ZlIHRoZWlyIGNvbnRlbnRzIG91dCB0byBzd2FwLgogCSAqLwotCXJldHVybiBzd2FwX2F2YWls YWJsZSgpIHx8IG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQ7CisJcmV0dXJuIHN3YXBf YXZhaWxhYmxlKCkgfHwgb2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRDsKIH0KIAog LyoqCkBAIC0xNzUsMTEgKzE3NSwxMSBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3Qs ICZzdGlsbF9pbl9saXN0KTsKIAogCQkJaWYgKGZsYWdzICYgSTkxNV9TSFJJTktfUFVSR0VBQkxF ICYmCi0JCQkgICAgb2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJCSAgICBvYmot Pm1tLm1hZHYgIT0gSTkxNV9NQURWX0RPTlRORUVEKQogCQkJCWNvbnRpbnVlOwogCiAJCQlpZiAo ZmxhZ3MgJiBJOTE1X1NIUklOS19WTUFQUyAmJgotCQkJICAgICFpc192bWFsbG9jX2FkZHIob2Jq LT5tYXBwaW5nKSkKKwkJCSAgICAhaXNfdm1hbGxvY19hZGRyKG9iai0+bW0ubWFwcGluZykpCiAJ CQkJY29udGludWU7CiAKIAkJCWlmICghKGZsYWdzICYgSTkxNV9TSFJJTktfQUNUSVZFKSAmJgpA QCAtMTk0LDcgKzE5NCw3IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAKIAkJCS8qIEZvciB0aGUgdW5ib3VuZCBwaGFzZSwgdGhpcyBzaG91bGQg YmUgYSBuby1vcCEgKi8KIAkJCWk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKTsKLQkJCWlmIChp OTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaikgPT0gMCkKKwkJCWlmIChfX2k5MTVfZ2VtX29i amVjdF9wdXRfcGFnZXMob2JqKSA9PSAwKQogCQkJCWNvdW50ICs9IG9iai0+YmFzZS5zaXplID4+ IFBBR0VfU0hJRlQ7CiAKIAkJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKaW5kZXggNzBlNjFiYzM1YzYwLi4wYWNiZGNiZDhmM2Eg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCkBAIC01NTUsMTYgKzU1NSwx NyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfc3RvbGVuKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0 X3BhZ2VzX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCS8qIFNo b3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgZnJlZSAqLwotCXNnX2ZyZWVfdGFibGUob2JqLT5w YWdlcyk7Ci0Ja2ZyZWUob2JqLT5wYWdlcyk7CisJc2dfZnJlZV90YWJsZShvYmotPm1tLnBhZ2Vz KTsKKwlrZnJlZShvYmotPm1tLnBhZ2VzKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogaTkxNV9nZW1f b2JqZWN0X3JlbGVhc2Vfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmotPmJhc2Uu ZGV2KTsKIAorCV9faTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisKIAlpZiAob2Jq LT5zdG9sZW4pIHsKIAkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBvYmot PnN0b2xlbik7CiAJCWtmcmVlKG9iai0+c3RvbGVuKTsKQEAgLTU5MCwxNSArNTkxLDE2IEBAIF9p OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWRy bV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+c2l6ZSk7 CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMp OwogCi0Jb2JqLT5wYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAotCQkJ CQkJICBzdG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUpOwotCWlmIChvYmotPnBhZ2VzID09IE5V TEwpCisJb2JqLT5tbS5wYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAor CQkJCQkJICAgICBzdG9sZW4tPnN0YXJ0LAorCQkJCQkJICAgICBzdG9sZW4tPnNpemUpOworCWlm ICghb2JqLT5tbS5wYWdlcykKIAkJZ290byBjbGVhbnVwOwogCi0Jb2JqLT5nZXRfcGFnZS5zZ19w b3MgPSBvYmotPnBhZ2VzLT5zZ2w7Ci0Jb2JqLT5nZXRfcGFnZS5zZ19pZHggPSAwOworCW9iai0+ bW0uZ2V0X3BhZ2Uuc2dfcG9zID0gb2JqLT5tbS5wYWdlcy0+c2dsOworCW9iai0+bW0uZ2V0X3Bh Z2Uuc2dfaWR4ID0gMDsKIAotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwlfX2k5 MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKIAog CW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVIHwgSTkxNV9HRU1f RE9NQUlOX0dUVDsKQEAgLTcxOCwxNCArNzIwLDE0IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZ290byBl cnI7CiAJfQogCi0Jdm1hLT5wYWdlcyA9IG9iai0+cGFnZXM7CisJdm1hLT5wYWdlcyA9IG9iai0+ bW0ucGFnZXM7CiAJdm1hLT5mbGFncyB8PSBJOTE1X1ZNQV9HTE9CQUxfQklORDsKIAlfX2k5MTVf dm1hX3NldF9tYXBfYW5kX2ZlbmNlYWJsZSh2bWEpOwogCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZt X2xpbmssICZnZ3R0LT5iYXNlLmluYWN0aXZlX2xpc3QpOwogCW9iai0+YmluZF9jb3VudCsrOwog CiAJbGlzdF9hZGRfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5tbS5ib3VuZF9s aXN0KTsKLQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJX19pOTE1X2dlbV9vYmpl Y3RfcGluX3BhZ2VzKG9iaik7CiAKIAlyZXR1cm4gb2JqOwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3RpbGluZy5jCmluZGV4IDcxZjgwZDJhNDg3Yy4uMzRkNWFkYTQ5NzIwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwpAQCAtMjU5LDEzICsyNTksMTMgQEAgaTkx NV9nZW1fc2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlp ZiAoIWVycikgewogCQkJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAKLQkJCWlmIChvYmotPnBhZ2Vz ICYmCi0JCQkgICAgb2JqLT5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCAmJgorCQkJaWYgKG9i ai0+bW0ucGFnZXMgJiYKKwkJCSAgICBvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVE ICYmCiAJCQkgICAgZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUykg ewogCQkJCWlmIChhcmdzLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19OT05FKQotCQkJCQlp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwkJCQkJX19pOTE1X2dlbV9vYmplY3Rf dW5waW5fcGFnZXMob2JqKTsKIAkJCQlpZiAoIWk5MTVfZ2VtX29iamVjdF9pc190aWxlZChvYmop KQotCQkJCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJCQkJCV9faTkxNV9nZW1f b2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCQkJfQogCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZt YSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV91c2VycHRyLmMKaW5kZXggY2I5NTc4OWRhNzZlLi4wZmRkMWQ2NzIzZDEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKQEAgLTczLDEwICs3MywxMCBAQCBzdGF0aWMg dm9pZCBjYW5jZWxfdXNlcnB0cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJLyogQ2FuY2Vs IGFueSBhY3RpdmUgd29ya2VyIGFuZCBmb3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAgKi8KIAlv YmotPnVzZXJwdHIud29yayA9IE5VTEw7CiAKLQlpZiAob2JqLT5wYWdlcyAhPSBOVUxMKSB7CisJ aWYgKG9iai0+bW0ucGFnZXMpIHsKIAkJLyogV2UgYXJlIGluc2lkZSBhIGt0aHJlYWQgY29udGV4 dCBhbmQgY2FuJ3QgYmUgaW50ZXJydXB0ZWQgKi8KIAkJV0FSTl9PTihpOTE1X2dlbV9vYmplY3Rf dW5iaW5kKG9iaikpOwotCQlXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKSk7 CisJCVdBUk5fT04oX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaikpOwogCX0KIAogCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKQEAgLTQzMiwxNSArNDMyLDE1IEBAIF9faTkxNV9nZW1f dXNlcnB0cl9zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHsKIAlp bnQgcmV0OwogCi0JcmV0ID0gc3Rfc2V0X3BhZ2VzKCZvYmotPnBhZ2VzLCBwdmVjLCBudW1fcGFn ZXMpOworCXJldCA9IHN0X3NldF9wYWdlcygmb2JqLT5tbS5wYWdlcywgcHZlYywgbnVtX3BhZ2Vz KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJcmV0ID0gaTkxNV9nZW1fZ3R0X3ByZXBh cmVfb2JqZWN0KG9iaik7CiAJaWYgKHJldCkgewotCQlzZ19mcmVlX3RhYmxlKG9iai0+cGFnZXMp OwotCQlrZnJlZShvYmotPnBhZ2VzKTsKLQkJb2JqLT5wYWdlcyA9IE5VTEw7CisJCXNnX2ZyZWVf dGFibGUob2JqLT5tbS5wYWdlcyk7CisJCWtmcmVlKG9iai0+bW0ucGFnZXMpOworCQlvYmotPm1t LnBhZ2VzID0gTlVMTDsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtNTI2LDggKzUyNiw4IEBAIF9f aTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqX3dv cmspCiAJCQlpZiAocmV0ID09IDApIHsKIAkJCQlsaXN0X2FkZF90YWlsKCZvYmotPmdsb2JhbF9s aXN0LAogCQkJCQkgICAgICAmdG9faTkxNShkZXYpLT5tbS51bmJvdW5kX2xpc3QpOwotCQkJCW9i ai0+Z2V0X3BhZ2Uuc2dfcG9zID0gb2JqLT5wYWdlcy0+c2dsOwotCQkJCW9iai0+Z2V0X3BhZ2Uu c2dfaWR4ID0gMDsKKwkJCQlvYmotPm1tLmdldF9wYWdlLnNnX3BvcyA9IG9iai0+bW0ucGFnZXMt PnNnbDsKKwkJCQlvYmotPm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7CiAJCQkJcGlubmVkID0gMDsK IAkJCX0KIAkJfQpAQCAtNjY4LDIyICs2NjgsMjIgQEAgaTkxNV9nZW1fdXNlcnB0cl9wdXRfcGFn ZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlCVUdfT04ob2JqLT51c2VycHRy LndvcmsgIT0gTlVMTCk7CiAJX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUob2JqLCBmYWxz ZSk7CiAKLQlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCkKLQkJb2JqLT5kaXJ0 eSA9IDA7CisJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpCisJCW9iai0+ bW0uZGlydHkgPSBmYWxzZTsKIAogCWk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KG9iaik7CiAK LQlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5wYWdlcykgewotCQlpZiAo b2JqLT5kaXJ0eSkKKwlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5tbS5w YWdlcykgeworCQlpZiAob2JqLT5tbS5kaXJ0eSkKIAkJCXNldF9wYWdlX2RpcnR5KHBhZ2UpOwog CiAJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlKTsKIAkJcHV0X3BhZ2UocGFnZSk7CiAJfQotCW9i ai0+ZGlydHkgPSAwOworCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKIAotCXNnX2ZyZWVfdGFibGUo b2JqLT5wYWdlcyk7Ci0Ja2ZyZWUob2JqLT5wYWdlcyk7CisJc2dfZnJlZV90YWJsZShvYmotPm1t LnBhZ2VzKTsKKwlrZnJlZShvYmotPm1tLnBhZ2VzKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IDI0MmI5YTkyNzg5OS4uMzIyYzVhODZh YmY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTg4OSw4ICs4ODks OCBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIg KmVyciwKIAllcnItPndyaXRlX2RvbWFpbiA9IG9iai0+YmFzZS53cml0ZV9kb21haW47CiAJZXJy LT5mZW5jZV9yZWcgPSB2bWEtPmZlbmNlID8gdm1hLT5mZW5jZS0+aWQgOiAtMTsKIAllcnItPnRp bGluZyA9IGk5MTVfZ2VtX29iamVjdF9nZXRfdGlsaW5nKG9iaik7Ci0JZXJyLT5kaXJ0eSA9IG9i ai0+ZGlydHk7Ci0JZXJyLT5wdXJnZWFibGUgPSBvYmotPm1hZHYgIT0gSTkxNV9NQURWX1dJTExO RUVEOworCWVyci0+ZGlydHkgPSBvYmotPm1tLmRpcnR5OworCWVyci0+cHVyZ2VhYmxlID0gb2Jq LT5tbS5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRDsKIAllcnItPnVzZXJwdHIgPSBvYmotPnVz ZXJwdHIubW0gIT0gTlVMTDsKIAllcnItPmNhY2hlX2xldmVsID0gb2JqLT5jYWNoZV9sZXZlbDsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggMWMxYmQzMGU4YjJkLi5jYjMwNTQ5ZGZk NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGlj IGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAog CWNlLT5scmNfcmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsxXSA9CiAJCWk5MTVfZ2d0 dF9vZmZzZXQoY2UtPnJpbmctPnZtYSk7CiAKLQljZS0+c3RhdGUtPm9iai0+ZGlydHkgPSB0cnVl OworCWNlLT5zdGF0ZS0+b2JqLT5tbS5kaXJ0eSA9IHRydWU7CiAKIAkvKiBJbnZhbGlkYXRlIEd1 QyBUTEIuICovCiAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7CkBAIC0yMDQyLDcg KzIwNDIsNyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCiAJCURSTV9ERUJVR19EUklWRVIoIkNvdWxkIG5vdCBtYXAgb2JqZWN0IHBhZ2VzISAoJWQp XG4iLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KLQljdHhfb2JqLT5kaXJ0eSA9IHRydWU7CisJ Y3R4X29iai0+bW0uZGlydHkgPSB0cnVlOwogCiAJLyogVGhlIHNlY29uZCBwYWdlIG9mIHRoZSBj b250ZXh0IG9iamVjdCBjb250YWlucyBzb21lIGZpZWxkcyB3aGljaCBtdXN0CiAJICogYmUgc2V0 IHVwIHByaW9yIHRvIHRoZSBmaXJzdCBleGVjdXRpb24uICovCkBAIC0yMTgwLDcgKzIxODAsNyBA QCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAkJCXJlZ1tDVFhfUklOR19IRUFEKzFdID0gMDsKIAkJCXJlZ1tDVFhfUklOR19U QUlMKzFdID0gMDsKIAotCQkJY2UtPnN0YXRlLT5vYmotPmRpcnR5ID0gdHJ1ZTsKKwkJCWNlLT5z dGF0ZS0+b2JqLT5tbS5kaXJ0eSA9IHRydWU7CiAJCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KGNlLT5zdGF0ZS0+b2JqKTsKIAogCQkJY2UtPnJpbmctPmhlYWQgPSBjZS0+cmluZy0+dGFpbCA9 IDA7Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==