From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v3 16/23] drm/i915: Sanitize the shared DPLL reserve/release interface Date: Fri, 28 Jun 2019 17:36:28 +0300 Message-ID: <20190628143635.22066-17-imre.deak@intel.com> References: <20190628143635.22066-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5C156E940 for ; Fri, 28 Jun 2019 14:37:14 +0000 (UTC) In-Reply-To: <20190628143635.22066-1-imre.deak@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 Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org Rm9yIGNvbnNpc3RlbmN5IHMvaW50ZWxfZ2V0X3NoYXJlZF9kcGxsKCkvaW50ZWxfcmVzZXJ2ZV9z aGFyZWRfZHBsbHMoKS8KdG8gYmV0dGVyIG1hdGNoIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGxz KCkuIEFsc28sIHBhc3MgdG8gdGhlCnJlc2VydmUvcmVsZWFzZSBhbmQgZ2V0X2RwbGxzL3B1dF9k cGxscyBob29rcyB0aGUgaW50ZWxfYXRvbWljX3N0YXRlIGFuZApDUlRDIG9iamVjdCwgdGhhdCB3 YXkgdGhlc2UgZnVuY3Rpb25zIGNhbiBsb29rIHVwIHRoZSBvbGQgb3IgbmV3IHN0YXRlCmFzIG5l ZWRlZC4KCkFsc28gcmVsZWFzZSB0aGUgUExMcyBmcm9tIHRoZSBhdG9taWMgc3RhdGUgdmlhIGEg bmV3CnB1dF9kcGxscy0+aW50ZWxfdW5yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoKSBjYWxsIGNoYWlu IGZvciBiZXR0ZXIKc3ltbWV0cnkgd2l0aCB0aGUgcmVzZXJ2YXRpb24gdmlhIHRoZQpnZXRfZHBs bHMtPmludGVsX3JlZmVyZW5jZV9zaGFyZWRfZHBsbCgpIGNhbGwgY2hhaW4uCgpTaW5jZSBub3Ro aW5nIHVzZXMgdGhlIFBMTCByZXR1cm5lZCBieSBpbnRlbF9yZXNlcnZlX3NoYXJlZF9kcGxscygp LAptYWtlIGl0IHJldHVybiBvbmx5IGEgYm9vbC4KCldoaWxlIGF0IGl0IGFsc28gY2xhcmlmeSB0 aGUgcmVzZXJ2ZS9yZWxlYXNlIGZ1bmN0aW9uIGRvY2Jvb2sgaGVhZGVycwptYWtpbmcgaXQgY2xl YXIgdGhhdCBtdWx0aXBsZSBEUExMcyB3aWxsIGJlIHJlc2VydmVkL3JlbGVhc2VkIGFuZAp3aGV0 aGVyIHRoZSBuZXcgb3Igb2xkIGF0b21pYyBDUlRDIHN0YXRlIGlzIGFmZmVjdGVkLgoKVGhpcyBy ZWZhY3RvcmluZyBpcyBhbHNvIGEgcHJlcGFyYXRpb24gZm9yIGEgZm9sbG93LXVwIGNoYW5nZSB0 aGF0IG5lZWRzCnRvIHJlc2VydmUgbXVsdGlwbGUgRFBMTHMuCgpLdWRvcyB0byBWaWxsZSBmb3Ig dGhlIGlkZWEgdG8gcGFzcyBpbnRlbF9hdG9taWNfc3RhdGUgYXJvdW5kLCB0byBtYWtlCnRoaW5n cyBjbGVhcmVyIGxvY2FsbHkgd2hlcmUgYW4gb2JqZWN0J3Mgb2xkL25ldyBhdG9taWMgc3RhdGUg aXMKcmVxdWlyZWQuCgpObyBmdW5jdGlvbmFsIGNoYW5nZXMuCgp2MjoKLSBGaXggY2hlY2twYXRj aCBpc3N1ZTogdHlwbyBpbiBjb2RlIGNvbW1lbnQuCgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0 ZXJAZmZ3bGwuY2g+CkNjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGlu dXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5j b20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j ICB8ICAxOSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsX21nci5j IHwgMjIxICsrKysrKysrKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcGxsX21nci5oIHwgIDEzICstCiAzIGZpbGVzIGNoYW5nZWQsIDE1MyBpbnNlcnRpb25z KCspLCAxMDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwppbmRleCBkZWU5Yjg5ZWIzZWUuLmUzOGFjYjg2MGZiMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTk1MDQsNiArOTUw NCw4IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfY3J0Y19jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9CisJCXRv X2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKIAljb25zdCBzdHJ1 Y3QgaW50ZWxfbGltaXQgKmxpbWl0OwogCWludCByZWZjbGsgPSAxMjAwMDA7CiAKQEAgLTk1NDUs NyArOTU0Nyw3IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfY3J0Y19jb21wdXRlX2Nsb2NrKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCiAJaXJvbmxha2VfY29tcHV0ZV9kcGxsKGNydGMsIGNydGNf c3RhdGUsIE5VTEwpOwogCi0JaWYgKCFpbnRlbF9nZXRfc2hhcmVkX2RwbGwoY3J0Y19zdGF0ZSwg TlVMTCkpIHsKKwlpZiAoIWludGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKHN0YXRlLCBjcnRjLCBO VUxMKSkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gZmluZCBQTEwgZm9yIHBpcGUgJWNc biIsCiAJCQkgICAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOwogCQlyZXR1cm4gLUVJTlZBTDsK QEAgLTk5MjYsNyArOTkyOCw3IEBAIHN0YXRpYyBpbnQgaGFzd2VsbF9jcnRjX2NvbXB1dGVfY2xv Y2soc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyID0KIAkJCWludGVsX2dldF9jcnRjX25ld19lbmNvZGVyKHN0YXRlLCBjcnRjX3N0YXRlKTsK IAotCQlpZiAoIWludGVsX2dldF9zaGFyZWRfZHBsbChjcnRjX3N0YXRlLCBlbmNvZGVyKSkgewor CQlpZiAoIWludGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKHN0YXRlLCBjcnRjLCBlbmNvZGVyKSkg ewogCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGZpbmQgUExMIGZvciBwaXBlICVjXG4iLAog CQkJCSAgICAgIHBpcGVfbmFtZShjcnRjLT5waXBlKSk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKQEAg LTEzMTk1LDI3ICsxMzE5NywyMCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0 KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogc3RhdGljIHZvaWQg aW50ZWxfbW9kZXNldF9jbGVhcl9wbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUt PmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpu ZXdfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7 CiAJc3RydWN0IGludGVsX2NydGMgKmNydGM7CiAJaW50IGk7CiAKIAlpZiAoIWRldl9wcml2LT5k aXNwbGF5LmNydGNfY29tcHV0ZV9jbG9jaykKIAkJcmV0dXJuOwogCi0JZm9yX2VhY2hfb2xkbmV3 X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAotCQkJCQkg ICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKLQkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpvbGRf ZHBsbCA9Ci0JCQlvbGRfY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGw7Ci0KKwlmb3JfZWFjaF9uZXdf aW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJ aWYgKCFuZWVkc19tb2Rlc2V0KCZuZXdfY3J0Y19zdGF0ZS0+YmFzZSkpCiAJCQljb250aW51ZTsK IAogCQluZXdfY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGwgPSBOVUxMOwogCi0JCWlmICghb2xkX2Rw bGwpCi0JCQljb250aW51ZTsKLQotCQlpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxsKG9sZF9kcGxs LCBjcnRjLCAmc3RhdGUtPmJhc2UpOworCQlpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscyhzdGF0 ZSwgY3J0Yyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwbGxfbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RwbGxfbWdyLmMKaW5kZXggYmY2NjI2MWM4YmYwLi4zZmJjOTc1ODUxZmEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMKQEAgLTM2LDkgKzM2LDEw IEBACiAgKiBUaGlzIGZpbGUgcHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24gb3ZlciBkaXNwbGF5IFBM THMuIFRoZSBmdW5jdGlvbgogICogaW50ZWxfc2hhcmVkX2RwbGxfaW5pdCgpIGluaXRpYWxpemVz IHRoZSBQTExzIGZvciB0aGUgZ2l2ZW4gcGxhdGZvcm0uICBUaGUKICAqIHVzZXJzIG9mIGEgUExM IGFyZSB0cmFja2VkIGFuZCB0aGF0IHRyYWNraW5nIGlzIGludGVncmF0ZWQgd2l0aCB0aGUgYXRv bWljCi0gKiBtb2Rlc3QgaW50ZXJmYWNlLiBEdXJpbmcgYW4gYXRvbWljIG9wZXJhdGlvbiwgYSBQ TEwgY2FuIGJlIHJlcXVlc3RlZCBmb3IgYQotICogZ2l2ZW4gQ1JUQyBhbmQgZW5jb2RlciBjb25m aWd1cmF0aW9uIGJ5IGNhbGxpbmcgaW50ZWxfZ2V0X3NoYXJlZF9kcGxsKCkgYW5kCi0gKiBhIHBy ZXZpb3VzbHkgdXNlZCBQTEwgY2FuIGJlIHJlbGVhc2VkIHdpdGggaW50ZWxfcmVsZWFzZV9zaGFy ZWRfZHBsbCgpLgorICogbW9kc2V0IGludGVyZmFjZS4gRHVyaW5nIGFuIGF0b21pYyBvcGVyYXRp b24sIHJlcXVpcmVkIFBMTHMgY2FuIGJlIHJlc2VydmVkCisgKiBmb3IgYSBnaXZlbiBDUlRDIGFu ZCBlbmNvZGVyIGNvbmZpZ3VyYXRpb24gYnkgY2FsbGluZworICogaW50ZWxfcmVzZXJ2ZV9zaGFy ZWRfZHBsbHMoKSBhbmQgcHJldmlvdXNseSByZXNlcnZlZCBQTExzIGNhbiBiZSByZWxlYXNlZAor ICogd2l0aCBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscygpLgogICogQ2hhbmdlcyB0byB0aGUg dXNlcnMgYXJlIGZpcnN0IHN0YWdlZCBpbiB0aGUgYXRvbWljIHN0YXRlLCBhbmQgdGhlbiBtYWRl CiAgKiBlZmZlY3RpdmUgYnkgY2FsbGluZyBpbnRlbF9zaGFyZWRfZHBsbF9zd2FwX3N0YXRlKCkg ZHVyaW5nIHRoZSBhdG9taWMKICAqIGNvbW1pdCBwaGFzZS4KQEAgLTMwOSw2ICszMTAsMjggQEAg aW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxs LAogCXNoYXJlZF9kcGxsW2lkXS5jcnRjX21hc2sgfD0gMSA8PCBjcnRjLT5waXBlOwogfQogCitz dGF0aWMgdm9pZCBpbnRlbF91bnJlZmVyZW5jZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwKKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK KwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKK3sKKwlzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGxfc3RhdGUgKnNoYXJlZF9kcGxsOworCisJc2hhcmVkX2RwbGwgPSBp bnRlbF9hdG9taWNfZ2V0X3NoYXJlZF9kcGxsX3N0YXRlKCZzdGF0ZS0+YmFzZSk7CisJc2hhcmVk X2RwbGxbcGxsLT5pbmZvLT5pZF0uY3J0Y19tYXNrICY9IH4oMSA8PCBjcnRjLT5waXBlKTsKK30K Kworc3RhdGljIHZvaWQgaW50ZWxfcHV0X2RwbGwoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCisJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3Rh dGUoc3RhdGUsIGNydGMpOworCisJaWYgKCFjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCkKKwkJcmV0 dXJuOworCisJaW50ZWxfdW5yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoc3RhdGUsIGNydGMsIGNydGNf c3RhdGUtPnNoYXJlZF9kcGxsKTsKK30KKwogLyoqCiAgKiBpbnRlbF9zaGFyZWRfZHBsbF9zd2Fw X3N0YXRlIC0gbWFrZSBhdG9taWMgRFBMTCBjb25maWd1cmF0aW9uIGVmZmVjdGl2ZQogICogQHN0 YXRlOiBhdG9taWMgc3RhdGUKQEAgLTQyMSwxMSArNDQ0LDEyIEBAIHN0YXRpYyB2b2lkIGlieF9w Y2hfZHBsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl1ZGVs YXkoMjAwKTsKIH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqCi1pYnhfZ2V0 X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JICAgICBzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyBib29sIGlieF9nZXRfZHBsbChzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCSBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK KwkJCSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCWludGVsX2F0b21pY19nZXRfbmV3X2Ny dGNfc3RhdGUoc3RhdGUsIGNydGMpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAq cGxsOwogCWVudW0gaW50ZWxfZHBsbF9pZCBpOwpAQCAtNDQ1LDEyICs0NjksMTIgQEAgaWJ4X2dl dF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCX0KIAogCWlmICgh cGxsKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIGZhbHNlOwogCiAJLyogcmVmZXJlbmNlIHRo ZSBwbGwgKi8KIAlpbnRlbF9yZWZlcmVuY2Vfc2hhcmVkX2RwbGwocGxsLCBjcnRjX3N0YXRlKTsK IAotCXJldHVybiBwbGw7CisJcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIGlieF9kdW1w X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTgyMSwxMCAr ODQ1LDEyIEBAIGhzd19kZGlfZHBfZ2V0X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCiAJcmV0dXJuIHBsbDsKIH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqCi1oc3dfZ2V0X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Ci0JICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyBib29sIGhzd19n ZXRfZHBsbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCSBzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKKwkJCSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCWludGVsX2F0b21pY19nZXRf bmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwogCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAq cGxsOwogCiAJbWVtc2V0KCZjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLCAwLApAQCAtODM2LDcg Kzg2Miw3IEBAIGhzd19nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJcGxsID0gaHN3X2RkaV9kcF9nZXRfZHBsbChjcnRjX3N0YXRlKTsKIAl9IGVsc2UgaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0FOQUxPRykpIHsK IAkJaWYgKFdBUk5fT04oY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayAvIDIgIT0gMTM1MDAwKSkKLQkJ CXJldHVybiBOVUxMOworCQkJcmV0dXJuIGZhbHNlOwogCiAJCWNydGNfc3RhdGUtPmRwbGxfaHdf c3RhdGUuc3BsbCA9CiAJCQlTUExMX1BMTF9FTkFCTEUgfCBTUExMX0ZSRVFfMTM1ME1IeiB8IFNQ TExfUkVGX01VWEVEX1NTQzsKQEAgLTg0NCwxNSArODcwLDE1IEBAIGhzd19nZXRfZHBsbChzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcGxsID0gaW50ZWxfZmluZF9zaGFy ZWRfZHBsbChjcnRjX3N0YXRlLAogCQkJCQkgICAgIERQTExfSURfU1BMTCwgRFBMTF9JRF9TUExM KTsKIAl9IGVsc2UgewotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCWlm ICghcGxsKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIGZhbHNlOwogCiAJaW50ZWxfcmVmZXJl bmNlX3NoYXJlZF9kcGxsKHBsbCwgY3J0Y19zdGF0ZSk7CiAKLQlyZXR1cm4gcGxsOworCXJldHVy biB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBoc3dfZHVtcF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0xMzg1LDEwICsxNDExLDEyIEBAIHNrbF9kZGlfZHBf c2V0X2RwbGxfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJ cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKgotc2ts X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCSAgICAgc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCitzdGF0aWMgYm9vbCBza2xfZ2V0X2RwbGwoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkgc3RydWN0IGludGVsX2NydGMgKmNy dGMsCisJCQkgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CisJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0 YXRlKHN0YXRlLCBjcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKIAlib29s IGJyZXQ7CiAKQEAgLTEzOTYsMTYgKzE0MjQsMTYgQEAgc2tsX2dldF9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlicmV0ID0gc2tsX2RkaV9oZG1pX3BsbF9kaXZp ZGVycyhjcnRjX3N0YXRlKTsKIAkJaWYgKCFicmV0KSB7CiAJCQlEUk1fREVCVUdfS01TKCJDb3Vs ZCBub3QgZ2V0IEhETUkgcGxsIGRpdmlkZXJzLlxuIik7Ci0JCQlyZXR1cm4gTlVMTDsKKwkJCXJl dHVybiBmYWxzZTsKIAkJfQogCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2Rlcihj cnRjX3N0YXRlKSkgewogCQlicmV0ID0gc2tsX2RkaV9kcF9zZXRfZHBsbF9od19zdGF0ZShjcnRj X3N0YXRlKTsKIAkJaWYgKCFicmV0KSB7CiAJCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3Qgc2V0 IERQIGRwbGwgSFcgc3RhdGUuXG4iKTsKLQkJCXJldHVybiBOVUxMOworCQkJcmV0dXJuIGZhbHNl OwogCQl9CiAJfSBlbHNlIHsKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBmYWxzZTsKIAl9CiAK IAlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkK QEAgLTE0MTcsMTEgKzE0NDUsMTEgQEAgc2tsX2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQkJCQkgICAgIERQTExfSURfU0tMX0RQTEwxLAogCQkJCQkgICAg IERQTExfSURfU0tMX0RQTEwzKTsKIAlpZiAoIXBsbCkKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVy biBmYWxzZTsKIAogCWludGVsX3JlZmVyZW5jZV9zaGFyZWRfZHBsbChwbGwsIGNydGNfc3RhdGUp OwogCi0JcmV0dXJuIHBsbDsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2tsX2R1 bXBfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMTgyNywy MiArMTg1NSwyMyBAQCBieHRfZGRpX2hkbWlfc2V0X2RwbGxfaHdfc3RhdGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJcmV0dXJuIGJ4dF9kZGlfc2V0X2RwbGxfaHdfc3Rh dGUoY3J0Y19zdGF0ZSwgJmNsa19kaXYpOwogfQogCi1zdGF0aWMgc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICoKLWJ4dF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKLQkgICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQorc3RhdGljIGJvb2wgYnh0 X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJIHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAorCQkJIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogewot CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNl LmNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJaW50ZWxf YXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICpwbGw7CiAJZW51bSBpbnRlbF9kcGxsX2lkIGlkOwogCiAJaWYgKGlu dGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpICYmCiAJICAg ICFieHRfZGRpX2hkbWlfc2V0X2RwbGxfaHdfc3RhdGUoY3J0Y19zdGF0ZSkpCi0JCXJldHVybiBO VUxMOworCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2Rlcihj cnRjX3N0YXRlKSAmJgogCSAgICAhYnh0X2RkaV9kcF9zZXRfZHBsbF9od19zdGF0ZShjcnRjX3N0 YXRlKSkKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBmYWxzZTsKIAogCS8qIDE6MSBtYXBwaW5n IGJldHdlZW4gcG9ydHMgYW5kIFBMTHMgKi8KIAlpZCA9IChlbnVtIGludGVsX2RwbGxfaWQpIGVu Y29kZXItPnBvcnQ7CkBAIC0xODUzLDcgKzE4ODIsNyBAQCBieHRfZ2V0X2RwbGwoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAlpbnRlbF9yZWZlcmVuY2Vfc2hhcmVkX2Rw bGwocGxsLCBjcnRjX3N0YXRlKTsKIAotCXJldHVybiBwbGw7CisJcmV0dXJuIHRydWU7CiB9CiAK IHN0YXRpYyB2b2lkIGJ4dF9kdW1wX2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKQEAgLTE4ODQsOCArMTkxMywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X3NoYXJlZF9kcGxsX2Z1bmNzIGJ4dF9kZGlfcGxsX2Z1bmNzID0gewogc3RydWN0IGludGVsX2Rw bGxfbWdyIHsKIAljb25zdCBzdHJ1Y3QgZHBsbF9pbmZvICpkcGxsX2luZm87CiAKLQlzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGwgKigqZ2V0X2RwbGwpKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAotCQkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7CisJ Ym9vbCAoKmdldF9kcGxscykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkg IHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2Rlcik7CisJdm9pZCAoKnB1dF9kcGxscykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCisJCQkgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKIAogCXZvaWQgKCpkdW1wX2h3X3N0 YXRlKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSAqaHdfc3RhdGUpOwpAQCAtMTg5OSw3ICsxOTMxLDgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcGxsX2luZm8gcGNoX3BsbHNbXSA9IHsKIAogc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBwY2hfcGxsX21nciA9IHsKIAkuZHBsbF9pbmZv ID0gcGNoX3BsbHMsCi0JLmdldF9kcGxsID0gaWJ4X2dldF9kcGxsLAorCS5nZXRfZHBsbHMgPSBp YnhfZ2V0X2RwbGwsCisJLnB1dF9kcGxscyA9IGludGVsX3B1dF9kcGxsLAogCS5kdW1wX2h3X3N0 YXRlID0gaWJ4X2R1bXBfaHdfc3RhdGUsCiB9OwogCkBAIC0xOTE1LDcgKzE5NDgsOCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRwbGxfaW5mbyBoc3dfcGxsc1tdID0gewogCiBzdGF0aWMgY29uc3Qg c3RydWN0IGludGVsX2RwbGxfbWdyIGhzd19wbGxfbWdyID0gewogCS5kcGxsX2luZm8gPSBoc3df cGxscywKLQkuZ2V0X2RwbGwgPSBoc3dfZ2V0X2RwbGwsCisJLmdldF9kcGxscyA9IGhzd19nZXRf ZHBsbCwKKwkucHV0X2RwbGxzID0gaW50ZWxfcHV0X2RwbGwsCiAJLmR1bXBfaHdfc3RhdGUgPSBo c3dfZHVtcF9od19zdGF0ZSwKIH07CiAKQEAgLTE5MjksNyArMTk2Myw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHBsbF9pbmZvIHNrbF9wbGxzW10gPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW50ZWxfZHBsbF9tZ3Igc2tsX3BsbF9tZ3IgPSB7CiAJLmRwbGxfaW5mbyA9IHNrbF9wbGxzLAot CS5nZXRfZHBsbCA9IHNrbF9nZXRfZHBsbCwKKwkuZ2V0X2RwbGxzID0gc2tsX2dldF9kcGxsLAor CS5wdXRfZHBsbHMgPSBpbnRlbF9wdXRfZHBsbCwKIAkuZHVtcF9od19zdGF0ZSA9IHNrbF9kdW1w X2h3X3N0YXRlLAogfTsKIApAQCAtMTk0Miw3ICsxOTc3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcGxsX2luZm8gYnh0X3BsbHNbXSA9IHsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9k cGxsX21nciBieHRfcGxsX21nciA9IHsKIAkuZHBsbF9pbmZvID0gYnh0X3BsbHMsCi0JLmdldF9k cGxsID0gYnh0X2dldF9kcGxsLAorCS5nZXRfZHBsbHMgPSBieHRfZ2V0X2RwbGwsCisJLnB1dF9k cGxscyA9IGludGVsX3B1dF9kcGxsLAogCS5kdW1wX2h3X3N0YXRlID0gYnh0X2R1bXBfaHdfc3Rh dGUsCiB9OwogCkBAIC0yMzMyLDEwICsyMzY4LDEyIEBAIGNubF9kZGlfZHBfc2V0X2RwbGxfaHdf c3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJcmV0dXJuIHRydWU7 CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKgotY25sX2dldF9kcGxsKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCSAgICAgc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCitzdGF0aWMgYm9vbCBjbmxfZ2V0X2RwbGwoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsCisJCQkgc3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCQkgc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBj cnRjKTsKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKIAlib29sIGJyZXQ7CiAKQEAg LTIzNDMsMTggKzIzODEsMTggQEAgY25sX2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCQlicmV0ID0gY25sX2RkaV9oZG1pX3BsbF9kaXZpZGVycyhjcnRjX3N0 YXRlKTsKIAkJaWYgKCFicmV0KSB7CiAJCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3QgZ2V0IEhE TUkgcGxsIGRpdmlkZXJzLlxuIik7Ci0JCQlyZXR1cm4gTlVMTDsKKwkJCXJldHVybiBmYWxzZTsK IAkJfQogCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRlKSkg ewogCQlicmV0ID0gY25sX2RkaV9kcF9zZXRfZHBsbF9od19zdGF0ZShjcnRjX3N0YXRlKTsKIAkJ aWYgKCFicmV0KSB7CiAJCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3Qgc2V0IERQIGRwbGwgSFcg c3RhdGUuXG4iKTsKLQkJCXJldHVybiBOVUxMOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfSBl bHNlIHsKIAkJRFJNX0RFQlVHX0tNUygiU2tpcCBEUExMIHNldHVwIGZvciBvdXRwdXRfdHlwZXMg MHgleFxuIiwKIAkJCSAgICAgIGNydGNfc3RhdGUtPm91dHB1dF90eXBlcyk7Ci0JCXJldHVybiBO VUxMOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJcGxsID0gaW50ZWxfZmluZF9zaGFyZWRfZHBs bChjcnRjX3N0YXRlLApAQCAtMjM2MiwxMiArMjQwMCwxMiBAQCBjbmxfZ2V0X2RwbGwoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICBEUExMX0lEX1NLTF9EUExM Mik7CiAJaWYgKCFwbGwpIHsKIAkJRFJNX0RFQlVHX0tNUygiTm8gUExMIHNlbGVjdGVkXG4iKTsK LQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlpbnRlbF9yZWZlcmVuY2Vf c2hhcmVkX2RwbGwocGxsLCBjcnRjX3N0YXRlKTsKIAotCXJldHVybiBwbGw7CisJcmV0dXJuIHRy dWU7CiB9CiAKIHN0YXRpYyB2b2lkIGNubF9kdW1wX2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKQEAgLTIzOTQsNyArMjQzMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHBsbF9pbmZvIGNubF9wbGxzW10gPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxf ZHBsbF9tZ3IgY25sX3BsbF9tZ3IgPSB7CiAJLmRwbGxfaW5mbyA9IGNubF9wbGxzLAotCS5nZXRf ZHBsbCA9IGNubF9nZXRfZHBsbCwKKwkuZ2V0X2RwbGxzID0gY25sX2dldF9kcGxsLAorCS5wdXRf ZHBsbHMgPSBpbnRlbF9wdXRfZHBsbCwKIAkuZHVtcF9od19zdGF0ZSA9IGNubF9kdW1wX2h3X3N0 YXRlLAogfTsKIApAQCAtMjc5MiwxMSArMjgzMSwxMyBAQCBzdGF0aWMgYm9vbCBpY2xfY2FsY19t Z19wbGxfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJcmV0dXJu IHRydWU7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKgotaWNsX2dldF9k cGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCSAgICAgc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCitzdGF0aWMgYm9vbCBpY2xfZ2V0X2RwbGxzKHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK KwkJCSAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFz ZS5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJaW50ZWxf YXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CiAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQ7CiAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGw7CiAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwpAQCAtMjgzMSwyNCArMjg3Miwy NCBAQCBpY2xfZ2V0X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ CX0KIAl9IGVsc2UgewogCQlNSVNTSU5HX0NBU0UocG9ydCk7Ci0JCXJldHVybiBOVUxMOworCQly ZXR1cm4gZmFsc2U7CiAJfQogCiAJaWYgKCFyZXQpIHsKIAkJRFJNX0RFQlVHX0tNUygiQ291bGQg bm90IGNhbGN1bGF0ZSBQTEwgc3RhdGUuXG4iKTsKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAogCXBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwoY3J0Y19zdGF0ZSwg bWluLCBtYXgpOwogCWlmICghcGxsKSB7CiAJCURSTV9ERUJVR19LTVMoIk5vIFBMTCBzZWxlY3Rl ZFxuIik7Ci0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJaW50ZWxfcmVm ZXJlbmNlX3NoYXJlZF9kcGxsKHBsbCwgY3J0Y19zdGF0ZSk7CiAKLQlyZXR1cm4gcGxsOworCXJl dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBtZ19wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTMyMjMsNyArMzI2NCw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHBsbF9pbmZvIGljbF9wbGxzW10gPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfZHBsbF9tZ3IgaWNsX3BsbF9tZ3IgPSB7CiAJLmRwbGxfaW5mbyA9IGljbF9wbGxz LAotCS5nZXRfZHBsbCA9IGljbF9nZXRfZHBsbCwKKwkuZ2V0X2RwbGxzID0gaWNsX2dldF9kcGxs cywKKwkucHV0X2RwbGxzID0gaW50ZWxfcHV0X2RwbGwsCiAJLmR1bXBfaHdfc3RhdGUgPSBpY2xf ZHVtcF9od19zdGF0ZSwKIH07CiAKQEAgLTMyMzUsNyArMzI3Nyw4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHBsbF9pbmZvIGVobF9wbGxzW10gPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZHBsbF9tZ3IgZWhsX3BsbF9tZ3IgPSB7CiAJLmRwbGxfaW5mbyA9IGVobF9wbGxzLAotCS5n ZXRfZHBsbCA9IGljbF9nZXRfZHBsbCwKKwkuZ2V0X2RwbGxzID0gaWNsX2dldF9kcGxscywKKwku cHV0X2RwbGxzID0gaW50ZWxfcHV0X2RwbGwsCiAJLmR1bXBfaHdfc3RhdGUgPSBpY2xfZHVtcF9o d19zdGF0ZSwKIH07CiAKQEAgLTMyODcsNTAgKzMzMzAsNjQgQEAgdm9pZCBpbnRlbF9zaGFyZWRf ZHBsbF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB9CiAKIC8qKgotICogaW50ZWxfZ2V0 X3NoYXJlZF9kcGxsIC0gZ2V0IGEgc2hhcmVkIERQTEwgZm9yIENSVEMgYW5kIGVuY29kZXIgY29t YmluYXRpb24KLSAqIEBjcnRjX3N0YXRlOiBhdG9taWMgc3RhdGUgZm9yIHRoZSBjcnRjCisgKiBp bnRlbF9yZXNlcnZlX3NoYXJlZF9kcGxscyAtIHJlc2VydmUgRFBMTHMgZm9yIENSVEMgYW5kIGVu Y29kZXIgY29tYmluYXRpb24KKyAqIEBzdGF0ZTogYXRvbWljIHN0YXRlCisgKiBAY3J0YzogQ1JU QyB0byByZXNlcnZlIERQTExzIGZvcgogICogQGVuY29kZXI6IGVuY29kZXIKICAqCi0gKiBGaW5k IGFuIGFwcHJvcHJpYXRlIERQTEwgZm9yIHRoZSBnaXZlbiBDUlRDIGFuZCBlbmNvZGVyIGNvbWJp bmF0aW9uLiBBCi0gKiByZWZlcmVuY2UgZnJvbSB0aGUgQGNydGNfc3RhdGUgdG8gdGhlIHJldHVy bmVkIHBsbCBpcyByZWdpc3RlcmVkIGluIHRoZQotICogYXRvbWljIHN0YXRlLiBUaGF0IGNvbmZp Z3VyYXRpb24gaXMgbWFkZSBlZmZlY3RpdmUgYnkgY2FsbGluZwotICogaW50ZWxfc2hhcmVkX2Rw bGxfc3dhcF9zdGF0ZSgpLiBUaGUgcmVmZXJlbmNlIHNob3VsZCBiZSByZWxlYXNlZCBieSBjYWxs aW5nCi0gKiBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxsKCkuCisgKiBUaGlzIGZ1bmN0aW9uIHJl c2VydmVzIGFsbCByZXF1aXJlZCBEUExMcyBmb3IgdGhlIGdpdmVuIENSVEMgYW5kIGVuY29kZXIK KyAqIGNvbWJpbmF0aW9uIGluIHRoZSBjdXJyZW50IGF0b21pYyBjb21taXQgQHN0YXRlIGFuZCB0 aGUgbmV3IEBjcnRjIGF0b21pYworICogc3RhdGUuCisgKgorICogVGhlIG5ldyBjb25maWd1cmF0 aW9uIGluIHRoZSBhdG9taWMgY29tbWl0IEBzdGF0ZSBpcyBtYWRlIGVmZmVjdGl2ZSBieQorICog Y2FsbGluZyBpbnRlbF9zaGFyZWRfZHBsbF9zd2FwX3N0YXRlKCkuCisgKgorICogVGhlIHJlc2Vy dmVkIERQTExzIHNob3VsZCBiZSByZWxlYXNlZCBieSBjYWxsaW5nCisgKiBpbnRlbF9yZWxlYXNl X3NoYXJlZF9kcGxscygpLgogICoKICAqIFJldHVybnM6Ci0gKiBBIHNoYXJlZCBEUExMIHRvIGJl IHVzZWQgYnkgQGNydGNfc3RhdGUgYW5kIEBlbmNvZGVyLgorICogVHJ1ZSBpZiBhbGwgcmVxdWly ZWQgRFBMTHMgd2VyZSBzdWNjZXNzZnVsbHkgcmVzZXJ2ZWQuCiAgKi8KLXN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbCAqCi1pbnRlbF9nZXRfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCi0JCSAgICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQor Ym9vbCBpbnRlbF9yZXNlcnZlX3NoYXJlZF9kcGxscyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSwKKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCQlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7CiAJY29uc3Qgc3Ry dWN0IGludGVsX2RwbGxfbWdyICpkcGxsX21nciA9IGRldl9wcml2LT5kcGxsX21ncjsKIAogCWlm IChXQVJOX09OKCFkcGxsX21ncikpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gZmFsc2U7CiAK LQlyZXR1cm4gZHBsbF9tZ3ItPmdldF9kcGxsKGNydGNfc3RhdGUsIGVuY29kZXIpOworCXJldHVy biBkcGxsX21nci0+Z2V0X2RwbGxzKHN0YXRlLCBjcnRjLCBlbmNvZGVyKTsKIH0KIAogLyoqCi0g KiBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxsIC0gZW5kIHVzZSBvZiBEUExMIGJ5IENSVEMgaW4g YXRvbWljIHN0YXRlCi0gKiBAZHBsbDogZHBsbCBpbiB1c2UgYnkgQGNydGMKLSAqIEBjcnRjOiBj cnRjCisgKiBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscyAtIGVuZCB1c2Ugb2YgRFBMTHMgYnkg Q1JUQyBpbiBhdG9taWMgc3RhdGUKICAqIEBzdGF0ZTogYXRvbWljIHN0YXRlCisgKiBAY3J0Yzog Y3J0YyBmcm9tIHdoaWNoIHRoZSBEUExMcyBhcmUgdG8gYmUgcmVsZWFzZWQKICAqCi0gKiBUaGlz IGZ1bmN0aW9uIHJlbGVhc2VzIHRoZSByZWZlcmVuY2UgZnJvbSBAY3J0YyB0byBAZHBsbCBmcm9t IHRoZQotICogYXRvbWljIEBzdGF0ZS4gVGhlIG5ldyBjb25maWd1cmF0aW9uIGlzIG1hZGUgZWZm ZWN0aXZlIGJ5IGNhbGxpbmcKLSAqIGludGVsX3NoYXJlZF9kcGxsX3N3YXBfc3RhdGUoKS4KKyAq IFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgYWxsIERQTExzIHJlc2VydmVkIGJ5IGludGVsX3Jlc2Vy dmVfc2hhcmVkX2RwbGxzKCkKKyAqIGZyb20gdGhlIGN1cnJlbnQgYXRvbWljIGNvbW1pdCBAc3Rh dGUgYW5kIHRoZSBvbGQgQGNydGMgYXRvbWljIHN0YXRlLgorICoKKyAqIFRoZSBuZXcgY29uZmln dXJhdGlvbiBpbiB0aGUgYXRvbWljIGNvbW1pdCBAc3RhdGUgaXMgbWFkZSBlZmZlY3RpdmUgYnkK KyAqIGNhbGxpbmcgaW50ZWxfc2hhcmVkX2RwbGxfc3dhcF9zdGF0ZSgpLgogICovCi12b2lkIGlu dGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpkcGxsLAot CQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAotCQkJICAgICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKK3ZvaWQgaW50ZWxfcmVsZWFzZV9zaGFyZWRfZHBsbHMoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJc3RydWN0IGludGVsX2NydGMgKmNy dGMpCiB7Ci0Jc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX3N0YXRlICpzaGFyZWRfZHBsbF9zdGF0 ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5i YXNlLmRldik7CisJY29uc3Qgc3RydWN0IGludGVsX2RwbGxfbWdyICpkcGxsX21nciA9IGRldl9w cml2LT5kcGxsX21ncjsKKworCS8qCisJICogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IGZvciBldmVyeSBwbGF0Zm9ybSBoYXZpbmcgYQorCSAqIGNvbXB1dGVfY2xvY2sgaG9vaywgZXZl biB0aG91Z2ggdGhlIHBsYXRmb3JtIGRvZXNuJ3QgeWV0IHN1cHBvcnQKKwkgKiB0aGUgc2hhcmVk IERQTEwgZnJhbWV3b3JrIGFuZCBpbnRlbF9yZXNlcnZlX3NoYXJlZF9kcGxscygpIGlzIG5vdAor CSAqIGNhbGxlZCBvbiB0aG9zZS4KKwkgKi8KKwlpZiAoIWRwbGxfbWdyKQorCQlyZXR1cm47CiAK LQlzaGFyZWRfZHBsbF9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfc2hhcmVkX2RwbGxfc3RhdGUo c3RhdGUpOwotCXNoYXJlZF9kcGxsX3N0YXRlW2RwbGwtPmluZm8tPmlkXS5jcnRjX21hc2sgJj0g figxIDw8IGNydGMtPnBpcGUpOworCWRwbGxfbWdyLT5wdXRfZHBsbHMoc3RhdGUsIGNydGMpOwog fQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZHBsbF9tZ3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3Iu aAppbmRleCBkMDU3MDQxNGYzZDEuLjE2ZGRhYjEzODU3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsX21nci5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuaApAQCAtMzksNiArMzksNyBAQAogc3RydWN0 IGRybV9hdG9taWNfc3RhdGU7CiBzdHJ1Y3QgZHJtX2RldmljZTsKIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlOworc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKIHN0cnVjdCBpbnRlbF9jcnRjOwog c3RydWN0IGludGVsX2NydGNfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfZW5jb2RlcjsKQEAgLTE5NSw3 ICsxOTYsNyBAQCBzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSB7CiAgKiBmdXR1cmUgc3RhdGUg d2hpY2ggd291bGQgYmUgYXBwbGllZCBieSBhbiBhdG9taWMgbW9kZSBzZXQgKHN0b3JlZCBpbgog ICogYSBzdHJ1Y3QgJmludGVsX2F0b21pY19zdGF0ZSkuCiAgKgotICogU2VlIGFsc28gaW50ZWxf Z2V0X3NoYXJlZF9kcGxsKCkgYW5kIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGwoKS4KKyAqIFNl ZSBhbHNvIGludGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKCkgYW5kIGludGVsX3JlbGVhc2Vfc2hh cmVkX2RwbGxzKCkuCiAgKi8KIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9zdGF0ZSB7CiAJLyoq CkBAIC0zMzEsMTEgKzMzMiwxMSBAQCB2b2lkIGFzc2VydF9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlib29sIHN0YXRlKTsKICNkZWZpbmUgYXNzZXJ0 X3NoYXJlZF9kcGxsX2VuYWJsZWQoZCwgcCkgYXNzZXJ0X3NoYXJlZF9kcGxsKGQsIHAsIHRydWUp CiAjZGVmaW5lIGFzc2VydF9zaGFyZWRfZHBsbF9kaXNhYmxlZChkLCBwKSBhc3NlcnRfc2hhcmVk X2RwbGwoZCwgcCwgZmFsc2UpCi1zdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9z aGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUsCi0JCQkJCQlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7Ci12b2lkIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGwo c3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpkcGxsLAotCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAotCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Citi b29sIGludGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlLAorCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKTsKK3ZvaWQgaW50ZWxfcmVsZWFzZV9zaGFyZWRfZHBsbHMoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMp Owogdm9pZCBpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfZGlzYWJs ZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7 Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==