From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v5 05/11] drm/fb-helper: Remove drm_fb_helper_crtc Date: Mon, 6 May 2019 20:01:33 +0200 Message-ID: <20190506180139.6913-6-noralf@tronnes.org> References: <20190506180139.6913-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190506180139.6913-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: intel-gfx@lists.freedesktop.org List-Id: dri-devel@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 ICsKIERvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0ICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9k cm1fY2xpZW50LmMgICAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRf bW9kZXNldC5jIHwgMTA0ICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu YyAgICAgIHwgMzAxICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJt X2NsaWVudC5oICAgICAgICAgICAgIHwgIDMwICsrKwogaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBl ci5oICAgICAgICAgIHwgICA4IC0KIDggZmlsZXMgY2hhbmdlZCwgMjc0IGluc2VydGlvbnMoKyks IDE4NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJt X2NsaWVudF9tb2Rlc2V0LmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xp ZW50LnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0CmluZGV4IDdlNjcyMDYz ZTdlYi4uNThiNWExZDEyMTlkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xp ZW50LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJzdApAQCAtMTAsMyAr MTAsNiBAQCBLZXJuZWwgY2xpZW50cwogCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2RybV9jbGllbnQuYwogICAgOmV4cG9ydDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1 L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYworICAgOmV4cG9ydDoKZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vZ3B1L3RvZG8ucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QKaW5kZXgg NjZmMDVmNGU0NjlmLi45ZDQwMzhjNTAwMTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1 L3RvZG8ucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0CkBAIC0yODksNiArMjg5 LDkgQEAgZHJtX2ZiX2hlbHBlciB0YXNrcwogICB0aGVzZSBpZ3QgdGVzdHMgbmVlZCB0byBiZSBm aXhlZDoga21zX2ZiY29uX2ZidEBwc3IgYW5kCiAgIGttc19mYmNvbl9mYnRAcHNyLXN1c3BlbmQu CiAKKy0gVGhlIG1heCBjb25uZWN0b3IgYXJndW1lbnQgZm9yIGRybV9mYl9oZWxwZXJfaW5pdCgp IGFuZAorICBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKCkgaXNuJ3QgdXNlZCBhbnltb3JlIGFu ZCBjYW4gYmUgcmVtb3ZlZC4KKwogQ29yZSByZWZhY3RvcmluZ3MKID09PT09PT09PT09PT09PT09 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQppbmRleCA3MmY1MDM2ZDliZmEuLmFlMGU4YWRiMmQ3MyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpA QCAtMTcsNyArMTcsNyBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRybV9jYWNoZS5vIFwK IAkJZHJtX3BsYW5lLm8gZHJtX2NvbG9yX21nbXQubyBkcm1fcHJpbnQubyBcCiAJCWRybV9kdW1i X2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcubyBkcm1fdmJsYW5rLm8gXAogCQlkcm1fc3luY29i ai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJhY2subyBkcm1fY2xpZW50Lm8gXAotCQlkcm1fYXRv bWljX3VhcGkubworCQlkcm1fY2xpZW50X21vZGVzZXQubyBkcm1fYXRvbWljX3VhcGkubwogCiBk cm0tJChDT05GSUdfRFJNX0xFR0FDWSkgKz0gZHJtX2xlZ2FjeV9taXNjLm8gZHJtX2J1ZnMubyBk cm1fY29udGV4dC5vIGRybV9kbWEubyBkcm1fc2NhdHRlci5vIGRybV9sb2NrLm8KIGRybS0kKENP TkZJR19EUk1fTElCX1JBTkRPTSkgKz0gbGliL2RybV9yYW5kb20ubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9jbGllbnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMK aW5kZXggZjIwZDFkZGEzOTYxLi4zZGQwOGM2YjI2NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fY2xpZW50LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwpAQCAt MjcsNyArMjcsNiBAQAogICogRE9DOiBvdmVydmlldwogICoKICAqIFRoaXMgbGlicmFyeSBwcm92 aWRlcyBzdXBwb3J0IGZvciBjbGllbnRzIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbCBsaWtlIGZiZGV2 IGFuZCBib290c3BsYXNoLgotICogQ3VycmVudGx5IGl0J3Mgb25seSBwYXJ0aWFsbHkgaW1wbGVt ZW50ZWQsIGp1c3QgZW5vdWdoIHRvIHN1cHBvcnQgZmJkZXYuCiAgKgogICogR0VNIGRyaXZlcnMg d2hpY2ggcHJvdmlkZSBhIEdFTSBiYXNlZCBkdW1iIGJ1ZmZlciB3aXRoIGEgdmlydHVhbCBhZGRy ZXNzIGFyZSBzdXBwb3J0ZWQuCiAgKi8KQEAgLTkyLDE0ICs5MSwyMCBAQCBpbnQgZHJtX2NsaWVu dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xp ZW50LAogCWNsaWVudC0+bmFtZSA9IG5hbWU7CiAJY2xpZW50LT5mdW5jcyA9IGZ1bmNzOwogCi0J cmV0ID0gZHJtX2NsaWVudF9vcGVuKGNsaWVudCk7CisJcmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0 X2NyZWF0ZShjbGllbnQpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3B1dF9tb2R1bGU7CiAKKwly ZXQgPSBkcm1fY2xpZW50X29wZW4oY2xpZW50KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVl OworCiAJZHJtX2Rldl9nZXQoZGV2KTsKIAogCXJldHVybiAwOwogCitlcnJfZnJlZToKKwlkcm1f Y2xpZW50X21vZGVzZXRfZnJlZShjbGllbnQpOwogZXJyX3B1dF9tb2R1bGU6CiAJaWYgKGZ1bmNz KQogCQltb2R1bGVfcHV0KGZ1bmNzLT5vd25lcik7CkBAIC0xNDgsNiArMTUzLDcgQEAgdm9pZCBk cm1fY2xpZW50X3JlbGVhc2Uoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCiAKIAlEUk1f REVWX0RFQlVHX0tNUyhkZXYtPmRldiwgIiVzXG4iLCBjbGllbnQtPm5hbWUpOwogCisJZHJtX2Ns aWVudF9tb2Rlc2V0X2ZyZWUoY2xpZW50KTsKIAlkcm1fY2xpZW50X2Nsb3NlKGNsaWVudCk7CiAJ ZHJtX2Rldl9wdXQoZGV2KTsKIAlpZiAoY2xpZW50LT5mdW5jcykKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xp ZW50X21vZGVzZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2 NzcwZWQzMjk5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50 X21vZGVzZXQuYwpAQCAtMCwwICsxLDEwNCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVAorLyoKKyAqIENvcHlyaWdodCAyMDE4IE5vcmFsZiBUcsO4bm5lcworICogQ29weXJpZ2h0 IChjKSAyMDA2LTIwMDkgUmVkIEhhdCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCBJ bnRlbCBDb3Jwb3JhdGlvbgorICogICBKZXNzZSBCYXJuZXMgPGplc3NlLmJhcm5lc0BpbnRlbC5j b20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgRGF2ZSBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+ CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4 Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5o PgorCitpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2NyZWF0ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYg KmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJdW5z aWduZWQgaW50IG51bV9jcnRjID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsKKwl1bnNpZ25l ZCBpbnQgbWF4X2Nvbm5lY3Rvcl9jb3VudCA9IDE7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9k ZXNldDsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJdW5zaWduZWQgaW50IGkgPSAwOworCisJ LyogQWRkIHRlcm1pbmF0aW5nIHplcm8gZW50cnkgdG8gZW5hYmxlIGluZGV4IGxlc3MgaXRlcmF0 aW9uICovCisJY2xpZW50LT5tb2Rlc2V0cyA9IGtjYWxsb2MobnVtX2NydGMgKyAxLCBzaXplb2Yo KmNsaWVudC0+bW9kZXNldHMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNsaWVudC0+bW9kZXNldHMp CisJCXJldHVybiAtRU5PTUVNOworCisJbXV0ZXhfaW5pdCgmY2xpZW50LT5tb2Rlc2V0X211dGV4 KTsKKworCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikKKwkJY2xpZW50LT5tb2Rlc2V0c1tp KytdLmNydGMgPSBjcnRjOworCisJLyogQ2xvbmluZyBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUg c2luZ2xlIGNydGMgY2FzZS4gKi8KKwlpZiAobnVtX2NydGMgPT0gMSkKKwkJbWF4X2Nvbm5lY3Rv cl9jb3VudCA9IERSTV9DTElFTlRfTUFYX0NMT05FRF9DT05ORUNUT1JTOworCisJZm9yIChtb2Rl c2V0ID0gY2xpZW50LT5tb2Rlc2V0czsgbW9kZXNldC0+Y3J0YzsgbW9kZXNldCsrKSB7CisJCW1v ZGVzZXQtPmNvbm5lY3RvcnMgPSBrY2FsbG9jKG1heF9jb25uZWN0b3JfY291bnQsCisJCQkJCSAg ICAgIHNpemVvZigqbW9kZXNldC0+Y29ubmVjdG9ycyksIEdGUF9LRVJORUwpOworCQlpZiAoIW1v ZGVzZXQtPmNvbm5lY3RvcnMpCisJCQlnb3RvIGVycl9mcmVlOworCX0KKworCXJldHVybiAwOwor CitlcnJfZnJlZToKKwlkcm1fY2xpZW50X21vZGVzZXRfZnJlZShjbGllbnQpOworCisJcmV0dXJu IC1FTk9NRU07Cit9CisKK3ZvaWQgZHJtX2NsaWVudF9tb2Rlc2V0X3JlbGVhc2Uoc3RydWN0IGRy bV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsK Kwl1bnNpZ25lZCBpbnQgaTsKKworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0 LCBjbGllbnQpIHsKKwkJZHJtX21vZGVfZGVzdHJveShjbGllbnQtPmRldiwgbW9kZXNldC0+bW9k ZSk7CisJCW1vZGVzZXQtPm1vZGUgPSBOVUxMOworCQltb2Rlc2V0LT5mYiA9IE5VTEw7CisKKwkJ Zm9yIChpID0gMDsgaSA8IG1vZGVzZXQtPm51bV9jb25uZWN0b3JzOyBpKyspIHsKKwkJCWRybV9j b25uZWN0b3JfcHV0KG1vZGVzZXQtPmNvbm5lY3RvcnNbaV0pOworCQkJbW9kZXNldC0+Y29ubmVj dG9yc1tpXSA9IE5VTEw7CisJCX0KKwkJbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMgPSAwOworCX0K K30KKy8qIFRPRE86IFJlbW92ZSBleHBvcnQgd2hlbiBtb2Rlc2V0IGNvZGUgaGFzIGJlZW4gbW92 ZWQgb3ZlciAqLworRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfcmVsZWFzZSk7CisK K3ZvaWQgZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGll bnQpCit7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKKworCW11dGV4X2xvY2soJmNs aWVudC0+bW9kZXNldF9tdXRleCk7CisKKwlkcm1fY2xpZW50X21vZGVzZXRfcmVsZWFzZShjbGll bnQpOworCisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVudCkKKwkJ a2ZyZWUobW9kZXNldC0+Y29ubmVjdG9ycyk7CisKKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9k ZXNldF9tdXRleCk7CisKKwltdXRleF9kZXN0cm95KCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwor CWtmcmVlKGNsaWVudC0+bW9kZXNldHMpOworfQorCitzdHJ1Y3QgZHJtX21vZGVfc2V0ICpkcm1f Y2xpZW50X2ZpbmRfbW9kZXNldChzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgc3RydWN0 IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CisKKwlk cm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50KQorCQlpZiAobW9kZXNl dC0+Y3J0YyA9PSBjcnRjKQorCQkJcmV0dXJuIG1vZGVzZXQ7CisKKwlyZXR1cm4gTlVMTDsKK30K Ky8qIFRPRE86IFJlbW92ZSBleHBvcnQgd2hlbiBtb2Rlc2V0IGNvZGUgaGFzIGJlZW4gbW92ZWQg b3ZlciAqLworRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2ZpbmRfbW9kZXNldCk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9mYl9oZWxwZXIuYwppbmRleCBhZjJlNzRjNzQyYTQuLjY2Mzc4NThiZjUzMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jCkBAIC0zMTcsMTMgKzMxNywxMSBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9k ZWJ1Z19lbnRlcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqaGVscGVyID0gaW5mby0+cGFyOwogCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVu Y3MgKmZ1bmNzOwotCWludCBpOworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwogCiAJ bGlzdF9mb3JfZWFjaF9lbnRyeShoZWxwZXIsICZrZXJuZWxfZmJfaGVscGVyX2xpc3QsIGtlcm5l bF9mYl9saXN0KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBoZWxwZXItPmNydGNfY291bnQ7IGkrKykg ewotCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQgPQotCQkJCSZoZWxwZXItPmNydGNf aW5mb1tpXS5tb2RlX3NldDsKLQorCQltdXRleF9sb2NrKCZoZWxwZXItPmNsaWVudC5tb2Rlc2V0 X211dGV4KTsKKwkJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCAmaGVscGVy LT5jbGllbnQpIHsKIAkJCWlmICghbW9kZV9zZXQtPmNydGMtPmVuYWJsZWQpCiAJCQkJY29udGlu dWU7CiAKQEAgLTM0MCw2ICszMzgsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9kZWJ1Z19lbnRlcihz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAkJCQkJCSAgICBtb2RlX3NldC0+eSwKIAkJCQkJCSAgICBF TlRFUl9BVE9NSUNfTU9ERV9TRVQpOwogCQl9CisJCW11dGV4X3VubG9jaygmaGVscGVyLT5jbGll bnQubW9kZXNldF9tdXRleCk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0zNTMsMTQgKzM1MiwxNCBA QCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfZGVidWdfZW50ZXIpOwogaW50IGRybV9mYl9o ZWxwZXJfZGVidWdfbGVhdmUoc3RydWN0IGZiX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IGRybV9m Yl9oZWxwZXIgKmhlbHBlciA9IGluZm8tPnBhcjsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNs aWVudCA9ICZoZWxwZXItPmNsaWVudDsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJY29uc3Qg c3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7CisJc3RydWN0IGRybV9tb2RlX3Nl dCAqbW9kZV9zZXQ7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Ci0JaW50IGk7Ci0KLQlm b3IgKGkgPSAwOyBpIDwgaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJc3RydWN0IGRybV9t b2RlX3NldCAqbW9kZV9zZXQgPSAmaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7CiAKKwlt dXRleF9sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCWRybV9jbGllbnRfZm9yX2VhY2hf bW9kZXNldChtb2RlX3NldCwgY2xpZW50KSB7CiAJCWNydGMgPSBtb2RlX3NldC0+Y3J0YzsKIAkJ aWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChjcnRjLT5kZXYpKQogCQkJY29udGludWU7 CkBAIC0zODMsNiArMzgyLDcgQEAgaW50IGRybV9mYl9oZWxwZXJfZGVidWdfbGVhdmUoc3RydWN0 IGZiX2luZm8gKmluZm8pCiAJCWZ1bmNzLT5tb2RlX3NldF9iYXNlX2F0b21pYyhtb2RlX3NldC0+ Y3J0YywgZmIsIGNydGMtPngsCiAJCQkJCSAgICBjcnRjLT55LCBMRUFWRV9BVE9NSUNfTU9ERV9T RVQpOwogCX0KKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CiAKIAlyZXR1 cm4gMDsKIH0KQEAgLTQzMywxMiArNDMzLDE0IEBAIHN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJf cGFuZWxfcm90YXRpb24oc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCwKIAogc3RhdGljIGlu dCByZXN0b3JlX2ZiZGV2X21vZGVfYXRvbWljKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsIGJvb2wgYWN0aXZlKQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZi X2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRl djsKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Ci0JaW50IGksIHJl dDsKIAlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4OworCXN0cnVjdCBkcm1fbW9k ZV9zZXQgKm1vZGVfc2V0OworCWludCByZXQ7CiAKIAlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQo JmN0eCwgMCk7CiAKQEAgLTQ2OCw4ICs0NzAsNyBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZf bW9kZV9hdG9taWMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3Rpdgog CQkJZ290byBvdXRfc3RhdGU7CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0 Y19jb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hl bHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNl dChtb2RlX3NldCwgY2xpZW50KSB7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBtb2Rl X3NldC0+Y3J0Yy0+cHJpbWFyeTsKIAkJdW5zaWduZWQgaW50IHJvdGF0aW9uOwogCkBAIC01MTcs OSArNTE4LDExIEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBib29sIGFjdGl2CiAKIHN0YXRpYyBpbnQgcmVzdG9y ZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogewor CXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlzdHJ1Y3QgZHJtX21vZGVf c2V0ICptb2RlX3NldDsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQlpbnQgaSwgcmV0ID0g MDsKKwlpbnQgcmV0ID0gMDsKIAogCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGZiX2hlbHBlci0+ZGV2 KTsKIAlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsIGRldikgewpAQCAtNTMyLDggKzUzNSw3IEBA IHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyKQogCQkJCQkJICAgIERSTV9NT0RFX1JPVEFURV8wKTsKIAl9CiAKLQlmb3Ig KGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJc3RydWN0IGRybV9t b2RlX3NldCAqbW9kZV9zZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7CisJ ZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKIAkJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQtPmNydGM7CiAKIAkJaWYgKGNydGMtPmZ1bmNzLT5j dXJzb3Jfc2V0MikgewpAQCAtNTU5LDExICs1NjEsMTYgQEAgc3RhdGljIGludCByZXN0b3JlX2Zi ZGV2X21vZGVfbGVnYWN5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiBzdGF0aWMg aW50IHJlc3RvcmVfZmJkZXZfbW9kZV9mb3JjZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlpbnQg cmV0OwogCisJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNldF9tdXRleCk7CiAJ aWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkZXYpKQotCQlyZXR1cm4gcmVzdG9yZV9m YmRldl9tb2RlX2F0b21pYyhmYl9oZWxwZXIsIHRydWUpOworCQlyZXQgPSByZXN0b3JlX2ZiZGV2 X21vZGVfYXRvbWljKGZiX2hlbHBlciwgdHJ1ZSk7CiAJZWxzZQotCQlyZXR1cm4gcmVzdG9yZV9m YmRldl9tb2RlX2xlZ2FjeShmYl9oZWxwZXIpOworCQlyZXQgPSByZXN0b3JlX2ZiZGV2X21vZGVf bGVnYWN5KGZiX2hlbHBlcik7CisJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rl c2V0X211dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRl dl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCkBAIC02ODIsMTUgKzY4OSwx NCBAQCBzdGF0aWMgc3RydWN0IHN5c3JxX2tleV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3Rv cmVfb3AgPSB7IH07CiAKIHN0YXRpYyB2b2lkIGRwbXNfbGVnYWN5KHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsIGludCBkcG1zX21vZGUpCiB7CisJc3RydWN0IGRybV9jbGllbnRfZGV2 ICpjbGllbnQgPSAmZmJfaGVscGVyLT5jbGllbnQ7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGZiX2hlbHBlci0+ZGV2OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJc3Ry dWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKLQlpbnQgaSwgajsKKwlpbnQgajsKIAogCWRybV9t b2Rlc2V0X2xvY2tfYWxsKGRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19j b3VudDsgaSsrKSB7Ci0JCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9z ZXQ7Ci0KKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50KSB7CiAJ CWlmICghbW9kZXNldC0+Y3J0Yy0+ZW5hYmxlZCkKIAkJCWNvbnRpbnVlOwogCkBAIC03MDcsNiAr NzEzLDcgQEAgc3RhdGljIHZvaWQgZHBtc19sZWdhY3koc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwgaW50IGRwbXNfbW9kZSkKIHN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfZHBtcyhz dHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IGRwbXNfbW9kZSkKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xp ZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9o ZWxwZXItPmRldjsKIAogCS8qCkBAIC03MTYsMTAgKzcyMywxMiBAQCBzdGF0aWMgdm9pZCBkcm1f ZmJfaGVscGVyX2RwbXMoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCiAJaWYg KCFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoZGV2KSkKIAkJZ290byB1bmxvY2s7CiAKKwlt dXRleF9sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwogCWlmIChkcm1fZHJ2X3VzZXNfYXRv bWljX21vZGVzZXQoZGV2KSkKIAkJcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhmYl9oZWxwZXIs IGRwbXNfbW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKTsKIAllbHNlCiAJCWRwbXNfbGVnYWN5KGZi X2hlbHBlciwgZHBtc19tb2RlKTsKKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9tdXRl eCk7CiAKIAlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKIHVubG9jazoKQEAgLTc2 Miw0MyArNzcxLDYgQEAgaW50IGRybV9mYl9oZWxwZXJfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9ibGFuayk7CiAK LXN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfbW9kZXNldF9yZWxlYXNlKHN0cnVjdCBkcm1fZmJf aGVscGVyICpoZWxwZXIsCi0JCQkJCSAgc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCkKLXsK LQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBtb2Rlc2V0LT5udW1fY29ubmVjdG9yczsgaSsr KSB7Ci0JCWRybV9jb25uZWN0b3JfcHV0KG1vZGVzZXQtPmNvbm5lY3RvcnNbaV0pOwotCQltb2Rl c2V0LT5jb25uZWN0b3JzW2ldID0gTlVMTDsKLQl9Ci0JbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMg PSAwOwotCi0JZHJtX21vZGVfZGVzdHJveShoZWxwZXItPmRldiwgbW9kZXNldC0+bW9kZSk7Ci0J bW9kZXNldC0+bW9kZSA9IE5VTEw7Ci0KLQkvKiBGSVhNRSBzaG91bGQgaG9sZCBhIHJlZj8gKi8K LQltb2Rlc2V0LT5mYiA9IE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfY3J0 Y19mcmVlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpCi17Ci0JaW50IGk7Ci0KLQlmb3Ig KGkgPSAwOyBpIDwgaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgewotCQlkcm1fY29ubmVj dG9yX3B1dChoZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3IpOwotCQlrZnJlZSho ZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldKTsKLQl9Ci0Ja2ZyZWUoaGVscGVyLT5jb25uZWN0b3Jf aW5mbyk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJ c3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCA9ICZoZWxwZXItPmNydGNfaW5mb1tpXS5tb2Rl X3NldDsKLQotCQlkcm1fZmJfaGVscGVyX21vZGVzZXRfcmVsZWFzZShoZWxwZXIsIG1vZGVzZXQp OwotCQlrZnJlZShtb2Rlc2V0LT5jb25uZWN0b3JzKTsKLQl9Ci0Ja2ZyZWUoaGVscGVyLT5jcnRj X2luZm8pOwotfQotCiBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX3Jlc3VtZV93b3JrZXIoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIg PSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGRybV9mYl9oZWxwZXIsCkBAIC04NzcsNyArODQ5 LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3ByZXBhcmUpOwogICogZHJtX2ZiX2hl bHBlcl9pbml0IC0gaW5pdGlhbGl6ZSBhICZzdHJ1Y3QgZHJtX2ZiX2hlbHBlcgogICogQGRldjog ZHJtIGRldmljZQogICogQGZiX2hlbHBlcjogZHJpdmVyLWFsbG9jYXRlZCBmYmRldiBoZWxwZXIg c3RydWN0dXJlIHRvIGluaXRpYWxpemUKLSAqIEBtYXhfY29ubl9jb3VudDogbWF4IGNvbm5lY3Rv ciBjb3VudAorICogQG1heF9jb25uX2NvdW50OiBtYXggY29ubmVjdG9yIGNvdW50IChub3QgdXNl ZCkKICAqCiAgKiBUaGlzIGFsbG9jYXRlcyB0aGUgc3RydWN0dXJlcyBmb3IgdGhlIGZiZGV2IGhl bHBlciB3aXRoIHRoZSBnaXZlbiBsaW1pdHMuCiAgKiBOb3RlIHRoYXQgdGhpcyB3b24ndCB5ZXQg dG91Y2ggdGhlIGhhcmR3YXJlICh0aHJvdWdoIHRoZSBkcml2ZXIgaW50ZXJmYWNlcykKQEAgLTg5 Myw1MyArODY1LDM2IEBAIGludCBkcm1fZmJfaGVscGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCSAgICAg ICBpbnQgbWF4X2Nvbm5fY291bnQpCiB7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVj dCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwotCWludCBpOwor CWludCByZXQ7CiAKIAlpZiAoIWRybV9mYmRldl9lbXVsYXRpb24pIHsKIAkJZGV2LT5mYl9oZWxw ZXIgPSBmYl9oZWxwZXI7CiAJCXJldHVybiAwOwogCX0KIAotCWlmICghbWF4X2Nvbm5fY291bnQp Ci0JCXJldHVybiAtRUlOVkFMOwotCi0JZmJfaGVscGVyLT5jcnRjX2luZm8gPSBrY2FsbG9jKGNv bmZpZy0+bnVtX2NydGMsIHNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjKSwgR0ZQX0tF Uk5FTCk7Ci0JaWYgKCFmYl9oZWxwZXItPmNydGNfaW5mbykKLQkJcmV0dXJuIC1FTk9NRU07Ci0K LQlmYl9oZWxwZXItPmNydGNfY291bnQgPSBjb25maWctPm51bV9jcnRjOwotCWZiX2hlbHBlci0+ Y29ubmVjdG9yX2luZm8gPSBrY2FsbG9jKGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvciwg c2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqKSwgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvKSB7Ci0JCWtmcmVlKGZiX2hlbHBlci0+Y3J0 Y19pbmZvKTsKLQkJcmV0dXJuIC1FTk9NRU07CisJLyoKKwkgKiBJZiB0aGlzIGlzIG5vdCB0aGUg Z2VuZXJpYyBmYmRldiBjbGllbnQsIGluaXRpYWxpemUgYSBkcm1fY2xpZW50CisJICogd2l0aG91 dCBjYWxsYmFja3Mgc28gd2UgY2FuIHVzZSB0aGUgbW9kZXNldHMuCisJICovCisJaWYgKCFmYl9o ZWxwZXItPmNsaWVudC5mdW5jcykgeworCQlyZXQgPSBkcm1fY2xpZW50X2luaXQoZGV2LCAmZmJf aGVscGVyLT5jbGllbnQsICJkcm1fZmJfaGVscGVyIiwgTlVMTCk7CisJCWlmIChyZXQpCisJCQly ZXR1cm4gcmV0OwogCX0KKworCWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm8gPSBrY2FsbG9jKGRl di0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvciwgc2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVy X2Nvbm5lY3RvciAqKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFmYl9oZWxwZXItPmNvbm5lY3Rvcl9p bmZvKQorCQlnb3RvIG91dF9mcmVlOworCiAJZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb19hbGxv Y19jb3VudCA9IGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3RvcjsKIAlmYl9oZWxwZXItPmNv bm5lY3Rvcl9jb3VudCA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2Nv dW50OyBpKyspIHsKLQkJZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQuY29ubmVjdG9y cyA9Ci0JCQlrY2FsbG9jKG1heF9jb25uX2NvdW50LAotCQkJCXNpemVvZihzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqKSwKLQkJCQlHRlBfS0VSTkVMKTsKLQotCQlpZiAoIWZiX2hlbHBlci0+Y3J0Y19p bmZvW2ldLm1vZGVfc2V0LmNvbm5lY3RvcnMpCi0JCQlnb3RvIG91dF9mcmVlOwotCQlmYl9oZWxw ZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5udW1fY29ubmVjdG9ycyA9IDA7Ci0JfQotCi0JaSA9 IDA7Ci0JZHJtX2Zvcl9lYWNoX2NydGMoY3J0YywgZGV2KSB7Ci0JCWZiX2hlbHBlci0+Y3J0Y19p bmZvW2ldLm1vZGVfc2V0LmNydGMgPSBjcnRjOwotCQlpKys7Ci0JfQotCiAJZGV2LT5mYl9oZWxw ZXIgPSBmYl9oZWxwZXI7CiAKIAlyZXR1cm4gMDsKIG91dF9mcmVlOgotCWRybV9mYl9oZWxwZXJf Y3J0Y19mcmVlKGZiX2hlbHBlcik7CisJZHJtX2NsaWVudF9yZWxlYXNlKCZmYl9oZWxwZXItPmNs aWVudCk7CisKIAlyZXR1cm4gLUVOT01FTTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBl cl9pbml0KTsKQEAgLTEwMTUsNiArOTcwLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVy X3VucmVnaXN0ZXJfZmJpKTsKIHZvaWQgZHJtX2ZiX2hlbHBlcl9maW5pKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIpCiB7CiAJc3RydWN0IGZiX2luZm8gKmluZm87CisJaW50IGk7CiAK IAlpZiAoIWZiX2hlbHBlcikKIAkJcmV0dXJuOwpAQCAtMTA0NCw4ICsxMDAwLDE1IEBAIHZvaWQg ZHJtX2ZiX2hlbHBlcl9maW5pKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJbXV0 ZXhfdW5sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2spOwogCiAJbXV0ZXhfZGVzdHJveSgmZmJf aGVscGVyLT5sb2NrKTsKLQlkcm1fZmJfaGVscGVyX2NydGNfZnJlZShmYl9oZWxwZXIpOwogCisJ aWYgKCFmYl9oZWxwZXItPmNsaWVudC5mdW5jcykKKwkJZHJtX2NsaWVudF9yZWxlYXNlKCZmYl9o ZWxwZXItPmNsaWVudCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3Jf Y291bnQ7IGkrKykgeworCQlkcm1fY29ubmVjdG9yX3B1dChmYl9oZWxwZXItPmNvbm5lY3Rvcl9p bmZvW2ldLT5jb25uZWN0b3IpOworCQlrZnJlZShmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ld KTsKKwl9CisJa2ZyZWUoZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mbyk7CiB9CiBFWFBPUlRfU1lN Qk9MKGRybV9mYl9oZWxwZXJfZmluaSk7CiAKQEAgLTEzOTAsMTMgKzEzNTMsMTQgQEAgc3RhdGlj IGludCBzZXRjbWFwX3BzZXVkb19wYWxldHRlKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbykKIHN0YXRpYyBpbnQgc2V0Y21hcF9sZWdhY3koc3RydWN0IGZiX2NtYXAg KmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIgPSBpbmZvLT5wYXI7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJdTE2ICpyLCAqZywgKmI7Ci0JaW50IGksIHJldCA9IDA7 CisJaW50IHJldCA9IDA7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChmYl9oZWxwZXItPmRldik7 Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCWNydGMg PSBmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9jbGllbnRfZm9y X2VhY2hfbW9kZXNldChtb2Rlc2V0LCAmZmJfaGVscGVyLT5jbGllbnQpIHsKKwkJY3J0YyA9IG1v ZGVzZXQtPmNydGM7CiAJCWlmICghY3J0Yy0+ZnVuY3MtPmdhbW1hX3NldCB8fCAhY3J0Yy0+Z2Ft bWFfc2l6ZSkKIAkJCXJldHVybiAtRUlOVkFMOwogCkBAIC0xNDcyLDEwICsxNDM2LDExIEBAIHN0 YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9p bmZvICppbmZvKQogCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CiAJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZTsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwogCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKIAl1MTYgKnIsICpnLCAqYjsKLQlpbnQgaSwgcmV0ID0gMDsKIAlib29sIHJlcGxhY2Vk OworCWludCByZXQgPSAwOwogCiAJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwog CkBAIC0xNDg3LDggKzE0NTIsOCBAQCBzdGF0aWMgaW50IHNldGNtYXBfYXRvbWljKHN0cnVjdCBm Yl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAogCXN0YXRlLT5hY3F1aXJlX2N0 eCA9ICZjdHg7CiByZXRyeToKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50 OyBpKyspIHsKLQkJY3J0YyA9IGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0LmNydGM7 CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsICZmYl9oZWxwZXItPmNsaWVu dCkgeworCQljcnRjID0gbW9kZXNldC0+Y3J0YzsKIAogCQlpZiAoIWdhbW1hX2x1dCkKIAkJCWdh bW1hX2x1dCA9IHNldGNtYXBfbmV3X2dhbW1hX2x1dChjcnRjLCBjbWFwKTsKQEAgLTE1MTYsOCAr MTQ4MSw4IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAs IHN0cnVjdCBmYl9pbmZvICppbmZvKQogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3N0YXRlOwogCi0J Zm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCWNydGMgPSBm Yl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9jbGllbnRfZm9yX2Vh Y2hfbW9kZXNldChtb2Rlc2V0LCAmZmJfaGVscGVyLT5jbGllbnQpIHsKKwkJY3J0YyA9IG1vZGVz ZXQtPmNydGM7CiAKIAkJciA9IGNydGMtPmdhbW1hX3N0b3JlOwogCQlnID0gciArIGNydGMtPmdh bW1hX3NpemU7CkBAIC0xNTY3LDEyICsxNTMyLDE0IEBAIGludCBkcm1fZmJfaGVscGVyX3NldGNt YXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogCQlnb3RvIHVu bG9jazsKIAl9CiAKKwltdXRleF9sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4 KTsKIAlpZiAoaW5mby0+Zml4LnZpc3VhbCA9PSBGQl9WSVNVQUxfVFJVRUNPTE9SKQogCQlyZXQg PSBzZXRjbWFwX3BzZXVkb19wYWxldHRlKGNtYXAsIGluZm8pOwogCWVsc2UgaWYgKGRybV9kcnZf dXNlc19hdG9taWNfbW9kZXNldChmYl9oZWxwZXItPmRldikpCiAJCXJldCA9IHNldGNtYXBfYXRv bWljKGNtYXAsIGluZm8pOwogCWVsc2UKIAkJcmV0ID0gc2V0Y21hcF9sZWdhY3koY21hcCwgaW5m byk7CisJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4KTsKIAog CWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwogdW5sb2NrOgpAQCAtMTU5Niw3ICsx NTYzLDYgQEAgaW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVu c2lnbmVkIGludCBjbWQsCiB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGlu Zm8tPnBhcjsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Ci0Jc3Ry dWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQ7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWlu dCByZXQgPSAwOwogCkBAIC0xNjI0LDggKzE1OTAsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9pb2N0 bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCwKIAkJICogbWFrZS4gSWYg d2UncmUgbm90IHNtYXJ0IGVub3VnaCBoZXJlLCBvbmUgc2hvdWxkCiAJCSAqIGp1c3QgY29uc2lk ZXIgc3dpdGNoIHRoZSB1c2Vyc3BhY2UgdG8gS01TLgogCQkgKi8KLQkJbW9kZV9zZXQgPSAmZmJf aGVscGVyLT5jcnRjX2luZm9bMF0ubW9kZV9zZXQ7Ci0JCWNydGMgPSBtb2RlX3NldC0+Y3J0YzsK KwkJY3J0YyA9IGZiX2hlbHBlci0+Y2xpZW50Lm1vZGVzZXRzWzBdLmNydGM7CiAKIAkJLyoKIAkJ ICogT25seSB3YWl0IGZvciBhIHZibGFuayBldmVudCBpZiB0aGUgQ1JUQyBpcwpAQCAtMTgyMiwx NiArMTc4NywxNCBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc2V0X3Bhcik7CiAKIHN0 YXRpYyB2b2lkIHBhbl9zZXQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgaW50IHgs IGludCB5KQogewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19j b3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwotCi0JCW1vZGVf c2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OworCXN0cnVjdCBkcm1fbW9k ZV9zZXQgKm1vZGVfc2V0OwogCisJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNl dF9tdXRleCk7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCAmZmJfaGVs cGVyLT5jbGllbnQpIHsKIAkJbW9kZV9zZXQtPnggPSB4OwogCQltb2RlX3NldC0+eSA9IHk7CiAJ fQorCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNldF9tdXRleCk7CiB9CiAK IHN0YXRpYyBpbnQgcGFuX2Rpc3BsYXlfYXRvbWljKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAq dmFyLApAQCAtMTg0Miw3ICsxODA1LDcgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9hdG9taWMo c3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAKIAlwYW5fc2V0KGZiX2hlbHBlciwgdmFy LT54b2Zmc2V0LCB2YXItPnlvZmZzZXQpOwogCi0JcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlX2F0 b21pYyhmYl9oZWxwZXIsIHRydWUpOworCXJldCA9IHJlc3RvcmVfZmJkZXZfbW9kZV9mb3JjZShm Yl9oZWxwZXIpOwogCWlmICghcmV0KSB7CiAJCWluZm8tPnZhci54b2Zmc2V0ID0gdmFyLT54b2Zm c2V0OwogCQlpbmZvLT52YXIueW9mZnNldCA9IHZhci0+eW9mZnNldDsKQEAgLTE4NTYsMTQgKzE4 MTksMTMgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9sZWdhY3koc3RydWN0IGZiX3Zhcl9zY3Jl ZW5pbmZvICp2YXIsCiAJCQkgICAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fbW9kZV9zZXQg Km1vZGVzZXQ7CiAJaW50IHJldCA9IDA7Ci0JaW50IGk7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2Fs bChmYl9oZWxwZXItPmRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3Vu dDsgaSsrKSB7Ci0JCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7 Ci0KKwltdXRleF9sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCWRybV9jbGllbnRfZm9y X2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKIAkJbW9kZXNldC0+eCA9IHZhci0+eG9m ZnNldDsKIAkJbW9kZXNldC0+eSA9IHZhci0+eW9mZnNldDsKIApAQCAtMTg3NSw2ICsxODM3LDcg QEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9sZWdhY3koc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZv ICp2YXIsCiAJCQl9CiAJCX0KIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0 ZXgpOwogCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZmJfaGVscGVyLT5kZXYpOwogCiAJcmV0dXJu IHJldDsKQEAgLTE5MjEsMTAgKzE4ODQsMTIgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVy X3Bhbl9kaXNwbGF5KTsKIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCQkJIGludCBwcmVmZXJyZWRfYnBw KQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50 OwogCWludCByZXQgPSAwOwogCWludCBjcnRjX2NvdW50ID0gMDsKIAlpbnQgaTsKIAlzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgc2l6ZXM7CisJc3RydWN0IGRybV9tb2RlX3NldCAq bW9kZV9zZXQ7CiAJaW50IGJlc3RfZGVwdGggPSAwOwogCiAJbWVtc2V0KCZzaXplcywgMCwgc2l6 ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSkpOwpAQCAtMTk3NSwxMyArMTk0 MCwxMyBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJICogc3VwcG9ydHMgUkdCQTU1NTEgKDE2IGJwcCwg ZGVwdGggMTUpIGJ1dCBub3QgUkdCNTY1ICgxNiBicHAsIGRlcHRoCiAJICogMTYpIHdlIG5lZWQg dG8gc2NhbGUgZG93biB0aGUgZGVwdGggb2YgdGhlIHNpemVzIHdlIHJlcXVlc3QuCiAJICovCi0J Zm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBk cm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0 OworCW11dGV4X2xvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisJZHJtX2NsaWVudF9mb3Jf ZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKIAkJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gbW9kZV9zZXQtPmNydGM7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gY3J0Yy0+cHJp bWFyeTsKIAkJaW50IGo7CiAKLQkJRFJNX0RFQlVHKCJ0ZXN0IENSVEMgJWQgcHJpbWFyeSBwbGFu ZVxuIiwgaSk7CisJCURSTV9ERUJVRygidGVzdCBDUlRDICV1IHByaW1hcnkgcGxhbmVcbiIsIGRy bV9jcnRjX2luZGV4KGNydGMpKTsKIAogCQlmb3IgKGogPSAwOyBqIDwgcGxhbmUtPmZvcm1hdF9j b3VudDsgaisrKSB7CiAJCQljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmbXQ7CkBAIC0y MDIxLDkgKzE5ODYsOCBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2Jl KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAKIAkvKiBmaXJzdCB1cCBnZXQgYSBj b3VudCBvZiBjcnRjcyBub3cgaW4gdXNlIGFuZCBuZXcgbWluL21heGVzIHdpZHRoL2hlaWdodHMg Ki8KIAljcnRjX2NvdW50ID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2Nv dW50OyBpKyspIHsKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZV9zZXQsIGNsaWVu dCkgewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZGVzaXJlZF9tb2RlOwotCQlzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICptb2RlX3NldDsKIAkJaW50IHgsIHksIGo7CiAJCS8qIGluIGNhc2Ugb2Yg dGlsZSBncm91cCwgYXJlIHdlIHRoZSBsYXN0IHRpbGUgdmVydCBvciBob3Jpej8KIAkJICogSWYg bm8gdGlsZSBncm91cCB5b3UgYXJlIGFsd2F5cyB0aGUgbGFzdCBvbmUgYm90aCB2ZXJ0aWNhbGx5 CkBAIC0yMDMxLDcgKzE5OTUsNiBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2Zi X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCSAqLwogCQlib29sIGxh c3R2ID0gdHJ1ZSwgbGFzdGggPSB0cnVlOwogCi0JCW1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0 Y19pbmZvW2ldLm1vZGVfc2V0OwogCQlkZXNpcmVkX21vZGUgPSBtb2RlX3NldC0+bW9kZTsKIAog CQlpZiAoIWRlc2lyZWRfbW9kZSkKQEAgLTIwNjEsNiArMjAyNCw3IEBAIHN0YXRpYyBpbnQgZHJt X2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciwKIAkJaWYgKGxhc3R2KQogCQkJc2l6ZXMuZmJfaGVpZ2h0ID0gbWluX3QodTMyLCBkZXNpcmVk X21vZGUtPnZkaXNwbGF5ICsgeSwgc2l6ZXMuZmJfaGVpZ2h0KTsKIAl9CisJbXV0ZXhfdW5sb2Nr KCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwogCiAJaWYgKGNydGNfY291bnQgPT0gMCB8fCBzaXpl cy5mYl93aWR0aCA9PSAtMSB8fCBzaXplcy5mYl9oZWlnaHQgPT0gLTEpIHsKIAkJRFJNX0lORk8o IkNhbm5vdCBmaW5kIGFueSBjcnRjIG9yIHNpemVzXG4iKTsKQEAgLTIyOTIsNyArMjI1Niw3IEBA IHN0YXRpYyBib29sIGRybV90YXJnZXRfY2xvbmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIsCiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtdF9tb2RlLCAqbW9kZTsKIAogCS8q IG9ubHkgY29udGVtcGxhdGUgY2xvbmluZyBpbiB0aGUgc2luZ2xlIGNydGMgY2FzZSAqLwotCWlm IChmYl9oZWxwZXItPmNydGNfY291bnQgPiAxKQorCWlmIChmYl9oZWxwZXItPmRldi0+bW9kZV9j b25maWcubnVtX2NydGMgPiAxKQogCQlyZXR1cm4gZmFsc2U7CiAKIAljb3VudCA9IDA7CkBAIC0y NDgxLDE1ICsyNDQ1LDE3IEBAIHN0YXRpYyBib29sIGNvbm5lY3Rvcl9oYXNfcG9zc2libGVfY3J0 YyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogfQogCiBzdGF0aWMgaW50IGRybV9w aWNrX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkgIHN0cnVjdCBk cm1fZmJfaGVscGVyX2NydGMgKipiZXN0X2NydGNzLAorCQkJICBzdHJ1Y3QgZHJtX2NydGMgKipi ZXN0X2NydGNzLAogCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzLAogCQkJICBp bnQgbiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotCWludCBjLCBvOworCXN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7CiAJaW50IG15X3Njb3JlLCBiZXN0X3Njb3JlLCBzY29yZTsKLQlz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsICpjcnRjOworCXN0cnVjdCBkcm1fY3J0 YyAqKmNydGNzLCAqY3J0YzsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwogCXN0cnVj dCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVyX2Nvbm47CisJaW50IG87CiAKIAlp ZiAobiA9PSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCkKIAkJcmV0dXJuIDA7CkBAIC0yNTAy LDggKzI0NjgsNyBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsCiAJaWYgKG1vZGVzW25dID09IE5VTEwpCiAJCXJldHVybiBiZXN0X3Nj b3JlOwogCi0JY3J0Y3MgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LAotCQkJ c2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKiksIEdGUF9LRVJORUwpOworCWNydGNz ID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwgc2l6ZW9mKCpjcnRjcyksIEdG UF9LRVJORUwpOwogCWlmICghY3J0Y3MpCiAJCXJldHVybiBiZXN0X3Njb3JlOwogCkBAIC0yNTE5 LDExICsyNDg0LDEwIEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tfY3J0Y3Moc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlciwKIAkgKiBzZWxlY3QgYSBjcnRjIGZvciB0aGlzIGNvbm5lY3RvciBh bmQgdGhlbiBhdHRlbXB0IHRvIGNvbmZpZ3VyZQogCSAqIHJlbWFpbmluZyBjb25uZWN0b3JzCiAJ ICovCi0JZm9yIChjID0gMDsgYyA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgYysrKSB7Ci0JCWNy dGMgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9bY107CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rl c2V0KG1vZGVzZXQsIGNsaWVudCkgeworCQljcnRjID0gbW9kZXNldC0+Y3J0YzsKIAotCQlpZiAo IWNvbm5lY3Rvcl9oYXNfcG9zc2libGVfY3J0Yyhjb25uZWN0b3IsCi0JCQkJCQkgY3J0Yy0+bW9k ZV9zZXQuY3J0YykpCisJCWlmICghY29ubmVjdG9yX2hhc19wb3NzaWJsZV9jcnRjKGNvbm5lY3Rv ciwgY3J0YykpCiAJCQljb250aW51ZTsKIAogCQlmb3IgKG8gPSAwOyBvIDwgbjsgbysrKQpAQCAt MjUzMiw3ICsyNDk2LDcgQEAgc3RhdGljIGludCBkcm1fcGlja19jcnRjcyhzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLAogCiAJCWlmIChvIDwgbikgewogCQkJLyogaWdub3JlIGNsb25p bmcgdW5sZXNzIG9ubHkgYSBzaW5nbGUgY3J0YyAqLwotCQkJaWYgKGZiX2hlbHBlci0+Y3J0Y19j b3VudCA+IDEpCisJCQlpZiAoZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjID4g MSkKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKCFkcm1fbW9kZV9lcXVhbChtb2Rlc1tvXSwgbW9k ZXNbbl0pKQpAQCAtMjU0MCwxNCArMjUwNCwxMyBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCX0KIAogCQljcnRjc1tuXSA9IGNy dGM7Ci0JCW1lbWNweShjcnRjcywgYmVzdF9jcnRjcywgbiAqIHNpemVvZihzdHJ1Y3QgZHJtX2Zi X2hlbHBlcl9jcnRjICopKTsKKwkJbWVtY3B5KGNydGNzLCBiZXN0X2NydGNzLCBuICogc2l6ZW9m KCpjcnRjcykpOwogCQlzY29yZSA9IG15X3Njb3JlICsgZHJtX3BpY2tfY3J0Y3MoZmJfaGVscGVy LCBjcnRjcywgbW9kZXMsIG4gKyAxLAogCQkJCQkJICB3aWR0aCwgaGVpZ2h0KTsKIAkJaWYgKHNj b3JlID4gYmVzdF9zY29yZSkgewogCQkJYmVzdF9zY29yZSA9IHNjb3JlOwogCQkJbWVtY3B5KGJl c3RfY3J0Y3MsIGNydGNzLAotCQkJICAgICAgIGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50ICoK LQkJCSAgICAgICBzaXplb2Yoc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKSk7CisJCQkgICAg ICAgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQgKiBzaXplb2YoKmNydGNzKSk7CiAJCX0KIAl9 CiAKQEAgLTI1NTUsMjEgKzI1MTgsOSBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNzKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJcmV0dXJuIGJlc3Rfc2NvcmU7CiB9CiAKLXN0 YXRpYyBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoKLWRybV9mYl9oZWxwZXJfY3J0YyhzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCi17Ci0J aW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspCi0J CWlmIChmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjID09IGNydGMpCi0JCQly ZXR1cm4gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldOwotCi0JcmV0dXJuIE5VTEw7Ci19Ci0KIC8q IFRyeSB0byByZWFkIHRoZSBCSU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0IGZv ciB0aGUgaW5pdGlhbCBjb25maWcgKi8KIHN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfZmlybXdh cmVfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkJCSAgc3RydWN0 IGRybV9mYl9oZWxwZXJfY3J0YyAqKmNydGNzLAorCQkJCQkgIHN0cnVjdCBkcm1fY3J0YyAqKmNy dGNzLAogCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCiAJCQkJCSAgc3Ry dWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCiAJCQkJCSAgYm9vbCAqZW5hYmxlZCwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMjYwNSw3ICsyNTU2LDcgQEAgc3RhdGljIGJvb2wgZHJtX2Zi X2hlbHBlcl9maXJtd2FyZV9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwK IAkJc3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmYl9jb25uOwogCQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Ci0J CXN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKm5ld19jcnRjOworCQlzdHJ1Y3QgZHJtX2NydGMg Km5ld19jcnRjOwogCiAJCWZiX2Nvbm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwog CQljb25uZWN0b3IgPSBmYl9jb25uLT5jb25uZWN0b3I7CkBAIC0yNjQ3LDcgKzI1OTgsNyBAQCBz dGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyLAogCiAJCW51bV9jb25uZWN0b3JzX2VuYWJsZWQrKzsKIAotCQluZXdf Y3J0YyA9IGRybV9mYl9oZWxwZXJfY3J0YyhmYl9oZWxwZXIsIGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMpOworCQluZXdfY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7CiAKIAkJLyoKIAkJICog TWFrZSBzdXJlIHdlJ3JlIG5vdCB0cnlpbmcgdG8gZHJpdmUgbXVsdGlwbGUgY29ubmVjdG9ycwpA QCAtMjc0NywxMCArMjY5OCwxMSBAQCBzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2Zpcm13YXJl X2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogc3RhdGljIHZvaWQgZHJt X3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkgICAgdTMy IHdpZHRoLCB1MzIgaGVpZ2h0KQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0g JmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXIt PmRldjsKLQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3M7CiAJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKiptb2RlczsKIAlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0czsKKwlz dHJ1Y3QgZHJtX2NydGMgKipjcnRjczsKIAlib29sICplbmFibGVkOwogCWludCBpOwogCkBAIC0y NzU4LDggKzI3MTAsNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwKIAkvKiBwcmV2ZW50IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9u IG9mIGNvbm5lY3Rvcl9jb3VudCBieSBob3RwbHVnICovCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgm ZmJfaGVscGVyLT5sb2NrKTsKIAotCWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rv cl9jb3VudCwKLQkJCXNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICopLCBHRlBfS0VS TkVMKTsKKwljcnRjcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQsIHNpemVv ZigqY3J0Y3MpLCBHRlBfS0VSTkVMKTsKIAltb2RlcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25u ZWN0b3JfY291bnQsCiAJCQlzaXplb2Yoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiksIEdGUF9L RVJORUwpOwogCW9mZnNldHMgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LApA QCAtMjc3MSw2ICsyNzIyLDggQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCWdvdG8gb3V0OwogCX0KIAorCW11dGV4X2xvY2so JmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisKIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmRldi0+ bW9kZV9jb25maWcubXV0ZXgpOwogCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9t b2RlcyhmYl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCiAJCURSTV9ERUJVR19LTVMoIk5v IGNvbm5lY3RvcnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGggbW9kZXNcbiIpOwpAQCAtMjc5NSwy NCArMjc0OCwyNCBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlciwKIAl9CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwogCi0JLyogbmVlZCB0byBzZXQgdGhlIG1vZGVzZXRzIHVwIGhlcmUg Zm9yIHVzZSBsYXRlciAqLwotCS8qIGZpbGwgb3V0IHRoZSBjb25uZWN0b3I8LT5jcnRjIG1hcHBp bmdzIGludG8gdGhlIG1vZGVzZXRzICovCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0 Y19jb3VudDsgaSsrKQotCQlkcm1fZmJfaGVscGVyX21vZGVzZXRfcmVsZWFzZShmYl9oZWxwZXIs Ci0JCQkJCSAgICAgICZmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldCk7CisJZHJtX2Ns aWVudF9tb2Rlc2V0X3JlbGVhc2UoY2xpZW50KTsKIAogCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hf Y29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSA9IG1vZGVzW2ldOwotCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpmYl9jcnRjID0gY3J0 Y3NbaV07CisJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNzW2ldOwogCQlzdHJ1Y3QgZHJt X2ZiX29mZnNldCAqb2Zmc2V0ID0gJm9mZnNldHNbaV07CiAKLQkJaWYgKG1vZGUgJiYgZmJfY3J0 YykgewotCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCA9ICZmYl9jcnRjLT5tb2RlX3Nl dDsKKwkJaWYgKG1vZGUgJiYgY3J0YykgeworCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNl dCA9IGRybV9jbGllbnRfZmluZF9tb2Rlc2V0KGNsaWVudCwgY3J0Yyk7CiAJCQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yID0KIAkJCQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ld LT5jb25uZWN0b3I7CiAKIAkJCURSTV9ERUJVR19LTVMoImRlc2lyZWQgbW9kZSAlcyBzZXQgb24g Y3J0YyAlZCAoJWQsJWQpXG4iLAotCQkJCSAgICAgIG1vZGUtPm5hbWUsIGZiX2NydGMtPm1vZGVf c2V0LmNydGMtPmJhc2UuaWQsIG9mZnNldC0+eCwgb2Zmc2V0LT55KTsKKwkJCQkgICAgICBtb2Rl LT5uYW1lLCBjcnRjLT5iYXNlLmlkLCBvZmZzZXQtPngsIG9mZnNldC0+eSk7CisKKwkJCWlmIChX QVJOX09OX09OQ0UobW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMgPT0gRFJNX0NMSUVOVF9NQVhfQ0xP TkVEX0NPTk5FQ1RPUlMgfHwKKwkJCQkJIChkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjID4gMSAm JiBtb2Rlc2V0LT5udW1fY29ubmVjdG9ycyA9PSAxKSkpCisJCQkJYnJlYWs7CiAKIAkJCW1vZGVz ZXQtPm1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2LCBtb2RlKTsKIAkJCWRybV9jb25uZWN0 b3JfZ2V0KGNvbm5lY3Rvcik7CkBAIC0yODIxLDYgKzI3NzQsOCBAQCBzdGF0aWMgdm9pZCBkcm1f c2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCW1vZGVzZXQt PnkgPSBvZmZzZXQtPnk7CiAJCX0KIAl9CisKKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNl dF9tdXRleCk7CiBvdXQ6CiAJa2ZyZWUoY3J0Y3MpOwogCWtmcmVlKG1vZGVzKTsKQEAgLTI4Mzcs MTMgKzI3OTIsMTQgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCiAgKi8KIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjc19mYihz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogeworCXN0cnVjdCBkcm1fY2xpZW50X2Rl diAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBmYl9pbmZvICppbmZvID0g ZmJfaGVscGVyLT5mYmRldjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24sIHN3X3JvdGF0aW9ucyA9 IDA7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlpbnQgaTsKIAotCWZvciAoaSA9 IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykgewotCQlzdHJ1Y3QgZHJtX21vZGVf c2V0ICptb2Rlc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OwotCisJbXV0 ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21v ZGVzZXQobW9kZXNldCwgY2xpZW50KSB7CiAJCWlmICghbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMp CiAJCQljb250aW51ZTsKIApAQCAtMjg1NSw2ICsyODExLDcgQEAgc3RhdGljIHZvaWQgZHJtX3Nl dHVwX2NydGNzX2ZiKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJCWVsc2UKIAkJ CXN3X3JvdGF0aW9ucyB8PSByb3RhdGlvbjsKIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1v ZGVzZXRfbXV0ZXgpOwogCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmln Lm11dGV4KTsKIAlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkp IHsKQEAgLTMwNzEsOCArMzAyOCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9ob3Rw bHVnX2V2ZW50KTsKICAqIEBmdW5jczogZmJkZXYgaGVscGVyIGZ1bmN0aW9ucwogICogQHByZWZl cnJlZF9icHA6IFByZWZlcnJlZCBiaXRzIHBlciBwaXhlbCBmb3IgdGhlIGRldmljZS4KICAqICAg ICAgICAgICAgICAgICBAZGV2LT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggaXMgdXNlZCBp ZiB0aGlzIGlzIHplcm8uCi0gKiBAbWF4X2Nvbm5fY291bnQ6IE1heGltdW0gbnVtYmVyIG9mIGNv bm5lY3RvcnMuCi0gKiAgICAgICAgICAgICAgICAgIEBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25u ZWN0b3IgaXMgdXNlZCBpZiB0aGlzIGlzIHplcm8uCisgKiBAbWF4X2Nvbm5fY291bnQ6IE1heGlt dW0gbnVtYmVyIG9mIGNvbm5lY3RvcnMgKG5vdCB1c2VkKQogICoKICAqIFRoaXMgZnVuY3Rpb24g c2V0cyB1cCBmYmRldiBlbXVsYXRpb24gYW5kIHJlZ2lzdGVycyBmYmRldiBmb3IgYWNjZXNzIGJ5 CiAgKiB1c2Vyc3BhY2UuIElmIGFsbCBjb25uZWN0b3JzIGFyZSBkaXNjb25uZWN0ZWQsIHNldHVw IGlzIGRlZmVycmVkIHRvIHRoZSBuZXh0CkBAIC0zMTAwLDE2ICszMDU2LDkgQEAgaW50IGRybV9m Yl9oZWxwZXJfZmJkZXZfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoIXByZWZl cnJlZF9icHApCiAJCXByZWZlcnJlZF9icHAgPSAzMjsKIAotCWlmICghbWF4X2Nvbm5fY291bnQp Ci0JCW1heF9jb25uX2NvdW50ID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwotCWlm ICghbWF4X2Nvbm5fY291bnQpIHsKLQkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwgImZiZGV2OiBO byBjb25uZWN0b3JzXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCiAJZHJtX2ZiX2hlbHBl cl9wcmVwYXJlKGRldiwgZmJfaGVscGVyLCBmdW5jcyk7CiAKLQlyZXQgPSBkcm1fZmJfaGVscGVy X2luaXQoZGV2LCBmYl9oZWxwZXIsIG1heF9jb25uX2NvdW50KTsKKwlyZXQgPSBkcm1fZmJfaGVs cGVyX2luaXQoZGV2LCBmYl9oZWxwZXIsIDApOwogCWlmIChyZXQgPCAwKSB7CiAJCURSTV9ERVZf RVJST1IoZGV2LT5kZXYsICJmYmRldjogRmFpbGVkIHRvIGluaXRpYWxpemUgKHJldD0lZClcbiIs IHJldCk7CiAJCXJldHVybiByZXQ7CkBAIC0zNDIyLDcgKzMzNzEsNyBAQCBzdGF0aWMgaW50IGRy bV9mYmRldl9jbGllbnRfaG90cGx1ZyhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKIAog CWRybV9mYl9oZWxwZXJfcHJlcGFyZShkZXYsIGZiX2hlbHBlciwgJmRybV9mYl9oZWxwZXJfZ2Vu ZXJpY19mdW5jcyk7CiAKLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoZGV2LCBmYl9oZWxwZXIs IGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvcik7CisJcmV0ID0gZHJtX2ZiX2hlbHBlcl9p bml0KGRldiwgZmJfaGVscGVyLCAwKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKIApkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5o CmluZGV4IDI2OGIyY2YwMDUyYS4uODdiZTlhZWIxZmUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9kcm1fY2xpZW50LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCkBAIC0zLDggKzMs MTIgQEAKICNpZm5kZWYgX0RSTV9DTElFTlRfSF8KICNkZWZpbmUgX0RSTV9DTElFTlRfSF8KIAor I2luY2x1ZGUgPGxpbnV4L2xvY2tkZXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKwogc3Ry dWN0IGRybV9jbGllbnRfZGV2Owogc3RydWN0IGRybV9kZXZpY2U7CiBzdHJ1Y3QgZHJtX2ZpbGU7 CkBAIC0xMyw2ICsxNyw4IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKIHN0cnVjdCBkcm1fbWlu b3I7CiBzdHJ1Y3QgbW9kdWxlOwogCisjZGVmaW5lIERSTV9DTElFTlRfTUFYX0NMT05FRF9DT05O RUNUT1JTCTgKKwogLyoqCiAgKiBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAtIERSTSBjbGllbnQg Y2FsbGJhY2tzCiAgKi8KQEAgLTg1LDYgKzkxLDE2IEBAIHN0cnVjdCBkcm1fY2xpZW50X2RldiB7 CiAJICogQGZpbGU6IERSTSBmaWxlCiAJICovCiAJc3RydWN0IGRybV9maWxlICpmaWxlOworCisJ LyoqCisJICogQG1vZGVzZXRfbXV0ZXg6IFByb3RlY3RzIEBtb2Rlc2V0cy4KKwkgKi8KKwlzdHJ1 Y3QgbXV0ZXggbW9kZXNldF9tdXRleDsKKworCS8qKgorCSAqIEBtb2Rlc2V0czogQ1JUQyBjb25m aWd1cmF0aW9ucworCSAqLworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXRzOwogfTsKIAog aW50IGRybV9jbGllbnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2Ns aWVudF9kZXYgKmNsaWVudCwKQEAgLTEzNSw2ICsxNTEsMjAgQEAgc3RydWN0IGRybV9jbGllbnRf YnVmZmVyICoKIGRybV9jbGllbnRfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBmb3JtYXQpOwogdm9pZCBk cm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1 ZmZlcik7CiAKK2ludCBkcm1fY2xpZW50X21vZGVzZXRfY3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50KTsKK3ZvaWQgZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoc3RydWN0IGRybV9j bGllbnRfZGV2ICpjbGllbnQpOwordm9pZCBkcm1fY2xpZW50X21vZGVzZXRfcmVsZWFzZShzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7CitzdHJ1Y3QgZHJtX21vZGVfc2V0ICpkcm1fY2xp ZW50X2ZpbmRfbW9kZXNldChzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgc3RydWN0IGRy bV9jcnRjICpjcnRjKTsKKworLyoqCisgKiBkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQoKSAt IEl0ZXJhdGUgb3ZlciBjbGllbnQgbW9kZXNldHMKKyAqIEBtb2Rlc2V0OiAmZHJtX21vZGVfc2V0 IGxvb3AgY3Vyc29yCisgKiBAY2xpZW50OiBEUk0gY2xpZW50CisgKi8KKyNkZWZpbmUgZHJtX2Ns aWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVudCkgXAorCWZvciAoKHsgbG9ja2Rl cF9hc3NlcnRfaGVsZCgmKGNsaWVudCktPm1vZGVzZXRfbXV0ZXgpOyB9KSwgXAorCSAgICAgbW9k ZXNldCA9IChjbGllbnQpLT5tb2Rlc2V0czsgbW9kZXNldC0+Y3J0YzsgbW9kZXNldCsrKQorCiBp bnQgZHJtX2NsaWVudF9kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAqbWlub3IpOwogCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUv ZHJtL2RybV9mYl9oZWxwZXIuaAppbmRleCAyYWYxYzZkM2UxNDcuLjZiMzM0ZjRkOGEyMiAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9mYl9oZWxwZXIuaApAQCAtNDcsMTAgKzQ3LDYgQEAgc3RydWN0IGRybV9mYl9vZmZzZXQgewog CWludCB4LCB5OwogfTsKIAotc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyB7Ci0Jc3RydWN0IGRy bV9tb2RlX3NldCBtb2RlX3NldDsKLX07Ci0KIC8qKgogICogc3RydWN0IGRybV9mYl9oZWxwZXJf c3VyZmFjZV9zaXplIC0gZGVzY3JpYmVzIGZiZGV2IHNpemUgYW5kIHNjYW5vdXQgc3VyZmFjZSBz aXplCiAgKiBAZmJfd2lkdGg6IGZiZGV2IHdpZHRoCkBAIC0xMDksOCArMTA1LDYgQEAgc3RydWN0 IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yIHsKICAqIHN0cnVjdCBkcm1fZmJfaGVscGVyIC0gbWFp biBzdHJ1Y3R1cmUgdG8gZW11bGF0ZSBmYmRldiBvbiB0b3Agb2YgS01TCiAgKiBAZmI6IFNjYW5v dXQgZnJhbWVidWZmZXIgb2JqZWN0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0gKiBAY3J0Y19jb3Vu dDogbnVtYmVyIG9mIHBvc3NpYmxlIENSVENzCi0gKiBAY3J0Y19pbmZvOiBwZXItQ1JUQyBoZWxw ZXIgc3RhdGUgKG1vZGUsIHgveSBvZmZzZXQsIGV0YykKICAqIEBjb25uZWN0b3JfY291bnQ6IG51 bWJlciBvZiBjb25uZWN0ZWQgY29ubmVjdG9ycwogICogQGNvbm5lY3Rvcl9pbmZvX2FsbG9jX2Nv dW50OiBzaXplIG9mIGNvbm5lY3Rvcl9pbmZvCiAgKiBAZnVuY3M6IGRyaXZlciBjYWxsYmFja3Mg Zm9yIGZiIGhlbHBlcgpAQCAtMTQ0LDggKzEzOCw2IEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyIHsK IAogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7 Ci0JaW50IGNydGNfY291bnQ7Ci0Jc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqY3J0Y19pbmZv OwogCWludCBjb25uZWN0b3JfY291bnQ7CiAJaW50IGNvbm5lY3Rvcl9pbmZvX2FsbG9jX2NvdW50 OwogCS8qKgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWw=