From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 29/46] drm/i915: Remove GPU reset dependence on struct_mutex Date: Mon, 7 Jan 2019 11:54:52 +0000 Message-ID: <20190107115509.12523-29-chris@chris-wilson.co.uk> References: <20190107115509.12523-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 2400B6E745 for ; Mon, 7 Jan 2019 11:55:48 +0000 (UTC) In-Reply-To: <20190107115509.12523-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 aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICAxNCArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA1IC0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAxOCArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmggICAgIHwgICAxIC0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oICAgICAgICAgfCAgMjQgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICA0NyAtLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVzZXQuYyAgICAgICAgICAgICB8IDM5NyArKysrKysrKy0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaCAgICAgICAgICAgICB8ICAgMyAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgIDYgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgICB8ICAgNSArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICAgIHwgIDkyICsrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAgICAgICB8ICAgMiAtCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAgOTEgKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgICAgIHwgIDEzICstCiAu Li4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyAgfCAgNTcgKy0tCiAu Li4vZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgICAgfCAgIDMgLQogMTcg ZmlsZXMgY2hhbmdlZCwgMzE3IGluc2VydGlvbnMoKyksIDQ2MiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDljMzY2NGZiMzlkZS4uYTliYzc3NTJkYTQ5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTI4NCw4ICsxMjg0LDYgQEAg c3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogCQlzZXFfcHV0cyhtLCAiV2VkZ2VkXG4iKTsKIAlpZiAodGVzdF9iaXQoSTkxNV9S RVNFVF9CQUNLT0ZGLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncykpCiAJCXNlcV9wdXRzKG0s ICJSZXNldCBpbiBwcm9ncmVzczogc3RydWN0X211dGV4IGJhY2tvZmZcbiIpOwotCWlmICh0ZXN0 X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKSkKLQkJ c2VxX3B1dHMobSwgIlJlc2V0IGluIHByb2dyZXNzOiByZXNldCBoYW5kb2ZmIHRvIHdhaXRlclxu Iik7CiAJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmRldl9wcml2LT5ncHVfZXJyb3Iud2FpdF9xdWV1 ZSkpCiAJCXNlcV9wdXRzKG0sICJXYWl0ZXIgaG9sZGluZyBzdHJ1Y3QgbXV0ZXhcbiIpOwogCWlm ICh3YWl0cXVldWVfYWN0aXZlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKSkKQEAg LTM5MTQsMTEgKzM5MTIsNiBAQCBpOTE1X3dlZGdlZF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkK IAogCWk5MTVfaGFuZGxlX2Vycm9yKGk5MTUsIHZhbCwgSTkxNV9FUlJPUl9DQVBUVVJFLAogCQkJ ICAiTWFudWFsbHkgc2V0IHdlZGdlZCBlbmdpbmUgbWFzayA9ICVsbHgiLCB2YWwpOwotCi0Jd2Fp dF9vbl9iaXQoJmk5MTUtPmdwdV9lcnJvci5mbGFncywKLQkJICAgIEk5MTVfUkVTRVRfSEFORE9G RiwKLQkJICAgIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKLQogCXJldHVybiAwOwogfQogCkBAIC00 MDczLDEzICs0MDY2LDggQEAgaTkxNV9kcm9wX2NhY2hlc19zZXQodm9pZCAqZGF0YSwgdTY0IHZh bCkKIAkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAl9CiAKLQlpZiAo dmFsICYgRFJPUF9SRVNFVF9BQ1RJVkUgJiYKLQkgICAgaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgm aTkxNS0+Z3B1X2Vycm9yKSkgeworCWlmICh2YWwgJiBEUk9QX1JFU0VUX0FDVElWRSAmJiBpOTE1 X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKQogCQlpOTE1X2hhbmRsZV9lcnJv cihpOTE1LCBBTExfRU5HSU5FUywgMCwgTlVMTCk7Ci0JCXdhaXRfb25fYml0KCZpOTE1LT5ncHVf ZXJyb3IuZmxhZ3MsCi0JCQkgICAgSTkxNV9SRVNFVF9IQU5ET0ZGLAotCQkJICAgIFRBU0tfVU5J TlRFUlJVUFRJQkxFKTsKLQl9CiAKIAlmc19yZWNsYWltX2FjcXVpcmUoR0ZQX0tFUk5FTCk7CiAJ aWYgKHZhbCAmIERST1BfQk9VTkQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAyOWM4MTA1 MzNkMDMuLjVlZjc0OTkxNjZiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yOTg0LDEx ICsyOTg0LDYgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVzZXRfYmFja29mZihzdHJ1Y3Qg aTkxNV9ncHVfZXJyb3IgKmVycm9yKQogCXJldHVybiB1bmxpa2VseSh0ZXN0X2JpdChJOTE1X1JF U0VUX0JBQ0tPRkYsICZlcnJvci0+ZmxhZ3MpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGk5 MTVfcmVzZXRfaGFuZG9mZihzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQotewotCXJldHVy biB1bmxpa2VseSh0ZXN0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZlcnJvci0+ZmxhZ3MpKTsK LX0KLQogc3RhdGljIGlubGluZSBib29sIGk5MTVfdGVybWluYWxseV93ZWRnZWQoc3RydWN0IGk5 MTVfZ3B1X2Vycm9yICplcnJvcikKIHsKIAlyZXR1cm4gdW5saWtlbHkodGVzdF9iaXQoSTkxNV9X RURHRUQsICZlcnJvci0+ZmxhZ3MpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDc0N2Ew OGI4OTYxYS4uODNmYjAyZGFiMThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTY1OCwx MSArNjU4LDYgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAkJICAgICBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzX2NsaWVudCkKIHsK IAltaWdodF9zbGVlcCgpOwotI2lmIElTX0VOQUJMRUQoQ09ORklHX0xPQ0tERVApCi0JR0VNX0JV R19PTihkZWJ1Z19sb2NrcyAmJgotCQkgICAhIWxvY2tkZXBfaXNfaGVsZCgmb2JqLT5iYXNlLmRl di0+c3RydWN0X211dGV4KSAhPQotCQkgICAhIShmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQpKTsK LSNlbmRpZgogCUdFTV9CVUdfT04odGltZW91dCA8IDApOwogCiAJdGltZW91dCA9IGk5MTVfZ2Vt X29iamVjdF93YWl0X3Jlc2VydmF0aW9uKG9iai0+cmVzdiwKQEAgLTQ0ODAsOCArNDQ3NSw2IEBA IHZvaWQgaTkxNV9nZW1fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAK IAlHRU1fVFJBQ0UoIlxuIik7CiAKLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKLQogCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldChpOTE1LCBGT1JDRVdBS0VfQUxMKTsKIApAQCAtNDUwNyw2ICs0NTAw LDcgQEAgdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChpOTE1LCBGT1JDRVdBS0VfQUxMKTsKIAlp bnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKIAorCW11dGV4X2xvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWk5MTVfZ2VtX2NvbnRleHRzX2xvc3QoaTkxNSk7CiAJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIH0KQEAgLTQ1MjEsNiArNDUxNSw4 IEBAIGludCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQog CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAlpbnRlbF9zdXNwZW5kX2d0 X3Bvd2Vyc2F2ZShpOTE1KTsKIAorCWZsdXNoX3dvcmtxdWV1ZShpOTE1LT53cSk7CisKIAltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogCS8qCkBAIC00NTUwLDExICs0NTQ2 LDkgQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CiAJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7IC8qIGVuc3VyZSB3ZSBmbHVzaCBhZnRlciB3 ZWRnaW5nICovCiAKIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWk5 MTVfcmVzZXRfZmx1c2goaTkxNSk7CiAKLQlpbnRlbF91Y19zdXNwZW5kKGk5MTUpOwotCi0JY2Fu Y2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmspOwot CWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3QucmV0aXJlX3dvcmspOworCWRyYWlu X2RlbGF5ZWRfd29yaygmaTkxNS0+Z3QucmV0aXJlX3dvcmspOwogCiAJLyoKIAkgKiBBcyB0aGUg aWRsZV93b3JrIGlzIHJlYXJtaW5nIGlmIGl0IGRldGVjdHMgYSByYWNlLCBwbGF5IHNhZmUgYW5k CkBAIC00NTYyLDYgKzQ1NTYsOCBAQCBpbnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIAkgKi8KIAlkcmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmd0Lmlk bGVfd29yayk7CiAKKwlpbnRlbF91Y19zdXNwZW5kKGk5MTUpOworCiAJLyoKIAkgKiBBc3NlcnQg dGhhdCB3ZSBzdWNjZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5kCiAJICogcmVzZXQg dGhlIEdQVSBiYWNrIHRvIGl0cyBpZGxlLCBsb3cgcG93ZXIgc3RhdGUuCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5oCmluZGV4IDk5YTMxZGVkNGRmZC4uMDlkY2FmMTQx MjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaApAQCAtNTAs NCArNTAsMyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnIHsKIH07CiAKICNlbmRpZgotCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDkyMjliMDNkNjI5Yi4uYTAwMzllYTk3 Y2RjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMzksNiArMzksNyBAQAog I2luY2x1ZGUgPGxpbnV4L3BhZ2V2ZWMuaD4KIAogI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgor I2luY2x1ZGUgImk5MTVfcmVzZXQuaCIKICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCiAjaW5j bHVkZSAiaTkxNV90aW1lbGluZS5oIgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu aAppbmRleCA2MDQyOTFmNzc2MmQuLjczMzcyM2UxZWEwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5oCkBAIC0xOTcsNiArMTk3LDggQEAgc3RydWN0IGk5MTVfZ3B1X3N0YXRl IHsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwgKmZpdDsKIH07CiAKK3N0cnVjdCBpOTE1X2dw dV9yZXN0YXJ0OworCiBzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgewogCS8qIEZvciBoYW5nY2hlY2sg dGltZXIgKi8KICNkZWZpbmUgRFJNX0k5MTVfSEFOR0NIRUNLX1BFUklPRCAxNTAwIC8qIGluIG1z ICovCkBAIC0yNDcsMTUgKzI0OSw2IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAJICogaTkx NV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoKT8pLiBJOTE1X1JFU0VUX0JBQ0tPRkYgc2VydmVz IGEKIAkgKiBzZWNvbmRhcnkgcm9sZSBpbiBwcmV2ZW50aW5nIHR3byBjb25jdXJyZW50IGdsb2Jh bCByZXNldCBhdHRlbXB0cy4KIAkgKgotCSAqICNJOTE1X1JFU0VUX0hBTkRPRkYgLSBUbyBwZXJm b3JtIHRoZSBhY3R1YWwgR1BVIHJlc2V0LCB3ZSBuZWVkIHRoZQotCSAqIHN0cnVjdF9tdXRleC4g V2UgdHJ5IHRvIGFjcXVpcmUgdGhlIHN0cnVjdF9tdXRleCBpbiB0aGUgcmVzZXQgd29ya2VyLAot CSAqIGJ1dCBpdCBtYXkgYmUgaGVsZCBieSBzb21lIGxvbmcgcnVubmluZyB3YWl0ZXIgKHRoYXQg d2UgY2Fubm90Ci0JICogaW50ZXJydXB0IHdpdGhvdXQgY2F1c2luZyB0cm91YmxlKS4gT25jZSB3 ZSBhcmUgcmVhZHkgdG8gZG8gdGhlIEdQVQotCSAqIHJlc2V0LCB3ZSBzZXQgdGhlIEk5MTVfUkVT RVRfSEFORE9GRiBiaXQgYW5kIHdha2V1cCBhbnkgd2FpdGVycy4gSWYKLQkgKiB0aGV5IGFscmVh ZHkgaG9sZCB0aGUgc3RydWN0X211dGV4IGFuZCB3YW50IHRvIHBhcnRpY2lwYXRlIHRoZXkgY2Fu Ci0JICogaW5zcGVjdCB0aGUgYml0IGFuZCBkbyB0aGUgcmVzZXQgZGlyZWN0bHksIG90aGVyd2lz ZSB0aGUgd29ya2VyCi0JICogd2FpdHMgZm9yIHRoZSBzdHJ1Y3RfbXV0ZXguCi0JICoKIAkgKiAj STkxNV9SRVNFVF9FTkdJTkVbbnVtX2VuZ2luZXNdIC0gU2luY2UgdGhlIGRyaXZlciBkb2Vzbid0 IG5lZWQgdG8KIAkgKiBhY3F1aXJlIHRoZSBzdHJ1Y3RfbXV0ZXggdG8gcmVzZXQgYW4gZW5naW5l LCB3ZSBuZWVkIGFuIGV4cGxpY2l0CiAJICogZmxhZyB0byBwcmV2ZW50IHR3byBjb25jdXJyZW50 IHJlc2V0IGF0dGVtcHRzIGluIHRoZSBzYW1lIGVuZ2luZS4KQEAgLTI2OSwyMCArMjYyLDEzIEBA IHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAJICovCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKICNk ZWZpbmUgSTkxNV9SRVNFVF9CQUNLT0ZGCTAKLSNkZWZpbmUgSTkxNV9SRVNFVF9IQU5ET0ZGCTEK LSNkZWZpbmUgSTkxNV9SRVNFVF9NT0RFU0VUCTIKLSNkZWZpbmUgSTkxNV9SRVNFVF9FTkdJTkUJ MworI2RlZmluZSBJOTE1X1JFU0VUX01PREVTRVQJMQorI2RlZmluZSBJOTE1X1JFU0VUX0VOR0lO RQkyCiAjZGVmaW5lIEk5MTVfV0VER0VECQkoQklUU19QRVJfTE9ORyAtIDEpCiAKIAkvKiogTnVt YmVyIG9mIHRpbWVzIGFuIGVuZ2luZSBoYXMgYmVlbiByZXNldCAqLwogCXUzMiByZXNldF9lbmdp bmVfY291bnRbSTkxNV9OVU1fRU5HSU5FU107CiAKLQkvKiogU2V0IG9mIHN0YWxsZWQgZW5naW5l cyB3aXRoIGd1aWx0eSByZXF1ZXN0cywgaW4gdGhlIGN1cnJlbnQgcmVzZXQgKi8KLQl1MzIgc3Rh bGxlZF9tYXNrOwotCi0JLyoqIFJlYXNvbiBmb3IgdGhlIGN1cnJlbnQgKmdsb2JhbCogcmVzZXQg Ki8KLQljb25zdCBjaGFyICpyZWFzb247Ci0KIAlzdHJ1Y3QgbXV0ZXggd2VkZ2VfbXV0ZXg7IC8q IHNlcmlhbGlzZXMgd2VkZ2luZy91bndlZGdpbmcgKi8KIAogCS8qKgpAQCAtMjk5LDYgKzI4NSw4 IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAKIAkvKiBGb3IgbWlzc2VkIGlycS9zZXFubyBz aW11bGF0aW9uLiAqLwogCXVuc2lnbmVkIGxvbmcgdGVzdF9pcnFfcmluZ3M7CisKKwlzdHJ1Y3Qg aTkxNV9ncHVfcmVzdGFydCAqcmVzdGFydDsKIH07CiAKIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9z dGF0ZV9idWYgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwppbmRleCBlMjM2MTE0MzM2 OTUuLmM0NjczOTJmNjJkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKQEAgLTEw NTIsMTggKzEwNTIsNiBAQCBzdGF0aWMgYm9vbCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wg X19pOTE1X3dhaXRfcmVxdWVzdF9jaGVja19hbmRfcmVzZXQoc3RydWN0IGk5MTVfcmVxdWVzdCAq cmVxdWVzdCkKLXsKLQlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJnJlcXVlc3QtPmk5 MTUtPmdwdV9lcnJvcjsKLQotCWlmIChsaWtlbHkoIWk5MTVfcmVzZXRfaGFuZG9mZihlcnJvcikp KQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7 Ci0JaTkxNV9yZXNldChyZXF1ZXN0LT5pOTE1LCBlcnJvci0+c3RhbGxlZF9tYXNrLCBlcnJvci0+ cmVhc29uKTsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQogLyoqCiAgKiBpOTE1X3JlcXVlc3Rfd2FpdCAt IHdhaXQgdW50aWwgZXhlY3V0aW9uIG9mIHJlcXVlc3QgaGFzIGZpbmlzaGVkCiAgKiBAcnE6IHRo ZSByZXF1ZXN0IHRvIHdhaXQgdXBvbgpAQCAtMTA4OSwxNyArMTA3NywxMCBAQCBsb25nIGk5MTVf cmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogewogCWNvbnN0IGludCBzdGF0 ZSA9IGZsYWdzICYgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgPwogCQlUQVNLX0lOVEVSUlVQVElC TEUgOiBUQVNLX1VOSU5URVJSVVBUSUJMRTsKLQl3YWl0X3F1ZXVlX2hlYWRfdCAqZXJycSA9ICZy cS0+aTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVldWU7Ci0JREVGSU5FX1dBSVRfRlVOQyhyZXNldCwg ZGVmYXVsdF93YWtlX2Z1bmN0aW9uKTsKIAlERUZJTkVfV0FJVF9GVU5DKGV4ZWMsIGRlZmF1bHRf d2FrZV9mdW5jdGlvbik7CiAJc3RydWN0IGludGVsX3dhaXQgd2FpdDsKIAogCW1pZ2h0X3NsZWVw KCk7Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdfTE9DS0RFUCkKLQlHRU1fQlVHX09OKGRlYnVnX2xv Y2tzICYmCi0JCSAgICEhbG9ja2RlcF9pc19oZWxkKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCkgIT0KLQkJICAgISEoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKSk7Ci0jZW5kaWYKIAlHRU1f QlVHX09OKHRpbWVvdXQgPCAwKTsKIAogCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkK QEAgLTExMDksMTEgKzEwOTAsNyBAQCBsb25nIGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLAogCQlyZXR1cm4gLUVUSU1FOwogCiAJdHJhY2VfaTkxNV9yZXF1ZXN0X3dh aXRfYmVnaW4ocnEsIGZsYWdzKTsKLQogCWFkZF93YWl0X3F1ZXVlKCZycS0+ZXhlY3V0ZSwgJmV4 ZWMpOwotCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQpCi0JCWFkZF93YWl0X3F1ZXVlKGVy cnEsICZyZXNldCk7Ci0KIAlpbnRlbF93YWl0X2luaXQoJndhaXQpOwogCWlmIChmbGFncyAmIEk5 MTVfV0FJVF9QUklPUklUWSkKIAkJaTkxNV9zY2hlZHVsZV9idW1wX3ByaW9yaXR5KHJxLCBJOTE1 X1BSSU9SSVRZX1dBSVQpOwpAQCAtMTEyNCwxMCArMTEwMSw2IEBAIGxvbmcgaTkxNV9yZXF1ZXN0 X3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCWlmIChpbnRlbF93YWl0X3VwZGF0ZV9y ZXF1ZXN0KCZ3YWl0LCBycSkpCiAJCQlicmVhazsKIAotCQlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRf TE9DS0VEICYmCi0JCSAgICBfX2k5MTVfd2FpdF9yZXF1ZXN0X2NoZWNrX2FuZF9yZXNldChycSkp Ci0JCQljb250aW51ZTsKLQogCQlpZiAoc2lnbmFsX3BlbmRpbmdfc3RhdGUoc3RhdGUsIGN1cnJl bnQpKSB7CiAJCQl0aW1lb3V0ID0gLUVSRVNUQVJUU1lTOwogCQkJZ290byBjb21wbGV0ZTsKQEAg LTExNTcsOSArMTEzMCw2IEBAIGxvbmcgaTkxNV9yZXF1ZXN0X3dhaXQoc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEsCiAJCSAqLwogCQlnb3RvIHdha2V1cDsKIAotCWlmIChmbGFncyAmIEk5MTVfV0FJ VF9MT0NLRUQpCi0JCV9faTkxNV93YWl0X3JlcXVlc3RfY2hlY2tfYW5kX3Jlc2V0KHJxKTsKLQog CWZvciAoOzspIHsKIAkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRlKHN0YXRlLCBjdXJyZW50KSkg ewogCQkJdGltZW91dCA9IC1FUkVTVEFSVFNZUzsKQEAgLTExODMsMjEgKzExNTMsNiBAQCBsb25n IGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQlpZiAoaTkxNV9y ZXF1ZXN0X2NvbXBsZXRlZChycSkpCiAJCQlicmVhazsKIAotCQkvKgotCQkgKiBJZiB0aGUgR1BV IGlzIGh1bmcsIGFuZCB3ZSBob2xkIHRoZSBsb2NrLCByZXNldCB0aGUgR1BVCi0JCSAqIGFuZCB0 aGVuIGNoZWNrIGZvciBjb21wbGV0aW9uLiBPbiBhIGZ1bGwgcmVzZXQsIHRoZSBlbmdpbmUncwot CQkgKiBIVyBzZXFubyB3aWxsIGJlIGFkdmFuY2VkIHBhc3NlZCB1cyBhbmQgd2UgYXJlIGNvbXBs ZXRlLgotCQkgKiBJZiB3ZSBkbyBhIHBhcnRpYWwgcmVzZXQsIHdlIGhhdmUgdG8gd2FpdCBmb3Ig dGhlIEdQVSB0bwotCQkgKiByZXN1bWUgYW5kIHVwZGF0ZSB0aGUgYnJlYWRjcnVtYi4KLQkJICoK LQkJICogSWYgd2UgZG9uJ3QgaG9sZCB0aGUgbXV0ZXgsIHdlIGNhbiBqdXN0IHdhaXQgZm9yIHRo ZSB3b3JrZXIKLQkJICogdG8gY29tZSBhbG9uZyBhbmQgdXBkYXRlIHRoZSBicmVhZGNydW1iIChl aXRoZXIgZGlyZWN0bHkKLQkJICogaXRzZWxmLCBvciBpbmRpcmVjdGx5IGJ5IHJlY292ZXJpbmcg dGhlIEdQVSkuCi0JCSAqLwotCQlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEICYmCi0JCSAg ICBfX2k5MTVfd2FpdF9yZXF1ZXN0X2NoZWNrX2FuZF9yZXNldChycSkpCi0JCQljb250aW51ZTsK LQogCQkvKiBPbmx5IHNwaW4gaWYgd2Uga25vdyB0aGUgR1BVIGlzIHByb2Nlc3NpbmcgdGhpcyBy ZXF1ZXN0ICovCiAJCWlmIChfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJxLCB3YWl0LnNlcW5vLCBzdGF0 ZSwgMikpCiAJCQlicmVhazsKQEAgLTEyMTEsOCArMTE2Niw2IEBAIGxvbmcgaTkxNV9yZXF1ZXN0 X3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJaW50ZWxfZW5naW5lX3JlbW92ZV93YWl0 KHJxLT5lbmdpbmUsICZ3YWl0KTsKIGNvbXBsZXRlOgogCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFT S19SVU5OSU5HKTsKLQlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKQotCQlyZW1vdmVfd2Fp dF9xdWV1ZShlcnJxLCAmcmVzZXQpOwogCXJlbW92ZV93YWl0X3F1ZXVlKCZycS0+ZXhlY3V0ZSwg JmV4ZWMpOwogCXRyYWNlX2k5MTVfcmVxdWVzdF93YWl0X2VuZChycSk7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVzZXQuYwppbmRleCBjOWE4NDRkMjYyNmYuLjMwZjY2OWFhNTI2YSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVzZXQuYwpAQCAtNSw2ICs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGlu dXgvc2NoZWQvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9zdG9wX21hY2hpbmUuaD4KIAogI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV9ncHVfZXJyb3IuaCIKQEAgLTE3LDIyICsx OCwyMyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfc2tpcF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKQogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7CiAJ c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmh1bmdfY3R4ID0gcnEtPmdlbV9jb250ZXh0OwogCXN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSA9IHJxLT50aW1lbGluZTsKLQl1bnNpZ25lZCBs b25nIGZsYWdzOwogCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT50aW1lbGluZS5sb2Nr KTsKIAlHRU1fQlVHX09OKHRpbWVsaW5lID09ICZlbmdpbmUtPnRpbWVsaW5lKTsKIAotCXNwaW5f bG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIAlzcGluX2xvY2so JnRpbWVsaW5lLT5sb2NrKTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUocnEsICZl bmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKQotCQlpZiAocnEtPmdlbV9jb250ZXh0ID09 IGh1bmdfY3R4KQotCQkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIC1FSU8pOworCWlmIChycS0+Z2xv YmFsX3NlcW5vKSB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUocnEsCisJCQkJCSAg ICAgJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsIGxpbmspCisJCQlpZiAocnEtPmdlbV9jb250 ZXh0ID09IGh1bmdfY3R4KQorCQkJCWk5MTVfcmVxdWVzdF9za2lwKHJxLCAtRUlPKTsKKwl9CiAK IAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmdGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQogCQlp OTE1X3JlcXVlc3Rfc2tpcChycSwgLUVJTyk7CiAKIAlzcGluX3VubG9jaygmdGltZWxpbmUtPmxv Y2spOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxh Z3MpOwogfQogCiBzdGF0aWMgdm9pZCBjbGllbnRfbWFya19ndWlsdHkoc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LApAQCAtNTksNyArNjEsNyBAQCBzdGF0aWMgdm9pZCBj bGllbnRfbWFya19ndWlsdHkoc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 LAogCX0KIH0KIAotc3RhdGljIHZvaWQgY29udGV4dF9tYXJrX2d1aWx0eShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KQorc3RhdGljIGJvb2wgY29udGV4dF9tYXJrX2d1aWx0eShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQogewogCXVuc2lnbmVkIGludCBzY29yZTsKIAlib29sIGJh bm5lZCwgYmFubmFibGU7CkBAIC03Miw3ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfbWFy a19ndWlsdHkoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIAogCS8qIENvb2wgY29udGV4 dHMgZG9uJ3QgYWNjdW11bGF0ZSBjbGllbnQgYmFuIHNjb3JlICovCiAJaWYgKCFiYW5uYWJsZSkK LQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYmFubmVkKSB7CiAJCURSTV9ERUJV R19EUklWRVIoImNvbnRleHQgJXM6IGd1aWx0eSAlZCwgc2NvcmUgJXUsIGJhbm5lZFxuIiwKQEAg LTgzLDYgKzg1LDggQEAgc3RhdGljIHZvaWQgY29udGV4dF9tYXJrX2d1aWx0eShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQogCiAJaWYgKCFJU19FUlJfT1JfTlVMTChjdHgtPmZpbGVfcHJp dikpCiAJCWNsaWVudF9tYXJrX2d1aWx0eShjdHgtPmZpbGVfcHJpdiwgY3R4KTsKKworCXJldHVy biBiYW5uZWQ7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbnRleHRfbWFya19pbm5vY2VudChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQpAQCAtOTAsNiArOTQsMjEgQEAgc3RhdGljIHZvaWQgY29u dGV4dF9tYXJrX2lubm9jZW50KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJYXRvbWlj X2luYygmY3R4LT5hY3RpdmVfY291bnQpOwogfQogCit2b2lkIGk5MTVfcmVzZXRfcmVxdWVzdChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgYm9vbCBndWlsdHkpCit7CisJbG9ja2RlcF9hc3NlcnRf aGVsZCgmcnEtPmVuZ2luZS0+dGltZWxpbmUubG9jayk7CisJR0VNX0JVR19PTihpOTE1X3JlcXVl c3RfY29tcGxldGVkKHJxKSk7CisKKwlpZiAoZ3VpbHR5KSB7CisJCWk5MTVfcmVxdWVzdF9za2lw KHJxLCAtRUlPKTsKKwkJaWYgKGNvbnRleHRfbWFya19ndWlsdHkocnEtPmdlbV9jb250ZXh0KSkK KwkJCWVuZ2luZV9za2lwX2NvbnRleHQocnEpOworCX0gZWxzZSB7CisJCWRtYV9mZW5jZV9zZXRf ZXJyb3IoJnJxLT5mZW5jZSwgLUVBR0FJTik7CisJCWNvbnRleHRfbWFya19pbm5vY2VudChycS0+ Z2VtX2NvbnRleHQpOworCX0KK30KKwogc3RhdGljIHZvaWQgZ2VuM19zdG9wX2VuZ2luZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwpAQCAtNTMzLDIyICs1NTIsNiBAQCBpbnQgaW50ZWxf Z3B1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgZW5n aW5lX21hc2spCiAJaW50IHJldHJ5OwogCWludCByZXQ7CiAKLQkvKgotCSAqIFdlIHdhbnQgdG8g cGVyZm9ybSBwZXItZW5naW5lIHJlc2V0IGZyb20gYXRvbWljIGNvbnRleHQgKGUuZy4KLQkgKiBz b2Z0aXJxKSwgd2hpY2ggaW1wb3NlcyB0aGUgY29uc3RyYWludCB0aGF0IHdlIGNhbm5vdCBzbGVl cC4KLQkgKiBIb3dldmVyLCBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgc3BlbmRpbmcgYSBiaXQg b2YgdGltZSB3YWl0aW5nCi0JICogZm9yIGEgcmVzZXQgaGVscHMgaW4gdmFyaW91cyBjYXNlcywg c28gZm9yIGEgZnVsbC1kZXZpY2UgcmVzZXQKLQkgKiB3ZSBhcHBseSB0aGUgb3Bwb3NpdGUgcnVs ZSBhbmQgd2FpdCBpZiB3ZSB3YW50IHRvLiBBcyB3ZSBzaG91bGQKLQkgKiBhbHdheXMgZm9sbG93 IHVwIGEgZmFpbGVkIHBlci1lbmdpbmUgcmVzZXQgd2l0aCBhIGZ1bGwgZGV2aWNlIHJlc2V0LAot CSAqIGJlaW5nIGEgbGl0dGxlIGZhc3Rlciwgc3RyaWN0ZXIgYW5kIG1vcmUgZXJyb3IgcHJvbmUg Zm9yIHRoZQotCSAqIGF0b21pYyBjYXNlIHNlZW1zIGFuIGFjY2VwdGFibGUgY29tcHJvbWlzZS4K LQkgKgotCSAqIFVuZm9ydHVuYXRlbHkgdGhpcyBsZWFkcyB0byBhIGJpbW9kYWwgcm91dGluZSwg d2hlbiB0aGUgZ29hbCB3YXMKLQkgKiB0byBoYXZlIGEgc2luZ2xlIHJlc2V0IGZ1bmN0aW9uIHRo YXQgd29ya2VkIGZvciByZXNldHRpbmcgYW55Ci0JICogbnVtYmVyIG9mIGVuZ2luZXMgc2ltdWx0 YW5lb3VzbHkuCi0JICovCi0JbWlnaHRfc2xlZXBfaWYoZW5naW5lX21hc2sgPT0gQUxMX0VOR0lO RVMpOwotCiAJLyoKIAkgKiBJZiB0aGUgcG93ZXIgd2VsbCBzbGVlcHMgZHVyaW5nIHRoZSByZXNl dCwgdGhlIHJlc2V0CiAJICogcmVxdWVzdCBtYXkgYmUgZHJvcHBlZCBhbmQgbmV2ZXIgY29tcGxl dGVzIChjYXVzaW5nIC1FSU8pLgpAQCAtNTgwLDggKzU4Myw2IEBAIGludCBpbnRlbF9ncHVfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBlbmdpbmVfbWFz aykKIAkJfQogCQlpZiAocmV0ICE9IC1FVElNRURPVVQgfHwgZW5naW5lX21hc2sgIT0gQUxMX0VO R0lORVMpCiAJCQlicmVhazsKLQotCQljb25kX3Jlc2NoZWQoKTsKIAl9CiAJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9wdXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7CiAKQEAgLTYyMCwxMSArNjIxLDgg QEAgaW50IGludGVsX3Jlc2V0X2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKICAq IEVuc3VyZSBpcnEgaGFuZGxlciBmaW5pc2hlcywgYW5kIG5vdCBydW4gYWdhaW4uCiAgKiBBbHNv IHJldHVybiB0aGUgYWN0aXZlIHJlcXVlc3Qgc28gdGhhdCB3ZSBvbmx5IHNlYXJjaCBmb3IgaXQg b25jZS4KICAqLwotc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgotcmVzZXRfcHJlcGFyZV9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgcmVzZXRf cHJlcGFyZV9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxOwotCiAJLyoKIAkgKiBEdXJpbmcgdGhlIHJlc2V0IHNlcXVlbmNl LCB3ZSBtdXN0IHByZXZlbnQgdGhlIGVuZ2luZSBmcm9tCiAJICogZW50ZXJpbmcgUkM2LiBBcyB0 aGUgY29udGV4dCBzdGF0ZSBpcyB1bmRlZmluZWQgdW50aWwgd2UgcmVzdGFydApAQCAtNjMzLDE2 MiArNjMxLDg2IEBAIHJlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkgKiBHUFUgc3RhdGUgdXBvbiByZXN1bWUsIGkuZS4gZmFpbCB0byByZXN0YXJ0 IGFmdGVyIGEgcmVzZXQuCiAJICovCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZW5naW5l LT5pOTE1LCBGT1JDRVdBS0VfQUxMKTsKLQotCXJxID0gZW5naW5lLT5yZXNldC5wcmVwYXJlKGVu Z2luZSk7Ci0JaWYgKHJxICYmIHJxLT5mZW5jZS5lcnJvciA9PSAtRUlPKQotCQlycSA9IEVSUl9Q VFIoLUVJTyk7IC8qIFByZXZpb3VzIHJlc2V0IGZhaWxlZCEgKi8KLQotCXJldHVybiBycTsKKwll bmdpbmUtPnJlc2V0LnByZXBhcmUoZW5naW5lKTsKIH0KIAotc3RhdGljIGludCByZXNldF9wcmVw YXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQorc3RhdGljIHZvaWQgcmVzZXRfcHJl cGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CiAJZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7Ci0JaW50IGVyciA9IDA7CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBp OTE1LCBpZCkgewotCQlycSA9IHJlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7Ci0JCWlmIChJ U19FUlIocnEpKSB7Ci0JCQllcnIgPSBQVFJfRVJSKHJxKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0K LQkJZW5naW5lLT5oYW5nY2hlY2suYWN0aXZlX3JlcXVlc3QgPSBycTsKLQl9CisJZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpCisJCXJlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7 CiAKLQlpOTE1X2dlbV9yZXZva2VfZmVuY2VzKGk5MTUpOwogCWludGVsX3VjX3Nhbml0aXplKGk5 MTUpOwotCi0JcmV0dXJuIGVycjsKIH0KIAotLyogUmV0dXJucyB0aGUgcmVxdWVzdCBpZiBpdCB3 YXMgZ3VpbHR5IG9mIHRoZSBoYW5nICovCi1zdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCi1y ZXNldF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkgICAgICBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKLQkgICAgICBib29sIHN0YWxsZWQpCitzdGF0aWMgaW50IGd0 X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgc3RhbGxl ZF9tYXNrKQogeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKKwlpbnQgZXJyOworCiAJLyoKLQkgKiBUaGUgZ3VpbHR5IHJlcXVlc3Qg d2lsbCBnZXQgc2tpcHBlZCBvbiBhIGh1bmcgZW5naW5lLgotCSAqCi0JICogVXNlcnMgb2YgY2xp ZW50IGRlZmF1bHQgY29udGV4dHMgZG8gbm90IHJlbHkgb24gbG9naWNhbAotCSAqIHN0YXRlIHBy ZXNlcnZlZCBiZXR3ZWVuIGJhdGNoZXMgc28gaXQgaXMgc2FmZSB0byBleGVjdXRlCi0JICogcXVl dWVkIHJlcXVlc3RzIGZvbGxvd2luZyB0aGUgaGFuZy4gTm9uIGRlZmF1bHQgY29udGV4dHMKLQkg KiByZWx5IG9uIHByZXNlcnZlZCBzdGF0ZSwgc28gc2tpcHBpbmcgYSBiYXRjaCBsb3NlcyB0aGUK LQkgKiBldm9sdXRpb24gb2YgdGhlIHN0YXRlIGFuZCBpdCBuZWVkcyB0byBiZSBjb25zaWRlcmVk IGNvcnJ1cHRlZC4KLQkgKiBFeGVjdXRpbmcgbW9yZSBxdWV1ZWQgYmF0Y2hlcyBvbiB0b3Agb2Yg Y29ycnVwdGVkIHN0YXRlIGlzCi0JICogcmlza3kuIEJ1dCB3ZSB0YWtlIHRoZSByaXNrIGJ5IHRy eWluZyB0byBhZHZhbmNlIHRocm91Z2gKLQkgKiB0aGUgcXVldWVkIHJlcXVlc3RzIGluIG9yZGVy IHRvIG1ha2UgdGhlIGNsaWVudCBiZWhhdmlvdXIKLQkgKiBtb3JlIHByZWRpY3RhYmxlIGFyb3Vu ZCByZXNldHMsIGJ5IG5vdCB0aHJvd2luZyBhd2F5IHJhbmRvbQotCSAqIGFtb3VudCBvZiBiYXRj aGVzIGl0IGhhcyBwcmVwYXJlZCBmb3IgZXhlY3V0aW9uLiBTb3BoaXN0aWNhdGVkCi0JICogY2xp ZW50cyBjYW4gdXNlIGdlbV9yZXNldF9zdGF0c19pb2N0bCBhbmQgZG1hIGZlbmNlIHN0YXR1cwot CSAqIChleHBvcnRlZCB2aWEgc3luY19maWxlIGluZm8gaW9jdGwgb24gZXhwbGljaXQgZmVuY2Vz KSB0byBvYnNlcnZlCi0JICogd2hlbiBpdCBsb3NlcyB0aGUgY29udGV4dCBzdGF0ZSBhbmQgc2hv dWxkIHJlYnVpbGQgYWNjb3JkaW5nbHkuCi0JICoKLQkgKiBUaGUgY29udGV4dCBiYW4sIGFuZCB1 bHRpbWF0ZWx5IHRoZSBjbGllbnQgYmFuLCBtZWNoYW5pc20gYXJlIHNhZmV0eQotCSAqIHZhbHZl cyBpZiBjbGllbnQgc3VibWlzc2lvbiBlbmRzIHVwIHJlc3VsdGluZyBpbiBub3RoaW5nIG1vcmUg dGhhbgotCSAqIHN1YnNlcXVlbnQgaGFuZ3MuCisJICogRXZlcnl0aGluZyBkZXBlbmRzIG9uIGhh dmluZyB0aGUgR1RUIHJ1bm5pbmcsIHNvIHdlIG5lZWQgdG8gc3RhcnQKKwkgKiB0aGVyZS4KIAkg Ki8KKwllcnIgPSBpOTE1X2dndHRfZW5hYmxlX2h3KGk5MTUpOworCWlmIChlcnIpCisJCXJldHVy biBlcnI7CiAKLQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpIHsKLQkJR0VNX1RSQUNF KCIlcyBwYXJkb25lZCBnbG9iYWw9JWQgKGZlbmNlICVsbHg6JWxsZCksIGN1cnJlbnQgJWRcbiIs Ci0JCQkgIGVuZ2luZS0+bmFtZSwgcnEtPmdsb2JhbF9zZXFubywKLQkJCSAgcnEtPmZlbmNlLmNv bnRleHQsIHJxLT5mZW5jZS5zZXFubywKLQkJCSAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdp bmUpKTsKLQkJc3RhbGxlZCA9IGZhbHNlOwotCX0KLQotCWlmIChzdGFsbGVkKSB7Ci0JCWNvbnRl eHRfbWFya19ndWlsdHkocnEtPmdlbV9jb250ZXh0KTsKLQkJaTkxNV9yZXF1ZXN0X3NraXAocnEs IC1FSU8pOworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQorCQlpbnRlbF9lbmdp bmVfcmVzZXQoZW5naW5lLCBzdGFsbGVkX21hc2sgJiBFTkdJTkVfTUFTSyhpZCkpOwogCi0JCS8q IElmIHRoaXMgY29udGV4dCBpcyBub3cgYmFubmVkLCBza2lwIGFsbCBwZW5kaW5nIHJlcXVlc3Rz LiAqLwotCQlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19iYW5uZWQocnEtPmdlbV9jb250ZXh0KSkK LQkJCWVuZ2luZV9za2lwX2NvbnRleHQocnEpOwotCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIFNpbmNl IHRoaXMgaXMgbm90IHRoZSBodW5nIGVuZ2luZSwgaXQgbWF5IGhhdmUgYWR2YW5jZWQKLQkJICog c2luY2UgdGhlIGhhbmcgZGVjbGFyYXRpb24uIERvdWJsZSBjaGVjayBieSByZWZpbmRpbmcKLQkJ ICogdGhlIGFjdGl2ZSByZXF1ZXN0IGF0IHRoZSB0aW1lIG9mIHRoZSByZXNldC4KLQkJICovCi0J CXJxID0gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwotCQlpZiAocnEpIHsK LQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQkJCWNvbnRleHRfbWFya19pbm5vY2VudChycS0+ Z2VtX2NvbnRleHQpOwotCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigmcnEtPmZlbmNlLCAtRUFHQUlO KTsKLQotCQkJLyogUmV3aW5kIHRoZSBlbmdpbmUgdG8gcmVwbGF5IHRoZSBpbmNvbXBsZXRlIHJx ICovCi0JCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7 Ci0JCQlycSA9IGxpc3RfcHJldl9lbnRyeShycSwgbGluayk7Ci0JCQlpZiAoJnJxLT5saW5rID09 ICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzKQotCQkJCXJxID0gTlVMTDsKLQkJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwotCQl9Ci0JfQor CWk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKGk5MTUpOwogCi0JcmV0dXJuIHJxOworCXJldHVybiBl cnI7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCi0JCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCi0JCQkgYm9vbCBzdGFsbGVk KQorc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7Ci0JaWYgKHJxKQotCQlycSA9IHJlc2V0X3JlcXVlc3QoZW5naW5lLCBycSwg c3RhbGxlZCk7Ci0KLQkvKiBTZXR1cCB0aGUgQ1MgdG8gcmVzdW1lIGZyb20gdGhlIGJyZWFkY3J1 bWIgb2YgdGhlIGh1bmcgcmVxdWVzdCAqLwotCWVuZ2luZS0+cmVzZXQucmVzZXQoZW5naW5lLCBy cSk7CisJZW5naW5lLT5yZXNldC5maW5pc2goZW5naW5lKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dChlbmdpbmUtPmk5MTUsIEZPUkNFV0FLRV9BTEwpOwogfQogCi1zdGF0aWMgdm9pZCBn dF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IHN0YWxs ZWRfbWFzaykKK3N0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0IHsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg d29yazsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKK307CisKK3N0YXRpYyB2b2lk IHJlc3RhcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CisJc3RydWN0IGk5MTVf Z3B1X3Jlc3RhcnQgKmFyZyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmFyZyksIHdvcmsp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnLT5pOTE1OwogCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKwlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAotCWk5MTVfcmV0aXJlX3JlcXVl c3RzKGk5MTUpOworCXNtcF9zdG9yZV9tYihpOTE1LT5ncHVfZXJyb3IucmVzdGFydCwgTlVMTCk7 CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewotCQlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2U7Ci0KLQkJcmVzZXRfZW5naW5lKGVuZ2luZSwKLQkJCSAgICAgZW5naW5lLT5o YW5nY2hlY2suYWN0aXZlX3JlcXVlc3QsCi0JCQkgICAgIHN0YWxsZWRfbWFzayAmIEVOR0lORV9N QVNLKGlkKSk7Ci0JCWNlID0gZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+bGFzdF9yZXRpcmVkX2Nv bnRleHQpOwotCQlpZiAoY2UpCi0JCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKKwkJc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnE7CiAKIAkJLyoKIAkJICogT3N0ZW5zaWJpbHksIHdlIGFsd2F5cyB3 YW50IGEgY29udGV4dCBsb2FkZWQgZm9yIHBvd2Vyc2F2aW5nLAogCQkgKiBzbyBpZiB0aGUgZW5n aW5lIGlzIGlkbGUgYWZ0ZXIgdGhlIHJlc2V0LCBzZW5kIGEgcmVxdWVzdAogCQkgKiB0byBsb2Fk IG91ciBzY3JhdGNoIGtlcm5lbF9jb250ZXh0LgotCQkgKgotCQkgKiBNb3JlIG15c3RlcmlvdXNs eSwgaWYgd2UgbGVhdmUgdGhlIGVuZ2luZSBpZGxlIGFmdGVyIGEgcmVzZXQsCi0JCSAqIHRoZSBu ZXh0IHVzZXJzcGFjZSBiYXRjaCBtYXkgaGFuZywgd2l0aCB3aGF0IGFwcGVhcnMgdG8gYmUKLQkJ ICogYW4gaW5jb2hlcmVudCByZWFkIGJ5IHRoZSBDUyAocHJlc3VtYWJseSBzdGFsZSBUTEIpLiBB bgotCQkgKiBlbXB0eSByZXF1ZXN0IGFwcGVhcnMgc3VmZmljaWVudCB0byBwYXBlciBvdmVyIHRo ZSBnbGl0Y2guCiAJCSAqLwotCQlpZiAoaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5lKSkgewot CQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJCWlmICghaW50ZWxfZW5naW5lX2lzX2lkbGUo ZW5naW5lKSkKKwkJCWNvbnRpbnVlOwogCi0JCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdp bmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKLQkJCWlmICghSVNfRVJSKHJxKSkKLQkJCQlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKLQkJfQorCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUs IGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKKwkJaWYgKCFJU19FUlIocnEpKQorCQkJaTkxNV9yZXF1 ZXN0X2FkZChycSk7CiAJfQogCi0JaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoaTkxNSk7Ci19Ci0K LXN0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQotewotCWVuZ2luZS0+cmVzZXQuZmluaXNoKGVuZ2luZSk7CisJbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3 YWtlcmVmKTsKIAotCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGVuZ2luZS0+aTkxNSwgRk9S Q0VXQUtFX0FMTCk7CisJa2ZyZWUoYXJnKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzZXRfZmluaXNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAtNzk2LDExICs3MTgsMzAgQEAgc3Rh dGljIHZvaWQgcmVzZXRfZmluaXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK IAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCi0JZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKLQkJZW5naW5lLT5oYW5nY2hlY2suYWN0 aXZlX3JlcXVlc3QgPSBOVUxMOworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQog CQlyZXNldF9maW5pc2hfZW5naW5lKGVuZ2luZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc2V0X3Jl c3RhcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGk5MTVfZ3B1 X3Jlc3RhcnQgKmFyZzsKKworCS8qCisJICogRm9sbG93aW5nIHRoZSByZXNldCwgZW5zdXJlIHRo YXQgd2UgYWx3YXlzIHJlbG9hZCBjb250ZXh0IGZvcgorCSAqIHBvd2Vyc2F2aW5nLCBhbmQgdG8g Y29ycmVjdCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0LiBTaW5jZQorCSAqIHRoaXMgcmVx dWlyZXMgdXMgdG8gc3VibWl0IGEgcmVxdWVzdCwgcXVldWUgYSB3b3JrZXIgdG8gZG8gdGhhdAor CSAqIHRhc2sgZm9yIHVzIHRvIGV2YWRlIGFueSBsb2NraW5nIGhlcmUuCisJICovCisJaWYgKFJF QURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkpCisJCXJldHVybjsKKworCWFyZyA9IGtt YWxsb2Moc2l6ZW9mKCphcmcpLCBHRlBfS0VSTkVMKTsKKwlpZiAoYXJnKSB7CisJCWFyZy0+aTkx NSA9IGk5MTU7CisJCUlOSVRfV09SSygmYXJnLT53b3JrLCByZXN0YXJ0X3dvcmspOworCisJCVdS SVRFX09OQ0UoaTkxNS0+Z3B1X2Vycm9yLnJlc3RhcnQsIGFyZyk7CisJCXF1ZXVlX3dvcmsoaTkx NS0+d3EsICZhcmctPndvcmspOwogCX0KIH0KIApAQCAtODg5LDggKzgzMCw2IEBAIGJvb2wgaTkx NV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXN0cnVj dCBpOTE1X3RpbWVsaW5lICp0bDsKIAlib29sIHJldCA9IGZhbHNlOwogCi0JbG9ja2RlcF9hc3Nl cnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0KIAlpZiAoIXRlc3RfYml0KEk5MTVf V0VER0VELCAmZXJyb3ItPmZsYWdzKSkKIAkJcmV0dXJuIHRydWU7CiAKQEAgLTkxMyw5ICs4NTIs OSBAQCBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRsLCAmaTkxNS0+Z3QudGltZWxpbmVz LCBsaW5rKSB7CiAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCQlsb25nIHRpbWVvdXQ7CiAK LQkJcnEgPSBpOTE1X2dlbV9hY3RpdmVfcGVlaygmdGwtPmxhc3RfcmVxdWVzdCwKLQkJCQkJICAm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJCXJxID0gaTkxNV9nZW1fYWN0aXZlX2dldF91bmxv Y2tlZCgmdGwtPmxhc3RfcmVxdWVzdCk7CiAJCWlmICghcnEpCiAJCQljb250aW51ZTsKIApAQCAt OTMwLDEyICs4NjksMTIgQEAgYm9vbCBpOTE1X2dlbV91bnNldF93ZWRnZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCiAJCSAqIGFuZCB3aGVuIHRoZSBzZXFubyBwYXNzZXMgdGhlIGZl bmNlLCB0aGUgc2lnbmFsZXIKIAkJICogdGhlbiBzaWduYWxzIHRoZSBmZW5jZSB3YWtpbmcgdXMg dXApLgogCQkgKi8KLQkJaWYgKGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQoJnJxLT5mZW5jZSwgdHJ1 ZSwKLQkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCkKKwkJdGltZW91dCA9IGRtYV9m ZW5jZV9kZWZhdWx0X3dhaXQoJnJxLT5mZW5jZSwgdHJ1ZSwKKwkJCQkJCSBNQVhfU0NIRURVTEVf VElNRU9VVCk7CisJCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCQlpZiAodGltZW91dCA8IDApCiAJ CQlnb3RvIHVubG9jazsKIAl9Ci0JaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Ci0JR0VNX0JV R19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwogCiAJaW50ZWxfZW5naW5lc19zYW5pdGl6 ZShpOTE1LCBmYWxzZSk7CiAKQEAgLTk0OSw3ICs4ODgsNiBAQCBib29sIGk5MTVfZ2VtX3Vuc2V0 X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkgKiBjb250ZXh0IGFuZCBk byBub3QgcmVxdWlyZSBzdG9wX21hY2hpbmUoKS4KIAkgKi8KIAlpbnRlbF9lbmdpbmVzX3Jlc2V0 X2RlZmF1bHRfc3VibWlzc2lvbihpOTE1KTsKLQlpOTE1X2dlbV9jb250ZXh0c19sb3N0KGk5MTUp OwogCiAJR0VNX1RSQUNFKCJlbmRcbiIpOwogCkBAIC05NjIsNiArOTAwLDQzIEBAIGJvb2wgaTkx NV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXJldHVy biByZXQ7CiB9CiAKK3N0cnVjdCBfX2k5MTVfcmVzZXQgeworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1OworCXVuc2lnbmVkIGludCBzdGFsbGVkX21hc2s7Cit9OworCitzdGF0aWMgaW50 IF9faTkxNV9yZXNldF9fQktMKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IF9faTkxNV9yZXNldCAq YXJnID0gZGF0YTsKKwlpbnQgZXJyOworCisJZXJyID0gaW50ZWxfZ3B1X3Jlc2V0KGFyZy0+aTkx NSwgQUxMX0VOR0lORVMpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlyZXR1cm4gZ3Rf cmVzZXQoYXJnLT5pOTE1LCBhcmctPnN0YWxsZWRfbWFzayk7Cit9CisKKyNpZiAwCisjZGVmaW5l IF9fZG9fcmVzZXQoZm4sIGFyZykgc3RvcF9tYWNoaW5lKGZuLCBhcmcsIE5VTEwpCisjZWxzZQor I2RlZmluZSBfX2RvX3Jlc2V0KGZuLCBhcmcpIGZuKGFyZykKKyNlbmRpZgorCitzdGF0aWMgaW50 IGRvX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgc3Rh bGxlZF9tYXNrKQoreworCXN0cnVjdCBfX2k5MTVfcmVzZXQgYXJnID0geyBpOTE1LCBzdGFsbGVk X21hc2sgfTsKKwlpbnQgZXJyLCBpOworCisJZXJyID0gX19kb19yZXNldChfX2k5MTVfcmVzZXRf X0JLTCwgJmFyZyk7CisJZm9yIChpID0gMDsgZXJyICYmIGkgPCAzOyBpKyspIHsKKwkJbXNsZWVw KDEwMCk7CisJCWVyciA9IF9fZG9fcmVzZXQoX19pOTE1X3Jlc2V0X19CS0wsICZhcmcpOworCX0K KworCXJldHVybiBlcnI7Cit9CisKIC8qKgogICogaTkxNV9yZXNldCAtIHJlc2V0IGNoaXAgYWZ0 ZXIgYSBoYW5nCiAgKiBAaTkxNTogI2RybV9pOTE1X3ByaXZhdGUgdG8gcmVzZXQKQEAgLTk4Nywz MSArOTYyLDIyIEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIHsKIAlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJmk5MTUtPmdwdV9lcnJvcjsK IAlpbnQgcmV0OwotCWludCBpOwogCiAJR0VNX1RSQUNFKCJmbGFncz0lbHhcbiIsIGVycm9yLT5m bGFncyk7CiAKIAltaWdodF9zbGVlcCgpOwotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwogCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChpOTE1KTsKIAlHRU1f QlVHX09OKCF0ZXN0X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsICZlcnJvci0+ZmxhZ3MpKTsKIAot CWlmICghdGVzdF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3ItPmZsYWdzKSkKLQkJcmV0 dXJuOwotCiAJLyogQ2xlYXIgYW55IHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0cyBhdCByZWNvdmVy eS4gVGltZSB0byB0cnkgYWdhaW4uICovCiAJaWYgKCFpOTE1X2dlbV91bnNldF93ZWRnZWQoaTkx NSkpCi0JCWdvdG8gd2FrZXVwOworCQlyZXR1cm47CiAKIAlpZiAocmVhc29uKQogCQlkZXZfbm90 aWNlKGk5MTUtPmRybS5kZXYsICJSZXNldHRpbmcgY2hpcCBmb3IgJXNcbiIsIHJlYXNvbik7CiAJ ZXJyb3ItPnJlc2V0X2NvdW50Kys7CiAKLQlyZXQgPSByZXNldF9wcmVwYXJlKGk5MTUpOwotCWlm IChyZXQpIHsKLQkJZGV2X2VycihpOTE1LT5kcm0uZGV2LCAiR1BVIHJlY292ZXJ5IGZhaWxlZFxu Iik7Ci0JCWdvdG8gdGFpbnQ7Ci0JfQorCXJlc2V0X3ByZXBhcmUoaTkxNSk7CiAKIAlpZiAoIWlu dGVsX2hhc19ncHVfcmVzZXQoaTkxNSkpIHsKIAkJaWYgKGk5MTVfbW9kcGFyYW1zLnJlc2V0KQpA QCAtMTAyMSwzMiArOTg3LDExIEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKIAkJZ290byBlcnJvcjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsr KSB7Ci0JCXJldCA9IGludGVsX2dwdV9yZXNldChpOTE1LCBBTExfRU5HSU5FUyk7Ci0JCWlmIChy ZXQgPT0gMCkKLQkJCWJyZWFrOwotCi0JCW1zbGVlcCgxMDApOwotCX0KLQlpZiAocmV0KSB7CisJ aWYgKGRvX3Jlc2V0KGk5MTUsIHN0YWxsZWRfbWFzaykpIHsKIAkJZGV2X2VycihpOTE1LT5kcm0u ZGV2LCAiRmFpbGVkIHRvIHJlc2V0IGNoaXBcbiIpOwogCQlnb3RvIHRhaW50OwogCX0KIAotCS8q IE9rLCBub3cgZ2V0IHRoaW5ncyBnb2luZyBhZ2Fpbi4uLiAqLwotCi0JLyoKLQkgKiBFdmVyeXRo aW5nIGRlcGVuZHMgb24gaGF2aW5nIHRoZSBHVFQgcnVubmluZywgc28gd2UgbmVlZCB0byBzdGFy dAotCSAqIHRoZXJlLgotCSAqLwotCXJldCA9IGk5MTVfZ2d0dF9lbmFibGVfaHcoaTkxNSk7Ci0J aWYgKHJldCkgewotCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZS1lbmFibGUgR0dUVCBmb2xsb3dp bmcgcmVzZXQgKCVkKVxuIiwKLQkJCSAgcmV0KTsKLQkJZ290byBlcnJvcjsKLQl9Ci0KLQlndF9y ZXNldChpOTE1LCBzdGFsbGVkX21hc2spOwogCWludGVsX292ZXJsYXlfcmVzZXQoaTkxNSk7CiAK IAkvKgpAQCAtMTA2OCw5ICsxMDEzLDggQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCiBmaW5pc2g6CiAJcmVzZXRfZmluaXNoKGk5MTUpOwotd2FrZXVw OgotCWNsZWFyX2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZlcnJvci0+ZmxhZ3MpOwotCXdha2Vf dXBfYml0KCZlcnJvci0+ZmxhZ3MsIEk5MTVfUkVTRVRfSEFORE9GRik7CisJaWYgKCFpOTE1X3Rl cm1pbmFsbHlfd2VkZ2VkKGVycm9yKSkKKwkJcmVzZXRfcmVzdGFydChpOTE1KTsKIAlyZXR1cm47 CiAKIHRhaW50OgpAQCAtMTA4OSw3ICsxMDMzLDYgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCWFkZF90YWludChUQUlOVF9XQVJOLCBMT0NLREVQX1NU SUxMX09LKTsKIGVycm9yOgogCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Ci0JaTkxNV9yZXRp cmVfcmVxdWVzdHMoaTkxNSk7CiAJZ290byBmaW5pc2g7CiB9CiAKQEAgLTExMTUsMTggKzEwNTgs MTYgQEAgc3RhdGljIGlubGluZSBpbnQgaW50ZWxfZ3RfcmVzZXRfZW5naW5lKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogaW50IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKQogewogCXN0cnVjdCBpOTE1X2dwdV9l cnJvciAqZXJyb3IgPSAmZW5naW5lLT5pOTE1LT5ncHVfZXJyb3I7Ci0Jc3RydWN0IGk5MTVfcmVx dWVzdCAqYWN0aXZlX3JlcXVlc3Q7CiAJaW50IHJldDsKIAogCUdFTV9UUkFDRSgiJXMgZmxhZ3M9 JWx4XG4iLCBlbmdpbmUtPm5hbWUsIGVycm9yLT5mbGFncyk7CiAJR0VNX0JVR19PTighdGVzdF9i aXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBlbmdpbmUtPmlkLCAmZXJyb3ItPmZsYWdzKSk7CiAKLQlh Y3RpdmVfcmVxdWVzdCA9IHJlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7Ci0JaWYgKElTX0VS Ul9PUl9OVUxMKGFjdGl2ZV9yZXF1ZXN0KSkgewotCQkvKiBFaXRoZXIgdGhlIHByZXZpb3VzIHJl c2V0IGZhaWxlZCwgb3Igd2UgcGFyZG9uIHRoZSByZXNldC4gKi8KLQkJcmV0ID0gUFRSX0VSUihh Y3RpdmVfcmVxdWVzdCk7Ci0JCWdvdG8gb3V0OwotCX0KKwlpZiAoaTkxNV9zZXFub19wYXNzZWQo aW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpLAorCQkJICAgICAgaW50ZWxfZW5naW5lX2xh c3Rfc3VibWl0KGVuZ2luZSkpKQorCQlyZXR1cm4gMDsKKworCXJlc2V0X3ByZXBhcmVfZW5naW5l KGVuZ2luZSk7CiAKIAlpZiAobXNnKQogCQlkZXZfbm90aWNlKGVuZ2luZS0+aTkxNS0+ZHJtLmRl diwKQEAgLTExNTAsNyArMTA5MSw3IEBAIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IGNoYXIgKm1zZykKIAkgKiBhY3RpdmUgcmVxdWVz dCBhbmQgY2FuIGRyb3AgaXQsIGFkanVzdCBoZWFkIHRvIHNraXAgdGhlIG9mZmVuZGluZwogCSAq IHJlcXVlc3QgdG8gcmVzdW1lIGV4ZWN1dGluZyByZW1haW5pbmcgcmVxdWVzdHMgaW4gdGhlIHF1 ZXVlLgogCSAqLwotCXJlc2V0X2VuZ2luZShlbmdpbmUsIGFjdGl2ZV9yZXF1ZXN0LCB0cnVlKTsK KwlpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCB0cnVlKTsKIAogCS8qCiAJICogVGhlIGVuZ2lu ZSBhbmQgaXRzIHJlZ2lzdGVycyAoYW5kIHdvcmthcm91bmRzIGluIGNhc2Ugb2YgcmVuZGVyKQpA QCAtMTE4NywzMCArMTEyOCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRfZGV2aWNlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWk5MTVfd2VkZ2Vfb25fdGltZW91dCgmdywgaTkx NSwgNSAqIEhaKSB7CiAJCWludGVsX3ByZXBhcmVfcmVzZXQoaTkxNSk7CiAKLQkJZXJyb3ItPnJl YXNvbiA9IHJlYXNvbjsKLQkJZXJyb3ItPnN0YWxsZWRfbWFzayA9IGVuZ2luZV9tYXNrOwotCi0J CS8qIFNpZ25hbCB0aGF0IGxvY2tlZCB3YWl0ZXJzIHNob3VsZCByZXNldCB0aGUgR1BVICovCi0J CXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwotCQlzZXRfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwg JmVycm9yLT5mbGFncyk7Ci0JCXdha2VfdXBfYWxsKCZlcnJvci0+d2FpdF9xdWV1ZSk7Ci0KLQkJ LyoKLQkJICogV2FpdCBmb3IgYW55b25lIGhvbGRpbmcgdGhlIGxvY2sgdG8gd2FrZXVwLCB3aXRo b3V0Ci0JCSAqIGJsb2NraW5nIGluZGVmaW5pdGVseSBvbiBzdHJ1Y3RfbXV0ZXguCi0JCSAqLwot CQlkbyB7Ci0JCQlpZiAobXV0ZXhfdHJ5bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCkpIHsK LQkJCQlpOTE1X3Jlc2V0KGk5MTUsIGVuZ2luZV9tYXNrLCByZWFzb24pOwotCQkJCW11dGV4X3Vu bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JCQl9Ci0JCX0gd2hpbGUgKHdhaXRfb25f Yml0X3RpbWVvdXQoJmVycm9yLT5mbGFncywKLQkJCQkJICAgICBJOTE1X1JFU0VUX0hBTkRPRkYs Ci0JCQkJCSAgICAgVEFTS19VTklOVEVSUlVQVElCTEUsCi0JCQkJCSAgICAgMSkpOwotCi0JCWVy cm9yLT5zdGFsbGVkX21hc2sgPSAwOwotCQllcnJvci0+cmVhc29uID0gTlVMTDsKKwkJaTkxNV9y ZXNldChpOTE1LCBlbmdpbmVfbWFzaywgcmVhc29uKTsKIAogCQlpbnRlbF9maW5pc2hfcmVzZXQo aTkxNSk7CiAJfQpAQCAtMTM2Niw2ICsxMjg0LDI1IEBAIHZvaWQgaTkxNV9oYW5kbGVfZXJyb3Io c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkx NSwgd2FrZXJlZik7CiB9CiAKK2Jvb2wgaTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKK3sKKwlpbnQgZXJyOworCisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5j KCZpOTE1LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmspOworCisJZmx1c2hfd29ya3F1ZXVlKGk5 MTUtPndxKTsKKwlHRU1fQlVHX09OKFJFQURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkp OworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJZXJyID0gaTkxNV9n ZW1fd2FpdF9mb3JfaWRsZShpOTE1LAorCQkJCSAgICAgSTkxNV9XQUlUX0xPQ0tFRCB8CisJCQkJ ICAgICBJOTE1X1dBSVRfRk9SX0lETEVfQk9PU1QsCisJCQkJICAgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldHVy biAhZXJyOworfQorCiBzdGF0aWMgdm9pZCBpOTE1X3dlZGdlX21lKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKIHsKIAlzdHJ1Y3QgaTkxNV93ZWRnZV9tZSAqdyA9IGNvbnRhaW5lcl9vZih3b3Jr LCB0eXBlb2YoKncpLCB3b3JrLndvcmspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXNldC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5oCmluZGV4 IGI2YTUxOWJkZTY3ZC4uZjJkMzQ3ZjMxOWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3Jlc2V0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5o CkBAIC0yOSw2ICsyOSw5IEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJCSAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAKK3ZvaWQgaTkxNV9yZXNldF9y ZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBib29sIGd1aWx0eSk7Citib29sIGk5MTVf cmVzZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOworCiBib29sIGludGVs X2hhc19ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogYm9vbCBpbnRl bF9oYXNfcmVzZXRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA5Yzk0M2JiOTVjYjkuLjNhMGI4 MDM2ZjE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTEwNzQs MTAgKzEwNzQsOCBAQCB2b2lkIGludGVsX2VuZ2luZXNfc2FuaXRpemUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIGJvb2wgZm9yY2UpCiAJaWYgKCFyZXNldF9lbmdpbmVzKGk5MTUpICYm ICFmb3JjZSkKIAkJcmV0dXJuOwogCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQp IHsKLQkJaWYgKGVuZ2luZS0+cmVzZXQucmVzZXQpCi0JCQllbmdpbmUtPnJlc2V0LnJlc2V0KGVu Z2luZSwgTlVMTCk7Ci0JfQorCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQorCQlp bnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBmYWxzZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggYWIxYzQ5YjEwNmYyLi43MjE3 YzdlM2VlOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJt aXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24u YwpAQCAtODM0LDggKzgzNCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQo dW5zaWduZWQgbG9uZyBkYXRhKQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGlt ZWxpbmUubG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCi1n dWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMg dm9pZCBndWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7 CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5n aW5lLT5leGVjbGlzdHM7CiAKQEAgLTg2MSw4ICs4NjAsNiBAQCBndWNfcmVzZXRfcHJlcGFyZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICovCiAJaWYgKGVuZ2luZS0+aTkxNS0+ Z3VjLnByZWVtcHRfd3EpCiAJCWZsdXNoX3dvcmtxdWV1ZShlbmdpbmUtPmk5MTUtPmd1Yy5wcmVl bXB0X3dxKTsKLQotCXJldHVybiBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDY0NGFhOTI1MTMwNy4uZWIz N2UyZjdmODM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTM3LDYgKzEzNyw3IEBA CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNs dWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIKKyNpbmNsdWRlICJpOTE1X3Jlc2V0LmgiCiAj aW5jbHVkZSAiaTkxNV92Z3B1LmgiCiAjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgogI2luY2x1 ZGUgImludGVsX21vY3MuaCIKQEAgLTI2NSw3ICsyNjYsOCBAQCBzdGF0aWMgdm9pZCB1bndpbmRf d2FfdGFpbChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlhc3NlcnRfcmluZ190YWlsX3ZhbGlk KHJxLT5yaW5nLCBycS0+dGFpbCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9fdW53aW5kX2luY29tcGxl dGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHN0cnVj dCBpOTE1X3JlcXVlc3QgKgorX191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybiwg KmFjdGl2ZSA9IE5VTEw7CiAJc3RydWN0IGxpc3RfaGVhZCAqdW5pbml0aWFsaXplZF92YXIocGwp OwpAQCAtMzA2LDYgKzMwOCw4IEBAIHN0YXRpYyB2b2lkIF9fdW53aW5kX2luY29tcGxldGVfcmVx dWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlsaXN0X21vdmVfdGFpbCgm YWN0aXZlLT5zY2hlZC5saW5rLAogCQkJICAgICAgIGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0 KGVuZ2luZSwgcHJpbykpOwogCX0KKworCXJldHVybiBhY3RpdmU7CiB9CiAKIHZvaWQKQEAgLTE3 MTMsMTEgKzE3MTcsOSBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoKLWV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNs aXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpyZXF1ZXN0LCAqYWN0aXZlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlH RU1fVFJBQ0UoIiVzOiBkZXB0aDwtJWRcbiIsIGVuZ2luZS0+bmFtZSwKQEAgLTE3MzMsNTkgKzE3 MzUsMjEgQEAgZXhlY2xpc3RzX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCSAqIHByZXZlbnRzIHRoZSByYWNlLgogCSAqLwogCV9fdGFza2xldF9kaXNhYmxl X3N5bmNfb25jZSgmZXhlY2xpc3RzLT50YXNrbGV0KTsKKwlHRU1fQlVHX09OKCFyZXNldF9pbl9w cm9ncmVzcyhleGVjbGlzdHMpKTsKIAorCS8qIEFuZCBmbHVzaCBhbnkgY3VycmVudCBkaXJlY3Qg c3VibWlzc2lvbi4gKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2Nr LCBmbGFncyk7Ci0KLQkvKgotCSAqIFdlIHdhbnQgdG8gZmx1c2ggdGhlIHBlbmRpbmcgY29udGV4 dCBzd2l0Y2hlcywgaGF2aW5nIGRpc2FibGVkCi0JICogdGhlIHRhc2tsZXQgYWJvdmUsIHdlIGNh biBhc3N1bWUgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgZXhlY2xpc3RzLgotCSAqIEZvciB0aGlz IGFsbG93cyB1cyB0byBjYXRjaCB1cCB3aXRoIGFuIGluZmxpZ2h0IHByZWVtcHRpb24gZXZlbnQs Ci0JICogYW5kIGF2b2lkIGJsYW1pbmcgYW4gaW5ub2NlbnQgcmVxdWVzdCBpZiB0aGUgc3RhbGwg d2FzIGR1ZSB0byB0aGUKLQkgKiBwcmVlbXB0aW9uIGl0c2VsZi4KLQkgKi8KLQlwcm9jZXNzX2Nz YihlbmdpbmUpOwotCi0JLyoKLQkgKiBUaGUgbGFzdCBhY3RpdmUgcmVxdWVzdCBjYW4gdGhlbiBi ZSBubyBsYXRlciB0aGFuIHRoZSBsYXN0IHJlcXVlc3QKLQkgKiBub3cgaW4gRUxTUFswXS4gU28g c2VhcmNoIGJhY2t3YXJkcyBmcm9tIHRoZXJlLCBzbyB0aGF0IGlmIHRoZSBHUFUKLQkgKiBoYXMg YWR2YW5jZWQgYmV5b25kIHRoZSBsYXN0IENTQiB1cGRhdGUsIGl0IHdpbGwgYmUgcGFyZG9uZWQu Ci0JICovCi0JYWN0aXZlID0gTlVMTDsKLQlyZXF1ZXN0ID0gcG9ydF9yZXF1ZXN0KGV4ZWNsaXN0 cy0+cG9ydCk7Ci0JaWYgKHJlcXVlc3QpIHsKLQkJLyoKLQkJICogUHJldmVudCB0aGUgYnJlYWRj cnVtYiBmcm9tIGFkdmFuY2luZyBiZWZvcmUgd2UgZGVjaWRlCi0JCSAqIHdoaWNoIHJlcXVlc3Qg aXMgY3VycmVudGx5IGFjdGl2ZS4KLQkJICovCi0JCWludGVsX2VuZ2luZV9zdG9wX2NzKGVuZ2lu ZSk7Ci0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tX3JldmVyc2UocmVxdWVzdCwKLQkJCQkJ CSAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cywKLQkJCQkJCSBsaW5rKSB7Ci0JCQlpZiAoX19p OTE1X3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QsCi0JCQkJCQkgICAgIHJlcXVlc3QtPmdsb2Jh bF9zZXFubykpCi0JCQkJYnJlYWs7Ci0KLQkJCWFjdGl2ZSA9IHJlcXVlc3Q7Ci0JCX0KLQl9Ci0K Kwlwcm9jZXNzX2NzYihlbmdpbmUpOyAvKiBkcmFpbiBwcmVlbXB0aW9uIGV2ZW50cyAqLwogCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwotCi0J cmV0dXJuIGFjdGl2ZTsKIH0KIAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1 ZXN0KQorc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgYm9vbCBzdGFsbGVkKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTMyICpyZWdzOwogCi0JR0VNX1RS QUNFKCIlcyByZXF1ZXN0IGdsb2JhbD0lZCwgY3VycmVudD0lZFxuIiwKLQkJICBlbmdpbmUtPm5h bWUsIHJlcXVlc3QgPyByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8gOiAwLAotCQkgIGludGVsX2VuZ2lu ZV9nZXRfc2Vxbm8oZW5naW5lKSk7Ci0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1l bGluZS5sb2NrLCBmbGFncyk7CiAKIAkvKgpAQCAtMTgwMCwxMiArMTc2NCwxOCBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWV4 ZWNsaXN0c19jYW5jZWxfcG9ydF9yZXF1ZXN0cyhleGVjbGlzdHMpOwogCiAJLyogUHVzaCBiYWNr IGFueSBpbmNvbXBsZXRlIHJlcXVlc3RzIGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwot CV9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoZW5naW5lKTsKKwlycSA9IF9fdW53aW5kX2lu Y29tcGxldGVfcmVxdWVzdHMoZW5naW5lKTsKIAogCS8qIEZvbGxvd2luZyB0aGUgcmVzZXQsIHdl IG5lZWQgdG8gcmVsb2FkIHRoZSBDU0IgcmVhZC93cml0ZSBwb2ludGVycyAqLwogCXJlc2V0X2Nz Yl9wb2ludGVycygmZW5naW5lLT5leGVjbGlzdHMpOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CisJR0VNX1RSQUNFKCIlcyBzZXFubz0l ZCwgY3VycmVudD0lZCwgc3RhbGxlZD8gJXNcbiIsCisJCSAgZW5naW5lLT5uYW1lLAorCQkgIHJx ID8gbG93ZXJfMzJfYml0cyhycS0+Z2xvYmFsX3NlcW5vKSA6IDAsCisJCSAgaW50ZWxfZW5naW5l X2dldF9zZXFubyhlbmdpbmUpLAorCQkgIHllc25vKHN0YWxsZWQpKTsKKwlpZiAoIXJxKQorCQln b3RvIG91dF91bmxvY2s7CiAKIAkvKgogCSAqIElmIHRoZSByZXF1ZXN0IHdhcyBpbm5vY2VudCwg d2UgbGVhdmUgdGhlIHJlcXVlc3QgaW4gdGhlIEVMU1AKQEAgLTE4MTgsOCArMTc4OCw5IEBAIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAJICogYW5kIGhhdmUgdG8gYXQgbGVhc3QgcmVzdG9yZSB0aGUgUklORyByZWdpc3RlciBpbiB0 aGUgY29udGV4dAogCSAqIGltYWdlIGJhY2sgdG8gdGhlIGV4cGVjdGVkIHZhbHVlcyB0byBza2lw IG92ZXIgdGhlIGd1aWx0eSByZXF1ZXN0LgogCSAqLwotCWlmICghcmVxdWVzdCB8fCByZXF1ZXN0 LT5mZW5jZS5lcnJvciAhPSAtRUlPKQotCQlyZXR1cm47CisJaTkxNV9yZXNldF9yZXF1ZXN0KHJx LCBzdGFsbGVkKTsKKwlpZiAoIXN0YWxsZWQpCisJCWdvdG8gb3V0X3VubG9jazsKIAogCS8qCiAJ ICogV2Ugd2FudCBhIHNpbXBsZSBjb250ZXh0ICsgcmluZyB0byBleGVjdXRlIHRoZSBicmVhZGNy dW1iIHVwZGF0ZS4KQEAgLTE4MjksMjUgKzE4MDAsMjMgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3Rz X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkgKiBmdXR1cmUgcmVxdWVz dCB3aWxsIGJlIGFmdGVyIHVzZXJzcGFjZSBoYXMgaGFkIHRoZSBvcHBvcnR1bml0eQogCSAqIHRv IHJlY3JlYXRlIGl0cyBvd24gc3RhdGUuCiAJICovCi0JcmVncyA9IHJlcXVlc3QtPmh3X2NvbnRl eHQtPmxyY19yZWdfc3RhdGU7CisJcmVncyA9IHJxLT5od19jb250ZXh0LT5scmNfcmVnX3N0YXRl OwogCWlmIChlbmdpbmUtPnBpbm5lZF9kZWZhdWx0X3N0YXRlKSB7CiAJCW1lbWNweShyZWdzLCAv KiBza2lwIHJlc3RvcmluZyB0aGUgdmFuaWxsYSBQUEhXU1AgKi8KIAkJICAgICAgIGVuZ2luZS0+ cGlubmVkX2RlZmF1bHRfc3RhdGUgKyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUsCiAJCSAgICAg ICBlbmdpbmUtPmNvbnRleHRfc2l6ZSAtIFBBR0VfU0laRSk7CiAJfQotCWV4ZWNsaXN0c19pbml0 X3JlZ19zdGF0ZShyZWdzLAotCQkJCSByZXF1ZXN0LT5nZW1fY29udGV4dCwgZW5naW5lLCByZXF1 ZXN0LT5yaW5nKTsKKwlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVncywgcnEtPmdlbV9jb250 ZXh0LCBlbmdpbmUsIHJxLT5yaW5nKTsKIAogCS8qIE1vdmUgdGhlIFJJTkdfSEVBRCBvbnRvIHRo ZSBicmVhZGNydW1iLCBwYXN0IHRoZSBoYW5naW5nIGJhdGNoICovCi0JcmVnc1tDVFhfUklOR19C VUZGRVJfU1RBUlQgKyAxXSA9IGk5MTVfZ2d0dF9vZmZzZXQocmVxdWVzdC0+cmluZy0+dm1hKTsK LQotCXJlcXVlc3QtPnJpbmctPmhlYWQgPSBpbnRlbF9yaW5nX3dyYXAocmVxdWVzdC0+cmluZywg cmVxdWVzdC0+cG9zdGZpeCk7Ci0JcmVnc1tDVFhfUklOR19IRUFEICsgMV0gPSByZXF1ZXN0LT5y aW5nLT5oZWFkOworCXJlZ3NbQ1RYX1JJTkdfQlVGRkVSX1NUQVJUICsgMV0gPSBpOTE1X2dndHRf b2Zmc2V0KHJxLT5yaW5nLT52bWEpOwogCi0JaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmVxdWVz dC0+cmluZyk7CisJcnEtPnJpbmctPmhlYWQgPSBpbnRlbF9yaW5nX3dyYXAocnEtPnJpbmcsIHJx LT5wb3N0Zml4KTsKKwlyZWdzW0NUWF9SSU5HX0hFQUQgKyAxXSA9IHJxLT5yaW5nLT5oZWFkOwor CWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJxLT5yaW5nKTsKIAotCS8qIFJlc2V0IFdhSWRsZUxp dGVSZXN0b3JlOmJkdyxza2wgYXMgd2VsbCAqLwotCXVud2luZF93YV90YWlsKHJlcXVlc3QpOwor b3V0X3VubG9jazoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxv Y2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0X2ZpbmlzaChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCkBAIC0xODYwLDYgKzE4MjksNyBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAkgKiB0byBzbGVlcCBiZWZvcmUgd2UgcmVzdGFydCBhbmQgcmVsb2FkIGEgY29udGV4dC4K IAkgKgogCSAqLworCUdFTV9CVUdfT04oIXJlc2V0X2luX3Byb2dyZXNzKGV4ZWNsaXN0cykpOwog CWlmICghUkJfRU1QVFlfUk9PVCgmZXhlY2xpc3RzLT5xdWV1ZS5yYl9yb290KSkKIAkJZXhlY2xp c3RzLT50YXNrbGV0LmZ1bmMoZXhlY2xpc3RzLT50YXNrbGV0LmRhdGEpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vdmVybGF5LmMKaW5kZXggYzE1M2JlMDQzMDc4Li45NGE4N2ViYTM5ZjkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKQEAgLTQ3OSw4ICs0NzksNiBAQCB2b2lk IGludGVsX292ZXJsYXlfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CWlmICghb3ZlcmxheSkKIAkJcmV0dXJuOwogCi0JaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92 aWQob3ZlcmxheSk7Ci0KIAlvdmVybGF5LT5vbGRfeHNjYWxlID0gMDsKIAlvdmVybGF5LT5vbGRf eXNjYWxlID0gMDsKIAlvdmVybGF5LT5jcnRjID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwppbmRleCA2ZTI2NjFlODZkMTguLjljNjY0ZDkxMGMwMiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMzQsNiArMzQsNyBAQAogCiAj aW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIK KyNpbmNsdWRlICJpOTE1X3Jlc2V0LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1 ZGUgImludGVsX2Rydi5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCkBAIC03MDgs NTIgKzcwOSw4MCBAQCBzdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpyZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0 YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog ewogCWludGVsX2VuZ2luZV9zdG9wX2NzKGVuZ2luZSk7Ci0JcmV0dXJuIGk5MTVfZ2VtX2ZpbmRf YWN0aXZlX3JlcXVlc3QoZW5naW5lKTsKIH0KIAotc3RhdGljIHZvaWQgc2tpcF9yZXF1ZXN0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorc3RhdGljIHZvaWQgcmVzZXRfcmluZyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKIHsKLQl2b2lkICp2YWRkciA9IHJx LT5yaW5nLT52YWRkcjsKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwgPSAmZW5naW5lLT50aW1l bGluZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwb3MsICpycTsKKwl1bnNpZ25lZCBsb25nIGZs YWdzOwogCXUzMiBoZWFkOwogCi0JaGVhZCA9IHJxLT5pbmZpeDsKLQlpZiAocnEtPnBvc3RmaXgg PCBoZWFkKSB7Ci0JCW1lbXNldDMyKHZhZGRyICsgaGVhZCwgTUlfTk9PUCwKLQkJCSAocnEtPnJp bmctPnNpemUgLSBoZWFkKSAvIHNpemVvZih1MzIpKTsKLQkJaGVhZCA9IDA7CisJcnEgPSBOVUxM OworCXNwaW5fbG9ja19pcnFzYXZlKCZ0bC0+bG9jaywgZmxhZ3MpOworCWxpc3RfZm9yX2VhY2hf ZW50cnkocG9zLCAmdGwtPnJlcXVlc3RzLCBsaW5rKSB7CisJCWlmICghX19pOTE1X3JlcXVlc3Rf Y29tcGxldGVkKHBvcywgcG9zLT5nbG9iYWxfc2Vxbm8pKSB7CisJCQlycSA9IHBvczsKKwkJCWJy ZWFrOworCQl9CiAJfQotCW1lbXNldDMyKHZhZGRyICsgaGVhZCwgTUlfTk9PUCwgKHJxLT5wb3N0 Zml4IC0gaGVhZCkgLyBzaXplb2YodTMyKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc2V0X3Jpbmco c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK LXsKLQlHRU1fVFJBQ0UoIiVzIHJlcXVlc3QgZ2xvYmFsPSVkLCBjdXJyZW50PSVkXG4iLAotCQkg IGVuZ2luZS0+bmFtZSwgcnEgPyBycS0+Z2xvYmFsX3NlcW5vIDogMCwKLQkJICBpbnRlbF9lbmdp bmVfZ2V0X3NlcW5vKGVuZ2luZSkpOwogCisJR0VNX1RSQUNFKCIlcyBzZXFubz0lZCwgY3VycmVu dD0lZCwgc3RhbGxlZD8gJXNcbiIsCisJCSAgZW5naW5lLT5uYW1lLAorCQkgIHJxID8gbG93ZXJf MzJfYml0cyhycS0+Z2xvYmFsX3NlcW5vKSA6IDAsCisJCSAgaW50ZWxfZW5naW5lX2dldF9zZXFu byhlbmdpbmUpLAorCQkgIHllc25vKHN0YWxsZWQpKTsKIAkvKgotCSAqIFRyeSB0byByZXN0b3Jl IHRoZSBsb2dpY2FsIEdQVSBzdGF0ZSB0byBtYXRjaCB0aGUgY29udGludWF0aW9uCi0JICogb2Yg dGhlIHJlcXVlc3QgcXVldWUuIElmIHdlIHNraXAgdGhlIGNvbnRleHQvUEQgcmVzdG9yZSwgdGhl bgotCSAqIHRoZSBuZXh0IHJlcXVlc3QgbWF5IHRyeSB0byBleGVjdXRlIGFzc3VtaW5nIHRoYXQg aXRzIGNvbnRleHQKLQkgKiBpcyB2YWxpZCBhbmQgbG9hZGVkIG9uIHRoZSBHUFUgYW5kIHNvIG1h eSB0cnkgdG8gYWNjZXNzIGludmFsaWQKLQkgKiBtZW1vcnksIHByb21wdGluZyByZXBlYXRlZCBH UFUgaGFuZ3MuCisJICogVGhlIGd1aWx0eSByZXF1ZXN0IHdpbGwgZ2V0IHNraXBwZWQgb24gYSBo dW5nIGVuZ2luZS4KIAkgKgotCSAqIElmIHRoZSByZXF1ZXN0IHdhcyBndWlsdHksIHdlIHN0aWxs IHJlc3RvcmUgdGhlIGxvZ2ljYWwgc3RhdGUKLQkgKiBpbiBjYXNlIHRoZSBuZXh0IHJlcXVlc3Qg cmVxdWlyZXMgaXQgKGUuZy4gdGhlIGFsaWFzaW5nIHBwZ3R0KSwKLQkgKiBidXQgc2tpcCBvdmVy IHRoZSBodW5nIGJhdGNoLgorCSAqIFVzZXJzIG9mIGNsaWVudCBkZWZhdWx0IGNvbnRleHRzIGRv IG5vdCByZWx5IG9uIGxvZ2ljYWwKKwkgKiBzdGF0ZSBwcmVzZXJ2ZWQgYmV0d2VlbiBiYXRjaGVz IHNvIGl0IGlzIHNhZmUgdG8gZXhlY3V0ZQorCSAqIHF1ZXVlZCByZXF1ZXN0cyBmb2xsb3dpbmcg dGhlIGhhbmcuIE5vbiBkZWZhdWx0IGNvbnRleHRzCisJICogcmVseSBvbiBwcmVzZXJ2ZWQgc3Rh dGUsIHNvIHNraXBwaW5nIGEgYmF0Y2ggbG9zZXMgdGhlCisJICogZXZvbHV0aW9uIG9mIHRoZSBz dGF0ZSBhbmQgaXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBjb3JydXB0ZWQuCisJICogRXhlY3V0 aW5nIG1vcmUgcXVldWVkIGJhdGNoZXMgb24gdG9wIG9mIGNvcnJ1cHRlZCBzdGF0ZSBpcworCSAq IHJpc2t5LiBCdXQgd2UgdGFrZSB0aGUgcmlzayBieSB0cnlpbmcgdG8gYWR2YW5jZSB0aHJvdWdo CisJICogdGhlIHF1ZXVlZCByZXF1ZXN0cyBpbiBvcmRlciB0byBtYWtlIHRoZSBjbGllbnQgYmVo YXZpb3VyCisJICogbW9yZSBwcmVkaWN0YWJsZSBhcm91bmQgcmVzZXRzLCBieSBub3QgdGhyb3dp bmcgYXdheSByYW5kb20KKwkgKiBhbW91bnQgb2YgYmF0Y2hlcyBpdCBoYXMgcHJlcGFyZWQgZm9y IGV4ZWN1dGlvbi4gU29waGlzdGljYXRlZAorCSAqIGNsaWVudHMgY2FuIHVzZSBnZW1fcmVzZXRf c3RhdHNfaW9jdGwgYW5kIGRtYSBmZW5jZSBzdGF0dXMKKwkgKiAoZXhwb3J0ZWQgdmlhIHN5bmNf ZmlsZSBpbmZvIGlvY3RsIG9uIGV4cGxpY2l0IGZlbmNlcykgdG8gb2JzZXJ2ZQorCSAqIHdoZW4g aXQgbG9zZXMgdGhlIGNvbnRleHQgc3RhdGUgYW5kIHNob3VsZCByZWJ1aWxkIGFjY29yZGluZ2x5 LgogCSAqCi0JICogSWYgdGhlIHJlcXVlc3Qgd2FzIGlubm9jZW50LCB3ZSB0cnkgdG8gcmVwbGF5 IHRoZSByZXF1ZXN0IHdpdGgKLQkgKiB0aGUgcmVzdG9yZWQgY29udGV4dC4KKwkgKiBUaGUgY29u dGV4dCBiYW4sIGFuZCB1bHRpbWF0ZWx5IHRoZSBjbGllbnQgYmFuLCBtZWNoYW5pc20gYXJlIHNh ZmV0eQorCSAqIHZhbHZlcyBpZiBjbGllbnQgc3VibWlzc2lvbiBlbmRzIHVwIHJlc3VsdGluZyBp biBub3RoaW5nIG1vcmUgdGhhbgorCSAqIHN1YnNlcXVlbnQgaGFuZ3MuCiAJICovCisKIAlpZiAo cnEpIHsKLQkJLyogSWYgdGhlIHJxIGh1bmcsIGp1bXAgdG8gaXRzIGJyZWFkY3J1bWIgYW5kIHNr aXAgdGhlIGJhdGNoICovCi0JCXJxLT5yaW5nLT5oZWFkID0gaW50ZWxfcmluZ193cmFwKHJxLT5y aW5nLCBycS0+aGVhZCk7Ci0JCWlmIChycS0+ZmVuY2UuZXJyb3IgPT0gLUVJTykKLQkJCXNraXBf cmVxdWVzdChycSk7CisJCS8qCisJCSAqIFRyeSB0byByZXN0b3JlIHRoZSBsb2dpY2FsIEdQVSBz dGF0ZSB0byBtYXRjaCB0aGUKKwkJICogY29udGludWF0aW9uIG9mIHRoZSByZXF1ZXN0IHF1ZXVl LiBJZiB3ZSBza2lwIHRoZQorCQkgKiBjb250ZXh0L1BEIHJlc3RvcmUsIHRoZW4gdGhlIG5leHQg cmVxdWVzdCBtYXkgdHJ5IHRvIGV4ZWN1dGUKKwkJICogYXNzdW1pbmcgdGhhdCBpdHMgY29udGV4 dCBpcyB2YWxpZCBhbmQgbG9hZGVkIG9uIHRoZSBHUFUgYW5kCisJCSAqIHNvIG1heSB0cnkgdG8g YWNjZXNzIGludmFsaWQgbWVtb3J5LCBwcm9tcHRpbmcgcmVwZWF0ZWQgR1BVCisJCSAqIGhhbmdz LgorCQkgKgorCQkgKiBJZiB0aGUgcmVxdWVzdCB3YXMgZ3VpbHR5LCB3ZSBzdGlsbCByZXN0b3Jl IHRoZSBsb2dpY2FsCisJCSAqIHN0YXRlIGluIGNhc2UgdGhlIG5leHQgcmVxdWVzdCByZXF1aXJl cyBpdCAoZS5nLiB0aGUKKwkJICogYWxpYXNpbmcgcHBndHQpLCBidXQgc2tpcCBvdmVyIHRoZSBo dW5nIGJhdGNoLgorCQkgKgorCQkgKiBJZiB0aGUgcmVxdWVzdCB3YXMgaW5ub2NlbnQsIHdlIHRy eSB0byByZXBsYXkgdGhlIHJlcXVlc3QKKwkJICogd2l0aCB0aGUgcmVzdG9yZWQgY29udGV4dC4K KwkJICovCisJCWk5MTVfcmVzZXRfcmVxdWVzdChycSwgc3RhbGxlZCk7CisKKwkJR0VNX0JVR19P TihycS0+cmluZyAhPSBlbmdpbmUtPmJ1ZmZlcik7CisJCWhlYWQgPSBycS0+aGVhZDsKKwl9IGVs c2UgeworCQloZWFkID0gZW5naW5lLT5idWZmZXItPnRhaWw7CiAJfQorCWVuZ2luZS0+YnVmZmVy LT5oZWFkID0gaW50ZWxfcmluZ193cmFwKGVuZ2luZS0+YnVmZmVyLCBoZWFkKTsKKworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnRsLT5sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkIHJl c2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggM2MxMzY2YzU4Y2YzLi4wNjg1MGVlMTcwODcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTEyNCw3ICsxMjQs NiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayB7CiAJdW5zaWduZWQgbG9uZyBhY3Rp b25fdGltZXN0YW1wOwogCWludCBkZWFkbG9jazsKIAlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgaW5z dGRvbmU7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqYWN0aXZlX3JlcXVlc3Q7CiAJYm9vbCBzdGFs bGVkOjE7CiAJYm9vbCB3ZWRnZWQ6MTsKIH07CkBAIC00NDUsOSArNDQ0LDggQEAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyB7CiAJaW50CQkoKmluaXRfaHcpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7CiAKIAlzdHJ1Y3QgewotCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICooKnByZXBhcmUp KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0JCXZvaWQgKCpyZXNldCkoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpOworCQl2b2lkICgqcHJlcGFyZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK KwkJdm9pZCAoKnJlc2V0KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3Rh bGxlZCk7CiAJCXZvaWQgKCpmaW5pc2gpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 CiAJfSByZXNldDsKIApAQCAtMTAxOSw2ICsxMDE3LDEzIEBAIGdlbjhfZW1pdF9nZ3R0X3dyaXRl KHUzMiAqY3MsIHUzMiB2YWx1ZSwgdTMyIGd0dF9vZmZzZXQpCiAJcmV0dXJuIGNzOwogfQogCitz dGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKKwkJCQkgICAgICBib29sIHN0YWxsZWQpCit7CisJaWYgKGVuZ2luZS0+cmVz ZXQucmVzZXQpCisJCWVuZ2luZS0+cmVzZXQucmVzZXQoZW5naW5lLCBzdGFsbGVkKTsKK30KKwog dm9pZCBpbnRlbF9lbmdpbmVzX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBib29sIGZvcmNlKTsKIAogYm9vbCBpbnRlbF9lbmdpbmVfaXNfaWRsZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX2hhbmdjaGVjay5jCmluZGV4IDEyNTUwYjU1YzQyZi4uNjc0MzEzNTVjZDZlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCkBA IC0zNjMsOSArMzYzLDcgQEAgc3RhdGljIGludCBpZ3RfZ2xvYmFsX3Jlc2V0KHZvaWQgKmFyZykK IAkvKiBDaGVjayB0aGF0IHdlIGNhbiBpc3N1ZSBhIGdsb2JhbCBHUFUgcmVzZXQgKi8KIAogCWln dF9nbG9iYWxfcmVzZXRfbG9jayhpOTE1KTsKLQlzZXRfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwg Jmk5MTUtPmdwdV9lcnJvci5mbGFncyk7CiAKLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKIAlyZXNldF9jb3VudCA9IGk5MTVfcmVzZXRfY291bnQoJmk5MTUtPmdwdV9lcnJv cik7CiAKIAlpOTE1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTLCBOVUxMKTsKQEAgLTM3NCw5ICsz NzIsNyBAQCBzdGF0aWMgaW50IGlndF9nbG9iYWxfcmVzZXQodm9pZCAqYXJnKQogCQlwcl9lcnIo Ik5vIEdQVSByZXNldCByZWNvcmRlZCFcbiIpOwogCQllcnIgPSAtRUlOVkFMOwogCX0KLQltdXRl eF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi0JR0VNX0JVR19PTih0ZXN0X2Jp dChJOTE1X1JFU0VUX0hBTkRPRkYsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpKTsKIAlpZ3RfZ2xv YmFsX3Jlc2V0X3VubG9jayhpOTE1KTsKIAogCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZp OTE1LT5ncHVfZXJyb3IpKQpAQCAtMzk5LDkgKzM5NSw3IEBAIHN0YXRpYyBpbnQgaWd0X3dlZGdl ZF9yZXNldCh2b2lkICphcmcpCiAJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKIAlHRU1fQlVH X09OKCFpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKTsKIAotCXNldF9i aXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKTsKIAlpOTE1X3Jl c2V0KGk5MTUsIEFMTF9FTkdJTkVTLCBOVUxMKTsKLQlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVf UkVTRVRfSEFORE9GRiwgJmk5MTUtPmdwdV9lcnJvci5mbGFncykpOwogCiAJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKQEAgLTUxMSw3ICs1MDUsNyBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2lu ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCBhY3RpdmUpCiAJCQkJYnJlYWs7 CiAJCQl9CiAKLQkJCWlmICghd2FpdF9mb3JfaWRsZShlbmdpbmUpKSB7CisJCQlpZiAoIWk5MTVf cmVzZXRfZmx1c2goaTkxNSkpIHsKIAkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9CiAJCQkJCWRy bV9pbmZvX3ByaW50ZXIoaTkxNS0+ZHJtLmRldik7CiAKQEAgLTkwMywyMCArODk3LDEzIEBAIHN0 YXRpYyBpbnQgaWd0X3Jlc2V0X2VuZ2luZXModm9pZCAqYXJnKQogCXJldHVybiAwOwogfQogCi1z dGF0aWMgdTMyIGZha2VfaGFuZ2NoZWNrKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbWFz aykKK3N0YXRpYyB1MzIgZmFrZV9oYW5nY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHUzMiBtYXNrKQogewotCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IgPSAmcnEtPmk5 MTUtPmdwdV9lcnJvcjsKLQl1MzIgcmVzZXRfY291bnQgPSBpOTE1X3Jlc2V0X2NvdW50KGVycm9y KTsKLQotCWVycm9yLT5zdGFsbGVkX21hc2sgPSBtYXNrOwotCi0JLyogc2V0X2JpdCgpIG11c3Qg YmUgYWZ0ZXIgd2UgaGF2ZSBzZXR1cCB0aGUgYmFja2NoYW5uZWwgKG1hc2spICovCi0Jc21wX21i X19iZWZvcmVfYXRvbWljKCk7Ci0Jc2V0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZlcnJvci0+ ZmxhZ3MpOworCXUzMiBjb3VudCA9IGk5MTVfcmVzZXRfY291bnQoJmk5MTUtPmdwdV9lcnJvcik7 CiAKLQl3YWtlX3VwX2FsbCgmZXJyb3ItPndhaXRfcXVldWUpOworCWk5MTVfcmVzZXQoaTkxNSwg bWFzaywgTlVMTCk7CiAKLQlyZXR1cm4gcmVzZXRfY291bnQ7CisJcmV0dXJuIGNvdW50OwogfQog CiBzdGF0aWMgaW50IGlndF9yZXNldF93YWl0KHZvaWQgKmFyZykKQEAgLTk2Miw3ICs5NDksNyBA QCBzdGF0aWMgaW50IGlndF9yZXNldF93YWl0KHZvaWQgKmFyZykKIAkJZ290byBvdXRfcnE7CiAJ fQogCi0JcmVzZXRfY291bnQgPSBmYWtlX2hhbmdjaGVjayhycSwgQUxMX0VOR0lORVMpOworCXJl c2V0X2NvdW50ID0gZmFrZV9oYW5nY2hlY2soaTkxNSwgQUxMX0VOR0lORVMpOwogCiAJdGltZW91 dCA9IGk5MTVfcmVxdWVzdF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VELCAxMCk7CiAJaWYgKHRp bWVvdXQgPCAwKSB7CkBAIC05NzIsNyArOTU5LDYgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfd2Fp dCh2b2lkICphcmcpCiAJCWdvdG8gb3V0X3JxOwogCX0KIAotCUdFTV9CVUdfT04odGVzdF9iaXQo STkxNV9SRVNFVF9IQU5ET0ZGLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKSk7CiAJaWYgKGk5MTVf cmVzZXRfY291bnQoJmk5MTUtPmdwdV9lcnJvcikgPT0gcmVzZXRfY291bnQpIHsKIAkJcHJfZXJy KCJObyBHUFUgcmVzZXQgcmVjb3JkZWQhXG4iKTsKIAkJZXJyID0gLUVJTlZBTDsKQEAgLTExNjIs NyArMTE0OCw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCX0KIAogb3V0X3Jlc2V0OgotCWZha2VfaGFuZ2NoZWNrKHJx LCBpbnRlbF9lbmdpbmVfZmxhZyhycS0+ZW5naW5lKSk7CisJZmFrZV9oYW5nY2hlY2socnEtPmk5 MTUsIGludGVsX2VuZ2luZV9mbGFnKHJxLT5lbmdpbmUpKTsKIAogCWlmICh0c2spIHsKIAkJc3Ry dWN0IGlndF93ZWRnZV9tZSB3OwpAQCAtMTM0MSwxMiArMTMyNyw3IEBAIHN0YXRpYyBpbnQgaWd0 X3Jlc2V0X3F1ZXVlKHZvaWQgKmFyZykKIAkJCQlnb3RvIGZpbmk7CiAJCQl9CiAKLQkJCXJlc2V0 X2NvdW50ID0gZmFrZV9oYW5nY2hlY2socHJldiwgRU5HSU5FX01BU0soaWQpKTsKLQotCQkJaTkx NV9yZXNldChpOTE1LCBFTkdJTkVfTUFTSyhpZCksIE5VTEwpOwotCi0JCQlHRU1fQlVHX09OKHRl c3RfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwKLQkJCQkJICAgICZpOTE1LT5ncHVfZXJyb3IuZmxh Z3MpKTsKKwkJCXJlc2V0X2NvdW50ID0gZmFrZV9oYW5nY2hlY2soaTkxNSwgRU5HSU5FX01BU0so aWQpKTsKIAogCQkJaWYgKHByZXYtPmZlbmNlLmVycm9yICE9IC1FSU8pIHsKIAkJCQlwcl9lcnIo IkdQVSByZXNldCBub3QgcmVjb3JkZWQgb24gaGFuZ2luZyByZXF1ZXN0IFtmZW5jZS5lcnJvcj0l ZF0hXG4iLApAQCAtMTU2NSw2ICsxNTQ2LDcgQEAgc3RhdGljIGludCBpZ3RfYXRvbWljX3Jlc2V0 X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCXByX2VycigiJXMoJXMp OiBGYWlsZWQgdG8gc3RhcnQgcmVxdWVzdCAlbGx4LCBhdCAleFxuIiwKIAkJICAgICAgIF9fZnVu Y19fLCBlbmdpbmUtPm5hbWUsCiAJCSAgICAgICBycS0+ZmVuY2Uuc2Vxbm8sIGh3c19zZXFubygm aCwgcnEpKTsKKwkJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKIAkJZXJyID0gLUVJTzsKIAl9 CiAKQEAgLTE1ODgsNyArMTU3MCw2IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldF9lbmdp bmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogc3RhdGljIHZvaWQgZm9yY2VfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJaTkxNV9nZW1fc2V0X3dlZGdl ZChpOTE1KTsKLQlzZXRfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwgJmk5MTUtPmdwdV9lcnJvci5m bGFncyk7CiAJaTkxNV9yZXNldChpOTE1LCAwLCBOVUxMKTsKIH0KIApAQCAtMTYxOCw2ICsxNTk5 LDI2IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldCh2b2lkICphcmcpCiAJaWYgKGk5MTVf dGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCiAJCWdvdG8gdW5sb2NrOwogCisJ aWYgKGludGVsX2hhc19ncHVfcmVzZXQoaTkxNSkpIHsKKwkJY29uc3QgdHlwZW9mKCpwaGFzZXMp ICpwOworCisJCWZvciAocCA9IHBoYXNlczsgcC0+bmFtZTsgcCsrKSB7CisJCQlHRU1fVFJBQ0Uo ImludGVsX2dwdV9yZXNldCB1bmRlciAlc1xuIiwgcC0+bmFtZSk7CisKKwkJCXAtPmNyaXRpY2Fs X3NlY3Rpb25fYmVnaW4oKTsKKwkJCWVyciA9IGludGVsX2dwdV9yZXNldChpOTE1LCBBTExfRU5H SU5FUyk7CisJCQlwLT5jcml0aWNhbF9zZWN0aW9uX2VuZCgpOworCisJCQlpZiAoZXJyKSB7CisJ CQkJcHJfZXJyKCJpbnRlbF9ncHVfcmVzZXQgZmFpbGVkIHVuZGVyICVzXG4iLAorCQkJCSAgICAg ICBwLT5uYW1lKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfQorCisJCWZvcmNlX3Jlc2V0KGk5 MTUpOworCX0KKwogCWlmIChpbnRlbF9oYXNfcmVzZXRfZW5naW5lKGk5MTUpKSB7CiAJCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAkJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3Vu ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5j CmluZGV4IDMyMTc4NGI2ZmJmNy4uMGU0M2E4NzYxNTFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwpAQCAtMTY5LDcgKzE2OSw2 IEBAIHN0YXRpYyBpbnQgY2hlY2tfd2hpdGVsaXN0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCiAKIHN0YXRpYyBpbnQgZG9fZGV2aWNlX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKLQlzZXRfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwgJmVuZ2luZS0+aTkxNS0+ Z3B1X2Vycm9yLmZsYWdzKTsKIAlpOTE1X3Jlc2V0KGVuZ2luZS0+aTkxNSwgRU5HSU5FX01BU0so ZW5naW5lLT5pZCksICJsaXZlX3dvcmthcm91bmRzIik7CiAJcmV0dXJuIDA7CiB9CkBAIC0zNDcs NyArMzQ2LDYgQEAgc3RhdGljIGludAogbGl2ZV9ncHVfcmVzZXRfZ3RfZW5naW5lX3dvcmthcm91 bmRzKHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsK LQlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJmk5MTUtPmdwdV9lcnJvcjsKIAlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlib29sIG9rOwogCkBAIC0zNjMsNyArMzYxLDYgQEAgbGl2 ZV9ncHVfcmVzZXRfZ3RfZW5naW5lX3dvcmthcm91bmRzKHZvaWQgKmFyZykKIAlpZiAoIW9rKQog CQlnb3RvIG91dDsKIAotCXNldF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3ItPmZsYWdz KTsKIAlpOTE1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTLCAibGl2ZV93b3JrYXJvdW5kcyIpOwog CiAJb2sgPSB2ZXJpZnlfZ3RfZW5naW5lX3dhKGk5MTUsICJhZnRlciByZXNldCIpOwotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK