From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 4/9] drm/i915: Rework intel_crtc_page_flip to be almost atomic, v5. Date: Mon, 30 May 2016 09:54:01 +0200 Message-ID: <37017ae7-b5d5-5203-49cd-49c43de6ec8a@linux.intel.com> References: <1464259085-13604-1-git-send-email-maarten.lankhorst@linux.intel.com> <1464259085-13604-5-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 5976F6E11A for ; Mon, 30 May 2016 07:54:10 +0000 (UTC) In-Reply-To: <1464259085-13604-5-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org Q3JlYXRlIGEgd29yayBzdHJ1Y3R1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCBjaGFuZ2Vz LiBUaGlzIHdpbGwKYmUgdXNlZCBsYXRlciBvbiBpbiB0aGUgYXRvbWljIGNvbW1pdCBmdW5jdGlv bi4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gRnJlZSBvbGRfY3J0Y19zdGF0ZSBmcm9tIHVucGluX3dv cmtfZm4gcHJvcGVybHkuCkNoYW5nZXMgc2luY2UgdjI6Ci0gQWRkIGh1bmsgZm9yIGNhbGxpbmcg aHcgc3RhdGUgdmVyaWZpZXIuCi0gQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgY29sb3Igc3BhY2Vz LgpDaGFuZ2VzIHNpbmNlIHYzOgotIFVwZGF0ZSBmb3IgbGVnYWN5IGN1cnNvciB3b3JrLgotIG51 bGwgcG9pbnRlciB0byByZXF1ZXN0X3VucmVmZXJlbmNlIGlzIG5vIGxvbmdlciBhbGxvd2VkLgpD aGFuZ2VzIHNpbmNlIHY0OgotIE9ubHkgY2FsbCB0cmFjZV9pOTE1X2ZsaXBfcmVxdWVzdCBvbmNl LiAoVmlsbGUpCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5r aG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jICB8ICAzNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg Njc0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgMTcgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDQyIGluc2Vy dGlvbnMoKyksIDI4NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j CmluZGV4IGNjZWQ1MjdhZjEwOS4uYjUyYzFhNWYzNDUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwpAQCAtNjI3LDI5ICs2MjcsNDMgQEAgc3RhdGljIHZvaWQgaTkxNV9kdW1wX3Bh Z2VmbGlwKHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZmxpcF93 b3JrICp3b3JrKQogewogCWNvbnN0IGNoYXIgcGlwZSA9IHBpcGVfbmFtZShjcnRjLT5waXBlKTsK LQljb25zdCBjaGFyIHBsYW5lID0gcGxhbmVfbmFtZShjcnRjLT5wbGFuZSk7CiAJdTMyIHBlbmRp bmc7CiAJdTMyIGFkZHI7CisJaW50IGk7CiAKIAlwZW5kaW5nID0gYXRvbWljX3JlYWQoJndvcmst PnBlbmRpbmcpOwogCWlmIChwZW5kaW5nKSB7CiAJCXNlcV9wcmludGYobSwgIkZsaXAgaW9jdGwg cHJlcGFyaW5nIG9uIHBpcGUgJWMgKHBsYW5lICVjKVxuIiwKLQkJCSAgIHBpcGUsIHBsYW5lKTsK KwkJCSAgIHBpcGUsIHBsYW5lX25hbWUoY3J0Yy0+cGxhbmUpKTsKIAl9IGVsc2UgewogCQlzZXFf cHJpbnRmKG0sICJGbGlwIHBlbmRpbmcgKHdhaXRpbmcgZm9yIHZzeW5jKSBvbiBwaXBlICVjIChw bGFuZSAlYylcbiIsCi0JCQkgICBwaXBlLCBwbGFuZSk7CisJCQkgICBwaXBlLCBwbGFuZV9uYW1l KGNydGMtPnBsYW5lKSk7CiAJfQotCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpIHsKLQkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5l KHdvcmstPmZsaXBfcXVldWVkX3JlcSk7CiAKLQkJc2VxX3ByaW50ZihtLCAiRmxpcCBxdWV1ZWQg b24gJXMgYXQgc2Vxbm8gJXgsIG5leHQgc2Vxbm8gJXggW2N1cnJlbnQgYnJlYWRjcnVtYiAleF0s IGNvbXBsZXRlZD8gJWRcbiIsCisKKwlmb3IgKGkgPSAwOyBpIDwgd29yay0+bnVtX3BsYW5lczsg aSsrKSB7CisJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0gd29y ay0+b2xkX3BsYW5lX3N0YXRlW2ldOworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IG9sZF9w bGFuZV9zdGF0ZS0+YmFzZS5wbGFuZTsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEgPSBvbGRfcGxhbmVfc3RhdGUtPndhaXRfcmVxOworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisKKwkJc2VxX3ByaW50ZihtLCAiW1BMQU5FOiVpXSBwYXJ0IG9mIGZsaXAuXG4i LCBwbGFuZS0+YmFzZS5pZCk7CisKKwkJaWYgKCFyZXEpIHsKKwkJCXNlcV9wcmludGYobSwgIlBs YW5lIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IGVuZ2luZVxuIik7CisJCQljb250aW51ZTsKKwkJ fQorCisJCWVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShyZXEpOworCisJCXNl cV9wcmludGYobSwgIlBsYW5lIGJsb2NrZWQgb24gJXMgYXQgc2Vxbm8gJXgsIG5leHQgc2Vxbm8g JXggW2N1cnJlbnQgYnJlYWRjcnVtYiAleF0sIGNvbXBsZXRlZD8gJWRcbiIsCiAJCQkgICBlbmdp bmUtPm5hbWUsCi0JCQkgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyh3b3JrLT5mbGlwX3F1 ZXVlZF9yZXEpLAorCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSwKIAkJCSAg IGRldl9wcml2LT5uZXh0X3NlcW5vLAogCQkJICAgZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKSwK LQkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHdvcmstPmZsaXBfcXVldWVkX3JlcSwg dHJ1ZSkpOwotCX0gZWxzZQotCQlzZXFfcHJpbnRmKG0sICJGbGlwIG5vdCBhc3NvY2lhdGVkIHdp dGggYW55IHJpbmdcbiIpOworCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0 cnVlKSk7CisJfQorCiAJc2VxX3ByaW50ZihtLCAiRmxpcCBxdWV1ZWQgb24gZnJhbWUgJWQsICh3 YXMgcmVhZHkgb24gZnJhbWUgJWQpLCBub3cgJWRcbiIsCiAJCSAgIHdvcmstPmZsaXBfcXVldWVk X3ZibGFuaywKIAkJICAgd29yay0+ZmxpcF9yZWFkeV92YmxhbmssCkBAIC02NjIsNyArNjc2LDcg QEAgc3RhdGljIHZvaWQgaTkxNV9kdW1wX3BhZ2VmbGlwKHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJ YWRkciA9IEk5MTVfUkVBRChEU1BBRERSKGNydGMtPnBsYW5lKSk7CiAJc2VxX3ByaW50ZihtLCAi Q3VycmVudCBzY2Fub3V0IGFkZHJlc3MgMHglMDh4XG4iLCBhZGRyKTsKIAotCWlmICh3b3JrLT5w ZW5kaW5nX2ZsaXBfb2JqKSB7CisJaWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkgewogCQlzZXFf cHJpbnRmKG0sICJOZXcgZnJhbWVidWZmZXIgYWRkcmVzcyAweCUwOGx4XG4iLCAobG9uZyl3b3Jr LT5ndHRfb2Zmc2V0KTsKIAkJc2VxX3ByaW50ZihtLCAiTU1JTyB1cGRhdGUgY29tcGxldGVkPyAl ZFxuIiwgIGFkZHIgPT0gd29yay0+Z3R0X29mZnNldCk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IDBkZTIzMjQwMWYxZC4uZTJkNmZkMGNkNDJjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC01MCw3ICs1MCw3IEBACiAKIHN0YXRpYyBib29s IGlzX21taW9fd29yayhzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQogewotCXJldHVybiB3 b3JrLT5tbWlvX3dvcmsuZnVuYzsKKwlyZXR1cm4gIXdvcmstPmZsaXBfcXVldWVkX3JlcTsKIH0K IAogLyogUHJpbWFyeSBwbGFuZSBmb3JtYXRzIGZvciBnZW4gPD0gMyAqLwpAQCAtMTI0LDYgKzEy NCw5IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CiBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5X25v YXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBzdGF0aWMgaW50IGlsa19tYXhfcGl4ZWxf cmF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogc3RhdGljIGludCBicm94dG9u X2NhbGNfY2RjbGsoaW50IG1heF9waXhjbGspOworc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF92 ZXJpZnlfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICAgICAgc3RydWN0IGRybV9j cnRjX3N0YXRlICpvbGRfc3RhdGUsCisJCQkJICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpu ZXdfc3RhdGUpOwogCiBzdHJ1Y3QgaW50ZWxfbGltaXQgewogCXN0cnVjdCB7CkBAIC0yNTI4LDIw ICsyNTMxLDYgQEAgb3V0X3VucmVmX29iajoKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qIFVwZGF0 ZSBwbGFuZS0+c3RhdGUtPmZiIHRvIG1hdGNoIHBsYW5lLT5mYiBhZnRlciBkcml2ZXItaW50ZXJu YWwgdXBkYXRlcyAqLwotc3RhdGljIHZvaWQKLXVwZGF0ZV9zdGF0ZV9mYihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSkKLXsKLQlpZiAocGxhbmUtPmZiID09IHBsYW5lLT5zdGF0ZS0+ZmIpCi0JCXJl dHVybjsKLQotCWlmIChwbGFuZS0+c3RhdGUtPmZiKQotCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZl cmVuY2UocGxhbmUtPnN0YXRlLT5mYik7Ci0JcGxhbmUtPnN0YXRlLT5mYiA9IHBsYW5lLT5mYjsK LQlpZiAocGxhbmUtPnN0YXRlLT5mYikKLQkJZHJtX2ZyYW1lYnVmZmVyX3JlZmVyZW5jZShwbGFu ZS0+c3RhdGUtPmZiKTsKLX0KLQogc3RhdGljIHZvaWQKIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFu ZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJCQkgICAgIHN0cnVjdCBpbnRl bF9pbml0aWFsX3BsYW5lX2NvbmZpZyAqcGxhbmVfY29uZmlnKQpAQCAtMzgwNywxOSArMzc5Niwy NyBAQCBib29sIGludGVsX2hhc19wZW5kaW5nX2ZiX3VucGluKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiBzdGF0aWMgdm9pZCBwYWdlX2ZsaXBfY29tcGxldGVkKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLCBzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYpOwot Ci0JbGlzdF9kZWxfaW5pdCgmd29yay0+aGVhZCk7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq bmV3X3BsYW5lX3N0YXRlOworCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBpbnRlbF9jcnRj LT5iYXNlLnByaW1hcnk7CiAKIAlpZiAod29yay0+ZXZlbnQpCiAJCWRybV9jcnRjX3NlbmRfdmJs YW5rX2V2ZW50KCZpbnRlbF9jcnRjLT5iYXNlLCB3b3JrLT5ldmVudCk7CiAKIAlkcm1fY3J0Y192 YmxhbmtfcHV0KCZpbnRlbF9jcnRjLT5iYXNlKTsKIAotCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+ cGVuZGluZ19mbGlwX3F1ZXVlKTsKLQlxdWV1ZV93b3JrKGRldl9wcml2LT53cSwgJndvcmstPnVu cGluX3dvcmspOworCW5ld19wbGFuZV9zdGF0ZSA9ICZ3b3JrLT5vbGRfcGxhbmVfc3RhdGVbMF0t PmJhc2U7CisJaWYgKHdvcmstPm51bV9wbGFuZXMgPj0gMSAmJgorCSAgICBuZXdfcGxhbmVfc3Rh dGUtPnBsYW5lID09IHByaW1hcnkgJiYKKwkgICAgbmV3X3BsYW5lX3N0YXRlLT5mYikKKwkJdHJh Y2VfaTkxNV9mbGlwX2NvbXBsZXRlKGludGVsX2NydGMtPnBsYW5lLAorCQkJCQkgaW50ZWxfZmJf b2JqKG5ld19wbGFuZV9zdGF0ZS0+ZmIpKTsKIAotCXRyYWNlX2k5MTVfZmxpcF9jb21wbGV0ZShp bnRlbF9jcnRjLT5wbGFuZSwKLQkJCQkgd29yay0+cGVuZGluZ19mbGlwX29iaik7CisJaWYgKHdv cmstPmNhbl9hc3luY191bnBpbikgeworCQlsaXN0X2RlbF9pbml0KCZ3b3JrLT5oZWFkKTsKKwkJ d2FrZV91cF9hbGwoJmRldl9wcml2LT5wZW5kaW5nX2ZsaXBfcXVldWUpOworCX0KKworCXF1ZXVl X3dvcmsoZGV2X3ByaXYtPndxLCAmd29yay0+dW5waW5fd29yayk7CiB9CiAKIHN0YXRpYyBpbnQg aW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK QEAgLTM4NTAsNyArMzg0Nyw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5k aW5nX2ZsaXBzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJICovCiAJCXdvcmsgPSBsaXN0X2Zp cnN0X2VudHJ5X29yX251bGwoJmludGVsX2NydGMtPmZsaXBfd29yaywKIAkJCQkJCXN0cnVjdCBp bnRlbF9mbGlwX3dvcmssIGhlYWQpOwotCQlpZiAod29yayAmJiAhaXNfbW1pb193b3JrKHdvcmsp KSB7CisKKwkJaWYgKHdvcmsgJiYgIWlzX21taW9fd29yayh3b3JrKSAmJgorCQkgICAgIXdvcmtf YnVzeSgmd29yay0+dW5waW5fd29yaykpIHsKIAkJCVdBUk5fT05DRSgxLCAiUmVtb3Zpbmcgc3R1 Y2sgcGFnZSBmbGlwXG4iKTsKIAkJCXBhZ2VfZmxpcF9jb21wbGV0ZWQoaW50ZWxfY3J0Yywgd29y ayk7CiAJCX0KQEAgLTEwOTU0LDM0ICsxMDk1MywxMTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0 Y19kZXN0cm95KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlrZnJlZShpbnRlbF9jcnRjKTsKIH0K IAorc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19wb3N0X2ZsaXBfdXBkYXRlKHN0cnVjdCBpbnRlbF9m bGlwX3dvcmsgKndvcmssCisJCQkJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHdvcmstPm5ld19jcnRjX3N0YXRlOworCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKworCWlm IChjcnRjX3N0YXRlLT5kaXNhYmxlX2N4c3IpCisJCWludGVsX2NydGMtPndtLmN4c3JfYWxsb3dl ZCA9IHRydWU7CisKKwlpZiAoY3J0Y19zdGF0ZS0+dXBkYXRlX3dtX3Bvc3QgJiYgY3J0Y19zdGF0 ZS0+YmFzZS5hY3RpdmUpCisJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOworCisJaWYg KHdvcmstPm51bV9wbGFuZXMgPiAwICYmCisJICAgIHdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXS0+ YmFzZS5wbGFuZSA9PSBjcnRjLT5wcmltYXJ5KSB7CisJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUgPQorCQkJd29yay0+bmV3X3BsYW5lX3N0YXRlWzBdOworCisJCWlmIChw bGFuZV9zdGF0ZS0+dmlzaWJsZSAmJgorCQkgICAgKG5lZWRzX21vZGVzZXQoJmNydGNfc3RhdGUt PmJhc2UpIHx8CisJCSAgICAgIXdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXS0+dmlzaWJsZSkpCisJ CQlpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KGNydGMpOworCX0KK30KKwogc3RhdGljIHZvaWQg aW50ZWxfdW5waW5fd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKIHsKIAlzdHJ1 Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrID0KIAkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0 IGludGVsX2ZsaXBfd29yaywgdW5waW5fd29yayk7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKHdvcmstPmNydGMpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+YmFzZS5w cmltYXJ5OworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHdvcmstPm9sZF9jcnRjX3N0YXRlLT5i YXNlLmNydGM7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgaTsKIAot CWlmIChpc19tbWlvX3dvcmsod29yaykpCi0JCWZsdXNoX3dvcmsoJndvcmstPm1taW9fd29yayk7 CisJaWYgKHdvcmstPmZiX2JpdHMpCisJCWludGVsX2Zyb250YnVmZmVyX2ZsaXBfY29tcGxldGUo ZGV2LCB3b3JrLT5mYl9iaXRzKTsKIAotCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK LQlpbnRlbF91bnBpbl9mYl9vYmood29yay0+b2xkX2ZiLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRp b24pOwotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZ3b3JrLT5wZW5kaW5nX2ZsaXBfb2Jq LT5iYXNlKTsKKwkvKgorCSAqIFVubGVzcyB3b3JrLT5jYW5fYXN5bmNfdW5waW4gaXMgZmFsc2Us IHRoZXJlJ3Mgbm8gd2F5IHRvIGVuc3VyZQorCSAqIHRoYXQgd29yay0+bmV3X2NydGNfc3RhdGUg Y29udGFpbnMgdmFsaWQgbWVtb3J5IGR1cmluZyB1bnBpbgorCSAqIGJlY2F1c2UgaW50ZWxfYXRv bWljX2NvbW1pdCBtYXkgZnJlZSBpdCBiZWZvcmUgdGhpcyBydW5zLgorCSAqLworCWlmICghd29y ay0+Y2FuX2FzeW5jX3VucGluKQorCQlpbnRlbF9jcnRjX3Bvc3RfZmxpcF91cGRhdGUod29yaywg Y3J0Yyk7CiAKLQlpZiAod29yay0+ZmxpcF9xdWV1ZWRfcmVxKQotCQlpOTE1X2dlbV9yZXF1ZXN0 X2Fzc2lnbigmd29yay0+ZmxpcF9xdWV1ZWRfcmVxLCBOVUxMKTsKLQltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKKwlpZiAod29yay0+ZmJfYml0cyAmIHRvX2ludGVsX3BsYW5lKGNy dGMtPnByaW1hcnkpLT5mcm9udGJ1ZmZlcl9iaXQpCisJCWludGVsX2ZiY19wb3N0X3VwZGF0ZShp bnRlbF9jcnRjKTsKKworCWlmICh3b3JrLT5wdXRfcG93ZXJfZG9tYWlucykKKwkJbW9kZXNldF9w dXRfcG93ZXJfZG9tYWlucyhkZXZfcHJpdiwgd29yay0+cHV0X3Bvd2VyX2RvbWFpbnMpOwogCi0J aW50ZWxfZnJvbnRidWZmZXJfZmxpcF9jb21wbGV0ZShkZXYsIHRvX2ludGVsX3BsYW5lKHByaW1h cnkpLT5mcm9udGJ1ZmZlcl9iaXQpOwotCWludGVsX2ZiY19wb3N0X3VwZGF0ZShjcnRjKTsKLQlk cm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uod29yay0+b2xkX2ZiKTsKKwkvKiBNYWtlIHN1cmUg bW1pbyB3b3JrIGlzIGNvbXBsZXRlbHkgZmluaXNoZWQgYmVmb3JlIGZyZWVpbmcgYWxsIHN0YXRl IGhlcmUuICovCisJZmx1c2hfd29yaygmd29yay0+bW1pb193b3JrKTsKIAotCUJVR19PTihhdG9t aWNfcmVhZCgmY3J0Yy0+dW5waW5fd29ya19jb3VudCkgPT0gMCk7Ci0JYXRvbWljX2RlYygmY3J0 Yy0+dW5waW5fd29ya19jb3VudCk7CisJaWYgKCF3b3JrLT5jYW5fYXN5bmNfdW5waW4pCisJCS8q IFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHdvcmsgaXMgdW5waW5uZWQgZm9yIHNlcmlhbGl6 YXRpb24uICovCisJCWludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMoY3J0YywgJndvcmstPm9sZF9j cnRjX3N0YXRlLT5iYXNlLAorCQkJCQkgICZ3b3JrLT5uZXdfY3J0Y19zdGF0ZS0+YmFzZSk7CisK KwlpZiAoIXdvcmstPmNhbl9hc3luY191bnBpbiB8fCAhbGlzdF9lbXB0eSgmd29yay0+aGVhZCkp IHsKKwkJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKKwkJV0FSTihsaXN0X2VtcHR5 KCZ3b3JrLT5oZWFkKSAhPSB3b3JrLT5jYW5fYXN5bmNfdW5waW4sCisJCSAgICAgIltDUlRDOiVp XSBQaW4gd29yayAlcCBhc3luYyAlaSB3aXRoICVpIHBsYW5lcywgYWN0aXZlICVpIC0+ICVpIG1z ICVpXG4iLAorCQkgICAgIGNydGMtPmJhc2UuaWQsIHdvcmssIHdvcmstPmNhbl9hc3luY191bnBp biwgd29yay0+bnVtX3BsYW5lcywKKwkJICAgICB3b3JrLT5vbGRfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUsIHdvcmstPm5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwKKwkJICAgICBuZWVkc19t b2Rlc2V0KCZ3b3JrLT5uZXdfY3J0Y19zdGF0ZS0+YmFzZSkpOworCisJCWlmICghbGlzdF9lbXB0 eSgmd29yay0+aGVhZCkpCisJCQlsaXN0X2RlbCgmd29yay0+aGVhZCk7CisKKwkJd2FrZV91cF9h bGwoJmRldl9wcml2LT5wZW5kaW5nX2ZsaXBfcXVldWUpOworCQlzcGluX3VubG9ja19pcnEoJmRl di0+ZXZlbnRfbG9jayk7CisJfQogCisJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsICZ3 b3JrLT5vbGRfY3J0Y19zdGF0ZS0+YmFzZSk7CiAJaWYgKHdvcmstPmZyZWVfbmV3X2NydGNfc3Rh dGUpCi0JCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZSgmY3J0Yy0+YmFzZSwgJndvcmstPm5ld19j cnRjX3N0YXRlLT5iYXNlKTsKKwkJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsICZ3b3Jr LT5uZXdfY3J0Y19zdGF0ZS0+YmFzZSk7CisKKwlpZiAod29yay0+ZmxpcF9xdWV1ZWRfcmVxKQor CQlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHdvcmstPmZsaXBfcXVldWVkX3JlcSk7CisK Kwlmb3IgKGkgPSAwOyBpIDwgd29yay0+bnVtX3BsYW5lczsgaSsrKSB7CisJCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KKwkJCXdvcmstPm9sZF9wbGFuZV9zdGF0 ZVtpXTsKKwkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gb2xkX3BsYW5lX3N0YXRl LT5iYXNlLmZiOworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IG9sZF9wbGFuZV9zdGF0ZS0+ YmFzZS5wbGFuZTsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CisKKwkJcmVx ID0gb2xkX3BsYW5lX3N0YXRlLT53YWl0X3JlcTsKKwkJb2xkX3BsYW5lX3N0YXRlLT53YWl0X3Jl cSA9IE5VTEw7CisJCWlmIChyZXEpCisJCQlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJl cSk7CisKKwkJZmVuY2VfcHV0KG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5mZW5jZSk7CisJCW9sZF9w bGFuZV9zdGF0ZS0+YmFzZS5mZW5jZSA9IE5VTEw7CisKKwkJaWYgKG9sZF9mYiAmJgorCQkgICAg KHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUiB8fAorCQkgICAgICFJTlRFTF9J TkZPKGRldl9wcml2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSkgeworCQkJbXV0ZXhfbG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9mYiwgb2xkX3Bs YW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKTsKKwkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOworCQl9CisKKwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgJm9sZF9w bGFuZV9zdGF0ZS0+YmFzZSk7CisJfQorCisJaWYgKCFXQVJOX09OKGF0b21pY19yZWFkKCZpbnRl bF9jcnRjLT51bnBpbl93b3JrX2NvdW50KSA9PSAwKSkKKwkJYXRvbWljX2RlYygmaW50ZWxfY3J0 Yy0+dW5waW5fd29ya19jb3VudCk7CiAKIAlrZnJlZSh3b3JrKTsKIH0KQEAgLTExMDk1LDcgKzEx MTc1LDggQEAgdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwX2NzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgaW50IHBpcGUpCiAJCWlmIChpc19tbWlvX3dvcmsod29yaykpCiAJ CQlicmVhazsKIAotCQlpZiAoIXBhZ2VmbGlwX2ZpbmlzaGVkKGludGVsX2NydGMsIHdvcmspKQor CQlpZiAoIXBhZ2VmbGlwX2ZpbmlzaGVkKGludGVsX2NydGMsIHdvcmspIHx8CisJCSAgICB3b3Jr X2J1c3koJndvcmstPnVucGluX3dvcmspKQogCQkJYnJlYWs7CiAKIAkJcGFnZV9mbGlwX2NvbXBs ZXRlZChpbnRlbF9jcnRjLCB3b3JrKTsKQEAgLTExMTI4LDcgKzExMjA5LDggQEAgdm9pZCBpbnRl bF9maW5pc2hfcGFnZV9mbGlwX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgcGlwZSkKIAkJaWYgKCFpc19tbWlvX3dvcmsod29yaykpCiAJCQlicmVhazsKIAotCQlp ZiAoIXBhZ2VmbGlwX2ZpbmlzaGVkKGludGVsX2NydGMsIHdvcmspKQorCQlpZiAoIXBhZ2VmbGlw X2ZpbmlzaGVkKGludGVsX2NydGMsIHdvcmspIHx8CisJCSAgICB3b3JrX2J1c3koJndvcmstPnVu cGluX3dvcmspKQogCQkJYnJlYWs7CiAKIAkJcGFnZV9mbGlwX2NvbXBsZXRlZChpbnRlbF9jcnRj LCB3b3JrKTsKQEAgLTExMzc3LDcwICsxMTQ1OSwyMDIgQEAgc3RhdGljIGludCBpbnRlbF9nZW43 X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAotc3Rh dGljIGJvb2wgdXNlX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0J CQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqCitpbnRlbF9nZXRfZmxpcF9lbmdpbmUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCS8qCi0JICogVGhpcyBpcyBub3Qg YmVpbmcgdXNlZCBmb3Igb2xkZXIgcGxhdGZvcm1zLCBiZWNhdXNlCi0JICogbm9uLWF2YWlsYWJp bGl0eSBvZiBmbGlwIGRvbmUgaW50ZXJydXB0IGZvcmNlcyB1cyB0byB1c2UKLQkgKiBDUyBmbGlw cy4gT2xkZXIgcGxhdGZvcm1zIGRlcml2ZSBmbGlwIGRvbmUgdXNpbmcgc29tZSBjbGV2ZXIKLQkg KiB0cmlja3MgaW52b2x2aW5nIHRoZSBmbGlwX3BlbmRpbmcgc3RhdHVzIGJpdHMgYW5kIHZibGFu ayBpcnFzLgotCSAqIFNvIHVzaW5nIE1NSU8gZmxpcHMgdGhlcmUgd291bGQgZGlzcnVwdCB0aGlz IG1lY2hhbmlzbS4KLQkgKi8KKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0lWWUJSSURH RShkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkKKwkJcmV0dXJuICZkZXZfcHJpdi0+ZW5naW5lW0JD U107CiAKLQlpZiAoZW5naW5lID09IE5VTEwpCi0JCXJldHVybiB0cnVlOworCWlmIChkZXZfcHJp di0+aW5mby5nZW4gPj0gNykgeworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisK KwkJZW5naW5lID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKG9iai0+bGFzdF93cml0ZV9y ZXEpOworCQlpZiAoZW5naW5lICYmIGVuZ2luZS0+aWQgPT0gUkNTKQorCQkJcmV0dXJuIGVuZ2lu ZTsKIAotCWlmIChpOTE1LnVzZV9tbWlvX2ZsaXAgPCAwKQorCQlyZXR1cm4gJmRldl9wcml2LT5l bmdpbmVbQkNTXTsKKwl9IGVsc2UKKwkJcmV0dXJuICZkZXZfcHJpdi0+ZW5naW5lW1JDU107Cit9 CisKK3N0YXRpYyBib29sCitmbGlwX2ZiX2NvbXBhdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCSAgIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKm9sZF9mYikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g aW50ZWxfZmJfb2JqKGZiKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9 IGludGVsX2ZiX29iaihvbGRfZmIpOworCisJaWYgKG9sZF9mYi0+cGl4ZWxfZm9ybWF0ICE9IGZi LT5waXhlbF9mb3JtYXQpCiAJCXJldHVybiBmYWxzZTsKLQllbHNlIGlmIChpOTE1LnVzZV9tbWlv X2ZsaXAgPiAwKQotCQlyZXR1cm4gdHJ1ZTsKLQllbHNlIGlmIChpOTE1LmVuYWJsZV9leGVjbGlz dHMpCi0JCXJldHVybiB0cnVlOwotCWVsc2UgaWYgKG9iai0+YmFzZS5kbWFfYnVmICYmCi0JCSAh cmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KG9iai0+YmFzZS5kbWFfYnVmLT5y ZXN2LAotCQkJCQkJICAgICAgIGZhbHNlKSkKLQkJcmV0dXJuIHRydWU7Ci0JZWxzZQotCQlyZXR1 cm4gZW5naW5lICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxhc3Rfd3JpdGVf cmVxKTsKKworCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDMgJiYKKwkgICAgKGZiLT5vZmZz ZXRzWzBdICE9IG9sZF9mYi0+b2Zmc2V0c1swXSB8fAorCSAgICAgZmItPnBpdGNoZXNbMF0gIT0g b2xkX2ZiLT5waXRjaGVzWzBdKSkKKwkJcmV0dXJuIGZhbHNlOworCisJCQkvKiB2bHY6IERJU1BM QVlfRkxJUCBmYWlscyB0byBjaGFuZ2UgdGlsaW5nICovCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSAmJiBvYmotPnRpbGluZ19tb2RlICE9IG9sZF9vYmotPnRpbGluZ19tb2RlKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK2ludGVsX2Rpc3BsYXlf ZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKKwkJCSAgIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcmspCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisKKwlpZiAod29yay0+Zmxp cF9wcmVwYXJlZCkKKwkJcmV0dXJuOworCisJd29yay0+ZmxpcF9wcmVwYXJlZCA9IHRydWU7CisK KwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSB8fCBJU19HNFgoZGV2KSkKKwkJd29yay0+ ZmxpcF9jb3VudCA9IEk5MTVfUkVBRChQSVBFX0ZMSVBDT1VOVF9HNFgoaW50ZWxfY3J0Yy0+cGlw ZSkpICsgMTsKKwl3b3JrLT5mbGlwX3F1ZXVlZF92YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY291 bnQoY3J0Yyk7CisKKwlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwX3ByZXBhcmUoZGV2LCB3b3JrLT5u ZXdfY3J0Y19zdGF0ZS0+ZmJfYml0cyk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2ZsaXBfc2No ZWR1bGVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrLCBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlID0gd29yay0+bmV3X3BsYW5lX3N0YXRlWzBd OworCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlID0gd29yay0+b2xkX3BsYW5l X3N0YXRlWzBdOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCAqb2xkX2ZiOworCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCA9IE5VTEw7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3Ry dWN0IGZlbmNlICpmZW5jZTsKKwlpbnQgcmV0OworCisJdG9faW50ZWxfY3J0YyhjcnRjKS0+cmVz ZXRfY291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcik7CisJ aWYgKF9faTkxNV9yZXNldF9pbl9wcm9ncmVzc19vcl93ZWRnZWQodG9faW50ZWxfY3J0YyhjcnRj KS0+cmVzZXRfY291bnRlcikpCisJCWdvdG8gbW1pbzsKKworCWlmIChpOTE1X3Rlcm1pbmFsbHlf d2VkZ2VkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSB8fAorCSAgICBpOTE1X3Jlc2V0X2luX3Byb2dy ZXNzKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSB8fAorCSAgICBpOTE1LmVuYWJsZV9leGVjbGlzdHMg fHwgaTkxNS51c2VfbW1pb19mbGlwID4gMCB8fAorCSAgICAhZGV2X3ByaXYtPmRpc3BsYXkucXVl dWVfZmxpcCkKKwkJZ290byBtbWlvOworCisJLyogTm90IHJpZ2h0IGFmdGVyIG1vZGVzZXR0aW5n LCBzdXJmYWNlIHBhcmFtZXRlcnMgbmVlZCB0byBiZSB1cGRhdGVkICovCisJaWYgKG5lZWRzX21v ZGVzZXQoY3J0Yy0+c3RhdGUpIHx8CisJICAgIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpLT51cGRhdGVfcGlwZSkKKwkJZ290byBtbWlvOworCisJLyogT25seSBhbGxvdyBhIG1taW8g ZmxpcCBmb3IgYSBwcmltYXJ5IHBsYW5lIHdpdGhvdXQgYSBkbWEtYnVmIGZlbmNlICovCisJaWYg KHdvcmstPm51bV9wbGFuZXMgIT0gMSB8fAorCSAgICBuZXdfc3RhdGUtPmJhc2UucGxhbmUgIT0g Y3J0Yy0+cHJpbWFyeSB8fAorCSAgICBuZXdfc3RhdGUtPmJhc2UuZmVuY2UpCisJCWdvdG8gbW1p bzsKKworCWZlbmNlID0gd29yay0+b2xkX3BsYW5lX3N0YXRlWzBdLT5iYXNlLmZlbmNlOworCWlm IChmZW5jZSAmJiAhZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKQorCQlnb3RvIG1taW87CisKKwlv bGRfZmIgPSBvbGRfc3RhdGUtPmJhc2UuZmI7CisJZmIgPSBuZXdfc3RhdGUtPmJhc2UuZmI7CisJ b2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKKworCS8qIE9ubHkgd2hlbiB1cGRhdGluZyBhIGFscmVh ZHkgdmlzaWJsZSBmYi4gKi8KKwlpZiAoIW5ld19zdGF0ZS0+dmlzaWJsZSB8fCAhb2xkX3N0YXRl LT52aXNpYmxlKQorCQlnb3RvIG1taW87CisKKwlpZiAoIWZsaXBfZmJfY29tcGF0aWJsZShkZXYs IGZiLCBvbGRfZmIpKQorCQlnb3RvIG1taW87CisKKwllbmdpbmUgPSBpbnRlbF9nZXRfZmxpcF9l bmdpbmUoZGV2LCBkZXZfcHJpdiwgb2JqKTsKKwlpZiAoaTkxNS51c2VfbW1pb19mbGlwID09IDAg JiYgb2JqLT5sYXN0X3dyaXRlX3JlcSAmJgorCSAgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdp bmUob2JqLT5sYXN0X3dyaXRlX3JlcSkgIT0gZW5naW5lKQorCQlnb3RvIG1taW87CisKKwl3b3Jr LT5ndHRfb2Zmc2V0ID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19pbnRlbF9wbGFuZShjcnRj LT5wcmltYXJ5KSwgb2JqLCAwKTsKKwl3b3JrLT5ndHRfb2Zmc2V0ICs9IHRvX2ludGVsX2NydGMo Y3J0YyktPmRzcGFkZHJfb2Zmc2V0OworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2Jq LCBlbmdpbmUsICZyZXF1ZXN0KTsKKwlpZiAoIXJldCAmJiAhcmVxdWVzdCkgeworCQlyZXF1ZXN0 ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5VTEwpOworCQlyZXQgPSBQVFJfRVJS X09SX1pFUk8ocmVxdWVzdCk7CisKKwkJaWYgKHJldCkKKwkJCXJlcXVlc3QgPSBOVUxMOworCX0K KworCWludGVsX2Rpc3BsYXlfZmxpcF9wcmVwYXJlKGRldiwgY3J0Yywgd29yayk7CisKKwlpZiAo IXJldCkKKwkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkucXVldWVfZmxpcChkZXYsIGNydGMsIGZi LCBvYmosIHJlcXVlc3QsIDApOworCisJaWYgKCFyZXQpIHsKKwkJaTkxNV9nZW1fcmVxdWVzdF9h c3NpZ24oJndvcmstPmZsaXBfcXVldWVkX3JlcSwgcmVxdWVzdCk7CisJCWludGVsX21hcmtfcGFn ZV9mbGlwX2FjdGl2ZSh0b19pbnRlbF9jcnRjKGNydGMpLCB3b3JrKTsKKwkJaTkxNV9hZGRfcmVx dWVzdF9ub19mbHVzaChyZXF1ZXN0KTsKKwkJcmV0dXJuOworCX0KKwlpZiAocmVxdWVzdCkKKwkJ aTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXF1ZXN0KTsKKworbW1pbzoKKwlzY2hlZHVsZV93 b3JrKCZ3b3JrLT5tbWlvX3dvcmspOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBf d29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKIHsKIAlzdHJ1Y3QgaW50ZWxfZmxpcF93 b3JrICp3b3JrID0KIAkJY29udGFpbmVyX29mKHcsIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmssIG1t aW9fd29yayk7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHdvcmst PmNydGMpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSB3b3JrLT5vbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjOworCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHdvcmstPm5ld19jcnRjX3N0YXRlOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnByaW1hcnkgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpOwotCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmoocHJpbWFyeS0+YmFzZS5zdGF0 ZS0+ZmIpOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOworCWludCBpOwogCi0J aWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkKLQkJV0FSTl9PTihfX2k5MTVfd2FpdF9yZXF1ZXN0 KHdvcmstPmZsaXBfcXVldWVkX3JlcSwKLQkJCQkJICAgIGZhbHNlLCBOVUxMLAorCWZvciAoaSA9 IDA7IGkgPCB3b3JrLT5udW1fcGxhbmVzOyBpKyspIHsKKwkJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpvbGRfcGxhbmVfc3RhdGUgPSB3b3JrLT5vbGRfcGxhbmVfc3RhdGVbaV07CisKKwkJLyog Rm9yIGZyYW1lYnVmZmVyIGJhY2tlZCBieSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCisJCWlm IChvbGRfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpCisJCQlXQVJOX09OKGZlbmNlX3dhaXQob2xk X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlLCBmYWxzZSkgPCAwKTsKKworCQlyZXEgPSBvbGRfcGxh bmVfc3RhdGUtPndhaXRfcmVxOworCQlpZiAoIXJlcSkKKwkJCWNvbnRpbnVlOworCisJCVdBUk5f T04oX19pOTE1X3dhaXRfcmVxdWVzdChyZXEsIGZhbHNlLCBOVUxMLAogCQkJCQkgICAgJmRldl9w cml2LT5ycHMubW1pb2ZsaXBzKSk7CisJfQogCi0JLyogRm9yIGZyYW1lYnVmZmVyIGJhY2tlZCBi eSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCi0JaWYgKG9iai0+YmFzZS5kbWFfYnVmKQotCQlX QVJOX09OKHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KG9iai0+YmFzZS5kbWFf YnVmLT5yZXN2LAotCQkJCQkJCSAgICBmYWxzZSwgZmFsc2UsCi0JCQkJCQkJICAgIE1BWF9TQ0hF RFVMRV9USU1FT1VUKSA8IDApOworCWludGVsX2Rpc3BsYXlfZmxpcF9wcmVwYXJlKGRldiwgY3J0 Yywgd29yayk7CiAKLQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjcnRjKTsKLQlwcmltYXJ5LT51 cGRhdGVfcGxhbmUoJnByaW1hcnktPmJhc2UsCi0JCQkgICAgICB3b3JrLT5uZXdfY3J0Y19zdGF0 ZSwKLQkJCSAgICAgIHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1hcnktPmJhc2Uuc3RhdGUpKTsK LQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoY3J0Yywgd29yayk7Ci19CisJaW50ZWxfcGlwZV91cGRh dGVfc3RhcnQoaW50ZWxfY3J0Yyk7CisJaWYgKCFuZWVkc19tb2Rlc2V0KCZjcnRjX3N0YXRlLT5i YXNlKSkgeworCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQgfHwgY3J0 Y19zdGF0ZS0+dXBkYXRlX3BpcGUpIHsKKwkJCWludGVsX2NvbG9yX3NldF9jc2MoJmNydGNfc3Rh dGUtPmJhc2UpOworCQkJaW50ZWxfY29sb3JfbG9hZF9sdXRzKCZjcnRjX3N0YXRlLT5iYXNlKTsK KwkJfQogCi1zdGF0aWMgaW50IGludGVsX2RlZmF1bHRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAotCQkJCSAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkJICAgIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKLQkJCQkg ICAgdWludDY0X3QgZ3R0X29mZnNldCkKLXsKLQlyZXR1cm4gLUVOT0RFVjsKKwkJaWYgKGNydGNf c3RhdGUtPnVwZGF0ZV9waXBlKQorCQkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKGludGVsX2Ny dGMsIHdvcmstPm9sZF9jcnRjX3N0YXRlKTsKKwkJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gOSkKKwkJCXNrbF9kZXRhY2hfc2NhbGVycyhpbnRlbF9jcnRjKTsKKwl9CisKKwlmb3Ig KGkgPSAwOyBpIDwgd29yay0+bnVtX3BsYW5lczsgaSsrKSB7CisJCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0gd29yay0+bmV3X3BsYW5lX3N0YXRlW2ldOworCQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKKworCQlwbGFuZS0+dXBkYXRlX3BsYW5lKCZwbGFuZS0+YmFzZSwgY3J0 Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKKwl9CisKKwlpbnRlbF9waXBlX3VwZGF0ZV9lbmQo aW50ZWxfY3J0Yywgd29yayk7CiB9CiAKIHN0YXRpYyBib29sIF9fcGFnZWZsaXBfc3RhbGxfY2hl Y2tfY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMTE0NDksNyArMTE2 NjMsOCBAQCBzdGF0aWMgYm9vbCBfX3BhZ2VmbGlwX3N0YWxsX2NoZWNrX2NzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAl1MzIgYWRkciwgdmJsYW5rOwogCi0JaWYgKCFh dG9taWNfcmVhZCgmd29yay0+cGVuZGluZykpCisJaWYgKCFhdG9taWNfcmVhZCgmd29yay0+cGVu ZGluZykgfHwKKwkgICAgd29ya19idXN5KCZ3b3JrLT51bnBpbl93b3JrKSkKIAkJcmV0dXJuIGZh bHNlOwogCiAJc21wX3JtYigpOwpAQCAtMTE1MTYsNiArMTE3MzEsMzMgQEAgdm9pZCBpbnRlbF9j aGVja19wYWdlX2ZsaXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcGlw ZSkKIAlzcGluX3VubG9jaygmZGV2LT5ldmVudF9sb2NrKTsKIH0KIAorc3RhdGljIHN0cnVjdCBm ZW5jZSAqaW50ZWxfZ2V0X2V4Y2xfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKK3sKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OworCisKKwlpZiAoIW9iai0+ YmFzZS5kbWFfYnVmKQorCQlyZXR1cm4gTlVMTDsKKworCXJlc3YgPSBvYmotPmJhc2UuZG1hX2J1 Zi0+cmVzdjsKKworCS8qIEZvciBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZv ciBmZW5jZSAqLworCXdoaWxlICgxKSB7CisJCXN0cnVjdCBmZW5jZSAqZmVuY2VfZXhjbCwgKnJl dCA9IE5VTEw7CisKKwkJcmN1X3JlYWRfbG9jaygpOworCisJCWZlbmNlX2V4Y2wgPSByY3VfZGVy ZWZlcmVuY2UocmVzdi0+ZmVuY2VfZXhjbCk7CisJCWlmIChmZW5jZV9leGNsKQorCQkJcmV0ID0g ZmVuY2VfZ2V0X3JjdShmZW5jZV9leGNsKTsKKworCQlyY3VfcmVhZF91bmxvY2soKTsKKworCQlp ZiAocmV0ID09IGZlbmNlX2V4Y2wpCisJCQlyZXR1cm4gcmV0OworCX0KK30KKwogc3RhdGljIGlu dCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQsCkBAIC0xMTUyMywxNyArMTE3NjUsMjAgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiB7CiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IGNydGMt PnByaW1hcnktPmZiOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSwgKm5ld19z dGF0ZSA9IE5VTEw7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9IE5V TEw7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gY3J0Yy0+cHJpbWFyeS0+c3Rh dGUtPmZiOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmoo ZmIpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKLQllbnVtIHBp cGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29y azsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JYm9vbCBtbWlvX2ZsaXA7Ci0J c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0gTlVMTDsKIAlpbnQgcmV0Owog CisJb2xkX3N0YXRlID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGU7CisKKwlpZiAoIWNydGMtPnN0YXRl LT5hY3RpdmUpCisJCXJldHVybiAtRUlOVkFMOworCiAJLyoKIAkgKiBkcm1fbW9kZV9wYWdlX2Zs aXBfaW9jdGwoKSBzaG91bGQgYWxyZWFkeSBjYXRjaCB0aGlzLCBidXQgZG91YmxlCiAJICogY2hl Y2sgdG8gYmUgc2FmZS4gIEluIHRoZSBmdXR1cmUgd2UgbWF5IGVuYWJsZSBwYWdlZmxpcHBpbmcg ZnJvbQpAQCAtMTE1NDMsNyArMTE3ODgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJcmV0dXJuIC1FQlVTWTsKIAogCS8qIENhbid0 IGNoYW5nZSBwaXhlbCBmb3JtYXQgdmlhIE1JIGRpc3BsYXkgZmxpcHMuICovCi0JaWYgKGZiLT5w aXhlbF9mb3JtYXQgIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPnBpeGVsX2Zvcm1hdCkKKwlpZiAoZmIt PnBpeGVsX2Zvcm1hdCAhPSBvbGRfZmItPnBpeGVsX2Zvcm1hdCkKIAkJcmV0dXJuIC1FSU5WQUw7 CiAKIAkvKgpAQCAtMTE1NTEsMjcgKzExNzk2LDQ2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19w YWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIE5vdGUgdGhhdCBwaXRjaCBjaGFu Z2VzIGNvdWxkIGFsc28gYWZmZWN0IHRoZXNlIHJlZ2lzdGVyLgogCSAqLwogCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+IDMgJiYKLQkgICAgKGZiLT5vZmZzZXRzWzBdICE9IGNydGMtPnByaW1h cnktPmZiLT5vZmZzZXRzWzBdIHx8Ci0JICAgICBmYi0+cGl0Y2hlc1swXSAhPSBjcnRjLT5wcmlt YXJ5LT5mYi0+cGl0Y2hlc1swXSkpCisJICAgIChmYi0+b2Zmc2V0c1swXSAhPSBvbGRfZmItPm9m ZnNldHNbMF0gfHwKKwkgICAgIGZiLT5waXRjaGVzWzBdICE9IG9sZF9mYi0+cGl0Y2hlc1swXSkp CiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9w cml2LT5ncHVfZXJyb3IpKQotCQlnb3RvIG91dF9oYW5nOwotCiAJd29yayA9IGt6YWxsb2Moc2l6 ZW9mKCp3b3JrKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKHdvcmsgPT0gTlVMTCkKLQkJcmV0dXJuIC1F Tk9NRU07CisJbmV3X2NydGNfc3RhdGUgPSBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShjcnRj KTsKKwluZXdfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocHJpbWFyeSk7CisK KwlpZiAoIXdvcmsgfHwgIW5ld19jcnRjX3N0YXRlIHx8ICFuZXdfc3RhdGUpIHsKKwkJcmV0ID0g LUVOT01FTTsKKwkJZ290byBjbGVhbnVwOworCX0KKworCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVy ZW5jZShuZXdfc3RhdGUtPmZiKTsKKwlkcm1fZnJhbWVidWZmZXJfcmVmZXJlbmNlKGZiKTsKKwlu ZXdfc3RhdGUtPmZiID0gZmI7CiAKIAl3b3JrLT5uZXdfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCiAJd29yay0+ZXZlbnQgPSBldmVudDsKLQl3b3JrLT5j cnRjID0gY3J0YzsKLQl3b3JrLT5vbGRfZmIgPSBvbGRfZmI7CiAJSU5JVF9XT1JLKCZ3b3JrLT51 bnBpbl93b3JrLCBpbnRlbF91bnBpbl93b3JrX2ZuKTsKKwlJTklUX1dPUksoJndvcmstPm1taW9f d29yaywgaW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyk7CisKKwl3b3JrLT5uZXdfY3J0Y19zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOworCXdvcmstPm9sZF9jcnRj X3N0YXRlID0gaW50ZWxfY3J0Yy0+Y29uZmlnOworCisJd29yay0+ZmJfYml0cyA9IHRvX2ludGVs X3BsYW5lKHByaW1hcnkpLT5mcm9udGJ1ZmZlcl9iaXQ7CisJd29yay0+bmV3X2NydGNfc3RhdGUt PmZiX2JpdHMgPSB3b3JrLT5mYl9iaXRzOwogCisJd29yay0+Y2FuX2FzeW5jX3VucGluID0gdHJ1 ZTsKKwl3b3JrLT5udW1fcGxhbmVzID0gMTsKKwl3b3JrLT5vbGRfcGxhbmVfc3RhdGVbMF0gPSB0 b19pbnRlbF9wbGFuZV9zdGF0ZShvbGRfc3RhdGUpOworCXdvcmstPm5ld19wbGFuZV9zdGF0ZVsw XSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19zdGF0ZSk7CisKKwkvKiBTdGVwIDE6IHZibGFu ayB3YWl0aW5nIGFuZCB3b3JrcXVldWUgdGhyb3R0bGluZywKKwkgKiBzaW1pbGFyIHRvIGludGVs X2F0b21pY19wcmVwYXJlX2NvbW1pdAorCSAqLwogCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQo Y3J0Yyk7CiAJaWYgKHJldCkKLQkJZ290byBmcmVlX3dvcms7CisJCWdvdG8gY2xlYW51cDsKIAog CS8qIFdlIGJvcnJvdyB0aGUgZXZlbnQgc3BpbiBsb2NrIGZvciBwcm90ZWN0aW5nIGZsaXBfd29y ayAqLwogCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CkBAIC0xMTU5MSw5ICsxMTg1 NSw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpj cnRjLAogCQkJRFJNX0RFQlVHX0RSSVZFUigiZmxpcCBxdWV1ZTogY3J0YyBhbHJlYWR5IGJ1c3lc biIpOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwogCi0JCQlkcm1fY3J0 Y192YmxhbmtfcHV0KGNydGMpOwotCQkJa2ZyZWUod29yayk7Ci0JCQlyZXR1cm4gLUVCVVNZOwor CQkJcmV0ID0gLUVCVVNZOworCQkJZ290byBjbGVhbnVwX3ZibGFuazsKIAkJfQogCX0KIAlsaXN0 X2FkZF90YWlsKCZ3b3JrLT5oZWFkLCAmaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKTsKQEAgLTExNjAy LDE2MCArMTE4NjUsNjIgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJaWYgKGF0b21pY19yZWFkKCZpbnRlbF9jcnRjLT51bnBpbl93b3Jr X2NvdW50KSA+PSAyKQogCQlmbHVzaF93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKIAotCS8qIFJl ZmVyZW5jZSB0aGUgb2JqZWN0cyBmb3IgdGhlIHNjaGVkdWxlZCB3b3JrLiAqLwotCWRybV9mcmFt ZWJ1ZmZlcl9yZWZlcmVuY2Uod29yay0+b2xkX2ZiKTsKLQlkcm1fZ2VtX29iamVjdF9yZWZlcmVu Y2UoJm9iai0+YmFzZSk7Ci0KLQljcnRjLT5wcmltYXJ5LT5mYiA9IGZiOwotCXVwZGF0ZV9zdGF0 ZV9mYihjcnRjLT5wcmltYXJ5KTsKLQlpbnRlbF9mYmNfcHJlX3VwZGF0ZShpbnRlbF9jcnRjKTsK LQotCXdvcmstPnBlbmRpbmdfZmxpcF9vYmogPSBvYmo7Ci0KLQlyZXQgPSBpOTE1X211dGV4X2xv Y2tfaW50ZXJydXB0aWJsZShkZXYpOworCS8qIHN0ZXAgMiwgc2ltaWxhciB0byBpbnRlbF9wcmVw YXJlX3BsYW5lX2ZiICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0 cnVjdF9tdXRleCk7CiAJaWYgKHJldCkKLQkJZ290byBjbGVhbnVwOwotCi0JaW50ZWxfY3J0Yy0+ cmVzZXRfY291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcik7 Ci0JaWYgKF9faTkxNV9yZXNldF9pbl9wcm9ncmVzc19vcl93ZWRnZWQoaW50ZWxfY3J0Yy0+cmVz ZXRfY291bnRlcikpIHsKLQkJcmV0ID0gLUVJTzsKLQkJZ290byBjbGVhbnVwOwotCX0KLQotCWF0 b21pY19pbmMoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOwotCi0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCi0JCXdvcmstPmZsaXBfY291bnQgPSBJ OTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUpKSArIDE7Ci0KLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewotCQllbmdpbmUgPSAmZGV2X3ByaXYt PmVuZ2luZVtCQ1NdOwotCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9vYmood29y ay0+b2xkX2ZiKS0+dGlsaW5nX21vZGUpCi0JCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0 byBjaGFuZ2UgdGlsaW5nICovCi0JCQllbmdpbmUgPSBOVUxMOwotCX0gZWxzZSBpZiAoSVNfSVZZ QlJJREdFKGRldikgfHwgSVNfSEFTV0VMTChkZXYpKSB7Ci0JCWVuZ2luZSA9ICZkZXZfcHJpdi0+ ZW5naW5lW0JDU107Ci0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7Ci0J CWVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxhc3Rfd3JpdGVfcmVx KTsKLQkJaWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+aWQgIT0gUkNTKQotCQkJZW5naW5l ID0gJmRldl9wcml2LT5lbmdpbmVbQkNTXTsKLQl9IGVsc2UgewotCQllbmdpbmUgPSAmZGV2X3By aXYtPmVuZ2luZVtSQ1NdOwotCX0KLQotCW1taW9fZmxpcCA9IHVzZV9tbWlvX2ZsaXAoZW5naW5l LCBvYmopOworCQlnb3RvIGNsZWFudXBfd29yazsKIAotCS8qIFdoZW4gdXNpbmcgQ1MgZmxpcHMs IHdlIHdhbnQgdG8gZW1pdCBzZW1hcGhvcmVzIGJldHdlZW4gcmluZ3MuCi0JICogSG93ZXZlciwg d2hlbiB1c2luZyBtbWlvIGZsaXBzIHdlIHdpbGwgY3JlYXRlIGEgdGFzayB0byBkbyB0aGUKLQkg KiBzeW5jaHJvbmlzYXRpb24sIHNvIGFsbCB3ZSB3YW50IGhlcmUgaXMgdG8gcGluIHRoZSBmcmFt ZWJ1ZmZlcgotCSAqIGludG8gdGhlIGRpc3BsYXkgcGxhbmUgYW5kIHNraXAgYW55IHdhaXRzLgot CSAqLwotCWlmICghbW1pb19mbGlwKSB7Ci0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9i aiwgZW5naW5lLCAmcmVxdWVzdCk7Ci0JCWlmICghcmV0ICYmICFyZXF1ZXN0KSB7Ci0JCQlyZXF1 ZXN0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5VTEwpOwotCQkJcmV0ID0gUFRS X0VSUl9PUl9aRVJPKHJlcXVlc3QpOwotCQl9Ci0KLQkJaWYgKHJldCkKLQkJCWdvdG8gY2xlYW51 cF9wZW5kaW5nOwotCX0KLQotCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBw cmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOworCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJf b2JqKGZiLCBuZXdfc3RhdGUtPnJvdGF0aW9uKTsKIAlpZiAocmV0KQotCQlnb3RvIGNsZWFudXBf cGVuZGluZzsKKwkJZ290byBjbGVhbnVwX3VubG9jazsKIAotCXdvcmstPmd0dF9vZmZzZXQgPSBp bnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKHByaW1hcnkpLAotCQkJCQkJICBv YmosIDApOwotCXdvcmstPmd0dF9vZmZzZXQgKz0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7 CisJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJfb2JqKG9sZF9mYiksIG9iaiwKKwkJCSAgdG9f aW50ZWxfcGxhbmUocHJpbWFyeSktPmZyb250YnVmZmVyX2JpdCk7CiAKLQlpZiAobW1pb19mbGlw KSB7Ci0JCUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRlbF9tbWlvX2ZsaXBfd29ya19m dW5jKTsKKwkvKiBwb2ludCBvZiBubyByZXR1cm4sIHN3YXAgc3RhdGUgKi8KKwlwcmltYXJ5LT5z dGF0ZSA9IG5ld19zdGF0ZTsKKwljcnRjLT5zdGF0ZSA9IG5ld19jcnRjX3N0YXRlOworCWludGVs X2NydGMtPmNvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOworCXBy aW1hcnktPmZiID0gZmI7CiAKLQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJndvcmstPmZsaXBf cXVldWVkX3JlcSwKKwkvKiBzY2hlZHVsaW5nIGZsaXAgd29yayAqLworCWF0b21pY19pbmMoJmlu dGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOworCisJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEg JiYKKwkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKG9iai0+bGFzdF93cml0ZV9yZXEs IHRydWUpKQorCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmd29yay0+b2xkX3BsYW5lX3N0YXRl WzBdLT53YWl0X3JlcSwKIAkJCQkJb2JqLT5sYXN0X3dyaXRlX3JlcSk7CiAKLQkJc2NoZWR1bGVf d29yaygmd29yay0+bW1pb193b3JrKTsKLQl9IGVsc2UgewotCQlpOTE1X2dlbV9yZXF1ZXN0X2Fz c2lnbigmd29yay0+ZmxpcF9xdWV1ZWRfcmVxLCByZXF1ZXN0KTsKLQkJcmV0ID0gZGV2X3ByaXYt PmRpc3BsYXkucXVldWVfZmxpcChkZXYsIGNydGMsIGZiLCBvYmosIHJlcXVlc3QsCi0JCQkJCQkg ICB3b3JrLT5ndHRfb2Zmc2V0KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gY2xlYW51cF91bnBpbjsK KwlpZiAob2JqLT5iYXNlLmRtYV9idWYpCisJCXdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXS0+YmFz ZS5mZW5jZSA9IGludGVsX2dldF9leGNsX2ZlbmNlKG9iaik7CiAKLQkJaW50ZWxfbWFya19wYWdl X2ZsaXBfYWN0aXZlKGludGVsX2NydGMsIHdvcmspOworCWludGVsX2ZiY19wcmVfdXBkYXRlKGlu dGVsX2NydGMpOwogCi0JCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxdWVzdCk7Ci0JfQor CWludGVsX2ZsaXBfc2NoZWR1bGVfcmVxdWVzdCh3b3JrLCBjcnRjKTsKIAotCWk5MTVfZ2VtX3Ry YWNrX2ZiKGludGVsX2ZiX29iaihvbGRfZmIpLCBvYmosCi0JCQkgIHRvX2ludGVsX3BsYW5lKHBy aW1hcnkpLT5mcm9udGJ1ZmZlcl9iaXQpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwogCi0JaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKGRldiwKLQkJCQkgICAgICAg dG9faW50ZWxfcGxhbmUocHJpbWFyeSktPmZyb250YnVmZmVyX2JpdCk7Ci0KIAl0cmFjZV9pOTE1 X2ZsaXBfcmVxdWVzdChpbnRlbF9jcnRjLT5wbGFuZSwgb2JqKTsKIAogCXJldHVybiAwOwogCi1j bGVhbnVwX3VucGluOgotCWludGVsX3VucGluX2ZiX29iaihmYiwgY3J0Yy0+cHJpbWFyeS0+c3Rh dGUtPnJvdGF0aW9uKTsKLWNsZWFudXBfcGVuZGluZzoKLQlpZiAoIUlTX0VSUl9PUl9OVUxMKHJl cXVlc3QpKQotCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwotCWF0b21pY19k ZWMoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOworY2xlYW51cF91bmxvY2s6CiAJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci1jbGVhbnVwOgotCWNydGMtPnByaW1hcnkt PmZiID0gb2xkX2ZiOwotCXVwZGF0ZV9zdGF0ZV9mYihjcnRjLT5wcmltYXJ5KTsKLQotCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZvYmotPmJhc2UpOwotCWRybV9mcmFtZWJ1 ZmZlcl91bnJlZmVyZW5jZSh3b3JrLT5vbGRfZmIpOwotCitjbGVhbnVwX3dvcms6CiAJc3Bpbl9s b2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKIAlsaXN0X2RlbCgmd29yay0+aGVhZCk7CiAJc3Bp bl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwogCitjbGVhbnVwX3ZibGFuazoKIAlkcm1f Y3J0Y192YmxhbmtfcHV0KGNydGMpOwotZnJlZV93b3JrOgotCWtmcmVlKHdvcmspOwotCi0JaWYg KHJldCA9PSAtRUlPKSB7Ci0JCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKLQkJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Ci0KLW91dF9oYW5nOgotCQlzdGF0ZSA9 IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKLQkJaWYgKCFzdGF0ZSkKLQkJCXJldHVybiAt RU5PTUVNOwotCQlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkcm1fbW9kZXNldF9sZWdhY3lfYWNxdWly ZV9jdHgoY3J0Yyk7Ci0KLXJldHJ5OgotCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3Bs YW5lX3N0YXRlKHN0YXRlLCBwcmltYXJ5KTsKLQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHBsYW5l X3N0YXRlKTsKLQkJaWYgKCFyZXQpIHsKLQkJCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZShw bGFuZV9zdGF0ZSwgZmIpOwotCi0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFu ZShwbGFuZV9zdGF0ZSwgY3J0Yyk7Ci0JCQlpZiAoIXJldCkKLQkJCQlyZXQgPSBkcm1fYXRvbWlj X2NvbW1pdChzdGF0ZSk7Ci0JCX0KLQotCQlpZiAocmV0ID09IC1FREVBRExLKSB7Ci0JCQlkcm1f bW9kZXNldF9iYWNrb2ZmKHN0YXRlLT5hY3F1aXJlX2N0eCk7Ci0JCQlkcm1fYXRvbWljX3N0YXRl X2NsZWFyKHN0YXRlKTsKLQkJCWdvdG8gcmV0cnk7Ci0JCX0KK2NsZWFudXA6CisJaWYgKG5ld19z dGF0ZSkKKwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShwcmltYXJ5LCBuZXdfc3RhdGUpOwog Ci0JCWlmIChyZXQpCi0JCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCWlmIChuZXdf Y3J0Y19zdGF0ZSkKKwkJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsIG5ld19jcnRjX3N0 YXRlKTsKIAotCQlpZiAocmV0ID09IDAgJiYgZXZlbnQpIHsKLQkJCXNwaW5fbG9ja19pcnEoJmRl di0+ZXZlbnRfbG9jayk7Ci0JCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBldmVu dCk7Ci0JCQlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Ci0JCX0KLQl9CisJa2Zy ZWUod29yayk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTM4MjksMzMgKzEzOTk0LDYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpbnRlbF9jcnRjX2Z1bmNzID0gewogCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX2NydGNfZGVzdHJveV9zdGF0ZSwKIH07CiAKLXN0 YXRpYyBzdHJ1Y3QgZmVuY2UgKmludGVsX2dldF9leGNsX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKLQot Ci0JaWYgKCFvYmotPmJhc2UuZG1hX2J1ZikKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyZXN2ID0gb2Jq LT5iYXNlLmRtYV9idWYtPnJlc3Y7Ci0KLQkvKiBGb3IgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGRt YWJ1Ziwgd2FpdCBmb3IgZmVuY2UgKi8KLQl3aGlsZSAoMSkgewotCQlzdHJ1Y3QgZmVuY2UgKmZl bmNlX2V4Y2wsICpyZXQgPSBOVUxMOwotCi0JCXJjdV9yZWFkX2xvY2soKTsKLQotCQlmZW5jZV9l eGNsID0gcmN1X2RlcmVmZXJlbmNlKHJlc3YtPmZlbmNlX2V4Y2wpOwotCQlpZiAoZmVuY2VfZXhj bCkKLQkJCXJldCA9IGZlbmNlX2dldF9yY3UoZmVuY2VfZXhjbCk7Ci0KLQkJcmN1X3JlYWRfdW5s b2NrKCk7Ci0KLQkJaWYgKHJldCA9PSBmZW5jZV9leGNsKQotCQkJcmV0dXJuIHJldDsKLQl9Ci19 Ci0KIC8qKgogICogaW50ZWxfcHJlcGFyZV9wbGFuZV9mYiAtIFByZXBhcmUgZmIgZm9yIHVzYWdl IG9uIHBsYW5lCiAgKiBAcGxhbmU6IGRybSBwbGFuZSB0byBwcmVwYXJlIGZvcgpAQCAtMTUxNTks NyArMTUyOTcsNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCS8qIERyb3AgdGhyb3VnaCAtIHVuc3VwcG9ydGVkIHNp bmNlIGV4ZWNsaXN0IG9ubHkuICovCiAJZGVmYXVsdDoKIAkJLyogRGVmYXVsdCBqdXN0IHJldHVy bnMgLUVOT0RFViB0byBpbmRpY2F0ZSB1bnN1cHBvcnRlZCAqLwotCQlkZXZfcHJpdi0+ZGlzcGxh eS5xdWV1ZV9mbGlwID0gaW50ZWxfZGVmYXVsdF9xdWV1ZV9mbGlwOworCQlicmVhazsKIAl9CiB9 CiAKQEAgLTE2MTE5LDkgKzE2MjU3LDkgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQlEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gYm9vdCBm YiBvbiBwaXBlICVkXG4iLAogCQkJCSAgdG9faW50ZWxfY3J0YyhjKS0+cGlwZSk7CiAJCQlkcm1f ZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoYy0+cHJpbWFyeS0+ZmIpOwotCQkJYy0+cHJpbWFyeS0+ ZmIgPSBOVUxMOworCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGMtPnByaW1hcnktPnN0 YXRlLT5mYik7CisJCQljLT5wcmltYXJ5LT5mYiA9IGMtPnByaW1hcnktPnN0YXRlLT5mYiA9IE5V TEw7CiAJCQljLT5wcmltYXJ5LT5jcnRjID0gYy0+cHJpbWFyeS0+c3RhdGUtPmNydGMgPSBOVUxM OwotCQkJdXBkYXRlX3N0YXRlX2ZiKGMtPnByaW1hcnkpOwogCQkJYy0+c3RhdGUtPnBsYW5lX21h c2sgJj0gfigxIDw8IGRybV9wbGFuZV9pbmRleChjLT5wcmltYXJ5KSk7CiAJCX0KIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDY5NDQyMDJkM2RlMC4uYzZkNDBiZmNlMTQ3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtOTc4LDEyICs5NzgsNiBAQCBzdHJ1Y3QgaW50ZWxf ZmxpcF93b3JrIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgdW5waW5fd29yazsKIAlzdHJ1Y3Qgd29y a19zdHJ1Y3QgbW1pb193b3JrOwogCi0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlOwotCWJvb2wgZnJlZV9uZXdfY3J0Y19zdGF0ZTsKLQotCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmI7Ci0Jc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnBlbmRpbmdfZmxpcF9vYmo7CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFu a19ldmVudCAqZXZlbnQ7CiAJYXRvbWljX3QgcGVuZGluZzsKIAl1MzIgZmxpcF9jb3VudDsKQEAg LTk5MSw2ICs5ODUsMTcgQEAgc3RydWN0IGludGVsX2ZsaXBfd29yayB7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpmbGlwX3F1ZXVlZF9yZXE7CiAJdTMyIGZsaXBfcXVldWVkX3ZibGFu azsKIAl1MzIgZmxpcF9yZWFkeV92Ymxhbms7CisKKwl1bnNpZ25lZCBwdXRfcG93ZXJfZG9tYWlu czsKKwl1bnNpZ25lZCBudW1fcGxhbmVzOworCisJYm9vbCBjYW5fYXN5bmNfdW5waW4sIGZsaXBf cHJlcGFyZWQsIGZyZWVfbmV3X2NydGNfc3RhdGU7CisKKwl1bnNpZ25lZCBmYl9iaXRzOworCisJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7 CisJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGVbSTkxNV9NQVhfUExB TkVTICsgMV07CisJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGVbSTkx NV9NQVhfUExBTkVTICsgMV07CiB9OwogCiBzdHJ1Y3QgaW50ZWxfbG9hZF9kZXRlY3RfcGlwZSB7 Ci0tIAoyLjUuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=