From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 09/12] drm/fb-helper: Remove drm_fb_helper_connector Date: Sun, 7 Apr 2019 18:52:40 +0200 Message-ID: <20190407165243.54043-10-noralf@tronnes.org> References: <20190407165243.54043-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190407165243.54043-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QWxsIGRyaXZlcnMgYWRkIGFsbCB0aGVpciBjb25uZWN0b3JzIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0 byBrZWVwIGFyb3VuZCBhbgphcnJheSBvZiBhdmFpbGFibGUgY29ubmVjdG9ycy4KClJlbmFtZSBm dW5jdGlvbnMgd2hpY2ggc2lnbmF0dXJlIGlzIGNoYW5nZWQgc2luY2UgdGhleSB3aWxsIGJlIG1v dmVkIHRvCmRybV9jbGllbnQgaW4gYSBsYXRlciBwYXRjaC4KClNpZ25lZC1vZmYtYnk6IE5vcmFs ZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgotLS0KCmNoZWNrcGF0Y2ggY29tcGxhaW5z LCBidXQgSSdtIHVuYWJsZSB0byBzYXRpc2Z5IGl0OgoKRVJST1I6IE1hY3JvcyB3aXRoIGNvbXBs ZXggdmFsdWVzIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcwojOTQxOiBGSUxFOiBp bmNsdWRlL2RybS9kcm1fY2xpZW50Lmg6MTgxOgorI2RlZmluZSBkcm1fY2xpZW50X2Zvcl9lYWNo X2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgaXRlcikgXAorICAgICAgIGRybV9mb3JfZWFjaF9j b25uZWN0b3JfaXRlcihjb25uZWN0b3IsIGl0ZXIpIFwKKyAgICAgICAgICAgICAgIGlmIChjb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spCgog RG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jIHwgNDk4ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBp bmNsdWRlL2RybS9kcm1fY2xpZW50LmggICAgICAgIHwgIDE1ICsKIGluY2x1ZGUvZHJtL2RybV9m Yl9oZWxwZXIuaCAgICAgfCAgODAgKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTkyIGluc2VydGlv bnMoKyksIDQwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS90 b2RvLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0CmluZGV4IDhmYTA4YjVmZWFiNy4u ZjZjZGQxYzI2Nzg4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdAorKysg Yi9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdApAQCAtMzA2LDYgKzMwNiw5IEBAIGRybV9mYl9o ZWxwZXIgY2xlYW51cCB0YXNrcwogLSBUaGUgbWF4IGNvbm5lY3RvciBhcmd1bWVudCBmb3IgZHJt X2ZiX2hlbHBlcl9pbml0KCkgYW5kCiAgIGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAoKSBpc24n dCB1c2VkIGFueW1vcmUgYW5kIGNhbiBiZSByZW1vdmVkLgogCistIFRoZSBoZWxwZXIgZG9lc24n dCBrZWVwIGFuIGFycmF5IG9mIGNvbm5lY3RvcnMgYW55bW9yZSBzbyB0aGVzZSBjYW4gYmUKKyAg cmVtb3ZlZDogZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3JzKCksCisgIGRy bV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3IoKSBhbmQgZHJtX2ZiX2hlbHBlcl9yZW1vdmVf b25lX2Nvbm5lY3RvcigpLgogCiBDb3JlIHJlZmFjdG9yaW5ncwogPT09PT09PT09PT09PT09PT0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZiX2hlbHBlci5jCmluZGV4IDczZmJjZDc0OGRkZC4uZTEzMDI2NzI0YjJjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZmJfaGVscGVyLmMKQEAgLTkwLDEyICs5MCw2IEBAIHN0YXRpYyBERUZJTkVf TVVURVgoa2VybmVsX2ZiX2hlbHBlcl9sb2NrKTsKICAqIFNldHVwIGZiZGV2IGVtdWxhdGlvbiBi eSBjYWxsaW5nIGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAoKSBhbmQgdGVhciBpdAogICogZG93 biBieSBjYWxsaW5nIGRybV9mYl9oZWxwZXJfZmJkZXZfdGVhcmRvd24oKS4KICAqCi0gKiBEcml2 ZXJzIHRoYXQgbmVlZCB0byBoYW5kbGUgY29ubmVjdG9yIGhvdHBsdWdnaW5nIChlLmcuIGRwIG1z dCkgY2FuJ3QgdXNlCi0gKiB0aGUgc2V0dXAgaGVscGVyIGFuZCB3aWxsIG5lZWQgdG8gZG8gdGhl IHdob2xlIGZvdXItc3RlcCBzZXR1cCBwcm9jZXNzIHdpdGgKLSAqIGRybV9mYl9oZWxwZXJfcHJl cGFyZSgpLCBkcm1fZmJfaGVscGVyX2luaXQoKSwKLSAqIGRybV9mYl9oZWxwZXJfc2luZ2xlX2Fk ZF9hbGxfY29ubmVjdG9ycygpLCBlbmFibGUgaG90cGx1Z2dpbmcgYW5kCi0gKiBkcm1fZmJfaGVs cGVyX2luaXRpYWxfY29uZmlnKCkgdG8gYXZvaWQgYSBwb3NzaWJsZSByYWNlIHdpbmRvdy4KLSAq CiAgKiBBdCBydW50aW1lIGRyaXZlcnMgc2hvdWxkIHJlc3RvcmUgdGhlIGZiZGV2IGNvbnNvbGUg YnkgdXNpbmcKICAqIGRybV9mYl9oZWxwZXJfbGFzdGNsb3NlKCkgYXMgdGhlaXIgJmRybV9kcml2 ZXIubGFzdGNsb3NlIGNhbGxiYWNrLgogICogVGhleSBzaG91bGQgYWxzbyBub3RpZnkgdGhlIGZi IGhlbHBlciBjb2RlIGZyb20gdXBkYXRlcyB0byB0aGUgb3V0cHV0CkBAIC0xMTgsOCArMTEyLDcg QEAgc3RhdGljIERFRklORV9NVVRFWChrZXJuZWxfZmJfaGVscGVyX2xvY2spOwogICogZW5jb2Rl cnMgYW5kIGNvbm5lY3RvcnMuIFRvIGZpbmlzaCB1cCB0aGUgZmJkZXYgaGVscGVyIGluaXRpYWxp emF0aW9uLCB0aGUKICAqIGRybV9mYl9oZWxwZXJfaW5pdCgpIGZ1bmN0aW9uIGlzIGNhbGxlZC4g VG8gcHJvYmUgZm9yIGFsbCBhdHRhY2hlZCBkaXNwbGF5cwogICogYW5kIHNldCB1cCBhbiBpbml0 aWFsIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGRldGVjdGVkIGhhcmR3YXJlLCBkcml2ZXJzCi0g KiBzaG91bGQgY2FsbCBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoKSBm b2xsb3dlZCBieQotICogZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZygpLgorICogc2hvdWxk IGNhbGwgZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZygpLgogICoKICAqIElmICZkcm1fZnJh bWVidWZmZXJfZnVuY3MuZGlydHkgaXMgc2V0LCB0aGUKICAqIGRybV9mYl9oZWxwZXJfe2NmYixz eXN9X3t3cml0ZSxmaWxscmVjdCxjb3B5YXJlYSxpbWFnZWJsaXR9IGZ1bmN0aW9ucyB3aWxsCkBA IC0xMzIsMTY1ICsxMjUsNiBAQCBzdGF0aWMgREVGSU5FX01VVEVYKGtlcm5lbF9mYl9oZWxwZXJf bG9jayk7CiAgKiBkZWZlcnJlZCBJL08gKGNvdXBsZWQgd2l0aCBkcm1fZmJfaGVscGVyX2ZiZGV2 X3RlYXJkb3duKCkpLgogICovCiAKLSNkZWZpbmUgZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25u ZWN0b3IoZmJoLCBpX18pIFwKLQlmb3IgKCh7IGxvY2tkZXBfYXNzZXJ0X2hlbGQoJihmYmgpLT5s b2NrKTsgfSksIFwKLQkgICAgIGlfXyA9IDA7IGlfXyA8IChmYmgpLT5jb25uZWN0b3JfY291bnQ7 IGlfXysrKQotCi1zdGF0aWMgaW50IF9fZHJtX2ZiX2hlbHBlcl9hZGRfb25lX2Nvbm5lY3Rvcihz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAotCQkJCQkgICAgIHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCi17Ci0Jc3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpm Yl9jb25uOwotCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqKnRlbXA7Ci0JdW5zaWdu ZWQgaW50IGNvdW50OwotCi0JaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uKQotCQlyZXR1cm4gMDsK LQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmZiX2hlbHBlci0+bG9jayk7Ci0KLQljb3VudCA9IGZi X2hlbHBlci0+Y29ubmVjdG9yX2NvdW50ICsgMTsKLQotCWlmIChjb3VudCA+IGZiX2hlbHBlci0+ Y29ubmVjdG9yX2luZm9fYWxsb2NfY291bnQpIHsKLQkJc2l6ZV90IHNpemUgPSBjb3VudCAqIHNp emVvZihmYl9jb25uKTsKLQotCQl0ZW1wID0ga3JlYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3Jf aW5mbywgc2l6ZSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghdGVtcCkKLQkJCXJldHVybiAtRU5PTUVN OwotCi0JCWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9fYWxsb2NfY291bnQgPSBjb3VudDsKLQkJ ZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mbyA9IHRlbXA7Ci0JfQotCi0JZmJfY29ubiA9IGt6YWxs b2Moc2l6ZW9mKCpmYl9jb25uKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFmYl9jb25uKQotCQlyZXR1 cm4gLUVOT01FTTsKLQotCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7Ci0JZmJfY29ubi0+ Y29ubmVjdG9yID0gY29ubmVjdG9yOwotCWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9bZmJfaGVs cGVyLT5jb25uZWN0b3JfY291bnQrK10gPSBmYl9jb25uOwotCi0JcmV0dXJuIDA7Ci19Ci0KLWlu dCBkcm1fZmJfaGVscGVyX2FkZF9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsCi0JCQkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCi17Ci0J aW50IGVycjsKLQotCWlmICghZmJfaGVscGVyKQotCQlyZXR1cm4gMDsKLQotCW11dGV4X2xvY2so JmZiX2hlbHBlci0+bG9jayk7Ci0JZXJyID0gX19kcm1fZmJfaGVscGVyX2FkZF9vbmVfY29ubmVj dG9yKGZiX2hlbHBlciwgY29ubmVjdG9yKTsKLQltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9j ayk7Ci0KLQlyZXR1cm4gZXJyOwotfQotRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2FkZF9v bmVfY29ubmVjdG9yKTsKLQotLyoqCi0gKiBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nv bm5lY3RvcnMoKSAtIGFkZCBhbGwgY29ubmVjdG9ycyB0byBmYmRldgotICogCQkJCQkgICAgICAg ZW11bGF0aW9uIGhlbHBlcgotICogQGZiX2hlbHBlcjogZmJkZXYgaW5pdGlhbGl6ZWQgd2l0aCBk cm1fZmJfaGVscGVyX2luaXQsIGNhbiBiZSBOVUxMCi0gKgotICogVGhpcyBmdW5jdGlvbnMgYWRk cyBhbGwgdGhlIGF2YWlsYWJsZSBjb25uZWN0b3JzIGZvciB1c2Ugd2l0aCB0aGUgZ2l2ZW4KLSAq IGZiX2hlbHBlci4gVGhpcyBpcyBhIHNlcGFyYXRlIHN0ZXAgdG8gYWxsb3cgZHJpdmVycyB0byBm cmVlbHkgYXNzaWduCi0gKiBjb25uZWN0b3JzIHRvIHRoZSBmYmRldiwgZS5nLiBpZiBzb21lIGFy ZSByZXNlcnZlZCBmb3Igc3BlY2lhbCBwdXJwb3NlcyBvcgotICogbm90IGFkZXF1YXRlIHRvIGJl IHVzZWQgZm9yIHRoZSBmYmNvbi4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHByb3RlY3RlZCBh Z2FpbnN0IGNvbmN1cnJlbnQgY29ubmVjdG9yIGhvdGFkZHMvcmVtb3ZhbHMKLSAqIHVzaW5nIGRy bV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3IoKSBhbmQKLSAqIGRybV9mYl9oZWxwZXJfcmVt b3ZlX29uZV9jb25uZWN0b3IoKS4KLSAqLwotaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2FkZF9h bGxfY29ubmVjdG9ycyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQotewotCXN0cnVj dCBkcm1fZGV2aWNlICpkZXY7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwotCWludCBpLCByZXQgPSAw OwotCi0JaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uIHx8ICFmYl9oZWxwZXIpCi0JCXJldHVybiAw OwotCi0JZGV2ID0gZmJfaGVscGVyLT5kZXY7Ci0KLQltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxv Y2spOwotCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7Ci0J ZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewotCQlp ZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVC QUNLKQotCQkJY29udGludWU7Ci0KLQkJcmV0ID0gX19kcm1fZmJfaGVscGVyX2FkZF9vbmVfY29u bmVjdG9yKGZiX2hlbHBlciwgY29ubmVjdG9yKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZmFpbDsK LQl9Ci0JZ290byBvdXQ7Ci0KLWZhaWw6Ci0JZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0 b3IoZmJfaGVscGVyLCBpKSB7Ci0JCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJf aGVscGVyX2Nvbm5lY3RvciA9Ci0JCQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwotCi0J CWRybV9jb25uZWN0b3JfcHV0KGZiX2hlbHBlcl9jb25uZWN0b3ItPmNvbm5lY3Rvcik7Ci0KLQkJ a2ZyZWUoZmJfaGVscGVyX2Nvbm5lY3Rvcik7Ci0JCWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9b aV0gPSBOVUxMOwotCX0KLQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCA9IDA7Ci1vdXQ6Ci0J ZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwotCW11dGV4X3VubG9jaygm ZmJfaGVscGVyLT5sb2NrKTsKLQotCXJldHVybiByZXQ7Ci19Ci1FWFBPUlRfU1lNQk9MKGRybV9m Yl9oZWxwZXJfc2luZ2xlX2FkZF9hbGxfY29ubmVjdG9ycyk7Ci0KLXN0YXRpYyBpbnQgX19kcm1f ZmJfaGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIsCi0JCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQotewotCXN0cnVj dCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVyX2Nvbm5lY3RvcjsKLQlpbnQgaSwg ajsKLQotCWlmICghZHJtX2ZiZGV2X2VtdWxhdGlvbikKLQkJcmV0dXJuIDA7Ci0KLQlsb2NrZGVw X2Fzc2VydF9oZWxkKCZmYl9oZWxwZXItPmxvY2spOwotCi0JZHJtX2ZiX2hlbHBlcl9mb3JfZWFj aF9jb25uZWN0b3IoZmJfaGVscGVyLCBpKSB7Ci0JCWlmIChmYl9oZWxwZXItPmNvbm5lY3Rvcl9p bmZvW2ldLT5jb25uZWN0b3IgPT0gY29ubmVjdG9yKQotCQkJYnJlYWs7Ci0JfQotCi0JaWYgKGkg PT0gZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQpCi0JCXJldHVybiAtRUlOVkFMOwotCWZiX2hl bHBlcl9jb25uZWN0b3IgPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwotCWRybV9jb25u ZWN0b3JfcHV0KGZiX2hlbHBlcl9jb25uZWN0b3ItPmNvbm5lY3Rvcik7Ci0KLQlmb3IgKGogPSBp ICsgMTsgaiA8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBqKyspCi0JCWZiX2hlbHBlci0+ Y29ubmVjdG9yX2luZm9baiAtIDFdID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tqXTsKLQot CWZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LS07Ci0Ja2ZyZWUoZmJfaGVscGVyX2Nvbm5lY3Rv cik7Ci0KLQlyZXR1cm4gMDsKLX0KLQotaW50IGRybV9mYl9oZWxwZXJfcmVtb3ZlX29uZV9jb25u ZWN0b3Ioc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKLQkJCQkgICAgICAgc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKLXsKLQlpbnQgZXJyOwotCi0JaWYgKCFmYl9oZWxw ZXIpCi0JCXJldHVybiAwOwotCi0JbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKLQllcnIg PSBfX2RybV9mYl9oZWxwZXJfcmVtb3ZlX29uZV9jb25uZWN0b3IoZmJfaGVscGVyLCBjb25uZWN0 b3IpOwotCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKLQotCXJldHVybiBlcnI7Ci19 Ci1FWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfcmVtb3ZlX29uZV9jb25uZWN0b3IpOwotCiBz dGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX3Jlc3RvcmVfbHV0X2F0b21pYyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiB7CiAJdWludDE2X3QgKnJfYmFzZSwgKmdfYmFzZSwgKmJfYmFzZTsKQEAgLTYy OCwyMCArNDYyLDkgQEAgaW50IGRybV9mYl9oZWxwZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvID0g a2NhbGxvYyhkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3IsIHNpemVvZihzdHJ1Y3QgZHJt X2ZiX2hlbHBlcl9jb25uZWN0b3IgKiksIEdGUF9LRVJORUwpOwotCWlmICghZmJfaGVscGVyLT5j b25uZWN0b3JfaW5mbykKLQkJZ290byBvdXRfZnJlZTsKLQotCWZiX2hlbHBlci0+Y29ubmVjdG9y X2luZm9fYWxsb2NfY291bnQgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3I7Ci0JZmJf aGVscGVyLT5jb25uZWN0b3JfY291bnQgPSAwOwotCiAJZGV2LT5mYl9oZWxwZXIgPSBmYl9oZWxw ZXI7CiAKIAlyZXR1cm4gMDsKLW91dF9mcmVlOgotCWRybV9jbGllbnRfbW9kZXNldF9mcmVlKCZm Yl9oZWxwZXItPmNsaWVudCk7Ci0KLQlyZXR1cm4gLUVOT01FTTsKIH0KIEVYUE9SVF9TWU1CT0wo ZHJtX2ZiX2hlbHBlcl9pbml0KTsKIApAQCAtNzE2LDcgKzUzOSw2IEBAIEVYUE9SVF9TWU1CT0wo ZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaSk7CiB2b2lkIGRybV9mYl9oZWxwZXJfZmluaShz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogewogCXN0cnVjdCBmYl9pbmZvICppbmZv OwotCWludCBpOwogCiAJaWYgKCFmYl9oZWxwZXIpCiAJCXJldHVybjsKQEAgLTc1MSwxMiArNTcz LDYgQEAgdm9pZCBkcm1fZmJfaGVscGVyX2Zpbmkoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlcikKIAkJZHJtX2NsaWVudF9tb2Rlc2V0X3JlbGVhc2UoJmZiX2hlbHBlci0+Y2xpZW50KTsK IAkJZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoJmZiX2hlbHBlci0+Y2xpZW50KTsKIAl9Ci0KLQlm b3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgewotCQlkcm1f Y29ubmVjdG9yX3B1dChmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3IpOwot CQlrZnJlZShmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldKTsKLQl9Ci0Ja2ZyZWUoZmJfaGVs cGVyLT5jb25uZWN0b3JfaW5mbyk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfZmlu aSk7CiAKQEAgLTE2MzUsOCArMTQ1MSw5IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5n bGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAlzdHJ1Y3QgZHJt X2NsaWVudF9kZXYgKmNsaWVudCA9ICZmYl9oZWxwZXItPmNsaWVudDsKIAlpbnQgcmV0ID0gMDsK IAlpbnQgY3J0Y19jb3VudCA9IDA7Ci0JaW50IGk7CisJc3RydWN0IGRybV9jb25uZWN0b3JfbGlz dF9pdGVyIGNvbm5faXRlcjsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgc2l6 ZXM7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKIAlzdHJ1Y3QgZHJtX21vZGVf c2V0ICptb2RlX3NldDsKIAlpbnQgYmVzdF9kZXB0aCA9IDA7CiAKQEAgLTE2NTMsMTEgKzE0NzAs MTEgQEAgc3RhdGljIGludCBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWlmIChwcmVmZXJyZWRfYnBwICE9IHNpemVzLnN1cmZh Y2VfYnBwKQogCQlzaXplcy5zdXJmYWNlX2RlcHRoID0gc2l6ZXMuc3VyZmFjZV9icHAgPSBwcmVm ZXJyZWRfYnBwOwogCi0JZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVy LCBpKSB7Ci0JCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVyX2Nvbm4g PSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOworCWRybV9jb25uZWN0b3JfbGlzdF9pdGVy X2JlZ2luKGZiX2hlbHBlci0+ZGV2LCAmY29ubl9pdGVyKTsKKwlkcm1fY2xpZW50X2Zvcl9lYWNo X2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewogCQlzdHJ1Y3QgZHJtX2Nt ZGxpbmVfbW9kZSAqY21kbGluZV9tb2RlOwogCi0JCWNtZGxpbmVfbW9kZSA9ICZmYl9oZWxwZXJf Y29ubi0+Y29ubmVjdG9yLT5jbWRsaW5lX21vZGU7CisJCWNtZGxpbmVfbW9kZSA9ICZjb25uZWN0 b3ItPmNtZGxpbmVfbW9kZTsKIAogCQlpZiAoY21kbGluZV9tb2RlLT5icHBfc3BlY2lmaWVkKSB7 CiAJCQlzd2l0Y2ggKGNtZGxpbmVfbW9kZS0+YnBwKSB7CkBAIC0xNjgyLDYgKzE0OTksNyBAQCBz dGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsCiAJCQlicmVhazsKIAkJfQogCX0KKwlkcm1fY29ubmVjdG9yX2xpc3Rf aXRlcl9lbmQoJmNvbm5faXRlcik7CiAKIAkvKgogCSAqIElmIHdlIHJ1biBpbnRvIGEgc2l0dWF0 aW9uIHdoZXJlLCBmb3IgZXhhbXBsZSwgdGhlIHByaW1hcnkgcGxhbmUKQEAgLTE4NjYsMjYgKzE2 ODQsMTIgQEAgdm9pZCBkcm1fZmJfaGVscGVyX2ZpbGxfaW5mbyhzdHJ1Y3QgZmJfaW5mbyAqaW5m bywKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9maWxsX2luZm8pOwogCi1zdGF0aWMg aW50IGRybV9mYl9oZWxwZXJfcHJvYmVfY29ubmVjdG9yX21vZGVzKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsCi0JCQkJCQl1aW50MzJfdCBtYXhYLAotCQkJCQkJdWludDMyX3QgbWF4 WSkKLXsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCWludCBpLCBjb3VudCA9 IDA7Ci0KLQlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsK LQkJY29ubmVjdG9yID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXS0+Y29ubmVjdG9yOwot CQljb3VudCArPSBjb25uZWN0b3ItPmZ1bmNzLT5maWxsX21vZGVzKGNvbm5lY3RvciwgbWF4WCwg bWF4WSk7Ci0JfQotCi0JcmV0dXJuIGNvdW50OwotfQotCi1zdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqZHJtX2hhc19wcmVmZXJyZWRfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3Ig KmZiX2Nvbm5lY3RvciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICoKK2RybV9jb25uZWN0b3JfaGFzX3ByZWZlcnJlZF9tb2RlKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKIAlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkobW9kZSwg JmZiX2Nvbm5lY3Rvci0+Y29ubmVjdG9yLT5tb2RlcywgaGVhZCkgeworCWxpc3RfZm9yX2VhY2hf ZW50cnkobW9kZSwgJmNvbm5lY3Rvci0+bW9kZXMsIGhlYWQpIHsKIAkJaWYgKG1vZGUtPmhkaXNw bGF5ID4gd2lkdGggfHwKIAkJICAgIG1vZGUtPnZkaXNwbGF5ID4gaGVpZ2h0KQogCQkJY29udGlu dWU7CkBAIC0xODk0LDIwICsxNjk4LDE1IEBAIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1f aGFzX3ByZWZlcnJlZF9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqCiAJfQog CXJldHVybiBOVUxMOwogfQotRVhQT1JUX1NZTUJPTChkcm1faGFzX3ByZWZlcnJlZF9tb2RlKTsK IAotc3RhdGljIGJvb2wgZHJtX2hhc19jbWRsaW5lX21vZGUoc3RydWN0IGRybV9mYl9oZWxwZXJf Y29ubmVjdG9yICpmYl9jb25uZWN0b3IpCi17Ci0JcmV0dXJuIGZiX2Nvbm5lY3Rvci0+Y29ubmVj dG9yLT5jbWRsaW5lX21vZGUuc3BlY2lmaWVkOwotfQotCi1zdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqZHJtX3BpY2tfY21kbGluZV9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAq ZmJfaGVscGVyX2Nvbm4pCitzdGF0aWMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKgorZHJtX2Nv bm5lY3Rvcl9waWNrX2NtZGxpbmVfbW9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQogewogCXN0cnVjdCBkcm1fY21kbGluZV9tb2RlICpjbWRsaW5lX21vZGU7CiAJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGU7CiAJYm9vbCBwcmVmZXJfbm9uX2ludGVybGFjZTsKIAotCWNt ZGxpbmVfbW9kZSA9ICZmYl9oZWxwZXJfY29ubi0+Y29ubmVjdG9yLT5jbWRsaW5lX21vZGU7CisJ Y21kbGluZV9tb2RlID0gJmNvbm5lY3Rvci0+Y21kbGluZV9tb2RlOwogCWlmIChjbWRsaW5lX21v ZGUtPnNwZWNpZmllZCA9PSBmYWxzZSkKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTE5MTksNyArMTcx OCw3IEBAIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fcGlja19jbWRsaW5lX21vZGUoc3Ry dWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmCiAKIAlwcmVmZXJfbm9uX2ludGVybGFjZSA9 ICFjbWRsaW5lX21vZGUtPmludGVybGFjZTsKIGFnYWluOgotCWxpc3RfZm9yX2VhY2hfZW50cnko bW9kZSwgJmZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPm1vZGVzLCBoZWFkKSB7CisJbGlzdF9m b3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5tb2RlcywgaGVhZCkgewogCQkvKiBjaGVj ayB3aWR0aC9oZWlnaHQgKi8KIAkJaWYgKG1vZGUtPmhkaXNwbGF5ICE9IGNtZGxpbmVfbW9kZS0+ eHJlcyB8fAogCQkgICAgbW9kZS0+dmRpc3BsYXkgIT0gY21kbGluZV9tb2RlLT55cmVzKQpAQCAt MTk0NiwxMiArMTc0NSwxMSBAQCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX3BpY2tfY21k bGluZV9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZgogCX0KIAogY3JlYXRl X21vZGU6Ci0JbW9kZSA9IGRybV9tb2RlX2NyZWF0ZV9mcm9tX2NtZGxpbmVfbW9kZShmYl9oZWxw ZXJfY29ubi0+Y29ubmVjdG9yLT5kZXYsCi0JCQkJCQkgY21kbGluZV9tb2RlKTsKLQlsaXN0X2Fk ZCgmbW9kZS0+aGVhZCwgJmZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPm1vZGVzKTsKKwltb2Rl ID0gZHJtX21vZGVfY3JlYXRlX2Zyb21fY21kbGluZV9tb2RlKGNvbm5lY3Rvci0+ZGV2LCBjbWRs aW5lX21vZGUpOworCWxpc3RfYWRkKCZtb2RlLT5oZWFkLCAmY29ubmVjdG9yLT5tb2Rlcyk7CisK IAlyZXR1cm4gbW9kZTsKIH0KLUVYUE9SVF9TWU1CT0woZHJtX3BpY2tfY21kbGluZV9tb2RlKTsK IAogc3RhdGljIGJvb2wgZHJtX2Nvbm5lY3Rvcl9lbmFibGVkKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsIGJvb2wgc3RyaWN0KQogewpAQCAtMTk2OCwxNSArMTc2NiwxNiBAQCBzdGF0 aWMgYm9vbCBkcm1fY29ubmVjdG9yX2VuYWJsZWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgYm9vbCBzdHJpY3QpCiAJcmV0dXJuIGVuYWJsZTsKIH0KIAotc3RhdGljIHZvaWQgZHJt X2VuYWJsZV9jb25uZWN0b3JzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkJ ICBib29sICplbmFibGVkKQorc3RhdGljIHZvaWQgZHJtX2NsaWVudF9jb25uZWN0b3JzX2VuYWJs ZWQoc3RydWN0IGRybV9jb25uZWN0b3IgKipjb25uZWN0b3JzLAorCQkJCQkgIHVuc2lnbmVkIGlu dCBjb25uZWN0b3JfY291bnQsCisJCQkJCSAgYm9vbCAqZW5hYmxlZCkKIHsKIAlib29sIGFueV9l bmFibGVkID0gZmFsc2U7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKIAlpbnQg aSA9IDA7CiAKLQlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkp IHsKLQkJY29ubmVjdG9yID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXS0+Y29ubmVjdG9y OworCWZvciAoaSA9IDA7IGkgPCBjb25uZWN0b3JfY291bnQ7IGkrKykgeworCQljb25uZWN0b3Ig PSBjb25uZWN0b3JzW2ldOwogCQllbmFibGVkW2ldID0gZHJtX2Nvbm5lY3Rvcl9lbmFibGVkKGNv bm5lY3RvciwgdHJ1ZSk7CiAJCURSTV9ERUJVR19LTVMoImNvbm5lY3RvciAlZCBlbmFibGVkPyAl c1xuIiwgY29ubmVjdG9yLT5iYXNlLmlkLAogCQkJICAgICAgY29ubmVjdG9yLT5kaXNwbGF5X2lu Zm8ubm9uX2Rlc2t0b3AgPyAibm9uIGRlc2t0b3AiIDogZW5hYmxlZFtpXSA/ICJ5ZXMiIDogIm5v Iik7CkBAIC0xOTg3LDI4ICsxNzg2LDI3IEBAIHN0YXRpYyB2b2lkIGRybV9lbmFibGVfY29ubmVj dG9ycyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWlmIChhbnlfZW5hYmxlZCkK IAkJcmV0dXJuOwogCi0JZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVy LCBpKSB7Ci0JCWNvbm5lY3RvciA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV0tPmNvbm5l Y3RvcjsKLQkJZW5hYmxlZFtpXSA9IGRybV9jb25uZWN0b3JfZW5hYmxlZChjb25uZWN0b3IsIGZh bHNlKTsKLQl9CisJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rvcl9jb3VudDsgaSsrKQorCQllbmFi bGVkW2ldID0gZHJtX2Nvbm5lY3Rvcl9lbmFibGVkKGNvbm5lY3RvcnNbaV0sIGZhbHNlKTsKIH0K IAotc3RhdGljIGJvb2wgZHJtX3RhcmdldF9jbG9uZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKLQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCi0JCQkg ICAgICBzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0cywKLQkJCSAgICAgIGJvb2wgKmVuYWJs ZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3N0YXRpYyBib29sIGRybV9jbGllbnRfdGFyZ2V0 X2Nsb25lZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRybV9jb25u ZWN0b3IgKipjb25uZWN0b3JzLAorCQkJCSAgICAgdW5zaWduZWQgaW50IGNvbm5lY3Rvcl9jb3Vu dCwKKwkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCisJCQkJICAgICBz dHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0cywKKwkJCQkgICAgIGJvb2wgKmVuYWJsZWQsIGlu dCB3aWR0aCwgaW50IGhlaWdodCkKIHsKIAlpbnQgY291bnQsIGksIGo7CiAJYm9vbCBjYW5fY2xv bmUgPSBmYWxzZTsKLQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2hlbHBlcl9j b25uOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkbXRfbW9kZSwgKm1vZGU7CiAKIAkvKiBv bmx5IGNvbnRlbXBsYXRlIGNsb25pbmcgaW4gdGhlIHNpbmdsZSBjcnRjIGNhc2UgKi8KLQlpZiAo ZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjID4gMSkKKwlpZiAoZGV2LT5tb2Rl X2NvbmZpZy5udW1fY3J0YyA+IDEpCiAJCXJldHVybiBmYWxzZTsKIAogCWNvdW50ID0gMDsKLQlk cm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKKwlmb3IgKGkg PSAwOyBpIDwgY29ubmVjdG9yX2NvdW50OyBpKyspIHsKIAkJaWYgKGVuYWJsZWRbaV0pCiAJCQlj b3VudCsrOwogCX0KQEAgLTIwMTksMTEgKzE4MTcsMTAgQEAgc3RhdGljIGJvb2wgZHJtX3Rhcmdl dF9jbG9uZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAogCS8qIGNoZWNrIHRo ZSBjb21tYW5kIGxpbmUgb3IgaWYgbm90aGluZyBjb21tb24gcGljayAxMDI0eDc2OCAqLwogCWNh bl9jbG9uZSA9IHRydWU7Ci0JZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVs cGVyLCBpKSB7CisJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rvcl9jb3VudDsgaSsrKSB7CiAJCWlm ICghZW5hYmxlZFtpXSkKIAkJCWNvbnRpbnVlOwotCQlmYl9oZWxwZXJfY29ubiA9IGZiX2hlbHBl ci0+Y29ubmVjdG9yX2luZm9baV07Ci0JCW1vZGVzW2ldID0gZHJtX3BpY2tfY21kbGluZV9tb2Rl KGZiX2hlbHBlcl9jb25uKTsKKwkJbW9kZXNbaV0gPSBkcm1fY29ubmVjdG9yX3BpY2tfY21kbGlu ZV9tb2RlKGNvbm5lY3RvcnNbaV0pOwogCQlpZiAoIW1vZGVzW2ldKSB7CiAJCQljYW5fY2xvbmUg PSBmYWxzZTsKIAkJCWJyZWFrOwpAQCAtMjA0NywxNCArMTg0NCwxMyBAQCBzdGF0aWMgYm9vbCBk cm1fdGFyZ2V0X2Nsb25lZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCiAJLyog dHJ5IGFuZCBmaW5kIGEgMTAyNHg3NjggbW9kZSBvbiBlYWNoIGNvbm5lY3RvciAqLwogCWNhbl9j bG9uZSA9IHRydWU7Ci0JZG10X21vZGUgPSBkcm1fbW9kZV9maW5kX2RtdChmYl9oZWxwZXItPmRl diwgMTAyNCwgNzY4LCA2MCwgZmFsc2UpOworCWRtdF9tb2RlID0gZHJtX21vZGVfZmluZF9kbXQo ZGV2LCAxMDI0LCA3NjgsIDYwLCBmYWxzZSk7CiAKLQlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nv bm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKKwlmb3IgKGkgPSAwOyBpIDwgY29ubmVjdG9yX2NvdW50 OyBpKyspIHsKIAkJaWYgKCFlbmFibGVkW2ldKQogCQkJY29udGludWU7CiAKLQkJZmJfaGVscGVy X2Nvbm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwotCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KG1vZGUsICZmYl9oZWxwZXJfY29ubi0+Y29ubmVjdG9yLT5tb2RlcywgaGVhZCkgeworCQls aXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3JzW2ldLT5tb2RlcywgaGVhZCkgewog CQkJaWYgKGRybV9tb2RlX21hdGNoKG1vZGUsIGRtdF9tb2RlLAogCQkJCQkgICBEUk1fTU9ERV9N QVRDSF9USU1JTkdTIHwKIAkJCQkJICAgRFJNX01PREVfTUFUQ0hfQ0xPQ0sgfApAQCAtMjA3NCwz MCArMTg3MCwzMSBAQCBzdGF0aWMgYm9vbCBkcm1fdGFyZ2V0X2Nsb25lZChzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLAogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGludCBkcm1f Z2V0X3RpbGVfb2Zmc2V0cyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAotCQkJCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCi0JCQkJc3RydWN0IGRybV9mYl9vZmZzZXQg Km9mZnNldHMsCi0JCQkJaW50IGlkeCwKLQkJCQlpbnQgaF9pZHgsIGludCB2X2lkeCkKK3N0YXRp YyBpbnQgZHJtX2NsaWVudF9nZXRfdGlsZV9vZmZzZXRzKHN0cnVjdCBkcm1fY29ubmVjdG9yICoq Y29ubmVjdG9ycywKKwkJCQkgICAgICAgdW5zaWduZWQgaW50IGNvbm5lY3Rvcl9jb3VudCwKKwkJ CQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2RlcywKKwkJCQkgICAgICAgc3Ry dWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCisJCQkJICAgICAgIGludCBpZHgsCisJCQkJICAg ICAgIGludCBoX2lkeCwgaW50IHZfaWR4KQogewotCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5l Y3RvciAqZmJfaGVscGVyX2Nvbm47CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsK IAlpbnQgaTsKIAlpbnQgaG9mZnNldCA9IDAsIHZvZmZzZXQgPSAwOwogCi0JZHJtX2ZiX2hlbHBl cl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVyLCBpKSB7Ci0JCWZiX2hlbHBlcl9jb25uID0g ZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsKLQkJaWYgKCFmYl9oZWxwZXJfY29ubi0+Y29u bmVjdG9yLT5oYXNfdGlsZSkKKwlmb3IgKGkgPSAwOyBpIDwgY29ubmVjdG9yX2NvdW50OyBpKysp IHsKKwkJY29ubmVjdG9yID0gY29ubmVjdG9yc1tpXTsKKwkJaWYgKCFjb25uZWN0b3ItPmhhc190 aWxlKQogCQkJY29udGludWU7CiAKIAkJaWYgKCFtb2Rlc1tpXSAmJiAoaF9pZHggfHwgdl9pZHgp KSB7CiAJCQlEUk1fREVCVUdfS01TKCJubyBtb2RlcyBmb3IgY29ubmVjdG9yIHRpbGVkICVkICVk XG4iLCBpLAotCQkJCSAgICAgIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPmJhc2UuaWQpOwor CQkJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCk7CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAo ZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV9oX2xvYyA8IGhfaWR4KQorCQlpZiAoY29u bmVjdG9yLT50aWxlX2hfbG9jIDwgaF9pZHgpCiAJCQlob2Zmc2V0ICs9IG1vZGVzW2ldLT5oZGlz cGxheTsKIAotCQlpZiAoZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV92X2xvYyA8IHZf aWR4KQorCQlpZiAoY29ubmVjdG9yLT50aWxlX3ZfbG9jIDwgdl9pZHgpCiAJCQl2b2Zmc2V0ICs9 IG1vZGVzW2ldLT52ZGlzcGxheTsKIAl9CiAJb2Zmc2V0c1tpZHhdLnggPSBob2Zmc2V0OwpAQCAt MjEwNiwyMCArMTkwMywyMSBAQCBzdGF0aWMgaW50IGRybV9nZXRfdGlsZV9vZmZzZXRzKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29s IGRybV90YXJnZXRfcHJlZmVycmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0J CQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCi0JCQkJIHN0cnVjdCBkcm1fZmJf b2Zmc2V0ICpvZmZzZXRzLAotCQkJCSBib29sICplbmFibGVkLCBpbnQgd2lkdGgsIGludCBoZWln aHQpCitzdGF0aWMgYm9vbCBkcm1fY2xpZW50X3RhcmdldF9wcmVmZXJyZWQoc3RydWN0IGRybV9j b25uZWN0b3IgKipjb25uZWN0b3JzLAorCQkJCQl1bnNpZ25lZCBpbnQgY29ubmVjdG9yX2NvdW50 LAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzLAorCQkJCQlzdHJ1Y3QgZHJt X2ZiX29mZnNldCAqb2Zmc2V0cywKKwkJCQkJYm9vbCAqZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQg aGVpZ2h0KQogewotCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVyX2Nv bm47Ci0JY29uc3QgdTY0IG1hc2sgPSBCSVRfVUxMKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50 KSAtIDE7CisJY29uc3QgdTY0IG1hc2sgPSBCSVRfVUxMKGNvbm5lY3Rvcl9jb3VudCkgLSAxOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJdTY0IGNvbm5fY29uZmlndXJlZCA9 IDA7CiAJaW50IHRpbGVfcGFzcyA9IDA7CiAJaW50IGk7CiAKIHJldHJ5OgotCWRybV9mYl9oZWxw ZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewotCQlmYl9oZWxwZXJfY29ubiA9 IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07CisJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rv cl9jb3VudDsgaSsrKSB7CisJCWNvbm5lY3RvciA9IGNvbm5lY3RvcnNbaV07CiAKIAkJaWYgKGNv bm5fY29uZmlndXJlZCAmIEJJVF9VTEwoaSkpCiAJCQljb250aW51ZTsKQEAgLTIxMzAsMTcgKzE5 MjgsMTcgQEAgc3RhdGljIGJvb2wgZHJtX3RhcmdldF9wcmVmZXJyZWQoc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlciwKIAkJfQogCiAJCS8qIGZpcnN0IHBhc3Mgb3ZlciBhbGwgdGhlIHVu dGlsZWQgY29ubmVjdG9ycyAqLwotCQlpZiAodGlsZV9wYXNzID09IDAgJiYgZmJfaGVscGVyX2Nv bm4tPmNvbm5lY3Rvci0+aGFzX3RpbGUpCisJCWlmICh0aWxlX3Bhc3MgPT0gMCAmJiBjb25uZWN0 b3ItPmhhc190aWxlKQogCQkJY29udGludWU7CiAKIAkJaWYgKHRpbGVfcGFzcyA9PSAxKSB7Ci0J CQlpZiAoZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV9oX2xvYyAhPSAwIHx8Ci0JCQkg ICAgZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV92X2xvYyAhPSAwKQorCQkJaWYgKGNv bm5lY3Rvci0+dGlsZV9oX2xvYyAhPSAwIHx8CisJCQkgICAgY29ubmVjdG9yLT50aWxlX3ZfbG9j ICE9IDApCiAJCQkJY29udGludWU7CiAKIAkJfSBlbHNlIHsKLQkJCWlmIChmYl9oZWxwZXJfY29u bi0+Y29ubmVjdG9yLT50aWxlX2hfbG9jICE9IHRpbGVfcGFzcyAtIDEgJiYKLQkJCSAgICBmYl9o ZWxwZXJfY29ubi0+Y29ubmVjdG9yLT50aWxlX3ZfbG9jICE9IHRpbGVfcGFzcyAtIDEpCisJCQlp ZiAoY29ubmVjdG9yLT50aWxlX2hfbG9jICE9IHRpbGVfcGFzcyAtIDEgJiYKKwkJCSAgICBjb25u ZWN0b3ItPnRpbGVfdl9sb2MgIT0gdGlsZV9wYXNzIC0gMSkKIAkJCS8qIGlmIHRoaXMgdGlsZV9w YXNzIGRvZXNuJ3QgY292ZXIgYW55IG9mIHRoZSB0aWxlcyAtIGtlZXAgZ29pbmcgKi8KIAkJCQlj b250aW51ZTsKIApAQCAtMjE0OCwyMiArMTk0NiwyMiBAQCBzdGF0aWMgYm9vbCBkcm1fdGFyZ2V0 X3ByZWZlcnJlZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCQkJICogZmluZCB0 aGUgdGlsZSBvZmZzZXRzIGZvciB0aGlzIHBhc3MgLSBuZWVkIHRvIGZpbmQKIAkJCSAqIGFsbCB0 aWxlcyBsZWZ0IGFuZCBhYm92ZQogCQkJICovCi0JCQlkcm1fZ2V0X3RpbGVfb2Zmc2V0cyhmYl9o ZWxwZXIsIG1vZGVzLCBvZmZzZXRzLAotCQkJCQkgICAgIGksIGZiX2hlbHBlcl9jb25uLT5jb25u ZWN0b3ItPnRpbGVfaF9sb2MsIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPnRpbGVfdl9sb2Mp OworCQkJZHJtX2NsaWVudF9nZXRfdGlsZV9vZmZzZXRzKGNvbm5lY3RvcnMsIGNvbm5lY3Rvcl9j b3VudCwgbW9kZXMsIG9mZnNldHMsIGksCisJCQkJCQkgICAgY29ubmVjdG9yLT50aWxlX2hfbG9j LCBjb25uZWN0b3ItPnRpbGVfdl9sb2MpOwogCQl9CiAJCURSTV9ERUJVR19LTVMoImxvb2tpbmcg Zm9yIGNtZGxpbmUgbW9kZSBvbiBjb25uZWN0b3IgJWRcbiIsCi0JCQkgICAgICBmYl9oZWxwZXJf Y29ubi0+Y29ubmVjdG9yLT5iYXNlLmlkKTsKKwkJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCk7 CiAKIAkJLyogZ290IGZvciBjb21tYW5kIGxpbmUgbW9kZSBmaXJzdCAqLwotCQltb2Rlc1tpXSA9 IGRybV9waWNrX2NtZGxpbmVfbW9kZShmYl9oZWxwZXJfY29ubik7CisJCW1vZGVzW2ldID0gZHJt X2Nvbm5lY3Rvcl9waWNrX2NtZGxpbmVfbW9kZShjb25uZWN0b3IpOwogCQlpZiAoIW1vZGVzW2ld KSB7CiAJCQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZvciBwcmVmZXJyZWQgbW9kZSBvbiBjb25u ZWN0b3IgJWQgJWRcbiIsCi0JCQkJICAgICAgZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+YmFz ZS5pZCwgZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV9ncm91cCA/IGZiX2hlbHBlcl9j b25uLT5jb25uZWN0b3ItPnRpbGVfZ3JvdXAtPmlkIDogMCk7Ci0JCQltb2Rlc1tpXSA9IGRybV9o YXNfcHJlZmVycmVkX21vZGUoZmJfaGVscGVyX2Nvbm4sIHdpZHRoLCBoZWlnaHQpOworCQkJCSAg ICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT50aWxlX2dyb3VwID8gY29ubmVjdG9y LT50aWxlX2dyb3VwLT5pZCA6IDApOworCQkJbW9kZXNbaV0gPSBkcm1fY29ubmVjdG9yX2hhc19w cmVmZXJyZWRfbW9kZShjb25uZWN0b3IsIHdpZHRoLCBoZWlnaHQpOwogCQl9CiAJCS8qIE5vIHBy ZWZlcnJlZCBtb2RlcywgcGljayBvbmUgb2ZmIHRoZSBsaXN0ICovCi0JCWlmICghbW9kZXNbaV0g JiYgIWxpc3RfZW1wdHkoJmZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPm1vZGVzKSkgewotCQkJ bGlzdF9mb3JfZWFjaF9lbnRyeShtb2Rlc1tpXSwgJmZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3It Pm1vZGVzLCBoZWFkKQorCQlpZiAoIW1vZGVzW2ldICYmICFsaXN0X2VtcHR5KCZjb25uZWN0b3It Pm1vZGVzKSkgeworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShtb2Rlc1tpXSwgJmNvbm5lY3Rvci0+ bW9kZXMsIGhlYWQpCiAJCQkJYnJlYWs7CiAJCX0KIAkJRFJNX0RFQlVHX0tNUygiZm91bmQgbW9k ZSAlc1xuIiwgbW9kZXNbaV0gPyBtb2Rlc1tpXS0+bmFtZSA6CkBAIC0yMTkyLDQwICsxOTkwLDQx IEBAIHN0YXRpYyBib29sIGNvbm5lY3Rvcl9oYXNfcG9zc2libGVfY3J0YyhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGludCBkcm1f cGlja19jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAotCQkJICBzdHJ1Y3Qg ZHJtX2NydGMgKipiZXN0X2NydGNzLAotCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1v ZGVzLAotCQkJICBpbnQgbiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIGludCBkcm1f Y2xpZW50X3BpY2tfY3J0Y3Moc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsCisJCQkJIHN0 cnVjdCBkcm1fY29ubmVjdG9yICoqY29ubmVjdG9ycywKKwkJCQkgdW5zaWduZWQgaW50IGNvbm5l Y3Rvcl9jb3VudCwKKwkJCQkgc3RydWN0IGRybV9jcnRjICoqYmVzdF9jcnRjcywKKwkJCQkgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2RlcywKKwkJCQkgaW50IG4sIGludCB3aWR0aCwgaW50 IGhlaWdodCkKIHsKLQlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCA9ICZmYl9oZWxwZXIt PmNsaWVudDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CiAJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKIAlpbnQgbXlfc2NvcmUsIGJlc3Rfc2NvcmUsIHNj b3JlOwogCXN0cnVjdCBkcm1fY3J0YyAqKmNydGNzLCAqY3J0YzsKIAlzdHJ1Y3QgZHJtX21vZGVf c2V0ICptb2Rlc2V0OwotCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVy X2Nvbm47CiAJaW50IG87CiAKLQlpZiAobiA9PSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCkK KwlpZiAobiA9PSBjb25uZWN0b3JfY291bnQpCiAJCXJldHVybiAwOwogCi0JZmJfaGVscGVyX2Nv bm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW25dOwotCWNvbm5lY3RvciA9IGZiX2hlbHBl cl9jb25uLT5jb25uZWN0b3I7CisJY29ubmVjdG9yID0gY29ubmVjdG9yc1tuXTsKIAogCWJlc3Rf Y3J0Y3Nbbl0gPSBOVUxMOwotCWJlc3Rfc2NvcmUgPSBkcm1fcGlja19jcnRjcyhmYl9oZWxwZXIs IGJlc3RfY3J0Y3MsIG1vZGVzLCBuKzEsIHdpZHRoLCBoZWlnaHQpOworCWJlc3Rfc2NvcmUgPSBk cm1fY2xpZW50X3BpY2tfY3J0Y3MoY2xpZW50LCBjb25uZWN0b3JzLCBjb25uZWN0b3JfY291bnQs CisJCQkJCSAgIGJlc3RfY3J0Y3MsIG1vZGVzLCBuICsgMSwgd2lkdGgsIGhlaWdodCk7CiAJaWYg KG1vZGVzW25dID09IE5VTEwpCiAJCXJldHVybiBiZXN0X3Njb3JlOwogCi0JY3J0Y3MgPSBrY2Fs bG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LCBzaXplb2YoKmNydGNzKSwgR0ZQX0tFUk5F TCk7CisJY3J0Y3MgPSBrY2FsbG9jKGNvbm5lY3Rvcl9jb3VudCwgc2l6ZW9mKCpjcnRjcyksIEdG UF9LRVJORUwpOwogCWlmICghY3J0Y3MpCiAJCXJldHVybiBiZXN0X3Njb3JlOwogCiAJbXlfc2Nv cmUgPSAxOwogCWlmIChjb25uZWN0b3ItPnN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5l Y3RlZCkKIAkJbXlfc2NvcmUrKzsKLQlpZiAoZHJtX2hhc19jbWRsaW5lX21vZGUoZmJfaGVscGVy X2Nvbm4pKQorCWlmIChjb25uZWN0b3ItPmNtZGxpbmVfbW9kZS5zcGVjaWZpZWQpCiAJCW15X3Nj b3JlKys7Ci0JaWYgKGRybV9oYXNfcHJlZmVycmVkX21vZGUoZmJfaGVscGVyX2Nvbm4sIHdpZHRo LCBoZWlnaHQpKQorCWlmIChkcm1fY29ubmVjdG9yX2hhc19wcmVmZXJyZWRfbW9kZShjb25uZWN0 b3IsIHdpZHRoLCBoZWlnaHQpKQogCQlteV9zY29yZSsrOwogCiAJLyoKQEAgLTIyNDQsNyArMjA0 Myw3IEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKIAogCQlpZiAobyA8IG4pIHsKIAkJCS8qIGlnbm9yZSBjbG9uaW5nIHVubGVzcyBv bmx5IGEgc2luZ2xlIGNydGMgKi8KLQkJCWlmIChmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcu bnVtX2NydGMgPiAxKQorCQkJaWYgKGRldi0+bW9kZV9jb25maWcubnVtX2NydGMgPiAxKQogCQkJ CWNvbnRpbnVlOwogCiAJCQlpZiAoIWRybV9tb2RlX2VxdWFsKG1vZGVzW29dLCBtb2Rlc1tuXSkp CkBAIC0yMjUzLDEyICsyMDUyLDExIEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tfY3J0Y3Moc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAogCQljcnRjc1tuXSA9IGNydGM7CiAJCW1lbWNw eShjcnRjcywgYmVzdF9jcnRjcywgbiAqIHNpemVvZigqY3J0Y3MpKTsKLQkJc2NvcmUgPSBteV9z Y29yZSArIGRybV9waWNrX2NydGNzKGZiX2hlbHBlciwgY3J0Y3MsIG1vZGVzLCBuICsgMSwKLQkJ CQkJCSAgd2lkdGgsIGhlaWdodCk7CisJCXNjb3JlID0gbXlfc2NvcmUgKyBkcm1fY2xpZW50X3Bp Y2tfY3J0Y3MoY2xpZW50LCBjb25uZWN0b3JzLCBjb25uZWN0b3JfY291bnQsCisJCQkJCQkJIGNy dGNzLCBtb2RlcywgbiArIDEsIHdpZHRoLCBoZWlnaHQpOwogCQlpZiAoc2NvcmUgPiBiZXN0X3Nj b3JlKSB7CiAJCQliZXN0X3Njb3JlID0gc2NvcmU7Ci0JCQltZW1jcHkoYmVzdF9jcnRjcywgY3J0 Y3MsCi0JCQkgICAgICAgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQgKiBzaXplb2YoKmNydGNz KSk7CisJCQltZW1jcHkoYmVzdF9jcnRjcywgY3J0Y3MsIGNvbm5lY3Rvcl9jb3VudCAqIHNpemVv ZigqY3J0Y3MpKTsKIAkJfQogCX0KIApAQCAtMjI2NywxNSArMjA2NSwxNyBAQCBzdGF0aWMgaW50 IGRybV9waWNrX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiB9CiAKIC8q IFRyeSB0byByZWFkIHRoZSBCSU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0IGZv ciB0aGUgaW5pdGlhbCBjb25maWcgKi8KLXN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfZmlybXdh cmVfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkJCSAgc3RydWN0 IGRybV9jcnRjICoqY3J0Y3MsCi0JCQkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2Rl cywKLQkJCQkJICBzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0cywKLQkJCQkJICBib29sICpl bmFibGVkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitzdGF0aWMgYm9vbCBkcm1fY2xpZW50X2Zp cm13YXJlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKKwkJCQkgICAgICAg c3RydWN0IGRybV9jb25uZWN0b3IgKipjb25uZWN0b3JzLAorCQkJCSAgICAgICB1bnNpZ25lZCBp bnQgY29ubmVjdG9yX2NvdW50LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKipjcnRjcywK KwkJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2RlcywKKwkJCQkgICAgICAg c3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCisJCQkJICAgICAgIGJvb2wgKmVuYWJsZWQs IGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJf aGVscGVyLT5kZXY7Ci0JdW5zaWduZWQgaW50IGNvdW50ID0gbWluKGZiX2hlbHBlci0+Y29ubmVj dG9yX2NvdW50LCBCSVRTX1BFUl9MT05HKTsKKwl1bnNpZ25lZCBpbnQgY291bnQgPSBtaW5fdCh1 bnNpZ25lZCBpbnQsIGNvbm5lY3Rvcl9jb3VudCwgQklUU19QRVJfTE9ORyk7CiAJdW5zaWduZWQg bG9uZyBjb25uX2NvbmZpZ3VyZWQsIGNvbm5fc2VxOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjbGllbnQtPmRldjsKIAlpbnQgaSwgajsKIAlib29sICpzYXZlX2VuYWJsZWQ7CiAJYm9vbCBm YWxsYmFjayA9IHRydWUsIHJldCA9IHRydWU7CkBAIC0yMjk3LDEzICsyMDk3LDExIEBAIHN0YXRp YyBib29sIGRybV9mYl9oZWxwZXJfZmlybXdhcmVfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIsCiAJY29ubl9jb25maWd1cmVkID0gMDsKIHJldHJ5OgogCWZvciAoaSA9IDA7 IGkgPCBjb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJf Y29ubjsKIAkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKIAkJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyOwogCQlzdHJ1Y3QgZHJtX2NydGMgKm5ld19jcnRjOwogCi0JCWZiX2Nv bm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwotCQljb25uZWN0b3IgPSBmYl9jb25u LT5jb25uZWN0b3I7CisJCWNvbm5lY3RvciA9IGNvbm5lY3RvcnNbaV07CiAKIAkJaWYgKGNvbm5f Y29uZmlndXJlZCAmIEJJVChpKSkKIAkJCWNvbnRpbnVlOwpAQCAtMjM2MSwxNCArMjE1OSwxMyBA QCBzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZyhzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLAogCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKIAogCQkvKiBn byBmb3IgY29tbWFuZCBsaW5lIG1vZGUgZmlyc3QgKi8KLQkJbW9kZXNbaV0gPSBkcm1fcGlja19j bWRsaW5lX21vZGUoZmJfY29ubik7CisJCW1vZGVzW2ldID0gZHJtX2Nvbm5lY3Rvcl9waWNrX2Nt ZGxpbmVfbW9kZShjb25uZWN0b3IpOwogCiAJCS8qIHRyeSBmb3IgcHJlZmVycmVkIG5leHQgKi8K IAkJaWYgKCFtb2Rlc1tpXSkgewogCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVy cmVkIG1vZGUgb24gY29ubmVjdG9yICVzICVkXG4iLAogCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFt ZSwgY29ubmVjdG9yLT5oYXNfdGlsZSk7Ci0JCQltb2Rlc1tpXSA9IGRybV9oYXNfcHJlZmVycmVk X21vZGUoZmJfY29ubiwgd2lkdGgsCi0JCQkJCQkJICBoZWlnaHQpOworCQkJbW9kZXNbaV0gPSBk cm1fY29ubmVjdG9yX2hhc19wcmVmZXJyZWRfbW9kZShjb25uZWN0b3IsIHdpZHRoLCBoZWlnaHQp OwogCQl9CiAKIAkJLyogTm8gcHJlZmVycmVkIG1vZGUgbWFya2VkIGJ5IHRoZSBFRElEPyBBcmUg dGhlcmUgYW55IG1vZGVzPyAqLwpAQCAtMjQ0NSw4ICsyMjQyLDEyIEBAIHN0YXRpYyBib29sIGRy bV9mYl9oZWxwZXJfZmlybXdhcmVfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsCiBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKIAkJCSAgICB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCiB7CisJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwgKipjb25uZWN0b3JzID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX2Ns aWVudF9kZXYgKmNsaWVudCA9ICZmYl9oZWxwZXItPmNsaWVudDsKKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9o ZWxwZXItPmRldjsKKwl1bnNpZ25lZCBpbnQgdG90YWxfbW9kZXNfY291bnQgPSAwOworCXVuc2ln bmVkIGludCBjb25uZWN0b3JfY291bnQgPSAwOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoq bW9kZXM7CiAJc3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHM7CiAJc3RydWN0IGRybV9jcnRj ICoqY3J0Y3M7CkBAIC0yNDU0LDE2ICsyMjU1LDI4IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9j cnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWludCBpOwogCiAJRFJNX0RF QlVHX0tNUygiXG4iKTsKLQkvKiBwcmV2ZW50IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIG9mIGNv bm5lY3Rvcl9jb3VudCBieSBob3RwbHVnICovCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZmJfaGVs cGVyLT5sb2NrKTsKIAotCWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3Vu dCwgc2l6ZW9mKCpjcnRjcyksIEdGUF9LRVJORUwpOwotCW1vZGVzID0ga2NhbGxvYyhmYl9oZWxw ZXItPmNvbm5lY3Rvcl9jb3VudCwKLQkJCXNpemVvZihzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq KSwgR0ZQX0tFUk5FTCk7Ci0Jb2Zmc2V0cyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3Jf Y291bnQsCi0JCQkgIHNpemVvZihzdHJ1Y3QgZHJtX2ZiX29mZnNldCksIEdGUF9LRVJORUwpOwot CWVuYWJsZWQgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LAotCQkJICBzaXpl b2YoYm9vbCksIEdGUF9LRVJORUwpOworCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRl diwgJmNvbm5faXRlcik7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25u ZWN0b3IsICZjb25uX2l0ZXIpIHsKKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKip0bXA7CisKKwkJ dG1wID0ga3JlYWxsb2MoY29ubmVjdG9ycywgKGNvbm5lY3Rvcl9jb3VudCArIDEpICogc2l6ZW9m KCpjb25uZWN0b3JzKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdG1wKQorCQkJZ290byBmcmVlX2Nv bm5lY3RvcnM7CisKKwkJY29ubmVjdG9ycyA9IHRtcDsKKwkJZHJtX2Nvbm5lY3Rvcl9nZXQoY29u bmVjdG9yKTsKKwkJY29ubmVjdG9yc1tjb25uZWN0b3JfY291bnQrK10gPSBjb25uZWN0b3I7CisJ fQorCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKKworCWlmICghY29u bmVjdG9yX2NvdW50KQorCQlyZXR1cm47CisKKwljcnRjcyA9IGtjYWxsb2MoY29ubmVjdG9yX2Nv dW50LCBzaXplb2YoKmNydGNzKSwgR0ZQX0tFUk5FTCk7CisJbW9kZXMgPSBrY2FsbG9jKGNvbm5l Y3Rvcl9jb3VudCwgc2l6ZW9mKCptb2RlcyksIEdGUF9LRVJORUwpOworCW9mZnNldHMgPSBrY2Fs bG9jKGNvbm5lY3Rvcl9jb3VudCwgc2l6ZW9mKCpvZmZzZXRzKSwgR0ZQX0tFUk5FTCk7CisJZW5h YmxlZCA9IGtjYWxsb2MoY29ubmVjdG9yX2NvdW50LCBzaXplb2YoYm9vbCksIEdGUF9LRVJORUwp OwogCWlmICghY3J0Y3MgfHwgIW1vZGVzIHx8ICFlbmFibGVkIHx8ICFvZmZzZXRzKSB7CiAJCURS TV9FUlJPUigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKIAkJZ290byBvdXQ7CkBAIC0y NDcyLDQwICsyMjg1LDQyIEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCW11dGV4X2xvY2soJmNsaWVudC0+bW9kZXNldF9tdXRl eCk7CiAKIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwot CWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9tb2RlcyhmYl9oZWxwZXIsIHdpZHRo LCBoZWlnaHQpID09IDApCisJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rvcl9jb3VudDsgaSsrKQor CQl0b3RhbF9tb2Rlc19jb3VudCArPSBjb25uZWN0b3JzW2ldLT5mdW5jcy0+ZmlsbF9tb2Rlcyhj b25uZWN0b3JzW2ldLCB3aWR0aCwgaGVpZ2h0KTsKKwlpZiAoIXRvdGFsX21vZGVzX2NvdW50KQog CQlEUk1fREVCVUdfS01TKCJObyBjb25uZWN0b3JzIHJlcG9ydGVkIGNvbm5lY3RlZCB3aXRoIG1v ZGVzXG4iKTsKLQlkcm1fZW5hYmxlX2Nvbm5lY3RvcnMoZmJfaGVscGVyLCBlbmFibGVkKTsKKwlk cm1fY2xpZW50X2Nvbm5lY3RvcnNfZW5hYmxlZChjb25uZWN0b3JzLCBjb25uZWN0b3JfY291bnQs IGVuYWJsZWQpOwogCi0JaWYgKCFkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZyhmYl9oZWxw ZXIsIGNydGNzLCBtb2Rlcywgb2Zmc2V0cywKLQkJCQkJICAgZW5hYmxlZCwgd2lkdGgsIGhlaWdo dCkpIHsKLQkJbWVtc2V0KG1vZGVzLCAwLCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCpzaXpl b2YobW9kZXNbMF0pKTsKLQkJbWVtc2V0KGNydGNzLCAwLCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9j b3VudCpzaXplb2YoY3J0Y3NbMF0pKTsKLQkJbWVtc2V0KG9mZnNldHMsIDAsIGZiX2hlbHBlci0+ Y29ubmVjdG9yX2NvdW50KnNpemVvZihvZmZzZXRzWzBdKSk7CisJaWYgKCFkcm1fY2xpZW50X2Zp cm13YXJlX2NvbmZpZyhjbGllbnQsIGNvbm5lY3RvcnMsIGNvbm5lY3Rvcl9jb3VudCwgY3J0Y3Ms CisJCQkJCW1vZGVzLCBvZmZzZXRzLCBlbmFibGVkLCB3aWR0aCwgaGVpZ2h0KSkgeworCQltZW1z ZXQobW9kZXMsIDAsIGNvbm5lY3Rvcl9jb3VudCAqIHNpemVvZigqbW9kZXMpKTsKKwkJbWVtc2V0 KGNydGNzLCAwLCBjb25uZWN0b3JfY291bnQgKiBzaXplb2YoKmNydGNzKSk7CisJCW1lbXNldChv ZmZzZXRzLCAwLCBjb25uZWN0b3JfY291bnQgKiBzaXplb2YoKm9mZnNldHMpKTsKIAotCQlpZiAo IWRybV90YXJnZXRfY2xvbmVkKGZiX2hlbHBlciwgbW9kZXMsIG9mZnNldHMsCi0JCQkJICAgICAg IGVuYWJsZWQsIHdpZHRoLCBoZWlnaHQpICYmCi0JCSAgICAhZHJtX3RhcmdldF9wcmVmZXJyZWQo ZmJfaGVscGVyLCBtb2Rlcywgb2Zmc2V0cywKLQkJCQkJICBlbmFibGVkLCB3aWR0aCwgaGVpZ2h0 KSkKKwkJaWYgKCFkcm1fY2xpZW50X3RhcmdldF9jbG9uZWQoZGV2LCBjb25uZWN0b3JzLCBjb25u ZWN0b3JfY291bnQsIG1vZGVzLAorCQkJCQkgICAgICBvZmZzZXRzLCBlbmFibGVkLCB3aWR0aCwg aGVpZ2h0KSAmJgorCQkgICAgIWRybV9jbGllbnRfdGFyZ2V0X3ByZWZlcnJlZChjb25uZWN0b3Jz LCBjb25uZWN0b3JfY291bnQsIG1vZGVzLAorCQkJCQkJIG9mZnNldHMsIGVuYWJsZWQsIHdpZHRo LCBoZWlnaHQpKQogCQkJRFJNX0VSUk9SKCJVbmFibGUgdG8gZmluZCBpbml0aWFsIG1vZGVzXG4i KTsKIAogCQlEUk1fREVCVUdfS01TKCJwaWNraW5nIENSVENzIGZvciAlZHglZCBjb25maWdcbiIs CiAJCQkgICAgICB3aWR0aCwgaGVpZ2h0KTsKIAotCQlkcm1fcGlja19jcnRjcyhmYl9oZWxwZXIs IGNydGNzLCBtb2RlcywgMCwgd2lkdGgsIGhlaWdodCk7CisJCWRybV9jbGllbnRfcGlja19jcnRj cyhjbGllbnQsIGNvbm5lY3RvcnMsIGNvbm5lY3Rvcl9jb3VudCwKKwkJCQkgICAgICBjcnRjcywg bW9kZXMsIDAsIHdpZHRoLCBoZWlnaHQpOwogCX0KIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+ ZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAKIAlkcm1fY2xpZW50X21vZGVzZXRfcmVsZWFzZShj bGllbnQpOwogCi0JZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVyLCBp KSB7CisJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rvcl9jb3VudDsgaSsrKSB7CiAJCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlID0gbW9kZXNbaV07CiAJCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGNydGNzW2ldOwogCQlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0ID0gJm9mZnNldHNb aV07CiAKIAkJaWYgKG1vZGUgJiYgY3J0YykgewogCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9k ZXNldCA9IGRybV9jbGllbnRfZmluZF9tb2Rlc2V0KGNsaWVudCwgY3J0Yyk7Ci0JCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KLQkJCQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZv W2ldLT5jb25uZWN0b3I7CisJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29u bmVjdG9yc1tpXTsKIAogCQkJRFJNX0RFQlVHX0tNUygiZGVzaXJlZCBtb2RlICVzIHNldCBvbiBj cnRjICVkICglZCwlZClcbiIsCiAJCQkJICAgICAgbW9kZS0+bmFtZSwgY3J0Yy0+YmFzZS5pZCwg b2Zmc2V0LT54LCBvZmZzZXQtPnkpOwpAQCAtMjUyOCw2ICsyMzQzLDEwIEBAIHN0YXRpYyB2b2lk IGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWtmcmVl KG1vZGVzKTsKIAlrZnJlZShvZmZzZXRzKTsKIAlrZnJlZShlbmFibGVkKTsKK2ZyZWVfY29ubmVj dG9yczoKKwlmb3IgKGkgPSAwOyBpIDwgY29ubmVjdG9yX2NvdW50OyBpKyspCisJCWRybV9jb25u ZWN0b3JfcHV0KGNvbm5lY3RvcnNbaV0pOworCWtmcmVlKGNvbm5lY3RvcnMpOwogfQogCiAvKgpA QCAtMjU0MCwxMCArMjM1OSwxMSBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjc19m YihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogewogCXN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OworCXN0cnVjdCBkcm1fY29ubmVjdG9y X2xpc3RfaXRlciBjb25uX2l0ZXI7CiAJc3RydWN0IGZiX2luZm8gKmluZm8gPSBmYl9oZWxwZXIt PmZiZGV2OwogCXVuc2lnbmVkIGludCByb3RhdGlvbiwgc3dfcm90YXRpb25zID0gMDsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVz ZXQ7Ci0JaW50IGk7CiAKIAltdXRleF9sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwogCWRy bV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKQEAgLTI1NjAsMTAg KzIzODAsOCBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3NfZmIoc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlcikKIAl9CiAJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0 ZXgpOwogCi0JbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK LQlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKLQkJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9Ci0JCQkJCWZiX2hlbHBlci0+Y29ubmVjdG9y X2luZm9baV0tPmNvbm5lY3RvcjsKKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihmYl9o ZWxwZXItPmRldiwgJmNvbm5faXRlcik7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9jb25uZWN0b3Jf aXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKIAogCQkvKiB1c2UgZmlyc3QgY29ubmVjdGVk IGNvbm5lY3RvciBmb3IgdGhlIHBoeXNpY2FsIGRpbWVuc2lvbnMgKi8KIAkJaWYgKGNvbm5lY3Rv ci0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSB7CkBAIC0yNTcyLDcgKzIz OTAsNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3NfZmIoc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlcikKIAkJCWJyZWFrOwogCQl9CiAJfQotCW11dGV4X3VubG9jaygmZmJfaGVs cGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9l bmQoJmNvbm5faXRlcik7CiAKIAlzd2l0Y2ggKHN3X3JvdGF0aW9ucykgewogCWNhc2UgRFJNX01P REVfUk9UQVRFXzA6CkBAIC0yODExLDEyICsyNjI5LDYgQEAgaW50IGRybV9mYl9oZWxwZXJfZmJk ZXZfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQly ZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoZmJfaGVscGVyKTsK LQlpZiAocmV0IDwgMCkgewotCQlEUk1fREVWX0VSUk9SKGRldi0+ZGV2LCAiZmJkZXY6IEZhaWxl ZCB0byBhZGQgY29ubmVjdG9ycyAocmV0PSVkKVxuIiwgcmV0KTsKLQkJZ290byBlcnJfZHJtX2Zi X2hlbHBlcl9maW5pOwotCX0KLQogCWlmICghZHJtX2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KGRl dikpCiAJCWRybV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zKGRldik7CiAKQEAgLTMx MjIsMTAgKzI5MzQsNiBAQCBzdGF0aWMgaW50IGRybV9mYmRldl9jbGllbnRfaG90cGx1ZyhzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKIAotCXJl dCA9IGRybV9mYl9oZWxwZXJfc2luZ2xlX2FkZF9hbGxfY29ubmVjdG9ycyhmYl9oZWxwZXIpOwot CWlmIChyZXQpCi0JCWdvdG8gZXJyX2NsZWFudXA7Ci0KIAlpZiAoIWRybV9kcnZfdXNlc19hdG9t aWNfbW9kZXNldChkZXYpKQogCQlkcm1faGVscGVyX2Rpc2FibGVfdW51c2VkX2Z1bmN0aW9ucyhk ZXYpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmggYi9pbmNsdWRlL2Ry bS9kcm1fY2xpZW50LmgKaW5kZXggNjRiNzI1YjMxOGYyLi42YmI1ZTA0MTI4NzcgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY2xpZW50 LmgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxs aW51eC90eXBlcy5oPgogCisjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4KICNpbmNsdWRl IDxkcm0vZHJtX2NydGMuaD4KIAogc3RydWN0IGRybV9jbGllbnRfZGV2OwpAQCAtMTY3LDYgKzE2 OCwyMCBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMoc3RydWN0IGRybV9jbGllbnRfZGV2 ICpjbGllbnQsIGludCBtb2RlKTsKICNkZWZpbmUgZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0 KG1vZGVzZXQsIGNsaWVudCkgXAogCWZvciAobW9kZXNldCA9IChjbGllbnQpLT5tb2Rlc2V0czsg bW9kZXNldCAmJiBtb2Rlc2V0LT5jcnRjOyBtb2Rlc2V0KyspCiAKKy8qKgorICogZHJtX2NsaWVu dF9mb3JfZWFjaF9jb25uZWN0b3JfaXRlciAtIGNvbm5lY3Rvcl9saXN0IGl0ZXJhdG9yIG1hY3Jv CisgKiBAY29ubmVjdG9yOiAmc3RydWN0IGRybV9jb25uZWN0b3IgcG9pbnRlciB1c2VkIGFzIGN1 cnNvcgorICogQGl0ZXI6ICZzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIKKyAqCisgKiBU aGlzIGl0ZXJhdGVzIHRoZSBjb25uZWN0b3JzIHRoYXQgYXJlIHVzZWFibGUgZm9yIGludGVybmFs IGNsaWVudHMgKGV4Y2x1ZGVzCisgKiB3cml0ZWJhY2sgY29ubmVjdG9ycykuCisgKgorICogRm9y IG1vcmUgaW5mbyBzZWUgZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKCkuCisgKi8KKyNkZWZp bmUgZHJtX2NsaWVudF9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsIGl0ZXIpIFwK Kwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCBpdGVyKSBcCisJCWlmIChj b25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0sp CisKIGludCBkcm1fY2xpZW50X2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7 CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oIGIvaW5j bHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCmluZGV4IDhkMGRkZWE3NGE5ZS4uMTA0ODExNzhlN2Uw IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2ZiX2hlbHBlci5oCkBAIC05NiwxNiArOTYsMTAgQEAgc3RydWN0IGRybV9mYl9oZWxw ZXJfZnVuY3MgewogCQkJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcyk7 CiB9OwogCi1zdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgewotCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7Ci19OwotCiAvKioKICAqIHN0cnVjdCBkcm1fZmJfaGVscGVyIC0g bWFpbiBzdHJ1Y3R1cmUgdG8gZW11bGF0ZSBmYmRldiBvbiB0b3Agb2YgS01TCiAgKiBAZmI6IFNj YW5vdXQgZnJhbWVidWZmZXIgb2JqZWN0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0gKiBAY29ubmVj dG9yX2NvdW50OiBudW1iZXIgb2YgY29ubmVjdGVkIGNvbm5lY3RvcnMKLSAqIEBjb25uZWN0b3Jf aW5mb19hbGxvY19jb3VudDogc2l6ZSBvZiBjb25uZWN0b3JfaW5mbwogICogQGZ1bmNzOiBkcml2 ZXIgY2FsbGJhY2tzIGZvciBmYiBoZWxwZXIKICAqIEBmYmRldjogZW11bGF0ZWQgZmJkZXYgZGV2 aWNlIGluZm8gc3RydWN0CiAgKiBAcHNldWRvX3BhbGV0dGU6IGZha2UgcGFsZXR0ZSBvZiAxNiBj b2xvcnMKQEAgLTEzNywxNSArMTMxLDYgQEAgc3RydWN0IGRybV9mYl9oZWxwZXIgewogCiAJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKLQlpbnQg Y29ubmVjdG9yX2NvdW50OwotCWludCBjb25uZWN0b3JfaW5mb19hbGxvY19jb3VudDsKLQkvKioK LQkgKiBAY29ubmVjdG9yX2luZm86Ci0JICoKLQkgKiBBcnJheSBvZiBwZXItY29ubmVjdG9yIGlu Zm9ybWF0aW9uLiBEbyBub3QgaXRlcmF0ZSBkaXJlY3RseSwgYnV0IHVzZQotCSAqIGRybV9mYl9o ZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yLgotCSAqLwotCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nv bm5lY3RvciAqKmNvbm5lY3Rvcl9pbmZvOwogCWNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1 bmNzICpmdW5jczsKIAlzdHJ1Y3QgZmJfaW5mbyAqZmJkZXY7CiAJdTMyIHBzZXVkb19wYWxldHRl WzE3XTsKQEAgLTI4NSwxOCArMjcwLDggQEAgaW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0 IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsCiAKIGludCBkcm1fZmJfaGVscGVyX2hv dHBsdWdfZXZlbnQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcik7CiBpbnQgZHJtX2Zi X2hlbHBlcl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBp bnQgYnBwX3NlbCk7Ci1pbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3Jz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpOwogaW50IGRybV9mYl9oZWxwZXJfZGVi dWdfZW50ZXIoc3RydWN0IGZiX2luZm8gKmluZm8pOwogaW50IGRybV9mYl9oZWxwZXJfZGVidWdf bGVhdmUoc3RydWN0IGZiX2luZm8gKmluZm8pOwotc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKgot ZHJtX2hhc19wcmVmZXJyZWRfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZi X2Nvbm5lY3RvciwKLQkJCWludCB3aWR0aCwgaW50IGhlaWdodCk7Ci1zdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqCi1kcm1fcGlja19jbWRsaW5lX21vZGUoc3RydWN0IGRybV9mYl9oZWxwZXJfY29u bmVjdG9yICpmYl9oZWxwZXJfY29ubik7Ci0KLWludCBkcm1fZmJfaGVscGVyX2FkZF9vbmVfY29u bmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpOwotaW50IGRybV9mYl9oZWxwZXJfcmVtb3ZlX29uZV9jb25uZWN0b3Io c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKLQkJCQkgICAgICAgc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3Rvcik7CiAKIGludCBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyLApAQCAtNDcxLDEyICs0NDYsNiBAQCBzdGF0aWMgaW5saW5lIGludCBkcm1fZmJfaGVs cGVyX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1kcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRf YWxsX2Nvbm5lY3RvcnMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKLXsKLQlyZXR1 cm4gMDsKLX0KLQogc3RhdGljIGlubGluZSBpbnQgZHJtX2ZiX2hlbHBlcl9kZWJ1Z19lbnRlcihz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlyZXR1cm4gMDsKQEAgLTQ4NywzNCArNDU2LDYgQEAg c3RhdGljIGlubGluZSBpbnQgZHJtX2ZiX2hlbHBlcl9kZWJ1Z19sZWF2ZShzdHJ1Y3QgZmJfaW5m byAqaW5mbykKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqCi1kcm1faGFzX3ByZWZlcnJlZF9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nv bm5lY3RvciAqZmJfY29ubmVjdG9yLAotCQkgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQot ewotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICoKLWRybV9waWNrX2NtZGxpbmVfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0 b3IgKmZiX2hlbHBlcl9jb25uLAotCQkgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0J cmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50Ci1kcm1fZmJfaGVscGVyX2FkZF9v bmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKLXsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGlu bGluZSBpbnQKLWRybV9mYl9oZWxwZXJfcmVtb3ZlX29uZV9jb25uZWN0b3Ioc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwKLQkJCQkgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQotewotCXJldHVybiAwOwotfQotCiBzdGF0aWMgaW5saW5lIGludAogZHJtX2ZiX2hlbHBl cl9mYmRldl9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICBzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLApAQCAtNTU2LDYgKzQ5NywyNyBAQCBkcm1fZmJkZXZfZ2VuZXJp Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2Jw cCkKIAogI2VuZGlmCiAKKy8qIFRPRE86IFRoZXJlJ3MgYSB0b2RvIGVudHJ5IHRvIHJlbW92ZSB0 aGVzZSB0aHJlZSAqLworc3RhdGljIGlubGluZSBpbnQKK2RybV9mYl9oZWxwZXJfc2luZ2xlX2Fk ZF9hbGxfY29ubmVjdG9ycyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQoreworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludAorZHJtX2ZiX2hlbHBlcl9hZGRfb25lX2Nv bm5lY3RvcihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAorCQkJCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUg aW50Citkcm1fZmJfaGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsCisJCQkJICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikK K3sKKwlyZXR1cm4gMDsKK30KKwogLyoqCiAgKiBkcm1fZmJfaGVscGVyX3JlbW92ZV9jb25mbGlj dGluZ19mcmFtZWJ1ZmZlcnMgLSByZW1vdmUgZmlybXdhcmUtY29uZmlndXJlZCBmcmFtZWJ1ZmZl cnMKICAqIEBhOiBtZW1vcnkgcmFuZ2UsIHVzZXJzIG9mIHdoaWNoIGFyZSB0byBiZSByZW1vdmVk Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==