From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 04/38] drm/i915: Remove GPU reset dependence on struct_mutex Date: Fri, 18 Jan 2019 14:00:35 +0000 Message-ID: <20190118140109.25261-5-chris@chris-wilson.co.uk> References: <20190118140109.25261-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2A1B6F7BB for ; Fri, 18 Jan 2019 14:02:03 +0000 (UTC) In-Reply-To: <20190118140109.25261-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Tm93IHRoYXQgdGhlIHN1Ym1pc3Npb24gYmFja2VuZHMgYXJlIGNvbnRyb2xsZWQgdmlhIHRoZWly IG93biBzcGlubG9ja3MsCndpdGggYSB3YXZlIG9mIGEgbWFnaWMgd2FuZCB3ZSBjYW4gbGlmdCB0 aGUgc3RydWN0X211dGV4IHJlcXVpcmVtZW50CmFyb3VuZCBHUFUgcmVzZXQuIFRoYXQgaXMgd2Ug YWxsb3cgdGhlIHN1Ym1pc3Npb24gZnJvbnRlbmQgKHVzZXJzcGFjZSkKdG8ga2VlcCBvbiBzdWJt aXR0aW5nIHdoaWxlIHdlIHByb2Nlc3MgdGhlIEdQVSByZXNldCBhcyB3ZSBjYW4gc3VzcGVuZAp0 aGUgYmFja2VuZCBpbmRlcGVuZGVudGx5LgoKVGhlIG1ham9yIGNoYW5nZSBpcyBhcm91bmQgdGhl IGJhY2tvZmYvaGFuZG9mZiBzdHJhdGVneSBmb3IgcGVyZm9ybWluZwp0aGUgcmVzZXQuIFdpdGgg bm8gbXV0ZXggZGVhZGxvY2ssIHdlIG5vIGxvbmdlciBoYXZlIHRvIGNvb3JkaW5hdGUgd2l0aAph bnkgd2FpdGVyLCBhbmQganVzdCBwZXJmb3JtIHRoZSByZXNldCBpbW1lZGlhdGVseS4KClNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICAzOCArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA1IC0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAxOCArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmggICAgIHwgICAxIC0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgfCAxMDIgKysrLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggICAgICAgICB8ICAyOCArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDQ3IC0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jICAgICAgICAgICAgIHwgMzk3ICsrKysrKysrLS0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5oICAgICAgICAgICAgIHwgICAz ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICAgICB8ICAgNiAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyAgIHwgICA1ICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyAgICAgICAgfCAgMjggKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICA5MiArKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgICAgfCAgIDIgLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgIHwgIDkxICsrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgICB8ICAxNyArLQog Li4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgIHwgIDU3ICstLQog Li4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jICAgIHwgICAzIC0KIC4u Li9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAgNCArLQogMjAg ZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDU1NCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDI0ZDZkNGNlMTRlZi4uM2VjMzY5OTgwZDQw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTI4NCw4ICsxMjg0LDYgQEAg c3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogCQlzZXFfcHV0cyhtLCAiV2VkZ2VkXG4iKTsKIAlpZiAodGVzdF9iaXQoSTkxNV9S RVNFVF9CQUNLT0ZGLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncykpCiAJCXNlcV9wdXRzKG0s ICJSZXNldCBpbiBwcm9ncmVzczogc3RydWN0X211dGV4IGJhY2tvZmZcbiIpOwotCWlmICh0ZXN0 X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKSkKLQkJ c2VxX3B1dHMobSwgIlJlc2V0IGluIHByb2dyZXNzOiByZXNldCBoYW5kb2ZmIHRvIHdhaXRlclxu Iik7CiAJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmRldl9wcml2LT5ncHVfZXJyb3Iud2FpdF9xdWV1 ZSkpCiAJCXNlcV9wdXRzKG0sICJXYWl0ZXIgaG9sZGluZyBzdHJ1Y3QgbXV0ZXhcbiIpOwogCWlm ICh3YWl0cXVldWVfYWN0aXZlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKSkKQEAg LTEzMjEsMTUgKzEzMTksMTUgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQlzdHJ1Y3QgcmJfbm9kZSAqcmI7CiAKIAkJ c2VxX3ByaW50ZihtLCAiJXM6XG4iLCBlbmdpbmUtPm5hbWUpOwotCQlzZXFfcHJpbnRmKG0sICJc dHNlcW5vID0gJXggW2N1cnJlbnQgJXgsIGxhc3QgJXhdXG4iLAorCQlzZXFfcHJpbnRmKG0sICJc dHNlcW5vID0gJXggW2N1cnJlbnQgJXgsIGxhc3QgJXhdLCAlZG1zIGFnb1xuIiwKIAkJCSAgIGVu Z2luZS0+aGFuZ2NoZWNrLnNlcW5vLCBzZXFub1tpZF0sCi0JCQkgICBpbnRlbF9lbmdpbmVfbGFz dF9zdWJtaXQoZW5naW5lKSk7Ci0JCXNlcV9wcmludGYobSwgIlx0d2FpdGVycz8gJXMsIGZha2Ug aXJxIGFjdGl2ZT8gJXMsIHN0YWxsZWQ/ICVzLCB3ZWRnZWQ/ICVzXG4iLAorCQkJICAgaW50ZWxf ZW5naW5lX2xhc3Rfc3VibWl0KGVuZ2luZSksCisJCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZp ZXMgLQorCQkJCQkgICAgZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uX3RpbWVzdGFtcCkpOworCQlz ZXFfcHJpbnRmKG0sICJcdHdhaXRlcnM/ICVzLCBmYWtlIGlycSBhY3RpdmU/ICVzXG4iLAogCQkJ ICAgeWVzbm8oaW50ZWxfZW5naW5lX2hhc193YWl0ZXIoZW5naW5lKSksCiAJCQkgICB5ZXNubyh0 ZXN0X2JpdChlbmdpbmUtPmlkLAotCQkJCQkgICZkZXZfcHJpdi0+Z3B1X2Vycm9yLm1pc3NlZF9p cnFfcmluZ3MpKSwKLQkJCSAgIHllc25vKGVuZ2luZS0+aGFuZ2NoZWNrLnN0YWxsZWQpLAotCQkJ ICAgeWVzbm8oZW5naW5lLT5oYW5nY2hlY2sud2VkZ2VkKSk7CisJCQkJCSAgJmRldl9wcml2LT5n cHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncykpKTsKIAogCQlzcGluX2xvY2tfaXJxKCZiLT5yYl9s b2NrKTsKIAkJZm9yIChyYiA9IHJiX2ZpcnN0KCZiLT53YWl0ZXJzKTsgcmI7IHJiID0gcmJfbmV4 dChyYikpIHsKQEAgLTEzNDMsMTEgKzEzNDEsNiBAQCBzdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNr X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCXNlcV9wcmludGYobSwg Ilx0QUNUSEQgPSAweCUwOGxseCBbY3VycmVudCAweCUwOGxseF1cbiIsCiAJCQkgICAobG9uZyBs b25nKWVuZ2luZS0+aGFuZ2NoZWNrLmFjdGhkLAogCQkJICAgKGxvbmcgbG9uZylhY3RoZFtpZF0p OwotCQlzZXFfcHJpbnRmKG0sICJcdGFjdGlvbiA9ICVzKCVkKSAlZCBtcyBhZ29cbiIsCi0JCQkg ICBoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihlbmdpbmUtPmhhbmdjaGVjay5hY3Rpb24pLAotCQkJ ICAgZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uLAotCQkJICAgamlmZmllc190b19tc2VjcyhqaWZm aWVzIC0KLQkJCQkJICAgIGVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90aW1lc3RhbXApKTsKIAog CQlpZiAoZW5naW5lLT5pZCA9PSBSQ1MpIHsKIAkJCXNlcV9wdXRzKG0sICJcdGluc3Rkb25lIHJl YWQgPVxuIik7CkBAIC0zODg2LDggKzM4NzksNiBAQCBzdGF0aWMgaW50CiBpOTE1X3dlZGdlZF9z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGRhdGE7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCXVuc2lnbmVkIGlu dCB0bXA7CiAKIAkvKgogCSAqIFRoZXJlIGlzIG5vIHNhZmVndWFyZCBhZ2FpbnN0IHRoaXMgZGVi dWdmcyBlbnRyeSBjb2xsaWRpbmcKQEAgLTM5MDAsMTggKzM4OTEsOCBAQCBpOTE1X3dlZGdlZF9z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAlpZiAoaTkxNV9yZXNldF9iYWNrb2ZmKCZpOTE1LT5n cHVfZXJyb3IpKQogCQlyZXR1cm4gLUVBR0FJTjsKIAotCWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQo ZW5naW5lLCBpOTE1LCB2YWwsIHRtcCkgewotCQllbmdpbmUtPmhhbmdjaGVjay5zZXFubyA9IGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKLQkJZW5naW5lLT5oYW5nY2hlY2suc3RhbGxl ZCA9IHRydWU7Ci0JfQotCiAJaTkxNV9oYW5kbGVfZXJyb3IoaTkxNSwgdmFsLCBJOTE1X0VSUk9S X0NBUFRVUkUsCiAJCQkgICJNYW51YWxseSBzZXQgd2VkZ2VkIGVuZ2luZSBtYXNrID0gJWxseCIs IHZhbCk7Ci0KLQl3YWl0X29uX2JpdCgmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzLAotCQkgICAgSTkx NV9SRVNFVF9IQU5ET0ZGLAotCQkgICAgVEFTS19VTklOVEVSUlVQVElCTEUpOwotCiAJcmV0dXJu IDA7CiB9CiAKQEAgLTQwNjYsMTMgKzQwNDcsOCBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lk ICpkYXRhLCB1NjQgdmFsKQogCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OwogCX0KIAotCWlmICh2YWwgJiBEUk9QX1JFU0VUX0FDVElWRSAmJgotCSAgICBpOTE1X3Rlcm1p bmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKSB7CisJaWYgKHZhbCAmIERST1BfUkVTRVRf QUNUSVZFICYmIGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCiAJCWk5 MTVfaGFuZGxlX2Vycm9yKGk5MTUsIEFMTF9FTkdJTkVTLCAwLCBOVUxMKTsKLQkJd2FpdF9vbl9i aXQoJmk5MTUtPmdwdV9lcnJvci5mbGFncywKLQkJCSAgICBJOTE1X1JFU0VUX0hBTkRPRkYsCi0J CQkgICAgVEFTS19VTklOVEVSUlVQVElCTEUpOwotCX0KIAogCWZzX3JlY2xhaW1fYWNxdWlyZShH RlBfS0VSTkVMKTsKIAlpZiAodmFsICYgRFJPUF9CT1VORCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDMxMGQ5ZTFlMTYyMC4uOTQ2ODBiMTViZWQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTMwMDEsMTEgKzMwMDEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9yZXNldF9i YWNrb2ZmKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCiAJcmV0dXJuIHVubGlrZWx5KHRl c3RfYml0KEk5MTVfUkVTRVRfQkFDS09GRiwgJmVycm9yLT5mbGFncykpOwogfQogCi1zdGF0aWMg aW5saW5lIGJvb2wgaTkxNV9yZXNldF9oYW5kb2ZmKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJy b3IpCi17Ci0JcmV0dXJuIHVubGlrZWx5KHRlc3RfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwgJmVy cm9yLT5mbGFncykpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQogewogCXJldHVybiB1bmxpa2VseSh0 ZXN0X2JpdChJOTE1X1dFREdFRCwgJmVycm9yLT5mbGFncykpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKaW5kZXggYjM1OTM5MGJhMjJjLi5kMjBiNDIzODZjM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwpAQCAtNjU3LDExICs2NTcsNiBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkgICAgIHN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpy cHNfY2xpZW50KQogewogCW1pZ2h0X3NsZWVwKCk7Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdfTE9D S0RFUCkKLQlHRU1fQlVHX09OKGRlYnVnX2xvY2tzICYmCi0JCSAgICEhbG9ja2RlcF9pc19oZWxk KCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpICE9Ci0JCSAgICEhKGZsYWdzICYgSTkxNV9X QUlUX0xPQ0tFRCkpOwotI2VuZGlmCiAJR0VNX0JVR19PTih0aW1lb3V0IDwgMCk7CiAKIAl0aW1l b3V0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVzZXJ2YXRpb24ob2JqLT5yZXN2LApAQCAtNDQ5 Myw4ICs0NDg4LDYgQEAgdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIAogCUdFTV9UUkFDRSgiXG4iKTsKIAotCW11dGV4X2xvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwotCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUp OwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGk5MTUsIEZPUkNFV0FLRV9BTEwpOwogCkBA IC00NTIwLDYgKzQ1MTMsNyBAQCB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGk5MTUsIEZPUkNF V0FLRV9BTEwpOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwogCisJbXV0 ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJaTkxNV9nZW1fY29udGV4dHNfbG9z dChpOTE1KTsKIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogfQpAQCAt NDUzNCw2ICs0NTI4LDggQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCWlu dGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGk5MTUpOwogCisJZmx1c2hfd29ya3F1ZXVlKGk5MTUt PndxKTsKKwogCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJLyoKQEAg LTQ1NjMsMTEgKzQ1NTksOSBAQCBpbnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsgLyogZW5zdXJlIHdl IGZsdXNoIGFmdGVyIHdlZGdpbmcgKi8KIAogCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7CisJaTkxNV9yZXNldF9mbHVzaChpOTE1KTsKIAotCWludGVsX3VjX3N1c3BlbmQo aTkxNSk7Ci0KLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmk5MTUtPmdwdV9lcnJvci5oYW5n Y2hlY2tfd29yayk7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5yZXRpcmVf d29yayk7CisJZHJhaW5fZGVsYXllZF93b3JrKCZpOTE1LT5ndC5yZXRpcmVfd29yayk7CiAKIAkv KgogCSAqIEFzIHRoZSBpZGxlX3dvcmsgaXMgcmVhcm1pbmcgaWYgaXQgZGV0ZWN0cyBhIHJhY2Us IHBsYXkgc2FmZSBhbmQKQEAgLTQ1NzUsNiArNDU2OSw4IEBAIGludCBpOTE1X2dlbV9zdXNwZW5k KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCSAqLwogCWRyYWluX2RlbGF5ZWRfd29y aygmaTkxNS0+Z3QuaWRsZV93b3JrKTsKIAorCWludGVsX3VjX3N1c3BlbmQoaTkxNSk7CisKIAkv KgogCSAqIEFzc2VydCB0aGF0IHdlIHN1Y2Nlc3NmdWxseSBmbHVzaGVkIGFsbCB0aGUgd29yayBh bmQKIAkgKiByZXNldCB0aGUgR1BVIGJhY2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dlciBzdGF0ZS4K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmgKaW5kZXggOTlhMzFkZWQ0 ZGZkLi4wOWRjYWYxNDEyMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlX3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNl X3JlZy5oCkBAIC01MCw0ICs1MCwzIEBAIHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgewogfTsK IAogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggOTIyOWIwM2Q2 MjliLi5hMDAzOWVhOTdjZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC0z OSw2ICszOSw3IEBACiAjaW5jbHVkZSA8bGludXgvcGFnZXZlYy5oPgogCiAjaW5jbHVkZSAiaTkx NV9yZXF1ZXN0LmgiCisjaW5jbHVkZSAiaTkxNV9yZXNldC5oIgogI2luY2x1ZGUgImk5MTVfc2Vs ZnRlc3QuaCIKICNpbmNsdWRlICJpOTE1X3RpbWVsaW5lLmgiCiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5jCmluZGV4IDFmOGU4MGUzMWI0OS4uYWZjY2ZmYTlmM2Y5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTUzMywxMCArNTMzLDcgQEAgc3RhdGlj IHZvaWQgZXJyb3JfcHJpbnRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYg Km0sCiAJZXJyX3ByaW50ZihtLCAiICB3YWl0aW5nOiAlc1xuIiwgeWVzbm8oZWUtPndhaXRpbmcp KTsKIAllcnJfcHJpbnRmKG0sICIgIHJpbmctPmhlYWQ6IDB4JTA4eFxuIiwgZWUtPmNwdV9yaW5n X2hlYWQpOwogCWVycl9wcmludGYobSwgIiAgcmluZy0+dGFpbDogMHglMDh4XG4iLCBlZS0+Y3B1 X3JpbmdfdGFpbCk7Ci0JZXJyX3ByaW50ZihtLCAiICBoYW5nY2hlY2sgc3RhbGw6ICVzXG4iLCB5 ZXNubyhlZS0+aGFuZ2NoZWNrX3N0YWxsZWQpKTsKLQllcnJfcHJpbnRmKG0sICIgIGhhbmdjaGVj ayBhY3Rpb246ICVzXG4iLAotCQkgICBoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihlZS0+aGFuZ2No ZWNrX2FjdGlvbikpOwotCWVycl9wcmludGYobSwgIiAgaGFuZ2NoZWNrIGFjdGlvbiB0aW1lc3Rh bXA6ICVkbXMgKCVsdSVzKVxuIiwKKwllcnJfcHJpbnRmKG0sICIgIGhhbmdjaGVjayB0aW1lc3Rh bXA6ICVkbXMgKCVsdSVzKVxuIiwKIAkJICAgamlmZmllc190b19tc2VjcyhlZS0+aGFuZ2NoZWNr X3RpbWVzdGFtcCAtIGVwb2NoKSwKIAkJICAgZWUtPmhhbmdjaGVja190aW1lc3RhbXAsCiAJCSAg IGVlLT5oYW5nY2hlY2tfdGltZXN0YW1wID09IGVwb2NoID8gIjsgZXBvY2giIDogIiIpOwpAQCAt Njg0LDE1ICs2ODEsMTUgQEAgc3RhdGljIHZvaWQgX19lcnJfcHJpbnRfdG9fc2dsKHN0cnVjdCBk cm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCiAJCSAgIGppZmZpZXNfdG9fbXNlY3MoZXJyb3It PmNhcHR1cmUgLSBlcnJvci0+ZXBvY2gpKTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGVycm9yLT5lbmdpbmUpOyBpKyspIHsKLQkJaWYgKGVycm9yLT5lbmdpbmVbaV0uaGFuZ2NoZWNr X3N0YWxsZWQgJiYKLQkJICAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5waWQpIHsKLQkJCWVy cl9wcmludGYobSwgIkFjdGl2ZSBwcm9jZXNzIChvbiByaW5nICVzKTogJXMgWyVkXSwgc2NvcmUg JWQlc1xuIiwKLQkJCQkgICBlbmdpbmVfbmFtZShtLT5pOTE1LCBpKSwKLQkJCQkgICBlcnJvci0+ ZW5naW5lW2ldLmNvbnRleHQuY29tbSwKLQkJCQkgICBlcnJvci0+ZW5naW5lW2ldLmNvbnRleHQu cGlkLAotCQkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5iYW5fc2NvcmUsCi0JCQkJICAg YmFubmFibGUoJmVycm9yLT5lbmdpbmVbaV0uY29udGV4dCkpOwotCQl9CisJCWlmICghZXJyb3It PmVuZ2luZVtpXS5jb250ZXh0LnBpZCkKKwkJCWNvbnRpbnVlOworCisJCWVycl9wcmludGYobSwg IkFjdGl2ZSBwcm9jZXNzIChvbiByaW5nICVzKTogJXMgWyVkXSwgc2NvcmUgJWQlc1xuIiwKKwkJ CSAgIGVuZ2luZV9uYW1lKG0tPmk5MTUsIGkpLAorCQkJICAgZXJyb3ItPmVuZ2luZVtpXS5jb250 ZXh0LmNvbW0sCisJCQkgICBlcnJvci0+ZW5naW5lW2ldLmNvbnRleHQucGlkLAorCQkJICAgZXJy b3ItPmVuZ2luZVtpXS5jb250ZXh0LmJhbl9zY29yZSwKKwkJCSAgIGJhbm5hYmxlKCZlcnJvci0+ ZW5naW5lW2ldLmNvbnRleHQpKTsKIAl9CiAJZXJyX3ByaW50ZihtLCAiUmVzZXQgY291bnQ6ICV1 XG4iLCBlcnJvci0+cmVzZXRfY291bnQpOwogCWVycl9wcmludGYobSwgIlN1c3BlbmQgY291bnQ6 ICV1XG4iLCBlcnJvci0+c3VzcGVuZF9jb3VudCk7CkBAIC0xMTUzLDI5ICsxMTUwLDIyIEBAIHN0 YXRpYyB1MzIgY2FwdHVyZV9lcnJvcl9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICpl cnIsCiAgKgogICogSXQncyBvbmx5IGEgc21hbGwgc3RlcCBiZXR0ZXIgdGhhbiBhIHJhbmRvbSBu dW1iZXIgaW4gaXRzIGN1cnJlbnQgZm9ybS4KICAqLwotc3RhdGljIHUzMiBpOTE1X2Vycm9yX2dl bmVyYXRlX2NvZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICBz dHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAotCQkJCSAgICBpbnQgKmVuZ2luZV9pZCkKK3N0 YXRpYyB1MzIgaTkxNV9lcnJvcl9nZW5lcmF0ZV9jb2RlKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAq ZXJyb3IsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgZW5naW5lX21hc2spCiB7Ci0JdTMyIGVycm9y X2NvZGUgPSAwOwotCWludCBpOwotCi0JLyogSVBFSFIgd291bGQgYmUgYW4gaWRlYWwgd2F5IHRv IGRldGVjdCBlcnJvcnMsIGFzIGl0J3MgdGhlIGdyb3NzCisJLyoKKwkgKiBJUEVIUiB3b3VsZCBi ZSBhbiBpZGVhbCB3YXkgdG8gZGV0ZWN0IGVycm9ycywgYXMgaXQncyB0aGUgZ3Jvc3MKIAkgKiBt ZWFzdXJlIG9mICJ0aGUgY29tbWFuZCB0aGF0IGh1bmcuIiBIb3dldmVyLCBoYXMgc29tZSB2ZXJ5 IGNvbW1vbgogCSAqIHN5bmNocm9uaXphdGlvbiBjb21tYW5kcyB3aGljaCBhbG1vc3QgYWx3YXlz IGFwcGVhciBpbiB0aGUgY2FzZQogCSAqIHN0cmljdGx5IGEgY2xpZW50IGJ1Zy4gVXNlIGluc3Rk b25lIHRvIGRpZmZlcmVudGlhdGUgdGhvc2Ugc29tZS4KIAkgKi8KLQlmb3IgKGkgPSAwOyBpIDwg STkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7Ci0JCWlmIChlcnJvci0+ZW5naW5lW2ldLmhhbmdjaGVj a19zdGFsbGVkKSB7Ci0JCQlpZiAoZW5naW5lX2lkKQotCQkJCSplbmdpbmVfaWQgPSBpOwotCi0J CQlyZXR1cm4gZXJyb3ItPmVuZ2luZVtpXS5pcGVociBeCi0JCQkgICAgICAgZXJyb3ItPmVuZ2lu ZVtpXS5pbnN0ZG9uZS5pbnN0ZG9uZTsKLQkJfQorCWlmIChlbmdpbmVfbWFzaykgeworCQlpbnQg aSA9IGZmcyhlbmdpbmVfbWFzayk7CisJCXJldHVybiBlcnJvci0+ZW5naW5lW2ldLmlwZWhyIF4K KwkJCWVycm9yLT5lbmdpbmVbaV0uaW5zdGRvbmUuaW5zdGRvbmU7CiAJfQogCi0JcmV0dXJuIGVy cm9yX2NvZGU7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbV9yZWNvcmRfZmVuY2Vz KHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCkBAIC0xMzM4LDkgKzEzMjgsOCBAQCBzdGF0 aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3Rh dGUgKmVycm9yLAogCX0KIAogCWVlLT5pZGxlID0gaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5l KTsKLQllZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcCA9IGVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90 aW1lc3RhbXA7Ci0JZWUtPmhhbmdjaGVja19hY3Rpb24gPSBlbmdpbmUtPmhhbmdjaGVjay5hY3Rp b247Ci0JZWUtPmhhbmdjaGVja19zdGFsbGVkID0gZW5naW5lLT5oYW5nY2hlY2suc3RhbGxlZDsK KwlpZiAoIWVlLT5pZGxlKQorCQllZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcCA9IGVuZ2luZS0+aGFu Z2NoZWNrLmFjdGlvbl90aW1lc3RhbXA7CiAJZWUtPnJlc2V0X2NvdW50ID0gaTkxNV9yZXNldF9l bmdpbmVfY291bnQoJmRldl9wcml2LT5ncHVfZXJyb3IsCiAJCQkJCQkgIGVuZ2luZSk7CiAKQEAg LTE3ODMsMzEgKzE3NzIsMzUgQEAgc3RhdGljIHZvaWQgY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0 IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKIAllcnJvci0+cGd0YmxfZXIgPSBJOTE1X1JFQUQoUEdU QkxfRVIpOwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUg KmVycm9yLAotCQkJCSAgIHUzMiBlbmdpbmVfbWFzaywKLQkJCQkgICBjb25zdCBjaGFyICplcnJv cl9tc2cpCitzdGF0aWMgY29uc3QgY2hhciAqCitlcnJvcl9tc2coc3RydWN0IGk5MTVfZ3B1X3N0 YXRlICplcnJvciwgdW5zaWduZWQgbG9uZyBlbmdpbmVzLCBjb25zdCBjaGFyICptc2cpCiB7Ci0J dTMyIGVjb2RlOwotCWludCBlbmdpbmVfaWQgPSAtMSwgbGVuOworCWludCBsZW47CisJaW50IGk7 CiAKLQllY29kZSA9IGk5MTVfZXJyb3JfZ2VuZXJhdGVfY29kZShkZXZfcHJpdiwgZXJyb3IsICZl bmdpbmVfaWQpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5lbmdpbmUpOyBp KyspCisJCWlmICghZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LnBpZCkKKwkJCWVuZ2luZXMgJj0g fkJJVChpKTsKIAogCWxlbiA9IHNjbnByaW50ZihlcnJvci0+ZXJyb3JfbXNnLCBzaXplb2YoZXJy b3ItPmVycm9yX21zZyksCi0JCQkiR1BVIEhBTkc6IGVjb2RlICVkOiVkOjB4JTA4eCIsCi0JCQlJ TlRFTF9HRU4oZGV2X3ByaXYpLCBlbmdpbmVfaWQsIGVjb2RlKTsKLQotCWlmIChlbmdpbmVfaWQg IT0gLTEgJiYgZXJyb3ItPmVuZ2luZVtlbmdpbmVfaWRdLmNvbnRleHQucGlkKQorCQkJIkdQVSBI QU5HOiBlY29kZSAlZDolbHg6MHglMDh4IiwKKwkJCUlOVEVMX0dFTihlcnJvci0+aTkxNSksIGVu Z2luZXMsCisJCQlpOTE1X2Vycm9yX2dlbmVyYXRlX2NvZGUoZXJyb3IsIGVuZ2luZXMpKTsKKwlp ZiAoZW5naW5lcykgeworCQkvKiBKdXN0IHNob3cgdGhlIGZpcnN0IGV4ZWN1dGluZyBwcm9jZXNz LCBtb3JlIGlzIGNvbmZ1c2luZyAqLworCQlpID0gZmZzKGVuZ2luZXMpOwogCQlsZW4gKz0gc2Nu cHJpbnRmKGVycm9yLT5lcnJvcl9tc2cgKyBsZW4sCiAJCQkJIHNpemVvZihlcnJvci0+ZXJyb3Jf bXNnKSAtIGxlbiwKIAkJCQkgIiwgaW4gJXMgWyVkXSIsCi0JCQkJIGVycm9yLT5lbmdpbmVbZW5n aW5lX2lkXS5jb250ZXh0LmNvbW0sCi0JCQkJIGVycm9yLT5lbmdpbmVbZW5naW5lX2lkXS5jb250 ZXh0LnBpZCk7CisJCQkJIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5jb21tLAorCQkJCSBlcnJv ci0+ZW5naW5lW2ldLmNvbnRleHQucGlkKTsKKwl9CisJaWYgKG1zZykKKwkJbGVuICs9IHNjbnBy aW50ZihlcnJvci0+ZXJyb3JfbXNnICsgbGVuLAorCQkJCSBzaXplb2YoZXJyb3ItPmVycm9yX21z ZykgLSBsZW4sCisJCQkJICIsICVzIiwgbXNnKTsKIAotCXNjbnByaW50ZihlcnJvci0+ZXJyb3Jf bXNnICsgbGVuLCBzaXplb2YoZXJyb3ItPmVycm9yX21zZykgLSBsZW4sCi0JCSAgIiwgcmVhc29u OiAlcywgYWN0aW9uOiAlcyIsCi0JCSAgZXJyb3JfbXNnLAotCQkgIGVuZ2luZV9tYXNrID8gInJl c2V0IiA6ICJjb250aW51ZSIpOworCXJldHVybiBlcnJvci0+ZXJyb3JfbXNnOwogfQogCiBzdGF0 aWMgdm9pZCBjYXB0dXJlX2dlbl9zdGF0ZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQpA QCAtMTg0Nyw3ICsxODQwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FwdHVyZV9maW5kX2Vw b2NoKGNvbnN0IHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCiAJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoZXJyb3ItPmVuZ2luZSk7IGkrKykgewogCQljb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3JfZW5naW5lICplZSA9ICZlcnJvci0+ZW5naW5lW2ldOwogCi0JCWlmIChlZS0+aGFu Z2NoZWNrX3N0YWxsZWQgJiYKKwkJaWYgKGVlLT5oYW5nY2hlY2tfdGltZXN0YW1wICYmCiAJCSAg ICB0aW1lX2JlZm9yZShlZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcCwgZXBvY2gpKQogCQkJZXBvY2gg PSBlZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcDsKIAl9CkBAIC0xOTIxLDcgKzE5MTQsNyBAQCBpOTE1 X2NhcHR1cmVfZ3B1X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogICogaTkx NV9jYXB0dXJlX2Vycm9yX3N0YXRlIC0gY2FwdHVyZSBhbiBlcnJvciByZWNvcmQgZm9yIGxhdGVy IGFuYWx5c2lzCiAgKiBAaTkxNTogaTkxNSBkZXZpY2UKICAqIEBlbmdpbmVfbWFzazogdGhlIG1h c2sgb2YgZW5naW5lcyB0cmlnZ2VyaW5nIHRoZSBoYW5nCi0gKiBAZXJyb3JfbXNnOiBhIG1lc3Nh Z2UgdG8gaW5zZXJ0IGludG8gdGhlIGVycm9yIGNhcHR1cmUgaGVhZGVyCisgKiBAbXNnOiBhIG1l c3NhZ2UgdG8gaW5zZXJ0IGludG8gdGhlIGVycm9yIGNhcHR1cmUgaGVhZGVyCiAgKgogICogU2hv dWxkIGJlIGNhbGxlZCB3aGVuIGFuIGVycm9yIGlzIGRldGVjdGVkIChlaXRoZXIgYSBoYW5nIG9y IGFuIGVycm9yCiAgKiBpbnRlcnJ1cHQpIHRvIGNhcHR1cmUgZXJyb3Igc3RhdGUgZnJvbSB0aGUg dGltZSBvZiB0aGUgZXJyb3IuICBGaWxscwpAQCAtMTkyOSw4ICsxOTIyLDggQEAgaTkxNV9jYXB0 dXJlX2dwdV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKICAqIHRvIHBpY2sg dXAuCiAgKi8KIHZvaWQgaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAotCQkJICAgICAgdTMyIGVuZ2luZV9tYXNrLAotCQkJICAgICAgY29uc3Qg Y2hhciAqZXJyb3JfbXNnKQorCQkJICAgICAgdW5zaWduZWQgbG9uZyBlbmdpbmVfbWFzaywKKwkJ CSAgICAgIGNvbnN0IGNoYXIgKm1zZykKIHsKIAlzdGF0aWMgYm9vbCB3YXJuZWQ7CiAJc3RydWN0 IGk5MTVfZ3B1X3N0YXRlICplcnJvcjsKQEAgLTE5NDYsOCArMTkzOSw3IEBAIHZvaWQgaTkxNV9j YXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWlmIChJ U19FUlIoZXJyb3IpKQogCQlyZXR1cm47CiAKLQlpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKGk5MTUs IGVycm9yLCBlbmdpbmVfbWFzaywgZXJyb3JfbXNnKTsKLQlEUk1fSU5GTygiJXNcbiIsIGVycm9y LT5lcnJvcl9tc2cpOworCWRldl9pbmZvKGk5MTUtPmRybS5kZXYsICIlc1xuIiwgZXJyb3JfbXNn KGVycm9yLCBlbmdpbmVfbWFzaywgbXNnKSk7CiAKIAlpZiAoIWVycm9yLT5zaW11bGF0ZWQpIHsK IAkJc3Bpbl9sb2NrX2lycXNhdmUoJmk5MTUtPmdwdV9lcnJvci5sb2NrLCBmbGFncyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAppbmRleCA2MDQyOTFmNzc2MmQuLjIzMTE3Mzc4 NmVhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCkBAIC04NSw4ICs4NSw2 IEBAIHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSB7CiAJCWJvb2wgd2FpdGluZzsKIAkJaW50IG51bV93 YWl0ZXJzOwogCQl1bnNpZ25lZCBsb25nIGhhbmdjaGVja190aW1lc3RhbXA7Ci0JCWJvb2wgaGFu Z2NoZWNrX3N0YWxsZWQ7Ci0JCWVudW0gaW50ZWxfZW5naW5lX2hhbmdjaGVja19hY3Rpb24gaGFu Z2NoZWNrX2FjdGlvbjsKIAkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07CiAJCWludCBu dW1fcmVxdWVzdHM7CiAJCXUzMiByZXNldF9jb3VudDsKQEAgLTE5Nyw2ICsxOTUsOCBAQCBzdHJ1 Y3QgaTkxNV9ncHVfc3RhdGUgewogCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCAqZml0OwogfTsK IAorc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQ7CisKIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAJ LyogRm9yIGhhbmdjaGVjayB0aW1lciAqLwogI2RlZmluZSBEUk1fSTkxNV9IQU5HQ0hFQ0tfUEVS SU9EIDE1MDAgLyogaW4gbXMgKi8KQEAgLTI0NywxNSArMjQ3LDYgQEAgc3RydWN0IGk5MTVfZ3B1 X2Vycm9yIHsKIAkgKiBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgpPykuIEk5MTVfUkVT RVRfQkFDS09GRiBzZXJ2ZXMgYQogCSAqIHNlY29uZGFyeSByb2xlIGluIHByZXZlbnRpbmcgdHdv IGNvbmN1cnJlbnQgZ2xvYmFsIHJlc2V0IGF0dGVtcHRzLgogCSAqCi0JICogI0k5MTVfUkVTRVRf SEFORE9GRiAtIFRvIHBlcmZvcm0gdGhlIGFjdHVhbCBHUFUgcmVzZXQsIHdlIG5lZWQgdGhlCi0J ICogc3RydWN0X211dGV4LiBXZSB0cnkgdG8gYWNxdWlyZSB0aGUgc3RydWN0X211dGV4IGluIHRo ZSByZXNldCB3b3JrZXIsCi0JICogYnV0IGl0IG1heSBiZSBoZWxkIGJ5IHNvbWUgbG9uZyBydW5u aW5nIHdhaXRlciAodGhhdCB3ZSBjYW5ub3QKLQkgKiBpbnRlcnJ1cHQgd2l0aG91dCBjYXVzaW5n IHRyb3VibGUpLiBPbmNlIHdlIGFyZSByZWFkeSB0byBkbyB0aGUgR1BVCi0JICogcmVzZXQsIHdl IHNldCB0aGUgSTkxNV9SRVNFVF9IQU5ET0ZGIGJpdCBhbmQgd2FrZXVwIGFueSB3YWl0ZXJzLiBJ ZgotCSAqIHRoZXkgYWxyZWFkeSBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXggYW5kIHdhbnQgdG8gcGFy dGljaXBhdGUgdGhleSBjYW4KLQkgKiBpbnNwZWN0IHRoZSBiaXQgYW5kIGRvIHRoZSByZXNldCBk aXJlY3RseSwgb3RoZXJ3aXNlIHRoZSB3b3JrZXIKLQkgKiB3YWl0cyBmb3IgdGhlIHN0cnVjdF9t dXRleC4KLQkgKgogCSAqICNJOTE1X1JFU0VUX0VOR0lORVtudW1fZW5naW5lc10gLSBTaW5jZSB0 aGUgZHJpdmVyIGRvZXNuJ3QgbmVlZCB0bwogCSAqIGFjcXVpcmUgdGhlIHN0cnVjdF9tdXRleCB0 byByZXNldCBhbiBlbmdpbmUsIHdlIG5lZWQgYW4gZXhwbGljaXQKIAkgKiBmbGFnIHRvIHByZXZl bnQgdHdvIGNvbmN1cnJlbnQgcmVzZXQgYXR0ZW1wdHMgaW4gdGhlIHNhbWUgZW5naW5lLgpAQCAt MjY5LDIwICsyNjAsMTMgQEAgc3RydWN0IGk5MTVfZ3B1X2Vycm9yIHsKIAkgKi8KIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwogI2RlZmluZSBJOTE1X1JFU0VUX0JBQ0tPRkYJMAotI2RlZmluZSBJOTE1 X1JFU0VUX0hBTkRPRkYJMQotI2RlZmluZSBJOTE1X1JFU0VUX01PREVTRVQJMgotI2RlZmluZSBJ OTE1X1JFU0VUX0VOR0lORQkzCisjZGVmaW5lIEk5MTVfUkVTRVRfTU9ERVNFVAkxCisjZGVmaW5l IEk5MTVfUkVTRVRfRU5HSU5FCTIKICNkZWZpbmUgSTkxNV9XRURHRUQJCShCSVRTX1BFUl9MT05H IC0gMSkKIAogCS8qKiBOdW1iZXIgb2YgdGltZXMgYW4gZW5naW5lIGhhcyBiZWVuIHJlc2V0ICov CiAJdTMyIHJlc2V0X2VuZ2luZV9jb3VudFtJOTE1X05VTV9FTkdJTkVTXTsKIAotCS8qKiBTZXQg b2Ygc3RhbGxlZCBlbmdpbmVzIHdpdGggZ3VpbHR5IHJlcXVlc3RzLCBpbiB0aGUgY3VycmVudCBy ZXNldCAqLwotCXUzMiBzdGFsbGVkX21hc2s7Ci0KLQkvKiogUmVhc29uIGZvciB0aGUgY3VycmVu dCAqZ2xvYmFsKiByZXNldCAqLwotCWNvbnN0IGNoYXIgKnJlYXNvbjsKLQogCXN0cnVjdCBtdXRl eCB3ZWRnZV9tdXRleDsgLyogc2VyaWFsaXNlcyB3ZWRnaW5nL3Vud2VkZ2luZyAqLwogCiAJLyoq CkBAIC0yOTksNiArMjgzLDggQEAgc3RydWN0IGk5MTVfZ3B1X2Vycm9yIHsKIAogCS8qIEZvciBt aXNzZWQgaXJxL3NlcW5vIHNpbXVsYXRpb24uICovCiAJdW5zaWduZWQgbG9uZyB0ZXN0X2lycV9y aW5nczsKKworCXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICpyZXN0YXJ0OwogfTsKIAogc3RydWN0 IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiB7CkBAIC0zMjAsNyArMzA2LDcgQEAgdm9pZCBpOTE1 X2Vycm9yX3ByaW50ZihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLCBjb25zdCBj aGFyICpmLCAuLi4pOwogCiBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmk5MTVfY2FwdHVyZV9ncHVf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBpOTE1X2NhcHR1cmVf ZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICAg dTMyIGVuZ2luZV9tYXNrLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBlbmdpbmVfbWFzaywKIAkJ CSAgICAgIGNvbnN0IGNoYXIgKmVycm9yX21zZyk7CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5 MTVfZ3B1X3N0YXRlICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKaW5kZXggNTQwM2Q0 ZTJjZWUwLi5mYjcyM2VkMmY1NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCkBA IC0xMDc2LDE4ICsxMDc2LDYgQEAgc3RhdGljIGJvb2wgX19pOTE1X3NwaW5fcmVxdWVzdChjb25z dCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBi b29sIF9faTkxNV93YWl0X3JlcXVlc3RfY2hlY2tfYW5kX3Jlc2V0KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJlcXVlc3QpCi17Ci0Jc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZyZXF1ZXN0 LT5pOTE1LT5ncHVfZXJyb3I7Ci0KLQlpZiAobGlrZWx5KCFpOTE1X3Jlc2V0X2hhbmRvZmYoZXJy b3IpKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5J TkcpOwotCWk5MTVfcmVzZXQocmVxdWVzdC0+aTkxNSwgZXJyb3ItPnN0YWxsZWRfbWFzaywgZXJy b3ItPnJlYXNvbik7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KIC8qKgogICogaTkxNV9yZXF1ZXN0X3dh aXQgLSB3YWl0IHVudGlsIGV4ZWN1dGlvbiBvZiByZXF1ZXN0IGhhcyBmaW5pc2hlZAogICogQHJx OiB0aGUgcmVxdWVzdCB0byB3YWl0IHVwb24KQEAgLTExMTMsMTcgKzExMDEsMTAgQEAgbG9uZyBp OTE1X3JlcXVlc3Rfd2FpdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIHsKIAljb25zdCBpbnQg c3RhdGUgPSBmbGFncyAmIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFID8KIAkJVEFTS19JTlRFUlJV UFRJQkxFIDogVEFTS19VTklOVEVSUlVQVElCTEU7Ci0Jd2FpdF9xdWV1ZV9oZWFkX3QgKmVycnEg PSAmcnEtPmk5MTUtPmdwdV9lcnJvci53YWl0X3F1ZXVlOwotCURFRklORV9XQUlUX0ZVTkMocmVz ZXQsIGRlZmF1bHRfd2FrZV9mdW5jdGlvbik7CiAJREVGSU5FX1dBSVRfRlVOQyhleGVjLCBkZWZh dWx0X3dha2VfZnVuY3Rpb24pOwogCXN0cnVjdCBpbnRlbF93YWl0IHdhaXQ7CiAKIAltaWdodF9z bGVlcCgpOwotI2lmIElTX0VOQUJMRUQoQ09ORklHX0xPQ0tERVApCi0JR0VNX0JVR19PTihkZWJ1 Z19sb2NrcyAmJgotCQkgICAhIWxvY2tkZXBfaXNfaGVsZCgmcnEtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpICE9Ci0JCSAgICEhKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkpOwotI2VuZGlmCiAJ R0VNX0JVR19PTih0aW1lb3V0IDwgMCk7CiAKIAlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChy cSkpCkBAIC0xMTMzLDExICsxMTE0LDcgQEAgbG9uZyBpOTE1X3JlcXVlc3Rfd2FpdChzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSwKIAkJcmV0dXJuIC1FVElNRTsKIAogCXRyYWNlX2k5MTVfcmVxdWVz dF93YWl0X2JlZ2luKHJxLCBmbGFncyk7Ci0KIAlhZGRfd2FpdF9xdWV1ZSgmcnEtPmV4ZWN1dGUs ICZleGVjKTsKLQlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKQotCQlhZGRfd2FpdF9xdWV1 ZShlcnJxLCAmcmVzZXQpOwotCiAJaW50ZWxfd2FpdF9pbml0KCZ3YWl0KTsKIAlpZiAoZmxhZ3Mg JiBJOTE1X1dBSVRfUFJJT1JJVFkpCiAJCWk5MTVfc2NoZWR1bGVfYnVtcF9wcmlvcml0eShycSwg STkxNV9QUklPUklUWV9XQUlUKTsKQEAgLTExNDgsMTAgKzExMjUsNiBAQCBsb25nIGk5MTVfcmVx dWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQlpZiAoaW50ZWxfd2FpdF91cGRh dGVfcmVxdWVzdCgmd2FpdCwgcnEpKQogCQkJYnJlYWs7CiAKLQkJaWYgKGZsYWdzICYgSTkxNV9X QUlUX0xPQ0tFRCAmJgotCQkgICAgX19pOTE1X3dhaXRfcmVxdWVzdF9jaGVja19hbmRfcmVzZXQo cnEpKQotCQkJY29udGludWU7Ci0KIAkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRlKHN0YXRlLCBj dXJyZW50KSkgewogCQkJdGltZW91dCA9IC1FUkVTVEFSVFNZUzsKIAkJCWdvdG8gY29tcGxldGU7 CkBAIC0xMTgxLDkgKzExNTQsNiBAQCBsb25nIGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLAogCQkgKi8KIAkJZ290byB3YWtldXA7CiAKLQlpZiAoZmxhZ3MgJiBJOTE1 X1dBSVRfTE9DS0VEKQotCQlfX2k5MTVfd2FpdF9yZXF1ZXN0X2NoZWNrX2FuZF9yZXNldChycSk7 Ci0KIAlmb3IgKDs7KSB7CiAJCWlmIChzaWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgY3VycmVu dCkpIHsKIAkJCXRpbWVvdXQgPSAtRVJFU1RBUlRTWVM7CkBAIC0xMjA3LDIxICsxMTc3LDYgQEAg bG9uZyBpOTE1X3JlcXVlc3Rfd2FpdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAkJaWYgKGk5 MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQogCQkJYnJlYWs7CiAKLQkJLyoKLQkJICogSWYgdGhl IEdQVSBpcyBodW5nLCBhbmQgd2UgaG9sZCB0aGUgbG9jaywgcmVzZXQgdGhlIEdQVQotCQkgKiBh bmQgdGhlbiBjaGVjayBmb3IgY29tcGxldGlvbi4gT24gYSBmdWxsIHJlc2V0LCB0aGUgZW5naW5l J3MKLQkJICogSFcgc2Vxbm8gd2lsbCBiZSBhZHZhbmNlZCBwYXNzZWQgdXMgYW5kIHdlIGFyZSBj b21wbGV0ZS4KLQkJICogSWYgd2UgZG8gYSBwYXJ0aWFsIHJlc2V0LCB3ZSBoYXZlIHRvIHdhaXQg Zm9yIHRoZSBHUFUgdG8KLQkJICogcmVzdW1lIGFuZCB1cGRhdGUgdGhlIGJyZWFkY3J1bWIuCi0J CSAqCi0JCSAqIElmIHdlIGRvbid0IGhvbGQgdGhlIG11dGV4LCB3ZSBjYW4ganVzdCB3YWl0IGZv ciB0aGUgd29ya2VyCi0JCSAqIHRvIGNvbWUgYWxvbmcgYW5kIHVwZGF0ZSB0aGUgYnJlYWRjcnVt YiAoZWl0aGVyIGRpcmVjdGx5Ci0JCSAqIGl0c2VsZiwgb3IgaW5kaXJlY3RseSBieSByZWNvdmVy aW5nIHRoZSBHUFUpLgotCQkgKi8KLQkJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCAmJgot CQkgICAgX19pOTE1X3dhaXRfcmVxdWVzdF9jaGVja19hbmRfcmVzZXQocnEpKQotCQkJY29udGlu dWU7Ci0KIAkJLyogT25seSBzcGluIGlmIHdlIGtub3cgdGhlIEdQVSBpcyBwcm9jZXNzaW5nIHRo aXMgcmVxdWVzdCAqLwogCQlpZiAoX19pOTE1X3NwaW5fcmVxdWVzdChycSwgd2FpdC5zZXFubywg c3RhdGUsIDIpKQogCQkJYnJlYWs7CkBAIC0xMjM1LDggKzExOTAsNiBAQCBsb25nIGk5MTVfcmVx dWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCWludGVsX2VuZ2luZV9yZW1vdmVf d2FpdChycS0+ZW5naW5lLCAmd2FpdCk7CiBjb21wbGV0ZToKIAlfX3NldF9jdXJyZW50X3N0YXRl KFRBU0tfUlVOTklORyk7Ci0JaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkKLQkJcmVtb3Zl X3dhaXRfcXVldWUoZXJycSwgJnJlc2V0KTsKIAlyZW1vdmVfd2FpdF9xdWV1ZSgmcnEtPmV4ZWN1 dGUsICZleGVjKTsKIAl0cmFjZV9pOTE1X3JlcXVlc3Rfd2FpdF9lbmQocnEpOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3Jlc2V0LmMKaW5kZXggMjk2MWMyMWQ5NDIwLi4wNjRmYzZkYTE1MTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKQEAgLTUsNiArNSw3IEBACiAgKi8KIAogI2luY2x1ZGUg PGxpbnV4L3NjaGVkL21tLmg+CisjaW5jbHVkZSA8bGludXgvc3RvcF9tYWNoaW5lLmg+CiAKICNp bmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfZ3B1X2Vycm9yLmgiCkBAIC0xNywy MiArMTgsMjMgQEAgc3RhdGljIHZvaWQgZW5naW5lX3NraXBfY29udGV4dChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5l OwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpodW5nX2N0eCA9IHJxLT5nZW1fY29udGV4dDsK IAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUgPSBycS0+dGltZWxpbmU7Ci0JdW5zaWdu ZWQgbG9uZyBmbGFnczsKIAorCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+dGltZWxpbmUu bG9jayk7CiAJR0VNX0JVR19PTih0aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7CiAKLQlz cGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CiAJc3Bpbl9s b2NrKCZ0aW1lbGluZS0+bG9jayk7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJx LCAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykKLQkJaWYgKHJxLT5nZW1fY29udGV4 dCA9PSBodW5nX2N0eCkKLQkJCWk5MTVfcmVxdWVzdF9za2lwKHJxLCAtRUlPKTsKKwlpZiAocnEt Pmdsb2JhbF9zZXFubykgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJxLAorCQkJ CQkgICAgICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKQorCQkJaWYgKHJxLT5nZW1f Y29udGV4dCA9PSBodW5nX2N0eCkKKwkJCQlpOTE1X3JlcXVlc3Rfc2tpcChycSwgLUVJTyk7CisJ fQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykK IAkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIC1FSU8pOwogCiAJc3Bpbl91bmxvY2soJnRpbWVsaW5l LT5sb2NrKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ss IGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgY2xpZW50X21hcmtfZ3VpbHR5KHN0cnVjdCBkcm1f aTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiwKQEAgLTU5LDcgKzYxLDcgQEAgc3RhdGljIHZv aWQgY2xpZW50X21hcmtfZ3VpbHR5KHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVf cHJpdiwKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRleHRfbWFya19ndWlsdHkoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3N0YXRpYyBib29sIGNvbnRleHRfbWFya19ndWlsdHkoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIHsKIAl1bnNpZ25lZCBpbnQgc2NvcmU7CiAJYm9v bCBiYW5uZWQsIGJhbm5hYmxlOwpAQCAtNzIsNyArNzQsNyBAQCBzdGF0aWMgdm9pZCBjb250ZXh0 X21hcmtfZ3VpbHR5KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAKIAkvKiBDb29sIGNv bnRleHRzIGRvbid0IGFjY3VtdWxhdGUgY2xpZW50IGJhbiBzY29yZSAqLwogCWlmICghYmFubmFi bGUpCi0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKGJhbm5lZCkgewogCQlEUk1f REVCVUdfRFJJVkVSKCJjb250ZXh0ICVzOiBndWlsdHkgJWQsIHNjb3JlICV1LCBiYW5uZWRcbiIs CkBAIC04Myw2ICs4NSw4IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfbWFya19ndWlsdHkoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIAogCWlmICghSVNfRVJSX09SX05VTEwoY3R4LT5maWxl X3ByaXYpKQogCQljbGllbnRfbWFya19ndWlsdHkoY3R4LT5maWxlX3ByaXYsIGN0eCk7CisKKwly ZXR1cm4gYmFubmVkOwogfQogCiBzdGF0aWMgdm9pZCBjb250ZXh0X21hcmtfaW5ub2NlbnQoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKQEAgLTkwLDYgKzk0LDIxIEBAIHN0YXRpYyB2b2lk IGNvbnRleHRfbWFya19pbm5vY2VudChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCWF0 b21pY19pbmMoJmN0eC0+YWN0aXZlX2NvdW50KTsKIH0KIAordm9pZCBpOTE1X3Jlc2V0X3JlcXVl c3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGJvb2wgZ3VpbHR5KQoreworCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJnJxLT5lbmdpbmUtPnRpbWVsaW5lLmxvY2spOworCUdFTV9CVUdfT04oaTkxNV9y ZXF1ZXN0X2NvbXBsZXRlZChycSkpOworCisJaWYgKGd1aWx0eSkgeworCQlpOTE1X3JlcXVlc3Rf c2tpcChycSwgLUVJTyk7CisJCWlmIChjb250ZXh0X21hcmtfZ3VpbHR5KHJxLT5nZW1fY29udGV4 dCkpCisJCQllbmdpbmVfc2tpcF9jb250ZXh0KHJxKTsKKwl9IGVsc2UgeworCQlkbWFfZmVuY2Vf c2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FQUdBSU4pOworCQljb250ZXh0X21hcmtfaW5ub2NlbnQo cnEtPmdlbV9jb250ZXh0KTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIGdlbjNfc3RvcF9lbmdpbmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKQEAgLTUzMywyMiArNTUyLDYgQEAgaW50IGlu dGVsX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50 IGVuZ2luZV9tYXNrKQogCWludCByZXRyeTsKIAlpbnQgcmV0OwogCi0JLyoKLQkgKiBXZSB3YW50 IHRvIHBlcmZvcm0gcGVyLWVuZ2luZSByZXNldCBmcm9tIGF0b21pYyBjb250ZXh0IChlLmcuCi0J ICogc29mdGlycSksIHdoaWNoIGltcG9zZXMgdGhlIGNvbnN0cmFpbnQgdGhhdCB3ZSBjYW5ub3Qg c2xlZXAuCi0JICogSG93ZXZlciwgZXhwZXJpZW5jZSBzdWdnZXN0cyB0aGF0IHNwZW5kaW5nIGEg Yml0IG9mIHRpbWUgd2FpdGluZwotCSAqIGZvciBhIHJlc2V0IGhlbHBzIGluIHZhcmlvdXMgY2Fz ZXMsIHNvIGZvciBhIGZ1bGwtZGV2aWNlIHJlc2V0Ci0JICogd2UgYXBwbHkgdGhlIG9wcG9zaXRl IHJ1bGUgYW5kIHdhaXQgaWYgd2Ugd2FudCB0by4gQXMgd2Ugc2hvdWxkCi0JICogYWx3YXlzIGZv bGxvdyB1cCBhIGZhaWxlZCBwZXItZW5naW5lIHJlc2V0IHdpdGggYSBmdWxsIGRldmljZSByZXNl dCwKLQkgKiBiZWluZyBhIGxpdHRsZSBmYXN0ZXIsIHN0cmljdGVyIGFuZCBtb3JlIGVycm9yIHBy b25lIGZvciB0aGUKLQkgKiBhdG9taWMgY2FzZSBzZWVtcyBhbiBhY2NlcHRhYmxlIGNvbXByb21p c2UuCi0JICoKLQkgKiBVbmZvcnR1bmF0ZWx5IHRoaXMgbGVhZHMgdG8gYSBiaW1vZGFsIHJvdXRp bmUsIHdoZW4gdGhlIGdvYWwgd2FzCi0JICogdG8gaGF2ZSBhIHNpbmdsZSByZXNldCBmdW5jdGlv biB0aGF0IHdvcmtlZCBmb3IgcmVzZXR0aW5nIGFueQotCSAqIG51bWJlciBvZiBlbmdpbmVzIHNp bXVsdGFuZW91c2x5LgotCSAqLwotCW1pZ2h0X3NsZWVwX2lmKGVuZ2luZV9tYXNrID09IEFMTF9F TkdJTkVTKTsKLQogCS8qCiAJICogSWYgdGhlIHBvd2VyIHdlbGwgc2xlZXBzIGR1cmluZyB0aGUg cmVzZXQsIHRoZSByZXNldAogCSAqIHJlcXVlc3QgbWF5IGJlIGRyb3BwZWQgYW5kIG5ldmVyIGNv bXBsZXRlcyAoY2F1c2luZyAtRUlPKS4KQEAgLTU4MCw4ICs1ODMsNiBAQCBpbnQgaW50ZWxfZ3B1 X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgZW5naW5l X21hc2spCiAJCX0KIAkJaWYgKHJldCAhPSAtRVRJTUVET1VUIHx8IGVuZ2luZV9tYXNrICE9IEFM TF9FTkdJTkVTKQogCQkJYnJlYWs7Ci0KLQkJY29uZF9yZXNjaGVkKCk7CiAJfQogCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KGk5MTUsIEZPUkNFV0FLRV9BTEwpOwogCkBAIC02MjAsMTEgKzYy MSw4IEBAIGludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CiAgKiBFbnN1cmUgaXJxIGhhbmRsZXIgZmluaXNoZXMsIGFuZCBub3QgcnVuIGFnYWluLgogICog QWxzbyByZXR1cm4gdGhlIGFjdGl2ZSByZXF1ZXN0IHNvIHRoYXQgd2Ugb25seSBzZWFyY2ggZm9y IGl0IG9uY2UuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKLXJlc2V0X3ByZXBh cmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyB2b2lkIHJl c2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKLQogCS8qCiAJICogRHVyaW5nIHRoZSByZXNldCBzZXF1 ZW5jZSwgd2UgbXVzdCBwcmV2ZW50IHRoZSBlbmdpbmUgZnJvbQogCSAqIGVudGVyaW5nIFJDNi4g QXMgdGhlIGNvbnRleHQgc3RhdGUgaXMgdW5kZWZpbmVkIHVudGlsIHdlIHJlc3RhcnQKQEAgLTYz MywxNjIgKzYzMSw4NiBAQCByZXNldF9wcmVwYXJlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJICogR1BVIHN0YXRlIHVwb24gcmVzdW1lLCBpLmUuIGZhaWwgdG8gcmVz dGFydCBhZnRlciBhIHJlc2V0LgogCSAqLwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGVu Z2luZS0+aTkxNSwgRk9SQ0VXQUtFX0FMTCk7Ci0KLQlycSA9IGVuZ2luZS0+cmVzZXQucHJlcGFy ZShlbmdpbmUpOwotCWlmIChycSAmJiBycS0+ZmVuY2UuZXJyb3IgPT0gLUVJTykKLQkJcnEgPSBF UlJfUFRSKC1FSU8pOyAvKiBQcmV2aW91cyByZXNldCBmYWlsZWQhICovCi0KLQlyZXR1cm4gcnE7 CisJZW5naW5lLT5yZXNldC5wcmVwYXJlKGVuZ2luZSk7CiB9CiAKLXN0YXRpYyBpbnQgcmVzZXRf cHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3N0YXRpYyB2b2lkIHJlc2V0 X3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lOwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCWVudW0gaW50 ZWxfZW5naW5lX2lkIGlkOwotCWludCBlcnIgPSAwOwogCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2lu ZSwgaTkxNSwgaWQpIHsKLQkJcnEgPSByZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpOwotCQlp ZiAoSVNfRVJSKHJxKSkgewotCQkJZXJyID0gUFRSX0VSUihycSk7Ci0JCQljb250aW51ZTsKLQkJ fQotCi0JCWVuZ2luZS0+aGFuZ2NoZWNrLmFjdGl2ZV9yZXF1ZXN0ID0gcnE7Ci0JfQorCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQorCQlyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdp bmUpOwogCi0JaTkxNV9nZW1fcmV2b2tlX2ZlbmNlcyhpOTE1KTsKIAlpbnRlbF91Y19zYW5pdGl6 ZShpOTE1KTsKLQotCXJldHVybiBlcnI7CiB9CiAKLS8qIFJldHVybnMgdGhlIHJlcXVlc3QgaWYg aXQgd2FzIGd1aWx0eSBvZiB0aGUgaGFuZyAqLwotc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KgotcmVzZXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JICAgICAg c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCi0JICAgICAgYm9vbCBzdGFsbGVkKQorc3RhdGljIGlu dCBndF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IHN0 YWxsZWRfbWFzaykKIHsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50IGVycjsKKwogCS8qCi0JICogVGhlIGd1aWx0eSByZXF1 ZXN0IHdpbGwgZ2V0IHNraXBwZWQgb24gYSBodW5nIGVuZ2luZS4KLQkgKgotCSAqIFVzZXJzIG9m IGNsaWVudCBkZWZhdWx0IGNvbnRleHRzIGRvIG5vdCByZWx5IG9uIGxvZ2ljYWwKLQkgKiBzdGF0 ZSBwcmVzZXJ2ZWQgYmV0d2VlbiBiYXRjaGVzIHNvIGl0IGlzIHNhZmUgdG8gZXhlY3V0ZQotCSAq IHF1ZXVlZCByZXF1ZXN0cyBmb2xsb3dpbmcgdGhlIGhhbmcuIE5vbiBkZWZhdWx0IGNvbnRleHRz Ci0JICogcmVseSBvbiBwcmVzZXJ2ZWQgc3RhdGUsIHNvIHNraXBwaW5nIGEgYmF0Y2ggbG9zZXMg dGhlCi0JICogZXZvbHV0aW9uIG9mIHRoZSBzdGF0ZSBhbmQgaXQgbmVlZHMgdG8gYmUgY29uc2lk ZXJlZCBjb3JydXB0ZWQuCi0JICogRXhlY3V0aW5nIG1vcmUgcXVldWVkIGJhdGNoZXMgb24gdG9w IG9mIGNvcnJ1cHRlZCBzdGF0ZSBpcwotCSAqIHJpc2t5LiBCdXQgd2UgdGFrZSB0aGUgcmlzayBi eSB0cnlpbmcgdG8gYWR2YW5jZSB0aHJvdWdoCi0JICogdGhlIHF1ZXVlZCByZXF1ZXN0cyBpbiBv cmRlciB0byBtYWtlIHRoZSBjbGllbnQgYmVoYXZpb3VyCi0JICogbW9yZSBwcmVkaWN0YWJsZSBh cm91bmQgcmVzZXRzLCBieSBub3QgdGhyb3dpbmcgYXdheSByYW5kb20KLQkgKiBhbW91bnQgb2Yg YmF0Y2hlcyBpdCBoYXMgcHJlcGFyZWQgZm9yIGV4ZWN1dGlvbi4gU29waGlzdGljYXRlZAotCSAq IGNsaWVudHMgY2FuIHVzZSBnZW1fcmVzZXRfc3RhdHNfaW9jdGwgYW5kIGRtYSBmZW5jZSBzdGF0 dXMKLQkgKiAoZXhwb3J0ZWQgdmlhIHN5bmNfZmlsZSBpbmZvIGlvY3RsIG9uIGV4cGxpY2l0IGZl bmNlcykgdG8gb2JzZXJ2ZQotCSAqIHdoZW4gaXQgbG9zZXMgdGhlIGNvbnRleHQgc3RhdGUgYW5k IHNob3VsZCByZWJ1aWxkIGFjY29yZGluZ2x5LgotCSAqCi0JICogVGhlIGNvbnRleHQgYmFuLCBh bmQgdWx0aW1hdGVseSB0aGUgY2xpZW50IGJhbiwgbWVjaGFuaXNtIGFyZSBzYWZldHkKLQkgKiB2 YWx2ZXMgaWYgY2xpZW50IHN1Ym1pc3Npb24gZW5kcyB1cCByZXN1bHRpbmcgaW4gbm90aGluZyBt b3JlIHRoYW4KLQkgKiBzdWJzZXF1ZW50IGhhbmdzLgorCSAqIEV2ZXJ5dGhpbmcgZGVwZW5kcyBv biBoYXZpbmcgdGhlIEdUVCBydW5uaW5nLCBzbyB3ZSBuZWVkIHRvIHN0YXJ0CisJICogdGhlcmUu CiAJICovCisJZXJyID0gaTkxNV9nZ3R0X2VuYWJsZV9odyhpOTE1KTsKKwlpZiAoZXJyKQorCQly ZXR1cm4gZXJyOwogCi0JaWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7Ci0JCUdFTV9U UkFDRSgiJXMgcGFyZG9uZWQgZ2xvYmFsPSVkIChmZW5jZSAlbGx4OiVsbGQpLCBjdXJyZW50ICVk XG4iLAotCQkJICBlbmdpbmUtPm5hbWUsIHJxLT5nbG9iYWxfc2Vxbm8sCi0JCQkgIHJxLT5mZW5j ZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8sCi0JCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8o ZW5naW5lKSk7Ci0JCXN0YWxsZWQgPSBmYWxzZTsKLQl9Ci0KLQlpZiAoc3RhbGxlZCkgewotCQlj b250ZXh0X21hcmtfZ3VpbHR5KHJxLT5nZW1fY29udGV4dCk7Ci0JCWk5MTVfcmVxdWVzdF9za2lw KHJxLCAtRUlPKTsKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKKwkJaW50ZWxf ZW5naW5lX3Jlc2V0KGVuZ2luZSwgc3RhbGxlZF9tYXNrICYgRU5HSU5FX01BU0soaWQpKTsKIAot CQkvKiBJZiB0aGlzIGNvbnRleHQgaXMgbm93IGJhbm5lZCwgc2tpcCBhbGwgcGVuZGluZyByZXF1 ZXN0cy4gKi8KLQkJaWYgKGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFubmVkKHJxLT5nZW1fY29udGV4 dCkpCi0JCQllbmdpbmVfc2tpcF9jb250ZXh0KHJxKTsKLQl9IGVsc2UgewotCQkvKgotCQkgKiBT aW5jZSB0aGlzIGlzIG5vdCB0aGUgaHVuZyBlbmdpbmUsIGl0IG1heSBoYXZlIGFkdmFuY2VkCi0J CSAqIHNpbmNlIHRoZSBoYW5nIGRlY2xhcmF0aW9uLiBEb3VibGUgY2hlY2sgYnkgcmVmaW5kaW5n Ci0JCSAqIHRoZSBhY3RpdmUgcmVxdWVzdCBhdCB0aGUgdGltZSBvZiB0aGUgcmVzZXQuCi0JCSAq LwotCQlycSA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3QoZW5naW5lKTsKLQkJaWYgKHJx KSB7Ci0JCQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0JCQljb250ZXh0X21hcmtfaW5ub2NlbnQo cnEtPmdlbV9jb250ZXh0KTsKLQkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJxLT5mZW5jZSwgLUVB R0FJTik7Ci0KLQkJCS8qIFJld2luZCB0aGUgZW5naW5lIHRvIHJlcGxheSB0aGUgaW5jb21wbGV0 ZSBycSAqLwotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxh Z3MpOwotCQkJcnEgPSBsaXN0X3ByZXZfZW50cnkocnEsIGxpbmspOwotCQkJaWYgKCZycS0+bGlu ayA9PSAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cykKLQkJCQlycSA9IE5VTEw7Ci0JCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKLQkJfQot CX0KKwlpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhpOTE1KTsKIAotCXJldHVybiBycTsKKwlyZXR1 cm4gZXJyOwogfQogCi1zdGF0aWMgdm9pZCByZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAotCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAotCQkJIGJvb2wgc3Rh bGxlZCkKK3N0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogewotCWlmIChycSkKLQkJcnEgPSByZXNldF9yZXF1ZXN0KGVuZ2luZSwg cnEsIHN0YWxsZWQpOwotCi0JLyogU2V0dXAgdGhlIENTIHRvIHJlc3VtZSBmcm9tIHRoZSBicmVh ZGNydW1iIG9mIHRoZSBodW5nIHJlcXVlc3QgKi8KLQllbmdpbmUtPnJlc2V0LnJlc2V0KGVuZ2lu ZSwgcnEpOworCWVuZ2luZS0+cmVzZXQuZmluaXNoKGVuZ2luZSk7CisJaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQoZW5naW5lLT5pOTE1LCBGT1JDRVdBS0VfQUxMKTsKIH0KIAotc3RhdGljIHZv aWQgZ3RfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBz dGFsbGVkX21hc2spCitzdHJ1Y3QgaTkxNV9ncHVfcmVzdGFydCB7CisJc3RydWN0IHdvcmtfc3Ry dWN0IHdvcms7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cit9OworCitzdGF0aWMg dm9pZCByZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogeworCXN0cnVjdCBp OTE1X2dwdV9yZXN0YXJ0ICphcmcgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCphcmcpLCB3 b3JrKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZy0+aTkxNTsKIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7 CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlpOTE1X3JldGlyZV9y ZXF1ZXN0cyhpOTE1KTsKKwlzbXBfc3RvcmVfbWIoaTkxNS0+Z3B1X2Vycm9yLnJlc3RhcnQsIE5V TEwpOwogCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKLQkJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlOwotCi0JCXJlc2V0X2VuZ2luZShlbmdpbmUsCi0JCQkgICAgIGVuZ2lu ZS0+aGFuZ2NoZWNrLmFjdGl2ZV9yZXF1ZXN0LAotCQkJICAgICBzdGFsbGVkX21hc2sgJiBFTkdJ TkVfTUFTSyhpZCkpOwotCQljZSA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJl ZF9jb250ZXh0KTsKLQkJaWYgKGNlKQotCQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CisJCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCiAJCS8qCiAJCSAqIE9zdGVuc2liaWx5LCB3ZSBhbHdh eXMgd2FudCBhIGNvbnRleHQgbG9hZGVkIGZvciBwb3dlcnNhdmluZywKIAkJICogc28gaWYgdGhl IGVuZ2luZSBpcyBpZGxlIGFmdGVyIHRoZSByZXNldCwgc2VuZCBhIHJlcXVlc3QKIAkJICogdG8g bG9hZCBvdXIgc2NyYXRjaCBrZXJuZWxfY29udGV4dC4KLQkJICoKLQkJICogTW9yZSBteXN0ZXJp b3VzbHksIGlmIHdlIGxlYXZlIHRoZSBlbmdpbmUgaWRsZSBhZnRlciBhIHJlc2V0LAotCQkgKiB0 aGUgbmV4dCB1c2Vyc3BhY2UgYmF0Y2ggbWF5IGhhbmcsIHdpdGggd2hhdCBhcHBlYXJzIHRvIGJl Ci0JCSAqIGFuIGluY29oZXJlbnQgcmVhZCBieSB0aGUgQ1MgKHByZXN1bWFibHkgc3RhbGUgVExC KS4gQW4KLQkJICogZW1wdHkgcmVxdWVzdCBhcHBlYXJzIHN1ZmZpY2llbnQgdG8gcGFwZXIgb3Zl ciB0aGUgZ2xpdGNoLgogCQkgKi8KLQkJaWYgKGludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSkp IHsKLQkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCQlpZiAoIWludGVsX2VuZ2luZV9pc19p ZGxlKGVuZ2luZSkpCisJCQljb250aW51ZTsKIAotCQkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2Mo ZW5naW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7Ci0JCQlpZiAoIUlTX0VSUihycSkpCi0JCQkJ aTkxNV9yZXF1ZXN0X2FkZChycSk7Ci0JCX0KKwkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5n aW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7CisJCWlmICghSVNfRVJSKHJxKSkKKwkJCWk5MTVf cmVxdWVzdF9hZGQocnEpOwogCX0KIAotCWk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKGk5MTUpOwot fQotCi1zdGF0aWMgdm9pZCByZXNldF9maW5pc2hfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKLXsKLQllbmdpbmUtPnJlc2V0LmZpbmlzaChlbmdpbmUpOworCW11dGV4X3Vu bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkx NSwgd2FrZXJlZik7CiAKLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChlbmdpbmUtPmk5MTUs IEZPUkNFV0FLRV9BTEwpOworCWtmcmVlKGFyZyk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlc2V0X2Zp bmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTc5NiwxMSArNzE4LDMwIEBA IHN0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQot CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Ci0JCWVuZ2luZS0+aGFuZ2NoZWNr LmFjdGl2ZV9yZXF1ZXN0ID0gTlVMTDsKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBp ZCkKIAkJcmVzZXRfZmluaXNoX2VuZ2luZShlbmdpbmUpOworfQorCitzdGF0aWMgdm9pZCByZXNl dF9yZXN0YXJ0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpOTE1 X2dwdV9yZXN0YXJ0ICphcmc7CisKKwkvKgorCSAqIEZvbGxvd2luZyB0aGUgcmVzZXQsIGVuc3Vy ZSB0aGF0IHdlIGFsd2F5cyByZWxvYWQgY29udGV4dCBmb3IKKwkgKiBwb3dlcnNhdmluZywgYW5k IHRvIGNvcnJlY3QgZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dC4gU2luY2UKKwkgKiB0aGlz IHJlcXVpcmVzIHVzIHRvIHN1Ym1pdCBhIHJlcXVlc3QsIHF1ZXVlIGEgd29ya2VyIHRvIGRvIHRo YXQKKwkgKiB0YXNrIGZvciB1cyB0byBldmFkZSBhbnkgbG9ja2luZyBoZXJlLgorCSAqLworCWlm IChSRUFEX09OQ0UoaTkxNS0+Z3B1X2Vycm9yLnJlc3RhcnQpKQorCQlyZXR1cm47CisKKwlhcmcg PSBrbWFsbG9jKHNpemVvZigqYXJnKSwgR0ZQX0tFUk5FTCk7CisJaWYgKGFyZykgeworCQlhcmct Pmk5MTUgPSBpOTE1OworCQlJTklUX1dPUksoJmFyZy0+d29yaywgcmVzdGFydF93b3JrKTsKKwor CQlXUklURV9PTkNFKGk5MTUtPmdwdV9lcnJvci5yZXN0YXJ0LCBhcmcpOworCQlxdWV1ZV93b3Jr KGk5MTUtPndxLCAmYXJnLT53b3JrKTsKIAl9CiB9CiAKQEAgLTg4OSw4ICs4MzAsNiBAQCBib29s IGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGw7CiAJYm9vbCByZXQgPSBmYWxzZTsKIAotCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCiAJaWYgKCF0ZXN0X2JpdChJ OTE1X1dFREdFRCwgJmVycm9yLT5mbGFncykpCiAJCXJldHVybiB0cnVlOwogCkBAIC05MTMsOSAr ODUyLDkgQEAgYm9vbCBpOTE1X2dlbV91bnNldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bCwgJmk5MTUtPmd0LnRpbWVs aW5lcywgbGluaykgewogCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwkJbG9uZyB0aW1lb3V0 OwogCi0JCXJxID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRsLT5sYXN0X3JlcXVlc3QsCi0JCQkJ CSAgJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCQlycSA9IGk5MTVfZ2VtX2FjdGl2ZV9nZXRf dW5sb2NrZWQoJnRsLT5sYXN0X3JlcXVlc3QpOwogCQlpZiAoIXJxKQogCQkJY29udGludWU7CiAK QEAgLTkzMCwxMiArODY5LDEyIEBAIGJvb2wgaTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogCQkgKiBhbmQgd2hlbiB0aGUgc2Vxbm8gcGFzc2VzIHRo ZSBmZW5jZSwgdGhlIHNpZ25hbGVyCiAJCSAqIHRoZW4gc2lnbmFscyB0aGUgZmVuY2Ugd2FraW5n IHVzIHVwKS4KIAkJICovCi0JCWlmIChkbWFfZmVuY2VfZGVmYXVsdF93YWl0KCZycS0+ZmVuY2Us IHRydWUsCi0JCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKSA8IDApCisJCXRpbWVvdXQgPSBk bWFfZmVuY2VfZGVmYXVsdF93YWl0KCZycS0+ZmVuY2UsIHRydWUsCisJCQkJCQkgTUFYX1NDSEVE VUxFX1RJTUVPVVQpOworCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKKwkJaWYgKHRpbWVvdXQgPCAw KQogCQkJZ290byB1bmxvY2s7CiAJfQotCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwotCUdF TV9CVUdfT04oaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKTsKIAogCWludGVsX2VuZ2luZXNfc2Fu aXRpemUoaTkxNSwgZmFsc2UpOwogCkBAIC05NDksNyArODg4LDYgQEAgYm9vbCBpOTE1X2dlbV91 bnNldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJICogY29udGV4dCBh bmQgZG8gbm90IHJlcXVpcmUgc3RvcF9tYWNoaW5lKCkuCiAJICovCiAJaW50ZWxfZW5naW5lc19y ZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oaTkxNSk7Ci0JaTkxNV9nZW1fY29udGV4dHNfbG9zdChp OTE1KTsKIAogCUdFTV9UUkFDRSgiZW5kXG4iKTsKIApAQCAtOTYyLDYgKzkwMCw0MyBAQCBib29s IGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAly ZXR1cm4gcmV0OwogfQogCitzdHJ1Y3QgX19pOTE1X3Jlc2V0IHsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNTsKKwl1bnNpZ25lZCBpbnQgc3RhbGxlZF9tYXNrOworfTsKKworc3RhdGlj IGludCBfX2k5MTVfcmVzZXRfX0JLTCh2b2lkICpkYXRhKQoreworCXN0cnVjdCBfX2k5MTVfcmVz ZXQgKmFyZyA9IGRhdGE7CisJaW50IGVycjsKKworCWVyciA9IGludGVsX2dwdV9yZXNldChhcmct Pmk5MTUsIEFMTF9FTkdJTkVTKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcmV0dXJu IGd0X3Jlc2V0KGFyZy0+aTkxNSwgYXJnLT5zdGFsbGVkX21hc2spOworfQorCisjaWYgMAorI2Rl ZmluZSBfX2RvX3Jlc2V0KGZuLCBhcmcpIHN0b3BfbWFjaGluZShmbiwgYXJnLCBOVUxMKQorI2Vs c2UKKyNkZWZpbmUgX19kb19yZXNldChmbiwgYXJnKSBmbihhcmcpCisjZW5kaWYKKworc3RhdGlj IGludCBkb19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50 IHN0YWxsZWRfbWFzaykKK3sKKwlzdHJ1Y3QgX19pOTE1X3Jlc2V0IGFyZyA9IHsgaTkxNSwgc3Rh bGxlZF9tYXNrIH07CisJaW50IGVyciwgaTsKKworCWVyciA9IF9fZG9fcmVzZXQoX19pOTE1X3Jl c2V0X19CS0wsICZhcmcpOworCWZvciAoaSA9IDA7IGVyciAmJiBpIDwgMzsgaSsrKSB7CisJCW1z bGVlcCgxMDApOworCQllcnIgPSBfX2RvX3Jlc2V0KF9faTkxNV9yZXNldF9fQktMLCAmYXJnKTsK Kwl9CisKKwlyZXR1cm4gZXJyOworfQorCiAvKioKICAqIGk5MTVfcmVzZXQgLSByZXNldCBjaGlw IGFmdGVyIGEgaGFuZwogICogQGk5MTU6ICNkcm1faTkxNV9wcml2YXRlIHRvIHJlc2V0CkBAIC05 ODcsMzEgKzk2MiwyMiBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiB7CiAJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZpOTE1LT5ncHVfZXJy b3I7CiAJaW50IHJldDsKLQlpbnQgaTsKIAogCUdFTV9UUkFDRSgiZmxhZ3M9JWx4XG4iLCBlcnJv ci0+ZmxhZ3MpOwogCiAJbWlnaHRfc2xlZXAoKTsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKIAlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoaTkxNSk7CiAJ R0VNX0JVR19PTighdGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZXJyb3ItPmZsYWdzKSk7 CiAKLQlpZiAoIXRlc3RfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwgJmVycm9yLT5mbGFncykpCi0J CXJldHVybjsKLQogCS8qIENsZWFyIGFueSBwcmV2aW91cyBmYWlsZWQgYXR0ZW1wdHMgYXQgcmVj b3ZlcnkuIFRpbWUgdG8gdHJ5IGFnYWluLiAqLwogCWlmICghaTkxNV9nZW1fdW5zZXRfd2VkZ2Vk KGk5MTUpKQotCQlnb3RvIHdha2V1cDsKKwkJcmV0dXJuOwogCiAJaWYgKHJlYXNvbikKIAkJZGV2 X25vdGljZShpOTE1LT5kcm0uZGV2LCAiUmVzZXR0aW5nIGNoaXAgZm9yICVzXG4iLCByZWFzb24p OwogCWVycm9yLT5yZXNldF9jb3VudCsrOwogCi0JcmV0ID0gcmVzZXRfcHJlcGFyZShpOTE1KTsK LQlpZiAocmV0KSB7Ci0JCWRldl9lcnIoaTkxNS0+ZHJtLmRldiwgIkdQVSByZWNvdmVyeSBmYWls ZWRcbiIpOwotCQlnb3RvIHRhaW50OwotCX0KKwlyZXNldF9wcmVwYXJlKGk5MTUpOwogCiAJaWYg KCFpbnRlbF9oYXNfZ3B1X3Jlc2V0KGk5MTUpKSB7CiAJCWlmIChpOTE1X21vZHBhcmFtcy5yZXNl dCkKQEAgLTEwMjEsMzIgKzk4NywxMSBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCiAJCWdvdG8gZXJyb3I7CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IDM7 IGkrKykgewotCQlyZXQgPSBpbnRlbF9ncHVfcmVzZXQoaTkxNSwgQUxMX0VOR0lORVMpOwotCQlp ZiAocmV0ID09IDApCi0JCQlicmVhazsKLQotCQltc2xlZXAoMTAwKTsKLQl9Ci0JaWYgKHJldCkg eworCWlmIChkb19yZXNldChpOTE1LCBzdGFsbGVkX21hc2spKSB7CiAJCWRldl9lcnIoaTkxNS0+ ZHJtLmRldiwgIkZhaWxlZCB0byByZXNldCBjaGlwXG4iKTsKIAkJZ290byB0YWludDsKIAl9CiAK LQkvKiBPaywgbm93IGdldCB0aGluZ3MgZ29pbmcgYWdhaW4uLi4gKi8KLQotCS8qCi0JICogRXZl cnl0aGluZyBkZXBlbmRzIG9uIGhhdmluZyB0aGUgR1RUIHJ1bm5pbmcsIHNvIHdlIG5lZWQgdG8g c3RhcnQKLQkgKiB0aGVyZS4KLQkgKi8KLQlyZXQgPSBpOTE1X2dndHRfZW5hYmxlX2h3KGk5MTUp OwotCWlmIChyZXQpIHsKLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmUtZW5hYmxlIEdHVFQgZm9s bG93aW5nIHJlc2V0ICglZClcbiIsCi0JCQkgIHJldCk7Ci0JCWdvdG8gZXJyb3I7Ci0JfQotCi0J Z3RfcmVzZXQoaTkxNSwgc3RhbGxlZF9tYXNrKTsKIAlpbnRlbF9vdmVybGF5X3Jlc2V0KGk5MTUp OwogCiAJLyoKQEAgLTEwNjgsOSArMTAxMyw4IEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAogZmluaXNoOgogCXJlc2V0X2ZpbmlzaChpOTE1KTsKLXdh a2V1cDoKLQljbGVhcl9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3ItPmZsYWdzKTsKLQl3 YWtlX3VwX2JpdCgmZXJyb3ItPmZsYWdzLCBJOTE1X1JFU0VUX0hBTkRPRkYpOworCWlmICghaTkx NV90ZXJtaW5hbGx5X3dlZGdlZChlcnJvcikpCisJCXJlc2V0X3Jlc3RhcnQoaTkxNSk7CiAJcmV0 dXJuOwogCiB0YWludDoKQEAgLTEwODksNyArMTAzMyw2IEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlhZGRfdGFpbnQoVEFJTlRfV0FSTiwgTE9DS0RF UF9TVElMTF9PSyk7CiBlcnJvcjoKIAlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUpOwotCWk5MTVf cmV0aXJlX3JlcXVlc3RzKGk5MTUpOwogCWdvdG8gZmluaXNoOwogfQogCkBAIC0xMTE1LDE4ICsx MDU4LDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2d0X3Jlc2V0X2VuZ2luZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IGNoYXIgKm1zZykKIHsKIAlzdHJ1Y3QgaTkxNV9n cHVfZXJyb3IgKmVycm9yID0gJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9yOwotCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKmFjdGl2ZV9yZXF1ZXN0OwogCWludCByZXQ7CiAKIAlHRU1fVFJBQ0UoIiVzIGZs YWdzPSVseFxuIiwgZW5naW5lLT5uYW1lLCBlcnJvci0+ZmxhZ3MpOwogCUdFTV9CVUdfT04oIXRl c3RfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZCwgJmVycm9yLT5mbGFncykpOwog Ci0JYWN0aXZlX3JlcXVlc3QgPSByZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpOwotCWlmIChJ U19FUlJfT1JfTlVMTChhY3RpdmVfcmVxdWVzdCkpIHsKLQkJLyogRWl0aGVyIHRoZSBwcmV2aW91 cyByZXNldCBmYWlsZWQsIG9yIHdlIHBhcmRvbiB0aGUgcmVzZXQuICovCi0JCXJldCA9IFBUUl9F UlIoYWN0aXZlX3JlcXVlc3QpOwotCQlnb3RvIG91dDsKLQl9CisJaWYgKGk5MTVfc2Vxbm9fcGFz c2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKKwkJCSAgICAgIGludGVsX2VuZ2lu ZV9sYXN0X3N1Ym1pdChlbmdpbmUpKSkKKwkJcmV0dXJuIDA7CisKKwlyZXNldF9wcmVwYXJlX2Vu Z2luZShlbmdpbmUpOwogCiAJaWYgKG1zZykKIAkJZGV2X25vdGljZShlbmdpbmUtPmk5MTUtPmRy bS5kZXYsCkBAIC0xMTUwLDcgKzEwOTEsNyBAQCBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBjaGFyICptc2cpCiAJICogYWN0aXZlIHJl cXVlc3QgYW5kIGNhbiBkcm9wIGl0LCBhZGp1c3QgaGVhZCB0byBza2lwIHRoZSBvZmZlbmRpbmcK IAkgKiByZXF1ZXN0IHRvIHJlc3VtZSBleGVjdXRpbmcgcmVtYWluaW5nIHJlcXVlc3RzIGluIHRo ZSBxdWV1ZS4KIAkgKi8KLQlyZXNldF9lbmdpbmUoZW5naW5lLCBhY3RpdmVfcmVxdWVzdCwgdHJ1 ZSk7CisJaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgdHJ1ZSk7CiAKIAkvKgogCSAqIFRoZSBl bmdpbmUgYW5kIGl0cyByZWdpc3RlcnMgKGFuZCB3b3JrYXJvdW5kcyBpbiBjYXNlIG9mIHJlbmRl cikKQEAgLTExODcsMzAgKzExMjgsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2RldmljZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlpOTE1X3dlZGdlX29uX3RpbWVvdXQoJncs IGk5MTUsIDUgKiBIWikgewogCQlpbnRlbF9wcmVwYXJlX3Jlc2V0KGk5MTUpOwogCi0JCWVycm9y LT5yZWFzb24gPSByZWFzb247Ci0JCWVycm9yLT5zdGFsbGVkX21hc2sgPSBlbmdpbmVfbWFzazsK LQotCQkvKiBTaWduYWwgdGhhdCBsb2NrZWQgd2FpdGVycyBzaG91bGQgcmVzZXQgdGhlIEdQVSAq LwotCQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQkJc2V0X2JpdChJOTE1X1JFU0VUX0hBTkRP RkYsICZlcnJvci0+ZmxhZ3MpOwotCQl3YWtlX3VwX2FsbCgmZXJyb3ItPndhaXRfcXVldWUpOwot Ci0JCS8qCi0JCSAqIFdhaXQgZm9yIGFueW9uZSBob2xkaW5nIHRoZSBsb2NrIHRvIHdha2V1cCwg d2l0aG91dAotCQkgKiBibG9ja2luZyBpbmRlZmluaXRlbHkgb24gc3RydWN0X211dGV4LgotCQkg Ki8KLQkJZG8gewotCQkJaWYgKG11dGV4X3RyeWxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp KSB7Ci0JCQkJaTkxNV9yZXNldChpOTE1LCBlbmdpbmVfbWFzaywgcmVhc29uKTsKLQkJCQltdXRl eF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCQkJfQotCQl9IHdoaWxlICh3YWl0 X29uX2JpdF90aW1lb3V0KCZlcnJvci0+ZmxhZ3MsCi0JCQkJCSAgICAgSTkxNV9SRVNFVF9IQU5E T0ZGLAotCQkJCQkgICAgIFRBU0tfVU5JTlRFUlJVUFRJQkxFLAotCQkJCQkgICAgIDEpKTsKLQot CQllcnJvci0+c3RhbGxlZF9tYXNrID0gMDsKLQkJZXJyb3ItPnJlYXNvbiA9IE5VTEw7CisJCWk5 MTVfcmVzZXQoaTkxNSwgZW5naW5lX21hc2ssIHJlYXNvbik7CiAKIAkJaW50ZWxfZmluaXNoX3Jl c2V0KGk5MTUpOwogCX0KQEAgLTEzNjYsNiArMTI4NCwyNSBAQCB2b2lkIGk5MTVfaGFuZGxlX2Vy cm9yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUsIHdha2VyZWYpOwogfQogCitib29sIGk5MTVfcmVzZXRfZmx1c2goc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCit7CisJaW50IGVycjsKKworCWNhbmNlbF9kZWxheWVkX3dvcmtf c3luYygmaTkxNS0+Z3B1X2Vycm9yLmhhbmdjaGVja193b3JrKTsKKworCWZsdXNoX3dvcmtxdWV1 ZShpOTE1LT53cSk7CisJR0VNX0JVR19PTihSRUFEX09OQ0UoaTkxNS0+Z3B1X2Vycm9yLnJlc3Rh cnQpKTsKKworCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWVyciA9IGk5 MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwKKwkJCQkgICAgIEk5MTVfV0FJVF9MT0NLRUQgfAor CQkJCSAgICAgSTkxNV9XQUlUX0ZPUl9JRExFX0JPT1NULAorCQkJCSAgICAgTUFYX1NDSEVEVUxF X1RJTUVPVVQpOworCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwly ZXR1cm4gIWVycjsKK30KKwogc3RhdGljIHZvaWQgaTkxNV93ZWRnZV9tZShzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0IGk5MTVfd2VkZ2VfbWUgKncgPSBjb250YWluZXJfb2Yo d29yaywgdHlwZW9mKCp3KSwgd29yay53b3JrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVzZXQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaApp bmRleCBiNmE1MTliZGU2N2QuLmYyZDM0N2YzMTlkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXNldC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVz ZXQuaApAQCAtMjksNiArMjksOSBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAogCQkgICAgICBjb25zdCBjaGFyICpyZWFzb24pOwogCit2b2lkIGk5MTVfcmVz ZXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgYm9vbCBndWlsdHkpOworYm9vbCBp OTE1X3Jlc2V0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKwogYm9vbCBp bnRlbF9oYXNfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIGJvb2wg aW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggMmYzYzcxZjZkMzEzLi5m YzUyNzM3NzUxZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0x MDcxLDEwICsxMDcxLDggQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Nhbml0aXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LCBib29sIGZvcmNlKQogCWlmICghcmVzZXRfZW5naW5lcyhpOTE1 KSAmJiAhZm9yY2UpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUs IGlkKSB7Ci0JCWlmIChlbmdpbmUtPnJlc2V0LnJlc2V0KQotCQkJZW5naW5lLT5yZXNldC5yZXNl dChlbmdpbmUsIE5VTEwpOwotCX0KKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkK KwkJaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgZmFsc2UpOwogfQogCiAvKioKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCmluZGV4IGFiMWM0OWIxMDZmMi4u NzIxN2M3ZTNlZThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf c3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNz aW9uLmMKQEAgLTgzNCw4ICs4MzQsNyBAQCBzdGF0aWMgdm9pZCBndWNfc3VibWlzc2lvbl90YXNr bGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUt PnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KgotZ3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3Rh dGljIHZvaWQgZ3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0g JmVuZ2luZS0+ZXhlY2xpc3RzOwogCkBAIC04NjEsOCArODYwLDYgQEAgZ3VjX3Jlc2V0X3ByZXBh cmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqLwogCWlmIChlbmdpbmUtPmk5 MTUtPmd1Yy5wcmVlbXB0X3dxKQogCQlmbHVzaF93b3JrcXVldWUoZW5naW5lLT5pOTE1LT5ndWMu cHJlZW1wdF93cSk7Ci0KLQlyZXR1cm4gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdp bmUpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFu Z2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwppbmRleCA3 ZGMxMWZjYjEzZGUuLjkyNTE0NmRjYzBmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGFuZ2NoZWNrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFu Z2NoZWNrLmMKQEAgLTI1LDYgKzI1LDE3IEBACiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNs dWRlICJpOTE1X3Jlc2V0LmgiCiAKK3N0cnVjdCBoYW5nY2hlY2sgeworCXU2NCBhY3RoZDsKKwl1 MzIgc2Vxbm87CisJZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBhY3Rpb247CisJ dW5zaWduZWQgbG9uZyBhY3Rpb25fdGltZXN0YW1wOworCWludCBkZWFkbG9jazsKKwlzdHJ1Y3Qg aW50ZWxfaW5zdGRvbmUgaW5zdGRvbmU7CisJYm9vbCB3ZWRnZWQ6MTsKKwlib29sIHN0YWxsZWQ6 MTsKK307CisKIHN0YXRpYyBib29sIGluc3Rkb25lX3VuY2hhbmdlZCh1MzIgY3VycmVudF9pbnN0 ZG9uZSwgdTMyICpvbGRfaW5zdGRvbmUpCiB7CiAJdTMyIHRtcCA9IGN1cnJlbnRfaW5zdGRvbmUg fCAqb2xkX2luc3Rkb25lOwpAQCAtMTE5LDI1ICsxMzAsMjIgQEAgZW5naW5lX3N0dWNrKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0IGFjdGhkKQogfQogCiBzdGF0aWMgdm9pZCBo YW5nY2hlY2tfbG9hZF9zYW1wbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJ CSAgc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sgKmhjKQorCQkJCSAgc3RydWN0IGhhbmdj aGVjayAqaGMpCiB7CiAJaGMtPmFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChl bmdpbmUpOwogCWhjLT5zZXFubyA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKIH0K IAogc3RhdGljIHZvaWQgaGFuZ2NoZWNrX3N0b3JlX3NhbXBsZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCi0JCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sg KmhjKQorCQkJCSAgIGNvbnN0IHN0cnVjdCBoYW5nY2hlY2sgKmhjKQogewogCWVuZ2luZS0+aGFu Z2NoZWNrLmFjdGhkID0gaGMtPmFjdGhkOwogCWVuZ2luZS0+aGFuZ2NoZWNrLnNlcW5vID0gaGMt PnNlcW5vOwotCWVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbiA9IGhjLT5hY3Rpb247Ci0JZW5naW5l LT5oYW5nY2hlY2suc3RhbGxlZCA9IGhjLT5zdGFsbGVkOwotCWVuZ2luZS0+aGFuZ2NoZWNrLndl ZGdlZCA9IGhjLT53ZWRnZWQ7CiB9CiAKIHN0YXRpYyBlbnVtIGludGVsX2VuZ2luZV9oYW5nY2hl Y2tfYWN0aW9uCiBoYW5nY2hlY2tfZ2V0X2FjdGlvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCi0JCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sgKmhjKQor CQkgICAgIGNvbnN0IHN0cnVjdCBoYW5nY2hlY2sgKmhjKQogewogCWlmIChlbmdpbmUtPmhhbmdj aGVjay5zZXFubyAhPSBoYy0+c2Vxbm8pCiAJCXJldHVybiBFTkdJTkVfQUNUSVZFX1NFUU5POwpA QCAtMTQ5LDcgKzE1Nyw3IEBAIGhhbmdjaGVja19nZXRfYWN0aW9uKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKIH0KIAogc3RhdGljIHZvaWQgaGFuZ2NoZWNrX2FjY3VtdWxhdGVfc2Ft cGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCQkJc3RydWN0IGludGVsX2Vu Z2luZV9oYW5nY2hlY2sgKmhjKQorCQkJCQlzdHJ1Y3QgaGFuZ2NoZWNrICpoYykKIHsKIAl1bnNp Z25lZCBsb25nIHRpbWVvdXQgPSBJOTE1X0VOR0lORV9ERUFEX1RJTUVPVVQ7CiAKQEAgLTI2OSwx OSArMjc3LDE5IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQogCWludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0 aW9uKGRldl9wcml2KTsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkg ewotCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayBoYzsKKwkJc3RydWN0IGhhbmdjaGVj ayBoYzsKIAogCQloYW5nY2hlY2tfbG9hZF9zYW1wbGUoZW5naW5lLCAmaGMpOwogCQloYW5nY2hl Y2tfYWNjdW11bGF0ZV9zYW1wbGUoZW5naW5lLCAmaGMpOwogCQloYW5nY2hlY2tfc3RvcmVfc2Ft cGxlKGVuZ2luZSwgJmhjKTsKIAotCQlpZiAoZW5naW5lLT5oYW5nY2hlY2suc3RhbGxlZCkgewor CQlpZiAoaGMuc3RhbGxlZCkgewogCQkJaHVuZyB8PSBpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUp OwogCQkJaWYgKGhjLmFjdGlvbiAhPSBFTkdJTkVfREVBRCkKIAkJCQlzdHVjayB8PSBpbnRlbF9l bmdpbmVfZmxhZyhlbmdpbmUpOwogCQl9CiAKLQkJaWYgKGVuZ2luZS0+aGFuZ2NoZWNrLndlZGdl ZCkKKwkJaWYgKGhjLndlZGdlZCkKIAkJCXdlZGdlZCB8PSBpbnRlbF9lbmdpbmVfZmxhZyhlbmdp bmUpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCAzNzlhNDNlZDJmOTAuLmVi YjY5M2M5MzA0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTEzNiw2ICsxMzYsNyBA QAogI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5j bHVkZSAiaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmgiCisjaW5jbHVkZSAiaTkxNV9yZXNldC5oIgog I2luY2x1ZGUgImk5MTVfdmdwdS5oIgogI2luY2x1ZGUgImludGVsX2xyY19yZWcuaCIKICNpbmNs dWRlICJpbnRlbF9tb2NzLmgiCkBAIC0yNjYsNyArMjY3LDggQEAgc3RhdGljIHZvaWQgdW53aW5k X3dhX3RhaWwoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJYXNzZXJ0X3JpbmdfdGFpbF92YWxp ZChycS0+cmluZywgcnEtPnRhaWwpOwogfQogCi1zdGF0aWMgdm9pZCBfX3Vud2luZF9pbmNvbXBs ZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICoKK19fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm4s ICphY3RpdmUgPSBOVUxMOwogCXN0cnVjdCBsaXN0X2hlYWQgKnVuaW5pdGlhbGl6ZWRfdmFyKHBs KTsKQEAgLTMwNyw2ICszMDksOCBAQCBzdGF0aWMgdm9pZCBfX3Vud2luZF9pbmNvbXBsZXRlX3Jl cXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJbGlzdF9tb3ZlX3RhaWwo JmFjdGl2ZS0+c2NoZWQubGluaywKIAkJCSAgICAgICBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlz dChlbmdpbmUsIHByaW8pKTsKIAl9CisKKwlyZXR1cm4gYWN0aXZlOwogfQogCiB2b2lkCkBAIC0x NzI0LDExICsxNzI4LDkgQEAgc3RhdGljIGludCBnZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0 IGk5MTVfcmVxdWVzdCAqCi1leGVjbGlzdHNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCitzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXRfcHJlcGFyZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCwgKmFjdGl2ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJ R0VNX1RSQUNFKCIlczogZGVwdGg8LSVkXG4iLCBlbmdpbmUtPm5hbWUsCkBAIC0xNzQ0LDU5ICsx NzQ2LDIxIEBAIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkgKiBwcmV2ZW50cyB0aGUgcmFjZS4KIAkgKi8KIAlfX3Rhc2tsZXRfZGlzYWJs ZV9zeW5jX29uY2UoJmV4ZWNsaXN0cy0+dGFza2xldCk7CisJR0VNX0JVR19PTighcmVzZXRfaW5f cHJvZ3Jlc3MoZXhlY2xpc3RzKSk7CiAKKwkvKiBBbmQgZmx1c2ggYW55IGN1cnJlbnQgZGlyZWN0 IHN1Ym1pc3Npb24uICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9j aywgZmxhZ3MpOwotCi0JLyoKLQkgKiBXZSB3YW50IHRvIGZsdXNoIHRoZSBwZW5kaW5nIGNvbnRl eHQgc3dpdGNoZXMsIGhhdmluZyBkaXNhYmxlZAotCSAqIHRoZSB0YXNrbGV0IGFib3ZlLCB3ZSBj YW4gYXNzdW1lIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGV4ZWNsaXN0cy4KLQkgKiBGb3IgdGhp cyBhbGxvd3MgdXMgdG8gY2F0Y2ggdXAgd2l0aCBhbiBpbmZsaWdodCBwcmVlbXB0aW9uIGV2ZW50 LAotCSAqIGFuZCBhdm9pZCBibGFtaW5nIGFuIGlubm9jZW50IHJlcXVlc3QgaWYgdGhlIHN0YWxs IHdhcyBkdWUgdG8gdGhlCi0JICogcHJlZW1wdGlvbiBpdHNlbGYuCi0JICovCi0JcHJvY2Vzc19j c2IoZW5naW5lKTsKLQotCS8qCi0JICogVGhlIGxhc3QgYWN0aXZlIHJlcXVlc3QgY2FuIHRoZW4g YmUgbm8gbGF0ZXIgdGhhbiB0aGUgbGFzdCByZXF1ZXN0Ci0JICogbm93IGluIEVMU1BbMF0uIFNv IHNlYXJjaCBiYWNrd2FyZHMgZnJvbSB0aGVyZSwgc28gdGhhdCBpZiB0aGUgR1BVCi0JICogaGFz IGFkdmFuY2VkIGJleW9uZCB0aGUgbGFzdCBDU0IgdXBkYXRlLCBpdCB3aWxsIGJlIHBhcmRvbmVk LgotCSAqLwotCWFjdGl2ZSA9IE5VTEw7Ci0JcmVxdWVzdCA9IHBvcnRfcmVxdWVzdChleGVjbGlz dHMtPnBvcnQpOwotCWlmIChyZXF1ZXN0KSB7Ci0JCS8qCi0JCSAqIFByZXZlbnQgdGhlIGJyZWFk Y3J1bWIgZnJvbSBhZHZhbmNpbmcgYmVmb3JlIHdlIGRlY2lkZQotCQkgKiB3aGljaCByZXF1ZXN0 IGlzIGN1cnJlbnRseSBhY3RpdmUuCi0JCSAqLwotCQlpbnRlbF9lbmdpbmVfc3RvcF9jcyhlbmdp bmUpOwotCi0JCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHJlcXVlc3QsCi0JCQkJ CQkgJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsCi0JCQkJCQkgbGluaykgewotCQkJaWYgKF9f aTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0LAotCQkJCQkJICAgICByZXF1ZXN0LT5nbG9i YWxfc2Vxbm8pKQotCQkJCWJyZWFrOwotCi0JCQlhY3RpdmUgPSByZXF1ZXN0OwotCQl9Ci0JfQot CisJcHJvY2Vzc19jc2IoZW5naW5lKTsgLyogZHJhaW4gcHJlZW1wdGlvbiBldmVudHMgKi8KIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKLQot CXJldHVybiBhY3RpdmU7CiB9CiAKLXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVx dWVzdCkKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0 cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKwlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXUzMiAqcmVnczsKIAotCUdFTV9U UkFDRSgiJXMgcmVxdWVzdCBnbG9iYWw9JWQsIGN1cnJlbnQ9JWRcbiIsCi0JCSAgZW5naW5lLT5u YW1lLCByZXF1ZXN0ID8gcmVxdWVzdC0+Z2xvYmFsX3NlcW5vIDogMCwKLQkJICBpbnRlbF9lbmdp bmVfZ2V0X3NlcW5vKGVuZ2luZSkpOwotCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGlt ZWxpbmUubG9jaywgZmxhZ3MpOwogCiAJLyoKQEAgLTE4MTEsMTIgKzE3NzUsMTggQEAgc3RhdGlj IHZvaWQgZXhlY2xpc3RzX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAll eGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xpc3RzKTsKIAogCS8qIFB1c2ggYmFj ayBhbnkgaW5jb21wbGV0ZSByZXF1ZXN0cyBmb3IgcmVwbGF5IGFmdGVyIHRoZSByZXNldC4gKi8K LQlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7CisJcnEgPSBfX3Vud2luZF9p bmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7CiAKIAkvKiBGb2xsb3dpbmcgdGhlIHJlc2V0LCB3 ZSBuZWVkIHRvIHJlbG9hZCB0aGUgQ1NCIHJlYWQvd3JpdGUgcG9pbnRlcnMgKi8KIAlyZXNldF9j c2JfcG9pbnRlcnMoJmVuZ2luZS0+ZXhlY2xpc3RzKTsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOworCUdFTV9UUkFDRSgiJXMgc2Vxbm89 JWQsIGN1cnJlbnQ9JWQsIHN0YWxsZWQ/ICVzXG4iLAorCQkgIGVuZ2luZS0+bmFtZSwKKwkJICBy cSA/IHJxLT5nbG9iYWxfc2Vxbm8gOiAwLAorCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5n aW5lKSwKKwkJICB5ZXNubyhzdGFsbGVkKSk7CisJaWYgKCFycSkKKwkJZ290byBvdXRfdW5sb2Nr OwogCiAJLyoKIAkgKiBJZiB0aGUgcmVxdWVzdCB3YXMgaW5ub2NlbnQsIHdlIGxlYXZlIHRoZSBy ZXF1ZXN0IGluIHRoZSBFTFNQCkBAIC0xODI5LDggKzE3OTksOSBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCSAqIGFuZCBoYXZl IHRvIGF0IGxlYXN0IHJlc3RvcmUgdGhlIFJJTkcgcmVnaXN0ZXIgaW4gdGhlIGNvbnRleHQKIAkg KiBpbWFnZSBiYWNrIHRvIHRoZSBleHBlY3RlZCB2YWx1ZXMgdG8gc2tpcCBvdmVyIHRoZSBndWls dHkgcmVxdWVzdC4KIAkgKi8KLQlpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC0+ZmVuY2UuZXJyb3Ig IT0gLUVJTykKLQkJcmV0dXJuOworCWk5MTVfcmVzZXRfcmVxdWVzdChycSwgc3RhbGxlZCk7CisJ aWYgKCFzdGFsbGVkKQorCQlnb3RvIG91dF91bmxvY2s7CiAKIAkvKgogCSAqIFdlIHdhbnQgYSBz aW1wbGUgY29udGV4dCArIHJpbmcgdG8gZXhlY3V0ZSB0aGUgYnJlYWRjcnVtYiB1cGRhdGUuCkBA IC0xODQwLDI1ICsxODExLDIzIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJICogZnV0dXJlIHJlcXVlc3Qgd2lsbCBiZSBhZnRl ciB1c2Vyc3BhY2UgaGFzIGhhZCB0aGUgb3Bwb3J0dW5pdHkKIAkgKiB0byByZWNyZWF0ZSBpdHMg b3duIHN0YXRlLgogCSAqLwotCXJlZ3MgPSByZXF1ZXN0LT5od19jb250ZXh0LT5scmNfcmVnX3N0 YXRlOworCXJlZ3MgPSBycS0+aHdfY29udGV4dC0+bHJjX3JlZ19zdGF0ZTsKIAlpZiAoZW5naW5l LT5waW5uZWRfZGVmYXVsdF9zdGF0ZSkgewogCQltZW1jcHkocmVncywgLyogc2tpcCByZXN0b3Jp bmcgdGhlIHZhbmlsbGEgUFBIV1NQICovCiAJCSAgICAgICBlbmdpbmUtPnBpbm5lZF9kZWZhdWx0 X3N0YXRlICsgTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFLAogCQkgICAgICAgZW5naW5lLT5jb250 ZXh0X3NpemUgLSBQQUdFX1NJWkUpOwogCX0KLQlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVn cywKLQkJCQkgcmVxdWVzdC0+Z2VtX2NvbnRleHQsIGVuZ2luZSwgcmVxdWVzdC0+cmluZyk7CisJ ZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHJlZ3MsIHJxLT5nZW1fY29udGV4dCwgZW5naW5lLCBy cS0+cmluZyk7CiAKIAkvKiBNb3ZlIHRoZSBSSU5HX0hFQUQgb250byB0aGUgYnJlYWRjcnVtYiwg cGFzdCB0aGUgaGFuZ2luZyBiYXRjaCAqLwotCXJlZ3NbQ1RYX1JJTkdfQlVGRkVSX1NUQVJUICsg MV0gPSBpOTE1X2dndHRfb2Zmc2V0KHJlcXVlc3QtPnJpbmctPnZtYSk7Ci0KLQlyZXF1ZXN0LT5y aW5nLT5oZWFkID0gaW50ZWxfcmluZ193cmFwKHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnBvc3Rm aXgpOwotCXJlZ3NbQ1RYX1JJTkdfSEVBRCArIDFdID0gcmVxdWVzdC0+cmluZy0+aGVhZDsKKwly ZWdzW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCArIDFdID0gaTkxNV9nZ3R0X29mZnNldChycS0+cmlu Zy0+dm1hKTsKIAotCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJlcXVlc3QtPnJpbmcpOworCXJx LT5yaW5nLT5oZWFkID0gaW50ZWxfcmluZ193cmFwKHJxLT5yaW5nLCBycS0+cG9zdGZpeCk7CisJ cmVnc1tDVFhfUklOR19IRUFEICsgMV0gPSBycS0+cmluZy0+aGVhZDsKKwlpbnRlbF9yaW5nX3Vw ZGF0ZV9zcGFjZShycS0+cmluZyk7CiAKLQkvKiBSZXNldCBXYUlkbGVMaXRlUmVzdG9yZTpiZHcs c2tsIGFzIHdlbGwgKi8KLQl1bndpbmRfd2FfdGFpbChyZXF1ZXN0KTsKK291dF91bmxvY2s6CisJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CiB9 CiAKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9maW5pc2goc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQpAQCAtMTg3MSw2ICsxODQwLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3Rz X3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogdG8gc2xl ZXAgYmVmb3JlIHdlIHJlc3RhcnQgYW5kIHJlbG9hZCBhIGNvbnRleHQuCiAJICoKIAkgKi8KKwlH RU1fQlVHX09OKCFyZXNldF9pbl9wcm9ncmVzcyhleGVjbGlzdHMpKTsKIAlpZiAoIVJCX0VNUFRZ X1JPT1QoJmV4ZWNsaXN0cy0+cXVldWUucmJfcm9vdCkpCiAJCWV4ZWNsaXN0cy0+dGFza2xldC5m dW5jKGV4ZWNsaXN0cy0+dGFza2xldC5kYXRhKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zl cmxheS5jCmluZGV4IGM4MWRiODFlNDQxNi4uZjY4Yzc5NzUwMDZjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ZlcmxheS5jCkBAIC00NzgsOCArNDc4LDYgQEAgdm9pZCBpbnRlbF9vdmVybGF5 X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIW92ZXJsYXkp CiAJCXJldHVybjsKIAotCWludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKG92ZXJsYXkpOwot CiAJb3ZlcmxheS0+b2xkX3hzY2FsZSA9IDA7CiAJb3ZlcmxheS0+b2xkX3lzY2FsZSA9IDA7CiAJ b3ZlcmxheS0+Y3J0YyA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKaW5kZXggMjZiNzI3NGEyZDQzLi42NjI5MDdlMWEyODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmgiCisjaW5jbHVkZSAiaTkx NV9yZXNldC5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5oIgpAQCAtNzA3LDUyICs3MDgsODAgQEAg c3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVzZXRf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMgdm9pZCByZXNl dF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlpbnRlbF9lbmdp bmVfc3RvcF9jcyhlbmdpbmUpOwotCXJldHVybiBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0 KGVuZ2luZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNraXBfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKK3N0YXRpYyB2b2lkIHJlc2V0X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBib29sIHN0YWxsZWQpCiB7Ci0Jdm9pZCAqdmFkZHIgPSBycS0+cmluZy0+dmFkZHI7 CisJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0gJmVuZ2luZS0+dGltZWxpbmU7CisJc3RydWN0 IGk5MTVfcmVxdWVzdCAqcG9zLCAqcnE7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MzIgaGVh ZDsKIAotCWhlYWQgPSBycS0+aW5maXg7Ci0JaWYgKHJxLT5wb3N0Zml4IDwgaGVhZCkgewotCQlt ZW1zZXQzMih2YWRkciArIGhlYWQsIE1JX05PT1AsCi0JCQkgKHJxLT5yaW5nLT5zaXplIC0gaGVh ZCkgLyBzaXplb2YodTMyKSk7Ci0JCWhlYWQgPSAwOworCXJxID0gTlVMTDsKKwlzcGluX2xvY2tf aXJxc2F2ZSgmdGwtPmxvY2ssIGZsYWdzKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJnRs LT5yZXF1ZXN0cywgbGluaykgeworCQlpZiAoIV9faTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwb3Ms IHBvcy0+Z2xvYmFsX3NlcW5vKSkgeworCQkJcnEgPSBwb3M7CisJCQlicmVhazsKKwkJfQogCX0K LQltZW1zZXQzMih2YWRkciArIGhlYWQsIE1JX05PT1AsIChycS0+cG9zdGZpeCAtIGhlYWQpIC8g c2l6ZW9mKHUzMikpOwotfQotCi1zdGF0aWMgdm9pZCByZXNldF9yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0JR0VNX1RSQUNF KCIlcyByZXF1ZXN0IGdsb2JhbD0lZCwgY3VycmVudD0lZFxuIiwKLQkJICBlbmdpbmUtPm5hbWUs IHJxID8gcnEtPmdsb2JhbF9zZXFubyA6IDAsCi0JCSAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhl bmdpbmUpKTsKIAorCUdFTV9UUkFDRSgiJXMgc2Vxbm89JWQsIGN1cnJlbnQ9JWQsIHN0YWxsZWQ/ ICVzXG4iLAorCQkgIGVuZ2luZS0+bmFtZSwKKwkJICBycSA/IHJxLT5nbG9iYWxfc2Vxbm8gOiAw LAorCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKKwkJICB5ZXNubyhzdGFsbGVk KSk7CiAJLyoKLQkgKiBUcnkgdG8gcmVzdG9yZSB0aGUgbG9naWNhbCBHUFUgc3RhdGUgdG8gbWF0 Y2ggdGhlIGNvbnRpbnVhdGlvbgotCSAqIG9mIHRoZSByZXF1ZXN0IHF1ZXVlLiBJZiB3ZSBza2lw IHRoZSBjb250ZXh0L1BEIHJlc3RvcmUsIHRoZW4KLQkgKiB0aGUgbmV4dCByZXF1ZXN0IG1heSB0 cnkgdG8gZXhlY3V0ZSBhc3N1bWluZyB0aGF0IGl0cyBjb250ZXh0Ci0JICogaXMgdmFsaWQgYW5k IGxvYWRlZCBvbiB0aGUgR1BVIGFuZCBzbyBtYXkgdHJ5IHRvIGFjY2VzcyBpbnZhbGlkCi0JICog bWVtb3J5LCBwcm9tcHRpbmcgcmVwZWF0ZWQgR1BVIGhhbmdzLgorCSAqIFRoZSBndWlsdHkgcmVx dWVzdCB3aWxsIGdldCBza2lwcGVkIG9uIGEgaHVuZyBlbmdpbmUuCiAJICoKLQkgKiBJZiB0aGUg cmVxdWVzdCB3YXMgZ3VpbHR5LCB3ZSBzdGlsbCByZXN0b3JlIHRoZSBsb2dpY2FsIHN0YXRlCi0J ICogaW4gY2FzZSB0aGUgbmV4dCByZXF1ZXN0IHJlcXVpcmVzIGl0IChlLmcuIHRoZSBhbGlhc2lu ZyBwcGd0dCksCi0JICogYnV0IHNraXAgb3ZlciB0aGUgaHVuZyBiYXRjaC4KKwkgKiBVc2VycyBv ZiBjbGllbnQgZGVmYXVsdCBjb250ZXh0cyBkbyBub3QgcmVseSBvbiBsb2dpY2FsCisJICogc3Rh dGUgcHJlc2VydmVkIGJldHdlZW4gYmF0Y2hlcyBzbyBpdCBpcyBzYWZlIHRvIGV4ZWN1dGUKKwkg KiBxdWV1ZWQgcmVxdWVzdHMgZm9sbG93aW5nIHRoZSBoYW5nLiBOb24gZGVmYXVsdCBjb250ZXh0 cworCSAqIHJlbHkgb24gcHJlc2VydmVkIHN0YXRlLCBzbyBza2lwcGluZyBhIGJhdGNoIGxvc2Vz IHRoZQorCSAqIGV2b2x1dGlvbiBvZiB0aGUgc3RhdGUgYW5kIGl0IG5lZWRzIHRvIGJlIGNvbnNp ZGVyZWQgY29ycnVwdGVkLgorCSAqIEV4ZWN1dGluZyBtb3JlIHF1ZXVlZCBiYXRjaGVzIG9uIHRv cCBvZiBjb3JydXB0ZWQgc3RhdGUgaXMKKwkgKiByaXNreS4gQnV0IHdlIHRha2UgdGhlIHJpc2sg YnkgdHJ5aW5nIHRvIGFkdmFuY2UgdGhyb3VnaAorCSAqIHRoZSBxdWV1ZWQgcmVxdWVzdHMgaW4g b3JkZXIgdG8gbWFrZSB0aGUgY2xpZW50IGJlaGF2aW91cgorCSAqIG1vcmUgcHJlZGljdGFibGUg YXJvdW5kIHJlc2V0cywgYnkgbm90IHRocm93aW5nIGF3YXkgcmFuZG9tCisJICogYW1vdW50IG9m IGJhdGNoZXMgaXQgaGFzIHByZXBhcmVkIGZvciBleGVjdXRpb24uIFNvcGhpc3RpY2F0ZWQKKwkg KiBjbGllbnRzIGNhbiB1c2UgZ2VtX3Jlc2V0X3N0YXRzX2lvY3RsIGFuZCBkbWEgZmVuY2Ugc3Rh dHVzCisJICogKGV4cG9ydGVkIHZpYSBzeW5jX2ZpbGUgaW5mbyBpb2N0bCBvbiBleHBsaWNpdCBm ZW5jZXMpIHRvIG9ic2VydmUKKwkgKiB3aGVuIGl0IGxvc2VzIHRoZSBjb250ZXh0IHN0YXRlIGFu ZCBzaG91bGQgcmVidWlsZCBhY2NvcmRpbmdseS4KIAkgKgotCSAqIElmIHRoZSByZXF1ZXN0IHdh cyBpbm5vY2VudCwgd2UgdHJ5IHRvIHJlcGxheSB0aGUgcmVxdWVzdCB3aXRoCi0JICogdGhlIHJl c3RvcmVkIGNvbnRleHQuCisJICogVGhlIGNvbnRleHQgYmFuLCBhbmQgdWx0aW1hdGVseSB0aGUg Y2xpZW50IGJhbiwgbWVjaGFuaXNtIGFyZSBzYWZldHkKKwkgKiB2YWx2ZXMgaWYgY2xpZW50IHN1 Ym1pc3Npb24gZW5kcyB1cCByZXN1bHRpbmcgaW4gbm90aGluZyBtb3JlIHRoYW4KKwkgKiBzdWJz ZXF1ZW50IGhhbmdzLgogCSAqLworCiAJaWYgKHJxKSB7Ci0JCS8qIElmIHRoZSBycSBodW5nLCBq dW1wIHRvIGl0cyBicmVhZGNydW1iIGFuZCBza2lwIHRoZSBiYXRjaCAqLwotCQlycS0+cmluZy0+ aGVhZCA9IGludGVsX3Jpbmdfd3JhcChycS0+cmluZywgcnEtPmhlYWQpOwotCQlpZiAocnEtPmZl bmNlLmVycm9yID09IC1FSU8pCi0JCQlza2lwX3JlcXVlc3QocnEpOworCQkvKgorCQkgKiBUcnkg dG8gcmVzdG9yZSB0aGUgbG9naWNhbCBHUFUgc3RhdGUgdG8gbWF0Y2ggdGhlCisJCSAqIGNvbnRp bnVhdGlvbiBvZiB0aGUgcmVxdWVzdCBxdWV1ZS4gSWYgd2Ugc2tpcCB0aGUKKwkJICogY29udGV4 dC9QRCByZXN0b3JlLCB0aGVuIHRoZSBuZXh0IHJlcXVlc3QgbWF5IHRyeSB0byBleGVjdXRlCisJ CSAqIGFzc3VtaW5nIHRoYXQgaXRzIGNvbnRleHQgaXMgdmFsaWQgYW5kIGxvYWRlZCBvbiB0aGUg R1BVIGFuZAorCQkgKiBzbyBtYXkgdHJ5IHRvIGFjY2VzcyBpbnZhbGlkIG1lbW9yeSwgcHJvbXB0 aW5nIHJlcGVhdGVkIEdQVQorCQkgKiBoYW5ncy4KKwkJICoKKwkJICogSWYgdGhlIHJlcXVlc3Qg d2FzIGd1aWx0eSwgd2Ugc3RpbGwgcmVzdG9yZSB0aGUgbG9naWNhbAorCQkgKiBzdGF0ZSBpbiBj YXNlIHRoZSBuZXh0IHJlcXVlc3QgcmVxdWlyZXMgaXQgKGUuZy4gdGhlCisJCSAqIGFsaWFzaW5n IHBwZ3R0KSwgYnV0IHNraXAgb3ZlciB0aGUgaHVuZyBiYXRjaC4KKwkJICoKKwkJICogSWYgdGhl IHJlcXVlc3Qgd2FzIGlubm9jZW50LCB3ZSB0cnkgdG8gcmVwbGF5IHRoZSByZXF1ZXN0CisJCSAq IHdpdGggdGhlIHJlc3RvcmVkIGNvbnRleHQuCisJCSAqLworCQlpOTE1X3Jlc2V0X3JlcXVlc3Qo cnEsIHN0YWxsZWQpOworCisJCUdFTV9CVUdfT04ocnEtPnJpbmcgIT0gZW5naW5lLT5idWZmZXIp OworCQloZWFkID0gcnEtPmhlYWQ7CisJfSBlbHNlIHsKKwkJaGVhZCA9IGVuZ2luZS0+YnVmZmVy LT50YWlsOwogCX0KKwllbmdpbmUtPmJ1ZmZlci0+aGVhZCA9IGludGVsX3Jpbmdfd3JhcChlbmdp bmUtPmJ1ZmZlciwgaGVhZCk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0bC0+bG9jaywg ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCByZXNldF9maW5pc2goc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4 IGM1OTc1YzY3Zjc0ZC4uOWVjYWU3ZGUzYjBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCkBAIC0xMjAsMTMgKzEyMCw4IEBAIHN0cnVjdCBpbnRlbF9pbnN0ZG9uZSB7 CiBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayB7CiAJdTY0IGFjdGhkOwogCXUzMiBzZXFu bzsKLQllbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIGFjdGlvbjsKIAl1bnNpZ25l ZCBsb25nIGFjdGlvbl90aW1lc3RhbXA7Ci0JaW50IGRlYWRsb2NrOwogCXN0cnVjdCBpbnRlbF9p bnN0ZG9uZSBpbnN0ZG9uZTsKLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICphY3RpdmVfcmVxdWVzdDsK LQlib29sIHN0YWxsZWQ6MTsKLQlib29sIHdlZGdlZDoxOwogfTsKIAogc3RydWN0IGludGVsX3Jp bmcgewpAQCAtNDUyLDkgKzQ0Nyw4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCWludAkJ KCppbml0X2h3KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiAJc3RydWN0IHsK LQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqKCpwcmVwYXJlKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwotCQl2b2lkICgqcmVzZXQpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKLQkJCSAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKwkJdm9pZCAoKnByZXBhcmUp KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisJCXZvaWQgKCpyZXNldCkoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpOwogCQl2b2lkICgqZmluaXNo KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCX0gcmVzZXQ7CiAKQEAgLTEwMjYs NiArMTAyMCwxMyBAQCBnZW44X2VtaXRfZ2d0dF93cml0ZSh1MzIgKmNzLCB1MzIgdmFsdWUsIHUz MiBndHRfb2Zmc2V0KQogCXJldHVybiBjczsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGludGVs X2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgICAg Ym9vbCBzdGFsbGVkKQoreworCWlmIChlbmdpbmUtPnJlc2V0LnJlc2V0KQorCQllbmdpbmUtPnJl c2V0LnJlc2V0KGVuZ2luZSwgc3RhbGxlZCk7Cit9CisKIHZvaWQgaW50ZWxfZW5naW5lc19zYW5p dGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCBmb3JjZSk7CiAKIGJvb2wg aW50ZWxfZW5naW5lX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2su YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwppbmRl eCAxMjU1MGI1NWM0MmYuLjY3NDMxMzU1Y2Q2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwpAQCAtMzYzLDkgKzM2Myw3IEBAIHN0YXRp YyBpbnQgaWd0X2dsb2JhbF9yZXNldCh2b2lkICphcmcpCiAJLyogQ2hlY2sgdGhhdCB3ZSBjYW4g aXNzdWUgYSBnbG9iYWwgR1BVIHJlc2V0ICovCiAKIAlpZ3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkx NSk7Ci0Jc2V0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3Mp OwogCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJcmVzZXRfY291bnQg PSBpOTE1X3Jlc2V0X2NvdW50KCZpOTE1LT5ncHVfZXJyb3IpOwogCiAJaTkxNV9yZXNldChpOTE1 LCBBTExfRU5HSU5FUywgTlVMTCk7CkBAIC0zNzQsOSArMzcyLDcgQEAgc3RhdGljIGludCBpZ3Rf Z2xvYmFsX3Jlc2V0KHZvaWQgKmFyZykKIAkJcHJfZXJyKCJObyBHUFUgcmVzZXQgcmVjb3JkZWQh XG4iKTsKIAkJZXJyID0gLUVJTlZBTDsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKIAotCUdFTV9CVUdfT04odGVzdF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAm aTkxNS0+Z3B1X2Vycm9yLmZsYWdzKSk7CiAJaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7 CiAKIAlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKQEAgLTM5 OSw5ICszOTUsNyBAQCBzdGF0aWMgaW50IGlndF93ZWRnZWRfcmVzZXQodm9pZCAqYXJnKQogCWk5 MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7CiAJR0VNX0JVR19PTighaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSk7CiAKLQlzZXRfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwg Jmk5MTUtPmdwdV9lcnJvci5mbGFncyk7CiAJaTkxNV9yZXNldChpOTE1LCBBTExfRU5HSU5FUywg TlVMTCk7Ci0JR0VNX0JVR19PTih0ZXN0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZpOTE1LT5n cHVfZXJyb3IuZmxhZ3MpKTsKIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYp OwogCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC01MTEsNyArNTA1 LDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsIGJvb2wgYWN0aXZlKQogCQkJCWJyZWFrOwogCQkJfQogCi0JCQlpZiAoIXdhaXRf Zm9yX2lkbGUoZW5naW5lKSkgeworCQkJaWYgKCFpOTE1X3Jlc2V0X2ZsdXNoKGk5MTUpKSB7CiAJ CQkJc3RydWN0IGRybV9wcmludGVyIHAgPQogCQkJCQlkcm1faW5mb19wcmludGVyKGk5MTUtPmRy bS5kZXYpOwogCkBAIC05MDMsMjAgKzg5NywxMyBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9lbmdp bmVzKHZvaWQgKmFyZykKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHUzMiBmYWtlX2hhbmdjaGVj ayhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIG1hc2spCitzdGF0aWMgdTMyIGZha2VfaGFu Z2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgbWFzaykKIHsKLQlzdHJ1 Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJnJxLT5pOTE1LT5ncHVfZXJyb3I7Ci0JdTMyIHJl c2V0X2NvdW50ID0gaTkxNV9yZXNldF9jb3VudChlcnJvcik7Ci0KLQllcnJvci0+c3RhbGxlZF9t YXNrID0gbWFzazsKLQotCS8qIHNldF9iaXQoKSBtdXN0IGJlIGFmdGVyIHdlIGhhdmUgc2V0dXAg dGhlIGJhY2tjaGFubmVsIChtYXNrKSAqLwotCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwotCXNl dF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3ItPmZsYWdzKTsKKwl1MzIgY291bnQgPSBp OTE1X3Jlc2V0X2NvdW50KCZpOTE1LT5ncHVfZXJyb3IpOwogCi0Jd2FrZV91cF9hbGwoJmVycm9y LT53YWl0X3F1ZXVlKTsKKwlpOTE1X3Jlc2V0KGk5MTUsIG1hc2ssIE5VTEwpOwogCi0JcmV0dXJu IHJlc2V0X2NvdW50OworCXJldHVybiBjb3VudDsKIH0KIAogc3RhdGljIGludCBpZ3RfcmVzZXRf d2FpdCh2b2lkICphcmcpCkBAIC05NjIsNyArOTQ5LDcgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRf d2FpdCh2b2lkICphcmcpCiAJCWdvdG8gb3V0X3JxOwogCX0KIAotCXJlc2V0X2NvdW50ID0gZmFr ZV9oYW5nY2hlY2socnEsIEFMTF9FTkdJTkVTKTsKKwlyZXNldF9jb3VudCA9IGZha2VfaGFuZ2No ZWNrKGk5MTUsIEFMTF9FTkdJTkVTKTsKIAogCXRpbWVvdXQgPSBpOTE1X3JlcXVlc3Rfd2FpdChy cSwgSTkxNV9XQUlUX0xPQ0tFRCwgMTApOwogCWlmICh0aW1lb3V0IDwgMCkgewpAQCAtOTcyLDcg Kzk1OSw2IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3dhaXQodm9pZCAqYXJnKQogCQlnb3RvIG91 dF9ycTsKIAl9CiAKLQlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwgJmk5 MTUtPmdwdV9lcnJvci5mbGFncykpOwogCWlmIChpOTE1X3Jlc2V0X2NvdW50KCZpOTE1LT5ncHVf ZXJyb3IpID09IHJlc2V0X2NvdW50KSB7CiAJCXByX2VycigiTm8gR1BVIHJlc2V0IHJlY29yZGVk IVxuIik7CiAJCWVyciA9IC1FSU5WQUw7CkBAIC0xMTYyLDcgKzExNDgsNyBAQCBzdGF0aWMgaW50 IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAl9 CiAKIG91dF9yZXNldDoKLQlmYWtlX2hhbmdjaGVjayhycSwgaW50ZWxfZW5naW5lX2ZsYWcocnEt PmVuZ2luZSkpOworCWZha2VfaGFuZ2NoZWNrKHJxLT5pOTE1LCBpbnRlbF9lbmdpbmVfZmxhZyhy cS0+ZW5naW5lKSk7CiAKIAlpZiAodHNrKSB7CiAJCXN0cnVjdCBpZ3Rfd2VkZ2VfbWUgdzsKQEAg LTEzNDEsMTIgKzEzMjcsNyBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9xdWV1ZSh2b2lkICphcmcp CiAJCQkJZ290byBmaW5pOwogCQkJfQogCi0JCQlyZXNldF9jb3VudCA9IGZha2VfaGFuZ2NoZWNr KHByZXYsIEVOR0lORV9NQVNLKGlkKSk7Ci0KLQkJCWk5MTVfcmVzZXQoaTkxNSwgRU5HSU5FX01B U0soaWQpLCBOVUxMKTsKLQotCQkJR0VNX0JVR19PTih0ZXN0X2JpdChJOTE1X1JFU0VUX0hBTkRP RkYsCi0JCQkJCSAgICAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKSk7CisJCQlyZXNldF9jb3VudCA9 IGZha2VfaGFuZ2NoZWNrKGk5MTUsIEVOR0lORV9NQVNLKGlkKSk7CiAKIAkJCWlmIChwcmV2LT5m ZW5jZS5lcnJvciAhPSAtRUlPKSB7CiAJCQkJcHJfZXJyKCJHUFUgcmVzZXQgbm90IHJlY29yZGVk IG9uIGhhbmdpbmcgcmVxdWVzdCBbZmVuY2UuZXJyb3I9JWRdIVxuIiwKQEAgLTE1NjUsNiArMTU0 Niw3IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogCQlwcl9lcnIoIiVzKCVzKTogRmFpbGVkIHRvIHN0YXJ0IHJlcXVl c3QgJWxseCwgYXQgJXhcbiIsCiAJCSAgICAgICBfX2Z1bmNfXywgZW5naW5lLT5uYW1lLAogCQkg ICAgICAgcnEtPmZlbmNlLnNlcW5vLCBod3Nfc2Vxbm8oJmgsIHJxKSk7CisJCWk5MTVfZ2VtX3Nl dF93ZWRnZWQoaTkxNSk7CiAJCWVyciA9IC1FSU87CiAJfQogCkBAIC0xNTg4LDcgKzE1NzAsNiBA QCBzdGF0aWMgaW50IGlndF9hdG9taWNfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKIHN0YXRpYyB2b2lkIGZvcmNlX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQogewogCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Ci0Jc2V0X2JpdChJOTE1 X1JFU0VUX0hBTkRPRkYsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpOwogCWk5MTVfcmVzZXQoaTkx NSwgMCwgTlVMTCk7CiB9CiAKQEAgLTE2MTgsNiArMTU5OSwyNiBAQCBzdGF0aWMgaW50IGlndF9h dG9taWNfcmVzZXQodm9pZCAqYXJnKQogCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1 LT5ncHVfZXJyb3IpKQogCQlnb3RvIHVubG9jazsKIAorCWlmIChpbnRlbF9oYXNfZ3B1X3Jlc2V0 KGk5MTUpKSB7CisJCWNvbnN0IHR5cGVvZigqcGhhc2VzKSAqcDsKKworCQlmb3IgKHAgPSBwaGFz ZXM7IHAtPm5hbWU7IHArKykgeworCQkJR0VNX1RSQUNFKCJpbnRlbF9ncHVfcmVzZXQgdW5kZXIg JXNcbiIsIHAtPm5hbWUpOworCisJCQlwLT5jcml0aWNhbF9zZWN0aW9uX2JlZ2luKCk7CisJCQll cnIgPSBpbnRlbF9ncHVfcmVzZXQoaTkxNSwgQUxMX0VOR0lORVMpOworCQkJcC0+Y3JpdGljYWxf c2VjdGlvbl9lbmQoKTsKKworCQkJaWYgKGVycikgeworCQkJCXByX2VycigiaW50ZWxfZ3B1X3Jl c2V0IGZhaWxlZCB1bmRlciAlc1xuIiwKKwkJCQkgICAgICAgcC0+bmFtZSk7CisJCQkJZ290byBv dXQ7CisJCQl9CisJCX0KKworCQlmb3JjZV9yZXNldChpOTE1KTsKKwl9CisKIAlpZiAoaW50ZWxf aGFzX3Jlc2V0X2VuZ2luZShpOTE1KSkgewogCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CiAJCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwppbmRleCBhOGNhYzU2YmU4MzUuLmIx NWM0ZjI2YzU5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX3dvcmthcm91bmRzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX3dvcmthcm91bmRzLmMKQEAgLTIxNCw3ICsyMTQsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3do aXRlbGlzdChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCiBzdGF0aWMgaW50IGRvX2Rl dmljZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc2V0X2JpdChJ OTE1X1JFU0VUX0hBTkRPRkYsICZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvci5mbGFncyk7CiAJaTkx NV9yZXNldChlbmdpbmUtPmk5MTUsIEVOR0lORV9NQVNLKGVuZ2luZS0+aWQpLCAibGl2ZV93b3Jr YXJvdW5kcyIpOwogCXJldHVybiAwOwogfQpAQCAtMzk0LDcgKzM5Myw2IEBAIHN0YXRpYyBpbnQK IGxpdmVfZ3B1X3Jlc2V0X2d0X2VuZ2luZV93b3JrYXJvdW5kcyh2b2lkICphcmcpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Ci0Jc3RydWN0IGk5MTVfZ3B1X2Vycm9y ICplcnJvciA9ICZpOTE1LT5ncHVfZXJyb3I7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJ c3RydWN0IHdhX2xpc3RzIGxpc3RzOwogCWJvb2wgb2s7CkBAIC00MTMsNyArNDExLDYgQEAgbGl2 ZV9ncHVfcmVzZXRfZ3RfZW5naW5lX3dvcmthcm91bmRzKHZvaWQgKmFyZykKIAlpZiAoIW9rKQog CQlnb3RvIG91dDsKIAotCXNldF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3ItPmZsYWdz KTsKIAlpOTE1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTLCAibGl2ZV93b3JrYXJvdW5kcyIpOwog CiAJb2sgPSB2ZXJpZnlfZ3RfZW5naW5lX3dhKGk5MTUsICZsaXN0cywgImFmdGVyIHJlc2V0Iik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMK aW5kZXggM2NkYTY2MjkyZTc2Li44ODhjNjk3OGJjNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKQEAgLTU4LDggKzU4LDggQEAgc3Rh dGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWk5 MTVfZ2VtX2NvbnRleHRzX2xvc3QoaTkxNSk7CiAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKIAotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3QucmV0aXJl X3dvcmspOwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3QuaWRsZV93b3JrKTsK KwlkcmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmd0LnJldGlyZV93b3JrKTsKKwlkcmFpbl9kZWxh eWVkX3dvcmsoJmk5MTUtPmd0LmlkbGVfd29yayk7CiAJaTkxNV9nZW1fZHJhaW5fd29ya3F1ZXVl KGk5MTUpOwogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0tIAoyLjIw LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=