From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 19/26] drm/i915: Markup paired operations on wakerefs Date: Tue, 11 Sep 2018 12:58:03 +0100 Message-ID: <20180911115810.8917-19-chris@chris-wilson.co.uk> References: <20180911115810.8917-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 17C066E367 for ; Tue, 11 Sep 2018 12:00:22 +0000 (UTC) In-Reply-To: <20180911115810.8917-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 VGhlIG1ham9yaXR5IG9mIHJ1bnRpbWUtcG0gb3BlcmF0aW9ucyBhcmUgYm91bmRlZCBhbmQgc2Nv cGVkIHdpdGhpbiBhCmZ1bmN0aW9uOyB0aGVzZSBhcmUgZWFzeSB0byB2ZXJpZnkgdGhhdCB0aGUg d2FrZXJlZiBhcmUgaGFuZGxlZApjb3JyZWN0bHkuIFdlIGNhbiBlbXBsb3kgdGhlIGNvbXBpbGVy IHRvIGhlbHAgdXMsIGFuZCByZWR1Y2UgdGhlIG51bWJlcgpvZiB3YWtlcmVmcyB0cmFja2VkIHdo ZW4gZGVidWdnaW5nLCBieSBwYXNzaW5nIGFyb3VuZCBjb29raWVzIHByb3ZpZGVkCmJ5IHRoZSB2 YXJpb3VzIHJwbV9nZXQgZnVuY3Rpb25zIHRvIHRoZWlyIHJwbV9wdXQgY291bnRlcnBhcnQuIFRo aXMKbWFrZXMgdGhlIHBhaXJpbmcgZXhwbGljaXQsIGFuZCBnaXZlbiB0aGUgcmVxdWlyZWQgd2Fr ZXJlZiBjb29raWUgdGhlCmNvbXBpbGVyIGNhbiB2ZXJpZnkgdGhhdCB3ZSBwYXNzIGFuIGluaXRp YWxpc2VkIHZhbHVlIHRvIHRoZSBycG1fcHV0CihxdWl0ZSBoYW5keSBmb3IgZG91YmxlIGNoZWNr aW5nIGVycm9yIHBhdGhzKS4KCkZvciByZWd1bGFyIGJ1aWxkcywgdGhlIGNvbXBpbGVyIHNob3Vs ZCBiZSBhYmxlIHRvIGVsaW1pbmF0ZSB0aGUgdW51c2VkCmxvY2FsIHZhcmlhYmxlcyBhbmQgdGhl IHByb2dyYW0gZ3Jvd3RoIHNob3VsZCBiZSBtaW5pbWFsLiBGd2l3LCBpdCBjYW1lCm91dCBhcyBh IG5ldCBpbXByb3ZlbWVudCBhcyBnY2Mgd2FzIGFibGUgdG8gcmVmYWN0b3IgcnBtX2dldCBhbmQK cnBtX2dldF9pZl9pbl91c2UgdG9nZXRoZXIsCgphZGQvcmVtb3ZlOiAxLzEgZ3Jvdy9zaHJpbms6 IDIwLzkgdXAvZG93bjogMTkxLy0yNjggKC03NykKRnVuY3Rpb24gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQppbnRlbF9ydW50aW1lX3BtX3B1 dF91bmNoZWNrZWQgICAgICAgICAgICAgICAgIC0gICAgIDEzNiAgICArMTM2Cmk5MTVfZ2VtX3Vu cGFyayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5NiAgICAgNDA2ICAgICArMTAKaW50 ZWxfcnVudGltZV9wbV9nZXQgICAgICAgICAgICAgICAgICAgICAgICAgMTM1ICAgICAxNDEgICAg ICArNgppbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZSAgICAgICAgICAgICAgICAxMzYgICAg IDE0MSAgICAgICs1Cmk5MTVfcGVyZl9vcGVuX2lvY3RsICAgICAgICAgICAgICAgICAgICAgICAg NDM3NSAgICA0Mzc5ICAgICAgKzQKaTkxNV9ncHVfYnVzeSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDcyICAgICAgNzYgICAgICArNAppOTE1X2dlbV9pZGxlX3dvcmtfaGFuZGxlciAg ICAgICAgICAgICAgICAgICA5NTQgICAgIDk1OCAgICAgICs0CmNhcHR1cmUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgNjgxNCAgICA2ODE4ICAgICAgKzQKbW9ja19nZW1fZGV2 aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDMzICAgIDE0MzYgICAgICArMwpfX2V4 ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQgICAgICAgICAgICAgIDI1NzMgICAgMjU3NiAgICAg ICszCmk5MTVfc2FtcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1NiAgICAg NzU4ICAgICAgKzIKaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZSAgICAgICAgICAgICAgICAg MzY0ICAgICAzNjUgICAgICArMQppZ3RfbW1hcF9vZmZzZXRfZXhoYXVzdGlvbiAgICAgICAgICAg ICAgICAgIDEwMzUgICAgMTAzNiAgICAgICsxCmk5MTVfcnVudGltZV9wbV9zdGF0dXMgICAgICAg ICAgICAgICAgICAgICAgIDI1NyAgICAgMjU4ICAgICAgKzEKaTkxNV9ycHNfYm9vc3RfaW5mbyAg ICAgICAgICAgICAgICAgICAgICAgICAxMzU4ICAgIDEzNTkgICAgICArMQppOTE1X2hhbmdjaGVj a19pbmZvICAgICAgICAgICAgICAgICAgICAgICAgIDEyMjkgICAgMTIzMCAgICAgICsxCmk5MTVf Z2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dCAgICAgICAgICAgIDY4MiAgICAgNjgzICAgICAg KzEKaTkxNV9nZW1fc3VzcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEwICAgICA0 MTEgICAgICArMQppOTE1X2dlbV9yZXN1bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy NTQgICAgIDI1NSAgICAgICsxCmk5MTVfZ2VtX3BhcmsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDE5MCAgICAgMTkxICAgICAgKzEKaTkxNV9lbmdpbmVfaW5mbyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMjc5ICAgICAyODAgICAgICArMQppbnRlbF9ycHNfbWFya19pbnRlcmFj dGl2ZSAgICAgICAgICAgICAgICAgICAxOTQgICAgIDE5MyAgICAgIC0xCmk5MTVfaGFuZ2NoZWNr X2VsYXBzZWQgICAgICAgICAgICAgICAgICAgICAgMTUyNiAgICAxNTI1ICAgICAgLTEKaTkxNV9n ZW1fd2FpdF9mb3JfaWRsZSAgICAgICAgICAgICAgICAgICAgICAgMjk4ICAgICAyOTcgICAgICAt MQppOTE1X2Ryb3BfY2FjaGVzX3NldCAgICAgICAgICAgICAgICAgICAgICAgICA1NTUgICAgIDU1 NCAgICAgIC0xCmV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQgICAgICAgICAgICAgICAgIDEy NiAgICAgMTI1ICAgICAgLTEKYWxpYXNpbmdfZ3R0X2JpbmRfdm1hICAgICAgICAgICAgICAgICAg ICAgICAgMjM1ICAgICAyMzQgICAgICAtMQppOTE1X2dlbV9yZXRpcmVfd29ya19oYW5kbGVyICAg ICAgICAgICAgICAgICAxNDQgICAgIDE0MiAgICAgIC0yCmlndF9ldmljdF9jb250ZXh0cy5wYXJ0 ICAgICAgICAgICAgICAgICAgICAgIDkxNiAgICAgOTEwICAgICAgLTYKaW50ZWxfcnVudGltZV9w bV9nZXRfaWZfaW5fdXNlICAgICAgICAgICAgICAgMTQxICAgICAgMjMgICAgLTExOAppbnRlbF9y dW50aW1lX3BtX3B1dCAgICAgICAgICAgICAgICAgICAgICAgICAxMzYgICAgICAgLSAgICAtMTM2 CgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYyAgICAgICAgfCAgIDgg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCAgICAgICAgICAgICAgICB8ICAgMiAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkX3BvbGljeS5jICAgICAgIHwgICAyICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgICAgICAgICAgfCAgIDQgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8IDEzMCArKysr KysrKysrKy0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAg ICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAg ICAgIHwgIDU3ICsrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3Jl Zy5jICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAg ICAgICAgIHwgIDIyICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIu YyAgICAgIHwgIDI3ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAg ICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAg ICAgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jICAgICAgICAg ICAgICAgfCAgMjYgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAg ICAgICAgIHwgIDI0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAg ICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAg ICAgICAgIHwgIDE1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAg ICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICAg ICAgICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jICAgICAg ICAgIHwgIDE1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgICAgICAg ICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jICAgICAgICAgICAg ICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICAgICAgICAg IHwgICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgICAgICAg fCAgODkgKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyAg ICAgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3Bh Z2VzLmMgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt LmMgICAgIHwgIDI5ICsrLS0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYyB8ICAxMiArLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZp Y3QuYyAgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f Z3R0LmMgfCAgMTAgKy0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVj dC5jICB8ICAxOCArKy0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVj ay5jICB8ICAgNSArLQogMzIgZmlsZXMgY2hhbmdlZCwgMzgyIGluc2VydGlvbnMoKyksIDIwNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1 cmVfZ20uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jCmluZGV4IGZl NzU0MDIyZTM1Ni4uNjM3MmVjZTEwODgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvYXBlcnR1cmVfZ20uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1 cmVfZ20uYwpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfdmdwdV9mZW5jZShz dHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKIAl9CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJt LnN0cnVjdF9tdXRleCk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50 ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKIH0KIAogc3RhdGljIGludCBh bGxvY192Z3B1X2ZlbmNlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQpAQCAtMjA0LDcgKzIwNCw3 IEBAIHN0YXRpYyBpbnQgYWxsb2NfdmdwdV9mZW5jZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkK IAlfY2xlYXJfdmdwdV9mZW5jZSh2Z3B1KTsKIAogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRl bF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwogCXJldHVybiAwOwogb3V0X2Zy ZWVfZmVuY2U6CiAJZ3Z0X3ZncHVfZXJyKCJGYWlsZWQgdG8gYWxsb2MgZmVuY2VzXG4iKTsKQEAg LTIxNyw3ICsyMTcsNyBAQCBzdGF0aWMgaW50IGFsbG9jX3ZncHVfZmVuY2Uoc3RydWN0IGludGVs X3ZncHUgKnZncHUpCiAJCXZncHUtPmZlbmNlLnJlZ3NbaV0gPSBOVUxMOwogCX0KIAltdXRleF91 bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsK IAlyZXR1cm4gLUVOT1NQQzsKIH0KIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgaW50ZWxfdmdw dV9yZXNldF9yZXNvdXJjZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKIAogCWludGVsX3J1bnRp bWVfcG1fZ2V0KGRldl9wcml2KTsKIAlfY2xlYXJfdmdwdV9mZW5jZSh2Z3B1KTsKLQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2Vk KGRldl9wcml2KTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvZ3Z0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKaW5kZXggMzFmNmNkYmU1 YzQyLi41NzQzOGZiNjBiNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9n dnQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKQEAgLTU5Myw3ICs1OTMs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbW1pb19od19hY2Nlc3NfcHJlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGljIGlubGluZSB2b2lkIG1taW9faHdfYWNjZXNz X3Bvc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2 X3ByaXYpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9z Y2hlZF9wb2xpY3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuYwpp bmRleCBjMzJlN2Q1ZTg2MjkuLmYwNGIzYjk2NWJmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3NjaGVkX3BvbGljeS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9zY2hlZF9wb2xpY3kuYwpAQCAtNDc0LDYgKzQ3NCw2IEBAIHZvaWQgaW50ZWxfdmdwdV9zdG9w X3NjaGVkdWxlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQogCQl9CiAJfQogCXNwaW5fdW5sb2Nr X2JoKCZzY2hlZHVsZXItPm1taW9fY29udGV4dF9sb2NrKTsKLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsK IAltdXRleF91bmxvY2soJnZncHUtPmd2dC0+c2NoZWRfbG9jayk7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMKaW5kZXggZWEzNDAwM2Q2ZGQyLi4wOWUyYzQyNWJjZjMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKQEAgLTk2OSw3ICs5NjksNyBAQCBzdGF0aWMg aW50IHdvcmtsb2FkX3RocmVhZCh2b2lkICpwcml2KQogCQkJaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV9wdXQoZ3Z0LT5kZXZfcHJpdiwKIAkJCQkJRk9SQ0VXQUtFX0FMTCk7CiAKLQkJaW50ZWxfcnVu dGltZV9wbV9wdXQoZ3Z0LT5kZXZfcHJpdik7CisJCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChndnQtPmRldl9wcml2KTsKIAkJaWYgKHJldCAmJiAodmdwdV9pc192bV91bmhlYWx0aHko cmV0KSkpCiAJCQllbnRlcl9mYWlsc2FmZV9tb2RlKHZncHUsIEdWVF9GQUlMU0FGRV9HVUVTVF9F UlIpOwogCX0KQEAgLTEzOTAsNyArMTM5MCw3IEBAIGludGVsX3ZncHVfY3JlYXRlX3dvcmtsb2Fk KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCBpbnQgcmluZ19pZCwKIAkJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCQlyZXQgPSBpbnRlbF9ndnRfc2Nhbl9hbmRfc2hh ZG93X3dvcmtsb2FkKHdvcmtsb2FkKTsKIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7Ci0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkJaW50ZWxf cnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKIAl9CiAKIAlpZiAocmV0ICYmICh2 Z3B1X2lzX3ZtX3VuaGVhbHRoeShyZXQpKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YwppbmRleCA2ZDJlMWNjNjE5MDYuLmRiZmU0ZTQ1NmQ5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKQEAgLTY3NSw5ICs2NzUsMTAgQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVw dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CiAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwogCWludCBpLCBwaXBlOwogCi0JaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 CiAKIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJc2VxX3ByaW50ZihtLCAiTWFz dGVyIEludGVycnVwdCBDb250cm9sOlx0JTA4eFxuIiwKQEAgLTg3OCw3ICs4NzksNyBAQCBzdGF0 aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRh KQogCQl9CiAJfQogCi0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1 bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtOTQ5 LDEwICs5NTAsMTEgQEAgc3RhdGljIGludCBpOTE1X2dwdV9pbmZvX29wZW4oc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBpbm9kZS0+aV9wcml2YXRlOwogCXN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZ3B1Owor CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7 CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCWdwdSA9IGk5MTVfY2Fw dHVyZV9ncHVfc3RhdGUoaTkxNSk7Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAJaWYgKCFncHUpCiAJCXJldHVybiAt RU5PTUVNOwogCkBAIC0xMDA2LDE1ICsxMDA4LDE2IEBAIGk5MTVfbmV4dF9zZXFub19zZXQodm9p ZCAqZGF0YSwgdTY0IHZhbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkYXRhOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCXJldCA9IGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8o ZGV2LCB2YWwpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKIApAQCAtMTAyOSw5ICsxMDMyLDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVx dWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CiAJ c3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CisJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7CiAJaW50IHJldCA9IDA7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAog CWlmIChJU19HRU41KGRldl9wcml2KSkgewogCQl1MTYgcmd2c3djdGwgPSBJOTE1X1JFQUQxNihN RU1TV0NUTCk7CkBAIC0xMjQzLDcgKzEyNDcsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5 X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJc2VxX3ByaW50ZihtLCAi TWF4IENEIGNsb2NrIGZyZXF1ZW5jeTogJWQga0h6XG4iLCBkZXZfcHJpdi0+bWF4X2NkY2xrX2Zy ZXEpOwogCXNlcV9wcmludGYobSwgIk1heCBwaXhlbCBjbG9jayBmcmVxdWVuY3k6ICVkIGtIelxu IiwgZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcSk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCXJl dHVybiByZXQ7CiB9CiAKQEAgLTEyODIsNiArMTI4Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5n Y2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAl1NjQgYWN0aGRb STkxNV9OVU1fRU5HSU5FU107CiAJdTMyIHNlcW5vW0k5MTVfTlVNX0VOR0lORVNdOwogCXN0cnVj dCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAll bnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAogCWlmICh0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmRl dl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpKQpAQCAtMTMwMCw3ICsxMzA1LDcgQEAgc3RhdGljIGlu dCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQog CQlyZXR1cm4gMDsKIAl9CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewogCQlhY3RoZFtpZF0gPSBpbnRlbF9lbmdpbmVfZ2V0 X2FjdGl2ZV9oZWFkKGVuZ2luZSk7CkBAIC0xMzA5LDcgKzEzMTQsNyBAQCBzdGF0aWMgaW50IGk5 MTVfaGFuZ2NoZWNrX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAlp bnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKGRldl9wcml2LT5lbmdpbmVbUkNTXSwgJmluc3Rkb25l KTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlpZiAodGltZXJfcGVuZGluZygmZGV2X3ByaXYt PmdwdV9lcnJvci5oYW5nY2hlY2tfd29yay50aW1lcikpCiAJCXNlcV9wcmludGYobSwgIkhhbmdj aGVjayBhY3RpdmUsIHRpbWVyIGZpcmVzIGluICVkbXNcbiIsCkBAIC0xNTg1LDkgKzE1OTAsMTAg QEAgc3RhdGljIGludCBnZW42X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiBzdGF0aWMg aW50IGk5MTVfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2 YXRlKTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlpbnQgZXJyOwogCi0JaW50ZWxfcnVu dGltZV9wbV9nZXQoZGV2X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7CiAKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklF VyhkZXZfcHJpdikpCiAJCWVyciA9IHZsdl9kcnBjX2luZm8obSk7CkBAIC0xNTk2LDcgKzE2MDIs NyBAQCBzdGF0aWMgaW50IGk5MTVfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogCWVsc2UKIAkJZXJyID0gaXJvbmxha2VfZHJwY19pbmZvKG0pOwogCi0JaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 LCB3YWtlcmVmKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0xNjE4LDExICsxNjI0LDEyIEBAIHN0 YXRpYyBpbnQgaTkxNV9mYmNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNSht LT5wcml2YXRlKTsKIAlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKKwlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAogCWlmICghSEFTX0ZCQyhkZXZfcHJpdikpCiAJCXJl dHVybiAtRU5PREVWOwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCXdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAJbXV0ZXhfbG9jaygmZmJjLT5s b2NrKTsKIAogCWlmIChpbnRlbF9mYmNfaXNfYWN0aXZlKGRldl9wcml2KSkKQEAgLTE2NDksNyAr MTY1Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mYmNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQogCX0KIAogCW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsKLQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYs IHdha2VyZWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNjk0LDExICsxNzAxLDEyIEBAIERFRklO RV9TSU1QTEVfQVRUUklCVVRFKGk5MTVfZmJjX2ZhbHNlX2NvbG9yX2ZvcHMsCiBzdGF0aWMgaW50 IGk5MTVfaXBzX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0 ZSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKIAlpZiAoIUhBU19JUFMoZGV2X3ByaXYp KQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsK Kwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJc2VxX3ByaW50 ZihtLCAiRW5hYmxlZCBieSBrZXJuZWwgcGFyYW1ldGVyOiAlc1xuIiwKIAkJICAgeWVzbm8oaTkx NV9tb2RwYXJhbXMuZW5hYmxlX2lwcykpOwpAQCAtMTcxMiw3ICsxNzIwLDcgQEAgc3RhdGljIGlu dCBpOTE1X2lwc19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCQlz ZXFfcHV0cyhtLCAiQ3VycmVudGx5OiBkaXNhYmxlZFxuIik7CiAJfQogCi0JaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtl cmVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTcyMCw5ICsxNzI4LDEwIEBAIHN0YXRpYyBpbnQg aTkxNV9pcHNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogc3RhdGlj IGludCBpOTE1X3NyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJp dmF0ZSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJYm9vbCBzcl9lbmFibGVkID0gZmFs c2U7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZf cHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkKQEAgLTE3NDAsNyArMTc0OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoRldf QkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdSRFdORU47CiAKIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1 dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlz ZXFfcHJpbnRmKG0sICJzZWxmLXJlZnJlc2g6ICVzXG4iLCBlbmFibGVkZGlzYWJsZWQoc3JfZW5h YmxlZCkpOwogCkBAIC0xNzc5LDEzICsxNzg4LDE0IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX2Zy ZXFfdGFibGUoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwogCXN0cnVj dCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3RfcG0ucnBzOwogCXVuc2lnbmVkIGludCBt YXhfZ3B1X2ZyZXEsIG1pbl9ncHVfZnJlcTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlp bnQgZ3B1X2ZyZXEsIGlhX2ZyZXE7CiAJaW50IHJldDsKIAogCWlmICghSEFTX0xMQyhkZXZfcHJp dikpCiAJCXJldHVybiAtRU5PREVWOwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYp OworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAlyZXQgPSBt dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wY3VfbG9jayk7CiAJaWYgKHJldCkK QEAgLTE4MTgsNyArMTgyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX2ZyZXFfdGFibGUoc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cGN1X2xvY2spOwogCiBvdXQ6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKIAlyZXR1cm4gcmV0OwogfQog CkBAIC0xOTkxLDggKzIwMDEsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqc3dpenpsZV9zdHJpbmco dW5zaWduZWQgc3dpenpsZSkKIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxlX2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50ZWxf cnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJc2VxX3ByaW50ZihtLCAiYml0NiBzd2l6emxl IGZvciBYLXRpbGluZyA9ICVzXG4iLAogCQkgICBzd2l6emxlX3N0cmluZyhkZXZfcHJpdi0+bW0u Yml0XzZfc3dpenpsZV94KSk7CkBAIC0yMDMwLDcgKzIwNDEsNyBAQCBzdGF0aWMgaW50IGk5MTVf c3dpenpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlpZiAoZGV2X3By aXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUykKIAkJc2VxX3B1dHMobSwgIkwt c2hhcGVkIG1lbW9yeSBkZXRlY3RlZFxuIik7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZf cHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCiAJcmV0 dXJuIDA7CiB9CkBAIC0yMTQ3LDYgKzIxNTgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxjKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9odWNfbG9hZF9zdGF0 dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOworCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwogCXN0cnVjdCBkcm1fcHJpbnRlciBwOwogCiAJaWYgKCFIQVNf SFVDKGRldl9wcml2KSkKQEAgLTIxNTUsOSArMjE2Nyw5IEBAIHN0YXRpYyBpbnQgaTkxNV9odWNf bG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJcCA9IGRy bV9zZXFfZmlsZV9wcmludGVyKG0pOwogCWludGVsX3VjX2Z3X2R1bXAoJmRldl9wcml2LT5odWMu ZncsICZwKTsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCXNlcV9wcmludGYobSwgIlxuSHVDIHN0 YXR1cyAweCUwOHg6XG4iLCBJOTE1X1JFQUQoSFVDX1NUQVRVUzIpKTsKLQlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2Vy ZWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMTY1LDYgKzIxNzcsNyBAQCBzdGF0aWMgaW50IGk5 MTVfaHVjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQog c3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2Rl X3RvX2k5MTUobS0+cHJpdmF0ZSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJc3RydWN0 IGRybV9wcmludGVyIHA7CiAJdTMyIHRtcCwgaTsKIApAQCAtMjE3NCw3ICsyMTg3LDcgQEAgc3Rh dGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIAlwID0gZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7CiAJaW50ZWxfdWNfZndfZHVt cCgmZGV2X3ByaXYtPmd1Yy5mdywgJnApOwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3By aXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAl0bXAg PSBJOTE1X1JFQUQoR1VDX1NUQVRVUyk7CiAKQEAgLTIxODksNyArMjIwMiw3IEBAIHN0YXRpYyBp bnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpCiAJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCiAJCXNlcV9wcmludGYobSwgIlx0JTJkOiBc dDB4JXhcbiIsIGksIEk5MTVfUkVBRChTT0ZUX1NDUkFUQ0goaSkpKTsKIAotCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2Fr ZXJlZik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI1NDcsNiArMjU2MCw3IEBAIHBzcl9zb3VyY2Vf c3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHNlcV9maWxl ICptKQogc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2Rl X3RvX2k5MTUobS0+cHJpdmF0ZSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdTMyIHBz cnBlcmYgPSAwOwogCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwogCWJvb2wgc2lua19zdXBwb3J0OwpA QCAtMjU1OSw3ICsyNTczLDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlpZiAoIXNpbmtfc3VwcG9ydCkKIAkJcmV0dXJu IDA7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7CiAJc2VxX3ByaW50ZihtLCAiUFNSIG1vZGU6ICVzXG4iLApAQCAtMjU5OCw3ICsyNjEy LDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKIAkJCSAgIGRldl9wcml2LT5wc3IubGFzdF9leGl0KTsKIAl9CiAKLQlpbnRl bF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYsIHdha2VyZWYpOwogCXJldHVybiAwOwogfQogCkBAIC0yNjA3LDYgKzI2MjEsNyBAQCBpOTE1 X2VkcF9wc3JfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWly ZV9jdHggY3R4OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCWludCByZXQ7CiAKIAlpZiAo IUNBTl9QU1IoZGV2X3ByaXYpKQpAQCAtMjYxNCw3ICsyNjI5LDcgQEAgaTkxNV9lZHBfcHNyX2Rl YnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCiAJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBQ U1IgZGVidWcgdG8gJWxseFxuIiwgdmFsKTsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJZHJt X21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBU SUJMRSk7CiAKQEAgLTI2MjksNyArMjY0NCw3IEBAIGk5MTVfZWRwX3Bzcl9kZWJ1Z19zZXQodm9p ZCAqZGF0YSwgdTY0IHZhbCkKIAlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwogCWRybV9t b2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlyZXR1 cm4gcmV0OwogfQpAQCAtMjY1NCwxNSArMjY2OSwxNiBAQCBzdGF0aWMgaW50IGk5MTVfZW5lcmd5 X3VKKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CiAJdW5zaWduZWQg bG9uZyBsb25nIHBvd2VyOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXUzMiB1bml0czsK IAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlp bnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKIAogCWlmIChyZG1zcmxfc2FmZShNU1JfUkFQTF9QT1dFUl9VTklU LCAmcG93ZXIpKSB7Ci0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkJaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9 CiAKQEAgLTI2NzAsNyArMjY4Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmVyZ3lfdUooc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXBvd2VyID0gSTkxNV9SRUFEKE1DSF9TRUNQX05S R19TVFRTKTsKIAlwb3dlciA9ICgxMDAwMDAwICogcG93ZXIpID4+IHVuaXRzOyAvKiBjb252ZXJ0 IHRvIHVKICovCiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCiAJc2VxX3ByaW50ZihtLCAiJWxsdSIs IHBvd2VyKTsKIApAQCAtMjczOSw2ICsyNzU1LDcgQEAgc3RhdGljIGludCBpOTE1X3Bvd2VyX2Rv bWFpbl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogc3RhdGljIGludCBp OTE1X2RtY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsK KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlzdHJ1Y3QgaW50ZWxfY3NyICpjc3I7CiAKIAlp ZiAoIUhBU19DU1IoZGV2X3ByaXYpKQpAQCAtMjc0Niw3ICsyNzYzLDcgQEAgc3RhdGljIGludCBp OTE1X2RtY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJY3NyID0g JmRldl9wcml2LT5jc3I7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCXNlcV9wcmludGYobSwg ImZ3IGxvYWRlZDogJXNcbiIsIHllc25vKGNzci0+ZG1jX3BheWxvYWQgIT0gTlVMTCkpOwogCXNl cV9wcmludGYobSwgInBhdGg6ICVzXG4iLCBjc3ItPmZ3X3BhdGgpOwpAQCAtMjc3Myw3ICsyNzkw LDcgQEAgc3RhdGljIGludCBpOTE1X2RtY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogCXNlcV9wcmludGYobSwgInNzcCBiYXNlOiAweCUwOHhcbiIsIEk5MTVfUkVBRChD U1JfU1NQX0JBU0UpKTsKIAlzZXFfcHJpbnRmKG0sICJodHA6IDB4JTA4eFxuIiwgSTkxNV9SRUFE KENTUl9IVFBfU0tMKSk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC0zMDYyLDggKzMwNzksMTAgQEAgc3RhdGljIGludCBpOTE1X2Rpc3BsYXlfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xp c3RfaXRlciBjb25uX2l0ZXI7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCi0JaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwogCXNlcV9wcmludGYobSwgIkNSVEMgaW5mb1xuIik7CiAJc2VxX3ByaW50 ZihtLCAiLS0tLS0tLS0tXG4iKTsKIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewpA QCAtMzExMSw3ICszMTMwLDcgQEAgc3RhdGljIGludCBpOTE1X2Rpc3BsYXlfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQo JmNvbm5faXRlcik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAot CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTMxMjAsMTAgKzMxMzksMTEg QEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9f aTkxNShtLT5wcml2YXRlKTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJc3RydWN0 IGRybV9wcmludGVyIHA7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCXNlcV9wcmludGYobSwg IkdUIGF3YWtlPyAlcyAoZXBvY2ggJXUpXG4iLAogCQkgICB5ZXNubyhkZXZfcHJpdi0+Z3QuYXdh a2UpLCBkZXZfcHJpdi0+Z3QuZXBvY2gpOwpAQCAtMzEzNiw3ICszMTU2LDcgQEAgc3RhdGljIGlu dCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKIAkJaW50ZWxfZW5naW5lX2R1bXAo ZW5naW5lLCAmcCwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwogCi0JaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsK IAogCXJldHVybiAwOwogfQpAQCAtMzI0Nyw2ICszMjY3LDcgQEAgc3RhdGljIHNzaXplX3QgaTkx NV9pcGNfc3RhdHVzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAq dWJ1ZiwKIHsKIAlzdHJ1Y3Qgc2VxX2ZpbGUgKm0gPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKKwlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKIAlpbnQgcmV0OwogCWJvb2wgZW5hYmxlOwogCkBAIC0zMjU0LDEzICsz Mjc1LDE1IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfaXBjX3N0YXR1c193cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCiAJaWYgKHJldCA8IDApCiAJCXJldHVy biByZXQ7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwogCWlmICghZGV2X3ByaXYtPmlwY19lbmFi bGVkICYmIGVuYWJsZSkKIAkJRFJNX0lORk8oIkVuYWJsaW5nIElQQzogV00gd2lsbCBiZSBwcm9w ZXIgb25seSBhZnRlciBuZXh0IGNvbW1pdFxuIik7CiAJZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jp b3Nfd20gPSB0cnVlOwogCWRldl9wcml2LT5pcGNfZW5hYmxlZCA9IGVuYWJsZTsKIAlpbnRlbF9l bmFibGVfaXBjKGRldl9wcml2KTsKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisK KwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlyZXR1cm4gbGVu OwogfQpAQCAtNDA0Nyw5ICs0MDcwLDEzIEBAIGk5MTVfZHJvcF9jYWNoZXNfc2V0KHZvaWQgKmRh dGEsIHU2NCB2YWwpCiAJCQkJCQkgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKIAogCQlpZiAo dmFsICYgRFJPUF9SRVNFVF9TRVFOTykgewotCQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7 CisJCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCQkJd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOworCiAJCQlyZXQgPSBpOTE1X2dlbV9zZXRfZ2xvYmFsX3NlcW5vKCZp OTE1LT5kcm0sIDEpOwotCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisKKwkJCWludGVs X3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwogCQl9CiAKIAkJaWYgKHZhbCAmIERST1Bf UkVUSVJFKQpAQCAtNDA5OSwxNiArNDEyNiwxNyBAQCBzdGF0aWMgaW50CiBpOTE1X2NhY2hlX3No YXJpbmdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRhdGE7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdTMyIHNu cGNyOwogCiAJaWYgKCEoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpKQog CQlyZXR1cm4gLUVOT0RFVjsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3 YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJc25wY3IgPSBJOTE1 X1JFQUQoR0VONl9NQkNVTklUX1NOUENSKTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAkqdmFs ID0gKHNucGNyICYgR0VONl9NQkNfU05QQ1JfTUFTSykgPj4gR0VONl9NQkNfU05QQ1JfU0hJRlQ7 CiAKQEAgLTQxMTksNiArNDE0Nyw3IEBAIHN0YXRpYyBpbnQKIGk5MTVfY2FjaGVfc2hhcmluZ19z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkYXRhOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXUzMiBzbnBjcjsKIAog CWlmICghKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpKSkKQEAgLTQxMjcs NyArNDE1Niw3IEBAIGk5MTVfY2FjaGVfc2hhcmluZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkK IAlpZiAodmFsID4gMykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsK IAlEUk1fREVCVUdfRFJJVkVSKCJNYW51YWxseSBzZXR0aW5nIHVuY29yZSBzaGFyaW5nIHRvICVs bHVcbiIsIHZhbCk7CiAKIAkvKiBVcGRhdGUgdGhlIGNhY2hlIHNoYXJpbmcgcG9saWN5IGhlcmUg YXMgd2VsbCAqLwpAQCAtNDEzNiw3ICs0MTY1LDcgQEAgaTkxNV9jYWNoZV9zaGFyaW5nX3NldCh2 b2lkICpkYXRhLCB1NjQgdmFsKQogCXNucGNyIHw9ICh2YWwgPDwgR0VONl9NQkNfU05QQ1JfU0hJ RlQpOwogCUk5MTVfV1JJVEUoR0VONl9NQkNVTklUX1NOUENSLCBzbnBjcik7CiAKLQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYs IHdha2VyZWYpOwogCXJldHVybiAwOwogfQogCkBAIC00MzU4LDYgKzQzODcsNyBAQCBzdGF0aWMg aW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnBy aXZhdGUpOwogCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNzZXU7CisJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpCiAJCXJldHVybiAtRU5PREVW OwpAQCAtNDM3Miw3ICs0NDAyLDcgQEAgc3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVzKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2Ug PQogCQlJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKIAot CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJ CWNoZXJyeXZpZXdfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7CkBAIC00Mzg0 LDcgKzQ0MTQsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCiAJCWdlbjEwX3NzZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwg JnNzZXUpOwogCX0KIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlpOTE1X3ByaW50X3NzZXVfaW5m byhtLCBmYWxzZSwgJnNzZXUpOwogCkBAIC00NDEyLDcgKzQ0NDIsNyBAQCBzdGF0aWMgaW50IGk5 MTVfZm9yY2V3YWtlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZp bGUpCiAJCXJldHVybiAwOwogCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2VyX3B1dChpOTE1 KTsKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91 bmNoZWNrZWQoaTkxNSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmlu ZGV4IDExODc5ZDVjNzY0ZC4uMjY2ZGUzYWMxNWFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK QEAgLTEyOCw2ICsxMjgsOCBAQCBib29sIGk5MTVfZXJyb3JfaW5qZWN0ZWQodm9pZCk7CiAJX19p OTE1X3ByaW50ayhpOTE1LCBpOTE1X2Vycm9yX2luamVjdGVkKCkgPyBLRVJOX0RFQlVHIDogS0VS Tl9FUlIsIFwKIAkJICAgICAgZm10LCAjI19fVkFfQVJHU19fKQogCit0eXBlZGVmIGRlcG90X3N0 YWNrX2hhbmRsZV90IGludGVsX3dha2VyZWZfdDsKKwogdHlwZWRlZiBzdHJ1Y3QgewogCXVpbnQz Ml90IHZhbDsKIH0gdWludF9maXhlZF8xNl8xNl90OwpAQCAtMTQ2NCw2ICsxNDY2LDggQEAgc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gewogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKIAor CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCiAJLyoqCiAJICogQHNhbXBsZV9mbGFnczogRmxh Z3MgcmVwcmVzZW50aW5nIHRoZSBgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV8qYAogCSAqIHBy b3BlcnRpZXMgZ2l2ZW4gd2hlbiBvcGVuaW5nIGEgc3RyZWFtLCByZXByZXNlbnRpbmcgdGhlIGNv bnRlbnRzCkBAIC0yMTE1LDcgKzIxMTksNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJ CSAqIEluIG9yZGVyIHRvIHJlZHVjZSB0aGUgZWZmZWN0IG9uIHBlcmZvcm1hbmNlLCB0aGVyZQog CQkgKiBpcyBhIHNsaWdodCBkZWxheSBiZWZvcmUgd2UgZG8gc28uCiAJCSAqLwotCQlib29sIGF3 YWtlOworCQlpbnRlbF93YWtlcmVmX3QgYXdha2U7CiAKIAkJLyoqCiAJCSAqIFRoZSBudW1iZXIg b2YgdGltZXMgd2UgaGF2ZSB3b2tlbiB1cC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGQ2 ZjJiYmQ2YTBkYy4uYWY2M2FmNzI5ZjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTEz OSw2ICsxMzksOCBAQCBpbnQgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAogc3RhdGljIHUzMiBfX2k5MTVfZ2VtX3Bhcmsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCiB7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKIAlHRU1f VFJBQ0UoIlxuIik7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKQEAgLTE2OSwxNCArMTcxLDE1IEBAIHN0YXRpYyB1MzIgX19pOTE1X2dlbV9wYXJrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWk5MTVfcG11X2d0X3BhcmtlZChpOTE1KTsK IAlpOTE1X3ZtYV9wYXJrZWQoaTkxNSk7CiAKLQlpOTE1LT5ndC5hd2FrZSA9IGZhbHNlOworCXdh a2VyZWYgPSBmZXRjaF9hbmRfemVybygmaTkxNS0+Z3QuYXdha2UpOworCUdFTV9CVUdfT04oIXdh a2VyZWYpOwogCiAJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQogCQlnZW42X3Jwc19pZGxlKGk5 MTUpOwogCiAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoaTkxNSwgUE9XRVJfRE9NQUlOX0dUX0lS USk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKIAogCXJldHVybiBpOTE1LT5ndC5lcG9jaDsKIH0KQEAgLTIwNSw3 ICsyMDgsOCBAQCB2b2lkIGk5MTVfZ2VtX3VucGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAlpZiAoaTkxNS0+Z3QuYXdha2UpCiAJCXJldHVybjsKIAotCWludGVsX3J1bnRpbWVf cG1fZ2V0X25vcmVzdW1lKGk5MTUpOworCWk5MTUtPmd0LmF3YWtlID0gaW50ZWxfcnVudGltZV9w bV9nZXRfbm9yZXN1bWUoaTkxNSk7CisJR0VNX0JVR19PTighaTkxNS0+Z3QuYXdha2UpOwogCiAJ LyoKIAkgKiBJdCBzZWVtcyB0aGF0IHRoZSBETUMgbGlrZXMgdG8gdHJhbnNpdGlvbiBiZXR3ZWVu IHRoZSBEQyBzdGF0ZXMgYSBsb3QKQEAgLTIyMCw3ICsyMjQsNiBAQCB2b2lkIGk5MTVfZ2VtX3Vu cGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkgKi8KIAlpbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldChpOTE1LCBQT1dFUl9ET01BSU5fR1RfSVJRKTsKIAotCWk5MTUtPmd0LmF3YWtl ID0gdHJ1ZTsKIAlpZiAodW5saWtlbHkoKytpOTE1LT5ndC5lcG9jaCA9PSAwKSkgLyoga2VlcCAw IGFzIGludmFsaWQgKi8KIAkJaTkxNS0+Z3QuZXBvY2ggPSAxOwogCkBAIC03ODMsNiArNzg2LDgg QEAgZmJfd3JpdGVfb3JpZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2ln bmVkIGludCBkb21haW4pCiAKIHZvaWQgaTkxNV9nZW1fZmx1c2hfZ2d0dF93cml0ZXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogeworCWludGVsX3dha2VyZWZfdCB3YWtlcmVm OworCiAJLyoKIAkgKiBObyBhY3R1YWwgZmx1c2hpbmcgaXMgcmVxdWlyZWQgZm9yIHRoZSBHVFQg d3JpdGUgZG9tYWluIGZvciByZWFkcwogCSAqIGZyb20gdGhlIEdUVCBkb21haW4uIFdyaXRlcyB0 byBpdCAiaW1tZWRpYXRlbHkiIGdvIHRvIG1haW4gbWVtb3J5CkBAIC04MDksMTMgKzgxNCwxMyBA QCB2b2lkIGk5MTVfZ2VtX2ZsdXNoX2dndHRfd3JpdGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAogCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2goZGV2X3ByaXYpOwogCi0JaW50 ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChkZXZfcHJpdik7CiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsK IAogCVBPU1RJTkdfUkVBRF9GVyhSSU5HX0hFQUQoUkVOREVSX1JJTkdfQkFTRSkpOwogCiAJc3Bp bl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwotCWludGVsX3J1bnRpbWVfcG1f cHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMTc4LDYgKzExODMsNyBAQCBpOTE1X2dlbV9ndHRfcHJl YWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CiAJc3RydWN0IGk5MTVfZ2d0 dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXN0cnVj dCBkcm1fbW1fbm9kZSBub2RlOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXZvaWQgX191c2Vy ICp1c2VyX2RhdGE7CkBAIC0xMTg4LDcgKzExOTQsNyBAQCBpOTE1X2dlbV9ndHRfcHJlYWQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog Ci0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEws IDAsIDAsCiAJCQkJICAgICAgIFBJTl9NQVBQQUJMRSB8CiAJCQkJICAgICAgIFBJTl9OT05GQVVM VCB8CkBAIC0xMjYxLDcgKzEyNjcsNyBAQCBpOTE1X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJaTkxNV92bWFfdW5waW4odm1hKTsKIAl9CiBvdXRfdW5s b2NrOgotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUsIHdha2VyZWYpOwogCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTM2Myw2ICsxMzY5LDcgQEAgaTkxNV9nZW1fZ3R0X3B3cml0 ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCXN0cnVjdCBpOTE1 X2dndHQgKmdndHQgPSAmaTkxNS0+Z2d0dDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlz dHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl1NjQgcmVt YWluLCBvZmZzZXQ7CkBAIC0xMzgxLDEzICsxMzg4LDE0IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVf ZmFzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkgKiBUaGlzIGVhc2lseSBk d2FyZnMgYW55IHBlcmZvcm1hbmNlIGFkdmFudGFnZSBmcm9tCiAJCSAqIHVzaW5nIHRoZSBjYWNo ZSBieXBhc3Mgb2YgaW5kaXJlY3QgR0dUVCBhY2Nlc3MuCiAJCSAqLwotCQlpZiAoIWludGVsX3J1 bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShpOTE1KSkgeworCQl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXRfaWZfaW5fdXNlKGk5MTUpOworCQlpZiAoIXdha2VyZWYpIHsKIAkJCXJldCA9IC1F RkFVTFQ7CiAJCQlnb3RvIG91dF91bmxvY2s7CiAJCX0KIAl9IGVsc2UgewogCQkvKiBObyBiYWNr aW5nIHBhZ2VzLCBubyBmYWxsYmFjaywgd2UgbXVzdCBmb3JjZSBHR1RUIGFjY2VzcyAqLwotCQlp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKwkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOwogCX0KIAogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5V TEwsIDAsIDAsCkBAIC0xNDY5LDcgKzE0NzcsNyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJaTkxNV92bWFfdW5waW4odm1hKTsK IAl9CiBvdXRfcnBtOgotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRp bWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCXJldHVybiByZXQ7CkBAIC0yMDE5LDYgKzIwMjcsNyBA QCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0OwogCWJvb2wgd3JpdGUgPSBhcmVhLT52bV9m bGFncyAmIFZNX1dSSVRFOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwogCXBnb2ZmX3QgcGFnZV9vZmZzZXQ7CiAJaW50IHJldDsKQEAgLTIwNDgsNyAr MjA1Nyw3IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp CiAJaWYgKHJldCkKIAkJZ290byBlcnI7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCXJldCA9 IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7CiAJaWYgKHJldCkKQEAgLTIxMjYs NyArMjEzNSw3IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2 bWYpCiBlcnJfdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogZXJy X3JwbToKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhv YmopOwogZXJyOgogCXN3aXRjaCAocmV0KSB7CkBAIC0yMTk5LDYgKzIyMDgsNyBAQCB2b2lkCiBp OTE1X2dlbV9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7 CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKIAkvKiBTZXJpYWxpc2F0aW9uIGJldHdlZW4g dXNlciBHVFQgYWNjZXNzIGFuZCBvdXIgY29kZSBkZXBlbmRzIHVwb24KIAkgKiByZXZva2luZyB0 aGUgQ1BVJ3MgUFRFIHdoaWxzdCB0aGUgbXV0ZXggaXMgaGVsZC4gVGhlIG5leHQgdXNlcgpAQCAt MjIwOSw3ICsyMjE5LDcgQEAgaTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJICogd2FrZXJlZi4KIAkgKi8KIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK Kwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CiAKIAlpZiAoIW9iai0+dXNl cmZhdWx0X2NvdW50KQogCQlnb3RvIG91dDsKQEAgLTIyMjYsNyArMjIzNiw3IEBAIGk5MTVfZ2Vt X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXdtYigpOwog CiBvdXQ6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJaW50ZWxfcnVudGltZV9wbV9w dXQoaTkxNSwgd2FrZXJlZik7CiB9CiAKIHZvaWQgaTkxNV9nZW1fcnVudGltZV9zdXNwZW5kKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTQ4NjIsOCArNDg3Miw5IEBAIHN0 YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAogCQkJCSAgICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqZnJlZWQpCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9uOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwog Ci0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwogCWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2JqLCBvbiwgZnJlZWQs IGZyZWVkKSB7CiAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqdm47CiAKQEAgLTQ5MjQsNyArNDkz NSw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCQlpZiAob24pCiAJCQljb25kX3Jlc2NoZWQoKTsKIAl9Ci0JaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2Fr ZXJlZik7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2ZsdXNoX2ZyZWVfb2JqZWN0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTUwMjYsMTMgKzUwMzcsMTQgQEAgdm9pZCBf X2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIAogdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIHsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlpbnQgZXJyOwog CiAJR0VNX1RSQUNFKCJcbiIpOwogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoaTkxNSk7CiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkxNSwgRk9S Q0VXQUtFX0FMTCk7CiAKIAkvKgpAQCAtNTA1OSw3ICs1MDcxLDcgQEAgdm9pZCBpOTE1X2dlbV9z YW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJaW50ZWxfZW5naW5lc19z YW5pdGl6ZShpOTE1KTsKIAogCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGk5MTUsIEZPUkNF V0FLRV9BTEwpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVf cG1fcHV0KGk5MTUsIHdha2VyZWYpOwogCiAJaTkxNV9nZW1fY29udGV4dHNfbG9zdChpOTE1KTsK IAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwpAQCAtNTA2NywxMSArNTA3 OSwxMiBAQCB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogCiBpbnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIHsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlpbnQgcmV0OwogCiAJR0VNX1RSQUNF KCJcbiIpOwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCWludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGk5MTUp OwogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC01MTIzLDEyICs1 MTM2LDEyIEBAIGludCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogCWlmIChXQVJOX09OKCFpbnRlbF9lbmdpbmVzX2FyZV9pZGxlKGk5MTUpKSkKIAkJaTkx NV9nZW1fc2V0X3dlZGdlZChpOTE1KTsgLyogbm8gaG9wZSwgZGlzY2FyZCBldmVyeXRoaW5nICov CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChp OTE1LCB3YWtlcmVmKTsKIAlyZXR1cm4gMDsKIAogZXJyX3VubG9jazoKIAltdXRleF91bmxvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwor CWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwogCXJldHVybiByZXQ7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBkNzBkMTQy ZjUzMzguLjBjNzM4NDY1YzQ1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYwpAQCAtMjE5Nyw2ICsyMTk3LDcgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgZWI7CiAJc3Ry dWN0IGRtYV9mZW5jZSAqaW5fZmVuY2UgPSBOVUxMOwogCXN0cnVjdCBzeW5jX2ZpbGUgKm91dF9m ZW5jZSA9IE5VTEw7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJaW50IG91dF9mZW5jZV9m ZCA9IC0xOwogCWludCBlcnI7CiAKQEAgLTIyNjcsNyArMjI2OCw3IEBAIGk5MTVfZ2VtX2RvX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiB3YWtlcmVmIHRoYXQgd2UgaG9s ZCB1bnRpbCB0aGUgR1BVIGhhcyBiZWVuIGlkbGUgZm9yIGF0IGxlYXN0CiAJICogMTAwbXMuCiAJ ICovCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZWIuaTkxNSk7CisJd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KGViLmk5MTUpOwogCiAJZXJyID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVw dGlibGUoZGV2KTsKIAlpZiAoZXJyKQpAQCAtMjQxOSw3ICsyNDIwLDcgQEAgaTkxNV9nZW1fZG9f ZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQllYl9yZWxlYXNlX3ZtYXMoJmVi KTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIGVycl9ycG06Ci0JaW50ZWxf cnVudGltZV9wbV9wdXQoZWIuaTkxNSk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZWIuaTkxNSwg d2FrZXJlZik7CiAJaTkxNV9nZW1fY29udGV4dF9wdXQoZWIuY3R4KTsKIGVycl9kZXN0cm95Ogog CWViX2Rlc3Ryb3koJmViKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlX3JlZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVn LmMKaW5kZXggZDU0OGFjMDVjY2Q3Li4zMzE0OGQxMmRmZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCkBAIC0yMTAsNiArMjEwLDcgQEAgc3RhdGljIHZvaWQg ZmVuY2Vfd3JpdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCiBzdGF0aWMgaW50 IGZlbmNlX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKIAkJCXN0cnVj dCBpOTE1X3ZtYSAqdm1hKQogeworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCWludCByZXQ7 CiAKIAlpZiAodm1hKSB7CkBAIC0yNTcsOSArMjU4LDEwIEBAIHN0YXRpYyBpbnQgZmVuY2VfdXBk YXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAogCSAqIElmIHRoZSBkZXZpY2Ug aXMgY3VycmVudGx5IHBvd2VyZWQgZG93biwgd2Ugd2lsbCBkZWZlciB0aGUgd3JpdGUKIAkgKiB0 byB0aGUgcnVudGltZSByZXN1bWUsIHNlZSBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcygpLgogCSAq LwotCWlmIChpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZmVuY2UtPmk5MTUpKSB7CisJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShmZW5jZS0+aTkxNSk7CisJ aWYgKHdha2VyZWYpIHsKIAkJZmVuY2Vfd3JpdGUoZmVuY2UsIHZtYSk7Ci0JCWludGVsX3J1bnRp bWVfcG1fcHV0KGZlbmNlLT5pOTE1KTsKKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoZmVuY2UtPmk5 MTUsIHdha2VyZWYpOwogCX0KIAogCWlmICh2bWEpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKaW5kZXggZWIwZTQ0NmQ2NDgyLi4wYWM1NTdlMmQ4NTggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCkBAIC0yNzEyLDYgKzI3MTIsNyBAQCBzdGF0aWMgaW50IGdndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSB2bWEtPnZtLT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSB2bWEtPm9iajsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAl1MzIgcHRlX2ZsYWdzOwog CiAJLyogQXBwbGljYWJsZSB0byBWTFYgKGdlbjgrIGRvIG5vdCBzdXBwb3J0IFJPIGluIHRoZSBH R1RUKSAqLwpAQCAtMjcxOSw5ICsyNzIwLDkgQEAgc3RhdGljIGludCBnZ3R0X2JpbmRfdm1hKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLAogCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkob2Jq KSkKIAkJcHRlX2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dl dChpOTE1KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CiAJdm1hLT52 bS0+aW5zZXJ0X2VudHJpZXModm1hLT52bSwgdm1hLCBjYWNoZV9sZXZlbCwgcHRlX2ZsYWdzKTsK LQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1 LCB3YWtlcmVmKTsKIAogCXZtYS0+cGFnZV9zaXplcy5ndHQgPSBJOTE1X0dUVF9QQUdFX1NJWkU7 CiAKQEAgLTI3MzgsMTAgKzI3MzksMTEgQEAgc3RhdGljIGludCBnZ3R0X2JpbmRfdm1hKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAogc3RhdGljIHZvaWQgZ2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdm1hLT52bS0+ aTkxNTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0 KGk5MTUpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAl2bWEtPnZt LT5jbGVhcl9yYW5nZSh2bWEtPnZtLCB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+c2l6ZSk7Ci0JaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2Fr ZXJlZik7CiB9CiAKIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hLApAQCAtMjc3Myw5ICsyNzc1LDExIEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0 X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCX0KIAogCWlmIChmbGFncyAmIEk5MTVf Vk1BX0dMT0JBTF9CSU5EKSB7Ci0JCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCQlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQo aTkxNSk7CiAJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHZtYSwgY2FjaGVfbGV2 ZWwsIHB0ZV9mbGFncyk7Ci0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCQlpbnRlbF9y dW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTI3ODYs OSArMjc5MCwxMSBAQCBzdGF0aWMgdm9pZCBhbGlhc2luZ19ndHRfdW5iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHZtYS0+dm0t Pmk5MTU7CiAKIAlpZiAodm1hLT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSB7Ci0JCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwor CQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CiAJCXZtYS0+dm0tPmNsZWFy X3JhbmdlKHZtYS0+dm0sIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5zaXplKTsKLQkJaW50ZWxfcnVu dGltZV9wbV9wdXQoaTkxNSk7CisJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYp OwogCX0KIAogCWlmICh2bWEtPmZsYWdzICYgSTkxNV9WTUFfTE9DQUxfQklORCkgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKaW5kZXggZWE5MGQzYTBkNTExLi5mMjVl NGM3YzcxYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlu a2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwpAQCAt MTU2LDYgKzE1Niw3IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKIAkJeyAmaTkxNS0+bW0uYm91bmRfbGlzdCwgSTkxNV9TSFJJTktfQk9VTkQgfSwKIAkJ eyBOVUxMLCAwIH0sCiAJfSwgKnBoYXNlOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmID0gMDsK IAl1bnNpZ25lZCBsb25nIGNvdW50ID0gMDsKIAl1bnNpZ25lZCBsb25nIHNjYW5uZWQgPSAwOwog CWJvb2wgdW5sb2NrOwpAQCAtMTg1LDkgKzE4NiwxMSBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJICogZGV2aWNlIGp1c3QgdG8gcmVjb3ZlciBhIGxp dHRsZSBtZW1vcnkuIElmIGFic29sdXRlbHkgbmVjZXNzYXJ5LAogCSAqIHdlIHdpbGwgZm9yY2Ug dGhlIHdha2UgZHVyaW5nIG9vbS1ub3RpZmllci4KIAkgKi8KLQlpZiAoKGZsYWdzICYgSTkxNV9T SFJJTktfQk9VTkQpICYmCi0JICAgICFpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoaTkx NSkpCi0JCWZsYWdzICY9IH5JOTE1X1NIUklOS19CT1VORDsKKwlpZiAoZmxhZ3MgJiBJOTE1X1NI UklOS19CT1VORCkgeworCQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNl KGk5MTUpOworCQlpZiAoIXdha2VyZWYpCisJCQlmbGFncyAmPSB+STkxNV9TSFJJTktfQk9VTkQ7 CisJfQogCiAJLyoKIAkgKiBBcyB3ZSBtYXkgY29tcGxldGVseSByZXdyaXRlIHRoZSAodW4pYm91 bmQgbGlzdCB3aGlsc3QgdW5iaW5kaW5nCkBAIC0yNjgsNyArMjcxLDcgQEAgaTkxNV9nZW1fc2hy aW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCX0KIAogCWlmIChmbGFncyAmIEk5 MTVfU0hSSU5LX0JPVU5EKQotCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwkJaW50ZWxf cnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAKIAlpOTE1X3JldGlyZV9yZXF1ZXN0cyhp OTE1KTsKIApAQCAtMjk1LDE0ICsyOTgsMTUgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogICovCiB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX3Nocmlua19h bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CisJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CiAJdW5zaWduZWQgbG9uZyBmcmVlZDsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5 MTUpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAlmcmVlZCA9IGk5 MTVfZ2VtX3NocmluayhpOTE1LCAtMVVMLCBOVUxMLAogCQkJCUk5MTVfU0hSSU5LX0JPVU5EIHwK IAkJCQlJOTE1X1NIUklOS19VTkJPVU5EIHwKIAkJCQlJOTE1X1NIUklOS19BQ1RJVkUpOwotCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwogCiAJcmV0dXJuIGZyZWVkOwogfQpAQCAtMzczLDE0ICszNzcsMTYgQEAgaTkxNV9n ZW1fc2hyaW5rZXJfc2NhbihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLCBzdHJ1Y3Qgc2hyaW5r X2NvbnRyb2wgKnNjKQogCQkJCQkgSTkxNV9TSFJJTktfQk9VTkQgfAogCQkJCQkgSTkxNV9TSFJJ TktfVU5CT1VORCk7CiAJaWYgKHNjLT5ucl9zY2FubmVkIDwgc2MtPm5yX3RvX3NjYW4gJiYgY3Vy cmVudF9pc19rc3dhcGQoKSkgewotCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKwkJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0 KGk5MTUpOwogCQlmcmVlZCArPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwKIAkJCQkJIHNjLT5ucl90 b19zY2FuIC0gc2MtPm5yX3NjYW5uZWQsCiAJCQkJCSAmc2MtPm5yX3NjYW5uZWQsCiAJCQkJCSBJ OTE1X1NIUklOS19BQ1RJVkUgfAogCQkJCQkgSTkxNV9TSFJJTktfQk9VTkQgfAogCQkJCQkgSTkx NV9TSFJJTktfVU5CT1VORCk7Ci0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCQlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKIAl9CiAKIAlzaHJpbmtlcl91bmxvY2so aTkxNSwgdW5sb2NrKTsKQEAgLTQ2Myw2ICs0NjksNyBAQCBpOTE1X2dlbV9zaHJpbmtlcl92bWFw KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0 cgogCQljb250YWluZXJfb2YobmIsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLCBtbS52bWFwX25v dGlmaWVyKTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7CiAJdW5zaWduZWQgbG9uZyBm cmVlZF9wYWdlcyA9IDA7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJYm9vbCB1bmxvY2s7 CiAJaW50IHJldDsKIApAQCAtNDc2LDEzICs0ODMsMTMgQEAgaTkxNV9nZW1fc2hyaW5rZXJfdm1h cChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpw dHIKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUp OworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAlmcmVlZF9wYWdlcyAr PSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwgTlVMTCwKIAkJCQkgICAgICAgSTkxNV9TSFJJ TktfQk9VTkQgfAogCQkJCSAgICAgICBJOTE1X1NIUklOS19VTkJPVU5EIHwKIAkJCQkgICAgICAg STkxNV9TSFJJTktfQUNUSVZFIHwKIAkJCQkgICAgICAgSTkxNV9TSFJJTktfVk1BUFMpOwotCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwogCiAJLyogV2UgYWxzbyB3YW50IHRvIGNsZWFyIGFueSBjYWNoZWQgaW9tYXBzIGFz IHRoZXkgd3JhcCB2bWFwICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgbmV4dCwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDEwZjI4YTJlZTJlNi4uODNlMTUyODhhZTk2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTMyNzUsNiArMzI3NSw3IEBAIHZvaWQgaTkxNV9o YW5kbGVfZXJyb3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgICAg Y29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXVuc2lnbmVkIGludCB0bXA7CiAJY2hhciBl cnJvcl9tc2dbODBdOwogCWNoYXIgKm1zZyA9IE5VTEw7CkBAIC0zMjk2LDcgKzMyOTcsNyBAQCB2 b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkgKiBpc24ndCB0aGUgY2FzZSBhdCBsZWFzdCB3aGVuIHdlIGdldCBoZXJlIGJ5IGRvaW5nIGEK IAkgKiBzaW11bGF0ZWQgcmVzZXQgdmlhIGRlYnVnZnMsIHNvIGdldCBhbiBSUE0gcmVmZXJlbmNl LgogCSAqLwotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJZW5naW5lX21hc2sgJj0gSU5URUxfSU5G TyhkZXZfcHJpdiktPnJpbmdfbWFzazsKIApAQCAtMzM1OCw3ICszMzU5LDcgQEAgdm9pZCBpOTE1 X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJd2FrZV91 cF9hbGwoJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfcXVldWUpOwogCiBvdXQ6Ci0JaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 LCB3YWtlcmVmKTsKIH0KIAogLyogQ2FsbGVkIGZyb20gZHJtIGdlbmVyaWMgY29kZSwgcGFzc2Vk ICdjcnRjJyB3aGljaApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwppbmRleCAzNGUwMmVhYzZhZmIu LjRiNzBhM2YxOWNkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAgLTEzNjQsMTQgKzEz NjQsMTQgQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtKQogCiAJZnJlZV9vYV9idWZmZXIoZGV2X3ByaXYpOwogCisJcHV0 X29hX2NvbmZpZyhkZXZfcHJpdiwgc3RyZWFtLT5vYV9jb25maWcpOworCiAJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwotCWludGVsX3J1bnRpbWVf cG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgc3RyZWFt LT53YWtlcmVmKTsKIAogCWlmIChzdHJlYW0tPmN0eCkKIAkJb2FfcHV0X3JlbmRlcl9jdHhfaWQo c3RyZWFtKTsKIAotCXB1dF9vYV9jb25maWcoZGV2X3ByaXYsIHN0cmVhbS0+b2FfY29uZmlnKTsK LQogCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5zcHVyaW91c19yZXBvcnRfcnMubWlzc2VkKSB7CiAJ CURSTV9OT1RFKCIlZCBzcHVyaW91cyBPQSByZXBvcnQgbm90aWNlcyBzdXBwcmVzc2VkIGR1ZSB0 byByYXRlbGltaXRpbmdcbiIsCiAJCQkgZGV2X3ByaXYtPnBlcmYub2Euc3B1cmlvdXNfcmVwb3J0 X3JzLm1pc3NlZCk7CkBAIC0yMTc4LDcgKzIxNzgsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3Ry ZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkgKiAgIEluIG91ciBj YXNlIHdlIGFyZSBleHBlY3RpbmcgdGhhdCB0YWtpbmcgcG0gKyBGT1JDRVdBS0UKIAkgKiAgIHJl ZmVyZW5jZXMgd2lsbCBlZmZlY3RpdmVseSBkaXNhYmxlIFJDNi4KIAkgKi8KLQlpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7CisJc3RyZWFtLT53YWtlcmVmID0gaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBG T1JDRVdBS0VfQUxMKTsKIAogCXJldCA9IGFsbG9jX29hX2J1ZmZlcihkZXZfcHJpdik7CkBAIC0y MjE1LDcgKzIyMTUsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlwdXRfb2FfY29uZmlnKGRldl9wcml2LCBzdHJlYW0t Pm9hX2NvbmZpZyk7CiAKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1 bnRpbWVfcG1fcHV0KGRldl9wcml2LCBzdHJlYW0tPndha2VyZWYpOwogCiBlcnJfY29uZmlnOgog CWlmIChzdHJlYW0tPmN0eCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IGQ2YzhmOGZkZmRh NS4uM2Q0M2ZjOWRkMjVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bt dS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTE2Nyw2ICsxNjcs NyBAQCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVu c2lnbmVkIGludCBwZXJpb2RfbnMpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwog CWJvb2wgZncgPSBmYWxzZTsKIAogCWlmICgoZGV2X3ByaXYtPnBtdS5lbmFibGUgJiBFTkdJTkVf U0FNUExFX01BU0spID09IDApCkBAIC0xNzUsNyArMTc2LDggQEAgZW5naW5lc19zYW1wbGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCBpbnQgcGVyaW9kX25zKQog CWlmICghZGV2X3ByaXYtPmd0LmF3YWtlKQogCQlyZXR1cm47CiAKLQlpZiAoIWludGVsX3J1bnRp bWVfcG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdikpCisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdik7CisJaWYgKCF3YWtlcmVmKQogCQlyZXR1cm47CiAK IAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKQEAgLTIxMCw3ICsyMTIs NyBAQCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVu c2lnbmVkIGludCBwZXJpb2RfbnMpCiAJaWYgKGZ3KQogCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogfQog CiBzdGF0aWMgdm9pZApAQCAtMjI3LDExICsyMjksMTUgQEAgZnJlcXVlbmN5X3NhbXBsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGludCBwZXJpb2RfbnMpCiAJ CXUzMiB2YWw7CiAKIAkJdmFsID0gZGV2X3ByaXYtPmd0X3BtLnJwcy5jdXJfZnJlcTsKLQkJaWYg KGRldl9wcml2LT5ndC5hd2FrZSAmJgotCQkgICAgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5f dXNlKGRldl9wcml2KSkgewotCQkJdmFsID0gaW50ZWxfZ2V0X2NhZ2YoZGV2X3ByaXYsCi0JCQkJ CSAgICAgSTkxNV9SRUFEX05PVFJBQ0UoR0VONl9SUFNUQVQxKSk7Ci0JCQlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7CisJCWlmIChkZXZfcHJpdi0+Z3QuYXdha2UpIHsKKwkJCWludGVs X3dha2VyZWZfdCB3YWtlcmVmID0KKwkJCQlpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uo ZGV2X3ByaXYpOworCisJCQlpZiAod2FrZXJlZikgeworCQkJCXZhbCA9IGludGVsX2dldF9jYWdm KGRldl9wcml2LAorCQkJCQkJICAgICBJOTE1X1JFQURfTk9UUkFDRShHRU42X1JQU1RBVDEpKTsK KwkJCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CisJCQl9CiAJCX0K IAogCQlhZGRfc2FtcGxlX211bHQoJmRldl9wcml2LT5wbXUuc2FtcGxlW19fSTkxNV9TQU1QTEVf RlJFUV9BQ1RdLApAQCAtNDQzLDEyICs0NDksMTQgQEAgc3RhdGljIHU2NCBfX2dldF9yYzYoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiBzdGF0aWMgdTY0IGdldF9yYzYoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfUE0pCisJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1NjQgdmFsOwog Ci0JaWYgKGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShpOTE1KSkgeworCXdha2VyZWYg PSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoaTkxNSk7CisJaWYgKHdha2VyZWYpIHsK IAkJdmFsID0gX19nZXRfcmM2KGk5MTUpOwotCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsK KwkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAKIAkJLyoKIAkJICogSWYg d2UgYXJlIGNvbWluZyBiYWNrIGZyb20gYmVpbmcgcnVudGltZSBzdXNwZW5kZWQgd2UgbXVzdApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCmluZGV4IGFlNjNhN2QwZjUxZC4uYTk1OWFlZTIwOGRl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCkBAIC00MiwxMSArNDIsMTIgQEAgc3RhdGlj IGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqa2Rldl9taW5vcl90b19pOTE1KHN0cnVj dCBkZXZpY2UgKmtkZXYpCiBzdGF0aWMgdTMyIGNhbGNfcmVzaWRlbmN5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgaTkxNV9yZWdfdCByZWcpCiB7CisJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7CiAJdTY0IHJlczsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCXJlcyA9 IGludGVsX3JjNl9yZXNpZGVuY3lfdXMoZGV2X3ByaXYsIHJlZyk7Ci0JaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVm KTsKIAogCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVF9VTEwocmVzLCAxMDAwKTsKIH0KQEAgLTI1 OCw5ICsyNTksMTAgQEAgc3RhdGljIHNzaXplX3QgZ3RfYWN0X2ZyZXFfbWh6X3Nob3coc3RydWN0 IGRldmljZSAqa2RldiwKIAkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21p bm9yX3RvX2k5MTUoa2Rldik7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJaW50IHJldDsK IAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpIHsKQEAgLTI3NCw3ICsyNzYsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpf c2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAogCX0KIAltdXRleF91bmxvY2soJmRldl9wcml2LT5w Y3VfbG9jayk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCiAJcmV0dXJuIHNucHJpbnRmKGJ1Ziwg UEFHRV9TSVpFLCAiJWRcbiIsIHJldCk7CiB9CkBAIC0zNTQsNiArMzU2LDcgQEAgc3RhdGljIHNz aXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYp OwogCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3RfcG0ucnBzOworCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwogCXUzMiB2YWw7CiAJc3NpemVfdCByZXQ7CiAKQEAgLTM2MSw3 ICszNjQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJlcV9taHpfc3RvcmUoc3RydWN0IGRl dmljZSAqa2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCkBAIC0zNzEsNyArMzc0 LDcgQEAgc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2Ug KmtkZXYsCiAJICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXEgfHwKIAkgICAgdmFsIDwgcnBzLT5taW5f ZnJlcV9zb2Z0bGltaXQpIHsKIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwot CQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJCWludGVsX3J1bnRpbWVfcG1fcHV0 KGRldl9wcml2LCB3YWtlcmVmKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0zOTIsNyAr Mzk1LDcgQEAgc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZp Y2UgKmtkZXYsCiAKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAKLQlpbnRl bF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYsIHdha2VyZWYpOwogCiAJcmV0dXJuIHJldCA/OiBjb3VudDsKIH0KQEAgLTQxMiw2ICs0MTUs NyBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAq a2RldiwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9y X3RvX2k5MTUoa2Rldik7CiAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9w bS5ycHM7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdTMyIHZhbDsKIAlzc2l6ZV90IHJl dDsKIApAQCAtNDE5LDcgKzQyMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9z dG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlp bnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAK QEAgLTQyOSw3ICs0MzMsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc3RvcmUo c3RydWN0IGRldmljZSAqa2RldiwKIAkgICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAogCSAgICB2 YWwgPiBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkgewogCQltdXRleF91bmxvY2soJmRldl9wcml2 LT5wY3VfbG9jayk7Ci0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkJaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CiAKQEAgLTQ0Niw3ICs0NTAsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc3Rv cmUoc3RydWN0IGRldmljZSAqa2RldiwKIAogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9s b2NrKTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlyZXR1cm4gcmV0ID86IGNvdW50OwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGIyYmFiNTdjZDExMy4uMmRmZTRm MTg4MjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0yMDg4LDYgKzIw ODgsNyBAQCBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CiAJ c3RydWN0IGk5MTVfZ2d0dF92aWV3IHZpZXc7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJ c3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdW5zaWduZWQgaW50IHBpbmN0bDsKIAl1MzIgYWxpZ25t ZW50OwpAQCAtMjExMyw3ICsyMTE0LDcgQEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJICogaW50ZWxfcnVudGltZV9wbV9wdXQoKSwgc28g aXQgaXMgY29ycmVjdCB0byB3cmFwIG9ubHkgdGhlCiAJICogcGluL3VucGluL2ZlbmNlIGFuZCBu b3QgbW9yZS4KIAkgKi8KLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCWF0b21pY19pbmMoJmRldl9w cml2LT5ncHVfZXJyb3IucGVuZGluZ19mYl9waW4pOwogCkBAIC0yMTY4LDcgKzIxNjksNyBAQCBp bnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIGVy cjoKIAlhdG9taWNfZGVjKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnBlbmRpbmdfZmJfcGluKTsKIAot CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdiwgd2FrZXJlZik7CiAJcmV0dXJuIHZtYTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAppbmRleCA2ZDY0Zjc4ZjgyMWQuLjYyMmIyMTA3M2M5MSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KICNpbmNs dWRlIDxsaW51eC9oZG1pLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQvY2xvY2suaD4KKyNpbmNs dWRlIDxsaW51eC9zdGFja2RlcG90Lmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KQEAgLTIwNTQsMTAg KzIwNTUsMTYgQEAgZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiAJYXRvbWljX2RlYygmaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50 KTsKIH0KIAotdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSk7Ci1ib29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSk7Ci12b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVzdW1l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKLXZvaWQgaW50ZWxfcnVudGltZV9wbV9w dXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOworaW50ZWxfd2FrZXJlZl90IGludGVs X3J1bnRpbWVfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKK2ludGVsX3dh a2VyZWZfdCBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOworaW50ZWxfd2FrZXJlZl90IGludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVz dW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKwordm9pZCBpbnRlbF9ydW50aW1l X3BtX3B1dF91bmNoZWNrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOworI2lmIElT X0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCit2b2lkIGludGVsX3J1 bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnRlbF93YWtlcmVm X3Qgd3JlZik7CisjZWxzZQorI2RlZmluZSBpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3cmVm KSBpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSkKKyNlbmRpZgogCiAjaWYgSVNf RU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKIHZvaWQgcHJpbnRfaW50 ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBjOTlmMmNiOWIwZTEuLmYwNjkz MDEzMTkzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTkzNSwx MCArOTM1LDEyIEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCiBzdGF0aWMgYm9vbCByaW5nX2lzX2lkbGUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGVuZ2luZS0+aTkxNTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlib29sIGlkbGUg PSB0cnVlOwogCiAJLyogSWYgdGhlIHdob2xlIGRldmljZSBpcyBhc2xlZXAsIHRoZSBlbmdpbmUg bXVzdCBiZSBpZGxlICovCi0JaWYgKCFpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2 X3ByaXYpKQorCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3By aXYpOworCWlmICghd2FrZXJlZikKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBGaXJzdCBjaGVjayB0 aGF0IG5vIGNvbW1hbmRzIGFyZSBsZWZ0IGluIHRoZSByaW5nICovCkBAIC05NTAsNyArOTUyLDcg QEAgc3RhdGljIGJvb2wgcmluZ19pc19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDIgJiYgIShJOTE1X1JFQURfTU9ERShlbmdp bmUpICYgTU9ERV9JRExFKSkKIAkJaWRsZSA9IGZhbHNlOwogCi0JaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsK IAogCXJldHVybiBpZGxlOwogfQpAQCAtMTQ0Miw2ICsxNDQ0LDcgQEAgdm9pZCBpbnRlbF9lbmdp bmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJY29uc3Qgc3RydWN0IGlu dGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlz dHM7CiAJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICogY29uc3QgZXJyb3IgPSAmZW5naW5lLT5pOTE1 LT5ncHVfZXJyb3I7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpsYXN0OworCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IHJiX25vZGUg KnJiOwogCWludCBjb3VudDsKQEAgLTE1MDAsOSArMTUwMywxMCBAQCB2b2lkIGludGVsX2VuZ2lu ZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCXJjdV9yZWFkX3VubG9j aygpOwogCi0JaWYgKGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShlbmdpbmUtPmk5MTUp KSB7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShlbmdpbmUtPmk5 MTUpOworCWlmICh3YWtlcmVmKSB7CiAJCWludGVsX2VuZ2luZV9wcmludF9yZWdpc3RlcnMoZW5n aW5lLCBtKTsKLQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZW5naW5lLT5pOTE1KTsKKwkJaW50ZWxf cnVudGltZV9wbV9wdXQoZW5naW5lLT5pOTE1LCB3YWtlcmVmKTsKIAl9IGVsc2UgewogCQlkcm1f cHJpbnRmKG0sICJcdERldmljZSBpcyBhc2xlZXA7IHNraXBwaW5nIHJlZ2lzdGVyIGR1bXBcbiIp OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCmluZGV4IGZiMmY5ZmNlMzRjZC4uNTNl YzZkN2U4MGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKQEAgLTE3NSw2ICsxNzUs NyBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxw ZXIsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwog CXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2OwogCXN0cnVjdCBpOTE1 X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 CiAJc3RydWN0IGZiX2luZm8gKmluZm87CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CiAJ c3RydWN0IGk5MTVfdm1hICp2bWE7CkBAIC0yMDcsNyArMjA4LDcgQEAgc3RhdGljIGludCBpbnRl bGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCX0KIAogCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCS8qIFBpbiB0 aGUgR0dUVCB2bWEgZm9yIG91ciBhY2Nlc3MgdmlhIGluZm8tPnNjcmVlbl9iYXNlLgogCSAqIFRo aXMgYWxzbyB2YWxpZGF0ZXMgdGhhdCBhbnkgZXhpc3RpbmcgZmIgaW5oZXJpdGVkIGZyb20gdGhl CkBAIC0yNzUsNyArMjc2LDcgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqaGVscGVyLAogCWlmYmRldi0+dm1hID0gdm1hOwogCWlmYmRldi0+dm1hX2Zs YWdzID0gZmxhZ3M7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwogCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwogCXZnYV9zd2l0Y2hlcm9vX2NsaWVudF9mYl9zZXQocGRldiwgaW5mbyk7 CiAJcmV0dXJuIDA7CkBAIC0yODMsNyArMjg0LDcgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0 ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogb3V0X3VucGluOgogCWludGVsX3VucGlu X2ZiX3ZtYSh2bWEsIGZsYWdzKTsKIG91dF91bmxvY2s6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKIAlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCmluZGV4IGQzZWJkYmMwMTgyZS4uMjBjMGIzNmQ3NDhl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCkBAIC00MzYsNiArNDM2LDcgQEAg c3RhdGljIHZvaWQgZ3VjX2xvZ19jYXB0dXJlX2xvZ3Moc3RydWN0IGludGVsX2d1Y19sb2cgKmxv ZykKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBsb2dfdG9fZ3VjKGxvZyk7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKKwlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKIAogCWd1Y19yZWFkX3VwZGF0ZV9sb2dfYnVmZmVyKGxvZyk7CiAK QEAgLTQ0Myw5ICs0NDQsOSBAQCBzdGF0aWMgdm9pZCBndWNfbG9nX2NhcHR1cmVfbG9ncyhzdHJ1 Y3QgaW50ZWxfZ3VjX2xvZyAqbG9nKQogCSAqIEdlbmVyYWxseSBkZXZpY2UgaXMgZXhwZWN0ZWQg dG8gYmUgYWN0aXZlIG9ubHkgYXQgdGhpcwogCSAqIHRpbWUsIHNvIGdldC9wdXQgc2hvdWxkIGJl IHJlYWxseSBxdWljay4KIAkgKi8KLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAlndWNfYWN0aW9uX2Zs dXNoX2xvZ19jb21wbGV0ZShndWMpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsK KwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiB9CiAKIGludCBpbnRl bF9ndWNfbG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyAqbG9nKQpAQCAtNTA1LDYgKzUw Niw3IEBAIGludCBpbnRlbF9ndWNfbG9nX3NldF9sZXZlbChzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyAq bG9nLCB1MzIgbGV2ZWwpCiB7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gbG9nX3RvX2d1Yyhs b2cpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1 Yyk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJaW50IHJldDsKIAogCUJVSUxEX0JVR19P TihHVUNfTE9HX1ZFUkJPU0lUWV9NSU4gIT0gMCk7CkBAIC01MjQsMTEgKzUyNiwxMSBAQCBpbnQg aW50ZWxfZ3VjX2xvZ19zZXRfbGV2ZWwoc3RydWN0IGludGVsX2d1Y19sb2cgKmxvZywgdTMyIGxl dmVsKQogCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAJcmV0 ID0gZ3VjX2FjdGlvbl9jb250cm9sX2xvZyhndWMsIEdVQ19MT0dfTEVWRUxfSVNfVkVSQk9TRShs ZXZlbCksCiAJCQkJICAgICBHVUNfTE9HX0xFVkVMX0lTX0VOQUJMRUQobGV2ZWwpLAogCQkJCSAg ICAgR1VDX0xPR19MRVZFTF9UT19WRVJCT1NJVFkobGV2ZWwpKTsKLQlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYp OwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigiZ3VjX2xvZ19jb250cm9sIGFjdGlv biBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCWdvdG8gb3V0X3VubG9jazsKQEAgLTYwMSw2ICs2MDMs NyBAQCB2b2lkIGludGVsX2d1Y19sb2dfcmVsYXlfZmx1c2goc3RydWN0IGludGVsX2d1Y19sb2cg KmxvZykKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBsb2dfdG9fZ3VjKGxvZyk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndWNfdG9faTkxNShndWMpOworCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwogCiAJLyoKIAkgKiBCZWZvcmUgaW5pdGlhdGluZyB0aGUgZm9yY2Vm dWwgZmx1c2gsIHdhaXQgZm9yIGFueSBwZW5kaW5nL29uZ29pbmcKQEAgLTYwOCw5ICs2MTEsOSBA QCB2b2lkIGludGVsX2d1Y19sb2dfcmVsYXlfZmx1c2goc3RydWN0IGludGVsX2d1Y19sb2cgKmxv ZykKIAkgKi8KIAlmbHVzaF93b3JrKCZsb2ctPnJlbGF5LmZsdXNoX3dvcmspOwogCi0JaW50ZWxf cnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5 MTUpOwogCWd1Y19hY3Rpb25fZmx1c2hfbG9nKGd1Yyk7Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAKIAkvKiBHdUMg d291bGQgaGF2ZSB1cGRhdGVkIGxvZyBidWZmZXIgYnkgbm93LCBzbyBjYXB0dXJlIGl0ICovCiAJ Z3VjX2xvZ19jYXB0dXJlX2xvZ3MobG9nKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcu YwppbmRleCA2NDhhMTNjNjA0M2MuLmY3NjJlNzliZGU1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hvdHBsdWcuYwpAQCAtMjEwLDkgKzIxMCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9ocGRf aXJxX3N0b3JtX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQljb250 YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksCiAJCQkgICAgIGhvdHBsdWcucmVlbmFi bGVfd29yay53b3JrKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07 CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJZW51bSBocGRfcGluIHBpbjsKIAotCWludGVs X3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwogCiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAlm b3JfZWFjaF9ocGRfcGluKHBpbikgewpAQCAtMjQzLDcgKzI0NCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2hwZF9pcnFfc3Rvcm1fcmVlbmFibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAoZGV2X3ByaXYpOwogCXNwaW5fdW5s b2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiB9CiAK IGJvb2wgaW50ZWxfZW5jb2Rlcl9ob3RwbHVnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwppbmRleCAzN2VmNTQwZGQyODAuLmE2MWM5NDRjMzAz NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKQEAgLTExNCwxNCArMTE0LDE1IEBAIGludCBp bnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCiBpbnQgaW50ZWxfaHVjX2NoZWNr X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gaHVjX3RvX2k5MTUoaHVjKTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKIAl1MzIgc3RhdHVzOwogCiAJaWYgKCFIQVNfSFVDKGRldl9wcml2KSkKIAkJcmV0dXJuIC1F Tk9ERVY7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAlzdGF0dXMgPSBJOTE1X1JFQUQoSFVDX1NU QVRVUzIpICYgSFVDX0ZXX1ZFUklGSUVEOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlyZXR1cm4g c3RhdHVzOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKaW5kZXggNGE5ZjEzOWU3Yjcz Li5lNTdjNDIzMjNiMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bh bmVsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwpAQCAtMTIwMywx NyArMTIwMywxOCBAQCBzdGF0aWMgaW50IGludGVsX2JhY2tsaWdodF9kZXZpY2VfZ2V0X2JyaWdo dG5lc3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQogCXN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvciA9IGJsX2dldF9kYXRhKGJkKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdTMyIGh3X2xl dmVsOwogCWludCByZXQ7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAlkcm1fbW9kZXNldF9sb2Nr KCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIE5VTEwpOwogCiAJaHdfbGV2ZWwg PSBpbnRlbF9wYW5lbF9nZXRfYmFja2xpZ2h0KGNvbm5lY3Rvcik7CiAJcmV0ID0gc2NhbGVfaHdf dG9fdXNlcihjb25uZWN0b3IsIGh3X2xldmVsLCBiZC0+cHJvcHMubWF4X2JyaWdodG5lc3MpOwog CiAJZHJtX21vZGVzZXRfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgp OwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdiwgd2FrZXJlZik7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCmluZGV4IDdkOTQ1NTYxOWRiNi4uOGY1ZDdkZGRlZjQ1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCkBAIC02Miw3ICs2Miw3IEBA IHN0YXRpYyB2b2lkIGluaXRfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCXNwaW5fbG9ja19pbml0KCZpOTE1LT5ydW50aW1lX3BtLmRlYnVn X2xvY2spOwogfQogCi1zdGF0aWMgbm9pbmxpbmUgdm9pZAorc3RhdGljIG5vaW5saW5lIGRlcG90 X3N0YWNrX2hhbmRsZV90CiB0cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJc3RydWN0IGk5MTVfcnVudGltZV9wbSAqcnBtID0g Jmk5MTUtPnJ1bnRpbWVfcG07CkBAIC03Niw3ICs3Niw3IEBAIHRyYWNrX2ludGVsX3J1bnRpbWVf cG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlkZXBvdF9zdGFja19o YW5kbGVfdCBzdGFjaywgKnN0YWNrczsKIAogCWlmICghSEFTX1JVTlRJTUVfUE0oaTkxNSkpCi0J CXJldHVybjsKKwkJcmV0dXJuIC0xOwogCiAJc2F2ZV9zdGFja190cmFjZSgmdHJhY2UpOwogCWlm ICh0cmFjZS5ucl9lbnRyaWVzICYmCkBAIC04NSw3ICs4NSw3IEBAIHRyYWNrX2ludGVsX3J1bnRp bWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCXN0YWNrID0g ZGVwb3Rfc2F2ZV9zdGFjaygmdHJhY2UsIEdGUF9OT1dBSVQgfCBfX0dGUF9OT1dBUk4pOwogCWlm ICghc3RhY2spCi0JCXJldHVybjsKKwkJcmV0dXJuIC0xOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUo JnJwbS0+ZGVidWdfbG9jaywgZmxhZ3MpOwogCXN0YWNrcyA9IGtyZWFsbG9jKHJwbS0+ZGVidWdf b3duZXJzLApAQCAtOTQsOCArOTQsNTUgQEAgdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVm KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWlmIChzdGFja3MpIHsKIAkJc3RhY2tz W3JwbS0+ZGVidWdfY291bnQrK10gPSBzdGFjazsKIAkJcnBtLT5kZWJ1Z19vd25lcnMgPSBzdGFj a3M7CisJfSBlbHNlIHsKKwkJc3RhY2sgPSAtMTsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmcnBtLT5kZWJ1Z19sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gc3RhY2s7Cit9CisKK3N0YXRp YyB2b2lkIGNhbmNlbF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCisJCQkJCSAgICBkZXBvdF9zdGFja19oYW5kbGVfdCBzdGFjaykKK3sKKwlz dHJ1Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9wbTsKKwl1bnNpZ25l ZCBsb25nIGZsYWdzLCBuOworCWJvb2wgZm91bmQgPSBmYWxzZTsKKworCWlmICh1bmxpa2VseShz dGFjayA9PSAtMSkpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZycG0tPmRlYnVn X2xvY2ssIGZsYWdzKTsKKwlmb3IgKG4gPSBycG0tPmRlYnVnX2NvdW50OyBuLS07ICkgeworCQlp ZiAocnBtLT5kZWJ1Z19vd25lcnNbbl0gPT0gc3RhY2spIHsKKwkJCW1lbW1vdmUocnBtLT5kZWJ1 Z19vd25lcnMgKyBuLAorCQkJCXJwbS0+ZGVidWdfb3duZXJzICsgbiArIDEsCisJCQkJKC0tcnBt LT5kZWJ1Z19jb3VudCAtIG4pICogc2l6ZW9mKHN0YWNrKSk7CisJCQlmb3VuZCA9IHRydWU7CisJ CQlicmVhazsKKwkJfQorCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZycG0tPmRlYnVnX2xv Y2ssIGZsYWdzKTsKKworCWlmIChXQVJOKCFmb3VuZCwKKwkJICJVbm1hdGNoZWQgd2FrZXJlZiAo dHJhY2tpbmcgJWx1KVxuIiwKKwkJIHJwbS0+ZGVidWdfY291bnQpKSB7CisJCXVuc2lnbmVkIGxv bmcgZW50cmllc1tTVEFDS0RFUFRIXTsKKwkJc3RydWN0IHN0YWNrX3RyYWNlIHRyYWNlID0gewor CQkJLmVudHJpZXMgPSBlbnRyaWVzLAorCQkJLm1heF9lbnRyaWVzID0gQVJSQVlfU0laRShlbnRy aWVzKSwKKwkJfTsKKwkJY2hhciAqYnVmOworCisJCWJ1ZiA9IGttYWxsb2MoUEFHRV9TSVpFLCBH RlBfS0VSTkVMKTsKKwkJaWYgKCFidWYpCisJCQlyZXR1cm47CisKKwkJZGVwb3RfZmV0Y2hfc3Rh Y2soc3RhY2ssICZ0cmFjZSk7CisJCXNucHJpbnRfc3RhY2tfdHJhY2UoYnVmLCBQQUdFX1NJWkUs ICZ0cmFjZSwgMCk7CisJCURSTV9ERUJVR19EUklWRVIoIndha2VyZWYgJXggZnJvbVxuJXMiLCBz dGFjaywgYnVmKTsKKwkJa2ZyZWUoYnVmKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIHVudHJhY2tf aW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpA QCAtMjIwLDggKzI2NywxMCBAQCBzdGF0aWMgdm9pZCBpbml0X2ludGVsX3J1bnRpbWVfcG1fd2Fr ZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIH0KIAotc3RhdGljIHZvaWQg dHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQorc3RhdGljIGRlcG90X3N0YWNrX2hhbmRsZV90Cit0cmFja19pbnRlbF9ydW50aW1lX3Bt X3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CisJcmV0dXJuIC0xOwog fQogCiBzdGF0aWMgdm9pZCB1bnRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTE3NjQsNyArMTgxMyw3IEBAIGJvb2wgaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKIAogCWlmICghaXNf ZW5hYmxlZCkKLQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCQlpbnRlbF9ydW50 aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwogCiAJcmV0dXJuIGlzX2VuYWJsZWQ7CiB9 CkBAIC0xNzk4LDcgKzE4NDcsNyBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCW11dGV4X3VubG9jaygmcG93ZXJfZG9t YWlucy0+bG9jayk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxf cnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKIH0KIAogI2RlZmluZSBJODMwX1BJ UEVTX1BPV0VSX0RPTUFJTlMgKAkJXApAQCAtMzk3MSw3ICs0MDIwLDcgQEAgdm9pZCBpbnRlbF9w b3dlcl9kb21haW5zX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBi b29sIHJlc3VtZSkKIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAkvKiBLZWVwIHRoZSBwb3dlciB3ZWxsIGVuYWJs ZWQsIGJ1dCBjYW5jZWwgaXRzIHJwbSB3YWtlcmVmLiAqLwotCWludGVsX3J1bnRpbWVfcG1fcHV0 KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwog CiAJLyogUmVtb3ZlIHRoZSByZWZjb3VudCB3ZSB0b29rIHRvIGtlZXAgcG93ZXIgd2VsbCBzdXBw b3J0IGRpc2FibGVkLiAqLwogCWlmICghaTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxs KQpAQCAtNDE5Myw3ICs0MjQyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192 ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICogQW55IHJ1 bnRpbWUgcG0gcmVmZXJlbmNlIG9idGFpbmVkIGJ5IHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIGEg c3ltbWV0cmljCiAgKiBjYWxsIHRvIGludGVsX3J1bnRpbWVfcG1fcHV0KCkgdG8gcmVsZWFzZSB0 aGUgcmVmZXJlbmNlIGFnYWluLgogICovCi12b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoraW50ZWxfd2FrZXJlZl90IGludGVsX3J1bnRpbWVf cG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0cnVjdCBwY2lfZGV2 ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7CiAJc3RydWN0IGRldmljZSAqa2RldiA9ICZwZGV2LT5k ZXY7CkBAIC00MjA1LDcgKzQyNTQsNyBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWF0b21pY19pbmMoJmk5MTUtPnJ1bnRpbWVfcG0u d2FrZXJlZl9jb3VudCk7CiAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwogCi0JdHJh Y2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOworCXJldHVybiB0cmFja19pbnRlbF9y dW50aW1lX3BtX3dha2VyZWYoaTkxNSk7CiB9CiAKIC8qKgpAQCAtNDIyMSw3ICs0MjcwLDcgQEAg dm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK ICAqCiAgKiBSZXR1cm5zOiBUcnVlIGlmIHRoZSB3YWtlcmVmIHdhcyBhY3F1aXJlZCwgb3IgRmFs c2Ugb3RoZXJ3aXNlLgogICovCi1ib29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK2ludGVsX3dha2VyZWZfdCBpbnRlbF9ydW50 aW1lX3BtX2dldF9pZl9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJ aWYgKElTX0VOQUJMRUQoQ09ORklHX1BNKSkgewogCQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5 MTUtPmRybS5wZGV2OwpAQCAtNDIzNCwxNSArNDI4MywxMyBAQCBib29sIGludGVsX3J1bnRpbWVf cG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJICogYXRt IHRvIHRoZSBsYXRlL2Vhcmx5IHN5c3RlbSBzdXNwZW5kL3Jlc3VtZSBoYW5kbGVycy4KIAkJICov CiAJCWlmIChwbV9ydW50aW1lX2dldF9pZl9pbl91c2Uoa2RldikgPD0gMCkKLQkJCXJldHVybiBm YWxzZTsKKwkJCXJldHVybiAwOwogCX0KIAogCWF0b21pY19pbmMoJmk5MTUtPnJ1bnRpbWVfcG0u d2FrZXJlZl9jb3VudCk7CiAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwogCi0JdHJh Y2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwotCi0JcmV0dXJuIHRydWU7CisJcmV0 dXJuIHRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKIH0KIAogLyoqCkBAIC00 MjYyLDcgKzQzMDksNyBAQCBib29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKICAqIEFueSBydW50aW1lIHBtIHJlZmVyZW5jZSBv YnRhaW5lZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHN5bW1ldHJpYwogICogY2FsbCB0 byBpbnRlbF9ydW50aW1lX3BtX3B1dCgpIHRvIHJlbGVhc2UgdGhlIHJlZmVyZW5jZSBhZ2Fpbi4K ICAqLwotdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKK2ludGVsX3dha2VyZWZfdCBpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jl c3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdHJ1Y3QgcGNpX2RldiAq cGRldiA9IGk5MTUtPmRybS5wZGV2OwogCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2 OwpAQCAtNDI3Miw3ICs0MzE5LDcgQEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3Vt ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWF0b21pY19pbmMoJmk5MTUtPnJ1 bnRpbWVfcG0ud2FrZXJlZl9jb3VudCk7CiAKLQl0cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2Vy ZWYoaTkxNSk7CisJcmV0dXJuIHRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsK IH0KIAogLyoqCkBAIC00MjgzLDcgKzQzMzAsNyBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0 X25vcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogICogaW50ZWxfcnVudGlt ZV9wbV9nZXQoKSBhbmQgbWlnaHQgcG93ZXIgZG93biB0aGUgY29ycmVzcG9uZGluZwogICogaGFy ZHdhcmUgYmxvY2sgcmlnaHQgYXdheSBpZiB0aGlzIGlzIHRoZSBsYXN0IHJlZmVyZW5jZS4KICAq Lwotdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7 CiAJc3RydWN0IGRldmljZSAqa2RldiA9ICZwZGV2LT5kZXY7CkBAIC00Mjk2LDYgKzQzNDMsMTQg QEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChrZGV2KTsKIH0KIAorI2lmIElTX0VOQUJM RUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCit2b2lkIGludGVsX3J1bnRpbWVf cG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnRlbF93YWtlcmVmX3Qgd3Jl ZikKK3sKKwljYW5jZWxfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUsIHdyZWYpOworCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKK30KKyNlbmRpZgorCiAvKioKICAq IGludGVsX3J1bnRpbWVfcG1fZW5hYmxlIC0gZW5hYmxlIHJ1bnRpbWUgcG0KICAqIEBpOTE1OiBp OTE1IGRldmljZSBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwppbmRleCAz YWQzMDJjNjYyNTQuLjViODQyMzE4ZWRiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdW5jb3JlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMKQEAgLTE2NzAsNiArMTY3MCw3IEBAIGludCBpOTE1X3JlZ19yZWFkX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwogCXN0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCAqcmVnID0gZGF0YTsKIAlzdHJ1 Y3QgcmVnX3doaXRlbGlzdCBjb25zdCAqZW50cnk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 CiAJdW5zaWduZWQgaW50IGZsYWdzOwogCWludCByZW1haW47CiAJaW50IHJldCA9IDA7CkBAIC0x Njk1LDcgKzE2OTYsNyBAQCBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCiAJZmxhZ3MgPSByZWctPm9mZnNldCAmIChlbnRyeS0+c2l6ZSAtIDEpOwogCi0J aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1l X3BtX2dldChkZXZfcHJpdik7CiAJaWYgKGVudHJ5LT5zaXplID09IDggJiYgZmxhZ3MgPT0gSTkx NV9SRUdfUkVBRF84Ql9XQSkKIAkJcmVnLT52YWwgPSBJOTE1X1JFQUQ2NF8yeDMyKGVudHJ5LT5v ZmZzZXRfbGR3LAogCQkJCQkgICAgZW50cnktPm9mZnNldF91ZHcpOwpAQCAtMTcwOSw3ICsxNzEw LDcgQEAgaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ cmVnLT52YWwgPSBJOTE1X1JFQUQ4KGVudHJ5LT5vZmZzZXRfbGR3KTsKIAllbHNlCiAJCXJldCA9 IC1FSU5WQUw7Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwppbmRleCBlMjcyMTI3NzgzZmUu LjRhYjk4ZGI5NDZjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9w YWdlcy5jCkBAIC0xNzQ5LDYgKzE3NDksNyBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVf c2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl9OwogCXN0cnVj dCBkcm1fZmlsZSAqZmlsZTsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwogCWludCBlcnI7CiAKIAlpZiAoIVVTRVNfUFBHVFQoZGV2X3By aXYpKSB7CkBAIC0xNzY0LDcgKzE3NjUsNyBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVf c2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJcmV0dXJuIFBU Ul9FUlIoZmlsZSk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Ci0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAljdHggPSBsaXZlX2NvbnRleHQoZGV2X3ByaXYsIGZp bGUpOwogCWlmIChJU19FUlIoY3R4KSkgewpAQCAtMTc3OCw3ICsxNzc5LDcgQEAgaW50IGk5MTVf Z2VtX2h1Z2VfcGFnZV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgY3R4KTsKIAogb3V0X3VubG9jazoK LQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYsIHdha2VyZWYpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwogCiAJbW9ja19maWxlX2ZyZWUoZGV2X3ByaXYsIGZpbGUpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYwppbmRleCBkMGFhMTlkMTc2NTMuLjg5NmYwYjM3 YjM0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMKQEAgLTE2 LDkgKzE2LDEwIEBAIHN0YXRpYyBpbnQgc3dpdGNoX3RvX2NvbnRleHQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCWVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCWludCBl cnIgPSAwOwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CkBAIC0zMiw3ICszMyw3IEBAIHN0YXRp YyBpbnQgc3dpdGNoX3RvX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJ CWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCX0KIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUp OworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwogCiAJcmV0dXJuIGVycjsK IH0KQEAgLTY1LDcgKzY2LDkgQEAgc3RhdGljIHZvaWQgdHJhc2hfc3RvbGVuKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQogCiBzdGF0aWMgdm9pZCBzaW11bGF0ZV9oaWJlcm5hdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkx NSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXQoaTkxNSk7CiAKIAkvKgogCSAqIEFzIGEgZmluYWwgc3RpbmcgaW4gdGhlIHRhaWws IGludmFsaWRhdGUgc3RvbGVuLiBVbmRlciBhIHJlYWwgUzQsCkBAIC03Niw3ICs3OSw3IEBAIHN0 YXRpYyB2b2lkIHNpbXVsYXRlX2hpYmVybmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAkgKi8KIAl0cmFzaF9zdG9sZW4oaTkxNSk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChp OTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKIH0KIAogc3RhdGlj IGludCBwbV9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAtOTMsMzkg Kzk2LDQ1IEBAIHN0YXRpYyBpbnQgcG1fcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAogc3RhdGljIHZvaWQgcG1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIHsKLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKwlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKKworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAogCWk5 MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKGk5MTUpOwogCWk5MTVfZ2VtX3N1c3BlbmRfbGF0 ZShpOTE1KTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVf cG1fcHV0KGk5MTUsIHdha2VyZWYpOwogfQogCiBzdGF0aWMgdm9pZCBwbV9oaWJlcm5hdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkx NSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXQoaTkxNSk7CiAKIAlpOTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhpOTE1KTsK IAogCWk5MTVfZ2VtX2ZyZWV6ZShpOTE1KTsKIAlpOTE1X2dlbV9mcmVlemVfbGF0ZShpOTE1KTsK IAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5 MTUsIHdha2VyZWYpOwogfQogCiBzdGF0aWMgdm9pZCBwbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiB7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKIAkvKgogCSAq IEJvdGggc3VzcGVuZCBhbmQgaGliZXJuYXRlIGZvbGxvdyB0aGUgc2FtZSB3YWtldXAgcGF0aCBh bmQgYXNzdW1lCiAJICogdGhhdCBydW50aW1lLXBtIGp1c3Qgd29ya3MuCiAJICovCi0JaW50ZWxf cnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5 MTUpOwogCiAJaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1KTsKIAlpOTE1X2dlbV9zYW5pdGl6 ZShpOTE1KTsKIAlpOTE1X2dlbV9yZXN1bWUoaTkxNSk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKIH0KIAogc3Rh dGljIGludCBpZ3RfZ2VtX3N1c3BlbmQodm9pZCAqYXJnKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggMjQ3MzRkZDkxMzA5Li5j NDNlOTBiNzcyYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2NvbnRleHQuYwpAQCAtNTYzLDYgKzU2Myw4IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9l eGVjKHZvaWQgKmFyZykKIAkJfQogCiAJCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlk KSB7CisJCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwogCQkJaWYgKCFlbmdpbmUtPmNvbnRl eHRfc2l6ZSkKIAkJCQljb250aW51ZTsgLyogTm8gbG9naWNhbCBjb250ZXh0IHN1cHBvcnQgaW4g SFcgKi8KIApAQCAtNTc3LDkgKzU3OSw5IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQg KmFyZykKIAkJCQl9CiAJCQl9CiAKLQkJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCQkJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCQkJZXJyID0gZ3B1X2ZpbGwo b2JqLCBjdHgsIGVuZ2luZSwgZHcpOwotCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJ CQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKIAkJCWlmIChlcnIpIHsKIAkJ CQlwcl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0aCBncHUgKCVz KSBpbiBjdHggJXUgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAogCQkJCSAgICAgICBuZHdv cmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLApAQCAtNjY0LDYgKzY2Niw4IEBAIHN0YXRpYyBpbnQg aWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCiAJCXVuc2lnbmVkIGludCBpZDsKIAogCQlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQkJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CisKIAkJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQogCQkJ CWNvbnRpbnVlOwogCkBAIC02NzgsOSArNjgyLDkgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRv bmx5KHZvaWQgKmFyZykKIAkJCQkJaTkxNV9nZW1fb2JqZWN0X3NldF9yZWFkb25seShvYmopOwog CQkJfQogCi0JCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKwkJCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdp bmUsIGR3KTsKLQkJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCQkJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAJCQlpZiAoZXJyKSB7CiAJCQkJcHJfZXJyKCJGYWls ZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgaW4gY3R4ICV1IFtm dWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKIAkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1heF9k d29yZHMob2JqKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9ldmljdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2V2aWN0LmMKaW5kZXggMTI4YWQxY2YwNjQ3Li5hYzU5YzMzNmQ1NzAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCkBAIC0zMzYsNiArMzM2 LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQogCQlzdHJ1Y3Qg ZHJtX21tX25vZGUgbm9kZTsKIAkJc3RydWN0IHJlc2VydmVkICpuZXh0OwogCX0gKnJlc2VydmVk ID0gTlVMTDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlzdHJ1Y3QgZHJtX21tX25vZGUg aG9sZTsKIAl1bnNpZ25lZCBsb25nIGNvdW50OwogCWludCBlcnI7CkBAIC0zNTUsNyArMzU2LDcg QEAgc3RhdGljIGludCBpZ3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQogCQlyZXR1cm4gMDsK IAogCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAog CS8qIFJlc2VydmUgYSBibG9jayBzbyB0aGF0IHdlIGtub3cgd2UgaGF2ZSBlbm91Z2ggdG8gZml0 IGEgZmV3IHJxICovCiAJbWVtc2V0KCZob2xlLCAwLCBzaXplb2YoaG9sZSkpOwpAQCAtNDAwLDgg KzQwMSwxMCBAQCBzdGF0aWMgaW50IGlndF9ldmljdF9jb250ZXh0cyh2b2lkICphcmcpCiAJCXN0 cnVjdCBkcm1fZmlsZSAqZmlsZTsKIAogCQlmaWxlID0gbW9ja19maWxlKGk5MTUpOwotCQlpZiAo SVNfRVJSKGZpbGUpKQotCQkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisJCWlmIChJU19FUlIoZmls ZSkpIHsKKwkJCWVyciA9IFBUUl9FUlIoZmlsZSk7CisJCQlicmVhazsKKwkJfQogCiAJCWNvdW50 ID0gMDsKIAkJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC00NjQsNyAr NDY3LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQogCX0KIAlp ZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZob2xlKSkKIAkJZHJtX21tX3JlbW92ZV9ub2RlKCZo b2xlKTsKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OwogCiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9ndHQuYwppbmRleCA4ZTJlMjY5ZGI5N2UuLjM4NDE0NTU4ZTE4YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwpAQCAtMjc1LDYgKzI3NSw3 IEBAIHN0YXRpYyBpbnQgbG93bGV2ZWxfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIAogCQlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykgewogCQkJdTY0IGFkZHIgPSBob2xl X3N0YXJ0ICsgb3JkZXJbbl0gKiBCSVRfVUxMKHNpemUpOworCQkJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CiAKIAkJCUdFTV9CVUdfT04oYWRkciArIEJJVF9VTEwoc2l6ZSkgPiB2bS0+dG90YWwp OwogCkBAIC0yOTMsOSArMjk0LDkgQEAgc3RhdGljIGludCBsb3dsZXZlbF9ob2xlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJbW9ja192bWEubm9kZS5zaXplID0gQklUX1VMTChz aXplKTsKIAkJCW1vY2tfdm1hLm5vZGUuc3RhcnQgPSBhZGRyOwogCi0JCQlpbnRlbF9ydW50aW1l X3BtX2dldChpOTE1KTsKKwkJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK IAkJCXZtLT5pbnNlcnRfZW50cmllcyh2bSwgJm1vY2tfdm1hLCBJOTE1X0NBQ0hFX05PTkUsIDAp OwotCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJCQlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKIAkJfQogCQljb3VudCA9IG47CiAKQEAgLTExNDQsNiArMTE0NSw3 IEBAIHN0YXRpYyBpbnQgaWd0X2dndHRfcGFnZSh2b2lkICphcmcpCiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBhcmc7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5n Z3R0OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7CiAJc3RydWN0IGRybV9tbV9ub2RlIHRtcDsKIAl1bnNpZ25lZCBpbnQgKm9yZGVy LCBuOwogCWludCBlcnI7CkBAIC0xMTY5LDcgKzExNzEsNyBAQCBzdGF0aWMgaW50IGlndF9nZ3R0 X3BhZ2Uodm9pZCAqYXJnKQogCWlmIChlcnIpCiAJCWdvdG8gb3V0X3VucGluOwogCi0JaW50ZWxf cnVudGltZV9wbV9nZXQoaTkxNSk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5 MTUpOwogCiAJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKIAkJdTY0IG9mZnNldCA9IHRt cC5zdGFydCArIG4gKiBQQUdFX1NJWkU7CkBAIC0xMjE2LDcgKzEyMTgsNyBAQCBzdGF0aWMgaW50 IGlndF9nZ3R0X3BhZ2Uodm9pZCAqYXJnKQogCWtmcmVlKG9yZGVyKTsKIG91dF9yZW1vdmU6CiAJ Z2d0dC0+dm0uY2xlYXJfcmFuZ2UoJmdndHQtPnZtLCB0bXAuc3RhcnQsIHRtcC5zaXplKTsKLQlp bnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3 YWtlcmVmKTsKIAlkcm1fbW1fcmVtb3ZlX25vZGUoJnRtcCk7CiBvdXRfdW5waW46CiAJaTkxNV9n ZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKaW5kZXggNmQzNTE2ZDViZmY5Li4xM2Q0ZGM1ZThk ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9v YmplY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2Jq ZWN0LmMKQEAgLTMwNyw2ICszMDcsNyBAQCBzdGF0aWMgaW50IGlndF9wYXJ0aWFsX3RpbGluZyh2 b2lkICphcmcpCiAJY29uc3QgdW5zaWduZWQgaW50IG5yZWFsID0gMSA8PCAxMjsgLyogbGFyZ2Vz dCB0aWxlIHJvdyB4MiAqLwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CiAJaW50IHRpbGluZzsKIAlpbnQgZXJyOwogCkBAIC0zMzIsNyArMzMzLDcgQEAgc3RhdGlj IGludCBpZ3RfcGFydGlhbF90aWxpbmcodm9pZCAqYXJnKQogCX0KIAogCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCXdh a2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAogCWlmICgxKSB7CiAJCUlHVF9U SU1FT1VUKGVuZCk7CkBAIC00NDMsNyArNDQ0LDcgQEAgbmV4dF90aWxpbmc6IDsKIAl9CiAKIG91 dF91bmxvY2s6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJaW50ZWxfcnVudGltZV9w bV9wdXQoaTkxNSwgd2FrZXJlZik7CiAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIG91dDoKQEAgLTUwMywx MSArNTA0LDE0IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcmV0aXJlX3dvcmtlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKIAlpZiAoIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cysrKSB7Ci0JCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOworCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCQl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CiAJCWk5MTVfZ2VtX3VucGFyayhpOTE1KTsK LQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5 MTUsIHdha2VyZWYpOwogCX0KIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5yZXRpcmVfd29yayk7CiAJ Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5pZGxlX3dvcmspOwogfQpAQCAtNTc1 LDYgKzU3OSw4IEBAIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAq YXJnKQogCiAJLyogTm93IGZpbGwgd2l0aCBidXN5IGRlYWQgb2JqZWN0cyB0aGF0IHdlIGV4cGVj dCB0byByZWFwICovCiAJZm9yIChsb29wID0gMDsgbG9vcCA8IDM7IGxvb3ArKykgeworCQlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKKwogCQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkx NS0+Z3B1X2Vycm9yKSkKIAkJCWJyZWFrOwogCkBAIC01ODUsOSArNTkxLDkgQEAgc3RhdGljIGlu dCBpZ3RfbW1hcF9vZmZzZXRfZXhoYXVzdGlvbih2b2lkICphcmcpCiAJCX0KIAogCQltdXRleF9s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkx NSk7CisJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAkJZXJyID0gbWFr ZV9vYmpfYnVzeShvYmopOwotCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwkJaW50ZWxf cnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CiAJCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CiAJCWlmIChlcnIpIHsKIAkJCXByX2VycigiW2xvb3AgJWRdIEZhaWxl ZCB0byBidXN5IHRoZSBvYmplY3RcbiIsIGxvb3ApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCmluZGV4IGRiMzc4MjI2YWMxMC4uN2MxMGZk YWNkNDk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf aGFuZ2NoZWNrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hh bmdjaGVjay5jCkBAIC0xNDg4LDYgKzE0ODgsNyBAQCBpbnQgaW50ZWxfaGFuZ2NoZWNrX2xpdmVf c2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlTVUJURVNUKGlndF9y ZXNldF9ldmljdF9mZW5jZSksCiAJCVNVQlRFU1QoaWd0X2hhbmRsZV9lcnJvciksCiAJfTsKKwlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlib29sIHNhdmVkX2hhbmdjaGVjazsKIAlpbnQgZXJy OwogCkBAIC0xNDk3LDcgKzE0OTgsNyBAQCBpbnQgaW50ZWxfaGFuZ2NoZWNrX2xpdmVfc2VsZnRl c3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWlmIChpOTE1X3Rlcm1pbmFsbHlf d2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKQogCQlyZXR1cm4gLUVJTzsgLyogd2UncmUgbG9uZyBw YXN0IGhvcGUgb2YgYSBzdWNjZXNzZnVsIHJlc2V0ICovCiAKLQlpbnRlbF9ydW50aW1lX3BtX2dl dChpOTE1KTsKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CiAJc2F2ZWRf aGFuZ2NoZWNrID0gZmV0Y2hfYW5kX3plcm8oJmk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hl Y2spOwogCiAJZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgaTkxNSk7CkBAIC0xNTA3LDcgKzE1 MDgsNyBAQCBpbnQgaW50ZWxfaGFuZ2NoZWNrX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CiAKIAlpOTE1X21vZHBhcmFtcy5lbmFibGVfaGFuZ2NoZWNrID0gc2F2ZWRfaGFuZ2NoZWNrOwot CWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUs IHdha2VyZWYpOwogCiAJcmV0dXJuIGVycjsKIH0KLS0gCjIuMTkuMC5yYzIKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=