From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 15/38] drm/i915: Refactor object page API Date: Tue, 20 Sep 2016 09:29:49 +0100 Message-ID: <20160920083012.2754-16-chris@chris-wilson.co.uk> References: <20160920083012.2754-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-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id B17A36E68D for ; Tue, 20 Sep 2016 08:30:36 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id l132so2073525wmf.1 for ; Tue, 20 Sep 2016 01:30:36 -0700 (PDT) In-Reply-To: <20160920083012.2754-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 Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhlIHBsYW4gaXMgdG8gbWFrZSBvYnRhaW5pbmcgdGhlIGJhY2tpbmcgc3RvcmFnZSBmb3IgdGhl IG9iamVjdCBhdm9pZApzdHJ1Y3RfbXV0ZXggKGkuZS4gdXNlIGl0cyBvd24gbG9ja2luZykuIFRo ZSBmaXJzdCBzdGVwIGlzIHRvIHVwZGF0ZSB0aGUKQVBJIHNvIHRoYXQgbm9ybWFsIHVzZXJzIG9u bHkgY2FsbCBwaW4vdW5waW4gd2hpbHN0IHdvcmtpbmcgb24gdGhlCmJhY2tpbmcgc3RvcmFnZS4K ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jICAgICAgIHwgICAyICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICB8ICAxNyArLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgIHwgIDg5ICsrKysr KysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgfCAy MDcgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9iYXRjaF9wb29sLmMgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZG1hYnVmLmMgICAgICAgfCAgMTQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYyAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9m ZW5jZS5jICAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgICAgICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVy bmFsLmMgICAgIHwgIDE5ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVy X3N0YXRlLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2Vy LmMgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAg ICAgICB8ICAyNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyAg ICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jICAg ICAgfCAgMzAgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAg ICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAg IHwgICA2ICstCiAxNyBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKSwgMjE4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKaW5kZXggNzA5ODBm ODJhMTViLi44ZDIwMDIwY2I5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfY21kX3BhcnNlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNl ci5jCkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBpbnQgaW50ZWxfZW5naW5lX2NtZF9wYXJzZXIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCX0KIAogCWlmIChyZXQgPT0gMCAmJiBuZWVk c19jbGZsdXNoX2FmdGVyKQotCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHNoYWRvd19iYXRjaF9v YmotPm1hcHBpbmcsIGJhdGNoX2xlbik7CisJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2Uoc2hhZG93 X2JhdGNoX29iai0+bW0ubWFwcGluZywgYmF0Y2hfbGVuKTsKIAlpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKHNoYWRvd19iYXRjaF9vYmopOwogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMjc4ZmIxOGVmZGUyLi4wYjJlMGZmOTY4Y2YgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGNoYXIg Z2V0X2dsb2JhbF9mbGFnKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIHN0YXRp YyBjaGFyIGdldF9waW5fbWFwcGVkX2ZsYWcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIHsKLQlyZXR1cm4gb2JqLT5tYXBwaW5nID8gJ00nIDogJyAnOworCXJldHVybiBvYmotPm1t Lm1hcHBpbmcgPyAnTScgOiAnICc7CiB9CiAKIHN0YXRpYyB1NjQgaTkxNV9nZW1fb2JqX3RvdGFs X2dndHRfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQpAQCAtMTYwLDggKzE2 MCw4IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJCSAgIGk5MTVfZ2VtX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFz dF93cml0ZSwKIAkJCQkJICAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSwKIAkJICAg aTkxNV9jYWNoZV9sZXZlbF9zdHIoZGV2X3ByaXYsIG9iai0+Y2FjaGVfbGV2ZWwpLAotCQkgICBv YmotPmRpcnR5ID8gIiBkaXJ0eSIgOiAiIiwKLQkJICAgb2JqLT5tYWR2ID09IEk5MTVfTUFEVl9E T05UTkVFRCA/ICIgcHVyZ2VhYmxlIiA6ICIiKTsKKwkJICAgb2JqLT5tbS5kaXJ0eSA/ICIgZGly dHkiIDogIiIsCisJCSAgIG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgPyAiIHB1 cmdlYWJsZSIgOiAiIik7CiAJaWYgKG9iai0+YmFzZS5uYW1lKQogCQlzZXFfcHJpbnRmKG0sICIg KG5hbWU6ICVkKSIsIG9iai0+YmFzZS5uYW1lKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm9iai0+dm1hX2xpc3QsIG9ial9saW5rKSB7CkBAIC00MTMsMTIgKzQxMywxMiBAQCBzdGF0aWMg aW50IGk5MTVfZ2VtX29iamVjdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkK IAkJc2l6ZSArPSBvYmotPmJhc2Uuc2l6ZTsKIAkJKytjb3VudDsKIAotCQlpZiAob2JqLT5tYWR2 ID09IEk5MTVfTUFEVl9ET05UTkVFRCkgeworCQlpZiAob2JqLT5tbS5tYWR2ID09IEk5MTVfTUFE Vl9ET05UTkVFRCkgewogCQkJcHVyZ2VhYmxlX3NpemUgKz0gb2JqLT5iYXNlLnNpemU7CiAJCQkr K3B1cmdlYWJsZV9jb3VudDsKIAkJfQogCi0JCWlmIChvYmotPm1hcHBpbmcpIHsKKwkJaWYgKG9i ai0+bW0ubWFwcGluZykgewogCQkJbWFwcGVkX2NvdW50Kys7CiAJCQltYXBwZWRfc2l6ZSArPSBv YmotPmJhc2Uuc2l6ZTsKIAkJfQpAQCAtNDM1LDEyICs0MzUsMTIgQEAgc3RhdGljIGludCBpOTE1 X2dlbV9vYmplY3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCQkrK2Rw eV9jb3VudDsKIAkJfQogCi0JCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEKSB7 CisJCWlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEKSB7CiAJCQlwdXJnZWFi bGVfc2l6ZSArPSBvYmotPmJhc2Uuc2l6ZTsKIAkJCSsrcHVyZ2VhYmxlX2NvdW50OwogCQl9CiAK LQkJaWYgKG9iai0+bWFwcGluZykgeworCQlpZiAob2JqLT5tbS5tYXBwaW5nKSB7CiAJCQltYXBw ZWRfY291bnQrKzsKIAkJCW1hcHBlZF9zaXplICs9IG9iai0+YmFzZS5zaXplOwogCQl9CkBAIC0x OTc4LDcgKzE5NzgsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2R1bXBfbHJjX29iaihzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sCiAJCXNlcV9wcmludGYobSwgIlx0Qm91bmQgaW4gR0dUVCBhdCAweCUwOHhcbiIs CiAJCQkgICBpOTE1X2dndHRfb2Zmc2V0KHZtYSkpOwogCi0JaWYgKGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZXModm1hLT5vYmopKSB7CisJaWYgKGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXModm1h LT5vYmopKSB7CiAJCXNlcV9wdXRzKG0sICJcdEZhaWxlZCB0byBnZXQgcGFnZXMgZm9yIGNvbnRl eHQgb2JqZWN0XG5cbiIpOwogCQlyZXR1cm47CiAJfQpAQCAtMTk5Nyw2ICsxOTk3LDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9kdW1wX2xyY19vYmooc3RydWN0IHNlcV9maWxlICptLAogCQlrdW5tYXBf YXRvbWljKHJlZ19zdGF0ZSk7CiAJfQogCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHZt YS0+b2JqKTsKIAlzZXFfcHV0YyhtLCAnXG4nKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggMzNjZTZkYjg1Y2U0Li5kNTFhNGVjNTEyZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtMjIyMSwxNyArMjIyMSw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKICNk ZWZpbmUgSTkxNV9CT19BQ1RJVkVfUkVGIEJJVChJOTE1X0JPX0FDVElWRV9SRUZfU0hJRlQpCiAK IAkvKioKLQkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHdyaXR0ZW4gdG8g c2luY2UgbGFzdCBib3VuZAotCSAqIHRvIHRoZSBHVFQKLQkgKi8KLQl1bnNpZ25lZCBpbnQgZGly dHk6MTsKLQotCS8qKgotCSAqIEFkdmljZTogYXJlIHRoZSBiYWNraW5nIHBhZ2VzIHB1cmdlYWJs ZT8KLQkgKi8KLQl1bnNpZ25lZCBpbnQgbWFkdjoyOwotCi0JLyoqCiAJICogV2hldGhlciB0aGUg Y3VycmVudCBndHQgbWFwcGluZyBuZWVkcyB0byBiZSBtYXBwYWJsZSAoYW5kIGlzbid0IGp1c3QK IAkgKiBtYXBwYWJsZSBieSBhY2NpZGVudCkuIFRyYWNrIHBpbiBhbmQgZmF1bHQgc2VwYXJhdGUg Zm9yIGEgbW9yZQogCSAqIGFjY3VyYXRlIG1hcHBhYmxlIHdvcmtpbmcgc2V0LgpAQCAtMjI1OSwx NiArMjI0OCwzMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJdW5zaWduZWQgaW50 IGJpbmRfY291bnQ7CiAJdW5zaWduZWQgaW50IHBpbl9kaXNwbGF5OwogCi0Jc3RydWN0IHNnX3Rh YmxlICpwYWdlczsKLQlpbnQgcGFnZXNfcGluX2NvdW50OwotCXN0cnVjdCBpOTE1X2dlbV9vYmpl Y3RfcGFnZV9pdGVyIHsKLQkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ19wb3M7Ci0JCXVuc2lnbmVk IGxvbmcgc2dfaWR4OworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGludCBwYWdlc19waW5fY291bnQ7 CisKKwkJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKKwkJdm9pZCAqbWFwcGluZzsKKworCQlzdHJ1 Y3QgaTkxNV9nZW1fb2JqZWN0X3BhZ2VfaXRlciB7CisJCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn X3BvczsKKwkJCXVuc2lnbmVkIGxvbmcgc2dfaWR4OwogCi0JCXN0cnVjdCByYWRpeF90cmVlX3Jv b3QgcmFkaXg7Ci0JCXN0cnVjdCBtdXRleCBsb2NrOwotCX0gZ2V0X3BhZ2U7Ci0Jdm9pZCAqbWFw cGluZzsKKwkJCXN0cnVjdCByYWRpeF90cmVlX3Jvb3QgcmFkaXg7CisJCQlzdHJ1Y3QgbXV0ZXgg bG9jazsKKwkJfSBnZXRfcGFnZTsKKworCQkvKioKKwkJICogQWR2aWNlOiBhcmUgdGhlIGJhY2tp bmcgcGFnZXMgcHVyZ2VhYmxlPworCQkgKi8KKwkJdW5zaWduZWQgaW50IG1hZHY6MjsKKworCQkv KioKKwkJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiB3cml0dGVuIHRvIHNp bmNlIHRoZQorCQkgKiBwYWdlcyB3ZXJlIGxhc3QgYWNxdWlyZWQuCisJCSAqLworCQl1bnNpZ25l ZCBpbnQgZGlydHk6MTsKKwl9IG1tOwogCiAJLyoqIEJyZWFkY3J1bWIgb2YgbGFzdCByZW5kZXJp bmcgdG8gdGhlIGJ1ZmZlci4KIAkgKiBUaGVyZSBjYW4gb25seSBiZSBvbmUgd3JpdGVyLCBidXQg d2UgYWxsb3cgZm9yIG11bHRpcGxlIHJlYWRlcnMuCkBAIC0zMTQ0LDEzICszMTQ4LDEwIEBAIHZv aWQgaTkxNV92bWFfY2xvc2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwogdm9pZCBpOTE1X3ZtYV9k ZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKIAogaW50IGk5MTVfZ2VtX29iamVjdF91bmJp bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Ci1pbnQgaTkxNV9nZW1fb2JqZWN0 X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgaTkxNV9n ZW1fcmVsZWFzZV9hbGxfbW1hcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IHZvaWQgaTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopOwogCi1pbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IF9fc2dfcGFn ZV9jb3VudChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQorc3RhdGljIGlubGluZSBpbnQgX19zZ19w YWdlX2NvdW50KGNvbnN0IHN0cnVjdCBzY2F0dGVybGlzdCAqc2cpCiB7CiAJcmV0dXJuIHNnLT5s ZW5ndGggPj4gUEFHRV9TSElGVDsKIH0KQEAgLTMxNzEsMTggKzMxNzIsNDggQEAgZG1hX2FkZHJf dAogaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQkJCXVuc2lnbmVkIGxvbmcgbik7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CitpbnQgX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopOworCitzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKK2k5MTVfZ2VtX29i amVjdF9waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlCVUdf T04ob2JqLT5wYWdlcyA9PSBOVUxMKTsKLQlvYmotPnBhZ2VzX3Bpbl9jb3VudCsrOworCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKG9iai0+ bW0ucGFnZXNfcGluX2NvdW50KyspCisJCXJldHVybiAwOworCisJcmV0dXJuIF9faTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlcyhvYmopOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19faTkxNV9n ZW1fb2JqZWN0X3Bpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorewor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJR0VN X0JVR19PTighb2JqLT5tbS5wYWdlcyk7CisJb2JqLT5tbS5wYWdlc19waW5fY291bnQrKzsKK30K Kworc3RhdGljIGlubGluZSBib29sCitpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXJldHVybiBvYmotPm1tLnBhZ2Vz X3Bpbl9jb3VudDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfX2k5MTVfZ2VtX29iamVjdF91 bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJR0VNX0JVR19PTigh aTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSk7CisJR0VNX0JVR19PTighb2Jq LT5tbS5wYWdlcyk7CisJb2JqLT5tbS5wYWdlc19waW5fY291bnQtLTsKIH0KIAogc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQogewotCUJVR19PTihvYmotPnBhZ2VzX3Bpbl9jb3VudCA9PSAwKTsKLQlv YmotPnBhZ2VzX3Bpbl9jb3VudC0tOworCV9faTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9i aik7CiB9CiAKK2ludCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaik7CisKIGVudW0gaTkxNV9tYXBfdHlwZSB7CiAJSTkxNV9NQVBfV0Ig PSAwLAogCUk5MTVfTUFQX1dDLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggMjUzZjkyYjk1 NDAwLi44M2Q2OGUwNjkzODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjE2LDcgKzIx Niw3IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQogCXNnX2RtYV9hZGRyZXNzKHNnKSA9IG9iai0+cGh5c19oYW5kbGUtPmJ1 c2FkZHI7CiAJc2dfZG1hX2xlbihzZykgPSBvYmotPmJhc2Uuc2l6ZTsKIAotCW9iai0+cGFnZXMg PSBzdDsKKwlvYmotPm1tLnBhZ2VzID0gc3Q7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIyNSw3ICsy MjUsNyBAQCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKIAlpbnQgcmV0OwogCi0JQlVHX09OKG9iai0+bWFkdiA9PSBfX0k5 MTVfTUFEVl9QVVJHRUQpOworCUJVR19PTihvYmotPm1tLm1hZHYgPT0gX19JOTE1X01BRFZfUFVS R0VEKTsKIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihvYmosIHRy dWUpOwogCWlmIChXQVJOX09OKHJldCkpIHsKQEAgLTIzNSwxMCArMjM1LDEwIEBAIGk5MTVfZ2Vt X29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CQlvYmotPmJhc2UucmVhZF9kb21haW5zID0gb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVf R0VNX0RPTUFJTl9DUFU7CiAJfQogCi0JaWYgKG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5F RUQpCi0JCW9iai0+ZGlydHkgPSAwOworCWlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX0RP TlRORUVEKQorCQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAKLQlpZiAob2JqLT5kaXJ0eSkgewor CWlmIChvYmotPm1tLmRpcnR5KSB7CiAJCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0g b2JqLT5iYXNlLmZpbHAtPmZfbWFwcGluZzsKIAkJY2hhciAqdmFkZHIgPSBvYmotPnBoeXNfaGFu ZGxlLT52YWRkcjsKIAkJaW50IGk7CkBAIC0yNTcsMjIgKzI1NywyMyBAQCBpOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJCWt1 bm1hcF9hdG9taWMoZHN0KTsKIAogCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7Ci0JCQlpZiAob2Jq LT5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCkKKwkJCWlmIChvYmotPm1tLm1hZHYgPT0gSTkx NV9NQURWX1dJTExORUVEKQogCQkJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlKTsKIAkJCXB1dF9w YWdlKHBhZ2UpOwogCQkJdmFkZHIgKz0gUEFHRV9TSVpFOwogCQl9Ci0JCW9iai0+ZGlydHkgPSAw OworCQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAJfQogCi0Jc2dfZnJlZV90YWJsZShvYmotPnBh Z2VzKTsKLQlrZnJlZShvYmotPnBhZ2VzKTsKKwlzZ19mcmVlX3RhYmxlKG9iai0+bW0ucGFnZXMp OworCWtmcmVlKG9iai0+bW0ucGFnZXMpOwogfQogCiBzdGF0aWMgdm9pZAogaTkxNV9nZW1fb2Jq ZWN0X3JlbGVhc2VfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCWRy bV9wY2lfZnJlZShvYmotPmJhc2UuZGV2LCBvYmotPnBoeXNfaGFuZGxlKTsKKwlpOTE1X2dlbV9v YmplY3RfdW5waW5fcGFnZXMob2JqKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9waHlzX29wcyA9IHsKQEAgLTUwNiw3ICs1MDcsNyBA QCBpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfV0lM TE5FRUQpCisJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpCiAJCXJldHVy biAtRUZBVUxUOwogCiAJaWYgKG9iai0+YmFzZS5maWxwID09IE5VTEwpCkBAIC01MTYsNyArNTE3 LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX29i amVjdF9wdXRfcGFnZXMob2JqKTsKKwlyZXQgPSBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMo b2JqKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC01MjgsNyArNTI5LDcgQEAgaTkx NV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CiAJb2JqLT5waHlzX2hhbmRsZSA9IHBoeXM7CiAJb2JqLT5vcHMgPSAmaTkxNV9nZW1fcGh5c19v cHM7CiAKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCXJldHVybiBp OTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTcyNCwx MiArNzI1LDEwIEBAIGludCBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV9yZWFkKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX3BhZ2VzKG9iaik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWk5MTVfZ2Vt X29iamVjdF9waW5fcGFnZXMob2JqKTsKLQogCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9ndHRfd3Jp dGVfZG9tYWluKG9iaik7CiAKIAkvKiBJZiB3ZSdyZSBub3QgaW4gdGhlIGNwdSByZWFkIGRvbWFp biwgc2V0IG91cnNlbGYgaW50byB0aGUgZ3R0CkBAIC03NzcsMTIgKzc3NiwxMCBAQCBpbnQgaTkx NV9nZW1fb2JqX3ByZXBhcmVfc2htZW1fd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlcyhvYmopOworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhv YmopOwotCiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21haW4ob2JqKTsKIAog CS8qIElmIHdlJ3JlIG5vdCBpbiB0aGUgY3B1IHdyaXRlIGRvbWFpbiwgc2V0IG91cnNlbGYgaW50 byB0aGUKQEAgLTgxMiw3ICs4MDksNyBAQCBpbnQgaTkxNV9nZW1fb2JqX3ByZXBhcmVfc2htZW1f d3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJb2JqLT5jYWNoZV9kaXJ0 eSA9IHRydWU7CiAKIAlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9SSUdJTl9DUFUpOwot CW9iai0+ZGlydHkgPSAxOworCW9iai0+bW0uZGlydHkgPSB0cnVlOwogCS8qIHJldHVybiB3aXRo IHRoZSBwYWdlcyBwaW5uZWQgKi8KIAlyZXR1cm4gMDsKIApAQCAtOTQ5LDEzICs5NDYsMTEgQEAg aTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlmIChyZXQpCiAJ CQlnb3RvIG91dDsKIAotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7CisJ CXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAkJaWYgKHJldCkgewogCQkJ cmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwogCQkJZ290byBvdXQ7CiAJCX0KLQotCQlpOTE1 X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJfQogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwpAQCAtMTA2Miw3ICsxMDU3LDcgQEAgaTkx NV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlvZmZzZXQgPSBhcmdz LT5vZmZzZXQ7CiAJcmVtYWluID0gYXJncy0+c2l6ZTsKIAotCWZvcl9lYWNoX3NnX3BhZ2Uob2Jq LT5wYWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsCisJZm9yX2VhY2hfc2df cGFnZShvYmotPm1tLnBhZ2VzLT5zZ2wsICZzZ19pdGVyLCBvYmotPm1tLnBhZ2VzLT5uZW50cywK IAkJCSBvZmZzZXQgPj4gUEFHRV9TSElGVCkgewogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHNnX3Bh Z2VfaXRlcl9wYWdlKCZzZ19pdGVyKTsKIApAQCAtMTI1NCwxMyArMTI0OSwxMSBAQCBpOTE1X2dl bV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCWlmIChy ZXQpCiAJCQlnb3RvIG91dDsKIAotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9i aik7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAkJaWYgKHJldCkg ewogCQkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwogCQkJZ290byBvdXQ7CiAJCX0KLQot CQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJfQogCiAJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CkBAIC0xMjY4LDcgKzEyNjEsNyBA QCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CiAJCWdvdG8gb3V0X3VucGluOwogCiAJaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLCBPUklH SU5fQ1BVKTsKLQlvYmotPmRpcnR5ID0gdHJ1ZTsKKwlvYmotPm1tLmRpcnR5ID0gdHJ1ZTsKIAog CXVzZXJfZGF0YSA9IHU2NF90b191c2VyX3B0cihhcmdzLT5kYXRhX3B0cik7CiAJb2Zmc2V0ID0g YXJncy0+b2Zmc2V0OwpAQCAtMTQzOSw3ICsxNDMyLDcgQEAgaTkxNV9nZW1fc2htZW1fcHdyaXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJb2Zmc2V0ID0gYXJncy0+b2Zmc2V0OwogCXJlbWFp biA9IGFyZ3MtPnNpemU7CiAKLQlmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFnZXMtPnNnbCwgJnNn X2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLAorCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5tbS5wYWdl cy0+c2dsLCAmc2dfaXRlciwgb2JqLT5tbS5wYWdlcy0+bmVudHMsCiAJCQkgb2Zmc2V0ID4+IFBB R0VfU0hJRlQpIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBzZ19wYWdlX2l0ZXJfcGFnZSgmc2df aXRlcik7CiAJCWludCBwYXJ0aWFsX2NhY2hlbGluZV93cml0ZTsKQEAgLTIyMjgsNyArMjIyMSw3 IEBAIGk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogCSAqIGJhY2tpbmcgcGFnZXMsICpub3cqLgogCSAqLwogCXNobWVtX3RydW5jYXRlX3Jh bmdlKGZpbGVfaW5vZGUob2JqLT5iYXNlLmZpbHApLCAwLCAobG9mZl90KS0xKTsKLQlvYmotPm1h ZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJb2JqLT5tbS5tYWR2ID0gX19JOTE1X01BRFZfUFVS R0VEOwogfQogCiAvKiBUcnkgdG8gZGlzY2FyZCB1bndhbnRlZCBwYWdlcyAqLwpAQCAtMjIzNyw3 ICsyMjMwLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIAotCXN3 aXRjaCAob2JqLT5tYWR2KSB7CisJc3dpdGNoIChvYmotPm1tLm1hZHYpIHsKIAljYXNlIEk5MTVf TUFEVl9ET05UTkVFRDoKIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5jYXRlKG9iaik7CiAJY2FzZSBf X0k5MTVfTUFEVl9QVVJHRUQ6CkBAIC0yMjU4LDcgKzIyNTEsNyBAQCBpOTE1X2dlbV9vYmplY3Rf cHV0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBw YWdlICpwYWdlOwogCWludCByZXQ7CiAKLQlCVUdfT04ob2JqLT5tYWR2ID09IF9fSTkxNV9NQURW X1BVUkdFRCk7CisJQlVHX09OKG9iai0+bW0ubWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQpOwog CiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgdHJ1ZSk7CiAJ aWYgKFdBUk5fT04ocmV0KSkgewpAQCAtMjI3NCwyMiArMjI2NywyMiBAQCBpOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWlmIChp OTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdfc3dpenpsZShvYmopKQogCQlpOTE1X2dlbV9vYmpl Y3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShvYmopOwogCi0JaWYgKG9iai0+bWFkdiA9PSBJOTE1X01B RFZfRE9OVE5FRUQpCi0JCW9iai0+ZGlydHkgPSAwOworCWlmIChvYmotPm1tLm1hZHYgPT0gSTkx NV9NQURWX0RPTlRORUVEKQorCQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAKLQlmb3JfZWFjaF9z Z3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5wYWdlcykgewotCQlpZiAob2JqLT5kaXJ0eSkK Kwlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5tbS5wYWdlcykgeworCQlp ZiAob2JqLT5tbS5kaXJ0eSkKIAkJCXNldF9wYWdlX2RpcnR5KHBhZ2UpOwogCi0JCWlmIChvYmot Pm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEKQorCQlpZiAob2JqLT5tbS5tYWR2ID09IEk5MTVf TUFEVl9XSUxMTkVFRCkKIAkJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlKTsKIAogCQlwdXRfcGFn ZShwYWdlKTsKIAl9Ci0Jb2JqLT5kaXJ0eSA9IDA7CisJb2JqLT5tbS5kaXJ0eSA9IGZhbHNlOwog Ci0Jc2dfZnJlZV90YWJsZShvYmotPnBhZ2VzKTsKLQlrZnJlZShvYmotPnBhZ2VzKTsKKwlzZ19m cmVlX3RhYmxlKG9iai0+bW0ucGFnZXMpOworCWtmcmVlKG9iai0+bW0ucGFnZXMpOwogfQogCiBz dGF0aWMgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZXNldF9wYWdlX2l0ZXIoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKQEAgLTIyOTcsMjEgKzIyOTAsMjAgQEAgc3RhdGljIHZvaWQg X19pOTE1X2dlbV9vYmplY3RfcmVzZXRfcGFnZV9pdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiAJc3RydWN0IHJhZGl4X3RyZWVfaXRlciBpdGVyOwogCXZvaWQgKipzbG90Owog Ci0JcmFkaXhfdHJlZV9mb3JfZWFjaF9zbG90KHNsb3QsICZvYmotPmdldF9wYWdlLnJhZGl4LCAm aXRlciwgMCkKLQkJcmFkaXhfdHJlZV9kZWxldGUoJm9iai0+Z2V0X3BhZ2UucmFkaXgsIGl0ZXIu aW5kZXgpOworCXJhZGl4X3RyZWVfZm9yX2VhY2hfc2xvdChzbG90LCAmb2JqLT5tbS5nZXRfcGFn ZS5yYWRpeCwgJml0ZXIsIDApCisJCXJhZGl4X3RyZWVfZGVsZXRlKCZvYmotPm1tLmdldF9wYWdl LnJhZGl4LCBpdGVyLmluZGV4KTsKIH0KIAotaW50Ci1pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitpbnQgX19pOTE1X2dlbV9vYmplY3Rf cHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHMgPSBvYmotPm9wczsKIAogCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CiAKLQlpZiAob2JqLT5w YWdlcyA9PSBOVUxMKQorCWlmICghb2JqLT5tbS5wYWdlcykKIAkJcmV0dXJuIDA7CiAKLQlpZiAo b2JqLT5wYWdlc19waW5fY291bnQpCisJaWYgKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3Bh Z2VzKG9iaikpCiAJCXJldHVybiAtRUJVU1k7CiAKIAlHRU1fQlVHX09OKG9iai0+YmluZF9jb3Vu dCk7CkBAIC0yMzIxLDIyICsyMzEzLDIyIEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkgKiBsaXN0cyBlYXJseS4gKi8KIAlsaXN0 X2RlbCgmb2JqLT5nbG9iYWxfbGlzdCk7CiAKLQlpZiAob2JqLT5tYXBwaW5nKSB7CisJaWYgKG9i ai0+bW0ubWFwcGluZykgewogCQl2b2lkICpwdHI7CiAKLQkJcHRyID0gcHRyX21hc2tfYml0cyhv YmotPm1hcHBpbmcpOworCQlwdHIgPSBwdHJfbWFza19iaXRzKG9iai0+bW0ubWFwcGluZyk7CiAJ CWlmIChpc192bWFsbG9jX2FkZHIocHRyKSkKIAkJCXZ1bm1hcChwdHIpOwogCQllbHNlCiAJCQlr dW5tYXAoa21hcF90b19wYWdlKHB0cikpOwogCi0JCW9iai0+bWFwcGluZyA9IE5VTEw7CisJCW9i ai0+bW0ubWFwcGluZyA9IE5VTEw7CiAJfQogCiAJX19pOTE1X2dlbV9vYmplY3RfcmVzZXRfcGFn ZV9pdGVyKG9iaik7CiAKIAlvcHMtPnB1dF9wYWdlcyhvYmopOwotCW9iai0+cGFnZXMgPSBOVUxM OworCW9iai0+bW0ucGFnZXMgPSBOVUxMOwogCiAJaTkxNV9nZW1fb2JqZWN0X2ludmFsaWRhdGUo b2JqKTsKIApAQCAtMjQzMSw3ICsyNDIzLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19n dHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlpZiAoIXN3aW90bGJfbnJfdGJs KCkpCiAjZW5kaWYKIAkJc2dfbWFya19lbmQoc2cpOwotCW9iai0+cGFnZXMgPSBzdDsKKwlvYmot Pm1tLnBhZ2VzID0gc3Q7CiAKIAlyZXQgPSBpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qob2Jq KTsKIAlpZiAocmV0KQpAQCAtMjQ0Miw3ICsyNDM0LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9w YWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAogCWlmIChpOTE1X2dl bV9vYmplY3RfaXNfdGlsZWQob2JqKSAmJgogCSAgICBkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktf UElOX1NXSVpaTEVEX1BBR0VTKQotCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJ CV9faTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCiAJcmV0dXJuIDA7CiAKQEAgLTI0 NzQsOCArMjQ2Niw3IEBAIGVycl9wYWdlczoKICAqIGVpdGhlciBhcyBhIHJlc3VsdCBvZiBtZW1v cnkgcHJlc3N1cmUgKHJlYXBpbmcgcGFnZXMgdW5kZXIgdGhlIHNocmlua2VyKQogICogb3IgYXMg dGhlIG9iamVjdCBpcyBpdHNlbGYgcmVsZWFzZWQuCiAgKi8KLWludAotaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoraW50IF9faTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNlLmRl dik7CiAJY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHMgPSBvYmotPm9w czsKQEAgLTI0ODMsMjQgKzI0NzQsMjUgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAotCWlmIChvYmotPnBhZ2VzKQorCWlmIChvYmot Pm1tLnBhZ2VzKQogCQlyZXR1cm4gMDsKIAotCWlmIChvYmotPm1hZHYgIT0gSTkxNV9NQURWX1dJ TExORUVEKSB7CisJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpIHsKIAkJ RFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIG9idGFpbiBhIHB1cmdlYWJsZSBvYmplY3RcbiIpOwor CQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogCQlyZXR1cm4gLUVGQVVMVDsK IAl9CiAKLQlCVUdfT04ob2JqLT5wYWdlc19waW5fY291bnQpOwotCiAJcmV0ID0gb3BzLT5nZXRf cGFnZXMob2JqKTsKLQlpZiAocmV0KQorCWlmIChyZXQpIHsKKwkJX19pOTE1X2dlbV9vYmplY3Rf dW5waW5fcGFnZXMob2JqKTsKIAkJcmV0dXJuIHJldDsKKwl9CiAKIAlsaXN0X2FkZF90YWlsKCZv YmotPmdsb2JhbF9saXN0LCAmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAKLQlvYmotPmdl dF9wYWdlLnNnX3BvcyA9IG9iai0+cGFnZXMtPnNnbDsKLQlvYmotPmdldF9wYWdlLnNnX2lkeCA9 IDA7CisJb2JqLT5tbS5nZXRfcGFnZS5zZ19wb3MgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7CisJb2Jq LT5tbS5nZXRfcGFnZS5zZ19pZHggPSAwOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNTEwLDcgKzI1 MDIsNyBAQCBzdGF0aWMgdm9pZCAqaTkxNV9nZW1fb2JqZWN0X21hcChjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJCSBlbnVtIGk5MTVfbWFwX3R5cGUgdHlwZSkKIHsK IAl1bnNpZ25lZCBsb25nIG5fcGFnZXMgPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwot CXN0cnVjdCBzZ190YWJsZSAqc2d0ID0gb2JqLT5wYWdlczsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNn dCA9IG9iai0+bW0ucGFnZXM7CiAJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwogCXN0cnVjdCBw YWdlICpwYWdlOwogCXN0cnVjdCBwYWdlICpzdGFja19wYWdlc1szMl07CkBAIC0yNTY0LDE0ICsy NTU2LDEzIEBAIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KTsKIAlHRU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdl KG9iaikpOwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gRVJS X1BUUihyZXQpOwogCi0JaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwotCXBpbm5lZCA9 IG9iai0+cGFnZXNfcGluX2NvdW50ID4gMTsKKwlwaW5uZWQgPSBvYmotPm1tLnBhZ2VzX3Bpbl9j b3VudCA+IDE7CiAKLQlwdHIgPSBwdHJfdW5wYWNrX2JpdHMob2JqLT5tYXBwaW5nLCBoYXNfdHlw ZSk7CisJcHRyID0gcHRyX3VucGFja19iaXRzKG9iai0+bW0ubWFwcGluZywgaGFzX3R5cGUpOwog CWlmIChwdHIgJiYgaGFzX3R5cGUgIT0gdHlwZSkgewogCQlpZiAocGlubmVkKSB7CiAJCQlyZXQg PSAtRUJVU1k7CkBAIC0yNTgzLDcgKzI1NzQsNyBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGlu X21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQllbHNlCiAJCQlrdW5tYXAo a21hcF90b19wYWdlKHB0cikpOwogCi0JCXB0ciA9IG9iai0+bWFwcGluZyA9IE5VTEw7CisJCXB0 ciA9IG9iai0+bW0ubWFwcGluZyA9IE5VTEw7CiAJfQogCiAJaWYgKCFwdHIpIHsKQEAgLTI1OTMs NyArMjU4NCw3IEBAIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJCQlnb3RvIGVycjsKIAkJfQogCi0JCW9iai0+bWFwcGluZyA9 IHB0cl9wYWNrX2JpdHMocHRyLCB0eXBlKTsKKwkJb2JqLT5tbS5tYXBwaW5nID0gcHRyX3BhY2tf Yml0cyhwdHIsIHR5cGUpOwogCX0KIAogCXJldHVybiBwdHI7CkBAIC0zMDIzLDcgKzMwMTQsNyBA QCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCQlnb3RvIGRlc3Ry b3k7CiAKIAlHRU1fQlVHX09OKG9iai0+YmluZF9jb3VudCA9PSAwKTsKLQlHRU1fQlVHX09OKCFv YmotPnBhZ2VzKTsKKwlHRU1fQlVHX09OKCFvYmotPm1tLnBhZ2VzKTsKIAogCWlmIChpOTE1X3Zt YV9pc19tYXBfYW5kX2ZlbmNlYWJsZSh2bWEpKSB7CiAJCS8qIHJlbGVhc2UgdGhlIGZlbmNlIHJl ZyBfYWZ0ZXJfIGZsdXNoaW5nICovCkBAIC0zMDQ3LDcgKzMwMzgsNyBAQCBpbnQgaTkxNV92bWFf dW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCWRybV9tbV9yZW1vdmVfbm9kZSgmdm1hLT5u b2RlKTsKIAlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm1hLT52bS0+dW5ib3VuZF9s aXN0KTsKIAotCWlmICh2bWEtPnBhZ2VzICE9IG9iai0+cGFnZXMpIHsKKwlpZiAodm1hLT5wYWdl cyAhPSBvYmotPm1tLnBhZ2VzKSB7CiAJCUdFTV9CVUdfT04oIXZtYS0+cGFnZXMpOwogCQlzZ19m cmVlX3RhYmxlKHZtYS0+cGFnZXMpOwogCQlrZnJlZSh2bWEtPnBhZ2VzKTsKQEAgLTMxNzksMTIg KzMxNzAsMTAgQEAgaTkxNV92bWFfaW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6 ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKQogCQlyZXR1cm4gLUUyQklHOwogCX0KIAotCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX3BhZ2VzKG9iaik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWk5MTVfZ2Vt X29iamVjdF9waW5fcGFnZXMob2JqKTsKLQogCWlmIChmbGFncyAmIFBJTl9PRkZTRVRfRklYRUQp IHsKIAkJdTY0IG9mZnNldCA9IGZsYWdzICYgUElOX09GRlNFVF9NQVNLOwogCQlpZiAob2Zmc2V0 ICYgKGFsaWdubWVudCAtIDEpIHx8IG9mZnNldCA+IGVuZCAtIHNpemUpIHsKQEAgLTMyNjMsNyAr MzI1Miw3IEBAIGk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJICogdG8gR1BVLCBhbmQgd2UgY2FuIGlnbm9yZSB0aGUgY2FjaGUgZmx1c2gg YmVjYXVzZSBpdCdsbCBoYXBwZW4KIAkgKiBhZ2FpbiBhdCBiaW5kIHRpbWUuCiAJICovCi0JaWYg KG9iai0+cGFnZXMgPT0gTlVMTCkKKwlpZiAoIW9iai0+bW0ucGFnZXMpCiAJCXJldHVybiBmYWxz ZTsKIAogCS8qCkBAIC0zMjg3LDcgKzMyNzYsNyBAQCBpOTE1X2dlbV9jbGZsdXNoX29iamVjdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCX0KIAogCXRyYWNlX2k5MTVfZ2VtX29i amVjdF9jbGZsdXNoKG9iaik7Ci0JZHJtX2NsZmx1c2hfc2cob2JqLT5wYWdlcyk7CisJZHJtX2Ns Zmx1c2hfc2cob2JqLT5tbS5wYWdlcyk7CiAJb2JqLT5jYWNoZV9kaXJ0eSA9IGZhbHNlOwogCiAJ cmV0dXJuIHRydWU7CkBAIC0zNDAxLDcgKzMzOTAsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB3cml0ZSkK IAkgKiBjb250aW51ZSB0byBhc3N1bWUgdGhhdCB0aGUgb2JqIHJlbWFpbmVkIG91dCBvZiB0aGUg Q1BVIGNhY2hlZAogCSAqIGRvbWFpbi4KIAkgKi8KLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0 X3BhZ2VzKG9iaik7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTM0MjUsNyArMzQxNCw3IEBAIGk5MTVfZ2VtX29i amVjdF9zZXRfdG9fZ3R0X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBi b29sIHdyaXRlKQogCWlmICh3cml0ZSkgewogCQlvYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkx NV9HRU1fRE9NQUlOX0dUVDsKIAkJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RP TUFJTl9HVFQ7Ci0JCW9iai0+ZGlydHkgPSAxOworCQlvYmotPm1tLmRpcnR5ID0gdHJ1ZTsKIAl9 CiAKIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfY2hhbmdlX2RvbWFpbihvYmosCkBAIC0zNDM0LDYg KzM0MjMsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB3cml0ZSkKIAogCS8qIEFuZCBidW1wIHRoZSBMUlUg Zm9yIHRoaXMgYWNjZXNzICovCiAJaTkxNV9nZW1fb2JqZWN0X2J1bXBfaW5hY3RpdmVfZ2d0dChv YmopOworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC00MjAyLDIzICs0MTkyLDIzIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZ290byB1bmxvY2s7CiAJfQogCi0JaWYgKG9i ai0+cGFnZXMgJiYKKwlpZiAob2JqLT5tbS5wYWdlcyAmJgogCSAgICBpOTE1X2dlbV9vYmplY3Rf aXNfdGlsZWQob2JqKSAmJgogCSAgICBkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElOX1NXSVpa TEVEX1BBR0VTKSB7Ci0JCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEKQotCQkJ aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisJCWlmIChvYmotPm1tLm1hZHYgPT0g STkxNV9NQURWX1dJTExORUVEKQorCQkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2Jq KTsKIAkJaWYgKGFyZ3MtPm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEKQotCQkJaTkxNV9nZW1f b2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCQkJX19pOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9i aik7CiAJfQogCi0JaWYgKG9iai0+bWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQpCi0JCW9iai0+ bWFkdiA9IGFyZ3MtPm1hZHY7CisJaWYgKG9iai0+bW0ubWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJH RUQpCisJCW9iai0+bW0ubWFkdiA9IGFyZ3MtPm1hZHY7CiAKIAkvKiBpZiB0aGUgb2JqZWN0IGlz IG5vIGxvbmdlciBhdHRhY2hlZCwgZGlzY2FyZCBpdHMgYmFja2luZyBzdG9yYWdlICovCi0JaWYg KG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxMKQor CWlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEICYmICFvYmotPm1tLnBhZ2Vz KQogCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUob2JqKTsKIAotCWFyZ3MtPnJldGFpbmVkID0g b2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BVUkdFRDsKKwlhcmdzLT5yZXRhaW5lZCA9IG9iai0+ bW0ubWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CiAKIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9i aik7CiB1bmxvY2s6CkBAIC00MjQ0LDkgKzQyMzQsMTAgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3Rf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCW9iai0+b3BzID0gb3BzOwog CiAJb2JqLT5mcm9udGJ1ZmZlcl9nZ3R0X29yaWdpbiA9IE9SSUdJTl9HVFQ7Ci0Jb2JqLT5tYWR2 ID0gSTkxNV9NQURWX1dJTExORUVEOwotCUlOSVRfUkFESVhfVFJFRSgmb2JqLT5nZXRfcGFnZS5y YWRpeCwgR0ZQX0tFUk5FTCk7Ci0JbXV0ZXhfaW5pdCgmb2JqLT5nZXRfcGFnZS5sb2NrKTsKKwor CW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKKwlJTklUX1JBRElYX1RSRUUoJm9i ai0+bW0uZ2V0X3BhZ2UucmFkaXgsIEdGUF9LRVJORUwpOworCW11dGV4X2luaXQoJm9iai0+bW0u Z2V0X3BhZ2UubG9jayk7CiAKIAlpOTE1X2dlbV9pbmZvX2FkZF9vYmoodG9faTkxNShvYmotPmJh c2UuZGV2KSwgb2JqLT5iYXNlLnNpemUpOwogfQpAQCAtNDMyMyw3ICs0MzE0LDcgQEAgc3RhdGlj IGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIAkgKiBiYWNrIHRoZSBjb250ZW50cyBmcm9tIHRoZSBHUFUuCiAJICovCiAKLQlpZiAo b2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCkKKwlpZiAob2JqLT5tbS5tYWR2ICE9IEk5 MTVfTUFEVl9XSUxMTkVFRCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKG9iai0+YmFzZS5maWxw ID09IE5VTEwpCkBAIC00MzY1LDMyICs0MzU2LDI3IEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmpl Y3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQogCX0KIAlHRU1fQlVHX09OKG9iai0+ YmluZF9jb3VudCk7CiAKLQkvKiBTdG9sZW4gb2JqZWN0cyBkb24ndCBob2xkIGEgcmVmLCBidXQg ZG8gaG9sZCBwaW4gY291bnQuIEZpeCB0aGF0IHVwCi0JICogYmVmb3JlIHByb2dyZXNzaW5nLiAq LwotCWlmIChvYmotPnN0b2xlbikKLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7 Ci0KIAlXQVJOX09OKGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2JpdHMpKTsKIAotCWlm IChvYmotPnBhZ2VzICYmIG9iai0+bWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQgJiYKKwlpZiAo b2JqLT5tbS5wYWdlcyAmJiBvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEICYmCiAJ ICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSU5fU1dJWlpMRURfUEFHRVMgJiYKIAkgICAg aTkxNV9nZW1fb2JqZWN0X2lzX3RpbGVkKG9iaikpCi0JCWk5MTVfZ2VtX29iamVjdF91bnBpbl9w YWdlcyhvYmopOworCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogCi0JaWYg KFdBUk5fT04ob2JqLT5wYWdlc19waW5fY291bnQpKQotCQlvYmotPnBhZ2VzX3Bpbl9jb3VudCA9 IDA7CisJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQorCQlvYmotPm9wcy0+cmVsZWFzZShvYmopOwor CisJaWYgKFdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkpCisJ CW9iai0+bW0ucGFnZXNfcGluX2NvdW50ID0gMDsKIAlpZiAoZGlzY2FyZF9iYWNraW5nX3N0b3Jh Z2Uob2JqKSkKLQkJb2JqLT5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwotCWk5MTVfZ2VtX29i amVjdF9wdXRfcGFnZXMob2JqKTsKKwkJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVE OworCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOwogCi0JQlVHX09OKG9iai0+cGFn ZXMpOworCUdFTV9CVUdfT04ob2JqLT5tbS5wYWdlcyk7CiAKIAlpZiAob2JqLT5iYXNlLmltcG9y dF9hdHRhY2gpCiAJCWRybV9wcmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBOVUxMKTsKIAot CWlmIChvYmotPm9wcy0+cmVsZWFzZSkKLQkJb2JqLT5vcHMtPnJlbGVhc2Uob2JqKTsKLQogCWRy bV9nZW1fb2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7CiAJaTkxNV9nZW1faW5mb19yZW1vdmVf b2JqKGRldl9wcml2LCBvYmotPmJhc2Uuc2l6ZSk7CiAKQEAgLTQ5MTUsMTQgKzQ5MDEsMTMgQEAg aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2VzKG9iaik7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChy ZXQpCiAJCWdvdG8gZmFpbDsKIAotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKLQlz ZyA9IG9iai0+cGFnZXM7CisJc2cgPSBvYmotPm1tLnBhZ2VzOwogCWJ5dGVzID0gc2dfY29weV9m cm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICh2b2lkICopZGF0YSwgc2l6ZSk7Ci0Jb2Jq LT5kaXJ0eSA9IDE7CQkvKiBCYWNraW5nIHN0b3JlIGlzIG5vdyBvdXQgb2YgZGF0ZSAqLworCW9i ai0+bW0uZGlydHkgPSB0cnVlOyAvKiBCYWNraW5nIHN0b3JlIGlzIG5vdyBvdXQgb2YgZGF0ZSAq LwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogCiAJaWYgKFdBUk5fT04oYnl0 ZXMgIT0gc2l6ZSkpIHsKQEAgLTQ5NDIsNyArNDkyNyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NhdHRl cmxpc3QgKgogX19pOTE1X2dlbV9vYmplY3RfZ2V0X3NnKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJCQkgdW5zaWduZWQgbG9uZyBuLCB1bnNpZ25lZCBpbnQgKm9mZnNldCkKIHsK LQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gb2JqLT5wYWdlcy0+c2dsOworCXN0cnVjdCBzY2F0 dGVybGlzdCAqc2cgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7CiAJaW50IGlkeCA9IDA7CiAKIAl3aGls ZSAoaWR4ICsgX19zZ19wYWdlX2NvdW50KHNnKSA8PSBuKSB7CkBAIC00OTYwLDExICs0OTQ1LDEx IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfc2coc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAkJICAgICAgIHVuc2lnbmVkIGxvbmcgbiwKIAkJICAgICAgIHVuc2lnbmVkIGludCAqb2Zm c2V0KQogewotCXN0cnVjdCBpOTE1X2dlbV9vYmplY3RfcGFnZV9pdGVyICppdGVyID0gJm9iai0+ Z2V0X3BhZ2U7CisJc3RydWN0IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgKml0ZXIgPSAmb2Jq LT5tbS5nZXRfcGFnZTsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwogCiAJR0VNX0JVR19PTihu ID49IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQpOwotCUdFTV9CVUdfT04ob2JqLT5wYWdl c19waW5fY291bnQgPT0gMCk7CisJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19waW5u ZWRfcGFnZXMob2JqKSk7CiAKIAlpZiAobiA8IFJFQURfT05DRShpdGVyLT5zZ19pZHgpKQogCQln b3RvIGxvb2t1cDsKQEAgLTUwMzgsNyArNTAyMyw3IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfZGly dHlfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXN0cnVjdCBwYWdlICpw YWdlOwogCiAJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShvYmosIG4pOwotCWlmICgh b2JqLT5kaXJ0eSkKKwlpZiAoIW9iai0+bW0uZGlydHkpCiAJCXNldF9wYWdlX2RpcnR5KHBhZ2Up OwogCiAJcmV0dXJuIHBhZ2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9iYXRjaF9wb29sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9w b29sLmMKaW5kZXggMzkzNGM5MTAzY2YyLi42YjY1NjgyMmJiM2EgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKQEAgLTEzMSwxMSArMTMxLDEwIEBAIGk5MTVf Z2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAogCQkJ cmV0dXJuIG9iajsKIAl9CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7 CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChyZXQpCiAJCXJl dHVybiBFUlJfUFRSKHJldCk7CiAKIAlsaXN0X21vdmVfdGFpbCgmb2JqLT5iYXRjaF9wb29sX2xp bmssIGxpc3QpOwotCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlyZXR1cm4gb2Jq OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwppbmRleCAxMDI2NWJiMzU2 MDQuLmRmYjgwMzE2ODMxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMK QEAgLTQ4LDEyICs0OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNnX3RhYmxlICppOTE1X2dlbV9tYXBf ZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZQogCWlmIChyZXQpCiAJ CWdvdG8gZXJyOwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlpZiAocmV0KQogCQlnb3RvIGVy cl91bmxvY2s7CiAKLQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Ci0KIAkvKiBDb3B5 IHNnIHNvIHRoYXQgd2UgbWFrZSBhbiBpbmRlcGVuZGVudCBtYXBwaW5nICovCiAJc3QgPSBrbWFs bG9jKHNpemVvZihzdHJ1Y3Qgc2dfdGFibGUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoc3QgPT0gTlVM TCkgewpAQCAtNjEsMTMgKzU5LDEzIEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmk5MTVfZ2Vt X21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lCiAJCWdvdG8g ZXJyX3VucGluOwogCX0KIAotCXJldCA9IHNnX2FsbG9jX3RhYmxlKHN0LCBvYmotPnBhZ2VzLT5u ZW50cywgR0ZQX0tFUk5FTCk7CisJcmV0ID0gc2dfYWxsb2NfdGFibGUoc3QsIG9iai0+bW0ucGFn ZXMtPm5lbnRzLCBHRlBfS0VSTkVMKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9mcmVlOwogCi0J c3JjID0gb2JqLT5wYWdlcy0+c2dsOworCXNyYyA9IG9iai0+bW0ucGFnZXMtPnNnbDsKIAlkc3Qg PSBzdC0+c2dsOwotCWZvciAoaSA9IDA7IGkgPCBvYmotPnBhZ2VzLT5uZW50czsgaSsrKSB7CisJ Zm9yIChpID0gMDsgaSA8IG9iai0+bW0ucGFnZXMtPm5lbnRzOyBpKyspIHsKIAkJc2dfc2V0X3Bh Z2UoZHN0LCBzZ19wYWdlKHNyYyksIHNyYy0+bGVuZ3RoLCAwKTsKIAkJZHN0ID0gc2dfbmV4dChk c3QpOwogCQlzcmMgPSBzZ19uZXh0KHNyYyk7CkBAIC0yOTksMTQgKzI5NywxNCBAQCBzdGF0aWMg aW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZG1hYnVmKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiAJaWYgKElTX0VSUihzZykpCiAJCXJldHVybiBQVFJfRVJSKHNnKTsKIAot CW9iai0+cGFnZXMgPSBzZzsKKwlvYmotPm1tLnBhZ2VzID0gc2c7CiAJcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZG1hYnVmKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KG9iai0+ YmFzZS5pbXBvcnRfYXR0YWNoLAotCQkJCSBvYmotPnBhZ2VzLCBETUFfQklESVJFQ1RJT05BTCk7 CisJCQkJIG9iai0+bW0ucGFnZXMsIERNQV9CSURJUkVDVElPTkFMKTsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3RfZG1hYnVm X29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRl eCAyNDNmNTA2N2U3YWEuLjA0OTFhMmFmMjZkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgdm9pZCBpOTE1X3ZtYV9t b3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAogCUdFTV9CVUdfT04oIWRybV9t bV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7CiAKLQlvYmotPmRpcnR5ID0gMTsgLyogYmUg cGFyYW5vaWQgICovCisJb2JqLT5tbS5kaXJ0eSA9IHRydWU7IC8qIGJlIHBhcmFub2lkICAqLwog CiAJLyogQWRkIGEgcmVmZXJlbmNlIGlmIHdlJ3JlIG5ld2x5IGVudGVyaW5nIHRoZSBhY3RpdmUg bGlzdC4KIAkgKiBUaGUgb3JkZXIgaW4gd2hpY2ggd2UgYWRkIG9wZXJhdGlvbnMgdG8gdGhlIHJl dGlyZW1lbnQgcXVldWUgaXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jCmluZGV4 IDhkZjFmYTcyMzRlOC4uMzk4ODU2MTYwNjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2ZlbmNlLmMKQEAgLTY0OCw3ICs2NDgsNyBAQCBpOTE1X2dlbV9vYmplY3RfZG9fYml0XzE3X3N3 aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJcmV0dXJuOwogCiAJaSA9 IDA7Ci0JZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+cGFnZXMpIHsKKwlm b3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5tbS5wYWdlcykgewogCQljaGFy IG5ld19iaXRfMTcgPSBwYWdlX3RvX3BoeXMocGFnZSkgPj4gMTc7CiAJCWlmICgobmV3X2JpdF8x NyAmIDB4MSkgIT0KIAkJICAgICh0ZXN0X2JpdChpLCBvYmotPmJpdF8xNykgIT0gMCkpIHsKQEAg LTY4Nyw3ICs2ODcsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJaSA9IDA7CiAKLQlmb3JfZWFjaF9zZ3Rf cGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5wYWdlcykgeworCWZvcl9lYWNoX3NndF9wYWdlKHBh Z2UsIHNndF9pdGVyLCBvYmotPm1tLnBhZ2VzKSB7CiAJCWlmIChwYWdlX3RvX3BoeXMocGFnZSkg JiAoMSA8PCAxNykpCiAJCQlfX3NldF9iaXQoaSwgb2JqLT5iaXRfMTcpOwogCQllbHNlCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDU4MWU3NzFjMDk5Ni4uMTkxMDhhMzExNTQ3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMTc1LDcgKzE3NSw3IEBAIHN0 YXRpYyBpbnQgcHBndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiB7CiAJdTMyIHB0 ZV9mbGFncyA9IDA7CiAKLQl2bWEtPnBhZ2VzID0gdm1hLT5vYmotPnBhZ2VzOworCXZtYS0+cGFn ZXMgPSB2bWEtPm9iai0+bW0ucGFnZXM7CiAKIAkvKiBDdXJyZW50bHkgYXBwbGljYWJsZSBvbmx5 IHRvIFZMViAqLwogCWlmICh2bWEtPm9iai0+Z3Rfcm8pCkBAIC0yMjk1LDcgKzIyOTUsNyBAQCB2 b2lkIGk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiBpbnQgaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiB7CiAJaWYgKCFkbWFfbWFwX3NnKCZvYmotPmJhc2UuZGV2LT5wZGV2LT5kZXYs Ci0JCQlvYmotPnBhZ2VzLT5zZ2wsIG9iai0+cGFnZXMtPm5lbnRzLAorCQkJb2JqLT5tbS5wYWdl cy0+c2dsLCBvYmotPm1tLnBhZ2VzLT5uZW50cywKIAkJCVBDSV9ETUFfQklESVJFQ1RJT05BTCkp CiAJCXJldHVybiAtRU5PU1BDOwogCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCB2b2lkIGk5MTVfZ2Vt X2d0dF9maW5pc2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCX0K IAl9CiAKLQlkbWFfdW5tYXBfc2coa2Rldiwgb2JqLT5wYWdlcy0+c2dsLCBvYmotPnBhZ2VzLT5u ZW50cywKKwlkbWFfdW5tYXBfc2coa2Rldiwgb2JqLT5tbS5wYWdlcy0+c2dsLCBvYmotPm1tLnBh Z2VzLT5uZW50cywKIAkJICAgICBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOwogfQogCkBAIC0zNTI2 LDcgKzM1MjYsNyBAQCBpbnRlbF9yb3RhdGVfZmJfb2JqX3BhZ2VzKGNvbnN0IHN0cnVjdCBpbnRl bF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbywKIAogCS8qIFBvcHVsYXRlIHNvdXJjZSBwYWdlIGxp c3QgZnJvbSB0aGUgb2JqZWN0LiAqLwogCWkgPSAwOwotCWZvcl9lYWNoX3NndF9kbWEoZG1hX2Fk ZHIsIHNndF9pdGVyLCBvYmotPnBhZ2VzKQorCWZvcl9lYWNoX3NndF9kbWEoZG1hX2FkZHIsIHNn dF9pdGVyLCBvYmotPm1tLnBhZ2VzKQogCQlwYWdlX2FkZHJfbGlzdFtpKytdID0gZG1hX2FkZHI7 CiAKIAlHRU1fQlVHX09OKGkgIT0gbl9wYWdlcyk7CkBAIC0zNTc2LDcgKzM1NzYsNyBAQCBpbnRl bF9wYXJ0aWFsX3BhZ2VzKGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywKIAogCXNn ID0gc3QtPnNnbDsKIAlzdC0+bmVudHMgPSAwOwotCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5wYWdl cy0+c2dsLCAmb2JqX3NnX2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLAorCWZvcl9lYWNoX3NnX3Bh Z2Uob2JqLT5tbS5wYWdlcy0+c2dsLCAmb2JqX3NnX2l0ZXIsIG9iai0+bW0ucGFnZXMtPm5lbnRz LAogCQl2aWV3LT5wYXJhbXMucGFydGlhbC5vZmZzZXQpCiAJewogCQlpZiAoc3QtPm5lbnRzID49 IHZpZXctPnBhcmFtcy5wYXJ0aWFsLnNpemUpCkBAIC0zNjA3LDcgKzM2MDcsNyBAQCBpOTE1X2dl dF9nZ3R0X3ZtYV9wYWdlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAkJcmV0dXJuIDA7CiAKIAlp ZiAodm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCi0JCXZtYS0+ cGFnZXMgPSB2bWEtPm9iai0+cGFnZXM7CisJCXZtYS0+cGFnZXMgPSB2bWEtPm9iai0+bW0ucGFn ZXM7CiAJZWxzZSBpZiAodm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19ST1RB VEVEKQogCQl2bWEtPnBhZ2VzID0KIAkJCWludGVsX3JvdGF0ZV9mYl9vYmpfcGFnZXMoJnZtYS0+ Z2d0dF92aWV3LnBhcmFtcy5yb3RhdGVkLCB2bWEtPm9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1faW50ZXJuYWwuYwppbmRleCA0ZWE2ZDdlM2ZiM2YuLjE1ZWY2MTBiM2I0MSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCkBAIC0yOCwxMCArMjgsMTEg QEAKIAogc3RhdGljIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfZnJlZV9wYWdlcyhzdHJ1Y3Qgc2df dGFibGUgKnN0KQogewotCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsKKwlzdHJ1Y3Qgc2d0 X2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAotCWZvcl9lYWNoX3NnX3BhZ2Uoc3Qt PnNnbCwgJnNnX2l0ZXIsIHN0LT5uZW50cywgMCkKLQkJcHV0X3BhZ2Uoc2dfcGFnZV9pdGVyX3Bh Z2UoJnNnX2l0ZXIpKTsKKwlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBpdGVyLCBzdCkKKwkJcHV0 X3BhZ2UocGFnZSk7CiAKIAlzZ19mcmVlX3RhYmxlKHN0KTsKIAlrZnJlZShzdCk7CkBAIC05NCwx NCArOTUsMTQgQEAgc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVybmFs KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaWYgKCFzd2lvdGxiX25yX3RibCgp KQogI2VuZGlmCiAJCXNnX21hcmtfZW5kKHNnKTsKLQlvYmotPnBhZ2VzID0gc3Q7CisJb2JqLT5t bS5wYWdlcyA9IHN0OwogCiAJaWYgKGk5MTVfZ2VtX2d0dF9wcmVwYXJlX29iamVjdChvYmopKSB7 Ci0JCW9iai0+cGFnZXMgPSBOVUxMOworCQlvYmotPm1tLnBhZ2VzID0gTlVMTDsKIAkJZ290byBl cnI7CiAJfQogCi0Jb2JqLT5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOworCW9iai0+bW0ubWFk diA9IEk5MTVfTUFEVl9ET05UTkVFRDsKIAlyZXR1cm4gMDsKIAogZXJyOgpAQCAtMTEyLDEwICsx MTMsMTAgQEAgZXJyOgogCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2lu dGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0JX19pOTE1X2dlbV9v YmplY3RfZnJlZV9wYWdlcyhvYmotPnBhZ2VzKTsKKwlfX2k5MTVfZ2VtX29iamVjdF9mcmVlX3Bh Z2VzKG9iai0+bW0ucGFnZXMpOwogCi0Jb2JqLT5kaXJ0eSA9IDA7Ci0Jb2JqLT5tYWR2ID0gSTkx NV9NQURWX1dJTExORUVEOworCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKKwlvYmotPm1tLm1hZHYg PSBJOTE1X01BRFZfV0lMTE5FRUQ7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X2ludGVybmFsX29wcyA9IHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKaW5kZXggOTE3MWZjMGE5MDhl Li5jN2RhYzUyNWZmMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlbmRlcl9zdGF0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRl cl9zdGF0ZS5jCkBAIC0yMzAsNyArMjMwLDcgQEAgaW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9l bWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCQlyZXR1cm4gMDsKIAogCS8q IFJlY3JlYXRlIHRoZSBwYWdlIGFmdGVyIHNocmlua2luZyAqLwotCWlmICghc28tPnZtYS0+b2Jq LT5wYWdlcykKKwlpZiAoIXNvLT52bWEtPm9iai0+bW0ucGFnZXMpCiAJCXNvLT5iYXRjaF9vZmZz ZXQgPSAtMTsKIAogCXJldCA9IGk5MTVfdm1hX3Bpbihzby0+dm1hLCAwLCAwLCBQSU5fR0xPQkFM IHwgUElOX0hJR0gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c2hyaW5rZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKaW5k ZXggMWMyMzdkMDJmMzBiLi5lMGU2ZDY4ZmU0NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc2hyaW5rZXIuYwpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBjYW5fcmVsZWFz ZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCSAqIHRvIHRoZSBHUFUs IHNpbXBseSB1bmJpbmRpbmcgZnJvbSB0aGUgR1BVIGlzIG5vdCBnb2luZyB0byBzdWNjZWVkCiAJ ICogaW4gcmVsZWFzaW5nIG91ciBwaW4gY291bnQgb24gdGhlIHBhZ2VzIHRoZW1zZWx2ZXMuCiAJ ICovCi0JaWYgKG9iai0+cGFnZXNfcGluX2NvdW50ID4gb2JqLT5iaW5kX2NvdW50KQorCWlmIChv YmotPm1tLnBhZ2VzX3Bpbl9jb3VudCA+IG9iai0+YmluZF9jb3VudCkKIAkJcmV0dXJuIGZhbHNl OwogCiAJaWYgKGFueV92bWFfcGlubmVkKG9iaikpCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBi b29sIGNhbl9yZWxlYXNlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJ ICogZGlzY2FyZCB0aGUgY29udGVudHMgKGJlY2F1c2UgdGhlIHVzZXIgaGFzIG1hcmtlZCB0aGVt IGFzIGJlaW5nCiAJICogcHVyZ2VhYmxlKSBvciBpZiB3ZSBjYW4gbW92ZSB0aGVpciBjb250ZW50 cyBvdXQgdG8gc3dhcC4KIAkgKi8KLQlyZXR1cm4gc3dhcF9hdmFpbGFibGUoKSB8fCBvYmotPm1h ZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEOworCXJldHVybiBzd2FwX2F2YWlsYWJsZSgpIHx8IG9i ai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQ7CiB9CiAKIC8qKgpAQCAtMTc1LDExICsx NzUsMTEgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJCWxpc3RfbW92ZV90YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmc3RpbGxfaW5fbGlzdCk7 CiAKIAkJCWlmIChmbGFncyAmIEk5MTVfU0hSSU5LX1BVUkdFQUJMRSAmJgotCQkJICAgIG9iai0+ bWFkdiAhPSBJOTE1X01BRFZfRE9OVE5FRUQpCisJCQkgICAgb2JqLT5tbS5tYWR2ICE9IEk5MTVf TUFEVl9ET05UTkVFRCkKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKGZsYWdzICYgSTkxNV9TSFJJ TktfVk1BUFMgJiYKLQkJCSAgICAhaXNfdm1hbGxvY19hZGRyKG9iai0+bWFwcGluZykpCisJCQkg ICAgIWlzX3ZtYWxsb2NfYWRkcihvYmotPm1tLm1hcHBpbmcpKQogCQkJCWNvbnRpbnVlOwogCiAJ CQlpZiAoKGZsYWdzICYgSTkxNV9TSFJJTktfQUNUSVZFKSA9PSAwICYmCkBAIC0xOTMsNyArMTkz LDcgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAogCQkJLyogRm9yIHRoZSB1bmJvdW5kIHBoYXNlLCB0aGlzIHNob3VsZCBiZSBhIG5vLW9wISAq LwogCQkJaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmopOwotCQkJaWYgKGk5MTVfZ2VtX29iamVj dF9wdXRfcGFnZXMob2JqKSA9PSAwKQorCQkJaWYgKF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl cyhvYmopID09IDApCiAJCQkJY291bnQgKz0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsK IAogCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYwppbmRleCAyNGJhZDRlNjBlZjAuLjZkMTM5ZDZiNDYwOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKQEAgLTU1NCwxNiArNTU0LDE3IEBAIHN0YXRpYyBp bnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfc3RvbGVu KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJLyogU2hvdWxkIG9ubHkgYmUg Y2FsbGVkIGR1cmluZyBmcmVlICovCi0Jc2dfZnJlZV90YWJsZShvYmotPnBhZ2VzKTsKLQlrZnJl ZShvYmotPnBhZ2VzKTsKKwlzZ19mcmVlX3RhYmxlKG9iai0+bW0ucGFnZXMpOworCWtmcmVlKG9i ai0+bW0ucGFnZXMpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBpOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCisJX19p OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwogCWlmIChvYmotPnN0b2xlbikgewog CQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIG9iai0+c3RvbGVuKTsKIAkJ a2ZyZWUob2JqLT5zdG9sZW4pOwpAQCAtNTg5LDE1ICs1OTAsMTYgQEAgX2k5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZHJtX2dlbV9wcml2YXRl X29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKIAlpOTE1X2dlbV9v YmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyk7CiAKLQlvYmotPnBh Z2VzID0gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihkZXYsCi0JCQkJCQkgIHN0b2xlbi0+ c3RhcnQsIHN0b2xlbi0+c2l6ZSk7Ci0JaWYgKG9iai0+cGFnZXMgPT0gTlVMTCkKKwlvYmotPm1t LnBhZ2VzID0gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihkZXYsCisJCQkJCQkgICAgIHN0 b2xlbi0+c3RhcnQsCisJCQkJCQkgICAgIHN0b2xlbi0+c2l6ZSk7CisJaWYgKCFvYmotPm1tLnBh Z2VzKQogCQlnb3RvIGNsZWFudXA7CiAKLQlvYmotPmdldF9wYWdlLnNnX3BvcyA9IG9iai0+cGFn ZXMtPnNnbDsKLQlvYmotPmdldF9wYWdlLnNnX2lkeCA9IDA7CisJb2JqLT5tbS5nZXRfcGFnZS5z Z19wb3MgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7CisJb2JqLT5tbS5nZXRfcGFnZS5zZ19pZHggPSAw OwogCi0JaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCV9faTkxNV9nZW1fb2JqZWN0 X3Bpbl9wYWdlcyhvYmopOwogCW9iai0+c3RvbGVuID0gc3RvbGVuOwogCiAJb2JqLT5iYXNlLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5fR1RUOwpA QCAtNzE3LDE0ICs3MTksMTQgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3By ZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlnb3RvIGVycjsKIAl9CiAKLQl2 bWEtPnBhZ2VzID0gb2JqLT5wYWdlczsKKwl2bWEtPnBhZ2VzID0gb2JqLT5tbS5wYWdlczsKIAl2 bWEtPmZsYWdzIHw9IEk5MTVfVk1BX0dMT0JBTF9CSU5EOwogCV9faTkxNV92bWFfc2V0X21hcF9h bmRfZmVuY2VhYmxlKHZtYSk7CiAJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJmdndHQt PmJhc2UuaW5hY3RpdmVfbGlzdCk7CiAJb2JqLT5iaW5kX2NvdW50Kys7CiAKIAlsaXN0X2FkZF90 YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOwotCWk5MTVf Z2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwlfX2k5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMo b2JqKTsKIAogCXJldHVybiBvYmo7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5n LmMKaW5kZXggYTE0YjFlM2Q0Yzc4Li43Mjg2ZGU3YmQyNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbGluZy5jCkBAIC0yNjAsMTMgKzI2MCwxMyBAQCBpOTE1X2dlbV9zZXRfdGls aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWlmICghZXJyKSB7CiAJ CQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAotCQkJaWYgKG9iai0+cGFnZXMgJiYKLQkJCSAgICBv YmotPm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEICYmCisJCQlpZiAob2JqLT5tbS5wYWdlcyAm JgorCQkJICAgIG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQgJiYKIAkJCSAgICBk ZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElOX1NXSVpaTEVEX1BBR0VTKSB7CiAJCQkJaWYgKGFy Z3MtPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX05PTkUpCi0JCQkJCWk5MTVfZ2VtX29iamVj dF91bnBpbl9wYWdlcyhvYmopOworCQkJCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhv YmopOwogCQkJCWlmICghaTkxNV9nZW1fb2JqZWN0X2lzX3RpbGVkKG9iaikpCi0JCQkJCWk5MTVf Z2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwkJCQkJX19pOTE1X2dlbV9vYmplY3RfcGluX3Bh Z2VzKG9iaik7CiAJCQl9CiAKIAkJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFf bGlzdCwgb2JqX2xpbmspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3VzZXJwdHIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwpp bmRleCBjYjk1Nzg5ZGE3NmUuLmNiNmExODY2MDJkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3VzZXJwdHIuYwpAQCAtNzMsMTAgKzczLDEwIEBAIHN0YXRpYyB2b2lkIGNhbmNlbF91 c2VycHRyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkvKiBDYW5jZWwgYW55IGFjdGl2ZSB3 b3JrZXIgYW5kIGZvcmNlIHVzIHRvIHJlLWV2YWx1YXRlIGd1cCAqLwogCW9iai0+dXNlcnB0ci53 b3JrID0gTlVMTDsKIAotCWlmIChvYmotPnBhZ2VzICE9IE5VTEwpIHsKKwlpZiAob2JqLT5tbS5w YWdlcyAhPSBOVUxMKSB7CiAJCS8qIFdlIGFyZSBpbnNpZGUgYSBrdGhyZWFkIGNvbnRleHQgYW5k IGNhbid0IGJlIGludGVycnVwdGVkICovCiAJCVdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X3VuYmlu ZChvYmopKTsKLQkJV0FSTl9PTihpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaikpOworCQlX QVJOX09OKF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopKTsKIAl9CiAKIAlpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7CkBAIC00MzIsMTUgKzQzMiwxNSBAQCBfX2k5MTVfZ2VtX3VzZXJw dHJfc2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiB7CiAJaW50IHJl dDsKIAotCXJldCA9IHN0X3NldF9wYWdlcygmb2JqLT5wYWdlcywgcHZlYywgbnVtX3BhZ2VzKTsK KwlyZXQgPSBzdF9zZXRfcGFnZXMoJm9iai0+bW0ucGFnZXMsIHB2ZWMsIG51bV9wYWdlcyk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVwYXJlX29i amVjdChvYmopOwogCWlmIChyZXQpIHsKLQkJc2dfZnJlZV90YWJsZShvYmotPnBhZ2VzKTsKLQkJ a2ZyZWUob2JqLT5wYWdlcyk7Ci0JCW9iai0+cGFnZXMgPSBOVUxMOworCQlzZ19mcmVlX3RhYmxl KG9iai0+bW0ucGFnZXMpOworCQlrZnJlZShvYmotPm1tLnBhZ2VzKTsKKwkJb2JqLT5tbS5wYWdl cyA9IE5VTEw7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTUyNiw4ICs1MjYsOCBAQCBfX2k5MTVf Z2VtX3VzZXJwdHJfZ2V0X3BhZ2VzX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQog CQkJaWYgKHJldCA9PSAwKSB7CiAJCQkJbGlzdF9hZGRfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwK IAkJCQkJICAgICAgJnRvX2k5MTUoZGV2KS0+bW0udW5ib3VuZF9saXN0KTsKLQkJCQlvYmotPmdl dF9wYWdlLnNnX3BvcyA9IG9iai0+cGFnZXMtPnNnbDsKLQkJCQlvYmotPmdldF9wYWdlLnNnX2lk eCA9IDA7CisJCQkJb2JqLT5tbS5nZXRfcGFnZS5zZ19wb3MgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7 CisJCQkJb2JqLT5tbS5nZXRfcGFnZS5zZ19pZHggPSAwOwogCQkJCXBpbm5lZCA9IDA7CiAJCQl9 CiAJCX0KQEAgLTY2OCwyMiArNjY4LDIyIEBAIGk5MTVfZ2VtX3VzZXJwdHJfcHV0X3BhZ2VzKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJQlVHX09OKG9iai0+dXNlcnB0ci53b3Jr ICE9IE5VTEwpOwogCV9faTkxNV9nZW1fdXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgZmFsc2UpOwog Ci0JaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpCi0JCW9iai0+ZGlydHkgPSAw OworCWlmIChvYmotPm1tLm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEKQorCQlvYmotPm1tLmRp cnR5ID0gZmFsc2U7CiAKIAlpOTE1X2dlbV9ndHRfZmluaXNoX29iamVjdChvYmopOwogCi0JZm9y X2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+cGFnZXMpIHsKLQkJaWYgKG9iai0+ ZGlydHkpCisJZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+bW0ucGFnZXMp IHsKKwkJaWYgKG9iai0+bW0uZGlydHkpCiAJCQlzZXRfcGFnZV9kaXJ0eShwYWdlKTsKIAogCQlt YXJrX3BhZ2VfYWNjZXNzZWQocGFnZSk7CiAJCXB1dF9wYWdlKHBhZ2UpOwogCX0KLQlvYmotPmRp cnR5ID0gMDsKKwlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAKLQlzZ19mcmVlX3RhYmxlKG9iai0+ cGFnZXMpOwotCWtmcmVlKG9iai0+cGFnZXMpOworCXNnX2ZyZWVfdGFibGUob2JqLT5tbS5wYWdl cyk7CisJa2ZyZWUob2JqLT5tbS5wYWdlcyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYwppbmRleCBkY2IyNzkwMzViMjkuLjU2YTkyOTFiZWRlOCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC04NDgsOCArODQ4LDggQEAg c3RhdGljIHZvaWQgY2FwdHVyZV9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIs CiAJZXJyLT53cml0ZV9kb21haW4gPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluOwogCWVyci0+ZmVu Y2VfcmVnID0gdm1hLT5mZW5jZSA/IHZtYS0+ZmVuY2UtPmlkIDogLTE7CiAJZXJyLT50aWxpbmcg PSBpOTE1X2dlbV9vYmplY3RfZ2V0X3RpbGluZyhvYmopOwotCWVyci0+ZGlydHkgPSBvYmotPmRp cnR5OwotCWVyci0+cHVyZ2VhYmxlID0gb2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRDsK KwllcnItPmRpcnR5ID0gb2JqLT5tbS5kaXJ0eTsKKwllcnItPnB1cmdlYWJsZSA9IG9iai0+bW0u bWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQ7CiAJZXJyLT51c2VycHRyID0gb2JqLT51c2VycHRy Lm1tICE9IE5VTEw7CiAJZXJyLT5jYWNoZV9sZXZlbCA9IG9iai0+Y2FjaGVfbGV2ZWw7CiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDVmMDlhZWY0NDJhOS4uOTBlZmJmMDQzODdhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNzM4LDcgKzczOCw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfbHJfY29udGV4dF9waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlscmNf cmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsxXSA9CiAJCWk5MTVfZ2d0dF9vZmZzZXQo Y2UtPnJpbmctPnZtYSk7CiAJY2UtPmxyY19yZWdfc3RhdGUgPSBscmNfcmVnX3N0YXRlOwotCWNl LT5zdGF0ZS0+b2JqLT5kaXJ0eSA9IHRydWU7CisJY2UtPnN0YXRlLT5vYmotPm1tLmRpcnR5ID0g dHJ1ZTsKIAogCS8qIEludmFsaWRhdGUgR3VDIFRMQi4gKi8KIAlpZiAoaTkxNS5lbmFibGVfZ3Vj X3N1Ym1pc3Npb24pIHsKQEAgLTE5MjEsNyArMTkyMSw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJRFJNX0RFQlVHX0RSSVZFUigiQ291bGQg bm90IG1hcCBvYmplY3QgcGFnZXMhICglZClcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7CiAJfQot CWN0eF9vYmotPmRpcnR5ID0gdHJ1ZTsKKwljdHhfb2JqLT5tbS5kaXJ0eSA9IHRydWU7CiAKIAkv KiBUaGUgc2Vjb25kIHBhZ2Ugb2YgdGhlIGNvbnRleHQgb2JqZWN0IGNvbnRhaW5zIHNvbWUgZmll bGRzIHdoaWNoIG11c3QKIAkgKiBiZSBzZXQgdXAgcHJpb3IgdG8gdGhlIGZpcnN0IGV4ZWN1dGlv bi4gKi8KQEAgLTIxNDksNyArMjE0OSw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXN1bWUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlyZWdfc3RhdGVbQ1RYX1JJTkdf SEVBRCsxXSA9IDA7CiAJCXJlZ19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gMDsKIAotCQljZS0+ c3RhdGUtPm9iai0+ZGlydHkgPSB0cnVlOworCQljZS0+c3RhdGUtPm9iai0+bW0uZGlydHkgPSB0 cnVlOwogCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKIAogCQlj ZS0+cmluZy0+aGVhZCA9IDA7Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==