From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [PATCH 2/3] mm/mmu_notifier: use structure for invalidate_range_start/end calls Date: Mon, 3 Dec 2018 15:18:16 -0500 Message-ID: <20181203201817.10759-3-jglisse@redhat.com> References: <20181203201817.10759-1-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 32A7E89BAF for ; Mon, 3 Dec 2018 20:18:37 +0000 (UTC) In-Reply-To: <20181203201817.10759-1-jglisse@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-mm@kvack.org Cc: Ralph Campbell , Jan Kara , kvm@vger.kernel.org, Matthew Wilcox , linux-rdma@vger.kernel.org, John Hubbard , Felix Kuehling , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Michal Hocko , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Christian Koenig , Ross Zwisler , linux-fsdevel@vger.kernel.org, Paolo Bonzini , Andrew Morton , Dan Williams List-Id: dri-devel@lists.freedesktop.org RnJvbTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CgpUbyBhdm9pZCBoYXZp bmcgdG8gY2hhbmdlIG1hbnkgY2FsbCBzaXRlcyBldmVyeXRpbWUgd2Ugd2FudCB0byBhZGQgYQpw YXJhbWV0ZXIgdXNlIGEgc3RydWN0dXJlIHRvIGdyb3VwIGFsbCBwYXJhbWV0ZXJzIGZvciB0aGUg bW11X25vdGlmaWVyCmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQvZW5kIGNha2tzLiBObyBmdW5jdGlv bmFsIGNoYW5nZXMgd2l0aCB0aGlzCnBhdGNoLgoKU2lnbmVkLW9mZi1ieTogSsOpcsO0bWUgR2xp c3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZv dW5kYXRpb24ub3JnPgpDYzogTWF0dGhldyBXaWxjb3ggPG1hd2lsY294QG1pY3Jvc29mdC5jb20+ CkNjOiBSb3NzIFp3aXNsZXIgPHp3aXNsZXJAa2VybmVsLm9yZz4KQ2M6IEphbiBLYXJhIDxqYWNr QHN1c2UuY3o+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6 IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CkNjOiBSYWRpbSBLcsSNbcOhxZkg PHJrcmNtYXJAcmVkaGF0LmNvbT4KQ2M6IE1pY2hhbCBIb2NrbyA8bWhvY2tvQGtlcm5lbC5vcmc+ CkNjOiBDaHJpc3RpYW4gS29lbmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CkNjOiBGZWxp eCBLdWVobGluZyA8ZmVsaXgua3VlaGxpbmdAYW1kLmNvbT4KQ2M6IFJhbHBoIENhbXBiZWxsIDxy Y2FtcGJlbGxAbnZpZGlhLmNvbT4KQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRAbnZpZGlhLmNv bT4KQ2M6IGt2bUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKQ2M6IGxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1mc2RldmVsQHZn ZXIua2VybmVsLm9yZwotLS0KIGZzL2RheC5jICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysr LQogZnMvcHJvYy90YXNrX21tdS5jICAgICAgICAgICB8ICAgOSArKy0KIGluY2x1ZGUvbGludXgv bW0uaCAgICAgICAgICAgfCAgIDQgKy0KIGluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmggfCAg NTkgKysrKysrKysrLS0tLS0tLS0tLQoga2VybmVsL2V2ZW50cy91cHJvYmVzLmMgICAgICB8ICAx MiArKy0tCiBtbS9odWdlX21lbW9yeS5jICAgICAgICAgICAgIHwgIDU0ICsrKysrKysrKystLS0t LS0tLQogbW0vaHVnZXRsYi5jICAgICAgICAgICAgICAgICB8ICA1OSArKysrKysrKysrLS0tLS0t LS0tCiBtbS9raHVnZXBhZ2VkLmMgICAgICAgICAgICAgIHwgIDEyICsrLS0KIG1tL2tzbS5jICAg ICAgICAgICAgICAgICAgICAgfCAgMjQgKysrKy0tLS0KIG1tL21hZHZpc2UuYyAgICAgICAgICAg ICAgICAgfCAgMjEgKysrLS0tLQogbW0vbWVtb3J5LmMgICAgICAgICAgICAgICAgICB8IDEwNyAr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogbW0vbWlncmF0ZS5jICAgICAgICAg ICAgICAgICB8ICAyOCArKysrLS0tLS0KIG1tL21tdV9ub3RpZmllci5jICAgICAgICAgICAgfCAg MzUgKysrLS0tLS0tLS0tCiBtbS9tcHJvdGVjdC5jICAgICAgICAgICAgICAgIHwgIDE2ICsrKyst LQogbW0vbXJlbWFwLmMgICAgICAgICAgICAgICAgICB8ICAxMyArKystLQogbW0vb29tX2tpbGwu YyAgICAgICAgICAgICAgICB8ICAxOSArKysrLS0tCiBtbS9ybWFwLmMgICAgICAgICAgICAgICAg ICAgIHwgIDMyICsrKysrKystLS0tCiAxNyBmaWxlcyBjaGFuZ2VkLCAyNzYgaW5zZXJ0aW9ucygr KSwgMjM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2RheC5jIGIvZnMvZGF4LmMKaW5k ZXggOWJjY2U4OWVhMThlLi5lMjI1MDhlZTE5ZWMgMTAwNjQ0Ci0tLSBhL2ZzL2RheC5jCisrKyBi L2ZzL2RheC5jCkBAIC03NTgsNyArNzU4LDEwIEBAIHN0YXRpYyB2b2lkIGRheF9lbnRyeV9ta2Ns ZWFuKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBwZ29mZl90IGluZGV4LAogCiAJaV9t bWFwX2xvY2tfcmVhZChtYXBwaW5nKTsKIAl2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwg Jm1hcHBpbmctPmlfbW1hcCwgaW5kZXgsIGluZGV4KSB7Ci0JCXVuc2lnbmVkIGxvbmcgYWRkcmVz cywgc3RhcnQsIGVuZDsKKwkJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKKwkJdW5z aWduZWQgbG9uZyBhZGRyZXNzOworCisJCXJhbmdlLm1tID0gdm1hLT52bV9tbTsKIAogCQljb25k X3Jlc2NoZWQoKTsKIApAQCAtNzcyLDcgKzc3NSw4IEBAIHN0YXRpYyB2b2lkIGRheF9lbnRyeV9t a2NsZWFuKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBwZ29mZl90IGluZGV4LAogCQkg KiBjYWxsIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCkgb24gb3VyIGJlaGFs ZgogCQkgKiBiZWZvcmUgdGFraW5nIGFueSBsb2NrLgogCQkgKi8KLQkJaWYgKGZvbGxvd19wdGVf cG1kKHZtYS0+dm1fbW0sIGFkZHJlc3MsICZzdGFydCwgJmVuZCwgJnB0ZXAsICZwbWRwLCAmcHRs KSkKKwkJaWYgKGZvbGxvd19wdGVfcG1kKHZtYS0+dm1fbW0sIGFkZHJlc3MsICZyYW5nZSwKKwkJ CQkgICAmcHRlcCwgJnBtZHAsICZwdGwpKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTgxNCw3 ICs4MTgsNyBAQCBzdGF0aWMgdm9pZCBkYXhfZW50cnlfbWtjbGVhbihzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZywgcGdvZmZfdCBpbmRleCwKIAkJCXB0ZV91bm1hcF91bmxvY2socHRlcCwg cHRsKTsKIAkJfQogCi0JCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCh2bWEtPnZt X21tLCBzdGFydCwgZW5kKTsKKwkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZy YW5nZSk7CiAJfQogCWlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBh L2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuYwppbmRleCA0N2MzNzY0YzQ2 OWIuLjUzZDYyNTkyNTY2OSAxMDA2NDQKLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jCisrKyBiL2Zz L3Byb2MvdGFza19tbXUuYwpAQCAtMTA5Niw2ICsxMDk2LDcgQEAgc3RhdGljIHNzaXplX3QgY2xl YXJfcmVmc193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwK IAkJcmV0dXJuIC1FU1JDSDsKIAltbSA9IGdldF90YXNrX21tKHRhc2spOwogCWlmIChtbSkgewor CQlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCQlzdHJ1Y3QgY2xlYXJfcmVmc19w cml2YXRlIGNwID0gewogCQkJLnR5cGUgPSB0eXBlLAogCQl9OwpAQCAtMTEzOSwxMSArMTE0MCwx NSBAQCBzdGF0aWMgc3NpemVfdCBjbGVhcl9yZWZzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBj b25zdCBjaGFyIF9fdXNlciAqYnVmLAogCQkJCWRvd25ncmFkZV93cml0ZSgmbW0tPm1tYXBfc2Vt KTsKIAkJCQlicmVhazsKIAkJCX0KLQkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KG1tLCAwLCAtMSk7CisKKwkJCXJhbmdlLnN0YXJ0ID0gMDsKKwkJCXJhbmdlLmVuZCA9IC0x VUw7CisJCQlyYW5nZS5tbSA9IG1tOworCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnQoJnJhbmdlKTsKIAkJfQogCQl3YWxrX3BhZ2VfcmFuZ2UoMCwgbW0tPmhpZ2hlc3Rfdm1f ZW5kLCAmY2xlYXJfcmVmc193YWxrKTsKIAkJaWYgKHR5cGUgPT0gQ0xFQVJfUkVGU19TT0ZUX0RJ UlRZKQotCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCAwLCAtMSk7CisJ CQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAkJdGxiX2Zpbmlz aF9tbXUoJnRsYiwgMCwgLTEpOwogCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogb3V0X21tOgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4 IDU0MTFkZTkzYTM2My4uZTdiNmYyYjMwNzEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21t LmgKKysrIGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0xMzk3LDYgKzEzOTcsOCBAQCBzdHJ1Y3Qg bW1fd2FsayB7CiAJdm9pZCAqcHJpdmF0ZTsKIH07CiAKK3N0cnVjdCBtbXVfbm90aWZpZXJfcmFu Z2U7CisKIGludCB3YWxrX3BhZ2VfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBs b25nIGVuZCwKIAkJc3RydWN0IG1tX3dhbGsgKndhbGspOwogaW50IHdhbGtfcGFnZV92bWEoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBtbV93YWxrICp3YWxrKTsKQEAgLTE0MDUs NyArMTQwNyw3IEBAIHZvaWQgZnJlZV9wZ2RfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwg dW5zaWduZWQgbG9uZyBhZGRyLAogaW50IGNvcHlfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0 ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyYywKIAkJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKTsKIGludCBmb2xsb3dfcHRlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQg bG9uZyBhZGRyZXNzLAotCQkJICAgICB1bnNpZ25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9u ZyAqZW5kLAorCQkgCSAgICAgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UsCiAJCQkg ICAgIHB0ZV90ICoqcHRlcHAsIHBtZF90ICoqcG1kcHAsIHNwaW5sb2NrX3QgKipwdGxwKTsKIGlu dCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCiAJdW5zaWduZWQgbG9uZyAqcGZuKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv bW11X25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oCmluZGV4IDM2OGYw YzFhMDQ5ZC4uY2JlZWNlOGU0N2Q0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tdV9ub3Rp Zmllci5oCisrKyBiL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgKQEAgLTIyMCwxMSArMjIw LDggQEAgZXh0ZXJuIGludCBfX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLAogCQkJCSAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKIGV4dGVybiB2b2lkIF9f bW11X25vdGlmaWVyX2NoYW5nZV9wdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQkJICAgICAg dW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCBwdGUpOwotZXh0ZXJuIGludCBfX21tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCSAg dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCi0JCQkJICBib29sIGJsb2Nr YWJsZSk7Ci1leHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChz dHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGxvbmcgZW5kLAorZXh0ZXJuIGludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKik7CitleHRlcm4gdm9pZCBfX21tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyLAog CQkJCSAgYm9vbCBvbmx5X2VuZCk7CiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFy dCwgdW5zaWduZWQgbG9uZyBlbmQpOwpAQCAtMjY4LDMzICsyNjUsMzcgQEAgc3RhdGljIGlubGlu ZSB2b2lkIG1tdV9ub3RpZmllcl9jaGFuZ2VfcHRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQlf X21tdV9ub3RpZmllcl9jaGFuZ2VfcHRlKG1tLCBhZGRyZXNzLCBwdGUpOwogfQogCi1zdGF0aWMg aW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1t X3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVu ZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7Ci0JaWYgKG1tX2hhc19ub3Rp ZmllcnMobW0pKQotCQlfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBz dGFydCwgZW5kLCB0cnVlKTsKKwlpZiAobW1faGFzX25vdGlmaWVycyhyYW5nZS0+bW0pKSB7CisJ CXJhbmdlLT5ibG9ja2FibGUgPSB0cnVlOworCQlfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0KHJhbmdlKTsKKwl9CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IG1tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25vbmJsb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAot CQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCitzdGF0aWMgaW5s aW5lIGludAorbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfbm9uYmxvY2soc3Ry dWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7Ci0JaWYgKG1tX2hhc19ub3RpZmllcnMo bW0pKQotCQlyZXR1cm4gX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwg c3RhcnQsIGVuZCwgZmFsc2UpOworCWlmIChtbV9oYXNfbm90aWZpZXJzKHJhbmdlLT5tbSkpIHsK KwkJcmFuZ2UtPmJsb2NrYWJsZSA9IGZhbHNlOworCQlyZXR1cm4gX19tbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9zdGFydChyYW5nZSk7CisJfQogCXJldHVybiAwOwogfQogCi1zdGF0aWMg aW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9z dHJ1Y3QgKm1tLAotCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQp CitzdGF0aWMgaW5saW5lIHZvaWQKK21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChz dHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKIHsKLQlpZiAobW1faGFzX25vdGlmaWVy cyhtbSkpCi0JCV9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCBzdGFydCwg ZW5kLCBmYWxzZSk7CisJaWYgKG1tX2hhc19ub3RpZmllcnMocmFuZ2UtPm1tKSkKKwkJX19tbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQocmFuZ2UsIGZhbHNlKTsKIH0KIAotc3RhdGlj IGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLAotCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9u ZyBlbmQpCitzdGF0aWMgaW5saW5lIHZvaWQKK21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X29ubHlfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewotCWlmIChtbV9o YXNfbm90aWZpZXJzKG1tKSkKLQkJX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQo bW0sIHN0YXJ0LCBlbmQsIHRydWUpOworCWlmIChtbV9oYXNfbm90aWZpZXJzKHJhbmdlLT5tbSkp CisJCV9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHJhbmdlLCB0cnVlKTsKIH0K IAogc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLApAQCAtNDU1LDI0ICs0NTYsMjQgQEAgc3RhdGljIGlubGluZSB2b2lk IG1tdV9ub3RpZmllcl9jaGFuZ2VfcHRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogewogfQogCi1z dGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3Ry dWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBs b25nIGVuZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7CiB9CiAKLXN0YXRp YyBpbmxpbmUgaW50IG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25vbmJsb2Nr KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu ZWQgbG9uZyBlbmQpCitzdGF0aWMgaW5saW5lIGludAorbW11X25vdGlmaWVyX2ludmFsaWRhdGVf cmFuZ2Vfc3RhcnRfbm9uYmxvY2soc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7 CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3N0YXRpYyBpbmxpbmUKK3ZvaWQgbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdl KQogewogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfb25seV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25nIHN0 YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFu Z2UpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jIGIva2VybmVs L2V2ZW50cy91cHJvYmVzLmMKaW5kZXggMzIyZTk3YmJiNDM3Li5hYTc5OTZjYTM2MWUgMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jCisrKyBiL2tlcm5lbC9ldmVudHMvdXByb2Jl cy5jCkBAIC0xNzEsMTEgKzE3MSwxMyBAQCBzdGF0aWMgaW50IF9fcmVwbGFjZV9wYWdlKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCS5hZGRyZXNzID0g YWRkciwKIAl9OwogCWludCBlcnI7Ci0JLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KLQljb25zdCB1 bnNpZ25lZCBsb25nIG1tdW5fc3RhcnQgPSBhZGRyOwotCWNvbnN0IHVuc2lnbmVkIGxvbmcgbW11 bl9lbmQgICA9IGFkZHIgKyBQQUdFX1NJWkU7CisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSBy YW5nZTsKIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7CiAKKwlyYW5nZS5zdGFydCA9IGFkZHI7 CisJcmFuZ2UuZW5kID0gYWRkciArIFBBR0VfU0laRTsKKwlyYW5nZS5tbSA9IG1tOworCiAJVk1f QlVHX09OX1BBR0UoUGFnZVRyYW5zSHVnZShvbGRfcGFnZSksIG9sZF9wYWdlKTsKIAogCWVyciA9 IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZShuZXdfcGFnZSwgdm1hLT52bV9tbSwgR0ZQX0tFUk5FTCwg Jm1lbWNnLApAQCAtMTg2LDcgKzE4OCw3IEBAIHN0YXRpYyBpbnQgX19yZXBsYWNlX3BhZ2Uoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkvKiBGb3IgdHJ5 X3RvX2ZyZWVfc3dhcCgpIGFuZCBtdW5sb2NrX3ZtYV9wYWdlKCkgYmVsb3cgKi8KIAlsb2NrX3Bh Z2Uob2xkX3BhZ2UpOwogCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0s IG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9z dGFydCgmcmFuZ2UpOwogCWVyciA9IC1FQUdBSU47CiAJaWYgKCFwYWdlX3ZtYV9tYXBwZWRfd2Fs aygmcHZtdykpIHsKIAkJbWVtX2Nncm91cF9jYW5jZWxfY2hhcmdlKG5ld19wYWdlLCBtZW1jZywg ZmFsc2UpOwpAQCAtMjIwLDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQgX19yZXBsYWNlX3BhZ2Uoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAogCWVyciA9IDA7 CiAgdW5sb2NrOgotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgbW11bl9z dGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgmcmFu Z2UpOwogCXVubG9ja19wYWdlKG9sZF9wYWdlKTsKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0 IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmMKaW5kZXggNjIyY2NlZDc0ZmQ5 Li4xYTdhMDU5ZGJmN2QgMTAwNjQ0Ci0tLSBhL21tL2h1Z2VfbWVtb3J5LmMKKysrIGIvbW0vaHVn ZV9tZW1vcnkuYwpAQCAtMTE0NCw4ICsxMTQ0LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZG9faHVn ZV9wbWRfd3BfcGFnZV9mYWxsYmFjayhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwKIAlpbnQgaTsKIAl2 bV9mYXVsdF90IHJldCA9IDA7CiAJc3RydWN0IHBhZ2UgKipwYWdlczsKLQl1bnNpZ25lZCBsb25n IG1tdW5fc3RhcnQ7CS8qIEZvciBtbXVfbm90aWZpZXJzICovCi0JdW5zaWduZWQgbG9uZyBtbXVu X2VuZDsJCS8qIEZvciBtbXVfbm90aWZpZXJzICovCisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5n ZSByYW5nZTsKIAogCXBhZ2VzID0ga21hbGxvY19hcnJheShIUEFHRV9QTURfTlIsIHNpemVvZihz dHJ1Y3QgcGFnZSAqKSwKIAkJCSAgICAgIEdGUF9LRVJORUwpOwpAQCAtMTE4Myw5ICsxMTgyLDEw IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX3dwX3BhZ2VfZmFsbGJhY2soc3RydWN0 IHZtX2ZhdWx0ICp2bWYsCiAJCWNvbmRfcmVzY2hlZCgpOwogCX0KIAotCW1tdW5fc3RhcnQgPSBo YWRkcjsKLQltbXVuX2VuZCAgID0gaGFkZHIgKyBIUEFHRV9QTURfU0laRTsKLQltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCh2bWEtPnZtX21tLCBtbXVuX3N0YXJ0LCBtbXVuX2Vu ZCk7CisJcmFuZ2Uuc3RhcnQgPSBoYWRkcjsKKwlyYW5nZS5lbmQgPSByYW5nZS5zdGFydCArIEhQ QUdFX1BNRF9TSVpFOworCXJhbmdlLm1tID0gdm1hLT52bV9tbTsKKwltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCiAJdm1mLT5wdGwgPSBwbWRfbG9jayh2bWEt PnZtX21tLCB2bWYtPnBtZCk7CiAJaWYgKHVubGlrZWx5KCFwbWRfc2FtZSgqdm1mLT5wbWQsIG9y aWdfcG1kKSkpCkBAIC0xMjMwLDggKzEyMzAsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkb19odWdl X3BtZF93cF9wYWdlX2ZhbGxiYWNrKHN0cnVjdCB2bV9mYXVsdCAqdm1mLAogCSAqIE5vIG5lZWQg dG8gZG91YmxlIGNhbGwgbW11X25vdGlmaWVyLT5pbnZhbGlkYXRlX3JhbmdlKCkgY2FsbGJhY2sg YXMKIAkgKiB0aGUgYWJvdmUgcG1kcF9odWdlX2NsZWFyX2ZsdXNoX25vdGlmeSgpIGRpZCBhbHJl YWR5IGNhbGwgaXQuCiAJICovCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9l bmQodm1hLT52bV9tbSwgbW11bl9zdGFydCwKLQkJCQkJCW1tdW5fZW5kKTsKKwltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9vbmx5X2VuZCgmcmFuZ2UpOwogCiAJcmV0IHw9IFZNX0ZBVUxU X1dSSVRFOwogCXB1dF9wYWdlKHBhZ2UpOwpAQCAtMTI0MSw3ICsxMjQwLDcgQEAgc3RhdGljIHZt X2ZhdWx0X3QgZG9faHVnZV9wbWRfd3BfcGFnZV9mYWxsYmFjayhzdHJ1Y3Qgdm1fZmF1bHQgKnZt ZiwKIAogb3V0X2ZyZWVfcGFnZXM6CiAJc3Bpbl91bmxvY2sodm1mLT5wdGwpOwotCW1tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCh2bWEtPnZtX21tLCBtbXVuX3N0YXJ0LCBtbXVuX2Vu ZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiAJZm9yIChp ID0gMDsgaSA8IEhQQUdFX1BNRF9OUjsgaSsrKSB7CiAJCW1lbWNnID0gKHZvaWQgKilwYWdlX3By aXZhdGUocGFnZXNbaV0pOwogCQlzZXRfcGFnZV9wcml2YXRlKHBhZ2VzW2ldLCAwKTsKQEAgLTEy NTgsOCArMTI1Nyw3IEBAIHZtX2ZhdWx0X3QgZG9faHVnZV9wbWRfd3BfcGFnZShzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZiwgcG1kX3Qgb3JpZ19wbWQpCiAJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMLCAq bmV3X3BhZ2U7CiAJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwogCXVuc2lnbmVkIGxvbmcgaGFk ZHIgPSB2bWYtPmFkZHJlc3MgJiBIUEFHRV9QTURfTUFTSzsKLQl1bnNpZ25lZCBsb25nIG1tdW5f c3RhcnQ7CS8qIEZvciBtbXVfbm90aWZpZXJzICovCi0JdW5zaWduZWQgbG9uZyBtbXVuX2VuZDsJ CS8qIEZvciBtbXVfbm90aWZpZXJzICovCisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5n ZTsKIAlnZnBfdCBodWdlX2dmcDsJCQkvKiBmb3IgYWxsb2NhdGlvbiBhbmQgY2hhcmdlICovCiAJ dm1fZmF1bHRfdCByZXQgPSAwOwogCkBAIC0xMzQ5LDkgKzEzNDcsMTAgQEAgdm1fZmF1bHRfdCBk b19odWdlX3BtZF93cF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBwbWRfdCBvcmlnX3BtZCkK IAkJCQkgICAgdm1hLCBIUEFHRV9QTURfTlIpOwogCV9fU2V0UGFnZVVwdG9kYXRlKG5ld19wYWdl KTsKIAotCW1tdW5fc3RhcnQgPSBoYWRkcjsKLQltbXVuX2VuZCAgID0gaGFkZHIgKyBIUEFHRV9Q TURfU0laRTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCh2bWEtPnZtX21t LCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJcmFuZ2Uuc3RhcnQgPSBoYWRkcjsKKwlyYW5nZS5l bmQgPSByYW5nZS5zdGFydCArIEhQQUdFX1BNRF9TSVpFOworCXJhbmdlLm1tID0gdm1hLT52bV9t bTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCiAJc3Bp bl9sb2NrKHZtZi0+cHRsKTsKIAlpZiAocGFnZSkKQEAgLTEzODYsOCArMTM4NSw3IEBAIHZtX2Zh dWx0X3QgZG9faHVnZV9wbWRfd3BfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgcG1kX3Qgb3Jp Z19wbWQpCiAJICogTm8gbmVlZCB0byBkb3VibGUgY2FsbCBtbXVfbm90aWZpZXItPmludmFsaWRh dGVfcmFuZ2UoKSBjYWxsYmFjayBhcwogCSAqIHRoZSBhYm92ZSBwbWRwX2h1Z2VfY2xlYXJfZmx1 c2hfbm90aWZ5KCkgZGlkIGFscmVhZHkgY2FsbCBpdC4KIAkgKi8KLQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9vbmx5X2VuZCh2bWEtPnZtX21tLCBtbXVuX3N0YXJ0LAotCQkJCQkgICAg ICAgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKCZy YW5nZSk7CiBvdXQ6CiAJcmV0dXJuIHJldDsKIG91dF91bmxvY2s6CkBAIC0yMDI5LDEzICsyMDI3 LDE3IEBAIHZvaWQgX19zcGxpdF9odWdlX3B1ZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwg cHVkX3QgKnB1ZCwKIHsKIAlzcGlubG9ja190ICpwdGw7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0g PSB2bWEtPnZtX21tOwotCXVuc2lnbmVkIGxvbmcgaGFkZHIgPSBhZGRyZXNzICYgSFBBR0VfUFVE X01BU0s7CisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKIAotCW1tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBoYWRkciwgaGFkZHIgKyBIUEFHRV9QVURfU0la RSk7CisJcmFuZ2Uuc3RhcnQgPSBhZGRyZXNzICYgSFBBR0VfUFVEX01BU0s7CisJcmFuZ2UuZW5k ID0gcmFuZ2Uuc3RhcnQgKyBIUEFHRV9QVURfU0laRTsKKwlyYW5nZS5tbSA9IG1tOworCisJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAlwdGwgPSBwdWRfbG9j ayhtbSwgcHVkKTsKIAlpZiAodW5saWtlbHkoIXB1ZF90cmFuc19odWdlKCpwdWQpICYmICFwdWRf ZGV2bWFwKCpwdWQpKSkKIAkJZ290byBvdXQ7Ci0JX19zcGxpdF9odWdlX3B1ZF9sb2NrZWQodm1h LCBwdWQsIGhhZGRyKTsKKwlfX3NwbGl0X2h1Z2VfcHVkX2xvY2tlZCh2bWEsIHB1ZCwgcmFuZ2Uu c3RhcnQpOwogCiBvdXQ6CiAJc3Bpbl91bmxvY2socHRsKTsKQEAgLTIwNDMsOCArMjA0NSw3IEBA IHZvaWQgX19zcGxpdF9odWdlX3B1ZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcHVkX3Qg KnB1ZCwKIAkgKiBObyBuZWVkIHRvIGRvdWJsZSBjYWxsIG1tdV9ub3RpZmllci0+aW52YWxpZGF0 ZV9yYW5nZSgpIGNhbGxiYWNrIGFzCiAJICogdGhlIGFib3ZlIHB1ZHBfaHVnZV9jbGVhcl9mbHVz aF9ub3RpZnkoKSBkaWQgYWxyZWFkeSBjYWxsIGl0LgogCSAqLwotCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX29ubHlfZW5kKG1tLCBoYWRkciwgaGFkZHIgKwotCQkJCQkgICAgICAgSFBB R0VfUFVEX1NJWkUpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKCZy YW5nZSk7CiB9CiAjZW5kaWYgLyogQ09ORklHX0hBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFH RV9QVUQgKi8KIApAQCAtMjI0NSw5ICsyMjQ2LDEzIEBAIHZvaWQgX19zcGxpdF9odWdlX3BtZChz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCwKIHsKIAlzcGlubG9ja190ICpw dGw7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSB2bWEtPnZtX21tOwotCXVuc2lnbmVkIGxvbmcg aGFkZHIgPSBhZGRyZXNzICYgSFBBR0VfUE1EX01BU0s7CisJc3RydWN0IG1tdV9ub3RpZmllcl9y YW5nZSByYW5nZTsKKworCXJhbmdlLnN0YXJ0ID0gYWRkcmVzcyAmIEhQQUdFX1BNRF9NQVNLOwor CXJhbmdlLmVuZCA9IHJhbmdlLnN0YXJ0ICsgSFBBR0VfUE1EX1NJWkU7CisJcmFuZ2UubW0gPSBt bTsKIAotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBoYWRkciwgaGFk ZHIgKyBIUEFHRV9QTURfU0laRSk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQoJnJhbmdlKTsKIAlwdGwgPSBwbWRfbG9jayhtbSwgcG1kKTsKIAogCS8qCkBAIC0yMjY0LDcg KzIyNjksNyBAQCB2b2lkIF9fc3BsaXRfaHVnZV9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsIHBtZF90ICpwbWQsCiAJCQljbGVhcl9wYWdlX21sb2NrKHBhZ2UpOwogCX0gZWxzZSBpZiAo IShwbWRfZGV2bWFwKCpwbWQpIHx8IGlzX3BtZF9taWdyYXRpb25fZW50cnkoKnBtZCkpKQogCQln b3RvIG91dDsKLQlfX3NwbGl0X2h1Z2VfcG1kX2xvY2tlZCh2bWEsIHBtZCwgaGFkZHIsIGZyZWV6 ZSk7CisJX19zcGxpdF9odWdlX3BtZF9sb2NrZWQodm1hLCBwbWQsIHJhbmdlLnN0YXJ0LCBmcmVl emUpOwogb3V0OgogCXNwaW5fdW5sb2NrKHB0bCk7CiAJLyoKQEAgLTIyODAsOCArMjI4NSw3IEBA IHZvaWQgX19zcGxpdF9odWdlX3BtZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3Qg KnBtZCwKIAkgKiAgICAgYW55IGZ1cnRoZXIgY2hhbmdlcyB0byBpbmRpdmlkdWFsIHB0ZSB3aWxs IG5vdGlmeS4gU28gbm8gbmVlZAogCSAqICAgICB0byBjYWxsIG1tdV9ub3RpZmllci0+aW52YWxp ZGF0ZV9yYW5nZSgpCiAJICovCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9l bmQobW0sIGhhZGRyLCBoYWRkciArCi0JCQkJCSAgICAgICBIUEFHRV9QTURfU0laRSk7CisJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQoJnJhbmdlKTsKIH0KIAogdm9pZCBz cGxpdF9odWdlX3BtZF9hZGRyZXNzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25l ZCBsb25nIGFkZHJlc3MsCmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmMK aW5kZXggNzA1YTNlOWNjOTEwLi40YmZiZGFiNDRkNTEgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIu YworKysgYi9tbS9odWdldGxiLmMKQEAgLTMyMzksMTYgKzMyMzksMTcgQEAgaW50IGNvcHlfaHVn ZXRsYl9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAq c3JjLAogCWludCBjb3c7CiAJc3RydWN0IGhzdGF0ZSAqaCA9IGhzdGF0ZV92bWEodm1hKTsKIAl1 bnNpZ25lZCBsb25nIHN6ID0gaHVnZV9wYWdlX3NpemUoaCk7Ci0JdW5zaWduZWQgbG9uZyBtbXVu X3N0YXJ0OwkvKiBGb3IgbW11X25vdGlmaWVycyAqLwotCXVuc2lnbmVkIGxvbmcgbW11bl9lbmQ7 CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFu Z2U7CiAJaW50IHJldCA9IDA7CiAKIAljb3cgPSAodm1hLT52bV9mbGFncyAmIChWTV9TSEFSRUQg fCBWTV9NQVlXUklURSkpID09IFZNX01BWVdSSVRFOwogCi0JbW11bl9zdGFydCA9IHZtYS0+dm1f c3RhcnQ7Ci0JbW11bl9lbmQgPSB2bWEtPnZtX2VuZDsKKwlyYW5nZS5zdGFydCA9IHZtYS0+dm1f c3RhcnQ7CisJcmFuZ2UuZW5kID0gdm1hLT52bV9lbmQ7CisJcmFuZ2UubW0gPSBzcmM7CisKIAlp ZiAoY293KQotCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzcmMsIG1tdW5f c3RhcnQsIG1tdW5fZW5kKTsKKwkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQo JnJhbmdlKTsKIAogCWZvciAoYWRkciA9IHZtYS0+dm1fc3RhcnQ7IGFkZHIgPCB2bWEtPnZtX2Vu ZDsgYWRkciArPSBzeikgewogCQlzcGlubG9ja190ICpzcmNfcHRsLCAqZHN0X3B0bDsKQEAgLTMz MjQsNyArMzMyNSw3IEBAIGludCBjb3B5X2h1Z2V0bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3Ry dWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyYywKIAl9CiAKIAlpZiAoY293KQotCQltbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3JjLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7 CisJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwogCiAJcmV0dXJu IHJldDsKIH0KQEAgLTMzNDEsOCArMzM0MiwxMSBAQCB2b2lkIF9fdW5tYXBfaHVnZXBhZ2VfcmFu Z2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJ c3RydWN0IHBhZ2UgKnBhZ2U7CiAJc3RydWN0IGhzdGF0ZSAqaCA9IGhzdGF0ZV92bWEodm1hKTsK IAl1bnNpZ25lZCBsb25nIHN6ID0gaHVnZV9wYWdlX3NpemUoaCk7Ci0JdW5zaWduZWQgbG9uZyBt bXVuX3N0YXJ0ID0gc3RhcnQ7CS8qIEZvciBtbXVfbm90aWZpZXJzICovCi0JdW5zaWduZWQgbG9u ZyBtbXVuX2VuZCAgID0gZW5kOwkJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KKwlzdHJ1Y3QgbW11 X25vdGlmaWVyX3JhbmdlIHJhbmdlOworCisJcmFuZ2Uuc3RhcnQgPSBzdGFydDsKKwlyYW5nZS5l bmQgPSBlbmQ7CisJcmFuZ2UubW0gPSBtbTsKIAogCVdBUk5fT04oIWlzX3ZtX2h1Z2V0bGJfcGFn ZSh2bWEpKTsKIAlCVUdfT04oc3RhcnQgJiB+aHVnZV9wYWdlX21hc2soaCkpOwpAQCAtMzM1OCw4 ICszMzYyLDggQEAgdm9pZCBfX3VubWFwX2h1Z2VwYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVy ICp0bGIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCS8qCiAJICogSWYgc2hhcmluZyBw b3NzaWJsZSwgYWxlcnQgbW11IG5vdGlmaWVycyBvZiB3b3JzdCBjYXNlLgogCSAqLwotCWFkanVz dF9yYW5nZV9pZl9wbWRfc2hhcmluZ19wb3NzaWJsZSh2bWEsICZtbXVuX3N0YXJ0LCAmbW11bl9l bmQpOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBtbXVuX3N0YXJ0 LCBtbXVuX2VuZCk7CisJYWRqdXN0X3JhbmdlX2lmX3BtZF9zaGFyaW5nX3Bvc3NpYmxlKHZtYSwg JnJhbmdlLnN0YXJ0LCAmcmFuZ2UuZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5n ZV9zdGFydCgmcmFuZ2UpOwogCWFkZHJlc3MgPSBzdGFydDsKIAlmb3IgKDsgYWRkcmVzcyA8IGVu ZDsgYWRkcmVzcyArPSBzeikgewogCQlwdGVwID0gaHVnZV9wdGVfb2Zmc2V0KG1tLCBhZGRyZXNz LCBzeik7CkBAIC0zNDI3LDcgKzM0MzEsNyBAQCB2b2lkIF9fdW5tYXBfaHVnZXBhZ2VfcmFuZ2Uo c3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCWlm IChyZWZfcGFnZSkKIAkJCWJyZWFrOwogCX0KLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5n ZV9lbmQobW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAl0bGJfZW5kX3ZtYSh0bGIsIHZtYSk7CiB9CiAKQEAgLTM1 NDUsOSArMzU0OSw4IEBAIHN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfY293KHN0cnVjdCBtbV9z dHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlzdHJ1Y3QgcGFnZSAqb2xk X3BhZ2UsICpuZXdfcGFnZTsKIAlpbnQgb3V0c2lkZV9yZXNlcnZlID0gMDsKIAl2bV9mYXVsdF90 IHJldCA9IDA7Ci0JdW5zaWduZWQgbG9uZyBtbXVuX3N0YXJ0OwkvKiBGb3IgbW11X25vdGlmaWVy cyAqLwotCXVuc2lnbmVkIGxvbmcgbW11bl9lbmQ7CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLwog CXVuc2lnbmVkIGxvbmcgaGFkZHIgPSBhZGRyZXNzICYgaHVnZV9wYWdlX21hc2soaCk7CisJc3Ry dWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKIAogCXB0ZSA9IGh1Z2VfcHRlcF9nZXQocHRl cCk7CiAJb2xkX3BhZ2UgPSBwdGVfcGFnZShwdGUpOwpAQCAtMzYyNiw5ICszNjI5LDEwIEBAIHN0 YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfY293KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlfX1NldFBhZ2VVcHRvZGF0ZShuZXdfcGFnZSk7CiAJc2V0 X3BhZ2VfaHVnZV9hY3RpdmUobmV3X3BhZ2UpOwogCi0JbW11bl9zdGFydCA9IGhhZGRyOwotCW1t dW5fZW5kID0gbW11bl9zdGFydCArIGh1Z2VfcGFnZV9zaXplKGgpOwotCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJcmFuZ2Uu c3RhcnQgPSBoYWRkcjsKKwlyYW5nZS5lbmQgPSByYW5nZS5zdGFydCArIGh1Z2VfcGFnZV9zaXpl KGgpOworCXJhbmdlLm1tID0gbW07CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQoJnJhbmdlKTsKIAogCS8qCiAJICogUmV0YWtlIHRoZSBwYWdlIHRhYmxlIGxvY2sgdG8gY2hl Y2sgZm9yIHJhY2luZyB1cGRhdGVzCkBAIC0zNjQxLDcgKzM2NDUsNyBAQCBzdGF0aWMgdm1fZmF1 bHRfdCBodWdldGxiX2NvdyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsCiAKIAkJLyogQnJlYWsgQ09XICovCiAJCWh1Z2VfcHRlcF9jbGVhcl9mbHVzaCh2 bWEsIGhhZGRyLCBwdGVwKTsKLQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2UobW0sIG1t dW5fc3RhcnQsIG1tdW5fZW5kKTsKKwkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2UobW0s IHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwogCQlzZXRfaHVnZV9wdGVfYXQobW0sIGhhZGRyLCBw dGVwLAogCQkJCW1ha2VfaHVnZV9wdGUodm1hLCBuZXdfcGFnZSwgMSkpOwogCQlwYWdlX3JlbW92 ZV9ybWFwKG9sZF9wYWdlLCB0cnVlKTsKQEAgLTM2NTAsNyArMzY1NCw3IEBAIHN0YXRpYyB2bV9m YXVsdF90IGh1Z2V0bGJfY293KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSwKIAkJbmV3X3BhZ2UgPSBvbGRfcGFnZTsKIAl9CiAJc3Bpbl91bmxvY2socHRs KTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIG1tdW5fc3RhcnQsIG1t dW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIG91 dF9yZWxlYXNlX2FsbDoKIAlyZXN0b3JlX3Jlc2VydmVfb25fZXJyb3IoaCwgdm1hLCBoYWRkciwg bmV3X3BhZ2UpOwogCXB1dF9wYWdlKG5ld19wYWdlKTsKQEAgLTQzMzksMjEgKzQzNDMsMjQgQEAg dW5zaWduZWQgbG9uZyBodWdldGxiX2NoYW5nZV9wcm90ZWN0aW9uKHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hLAogCXB0ZV90IHB0ZTsKIAlzdHJ1Y3QgaHN0YXRlICpoID0gaHN0YXRlX3ZtYSh2 bWEpOwogCXVuc2lnbmVkIGxvbmcgcGFnZXMgPSAwOwotCXVuc2lnbmVkIGxvbmcgZl9zdGFydCA9 IHN0YXJ0OwotCXVuc2lnbmVkIGxvbmcgZl9lbmQgPSBlbmQ7CiAJYm9vbCBzaGFyZWRfcG1kID0g ZmFsc2U7CisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKKworCXJhbmdlLnN0YXJ0 ID0gc3RhcnQ7CisJcmFuZ2UuZW5kID0gZW5kOworCXJhbmdlLm1tID0gbW07CiAKIAkvKgogCSAq IEluIHRoZSBjYXNlIG9mIHNoYXJlZCBQTURzLCB0aGUgYXJlYSB0byBmbHVzaCBjb3VsZCBiZSBi ZXlvbmQKLQkgKiBzdGFydC9lbmQuICBTZXQgZl9zdGFydC9mX2VuZCB0byBjb3ZlciB0aGUgbWF4 aW11bSBwb3NzaWJsZQorCSAqIHN0YXJ0L2VuZC4gIFNldCByYW5nZS5zdGFydC9yYW5nZS5lbmQg dG8gY292ZXIgdGhlIG1heGltdW0gcG9zc2libGUKIAkgKiByYW5nZSBpZiBQTUQgc2hhcmluZyBp cyBwb3NzaWJsZS4KIAkgKi8KLQlhZGp1c3RfcmFuZ2VfaWZfcG1kX3NoYXJpbmdfcG9zc2libGUo dm1hLCAmZl9zdGFydCwgJmZfZW5kKTsKKwlhZGp1c3RfcmFuZ2VfaWZfcG1kX3NoYXJpbmdfcG9z c2libGUodm1hLCAmcmFuZ2Uuc3RhcnQsICZyYW5nZS5lbmQpOwogCiAJQlVHX09OKGFkZHJlc3Mg Pj0gZW5kKTsKLQlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIGZfc3RhcnQsIGZfZW5kKTsKKwlmbHVz aF9jYWNoZV9yYW5nZSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwogCi0JbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIGZfc3RhcnQsIGZfZW5kKTsKKwltbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCWlfbW1hcF9sb2NrX3dyaXRl KHZtYS0+dm1fZmlsZS0+Zl9tYXBwaW5nKTsKIAlmb3IgKDsgYWRkcmVzcyA8IGVuZDsgYWRkcmVz cyArPSBodWdlX3BhZ2Vfc2l6ZShoKSkgewogCQlzcGlubG9ja190ICpwdGw7CkBAIC00NDA0LDcg KzQ0MTEsNyBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY2hhbmdlX3Byb3RlY3Rpb24oc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJICogZGlkIHVuc2hhcmUgYSBwYWdlIG9mIHBtZHMsIGZs dXNoIHRoZSByYW5nZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBwdWQuCiAJICovCiAJaWYgKHNoYXJl ZF9wbWQpCi0JCWZsdXNoX2h1Z2V0bGJfdGxiX3JhbmdlKHZtYSwgZl9zdGFydCwgZl9lbmQpOwor CQlmbHVzaF9odWdldGxiX3RsYl9yYW5nZSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwog CWVsc2UKIAkJZmx1c2hfaHVnZXRsYl90bGJfcmFuZ2Uodm1hLCBzdGFydCwgZW5kKTsKIAkvKgpA QCAtNDQxNCw3ICs0NDIxLDcgQEAgdW5zaWduZWQgbG9uZyBodWdldGxiX2NoYW5nZV9wcm90ZWN0 aW9uKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCSAqIFNlZSBEb2N1bWVudGF0aW9uL3Zt L21tdV9ub3RpZmllci5yc3QKIAkgKi8KIAlpX21tYXBfdW5sb2NrX3dyaXRlKHZtYS0+dm1fZmls ZS0+Zl9tYXBwaW5nKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIGZf c3RhcnQsIGZfZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdl KTsKIAogCXJldHVybiBwYWdlcyA8PCBoLT5vcmRlcjsKIH0KZGlmZiAtLWdpdCBhL21tL2todWdl cGFnZWQuYyBiL21tL2todWdlcGFnZWQuYwppbmRleCA4ZTJmZjE5NWVjYjMuLmU5ZmUwYzlhOWY1 NiAxMDA2NDQKLS0tIGEvbW0va2h1Z2VwYWdlZC5jCisrKyBiL21tL2todWdlcGFnZWQuYwpAQCAt OTQ0LDggKzk0NCw3IEBAIHN0YXRpYyB2b2lkIGNvbGxhcHNlX2h1Z2VfcGFnZShzdHJ1Y3QgbW1f c3RydWN0ICptbSwKIAlpbnQgaXNvbGF0ZWQgPSAwLCByZXN1bHQgPSAwOwogCXN0cnVjdCBtZW1f Y2dyb3VwICptZW1jZzsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKLQl1bnNpZ25lZCBs b25nIG1tdW5fc3RhcnQ7CS8qIEZvciBtbXVfbm90aWZpZXJzICovCi0JdW5zaWduZWQgbG9uZyBt bXVuX2VuZDsJCS8qIEZvciBtbXVfbm90aWZpZXJzICovCisJc3RydWN0IG1tdV9ub3RpZmllcl9y YW5nZSByYW5nZTsKIAlnZnBfdCBnZnA7CiAKIAlWTV9CVUdfT04oYWRkcmVzcyAmIH5IUEFHRV9Q TURfTUFTSyk7CkBAIC0xMDE3LDkgKzEwMTYsMTAgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfaHVn ZV9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCXB0ZSA9IHB0ZV9vZmZzZXRfbWFwKHBtZCwg YWRkcmVzcyk7CiAJcHRlX3B0bCA9IHB0ZV9sb2NrcHRyKG1tLCBwbWQpOwogCi0JbW11bl9zdGFy dCA9IGFkZHJlc3M7Ci0JbW11bl9lbmQgICA9IGFkZHJlc3MgKyBIUEFHRV9QTURfU0laRTsKLQlt bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgbW11bl9zdGFydCwgbW11bl9l bmQpOworCXJhbmdlLnN0YXJ0ID0gYWRkcmVzczsKKwlyYW5nZS5lbmQgPSByYW5nZS5zdGFydCAr IEhQQUdFX1BNRF9TSVpFOworCXJhbmdlLm1tID0gbW07CisJbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAlwbWRfcHRsID0gcG1kX2xvY2sobW0sIHBtZCk7IC8q IHByb2JhYmx5IHVubmVjZXNzYXJ5ICovCiAJLyoKIAkgKiBBZnRlciB0aGlzIGd1cF9mYXN0IGNh bid0IHJ1biBhbnltb3JlLiBUaGlzIGFsc28gcmVtb3ZlcwpAQCAtMTAyOSw3ICsxMDI5LDcgQEAg c3RhdGljIHZvaWQgY29sbGFwc2VfaHVnZV9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCSAq LwogCV9wbWQgPSBwbWRwX2NvbGxhcHNlX2ZsdXNoKHZtYSwgYWRkcmVzcywgcG1kKTsKIAlzcGlu X3VubG9jayhwbWRfcHRsKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0s IG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9l bmQoJnJhbmdlKTsKIAogCXNwaW5fbG9jayhwdGVfcHRsKTsKIAlpc29sYXRlZCA9IF9fY29sbGFw c2VfaHVnZV9wYWdlX2lzb2xhdGUodm1hLCBhZGRyZXNzLCBwdGUpOwpkaWZmIC0tZ2l0IGEvbW0v a3NtLmMgYi9tbS9rc20uYwppbmRleCA1YjA4OTRiNDVlZTUuLjI2MjY5NGQwY2Q0YyAxMDA2NDQK LS0tIGEvbW0va3NtLmMKKysrIGIvbW0va3NtLmMKQEAgLTEwNDIsOCArMTA0Miw3IEBAIHN0YXRp YyBpbnQgd3JpdGVfcHJvdGVjdF9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1 Y3QgcGFnZSAqcGFnZSwKIAl9OwogCWludCBzd2FwcGVkOwogCWludCBlcnIgPSAtRUZBVUxUOwot CXVuc2lnbmVkIGxvbmcgbW11bl9zdGFydDsJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KLQl1bnNp Z25lZCBsb25nIG1tdW5fZW5kOwkJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KKwlzdHJ1Y3QgbW11 X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCiAJcHZtdy5hZGRyZXNzID0gcGFnZV9hZGRyZXNzX2lu X3ZtYShwYWdlLCB2bWEpOwogCWlmIChwdm13LmFkZHJlc3MgPT0gLUVGQVVMVCkKQEAgLTEwNTEs OSArMTA1MCwxMCBAQCBzdGF0aWMgaW50IHdyaXRlX3Byb3RlY3RfcGFnZShzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHBhZ2UgKnBhZ2UsCiAKIAlCVUdfT04oUGFnZVRyYW5zQ29t cG91bmQocGFnZSkpOwogCi0JbW11bl9zdGFydCA9IHB2bXcuYWRkcmVzczsKLQltbXVuX2VuZCAg ID0gcHZtdy5hZGRyZXNzICsgUEFHRV9TSVpFOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0KG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJcmFuZ2Uuc3RhcnQgPSBwdm13 LmFkZHJlc3M7CisJcmFuZ2UuZW5kID0gcmFuZ2Uuc3RhcnQgKyBQQUdFX1NJWkU7CisJcmFuZ2Uu bW0gPSBtbTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwog CiAJaWYgKCFwYWdlX3ZtYV9tYXBwZWRfd2FsaygmcHZtdykpCiAJCWdvdG8gb3V0X21uOwpAQCAt MTEwNSw3ICsxMTA1LDcgQEAgc3RhdGljIGludCB3cml0ZV9wcm90ZWN0X3BhZ2Uoc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlLAogb3V0X3VubG9jazoKIAlwYWdl X3ZtYV9tYXBwZWRfd2Fsa19kb25lKCZwdm13KTsKIG91dF9tbjoKLQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9lbmQobW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIG91dDoKIAlyZXR1cm4gZXJyOwogfQpA QCAtMTEyOSw4ICsxMTI5LDcgQEAgc3RhdGljIGludCByZXBsYWNlX3BhZ2Uoc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlLAogCXNwaW5sb2NrX3QgKnB0bDsKIAl1 bnNpZ25lZCBsb25nIGFkZHI7CiAJaW50IGVyciA9IC1FRkFVTFQ7Ci0JdW5zaWduZWQgbG9uZyBt bXVuX3N0YXJ0OwkvKiBGb3IgbW11X25vdGlmaWVycyAqLwotCXVuc2lnbmVkIGxvbmcgbW11bl9l bmQ7CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2Ug cmFuZ2U7CiAKIAlhZGRyID0gcGFnZV9hZGRyZXNzX2luX3ZtYShwYWdlLCB2bWEpOwogCWlmIChh ZGRyID09IC1FRkFVTFQpCkBAIC0xMTQwLDkgKzExMzksMTAgQEAgc3RhdGljIGludCByZXBsYWNl X3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlLAogCWlm ICghcG1kKQogCQlnb3RvIG91dDsKIAotCW1tdW5fc3RhcnQgPSBhZGRyOwotCW1tdW5fZW5kICAg PSBhZGRyICsgUEFHRV9TSVpFOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0 KG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJcmFuZ2Uuc3RhcnQgPSBhZGRyOworCXJhbmdl LmVuZCA9IGFkZHIgKyBQQUdFX1NJWkU7CisJcmFuZ2UubW0gPSBtbTsKKwltbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCiAJcHRlcCA9IHB0ZV9vZmZzZXRfbWFw X2xvY2sobW0sIHBtZCwgYWRkciwgJnB0bCk7CiAJaWYgKCFwdGVfc2FtZSgqcHRlcCwgb3JpZ19w dGUpKSB7CkBAIC0xMTg4LDcgKzExODgsNyBAQCBzdGF0aWMgaW50IHJlcGxhY2VfcGFnZShzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJcHRlX3VubWFwX3Vu bG9jayhwdGVwLCBwdGwpOwogCWVyciA9IDA7CiBvdXRfbW46Ci0JbW11X25vdGlmaWVyX2ludmFs aWRhdGVfcmFuZ2VfZW5kKG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiBvdXQ6CiAJcmV0dXJuIGVycjsKIH0KZGlm ZiAtLWdpdCBhL21tL21hZHZpc2UuYyBiL21tL21hZHZpc2UuYwppbmRleCA2Y2IxY2E5M2UyOTAu LmYyMGRkODBjYTIxYiAxMDA2NDQKLS0tIGEvbW0vbWFkdmlzZS5jCisrKyBiL21tL21hZHZpc2Uu YwpAQCAtNDU4LDI5ICs0NTgsMzAgQEAgc3RhdGljIHZvaWQgbWFkdmlzZV9mcmVlX3BhZ2VfcmFu Z2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKIHN0YXRpYyBpbnQgbWFkdmlzZV9mcmVlX3Npbmds ZV92bWEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCQl1bnNpZ25lZCBsb25nIHN0YXJ0 X2FkZHIsIHVuc2lnbmVkIGxvbmcgZW5kX2FkZHIpCiB7Ci0JdW5zaWduZWQgbG9uZyBzdGFydCwg ZW5kOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKKwlzdHJ1Y3QgbW11X25v dGlmaWVyX3JhbmdlIHJhbmdlOwogCXN0cnVjdCBtbXVfZ2F0aGVyIHRsYjsKIAogCS8qIE1BRFZf RlJFRSB3b3JrcyBmb3Igb25seSBhbm9uIHZtYSBhdCB0aGUgbW9tZW50ICovCiAJaWYgKCF2bWFf aXNfYW5vbnltb3VzKHZtYSkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0Jc3RhcnQgPSBtYXgodm1h LT52bV9zdGFydCwgc3RhcnRfYWRkcik7Ci0JaWYgKHN0YXJ0ID49IHZtYS0+dm1fZW5kKQorCXJh bmdlLnN0YXJ0ID0gbWF4KHZtYS0+dm1fc3RhcnQsIHN0YXJ0X2FkZHIpOworCWlmIChyYW5nZS5z dGFydCA+PSB2bWEtPnZtX2VuZCkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JZW5kID0gbWluKHZtYS0+ dm1fZW5kLCBlbmRfYWRkcik7Ci0JaWYgKGVuZCA8PSB2bWEtPnZtX3N0YXJ0KQorCXJhbmdlLmVu ZCA9IG1pbih2bWEtPnZtX2VuZCwgZW5kX2FkZHIpOworCWlmIChyYW5nZS5lbmQgPD0gdm1hLT52 bV9zdGFydCkKIAkJcmV0dXJuIC1FSU5WQUw7CisJcmFuZ2UubW0gPSBtbTsKIAogCWxydV9hZGRf ZHJhaW4oKTsKLQl0bGJfZ2F0aGVyX21tdSgmdGxiLCBtbSwgc3RhcnQsIGVuZCk7CisJdGxiX2dh dGhlcl9tbXUoJnRsYiwgbW0sIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwogCXVwZGF0ZV9oaXdh dGVyX3JzcyhtbSk7CiAKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwg c3RhcnQsIGVuZCk7Ci0JbWFkdmlzZV9mcmVlX3BhZ2VfcmFuZ2UoJnRsYiwgdm1hLCBzdGFydCwg ZW5kKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIHN0YXJ0LCBlbmQp OwotCXRsYl9maW5pc2hfbW11KCZ0bGIsIHN0YXJ0LCBlbmQpOworCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CisJbWFkdmlzZV9mcmVlX3BhZ2VfcmFuZ2UoJnRs Yiwgdm1hLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9lbmQoJnJhbmdlKTsKKwl0bGJfZmluaXNoX21tdSgmdGxiLCByYW5nZS5zdGFydCwg cmFuZ2UuZW5kKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9t bS9tZW1vcnkuYwppbmRleCA0YWQyZDI5M2RkYzIuLjM2ZTBiODM5NDlmYyAxMDA2NDQKLS0tIGEv bW0vbWVtb3J5LmMKKysrIGIvbW0vbWVtb3J5LmMKQEAgLTk3Myw4ICs5NzMsNyBAQCBpbnQgY29w eV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdF9tbSwgc3RydWN0IG1tX3N0cnVjdCAq c3JjX21tLAogCXVuc2lnbmVkIGxvbmcgbmV4dDsKIAl1bnNpZ25lZCBsb25nIGFkZHIgPSB2bWEt PnZtX3N0YXJ0OwogCXVuc2lnbmVkIGxvbmcgZW5kID0gdm1hLT52bV9lbmQ7Ci0JdW5zaWduZWQg bG9uZyBtbXVuX3N0YXJ0OwkvKiBGb3IgbW11X25vdGlmaWVycyAqLwotCXVuc2lnbmVkIGxvbmcg bW11bl9lbmQ7CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLworCXN0cnVjdCBtbXVfbm90aWZpZXJf cmFuZ2UgcmFuZ2U7CiAJYm9vbCBpc19jb3c7CiAJaW50IHJldDsKIApAQCAtMTAwOCwxMSArMTAw NywxMiBAQCBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdF9tbSwgc3Ry dWN0IG1tX3N0cnVjdCAqc3JjX21tLAogCSAqIGlzX2Nvd19tYXBwaW5nKCkgcmV0dXJucyB0cnVl LgogCSAqLwogCWlzX2NvdyA9IGlzX2Nvd19tYXBwaW5nKHZtYS0+dm1fZmxhZ3MpOwotCW1tdW5f c3RhcnQgPSBhZGRyOwotCW1tdW5fZW5kICAgPSBlbmQ7CisJcmFuZ2Uuc3RhcnQgPSBhZGRyOwor CXJhbmdlLmVuZCA9IGVuZDsKKwlyYW5nZS5tbSA9IHNyY19tbTsKKwogCWlmIChpc19jb3cpCi0J CW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHNyY19tbSwgbW11bl9zdGFydCwK LQkJCQkJCSAgICBtbXVuX2VuZCk7CisJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KCZyYW5nZSk7CiAKIAlyZXQgPSAwOwogCWRzdF9wZ2QgPSBwZ2Rfb2Zmc2V0KGRzdF9tbSwg YWRkcik7CkBAIC0xMDI5LDcgKzEwMjksNyBAQCBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBt bV9zdHJ1Y3QgKmRzdF9tbSwgc3RydWN0IG1tX3N0cnVjdCAqc3JjX21tLAogCX0gd2hpbGUgKGRz dF9wZ2QrKywgc3JjX3BnZCsrLCBhZGRyID0gbmV4dCwgYWRkciAhPSBlbmQpOwogCiAJaWYgKGlz X2NvdykKLQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHNyY19tbSwgbW11bl9z dGFydCwgbW11bl9lbmQpOworCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJh bmdlKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMzMyLDEyICsxMzMyLDE2IEBAIHZvaWQgdW5t YXBfdm1hcyhzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLAogCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLAogCQl1bnNpZ25lZCBsb25nIGVuZF9hZGRy KQogewotCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKKwlzdHJ1Y3QgbW11X25v dGlmaWVyX3JhbmdlIHJhbmdlOwogCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQobW0sIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKKwlyYW5nZS5zdGFydCA9IHN0YXJ0X2FkZHI7 CisJcmFuZ2UuZW5kID0gZW5kX2FkZHI7CisJcmFuZ2UubW0gPSB2bWEtPnZtX21tOworCisJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAlmb3IgKCA7IHZtYSAm JiB2bWEtPnZtX3N0YXJ0IDwgZW5kX2FkZHI7IHZtYSA9IHZtYS0+dm1fbmV4dCkKIAkJdW5tYXBf c2luZ2xlX3ZtYSh0bGIsIHZtYSwgc3RhcnRfYWRkciwgZW5kX2FkZHIsIE5VTEwpOwotCW1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgc3RhcnRfYWRkciwgZW5kX2FkZHIpOwor CW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwogfQogCiAvKioKQEAg LTEzNTEsMTggKzEzNTUsMjEgQEAgdm9pZCB1bm1hcF92bWFzKHN0cnVjdCBtbXVfZ2F0aGVyICp0 bGIsCiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNp Z25lZCBsb25nIHN0YXJ0LAogCQl1bnNpZ25lZCBsb25nIHNpemUpCiB7Ci0Jc3RydWN0IG1tX3N0 cnVjdCAqbW0gPSB2bWEtPnZtX21tOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7 CiAJc3RydWN0IG1tdV9nYXRoZXIgdGxiOwotCXVuc2lnbmVkIGxvbmcgZW5kID0gc3RhcnQgKyBz aXplOworCisJcmFuZ2Uuc3RhcnQgPSBzdGFydDsKKwlyYW5nZS5lbmQgPSByYW5nZS5zdGFydCAr IHNpemU7CisJcmFuZ2UubW0gPSB2bWEtPnZtX21tOwogCiAJbHJ1X2FkZF9kcmFpbigpOwotCXRs Yl9nYXRoZXJfbW11KCZ0bGIsIG1tLCBzdGFydCwgZW5kKTsKLQl1cGRhdGVfaGl3YXRlcl9yc3Mo bW0pOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBzdGFydCwgZW5k KTsKLQlmb3IgKCA7IHZtYSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kOyB2bWEgPSB2bWEtPnZtX25l eHQpCi0JCXVubWFwX3NpbmdsZV92bWEoJnRsYiwgdm1hLCBzdGFydCwgZW5kLCBOVUxMKTsKLQlt bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIHN0YXJ0LCBlbmQpOwotCXRsYl9m aW5pc2hfbW11KCZ0bGIsIHN0YXJ0LCBlbmQpOworCXRsYl9nYXRoZXJfbW11KCZ0bGIsIHJhbmdl Lm1tLCBzdGFydCwgcmFuZ2UuZW5kKTsKKwl1cGRhdGVfaGl3YXRlcl9yc3MocmFuZ2UubW0pOwor CW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CisJZm9yICggOyB2 bWEgJiYgdm1hLT52bV9zdGFydCA8IHJhbmdlLmVuZDsgdm1hID0gdm1hLT52bV9uZXh0KQorCQl1 bm1hcF9zaW5nbGVfdm1hKCZ0bGIsIHZtYSwgc3RhcnQsIHJhbmdlLmVuZCwgTlVMTCk7CisJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CisJdGxiX2ZpbmlzaF9tbXUo JnRsYiwgc3RhcnQsIHJhbmdlLmVuZCk7CiB9CiAKIC8qKgpAQCAtMTM3NywxNyArMTM4NCwyMCBA QCB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25l ZCBsb25nIHN0YXJ0LAogc3RhdGljIHZvaWQgemFwX3BhZ2VfcmFuZ2Vfc2luZ2xlKHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCXVuc2lnbmVkIGxv bmcgc2l6ZSwgc3RydWN0IHphcF9kZXRhaWxzICpkZXRhaWxzKQogewotCXN0cnVjdCBtbV9zdHJ1 Y3QgKm1tID0gdm1hLT52bV9tbTsKKwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOwog CXN0cnVjdCBtbXVfZ2F0aGVyIHRsYjsKLQl1bnNpZ25lZCBsb25nIGVuZCA9IGFkZHJlc3MgKyBz aXplOworCisJcmFuZ2Uuc3RhcnQgPSBhZGRyZXNzOworCXJhbmdlLmVuZCA9IHJhbmdlLnN0YXJ0 ICsgc2l6ZTsKKwlyYW5nZS5tbSA9IHZtYS0+dm1fbW07CiAKIAlscnVfYWRkX2RyYWluKCk7Ci0J dGxiX2dhdGhlcl9tbXUoJnRsYiwgbW0sIGFkZHJlc3MsIGVuZCk7Ci0JdXBkYXRlX2hpd2F0ZXJf cnNzKG1tKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgYWRkcmVz cywgZW5kKTsKLQl1bm1hcF9zaW5nbGVfdm1hKCZ0bGIsIHZtYSwgYWRkcmVzcywgZW5kLCBkZXRh aWxzKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIGFkZHJlc3MsIGVu ZCk7Ci0JdGxiX2ZpbmlzaF9tbXUoJnRsYiwgYWRkcmVzcywgZW5kKTsKKwl0bGJfZ2F0aGVyX21t dSgmdGxiLCByYW5nZS5tbSwgYWRkcmVzcywgcmFuZ2UuZW5kKTsKKwl1cGRhdGVfaGl3YXRlcl9y c3MocmFuZ2UubW0pOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5n ZSk7CisJdW5tYXBfc2luZ2xlX3ZtYSgmdGxiLCB2bWEsIGFkZHJlc3MsIHJhbmdlLmVuZCwgZGV0 YWlscyk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CisJdGxi X2ZpbmlzaF9tbXUoJnRsYiwgYWRkcmVzcywgcmFuZ2UuZW5kKTsKIH0KIAogLyoqCkBAIC0yMjQ3 LDkgKzIyNTcsMTIgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgd3BfcGFnZV9jb3B5KHN0cnVjdCB2bV9m YXVsdCAqdm1mKQogCXN0cnVjdCBwYWdlICpuZXdfcGFnZSA9IE5VTEw7CiAJcHRlX3QgZW50cnk7 CiAJaW50IHBhZ2VfY29waWVkID0gMDsKLQljb25zdCB1bnNpZ25lZCBsb25nIG1tdW5fc3RhcnQg PSB2bWYtPmFkZHJlc3MgJiBQQUdFX01BU0s7Ci0JY29uc3QgdW5zaWduZWQgbG9uZyBtbXVuX2Vu ZCA9IG1tdW5fc3RhcnQgKyBQQUdFX1NJWkU7CiAJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwor CXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CisKKwlyYW5nZS5zdGFydCA9IHZtZi0+ YWRkcmVzcyAmIFBBR0VfTUFTSzsKKwlyYW5nZS5lbmQgPSByYW5nZS5zdGFydCArIFBBR0VfU0la RTsKKwlyYW5nZS5tbSA9IG1tOwogCiAJaWYgKHVubGlrZWx5KGFub25fdm1hX3ByZXBhcmUodm1h KSkpCiAJCWdvdG8gb29tOwpAQCAtMjI3Miw3ICsyMjg1LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qg d3BfcGFnZV9jb3B5KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCiAJX19TZXRQYWdlVXB0b2RhdGUo bmV3X3BhZ2UpOwogCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIG1t dW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFy dCgmcmFuZ2UpOwogCiAJLyoKIAkgKiBSZS1jaGVjayB0aGUgcHRlIC0gd2UgZHJvcHBlZCB0aGUg bG9jawpAQCAtMjM0OSw3ICsyMzYyLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgd3BfcGFnZV9jb3B5 KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCSAqIE5vIG5lZWQgdG8gZG91YmxlIGNhbGwgbW11X25v dGlmaWVyLT5pbnZhbGlkYXRlX3JhbmdlKCkgY2FsbGJhY2sgYXMKIAkgKiB0aGUgYWJvdmUgcHRl cF9jbGVhcl9mbHVzaF9ub3RpZnkoKSBkaWQgYWxyZWFkeSBjYWxsIGl0LgogCSAqLwotCW1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2Vu ZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQoJnJhbmdlKTsKIAlp ZiAob2xkX3BhZ2UpIHsKIAkJLyoKIAkJICogRG9uJ3QgbGV0IGFub3RoZXIgdGFzaywgd2l0aCBw b3NzaWJseSB1bmxvY2tlZCB2bWEsCkBAIC00MDMwLDcgKzQwNDMsNyBAQCBpbnQgX19wbWRfYWxs b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHB1ZF90ICpwdWQsIHVuc2lnbmVkIGxvbmcgYWRkcmVz cykKICNlbmRpZiAvKiBfX1BBR0VUQUJMRV9QTURfRk9MREVEICovCiAKIHN0YXRpYyBpbnQgX19m b2xsb3dfcHRlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAotCQkJICAgIHVuc2lnbmVkIGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsCisJCQkg ICAgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UsCiAJCQkgICAgcHRlX3QgKipwdGVw cCwgcG1kX3QgKipwbWRwcCwgc3BpbmxvY2tfdCAqKnB0bHApCiB7CiAJcGdkX3QgKnBnZDsKQEAg LTQwNTgsMTAgKzQwNzEsMTAgQEAgc3RhdGljIGludCBfX2ZvbGxvd19wdGVfcG1kKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCWlmICghcG1kcHApCiAJCQln b3RvIG91dDsKIAotCQlpZiAoc3RhcnQgJiYgZW5kKSB7Ci0JCQkqc3RhcnQgPSBhZGRyZXNzICYg UE1EX01BU0s7Ci0JCQkqZW5kID0gKnN0YXJ0ICsgUE1EX1NJWkU7Ci0JCQltbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgKnN0YXJ0LCAqZW5kKTsKKwkJaWYgKHJhbmdlKSB7 CisJCQlyYW5nZS0+c3RhcnQgPSBhZGRyZXNzICYgUE1EX01BU0s7CisJCQlyYW5nZS0+ZW5kID0g cmFuZ2UtPnN0YXJ0ICsgUE1EX1NJWkU7CisJCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5n ZV9zdGFydChyYW5nZSk7CiAJCX0KIAkJKnB0bHAgPSBwbWRfbG9jayhtbSwgcG1kKTsKIAkJaWYg KHBtZF9odWdlKCpwbWQpKSB7CkBAIC00MDY5LDE3ICs0MDgyLDE3IEBAIHN0YXRpYyBpbnQgX19m b2xsb3dfcHRlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAogCQkJcmV0dXJuIDA7CiAJCX0KIAkJc3Bpbl91bmxvY2soKnB0bHApOwotCQlpZiAoc3RhcnQg JiYgZW5kKQotCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCAqc3RhcnQs ICplbmQpOworCQlpZiAocmFuZ2UpCisJCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9l bmQocmFuZ2UpOwogCX0KIAogCWlmIChwbWRfbm9uZSgqcG1kKSB8fCB1bmxpa2VseShwbWRfYmFk KCpwbWQpKSkKIAkJZ290byBvdXQ7CiAKLQlpZiAoc3RhcnQgJiYgZW5kKSB7Ci0JCSpzdGFydCA9 IGFkZHJlc3MgJiBQQUdFX01BU0s7Ci0JCSplbmQgPSAqc3RhcnQgKyBQQUdFX1NJWkU7Ci0JCW1t dV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCAqc3RhcnQsICplbmQpOworCWlm IChyYW5nZSkgeworCQlyYW5nZS0+c3RhcnQgPSBhZGRyZXNzICYgUEFHRV9NQVNLOworCQlyYW5n ZS0+ZW5kID0gcmFuZ2UtPnN0YXJ0ICsgUEFHRV9TSVpFOworCQltbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9zdGFydChyYW5nZSk7CiAJfQogCXB0ZXAgPSBwdGVfb2Zmc2V0X21hcF9sb2Nr KG1tLCBwbWQsIGFkZHJlc3MsIHB0bHApOwogCWlmICghcHRlX3ByZXNlbnQoKnB0ZXApKQpAQCAt NDA4OCw4ICs0MTAxLDggQEAgc3RhdGljIGludCBfX2ZvbGxvd19wdGVfcG1kKHN0cnVjdCBtbV9z dHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJcmV0dXJuIDA7CiB1bmxvY2s6CiAJ cHRlX3VubWFwX3VubG9jayhwdGVwLCAqcHRscCk7Ci0JaWYgKHN0YXJ0ICYmIGVuZCkKLQkJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCAqc3RhcnQsICplbmQpOworCWlmIChy YW5nZSkKKwkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHJhbmdlKTsKIG91dDoK IAlyZXR1cm4gLUVJTlZBTDsKIH0KQEAgLTQxMDEsMjAgKzQxMTQsMjAgQEAgc3RhdGljIGlubGlu ZSBpbnQgZm9sbG93X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRy ZXNzLAogCiAJLyogKHZvaWQpIGlzIG5lZWRlZCB0byBtYWtlIGdjYyBoYXBweSAqLwogCSh2b2lk KSBfX2NvbmRfbG9jaygqcHRscCwKLQkJCSAgICEocmVzID0gX19mb2xsb3dfcHRlX3BtZChtbSwg YWRkcmVzcywgTlVMTCwgTlVMTCwKKwkJCSAgICEocmVzID0gX19mb2xsb3dfcHRlX3BtZChtbSwg YWRkcmVzcywgTlVMTCwKIAkJCQkJCSAgICBwdGVwcCwgTlVMTCwgcHRscCkpKTsKIAlyZXR1cm4g cmVzOwogfQogCiBpbnQgZm9sbG93X3B0ZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2ln bmVkIGxvbmcgYWRkcmVzcywKLQkJCSAgICAgdW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2lnbmVk IGxvbmcgKmVuZCwKKwkJIAkgICAgIHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLAog CQkJICAgICBwdGVfdCAqKnB0ZXBwLCBwbWRfdCAqKnBtZHBwLCBzcGlubG9ja190ICoqcHRscCkK IHsKIAlpbnQgcmVzOwogCiAJLyogKHZvaWQpIGlzIG5lZWRlZCB0byBtYWtlIGdjYyBoYXBweSAq LwogCSh2b2lkKSBfX2NvbmRfbG9jaygqcHRscCwKLQkJCSAgICEocmVzID0gX19mb2xsb3dfcHRl X3BtZChtbSwgYWRkcmVzcywgc3RhcnQsIGVuZCwKKwkJCSAgICEocmVzID0gX19mb2xsb3dfcHRl X3BtZChtbSwgYWRkcmVzcywgcmFuZ2UsCiAJCQkJCQkgICAgcHRlcHAsIHBtZHBwLCBwdGxwKSkp OwogCXJldHVybiByZXM7CiB9CmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRl LmMKaW5kZXggZjdlNGJmZGMxM2I3Li40ODk2ZGQ5ZDhiMjggMTAwNjQ0Ci0tLSBhL21tL21pZ3Jh dGUuYworKysgYi9tbS9taWdyYXRlLmMKQEAgLTIzMDMsOCArMjMwMywxMyBAQCBzdGF0aWMgaW50 IG1pZ3JhdGVfdm1hX2NvbGxlY3RfcG1kKHBtZF90ICpwbWRwLAogICovCiBzdGF0aWMgdm9pZCBt aWdyYXRlX3ZtYV9jb2xsZWN0KHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSkKIHsKKwlzdHJ1 Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCXN0cnVjdCBtbV93YWxrIG1tX3dhbGs7CiAK KwlyYW5nZS5zdGFydCA9IG1pZ3JhdGUtPnN0YXJ0OworCXJhbmdlLmVuZCA9IG1pZ3JhdGUtPmVu ZDsKKwlyYW5nZS5tbSA9IG1tX3dhbGsubW07CisKIAltbV93YWxrLnBtZF9lbnRyeSA9IG1pZ3Jh dGVfdm1hX2NvbGxlY3RfcG1kOwogCW1tX3dhbGsucHRlX2VudHJ5ID0gTlVMTDsKIAltbV93YWxr LnB0ZV9ob2xlID0gbWlncmF0ZV92bWFfY29sbGVjdF9ob2xlOwpAQCAtMjMxNCwxMyArMjMxOSw5 IEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2NvbGxlY3Qoc3RydWN0IG1pZ3JhdGVfdm1hICpt aWdyYXRlKQogCW1tX3dhbGsubW0gPSBtaWdyYXRlLT52bWEtPnZtX21tOwogCW1tX3dhbGsucHJp dmF0ZSA9IG1pZ3JhdGU7CiAKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCht bV93YWxrLm1tLAotCQkJCQkgICAgbWlncmF0ZS0+c3RhcnQsCi0JCQkJCSAgICBtaWdyYXRlLT5l bmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAJd2Fs a19wYWdlX3JhbmdlKG1pZ3JhdGUtPnN0YXJ0LCBtaWdyYXRlLT5lbmQsICZtbV93YWxrKTsKLQlt bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW1fd2Fsay5tbSwKLQkJCQkJICBtaWdy YXRlLT5zdGFydCwKLQkJCQkJICBtaWdyYXRlLT5lbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwogCiAJbWlncmF0ZS0+ZW5kID0gbWlncmF0ZS0+c3RhcnQg KyAobWlncmF0ZS0+bnBhZ2VzIDw8IFBBR0VfU0hJRlQpOwogfQpAQCAtMjcwMyw3ICsyNzA0LDgg QEAgc3RhdGljIHZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdy YXRlKQogCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3RhcnQgPSBtaWdyYXRlLT5zdGFydDsKIAlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IG1pZ3JhdGUtPnZtYTsKIAlzdHJ1Y3QgbW1fc3RydWN0 ICptbSA9IHZtYS0+dm1fbW07Ci0JdW5zaWduZWQgbG9uZyBhZGRyLCBpLCBtbXVfc3RhcnQ7CisJ c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKKwl1bnNpZ25lZCBsb25nIGFkZHIsIGk7 CiAJYm9vbCBub3RpZmllZCA9IGZhbHNlOwogCiAJZm9yIChpID0gMCwgYWRkciA9IHN0YXJ0OyBp IDwgbnBhZ2VzOyBhZGRyICs9IFBBR0VfU0laRSwgaSsrKSB7CkBAIC0yNzIyLDExICsyNzI0LDEy IEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWln cmF0ZSkKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJCWlmICghbm90aWZpZWQpIHsKLQkJCQltbXVf c3RhcnQgPSBhZGRyOwogCQkJCW5vdGlmaWVkID0gdHJ1ZTsKLQkJCQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwKLQkJCQkJCQkJbW11X3N0YXJ0LAotCQkJCQkJCQltaWdy YXRlLT5lbmQpOworCisJCQkJcmFuZ2Uuc3RhcnQgPSBhZGRyOworCQkJCXJhbmdlLmVuZCA9IG1p Z3JhdGUtPmVuZDsKKwkJCQlyYW5nZS5tbSA9IG1tOworCQkJCW1tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAJCQl9CiAJCQltaWdyYXRlX3ZtYV9pbnNlcnRfcGFn ZShtaWdyYXRlLCBhZGRyLCBuZXdwYWdlLAogCQkJCQkJJm1pZ3JhdGUtPnNyY1tpXSwKQEAgLTI3 NjcsOCArMjc3MCw3IEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdy YXRlX3ZtYSAqbWlncmF0ZSkKIAkgKiBkaWQgYWxyZWFkeSBjYWxsIGl0LgogCSAqLwogCWlmIChu b3RpZmllZCkKLQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQobW0sIG1t dV9zdGFydCwKLQkJCQkJCSAgICAgICBtaWdyYXRlLT5lbmQpOworCQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9vbmx5X2VuZCgmcmFuZ2UpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbW0v bW11X25vdGlmaWVyLmMgYi9tbS9tbXVfbm90aWZpZXIuYwppbmRleCA1ZjY2NjVhZTNlZTIuLjRj NTJiMzUxNGM1MCAxMDA2NDQKLS0tIGEvbW0vbW11X25vdGlmaWVyLmMKKysrIGIvbW0vbW11X25v dGlmaWVyLmMKQEAgLTE3NCwyOCArMTc0LDIwIEBAIHZvaWQgX19tbXVfbm90aWZpZXJfY2hhbmdl X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAogCXNyY3Vf cmVhZF91bmxvY2soJnNyY3UsIGlkKTsKIH0KIAotaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCQkgIGJvb2wgYmxvY2thYmxlKQoraW50IF9f bW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9y YW5nZSAqcmFuZ2UpCiB7Ci0Jc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSBfcmFuZ2UsICpyYW5n ZSA9ICZfcmFuZ2U7CiAJc3RydWN0IG1tdV9ub3RpZmllciAqbW47CiAJaW50IHJldCA9IDA7CiAJ aW50IGlkOwogCi0JcmFuZ2UtPmJsb2NrYWJsZSA9IGJsb2NrYWJsZTsKLQlyYW5nZS0+c3RhcnQg PSBzdGFydDsKLQlyYW5nZS0+ZW5kID0gZW5kOwotCXJhbmdlLT5tbSA9IG1tOwotCiAJaWQgPSBz cmN1X3JlYWRfbG9jaygmc3JjdSk7Ci0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1uLCAmbW0t Pm1tdV9ub3RpZmllcl9tbS0+bGlzdCwgaGxpc3QpIHsKKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9y Y3UobW4sICZyYW5nZS0+bW0tPm1tdV9ub3RpZmllcl9tbS0+bGlzdCwgaGxpc3QpIHsKIAkJaWYg KG1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQpIHsKIAkJCWludCBfcmV0ID0gbW4tPm9w cy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbiwgcmFuZ2UpOwogCQkJaWYgKF9yZXQpIHsKIAkJ CQlwcl9pbmZvKCIlcFMgY2FsbGJhY2sgZmFpbGVkIHdpdGggJWQgaW4gJXNibG9ja2FibGUgY29u dGV4dC5cbiIsCiAJCQkJCQltbi0+b3BzLT5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LCBfcmV0LAot CQkJCQkJIWJsb2NrYWJsZSA/ICJub24tIiA6ICIiKTsKKwkJCQkJCSFyYW5nZS0+YmxvY2thYmxl ID8gIm5vbi0iIDogIiIpOwogCQkJCXJldCA9IF9yZXQ7CiAJCQl9CiAJCX0KQEAgLTIwNiwyNyAr MTk4LDE0IEBAIGludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLAogfQogRVhQT1JUX1NZTUJPTF9HUEwoX19tbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9zdGFydCk7CiAKLXZvaWQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJCSB1bnNpZ25lZCBsb25nIHN0YXJ0 LAotCQkJCQkgdW5zaWduZWQgbG9uZyBlbmQsCit2b2lkIF9fbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLAogCQkJCQkgYm9v bCBvbmx5X2VuZCkKIHsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIF9yYW5nZSwgKnJhbmdl ID0gJl9yYW5nZTsKIAlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKIAlpbnQgaWQ7CiAKLQkvKgot CSAqIFRoZSBlbmQgY2FsbCBiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbCBpZiB0aGUgc3RhcnQgcmVm dXNlZCB0byBnbwotCSAqIHRocm91Z2ggYmVjYXVzZSBvZiBibG9ja2FibGUgd2FzIGZhbHNlIHNv IGhlcmUgYXNzdW1lIHRoYXQgd2UKLQkgKiBjYW4gYmxvY2suCi0JICovCi0JcmFuZ2UtPmJsb2Nr YWJsZSA9IHRydWU7Ci0JcmFuZ2UtPnN0YXJ0ID0gc3RhcnQ7Ci0JcmFuZ2UtPmVuZCA9IGVuZDsK LQlyYW5nZS0+bW0gPSBtbTsKLQogCWlkID0gc3JjdV9yZWFkX2xvY2soJnNyY3UpOwotCWhsaXN0 X2Zvcl9lYWNoX2VudHJ5X3JjdShtbiwgJm1tLT5tbXVfbm90aWZpZXJfbW0tPmxpc3QsIGhsaXN0 KSB7CisJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1uLCAmcmFuZ2UtPm1tLT5tbXVfbm90aWZp ZXJfbW0tPmxpc3QsIGhsaXN0KSB7CiAJCS8qCiAJCSAqIENhbGwgaW52YWxpZGF0ZV9yYW5nZSBo ZXJlIHRvbyB0byBhdm9pZCB0aGUgbmVlZCBmb3IgdGhlCiAJCSAqIHN1YnN5c3RlbSBvZiBoYXZp bmcgdG8gcmVnaXN0ZXIgYW4gaW52YWxpZGF0ZV9yYW5nZV9lbmQKQEAgLTI0MSw3ICsyMjAsOSBA QCB2b2lkIF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLAogCQkgKiBhbHJlYWR5IGhhcHBlbiB1bmRlciBwYWdlIHRhYmxlIGxvY2suCiAJCSAq LwogCQlpZiAoIW9ubHlfZW5kICYmIG1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2UpCi0JCQltbi0+ b3BzLT5pbnZhbGlkYXRlX3JhbmdlKG1uLCBtbSwgc3RhcnQsIGVuZCk7CisJCQltbi0+b3BzLT5p bnZhbGlkYXRlX3JhbmdlKG1uLCByYW5nZS0+bW0sCisJCQkJCQkgIHJhbmdlLT5zdGFydCwKKwkJ CQkJCSAgcmFuZ2UtPmVuZCk7CiAJCWlmIChtbi0+b3BzLT5pbnZhbGlkYXRlX3JhbmdlX2VuZCkK IAkJCW1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2VfZW5kKG1uLCByYW5nZSk7CiAJfQpkaWZmIC0t Z2l0IGEvbW0vbXByb3RlY3QuYyBiL21tL21wcm90ZWN0LmMKaW5kZXggNmQzMzE2MjBiOWU1Li5m NDY2YWRmMzFlMTIgMTAwNjQ0Ci0tLSBhL21tL21wcm90ZWN0LmMKKysrIGIvbW0vbXByb3RlY3Qu YwpAQCAtMTcxLDcgKzE3MSw5IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBjaGFuZ2Vf cG1kX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCXVuc2lnbmVkIGxvbmcgbmV4 dDsKIAl1bnNpZ25lZCBsb25nIHBhZ2VzID0gMDsKIAl1bnNpZ25lZCBsb25nIG5yX2h1Z2VfdXBk YXRlcyA9IDA7Ci0JdW5zaWduZWQgbG9uZyBtbmlfc3RhcnQgPSAwOworCXN0cnVjdCBtbXVfbm90 aWZpZXJfcmFuZ2UgcmFuZ2U7CisKKwlyYW5nZS5zdGFydCA9IDA7CiAKIAlwbWQgPSBwbWRfb2Zm c2V0KHB1ZCwgYWRkcik7CiAJZG8gewpAQCAtMTgzLDkgKzE4NSwxMSBAQCBzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGxvbmcgY2hhbmdlX3BtZF9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSwKIAkJCWdvdG8gbmV4dDsKIAogCQkvKiBpbnZva2UgdGhlIG1tdSBub3RpZmllciBpZiB0aGUg cG1kIGlzIHBvcHVsYXRlZCAqLwotCQlpZiAoIW1uaV9zdGFydCkgewotCQkJbW5pX3N0YXJ0ID0g YWRkcjsKLQkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBtbmlfc3Rh cnQsIGVuZCk7CisJCWlmICghcmFuZ2Uuc3RhcnQpIHsKKwkJCXJhbmdlLnN0YXJ0ID0gYWRkcjsK KwkJCXJhbmdlLmVuZCA9IGVuZDsKKwkJCXJhbmdlLm1tID0gbW07CisJCQltbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCQl9CiAKIAkJaWYgKGlzX3N3YXBfcG1k KCpwbWQpIHx8IHBtZF90cmFuc19odWdlKCpwbWQpIHx8IHBtZF9kZXZtYXAoKnBtZCkpIHsKQEAg LTIxNCw4ICsyMTgsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2hhbmdlX3BtZF9y YW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJY29uZF9yZXNjaGVkKCk7CiAJfSB3 aGlsZSAocG1kKyssIGFkZHIgPSBuZXh0LCBhZGRyICE9IGVuZCk7CiAKLQlpZiAobW5pX3N0YXJ0 KQotCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIG1uaV9zdGFydCwgZW5k KTsKKwlpZiAocmFuZ2Uuc3RhcnQpCisJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2Vu ZCgmcmFuZ2UpOwogCiAJaWYgKG5yX2h1Z2VfdXBkYXRlcykKIAkJY291bnRfdm1fbnVtYV9ldmVu dHMoTlVNQV9IVUdFX1BURV9VUERBVEVTLCBucl9odWdlX3VwZGF0ZXMpOwpkaWZmIC0tZ2l0IGEv bW0vbXJlbWFwLmMgYi9tbS9tcmVtYXAuYwppbmRleCA3ZjlmOTE4MGU0MDEuLmRiMDYwYWNiNGE4 YyAxMDA2NDQKLS0tIGEvbW0vbXJlbWFwLmMKKysrIGIvbW0vbXJlbWFwLmMKQEAgLTE5NywxNiAr MTk3LDE3IEBAIHVuc2lnbmVkIGxvbmcgbW92ZV9wYWdlX3RhYmxlcyhzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSwKIAkJYm9vbCBuZWVkX3JtYXBfbG9ja3MpCiB7CiAJdW5zaWduZWQgbG9uZyBl eHRlbnQsIG5leHQsIG9sZF9lbmQ7CisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsK IAlwbWRfdCAqb2xkX3BtZCwgKm5ld19wbWQ7Ci0JdW5zaWduZWQgbG9uZyBtbXVuX3N0YXJ0Owkv KiBGb3IgbW11X25vdGlmaWVycyAqLwotCXVuc2lnbmVkIGxvbmcgbW11bl9lbmQ7CQkvKiBGb3Ig bW11X25vdGlmaWVycyAqLwogCiAJb2xkX2VuZCA9IG9sZF9hZGRyICsgbGVuOwogCWZsdXNoX2Nh Y2hlX3JhbmdlKHZtYSwgb2xkX2FkZHIsIG9sZF9lbmQpOwogCi0JbW11bl9zdGFydCA9IG9sZF9h ZGRyOwotCW1tdW5fZW5kICAgPSBvbGRfZW5kOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0KHZtYS0+dm1fbW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwlyYW5nZS5zdGFy dCA9IG9sZF9hZGRyOworCXJhbmdlLmVuZCA9IG9sZF9lbmQ7CisJcmFuZ2UubW0gPSB2bWEtPnZt X21tOworCisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAog CWZvciAoOyBvbGRfYWRkciA8IG9sZF9lbmQ7IG9sZF9hZGRyICs9IGV4dGVudCwgbmV3X2FkZHIg Kz0gZXh0ZW50KSB7CiAJCWNvbmRfcmVzY2hlZCgpOwpAQCAtMjQ3LDcgKzI0OCw3IEBAIHVuc2ln bmVkIGxvbmcgbW92ZV9wYWdlX3RhYmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJ CSAgbmV3X3BtZCwgbmV3X2FkZHIsIG5lZWRfcm1hcF9sb2Nrcyk7CiAJfQogCi0JbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHZtYS0+dm1fbW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5k KTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAogCXJldHVy biBsZW4gKyBvbGRfYWRkciAtIG9sZF9lbmQ7CS8qIGhvdyBtdWNoIGRvbmUgKi8KIH0KZGlmZiAt LWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jCmluZGV4IDY1ODlmNjBkNTAxOC4u YjI5YWIyNjI0ZTk1IDEwMDY0NAotLS0gYS9tbS9vb21fa2lsbC5jCisrKyBiL21tL29vbV9raWxs LmMKQEAgLTUxNiwxOSArNTE2LDIyIEBAIGJvb2wgX19vb21fcmVhcF90YXNrX21tKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tKQogCQkgKiBjb3VudCBlbGV2YXRlZCB3aXRob3V0IGEgZ29vZCByZWFzb24u CiAJCSAqLwogCQlpZiAodm1hX2lzX2Fub255bW91cyh2bWEpIHx8ICEodm1hLT52bV9mbGFncyAm IFZNX1NIQVJFRCkpIHsKLQkJCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3RhcnQgPSB2bWEtPnZtX3N0 YXJ0OwotCQkJY29uc3QgdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtPnZtX2VuZDsKKwkJCXN0cnVj dCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJCQlzdHJ1Y3QgbW11X2dhdGhlciB0bGI7CiAK LQkJCXRsYl9nYXRoZXJfbW11KCZ0bGIsIG1tLCBzdGFydCwgZW5kKTsKLQkJCWlmIChtbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydF9ub25ibG9jayhtbSwgc3RhcnQsIGVuZCkpIHsK LQkJCQl0bGJfZmluaXNoX21tdSgmdGxiLCBzdGFydCwgZW5kKTsKKwkJCXJhbmdlLnN0YXJ0ID0g dm1hLT52bV9zdGFydDsKKwkJCXJhbmdlLmVuZCA9IHZtYS0+dm1fZW5kOworCQkJcmFuZ2UubW0g PSBtbTsKKworCQkJdGxiX2dhdGhlcl9tbXUoJnRsYiwgbW0sIHJhbmdlLnN0YXJ0LCByYW5nZS5l bmQpOworCQkJaWYgKG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25vbmJsb2Nr KCZyYW5nZSkpIHsKKwkJCQl0bGJfZmluaXNoX21tdSgmdGxiLCByYW5nZS5zdGFydCwgcmFuZ2Uu ZW5kKTsKIAkJCQlyZXQgPSBmYWxzZTsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCXVubWFwX3Bh Z2VfcmFuZ2UoJnRsYiwgdm1hLCBzdGFydCwgZW5kLCBOVUxMKTsKLQkJCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgc3RhcnQsIGVuZCk7Ci0JCQl0bGJfZmluaXNoX21tdSgm dGxiLCBzdGFydCwgZW5kKTsKKwkJCXVubWFwX3BhZ2VfcmFuZ2UoJnRsYiwgdm1hLCByYW5nZS5z dGFydCwgcmFuZ2UuZW5kLCBOVUxMKTsKKwkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZCgmcmFuZ2UpOworCQkJdGxiX2ZpbmlzaF9tbXUoJnRsYiwgcmFuZ2Uuc3RhcnQsIHJhbmdl LmVuZCk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwppbmRl eCA4NWI3Zjk0MjMzNTIuLjA5YzVkOWU1Yzc2NiAxMDA2NDQKLS0tIGEvbW0vcm1hcC5jCisrKyBi L21tL3JtYXAuYwpAQCAtODg5LDE1ICs4ODksMTggQEAgc3RhdGljIGJvb2wgcGFnZV9ta2NsZWFu X29uZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCS5h ZGRyZXNzID0gYWRkcmVzcywKIAkJLmZsYWdzID0gUFZNV19TWU5DLAogCX07Ci0JdW5zaWduZWQg bG9uZyBzdGFydCA9IGFkZHJlc3MsIGVuZDsKKwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJh bmdlOwogCWludCAqY2xlYW5lZCA9IGFyZzsKIAogCS8qCiAJICogV2UgaGF2ZSB0byBhc3N1bWUg dGhlIHdvcnNlIGNhc2UgaWUgcG1kIGZvciBpbnZhbGlkYXRpb24uIE5vdGUgdGhhdAogCSAqIHRo ZSBwYWdlIGNhbiBub3QgYmUgZnJlZSBmcm9tIHRoaXMgZnVuY3Rpb24uCiAJICovCi0JZW5kID0g bWluKHZtYS0+dm1fZW5kLCBzdGFydCArIChQQUdFX1NJWkUgPDwgY29tcG91bmRfb3JkZXIocGFn ZSkpKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCh2bWEtPnZtX21tLCBz dGFydCwgZW5kKTsKKwlyYW5nZS5tbSA9IHZtYS0+dm1fbW07CisJcmFuZ2Uuc3RhcnQgPSBhZGRy ZXNzOworCXJhbmdlLmVuZCA9IG1pbih2bWEtPnZtX2VuZCwgcmFuZ2Uuc3RhcnQgKworCQkJKFBB R0VfU0laRSA8PCBjb21wb3VuZF9vcmRlcihwYWdlKSkpOworCW1tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAKIAl3aGlsZSAocGFnZV92bWFfbWFwcGVkX3dhbGso JnB2bXcpKSB7CiAJCXVuc2lnbmVkIGxvbmcgY3N0YXJ0OwpAQCAtOTQ5LDcgKzk1Miw3IEBAIHN0 YXRpYyBib29sIHBhZ2VfbWtjbGVhbl9vbmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLAogCQkJKCpjbGVhbmVkKSsrOwogCX0KIAotCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX2VuZCh2bWEtPnZtX21tLCBzdGFydCwgZW5kKTsKKwltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAt MTM0NSw3ICsxMzQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3QgcGFn ZSAqcGFnZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJcHRlX3QgcHRldmFsOwogCXN0 cnVjdCBwYWdlICpzdWJwYWdlOwogCWJvb2wgcmV0ID0gdHJ1ZTsKLQl1bnNpZ25lZCBsb25nIHN0 YXJ0ID0gYWRkcmVzcywgZW5kOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJ ZW51bSB0dHVfZmxhZ3MgZmxhZ3MgPSAoZW51bSB0dHVfZmxhZ3MpYXJnOwogCiAJLyogbXVubG9j ayBoYXMgbm90aGluZyB0byBnYWluIGZyb20gZXhhbWluaW5nIHVuLWxvY2tlZCB2bWFzICovCkBA IC0xMzY5LDE1ICsxMzcyLDE5IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0 IHBhZ2UgKnBhZ2UsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCSAqIE5vdGUgdGhhdCB0 aGUgcGFnZSBjYW4gbm90IGJlIGZyZWUgaW4gdGhpcyBmdW5jdGlvbiBhcyBjYWxsIG9mCiAJICog dHJ5X3RvX3VubWFwKCkgbXVzdCBob2xkIGEgcmVmZXJlbmNlIG9uIHRoZSBwYWdlLgogCSAqLwot CWVuZCA9IG1pbih2bWEtPnZtX2VuZCwgc3RhcnQgKyAoUEFHRV9TSVpFIDw8IGNvbXBvdW5kX29y ZGVyKHBhZ2UpKSk7CisJcmFuZ2UubW0gPSB2bWEtPnZtX21tOworCXJhbmdlLnN0YXJ0ID0gdm1h LT52bV9zdGFydDsKKwlyYW5nZS5lbmQgPSBtaW4odm1hLT52bV9lbmQsIHJhbmdlLnN0YXJ0ICsK KwkJCShQQUdFX1NJWkUgPDwgY29tcG91bmRfb3JkZXIocGFnZSkpKTsKIAlpZiAoUGFnZUh1Z2Uo cGFnZSkpIHsKIAkJLyoKIAkJICogSWYgc2hhcmluZyBpcyBwb3NzaWJsZSwgc3RhcnQgYW5kIGVu ZCB3aWxsIGJlIGFkanVzdGVkCiAJCSAqIGFjY29yZGluZ2x5LgogCQkgKi8KLQkJYWRqdXN0X3Jh bmdlX2lmX3BtZF9zaGFyaW5nX3Bvc3NpYmxlKHZtYSwgJnN0YXJ0LCAmZW5kKTsKKwkJYWRqdXN0 X3JhbmdlX2lmX3BtZF9zaGFyaW5nX3Bvc3NpYmxlKHZtYSwgJnJhbmdlLnN0YXJ0LAorCQkJCQkJ ICAgICAmcmFuZ2UuZW5kKTsKIAl9Ci0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQodm1hLT52bV9tbSwgc3RhcnQsIGVuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnQoJnJhbmdlKTsKIAogCXdoaWxlIChwYWdlX3ZtYV9tYXBwZWRfd2FsaygmcHZtdykp IHsKICNpZmRlZiBDT05GSUdfQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTgpAQCAtMTQyOCw5ICsx NDM1LDEwIEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IHBhZ2UgKnBhZ2Us IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkJCSAqIHdlIG11c3QgZmx1c2ggdGhlbSBh bGwuICBzdGFydC9lbmQgd2VyZQogCQkJCSAqIGFscmVhZHkgYWRqdXN0ZWQgYWJvdmUgdG8gY292 ZXIgdGhpcyByYW5nZS4KIAkJCQkgKi8KLQkJCQlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIHN0YXJ0 LCBlbmQpOwotCQkJCWZsdXNoX3RsYl9yYW5nZSh2bWEsIHN0YXJ0LCBlbmQpOwotCQkJCW1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKG1tLCBzdGFydCwgZW5kKTsKKwkJCQlmbHVzaF9jYWNo ZV9yYW5nZSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOworCQkJCWZsdXNoX3RsYl9yYW5n ZSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOworCQkJCW1tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlKG1tLCByYW5nZS5zdGFydCwKKwkJCQkJCQkgICAgICByYW5nZS5lbmQpOwogCiAJ CQkJLyoKIAkJCQkgKiBUaGUgcmVmIGNvdW50IG9mIHRoZSBQTUQgcGFnZSB3YXMgZHJvcHBlZApA QCAtMTY1MCw3ICsxNjU4LDcgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3Qg cGFnZSAqcGFnZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCXB1dF9wYWdlKHBhZ2Up OwogCX0KIAotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCh2bWEtPnZtX21tLCBz dGFydCwgZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsK IAogCXJldHVybiByZXQ7CiB9Ci0tIAoyLjE3LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=