From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI 5/5] drm/i915: Invert the GEM wakeref hierarchy Date: Wed, 24 Apr 2019 21:07:17 +0100 Message-ID: <20190424200717.1686-5-chris@chris-wilson.co.uk> References: <20190424200717.1686-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 019CB89207 for ; Wed, 24 Apr 2019 20:07:21 +0000 (UTC) Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 16349966-1500050 for ; Wed, 24 Apr 2019 21:07:18 +0100 In-Reply-To: <20190424200717.1686-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 SW4gdGhlIGN1cnJlbnQgc2NoZW1lLCBvbiBzdWJtaXR0aW5nIGEgcmVxdWVzdCB3ZSB0YWtlIGEg c2luZ2xlIGdsb2JhbApHRU0gd2FrZXJlZiwgd2hpY2ggdHJpY2tsZXMgZG93biB0byB3YWtlIHVw IGFsbCBHVCBwb3dlciBkb21haW5zLiBUaGlzCmlzIHVuZGVzaXJhYmxlIGFzIHdlIHdvdWxkIGxp a2UgdG8gYmUgYWJsZSB0byBsb2NhbGlzZSBvdXIgcG93ZXIKbWFuYWdlbWVudCB0byB0aGUgYXZh aWxhYmxlIHBvd2VyIGRvbWFpbnMgYW5kIHRvIHJlbW92ZSB0aGUgZ2xvYmFsIEdFTQpvcGVyYXRp b25zIGZyb20gdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIuIChUaGUgaW50ZW50IHRoZXJlIGlzIHRv IHB1c2gKZ2xvYmFsIEdFTSBkZWNpc2lvbnMgdG8gdGhlIGJvdW5kYXJ5IGFzIHVzZWQgYnkgdGhl IEdFTSB1c2VyIGludGVyZmFjZS4pCgpOb3cgZHVyaW5nIHJlcXVlc3QgY29uc3RydWN0aW9uLCBl YWNoIHJlcXVlc3QgaXMgcmVzcG9uc2libGUgdmlhIGl0cwpsb2dpY2FsIGNvbnRleHQgdG8gYWNx dWlyZSBhIHdha2VyZWYgb24gZWFjaCBwb3dlciBkb21haW4gaXQgaW50ZW5kcyB0bwp1dGlsaXpl LiBDdXJyZW50bHksIGVhY2ggcmVxdWVzdCB0YWtlcyBhIHdha2VyZWYgb24gdGhlIGVuZ2luZShz KSBhbmQKdGhlIGVuZ2luZXMgdGhlbXNlbHZlcyB0YWtlIGEgY2hpcHNldCB3YWtlcmVmLiBUaGlz IGdpdmVzIHVzIGEKdHJhbnNpdGlvbiBvbiBlYWNoIGVuZ2luZSB3aGljaCB3ZSBjYW4gZXh0ZW5k IGlmIHdlIHdhbnQgdG8gaW5zZXJ0IG1vcmUKcG93ZXJtYW5nZW1lbnQgY29udHJvbCAoc3VjaCBh cyBzb2Z0IHJjNikuIFRoZSBnbG9iYWwgR0VNIG9wZXJhdGlvbnMKdGhhdCBjdXJyZW50bHkgcmVx dWlyZSBhIHN0cnVjdF9tdXRleCBhcmUgcmVkdWNlZCB0byBsaXN0ZW5pbmcgdG8gcG0KZXZlbnRz IGZyb20gdGhlIGNoaXBzZXQgR1Qgd2FrZXJlZi4gQXMgd2UgcmVkdWNlIHRoZSBzdHJ1Y3RfbXV0 ZXgKcmVxdWlyZW1lbnQsIHRoZXNlIGxpc3RlbmVycyBzaG91bGQgZXZhcG9yYXRlLgoKUGVyaGFw cyB0aGUgYmlnZ2VzdCBpbW1lZGlhdGUgY2hhbmdlIGlzIHRoYXQgdGhpcyByZW1vdmVzIHRoZQpz dHJ1Y3RfbXV0ZXggcmVxdWlyZW1lbnQgYXJvdW5kIEdUIHBvd2VyIG1hbmFnZW1lbnQsIGFsbG93 aW5nIHVzIGdyZWF0ZXIKZmxleGliaWxpdHkgaW4gcmVxdWVzdCBjb25zdHJ1Y3Rpb24uIEFub3Ro ZXIgaW1wb3J0YW50IGtub2NrLW9uIGVmZmVjdCwKaXMgdGhhdCBieSB0cmFja2luZyBlbmdpbmUg dXNhZ2UsIHdlIGNhbiBpbnNlcnQgYSBzd2l0Y2ggYmFjayB0byB0aGUKa2VybmVsIGNvbnRleHQg b24gdGhhdCBlbmdpbmUgaW1tZWRpYXRlbHksIGF2b2lkaW5nIGFueSBleHRyYSBkZWxheSBvcgpp bnNlcnRpbmcgZ2xvYmFsIHN5bmNocm9uaXNhdGlvbiBiYXJyaWVycy4gVGhpcyBtYWtlcyB0cmFj a2luZyB3aGVuIGFuCmVuZ2luZSBhbmQgaXRzIGFzc29jaWF0ZWQgY29udGV4dHMgYXJlIGlkbGUg bXVjaCBlYXNpZXIgLS0gaW1wb3J0YW50IGZvcgp3aGVuIHdlIGZvcmdvIG91ciBhc3N1bWVkIGV4 ZWN1dGlvbiBvcmRlcmluZyBhbmQgbmVlZCBpZGxlIGJhcnJpZXJzIHRvCnVucGluIHVzZWQgY29u dGV4dHMuIEluIHRoZSBwcm9jZXNzLCBpdCBtZWFucyB3ZSByZW1vdmUgYSBsYXJnZSBjaHVuayBv Zgpjb2RlIHdob3NlIG9ubHkgcHVycG9zZSB3YXMgdG8gc3dpdGNoIGJhY2sgdG8gdGhlIGtlcm5l bCBjb250ZXh0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpD YzogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfY29udGV4dC5jICAgICAgIHwgIDE4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmUuaCAgICAgICAgfCAgIDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jICAgICB8IDE0MiArLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYyAgICAgfCAxNTMgKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmggICAgIHwgIDIwICsrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgICAgICAgICB8IDE0MyArKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5oICAgICAgICAgfCAgMjcgKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jICAgICB8ICAgNyArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgICAgICAgICB8IDEwMSArLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5oICAgICAgICAgfCAgIDEgLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgIDEzICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgIHwgIDQ5ICstLS0KIC4uLi9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYyAgICB8ICAgNSArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgIDE2ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDQxICstLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uaCAgICAgICAgICAgICAgIHwgICAzIC0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8ICA4NSArLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jICAgICAgICAgfCAgNDcgKy0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcG0uYyAgICAgICAgICAgIHwgMjY0ICsrKysrKy0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uaCAgICAgICAgICAgIHwgICAzIC0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggICAgICAgICB8ICAgNCAtCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAgMTAgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAgICAgICB8ICAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyAgICAgICAgICAgICAgIHwgIDIyICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jICAgICB8ICAxNiArLQogLi4uL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgMTE0ICstLS0tLS0tCiAu Li4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyAgfCAgMjkgKy0KIC4u Li9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMgICB8ICAzMiArKy0KIC4u Li9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAxNSArLQogMzcg ZmlsZXMgY2hhbmdlZCwgNTk4IGluc2VydGlvbnMoKyksIDgzMCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9w bS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf cG0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 X3BtLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDg1ODY0MmM3YmM0MC4uZGQ4ZDkyM2FhMWM2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNzEsNiArNzEsOCBAQCBndC15ICs9IFwKIAlndC9p bnRlbF9icmVhZGNydW1icy5vIFwKIAlndC9pbnRlbF9jb250ZXh0Lm8gXAogCWd0L2ludGVsX2Vu Z2luZV9jcy5vIFwKKwlndC9pbnRlbF9lbmdpbmVfcG0ubyBcCisJZ3QvaW50ZWxfZ3RfcG0ubyBc CiAJZ3QvaW50ZWxfaGFuZ2NoZWNrLm8gXAogCWd0L2ludGVsX2xyYy5vIFwKIAlndC9pbnRlbF9y ZXNldC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYwppbmRleCA0NDEw ZTIwZThlMTMuLjI5OGU0NjNhZDA4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Nv bnRleHQuYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAiaW50ZWxfY29udGV4dC5oIgog I2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgog CiBzdGF0aWMgc3RydWN0IGk5MTVfZ2xvYmFsX2NvbnRleHQgewogCXN0cnVjdCBpOTE1X2dsb2Jh bCBiYXNlOwpAQCAtMTYyLDcgKzE2MywxMSBAQCBpbnRlbF9jb250ZXh0X3BpbihzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogCQlyZXR1cm4gRVJSX1BUUigtRUlOVFIpOwogCiAJaWYgKGxp a2VseSghYXRvbWljX3JlYWQoJmNlLT5waW5fY291bnQpKSkgewotCQllcnIgPSBjZS0+b3BzLT5w aW4oY2UpOworCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCQllcnIgPSAwOworCQl3aXRo X2ludGVsX3J1bnRpbWVfcG0oY2UtPmVuZ2luZS0+aTkxNSwgd2FrZXJlZikKKwkJCWVyciA9IGNl LT5vcHMtPnBpbihjZSk7CiAJCWlmIChlcnIpCiAJCQlnb3RvIGVycjsKIApAQCAtMjY5LDE3ICsy NzQsMTAgQEAgaW50IF9faW5pdCBpOTE1X2dsb2JhbF9jb250ZXh0X2luaXQodm9pZCkKIAogdm9p ZCBpbnRlbF9jb250ZXh0X2VudGVyX2VuZ2luZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjZS0+Z2VtX2NvbnRleHQtPmk5MTU7 Ci0KLQlpZiAoIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cysrKQotCQlpOTE1X2dlbV91bnBhcmso aTkxNSk7CisJaW50ZWxfZW5naW5lX3BtX2dldChjZS0+ZW5naW5lKTsKIH0KIAogdm9pZCBpbnRl bF9jb250ZXh0X2V4aXRfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGNlLT5nZW1fY29udGV4dC0+aTkxNTsKLQotCUdF TV9CVUdfT04oIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7Ci0JaWYgKCEtLWk5MTUtPmd0LmFj dGl2ZV9yZXF1ZXN0cykKLQkJaTkxNV9nZW1fcGFyayhpOTE1KTsKKwlpbnRlbF9lbmdpbmVfcG1f cHV0KGNlLT5lbmdpbmUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaApp bmRleCA3MmM3YzMzN2FjZTkuLmEyMjhkYzE3NzRkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lLmgKQEAgLTM4Miw2ICszODIsOCBAQCB1NjQgaW50ZWxfZW5naW5lX2dldF9s YXN0X2JhdGNoX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIHZv aWQgaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCiAJCQkgICAgICAgc3RydWN0IGludGVsX2luc3Rkb25lICppbnN0ZG9uZSk7CiAKK3ZvaWQg aW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7CisKIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKIHZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIApAQCAtNDU4LDE5ICs0NjAsMTQgQEAgc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiB7CiAJaWYgKGVuZ2luZS0+cmVzZXQucmVzZXQpCiAJCWVuZ2luZS0+cmVzZXQu cmVzZXQoZW5naW5lLCBzdGFsbGVkKTsKKwllbmdpbmUtPnNlcmlhbCsrOyAvKiBjb250ZXh0cyBs b3N0ICovCiB9CiAKLXZvaWQgaW50ZWxfZW5naW5lc19zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgYm9vbCBmb3JjZSk7Ci12b2lkIGludGVsX2d0X3Jlc3VtZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Ci0KIGJvb2wgaW50ZWxfZW5naW5lX2lzX2lkbGUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiB2b2lkIGludGVsX2VuZ2lu ZV9sb3N0X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAotdm9pZCBp bnRlbF9lbmdpbmVzX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwotdm9pZCBp bnRlbF9lbmdpbmVzX3VucGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Ci0KIHZv aWQgaW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpOwogdW5zaWduZWQgaW50IGludGVsX2VuZ2luZXNfaGFzX2NvbnRleHRf aXNvbGF0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA3OWFjNTY3NDhiOTAuLmNiZWJlODEy YjMxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogCiAjaW5jbHVkZSAiaW50ZWxfZW5n aW5lLmgiCisjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCiAjaW5jbHVkZSAiaW50ZWxfbHJj LmgiCiAjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIKIApAQCAtNDUxLDcgKzQ1Miw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2VuZ2luZV9pbml0X2JhdGNoX3Bvb2woc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdCgmZW5naW5lLT5iYXRjaF9wb29s LCBlbmdpbmUpOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit2b2lkIGludGVsX2VuZ2luZV9pbml0X2V4 ZWNsaXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVs X2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7 CiAKQEAgLTU4NCwxMCArNTg1LDExIEBAIGludCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpOTE1X3RpbWVsaW5lX3NldF9zdWJjbGFz cygmZW5naW5lLT50aW1lbGluZSwgVElNRUxJTkVfRU5HSU5FKTsKIAogCWludGVsX2VuZ2luZV9p bml0X2JyZWFkY3J1bWJzKGVuZ2luZSk7Ci0JaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3QoZW5n aW5lKTsKKwlpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdHMoZW5naW5lKTsKIAlpbnRlbF9lbmdp bmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfaW5pdF9iYXRjaF9wb29s KGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihlbmdpbmUpOworCWludGVs X2VuZ2luZV9pbml0X19wbShlbmdpbmUpOwogCiAJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkg ZGVmYXVsdCAqLwogCWVuZ2luZS0+c3NldSA9CkBAIC03NTgsMzAgKzc2MCw2IEBAIGludCBpbnRl bF9lbmdpbmVfaW5pdF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJl dHVybiByZXQ7CiB9CiAKLXZvaWQgaW50ZWxfZ3RfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKLQotCS8qCi0JICogQWZ0ZXIgcmVzdW1lLCB3ZSBtYXkgbmVlZCB0 byBwb2tlIGludG8gdGhlIHBpbm5lZCBrZXJuZWwKLQkgKiBjb250ZXh0cyB0byBwYXBlciBvdmVy IGFueSBkYW1hZ2UgY2F1c2VkIGJ5IHRoZSBzdWRkZW4gc3VzcGVuZC4KLQkgKiBPbmx5IHRoZSBr ZXJuZWwgY29udGV4dHMgc2hvdWxkIHJlbWFpbiBwaW5uZWQgb3ZlciBzdXNwZW5kLAotCSAqIGFs bG93aW5nIHVzIHRvIGZpeHVwIHRoZSB1c2VyIGNvbnRleHRzIG9uIHRoZWlyIGZpcnN0IHBpbi4K LQkgKi8KLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewotCQlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2U7Ci0KLQkJY2UgPSBlbmdpbmUtPmtlcm5lbF9jb250ZXh0OwotCQlpZiAo Y2UpCi0JCQljZS0+b3BzLT5yZXNldChjZSk7Ci0KLQkJY2UgPSBlbmdpbmUtPnByZWVtcHRfY29u dGV4dDsKLQkJaWYgKGNlKQotCQkJY2UtPm9wcy0+cmVzZXQoY2UpOwotCX0KLX0KLQogLyoqCiAg KiBpbnRlbF9lbmdpbmVzX2NsZWFudXBfY29tbW9uIC0gY2xlYW5zIHVwIHRoZSBlbmdpbmUgc3Rh dGUgY3JlYXRlZCBieQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21t b24gaW5pdGlhaWxpemVycy4KQEAgLTExMjgsMTE3ICsxMTA2LDYgQEAgdm9pZCBpbnRlbF9lbmdp bmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAkJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKGVuZ2luZSk7CiB9CiAKLXN0YXRp YyBib29sIHJlc2V0X2VuZ2luZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0J aWYgKElOVEVMX0lORk8oaTkxNSktPmdwdV9yZXNldF9jbG9iYmVyc19kaXNwbGF5KQotCQlyZXR1 cm4gZmFsc2U7Ci0KLQlyZXR1cm4gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTKSA9 PSAwOwotfQotCi0vKioKLSAqIGludGVsX2VuZ2luZXNfc2FuaXRpemU6IGNhbGxlZCBhZnRlciB0 aGUgR1BVIGhhcyBsb3N0IHBvd2VyCi0gKiBAaTkxNTogdGhlIGk5MTUgZGV2aWNlCi0gKiBAZm9y Y2U6IGlnbm9yZSBhIGZhaWxlZCByZXNldCBhbmQgc2FuaXRpemUgZW5naW5lIHN0YXRlIGFueXdh eQotICoKLSAqIEFueXRpbWUgd2UgcmVzZXQgdGhlIEdQVSwgZWl0aGVyIHdpdGggYW4gZXhwbGlj aXQgR1BVIHJlc2V0IG9yIHRocm91Z2ggYQotICogUENJIHBvd2VyIGN5Y2xlLCB0aGUgR1BVIGxv c2VzIHN0YXRlIGFuZCB3ZSBtdXN0IHJlc2V0IG91ciBzdGF0ZSB0cmFja2luZwotICogdG8gbWF0 Y2guIE5vdGUgdGhhdCBjYWxsaW5nIGludGVsX2VuZ2luZXNfc2FuaXRpemUoKSBpZiB0aGUgR1BV IGhhcyBub3QKLSAqIGJlZW4gcmVzZXQgcmVzdWx0cyBpbiBtdWNoIGNvbmZ1c2lvbiEKLSAqLwot dm9pZCBpbnRlbF9lbmdpbmVzX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBib29sIGZvcmNlKQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKLQotCUdFTV9UUkFDRSgiXG4iKTsKLQotCWlmICghcmVzZXRf ZW5naW5lcyhpOTE1KSAmJiAhZm9yY2UpCi0JCXJldHVybjsKLQotCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIGlkKQotCQlpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBmYWxzZSk7Ci19 Ci0KLS8qKgotICogaW50ZWxfZW5naW5lc19wYXJrOiBjYWxsZWQgd2hlbiB0aGUgR1QgaXMgdHJh bnNpdGlvbmluZyBmcm9tIGJ1c3ktPmlkbGUKLSAqIEBpOTE1OiB0aGUgaTkxNSBkZXZpY2UKLSAq Ci0gKiBUaGUgR1QgaXMgbm93IGlkbGUgYW5kIGFib3V0IHRvIGdvIHRvIHNsZWVwIChtYXliZSBu ZXZlciB0byB3YWtlIGFnYWluPykuCi0gKiBUaW1lIGZvciB1cyB0byB0aWR5IGFuZCBwdXQgYXdh eSBvdXIgdG95cyAocmVsZWFzZSByZXNvdXJjZXMgYmFjayB0byB0aGUKLSAqIHN5c3RlbSkuCi0g Ki8KLXZvaWQgaW50ZWxfZW5naW5lc19wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2lu ZV9pZCBpZDsKLQotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Ci0JCS8qIEZs dXNoIHRoZSByZXNpZHVhbCBpcnEgdGFza2xldHMgZmlyc3QuICovCi0JCWludGVsX2VuZ2luZV9k aXNhcm1fYnJlYWRjcnVtYnMoZW5naW5lKTsKLQkJdGFza2xldF9raWxsKCZlbmdpbmUtPmV4ZWNs aXN0cy50YXNrbGV0KTsKLQotCQkvKgotCQkgKiBXZSBhcmUgY29tbWl0dGVkIG5vdyB0byBwYXJr aW5nIHRoZSBlbmdpbmVzLCBtYWtlIHN1cmUgdGhlcmUKLQkJICogd2lsbCBiZSBubyBtb3JlIGlu dGVycnVwdHMgYXJyaXZpbmcgbGF0ZXIgYW5kIHRoZSBlbmdpbmVzCi0JCSAqIGFyZSB0cnVseSBp ZGxlLgotCQkgKi8KLQkJaWYgKHdhaXRfZm9yKGludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSks IDEwKSkgewotCQkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fZGVidWdfcHJpbnRlcihfX2Z1 bmNfXyk7Ci0KLQkJCWRldl9lcnIoaTkxNS0+ZHJtLmRldiwKLQkJCQkiJXMgaXMgbm90IGlkbGUg YmVmb3JlIHBhcmtpbmdcbiIsCi0JCQkJZW5naW5lLT5uYW1lKTsKLQkJCWludGVsX2VuZ2luZV9k dW1wKGVuZ2luZSwgJnAsIE5VTEwpOwotCQl9Ci0KLQkJLyogTXVzdCBiZSByZXNldCB1cG9uIGlk bGluZywgb3Igd2UgbWF5IG1pc3MgdGhlIGJ1c3kgd2FrZXVwLiAqLwotCQlHRU1fQlVHX09OKGVu Z2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQgIT0gSU5UX01JTik7Ci0KLQkJaWYg KGVuZ2luZS0+cGFyaykKLQkJCWVuZ2luZS0+cGFyayhlbmdpbmUpOwotCi0JCWlmIChlbmdpbmUt PnBpbm5lZF9kZWZhdWx0X3N0YXRlKSB7Ci0JCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGVu Z2luZS0+ZGVmYXVsdF9zdGF0ZSk7Ci0JCQllbmdpbmUtPnBpbm5lZF9kZWZhdWx0X3N0YXRlID0g TlVMTDsKLQkJfQotCi0JCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgmZW5naW5lLT5iYXRjaF9w b29sKTsKLQkJZW5naW5lLT5leGVjbGlzdHMubm9fcHJpb2xpc3QgPSBmYWxzZTsKLQl9Ci0KLQlp OTE1LT5ndC5hY3RpdmVfZW5naW5lcyA9IDA7Ci19Ci0KLS8qKgotICogaW50ZWxfZW5naW5lc191 bnBhcms6IGNhbGxlZCB3aGVuIHRoZSBHVCBpcyB0cmFuc2l0aW9uaW5nIGZyb20gaWRsZS0+YnVz eQotICogQGk5MTU6IHRoZSBpOTE1IGRldmljZQotICoKLSAqIFRoZSBHVCB3YXMgaWRsZSBhbmQg bm93IGFib3V0IHRvIGZpcmUgdXAgd2l0aCBzb21lIG5ldyB1c2VyIHJlcXVlc3RzLgotICovCi12 b2lkIGludGVsX2VuZ2luZXNfdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQot ewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKLQotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Ci0JCXZvaWQgKm1h cDsKLQotCQkvKiBQaW4gdGhlIGRlZmF1bHQgc3RhdGUgZm9yIGZhc3QgcmVzZXRzIGZyb20gYXRv bWljIGNvbnRleHQuICovCi0JCW1hcCA9IE5VTEw7Ci0JCWlmIChlbmdpbmUtPmRlZmF1bHRfc3Rh dGUpCi0JCQltYXAgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChlbmdpbmUtPmRlZmF1bHRfc3Rh dGUsCi0JCQkJCQkgICAgICBJOTE1X01BUF9XQik7Ci0JCWlmICghSVNfRVJSX09SX05VTEwobWFw KSkKLQkJCWVuZ2luZS0+cGlubmVkX2RlZmF1bHRfc3RhdGUgPSBtYXA7Ci0KLQkJaWYgKGVuZ2lu ZS0+dW5wYXJrKQotCQkJZW5naW5lLT51bnBhcmsoZW5naW5lKTsKLQotCQlpbnRlbF9lbmdpbmVf aW5pdF9oYW5nY2hlY2soZW5naW5lKTsKLQl9Ci19Ci0KIC8qKgogICogaW50ZWxfZW5naW5lX2xv c3RfY29udGV4dDogY2FsbGVkIHdoZW4gdGhlIEdQVSBpcyByZXNldCBpbnRvIHVua25vd24gc3Rh dGUKICAqIEBlbmdpbmU6IHRoZSBlbmdpbmUKQEAgLTE1MjMsNiArMTM5MCw3IEBAIHZvaWQgaW50 ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWlmIChpOTE1 X3Jlc2V0X2ZhaWxlZChlbmdpbmUtPmk5MTUpKQogCQlkcm1fcHJpbnRmKG0sICIqKiogV0VER0VE ICoqKlxuIik7CiAKKwlkcm1fcHJpbnRmKG0sICJcdEF3YWtlPyAlZFxuIiwgYXRvbWljX3JlYWQo JmVuZ2luZS0+d2FrZXJlZi5jb3VudCkpOwogCWRybV9wcmludGYobSwgIlx0SGFuZ2NoZWNrICV4 OiV4IFslZCBtc11cbiIsCiAJCSAgIGVuZ2luZS0+aGFuZ2NoZWNrLmxhc3Rfc2Vxbm8sCiAJCSAg IGVuZ2luZS0+aGFuZ2NoZWNrLm5leHRfc2Vxbm8sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9wbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u Y2MwYWRmYTE0OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3BtLmMKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRp b24KKyAqLworCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKworI2luY2x1ZGUgImludGVsX2VuZ2lu ZS5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgorI2luY2x1ZGUgImludGVsX2d0X3Bt LmgiCisKK3N0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJl ZiAqd2YpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVy X29mKHdmLCB0eXBlb2YoKmVuZ2luZSksIHdha2VyZWYpOworCXZvaWQgKm1hcDsKKworCUdFTV9U UkFDRSgiJXNcbiIsIGVuZ2luZS0+bmFtZSk7CisKKwlpbnRlbF9ndF9wbV9nZXQoZW5naW5lLT5p OTE1KTsKKworCS8qIFBpbiB0aGUgZGVmYXVsdCBzdGF0ZSBmb3IgZmFzdCByZXNldHMgZnJvbSBh dG9taWMgY29udGV4dC4gKi8KKwltYXAgPSBOVUxMOworCWlmIChlbmdpbmUtPmRlZmF1bHRfc3Rh dGUpCisJCW1hcCA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0 ZSwKKwkJCQkJICAgICAgSTkxNV9NQVBfV0IpOworCWlmICghSVNfRVJSX09SX05VTEwobWFwKSkK KwkJZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSA9IG1hcDsKKworCWlmIChlbmdpbmUtPnVu cGFyaykKKwkJZW5naW5lLT51bnBhcmsoZW5naW5lKTsKKworCWludGVsX2VuZ2luZV9pbml0X2hh bmdjaGVjayhlbmdpbmUpOworCXJldHVybiAwOworfQorCit2b2lkIGludGVsX2VuZ2luZV9wbV9n ZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWludGVsX3dha2VyZWZfZ2V0 KGVuZ2luZS0+aTkxNSwgJmVuZ2luZS0+d2FrZXJlZiwgaW50ZWxfZW5naW5lX3VucGFyayk7Cit9 CisKK3N0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisKKwkvKiBBbHJl YWR5IGluc2lkZSB0aGUga2VybmVsIGNvbnRleHQsIHNhZmUgdG8gcG93ZXIgZG93bi4gKi8KKwlp ZiAoZW5naW5lLT53YWtlcmVmX3NlcmlhbCA9PSBlbmdpbmUtPnNlcmlhbCkKKwkJcmV0dXJuIHRy dWU7CisKKwkvKiBHUFUgaXMgcG9pbnRpbmcgdG8gdGhlIHZvaWQsIGFzIGdvb2QgYXMgaW4gdGhl IGtlcm5lbCBjb250ZXh0LiAqLworCWlmIChpOTE1X3Jlc2V0X2ZhaWxlZChlbmdpbmUtPmk5MTUp KQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogTm90ZSwgd2UgZG8gdGhpcyB3aXRob3V0IHRh a2luZyB0aGUgdGltZWxpbmUtPm11dGV4LiBXZSBjYW5ub3QKKwkgKiBhcyB3ZSBtYXkgYmUgY2Fs bGVkIHdoaWxlIHJldGlyaW5nIHRoZSBrZXJuZWwgY29udGV4dCBhbmQgc28KKwkgKiBhbHJlYWR5 IHVuZGVybmVhdGggdGhlIHRpbWVsaW5lLT5tdXRleC4gSW5zdGVhZCB3ZSByZWx5IG9uIHRoZQor CSAqIGV4Y2x1c2l2ZSBwcm9wZXJ0eSBvZiB0aGUgaW50ZWxfZW5naW5lX3BhcmsgdGhhdCBwcmV2 ZW50cyBhbnlvbmUKKwkgKiBlbHNlIGZyb20gY3JlYXRpbmcgYSByZXF1ZXN0IG9uIHRoaXMgZW5n aW5lLiBUaGlzIGFsc28gcmVxdWlyZXMKKwkgKiB0aGF0IHRoZSByaW5nIGlzIGVtcHR5IGFuZCB3 ZSBhdm9pZCBhbnkgd2FpdHMgd2hpbGUgY29uc3RydWN0aW5nCisJICogdGhlIGNvbnRleHQsIGFz IHRoZXkgYXNzdW1lIHByb3RlY3Rpb24gYnkgdGhlIHRpbWVsaW5lLT5tdXRleC4KKwkgKiBUaGlz IHNob3VsZCBob2xkIHRydWUgYXMgd2UgY2FuIG9ubHkgcGFyayB0aGUgZW5naW5lIGFmdGVyCisJ ICogcmV0aXJpbmcgdGhlIGxhc3QgcmVxdWVzdCwgdGh1cyBhbGwgcmluZ3Mgc2hvdWxkIGJlIGVt cHR5IGFuZAorCSAqIGFsbCB0aW1lbGluZXMgaWRsZS4KKwkgKi8KKwlycSA9IF9faTkxNV9yZXF1 ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0LCBHRlBfTk9XQUlUKTsKKwlpZiAoSVNf RVJSKHJxKSkKKwkJLyogQ29udGV4dCBzd2l0Y2ggZmFpbGVkLCBob3BlIGZvciB0aGUgYmVzdCEg TWF5YmUgcmVzZXQ/ICovCisJCXJldHVybiB0cnVlOworCisJLyogQ2hlY2sgYWdhaW4gb24gdGhl IG5leHQgcmV0aXJlbWVudC4gKi8KKwllbmdpbmUtPndha2VyZWZfc2VyaWFsID0gZW5naW5lLT5z ZXJpYWwgKyAxOworCV9faTkxNV9yZXF1ZXN0X2NvbW1pdChycSk7CisKKwlyZXR1cm4gZmFsc2U7 Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYg KndmKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9CisJCWNvbnRhaW5lcl9v Zih3ZiwgdHlwZW9mKCplbmdpbmUpLCB3YWtlcmVmKTsKKworCS8qCisJICogSWYgb25lIGFuZCBv bmx5IG9uZSByZXF1ZXN0IGlzIGNvbXBsZXRlZCBiZXR3ZWVuIHBtIGV2ZW50cywKKwkgKiB3ZSBr bm93IHRoYXQgd2UgYXJlIGluc2lkZSB0aGUga2VybmVsIGNvbnRleHQgYW5kIGl0IGlzCisJICog c2FmZSB0byBwb3dlciBkb3duLiAoV2UgYXJlIHBhcmFub2lkIGluIGNhc2UgdGhhdCBydW50aW1l CisJICogc3VzcGVuZCBjYXVzZXMgY29ycnVwdGlvbiB0byB0aGUgYWN0aXZlIGNvbnRleHQgaW1h Z2UsIGFuZAorCSAqIHdhbnQgdG8gYXZvaWQgdGhhdCBpbXBhY3RpbmcgdXNlcnNwYWNlLikKKwkg Ki8KKwlpZiAoIXN3aXRjaF90b19rZXJuZWxfY29udGV4dChlbmdpbmUpKQorCQlyZXR1cm4gLUVC VVNZOworCisJR0VNX1RSQUNFKCIlc1xuIiwgZW5naW5lLT5uYW1lKTsKKworCWludGVsX2VuZ2lu ZV9kaXNhcm1fYnJlYWRjcnVtYnMoZW5naW5lKTsKKworCS8qIE11c3QgYmUgcmVzZXQgdXBvbiBp ZGxpbmcsIG9yIHdlIG1heSBtaXNzIHRoZSBidXN5IHdha2V1cC4gKi8KKwlHRU1fQlVHX09OKGVu Z2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQgIT0gSU5UX01JTik7CisKKwlpZiAo ZW5naW5lLT5wYXJrKQorCQllbmdpbmUtPnBhcmsoZW5naW5lKTsKKworCWlmIChlbmdpbmUtPnBp bm5lZF9kZWZhdWx0X3N0YXRlKSB7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZW5naW5l LT5kZWZhdWx0X3N0YXRlKTsKKwkJZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSA9IE5VTEw7 CisJfQorCisJZW5naW5lLT5leGVjbGlzdHMubm9fcHJpb2xpc3QgPSBmYWxzZTsKKworCWludGVs X2d0X3BtX3B1dChlbmdpbmUtPmk5MTUpOworCXJldHVybiAwOworfQorCit2b2lkIGludGVsX2Vu Z2luZV9wbV9wdXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWludGVsX3dh a2VyZWZfcHV0KGVuZ2luZS0+aTkxNSwgJmVuZ2luZS0+d2FrZXJlZiwgaW50ZWxfZW5naW5lX3Bh cmspOworfQorCit2b2lkIGludGVsX2VuZ2luZV9pbml0X19wbShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit7CisJaW50ZWxfd2FrZXJlZl9pbml0KCZlbmdpbmUtPndha2VyZWYpOwor fQorCitpbnQgaW50ZWxfZW5naW5lc19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOworCWludCBlcnIgPSAwOworCisJLyoKKwkgKiBBZnRlciByZXN1bWUsIHdlIG1h eSBuZWVkIHRvIHBva2UgaW50byB0aGUgcGlubmVkIGtlcm5lbAorCSAqIGNvbnRleHRzIHRvIHBh cGVyIG92ZXIgYW55IGRhbWFnZSBjYXVzZWQgYnkgdGhlIHN1ZGRlbiBzdXNwZW5kLgorCSAqIE9u bHkgdGhlIGtlcm5lbCBjb250ZXh0cyBzaG91bGQgcmVtYWluIHBpbm5lZCBvdmVyIHN1c3BlbmQs CisJICogYWxsb3dpbmcgdXMgdG8gZml4dXAgdGhlIHVzZXIgY29udGV4dHMgb24gdGhlaXIgZmly c3QgcGluLgorCSAqLworCWludGVsX2d0X3BtX2dldChpOTE1KTsKKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgeworCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7CisJCWVu Z2luZS0+c2VyaWFsKys7IC8qIGtlcm5lbCBjb250ZXh0IGxvc3QgKi8KKwkJZXJyID0gZW5naW5l LT5yZXN1bWUoZW5naW5lKTsKKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOworCQlpZiAo ZXJyKSB7CisJCQlkZXZfZXJyKGk5MTUtPmRybS5kZXYsCisJCQkJIkZhaWxlZCB0byByZXN0YXJ0 ICVzICglZClcbiIsCisJCQkJZW5naW5lLT5uYW1lLCBlcnIpOworCQkJYnJlYWs7CisJCX0KKwl9 CisJaW50ZWxfZ3RfcG1fcHV0KGk5MTUpOworCisJcmV0dXJuIGVycjsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4xNDNhYzkwYmExMTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaApAQCAtMCwwICsxLDIwIEBACisvKgorICog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBJTlRFTF9FTkdJTkVfUE1fSAorI2RlZmlu ZSBJTlRFTF9FTkdJTkVfUE1fSAorCitzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKK3N0cnVjdCBp bnRlbF9lbmdpbmVfY3M7CisKK3ZvaWQgaW50ZWxfZW5naW5lX3BtX2dldChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBpbnRlbF9lbmdpbmVfcG1fcHV0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRfX3BtKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKK2ludCBpbnRlbF9lbmdpbmVzX3Jlc3VtZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKKyNlbmRpZiAvKiBJTlRFTF9FTkdJTkVf UE1fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaApp bmRleCAzYWRmNThkYTZkMmMuLmQ5NzJjMzM5MzA5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJp OTE1X3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAiaTkxNV90aW1lbGluZV90eXBlcy5oIgogI2luY2x1 ZGUgImludGVsX3NzZXUuaCIKKyNpbmNsdWRlICJpbnRlbF93YWtlcmVmLmgiCiAjaW5jbHVkZSAi aW50ZWxfd29ya2Fyb3VuZHNfdHlwZXMuaCIKIAogI2RlZmluZSBJOTE1X01BWF9TTElDRVMJMwpA QCAtMjg3LDYgKzI4OCwxMCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqa2VybmVsX2NvbnRleHQ7IC8qIHBpbm5lZCAqLwogCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpwcmVlbXB0X2NvbnRleHQ7IC8qIHBpbm5lZDsgb3B0aW9uYWwgKi8KIAorCXVuc2ln bmVkIGxvbmcgc2VyaWFsOworCisJdW5zaWduZWQgbG9uZyB3YWtlcmVmX3NlcmlhbDsKKwlzdHJ1 Y3QgaW50ZWxfd2FrZXJlZiB3YWtlcmVmOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpk ZWZhdWx0X3N0YXRlOwogCXZvaWQgKnBpbm5lZF9kZWZhdWx0X3N0YXRlOwogCkBAIC0zNTksNyAr MzY0LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJdm9pZAkJKCppcnFfZW5hYmxlKShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCXZvaWQJCSgqaXJxX2Rpc2FibGUpKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKLQlpbnQJCSgqaW5pdF9odykoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKwlpbnQJCSgqcmVzdW1lKShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwogCiAJc3RydWN0IHsKIAkJdm9pZCAoKnByZXBhcmUpKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf cG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlNzE1NWYwZTA2 MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3Bt LmMKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlU CisgKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5j bHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9ndF9wbS5oIgorI2luY2x1ZGUgImlu dGVsX3BtLmgiCisjaW5jbHVkZSAiaW50ZWxfd2FrZXJlZi5oIgorCitzdGF0aWMgdm9pZCBwbV9u b3RpZnkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBzdGF0ZSkKK3sKKwlibG9j a2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZpOTE1LT5ndC5wbV9ub3RpZmljYXRpb25zLCBzdGF0 ZSwgaTkxNSk7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfZ3RfdW5wYXJrKHN0cnVjdCBpbnRlbF93 YWtlcmVmICp3ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRh aW5lcl9vZih3ZiwgdHlwZW9mKCppOTE1KSwgZ3Qud2FrZXJlZik7CisKKwlHRU1fVFJBQ0UoIlxu Iik7CisKKwkvKgorCSAqIEl0IHNlZW1zIHRoYXQgdGhlIERNQyBsaWtlcyB0byB0cmFuc2l0aW9u IGJldHdlZW4gdGhlIERDIHN0YXRlcyBhIGxvdAorCSAqIHdoZW4gdGhlcmUgYXJlIG5vIGNvbm5l Y3RlZCBkaXNwbGF5cyAobm8gYWN0aXZlIHBvd2VyIGRvbWFpbnMpIGR1cmluZworCSAqIGNvbW1h bmQgc3VibWlzc2lvbi4KKwkgKgorCSAqIFRoaXMgYWN0aXZpdHkgaGFzIG5lZ2F0aXZlIGltcGFj dCBvbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGNoaXAgd2l0aAorCSAqIGh1Z2UgbGF0ZW5jaWVz IG9ic2VydmVkIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhbmQgZWxzZXdoZXJlLgorCSAqCisJ ICogV29yayBhcm91bmQgaXQgYnkgZ3JhYmJpbmcgYSBHVCBJUlEgcG93ZXIgZG9tYWluIHdoaWxz dCB0aGVyZSBpcyBhbnkKKwkgKiBHVCBhY3Rpdml0eSwgcHJldmVudGluZyBhbnkgREMgc3RhdGUg dHJhbnNpdGlvbnMuCisJICovCisJaTkxNS0+Z3QuYXdha2UgPSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldChpOTE1LCBQT1dFUl9ET01BSU5fR1RfSVJRKTsKKwlHRU1fQlVHX09OKCFpOTE1LT5ndC5h d2FrZSk7CisKKwlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGk5MTUpOworCisJaTkxNV91cGRh dGVfZ2Z4X3ZhbChpOTE1KTsKKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJCWdlbjZfcnBz X2J1c3koaTkxNSk7CisKKwlpOTE1X3BtdV9ndF91bnBhcmtlZChpOTE1KTsKKworCWk5MTVfcXVl dWVfaGFuZ2NoZWNrKGk5MTUpOworCisJcG1fbm90aWZ5KGk5MTUsIElOVEVMX0dUX1VOUEFSSyk7 CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpbnRlbF9ndF9wbV9nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCit7CisJaW50ZWxfd2FrZXJlZl9nZXQoaTkxNSwgJmk5MTUtPmd0Lndh a2VyZWYsIGludGVsX2d0X3VucGFyayk7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfZ3RfcGFyayhz dHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPQorCQljb250YWluZXJfb2Yod2YsIHR5cGVvZigqaTkxNSksIGd0Lndha2VyZWYpOworCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmID0gZmV0Y2hfYW5kX3plcm8oJmk5MTUtPmd0LmF3YWtlKTsK KworCUdFTV9UUkFDRSgiXG4iKTsKKworCXBtX25vdGlmeShpOTE1LCBJTlRFTF9HVF9QQVJLKTsK KworCWk5MTVfcG11X2d0X3BhcmtlZChpOTE1KTsKKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYp CisJCWdlbjZfcnBzX2lkbGUoaTkxNSk7CisKKwlHRU1fQlVHX09OKCF3YWtlcmVmKTsKKwlpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dChpOTE1LCBQT1dFUl9ET01BSU5fR1RfSVJRLCB3YWtlcmVmKTsK KworCXJldHVybiAwOworfQorCit2b2lkIGludGVsX2d0X3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKK3sKKwlpbnRlbF93YWtlcmVmX3B1dChpOTE1LCAmaTkxNS0+Z3Qud2Fr ZXJlZiwgaW50ZWxfZ3RfcGFyayk7Cit9CisKK3ZvaWQgaW50ZWxfZ3RfcG1faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlpbnRlbF93YWtlcmVmX2luaXQoJmk5MTUtPmd0 Lndha2VyZWYpOworCUJMT0NLSU5HX0lOSVRfTk9USUZJRVJfSEVBRCgmaTkxNS0+Z3QucG1fbm90 aWZpY2F0aW9ucyk7Cit9CisKK3N0YXRpYyBib29sIHJlc2V0X2VuZ2luZXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCit7CisJaWYgKElOVEVMX0lORk8oaTkxNSktPmdwdV9yZXNldF9j bG9iYmVyc19kaXNwbGF5KQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gaW50ZWxfZ3B1X3Jl c2V0KGk5MTUsIEFMTF9FTkdJTkVTKSA9PSAwOworfQorCisvKioKKyAqIGludGVsX2d0X3Nhbml0 aXplOiBjYWxsZWQgYWZ0ZXIgdGhlIEdQVSBoYXMgbG9zdCBwb3dlcgorICogQGk5MTU6IHRoZSBp OTE1IGRldmljZQorICogQGZvcmNlOiBpZ25vcmUgYSBmYWlsZWQgcmVzZXQgYW5kIHNhbml0aXpl IGVuZ2luZSBzdGF0ZSBhbnl3YXkKKyAqCisgKiBBbnl0aW1lIHdlIHJlc2V0IHRoZSBHUFUsIGVp dGhlciB3aXRoIGFuIGV4cGxpY2l0IEdQVSByZXNldCBvciB0aHJvdWdoIGEKKyAqIFBDSSBwb3dl ciBjeWNsZSwgdGhlIEdQVSBsb3NlcyBzdGF0ZSBhbmQgd2UgbXVzdCByZXNldCBvdXIgc3RhdGUg dHJhY2tpbmcKKyAqIHRvIG1hdGNoLiBOb3RlIHRoYXQgY2FsbGluZyBpbnRlbF9ndF9zYW5pdGl6 ZSgpIGlmIHRoZSBHUFUgaGFzIG5vdAorICogYmVlbiByZXNldCByZXN1bHRzIGluIG11Y2ggY29u ZnVzaW9uIQorICovCit2b2lkIGludGVsX2d0X3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCBib29sIGZvcmNlKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKworCUdFTV9UUkFDRSgiXG4iKTsKKworCWlm ICghcmVzZXRfZW5naW5lcyhpOTE1KSAmJiAhZm9yY2UpCisJCXJldHVybjsKKworCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQorCQlpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBm YWxzZSk7Cit9CisKK3ZvaWQgaW50ZWxfZ3RfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKKworCS8qCisJICogQWZ0ZXIgcmVzdW1lLCB3ZSBtYXkgbmVlZCB0byBw b2tlIGludG8gdGhlIHBpbm5lZCBrZXJuZWwKKwkgKiBjb250ZXh0cyB0byBwYXBlciBvdmVyIGFu eSBkYW1hZ2UgY2F1c2VkIGJ5IHRoZSBzdWRkZW4gc3VzcGVuZC4KKwkgKiBPbmx5IHRoZSBrZXJu ZWwgY29udGV4dHMgc2hvdWxkIHJlbWFpbiBwaW5uZWQgb3ZlciBzdXNwZW5kLAorCSAqIGFsbG93 aW5nIHVzIHRvIGZpeHVwIHRoZSB1c2VyIGNvbnRleHRzIG9uIHRoZWlyIGZpcnN0IHBpbi4KKwkg Ki8KKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2U7CisKKwkJY2UgPSBlbmdpbmUtPmtlcm5lbF9jb250ZXh0OworCQlpZiAoY2Up CisJCQljZS0+b3BzLT5yZXNldChjZSk7CisKKwkJY2UgPSBlbmdpbmUtPnByZWVtcHRfY29udGV4 dDsKKwkJaWYgKGNlKQorCQkJY2UtPm9wcy0+cmVzZXQoY2UpOworCX0KK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndF9wbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uN2RkMTEzMGExOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfcG0uaApAQCAtMCwwICsxLDI3IEBACisvKgorICogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCisgKi8KKworI2lmbmRlZiBJTlRFTF9HVF9QTV9ICisjZGVmaW5lIElOVEVMX0dUX1BNX0gK KworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOwor CitlbnVtIHsKKwlJTlRFTF9HVF9VTlBBUkssCisJSU5URUxfR1RfUEFSSywKK307CisKK3ZvaWQg aW50ZWxfZ3RfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKK3ZvaWQgaW50 ZWxfZ3RfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKwordm9pZCBpbnRl bF9ndF9wbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKwordm9pZCBpbnRl bF9ndF9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCBmb3JjZSk7 Cit2b2lkIGludGVsX2d0X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisK KyNlbmRpZiAvKiBJTlRFTF9HVF9QTV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2hhbmdjaGVjay5jCmluZGV4IDMwNTNhNzA2YTU2MS4uZTVlYWEwNmZlNzRkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwpAQCAtMjU2LDYgKzI1Niw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKIAl1bnNpZ25lZCBpbnQgaHVuZyA9IDAsIHN0dWNrID0gMCwgd2VkZ2VkID0gMDsKKwlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAogCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hh bmdjaGVjaykKIAkJcmV0dXJuOwpAQCAtMjY2LDYgKzI2NywxMCBAQCBzdGF0aWMgdm9pZCBpOTE1 X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlpZiAoaTkxNV90 ZXJtaW5hbGx5X3dlZGdlZChkZXZfcHJpdikpCiAJCXJldHVybjsKIAorCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpOworCWlmICghd2FrZXJlZikKKwkJ cmV0dXJuOworCiAJLyogQXMgZW5hYmxpbmcgdGhlIEdQVSByZXF1aXJlcyBmYWlybHkgZXh0ZW5z aXZlIG1taW8gYWNjZXNzLAogCSAqIHBlcmlvZGljYWxseSBhcm0gdGhlIG1taW8gY2hlY2tlciB0 byBzZWUgaWYgd2UgYXJlIHRyaWdnZXJpbmcKIAkgKiBhbnkgaW52YWxpZCBhY2Nlc3MuCkBAIC0z MTMsNiArMzE4LDggQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCiAJaWYgKGh1bmcpCiAJCWhhbmdjaGVja19kZWNsYXJlX2hhbmco ZGV2X3ByaXYsIGh1bmcsIHN0dWNrKTsKIAorCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 LCB3YWtlcmVmKTsKKwogCS8qIFJlc2V0IHRpbWVyIGluIGNhc2UgR1BVIGhhbmdzIHdpdGhvdXQg YW5vdGhlciByZXF1ZXN0IGJlaW5nIGFkZGVkICovCiAJaTkxNV9xdWV1ZV9oYW5nY2hlY2soZGV2 X3ByaXYpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwppbmRleCBlZGVjN2YxODM2 ODguLmQxN2MwOGUyNjkzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKQEAgLTE3 ODksNyArMTc4OSw3IEBAIHN0YXRpYyBib29sIHVuZXhwZWN0ZWRfc3RhcnRpbmdfc3RhdGUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiB1bmV4cGVjdGVkOwogfQogCi1z dGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCitzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXN1bWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCWludGVsX2VuZ2luZV9hcHBseV93b3JrYXJvdW5kcyhlbmdpbmUpOwog CWludGVsX2VuZ2luZV9hcHBseV93aGl0ZWxpc3QoZW5naW5lKTsKQEAgLTE4MjIsNyArMTgyMiw3 IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAkgKiBjb21wbGV0ZWQgdGhlIHJlc2V0IGluIGk5MTVfZ2VtX3Jlc2V0 X2ZpbmlzaCgpLiBJZiBhIHJlcXVlc3QKIAkgKiBpcyBjb21wbGV0ZWQgYnkgb25lIGVuZ2luZSwg aXQgbWF5IHRoZW4gcXVldWUgYSByZXF1ZXN0CiAJICogdG8gYSBzZWNvbmQgdmlhIGl0cyBleGVj bGlzdHMtPnRhc2tsZXQgKmp1c3QqIGFzIHdlIGFyZQotCSAqIGNhbGxpbmcgZW5naW5lLT5pbml0 X2h3KCkgYW5kIGFsc28gd3JpdGluZyB0aGUgRUxTUC4KKwkgKiBjYWxsaW5nIGVuZ2luZS0+cmVz dW1lKCkgYW5kIGFsc28gd3JpdGluZyB0aGUgRUxTUC4KIAkgKiBUdXJuaW5nIG9mZiB0aGUgZXhl Y2xpc3RzLT50YXNrbGV0IHVudGlsIHRoZSByZXNldCBpcyBvdmVyCiAJICogcHJldmVudHMgdGhl IHJhY2UuCiAJICovCkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBzdGF0aWMgdm9pZAogbG9naWNhbF9y aW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAkv KiBEZWZhdWx0IHZmdW5jcyB3aGljaCBjYW4gYmUgb3ZlcnJpZGVuIGJ5IGVhY2ggZW5naW5lLiAq LwotCWVuZ2luZS0+aW5pdF9odyA9IGdlbjhfaW5pdF9jb21tb25fcmluZzsKKwllbmdpbmUtPnJl c3VtZSA9IGV4ZWNsaXN0c19yZXN1bWU7CiAKIAllbmdpbmUtPnJlc2V0LnByZXBhcmUgPSBleGVj bGlzdHNfcmVzZXRfcHJlcGFyZTsKIAllbmdpbmUtPnJlc2V0LnJlc2V0ID0gZXhlY2xpc3RzX3Jl c2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKaW5kZXggY2RmMTg0NDAzZDQ2 Li4zNDI0ZDI4NjUwYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3Jlc2V0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwpAQCAt OSw2ICs5LDggQEAKIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV9ncHVf ZXJyb3IuaCIKKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIKKyNpbmNsdWRlICJpbnRlbF9n dF9wbS5oIgogI2luY2x1ZGUgImludGVsX3Jlc2V0LmgiCiAKICNpbmNsdWRlICJpbnRlbF9ndWMu aCIKQEAgLTY4MCw2ICs2ODIsNyBAQCBzdGF0aWMgdm9pZCByZXNldF9wcmVwYXJlX2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogd3JpdHRlbiB0byB0aGUgcG93ZXJj b250ZXh0IGlzIHVuZGVmaW5lZCBhbmQgc28gd2UgbWF5IGxvc2UKIAkgKiBHUFUgc3RhdGUgdXBv biByZXN1bWUsIGkuZS4gZmFpbCB0byByZXN0YXJ0IGFmdGVyIGEgcmVzZXQuCiAJICovCisJaW50 ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGVu Z2luZS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAllbmdpbmUtPnJlc2V0LnByZXBhcmUoZW5n aW5lKTsKIH0KQEAgLTcxNSw2ICs3MTgsNyBAQCBzdGF0aWMgdm9pZCByZXNldF9wcmVwYXJlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAorCWludGVsX2d0X3BtX2dldChpOTE1 KTsKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKIAkJcmVzZXRfcHJlcGFyZV9l bmdpbmUoZW5naW5lKTsKIApAQCAtNzUyLDQ4ICs3NTYsMTAgQEAgc3RhdGljIGludCBndF9yZXNl dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIHN0YXRpYyB2b2lkIHJlc2V0X2Zpbmlz aF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWVuZ2luZS0+cmVz ZXQuZmluaXNoKGVuZ2luZSk7CisJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwogCWludGVs X3VuY29yZV9mb3JjZXdha2VfcHV0KGVuZ2luZS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIH0K IAotc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQgewotCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OwotfTsKLQotc3RhdGljIHZvaWQgcmVzdGFy dF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKLXsKLQlzdHJ1Y3QgaTkxNV9ncHVfcmVz dGFydCAqYXJnID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqYXJnKSwgd29yayk7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmctPmk5MTU7Ci0Jc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwotCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwotCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwotCi0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwot CW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCVdSSVRFX09OQ0UoaTkxNS0+ Z3B1X2Vycm9yLnJlc3RhcnQsIE5VTEwpOwotCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkx NSwgaWQpIHsKLQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0KLQkJLyoKLQkJICogT3N0ZW5z aWJpbHksIHdlIGFsd2F5cyB3YW50IGEgY29udGV4dCBsb2FkZWQgZm9yIHBvd2Vyc2F2aW5nLAot CQkgKiBzbyBpZiB0aGUgZW5naW5lIGlzIGlkbGUgYWZ0ZXIgdGhlIHJlc2V0LCBzZW5kIGEgcmVx dWVzdAotCQkgKiB0byBsb2FkIG91ciBzY3JhdGNoIGtlcm5lbF9jb250ZXh0LgotCQkgKi8KLQkJ aWYgKCFpbnRlbF9lbmdpbmVfaXNfaWRsZShlbmdpbmUpKQotCQkJY29udGludWU7Ci0KLQkJcnEg PSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwotCQlpZiAoIUlT X0VSUihycSkpCi0JCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKLQl9Ci0KLQltdXRleF91bmxvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwotCi0Ja2ZyZWUoYXJnKTsKLX0KLQogc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKQEAgLTgwMywyOSArNzY5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlyZXNldF9maW5pc2hfZW5naW5lKGVuZ2lu ZSk7CiAJCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoZW5naW5lKTsKIAl9Ci19Ci0K LXN0YXRpYyB2b2lkIHJlc2V0X3Jlc3RhcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Ci17Ci0Jc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQgKmFyZzsKLQotCS8qCi0JICogRm9sbG93aW5n IHRoZSByZXNldCwgZW5zdXJlIHRoYXQgd2UgYWx3YXlzIHJlbG9hZCBjb250ZXh0IGZvcgotCSAq IHBvd2Vyc2F2aW5nLCBhbmQgdG8gY29ycmVjdCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0 LiBTaW5jZQotCSAqIHRoaXMgcmVxdWlyZXMgdXMgdG8gc3VibWl0IGEgcmVxdWVzdCwgcXVldWUg YSB3b3JrZXIgdG8gZG8gdGhhdAotCSAqIHRhc2sgZm9yIHVzIHRvIGV2YWRlIGFueSBsb2NraW5n IGhlcmUuCi0JICovCi0JaWYgKFJFQURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkpCi0J CXJldHVybjsKLQotCWFyZyA9IGttYWxsb2Moc2l6ZW9mKCphcmcpLCBHRlBfS0VSTkVMKTsKLQlp ZiAoYXJnKSB7Ci0JCWFyZy0+aTkxNSA9IGk5MTU7Ci0JCUlOSVRfV09SSygmYXJnLT53b3JrLCBy ZXN0YXJ0X3dvcmspOwotCi0JCVdSSVRFX09OQ0UoaTkxNS0+Z3B1X2Vycm9yLnJlc3RhcnQsIGFy Zyk7Ci0JCXF1ZXVlX3dvcmsoaTkxNS0+d3EsICZhcmctPndvcmspOwotCX0KKwlpbnRlbF9ndF9w bV9wdXQoaTkxNSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5vcF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtODg2LDYgKzgzMCw3IEBAIHN0YXRpYyB2b2lkIF9f aTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkgKiBp biBub3Bfc3VibWl0X3JlcXVlc3QuCiAJICovCiAJc3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgp OworCXNldF9iaXQoSTkxNV9XRURHRUQsICZlcnJvci0+ZmxhZ3MpOwogCiAJLyogTWFyayBhbGwg ZXhlY3V0aW5nIHJlcXVlc3RzIGFzIHNraXBwZWQgKi8KIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5l LCBpOTE1LCBpZCkKQEAgLTg5Myw5ICs4MzgsNiBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX3Nl dF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAlyZXNldF9maW5pc2go aTkxNSk7CiAKLQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQlzZXRfYml0KEk5MTVfV0VER0VE LCAmZXJyb3ItPmZsYWdzKTsKLQogCUdFTV9UUkFDRSgiZW5kXG4iKTsKIH0KIApAQCAtOTUzLDcg Kzg5NSw3IEBAIHN0YXRpYyBib29sIF9faTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQogCX0KIAltdXRleF91bmxvY2soJmk5MTUtPmd0LnRpbWVsaW5l cy5tdXRleCk7CiAKLQlpbnRlbF9lbmdpbmVzX3Nhbml0aXplKGk5MTUsIGZhbHNlKTsKKwlpbnRl bF9ndF9zYW5pdGl6ZShpOTE1LCBmYWxzZSk7CiAKIAkvKgogCSAqIFVuZG8gbm9wX3N1Ym1pdF9y ZXF1ZXN0LiBXZSBwcmV2ZW50IGFsbCBuZXcgaTkxNSByZXF1ZXN0cyBmcm9tCkBAIC0xMDMxLDcg Kzk3Myw2IEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK IAlHRU1fVFJBQ0UoImZsYWdzPSVseFxuIiwgZXJyb3ItPmZsYWdzKTsKIAogCW1pZ2h0X3NsZWVw KCk7Ci0JYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwogCUdFTV9CVUdfT04oIXRlc3Rf Yml0KEk5MTVfUkVTRVRfQkFDS09GRiwgJmVycm9yLT5mbGFncykpOwogCiAJLyogQ2xlYXIgYW55 IHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0cyBhdCByZWNvdmVyeS4gVGltZSB0byB0cnkgYWdhaW4u ICovCkBAIC0xMDg0LDggKzEwMjUsNiBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCiAKIGZpbmlzaDoKIAlyZXNldF9maW5pc2goaTkxNSk7Ci0JaWYgKCFf X2k5MTVfd2VkZ2VkKGVycm9yKSkKLQkJcmVzZXRfcmVzdGFydChpOTE1KTsKIAlyZXR1cm47CiAK IHRhaW50OgpAQCAtMTEzNCw2ICsxMDczLDkgQEAgaW50IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKQogCUdFTV9UUkFDRSgi JXMgZmxhZ3M9JWx4XG4iLCBlbmdpbmUtPm5hbWUsIGVycm9yLT5mbGFncyk7CiAJR0VNX0JVR19P TighdGVzdF9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBlbmdpbmUtPmlkLCAmZXJyb3ItPmZsYWdz KSk7CiAKKwlpZiAoIWludGVsX3dha2VyZWZfYWN0aXZlKCZlbmdpbmUtPndha2VyZWYpKQorCQly ZXR1cm4gMDsKKwogCXJlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7CiAKIAlpZiAobXNnKQpA QCAtMTE2NSw3ICsxMTA3LDcgQEAgaW50IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKQogCSAqIGhhdmUgYmVlbiByZXNldCB0 byB0aGVpciBkZWZhdWx0IHZhbHVlcy4gRm9sbG93IHRoZSBpbml0X3JpbmcKIAkgKiBwcm9jZXNz IHRvIHByb2dyYW0gUklOR19NT0RFLCBIV1NQIGFuZCByZS1lbmFibGUgc3VibWlzc2lvbi4KIAkg Ki8KLQlyZXQgPSBlbmdpbmUtPmluaXRfaHcoZW5naW5lKTsKKwlyZXQgPSBlbmdpbmUtPnJlc3Vt ZShlbmdpbmUpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCkBAIC0xNDIyLDI1ICsxMzY0LDYg QEAgaW50IGk5MTVfdGVybWluYWxseV93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiAJcmV0dXJuIF9faTkxNV93ZWRnZWQoZXJyb3IpID8gLUVJTyA6IDA7CiB9CiAKLWJvb2wg aTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKLXsKLQlpbnQg ZXJyOwotCi0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ncHVfZXJyb3IuaGFuZ2No ZWNrX3dvcmspOwotCi0JZmx1c2hfd29ya3F1ZXVlKGk5MTUtPndxKTsKLQlHRU1fQlVHX09OKFJF QURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkpOwotCi0JbXV0ZXhfbG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Ci0JZXJyID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAot CQkJCSAgICAgSTkxNV9XQUlUX0xPQ0tFRCB8Ci0JCQkJICAgICBJOTE1X1dBSVRfRk9SX0lETEVf Qk9PU1QsCi0JCQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Ci0JbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQotCXJldHVybiAhZXJyOwotfQotCiBzdGF0aWMgdm9p ZCBpOTE1X3dlZGdlX21lKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgaTkx NV93ZWRnZV9tZSAqdyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKncpLCB3b3JrLndvcmsp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmgKaW5kZXggOGU2NjJiYjQzYTliLi5i NTJlZmFhYjQ5NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jl c2V0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaApAQCAtMzQs NyArMzQsNiBAQCBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAogCQkgICAgICBjb25zdCBjaGFyICpyZWFzb24pOwogCiB2b2lkIGk5MTVfcmVzZXRf cmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgYm9vbCBndWlsdHkpOwotYm9vbCBpOTE1 X3Jlc2V0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIAogaW50IF9fbXVz dF9jaGVjayBpOTE1X3Jlc2V0X3RyeWxvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Owogdm9pZCBpOTE1X3Jlc2V0X3VubG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg aW50IHRhZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5n YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKaW5k ZXggZjg5NTQxMjc0ZDQ0Li5iNzkxZGEyNzExZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTYzNywxMiArNjM3LDE1IEBAIHN0YXRpYyBib29sIHN0 b3BfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIChFTkdJTkVf UkVBRChlbmdpbmUsIFJJTkdfSEVBRCkgJiBIRUFEX0FERFIpID09IDA7CiB9CiAKLXN0YXRpYyBp bnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0 aWMgaW50IHhjc19yZXN1bWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKIAlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IGVuZ2luZS0+YnVmZmVyOwogCWludCByZXQgPSAwOwogCisJR0VN X1RSQUNFKCIlczogcmluZzp7SEVBRDolMDR4LCBUQUlMOiUwNHh9XG4iLAorCQkgIGVuZ2luZS0+ bmFtZSwgcmluZy0+aGVhZCwgcmluZy0+dGFpbCk7CisKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X2dldChlbmdpbmUtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAKIAlpZiAoIXN0b3BfcmluZyhl bmdpbmUpKSB7CkBAIC04MjcsNyArODMwLDcgQEAgc3RhdGljIGludCBpbnRlbF9yY3NfY3R4X2lu aXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQg aW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMg aW50IHJjc19yZXN1bWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKIApAQCAtODY5LDcg Kzg3Miw3IEBAIHN0YXRpYyBpbnQgaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJaWYgKElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNiwgNykpCiAJCUk5MTVf V1JJVEUoSU5TVFBNLCBfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX0ZPUkNFX09SREVSSU5HKSk7 CiAKLQlyZXR1cm4gaW5pdF9yaW5nX2NvbW1vbihlbmdpbmUpOworCXJldHVybiB4Y3NfcmVzdW1l KGVuZ2luZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCkBAIC0yMjAxLDcgKzIyMDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAogCWludGVsX3JpbmdfaW5pdF9pcnEoZGV2X3ByaXYsIGVuZ2luZSk7CiAKLQllbmdpbmUtPmlu aXRfaHcgPSBpbml0X3JpbmdfY29tbW9uOworCWVuZ2luZS0+cmVzdW1lID0geGNzX3Jlc3VtZTsK IAllbmdpbmUtPnJlc2V0LnByZXBhcmUgPSByZXNldF9wcmVwYXJlOwogCWVuZ2luZS0+cmVzZXQu cmVzZXQgPSByZXNldF9yaW5nOwogCWVuZ2luZS0+cmVzZXQuZmluaXNoID0gcmVzZXRfZmluaXNo OwpAQCAtMjI2Myw3ICsyMjY2LDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVy KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJp dikpCiAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGhzd19lbWl0X2JiX3N0YXJ0OwogCi0JZW5n aW5lLT5pbml0X2h3ID0gaW5pdF9yZW5kZXJfcmluZzsKKwllbmdpbmUtPnJlc3VtZSA9IHJjc19y ZXN1bWU7CiAKIAlyZXQgPSBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKGVuZ2luZSk7CiAJaWYgKHJl dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCmluZGV4IGJjZmViMGM2Nzk5Ny4u YTk3YTBhYjM1NzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2Vu Z2luZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKQEAgLTI0 LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxfY29u dGV4dC5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgogCiAjaW5jbHVkZSAibW9ja19l bmdpbmUuaCIKICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmgiCkBAIC0yNjgsNiAr MjY5LDggQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJaTkxNV90aW1lbGluZV9zZXRfc3ViY2xhc3MoJmVuZ2luZS0+ YmFzZS50aW1lbGluZSwgVElNRUxJTkVfRU5HSU5FKTsKIAogCWludGVsX2VuZ2luZV9pbml0X2Jy ZWFkY3J1bWJzKCZlbmdpbmUtPmJhc2UpOworCWludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0cygm ZW5naW5lLT5iYXNlKTsKKwlpbnRlbF9lbmdpbmVfaW5pdF9fcG0oJmVuZ2luZS0+YmFzZSk7CiAK IAkvKiBmYWtlIGh3IHF1ZXVlICovCiAJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+aHdfbG9jayk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2su YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCmluZGV4IGFj ZDMzYWE0NjA2OC4uOWRlY2U1NWEwOTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9oYW5nY2hlY2suYwpAQCAtMjQsNiArMjQsOCBAQAogCiAjaW5jbHVkZSA8bGludXgv a3RocmVhZC5oPgogCisjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCisKICNpbmNsdWRlICJp OTE1X3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCiAjaW5j bHVkZSAic2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmgiCkBAIC00NzksMTkgKzQ4MSw2IEBAIHN0 YXRpYyBpbnQgaWd0X3Jlc2V0X25vcCh2b2lkICphcmcpCiAJCQlicmVhazsKIAkJfQogCi0JCWlm ICghaTkxNV9yZXNldF9mbHVzaChpOTE1KSkgewotCQkJc3RydWN0IGRybV9wcmludGVyIHAgPQot CQkJCWRybV9pbmZvX3ByaW50ZXIoaTkxNS0+ZHJtLmRldik7Ci0KLQkJCXByX2VycigiJXMgZmFp bGVkIHRvIGlkbGUgYWZ0ZXIgcmVzZXRcbiIsCi0JCQkgICAgICAgZW5naW5lLT5uYW1lKTsKLQkJ CWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwgJnAsCi0JCQkJCSAgIiVzXG4iLCBlbmdpbmUtPm5h bWUpOwotCi0JCQllcnIgPSAtRUlPOwotCQkJYnJlYWs7Ci0JCX0KLQogCQllcnIgPSBpZ3RfZmx1 c2hfdGVzdChpOTE1LCAwKTsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwpAQCAtNTk0LDE5ICs1ODMs NiBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9ub3BfZW5naW5lKHZvaWQgKmFyZykKIAkJCQllcnIg PSAtRUlOVkFMOwogCQkJCWJyZWFrOwogCQkJfQotCi0JCQlpZiAoIWk5MTVfcmVzZXRfZmx1c2go aTkxNSkpIHsKLQkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9Ci0JCQkJCWRybV9pbmZvX3ByaW50 ZXIoaTkxNS0+ZHJtLmRldik7Ci0KLQkJCQlwcl9lcnIoIiVzIGZhaWxlZCB0byBpZGxlIGFmdGVy IHJlc2V0XG4iLAotCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwotCQkJCWludGVsX2VuZ2luZV9k dW1wKGVuZ2luZSwgJnAsCi0JCQkJCQkgICIlc1xuIiwgZW5naW5lLT5uYW1lKTsKLQotCQkJCWVy ciA9IC1FSU87Ci0JCQkJYnJlYWs7Ci0JCQl9CiAJCX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZp ZXMsIGVuZF90aW1lKSk7CiAJCWNsZWFyX2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGlkLCAmaTkx NS0+Z3B1X2Vycm9yLmZsYWdzKTsKIAkJcHJfaW5mbygiJXMoJXMpOiAlZCByZXNldHNcbiIsIF9f ZnVuY19fLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKQEAgLTY2OSw2ICs2NDUsNyBAQCBzdGF0aWMg aW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9v bCBhY3RpdmUpCiAJCXJlc2V0X2VuZ2luZV9jb3VudCA9IGk5MTVfcmVzZXRfZW5naW5lX2NvdW50 KCZpOTE1LT5ncHVfZXJyb3IsCiAJCQkJCQkJICAgICBlbmdpbmUpOwogCisJCWludGVsX2VuZ2lu ZV9wbV9nZXQoZW5naW5lKTsKIAkJc2V0X2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGlkLCAmaTkx NS0+Z3B1X2Vycm9yLmZsYWdzKTsKIAkJZG8gewogCQkJaWYgKGFjdGl2ZSkgewpAQCAtNzIxLDIx ICs2OTgsOSBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgYm9vbCBhY3RpdmUpCiAJCQkJZXJyID0gLUVJTlZBTDsKIAkJCQlicmVh azsKIAkJCX0KLQotCQkJaWYgKCFpOTE1X3Jlc2V0X2ZsdXNoKGk5MTUpKSB7Ci0JCQkJc3RydWN0 IGRybV9wcmludGVyIHAgPQotCQkJCQlkcm1faW5mb19wcmludGVyKGk5MTUtPmRybS5kZXYpOwot Ci0JCQkJcHJfZXJyKCIlcyBmYWlsZWQgdG8gaWRsZSBhZnRlciByZXNldFxuIiwKLQkJCQkgICAg ICAgZW5naW5lLT5uYW1lKTsKLQkJCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUsICZwLAotCQkJ CQkJICAiJXNcbiIsIGVuZ2luZS0+bmFtZSk7Ci0KLQkJCQllcnIgPSAtRUlPOwotCQkJCWJyZWFr OwotCQkJfQogCQl9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBlbmRfdGltZSkpOwogCQlj bGVhcl9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmk5MTUtPmdwdV9lcnJvci5mbGFncyk7 CisJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKIAogCQlpZiAoZXJyKQogCQkJYnJlYWs7 CkBAIC05NDIsNiArOTA3LDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJZ2V0X3Rhc2tfc3RydWN0KHRzayk7CiAJCX0K IAorCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7CiAJCXNldF9iaXQoSTkxNV9SRVNFVF9F TkdJTkUgKyBpZCwgJmk5MTUtPmdwdV9lcnJvci5mbGFncyk7CiAJCWRvIHsKIAkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxID0gTlVMTDsKQEAgLTEwMTgsNiArOTg0LDcgQEAgc3RhdGljIGludCBf X2lndF9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJfQog CQl9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBlbmRfdGltZSkpOwogCQljbGVhcl9iaXQo STkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmk5MTUtPmdwdV9lcnJvci5mbGFncyk7CisJCWludGVs X2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKIAkJcHJfaW5mbygiaTkxNV9yZXNldF9lbmdpbmUoJXM6 JXMpOiAlbHUgcmVzZXRzXG4iLAogCQkJZW5naW5lLT5uYW1lLCB0ZXN0X25hbWUsIGNvdW50KTsK IApAQCAtMTA2OSw3ICsxMDM2LDkgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQlpZiAoZXJyKQogCQkJYnJlYWs7CiAKLQkJ ZXJyID0gaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgMCk7CisJCW11dGV4X2xvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOworCQllcnIgPSBpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9D S0VEKTsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAkJaWYgKGVy cikKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93 b3JrYXJvdW5kcy5jCmluZGV4IGU2MWU0NzQyMWVkMi4uNmI5ZTliNmQ4MmY3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKQEAgLTcxLDcgKzcx LDYgQEAgcmVhZF9ub25wcml2cyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJY29uc3QgdTMyIGJhc2UgPSBlbmdpbmUtPm1t aW9fYmFzZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqcmVzdWx0OwotCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwogCXUzMiBzcm0sICpjczsKQEAgLTEwMyw5ICsxMDIsNyBAQCByZWFkX25vbnBy aXZzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9vYmo7CiAKLQlycSA9IEVSUl9QVFIoLUVO T0RFVik7Ci0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKGVuZ2luZS0+aTkxNSwgd2FrZXJlZikKLQkJ cnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOworCXJxID0gaTkxNV9yZXF1ZXN0 X2FsbG9jKGVuZ2luZSwgY3R4KTsKIAlpZiAoSVNfRVJSKHJxKSkgewogCQllcnIgPSBQVFJfRVJS KHJxKTsKIAkJZ290byBlcnJfcGluOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRl eCA4ZGNiYTc4ZmI0M2IuLjAwZDNmZjc0NmViMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKQEAgLTIwNDEsOCArMjA0MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ycHNfYm9vc3RfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJfQogCiAJc2VxX3ByaW50ZihtLCAi UlBTIGVuYWJsZWQ/ICVkXG4iLCBycHMtPmVuYWJsZWQpOwotCXNlcV9wcmludGYobSwgIkdQVSBi dXN5PyAlcyBbJWQgcmVxdWVzdHNdXG4iLAotCQkgICB5ZXNubyhkZXZfcHJpdi0+Z3QuYXdha2Up LCBkZXZfcHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKTsKKwlzZXFfcHJpbnRmKG0sICJHUFUgYnVz eT8gJXNcbiIsIHllc25vKGRldl9wcml2LT5ndC5hd2FrZSkpOwogCXNlcV9wcmludGYobSwgIkJv b3N0cyBvdXRzdGFuZGluZz8gJWRcbiIsCiAJCSAgIGF0b21pY19yZWFkKCZycHMtPm51bV93YWl0 ZXJzKSk7CiAJc2VxX3ByaW50ZihtLCAiSW50ZXJhY3RpdmU/ICVkXG4iLCBSRUFEX09OQ0UocnBz LT5wb3dlci5pbnRlcmFjdGl2ZSkpOwpAQCAtMjA2MSw5ICsyMDYwLDcgQEAgc3RhdGljIGludCBp OTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCXNl cV9wcmludGYobSwgIldhaXQgYm9vc3RzOiAlZFxuIiwgYXRvbWljX3JlYWQoJnJwcy0+Ym9vc3Rz KSk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYmCi0JICAgIHJwcy0+ZW5hYmxl ZCAmJgotCSAgICBkZXZfcHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7CisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNiAmJiBycHMtPmVuYWJsZWQgJiYgZGV2X3ByaXYtPmd0LmF3YWtlKSB7 CiAJCXUzMiBycHVwLCBycHVwZWk7CiAJCXUzMiBycGRvd24sIHJwZG93bmVpOwogCkBAIC0zMDky LDkgKzMwODksOSBAQCBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwogCi0Jc2VxX3ByaW50ZihtLCAiR1QgYXdha2U/ICVzXG4iLCB5ZXNubyhkZXZfcHJp di0+Z3QuYXdha2UpKTsKLQlzZXFfcHJpbnRmKG0sICJHbG9iYWwgYWN0aXZlIHJlcXVlc3RzOiAl ZFxuIiwKLQkJICAgZGV2X3ByaXYtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7CisJc2VxX3ByaW50Ziht LCAiR1QgYXdha2U/ICVzIFslZF1cbiIsCisJCSAgIHllc25vKGRldl9wcml2LT5ndC5hd2FrZSks CisJCSAgIGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3Qud2FrZXJlZi5jb3VudCkpOwogCXNlcV9w cmludGYobSwgIkNTIHRpbWVzdGFtcCBmcmVxdWVuY3k6ICV1IGtIelxuIiwKIAkJICAgUlVOVElN RV9JTkZPKGRldl9wcml2KS0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9raHopOwogCkBAIC0zOTQw LDggKzM5MzcsNyBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQog CiAJaWYgKHZhbCAmIERST1BfSURMRSkgewogCQlkbyB7Ci0JCQlpZiAoUkVBRF9PTkNFKGk5MTUt Pmd0LmFjdGl2ZV9yZXF1ZXN0cykpCi0JCQkJZmx1c2hfZGVsYXllZF93b3JrKCZpOTE1LT5nZW0u cmV0aXJlX3dvcmspOworCQkJZmx1c2hfZGVsYXllZF93b3JrKCZpOTE1LT5nZW0ucmV0aXJlX3dv cmspOwogCQkJZHJhaW5fZGVsYXllZF93b3JrKCZpOTE1LT5nZW0uaWRsZV93b3JrKTsKIAkJfSB3 aGlsZSAoUkVBRF9PTkNFKGk5MTUtPmd0LmF3YWtlKSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKaW5kZXggYWM0MTZkMmMwMmNhLi44MjQ0MDlmZmQwM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwpAQCAtNDcsOCArNDcsOSBAQAogI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+ CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAKLSNpbmNsdWRlICJndC9pbnRlbF93b3JrYXJv dW5kcy5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxf cmVzZXQuaCIKKyNpbmNsdWRlICJndC9pbnRlbF93b3JrYXJvdW5kcy5oIgogCiAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3BtdS5oIgpAQCAtMjMyMyw3ICsyMzI0LDcgQEAg c3RhdGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAogCWludGVsX3Bvd2VyX2RvbWFpbnNfcmVzdW1lKGRldl9wcml2KTsKIAotCWludGVsX2VuZ2lu ZXNfc2FuaXRpemUoZGV2X3ByaXYsIHRydWUpOworCWludGVsX2d0X3Nhbml0aXplKGRldl9wcml2 LCB0cnVlKTsKIAogCWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2KTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNDVlMDI3ZjQ1ZTYyLi41Yzc3YmY1YjczNWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjAwNiwxMCArMjAwNiwxMCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7CiAJCQlzdHJ1Y3QgbGlzdF9oZWFkIGh3c3BfZnJlZV9saXN0OwogCQl9IHRp bWVsaW5lczsKIAotCQlpbnRlbF9lbmdpbmVfbWFza190IGFjdGl2ZV9lbmdpbmVzOwogCQlzdHJ1 Y3QgbGlzdF9oZWFkIGFjdGl2ZV9yaW5nczsKIAkJc3RydWN0IGxpc3RfaGVhZCBjbG9zZWRfdm1h OwotCQl1MzIgYWN0aXZlX3JlcXVlc3RzOworCisJCXN0cnVjdCBpbnRlbF93YWtlcmVmIHdha2Vy ZWY7CiAKIAkJLyoqCiAJCSAqIElzIHRoZSBHUFUgY3VycmVudGx5IGNvbnNpZGVyZWQgaWRsZSwg b3IgYnVzeSBleGVjdXRpbmcKQEAgLTIwMjAsMTIgKzIwMjAsMTYgQEAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgewogCQkgKi8KIAkJaW50ZWxfd2FrZXJlZl90IGF3YWtlOwogCisJCXN0cnVjdCBi bG9ja2luZ19ub3RpZmllcl9oZWFkIHBtX25vdGlmaWNhdGlvbnM7CisKIAkJa3RpbWVfdCBsYXN0 X2luaXRfdGltZTsKIAogCQlzdHJ1Y3QgaTkxNV92bWEgKnNjcmF0Y2g7CiAJfSBndDsKIAogCXN0 cnVjdCB7CisJCXN0cnVjdCBub3RpZmllcl9ibG9jayBwbV9ub3RpZmllcjsKKwogCQkvKioKIAkJ ICogV2UgbGVhdmUgdGhlIHVzZXIgSVJRIG9mZiBhcyBtdWNoIGFzIHBvc3NpYmxlLAogCQkgKiBi dXQgdGhpcyBtZWFucyB0aGF0IHJlcXVlc3RzIHdpbGwgZmluaXNoIGFuZCBuZXZlcgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKaW5kZXggN2Y4MzNjOTcxMzhlLi41NGYyN2NhYmFlMmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPGxpbnV4L2RtYS1i dWYuaD4KICNpbmNsdWRlIDxsaW51eC9tbWFuLmg+CiAKKyNpbmNsdWRlICJndC9pbnRlbF9lbmdp bmVfcG0uaCIKKyNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgogI2luY2x1ZGUgImd0L2ludGVs X21vY3MuaCIKICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgogI2luY2x1ZGUgImd0L2ludGVs X3dvcmthcm91bmRzLmgiCkBAIC0yODg4LDkgKzI4OTAsNiBAQCB3YWl0X2Zvcl90aW1lbGluZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJc3RydWN0IGk5MTVfZ3RfdGltZWxpbmVz ICpndCA9ICZpOTE1LT5ndC50aW1lbGluZXM7CiAJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsOwog Ci0JaWYgKCFSRUFEX09OQ0UoaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSkKLQkJcmV0dXJuIHRp bWVvdXQ7Ci0KIAltdXRleF9sb2NrKCZndC0+bXV0ZXgpOwogCWxpc3RfZm9yX2VhY2hfZW50cnko dGwsICZndC0+YWN0aXZlX2xpc3QsIGxpbmspIHsKIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7 CkBAIC0yOTMwLDkgKzI5MjksMTAgQEAgd2FpdF9mb3JfdGltZWxpbmVzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIGxvbmcgdGltZW91 dCkKIHsKLQlHRU1fVFJBQ0UoImZsYWdzPSV4ICglcyksIHRpbWVvdXQ9JWxkJXNcbiIsCisJR0VN X1RSQUNFKCJmbGFncz0leCAoJXMpLCB0aW1lb3V0PSVsZCVzLCBhd2FrZT89JXNcbiIsCiAJCSAg ZmxhZ3MsIGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCA/ICJsb2NrZWQiIDogInVubG9ja2VkIiwK LQkJICB0aW1lb3V0LCB0aW1lb3V0ID09IE1BWF9TQ0hFRFVMRV9USU1FT1VUID8gIiAoZm9yZXZl cikiIDogIiIpOworCQkgIHRpbWVvdXQsIHRpbWVvdXQgPT0gTUFYX1NDSEVEVUxFX1RJTUVPVVQg PyAiIChmb3JldmVyKSIgOiAiIiwKKwkJICB5ZXNubyhpOTE1LT5ndC5hd2FrZSkpOwogCiAJLyog SWYgdGhlIGRldmljZSBpcyBhc2xlZXAsIHdlIGhhdmUgbm8gcmVxdWVzdHMgb3V0c3RhbmRpbmcg Ki8KIAlpZiAoIVJFQURfT05DRShpOTE1LT5ndC5hd2FrZSkpCkBAIC00MTU0LDcgKzQxNTQsNyBA QCB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQog CSAqIGl0IG1heSBpbXBhY3QgdGhlIGRpc3BsYXkgYW5kIHdlIGFyZSB1bmNlcnRhaW4gYWJvdXQg dGhlIHN0YWJpbGl0eQogCSAqIG9mIHRoZSByZXNldCwgc28gdGhpcyBjb3VsZCBiZSBhcHBsaWVk IHRvIGV2ZW4gZWFybGllciBnZW4uCiAJICovCi0JaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1 LCBmYWxzZSk7CisJaW50ZWxfZ3Rfc2FuaXRpemUoaTkxNSwgZmFsc2UpOwogCiAJaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoJmk5MTUtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAJaW50ZWxf cnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CkBAIC00MjEyLDI3ICs0MjEyLDYgQEAgc3Rh dGljIHZvaWQgaW5pdF91bnVzZWRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCX0KIH0KIAotc3RhdGljIGludCBfX2k5MTVfZ2VtX3Jlc3RhcnRfZW5naW5lcyh2b2lk ICpkYXRhKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGF0YTsKLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0J aW50IGVycjsKLQotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Ci0JCWVyciA9 IGVuZ2luZS0+aW5pdF9odyhlbmdpbmUpOwotCQlpZiAoZXJyKSB7Ci0JCQlEUk1fRVJST1IoIkZh aWxlZCB0byByZXN0YXJ0ICVzICglZClcbiIsCi0JCQkJICBlbmdpbmUtPm5hbWUsIGVycik7Ci0J CQlyZXR1cm4gZXJyOwotCQl9Ci0JfQotCi0JaW50ZWxfZW5naW5lc19zZXRfc2NoZWR1bGVyX2Nh cHMoaTkxNSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWludCByZXQ7CkBAIC00MjkxLDEyICs0 MjcwLDEzIEBAIGludCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAlpbnRlbF9tb2NzX2luaXRfbDNjY190YWJsZShkZXZfcHJpdik7CiAKIAkvKiBP bmx5IHdoZW4gdGhlIEhXIGlzIHJlLWluaXRpYWxpc2VkLCBjYW4gd2UgcmVwbGF5IHRoZSByZXF1 ZXN0cyAqLwotCXJldCA9IF9faTkxNV9nZW1fcmVzdGFydF9lbmdpbmVzKGRldl9wcml2KTsKKwly ZXQgPSBpbnRlbF9lbmdpbmVzX3Jlc3VtZShkZXZfcHJpdik7CiAJaWYgKHJldCkKIAkJZ290byBj bGVhbnVwX3VjOwogCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNv cmUsIEZPUkNFV0FLRV9BTEwpOwogCisJaW50ZWxfZW5naW5lc19zZXRfc2NoZWR1bGVyX2NhcHMo ZGV2X3ByaXYpOwogCXJldHVybiAwOwogCiBjbGVhbnVwX3VjOgpAQCAtNDYwMiw2ICs0NTgyLDcg QEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ZXJyX2luaXRfaHc6CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 CiAKKwlpOTE1X2dlbV9zZXRfd2VkZ2VkKGRldl9wcml2KTsKIAlpOTE1X2dlbV9zdXNwZW5kKGRl dl9wcml2KTsKIAlpOTE1X2dlbV9zdXNwZW5kX2xhdGUoZGV2X3ByaXYpOwogCkBAIC00NjYzLDYg KzQ2NDQsOCBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAKIHZvaWQgaTkxNV9nZW1fZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiB7CisJR0VNX0JVR19PTihkZXZfcHJpdi0+Z3QuYXdha2UpOworCiAJaTkxNV9nZW1f c3VzcGVuZF9sYXRlKGRldl9wcml2KTsKIAlpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShkZXZf cHJpdik7CiAKQEAgLTQ3NTcsNiArNDc0MCw4IEBAIGludCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpbnQgZXJyOwogCisJaW50ZWxf Z3RfcG1faW5pdChkZXZfcHJpdik7CisKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LmFj dGl2ZV9yaW5ncyk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC5jbG9zZWRfdm1hKTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKaW5kZXggOTA3NGViMWU4NDNmLi42N2Y4YTRhODA3YTAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaApAQCAtNzUsOSArNzUsNiBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZTsKIAogI2RlZmluZSBJOTE1X0dFTV9JRExFX1RJTUVPVVQgKEhaIC8gNSkKIAot dm9pZCBpOTE1X2dlbV9wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKLXZvaWQg aTkxNV9nZW1fdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKLQogc3RhdGlj IGlubGluZSB2b2lkIF9fdGFza2xldF9kaXNhYmxlX3N5bmNfb25jZShzdHJ1Y3QgdGFza2xldF9z dHJ1Y3QgKnQpCiB7CiAJaWYgKCFhdG9taWNfZmV0Y2hfaW5jKCZ0LT5jb3VudCkpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggM2ViMWE2NjRiNWZhLi43NmVkNzRl NzVkODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTgyNCwy NiArODI0LDYgQEAgaW50IGk5MTVfZ2VtX3ZtX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKgotbGFzdF9yZXF1ZXN0X29uX2VuZ2luZShzdHJ1Y3QgaTkxNV90aW1lbGluZSAq dGltZWxpbmUsCi0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0J c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0KLQlHRU1fQlVHX09OKHRpbWVsaW5lID09ICZlbmdp bmUtPnRpbWVsaW5lKTsKLQotCXJxID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9yYXcoJnRpbWVsaW5l LT5sYXN0X3JlcXVlc3QsCi0JCQkJICAgICAmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKLQlpZiAocnEgJiYgcnEtPmVuZ2luZS0+bWFzayAmIGVuZ2luZS0+bWFzaykgewotCQlHRU1f VFJBQ0UoImxhc3QgcmVxdWVzdCBvbiBlbmdpbmUgJXM6ICVsbHg6JWxsdVxuIiwKLQkJCSAgZW5n aW5lLT5uYW1lLCBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vKTsKLQkJR0VNX0JV R19PTihycS0+dGltZWxpbmUgIT0gdGltZWxpbmUpOwotCQlyZXR1cm4gcnE7Ci0JfQotCi0JcmV0 dXJuIE5VTEw7Ci19Ci0KIHN0cnVjdCBjb250ZXh0X2JhcnJpZXJfdGFzayB7CiAJc3RydWN0IGk5 MTVfYWN0aXZlIGJhc2U7CiAJdm9pZCAoKnRhc2spKHZvaWQgKmRhdGEpOwpAQCAtODcxLDcgKzg1 MSw2IEBAIHN0YXRpYyBpbnQgY29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsK IAlzdHJ1Y3QgY29udGV4dF9iYXJyaWVyX3Rhc2sgKmNiOwogCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwgKm5leHQ7Ci0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJaW50IGVyciA9IDA7CiAK IAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKQEAgLTg4NCw3 ICs4NjMsNiBAQCBzdGF0aWMgaW50IGNvbnRleHRfYmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCiAJaTkxNV9hY3RpdmVfaW5pdChpOTE1LCAmY2ItPmJhc2UsIGNiX3Jl dGlyZSk7CiAJaTkxNV9hY3RpdmVfYWNxdWlyZSgmY2ItPmJhc2UpOwogCi0Jd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50 cnlfc2FmZShjZSwgbmV4dCwgJmN0eC0+aHdfY29udGV4dHMsIG5vZGUpIHsKIAkJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gY2UtPmVuZ2luZTsKIAkJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnE7CkBAIC05MTQsNyArODkyLDYgQEAgc3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJfdGFz ayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQlpZiAoZXJyKQogCQkJYnJlYWs7CiAJ fQotCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwogCiAJY2ItPnRhc2sgPSBl cnIgPyBOVUxMIDogdGFzazsgLyogY2FsbGVyIG5lZWRzIHRvIHVud2luZCBpbnN0ZWFkICovCiAJ Y2ItPmRhdGEgPSBkYXRhOwpAQCAtOTI0LDU0ICs5MDEsNiBAQCBzdGF0aWMgaW50IGNvbnRleHRf YmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJcmV0dXJuIGVycjsK IH0KIAotaW50IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKLQkJCQkgICAgICBpbnRlbF9lbmdpbmVfbWFza190IG1hc2spCi17 Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCi0JR0VNX1RSQUNFKCJhd2FrZT89 JXNcbiIsIHllc25vKGk5MTUtPmd0LmF3YWtlKSk7Ci0KLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlHRU1fQlVHX09OKCFpOTE1LT5rZXJuZWxfY29udGV4 dCk7Ci0KLQkvKiBJbm9wZXJhYmxlLCBzbyBwcmVzdW1lIHRoZSBHUFUgaXMgc2FmZWx5IHBvaW50 aW5nIGludG8gdGhlIHZvaWQhICovCi0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoaTkxNSkp Ci0JCXJldHVybiAwOwotCi0JZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGk5MTUsIG1h c2ssIG1hc2spIHsKLQkJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Ci0JCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOwotCi0JCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9j b250ZXh0KTsKLQkJaWYgKElTX0VSUihycSkpCi0JCQlyZXR1cm4gUFRSX0VSUihycSk7Ci0KLQkJ LyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0ZXIgYWxsIG90aGVyIGFjdGl2aXR5ICovCi0JCWxpc3Rf Zm9yX2VhY2hfZW50cnkocmluZywgJmk5MTUtPmd0LmFjdGl2ZV9yaW5ncywgYWN0aXZlX2xpbmsp IHsKLQkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXY7Ci0KLQkJCXByZXYgPSBsYXN0X3JlcXVl c3Rfb25fZW5naW5lKHJpbmctPnRpbWVsaW5lLCBlbmdpbmUpOwotCQkJaWYgKCFwcmV2KQotCQkJ CWNvbnRpbnVlOwotCi0JCQlpZiAocHJldi0+Z2VtX2NvbnRleHQgPT0gaTkxNS0+a2VybmVsX2Nv bnRleHQpCi0JCQkJY29udGludWU7Ci0KLQkJCUdFTV9UUkFDRSgiYWRkIGJhcnJpZXIgb24gJXMg Zm9yICVsbHg6JWxsZFxuIiwKLQkJCQkgIGVuZ2luZS0+bmFtZSwKLQkJCQkgIHByZXYtPmZlbmNl LmNvbnRleHQsCi0JCQkJICBwcmV2LT5mZW5jZS5zZXFubyk7Ci0JCQlpOTE1X3N3X2ZlbmNlX2F3 YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwKLQkJCQkJCQkgJnByZXYtPnN1Ym1pdCwKLQkJ CQkJCQkgSTkxNV9GRU5DRV9HRlApOwotCQl9Ci0KLQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Ci0J fQotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgZ2V0X3BwZ3R0KHN0cnVjdCBkcm1faTkx NV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiwKIAkJICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAogCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykK QEAgLTExNjksOSArMTA5OCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogc3RhdGljIGludAogZ2VuOF9tb2RpZnlfcnBjcyhzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCiB7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjZS0+ZW5naW5lLT5pOTE1OwogCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwotCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCWludCByZXQ7CiAKIAls b2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+cGluX211dGV4KTsKQEAgLTExODUsMTQgKzExMTIsOSBA QCBnZW44X21vZGlmeV9ycGNzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVs X3NzZXUgc3NldSkKIAlpZiAoIWludGVsX2NvbnRleHRfaXNfcGlubmVkKGNlKSkKIAkJcmV0dXJu IDA7CiAKLQkvKiBTdWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVkcyB0aGUgaHcgYXdha2UuICov Ci0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwotCiAJcnEgPSBpOTE1X3Jl cXVlc3RfY3JlYXRlKGNlLT5lbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKLQlpZiAoSVNfRVJSKHJx KSkgewotCQlyZXQgPSBQVFJfRVJSKHJxKTsKLQkJZ290byBvdXRfcHV0OwotCX0KKwlpZiAoSVNf RVJSKHJxKSkKKwkJcmV0dXJuIFBUUl9FUlIocnEpOwogCiAJLyogUXVldWUgdGhpcyBzd2l0Y2gg YWZ0ZXIgYWxsIG90aGVyIGFjdGl2aXR5IGJ5IHRoaXMgY29udGV4dC4gKi8KIAlyZXQgPSBpOTE1 X2FjdGl2ZV9yZXF1ZXN0X3NldCgmY2UtPnJpbmctPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsIHJx KTsKQEAgLTEyMTYsOSArMTEzOCw2IEBAIGdlbjhfbW9kaWZ5X3JwY3Moc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLCBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQogCiBvdXRfYWRkOgogCWk5MTVfcmVx dWVzdF9hZGQocnEpOwotb3V0X3B1dDoKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKLQogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuaAppbmRleCBjZWMyNzhhYjA0ZTIuLjVhOGUwODA0OTlmYiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTQxLDEwICsxNDEsNiBAQCBpbnQgaTkxNV9n ZW1fY29udGV4dF9vcGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpOwogdm9pZCBpOTE1X2dlbV9jb250ZXh0X2Nsb3NlKHN0cnVjdCBk cm1fZmlsZSAqZmlsZSk7CiAKLWludCBpOTE1X3N3aXRjaF9jb250ZXh0KHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKTsKLWludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCi0JCQkJICAgICAgaW50ZWxfZW5naW5lX21hc2tfdCBl bmdpbmVfbWFzayk7Ci0KIHZvaWQgaTkxNV9nZW1fY29udGV4dF9yZWxlYXNlKHN0cnVjdCBrcmVm ICpjdHhfcmVmKTsKIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKIGk5MTVfZ2VtX2NvbnRleHRf Y3JlYXRlX2d2dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ldmljdC5jCmluZGV4IDA2MGY1OTAzNTQ0YS4uMGJkYjNlMDcyYmE1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKQEAgLTM2LDE1ICszNiw4IEBAIEk5MTVfU0VMRlRF U1RfREVDTEFSRShzdGF0aWMgc3RydWN0IGlndF9ldmljdF9jdGwgewogCWJvb2wgZmFpbF9pZl9i dXN5OjE7CiB9IGlndF9ldmljdF9jdGw7KQogCi1zdGF0aWMgYm9vbCBnZ3R0X2lzX2lkbGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0JcmV0dXJuICFpOTE1LT5ndC5hY3RpdmVf cmVxdWVzdHM7Ci19Ci0KIHN0YXRpYyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIHsKLQlpbnQgZXJyOwotCiAJLyoKIAkgKiBOb3QgZXZlcnl0aGluZyBpbiB0 aGUgR0dUVCBpcyB0cmFja2VkIHZpYSB2bWEgKG90aGVyd2lzZSB3ZQogCSAqIGNvdWxkIGV2aWN0 IGFzIHJlcXVpcmVkIHdpdGggbWluaW1hbCBzdGFsbGluZykgc28gd2UgYXJlIGZvcmNlZApAQCAt NTIsMTkgKzQ1LDEwIEBAIHN0YXRpYyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIAkgKiB0aGUgaG9wZXMgdGhhdCB3ZSBjYW4gdGhlbiByZW1vdmUgY29udGV4 dHMgYW5kIHRoZSBsaWtlIG9ubHkKIAkgKiBib3VuZCBieSB0aGVpciBhY3RpdmUgcmVmZXJlbmNl LgogCSAqLwotCWVyciA9IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1LCBp OTE1LT5ndC5hY3RpdmVfZW5naW5lcyk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQotCWVy ciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwKLQkJCQkgICAgIEk5MTVfV0FJVF9JTlRF UlJVUFRJQkxFIHwKLQkJCQkgICAgIEk5MTVfV0FJVF9MT0NLRUQsCi0JCQkJICAgICBNQVhfU0NI RURVTEVfVElNRU9VVCk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQotCUdFTV9CVUdfT04o IWdndHRfaXNfaWRsZShpOTE1KSk7Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGk5MTVfZ2VtX3dhaXRf Zm9yX2lkbGUoaTkxNSwKKwkJCQkgICAgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8CisJCQkJ ICAgICAgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7 CiB9CiAKIHN0YXRpYyBib29sCkBAIC0yMjIsMjQgKzIwNiwxNyBAQCBpOTE1X2dlbV9ldmljdF9z b21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJICogdXMgYSB0ZXJtaW5h dGlvbiBjb25kaXRpb24sIHdoZW4gdGhlIGxhc3QgcmV0aXJlZCBjb250ZXh0IGlzCiAJICogdGhl IGtlcm5lbCdzIHRoZXJlIGlzIG5vIG1vcmUgd2UgY2FuIGV2aWN0LgogCSAqLwotCWlmICghZ2d0 dF9pc19pZGxlKGRldl9wcml2KSkgewotCQlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKGlndF9ldmlj dF9jdGwuZmFpbF9pZl9idXN5KSkKLQkJCXJldHVybiAtRUJVU1k7CisJaWYgKEk5MTVfU0VMRlRF U1RfT05MWShpZ3RfZXZpY3RfY3RsLmZhaWxfaWZfYnVzeSkpCisJCXJldHVybiAtRUJVU1k7CiAK LQkJcmV0ID0gZ2d0dF9mbHVzaChkZXZfcHJpdik7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0 OworCXJldCA9IGdndHRfZmx1c2goZGV2X3ByaXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CiAKLQkJY29uZF9yZXNjaGVkKCk7Ci0JCWdvdG8gc2VhcmNoX2FnYWluOwotCX0KKwljb25kX3Jl c2NoZWQoKTsKIAotCS8qCi0JICogSWYgd2Ugc3RpbGwgaGF2ZSBwZW5kaW5nIHBhZ2VmbGlwIGNv bXBsZXRpb25zLCBkcm9wCi0JICogYmFjayB0byB1c2Vyc3BhY2UgdG8gZ2l2ZSBvdXIgd29ya3F1 ZXVlcyB0aW1lIHRvCi0JICogYWNxdWlyZSBvdXIgbG9ja3MgYW5kIHVucGluIHRoZSBvbGQgc2Nh bm91dHMuCi0JICovCi0JcmV0dXJuIGludGVsX2hhc19wZW5kaW5nX2ZiX3VucGluKGRldl9wcml2 KSA/IC1FQUdBSU4gOiAtRU5PU1BDOworCWZsYWdzIHw9IFBJTl9OT05CTE9DSzsKKwlnb3RvIHNl YXJjaF9hZ2FpbjsKIAogZm91bmQ6CiAJLyogZHJtX21tIGRvZXNuJ3QgYWxsb3cgYW55IG90aGVy IG90aGVyIG9wZXJhdGlvbnMgd2hpbGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9wbS5jCmluZGV4 IDlmYjBlOGQ1NjdhMi4uMzU1NGQ1NWRhZTM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Bt LmMKQEAgLTQsMTM2ICs0LDYzIEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3Jh dGlvbgogICovCiAKKyNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgorCiAjaW5jbHVkZSAiaTkx NV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9wbS5oIgogI2luY2x1ZGUgImk5MTVfZ2xvYmFs cy5oIgotI2luY2x1ZGUgImludGVsX3BtLmgiCiAKLXN0YXRpYyB2b2lkIF9faTkxNV9nZW1fcGFy ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3Bh cmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Ci0KLQlHRU1fVFJBQ0UoIlxuIik7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JR0VNX0JVR19PTihpOTE1LT5ndC5hY3RpdmVfcmVx dWVzdHMpOwotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmk5MTUtPmd0LmFjdGl2ZV9yaW5ncykp OwotCi0JaWYgKCFpOTE1LT5ndC5hd2FrZSkKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBCZSBwYXJh bm9pZCBhbmQgZmx1c2ggYSBjb25jdXJyZW50IGludGVycnVwdCB0byBtYWtlIHN1cmUKLQkgKiB3 ZSBkb24ndCByZWFjdGl2YXRlIGFueSBpcnEgdGFza2xldHMgYWZ0ZXIgcGFya2luZy4KLQkgKgot CSAqIEZJWE1FOiBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggd2UgaGF2ZSB3YWl0ZWQgZm9yIGV4ZWNs aXN0cyB0byBiZSBpZGxlLAotCSAqIHRoZXJlIG1heSBzdGlsbCBiZSBhbiBpbi1mbGlnaHQgaW50 ZXJydXB0IGV2ZW4gdGhvdWdoIHRoZSBDU0IKLQkgKiBpcyBub3cgZW1wdHkuIHN5bmNocm9uaXpl X2lycSgpIG1ha2VzIHN1cmUgdGhhdCBhIHJlc2lkdWFsIGludGVycnVwdAotCSAqIGlzIGNvbXBs ZXRlZCBiZWZvcmUgd2UgY29udGludWUsIGJ1dCBpdCBkb2Vzbid0IHByZXZlbnQgdGhlIEhXIGZy b20KLQkgKiByYWlzaW5nIGEgc3B1cmlvdXMgaW50ZXJydXB0IGxhdGVyLiBUbyBjb21wbGV0ZSB0 aGUgc2hpZWxkIHdlIHNob3VsZAotCSAqIGNvb3JkaW5hdGUgZGlzYWJsaW5nIHRoZSBDUyBpcnEg d2l0aCBmbHVzaGluZyB0aGUgaW50ZXJydXB0cy4KLQkgKi8KLQlzeW5jaHJvbml6ZV9pcnEoaTkx NS0+ZHJtLmlycSk7Ci0KLQlpbnRlbF9lbmdpbmVzX3BhcmsoaTkxNSk7Ci0JaTkxNV90aW1lbGlu ZXNfcGFyayhpOTE1KTsKLQotCWk5MTVfcG11X2d0X3BhcmtlZChpOTE1KTsKLQlpOTE1X3ZtYV9w YXJrZWQoaTkxNSk7Ci0KLQl3YWtlcmVmID0gZmV0Y2hfYW5kX3plcm8oJmk5MTUtPmd0LmF3YWtl KTsKLQlHRU1fQlVHX09OKCF3YWtlcmVmKTsKLQotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikK LQkJZ2VuNl9ycHNfaWRsZShpOTE1KTsKLQotCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGk5MTUs IFBPV0VSX0RPTUFJTl9HVF9JUlEsIHdha2VyZWYpOwotCi0JaTkxNV9nbG9iYWxzX3BhcmsoKTsK LX0KLQotc3RhdGljIGJvb2wgc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCi0JCQkJCSAgdW5zaWduZWQgbG9uZyBtYXNrKQotewotCWJv b2wgcmVzdWx0ID0gdHJ1ZTsKLQotCS8qCi0JICogRXZlbiBpZiB3ZSBmYWlsIHRvIHN3aXRjaCwg Z2l2ZSB3aGF0ZXZlciBpcyBydW5uaW5nIGEgc21hbGwgY2hhbmNlCi0JICogdG8gc2F2ZSBpdHNl bGYgYmVmb3JlIHdlIHJlcG9ydCB0aGUgZmFpbHVyZS4gWWVzLCB0aGlzIG1heSBiZSBhCi0JICog ZmFsc2UgcG9zaXRpdmUgZHVlIHRvIGUuZy4gRU5PTUVNLCBjYXZlYXQgZW1wdG9yIQotCSAqLwot CWlmIChpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSwgbWFzaykpCi0JCXJl c3VsdCA9IGZhbHNlOwogCi0JaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwKLQkJCQkg ICBJOTE1X1dBSVRfTE9DS0VEIHwKLQkJCQkgICBJOTE1X1dBSVRfRk9SX0lETEVfQk9PU1QsCi0J CQkJICAgSTkxNV9HRU1fSURMRV9USU1FT1VUKSkKLQkJcmVzdWx0ID0gZmFsc2U7CisJZm9yX2Vh Y2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJLyoKKwkJICogV2UgYXJlIGNvbW1pdHRl ZCBub3cgdG8gcGFya2luZyB0aGUgZW5naW5lcywgbWFrZSBzdXJlIHRoZXJlCisJCSAqIHdpbGwg YmUgbm8gbW9yZSBpbnRlcnJ1cHRzIGFycml2aW5nIGxhdGVyIGFuZCB0aGUgZW5naW5lcworCQkg KiBhcmUgdHJ1bHkgaWRsZS4KKwkJICovCisJCWlmICh3YWl0X2ZvcihpbnRlbF9lbmdpbmVfaXNf aWRsZShlbmdpbmUpLCAxMCkpIHsKKwkJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2RlYnVn X3ByaW50ZXIoX19mdW5jX18pOwogCi0JaWYgKCFyZXN1bHQpIHsKLQkJaWYgKGk5MTVfbW9kcGFy YW1zLnJlc2V0KSB7IC8qIFhYWCBoaWRlIHdhcm5pbmcgZnJvbSBnZW1fZWlvICovCiAJCQlkZXZf ZXJyKGk5MTUtPmRybS5kZXYsCi0JCQkJIkZhaWxlZCB0byBpZGxlIGVuZ2luZXMsIGRlY2xhcmlu ZyB3ZWRnZWQhXG4iKTsKLQkJCUdFTV9UUkFDRV9EVU1QKCk7CisJCQkJIiVzIGlzIG5vdCBpZGxl IGJlZm9yZSBwYXJraW5nXG4iLAorCQkJCWVuZ2luZS0+bmFtZSk7CisJCQlpbnRlbF9lbmdpbmVf ZHVtcChlbmdpbmUsICZwLCBOVUxMKTsKIAkJfQorCQl0YXNrbGV0X2tpbGwoJmVuZ2luZS0+ZXhl Y2xpc3RzLnRhc2tsZXQpOwogCi0JCS8qIEZvcmNpYmx5IGNhbmNlbCBvdXRzdGFuZGluZyB3b3Jr IGFuZCBsZWF2ZSB0aGUgZ3B1IHF1aWV0LiAqLwotCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUp OworCQlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2luZS0+YmF0Y2hfcG9vbCk7CiAJfQog Ci0JaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7IC8qIGVuc3VyZSB3ZSBmbHVzaCBhZnRlciB3 ZWRnaW5nICovCi0JcmV0dXJuIHJlc3VsdDsKKwlpOTE1X3RpbWVsaW5lc19wYXJrKGk5MTUpOwor CWk5MTVfdm1hX3BhcmtlZChpOTE1KTsKKworCWk5MTVfZ2xvYmFsc19wYXJrKCk7CiB9CiAKIHN0 YXRpYyB2b2lkIGlkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCB0 eXBlb2YoKmk5MTUpLCBnZW0uaWRsZV93b3JrLndvcmspOwotCWJvb2wgcmVhcm1faGFuZ2NoZWNr OwotCi0JaWYgKCFSRUFEX09OQ0UoaTkxNS0+Z3QuYXdha2UpKQotCQlyZXR1cm47Ci0KLQlpZiAo UkVBRF9PTkNFKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykpCi0JCXJldHVybjsKLQotCXJlYXJt X2hhbmdjaGVjayA9Ci0JCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3B1X2Vycm9y LmhhbmdjaGVja193b3JrKTsKIAogCWlmICghbXV0ZXhfdHJ5bG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCkpIHsKIAkJLyogQ3VycmVudGx5IGJ1c3ksIGNvbWUgYmFjayBsYXRlciAqLwogCQlt b2RfZGVsYXllZF93b3JrKGk5MTUtPndxLAogCQkJCSAmaTkxNS0+Z2VtLmlkbGVfd29yaywKIAkJ CQkgbXNlY3NfdG9famlmZmllcyg1MCkpOwotCQlnb3RvIG91dF9yZWFybTsKKwkJcmV0dXJuOwog CX0KIAotCS8qCi0JICogRmx1c2ggb3V0IHRoZSBsYXN0IHVzZXIgY29udGV4dCwgbGVhdmluZyBv bmx5IHRoZSBwaW5uZWQKLQkgKiBrZXJuZWwgY29udGV4dCByZXNpZGVudC4gU2hvdWxkIGFueXRo aW5nIHVuZm9ydHVuYXRlIGhhcHBlbgotCSAqIHdoaWxlIHdlIGFyZSBpZGxlIChzdWNoIGFzIHRo ZSBHUFUgYmVpbmcgcG93ZXIgY3ljbGVkKSwgbm8gdXNlcnMKLQkgKiB3aWxsIGJlIGhhcm1lZC4K LQkgKi8KLQlpZiAoIXdvcmtfcGVuZGluZygmaTkxNS0+Z2VtLmlkbGVfd29yay53b3JrKSAmJgot CSAgICAhaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7Ci0JCSsraTkxNS0+Z3QuYWN0aXZlX3Jl cXVlc3RzOyAvKiBkb24ndCByZXF1ZXVlIGlkbGUgKi8KLQotCQlzd2l0Y2hfdG9fa2VybmVsX2Nv bnRleHRfc3luYyhpOTE1LCBpOTE1LT5ndC5hY3RpdmVfZW5naW5lcyk7Ci0KLQkJaWYgKCEtLWk5 MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykgewotCQkJX19pOTE1X2dlbV9wYXJrKGk5MTUpOwotCQkJ cmVhcm1faGFuZ2NoZWNrID0gZmFsc2U7Ci0JCX0KLQl9CisJaW50ZWxfd2FrZXJlZl9sb2NrKCZp OTE1LT5ndC53YWtlcmVmKTsKKwlpZiAoIWludGVsX3dha2VyZWZfYWN0aXZlKCZpOTE1LT5ndC53 YWtlcmVmKSkKKwkJaTkxNV9nZW1fcGFyayhpOTE1KTsKKwlpbnRlbF93YWtlcmVmX3VubG9jaygm aTkxNS0+Z3Qud2FrZXJlZik7CiAKIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwotCi1vdXRfcmVhcm06Ci0JaWYgKHJlYXJtX2hhbmdjaGVjaykgewotCQlHRU1fQlVHX09O KCFpOTE1LT5ndC5hd2FrZSk7Ci0JCWk5MTVfcXVldWVfaGFuZ2NoZWNrKGk5MTUpOwotCX0KIH0K IAogc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCkBAIC0xNDcsOTcgKzc0LDc2IEBAIHN0YXRpYyB2b2lkIHJldGlyZV93b3JrX2hhbmRsZXIo c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwogCX0KIAotCS8qCi0JICogS2VlcCB0aGUgcmV0aXJlIGhhbmRsZXIgcnVubmlu ZyB1bnRpbCB3ZSBhcmUgZmluYWxseSBpZGxlLgotCSAqIFdlIGRvIG5vdCBuZWVkIHRvIGRvIHRo aXMgdGVzdCB1bmRlciBsb2NraW5nIGFzIGluIHRoZSB3b3JzdC1jYXNlCi0JICogd2UgcXVldWUg dGhlIHJldGlyZSB3b3JrZXIgb25jZSB0b28gb2Z0ZW4uCi0JICovCi0JaWYgKFJFQURfT05DRShp OTE1LT5ndC5hd2FrZSkpCisJaWYgKGludGVsX3dha2VyZWZfYWN0aXZlKCZpOTE1LT5ndC53YWtl cmVmKSkKIAkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndxLAogCQkJCSAgICZpOTE1LT5nZW0u cmV0aXJlX3dvcmssCiAJCQkJICAgcm91bmRfamlmZmllc191cF9yZWxhdGl2ZShIWikpOwogfQog Ci12b2lkIGk5MTVfZ2VtX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCitzdGF0 aWMgaW50IHBtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCisJCSAgICAgICB1 bnNpZ25lZCBsb25nIGFjdGlvbiwKKwkJICAgICAgIHZvaWQgKmRhdGEpCiB7Ci0JR0VNX1RSQUNF KCJcbiIpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29m KG5iLCB0eXBlb2YoKmk5MTUpLCBnZW0ucG1fbm90aWZpZXIpOwogCi0JbG9ja2RlcF9hc3NlcnRf aGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JR0VNX0JVR19PTihpOTE1LT5ndC5hY3Rp dmVfcmVxdWVzdHMpOworCXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBJTlRFTF9HVF9VTlBBUks6 CisJCWk5MTVfZ2xvYmFsc191bnBhcmsoKTsKKwkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndx LAorCQkJCSAgICZpOTE1LT5nZW0ucmV0aXJlX3dvcmssCisJCQkJICAgcm91bmRfamlmZmllc191 cF9yZWxhdGl2ZShIWikpOworCQlicmVhazsKIAotCWlmICghaTkxNS0+Z3QuYXdha2UpCi0JCXJl dHVybjsKKwljYXNlIElOVEVMX0dUX1BBUks6CisJCW1vZF9kZWxheWVkX3dvcmsoaTkxNS0+d3Es CisJCQkJICZpOTE1LT5nZW0uaWRsZV93b3JrLAorCQkJCSBtc2Vjc190b19qaWZmaWVzKDEwMCkp OworCQlicmVhazsKKwl9CiAKLQkvKiBEZWZlciB0aGUgYWN0dWFsIGNhbGwgdG8gX19pOTE1X2dl bV9wYXJrKCkgdG8gcHJldmVudCBwaW5nLXBvbmdzICovCi0JbW9kX2RlbGF5ZWRfd29yayhpOTE1 LT53cSwgJmk5MTUtPmdlbS5pZGxlX3dvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7CisJcmV0 dXJuIE5PVElGWV9PSzsKIH0KIAotdm9pZCBpOTE1X2dlbV91bnBhcmsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCitzdGF0aWMgYm9vbCBzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHRfc3lu YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlHRU1fVFJBQ0UoIlxuIik7Ci0K LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlHRU1fQlVH X09OKCFpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwotCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVs ZChpOTE1KTsKLQotCWlmIChpOTE1LT5ndC5hd2FrZSkKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBJ dCBzZWVtcyB0aGF0IHRoZSBETUMgbGlrZXMgdG8gdHJhbnNpdGlvbiBiZXR3ZWVuIHRoZSBEQyBz dGF0ZXMgYSBsb3QKLQkgKiB3aGVuIHRoZXJlIGFyZSBubyBjb25uZWN0ZWQgZGlzcGxheXMgKG5v IGFjdGl2ZSBwb3dlciBkb21haW5zKSBkdXJpbmcKLQkgKiBjb21tYW5kIHN1Ym1pc3Npb24uCi0J ICoKLQkgKiBUaGlzIGFjdGl2aXR5IGhhcyBuZWdhdGl2ZSBpbXBhY3Qgb24gdGhlIHBlcmZvcm1h bmNlIG9mIHRoZSBjaGlwIHdpdGgKLQkgKiBodWdlIGxhdGVuY2llcyBvYnNlcnZlZCBpbiB0aGUg aW50ZXJydXB0IGhhbmRsZXIgYW5kIGVsc2V3aGVyZS4KLQkgKgotCSAqIFdvcmsgYXJvdW5kIGl0 IGJ5IGdyYWJiaW5nIGEgR1QgSVJRIHBvd2VyIGRvbWFpbiB3aGlsc3QgdGhlcmUgaXMgYW55Ci0J ICogR1QgYWN0aXZpdHksIHByZXZlbnRpbmcgYW55IERDIHN0YXRlIHRyYW5zaXRpb25zLgotCSAq LwotCWk5MTUtPmd0LmF3YWtlID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoaTkxNSwgUE9XRVJf RE9NQUlOX0dUX0lSUSk7Ci0JR0VNX0JVR19PTighaTkxNS0+Z3QuYXdha2UpOwotCi0JaTkxNV9n bG9iYWxzX3VucGFyaygpOwotCi0JaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShpOTE1KTsKLQlp OTE1X3VwZGF0ZV9nZnhfdmFsKGk5MTUpOwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKLQkJ Z2VuNl9ycHNfYnVzeShpOTE1KTsKLQlpOTE1X3BtdV9ndF91bnBhcmtlZChpOTE1KTsKLQotCWlu dGVsX2VuZ2luZXNfdW5wYXJrKGk5MTUpOworCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKIAotCWk5MTVf cXVldWVfaGFuZ2NoZWNrKGk5MTUpOworCWRvIHsKKwkJaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lk bGUoaTkxNSwKKwkJCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCB8CisJCQkJCSAgIEk5MTVfV0FJVF9G T1JfSURMRV9CT09TVCwKKwkJCQkJICAgSTkxNV9HRU1fSURMRV9USU1FT1VUKSA9PSAtRVRJTUUp IHsKKwkJCS8qIFhYWCBoaWRlIHdhcm5pbmcgZnJvbSBnZW1fZWlvICovCisJCQlpZiAoaTkxNV9t b2RwYXJhbXMucmVzZXQpIHsKKwkJCQlkZXZfZXJyKGk5MTUtPmRybS5kZXYsCisJCQkJCSJGYWls ZWQgdG8gaWRsZSBlbmdpbmVzLCBkZWNsYXJpbmcgd2VkZ2VkIVxuIik7CisJCQkJR0VNX1RSQUNF X0RVTVAoKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEZvcmNpYmx5IGNhbmNlbCBvdXRzdGFuZGlu ZyB3b3JrIGFuZCBsZWF2ZQorCQkJICogdGhlIGdwdSBxdWlldC4KKwkJCSAqLworCQkJaTkxNV9n ZW1fc2V0X3dlZGdlZChpOTE1KTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisJfSB3aGlsZSAo aTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSkgJiYgcmVzdWx0KTsKIAotCXF1ZXVlX2RlbGF5ZWRf d29yayhpOTE1LT53cSwKLQkJCSAgICZpOTE1LT5nZW0ucmV0aXJlX3dvcmssCi0JCQkgICByb3Vu ZF9qaWZmaWVzX3VwX3JlbGF0aXZlKEhaKSk7CisJR0VNX0JVR19PTihpOTE1LT5ndC5hd2FrZSk7 CisJcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBpOTE1X2dlbV9sb2FkX3Bvd2VyX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JLyogRm9yY2UgbG9hZGluZyB0aGUg a2VybmVsIGNvbnRleHQgb24gYWxsIGVuZ2luZXMgKi8KLQlpZiAoIXN3aXRjaF90b19rZXJuZWxf Y29udGV4dF9zeW5jKGk5MTUsIEFMTF9FTkdJTkVTKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyoK LQkgKiBJbW1lZGlhdGVseSBwYXJrIHRoZSBHUFUgc28gdGhhdCB3ZSBlbmFibGUgcG93ZXJzYXZp bmcgYW5kCi0JICogdHJlYXQgaXQgYXMgaWRsZS4gVGhlIG5leHQgdGltZSB3ZSBpc3N1ZSBhIHJl cXVlc3QsIHdlIHdpbGwKLQkgKiB1bnBhcmsgYW5kIHN0YXJ0IHVzaW5nIHRoZSBlbmdpbmUtPnBp bm5lZF9kZWZhdWx0X3N0YXRlLCBvdGhlcndpc2UKLQkgKiBpdCBpcyBpbiBsaW1ibyBhbmQgYW4g ZWFybHkgcmVzZXQgbWF5IGZhaWwuCi0JICovCi0JX19pOTE1X2dlbV9wYXJrKGk5MTUpOwotCi0J cmV0dXJuIHRydWU7CisJcmV0dXJuIHN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKGk5MTUp OwogfQogCiB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiB7Ci0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Ci0KIAlHRU1fVFJBQ0UoIlxuIik7CiAK LQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisJZmx1c2hfd29ya3F1ZXVl KGk5MTUtPndxKTsKIAogCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCkBA IC0yNTAsMTAgKzE1NiwxNiBAQCB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiAJICogc3RhdGUuIEZvcnR1bmF0ZWx5LCB0aGUga2VybmVsX2NvbnRl eHQgaXMgZGlzcG9zYWJsZSBhbmQgd2UgZG8KIAkgKiBub3QgcmVseSBvbiBpdHMgc3RhdGUuCiAJ ICovCi0Jc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoaTkxNSwgaTkxNS0+Z3QuYWN0aXZl X2VuZ2luZXMpOworCXN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKGk5MTUpOwogCiAJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlpOTE1X3Jlc2V0X2ZsdXNoKGk5 MTUpOworCisJLyoKKwkgKiBBc3NlcnQgdGhhdCB3ZSBzdWNjZXNzZnVsbHkgZmx1c2hlZCBhbGwg dGhlIHdvcmsgYW5kCisJICogcmVzZXQgdGhlIEdQVSBiYWNrIHRvIGl0cyBpZGxlLCBsb3cgcG93 ZXIgc3RhdGUuCisJICovCisJR0VNX0JVR19PTihpOTE1LT5ndC5hd2FrZSk7CisJY2FuY2VsX2Rl bGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmspOwogCiAJZHJh aW5fZGVsYXllZF93b3JrKCZpOTE1LT5nZW0ucmV0aXJlX3dvcmspOwogCkBAIC0yNjMsMTcgKzE3 NSw5IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAkgKi8KIAlkcmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwogCi0J Zmx1c2hfd29ya3F1ZXVlKGk5MTUtPndxKTsKLQotCS8qCi0JICogQXNzZXJ0IHRoYXQgd2Ugc3Vj Y2Vzc2Z1bGx5IGZsdXNoZWQgYWxsIHRoZSB3b3JrIGFuZAotCSAqIHJlc2V0IHRoZSBHUFUgYmFj ayB0byBpdHMgaWRsZSwgbG93IHBvd2VyIHN0YXRlLgotCSAqLwotCUdFTV9CVUdfT04oaTkxNS0+ Z3QuYXdha2UpOworCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkxNSk7CiAKIAlpbnRl bF91Y19zdXNwZW5kKGk5MTUpOwotCi0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJl Zik7CiB9CiAKIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQpAQCAtMzYyLDQgKzI2Niw4IEBAIHZvaWQgaTkxNV9nZW1faW5pdF9fcG0oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJSU5JVF9ERUxBWUVEX1dPUksoJmk5MTUt PmdlbS5pZGxlX3dvcmssIGlkbGVfd29ya19oYW5kbGVyKTsKIAlJTklUX0RFTEFZRURfV09SSygm aTkxNS0+Z2VtLnJldGlyZV93b3JrLCByZXRpcmVfd29ya19oYW5kbGVyKTsKKworCWk5MTUtPmdl bS5wbV9ub3RpZmllci5ub3RpZmllcl9jYWxsID0gcG1fbm90aWZpZXI7CisJYmxvY2tpbmdfbm90 aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJmk5MTUtPmd0LnBtX25vdGlmaWNhdGlvbnMsCisJCQkJCSAm aTkxNS0+Z2VtLnBtX25vdGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9wbS5oCmlu ZGV4IDUyZjY1ZTNmMDZiNS4uNmY3ZDVkMTFhYzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9wbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3BtLmgKQEAgLTE3LDkgKzE3LDYgQEAgdm9pZCBpOTE1X2dlbV9pbml0X19wbShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiBib29sIGk5MTVfZ2VtX2xvYWRfcG93ZXJfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKLXZvaWQgaTkxNV9nZW1fdW5wYXJrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKLXZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSk7Ci0KIHZvaWQgaTkxNV9nZW1faWRsZV93b3JrX2hhbmRsZXIo c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKIAogdm9pZCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5oCmluZGV4IGI0MTlkMGY1OTI3NS4uMmVjZDBjNmExYzk0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmgKQEAgLTE3OSw4ICsxNzksNiBAQCBzdHJ1Y3QgaTkxNV9ncHVfc3Rh dGUgewogCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCAqZml0OwogfTsKIAotc3RydWN0IGk5MTVf Z3B1X3Jlc3RhcnQ7Ci0KIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAJLyogRm9yIGhhbmdjaGVj ayB0aW1lciAqLwogI2RlZmluZSBEUk1fSTkxNV9IQU5HQ0hFQ0tfUEVSSU9EIDE1MDAgLyogaW4g bXMgKi8KQEAgLTI0MSw4ICsyMzksNiBAQCBzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgewogCXdhaXRf cXVldWVfaGVhZF90IHJlc2V0X3F1ZXVlOwogCiAJc3RydWN0IHNyY3Vfc3RydWN0IHJlc2V0X2Jh Y2tvZmZfc3JjdTsKLQotCXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICpyZXN0YXJ0OwogfTsKIAog c3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jCmluZGV4IDcwNWMxMjViYWZjNi4uMTFjNDg0ZTY3OWI2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuYwpAQCAtNDMwLDYgKzQzMCw4IEBAIHZvaWQgX19pOTE1X3JlcXVlc3Rf c3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCiAJLyogVHJhbnNmZXIgZnJvbSBw ZXItY29udGV4dCBvbnRvIHRoZSBnbG9iYWwgcGVyLWVuZ2luZSB0aW1lbGluZSAqLwogCW1vdmVf dG9fdGltZWxpbmUocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUpOwogCisJZW5naW5lLT5zZXJp YWwrKzsKKwogCXRyYWNlX2k5MTVfcmVxdWVzdF9leGVjdXRlKHJlcXVlc3QpOwogfQogCkBAIC0x MTQ1LDcgKzExNDcsNiBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpfX2k5MTVfcmVxdWVzdF9jb21t aXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJbGlzdF9hZGRfdGFpbCgmcnEtPnJpbmdfbGlu aywgJnJpbmctPnJlcXVlc3RfbGlzdCk7CiAJaWYgKGxpc3RfaXNfZmlyc3QoJnJxLT5yaW5nX2xp bmssICZyaW5nLT5yZXF1ZXN0X2xpc3QpKQogCQlsaXN0X2FkZCgmcmluZy0+YWN0aXZlX2xpbmss ICZycS0+aTkxNS0+Z3QuYWN0aXZlX3JpbmdzKTsKLQlycS0+aTkxNS0+Z3QuYWN0aXZlX2VuZ2lu ZXMgfD0gcnEtPmVuZ2luZS0+bWFzazsKIAlycS0+ZW1pdHRlZF9qaWZmaWVzID0gamlmZmllczsK IAogCS8qCkBAIC0xNDQwLDIxICsxNDQxLDIwIEBAIGxvbmcgaTkxNV9yZXF1ZXN0X3dhaXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJcmV0dXJuIHRpbWVvdXQ7CiB9CiAKLXZvaWQgaTkxNV9y ZXRpcmVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCitib29sIGk5MTVf cmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nLCAqdG1wOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlpZiAoIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykKLQkJ cmV0dXJuOwotCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpbmcsIHRtcCwKIAkJCQkgJmk5 MTUtPmd0LmFjdGl2ZV9yaW5ncywgYWN0aXZlX2xpbmspIHsKIAkJaW50ZWxfcmluZ19nZXQocmlu Zyk7IC8qIGxhc3QgcnEgaG9sZHMgcmVmZXJlbmNlISAqLwogCQlyaW5nX3JldGlyZV9yZXF1ZXN0 cyhyaW5nKTsKIAkJaW50ZWxfcmluZ19wdXQocmluZyk7CiAJfQorCisJcmV0dXJuICFsaXN0X2Vt cHR5KCZpOTE1LT5ndC5hY3RpdmVfcmluZ3MpOwogfQogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdf RFJNX0k5MTVfU0VMRlRFU1QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCmluZGV4IDM2 ZjEzYjc0ZWM1OC4uMWVlZTc0MTZhZjMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu aApAQCAtNDI1LDYgKzQyNSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3JlcXVlc3RfbWFy a19jb21wbGV0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlycS0+aHdzcF9zZXFubyA9ICh1 MzIgKikmcnEtPmZlbmNlLnNlcW5vOyAvKiBkZWNvdXBsZSBmcm9tIEhXU1AgKi8KIH0KIAotdm9p ZCBpOTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Citi b29sIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsK IAogI2VuZGlmIC8qIEk5MTVfUkVRVUVTVF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwppbmRl eCAzMGE4ZTM3NmQxOWYuLjAxZWEzNmUzMTUwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCkBA IC00ODEsMjYgKzQ4MSwyMiBAQCB2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaW50ZWxfdWNfc2FuaXRpemUoaTkxNSk7CiB9CiAKLWlu dCBpbnRlbF91Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQordm9pZCBp bnRlbF91Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0cnVj dCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndWM7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 CiAJaW50IGVycjsKIAotCWlmICghVVNFU19HVUMoaTkxNSkpCi0JCXJldHVybiAwOwotCiAJaWYg KGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKLQkJcmV0 dXJuIDA7Ci0KLQllcnIgPSBpbnRlbF9ndWNfc3VzcGVuZChndWMpOwotCWlmIChlcnIpIHsKLQkJ RFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHN1c3BlbmQgR3VDLCBlcnI9JWQiLCBlcnIpOwot CQlyZXR1cm4gZXJyOwotCX0KKwkJcmV0dXJuOwogCi0JZ3VjX2Rpc2FibGVfY29tbXVuaWNhdGlv bihndWMpOworCXdpdGhfaW50ZWxfcnVudGltZV9wbShpOTE1LCB3YWtlcmVmKSB7CisJCWVyciA9 IGludGVsX2d1Y19zdXNwZW5kKGd1Yyk7CisJCWlmIChlcnIpCisJCQlEUk1fREVCVUdfRFJJVkVS KCJGYWlsZWQgdG8gc3VzcGVuZCBHdUMsIGVycj0lZCIsIGVycik7CiAKLQlyZXR1cm4gMDsKKwkJ Z3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbihndWMpOworCX0KIH0KIAogaW50IGludGVsX3VjX3Jl c3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5o CmluZGV4IGMxNDcyOTc4NjY1Mi4uYzkyNDM2YjFmMWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vj LmgKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBpbnRlbF91Y19maW5pX2h3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgaW50ZWxfdWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF91Y19maW5pKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpOwotaW50IGludGVsX3VjX3N1c3BlbmQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiBpbnQgaW50ZWxfdWNfcmVzdW1lKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19pc191 c2luZ19ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCmluZGV4IDZmZDcwZDMyNjQ2OC4uMDM0MmRlMzY5ZDNl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYwpAQCAtMTYsMjYg KzE2LDE4IEBAIHN0YXRpYyBpbnQgc3dpdGNoX3RvX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwotCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwotCWludCBlcnIg PSAwOwotCi0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCiAJZm9yX2Vh Y2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7 CiAKIAkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwotCQlpZiAoSVNfRVJS KHJxKSkgewotCQkJZXJyID0gUFRSX0VSUihycSk7Ci0JCQlicmVhazsKLQkJfQorCQlpZiAoSVNf RVJSKHJxKSkKKwkJCXJldHVybiBQVFJfRVJSKHJxKTsKIAogCQlpOTE1X3JlcXVlc3RfYWRkKHJx KTsKIAl9CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKLQotCXJldHVy biBlcnI7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIHRyYXNoX3N0b2xlbihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTEyMCw3ICsxMTIsNyBAQCBzdGF0aWMgdm9pZCBw bV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJICogdGhhdCBydW50aW1l LXBtIGp1c3Qgd29ya3MuCiAJICovCiAJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2Vy ZWYpIHsKLQkJaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1LCBmYWxzZSk7CisJCWludGVsX2d0 X3Nhbml0aXplKGk5MTUsIGZhbHNlKTsKIAkJaTkxNV9nZW1fc2FuaXRpemUoaTkxNSk7CiAJCWk5 MTVfZ2VtX3Jlc3VtZShpOTE1KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA5ZDY0NmZhMWI3NGUuLjcxZDg5NmJiYWRl MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29u dGV4dC5jCkBAIC0xNjA4LDExMyArMTYwOCw2IEBAIF9fZW5naW5lX25hbWUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsIGludGVsX2VuZ2luZV9tYXNrX3QgZW5naW5lcykKIAlyZXR1cm4g Im5vbmUiOwogfQogCi1zdGF0aWMgaW50IF9faWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKLQkJCQkJICBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAotCQkJCQkgIGludGVsX2VuZ2luZV9tYXNrX3QgZW5naW5lcykKLXsKLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JaW50ZWxfZW5naW5lX21hc2tfdCB0bXA7Ci0J aW50IHBhc3M7Ci0KLQlHRU1fVFJBQ0UoIlRlc3RpbmcgJXNcbiIsIF9fZW5naW5lX25hbWUoaTkx NSwgZW5naW5lcykpOwotCWZvciAocGFzcyA9IDA7IHBhc3MgPCA0OyBwYXNzKyspIHsgLyogT25j ZSBidXN5OyBvbmNlIGlkbGU7IHJlcGVhdCAqLwotCQlib29sIGZyb21faWRsZSA9IHBhc3MgJiAx OwotCQlpbnQgZXJyOwotCi0JCWlmICghZnJvbV9pZGxlKSB7Ci0JCQlmb3JfZWFjaF9lbmdpbmVf bWFza2VkKGVuZ2luZSwgaTkxNSwgZW5naW5lcywgdG1wKSB7Ci0JCQkJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7Ci0KLQkJCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Ci0J CQkJaWYgKElTX0VSUihycSkpCi0JCQkJCXJldHVybiBQVFJfRVJSKHJxKTsKLQotCQkJCWk5MTVf cmVxdWVzdF9hZGQocnEpOwotCQkJfQotCQl9Ci0KLQkJZXJyID0gaTkxNV9nZW1fc3dpdGNoX3Rv X2tlcm5lbF9jb250ZXh0KGk5MTUsCi0JCQkJCQkJaTkxNS0+Z3QuYWN0aXZlX2VuZ2luZXMpOwot CQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQotCQlpZiAoIWZyb21faWRsZSkgewotCQkJZXJy ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAotCQkJCQkJICAgICBJOTE1X1dBSVRfTE9D S0VELAotCQkJCQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Ci0JCQlpZiAoZXJyKQotCQkJ CXJldHVybiBlcnI7Ci0JCX0KLQotCQlpZiAoaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7Ci0J CQlwcl9lcnIoIiVkIGFjdGl2ZSByZXF1ZXN0cyByZW1haW4gYWZ0ZXIgc3dpdGNoaW5nIHRvIGtl cm5lbCBjb250ZXh0LCBwYXNzICVkICglcykgb24gJXMgZW5naW5lJXNcbiIsCi0JCQkgICAgICAg aTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzLAotCQkJICAgICAgIHBhc3MsIGZyb21faWRsZSA/ICJp ZGxlIiA6ICJidXN5IiwKLQkJCSAgICAgICBfX2VuZ2luZV9uYW1lKGk5MTUsIGVuZ2luZXMpLAot CQkJICAgICAgIGlzX3Bvd2VyX29mXzIoZW5naW5lcykgPyAiIiA6ICJzIik7Ci0JCQlyZXR1cm4g LUVJTlZBTDsKLQkJfQotCi0JCS8qIFhYWCBCb251cyBwb2ludHMgZm9yIHByb3Zpbmcgd2UgYXJl IHRoZSBrZXJuZWwgY29udGV4dCEgKi8KLQotCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwotCQlkcmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwot CQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQl9Ci0KLQlpZiAoaWd0X2Zs dXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCi0JCXJldHVybiAtRUlPOwotCi0JcmV0 dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgaWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dCh2b2lk ICphcmcpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Ci0Jc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7 Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Ci0J aW50IGVycjsKLQotCS8qCi0JICogQSBjb3JlIHByZW1pc2Ugb2Ygc3dpdGNoaW5nIHRvIHRoZSBr ZXJuZWwgY29udGV4dCBpcyB0aGF0Ci0JICogaWYgYW4gZW5naW5lIGlzIGFscmVhZHkgaWRsaW5n IGluIHRoZSBrZXJuZWwgY29udGV4dCwgd2UKLQkgKiBkbyBub3QgZW1pdCBhbm90aGVyIHJlcXVl c3QgYW5kIHdha2UgaXQgdXAuIFRoZSBvdGhlciBiZWluZwotCSAqIHRoYXQgd2UgZG8gaW5kZWVk IGVuZCB1cCBpZGxpbmcgaW4gdGhlIGtlcm5lbCBjb250ZXh0LgotCSAqLwotCi0JbXV0ZXhfbG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOwotCi0JY3R4ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7Ci0JaWYgKElTX0VSUihj dHgpKSB7Ci0JCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JCXJldHVy biBQVFJfRVJSKGN0eCk7Ci0JfQotCi0JLyogRmlyc3QgY2hlY2sgaWRsaW5nIGVhY2ggaW5kaXZp ZHVhbCBlbmdpbmUgKi8KLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewotCQll cnIgPSBfX2lndF9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSwgY3R4LCBCSVQoaWQpKTsK LQkJaWYgKGVycikKLQkJCWdvdG8gb3V0X3VubG9jazsKLQl9Ci0KLQkvKiBOb3cgZW4gbWFzc2Ug Ki8KLQllcnIgPSBfX2lndF9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSwgY3R4LCBBTExf RU5HSU5FUyk7Ci0JaWYgKGVycikKLQkJZ290byBvdXRfdW5sb2NrOwotCi1vdXRfdW5sb2NrOgot CUdFTV9UUkFDRV9EVU1QX09OKGVycik7Ci0KLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3 YWtlcmVmKTsKLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCi0Ja2Vy bmVsX2NvbnRleHRfY2xvc2UoY3R4KTsKLQlyZXR1cm4gZXJyOwotfQotCiBzdGF0aWMgdm9pZCBt b2NrX2JhcnJpZXJfdGFzayh2b2lkICpkYXRhKQogewogCXVuc2lnbmVkIGludCAqY291bnRlciA9 IGRhdGE7CkBAIC0xNzI5LDcgKzE2MjIsNiBAQCBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9iYXJy aWVyKHZvaWQgKmFyZykKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKIAlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwot CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXVuc2lnbmVkIGludCBjb3VudGVyOwogCWludCBl cnI7CiAKQEAgLTE3NzIsOSArMTY2NCw3IEBAIHN0YXRpYyBpbnQgbW9ja19jb250ZXh0X2JhcnJp ZXIodm9pZCAqYXJnKQogCQlnb3RvIG91dDsKIAl9CiAKLQlycSA9IEVSUl9QVFIoLUVOT0RFVik7 Ci0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpCi0JCXJxID0gaTkxNV9yZXF1 ZXN0X2FsbG9jKGk5MTUtPmVuZ2luZVtSQ1MwXSwgY3R4KTsKKwlycSA9IGk5MTVfcmVxdWVzdF9h bGxvYyhpOTE1LT5lbmdpbmVbUkNTMF0sIGN0eCk7CiAJaWYgKElTX0VSUihycSkpIHsKIAkJcHJf ZXJyKCJSZXF1ZXN0IGFsbG9jYXRpb24gZmFpbGVkIVxuIik7CiAJCWdvdG8gb3V0OwpAQCAtMTgy NCw3ICsxNzE0LDYgQEAgc3RhdGljIGludCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lkICphcmcp CiBpbnQgaTkxNV9nZW1fY29udGV4dF9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQogewogCXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7Ci0JCVNVQlRFU1QoaWd0X3N3aXRj aF90b19rZXJuZWxfY29udGV4dCksCiAJCVNVQlRFU1QobW9ja19jb250ZXh0X2JhcnJpZXIpLAog CX07CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CkBAIC0xODQzLDcgKzE3MzIsNiBA QCBpbnQgaTkxNV9nZW1fY29udGV4dF9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQogaW50IGk5MTVfZ2Vt X2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogewogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7Ci0JCVNV QlRFU1QoaWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dCksCiAJCVNVQlRFU1QobGl2ZV9ub3Bf c3dpdGNoKSwKIAkJU1VCVEVTVChpZ3RfY3R4X2V4ZWMpLAogCQlTVUJURVNUKGlndF9jdHhfcmVh ZG9ubHkpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29i amVjdC5jCmluZGV4IDEyMjAzZDY2NWE0ZS4uMDg4YjJhYTA1ZGNkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCkBAIC0yNCw2ICsyNCw3 IEBACiAKICNpbmNsdWRlICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCiAKKyNpbmNsdWRlICJpZ3RfZmx1 c2hfdGVzdC5oIgogI2luY2x1ZGUgIm1vY2tfZ2VtX2RldmljZS5oIgogI2luY2x1ZGUgImh1Z2Vf Z2VtX29iamVjdC5oIgogCkBAIC01MDUsMTkgKzUwNiwyMyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxl X3JldGlyZV93b3JrZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJaTkxNV9n ZW1fc2hyaW5rZXJfdW5yZWdpc3RlcihpOTE1KTsKIAotCW11dGV4X2xvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwotCWlmICghaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKyspIHsKLQkJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7Ci0KLQkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdh a2VyZWYpCi0JCQlpOTE1X2dlbV91bnBhcmsoaTkxNSk7Ci0JfQotCW11dGV4X3VubG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaW50ZWxfZ3RfcG1fZ2V0KGk5MTUpOwogCiAJY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5nZW0ucmV0aXJlX3dvcmspOwogCWNhbmNlbF9kZWxh eWVkX3dvcmtfc3luYygmaTkxNS0+Z2VtLmlkbGVfd29yayk7CiB9CiAKK3N0YXRpYyB2b2lkIHJl c3RvcmVfcmV0aXJlX3dvcmtlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlp bnRlbF9ndF9wbV9wdXQoaTkxNSk7CisKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKKwlpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKKwltdXRleF91 bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJaTkxNV9nZW1fc2hyaW5rZXJfcmVn aXN0ZXIoaTkxNSk7Cit9CisKIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24o dm9pZCAqYXJnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwpAQCAt NjE1LDEzICs2MjAsNyBAQCBzdGF0aWMgaW50IGlndF9tbWFwX29mZnNldF9leGhhdXN0aW9uKHZv aWQgKmFyZykKIG91dDoKIAlkcm1fbW1fcmVtb3ZlX25vZGUoJnJlc3YpOwogb3V0X3Bhcms6Ci0J bXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JaWYgKC0taTkxNS0+Z3QuYWN0 aXZlX3JlcXVlc3RzKQotCQlxdWV1ZV9kZWxheWVkX3dvcmsoaTkxNS0+d3EsICZpOTE1LT5nZW0u cmV0aXJlX3dvcmssIDApOwotCWVsc2UKLQkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndxLCAm aTkxNS0+Z2VtLmlkbGVfd29yaywgMCk7Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKLQlpOTE1X2dlbV9zaHJpbmtlcl9yZWdpc3RlcihpOTE1KTsKKwlyZXN0b3JlX3Jl dGlyZV93b3JrZXIoaTkxNSk7CiAJcmV0dXJuIGVycjsKIGVycl9vYmo6CiAJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2lndF9mbHVzaF90ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2Zs dXNoX3Rlc3QuYwppbmRleCA5NGFlZTQwNzFhNjYuLmU0MmYzYzU4NTM2YSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMKQEAgLTExLDIzICsx MSwyOSBAQAogCiBpbnQgaWd0X2ZsdXNoX3Rlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHVuc2lnbmVkIGludCBmbGFncykKIHsKKwlpbnQgcmV0ID0gaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZChpOTE1KSA/IC1FSU8gOiAwOworCWludCByZXBlYXQgPSAhIShmbGFncyAmIEk5MTVfV0FJ VF9MT0NLRUQpOworCiAJY29uZF9yZXNjaGVkKCk7CiAKLQlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRf TE9DS0VEICYmCi0JICAgIGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1LCBp OTE1LT5ndC5hY3RpdmVfZW5naW5lcykpIHsKLQkJcHJfZXJyKCJGYWlsZWQgdG8gc3dpdGNoIGJh Y2sgdG8ga2VybmVsIGNvbnRleHQ7IGRlY2xhcmluZyB3ZWRnZWRcbiIpOwotCQlpOTE1X2dlbV9z ZXRfd2VkZ2VkKGk5MTUpOwotCX0KKwlkbyB7CisJCWlmIChpOTE1X2dlbV93YWl0X2Zvcl9pZGxl KGk5MTUsIGZsYWdzLCBIWiAvIDUpID09IC1FVElNRSkgeworCQkJcHJfZXJyKCIlcFMgdGltZWQg b3V0LCBjYW5jZWxsaW5nIGFsbCBmdXJ0aGVyIHRlc3RpbmcuXG4iLAorCQkJICAgICAgIF9fYnVp bHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CiAKLQlpZiAoaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShp OTE1LCBmbGFncywgSFogLyA1KSA9PSAtRVRJTUUpIHsKLQkJcHJfZXJyKCIlcFMgdGltZWQgb3V0 LCBjYW5jZWxsaW5nIGFsbCBmdXJ0aGVyIHRlc3RpbmcuXG4iLAotCQkgICAgICAgX19idWlsdGlu X3JldHVybl9hZGRyZXNzKDApKTsKKwkJCUdFTV9UUkFDRSgiJXBTIHRpbWVkIG91dC5cbiIsCisJ CQkJICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOworCQkJR0VNX1RSQUNFX0RVTVAoKTsK IAotCQlHRU1fVFJBQ0UoIiVwUyB0aW1lZCBvdXQuXG4iLCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl c3MoMCkpOwotCQlHRU1fVFJBQ0VfRFVNUCgpOworCQkJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1 KTsKKwkJCXJlcGVhdCA9IDA7CisJCQlyZXQgPSAtRUlPOworCQl9CiAKLQkJaTkxNV9nZW1fc2V0 X3dlZGdlZChpOTE1KTsKLQl9CisJCS8qIEVuc3VyZSB3ZSBhbHNvIGZsdXNoIGFmdGVyIHdlZGdp bmcuICovCisJCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQpCisJCQlpOTE1X3JldGlyZV9y ZXF1ZXN0cyhpOTE1KTsKKwl9IHdoaWxlIChyZXBlYXQtLSk7CiAKLQlyZXR1cm4gaTkxNV90ZXJt aW5hbGx5X3dlZGdlZChpOTE1KTsKKwlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCmluZGV4IGZiNjc3YjQwMTlhMC4u YzA3MjQyNGM2YjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19nZW1fZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZ2VtX2RldmljZS5jCkBAIC00MSwxMSArNDEsMTAgQEAgdm9pZCBtb2NrX2RldmljZV9mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQo Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkx NSwgaWQpCi0JCW1vY2tfZW5naW5lX2ZsdXNoKGVuZ2luZSk7Ci0KLQlpOTE1X3JldGlyZV9yZXF1 ZXN0cyhpOTE1KTsKLQlHRU1fQlVHX09OKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7CisJZG8g eworCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKKwkJCW1vY2tfZW5naW5lX2Zs dXNoKGVuZ2luZSk7CisJfSB3aGlsZSAoaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSkpOwogfQog CiBzdGF0aWMgdm9pZCBtb2NrX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CkBAIC0xMTAsMTAgKzEwOSw2IEBAIHN0YXRpYyB2b2lkIG1vY2tfcmV0aXJlX3dvcmtfaGFuZGxl cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIHN0YXRpYyB2b2lkIG1vY2tfaWRsZV93b3Jr X2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0KLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaTkxNSksIGdlbS5p ZGxlX3dvcmsud29yayk7Ci0KLQlpOTE1LT5ndC5hY3RpdmVfZW5naW5lcyA9IDA7CiB9CiAKIHN0 YXRpYyBpbnQgcG1fZG9tYWluX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCkBAIC0xODUsNiAr MTgwLDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQog CiAJbW9ja191bmNvcmVfaW5pdCgmaTkxNS0+dW5jb3JlKTsKIAlpOTE1X2dlbV9pbml0X19tbShp OTE1KTsKKwlpbnRlbF9ndF9wbV9pbml0KGk5MTUpOworCWF0b21pY19pbmMoJmk5MTUtPmd0Lndh a2VyZWYuY291bnQpOyAvKiBkaXNhYmxlOyBubyBodyBzdXBwb3J0ICovCiAKIAlpbml0X3dhaXRx dWV1ZV9oZWFkKCZpOTE1LT5ncHVfZXJyb3Iud2FpdF9xdWV1ZSk7CiAJaW5pdF93YWl0cXVldWVf aGVhZCgmaTkxNS0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKTsKLS0gCjIuMjAuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4