From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sravanthi Kollukuduru Subject: [DPU PATCH 5/5] drm/msm/dpu: dynamic assignment of hw pipe to plane Date: Wed, 20 Jun 2018 18:20:20 +0530 Message-ID: <1529499020-8499-6-git-send-email-skolluku@codeaurora.org> References: <1529499020-8499-1-git-send-email-skolluku@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1529499020-8499-1-git-send-email-skolluku-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, Sravanthi Kollukuduru List-Id: linux-arm-msm@vger.kernel.org Q3VycmVudGx5LCB0aGVyZSBleGlzdHMgYSBzdGF0aWMgYmluZGluZyBvZiBodyBwaXBlIHRvCnBs YW5lLiBUaGlzIHJlc3RyaWN0cyB3aWRlIHBsYW5lIHN1cHBvcnQgd2hlcmUgcGxhbmUgd2lkdGgK ZXhjZWVkcyB0aGUgcGlwZSdzIG1heGltdW0gd2lkdGguClRvIGVuYWJsZSBzdWNoIHVzZSBjYXNl cywgdGhlIGh3IHBpcGVzIGFyZSBkeW5hbWljYWxseQoocmUpYWxsb2NhdGVkIHRvIGEgcGxhbmUg ZHVyaW5nIGF0b21pYyBjaGVjayBiYXNlZCBvbiB0aGUKcGxhbmUgY2FwYWJpbGl0aWVzLgoKU2ln bmVkLW9mZi1ieTogU3JhdmFudGhpIEtvbGx1a3VkdXJ1IDxza29sbHVrdUBjb2RlYXVyb3JhLm9y Zz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jICB8ICA0NSAr LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmMgfCA2NzAgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcGxhbmUuaCB8ICAgNCArLQogMyBmaWxlcyBjaGFuZ2VkLCA0MTQgaW5zZXJ0aW9ucygrKSwg MzA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5j CmluZGV4IDU2ZjY1NzYuLmFmYjhjNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuYwpAQCAtMTc1LDcgKzE3NSw4IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVu ZF9zZXR1cF9taXhlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IGRwdV9yZWN0IHBs YW5lX2NydGNfcm9pOwogCiAJdTMyIGZsdXNoX21hc2s7Ci0JdWludDMyX3Qgc3RhZ2VfaWR4LCBs bV9pZHg7CisJdWludDMyX3Qgc3RhZ2VfaWR4ID0gMCwgbG1faWR4OworCWludCBpOwogCWludCB6 cG9zX2NudFtEUFVfU1RBR0VfTUFYICsgMV0gPSB7IDAgfTsKIAlib29sIGJnX2FscGhhX2VuYWJs ZSA9IGZhbHNlOwogCkBAIC0yMDQsMTEgKzIwNSwxMSBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNf YmxlbmRfc2V0dXBfbWl4ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCWRwdV9wbGFuZV9n ZXRfY3RsX2ZsdXNoKHBsYW5lLCBjdGwsICZmbHVzaF9tYXNrKTsKIAotCQlEUFVfREVCVUcoImNy dGMgJWQgc3RhZ2U6JWQgLSBwbGFuZSAlZCBzc3BwICVkIGZiICVkXG4iLAotCQkJCWNydGMtPmJh c2UuaWQsCi0JCQkJcHN0YXRlLT5zdGFnZSwKLQkJCQlwbGFuZS0+YmFzZS5pZCwKLQkJCQlkcHVf cGxhbmVfcGlwZShwbGFuZSkgLSBTU1BQX1ZJRzAsCisJCURQVV9ERUJVRygiY3J0YyAlZCBzdGFn ZSVkOiBwbGFuZSVkIHNzcHBtb2RlJWRbJWQgJWRdIGZiJWRcbiIsCisJCQkJY3J0Yy0+YmFzZS5p ZCwgcHN0YXRlLT5zdGFnZSwKKwkJCQlwbGFuZS0+YmFzZS5pZCwgcHN0YXRlLT5udW1fcGlwZXMs CisJCQkJZHB1X3BsYW5lX3BpcGUocHN0YXRlLT5waXBlX2h3WzBdKSAtIFNTUFBfVklHMCwKKwkJ CQlkcHVfcGxhbmVfcGlwZShwc3RhdGUtPnBpcGVfaHdbMV0pIC0gU1NQUF9WSUcwLAogCQkJCXN0 YXRlLT5mYiA/IHN0YXRlLT5mYi0+YmFzZS5pZCA6IC0xKTsKIAogCQlmb3JtYXQgPSB0b19kcHVf Zm9ybWF0KG1zbV9mcmFtZWJ1ZmZlcl9mb3JtYXQocHN0YXRlLT5iYXNlLmZiKSk7CkBAIC0yMjEs MTkgKzIyMiwyNSBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCQkJYmdfYWxwaGFfZW5hYmxlID0gdHJ1ZTsKIAogCQlEUFVf RVZUMzIoRFJNSUQoY3J0YyksIERSTUlEKHBsYW5lKSwKLQkJCQlzdGF0ZS0+ZmIgPyBzdGF0ZS0+ ZmItPmJhc2UuaWQgOiAtMSwKLQkJCQlzdGF0ZS0+c3JjX3ggPj4gMTYsIHN0YXRlLT5zcmNfeSA+ PiAxNiwKLQkJCQlzdGF0ZS0+c3JjX3cgPj4gMTYsIHN0YXRlLT5zcmNfaCA+PiAxNiwKLQkJCQlz dGF0ZS0+Y3J0Y194LCBzdGF0ZS0+Y3J0Y195LAotCQkJCXN0YXRlLT5jcnRjX3csIHN0YXRlLT5j cnRjX2gpOwotCi0JCXN0YWdlX2lkeCA9IHpwb3NfY250W3BzdGF0ZS0+c3RhZ2VdKys7Ci0JCXN0 YWdlX2NmZy0+c3RhZ2VbcHN0YXRlLT5zdGFnZV1bc3RhZ2VfaWR4XSA9Ci0JCQkJCWRwdV9wbGFu ZV9waXBlKHBsYW5lKTsKLQotCQlEUFVfRVZUMzIoRFJNSUQoY3J0YyksIERSTUlEKHBsYW5lKSwg c3RhZ2VfaWR4LAotCQkJZHB1X3BsYW5lX3BpcGUocGxhbmUpIC0gU1NQUF9WSUcwLCBwc3RhdGUt PnN0YWdlLAotCQkJZm9ybWF0LT5iYXNlLnBpeGVsX2Zvcm1hdCwgZmIgPyBmYi0+bW9kaWZpZXIg OiAwKTsKKwkJCXN0YXRlLT5mYiA/IHN0YXRlLT5mYi0+YmFzZS5pZCA6IC0xLAorCQkJc3RhdGUt PnNyY194ID4+IDE2LCBzdGF0ZS0+c3JjX3kgPj4gMTYsCisJCQlzdGF0ZS0+c3JjX3cgPj4gMTYs IHN0YXRlLT5zcmNfaCA+PiAxNiwKKwkJCXN0YXRlLT5jcnRjX3gsIHN0YXRlLT5jcnRjX3ksCisJ CQlzdGF0ZS0+Y3J0Y193LCBzdGF0ZS0+Y3J0Y19oKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgcHN0 YXRlLT5udW1fcGlwZXM7IGkrKykgeworCQkJc3RhZ2VfaWR4ID0genBvc19jbnRbcHN0YXRlLT5z dGFnZV0rKzsKKwkJCWlmIChzdGFnZV9pZHggPj0gUElQRVNfUEVSX1NUQUdFKQorCQkJCWJyZWFr OworCisJCQlzdGFnZV9jZmctPnN0YWdlW3BzdGF0ZS0+c3RhZ2VdW3N0YWdlX2lkeF0gPQorCQkJ CWRwdV9wbGFuZV9waXBlKHBzdGF0ZS0+cGlwZV9od1tpXSk7CisKKwkJCURQVV9FVlQzMihEUk1J RChjcnRjKSwgRFJNSUQocGxhbmUpLCBzdGFnZV9pZHgsCisJCQkJZHB1X3BsYW5lX3BpcGUocHN0 YXRlLT5waXBlX2h3W2ldKSAtIFNTUFBfVklHMCwKKwkJCQlwc3RhdGUtPnN0YWdlLCBmb3JtYXQt PmJhc2UucGl4ZWxfZm9ybWF0LAorCQkJCWZiID8gZmItPm1vZGlmaWVyIDogMCk7CisJCX0KIAog CQkvKiBibGVuZCBjb25maWcgdXBkYXRlICovCiAJCWZvciAobG1faWR4ID0gMDsgbG1faWR4IDwg Y3N0YXRlLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfcGxhbmUuYwppbmRleCBiZTQwYTJjLi4yYzY5NjBlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfcGxhbmUuYwpAQCAtODEsNDAgKzgxLDI2IEBAIGVudW0gZHB1 X3BsYW5lX3FvcyB7CiAKIC8qCiAgKiBzdHJ1Y3QgZHB1X3BsYW5lIC0gbG9jYWwgZHB1IHBsYW5l IHN0cnVjdHVyZQotICogQGFzcGFjZTogYWRkcmVzcyBzcGFjZSBwb2ludGVyCiAgKiBAY3NjX3B0 cjogUG9pbnRzIHRvIGRwdV9jc2NfY2ZnIHN0cnVjdHVyZSB0byB1c2UgZm9yIGN1cnJlbnQKLSAq IEBjYXRhbG9nOiBQb2ludHMgdG8gZHB1IGNhdGFsb2cgc3RydWN0dXJlCi0gKiBAcmV2YWxpZGF0 ZTogZm9yY2UgcmV2YWxpZGF0aW9uIG9mIGFsbCB0aGUgcGxhbmUgcHJvcGVydGllcwogICovCiBz dHJ1Y3QgZHB1X3BsYW5lIHsKIAlzdHJ1Y3QgZHJtX3BsYW5lIGJhc2U7CiAKIAlzdHJ1Y3QgbXV0 ZXggbG9jazsKIAotCWVudW0gZHB1X3NzcHAgcGlwZTsKLQl1aW50MzJfdCBmZWF0dXJlczsgICAg ICAvKiBjYXBhYmlsaXRpZXMgZnJvbSBjYXRhbG9nICovCiAJdWludDMyX3QgbmZvcm1hdHM7CiAJ dWludDMyX3QgZm9ybWF0c1s2NF07CiAKLQlzdHJ1Y3QgZHB1X2h3X3BpcGUgKnBpcGVfaHc7Ci0J c3RydWN0IGRwdV9od19waXBlX2NmZyBwaXBlX2NmZzsKLQlzdHJ1Y3QgZHB1X2h3X3BpcGVfcW9z X2NmZyBwaXBlX3Fvc19jZmc7CiAJdWludDMyX3QgY29sb3JfZmlsbDsKIAlib29sIGlzX2Vycm9y OwotCWJvb2wgaXNfcnRfcGlwZTsKLQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICpjYXRhbG9nOworCWJv b2wgaXNfcnRfY2xpZW50OwogCiAJc3RydWN0IGRwdV9jc2NfY2ZnICpjc2NfcHRyOwotCi0JY29u c3Qgc3RydWN0IGRwdV9zc3BwX3N1Yl9ibGtzICpwaXBlX3NibGs7Ci0JY2hhciBwaXBlX25hbWVb RFBVX05BTUVfU0laRV07CisJY2hhciBuYW1lW0RQVV9OQU1FX1NJWkVdOwogCiAJLyogZGVidWdm cyByZWxhdGVkIHN0dWZmICovCiAJc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290OwotCXN0cnVj dCBkcHVfZGVidWdmc19yZWdzZXQzMiBkZWJ1Z2ZzX3NyYzsKLQlzdHJ1Y3QgZHB1X2RlYnVnZnNf cmVnc2V0MzIgZGVidWdmc19zY2FsZXI7Ci0Jc3RydWN0IGRwdV9kZWJ1Z2ZzX3JlZ3NldDMyIGRl YnVnZnNfY3NjOwotCWJvb2wgZGVidWdmc19kZWZhdWx0X3NjYWxlOworCiB9OwogCiAjZGVmaW5l IHRvX2RwdV9wbGFuZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRwdV9wbGFuZSwgYmFzZSkK QEAgLTE0MSwxNCArMTI3LDQ2IEBAIHN0YXRpYyBib29sIGRwdV9wbGFuZV9zc3BwX2VuYWJsZWQo c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiAJcmV0dXJuIHN0YXRlICYmIHN0YXRlLT5j cnRjOwogfQogCit2b2lkIF9kcHVfcGxhbmVfZ2V0X3JvaV9jb25maWcoc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqc3RhdGUsCisJCXN0cnVjdCBkcHVfcmVjdCAqc3JjLCBzdHJ1Y3QgZHB1X3JlY3Qg KmRzdCkKK3sKKwlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpwc3RhdGUgPSB0b19kcHVfcGxhbmVf c3RhdGUoc3RhdGUpOworCWJvb2wgcTE2X2RhdGEgPSB0cnVlOworCWludCBkaXYgPSAocHN0YXRl LT5udW1fcGlwZXMgPT0gUExBTkVfRFVBTF9QSVBFUykgPyAyIDogMTsKKworCURQVV9ERUJVRygi cGxhbmUgJWQ6Iiwgc3RhdGUtPnBsYW5lLT5iYXNlLmlkKTsKKworCWlmIChzcmMpIHsKKwkJUE9Q VUxBVEVfUkVDVChzcmMsIHN0YXRlLT5zcmNfeCwgc3RhdGUtPnNyY195LAorCQlzdGF0ZS0+c3Jj X3csIHN0YXRlLT5zcmNfaCwgcTE2X2RhdGEpOworCisJCURQVV9ERUJVRygic3JjX3JlY3Q6ICV1 LCV1LCgldS8lZCl4JXVcbiIsCisJCQlzcmMtPngsIHNyYy0+eSwgc3JjLT53LCBkaXYsIHNyYy0+ aCk7CisKKwkJc3JjLT53IC89IGRpdjsKKwl9CisKKwlpZiAoZHN0KSB7CisJCVBPUFVMQVRFX1JF Q1QoZHN0LCBzdGF0ZS0+Y3J0Y194LCBzdGF0ZS0+Y3J0Y195LAorCQlzdGF0ZS0+Y3J0Y193LCBz dGF0ZS0+Y3J0Y19oLCAhcTE2X2RhdGEpOworCisJCURQVV9ERUJVRygiZHN0X3JlY3Q6ICVkLCVk LCgldS8lZCl4JXVcbiIsCisJCQlkc3QtPngsIGRzdC0+eSwgZHN0LT53LCBkaXYsIGRzdC0+aCk7 CisKKwkJZHN0LT53IC89IGRpdjsKKwl9Cit9CisKIC8qKgogICogX2RwdV9wbGFuZV9jYWxjX2Zp bGxfbGV2ZWwgLSBjYWxjdWxhdGUgZmlsbCBsZXZlbCBvZiB0aGUgZ2l2ZW4gc291cmNlIGZvcm1h dAogICogQHBsYW5lOgkJUG9pbnRlciB0byBkcm0gcGxhbmUKKyAqIEBwaXBlX2h3OglQb2ludGVy IHRvIGhhcmR3YXJlIHBpcGUKICAqIEBmbXQ6CQlQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgZm9y bWF0CiAgKiBAc3JjX3dkaXRoOgkJd2lkdGggb2Ygc291cmNlIGJ1ZmZlcgogICogUmV0dXJuOiBm aWxsIGxldmVsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNvdXJjZSBidWZmZXIvZm9ybWF0IG9yIDAg aWYgZXJyb3IKICAqLwogc3RhdGljIGlubGluZSBpbnQgX2RwdV9wbGFuZV9jYWxjX2ZpbGxfbGV2 ZWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCXN0cnVjdCBkcHVfaHdfcGlwZSAqcGlwZV9o dywKIAkJY29uc3Qgc3RydWN0IGRwdV9mb3JtYXQgKmZtdCwgdTMyIHNyY193aWR0aCkKIHsKIAlz dHJ1Y3QgZHB1X2ttcyAqa21zOwpAQCAtMTc5LDEyICsxOTcsMTIgQEAgc3RhdGljIGlubGluZSBp bnQgX2RwdV9wbGFuZV9jYWxjX2ZpbGxfbGV2ZWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CQkJKChzcmNfd2lkdGggKyAzMikgKiBmbXQtPmJwcCk7CiAJCX0KIAl9IGVsc2UgewotCQkJdG90 YWxfZmwgPSAoZml4ZWRfYnVmZl9zaXplKSAqIDIgLworCQl0b3RhbF9mbCA9IChmaXhlZF9idWZm X3NpemUpICogMiAvCiAJCQkJKChzcmNfd2lkdGggKyAzMikgKiBmbXQtPmJwcCk7CiAJfQogCi0J RFBVX0RFQlVHKCJwbGFuZSV1OiBwbnVtOiVkIGZtdDogJTQuNHMgdzoldSBmbDoldVxuIiwKLQkJ CXBsYW5lLT5iYXNlLmlkLCBwZHB1LT5waXBlIC0gU1NQUF9WSUcwLAorCURQVV9ERUJVRygicGxh bmUlZDogcG51bTolZCBmbXQ6JTQuNHMgdzoldSBmbDoldVxuIiwKKwkJCXBsYW5lLT5iYXNlLmlk LCBwaXBlX2h3LT5pZHggLSBTU1BQX1ZJRzAsCiAJCQkoY2hhciAqKSZmbXQtPmJhc2UucGl4ZWxf Zm9ybWF0LAogCQkJc3JjX3dpZHRoLCB0b3RhbF9mbCk7CiAKQEAgLTIxOSwzOSArMjM3LDM4IEBA IHN0YXRpYyB1NjQgX2RwdV9wbGFuZV9nZXRfcW9zX2x1dChjb25zdCBzdHJ1Y3QgZHB1X3Fvc19s dXRfdGJsICp0YmwsCiAvKioKICAqIF9kcHVfcGxhbmVfc2V0X3Fvc19sdXQgLSBzZXQgUW9TIExV VCBvZiB0aGUgZ2l2ZW4gcGxhbmUKICAqIEBwbGFuZToJCVBvaW50ZXIgdG8gZHJtIHBsYW5lCisg KiBAcGlwZV9odzoJCVBvaW50ZXIgdG8gaGFyZHdhcmUgcGlwZQorICogQHBpcGVfY2ZnOgkJUG9p bnRlciB0byBoYXJkd2FyZSBwaXBlIGNvbmZpZwogICogQGZiOgkJCVBvaW50ZXIgdG8gZnJhbWVi dWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwbGFuZQogICovCiBzdGF0aWMgdm9pZCBf ZHB1X3BsYW5lX3NldF9xb3NfbHV0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAotCQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYikKKwlzdHJ1Y3QgZHB1X2h3X3BpcGUgKnBpcGVfaHcsIHN0cnVj dCBkcHVfaHdfcGlwZV9jZmcgKnBpcGVfY2ZnLAorCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi KQogeworCXN0cnVjdCBkcHVfa21zICprbXM7CiAJc3RydWN0IGRwdV9wbGFuZSAqcGRwdTsKIAlj b25zdCBzdHJ1Y3QgZHB1X2Zvcm1hdCAqZm10ID0gTlVMTDsKIAl1NjQgcW9zX2x1dDsKIAl1MzIg dG90YWxfZmwgPSAwLCBsdXRfdXNhZ2U7CisJc3RydWN0IGRwdV9od19waXBlX3Fvc19jZmcgcGlw ZV9xb3NfY2ZnOwogCi0JaWYgKCFwbGFuZSB8fCAhZmIpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlk IGFyZ3VtZW50cyBwbGFuZSAlZCBmYiAlZFxuIiwKLQkJCQlwbGFuZSAhPSAwLCBmYiAhPSAwKTsK KwlpZiAoIXBsYW5lIHx8ICFwaXBlX2h3IHx8ICFwaXBlX2NmZyB8fCAhZmIgfHwKKwkJIXBpcGVf aHctPm9wcy5zZXR1cF9jcmVxX2x1dCkgeworCQlEUFVfRVJST1IoImludmFsaWQgYXJndW1lbnRz IHBsYW5lICVkIGh3ICVkIGNmZyAlZCBmYiAlZFxuIiwKKwkJCXBsYW5lICE9IDAsIHBpcGVfaHcg IT0gMCwgcGlwZV9jZmcgIT0gMCwgZmIgIT0gMCk7CiAJCXJldHVybjsKIAl9CiAKIAlwZHB1ID0g dG9fZHB1X3BsYW5lKHBsYW5lKTsKKwlrbXMgPSBfZHB1X3BsYW5lX2dldF9rbXMoJnBkcHUtPmJh c2UpOwogCi0JaWYgKCFwZHB1LT5waXBlX2h3IHx8ICFwZHB1LT5waXBlX3NibGsgfHwgIXBkcHUt PmNhdGFsb2cpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7Ci0JCXJldHVy bjsKLQl9IGVsc2UgaWYgKCFwZHB1LT5waXBlX2h3LT5vcHMuc2V0dXBfY3JlcV9sdXQpIHsKLQkJ cmV0dXJuOwotCX0KLQotCWlmICghcGRwdS0+aXNfcnRfcGlwZSkgeworCWlmICghcGRwdS0+aXNf cnRfY2xpZW50KSB7CiAJCWx1dF91c2FnZSA9IERQVV9RT1NfTFVUX1VTQUdFX05SVDsKIAl9IGVs c2UgewotCQlmbXQgPSBkcHVfZ2V0X2RwdV9mb3JtYXRfZXh0KAotCQkJCWZiLT5mb3JtYXQtPmZv cm1hdCwKLQkJCQlmYi0+bW9kaWZpZXIpOwotCQl0b3RhbF9mbCA9IF9kcHVfcGxhbmVfY2FsY19m aWxsX2xldmVsKHBsYW5lLCBmbXQsCi0JCQkJcGRwdS0+cGlwZV9jZmcuc3JjX3JlY3Qudyk7CisJ CWZtdCA9IGRwdV9nZXRfZHB1X2Zvcm1hdF9leHQoZmItPmZvcm1hdC0+Zm9ybWF0LAorCQkJCQlm Yi0+bW9kaWZpZXIpOworCQl0b3RhbF9mbCA9IF9kcHVfcGxhbmVfY2FsY19maWxsX2xldmVsKHBs YW5lLCBwaXBlX2h3LAorCQkJCQlmbXQsIHBpcGVfY2ZnLT5zcmNfcmVjdC53KTsKIAogCQlpZiAo Zm10ICYmIERQVV9GT1JNQVRfSVNfTElORUFSKGZtdCkpCiAJCQlsdXRfdXNhZ2UgPSBEUFVfUU9T X0xVVF9VU0FHRV9MSU5FQVI7CkBAIC0yNjAsNTMgKzI3Nyw1MiBAQCBzdGF0aWMgdm9pZCBfZHB1 X3BsYW5lX3NldF9xb3NfbHV0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCX0KIAogCXFvc19s dXQgPSBfZHB1X3BsYW5lX2dldF9xb3NfbHV0KAotCQkJJnBkcHUtPmNhdGFsb2ctPnBlcmYucW9z X2x1dF90YmxbbHV0X3VzYWdlXSwgdG90YWxfZmwpOworCQkma21zLT5jYXRhbG9nLT5wZXJmLnFv c19sdXRfdGJsW2x1dF91c2FnZV0sIHRvdGFsX2ZsKTsKIAotCXBkcHUtPnBpcGVfcW9zX2NmZy5j cmVxX2x1dCA9IHFvc19sdXQ7CisJbWVtc2V0KCZwaXBlX3Fvc19jZmcsIDAsIHNpemVvZihzdHJ1 Y3QgZHB1X2h3X3BpcGVfcW9zX2NmZykpOworCXBpcGVfcW9zX2NmZy5jcmVxX2x1dCA9IHFvc19s dXQ7CiAKLQl0cmFjZV9kcHVfcGVyZl9zZXRfcW9zX2x1dHMocGRwdS0+cGlwZSAtIFNTUFBfVklH MCwKLQkJCShmbXQpID8gZm10LT5iYXNlLnBpeGVsX2Zvcm1hdCA6IDAsCi0JCQlwZHB1LT5pc19y dF9waXBlLCB0b3RhbF9mbCwgcW9zX2x1dCwgbHV0X3VzYWdlKTsKKwl0cmFjZV9kcHVfcGVyZl9z ZXRfcW9zX2x1dHMocGlwZV9ody0+aWR4IC0gU1NQUF9WSUcwLAorCQkoZm10KSA/IGZtdC0+YmFz ZS5waXhlbF9mb3JtYXQgOiAwLAorCQlwZHB1LT5pc19ydF9jbGllbnQsIHRvdGFsX2ZsLCBxb3Nf bHV0LCBsdXRfdXNhZ2UpOwogCiAJRFBVX0RFQlVHKCJwbGFuZSV1OiBwbnVtOiVkIGZtdDogJTQu NHMgcnQ6JWQgZmw6JXUgbHV0OjB4JWxseFxuIiwKLQkJCXBsYW5lLT5iYXNlLmlkLAotCQkJcGRw dS0+cGlwZSAtIFNTUFBfVklHMCwKLQkJCWZtdCA/IChjaGFyICopJmZtdC0+YmFzZS5waXhlbF9m b3JtYXQgOiBOVUxMLAotCQkJcGRwdS0+aXNfcnRfcGlwZSwgdG90YWxfZmwsIHFvc19sdXQpOwor CQlwbGFuZS0+YmFzZS5pZCwgcGlwZV9ody0+aWR4IC0gU1NQUF9WSUcwLAorCQlmbXQgPyAoY2hh ciAqKSZmbXQtPmJhc2UucGl4ZWxfZm9ybWF0IDogTlVMTCwKKwkJcGRwdS0+aXNfcnRfY2xpZW50 LCB0b3RhbF9mbCwgcW9zX2x1dCk7CiAKLQlwZHB1LT5waXBlX2h3LT5vcHMuc2V0dXBfY3JlcV9s dXQocGRwdS0+cGlwZV9odywgJnBkcHUtPnBpcGVfcW9zX2NmZyk7CisJcGlwZV9ody0+b3BzLnNl dHVwX2NyZXFfbHV0KHBpcGVfaHcsICZwaXBlX3Fvc19jZmcpOwogfQogCiAvKioKLSAqIF9kcHVf cGxhbmVfc2V0X3BhbmljX2x1dCAtIHNldCBkYW5nZXIvc2FmZSBMVVQgb2YgdGhlIGdpdmVuIHBs YW5lCisgKiBfZHB1X3BsYW5lX3NldF9kYW5nZXJfbHV0IC0gc2V0IGRhbmdlci9zYWZlIExVVCBv ZiB0aGUgZ2l2ZW4gcGxhbmUKICAqIEBwbGFuZToJCVBvaW50ZXIgdG8gZHJtIHBsYW5lCi0gKiBA ZmI6CQkJUG9pbnRlciB0byBmcmFtZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHBs YW5lCisgKiBAcGlwZV9odzoJCVBvaW50ZXIgdG8gaGFyZHdhcmUgcGlwZQorICogQGZiOgkJUG9p bnRlciB0byBmcmFtZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHBsYW5lCiAgKi8K IHN0YXRpYyB2b2lkIF9kcHVfcGxhbmVfc2V0X2Rhbmdlcl9sdXQoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCi0JCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQorCQlzdHJ1Y3QgZHB1X2h3X3Bp cGUgKnBpcGVfaHcsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQogeworCXN0cnVjdCBkcHVf a21zICprbXM7CiAJc3RydWN0IGRwdV9wbGFuZSAqcGRwdTsKIAljb25zdCBzdHJ1Y3QgZHB1X2Zv cm1hdCAqZm10ID0gTlVMTDsKIAl1MzIgZGFuZ2VyX2x1dCwgc2FmZV9sdXQ7CisJc3RydWN0IGRw dV9od19waXBlX3Fvc19jZmcgcGlwZV9xb3NfY2ZnOwogCi0JaWYgKCFwbGFuZSB8fCAhZmIpIHsK LQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CisJaWYgKCFwbGFuZSB8fCAhcGlw ZV9odyB8fCAhZmIgfHwKKwkJIXBpcGVfaHctPm9wcy5zZXR1cF9kYW5nZXJfc2FmZV9sdXQpIHsK KwkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50cyBwbGFuZSAlZCBodyAlZCBmYiAlZFxuIiwK KwkJCXBsYW5lICE9IDAsIHBpcGVfaHcgIT0gMCwgZmIgIT0gMCk7CiAJCXJldHVybjsKIAl9CiAK IAlwZHB1ID0gdG9fZHB1X3BsYW5lKHBsYW5lKTsKKwlrbXMgPSBfZHB1X3BsYW5lX2dldF9rbXMo JnBkcHUtPmJhc2UpOwogCi0JaWYgKCFwZHB1LT5waXBlX2h3IHx8ICFwZHB1LT5waXBlX3NibGsg fHwgIXBkcHUtPmNhdGFsb2cpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7 Ci0JCXJldHVybjsKLQl9IGVsc2UgaWYgKCFwZHB1LT5waXBlX2h3LT5vcHMuc2V0dXBfZGFuZ2Vy X3NhZmVfbHV0KSB7Ci0JCXJldHVybjsKLQl9Ci0KLQlpZiAoIXBkcHUtPmlzX3J0X3BpcGUpIHsK LQkJZGFuZ2VyX2x1dCA9IHBkcHUtPmNhdGFsb2ctPnBlcmYuZGFuZ2VyX2x1dF90YmwKKwlpZiAo IXBkcHUtPmlzX3J0X2NsaWVudCkgeworCQlkYW5nZXJfbHV0ID0ga21zLT5jYXRhbG9nLT5wZXJm LmRhbmdlcl9sdXRfdGJsCiAJCQkJW0RQVV9RT1NfTFVUX1VTQUdFX05SVF07Ci0JCXNhZmVfbHV0 ID0gcGRwdS0+Y2F0YWxvZy0+cGVyZi5zYWZlX2x1dF90YmwKKwkJc2FmZV9sdXQgPSBrbXMtPmNh dGFsb2ctPnBlcmYuc2FmZV9sdXRfdGJsCiAJCQkJW0RQVV9RT1NfTFVUX1VTQUdFX05SVF07CiAJ fSBlbHNlIHsKIAkJZm10ID0gZHB1X2dldF9kcHVfZm9ybWF0X2V4dCgKQEAgLTMxNCwxMDUgKzMz MCwxMDEgQEAgc3RhdGljIHZvaWQgX2RwdV9wbGFuZV9zZXRfZGFuZ2VyX2x1dChzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAkJCQlmYi0+bW9kaWZpZXIpOwogCiAJCWlmIChmbXQgJiYgRFBVX0ZP Uk1BVF9JU19MSU5FQVIoZm10KSkgewotCQkJZGFuZ2VyX2x1dCA9IHBkcHUtPmNhdGFsb2ctPnBl cmYuZGFuZ2VyX2x1dF90YmwKKwkJCWRhbmdlcl9sdXQgPSBrbXMtPmNhdGFsb2ctPnBlcmYuZGFu Z2VyX2x1dF90YmwKIAkJCQkJW0RQVV9RT1NfTFVUX1VTQUdFX0xJTkVBUl07Ci0JCQlzYWZlX2x1 dCA9IHBkcHUtPmNhdGFsb2ctPnBlcmYuc2FmZV9sdXRfdGJsCisJCQlzYWZlX2x1dCA9IGttcy0+ Y2F0YWxvZy0+cGVyZi5zYWZlX2x1dF90YmwKIAkJCQkJW0RQVV9RT1NfTFVUX1VTQUdFX0xJTkVB Ul07CiAJCX0gZWxzZSB7Ci0JCQlkYW5nZXJfbHV0ID0gcGRwdS0+Y2F0YWxvZy0+cGVyZi5kYW5n ZXJfbHV0X3RibAorCQkJZGFuZ2VyX2x1dCA9IGttcy0+Y2F0YWxvZy0+cGVyZi5kYW5nZXJfbHV0 X3RibAogCQkJCQlbRFBVX1FPU19MVVRfVVNBR0VfTUFDUk9USUxFXTsKLQkJCXNhZmVfbHV0ID0g cGRwdS0+Y2F0YWxvZy0+cGVyZi5zYWZlX2x1dF90YmwKKwkJCXNhZmVfbHV0ID0ga21zLT5jYXRh bG9nLT5wZXJmLnNhZmVfbHV0X3RibAogCQkJCQlbRFBVX1FPU19MVVRfVVNBR0VfTUFDUk9USUxF XTsKIAkJfQogCX0KIAotCXBkcHUtPnBpcGVfcW9zX2NmZy5kYW5nZXJfbHV0ID0gZGFuZ2VyX2x1 dDsKLQlwZHB1LT5waXBlX3Fvc19jZmcuc2FmZV9sdXQgPSBzYWZlX2x1dDsKKwltZW1zZXQoJnBp cGVfcW9zX2NmZywgMCwgc2l6ZW9mKHN0cnVjdCBkcHVfaHdfcGlwZV9xb3NfY2ZnKSk7CisJcGlw ZV9xb3NfY2ZnLmRhbmdlcl9sdXQgPSBkYW5nZXJfbHV0OworCXBpcGVfcW9zX2NmZy5zYWZlX2x1 dCA9IHNhZmVfbHV0OwogCi0JdHJhY2VfZHB1X3BlcmZfc2V0X2Rhbmdlcl9sdXRzKHBkcHUtPnBp cGUgLSBTU1BQX1ZJRzAsCi0JCQkoZm10KSA/IGZtdC0+YmFzZS5waXhlbF9mb3JtYXQgOiAwLAot CQkJKGZtdCkgPyBmbXQtPmZldGNoX21vZGUgOiAwLAotCQkJcGRwdS0+cGlwZV9xb3NfY2ZnLmRh bmdlcl9sdXQsCi0JCQlwZHB1LT5waXBlX3Fvc19jZmcuc2FmZV9sdXQpOworCXRyYWNlX2RwdV9w ZXJmX3NldF9kYW5nZXJfbHV0cyhwaXBlX2h3LT5pZHggLSBTU1BQX1ZJRzAsCisJCShmbXQpID8g Zm10LT5iYXNlLnBpeGVsX2Zvcm1hdCA6IDAsCisJCShmbXQpID8gZm10LT5mZXRjaF9tb2RlIDog MCwKKwkJcGlwZV9xb3NfY2ZnLmRhbmdlcl9sdXQsIHBpcGVfcW9zX2NmZy5zYWZlX2x1dCk7CiAK LQlEUFVfREVCVUcoInBsYW5lJXU6IHBudW06JWQgZm10OiAlNC40cyBtb2RlOiVkIGx1dHNbMHgl eCwgMHgleF1cbiIsCi0JCXBsYW5lLT5iYXNlLmlkLAotCQlwZHB1LT5waXBlIC0gU1NQUF9WSUcw LAorCURQVV9ERUJVRygicGxhbmUldTpwbnVtOiVkIGZtdDolNC40cyBtb2RlOiVkIGx1dHNbMHgl eCwweCV4XVxuIiwKKwkJcGxhbmUtPmJhc2UuaWQsIHBpcGVfaHctPmlkeCAtIFNTUFBfVklHMCwK IAkJZm10ID8gKGNoYXIgKikmZm10LT5iYXNlLnBpeGVsX2Zvcm1hdCA6IE5VTEwsCi0JCWZtdCA/ IGZtdC0+ZmV0Y2hfbW9kZSA6IC0xLAotCQlwZHB1LT5waXBlX3Fvc19jZmcuZGFuZ2VyX2x1dCwK LQkJcGRwdS0+cGlwZV9xb3NfY2ZnLnNhZmVfbHV0KTsKKwkJZm10ID8gZm10LT5mZXRjaF9tb2Rl IDogLTEsIHBpcGVfcW9zX2NmZy5kYW5nZXJfbHV0LAorCQlwaXBlX3Fvc19jZmcuc2FmZV9sdXQp OworCisJcGlwZV9ody0+b3BzLnNldHVwX2Rhbmdlcl9zYWZlX2x1dChwaXBlX2h3LCAmcGlwZV9x b3NfY2ZnKTsKIAotCXBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9kYW5nZXJfc2FmZV9sdXQocGRw dS0+cGlwZV9odywKLQkJCSZwZHB1LT5waXBlX3Fvc19jZmcpOwogfQogCiAvKioKICAqIF9kcHVf cGxhbmVfc2V0X3Fvc19jdHJsIC0gc2V0IFFvUyBjb250cm9sIG9mIHRoZSBnaXZlbiBwbGFuZQog ICogQHBsYW5lOgkJUG9pbnRlciB0byBkcm0gcGxhbmUKKyAqIEBwaXBlX2h3OgkJUG9pbnRlciB0 byBoYXJkd2FyZSBwaXBlCiAgKiBAZW5hYmxlOgkJdHJ1ZSB0byBlbmFibGUgUW9TIGNvbnRyb2wK ICAqIEBmbGFnczoJCVFvUyBjb250cm9sIG1vZGUgKGVudW0gZHB1X3BsYW5lX3FvcykKICAqLwog c3RhdGljIHZvaWQgX2RwdV9wbGFuZV9zZXRfcW9zX2N0cmwoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCi0JYm9vbCBlbmFibGUsIHUzMiBmbGFncykKKwkJc3RydWN0IGRwdV9od19waXBlICpwaXBl X2h3LCBib29sIGVuYWJsZSwgdTMyIGZsYWdzKQogewogCXN0cnVjdCBkcHVfcGxhbmUgKnBkcHU7 CisJc3RydWN0IGRwdV9od19waXBlX3Fvc19jZmcgcGlwZV9xb3NfY2ZnOwogCi0JaWYgKCFwbGFu ZSkgeworCWlmICghcGxhbmUgfHwgIXBpcGVfaHcgfHwgIXBpcGVfaHctPmNhcC0+c2JsayB8fAor CQkhcGlwZV9ody0+b3BzLnNldHVwX3Fvc19jdHJsKSB7CiAJCURQVV9FUlJPUigiaW52YWxpZCBh cmd1bWVudHNcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJcGRwdSA9IHRvX2RwdV9wbGFuZShwbGFu ZSk7Ci0KLQlpZiAoIXBkcHUtPnBpcGVfaHcgfHwgIXBkcHUtPnBpcGVfc2JsaykgewotCQlEUFVf RVJST1IoImludmFsaWQgYXJndW1lbnRzXG4iKTsKLQkJcmV0dXJuOwotCX0gZWxzZSBpZiAoIXBk cHUtPnBpcGVfaHctPm9wcy5zZXR1cF9xb3NfY3RybCkgewotCQlyZXR1cm47Ci0JfQorCW1lbXNl dCgmcGlwZV9xb3NfY2ZnLCAwLCBzaXplb2Yoc3RydWN0IGRwdV9od19waXBlX3Fvc19jZmcpKTsK IAogCWlmIChmbGFncyAmIERQVV9QTEFORV9RT1NfVkJMQU5LX0NUUkwpIHsKLQkJcGRwdS0+cGlw ZV9xb3NfY2ZnLmNyZXFfdmJsYW5rID0gcGRwdS0+cGlwZV9zYmxrLT5jcmVxX3ZibGFuazsKLQkJ cGRwdS0+cGlwZV9xb3NfY2ZnLmRhbmdlcl92YmxhbmsgPQotCQkJCXBkcHUtPnBpcGVfc2Jsay0+ ZGFuZ2VyX3ZibGFuazsKLQkJcGRwdS0+cGlwZV9xb3NfY2ZnLnZibGFua19lbiA9IGVuYWJsZTsK KwkJcGlwZV9xb3NfY2ZnLmNyZXFfdmJsYW5rID0KKwkJCXBpcGVfaHctPmNhcC0+c2Jsay0+Y3Jl cV92Ymxhbms7CisJCXBpcGVfcW9zX2NmZy5kYW5nZXJfdmJsYW5rID0KKwkJCXBpcGVfaHctPmNh cC0+c2Jsay0+ZGFuZ2VyX3ZibGFuazsKKwkJcGlwZV9xb3NfY2ZnLnZibGFua19lbiA9IGVuYWJs ZTsKIAl9CiAKIAlpZiAoZmxhZ3MgJiBEUFVfUExBTkVfUU9TX1ZCTEFOS19BTU9SVElaRSkgewog CQkvKiB0aGlzIGZlYXR1cmUgb3ZlcnJ1bGVzIHByZXZpb3VzIFZCTEFOS19DVFJMICovCi0JCXBk cHUtPnBpcGVfcW9zX2NmZy52YmxhbmtfZW4gPSBmYWxzZTsKLQkJcGRwdS0+cGlwZV9xb3NfY2Zn LmNyZXFfdmJsYW5rID0gMDsgLyogY2xlYXIgdmJsYW5rIGJpdHMgKi8KKwkJcGlwZV9xb3NfY2Zn LnZibGFua19lbiA9IGZhbHNlOworCQkvKiBjbGVhciB2YmxhbmsgYml0cyAqLworCQlwaXBlX3Fv c19jZmcuY3JlcV92YmxhbmsgPSAwOwogCX0KIAogCWlmIChmbGFncyAmIERQVV9QTEFORV9RT1Nf UEFOSUNfQ1RSTCkKLQkJcGRwdS0+cGlwZV9xb3NfY2ZnLmRhbmdlcl9zYWZlX2VuID0gZW5hYmxl OworCQlwaXBlX3Fvc19jZmcuZGFuZ2VyX3NhZmVfZW4gPSBlbmFibGU7CiAKLQlpZiAoIXBkcHUt PmlzX3J0X3BpcGUpIHsKLQkJcGRwdS0+cGlwZV9xb3NfY2ZnLnZibGFua19lbiA9IGZhbHNlOwot CQlwZHB1LT5waXBlX3Fvc19jZmcuZGFuZ2VyX3NhZmVfZW4gPSBmYWxzZTsKKwlpZiAoIXBkcHUt PmlzX3J0X2NsaWVudCkgeworCQlwaXBlX3Fvc19jZmcudmJsYW5rX2VuID0gZmFsc2U7CisJCXBp cGVfcW9zX2NmZy5kYW5nZXJfc2FmZV9lbiA9IGZhbHNlOwogCX0KIAotCURQVV9ERUJVRygicGxh bmUldTogcG51bTolZCBkczolZCB2YjolZCBwcmlbMHgleCwgMHgleF0gaXNfcnQ6JWRcbiIsCi0J CXBsYW5lLT5iYXNlLmlkLAotCQlwZHB1LT5waXBlIC0gU1NQUF9WSUcwLAotCQlwZHB1LT5waXBl X3Fvc19jZmcuZGFuZ2VyX3NhZmVfZW4sCi0JCXBkcHUtPnBpcGVfcW9zX2NmZy52YmxhbmtfZW4s Ci0JCXBkcHUtPnBpcGVfcW9zX2NmZy5jcmVxX3ZibGFuaywKLQkJcGRwdS0+cGlwZV9xb3NfY2Zn LmRhbmdlcl92YmxhbmssCi0JCXBkcHUtPmlzX3J0X3BpcGUpOworCURQVV9ERUJVRygicGxhbmUl dTpwbnVtOiVkIGRzOiVkIHZiOiVkIHByWzB4JXgsMHgleF1pc19ydDolZFxuIiwKKwkJcGxhbmUt PmJhc2UuaWQsIHBpcGVfaHctPmlkeCAtIFNTUFBfVklHMCwKKwkJcGlwZV9xb3NfY2ZnLmRhbmdl cl9zYWZlX2VuLCBwaXBlX3Fvc19jZmcudmJsYW5rX2VuLAorCQlwaXBlX3Fvc19jZmcuY3JlcV92 YmxhbmssIHBpcGVfcW9zX2NmZy5kYW5nZXJfdmJsYW5rLAorCQlwZHB1LT5pc19ydF9jbGllbnQp OworCisJcGlwZV9ody0+b3BzLnNldHVwX3Fvc19jdHJsKHBpcGVfaHcsICZwaXBlX3Fvc19jZmcp OwogCi0JcGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX3Fvc19jdHJsKHBkcHUtPnBpcGVfaHcsCi0J CQkmcGRwdS0+cGlwZV9xb3NfY2ZnKTsKIH0KIAogaW50IGRwdV9wbGFuZV9kYW5nZXJfc2lnbmFs X2N0cmwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIGJvb2wgZW5hYmxlKQogewogCXN0cnVjdCBk cHVfcGxhbmUgKnBkcHU7CisJc3RydWN0IGRwdV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwogCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXY7CiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7CisJaW50 IGk7CiAKLQlpZiAoIXBsYW5lIHx8ICFwbGFuZS0+ZGV2KSB7CisJaWYgKCFwbGFuZSB8fCAhcGxh bmUtPmRldiB8fCAhcGxhbmUtPnN0YXRlKSB7CiAJCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVu dHNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC00MjUsMTIgKzQzNywxNSBAQCBpbnQg ZHB1X3BsYW5lX2Rhbmdlcl9zaWduYWxfY3RybChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgYm9v bCBlbmFibGUpCiAKIAlkcHVfa21zID0gdG9fZHB1X2ttcyhwcml2LT5rbXMpOwogCXBkcHUgPSB0 b19kcHVfcGxhbmUocGxhbmUpOworCXBzdGF0ZSA9IHRvX2RwdV9wbGFuZV9zdGF0ZShwbGFuZS0+ c3RhdGUpOwogCi0JaWYgKCFwZHB1LT5pc19ydF9waXBlKQorCWlmICghcGRwdS0+aXNfcnRfY2xp ZW50KQogCQlnb3RvIGVuZDsKIAogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoJmRwdV9rbXMtPnBkZXYt PmRldik7Ci0JX2RwdV9wbGFuZV9zZXRfcW9zX2N0cmwocGxhbmUsIGVuYWJsZSwgRFBVX1BMQU5F X1FPU19QQU5JQ19DVFJMKTsKKwlmb3IgKGkgPSAwOyBpIDwgcHN0YXRlLT5udW1fcGlwZXM7IGkr KykKKwkJX2RwdV9wbGFuZV9zZXRfcW9zX2N0cmwocGxhbmUsICBwc3RhdGUtPnBpcGVfaHdbaV0s CisJCQllbmFibGUsIERQVV9QTEFORV9RT1NfUEFOSUNfQ1RSTCk7CiAJcG1fcnVudGltZV9wdXRf c3luYygmZHB1X2ttcy0+cGRldi0+ZGV2KTsKIAogZW5kOgpAQCAtNDQwLDE5ICs0NTUsMjIgQEAg aW50IGRwdV9wbGFuZV9kYW5nZXJfc2lnbmFsX2N0cmwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IGJvb2wgZW5hYmxlKQogLyoqCiAgKiBfZHB1X3BsYW5lX3NldF9vdF9saW1pdCAtIHNldCBPVCBs aW1pdCBmb3IgdGhlIGdpdmVuIHBsYW5lCiAgKiBAcGxhbmU6CQlQb2ludGVyIHRvIGRybSBwbGFu ZQorICogQHBpcGVfaHc6CQlQb2ludGVyIHRvIGhhcmR3YXJlIHBpcGUKKyAqIEBwaXBlX2NmZzoJ CVBvaW50ZXIgdG8gaGFyZHdhcmUgcGlwZSBjb25maWcKICAqIEBjcnRjOgkJUG9pbnRlciB0byBk cm0gY3J0YwogICovCiBzdGF0aWMgdm9pZCBfZHB1X3BsYW5lX3NldF9vdF9saW1pdChzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKLQkJc3RydWN0IGRybV9jcnRjICpjcnRjKQorCXN0cnVjdCBkcHVf aHdfcGlwZSAqcGlwZV9odywgc3RydWN0IGRwdV9od19waXBlX2NmZyAqcGlwZV9jZmcsCisJc3Ry dWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcHVfcGxhbmUgKnBkcHU7CiAJc3RydWN0 IGRwdV92YmlmX3NldF9vdF9wYXJhbXMgb3RfcGFyYW1zOwogCXN0cnVjdCBtc21fZHJtX3ByaXZh dGUgKnByaXY7CiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7CiAKLQlpZiAoIXBsYW5lIHx8ICFw bGFuZS0+ZGV2IHx8ICFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudHMgcGxh bmUgJWQgY3J0YyAlZFxuIiwKLQkJCQlwbGFuZSAhPSAwLCBjcnRjICE9IDApOworCWlmICghcGxh bmUgfHwgIXBsYW5lLT5kZXYgfHwgIXBpcGVfaHcgfHwgIXBpcGVfY2ZnIHx8ICFjcnRjKSB7CisJ CURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudHMgcGxhbmUgJWQgaHcgJWQgY2ZnICVkIGNydGMg JWRcbiIsCisJCQlwbGFuZSAhPSAwLCBwaXBlX2h3ICE9IDAsIHBpcGVfY2ZnICE9IDAsIGNydGMg IT0gMCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTQ2MywzOCArNDgxLDM4IEBAIHN0YXRpYyB2b2lk IF9kcHVfcGxhbmVfc2V0X290X2xpbWl0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCX0KIAog CWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7CisKIAlwZHB1ID0gdG9fZHB1X3BsYW5l KHBsYW5lKTsKLQlpZiAoIXBkcHUtPnBpcGVfaHcpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBp cGUgcmVmZXJlbmNlXG4iKTsKLQkJcmV0dXJuOwotCX0KIAogCW1lbXNldCgmb3RfcGFyYW1zLCAw LCBzaXplb2Yob3RfcGFyYW1zKSk7Ci0Jb3RfcGFyYW1zLnhpbl9pZCA9IHBkcHUtPnBpcGVfaHct PmNhcC0+eGluX2lkOwotCW90X3BhcmFtcy5udW0gPSBwZHB1LT5waXBlX2h3LT5pZHggLSBTU1BQ X05PTkU7Ci0Jb3RfcGFyYW1zLndpZHRoID0gcGRwdS0+cGlwZV9jZmcuc3JjX3JlY3QudzsKLQlv dF9wYXJhbXMuaGVpZ2h0ID0gcGRwdS0+cGlwZV9jZmcuc3JjX3JlY3QuaDsKLQlvdF9wYXJhbXMu aXNfd2ZkID0gIXBkcHUtPmlzX3J0X3BpcGU7CisJb3RfcGFyYW1zLnhpbl9pZCA9IHBpcGVfaHct PmNhcC0+eGluX2lkOworCW90X3BhcmFtcy5udW0gPSBwaXBlX2h3LT5pZHggLSBTU1BQX05PTkU7 CisJb3RfcGFyYW1zLndpZHRoID0gcGlwZV9jZmctPnNyY19yZWN0Lnc7CisJb3RfcGFyYW1zLmhl aWdodCA9IHBpcGVfY2ZnLT5zcmNfcmVjdC5oOworCW90X3BhcmFtcy5pc193ZmQgPSAhcGRwdS0+ aXNfcnRfY2xpZW50OwogCW90X3BhcmFtcy5mcmFtZV9yYXRlID0gY3J0Yy0+bW9kZS52cmVmcmVz aDsKIAlvdF9wYXJhbXMudmJpZl9pZHggPSBWQklGX1JUOwotCW90X3BhcmFtcy5jbGtfY3RybCA9 IHBkcHUtPnBpcGVfaHctPmNhcC0+Y2xrX2N0cmw7CisJb3RfcGFyYW1zLmNsa19jdHJsID0gcGlw ZV9ody0+Y2FwLT5jbGtfY3RybDsKIAlvdF9wYXJhbXMucmQgPSB0cnVlOwogCiAJZHB1X3ZiaWZf c2V0X290X2xpbWl0KGRwdV9rbXMsICZvdF9wYXJhbXMpOworCiB9CiAKIC8qKgogICogX2RwdV9w bGFuZV9zZXRfdmJpZl9xb3MgLSBzZXQgdmJpZiBRb1MgZm9yIHRoZSBnaXZlbiBwbGFuZQogICog QHBsYW5lOgkJUG9pbnRlciB0byBkcm0gcGxhbmUKKyAqIEBwaXBlX2h3OgkJUG9pbnRlciB0byBo YXJkd2FyZSBwaXBlCiAgKi8KLXN0YXRpYyB2b2lkIF9kcHVfcGxhbmVfc2V0X3Fvc19yZW1hcChz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3N0YXRpYyB2b2lkIF9kcHVfcGxhbmVfc2V0X3Fvc19y ZW1hcChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwlzdHJ1Y3QgZHB1X2h3X3BpcGUgKnBpcGVf aHcpCiB7CiAJc3RydWN0IGRwdV9wbGFuZSAqcGRwdTsKIAlzdHJ1Y3QgZHB1X3ZiaWZfc2V0X3Fv c19wYXJhbXMgcW9zX3BhcmFtczsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwogCXN0 cnVjdCBkcHVfa21zICpkcHVfa21zOwogCi0JaWYgKCFwbGFuZSB8fCAhcGxhbmUtPmRldikgewor CWlmICghcGxhbmUgfHwgIXBsYW5lLT5kZXYgfHwgIXBpcGVfaHcpIHsKIAkJRFBVX0VSUk9SKCJp bnZhbGlkIGFyZ3VtZW50c1xuIik7CiAJCXJldHVybjsKIAl9CkBAIC01MDcsMjMgKzUyNSwxNyBA QCBzdGF0aWMgdm9pZCBfZHB1X3BsYW5lX3NldF9xb3NfcmVtYXAoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUpCiAKIAlkcHVfa21zID0gdG9fZHB1X2ttcyhwcml2LT5rbXMpOwogCXBkcHUgPSB0b19k cHVfcGxhbmUocGxhbmUpOwotCWlmICghcGRwdS0+cGlwZV9odykgewotCQlEUFVfRVJST1IoImlu dmFsaWQgcGlwZSByZWZlcmVuY2VcbiIpOwotCQlyZXR1cm47Ci0JfQogCiAJbWVtc2V0KCZxb3Nf cGFyYW1zLCAwLCBzaXplb2YocW9zX3BhcmFtcykpOwogCXFvc19wYXJhbXMudmJpZl9pZHggPSBW QklGX1JUOwotCXFvc19wYXJhbXMuY2xrX2N0cmwgPSBwZHB1LT5waXBlX2h3LT5jYXAtPmNsa19j dHJsOwotCXFvc19wYXJhbXMueGluX2lkID0gcGRwdS0+cGlwZV9ody0+Y2FwLT54aW5faWQ7Ci0J cW9zX3BhcmFtcy5udW0gPSBwZHB1LT5waXBlX2h3LT5pZHggLSBTU1BQX1ZJRzA7Ci0JcW9zX3Bh cmFtcy5pc19ydCA9IHBkcHUtPmlzX3J0X3BpcGU7CisJcW9zX3BhcmFtcy5jbGtfY3RybCA9IHBp cGVfaHctPmNhcC0+Y2xrX2N0cmw7CisJcW9zX3BhcmFtcy54aW5faWQgPSBwaXBlX2h3LT5jYXAt Pnhpbl9pZDsKKwlxb3NfcGFyYW1zLm51bSA9IHBpcGVfaHctPmlkeCAtIFNTUFBfVklHMDsKKwlx b3NfcGFyYW1zLmlzX3J0ID0gcGRwdS0+aXNfcnRfY2xpZW50OwogCiAJRFBVX0RFQlVHKCJwbGFu ZSVkIHBpcGU6JWQgdmJpZjolZCB4aW46JWQgcnQ6JWQsIGNsa19jdHJsOiVkXG4iLAotCQkJcGxh bmUtPmJhc2UuaWQsIHFvc19wYXJhbXMubnVtLAotCQkJcW9zX3BhcmFtcy52YmlmX2lkeCwKLQkJ CXFvc19wYXJhbXMueGluX2lkLCBxb3NfcGFyYW1zLmlzX3J0LAotCQkJcW9zX3BhcmFtcy5jbGtf Y3RybCk7CisJCXBsYW5lLT5iYXNlLmlkLCBxb3NfcGFyYW1zLm51bSwgcW9zX3BhcmFtcy52Ymlm X2lkeCwKKwkJcW9zX3BhcmFtcy54aW5faWQsIHFvc19wYXJhbXMuaXNfcnQsIHFvc19wYXJhbXMu Y2xrX2N0cmwpOwogCiAJZHB1X3ZiaWZfc2V0X3Fvc19yZW1hcChkcHVfa21zLCAmcW9zX3BhcmFt cyk7CiB9CkBAIC01NTQsMjUgKzU2NiwxNiBAQCBzdGF0aWMgaW50IF9kcHVfcGxhbmVfZ2V0X2Fz cGFjZSgKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9kcHVfcGxhbmVfc2V0 X3NjYW5vdXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCi0JCXN0cnVjdCBkcHVfcGxhbmVfc3Rh dGUgKnBzdGF0ZSwKLQkJc3RydWN0IGRwdV9od19waXBlX2NmZyAqcGlwZV9jZmcsCi0JCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiKQorc3RhdGljIGlubGluZSB2b2lkIF9kcHVfcGxhbmVfc2V0 X3NjYW5vdXQoc3RydWN0IGRwdV9wbGFuZSAqcGRwdSwKKwlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRl ICpwc3RhdGUsIHN0cnVjdCBkcHVfaHdfcGlwZSAqcGlwZV9odywKKwlzdHJ1Y3QgZHB1X2h3X3Bp cGVfY2ZnICpwaXBlX2NmZywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCiB7Ci0Jc3RydWN0 IGRwdV9wbGFuZSAqcGRwdTsKIAlzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2Ug PSBOVUxMOwogCWludCByZXQ7CiAKLQlpZiAoIXBsYW5lIHx8ICFwc3RhdGUgfHwgIXBpcGVfY2Zn IHx8ICFmYikgewotCQlEUFVfRVJST1IoCi0JCQkiaW52YWxpZCBhcmcocyksIHBsYW5lICVkIHN0 YXRlICVkIGNmZyAlZCBmYiAlZFxuIiwKLQkJCXBsYW5lICE9IDAsIHBzdGF0ZSAhPSAwLCBwaXBl X2NmZyAhPSAwLCBmYiAhPSAwKTsKLQkJcmV0dXJuOwotCX0KLQotCXBkcHUgPSB0b19kcHVfcGxh bmUocGxhbmUpOwotCWlmICghcGRwdS0+cGlwZV9odykgewotCQlEUFVfRVJST1JfUExBTkUocGRw dSwgImludmFsaWQgcGlwZV9od1xuIik7CisJaWYgKCFwZHB1IHx8ICFwc3RhdGUgfHwgIXBpcGVf aHcgfHwgIXBpcGVfY2ZnIHx8ICFmYikgeworCQlEUFVfRVJST1IoImludmFsaWQ6IHBsYW5lICVk IHN0YXRlICVkIGh3ICVkIGNmZyAlZCBmYiAlZFxuIiwKKwkJcGRwdSAhPSAwLCBwc3RhdGUgIT0g MCwgcGlwZV9odyAhPSAwLCBwaXBlX2NmZyAhPSAwLCBmYiAhPSAwKTsKIAkJcmV0dXJuOwogCX0K IApAQCAtNTg3LDggKzU5MCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X3BsYW5lX3NldF9z Y2Fub3V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlEUFVfREVCVUdfUExBTkUocGRwdSwg Im5vdCB1cGRhdGluZyBzYW1lIHNyYyBhZGRyc1xuIik7CiAJZWxzZSBpZiAocmV0KQogCQlEUFVf RVJST1JfUExBTkUocGRwdSwgImZhaWxlZCB0byBnZXQgZm9ybWF0IGxheW91dCwgJWRcbiIsIHJl dCk7Ci0JZWxzZSBpZiAocGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX3NvdXJjZWFkZHJlc3MpIHsK LQkJRFBVX0VWVDMyX1ZFUkJPU0UocGRwdS0+cGlwZV9ody0+aWR4LAorCWVsc2UgaWYgKHBpcGVf aHctPm9wcy5zZXR1cF9zb3VyY2VhZGRyZXNzKSB7CisJCURQVV9FVlQzMl9WRVJCT1NFKHBpcGVf aHctPmlkeCwKIAkJCQlwaXBlX2NmZy0+bGF5b3V0LndpZHRoLAogCQkJCXBpcGVfY2ZnLT5sYXlv dXQuaGVpZ2h0LAogCQkJCXBpcGVfY2ZnLT5sYXlvdXQucGxhbmVfYWRkclswXSwKQEAgLTU5OSwx MSArNjAyLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X3BsYW5lX3NldF9zY2Fub3V0KHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCXBpcGVfY2ZnLT5sYXlvdXQucGxhbmVfc2l6ZVsy XSwKIAkJCQlwaXBlX2NmZy0+bGF5b3V0LnBsYW5lX2FkZHJbM10sCiAJCQkJcGlwZV9jZmctPmxh eW91dC5wbGFuZV9zaXplWzNdKTsKLQkJcGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX3NvdXJjZWFk ZHJlc3MocGRwdS0+cGlwZV9odywgcGlwZV9jZmcpOworCQlwaXBlX2h3LT5vcHMuc2V0dXBfc291 cmNlYWRkcmVzcyhwaXBlX2h3LCBwaXBlX2NmZyk7CiAJfQogfQogCi1zdGF0aWMgdm9pZCBfZHB1 X3BsYW5lX3NldHVwX3NjYWxlcjMoc3RydWN0IGRwdV9wbGFuZSAqcGRwdSwKK3N0YXRpYyB2b2lk IF9kcHVfcGxhbmVfc2V0dXBfc2NhbGVyMygKIAkJc3RydWN0IGRwdV9wbGFuZV9zdGF0ZSAqcHN0 YXRlLAogCQl1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gsIHVpbnQzMl90IGRzdF93LCB1 aW50MzJfdCBkc3RfaCwKIAkJc3RydWN0IGRwdV9od19zY2FsZXIzX2NmZyAqc2NhbGVfY2ZnLApA QCAtNjEyLDEyICs2MTUsMTIgQEAgc3RhdGljIHZvaWQgX2RwdV9wbGFuZV9zZXR1cF9zY2FsZXIz KHN0cnVjdCBkcHVfcGxhbmUgKnBkcHUsCiB7CiAJdWludDMyX3QgaTsKIAotCWlmICghcGRwdSB8 fCAhcHN0YXRlIHx8ICFzY2FsZV9jZmcgfHwgIWZtdCB8fCAhY2hyb21hX3N1YnNtcGxfaCB8fAot CQkJIWNocm9tYV9zdWJzbXBsX3YpIHsKKwlpZiAoIXBzdGF0ZSB8fCAhc2NhbGVfY2ZnIHx8ICFm bXQgfHwKKwkJIWNocm9tYV9zdWJzbXBsX2ggfHwgIWNocm9tYV9zdWJzbXBsX3YpIHsKIAkJRFBV X0VSUk9SKAotCQkJInBkcHUgJWQgcHN0YXRlICVkIHNjYWxlX2NmZyAlZCBmbXQgJWQgc21wX2gg JWQgc21wX3YgJWRcbiIsCi0JCQkhIXBkcHUsICEhcHN0YXRlLCAhIXNjYWxlX2NmZywgISFmbXQs IGNocm9tYV9zdWJzbXBsX2gsCi0JCQljaHJvbWFfc3Vic21wbF92KTsKKwkJInBzdGF0ZSVkIHNj YWxlX2NmZyVkIGZtdCVkIHNtcF9oJWQgc21wX3YlZFxuIiwKKwkJISFwc3RhdGUsICEhc2NhbGVf Y2ZnLCAhIWZtdCwgY2hyb21hX3N1YnNtcGxfaCwKKwkJY2hyb21hX3N1YnNtcGxfdik7CiAJCXJl dHVybjsKIAl9CiAKQEAgLTY3Myw3ICs2NzYsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X3BsYW5lX3Nl dHVwX3NjYWxlcjMoc3RydWN0IGRwdV9wbGFuZSAqcGRwdSwKIAlzY2FsZV9jZmctPmVuYWJsZSA9 IDE7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X3BsYW5lX3NldHVwX2NzYyhzdHJ1Y3Qg ZHB1X3BsYW5lICpwZHB1KQorc3RhdGljIGlubGluZSB2b2lkIF9kcHVfcGxhbmVfc2V0dXBfY3Nj KHN0cnVjdCBkcHVfcGxhbmUgKnBkcHUsIHUzMiBmZWF0dXJlcykKIHsKIAlzdGF0aWMgY29uc3Qg c3RydWN0IGRwdV9jc2NfY2ZnIGRwdV9jc2NfWVVWMlJHQl82MDFMID0gewogCQl7CkBAIC03MDks NyArNzEyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9kcHVfcGxhbmVfc2V0dXBfY3NjKHN0cnVj dCBkcHVfcGxhbmUgKnBkcHUpCiAJCXJldHVybjsKIAl9CiAKLQlpZiAoQklUKERQVV9TU1BQX0NT Q18xMEJJVCkgJiBwZHB1LT5mZWF0dXJlcykKKwlpZiAoQklUKERQVV9TU1BQX0NTQ18xMEJJVCkg JiBmZWF0dXJlcykKIAkJcGRwdS0+Y3NjX3B0ciA9IChzdHJ1Y3QgZHB1X2NzY19jZmcgKikmZHB1 X2NzYzEwX1lVVjJSR0JfNjAxTDsKIAllbHNlCiAJCXBkcHUtPmNzY19wdHIgPSAoc3RydWN0IGRw dV9jc2NfY2ZnICopJmRwdV9jc2NfWVVWMlJHQl82MDFMOwpAQCAtNzIwLDE2ICs3MjMsMTggQEAg c3RhdGljIGlubGluZSB2b2lkIF9kcHVfcGxhbmVfc2V0dXBfY3NjKHN0cnVjdCBkcHVfcGxhbmUg KnBkcHUpCiAJCQlwZHB1LT5jc2NfcHRyLT5jc2NfbXZbMl0pOwogfQogCi1zdGF0aWMgdm9pZCBf ZHB1X3BsYW5lX3NldHVwX3NjYWxlcihzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1LAorCitzdGF0aWMg dm9pZCBfZHB1X3BsYW5lX3NldHVwX3NjYWxlcigKIAkJc3RydWN0IGRwdV9wbGFuZV9zdGF0ZSAq cHN0YXRlLAorCQlzdHJ1Y3QgZHB1X2h3X3BpcGVfY2ZnICpwaXBlX2NmZywKIAkJY29uc3Qgc3Ry dWN0IGRwdV9mb3JtYXQgKmZtdCwgYm9vbCBjb2xvcl9maWxsKQogewogCXN0cnVjdCBkcHVfaHdf cGl4ZWxfZXh0ICpwZTsKIAl1aW50MzJfdCBjaHJvbWFfc3Vic21wbF9oLCBjaHJvbWFfc3Vic21w bF92OwogCi0JaWYgKCFwZHB1IHx8ICFmbXQgfHwgIXBzdGF0ZSkgewotCQlEUFVfRVJST1IoImlu dmFsaWQgYXJnKHMpLCBwbGFuZSAlZCBmbXQgJWQgc3RhdGUgJWRcbiIsCi0JCQkJcGRwdSAhPSAw LCBmbXQgIT0gMCwgcHN0YXRlICE9IDApOworCWlmICghZm10IHx8ICFwc3RhdGUpIHsKKwkJRFBV X0VSUk9SKCJpbnZhbGlkIGFyZyhzKSwgZm10ICVkIHN0YXRlICVkXG4iLAorCQkJCWZtdCAhPSAw LCBwc3RhdGUgIT0gMCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTc0MiwxMSArNzQ3LDExIEBAIHN0 YXRpYyB2b2lkIF9kcHVfcGxhbmVfc2V0dXBfc2NhbGVyKHN0cnVjdCBkcHVfcGxhbmUgKnBkcHUs CiAJCWRybV9mb3JtYXRfdmVydF9jaHJvbWFfc3Vic2FtcGxpbmcoZm10LT5iYXNlLnBpeGVsX2Zv cm1hdCk7CiAKIAkvKiB1cGRhdGUgc2NhbGVyLiBjYWxjdWxhdGUgZGVmYXVsdCBjb25maWcgZm9y IFFTRUVEMyAqLwotCV9kcHVfcGxhbmVfc2V0dXBfc2NhbGVyMyhwZHB1LCBwc3RhdGUsCi0JCQlw ZHB1LT5waXBlX2NmZy5zcmNfcmVjdC53LAotCQkJcGRwdS0+cGlwZV9jZmcuc3JjX3JlY3QuaCwK LQkJCXBkcHUtPnBpcGVfY2ZnLmRzdF9yZWN0LncsCi0JCQlwZHB1LT5waXBlX2NmZy5kc3RfcmVj dC5oLAorCV9kcHVfcGxhbmVfc2V0dXBfc2NhbGVyMyhwc3RhdGUsCisJCQlwaXBlX2NmZy0+c3Jj X3JlY3QudywKKwkJCXBpcGVfY2ZnLT5zcmNfcmVjdC5oLAorCQkJcGlwZV9jZmctPmRzdF9yZWN0 LncsCisJCQlwaXBlX2NmZy0+ZHN0X3JlY3QuaCwKIAkJCSZwc3RhdGUtPnNjYWxlcjNfY2ZnLCBm bXQsCiAJCQljaHJvbWFfc3Vic21wbF9oLCBjaHJvbWFfc3Vic21wbF92KTsKIH0KQEAgLTc2NCwx NyArNzY5LDE0IEBAIHN0YXRpYyBpbnQgX2RwdV9wbGFuZV9jb2xvcl9maWxsKHN0cnVjdCBkcHVf cGxhbmUgKnBkcHUsCiAJY29uc3Qgc3RydWN0IGRwdV9mb3JtYXQgKmZtdDsKIAljb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpwc3RhdGU7CisJ c3RydWN0IGRwdV9od19waXBlX2NmZyBwaXBlX2NmZzsKKwlpbnQgaTsKIAogCWlmICghcGRwdSB8 fCAhcGRwdS0+YmFzZS5zdGF0ZSkgewogCQlEUFVfRVJST1IoImludmFsaWQgcGxhbmVcbiIpOwog CQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoIXBkcHUtPnBpcGVfaHcpIHsKLQkJRFBVX0VS Uk9SX1BMQU5FKHBkcHUsICJpbnZhbGlkIHBsYW5lIGgvdyBwb2ludGVyXG4iKTsKLQkJcmV0dXJu IC1FSU5WQUw7Ci0JfQotCiAJcGxhbmUgPSAmcGRwdS0+YmFzZTsKIAlwc3RhdGUgPSB0b19kcHVf cGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKIApAQCAtNzg2LDM0ICs3ODgsNDkgQEAgc3RhdGlj IGludCBfZHB1X3BsYW5lX2NvbG9yX2ZpbGwoc3RydWN0IGRwdV9wbGFuZSAqcGRwdSwKIAkgKi8K IAlmbXQgPSBkcHVfZ2V0X2RwdV9mb3JtYXQoRFJNX0ZPUk1BVF9BQkdSODg4OCk7CiAKLQkvKiB1 cGRhdGUgc3NwcCAqLwotCWlmIChmbXQgJiYgcGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX3NvbGlk ZmlsbCkgewotCQlwZHB1LT5waXBlX2h3LT5vcHMuc2V0dXBfc29saWRmaWxsKHBkcHUtPnBpcGVf aHcsCi0JCQkJKGNvbG9yICYgMHhGRkZGRkYpIHwgKChhbHBoYSAmIDB4RkYpIDw8IDI0KSk7Ci0K LQkJLyogb3ZlcnJpZGUgc2NhbGVyL2RlY2ltYXRpb24gaWYgc29saWQgZmlsbCAqLwotCQlwZHB1 LT5waXBlX2NmZy5zcmNfcmVjdC54ID0gMDsKLQkJcGRwdS0+cGlwZV9jZmcuc3JjX3JlY3QueSA9 IDA7Ci0JCXBkcHUtPnBpcGVfY2ZnLnNyY19yZWN0LncgPSBwZHB1LT5waXBlX2NmZy5kc3RfcmVj dC53OwotCQlwZHB1LT5waXBlX2NmZy5zcmNfcmVjdC5oID0gcGRwdS0+cGlwZV9jZmcuZHN0X3Jl Y3QuaDsKLQkJX2RwdV9wbGFuZV9zZXR1cF9zY2FsZXIocGRwdSwgcHN0YXRlLCBmbXQsIHRydWUp OworCW1lbXNldCgmcGlwZV9jZmcsIDAsIHNpemVvZihzdHJ1Y3QgZHB1X2h3X3BpcGVfY2ZnKSk7 CiAKLQkJaWYgKHBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9mb3JtYXQpCi0JCQlwZHB1LT5waXBl X2h3LT5vcHMuc2V0dXBfZm9ybWF0KHBkcHUtPnBpcGVfaHcsCi0JCQkJCWZtdCwgRFBVX1NTUFBf U09MSURfRklMTCk7CisJX2RwdV9wbGFuZV9nZXRfcm9pX2NvbmZpZyhwbGFuZS0+c3RhdGUsIE5V TEwsICZwaXBlX2NmZy5kc3RfcmVjdCk7CiAKLQkJaWYgKHBkcHUtPnBpcGVfaHctPm9wcy5zZXR1 cF9yZWN0cykKLQkJCXBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9yZWN0cyhwZHB1LT5waXBlX2h3 LAotCQkJCQkmcGRwdS0+cGlwZV9jZmcpOwotCi0JCWlmIChwZHB1LT5waXBlX2h3LT5vcHMuc2V0 dXBfcGUpCi0JCQlwZHB1LT5waXBlX2h3LT5vcHMuc2V0dXBfcGUocGRwdS0+cGlwZV9odywKLQkJ CQkJJnBzdGF0ZS0+cGl4ZWxfZXh0KTsKKwkvKiB1cGRhdGUgc3NwcCAqLworCWZvciAoaSA9IDA7 IGkgPCBwc3RhdGUtPm51bV9waXBlczsgaSsrKSB7CisJCWlmIChmbXQgJiYgcHN0YXRlLT5waXBl X2h3W2ldICYmCisJCQlwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9zb2xpZGZpbGwpIHsK KwkJCXBzdGF0ZS0+cGlwZV9od1tpXS0+b3BzLnNldHVwX3NvbGlkZmlsbCgKKwkJCQlwc3RhdGUt PnBpcGVfaHdbaV0sCisJCQkJKGNvbG9yICYgMHhGRkZGRkYpIHwgKChhbHBoYSAmIDB4RkYpIDw8 IDI0KSk7CiAKLQkJaWYgKHBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9zY2FsZXIpCi0JCQlwZHB1 LT5waXBlX2h3LT5vcHMuc2V0dXBfc2NhbGVyKHBkcHUtPnBpcGVfaHcsCi0JCQkJCSZwZHB1LT5w aXBlX2NmZywgJnBzdGF0ZS0+cGl4ZWxfZXh0LAorCQkJLyoKKwkJCSAqIG92ZXJyaWRlIHNjYWxl ci9kZWNpbWF0aW9uIGlmIHNvbGlkIGZpbGwKKwkJCSAqIGFsc28sIGFkanVzdCB0aGUgZHN0Lngg aW4gY2FzZSBvZiBkdWFsIHBpcGUKKwkJCSAqLworCQkJcGlwZV9jZmcuZHN0X3JlY3QueCArPSBw aXBlX2NmZy5kc3RfcmVjdC53ICogaTsKKwkJCXBpcGVfY2ZnLnNyY19yZWN0LnggPSAwOworCQkJ cGlwZV9jZmcuc3JjX3JlY3QueSA9IDA7CisJCQlwaXBlX2NmZy5zcmNfcmVjdC53ID0gcGlwZV9j ZmcuZHN0X3JlY3QudzsKKwkJCXBpcGVfY2ZnLnNyY19yZWN0LmggPSBwaXBlX2NmZy5kc3RfcmVj dC5oOworCisJCQlfZHB1X3BsYW5lX3NldHVwX3NjYWxlcihwc3RhdGUsICZwaXBlX2NmZywgZm10 LCB0cnVlKTsKKworCQkJaWYgKHBzdGF0ZS0+cGlwZV9od1tpXS0+b3BzLnNldHVwX2Zvcm1hdCkK KwkJCQlwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9mb3JtYXQoCisJCQkJCXBzdGF0ZS0+ cGlwZV9od1tpXSwgZm10LAorCQkJCQlEUFVfU1NQUF9TT0xJRF9GSUxMKTsKKworCQkJaWYgKHBz dGF0ZS0+cGlwZV9od1tpXS0+b3BzLnNldHVwX3JlY3RzKQorCQkJCXBzdGF0ZS0+cGlwZV9od1tp XS0+b3BzLnNldHVwX3JlY3RzKAorCQkJCQlwc3RhdGUtPnBpcGVfaHdbaV0sICZwaXBlX2NmZyk7 CisKKwkJCWlmIChwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9wZSkKKwkJCQlwc3RhdGUt PnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9wZSgKKwkJCQkJcHN0YXRlLT5waXBlX2h3W2ldLCAmcHN0 YXRlLT5waXhlbF9leHQpOworCisJCQlpZiAocHN0YXRlLT5waXBlX2h3W2ldLT5vcHMuc2V0dXBf c2NhbGVyKQorCQkJCXBzdGF0ZS0+cGlwZV9od1tpXS0+b3BzLnNldHVwX3NjYWxlcigKKwkJCQkJ cHN0YXRlLT5waXBlX2h3W2ldLCAmcGlwZV9jZmcsCisJCQkJCSZwc3RhdGUtPnBpeGVsX2V4dCwK IAkJCQkJJnBzdGF0ZS0+c2NhbGVyM19jZmcpOworCQl9CiAJfQogCiAJcmV0dXJuIDA7CkBAIC04 MjksNiArODQ2LDcgQEAgdm9pZCBkcHVfcGxhbmVfZ2V0X2N0bF9mbHVzaChzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwgc3RydWN0IGRwdV9od19jdGwgKmN0bCwKIAkJdTMyICpmbHVzaF9zc3BwKQog ewogCXN0cnVjdCBkcHVfcGxhbmVfc3RhdGUgKnBzdGF0ZTsKKwlpbnQgaTsKIAogCWlmICghcGxh bmUgfHwgIWZsdXNoX3NzcHApIHsKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtZXRlcnNcbiIp OwpAQCAtODM3LDcgKzg1NSwxMCBAQCB2b2lkIGRwdV9wbGFuZV9nZXRfY3RsX2ZsdXNoKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHB1X2h3X2N0bCAqY3RsLAogCiAJcHN0YXRlID0g dG9fZHB1X3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7CiAKLQkqZmx1c2hfc3NwcCA9IGN0bC0+ b3BzLmdldF9iaXRtYXNrX3NzcHAoY3RsLCBkcHVfcGxhbmVfcGlwZShwbGFuZSkpOworCWZvciAo aSA9IDA7IGkgPCBwc3RhdGUtPm51bV9waXBlczsgaSsrKQorCQkqZmx1c2hfc3NwcCB8PSBjdGwt Pm9wcy5nZXRfYml0bWFza19zc3BwKGN0bCwKKwkJCQlkcHVfcGxhbmVfcGlwZShwc3RhdGUtPnBp cGVfaHdbaV0pKTsKKwogfQogCiBzdGF0aWMgaW50IGRwdV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLApAQCAtOTIxLDExICs5NDIsMTIgQEAgc3RhdGljIGludCBkcHVf cGxhbmVfc3NwcF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0 IGRwdV9rbXMgKmttczsKIAlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1OwogCXN0cnVjdCBkcHVfcGxh bmVfc3RhdGUgKnBzdGF0ZTsKKwlzdHJ1Y3QgZHB1X3ByaXZhdGVfc3RhdGUgKmRwdV9wcml2X3N0 YXRlOwogCWNvbnN0IHN0cnVjdCBkcHVfZm9ybWF0ICpmbXQ7CiAJc3RydWN0IGRwdV9yZWN0IHNy YywgZHN0OwogCXVpbnQzMl90IG1heF91cHNjYWxlLCBtYXhfZG93bnNjYWxlLCBtaW5fc3JjX3Np emUsIG1heF9saW5ld2lkdGg7CiAJYm9vbCBxMTZfZGF0YSA9IHRydWU7Ci0JdWludDMyX3QgY2Fw cyA9IDA7CisJdWludDMyX3QgY2FwcyA9IDAsIHJlcV9udW1fcGlwZXMgPSAwOwogCiAJaWYgKCFw bGFuZSB8fCAhc3RhdGUpIHsKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZyhzKSwgcGxhbmUgJWQg c3RhdGUgJWRcbiIsCkBAIC05NTAsNyArOTcyLDIwIEBAIHN0YXRpYyBpbnQgZHB1X3BsYW5lX3Nz cHBfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlkcHVfcGxhbmVfZW5h YmxlZChwbGFuZS0+c3RhdGUpLCBkcHVfcGxhbmVfZW5hYmxlZChzdGF0ZSkpOwogCiAJaWYgKCFk cHVfcGxhbmVfZW5hYmxlZChzdGF0ZSkpCisJCWdvdG8gbW9kZXNldF91cGRhdGU7CisKKwkvKiBX aXRoIHBsYW5lIHZpcnR1YWxpemF0aW9uLCBhIGRybSBwbGFuZSBjYW4gYmUgYXR0YWNoZWQKKwkg KiB0byBtYXhpbXVtIG9mIHR3byBodyBwaXBlcywgaS5lLiB3ZSBjYW4gZ28gdXAgdG8gMngKKwkg KiB0aGUgcGlwZSdzIG1heCB3aWR0aC4KKwkgKi8KKwlpZiAoc3JjLncgPiAyICogbWF4X2xpbmV3 aWR0aCkgeworCQlEUFVfRVJST1JfUExBTkUocGRwdSwgImludmFsaWQgc3JjIHc6JXUsIGxpbmUg dyAqIDI6JXVcbiIsCisJCQkJCXNyYy53LCBtYXhfbGluZXdpZHRoICogMik7CisJCXJldCA9IC1F MkJJRzsKIAkJZ290byBleGl0OworCX0KKworCXJlcV9udW1fcGlwZXMgPSAoc3JjLncgPiBtYXhf bGluZXdpZHRoKSA/IDIgOiAxOwogCiAJZm10ID0gdG9fZHB1X2Zvcm1hdChtc21fZnJhbWVidWZm ZXJfZm9ybWF0KHN0YXRlLT5mYikpOwogCkBAIC05ODgsMTMgKzEwMjMsNiBAQCBzdGF0aWMgaW50 IGRwdV9wbGFuZV9zc3BwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJ CQlkc3QueCwgZHN0LnksIGRzdC53LCBkc3QuaCk7CiAJCXJldCA9IC1FSU5WQUw7CiAKLQkvKiBj aGVjayBkZWNpbWF0ZWQgc291cmNlIHdpZHRoICovCi0JfSBlbHNlIGlmIChzcmMudyA+IG1heF9s aW5ld2lkdGgpIHsKLQkJRFBVX0VSUk9SX1BMQU5FKHBkcHUsCi0JCQkJImludmFsaWQgc3JjIHc6 JXUsIGxpbmUgdzoldVxuIiwKLQkJCQlzcmMudywgbWF4X2xpbmV3aWR0aCk7Ci0JCXJldCA9IC1F MkJJRzsKLQogCS8qIGNoZWNrIG1heCBzY2FsZXIgY2FwYWJpbGl0eSAqLwogCX0gZWxzZSBpZiAo KChzcmMudyAqIG1heF91cHNjYWxlKSA8IGRzdC53KSB8fAogCQkoKHNyYy5oICogbWF4X3Vwc2Nh bGUpIDwgZHN0LmgpIHx8CkBAIC0xMDA2LDYgKzEwMzQsNDQgQEAgc3RhdGljIGludCBkcHVfcGxh bmVfc3NwcF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXJldCA9IC1F MkJJRzsKIAl9CiAKK21vZGVzZXRfdXBkYXRlOgorCWlmICghcmV0KSB7CisJCWRwdV9wcml2X3N0 YXRlID0gZHB1X2dldF9wcml2YXRlX3N0YXRlKHN0YXRlLT5zdGF0ZSk7CisJCWlmIChJU19FUlIo ZHB1X3ByaXZfc3RhdGUpKQorCQkJZ290byBleGl0OworCisJCS8qKgorCQkgKiAocmUpYWxsb2Nh dGUgaHcgcGlwZXMgaWYgbWlzbWF0Y2ggaW4gbnVtYmVyIG9mIHBpcGVzCisJCSAqIG9yIGNhcHMg b2YgYWxsb2NhdGVkIHZzIHJlcXVlc3RlZC4KKwkJICovCisJCURQVV9ERUJVR19QTEFORShwZHB1 LCAiIG51bSBwaXBlcyAlZCAtPiAlZCBjYXBzICVkXG4iLAorCQkJIHBzdGF0ZS0+bnVtX3BpcGVz LCByZXFfbnVtX3BpcGVzLCBjYXBzKTsKKworCQlpZiAoKHBzdGF0ZS0+bnVtX3BpcGVzICE9IHJl cV9udW1fcGlwZXMpIHx8IChwc3RhdGUtPnBpcGVfaHdbMF0KKwkJCSYmIChjYXBzICYgfnBzdGF0 ZS0+cGlwZV9od1swXS0+Y2FwLT5mZWF0dXJlcykpKSB7CisJCQkvKioKKwkJCSAqIFJlbGVhc2Ug Y2FsbGVkIG9ubHkgZm9yIHBsYW5lcyB3aXRoIHBpcGVzIGF0dGFjaGVkLgorCQkJICogTmV3IHBs YW5lIHdpbGwgaGF2ZSBubyByZXNvdXJjZXMgdG8gYmUgcmVsZWFzZWQuCisJCQkgKi8KKwkJCWlm IChwc3RhdGUtPm51bV9waXBlcykKKwkJCQlkcHVfcm1fcmVsZWFzZV9wbGFuZV9yZXMoJmRwdV9w cml2X3N0YXRlLT5ybSwKKwkJCQkJCQlwc3RhdGUpOworCisJCQkvKioKKwkJCSAqIFJlc2VydmUg Y2FsbGVkIG9ubHkgZm9yIHBsYW5lcyB0aGF0IGFyZSBlbmFibGVkLgorCQkJICogUGxhbmUgdGhh dCBpcyBkaXNhYmxpbmcgd2lsbCByZXF1aXJlIG5vIHJlc291cmNlcy4KKwkJCSAqLworCQkJaWYg KHJlcV9udW1fcGlwZXMpIHsKKwkJCQlyZXQgPSBkcHVfcm1fcmVzZXJ2ZV9wbGFuZV9yZXMoCisJ CQkJCSZkcHVfcHJpdl9zdGF0ZS0+cm0sIHBzdGF0ZSwKKwkJCQkJcmVxX251bV9waXBlcywgY2Fw cyk7CisJCQkJaWYgKHJldCkKKwkJCQkJRFBVX0VSUk9SX1BMQU5FKHBkcHUsCisJCQkJCSJmYWls ZWQgdG8gcmVzZXJ2ZSByZXNvdXJjZXNcbiIpOworCQkJfQorCQl9CisJfQorCiBleGl0OgogCXJl dHVybiByZXQ7CiB9CkBAIC0xMDM5LDYgKzExMDUsNyBAQCB2b2lkIGRwdV9wbGFuZV9mbHVzaChz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHsKIAlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1OwogCXN0 cnVjdCBkcHVfcGxhbmVfc3RhdGUgKnBzdGF0ZTsKKwlpbnQgaTsKIAogCWlmICghcGxhbmUgfHwg IXBsYW5lLT5zdGF0ZSkgewogCQlEUFVfRVJST1IoImludmFsaWQgcGxhbmVcbiIpOwpAQCAtMTA1 OCw4ICsxMTI1LDE0IEBAIHZvaWQgZHB1X3BsYW5lX2ZsdXNoKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lKQogCWVsc2UgaWYgKHBkcHUtPmNvbG9yX2ZpbGwgJiBEUFVfUExBTkVfQ09MT1JfRklMTF9G TEFHKQogCQkvKiBmb3JjZSAxMDAlIGFscGhhICovCiAJCV9kcHVfcGxhbmVfY29sb3JfZmlsbChw ZHB1LCBwZHB1LT5jb2xvcl9maWxsLCAweEZGKTsKLQllbHNlIGlmIChwZHB1LT5waXBlX2h3ICYm IHBkcHUtPmNzY19wdHIgJiYgcGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX2NzYykKLQkJcGRwdS0+ cGlwZV9ody0+b3BzLnNldHVwX2NzYyhwZHB1LT5waXBlX2h3LCBwZHB1LT5jc2NfcHRyKTsKKwll bHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IHBzdGF0ZS0+bnVtX3BpcGVzOyBpKyspIHsKKwkJCWlm IChwc3RhdGUtPnBpcGVfaHdbaV0gJiYgcGRwdS0+Y3NjX3B0ciAmJgorCQkJCXBzdGF0ZS0+cGlw ZV9od1tpXS0+b3BzLnNldHVwX2NzYykKKwkJCQlwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1 cF9jc2MoCisJCQkJCXBzdGF0ZS0+cGlwZV9od1tpXSwgcGRwdS0+Y3NjX3B0cik7CisJCX0KKwl9 CiAKIAkvKiBmb3JjZSBibGFjayBjb2xvciBmaWxsIGR1cmluZyBzdXNwZW5kICovCiAJaWYgKGRw dV9rbXNfaXNfc3VzcGVuZF9zdGF0ZShwbGFuZS0+ZGV2KSAmJiBzdXNwZW5kX2JsYW5rKQpAQCAt MTA4OSw2ICsxMTYyLDcgQEAgc3RhdGljIGludCBkcHVfcGxhbmVfc3NwcF9hdG9taWNfdXBkYXRl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9s ZF9zdGF0ZSkKIHsKIAl1aW50MzJfdCBucGxhbmVzLCBzcmNfZmxhZ3M7CisJc3RydWN0IGRwdV9r bXMgKmttczsKIAlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1OwogCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnN0YXRlOwogCXN0cnVjdCBkcHVfcGxhbmVfc3RhdGUgKnBzdGF0ZTsKQEAgLTEwOTcsNyAr MTE3MSw4IEBAIHN0YXRpYyBpbnQgZHB1X3BsYW5lX3NzcHBfYXRvbWljX3VwZGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmI7CiAJc3RydWN0IGRwdV9yZWN0IHNyYywgZHN0OwotCWJvb2wgcTE2X2Rh dGEgPSB0cnVlOworCXN0cnVjdCBkcHVfaHdfcGlwZV9jZmcgcGlwZV9jZmc7CisJaW50IGk7CiAK IAlpZiAoIXBsYW5lKSB7CiAJCURQVV9FUlJPUigiaW52YWxpZCBwbGFuZVxuIik7CkBAIC0xMTI0 LDk2ICsxMTk5LDExNSBAQCBzdGF0aWMgaW50IGRwdV9wbGFuZV9zc3BwX2F0b21pY191cGRhdGUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJY3J0YyAhPSAwLCBmYiAhPSAwKTsKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJfQorCisJa21zID0gX2RwdV9wbGFuZV9nZXRfa21zKCZwZHB1LT5iYXNl KTsKKwlpZiAoIWttcyB8fCAha21zLT5jYXRhbG9nKSB7CisJCURQVV9FUlJPUigiaW52YWxpZCBr bXMgY2F0YWxvZ1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCWZtdCA9IHRvX2RwdV9m b3JtYXQobXNtX2ZyYW1lYnVmZmVyX2Zvcm1hdChmYikpOwogCW5wbGFuZXMgPSBmbXQtPm51bV9w bGFuZXM7CiAKLQltZW1zZXQoJihwZHB1LT5waXBlX2NmZyksIDAsIHNpemVvZihzdHJ1Y3QgZHB1 X2h3X3BpcGVfY2ZnKSk7Ci0KLQlfZHB1X3BsYW5lX3NldF9zY2Fub3V0KHBsYW5lLCBwc3RhdGUs ICZwZHB1LT5waXBlX2NmZywgZmIpOworCURQVV9ERUJVR19QTEFORShwZHB1LCAiJTQuNHMgdWJ3 YyAlZFxuIiwKKwkJKGNoYXIgKikmZm10LT5iYXNlLnBpeGVsX2Zvcm1hdCwgRFBVX0ZPUk1BVF9J U19VQldDKGZtdCkpOwogCiAJcHN0YXRlLT5wZW5kaW5nID0gdHJ1ZTsKKwlwZHB1LT5pc19ydF9j bGllbnQgPSAoZHB1X2NydGNfZ2V0X2NsaWVudF90eXBlKGNydGMpICE9IE5SVF9DTElFTlQpOwog Ci0JcGRwdS0+aXNfcnRfcGlwZSA9IChkcHVfY3J0Y19nZXRfY2xpZW50X3R5cGUoY3J0YykgIT0g TlJUX0NMSUVOVCk7Ci0JX2RwdV9wbGFuZV9zZXRfcW9zX2N0cmwocGxhbmUsIGZhbHNlLCBEUFVf UExBTkVfUU9TX1BBTklDX0NUUkwpOworCV9kcHVfcGxhbmVfZ2V0X3JvaV9jb25maWcoc3RhdGUs ICZzcmMsICZkc3QpOwogCi0JLyogdXBkYXRlIHJvaSBjb25maWcgKi8KLQlQT1BVTEFURV9SRUNU KCZzcmMsIHN0YXRlLT5zcmNfeCwgc3RhdGUtPnNyY195LAotCQlzdGF0ZS0+c3JjX3csIHN0YXRl LT5zcmNfaCwgcTE2X2RhdGEpOwotCVBPUFVMQVRFX1JFQ1QoJmRzdCwgc3RhdGUtPmNydGNfeCwg c3RhdGUtPmNydGNfeSwKLQkJc3RhdGUtPmNydGNfdywgc3RhdGUtPmNydGNfaCwgIXExNl9kYXRh KTsKKwlmb3IgKGkgPSAwOyBpIDwgcHN0YXRlLT5udW1fcGlwZXM7IGkrKykgeworCQltZW1zZXQo JnBpcGVfY2ZnLCAwLCBzaXplb2Yoc3RydWN0IGRwdV9od19waXBlX2NmZykpOwogCi0JRFBVX0RF QlVHX1BMQU5FKHBkcHUsCi0JCSJGQlsldV0gJXUsJXUsJXV4JXUtPmNydGMldSAlZCwlZCwldXgl dSwgJTQuNHMgdWJ3YyAlZFxuIiwKLQkJCWZiLT5iYXNlLmlkLCBzcmMueCwgc3JjLnksIHNyYy53 LCBzcmMuaCwKLQkJCWNydGMtPmJhc2UuaWQsIGRzdC54LCBkc3QueSwgZHN0LncsIGRzdC5oLAot CQkJKGNoYXIgKikmZm10LT5iYXNlLnBpeGVsX2Zvcm1hdCwKLQkJCURQVV9GT1JNQVRfSVNfVUJX QyhmbXQpKTsKKwkJX2RwdV9wbGFuZV9zZXRfc2Nhbm91dChwZHB1LCBwc3RhdGUsIHBzdGF0ZS0+ cGlwZV9od1tpXSwKKwkJCQkJJnBpcGVfY2ZnLCBmYik7CisJCV9kcHVfcGxhbmVfc2V0X3Fvc19j dHJsKHBsYW5lLCAgcHN0YXRlLT5waXBlX2h3W2ldLAorCQkJCQlmYWxzZSwgRFBVX1BMQU5FX1FP U19QQU5JQ19DVFJMKTsKIAorCQkvKgorCQkgKiBpZiB0aGUgcGxhbmUgY29tcHJpc2VzIG9mIDIg aHcgcGlwZXMsIGFzc3VtZSB0aGF0IHRoZSB3aWR0aAorCQkgKiBpcyBzcGxpdCBlcXVhbGx5IGFj cm9zcyB0aGVtLiBUaGUgb25seSBwYXJhbWV0ZXJzIHRoYXQgdmFyaWVzCisJCSAqIGJldHdlZW4g dGhlIDIgcGlwZXMgYXJlIHNyY194IGFuZCBkc3RfeAorCQkgKi8KKwkJc3JjLnggKz0gc3JjLncg KiBpOworCQlkc3QueCArPSBkc3QudyAqIGk7CiAKLQlwZHB1LT5waXBlX2NmZy5zcmNfcmVjdCA9 IHNyYzsKLQlwZHB1LT5waXBlX2NmZy5kc3RfcmVjdCA9IGRzdDsKKwkJcGlwZV9jZmcuc3JjX3Jl Y3QgPSBzcmM7CisJCXBpcGVfY2ZnLmRzdF9yZWN0ID0gZHN0OwogCi0JX2RwdV9wbGFuZV9zZXR1 cF9zY2FsZXIocGRwdSwgcHN0YXRlLCBmbXQsIGZhbHNlKTsKKwkJX2RwdV9wbGFuZV9zZXR1cF9z Y2FsZXIocHN0YXRlLCAmcGlwZV9jZmcsIGZtdCwgZmFsc2UpOwogCi0JLyogb3ZlcnJpZGUgZm9y IGNvbG9yIGZpbGwgKi8KLQlpZiAocGRwdS0+Y29sb3JfZmlsbCAmIERQVV9QTEFORV9DT0xPUl9G SUxMX0ZMQUcpIHsKLQkJLyogc2tpcCByZW1haW5pbmcgcHJvY2Vzc2luZyBvbiBjb2xvciBmaWxs ICovCi0JCXJldHVybiAwOwotCX0KKwkJLyogb3ZlcnJpZGUgZm9yIGNvbG9yIGZpbGwgKi8KKwkJ aWYgKHBkcHUtPmNvbG9yX2ZpbGwgJiBEUFVfUExBTkVfQ09MT1JfRklMTF9GTEFHKSB7CisJCQkv KiBza2lwIHJlbWFpbmluZyBwcm9jZXNzaW5nIG9uIGNvbG9yIGZpbGwgKi8KKwkJCXJldHVybiAw OworCQl9CiAKLQlpZiAocGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX3JlY3RzKSB7Ci0JCXBkcHUt PnBpcGVfaHctPm9wcy5zZXR1cF9yZWN0cyhwZHB1LT5waXBlX2h3LAotCQkJCSZwZHB1LT5waXBl X2NmZyk7Ci0JfQorCQlpZiAocHN0YXRlLT5waXBlX2h3W2ldLT5vcHMuc2V0dXBfcmVjdHMpIHsK KwkJCXBzdGF0ZS0+cGlwZV9od1tpXS0+b3BzLnNldHVwX3JlY3RzKHBzdGF0ZS0+cGlwZV9od1tp XSwKKwkJCQkJJnBpcGVfY2ZnKTsKKwkJfQogCi0JaWYgKHBkcHUtPnBpcGVfaHctPm9wcy5zZXR1 cF9wZSkKLQkJcGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX3BlKHBkcHUtPnBpcGVfaHcsCi0JCQkJ JnBzdGF0ZS0+cGl4ZWxfZXh0KTsKKwkJaWYgKHBzdGF0ZS0+cGlwZV9od1tpXS0+b3BzLnNldHVw X3BlKQorCQkJcHN0YXRlLT5waXBlX2h3W2ldLT5vcHMuc2V0dXBfcGUocHN0YXRlLT5waXBlX2h3 W2ldLAorCQkJCQkmcHN0YXRlLT5waXhlbF9leHQpOwogCi0JaWYgKHBkcHUtPnBpcGVfaHctPm9w cy5zZXR1cF9zY2FsZXIpCi0JCXBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9zY2FsZXIocGRwdS0+ cGlwZV9odywKLQkJCQkmcGRwdS0+cGlwZV9jZmcsICZwc3RhdGUtPnBpeGVsX2V4dCwKLQkJCQkm cHN0YXRlLT5zY2FsZXIzX2NmZyk7CisJCWlmIChwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1 cF9zY2FsZXIpCisJCQlwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9zY2FsZXIocHN0YXRl LT5waXBlX2h3W2ldLAorCQkJCQkmcGlwZV9jZmcsICZwc3RhdGUtPnBpeGVsX2V4dCwKKwkJCQkJ JnBzdGF0ZS0+c2NhbGVyM19jZmcpOwogCi0JaWYgKHBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9m b3JtYXQpIHsKLQkJc3JjX2ZsYWdzID0gMHgwOworCQlpZiAocHN0YXRlLT5waXBlX2h3W2ldLT5v cHMuc2V0dXBfZm9ybWF0KSB7CisJCQlzcmNfZmxhZ3MgPSAweDA7CiAKLQkJLyogdXBkYXRlIGZv cm1hdCAqLwotCQlwZHB1LT5waXBlX2h3LT5vcHMuc2V0dXBfZm9ybWF0KHBkcHUtPnBpcGVfaHcs IGZtdCwgc3JjX2ZsYWdzKTsKKwkJCS8qIHVwZGF0ZSBmb3JtYXQgKi8KKwkJCXBzdGF0ZS0+cGlw ZV9od1tpXS0+b3BzLnNldHVwX2Zvcm1hdCgKKwkJCQkJcHN0YXRlLT5waXBlX2h3W2ldLCBmbXQs IHNyY19mbGFncyk7CiAKLQkJaWYgKHBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9jZHApIHsKLQkJ CXN0cnVjdCBkcHVfaHdfcGlwZV9jZHBfY2ZnICpjZHBfY2ZnID0gJnBzdGF0ZS0+Y2RwX2NmZzsK KwkJCWlmIChwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9jZHApIHsKKwkJCQlzdHJ1Y3Qg ZHB1X2h3X3BpcGVfY2RwX2NmZyAqY2RwX2NmZyA9CisJCQkJCQkmcHN0YXRlLT5jZHBfY2ZnOwog Ci0JCQltZW1zZXQoY2RwX2NmZywgMCwgc2l6ZW9mKHN0cnVjdCBkcHVfaHdfcGlwZV9jZHBfY2Zn KSk7CisJCQkJbWVtc2V0KGNkcF9jZmcsIDAsCisJCQkJCXNpemVvZihzdHJ1Y3QgZHB1X2h3X3Bp cGVfY2RwX2NmZykpOwogCi0JCQljZHBfY2ZnLT5lbmFibGUgPSBwZHB1LT5jYXRhbG9nLT5wZXJm LmNkcF9jZmcKKwkJCQljZHBfY2ZnLT5lbmFibGUgPSBrbXMtPmNhdGFsb2ctPnBlcmYuY2RwX2Nm ZwogCQkJCQlbRFBVX1BFUkZfQ0RQX1VTQUdFX1JUXS5yZF9lbmFibGU7Ci0JCQljZHBfY2ZnLT51 YndjX21ldGFfZW5hYmxlID0KKwkJCQljZHBfY2ZnLT51YndjX21ldGFfZW5hYmxlID0KIAkJCQkJ RFBVX0ZPUk1BVF9JU19VQldDKGZtdCk7Ci0JCQljZHBfY2ZnLT50aWxlX2Ftb3J0aXplX2VuYWJs ZSA9CisJCQkJY2RwX2NmZy0+dGlsZV9hbW9ydGl6ZV9lbmFibGUgPQogCQkJCQlEUFVfRk9STUFU X0lTX1VCV0MoZm10KSB8fAogCQkJCQlEUFVfRk9STUFUX0lTX1RJTEUoZm10KTsKLQkJCWNkcF9j ZmctPnByZWxvYWRfYWhlYWQgPSBEUFVfU1NQUF9DRFBfUFJFTE9BRF9BSEVBRF82NDsKLQotCQkJ cGRwdS0+cGlwZV9ody0+b3BzLnNldHVwX2NkcChwZHB1LT5waXBlX2h3LCBjZHBfY2ZnKTsKKwkJ CQljZHBfY2ZnLT5wcmVsb2FkX2FoZWFkID0KKwkJCQkJRFBVX1NTUFBfQ0RQX1BSRUxPQURfQUhF QURfNjQ7CisKKwkJCQlwc3RhdGUtPnBpcGVfaHdbaV0tPm9wcy5zZXR1cF9jZHAoCisJCQkJCXBz dGF0ZS0+cGlwZV9od1tpXSwgY2RwX2NmZyk7CisJCQl9CisKKwkJCS8qIHVwZGF0ZSBjc2MgKi8K KwkJCWlmIChEUFVfRk9STUFUX0lTX1lVVihmbXQpKQorCQkJCV9kcHVfcGxhbmVfc2V0dXBfY3Nj KHBkcHUsCisJCQkJCXBzdGF0ZS0+cGlwZV9od1tpXS0+Y2FwLT5mZWF0dXJlcyk7CisJCQllbHNl CisJCQkJcGRwdS0+Y3NjX3B0ciA9IDA7CiAJCX0KIAotCQkvKiB1cGRhdGUgY3NjICovCi0JCWlm IChEUFVfRk9STUFUX0lTX1lVVihmbXQpKQotCQkJX2RwdV9wbGFuZV9zZXR1cF9jc2MocGRwdSk7 Ci0JCWVsc2UKLQkJCXBkcHUtPmNzY19wdHIgPSAwOwotCX0KKwkJX2RwdV9wbGFuZV9zZXRfcW9z X2x1dChwbGFuZSwgcHN0YXRlLT5waXBlX2h3W2ldLAorCQkJCQkmcGlwZV9jZmcsIGZiKTsKKwkJ X2RwdV9wbGFuZV9zZXRfZGFuZ2VyX2x1dChwbGFuZSwgcHN0YXRlLT5waXBlX2h3W2ldLCBmYik7 CiAKLQlfZHB1X3BsYW5lX3NldF9xb3NfbHV0KHBsYW5lLCBmYik7Ci0JX2RwdV9wbGFuZV9zZXRf ZGFuZ2VyX2x1dChwbGFuZSwgZmIpOworCQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SKSB7CisJCQlfZHB1X3BsYW5lX3NldF9xb3NfY3RybChwbGFuZSwgIHBzdGF0ZS0+ cGlwZV9od1tpXSwKKwkJCQkJdHJ1ZSwgRFBVX1BMQU5FX1FPU19QQU5JQ19DVFJMKTsKKwkJCV9k cHVfcGxhbmVfc2V0X290X2xpbWl0KHBsYW5lLCAgcHN0YXRlLT5waXBlX2h3W2ldLAorCQkJCQkm cGlwZV9jZmcsIGNydGMpOworCQl9CiAKLQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SKSB7Ci0JCV9kcHVfcGxhbmVfc2V0X3Fvc19jdHJsKHBsYW5lLCB0cnVlLCBEUFVf UExBTkVfUU9TX1BBTklDX0NUUkwpOwotCQlfZHB1X3BsYW5lX3NldF9vdF9saW1pdChwbGFuZSwg Y3J0Yyk7CisJCV9kcHVfcGxhbmVfc2V0X3Fvc19yZW1hcChwbGFuZSwgcHN0YXRlLT5waXBlX2h3 W2ldKTsKIAl9CiAKLQlfZHB1X3BsYW5lX3NldF9xb3NfcmVtYXAocGxhbmUpOwogCXJldHVybiAw OwogfQogCkBAIC0xMjcwLDExICsxMzY0LDE5IEBAIHZvaWQgZHB1X3BsYW5lX3Jlc3RvcmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpCiBzdGF0aWMgdm9pZCBkcHVfcGxhbmVfZGVzdHJveShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHsKIAlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1ID0gcGxhbmUg PyB0b19kcHVfcGxhbmUocGxhbmUpIDogTlVMTDsKKwlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpw c3RhdGU7CisJaW50IGk7CiAKIAlEUFVfREVCVUdfUExBTkUocGRwdSwgIlxuIik7CiAKIAlpZiAo cGRwdSkgewotCQlfZHB1X3BsYW5lX3NldF9xb3NfY3RybChwbGFuZSwgZmFsc2UsIERQVV9QTEFO RV9RT1NfUEFOSUNfQ1RSTCk7CisJCXBzdGF0ZSA9IHBsYW5lLT5zdGF0ZSA/IHRvX2RwdV9wbGFu ZV9zdGF0ZShwbGFuZS0+c3RhdGUpIDogTlVMTDsKKwkJaWYgKHBzdGF0ZSkgeworCQkJZm9yIChp ID0gMDsgaSA8IHBzdGF0ZS0+bnVtX3BpcGVzOyBpKyspCisJCQkJX2RwdV9wbGFuZV9zZXRfcW9z X2N0cmwocGxhbmUsCisJCQkJCXBzdGF0ZS0+cGlwZV9od1tpXSwgZmFsc2UsCisJCQkJCURQVV9Q TEFORV9RT1NfUEFOSUNfQ1RSTCk7CisJCX0KIAogCQltdXRleF9kZXN0cm95KCZwZHB1LT5sb2Nr KTsKIApAQCAtMTQ4NCw3ICsxNTg2LDcgQEAgc3RhdGljIGludCBfZHB1X3BsYW5lX2luaXRfZGVi dWdmcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAogCS8qIGNyZWF0ZSBvdmVyYWxsIHN1Yi1k aXJlY3RvcnkgZm9yIHRoZSBwaXBlICovCiAJcGRwdS0+ZGVidWdmc19yb290ID0KLQkJZGVidWdm c19jcmVhdGVfZGlyKHBkcHUtPnBpcGVfbmFtZSwKKwkJZGVidWdmc19jcmVhdGVfZGlyKHBkcHUt Pm5hbWUsCiAJCQkJcGxhbmUtPmRldi0+cHJpbWFyeS0+ZGVidWdmc19yb290KTsKIAogCWlmICgh cGRwdS0+ZGVidWdmc19yb290KQpAQCAtMTU0Niw5ICsxNjQ4LDkgQEAgc3RhdGljIHZvaWQgZHB1 X3BsYW5lX2Vhcmx5X3VucmVnaXN0ZXIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJCS5hdG9t aWNfdXBkYXRlID0gZHB1X3BsYW5lX2F0b21pY191cGRhdGUsCiB9OwogCi1lbnVtIGRwdV9zc3Bw IGRwdV9wbGFuZV9waXBlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQorZW51bSBkcHVfc3NwcCBk cHVfcGxhbmVfcGlwZShzdHJ1Y3QgZHB1X2h3X3BpcGUgKnBpcGVfaHcpCiB7Ci0JcmV0dXJuIHBs YW5lID8gdG9fZHB1X3BsYW5lKHBsYW5lKS0+cGlwZSA6IFNTUFBfTk9ORTsKKwlyZXR1cm4gcGlw ZV9odyA/IHBpcGVfaHctPmlkeCA6IFNTUFBfTk9ORTsKIH0KIAogLyogaW5pdGlhbGl6ZSBwbGFu ZSAqLwpAQCAtMTU3OCw4ICsxNjgwLDggQEAgc3RydWN0IGRybV9wbGFuZSAqZHB1X3BsYW5lX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJRFBVX0VSUk9SKCJbJXVdaW52YWxpZCBLTVMg cmVmZXJlbmNlXG4iLCBwaXBlKTsKIAkJZ290byBleGl0OwogCX0KLQlrbXMgPSB0b19kcHVfa21z KHByaXYtPmttcyk7CiAKKwlrbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7CiAJaWYgKCFrbXMt PmNhdGFsb2cpIHsKIAkJRFBVX0VSUk9SKCJbJXVdaW52YWxpZCBjYXRhbG9nIHJlZmVyZW5jZVxu IiwgcGlwZSk7CiAJCWdvdG8gZXhpdDsKQEAgLTE2MjUsMTEgKzE3MjcsMTEgQEAgc3RydWN0IGRy bV9wbGFuZSAqZHB1X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlkcm1fcGxh bmVfaGVscGVyX2FkZChwbGFuZSwgJmRwdV9wbGFuZV9oZWxwZXJfZnVuY3MpOwogCiAJLyogc2F2 ZSB1c2VyIGZyaWVuZGx5IHBpcGUgbmFtZSBmb3IgbGF0ZXIgKi8KLQlzbnByaW50ZihwZHB1LT5w aXBlX25hbWUsIERQVV9OQU1FX1NJWkUsICJwbGFuZSV1IiwgcGxhbmUtPmJhc2UuaWQpOworCXNu cHJpbnRmKHBkcHUtPm5hbWUsIERQVV9OQU1FX1NJWkUsICJwbGFuZSV1IiwgcGxhbmUtPmJhc2Uu aWQpOwogCiAJbXV0ZXhfaW5pdCgmcGRwdS0+bG9jayk7CiAKLQlEUFVfREVCVUcoIiVzIGNyZWF0 ZWQgZm9yIHBpcGU6JXUgaWQ6JXVcbiIsIHBkcHUtPnBpcGVfbmFtZSwKKwlEUFVfREVCVUcoIiVz IGNyZWF0ZWQgZm9yIHBpcGU6JXUgaWQ6JXVcbiIsIHBkcHUtPm5hbWUsCiAJCQkJCXBpcGUsIHBs YW5lLT5iYXNlLmlkKTsKIAlyZXR1cm4gcGxhbmU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3BsYW5lLmgKaW5kZXggNGViOTI5Yi4uM2ViYzRjMSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmgKQEAgLTcxLDEwICs3MSwxMCBAQCBzdHJ1Y3Qg ZHB1X3BsYW5lX3N0YXRlIHsKIAogLyoqCiAgKiBkcHVfcGxhbmVfcGlwZSAtIHJldHVybiBzc3Bw IGlkZW50aWZpZXIgZm9yIHRoZSBnaXZlbiBwbGFuZQotICogQHBsYW5lOiAgIFBvaW50ZXIgdG8g RFJNIHBsYW5lIG9iamVjdAorICogQHBpcGVfaHc6ICAgUG9pbnRlciB0byBEUFUgcGlwZSBodwog ICogUmV0dXJuczogc3NwcCBpZGVudGlmaWVyIG9mIHRoZSBnaXZlbiBwbGFuZQogICovCi1lbnVt IGRwdV9zc3BwIGRwdV9wbGFuZV9waXBlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKK2VudW0g ZHB1X3NzcHAgZHB1X3BsYW5lX3BpcGUoc3RydWN0IGRwdV9od19waXBlICpwaXBlX2h3KTsKIAog LyoqCiAgKiBkcHVfcGxhbmVfZ2V0X2N0bF9mbHVzaCAtIGdldCBjb250cm9sIGZsdXNoIG1hc2sK LS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0 aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFBy b2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZy ZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=