From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v3 05/11] drm/fb-helper: Remove drm_fb_helper_crtc Date: Sat, 20 Apr 2019 12:45:50 +0200 Message-ID: <20190420104556.31127-6-noralf@tronnes.org> References: <20190420104556.31127-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190420104556.31127-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: maxime.ripard@bootlin.com, daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= List-Id: intel-gfx@lists.freedesktop.org SXQgbm93IG9ubHkgY29udGFpbnMgdGhlIG1vZGVzZXQgc28gdXNlIHRoYXQgZGlyZWN0bHkgaW5z dGVhZCBhbmQgYXR0YWNoCmEgbW9kZXNldCBhcnJheSB0byBkcm1fY2xpZW50X2Rldi4gZHJtX2Zi X2hlbHBlciB3aWxsIHVzZSB0aGlzIGFycmF5LgpDb2RlIHdpbGwgbGF0ZXIgYmUgbW92ZWQgdG8g ZHJtX2NsaWVudCwgc28gYWRkIGNvZGUgdGhlcmUgaW4gYSBuZXcgZmlsZQpkcm1fY2xpZW50X21v ZGVzZXQuYyB3aXRoIE1JVCBsaWNlbnNlIHRvIG1hdGNoIGRybV9mYl9oZWxwZXIuYy4KClRoZSBt b2Rlc2V0IGNvbm5lY3RvciBhcnJheSBzaXplIGlzIGhhcmRjb2RlZCBmb3IgdGhlIGNsb25lZCBj YXNlIHRvIGF2b2lkCmhhdmluZyB0byBwYXNzIGluIGEgdmFsdWUgZnJvbSB0aGUgZHJpdmVyLiBB IHZhbHVlIG9mIDggaXMgY2hvc2VuIHRvIGVycgpvbiB0aGUgc2FmZSBzaWRlLiBUaGlzIG1lYW5z IHRoYXQgdGhlIG1heCBjb25uZWN0b3IgYXJndW1lbnQgZm9yCmRybV9mYl9oZWxwZXJfaW5pdCgp IGFuZCBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKCkgaXNuJ3QgdXNlZCBhbnltb3JlLAphIHRv ZG8gZW50cnkgZm9yIHRoaXMgaXMgYWRkZWQuCgpJbiBwYW5fZGlzcGxheV9hdG9taWMoKSByZXN0 b3JlX2ZiZGV2X21vZGVfZm9yY2UoKSBpcyB1c2VkIGluc3RlYWQgb2YKcmVzdG9yZV9mYmRldl9t b2RlX2F0b21pYygpIGJlY2F1c2UgdGhhdCBvbmUgd2lsbCBsYXRlciBiZWNvbWUgaW50ZXJuYWwK dG8gZHJtX2NsaWVudF9tb2Rlc2V0LgoKTG9ja2luZyBvcmRlcjoKMS4gZHJtX2ZiX2hlbHBlci0+ bG9jawoyLiBkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUKMy4gZHJtX2NsaWVudF9kZXYtPm1v ZGVzZXRfbXV0ZXgKCnYzOgotIFVzZSBmdWxsIGRybV9jbGllbnRfaW5pdC9yZWxlYXNlIGZvciB0 aGUgbW9kZXNldHMgKERhbmllbCBWZXR0ZXIpCi0gZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0 OiB1c2UgbG9ja2RlcF9hc3NlcnRfaGVsZCAoRGFuaWVsIFZldHRlcikKLSBIb29rIHVwIHRvIERv Y3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0IChEYW5pZWwgVmV0dGVyKQoKdjI6Ci0gQWRk IG1vZGVzZXRzIGFycmF5IHRvIGRybV9jbGllbnQgKERhbmllbCBWZXR0ZXIpCi0gVXNlIGEgbmV3 IGZpbGUgZm9yIHRoZSBtb2Rlc2V0IGNvZGUgKERhbmllbCBWZXR0ZXIpCi0gRmlsZSBoYXMgdG8g YmUgTUlUIGxpY2Vuc2VkIChFbW1hbnVlbCBWYWRvdCkKLSBBZGQgY29weXJpZ2h0cyBmcm9tIGRy bV9mYl9oZWxwZXIuYwoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJv bm5lcy5vcmc+Ci0tLQogRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3QgICAgIHwgICAz ICsKIERvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0ICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9k cm1fY2xpZW50LmMgICAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRf bW9kZXNldC5jIHwgMTA0ICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu YyAgICAgIHwgMzAxICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJt X2NsaWVudC5oICAgICAgICAgICAgIHwgIDMwICsrKwogaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBl ci5oICAgICAgICAgIHwgICA4IC0KIDggZmlsZXMgY2hhbmdlZCwgMjc4IGluc2VydGlvbnMoKyks IDE4NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJt X2NsaWVudF9tb2Rlc2V0LmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xp ZW50LnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0CmluZGV4IDdlNjcyMDYz ZTdlYi4uNThiNWExZDEyMTlkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xp ZW50LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJzdApAQCAtMTAsMyAr MTAsNiBAQCBLZXJuZWwgY2xpZW50cwogCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2RybV9jbGllbnQuYwogICAgOmV4cG9ydDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1 L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYworICAgOmV4cG9ydDoKZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vZ3B1L3RvZG8ucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QKaW5kZXgg MTUyOGFkMmQ1OThiLi44ZmEwOGI1ZmVhYjcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1 L3RvZG8ucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0CkBAIC0zMDAsNiArMzAw LDEzIEBAIGl0IHRvIHVzZSBkcm1fbW9kZV9oc3luYygpIGluc3RlYWQuCiAKIENvbnRhY3Q6IFNl YW4gUGF1bAogCitkcm1fZmJfaGVscGVyIGNsZWFudXAgdGFza3MKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCistIFRoZSBtYXggY29ubmVjdG9yIGFyZ3VtZW50IGZvciBkcm1fZmJfaGVs cGVyX2luaXQoKSBhbmQKKyAgZHJtX2ZiX2hlbHBlcl9mYmRldl9zZXR1cCgpIGlzbid0IHVzZWQg YW55bW9yZSBhbmQgY2FuIGJlIHJlbW92ZWQuCisKKwogQ29yZSByZWZhY3RvcmluZ3MKID09PT09 PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCAzZDBjNzVjZDY4N2MuLjIyOGFjOWUzYjY0NSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRy bV9idWZzLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fcGxhbmUubyBkcm1fY29sb3JfbWdtdC5vIGRy bV9wcmludC5vIFwKIAkJZHJtX2R1bWJfYnVmZmVycy5vIGRybV9tb2RlX2NvbmZpZy5vIGRybV92 YmxhbmsubyBcCiAJCWRybV9zeW5jb2JqLm8gZHJtX2xlYXNlLm8gZHJtX3dyaXRlYmFjay5vIGRy bV9jbGllbnQubyBcCi0JCWRybV9hdG9taWNfdWFwaS5vCisJCWRybV9jbGllbnRfbW9kZXNldC5v IGRybV9hdG9taWNfdWFwaS5vCiAKIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRPTSkgKz0gbGli L2RybV9yYW5kb20ubwogZHJtLSQoQ09ORklHX0RSTV9WTSkgKz0gZHJtX3ZtLm8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ns aWVudC5jCmluZGV4IGYyMGQxZGRhMzk2MS4uM2RkMDhjNmIyNjRkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50 LmMKQEAgLTI3LDcgKzI3LDYgQEAKICAqIERPQzogb3ZlcnZpZXcKICAqCiAgKiBUaGlzIGxpYnJh cnkgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY2xpZW50cyBydW5uaW5nIGluIHRoZSBrZXJuZWwgbGlr ZSBmYmRldiBhbmQgYm9vdHNwbGFzaC4KLSAqIEN1cnJlbnRseSBpdCdzIG9ubHkgcGFydGlhbGx5 IGltcGxlbWVudGVkLCBqdXN0IGVub3VnaCB0byBzdXBwb3J0IGZiZGV2LgogICoKICAqIEdFTSBk cml2ZXJzIHdoaWNoIHByb3ZpZGUgYSBHRU0gYmFzZWQgZHVtYiBidWZmZXIgd2l0aCBhIHZpcnR1 YWwgYWRkcmVzcyBhcmUgc3VwcG9ydGVkLgogICovCkBAIC05MiwxNCArOTEsMjAgQEAgaW50IGRy bV9jbGllbnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVudF9k ZXYgKmNsaWVudCwKIAljbGllbnQtPm5hbWUgPSBuYW1lOwogCWNsaWVudC0+ZnVuY3MgPSBmdW5j czsKIAotCXJldCA9IGRybV9jbGllbnRfb3BlbihjbGllbnQpOworCXJldCA9IGRybV9jbGllbnRf bW9kZXNldF9jcmVhdGUoY2xpZW50KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9wdXRfbW9kdWxl OwogCisJcmV0ID0gZHJtX2NsaWVudF9vcGVuKGNsaWVudCk7CisJaWYgKHJldCkKKwkJZ290byBl cnJfZnJlZTsKKwogCWRybV9kZXZfZ2V0KGRldik7CiAKIAlyZXR1cm4gMDsKIAorZXJyX2ZyZWU6 CisJZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoY2xpZW50KTsKIGVycl9wdXRfbW9kdWxlOgogCWlm IChmdW5jcykKIAkJbW9kdWxlX3B1dChmdW5jcy0+b3duZXIpOwpAQCAtMTQ4LDYgKzE1Myw3IEBA IHZvaWQgZHJtX2NsaWVudF9yZWxlYXNlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQog CiAJRFJNX0RFVl9ERUJVR19LTVMoZGV2LT5kZXYsICIlc1xuIiwgY2xpZW50LT5uYW1lKTsKIAor CWRybV9jbGllbnRfbW9kZXNldF9mcmVlKGNsaWVudCk7CiAJZHJtX2NsaWVudF9jbG9zZShjbGll bnQpOwogCWRybV9kZXZfcHV0KGRldik7CiAJaWYgKGNsaWVudC0+ZnVuY3MpCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2NsaWVudF9tb2Rlc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi42Njc3MGVkMzI5OWUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2NsaWVudF9tb2Rlc2V0LmMKQEAgLTAsMCArMSwxMDQgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBOb3JhbGYgVHLDuG5uZXMKKyAqIENv cHlyaWdodCAoYykgMjAwNi0yMDA5IFJlZCBIYXQgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDA2 LTIwMDggSW50ZWwgQ29ycG9yYXRpb24KKyAqICAgSmVzc2UgQmFybmVzIDxqZXNzZS5iYXJuZXNA aW50ZWwuY29tPgorICogQ29weXJpZ2h0IChjKSAyMDA3IERhdmUgQWlybGllIDxhaXJsaWVkQGxp bnV4LmllPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51 eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUgPGRybS9kcm1f Y2xpZW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9k ZXZpY2UuaD4KKworaW50IGRybV9jbGllbnRfbW9kZXNldF9jcmVhdGUoc3RydWN0IGRybV9jbGll bnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2 OworCXVuc2lnbmVkIGludCBudW1fY3J0YyA9IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7CisJ dW5zaWduZWQgaW50IG1heF9jb25uZWN0b3JfY291bnQgPSAxOworCXN0cnVjdCBkcm1fbW9kZV9z ZXQgKm1vZGVzZXQ7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXVuc2lnbmVkIGludCBpID0g MDsKKworCS8qIEFkZCB0ZXJtaW5hdGluZyB6ZXJvIGVudHJ5IHRvIGVuYWJsZSBpbmRleCBsZXNz IGl0ZXJhdGlvbiAqLworCWNsaWVudC0+bW9kZXNldHMgPSBrY2FsbG9jKG51bV9jcnRjICsgMSwg c2l6ZW9mKCpjbGllbnQtPm1vZGVzZXRzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjbGllbnQtPm1v ZGVzZXRzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW11dGV4X2luaXQoJmNsaWVudC0+bW9kZXNl dF9tdXRleCk7CisKKwlkcm1fZm9yX2VhY2hfY3J0YyhjcnRjLCBkZXYpCisJCWNsaWVudC0+bW9k ZXNldHNbaSsrXS5jcnRjID0gY3J0YzsKKworCS8qIENsb25pbmcgaXMgb25seSBzdXBwb3J0ZWQg aW4gdGhlIHNpbmdsZSBjcnRjIGNhc2UuICovCisJaWYgKG51bV9jcnRjID09IDEpCisJCW1heF9j b25uZWN0b3JfY291bnQgPSBEUk1fQ0xJRU5UX01BWF9DTE9ORURfQ09OTkVDVE9SUzsKKworCWZv ciAobW9kZXNldCA9IGNsaWVudC0+bW9kZXNldHM7IG1vZGVzZXQtPmNydGM7IG1vZGVzZXQrKykg eworCQltb2Rlc2V0LT5jb25uZWN0b3JzID0ga2NhbGxvYyhtYXhfY29ubmVjdG9yX2NvdW50LAor CQkJCQkgICAgICBzaXplb2YoKm1vZGVzZXQtPmNvbm5lY3RvcnMpLCBHRlBfS0VSTkVMKTsKKwkJ aWYgKCFtb2Rlc2V0LT5jb25uZWN0b3JzKQorCQkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlyZXR1 cm4gMDsKKworZXJyX2ZyZWU6CisJZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoY2xpZW50KTsKKwor CXJldHVybiAtRU5PTUVNOworfQorCit2b2lkIGRybV9jbGllbnRfbW9kZXNldF9yZWxlYXNlKHN0 cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1v ZGVzZXQ7CisJdW5zaWduZWQgaW50IGk7CisKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQo bW9kZXNldCwgY2xpZW50KSB7CisJCWRybV9tb2RlX2Rlc3Ryb3koY2xpZW50LT5kZXYsIG1vZGVz ZXQtPm1vZGUpOworCQltb2Rlc2V0LT5tb2RlID0gTlVMTDsKKwkJbW9kZXNldC0+ZmIgPSBOVUxM OworCisJCWZvciAoaSA9IDA7IGkgPCBtb2Rlc2V0LT5udW1fY29ubmVjdG9yczsgaSsrKSB7CisJ CQlkcm1fY29ubmVjdG9yX3B1dChtb2Rlc2V0LT5jb25uZWN0b3JzW2ldKTsKKwkJCW1vZGVzZXQt PmNvbm5lY3RvcnNbaV0gPSBOVUxMOworCQl9CisJCW1vZGVzZXQtPm51bV9jb25uZWN0b3JzID0g MDsKKwl9Cit9CisvKiBUT0RPOiBSZW1vdmUgZXhwb3J0IHdoZW4gbW9kZXNldCBjb2RlIGhhcyBi ZWVuIG1vdmVkIG92ZXIgKi8KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3JlbGVh c2UpOworCit2b2lkIGRybV9jbGllbnRfbW9kZXNldF9mcmVlKHN0cnVjdCBkcm1fY2xpZW50X2Rl diAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CisKKwltdXRleF9s b2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCisJZHJtX2NsaWVudF9tb2Rlc2V0X3JlbGVh c2UoY2xpZW50KTsKKworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGll bnQpCisJCWtmcmVlKG1vZGVzZXQtPmNvbm5lY3RvcnMpOworCisJbXV0ZXhfdW5sb2NrKCZjbGll bnQtPm1vZGVzZXRfbXV0ZXgpOworCisJbXV0ZXhfZGVzdHJveSgmY2xpZW50LT5tb2Rlc2V0X211 dGV4KTsKKwlrZnJlZShjbGllbnQtPm1vZGVzZXRzKTsKK30KKworc3RydWN0IGRybV9tb2RlX3Nl dCAqZHJtX2NsaWVudF9maW5kX21vZGVzZXQoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0 OworCisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVudCkKKwkJaWYg KG1vZGVzZXQtPmNydGMgPT0gY3J0YykKKwkJCXJldHVybiBtb2Rlc2V0OworCisJcmV0dXJuIE5V TEw7Cit9CisvKiBUT0RPOiBSZW1vdmUgZXhwb3J0IHdoZW4gbW9kZXNldCBjb2RlIGhhcyBiZWVu IG1vdmVkIG92ZXIgKi8KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9maW5kX21vZGVzZXQpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfaGVscGVyLmMKaW5kZXggNjFmMGIwMWUzOTRlLi4wNDFjYTc0NjFiODEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAtMzE3LDEzICszMTcsMTEgQEAgaW50IGRybV9mYl9o ZWxwZXJfZGVidWdfZW50ZXIoc3RydWN0IGZiX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IGRybV9m Yl9oZWxwZXIgKmhlbHBlciA9IGluZm8tPnBhcjsKIAljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVs cGVyX2Z1bmNzICpmdW5jczsKLQlpbnQgaTsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2RlX3Nl dDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoaGVscGVyLCAma2VybmVsX2ZiX2hlbHBlcl9saXN0 LCBrZXJuZWxfZmJfbGlzdCkgewotCQlmb3IgKGkgPSAwOyBpIDwgaGVscGVyLT5jcnRjX2NvdW50 OyBpKyspIHsKLQkJCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0KLQkJCQkmaGVscGVy LT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7Ci0KKwkJbXV0ZXhfbG9jaygmaGVscGVyLT5jbGllbnQu bW9kZXNldF9tdXRleCk7CisJCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2RlX3NldCwg JmhlbHBlci0+Y2xpZW50KSB7CiAJCQlpZiAoIW1vZGVfc2V0LT5jcnRjLT5lbmFibGVkKQogCQkJ CWNvbnRpbnVlOwogCkBAIC0zNDAsNiArMzM4LDcgQEAgaW50IGRybV9mYl9oZWxwZXJfZGVidWdf ZW50ZXIoc3RydWN0IGZiX2luZm8gKmluZm8pCiAJCQkJCQkgICAgbW9kZV9zZXQtPnksCiAJCQkJ CQkgICAgRU5URVJfQVRPTUlDX01PREVfU0VUKTsKIAkJfQorCQltdXRleF91bmxvY2soJmhlbHBl ci0+Y2xpZW50Lm1vZGVzZXRfbXV0ZXgpOwogCX0KIAogCXJldHVybiAwOwpAQCAtMzUzLDE0ICsz NTIsMTQgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2RlYnVnX2VudGVyKTsKIGludCBk cm1fZmJfaGVscGVyX2RlYnVnX2xlYXZlKHN0cnVjdCBmYl9pbmZvICppbmZvKQogewogCXN0cnVj dCBkcm1fZmJfaGVscGVyICpoZWxwZXIgPSBpbmZvLT5wYXI7CisJc3RydWN0IGRybV9jbGllbnRf ZGV2ICpjbGllbnQgPSAmaGVscGVyLT5jbGllbnQ7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwog CWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOworCXN0cnVjdCBkcm1f bW9kZV9zZXQgKm1vZGVfc2V0OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwotCWludCBp OwotCi0JZm9yIChpID0gMDsgaSA8IGhlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmhlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0 OwogCisJbXV0ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKKwlkcm1fY2xpZW50X2Zv cl9lYWNoX21vZGVzZXQobW9kZV9zZXQsIGNsaWVudCkgewogCQljcnRjID0gbW9kZV9zZXQtPmNy dGM7CiAJCWlmIChkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoY3J0Yy0+ZGV2KSkKIAkJCWNv bnRpbnVlOwpAQCAtMzgzLDYgKzM4Miw3IEBAIGludCBkcm1fZmJfaGVscGVyX2RlYnVnX2xlYXZl KHN0cnVjdCBmYl9pbmZvICppbmZvKQogCQlmdW5jcy0+bW9kZV9zZXRfYmFzZV9hdG9taWMobW9k ZV9zZXQtPmNydGMsIGZiLCBjcnRjLT54LAogCQkJCQkgICAgY3J0Yy0+eSwgTEVBVkVfQVRPTUlD X01PREVfU0VUKTsKIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwog CiAJcmV0dXJuIDA7CiB9CkBAIC00MzMsMTIgKzQzMywxNCBAQCBzdGF0aWMgYm9vbCBkcm1fZmJf aGVscGVyX3BhbmVsX3JvdGF0aW9uKHN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQsCiAKIHN0 YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyLCBib29sIGFjdGl2ZSkKIHsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dCA9ICZmYl9oZWxwZXItPmNsaWVudDsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVs cGVyLT5kZXY7CiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CiAJc3RydWN0 IGRybV9wbGFuZSAqcGxhbmU7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwotCWlu dCBpLCByZXQ7CiAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKKwlzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICptb2RlX3NldDsKKwlpbnQgcmV0OwogCiAJZHJtX21vZGVzZXRfYWNxdWly ZV9pbml0KCZjdHgsIDApOwogCkBAIC00NjgsOCArNDcwLDcgQEAgc3RhdGljIGludCByZXN0b3Jl X2ZiZGV2X21vZGVfYXRvbWljKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGJvb2wg YWN0aXYKIAkJCWdvdG8gb3V0X3N0YXRlOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxw ZXItPmNydGNfY291bnQ7IGkrKykgewotCQlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2RlX3NldCA9 ICZmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldDsKKwlkcm1fY2xpZW50X2Zvcl9lYWNo X21vZGVzZXQobW9kZV9zZXQsIGNsaWVudCkgewogCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5 ID0gbW9kZV9zZXQtPmNydGMtPnByaW1hcnk7CiAJCXVuc2lnbmVkIGludCByb3RhdGlvbjsKIApA QCAtNTE3LDkgKzUxOCwxMSBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3RpdgogCiBzdGF0aWMgaW50 IHJlc3RvcmVfZmJkZXZfbW9kZV9sZWdhY3koc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cikKIHsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCA9ICZmYl9oZWxwZXItPmNsaWVu dDsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7CisJc3RydWN0IGRy bV9tb2RlX3NldCAqbW9kZV9zZXQ7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0JaW50IGks IHJldCA9IDA7CisJaW50IHJldCA9IDA7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChmYl9oZWxw ZXItPmRldik7CiAJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBkZXYpIHsKQEAgLTUzMiw4ICs1 MzUsNyBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9sZWdhY3koc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlcikKIAkJCQkJCSAgICBEUk1fTU9ERV9ST1RBVEVfMCk7CiAJfQog Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVf c2V0OworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2RlX3NldCwgY2xpZW50KSB7CiAJ CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG1vZGVfc2V0LT5jcnRjOwogCiAJCWlmIChjcnRjLT5m dW5jcy0+Y3Vyc29yX3NldDIpIHsKQEAgLTU1OSwxMSArNTYxLDE2IEBAIHN0YXRpYyBpbnQgcmVz dG9yZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQog c3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGVfZm9yY2Uoc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlcikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7 CisJaW50IHJldDsKIAorCW11dGV4X2xvY2soJmZiX2hlbHBlci0+Y2xpZW50Lm1vZGVzZXRfbXV0 ZXgpOwogCWlmIChkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoZGV2KSkKLQkJcmV0dXJuIHJl c3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoZmJfaGVscGVyLCB0cnVlKTsKKwkJcmV0ID0gcmVzdG9y ZV9mYmRldl9tb2RlX2F0b21pYyhmYl9oZWxwZXIsIHRydWUpOwogCWVsc2UKLQkJcmV0dXJuIHJl c3RvcmVfZmJkZXZfbW9kZV9sZWdhY3koZmJfaGVscGVyKTsKKwkJcmV0ID0gcmVzdG9yZV9mYmRl dl9tb2RlX2xlZ2FjeShmYl9oZWxwZXIpOworCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5jbGll bnQubW9kZXNldF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHJlc3Rv cmVfZmJkZXZfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQpAQCAtNjcyLDE1 ICs2NzksMTQgQEAgc3RhdGljIHN0cnVjdCBzeXNycV9rZXlfb3Agc3lzcnFfZHJtX2ZiX2hlbHBl cl9yZXN0b3JlX29wID0geyB9OwogCiBzdGF0aWMgdm9pZCBkcG1zX2xlZ2FjeShzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgZHBtc19tb2RlKQogeworCXN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBmYl9oZWxwZXItPmRldjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y OwogCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7Ci0JaW50IGksIGo7CisJaW50IGo7CiAK IAlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwotCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXIt PmNydGNfY291bnQ7IGkrKykgewotCQltb2Rlc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ld Lm1vZGVfc2V0OwotCisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVu dCkgewogCQlpZiAoIW1vZGVzZXQtPmNydGMtPmVuYWJsZWQpCiAJCQljb250aW51ZTsKIApAQCAt Njk3LDYgKzcwMyw3IEBAIHN0YXRpYyB2b2lkIGRwbXNfbGVnYWN5KHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsIGludCBkcG1zX21vZGUpCiBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVy X2RwbXMoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCiB7CiAJc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9k ZXYgKmNsaWVudCA9ICZmYl9oZWxwZXItPmNsaWVudDsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZmJfaGVscGVyLT5kZXY7CiAKIAkvKgpAQCAtNzA2LDEwICs3MTMsMTIgQEAgc3RhdGljIHZv aWQgZHJtX2ZiX2hlbHBlcl9kcG1zKHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgZHBtc19tb2Rl KQogCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikpCiAJCWdvdG8gdW5sb2Nr OwogCisJbXV0ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKIAlpZiAoZHJtX2Rydl91 c2VzX2F0b21pY19tb2Rlc2V0KGRldikpCiAJCXJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoZmJf aGVscGVyLCBkcG1zX21vZGUgPT0gRFJNX01PREVfRFBNU19PTik7CiAJZWxzZQogCQlkcG1zX2xl Z2FjeShmYl9oZWxwZXIsIGRwbXNfbW9kZSk7CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVz ZXRfbXV0ZXgpOwogCiAJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7CiB1bmxvY2s6 CkBAIC03NTIsNDMgKzc2MSw2IEBAIGludCBkcm1fZmJfaGVscGVyX2JsYW5rKGludCBibGFuaywg c3RydWN0IGZiX2luZm8gKmluZm8pCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfYmxh bmspOwogCi1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX21vZGVzZXRfcmVsZWFzZShzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqaGVscGVyLAotCQkJCQkgIHN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVz ZXQpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbW9kZXNldC0+bnVtX2Nvbm5lY3Rv cnM7IGkrKykgewotCQlkcm1fY29ubmVjdG9yX3B1dChtb2Rlc2V0LT5jb25uZWN0b3JzW2ldKTsK LQkJbW9kZXNldC0+Y29ubmVjdG9yc1tpXSA9IE5VTEw7Ci0JfQotCW1vZGVzZXQtPm51bV9jb25u ZWN0b3JzID0gMDsKLQotCWRybV9tb2RlX2Rlc3Ryb3koaGVscGVyLT5kZXYsIG1vZGVzZXQtPm1v ZGUpOwotCW1vZGVzZXQtPm1vZGUgPSBOVUxMOwotCi0JLyogRklYTUUgc2hvdWxkIGhvbGQgYSBy ZWY/ICovCi0JbW9kZXNldC0+ZmIgPSBOVUxMOwotfQotCi1zdGF0aWMgdm9pZCBkcm1fZmJfaGVs cGVyX2NydGNfZnJlZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyKQotewotCWludCBpOwot Ci0JZm9yIChpID0gMDsgaSA8IGhlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBpKyspIHsKLQkJZHJt X2Nvbm5lY3Rvcl9wdXQoaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXS0+Y29ubmVjdG9yKTsKLQkJ a2ZyZWUoaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXSk7Ci0JfQotCWtmcmVlKGhlbHBlci0+Y29u bmVjdG9yX2luZm8pOwotCi0JZm9yIChpID0gMDsgaSA8IGhlbHBlci0+Y3J0Y19jb3VudDsgaSsr KSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQgPSAmaGVscGVyLT5jcnRjX2luZm9b aV0ubW9kZV9zZXQ7Ci0KLQkJZHJtX2ZiX2hlbHBlcl9tb2Rlc2V0X3JlbGVhc2UoaGVscGVyLCBt b2Rlc2V0KTsKLQkJa2ZyZWUobW9kZXNldC0+Y29ubmVjdG9ycyk7Ci0JfQotCWtmcmVlKGhlbHBl ci0+Y3J0Y19pbmZvKTsKLX0KLQogc3RhdGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9yZXN1bWVfd29y a2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq aGVscGVyID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkcm1fZmJfaGVscGVyLApAQCAtODY3 LDcgKzgzOSw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKTsKICAqIGRy bV9mYl9oZWxwZXJfaW5pdCAtIGluaXRpYWxpemUgYSAmc3RydWN0IGRybV9mYl9oZWxwZXIKICAq IEBkZXY6IGRybSBkZXZpY2UKICAqIEBmYl9oZWxwZXI6IGRyaXZlci1hbGxvY2F0ZWQgZmJkZXYg aGVscGVyIHN0cnVjdHVyZSB0byBpbml0aWFsaXplCi0gKiBAbWF4X2Nvbm5fY291bnQ6IG1heCBj b25uZWN0b3IgY291bnQKKyAqIEBtYXhfY29ubl9jb3VudDogbWF4IGNvbm5lY3RvciBjb3VudCAo bm90IHVzZWQpCiAgKgogICogVGhpcyBhbGxvY2F0ZXMgdGhlIHN0cnVjdHVyZXMgZm9yIHRoZSBm YmRldiBoZWxwZXIgd2l0aCB0aGUgZ2l2ZW4gbGltaXRzLgogICogTm90ZSB0aGF0IHRoaXMgd29u J3QgeWV0IHRvdWNoIHRoZSBoYXJkd2FyZSAodGhyb3VnaCB0aGUgZHJpdmVyIGludGVyZmFjZXMp CkBAIC04ODMsNTMgKzg1NSwzNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAog CQkgICAgICAgaW50IG1heF9jb25uX2NvdW50KQogewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK LQlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsKLQlp bnQgaTsKKwlpbnQgcmV0OwogCiAJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uKSB7CiAJCWRldi0+ ZmJfaGVscGVyID0gZmJfaGVscGVyOwogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoIW1heF9jb25u X2NvdW50KQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWZiX2hlbHBlci0+Y3J0Y19pbmZvID0ga2Nh bGxvYyhjb25maWctPm51bV9jcnRjLCBzaXplb2Yoc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0Yyks IEdGUF9LRVJORUwpOwotCWlmICghZmJfaGVscGVyLT5jcnRjX2luZm8pCi0JCXJldHVybiAtRU5P TUVNOwotCi0JZmJfaGVscGVyLT5jcnRjX2NvdW50ID0gY29uZmlnLT5udW1fY3J0YzsKLQlmYl9o ZWxwZXItPmNvbm5lY3Rvcl9pbmZvID0ga2NhbGxvYyhkZXYtPm1vZGVfY29uZmlnLm51bV9jb25u ZWN0b3IsIHNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKiksIEdGUF9LRVJO RUwpOwotCWlmICghZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mbykgewotCQlrZnJlZShmYl9oZWxw ZXItPmNydGNfaW5mbyk7Ci0JCXJldHVybiAtRU5PTUVNOworCS8qCisJICogSWYgdGhpcyBpcyBu b3QgdGhlIGdlbmVyaWMgZmJkZXYgY2xpZW50LCBpbml0aWFsaXplIGEgZHJtX2NsaWVudAorCSAq IHdpdGhvdXQgY2FsbGJhY2tzIHNvIHdlIGNhbiB1c2UgdGhlIG1vZGVzZXRzLgorCSAqLworCWlm ICghZmJfaGVscGVyLT5jbGllbnQuZnVuY3MpIHsKKwkJcmV0ID0gZHJtX2NsaWVudF9pbml0KGRl diwgJmZiX2hlbHBlci0+Y2xpZW50LCAiZHJtX2ZiX2hlbHBlciIsIE5VTEwpOworCQlpZiAocmV0 KQorCQkJcmV0dXJuIHJldDsKIAl9CisKKwlmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvID0ga2Nh bGxvYyhkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3IsIHNpemVvZihzdHJ1Y3QgZHJtX2Zi X2hlbHBlcl9jb25uZWN0b3IgKiksIEdGUF9LRVJORUwpOworCWlmICghZmJfaGVscGVyLT5jb25u ZWN0b3JfaW5mbykKKwkJZ290byBvdXRfZnJlZTsKKwogCWZiX2hlbHBlci0+Y29ubmVjdG9yX2lu Zm9fYWxsb2NfY291bnQgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3I7CiAJZmJfaGVs cGVyLT5jb25uZWN0b3JfY291bnQgPSAwOwogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+ Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCWZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0LmNv bm5lY3RvcnMgPQotCQkJa2NhbGxvYyhtYXhfY29ubl9jb3VudCwKLQkJCQlzaXplb2Yoc3RydWN0 IGRybV9jb25uZWN0b3IgKiksCi0JCQkJR0ZQX0tFUk5FTCk7Ci0KLQkJaWYgKCFmYl9oZWxwZXIt PmNydGNfaW5mb1tpXS5tb2RlX3NldC5jb25uZWN0b3JzKQotCQkJZ290byBvdXRfZnJlZTsKLQkJ ZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQubnVtX2Nvbm5lY3RvcnMgPSAwOwotCX0K LQotCWkgPSAwOwotCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikgewotCQlmYl9oZWxwZXIt PmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjID0gY3J0YzsKLQkJaSsrOwotCX0KLQogCWRldi0+ ZmJfaGVscGVyID0gZmJfaGVscGVyOwogCiAJcmV0dXJuIDA7CiBvdXRfZnJlZToKLQlkcm1fZmJf aGVscGVyX2NydGNfZnJlZShmYl9oZWxwZXIpOworCWRybV9jbGllbnRfcmVsZWFzZSgmZmJfaGVs cGVyLT5jbGllbnQpOworCiAJcmV0dXJuIC1FTk9NRU07CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9m Yl9oZWxwZXJfaW5pdCk7CkBAIC0xMDA1LDYgKzk2MCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2Zi X2hlbHBlcl91bnJlZ2lzdGVyX2ZiaSk7CiB2b2lkIGRybV9mYl9oZWxwZXJfZmluaShzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogewogCXN0cnVjdCBmYl9pbmZvICppbmZvOworCWlu dCBpOwogCiAJaWYgKCFmYl9oZWxwZXIpCiAJCXJldHVybjsKQEAgLTEwMzQsOCArOTkwLDE1IEBA IHZvaWQgZHJtX2ZiX2hlbHBlcl9maW5pKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIp CiAJbXV0ZXhfdW5sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2spOwogCiAJbXV0ZXhfZGVzdHJv eSgmZmJfaGVscGVyLT5sb2NrKTsKLQlkcm1fZmJfaGVscGVyX2NydGNfZnJlZShmYl9oZWxwZXIp OwogCisJaWYgKCFmYl9oZWxwZXItPmNsaWVudC5mdW5jcykKKwkJZHJtX2NsaWVudF9yZWxlYXNl KCZmYl9oZWxwZXItPmNsaWVudCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25u ZWN0b3JfY291bnQ7IGkrKykgeworCQlkcm1fY29ubmVjdG9yX3B1dChmYl9oZWxwZXItPmNvbm5l Y3Rvcl9pbmZvW2ldLT5jb25uZWN0b3IpOworCQlrZnJlZShmYl9oZWxwZXItPmNvbm5lY3Rvcl9p bmZvW2ldKTsKKwl9CisJa2ZyZWUoZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mbyk7CiB9CiBFWFBP UlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfZmluaSk7CiAKQEAgLTEzODAsMTMgKzEzNDMsMTQgQEAg c3RhdGljIGludCBzZXRjbWFwX3BzZXVkb19wYWxldHRlKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHN0YXRpYyBpbnQgc2V0Y21hcF9sZWdhY3koc3RydWN0IGZi X2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogewogCXN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNl dDsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJdTE2ICpyLCAqZywgKmI7Ci0JaW50IGksIHJl dCA9IDA7CisJaW50IHJldCA9IDA7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChmYl9oZWxwZXIt PmRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0J CWNydGMgPSBmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9jbGll bnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCAmZmJfaGVscGVyLT5jbGllbnQpIHsKKwkJY3J0 YyA9IG1vZGVzZXQtPmNydGM7CiAJCWlmICghY3J0Yy0+ZnVuY3MtPmdhbW1hX3NldCB8fCAhY3J0 Yy0+Z2FtbWFfc2l6ZSkKIAkJCXJldHVybiAtRUlOVkFMOwogCkBAIC0xNDYyLDEwICsxNDI2LDEx IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVj dCBmYl9pbmZvICppbmZvKQogCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CiAJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwogCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKIAl1MTYgKnIsICpnLCAqYjsKLQlpbnQgaSwgcmV0ID0gMDsKIAlib29sIHJl cGxhY2VkOworCWludCByZXQgPSAwOwogCiAJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgs IDApOwogCkBAIC0xNDc3LDggKzE0NDIsOCBAQCBzdGF0aWMgaW50IHNldGNtYXBfYXRvbWljKHN0 cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAogCXN0YXRlLT5hY3F1 aXJlX2N0eCA9ICZjdHg7CiByZXRyeToKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRj X2NvdW50OyBpKyspIHsKLQkJY3J0YyA9IGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0 LmNydGM7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsICZmYl9oZWxwZXIt PmNsaWVudCkgeworCQljcnRjID0gbW9kZXNldC0+Y3J0YzsKIAogCQlpZiAoIWdhbW1hX2x1dCkK IAkJCWdhbW1hX2x1dCA9IHNldGNtYXBfbmV3X2dhbW1hX2x1dChjcnRjLCBjbWFwKTsKQEAgLTE1 MDYsOCArMTQ3MSw4IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAg KmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3N0YXRl OwogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCWNy dGMgPSBmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9jbGllbnRf Zm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCAmZmJfaGVscGVyLT5jbGllbnQpIHsKKwkJY3J0YyA9 IG1vZGVzZXQtPmNydGM7CiAKIAkJciA9IGNydGMtPmdhbW1hX3N0b3JlOwogCQlnID0gciArIGNy dGMtPmdhbW1hX3NpemU7CkBAIC0xNTU3LDEyICsxNTIyLDE0IEBAIGludCBkcm1fZmJfaGVscGVy X3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogCQln b3RvIHVubG9jazsKIAl9CiAKKwltdXRleF9sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0 X211dGV4KTsKIAlpZiAoaW5mby0+Zml4LnZpc3VhbCA9PSBGQl9WSVNVQUxfVFJVRUNPTE9SKQog CQlyZXQgPSBzZXRjbWFwX3BzZXVkb19wYWxldHRlKGNtYXAsIGluZm8pOwogCWVsc2UgaWYgKGRy bV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChmYl9oZWxwZXItPmRldikpCiAJCXJldCA9IHNldGNt YXBfYXRvbWljKGNtYXAsIGluZm8pOwogCWVsc2UKIAkJcmV0ID0gc2V0Y21hcF9sZWdhY3koY21h cCwgaW5mbyk7CisJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4 KTsKIAogCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwogdW5sb2NrOgpAQCAtMTU4 Niw3ICsxNTUzLDYgQEAgaW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmlu Zm8sIHVuc2lnbmVkIGludCBjbWQsCiB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciA9IGluZm8tPnBhcjsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7 Ci0Jc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQ7CiAJc3RydWN0IGRybV9jcnRjICpjcnRj OwogCWludCByZXQgPSAwOwogCkBAIC0xNjE0LDggKzE1ODAsNyBAQCBpbnQgZHJtX2ZiX2hlbHBl cl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCwKIAkJICogbWFr ZS4gSWYgd2UncmUgbm90IHNtYXJ0IGVub3VnaCBoZXJlLCBvbmUgc2hvdWxkCiAJCSAqIGp1c3Qg Y29uc2lkZXIgc3dpdGNoIHRoZSB1c2Vyc3BhY2UgdG8gS01TLgogCQkgKi8KLQkJbW9kZV9zZXQg PSAmZmJfaGVscGVyLT5jcnRjX2luZm9bMF0ubW9kZV9zZXQ7Ci0JCWNydGMgPSBtb2RlX3NldC0+ Y3J0YzsKKwkJY3J0YyA9IGZiX2hlbHBlci0+Y2xpZW50Lm1vZGVzZXRzWzBdLmNydGM7CiAKIAkJ LyoKIAkJICogT25seSB3YWl0IGZvciBhIHZibGFuayBldmVudCBpZiB0aGUgQ1JUQyBpcwpAQCAt MTgxMiwxNiArMTc3NywxNCBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc2V0X3Bhcik7 CiAKIHN0YXRpYyB2b2lkIHBhbl9zZXQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwg aW50IHgsIGludCB5KQogewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+ Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwotCi0J CW1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OworCXN0cnVjdCBk cm1fbW9kZV9zZXQgKm1vZGVfc2V0OwogCisJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5jbGllbnQu bW9kZXNldF9tdXRleCk7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCAm ZmJfaGVscGVyLT5jbGllbnQpIHsKIAkJbW9kZV9zZXQtPnggPSB4OwogCQltb2RlX3NldC0+eSA9 IHk7CiAJfQorCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNldF9tdXRleCk7 CiB9CiAKIHN0YXRpYyBpbnQgcGFuX2Rpc3BsYXlfYXRvbWljKHN0cnVjdCBmYl92YXJfc2NyZWVu aW5mbyAqdmFyLApAQCAtMTgzMiw3ICsxNzk1LDcgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9h dG9taWMoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAKIAlwYW5fc2V0KGZiX2hlbHBl ciwgdmFyLT54b2Zmc2V0LCB2YXItPnlvZmZzZXQpOwogCi0JcmV0ID0gcmVzdG9yZV9mYmRldl9t b2RlX2F0b21pYyhmYl9oZWxwZXIsIHRydWUpOworCXJldCA9IHJlc3RvcmVfZmJkZXZfbW9kZV9m b3JjZShmYl9oZWxwZXIpOwogCWlmICghcmV0KSB7CiAJCWluZm8tPnZhci54b2Zmc2V0ID0gdmFy LT54b2Zmc2V0OwogCQlpbmZvLT52YXIueW9mZnNldCA9IHZhci0+eW9mZnNldDsKQEAgLTE4NDYs MTQgKzE4MDksMTMgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9sZWdhY3koc3RydWN0IGZiX3Zh cl9zY3JlZW5pbmZvICp2YXIsCiAJCQkgICAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fbW9k ZV9zZXQgKm1vZGVzZXQ7CiAJaW50IHJldCA9IDA7Ci0JaW50IGk7CiAKIAlkcm1fbW9kZXNldF9s b2NrX2FsbChmYl9oZWxwZXItPmRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0 Y19jb3VudDsgaSsrKSB7Ci0JCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9k ZV9zZXQ7Ci0KKwltdXRleF9sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCWRybV9jbGll bnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKIAkJbW9kZXNldC0+eCA9IHZh ci0+eG9mZnNldDsKIAkJbW9kZXNldC0+eSA9IHZhci0+eW9mZnNldDsKIApAQCAtMTg2NSw2ICsx ODI3LDcgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9sZWdhY3koc3RydWN0IGZiX3Zhcl9zY3Jl ZW5pbmZvICp2YXIsCiAJCQl9CiAJCX0KIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVz ZXRfbXV0ZXgpOwogCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZmJfaGVscGVyLT5kZXYpOwogCiAJ cmV0dXJuIHJldDsKQEAgLTE5MTEsMTAgKzE4NzQsMTIgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJf aGVscGVyX3Bhbl9kaXNwbGF5KTsKIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJf cHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCQkJIGludCBwcmVmZXJy ZWRfYnBwKQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+ Y2xpZW50OwogCWludCByZXQgPSAwOwogCWludCBjcnRjX2NvdW50ID0gMDsKIAlpbnQgaTsKIAlz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgc2l6ZXM7CisJc3RydWN0IGRybV9tb2Rl X3NldCAqbW9kZV9zZXQ7CiAJaW50IGJlc3RfZGVwdGggPSAwOwogCiAJbWVtc2V0KCZzaXplcywg MCwgc2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSkpOwpAQCAtMTk2NSwx MyArMTkzMCwxMyBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJICogc3VwcG9ydHMgUkdCQTU1NTEgKDE2 IGJwcCwgZGVwdGggMTUpIGJ1dCBub3QgUkdCNTY1ICgxNiBicHAsIGRlcHRoCiAJICogMTYpIHdl IG5lZWQgdG8gc2NhbGUgZG93biB0aGUgZGVwdGggb2YgdGhlIHNpemVzIHdlIHJlcXVlc3QuCiAJ ICovCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCXN0 cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1v ZGVfc2V0OworCW11dGV4X2xvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisJZHJtX2NsaWVu dF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKIAkJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gbW9kZV9zZXQtPmNydGM7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gY3J0 Yy0+cHJpbWFyeTsKIAkJaW50IGo7CiAKLQkJRFJNX0RFQlVHKCJ0ZXN0IENSVEMgJWQgcHJpbWFy eSBwbGFuZVxuIiwgaSk7CisJCURSTV9ERUJVRygidGVzdCBDUlRDICV1IHByaW1hcnkgcGxhbmVc biIsIGRybV9jcnRjX2luZGV4KGNydGMpKTsKIAogCQlmb3IgKGogPSAwOyBqIDwgcGxhbmUtPmZv cm1hdF9jb3VudDsgaisrKSB7CiAJCQljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmbXQ7 CkBAIC0yMDExLDkgKzE5NzYsOCBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2Zi X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAKIAkvKiBmaXJzdCB1cCBn ZXQgYSBjb3VudCBvZiBjcnRjcyBub3cgaW4gdXNlIGFuZCBuZXcgbWluL21heGVzIHdpZHRoL2hl aWdodHMgKi8KIAljcnRjX2NvdW50ID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5j cnRjX2NvdW50OyBpKyspIHsKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZV9zZXQs IGNsaWVudCkgewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZGVzaXJlZF9tb2RlOwotCQlz dHJ1Y3QgZHJtX21vZGVfc2V0ICptb2RlX3NldDsKIAkJaW50IHgsIHksIGo7CiAJCS8qIGluIGNh c2Ugb2YgdGlsZSBncm91cCwgYXJlIHdlIHRoZSBsYXN0IHRpbGUgdmVydCBvciBob3Jpej8KIAkJ ICogSWYgbm8gdGlsZSBncm91cCB5b3UgYXJlIGFsd2F5cyB0aGUgbGFzdCBvbmUgYm90aCB2ZXJ0 aWNhbGx5CkBAIC0yMDIxLDcgKzE5ODUsNiBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2lu Z2xlX2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCSAqLwogCQli b29sIGxhc3R2ID0gdHJ1ZSwgbGFzdGggPSB0cnVlOwogCi0JCW1vZGVfc2V0ID0gJmZiX2hlbHBl ci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OwogCQlkZXNpcmVkX21vZGUgPSBtb2RlX3NldC0+bW9k ZTsKIAogCQlpZiAoIWRlc2lyZWRfbW9kZSkKQEAgLTIwNTEsNiArMjAxNCw3IEBAIHN0YXRpYyBp bnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKIAkJaWYgKGxhc3R2KQogCQkJc2l6ZXMuZmJfaGVpZ2h0ID0gbWluX3QodTMyLCBk ZXNpcmVkX21vZGUtPnZkaXNwbGF5ICsgeSwgc2l6ZXMuZmJfaGVpZ2h0KTsKIAl9CisJbXV0ZXhf dW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwogCiAJaWYgKGNydGNfY291bnQgPT0gMCB8 fCBzaXplcy5mYl93aWR0aCA9PSAtMSB8fCBzaXplcy5mYl9oZWlnaHQgPT0gLTEpIHsKIAkJRFJN X0lORk8oIkNhbm5vdCBmaW5kIGFueSBjcnRjIG9yIHNpemVzXG4iKTsKQEAgLTIyODIsNyArMjI0 Niw3IEBAIHN0YXRpYyBib29sIGRybV90YXJnZXRfY2xvbmVkKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIsCiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtdF9tb2RlLCAqbW9kZTsK IAogCS8qIG9ubHkgY29udGVtcGxhdGUgY2xvbmluZyBpbiB0aGUgc2luZ2xlIGNydGMgY2FzZSAq LwotCWlmIChmYl9oZWxwZXItPmNydGNfY291bnQgPiAxKQorCWlmIChmYl9oZWxwZXItPmRldi0+ bW9kZV9jb25maWcubnVtX2NydGMgPiAxKQogCQlyZXR1cm4gZmFsc2U7CiAKIAljb3VudCA9IDA7 CkBAIC0yNDcxLDE1ICsyNDM1LDE3IEBAIHN0YXRpYyBib29sIGNvbm5lY3Rvcl9oYXNfcG9zc2li bGVfY3J0YyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogfQogCiBzdGF0aWMgaW50 IGRybV9waWNrX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkgIHN0 cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKipiZXN0X2NydGNzLAorCQkJICBzdHJ1Y3QgZHJtX2Ny dGMgKipiZXN0X2NydGNzLAogCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzLAog CQkJICBpbnQgbiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotCWludCBjLCBvOworCXN0cnVj dCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJaW50IG15X3Njb3JlLCBiZXN0X3Njb3JlLCBzY29y ZTsKLQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsICpjcnRjOworCXN0cnVjdCBk cm1fY3J0YyAqKmNydGNzLCAqY3J0YzsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0Owog CXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVyX2Nvbm47CisJaW50IG87 CiAKIAlpZiAobiA9PSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCkKIAkJcmV0dXJuIDA7CkBA IC0yNDkyLDggKzI0NTgsNyBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNzKHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJaWYgKG1vZGVzW25dID09IE5VTEwpCiAJCXJldHVybiBi ZXN0X3Njb3JlOwogCi0JY3J0Y3MgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50 LAotCQkJc2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKiksIEdGUF9LRVJORUwpOwor CWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwgc2l6ZW9mKCpjcnRj cyksIEdGUF9LRVJORUwpOwogCWlmICghY3J0Y3MpCiAJCXJldHVybiBiZXN0X3Njb3JlOwogCkBA IC0yNTA5LDExICsyNDc0LDEwIEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tfY3J0Y3Moc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkgKiBzZWxlY3QgYSBjcnRjIGZvciB0aGlzIGNvbm5l Y3RvciBhbmQgdGhlbiBhdHRlbXB0IHRvIGNvbmZpZ3VyZQogCSAqIHJlbWFpbmluZyBjb25uZWN0 b3JzCiAJICovCi0JZm9yIChjID0gMDsgYyA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgYysrKSB7 Ci0JCWNydGMgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9bY107CisJZHJtX2NsaWVudF9mb3JfZWFj aF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVudCkgeworCQljcnRjID0gbW9kZXNldC0+Y3J0YzsKIAot CQlpZiAoIWNvbm5lY3Rvcl9oYXNfcG9zc2libGVfY3J0Yyhjb25uZWN0b3IsCi0JCQkJCQkgY3J0 Yy0+bW9kZV9zZXQuY3J0YykpCisJCWlmICghY29ubmVjdG9yX2hhc19wb3NzaWJsZV9jcnRjKGNv bm5lY3RvciwgY3J0YykpCiAJCQljb250aW51ZTsKIAogCQlmb3IgKG8gPSAwOyBvIDwgbjsgbysr KQpAQCAtMjUyMiw3ICsyNDg2LDcgQEAgc3RhdGljIGludCBkcm1fcGlja19jcnRjcyhzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCiAJCWlmIChvIDwgbikgewogCQkJLyogaWdub3Jl IGNsb25pbmcgdW5sZXNzIG9ubHkgYSBzaW5nbGUgY3J0YyAqLwotCQkJaWYgKGZiX2hlbHBlci0+ Y3J0Y19jb3VudCA+IDEpCisJCQlpZiAoZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm51bV9j cnRjID4gMSkKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKCFkcm1fbW9kZV9lcXVhbChtb2Rlc1tv XSwgbW9kZXNbbl0pKQpAQCAtMjUzMCwxNCArMjQ5NCwxMyBAQCBzdGF0aWMgaW50IGRybV9waWNr X2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCX0KIAogCQljcnRjc1tu XSA9IGNydGM7Ci0JCW1lbWNweShjcnRjcywgYmVzdF9jcnRjcywgbiAqIHNpemVvZihzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlcl9jcnRjICopKTsKKwkJbWVtY3B5KGNydGNzLCBiZXN0X2NydGNzLCBuICog c2l6ZW9mKCpjcnRjcykpOwogCQlzY29yZSA9IG15X3Njb3JlICsgZHJtX3BpY2tfY3J0Y3MoZmJf aGVscGVyLCBjcnRjcywgbW9kZXMsIG4gKyAxLAogCQkJCQkJICB3aWR0aCwgaGVpZ2h0KTsKIAkJ aWYgKHNjb3JlID4gYmVzdF9zY29yZSkgewogCQkJYmVzdF9zY29yZSA9IHNjb3JlOwogCQkJbWVt Y3B5KGJlc3RfY3J0Y3MsIGNydGNzLAotCQkJICAgICAgIGZiX2hlbHBlci0+Y29ubmVjdG9yX2Nv dW50ICoKLQkJCSAgICAgICBzaXplb2Yoc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKSk7CisJ CQkgICAgICAgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQgKiBzaXplb2YoKmNydGNzKSk7CiAJ CX0KIAl9CiAKQEAgLTI1NDUsMjEgKzI1MDgsOSBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJcmV0dXJuIGJlc3Rfc2NvcmU7CiB9 CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoKLWRybV9mYl9oZWxwZXJfY3J0 YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Ci17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBp KyspCi0JCWlmIChmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjID09IGNydGMp Ci0JCQlyZXR1cm4gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldOwotCi0JcmV0dXJuIE5VTEw7Ci19 Ci0KIC8qIFRyeSB0byByZWFkIHRoZSBCSU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNl IGl0IGZvciB0aGUgaW5pdGlhbCBjb25maWcgKi8KIHN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJf ZmlybXdhcmVfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkJCSAg c3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKmNydGNzLAorCQkJCQkgIHN0cnVjdCBkcm1fY3J0 YyAqKmNydGNzLAogCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCiAJCQkJ CSAgc3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCiAJCQkJCSAgYm9vbCAqZW5hYmxlZCwg aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMjU5MSw3ICsyNTQyLDcgQEAgc3RhdGljIGJvb2wg ZHJtX2ZiX2hlbHBlcl9maXJtd2FyZV9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwKIAkJc3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmYl9jb25uOwogCQlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXI7Ci0JCXN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKm5ld19jcnRjOworCQlzdHJ1Y3QgZHJt X2NydGMgKm5ld19jcnRjOwogCiAJCWZiX2Nvbm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZv W2ldOwogCQljb25uZWN0b3IgPSBmYl9jb25uLT5jb25uZWN0b3I7CkBAIC0yNjM0LDcgKzI1ODUs NyBAQCBzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZyhzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCiAJCW51bV9jb25uZWN0b3JzX2VuYWJsZWQrKzsKIAot CQluZXdfY3J0YyA9IGRybV9mYl9oZWxwZXJfY3J0YyhmYl9oZWxwZXIsIGNvbm5lY3Rvci0+c3Rh dGUtPmNydGMpOworCQluZXdfY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7CiAKIAkJLyoK IAkJICogTWFrZSBzdXJlIHdlJ3JlIG5vdCB0cnlpbmcgdG8gZHJpdmUgbXVsdGlwbGUgY29ubmVj dG9ycwpAQCAtMjczNiwxMCArMjY4NywxMSBAQCBzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2Zp cm13YXJlX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogc3RhdGljIHZv aWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkg ICAgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xp ZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9o ZWxwZXItPmRldjsKLQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3M7CiAJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKiptb2RlczsKIAlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0 czsKKwlzdHJ1Y3QgZHJtX2NydGMgKipjcnRjczsKIAlib29sICplbmFibGVkOwogCWludCBpOwog CkBAIC0yNzQ3LDggKzI2OTksNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkvKiBwcmV2ZW50IGNvbmN1cnJlbnQgbW9kaWZp Y2F0aW9uIG9mIGNvbm5lY3Rvcl9jb3VudCBieSBob3RwbHVnICovCiAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmZmJfaGVscGVyLT5sb2NrKTsKIAotCWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNv bm5lY3Rvcl9jb3VudCwKLQkJCXNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICopLCBH RlBfS0VSTkVMKTsKKwljcnRjcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQs IHNpemVvZigqY3J0Y3MpLCBHRlBfS0VSTkVMKTsKIAltb2RlcyA9IGtjYWxsb2MoZmJfaGVscGVy LT5jb25uZWN0b3JfY291bnQsCiAJCQlzaXplb2Yoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiks IEdGUF9LRVJORUwpOwogCW9mZnNldHMgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2Nv dW50LApAQCAtMjc2MCw2ICsyNzExLDggQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCWdvdG8gb3V0OwogCX0KIAorCW11dGV4 X2xvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisKIAltdXRleF9sb2NrKCZmYl9oZWxwZXIt PmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5l Y3Rvcl9tb2RlcyhmYl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCiAJCURSTV9ERUJVR19L TVMoIk5vIGNvbm5lY3RvcnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGggbW9kZXNcbiIpOwpAQCAt Mjc4NCwyNCArMjczNywyNCBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAl9CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmRl di0+bW9kZV9jb25maWcubXV0ZXgpOwogCi0JLyogbmVlZCB0byBzZXQgdGhlIG1vZGVzZXRzIHVw IGhlcmUgZm9yIHVzZSBsYXRlciAqLwotCS8qIGZpbGwgb3V0IHRoZSBjb25uZWN0b3I8LT5jcnRj IG1hcHBpbmdzIGludG8gdGhlIG1vZGVzZXRzICovCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBl ci0+Y3J0Y19jb3VudDsgaSsrKQotCQlkcm1fZmJfaGVscGVyX21vZGVzZXRfcmVsZWFzZShmYl9o ZWxwZXIsCi0JCQkJCSAgICAgICZmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldCk7CisJ ZHJtX2NsaWVudF9tb2Rlc2V0X3JlbGVhc2UoY2xpZW50KTsKIAogCWRybV9mYl9oZWxwZXJfZm9y X2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSA9IG1vZGVzW2ldOwotCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpmYl9jcnRj ID0gY3J0Y3NbaV07CisJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNzW2ldOwogCQlzdHJ1 Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0ID0gJm9mZnNldHNbaV07CiAKLQkJaWYgKG1vZGUgJiYg ZmJfY3J0YykgewotCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCA9ICZmYl9jcnRjLT5t b2RlX3NldDsKKwkJaWYgKG1vZGUgJiYgY3J0YykgeworCQkJc3RydWN0IGRybV9tb2RlX3NldCAq bW9kZXNldCA9IGRybV9jbGllbnRfZmluZF9tb2Rlc2V0KGNsaWVudCwgY3J0Yyk7CiAJCQlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KIAkJCQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9p bmZvW2ldLT5jb25uZWN0b3I7CiAKIAkJCURSTV9ERUJVR19LTVMoImRlc2lyZWQgbW9kZSAlcyBz ZXQgb24gY3J0YyAlZCAoJWQsJWQpXG4iLAotCQkJCSAgICAgIG1vZGUtPm5hbWUsIGZiX2NydGMt Pm1vZGVfc2V0LmNydGMtPmJhc2UuaWQsIG9mZnNldC0+eCwgb2Zmc2V0LT55KTsKKwkJCQkgICAg ICBtb2RlLT5uYW1lLCBjcnRjLT5iYXNlLmlkLCBvZmZzZXQtPngsIG9mZnNldC0+eSk7CisKKwkJ CWlmIChXQVJOX09OX09OQ0UobW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMgPT0gRFJNX0NMSUVOVF9N QVhfQ0xPTkVEX0NPTk5FQ1RPUlMgfHwKKwkJCQkJIChkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRj ID4gMSAmJiBtb2Rlc2V0LT5udW1fY29ubmVjdG9ycyA9PSAxKSkpCisJCQkJYnJlYWs7CiAKIAkJ CW1vZGVzZXQtPm1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2LCBtb2RlKTsKIAkJCWRybV9j b25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7CkBAIC0yODEwLDYgKzI3NjMsOCBAQCBzdGF0aWMgdm9p ZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCW1v ZGVzZXQtPnkgPSBvZmZzZXQtPnk7CiAJCX0KIAl9CisKKwltdXRleF91bmxvY2soJmNsaWVudC0+ bW9kZXNldF9tdXRleCk7CiBvdXQ6CiAJa2ZyZWUoY3J0Y3MpOwogCWtmcmVlKG1vZGVzKTsKQEAg LTI4MjYsMTMgKzI3ODEsMTQgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAgKi8KIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRj c19mYihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogeworCXN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBmYl9pbmZvICpp bmZvID0gZmJfaGVscGVyLT5mYmRldjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24sIHN3X3JvdGF0 aW9ucyA9IDA7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlpbnQgaTsKIAotCWZv ciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykgewotCQlzdHJ1Y3QgZHJt X21vZGVfc2V0ICptb2Rlc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0Owot CisJbXV0ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKKwlkcm1fY2xpZW50X2Zvcl9l YWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50KSB7CiAJCWlmICghbW9kZXNldC0+bnVtX2Nvbm5l Y3RvcnMpCiAJCQljb250aW51ZTsKIApAQCAtMjg0NCw2ICsyODAwLDcgQEAgc3RhdGljIHZvaWQg ZHJtX3NldHVwX2NydGNzX2ZiKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJCWVs c2UKIAkJCXN3X3JvdGF0aW9ucyB8PSByb3RhdGlvbjsKIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGll bnQtPm1vZGVzZXRfbXV0ZXgpOwogCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVf Y29uZmlnLm11dGV4KTsKIAlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxw ZXIsIGkpIHsKQEAgLTMwNjAsOCArMzAxNyw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBl cl9ob3RwbHVnX2V2ZW50KTsKICAqIEBmdW5jczogZmJkZXYgaGVscGVyIGZ1bmN0aW9ucwogICog QHByZWZlcnJlZF9icHA6IFByZWZlcnJlZCBiaXRzIHBlciBwaXhlbCBmb3IgdGhlIGRldmljZS4K ICAqICAgICAgICAgICAgICAgICBAZGV2LT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggaXMg dXNlZCBpZiB0aGlzIGlzIHplcm8uCi0gKiBAbWF4X2Nvbm5fY291bnQ6IE1heGltdW0gbnVtYmVy IG9mIGNvbm5lY3RvcnMuCi0gKiAgICAgICAgICAgICAgICAgIEBkZXYtPm1vZGVfY29uZmlnLm51 bV9jb25uZWN0b3IgaXMgdXNlZCBpZiB0aGlzIGlzIHplcm8uCisgKiBAbWF4X2Nvbm5fY291bnQ6 IE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3RvcnMgKG5vdCB1c2VkKQogICoKICAqIFRoaXMgZnVu Y3Rpb24gc2V0cyB1cCBmYmRldiBlbXVsYXRpb24gYW5kIHJlZ2lzdGVycyBmYmRldiBmb3IgYWNj ZXNzIGJ5CiAgKiB1c2Vyc3BhY2UuIElmIGFsbCBjb25uZWN0b3JzIGFyZSBkaXNjb25uZWN0ZWQs IHNldHVwIGlzIGRlZmVycmVkIHRvIHRoZSBuZXh0CkBAIC0zMDg5LDE2ICszMDQ1LDkgQEAgaW50 IGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAo IXByZWZlcnJlZF9icHApCiAJCXByZWZlcnJlZF9icHAgPSAzMjsKIAotCWlmICghbWF4X2Nvbm5f Y291bnQpCi0JCW1heF9jb25uX2NvdW50ID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9y OwotCWlmICghbWF4X2Nvbm5fY291bnQpIHsKLQkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwgImZi ZGV2OiBObyBjb25uZWN0b3JzXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCiAJZHJtX2Zi X2hlbHBlcl9wcmVwYXJlKGRldiwgZmJfaGVscGVyLCBmdW5jcyk7CiAKLQlyZXQgPSBkcm1fZmJf aGVscGVyX2luaXQoZGV2LCBmYl9oZWxwZXIsIG1heF9jb25uX2NvdW50KTsKKwlyZXQgPSBkcm1f ZmJfaGVscGVyX2luaXQoZGV2LCBmYl9oZWxwZXIsIDApOwogCWlmIChyZXQgPCAwKSB7CiAJCURS TV9ERVZfRVJST1IoZGV2LT5kZXYsICJmYmRldjogRmFpbGVkIHRvIGluaXRpYWxpemUgKHJldD0l ZClcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7CkBAIC0zNDExLDcgKzMzNjAsNyBAQCBzdGF0aWMg aW50IGRybV9mYmRldl9jbGllbnRfaG90cGx1ZyhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dCkKIAogCWRybV9mYl9oZWxwZXJfcHJlcGFyZShkZXYsIGZiX2hlbHBlciwgJmRybV9mYl9oZWxw ZXJfZ2VuZXJpY19mdW5jcyk7CiAKLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoZGV2LCBmYl9o ZWxwZXIsIGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvcik7CisJcmV0ID0gZHJtX2ZiX2hl bHBlcl9pbml0KGRldiwgZmJfaGVscGVyLCAwKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKIApk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oIGIvaW5jbHVkZS9kcm0vZHJtX2Ns aWVudC5oCmluZGV4IDI2OGIyY2YwMDUyYS4uODdiZTlhZWIxZmUwIDEwMDY0NAotLS0gYS9pbmNs dWRlL2RybS9kcm1fY2xpZW50LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCkBAIC0z LDggKzMsMTIgQEAKICNpZm5kZWYgX0RSTV9DTElFTlRfSF8KICNkZWZpbmUgX0RSTV9DTElFTlRf SF8KIAorI2luY2x1ZGUgPGxpbnV4L2xvY2tkZXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5o PgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4K Kwogc3RydWN0IGRybV9jbGllbnRfZGV2Owogc3RydWN0IGRybV9kZXZpY2U7CiBzdHJ1Y3QgZHJt X2ZpbGU7CkBAIC0xMyw2ICsxNyw4IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKIHN0cnVjdCBk cm1fbWlub3I7CiBzdHJ1Y3QgbW9kdWxlOwogCisjZGVmaW5lIERSTV9DTElFTlRfTUFYX0NMT05F RF9DT05ORUNUT1JTCTgKKwogLyoqCiAgKiBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAtIERSTSBj bGllbnQgY2FsbGJhY2tzCiAgKi8KQEAgLTg1LDYgKzkxLDE2IEBAIHN0cnVjdCBkcm1fY2xpZW50 X2RldiB7CiAJICogQGZpbGU6IERSTSBmaWxlCiAJICovCiAJc3RydWN0IGRybV9maWxlICpmaWxl OworCisJLyoqCisJICogQG1vZGVzZXRfbXV0ZXg6IFByb3RlY3RzIEBtb2Rlc2V0cy4KKwkgKi8K KwlzdHJ1Y3QgbXV0ZXggbW9kZXNldF9tdXRleDsKKworCS8qKgorCSAqIEBtb2Rlc2V0czogQ1JU QyBjb25maWd1cmF0aW9ucworCSAqLworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXRzOwog fTsKIAogaW50IGRybV9jbGllbnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKQEAgLTEzNSw2ICsxNTEsMjAgQEAgc3RydWN0IGRybV9j bGllbnRfYnVmZmVyICoKIGRybV9jbGllbnRfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBmb3JtYXQpOwog dm9pZCBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZm ZXIgKmJ1ZmZlcik7CiAKK2ludCBkcm1fY2xpZW50X21vZGVzZXRfY3JlYXRlKHN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50KTsKK3ZvaWQgZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoc3RydWN0 IGRybV9jbGllbnRfZGV2ICpjbGllbnQpOwordm9pZCBkcm1fY2xpZW50X21vZGVzZXRfcmVsZWFz ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7CitzdHJ1Y3QgZHJtX21vZGVfc2V0ICpk cm1fY2xpZW50X2ZpbmRfbW9kZXNldChzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgc3Ry dWN0IGRybV9jcnRjICpjcnRjKTsKKworLyoqCisgKiBkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVz ZXQoKSAtIEl0ZXJhdGUgb3ZlciBjbGllbnQgbW9kZXNldHMKKyAqIEBtb2Rlc2V0OiAmZHJtX21v ZGVfc2V0IGxvb3AgY3Vyc29yCisgKiBAY2xpZW50OiBEUk0gY2xpZW50CisgKi8KKyNkZWZpbmUg ZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVudCkgXAorCWZvciAoKHsg bG9ja2RlcF9hc3NlcnRfaGVsZCgmKGNsaWVudCktPm1vZGVzZXRfbXV0ZXgpOyB9KSwgXAorCSAg ICAgbW9kZXNldCA9IChjbGllbnQpLT5tb2Rlc2V0czsgbW9kZXNldC0+Y3J0YzsgbW9kZXNldCsr KQorCiBpbnQgZHJtX2NsaWVudF9kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAqbWlub3Ip OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCBiL2lu Y2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAppbmRleCAyYWYxYzZkM2UxNDcuLjZiMzM0ZjRkOGEy MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCisrKyBiL2luY2x1ZGUv ZHJtL2RybV9mYl9oZWxwZXIuaApAQCAtNDcsMTAgKzQ3LDYgQEAgc3RydWN0IGRybV9mYl9vZmZz ZXQgewogCWludCB4LCB5OwogfTsKIAotc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyB7Ci0Jc3Ry dWN0IGRybV9tb2RlX3NldCBtb2RlX3NldDsKLX07Ci0KIC8qKgogICogc3RydWN0IGRybV9mYl9o ZWxwZXJfc3VyZmFjZV9zaXplIC0gZGVzY3JpYmVzIGZiZGV2IHNpemUgYW5kIHNjYW5vdXQgc3Vy ZmFjZSBzaXplCiAgKiBAZmJfd2lkdGg6IGZiZGV2IHdpZHRoCkBAIC0xMDksOCArMTA1LDYgQEAg c3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yIHsKICAqIHN0cnVjdCBkcm1fZmJfaGVscGVy IC0gbWFpbiBzdHJ1Y3R1cmUgdG8gZW11bGF0ZSBmYmRldiBvbiB0b3Agb2YgS01TCiAgKiBAZmI6 IFNjYW5vdXQgZnJhbWVidWZmZXIgb2JqZWN0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0gKiBAY3J0 Y19jb3VudDogbnVtYmVyIG9mIHBvc3NpYmxlIENSVENzCi0gKiBAY3J0Y19pbmZvOiBwZXItQ1JU QyBoZWxwZXIgc3RhdGUgKG1vZGUsIHgveSBvZmZzZXQsIGV0YykKICAqIEBjb25uZWN0b3JfY291 bnQ6IG51bWJlciBvZiBjb25uZWN0ZWQgY29ubmVjdG9ycwogICogQGNvbm5lY3Rvcl9pbmZvX2Fs bG9jX2NvdW50OiBzaXplIG9mIGNvbm5lY3Rvcl9pbmZvCiAgKiBAZnVuY3M6IGRyaXZlciBjYWxs YmFja3MgZm9yIGZiIGhlbHBlcgpAQCAtMTQ0LDggKzEzOCw2IEBAIHN0cnVjdCBkcm1fZmJfaGVs cGVyIHsKIAogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXY7Ci0JaW50IGNydGNfY291bnQ7Ci0Jc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqY3J0 Y19pbmZvOwogCWludCBjb25uZWN0b3JfY291bnQ7CiAJaW50IGNvbm5lY3Rvcl9pbmZvX2FsbG9j X2NvdW50OwogCS8qKgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZng=