From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 6/6] drm/i915: Use intel state as much as possible in wm code Date: Fri, 28 Jun 2019 10:55:17 +0200 Message-ID: <20190628085517.31886-7-maarten.lankhorst@linux.intel.com> References: <20190628085517.31886-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 02DF46E89F for ; Fri, 28 Jun 2019 08:55:23 +0000 (UTC) In-Reply-To: <20190628085517.31886-1-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-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW5zdGVhZCBvZiBkaXJlY3RseSByZWZlcmVuY2luZyBkcm1fY3J0Y19zdGF0ZSwgY29udmVydCB0 bwppbnRlbF9jdGNfc3RhdGUgYW5kIHVzZSB0aGUgYmFzZSBzdHJ1Y3QuIFRoaXMgaXMgdXNlZnVs IHdoZW4gd2UncmUKbWFraW5nIHRoZSBzcGxpdCBiZXR3ZWVuIHVhcGkgYW5kIGh3IHN0YXRlLCBh bmQgYWxzbyBtYWtlcyB0aGUKY29kZSBzbGlnaHRseSBtb3JlIHJlYWRhYmxlLgoKQSBsb3Qgb2Yg cGxhY2VzIGFsc28gdXNlIGNzdGF0ZSwgaW5zdGVhZCBvZiB0aGUgbW9yZSBjb21tb24gY3J0Y19z dGF0ZS4KQ2xlYW4gdGhvc2UgdXAgdG8gdXNlIGNydGNfc3RhdGUuIFNhbWUgZm9yIHBzdGF0ZSB2 cyBwbGFuZV9zdGF0ZS4gKFZpbGxlKQoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyB8IDQwMiArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFu Z2VkLCAyMDAgaW5zZXJ0aW9ucygrKSwgMjE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCmluZGV4IDdkOWFlMjM0YTAyZS4uMDJkZDlmOWYzYTg5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTI4NywxNCArMjg3LDE0IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1 bmNzIHsKIAkJCSAgZW51bSBwaXBlIHBpcGUpOwogCWludCAoKmdldF9maWZvX3NpemUpKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgZW51bSBpOXh4X3BsYW5lX2lk IGk5eHhfcGxhbmUpOwotCWludCAoKmNvbXB1dGVfcGlwZV93bSkoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSk7Ci0JaW50ICgqY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20pKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSk7CisJaW50ICgqY29tcHV0ZV9waXBlX3dtKShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CisJaW50ICgqY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd20pKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIAl2b2lkICgq aW5pdGlhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJ CQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKKwkJCQkgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAJdm9pZCAoKmF0b21pY191cGRhdGVfd2F0ZXJt YXJrcykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJCSBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKKwkJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKIAl2b2lkICgqb3B0aW1pemVfd2F0ZXJtYXJrcykoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUpOworCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAJaW50 ICgqY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpOwogCXZvaWQgKCp1cGRhdGVfd20pKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKIAlp bnQgKCptb2Rlc2V0X2NhbGNfY2RjbGspKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl KTsKQEAgLTE2NDYsNyArMTY0Niw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJLyoK IAkJICogU2hvdWxkIGJlIGhlbGQgYXJvdW5kIGF0b21pYyBXTSByZWdpc3RlciB3cml0aW5nOyBh bHNvCiAJCSAqIHByb3RlY3RzICogaW50ZWxfY3J0Yy0+d20uYWN0aXZlIGFuZAotCQkgKiBjc3Rh dGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUuCisJCSAqIGNydGNfc3RhdGUtPndtLm5lZWRfcG9z dHZibF91cGRhdGUuCiAJCSAqLwogCQlzdHJ1Y3QgbXV0ZXggd21fbXV0ZXg7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCmluZGV4IDQxMTZkZTJhNzdmZC4uZDEwYzYyZDNmMTBjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKQEAgLTExOTgsOCArMTE5OCw4IEBAIHN0YXRpYyBib29sIGc0eF9yYXdf ZmJjX3dtX3NldChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlyZXR1cm4g ZGlydHk7CiB9CiAKLXN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCi0JCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBzdGF0ZSwKK3N0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgICAgY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCSAgICAgIHUzMiBwcmlfdmFsKTsK IAogc3RhdGljIGJvb2wgZzR4X3Jhd19wbGFuZV93bV9jb21wdXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLApAQCAtMjQ5Myw4ICsyNDkzLDggQEAgc3RydWN0IGlsa193bV9t YXhpbXVtcyB7CiAgKiBGb3IgYm90aCBXTV9QSVBFIGFuZCBXTV9MUC4KICAqIG1lbV92YWx1ZSBt dXN0IGJlIGluIDAuMXVzIHVuaXRzLgogICovCi1zdGF0aWMgdTMyIGlsa19jb21wdXRlX3ByaV93 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAotCQkJICAgICAgY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwc3RhdGUsCitzdGF0aWMgdTMyIGlsa19jb21wdXRl X3ByaV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkgICAg ICB1MzIgbWVtX3ZhbHVlLCBib29sIGlzX2xwKQogewogCXUzMiBtZXRob2QxLCBtZXRob2QyOwpA QCAtMjUwMywxOSArMjUwMywxOSBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3ByaV93bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCWlmIChtZW1fdmFsdWUgPT0gMCkK IAkJcmV0dXJuIFUzMl9NQVg7CiAKLQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRl LCBwc3RhdGUpKQorCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFu ZV9zdGF0ZSkpCiAJCXJldHVybiAwOwogCi0JY3BwID0gcHN0YXRlLT5iYXNlLmZiLT5mb3JtYXQt PmNwcFswXTsKKwljcHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07CiAK LQltZXRob2QxID0gaWxrX3dtX21ldGhvZDEoY3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92 YWx1ZSk7CisJbWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUs IGNwcCwgbWVtX3ZhbHVlKTsKIAogCWlmICghaXNfbHApCiAJCXJldHVybiBtZXRob2QxOwogCi0J bWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGNzdGF0ZS0+cGl4ZWxfcmF0ZSwKLQkJCQkgY3N0YXRl LT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRoKCZw c3RhdGUtPmJhc2UuZHN0KSwKKwltZXRob2QyID0gaWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+ cGl4ZWxfcmF0ZSwKKwkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRv dGFsLAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKIAkJCQkg Y3BwLCBtZW1fdmFsdWUpOwogCiAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2QyKTsKQEAgLTI1 MjUsOCArMjUyNSw4IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAgKiBGb3IgYm90aCBXTV9QSVBFIGFuZCBXTV9M UC4KICAqIG1lbV92YWx1ZSBtdXN0IGJlIGluIDAuMXVzIHVuaXRzLgogICovCi1zdGF0aWMgdTMy IGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl LAotCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwc3RhdGUsCitzdGF0 aWMgdTMyIGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsCiAJCQkgICAgICB1MzIgbWVtX3ZhbHVlKQogewogCXUzMiBtZXRob2QxLCBtZXRo b2QyOwpAQCAtMjUzNSwxNSArMjUzNSwxNSBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3Nwcl93 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCWlmIChtZW1fdmFsdWUg PT0gMCkKIAkJcmV0dXJuIFUzMl9NQVg7CiAKLQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUo Y3N0YXRlLCBwc3RhdGUpKQorCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSkpCiAJCXJldHVybiAwOwogCi0JY3BwID0gcHN0YXRlLT5iYXNlLmZiLT5m b3JtYXQtPmNwcFswXTsKKwljcHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBb MF07CiAKLQltZXRob2QxID0gaWxrX3dtX21ldGhvZDEoY3N0YXRlLT5waXhlbF9yYXRlLCBjcHAs IG1lbV92YWx1ZSk7Ci0JbWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGNzdGF0ZS0+cGl4ZWxfcmF0 ZSwKLQkJCQkgY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRy bV9yZWN0X3dpZHRoKCZwc3RhdGUtPmJhc2UuZHN0KSwKKwltZXRob2QxID0gaWxrX3dtX21ldGhv ZDEoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwgY3BwLCBtZW1fdmFsdWUpOworCW1ldGhvZDIgPSBp bGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAorCQkJCSBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCisJCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QpLAogCQkJCSBjcHAsIG1lbV92YWx1ZSk7CiAJcmV0dXJuIG1pbiht ZXRob2QxLCBtZXRob2QyKTsKIH0KQEAgLTI1NTIsOCArMjU1Miw4IEBAIHN0YXRpYyB1MzIgaWxr X2NvbXB1dGVfc3ByX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAg KiBGb3IgYm90aCBXTV9QSVBFIGFuZCBXTV9MUC4KICAqIG1lbV92YWx1ZSBtdXN0IGJlIGluIDAu MXVzIHVuaXRzLgogICovCi1zdGF0aWMgdTMyIGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAotCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwc3RhdGUsCitzdGF0aWMgdTMyIGlsa19jb21wdXRlX2N1cl93bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkgICAgICB1MzIgbWVtX3Zh bHVlKQogewogCWludCBjcHA7CkBAIC0yNTYxLDI5ICsyNTYxLDI5IEBAIHN0YXRpYyB1MzIgaWxr X2NvbXB1dGVfY3VyX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJ aWYgKG1lbV92YWx1ZSA9PSAwKQogCQlyZXR1cm4gVTMyX01BWDsKIAotCWlmICghaW50ZWxfd21f cGxhbmVfdmlzaWJsZShjc3RhdGUsIHBzdGF0ZSkpCisJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNp YmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQljcHAgPSBwc3Rh dGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOworCWNwcCA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi LT5mb3JtYXQtPmNwcFswXTsKIAotCXJldHVybiBpbGtfd21fbWV0aG9kMihjc3RhdGUtPnBpeGVs X3JhdGUsCi0JCQkgICAgICBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwK LQkJCSAgICAgIHBzdGF0ZS0+YmFzZS5jcnRjX3csIGNwcCwgbWVtX3ZhbHVlKTsKKwlyZXR1cm4g aWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwKKwkJCSAgICAgIGNydGNfc3Rh dGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKKwkJCSAgICAgIHBsYW5lX3N0YXRl LT5iYXNlLmNydGNfdywgY3BwLCBtZW1fdmFsdWUpOwogfQogCiAvKiBPbmx5IGZvciBXTV9MUC4g Ki8KLXN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCi0JCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBzdGF0ZSwKK3N0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCSAgICAgIHUzMiBwcmlfdmFsKQogewogCWludCBj cHA7CiAKLQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBwc3RhdGUpKQorCWlm ICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSkpCiAJCXJl dHVybiAwOwogCi0JY3BwID0gcHN0YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmNwcFswXTsKKwljcHAg PSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07CiAKLQlyZXR1cm4gaWxrX3dt X2ZiYyhwcmlfdmFsLCBkcm1fcmVjdF93aWR0aCgmcHN0YXRlLT5iYXNlLmRzdCksIGNwcCk7CisJ cmV0dXJuIGlsa193bV9mYmMocHJpX3ZhbCwgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5i YXNlLmRzdCksIGNwcCk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQKQEAgLTI3NTIsNyArMjc1 Miw3IEBAIHN0YXRpYyBib29sIGlsa192YWxpZGF0ZV93bV9sZXZlbChpbnQgbGV2ZWwsCiBzdGF0 aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAog CQkJCSBpbnQgbGV2ZWwsCi0JCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCisJ CQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnByaXN0YXRlLAogCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnNwcnN0YXRlLAogCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKmN1cnN0YXRlLApAQCAtMjc3MCwzMCArMjc3MCwzMCBAQCBzdGF0aWMgdm9pZCBpbGtfY29t cHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ fQogCiAJaWYgKHByaXN0YXRlKSB7Ci0JCXJlc3VsdC0+cHJpX3ZhbCA9IGlsa19jb21wdXRlX3By aV93bShjc3RhdGUsIHByaXN0YXRlLAorCQlyZXN1bHQtPnByaV92YWwgPSBpbGtfY29tcHV0ZV9w cmlfd20oY3J0Y19zdGF0ZSwgcHJpc3RhdGUsCiAJCQkJCQkgICAgIHByaV9sYXRlbmN5LCBsZXZl bCk7Ci0JCXJlc3VsdC0+ZmJjX3ZhbCA9IGlsa19jb21wdXRlX2ZiY193bShjc3RhdGUsIHByaXN0 YXRlLCByZXN1bHQtPnByaV92YWwpOworCQlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0ZV9m YmNfd20oY3J0Y19zdGF0ZSwgcHJpc3RhdGUsIHJlc3VsdC0+cHJpX3ZhbCk7CiAJfQogCiAJaWYg KHNwcnN0YXRlKQotCQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRl LCBzcHJzdGF0ZSwgc3ByX2xhdGVuY3kpOworCQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0 ZV9zcHJfd20oY3J0Y19zdGF0ZSwgc3Byc3RhdGUsIHNwcl9sYXRlbmN5KTsKIAogCWlmIChjdXJz dGF0ZSkKLQkJcmVzdWx0LT5jdXJfdmFsID0gaWxrX2NvbXB1dGVfY3VyX3dtKGNzdGF0ZSwgY3Vy c3RhdGUsIGN1cl9sYXRlbmN5KTsKKwkJcmVzdWx0LT5jdXJfdmFsID0gaWxrX2NvbXB1dGVfY3Vy X3dtKGNydGNfc3RhdGUsIGN1cnN0YXRlLCBjdXJfbGF0ZW5jeSk7CiAKIAlyZXN1bHQtPmVuYWJs ZSA9IHRydWU7CiB9CiAKIHN0YXRpYyB1MzIKLWhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCitoc3dfY29tcHV0ZV9saW5ldGltZV93 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAljb25zdCBz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Ci0JCXRvX2ludGVsX2F0b21p Y19zdGF0ZShjc3RhdGUtPmJhc2Uuc3RhdGUpOworCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0 Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPQotCQkmY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0 YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CiAJdTMyIGxpbmV0aW1lLCBpcHNfbGluZXRpbWU7CiAK LQlpZiAoIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkKIAkJcmV0dXJuIDA7CiAJaWYgKFdBUk5fT04oYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9 PSAwKSkKIAkJcmV0dXJuIDA7CkBAIC0zMTAxLDEwICszMTAxLDEwIEBAIHN0YXRpYyBib29sIGls a192YWxpZGF0ZV9waXBlX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIH0KIAogLyogQ29tcHV0ZSBuZXcgd2F0ZXJtYXJrcyBmb3IgdGhlIHBpcGUgKi8KLXN0YXRp YyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl KQorc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQogewotCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0 ZS0+YmFzZS5zdGF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSA9IGNydGNfc3RhdGUtPmJhc2Uuc3RhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGludGVs X3BpcGVfd20gKnBpcGVfd207CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7 CiAJY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwpAQCAtMzExNiw5ICszMTE2LDkgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBp bGtfd21fbWF4X2xldmVsKGRldl9wcml2KSwgdXNhYmxlX2xldmVsOwogCXN0cnVjdCBpbGtfd21f bWF4aW11bXMgbWF4OwogCi0JcGlwZV93bSA9ICZjc3RhdGUtPndtLmlsay5vcHRpbWFsOworCXBp cGVfd20gPSAmY3J0Y19zdGF0ZS0+d20uaWxrLm9wdGltYWw7CiAKLQlkcm1fYXRvbWljX2NydGNf c3RhdGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUsIHBsYW5lX3N0YXRlLCAmY3N0YXRlLT5i YXNlKSB7CisJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5l LCBwbGFuZV9zdGF0ZSwgJmNydGNfc3RhdGUtPmJhc2UpIHsKIAkJY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwcyA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsKIAog CQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKQEAgLTMxMjksNyAr MzEyOSw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlKQogCQkJY3Vyc3RhdGUgPSBwczsKIAl9CiAKLQlwaXBlX3dtLT5waXBl X2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0aXZlOworCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9 IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwogCWlmIChzcHJzdGF0ZSkgewogCQlwaXBlX3dtLT5z cHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlOwogCQlwaXBlX3dtLT5zcHJp dGVzX3NjYWxlZCA9IHNwcnN0YXRlLT5iYXNlLnZpc2libGUgJiYKQEAgLTMxNDgsMTEgKzMxNDgs MTEgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUpCiAJCXVzYWJsZV9sZXZlbCA9IDA7CiAKIAltZW1zZXQoJnBpcGVfd20tPndt LCAwLCBzaXplb2YocGlwZV93bS0+d20pKTsKLQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJp diwgaW50ZWxfY3J0YywgMCwgY3N0YXRlLAorCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2 LCBpbnRlbF9jcnRjLCAwLCBjcnRjX3N0YXRlLAogCQkJICAgICBwcmlzdGF0ZSwgc3Byc3RhdGUs IGN1cnN0YXRlLCAmcGlwZV93bS0+d21bMF0pOwogCiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYp IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCi0JCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2Nv bXB1dGVfbGluZXRpbWVfd20oY3N0YXRlKTsKKwkJcGlwZV93bS0+bGluZXRpbWUgPSBoc3dfY29t cHV0ZV9saW5ldGltZV93bShjcnRjX3N0YXRlKTsKIAogCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVf d20oZGV2X3ByaXYsIHBpcGVfd20pKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTMxNjIsNyArMzE2 Miw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlKQogCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSB1c2FibGVfbGV2ZWw7IGxl dmVsKyspIHsKIAkJc3RydWN0IGludGVsX3dtX2xldmVsICp3bSA9ICZwaXBlX3dtLT53bVtsZXZl bF07CiAKLQkJaWxrX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIGxldmVs LCBjc3RhdGUsCisJCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCBs ZXZlbCwgY3J0Y19zdGF0ZSwKIAkJCQkgICAgIHByaXN0YXRlLCBzcHJzdGF0ZSwgY3Vyc3RhdGUs IHdtKTsKIAogCQkvKgpAQCAtMzc0Miw3ICszNzQyLDcgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxl X3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAllbnVt IHBpcGUgcGlwZTsKIAlpbnQgbGV2ZWwsIGxhdGVuY3k7CiAJaW50IHNhZ3ZfYmxvY2tfdGltZV91 czsKQEAgLTM3NzMsMTQgKzM3NzMsMTQgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJLyogU2luY2Ugd2UncmUgbm93IGd1YXJh bnRlZWQgdG8gb25seSBoYXZlIG9uZSBhY3RpdmUgQ1JUQy4uLiAqLwogCXBpcGUgPSBmZnMoc3Rh dGUtPmFjdGl2ZV9jcnRjcykgLSAxOwogCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShk ZXZfcHJpdiwgcGlwZSk7Ci0JY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNl LnN0YXRlKTsKKwljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0 YXRlKTsKIAogCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UpCiAJCXJldHVybiBmYWxzZTsKIAogCWZvcl9lYWNoX2ludGVs X3BsYW5lX29uX2NydGMoZGV2LCBjcnRjLCBwbGFuZSkgewogCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dt ICp3bSA9Ci0JCQkmY3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmUtPmlkXTsKKwkJ CSZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmUtPmlkXTsKIAogCQkvKiBT a2lwIHRoaXMgcGxhbmUgaWYgaXQncyBub3QgZW5hYmxlZCAqLwogCQlpZiAoIXdtLT53bVswXS5w bGFuZV9lbikKQEAgLTM4MTEsNyArMzgxMSw3IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2 KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogfQogCiBzdGF0aWMgdTE2IGludGVs X2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAorCQkJICAgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgICBjb25zdCB1NjQg dG90YWxfZGF0YV9yYXRlLAogCQkJICAgICAgY29uc3QgaW50IG51bV9hY3RpdmUsCiAJCQkgICAg ICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIpCkBAIC0zODI1LDcgKzM4MjUsNyBAQCBz dGF0aWMgdTE2IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKIAkJcmV0dXJuIGRkYl9zaXpl IC0gNDsgLyogNCBibG9ja3MgZm9yIGJ5cGFzcyBwYXRoIGFsbG9jYXRpb24gKi8KIAotCWFkanVz dGVkX21vZGUgPSAmY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJYWRqdXN0ZWRfbW9kZSA9 ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CiAJdG90YWxfZGF0YV9idyA9IHRvdGFs X2RhdGFfcmF0ZSAqIGRybV9tb2RlX3ZyZWZyZXNoKGFkanVzdGVkX21vZGUpOwogCiAJLyoKQEAg LTM4NDgsMjMgKzM4NDgsMjIgQEAgc3RhdGljIHUxNiBpbnRlbF9nZXRfZGRiX3NpemUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiBzdGF0aWMgdm9pZAogc2tsX2RkYl9nZXRf cGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Ci0JCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKKwkJCQkgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBjb25zdCB1 NjQgdG90YWxfZGF0YV9yYXRlLAogCQkJCSAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRk YiwKIAkJCQkgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MsIC8qIG91dCAqLwogCQkJCSAg IGludCAqbnVtX2FjdGl2ZSAvKiBvdXQgKi8pCiB7Ci0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSA9IGNydGNfc3RhdGUtPmJhc2Uuc3RhdGU7CiAJc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwotCXN0cnVjdCBk cm1fY3J0YyAqZm9yX2NydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKLQljb25zdCBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0JY29uc3Qgc3RydWN0IGRybV9jcnRjICpjcnRjOwor CXN0cnVjdCBkcm1fY3J0YyAqZm9yX2NydGMgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGM7CisJY29u c3Qgc3RydWN0IGludGVsX2NydGMgKmNydGM7CiAJdTMyIHBpcGVfd2lkdGggPSAwLCB0b3RhbF93 aWR0aCA9IDAsIHdpZHRoX2JlZm9yZV9waXBlID0gMDsKIAllbnVtIHBpcGUgZm9yX3BpcGUgPSB0 b19pbnRlbF9jcnRjKGZvcl9jcnRjKS0+cGlwZTsKIAl1MTYgZGRiX3NpemU7CiAJdTMyIGk7CiAK LQlpZiAoV0FSTl9PTighc3RhdGUpIHx8ICFjc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJaWYgKFdB Uk5fT04oIXN0YXRlKSB8fCAhY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKIAkJYWxsb2MtPnN0 YXJ0ID0gMDsKIAkJYWxsb2MtPmVuZCA9IDA7CiAJCSpudW1fYWN0aXZlID0gaHdlaWdodDMyKGRl dl9wcml2LT5hY3RpdmVfY3J0Y3MpOwpAQCAtMzg3Niw3ICszODc1LDcgQEAgc2tsX2RkYl9nZXRf cGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJZWxzZQogCQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQzMihkZXZfcHJpdi0+YWN0aXZlX2NydGNz KTsKIAotCWRkYl9zaXplID0gaW50ZWxfZ2V0X2RkYl9zaXplKGRldl9wcml2LCBjc3RhdGUsIHRv dGFsX2RhdGFfcmF0ZSwKKwlkZGJfc2l6ZSA9IGludGVsX2dldF9kZGJfc2l6ZShkZXZfcHJpdiwg Y3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9yYXRlLAogCQkJCSAgICAgICpudW1fYWN0aXZlLCBkZGIp OwogCiAJLyoKQEAgLTM5MDEsMTYgKzM5MDAsMTUgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0 aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICogZnJhbWVi dWZmZXIsIFNvIGluc3RlYWQgb2YgYWxsb2NhdGluZyBEREIgZXF1YWxseSBhbW9uZyBwaXBlcwog CSAqIGRpc3RyaWJ1dGUgRERCIGJhc2VkIG9uIHJlc29sdXRpb24vd2lkdGggb2YgdGhlIGRpc3Bs YXkuCiAJICovCi0JZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNf c3RhdGUsIGkpIHsKLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGU7CisJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMs IGNydGNfc3RhdGUsIGkpIHsKKwkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUgPQorCQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJZW51bSBw aXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCQlpbnQgaGRpc3BsYXksIHZkaXNwbGF5OwotCQllbnVt IHBpcGUgcGlwZTsKIAotCQlpZiAoIWNydGNfc3RhdGUtPmVuYWJsZSkKKwkJaWYgKCFjcnRjX3N0 YXRlLT5iYXNlLmVuYWJsZSkKIAkJCWNvbnRpbnVlOwogCi0JCXBpcGUgPSB0b19pbnRlbF9jcnRj KGNydGMpLT5waXBlOwotCQlhZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmFkanVzdGVkX21v ZGU7CiAJCWRybV9tb2RlX2dldF9odl90aW1pbmcoYWRqdXN0ZWRfbW9kZSwgJmhkaXNwbGF5LCAm dmRpc3BsYXkpOwogCQl0b3RhbF93aWR0aCArPSBoZGlzcGxheTsKIApAQCAtMzkyOSw3ICszOTI3 LDcgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJIHU2NCBtb2RpZmllciwgdW5zaWduZWQgaW50 IHJvdGF0aW9uLAogCQkJCSB1MzIgcGxhbmVfcGl4ZWxfcmF0ZSwgc3RydWN0IHNrbF93bV9wYXJh bXMgKndwLAogCQkJCSBpbnQgY29sb3JfcGxhbmUpOwotc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVf cGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKK3N0YXRpYyB2 b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCQkJCSBpbnQgbGV2ZWwsCiAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fcGFy YW1zICp3cCwKIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0X3ByZXYsCkBA IC00MDYxLDE1ICs0MDU5LDE1IEBAIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogICogQ2FsbGVyIHNob3VsZCB0YWtlIGNhcmUgb2Yg ZGl2aWRpbmcgJiByb3VuZGluZyBvZmYgdGhlIHZhbHVlLgogICovCiBzdGF0aWMgdWludF9maXhl ZF8xNl8xNl90Ci1za2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAotCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwc3RhdGUpCitza2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBzdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKIAl1MzIgc3JjX3cs IHNyY19oLCBkc3RfdywgZHN0X2g7CiAJdWludF9maXhlZF8xNl8xNl90IGZwX3dfcmF0aW8sIGZw X2hfcmF0aW87CiAJdWludF9maXhlZF8xNl8xNl90IGRvd25zY2FsZV9oLCBkb3duc2NhbGVfdzsK IAotCWlmIChXQVJOX09OKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNzdGF0ZSwgcHN0YXRlKSkp CisJaWYgKFdBUk5fT04oIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwgcGxhbmVf c3RhdGUpKSkKIAkJcmV0dXJuIHUzMl90b19maXhlZDE2KDApOwogCiAJLyogbi5iLiwgc3JjIGlz IDE2LjE2IGZpeGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdlciAqLwpAQCAtNDA3OCwyMCAr NDA3NiwyMCBAQCBza2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkgKiBDdXJzb3JzIG9ubHkgc3VwcG9ydCAwLzE4MCBkZWdy ZWUgcm90YXRpb24sCiAJCSAqIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24g aGVyZS4KIAkJICovCi0JCXNyY193ID0gcHN0YXRlLT5iYXNlLnNyY193ID4+IDE2OwotCQlzcmNf aCA9IHBzdGF0ZS0+YmFzZS5zcmNfaCA+PiAxNjsKLQkJZHN0X3cgPSBwc3RhdGUtPmJhc2UuY3J0 Y193OwotCQlkc3RfaCA9IHBzdGF0ZS0+YmFzZS5jcnRjX2g7CisJCXNyY193ID0gcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjX3cgPj4gMTY7CisJCXNyY19oID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX2gg Pj4gMTY7CisJCWRzdF93ID0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193OworCQlkc3RfaCA9IHBs YW5lX3N0YXRlLT5iYXNlLmNydGNfaDsKIAl9IGVsc2UgewogCQkvKgogCQkgKiBTcmMgY29vcmRp bmF0ZXMgYXJlIGFscmVhZHkgcm90YXRlZCBieSAyNzAgZGVncmVlcyBmb3IKIAkJICogdGhlIDkw LzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1hdGNoIHRoZQogCQkgKiBHVFQg bWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4KIAkJ ICovCi0JCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBzdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owot CQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JCWRz dF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBzdGF0ZS0+YmFzZS5kc3QpOwotCQlkc3RfaCA9IGRybV9y ZWN0X2hlaWdodCgmcHN0YXRlLT5iYXNlLmRzdCk7CisJCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OworCQlkc3RfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCQlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2UuZHN0KTsKIAl9CiAKIAlmcF93X3JhdGlvID0gZGl2X2ZpeGVkMTYoc3Jj X3csIGRzdF93KTsKQEAgLTQxMzYsNDkgKzQxMzQsNDYgQEAgc2tsX3BpcGVfZG93bnNjYWxlX2Ft b3VudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIH0KIAogaW50 IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAotCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKKwkJCQkgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYpOwotCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9ICZjc3RhdGUtPmJhc2U7Ci0Jc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7CisJc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKLQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGU7Ci0Jc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGU7CisJY29uc3Qgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqZHJtX3BsYW5lX3N0YXRlOwogCWludCBjcnRjX2Nsb2NrLCBkb3RjbGs7CiAJ dTMyIHBpcGVfbWF4X3BpeGVsX3JhdGU7CiAJdWludF9maXhlZF8xNl8xNl90IHBpcGVfZG93bnNj YWxlOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBtYXhfZG93bnNjYWxlID0gdTMyX3RvX2ZpeGVkMTYo MSk7CiAKLQlpZiAoIWNzdGF0ZS0+YmFzZS5lbmFibGUpCisJaWYgKCFjcnRjX3N0YXRlLT5iYXNl LmVuYWJsZSkKIAkJcmV0dXJuIDA7CiAKLQlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hf cGxhbmVfc3RhdGUocGxhbmUsIHBzdGF0ZSwgY3J0Y19zdGF0ZSkgeworCWRybV9hdG9taWNfY3J0 Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShwbGFuZSwgZHJtX3BsYW5lX3N0YXRlLCAmY3J0 Y19zdGF0ZS0+YmFzZSkgewogCQl1aW50X2ZpeGVkXzE2XzE2X3QgcGxhbmVfZG93bnNjYWxlOwog CQl1aW50X2ZpeGVkXzE2XzE2X3QgZnBfOV9kaXZfOCA9IGRpdl9maXhlZDE2KDksIDgpOwogCQlp bnQgYnBwOworCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0K KwkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZV9zdGF0ZSk7CiAKLQkJaWYgKCFpbnRl bF93bV9wbGFuZV92aXNpYmxlKGNzdGF0ZSwKLQkJCQkJICAgIHRvX2ludGVsX3BsYW5lX3N0YXRl KHBzdGF0ZSkpKQorCQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwgcGxh bmVfc3RhdGUpKQogCQkJY29udGludWU7CiAKLQkJaWYgKFdBUk5fT04oIXBzdGF0ZS0+ZmIpKQor CQlpZiAoV0FSTl9PTighcGxhbmVfc3RhdGUtPmJhc2UuZmIpKQogCQkJcmV0dXJuIC1FSU5WQUw7 CiAKLQkJaW50ZWxfcHN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKLQkJcGxh bmVfZG93bnNjYWxlID0gc2tsX3BsYW5lX2Rvd25zY2FsZV9hbW91bnQoY3N0YXRlLAotCQkJCQkJ CSAgICAgaW50ZWxfcHN0YXRlKTsKLQkJYnBwID0gcHN0YXRlLT5mYi0+Zm9ybWF0LT5jcHBbMF0g KiA4OworCQlwbGFuZV9kb3duc2NhbGUgPSBza2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjcnRj X3N0YXRlLCBwbGFuZV9zdGF0ZSk7CisJCWJwcCA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiLT5mb3Jt YXQtPmNwcFswXSAqIDg7CiAJCWlmIChicHAgPT0gNjQpCiAJCQlwbGFuZV9kb3duc2NhbGUgPSBt dWxfZml4ZWQxNihwbGFuZV9kb3duc2NhbGUsCiAJCQkJCQkgICAgICBmcF85X2Rpdl84KTsKIAog CQltYXhfZG93bnNjYWxlID0gbWF4X2ZpeGVkMTYocGxhbmVfZG93bnNjYWxlLCBtYXhfZG93bnNj YWxlKTsKIAl9Ci0JcGlwZV9kb3duc2NhbGUgPSBza2xfcGlwZV9kb3duc2NhbGVfYW1vdW50KGNz dGF0ZSk7CisJcGlwZV9kb3duc2NhbGUgPSBza2xfcGlwZV9kb3duc2NhbGVfYW1vdW50KGNydGNf c3RhdGUpOwogCiAJcGlwZV9kb3duc2NhbGUgPSBtdWxfZml4ZWQxNihwaXBlX2Rvd25zY2FsZSwg bWF4X2Rvd25zY2FsZSk7CiAKLQljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9k ZS5jcnRjX2Nsb2NrOworCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGUuY3J0Y19jbG9jazsKIAlkb3RjbGsgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5j ZGNsay5sb2dpY2FsLmNkY2xrOwogCiAJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTApCkBAIC00MTk1LDEyICs0MTkwLDExIEBAIGludCBza2xf Y2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywK IH0KIAogc3RhdGljIHU2NAotc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKK3NrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkgICAgIGNvbnN0IGlu dCBwbGFuZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0KLQkJdG9faW50 ZWxfcGxhbmUoaW50ZWxfcHN0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwog CXUzMiBkYXRhX3JhdGU7CiAJdTMyIHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKIAlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYjsKQEAgLTQyMDgsMTAgKzQyMDIsMTAgQEAgc2tsX3BsYW5lX3JlbGF0 aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCXVp bnRfZml4ZWRfMTZfMTZfdCBkb3duX3NjYWxlX2Ftb3VudDsKIAl1NjQgcmF0ZTsKIAotCWlmICgh aW50ZWxfcHN0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKQogCQlyZXR1cm4gMDsKIAotCWZiID0gaW50ZWxfcHN0YXRlLT5iYXNlLmZiOworCWZiID0g cGxhbmVfc3RhdGUtPmJhc2UuZmI7CiAJZm9ybWF0ID0gZmItPmZvcm1hdC0+Zm9ybWF0OwogCiAJ aWYgKGludGVsX3BsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpCkBAIC00MjI0LDggKzQyMTgsOCBA QCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUsCiAJICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMg KHRvIG1hdGNoIHRoZQogCSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50 IGZvciByb3RhdGlvbiBoZXJlLgogCSAqLwotCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmludGVs X3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmaW50 ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAKIAkvKiBVViBwbGFuZSBkb2VzIDEvMiBwaXhl bCBzdWItc2FtcGxpbmcgKi8KIAlpZiAocGxhbmUgPT0gMSAmJiBpc19wbGFuYXJfeXV2X2Zvcm1h dChmb3JtYXQpKSB7CkBAIC00MjM1LDcgKzQyMjksNyBAQCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0 YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAKIAlkYXRhX3Jh dGUgPSB3aWR0aCAqIGhlaWdodDsKIAotCWRvd25fc2NhbGVfYW1vdW50ID0gc2tsX3BsYW5lX2Rv d25zY2FsZV9hbW91bnQoY3N0YXRlLCBpbnRlbF9wc3RhdGUpOworCWRvd25fc2NhbGVfYW1vdW50 ID0gc2tsX3BsYW5lX2Rvd25zY2FsZV9hbW91bnQoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwog CiAJcmF0ZSA9IG11bF9yb3VuZF91cF91MzJfZml4ZWQxNihkYXRhX3JhdGUsIGRvd25fc2NhbGVf YW1vdW50KTsKIApAQCAtNDI0NCwzNSArNDIzOCwzMiBAQCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0 YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiB9CiAKIHN0YXRp YyB1NjQKLXNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICppbnRlbF9jc3RhdGUsCitza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgdTY0ICpwbGFuZV9kYXRh X3JhdGUsCiAJCQkJIHU2NCAqdXZfcGxhbmVfZGF0YV9yYXRlKQogewotCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3N0YXRlID0gJmludGVsX2NzdGF0ZS0+YmFzZTsKLQlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPnN0YXRlOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSA9IGNydGNfc3RhdGUtPmJhc2Uuc3RhdGU7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxh bmU7Ci0JY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOworCWNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKmRybV9wbGFuZV9zdGF0ZTsKIAl1NjQgdG90YWxfZGF0YV9yYXRl ID0gMDsKIAogCWlmIChXQVJOX09OKCFzdGF0ZSkpCiAJCXJldHVybiAwOwogCiAJLyogQ2FsY3Vs YXRlIGFuZCBjYWNoZSBkYXRhIHJhdGUgZm9yIGVhY2ggcGxhbmUgKi8KLQlkcm1fYXRvbWljX2Ny dGNfc3RhdGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUsIHBzdGF0ZSwgY3N0YXRlKSB7CisJ ZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBkcm1fcGxh bmVfc3RhdGUsICZjcnRjX3N0YXRlLT5iYXNlKSB7CiAJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQg PSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOworCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlID0KKwkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZV9z dGF0ZSk7CiAJCXU2NCByYXRlOwotCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmlu dGVsX3BzdGF0ZSA9Ci0JCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwc3RhdGUpOwogCiAJCS8qIHBh Y2tlZC95ICovCi0JCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2Nz dGF0ZSwKLQkJCQkJCSAgICBpbnRlbF9wc3RhdGUsIDApOworCQlyYXRlID0gc2tsX3BsYW5lX3Jl bGF0aXZlX2RhdGFfcmF0ZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwgMCk7CiAJCXBsYW5lX2Rh dGFfcmF0ZVtwbGFuZV9pZF0gPSByYXRlOwogCQl0b3RhbF9kYXRhX3JhdGUgKz0gcmF0ZTsKIAog CQkvKiB1di1wbGFuZSAqLwotCQlyYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShp bnRlbF9jc3RhdGUsCi0JCQkJCQkgICAgaW50ZWxfcHN0YXRlLCAxKTsKKwkJcmF0ZSA9IHNrbF9w bGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsIDEpOwogCQl1 dl9wbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdID0gcmF0ZTsKIAkJdG90YWxfZGF0YV9yYXRlICs9 IHJhdGU7CiAJfQpAQCAtNDI4MSwyOCArNDI3MiwyNSBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZl X2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlLAogfQogCiBz dGF0aWMgdTY0Ci1pY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlLAoraWNsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3Jh dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJIHU2NCAqcGxhbmVf ZGF0YV9yYXRlKQogewotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlID0gJmludGVsX2Nz dGF0ZS0+YmFzZTsKLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPnN0 YXRlOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnBzdGF0ZTsKKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpkcm1fcGxhbmVf c3RhdGU7CiAJdTY0IHRvdGFsX2RhdGFfcmF0ZSA9IDA7CiAKLQlpZiAoV0FSTl9PTighc3RhdGUp KQorCWlmIChXQVJOX09OKCFjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKSkKIAkJcmV0dXJuIDA7CiAK IAkvKiBDYWxjdWxhdGUgYW5kIGNhY2hlIGRhdGEgcmF0ZSBmb3IgZWFjaCBwbGFuZSAqLwotCWRy bV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShwbGFuZSwgcHN0YXRlLCBj c3RhdGUpIHsKLQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUg PQotCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKKwlkcm1fYXRvbWljX2NydGNfc3Rh dGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUsIGRybV9wbGFuZV9zdGF0ZSwgJmNydGNfc3Rh dGUtPmJhc2UpIHsKKwkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSA9CisJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxhbmVfc3RhdGUpOwogCQllbnVtIHBs YW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZDsKIAkJdTY0IHJhdGU7 CiAKLQkJaWYgKCFpbnRlbF9wc3RhdGUtPmxpbmtlZF9wbGFuZSkgewotCQkJcmF0ZSA9IHNrbF9w bGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3N0YXRlLAotCQkJCQkJCSAgICBpbnRlbF9w c3RhdGUsIDApOworCQlpZiAoIXBsYW5lX3N0YXRlLT5saW5rZWRfcGxhbmUpIHsKKwkJCXJhdGUg PSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlLCAw KTsKIAkJCXBsYW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF0gPSByYXRlOwogCQkJdG90YWxfZGF0YV9y YXRlICs9IHJhdGU7CiAJCX0gZWxzZSB7CkBAIC00MzE1LDE4ICs0MzAzLDE2IEBAIGljbF9nZXRf dG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9j c3RhdGUsCiAJCQkgKiBOVUxMIGlmIHdlIHRyeSBnZXRfbmV3X3BsYW5lX3N0YXRlKCksIHNvIHdl CiAJCQkgKiBhbHdheXMgY2FsY3VsYXRlIGZyb20gdGhlIG1hc3Rlci4KIAkJCSAqLwotCQkJaWYg KGludGVsX3BzdGF0ZS0+c2xhdmUpCisJCQlpZiAocGxhbmVfc3RhdGUtPnNsYXZlKQogCQkJCWNv bnRpbnVlOwogCiAJCQkvKiBZIHBsYW5lIHJhdGUgaXMgY2FsY3VsYXRlZCBvbiB0aGUgc2xhdmUg Ki8KLQkJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwK LQkJCQkJCQkgICAgaW50ZWxfcHN0YXRlLCAwKTsKLQkJCXlfcGxhbmVfaWQgPSBpbnRlbF9wc3Rh dGUtPmxpbmtlZF9wbGFuZS0+aWQ7CisJCQlyYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFf cmF0ZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwgMCk7CisJCQl5X3BsYW5lX2lkID0gcGxhbmVf c3RhdGUtPmxpbmtlZF9wbGFuZS0+aWQ7CiAJCQlwbGFuZV9kYXRhX3JhdGVbeV9wbGFuZV9pZF0g PSByYXRlOwogCQkJdG90YWxfZGF0YV9yYXRlICs9IHJhdGU7CiAKLQkJCXJhdGUgPSBza2xfcGxh bmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKLQkJCQkJCQkgICAgaW50ZWxfcHN0 YXRlLCAxKTsKKwkJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlLCAxKTsKIAkJCXBsYW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF0gPSByYXRl OwogCQkJdG90YWxfZGF0YV9yYXRlICs9IHJhdGU7CiAJCX0KQEAgLTQzMzYsMTQgKzQzMjIsMTQg QEAgaWNsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmludGVsX2NzdGF0ZSwKIH0KIAogc3RhdGljIGludAotc2tsX2FsbG9jYXRlX3BpcGVfZGRi KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCitza2xfYWxsb2NhdGVfcGlwZV9kZGIo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCSAgICAgIHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCiB7Ci0Jc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9 IGNzdGF0ZS0+YmFzZS5jcnRjOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNy dGNfc3RhdGUtPmJhc2Uuc3RhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Ci0Jc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNzdGF0ZS0+d20u c2tsLmRkYjsKKwlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmY3J0Y19zdGF0ZS0+d20u c2tsLmRkYjsKIAl1MTYgYWxsb2Nfc2l6ZSwgc3RhcnQgPSAwOwogCXUxNiB0b3RhbFtJOTE1X01B WF9QTEFORVNdID0ge307CiAJdTE2IHV2X3RvdGFsW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKQEAg LTQzNTYsNDAgKzQzNDIsNDAgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjc3RhdGUsCiAJaW50IGxldmVsOwogCiAJLyogQ2xlYXIgdGhlIHBhcnRpdGlv bmluZyBmb3IgZGlzYWJsZWQgcGxhbmVzLiAqLwotCW1lbXNldChjc3RhdGUtPndtLnNrbC5wbGFu ZV9kZGJfeSwgMCwgc2l6ZW9mKGNzdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95KSk7Ci0JbWVtc2V0 KGNzdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl91diwgMCwgc2l6ZW9mKGNzdGF0ZS0+d20uc2tsLnBs YW5lX2RkYl91dikpOworCW1lbXNldChjcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3ksIDAs IHNpemVvZihjcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3kpKTsKKwltZW1zZXQoY3J0Y19z dGF0ZS0+d20uc2tsLnBsYW5lX2RkYl91diwgMCwgc2l6ZW9mKGNydGNfc3RhdGUtPndtLnNrbC5w bGFuZV9kZGJfdXYpKTsKIAogCWlmIChXQVJOX09OKCFzdGF0ZSkpCiAJCXJldHVybiAwOwogCi0J aWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkgewogCQlhbGxvYy0+c3RhcnQgPSBhbGxvYy0+ZW5kID0gMDsKIAkJcmV0dXJuIDA7CiAJfQog CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCiAJCXRvdGFsX2RhdGFfcmF0ZSA9Ci0J CQlpY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjc3RhdGUsCisJCQlpY2xfZ2V0X3Rv dGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjcnRjX3N0YXRlLAogCQkJCQkJCSBwbGFuZV9kYXRhX3Jh dGUpOwogCWVsc2UKIAkJdG90YWxfZGF0YV9yYXRlID0KLQkJCXNrbF9nZXRfdG90YWxfcmVsYXRp dmVfZGF0YV9yYXRlKGNzdGF0ZSwKKwkJCXNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRl KGNydGNfc3RhdGUsCiAJCQkJCQkJIHBsYW5lX2RhdGFfcmF0ZSwKIAkJCQkJCQkgdXZfcGxhbmVf ZGF0YV9yYXRlKTsKIAogCi0Jc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZf cHJpdiwgY3N0YXRlLCB0b3RhbF9kYXRhX3JhdGUsCisJc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0 aW9uX2xpbWl0cyhkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9yYXRlLAogCQkJCQkg ICBkZGIsIGFsbG9jLCAmbnVtX2FjdGl2ZSk7CiAJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50cnlf c2l6ZShhbGxvYyk7CiAJaWYgKGFsbG9jX3NpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKIAkvKiBB bGxvY2F0ZSBmaXhlZCBudW1iZXIgb2YgYmxvY2tzIGZvciBjdXJzb3IuICovCi0JdG90YWxbUExB TkVfQ1VSU09SXSA9IHNrbF9jdXJzb3JfYWxsb2NhdGlvbihjc3RhdGUsIG51bV9hY3RpdmUpOwor CXRvdGFsW1BMQU5FX0NVUlNPUl0gPSBza2xfY3Vyc29yX2FsbG9jYXRpb24oY3J0Y19zdGF0ZSwg bnVtX2FjdGl2ZSk7CiAJYWxsb2Nfc2l6ZSAtPSB0b3RhbFtQTEFORV9DVVJTT1JdOwotCWNzdGF0 ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NVUlNPUl0uc3RhcnQgPQorCWNydGNfc3RhdGUt PndtLnNrbC5wbGFuZV9kZGJfeVtQTEFORV9DVVJTT1JdLnN0YXJ0ID0KIAkJYWxsb2MtPmVuZCAt IHRvdGFsW1BMQU5FX0NVUlNPUl07Ci0JY3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3lbUExBTkVf Q1VSU09SXS5lbmQgPSBhbGxvYy0+ZW5kOworCWNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJf eVtQTEFORV9DVVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7CiAKIAlpZiAodG90YWxfZGF0YV9yYXRl ID09IDApCiAJCXJldHVybiAwOwpAQCAtNDQwMiw3ICs0Mzg4LDcgQEAgc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCWJsb2NrcyA9IDA7CiAJ CWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKIAkJCWNv bnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KLQkJCQkmY3N0YXRlLT53bS5za2wub3B0aW1h bC5wbGFuZXNbcGxhbmVfaWRdOworCQkJCSZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFu ZXNbcGxhbmVfaWRdOwogCiAJCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKSB7CiAJCQkJ aWYgKFdBUk5fT04od20tPndtW2xldmVsXS5taW5fZGRiX2FsbG9jID4KQEAgLTQ0MzcsNyArNDQy Myw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlLAogCSAqLwogCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVf aWQpIHsKIAkJY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqd20gPQotCQkJJmNzdGF0ZS0+d20u c2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKKwkJCSZjcnRjX3N0YXRlLT53bS5za2wub3B0 aW1hbC5wbGFuZXNbcGxhbmVfaWRdOwogCQl1NjQgcmF0ZTsKIAkJdTE2IGV4dHJhOwogCkBAIC00 NDc2LDkgKzQ0NjIsOSBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKIAlzdGFydCA9IGFsbG9jLT5zdGFydDsKIAlmb3JfZWFjaF9wbGFuZV9p ZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7CiAJCXN0cnVjdCBza2xfZGRiX2VudHJ5 ICpwbGFuZV9hbGxvYyA9Ci0JCQkmY3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3lbcGxhbmVfaWRd OworCQkJJmNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfeVtwbGFuZV9pZF07CiAJCXN0cnVj dCBza2xfZGRiX2VudHJ5ICp1dl9wbGFuZV9hbGxvYyA9Ci0JCQkmY3N0YXRlLT53bS5za2wucGxh bmVfZGRiX3V2W3BsYW5lX2lkXTsKKwkJCSZjcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3V2 W3BsYW5lX2lkXTsKIAogCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQogCQkJY29udGlu dWU7CkBAIC00NTA5LDcgKzQ0OTUsNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAlmb3IgKGxldmVsKys7IGxldmVsIDw9IGlsa193bV9t YXhfbGV2ZWwoZGV2X3ByaXYpOyBsZXZlbCsrKSB7CiAJCWZvcl9lYWNoX3BsYW5lX2lkX29uX2Ny dGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKIAkJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0K LQkJCQkmY3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVfaWRdOworCQkJCSZjcnRj X3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVfaWRdOwogCiAJCQkvKgogCQkJICog V2Ugb25seSBkaXNhYmxlIHRoZSB3YXRlcm1hcmtzIGZvciBlYWNoIHBsYW5lIGlmCkBAIC00NTQ2 LDcgKzQ1MzIsNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSwKIAkgKi8KIAlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMs IHBsYW5lX2lkKSB7CiAJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KLQkJCSZjc3RhdGUtPndt LnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07CisJCQkmY3J0Y19zdGF0ZS0+d20uc2tsLm9w dGltYWwucGxhbmVzW3BsYW5lX2lkXTsKIAogCQlpZiAod20tPnRyYW5zX3dtLnBsYW5lX3Jlc19i ID49IHRvdGFsW3BsYW5lX2lkXSkKIAkJCW1lbXNldCgmd20tPnRyYW5zX3dtLCAwLCBzaXplb2Yo d20tPnRyYW5zX3dtKSk7CkBAIC00NTk4LDQzICs0NTg0LDQzIEBAIHNrbF93bV9tZXRob2QyKHUz MiBwaXhlbF9yYXRlLCB1MzIgcGlwZV9odG90YWwsIHUzMiBsYXRlbmN5LAogfQogCiBzdGF0aWMg dWludF9maXhlZF8xNl8xNl90Ci1pbnRlbF9nZXRfbGluZXRpbWVfdXMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKK2ludGVsX2dldF9saW5ldGltZV91cyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAl1MzIgcGl4ZWxfcmF0ZTsKIAl1 MzIgY3J0Y19odG90YWw7CiAJdWludF9maXhlZF8xNl8xNl90IGxpbmV0aW1lX3VzOwogCi0JaWYg KCFjc3RhdGUtPmJhc2UuYWN0aXZlKQorCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCiAJ CXJldHVybiB1MzJfdG9fZml4ZWQxNigwKTsKIAotCXBpeGVsX3JhdGUgPSBjc3RhdGUtPnBpeGVs X3JhdGU7CisJcGl4ZWxfcmF0ZSA9IGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7CiAKIAlpZiAoV0FS Tl9PTihwaXhlbF9yYXRlID09IDApKQogCQlyZXR1cm4gdTMyX3RvX2ZpeGVkMTYoMCk7CiAKLQlj cnRjX2h0b3RhbCA9IGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOworCWNy dGNfaHRvdGFsID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOwog CWxpbmV0aW1lX3VzID0gZGl2X2ZpeGVkMTYoY3J0Y19odG90YWwgKiAxMDAwLCBwaXhlbF9yYXRl KTsKIAogCXJldHVybiBsaW5ldGltZV91czsKIH0KIAogc3RhdGljIHUzMgotc2tsX2FkanVzdGVk X3BsYW5lX3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwK LQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlKQorc2tsX2Fk anVzdGVkX3BsYW5lX3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQogewogCXU2NCBhZGp1c3RlZF9waXhlbF9yYXRlOwogCXVpbnRfZml4ZWRfMTZfMTZf dCBkb3duc2NhbGVfYW1vdW50OwogCiAJLyogU2hvdWxkbid0IHJlYWNoIGhlcmUgb24gZGlzYWJs ZWQgcGxhbmVzLi4uICovCi0JaWYgKFdBUk5fT04oIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0 YXRlLCBwc3RhdGUpKSkKKwlpZiAoV0FSTl9PTighaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRj X3N0YXRlLCBwbGFuZV9zdGF0ZSkpKQogCQlyZXR1cm4gMDsKIAogCS8qCiAJICogQWRqdXN0ZWQg cGxhbmUgcGl4ZWwgcmF0ZSBpcyBqdXN0IHRoZSBwaXBlJ3MgYWRqdXN0ZWQgcGl4ZWwgcmF0ZQog CSAqIHdpdGggYWRkaXRpb25hbCBhZGp1c3RtZW50cyBmb3IgcGxhbmUtc3BlY2lmaWMgc2NhbGlu Zy4KIAkgKi8KLQlhZGp1c3RlZF9waXhlbF9yYXRlID0gY3N0YXRlLT5waXhlbF9yYXRlOwotCWRv d25zY2FsZV9hbW91bnQgPSBza2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjc3RhdGUsIHBzdGF0 ZSk7CisJYWRqdXN0ZWRfcGl4ZWxfcmF0ZSA9IGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7CisJZG93 bnNjYWxlX2Ftb3VudCA9IHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUsIHBs YW5lX3N0YXRlKTsKIAogCXJldHVybiBtdWxfcm91bmRfdXBfdTMyX2ZpeGVkMTYoYWRqdXN0ZWRf cGl4ZWxfcmF0ZSwKIAkJCQkJICAgIGRvd25zY2FsZV9hbW91bnQpOwpAQCAtNDc2NywxMyArNDc1 MywxMyBAQCBzdGF0aWMgYm9vbCBza2xfd21faGFzX2xpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgaW50IGxldmVsKQogCXJldHVybiBsZXZlbCA+IDA7CiB9CiAKLXN0YXRp YyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCitzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgaW50IGxldmVsLAogCQkJCSBjb25z dCBzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsCiAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2 ZWwgKnJlc3VsdF9wcmV2LAogCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgLyogb3V0 ICovKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0 YXRlLT5iYXNlLmNydGMtPmRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7CiAJdTMyIGxhdGVuY3kgPSBk ZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRo b2QxLCBtZXRob2QyOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBzZWxlY3RlZF9yZXN1bHQ7CkBAIC00 Nzk5LDE0ICs0Nzg1LDE0IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJbWV0aG9kMSA9IHNrbF93bV9tZXRo b2QxKGRldl9wcml2LCB3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwKIAkJCQkgd3AtPmNwcCwgbGF0ZW5j eSwgd3AtPmRidWZfYmxvY2tfc2l6ZSk7CiAJbWV0aG9kMiA9IHNrbF93bV9tZXRob2QyKHdwLT5w bGFuZV9waXhlbF9yYXRlLAotCQkJCSBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0 b3RhbCwKKwkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAog CQkJCSBsYXRlbmN5LAogCQkJCSB3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lKTsKIAogCWlmICh3 cC0+eV90aWxlZCkgewogCQlzZWxlY3RlZF9yZXN1bHQgPSBtYXhfZml4ZWQxNihtZXRob2QyLCB3 cC0+eV90aWxlX21pbmltdW0pOwogCX0gZWxzZSB7Ci0JCWlmICgod3AtPmNwcCAqIGNzdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsIC8KKwkJaWYgKCh3cC0+Y3BwICogY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsIC8KIAkJICAgICB3cC0+ZGJ1Zl9i bG9ja19zaXplIDwgMSkgJiYKIAkJICAgICAod3AtPnBsYW5lX2J5dGVzX3Blcl9saW5lIC8gd3At PmRidWZfYmxvY2tfc2l6ZSA8IDEpKSB7CiAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwpA QCAtNDg5MywxOCArNDg3OSwxOCBAQCBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogfQogCiBzdGF0aWMgdm9pZAot c2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUsCitza2xfY29tcHV0ZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3bV9wYXJh bXMsCiAJCSAgICAgIHN0cnVjdCBza2xfd21fbGV2ZWwgKmxldmVscykKIHsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNzdGF0ZS0+YmFzZS5jcnRjLT5kZXYp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjLT5kZXYpOwogCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9s ZXZlbChkZXZfcHJpdik7CiAJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0X3ByZXYgPSAmbGV2 ZWxzWzBdOwogCiAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykg ewogCQlzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgPSAmbGV2ZWxzW2xldmVsXTsKIAotCQlz a2xfY29tcHV0ZV9wbGFuZV93bShjc3RhdGUsIGxldmVsLCB3bV9wYXJhbXMsCisJCXNrbF9jb21w dXRlX3BsYW5lX3dtKGNydGNfc3RhdGUsIGxldmVsLCB3bV9wYXJhbXMsCiAJCQkJICAgICByZXN1 bHRfcHJldiwgcmVzdWx0KTsKIAogCQlyZXN1bHRfcHJldiA9IHJlc3VsdDsKQEAgLTQ5MTIsMTQg KzQ4OTgsMTQgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCiB9CiAKIHN0YXRpYyB1MzIKLXNrbF9jb21wdXRlX2xpbmV0aW1lX3dt KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCitza2xfY29tcHV0ZV9saW5l dGltZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uuc3RhdGU7CisJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwog CXVpbnRfZml4ZWRfMTZfMTZfdCBsaW5ldGltZV91czsKIAl1MzIgbGluZXRpbWVfd207CiAKLQls aW5ldGltZV91cyA9IGludGVsX2dldF9saW5ldGltZV91cyhjc3RhdGUpOworCWxpbmV0aW1lX3Vz ID0gaW50ZWxfZ2V0X2xpbmV0aW1lX3VzKGNydGNfc3RhdGUpOwogCWxpbmV0aW1lX3dtID0gZml4 ZWQxNl90b191MzJfcm91bmRfdXAobXVsX3UzMl9maXhlZDE2KDgsIGxpbmV0aW1lX3VzKSk7CiAK IAkvKiBEaXNwbGF5IFdBICMxMTM1OiBCWFQ6QUxMIEdMSzpBTEwgKi8KQEAgLTQ5MjksMTEgKzQ5 MTUsMTEgQEAgc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSkKIAlyZXR1cm4gbGluZXRpbWVfd207CiB9CiAKLXN0YXRpYyB2b2lkIHNr bF9jb21wdXRlX3RyYW5zaXRpb25fd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSwKK3N0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICAgY29uc3Qgc3RydWN0IHNr bF93bV9wYXJhbXMgKndwLAogCQkJCSAgICAgIHN0cnVjdCBza2xfcGxhbmVfd20gKndtKQogewot CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2OworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldjsKIAljb25zdCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJdTE2IHRy YW5zX21pbiwgdHJhbnNfeV90aWxlX21pbjsKIAljb25zdCB1MTYgdHJhbnNfYW1vdW50ID0gMTA7 IC8qIFRoaXMgaXMgY29uZmlndXJhYmxlIGFtb3VudCAqLwpAQCAtNTA5MSwxMyArNTA3NywxMiBA QCBzdGF0aWMgaW50IGljbF9idWlsZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBza2xfYnVpbGRfcGlwZV93 bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQorc3RhdGljIGludCBza2xfYnVpbGRf cGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNzdGF0ZS0+YmFzZS5jcnRjLT5k ZXYpOwotCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSA9ICZjc3RhdGUtPndtLnNrbC5vcHRp bWFsOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9ICZjc3RhdGUtPmJhc2U7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRl LT5iYXNlLmNydGMtPmRldik7CisJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtID0gJmNydGNf c3RhdGUtPndtLnNrbC5vcHRpbWFsOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCWNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpkcm1fcGxhbmVfc3RhdGU7CiAJaW50IHJldDsKIAogCS8qCkBAIC01MTA2LDE5ICs1 MDkxLDIwIEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSkKIAkgKi8KIAltZW1zZXQocGlwZV93bS0+cGxhbmVzLCAwLCBzaXplb2Yo cGlwZV93bS0+cGxhbmVzKSk7CiAKLQlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxh bmVfc3RhdGUocGxhbmUsIHBzdGF0ZSwgY3J0Y19zdGF0ZSkgewotCQljb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9Ci0JCQkJCQl0b19pbnRlbF9wbGFuZV9zdGF0 ZShwc3RhdGUpOworCWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShw bGFuZSwgZHJtX3BsYW5lX3N0YXRlLAorCQkJCQkJICAgJmNydGNfc3RhdGUtPmJhc2UpIHsKKwkJ Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9CisJCQl0b19pbnRl bF9wbGFuZV9zdGF0ZShkcm1fcGxhbmVfc3RhdGUpOwogCiAJCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDExKQotCQkJcmV0ID0gaWNsX2J1aWxkX3BsYW5lX3dtKGNzdGF0ZSwgaW50ZWxfcHN0 YXRlKTsKKwkJCXJldCA9IGljbF9idWlsZF9wbGFuZV93bShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0 ZSk7CiAJCWVsc2UKLQkJCXJldCA9IHNrbF9idWlsZF9wbGFuZV93bShjc3RhdGUsIGludGVsX3Bz dGF0ZSk7CisJCQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd20oY3J0Y19zdGF0ZSwgcGxhbmVfc3Rh dGUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQlwaXBlX3dtLT5saW5ldGlt ZSA9IHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKGNzdGF0ZSk7CisJcGlwZV93bS0+bGluZXRpbWUg PSBza2xfY29tcHV0ZV9saW5ldGltZV93bShjcnRjX3N0YXRlKTsKIAogCXJldHVybiAwOwogfQpA QCAtNTI3MiwxMCArNTI1OCwxMCBAQCBzdGF0aWMgdTMyCiBwaXBlc19tb2RpZmllZChzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsK LQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwogCXUzMiBpLCByZXQgPSAwOwogCi0JZm9yX2VhY2hfbmV3X2ludGVs X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkKKwlmb3JfZWFjaF9uZXdfaW50 ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKIAkJcmV0IHw9IGRy bV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwogCiAJcmV0dXJuIHJldDsKQEAgLTU2NTEsMTEgKzU2 MzcsMTEgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp CiB9CiAKIHN0YXRpYyB2b2lkIHNrbF9hdG9taWNfdXBkYXRlX2NydGNfd20oc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSkKKwkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK IHsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNl LmNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKLQlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20gPSAm Y3N0YXRlLT53bS5za2wub3B0aW1hbDsKKwlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20gPSAm Y3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWw7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl OwogCiAJaWYgKCEoc3RhdGUtPndtX3Jlc3VsdHMuZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNr KCZjcnRjLT5iYXNlKSkpCkBAIC01NjY1LDkgKzU2NTEsOSBAQCBzdGF0aWMgdm9pZCBza2xfYXRv bWljX3VwZGF0ZV9jcnRjX3dtKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogfQog CiBzdGF0aWMgdm9pZCBza2xfaW5pdGlhbF93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKLQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCisJCQkgICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0 IHNrbF9kZGJfdmFsdWVzICpyZXN1bHRzID0gJnN0YXRlLT53bV9yZXN1bHRzOwpAQCAtNTY3Nyw4 ICs1NjYzLDggQEAgc3RhdGljIHZvaWQgc2tsX2luaXRpYWxfd20oc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwog Ci0JaWYgKGNzdGF0ZS0+YmFzZS5hY3RpdmVfY2hhbmdlZCkKLQkJc2tsX2F0b21pY191cGRhdGVf Y3J0Y193bShzdGF0ZSwgY3N0YXRlKTsKKwlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmVfY2hh bmdlZCkKKwkJc2tsX2F0b21pY191cGRhdGVfY3J0Y193bShzdGF0ZSwgY3J0Y19zdGF0ZSk7CiAK IAltdXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7CiB9CkBAIC01NzM0LDI2ICs1 NzIwLDI2IEBAIHN0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogfQogCiBzdGF0aWMgdm9pZCBpbGtfaW5pdGlhbF93YXRl cm1hcmtzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCisJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYp OworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsK LQlpbnRlbF9jcnRjLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLT53bS5pbGsuaW50ZXJtZWRpYXRl OworCWludGVsX2NydGMtPndtLmFjdGl2ZS5pbGsgPSBjcnRjX3N0YXRlLT53bS5pbGsuaW50ZXJt ZWRpYXRlOwogCWlsa19wcm9ncmFtX3dhdGVybWFya3MoZGV2X3ByaXYpOwogCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKIH0KIAogc3RhdGljIHZvaWQgaWxrX29wdGltaXpl X3dhdGVybWFya3Moc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCisJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3N0YXRlLT5iYXNlLmNydGMtPmRldik7Ci0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0 Yy0+ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT53bS53bV9t dXRleCk7Ci0JaWYgKGNzdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSkgewotCQlpbnRlbF9j cnRjLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLT53bS5pbGsub3B0aW1hbDsKKwlpZiAoY3J0Y19z dGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSkgeworCQlpbnRlbF9jcnRjLT53bS5hY3RpdmUu aWxrID0gY3J0Y19zdGF0ZS0+d20uaWxrLm9wdGltYWw7CiAJCWlsa19wcm9ncmFtX3dhdGVybWFy a3MoZGV2X3ByaXYpOwogCX0KIAltdXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7 CkBAIC01ODExLDEzICs1Nzk3LDEzIEBAIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IHNrbF9kZGJfdmFsdWVzICpodyA9 ICZkZXZfcHJpdi0+d20uc2tsX2h3OwogCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiA9 ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwogCiAJc2tsX2RkYl9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIGRkYik7CiAJ Zm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0YykgewotCQljc3RhdGUgPSB0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOworCQljcnRjX3N0YXRlID0gdG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKIAotCQlza2xfcGlwZV93bV9nZXRf aHdfc3RhdGUoY3J0YywgJmNzdGF0ZS0+d20uc2tsLm9wdGltYWwpOworCQlza2xfcGlwZV93bV9n ZXRfaHdfc3RhdGUoY3J0YywgJmNydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsKTsKIAogCQlpZiAo Y3J0Yy0+YWN0aXZlKQogCQkJaHctPmRpcnR5X3BpcGVzIHw9IGRybV9jcnRjX21hc2soJmNydGMt PmJhc2UpOwpAQCAtNTgzNCw4ICs1ODIwLDggQEAgc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CiAJc3RydWN0IGlsa193bV92YWx1ZXMgKmh3ID0gJmRldl9wcml2LT53 bS5odzsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKLQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZlID0g JmNzdGF0ZS0+d20uaWxrLm9wdGltYWw7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOworCXN0cnVjdCBp bnRlbF9waXBlX3dtICphY3RpdmUgPSAmY3J0Y19zdGF0ZS0+d20uaWxrLm9wdGltYWw7CiAJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCXN0YXRpYyBjb25zdCBpOTE1X3JlZ190IHdtMF9w aXBlX3JlZ1tdID0gewogCQlbUElQRV9BXSA9IFdNMF9QSVBFQV9JTEssCkBAIC03MTkxLDcgKzcx NzcsNyBAQCBzdGF0aWMgdm9pZCBnZW4xMV9lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAkgKiBuZXh0IHJlcXVlc3QgdG8gZXhlY3V0ZS4gSWYgdGhlIGlkbGUg aHlzdGVyZXNpcyBpcyBsZXNzIHRoYW4gdGhhdAogCSAqIGludGVycnVwdCBzZXJ2aWNlIGxhdGVu Y3ksIHRoZSBoYXJkd2FyZSB3aWxsIGF1dG9tYXRpY2FsbHkgZ2F0ZQogCSAqIHRoZSBwb3dlciB3 ZWxsIGFuZCB3ZSB3aWxsIHRoZW4gaW5jdXIgdGhlIHdha2UgdXAgY29zdCBvbiB0b3Agb2YKLQkg KiB0aGUgc2VydmljZSBsYXRlbmN5LiBBIHNpbWlsYXIgZ3VpZGUgZnJvbSBpbnRlbF9wc3RhdGUg aXMgdGhhdCB3ZQorCSAqIHRoZSBzZXJ2aWNlIGxhdGVuY3kuIEEgc2ltaWxhciBndWlkZSBmcm9t IHBsYW5lX3N0YXRlIGlzIHRoYXQgd2UKIAkgKiBkbyBub3Qgd2FudCB0aGUgZW5hYmxlIGh5c3Rl cmVzaXMgdG8gbGVzcyB0aGFuIHRoZSB3YWtldXAgbGF0ZW5jeS4KIAkgKgogCSAqIGlndC9nZW1f ZXhlY19ub3Avc2VxdWVudGlhbCBwcm92aWRlcyBhIHJvdWdoIGVzdGltYXRlIGZvciB0aGUKQEAg LTcyNzAsNyArNzI1Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3JjNihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogbmV4dCByZXF1ZXN0IHRvIGV4ZWN1dGUuIElm IHRoZSBpZGxlIGh5c3RlcmVzaXMgaXMgbGVzcyB0aGFuIHRoYXQKIAkgKiBpbnRlcnJ1cHQgc2Vy dmljZSBsYXRlbmN5LCB0aGUgaGFyZHdhcmUgd2lsbCBhdXRvbWF0aWNhbGx5IGdhdGUKIAkgKiB0 aGUgcG93ZXIgd2VsbCBhbmQgd2Ugd2lsbCB0aGVuIGluY3VyIHRoZSB3YWtlIHVwIGNvc3Qgb24g dG9wIG9mCi0JICogdGhlIHNlcnZpY2UgbGF0ZW5jeS4gQSBzaW1pbGFyIGd1aWRlIGZyb20gaW50 ZWxfcHN0YXRlIGlzIHRoYXQgd2UKKwkgKiB0aGUgc2VydmljZSBsYXRlbmN5LiBBIHNpbWlsYXIg Z3VpZGUgZnJvbSBwbGFuZV9zdGF0ZSBpcyB0aGF0IHdlCiAJICogZG8gbm90IHdhbnQgdGhlIGVu YWJsZSBoeXN0ZXJlc2lzIHRvIGxlc3MgdGhhbiB0aGUgd2FrZXVwIGxhdGVuY3kuCiAJICoKIAkg KiBpZ3QvZ2VtX2V4ZWNfbm9wL3NlcXVlbnRpYWwgcHJvdmlkZXMgYSByb3VnaCBlc3RpbWF0ZSBm b3IgdGhlCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeA==