From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [PATCH v2 2/3] mm/mmu_notifier: use structure for invalidate_range_start/end calls v2 Date: Wed, 5 Dec 2018 00:36:27 -0500 Message-ID: <20181205053628.3210-3-jglisse@redhat.com> References: <20181205053628.3210-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 D85C96E359 for ; Wed, 5 Dec 2018 05:37:11 +0000 (UTC) In-Reply-To: <20181205053628.3210-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?= , 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 bmFsIGNoYW5nZXMgd2l0aCB0aGlzCnBhdGNoLgoKQ2hhbmdlcyBzaW5jZSB2MToKICAgIC0gaW50 cm9kdWNlIG1tdV9ub3RpZmllcl9yYW5nZV9pbml0KCkgYXMgYW4gaGVscGVyIHRvIGluaXRpYWxp emUKICAgICAgdGhlIHJhbmdlIHN0cnVjdHVyZSBhbGxvd2luZyB0byBvcHRpbWl6ZSBvdXQgdGhl IGNhc2Ugd2hlbiBtbXUKICAgICAgbm90aWZpZXIgaXMgbm90IGVuYWJsZWQKICAgIC0gZml4IG1t L21pZ3JhdGUuYyBtaWdyYXRlX3ZtYV9jb2xsZWN0KCkKClNpZ25lZC1vZmYtYnk6IErDqXLDtG1l IEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpBY2tlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8 Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1m b3VuZGF0aW9uLm9yZz4KQ2M6IE1hdHRoZXcgV2lsY294IDxtYXdpbGNveEBtaWNyb3NvZnQuY29t PgpDYzogUm9zcyBad2lzbGVyIDx6d2lzbGVyQGtlcm5lbC5vcmc+CkNjOiBKYW4gS2FyYSA8amFj a0BzdXNlLmN6PgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNj OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgpDYzogUmFkaW0gS3LEjW3DocWZ IDxya3JjbWFyQHJlZGhhdC5jb20+CkNjOiBNaWNoYWwgSG9ja28gPG1ob2Nrb0BrZXJuZWwub3Jn PgpDYzogRmVsaXggS3VlaGxpbmcgPGZlbGl4Lmt1ZWhsaW5nQGFtZC5jb20+CkNjOiBSYWxwaCBD YW1wYmVsbCA8cmNhbXBiZWxsQG52aWRpYS5jb20+CkNjOiBKb2huIEh1YmJhcmQgPGpodWJiYXJk QG52aWRpYS5jb20+CkNjOiBrdm1Admdlci5rZXJuZWwub3JnCkNjOiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCkNjOiBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgt ZnNkZXZlbEB2Z2VyLmtlcm5lbC5vcmcKLS0tCiBmcy9kYXguYyAgICAgICAgICAgICAgICAgICAg IHwgIDggKy0tCiBmcy9wcm9jL3Rhc2tfbW11LmMgICAgICAgICAgIHwgIDcgKystCiBpbmNsdWRl L2xpbnV4L21tLmggICAgICAgICAgIHwgIDQgKy0KIGluY2x1ZGUvbGludXgvbW11X25vdGlmaWVy LmggfCA4NyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQoga2VybmVsL2V2ZW50cy91 cHJvYmVzLmMgICAgICB8IDEwICsrLS0KIG1tL2h1Z2VfbWVtb3J5LmMgICAgICAgICAgICAgfCA1 NCArKysrKysrKysrLS0tLS0tLS0tLQogbW0vaHVnZXRsYi5jICAgICAgICAgICAgICAgICB8IDUy ICsrKysrKysrKystLS0tLS0tLS0KIG1tL2todWdlcGFnZWQuYyAgICAgICAgICAgICAgfCAxMCAr Ky0tCiBtbS9rc20uYyAgICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKy0tLS0KIG1tL21hZHZp c2UuYyAgICAgICAgICAgICAgICAgfCAyMSArKysrLS0tLQogbW0vbWVtb3J5LmMgICAgICAgICAg ICAgICAgICB8IDk3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogbW0vbWln cmF0ZS5jICAgICAgICAgICAgICAgICB8IDI1ICsrKysrLS0tLS0KIG1tL21tdV9ub3RpZmllci5j ICAgICAgICAgICAgfCAzNSArKystLS0tLS0tLS0tCiBtbS9tcHJvdGVjdC5jICAgICAgICAgICAg ICAgIHwgMTUgKysrLS0tCiBtbS9tcmVtYXAuYyAgICAgICAgICAgICAgICAgIHwgMTAgKystLQog bW0vb29tX2tpbGwuYyAgICAgICAgICAgICAgICB8IDE3ICsrKystLS0KIG1tL3JtYXAuYyAgICAg ICAgICAgICAgICAgICAgfCAzMCArKysrKystLS0tLQogMTcgZmlsZXMgY2hhbmdlZCwgMjU4IGlu c2VydGlvbnMoKyksIDI0NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9kYXguYyBiL2Zz L2RheC5jCmluZGV4IDliY2NlODllYTE4ZS4uODc0MDg1YmFjYWY1IDEwMDY0NAotLS0gYS9mcy9k YXguYworKysgYi9mcy9kYXguYwpAQCAtNzU4LDcgKzc1OCw4IEBAIHN0YXRpYyB2b2lkIGRheF9l bnRyeV9ta2NsZWFuKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBwZ29mZl90IGluZGV4 LAogCiAJaV9tbWFwX2xvY2tfcmVhZChtYXBwaW5nKTsKIAl2bWFfaW50ZXJ2YWxfdHJlZV9mb3Jl YWNoKHZtYSwgJm1hcHBpbmctPmlfbW1hcCwgaW5kZXgsIGluZGV4KSB7Ci0JCXVuc2lnbmVkIGxv bmcgYWRkcmVzcywgc3RhcnQsIGVuZDsKKwkJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5n ZTsKKwkJdW5zaWduZWQgbG9uZyBhZGRyZXNzOwogCiAJCWNvbmRfcmVzY2hlZCgpOwogCkBAIC03 NzIsNyArNzczLDggQEAgc3RhdGljIHZvaWQgZGF4X2VudHJ5X21rY2xlYW4oc3RydWN0IGFkZHJl c3Nfc3BhY2UgKm1hcHBpbmcsIHBnb2ZmX3QgaW5kZXgsCiAJCSAqIGNhbGwgbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoKSBvbiBvdXIgYmVoYWxmCiAJCSAqIGJlZm9yZSB0YWtp bmcgYW55IGxvY2suCiAJCSAqLwotCQlpZiAoZm9sbG93X3B0ZV9wbWQodm1hLT52bV9tbSwgYWRk cmVzcywgJnN0YXJ0LCAmZW5kLCAmcHRlcCwgJnBtZHAsICZwdGwpKQorCQlpZiAoZm9sbG93X3B0 ZV9wbWQodm1hLT52bV9tbSwgYWRkcmVzcywgJnJhbmdlLAorCQkJCSAgICZwdGVwLCAmcG1kcCwg JnB0bCkpCiAJCQljb250aW51ZTsKIAogCQkvKgpAQCAtODE0LDcgKzgxNiw3IEBAIHN0YXRpYyB2 b2lkIGRheF9lbnRyeV9ta2NsZWFuKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBwZ29m Zl90IGluZGV4LAogCQkJcHRlX3VubWFwX3VubG9jayhwdGVwLCBwdGwpOwogCQl9CiAKLQkJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHZtYS0+dm1fbW0sIHN0YXJ0LCBlbmQpOwor CQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAl9CiAJaV9tbWFw X3VubG9ja19yZWFkKG1hcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvZnMvcHJvYy90YXNrX21tdS5j IGIvZnMvcHJvYy90YXNrX21tdS5jCmluZGV4IDQ3YzM3NjRjNDY5Yi4uYjNkZGNlYjAwM2JjIDEw MDY0NAotLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmMKKysrIGIvZnMvcHJvYy90YXNrX21tdS5jCkBA IC0xMDk2LDYgKzEwOTYsNyBAQCBzdGF0aWMgc3NpemVfdCBjbGVhcl9yZWZzX3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCQlyZXR1cm4gLUVTUkNIOwog CW1tID0gZ2V0X3Rhc2tfbW0odGFzayk7CiAJaWYgKG1tKSB7CisJCXN0cnVjdCBtbXVfbm90aWZp ZXJfcmFuZ2UgcmFuZ2U7CiAJCXN0cnVjdCBjbGVhcl9yZWZzX3ByaXZhdGUgY3AgPSB7CiAJCQku dHlwZSA9IHR5cGUsCiAJCX07CkBAIC0xMTM5LDExICsxMTQwLDEzIEBAIHN0YXRpYyBzc2l6ZV90 IGNsZWFyX3JlZnNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpi dWYsCiAJCQkJZG93bmdyYWRlX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwogCQkJCWJyZWFrOwogCQkJ fQotCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIDAsIC0xKTsKKwor CQkJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCBtbSwgMCwgLTFVTCk7CisJCQltbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCQl9CiAJCXdhbGtfcGFn ZV9yYW5nZSgwLCBtbS0+aGlnaGVzdF92bV9lbmQsICZjbGVhcl9yZWZzX3dhbGspOwogCQlpZiAo dHlwZSA9PSBDTEVBUl9SRUZTX1NPRlRfRElSVFkpCi0JCQltbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9lbmQobW0sIDAsIC0xKTsKKwkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZCgmcmFuZ2UpOwogCQl0bGJfZmluaXNoX21tdSgmdGxiLCAwLCAtMSk7CiAJCXVwX3JlYWQo Jm1tLT5tbWFwX3NlbSk7CiBvdXRfbW06CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmgg Yi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggNTQxMWRlOTNhMzYzLi5lN2I2ZjJiMzA3MTMgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAg LTEzOTcsNiArMTM5Nyw4IEBAIHN0cnVjdCBtbV93YWxrIHsKIAl2b2lkICpwcml2YXRlOwogfTsK IAorc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZTsKKwogaW50IHdhbGtfcGFnZV9yYW5nZSh1bnNp Z25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQlzdHJ1Y3QgbW1fd2FsayAqd2Fs ayk7CiBpbnQgd2Fsa19wYWdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0 IG1tX3dhbGsgKndhbGspOwpAQCAtMTQwNSw3ICsxNDA3LDcgQEAgdm9pZCBmcmVlX3BnZF9yYW5n ZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCB1bnNpZ25lZCBsb25nIGFkZHIsCiBpbnQgY29weV9w YWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLAog CQkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogaW50IGZvbGxvd19wdGVfcG1kKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCi0JCQkgICAgIHVuc2lnbmVk IGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsCisJCSAJICAgICBzdHJ1Y3QgbW11X25v dGlmaWVyX3JhbmdlICpyYW5nZSwKIAkJCSAgICAgcHRlX3QgKipwdGVwcCwgcG1kX3QgKipwbWRw cCwgc3BpbmxvY2tfdCAqKnB0bHApOwogaW50IGZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKIAl1bnNpZ25lZCBsb25nICpwZm4pOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgv bW11X25vdGlmaWVyLmgKaW5kZXggMzY4ZjBjMWEwNDlkLi4zOWIwNjc3MjQyN2YgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9tbXVf bm90aWZpZXIuaApAQCAtMjIwLDExICsyMjAsOCBAQCBleHRlcm4gaW50IF9fbW11X25vdGlmaWVy X3Rlc3RfeW91bmcoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQkJICAgICB1bnNpZ25lZCBsb25n IGFkZHJlc3MpOwogZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfY2hhbmdlX3B0ZShzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKIAkJCQkgICAgICB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHB0ZV90IHB0 ZSk7Ci1leHRlcm4gaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3Ry dWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBs b25nIGVuZCwKLQkJCQkgIGJvb2wgYmxvY2thYmxlKTsKLWV4dGVybiB2b2lkIF9fbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCSAgdW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCitleHRlcm4gaW50IF9fbW11X25v dGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAq KTsKK2V4dGVybiB2b2lkIF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVj dCBtbXVfbm90aWZpZXJfcmFuZ2UgKnIsCiAJCQkJICBib29sIG9ubHlfZW5kKTsKIGV4dGVybiB2 b2lkIF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0s CiAJCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7CkBAIC0yNjgs MzMgKzI2NSwzNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2NoYW5nZV9wdGUo c3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCV9fbW11X25vdGlmaWVyX2NoYW5nZV9wdGUobW0sIGFk ZHJlc3MsIHB0ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkgIHVuc2lnbmVkIGxv bmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorc3RhdGljIGlubGluZSB2b2lkCittbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpy YW5nZSkKIHsKLQlpZiAobW1faGFzX25vdGlmaWVycyhtbSkpCi0JCV9fbW11X25vdGlmaWVyX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIHN0YXJ0LCBlbmQsIHRydWUpOworCWlmIChtbV9oYXNf bm90aWZpZXJzKHJhbmdlLT5tbSkpIHsKKwkJcmFuZ2UtPmJsb2NrYWJsZSA9IHRydWU7CisJCV9f bW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQocmFuZ2UpOworCX0KIH0KIAotc3Rh dGljIGlubGluZSBpbnQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfbm9uYmxv Y2soc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNp Z25lZCBsb25nIGVuZCkKK3N0YXRpYyBpbmxpbmUgaW50CittbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9zdGFydF9ub25ibG9jayhzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkK IHsKLQlpZiAobW1faGFzX25vdGlmaWVycyhtbSkpCi0JCXJldHVybiBfX21tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBzdGFydCwgZW5kLCBmYWxzZSk7CisJaWYgKG1tX2hh c19ub3RpZmllcnMocmFuZ2UtPm1tKSkgeworCQlyYW5nZS0+YmxvY2thYmxlID0gZmFsc2U7CisJ CXJldHVybiBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHJhbmdlKTsKKwl9 CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdl KQogewotCWlmIChtbV9oYXNfbm90aWZpZXJzKG1tKSkKLQkJX19tbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9lbmQobW0sIHN0YXJ0LCBlbmQsIGZhbHNlKTsKKwlpZiAobW1faGFzX25vdGlm aWVycyhyYW5nZS0+bW0pKQorCQlfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChy YW5nZSwgZmFsc2UpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFs aWRhdGVfcmFuZ2Vfb25seV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICB1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQoc3RydWN0IG1tdV9ub3RpZmllcl9y YW5nZSAqcmFuZ2UpCiB7Ci0JaWYgKG1tX2hhc19ub3RpZmllcnMobW0pKQotCQlfX21tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgc3RhcnQsIGVuZCwgdHJ1ZSk7CisJaWYgKG1t X2hhc19ub3RpZmllcnMocmFuZ2UtPm1tKSkKKwkJX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZV9lbmQocmFuZ2UsIHRydWUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sCkBAIC0zMTUsNiArMzE2 LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfbW1fZGVzdHJveShzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKIAkJX19tbXVfbm90aWZpZXJfbW1fZGVzdHJveShtbSk7CiB9CiAKKwor c3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9yYW5nZV9pbml0KHN0cnVjdCBtbXVfbm90 aWZpZXJfcmFuZ2UgKnJhbmdlLAorCQkJCQkgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCQkJ ICAgdW5zaWduZWQgbG9uZyBzdGFydCwKKwkJCQkJICAgdW5zaWduZWQgbG9uZyBlbmQpCit7CisJ cmFuZ2UtPm1tID0gbW07CisJcmFuZ2UtPnN0YXJ0ID0gc3RhcnQ7CisJcmFuZ2UtPmVuZCA9IGVu ZDsKK30KKwogI2RlZmluZSBwdGVwX2NsZWFyX2ZsdXNoX3lvdW5nX25vdGlmeShfX3ZtYSwgX19h ZGRyZXNzLCBfX3B0ZXApCQlcCiAoewkJCQkJCQkJCVwKIAlpbnQgX195b3VuZzsJCQkJCQkJXApA QCAtNDI4LDYgKzQ0MCwyMyBAQCBleHRlcm4gdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUo dm9pZCk7CiAKICNlbHNlIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi8KIAorc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSB7CisJdW5zaWduZWQgbG9uZyBzdGFydDsKKwl1bnNpZ25lZCBsb25nIGVu ZDsKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfbW11X25vdGlmaWVyX3JhbmdlX2luaXQoc3Ry dWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIHN0 YXJ0LAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyBlbmQpCit7CisJcmFuZ2UtPnN0YXJ0ID0gc3Rh cnQ7CisJcmFuZ2UtPmVuZCA9IGVuZDsKK30KKworI2RlZmluZSBtbXVfbm90aWZpZXJfcmFuZ2Vf aW5pdChyYW5nZSwgbW0sIHN0YXJ0LCBlbmQpIFwKKwlfbW11X25vdGlmaWVyX3JhbmdlX2luaXQo cmFuZ2UsIHN0YXJ0LCBlbmQpCisKKwogc3RhdGljIGlubGluZSBpbnQgbW1faGFzX25vdGlmaWVy cyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIHsKIAlyZXR1cm4gMDsKQEAgLTQ1NSwyNCArNDg0LDI0 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfY2hhbmdlX3B0ZShzdHJ1Y3QgbW1f c3RydWN0ICptbSwKIHsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCSAgdW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCitzdGF0aWMgaW5saW5lIHZvaWQKK21tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2Ug KnJhbmdlKQogewogfQogCi1zdGF0aWMgaW5saW5lIGludCBtbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9zdGFydF9ub25ibG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkgIHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorc3RhdGljIGlubGluZSBpbnQKK21t dV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25vbmJsb2NrKHN0cnVjdCBtbXVfbm90 aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW5saW5lIHZv aWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t LAotCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCitzdGF0aWMg aW5saW5lCit2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11 X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKIHsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIG1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAot CQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCitzdGF0aWMgaW5s aW5lIHZvaWQKK21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKHN0cnVjdCBt bXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogfQogCmRpZmYgLS1naXQgYS9rZXJuZWwvZXZl bnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jCmluZGV4IDMyMmU5N2JiYjQz Ny4uMWZjOGE5MzcwOWMzIDEwMDY0NAotLS0gYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYworKysg Yi9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYwpAQCAtMTcxLDExICsxNzEsMTEgQEAgc3RhdGljIGlu dCBfX3JlcGxhY2VfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9u ZyBhZGRyLAogCQkuYWRkcmVzcyA9IGFkZHIsCiAJfTsKIAlpbnQgZXJyOwotCS8qIEZvciBtbXVf bm90aWZpZXJzICovCi0JY29uc3QgdW5zaWduZWQgbG9uZyBtbXVuX3N0YXJ0ID0gYWRkcjsKLQlj b25zdCB1bnNpZ25lZCBsb25nIG1tdW5fZW5kICAgPSBhZGRyICsgUEFHRV9TSVpFOworCXN0cnVj dCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwog CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCBtbSwgYWRkciwgYWRkciArIFBBR0Vf U0laRSk7CisKIAlWTV9CVUdfT05fUEFHRShQYWdlVHJhbnNIdWdlKG9sZF9wYWdlKSwgb2xkX3Bh Z2UpOwogCiAJZXJyID0gbWVtX2Nncm91cF90cnlfY2hhcmdlKG5ld19wYWdlLCB2bWEtPnZtX21t LCBHRlBfS0VSTkVMLCAmbWVtY2csCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIGludCBfX3Jl cGxhY2VfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRy LAogCS8qIEZvciB0cnlfdG9fZnJlZV9zd2FwKCkgYW5kIG11bmxvY2tfdm1hX3BhZ2UoKSBiZWxv dyAqLwogCWxvY2tfcGFnZShvbGRfcGFnZSk7CiAKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZV9zdGFydChtbSwgbW11bl9zdGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAJZXJyID0gLUVBR0FJTjsKIAlpZiAoIXBhZ2Vf dm1hX21hcHBlZF93YWxrKCZwdm13KSkgewogCQltZW1fY2dyb3VwX2NhbmNlbF9jaGFyZ2UobmV3 X3BhZ2UsIG1lbWNnLCBmYWxzZSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGludCBfX3Jl cGxhY2VfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRy LAogCiAJZXJyID0gMDsKICB1bmxvY2s6Ci0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vf ZW5kKG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVf cmFuZ2VfZW5kKCZyYW5nZSk7CiAJdW5sb2NrX3BhZ2Uob2xkX3BhZ2UpOwogCXJldHVybiBlcnI7 CiB9CmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRl eCA2MjJjY2VkNzRmZDkuLmMxZDNjZTgwOTQxNiAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnku YworKysgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0xMTQ0LDggKzExNDQsNyBAQCBzdGF0aWMgdm1f ZmF1bHRfdCBkb19odWdlX3BtZF93cF9wYWdlX2ZhbGxiYWNrKHN0cnVjdCB2bV9mYXVsdCAqdm1m LAogCWludCBpOwogCXZtX2ZhdWx0X3QgcmV0ID0gMDsKIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwot CXVuc2lnbmVkIGxvbmcgbW11bl9zdGFydDsJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KLQl1bnNp Z25lZCBsb25nIG1tdW5fZW5kOwkJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KKwlzdHJ1Y3QgbW11 X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCiAJcGFnZXMgPSBrbWFsbG9jX2FycmF5KEhQQUdFX1BN RF9OUiwgc2l6ZW9mKHN0cnVjdCBwYWdlICopLAogCQkJICAgICAgR0ZQX0tFUk5FTCk7CkBAIC0x MTgzLDkgKzExODIsOSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkb19odWdlX3BtZF93cF9wYWdlX2Zh bGxiYWNrKHN0cnVjdCB2bV9mYXVsdCAqdm1mLAogCQljb25kX3Jlc2NoZWQoKTsKIAl9CiAKLQlt bXVuX3N0YXJ0ID0gaGFkZHI7Ci0JbW11bl9lbmQgICA9IGhhZGRyICsgSFBBR0VfUE1EX1NJWkU7 Ci0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQodm1hLT52bV9tbSwgbW11bl9z dGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9yYW5nZV9pbml0KCZyYW5nZSwgdm1hLT52 bV9tbSwgaGFkZHIsCisJCQkJaGFkZHIgKyBIUEFHRV9QTURfU0laRSk7CisJbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAogCXZtZi0+cHRsID0gcG1kX2xvY2so dm1hLT52bV9tbSwgdm1mLT5wbWQpOwogCWlmICh1bmxpa2VseSghcG1kX3NhbWUoKnZtZi0+cG1k LCBvcmlnX3BtZCkpKQpAQCAtMTIzMCw4ICsxMjI5LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZG9f aHVnZV9wbWRfd3BfcGFnZV9mYWxsYmFjayhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwKIAkgKiBObyBu ZWVkIHRvIGRvdWJsZSBjYWxsIG1tdV9ub3RpZmllci0+aW52YWxpZGF0ZV9yYW5nZSgpIGNhbGxi YWNrIGFzCiAJICogdGhlIGFib3ZlIHBtZHBfaHVnZV9jbGVhcl9mbHVzaF9ub3RpZnkoKSBkaWQg YWxyZWFkeSBjYWxsIGl0LgogCSAqLwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29u bHlfZW5kKHZtYS0+dm1fbW0sIG1tdW5fc3RhcnQsCi0JCQkJCQltbXVuX2VuZCk7CisJbW11X25v dGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQoJnJhbmdlKTsKIAogCXJldCB8PSBWTV9G QVVMVF9XUklURTsKIAlwdXRfcGFnZShwYWdlKTsKQEAgLTEyNDEsNyArMTIzOSw3IEBAIHN0YXRp YyB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX3dwX3BhZ2VfZmFsbGJhY2soc3RydWN0IHZtX2ZhdWx0 ICp2bWYsCiAKIG91dF9mcmVlX3BhZ2VzOgogCXNwaW5fdW5sb2NrKHZtZi0+cHRsKTsKLQltbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQodm1hLT52bV9tbSwgbW11bl9zdGFydCwgbW11 bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwogCWZv ciAoaSA9IDA7IGkgPCBIUEFHRV9QTURfTlI7IGkrKykgewogCQltZW1jZyA9ICh2b2lkICopcGFn ZV9wcml2YXRlKHBhZ2VzW2ldKTsKIAkJc2V0X3BhZ2VfcHJpdmF0ZShwYWdlc1tpXSwgMCk7CkBA IC0xMjU4LDggKzEyNTYsNyBAQCB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX3dwX3BhZ2Uoc3RydWN0 IHZtX2ZhdWx0ICp2bWYsIHBtZF90IG9yaWdfcG1kKQogCXN0cnVjdCBwYWdlICpwYWdlID0gTlVM TCwgKm5ld19wYWdlOwogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKIAl1bnNpZ25lZCBsb25n IGhhZGRyID0gdm1mLT5hZGRyZXNzICYgSFBBR0VfUE1EX01BU0s7Ci0JdW5zaWduZWQgbG9uZyBt bXVuX3N0YXJ0OwkvKiBGb3IgbW11X25vdGlmaWVycyAqLwotCXVuc2lnbmVkIGxvbmcgbW11bl9l bmQ7CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2Ug cmFuZ2U7CiAJZ2ZwX3QgaHVnZV9nZnA7CQkJLyogZm9yIGFsbG9jYXRpb24gYW5kIGNoYXJnZSAq LwogCXZtX2ZhdWx0X3QgcmV0ID0gMDsKIApAQCAtMTM0OSw5ICsxMzQ2LDkgQEAgdm1fZmF1bHRf dCBkb19odWdlX3BtZF93cF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBwbWRfdCBvcmlnX3Bt ZCkKIAkJCQkgICAgdm1hLCBIUEFHRV9QTURfTlIpOwogCV9fU2V0UGFnZVVwdG9kYXRlKG5ld19w YWdlKTsKIAotCW1tdW5fc3RhcnQgPSBoYWRkcjsKLQltbXVuX2VuZCAgID0gaGFkZHIgKyBIUEFH RV9QTURfU0laRTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCh2bWEtPnZt X21tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJh bmdlLCB2bWEtPnZtX21tLCBoYWRkciwKKwkJCQloYWRkciArIEhQQUdFX1BNRF9TSVpFKTsKKwlt bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCiAJc3Bpbl9sb2Nr KHZtZi0+cHRsKTsKIAlpZiAocGFnZSkKQEAgLTEzODYsOCArMTM4Myw3IEBAIHZtX2ZhdWx0X3Qg ZG9faHVnZV9wbWRfd3BfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgcG1kX3Qgb3JpZ19wbWQp CiAJICogTm8gbmVlZCB0byBkb3VibGUgY2FsbCBtbXVfbm90aWZpZXItPmludmFsaWRhdGVfcmFu Z2UoKSBjYWxsYmFjayBhcwogCSAqIHRoZSBhYm92ZSBwbWRwX2h1Z2VfY2xlYXJfZmx1c2hfbm90 aWZ5KCkgZGlkIGFscmVhZHkgY2FsbCBpdC4KIAkgKi8KLQltbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9vbmx5X2VuZCh2bWEtPnZtX21tLCBtbXVuX3N0YXJ0LAotCQkJCQkgICAgICAgbW11 bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKCZyYW5nZSk7 CiBvdXQ6CiAJcmV0dXJuIHJldDsKIG91dF91bmxvY2s6CkBAIC0yMDI4LDE0ICsyMDI0LDE1IEBA IHZvaWQgX19zcGxpdF9odWdlX3B1ZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcHVkX3Qg KnB1ZCwKIAkJdW5zaWduZWQgbG9uZyBhZGRyZXNzKQogewogCXNwaW5sb2NrX3QgKnB0bDsKLQlz dHJ1Y3QgbW1fc3RydWN0ICptbSA9IHZtYS0+dm1fbW07Ci0JdW5zaWduZWQgbG9uZyBoYWRkciA9 IGFkZHJlc3MgJiBIUEFHRV9QVURfTUFTSzsKKwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJh bmdlOwogCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIGhhZGRyLCBo YWRkciArIEhQQUdFX1BVRF9TSVpFKTsKLQlwdGwgPSBwdWRfbG9jayhtbSwgcHVkKTsKKwltbXVf bm90aWZpZXJfcmFuZ2VfaW5pdCgmcmFuZ2UsIHZtYS0+dm1fbW0sIGFkZHJlc3MgJiBIUEFHRV9Q VURfTUFTSywKKwkJCQkoYWRkcmVzcyAmIEhQQUdFX1BVRF9NQVNLKSArIEhQQUdFX1BVRF9TSVpF KTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOworCXB0bCA9 IHB1ZF9sb2NrKHZtYS0+dm1fbW0sIHB1ZCk7CiAJaWYgKHVubGlrZWx5KCFwdWRfdHJhbnNfaHVn ZSgqcHVkKSAmJiAhcHVkX2Rldm1hcCgqcHVkKSkpCiAJCWdvdG8gb3V0OwotCV9fc3BsaXRfaHVn ZV9wdWRfbG9ja2VkKHZtYSwgcHVkLCBoYWRkcik7CisJX19zcGxpdF9odWdlX3B1ZF9sb2NrZWQo dm1hLCBwdWQsIHJhbmdlLnN0YXJ0KTsKIAogb3V0OgogCXNwaW5fdW5sb2NrKHB0bCk7CkBAIC0y MDQzLDggKzIwNDAsNyBAQCB2b2lkIF9fc3BsaXRfaHVnZV9wdWQoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHB1ZF90ICpwdWQsCiAJICogTm8gbmVlZCB0byBkb3VibGUgY2FsbCBtbXVfbm90 aWZpZXItPmludmFsaWRhdGVfcmFuZ2UoKSBjYWxsYmFjayBhcwogCSAqIHRoZSBhYm92ZSBwdWRw X2h1Z2VfY2xlYXJfZmx1c2hfbm90aWZ5KCkgZGlkIGFscmVhZHkgY2FsbCBpdC4KIAkgKi8KLQlt bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9vbmx5X2VuZChtbSwgaGFkZHIsIGhhZGRyICsK LQkJCQkJICAgICAgIEhQQUdFX1BVRF9TSVpFKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZV9vbmx5X2VuZCgmcmFuZ2UpOwogfQogI2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfVFJB TlNQQVJFTlRfSFVHRVBBR0VfUFVEICovCiAKQEAgLTIyNDQsMTEgKzIyNDAsMTIgQEAgdm9pZCBf X3NwbGl0X2h1Z2VfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwbWRfdCAqcG1kLAog CQl1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGJvb2wgZnJlZXplLCBzdHJ1Y3QgcGFnZSAqcGFnZSkK IHsKIAlzcGlubG9ja190ICpwdGw7Ci0Jc3RydWN0IG1tX3N0cnVjdCAqbW0gPSB2bWEtPnZtX21t OwotCXVuc2lnbmVkIGxvbmcgaGFkZHIgPSBhZGRyZXNzICYgSFBBR0VfUE1EX01BU0s7CisJc3Ry dWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKIAotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KG1tLCBoYWRkciwgaGFkZHIgKyBIUEFHRV9QTURfU0laRSk7Ci0JcHRsID0g cG1kX2xvY2sobW0sIHBtZCk7CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCB2bWEt PnZtX21tLCBhZGRyZXNzICYgSFBBR0VfUE1EX01BU0ssCisJCQkJKGFkZHJlc3MgJiBIUEFHRV9Q TURfTUFTSykgKyBIUEFHRV9QTURfU0laRSk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnQoJnJhbmdlKTsKKwlwdGwgPSBwbWRfbG9jayh2bWEtPnZtX21tLCBwbWQpOwogCiAJ LyoKIAkgKiBJZiBjYWxsZXIgYXNrcyB0byBzZXR1cCBhIG1pZ3JhdGlvbiBlbnRyaWVzLCB3ZSBu ZWVkIGEgcGFnZSB0byBjaGVjawpAQCAtMjI2NCw3ICsyMjYxLDcgQEAgdm9pZCBfX3NwbGl0X2h1 Z2VfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwbWRfdCAqcG1kLAogCQkJY2xlYXJf cGFnZV9tbG9jayhwYWdlKTsKIAl9IGVsc2UgaWYgKCEocG1kX2Rldm1hcCgqcG1kKSB8fCBpc19w bWRfbWlncmF0aW9uX2VudHJ5KCpwbWQpKSkKIAkJZ290byBvdXQ7Ci0JX19zcGxpdF9odWdlX3Bt ZF9sb2NrZWQodm1hLCBwbWQsIGhhZGRyLCBmcmVlemUpOworCV9fc3BsaXRfaHVnZV9wbWRfbG9j a2VkKHZtYSwgcG1kLCByYW5nZS5zdGFydCwgZnJlZXplKTsKIG91dDoKIAlzcGluX3VubG9jayhw dGwpOwogCS8qCkBAIC0yMjgwLDggKzIyNzcsNyBAQCB2b2lkIF9fc3BsaXRfaHVnZV9wbWQoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHBtZF90ICpwbWQsCiAJICogICAgIGFueSBmdXJ0aGVy IGNoYW5nZXMgdG8gaW5kaXZpZHVhbCBwdGUgd2lsbCBub3RpZnkuIFNvIG5vIG5lZWQKIAkgKiAg ICAgdG8gY2FsbCBtbXVfbm90aWZpZXItPmludmFsaWRhdGVfcmFuZ2UoKQogCSAqLwotCW1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKG1tLCBoYWRkciwgaGFkZHIgKwotCQkJ CQkgICAgICAgSFBBR0VfUE1EX1NJWkUpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X29ubHlfZW5kKCZyYW5nZSk7CiB9CiAKIHZvaWQgc3BsaXRfaHVnZV9wbWRfYWRkcmVzcyhzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLApkaWZmIC0tZ2l0 IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IDcwNWEzZTljYzkxMC4uZTdjMTc5 Y2JjZDc1IDEwMDY0NAotLS0gYS9tbS9odWdldGxiLmMKKysrIGIvbW0vaHVnZXRsYi5jCkBAIC0z MjM5LDE2ICszMjM5LDE2IEBAIGludCBjb3B5X2h1Z2V0bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1f c3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyYywKIAlpbnQgY293OwogCXN0cnVjdCBo c3RhdGUgKmggPSBoc3RhdGVfdm1hKHZtYSk7CiAJdW5zaWduZWQgbG9uZyBzeiA9IGh1Z2VfcGFn ZV9zaXplKGgpOwotCXVuc2lnbmVkIGxvbmcgbW11bl9zdGFydDsJLyogRm9yIG1tdV9ub3RpZmll cnMgKi8KLQl1bnNpZ25lZCBsb25nIG1tdW5fZW5kOwkJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8K KwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCWludCByZXQgPSAwOwogCiAJY293 ID0gKHZtYS0+dm1fZmxhZ3MgJiAoVk1fU0hBUkVEIHwgVk1fTUFZV1JJVEUpKSA9PSBWTV9NQVlX UklURTsKIAotCW1tdW5fc3RhcnQgPSB2bWEtPnZtX3N0YXJ0OwotCW1tdW5fZW5kID0gdm1hLT52 bV9lbmQ7Ci0JaWYgKGNvdykKLQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQo c3JjLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJaWYgKGNvdykgeworCQltbXVfbm90aWZpZXJf cmFuZ2VfaW5pdCgmcmFuZ2UsIHNyYywgdm1hLT52bV9zdGFydCwKKwkJCQkJdm1hLT52bV9lbmQp OworCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOworCX0KIAog CWZvciAoYWRkciA9IHZtYS0+dm1fc3RhcnQ7IGFkZHIgPCB2bWEtPnZtX2VuZDsgYWRkciArPSBz eikgewogCQlzcGlubG9ja190ICpzcmNfcHRsLCAqZHN0X3B0bDsKQEAgLTMzMjQsNyArMzMyNCw3 IEBAIGludCBjb3B5X2h1Z2V0bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0 cnVjdCBtbV9zdHJ1Y3QgKnNyYywKIAl9CiAKIAlpZiAoY293KQotCQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9lbmQoc3JjLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJCW1tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAg LTMzNDEsOCArMzM0MSw3IEBAIHZvaWQgX191bm1hcF9odWdlcGFnZV9yYW5nZShzdHJ1Y3QgbW11 X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlzdHJ1Y3QgcGFnZSAq cGFnZTsKIAlzdHJ1Y3QgaHN0YXRlICpoID0gaHN0YXRlX3ZtYSh2bWEpOwogCXVuc2lnbmVkIGxv bmcgc3ogPSBodWdlX3BhZ2Vfc2l6ZShoKTsKLQl1bnNpZ25lZCBsb25nIG1tdW5fc3RhcnQgPSBz dGFydDsJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KLQl1bnNpZ25lZCBsb25nIG1tdW5fZW5kICAg PSBlbmQ7CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFu Z2UgcmFuZ2U7CiAKIAlXQVJOX09OKCFpc192bV9odWdldGxiX3BhZ2Uodm1hKSk7CiAJQlVHX09O KHN0YXJ0ICYgfmh1Z2VfcGFnZV9tYXNrKGgpKTsKQEAgLTMzNTgsOCArMzM1Nyw5IEBAIHZvaWQg X191bm1hcF9odWdlcGFnZV9yYW5nZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwKIAkvKgogCSAqIElmIHNoYXJpbmcgcG9zc2libGUsIGFsZXJ0IG1t dSBub3RpZmllcnMgb2Ygd29yc3QgY2FzZS4KIAkgKi8KLQlhZGp1c3RfcmFuZ2VfaWZfcG1kX3No YXJpbmdfcG9zc2libGUodm1hLCAmbW11bl9zdGFydCwgJm1tdW5fZW5kKTsKLQltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgbW11bl9zdGFydCwgbW11bl9lbmQpOworCW1t dV9ub3RpZmllcl9yYW5nZV9pbml0KCZyYW5nZSwgbW0sIHN0YXJ0LCBlbmQpOworCWFkanVzdF9y YW5nZV9pZl9wbWRfc2hhcmluZ19wb3NzaWJsZSh2bWEsICZyYW5nZS5zdGFydCwgJnJhbmdlLmVu ZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAlhZGRy ZXNzID0gc3RhcnQ7CiAJZm9yICg7IGFkZHJlc3MgPCBlbmQ7IGFkZHJlc3MgKz0gc3opIHsKIAkJ cHRlcCA9IGh1Z2VfcHRlX29mZnNldChtbSwgYWRkcmVzcywgc3opOwpAQCAtMzQyNyw3ICszNDI3 LDcgQEAgdm9pZCBfX3VubWFwX2h1Z2VwYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQlpZiAocmVmX3BhZ2UpCiAJCQlicmVhazsK IAl9Ci0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCBtbXVuX3N0YXJ0LCBt bXVuX2VuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiAJ dGxiX2VuZF92bWEodGxiLCB2bWEpOwogfQogCkBAIC0zNTQ1LDkgKzM1NDUsOCBAQCBzdGF0aWMg dm1fZmF1bHRfdCBodWdldGxiX2NvdyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsCiAJc3RydWN0IHBhZ2UgKm9sZF9wYWdlLCAqbmV3X3BhZ2U7CiAJaW50 IG91dHNpZGVfcmVzZXJ2ZSA9IDA7CiAJdm1fZmF1bHRfdCByZXQgPSAwOwotCXVuc2lnbmVkIGxv bmcgbW11bl9zdGFydDsJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KLQl1bnNpZ25lZCBsb25nIG1t dW5fZW5kOwkJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KIAl1bnNpZ25lZCBsb25nIGhhZGRyID0g YWRkcmVzcyAmIGh1Z2VfcGFnZV9tYXNrKGgpOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2Ug cmFuZ2U7CiAKIAlwdGUgPSBodWdlX3B0ZXBfZ2V0KHB0ZXApOwogCW9sZF9wYWdlID0gcHRlX3Bh Z2UocHRlKTsKQEAgLTM2MjYsOSArMzYyNSw4IEBAIHN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJf Y293KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlf X1NldFBhZ2VVcHRvZGF0ZShuZXdfcGFnZSk7CiAJc2V0X3BhZ2VfaHVnZV9hY3RpdmUobmV3X3Bh Z2UpOwogCi0JbW11bl9zdGFydCA9IGhhZGRyOwotCW1tdW5fZW5kID0gbW11bl9zdGFydCArIGh1 Z2VfcGFnZV9zaXplKGgpOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1t LCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdl LCBtbSwgaGFkZHIsIGhhZGRyICsgaHVnZV9wYWdlX3NpemUoaCkpOworCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAKIAkvKgogCSAqIFJldGFrZSB0aGUgcGFn ZSB0YWJsZSBsb2NrIHRvIGNoZWNrIGZvciByYWNpbmcgdXBkYXRlcwpAQCAtMzY0MSw3ICszNjM5 LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl9jb3coc3RydWN0IG1tX3N0cnVjdCAqbW0s IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCiAJCS8qIEJyZWFrIENPVyAqLwogCQlodWdl X3B0ZXBfY2xlYXJfZmx1c2godm1hLCBoYWRkciwgcHRlcCk7Ci0JCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlKG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlKG1tLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKIAkJc2V0X2h1Z2Vf cHRlX2F0KG1tLCBoYWRkciwgcHRlcCwKIAkJCQltYWtlX2h1Z2VfcHRlKHZtYSwgbmV3X3BhZ2Us IDEpKTsKIAkJcGFnZV9yZW1vdmVfcm1hcChvbGRfcGFnZSwgdHJ1ZSk7CkBAIC0zNjUwLDcgKzM2 NDgsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX2NvdyhzdHJ1Y3QgbW1fc3RydWN0ICpt bSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCW5ld19wYWdlID0gb2xkX3BhZ2U7CiAJ fQogCXNwaW5fdW5sb2NrKHB0bCk7Ci0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5k KG1tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2VfZW5kKCZyYW5nZSk7CiBvdXRfcmVsZWFzZV9hbGw6CiAJcmVzdG9yZV9yZXNlcnZlX29uX2Vy cm9yKGgsIHZtYSwgaGFkZHIsIG5ld19wYWdlKTsKIAlwdXRfcGFnZShuZXdfcGFnZSk7CkBAIC00 MzM5LDIxICs0MzM3LDIxIEBAIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jaGFuZ2VfcHJvdGVjdGlv bihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlwdGVfdCBwdGU7CiAJc3RydWN0IGhzdGF0 ZSAqaCA9IGhzdGF0ZV92bWEodm1hKTsKIAl1bnNpZ25lZCBsb25nIHBhZ2VzID0gMDsKLQl1bnNp Z25lZCBsb25nIGZfc3RhcnQgPSBzdGFydDsKLQl1bnNpZ25lZCBsb25nIGZfZW5kID0gZW5kOwog CWJvb2wgc2hhcmVkX3BtZCA9IGZhbHNlOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFu Z2U7CiAKIAkvKgogCSAqIEluIHRoZSBjYXNlIG9mIHNoYXJlZCBQTURzLCB0aGUgYXJlYSB0byBm bHVzaCBjb3VsZCBiZSBiZXlvbmQKLQkgKiBzdGFydC9lbmQuICBTZXQgZl9zdGFydC9mX2VuZCB0 byBjb3ZlciB0aGUgbWF4aW11bSBwb3NzaWJsZQorCSAqIHN0YXJ0L2VuZC4gIFNldCByYW5nZS5z dGFydC9yYW5nZS5lbmQgdG8gY292ZXIgdGhlIG1heGltdW0gcG9zc2libGUKIAkgKiByYW5nZSBp ZiBQTUQgc2hhcmluZyBpcyBwb3NzaWJsZS4KIAkgKi8KLQlhZGp1c3RfcmFuZ2VfaWZfcG1kX3No YXJpbmdfcG9zc2libGUodm1hLCAmZl9zdGFydCwgJmZfZW5kKTsKKwltbXVfbm90aWZpZXJfcmFu Z2VfaW5pdCgmcmFuZ2UsIG1tLCBzdGFydCwgZW5kKTsKKwlhZGp1c3RfcmFuZ2VfaWZfcG1kX3No YXJpbmdfcG9zc2libGUodm1hLCAmcmFuZ2Uuc3RhcnQsICZyYW5nZS5lbmQpOwogCiAJQlVHX09O KGFkZHJlc3MgPj0gZW5kKTsKLQlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIGZfc3RhcnQsIGZfZW5k KTsKKwlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwogCi0J bW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIGZfc3RhcnQsIGZfZW5kKTsK KwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgmcmFuZ2UpOwogCWlfbW1hcF9s b2NrX3dyaXRlKHZtYS0+dm1fZmlsZS0+Zl9tYXBwaW5nKTsKIAlmb3IgKDsgYWRkcmVzcyA8IGVu ZDsgYWRkcmVzcyArPSBodWdlX3BhZ2Vfc2l6ZShoKSkgewogCQlzcGlubG9ja190ICpwdGw7CkBA IC00NDA0LDcgKzQ0MDIsNyBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY2hhbmdlX3Byb3RlY3Rp b24oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJICogZGlkIHVuc2hhcmUgYSBwYWdlIG9m IHBtZHMsIGZsdXNoIHRoZSByYW5nZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBwdWQuCiAJICovCiAJ aWYgKHNoYXJlZF9wbWQpCi0JCWZsdXNoX2h1Z2V0bGJfdGxiX3JhbmdlKHZtYSwgZl9zdGFydCwg Zl9lbmQpOworCQlmbHVzaF9odWdldGxiX3RsYl9yYW5nZSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5n ZS5lbmQpOwogCWVsc2UKIAkJZmx1c2hfaHVnZXRsYl90bGJfcmFuZ2Uodm1hLCBzdGFydCwgZW5k KTsKIAkvKgpAQCAtNDQxNCw3ICs0NDEyLDcgQEAgdW5zaWduZWQgbG9uZyBodWdldGxiX2NoYW5n ZV9wcm90ZWN0aW9uKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCSAqIFNlZSBEb2N1bWVu dGF0aW9uL3ZtL21tdV9ub3RpZmllci5yc3QKIAkgKi8KIAlpX21tYXBfdW5sb2NrX3dyaXRlKHZt YS0+dm1fZmlsZS0+Zl9tYXBwaW5nKTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9l bmQobW0sIGZfc3RhcnQsIGZfZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9l bmQoJnJhbmdlKTsKIAogCXJldHVybiBwYWdlcyA8PCBoLT5vcmRlcjsKIH0KZGlmZiAtLWdpdCBh L21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuYwppbmRleCA4ZTJmZjE5NWVjYjMuLjc3 MzZmNmMzN2YxOSAxMDA2NDQKLS0tIGEvbW0va2h1Z2VwYWdlZC5jCisrKyBiL21tL2todWdlcGFn ZWQuYwpAQCAtOTQ0LDggKzk0NCw3IEBAIHN0YXRpYyB2b2lkIGNvbGxhcHNlX2h1Z2VfcGFnZShz dHJ1Y3QgbW1fc3RydWN0ICptbSwKIAlpbnQgaXNvbGF0ZWQgPSAwLCByZXN1bHQgPSAwOwogCXN0 cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKLQl1 bnNpZ25lZCBsb25nIG1tdW5fc3RhcnQ7CS8qIEZvciBtbXVfbm90aWZpZXJzICovCi0JdW5zaWdu ZWQgbG9uZyBtbXVuX2VuZDsJCS8qIEZvciBtbXVfbm90aWZpZXJzICovCisJc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSByYW5nZTsKIAlnZnBfdCBnZnA7CiAKIAlWTV9CVUdfT04oYWRkcmVzcyAm IH5IUEFHRV9QTURfTUFTSyk7CkBAIC0xMDE3LDkgKzEwMTYsOCBAQCBzdGF0aWMgdm9pZCBjb2xs YXBzZV9odWdlX3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJcHRlID0gcHRlX29mZnNldF9t YXAocG1kLCBhZGRyZXNzKTsKIAlwdGVfcHRsID0gcHRlX2xvY2twdHIobW0sIHBtZCk7CiAKLQlt bXVuX3N0YXJ0ID0gYWRkcmVzczsKLQltbXVuX2VuZCAgID0gYWRkcmVzcyArIEhQQUdFX1BNRF9T SVpFOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBtbXVuX3N0YXJ0 LCBtbXVuX2VuZCk7CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCBtbSwgYWRkcmVz cywgYWRkcmVzcyArIEhQQUdFX1BNRF9TSVpFKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZV9zdGFydCgmcmFuZ2UpOwogCXBtZF9wdGwgPSBwbWRfbG9jayhtbSwgcG1kKTsgLyogcHJv YmFibHkgdW5uZWNlc3NhcnkgKi8KIAkvKgogCSAqIEFmdGVyIHRoaXMgZ3VwX2Zhc3QgY2FuJ3Qg cnVuIGFueW1vcmUuIFRoaXMgYWxzbyByZW1vdmVzCkBAIC0xMDI5LDcgKzEwMjcsNyBAQCBzdGF0 aWMgdm9pZCBjb2xsYXBzZV9odWdlX3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJICovCiAJ X3BtZCA9IHBtZHBfY29sbGFwc2VfZmx1c2godm1hLCBhZGRyZXNzLCBwbWQpOwogCXNwaW5fdW5s b2NrKHBtZF9wdGwpOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgbW11 bl9zdGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgm cmFuZ2UpOwogCiAJc3Bpbl9sb2NrKHB0ZV9wdGwpOwogCWlzb2xhdGVkID0gX19jb2xsYXBzZV9o dWdlX3BhZ2VfaXNvbGF0ZSh2bWEsIGFkZHJlc3MsIHB0ZSk7CmRpZmYgLS1naXQgYS9tbS9rc20u YyBiL21tL2tzbS5jCmluZGV4IDViMDg5NGI0NWVlNS4uNjIzOWQyZGY3YThlIDEwMDY0NAotLS0g YS9tbS9rc20uYworKysgYi9tbS9rc20uYwpAQCAtMTA0Miw4ICsxMDQyLDcgQEAgc3RhdGljIGlu dCB3cml0ZV9wcm90ZWN0X3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBw YWdlICpwYWdlLAogCX07CiAJaW50IHN3YXBwZWQ7CiAJaW50IGVyciA9IC1FRkFVTFQ7Ci0JdW5z aWduZWQgbG9uZyBtbXVuX3N0YXJ0OwkvKiBGb3IgbW11X25vdGlmaWVycyAqLwotCXVuc2lnbmVk IGxvbmcgbW11bl9lbmQ7CQkvKiBGb3IgbW11X25vdGlmaWVycyAqLworCXN0cnVjdCBtbXVfbm90 aWZpZXJfcmFuZ2UgcmFuZ2U7CiAKIAlwdm13LmFkZHJlc3MgPSBwYWdlX2FkZHJlc3NfaW5fdm1h KHBhZ2UsIHZtYSk7CiAJaWYgKHB2bXcuYWRkcmVzcyA9PSAtRUZBVUxUKQpAQCAtMTA1MSw5ICsx MDUwLDkgQEAgc3RhdGljIGludCB3cml0ZV9wcm90ZWN0X3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlLAogCiAJQlVHX09OKFBhZ2VUcmFuc0NvbXBvdW5k KHBhZ2UpKTsKIAotCW1tdW5fc3RhcnQgPSBwdm13LmFkZHJlc3M7Ci0JbW11bl9lbmQgICA9IHB2 bXcuYWRkcmVzcyArIFBBR0VfU0laRTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9z dGFydChtbSwgbW11bl9zdGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9yYW5nZV9pbml0 KCZyYW5nZSwgbW0sIHB2bXcuYWRkcmVzcywKKwkJCQlwdm13LmFkZHJlc3MgKyBQQUdFX1NJWkUp OworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAKIAlpZiAo IXBhZ2Vfdm1hX21hcHBlZF93YWxrKCZwdm13KSkKIAkJZ290byBvdXRfbW47CkBAIC0xMTA1LDcg KzExMDQsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3Byb3RlY3RfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSwgc3RydWN0IHBhZ2UgKnBhZ2UsCiBvdXRfdW5sb2NrOgogCXBhZ2Vfdm1hX21h cHBlZF93YWxrX2RvbmUoJnB2bXcpOwogb3V0X21uOgotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX2VuZChtbSwgbW11bl9zdGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwogb3V0OgogCXJldHVybiBlcnI7CiB9CkBAIC0xMTI5 LDggKzExMjgsNyBAQCBzdGF0aWMgaW50IHJlcGxhY2VfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSwgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJc3BpbmxvY2tfdCAqcHRsOwogCXVuc2lnbmVk IGxvbmcgYWRkcjsKIAlpbnQgZXJyID0gLUVGQVVMVDsKLQl1bnNpZ25lZCBsb25nIG1tdW5fc3Rh cnQ7CS8qIEZvciBtbXVfbm90aWZpZXJzICovCi0JdW5zaWduZWQgbG9uZyBtbXVuX2VuZDsJCS8q IEZvciBtbXVfbm90aWZpZXJzICovCisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsK IAogCWFkZHIgPSBwYWdlX2FkZHJlc3NfaW5fdm1hKHBhZ2UsIHZtYSk7CiAJaWYgKGFkZHIgPT0g LUVGQVVMVCkKQEAgLTExNDAsOSArMTEzOCw4IEBAIHN0YXRpYyBpbnQgcmVwbGFjZV9wYWdlKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAlpZiAoIXBtZCkK IAkJZ290byBvdXQ7CiAKLQltbXVuX3N0YXJ0ID0gYWRkcjsKLQltbXVuX2VuZCAgID0gYWRkciAr IFBBR0VfU0laRTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgbW11 bl9zdGFydCwgbW11bl9lbmQpOworCW1tdV9ub3RpZmllcl9yYW5nZV9pbml0KCZyYW5nZSwgbW0s IGFkZHIsIGFkZHIgKyBQQUdFX1NJWkUpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0KCZyYW5nZSk7CiAKIAlwdGVwID0gcHRlX29mZnNldF9tYXBfbG9jayhtbSwgcG1kLCBh ZGRyLCAmcHRsKTsKIAlpZiAoIXB0ZV9zYW1lKCpwdGVwLCBvcmlnX3B0ZSkpIHsKQEAgLTExODgs NyArMTE4NSw3IEBAIHN0YXRpYyBpbnQgcmVwbGFjZV9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAlwdGVfdW5tYXBfdW5sb2NrKHB0ZXAsIHB0bCk7 CiAJZXJyID0gMDsKIG91dF9tbjoKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQo bW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5n ZV9lbmQoJnJhbmdlKTsKIG91dDoKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvbW0vbWFk dmlzZS5jIGIvbW0vbWFkdmlzZS5jCmluZGV4IDZjYjFjYTkzZTI5MC4uMjFhNzg4MWEyZGI0IDEw MDY0NAotLS0gYS9tbS9tYWR2aXNlLmMKKysrIGIvbW0vbWFkdmlzZS5jCkBAIC00NTgsMjkgKzQ1 OCwzMCBAQCBzdGF0aWMgdm9pZCBtYWR2aXNlX2ZyZWVfcGFnZV9yYW5nZShzdHJ1Y3QgbW11X2dh dGhlciAqdGxiLAogc3RhdGljIGludCBtYWR2aXNlX2ZyZWVfc2luZ2xlX3ZtYShzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwKIAkJCXVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkciwgdW5zaWduZWQg bG9uZyBlbmRfYWRkcikKIHsKLQl1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CiAJc3RydWN0IG1t X3N0cnVjdCAqbW0gPSB2bWEtPnZtX21tOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFu Z2U7CiAJc3RydWN0IG1tdV9nYXRoZXIgdGxiOwogCiAJLyogTUFEVl9GUkVFIHdvcmtzIGZvciBv bmx5IGFub24gdm1hIGF0IHRoZSBtb21lbnQgKi8KIAlpZiAoIXZtYV9pc19hbm9ueW1vdXModm1h KSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlzdGFydCA9IG1heCh2bWEtPnZtX3N0YXJ0LCBzdGFy dF9hZGRyKTsKLQlpZiAoc3RhcnQgPj0gdm1hLT52bV9lbmQpCisJcmFuZ2Uuc3RhcnQgPSBtYXgo dm1hLT52bV9zdGFydCwgc3RhcnRfYWRkcik7CisJaWYgKHJhbmdlLnN0YXJ0ID49IHZtYS0+dm1f ZW5kKQogCQlyZXR1cm4gLUVJTlZBTDsKLQllbmQgPSBtaW4odm1hLT52bV9lbmQsIGVuZF9hZGRy KTsKLQlpZiAoZW5kIDw9IHZtYS0+dm1fc3RhcnQpCisJcmFuZ2UuZW5kID0gbWluKHZtYS0+dm1f ZW5kLCBlbmRfYWRkcik7CisJaWYgKHJhbmdlLmVuZCA8PSB2bWEtPnZtX3N0YXJ0KQogCQlyZXR1 cm4gLUVJTlZBTDsKKwltbXVfbm90aWZpZXJfcmFuZ2VfaW5pdCgmcmFuZ2UsIG1tLCByYW5nZS5z dGFydCwgcmFuZ2UuZW5kKTsKIAogCWxydV9hZGRfZHJhaW4oKTsKLQl0bGJfZ2F0aGVyX21tdSgm dGxiLCBtbSwgc3RhcnQsIGVuZCk7CisJdGxiX2dhdGhlcl9tbXUoJnRsYiwgbW0sIHJhbmdlLnN0 YXJ0LCByYW5nZS5lbmQpOwogCXVwZGF0ZV9oaXdhdGVyX3JzcyhtbSk7CiAKLQltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgc3RhcnQsIGVuZCk7Ci0JbWFkdmlzZV9mcmVl X3BhZ2VfcmFuZ2UoJnRsYiwgdm1hLCBzdGFydCwgZW5kKTsKLQltbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9lbmQobW0sIHN0YXJ0LCBlbmQpOwotCXRsYl9maW5pc2hfbW11KCZ0bGIsIHN0 YXJ0LCBlbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7 CisJbWFkdmlzZV9mcmVlX3BhZ2VfcmFuZ2UoJnRsYiwgdm1hLCByYW5nZS5zdGFydCwgcmFuZ2Uu ZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKKwl0bGJf ZmluaXNoX21tdSgmdGxiLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKIAogCXJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuYwppbmRleCA0YWQyZDI5M2Rk YzIuLjU3NDMwN2YxMTQ2NCAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5LmMKKysrIGIvbW0vbWVtb3J5 LmMKQEAgLTk3Myw4ICs5NzMsNyBAQCBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1 Y3QgKmRzdF9tbSwgc3RydWN0IG1tX3N0cnVjdCAqc3JjX21tLAogCXVuc2lnbmVkIGxvbmcgbmV4 dDsKIAl1bnNpZ25lZCBsb25nIGFkZHIgPSB2bWEtPnZtX3N0YXJ0OwogCXVuc2lnbmVkIGxvbmcg ZW5kID0gdm1hLT52bV9lbmQ7Ci0JdW5zaWduZWQgbG9uZyBtbXVuX3N0YXJ0OwkvKiBGb3IgbW11 X25vdGlmaWVycyAqLwotCXVuc2lnbmVkIGxvbmcgbW11bl9lbmQ7CQkvKiBGb3IgbW11X25vdGlm aWVycyAqLworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJYm9vbCBpc19jb3c7 CiAJaW50IHJldDsKIApAQCAtMTAwOCwxMSArMTAwNywxMSBAQCBpbnQgY29weV9wYWdlX3Jhbmdl KHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdF9tbSwgc3RydWN0IG1tX3N0cnVjdCAqc3JjX21tLAogCSAq IGlzX2Nvd19tYXBwaW5nKCkgcmV0dXJucyB0cnVlLgogCSAqLwogCWlzX2NvdyA9IGlzX2Nvd19t YXBwaW5nKHZtYS0+dm1fZmxhZ3MpOwotCW1tdW5fc3RhcnQgPSBhZGRyOwotCW1tdW5fZW5kICAg PSBlbmQ7Ci0JaWYgKGlzX2NvdykKLQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQoc3JjX21tLCBtbXVuX3N0YXJ0LAotCQkJCQkJICAgIG1tdW5fZW5kKTsKKworCWlmIChpc19j b3cpIHsKKwkJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCBzcmNfbW0sIGFkZHIsIGVu ZCk7CisJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CisJfQog CiAJcmV0ID0gMDsKIAlkc3RfcGdkID0gcGdkX29mZnNldChkc3RfbW0sIGFkZHIpOwpAQCAtMTAy OSw3ICsxMDI4LDcgQEAgaW50IGNvcHlfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3Rf bW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSwKIAl9IHdoaWxlIChkc3RfcGdkKyssIHNyY19w Z2QrKywgYWRkciA9IG5leHQsIGFkZHIgIT0gZW5kKTsKIAogCWlmIChpc19jb3cpCi0JCW1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzcmNfbW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5k KTsKKwkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiAJcmV0dXJu IHJldDsKIH0KIApAQCAtMTMzMiwxMiArMTMzMSwxMyBAQCB2b2lkIHVubWFwX3ZtYXMoc3RydWN0 IG1tdV9nYXRoZXIgKnRsYiwKIAkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVk IGxvbmcgc3RhcnRfYWRkciwKIAkJdW5zaWduZWQgbG9uZyBlbmRfYWRkcikKIHsKLQlzdHJ1Y3Qg bW1fc3RydWN0ICptbSA9IHZtYS0+dm1fbW07CisJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSBy YW5nZTsKIAotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBzdGFydF9h ZGRyLCBlbmRfYWRkcik7CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCB2bWEtPnZt X21tLCBzdGFydF9hZGRyLCBlbmRfYWRkcik7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnQoJnJhbmdlKTsKIAlmb3IgKCA7IHZtYSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kX2Fk ZHI7IHZtYSA9IHZtYS0+dm1fbmV4dCkKIAkJdW5tYXBfc2luZ2xlX3ZtYSh0bGIsIHZtYSwgc3Rh cnRfYWRkciwgZW5kX2FkZHIsIE5VTEwpOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZChtbSwgc3RhcnRfYWRkciwgZW5kX2FkZHIpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX2VuZCgmcmFuZ2UpOwogfQogCiAvKioKQEAgLTEzNTEsMTggKzEzNTEsMTggQEAgdm9p ZCB1bm1hcF92bWFzKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCiB2b2lkIHphcF9wYWdlX3Jhbmdl KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogCQl1bnNp Z25lZCBsb25nIHNpemUpCiB7Ci0Jc3RydWN0IG1tX3N0cnVjdCAqbW0gPSB2bWEtPnZtX21tOwor CXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJc3RydWN0IG1tdV9nYXRoZXIgdGxi OwotCXVuc2lnbmVkIGxvbmcgZW5kID0gc3RhcnQgKyBzaXplOwogCiAJbHJ1X2FkZF9kcmFpbigp OwotCXRsYl9nYXRoZXJfbW11KCZ0bGIsIG1tLCBzdGFydCwgZW5kKTsKLQl1cGRhdGVfaGl3YXRl cl9yc3MobW0pOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBzdGFy dCwgZW5kKTsKLQlmb3IgKCA7IHZtYSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kOyB2bWEgPSB2bWEt PnZtX25leHQpCi0JCXVubWFwX3NpbmdsZV92bWEoJnRsYiwgdm1hLCBzdGFydCwgZW5kLCBOVUxM KTsKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIHN0YXJ0LCBlbmQpOwot CXRsYl9maW5pc2hfbW11KCZ0bGIsIHN0YXJ0LCBlbmQpOworCW1tdV9ub3RpZmllcl9yYW5nZV9p bml0KCZyYW5nZSwgdm1hLT52bV9tbSwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSk7CisJdGxiX2dhdGhl cl9tbXUoJnRsYiwgdm1hLT52bV9tbSwgc3RhcnQsIHJhbmdlLmVuZCk7CisJdXBkYXRlX2hpd2F0 ZXJfcnNzKHZtYS0+dm1fbW0pOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0 KCZyYW5nZSk7CisJZm9yICggOyB2bWEgJiYgdm1hLT52bV9zdGFydCA8IHJhbmdlLmVuZDsgdm1h ID0gdm1hLT52bV9uZXh0KQorCQl1bm1hcF9zaW5nbGVfdm1hKCZ0bGIsIHZtYSwgc3RhcnQsIHJh bmdlLmVuZCwgTlVMTCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5n ZSk7CisJdGxiX2ZpbmlzaF9tbXUoJnRsYiwgc3RhcnQsIHJhbmdlLmVuZCk7CiB9CiAKIC8qKgpA QCAtMTM3NywxNyArMTM3NywxNyBAQCB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogc3RhdGljIHZvaWQgemFwX3BhZ2Vf cmFuZ2Vfc2luZ2xlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCiAJCXVuc2lnbmVkIGxvbmcgc2l6ZSwgc3RydWN0IHphcF9kZXRhaWxzICpkZXRhaWxz KQogewotCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKKwlzdHJ1Y3QgbW11X25v dGlmaWVyX3JhbmdlIHJhbmdlOwogCXN0cnVjdCBtbXVfZ2F0aGVyIHRsYjsKLQl1bnNpZ25lZCBs b25nIGVuZCA9IGFkZHJlc3MgKyBzaXplOwogCiAJbHJ1X2FkZF9kcmFpbigpOwotCXRsYl9nYXRo ZXJfbW11KCZ0bGIsIG1tLCBhZGRyZXNzLCBlbmQpOwotCXVwZGF0ZV9oaXdhdGVyX3JzcyhtbSk7 Ci0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIGFkZHJlc3MsIGVuZCk7 Ci0JdW5tYXBfc2luZ2xlX3ZtYSgmdGxiLCB2bWEsIGFkZHJlc3MsIGVuZCwgZGV0YWlscyk7Ci0J bW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCBhZGRyZXNzLCBlbmQpOwotCXRs Yl9maW5pc2hfbW11KCZ0bGIsIGFkZHJlc3MsIGVuZCk7CisJbW11X25vdGlmaWVyX3JhbmdlX2lu aXQoJnJhbmdlLCB2bWEtPnZtX21tLCBhZGRyZXNzLCBhZGRyZXNzICsgc2l6ZSk7CisJdGxiX2dh dGhlcl9tbXUoJnRsYiwgdm1hLT52bV9tbSwgYWRkcmVzcywgcmFuZ2UuZW5kKTsKKwl1cGRhdGVf aGl3YXRlcl9yc3Modm1hLT52bV9tbSk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnQoJnJhbmdlKTsKKwl1bm1hcF9zaW5nbGVfdm1hKCZ0bGIsIHZtYSwgYWRkcmVzcywgcmFu Z2UuZW5kLCBkZXRhaWxzKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJh bmdlKTsKKwl0bGJfZmluaXNoX21tdSgmdGxiLCBhZGRyZXNzLCByYW5nZS5lbmQpOwogfQogCiAv KioKQEAgLTIyNDcsOSArMjI0Nyw4IEBAIHN0YXRpYyB2bV9mYXVsdF90IHdwX3BhZ2VfY29weShz dHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAlzdHJ1Y3QgcGFnZSAqbmV3X3BhZ2UgPSBOVUxMOwogCXB0 ZV90IGVudHJ5OwogCWludCBwYWdlX2NvcGllZCA9IDA7Ci0JY29uc3QgdW5zaWduZWQgbG9uZyBt bXVuX3N0YXJ0ID0gdm1mLT5hZGRyZXNzICYgUEFHRV9NQVNLOwotCWNvbnN0IHVuc2lnbmVkIGxv bmcgbW11bl9lbmQgPSBtbXVuX3N0YXJ0ICsgUEFHRV9TSVpFOwogCXN0cnVjdCBtZW1fY2dyb3Vw ICptZW1jZzsKKwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCiAJaWYgKHVubGlr ZWx5KGFub25fdm1hX3ByZXBhcmUodm1hKSkpCiAJCWdvdG8gb29tOwpAQCAtMjI3Miw3ICsyMjcx LDkgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgd3BfcGFnZV9jb3B5KHN0cnVjdCB2bV9mYXVsdCAqdm1m KQogCiAJX19TZXRQYWdlVXB0b2RhdGUobmV3X3BhZ2UpOwogCi0JbW11X25vdGlmaWVyX2ludmFs aWRhdGVfcmFuZ2Vfc3RhcnQobW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZp ZXJfcmFuZ2VfaW5pdCgmcmFuZ2UsIG1tLCB2bWYtPmFkZHJlc3MgJiBQQUdFX01BU0ssCisJCQkJ KHZtZi0+YWRkcmVzcyAmIFBBR0VfTUFTSykgKyBQQUdFX1NJWkUpOworCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZyYW5nZSk7CiAKIAkvKgogCSAqIFJlLWNoZWNrIHRoZSBw dGUgLSB3ZSBkcm9wcGVkIHRoZSBsb2NrCkBAIC0yMzQ5LDcgKzIzNTAsNyBAQCBzdGF0aWMgdm1f ZmF1bHRfdCB3cF9wYWdlX2NvcHkoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJICogTm8gbmVlZCB0 byBkb3VibGUgY2FsbCBtbXVfbm90aWZpZXItPmludmFsaWRhdGVfcmFuZ2UoKSBjYWxsYmFjayBh cwogCSAqIHRoZSBhYm92ZSBwdGVwX2NsZWFyX2ZsdXNoX25vdGlmeSgpIGRpZCBhbHJlYWR5IGNh bGwgaXQuCiAJICovCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfb25seV9lbmQobW0s IG1tdW5fc3RhcnQsIG1tdW5fZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9v bmx5X2VuZCgmcmFuZ2UpOwogCWlmIChvbGRfcGFnZSkgewogCQkvKgogCQkgKiBEb24ndCBsZXQg YW5vdGhlciB0YXNrLCB3aXRoIHBvc3NpYmx5IHVubG9ja2VkIHZtYSwKQEAgLTQwMzAsNyArNDAz MSw3IEBAIGludCBfX3BtZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcHVkX3QgKnB1ZCwg dW5zaWduZWQgbG9uZyBhZGRyZXNzKQogI2VuZGlmIC8qIF9fUEFHRVRBQkxFX1BNRF9GT0xERUQg Ki8KIAogc3RhdGljIGludCBfX2ZvbGxvd19wdGVfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1 bnNpZ25lZCBsb25nIGFkZHJlc3MsCi0JCQkgICAgdW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2ln bmVkIGxvbmcgKmVuZCwKKwkJCSAgICBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSwK IAkJCSAgICBwdGVfdCAqKnB0ZXBwLCBwbWRfdCAqKnBtZHBwLCBzcGlubG9ja190ICoqcHRscCkK IHsKIAlwZ2RfdCAqcGdkOwpAQCAtNDA1OCwxMCArNDA1OSwxMCBAQCBzdGF0aWMgaW50IF9fZm9s bG93X3B0ZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywK IAkJaWYgKCFwbWRwcCkKIAkJCWdvdG8gb3V0OwogCi0JCWlmIChzdGFydCAmJiBlbmQpIHsKLQkJ CSpzdGFydCA9IGFkZHJlc3MgJiBQTURfTUFTSzsKLQkJCSplbmQgPSAqc3RhcnQgKyBQTURfU0la RTsKLQkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCAqc3RhcnQsICpl bmQpOworCQlpZiAocmFuZ2UpIHsKKwkJCW1tdV9ub3RpZmllcl9yYW5nZV9pbml0KHJhbmdlLCBt bSwgYWRkcmVzcyAmIFBNRF9NQVNLLAorCQkJCQkgICAgIChhZGRyZXNzICYgUE1EX01BU0spICsg UE1EX1NJWkUpOworCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQocmFuZ2Up OwogCQl9CiAJCSpwdGxwID0gcG1kX2xvY2sobW0sIHBtZCk7CiAJCWlmIChwbWRfaHVnZSgqcG1k KSkgewpAQCAtNDA2OSwxNyArNDA3MCwxNyBAQCBzdGF0aWMgaW50IF9fZm9sbG93X3B0ZV9wbWQo c3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKIAkJCXJldHVybiAw OwogCQl9CiAJCXNwaW5fdW5sb2NrKCpwdGxwKTsKLQkJaWYgKHN0YXJ0ICYmIGVuZCkKLQkJCW1t dV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgKnN0YXJ0LCAqZW5kKTsKKwkJaWYg KHJhbmdlKQorCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHJhbmdlKTsKIAl9 CiAKIAlpZiAocG1kX25vbmUoKnBtZCkgfHwgdW5saWtlbHkocG1kX2JhZCgqcG1kKSkpCiAJCWdv dG8gb3V0OwogCi0JaWYgKHN0YXJ0ICYmIGVuZCkgewotCQkqc3RhcnQgPSBhZGRyZXNzICYgUEFH RV9NQVNLOwotCQkqZW5kID0gKnN0YXJ0ICsgUEFHRV9TSVpFOwotCQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgKnN0YXJ0LCAqZW5kKTsKKwlpZiAocmFuZ2UpIHsKKwkJ cmFuZ2UtPnN0YXJ0ID0gYWRkcmVzcyAmIFBBR0VfTUFTSzsKKwkJcmFuZ2UtPmVuZCA9IHJhbmdl LT5zdGFydCArIFBBR0VfU0laRTsKKwkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQocmFuZ2UpOwogCX0KIAlwdGVwID0gcHRlX29mZnNldF9tYXBfbG9jayhtbSwgcG1kLCBhZGRy ZXNzLCBwdGxwKTsKIAlpZiAoIXB0ZV9wcmVzZW50KCpwdGVwKSkKQEAgLTQwODgsOCArNDA4OSw4 IEBAIHN0YXRpYyBpbnQgX19mb2xsb3dfcHRlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5z aWduZWQgbG9uZyBhZGRyZXNzLAogCXJldHVybiAwOwogdW5sb2NrOgogCXB0ZV91bm1hcF91bmxv Y2socHRlcCwgKnB0bHApOwotCWlmIChzdGFydCAmJiBlbmQpCi0JCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX2VuZChtbSwgKnN0YXJ0LCAqZW5kKTsKKwlpZiAocmFuZ2UpCisJCW1tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChyYW5nZSk7CiBvdXQ6CiAJcmV0dXJuIC1FSU5W QUw7CiB9CkBAIC00MTAxLDIwICs0MTAyLDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGZvbGxvd19w dGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKIAogCS8qICh2 b2lkKSBpcyBuZWVkZWQgdG8gbWFrZSBnY2MgaGFwcHkgKi8KIAkodm9pZCkgX19jb25kX2xvY2so KnB0bHAsCi0JCQkgICAhKHJlcyA9IF9fZm9sbG93X3B0ZV9wbWQobW0sIGFkZHJlc3MsIE5VTEws IE5VTEwsCisJCQkgICAhKHJlcyA9IF9fZm9sbG93X3B0ZV9wbWQobW0sIGFkZHJlc3MsIE5VTEws CiAJCQkJCQkgICAgcHRlcHAsIE5VTEwsIHB0bHApKSk7CiAJcmV0dXJuIHJlczsKIH0KIAogaW50 IGZvbGxvd19wdGVfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJl c3MsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsCisJ CSAJICAgICBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSwKIAkJCSAgICAgcHRlX3Qg KipwdGVwcCwgcG1kX3QgKipwbWRwcCwgc3BpbmxvY2tfdCAqKnB0bHApCiB7CiAJaW50IHJlczsK IAogCS8qICh2b2lkKSBpcyBuZWVkZWQgdG8gbWFrZSBnY2MgaGFwcHkgKi8KIAkodm9pZCkgX19j b25kX2xvY2soKnB0bHAsCi0JCQkgICAhKHJlcyA9IF9fZm9sbG93X3B0ZV9wbWQobW0sIGFkZHJl c3MsIHN0YXJ0LCBlbmQsCisJCQkgICAhKHJlcyA9IF9fZm9sbG93X3B0ZV9wbWQobW0sIGFkZHJl c3MsIHJhbmdlLAogCQkJCQkJICAgIHB0ZXBwLCBwbWRwcCwgcHRscCkpKTsKIAlyZXR1cm4gcmVz OwogfQpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IGY3ZTRi ZmRjMTNiNy4uNzRmNWIzMjA4YzA1IDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKKysrIGIvbW0v bWlncmF0ZS5jCkBAIC0yMzAzLDYgKzIzMDMsNyBAQCBzdGF0aWMgaW50IG1pZ3JhdGVfdm1hX2Nv bGxlY3RfcG1kKHBtZF90ICpwbWRwLAogICovCiBzdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9jb2xs ZWN0KHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSkKIHsKKwlzdHJ1Y3QgbW11X25vdGlmaWVy X3JhbmdlIHJhbmdlOwogCXN0cnVjdCBtbV93YWxrIG1tX3dhbGs7CiAKIAltbV93YWxrLnBtZF9l bnRyeSA9IG1pZ3JhdGVfdm1hX2NvbGxlY3RfcG1kOwpAQCAtMjMxNCwxMyArMjMxNSwxMSBAQCBz dGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9jb2xsZWN0KHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0 ZSkKIAltbV93YWxrLm1tID0gbWlncmF0ZS0+dm1hLT52bV9tbTsKIAltbV93YWxrLnByaXZhdGUg PSBtaWdyYXRlOwogCi0JbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW1fd2Fs ay5tbSwKLQkJCQkJICAgIG1pZ3JhdGUtPnN0YXJ0LAotCQkJCQkgICAgbWlncmF0ZS0+ZW5kKTsK KwltbXVfbm90aWZpZXJfcmFuZ2VfaW5pdCgmcmFuZ2UsIG1tX3dhbGsubW0sIG1pZ3JhdGUtPnN0 YXJ0LAorCQkJCW1pZ3JhdGUtPmVuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnQoJnJhbmdlKTsKIAl3YWxrX3BhZ2VfcmFuZ2UobWlncmF0ZS0+c3RhcnQsIG1pZ3JhdGUt PmVuZCwgJm1tX3dhbGspOwotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbV93 YWxrLm1tLAotCQkJCQkgIG1pZ3JhdGUtPnN0YXJ0LAotCQkJCQkgIG1pZ3JhdGUtPmVuZCk7CisJ bW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiAKIAltaWdyYXRlLT5l bmQgPSBtaWdyYXRlLT5zdGFydCArIChtaWdyYXRlLT5ucGFnZXMgPDwgUEFHRV9TSElGVCk7CiB9 CkBAIC0yNzAzLDcgKzI3MDIsOCBAQCBzdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1 Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpCiAJY29uc3QgdW5zaWduZWQgbG9uZyBzdGFydCA9IG1p Z3JhdGUtPnN0YXJ0OwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gbWlncmF0ZS0+dm1h OwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKLQl1bnNpZ25lZCBsb25nIGFk ZHIsIGksIG1tdV9zdGFydDsKKwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOworCXVu c2lnbmVkIGxvbmcgYWRkciwgaTsKIAlib29sIG5vdGlmaWVkID0gZmFsc2U7CiAKIAlmb3IgKGkg PSAwLCBhZGRyID0gc3RhcnQ7IGkgPCBucGFnZXM7IGFkZHIgKz0gUEFHRV9TSVpFLCBpKyspIHsK QEAgLTI3MjIsMTEgKzI3MjIsMTEgQEAgc3RhdGljIHZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3Ry dWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJaWYgKCFu b3RpZmllZCkgewotCQkJCW1tdV9zdGFydCA9IGFkZHI7CiAJCQkJbm90aWZpZWQgPSB0cnVlOwot CQkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1tLAotCQkJCQkJCQltbXVf c3RhcnQsCi0JCQkJCQkJCW1pZ3JhdGUtPmVuZCk7CisKKwkJCQltbXVfbm90aWZpZXJfcmFuZ2Vf aW5pdCgmcmFuZ2UsIG1tLCBhZGRyLAorCQkJCQkJCW1pZ3JhdGUtPmVuZCk7CisJCQkJbW11X25v dGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAkJCX0KIAkJCW1pZ3JhdGVf dm1hX2luc2VydF9wYWdlKG1pZ3JhdGUsIGFkZHIsIG5ld3BhZ2UsCiAJCQkJCQkmbWlncmF0ZS0+ c3JjW2ldLApAQCAtMjc2Nyw4ICsyNzY3LDcgQEAgc3RhdGljIHZvaWQgbWlncmF0ZV92bWFfcGFn ZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKQogCSAqIGRpZCBhbHJlYWR5IGNhbGwgaXQu CiAJICovCiAJaWYgKG5vdGlmaWVkKQotCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9v bmx5X2VuZChtbSwgbW11X3N0YXJ0LAotCQkJCQkJICAgICAgIG1pZ3JhdGUtPmVuZCk7CisJCW1t dV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX29ubHlfZW5kKCZyYW5nZSk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jCmluZGV4IDVm NjY2NWFlM2VlMi4uNGM1MmIzNTE0YzUwIDEwMDY0NAotLS0gYS9tbS9tbXVfbm90aWZpZXIuYwor KysgYi9tbS9tbXVfbm90aWZpZXIuYwpAQCAtMTc0LDI4ICsxNzQsMjAgQEAgdm9pZCBfX21tdV9u b3RpZmllcl9jaGFuZ2VfcHRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCiAJc3JjdV9yZWFkX3VubG9jaygmc3JjdSwgaWQpOwogfQogCi1pbnQgX19tbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkg IHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCSAgYm9vbCBibG9j a2FibGUpCitpbnQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3Qg bW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKIHsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyX3Jhbmdl IF9yYW5nZSwgKnJhbmdlID0gJl9yYW5nZTsKIAlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKIAlp bnQgcmV0ID0gMDsKIAlpbnQgaWQ7CiAKLQlyYW5nZS0+YmxvY2thYmxlID0gYmxvY2thYmxlOwot CXJhbmdlLT5zdGFydCA9IHN0YXJ0OwotCXJhbmdlLT5lbmQgPSBlbmQ7Ci0JcmFuZ2UtPm1tID0g bW07Ci0KIAlpZCA9IHNyY3VfcmVhZF9sb2NrKCZzcmN1KTsKLQlobGlzdF9mb3JfZWFjaF9lbnRy eV9yY3UobW4sICZtbS0+bW11X25vdGlmaWVyX21tLT5saXN0LCBobGlzdCkgeworCWhsaXN0X2Zv cl9lYWNoX2VudHJ5X3JjdShtbiwgJnJhbmdlLT5tbS0+bW11X25vdGlmaWVyX21tLT5saXN0LCBo bGlzdCkgewogCQlpZiAobW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydCkgewogCQkJaW50 IF9yZXQgPSBtbi0+b3BzLT5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KG1uLCByYW5nZSk7CiAJCQlp ZiAoX3JldCkgewogCQkJCXByX2luZm8oIiVwUyBjYWxsYmFjayBmYWlsZWQgd2l0aCAlZCBpbiAl c2Jsb2NrYWJsZSBjb250ZXh0LlxuIiwKIAkJCQkJCW1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2Vf c3RhcnQsIF9yZXQsCi0JCQkJCQkhYmxvY2thYmxlID8gIm5vbi0iIDogIiIpOworCQkJCQkJIXJh bmdlLT5ibG9ja2FibGUgPyAibm9uLSIgOiAiIik7CiAJCQkJcmV0ID0gX3JldDsKIAkJCX0KIAkJ fQpAQCAtMjA2LDI3ICsxOTgsMTQgQEAgaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChfX21t dV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KTsKIAotdm9pZCBfX21tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkJIHVuc2ln bmVkIGxvbmcgc3RhcnQsCi0JCQkJCSB1bnNpZ25lZCBsb25nIGVuZCwKK3ZvaWQgX19tbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFu Z2UsCiAJCQkJCSBib29sIG9ubHlfZW5kKQogewotCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2Ug X3JhbmdlLCAqcmFuZ2UgPSAmX3JhbmdlOwogCXN0cnVjdCBtbXVfbm90aWZpZXIgKm1uOwogCWlu dCBpZDsKIAotCS8qCi0JICogVGhlIGVuZCBjYWxsIGJhY2sgd2lsbCBuZXZlciBiZSBjYWxsIGlm IHRoZSBzdGFydCByZWZ1c2VkIHRvIGdvCi0JICogdGhyb3VnaCBiZWNhdXNlIG9mIGJsb2NrYWJs ZSB3YXMgZmFsc2Ugc28gaGVyZSBhc3N1bWUgdGhhdCB3ZQotCSAqIGNhbiBibG9jay4KLQkgKi8K LQlyYW5nZS0+YmxvY2thYmxlID0gdHJ1ZTsKLQlyYW5nZS0+c3RhcnQgPSBzdGFydDsKLQlyYW5n ZS0+ZW5kID0gZW5kOwotCXJhbmdlLT5tbSA9IG1tOwotCiAJaWQgPSBzcmN1X3JlYWRfbG9jaygm c3JjdSk7Ci0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1uLCAmbW0tPm1tdV9ub3RpZmllcl9t bS0+bGlzdCwgaGxpc3QpIHsKKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UobW4sICZyYW5nZS0+ bW0tPm1tdV9ub3RpZmllcl9tbS0+bGlzdCwgaGxpc3QpIHsKIAkJLyoKIAkJICogQ2FsbCBpbnZh bGlkYXRlX3JhbmdlIGhlcmUgdG9vIHRvIGF2b2lkIHRoZSBuZWVkIGZvciB0aGUKIAkJICogc3Vi c3lzdGVtIG9mIGhhdmluZyB0byByZWdpc3RlciBhbiBpbnZhbGlkYXRlX3JhbmdlX2VuZApAQCAt MjQxLDcgKzIyMCw5IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQo c3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCSAqIGFscmVhZHkgaGFwcGVuIHVuZGVyIHBhZ2UgdGFi bGUgbG9jay4KIAkJICovCiAJCWlmICghb25seV9lbmQgJiYgbW4tPm9wcy0+aW52YWxpZGF0ZV9y YW5nZSkKLQkJCW1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2UobW4sIG1tLCBzdGFydCwgZW5kKTsK KwkJCW1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2UobW4sIHJhbmdlLT5tbSwKKwkJCQkJCSAgcmFu Z2UtPnN0YXJ0LAorCQkJCQkJICByYW5nZS0+ZW5kKTsKIAkJaWYgKG1uLT5vcHMtPmludmFsaWRh dGVfcmFuZ2VfZW5kKQogCQkJbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9lbmQobW4sIHJhbmdl KTsKIAl9CmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuYwppbmRleCA2 ZDMzMTYyMGI5ZTUuLjM2Y2IzNThkYjE3MCAxMDA2NDQKLS0tIGEvbW0vbXByb3RlY3QuYworKysg Yi9tbS9tcHJvdGVjdC5jCkBAIC0xNjcsMTEgKzE2NywxMiBAQCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgY2hhbmdlX3BtZF9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJ cGdwcm90X3QgbmV3cHJvdCwgaW50IGRpcnR5X2FjY291bnRhYmxlLCBpbnQgcHJvdF9udW1hKQog ewogCXBtZF90ICpwbWQ7Ci0Jc3RydWN0IG1tX3N0cnVjdCAqbW0gPSB2bWEtPnZtX21tOwogCXVu c2lnbmVkIGxvbmcgbmV4dDsKIAl1bnNpZ25lZCBsb25nIHBhZ2VzID0gMDsKIAl1bnNpZ25lZCBs b25nIG5yX2h1Z2VfdXBkYXRlcyA9IDA7Ci0JdW5zaWduZWQgbG9uZyBtbmlfc3RhcnQgPSAwOwor CXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CisKKwlyYW5nZS5zdGFydCA9IDA7CiAK IAlwbWQgPSBwbWRfb2Zmc2V0KHB1ZCwgYWRkcik7CiAJZG8gewpAQCAtMTgzLDkgKzE4NCw5IEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBjaGFuZ2VfcG1kX3JhbmdlKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLAogCQkJZ290byBuZXh0OwogCiAJCS8qIGludm9rZSB0aGUgbW11IG5v dGlmaWVyIGlmIHRoZSBwbWQgaXMgcG9wdWxhdGVkICovCi0JCWlmICghbW5pX3N0YXJ0KSB7Ci0J CQltbmlfc3RhcnQgPSBhZGRyOwotCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQobW0sIG1uaV9zdGFydCwgZW5kKTsKKwkJaWYgKCFyYW5nZS5zdGFydCkgeworCQkJbW11X25v dGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCB2bWEtPnZtX21tLCBhZGRyLCBlbmQpOworCQkJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAkJfQogCiAJCWlmIChp c19zd2FwX3BtZCgqcG1kKSB8fCBwbWRfdHJhbnNfaHVnZSgqcG1kKSB8fCBwbWRfZGV2bWFwKCpw bWQpKSB7CkBAIC0yMTQsOCArMjE1LDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNo YW5nZV9wbWRfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCWNvbmRfcmVzY2hl ZCgpOwogCX0gd2hpbGUgKHBtZCsrLCBhZGRyID0gbmV4dCwgYWRkciAhPSBlbmQpOwogCi0JaWYg KG1uaV9zdGFydCkKLQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCBtbmlf c3RhcnQsIGVuZCk7CisJaWYgKHJhbmdlLnN0YXJ0KQorCQltbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAogCWlmIChucl9odWdlX3VwZGF0ZXMpCiAJCWNvdW50X3Zt X251bWFfZXZlbnRzKE5VTUFfSFVHRV9QVEVfVVBEQVRFUywgbnJfaHVnZV91cGRhdGVzKTsKZGlm ZiAtLWdpdCBhL21tL21yZW1hcC5jIGIvbW0vbXJlbWFwLmMKaW5kZXggN2Y5ZjkxODBlNDAxLi5k ZWYwMWQ4NmUzNmYgMTAwNjQ0Ci0tLSBhL21tL21yZW1hcC5jCisrKyBiL21tL21yZW1hcC5jCkBA IC0xOTcsMTYgKzE5NywxNCBAQCB1bnNpZ25lZCBsb25nIG1vdmVfcGFnZV90YWJsZXMoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCWJvb2wgbmVlZF9ybWFwX2xvY2tzKQogewogCXVuc2ln bmVkIGxvbmcgZXh0ZW50LCBuZXh0LCBvbGRfZW5kOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFu Z2UgcmFuZ2U7CiAJcG1kX3QgKm9sZF9wbWQsICpuZXdfcG1kOwotCXVuc2lnbmVkIGxvbmcgbW11 bl9zdGFydDsJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KLQl1bnNpZ25lZCBsb25nIG1tdW5fZW5k OwkJLyogRm9yIG1tdV9ub3RpZmllcnMgKi8KIAogCW9sZF9lbmQgPSBvbGRfYWRkciArIGxlbjsK IAlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIG9sZF9hZGRyLCBvbGRfZW5kKTsKIAotCW1tdW5fc3Rh cnQgPSBvbGRfYWRkcjsKLQltbXVuX2VuZCAgID0gb2xkX2VuZDsKLQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9zdGFydCh2bWEtPnZtX21tLCBtbXVuX3N0YXJ0LCBtbXVuX2VuZCk7CisJ bW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCB2bWEtPnZtX21tLCBvbGRfYWRkciwgb2xk X2VuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKIAog CWZvciAoOyBvbGRfYWRkciA8IG9sZF9lbmQ7IG9sZF9hZGRyICs9IGV4dGVudCwgbmV3X2FkZHIg Kz0gZXh0ZW50KSB7CiAJCWNvbmRfcmVzY2hlZCgpOwpAQCAtMjQ3LDcgKzI0NSw3IEBAIHVuc2ln bmVkIGxvbmcgbW92ZV9wYWdlX3RhYmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJ CSAgbmV3X3BtZCwgbmV3X2FkZHIsIG5lZWRfcm1hcF9sb2Nrcyk7CiAJfQogCi0JbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHZtYS0+dm1fbW0sIG1tdW5fc3RhcnQsIG1tdW5fZW5k KTsKKwltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAogCXJldHVy biBsZW4gKyBvbGRfYWRkciAtIG9sZF9lbmQ7CS8qIGhvdyBtdWNoIGRvbmUgKi8KIH0KZGlmZiAt LWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jCmluZGV4IDY1ODlmNjBkNTAxOC4u MWVlYThiMDRmMjdhIDEwMDY0NAotLS0gYS9tbS9vb21fa2lsbC5jCisrKyBiL21tL29vbV9raWxs LmMKQEAgLTUxNiwxOSArNTE2LDIwIEBAIGJvb2wgX19vb21fcmVhcF90YXNrX21tKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tKQogCQkgKiBjb3VudCBlbGV2YXRlZCB3aXRob3V0IGEgZ29vZCByZWFzb24u CiAJCSAqLwogCQlpZiAodm1hX2lzX2Fub255bW91cyh2bWEpIHx8ICEodm1hLT52bV9mbGFncyAm IFZNX1NIQVJFRCkpIHsKLQkJCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3RhcnQgPSB2bWEtPnZtX3N0 YXJ0OwotCQkJY29uc3QgdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtPnZtX2VuZDsKKwkJCXN0cnVj dCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJCQlzdHJ1Y3QgbW11X2dhdGhlciB0bGI7CiAK LQkJCXRsYl9nYXRoZXJfbW11KCZ0bGIsIG1tLCBzdGFydCwgZW5kKTsKLQkJCWlmIChtbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydF9ub25ibG9jayhtbSwgc3RhcnQsIGVuZCkpIHsK LQkJCQl0bGJfZmluaXNoX21tdSgmdGxiLCBzdGFydCwgZW5kKTsKKwkJCW1tdV9ub3RpZmllcl9y YW5nZV9pbml0KCZyYW5nZSwgbW0sIHZtYS0+dm1fc3RhcnQsCisJCQkJCQl2bWEtPnZtX2VuZCk7 CisJCQl0bGJfZ2F0aGVyX21tdSgmdGxiLCBtbSwgcmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7CisJ CQlpZiAobW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfbm9uYmxvY2soJnJhbmdl KSkgeworCQkJCXRsYl9maW5pc2hfbW11KCZ0bGIsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwog CQkJCXJldCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwogCQkJfQotCQkJdW5tYXBfcGFnZV9yYW5n ZSgmdGxiLCB2bWEsIHN0YXJ0LCBlbmQsIE5VTEwpOwotCQkJbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2VfZW5kKG1tLCBzdGFydCwgZW5kKTsKLQkJCXRsYl9maW5pc2hfbW11KCZ0bGIsIHN0 YXJ0LCBlbmQpOworCQkJdW5tYXBfcGFnZV9yYW5nZSgmdGxiLCB2bWEsIHJhbmdlLnN0YXJ0LCBy YW5nZS5lbmQsIE5VTEwpOworCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZy YW5nZSk7CisJCQl0bGJfZmluaXNoX21tdSgmdGxiLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsK IAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5jCmluZGV4IDg1Yjdm OTQyMzM1Mi4uYzc1ZjcyZjZmZTBlIDEwMDY0NAotLS0gYS9tbS9ybWFwLmMKKysrIGIvbW0vcm1h cC5jCkBAIC04ODksMTUgKzg4OSwxNyBAQCBzdGF0aWMgYm9vbCBwYWdlX21rY2xlYW5fb25lKHN0 cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJLmFkZHJlc3Mg PSBhZGRyZXNzLAogCQkuZmxhZ3MgPSBQVk1XX1NZTkMsCiAJfTsKLQl1bnNpZ25lZCBsb25nIHN0 YXJ0ID0gYWRkcmVzcywgZW5kOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJ aW50ICpjbGVhbmVkID0gYXJnOwogCiAJLyoKIAkgKiBXZSBoYXZlIHRvIGFzc3VtZSB0aGUgd29y c2UgY2FzZSBpZSBwbWQgZm9yIGludmFsaWRhdGlvbi4gTm90ZSB0aGF0CiAJICogdGhlIHBhZ2Ug Y2FuIG5vdCBiZSBmcmVlIGZyb20gdGhpcyBmdW5jdGlvbi4KIAkgKi8KLQllbmQgPSBtaW4odm1h LT52bV9lbmQsIHN0YXJ0ICsgKFBBR0VfU0laRSA8PCBjb21wb3VuZF9vcmRlcihwYWdlKSkpOwot CW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHZtYS0+dm1fbW0sIHN0YXJ0LCBl bmQpOworCW1tdV9ub3RpZmllcl9yYW5nZV9pbml0KCZyYW5nZSwgdm1hLT52bV9tbSwgYWRkcmVz cywKKwkJCQltaW4odm1hLT52bV9lbmQsIGFkZHJlc3MgKworCQkJCSAgICAoUEFHRV9TSVpFIDw8 IGNvbXBvdW5kX29yZGVyKHBhZ2UpKSkpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0KCZyYW5nZSk7CiAKIAl3aGlsZSAocGFnZV92bWFfbWFwcGVkX3dhbGsoJnB2bXcpKSB7 CiAJCXVuc2lnbmVkIGxvbmcgY3N0YXJ0OwpAQCAtOTQ5LDcgKzk1MSw3IEBAIHN0YXRpYyBib29s IHBhZ2VfbWtjbGVhbl9vbmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLAogCQkJKCpjbGVhbmVkKSsrOwogCX0KIAotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX2VuZCh2bWEtPnZtX21tLCBzdGFydCwgZW5kKTsKKwltbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9lbmQoJnJhbmdlKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMTM0NSw3ICsx MzQ3LDcgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3QgcGFnZSAqcGFnZSwg c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJcHRlX3QgcHRldmFsOwogCXN0cnVjdCBwYWdl ICpzdWJwYWdlOwogCWJvb2wgcmV0ID0gdHJ1ZTsKLQl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gYWRk cmVzcywgZW5kOworCXN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7CiAJZW51bSB0dHVf ZmxhZ3MgZmxhZ3MgPSAoZW51bSB0dHVfZmxhZ3MpYXJnOwogCiAJLyogbXVubG9jayBoYXMgbm90 aGluZyB0byBnYWluIGZyb20gZXhhbWluaW5nIHVuLWxvY2tlZCB2bWFzICovCkBAIC0xMzY5LDE1 ICsxMzcxLDE4IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IHBhZ2UgKnBh Z2UsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCSAqIE5vdGUgdGhhdCB0aGUgcGFnZSBj YW4gbm90IGJlIGZyZWUgaW4gdGhpcyBmdW5jdGlvbiBhcyBjYWxsIG9mCiAJICogdHJ5X3RvX3Vu bWFwKCkgbXVzdCBob2xkIGEgcmVmZXJlbmNlIG9uIHRoZSBwYWdlLgogCSAqLwotCWVuZCA9IG1p bih2bWEtPnZtX2VuZCwgc3RhcnQgKyAoUEFHRV9TSVpFIDw8IGNvbXBvdW5kX29yZGVyKHBhZ2Up KSk7CisJbW11X25vdGlmaWVyX3JhbmdlX2luaXQoJnJhbmdlLCB2bWEtPnZtX21tLCB2bWEtPnZt X3N0YXJ0LAorCQkJCW1pbih2bWEtPnZtX2VuZCwgdm1hLT52bV9zdGFydCArCisJCQkJICAgIChQ QUdFX1NJWkUgPDwgY29tcG91bmRfb3JkZXIocGFnZSkpKSk7CiAJaWYgKFBhZ2VIdWdlKHBhZ2Up KSB7CiAJCS8qCiAJCSAqIElmIHNoYXJpbmcgaXMgcG9zc2libGUsIHN0YXJ0IGFuZCBlbmQgd2ls bCBiZSBhZGp1c3RlZAogCQkgKiBhY2NvcmRpbmdseS4KIAkJICovCi0JCWFkanVzdF9yYW5nZV9p Zl9wbWRfc2hhcmluZ19wb3NzaWJsZSh2bWEsICZzdGFydCwgJmVuZCk7CisJCWFkanVzdF9yYW5n ZV9pZl9wbWRfc2hhcmluZ19wb3NzaWJsZSh2bWEsICZyYW5nZS5zdGFydCwKKwkJCQkJCSAgICAg JnJhbmdlLmVuZCk7CiAJfQotCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHZt YS0+dm1fbW0sIHN0YXJ0LCBlbmQpOworCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KCZyYW5nZSk7CiAKIAl3aGlsZSAocGFnZV92bWFfbWFwcGVkX3dhbGsoJnB2bXcpKSB7CiAj aWZkZWYgQ09ORklHX0FSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT04KQEAgLTE0MjgsOSArMTQzMywx MCBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJCQkgKiB3ZSBtdXN0IGZsdXNoIHRoZW0gYWxsLiAg c3RhcnQvZW5kIHdlcmUKIAkJCQkgKiBhbHJlYWR5IGFkanVzdGVkIGFib3ZlIHRvIGNvdmVyIHRo aXMgcmFuZ2UuCiAJCQkJICovCi0JCQkJZmx1c2hfY2FjaGVfcmFuZ2Uodm1hLCBzdGFydCwgZW5k KTsKLQkJCQlmbHVzaF90bGJfcmFuZ2Uodm1hLCBzdGFydCwgZW5kKTsKLQkJCQltbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZShtbSwgc3RhcnQsIGVuZCk7CisJCQkJZmx1c2hfY2FjaGVfcmFu Z2Uodm1hLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKKwkJCQlmbHVzaF90bGJfcmFuZ2Uodm1h LCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKKwkJCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZShtbSwgcmFuZ2Uuc3RhcnQsCisJCQkJCQkJICAgICAgcmFuZ2UuZW5kKTsKIAogCQkJCS8q CiAJCQkJICogVGhlIHJlZiBjb3VudCBvZiB0aGUgUE1EIHBhZ2Ugd2FzIGRyb3BwZWQKQEAgLTE2 NTAsNyArMTY1Niw3IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IHBhZ2Ug KnBhZ2UsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQlwdXRfcGFnZShwYWdlKTsKIAl9 CiAKLQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQodm1hLT52bV9tbSwgc3RhcnQs IGVuZCk7CisJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiAKIAly ZXR1cm4gcmV0OwogfQotLSAKMi4xNy4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK