Date: Sun, 03 Feb 2013 12:19:00 +0100 From: Christoph Mallon <christoph.mallon@gmx.de> To: freebsd-gnats-submit@freebsd.org Cc: Pedro Giffuni <pfg@freebsd.org>, Bruce Evans <brde@optusnet.com.au> Subject: kern/175794: Patches for ufs Message-ID: <510E47A4.1020203@gmx.de> Resent-Message-ID: <201302031120.r13BK0CI077482@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 175794 >Category: kern >Synopsis: Patches for ufs >Confidential: yes >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Sun Feb 03 11:20:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: >Release: >Organization: >Environment: >Description: Hi Pedro, please have a look at the the attached patches, which remove some cruft from ufs (as also noted by Bruce earlier) and correct inconsistent panic messages. Christoph --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8; name="0001-ufs-Remove-dead-assignment.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-ufs-Remove-dead-assignment.patch" RnJvbSA0MWQ1NmU3ZmYzNmUyZjRmOTZhOTllOTZjNWZhOWQxOWM4ODg3YmFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs bG9uQGdteC5kZT4KRGF0ZTogVHVlLCAyOSBKYW4gMjAxMyAwNjo0MzowMSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMS82XSB1ZnM6IFJlbW92ZSBkZWFkIGFzc2lnbm1lbnQuCgotLS0KIHN5 cy91ZnMvdWZzL3Vmc19sb29rdXAuYyB8IDEgLQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgYi9zeXMvdWZz L3Vmcy91ZnNfbG9va3VwLmMKaW5kZXggZDcyMjc4ZC4uMDJmZGE5ZiAxMDA2NDQKLS0tIGEv c3lzL3Vmcy91ZnMvdWZzX2xvb2t1cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19sb29rdXAu YwpAQCAtMTQzNCw3ICsxNDM0LDYgQEAgdWZzX2NoZWNrcGF0aChpbm9fdCBzb3VyY2VfaW5v LCBpbm9fdCBwYXJlbnRfaW5vLCBzdHJ1Y3QgaW5vZGUgKnRhcmdldCwgc3RydWN0IHUKIAkJ cmV0dXJuICgwKTsKIAlpZiAodGFyZ2V0LT5pX251bWJlciA9PSBST09USU5PKQogCQlyZXR1 cm4gKDApOwotCWVycm9yID0gMDsKIAlmb3IgKDs7KSB7CiAJCWVycm9yID0gdWZzX2Rpcl9k ZF9pbm8odnAsIGNyZWQsICZkZF9pbm8pOwogCQlpZiAoZXJyb3IgIT0gMCkKLS0gCjEuOC4x LjIKCg== --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8; name="0002-ufs-Remove-the-unused-macro-MAXSYMLINKLEN.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-ufs-Remove-the-unused-macro-MAXSYMLINKLEN.patch" RnJvbSBlYzY2NDkxZDAwNzEyNTliYzVkMjliOWVkOGM2YTZjZjQyYzk4OGQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDExOjMwOjM3ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAyLzZdIHVmczogUmVtb3ZlIHRoZSB1bnVzZWQgbWFjcm8gTUFYU1lNTElO S0xFTigpLgoKLS0tCiBzeXMvdWZzL3Vmcy9pbm9kZS5oIHwgNCAtLS0tCiAxIGZpbGUgY2hh bmdlZCwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zeXMvdWZzL3Vmcy9pbm9kZS5o IGIvc3lzL3Vmcy91ZnMvaW5vZGUuaAppbmRleCA1OWIxNzBjLi42NDE2NjMyIDEwMDY0NAot LS0gYS9zeXMvdWZzL3Vmcy9pbm9kZS5oCisrKyBiL3N5cy91ZnMvdWZzL2lub2RlLmgKQEAg LTE1MSwxMCArMTUxLDYgQEAgc3RydWN0IGlub2RlIHsKIAkJKGlwKS0+aV9kaW4yLT5kIyNm aWVsZCA9ICh2YWwpOyBcCiAJfSB3aGlsZSAoMCkKIAotI2RlZmluZQlNQVhTWU1MSU5LTEVO KGlwKSBcCi0JKChpcCktPmlfdW1wLT51bV9mc3R5cGUgPT0gVUZTMSkgPyBcCi0JKChOREFE RFIgKyBOSUFERFIpICogc2l6ZW9mKHVmczFfZGFkZHJfdCkpIDogXAotCSgoTkRBRERSICsg TklBRERSKSAqIHNpemVvZih1ZnMyX2RhZGRyX3QpKQogI2RlZmluZQlTSE9SVExJTksoaXAp IFwKIAkoKChpcCktPmlfdW1wLT51bV9mc3R5cGUgPT0gVUZTMSkgPyBcCiAJKGNhZGRyX3Qp KGlwKS0+aV9kaW4xLT5kaV9kYiA6IChjYWRkcl90KShpcCktPmlfZGluMi0+ZGlfZGIpCi0t IAoxLjguMS4yCgo= --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8; name="0003-sys-Add-the-macro-PANIC-which-acts-like-panic-but-au.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0003-sys-Add-the-macro-PANIC-which-acts-like-panic-but-au.pa"; filename*1="tch" RnJvbSA4MDdiYzg2NTJiM2ZmOGI3YzI2ZGNhNWM3NGUwYTcxNWQzYmY2YWNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs bG9uQGdteC5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxMyAxNjowMzo0OCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMy82XSBzeXM6IEFkZCB0aGUgbWFjcm8gUEFOSUMoKSwgd2hpY2ggYWN0 cyBsaWtlIHBhbmljKCksIGJ1dAogYXV0b21hdGljYWxseSBhZGRzIHRoZSBuYW1lIG9mIHRo ZSBjYWxsaW5nIGZ1bmN0aW9uLgoKLS0tCiBzeXMvc3lzL3N5c3RtLmggfCA2ICsrKysrKwog MSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3N5cy9zeXMv c3lzdG0uaCBiL3N5cy9zeXMvc3lzdG0uaAppbmRleCBkZDk2ZDcwLi41ZmY5ZWIyIDEwMDY0 NAotLS0gYS9zeXMvc3lzL3N5c3RtLmgKKysrIGIvc3lzL3N5cy9zeXN0bS5oCkBAIC0xNzYs NiArMTc2LDEyIEBAIHZvaWQJZ193YWl0aWRsZSh2b2lkKTsKIAogdm9pZAlwYW5pYyhjb25z dCBjaGFyICosIC4uLikgX19kZWFkMiBfX3ByaW50Zmxpa2UoMSwgMik7CiAKKy8qCisgKiBQ YW5pYyBhbmQgYXV0b21hdGljYWxseSBwcmVwZW5kIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlv biB0byB0aGUgcGFuaWMKKyAqIG1lc3NhZ2UuCisgKi8KKyNkZWZpbmUgUEFOSUMoZm10LCAu Li4pIHBhbmljKCIlczogIiBmbXQsIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKQorCiB2b2lk CWNwdV9ib290KGludCk7CiB2b2lkCWNwdV9mbHVzaF9kY2FjaGUodm9pZCAqLCBzaXplX3Qp Owogdm9pZAljcHVfcm9vdGNvbmYodm9pZCk7Ci0tIAoxLjguMS4yCgo= --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8; name="0004-ufs-Use-PANIC-instead-of-panic-with-inconsistent-fun.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0004-ufs-Use-PANIC-instead-of-panic-with-inconsistent-fun.pa"; filename*1="tch" RnJvbSA4NWU3MWEzMmE1OTgzMjAxMDZkNTIwYzcwNjVhM2Q3MWJjMDJiZTU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDExOjM4OjI3ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCA0LzZdIHVmczogVXNlIFBBTklDKCkgaW5zdGVhZCBvZiBwYW5pYygpIHdp dGggaW5jb25zaXN0ZW50CiBmdW5jdGlvbiBuYW1lcy4KCi0tLQogc3lzL3Vmcy91ZnMvdWZz X2FjbC5jICAgICAgfCAgNCArKy0tCiBzeXMvdWZzL3Vmcy91ZnNfYm1hcC5jICAgICB8ICA2 ICsrKy0tLQogc3lzL3Vmcy91ZnMvdWZzX2Rpcmhhc2guYyAgfCAyNCArKysrKysrKysrKy0t LS0tLS0tLS0tLQogc3lzL3Vmcy91ZnMvdWZzX2V4dGF0dHIuYyAgfCAgNiArKystLS0KIHN5 cy91ZnMvdWZzL3Vmc19nam91cm5hbC5jIHwgIDIgKy0KIHN5cy91ZnMvdWZzL3Vmc19sb29r dXAuYyAgIHwgMTQgKysrKysrKy0tLS0tLS0KIHN5cy91ZnMvdWZzL3Vmc19xdW90YS5jICAg IHwgMTAgKysrKystLS0tLQogc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMgICAgfCA0OCArKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA4IGZpbGVzIGNo YW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3N5cy91ZnMvdWZzL3Vmc19hY2wuYyBiL3N5cy91ZnMvdWZzL3Vmc19hY2wuYwppbmRleCA0 MDIxYjBhLi5mNDNlYmEwIDEwMDY0NAotLS0gYS9zeXMvdWZzL3Vmcy91ZnNfYWNsLmMKKysr IGIvc3lzL3Vmcy91ZnMvdWZzX2FjbC5jCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB1ZnNfc3lu Y19hY2xfZnJvbV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlwLCBzdHJ1Y3QgYWNsICphY2wpCiAJ CQlicmVhazsKIAkKIAkJZGVmYXVsdDoKLQkJCXBhbmljKCJ1ZnNfc3luY19hY2xfZnJvbV9p bm9kZSgpOiBiYWQgYWVfdGFnIik7CisJCQlQQU5JQygiYmFkIGFlX3RhZyIpOwogCQl9CiAJ fQogCiAJaWYgKGFjbF9ncm91cF9vYmogPT0gTlVMTCkKLQkJcGFuaWMoInVmc19zeW5jX2Fj bF9mcm9tX2lub2RlKCk6IG5vIEFDTF9HUk9VUF9PQkoiKTsKKwkJUEFOSUMoIm5vIEFDTF9H Uk9VUF9PQkoiKTsKIAogCWlmIChhY2xfbWFzayA9PSBOVUxMKSB7CiAJCS8qCmRpZmYgLS1n aXQgYS9zeXMvdWZzL3Vmcy91ZnNfYm1hcC5jIGIvc3lzL3Vmcy91ZnMvdWZzX2JtYXAuYwpp bmRleCAyMjg4N2M4Li41ZWE0NzYyIDEwMDY0NAotLS0gYS9zeXMvdWZzL3Vmcy91ZnNfYm1h cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19ibWFwLmMKQEAgLTE1MiwxMSArMTUyLDExIEBA IHVmc19ibWFwYXJyYXkodnAsIGJuLCBibnAsIG5icCwgcnVucCwgcnVuYikKIAkJCWlmICgq Ym5wID09IDApCiAJCQkJKmJucCA9IC0xOwogCQkJaWYgKG5icCA9PSBOVUxMKQotCQkJCXBh bmljKCJ1ZnNfYm1hcGFycmF5OiBtYXBwaW5nIGV4dCBkYXRhIik7CisJCQkJUEFOSUMoIm1h cHBpbmcgZXh0IGRhdGEiKTsKIAkJCW5icC0+Yl94ZmxhZ3MgfD0gQlhfQUxUREFUQTsKIAkJ CXJldHVybiAoMCk7CiAJCX0gZWxzZSB7Ci0JCQlwYW5pYygidWZzX2JtYXBhcnJheTogYmxr bm8gb3V0IG9mIHJhbmdlIik7CisJCQlQQU5JQygiYmxrbm8gb3V0IG9mIHJhbmdlIik7CiAJ CX0KIAkJLyoKIAkJICogU2luY2UgdGhpcyBpcyBGRlMgaW5kZXBlbmRlbnQgY29kZSwgd2Ug YXJlIG91dCBvZgpAQCAtMjE2LDcgKzIxNiw3IEBAIHVmc19ibWFwYXJyYXkodnAsIGJuLCBi bnAsIG5icCwgcnVucCwgcnVuYikKIAkJaWYgKChicC0+Yl9mbGFncyAmIEJfQ0FDSEUpID09 IDApIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoIWRhZGRyKQotCQkJCXBhbmljKCJ1 ZnNfYm1hcGFycmF5OiBpbmRpcmVjdCBibG9jayBub3QgaW4gY2FjaGUiKTsKKwkJCQlQQU5J QygiaW5kaXJlY3QgYmxvY2sgbm90IGluIGNhY2hlIik7CiAjZW5kaWYKIAkJCWJwLT5iX2Js a25vID0gYmxrcHRydG9kYih1bXAsIGRhZGRyKTsKIAkJCWJwLT5iX2lvY21kID0gQklPX1JF QUQ7CmRpZmYgLS1naXQgYS9zeXMvdWZzL3Vmcy91ZnNfZGlyaGFzaC5jIGIvc3lzL3Vmcy91 ZnMvdWZzX2Rpcmhhc2guYwppbmRleCBiNTFmZGZmLi4yMTcxNmM0IDEwMDY0NAotLS0gYS9z eXMvdWZzL3Vmcy91ZnNfZGlyaGFzaC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19kaXJoYXNo LmMKQEAgLTYyMSw3ICs2MjEsNyBAQCByZXN0YXJ0OgogCQlpZiAob2Zmc2V0ID09IERJUkhB U0hfREVMKQogCQkJY29udGludWU7CiAJCWlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+PSBp cC0+aV9zaXplKQotCQkJcGFuaWMoInVmc2Rpcmhhc2hfbG9va3VwOiBiYWQgb2Zmc2V0IGlu IGhhc2ggYXJyYXkiKTsKKwkJCVBBTklDKCJiYWQgb2Zmc2V0IGluIGhhc2ggYXJyYXkiKTsK IAkJaWYgKChvZmZzZXQgJiB+Ym1hc2spICE9IGJsa29mZikgewogCQkJaWYgKGJwICE9IE5V TEwpCiAJCQkJYnJlbHNlKGJwKTsKQEAgLTc2MSw3ICs3NjEsNyBAQCB1ZnNkaXJoYXNoX2Zp bmRmcmVlKHN0cnVjdCBpbm9kZSAqaXAsIGludCBzbG90bmVlZGVkLCBpbnQgKnNsb3RzaXpl KQogCQlyZXR1cm4gKC0xKTsKIAl9CiAJaWYgKGZyZWVieXRlcyA8IHNsb3RuZWVkZWQpCi0J CXBhbmljKCJ1ZnNkaXJoYXNoX2ZpbmRmcmVlOiBmcmVlIG1pc21hdGNoIik7CisJCVBBTklD KCJmcmVlIG1pc21hdGNoIik7CiAJYnJlbHNlKGJwKTsKIAkqc2xvdHNpemUgPSBwb3MgKyBp IC0gc2xvdHN0YXJ0OwogCXJldHVybiAoc2xvdHN0YXJ0KTsKQEAgLTk0OSwxMCArOTQ5LDEw IEBAIHVmc2Rpcmhhc2hfZGlydHJ1bmMoc3RydWN0IGlub2RlICppcCwgZG9mZl90IG9mZnNl dCkKIAkJZGgtPmRoX2ZpcnN0ZnJlZVtESF9ORlNUQVRTXSA9IC0xOwogCWZvciAoaSA9IGJs b2NrOyBpIDwgZGgtPmRoX2RpcmJsa3M7IGkrKykKIAkJaWYgKGRoLT5kaF9ibGtmcmVlW2ld ICE9IERJUkJMS1NJWiAvIERJUkFMSUdOKQotCQkJcGFuaWMoInVmc2Rpcmhhc2hfZGlydHJ1 bmM6IGJsb2NrcyBpbiB1c2UiKTsKKwkJCVBBTklDKCJibG9ja3MgaW4gdXNlIik7CiAJZm9y IChpID0gMDsgaSA8IERIX05GU1RBVFM7IGkrKykKIAkJaWYgKGRoLT5kaF9maXJzdGZyZWVb aV0gPj0gYmxvY2spCi0JCQlwYW5pYygidWZzZGlyaGFzaF9kaXJ0cnVuYzogZmlyc3QgZnJl ZSBjb3JydXB0Iik7CisJCQlQQU5JQygiZmlyc3QgZnJlZSBjb3JydXB0Iik7CiAJZGgtPmRo X2RpcmJsa3MgPSBibG9jazsKIAl1ZnNkaXJoYXNoX3JlbGVhc2UoZGgpOwogfQpAQCAtOTgw LDEzICs5ODAsMTMgQEAgdWZzZGlyaGFzaF9jaGVja2Jsb2NrKHN0cnVjdCBpbm9kZSAqaXAs IGNoYXIgKmJ1ZiwgZG9mZl90IG9mZnNldCkKIAogCWJsb2NrID0gb2Zmc2V0IC8gRElSQkxL U0laOwogCWlmICgob2Zmc2V0ICYgKERJUkJMS1NJWiAtIDEpKSAhPSAwIHx8IGJsb2NrID49 IGRoLT5kaF9kaXJibGtzKQotCQlwYW5pYygidWZzZGlyaGFzaF9jaGVja2Jsb2NrOiBiYWQg b2Zmc2V0Iik7CisJCVBBTklDKCJiYWQgb2Zmc2V0Iik7CiAKIAluZnJlZSA9IDA7CiAJZm9y IChpID0gMDsgaSA8IERJUkJMS1NJWjsgaSArPSBkcC0+ZF9yZWNsZW4pIHsKIAkJZHAgPSAo c3RydWN0IGRpcmVjdCAqKShidWYgKyBpKTsKIAkJaWYgKGRwLT5kX3JlY2xlbiA9PSAwIHx8 IGkgKyBkcC0+ZF9yZWNsZW4gPiBESVJCTEtTSVopCi0JCQlwYW5pYygidWZzZGlyaGFzaF9j aGVja2Jsb2NrOiBiYWQgZGlyIik7CisJCQlQQU5JQygiYmFkIGRpciIpOwogCiAJCWlmIChk cC0+ZF9pbm8gPT0gMCkgewogI2lmIDAKQEAgLTk5Nyw3ICs5OTcsNyBAQCB1ZnNkaXJoYXNo X2NoZWNrYmxvY2soc3RydWN0IGlub2RlICppcCwgY2hhciAqYnVmLCBkb2ZmX3Qgb2Zmc2V0 KQogCQkJICogb2Zmc2V0cywgYW5kIGZzY2sgZG9lcyBub3QgZml4IHRoZW0uCiAJCQkgKi8K IAkJCWlmIChpICE9IDApCi0JCQkJcGFuaWMoInVmc2Rpcmhhc2hfY2hlY2tibG9jazogYmFk IGRpciBpbm9kZSIpOworCQkJCVBBTklDKCJiYWQgZGlyIGlub2RlIik7CiAjZW5kaWYKIAkJ CW5mcmVlICs9IGRwLT5kX3JlY2xlbjsKIAkJCWNvbnRpbnVlOwpAQCAtMTAwOSwxNyArMTAw OSwxNyBAQCB1ZnNkaXJoYXNoX2NoZWNrYmxvY2soc3RydWN0IGlub2RlICppcCwgY2hhciAq YnVmLCBkb2ZmX3Qgb2Zmc2V0KQogCQluZnJlZSArPSBkcC0+ZF9yZWNsZW4gLSBESVJTSVoo MCwgZHApOwogCX0KIAlpZiAoaSAhPSBESVJCTEtTSVopCi0JCXBhbmljKCJ1ZnNkaXJoYXNo X2NoZWNrYmxvY2s6IGJhZCBkaXIgZW5kIik7CisJCVBBTklDKCJiYWQgZGlyIGVuZCIpOwog CiAJaWYgKGRoLT5kaF9ibGtmcmVlW2Jsb2NrXSAqIERJUkFMSUdOICE9IG5mcmVlKQotCQlw YW5pYygidWZzZGlyaGFzaF9jaGVja2Jsb2NrOiBiYWQgZnJlZSBjb3VudCIpOworCQlQQU5J QygiYmFkIGZyZWUgY291bnQiKTsKIAogCWZmc2xvdCA9IEJMS0ZSRUUySURYKG5mcmVlIC8g RElSQUxJR04pOwogCWZvciAoaSA9IDA7IGkgPD0gREhfTkZTVEFUUzsgaSsrKQogCQlpZiAo ZGgtPmRoX2ZpcnN0ZnJlZVtpXSA9PSBibG9jayAmJiBpICE9IGZmc2xvdCkKLQkJCXBhbmlj KCJ1ZnNkaXJoYXNoX2NoZWNrYmxvY2s6IGJhZCBmaXJzdC1mcmVlIik7CisJCQlQQU5JQygi YmFkIGZpcnN0LWZyZWUiKTsKIAlpZiAoZGgtPmRoX2ZpcnN0ZnJlZVtmZnNsb3RdID09IC0x KQotCQlwYW5pYygidWZzZGlyaGFzaF9jaGVja2Jsb2NrOiBtaXNzaW5nIGZpcnN0LWZyZWUg ZW50cnkiKTsKKwkJUEFOSUMoIm1pc3NpbmcgZmlyc3QtZnJlZSBlbnRyeSIpOwogCXVmc2Rp cmhhc2hfcmVsZWFzZShkaCk7CiB9CiAKQEAgLTExMDAsNyArMTEwMCw3IEBAIHVmc2Rpcmhh c2hfZmluZHNsb3Qoc3RydWN0IGRpcmhhc2ggKmRoLCBjaGFyICpuYW1lLCBpbnQgbmFtZWxl biwgZG9mZl90IG9mZnNldCkKIAkgICAgREhfRU5UUlkoZGgsIHNsb3QpICE9IERJUkhBU0hf RU1QVFkpCiAJCXNsb3QgPSBXUkFQSU5DUihzbG90LCBkaC0+ZGhfaGxlbik7CiAJaWYgKERI X0VOVFJZKGRoLCBzbG90KSAhPSBvZmZzZXQpCi0JCXBhbmljKCJ1ZnNkaXJoYXNoX2ZpbmRz bG90OiAnJS4qcycgbm90IGZvdW5kIiwgbmFtZWxlbiwgbmFtZSk7CisJCVBBTklDKCInJS4q cycgbm90IGZvdW5kIiwgbmFtZWxlbiwgbmFtZSk7CiAKIAlyZXR1cm4gKHNsb3QpOwogfQpk aWZmIC0tZ2l0IGEvc3lzL3Vmcy91ZnMvdWZzX2V4dGF0dHIuYyBiL3N5cy91ZnMvdWZzL3Vm c19leHRhdHRyLmMKaW5kZXggZDUyZjY1MC4uODljZDU2ZCAxMDA2NDQKLS0tIGEvc3lzL3Vm cy91ZnMvdWZzX2V4dGF0dHIuYworKysgYi9zeXMvdWZzL3Vmcy91ZnNfZXh0YXR0ci5jCkBA IC0xODgsMTAgKzE4OCwxMCBAQCB1ZnNfZXh0YXR0cl91ZXBtX2Rlc3Ryb3koc3RydWN0IHVm c19leHRhdHRyX3Blcl9tb3VudCAqdWVwbSkKIHsKIAogCWlmICghKHVlcG0tPnVlcG1fZmxh Z3MgJiBVRlNfRVhUQVRUUl9VRVBNX0lOSVRJQUxJWkVEKSkKLQkJcGFuaWMoInVmc19leHRh dHRyX3VlcG1fZGVzdHJveTogbm90IGluaXRpYWxpemVkIik7CisJCVBBTklDKCJub3QgaW5p dGlhbGl6ZWQiKTsKIAogCWlmICgodWVwbS0+dWVwbV9mbGFncyAmIFVGU19FWFRBVFRSX1VF UE1fU1RBUlRFRCkpCi0JCXBhbmljKCJ1ZnNfZXh0YXR0cl91ZXBtX2Rlc3Ryb3k6IGNhbGxl ZCB3aGlsZSBzdGlsbCBzdGFydGVkIik7CisJCVBBTklDKCJjYWxsZWQgd2hpbGUgc3RpbGwg c3RhcnRlZCIpOwogCiAJLyoKIAkgKiBJdCdzIG5vdCBjbGVhciB0aGF0IGVpdGhlciBvcmRl ciBmb3IgdGhlIG5leHQgdHdvIGxpbmVzIGlzCkBAIC0yOTgsNyArMjk4LDcgQEAgdWZzX2V4 dGF0dHJfbG9va3VwKHN0cnVjdCB2bm9kZSAqc3RhcnRfZHZwLCBpbnQgbG9ja3BhcmVudCwg Y2hhciAqZGlybmFtZSwKIAl9CiAvKgogCWlmICh0YXJnZXRfdnAgPT0gc3RhcnRfZHZwKQot CQlwYW5pYygidWZzX2V4dGF0dHJfbG9va3VwOiB0YXJnZXRfdnAgPT0gc3RhcnRfZHZwIik7 CisJCVBBTklDKCJ0YXJnZXRfdnAgPT0gc3RhcnRfZHZwIik7CiAqLwogCiAJaWYgKHRhcmdl dF92cCAhPSBzdGFydF9kdnAgJiYgbG9ja3BhcmVudCA9PSBVRV9HRVRESVJfTE9DS1BBUkVO VF9ET05UKQpkaWZmIC0tZ2l0IGEvc3lzL3Vmcy91ZnMvdWZzX2dqb3VybmFsLmMgYi9zeXMv dWZzL3Vmcy91ZnNfZ2pvdXJuYWwuYwppbmRleCA4ZTM1YzA4Li4wNWEyMTVkIDEwMDY0NAot LS0gYS9zeXMvdWZzL3Vmcy91ZnNfZ2pvdXJuYWwuYworKysgYi9zeXMvdWZzL3Vmcy91ZnNf Z2pvdXJuYWwuYwpAQCAtODAsNyArODAsNyBAQCB1ZnNfZ2pvdXJuYWxfbW9kcmVmKHN0cnVj dCB2bm9kZSAqdnAsIGludCBjb3VudCkKIAkJY2dibm8gPSBmc2J0b2RiKGZzLCBjZ3RvZChm cywgY2cpKTsKIAl9CiAJaWYgKCh1X2ludClpbm8gPj0gZnMtPmZzX2lwZyAqIGZzLT5mc19u Y2cpCi0JCXBhbmljKCJ1ZnNfZ2pvdXJuYWxfbW9kcmVmOiByYW5nZTogZGV2ID0gJXMsIGlu byA9ICVsdSwgZnMgPSAlcyIsCisJCVBBTklDKCJyYW5nZTogZGV2ID0gJXMsIGlubyA9ICVs dSwgZnMgPSAlcyIsCiAJCSAgICBkZXZ0b25hbWUoZGV2KSwgKHVfbG9uZylpbm8sIGZzLT5m c19mc21udCk7CiAJaWYgKChlcnJvciA9IGJyZWFkKGRldnZwLCBjZ2JubywgKGludClmcy0+ ZnNfY2dzaXplLCBOT0NSRUQsICZicCkpKSB7CiAJCWJyZWxzZShicCk7CmRpZmYgLS1naXQg YS9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgYi9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMK aW5kZXggMDJmZGE5Zi4uMTc2Yzg3OSAxMDA2NDQKLS0tIGEvc3lzL3Vmcy91ZnMvdWZzX2xv b2t1cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19sb29rdXAuYwpAQCAtNzcwLDcgKzc3MCw3 IEBAIHVmc19kaXJiYWQoaXAsIG9mZnNldCwgaG93KQogCiAJbXAgPSBJVE9WKGlwKS0+dl9t b3VudDsKIAlpZiAoKG1wLT5tbnRfZmxhZyAmIE1OVF9SRE9OTFkpID09IDApCi0JCXBhbmlj KCJ1ZnNfZGlyYmFkOiAlczogYmFkIGRpciBpbm8gJWp1IGF0IG9mZnNldCAlbGQ6ICVzIiwK KwkJUEFOSUMoIiVzOiBiYWQgZGlyIGlubyAlanUgYXQgb2Zmc2V0ICVsZDogJXMiLAogCQkg ICAgbXAtPm1udF9zdGF0LmZfbW50b25uYW1lLCAodWludG1heF90KWlwLT5pX251bWJlciwK IAkJICAgIChsb25nKW9mZnNldCwgaG93KTsKIAllbHNlCkBAIC04MzksNyArODM5LDcgQEAg dWZzX21ha2VkaXJlbnRyeShpcCwgY25wLCBuZXdkaXJwKQogCiAjaWZkZWYgSU5WQVJJQU5U UwogCWlmICgoY25wLT5jbl9mbGFncyAmIFNBVkVOQU1FKSA9PSAwKQotCQlwYW5pYygidWZz X21ha2VkaXJlbnRyeTogbWlzc2luZyBuYW1lIik7CisJCVBBTklDKCJtaXNzaW5nIG5hbWUi KTsKICNlbmRpZgogCW5ld2RpcnAtPmRfaW5vID0gaXAtPmlfbnVtYmVyOwogCW5ld2RpcnAt PmRfbmFtbGVuID0gY25wLT5jbl9uYW1lbGVuOwpAQCAtODk4LDcgKzg5OCw3IEBAIHVmc19k aXJlbnRlcihkdnAsIHR2cCwgZGlycCwgY25wLCBuZXdkaXJicCwgaXNyZW5hbWUpCiAJCSAq IG5ldyBlbnRyeSBpbnRvIGEgZnJlc2ggYmxvY2suCiAJCSAqLwogCQlpZiAoZHAtPmlfb2Zm c2V0ICYgKERJUkJMS1NJWiAtIDEpKQotCQkJcGFuaWMoInVmc19kaXJlbnRlcjogbmV3Ymxr Iik7CisJCQlQQU5JQygibmV3YmxrIik7CiAJCWZsYWdzID0gQkFfQ0xSQlVGOwogCQlpZiAo IURPSU5HU09GVERFUChkdnApICYmICFET0lOR0FTWU5DKGR2cCkpCiAJCQlmbGFncyB8PSBJ T19TWU5DOwpAQCAtMTA4MSwxMSArMTA4MSwxMSBAQCB1ZnNfZGlyZW50ZXIoZHZwLCB0dnAs IGRpcnAsIGNucCwgbmV3ZGlyYnAsIGlzcmVuYW1lKQogCSAgICAoZXAtPmRfaW5vID09IFdJ Tk8gJiYgbmFtbGVuID09IGRpcnAtPmRfbmFtbGVuICYmCiAJICAgICBiY21wKGVwLT5kX25h bWUsIGRpcnAtPmRfbmFtZSwgZGlycC0+ZF9uYW1sZW4pID09IDApKSB7CiAJCWlmIChzcGFj ZWZyZWUgKyBkc2l6ZSA8IG5ld2VudHJ5c2l6ZSkKLQkJCXBhbmljKCJ1ZnNfZGlyZW50ZXI6 IGNvbXBhY3QxIik7CisJCQlQQU5JQygiY29tcGFjdDEiKTsKIAkJZGlycC0+ZF9yZWNsZW4g PSBzcGFjZWZyZWUgKyBkc2l6ZTsKIAl9IGVsc2UgewogCQlpZiAoc3BhY2VmcmVlIDwgbmV3 ZW50cnlzaXplKQotCQkJcGFuaWMoInVmc19kaXJlbnRlcjogY29tcGFjdDIiKTsKKwkJCVBB TklDKCJjb21wYWN0MiIpOwogCQlkaXJwLT5kX3JlY2xlbiA9IHNwYWNlZnJlZTsKIAkJZXAt PmRfcmVjbGVuID0gZHNpemU7CiAJCWVwID0gKHN0cnVjdCBkaXJlY3QgKikoKGNoYXIgKill cCArIGRzaXplKTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHVmc19kaXJyZW1vdmUoZHZwLCBp cCwgZmxhZ3MsIGlzcm1kaXIpCiAJCXVmc2Rpcmhhc2hfcmVtb3ZlKGRwLCByZXAsIGRwLT5p X29mZnNldCk7CiAjZW5kaWYKIAlpZiAoaXAgJiYgcmVwLT5kX2lubyAhPSBpcC0+aV9udW1i ZXIpCi0JCXBhbmljKCJ1ZnNfZGlycmVtb3ZlOiBpcCAlanUgZG9lcyBub3QgbWF0Y2ggZGly ZW50IGlubyAlanVcbiIsCisJCVBBTklDKCJpcCAlanUgZG9lcyBub3QgbWF0Y2ggZGlyZW50 IGlubyAlanVcbiIsCiAJCSAgICAodWludG1heF90KWlwLT5pX251bWJlciwgKHVpbnRtYXhf dClyZXAtPmRfaW5vKTsKIAlpZiAoZHAtPmlfY291bnQgPT0gMCkgewogCQkvKgpAQCAtMTQ2 OCw3ICsxNDY4LDcgQEAgdWZzX2NoZWNrcGF0aChpbm9fdCBzb3VyY2VfaW5vLCBpbm9fdCBw YXJlbnRfaW5vLCBzdHJ1Y3QgaW5vZGUgKnRhcmdldCwgc3RydWN0IHUKIAl9CiAKIAlpZiAo ZXJyb3IgPT0gRU5PVERJUikKLQkJcGFuaWMoImNoZWNrcGF0aDogLi4gbm90IGEgZGlyZWN0 b3J5XG4iKTsKKwkJUEFOSUMoIi4uIG5vdCBhIGRpcmVjdG9yeVxuIik7CiAJaWYgKHZwICE9 IHR2cCkKIAkJdnB1dCh2cCk7CiAJcmV0dXJuIChlcnJvcik7CmRpZmYgLS1naXQgYS9zeXMv dWZzL3Vmcy91ZnNfcXVvdGEuYyBiL3N5cy91ZnMvdWZzL3Vmc19xdW90YS5jCmluZGV4IDg3 YWM5YTEuLjliZTk0OTYgMTAwNjQ0Ci0tLSBhL3N5cy91ZnMvdWZzL3Vmc19xdW90YS5jCisr KyBiL3N5cy91ZnMvdWZzL3Vmc19xdW90YS5jCkBAIC00NzYsNyArNDc2LDcgQEAgY2hrZHF1 b3Qoc3RydWN0IGlub2RlICppcCkKIAkJaWYgKGlwLT5pX2RxdW90W2ldID09IE5PRFFVT1Qp IHsKIAkJCVVGU19VTkxPQ0sodW1wKTsKIAkJCXZwcmludCgiY2hrZHF1b3Q6IG1pc3Npbmcg ZHF1b3QiLCBJVE9WKGlwKSk7Ci0JCQlwYW5pYygiY2hrZHF1b3Q6IG1pc3NpbmcgZHF1b3Qi KTsKKwkJCVBBTklDKCJtaXNzaW5nIGRxdW90Iik7CiAJCX0KIAl9CiAJVUZTX1VOTE9DSyh1 bXApOwpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgaGZvdW5kOgkJRFFJX0xPQ0soZHEpOwogCQkJ cmV0dXJuIChFVVNFUlMpOwogCQl9CiAJCWlmIChkcS0+ZHFfY250IHx8IChkcS0+ZHFfZmxh Z3MgJiBEUV9NT0QpKQotCQkJcGFuaWMoImRxZ2V0OiBmcmVlIGRxdW90IGlzbid0ICVwIiwg ZHEpOworCQkJUEFOSUMoImZyZWUgZHF1b3QgaXNuJ3QgJXAiLCBkcSk7CiAJCVRBSUxRX1JF TU9WRSgmZHFmcmVlbGlzdCwgZHEsIGRxX2ZyZWVsaXN0KTsKIAkJaWYgKGRxLT5kcV91bXAg IT0gTlVMTCkKIAkJCUxJU1RfUkVNT1ZFKGRxLCBkcV9oYXNoKTsKQEAgLTE1MjMsMTIgKzE1 MjMsMTIgQEAgZHFzeW5jKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkcXVvdCAqZHEpCiAJ bXAgPSBOVUxMOwogCWVycm9yID0gMDsKIAlpZiAoZHEgPT0gTk9EUVVPVCkKLQkJcGFuaWMo ImRxc3luYzogZHF1b3QiKTsKKwkJUEFOSUMoImRxdW90Iik7CiAJaWYgKCh1bXAgPSBkcS0+ ZHFfdW1wKSA9PSBOVUxMKQogCQlyZXR1cm4gKDApOwogCVVGU19MT0NLKHVtcCk7CiAJaWYg KChkcXZwID0gdW1wLT51bV9xdW90YXNbZHEtPmRxX3R5cGVdKSA9PSBOVUxMVlApCi0JCXBh bmljKCJkcXN5bmM6IGZpbGUiKTsKKwkJUEFOSUMoImZpbGUiKTsKIAl2cmVmKGRxdnApOwog CVVGU19VTkxPQ0sodW1wKTsKIApAQCAtMTYxMiw3ICsxNjEyLDcgQEAgZHFmbHVzaChzdHJ1 Y3Qgdm5vZGUgKnZwKQogCQkJaWYgKGRxLT5kcV91bXAtPnVtX3F1b3Rhc1tkcS0+ZHFfdHlw ZV0gIT0gdnApCiAJCQkJY29udGludWU7CiAJCQlpZiAoZHEtPmRxX2NudCkKLQkJCQlwYW5p YygiZHFmbHVzaDogc3RyYXkgZHF1b3QiKTsKKwkJCQlQQU5JQygic3RyYXkgZHF1b3QiKTsK IAkJCUxJU1RfUkVNT1ZFKGRxLCBkcV9oYXNoKTsKIAkJCWRxLT5kcV91bXAgPSAoc3RydWN0 IHVmc21vdW50ICopMDsKIAkJfQpkaWZmIC0tZ2l0IGEvc3lzL3Vmcy91ZnMvdWZzX3Zub3Bz LmMgYi9zeXMvdWZzL3Vmcy91ZnNfdm5vcHMuYwppbmRleCBmNjliMWY5Li42MjQwMTkwIDEw MDY0NAotLS0gYS9zeXMvdWZzL3Vmcy91ZnNfdm5vcHMuYworKysgYi9zeXMvdWZzL3Vmcy91 ZnNfdm5vcHMuYwpAQCAtOTEzLDcgKzkxMyw3IEBAIHVmc19jaG93bih2cCwgdWlkLCBnaWQs IGNyZWQsIHRkKQogCXJldHVybiAoZXJyb3IpOwogZ29vZDoKIAlpZiAoZ2V0aW5vcXVvdGEo aXApKQotCQlwYW5pYygidWZzX2Nob3duOiBsb3N0IHF1b3RhIik7CisJCVBBTklDKCJsb3N0 IHF1b3RhIik7CiAjZW5kaWYgLyogUVVPVEEgKi8KIAlpcC0+aV9mbGFnIHw9IElOX0NIQU5H RTsKIAlpZiAoKGlwLT5pX21vZGUgJiAoSVNVSUQgfCBJU0dJRCkpICYmIChvdWlkICE9IHVp ZCB8fCBvZ2lkICE9IGdpZCkpIHsKQEAgLTk5MSwxNSArOTkxLDE0IEBAIHVmc19saW5rKGFw KQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICgoY25wLT5jbl9mbGFncyAmIEhBU0JVRikg PT0gMCkKLQkJcGFuaWMoInVmc19saW5rOiBubyBuYW1lIik7CisJCVBBTklDKCJubyBuYW1l Iik7CiAjZW5kaWYKIAlpZiAodGR2cC0+dl9tb3VudCAhPSB2cC0+dl9tb3VudCkgewogCQll cnJvciA9IEVYREVWOwogCQlnb3RvIG91dDsKIAl9CiAJaWYgKFZUT0kodGR2cCktPmlfZWZm bmxpbmsgPCAyKQotCQlwYW5pYygidWZzX2xpbms6IEJhZCBsaW5rIGNvdW50ICVkIG9uIHBh cmVudCIsCi0JCSAgICBWVE9JKHRkdnApLT5pX2VmZm5saW5rKTsKKwkJUEFOSUMoIkJhZCBs aW5rIGNvdW50ICVkIG9uIHBhcmVudCIsIFZUT0kodGR2cCktPmlfZWZmbmxpbmspOwogCWlw ID0gVlRPSSh2cCk7CiAJaWYgKChubGlua190KWlwLT5pX25saW5rID49IExJTktfTUFYKSB7 CiAJCWVycm9yID0gRU1MSU5LOwpAQCAtMTA2OCw5ICsxMDY3LDkgQEAgdWZzX3doaXRlb3V0 KGFwKQogCQkvKiBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IHdoaXRlb3V0ICovCiAjaWZkZWYg SU5WQVJJQU5UUwogCQlpZiAoKGNucC0+Y25fZmxhZ3MgJiBTQVZFTkFNRSkgPT0gMCkKLQkJ CXBhbmljKCJ1ZnNfd2hpdGVvdXQ6IG1pc3NpbmcgbmFtZSIpOworCQkJUEFOSUMoIm1pc3Np bmcgbmFtZSIpOwogCQlpZiAoZHZwLT52X21vdW50LT5tbnRfbWF4c3ltbGlua2xlbiA8PSAw KQotCQkJcGFuaWMoInVmc193aGl0ZW91dDogb2xkIGZvcm1hdCBmaWxlc3lzdGVtIik7CisJ CQlQQU5JQygib2xkIGZvcm1hdCBmaWxlc3lzdGVtIik7CiAjZW5kaWYKIAogCQluZXdkaXIu ZF9pbm8gPSBXSU5POwpAQCAtMTA4NCwxNCArMTA4MywxNCBAQCB1ZnNfd2hpdGVvdXQoYXAp CiAJCS8qIHJlbW92ZSBhbiBleGlzdGluZyBkaXJlY3Rvcnkgd2hpdGVvdXQgKi8KICNpZmRl ZiBJTlZBUklBTlRTCiAJCWlmIChkdnAtPnZfbW91bnQtPm1udF9tYXhzeW1saW5rbGVuIDw9 IDApCi0JCQlwYW5pYygidWZzX3doaXRlb3V0OiBvbGQgZm9ybWF0IGZpbGVzeXN0ZW0iKTsK KwkJCVBBTklDKCJvbGQgZm9ybWF0IGZpbGVzeXN0ZW0iKTsKICNlbmRpZgogCiAJCWNucC0+ Y25fZmxhZ3MgJj0gfkRPV0hJVEVPVVQ7CiAJCWVycm9yID0gdWZzX2RpcnJlbW92ZShkdnAs IE5VTEwsIGNucC0+Y25fZmxhZ3MsIDApOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlwYW5p YygidWZzX3doaXRlb3V0OiB1bmtub3duIG9wIik7CisJCVBBTklDKCJ1bmtub3duIG9wIik7 CiAJfQogCXJldHVybiAoZXJyb3IpOwogfQpAQCAtMTE1NSw3ICsxMTU0LDcgQEAgdWZzX3Jl bmFtZShhcCkKICNpZmRlZiBJTlZBUklBTlRTCiAJaWYgKCh0Y25wLT5jbl9mbGFncyAmIEhB U0JVRikgPT0gMCB8fAogCSAgICAoZmNucC0+Y25fZmxhZ3MgJiBIQVNCVUYpID09IDApCi0J CXBhbmljKCJ1ZnNfcmVuYW1lOiBubyBuYW1lIik7CisJCVBBTklDKCJubyBuYW1lIik7CiAj ZW5kaWYKIAllbmRvZmYgPSAwOwogCW1wID0gdGR2cC0+dl9tb3VudDsKQEAgLTEzNTQsMTEg KzEzNTMsMTEgQEAgcmVsb2NrOgogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIHVubG9ja291dDsK IAkJaWYgKCh0Y25wLT5jbl9mbGFncyAmIFNBVkVTVEFSVCkgPT0gMCkKLQkJCXBhbmljKCJ1 ZnNfcmVuYW1lOiBsb3N0IHRvIHN0YXJ0ZGlyIik7CisJCQlQQU5JQygibG9zdCB0byBzdGFy dGRpciIpOwogCX0KIAlpZiAoZmlwLT5pX2VmZm5saW5rID09IDAgfHwgZmRwLT5pX2VmZm5s aW5rID09IDAgfHwKIAkgICAgdGRwLT5pX2VmZm5saW5rID09IDApCi0JCXBhbmljKCJCYWQg ZWZmbmxpbmsgZmlwICVwLCBmZHAgJXAsIHRkcCAlcCIsIGZpcCwgZmRwLCB0ZHApOworCQlQ QU5JQygiQmFkIGVmZm5saW5rIGZpcCAlcCwgZmRwICVwLCB0ZHAgJXAiLCBmaXAsIGZkcCwg dGRwKTsKIAogCS8qCiAJICogMSkgQnVtcCBsaW5rIGNvdW50IHdoaWxlIHdlJ3JlIG1vdmlu ZyBzdHVmZgpAQCAtMTM4NSw3ICsxMzg0LDcgQEAgcmVsb2NrOgogCSAqLwogCWlmICh0aXAg PT0gTlVMTCkgewogCQlpZiAodGRwLT5pX2RldiAhPSBmaXAtPmlfZGV2KQotCQkJcGFuaWMo InVmc19yZW5hbWU6IEVYREVWIik7CisJCQlQQU5JQygiRVhERVYiKTsKIAkJaWYgKGRvaW5n ZGlyZWN0b3J5ICYmIG5ld3BhcmVudCkgewogCQkJLyoKIAkJCSAqIEFjY291bnQgZm9yICIu LiIgaW4gbmV3IGRpcmVjdG9yeS4KQEAgLTE0MDksMTIgKzE0MDgsMTIgQEAgcmVsb2NrOgog CQkJZW5kb2ZmID0gdGRwLT5pX2VuZG9mZjsKIAl9IGVsc2UgewogCQlpZiAodGlwLT5pX2Rl diAhPSB0ZHAtPmlfZGV2IHx8IHRpcC0+aV9kZXYgIT0gZmlwLT5pX2RldikKLQkJCXBhbmlj KCJ1ZnNfcmVuYW1lOiBFWERFViIpOworCQkJUEFOSUMoIkVYREVWIik7CiAJCS8qCiAJCSAq IFNob3J0IGNpcmN1aXQgcmVuYW1lKGZvbywgZm9vKS4KIAkJICovCiAJCWlmICh0aXAtPmlf bnVtYmVyID09IGZpcC0+aV9udW1iZXIpCi0JCQlwYW5pYygidWZzX3JlbmFtZTogc2FtZSBm aWxlIik7CisJCQlQQU5JQygic2FtZSBmaWxlIik7CiAJCS8qCiAJCSAqIElmIHRoZSBwYXJl bnQgZGlyZWN0b3J5IGlzICJzdGlja3kiLCB0aGVuIHRoZSBjYWxsZXIKIAkJICogbXVzdCBw b3NzZXNzIFZBRE1JTiBmb3IgdGhlIHBhcmVudCBkaXJlY3RvcnksIG9yIHRoZQpAQCAtMTUw Miw5ICsxNTAxLDkgQEAgcmVsb2NrOgogCWlmIChmZHZwID09IHRkdnApIHsKIAkJZXJyb3Ig PSB1ZnNfbG9va3VwX2lubyhmZHZwLCBOVUxMLCBmY25wLCAmaW5vKTsKIAkJaWYgKGVycm9y KQotCQkJcGFuaWMoInVmc19yZW5hbWU6IGZyb20gZW50cnkgd2VudCBhd2F5ISIpOworCQkJ UEFOSUMoImZyb20gZW50cnkgd2VudCBhd2F5ISIpOwogCQlpZiAoaW5vICE9IGZpcC0+aV9u dW1iZXIpCi0JCQlwYW5pYygidWZzX3JlbmFtZTogaW5vIG1pc21hdGNoICVqdSAhPSAlanVc biIsCisJCQlQQU5JQygiaW5vIG1pc21hdGNoICVqdSAhPSAlanVcbiIsCiAJCQkgICAgKHVp bnRtYXhfdClpbm8sICh1aW50bWF4X3QpZmlwLT5pX251bWJlcik7CiAJfQogCS8qCkBAIC0x NjYzLDcgKzE2NjIsNyBAQCB1ZnNfZG9fcG9zaXgxZV9hY2xfaW5oZXJpdGFuY2VfZGlyKHN0 cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnR2cCwKIAkJICovCiAJCXByaW50Zigi dWZzX21rZGlyOiBWT1BfR0VUQUNMKCkgYnV0IG5vIFZPUF9TRVRBQ0woKVxuIik7CiAJCS8q Ci0JCXBhbmljKCJ1ZnNfbWtkaXI6IFZPUF9HRVRBQ0woKSBidXQgbm8gVk9QX1NFVEFDTCgp Iik7CisJCVBBTklDKCJWT1BfR0VUQUNMKCkgYnV0IG5vIFZPUF9TRVRBQ0woKSIpOwogCQkg Ki8KIAkJYnJlYWs7CiAKQEAgLTE3NDMsOCArMTc0Miw3IEBAIHVmc19kb19wb3NpeDFlX2Fj bF9pbmhlcml0YW5jZV9maWxlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnR2 cCwKIAkJICovCiAJCXByaW50ZigidWZzX21ha2Vpbm9kZTogVk9QX0dFVEFDTCgpIGJ1dCBu byAiCiAJCSAgICAiVk9QX1NFVEFDTCgpXG4iKTsKLQkJLyogcGFuaWMoInVmc19tYWtlaW5v ZGU6IFZPUF9HRVRBQ0woKSBidXQgbm8gIgotCQkgICAgIlZPUF9TRVRBQ0woKSIpOyAqLwor CQkvKiBQQU5JQygiVk9QX0dFVEFDTCgpIGJ1dCBubyBWT1BfU0VUQUNMKCkiKTsgKi8KIAkJ YnJlYWs7CiAKIAlkZWZhdWx0OgpAQCAtMTgwOCw3ICsxODA2LDcgQEAgdWZzX21rZGlyKGFw KQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICgoY25wLT5jbl9mbGFncyAmIEhBU0JVRikg PT0gMCkKLQkJcGFuaWMoInVmc19ta2Rpcjogbm8gbmFtZSIpOworCQlQQU5JQygibm8gbmFt ZSIpOwogI2VuZGlmCiAJZHAgPSBWVE9JKGR2cCk7CiAJaWYgKChubGlua190KWRwLT5pX25s aW5rID49IExJTktfTUFYKSB7CkBAIC0yMDU3LDggKzIwNTUsNyBAQCB1ZnNfcm1kaXIoYXAp CiAJCWdvdG8gb3V0OwogCX0KIAlpZiAoZHAtPmlfZWZmbmxpbmsgPCAzKQotCQlwYW5pYygi dWZzX2RpcnJlbTogQmFkIGxpbmsgY291bnQgJWQgb24gcGFyZW50IiwKLQkJICAgIGRwLT5p X2VmZm5saW5rKTsKKwkJUEFOSUMoIkJhZCBsaW5rIGNvdW50ICVkIG9uIHBhcmVudCIsIGRw LT5pX2VmZm5saW5rKTsKIAlpZiAoIXVmc19kaXJlbXB0eShpcCwgZHAtPmlfbnVtYmVyLCBj bnAtPmNuX2NyZWQpKSB7CiAJCWVycm9yID0gRU5PVEVNUFRZOwogCQlnb3RvIG91dDsKQEAg LTIyNTMsNyArMjI1MCw3IEBAIHVmc19yZWFkZGlyKGFwKQogCQl1X2xvbmcgKmNvb2tpZXA7 CiAKIAkJaWYgKHVpby0+dWlvX3NlZ2ZsZyAhPSBVSU9fU1lTU1BBQ0UgfHwgdWlvLT51aW9f aW92Y250ICE9IDEpCi0JCQlwYW5pYygidWZzX3JlYWRkaXI6IHVuZXhwZWN0ZWQgdWlvIGZy b20gTkZTIHNlcnZlciIpOworCQkJUEFOSUMoInVuZXhwZWN0ZWQgdWlvIGZyb20gTkZTIHNl cnZlciIpOwogCQlkcFN0YXJ0ID0gKHN0cnVjdCBkaXJlbnQgKikKIAkJICAgICgoY2hhciAq KXVpby0+dWlvX2lvdi0+aW92X2Jhc2UgLSAodWlvLT51aW9fb2Zmc2V0IC0gb2ZmKSk7CiAJ CWRwRW5kID0gKHN0cnVjdCBkaXJlbnQgKikgdWlvLT51aW9faW92LT5pb3ZfYmFzZTsKQEAg LTI1OTMsMTUgKzI1OTAsMTQgQEAgdWZzX21ha2Vpbm9kZShtb2RlLCBkdnAsIHZwcCwgY25w KQogCXBkaXIgPSBWVE9JKGR2cCk7CiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICgoY25wLT5j bl9mbGFncyAmIEhBU0JVRikgPT0gMCkKLQkJcGFuaWMoInVmc19tYWtlaW5vZGU6IG5vIG5h bWUiKTsKKwkJUEFOSUMoIm5vIG5hbWUiKTsKICNlbmRpZgogCSp2cHAgPSBOVUxMOwogCWlm ICgobW9kZSAmIElGTVQpID09IDApCiAJCW1vZGUgfD0gSUZSRUc7CiAKIAlpZiAoVlRPSShk dnApLT5pX2VmZm5saW5rIDwgMikKLQkJcGFuaWMoInVmc19tYWtlaW5vZGU6IEJhZCBsaW5r IGNvdW50ICVkIG9uIHBhcmVudCIsCi0JCSAgICBWVE9JKGR2cCktPmlfZWZmbmxpbmspOwor CQlQQU5JQygiQmFkIGxpbmsgY291bnQgJWQgb24gcGFyZW50IiwgVlRPSShkdnApLT5pX2Vm Zm5saW5rKTsKIAllcnJvciA9IFVGU19WQUxMT0MoZHZwLCBtb2RlLCBjbnAtPmNuX2NyZWQs ICZ0dnApOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIChlcnJvcik7Ci0tIAoxLjguMS4yCgo= --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8; name="0005-ffs-Use-PANIC-instead-of-panic-with-inconsistent-fun.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0005-ffs-Use-PANIC-instead-of-panic-with-inconsistent-fun.pa"; filename*1="tch" RnJvbSBlMDA2OTFjNWZjMDkyYTc4YjBmNGZmMjViZjIwYzI0YmViZDZkMTQ4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDEyOjA1OjU4ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCA1LzZdIGZmczogVXNlIFBBTklDKCkgaW5zdGVhZCBvZiBwYW5pYygpIHdp dGggaW5jb25zaXN0ZW50CiBmdW5jdGlvbiBuYW1lcy4KCi0tLQogc3lzL3Vmcy9mZnMvZmZz X2FsbG9jLmMgICAgfCAgODIgKysrKy0tLS0KIHN5cy91ZnMvZmZzL2Zmc19iYWxsb2MuYyAg IHwgIDE4ICstCiBzeXMvdWZzL2Zmcy9mZnNfaW5vZGUuYyAgICB8ICAxOCArLQogc3lzL3Vm cy9mZnMvZmZzX3Jhd3JlYWQuYyAgfCAgIDIgKy0KIHN5cy91ZnMvZmZzL2Zmc19zbmFwc2hv dC5jIHwgIDM4ICsrLS0KIHN5cy91ZnMvZmZzL2Zmc19zb2Z0ZGVwLmMgIHwgNTExICsrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3lzL3Vmcy9mZnMv ZmZzX3N1YnIuYyAgICAgfCAgMTAgKy0KIHN5cy91ZnMvZmZzL2Zmc19zdXNwZW5kLmMgIHwg ICAyICstCiBzeXMvdWZzL2Zmcy9mZnNfdmZzb3BzLmMgICB8ICAxOSArLQogc3lzL3Vmcy9m ZnMvZmZzX3Zub3BzLmMgICAgfCAgMjYgKy0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAzMzcgaW5z ZXJ0aW9ucygrKSwgMzg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N5cy91ZnMvZmZz L2Zmc19hbGxvYy5jIGIvc3lzL3Vmcy9mZnMvZmZzX2FsbG9jLmMKaW5kZXggNWFkNTc3NS4u YWEyNTNmMyAxMDA2NDQKLS0tIGEvc3lzL3Vmcy9mZnMvZmZzX2FsbG9jLmMKKysrIGIvc3lz L3Vmcy9mZnMvZmZzX2FsbG9jLmMKQEAgLTE3MiwxMCArMTcyLDEwIEBAIGZmc19hbGxvYyhp cCwgbGJuLCBicHJlZiwgc2l6ZSwgZmxhZ3MsIGNyZWQsIGJucCkKIAkJcHJpbnRmKCJkZXYg PSAlcywgYnNpemUgPSAlbGQsIHNpemUgPSAlZCwgZnMgPSAlc1xuIiwKIAkJICAgIGRldnRv bmFtZShpcC0+aV9kZXYpLCAobG9uZylmcy0+ZnNfYnNpemUsIHNpemUsCiAJCSAgICBmcy0+ ZnNfZnNtbnQpOwotCQlwYW5pYygiZmZzX2FsbG9jOiBiYWQgc2l6ZSIpOworCQlQQU5JQygi YmFkIHNpemUiKTsKIAl9CiAJaWYgKGNyZWQgPT0gTk9DUkVEKQotCQlwYW5pYygiZmZzX2Fs bG9jOiBtaXNzaW5nIGNyZWRlbnRpYWwiKTsKKwkJUEFOSUMoIm1pc3NpbmcgY3JlZGVudGlh bCIpOwogI2VuZGlmIC8qIElOVkFSSUFOVFMgKi8KIAlyZWNsYWltZWQgPSAwOwogcmV0cnk6 CkBAIC0yNjgsMTcgKzI2OCwxNyBAQCBmZnNfcmVhbGxvY2NnKGlwLCBsYnByZXYsIGJwcmV2 LCBicHJlZiwgb3NpemUsIG5zaXplLCBmbGFncywgY3JlZCwgYnBwKQogCW10eF9hc3NlcnQo VUZTX01UWCh1bXApLCBNQV9PV05FRCk7CiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICh2cC0+ dl9tb3VudC0+bW50X2tlcm5fZmxhZyAmIE1OVEtfU1VTUEVOREVEKQotCQlwYW5pYygiZmZz X3JlYWxsb2NjZzogYWxsb2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOworCQlQ QU5JQygiYWxsb2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOwogCWlmICgodV9p bnQpb3NpemUgPiBmcy0+ZnNfYnNpemUgfHwgZnJhZ29mZihmcywgb3NpemUpICE9IDAgfHwK IAkgICAgKHVfaW50KW5zaXplID4gZnMtPmZzX2JzaXplIHx8IGZyYWdvZmYoZnMsIG5zaXpl KSAhPSAwKSB7CiAJCXByaW50ZigKIAkJImRldiA9ICVzLCBic2l6ZSA9ICVsZCwgb3NpemUg PSAlZCwgbnNpemUgPSAlZCwgZnMgPSAlc1xuIiwKIAkJICAgIGRldnRvbmFtZShpcC0+aV9k ZXYpLCAobG9uZylmcy0+ZnNfYnNpemUsIG9zaXplLAogCQkgICAgbnNpemUsIGZzLT5mc19m c21udCk7Ci0JCXBhbmljKCJmZnNfcmVhbGxvY2NnOiBiYWQgc2l6ZSIpOworCQlQQU5JQygi YmFkIHNpemUiKTsKIAl9CiAJaWYgKGNyZWQgPT0gTk9DUkVEKQotCQlwYW5pYygiZmZzX3Jl YWxsb2NjZzogbWlzc2luZyBjcmVkZW50aWFsIik7CisJCVBBTklDKCJtaXNzaW5nIGNyZWRl bnRpYWwiKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJcmVjbGFpbWVkID0gMDsKIHJl dHJ5OgpAQCAtMjkwLDcgKzI5MCw3IEBAIHJldHJ5OgogCQlwcmludGYoImRldiA9ICVzLCBi c2l6ZSA9ICVsZCwgYnByZXYgPSAlamQsIGZzID0gJXNcbiIsCiAJCSAgICBkZXZ0b25hbWUo aXAtPmlfZGV2KSwgKGxvbmcpZnMtPmZzX2JzaXplLCAoaW50bWF4X3QpYnByZXYsCiAJCSAg ICBmcy0+ZnNfZnNtbnQpOwotCQlwYW5pYygiZmZzX3JlYWxsb2NjZzogYmFkIGJwcmV2Iik7 CisJCVBBTklDKCJiYWQgYnByZXYiKTsKIAl9CiAJVUZTX1VOTE9DSyh1bXApOwogCS8qCkBA IC0zMDQsNyArMzA0LDcgQEAgcmV0cnk6CiAKIAlpZiAoYnAtPmJfYmxrbm8gPT0gYnAtPmJf bGJsa25vKSB7CiAJCWlmIChsYnByZXYgPj0gTkRBRERSKQotCQkJcGFuaWMoImZmc19yZWFs bG9jY2c6IGxicHJldiBvdXQgb2YgcmFuZ2UiKTsKKwkJCVBBTklDKCJsYnByZXYgb3V0IG9m IHJhbmdlIik7CiAJCWJwLT5iX2Jsa25vID0gZnNidG9kYihmcywgYnByZXYpOwogCX0KIApA QCAtMzIzLDcgKzMyMyw3IEBAIHJldHJ5OgogCWJubyA9IGZmc19mcmFnZXh0ZW5kKGlwLCBj ZywgYnByZXYsIG9zaXplLCBuc2l6ZSk7CiAJaWYgKGJubykgewogCQlpZiAoYnAtPmJfYmxr bm8gIT0gZnNidG9kYihmcywgYm5vKSkKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2NnOiBiYWQg YmxvY2tubyIpOworCQkJUEFOSUMoImJhZCBibG9ja25vIik7CiAJCWRlbHRhID0gYnRvZGIo bnNpemUgLSBvc2l6ZSk7CiAJCURJUF9TRVQoaXAsIGlfYmxvY2tzLCBESVAoaXAsIGlfYmxv Y2tzKSArIGRlbHRhKTsKIAkJaWYgKGZsYWdzICYgSU9fRVhUKQpAQCAtMzgzLDcgKzM4Myw3 IEBAIHJldHJ5OgogCWRlZmF1bHQ6CiAJCXByaW50ZigiZGV2ID0gJXMsIG9wdGltID0gJWxk LCBmcyA9ICVzXG4iLAogCQkgICAgZGV2dG9uYW1lKGlwLT5pX2RldiksIChsb25nKWZzLT5m c19vcHRpbSwgZnMtPmZzX2ZzbW50KTsKLQkJcGFuaWMoImZmc19yZWFsbG9jY2c6IGJhZCBv cHRpbSIpOworCQlQQU5JQygiYmFkIG9wdGltIik7CiAJCS8qIE5PVFJFQUNIRUQgKi8KIAl9 CiAJYm5vID0gZmZzX2hhc2hhbGxvYyhpcCwgY2csIGJwcmVmLCByZXF1ZXN0LCBuc2l6ZSwg ZmZzX2FsbG9jY2cpOwpAQCAtNTI0LDE1ICs1MjQsMTUgQEAgZmZzX3JlYWxsb2NibGtzX3Vm czEoYXApCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQogCQlpZiAoIWZmc19jaGVja2Js ayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0tPmJfYmxr bm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczogdW5hbGxv Y2F0ZWQgYmxvY2sgMSIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJsb2NrIDEiKTsKIAlm b3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspCiAJCWlmIChidWZsaXN0LT5ic19jaGlsZHJlbltp XS0+Yl9sYmxrbm8gIT0gc3RhcnRfbGJuICsgaSkKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2Js a3M6IG5vbi1sb2dpY2FsIGNsdXN0ZXIiKTsKKwkJCVBBTklDKCJub24tbG9naWNhbCBjbHVz dGVyIik7CiAJYmxrbm8gPSBidWZsaXN0LT5ic19jaGlsZHJlblswXS0+Yl9ibGtubzsKIAlz c2l6ZSA9IGZzYnRvZGIoZnMsIGZzLT5mc19mcmFnKTsKIAlmb3IgKGkgPSAxOyBpIDwgbGVu IC0gMTsgaSsrKQogCQlpZiAoYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0tPmJfYmxrbm8gIT0g Ymxrbm8gKyAoaSAqIHNzaXplKSkKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2Jsa3M6IG5vbi1w aHlzaWNhbCBjbHVzdGVyICVkIiwgaSk7CisJCQlQQU5JQygibm9uLXBoeXNpY2FsIGNsdXN0 ZXIgJWQiLCBpKTsKICNlbmRpZgogCS8qCiAJICogSWYgdGhlIGNsdXN0ZXIgY3Jvc3NlcyB0 aGUgYm91bmRhcnkgZm9yIHRoZSBmaXJzdCBpbmRpcmVjdApAQCAtNTgxLDcgKzU4MSw3IEBA IGZmc19yZWFsbG9jYmxrc191ZnMxKGFwKQogI2lmZGVmIElOVkFSSUFOVFMKIAkJaWYgKHN0 YXJ0X2x2bCA+IDAgJiYKIAkJICAgIHN0YXJ0X2FwW3N0YXJ0X2x2bCAtIDFdLmluX2xibiA9 PSBpZHAtPmluX2xibikKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2Jsazogc3RhcnQgPT0gZW5k Iik7CisJCQlQQU5JQygic3RhcnQgPT0gZW5kIik7CiAjZW5kaWYKIAkJc3NpemUgPSBsZW4g LSAoaWRwLT5pbl9vZmYgKyAxKTsKIAkJaWYgKGJyZWFkKHZwLCBpZHAtPmluX2xibiwgKGlu dClmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmVicCkpCkBAIC02MjMsOSArNjIzLDkgQEAgZmZz X3JlYWxsb2NibGtzX3VmczEoYXApCiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAoIWZmc19j aGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0t PmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczog dW5hbGxvY2F0ZWQgYmxvY2sgMiIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJsb2NrIDIi KTsKIAkJaWYgKGRidG9mc2IoZnMsIGJ1Zmxpc3QtPmJzX2NoaWxkcmVuW2ldLT5iX2Jsa25v KSAhPSAqYmFwKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczogYWxsb2MgbWlzbWF0Y2gi KTsKKwkJCVBBTklDKCJhbGxvYyBtaXNtYXRjaCIpOwogI2VuZGlmCiAjaWZkZWYgREVCVUcK IAkJaWYgKHBydHJlYWxsb2MpCkBAIC02ODksNyArNjg5LDcgQEAgZmZzX3JlYWxsb2NibGtz X3VmczEoYXApCiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAoIWZmc19jaGVja2JsayhpcCwK IAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0tPmJfYmxrbm8pLCBm cy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczogdW5hbGxvY2F0ZWQg YmxvY2sgMyIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJsb2NrIDMiKTsKICNlbmRpZgog I2lmZGVmIERFQlVHCiAJCWlmIChwcnRyZWFsbG9jKQpAQCAtNzQ1LDE1ICs3NDUsMTUgQEAg ZmZzX3JlYWxsb2NibGtzX3VmczIoYXApCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQog CQlpZiAoIWZmc19jaGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNf Y2hpbGRyZW5baV0tPmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19y ZWFsbG9jYmxrczogdW5hbGxvY2F0ZWQgYmxvY2sgMSIpOworCQkJUEFOSUMoInVuYWxsb2Nh dGVkIGJsb2NrIDEiKTsKIAlmb3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspCiAJCWlmIChidWZs aXN0LT5ic19jaGlsZHJlbltpXS0+Yl9sYmxrbm8gIT0gc3RhcnRfbGJuICsgaSkKLQkJCXBh bmljKCJmZnNfcmVhbGxvY2Jsa3M6IG5vbi1sb2dpY2FsIGNsdXN0ZXIiKTsKKwkJCVBBTklD KCJub24tbG9naWNhbCBjbHVzdGVyIik7CiAJYmxrbm8gPSBidWZsaXN0LT5ic19jaGlsZHJl blswXS0+Yl9ibGtubzsKIAlzc2l6ZSA9IGZzYnRvZGIoZnMsIGZzLT5mc19mcmFnKTsKIAlm b3IgKGkgPSAxOyBpIDwgbGVuIC0gMTsgaSsrKQogCQlpZiAoYnVmbGlzdC0+YnNfY2hpbGRy ZW5baV0tPmJfYmxrbm8gIT0gYmxrbm8gKyAoaSAqIHNzaXplKSkKLQkJCXBhbmljKCJmZnNf cmVhbGxvY2Jsa3M6IG5vbi1waHlzaWNhbCBjbHVzdGVyICVkIiwgaSk7CisJCQlQQU5JQygi bm9uLXBoeXNpY2FsIGNsdXN0ZXIgJWQiLCBpKTsKICNlbmRpZgogCS8qCiAJICogSWYgdGhl IGNsdXN0ZXIgY3Jvc3NlcyB0aGUgYm91bmRhcnkgZm9yIHRoZSBmaXJzdCBpbmRpcmVjdApA QCAtODAyLDcgKzgwMiw3IEBAIGZmc19yZWFsbG9jYmxrc191ZnMyKGFwKQogI2lmZGVmIElO VkFSSUFOVFMKIAkJaWYgKHN0YXJ0X2x2bCA+IDAgJiYKIAkJICAgIHN0YXJ0X2FwW3N0YXJ0 X2x2bCAtIDFdLmluX2xibiA9PSBpZHAtPmluX2xibikKLQkJCXBhbmljKCJmZnNfcmVhbGxv Y2Jsazogc3RhcnQgPT0gZW5kIik7CisJCQlQQU5JQygic3RhcnQgPT0gZW5kIik7CiAjZW5k aWYKIAkJc3NpemUgPSBsZW4gLSAoaWRwLT5pbl9vZmYgKyAxKTsKIAkJaWYgKGJyZWFkKHZw LCBpZHAtPmluX2xibiwgKGludClmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmVicCkpCkBAIC04 NTIsOSArODUyLDkgQEAgZmZzX3JlYWxsb2NibGtzX3VmczIoYXApCiAjaWZkZWYgSU5WQVJJ QU5UUwogCQlpZiAoIWZmc19jaGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlz dC0+YnNfY2hpbGRyZW5baV0tPmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMo ImZmc19yZWFsbG9jYmxrczogdW5hbGxvY2F0ZWQgYmxvY2sgMiIpOworCQkJUEFOSUMoInVu YWxsb2NhdGVkIGJsb2NrIDIiKTsKIAkJaWYgKGRidG9mc2IoZnMsIGJ1Zmxpc3QtPmJzX2No aWxkcmVuW2ldLT5iX2Jsa25vKSAhPSAqYmFwKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxr czogYWxsb2MgbWlzbWF0Y2giKTsKKwkJCVBBTklDKCJhbGxvYyBtaXNtYXRjaCIpOwogI2Vu ZGlmCiAjaWZkZWYgREVCVUcKIAkJaWYgKHBydHJlYWxsb2MpCkBAIC05MTgsNyArOTE4LDcg QEAgZmZzX3JlYWxsb2NibGtzX3VmczIoYXApCiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAo IWZmc19jaGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRy ZW5baV0tPmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9j YmxrczogdW5hbGxvY2F0ZWQgYmxvY2sgMyIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJs b2NrIDMiKTsKICNlbmRpZgogI2lmZGVmIERFQlVHCiAJCWlmIChwcnRyZWFsbG9jKQpAQCAt MTAyNiw3ICsxMDI2LDcgQEAgcmV0cnk6CiBkdXBfYWxsb2M6CiAJCXByaW50ZigibW9kZSA9 IDAlbywgaW51bSA9ICVsdSwgZnMgPSAlc1xuIiwKIAkJICAgIGlwLT5pX21vZGUsICh1X2xv bmcpaXAtPmlfbnVtYmVyLCBmcy0+ZnNfZnNtbnQpOwotCQlwYW5pYygiZmZzX3ZhbGxvYzog ZHVwIGFsbG9jIik7CisJCVBBTklDKCJkdXAgYWxsb2MiKTsKIAl9CiAJaWYgKERJUChpcCwg aV9ibG9ja3MpICYmIChmcy0+ZnNfZmxhZ3MgJiBGU19VTkNMRUFOKSA9PSAwKSB7ICAvKiBY WFggKi8KIAkJcHJpbnRmKCJmcmVlIGlub2RlICVzLyVsdSBoYWQgJWxkIGJsb2Nrc1xuIiwK QEAgLTEzNjUsNyArMTM2NSw3IEBAIGZmc19oYXNoYWxsb2MoaXAsIGNnLCBwcmVmLCBzaXpl LCByc2l6ZSwgYWxsb2NhdG9yKQogCW10eF9hc3NlcnQoVUZTX01UWChpcC0+aV91bXApLCBN QV9PV05FRCk7CiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmIChJVE9WKGlwKS0+dl9tb3VudC0+ bW50X2tlcm5fZmxhZyAmIE1OVEtfU1VTUEVOREVEKQotCQlwYW5pYygiZmZzX2hhc2hhbGxv YzogYWxsb2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOworCQlQQU5JQygiYWxs b2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOwogI2VuZGlmCiAJZnMgPSBpcC0+ aV9mczsKIAkvKgpAQCAtMTc2OSwxNSArMTc2OSwxNSBAQCBmZnNfY2x1c3RlcmFsbG9jKGlw LCBjZywgYnByZWYsIGxlbiwgdW51c2VkKQogCWJsa3NmcmVlID0gY2dfYmxrc2ZyZWUoY2dw KTsKIAlmb3IgKGkgPSAxOyBpIDw9IGxlbjsgaSsrKQogCQlpZiAoIWZmc19pc2Jsb2NrKGZz LCBibGtzZnJlZSwgZ290IC0gcnVuICsgaSkpCi0JCQlwYW5pYygiZmZzX2NsdXN0ZXJhbGxv YzogbWFwIG1pc21hdGNoIik7CisJCQlQQU5JQygibWFwIG1pc21hdGNoIik7CiAJYm5vID0g Y2diYXNlKGZzLCBjZykgKyBibGtzdG9mcmFncyhmcywgZ290IC0gcnVuICsgMSk7CiAJaWYg KGR0b2coZnMsIGJubykgIT0gY2cpCi0JCXBhbmljKCJmZnNfY2x1c3RlcmFsbG9jOiBhbGxv Y2F0ZWQgb3V0IG9mIGdyb3VwIik7CisJCVBBTklDKCJhbGxvY2F0ZWQgb3V0IG9mIGdyb3Vw Iik7CiAJbGVuID0gYmxrc3RvZnJhZ3MoZnMsIGxlbik7CiAJVUZTX0xPQ0sodW1wKTsKIAlm b3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IGZzLT5mc19mcmFnKQogCQlpZiAoZmZzX2FsbG9j Y2dibGsoaXAsIGJwLCBibm8gKyBpLCBmcy0+ZnNfYnNpemUpICE9IGJubyArIGkpCi0JCQlw YW5pYygiZmZzX2NsdXN0ZXJhbGxvYzogbG9zdCBibG9jayIpOworCQkJUEFOSUMoImxvc3Qg YmxvY2siKTsKIAlBQ1RJVkVDTEVBUihmcywgY2cpOwogCVVGU19VTkxPQ0sodW1wKTsKIAli ZHdyaXRlKGJwKTsKQEAgLTE4NTEsNyArMTg1MSw3IEBAIGZmc19ub2RlYWxsb2NjZyhpcCwg Y2csIGlwcmVmLCBtb2RlLCB1bnVzZWQpCiAJCWlmIChsb2MgPT0gTlVMTCkgewogCQkJcHJp bnRmKCJjZyA9ICVkLCBpcm90b3IgPSAlbGQsIGZzID0gJXNcbiIsCiAJCQkgICAgY2csIChs b25nKWNncC0+Y2dfaXJvdG9yLCBmcy0+ZnNfZnNtbnQpOwotCQkJcGFuaWMoImZmc19ub2Rl YWxsb2NjZzogbWFwIGNvcnJ1cHRlZCIpOworCQkJUEFOSUMoIm1hcCBjb3JydXB0ZWQiKTsK IAkJCS8qIE5PVFJFQUNIRUQgKi8KIAkJfQogCX0KQEAgLTE5NDEsNyArMTk0MSw3IEBAIGZm c19ibGtmcmVlX2NnKHVtcCwgZnMsIGRldnZwLCBibm8sIHNpemUsIGludW0sIGRlcGhkKQog CQlwcmludGYoImRldj0lcywgYm5vID0gJWpkLCBic2l6ZSA9ICVsZCwgc2l6ZSA9ICVsZCwg ZnMgPSAlc1xuIiwKIAkJICAgIGRldnRvbmFtZShkZXYpLCAoaW50bWF4X3QpYm5vLCAobG9u Zylmcy0+ZnNfYnNpemUsCiAJCSAgICBzaXplLCBmcy0+ZnNfZnNtbnQpOwotCQlwYW5pYygi ZmZzX2Jsa2ZyZWVfY2c6IGJhZCBzaXplIik7CisJCVBBTklDKCJiYWQgc2l6ZSIpOwogCX0K ICNlbmRpZgogCWlmICgodV9pbnQpYm5vID49IGZzLT5mc19zaXplKSB7CkBAIC0xOTc1LDcg KzE5NzUsNyBAQCBmZnNfYmxrZnJlZV9jZyh1bXAsIGZzLCBkZXZ2cCwgYm5vLCBzaXplLCBp bnVtLCBkZXBoZCkKIAkJCX0KIAkJCXByaW50ZigiZGV2ID0gJXMsIGJsb2NrID0gJWpkLCBm cyA9ICVzXG4iLAogCQkJICAgIGRldnRvbmFtZShkZXYpLCAoaW50bWF4X3QpYm5vLCBmcy0+ ZnNfZnNtbnQpOwotCQkJcGFuaWMoImZmc19ibGtmcmVlX2NnOiBmcmVlaW5nIGZyZWUgYmxv Y2siKTsKKwkJCVBBTklDKCJmcmVlaW5nIGZyZWUgYmxvY2siKTsKIAkJfQogCQlmZnNfc2V0 YmxvY2soZnMsIGJsa3NmcmVlLCBmcmFnbm8pOwogCQlmZnNfY2x1c3RlcmFjY3QoZnMsIGNn cCwgZnJhZ25vLCAxKTsKQEAgLTE5OTgsNyArMTk5OCw3IEBAIGZmc19ibGtmcmVlX2NnKHVt cCwgZnMsIGRldnZwLCBibm8sIHNpemUsIGludW0sIGRlcGhkKQogCQkJCXByaW50ZigiZGV2 ID0gJXMsIGJsb2NrID0gJWpkLCBmcyA9ICVzXG4iLAogCQkJCSAgICBkZXZ0b25hbWUoZGV2 KSwgKGludG1heF90KShibm8gKyBpKSwKIAkJCQkgICAgZnMtPmZzX2ZzbW50KTsKLQkJCQlw YW5pYygiZmZzX2Jsa2ZyZWVfY2c6IGZyZWVpbmcgZnJlZSBmcmFnIik7CisJCQkJUEFOSUMo ImZyZWVpbmcgZnJlZSBmcmFnIik7CiAJCQl9CiAJCQlzZXRiaXQoYmxrc2ZyZWUsIGNnYm5v ICsgaSk7CiAJCX0KQEAgLTIxNjEsMTcgKzIxNjEsMTcgQEAgZmZzX2NoZWNrYmxrKGlwLCBi bm8sIHNpemUpCiAJaWYgKCh1X2ludClzaXplID4gZnMtPmZzX2JzaXplIHx8IGZyYWdvZmYo ZnMsIHNpemUpICE9IDApIHsKIAkJcHJpbnRmKCJic2l6ZSA9ICVsZCwgc2l6ZSA9ICVsZCwg ZnMgPSAlc1xuIiwKIAkJICAgIChsb25nKWZzLT5mc19ic2l6ZSwgc2l6ZSwgZnMtPmZzX2Zz bW50KTsKLQkJcGFuaWMoImZmc19jaGVja2JsazogYmFkIHNpemUiKTsKKwkJUEFOSUMoImJh ZCBzaXplIik7CiAJfQogCWlmICgodV9pbnQpYm5vID49IGZzLT5mc19zaXplKQotCQlwYW5p YygiZmZzX2NoZWNrYmxrOiBiYWQgYmxvY2sgJWpkIiwgKGludG1heF90KWJubyk7CisJCVBB TklDKCJiYWQgYmxvY2sgJWpkIiwgKGludG1heF90KWJubyk7CiAJZXJyb3IgPSBicmVhZChp cC0+aV9kZXZ2cCwgZnNidG9kYihmcywgY2d0b2QoZnMsIGR0b2coZnMsIGJubykpKSwKIAkJ KGludClmcy0+ZnNfY2dzaXplLCBOT0NSRUQsICZicCk7CiAJaWYgKGVycm9yKQotCQlwYW5p YygiZmZzX2NoZWNrYmxrOiBjZyBicmVhZCBmYWlsZWQiKTsKKwkJUEFOSUMoImNnIGJyZWFk IGZhaWxlZCIpOwogCWNncCA9IChzdHJ1Y3QgY2cgKilicC0+Yl9kYXRhOwogCWlmICghY2df Y2hrbWFnaWMoY2dwKSkKLQkJcGFuaWMoImZmc19jaGVja2JsazogY2cgbWFnaWMgbWlzbWF0 Y2giKTsKKwkJUEFOSUMoImNnIG1hZ2ljIG1pc21hdGNoIik7CiAJYnAtPmJfeGZsYWdzIHw9 IEJYX0JLR1JEV1JJVEU7CiAJYmxrc2ZyZWUgPSBjZ19ibGtzZnJlZShjZ3ApOwogCWNnYm5v ID0gZHRvZ2QoZnMsIGJubyk7CkBAIC0yMTgzLDcgKzIxODMsNyBAQCBmZnNfY2hlY2tibGso aXAsIGJubywgc2l6ZSkKIAkJCWlmIChpc3NldChibGtzZnJlZSwgY2dibm8gKyBpKSkKIAkJ CQlmcmVlKys7CiAJCWlmIChmcmVlICE9IDAgJiYgZnJlZSAhPSBmcmFncykKLQkJCXBhbmlj KCJmZnNfY2hlY2tibGs6IHBhcnRpYWxseSBmcmVlIGZyYWdtZW50Iik7CisJCQlQQU5JQygi cGFydGlhbGx5IGZyZWUgZnJhZ21lbnQiKTsKIAl9CiAJYnJlbHNlKGJwKTsKIAlyZXR1cm4g KCFmcmVlKTsKQEAgLTIyNDIsNyArMjI0Miw3IEBAIGZmc19mcmVlZmlsZSh1bXAsIGZzLCBk ZXZ2cCwgaW5vLCBtb2RlLCB3a2hkKQogCQljZ2JubyA9IGZzYnRvZGIoZnMsIGNndG9kKGZz LCBjZykpOwogCX0KIAlpZiAoaW5vID49IGZzLT5mc19pcGcgKiBmcy0+ZnNfbmNnKQotCQlw YW5pYygiZmZzX2ZyZWVmaWxlOiByYW5nZTogZGV2ID0gJXMsIGlubyA9ICVqdSwgZnMgPSAl cyIsCisJCVBBTklDKCJyYW5nZTogZGV2ID0gJXMsIGlubyA9ICVqdSwgZnMgPSAlcyIsCiAJ CSAgICBkZXZ0b25hbWUoZGV2KSwgKHVpbnRtYXhfdClpbm8sIGZzLT5mc19mc21udCk7CiAJ aWYgKChlcnJvciA9IGJyZWFkKGRldnZwLCBjZ2JubywgKGludClmcy0+ZnNfY2dzaXplLCBO T0NSRUQsICZicCkpKSB7CiAJCWJyZWxzZShicCk7CkBAIC0yMjYxLDcgKzIyNjEsNyBAQCBm ZnNfZnJlZWZpbGUodW1wLCBmcywgZGV2dnAsIGlubywgbW9kZSwgd2toZCkKIAkJcHJpbnRm KCJkZXYgPSAlcywgaW5vID0gJWp1LCBmcyA9ICVzXG4iLCBkZXZ0b25hbWUoZGV2KSwKIAkJ ICAgICh1aW50bWF4X3QpKGlubyArIGNnICogZnMtPmZzX2lwZyksIGZzLT5mc19mc21udCk7 CiAJCWlmIChmcy0+ZnNfcm9ubHkgPT0gMCkKLQkJCXBhbmljKCJmZnNfZnJlZWZpbGU6IGZy ZWVpbmcgZnJlZSBpbm9kZSIpOworCQkJUEFOSUMoImZyZWVpbmcgZnJlZSBpbm9kZSIpOwog CX0KIAljbHJiaXQoaW5vc3VzZWQsIGlubyk7CiAJaWYgKGlubyA8IGNncC0+Y2dfaXJvdG9y KQpAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgZmZzX21hcHNlYXJjaChmcywgY2dwLCBicHJlZiwg YWxsb2NzaXopCiAJCWlmIChsb2MgPT0gMCkgewogCQkJcHJpbnRmKCJzdGFydCA9ICVkLCBs ZW4gPSAlZCwgZnMgPSAlc1xuIiwKIAkJCSAgICBzdGFydCwgbGVuLCBmcy0+ZnNfZnNtbnQp OwotCQkJcGFuaWMoImZmc19hbGxvY2NnOiBtYXAgY29ycnVwdGVkIik7CisJCQlQQU5JQygi bWFwIGNvcnJ1cHRlZCIpOwogCQkJLyogTk9UUkVBQ0hFRCAqLwogCQl9CiAJfQpAQCAtMjM5 MCw3ICsyMzkwLDcgQEAgZmZzX21hcHNlYXJjaChmcywgY2dwLCBicHJlZiwgYWxsb2NzaXop CiAJCX0KIAl9CiAJcHJpbnRmKCJibm8gPSAlbHUsIGZzID0gJXNcbiIsICh1X2xvbmcpYm5v LCBmcy0+ZnNfZnNtbnQpOwotCXBhbmljKCJmZnNfYWxsb2NjZzogYmxvY2sgbm90IGluIG1h cCIpOworCVBBTklDKCJibG9jayBub3QgaW4gbWFwIik7CiAJcmV0dXJuICgtMSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3N5cy91ZnMvZmZzL2Zmc19iYWxsb2MuYyBiL3N5cy91ZnMvZmZzL2Zm c19iYWxsb2MuYwppbmRleCAwZTI5YmU4N2YuLjg3ODJjOTcgMTAwNjQ0Ci0tLSBhL3N5cy91 ZnMvZmZzL2Zmc19iYWxsb2MuYworKysgYi9zeXMvdWZzL2Zmcy9mZnNfYmFsbG9jLmMKQEAg LTExNyw3ICsxMTcsNyBAQCBmZnNfYmFsbG9jX3VmczEoc3RydWN0IHZub2RlICp2cCwgb2Zm X3Qgc3RhcnRvZmZzZXQsIGludCBzaXplLAogCXNpemUgPSBibGtvZmYoZnMsIHN0YXJ0b2Zm c2V0KSArIHNpemU7CiAJcmVjbGFpbWVkID0gMDsKIAlpZiAoc2l6ZSA+IGZzLT5mc19ic2l6 ZSkKLQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMTogYmxrIHRvbyBiaWciKTsKKwkJUEFOSUMo ImJsayB0b28gYmlnIik7CiAJKmJwcCA9IE5VTEw7CiAJaWYgKGZsYWdzICYgSU9fRVhUKQog CQlyZXR1cm4gKEVPUE5PVFNVUFApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIGZmc19iYWxsb2Nf dWZzMShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzdGFydG9mZnNldCwgaW50IHNpemUsCiAJ ICovCiAJaWYgKGxibiA8IE5EQUREUikgewogCQlpZiAoZmxhZ3MgJiBCQV9NRVRBT05MWSkK LQkJCXBhbmljKCJmZnNfYmFsbG9jX3VmczE6IEJBX01FVEFPTkxZIGZvciBkaXJlY3QgYmxv Y2siKTsKKwkJCVBBTklDKCJCQV9NRVRBT05MWSBmb3IgZGlyZWN0IGJsb2NrIik7CiAJCW5i ID0gZHAtPmRpX2RiW2xibl07CiAJCWlmIChuYiAhPSAwICYmIGlwLT5pX3NpemUgPj0gc21h bGxsYmxrdG9zaXplKGZzLCBsYm4gKyAxKSkgewogCQkJZXJyb3IgPSBicmVhZCh2cCwgbGJu LCBmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmJwKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBmZnNf YmFsbG9jX3VmczEoc3RydWN0IHZub2RlICp2cCwgb2ZmX3Qgc3RhcnRvZmZzZXQsIGludCBz aXplLAogCQlyZXR1cm4oZXJyb3IpOwogI2lmZGVmIElOVkFSSUFOVFMKIAlpZiAobnVtIDwg MSkKLQkJcGFuaWMgKCJmZnNfYmFsbG9jX3VmczE6IHVmc19nZXRsYm5zIHJldHVybmVkIGlu ZGlyZWN0IGJsb2NrIik7CisJCVBBTklDKCJ1ZnNfZ2V0bGJucyByZXR1cm5lZCBpbmRpcmVj dCBibG9jayIpOwogI2VuZGlmCiAJc2F2ZWRfaW5iZGZsdXNoID0gY3VydGhyZWFkX3BmbGFn c19zZXQoVERQX0lOQkRGTFVTSCk7CiAJLyoKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBmYWlsOgog CQlyID0gYnJlYWQodnAsIGluZGlyc1t1bndpbmRpZHhdLmluX2xibiwgCiAJCSAgICAoaW50 KWZzLT5mc19ic2l6ZSwgTk9DUkVELCAmYnApOwogCQlpZiAocikgewotCQkJcGFuaWMoIkNv dWxkIG5vdCB1bndpbmQgaW5kaXJlY3QgYmxvY2ssIGVycm9yICVkIiwgcik7CisJCQlQQU5J QygiQ291bGQgbm90IHVud2luZCBpbmRpcmVjdCBibG9jaywgZXJyb3IgJWQiLCByKTsKIAkJ CWJyZWxzZShicCk7CiAJCX0gZWxzZSB7CiAJCQliYXAgPSAodWZzMV9kYWRkcl90ICopYnAt PmJfZGF0YTsKQEAgLTU0OSw3ICs1NDksNyBAQCBmZnNfYmFsbG9jX3VmczIoc3RydWN0IHZu b2RlICp2cCwgb2ZmX3Qgc3RhcnRvZmZzZXQsIGludCBzaXplLAogCXNpemUgPSBibGtvZmYo ZnMsIHN0YXJ0b2Zmc2V0KSArIHNpemU7CiAJcmVjbGFpbWVkID0gMDsKIAlpZiAoc2l6ZSA+ IGZzLT5mc19ic2l6ZSkKLQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMjogYmxrIHRvbyBiaWci KTsKKwkJUEFOSUMoImJsayB0b28gYmlnIik7CiAJKmJwcCA9IE5VTEw7CiAJaWYgKGxibiA8 IDApCiAJCXJldHVybiAoRUZCSUcpOwpAQCAtNjAwLDcgKzYwMCw3IEBAIGZmc19iYWxsb2Nf dWZzMihzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzdGFydG9mZnNldCwgaW50IHNpemUsCiAJ CSAqIEFsbCBibG9ja3MgYXJlIGRpcmVjdCBibG9ja3MKIAkJICovCiAJCWlmIChmbGFncyAm IEJBX01FVEFPTkxZKQotCQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMjogQkFfTUVUQU9OTFkg Zm9yIGV4dCBibG9jayIpOworCQkJUEFOSUMoIkJBX01FVEFPTkxZIGZvciBleHQgYmxvY2si KTsKIAkJbmIgPSBkcC0+ZGlfZXh0YltsYm5dOwogCQlpZiAobmIgIT0gMCAmJiBkcC0+ZGlf ZXh0c2l6ZSA+PSBzbWFsbGxibGt0b3NpemUoZnMsIGxibiArIDEpKSB7CiAJCQllcnJvciA9 IGJyZWFkKHZwLCAtMSAtIGxibiwgZnMtPmZzX2JzaXplLCBOT0NSRUQsICZicCk7CkBAIC03 MDQsNyArNzA0LDcgQEAgZmZzX2JhbGxvY191ZnMyKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90 IHN0YXJ0b2Zmc2V0LCBpbnQgc2l6ZSwKIAkgKi8KIAlpZiAobGJuIDwgTkRBRERSKSB7CiAJ CWlmIChmbGFncyAmIEJBX01FVEFPTkxZKQotCQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMjog QkFfTUVUQU9OTFkgZm9yIGRpcmVjdCBibG9jayIpOworCQkJUEFOSUMoIkJBX01FVEFPTkxZ IGZvciBkaXJlY3QgYmxvY2siKTsKIAkJbmIgPSBkcC0+ZGlfZGJbbGJuXTsKIAkJaWYgKG5i ICE9IDAgJiYgaXAtPmlfc2l6ZSA+PSBzbWFsbGxibGt0b3NpemUoZnMsIGxibiArIDEpKSB7 CiAJCQllcnJvciA9IGJyZWFkKHZwLCBsYm4sIGZzLT5mc19ic2l6ZSwgTk9DUkVELCAmYnAp OwpAQCAtNzc0LDcgKzc3NCw3IEBAIGZmc19iYWxsb2NfdWZzMihzdHJ1Y3Qgdm5vZGUgKnZw LCBvZmZfdCBzdGFydG9mZnNldCwgaW50IHNpemUsCiAJCXJldHVybihlcnJvcik7CiAjaWZk ZWYgSU5WQVJJQU5UUwogCWlmIChudW0gPCAxKQotCQlwYW5pYyAoImZmc19iYWxsb2NfdWZz MjogdWZzX2dldGxibnMgcmV0dXJuZWQgaW5kaXJlY3QgYmxvY2siKTsKKwkJUEFOSUMoInVm c19nZXRsYm5zIHJldHVybmVkIGluZGlyZWN0IGJsb2NrIik7CiAjZW5kaWYKIAlzYXZlZF9p bmJkZmx1c2ggPSBjdXJ0aHJlYWRfcGZsYWdzX3NldChURFBfSU5CREZMVVNIKTsKIAkvKgpA QCAtMTAyNSw3ICsxMDI1LDcgQEAgZmFpbDoKIAkJciA9IGJyZWFkKHZwLCBpbmRpcnNbdW53 aW5kaWR4XS5pbl9sYm4sIAogCQkgICAgKGludClmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmJw KTsKIAkJaWYgKHIpIHsKLQkJCXBhbmljKCJDb3VsZCBub3QgdW53aW5kIGluZGlyZWN0IGJs b2NrLCBlcnJvciAlZCIsIHIpOworCQkJUEFOSUMoIkNvdWxkIG5vdCB1bndpbmQgaW5kaXJl Y3QgYmxvY2ssIGVycm9yICVkIiwgcik7CiAJCQlicmVsc2UoYnApOwogCQl9IGVsc2Ugewog CQkJYmFwID0gKHVmczJfZGFkZHJfdCAqKWJwLT5iX2RhdGE7CmRpZmYgLS1naXQgYS9zeXMv dWZzL2Zmcy9mZnNfaW5vZGUuYyBiL3N5cy91ZnMvZmZzL2Zmc19pbm9kZS5jCmluZGV4IGY4 NTg0ZDUuLjIwZDUxOGQgMTAwNjQ0Ci0tLSBhL3N5cy91ZnMvZmZzL2Zmc19pbm9kZS5jCisr KyBiL3N5cy91ZnMvZmZzL2Zmc19pbm9kZS5jCkBAIC0xNDEsNyArMTQxLDcgQEAgbG9vcDoK IAlpZiAoRE9JTkdTT0ZUREVQKHZwKSkKIAkJc29mdGRlcF91cGRhdGVfaW5vZGVibG9jayhp cCwgYnAsIHdhaXRmb3IpOwogCWVsc2UgaWYgKGlwLT5pX2VmZm5saW5rICE9IGlwLT5pX25s aW5rKQotCQlwYW5pYygiZmZzX3VwZGF0ZTogYmFkIGxpbmsgY250Iik7CisJCVBBTklDKCJi YWQgbGluayBjbnQiKTsKIAlpZiAoaXAtPmlfdW1wLT51bV9mc3R5cGUgPT0gVUZTMSkKIAkJ Kigoc3RydWN0IHVmczFfZGlub2RlICopYnAtPmJfZGF0YSArCiAJCSAgICBpbm9fdG9fZnNi byhmcywgaXAtPmlfbnVtYmVyKSkgPSAqaXAtPmlfZGluMTsKQEAgLTIzNiw3ICsyMzYsNyBA QCBmZnNfdHJ1bmNhdGUodnAsIGxlbmd0aCwgZmxhZ3MsIGNyZWQpCiAJfQogCWlmICgoZmxh Z3MgJiBJT19FWFQpICYmIGV4dGJsb2NrcyA+IDApIHsKIAkJaWYgKGxlbmd0aCAhPSAwKQot CQkJcGFuaWMoImZmc190cnVuY2F0ZTogcGFydGlhbCB0cnVuYyBvZiBleHRkYXRhIik7CisJ CQlQQU5JQygicGFydGlhbCB0cnVuYyBvZiBleHRkYXRhIik7CiAJCWlmIChzb2Z0ZGVwdHJ1 bmMgfHwgam91cm5hbHRydW5jKSB7CiAJCQlpZiAoKGZsYWdzICYgSU9fTk9STUFMKSA9PSAw KQogCQkJCWdvdG8gZXh0Y2xlYW47CkBAIC0yNzYsNyArMjc2LDcgQEAgZmZzX3RydW5jYXRl KHZwLCBsZW5ndGgsIGZsYWdzLCBjcmVkKQogCSAgICAgZGF0YWJsb2NrcyA9PSAwKSkgewog I2lmZGVmIElOVkFSSUFOVFMKIAkJaWYgKGxlbmd0aCAhPSAwKQotCQkJcGFuaWMoImZmc190 cnVuY2F0ZTogcGFydGlhbCB0cnVuY2F0ZSBvZiBzeW1saW5rIik7CisJCQlQQU5JQygicGFy dGlhbCB0cnVuY2F0ZSBvZiBzeW1saW5rIik7CiAjZW5kaWYKIAkJYnplcm8oU0hPUlRMSU5L KGlwKSwgKHVfaW50KWlwLT5pX3NpemUpOwogCQlpcC0+aV9zaXplID0gMDsKQEAgLTI5Myw3 ICsyOTMsNyBAQCBmZnNfdHJ1bmNhdGUodnAsIGxlbmd0aCwgZmxhZ3MsIGNyZWQpCiAJCXJl dHVybiAoZmZzX3VwZGF0ZSh2cCwgMCkpOwogCX0KIAlpZiAoZnMtPmZzX3Jvbmx5KQotCQlw YW5pYygiZmZzX3RydW5jYXRlOiByZWFkLW9ubHkgZmlsZXN5c3RlbSIpOworCQlQQU5JQygi cmVhZC1vbmx5IGZpbGVzeXN0ZW0iKTsKIAlpZiAoSVNfU05BUFNIT1QoaXApKQogCQlmZnNf c25hcHJlbW92ZSh2cCk7CiAJdnAtPnZfbGFzdGEgPSB2cC0+dl9jbGVuID0gdnAtPnZfY3N0 YXJ0ID0gdnAtPnZfbGFzdHcgPSAwOwpAQCAtNTEzLDcgKzUxMyw3IEBAIGZmc190cnVuY2F0 ZSh2cCwgbGVuZ3RoLCBmbGFncywgY3JlZCkKIAkJRElQX1NFVChpcCwgaV9zaXplLCBsZW5n dGgpOwogCQluZXdzcGFjZSA9IGJsa3NpemUoZnMsIGlwLCBsYXN0YmxvY2spOwogCQlpZiAo bmV3c3BhY2UgPT0gMCkKLQkJCXBhbmljKCJmZnNfdHJ1bmNhdGU6IG5ld3NwYWNlIik7CisJ CQlQQU5JQygibmV3c3BhY2UiKTsKIAkJaWYgKG9sZHNwYWNlIC0gbmV3c3BhY2UgPiAwKSB7 CiAJCQkvKgogCQkJICogQmxvY2sgbnVtYmVyIG9mIHNwYWNlIHRvIGJlIGZyZWUnZCBpcwpA QCAtNTMwLDE1ICs1MzAsMTUgQEAgZG9uZToKICNpZmRlZiBJTlZBUklBTlRTCiAJZm9yIChs ZXZlbCA9IFNJTkdMRTsgbGV2ZWwgPD0gVFJJUExFOyBsZXZlbCsrKQogCQlpZiAobmV3Ymxr c1tOREFERFIgKyBsZXZlbF0gIT0gRElQKGlwLCBpX2liW2xldmVsXSkpCi0JCQlwYW5pYygi ZmZzX3RydW5jYXRlMSIpOworCQkJUEFOSUMoIjEiKTsKIAlmb3IgKGkgPSAwOyBpIDwgTkRB RERSOyBpKyspCiAJCWlmIChuZXdibGtzW2ldICE9IERJUChpcCwgaV9kYltpXSkpCi0JCQlw YW5pYygiZmZzX3RydW5jYXRlMiIpOworCQkJUEFOSUMoIjIiKTsKIAlCT19MT0NLKGJvKTsK IAlpZiAobGVuZ3RoID09IDAgJiYKIAkgICAgKGZzLT5mc19tYWdpYyAhPSBGU19VRlMyX01B R0lDIHx8IGlwLT5pX2RpbjItPmRpX2V4dHNpemUgPT0gMCkgJiYKIAkgICAgKGJvLT5ib19k aXJ0eS5idl9jbnQgPiAwIHx8IGJvLT5ib19jbGVhbi5idl9jbnQgPiAwKSkKLQkJcGFuaWMo ImZmc190cnVuY2F0ZTMiKTsKKwkJUEFOSUMoIjMiKTsKIAlCT19VTkxPQ0soYm8pOwogI2Vu ZGlmIC8qIElOVkFSSUFOVFMgKi8KIAkvKgpAQCAtNjE2LDcgKzYxNiw3IEBAIGZmc19pbmRp cnRydW5jKGlwLCBsYm4sIGRibiwgbGFzdGJuLCBsZXZlbCwgY291bnRwKQogCQlicC0+Yl9m bGFncyAmPSB+Ql9JTlZBTDsKIAkJYnAtPmJfaW9mbGFncyAmPSB+QklPX0VSUk9SOwogCQlp ZiAoYnAtPmJfYmNvdW50ID4gYnAtPmJfYnVmc2l6ZSkKLQkJCXBhbmljKCJmZnNfaW5kaXJ0 cnVuYzogYmFkIGJ1ZmZlciBzaXplIik7CisJCQlQQU5JQygiYmFkIGJ1ZmZlciBzaXplIik7 CiAJCWJwLT5iX2Jsa25vID0gZGJuOwogCQl2ZnNfYnVzeV9wYWdlcyhicCwgMCk7CiAJCWJw LT5iX2lvb2Zmc2V0ID0gZGJ0b2IoYnAtPmJfYmxrbm8pOwpkaWZmIC0tZ2l0IGEvc3lzL3Vm cy9mZnMvZmZzX3Jhd3JlYWQuYyBiL3N5cy91ZnMvZmZzL2Zmc19yYXdyZWFkLmMKaW5kZXgg ZjhlM2UwMC4uOGVlMTkzNSAxMDA2NDQKLS0tIGEvc3lzL3Vmcy9mZnMvZmZzX3Jhd3JlYWQu YworKysgYi9zeXMvdWZzL2Zmcy9mZnNfcmF3cmVhZC5jCkBAIC0xNzEsNyArMTcxLDcgQEAg ZmZzX3Jhd3JlYWRfc3luYyhzdHJ1Y3Qgdm5vZGUgKnZwKQogCQkJfQogCQkJQk9fTE9DSyhi byk7CiAJCQlpZiAoYm8tPmJvX251bW91dHB1dCA+IDAgfHwgYm8tPmJvX2RpcnR5LmJ2X2Nu dCA+IDApCi0JCQkJcGFuaWMoImZmc19yYXdyZWFkX3N5bmM6IGRpcnR5IGJ1ZnMiKTsKKwkJ CQlQQU5JQygiZGlydHkgYnVmcyIpOwogCQl9CiAJCUJPX1VOTE9DSyhibyk7CiAJCWlmICh1 cGdyYWRlZCAhPSAwKQpkaWZmIC0tZ2l0IGEvc3lzL3Vmcy9mZnMvZmZzX3NuYXBzaG90LmMg Yi9zeXMvdWZzL2Zmcy9mZnNfc25hcHNob3QuYwppbmRleCAwYzY1M2MyLi5kZGI1YWZkIDEw MDY0NAotLS0gYS9zeXMvdWZzL2Zmcy9mZnNfc25hcHNob3QuYworKysgYi9zeXMvdWZzL2Zm cy9mZnNfc25hcHNob3QuYwpAQCAtMjc5LDcgKzI3OSw3IEBAIHJlc3RhcnQ6CiAJaWYgKFZP UF9HRVRXUklURU1PVU5UKG5kLm5pX2R2cCwgJndydG1wKSkKIAkJd3J0bXAgPSBOVUxMOwog CWlmICh3cnRtcCAhPSBtcCkKLQkJcGFuaWMoImZmc19zbmFwc2hvdDogbW91bnQgbWlzbWF0 Y2giKTsKKwkJUEFOSUMoIm1vdW50IG1pc21hdGNoIik7CiAJdmZzX3JlbCh3cnRtcCk7CiAJ aWYgKHZuX3N0YXJ0X3dyaXRlKE5VTEwsICZ3cnRtcCwgVl9OT1dBSVQpICE9IDApIHsKIAkJ TkRGUkVFKCZuZCwgTkRGX09OTFlfUE5CVUYpOwpAQCAtNjYyLDcgKzY2Miw3IEBAIGxvb3A6 CiAJCXNuYXBibGtsaXN0WzBdID0gYmxrcCAtIHNuYXBibGtsaXN0OwogCQlWSV9MT0NLKGRl dnZwKTsKIAkJaWYgKHNuLT5zbl9ibGtsaXN0ICE9IE5VTEwpCi0JCQlwYW5pYygiZmZzX3Nu YXBzaG90OiBub24tZW1wdHkgbGlzdCIpOworCQkJUEFOSUMoIm5vbi1lbXB0eSBsaXN0Iik7 CiAJCXNuLT5zbl9ibGtsaXN0ID0gc25hcGJsa2xpc3Q7CiAJCXNuLT5zbl9saXN0c2l6ZSA9 IGJsa3AgLSBzbmFwYmxrbGlzdDsKIAkJVklfVU5MT0NLKGRldnZwKTsKQEAgLTY3NCw4ICs2 NzQsNyBAQCBsb29wOgogCVZJX0xPQ0soZGV2dnApOwogCWZzLT5mc19zbmFwaW51bVtzbmFw bG9jXSA9IGlwLT5pX251bWJlcjsKIAlpZiAoaXAtPmlfbmV4dHNuYXAudHFlX3ByZXYgIT0g MCkKLQkJcGFuaWMoImZmc19zbmFwc2hvdDogJWp1IGFscmVhZHkgb24gbGlzdCIsCi0JCSAg ICAodWludG1heF90KWlwLT5pX251bWJlcik7CisJCVBBTklDKCIlanUgYWxyZWFkeSBvbiBs aXN0IiwgKHVpbnRtYXhfdClpcC0+aV9udW1iZXIpOwogCVRBSUxRX0lOU0VSVF9UQUlMKCZz bi0+c25faGVhZCwgaXAsIGlfbmV4dHNuYXApOwogCWRldnZwLT52X3ZmbGFnIHw9IFZWX0NP UFlPTldSSVRFOwogCVZJX1VOTE9DSyhkZXZ2cCk7CkBAIC03NDUsNyArNzQ0LDcgQEAgb3V0 MToKIAkJZ290byBkb25lOwogCX0KIAlpZiAoc25hcGxpc3RzaXplIDwgaXAtPmlfc25hcGJs a2xpc3QgLSBzbmFwYmxrbGlzdCkKLQkJcGFuaWMoImZmc19zbmFwc2hvdDogbGlzdCB0b28g c21hbGwiKTsKKwkJUEFOSUMoImxpc3QgdG9vIHNtYWxsIik7CiAJc25hcGxpc3RzaXplID0g aXAtPmlfc25hcGJsa2xpc3QgLSBzbmFwYmxrbGlzdDsKIAlzbmFwYmxrbGlzdFswXSA9IHNu YXBsaXN0c2l6ZTsKIAlpcC0+aV9zbmFwYmxrbGlzdCA9IDA7CkBAIC05MjgsNyArOTI3LDcg QEAgY2dhY2NvdW50KGNnLCB2cCwgbmJwLCBwYXNzbm8pCiAJCQllbHNlIGlmIChwYXNzbm8g PT0gMiAmJiBESVAoaXAsIGlfZGJbbG9jXSk9PSBCTEtfTk9DT1BZKQogCQkJCURJUF9TRVQo aXAsIGlfZGJbbG9jXSwgMCk7CiAJCQllbHNlIGlmIChwYXNzbm8gPT0gMSAmJiBESVAoaXAs IGlfZGJbbG9jXSk9PSBCTEtfTk9DT1BZKQotCQkJCXBhbmljKCJmZnNfc25hcHNob3Q6IGxv c3QgZGlyZWN0IGJsb2NrIik7CisJCQkJUEFOSUMoImxvc3QgZGlyZWN0IGJsb2NrIik7CiAJ CX0KIAl9CiAJZXJyb3IgPSBVRlNfQkFMTE9DKHZwLCBsYmxrdG9zaXplKGZzLCAob2ZmX3Qp KGJhc2UgKyBsb2MpKSwKQEAgLTk1OSw3ICs5NTgsNyBAQCBjZ2FjY291bnQoY2csIHZwLCBu YnAsIHBhc3NubykKIAkJCQkoKHVmczFfZGFkZHJfdCAqKShpYnAtPmJfZGF0YSkpW2luZGly b2ZmXSA9IDA7CiAJCQllbHNlIGlmIChwYXNzbm8gPT0gMSAmJiAoKHVmczFfZGFkZHJfdCAq KShpYnAtPmJfZGF0YSkpCiAJCQkgICAgW2luZGlyb2ZmXSA9PSBCTEtfTk9DT1BZKQotCQkJ CXBhbmljKCJmZnNfc25hcHNob3Q6IGxvc3QgaW5kaXJlY3QgYmxvY2siKTsKKwkJCQlQQU5J QygibG9zdCBpbmRpcmVjdCBibG9jayIpOwogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKGZm c19pc2Jsb2NrKGZzLCBjZ19ibGtzZnJlZShjZ3ApLCBsb2MpKQpAQCAtOTY5LDcgKzk2OCw3 IEBAIGNnYWNjb3VudChjZywgdnAsIG5icCwgcGFzc25vKQogCQkJKCh1ZnMyX2RhZGRyX3Qg KikoaWJwLT5iX2RhdGEpKVtpbmRpcm9mZl0gPSAwOwogCQllbHNlIGlmIChwYXNzbm8gPT0g MSAmJgogCQkgICAgKCh1ZnMyX2RhZGRyX3QgKikoaWJwLT5iX2RhdGEpKSBbaW5kaXJvZmZd ID09IEJMS19OT0NPUFkpCi0JCQlwYW5pYygiZmZzX3NuYXBzaG90OiBsb3N0IGluZGlyZWN0 IGJsb2NrIik7CisJCQlQQU5JQygibG9zdCBpbmRpcmVjdCBibG9jayIpOwogCX0KIAlpZiAo cGFzc25vID09IDIpCiAJCWlicC0+Yl9mbGFncyB8PSBCX1ZBTElEU1VTUFdSVDsKQEAgLTEx MDUsMTIgKzExMDQsMTIgQEAgaW5kaXJhY2N0X3VmczEoc25hcHZwLCBjYW5jZWx2cCwgbGV2 ZWwsIGJsa25vLCBsYm4sIHJsYm4sIHJlbWJsa3MsCiAJaWYgKGJsa25vID09IDApIHsKIAkJ aWYgKGV4cHVuZ2V0eXBlID09IEJMS19OT0NPUFkpCiAJCQlyZXR1cm4gKDApOwotCQlwYW5p YygiaW5kaXJhY2N0X3VmczE6IG1pc3NpbmcgaW5kaXIiKTsKKwkJUEFOSUMoIm1pc3Npbmcg aW5kaXIiKTsKIAl9CiAJaWYgKChlcnJvciA9IHVmc19nZXRsYm5zKGNhbmNlbHZwLCBybGJu LCBpbmRpcnMsICZudW0pKSAhPSAwKQogCQlyZXR1cm4gKGVycm9yKTsKIAlpZiAobGJuICE9 IGluZGlyc1tudW0gLSAxIC0gbGV2ZWxdLmluX2xibiB8fCBudW0gPCAyKQotCQlwYW5pYygi aW5kaXJhY2N0X3VmczE6IGJvdGNoZWQgcGFyYW1zIik7CisJCVBBTklDKCJib3RjaGVkIHBh cmFtcyIpOwogCS8qCiAJICogV2UgaGF2ZSB0byBleHBhbmQgYnJlYWQgaGVyZSBzaW5jZSBp dCB3aWxsIGRlYWRsb2NrIGxvb2tpbmcKIAkgKiB1cCB0aGUgYmxvY2sgbnVtYmVyIGZvciBh bnkgYmxvY2tzIHRoYXQgYXJlIG5vdCBpbiB0aGUgY2FjaGUuCkBAIC0xMjE2LDcgKzEyMTUs NyBAQCBzbmFwYWNjdF91ZnMxKHZwLCBvbGRibGtwLCBsYXN0YmxrcCwgZnMsIGxibGtubywg ZXhwdW5nZXR5cGUpCiAJCQkJYnJlbHNlKGlicCk7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKmJs a3AgIT0gMCkKLQkJCQlwYW5pYygic25hcGFjY3RfdWZzMTogYmFkIGJsb2NrIik7CisJCQkJ UEFOSUMoImJhZCBibG9jayIpOwogCQkJKmJsa3AgPSBleHB1bmdldHlwZTsKIAkJCWlmIChs Ym4gPj0gTkRBRERSKQogCQkJCWJkd3JpdGUoaWJwKTsKQEAgLTEzODksMTIgKzEzODgsMTIg QEAgaW5kaXJhY2N0X3VmczIoc25hcHZwLCBjYW5jZWx2cCwgbGV2ZWwsIGJsa25vLCBsYm4s IHJsYm4sIHJlbWJsa3MsCiAJaWYgKGJsa25vID09IDApIHsKIAkJaWYgKGV4cHVuZ2V0eXBl ID09IEJMS19OT0NPUFkpCiAJCQlyZXR1cm4gKDApOwotCQlwYW5pYygiaW5kaXJhY2N0X3Vm czI6IG1pc3NpbmcgaW5kaXIiKTsKKwkJUEFOSUMoIm1pc3NpbmcgaW5kaXIiKTsKIAl9CiAJ aWYgKChlcnJvciA9IHVmc19nZXRsYm5zKGNhbmNlbHZwLCBybGJuLCBpbmRpcnMsICZudW0p KSAhPSAwKQogCQlyZXR1cm4gKGVycm9yKTsKIAlpZiAobGJuICE9IGluZGlyc1tudW0gLSAx IC0gbGV2ZWxdLmluX2xibiB8fCBudW0gPCAyKQotCQlwYW5pYygiaW5kaXJhY2N0X3VmczI6 IGJvdGNoZWQgcGFyYW1zIik7CisJCVBBTklDKCJib3RjaGVkIHBhcmFtcyIpOwogCS8qCiAJ ICogV2UgaGF2ZSB0byBleHBhbmQgYnJlYWQgaGVyZSBzaW5jZSBpdCB3aWxsIGRlYWRsb2Nr IGxvb2tpbmcKIAkgKiB1cCB0aGUgYmxvY2sgbnVtYmVyIGZvciBhbnkgYmxvY2tzIHRoYXQg YXJlIG5vdCBpbiB0aGUgY2FjaGUuCkBAIC0xNTAwLDcgKzE0OTksNyBAQCBzbmFwYWNjdF91 ZnMyKHZwLCBvbGRibGtwLCBsYXN0YmxrcCwgZnMsIGxibGtubywgZXhwdW5nZXR5cGUpCiAJ CQkJYnJlbHNlKGlicCk7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKmJsa3AgIT0gMCkKLQkJCQlw YW5pYygic25hcGFjY3RfdWZzMjogYmFkIGJsb2NrIik7CisJCQkJUEFOSUMoImJhZCBibG9j ayIpOwogCQkJKmJsa3AgPSBleHB1bmdldHlwZTsKIAkJCWlmIChsYm4gPj0gTkRBRERSKQog CQkJCWJkd3JpdGUoaWJwKTsKQEAgLTE4MDAsNyArMTc5OSw3IEBAIHJldHJ5OgogCQkJICog KGRvbid0IGNhcmUpIGZvciB1cy4KIAkJCSAqLwogCQkJaWYgKGNsYWltZWRibGspCi0JCQkJ cGFuaWMoInNuYXBibGtmcmVlOiBpbmNvbnNpc3RlbnQgYmxvY2sgdHlwZSIpOworCQkJCVBB TklDKCJpbmNvbnNpc3RlbnQgYmxvY2sgdHlwZSIpOwogCQkJaWYgKGxibiA8IE5EQUREUikg ewogCQkJCURJUF9TRVQoaXAsIGlfZGJbbGJuXSwgQkxLX05PQ09QWSk7CiAJCQkJaXAtPmlf ZmxhZyB8PSBJTl9DSEFOR0UgfCBJTl9VUERBVEU7CkBAIC0yMDIyLDggKzIwMjEsNyBAQCBm ZnNfc25hcHNob3RfbW91bnQobXApCiAJCSAqLwogCQlWSV9MT0NLKGRldnZwKTsKIAkJaWYg KGlwLT5pX25leHRzbmFwLnRxZV9wcmV2ICE9IDApCi0JCQlwYW5pYygiZmZzX3NuYXBzaG90 X21vdW50OiAlanUgYWxyZWFkeSBvbiBsaXN0IiwKLQkJCSAgICAodWludG1heF90KWlwLT5p X251bWJlcik7CisJCQlQQU5JQygiJWp1IGFscmVhZHkgb24gbGlzdCIsICh1aW50bWF4X3Qp aXAtPmlfbnVtYmVyKTsKIAkJZWxzZQogCQkJVEFJTFFfSU5TRVJUX1RBSUwoJnNuLT5zbl9o ZWFkLCBpcCwgaV9uZXh0c25hcCk7CiAJCXZwLT52X3ZmbGFnIHw9IFZWX1NZU1RFTTsKQEAg LTIxOTAsNyArMjE4OCw3IEBAIGZmc19iZGZsdXNoKGJvLCBicCkKIAkJCQkgICAgIExLX0VY Q0xVU0lWRSB8IExLX05PV0FJVCwgTlVMTCkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoYnAg PT0gbmJwKQotCQkJCXBhbmljKCJiZHdyaXRlOiBmb3VuZCBvdXJzZWx2ZXMiKTsKKwkJCQlQ QU5JQygiZm91bmQgb3Vyc2VsdmVzIik7CiAJCQlCT19VTkxPQ0soYm8pOwogCQkJLyoKIAkJ CSAqIERvbid0IGNvdW50ZGVwcyB3aXRoIHRoZSBibyBsb2NrCkBAIC0yMjUwLDcgKzIyNDgs NyBAQCBmZnNfY29weW9ud3JpdGUoZGV2dnAsIGJwKQogCWlmIChkZXZ2cCAhPSBicC0+Yl92 cCAmJiBJU19TTkFQU0hPVChWVE9JKGJwLT5iX3ZwKSkpCiAJCXJldHVybiAoMCk7CQkvKiBV cGRhdGUgb24gYSBzbmFwc2hvdCBmaWxlICovCiAJaWYgKHRkLT50ZF9wZmxhZ3MgJiBURFBf Q09XSU5QUk9HUkVTUykKLQkJcGFuaWMoImZmc19jb3B5b253cml0ZTogcmVjdXJzaXZlIGNh bGwiKTsKKwkJUEFOSUMoInJlY3Vyc2l2ZSBjYWxsIik7CiAJLyoKIAkgKiBGaXJzdCBjaGVj ayB0byBzZWUgaWYgaXQgaXMgaW4gdGhlIHByZWFsbG9jYXRlZCBsaXN0LgogCSAqIEJ5IGRv aW5nIHRoaXMgY2hlY2sgd2UgYXZvaWQgc2V2ZXJhbCBwb3RlbnRpYWwgZGVhZGxvY2tzLgpA QCAtMjM0NSw3ICsyMzQzLDcgQEAgZmZzX2NvcHlvbndyaXRlKGRldnZwLCBicCkKIAkJfQog I2lmZGVmIElOVkFSSUFOVFMKIAkJaWYgKGJsa25vID09IEJMS19TTkFQICYmIGJwLT5iX2xi bGtubyA+PSAwKQotCQkJcGFuaWMoImZmc19jb3B5b253cml0ZTogYmFkIGNvcHkgYmxvY2si KTsKKwkJCVBBTklDKCJiYWQgY29weSBibG9jayIpOwogI2VuZGlmCiAJCWlmIChibGtubyAh PSAwKQogCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9zeXMvdWZzL2Zmcy9mZnNfc29mdGRl cC5jIGIvc3lzL3Vmcy9mZnMvZmZzX3NvZnRkZXAuYwppbmRleCAxNmZlMTM0Li40OGQ4MDcz IDEwMDY0NAotLS0gYS9zeXMvdWZzL2Zmcy9mZnNfc29mdGRlcC5jCisrKyBiL3N5cy91ZnMv ZmZzL2Zmc19zb2Z0ZGVwLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzb2Z0ZGVwX2ZsdXNoZmls ZXMob2xkbW50LCBmbGFncywgdGQpCiAJc3RydWN0IHRocmVhZCAqdGQ7CiB7CiAKLQlwYW5p Yygic29mdGRlcF9mbHVzaGZpbGVzIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0K IAogaW50CkBAIC0xNTUsNyArMTU1LDcgQEAgc29mdGRlcF9zZXR1cF9pbm9tYXBkZXAoYnAs IGlwLCBuZXdpbnVtLCBtb2RlKQogCWludCBtb2RlOwogewogCi0JcGFuaWMoInNvZnRkZXBf c2V0dXBfaW5vbWFwZGVwIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9p ZApAQCAtMTY3LDcgKzE2Nyw3IEBAIHNvZnRkZXBfc2V0dXBfYmxrbWFwZGVwKGJwLCBtcCwg bmV3Ymxrbm8sIGZyYWdzLCBvbGRmcmFncykKIAlpbnQgb2xkZnJhZ3M7CiB7CiAKLQlwYW5p Yygic29mdGRlcF9zZXR1cF9ibGttYXBkZXAgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIp OwogfQogCiB2b2lkIApAQCAtMTgxLDcgKzE4MSw3IEBAIHNvZnRkZXBfc2V0dXBfYWxsb2Nk aXJlY3QoaXAsIGxibiwgbmV3Ymxrbm8sIG9sZGJsa25vLCBuZXdzaXplLCBvbGRzaXplLCBi cCkKIAlzdHJ1Y3QgYnVmICpicDsKIHsKIAkKLQlwYW5pYygic29mdGRlcF9zZXR1cF9hbGxv Y2RpcmVjdCBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZvaWQgCkBAIC0x OTUsNyArMTk1LDcgQEAgc29mdGRlcF9zZXR1cF9hbGxvY2V4dChpcCwgbGJuLCBuZXdibGtu bywgb2xkYmxrbm8sIG5ld3NpemUsIG9sZHNpemUsIGJwKQogCXN0cnVjdCBidWYgKmJwOwog ewogCQotCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0IGNhbGxlZCIpOworCVBBTklD KCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMjA5LDcgKzIwOSw3IEBAIHNvZnRkZXBfc2V0 dXBfYWxsb2NpbmRpcl9wYWdlKGlwLCBsYm4sIGJwLCBwdHJubywgbmV3Ymxrbm8sIG9sZGJs a25vLCBuYnApCiAJc3RydWN0IGJ1ZiAqbmJwOwogewogCi0JcGFuaWMoInNvZnRkZXBfc2V0 dXBfYWxsb2NpbmRpcl9wYWdlIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAog dm9pZApAQCAtMjIxLDcgKzIyMSw3IEBAIHNvZnRkZXBfc2V0dXBfYWxsb2NpbmRpcl9tZXRh KG5icCwgaXAsIGJwLCBwdHJubywgbmV3Ymxrbm8pCiAJdWZzMl9kYWRkcl90IG5ld2Jsa25v OwogewogCi0JcGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2NpbmRpcl9tZXRhIGNhbGxlZCIp OworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMjMyLDcgKzIzMiw3IEBAIHNv ZnRkZXBfam91cm5hbF9mcmVlYmxvY2tzKGlwLCBjcmVkLCBsZW5ndGgsIGZsYWdzKQogCWlu dCBmbGFnczsKIHsKIAkKLQlwYW5pYygic29mdGRlcF9qb3VybmFsX2ZyZWVibG9ja3MgY2Fs bGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC0yNDAsNyArMjQwLDcg QEAgc29mdGRlcF9qb3VybmFsX2ZzeW5jKGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7CiAK LQlwYW5pYygic29mdGRlcF9qb3VybmFsX2ZzeW5jIGNhbGxlZCIpOworCVBBTklDKCJjYWxs ZWQiKTsKIH0KIAogdm9pZApAQCAtMjUwLDcgKzI1MCw3IEBAIHNvZnRkZXBfc2V0dXBfZnJl ZWJsb2NrcyhpcCwgbGVuZ3RoLCBmbGFncykKIAlpbnQgZmxhZ3M7CiB7CiAJCi0JcGFuaWMo InNvZnRkZXBfc2V0dXBfZnJlZWJsb2NrcyBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVkIik7 CiB9CiAKIHZvaWQKQEAgLTI2MCw3ICsyNjAsNyBAQCBzb2Z0ZGVwX2ZyZWVmaWxlKHB2cCwg aW5vLCBtb2RlKQogCQlpbnQgbW9kZTsKIHsKIAotCXBhbmljKCJzb2Z0ZGVwX2ZyZWVmaWxl IGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogaW50IApAQCAtMjczLDcgKzI3 Myw3IEBAIHNvZnRkZXBfc2V0dXBfZGlyZWN0b3J5X2FkZChicCwgZHAsIGRpcm9mZnNldCwg bmV3aW51bSwgbmV3ZGlyYnAsIGlzbmV3YmxrKQogCWludCBpc25ld2JsazsKIHsKIAotCXBh bmljKCJzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9hZGQgY2FsbGVkIik7CisJUEFOSUMoImNh bGxlZCIpOwogfQogCiB2b2lkIApAQCAtMjg2LDcgKzI4Niw3IEBAIHNvZnRkZXBfY2hhbmdl X2RpcmVjdG9yeWVudHJ5X29mZnNldChicCwgZHAsIGJhc2UsIG9sZGxvYywgbmV3bG9jLCBl bnRyeXNpemUpCiAJaW50IGVudHJ5c2l6ZTsKIHsKIAotCXBhbmljKCJzb2Z0ZGVwX2NoYW5n ZV9kaXJlY3RvcnllbnRyeV9vZmZzZXQgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwog fQogCiB2b2lkIApAQCAtMjk3LDcgKzI5Nyw3IEBAIHNvZnRkZXBfc2V0dXBfcmVtb3ZlKGJw LCBkcCwgaXAsIGlzcm1kaXIpCiAJaW50IGlzcm1kaXI7CiB7CiAJCi0JcGFuaWMoInNvZnRk ZXBfc2V0dXBfcmVtb3ZlIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9p ZCAKQEAgLTMwOSw3ICszMDksNyBAQCBzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9jaGFuZ2Uo YnAsIGRwLCBpcCwgbmV3aW51bSwgaXNybWRpcikKIAlpbnQgaXNybWRpcjsKIHsKIAotCXBh bmljKCJzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9jaGFuZ2UgY2FsbGVkIik7CisJUEFOSUMo ImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC0zMjEsNyArMzIxLDcgQEAgc29mdGRlcF9zZXR1 cF9ibGtmcmVlKG1wLCBicCwgYmxrbm8sIGZyYWdzLCB3a2hkKQogCXN0cnVjdCB3b3JraGVh ZCAqd2toZDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9OX18pOworCVBB TklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMzMyLDcgKzMzMiw3IEBAIHNvZnRkZXBf c2V0dXBfaW5vZnJlZShtcCwgYnAsIGlubywgd2toZCkKIAlzdHJ1Y3Qgd29ya2hlYWQgKndr aGQ7CiB7CiAKLQlwYW5pYygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygi Y2FsbGVkIik7CiB9CiAKIHZvaWQKQEAgLTM0MSw3ICszNDEsNyBAQCBzb2Z0ZGVwX3NldHVw X3VubGluayhkcCwgaXApCiAJc3RydWN0IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBj YWxsZWQiLCBfX0ZVTkNUSU9OX18pOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApA QCAtMzUwLDcgKzM1MCw3IEBAIHNvZnRkZXBfc2V0dXBfbGluayhkcCwgaXApCiAJc3RydWN0 IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9OX18pOwor CVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMzU5LDcgKzM1OSw3IEBAIHNvZnRk ZXBfcmV2ZXJ0X2xpbmsoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7CiAKLQlwYW5p YygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAK IHZvaWQKQEAgLTM2OCw3ICszNjgsNyBAQCBzb2Z0ZGVwX3NldHVwX3JtZGlyKGRwLCBpcCkK IAlzdHJ1Y3QgaW5vZGUgKmlwOwogewogCi0JcGFuaWMoIiVzIGNhbGxlZCIsIF9fRlVOQ1RJ T05fXyk7CisJUEFOSUMoImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC0zNzcsNyArMzc3LDcg QEAgc29mdGRlcF9yZXZlcnRfcm1kaXIoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7 CiAKLQlwYW5pYygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2FsbGVk Iik7CiB9CiAKIHZvaWQKQEAgLTM4Niw3ICszODYsNyBAQCBzb2Z0ZGVwX3NldHVwX2NyZWF0 ZShkcCwgaXApCiAJc3RydWN0IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQi LCBfX0ZVTkNUSU9OX18pOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMzk1 LDcgKzM5NSw3IEBAIHNvZnRkZXBfcmV2ZXJ0X2NyZWF0ZShkcCwgaXApCiAJc3RydWN0IGlu b2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9OX18pOworCVBB TklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtNDA0LDcgKzQwNCw3IEBAIHNvZnRkZXBf c2V0dXBfbWtkaXIoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7CiAKLQlwYW5pYygi JXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZv aWQKQEAgLTQxMyw3ICs0MTMsNyBAQCBzb2Z0ZGVwX3JldmVydF9ta2RpcihkcCwgaXApCiAJ c3RydWN0IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9O X18pOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtNDIyLDcgKzQyMiw3IEBA IHNvZnRkZXBfc2V0dXBfZG90ZG90X2xpbmsoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7 CiB7CiAKLQlwYW5pYygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2Fs bGVkIik7CiB9CiAKIGludApAQCAtNDMxLDcgKzQzMSw3IEBAIHNvZnRkZXBfcHJlYWxsb2Mo dnAsIHdhaXRvaykKIAlpbnQgd2FpdG9rOwogewogCi0JcGFuaWMoIiVzIGNhbGxlZCIsIF9f RlVOQ1RJT05fXyk7CisJUEFOSUMoImNhbGxlZCIpOwogCiAJcmV0dXJuICgwKTsKIH0KQEAg LTQ1MCw3ICs0NTAsNyBAQCBzb2Z0ZGVwX2NoYW5nZV9saW5rY250KGlwKQogCXN0cnVjdCBp bm9kZSAqaXA7CiB7CiAKLQlwYW5pYygic29mdGRlcF9jaGFuZ2VfbGlua2NudCBjYWxsZWQi KTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZvaWQgCkBAIC00NTgsNyArNDU4LDcgQEAg c29mdGRlcF9sb2FkX2lub2RlYmxvY2soaXApCiAJc3RydWN0IGlub2RlICppcDsKIHsKIAot CXBhbmljKCJzb2Z0ZGVwX2xvYWRfaW5vZGVibG9jayBjYWxsZWQiKTsKKwlQQU5JQygiY2Fs bGVkIik7CiB9CiAKIHZvaWQgCkBAIC00NjgsNyArNDY4LDcgQEAgc29mdGRlcF91cGRhdGVf aW5vZGVibG9jayhpcCwgYnAsIHdhaXRmb3IpCiAJaW50IHdhaXRmb3I7CiB7CiAKLQlwYW5p Yygic29mdGRlcF91cGRhdGVfaW5vZGVibG9jayBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVk Iik7CiB9CiAKIGludApAQCAtNTE3LDcgKzUxNyw3IEBAIHNvZnRkZXBfc2xvd2Rvd24odnAp CiAJc3RydWN0IHZub2RlICp2cDsKIHsKIAotCXBhbmljKCJzb2Z0ZGVwX3Nsb3dkb3duIGNh bGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtNTI1LDcgKzUyNSw3 IEBAIHNvZnRkZXBfcmVsZWFzZWZpbGUoaXApCiAJc3RydWN0IGlub2RlICppcDsJLyogaW5v ZGUgd2l0aCB0aGUgemVybyBlZmZlY3RpdmUgbGluayBjb3VudCAqLwogewogCi0JcGFuaWMo InNvZnRkZXBfcmVsZWFzZWZpbGUgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwogfQog CiBpbnQKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzb2Z0ZGVwX2J1Zl9hcHBlbmQoYnAsIHdraGQp CiAJc3RydWN0IHdvcmtoZWFkICp3a2hkOwogewogCi0JcGFuaWMoInNvZnRkZXBfYnVmX2Fw cGVuZHdvcmsgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC02 MDcsNyArNjA3LDcgQEAgc29mdGRlcF9pbm9kZV9hcHBlbmQoaXAsIGNyZWQsIHdraGQpCiAJ c3RydWN0IHdvcmtoZWFkICp3a2hkOwogewogCi0JcGFuaWMoInNvZnRkZXBfaW5vZGVfYXBw ZW5kd29yayBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZvaWQKQEAgLTYx NSw3ICs2MTUsNyBAQCBzb2Z0ZGVwX2ZyZWV3b3JrKHdraGQpCiAJc3RydWN0IHdvcmtoZWFk ICp3a2hkOwogewogCi0JcGFuaWMoInNvZnRkZXBfZnJlZXdvcmsgY2FsbGVkIik7CisJUEFO SUMoImNhbGxlZCIpOwogfQogCiAjZWxzZQpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgd29ya2xp c3RfaW5zZXJ0KGhlYWQsIGl0ZW0sIGxvY2tlZCkKIAlpZiAobG9ja2VkKQogCQltdHhfYXNz ZXJ0KCZsaywgTUFfT1dORUQpOwogCWlmIChpdGVtLT53a19zdGF0ZSAmIE9OV09SS0xJU1Qp Ci0JCXBhbmljKCJ3b3JrbGlzdF9pbnNlcnQ6ICVwICVzKDB4JVgpIGFscmVhZHkgb24gbGlz dCIsCisJCVBBTklDKCIlcCAlcygweCVYKSBhbHJlYWR5IG9uIGxpc3QiLAogCQkgICAgaXRl bSwgVFlQRU5BTUUoaXRlbS0+d2tfdHlwZSksIGl0ZW0tPndrX3N0YXRlKTsKIAlpdGVtLT53 a19zdGF0ZSB8PSBPTldPUktMSVNUOwogCUxJU1RfSU5TRVJUX0hFQUQoaGVhZCwgaXRlbSwg d2tfbGlzdCk7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB3b3JrbGlzdF9yZW1vdmUoaXRlbSwg bG9ja2VkKQogCWlmIChsb2NrZWQpCiAJCW10eF9hc3NlcnQoJmxrLCBNQV9PV05FRCk7CiAJ aWYgKChpdGVtLT53a19zdGF0ZSAmIE9OV09SS0xJU1QpID09IDApCi0JCXBhbmljKCJ3b3Jr bGlzdF9yZW1vdmU6ICVwICVzKDB4JVgpIG5vdCBvbiBsaXN0IiwKKwkJUEFOSUMoIiVwICVz KDB4JVgpIG5vdCBvbiBsaXN0IiwKIAkJICAgIGl0ZW0sIFRZUEVOQU1FKGl0ZW0tPndrX3R5 cGUpLCBpdGVtLT53a19zdGF0ZSk7CiAJaXRlbS0+d2tfc3RhdGUgJj0gfk9OV09SS0xJU1Q7 CiAJTElTVF9SRU1PVkUoaXRlbSwgd2tfbGlzdCk7CkBAIC0xMjEzLDEwICsxMjEzLDEwIEBA IHdvcmtpdGVtX2ZyZWUoaXRlbSwgdHlwZSkKIAogI2lmZGVmIERFQlVHCiAJaWYgKGl0ZW0t PndrX3N0YXRlICYgT05XT1JLTElTVCkKLQkJcGFuaWMoIndvcmtpdGVtX2ZyZWU6ICVzKDB4 JVgpIHN0aWxsIG9uIGxpc3QiLAorCQlQQU5JQygiJXMoMHglWCkgc3RpbGwgb24gbGlzdCIs CiAJCSAgICBUWVBFTkFNRShpdGVtLT53a190eXBlKSwgaXRlbS0+d2tfc3RhdGUpOwogCWlm IChpdGVtLT53a190eXBlICE9IHR5cGUpCi0JCXBhbmljKCJ3b3JraXRlbV9mcmVlOiB0eXBl IG1pc21hdGNoICVzICE9ICVzIiwKKwkJUEFOSUMoInR5cGUgbWlzbWF0Y2ggJXMgIT0gJXMi LAogCQkgICAgVFlQRU5BTUUoaXRlbS0+d2tfdHlwZSksIFRZUEVOQU1FKHR5cGUpKTsKICNl bmRpZgogCWlmIChpdGVtLT53a19zdGF0ZSAmIElPV0FJVElORykKQEAgLTE0NjIsNyArMTQ2 Miw3IEBAIGFkZF90b193b3JrbGlzdCh3aywgZmxhZ3MpCiAJbXR4X2Fzc2VydCgmbGssIE1B X09XTkVEKTsKIAl1bXAgPSBWRlNUT1VGUyh3ay0+d2tfbXApOwogCWlmICh3ay0+d2tfc3Rh dGUgJiBPTldPUktMSVNUKQotCQlwYW5pYygiYWRkX3RvX3dvcmtsaXN0OiAlcygweCVYKSBh bHJlYWR5IG9uIGxpc3QiLAorCQlQQU5JQygiJXMoMHglWCkgYWxyZWFkeSBvbiBsaXN0IiwK IAkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSwgd2stPndrX3N0YXRlKTsKIAl3ay0+d2tf c3RhdGUgfD0gT05XT1JLTElTVDsKIAlpZiAodW1wLT5zb2Z0ZGVwX29uX3dvcmtsaXN0ID09 IDApIHsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIHRvcDoKIAkJcmVtb3ZlX2Zyb21fd29ya2xp c3QoJmRpcnJlbS0+ZG1fbGlzdCk7CiAJCUZSRUVfTE9DSygmbGspOwogCQlpZiAodm5fc3Rh cnRfc2Vjb25kYXJ5X3dyaXRlKE5VTEwsICZtcCwgVl9OT1dBSVQpKQotCQkJcGFuaWMoInBy b2Nlc3NfcmVtb3Zlczogc3VzcGVuZGVkIGZpbGVzeXN0ZW0iKTsKKwkJCVBBTklDKCJzdXNw ZW5kZWQgZmlsZXN5c3RlbSIpOwogCQloYW5kbGVfd29ya2l0ZW1fcmVtb3ZlKGRpcnJlbSwg MCk7CiAJCXZuX2ZpbmlzaGVkX3NlY29uZGFyeV93cml0ZShtcCk7CiAJCUFDUVVJUkVfTE9D SygmbGspOwpAQCAtMTY4Niw4ICsxNjg2LDcgQEAgcHJvY2Vzc190cnVuY2F0ZXModnApCiAJ CQkJRlJFRV9MT0NLKCZsayk7CiAJCQkJaWYgKHZuX3N0YXJ0X3NlY29uZGFyeV93cml0ZShO VUxMLCAmbXAsCiAJCQkJICAgIFZfTk9XQUlUKSkKLQkJCQkJcGFuaWMoInByb2Nlc3NfdHJ1 bmNhdGVzOiAiCi0JCQkJCSAgICAic3VzcGVuZGVkIGZpbGVzeXN0ZW0iKTsKKwkJCQkJUEFO SUMoInN1c3BlbmRlZCBmaWxlc3lzdGVtIik7CiAJCQkJaGFuZGxlX3dvcmtpdGVtX2ZyZWVi bG9ja3MoZnJlZWJsa3MsIDApOwogCQkJCXZuX2ZpbmlzaGVkX3NlY29uZGFyeV93cml0ZSht cCk7CiAJCQkJQUNRVUlSRV9MT0NLKCZsayk7CkBAIC0xNzQ3LDEzICsxNzQ2LDEyIEBAIHBy b2Nlc3Nfd29ya2xpc3RfaXRlbShtcCwgdGFyZ2V0LCBmbGFncykKIAkJCWNvbnRpbnVlOwog CQl9CiAJCWlmICh3ay0+d2tfc3RhdGUgJiBJTlBST0dSRVNTKQotCQkJcGFuaWMoInByb2Nl c3Nfd29ya2xpc3RfaXRlbTogJXAgYWxyZWFkeSBpbiBwcm9ncmVzcy4iLAotCQkJICAgIHdr KTsKKwkJCVBBTklDKCIlcCBhbHJlYWR5IGluIHByb2dyZXNzLiIsIHdrKTsKIAkJd2stPndr X3N0YXRlIHw9IElOUFJPR1JFU1M7CiAJCXJlbW92ZV9mcm9tX3dvcmtsaXN0KHdrKTsKIAkJ RlJFRV9MT0NLKCZsayk7CiAJCWlmICh2bl9zdGFydF9zZWNvbmRhcnlfd3JpdGUoTlVMTCwg Jm1wLCBWX05PV0FJVCkpCi0JCQlwYW5pYygicHJvY2Vzc193b3JrbGlzdF9pdGVtOiBzdXNw ZW5kZWQgZmlsZXN5c3RlbSIpOworCQkJUEFOSUMoInN1c3BlbmRlZCBmaWxlc3lzdGVtIik7 CiAJCXN3aXRjaCAod2stPndrX3R5cGUpIHsKIAkJY2FzZSBEX0RJUlJFTToKIAkJCS8qIHJl bW92YWwgb2YgYSBkaXJlY3RvcnkgZW50cnkgKi8KQEAgLTE3NzksOCArMTc3Nyw3IEBAIHBy b2Nlc3Nfd29ya2xpc3RfaXRlbShtcCwgdGFyZ2V0LCBmbGFncykKIAkJCWJyZWFrOwogCiAJ CWRlZmF1bHQ6Ci0JCQlwYW5pYygiJXNfcHJvY2Vzc193b3JrbGlzdDogVW5rbm93biB0eXBl ICVzIiwKLQkJCSAgICAic29mdGRlcCIsIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CisJCQlQ QU5JQygiVW5rbm93biB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJCS8q IE5PVFJFQUNIRUQgKi8KIAkJfQogCQl2bl9maW5pc2hlZF9zZWNvbmRhcnlfd3JpdGUobXAp OwpAQCAtMTg4NCw3ICsxODgxLDcgQEAgc29mdGRlcF93YWl0aWRsZShzdHJ1Y3QgbW91bnQg Km1wKQogCWZvciAoaSA9IDA7IGkgPCAxMCAmJiB1bXAtPnNvZnRkZXBfZGVwczsgaSsrKSB7 CiAJCXVtcC0+c29mdGRlcF9yZXEgPSAxOwogCQlpZiAodW1wLT5zb2Z0ZGVwX29uX3dvcmts aXN0KQotCQkJcGFuaWMoInNvZnRkZXBfd2FpdGlkbGU6IHdvcmsgYWRkZWQgYWZ0ZXIgZmx1 c2guIik7CisJCQlQQU5JQygid29yayBhZGRlZCBhZnRlciBmbHVzaC4iKTsKIAkJbXNsZWVw KCZ1bXAtPnNvZnRkZXBfZGVwcywgJmxrLCBQVk0sICJzb2Z0ZGVwcyIsIDEpOwogCX0KIAl1 bXAtPnNvZnRkZXBfcmVxID0gMDsKQEAgLTE5MzksNyArMTkzNiw3IEBAIHJldHJ5X2ZsdXNo OgogCSAqLwogCWlmIChsb29wY250ID09IDApIHsKIAkJaWYgKG9sZG1udC0+bW50X2tlcm5f ZmxhZyAmIE1OVEtfVU5NT1VOVCkKLQkJCXBhbmljKCJzb2Z0ZGVwX2ZsdXNoZmlsZXM6IGxv b3BpbmciKTsKKwkJCVBBTklDKCJsb29waW5nIik7CiAJCWVycm9yID0gRUJVU1k7CiAJfQog CWlmICghZXJyb3IpCkBAIC0yNjg3LDcgKzI2ODQsNyBAQCBhZGRfdG9fam91cm5hbCh3aykK IAltdHhfYXNzZXJ0KCZsaywgTUFfT1dORUQpOwogCXVtcCA9IFZGU1RPVUZTKHdrLT53a19t cCk7CiAJaWYgKHdrLT53a19zdGF0ZSAmIE9OV09SS0xJU1QpCi0JCXBhbmljKCJhZGRfdG9f am91cm5hbDogJXMoMHglWCkgYWxyZWFkeSBvbiBsaXN0IiwKKwkJUEFOSUMoIiVzKDB4JVgp IGFscmVhZHkgb24gbGlzdCIsCiAJCSAgICBUWVBFTkFNRSh3ay0+d2tfdHlwZSksIHdrLT53 a19zdGF0ZSk7CiAJd2stPndrX3N0YXRlIHw9IE9OV09SS0xJU1QgfCBERVBDT01QTEVURTsK IAlpZiAoTElTVF9FTVBUWSgmdW1wLT5zb2Z0ZGVwX2pvdXJuYWxfcGVuZGluZykpIHsKQEAg LTI3MjAsNyArMjcxNyw3IEBAIHJlbW92ZV9mcm9tX2pvdXJuYWwod2spCiAJCQlpZiAod2tu ID09IHdrKQogCQkJCWJyZWFrOwogCQlpZiAod2tuID09IE5VTEwpCi0JCQlwYW5pYygicmVt b3ZlX2Zyb21fam91cm5hbDogJXAgaXMgbm90IGluIGpvdXJuYWwiLCB3ayk7CisJCQlQQU5J QygiJXAgaXMgbm90IGluIGpvdXJuYWwiLCB3ayk7CiAJfQogI2VuZGlmCiAJLyoKQEAgLTMz MzMsOCArMzMzMCw3IEBAIHNvZnRkZXBfcHJvY2Vzc19qb3VybmFsKG1wLCBuZWVkd2ssIGZs YWdzKQogCQkJCWpmc3luY193cml0ZShXS19KRlNZTkMod2spLCBqc2VnLCBkYXRhKTsKIAkJ CQlicmVhazsKIAkJCWRlZmF1bHQ6Ci0JCQkJcGFuaWMoInByb2Nlc3Nfam91cm5hbDogVW5r bm93biB0eXBlICVzIiwKLQkJCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCQlQ QU5JQygiVW5rbm93biB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJCQkv KiBOT1RSRUFDSEVEICovCiAJCQl9CiAJCQlvZmYgKz0gSlJFQ19TSVpFOwpAQCAtMzQ0Myw4 ICszNDM5LDcgQEAgY29tcGxldGVfanNlZyhqc2VnKQogCQkJaGFuZGxlX3dyaXR0ZW5famZy ZWVmcmFnKFdLX0pGUkVFRlJBRyh3aykpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlw YW5pYygiaGFuZGxlX3dyaXR0ZW5fanNlZzogVW5rbm93biB0eXBlICVzIiwKLQkJCSAgICBU WVBFTkFNRSh3ay0+d2tfdHlwZSkpOworCQkJUEFOSUMoIlVua25vd24gdHlwZSAlcyIsIFRZ UEVOQU1FKHdrLT53a190eXBlKSk7CiAJCQkvKiBOT1RSRUFDSEVEICovCiAJCX0KIAkJaWYg KHdhaXRpbmcpCkBAIC0zNDk4LDcgKzM0OTMsNyBAQCBoYW5kbGVfd3JpdHRlbl9qc2VnKGpz ZWcsIGJwKQogewogCiAJaWYgKGpzZWctPmpzX3JlZnMgPT0gMCkKLQkJcGFuaWMoImhhbmRs ZV93cml0dGVuX2pzZWc6IE5vIHNlbGYtcmVmZXJlbmNlIG9uICVwIiwganNlZyk7CisJCVBB TklDKCJObyBzZWxmLXJlZmVyZW5jZSBvbiAlcCIsIGpzZWcpOwogCWpzZWctPmpzX3N0YXRl IHw9IERFUENPTVBMRVRFOwogCS8qCiAJICogV2UnbGwgbmV2ZXIgbmVlZCB0aGlzIGJ1ZmZl ciBhZ2Fpbiwgc2V0IGZsYWdzIHNvIGl0IHdpbGwgYmUKQEAgLTM1NDAsNyArMzUzNSw3IEBA IGhhbmRsZV93cml0dGVuX2pyZW1yZWYoanJlbXJlZikKIAkgKi8KIAlpZiAoaW5vZGVkZXBf bG9va3VwKGpyZW1yZWYtPmpyX2xpc3Qud2tfbXAsIGpyZW1yZWYtPmpyX3JlZi5pZl9pbm8s CiAJICAgIDAsICZpbm9kZWRlcCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2py ZW1yZWY6IExvc3QgaW5vZGVkZXAiKTsKKwkJUEFOSUMoIkxvc3QgaW5vZGVkZXAiKTsKIAlU QUlMUV9SRU1PVkUoJmlub2RlZGVwLT5pZF9pbm9yZWZsc3QsICZqcmVtcmVmLT5qcl9yZWYs IGlmX2RlcHMpOwogCS8qCiAJICogQ29tcGxldGUgdGhlIGRpcnJlbS4KQEAgLTM1NzgsOSAr MzU3Myw5IEBAIGhhbmRsZV93cml0dGVuX2phZGRyZWYoamFkZHJlZikKIAlkaXJhZGQgPSBO VUxMOwogCWlmIChpbm9kZWRlcF9sb29rdXAoamFkZHJlZi0+amFfbGlzdC53a19tcCwgamFk ZHJlZi0+amFfaW5vLAogCSAgICAwLCAmaW5vZGVkZXApID09IDApCi0JCXBhbmljKCJoYW5k bGVfd3JpdHRlbl9qYWRkcmVmOiBMb3N0IGlub2RlZGVwLiIpOworCQlQQU5JQygiTG9zdCBp bm9kZWRlcC4iKTsKIAlpZiAoamFkZHJlZi0+amFfZGlyYWRkID09IE5VTEwpCi0JCXBhbmlj KCJoYW5kbGVfd3JpdHRlbl9qYWRkcmVmOiBObyBkZXBlbmRlbmN5Iik7CisJCVBBTklDKCJO byBkZXBlbmRlbmN5Iik7CiAJaWYgKGphZGRyZWYtPmphX2RpcmFkZC0+ZGFfbGlzdC53a190 eXBlID09IERfRElSQUREKSB7CiAJCWRpcmFkZCA9IGphZGRyZWYtPmphX2RpcmFkZDsKIAkJ V09SS0xJU1RfSU5TRVJUKCZpbm9kZWRlcC0+aWRfYnVmd2FpdCwgJmRpcmFkZC0+ZGFfbGlz dCk7CkBAIC0zNTkwLDggKzM1ODUsNyBAQCBoYW5kbGVfd3JpdHRlbl9qYWRkcmVmKGphZGRy ZWYpCiAJfSBlbHNlIGlmIChqYWRkcmVmLT5qYV9zdGF0ZSAmIE1LRElSX0JPRFkpCiAJCW1r ZGlyID0gamFkZHJlZi0+amFfbWtkaXI7CiAJZWxzZQotCQlwYW5pYygiaGFuZGxlX3dyaXR0 ZW5famFkZHJlZjogVW5rbm93biBkZXBlbmRlbmN5ICVwIiwKLQkJICAgIGphZGRyZWYtPmph X2RpcmFkZCk7CisJCVBBTklDKCJVbmtub3duIGRlcGVuZGVuY3kgJXAiLCBqYWRkcmVmLT5q YV9kaXJhZGQpOwogCWphZGRyZWYtPmphX2RpcmFkZCA9IE5VTEw7CS8qIGFsc28gY2xlYXJz IGphX21rZGlyICovCiAJLyoKIAkgKiBSZW1vdmUgdXMgZnJvbSB0aGUgaW5vZGUgbGlzdC4K QEAgLTM2MzksNyArMzYzMyw3IEBAIGhhbmRsZV93cml0dGVuX2puZXdibGsoam5ld2JsaykK IAlqc2VnZGVwID0gam5ld2Jsay0+am5fanNlZ2RlcDsKIAlqbmV3YmxrLT5qbl9qc2VnZGVw ID0gTlVMTDsKIAlpZiAoam5ld2Jsay0+am5fZGVwID09IE5VTEwpIAotCQlwYW5pYygiaGFu ZGxlX3dyaXR0ZW5fam5ld2JsazogTm8gZGVwZW5kZW5jeSBmb3IgdGhlIHNlZ2RlcC4iKTsK KwkJUEFOSUMoIk5vIGRlcGVuZGVuY3kgZm9yIHRoZSBzZWdkZXAuIik7CiAJc3dpdGNoIChq bmV3YmxrLT5qbl9kZXAtPndrX3R5cGUpIHsKIAljYXNlIERfTkVXQkxLOgogCWNhc2UgRF9B TExPQ0RJUkVDVDoKQEAgLTM2NzYsOCArMzY3MCw3IEBAIGhhbmRsZV93cml0dGVuX2puZXdi bGsoam5ld2JsaykKIAkJandvcmtfaW5zZXJ0KCZmcmVld29yay0+ZndfZnJlZWJsa3MtPmZi X2p3b3JrLCBqc2VnZGVwKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJcGFuaWMoImhhbmRs ZV93cml0dGVuX2puZXdibGs6IFVua25vd24gdHlwZSAlZC4iLAotCQkgICAgam5ld2Jsay0+ am5fZGVwLT53a190eXBlKTsKKwkJUEFOSUMoIlVua25vd24gdHlwZSAlZC4iLCBqbmV3Ymxr LT5qbl9kZXAtPndrX3R5cGUpOwogCX0KIAlqbmV3YmxrLT5qbl9kZXAgPSBOVUxMOwogCWZy ZWVfam5ld2JsayhqbmV3YmxrKTsKQEAgLTM3MTksNyArMzcxMiw3IEBAIGZyZWVfamZyZWVm cmFnKGpmcmVlZnJhZykKIAllbHNlIGlmIChqZnJlZWZyYWctPmZyX3N0YXRlICYgT05XT1JL TElTVCkKIAkJcmVtb3ZlX2Zyb21fam91cm5hbCgmamZyZWVmcmFnLT5mcl9saXN0KTsKIAlp ZiAoamZyZWVmcmFnLT5mcl9mcmVlZnJhZyAhPSBOVUxMKQotCQlwYW5pYygiZnJlZV9qZnJl ZWZyYWc6ICBTdGlsbCBhdHRhY2hlZCB0byBhIGZyZWVmcmFnLiIpOworCQlQQU5JQygiU3Rp bGwgYXR0YWNoZWQgdG8gYSBmcmVlZnJhZy4iKTsKIAlXT1JLSVRFTV9GUkVFKGpmcmVlZnJh ZywgRF9KRlJFRUZSQUcpOwogfQogCkBAIC0zNzM5LDcgKzM3MzIsNyBAQCBoYW5kbGVfd3Jp dHRlbl9qZnJlZWZyYWcoamZyZWVmcmFnKQogCWpmcmVlZnJhZy0+ZnJfanNlZ2RlcCA9IE5V TEw7CiAJZnJlZWZyYWcgPSBqZnJlZWZyYWctPmZyX2ZyZWVmcmFnOwogCWlmIChmcmVlZnJh ZyA9PSBOVUxMKQotCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5famZyZWVmcmFnOiBObyBmcmVl ZnJhZy4iKTsKKwkJUEFOSUMoIk5vIGZyZWVmcmFnLiIpOwogCWZyZWVmcmFnLT5mZl9zdGF0 ZSB8PSBERVBDT01QTEVURTsKIAlmcmVlZnJhZy0+ZmZfamRlcCA9IE5VTEw7CiAJandvcmtf aW5zZXJ0KCZmcmVlZnJhZy0+ZmZfandvcmssIGpzZWdkZXApOwpAQCAtNDA5MSw3ICs0MDg0 LDcgQEAgY2FuY2VsX2phZGRyZWYoamFkZHJlZiwgaW5vZGVkZXAsIHdraGQpCiAJaWYgKGlu b2RlZGVwID09IE5VTEwpCiAJCWlmIChpbm9kZWRlcF9sb29rdXAoamFkZHJlZi0+amFfbGlz dC53a19tcCwgamFkZHJlZi0+amFfaW5vLAogCQkgICAgMCwgJmlub2RlZGVwKSA9PSAwKQot CQkJcGFuaWMoImNhbmNlbF9qYWRkcmVmOiBMb3N0IGlub2RlZGVwIik7CisJCQlQQU5JQygi TG9zdCBpbm9kZWRlcCIpOwogCS8qCiAJICogV2UgbXVzdCBhZGp1c3QgdGhlIG5saW5rIG9m IGFueSByZWZlcmVuY2Ugb3BlcmF0aW9uIHRoYXQgZm9sbG93cwogCSAqIHVzIHNvIHRoYXQg aXQgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBpbi1tZW1vcnkgcmVmZXJlbmNlLiAgVGhpcwpA QCAtNDE1OCwxNSArNDE1MSwxNCBAQCBmcmVlX2phZGRyZWYoamFkZHJlZikKIAlpZiAoKGph ZGRyZWYtPmphX3N0YXRlICYgQUxMQ09NUExFVEUpICE9IEFMTENPTVBMRVRFKQogCQlyZXR1 cm47CiAJaWYgKGphZGRyZWYtPmphX3JlZi5pZl9qc2VnZGVwKQotCQlwYW5pYygiZnJlZV9q YWRkcmVmOiBzZWdkZXAgYXR0YWNoZWQgdG8gamFkZHJlZiAlcCgweCVYKVxuIiwKKwkJUEFO SUMoInNlZ2RlcCBhdHRhY2hlZCB0byBqYWRkcmVmICVwKDB4JVgpXG4iLAogCQkgICAgamFk ZHJlZiwgamFkZHJlZi0+amFfc3RhdGUpOwogCWlmIChqYWRkcmVmLT5qYV9zdGF0ZSAmIE5F V0JMT0NLKQogCQlMSVNUX1JFTU9WRShqYWRkcmVmLCBqYV9ibWRlcHMpOwogCWlmIChqYWRk cmVmLT5qYV9zdGF0ZSAmIChJTlBST0dSRVNTIHwgT05XT1JLTElTVCkpCi0JCXBhbmljKCJm cmVlX2phZGRyZWY6IEJhZCBzdGF0ZSAlcCgweCVYKSIsCi0JCSAgICBqYWRkcmVmLCBqYWRk cmVmLT5qYV9zdGF0ZSk7CisJCVBBTklDKCJCYWQgc3RhdGUgJXAoMHglWCkiLCBqYWRkcmVm LCBqYWRkcmVmLT5qYV9zdGF0ZSk7CiAJaWYgKGphZGRyZWYtPmphX21rZGlyICE9IE5VTEwp Ci0JCXBhbmljKCJmcmVlX2phZGRyZWY6IFdvcmsgcGVuZGluZywgMHglWFxuIiwgamFkZHJl Zi0+amFfc3RhdGUpOworCQlQQU5JQygiV29yayBwZW5kaW5nLCAweCVYXG4iLCBqYWRkcmVm LT5qYV9zdGF0ZSk7CiAJV09SS0lURU1fRlJFRShqYWRkcmVmLCBEX0pBRERSRUYpOwogfQog CkBAIC00MTgxLDcgKzQxNzMsNyBAQCBmcmVlX2pyZW1yZWYoanJlbXJlZikKIAlpZiAoanJl bXJlZi0+anJfcmVmLmlmX2pzZWdkZXApCiAJCWZyZWVfanNlZ2RlcChqcmVtcmVmLT5qcl9y ZWYuaWZfanNlZ2RlcCk7CiAJaWYgKGpyZW1yZWYtPmpyX3N0YXRlICYgSU5QUk9HUkVTUykK LQkJcGFuaWMoImZyZWVfanJlbXJlZjogSU8gc3RpbGwgcGVuZGluZyIpOworCQlQQU5JQygi SU8gc3RpbGwgcGVuZGluZyIpOwogCVdPUktJVEVNX0ZSRUUoanJlbXJlZiwgRF9KUkVNUkVG KTsKIH0KIApAQCAtNDE5Nyw3ICs0MTg5LDcgQEAgZnJlZV9qbmV3YmxrKGpuZXdibGspCiAJ CXJldHVybjsKIAlMSVNUX1JFTU9WRShqbmV3YmxrLCBqbl9kZXBzKTsKIAlpZiAoam5ld2Js ay0+am5fZGVwICE9IE5VTEwpCi0JCXBhbmljKCJmcmVlX2puZXdibGs6IERlcGVuZGVuY3kg c3RpbGwgYXR0YWNoZWQuIik7CisJCVBBTklDKCJEZXBlbmRlbmN5IHN0aWxsIGF0dGFjaGVk LiIpOwogCVdPUktJVEVNX0ZSRUUoam5ld2JsaywgRF9KTkVXQkxLKTsKIH0KIApAQCAtNDIx NCw3ICs0MjA2LDcgQEAgY2FuY2VsX2puZXdibGsoam5ld2Jsaywgd2toZCkKIAlDVFIxKEtU Ul9TVUosICJjYW5jZWxfam5ld2JsazogYmxrbm8gJWpkIiwgam5ld2Jsay0+am5fYmxrbm8p OwogCWpzZWdkZXAgPSBqbmV3YmxrLT5qbl9qc2VnZGVwOwogCWlmIChqbmV3YmxrLT5qbl9q c2VnZGVwID09IE5VTEwgfHwgam5ld2Jsay0+am5fZGVwID09IE5VTEwpCi0JCXBhbmljKCJj YW5jZWxfam5ld2JsazogSW52YWxpZCBzdGF0ZSIpOworCQlQQU5JQygiSW52YWxpZCBzdGF0 ZSIpOwogCWpuZXdibGstPmpuX2pzZWdkZXAgID0gTlVMTDsKIAlqbmV3YmxrLT5qbl9kZXAg PSBOVUxMOwogCWpuZXdibGstPmpuX3N0YXRlIHw9IEdPSU5HQVdBWTsKQEAgLTQyNDAsOCAr NDIzMiw3IEBAIGZyZWVfamJsa2RlcChqYmxrZGVwKQogCWVsc2UgaWYgKGpibGtkZXAtPmpi X2xpc3Qud2tfdHlwZSA9PSBEX0pUUlVOQykKIAkJV09SS0lURU1fRlJFRShqYmxrZGVwLCBE X0pUUlVOQyk7CiAJZWxzZQotCQlwYW5pYygiZnJlZV9qYmxrZGVwOiBVbmV4cGVjdGVkIHR5 cGUgJXMiLAotCQkgICAgVFlQRU5BTUUoamJsa2RlcC0+amJfbGlzdC53a190eXBlKSk7CisJ CVBBTklDKCJVbmV4cGVjdGVkIHR5cGUgJXMiLCBUWVBFTkFNRShqYmxrZGVwLT5qYl9saXN0 LndrX3R5cGUpKTsKIH0KIAogLyoKQEAgLTQ4MzEsOCArNDgyMiw3IEBAIHNvZnRkZXBfc2V0 dXBfaW5vbWFwZGVwKGJwLCBpcCwgbmV3aW51bSwgbW9kZSkKIAl3b3JraXRlbV9hbGxvYygm Ym1zYWZlbWFwLT5zbV9saXN0LCBEX0JNU0FGRU1BUCwgbXApOwogCUFDUVVJUkVfTE9DSygm bGspOwogCWlmICgoaW5vZGVkZXBfbG9va3VwKG1wLCBuZXdpbnVtLCBERVBBTExPQyB8IE5P REVMQVksICZpbm9kZWRlcCkpKQotCQlwYW5pYygic29mdGRlcF9zZXR1cF9pbm9tYXBkZXA6 IGRlcGVuZGVuY3kgJXAgZm9yIG5ldyIKLQkJICAgICJpbm9kZSBhbHJlYWR5IGV4aXN0cyIs IGlub2RlZGVwKTsKKwkJUEFOSUMoImRlcGVuZGVuY3kgJXAgZm9yIG5ldyBpbm9kZSBhbHJl YWR5IGV4aXN0cyIsIGlub2RlZGVwKTsKIAlibXNhZmVtYXAgPSBibXNhZmVtYXBfbG9va3Vw KG1wLCBicCwgaW5vX3RvX2NnKGZzLCBuZXdpbnVtKSwgYm1zYWZlbWFwKTsKIAlpZiAoamFk ZHJlZikgewogCQlMSVNUX0lOU0VSVF9IRUFEKCZibXNhZmVtYXAtPnNtX2phZGRyZWZoZCwg amFkZHJlZiwgamFfYm1kZXBzKTsKQEAgLTQ4OTIsOCArNDg4Miw3IEBAIHNvZnRkZXBfc2V0 dXBfYmxrbWFwZGVwKGJwLCBtcCwgbmV3Ymxrbm8sIGZyYWdzLCBvbGRmcmFncykKIAkJCWZv ciAoaSA9IGpuZXdibGstPmpuX29sZGZyYWdzOyBpIDwgam5ld2Jsay0+am5fZnJhZ3M7CiAJ CQkgICAgaSsrKSB7CiAJCQkJaWYgKGlzc2V0KGJsa3NmcmVlLCBibm8gKyBpKSkKLQkJCQkJ cGFuaWMoInNvZnRkZXBfc2V0dXBfYmxrbWFwZGVwOiAiCi0JCQkJCSAgICAiZnJlZSBmcmFn bWVudCAlZCBmcm9tICVkLSVkICIKKwkJCQkJUEFOSUMoImZyZWUgZnJhZ21lbnQgJWQgZnJv bSAlZC0lZCAiCiAJCQkJCSAgICAic3RhdGUgMHglWCBkZXAgJXAiLCBpLAogCQkJCQkgICAg am5ld2Jsay0+am5fb2xkZnJhZ3MsCiAJCQkJCSAgICBqbmV3YmxrLT5qbl9mcmFncywKQEAg LTQ5MDksNyArNDg5OCw3IEBAIHNvZnRkZXBfc2V0dXBfYmxrbWFwZGVwKGJwLCBtcCwgbmV3 Ymxrbm8sIGZyYWdzLCBvbGRmcmFncykKIAkgICAgbmV3Ymxrbm8sIGZyYWdzLCBvbGRmcmFn cyk7CiAJQUNRVUlSRV9MT0NLKCZsayk7CiAJaWYgKG5ld2Jsa19sb29rdXAobXAsIG5ld2Js a25vLCBERVBBTExPQywgJm5ld2JsaykgIT0gMCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBf YmxrbWFwZGVwOiBmb3VuZCBibG9jayIpOworCQlQQU5JQygiZm91bmQgYmxvY2siKTsKIAlu ZXdibGstPm5iX2Jtc2FmZW1hcCA9IGJtc2FmZW1hcCA9IGJtc2FmZW1hcF9sb29rdXAobXAs IGJwLAogCSAgICBkdG9nKGZzLCBuZXdibGtubyksIE5VTEwpOwogCWlmIChqbmV3YmxrKSB7 CkBAIC01MDc1LDE1ICs1MDY0LDEzIEBAIHNvZnRkZXBfc2V0dXBfYWxsb2NkaXJlY3QoaXAs IG9mZiwgbmV3Ymxrbm8sIG9sZGJsa25vLCBuZXdzaXplLCBvbGRzaXplLCBicCkKIAlBQ1FV SVJFX0xPQ0soJmxrKTsKIAlpZiAob2ZmID49IE5EQUREUikgewogCQlpZiAobGJuID4gMCkK LQkJCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0OiBiYWQgbGJuICVqZCwgb2Zm ICVqZCIsCi0JCQkgICAgbGJuLCBvZmYpOworCQkJUEFOSUMoImJhZCBsYm4gJWpkLCBvZmYg JWpkIiwgbGJuLCBvZmYpOwogCQkvKiBhbGxvY2F0aW5nIGFuIGluZGlyZWN0IGJsb2NrICov CiAJCWlmIChvbGRibGtubyAhPSAwKQotCQkJcGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2Nk aXJlY3Q6IG5vbi16ZXJvIGluZGlyIik7CisJCQlQQU5JQygibm9uLXplcm8gaW5kaXIiKTsK IAl9IGVsc2UgewogCQlpZiAob2ZmICE9IGxibikKLQkJCXBhbmljKCJzb2Z0ZGVwX3NldHVw X2FsbG9jZGlyZWN0OiBsYm4gJWpkICE9IG9mZiAlamQiLAotCQkJICAgIGxibiwgb2ZmKTsK KwkJCVBBTklDKCJsYm4gJWpkICE9IG9mZiAlamQiLCBsYm4sIG9mZik7CiAJCS8qCiAJCSAq IEFsbG9jYXRpbmcgYSBkaXJlY3QgYmxvY2suCiAJCSAqCkBAIC01MDk2LDcgKzUwODMsNyBA QCBzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0KGlwLCBvZmYsIG5ld2Jsa25vLCBvbGRibGtu bywgbmV3c2l6ZSwgb2xkc2l6ZSwgYnApCiAJCQkgICAgJnBhZ2VkZXApOwogCX0KIAlpZiAo bmV3YmxrX2xvb2t1cChtcCwgbmV3Ymxrbm8sIDAsICZuZXdibGspID09IDApCi0JCXBhbmlj KCJzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0OiBsb3N0IGJsb2NrIik7CisJCVBBTklDKCJs b3N0IGJsb2NrIik7CiAJS0FTU0VSVChuZXdibGstPm5iX2xpc3Qud2tfdHlwZSA9PSBEX05F V0JMSywKIAkgICAgKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0OiBuZXdibGsgYWxyZWFk eSBpbml0aWFsaXplZCIpKTsKIAkvKgpAQCAtNTE1Miw3ICs1MTM5LDcgQEAgc29mdGRlcF9z ZXR1cF9hbGxvY2RpcmVjdChpcCwgb2ZmLCBuZXdibGtubywgb2xkYmxrbm8sIG5ld3NpemUs IG9sZHNpemUsIGJwKQogCQkJYnJlYWs7CiAJfQogCWlmIChvbGRhZHAgPT0gTlVMTCkKLQkJ cGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2NkaXJlY3Q6IGxvc3QgZW50cnkiKTsKKwkJUEFO SUMoImxvc3QgZW50cnkiKTsKIAkvKiBpbnNlcnQgaW4gbWlkZGxlIG9mIGxpc3QgKi8KIAlU QUlMUV9JTlNFUlRfQkVGT1JFKG9sZGFkcCwgYWRwLCBhZF9uZXh0KTsKIAlpZiAob2xkYWRw LT5hZF9vZmZzZXQgPT0gb2ZmKQpAQCAtNTE4NiwxNCArNTE3MywxMiBAQCBqbmV3YmxrX21l cmdlKG5ldywgb2xkLCB3a2hkKQogCS8qIFJlcGxhY2UgYSBqZnJlZWZyYWcgd2l0aCBhIGpu ZXdibGsuICovCiAJaWYgKG5ldy0+d2tfdHlwZSA9PSBEX0pGUkVFRlJBRykgewogCQlpZiAo V0tfSk5FV0JMSyhvbGQpLT5qbl9ibGtubyAhPSBXS19KRlJFRUZSQUcobmV3KS0+ZnJfYmxr bm8pCi0JCQlwYW5pYygiam5ld2Jsa19tZXJnZTogYmxrbm8gbWlzbWF0Y2g6ICVwLCAlcCIs Ci0JCQkgICAgb2xkLCBuZXcpOworCQkJUEFOSUMoImJsa25vIG1pc21hdGNoOiAlcCwgJXAi LCBvbGQsIG5ldyk7CiAJCWNhbmNlbF9qZnJlZWZyYWcoV0tfSkZSRUVGUkFHKG5ldykpOwog CQlyZXR1cm4gKG9sZCk7CiAJfQogCWlmIChvbGQtPndrX3R5cGUgIT0gRF9KTkVXQkxLIHx8 IG5ldy0+d2tfdHlwZSAhPSBEX0pORVdCTEspCi0JCXBhbmljKCJqbmV3YmxrX21lcmdlOiBC YWQgdHlwZTogb2xkICVkIG5ldyAlZFxuIiwKLQkJICAgIG9sZC0+d2tfdHlwZSwgbmV3LT53 a190eXBlKTsKKwkJUEFOSUMoIkJhZCB0eXBlOiBvbGQgJWQgbmV3ICVkXG4iLCBvbGQtPndr X3R5cGUsIG5ldy0+d2tfdHlwZSk7CiAJLyoKIAkgKiBIYW5kbGUgbWVyZ2luZyBvZiB0d28g am5ld2JsayByZWNvcmRzIHRoYXQgZGVzY3JpYmUKIAkgKiBkaWZmZXJlbnQgc2V0cyBvZiBm cmFnbWVudHMgaW4gdGhlIHNhbWUgYmxvY2suCkBAIC01MjAxLDcgKzUxODYsNyBAQCBqbmV3 YmxrX21lcmdlKG5ldywgb2xkLCB3a2hkKQogCWpuZXdibGsgPSBXS19KTkVXQkxLKG9sZCk7 CiAJbmpuZXdibGsgPSBXS19KTkVXQkxLKG5ldyk7CiAJaWYgKGpuZXdibGstPmpuX2Jsa25v ICE9IG5qbmV3YmxrLT5qbl9ibGtubykKLQkJcGFuaWMoImpuZXdibGtfbWVyZ2U6IE1lcmdp bmcgZGlzcGFyYXRlIGJsb2Nrcy4iKTsKKwkJUEFOSUMoIk1lcmdpbmcgZGlzcGFyYXRlIGJs b2Nrcy4iKTsKIAkvKgogCSAqIFRoZSByZWNvcmQgbWF5IGJlIHJvbGxlZCBiYWNrIGluIHRo ZSBjZy4KIAkgKi8KQEAgLTUyNDIsOCArNTIyNyw3IEBAIGFsbG9jZGlyZWN0X21lcmdlKGFk cGhlYWQsIG5ld2FkcCwgb2xkYWRwKQogCWlmIChuZXdhZHAtPmFkX29sZGJsa25vICE9IG9s ZGFkcC0+YWRfbmV3Ymxrbm8gfHwKIAkgICAgbmV3YWRwLT5hZF9vbGRzaXplICE9IG9sZGFk cC0+YWRfbmV3c2l6ZSB8fAogCSAgICBuZXdhZHAtPmFkX29mZnNldCA+PSBOREFERFIpCi0J CXBhbmljKCIlcyAlamQgIT0gbmV3ICVqZCB8fCBvbGQgc2l6ZSAlbGQgIT0gbmV3ICVsZCIs Ci0JCSAgICAiYWxsb2NkaXJlY3RfbWVyZ2U6IG9sZCBibGtubyIsCisJCVBBTklDKCJvbGQg Ymxrbm8gJWpkICE9IG5ldyAlamQgfHwgb2xkIHNpemUgJWxkICE9IG5ldyAlbGQiLAogCQkg ICAgKGludG1heF90KW5ld2FkcC0+YWRfb2xkYmxrbm8sCiAJCSAgICAoaW50bWF4X3Qpb2xk YWRwLT5hZF9uZXdibGtubywKIAkJICAgIG5ld2FkcC0+YWRfb2xkc2l6ZSwgb2xkYWRwLT5h ZF9uZXdzaXplKTsKQEAgLTUyNzcsNyArNTI2MSw3IEBAIGFsbG9jZGlyZWN0X21lcmdlKGFk cGhlYWQsIG5ld2FkcCwgb2xkYWRwKQogCWlmICgod2sgPSBMSVNUX0ZJUlNUKCZvbGRhZHAt PmFkX25ld2RpcmJsaykpICE9IE5VTEwpIHsKIAkJV09SS0xJU1RfUkVNT1ZFKHdrKTsKIAkJ aWYgKCFMSVNUX0VNUFRZKCZvbGRhZHAtPmFkX25ld2RpcmJsaykpCi0JCQlwYW5pYygiYWxs b2NkaXJlY3RfbWVyZ2U6IGV4dHJhIG5ld2RpcmJsayIpOworCQkJUEFOSUMoImV4dHJhIG5l d2RpcmJsayIpOwogCQlXT1JLTElTVF9JTlNFUlQoJm5ld2FkcC0+YWRfbmV3ZGlyYmxrLCB3 ayk7CiAJfQogCVRBSUxRX1JFTU9WRShhZHBoZWFkLCBvbGRhZHAsIGFkX25leHQpOwpAQCAt NTI5MCw3ICs1Mjc0LDcgQEAgYWxsb2NkaXJlY3RfbWVyZ2UoYWRwaGVhZCwgbmV3YWRwLCBv bGRhZHApCiAJICovCiAJaWYgKGZyZWVmcmFnID09IE5VTEwpIHsKIAkJaWYgKG9sZGFkcC0+ YWRfbmV3Ymxrbm8gIT0gbmV3YWRwLT5hZF9uZXdibGtubykKLQkJCXBhbmljKCJhbGxvY2Rp cmVjdF9tZXJnZTogJWpkICE9ICVqZCIsCisJCQlQQU5JQygiJWpkICE9ICVqZCIsCiAJCQkg ICAgb2xkYWRwLT5hZF9uZXdibGtubywgbmV3YWRwLT5hZF9uZXdibGtubyk7CiAJCW5ld2Fk cC0+YWRfYmxvY2submJfam5ld2JsayA9IChzdHJ1Y3Qgam5ld2JsayAqKQogCQkgICAgam5l d2Jsa19tZXJnZSgmbmV3YWRwLT5hZF9ibG9jay5uYl9qbmV3YmxrLT5qbl9saXN0LCAKQEAg LTUzNTQsNyArNTMzOCw3IEBAIG5ld2ZyZWVmcmFnKGlwLCBibGtubywgc2l6ZSwgbGJuKQog CSAgICBpcC0+aV9udW1iZXIsIGJsa25vLCBzaXplLCBsYm4pOwogCWZzID0gaXAtPmlfZnM7 CiAJaWYgKGZyYWdudW0oZnMsIGJsa25vKSArIG51bWZyYWdzKGZzLCBzaXplKSA+IGZzLT5m c19mcmFnKQotCQlwYW5pYygibmV3ZnJlZWZyYWc6IGZyYWcgc2l6ZSIpOworCQlQQU5JQygi ZnJhZyBzaXplIik7CiAJZnJlZWZyYWcgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBmcmVlZnJh ZyksCiAJICAgIE1fRlJFRUZSQUcsIE1fU09GVERFUF9GTEFHUyk7CiAJd29ya2l0ZW1fYWxs b2MoJmZyZWVmcmFnLT5mZl9saXN0LCBEX0ZSRUVGUkFHLCBVRlNUT1ZGUyhpcC0+aV91bXAp KTsKQEAgLTU0MDMsNyArNTM4Nyw3IEBAIGhhbmRsZV93b3JraXRlbV9mcmVlZnJhZyhmcmVl ZnJhZykKIAkgKi8KIAlpZiAoZnJlZWZyYWctPmZmX2pkZXApIHsKIAkJaWYgKGZyZWVmcmFn LT5mZl9qZGVwLT53a190eXBlICE9IERfSk5FV0JMSykKLQkJCXBhbmljKCJoYW5kbGVfd29y a2l0ZW1fZnJlZWZyYWc6IFVuZXhwZWN0ZWQgdHlwZSAlZFxuIiwKKwkJCVBBTklDKCJVbmV4 cGVjdGVkIHR5cGUgJWRcbiIsCiAJCQkgICAgZnJlZWZyYWctPmZmX2pkZXAtPndrX3R5cGUp OwogCQljYW5jZWxfam5ld2JsayhXS19KTkVXQkxLKGZyZWVmcmFnLT5mZl9qZGVwKSwgJndr aGQpOwogCX0KQEAgLTU0NDAsOCArNTQyNCw3IEBAIHNvZnRkZXBfc2V0dXBfYWxsb2NleHQo aXAsIG9mZiwgbmV3Ymxrbm8sIG9sZGJsa25vLCBuZXdzaXplLCBvbGRzaXplLCBicCkKIAl1 ZnNfbGJuX3QgbGJuOwogCiAJaWYgKG9mZiA+PSBOWEFERFIpCi0JCXBhbmljKCJzb2Z0ZGVw X3NldHVwX2FsbG9jZXh0OiBsYm4gJWxsZCA+IE5YQUREUiIsCi0JCSAgICAobG9uZyBsb25n KW9mZik7CisJCVBBTklDKCJsYm4gJWxsZCA+IE5YQUREUiIsIChsb25nIGxvbmcpb2ZmKTsK IAogCWxibiA9IGJwLT5iX2xibGtubzsKIAltcCA9IFVGU1RPVkZTKGlwLT5pX3VtcCk7CkBA IC01NDUyLDcgKzU0MzUsNyBAQCBzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0KGlwLCBvZmYsIG5l d2Jsa25vLCBvbGRibGtubywgbmV3c2l6ZSwgb2xkc2l6ZSwgYnApCiAKIAlBQ1FVSVJFX0xP Q0soJmxrKTsKIAlpZiAobmV3YmxrX2xvb2t1cChtcCwgbmV3Ymxrbm8sIDAsICZuZXdibGsp ID09IDApCi0JCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0OiBsb3N0IGJsb2NrIik7 CisJCVBBTklDKCJsb3N0IGJsb2NrIik7CiAJS0FTU0VSVChuZXdibGstPm5iX2xpc3Qud2tf dHlwZSA9PSBEX05FV0JMSywKIAkgICAgKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0OiBuZXdi bGsgYWxyZWFkeSBpbml0aWFsaXplZCIpKTsKIAkvKgpAQCAtNTUwOSw3ICs1NDkyLDcgQEAg c29mdGRlcF9zZXR1cF9hbGxvY2V4dChpcCwgb2ZmLCBuZXdibGtubywgb2xkYmxrbm8sIG5l d3NpemUsIG9sZHNpemUsIGJwKQogCQkJYnJlYWs7CiAJfQogCWlmIChvbGRhZHAgPT0gTlVM TCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2NleHQ6IGxvc3QgZW50cnkiKTsKKwkJ UEFOSUMoImxvc3QgZW50cnkiKTsKIAkvKiBpbnNlcnQgaW4gbWlkZGxlIG9mIGxpc3QgKi8K IAlUQUlMUV9JTlNFUlRfQkVGT1JFKG9sZGFkcCwgYWRwLCBhZF9uZXh0KTsKIAlpZiAob2xk YWRwLT5hZF9vZmZzZXQgPT0gb2ZmKQpAQCAtNTU2NCw3ICs1NTQ3LDcgQEAgbmV3YWxsb2Np bmRpcihpcCwgcHRybm8sIG5ld2Jsa25vLCBvbGRibGtubywgbGJuKQogCQlmcmVlZnJhZyA9 IE5VTEw7CiAJQUNRVUlSRV9MT0NLKCZsayk7CiAJaWYgKG5ld2Jsa19sb29rdXAoVUZTVE9W RlMoaXAtPmlfdW1wKSwgbmV3Ymxrbm8sIDAsICZuZXdibGspID09IDApCi0JCXBhbmljKCJu ZXdfYWxsb2NpbmRpcjogbG9zdCBibG9jayIpOworCQlQQU5JQygibG9zdCBibG9jayIpOwog CUtBU1NFUlQobmV3YmxrLT5uYl9saXN0LndrX3R5cGUgPT0gRF9ORVdCTEssCiAJICAgICgi bmV3YWxsb2NpbmRpcjogbmV3YmxrIGFscmVhZHkgaW5pdGlhbGl6ZWQiKSk7CiAJbmV3Ymxr LT5uYl9saXN0LndrX3R5cGUgPSBEX0FMTE9DSU5ESVI7CkBAIC01NjA2LDggKzU1ODksNyBA QCBzb2Z0ZGVwX3NldHVwX2FsbG9jaW5kaXJfcGFnZShpcCwgbGJuLCBicCwgcHRybm8sIG5l d2Jsa25vLCBvbGRibGtubywgbmJwKQogCWludCBkZmxhZ3M7CiAKIAlpZiAobGJuICE9IG5i cC0+Yl9sYmxrbm8pCi0JCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jaW5kaXJfcGFnZTog bGJuICVqZCAhPSBsYmxrbm8gJWpkIiwKLQkJICAgIGxibiwgYnAtPmJfbGJsa25vKTsKKwkJ UEFOSUMoImxibiAlamQgIT0gbGJsa25vICVqZCIsIGxibiwgYnAtPmJfbGJsa25vKTsKIAlD VFI0KEtUUl9TVUosCiAJICAgICJzb2Z0ZGVwX3NldHVwX2FsbG9jaW5kaXJfcGFnZTogaW5v ICVkIGJsa25vICVqZCBvbGRibGtubyAlamQgIgogCSAgICAibGJuICVqZCIsIGlwLT5pX251 bWJlciwgbmV3Ymxrbm8sIG9sZGJsa25vLCBsYm4pOwpAQCAtNTY2MSw3ICs1NjQzLDcgQEAg c29mdGRlcF9zZXR1cF9hbGxvY2luZGlyX21ldGEobmJwLCBpcCwgYnAsIHB0cm5vLCBuZXdi bGtubykKIAlpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgaXAtPmlfbnVt YmVyLCBkZmxhZ3MsICZpbm9kZWRlcCk7CiAJV09SS0xJU1RfSU5TRVJUKCZuYnAtPmJfZGVw LCAmYWlwLT5haV9ibG9jay5uYl9saXN0KTsKIAlpZiAoc2V0dXBfYWxsb2NpbmRpcl9waGFz ZTIoYnAsIGlwLCBpbm9kZWRlcCwgYWlwLCBsYm4pKQotCQlwYW5pYygic29mdGRlcF9zZXR1 cF9hbGxvY2luZGlyX21ldGE6IEJsb2NrIGFscmVhZHkgZXhpc3RlZCIpOworCQlQQU5JQygi QmxvY2sgYWxyZWFkeSBleGlzdGVkIik7CiAJRlJFRV9MT0NLKCZsayk7CiB9CiAKQEAgLTU3 MTQsNyArNTY5Niw3IEBAIGluZGlyZGVwX2xvb2t1cChtcCwgaXAsIGJwKQogCQlpZiAoaW5k aXJkZXAgIT0gTlVMTCAmJiBuZXdpbmRpcmRlcCA9PSBOVUxMKQogCQkJcmV0dXJuIChpbmRp cmRlcCk7CiAJCWlmIChpbmRpcmRlcCAhPSBOVUxMICYmIG5ld2luZGlyZGVwICE9IE5VTEwp Ci0JCQlwYW5pYygiaW5kaXJkZXBfbG9va3VwOiBzaW11bHRhbmVvdXMgY3JlYXRlIik7CisJ CQlQQU5JQygic2ltdWx0YW5lb3VzIGNyZWF0ZSIpOwogCQkvKiBOb25lIGZvdW5kIG9uIHRo ZSBidWZmZXIgYW5kIGEgbmV3IHN0cnVjdHVyZSBpcyByZWFkeS4gKi8KIAkJaWYgKGluZGly ZGVwID09IE5VTEwgJiYgbmV3aW5kaXJkZXAgIT0gTlVMTCkKIAkJCWJyZWFrOwpAQCAtNTc4 Miw3ICs1NzY0LDcgQEAgc2V0dXBfYWxsb2NpbmRpcl9waGFzZTIoYnAsIGlwLCBpbm9kZWRl cCwgYWlwLCBsYm4pCiAJbXAgPSBVRlNUT1ZGUyhpcC0+aV91bXApOwogCWZzID0gaXAtPmlf ZnM7CiAJaWYgKGJwLT5iX2xibGtubyA+PSAwKQotCQlwYW5pYygic2V0dXBfYWxsb2NpbmRp cl9waGFzZTI6IG5vdCBpbmRpciBibGsiKTsKKwkJUEFOSUMoIm5vdCBpbmRpciBibGsiKTsK IAlLQVNTRVJUKGFpcC0+YWlfb2Zmc2V0ID49IDAgJiYgYWlwLT5haV9vZmZzZXQgPCBOSU5E SVIoZnMpLAogCSAgICAoInNldHVwX2FsbG9jaW5kaXJfcGhhc2UyOiBCYWQgb2Zmc2V0ICVk IiwgYWlwLT5haV9vZmZzZXQpKTsKIAlpbmRpcmRlcCA9IGluZGlyZGVwX2xvb2t1cChtcCwg aXAsIGJwKTsKQEAgLTU4MjcsNyArNTgwOSw3IEBAIGFsbG9jaW5kaXJfbWVyZ2UoYWlwLCBv bGRhaXApCiAJc3RydWN0IHdvcmtsaXN0ICp3azsKIAogCWlmIChvbGRhaXAtPmFpX25ld2Js a25vICE9IGFpcC0+YWlfb2xkYmxrbm8pCi0JCXBhbmljKCJhbGxvY2luZGlyX21lcmdlOiBi bGtubyIpOworCQlQQU5JQygiYmxrbm8iKTsKIAlhaXAtPmFpX29sZGJsa25vID0gb2xkYWlw LT5haV9vbGRibGtubzsKIAlmcmVlZnJhZyA9IGFpcC0+YWlfZnJlZWZyYWc7CiAJYWlwLT5h aV9mcmVlZnJhZyA9IG9sZGFpcC0+YWlfZnJlZWZyYWc7CkBAIC01ODQwLDcgKzU4MjIsNyBA QCBhbGxvY2luZGlyX21lcmdlKGFpcCwgb2xkYWlwKQogCWlmICgod2sgPSBMSVNUX0ZJUlNU KCZvbGRhaXAtPmFpX25ld2RpcmJsaykpICE9IE5VTEwpIHsKIAkJV09SS0xJU1RfUkVNT1ZF KHdrKTsKIAkJaWYgKCFMSVNUX0VNUFRZKCZvbGRhaXAtPmFpX25ld2RpcmJsaykpCi0JCQlw YW5pYygiYWxsb2NpbmRpcl9tZXJnZTogZXh0cmEgbmV3ZGlyYmxrIik7CisJCQlQQU5JQygi ZXh0cmEgbmV3ZGlyYmxrIik7CiAJCVdPUktMSVNUX0lOU0VSVCgmYWlwLT5haV9uZXdkaXJi bGssIHdrKTsKIAl9CiAJLyoKQEAgLTYwMzYsNyArNjAxOCw3IEBAIHNldHVwX3RydW5jX2lu ZGlyKGZyZWVibGtzLCBpcCwgbGJuLCBsYXN0bGJuLCBibGtubykKIAlBQ1FVSVJFX0xPQ0so JmxrKTsKIAlpbmRpcmRlcCA9IGluZGlyZGVwX2xvb2t1cChtcCwgaXAsIGJwKTsKIAlpZiAo aW5kaXJkZXAtPmlyX2ZyZWVibGtzKQotCQlwYW5pYygic2V0dXBfdHJ1bmNfaW5kaXI6IGlu ZGlyZGVwIGFscmVhZHkgdHJ1bmNhdGVkLiIpOworCQlQQU5JQygiaW5kaXJkZXAgYWxyZWFk eSB0cnVuY2F0ZWQuIik7CiAJVEFJTFFfSU5TRVJUX1RBSUwoJmluZGlyZGVwLT5pcl90cnVu YywgZnJlZXdvcmssIGZ3X25leHQpOwogCWZyZWV3b3JrLT5md19pbmRpciA9IGluZGlyZGVw OwogCS8qCkBAIC02NDE2LDcgKzYzOTgsNyBAQCBzb2Z0ZGVwX2pvdXJuYWxfZnJlZWJsb2Nr cyhpcCwgY3JlZCwgbGVuZ3RoLCBmbGFncykKIAlBQ1FVSVJFX0xPQ0soJmxrKTsKIAkodm9p ZCkgaW5vZGVkZXBfbG9va3VwKG1wLCBpcC0+aV9udW1iZXIsIGRmbGFncywgJmlub2RlZGVw KTsKIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAmIElPU1RBUlRFRCkgIT0gMCkKLQkJcGFu aWMoInNvZnRkZXBfc2V0dXBfZnJlZWJsb2NrczogaW5vZGUgYnVzeSIpOworCQlQQU5JQygi aW5vZGUgYnVzeSIpOwogCS8qCiAJICogQWRkIHRoZSBmcmVlYmxrcyBzdHJ1Y3R1cmUgdG8g dGhlIGxpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0CiAJICogbXVzdCBhd2FpdCB0aGUgemVybydl ZCBpbm9kZSBiZWluZyB3cml0dGVuIHRvIGRpc2suIElmIHdlCkBAIC02NjA0LDcgKzY1ODYs NyBAQCBzb2Z0ZGVwX3NldHVwX2ZyZWVibG9ja3MoaXAsIGxlbmd0aCwgZmxhZ3MpCiAJZnMg PSBpcC0+aV9mczsKIAltcCA9IFVGU1RPVkZTKGlwLT5pX3VtcCk7CiAJaWYgKGxlbmd0aCAh PSAwKQotCQlwYW5pYygic29mdGRlcF9zZXR1cF9mcmVlYmxvY2tzOiBub24temVybyBsZW5n dGgiKTsKKwkJUEFOSUMoIm5vbi16ZXJvIGxlbmd0aCIpOwogCWZyZWVibGtzID0gbmV3ZnJl ZWJsa3MobXAsIGlwKTsKIAlleHRibG9ja3MgPSAwOwogCWRhdGFibG9ja3MgPSAwOwpAQCAt NjY2Nyw3ICs2NjQ5LDcgQEAgc29mdGRlcF9zZXR1cF9mcmVlYmxvY2tzKGlwLCBsZW5ndGgs IGZsYWdzKQogCQlkZmxhZ3MgfD0gTk9ERUxBWTsKIAkodm9pZCkgaW5vZGVkZXBfbG9va3Vw KG1wLCBpcC0+aV9udW1iZXIsIGRmbGFncywgJmlub2RlZGVwKTsKIAlpZiAoKGlub2RlZGVw LT5pZF9zdGF0ZSAmIElPU1RBUlRFRCkgIT0gMCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBf ZnJlZWJsb2NrczogaW5vZGUgYnVzeSIpOworCQlQQU5JQygiaW5vZGUgYnVzeSIpOwogCS8q CiAJICogQWRkIHRoZSBmcmVlYmxrcyBzdHJ1Y3R1cmUgdG8gdGhlIGxpc3Qgb2Ygb3BlcmF0 aW9ucyB0aGF0CiAJICogbXVzdCBhd2FpdCB0aGUgemVybydlZCBpbm9kZSBiZWluZyB3cml0 dGVuIHRvIGRpc2suIElmIHdlCkBAIC02OTUxLDEyICs2OTMzLDEyIEBAIGNhbmNlbF9wYWdl ZGVwKHBhZ2VkZXAsIGZyZWVibGtzLCBibGtvZmYpCiAKIAkJTElTVF9GT1JFQUNIKGRhcCwg JnBhZ2VkZXAtPnBkX3BlbmRpbmdoZCwgZGFfcGRsaXN0KQogCQkJaWYgKGRhcC0+ZGFfb2Zm c2V0ID4gYmxrb2ZmKQotCQkJCXBhbmljKCJjYW5jZWxfcGFnZWRlcDogZGlyYWRkICVwIG9m ZiAlZCA+ICVkIiwKKwkJCQlQQU5JQygiZGlyYWRkICVwIG9mZiAlZCA+ICVkIiwKIAkJCQkg ICAgZGFwLCBkYXAtPmRhX29mZnNldCwgYmxrb2ZmKTsKIAkJZm9yIChpID0gMDsgaSA8IERB SEFTSFNaOyBpKyspCiAJCQlMSVNUX0ZPUkVBQ0goZGFwLCAmcGFnZWRlcC0+cGRfZGlyYWRk aGRbaV0sIGRhX3BkbGlzdCkKIAkJCQlpZiAoZGFwLT5kYV9vZmZzZXQgPiBibGtvZmYpCi0J CQkJCXBhbmljKCJjYW5jZWxfcGFnZWRlcDogZGlyYWRkICVwIG9mZiAlZCA+ICVkIiwKKwkJ CQkJUEFOSUMoImRpcmFkZCAlcCBvZmYgJWQgPiAlZCIsCiAJCQkJCSAgICBkYXAsIGRhcC0+ ZGFfb2Zmc2V0LCBibGtvZmYpOwogCQlyZXR1cm4gKDApOwogCX0KQEAgLTY5NzMsNyArNjk1 NSw3IEBAIGNhbmNlbF9wYWdlZGVwKHBhZ2VkZXAsIGZyZWVibGtzLCBibGtvZmYpCiAJaWYg KChwYWdlZGVwLT5wZF9zdGF0ZSAmIE5FV0JMT0NLKSAhPSAwKQogCQlmcmVlX25ld2RpcmJs ayhwYWdlZGVwLT5wZF9uZXdkaXJibGspOwogCWlmIChmcmVlX3BhZ2VkZXAocGFnZWRlcCkg PT0gMCkKLQkJcGFuaWMoIkZhaWxlZCB0byBmcmVlIHBhZ2VkZXAgJXAiLCBwYWdlZGVwKTsK KwkJUEFOSUMoIkZhaWxlZCB0byBmcmVlIHBhZ2VkZXAgJXAiLCBwYWdlZGVwKTsKIAlyZXR1 cm4gKDApOwogfQogCkBAIC03MDAyLDcgKzY5ODQsNyBAQCBkZWFsbG9jYXRlX2RlcGVuZGVu Y2llcyhicCwgZnJlZWJsa3MsIG9mZikKIAkJCWluZGlyZGVwID0gV0tfSU5ESVJERVAod2sp OwogCQkJaWYgKGJwLT5iX2xibGtubyA+PSAwIHx8CiAJCQkgICAgYnAtPmJfYmxrbm8gIT0g aW5kaXJkZXAtPmlyX3NhdmVicC0+Yl9sYmxrbm8pCi0JCQkJcGFuaWMoImRlYWxsb2NhdGVf ZGVwZW5kZW5jaWVzOiBub3QgaW5kaXIiKTsKKwkJCQlQQU5JQygibm90IGluZGlyIik7CiAJ CQljYW5jZWxfaW5kaXJkZXAoaW5kaXJkZXAsIGJwLCBmcmVlYmxrcyk7CiAJCQljb250aW51 ZTsKIApAQCAtNzA0MCw4ICs3MDIyLDcgQEAgZGVhbGxvY2F0ZV9kZXBlbmRlbmNpZXMoYnAs IGZyZWVibGtzLCBvZmYpCiAJCQkJY29udGludWU7CiAJCQkvKiBGQUxMVEhST1VHSCAqLwog CQlkZWZhdWx0OgotCQkJcGFuaWMoImRlYWxsb2NhdGVfZGVwZW5kZW5jaWVzOiBVbmV4cGVj dGVkIHR5cGUgJXMiLAotCQkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CisJCQlQQU5J QygiVW5leHBlY3RlZCB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJCS8q IE5PVFJFQUNIRUQgKi8KIAkJfQogCX0KQEAgLTcwOTAsNyArNzA3MSw3IEBAIGNhbmNlbF9h bGxvY2RpcmVjdChhZHBoZWFkLCBhZHAsIGZyZWVibGtzKQogCQkJYnJlYWs7CiAJfQogCWlm IChmcmVld29yayA9PSBOVUxMKQotCQlwYW5pYygiY2FuY2VsX2FsbG9jZGlyZWN0OiBGcmVl d29yayBub3QgZm91bmQiKTsKKwkJUEFOSUMoIkZyZWV3b3JrIG5vdCBmb3VuZCIpOwogCS8q CiAJICogSWYgYSBuZXdibGsgZXhpc3RzIGF0IGFsbCB3ZSBzdGlsbCBoYXZlIHRoZSBqb3Vy bmFsIGVudHJ5IHRoYXQKIAkgKiBpbml0aWF0ZWQgdGhlIGFsbG9jYXRpb24gc28gd2UgZG8g bm90IG5lZWQgdG8gam91cm5hbCB0aGUgZnJlZS4KQEAgLTcxNjMsNyArNzE0NCw3IEBAIGNh bmNlbF9uZXdibGsobmV3YmxrLCB3aywgd2toZCkKIAlpZiAoKHdrID0gTElTVF9GSVJTVCgm bmV3YmxrLT5uYl9uZXdkaXJibGspKSAhPSBOVUxMKQogCQlmcmVlX25ld2RpcmJsayhXS19O RVdESVJCTEsod2spKTsKIAlpZiAoIUxJU1RfRU1QVFkoJm5ld2Jsay0+bmJfbmV3ZGlyYmxr KSkKLQkJcGFuaWMoImNhbmNlbF9uZXdibGs6IGV4dHJhIG5ld2RpcmJsayIpOworCQlQQU5J QygiZXh0cmEgbmV3ZGlyYmxrIik7CiAKIAlyZXR1cm4gKGpuZXdibGspOwogfQpAQCAtNzIx MSw3ICs3MTkyLDcgQEAgZnJlZV9uZXdibGsobmV3YmxrKQogCWlmICgod2sgPSBMSVNUX0ZJ UlNUKCZuZXdibGstPm5iX25ld2RpcmJsaykpICE9IE5VTEwpCiAJCWZyZWVfbmV3ZGlyYmxr KFdLX05FV0RJUkJMSyh3aykpOwogCWlmICghTElTVF9FTVBUWSgmbmV3YmxrLT5uYl9uZXdk aXJibGspKQotCQlwYW5pYygiZnJlZV9uZXdibGs6IGV4dHJhIG5ld2RpcmJsayIpOworCQlQ QU5JQygiZXh0cmEgbmV3ZGlyYmxrIik7CiAJd2hpbGUgKChpbmRpcmRlcCA9IExJU1RfRklS U1QoJm5ld2Jsay0+bmJfaW5kaXJkZXBzKSkgIT0gTlVMTCkKIAkJaW5kaXJkZXBfY29tcGxl dGUoaW5kaXJkZXApOwogCWhhbmRsZV9qd29yaygmbmV3YmxrLT5uYl9qd29yayk7CkBAIC03 Mzk4LDcgKzczNzksNyBAQCBjaGVja19pbm9kZV91bndyaXR0ZW4oaW5vZGVkZXApCiAJCWlu b2RlZGVwLT5pZF9zYXZlZGlubzEgPSBOVUxMOwogCX0KIAlpZiAoZnJlZV9pbm9kZWRlcChp bm9kZWRlcCkgPT0gMCkKLQkJcGFuaWMoImNoZWNrX2lub2RlX3Vud3JpdHRlbjogYnVzeSBp bm9kZSIpOworCQlQQU5JQygiYnVzeSBpbm9kZSIpOwogCXJldHVybiAoMSk7CiB9CiAKQEAg LTc2NTYsOCArNzYzNyw3IEBAIGhhbmRsZV93b3JraXRlbV9mcmVlYmxvY2tzKGZyZWVibGtz LCBmbGFncykKIAkJCQlmcmVld29ya19mcmVlYmxvY2soZnJlZXdvcmspOwogCQkJY29udGlu dWU7CiAJCWRlZmF1bHQ6Ci0JCQlwYW5pYygiaGFuZGxlX3dvcmtpdGVtX2ZyZWVibG9ja3M6 IFVua25vd24gdHlwZSAlcyIsCi0JCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJ CVBBTklDKCJVbmtub3duIHR5cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQl9 CiAJfQogCWlmIChmcmVlYmxrcy0+ZmJfcmVmICE9IDApIHsKQEAgLTc4MzAsOCArNzgxMCw3 IEBAIGluZGlyX3RydW5jKGZyZWV3b3JrLCBkYm4sIGxibikKIAkJaW5kaXJkZXAgPSBmcmVl d29yay0+ZndfaW5kaXI7CiAJCWJwID0gaW5kaXJkZXAtPmlyX3NhdmVicDsKIAkJaWYgKGJw ID09IE5VTEwgfHwgYnAtPmJfYmxrbm8gIT0gZGJuKQotCQkJcGFuaWMoImluZGlyX3RydW5j OiBCYWQgc2F2ZWQgYnVmICVwIGJsa25vICVqZCIsCi0JCQkgICAgYnAsIChpbnRtYXhfdClk Ym4pOworCQkJUEFOSUMoIkJhZCBzYXZlZCBidWYgJXAgYmxrbm8gJWpkIiwgYnAsIChpbnRt YXhfdClkYm4pOwogCX0gZWxzZSBpZiAoKGJwID0gaW5jb3JlKCZmcmVlYmxrcy0+ZmJfZGV2 dnAtPnZfYnVmb2JqLCBkYm4pKSAhPSBOVUxMKSB7CiAJCS8qCiAJCSAqIFRoZSBsb2NrIHBy ZXZlbnRzIHRoZSBidWYgZGVwIGxpc3QgZnJvbSBjaGFuZ2luZyBhbmQKQEAgLTc4MzksOCAr NzgxOCw3IEBAIGluZGlyX3RydW5jKGZyZWV3b3JrLCBkYm4sIGxibikKIAkJICovCiAJCWlu ZGlyZGVwID0gV0tfSU5ESVJERVAoTElTVF9GSVJTVCgmYnAtPmJfZGVwKSk7CiAJCWlmIChp bmRpcmRlcCA9PSBOVUxMIHx8IChpbmRpcmRlcC0+aXJfc3RhdGUgJiBHT0lOR0FXQVkpID09 IDApCi0JCQlwYW5pYygiaW5kaXJfdHJ1bmM6IEJhZCBpbmRpcmRlcCAlcCBmcm9tIGJ1ZiAl cCIsCi0JCQkgICAgaW5kaXJkZXAsIGJwKTsKKwkJCVBBTklDKCJCYWQgaW5kaXJkZXAgJXAg ZnJvbSBidWYgJXAiLCBpbmRpcmRlcCwgYnApOwogCX0gZWxzZSBpZiAoYnJlYWQoZnJlZWJs a3MtPmZiX2RldnZwLCBkYm4sIChpbnQpZnMtPmZzX2JzaXplLAogCSAgICBOT0NSRUQsICZi cCkgIT0gMCkgewogCQlicmVsc2UoYnApOwpAQCAtODA5NywxNCArODA3NSwxNCBAQCBzZXR1 cF9uZXdkaXIoZGFwLCBuZXdpbnVtLCBkaW51bSwgbmV3ZGlyYnAsIG1rZGlycCkKIAkgKiBi bG9jayBpcyByZWFjaGFibGUgdmlhIHRoZSBpbm9kZS4KIAkgKi8KIAlpZiAocGFnZWRlcF9s b29rdXAobXAsIG5ld2RpcmJwLCBuZXdpbnVtLCAwLCAwLCAmcGFnZWRlcCkgPT0gMCkKLQkJ cGFuaWMoInNldHVwX25ld2RpcjogbG9zdCBwYWdlZGVwIik7CisJCVBBTklDKCJsb3N0IHBh Z2VkZXAiKTsKIAlMSVNUX0ZPUkVBQ0god2ssICZuZXdkaXJicC0+Yl9kZXAsIHdrX2xpc3Qp CiAJCWlmICh3ay0+d2tfdHlwZSA9PSBEX0FMTE9DRElSRUNUKQogCQkJYnJlYWs7CiAJaWYg KHdrID09IE5VTEwpCi0JCXBhbmljKCJzZXR1cF9uZXdkaXI6IGxvc3QgYWxsb2NkaXJlY3Qi KTsKKwkJUEFOSUMoImxvc3QgYWxsb2NkaXJlY3QiKTsKIAlpZiAocGFnZWRlcC0+cGRfc3Rh dGUgJiBORVdCTE9DSykKLQkJcGFuaWMoInNldHVwX25ld2RpcjogTkVXQkxPQ0sgYWxyZWFk eSBzZXQiKTsKKwkJUEFOSUMoIk5FV0JMT0NLIGFscmVhZHkgc2V0Iik7CiAJbmV3YmxrID0g V0tfTkVXQkxLKHdrKTsKIAlwYWdlZGVwLT5wZF9zdGF0ZSB8PSBORVdCTE9DSzsKIAlwYWdl ZGVwLT5wZF9uZXdkaXJibGsgPSBuZXdkaXJibGs7CkBAIC04MTIxLDcgKzgwOTksNyBAQCBz ZXR1cF9uZXdkaXIoZGFwLCBuZXdpbnVtLCBkaW51bSwgbmV3ZGlyYnAsIG1rZGlycCkKIAlp bm9kZWRlcF9sb29rdXAobXAsIGRpbnVtLCAwLCAmaW5vZGVkZXApOwogCWlmIChNT1VOVEVE U1VKKG1wKSkgewogCQlpZiAoaW5vZGVkZXAgPT0gTlVMTCkKLQkJCXBhbmljKCJzZXR1cF9u ZXdkaXI6IExvc3QgcGFyZW50LiIpOworCQkJUEFOSUMoIkxvc3QgcGFyZW50LiIpOwogCQlq YWRkcmVmID0gKHN0cnVjdCBqYWRkcmVmICopVEFJTFFfTEFTVCgmaW5vZGVkZXAtPmlkX2lu b3JlZmxzdCwKIAkJICAgIGlub3JlZmxzdCk7CiAJCUtBU1NFUlQoamFkZHJlZiAhPSBOVUxM ICYmIGphZGRyZWYtPmphX3BhcmVudCA9PSBuZXdpbnVtICYmCkBAIC04MjM2LDcgKzgyMTQs NyBAQCBzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9hZGQoYnAsIGRwLCBkaXJvZmZzZXQsIG5l d2ludW0sIG5ld2RpcmJwLCBpc25ld2JsaykKIAlwYWdlZGVwX2xvb2t1cChtcCwgYnAsIGRw LT5pX251bWJlciwgbGJuLCBERVBBTExPQywgJnBhZ2VkZXApOwogI2lmZGVmIERFQlVHCiAJ aWYgKGRpcmFkZF9sb29rdXAocGFnZWRlcCwgb2Zmc2V0KSAhPSBOVUxMKQotCQlwYW5pYygi c29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRkOiAlcCBhbHJlYWR5IGF0IG9mZiAlZFxuIiwK KwkJUEFOSUMoIiVwIGFscmVhZHkgYXQgb2ZmICVkXG4iLAogCQkgICAgZGlyYWRkX2xvb2t1 cChwYWdlZGVwLCBvZmZzZXQpLCBvZmZzZXQpOwogI2VuZGlmCiAJZGFwLT5kYV9wYWdlZGVw ID0gcGFnZWRlcDsKQEAgLTgyOTYsNyArODI3NCw3IEBAIHNvZnRkZXBfc2V0dXBfZGlyZWN0 b3J5X2FkZChicCwgZHAsIGRpcm9mZnNldCwgbmV3aW51bSwgbmV3ZGlyYnAsIGlzbmV3Ymxr KQogCSAqLwogCWlmIChta2RpcjEgIT0gTlVMTCkgewogCQlpZiAoaW5vZGVkZXAtPmlkX21r ZGlyYWRkICE9IE5VTEwpCi0JCQlwYW5pYygic29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRk OiBFeGlzdGluZyBta2RpciIpOworCQkJUEFOSUMoIkV4aXN0aW5nIG1rZGlyIik7CiAJCWlu b2RlZGVwLT5pZF9ta2RpcmFkZCA9IGRhcDsKIAl9IGVsc2UgaWYgKGlub2RlZGVwLT5pZF9t a2RpcmFkZCkKIAkJbWVyZ2VfZGlyYWRkKGlub2RlZGVwLCBkYXApOwpAQCAtODMxMiw3ICs4 MjkwLDcgQEAgc29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRkKGJwLCBkcCwgZGlyb2Zmc2V0 LCBuZXdpbnVtLCBuZXdkaXJicCwgaXNuZXdibGspCiAJCX0KIAkJaWYgKG5ld2Jsa19sb29r dXAobXAsIGRidG9mc2IoZnMsIGJwLT5iX2Jsa25vKSwgMCwgJm5ld2JsaykKIAkJICAgID09 IDApCi0JCQlwYW5pYygic29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRkOiBsb3N0IGVudHJ5 Iik7CisJCQlQQU5JQygibG9zdCBlbnRyeSIpOwogCQlXT1JLTElTVF9JTlNFUlQoJm5ld2Js ay0+bmJfbmV3ZGlyYmxrLCAmbmV3ZGlyYmxrLT5kYl9saXN0KTsKIAkJcGFnZWRlcC0+cGRf c3RhdGUgfD0gTkVXQkxPQ0s7CiAJCXBhZ2VkZXAtPnBkX25ld2RpcmJsayA9IG5ld2RpcmJs azsKQEAgLTg0MzAsNyArODQwOCw3IEBAIG1lcmdlX2RpcmFkZChpbm9kZWRlcCwgbmV3ZGFw KQogCQkJCWJyZWFrOwogCQl9CiAJCWlmICgob2xkZGFwLT5kYV9zdGF0ZSAmIChNS0RJUl9Q QVJFTlQgfCBNS0RJUl9CT0RZKSkgIT0gMCkKLQkJCXBhbmljKCJtZXJnZV9kaXJhZGQ6IHVu Zm91bmQgcmVmIik7CisJCQlQQU5JQygidW5mb3VuZCByZWYiKTsKIAl9CiAJLyoKIAkgKiBB bnkgbWtkaXIgcmVsYXRlZCBqb3VybmFsIGl0ZW1zIGFyZSBub3Qgc2FmZSB0byBiZSBmcmVl ZCB1bnRpbApAQCAtODU4NywxMyArODU2NSwxMyBAQCBmcmVlX2RpcmFkZChkYXAsIHdraGQp CiAJCQlpZiAobWtkaXItPm1kX3N0YXRlICYgT05XT1JLTElTVCkKIAkJCQlXT1JLTElTVF9S RU1PVkUoJm1rZGlyLT5tZF9saXN0KTsKIAkJCWlmIChta2Rpci0+bWRfamFkZHJlZiAhPSBO VUxMKQotCQkJCXBhbmljKCJmcmVlX2RpcmFkZDogVW5leHBlY3RlZCBqYWRkcmVmIik7CisJ CQkJUEFOSUMoIlVuZXhwZWN0ZWQgamFkZHJlZiIpOwogCQkJV09SS0lURU1fRlJFRShta2Rp ciwgRF9NS0RJUik7CiAJCQlpZiAoKGRhcC0+ZGFfc3RhdGUgJiAoTUtESVJfUEFSRU5UIHwg TUtESVJfQk9EWSkpID09IDApCiAJCQkJYnJlYWs7CiAJCX0KIAkJaWYgKChkYXAtPmRhX3N0 YXRlICYgKE1LRElSX1BBUkVOVCB8IE1LRElSX0JPRFkpKSAhPSAwKQotCQkJcGFuaWMoImZy ZWVfZGlyYWRkOiB1bmZvdW5kIHJlZiIpOworCQkJUEFOSUMoInVuZm91bmQgcmVmIik7CiAJ fQogCWlmIChpbm9kZWRlcCkKIAkJZnJlZV9pbm9kZWRlcChpbm9kZWRlcCk7CkBAIC04NjQ0 LDcgKzg2MjIsNyBAQCBzb2Z0ZGVwX3NldHVwX3JlbW92ZShicCwgZHAsIGlwLCBpc3JtZGly KQogCSAqLwogCWlmIChpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgaXAt PmlfbnVtYmVyLCAwLAogCSAgICAmaW5vZGVkZXApID09IDApCi0JCXBhbmljKCJzb2Z0ZGVw X3NldHVwX3JlbW92ZTogTG9zdCBpbm9kZWRlcC4iKTsKKwkJUEFOSUMoIkxvc3QgaW5vZGVk ZXAuIik7CiAJS0FTU0VSVCgoaW5vZGVkZXAtPmlkX3N0YXRlICYgVU5MSU5LRUQpID09IDAs ICgiaW5vZGUgdW5saW5rZWQiKSk7CiAJZGlycmVtLT5kbV9zdGF0ZSB8PSBPTkRFUExJU1Q7 CiAJTElTVF9JTlNFUlRfSEVBRCgmaW5vZGVkZXAtPmlkX2RpcnJlbWhkLCBkaXJyZW0sIGRt X2lub25leHQpOwpAQCAtODc1NiwxMyArODczNCwxMyBAQCBjYW5jZWxfbWtkaXJfZG90ZG90 KGlwLCBkaXJyZW0sIGpyZW1yZWYpCiAJCWlmIChta2Rpci0+bWRfZGlyYWRkID09IGRhcCAm JiBta2Rpci0+bWRfc3RhdGUgJiBNS0RJUl9QQVJFTlQpCiAJCQlicmVhazsKIAlpZiAobWtk aXIgPT0gTlVMTCkKLQkJcGFuaWMoImNhbmNlbF9ta2Rpcl9kb3Rkb3Q6IFVuYWJsZSB0byBm aW5kIG1rZGlyXG4iKTsKKwkJUEFOSUMoIlVuYWJsZSB0byBmaW5kIG1rZGlyXG4iKTsKIAlp ZiAoKGphZGRyZWYgPSBta2Rpci0+bWRfamFkZHJlZikgIT0gTlVMTCkgewogCQlta2Rpci0+ bWRfamFkZHJlZiA9IE5VTEw7CiAJCWphZGRyZWYtPmphX3N0YXRlICY9IH5NS0RJUl9QQVJF TlQ7CiAJCWlmIChpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgamFkZHJl Zi0+amFfaW5vLCAwLAogCQkgICAgJmlub2RlZGVwKSA9PSAwKQotCQkJcGFuaWMoImNhbmNl bF9ta2Rpcl9kb3Rkb3Q6IExvc3QgcGFyZW50IGlub2RlZGVwIik7CisJCQlQQU5JQygiTG9z dCBwYXJlbnQgaW5vZGVkZXAiKTsKIAkJaWYgKGNhbmNlbF9qYWRkcmVmKGphZGRyZWYsIGlu b2RlZGVwLCAmZGlycmVtLT5kbV9qd29yaykpIHsKIAkJCWpvdXJuYWxfanJlbXJlZihkaXJy ZW0sIGpyZW1yZWYsIGlub2RlZGVwKTsKIAkJCWpyZW1yZWYgPSBOVUxMOwpAQCAtODc4NSw3 ICs4NzYzLDcgQEAgam91cm5hbF9qcmVtcmVmKGRpcnJlbSwganJlbXJlZiwgaW5vZGVkZXAp CiAJaWYgKGlub2RlZGVwID09IE5VTEwpCiAJCWlmIChpbm9kZWRlcF9sb29rdXAoanJlbXJl Zi0+anJfbGlzdC53a19tcCwKIAkJICAgIGpyZW1yZWYtPmpyX3JlZi5pZl9pbm8sIDAsICZp bm9kZWRlcCkgPT0gMCkKLQkJCXBhbmljKCJqb3VybmFsX2pyZW1yZWY6IExvc3QgaW5vZGVk ZXAiKTsKKwkJCVBBTklDKCJMb3N0IGlub2RlZGVwIik7CiAJTElTVF9JTlNFUlRfSEVBRCgm ZGlycmVtLT5kbV9qcmVtcmVmaGQsIGpyZW1yZWYsIGpyX2RlcHMpOwogCVRBSUxRX0lOU0VS VF9UQUlMKCZpbm9kZWRlcC0+aWRfaW5vcmVmbHN0LCAmanJlbXJlZi0+anJfcmVmLCBpZl9k ZXBzKTsKIAlhZGRfdG9fam91cm5hbCgmanJlbXJlZi0+anJfbGlzdCk7CkBAIC04ODAzLDcg Kzg3ODEsNyBAQCBkaXJyZW1fam91cm5hbChkaXJyZW0sIGpyZW1yZWYsIGRvdHJlbXJlZiwg ZG90ZG90cmVtcmVmKQogCiAJaWYgKGlub2RlZGVwX2xvb2t1cChqcmVtcmVmLT5qcl9saXN0 LndrX21wLCBqcmVtcmVmLT5qcl9yZWYuaWZfaW5vLCAwLAogCSAgICAmaW5vZGVkZXApID09 IDApCi0JCXBhbmljKCJkaXJyZW1fam91cm5hbDogTG9zdCBpbm9kZWRlcCIpOworCQlQQU5J QygiTG9zdCBpbm9kZWRlcCIpOwogCWpvdXJuYWxfanJlbXJlZihkaXJyZW0sIGpyZW1yZWYs IGlub2RlZGVwKTsKIAlpZiAoZG90cmVtcmVmKQogCQlqb3VybmFsX2pyZW1yZWYoZGlycmVt LCBkb3RyZW1yZWYsIGlub2RlZGVwKTsKQEAgLTg4MzcsNyArODgxNSw3IEBAIG5ld2RpcnJl bShicCwgZHAsIGlwLCBpc3JtZGlyLCBwcmV2ZGlycmVtcCkKIAkgKiBXaGl0ZW91dHMgaGF2 ZSBubyBkZWxldGlvbiBkZXBlbmRlbmNpZXMuCiAJICovCiAJaWYgKGlwID09IE5VTEwpCi0J CXBhbmljKCJuZXdkaXJyZW06IHdoaXRlb3V0Iik7CisJCVBBTklDKCJ3aGl0ZW91dCIpOwog CWR2cCA9IElUT1YoZHApOwogCS8qCiAJICogSWYgd2UgYXJlIG92ZXIgb3VyIGxpbWl0LCB0 cnkgdG8gaW1wcm92ZSB0aGUgc2l0dWF0aW9uLgpAQCAtODg5Miw3ICs4ODcwLDcgQEAgbmV3 ZGlycmVtKGJwLCBkcCwgaXAsIGlzcm1kaXIsIHByZXZkaXJyZW1wKQogCSAqLwogCWlmIChk cC0+aV9vZmZzZXQgPT0gRE9URE9UX09GRlNFVCkgewogCQlpZiAoaXNybWRpcikKLQkJCXBh bmljKCJuZXdkaXJyZW06IC4uIGRpcmVjdG9yeSBjaGFuZ2UgZHVyaW5nIHJlbW92ZT8iKTsK KwkJCVBBTklDKCIuLiBkaXJlY3RvcnkgY2hhbmdlIGR1cmluZyByZW1vdmU/Iik7CiAJCWpy ZW1yZWYgPSBjYW5jZWxfbWtkaXJfZG90ZG90KGRwLCBkaXJyZW0sIGpyZW1yZWYpOwogCX0K IAkvKgpAQCAtODkyMiw5ICs4OTAwLDkgQEAgbmV3ZGlycmVtKGJwLCBkcCwgaXAsIGlzcm1k aXIsIHByZXZkaXJyZW1wKQogCSAqIE11c3QgYmUgQVRUQUNIRUQgYXQgdGhpcyBwb2ludC4K IAkgKi8KIAlpZiAoKGRhcC0+ZGFfc3RhdGUgJiBBVFRBQ0hFRCkgPT0gMCkKLQkJcGFuaWMo Im5ld2RpcnJlbTogbm90IEFUVEFDSEVEIik7CisJCVBBTklDKCJub3QgQVRUQUNIRUQiKTsK IAlpZiAoZGFwLT5kYV9uZXdpbnVtICE9IGlwLT5pX251bWJlcikKLQkJcGFuaWMoIm5ld2Rp cnJlbTogaW51bSAlanUgc2hvdWxkIGJlICVqdSIsCisJCVBBTklDKCJpbnVtICVqdSBzaG91 bGQgYmUgJWp1IiwKIAkJICAgICh1aW50bWF4X3QpaXAtPmlfbnVtYmVyLCAodWludG1heF90 KWRhcC0+ZGFfbmV3aW51bSk7CiAJLyoKIAkgKiBJZiB3ZSBhcmUgZGVsZXRpbmcgYSBjaGFu Z2VkIG5hbWUgdGhhdCBuZXZlciBtYWRlIGl0IHRvIGRpc2ssCkBAIC04OTQ4LDcgKzg5MjYs NyBAQCBuZXdkaXJyZW0oYnAsIGRwLCBpcCwgaXNybWRpciwgcHJldmRpcnJlbXApCiAKIAkJ TElTVF9GT1JFQUNIKHdrLCAmZGlycmVtLT5kbV9qd29yaywgd2tfbGlzdCkKIAkJCWlmICh3 ay0+d2tfc3RhdGUgJiAoTUtESVJfQk9EWSB8IE1LRElSX1BBUkVOVCkpCi0JCQkJcGFuaWMo ImJhZCB3ayAlcCAoMHglWClcbiIsIHdrLCB3ay0+d2tfc3RhdGUpOworCQkJCVBBTklDKCJi YWQgd2sgJXAgKDB4JVgpXG4iLCB3aywgd2stPndrX3N0YXRlKTsKIAl9CiAjZW5kaWYKIApA QCAtOTA0Niw3ICs5MDI0LDcgQEAgc29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfY2hhbmdlKGJw LCBkcCwgaXAsIG5ld2ludW0sIGlzcm1kaXIpCiAJICogd2lsbCBub3QgZmFpbC4KIAkgKi8K IAlpZiAoaW5vZGVkZXBfbG9va3VwKG1wLCBpcC0+aV9udW1iZXIsIDAsICZpbm9kZWRlcCkg PT0gMCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBfZGlyZWN0b3J5X2NoYW5nZTogTG9zdCBp bm9kZWRlcC4iKTsKKwkJUEFOSUMoIkxvc3QgaW5vZGVkZXAuIik7CiAJZGlycmVtLT5kbV9z dGF0ZSB8PSBPTkRFUExJU1Q7CiAJTElTVF9JTlNFUlRfSEVBRCgmaW5vZGVkZXAtPmlkX2Rp cnJlbWhkLCBkaXJyZW0sIGRtX2lub25leHQpOwogCkBAIC05MTMzLDcgKzkxMTEsNyBAQCBz b2Z0ZGVwX2NoYW5nZV9saW5rY250KGlwKQogCQlkZmxhZ3MgfD0gTk9ERUxBWTsKIAlpbm9k ZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgaXAtPmlfbnVtYmVyLCBkZmxhZ3Ms ICZpbm9kZWRlcCk7CiAJaWYgKGlwLT5pX25saW5rIDwgaXAtPmlfZWZmbmxpbmspCi0JCXBh bmljKCJzb2Z0ZGVwX2NoYW5nZV9saW5rY250OiBiYWQgZGVsdGEiKTsKKwkJUEFOSUMoImJh ZCBkZWx0YSIpOwogCWlub2RlZGVwLT5pZF9ubGlua2RlbHRhID0gaXAtPmlfbmxpbmsgLSBp cC0+aV9lZmZubGluazsKIAlGUkVFX0xPQ0soJmxrKTsKIH0KQEAgLTkyNDksNyArOTIyNyw3 IEBAIGhhbmRsZV93cml0dGVuX3NiZGVwKHNiZGVwLCBicCkKIAkgKi8KIAlmb3IgKDsgaW5v ZGVkZXAgIT0gTlVMTDsgaW5vZGVkZXAgPSBUQUlMUV9ORVhUKGlub2RlZGVwLCBpZF91bmxp bmtlZCkpIHsKIAkJaWYgKChpbm9kZWRlcC0+aWRfc3RhdGUgJiBVTkxJTktMSU5LUykgIT0g VU5MSU5LTElOS1MpCi0JCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5fc2JkZXA6IEJhZCBpbm9k ZWRlcCAlcCAoMHglWCkiLAorCQkJUEFOSUMoIkJhZCBpbm9kZWRlcCAlcCAoMHglWCkiLAog CQkJICAgIGlub2RlZGVwLCBpbm9kZWRlcC0+aWRfc3RhdGUpOwogCQlpZiAoaW5vZGVkZXAt PmlkX3N0YXRlICYgVU5MSU5LT05MSVNUKQogCQkJYnJlYWs7CkBAIC05Mjc1LDcgKzkyNTMs NyBAQCB1bmxpbmtlZF9pbm9kZWRlcChtcCwgaW5vZGVkZXApCiAJdW1wID0gVkZTVE9VRlMo bXApOwogCXVtcC0+dW1fZnMtPmZzX2Ztb2QgPSAxOwogCWlmIChpbm9kZWRlcC0+aWRfc3Rh dGUgJiBVTkxJTktFRCkKLQkJcGFuaWMoInVubGlua2VkX2lub2RlZGVwOiAlcCBhbHJlYWR5 IHVubGlua2VkXG4iLCBpbm9kZWRlcCk7CisJCVBBTklDKCIlcCBhbHJlYWR5IHVubGlua2Vk XG4iLCBpbm9kZWRlcCk7CiAJaW5vZGVkZXAtPmlkX3N0YXRlIHw9IFVOTElOS0VEOwogCVRB SUxRX0lOU0VSVF9IRUFEKCZ1bXAtPnNvZnRkZXBfdW5saW5rZWQsIGlub2RlZGVwLCBpZF91 bmxpbmtlZCk7CiB9CkBAIC05NDE4LDEwICs5Mzk2LDEwIEBAIGNsZWFyX3VubGlua2VkX2lu b2RlZGVwKGlub2RlZGVwKQogCiAJCWlmIChmcy0+ZnNfc3VqZnJlZSAhPSBpbm8pCiAJCQly ZXR1cm47Ci0JCXBhbmljKCJjbGVhcl91bmxpbmtlZF9pbm9kZWRlcDogRmFpbGVkIHRvIGNs ZWFyIGZyZWUgaGVhZCIpOworCQlQQU5JQygiRmFpbGVkIHRvIGNsZWFyIGZyZWUgaGVhZCIp OwogCX0KIAlpZiAoaW5vZGVkZXAtPmlkX2lubyA9PSBmcy0+ZnNfc3VqZnJlZSkKLQkJcGFu aWMoImNsZWFyX3VubGlua2VkX2lub2RlZGVwOiBGcmVlaW5nIGhlYWQgb2YgZnJlZSBsaXN0 Iik7CisJCVBBTklDKCJGcmVlaW5nIGhlYWQgb2YgZnJlZSBsaXN0Iik7CiAJaW5vZGVkZXAt PmlkX3N0YXRlICY9IH4oVU5MSU5LRUQgfCBVTkxJTktMSU5LUyB8IFVOTElOS09OTElTVCk7 CiAJVEFJTFFfUkVNT1ZFKCZ1bXAtPnNvZnRkZXBfdW5saW5rZWQsIGlub2RlZGVwLCBpZF91 bmxpbmtlZCk7CiAJcmV0dXJuOwpAQCAtOTQ0Niw3ICs5NDI0LDcgQEAgaGFuZGxlX3dvcmtp dGVtX3JlbW92ZShkaXJyZW0sIGZsYWdzKQogCWlub190IG9sZGludW07CiAKIAlpZiAoZGly cmVtLT5kbV9zdGF0ZSAmIE9OV09SS0xJU1QpCi0JCXBhbmljKCJoYW5kbGVfd29ya2l0ZW1f cmVtb3ZlOiBkaXJyZW0gJXAgc3RpbGwgb24gd29ya2xpc3QiLAorCQlQQU5JQygiZGlycmVt ICVwIHN0aWxsIG9uIHdvcmtsaXN0IiwKIAkJICAgIGRpcnJlbSk7CiAJb2xkaW51bSA9IGRp cnJlbS0+ZG1fb2xkaW51bTsKIAltcCA9IGRpcnJlbS0+ZG1fbGlzdC53a19tcDsKQEAgLTk0 NTcsNyArOTQzNSw3IEBAIGhhbmRsZV93b3JraXRlbV9yZW1vdmUoZGlycmVtLCBmbGFncykK IAlpcCA9IFZUT0kodnApOwogCUFDUVVJUkVfTE9DSygmbGspOwogCWlmICgoaW5vZGVkZXBf bG9va3VwKG1wLCBvbGRpbnVtLCAwLCAmaW5vZGVkZXApKSA9PSAwKQotCQlwYW5pYygiaGFu ZGxlX3dvcmtpdGVtX3JlbW92ZTogbG9zdCBpbm9kZWRlcCIpOworCQlQQU5JQygibG9zdCBp bm9kZWRlcCIpOwogCWlmIChkaXJyZW0tPmRtX3N0YXRlICYgT05ERVBMSVNUKQogCQlMSVNU X1JFTU9WRShkaXJyZW0sIGRtX2lub25leHQpOwogCUtBU1NFUlQoTElTVF9FTVBUWSgmZGly cmVtLT5kbV9qcmVtcmVmaGQpLApAQCAtOTQ4OSw3ICs5NDY3LDcgQEAgaGFuZGxlX3dvcmtp dGVtX3JlbW92ZShkaXJyZW0sIGZsYWdzKQogCQlESVBfU0VUKGlwLCBpX25saW5rLCBpcC0+ aV9ubGluayk7CiAJCWlwLT5pX2ZsYWcgfD0gSU5fQ0hBTkdFOwogCQlpZiAoaXAtPmlfbmxp bmsgPCBpcC0+aV9lZmZubGluaykKLQkJCXBhbmljKCJoYW5kbGVfd29ya2l0ZW1fcmVtb3Zl OiBiYWQgZmlsZSBkZWx0YSIpOworCQkJUEFOSUMoImJhZCBmaWxlIGRlbHRhIik7CiAJCWlm IChpcC0+aV9ubGluayA9PSAwKSAKIAkJCXVubGlua2VkX2lub2RlZGVwKG1wLCBpbm9kZWRl cCk7CiAJCWlub2RlZGVwLT5pZF9ubGlua2RlbHRhID0gaXAtPmlfbmxpbmsgLSBpcC0+aV9l ZmZubGluazsKQEAgLTk1MTAsNyArOTQ4OCw3IEBAIGhhbmRsZV93b3JraXRlbV9yZW1vdmUo ZGlycmVtLCBmbGFncykKIAlESVBfU0VUKGlwLCBpX25saW5rLCBpcC0+aV9ubGluayk7CiAJ aXAtPmlfZmxhZyB8PSBJTl9DSEFOR0U7CiAJaWYgKGlwLT5pX25saW5rIDwgaXAtPmlfZWZm bmxpbmspCi0JCXBhbmljKCJoYW5kbGVfd29ya2l0ZW1fcmVtb3ZlOiBiYWQgZGlyIGRlbHRh Iik7CisJCVBBTklDKCJiYWQgZGlyIGRlbHRhIik7CiAJaWYgKGlwLT5pX25saW5rID09IDAp CiAJCXVubGlua2VkX2lub2RlZGVwKG1wLCBpbm9kZWRlcCk7CiAJaW5vZGVkZXAtPmlkX25s aW5rZGVsdGEgPSBpcC0+aV9ubGluayAtIGlwLT5pX2VmZm5saW5rOwpAQCAtOTUzMiw3ICs5 NTEwLDcgQEAgaGFuZGxlX3dvcmtpdGVtX3JlbW92ZShkaXJyZW0sIGZsYWdzKQogCSAqIFBs YWNlIHRoZSBkaXJyZW0gb24gdGhlIHBhcmVudCdzIGRpcmVtaGQgbGlzdC4KIAkgKi8KIAlp ZiAoaW5vZGVkZXBfbG9va3VwKG1wLCBkaXJyZW0tPmRtX29sZGludW0sIDAsICZpbm9kZWRl cCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93b3JraXRlbV9yZW1vdmU6IGxvc3QgZGlyIGlu b2RlZGVwIik7CisJCVBBTklDKCJsb3N0IGRpciBpbm9kZWRlcCIpOwogCUxJU1RfSU5TRVJU X0hFQUQoJmlub2RlZGVwLT5pZF9kaXJyZW1oZCwgZGlycmVtLCBkbV9pbm9uZXh0KTsKIAkv KgogCSAqIElmIHRoZSBhbGxvY2F0ZWQgaW5vZGUgaGFzIG5ldmVyIGJlZW4gd3JpdHRlbiB0 byBkaXNrLCB0aGVuCkBAIC05NTg4LDcgKzk1NjYsNyBAQCBoYW5kbGVfd29ya2l0ZW1fZnJl ZWZpbGUoZnJlZWZpbGUpCiAJZXJyb3IgPSBpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlModW1w KSwgZnJlZWZpbGUtPmZ4X29sZGludW0sIDAsICZpZHApOwogCUZSRUVfTE9DSygmbGspOwog CWlmIChlcnJvcikKLQkJcGFuaWMoImhhbmRsZV93b3JraXRlbV9mcmVlZmlsZTogaW5vZGVk ZXAgJXAgc3Vydml2ZWQiLCBpZHApOworCQlQQU5JQygiaW5vZGVkZXAgJXAgc3Vydml2ZWQi LCBpZHApOwogI2VuZGlmCiAJVUZTX0xPQ0sodW1wKTsKIAlmcy0+ZnNfcGVuZGluZ2lub2Rl cyAtPSAxOwpAQCAtOTY1NiwxMSArOTYzNCwxMSBAQCBzb2Z0ZGVwX2Rpc2tfaW9faW5pdGlh dGlvbihicCkKIAkgKiBiZSBkZXBlbmRlbmNpZXMgZm9yIHJlYWRzLgogCSAqLwogCWlmIChi cC0+Yl9pb2NtZCAhPSBCSU9fV1JJVEUpCi0JCXBhbmljKCJzb2Z0ZGVwX2Rpc2tfaW9faW5p dGlhdGlvbjogbm90IHdyaXRlIik7CisJCVBBTklDKCJub3Qgd3JpdGUiKTsKIAogCWlmIChi cC0+Yl92ZmxhZ3MgJiBCVl9CS0dSRElOUFJPRykKLQkJcGFuaWMoInNvZnRkZXBfZGlza19p b19pbml0aWF0aW9uOiBXcml0aW5nIGJ1ZmZlciB3aXRoICIKLQkJICAgICJiYWNrZ3JvdW5k IHdyaXRlIGluIHByb2dyZXNzOiAlcCIsIGJwKTsKKwkJUEFOSUMoIldyaXRpbmcgYnVmZmVy IHdpdGggYmFja2dyb3VuZCB3cml0ZSBpbiBwcm9ncmVzczogJXAiLAorCQkgICAgYnApOwog CiAJbWFya2VyLndrX3R5cGUgPSBEX0xBU1QgKyAxOwkvKiBOb3QgYSBub3JtYWwgd29ya2l0 ZW0gKi8KIAlQSE9MRChjdXJwcm9jKTsJCQkvKiBEb24ndCBzd2FwIG91dCBrZXJuZWwgc3Rh Y2sgKi8KQEAgLTk3NDQsOCArOTcyMiw3IEBAIHNvZnRkZXBfZGlza19pb19pbml0aWF0aW9u KGJwKQogCQkJY29udGludWU7CiAKIAkJZGVmYXVsdDoKLQkJCXBhbmljKCJoYW5kbGVfZGlz a19pb19pbml0aWF0aW9uOiBVbmV4cGVjdGVkIHR5cGUgJXMiLAotCQkJICAgIFRZUEVOQU1F KHdrLT53a190eXBlKSk7CisJCQlQQU5JQygiVW5leHBlY3RlZCB0eXBlICVzIiwgVFlQRU5B TUUod2stPndrX3R5cGUpKTsKIAkJCS8qIE5PVFJFQUNIRUQgKi8KIAkJfQogCX0KQEAgLTk3 OTgsOCArOTc3NSw3IEBAIGluaXRpYXRlX3dyaXRlX2ZpbGVwYWdlKHBhZ2VkZXAsIGJwKQog CQkJZXAgPSAoc3RydWN0IGRpcmVjdCAqKQogCQkJICAgICgoY2hhciAqKWJwLT5iX2RhdGEg KyBkYXAtPmRhX29mZnNldCk7CiAJCQlpZiAoZXAtPmRfaW5vICE9IGRhcC0+ZGFfbmV3aW51 bSkKLQkJCQlwYW5pYygiJXM6IGRpciBpbnVtICVqdSAhPSBuZXcgJWp1IiwKLQkJCQkgICAg ImluaXRpYXRlX3dyaXRlX2ZpbGVwYWdlIiwKKwkJCQlQQU5JQygiZGlyIGludW0gJWp1ICE9 IG5ldyAlanUiLAogCQkJCSAgICAodWludG1heF90KWVwLT5kX2lubywKIAkJCQkgICAgKHVp bnRtYXhfdClkYXAtPmRhX25ld2ludW0pOwogCQkJaWYgKGRhcC0+ZGFfc3RhdGUgJiBESVJD SEcpCkBAIC05ODM5LDcgKzk4MTUsNyBAQCBpbml0aWF0ZV93cml0ZV9pbm9kZWJsb2NrX3Vm czEoaW5vZGVkZXAsIGJwKQogCWludCBkZXBsaXN0OwogCiAJaWYgKGlub2RlZGVwLT5pZF9z dGF0ZSAmIElPU1RBUlRFRCkKLQkJcGFuaWMoImluaXRpYXRlX3dyaXRlX2lub2RlYmxvY2tf dWZzMTogYWxyZWFkeSBzdGFydGVkIik7CisJCVBBTklDKCJhbHJlYWR5IHN0YXJ0ZWQiKTsK IAlpbm9kZWRlcC0+aWRfc3RhdGUgfD0gSU9TVEFSVEVEOwogCWZzID0gaW5vZGVkZXAtPmlk X2ZzOwogCWRwID0gKHN0cnVjdCB1ZnMxX2Rpbm9kZSAqKWJwLT5iX2RhdGEgKwpAQCAtOTg2 MSw3ICs5ODM3LDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxKGlub2RlZGVw LCBicCkKIAkgKi8KIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAmIERFUENPTVBMRVRFKSA9 PSAwKSB7CiAJCWlmIChpbm9kZWRlcC0+aWRfc2F2ZWRpbm8xICE9IE5VTEwpCi0JCQlwYW5p YygiaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxOiBJL08gdW5kZXJ3YXkiKTsKKwkJ CVBBTklDKCJJL08gdW5kZXJ3YXkiKTsKIAkJRlJFRV9MT0NLKCZsayk7CiAJCXNpcCA9IG1h bGxvYyhzaXplb2Yoc3RydWN0IHVmczFfZGlub2RlKSwKIAkJICAgIE1fU0FWRURJTk8sIE1f U09GVERFUF9GTEFHUyk7CkBAIC05ODk1LDI2ICs5ODcxLDIzIEBAIGluaXRpYXRlX3dyaXRl X2lub2RlYmxvY2tfdWZzMShpbm9kZWRlcCwgYnApCiAJICAgICBhZHAgPSBUQUlMUV9ORVhU KGFkcCwgYWRfbmV4dCkpIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCWlmIChkZXBsaXN0ICE9 IDAgJiYgcHJldmxibiA+PSBhZHAtPmFkX29mZnNldCkKLQkJCXBhbmljKCJzb2Z0ZGVwX3dy aXRlX2lub2RlYmxvY2s6IGxibiBvcmRlciIpOworCQkJUEFOSUMoImxibiBvcmRlciIpOwog CQlwcmV2bGJuID0gYWRwLT5hZF9vZmZzZXQ7CiAJCWlmIChhZHAtPmFkX29mZnNldCA8IE5E QUREUiAmJgogCQkgICAgZHAtPmRpX2RiW2FkcC0+YWRfb2Zmc2V0XSAhPSBhZHAtPmFkX25l d2Jsa25vKQotCQkJcGFuaWMoIiVzOiBkaXJlY3QgcG9pbnRlciAjJWpkIG1pc21hdGNoICVk ICE9ICVqZCIsCi0JCQkgICAgInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jayIsCisJCQlQQU5J QygiZGlyZWN0IHBvaW50ZXIgIyVqZCBtaXNtYXRjaCAlZCAhPSAlamQiLAogCQkJICAgIChp bnRtYXhfdClhZHAtPmFkX29mZnNldCwKIAkJCSAgICBkcC0+ZGlfZGJbYWRwLT5hZF9vZmZz ZXRdLAogCQkJICAgIChpbnRtYXhfdClhZHAtPmFkX25ld2Jsa25vKTsKIAkJaWYgKGFkcC0+ YWRfb2Zmc2V0ID49IE5EQUREUiAmJgogCQkgICAgZHAtPmRpX2liW2FkcC0+YWRfb2Zmc2V0 IC0gTkRBRERSXSAhPSBhZHAtPmFkX25ld2Jsa25vKQotCQkJcGFuaWMoIiVzOiBpbmRpcmVj dCBwb2ludGVyICMlamQgbWlzbWF0Y2ggJWQgIT0gJWpkIiwKLQkJCSAgICAic29mdGRlcF93 cml0ZV9pbm9kZWJsb2NrIiwKKwkJCVBBTklDKCJpbmRpcmVjdCBwb2ludGVyICMlamQgbWlz bWF0Y2ggJWQgIT0gJWpkIiwKIAkJCSAgICAoaW50bWF4X3QpYWRwLT5hZF9vZmZzZXQgLSBO REFERFIsCiAJCQkgICAgZHAtPmRpX2liW2FkcC0+YWRfb2Zmc2V0IC0gTkRBRERSXSwKIAkJ CSAgICAoaW50bWF4X3QpYWRwLT5hZF9uZXdibGtubyk7CiAJCWRlcGxpc3QgfD0gMSA8PCBh ZHAtPmFkX29mZnNldDsKIAkJaWYgKChhZHAtPmFkX3N0YXRlICYgQVRUQUNIRUQpID09IDAp Ci0JCQlwYW5pYygic29mdGRlcF93cml0ZV9pbm9kZWJsb2NrOiBVbmtub3duIHN0YXRlIDB4 JXgiLAotCQkJICAgIGFkcC0+YWRfc3RhdGUpOworCQkJUEFOSUMoIlVua25vd24gc3RhdGUg MHgleCIsIGFkcC0+YWRfc3RhdGUpOwogI2VuZGlmIC8qIElOVkFSSUFOVFMgKi8KIAkJYWRw LT5hZF9zdGF0ZSAmPSB+QVRUQUNIRUQ7CiAJCWFkcC0+YWRfc3RhdGUgfD0gVU5ET05FOwpA QCAtOTkzNyw3ICs5OTEwLDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxKGlu b2RlZGVwLCBicCkKIAkJZm9yIChpID0gYWRwLT5hZF9vZmZzZXQgKyAxOyBpIDwgTkRBRERS OyBpKyspIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2RiW2ldICE9IDAg JiYgKGRlcGxpc3QgJiAoMSA8PCBpKSkgPT0gMCkKLQkJCQlwYW5pYygic29mdGRlcF93cml0 ZV9pbm9kZWJsb2NrOiBsb3N0IGRlcDEiKTsKKwkJCQlQQU5JQygibG9zdCBkZXAxIik7CiAj ZW5kaWYgLyogSU5WQVJJQU5UUyAqLwogCQkJZHAtPmRpX2RiW2ldID0gMDsKIAkJfQpAQCAt OTk0NSw3ICs5OTE4LDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxKGlub2Rl ZGVwLCBicCkKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2liW2ldICE9IDAg JiYKIAkJCSAgICAoZGVwbGlzdCAmICgoMSA8PCBOREFERFIpIDw8IGkpKSA9PSAwKQotCQkJ CXBhbmljKCJzb2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2s6IGxvc3QgZGVwMiIpOworCQkJCVBB TklDKCJsb3N0IGRlcDIiKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJCQlkcC0+ZGlf aWJbaV0gPSAwOwogCQl9CkBAIC0xMDAwNiw3ICs5OTc5LDcgQEAgaW5pdGlhdGVfd3JpdGVf aW5vZGVibG9ja191ZnMyKGlub2RlZGVwLCBicCkKIAlpbnQgZGVwbGlzdDsKIAogCWlmIChp bm9kZWRlcC0+aWRfc3RhdGUgJiBJT1NUQVJURUQpCi0JCXBhbmljKCJpbml0aWF0ZV93cml0 ZV9pbm9kZWJsb2NrX3VmczI6IGFscmVhZHkgc3RhcnRlZCIpOworCQlQQU5JQygiYWxyZWFk eSBzdGFydGVkIik7CiAJaW5vZGVkZXAtPmlkX3N0YXRlIHw9IElPU1RBUlRFRDsKIAlmcyA9 IGlub2RlZGVwLT5pZF9mczsKIAlkcCA9IChzdHJ1Y3QgdWZzMl9kaW5vZGUgKilicC0+Yl9k YXRhICsKQEAgLTEwMDI4LDcgKzEwMDAxLDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9j a191ZnMyKGlub2RlZGVwLCBicCkKIAkgKi8KIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAm IERFUENPTVBMRVRFKSA9PSAwKSB7CiAJCWlmIChpbm9kZWRlcC0+aWRfc2F2ZWRpbm8yICE9 IE5VTEwpCi0JCQlwYW5pYygiaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMyOiBJL08g dW5kZXJ3YXkiKTsKKwkJCVBBTklDKCJJL08gdW5kZXJ3YXkiKTsKIAkJRlJFRV9MT0NLKCZs ayk7CiAJCXNpcCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHVmczJfZGlub2RlKSwKIAkJICAg IE1fU0FWRURJTk8sIE1fU09GVERFUF9GTEFHUyk7CkBAIC0xMDA2NCwxOCArMTAwMzcsMTYg QEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMyKGlub2RlZGVwLCBicCkKIAkgICAg IGFkcCA9IFRBSUxRX05FWFQoYWRwLCBhZF9uZXh0KSkgewogI2lmZGVmIElOVkFSSUFOVFMK IAkJaWYgKGRlcGxpc3QgIT0gMCAmJiBwcmV2bGJuID49IGFkcC0+YWRfb2Zmc2V0KQotCQkJ cGFuaWMoInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jazogbGJuIG9yZGVyIik7CisJCQlQQU5J QygibGJuIG9yZGVyIik7CiAJCXByZXZsYm4gPSBhZHAtPmFkX29mZnNldDsKIAkJaWYgKGRw LT5kaV9leHRiW2FkcC0+YWRfb2Zmc2V0XSAhPSBhZHAtPmFkX25ld2Jsa25vKQotCQkJcGFu aWMoIiVzOiBkaXJlY3QgcG9pbnRlciAjJWpkIG1pc21hdGNoICVqZCAhPSAlamQiLAotCQkJ ICAgICJzb2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2siLAorCQkJUEFOSUMoImRpcmVjdCBwb2lu dGVyICMlamQgbWlzbWF0Y2ggJWpkICE9ICVqZCIsCiAJCQkgICAgKGludG1heF90KWFkcC0+ YWRfb2Zmc2V0LAogCQkJICAgIChpbnRtYXhfdClkcC0+ZGlfZXh0YlthZHAtPmFkX29mZnNl dF0sCiAJCQkgICAgKGludG1heF90KWFkcC0+YWRfbmV3Ymxrbm8pOwogCQlkZXBsaXN0IHw9 IDEgPDwgYWRwLT5hZF9vZmZzZXQ7CiAJCWlmICgoYWRwLT5hZF9zdGF0ZSAmIEFUVEFDSEVE KSA9PSAwKQotCQkJcGFuaWMoInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jazogVW5rbm93biBz dGF0ZSAweCV4IiwKLQkJCSAgICBhZHAtPmFkX3N0YXRlKTsKKwkJCVBBTklDKCJVbmtub3du IHN0YXRlIDB4JXgiLCBhZHAtPmFkX3N0YXRlKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICov CiAJCWFkcC0+YWRfc3RhdGUgJj0gfkFUVEFDSEVEOwogCQlhZHAtPmFkX3N0YXRlIHw9IFVO RE9ORTsKQEAgLTEwMDk2LDcgKzEwMDY3LDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9j a191ZnMyKGlub2RlZGVwLCBicCkKIAkJZm9yIChpID0gYWRwLT5hZF9vZmZzZXQgKyAxOyBp IDwgTlhBRERSOyBpKyspIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2V4 dGJbaV0gIT0gMCAmJiAoZGVwbGlzdCAmICgxIDw8IGkpKSA9PSAwKQotCQkJCXBhbmljKCJz b2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2s6IGxvc3QgZGVwMSIpOworCQkJCVBBTklDKCJsb3N0 IGRlcDEiKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJCQlkcC0+ZGlfZXh0YltpXSA9 IDA7CiAJCX0KQEAgLTEwMTIzLDI4ICsxMDA5NCwyNiBAQCBpbml0aWF0ZV93cml0ZV9pbm9k ZWJsb2NrX3VmczIoaW5vZGVkZXAsIGJwKQogCSAgICAgYWRwID0gVEFJTFFfTkVYVChhZHAs IGFkX25leHQpKSB7CiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAoZGVwbGlzdCAhPSAwICYm IHByZXZsYm4gPj0gYWRwLT5hZF9vZmZzZXQpCi0JCQlwYW5pYygic29mdGRlcF93cml0ZV9p bm9kZWJsb2NrOiBsYm4gb3JkZXIiKTsKKwkJCVBBTklDKCJsYm4gb3JkZXIiKTsKIAkJaWYg KChhZHAtPmFkX3N0YXRlICYgQVRUQUNIRUQpID09IDApCi0JCQlwYW5pYygiaW5vZGVkZXAg JXAgYW5kIGFkcCAlcCBub3QgYXR0YWNoZWQiLCBpbm9kZWRlcCwgYWRwKTsKKwkJCVBBTklD KCJpbm9kZWRlcCAlcCBhbmQgYWRwICVwIG5vdCBhdHRhY2hlZCIsCisJCQkgICAgaW5vZGVk ZXAsIGFkcCk7CiAJCXByZXZsYm4gPSBhZHAtPmFkX29mZnNldDsKIAkJaWYgKGFkcC0+YWRf b2Zmc2V0IDwgTkRBRERSICYmCiAJCSAgICBkcC0+ZGlfZGJbYWRwLT5hZF9vZmZzZXRdICE9 IGFkcC0+YWRfbmV3Ymxrbm8pCi0JCQlwYW5pYygiJXM6IGRpcmVjdCBwb2ludGVyICMlamQg bWlzbWF0Y2ggJWpkICE9ICVqZCIsCi0JCQkgICAgInNvZnRkZXBfd3JpdGVfaW5vZGVibG9j ayIsCisJCQlQQU5JQygiZGlyZWN0IHBvaW50ZXIgIyVqZCBtaXNtYXRjaCAlamQgIT0gJWpk IiwKIAkJCSAgICAoaW50bWF4X3QpYWRwLT5hZF9vZmZzZXQsCiAJCQkgICAgKGludG1heF90 KWRwLT5kaV9kYlthZHAtPmFkX29mZnNldF0sCiAJCQkgICAgKGludG1heF90KWFkcC0+YWRf bmV3Ymxrbm8pOwogCQlpZiAoYWRwLT5hZF9vZmZzZXQgPj0gTkRBRERSICYmCiAJCSAgICBk cC0+ZGlfaWJbYWRwLT5hZF9vZmZzZXQgLSBOREFERFJdICE9IGFkcC0+YWRfbmV3Ymxrbm8p Ci0JCQlwYW5pYygiJXMgaW5kaXJlY3QgcG9pbnRlciAjJWpkIG1pc21hdGNoICVqZCAhPSAl amQiLAotCQkJICAgICJzb2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2s6IiwKKwkJCVBBTklDKCJp bmRpcmVjdCBwb2ludGVyICMlamQgbWlzbWF0Y2ggJWpkICE9ICVqZCIsCiAJCQkgICAgKGlu dG1heF90KWFkcC0+YWRfb2Zmc2V0IC0gTkRBRERSLAogCQkJICAgIChpbnRtYXhfdClkcC0+ ZGlfaWJbYWRwLT5hZF9vZmZzZXQgLSBOREFERFJdLAogCQkJICAgIChpbnRtYXhfdClhZHAt PmFkX25ld2Jsa25vKTsKIAkJZGVwbGlzdCB8PSAxIDw8IGFkcC0+YWRfb2Zmc2V0OwogCQlp ZiAoKGFkcC0+YWRfc3RhdGUgJiBBVFRBQ0hFRCkgPT0gMCkKLQkJCXBhbmljKCJzb2Z0ZGVw X3dyaXRlX2lub2RlYmxvY2s6IFVua25vd24gc3RhdGUgMHgleCIsCi0JCQkgICAgYWRwLT5h ZF9zdGF0ZSk7CisJCQlQQU5JQygiVW5rbm93biBzdGF0ZSAweCV4IiwgYWRwLT5hZF9zdGF0 ZSk7CiAjZW5kaWYgLyogSU5WQVJJQU5UUyAqLwogCQlhZHAtPmFkX3N0YXRlICY9IH5BVFRB Q0hFRDsKIAkJYWRwLT5hZF9zdGF0ZSB8PSBVTkRPTkU7CkBAIC0xMDE2Nyw3ICsxMDEzNiw3 IEBAIGluaXRpYXRlX3dyaXRlX2lub2RlYmxvY2tfdWZzMihpbm9kZWRlcCwgYnApCiAJCWZv ciAoaSA9IGFkcC0+YWRfb2Zmc2V0ICsgMTsgaSA8IE5EQUREUjsgaSsrKSB7CiAjaWZkZWYg SU5WQVJJQU5UUwogCQkJaWYgKGRwLT5kaV9kYltpXSAhPSAwICYmIChkZXBsaXN0ICYgKDEg PDwgaSkpID09IDApCi0JCQkJcGFuaWMoInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jazogbG9z dCBkZXAyIik7CisJCQkJUEFOSUMoImxvc3QgZGVwMiIpOwogI2VuZGlmIC8qIElOVkFSSUFO VFMgKi8KIAkJCWRwLT5kaV9kYltpXSA9IDA7CiAJCX0KQEAgLTEwMTc1LDcgKzEwMTQ0LDcg QEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMyKGlub2RlZGVwLCBicCkKICNpZmRl ZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2liW2ldICE9IDAgJiYKIAkJCSAgICAoZGVw bGlzdCAmICgoMSA8PCBOREFERFIpIDw8IGkpKSA9PSAwKQotCQkJCXBhbmljKCJzb2Z0ZGVw X3dyaXRlX2lub2RlYmxvY2s6IGxvc3QgZGVwMyIpOworCQkJCVBBTklDKCJsb3N0IGRlcDMi KTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJCQlkcC0+ZGlfaWJbaV0gPSAwOwogCQl9 CkBAIC0xMDIzNyw3ICsxMDIwNiw3IEBAIGNhbmNlbF9pbmRpcmRlcChpbmRpcmRlcCwgYnAs IGZyZWVibGtzKQogCSAqIG9uIHRvIHRoZSByZWFsIGNvcHkgZm9yIGxhdGVyIHVzZSBpbiBp bmRpcl90cnVuYy4KIAkgKi8KIAlpZiAoaW5kaXJkZXAtPmlyX3N0YXRlICYgR09JTkdBV0FZ KQotCQlwYW5pYygiY2FuY2VsX2luZGlyZGVwOiBhbHJlYWR5IGdvbmUiKTsKKwkJUEFOSUMo ImFscmVhZHkgZ29uZSIpOwogCWlmICgoaW5kaXJkZXAtPmlyX3N0YXRlICYgREVQQ09NUExF VEUpID09IDApIHsKIAkJaW5kaXJkZXAtPmlyX3N0YXRlIHw9IERFUENPTVBMRVRFOwogCQlM SVNUX1JFTU9WRShpbmRpcmRlcCwgaXJfbmV4dCk7CkBAIC0xMDMxMiw3ICsxMDI4MSw3IEBA IGluaXRpYXRlX3dyaXRlX2luZGlyZGVwKGluZGlyZGVwLCBicCkKIAogCWluZGlyZGVwLT5p cl9zdGF0ZSB8PSBJT1NUQVJURUQ7CiAJaWYgKGluZGlyZGVwLT5pcl9zdGF0ZSAmIEdPSU5H QVdBWSkKLQkJcGFuaWMoImRpc2tfaW9faW5pdGlhdGlvbjogaW5kaXJkZXAgZ29uZSIpOwor CQlQQU5JQygiaW5kaXJkZXAgZ29uZSIpOwogCS8qCiAJICogSWYgdGhlcmUgYXJlIG5vIHJl bWFpbmluZyBkZXBlbmRlbmNpZXMsIHRoaXMgd2lsbCBiZSB3cml0aW5nCiAJICogdGhlIHJl YWwgcG9pbnRlcnMuCkBAIC0xMDM1OCwxMCArMTAzMjcsOSBAQCBzb2Z0ZGVwX3NldHVwX2lu b2ZyZWUobXAsIGJwLCBpbm8sIHdraGQpCiAJY2dwID0gKHN0cnVjdCBjZyAqKWJwLT5iX2Rh dGE7CiAJaW5vc3VzZWQgPSBjZ19pbm9zdXNlZChjZ3ApOwogCWlmIChpc3NldChpbm9zdXNl ZCwgaW5vICUgZnMtPmZzX2lwZykpCi0JCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2lub2ZyZWU6 IGlub2RlICVqdSBub3QgZnJlZWQuIiwKLQkJICAgICh1aW50bWF4X3QpaW5vKTsKKwkJUEFO SUMoImlub2RlICVqdSBub3QgZnJlZWQuIiwgKHVpbnRtYXhfdClpbm8pOwogCWlmIChpbm9k ZWRlcF9sb29rdXAobXAsIGlubywgMCwgJmlub2RlZGVwKSkKLQkJcGFuaWMoInNvZnRkZXBf c2V0dXBfaW5vZnJlZTogaW5vICVqdSBoYXMgZXhpc3RpbmcgaW5vZGVkZXAgJXAiLAorCQlQ QU5JQygiaW5vICVqdSBoYXMgZXhpc3RpbmcgaW5vZGVkZXAgJXAiLAogCQkgICAgKHVpbnRt YXhfdClpbm8sIGlub2RlZGVwKTsKIAlpZiAod2toZCkgewogCQlMSVNUX0ZPUkVBQ0hfU0FG RSh3aywgd2toZCwgd2tfbGlzdCwgd2tuKSB7CkBAIC0xMDQ0OCw3ICsxMDQxNiw3IEBAIHNv ZnRkZXBfc2V0dXBfYmxrZnJlZShtcCwgYnAsIGJsa25vLCBmcmFncywgd2toZCkKIAkJCSAg ICBpIDwgam5ld2Jsay0+am5fZnJhZ3M7IGkrKykgewogCQkJCWlmIChpc3NldChibGtzZnJl ZSwgYm5vICsgaSkpCiAJCQkJCWNvbnRpbnVlOwotCQkJCXBhbmljKCJzb2Z0ZGVwX3NldHVw X2Jsa2ZyZWU6IG5vdCBmcmVlIik7CisJCQkJUEFOSUMoIm5vdCBmcmVlIik7CiAJCQl9CiAj ZW5kaWYKIAkJCS8qCkBAIC0xMDQ4NCw4ICsxMDQ1Miw3IEBAIHNvZnRkZXBfc2V0dXBfYmxr ZnJlZShtcCwgYnAsIGJsa25vLCBmcmFncywgd2toZCkKIAkJCSAgICBqbmV3YmxrLT5qbl9z dGF0ZSwgam5ld2Jsay0+am5fYmxrbm8sCiAJCQkgICAgam5ld2Jsay0+am5fb2xkZnJhZ3Ms IGpuZXdibGstPmpuX2ZyYWdzLAogCQkJICAgIGpuZXdibGstPmpuX2RlcCk7Ci0JCQlwYW5p Yygic29mdGRlcF9zZXR1cF9ibGtmcmVlOiAiCi0JCQkgICAgIiVqZC0lamQoJWQpIG92ZXJs YXBzIHdpdGggJWpkLSVqZCIsCisJCQlQQU5JQygiJWpkLSVqZCglZCkgb3ZlcmxhcHMgd2l0 aCAlamQtJWpkIiwKIAkJCSAgICBibGtubywgZW5kLCBmcmFncywganN0YXJ0LCBqZW5kKTsK IAkJfQogCX0KQEAgLTEwNTkxLDggKzEwNTU4LDggQEAgaW5pdGlhdGVfd3JpdGVfYm1zYWZl bWFwKGJtc2FmZW1hcCwgYnApCiAJCQkJamFkZHJlZi0+amFfc3RhdGUgfD0gVU5ET05FOwog CQkJCXN0YXRfamFkZHJlZisrOwogCQkJfSBlbHNlCi0JCQkJcGFuaWMoImluaXRpYXRlX3dy aXRlX2Jtc2FmZW1hcDogaW5vZGUgJWp1ICIKLQkJCQkgICAgIm1hcmtlZCBmcmVlIiwgKHVp bnRtYXhfdClqYWRkcmVmLT5qYV9pbm8pOworCQkJCVBBTklDKCJpbm9kZSAlanUgbWFya2Vk IGZyZWUiLAorCQkJCSAgICAodWludG1heF90KWphZGRyZWYtPmphX2lubyk7CiAJCX0KIAl9 CiAJLyoKQEAgLTEwNjA1LDggKzEwNTcyLDcgQEAgaW5pdGlhdGVfd3JpdGVfYm1zYWZlbWFw KGJtc2FmZW1hcCwgYnApCiAJCUxJU1RfRk9SRUFDSChqbmV3YmxrLCAmYm1zYWZlbWFwLT5z bV9qbmV3YmxraGQsIGpuX2RlcHMpIHsKIAkJCWlmIChqbmV3YmxrX3JvbGxiYWNrKGpuZXdi bGssIGZzLCBjZ3AsIGJsa3NmcmVlKSkKIAkJCQljb250aW51ZTsKLQkJCXBhbmljKCJpbml0 aWF0ZV93cml0ZV9ibXNhZmVtYXA6IGJsb2NrICVqZCAiCi0JCQkgICAgIm1hcmtlZCBmcmVl Iiwgam5ld2Jsay0+am5fYmxrbm8pOworCQkJUEFOSUMoImJsb2NrICVqZCBtYXJrZWQgZnJl ZSIsIGpuZXdibGstPmpuX2Jsa25vKTsKIAkJfQogCX0KIAkvKgpAQCAtMTA2NTcsNyArMTA2 MjMsNyBAQCBzb2Z0ZGVwX2Rpc2tfd3JpdGVfY29tcGxldGUoYnApCiAJCVdPUktMSVNUX1JF TU9WRSh3ayk7CiAJCWRlcF93cml0ZVt3ay0+d2tfdHlwZV0rKzsKIAkJaWYgKHdrID09IG93 aykKLQkJCXBhbmljKCJkdXBsaWNhdGUgd29ya2xpc3Q6ICVwXG4iLCB3ayk7CisJCQlQQU5J QygiZHVwbGljYXRlIHdvcmtsaXN0OiAlcFxuIiwgd2spOwogCQlvd2sgPSB3azsKIAkJc3dp dGNoICh3ay0+d2tfdHlwZSkgewogCkBAIC0xMDcyNSw4ICsxMDY5MSw3IEBAIHNvZnRkZXBf ZGlza193cml0ZV9jb21wbGV0ZShicCkKIAkJCWNvbnRpbnVlOwogCiAJCWRlZmF1bHQ6Ci0J CQlwYW5pYygiaGFuZGxlX2Rpc2tfd3JpdGVfY29tcGxldGU6IFVua25vd24gdHlwZSAlcyIs Ci0JCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBBTklDKCJVbmtub3duIHR5 cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQkJLyogTk9UUkVBQ0hFRCAqLwog CQl9CiAJfQpAQCAtMTA4MDMsNyArMTA3NjgsNyBAQCBoYW5kbGVfYWxsb2NkaXJlY3RfcGFy dGRvbmUoYWRwLCB3a2hkKQogCQkJaWYgKGxpc3RhZHAgPT0gYWRwKQogCQkJCWJyZWFrOwog CQlpZiAobGlzdGFkcCA9PSBOVUxMKQotCQkJcGFuaWMoImhhbmRsZV9hbGxvY2RpcmVjdF9w YXJ0ZG9uZTogbG9zdCBkZXAiKTsKKwkJCVBBTklDKCJsb3N0IGRlcCIpOwogI2VuZGlmIC8q IERFQlVHICovCiAJCXJldHVybjsKIAl9CkBAIC0xMDg4Niw4ICsxMDg1MSw3IEBAIGhhbmRs ZV9qd29yayh3a2hkKQogCQkJaGFuZGxlX3dyaXR0ZW5fZnJlZXdvcmsoV0tfRlJFRVdPUkso d2spKTsKIAkJCWNvbnRpbnVlOwogCQlkZWZhdWx0OgotCQkJcGFuaWMoImhhbmRsZV9qd29y azogVW5rbm93biB0eXBlICVzXG4iLAotCQkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSk7 CisJCQlQQU5JQygiVW5rbm93biB0eXBlICVzXG4iLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkp OwogCQl9CiAJfQogfQpAQCAtMTA5MTksNyArMTA4ODMsNyBAQCBoYW5kbGVfYnVmd2FpdChp bm9kZWRlcCwgcmVmaGQpCiAJCQkgKiBvbGQgYmxvY2tzIGhhdmUgYmVlbiBmcmVlZC4KIAkJ CSAqLwogCQkJaWYgKGZyZWVmaWxlICE9IE5VTEwpCi0JCQkJcGFuaWMoImhhbmRsZV9idWZ3 YWl0OiBmcmVlZmlsZSIpOworCQkJCVBBTklDKCJmcmVlZmlsZSIpOwogCQkJZnJlZWZpbGUg PSBXS19GUkVFRklMRSh3ayk7CiAJCQljb250aW51ZTsKIApAQCAtMTA5ODAsOCArMTA5NDQs NyBAQCBoYW5kbGVfYnVmd2FpdChpbm9kZWRlcCwgcmVmaGQpCiAJCQljb250aW51ZTsKIAog CQlkZWZhdWx0OgotCQkJcGFuaWMoImhhbmRsZV9idWZ3YWl0OiBVbmtub3duIHR5cGUgJXAo JXMpIiwKLQkJCSAgICB3aywgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBBTklDKCJV bmtub3duIHR5cGUgJXAoJXMpIiwgd2ssIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CiAJCQkv KiBOT1RSRUFDSEVEICovCiAJCX0KIAl9CkBAIC0xMTAxMCw3ICsxMDk3Myw3IEBAIGhhbmRs ZV93cml0dGVuX2lub2RlYmxvY2soaW5vZGVkZXAsIGJwKQogCWhhZGNoYW5nZXMgPSAwOwog CWZyZWVmaWxlID0gTlVMTDsKIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAmIElPU1RBUlRF RCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2s6IG5vdCBzdGFy dGVkIik7CisJCVBBTklDKCJub3Qgc3RhcnRlZCIpOwogCWlub2RlZGVwLT5pZF9zdGF0ZSAm PSB+SU9TVEFSVEVEOwogCWlmIChpbm9kZWRlcC0+aWRfZnMtPmZzX21hZ2ljID09IEZTX1VG UzFfTUFHSUMpIHsKIAkJZnN0eXBlID0gVUZTMTsKQEAgLTExMDczLDEyICsxMTAzNiwxMSBA QCBoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrKGlub2RlZGVwLCBicCkKIAlmb3IgKGFkcCA9 IFRBSUxRX0ZJUlNUKCZpbm9kZWRlcC0+aWRfaW5vdXBkdCk7IGFkcDsgYWRwID0gbmV4dGFk cCkgewogCQluZXh0YWRwID0gVEFJTFFfTkVYVChhZHAsIGFkX25leHQpOwogCQlpZiAoYWRw LT5hZF9zdGF0ZSAmIEFUVEFDSEVEKQotCQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2lub2Rl YmxvY2s6IG5ldyBlbnRyeSIpOworCQkJUEFOSUMoIm5ldyBlbnRyeSIpOwogCQlpZiAoZnN0 eXBlID09IFVGUzEpIHsKIAkJCWlmIChhZHAtPmFkX29mZnNldCA8IE5EQUREUikgewogCQkJ CWlmIChkcDEtPmRpX2RiW2FkcC0+YWRfb2Zmc2V0XSE9YWRwLT5hZF9vbGRibGtubykKLQkJ CQkJcGFuaWMoIiVzICVzICMlamQgbWlzbWF0Y2ggJWQgIT0gJWpkIiwKLQkJCQkJICAgICJo YW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrOiIsCisJCQkJCVBBTklDKCIlcyAjJWpkIG1pc21h dGNoICVkICE9ICVqZCIsCiAJCQkJCSAgICAiZGlyZWN0IHBvaW50ZXIiLAogCQkJCQkgICAg KGludG1heF90KWFkcC0+YWRfb2Zmc2V0LAogCQkJCQkgICAgZHAxLT5kaV9kYlthZHAtPmFk X29mZnNldF0sCkBAIC0xMTA4Niw4ICsxMTA0OCw3IEBAIGhhbmRsZV93cml0dGVuX2lub2Rl YmxvY2soaW5vZGVkZXAsIGJwKQogCQkJCWRwMS0+ZGlfZGJbYWRwLT5hZF9vZmZzZXRdID0g YWRwLT5hZF9uZXdibGtubzsKIAkJCX0gZWxzZSB7CiAJCQkJaWYgKGRwMS0+ZGlfaWJbYWRw LT5hZF9vZmZzZXQgLSBOREFERFJdICE9IDApCi0JCQkJCXBhbmljKCIlczogJXMgIyVqZCBh bGxvY2F0ZWQgYXMgJWQiLAotCQkJCQkgICAgImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2si LAorCQkJCQlQQU5JQygiJXMgIyVqZCBhbGxvY2F0ZWQgYXMgJWQiLAogCQkJCQkgICAgImlu ZGlyZWN0IHBvaW50ZXIiLAogCQkJCQkgICAgKGludG1heF90KWFkcC0+YWRfb2Zmc2V0IC0g TkRBRERSLAogCQkJCQkgICAgZHAxLT5kaV9pYlthZHAtPmFkX29mZnNldCAtIE5EQUREUl0p OwpAQCAtMTEwOTcsOCArMTEwNTgsNyBAQCBoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrKGlu b2RlZGVwLCBicCkKIAkJfSBlbHNlIHsKIAkJCWlmIChhZHAtPmFkX29mZnNldCA8IE5EQURE UikgewogCQkJCWlmIChkcDItPmRpX2RiW2FkcC0+YWRfb2Zmc2V0XSE9YWRwLT5hZF9vbGRi bGtubykKLQkJCQkJcGFuaWMoIiVzOiAlcyAjJWpkICVzICVqZCAhPSAlamQiLAotCQkJCQkg ICAgImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2siLAorCQkJCQlQQU5JQygiJXMgIyVqZCAl cyAlamQgIT0gJWpkIiwKIAkJCQkJICAgICJkaXJlY3QgcG9pbnRlciIsCiAJCQkJCSAgICAo aW50bWF4X3QpYWRwLT5hZF9vZmZzZXQsICJtaXNtYXRjaCIsCiAJCQkJCSAgICAoaW50bWF4 X3QpZHAyLT5kaV9kYlthZHAtPmFkX29mZnNldF0sCkBAIC0xMTEwNiw4ICsxMTA2Niw3IEBA IGhhbmRsZV93cml0dGVuX2lub2RlYmxvY2soaW5vZGVkZXAsIGJwKQogCQkJCWRwMi0+ZGlf ZGJbYWRwLT5hZF9vZmZzZXRdID0gYWRwLT5hZF9uZXdibGtubzsKIAkJCX0gZWxzZSB7CiAJ CQkJaWYgKGRwMi0+ZGlfaWJbYWRwLT5hZF9vZmZzZXQgLSBOREFERFJdICE9IDApCi0JCQkJ CXBhbmljKCIlczogJXMgIyVqZCBhbGxvY2F0ZWQgYXMgJWpkIiwKLQkJCQkJICAgICJoYW5k bGVfd3JpdHRlbl9pbm9kZWJsb2NrIiwKKwkJCQkJUEFOSUMoIiVzICMlamQgYWxsb2NhdGVk IGFzICVqZCIsCiAJCQkJCSAgICAiaW5kaXJlY3QgcG9pbnRlciIsCiAJCQkJCSAgICAoaW50 bWF4X3QpYWRwLT5hZF9vZmZzZXQgLSBOREFERFIsCiAJCQkJCSAgICAoaW50bWF4X3QpCkBA IC0xMTEyMywxMCArMTEwODIsOSBAQCBoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrKGlub2Rl ZGVwLCBicCkKIAlmb3IgKGFkcCA9IFRBSUxRX0ZJUlNUKCZpbm9kZWRlcC0+aWRfZXh0dXBk dCk7IGFkcDsgYWRwID0gbmV4dGFkcCkgewogCQluZXh0YWRwID0gVEFJTFFfTkVYVChhZHAs IGFkX25leHQpOwogCQlpZiAoYWRwLT5hZF9zdGF0ZSAmIEFUVEFDSEVEKQotCQkJcGFuaWMo ImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2s6IG5ldyBlbnRyeSIpOworCQkJUEFOSUMoIm5l dyBlbnRyeSIpOwogCQlpZiAoZHAyLT5kaV9leHRiW2FkcC0+YWRfb2Zmc2V0XSAhPSBhZHAt PmFkX29sZGJsa25vKQotCQkJcGFuaWMoIiVzOiBkaXJlY3QgcG9pbnRlcnMgIyVqZCAlcyAl amQgIT0gJWpkIiwKLQkJCSAgICAiaGFuZGxlX3dyaXR0ZW5faW5vZGVibG9jayIsCisJCQlQ QU5JQygiZGlyZWN0IHBvaW50ZXJzICMlamQgJXMgJWpkICE9ICVqZCIsCiAJCQkgICAgKGlu dG1heF90KWFkcC0+YWRfb2Zmc2V0LCAibWlzbWF0Y2giLAogCQkJICAgIChpbnRtYXhfdClk cDItPmRpX2V4dGJbYWRwLT5hZF9vZmZzZXRdLAogCQkJICAgIChpbnRtYXhfdClhZHAtPmFk X29sZGJsa25vKTsKQEAgLTExMTQxLDEwICsxMTA5OSwxMCBAQCBoYW5kbGVfd3JpdHRlbl9p bm9kZWJsb2NrKGlub2RlZGVwLCBicCkKIAkgKiBSZXNldCB0aGUgZmlsZSBzaXplIHRvIGl0 cyBtb3N0IHVwLXRvLWRhdGUgdmFsdWUuCiAJICovCiAJaWYgKGlub2RlZGVwLT5pZF9zYXZl ZHNpemUgPT0gLTEgfHwgaW5vZGVkZXAtPmlkX3NhdmVkZXh0c2l6ZSA9PSAtMSkKLQkJcGFu aWMoImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2s6IGJhZCBzaXplIik7CisJCVBBTklDKCJi YWQgc2l6ZSIpOwogCWlmIChpbm9kZWRlcC0+aWRfc2F2ZWRubGluayA+IExJTktfTUFYKQot CQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5faW5vZGVibG9jazogSW52YWxpZCBsaW5rIGNvdW50 ICIKLQkJICAgICIlZCBmb3IgaW5vZGVkZXAgJXAiLCBpbm9kZWRlcC0+aWRfc2F2ZWRubGlu aywgaW5vZGVkZXApOworCQlQQU5JQygiSW52YWxpZCBsaW5rIGNvdW50ICVkIGZvciBpbm9k ZWRlcCAlcCIsCisJCSAgICBpbm9kZWRlcC0+aWRfc2F2ZWRubGluaywgaW5vZGVkZXApOwog CWlmIChmc3R5cGUgPT0gVUZTMSkgewogCQlpZiAoZHAxLT5kaV9ubGluayAhPSBpbm9kZWRl cC0+aWRfc2F2ZWRubGluaykgeyAKIAkJCWRwMS0+ZGlfbmxpbmsgPSBpbm9kZWRlcC0+aWRf c2F2ZWRubGluazsKQEAgLTExMjA3LDcgKzExMTY1LDcgQEAgYnVmd2FpdDoKIAkgKiBub3cg dGhhdCB0aG9zZSB0aGF0IHdlcmUgYWxyZWFkeSB3cml0dGVuIGhhdmUgYmVlbiBwcm9jZXNz ZWQuCiAJICovCiAJaWYgKCFMSVNUX0VNUFRZKCZ3a2hkKSAmJiBoYWRjaGFuZ2VzID09IDAp Ci0JCXBhbmljKCJoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrOiBidWZ3YWl0IGJ1dCBubyBj aGFuZ2VzIik7CisJCVBBTklDKCJidWZ3YWl0IGJ1dCBubyBjaGFuZ2VzIik7CiAJandvcmtf bW92ZSgmaW5vZGVkZXAtPmlkX2J1ZndhaXQsICZ3a2hkKTsKIAogCWlmIChmcmVlZmlsZSAh PSBOVUxMKSB7CkBAIC0xMTIxOCw4ICsxMTE3Niw3IEBAIGJ1ZndhaXQ6CiAJCWlmIChpbm9k ZWRlcC0+aWRfc3RhdGUgJiBHT0lOR0FXQVkpCiAJCQlpbm9kZWRlcC0+aWRfc3RhdGUgfD0g Q09NUExFVEUgfCBERVBDT01QTEVURTsKIAkJaWYgKGZyZWVfaW5vZGVkZXAoaW5vZGVkZXAp ID09IDApCi0JCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5faW5vZGVibG9jazogbGl2ZSBpbm9k ZWRlcCAlcCIsCi0JCQkgICAgaW5vZGVkZXApOworCQkJUEFOSUMoImxpdmUgaW5vZGVkZXAg JXAiLCBpbm9kZWRlcCk7CiAJCWFkZF90b193b3JrbGlzdCgmZnJlZWZpbGUtPmZ4X2xpc3Qs IDApOwogCQlyZXR1cm4gKDApOwogCX0KQEAgLTExMjQ3LDkgKzExMjA0LDkgQEAgaGFuZGxl X3dyaXR0ZW5faW5kaXJkZXAoaW5kaXJkZXAsIGJwLCBicHApCiAJaW50IGNoZ3M7CiAKIAlp ZiAoaW5kaXJkZXAtPmlyX3N0YXRlICYgR09JTkdBV0FZKQotCQlwYW5pYygiaGFuZGxlX3dy aXR0ZW5faW5kaXJkZXA6IGluZGlyZGVwIGdvbmUiKTsKKwkJUEFOSUMoImluZGlyZGVwIGdv bmUiKTsKIAlpZiAoKGluZGlyZGVwLT5pcl9zdGF0ZSAmIElPU1RBUlRFRCkgPT0gMCkKLQkJ cGFuaWMoImhhbmRsZV93cml0dGVuX2luZGlyZGVwOiBJTyBub3Qgc3RhcnRlZCIpOworCQlQ QU5JQygiSU8gbm90IHN0YXJ0ZWQiKTsKIAljaGdzID0gMDsKIAkvKgogCSAqIElmIHRoZXJl IHdlcmUgcm9sbGJhY2tzIHJldmVydCB0aGVtIGhlcmUuCkBAIC0xMTI4Nyw3ICsxMTI0NCw3 IEBAIGhhbmRsZV93cml0dGVuX2luZGlyZGVwKGluZGlyZGVwLCBicCwgYnBwKQogCQl3aGls ZSAoKGFpcCA9IExJU1RfRklSU1QoJmluZGlyZGVwLT5pcl9kb25laGQpKSAhPSAwKSB7CiAJ CQloYW5kbGVfYWxsb2NpbmRpcl9wYXJ0ZG9uZShhaXApOwogCQkJaWYgKGFpcCA9PSBMSVNU X0ZJUlNUKCZpbmRpcmRlcC0+aXJfZG9uZWhkKSkKLQkJCQlwYW5pYygiZGlza193cml0ZV9j b21wbGV0ZTogbm90IGdvbmUiKTsKKwkJCQlQQU5JQygibm90IGdvbmUiKTsKIAkJCWNoZ3Mg PSAxOwogCQl9CiAJfQpAQCAtMTEzMTAsNyArMTEyNjcsNyBAQCBoYW5kbGVfd3JpdHRlbl9p bmRpcmRlcChpbmRpcmRlcCwgYnAsIGJwcCkKIAlpbmRpcmRlcC0+aXJfc2F2ZWJwID0gTlVM TDsKIAlpbmRpcmRlcC0+aXJfYnAgPSBOVUxMOwogCWlmICgqYnBwICE9IE5VTEwpCi0JCXBh bmljKCJoYW5kbGVfd3JpdHRlbl9pbmRpcmRlcDogYnAgYWxyZWFkeSBleGlzdHMuIik7CisJ CVBBTklDKCJicCBhbHJlYWR5IGV4aXN0cy4iKTsKIAkqYnBwID0gc2JwOwogCS8qCiAJICog VGhlIGluZGlyZGVwIG1heSBub3QgYmUgZnJlZWQgdW50aWwgaXRzIHBhcmVudCBwb2ludHMg YXQgaXQuCkBAIC0xMTM4MSw3ICsxMTMzOCw3IEBAIGpuZXdibGtfcm9sbGZvcndhcmQoam5l d2JsaywgZnMsIGNncCwgYmxrc2ZyZWUpCiAJY2dibm8gPSBkdG9nZChmcywgam5ld2Jsay0+ am5fYmxrbm8pOwogCWZvciAoaSA9IGpuZXdibGstPmpuX29sZGZyYWdzOyBpIDwgam5ld2Js ay0+am5fZnJhZ3M7IGkrKykgewogCQlpZiAoaXNjbHIoYmxrc2ZyZWUsIGNnYm5vICsgaSkp Ci0JCQlwYW5pYygiam5ld2Jsa19yb2xsZm9yd2FyZDogcmUtYWxsb2NhdGVkIGZyYWdtZW50 Iik7CisJCQlQQU5JQygicmUtYWxsb2NhdGVkIGZyYWdtZW50Iik7CiAJCWZyYWdzKys7CiAJ fQogCWlmIChmcmFncyA9PSBmcy0+ZnNfZnJhZykgewpAQCAtMTE0MzYsNyArMTEzOTMsNyBA QCBoYW5kbGVfd3JpdHRlbl9ibXNhZmVtYXAoYm1zYWZlbWFwLCBicCkKIAlpbnQgY2hnczsK IAogCWlmICgoYm1zYWZlbWFwLT5zbV9zdGF0ZSAmIElPU1RBUlRFRCkgPT0gMCkKLQkJcGFu aWMoImluaXRpYXRlX3dyaXRlX2Jtc2FmZW1hcDogTm90IHN0YXJ0ZWRcbiIpOworCQlQQU5J QygiTm90IHN0YXJ0ZWRcbiIpOwogCXVtcCA9IFZGU1RPVUZTKGJtc2FmZW1hcC0+c21fbGlz dC53a19tcCk7CiAJY2hncyA9IDA7CiAJYm1zYWZlbWFwLT5zbV9zdGF0ZSAmPSB+SU9TVEFS VEVEOwpAQCAtMTE0NTgsOCArMTE0MTUsNyBAQCBoYW5kbGVfd3JpdHRlbl9ibXNhZmVtYXAo Ym1zYWZlbWFwLCBicCkKIAkJCQljb250aW51ZTsKIAkJCWlubyA9IGphZGRyZWYtPmphX2lu byAlIGZzLT5mc19pcGc7CiAJCQlpZiAoaXNzZXQoaW5vc3VzZWQsIGlubykpCi0JCQkJcGFu aWMoImhhbmRsZV93cml0dGVuX2Jtc2FmZW1hcDogIgotCQkJCSAgICAicmUtYWxsb2NhdGVk IGlub2RlIik7CisJCQkJUEFOSUMoInJlLWFsbG9jYXRlZCBpbm9kZSIpOwogCQkJaWYgKChi cC0+Yl94ZmxhZ3MgJiBCWF9CS0dSRE1BUktFUikgPT0gMCkgewogCQkJCWlmICgoamFkZHJl Zi0+amFfbW9kZSAmIElGTVQpID09IElGRElSKQogCQkJCQljZ3AtPmNnX2NzLmNzX25kaXIr KzsKQEAgLTExNTAzLDcgKzExNDU5LDcgQEAgaGFuZGxlX3dyaXR0ZW5fYm1zYWZlbWFwKGJt c2FmZW1hcCwgYnApCiAJCQloYW5kbGVfYWxsb2NpbmRpcl9wYXJ0ZG9uZSgKIAkJCSAgICBX S19BTExPQ0lORElSKCZuZXdibGstPm5iX2xpc3QpKTsKIAkJZWxzZSBpZiAobmV3YmxrLT5u Yl9saXN0LndrX3R5cGUgIT0gRF9ORVdCTEspCi0JCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5f Ym1zYWZlbWFwOiBVbmV4cGVjdGVkIHR5cGU6ICVzIiwKKwkJCVBBTklDKCJVbmV4cGVjdGVk IHR5cGU6ICVzIiwKIAkJCSAgICBUWVBFTkFNRShuZXdibGstPm5iX2xpc3Qud2tfdHlwZSkp OwogCX0KIAl3aGlsZSAoKGlub2RlZGVwID0gTElTVF9GSVJTVCgmYm1zYWZlbWFwLT5zbV9p bm9kZWRlcHdyKSkgIT0gTlVMTCkgewpAQCAtMTE1NTgsNyArMTE1MTQsNyBAQCBoYW5kbGVf d3JpdHRlbl9ta2Rpcihta2RpciwgdHlwZSkKIHsKIAogCWlmICgobWtkaXItPm1kX3N0YXRl ICYgKE1LRElSX1BBUkVOVCB8IE1LRElSX0JPRFkpKSAhPSB0eXBlKQotCQlwYW5pYygiaGFu ZGxlX3dyaXR0ZW5fbWtkaXI6IGJhZCB0eXBlIik7CisJCVBBTklDKCJiYWQgdHlwZSIpOwog CW1rZGlyLT5tZF9zdGF0ZSB8PSBDT01QTEVURTsKIAljb21wbGV0ZV9ta2Rpcihta2Rpcik7 CiB9CkBAIC0xMTYwNiw3ICsxMTU2Miw3IEBAIGhhbmRsZV93cml0dGVuX2ZpbGVwYWdlKHBh Z2VkZXAsIGJwKQogCWludCBpLCBjaGdzOwogCiAJaWYgKChwYWdlZGVwLT5wZF9zdGF0ZSAm IElPU1RBUlRFRCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2ZpbGVwYWdlOiBu b3Qgc3RhcnRlZCIpOworCQlQQU5JQygibm90IHN0YXJ0ZWQiKTsKIAlwYWdlZGVwLT5wZF9z dGF0ZSAmPSB+SU9TVEFSVEVEOwogCS8qCiAJICogUHJvY2VzcyBhbnkgZGlyZWN0b3J5IHJl bW92YWxzIHRoYXQgaGF2ZSBiZWVuIGNvbW1pdHRlZC4KQEAgLTExNjM1LDcgKzExNTkxLDcg QEAgaGFuZGxlX3dyaXR0ZW5fZmlsZXBhZ2UocGFnZWRlcCwgYnApCiAJCSAgICAgZGFwID0g bmV4dGRhcCkgewogCQkJbmV4dGRhcCA9IExJU1RfTkVYVChkYXAsIGRhX3BkbGlzdCk7CiAJ CQlpZiAoZGFwLT5kYV9zdGF0ZSAmIEFUVEFDSEVEKQotCQkJCXBhbmljKCJoYW5kbGVfd3Jp dHRlbl9maWxlcGFnZTogYXR0YWNoZWQiKTsKKwkJCQlQQU5JQygiYXR0YWNoZWQiKTsKIAkJ CWVwID0gKHN0cnVjdCBkaXJlY3QgKikKIAkJCSAgICAoKGNoYXIgKilicC0+Yl9kYXRhICsg ZGFwLT5kYV9vZmZzZXQpOwogCQkJZXAtPmRfaW5vID0gZGFwLT5kYV9uZXdpbnVtOwpAQCAt MTE3NjEsMTEgKzExNzE3LDExIEBAIGFnYWluOgogCWlmIChpbm9kZWRlcF9sb29rdXAobXAs IGlwLT5pX251bWJlciwgMCwgJmlub2RlZGVwKSA9PSAwKSB7CiAJCUZSRUVfTE9DSygmbGsp OwogCQlpZiAoaXAtPmlfZWZmbmxpbmsgIT0gaXAtPmlfbmxpbmspCi0JCQlwYW5pYygic29m dGRlcF91cGRhdGVfaW5vZGVibG9jazogYmFkIGxpbmsgY291bnQiKTsKKwkJCVBBTklDKCJi YWQgbGluayBjb3VudCIpOwogCQlyZXR1cm47CiAJfQogCWlmIChpbm9kZWRlcC0+aWRfbmxp bmtkZWx0YSAhPSBpcC0+aV9ubGluayAtIGlwLT5pX2VmZm5saW5rKQotCQlwYW5pYygic29m dGRlcF91cGRhdGVfaW5vZGVibG9jazogYmFkIGRlbHRhIik7CisJCVBBTklDKCJiYWQgZGVs dGEiKTsKIAkvKgogCSAqIElmIHdlJ3JlIGZsdXNoaW5nIGFsbCBkZXBlbmRlbmNpZXMgd2Ug bXVzdCBhbHNvIG1vdmUgYW55IHdhaXRpbmcKIAkgKiBmb3Igam91cm5hbCB3cml0ZXMgb250 byB0aGUgYnVmd2FpdCBsaXN0IHByaW9yIHRvIEkvTy4KQEAgLTExOTIxLDEzICsxMTg3Nywx MiBAQCByZXN0YXJ0OgogCSAgICAhVEFJTFFfRU1QVFkoJmlub2RlZGVwLT5pZF9uZXdleHR1 cGR0KSB8fAogCSAgICAhVEFJTFFfRU1QVFkoJmlub2RlZGVwLT5pZF9pbm91cGR0KSB8fAog CSAgICAhVEFJTFFfRU1QVFkoJmlub2RlZGVwLT5pZF9uZXdpbm91cGR0KSkKLQkJcGFuaWMo InNvZnRkZXBfZnN5bmM6IHBlbmRpbmcgb3BzICVwIiwgaW5vZGVkZXApOworCQlQQU5JQygi cGVuZGluZyBvcHMgJXAiLCBpbm9kZWRlcCk7CiAJZm9yIChlcnJvciA9IDAsIGZsdXNocGFy ZW50ID0gMDsgOyApIHsKIAkJaWYgKCh3ayA9IExJU1RfRklSU1QoJmlub2RlZGVwLT5pZF9w ZW5kaW5naGQpKSA9PSBOVUxMKQogCQkJYnJlYWs7CiAJCWlmICh3ay0+d2tfdHlwZSAhPSBE X0RJUkFERCkKLQkJCXBhbmljKCJzb2Z0ZGVwX2ZzeW5jOiBVbmV4cGVjdGVkIHR5cGUgJXMi LAotCQkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CisJCQlQQU5JQygiVW5leHBlY3Rl ZCB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJZGFwID0gV0tfRElSQURE KHdrKTsKIAkJLyoKIAkJICogRmx1c2ggb3VyIHBhcmVudCBpZiB0aGlzIGRpcmVjdG9yeSBl bnRyeSBoYXMgYSBNS0RJUl9QQVJFTlQKQEAgLTExOTQwLDcgKzExODk1LDcgQEAgcmVzdGFy dDoKIAkJcGFyZW50aW5vID0gcGFnZWRlcC0+cGRfaW5vOwogCQlsYm4gPSBwYWdlZGVwLT5w ZF9sYm47CiAJCWlmICgoZGFwLT5kYV9zdGF0ZSAmIChNS0RJUl9CT0RZIHwgQ09NUExFVEUp KSAhPSBDT01QTEVURSkKLQkJCXBhbmljKCJzb2Z0ZGVwX2ZzeW5jOiBkaXJ0eSIpOworCQkJ UEFOSUMoImRpcnR5Iik7CiAJCWlmICgoZGFwLT5kYV9zdGF0ZSAmIE1LRElSX1BBUkVOVCkg fHwKIAkJICAgIChwYWdlZGVwLT5wZF9zdGF0ZSAmIE5FV0JMT0NLKSkKIAkJCWZsdXNocGFy ZW50ID0gMTsKQEAgLTEyMDE0LDcgKzExOTY5LDcgQEAgcmVzdGFydDoKIAkJCWlmIChpbm9k ZWRlcF9sb29rdXAobXAsIGlwLT5pX251bWJlciwgMCwgJmlub2RlZGVwKSAhPSAwKSB7CiAJ CQkJaWYgKCh3ayA9IExJU1RfRklSU1QoJmlub2RlZGVwLT5pZF9wZW5kaW5naGQpKSAhPSBO VUxMKSB7CiAJCQkJCWlmICh3ay0+d2tfdHlwZSAhPSBEX0RJUkFERCkKLQkJCQkJCXBhbmlj KCJzb2Z0ZGVwX2ZzeW5jOiBVbmV4cGVjdGVkIHR5cGUgJXMiLAorCQkJCQkJUEFOSUMoIlVu ZXhwZWN0ZWQgdHlwZSAlcyIsCiAJCQkJCQkgICAgICBUWVBFTkFNRSh3ay0+d2tfdHlwZSkp OwogCQkJCQlkYXAgPSBXS19ESVJBREQod2spOwogCQkJCQlpZiAoZGFwLT5kYV9zdGF0ZSAm IERJUkNIRykKQEAgLTEyMDcwLDcgKzEyMDI1LDcgQEAgc29mdGRlcF9mc3luY19tb3VudGRl dih2cCkKIAlzdHJ1Y3QgYnVmb2JqICpibzsKIAogCWlmICghdm5faXNkaXNrKHZwLCBOVUxM KSkKLQkJcGFuaWMoInNvZnRkZXBfZnN5bmNfbW91bnRkZXY6IHZub2RlIG5vdCBhIGRpc2si KTsKKwkJUEFOSUMoInZub2RlIG5vdCBhIGRpc2siKTsKIAlibyA9ICZ2cC0+dl9idWZvYmo7 CiByZXN0YXJ0OgogCUJPX0xPQ0soYm8pOwpAQCAtMTIwODMsNyArMTIwMzgsNyBAQCByZXN0 YXJ0OgogCQkJY29udGludWU7CiAKIAkJaWYgKChicC0+Yl9mbGFncyAmIEJfREVMV1JJKSA9 PSAwKQotCQkJcGFuaWMoInNvZnRkZXBfZnN5bmNfbW91bnRkZXY6IG5vdCBkaXJ0eSIpOwor CQkJUEFOSUMoIm5vdCBkaXJ0eSIpOwogCQkvKgogCQkgKiBXZSBhcmUgb25seSBpbnRlcmVz dGVkIGluIGJpdG1hcHMgd2l0aCBvdXRzdGFuZGluZwogCQkgKiBkZXBlbmRlbmNpZXMuCkBA IC0xMjI2Niw3ICsxMjIyMSw3IEBAIHRvcDoKIAkJCQl9CiAJCQl9CiAJCQlpZiAoIVRBSUxR X0VNUFRZKCZpbmRpcmRlcC0+aXJfdHJ1bmMpKQotCQkJCXBhbmljKCJzb2Z0ZGVwX3N5bmNf YnVmOiB0cnVuY2F0aW9uIHBlbmRpbmcuIik7CisJCQkJUEFOSUMoInRydW5jYXRpb24gcGVu ZGluZy4iKTsKIAkJcmVzdGFydDoKIAkJCUxJU1RfRk9SRUFDSChhaXAsICZpbmRpcmRlcC0+ aXJfZGVwbGlzdGhkLCBhaV9uZXh0KSB7CiAJCQkJbmV3YmxrID0gKHN0cnVjdCBuZXdibGsg KilhaXA7CkBAIC0xMjMyOSw4ICsxMjI4NCw3IEBAIHRvcDoKIAkJCWNvbnRpbnVlOwogCiAJ CWRlZmF1bHQ6Ci0JCQlwYW5pYygic29mdGRlcF9zeW5jX2J1ZjogVW5rbm93biB0eXBlICVz IiwKLQkJCSAgICBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOworCQkJUEFOSUMoIlVua25vd24g dHlwZSAlcyIsIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CiAJCQkvKiBOT1RSRUFDSEVEICov CiAJCX0KIAl9CkBAIC0xMjQ2NCw3ICsxMjQxOCw3IEBAIGZsdXNoX25ld2Jsa19kZXAodnAs IG1wLCBsYm4pCiAJaXAgPSBWVE9JKHZwKTsKIAlibGtubyA9IERJUChpcCwgaV9kYltsYm5d KTsKIAlpZiAoYmxrbm8gPT0gMCkKLQkJcGFuaWMoImZsdXNoX25ld2Jsa19kZXA6IE1pc3Np bmcgYmxvY2siKTsKKwkJUEFOSUMoIk1pc3NpbmcgYmxvY2siKTsKIAlBQ1FVSVJFX0xPQ0so JmxrKTsKIAkvKgogCSAqIExvb3AgdW50aWwgYWxsIGRlcGVuZGVuY2llcyByZWxhdGVkIHRv IHRoaXMgYmxvY2sgYXJlIHNhdGlzZmllZC4KQEAgLTEyNDc3LDcgKzEyNDMxLDcgQEAgZmx1 c2hfbmV3YmxrX2RlcCh2cCwgbXAsIGxibikKIAkJCWJyZWFrOwogCQl9CiAJCWlmIChuZXdi bGstPm5iX2xpc3Qud2tfdHlwZSAhPSBEX0FMTE9DRElSRUNUKQotCQkJcGFuaWMoImZsdXNo X25ld2Jsa19kZXBzOiBCYWQgbmV3YmxrICVwIiwgbmV3YmxrKTsKKwkJCVBBTklDKCJCYWQg bmV3YmxrICVwIiwgbmV3YmxrKTsKIAkJLyoKIAkJICogRmx1c2ggdGhlIGpvdXJuYWwuCiAJ CSAqLwpAQCAtMTI1NzQsNyArMTI1MjgsNyBAQCByZXN0YXJ0OgogCQkJaWYgKGRhcCAhPSBM SVNUX0ZJUlNUKGRpcmFkZGhkcCkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoZGFwLT5kYV9z dGF0ZSAmIE1LRElSX1BBUkVOVCkKLQkJCQlwYW5pYygiZmx1c2hfcGFnZWRlcF9kZXBzOiBN S0RJUl9QQVJFTlQiKTsKKwkJCQlQQU5JQygiTUtESVJfUEFSRU5UIik7CiAJCX0KIAkJLyoK IAkJICogQSBuZXdseSBhbGxvY2F0ZWQgZGlyZWN0b3J5IG11c3QgaGF2ZSBpdHMgIi4iIGFu ZApAQCAtMTI1ODMsNyArMTI1MzcsNyBAQCByZXN0YXJ0OgogCQkgKi8KIAkJaW51bSA9IGRh cC0+ZGFfbmV3aW51bTsKIAkJaWYgKGlub2RlZGVwX2xvb2t1cChVRlNUT1ZGUyh1bXApLCBp bnVtLCAwLCAmaW5vZGVkZXApID09IDApCi0JCQlwYW5pYygiZmx1c2hfcGFnZWRlcF9kZXBz OiBsb3N0IGlub2RlMSIpOworCQkJUEFOSUMoImxvc3QgaW5vZGUxIik7CiAJCS8qCiAJCSAq IFdhaXQgZm9yIGFueSBwZW5kaW5nIGpvdXJuYWwgYWRkcyB0byBjb21wbGV0ZSBzbyB3ZSBk b24ndAogCQkgKiBjYXVzZSByb2xsYmFja3Mgd2hpbGUgc3luY2luZy4KQEAgLTEyNjIwLDgg KzEyNTc0LDcgQEAgcmVzdGFydDoKIAkJCWlmIChkYXAtPmRhX3N0YXRlICYgTUtESVJfQk9E WSkgewogCQkJCWlub2RlZGVwX2xvb2t1cChVRlNUT1ZGUyh1bXApLCBpbnVtLCAwLAogCQkJ CSAgICAmaW5vZGVkZXApOwotCQkJCXBhbmljKCJmbHVzaF9wYWdlZGVwX2RlcHM6IE1LRElS X0JPRFkgIgotCQkJCSAgICAiaW5vZGVkZXAgJXAgZGFwICVwIHZwICVwIiwKKwkJCQlQQU5J QygiTUtESVJfQk9EWSBpbm9kZWRlcCAlcCBkYXAgJXAgdnAgJXAiLAogCQkJCSAgICBpbm9k ZWRlcCwgZGFwLCB2cCk7CiAJCQl9CiAJCX0KQEAgLTEyNjM3LDcgKzEyNTkwLDcgQEAgcmVz dGFydDoKIAkJICovCiByZXRyeToKIAkJaWYgKGlub2RlZGVwX2xvb2t1cChVRlNUT1ZGUyh1 bXApLCBpbnVtLCAwLCAmaW5vZGVkZXApID09IDApCi0JCQlwYW5pYygiZmx1c2hfcGFnZWRl cF9kZXBzOiBsb3N0IGlub2RlIik7CisJCQlQQU5JQygibG9zdCBpbm9kZSIpOwogCQkvKgog CQkgKiBJZiB0aGUgaW5vZGUgc3RpbGwgaGFzIGJpdG1hcCBkZXBlbmRlbmNpZXMsCiAJCSAq IHB1c2ggdGhlbSB0byBkaXNrLgpAQCAtMTI2NzYsOCArMTI2MjksNyBAQCByZXRyeToKIAkJ ICovCiAJCWlmIChkYXAgPT0gTElTVF9GSVJTVChkaXJhZGRoZHApKSB7CiAJCQlpbm9kZWRl cF9sb29rdXAoVUZTVE9WRlModW1wKSwgaW51bSwgMCwgJmlub2RlZGVwKTsKLQkJCXBhbmlj KCJmbHVzaF9wYWdlZGVwX2RlcHM6IGZhaWxlZCB0byBmbHVzaCAiIAotCQkJICAgICJpbm9k ZWRlcCAlcCBpbm8gJWp1IGRhcCAlcCIsCisJCQlQQU5JQygiZmFpbGVkIHRvIGZsdXNoIGlu b2RlZGVwICVwIGlubyAlanUgZGFwICVwIiwKIAkJCSAgICBpbm9kZWRlcCwgKHVpbnRtYXhf dClpbnVtLCBkYXApOwogCQl9CiAJfQpAQCAtMTI5NTEsNyArMTI5MDMsNyBAQCByZXF1ZXN0 X2NsZWFudXAobXAsIHJlc291cmNlKQogCQlicmVhazsKIAogCWRlZmF1bHQ6Ci0JCXBhbmlj KCJyZXF1ZXN0X2NsZWFudXA6IHVua25vd24gdHlwZSIpOworCQlQQU5JQygidW5rbm93biB0 eXBlIik7CiAJfQogCS8qCiAJICogSG9wZWZ1bGx5IHRoZSBzeW5jZXIgZGFlbW9uIHdpbGwg Y2F0Y2ggdXAgYW5kIGF3YWtlbiB1cy4KQEAgLTEzMzI3LDggKzEzMjc5LDcgQEAgc29mdGRl cF9jb3VudF9kZXBlbmRlbmNpZXMoYnAsIHdhbnRjb3VudCkKIAkJCWNvbnRpbnVlOwogCiAJ CWRlZmF1bHQ6Ci0JCQlwYW5pYygic29mdGRlcF9jb3VudF9kZXBlbmRlbmNpZXM6IFVuZXhw ZWN0ZWQgdHlwZSAlcyIsCi0JCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBB TklDKCJVbmV4cGVjdGVkIHR5cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQkJ LyogTk9UUkVBQ0hFRCAqLwogCQl9CiAJfQpAQCAtMTMzNjMsNyArMTMzMTQsNyBAQCBnZXRk aXJ0eWJ1ZihicCwgbXR4LCB3YWl0Zm9yKQogCQlpZiAoZXJyb3IgPT0gMCkKIAkJCUJVRl9V TkxPQ0soYnApOwogCQllbHNlIGlmIChlcnJvciAhPSBFTk9MQ0spCi0JCQlwYW5pYygiZ2V0 ZGlydHlidWY6IGluY29uc2lzdGVudCBsb2NrOiAlZCIsIGVycm9yKTsKKwkJCVBBTklDKCJp bmNvbnNpc3RlbnQgbG9jazogJWQiLCBlcnJvcik7CiAJCW10eF9sb2NrKG10eCk7CiAJCXJl dHVybiAoTlVMTCk7CiAJfQpAQCAtMTM1MjMsMTQgKzEzNDc0LDE0IEBAIHNvZnRkZXBfZGVh bGxvY2F0ZV9kZXBlbmRlbmNpZXMoYnApCiB7CiAKIAlpZiAoKGJwLT5iX2lvZmxhZ3MgJiBC SU9fRVJST1IpID09IDApCi0JCXBhbmljKCJzb2Z0ZGVwX2RlYWxsb2NhdGVfZGVwZW5kZW5j aWVzOiBkYW5nbGluZyBkZXBzIik7CisJCVBBTklDKCJkYW5nbGluZyBkZXBzIik7CiAJaWYg KGJwLT5iX3ZwICE9IE5VTEwgJiYgYnAtPmJfdnAtPnZfbW91bnQgIT0gTlVMTCkKIAkJc29m dGRlcF9lcnJvcihicC0+Yl92cC0+dl9tb3VudC0+bW50X3N0YXQuZl9tbnRvbm5hbWUsIGJw LT5iX2Vycm9yKTsKIAllbHNlCiAJCXByaW50Zigic29mdGRlcF9kZWFsbG9jYXRlX2RlcGVu ZGVuY2llczogIgogCQkgICAgImdvdCBlcnJvciAlZCB3aGlsZSBhY2Nlc3NpbmcgZmlsZXN5 c3RlbVxuIiwgYnAtPmJfZXJyb3IpOwogCWlmIChicC0+Yl9lcnJvciAhPSBFTlhJTykKLQkJ cGFuaWMoInNvZnRkZXBfZGVhbGxvY2F0ZV9kZXBlbmRlbmNpZXM6IHVucmVjb3ZlcmVkIEkv TyBlcnJvciIpOworCQlQQU5JQygidW5yZWNvdmVyZWQgSS9PIGVycm9yIik7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zeXMvdWZzL2Zmcy9mZnNfc3Vici5jIGIvc3lzL3Vmcy9mZnMvZmZz X3N1YnIuYwppbmRleCBlMjQ2MGEzLi5hMGUwNzc0IDEwMDY0NAotLS0gYS9zeXMvdWZzL2Zm cy9mZnNfc3Vici5jCisrKyBiL3N5cy91ZnMvZmZzL2Zmc19zdWJyLmMKQEAgLTE5MSw3ICsx OTEsNyBAQCBmZnNfY2hlY2tvdmVybGFwKGJwLCBpcCkKIAkJcHJpbnRmKCJcdHN0YXJ0ICVq ZCwgZW5kICVqZCBvdmVybGFwIHN0YXJ0ICVqZCwgZW5kICVqZFxuIiwKIAkJICAgIChpbnRt YXhfdClzdGFydCwgKGludG1heF90KWxhc3QsIChpbnRtYXhfdCllcC0+Yl9ibGtubywKIAkJ ICAgIChpbnRtYXhfdCkoZXAtPmJfYmxrbm8gKyBidG9kYihlcC0+Yl9iY291bnQpIC0gMSkp OwotCQlwYW5pYygiZmZzX2NoZWNrb3ZlcmxhcDogRGlzayBidWZmZXIgb3ZlcmxhcCIpOwor CQlQQU5JQygiRGlzayBidWZmZXIgb3ZlcmxhcCIpOwogCX0KIH0KICNlbmRpZiAvKiBLREIg Ki8KQEAgLTIyMyw3ICsyMjMsNyBAQCBmZnNfaXNibG9jayhmcywgY3AsIGgpCiAJCXJldHVy biAoKGNwW2ggPj4gM10gJiBtYXNrKSA9PSBtYXNrKTsKIAlkZWZhdWx0OgogI2lmZGVmIF9L RVJORUwKLQkJcGFuaWMoImZmc19pc2Jsb2NrIik7CisJCVBBTklDKCIiKTsKICNlbmRpZgog CQlicmVhazsKIAl9CkBAIC0yNTEsNyArMjUxLDcgQEAgZmZzX2lzZnJlZWJsb2NrKGZzLCBj cCwgaCkKIAkJcmV0dXJuICgoY3BbaCA+PiAzXSAmICgweDAxIDw8IChoICYgMHg3KSkpID09 IDApOwogCWRlZmF1bHQ6CiAjaWZkZWYgX0tFUk5FTAotCQlwYW5pYygiZmZzX2lzZnJlZWJs b2NrIik7CisJCVBBTklDKCIiKTsKICNlbmRpZgogCQlicmVhazsKIAl9CkBAIC0yODMsNyAr MjgzLDcgQEAgZmZzX2NscmJsb2NrKGZzLCBjcCwgaCkKIAkJcmV0dXJuOwogCWRlZmF1bHQ6 CiAjaWZkZWYgX0tFUk5FTAotCQlwYW5pYygiZmZzX2NscmJsb2NrIik7CisJCVBBTklDKCIi KTsKICNlbmRpZgogCQlicmVhazsKIAl9CkBAIC0zMTUsNyArMzE1LDcgQEAgZmZzX3NldGJs b2NrKGZzLCBjcCwgaCkKIAkJcmV0dXJuOwogCWRlZmF1bHQ6CiAjaWZkZWYgX0tFUk5FTAot CQlwYW5pYygiZmZzX3NldGJsb2NrIik7CisJCVBBTklDKCIiKTsKICNlbmRpZgogCQlicmVh azsKIAl9CmRpZmYgLS1naXQgYS9zeXMvdWZzL2Zmcy9mZnNfc3VzcGVuZC5jIGIvc3lzL3Vm cy9mZnMvZmZzX3N1c3BlbmQuYwppbmRleCAzMTk4YzFhLi5mZDU3NDJkIDEwMDY0NAotLS0g YS9zeXMvdWZzL2Zmcy9mZnNfc3VzcGVuZC5jCisrKyBiL3N5cy91ZnMvZmZzL2Zmc19zdXNw ZW5kLmMKQEAgLTIzOCw3ICsyMzgsNyBAQCBmZnNfc3VzcF9kdG9yKHZvaWQgKmRhdGEpCiAK IAllcnJvciA9IGZmc19yZWxvYWQobXAsIGN1cnRocmVhZCwgMSk7CiAJaWYgKGVycm9yICE9 IDApCi0JCXBhbmljKCJmYWlsZWQgdG8gdW5zdXNwZW5kIHdyaXRlcyBvbiAlcyIsIGZzLT5m c19mc21udCk7CisJCVBBTklDKCJmYWlsZWQgdG8gdW5zdXNwZW5kIHdyaXRlcyBvbiAlcyIs IGZzLT5mc19mc21udCk7CiAKIAkvKgogCSAqIFhYWDogVGhlIHN0YXR1cyBpcyBrZXB0IHBl ci1wcm9jZXNzOyB0aGUgdmZzX3dyaXRlX3Jlc3VtZSgpIHJvdXRpbmUKZGlmZiAtLWdpdCBh L3N5cy91ZnMvZmZzL2Zmc192ZnNvcHMuYyBiL3N5cy91ZnMvZmZzL2Zmc192ZnNvcHMuYwpp bmRleCAwMjA0NjEzLi4xNTg2MmJhIDEwMDY0NAotLS0gYS9zeXMvdWZzL2Zmcy9mZnNfdmZz b3BzLmMKKysrIGIvc3lzL3Vmcy9mZnMvZmZzX3Zmc29wcy5jCkBAIC02MzQsNyArNjM0LDcg QEAgZmZzX3JlbG9hZChzdHJ1Y3QgbW91bnQgKm1wLCBzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50 IGZvcmNlKQogCWRldnZwID0gVkZTVE9VRlMobXApLT51bV9kZXZ2cDsKIAl2bl9sb2NrKGRl dnZwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7CiAJaWYgKHZpbnZhbGJ1ZihkZXZ2cCwg MCwgMCwgMCkgIT0gMCkKLQkJcGFuaWMoImZmc19yZWxvYWQ6IGRpcnR5MSIpOworCQlQQU5J QygiZGlydHkxIik7CiAJVk9QX1VOTE9DSyhkZXZ2cCwgMCk7CiAKIAkvKgpAQCAtNzMwLDcg KzczMCw3IEBAIGxvb3A6CiAJCQlnb3RvIGxvb3A7CiAJCX0KIAkJaWYgKHZpbnZhbGJ1Zih2 cCwgMCwgMCwgMCkpCi0JCQlwYW5pYygiZmZzX3JlbG9hZDogZGlydHkyIik7CisJCQlQQU5J QygiZGlydHkyIik7CiAJCS8qCiAJCSAqIFN0ZXAgNTogcmUtcmVhZCBpbm9kZSBkYXRhIGZv ciBhbGwgYWN0aXZlIHZub2Rlcy4KIAkJICovCkBAIC0xNDA4LDcgKzE0MDgsNyBAQCBmZnNf c3RhdGZzKG1wLCBzYnApCiAJdW1wID0gVkZTVE9VRlMobXApOwogCWZzID0gdW1wLT51bV9m czsKIAlpZiAoZnMtPmZzX21hZ2ljICE9IEZTX1VGUzFfTUFHSUMgJiYgZnMtPmZzX21hZ2lj ICE9IEZTX1VGUzJfTUFHSUMpCi0JCXBhbmljKCJmZnNfc3RhdGZzIik7CisJCVBBTklDKCIi KTsKIAlzYnAtPmZfdmVyc2lvbiA9IFNUQVRGU19WRVJTSU9OOwogCXNicC0+Zl9ic2l6ZSA9 IGZzLT5mc19mc2l6ZTsKIAlzYnAtPmZfaW9zaXplID0gZnMtPmZzX2JzaXplOwpAQCAtMTUx Niw4ICsxNTE2LDcgQEAgZmZzX3N5bmMobXAsIHdhaXRmb3IpCiAJdGQgPSBjdXJ0aHJlYWQ7 CiAJZnMgPSB1bXAtPnVtX2ZzOwogCWlmIChmcy0+ZnNfZm1vZCAhPSAwICYmIGZzLT5mc19y b25seSAhPSAwICYmIHVtcC0+dW1fZnNja3BpZCA9PSAwKQotCQlwYW5pYygiJXM6IGZmc19z eW5jOiBtb2RpZmljYXRpb24gb24gcmVhZC1vbmx5IGZpbGVzeXN0ZW0iLAotCQkgICAgZnMt PmZzX2ZzbW50KTsKKwkJUEFOSUMoIiVzOiBtb2RpZmljYXRpb24gb24gcmVhZC1vbmx5IGZp bGVzeXN0ZW0iLCBmcy0+ZnNfZnNtbnQpOwogCWlmICh3YWl0Zm9yID09IE1OVF9MQVpZKQog CQlyZXR1cm4gKGZmc19zeW5jX2xhenkobXApKTsKIApAQCAtMTg3Myw3ICsxODcyLDcgQEAg ZmZzX3NidXBkYXRlKHVtcCwgd2FpdGZvciwgc3VzcGVuZGVkKQogCWlmIChmcy0+ZnNfcm9u bHkgPT0gMSAmJgogCSAgICAodW1wLT51bV9tb3VudHAtPm1udF9mbGFnICYgKE1OVF9SRE9O TFkgfCBNTlRfVVBEQVRFKSkgIT0KIAkgICAgKE1OVF9SRE9OTFkgfCBNTlRfVVBEQVRFKSAm JiB1bXAtPnVtX2ZzY2twaWQgPT0gMCkKLQkJcGFuaWMoImZmc19zYnVwZGF0ZTogd3JpdGUg cmVhZC1vbmx5IGZpbGVzeXN0ZW0iKTsKKwkJUEFOSUMoIndyaXRlIHJlYWQtb25seSBmaWxl c3lzdGVtIik7CiAJLyoKIAkgKiBXZSB1c2UgdGhlIHN1cGVyYmxvY2sncyBidWYgdG8gc2Vy aWFsaXplIGNhbGxzIHRvIGZmc19zYnVwZGF0ZSgpLgogCSAqLwpAQCAtMTk4MCw3ICsxOTc5 LDcgQEAgZmZzX2JhY2tncm91bmR3cml0ZWRvbmUoc3RydWN0IGJ1ZiAqYnApCiAJYnVmb2Jq ID0gYnAtPmJfYnVmb2JqOwogCUJPX0xPQ0soYnVmb2JqKTsKIAlpZiAoKG9yaWdicCA9IGdi aW5jb3JlKGJwLT5iX2J1Zm9iaiwgYnAtPmJfbGJsa25vKSkgPT0gTlVMTCkKLQkJcGFuaWMo ImJhY2tncm91bmR3cml0ZWRvbmU6IGxvc3QgYnVmZmVyIik7CisJCVBBTklDKCJsb3N0IGJ1 ZmZlciIpOwogCS8qIEdyYWIgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIGJlIGRyb3BwZWQgYnkg dGhlIGJ1ZmRvbmUoKSBiZWxvdy4gKi8KIAlidWZvYmpfd3JlZmwoYnVmb2JqKTsKIAlCT19V TkxPQ0soYnVmb2JqKTsKQEAgLTIwNDQsNyArMjA0Myw3IEBAIGZmc19idWZ3cml0ZShzdHJ1 Y3QgYnVmICpicCkKIAlvbGRmbGFncyA9IGJwLT5iX2ZsYWdzOwogCiAJaWYgKCFCVUZfSVNM T0NLRUQoYnApKQotCQlwYW5pYygiYnVmd3JpdGU6IGJ1ZmZlciBpcyBub3QgYnVzeT8/PyIp OworCQlQQU5JQygiYnVmZmVyIGlzIG5vdCBidXN5Pz8/Iik7CiAJcyA9IHNwbGJpbygpOwog CS8qCiAJICogSWYgYSBiYWNrZ3JvdW5kIHdyaXRlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3Ms IGRlbGF5CkBAIC0yMDYyLDcgKzIwNjEsNyBAQCBmZnNfYnVmd3JpdGUoc3RydWN0IGJ1ZiAq YnApCiAJCWJwLT5iX3ZmbGFncyB8PSBCVl9CS0dSRFdBSVQ7CiAJCW1zbGVlcCgmYnAtPmJf eGZsYWdzLCBCT19NVFgoYnAtPmJfYnVmb2JqKSwgUFJJQklPLCAiYndyYmciLCAwKTsKIAkJ aWYgKGJwLT5iX3ZmbGFncyAmIEJWX0JLR1JESU5QUk9HKQotCQkJcGFuaWMoImJ1ZndyaXRl OiBzdGlsbCB3cml0aW5nIik7CisJCQlQQU5JQygic3RpbGwgd3JpdGluZyIpOwogCX0KIAlC T19VTkxPQ0soYnAtPmJfYnVmb2JqKTsKIApAQCAtMjE1Miw3ICsyMTUxLDcgQEAgZmZzX2dl b21fc3RyYXRlZ3koc3RydWN0IGJ1Zm9iaiAqYm8sIHN0cnVjdCBidWYgKmJwKQogCQlpZiAo KGJwLT5iX2ZsYWdzICYgQl9WQUxJRFNVU1BXUlQpID09IDAgJiYKIAkJICAgIGJwLT5iX3Zw ICE9IE5VTEwgJiYgYnAtPmJfdnAtPnZfbW91bnQgIT0gTlVMTCAmJgogCQkgICAgKGJwLT5i X3ZwLT52X21vdW50LT5tbnRfa2Vybl9mbGFnICYgTU5US19TVVNQRU5ERUQpICE9IDApCi0J CQlwYW5pYygiZmZzX2dlb21fc3RyYXRlZ3k6IGJhZCBJL08iKTsKKwkJCVBBTklDKCJiYWQg SS9PIik7CiAJCW5vY29weSA9IGJwLT5iX2ZsYWdzICYgQl9OT0NPUFk7CiAJCWJwLT5iX2Zs YWdzICY9IH4oQl9WQUxJRFNVU1BXUlQgfCBCX05PQ09QWSk7CiAJCWlmICgodnAtPnZfdmZs YWcgJiBWVl9DT1BZT05XUklURSkgJiYgbm9jb3B5ID09IDAgJiYKZGlmZiAtLWdpdCBhL3N5 cy91ZnMvZmZzL2Zmc192bm9wcy5jIGIvc3lzL3Vmcy9mZnMvZmZzX3Zub3BzLmMKaW5kZXgg NWM5OWQ1Yi4uYmUyYjNjYiAxMDA2NDQKLS0tIGEvc3lzL3Vmcy9mZnMvZmZzX3Zub3BzLmMK KysrIGIvc3lzL3Vmcy9mZnMvZmZzX3Zub3BzLmMKQEAgLTI1NywxMiArMjU3LDEyIEBAIGxv b3A6CiAJCSAgICBsYm5fbGV2ZWwoYnAtPmJfbGJsa25vKSA+PSBwYXNzZXMpCiAJCQljb250 aW51ZTsKIAkJaWYgKGJwLT5iX2xibGtubyA+IGxibikKLQkJCXBhbmljKCJmZnNfc3luY3Zu b2RlOiBzeW5jaW5nIHRydW5jYXRlZCBkYXRhLiIpOworCQkJUEFOSUMoInN5bmNpbmcgdHJ1 bmNhdGVkIGRhdGEuIik7CiAJCWlmIChCVUZfTE9DSyhicCwgTEtfRVhDTFVTSVZFIHwgTEtf Tk9XQUlULCBOVUxMKSkKIAkJCWNvbnRpbnVlOwogCQlCT19VTkxPQ0soYm8pOwogCQlpZiAo KGJwLT5iX2ZsYWdzICYgQl9ERUxXUkkpID09IDApCi0JCQlwYW5pYygiZmZzX2ZzeW5jOiBu b3QgZGlydHkiKTsKKwkJCVBBTklDKCJub3QgZGlydHkiKTsKIAkJLyoKIAkJICogQ2hlY2sg Zm9yIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsbHkgY29tcGxldGUgdGhlbS4KIAkJICov CkBAIC00MzcsNyArNDM3LDcgQEAgZmZzX3JlYWQoYXApCiAjaWZkZWYgbm90eWV0CiAJCXJl dHVybiAoZmZzX2V4dHJlYWQodnAsIHVpbywgaW9mbGFnKSk7CiAjZWxzZQotCQlwYW5pYygi ZmZzX3JlYWQrSU9fRVhUIik7CisJCVBBTklDKCJJT19FWFQiKTsKICNlbmRpZgogI2lmZGVm IERJUkVDVElPCiAJaWYgKChpb2ZsYWcgJiBJT19ESVJFQ1QpICE9IDApIHsKQEAgLTQ1NCwx MyArNDU0LDEzIEBAIGZmc19yZWFkKGFwKQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICh1 aW8tPnVpb19ydyAhPSBVSU9fUkVBRCkKLQkJcGFuaWMoImZmc19yZWFkOiBtb2RlIik7CisJ CVBBTklDKCJtb2RlIik7CiAKIAlpZiAodnAtPnZfdHlwZSA9PSBWTE5LKSB7CiAJCWlmICgo aW50KWlwLT5pX3NpemUgPCB2cC0+dl9tb3VudC0+bW50X21heHN5bWxpbmtsZW4pCi0JCQlw YW5pYygiZmZzX3JlYWQ6IHNob3J0IHN5bWxpbmsiKTsKKwkJCVBBTklDKCJzaG9ydCBzeW1s aW5rIik7CiAJfSBlbHNlIGlmICh2cC0+dl90eXBlICE9IFZSRUcgJiYgdnAtPnZfdHlwZSAh PSBWRElSKQotCQlwYW5pYygiZmZzX3JlYWQ6IHR5cGUgJWQiLCAgdnAtPnZfdHlwZSk7CisJ CVBBTklDKCJ0eXBlICVkIiwgIHZwLT52X3R5cGUpOwogI2VuZGlmCiAJb3JpZ19yZXNpZCA9 IHVpby0+dWlvX3Jlc2lkOwogCUtBU1NFUlQob3JpZ19yZXNpZCA+PSAwLCAoImZmc19yZWFk OiB1aW8tPnVpb19yZXNpZCA8IDAiKSk7CkBAIC02NTAsNyArNjUwLDcgQEAgZmZzX3dyaXRl KGFwKQogI2lmZGVmIG5vdHlldAogCQlyZXR1cm4gKGZmc19leHR3cml0ZSh2cCwgdWlvLCBp b2ZsYWcsIGFwLT5hX2NyZWQpKTsKICNlbHNlCi0JCXBhbmljKCJmZnNfd3JpdGUrSU9fRVhU Iik7CisJCVBBTklDKCJJT19FWFQiKTsKICNlbmRpZgogCiAJc2VxY291bnQgPSBhcC0+YV9p b2ZsYWcgPj4gSU9fU0VRU0hJRlQ7CkBAIC02NTgsNyArNjU4LDcgQEAgZmZzX3dyaXRlKGFw KQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICh1aW8tPnVpb19ydyAhPSBVSU9fV1JJVEUp Ci0JCXBhbmljKCJmZnNfd3JpdGU6IG1vZGUiKTsKKwkJUEFOSUMoIm1vZGUiKTsKICNlbmRp ZgogCiAJc3dpdGNoICh2cC0+dl90eXBlKSB7CkBAIC02NzEsMTAgKzY3MSwxMCBAQCBmZnNf d3JpdGUoYXApCiAJY2FzZSBWTE5LOgogCQlicmVhazsKIAljYXNlIFZESVI6Ci0JCXBhbmlj KCJmZnNfd3JpdGU6IGRpciB3cml0ZSIpOworCQlQQU5JQygiZGlyIHdyaXRlIik7CiAJCWJy ZWFrOwogCWRlZmF1bHQ6Ci0JCXBhbmljKCJmZnNfd3JpdGU6IHR5cGUgJXAgJWQgKCVkLCVk KSIsIHZwLCAoaW50KXZwLT52X3R5cGUsCisJCVBBTklDKCJ0eXBlICVwICVkICglZCwlZCki LCB2cCwgKGludCl2cC0+dl90eXBlLAogCQkJKGludCl1aW8tPnVpb19vZmZzZXQsCiAJCQko aW50KXVpby0+dWlvX3Jlc2lkCiAJCSk7CkBAIC04ODYsNyArODg2LDcgQEAgZmZzX2V4dHJl YWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCiAj aWZkZWYgSU5WQVJJQU5UUwogCWlmICh1aW8tPnVpb19ydyAhPSBVSU9fUkVBRCB8fCBmcy0+ ZnNfbWFnaWMgIT0gRlNfVUZTMl9NQUdJQykKLQkJcGFuaWMoImZmc19leHRyZWFkOiBtb2Rl Iik7CisJCVBBTklDKCJtb2RlIik7CiAKICNlbmRpZgogCW9yaWdfcmVzaWQgPSB1aW8tPnVp b19yZXNpZDsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIGZmc19leHR3cml0ZShzdHJ1Y3Qgdm5v ZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcsIHN0cnVjdCB1Y3JlZCAqdWNy ZWQpCiAKICNpZmRlZiBJTlZBUklBTlRTCiAJaWYgKHVpby0+dWlvX3J3ICE9IFVJT19XUklU RSB8fCBmcy0+ZnNfbWFnaWMgIT0gRlNfVUZTMl9NQUdJQykKLQkJcGFuaWMoImZmc19leHR3 cml0ZTogbW9kZSIpOworCQlQQU5JQygibW9kZSIpOwogI2VuZGlmCiAKIAlpZiAoaW9mbGFn ICYgSU9fQVBQRU5EKQpAQCAtMTM2NSw3ICsxMzY1LDcgQEAgc3RydWN0IHZvcF9zdHJhdGVn eV9hcmdzIHsKIAkJcmV0dXJuIChWT1BfU1RSQVRFR1lfQVBWKCZ1ZnNfdm5vZGVvcHMsIGFw KSk7CiAJaWYgKHZwLT52X3R5cGUgPT0gVkZJRk8pCiAJCXJldHVybiAoVk9QX1NUUkFURUdZ X0FQVigmdWZzX2ZpZm9vcHMsIGFwKSk7Ci0JcGFuaWMoInNwZWMgbm9kZXMgd2VudCBoZXJl Iik7CisJUEFOSUMoInNwZWMgbm9kZXMgd2VudCBoZXJlIik7CiB9CiAKIC8qCi0tIAoxLjgu MS4yCgo= --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8; name="0006-ufs-Remove-extra-n-at-end-of-panic-messages.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0006-ufs-Remove-extra-n-at-end-of-panic-messages.patch" RnJvbSA3MWQ2ZTIwNmEzODM4ZDBmYzQxY2RiNGJjN2JmZWJjM2FmMGI5MzQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDEyOjA3OjE4ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCA2LzZdIHVmczogUmVtb3ZlIGV4dHJhIFxuIGF0IGVuZCBvZiBwYW5pYyBt ZXNzYWdlcy4KCi0tLQogc3lzL3Vmcy9mZnMvZmZzX3NvZnRkZXAuYyB8IDIzICsrKysrKysr KysrLS0tLS0tLS0tLS0tCiBzeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgIHwgIDQgKystLQog c3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMgICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDE0 IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N5cy91ZnMv ZmZzL2Zmc19zb2Z0ZGVwLmMgYi9zeXMvdWZzL2Zmcy9mZnNfc29mdGRlcC5jCmluZGV4IDQ4 ZDgwNzMuLjg3YjZkYTggMTAwNjQ0Ci0tLSBhL3N5cy91ZnMvZmZzL2Zmc19zb2Z0ZGVwLmMK KysrIGIvc3lzL3Vmcy9mZnMvZmZzX3NvZnRkZXAuYwpAQCAtNDE1MSwxNCArNDE1MSwxNCBA QCBmcmVlX2phZGRyZWYoamFkZHJlZikKIAlpZiAoKGphZGRyZWYtPmphX3N0YXRlICYgQUxM Q09NUExFVEUpICE9IEFMTENPTVBMRVRFKQogCQlyZXR1cm47CiAJaWYgKGphZGRyZWYtPmph X3JlZi5pZl9qc2VnZGVwKQotCQlQQU5JQygic2VnZGVwIGF0dGFjaGVkIHRvIGphZGRyZWYg JXAoMHglWClcbiIsCisJCVBBTklDKCJzZWdkZXAgYXR0YWNoZWQgdG8gamFkZHJlZiAlcCgw eCVYKSIsCiAJCSAgICBqYWRkcmVmLCBqYWRkcmVmLT5qYV9zdGF0ZSk7CiAJaWYgKGphZGRy ZWYtPmphX3N0YXRlICYgTkVXQkxPQ0spCiAJCUxJU1RfUkVNT1ZFKGphZGRyZWYsIGphX2Jt ZGVwcyk7CiAJaWYgKGphZGRyZWYtPmphX3N0YXRlICYgKElOUFJPR1JFU1MgfCBPTldPUktM SVNUKSkKIAkJUEFOSUMoIkJhZCBzdGF0ZSAlcCgweCVYKSIsIGphZGRyZWYsIGphZGRyZWYt PmphX3N0YXRlKTsKIAlpZiAoamFkZHJlZi0+amFfbWtkaXIgIT0gTlVMTCkKLQkJUEFOSUMo IldvcmsgcGVuZGluZywgMHglWFxuIiwgamFkZHJlZi0+amFfc3RhdGUpOworCQlQQU5JQygi V29yayBwZW5kaW5nLCAweCVYIiwgamFkZHJlZi0+amFfc3RhdGUpOwogCVdPUktJVEVNX0ZS RUUoamFkZHJlZiwgRF9KQUREUkVGKTsKIH0KIApAQCAtNTE3OCw3ICs1MTc4LDcgQEAgam5l d2Jsa19tZXJnZShuZXcsIG9sZCwgd2toZCkKIAkJcmV0dXJuIChvbGQpOwogCX0KIAlpZiAo b2xkLT53a190eXBlICE9IERfSk5FV0JMSyB8fCBuZXctPndrX3R5cGUgIT0gRF9KTkVXQkxL KQotCQlQQU5JQygiQmFkIHR5cGU6IG9sZCAlZCBuZXcgJWRcbiIsIG9sZC0+d2tfdHlwZSwg bmV3LT53a190eXBlKTsKKwkJUEFOSUMoIkJhZCB0eXBlOiBvbGQgJWQgbmV3ICVkIiwgb2xk LT53a190eXBlLCBuZXctPndrX3R5cGUpOwogCS8qCiAJICogSGFuZGxlIG1lcmdpbmcgb2Yg dHdvIGpuZXdibGsgcmVjb3JkcyB0aGF0IGRlc2NyaWJlCiAJICogZGlmZmVyZW50IHNldHMg b2YgZnJhZ21lbnRzIGluIHRoZSBzYW1lIGJsb2NrLgpAQCAtNTM4Nyw4ICs1Mzg3LDcgQEAg aGFuZGxlX3dvcmtpdGVtX2ZyZWVmcmFnKGZyZWVmcmFnKQogCSAqLwogCWlmIChmcmVlZnJh Zy0+ZmZfamRlcCkgewogCQlpZiAoZnJlZWZyYWctPmZmX2pkZXAtPndrX3R5cGUgIT0gRF9K TkVXQkxLKQotCQkJUEFOSUMoIlVuZXhwZWN0ZWQgdHlwZSAlZFxuIiwKLQkJCSAgICBmcmVl ZnJhZy0+ZmZfamRlcC0+d2tfdHlwZSk7CisJCQlQQU5JQygiVW5leHBlY3RlZCB0eXBlICVk IiwgZnJlZWZyYWctPmZmX2pkZXAtPndrX3R5cGUpOwogCQljYW5jZWxfam5ld2JsayhXS19K TkVXQkxLKGZyZWVmcmFnLT5mZl9qZGVwKSwgJndraGQpOwogCX0KIAlGUkVFX0xPQ0soJmxr KTsKQEAgLTgyMTQsNyArODIxMyw3IEBAIHNvZnRkZXBfc2V0dXBfZGlyZWN0b3J5X2FkZChi cCwgZHAsIGRpcm9mZnNldCwgbmV3aW51bSwgbmV3ZGlyYnAsIGlzbmV3YmxrKQogCXBhZ2Vk ZXBfbG9va3VwKG1wLCBicCwgZHAtPmlfbnVtYmVyLCBsYm4sIERFUEFMTE9DLCAmcGFnZWRl cCk7CiAjaWZkZWYgREVCVUcKIAlpZiAoZGlyYWRkX2xvb2t1cChwYWdlZGVwLCBvZmZzZXQp ICE9IE5VTEwpCi0JCVBBTklDKCIlcCBhbHJlYWR5IGF0IG9mZiAlZFxuIiwKKwkJUEFOSUMo IiVwIGFscmVhZHkgYXQgb2ZmICVkIiwKIAkJICAgIGRpcmFkZF9sb29rdXAocGFnZWRlcCwg b2Zmc2V0KSwgb2Zmc2V0KTsKICNlbmRpZgogCWRhcC0+ZGFfcGFnZWRlcCA9IHBhZ2VkZXA7 CkBAIC04NzM0LDcgKzg3MzMsNyBAQCBjYW5jZWxfbWtkaXJfZG90ZG90KGlwLCBkaXJyZW0s IGpyZW1yZWYpCiAJCWlmIChta2Rpci0+bWRfZGlyYWRkID09IGRhcCAmJiBta2Rpci0+bWRf c3RhdGUgJiBNS0RJUl9QQVJFTlQpCiAJCQlicmVhazsKIAlpZiAobWtkaXIgPT0gTlVMTCkK LQkJUEFOSUMoIlVuYWJsZSB0byBmaW5kIG1rZGlyXG4iKTsKKwkJUEFOSUMoIlVuYWJsZSB0 byBmaW5kIG1rZGlyIik7CiAJaWYgKChqYWRkcmVmID0gbWtkaXItPm1kX2phZGRyZWYpICE9 IE5VTEwpIHsKIAkJbWtkaXItPm1kX2phZGRyZWYgPSBOVUxMOwogCQlqYWRkcmVmLT5qYV9z dGF0ZSAmPSB+TUtESVJfUEFSRU5UOwpAQCAtODkyNiw3ICs4OTI1LDcgQEAgbmV3ZGlycmVt KGJwLCBkcCwgaXAsIGlzcm1kaXIsIHByZXZkaXJyZW1wKQogCiAJCUxJU1RfRk9SRUFDSCh3 aywgJmRpcnJlbS0+ZG1fandvcmssIHdrX2xpc3QpCiAJCQlpZiAod2stPndrX3N0YXRlICYg KE1LRElSX0JPRFkgfCBNS0RJUl9QQVJFTlQpKQotCQkJCVBBTklDKCJiYWQgd2sgJXAgKDB4 JVgpXG4iLCB3aywgd2stPndrX3N0YXRlKTsKKwkJCQlQQU5JQygiYmFkIHdrICVwICgweCVY KSIsIHdrLCB3ay0+d2tfc3RhdGUpOwogCX0KICNlbmRpZgogCkBAIC05MjUzLDcgKzkyNTIs NyBAQCB1bmxpbmtlZF9pbm9kZWRlcChtcCwgaW5vZGVkZXApCiAJdW1wID0gVkZTVE9VRlMo bXApOwogCXVtcC0+dW1fZnMtPmZzX2Ztb2QgPSAxOwogCWlmIChpbm9kZWRlcC0+aWRfc3Rh dGUgJiBVTkxJTktFRCkKLQkJUEFOSUMoIiVwIGFscmVhZHkgdW5saW5rZWRcbiIsIGlub2Rl ZGVwKTsKKwkJUEFOSUMoIiVwIGFscmVhZHkgdW5saW5rZWQiLCBpbm9kZWRlcCk7CiAJaW5v ZGVkZXAtPmlkX3N0YXRlIHw9IFVOTElOS0VEOwogCVRBSUxRX0lOU0VSVF9IRUFEKCZ1bXAt PnNvZnRkZXBfdW5saW5rZWQsIGlub2RlZGVwLCBpZF91bmxpbmtlZCk7CiB9CkBAIC0xMDYy Myw3ICsxMDYyMiw3IEBAIHNvZnRkZXBfZGlza193cml0ZV9jb21wbGV0ZShicCkKIAkJV09S S0xJU1RfUkVNT1ZFKHdrKTsKIAkJZGVwX3dyaXRlW3drLT53a190eXBlXSsrOwogCQlpZiAo d2sgPT0gb3drKQotCQkJUEFOSUMoImR1cGxpY2F0ZSB3b3JrbGlzdDogJXBcbiIsIHdrKTsK KwkJCVBBTklDKCJkdXBsaWNhdGUgd29ya2xpc3Q6ICVwIiwgd2spOwogCQlvd2sgPSB3azsK IAkJc3dpdGNoICh3ay0+d2tfdHlwZSkgewogCkBAIC0xMDg1MSw3ICsxMDg1MCw3IEBAIGhh bmRsZV9qd29yayh3a2hkKQogCQkJaGFuZGxlX3dyaXR0ZW5fZnJlZXdvcmsoV0tfRlJFRVdP Uksod2spKTsKIAkJCWNvbnRpbnVlOwogCQlkZWZhdWx0OgotCQkJUEFOSUMoIlVua25vd24g dHlwZSAlc1xuIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBBTklDKCJVbmtub3du IHR5cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQl9CiAJfQogfQpAQCAtMTEz OTMsNyArMTEzOTIsNyBAQCBoYW5kbGVfd3JpdHRlbl9ibXNhZmVtYXAoYm1zYWZlbWFwLCBi cCkKIAlpbnQgY2hnczsKIAogCWlmICgoYm1zYWZlbWFwLT5zbV9zdGF0ZSAmIElPU1RBUlRF RCkgPT0gMCkKLQkJUEFOSUMoIk5vdCBzdGFydGVkXG4iKTsKKwkJUEFOSUMoIk5vdCBzdGFy dGVkIik7CiAJdW1wID0gVkZTVE9VRlMoYm1zYWZlbWFwLT5zbV9saXN0LndrX21wKTsKIAlj aGdzID0gMDsKIAlibXNhZmVtYXAtPnNtX3N0YXRlICY9IH5JT1NUQVJURUQ7CmRpZmYgLS1n aXQgYS9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgYi9zeXMvdWZzL3Vmcy91ZnNfbG9va3Vw LmMKaW5kZXggMTc2Yzg3OS4uYmVmOTgyMiAxMDA2NDQKLS0tIGEvc3lzL3Vmcy91ZnMvdWZz X2xvb2t1cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19sb29rdXAuYwpAQCAtMTIxMSw3ICsx MjExLDcgQEAgdWZzX2RpcnJlbW92ZShkdnAsIGlwLCBmbGFncywgaXNybWRpcikKIAkJdWZz ZGlyaGFzaF9yZW1vdmUoZHAsIHJlcCwgZHAtPmlfb2Zmc2V0KTsKICNlbmRpZgogCWlmIChp cCAmJiByZXAtPmRfaW5vICE9IGlwLT5pX251bWJlcikKLQkJUEFOSUMoImlwICVqdSBkb2Vz IG5vdCBtYXRjaCBkaXJlbnQgaW5vICVqdVxuIiwKKwkJUEFOSUMoImlwICVqdSBkb2VzIG5v dCBtYXRjaCBkaXJlbnQgaW5vICVqdSIsCiAJCSAgICAodWludG1heF90KWlwLT5pX251bWJl ciwgKHVpbnRtYXhfdClyZXAtPmRfaW5vKTsKIAlpZiAoZHAtPmlfY291bnQgPT0gMCkgewog CQkvKgpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdWZzX2NoZWNrcGF0aChpbm9fdCBzb3VyY2Vf aW5vLCBpbm9fdCBwYXJlbnRfaW5vLCBzdHJ1Y3QgaW5vZGUgKnRhcmdldCwgc3RydWN0IHUK IAl9CiAKIAlpZiAoZXJyb3IgPT0gRU5PVERJUikKLQkJUEFOSUMoIi4uIG5vdCBhIGRpcmVj dG9yeVxuIik7CisJCVBBTklDKCIuLiBub3QgYSBkaXJlY3RvcnkiKTsKIAlpZiAodnAgIT0g dHZwKQogCQl2cHV0KHZwKTsKIAlyZXR1cm4gKGVycm9yKTsKZGlmZiAtLWdpdCBhL3N5cy91 ZnMvdWZzL3Vmc192bm9wcy5jIGIvc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMKaW5kZXggNjI0 MDE5MC4uZmE1YzhkNCAxMDA2NDQKLS0tIGEvc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMKKysr IGIvc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHJlbG9j azoKIAkJaWYgKGVycm9yKQogCQkJUEFOSUMoImZyb20gZW50cnkgd2VudCBhd2F5ISIpOwog CQlpZiAoaW5vICE9IGZpcC0+aV9udW1iZXIpCi0JCQlQQU5JQygiaW5vIG1pc21hdGNoICVq dSAhPSAlanVcbiIsCisJCQlQQU5JQygiaW5vIG1pc21hdGNoICVqdSAhPSAlanUiLAogCQkJ ICAgICh1aW50bWF4X3QpaW5vLCAodWludG1heF90KWZpcC0+aV9udW1iZXIpOwogCX0KIAkv KgotLSAKMS44LjEuMgoK --------------080109060307080707080700-- >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: This is a multi-part message in MIME format. --------------080109060307080707080700 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bithelp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?510E47A4.1020203>
