From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 7/7] x86/hvm: Drop hvm_{vmx,svm} shorthands Date: Tue, 28 Aug 2018 18:39:06 +0100 Message-ID: <1535477946-17892-8-git-send-email-andrew.cooper3@citrix.com> References: <1535477946-17892-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1535477946-17892-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Wei Liu , Jan Beulich , George Dunlap , Andrew Cooper , Jun Nakajima , Boris Ostrovsky , Brian Woods , Suravee Suthikulpanit , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QnkgbWFraW5nIHt2bXgsc3ZtfSBpbiBodm1fdmNwdSBpbnRvIGFuIGFub255bW91cyB1bmlvbiAo Y29uc2lzdGVudCB3aXRoCmRvbWFpbiBzaWRlIG9mIHRoaW5ncyksIHRoZSBodm1fe3ZteCxzdm19 IGRlZmluZXMgY2FuIGJlIGRyb3BwZWQsIGFuZCBhbGwgY29kZQpyZWZlciB0byB0aGUgY29ycmVj dGx5LW5hbWVkIGZpZWxkcy4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgZGF0YSBoaWVyYWNoeSBpcyBu bwpsb25nZXIgb2JzY3VyZWQgZnJvbSBncmVwL2NzY29wZS90YWdzL2V0Yy4KClJlZm9ybWF0IG9u ZSBjb21tZW50IGFuZCBzd2l0Y2ggb25lIGJvb2xfdCB0byBib29sIHdoaWxlIG1ha2luZyBjaGFu Z2VzLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVy IDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGlj aEBzdXNlLmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQ YXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ0M6IEp1biBOYWthamltYSA8anVuLm5h a2FqaW1hQGludGVsLmNvbT4KQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpD QzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ0M6IFN1cmF2 ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+CkNDOiBCcmlh biBXb29kcyA8YnJpYW4ud29vZHNAYW1kLmNvbT4KQ0M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5k dW5sYXBAZXUuY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1aWQuYyAgICAgICAgICAg ICAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvaHZtL3N2bS9hc2lkLmMgICAgICAgIHwgICAyICst CiB4ZW4vYXJjaC94ODYvaHZtL3N2bS9lbXVsYXRlLmMgICAgIHwgICA0ICstCiB4ZW4vYXJjaC94 ODYvaHZtL3N2bS9pbnRyLmMgICAgICAgIHwgICA4ICstCiB4ZW4vYXJjaC94ODYvaHZtL3N2bS9u ZXN0ZWRzdm0uYyAgIHwgIDI4ICsrLS0KIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jICAgICAg ICAgfCAxNzggKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3N2bS92 bWNiLmMgICAgICAgIHwgICA4ICstCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC9pbnRyLmMgICAgICAg IHwgIDE4ICstLQogeGVuL2FyY2gveDg2L2h2bS92bXgvcmVhbG1vZGUuYyAgICB8ICAxOCArLS0K IHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyAgICAgICAgfCAxNTQgKysrKysrKysrKy0tLS0t LS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyAgICAgICAgIHwgMjcyICsrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXgu YyAgICAgICAgfCAgNjQgKysrKy0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAgICAg ICAgIHwgICA2ICstCiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgIHwgIDEyICst CiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pby5jICAgICAgIHwgICAyICstCiB4ZW4vaW5jbHVk ZS9hc20teDg2L2RvbWFpbi5oICAgICAgIHwgICA0IC0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZt L3N2bS9hc2lkLmggfCAgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZjcHUuaCAgICAg fCAgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmggfCAgIDIgKy0KIDE5 IGZpbGVzIGNoYW5nZWQsIDM5MCBpbnNlcnRpb25zKCspLCAzOTYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdWlkLmMgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwppbmRl eCA1OWQzMjk4Li5kMjFlNzQ1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1aWQuYworKysg Yi94ZW4vYXJjaC94ODYvY3B1aWQuYwpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgdm9pZCBndWVzdF9j cHVpZChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbGVhZiwKICAgICBjYXNlIDB4ODAw MDAwMWM6CiAgICAgICAgIGlmICggKHYtPmFyY2gueGNyMCAmIFg4Nl9YQ1IwX0xXUCkgJiYgY3B1 X2hhc19zdm0gKQogICAgICAgICAgICAgLyogVHVybiBvbiBhdmFpbGFibGUgYml0IGFuZCBvdGhl ciBmZWF0dXJlcyBzcGVjaWZpZWQgaW4gbHdwX2NmZy4gKi8KLSAgICAgICAgICAgIHJlcy0+YSA9 IChyZXMtPmQgJiB2LT5hcmNoLmh2bV9zdm0uZ3Vlc3RfbHdwX2NmZykgfCAxOworICAgICAgICAg ICAgcmVzLT5hID0gKHJlcy0+ZCAmIHYtPmFyY2guaHZtLnN2bS5ndWVzdF9sd3BfY2ZnKSB8IDE7 CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v c3ZtL2FzaWQuYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2FzaWQuYwppbmRleCA3Y2M1NGRhLi5l NTU0ZTI1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9hc2lkLmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS9zdm0vYXNpZC5jCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgc3ZtX2FzaWRf aW5pdChjb25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiB2b2lkIHN2bV9hc2lkX2hhbmRsZV92 bXJ1bih2b2lkKQogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKLSAgICBzdHJ1 Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSBjdXJyLT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1 Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSBjdXJyLT5hcmNoLmh2bS5zdm0udm1jYjsKICAgICBzdHJ1 Y3QgaHZtX3ZjcHVfYXNpZCAqcF9hc2lkID0KICAgICAgICAgbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vl c3Rtb2RlKGN1cnIpCiAgICAgICAgID8gJnZjcHVfbmVzdGVkaHZtKGN1cnIpLm52X24yYXNpZCA6 ICZjdXJyLT5hcmNoLmh2bS5uMWFzaWQ7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2 bS9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9lbXVsYXRlLmMKaW5kZXggNTM1Njc0 ZS4uM2QwNGFmMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vZW11bGF0ZS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2VtdWxhdGUuYwpAQCAtMjgsNyArMjgsNyBAQAogCiBz dGF0aWMgdW5zaWduZWQgbG9uZyBzdm1fbmV4dHJpcF9pbnNuX2xlbmd0aChzdHJ1Y3QgdmNwdSAq dikKIHsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1j YjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsK IAogICAgIGlmICggIWNwdV9oYXNfc3ZtX25yaXBzICkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04 Niw3ICs4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogaW50IF9fZ2V0X2luc3RydWN0aW9u X2xlbmd0aF9mcm9tX2xpc3Qoc3RydWN0IHZjcHUgKnYsCiAgICAgICAgIGNvbnN0IGVudW0gaW5z dHJ1Y3Rpb25faW5kZXggKmxpc3QsIHVuc2lnbmVkIGludCBsaXN0X2NvdW50KQogewotICAgIHN0 cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVj dCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNiOwogICAgIHN0cnVjdCBo dm1fZW11bGF0ZV9jdHh0IGN0eHQ7CiAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX3N0YXRlICpzdGF0 ZTsKICAgICB1bnNpZ25lZCBsb25nIGluc3RfbGVuLCBqOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9zdm0vaW50ci5jIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vaW50ci5jCmluZGV4IDg1 MTFmZjAuLmExN2VjOGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2ludHIuYwor KysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9pbnRyLmMKQEAgLTQwLDcgKzQwLDcgQEAKIAogc3Rh dGljIHZvaWQgc3ZtX2luamVjdF9ubWkoc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgc3RydWN0IHZt Y2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZtY2Jf c3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgdTMyIGdlbmVyYWwxX2lu dGVyY2VwdHMgPSB2bWNiX2dldF9nZW5lcmFsMV9pbnRlcmNlcHRzKHZtY2IpOwogICAgIGV2ZW50 aW5qX3QgZXZlbnQ7CiAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgc3ZtX2luamVjdF9u bWkoc3RydWN0IHZjcHUgKnYpCiAKIHN0YXRpYyB2b2lkIHN2bV9pbmplY3RfZXh0aW50KHN0cnVj dCB2Y3B1ICp2LCBpbnQgdmVjdG9yKQogewotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9 IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYt PmFyY2guaHZtLnN2bS52bWNiOwogICAgIGV2ZW50aW5qX3QgZXZlbnQ7CiAKICAgICBldmVudC5i eXRlcyA9IDA7CkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyB2b2lkIHN2bV9pbmplY3RfZXh0aW50 KHN0cnVjdCB2Y3B1ICp2LCBpbnQgdmVjdG9yKQogCiBzdGF0aWMgdm9pZCBzdm1fZW5hYmxlX2lu dHJfd2luZG93KHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgaHZtX2ludGFjayBpbnRhY2spCiB7Ci0g ICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAg c3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgdWlu dDMyX3QgZ2VuZXJhbDFfaW50ZXJjZXB0cyA9IHZtY2JfZ2V0X2dlbmVyYWwxX2ludGVyY2VwdHMo dm1jYik7CiAgICAgdmludHJfdCBpbnRyOwogCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZv aWQgc3ZtX2VuYWJsZV9pbnRyX3dpbmRvdyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9pbnRh Y2sgaW50YWNrKQogdm9pZCBzdm1faW50cl9hc3Npc3Qodm9pZCkgCiB7CiAgICAgc3RydWN0IHZj cHUgKnYgPSBjdXJyZW50OwotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2gu aHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZt LnN2bS52bWNiOwogICAgIHN0cnVjdCBodm1faW50YWNrIGludGFjazsKICAgICBlbnVtIGh2bV9p bnRibGsgaW50YmxrOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRz dm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCmluZGV4IDlkMGZlZjEuLjNm NGY0MDMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p ZCBuc3ZtX3ZjcHVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKICAgICAgKiBvZiBsMSB2bWNiIHBh Z2UuCiAgICAgICovCiAgICAgaWYgKG52LT5udl9uMXZtY3gpCi0gICAgICAgIHYtPmFyY2guaHZt X3N2bS52bWNiID0gbnYtPm52X24xdm1jeDsKKyAgICAgICAgdi0+YXJjaC5odm0uc3ZtLnZtY2Ig PSBudi0+bnZfbjF2bWN4OwogCiAgICAgaWYgKHN2bS0+bnNfY2FjaGVkX21zcnBtKSB7CiAgICAg ICAgIGZyZWVfeGVuaGVhcF9wYWdlcyhzdm0tPm5zX2NhY2hlZF9tc3JwbSwKQEAgLTI3Miw4ICsy NzIsOCBAQCBzdGF0aWMgaW50IG5zdm1fdmNwdV9ob3N0cmVzdG9yZShzdHJ1Y3QgdmNwdSAqdiwg c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICovCiAKICAgICAvKiBzd2l0Y2ggdm1j YiB0byBsMSBndWVzdCdzIHZtY2IgKi8KLSAgICB2LT5hcmNoLmh2bV9zdm0udm1jYiA9IG4xdm1j YjsKLSAgICB2LT5hcmNoLmh2bV9zdm0udm1jYl9wYSA9IG52LT5udl9uMXZtY3hfcGE7CisgICAg di0+YXJjaC5odm0uc3ZtLnZtY2IgPSBuMXZtY2I7CisgICAgdi0+YXJjaC5odm0uc3ZtLnZtY2Jf cGEgPSBudi0+bnZfbjF2bWN4X3BhOwogCiAgICAgLyogRUZFUiAqLwogICAgIHYtPmFyY2guaHZt Lmd1ZXN0X2VmZXIgPSBuMXZtY2ItPl9lZmVyOwpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyBp bnQgbnN2bV92Y3B1X2hvc3RyZXN0b3JlKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKIAogc3RhdGljIGludCBuc3ZtX3ZtcnVuX3Blcm1pc3Npb25tYXAoc3RydWN0 IHZjcHUgKnYsIGJvb2xfdCB2aW9wbSkKIHsKLSAgICBzdHJ1Y3Qgc3ZtX3ZjcHUgKmFyY2hfc3Zt ID0gJnYtPmFyY2guaHZtX3N2bTsKKyAgICBzdHJ1Y3Qgc3ZtX3ZjcHUgKmFyY2hfc3ZtID0gJnYt PmFyY2guaHZtLnN2bTsKICAgICBzdHJ1Y3QgbmVzdGVkc3ZtICpzdm0gPSAmdmNwdV9uZXN0ZWRz dm0odik7CiAgICAgc3RydWN0IG5lc3RlZHZjcHUgKm52ID0gJnZjcHVfbmVzdGVkaHZtKHYpOwog ICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqbnNfdm1jYiA9IG52LT5udl92dm1jeDsKQEAgLTM5MCw5 ICszOTAsNyBAQCBzdGF0aWMgaW50IG5zdm1fdm1ydW5fcGVybWlzc2lvbm1hcChzdHJ1Y3QgdmNw dSAqdiwgYm9vbF90IHZpb3BtKQogICAgIG52LT5udl9pb3BvcnQ4MCA9IGlvcG9ydF84MDsKICAg ICBudi0+bnZfaW9wb3J0RUQgPSBpb3BvcnRfZWQ7CiAKLSAgICAvKiB2LT5hcmNoLmh2bV9zdm0u bXNycG0gaGFzIHR5cGUgdW5zaWduZWQgbG9uZywgdGh1cwotICAgICAqIEJZVEVTX1BFUl9MT05H LgotICAgICAqLworICAgIC8qIHYtPmFyY2guaHZtLnN2bS5tc3JwbSBoYXMgdHlwZSB1bnNpZ25l ZCBsb25nLCB0aHVzIEJZVEVTX1BFUl9MT05HLiAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBNU1JQ TV9TSVpFIC8gQllURVNfUEVSX0xPTkc7IGkrKykKICAgICAgICAgc3ZtLT5uc19tZXJnZWRfbXNy cG1baV0gPSBhcmNoX3N2bS0+bXNycG1baV0gfCBuc19tc3JwbV9wdHJbaV07CiAKQEAgLTczMCw4 ICs3MjgsOCBAQCBuc3ZtX3ZjcHVfdm1lbnRyeShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MsCiAgICAgfQogCiAgICAgLyogc3dpdGNoIHZtY2IgdG8gc2hhZG93IHZt Y2IgKi8KLSAgICB2LT5hcmNoLmh2bV9zdm0udm1jYiA9IG52LT5udl9uMnZtY3g7Ci0gICAgdi0+ YXJjaC5odm1fc3ZtLnZtY2JfcGEgPSBudi0+bnZfbjJ2bWN4X3BhOworICAgIHYtPmFyY2guaHZt LnN2bS52bWNiID0gbnYtPm52X24ydm1jeDsKKyAgICB2LT5hcmNoLmh2bS5zdm0udm1jYl9wYSA9 IG52LT5udl9uMnZtY3hfcGE7CiAKICAgICByZXQgPSBuc3ZtX3ZtY2JfcHJlcGFyZTR2bXJ1bih2 LCByZWdzKTsKICAgICBpZiAocmV0KSB7CkBAIC04MDAsNyArNzk4LDcgQEAgbnN2bV92Y3B1X3Zt ZXhpdF9pbmplY3Qoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAog ICAgIHN0cnVjdCBuZXN0ZWR2Y3B1ICpudiA9ICZ2Y3B1X25lc3RlZGh2bSh2KTsKICAgICBzdHJ1 Y3QgbmVzdGVkc3ZtICpzdm0gPSAmdmNwdV9uZXN0ZWRzdm0odik7CiAgICAgc3RydWN0IHZtY2Jf c3RydWN0ICpuc192bWNiOwotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2gu aHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZt LnN2bS52bWNiOwogCiAgICAgaWYgKCB2bWNiLT5fdmludHIuZmllbGRzLnZnaWZfZW5hYmxlICkK ICAgICAgICAgQVNTRVJUKHZtY2ItPl92aW50ci5maWVsZHMudmdpZiA9PSAwKTsKQEAgLTEzNDgs NyArMTM0Niw3IEBAIG5lc3RlZHN2bV92bWV4aXRfZGVmZXIoc3RydWN0IHZjcHUgKnYsCiAgICAg dWludDY0X3QgZXhpdGNvZGUsIHVpbnQ2NF90IGV4aXRpbmZvMSwgdWludDY0X3QgZXhpdGluZm8y KQogewogICAgIHN0cnVjdCBuZXN0ZWRzdm0gKnN2bSA9ICZ2Y3B1X25lc3RlZHN2bSh2KTsKLSAg ICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBz dHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKIAogICAgIGlm ICggdm1jYi0+X3ZpbnRyLmZpZWxkcy52Z2lmX2VuYWJsZSApCiAgICAgICAgIHZtY2ItPl92aW50 ci5maWVsZHMudmdpZiA9IDA7CkBAIC0xNTIyLDcgKzE1MjAsNyBAQCB2b2lkIG5zdm1fdmNwdV9z d2l0Y2goc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAKICAgICBudiA9ICZ2Y3B1X25lc3Rl ZGh2bSh2KTsKICAgICBzdm0gPSAmdmNwdV9uZXN0ZWRzdm0odik7Ci0gICAgQVNTRVJUKHYtPmFy Y2guaHZtX3N2bS52bWNiICE9IE5VTEwpOworICAgIEFTU0VSVCh2LT5hcmNoLmh2bS5zdm0udm1j YiAhPSBOVUxMKTsKICAgICBBU1NFUlQobnYtPm52X24xdm1jeCAhPSBOVUxMKTsKICAgICBBU1NF UlQobnYtPm52X24ydm1jeCAhPSBOVUxMKTsKICAgICBBU1NFUlQobnYtPm52X24xdm1jeF9wYSAh PSBJTlZBTElEX1BBRERSKTsKQEAgLTE2MDcsNyArMTYwNSw3IEBAIGJvb2xfdAogbmVzdGVkc3Zt X2dpZl9pc3NldChzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgbmVzdGVkc3ZtICpzdm0g PSAmdmNwdV9uZXN0ZWRzdm0odik7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+ YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJj aC5odm0uc3ZtLnZtY2I7CiAKICAgICAvKiBnZXQgdGhlIHZtY2IgZ2lmIHZhbHVlIGlmIHVzaW5n IHZnaWYgKi8KICAgICBpZiAoIHZtY2ItPl92aW50ci5maWVsZHMudmdpZl9lbmFibGUgKQpAQCAt MTY0MCw3ICsxNjM4LDcgQEAgdm9pZCBzdm1fdm1leGl0X2RvX3N0Z2koc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MsIHN0cnVjdCB2Y3B1ICp2KQogCiB2b2lkIHN2bV92bWV4aXRfZG9fY2xnaShz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgc3RydWN0 IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZt Y2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgdW5zaWduZWQgaW50 IGluc3RfbGVuOwogICAgIHVpbnQzMl90IGdlbmVyYWwxX2ludGVyY2VwdHMgPSB2bWNiX2dldF9n ZW5lcmFsMV9pbnRlcmNlcHRzKHZtY2IpOwogICAgIHZpbnRyX3QgaW50cjsKQEAgLTE2NzIsNyAr MTY3MCw3IEBAIHZvaWQgc3ZtX3ZtZXhpdF9kb19jbGdpKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzLCBzdHJ1Y3QgdmNwdSAqdikKICAqLwogdm9pZCBzdm1fbmVzdGVkX2ZlYXR1cmVzX29uX2Vm ZXJfdXBkYXRlKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1j YiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9 IHYtPmFyY2guaHZtLnN2bS52bWNiOwogICAgIHN0cnVjdCBuZXN0ZWRzdm0gKnN2bSA9ICZ2Y3B1 X25lc3RlZHN2bSh2KTsKICAgICB1MzIgZ2VuZXJhbDJfaW50ZXJjZXB0czsKICAgICB2aW50cl90 IHZpbnRyOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94ZW4vYXJj aC94ODYvaHZtL3N2bS9zdm0uYwppbmRleCBlN2U5NDRkLi4wZWM4N2IyIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0u YwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG9zdndfbG9jayk7CiAv KiBPbmx5IGNyYXNoIHRoZSBndWVzdCBpZiB0aGUgcHJvYmxlbSBvcmlnaW5hdGVzIGluIGtlcm5l bCBtb2RlLiAqLwogc3RhdGljIHZvaWQgc3ZtX2NyYXNoX29yX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2 KQogewotICAgIGlmICggdm1jYl9nZXRfY3BsKHYtPmFyY2guaHZtX3N2bS52bWNiKSApCisgICAg aWYgKCB2bWNiX2dldF9jcGwodi0+YXJjaC5odm0uc3ZtLnZtY2IpICkKICAgICAgICAgaHZtX2lu amVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBYODZfRVZFTlRfTk9fRUMpOwogICAg IGVsc2UKICAgICAgICAgZG9tYWluX2NyYXNoKHYtPmRvbWFpbik7CkBAIC0xMTMsNyArMTEzLDcg QEAgdm9pZCBfX3VwZGF0ZV9ndWVzdF9laXAoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVu c2lnbmVkIGludCBpbnN0X2xlbikKICAgICByZWdzLT5yaXAgKz0gaW5zdF9sZW47CiAgICAgcmVn cy0+ZWZsYWdzICY9IH5YODZfRUZMQUdTX1JGOwogCi0gICAgY3Vyci0+YXJjaC5odm1fc3ZtLnZt Y2ItPmludGVycnVwdF9zaGFkb3cgPSAwOworICAgIGN1cnItPmFyY2guaHZtLnN2bS52bWNiLT5p bnRlcnJ1cHRfc2hhZG93ID0gMDsKIAogICAgIGlmICggcmVncy0+ZWZsYWdzICYgWDg2X0VGTEFH U19URiApCiAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZGVidWcsIFg4Nl9F VkVOVF9OT19FQyk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBzdm1faW50ZXJjZXB0X21zcihz dHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLCBpbnQgZmxhZ3MpCiAgICAgdW5zaWduZWQgbG9u ZyAqbXNyX2JpdDsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogCi0g ICAgbXNyX2JpdCA9IHN2bV9tc3JiaXQodi0+YXJjaC5odm1fc3ZtLm1zcnBtLCBtc3IpOworICAg IG1zcl9iaXQgPSBzdm1fbXNyYml0KHYtPmFyY2guaHZtLnN2bS5tc3JwbSwgbXNyKTsKICAgICBC VUdfT04obXNyX2JpdCA9PSBOVUxMKTsKICAgICBtc3IgJj0gMHgxZmZmOwogCkBAIC0xNzYsNyAr MTc2LDcgQEAgc3RhdGljIHZvaWQgc3ZtX3NldF9pY2VicF9pbnRlcmNlcHRpb24oc3RydWN0IGRv bWFpbiAqZCwgYm9vbCBlbmFibGUpCiAKICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCiAgICAg ewotICAgICAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1j YjsKKyAgICAgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZt Y2I7CiAgICAgICAgIHVpbnQzMl90IGludGVyY2VwdHMgPSB2bWNiX2dldF9nZW5lcmFsMl9pbnRl cmNlcHRzKHZtY2IpOwogCiAgICAgICAgIGlmICggZW5hYmxlICkKQEAgLTE5MCw3ICsxOTAsNyBA QCBzdGF0aWMgdm9pZCBzdm1fc2V0X2ljZWJwX2ludGVyY2VwdGlvbihzdHJ1Y3QgZG9tYWluICpk LCBib29sIGVuYWJsZSkKIAogc3RhdGljIHZvaWQgc3ZtX3NhdmVfZHIoc3RydWN0IHZjcHUgKnYp CiB7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7 CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAg ICAgdW5zaWduZWQgaW50IGZsYWdfZHJfZGlydHkgPSB2LT5hcmNoLmh2bS5mbGFnX2RyX2RpcnR5 OwogCiAgICAgaWYgKCAhZmxhZ19kcl9kaXJ0eSApCkBAIC0yMDcsMTAgKzIwNywxMCBAQCBzdGF0 aWMgdm9pZCBzdm1fc2F2ZV9kcihzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgc3ZtX2ludGVyY2Vw dF9tc3IodiwgTVNSX0FNRDY0X0RSMl9BRERSRVNTX01BU0ssIE1TUl9JTlRFUkNFUFRfUlcpOwog ICAgICAgICBzdm1faW50ZXJjZXB0X21zcih2LCBNU1JfQU1ENjRfRFIzX0FERFJFU1NfTUFTSywg TVNSX0lOVEVSQ0VQVF9SVyk7CiAKLSAgICAgICAgcmRtc3JsKE1TUl9BTUQ2NF9EUjBfQUREUkVT U19NQVNLLCB2LT5hcmNoLmh2bV9zdm0uZHJfbWFza1swXSk7Ci0gICAgICAgIHJkbXNybChNU1Jf QU1ENjRfRFIxX0FERFJFU1NfTUFTSywgdi0+YXJjaC5odm1fc3ZtLmRyX21hc2tbMV0pOwotICAg ICAgICByZG1zcmwoTVNSX0FNRDY0X0RSMl9BRERSRVNTX01BU0ssIHYtPmFyY2guaHZtX3N2bS5k cl9tYXNrWzJdKTsKLSAgICAgICAgcmRtc3JsKE1TUl9BTUQ2NF9EUjNfQUREUkVTU19NQVNLLCB2 LT5hcmNoLmh2bV9zdm0uZHJfbWFza1szXSk7CisgICAgICAgIHJkbXNybChNU1JfQU1ENjRfRFIw X0FERFJFU1NfTUFTSywgdi0+YXJjaC5odm0uc3ZtLmRyX21hc2tbMF0pOworICAgICAgICByZG1z cmwoTVNSX0FNRDY0X0RSMV9BRERSRVNTX01BU0ssIHYtPmFyY2guaHZtLnN2bS5kcl9tYXNrWzFd KTsKKyAgICAgICAgcmRtc3JsKE1TUl9BTUQ2NF9EUjJfQUREUkVTU19NQVNLLCB2LT5hcmNoLmh2 bS5zdm0uZHJfbWFza1syXSk7CisgICAgICAgIHJkbXNybChNU1JfQU1ENjRfRFIzX0FERFJFU1Nf TUFTSywgdi0+YXJjaC5odm0uc3ZtLmRyX21hc2tbM10pOwogICAgIH0KIAogICAgIHYtPmFyY2gu ZGVidWdyZWdbMF0gPSByZWFkX2RlYnVncmVnKDApOwpAQCAtMjM4LDEwICsyMzgsMTAgQEAgc3Rh dGljIHZvaWQgX19yZXN0b3JlX2RlYnVnX3JlZ2lzdGVycyhzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZt Y2IsIHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICBzdm1faW50ZXJjZXB0X21zcih2LCBNU1JfQU1E NjRfRFIyX0FERFJFU1NfTUFTSywgTVNSX0lOVEVSQ0VQVF9OT05FKTsKICAgICAgICAgc3ZtX2lu dGVyY2VwdF9tc3IodiwgTVNSX0FNRDY0X0RSM19BRERSRVNTX01BU0ssIE1TUl9JTlRFUkNFUFRf Tk9ORSk7CiAKLSAgICAgICAgd3Jtc3JsKE1TUl9BTUQ2NF9EUjBfQUREUkVTU19NQVNLLCB2LT5h cmNoLmh2bV9zdm0uZHJfbWFza1swXSk7Ci0gICAgICAgIHdybXNybChNU1JfQU1ENjRfRFIxX0FE RFJFU1NfTUFTSywgdi0+YXJjaC5odm1fc3ZtLmRyX21hc2tbMV0pOwotICAgICAgICB3cm1zcmwo TVNSX0FNRDY0X0RSMl9BRERSRVNTX01BU0ssIHYtPmFyY2guaHZtX3N2bS5kcl9tYXNrWzJdKTsK LSAgICAgICAgd3Jtc3JsKE1TUl9BTUQ2NF9EUjNfQUREUkVTU19NQVNLLCB2LT5hcmNoLmh2bV9z dm0uZHJfbWFza1szXSk7CisgICAgICAgIHdybXNybChNU1JfQU1ENjRfRFIwX0FERFJFU1NfTUFT Sywgdi0+YXJjaC5odm0uc3ZtLmRyX21hc2tbMF0pOworICAgICAgICB3cm1zcmwoTVNSX0FNRDY0 X0RSMV9BRERSRVNTX01BU0ssIHYtPmFyY2guaHZtLnN2bS5kcl9tYXNrWzFdKTsKKyAgICAgICAg d3Jtc3JsKE1TUl9BTUQ2NF9EUjJfQUREUkVTU19NQVNLLCB2LT5hcmNoLmh2bS5zdm0uZHJfbWFz a1syXSk7CisgICAgICAgIHdybXNybChNU1JfQU1ENjRfRFIzX0FERFJFU1NfTUFTSywgdi0+YXJj aC5odm0uc3ZtLmRyX21hc2tbM10pOwogICAgIH0KIAogICAgIHdyaXRlX2RlYnVncmVnKDAsIHYt PmFyY2guZGVidWdyZWdbMF0pOwpAQCAtMjYwLDIzICsyNjAsMjMgQEAgc3RhdGljIHZvaWQgX19y ZXN0b3JlX2RlYnVnX3JlZ2lzdGVycyhzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IsIHN0cnVjdCB2 Y3B1ICp2KQogICovCiBzdGF0aWMgdm9pZCBzdm1fcmVzdG9yZV9kcihzdHJ1Y3QgdmNwdSAqdikK IHsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsK KyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKICAg ICBpZiAoIHVubGlrZWx5KHYtPmFyY2guZGVidWdyZWdbN10gJiBEUjdfQUNUSVZFX01BU0spICkK ICAgICAgICAgX19yZXN0b3JlX2RlYnVnX3JlZ2lzdGVycyh2bWNiLCB2KTsKIH0KIAogc3RhdGlj IGludCBzdm1fdm1jYl9zYXZlKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgaHZtX2h3X2NwdSAqYykK IHsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsK KyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKIAog ICAgIGMtPmNyMCA9IHYtPmFyY2guaHZtLmd1ZXN0X2NyWzBdOwogICAgIGMtPmNyMiA9IHYtPmFy Y2guaHZtLmd1ZXN0X2NyWzJdOwogICAgIGMtPmNyMyA9IHYtPmFyY2guaHZtLmd1ZXN0X2NyWzNd OwogICAgIGMtPmNyNCA9IHYtPmFyY2guaHZtLmd1ZXN0X2NyWzRdOwogCi0gICAgYy0+c3lzZW50 ZXJfY3MgPSB2LT5hcmNoLmh2bV9zdm0uZ3Vlc3Rfc3lzZW50ZXJfY3M7Ci0gICAgYy0+c3lzZW50 ZXJfZXNwID0gdi0+YXJjaC5odm1fc3ZtLmd1ZXN0X3N5c2VudGVyX2VzcDsKLSAgICBjLT5zeXNl bnRlcl9laXAgPSB2LT5hcmNoLmh2bV9zdm0uZ3Vlc3Rfc3lzZW50ZXJfZWlwOworICAgIGMtPnN5 c2VudGVyX2NzID0gdi0+YXJjaC5odm0uc3ZtLmd1ZXN0X3N5c2VudGVyX2NzOworICAgIGMtPnN5 c2VudGVyX2VzcCA9IHYtPmFyY2guaHZtLnN2bS5ndWVzdF9zeXNlbnRlcl9lc3A7CisgICAgYy0+ c3lzZW50ZXJfZWlwID0gdi0+YXJjaC5odm0uc3ZtLmd1ZXN0X3N5c2VudGVyX2VpcDsKIAogICAg IGMtPnBlbmRpbmdfZXZlbnQgPSAwOwogICAgIGMtPmVycm9yX2NvZGUgPSAwOwpAQCAtMjk0LDcg KzI5NCw3IEBAIHN0YXRpYyBpbnQgc3ZtX3ZtY2Jfc2F2ZShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0 IGh2bV9od19jcHUgKmMpCiBzdGF0aWMgaW50IHN2bV92bWNiX3Jlc3RvcmUoc3RydWN0IHZjcHUg KnYsIHN0cnVjdCBodm1faHdfY3B1ICpjKQogewogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Ug PSBOVUxMOwotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52 bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNi OwogICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0odi0+ZG9tYWlu KTsKIAogICAgIGlmICggYy0+cGVuZGluZ192YWxpZCApCkBAIC0zNDYsOSArMzQ2LDkgQEAgc3Rh dGljIGludCBzdm1fdm1jYl9yZXN0b3JlKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgaHZtX2h3X2Nw dSAqYykKICAgICBzdm1fdXBkYXRlX2d1ZXN0X2NyKHYsIDQsIDApOwogCiAgICAgLyogTG9hZCBz eXNlbnRlciBNU1JzIGludG8gYm90aCBWTUNCIHNhdmUgYXJlYSBhbmQgVkNQVSBmaWVsZHMuICov Ci0gICAgdm1jYi0+c3lzZW50ZXJfY3MgPSB2LT5hcmNoLmh2bV9zdm0uZ3Vlc3Rfc3lzZW50ZXJf Y3MgPSBjLT5zeXNlbnRlcl9jczsKLSAgICB2bWNiLT5zeXNlbnRlcl9lc3AgPSB2LT5hcmNoLmh2 bV9zdm0uZ3Vlc3Rfc3lzZW50ZXJfZXNwID0gYy0+c3lzZW50ZXJfZXNwOwotICAgIHZtY2ItPnN5 c2VudGVyX2VpcCA9IHYtPmFyY2guaHZtX3N2bS5ndWVzdF9zeXNlbnRlcl9laXAgPSBjLT5zeXNl bnRlcl9laXA7CisgICAgdm1jYi0+c3lzZW50ZXJfY3MgPSB2LT5hcmNoLmh2bS5zdm0uZ3Vlc3Rf c3lzZW50ZXJfY3MgPSBjLT5zeXNlbnRlcl9jczsKKyAgICB2bWNiLT5zeXNlbnRlcl9lc3AgPSB2 LT5hcmNoLmh2bS5zdm0uZ3Vlc3Rfc3lzZW50ZXJfZXNwID0gYy0+c3lzZW50ZXJfZXNwOworICAg IHZtY2ItPnN5c2VudGVyX2VpcCA9IHYtPmFyY2guaHZtLnN2bS5ndWVzdF9zeXNlbnRlcl9laXAg PSBjLT5zeXNlbnRlcl9laXA7CiAgICAgCiAgICAgaWYgKCBwYWdpbmdfbW9kZV9oYXAodi0+ZG9t YWluKSApCiAgICAgewpAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbnQgc3ZtX3ZtY2JfcmVz dG9yZShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9od19jcHUgKmMpCiAKIHN0YXRpYyB2b2lk IHN2bV9zYXZlX2NwdV9zdGF0ZShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9od19jcHUgKmRh dGEpCiB7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZt Y2I7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7 CiAKICAgICBkYXRhLT5zaGFkb3dfZ3MgICAgICAgID0gdm1jYi0+a2VybmdzYmFzZTsKICAgICBk YXRhLT5tc3JfbHN0YXIgICAgICAgID0gdm1jYi0+bHN0YXI7CkBAIC0zOTEsNyArMzkxLDcgQEAg c3RhdGljIHZvaWQgc3ZtX3NhdmVfY3B1X3N0YXRlKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgaHZt X2h3X2NwdSAqZGF0YSkKIAogc3RhdGljIHZvaWQgc3ZtX2xvYWRfY3B1X3N0YXRlKHN0cnVjdCB2 Y3B1ICp2LCBzdHJ1Y3QgaHZtX2h3X2NwdSAqZGF0YSkKIHsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1 Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3Qg KnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKIAogICAgIHZtY2ItPmtlcm5nc2Jhc2UgPSBk YXRhLT5zaGFkb3dfZ3M7CiAgICAgdm1jYi0+bHN0YXIgICAgICA9IGRhdGEtPm1zcl9sc3RhcjsK QEAgLTQyOSwxOSArNDI5LDE5IEBAIHN0YXRpYyB2b2lkIHN2bV9zYXZlX21zcihzdHJ1Y3QgdmNw dSAqdiwgc3RydWN0IGh2bV9tc3IgKmN0eHQpCiB7CiAgICAgaWYgKCBib290X2NwdV9oYXMoWDg2 X0ZFQVRVUkVfREJFWFQpICkKICAgICB7Ci0gICAgICAgIGN0eHQtPm1zcltjdHh0LT5jb3VudF0u dmFsID0gdi0+YXJjaC5odm1fc3ZtLmRyX21hc2tbMF07CisgICAgICAgIGN0eHQtPm1zcltjdHh0 LT5jb3VudF0udmFsID0gdi0+YXJjaC5odm0uc3ZtLmRyX21hc2tbMF07CiAgICAgICAgIGlmICgg Y3R4dC0+bXNyW2N0eHQtPmNvdW50XS52YWwgKQogICAgICAgICAgICAgY3R4dC0+bXNyW2N0eHQt PmNvdW50KytdLmluZGV4ID0gTVNSX0FNRDY0X0RSMF9BRERSRVNTX01BU0s7CiAKLSAgICAgICAg Y3R4dC0+bXNyW2N0eHQtPmNvdW50XS52YWwgPSB2LT5hcmNoLmh2bV9zdm0uZHJfbWFza1sxXTsK KyAgICAgICAgY3R4dC0+bXNyW2N0eHQtPmNvdW50XS52YWwgPSB2LT5hcmNoLmh2bS5zdm0uZHJf bWFza1sxXTsKICAgICAgICAgaWYgKCBjdHh0LT5tc3JbY3R4dC0+Y291bnRdLnZhbCApCiAgICAg ICAgICAgICBjdHh0LT5tc3JbY3R4dC0+Y291bnQrK10uaW5kZXggPSBNU1JfQU1ENjRfRFIxX0FE RFJFU1NfTUFTSzsKIAotICAgICAgICBjdHh0LT5tc3JbY3R4dC0+Y291bnRdLnZhbCA9IHYtPmFy Y2guaHZtX3N2bS5kcl9tYXNrWzJdOworICAgICAgICBjdHh0LT5tc3JbY3R4dC0+Y291bnRdLnZh bCA9IHYtPmFyY2guaHZtLnN2bS5kcl9tYXNrWzJdOwogICAgICAgICBpZiAoIGN0eHQtPm1zcltj dHh0LT5jb3VudF0udmFsICkKICAgICAgICAgICAgIGN0eHQtPm1zcltjdHh0LT5jb3VudCsrXS5p bmRleCA9IE1TUl9BTUQ2NF9EUjJfQUREUkVTU19NQVNLOwogCi0gICAgICAgIGN0eHQtPm1zcltj dHh0LT5jb3VudF0udmFsID0gdi0+YXJjaC5odm1fc3ZtLmRyX21hc2tbM107CisgICAgICAgIGN0 eHQtPm1zcltjdHh0LT5jb3VudF0udmFsID0gdi0+YXJjaC5odm0uc3ZtLmRyX21hc2tbM107CiAg ICAgICAgIGlmICggY3R4dC0+bXNyW2N0eHQtPmNvdW50XS52YWwgKQogICAgICAgICAgICAgY3R4 dC0+bXNyW2N0eHQtPmNvdW50KytdLmluZGV4ID0gTVNSX0FNRDY0X0RSM19BRERSRVNTX01BU0s7 CiAgICAgfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRpYyBpbnQgc3ZtX2xvYWRfbXNyKHN0cnVj dCB2Y3B1ICp2LCBzdHJ1Y3QgaHZtX21zciAqY3R4dCkKICAgICAgICAgICAgIGVsc2UgaWYgKCBj dHh0LT5tc3JbaV0udmFsID4+IDMyICkKICAgICAgICAgICAgICAgICBlcnIgPSAtRURPTTsKICAg ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV9zdm0uZHJfbWFza1sw XSA9IGN0eHQtPm1zcltpXS52YWw7CisgICAgICAgICAgICAgICAgdi0+YXJjaC5odm0uc3ZtLmRy X21hc2tbMF0gPSBjdHh0LT5tc3JbaV0udmFsOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg ICAgY2FzZSBNU1JfQU1ENjRfRFIxX0FERFJFU1NfTUFTSyAuLi4gTVNSX0FNRDY0X0RSM19BRERS RVNTX01BU0s6CkBAIC00NzEsNyArNDcxLDcgQEAgc3RhdGljIGludCBzdm1fbG9hZF9tc3Ioc3Ry dWN0IHZjcHUgKnYsIHN0cnVjdCBodm1fbXNyICpjdHh0KQogICAgICAgICAgICAgZWxzZSBpZiAo IGN0eHQtPm1zcltpXS52YWwgPj4gMzIgKQogICAgICAgICAgICAgICAgIGVyciA9IC1FRE9NOwog ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtX3N2bS5kcl9tYXNr W2lkeCAtIE1TUl9BTUQ2NF9EUjFfQUREUkVTU19NQVNLICsgMV0gPQorICAgICAgICAgICAgICAg IHYtPmFyY2guaHZtLnN2bS5kcl9tYXNrW2lkeCAtIE1TUl9BTUQ2NF9EUjFfQUREUkVTU19NQVNL ICsgMV0gPQogICAgICAgICAgICAgICAgICAgICBjdHh0LT5tc3JbaV0udmFsOwogICAgICAgICAg ICAgYnJlYWs7CiAKQEAgLTUyMCw3ICs1MjAsNyBAQCBzdGF0aWMgdm9pZCBzdm1fZnB1X2xlYXZl KHN0cnVjdCB2Y3B1ICp2KQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHN2bV9nZXRfaW50ZXJydXB0 X3NoYWRvdyhzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2Ig PSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2 LT5hcmNoLmh2bS5zdm0udm1jYjsKICAgICB1bnNpZ25lZCBpbnQgaW50cl9zaGFkb3cgPSAwOwog CiAgICAgaWYgKCB2bWNiLT5pbnRlcnJ1cHRfc2hhZG93ICkKQEAgLTUzNCw3ICs1MzQsNyBAQCBz dGF0aWMgdW5zaWduZWQgaW50IHN2bV9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3QgdmNwdSAq dikKIAogc3RhdGljIHZvaWQgc3ZtX3NldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCB2Y3B1ICp2 LCB1bnNpZ25lZCBpbnQgaW50cl9zaGFkb3cpCiB7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2 bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNi ID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgdTMyIGdlbmVyYWwxX2ludGVyY2VwdHMgPSB2 bWNiX2dldF9nZW5lcmFsMV9pbnRlcmNlcHRzKHZtY2IpOwogCiAgICAgdm1jYi0+aW50ZXJydXB0 X3NoYWRvdyA9CkBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGljIHZvaWQgc3ZtX3NldF9pbnRlcnJ1 cHRfc2hhZG93KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgaW50cl9zaGFkb3cpCiAKIHN0 YXRpYyBpbnQgc3ZtX2d1ZXN0X3g4Nl9tb2RlKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHN0cnVj dCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2 bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNiOwogCiAgICAgaWYgKCB1bmxp a2VseSghKHYtPmFyY2guaHZtLmd1ZXN0X2NyWzBdICYgWDg2X0NSMF9QRSkpICkKICAgICAgICAg cmV0dXJuIDA7CkBAIC01NjEsNyArNTYxLDcgQEAgc3RhdGljIGludCBzdm1fZ3Vlc3RfeDg2X21v ZGUoc3RydWN0IHZjcHUgKnYpCiAKIHZvaWQgc3ZtX3VwZGF0ZV9ndWVzdF9jcihzdHJ1Y3QgdmNw dSAqdiwgdW5zaWduZWQgaW50IGNyLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0 IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZt Y2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgdWludDY0X3QgdmFs dWU7CiAKICAgICBzd2l0Y2ggKCBjciApCkBAIC02NDUsOCArNjQ1LDggQEAgdm9pZCBzdm1fdXBk YXRlX2d1ZXN0X2NyKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgY3IsIHVuc2lnbmVkIGlu dCBmbGFncykKIAogc3RhdGljIHZvaWQgc3ZtX3VwZGF0ZV9ndWVzdF9lZmVyKHN0cnVjdCB2Y3B1 ICp2KQogewotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52 bWNiOwotICAgIGJvb2xfdCBsbWEgPSAhISh2LT5hcmNoLmh2bS5ndWVzdF9lZmVyICYgRUZFUl9M TUEpOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNi OworICAgIGJvb2wgbG1hID0gdi0+YXJjaC5odm0uZ3Vlc3RfZWZlciAmIEVGRVJfTE1BOwogICAg IHVpbnQ2NF90IG5ld19lZmVyOwogCiAgICAgbmV3X2VmZXIgPSAodi0+YXJjaC5odm0uZ3Vlc3Rf ZWZlciB8IEVGRVJfU1ZNRSkgJiB+RUZFUl9MTUU7CkBAIC02NjMsNyArNjYzLDcgQEAgc3RhdGlj IHZvaWQgc3ZtX3VwZGF0ZV9ndWVzdF9lZmVyKHN0cnVjdCB2Y3B1ICp2KQogCiBzdGF0aWMgdm9p ZCBzdm1fY3B1aWRfcG9saWN5X2NoYW5nZWQoc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgc3RydWN0 IHN2bV92Y3B1ICphcmNoX3N2bSA9ICZ2LT5hcmNoLmh2bV9zdm07CisgICAgc3RydWN0IHN2bV92 Y3B1ICphcmNoX3N2bSA9ICZ2LT5hcmNoLmh2bS5zdm07CiAgICAgc3RydWN0IHZtY2Jfc3RydWN0 ICp2bWNiID0gYXJjaF9zdm0tPnZtY2I7CiAgICAgY29uc3Qgc3RydWN0IGNwdWlkX3BvbGljeSAq Y3AgPSB2LT5kb21haW4tPmFyY2guY3B1aWQ7CiAgICAgdTMyIGJpdG1hcCA9IHZtY2JfZ2V0X2V4 Y2VwdGlvbl9pbnRlcmNlcHRzKHZtY2IpOwpAQCAtNjgzLDcgKzY4Myw3IEBAIHN0YXRpYyB2b2lk IHN2bV9jcHVpZF9wb2xpY3lfY2hhbmdlZChzdHJ1Y3QgdmNwdSAqdikKIAogc3RhdGljIHZvaWQg c3ZtX3N5bmNfdm1jYihzdHJ1Y3QgdmNwdSAqdiwgZW51bSB2bWNiX3N5bmNfc3RhdGUgbmV3X3N0 YXRlKQogewotICAgIHN0cnVjdCBzdm1fdmNwdSAqYXJjaF9zdm0gPSAmdi0+YXJjaC5odm1fc3Zt OworICAgIHN0cnVjdCBzdm1fdmNwdSAqYXJjaF9zdm0gPSAmdi0+YXJjaC5odm0uc3ZtOwogCiAg ICAgaWYgKCBuZXdfc3RhdGUgPT0gdm1jYl9uZWVkc192bXNhdmUgKQogICAgIHsKQEAgLTcwNCwx MyArNzA0LDEzIEBAIHN0YXRpYyB2b2lkIHN2bV9zeW5jX3ZtY2Ioc3RydWN0IHZjcHUgKnYsIGVu dW0gdm1jYl9zeW5jX3N0YXRlIG5ld19zdGF0ZSkKIAogc3RhdGljIHVuc2lnbmVkIGludCBzdm1f Z2V0X2NwbChzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICByZXR1cm4gdm1jYl9nZXRfY3BsKHYtPmFy Y2guaHZtX3N2bS52bWNiKTsKKyAgICByZXR1cm4gdm1jYl9nZXRfY3BsKHYtPmFyY2guaHZtLnN2 bS52bWNiKTsKIH0KIAogc3RhdGljIHZvaWQgc3ZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHN0cnVj dCB2Y3B1ICp2LCBlbnVtIHg4Nl9zZWdtZW50IHNlZywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciAqcmVnKQogewotICAgIHN0cnVj dCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2 bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNiOwogCiAgICAgQVNTRVJUKCh2 ID09IGN1cnJlbnQpIHx8ICF2Y3B1X3J1bm5hYmxlKHYpKTsKIApAQCAtNzU1LDcgKzc1NSw3IEBA IHN0YXRpYyB2b2lkIHN2bV9nZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3QgdmNwdSAqdiwgZW51 bSB4ODZfc2VnbWVudCBzZWcsCiBzdGF0aWMgdm9pZCBzdm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIo c3RydWN0IHZjcHUgKnYsIGVudW0geDg2X3NlZ21lbnQgc2VnLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyICpyZWcpCiB7Ci0gICAg c3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3Ry dWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAKICAgICBBU1NF UlQoKHYgPT0gY3VycmVudCkgfHwgIXZjcHVfcnVubmFibGUodikpOwogCkBAIC04MjQsMTIgKzgy NCwxMiBAQCBzdGF0aWMgdm9pZCBzdm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIoc3RydWN0IHZjcHUg KnYsIGVudW0geDg2X3NlZ21lbnQgc2VnLAogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBzdm1fZ2V0 X3NoYWRvd19nc19iYXNlKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHJldHVybiB2LT5hcmNoLmh2 bV9zdm0udm1jYi0+a2VybmdzYmFzZTsKKyAgICByZXR1cm4gdi0+YXJjaC5odm0uc3ZtLnZtY2It Pmtlcm5nc2Jhc2U7CiB9CiAKIHN0YXRpYyBpbnQgc3ZtX3NldF9ndWVzdF9wYXQoc3RydWN0IHZj cHUgKnYsIHU2NCBncGF0KQogewotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFy Y2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2gu aHZtLnN2bS52bWNiOwogCiAgICAgaWYgKCAhcGFnaW5nX21vZGVfaGFwKHYtPmRvbWFpbikgKQog ICAgICAgICByZXR1cm4gMDsKQEAgLTg0MCw3ICs4NDAsNyBAQCBzdGF0aWMgaW50IHN2bV9zZXRf Z3Vlc3RfcGF0KHN0cnVjdCB2Y3B1ICp2LCB1NjQgZ3BhdCkKIAogc3RhdGljIGludCBzdm1fZ2V0 X2d1ZXN0X3BhdChzdHJ1Y3QgdmNwdSAqdiwgdTY0ICpncGF0KQogewotICAgIHN0cnVjdCB2bWNi X3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0 cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNiOwogCiAgICAgaWYgKCAhcGFnaW5nX21v ZGVfaGFwKHYtPmRvbWFpbikgKQogICAgICAgICByZXR1cm4gMDsKQEAgLTg4OCw3ICs4ODgsNyBA QCBzdGF0aWMgdWludDY0X3Qgc3ZtX2dldF90c2Nfb2Zmc2V0KHVpbnQ2NF90IGhvc3RfdHNjLCB1 aW50NjRfdCBndWVzdF90c2MsCiAKIHN0YXRpYyB2b2lkIHN2bV9zZXRfdHNjX29mZnNldChzdHJ1 Y3QgdmNwdSAqdiwgdTY0IG9mZnNldCwgdTY0IGF0X3RzYykKIHsKLSAgICBzdHJ1Y3Qgdm1jYl9z dHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1 Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKICAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3Qg Km4xdm1jYiwgKm4ydm1jYjsKICAgICB1aW50NjRfdCBuMl90c2Nfb2Zmc2V0ID0gMDsKICAgICBz dHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwpAQCAtOTIxLDcgKzkyMSw3IEBAIHN0YXRpYyB2 b2lkIHN2bV9zZXRfdHNjX29mZnNldChzdHJ1Y3QgdmNwdSAqdiwgdTY0IG9mZnNldCwgdTY0IGF0 X3RzYykKIAogc3RhdGljIHZvaWQgc3ZtX3NldF9yZHRzY19leGl0aW5nKHN0cnVjdCB2Y3B1ICp2 LCBib29sX3QgZW5hYmxlKQogewotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFy Y2guaHZtX3N2bS52bWNiOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2gu aHZtLnN2bS52bWNiOwogICAgIHUzMiBnZW5lcmFsMV9pbnRlcmNlcHRzID0gdm1jYl9nZXRfZ2Vu ZXJhbDFfaW50ZXJjZXB0cyh2bWNiKTsKICAgICB1MzIgZ2VuZXJhbDJfaW50ZXJjZXB0cyA9IHZt Y2JfZ2V0X2dlbmVyYWwyX2ludGVyY2VwdHModm1jYik7CiAKQEAgLTk0MCw3ICs5NDAsNyBAQCBz dGF0aWMgdm9pZCBzdm1fc2V0X3JkdHNjX2V4aXRpbmcoc3RydWN0IHZjcHUgKnYsIGJvb2xfdCBl bmFibGUpCiAKIHN0YXRpYyB2b2lkIHN2bV9zZXRfZGVzY3JpcHRvcl9hY2Nlc3NfZXhpdGluZyhz dHJ1Y3QgdmNwdSAqdiwgYm9vbCBlbmFibGUpCiB7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2 bWNiID0gdi0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNi ID0gdi0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgdTMyIGdlbmVyYWwxX2ludGVyY2VwdHMgPSB2 bWNiX2dldF9nZW5lcmFsMV9pbnRlcmNlcHRzKHZtY2IpOwogICAgIHUzMiBtYXNrID0gR0VORVJB TDFfSU5URVJDRVBUX0lEVFJfUkVBRCB8IEdFTkVSQUwxX0lOVEVSQ0VQVF9HRFRSX1JFQUQKICAg ICAgICAgICAgIHwgR0VORVJBTDFfSU5URVJDRVBUX0xEVFJfUkVBRCB8IEdFTkVSQUwxX0lOVEVS Q0VQVF9UUl9SRUFECkBAIC05NTcsMTQgKzk1NywxNCBAQCBzdGF0aWMgdm9pZCBzdm1fc2V0X2Rl c2NyaXB0b3JfYWNjZXNzX2V4aXRpbmcoc3RydWN0IHZjcHUgKnYsIGJvb2wgZW5hYmxlKQogCiBz dGF0aWMgdW5zaWduZWQgaW50IHN2bV9nZXRfaW5zbl9ieXRlcyhzdHJ1Y3QgdmNwdSAqdiwgdWlu dDhfdCAqYnVmKQogewotICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZt X3N2bS52bWNiOwotICAgIHVuc2lnbmVkIGludCBsZW4gPSB2LT5hcmNoLmh2bV9zdm0uY2FjaGVk X2luc25fbGVuOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2 bS52bWNiOworICAgIHVuc2lnbmVkIGludCBsZW4gPSB2LT5hcmNoLmh2bS5zdm0uY2FjaGVkX2lu c25fbGVuOwogCiAgICAgaWYgKCBsZW4gIT0gMCApCiAgICAgewogICAgICAgICAvKiBMYXRjaCBh bmQgY2xlYXIgdGhlIGNhY2hlZCBpbnN0cnVjdGlvbi4gKi8KICAgICAgICAgbWVtY3B5KGJ1Ziwg dm1jYi0+Z3Vlc3RfaW5zLCBNQVhfSU5TVF9MRU4pOwotICAgICAgICB2LT5hcmNoLmh2bV9zdm0u Y2FjaGVkX2luc25fbGVuID0gMDsKKyAgICAgICAgdi0+YXJjaC5odm0uc3ZtLmNhY2hlZF9pbnNu X2xlbiA9IDA7CiAgICAgfQogCiAgICAgcmV0dXJuIGxlbjsKQEAgLTEwMDAsMTQgKzEwMDAsMTQg QEAgc3RhdGljIHZvaWQgc3ZtX2x3cF9pbnRlcnJ1cHQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCiAgICAgYWNrX0FQSUNfaXJxKCk7CiAgICAgdmxhcGljX3NldF9pcnEoCiAgICAgICAgIHZj cHVfdmxhcGljKGN1cnIpLAotICAgICAgICAoY3Vyci0+YXJjaC5odm1fc3ZtLmd1ZXN0X2x3cF9j ZmcgPj4gNDApICYgMHhmZiwKKyAgICAgICAgKGN1cnItPmFyY2guaHZtLnN2bS5ndWVzdF9sd3Bf Y2ZnID4+IDQwKSAmIDB4ZmYsCiAgICAgICAgIDApOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg c3ZtX2x3cF9zYXZlKHN0cnVjdCB2Y3B1ICp2KQogewogICAgIC8qIERvbid0IG1lc3MgdXAgd2l0 aCBvdGhlciBndWVzdHMuIERpc2FibGUgTFdQIGZvciBuZXh0IFZDUFUuICovCi0gICAgaWYgKCB2 LT5hcmNoLmh2bV9zdm0uZ3Vlc3RfbHdwX2NmZyApCisgICAgaWYgKCB2LT5hcmNoLmh2bS5zdm0u Z3Vlc3RfbHdwX2NmZyApCiAgICAgewogICAgICAgICB3cm1zcmwoTVNSX0FNRDY0X0xXUF9DRkcs IDB4MCk7CiAgICAgICAgIHdybXNybChNU1JfQU1ENjRfTFdQX0NCQUREUiwgMHgwKTsKQEAgLTEw MTcsOCArMTAxNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzdm1fbHdwX3NhdmUoc3RydWN0IHZj cHUgKnYpCiBzdGF0aWMgaW5saW5lIHZvaWQgc3ZtX2x3cF9sb2FkKHN0cnVjdCB2Y3B1ICp2KQog ewogICAgIC8qIE9ubHkgTFdQX0NGRyBpcyByZWxvYWRlZC4gTFdQX0NCQUREUiB3aWxsIGJlIHJl bG9hZGVkIHZpYSB4cnN0b3IuICovCi0gICBpZiAoIHYtPmFyY2guaHZtX3N2bS5ndWVzdF9sd3Bf Y2ZnICkgCi0gICAgICAgd3Jtc3JsKE1TUl9BTUQ2NF9MV1BfQ0ZHLCB2LT5hcmNoLmh2bV9zdm0u Y3B1X2x3cF9jZmcpOworICAgaWYgKCB2LT5hcmNoLmh2bS5zdm0uZ3Vlc3RfbHdwX2NmZyApCisg ICAgICAgd3Jtc3JsKE1TUl9BTUQ2NF9MV1BfQ0ZHLCB2LT5hcmNoLmh2bS5zdm0uY3B1X2x3cF9j ZmcpOwogfQogCiAvKiBVcGRhdGUgTFdQX0NGRyBNU1IgKDB4YzAwMDAxMDUpLiBSZXR1cm4gLTEg aWYgZXJyb3I7IG90aGVyd2lzZSByZXR1cm5zIDAuICovCkBAIC0xMDM1LDIyICsxMDM1LDIyIEBA IHN0YXRpYyBpbnQgc3ZtX3VwZGF0ZV9sd3BfY2ZnKHN0cnVjdCB2Y3B1ICp2LCB1aW50NjRfdCBt c3JfY29udGVudCkKICAgICAgICAgaWYgKCBtc3JfbG93ICYgfnYtPmRvbWFpbi0+YXJjaC5jcHVp ZC0+ZXh0ZC5yYXdbMHgxY10uZCApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAg di0+YXJjaC5odm1fc3ZtLmd1ZXN0X2x3cF9jZmcgPSBtc3JfY29udGVudDsKKyAgICAgICAgdi0+ YXJjaC5odm0uc3ZtLmd1ZXN0X2x3cF9jZmcgPSBtc3JfY29udGVudDsKIAogICAgICAgICAvKiBz ZXR1cCBpbnRlcnJ1cHQgaGFuZGxlciBpZiBuZWVkZWQgKi8KICAgICAgICAgaWYgKCAobXNyX2Nv bnRlbnQgJiAweDgwMDAwMDAwKSAmJiAoKG1zcl9jb250ZW50ID4+IDQwKSAmIDB4ZmYpICkKICAg ICAgICAgewogICAgICAgICAgICAgYWxsb2NfZGlyZWN0X2FwaWNfdmVjdG9yKCZsd3BfaW50cl92 ZWN0b3IsIHN2bV9sd3BfaW50ZXJydXB0KTsKLSAgICAgICAgICAgIHYtPmFyY2guaHZtX3N2bS5j cHVfbHdwX2NmZyA9IChtc3JfY29udGVudCAmIDB4ZmZmZjAwZmZmZmZmZmZmZlVMTCkKKyAgICAg ICAgICAgIHYtPmFyY2guaHZtLnN2bS5jcHVfbHdwX2NmZyA9IChtc3JfY29udGVudCAmIDB4ZmZm ZjAwZmZmZmZmZmZmZlVMTCkKICAgICAgICAgICAgICAgICB8ICgodWludDY0X3QpbHdwX2ludHJf dmVjdG9yIDw8IDQwKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAg ICAgICAgIC8qIG90aGVyd2lzZSBkaXNhYmxlIGl0ICovCi0gICAgICAgICAgICB2LT5hcmNoLmh2 bV9zdm0uY3B1X2x3cF9jZmcgPSBtc3JfY29udGVudCAmIDB4ZmZmZjAwZmY3ZmZmZmZmZlVMTDsK KyAgICAgICAgICAgIHYtPmFyY2guaHZtLnN2bS5jcHVfbHdwX2NmZyA9IG1zcl9jb250ZW50ICYg MHhmZmZmMDBmZjdmZmZmZmZmVUxMOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB3cm1z cmwoTVNSX0FNRDY0X0xXUF9DRkcsIHYtPmFyY2guaHZtX3N2bS5jcHVfbHdwX2NmZyk7CisgICAg ICAgIHdybXNybChNU1JfQU1ENjRfTFdQX0NGRywgdi0+YXJjaC5odm0uc3ZtLmNwdV9sd3BfY2Zn KTsKIAogICAgICAgICAvKiB0cmFjayBub25hbHp5IHN0YXRlIGlmIExXUF9DRkcgaXMgbm9uLXpl cm8uICovCiAgICAgICAgIHYtPmFyY2gubm9ubGF6eV94c3RhdGVfdXNlZCA9ICEhKG1zcl9jb250 ZW50KTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyB2b2lkIHN2bV9jdHh0X3N3aXRjaF9m cm9tKHN0cnVjdCB2Y3B1ICp2KQogCiBzdGF0aWMgdm9pZCBzdm1fY3R4dF9zd2l0Y2hfdG8oc3Ry dWN0IHZjcHUgKnYpCiB7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5o dm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0u c3ZtLnZtY2I7CiAgICAgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKIAogICAgIC8qCkBA IC0xMTI5LDcgKzExMjksNyBAQCBzdGF0aWMgdm9pZCBzdm1fY3R4dF9zd2l0Y2hfdG8oc3RydWN0 IHZjcHUgKnYpCiAKIHN0YXRpYyB2b2lkIG5vcmV0dXJuIHN2bV9kb19yZXN1bWUoc3RydWN0IHZj cHUgKnYpCiB7Ci0gICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3Zt LnZtY2I7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm0uc3ZtLnZt Y2I7CiAgICAgYm9vbCBkZWJ1Z19zdGF0ZSA9ICh2LT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVk IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICB2LT5kb21haW4tPmFyY2gubW9uaXRvci5zb2Z0 d2FyZV9icmVha3BvaW50X2VuYWJsZWQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmRv bWFpbi0+YXJjaC5tb25pdG9yLmRlYnVnX2V4Y2VwdGlvbl9lbmFibGVkKTsKQEAgLTExNTAsOSAr MTE1MCw5IEBAIHN0YXRpYyB2b2lkIG5vcmV0dXJuIHN2bV9kb19yZXN1bWUoc3RydWN0IHZjcHUg KnYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbnRlcmNlcHRzICYgfigxVSA8 PCBUUkFQX2ludDMpKSk7CiAgICAgfQogCi0gICAgaWYgKCB2LT5hcmNoLmh2bV9zdm0ubGF1bmNo X2NvcmUgIT0gc21wX3Byb2Nlc3Nvcl9pZCgpICkKKyAgICBpZiAoIHYtPmFyY2guaHZtLnN2bS5s YXVuY2hfY29yZSAhPSBzbXBfcHJvY2Vzc29yX2lkKCkgKQogICAgIHsKLSAgICAgICAgdi0+YXJj aC5odm1fc3ZtLmxhdW5jaF9jb3JlID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworICAgICAgICB2LT5h cmNoLmh2bS5zdm0ubGF1bmNoX2NvcmUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgICAgIGh2 bV9taWdyYXRlX3RpbWVycyh2KTsKICAgICAgICAgaHZtX21pZ3JhdGVfcGlycXModik7CiAgICAg ICAgIC8qIE1pZ3JhdGluZyB0byBhbm90aGVyIEFTSUQgZG9tYWluLiAgUmVxdWVzdCBhIG5ldyBB U0lELiAqLwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgc3RhdGljIHZvaWQgbm9yZXR1cm4gc3ZtX2Rv X3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdikKIHZvaWQgc3ZtX3ZtZW50ZXJfaGVscGVyKGNvbnN0IHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3Vy cmVudDsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSBjdXJyLT5hcmNoLmh2bV9zdm0u dm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSBjdXJyLT5hcmNoLmh2bS5zdm0u dm1jYjsKIAogICAgIHN2bV9hc2lkX2hhbmRsZV92bXJ1bigpOwogCkBAIC0xMjg0LDcgKzEyODQs NyBAQCBzdGF0aWMgaW50IHN2bV92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiB7CiAg ICAgaW50IHJjOwogCi0gICAgdi0+YXJjaC5odm1fc3ZtLmxhdW5jaF9jb3JlID0gLTE7CisgICAg di0+YXJjaC5odm0uc3ZtLmxhdW5jaF9jb3JlID0gLTE7CiAKICAgICBpZiAoIChyYyA9IHN2bV9j cmVhdGVfdm1jYih2KSkgIT0gMCApCiAgICAgewpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgc3RhdGlj IHZvaWQgc3ZtX3ZjcHVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIHN0YXRpYyB2b2lkIHN2bV9l bXVsX3N3aW50X2luamVjdGlvbihzdHJ1Y3QgeDg2X2V2ZW50ICpldmVudCkKIHsKICAgICBzdHJ1 Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7Ci0gICAgY29uc3Qgc3RydWN0IHZtY2Jfc3RydWN0ICp2 bWNiID0gY3Vyci0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgY29uc3Qgc3RydWN0IHZtY2Jfc3Ry dWN0ICp2bWNiID0gY3Vyci0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgY29uc3Qgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MgPSBndWVzdF9jcHVfdXNlcl9yZWdzKCk7CiAgICAgdW5zaWduZWQg aW50IHRyYXAgPSBldmVudC0+dmVjdG9yLCB0eXBlID0gZXZlbnQtPnR5cGU7CiAgICAgdW5zaWdu ZWQgaW50IGZhdWx0ID0gVFJBUF9ncF9mYXVsdCwgZWMgPSAwOwpAQCAtMTQyMSw3ICsxNDIxLDcg QEAgc3RhdGljIHZvaWQgc3ZtX2VtdWxfc3dpbnRfaW5qZWN0aW9uKHN0cnVjdCB4ODZfZXZlbnQg KmV2ZW50KQogc3RhdGljIHZvaWQgc3ZtX2luamVjdF9ldmVudChjb25zdCBzdHJ1Y3QgeDg2X2V2 ZW50ICpldmVudCkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7Ci0gICAgc3Ry dWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gY3Vyci0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3Ry dWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gY3Vyci0+YXJjaC5odm0uc3ZtLnZtY2I7CiAgICAgZXZl bnRpbmpfdCBldmVudGluaiA9IHZtY2ItPmV2ZW50aW5qOwogICAgIHN0cnVjdCB4ODZfZXZlbnQg X2V2ZW50ID0gKmV2ZW50OwogICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzID0gZ3Vlc3Rf Y3B1X3VzZXJfcmVncygpOwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgc3RhdGljIHZvaWQgc3ZtX2lu amVjdF9ldmVudChjb25zdCBzdHJ1Y3QgeDg2X2V2ZW50ICpldmVudCkKIAogc3RhdGljIGludCBz dm1fZXZlbnRfcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1 Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3Qg KnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKICAgICByZXR1cm4gdm1jYi0+ZXZlbnRpbmou ZmllbGRzLnY7CiB9CiAKQEAgLTE3OTIsNyArMTc5Miw3IEBAIHN0YXRpYyB2b2lkIHN2bV9kb19u ZXN0ZWRfcGdmYXVsdChzdHJ1Y3QgdmNwdSAqdiwKIHN0YXRpYyB2b2lkIHN2bV9mcHVfZGlydHlf aW50ZXJjZXB0KHZvaWQpCiB7CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwotICAgIHN0 cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIHN0cnVj dCB2bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtLnN2bS52bWNiOwogICAgIHN0cnVjdCB2 bWNiX3N0cnVjdCAqbjF2bWNiID0gdmNwdV9uZXN0ZWRodm0odikubnZfbjF2bWN4OwogCiAgICAg c3ZtX2ZwdV9lbnRlcih2KTsKQEAgLTE4NjIsNyArMTg2Miw3IEBAIHN0YXRpYyBpbnQgc3ZtX21z cl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRlbnQp CiAgICAgaW50IHJldDsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CiAgICAgY29uc3Qg c3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZt Y2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2Ig PSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKIAogICAgIHN3aXRjaCAoIG1zciApCiAgICAgewpAQCAt MTg4NiwxMyArMTg4NiwxMyBAQCBzdGF0aWMgaW50IHN2bV9tc3JfcmVhZF9pbnRlcmNlcHQodW5z aWduZWQgaW50IG1zciwgdWludDY0X3QgKm1zcl9jb250ZW50KQogICAgIHN3aXRjaCAoIG1zciAp CiAgICAgewogICAgIGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfQ1M6Ci0gICAgICAgICptc3JfY29u dGVudCA9IHYtPmFyY2guaHZtX3N2bS5ndWVzdF9zeXNlbnRlcl9jczsKKyAgICAgICAgKm1zcl9j b250ZW50ID0gdi0+YXJjaC5odm0uc3ZtLmd1ZXN0X3N5c2VudGVyX2NzOwogICAgICAgICBicmVh azsKICAgICBjYXNlIE1TUl9JQTMyX1NZU0VOVEVSX0VTUDoKLSAgICAgICAgKm1zcl9jb250ZW50 ID0gdi0+YXJjaC5odm1fc3ZtLmd1ZXN0X3N5c2VudGVyX2VzcDsKKyAgICAgICAgKm1zcl9jb250 ZW50ID0gdi0+YXJjaC5odm0uc3ZtLmd1ZXN0X3N5c2VudGVyX2VzcDsKICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9FSVA6Ci0gICAgICAgICptc3JfY29udGVudCA9 IHYtPmFyY2guaHZtX3N2bS5ndWVzdF9zeXNlbnRlcl9laXA7CisgICAgICAgICptc3JfY29udGVu dCA9IHYtPmFyY2guaHZtLnN2bS5ndWVzdF9zeXNlbnRlcl9laXA7CiAgICAgICAgIGJyZWFrOwog CiAgICAgY2FzZSBNU1JfU1RBUjoKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHN0YXRpYyBpbnQgc3Zt X21zcl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRl bnQpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNU1JfQU1ENjRfTFdQX0NGRzoKLSAgICAg ICAgKm1zcl9jb250ZW50ID0gdi0+YXJjaC5odm1fc3ZtLmd1ZXN0X2x3cF9jZmc7CisgICAgICAg ICptc3JfY29udGVudCA9IHYtPmFyY2guaHZtLnN2bS5ndWVzdF9sd3BfY2ZnOwogICAgICAgICBi cmVhazsKIAogICAgIGNhc2UgTVNSX0s3X1BFUkZDVFIwOgpAQCAtMTk5MiwxNCArMTk5MiwxNCBA QCBzdGF0aWMgaW50IHN2bV9tc3JfcmVhZF9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWlu dDY0X3QgKm1zcl9jb250ZW50KQogICAgIGNhc2UgTVNSX0FNRDY0X0RSMF9BRERSRVNTX01BU0s6 CiAgICAgICAgIGlmICggIXYtPmRvbWFpbi0+YXJjaC5jcHVpZC0+ZXh0ZC5kYmV4dCApCiAgICAg ICAgICAgICBnb3RvIGdwZjsKLSAgICAgICAgKm1zcl9jb250ZW50ID0gdi0+YXJjaC5odm1fc3Zt LmRyX21hc2tbMF07CisgICAgICAgICptc3JfY29udGVudCA9IHYtPmFyY2guaHZtLnN2bS5kcl9t YXNrWzBdOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTVNSX0FNRDY0X0RSMV9BRERSRVNT X01BU0sgLi4uIE1TUl9BTUQ2NF9EUjNfQUREUkVTU19NQVNLOgogICAgICAgICBpZiAoICF2LT5k b21haW4tPmFyY2guY3B1aWQtPmV4dGQuZGJleHQgKQogICAgICAgICAgICAgZ290byBncGY7CiAg ICAgICAgICptc3JfY29udGVudCA9Ci0gICAgICAgICAgICB2LT5hcmNoLmh2bV9zdm0uZHJfbWFz a1ttc3IgLSBNU1JfQU1ENjRfRFIxX0FERFJFU1NfTUFTSyArIDFdOworICAgICAgICAgICAgdi0+ YXJjaC5odm0uc3ZtLmRyX21hc2tbbXNyIC0gTVNSX0FNRDY0X0RSMV9BRERSRVNTX01BU0sgKyAx XTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1TUl9BTURfT1NWV19JRF9MRU5HVEg6CkBA IC0yMDUxLDcgKzIwNTEsNyBAQCBzdGF0aWMgaW50IHN2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVu c2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50KQogICAgIGludCByZXQsIHJlc3Vs dCA9IFg4NkVNVUxfT0tBWTsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CiAgICAgc3Ry dWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKLSAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2Ig PSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2 LT5hcmNoLmh2bS5zdm0udm1jYjsKIAogICAgIHN3aXRjaCAoIG1zciApCiAgICAgewpAQCAtMjA4 NCwxMSArMjA4NCwxMSBAQCBzdGF0aWMgaW50IHN2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2ln bmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50KQogICAgICAgICBzd2l0Y2ggKCBtc3Ig KQogICAgICAgICB7CiAgICAgICAgIGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfRVNQOgotICAgICAg ICAgICAgdm1jYi0+c3lzZW50ZXJfZXNwID0gdi0+YXJjaC5odm1fc3ZtLmd1ZXN0X3N5c2VudGVy X2VzcCA9IG1zcl9jb250ZW50OworICAgICAgICAgICAgdm1jYi0+c3lzZW50ZXJfZXNwID0gdi0+ YXJjaC5odm0uc3ZtLmd1ZXN0X3N5c2VudGVyX2VzcCA9IG1zcl9jb250ZW50OwogICAgICAgICAg ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9FSVA6Ci0gICAgICAg ICAgICB2bWNiLT5zeXNlbnRlcl9laXAgPSB2LT5hcmNoLmh2bV9zdm0uZ3Vlc3Rfc3lzZW50ZXJf ZWlwID0gbXNyX2NvbnRlbnQ7CisgICAgICAgICAgICB2bWNiLT5zeXNlbnRlcl9laXAgPSB2LT5h cmNoLmh2bS5zdm0uZ3Vlc3Rfc3lzZW50ZXJfZWlwID0gbXNyX2NvbnRlbnQ7CiAgICAgICAgICAg ICBicmVhazsKIAogICAgICAgICBjYXNlIE1TUl9MU1RBUjoKQEAgLTIxMTQsNyArMjExNCw3IEBA IHN0YXRpYyBpbnQgc3ZtX21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWlu dDY0X3QgbXNyX2NvbnRlbnQpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNU1JfSUEzMl9T WVNFTlRFUl9DUzoKLSAgICAgICAgdm1jYi0+c3lzZW50ZXJfY3MgPSB2LT5hcmNoLmh2bV9zdm0u Z3Vlc3Rfc3lzZW50ZXJfY3MgPSBtc3JfY29udGVudDsKKyAgICAgICAgdm1jYi0+c3lzZW50ZXJf Y3MgPSB2LT5hcmNoLmh2bS5zdm0uZ3Vlc3Rfc3lzZW50ZXJfY3MgPSBtc3JfY29udGVudDsKICAg ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1TUl9TVEFSOgpAQCAtMjE5NCwxMyArMjE5NCwxMyBA QCBzdGF0aWMgaW50IHN2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVp bnQ2NF90IG1zcl9jb250ZW50KQogICAgIGNhc2UgTVNSX0FNRDY0X0RSMF9BRERSRVNTX01BU0s6 CiAgICAgICAgIGlmICggIXYtPmRvbWFpbi0+YXJjaC5jcHVpZC0+ZXh0ZC5kYmV4dCB8fCAobXNy X2NvbnRlbnQgPj4gMzIpICkKICAgICAgICAgICAgIGdvdG8gZ3BmOwotICAgICAgICB2LT5hcmNo Lmh2bV9zdm0uZHJfbWFza1swXSA9IG1zcl9jb250ZW50OworICAgICAgICB2LT5hcmNoLmh2bS5z dm0uZHJfbWFza1swXSA9IG1zcl9jb250ZW50OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug TVNSX0FNRDY0X0RSMV9BRERSRVNTX01BU0sgLi4uIE1TUl9BTUQ2NF9EUjNfQUREUkVTU19NQVNL OgogICAgICAgICBpZiAoICF2LT5kb21haW4tPmFyY2guY3B1aWQtPmV4dGQuZGJleHQgfHwgKG1z cl9jb250ZW50ID4+IDMyKSApCiAgICAgICAgICAgICBnb3RvIGdwZjsKLSAgICAgICAgdi0+YXJj aC5odm1fc3ZtLmRyX21hc2tbbXNyIC0gTVNSX0FNRDY0X0RSMV9BRERSRVNTX01BU0sgKyAxXSA9 CisgICAgICAgIHYtPmFyY2guaHZtLnN2bS5kcl9tYXNrW21zciAtIE1TUl9BTUQ2NF9EUjFfQURE UkVTU19NQVNLICsgMV0gPQogICAgICAgICAgICAgbXNyX2NvbnRlbnQ7CiAgICAgICAgIGJyZWFr OwogCkBAIC0yMjUxLDcgKzIyNTEsNyBAQCBzdGF0aWMgaW50IHN2bV9tc3Jfd3JpdGVfaW50ZXJj ZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50KQogc3RhdGljIHZvaWQg c3ZtX2RvX21zcl9hY2Nlc3Moc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CiAgICAgc3Ry dWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50OwotICAgIGJvb2wgcmRtc3IgPSBjdXJyLT5hcmNoLmh2 bV9zdm0udm1jYi0+ZXhpdGluZm8xID09IDA7CisgICAgYm9vbCByZG1zciA9IGN1cnItPmFyY2gu aHZtLnN2bS52bWNiLT5leGl0aW5mbzEgPT0gMDsKICAgICBpbnQgcmMsIGluc3RfbGVuID0gX19n ZXRfaW5zdHJ1Y3Rpb25fbGVuZ3RoKAogICAgICAgICBjdXJyLCByZG1zciA/IElOU1RSX1JETVNS IDogSU5TVFJfV1JNU1IpOwogCkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBzdm1fdm1leGl0X2RvX3Zt bG9hZChzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IsCiAgICAgcHV0X3BhZ2UocGFnZSk7CiAKICAg ICAvKiBTdGF0ZSBpbiBMMSBWTUNCIGlzIHN0YWxlIG5vdyAqLwotICAgIHYtPmFyY2guaHZtX3N2 bS52bWNiX3N5bmNfc3RhdGUgPSB2bWNiX25lZWRzX3Ztc2F2ZTsKKyAgICB2LT5hcmNoLmh2bS5z dm0udm1jYl9zeW5jX3N0YXRlID0gdm1jYl9uZWVkc192bXNhdmU7CiAKICAgICBfX3VwZGF0ZV9n dWVzdF9laXAocmVncywgaW5zdF9sZW4pOwogfQpAQCAtMjUxOSw3ICsyNTE5LDcgQEAgc3RhdGlj IHZvaWQgc3ZtX2ludmxwZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YWRkcikKIAog c3RhdGljIGJvb2wgc3ZtX2dldF9wZW5kaW5nX2V2ZW50KHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3Qg eDg2X2V2ZW50ICppbmZvKQogewotICAgIGNvbnN0IHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9 IHYtPmFyY2guaHZtX3N2bS52bWNiOworICAgIGNvbnN0IHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1j YiA9IHYtPmFyY2guaHZtLnN2bS52bWNiOwogCiAgICAgaWYgKCB2bWNiLT5ldmVudGluai5maWVs ZHMudiApCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI1OTQsNyArMjU5NCw3IEBAIHZvaWQg c3ZtX3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIHVp bnQ2NF90IGV4aXRfcmVhc29uOwogICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKLSAgICBz dHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bV9zdm0udm1jYjsKKyAgICBzdHJ1 Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSB2LT5hcmNoLmh2bS5zdm0udm1jYjsKICAgICBldmVudGlu al90IGV2ZW50aW5qOwogICAgIGludCBpbnN0X2xlbiwgcmM7CiAgICAgdmludHJfdCBpbnRyOwpA QCAtMjgxNiw5ICsyODE2LDkgQEAgdm9pZCBzdm1fdm1leGl0X2hhbmRsZXIoc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgICAgICAgICAgICAgIHJlZ3MtPnJkeCwgcmVncy0+cnNp LCByZWdzLT5yZGkpOwogCiAgICAgICAgIGlmICggY3B1X2hhc19zdm1fZGVjb2RlICkKLSAgICAg ICAgICAgIHYtPmFyY2guaHZtX3N2bS5jYWNoZWRfaW5zbl9sZW4gPSB2bWNiLT5ndWVzdF9pbnNf bGVuICYgMHhmOworICAgICAgICAgICAgdi0+YXJjaC5odm0uc3ZtLmNhY2hlZF9pbnNuX2xlbiA9 IHZtY2ItPmd1ZXN0X2luc19sZW4gJiAweGY7CiAgICAgICAgIHJjID0gcGFnaW5nX2ZhdWx0KHZh LCByZWdzKTsKLSAgICAgICAgdi0+YXJjaC5odm1fc3ZtLmNhY2hlZF9pbnNuX2xlbiA9IDA7Cisg ICAgICAgIHYtPmFyY2guaHZtLnN2bS5jYWNoZWRfaW5zbl9sZW4gPSAwOwogCiAgICAgICAgIGlm ICggcmMgKQogICAgICAgICB7CkBAIC0zMDIwLDcgKzMwMjAsNyBAQCB2b2lkIHN2bV92bWV4aXRf aGFuZGxlcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICBjYXNlIFZNRVhJVF9OUEY6 CiAgICAgICAgIHBlcmZjX2luY3JhKHN2bWV4aXRzLCBWTUVYSVRfTlBGX1BFUkZDKTsKICAgICAg ICAgaWYgKCBjcHVfaGFzX3N2bV9kZWNvZGUgKQotICAgICAgICAgICAgdi0+YXJjaC5odm1fc3Zt LmNhY2hlZF9pbnNuX2xlbiA9IHZtY2ItPmd1ZXN0X2luc19sZW4gJiAweGY7CisgICAgICAgICAg ICB2LT5hcmNoLmh2bS5zdm0uY2FjaGVkX2luc25fbGVuID0gdm1jYi0+Z3Vlc3RfaW5zX2xlbiAm IDB4ZjsKICAgICAgICAgcmMgPSB2bWNiLT5leGl0aW5mbzEgJiBQRkVDX3BhZ2VfcHJlc2VudAog ICAgICAgICAgICAgID8gcDJtX3B0X2hhbmRsZV9kZWZlcnJlZF9jaGFuZ2VzKHZtY2ItPmV4aXRp bmZvMikgOiAwOwogICAgICAgICBpZiAoIHJjID49IDAgKQpAQCAtMzAzMiw3ICszMDMyLDcgQEAg dm9pZCBzdm1fdm1leGl0X2hhbmRsZXIoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAg ICAgICAgICAgICAgICAgdiwgcmMsIHZtY2ItPmV4aXRpbmZvMiwgdm1jYi0+ZXhpdGluZm8xKTsK ICAgICAgICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOwogICAgICAgICB9Ci0gICAgICAg IHYtPmFyY2guaHZtX3N2bS5jYWNoZWRfaW5zbl9sZW4gPSAwOworICAgICAgICB2LT5hcmNoLmh2 bS5zdm0uY2FjaGVkX2luc25fbGVuID0gMDsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFZN RVhJVF9JUkVUOiB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS92bWNiLmMgYi94 ZW4vYXJjaC94ODYvaHZtL3N2bS92bWNiLmMKaW5kZXggYTc2MzBhMC4uNDU1OGY1NyAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vdm1jYi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v c3ZtL3ZtY2IuYwpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGZyZWVfdm1jYihzdHJ1Y3Qgdm1jYl9z dHJ1Y3QgKnZtY2IpCiAvKiBUaGlzIGZ1bmN0aW9uIGNhbiBkaXJlY3RseSBhY2Nlc3MgZmllbGRz IHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IGNsZWFuIGJpdHMuICovCiBzdGF0aWMgaW50IGNvbnN0cnVj dF92bWNiKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHN0cnVjdCBzdm1fdmNwdSAqYXJjaF9zdm0g PSAmdi0+YXJjaC5odm1fc3ZtOworICAgIHN0cnVjdCBzdm1fdmNwdSAqYXJjaF9zdm0gPSAmdi0+ YXJjaC5odm0uc3ZtOwogICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IGFyY2hfc3ZtLT52 bWNiOwogCiAgICAgLyogQnVpbGQtdGltZSBjaGVjayBvZiB0aGUgc2l6ZSBvZiBWTUNCIEFNRCBz dHJ1Y3R1cmUuICovCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfdm1j YihzdHJ1Y3QgdmNwdSAqdikKIGludCBzdm1fY3JlYXRlX3ZtY2Ioc3RydWN0IHZjcHUgKnYpCiB7 CiAgICAgc3RydWN0IG5lc3RlZHZjcHUgKm52ID0gJnZjcHVfbmVzdGVkaHZtKHYpOwotICAgIHN0 cnVjdCBzdm1fdmNwdSAqYXJjaF9zdm0gPSAmdi0+YXJjaC5odm1fc3ZtOworICAgIHN0cnVjdCBz dm1fdmNwdSAqYXJjaF9zdm0gPSAmdi0+YXJjaC5odm0uc3ZtOwogICAgIGludCByYzsKIAogICAg IGlmICggKG52LT5udl9uMXZtY3ggPT0gTlVMTCkgJiYKQEAgLTI1Miw3ICsyNTIsNyBAQCBpbnQg c3ZtX2NyZWF0ZV92bWNiKHN0cnVjdCB2Y3B1ICp2KQogdm9pZCBzdm1fZGVzdHJveV92bWNiKHN0 cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBuZXN0ZWR2Y3B1ICpudiA9ICZ2Y3B1X25lc3Rl ZGh2bSh2KTsKLSAgICBzdHJ1Y3Qgc3ZtX3ZjcHUgKmFyY2hfc3ZtID0gJnYtPmFyY2guaHZtX3N2 bTsKKyAgICBzdHJ1Y3Qgc3ZtX3ZjcHUgKmFyY2hfc3ZtID0gJnYtPmFyY2guaHZtLnN2bTsKIAog ICAgIGlmICggbnYtPm52X24xdm1jeCAhPSBOVUxMICkKICAgICAgICAgZnJlZV92bWNiKG52LT5u dl9uMXZtY3gpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyB2b2lkIHZtY2JfZHVtcCh1bnNp Z25lZCBjaGFyIGNoKQogICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCiAgICAgICAgIHsK ICAgICAgICAgICAgIHByaW50aygiXHRWQ1BVICVkXG4iLCB2LT52Y3B1X2lkKTsKLSAgICAgICAg ICAgIHN2bV92bWNiX2R1bXAoImtleV9oYW5kbGVyIiwgdi0+YXJjaC5odm1fc3ZtLnZtY2IpOwor ICAgICAgICAgICAgc3ZtX3ZtY2JfZHVtcCgia2V5X2hhbmRsZXIiLCB2LT5hcmNoLmh2bS5zdm0u dm1jYik7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v dm14L2ludHIuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L2ludHIuYwppbmRleCA4ODkwNjdjLi41 ZThjYmQ0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC9pbnRyLmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS92bXgvaW50ci5jCkBAIC0xMDYsOSArMTA2LDkgQEAgc3RhdGljIHZvaWQg dm14X2VuYWJsZV9pbnRyX3dpbmRvdyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9pbnRhY2sg aW50YWNrKQogICAgICAgICBjdGwgPSBDUFVfQkFTRURfVklSVFVBTF9OTUlfUEVORElORzsKICAg ICB9CiAKLSAgICBpZiAoICEodi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCAmIGN0bCkgKQor ICAgIGlmICggISh2LT5hcmNoLmh2bS52bXguZXhlY19jb250cm9sICYgY3RsKSApCiAgICAgewot ICAgICAgICB2LT5hcmNoLmh2bV92bXguZXhlY19jb250cm9sIHw9IGN0bDsKKyAgICAgICAgdi0+ YXJjaC5odm0udm14LmV4ZWNfY29udHJvbCB8PSBjdGw7CiAgICAgICAgIHZteF91cGRhdGVfY3B1 X2V4ZWNfY29udHJvbCh2KTsKICAgICB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZv aWQgdm14X2VuYWJsZV9pbnRyX3dpbmRvdyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9pbnRh Y2sgaW50YWNrKQogICogIFVuZm9ydHVuYXRlbHksIGludGVycnVwdCBibG9ja2luZyBpbiBMMiB3 b24ndCB3b3JrIHdpdGggc2ltcGxlCiAgKiAgaW50cl93aW5kb3dfb3BlbiAod2hpY2ggZGVwZW5k cyBvbiBMMidzIElGKS4gVG8gc29sdmUgdGhpcywKICAqICB0aGUgZm9sbG93aW5nIGFsZ29yaXRo bSBjYW4gYmUgdXNlZDoKLSAqICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbC5WSVJUVUFM X0lOVFJfUEVORElORyBub3cgZGVub3RlcworICogICB2LT5hcmNoLmh2bS52bXguZXhlY19jb250 cm9sLlZJUlRVQUxfSU5UUl9QRU5ESU5HIG5vdyBkZW5vdGVzCiAgKiAgIG9ubHkgTDAgY29udHJv bCwgcGh5c2ljYWwgY29udHJvbCBtYXkgYmUgZGlmZmVyZW50IGZyb20gaXQuCiAgKiAgICAgICAt IGlmIGluIEwxLCBpdCBiZWhhdmVzIG5vcm1hbGx5LCBpbnRyIHdpbmRvdyBpcyB3cml0dGVuCiAg KiAgICAgICAgIHRvIHBoeXNpY2FsIGNvbnRyb2wgYXMgaXQgaXMKQEAgLTIzNCw3ICsyMzQsNyBA QCB2b2lkIHZteF9pbnRyX2Fzc2lzdCh2b2lkKQogICAgIC8qIEJsb2NrIGV2ZW50IGluamVjdGlv biB3aGVuIHNpbmdsZSBzdGVwIHdpdGggTVRGLiAqLwogICAgIGlmICggdW5saWtlbHkodi0+YXJj aC5odm0uc2luZ2xlX3N0ZXApICkKICAgICB7Ci0gICAgICAgIHYtPmFyY2guaHZtX3ZteC5leGVj X2NvbnRyb2wgfD0gQ1BVX0JBU0VEX01PTklUT1JfVFJBUF9GTEFHOworICAgICAgICB2LT5hcmNo Lmh2bS52bXguZXhlY19jb250cm9sIHw9IENQVV9CQVNFRF9NT05JVE9SX1RSQVBfRkxBRzsKICAg ICAgICAgdm14X3VwZGF0ZV9jcHVfZXhlY19jb250cm9sKHYpOwogICAgICAgICByZXR1cm47CiAg ICAgfQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgdm14X2ludHJfYXNzaXN0KHZvaWQpCiAgICAg ICAgICAgICAgICAgICAgIHByaW50aygiXG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg ICAgICAgICAgICBwaV9kZXNjID0gJnYtPmFyY2guaHZtX3ZteC5waV9kZXNjOworICAgICAgICAg ICAgICAgIHBpX2Rlc2MgPSAmdi0+YXJjaC5odm0udm14LnBpX2Rlc2M7CiAgICAgICAgICAgICAg ICAgaWYgKCBwaV9kZXNjICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg IHdvcmQgPSAoY29uc3Qgdm9pZCAqKSZwaV9kZXNjLT5waXI7CkBAIC0zNzQsMTIgKzM3NCwxMiBA QCB2b2lkIHZteF9pbnRyX2Fzc2lzdCh2b2lkKQogICAgICAgICAgICAgICAgICAgICBpbnRhY2su dmVjdG9yOwogICAgICAgICBfX3Ztd3JpdGUoR1VFU1RfSU5UUl9TVEFUVVMsIHN0YXR1cyk7CiAK LSAgICAgICAgbiA9IEFSUkFZX1NJWkUodi0+YXJjaC5odm1fdm14LmVvaV9leGl0X2JpdG1hcCk7 Ci0gICAgICAgIHdoaWxlICggKGkgPSBmaW5kX2ZpcnN0X2JpdCgmdi0+YXJjaC5odm1fdm14LmVv aV9leGl0bWFwX2NoYW5nZWQsCisgICAgICAgIG4gPSBBUlJBWV9TSVpFKHYtPmFyY2guaHZtLnZt eC5lb2lfZXhpdF9iaXRtYXApOworICAgICAgICB3aGlsZSAoIChpID0gZmluZF9maXJzdF9iaXQo JnYtPmFyY2guaHZtLnZteC5lb2lfZXhpdG1hcF9jaGFuZ2VkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbikpIDwgbiApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFy X2JpdChpLCAmdi0+YXJjaC5odm1fdm14LmVvaV9leGl0bWFwX2NoYW5nZWQpOwotICAgICAgICAg ICAgX192bXdyaXRlKEVPSV9FWElUX0JJVE1BUChpKSwgdi0+YXJjaC5odm1fdm14LmVvaV9leGl0 X2JpdG1hcFtpXSk7CisgICAgICAgICAgICBjbGVhcl9iaXQoaSwgJnYtPmFyY2guaHZtLnZteC5l b2lfZXhpdG1hcF9jaGFuZ2VkKTsKKyAgICAgICAgICAgIF9fdm13cml0ZShFT0lfRVhJVF9CSVRN QVAoaSksIHYtPmFyY2guaHZtLnZteC5lb2lfZXhpdF9iaXRtYXBbaV0pOwogICAgICAgICB9CiAK ICAgICAgICAgcHRfaW50cl9wb3N0KHYsIGludGFjayk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL3ZteC9yZWFsbW9kZS5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvcmVhbG1vZGUuYwpp bmRleCAwMzJhNjgxLi5iYjBiNDQzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC9y ZWFsbW9kZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMKQEAgLTE3NSw4 ICsxNzUsOCBAQCB2b2lkIHZteF9yZWFsbW9kZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykK ICAgICAgICAgaW50cl9pbmZvID0gMDsKICAgICB9CiAKLSAgICBjdXJyLT5hcmNoLmh2bV92bXgu dm14X2VtdWxhdGUgPSAxOwotICAgIHdoaWxlICggY3Vyci0+YXJjaC5odm1fdm14LnZteF9lbXVs YXRlICYmCisgICAgY3Vyci0+YXJjaC5odm0udm14LnZteF9lbXVsYXRlID0gMTsKKyAgICB3aGls ZSAoIGN1cnItPmFyY2guaHZtLnZteC52bXhfZW11bGF0ZSAmJgogICAgICAgICAgICAgIXNvZnRp cnFfcGVuZGluZyhzbXBfcHJvY2Vzc29yX2lkKCkpICkKICAgICB7CiAgICAgICAgIC8qCkBAIC0x ODUsNyArMTg1LDcgQEAgdm9pZCB2bXhfcmVhbG1vZGUoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCiAgICAgICAgICAqIGluIHJlYWwgbW9kZSwgYmVjYXVzZSB3ZSBkb24ndCBlbXVsYXRlIHBy b3RlY3RlZC1tb2RlIElEVCB2ZWN0b3JpbmcuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoIHVu bGlrZWx5KCEoKytlbXVsYXRpb25zICYgMTUpKSAmJgotICAgICAgICAgICAgIGN1cnItPmFyY2gu aHZtX3ZteC52bXhfcmVhbG1vZGUgJiYgCisgICAgICAgICAgICAgY3Vyci0+YXJjaC5odm0udm14 LnZteF9yZWFsbW9kZSAmJgogICAgICAgICAgICAgIGh2bV9sb2NhbF9ldmVudHNfbmVlZF9kZWxp dmVyeShjdXJyKSApCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTk1LDIwICsxOTUsMjAgQEAg dm9pZCB2bXhfcmVhbG1vZGUoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgICAg ICBicmVhazsKIAogICAgICAgICAvKiBTdG9wIGVtdWxhdGluZyB1bmxlc3Mgb3VyIHNlZ21lbnQg c3RhdGUgaXMgbm90IHNhZmUgKi8KLSAgICAgICAgaWYgKCBjdXJyLT5hcmNoLmh2bV92bXgudm14 X3JlYWxtb2RlICkKLSAgICAgICAgICAgIGN1cnItPmFyY2guaHZtX3ZteC52bXhfZW11bGF0ZSA9 IAotICAgICAgICAgICAgICAgIChjdXJyLT5hcmNoLmh2bV92bXgudm04Nl9zZWdtZW50X21hc2sg IT0gMCk7CisgICAgICAgIGlmICggY3Vyci0+YXJjaC5odm0udm14LnZteF9yZWFsbW9kZSApCisg ICAgICAgICAgICBjdXJyLT5hcmNoLmh2bS52bXgudm14X2VtdWxhdGUgPQorICAgICAgICAgICAg ICAgIChjdXJyLT5hcmNoLmh2bS52bXgudm04Nl9zZWdtZW50X21hc2sgIT0gMCk7CiAgICAgICAg IGVsc2UKLSAgICAgICAgICAgIGN1cnItPmFyY2guaHZtX3ZteC52bXhfZW11bGF0ZSA9IAorICAg ICAgICAgICAgY3Vyci0+YXJjaC5odm0udm14LnZteF9lbXVsYXRlID0KICAgICAgICAgICAgICAg ICAgKChodm1lbXVsX2N0eHQuc2VnX3JlZ1t4ODZfc2VnX2NzXS5zZWwgJiAzKQogICAgICAgICAg ICAgICAgICAgfHwgKGh2bWVtdWxfY3R4dC5zZWdfcmVnW3g4Nl9zZWdfc3NdLnNlbCAmIDMpKTsK ICAgICB9CiAKICAgICAvKiBOZWVkIHRvIGVtdWxhdGUgbmV4dCB0aW1lIGlmIHdlJ3ZlIHN0YXJ0 ZWQgYW4gSU8gb3BlcmF0aW9uICovCiAgICAgaWYgKCB2aW8tPmlvX3JlcS5zdGF0ZSAhPSBTVEFU RV9JT1JFUV9OT05FICkKLSAgICAgICAgY3Vyci0+YXJjaC5odm1fdm14LnZteF9lbXVsYXRlID0g MTsKKyAgICAgICAgY3Vyci0+YXJjaC5odm0udm14LnZteF9lbXVsYXRlID0gMTsKIAotICAgIGlm ICggIWN1cnItPmFyY2guaHZtX3ZteC52bXhfZW11bGF0ZSAmJiAhY3Vyci0+YXJjaC5odm1fdm14 LnZteF9yZWFsbW9kZSApCisgICAgaWYgKCAhY3Vyci0+YXJjaC5odm0udm14LnZteF9lbXVsYXRl ICYmICFjdXJyLT5hcmNoLmh2bS52bXgudm14X3JlYWxtb2RlICkKICAgICB7CiAgICAgICAgIC8q CiAgICAgICAgICAqIENhbm5vdCBlbnRlciBwcm90ZWN0ZWQgbW9kZSB3aXRoIGJvZ3VzIHNlbGVj dG9yIFJQTHMgYW5kIERQTHMuCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNz LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKaW5kZXggYmZhM2U3Ny4uYzUzNjY1NSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZtY3MuYwpAQCAtNTE4LDcgKzUxOCw3IEBAIHN0YXRpYyB2b2lkIHZteF9mcmVl X3ZtY3MocGFkZHJfdCBwYSkKIHN0YXRpYyB2b2lkIF9fdm14X2NsZWFyX3ZtY3Modm9pZCAqaW5m bykKIHsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGluZm87Ci0gICAgc3RydWN0IHZteF92Y3B1ICph cmNoX3ZteCA9ICZ2LT5hcmNoLmh2bV92bXg7CisgICAgc3RydWN0IHZteF92Y3B1ICphcmNoX3Zt eCA9ICZ2LT5hcmNoLmh2bS52bXg7CiAKICAgICAvKiBPdGhlcndpc2Ugd2UgY2FuIG5lc3QgKHZt eF9jcHVfZG93bigpIHZzLiB2bXhfY2xlYXJfdm1jcygpKS4gKi8KICAgICBBU1NFUlQoIWxvY2Fs X2lycV9pc19lbmFibGVkKCkpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHN0YXRpYyB2b2lkIF9fdm14 X2NsZWFyX3ZtY3Modm9pZCAqaW5mbykKIAogc3RhdGljIHZvaWQgdm14X2NsZWFyX3ZtY3Moc3Ry dWN0IHZjcHUgKnYpCiB7Ci0gICAgaW50IGNwdSA9IHYtPmFyY2guaHZtX3ZteC5hY3RpdmVfY3B1 OworICAgIGludCBjcHUgPSB2LT5hcmNoLmh2bS52bXguYWN0aXZlX2NwdTsKIAogICAgIGlmICgg Y3B1ICE9IC0xICkKICAgICAgICAgb25fc2VsZWN0ZWRfY3B1cyhjcHVtYXNrX29mKGNwdSksIF9f dm14X2NsZWFyX3ZtY3MsIHYsIDEpOwpAQCAtNTUzLDE2ICs1NTMsMTYgQEAgc3RhdGljIHZvaWQg dm14X2xvYWRfdm1jcyhzdHJ1Y3QgdmNwdSAqdikKIAogICAgIGxvY2FsX2lycV9zYXZlKGZsYWdz KTsKIAotICAgIGlmICggdi0+YXJjaC5odm1fdm14LmFjdGl2ZV9jcHUgPT0gLTEgKQorICAgIGlm ICggdi0+YXJjaC5odm0udm14LmFjdGl2ZV9jcHUgPT0gLTEgKQogICAgIHsKLSAgICAgICAgbGlz dF9hZGQoJnYtPmFyY2guaHZtX3ZteC5hY3RpdmVfbGlzdCwgJnRoaXNfY3B1KGFjdGl2ZV92bWNz X2xpc3QpKTsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LmFjdGl2ZV9jcHUgPSBzbXBfcHJvY2Vz c29yX2lkKCk7CisgICAgICAgIGxpc3RfYWRkKCZ2LT5hcmNoLmh2bS52bXguYWN0aXZlX2xpc3Qs ICZ0aGlzX2NwdShhY3RpdmVfdm1jc19saXN0KSk7CisgICAgICAgIHYtPmFyY2guaHZtLnZteC5h Y3RpdmVfY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAgIH0KIAotICAgIEFTU0VSVCh2LT5h cmNoLmh2bV92bXguYWN0aXZlX2NwdSA9PSBzbXBfcHJvY2Vzc29yX2lkKCkpOworICAgIEFTU0VS VCh2LT5hcmNoLmh2bS52bXguYWN0aXZlX2NwdSA9PSBzbXBfcHJvY2Vzc29yX2lkKCkpOwogCi0g ICAgX192bXB0cmxkKHYtPmFyY2guaHZtX3ZteC52bWNzX3BhKTsKLSAgICB0aGlzX2NwdShjdXJy ZW50X3ZtY3MpID0gdi0+YXJjaC5odm1fdm14LnZtY3NfcGE7CisgICAgX192bXB0cmxkKHYtPmFy Y2guaHZtLnZteC52bWNzX3BhKTsKKyAgICB0aGlzX2NwdShjdXJyZW50X3ZtY3MpID0gdi0+YXJj aC5odm0udm14LnZtY3NfcGE7CiAKICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiB9CkBA IC01NzEsMTEgKzU3MSwxMSBAQCB2b2lkIHZteF92bWNzX3JlbG9hZChzdHJ1Y3QgdmNwdSAqdikK IHsKICAgICAvKgogICAgICAqIEFzIHdlIG1heSBiZSBydW5uaW5nIHdpdGggaW50ZXJydXB0cyBk aXNhYmxlZCwgd2UgY2FuJ3QgYWNxdWlyZQotICAgICAqIHYtPmFyY2guaHZtX3ZteC52bWNzX2xv Y2sgaGVyZS4gSG93ZXZlciwgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkCisgICAgICogdi0+YXJj aC5odm0udm14LnZtY3NfbG9jayBoZXJlLiBIb3dldmVyLCB3aXRoIGludGVycnVwdHMgZGlzYWJs ZWQKICAgICAgKiB0aGUgVk1DUyBjYW4ndCBiZSB0YWtlbiBhd2F5IGZyb20gdXMgYW55bW9yZSBp ZiB3ZSBzdGlsbCBvd24gaXQuCiAgICAgICovCiAgICAgQVNTRVJUKHYtPmlzX3J1bm5pbmcgfHwg IWxvY2FsX2lycV9pc19lbmFibGVkKCkpOwotICAgIGlmICggdi0+YXJjaC5odm1fdm14LnZtY3Nf cGEgPT0gdGhpc19jcHUoY3VycmVudF92bWNzKSApCisgICAgaWYgKCB2LT5hcmNoLmh2bS52bXgu dm1jc19wYSA9PSB0aGlzX2NwdShjdXJyZW50X3ZtY3MpICkKICAgICAgICAgcmV0dXJuOwogCiAg ICAgdm14X2xvYWRfdm1jcyh2KTsKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIHZteF9jcHVfZG93 bih2b2lkKQogCiAgICAgd2hpbGUgKCAhbGlzdF9lbXB0eShhY3RpdmVfdm1jc19saXN0KSApCiAg ICAgICAgIF9fdm14X2NsZWFyX3ZtY3MobGlzdF9lbnRyeShhY3RpdmVfdm1jc19saXN0LT5uZXh0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZjcHUsIGFyY2gu aHZtX3ZteC5hY3RpdmVfbGlzdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHZjcHUsIGFyY2guaHZtLnZteC5hY3RpdmVfbGlzdCkpOwogCiAgICAgQlVHX09O KCEocmVhZF9jcjQoKSAmIFg4Nl9DUjRfVk1YRSkpOwogICAgIHRoaXNfY3B1KHZteG9uKSA9IDA7 CkBAIC03NDEsNyArNzQxLDcgQEAgYm9vbF90IHZteF92bWNzX3RyeV9lbnRlcihzdHJ1Y3QgdmNw dSAqdikKICAgICAgKiB2bXhfdm1jc19lbnRlci9leGl0IGFuZCBzY2hlZHVsaW5nIHRhaWwgY3Jp dGljYWwgcmVnaW9ucy4KICAgICAgKi8KICAgICBpZiAoIGxpa2VseSh2ID09IGN1cnJlbnQpICkK LSAgICAgICAgcmV0dXJuIHYtPmFyY2guaHZtX3ZteC52bWNzX3BhID09IHRoaXNfY3B1KGN1cnJl bnRfdm1jcyk7CisgICAgICAgIHJldHVybiB2LT5hcmNoLmh2bS52bXgudm1jc19wYSA9PSB0aGlz X2NwdShjdXJyZW50X3ZtY3MpOwogCiAgICAgZnYgPSAmdGhpc19jcHUoZm9yZWlnbl92bWNzKTsK IApAQCAtNzU1LDcgKzc1NSw3IEBAIGJvb2xfdCB2bXhfdm1jc190cnlfZW50ZXIoc3RydWN0IHZj cHUgKnYpCiAgICAgICAgIEJVR19PTihmdi0+Y291bnQgIT0gMCk7CiAKICAgICAgICAgdmNwdV9w YXVzZSh2KTsKLSAgICAgICAgc3Bpbl9sb2NrKCZ2LT5hcmNoLmh2bV92bXgudm1jc19sb2NrKTsK KyAgICAgICAgc3Bpbl9sb2NrKCZ2LT5hcmNoLmh2bS52bXgudm1jc19sb2NrKTsKIAogICAgICAg ICB2bXhfY2xlYXJfdm1jcyh2KTsKICAgICAgICAgdm14X2xvYWRfdm1jcyh2KTsKQEAgLTc5Myw3 ICs3OTMsNyBAQCB2b2lkIHZteF92bWNzX2V4aXQoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIGlm ICggaXNfaHZtX3ZjcHUoY3VycmVudCkgKQogICAgICAgICAgICAgdm14X2xvYWRfdm1jcyhjdXJy ZW50KTsKIAotICAgICAgICBzcGluX3VubG9jaygmdi0+YXJjaC5odm1fdm14LnZtY3NfbG9jayk7 CisgICAgICAgIHNwaW5fdW5sb2NrKCZ2LT5hcmNoLmh2bS52bXgudm1jc19sb2NrKTsKICAgICAg ICAgdmNwdV91bnBhdXNlKHYpOwogCiAgICAgICAgIGZ2LT52ID0gTlVMTDsKQEAgLTgyNCw3ICs4 MjQsNyBAQCBzdGF0aWMgdm9pZCB2bXhfc2V0X2hvc3RfZW52KHN0cnVjdCB2Y3B1ICp2KQogdm9p ZCB2bXhfY2xlYXJfbXNyX2ludGVyY2VwdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG1z ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB2bXhfbXNyX2ludGVyY2VwdF90 eXBlIHR5cGUpCiB7Ci0gICAgc3RydWN0IHZteF9tc3JfYml0bWFwICptc3JfYml0bWFwID0gdi0+ YXJjaC5odm1fdm14Lm1zcl9iaXRtYXA7CisgICAgc3RydWN0IHZteF9tc3JfYml0bWFwICptc3Jf Yml0bWFwID0gdi0+YXJjaC5odm0udm14Lm1zcl9iaXRtYXA7CiAgICAgc3RydWN0IGRvbWFpbiAq ZCA9IHYtPmRvbWFpbjsKIAogICAgIC8qIFZNWCBNU1IgYml0bWFwIHN1cHBvcnRlZD8gKi8KQEAg LTg1Niw3ICs4NTYsNyBAQCB2b2lkIHZteF9jbGVhcl9tc3JfaW50ZXJjZXB0KHN0cnVjdCB2Y3B1 ICp2LCB1bnNpZ25lZCBpbnQgbXNyLAogdm9pZCB2bXhfc2V0X21zcl9pbnRlcmNlcHQoc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGludCBtc3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIHZteF9tc3JfaW50ZXJjZXB0X3R5cGUgdHlwZSkKIHsKLSAgICBzdHJ1Y3Qgdm14X21zcl9i aXRtYXAgKm1zcl9iaXRtYXAgPSB2LT5hcmNoLmh2bV92bXgubXNyX2JpdG1hcDsKKyAgICBzdHJ1 Y3Qgdm14X21zcl9iaXRtYXAgKm1zcl9iaXRtYXAgPSB2LT5hcmNoLmh2bS52bXgubXNyX2JpdG1h cDsKIAogICAgIC8qIFZNWCBNU1IgYml0bWFwIHN1cHBvcnRlZD8gKi8KICAgICBpZiAoIG1zcl9i aXRtYXAgPT0gTlVMTCApCkBAIC05MDEsNyArOTAxLDcgQEAgYm9vbCB2bXhfbXNyX2lzX2ludGVy Y2VwdGVkKHN0cnVjdCB2bXhfbXNyX2JpdG1hcCAqbXNyX2JpdG1hcCwKICAqLwogdm9pZCB2bXhf dm1jc19zd2l0Y2gocGFkZHJfdCBmcm9tLCBwYWRkcl90IHRvKQogewotICAgIHN0cnVjdCB2bXhf dmNwdSAqdm14ID0gJmN1cnJlbnQtPmFyY2guaHZtX3ZteDsKKyAgICBzdHJ1Y3Qgdm14X3ZjcHUg KnZteCA9ICZjdXJyZW50LT5hcmNoLmh2bS52bXg7CiAgICAgc3Bpbl9sb2NrKCZ2bXgtPnZtY3Nf bG9jayk7CiAKICAgICBfX3ZtcGNsZWFyKGZyb20pOwpAQCAtOTI0LDE0ICs5MjQsMTQgQEAgdm9p ZCB2bXhfdm1jc19zd2l0Y2gocGFkZHJfdCBmcm9tLCBwYWRkcl90IHRvKQogCiB2b2lkIHZpcnR1 YWxfdm1jc19lbnRlcihjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBfX3ZtcHRybGQodi0+ YXJjaC5odm1fdm14LnZtY3Nfc2hhZG93X21hZGRyKTsKKyAgICBfX3ZtcHRybGQodi0+YXJjaC5o dm0udm14LnZtY3Nfc2hhZG93X21hZGRyKTsKIH0KIAogdm9pZCB2aXJ0dWFsX3ZtY3NfZXhpdChj b25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBwYWRkcl90IGN1ciA9IHRoaXNfY3B1KGN1cnJl bnRfdm1jcyk7CiAKLSAgICBfX3ZtcGNsZWFyKHYtPmFyY2guaHZtX3ZteC52bWNzX3NoYWRvd19t YWRkcik7CisgICAgX192bXBjbGVhcih2LT5hcmNoLmh2bS52bXgudm1jc19zaGFkb3dfbWFkZHIp OwogICAgIGlmICggY3VyICkKICAgICAgICAgX192bXB0cmxkKGN1cik7CiB9CkBAIC05ODQsMTMg Kzk4NCwxMyBAQCBlbnVtIHZteF9pbnNuX2Vycm5vIHZpcnR1YWxfdm1jc192bXdyaXRlX3NhZmUo Y29uc3Qgc3RydWN0IHZjcHUgKnYsCiAgKi8KIHN0YXRpYyB2b2lkIHBpX2Rlc2NfaW5pdChzdHJ1 Y3QgdmNwdSAqdikKIHsKLSAgICB2LT5hcmNoLmh2bV92bXgucGlfZGVzYy5udiA9IHBvc3RlZF9p bnRyX3ZlY3RvcjsKKyAgICB2LT5hcmNoLmh2bS52bXgucGlfZGVzYy5udiA9IHBvc3RlZF9pbnRy X3ZlY3RvcjsKIAogICAgIC8qCiAgICAgICogTWFyayBORFNUIGFzIGludmFsaWQsIHRoZW4gd2Ug Y2FuIHVzZSB0aGlzIGludmFsaWQgdmFsdWUgYXMgYQogICAgICAqIG1hcmtlciB0byB3aGV0aGVy IHVwZGF0ZSBORFNUIG9yIG5vdCBpbiB2bXhfcGlfaG9va3NfYXNzaWduKCkuCiAgICAgICovCi0g ICAgdi0+YXJjaC5odm1fdm14LnBpX2Rlc2MubmRzdCA9IEFQSUNfSU5WQUxJRF9ERVNUOworICAg IHYtPmFyY2guaHZtLnZteC5waV9kZXNjLm5kc3QgPSBBUElDX0lOVkFMSURfREVTVDsKIH0KIAog c3RhdGljIGludCBjb25zdHJ1Y3Rfdm1jcyhzdHJ1Y3QgdmNwdSAqdikKQEAgLTEwMDUsMzEgKzEw MDUsMzEgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfdm1jcyhzdHJ1Y3QgdmNwdSAqdikKICAgICAv KiBWTUNTIGNvbnRyb2xzLiAqLwogICAgIF9fdm13cml0ZShQSU5fQkFTRURfVk1fRVhFQ19DT05U Uk9MLCB2bXhfcGluX2Jhc2VkX2V4ZWNfY29udHJvbCk7CiAKLSAgICB2LT5hcmNoLmh2bV92bXgu ZXhlY19jb250cm9sID0gdm14X2NwdV9iYXNlZF9leGVjX2NvbnRyb2w7CisgICAgdi0+YXJjaC5o dm0udm14LmV4ZWNfY29udHJvbCA9IHZteF9jcHVfYmFzZWRfZXhlY19jb250cm9sOwogICAgIGlm ICggZC0+YXJjaC52dHNjICYmICFjcHVfaGFzX3ZteF90c2Nfc2NhbGluZyApCi0gICAgICAgIHYt PmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgfD0gQ1BVX0JBU0VEX1JEVFNDX0VYSVRJTkc7Cisg ICAgICAgIHYtPmFyY2guaHZtLnZteC5leGVjX2NvbnRyb2wgfD0gQ1BVX0JBU0VEX1JEVFNDX0VY SVRJTkc7CiAKLSAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCA9IHZt eF9zZWNvbmRhcnlfZXhlY19jb250cm9sOworICAgIHYtPmFyY2guaHZtLnZteC5zZWNvbmRhcnlf ZXhlY19jb250cm9sID0gdm14X3NlY29uZGFyeV9leGVjX2NvbnRyb2w7CiAKICAgICAvKgogICAg ICAqIERpc2FibGUgZGVzY3JpcHRvciB0YWJsZSBleGl0aW5nOiBJdCdzIGNvbnRyb2xsZWQgYnkg dGhlIFZNIGV2ZW50CiAgICAgICogbW9uaXRvciByZXF1ZXN0aW5nIGl0LgogICAgICAqLwotICAg IHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICY9CisgICAgdi0+YXJjaC5o dm0udm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0KICAgICAgICAgflNFQ09OREFSWV9FWEVD X0RFU0NSSVBUT1JfVEFCTEVfRVhJVElORzsKIAogICAgIC8qIERpc2FibGUgVlBJRCBmb3Igbm93 OiB3ZSBkZWNpZGUgd2hlbiB0byBlbmFibGUgaXQgb24gVk1FTlRFUi4gKi8KLSAgICB2LT5hcmNo Lmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPSB+U0VDT05EQVJZX0VYRUNfRU5BQkxF X1ZQSUQ7CisgICAgdi0+YXJjaC5odm0udm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0gflNF Q09OREFSWV9FWEVDX0VOQUJMRV9WUElEOwogCiAgICAgaWYgKCBwYWdpbmdfbW9kZV9oYXAoZCkg KQogICAgIHsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCAmPSB+KENQVV9C QVNFRF9JTlZMUEdfRVhJVElORyB8CisgICAgICAgIHYtPmFyY2guaHZtLnZteC5leGVjX2NvbnRy b2wgJj0gfihDUFVfQkFTRURfSU5WTFBHX0VYSVRJTkcgfAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ1BVX0JBU0VEX0NSM19MT0FEX0VYSVRJTkcgfAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX0JBU0VEX0NSM19TVE9SRV9F WElUSU5HKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14 LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0gCisgICAgICAgIHYtPmFyY2guaHZtLnZteC5zZWNv bmRhcnlfZXhlY19jb250cm9sICY9CiAgICAgICAgICAgICB+KFNFQ09OREFSWV9FWEVDX0VOQUJM RV9FUFQgfCAKICAgICAgICAgICAgICAgU0VDT05EQVJZX0VYRUNfVU5SRVNUUklDVEVEX0dVRVNU IHwKICAgICAgICAgICAgICAgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0lOVlBDSUQpOwpAQCAtMTAz OSwyNSArMTAzOSwyNSBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF92bWNzKHN0cnVjdCB2Y3B1ICp2 KQogICAgIH0KIAogICAgIC8qIERpc2FibGUgVmlydHVhbGl6ZSB4MkFQSUMgbW9kZSBieSBkZWZh dWx0LiAqLwotICAgIHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICY9Cisg ICAgdi0+YXJjaC5odm0udm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0KICAgICAgICAgflNF Q09OREFSWV9FWEVDX1ZJUlRVQUxJWkVfWDJBUElDX01PREU7CiAKICAgICAvKiBEbyBub3QgZW5h YmxlIE1vbml0b3IgVHJhcCBGbGFnIHVubGVzcyBzdGFydCBzaW5nbGUgc3RlcCBkZWJ1ZyAqLwot ICAgIHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgJj0gfkNQVV9CQVNFRF9NT05JVE9SX1RS QVBfRkxBRzsKKyAgICB2LT5hcmNoLmh2bS52bXguZXhlY19jb250cm9sICY9IH5DUFVfQkFTRURf TU9OSVRPUl9UUkFQX0ZMQUc7CiAKICAgICAvKiBEaXNhYmxlIFZNRlVOQyBhbmQgI1ZFIGZvciBu b3c6IHRoZXkgbWF5IGJlIGVuYWJsZWQgbGF0ZXIgYnkgYWx0cDJtLiAqLwotICAgIHYtPmFyY2gu aHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICY9CisgICAgdi0+YXJjaC5odm0udm14LnNl Y29uZGFyeV9leGVjX2NvbnRyb2wgJj0KICAgICAgICAgfihTRUNPTkRBUllfRVhFQ19FTkFCTEVf Vk1fRlVOQ1RJT05TIHwKICAgICAgICAgICBTRUNPTkRBUllfRVhFQ19FTkFCTEVfVklSVF9FWENF UFRJT05TKTsKIAogICAgIGlmICggIWhhc192bGFwaWMoZCkgKQogICAgIHsKICAgICAgICAgLyog RGlzYWJsZSB2aXJ0dWFsIGFwaWNzLCBUUFIgKi8KLSAgICAgICAgdi0+YXJjaC5odm1fdm14LnNl Y29uZGFyeV9leGVjX2NvbnRyb2wgJj0KKyAgICAgICAgdi0+YXJjaC5odm0udm14LnNlY29uZGFy eV9leGVjX2NvbnRyb2wgJj0KICAgICAgICAgICAgIH4oU0VDT05EQVJZX0VYRUNfVklSVFVBTEla RV9BUElDX0FDQ0VTU0VTCiAgICAgICAgICAgICAgIHwgU0VDT05EQVJZX0VYRUNfQVBJQ19SRUdJ U1RFUl9WSVJUCiAgICAgICAgICAgICAgIHwgU0VDT05EQVJZX0VYRUNfVklSVFVBTF9JTlRSX0RF TElWRVJZKTsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCAmPSB+Q1BVX0JB U0VEX1RQUl9TSEFET1c7CisgICAgICAgIHYtPmFyY2guaHZtLnZteC5leGVjX2NvbnRyb2wgJj0g fkNQVV9CQVNFRF9UUFJfU0hBRE9XOwogCiAgICAgICAgIC8qIEluIHR1cm4sIGRpc2FibGUgcG9z dGVkIGludGVycnVwdHMuICovCiAgICAgICAgIF9fdm13cml0ZShQSU5fQkFTRURfVk1fRVhFQ19D T05UUk9MLApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfdm1jcyhz dHJ1Y3QgdmNwdSAqdikKIAogICAgIGlmICggY3B1X2hhc192bXhfc2Vjb25kYXJ5X2V4ZWNfY29u dHJvbCApCiAgICAgICAgIF9fdm13cml0ZShTRUNPTkRBUllfVk1fRVhFQ19DT05UUk9MLAotICAg ICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wpOwor ICAgICAgICAgICAgICAgICAgdi0+YXJjaC5odm0udm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wp OwogCiAgICAgLyogTVNSIGFjY2VzcyBiaXRtYXAuICovCiAgICAgaWYgKCBjcHVfaGFzX3ZteF9t c3JfYml0bWFwICkKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3Zt Y3Moc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIH0KIAogICAgICAgICBtZW1zZXQobXNyX2JpdG1h cCwgfjAsIFBBR0VfU0laRSk7Ci0gICAgICAgIHYtPmFyY2guaHZtX3ZteC5tc3JfYml0bWFwID0g bXNyX2JpdG1hcDsKKyAgICAgICAgdi0+YXJjaC5odm0udm14Lm1zcl9iaXRtYXAgPSBtc3JfYml0 bWFwOwogICAgICAgICBfX3Ztd3JpdGUoTVNSX0JJVE1BUCwgdmlydF90b19tYWRkcihtc3JfYml0 bWFwKSk7CiAKICAgICAgICAgdm14X2NsZWFyX21zcl9pbnRlcmNlcHQodiwgTVNSX0ZTX0JBU0Us IFZNWF9NU1JfUlcpOwpAQCAtMTExNiw4ICsxMTE2LDggQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rf dm1jcyhzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgdW5zaWduZWQgaW50IGk7CiAKICAgICAgICAg LyogRU9JLWV4aXQgYml0bWFwICovCi0gICAgICAgIGJpdG1hcF96ZXJvKHYtPmFyY2guaHZtX3Zt eC5lb2lfZXhpdF9iaXRtYXAsIE5SX1ZFQ1RPUlMpOwotICAgICAgICBmb3IgKCBpID0gMDsgaSA8 IEFSUkFZX1NJWkUodi0+YXJjaC5odm1fdm14LmVvaV9leGl0X2JpdG1hcCk7ICsraSApCisgICAg ICAgIGJpdG1hcF96ZXJvKHYtPmFyY2guaHZtLnZteC5lb2lfZXhpdF9iaXRtYXAsIE5SX1ZFQ1RP UlMpOworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodi0+YXJjaC5odm0udm14 LmVvaV9leGl0X2JpdG1hcCk7ICsraSApCiAgICAgICAgICAgICBfX3Ztd3JpdGUoRU9JX0VYSVRf QklUTUFQKGkpLCAwKTsKIAogICAgICAgICAvKiBJbml0aWFsaXNlIEd1ZXN0IEludGVycnVwdCBT dGF0dXMgKFJWSSBhbmQgU1ZJKSB0byAwICovCkBAIC0xMTI5LDEyICsxMTI5LDEyIEBAIHN0YXRp YyBpbnQgY29uc3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIGlmICggaW9tbXVf aW50cG9zdCApCiAgICAgICAgICAgICBwaV9kZXNjX2luaXQodik7CiAKLSAgICAgICAgX192bXdy aXRlKFBJX0RFU0NfQUREUiwgdmlydF90b19tYWRkcigmdi0+YXJjaC5odm1fdm14LnBpX2Rlc2Mp KTsKKyAgICAgICAgX192bXdyaXRlKFBJX0RFU0NfQUREUiwgdmlydF90b19tYWRkcigmdi0+YXJj aC5odm0udm14LnBpX2Rlc2MpKTsKICAgICAgICAgX192bXdyaXRlKFBPU1RFRF9JTlRSX05PVElG SUNBVElPTl9WRUNUT1IsIHBvc3RlZF9pbnRyX3ZlY3Rvcik7CiAgICAgfQogCiAgICAgLyogRGlz YWJsZSBQTUwgYW55d2F5IGhlcmUgYXMgaXQgd2lsbCBvbmx5IGJlIGVuYWJsZWQgaW4gbG9nIGRp cnR5IG1vZGUgKi8KLSAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAm PSB+U0VDT05EQVJZX0VYRUNfRU5BQkxFX1BNTDsKKyAgICB2LT5hcmNoLmh2bS52bXguc2Vjb25k YXJ5X2V4ZWNfY29udHJvbCAmPSB+U0VDT05EQVJZX0VYRUNfRU5BQkxFX1BNTDsKIAogICAgIC8q IEhvc3QgZGF0YSBzZWxlY3RvcnMuICovCiAgICAgX192bXdyaXRlKEhPU1RfU1NfU0VMRUNUT1Is IF9fSFlQRVJWSVNPUl9EUyk7CkBAIC0xMTQ3LDEwICsxMTQ3LDEwIEBAIHN0YXRpYyBpbnQgY29u c3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpCiAgICAgX192bXdyaXRlKEhPU1RfVFJfU0VMRUNU T1IsIFRTU19FTlRSWSA8PCAzKTsKIAogICAgIC8qIEhvc3QgY29udHJvbCByZWdpc3RlcnMuICov Ci0gICAgdi0+YXJjaC5odm1fdm14Lmhvc3RfY3IwID0gcmVhZF9jcjAoKSAmIH5YODZfQ1IwX1RT OworICAgIHYtPmFyY2guaHZtLnZteC5ob3N0X2NyMCA9IHJlYWRfY3IwKCkgJiB+WDg2X0NSMF9U UzsKICAgICBpZiAoICF2LT5hcmNoLmZ1bGx5X2VhZ2VyX2ZwdSApCi0gICAgICAgIHYtPmFyY2gu aHZtX3ZteC5ob3N0X2NyMCB8PSBYODZfQ1IwX1RTOwotICAgIF9fdm13cml0ZShIT1NUX0NSMCwg di0+YXJjaC5odm1fdm14Lmhvc3RfY3IwKTsKKyAgICAgICAgdi0+YXJjaC5odm0udm14Lmhvc3Rf Y3IwIHw9IFg4Nl9DUjBfVFM7CisgICAgX192bXdyaXRlKEhPU1RfQ1IwLCB2LT5hcmNoLmh2bS52 bXguaG9zdF9jcjApOwogICAgIF9fdm13cml0ZShIT1NUX0NSNCwgbW11X2NyNF9mZWF0dXJlcyk7 CiAgICAgaWYgKCBjcHVfaGFzX3ZteF9lZmVyICkKICAgICAgICAgX192bXdyaXRlKEhPU1RfRUZF UiwgcmVhZF9lZmVyKCkpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIGludCBjb25zdHJ1 Y3Rfdm1jcyhzdHJ1Y3QgdmNwdSAqdikKIAogICAgIF9fdm13cml0ZShDUjBfR1VFU1RfSE9TVF9N QVNLLCB+MFVMKTsKICAgICBfX3Ztd3JpdGUoQ1I0X0dVRVNUX0hPU1RfTUFTSywgfjBVTCk7Ci0g ICAgdi0+YXJjaC5odm1fdm14LmNyNF9ob3N0X21hc2sgPSB+MFVMOworICAgIHYtPmFyY2guaHZt LnZteC5jcjRfaG9zdF9tYXNrID0gfjBVTDsKIAogICAgIF9fdm13cml0ZShQQUdFX0ZBVUxUX0VS Uk9SX0NPREVfTUFTSywgMCk7CiAgICAgX192bXdyaXRlKFBBR0VfRkFVTFRfRVJST1JfQ09ERV9N QVRDSCwgMCk7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF92bWNz KHN0cnVjdCB2Y3B1ICp2KQogICAgIF9fdm13cml0ZShHVUVTVF9EUjcsIDApOwogICAgIF9fdm13 cml0ZShWTUNTX0xJTktfUE9JTlRFUiwgfjBVTCk7CiAKLSAgICB2LT5hcmNoLmh2bV92bXguZXhj ZXB0aW9uX2JpdG1hcCA9IEhWTV9UUkFQX01BU0sKKyAgICB2LT5hcmNoLmh2bS52bXguZXhjZXB0 aW9uX2JpdG1hcCA9IEhWTV9UUkFQX01BU0sKICAgICAgICAgICAgICAgfCAocGFnaW5nX21vZGVf aGFwKGQpID8gMCA6ICgxVSA8PCBUUkFQX3BhZ2VfZmF1bHQpKQogICAgICAgICAgICAgICB8ICh2 LT5hcmNoLmZ1bGx5X2VhZ2VyX2ZwdSA/IDAgOiAoMVUgPDwgVFJBUF9ub19kZXZpY2UpKTsKICAg ICB2bXhfdXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXAodik7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBz dGF0aWMgc3RydWN0IHZteF9tc3JfZW50cnkgKmxvY2F0ZV9tc3JfZW50cnkoCiBzdHJ1Y3Qgdm14 X21zcl9lbnRyeSAqdm14X2ZpbmRfbXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBt c3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdm14X21zcl9saXN0 X3R5cGUgdHlwZSkKIHsKLSAgICBjb25zdCBzdHJ1Y3Qgdm14X3ZjcHUgKnZteCA9ICZ2LT5hcmNo Lmh2bV92bXg7CisgICAgY29uc3Qgc3RydWN0IHZteF92Y3B1ICp2bXggPSAmdi0+YXJjaC5odm0u dm14OwogICAgIHN0cnVjdCB2bXhfbXNyX2VudHJ5ICpzdGFydCA9IE5VTEwsICplbnQsICplbmQ7 CiAgICAgdW5zaWduZWQgaW50IHN1YnN0YXJ0ID0gMCwgc3ViZW5kID0gdm14LT5tc3Jfc2F2ZV9j b3VudDsKICAgICB1bnNpZ25lZCBpbnQgdG90YWwgPSB2bXgtPm1zcl9sb2FkX2NvdW50OwpAQCAt MTM0OSw3ICsxMzQ5LDcgQEAgc3RydWN0IHZteF9tc3JfZW50cnkgKnZteF9maW5kX21zcihjb25z dCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLAogaW50IHZteF9hZGRfbXNyKHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCwKICAgICAgICAgICAgICAgICBlbnVt IHZteF9tc3JfbGlzdF90eXBlIHR5cGUpCiB7Ci0gICAgc3RydWN0IHZteF92Y3B1ICp2bXggPSAm di0+YXJjaC5odm1fdm14OworICAgIHN0cnVjdCB2bXhfdmNwdSAqdm14ID0gJnYtPmFyY2guaHZt LnZteDsKICAgICBzdHJ1Y3Qgdm14X21zcl9lbnRyeSAqKnB0ciwgKnN0YXJ0ID0gTlVMTCwgKmVu dCwgKmVuZDsKICAgICB1bnNpZ25lZCBpbnQgc3Vic3RhcnQsIHN1YmVuZCwgdG90YWw7CiAgICAg aW50IHJjOwpAQCAtMTQ2MCw3ICsxNDYwLDcgQEAgaW50IHZteF9hZGRfbXNyKHN0cnVjdCB2Y3B1 ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCwKIAogaW50IHZteF9kZWxfbXNyKHN0cnVj dCB2Y3B1ICp2LCB1aW50MzJfdCBtc3IsIGVudW0gdm14X21zcl9saXN0X3R5cGUgdHlwZSkKIHsK LSAgICBzdHJ1Y3Qgdm14X3ZjcHUgKnZteCA9ICZ2LT5hcmNoLmh2bV92bXg7CisgICAgc3RydWN0 IHZteF92Y3B1ICp2bXggPSAmdi0+YXJjaC5odm0udm14OwogICAgIHN0cnVjdCB2bXhfbXNyX2Vu dHJ5ICpzdGFydCA9IE5VTEwsICplbnQsICplbmQ7CiAgICAgdW5zaWduZWQgaW50IHN1YnN0YXJ0 ID0gMCwgc3ViZW5kID0gdm14LT5tc3Jfc2F2ZV9jb3VudDsKICAgICB1bnNpZ25lZCBpbnQgdG90 YWwgPSB2bXgtPm1zcl9sb2FkX2NvdW50OwpAQCAtMTUyNCwyMSArMTUyNCwyMSBAQCBpbnQgdm14 X2RlbF9tc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwgZW51bSB2bXhfbXNyX2xpc3Rf dHlwZSB0eXBlKQogCiB2b2lkIHZteF9zZXRfZW9pX2V4aXRfYml0bWFwKHN0cnVjdCB2Y3B1ICp2 LCB1OCB2ZWN0b3IpCiB7Ci0gICAgaWYgKCAhdGVzdF9hbmRfc2V0X2JpdCh2ZWN0b3IsIHYtPmFy Y2guaHZtX3ZteC5lb2lfZXhpdF9iaXRtYXApICkKKyAgICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0 KHZlY3Rvciwgdi0+YXJjaC5odm0udm14LmVvaV9leGl0X2JpdG1hcCkgKQogICAgICAgICBzZXRf Yml0KHZlY3RvciAvIEJJVFNfUEVSX0xPTkcsCi0gICAgICAgICAgICAgICAgJnYtPmFyY2guaHZt X3ZteC5lb2lfZXhpdG1hcF9jaGFuZ2VkKTsKKyAgICAgICAgICAgICAgICAmdi0+YXJjaC5odm0u dm14LmVvaV9leGl0bWFwX2NoYW5nZWQpOwogfQogCiB2b2lkIHZteF9jbGVhcl9lb2lfZXhpdF9i aXRtYXAoc3RydWN0IHZjcHUgKnYsIHU4IHZlY3RvcikKIHsKLSAgICBpZiAoIHRlc3RfYW5kX2Ns ZWFyX2JpdCh2ZWN0b3IsIHYtPmFyY2guaHZtX3ZteC5lb2lfZXhpdF9iaXRtYXApICkKKyAgICBp ZiAoIHRlc3RfYW5kX2NsZWFyX2JpdCh2ZWN0b3IsIHYtPmFyY2guaHZtLnZteC5lb2lfZXhpdF9i aXRtYXApICkKICAgICAgICAgc2V0X2JpdCh2ZWN0b3IgLyBCSVRTX1BFUl9MT05HLAotICAgICAg ICAgICAgICAgICZ2LT5hcmNoLmh2bV92bXguZW9pX2V4aXRtYXBfY2hhbmdlZCk7CisgICAgICAg ICAgICAgICAgJnYtPmFyY2guaHZtLnZteC5lb2lfZXhpdG1hcF9jaGFuZ2VkKTsKIH0KIAogYm9v bF90IHZteF92Y3B1X3BtbF9lbmFibGVkKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHJl dHVybiAhISh2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmCisgICAgcmV0 dXJuICEhKHYtPmFyY2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICYKICAgICAgICAg ICAgICAgU0VDT05EQVJZX0VYRUNfRU5BQkxFX1BNTCk7CiB9CiAKQEAgLTE1NDcsMTkgKzE1NDcs MTkgQEAgaW50IHZteF92Y3B1X2VuYWJsZV9wbWwoc3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCB2 bXhfdmNwdV9wbWxfZW5hYmxlZCh2KSApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdi0+YXJj aC5odm1fdm14LnBtbF9wZyA9IHYtPmRvbWFpbi0+YXJjaC5wYWdpbmcuYWxsb2NfcGFnZSh2LT5k b21haW4pOwotICAgIGlmICggIXYtPmFyY2guaHZtX3ZteC5wbWxfcGcgKQorICAgIHYtPmFyY2gu aHZtLnZteC5wbWxfcGcgPSB2LT5kb21haW4tPmFyY2gucGFnaW5nLmFsbG9jX3BhZ2Uodi0+ZG9t YWluKTsKKyAgICBpZiAoICF2LT5hcmNoLmh2bS52bXgucG1sX3BnICkKICAgICAgICAgcmV0dXJu IC1FTk9NRU07CiAKICAgICB2bXhfdm1jc19lbnRlcih2KTsKIAotICAgIF9fdm13cml0ZShQTUxf QUREUkVTUywgcGFnZV90b19tYWRkcih2LT5hcmNoLmh2bV92bXgucG1sX3BnKSk7CisgICAgX192 bXdyaXRlKFBNTF9BRERSRVNTLCBwYWdlX3RvX21hZGRyKHYtPmFyY2guaHZtLnZteC5wbWxfcGcp KTsKICAgICBfX3Ztd3JpdGUoR1VFU1RfUE1MX0lOREVYLCBOUl9QTUxfRU5UUklFUyAtIDEpOwog Ci0gICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgfD0gU0VDT05EQVJZ X0VYRUNfRU5BQkxFX1BNTDsKKyAgICB2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29u dHJvbCB8PSBTRUNPTkRBUllfRVhFQ19FTkFCTEVfUE1MOwogCiAgICAgX192bXdyaXRlKFNFQ09O REFSWV9WTV9FWEVDX0NPTlRST0wsCi0gICAgICAgICAgICAgIHYtPmFyY2guaHZtX3ZteC5zZWNv bmRhcnlfZXhlY19jb250cm9sKTsKKyAgICAgICAgICAgICAgdi0+YXJjaC5odm0udm14LnNlY29u ZGFyeV9leGVjX2NvbnRyb2wpOwogCiAgICAgdm14X3ZtY3NfZXhpdCh2KTsKIApAQCAtMTU3Niwx NCArMTU3NiwxNCBAQCB2b2lkIHZteF92Y3B1X2Rpc2FibGVfcG1sKHN0cnVjdCB2Y3B1ICp2KQog CiAgICAgdm14X3ZtY3NfZW50ZXIodik7CiAKLSAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5 X2V4ZWNfY29udHJvbCAmPSB+U0VDT05EQVJZX0VYRUNfRU5BQkxFX1BNTDsKKyAgICB2LT5hcmNo Lmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPSB+U0VDT05EQVJZX0VYRUNfRU5BQkxF X1BNTDsKICAgICBfX3Ztd3JpdGUoU0VDT05EQVJZX1ZNX0VYRUNfQ09OVFJPTCwKLSAgICAgICAg ICAgICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wpOworICAgICAgICAg ICAgICB2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCk7CiAKICAgICB2bXhf dm1jc19leGl0KHYpOwogCi0gICAgdi0+ZG9tYWluLT5hcmNoLnBhZ2luZy5mcmVlX3BhZ2Uodi0+ ZG9tYWluLCB2LT5hcmNoLmh2bV92bXgucG1sX3BnKTsKLSAgICB2LT5hcmNoLmh2bV92bXgucG1s X3BnID0gTlVMTDsKKyAgICB2LT5kb21haW4tPmFyY2gucGFnaW5nLmZyZWVfcGFnZSh2LT5kb21h aW4sIHYtPmFyY2guaHZtLnZteC5wbWxfcGcpOworICAgIHYtPmFyY2guaHZtLnZteC5wbWxfcGcg PSBOVUxMOwogfQogCiB2b2lkIHZteF92Y3B1X2ZsdXNoX3BtbF9idWZmZXIoc3RydWN0IHZjcHUg KnYpCkBAIC0xNjAyLDcgKzE2MDIsNyBAQCB2b2lkIHZteF92Y3B1X2ZsdXNoX3BtbF9idWZmZXIo c3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCBwbWxfaWR4ID09IChOUl9QTUxfRU5UUklFUyAtIDEp ICkKICAgICAgICAgZ290byBvdXQ7CiAKLSAgICBwbWxfYnVmID0gX19tYXBfZG9tYWluX3BhZ2Uo di0+YXJjaC5odm1fdm14LnBtbF9wZyk7CisgICAgcG1sX2J1ZiA9IF9fbWFwX2RvbWFpbl9wYWdl KHYtPmFyY2guaHZtLnZteC5wbWxfcGcpOwogCiAgICAgLyoKICAgICAgKiBQTUwgaW5kZXggY2Fu IGJlIGVpdGhlciAyXjE2LTEgKGJ1ZmZlciBpcyBmdWxsKSwgb3IgMCB+IE5SX1BNTF9FTlRSSUVT LTEKQEAgLTE3NDMsNyArMTc0Myw3IEBAIHZvaWQgdm14X2RvbWFpbl91cGRhdGVfZXB0cChzdHJ1 Y3QgZG9tYWluICpkKQogCiBpbnQgdm14X2NyZWF0ZV92bWNzKHN0cnVjdCB2Y3B1ICp2KQogewot ICAgIHN0cnVjdCB2bXhfdmNwdSAqYXJjaF92bXggPSAmdi0+YXJjaC5odm1fdm14OworICAgIHN0 cnVjdCB2bXhfdmNwdSAqYXJjaF92bXggPSAmdi0+YXJjaC5odm0udm14OwogICAgIGludCByYzsK IAogICAgIGlmICggKGFyY2hfdm14LT52bWNzX3BhID0gdm14X2FsbG9jX3ZtY3MoKSkgPT0gMCAp CkBAIC0xNzY1LDE1ICsxNzY1LDE1IEBAIGludCB2bXhfY3JlYXRlX3ZtY3Moc3RydWN0IHZjcHUg KnYpCiAKIHZvaWQgdm14X2Rlc3Ryb3lfdm1jcyhzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBzdHJ1 Y3Qgdm14X3ZjcHUgKmFyY2hfdm14ID0gJnYtPmFyY2guaHZtX3ZteDsKKyAgICBzdHJ1Y3Qgdm14 X3ZjcHUgKmFyY2hfdm14ID0gJnYtPmFyY2guaHZtLnZteDsKIAogICAgIHZteF9jbGVhcl92bWNz KHYpOwogCiAgICAgdm14X2ZyZWVfdm1jcyhhcmNoX3ZteC0+dm1jc19wYSk7CiAKLSAgICBmcmVl X3hlbmhlYXBfcGFnZSh2LT5hcmNoLmh2bV92bXguaG9zdF9tc3JfYXJlYSk7Ci0gICAgZnJlZV94 ZW5oZWFwX3BhZ2Uodi0+YXJjaC5odm1fdm14Lm1zcl9hcmVhKTsKLSAgICBmcmVlX3hlbmhlYXBf cGFnZSh2LT5hcmNoLmh2bV92bXgubXNyX2JpdG1hcCk7CisgICAgZnJlZV94ZW5oZWFwX3BhZ2Uo di0+YXJjaC5odm0udm14Lmhvc3RfbXNyX2FyZWEpOworICAgIGZyZWVfeGVuaGVhcF9wYWdlKHYt PmFyY2guaHZtLnZteC5tc3JfYXJlYSk7CisgICAgZnJlZV94ZW5oZWFwX3BhZ2Uodi0+YXJjaC5o dm0udm14Lm1zcl9iaXRtYXApOwogfQogCiB2b2lkIHZteF92bWVudHJ5X2ZhaWx1cmUodm9pZCkK QEAgLTE3ODMsNyArMTc4Myw3IEBAIHZvaWQgdm14X3ZtZW50cnlfZmFpbHVyZSh2b2lkKQogCiAg ICAgX192bXJlYWQoVk1fSU5TVFJVQ1RJT05fRVJST1IsICZlcnJvcik7CiAgICAgZ3ByaW50ayhY RU5MT0dfRVJSLCAiVk0lcyBlcnJvcjogJSNseFxuIiwKLSAgICAgICAgICAgIGN1cnItPmFyY2gu aHZtX3ZteC5sYXVuY2hlZCA/ICJSRVNVTUUiIDogIkxBVU5DSCIsIGVycm9yKTsKKyAgICAgICAg ICAgIGN1cnItPmFyY2guaHZtLnZteC5sYXVuY2hlZCA/ICJSRVNVTUUiIDogIkxBVU5DSCIsIGVy cm9yKTsKIAogICAgIGlmICggZXJyb3IgPT0gVk1YX0lOU05fSU5WQUxJRF9DT05UUk9MX1NUQVRF IHx8CiAgICAgICAgICBlcnJvciA9PSBWTVhfSU5TTl9JTlZBTElEX0hPU1RfU1RBVEUgKQpAQCAt MTc5Nyw3ICsxNzk3LDcgQEAgdm9pZCB2bXhfZG9fcmVzdW1lKHN0cnVjdCB2Y3B1ICp2KQogICAg IGJvb2xfdCBkZWJ1Z19zdGF0ZTsKICAgICB1bnNpZ25lZCBsb25nIGhvc3RfY3I0OwogCi0gICAg aWYgKCB2LT5hcmNoLmh2bV92bXguYWN0aXZlX2NwdSA9PSBzbXBfcHJvY2Vzc29yX2lkKCkgKQor ICAgIGlmICggdi0+YXJjaC5odm0udm14LmFjdGl2ZV9jcHUgPT0gc21wX3Byb2Nlc3Nvcl9pZCgp ICkKICAgICAgICAgdm14X3ZtY3NfcmVsb2FkKHYpOwogICAgIGVsc2UKICAgICB7CkBAIC0xODE0 LDcgKzE4MTQsNyBAQCB2b2lkIHZteF9kb19yZXN1bWUoc3RydWN0IHZjcHUgKnYpCiAgICAgICAg IGlmICggaGFzX2FyY2hfcGRldnModi0+ZG9tYWluKSAmJiAhaW9tbXVfc25vb3AKICAgICAgICAg ICAgICAgICAmJiAhY3B1X2hhc193YmludmRfZXhpdGluZyApCiAgICAgICAgIHsKLSAgICAgICAg ICAgIGludCBjcHUgPSB2LT5hcmNoLmh2bV92bXguYWN0aXZlX2NwdTsKKyAgICAgICAgICAgIGlu dCBjcHUgPSB2LT5hcmNoLmh2bS52bXguYWN0aXZlX2NwdTsKICAgICAgICAgICAgIGlmICggY3B1 ICE9IC0xICkKICAgICAgICAgICAgICAgICBmbHVzaF9tYXNrKGNwdW1hc2tfb2YoY3B1KSwgRkxV U0hfQ0FDSEUpOwogICAgICAgICB9CkBAIC0xODI5LDcgKzE4MjksNyBAQCB2b2lkIHZteF9kb19y ZXN1bWUoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAqIFZDUFUgbWlncmF0aW9uLiBUaGUgZW52 aXJvbm1lbnQgb2YgY3VycmVudCBWTUNTIGlzIHVwZGF0ZWQgaW4gcGxhY2UsCiAgICAgICAgICAq IGJ1dCB0aGUgYWN0aW9uIG9mIGFub3RoZXIgVk1DUyBpcyBkZWZlcnJlZCB0aWxsIGl0IGlzIHN3 aXRjaGVkIGluLgogICAgICAgICAgKi8KLSAgICAgICAgdi0+YXJjaC5odm1fdm14Lmhvc3RlbnZf bWlncmF0ZWQgPSAxOworICAgICAgICB2LT5hcmNoLmh2bS52bXguaG9zdGVudl9taWdyYXRlZCA9 IDE7CiAKICAgICAgICAgaHZtX2FzaWRfZmx1c2hfdmNwdSh2KTsKICAgICB9CkBAIC0xOTI1LDcg KzE5MjUsNyBAQCB2b2lkIHZtY3NfZHVtcF92Y3B1KHN0cnVjdCB2Y3B1ICp2KQogICAgIHByaW50 aygiQ1I0OiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhc biIsCiAgICAgICAgICAgIGNyNCwgdm1yKENSNF9SRUFEX1NIQURPVyksIHZtcihDUjRfR1VFU1Rf SE9TVF9NQVNLKSk7CiAgICAgcHJpbnRrKCJDUjMgPSAweCUwMTZseFxuIiwgdm1yKEdVRVNUX0NS MykpOwotICAgIGlmICggKHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICYK KyAgICBpZiAoICh2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmCiAgICAg ICAgICAgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0VQVCkgJiYKICAgICAgICAgIChjcjQgJiBYODZf Q1I0X1BBRSkgJiYgISh2bWVudHJ5X2N0bCAmIFZNX0VOVFJZX0lBMzJFX01PREUpICkKICAgICB7 CkBAIC0xOTY1LDcgKzE5NjUsNyBAQCB2b2lkIHZtY3NfZHVtcF92Y3B1KHN0cnVjdCB2Y3B1ICp2 KQogICAgICAgICAgICAgICAgdm1yKEdVRVNUX1BFUkZfR0xPQkFMX0NUUkwpLCB2bXIoR1VFU1Rf Qk5EQ0ZHUykpOwogICAgIHByaW50aygiSW50ZXJydXB0aWJpbGl0eSA9ICUwOHggIEFjdGl2aXR5 U3RhdGUgPSAlMDh4XG4iLAogICAgICAgICAgICB2bXIzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZ X0lORk8pLCB2bXIzMihHVUVTVF9BQ1RJVklUWV9TVEFURSkpOwotICAgIGlmICggdi0+YXJjaC5o dm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJgorICAgIGlmICggdi0+YXJjaC5odm0udm14 LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJgogICAgICAgICAgU0VDT05EQVJZX0VYRUNfVklSVFVB TF9JTlRSX0RFTElWRVJZICkKICAgICAgICAgcHJpbnRrKCJJbnRlcnJ1cHRTdGF0dXMgPSAlMDR4 XG4iLCB2bXIxNihHVUVTVF9JTlRSX1NUQVRVUykpOwogCkBAIC0yMDE2LDExICsyMDE2LDExIEBA IHZvaWQgdm1jc19kdW1wX3ZjcHUoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAgIHZtcjMyKElE VF9WRUNUT1JJTkdfSU5GTyksIHZtcjMyKElEVF9WRUNUT1JJTkdfRVJST1JfQ09ERSkpOwogICAg IHByaW50aygiVFNDIE9mZnNldCA9IDB4JTAxNmx4ICBUU0MgTXVsdGlwbGllciA9IDB4JTAxNmx4 XG4iLAogICAgICAgICAgICB2bXIoVFNDX09GRlNFVCksIHZtcihUU0NfTVVMVElQTElFUikpOwot ICAgIGlmICggKHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgJiBDUFVfQkFTRURfVFBSX1NI QURPVykgfHwKKyAgICBpZiAoICh2LT5hcmNoLmh2bS52bXguZXhlY19jb250cm9sICYgQ1BVX0JB U0VEX1RQUl9TSEFET1cpIHx8CiAgICAgICAgICAodm14X3Bpbl9iYXNlZF9leGVjX2NvbnRyb2wg JiBQSU5fQkFTRURfUE9TVEVEX0lOVEVSUlVQVCkgKQogICAgICAgICBwcmludGsoIlRQUiBUaHJl c2hvbGQgPSAweCUwMnggIFBvc3RlZEludHJWZWMgPSAweCUwMnhcbiIsCiAgICAgICAgICAgICAg ICB2bXIzMihUUFJfVEhSRVNIT0xEKSwgdm1yMTYoUE9TVEVEX0lOVFJfTk9USUZJQ0FUSU9OX1ZF Q1RPUikpOwotICAgIGlmICggKHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9s ICYKKyAgICBpZiAoICh2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmCiAg ICAgICAgICAgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0VQVCkgKQogICAgICAgICBwcmludGsoIkVQ VCBwb2ludGVyID0gMHglMDE2bHggIEVQVFAgaW5kZXggPSAweCUwNHhcbiIsCiAgICAgICAgICAg ICAgICB2bXIoRVBUX1BPSU5URVIpLCB2bXIxNihFUFRQX0lOREVYKSk7CkBAIC0yMDMxLDExICsy MDMxLDExIEBAIHZvaWQgdm1jc19kdW1wX3ZjcHUoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAg ICAgICBpICsgMSwgdm1yKENSM19UQVJHRVRfVkFMVUUoaSArIDEpKSk7CiAgICAgaWYgKCBpIDwg biApCiAgICAgICAgIHByaW50aygiQ1IzIHRhcmdldCV1PSUwMTZseFxuIiwgaSwgdm1yKENSM19U QVJHRVRfVkFMVUUoaSkpKTsKLSAgICBpZiAoIHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhl Y19jb250cm9sICYKKyAgICBpZiAoIHYtPmFyY2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250 cm9sICYKICAgICAgICAgIFNFQ09OREFSWV9FWEVDX1BBVVNFX0xPT1BfRVhJVElORyApCiAgICAg ICAgIHByaW50aygiUExFIEdhcD0lMDh4IFdpbmRvdz0lMDh4XG4iLAogICAgICAgICAgICAgICAg dm1yMzIoUExFX0dBUCksIHZtcjMyKFBMRV9XSU5ET1cpKTsKLSAgICBpZiAoIHYtPmFyY2guaHZt X3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICYKKyAgICBpZiAoIHYtPmFyY2guaHZtLnZteC5z ZWNvbmRhcnlfZXhlY19jb250cm9sICYKICAgICAgICAgIChTRUNPTkRBUllfRVhFQ19FTkFCTEVf VlBJRCB8IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9WTV9GVU5DVElPTlMpICkKICAgICAgICAgcHJp bnRrKCJWaXJ0dWFsIHByb2Nlc3NvciBJRCA9IDB4JTA0eCBWTWZ1bmMgY29udHJvbHMgPSAlMDE2 bHhcbiIsCiAgICAgICAgICAgICAgICB2bXIxNihWSVJUVUFMX1BST0NFU1NPUl9JRCksIHZtcihW TV9GVU5DVElPTl9DT05UUk9MKSk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92 bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCmluZGV4IDk1ZGVjNDYuLmRlZjQwZDYg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZteC5jCkBAIC0xMDQsMjAgKzEwNCwyMCBAQCBzdGF0aWMgdm9pZCB2bXhfdmNw dV9ibG9jayhzdHJ1Y3QgdmNwdSAqdikKICAgICBzcGlubG9ja190ICpvbGRfbG9jazsKICAgICBz cGlubG9ja190ICpwaV9ibG9ja2luZ19saXN0X2xvY2sgPQogCQkmcGVyX2NwdSh2bXhfcGlfYmxv Y2tpbmcsIHYtPnByb2Nlc3NvcikubG9jazsKLSAgICBzdHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYyA9 ICZ2LT5hcmNoLmh2bV92bXgucGlfZGVzYzsKKyAgICBzdHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYyA9 ICZ2LT5hcmNoLmh2bS52bXgucGlfZGVzYzsKIAogICAgIHNwaW5fbG9ja19pcnFzYXZlKHBpX2Js b2NraW5nX2xpc3RfbG9jaywgZmxhZ3MpOwotICAgIG9sZF9sb2NrID0gY21weGNoZygmdi0+YXJj aC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2ssIE5VTEwsCisgICAgb2xkX2xvY2sgPSBjbXB4Y2hn KCZ2LT5hcmNoLmh2bS52bXgucGlfYmxvY2tpbmcubG9jaywgTlVMTCwKICAgICAgICAgICAgICAg ICAgICAgICAgcGlfYmxvY2tpbmdfbGlzdF9sb2NrKTsKIAogICAgIC8qCi0gICAgICogJ3YtPmFy Y2guaHZtX3ZteC5waV9ibG9ja2luZy5sb2NrJyBzaG91bGQgYmUgTlVMTCBiZWZvcmUKKyAgICAg KiAndi0+YXJjaC5odm0udm14LnBpX2Jsb2NraW5nLmxvY2snIHNob3VsZCBiZSBOVUxMIGJlZm9y ZQogICAgICAqIGJlaW5nIGFzc2lnbmVkIHRvIGEgbmV3IHZhbHVlLCBzaW5jZSB0aGUgdkNQVSBp cyBjdXJyZW50bHkKICAgICAgKiBydW5uaW5nIGFuZCBpdCBjYW5ub3QgYmUgb24gYW55IGJsb2Nr aW5nIGxpc3QuCiAgICAgICovCiAgICAgQVNTRVJUKG9sZF9sb2NrID09IE5VTEwpOwogCi0gICAg bGlzdF9hZGRfdGFpbCgmdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxpc3QsCisgICAgbGlz dF9hZGRfdGFpbCgmdi0+YXJjaC5odm0udm14LnBpX2Jsb2NraW5nLmxpc3QsCiAgICAgICAgICAg ICAgICAgICAmcGVyX2NwdSh2bXhfcGlfYmxvY2tpbmcsIHYtPnByb2Nlc3NvcikubGlzdCk7CiAg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwaV9ibG9ja2luZ19saXN0X2xvY2ssIGZsYWdzKTsK IApAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIHZteF92Y3B1X2Jsb2NrKHN0cnVjdCB2 Y3B1ICp2KQogCiBzdGF0aWMgdm9pZCB2bXhfcGlfc3dpdGNoX2Zyb20oc3RydWN0IHZjcHUgKnYp CiB7Ci0gICAgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2MgPSAmdi0+YXJjaC5odm1fdm14LnBpX2Rl c2M7CisgICAgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2MgPSAmdi0+YXJjaC5odm0udm14LnBpX2Rl c2M7CiAKICAgICBpZiAoIHRlc3RfYml0KF9WUEZfYmxvY2tlZCwgJnYtPnBhdXNlX2ZsYWdzKSAp CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgdm9pZCB2bXhfcGlf c3dpdGNoX2Zyb20oc3RydWN0IHZjcHUgKnYpCiAKIHN0YXRpYyB2b2lkIHZteF9waV9zd2l0Y2hf dG8oc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2MgPSAmdi0+ YXJjaC5odm1fdm14LnBpX2Rlc2M7CisgICAgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2MgPSAmdi0+ YXJjaC5odm0udm14LnBpX2Rlc2M7CiAgICAgdW5zaWduZWQgaW50IGRlc3QgPSBjcHVfcGh5c2lj YWxfaWQodi0+cHJvY2Vzc29yKTsKIAogICAgIHdyaXRlX2F0b21pYygmcGlfZGVzYy0+bmRzdCwK QEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgdm9pZCB2bXhfcGlfdW5ibG9ja192Y3B1KHN0cnVj dCB2Y3B1ICp2KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3BpbmxvY2tfdCAq cGlfYmxvY2tpbmdfbGlzdF9sb2NrOwotICAgIHN0cnVjdCBwaV9kZXNjICpwaV9kZXNjID0gJnYt PmFyY2guaHZtX3ZteC5waV9kZXNjOworICAgIHN0cnVjdCBwaV9kZXNjICpwaV9kZXNjID0gJnYt PmFyY2guaHZtLnZteC5waV9kZXNjOwogCiAgICAgLyoKICAgICAgKiBTZXQgJ05WJyBmaWVsZCBi YWNrIHRvIHBvc3RlZF9pbnRyX3ZlY3Rvciwgc28gdGhlCkBAIC0xNjUsNyArMTY1LDcgQEAgc3Rh dGljIHZvaWQgdm14X3BpX3VuYmxvY2tfdmNwdShzdHJ1Y3QgdmNwdSAqdikKICAgICAgKi8KICAg ICB3cml0ZV9hdG9taWMoJnBpX2Rlc2MtPm52LCBwb3N0ZWRfaW50cl92ZWN0b3IpOwogCi0gICAg cGlfYmxvY2tpbmdfbGlzdF9sb2NrID0gdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2s7 CisgICAgcGlfYmxvY2tpbmdfbGlzdF9sb2NrID0gdi0+YXJjaC5odm0udm14LnBpX2Jsb2NraW5n LmxvY2s7CiAKICAgICAvKiBQcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIGVsaW1pbmF0aW5nIHRo ZSBsb2NhbCB2YXJpYWJsZS4qLwogICAgIHNtcF9ybWIoKTsKQEAgLTE3NywxNCArMTc3LDE0IEBA IHN0YXRpYyB2b2lkIHZteF9waV91bmJsb2NrX3ZjcHUoc3RydWN0IHZjcHUgKnYpCiAgICAgc3Bp bl9sb2NrX2lycXNhdmUocGlfYmxvY2tpbmdfbGlzdF9sb2NrLCBmbGFncyk7CiAKICAgICAvKgot ICAgICAqIHYtPmFyY2guaHZtX3ZteC5waV9ibG9ja2luZy5sb2NrID09IE5VTEwgaGVyZSBtZWFu cyB0aGUgdkNQVQorICAgICAqIHYtPmFyY2guaHZtLnZteC5waV9ibG9ja2luZy5sb2NrID09IE5V TEwgaGVyZSBtZWFucyB0aGUgdkNQVQogICAgICAqIHdhcyByZW1vdmVkIGZyb20gdGhlIGJsb2Nr aW5nIGxpc3Qgd2hpbGUgd2UgYXJlIGFjcXVpcmluZyB0aGUgbG9jay4KICAgICAgKi8KLSAgICBp ZiAoIHYtPmFyY2guaHZtX3ZteC5waV9ibG9ja2luZy5sb2NrICE9IE5VTEwgKQorICAgIGlmICgg di0+YXJjaC5odm0udm14LnBpX2Jsb2NraW5nLmxvY2sgIT0gTlVMTCApCiAgICAgewotICAgICAg ICBBU1NFUlQodi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sgPT0gcGlfYmxvY2tpbmdf bGlzdF9sb2NrKTsKLSAgICAgICAgbGlzdF9kZWwoJnYtPmFyY2guaHZtX3ZteC5waV9ibG9ja2lu Zy5saXN0KTsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sgPSBOVUxM OworICAgICAgICBBU1NFUlQodi0+YXJjaC5odm0udm14LnBpX2Jsb2NraW5nLmxvY2sgPT0gcGlf YmxvY2tpbmdfbGlzdF9sb2NrKTsKKyAgICAgICAgbGlzdF9kZWwoJnYtPmFyY2guaHZtLnZteC5w aV9ibG9ja2luZy5saXN0KTsKKyAgICAgICAgdi0+YXJjaC5odm0udm14LnBpX2Jsb2NraW5nLmxv Y2sgPSBOVUxMOwogICAgIH0KIAogICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUocGlfYmxvY2tp bmdfbGlzdF9sb2NrLCBmbGFncyk7CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCB2bXhfcGlfZGVz Y19maXh1cCh1bnNpZ25lZCBpbnQgY3B1KQogICAgICAgICB7CiAgICAgICAgICAgICBsaXN0X2Rl bCgmdm14LT5waV9ibG9ja2luZy5saXN0KTsKICAgICAgICAgICAgIHZteC0+cGlfYmxvY2tpbmcu bG9jayA9IE5VTEw7Ci0gICAgICAgICAgICB2Y3B1X3VuYmxvY2soY29udGFpbmVyX29mKHZteCwg c3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteCkpOworICAgICAgICAgICAgdmNwdV91bmJsb2NrKGNv bnRhaW5lcl9vZih2bXgsIHN0cnVjdCB2Y3B1LCBhcmNoLmh2bS52bXgpKTsKICAgICAgICAgfQog ICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIHZteF9waV9o b29rc19hc3NpZ24oc3RydWN0IGRvbWFpbiAqZCkKICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiAp CiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdCA9IGNwdV9waHlzaWNhbF9pZCh2LT5w cm9jZXNzb3IpOwotICAgICAgICBzdHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYyA9ICZ2LT5hcmNoLmh2 bV92bXgucGlfZGVzYzsKKyAgICAgICAgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2MgPSAmdi0+YXJj aC5odm0udm14LnBpX2Rlc2M7CiAKICAgICAgICAgLyoKICAgICAgICAgICogV2UgZG9uJ3QgbmVl ZCB0byB1cGRhdGUgTkRTVCBpZiB2bXhfcGlfc3dpdGNoX3RvKCkKQEAgLTQyNCw5ICs0MjQsOSBA QCBzdGF0aWMgaW50IHZteF92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAg aW50IHJjOwogCi0gICAgc3Bpbl9sb2NrX2luaXQoJnYtPmFyY2guaHZtX3ZteC52bWNzX2xvY2sp OworICAgIHNwaW5fbG9ja19pbml0KCZ2LT5hcmNoLmh2bS52bXgudm1jc19sb2NrKTsKIAotICAg IElOSVRfTElTVF9IRUFEKCZ2LT5hcmNoLmh2bV92bXgucGlfYmxvY2tpbmcubGlzdCk7CisgICAg SU5JVF9MSVNUX0hFQUQoJnYtPmFyY2guaHZtLnZteC5waV9ibG9ja2luZy5saXN0KTsKIAogICAg IGlmICggKHJjID0gdm14X2NyZWF0ZV92bWNzKHYpKSAhPSAwICkKICAgICB7CkBAIC00OTgsMTUg KzQ5OCwxNSBAQCBzdGF0aWMgdm9pZCB2bXhfc2F2ZV9ndWVzdF9tc3JzKHN0cnVjdCB2Y3B1ICp2 KQogICAgICAqIFdlIGNhbm5vdCBjYWNoZSBTSEFET1dfR1NfQkFTRSB3aGlsZSB0aGUgVkNQVSBy dW5zLCBhcyBpdCBjYW4KICAgICAgKiBiZSB1cGRhdGVkIGF0IGFueSB0aW1lIHZpYSBTV0FQR1Ms IHdoaWNoIHdlIGNhbm5vdCB0cmFwLgogICAgICAqLwotICAgIHYtPmFyY2guaHZtX3ZteC5zaGFk b3dfZ3MgPSByZGdzc2hhZG93KCk7CisgICAgdi0+YXJjaC5odm0udm14LnNoYWRvd19ncyA9IHJk Z3NzaGFkb3coKTsKIH0KIAogc3RhdGljIHZvaWQgdm14X3Jlc3RvcmVfZ3Vlc3RfbXNycyhzdHJ1 Y3QgdmNwdSAqdikKIHsKLSAgICB3cmdzc2hhZG93KHYtPmFyY2guaHZtX3ZteC5zaGFkb3dfZ3Mp OwotICAgIHdybXNybChNU1JfU1RBUiwgICAgICAgICAgIHYtPmFyY2guaHZtX3ZteC5zdGFyKTsK LSAgICB3cm1zcmwoTVNSX0xTVEFSLCAgICAgICAgICB2LT5hcmNoLmh2bV92bXgubHN0YXIpOwot ICAgIHdybXNybChNU1JfU1lTQ0FMTF9NQVNLLCAgIHYtPmFyY2guaHZtX3ZteC5zZm1hc2spOwor ICAgIHdyZ3NzaGFkb3codi0+YXJjaC5odm0udm14LnNoYWRvd19ncyk7CisgICAgd3Jtc3JsKE1T Ul9TVEFSLCAgICAgICAgICAgdi0+YXJjaC5odm0udm14LnN0YXIpOworICAgIHdybXNybChNU1Jf TFNUQVIsICAgICAgICAgIHYtPmFyY2guaHZtLnZteC5sc3Rhcik7CisgICAgd3Jtc3JsKE1TUl9T WVNDQUxMX01BU0ssICAgdi0+YXJjaC5odm0udm14LnNmbWFzayk7CiAKICAgICBpZiAoIGNwdV9o YXNfcmR0c2NwICkKICAgICAgICAgd3Jtc3JfdHNjX2F1eChodm1fbXNyX3RzY19hdXgodikpOwpA QCAtNTE1LDI1ICs1MTUsMjUgQEAgc3RhdGljIHZvaWQgdm14X3Jlc3RvcmVfZ3Vlc3RfbXNycyhz dHJ1Y3QgdmNwdSAqdikKIHZvaWQgdm14X3VwZGF0ZV9jcHVfZXhlY19jb250cm9sKHN0cnVjdCB2 Y3B1ICp2KQogewogICAgIGlmICggbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vlc3Rtb2RlKHYpICkKLSAg ICAgICAgbnZteF91cGRhdGVfZXhlY19jb250cm9sKHYsIHYtPmFyY2guaHZtX3ZteC5leGVjX2Nv bnRyb2wpOworICAgICAgICBudm14X3VwZGF0ZV9leGVjX2NvbnRyb2wodiwgdi0+YXJjaC5odm0u dm14LmV4ZWNfY29udHJvbCk7CiAgICAgZWxzZQotICAgICAgICBfX3Ztd3JpdGUoQ1BVX0JBU0VE X1ZNX0VYRUNfQ09OVFJPTCwgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCk7CisgICAgICAg IF9fdm13cml0ZShDUFVfQkFTRURfVk1fRVhFQ19DT05UUk9MLCB2LT5hcmNoLmh2bS52bXguZXhl Y19jb250cm9sKTsKIH0KIAogdm9pZCB2bXhfdXBkYXRlX3NlY29uZGFyeV9leGVjX2NvbnRyb2wo c3RydWN0IHZjcHUgKnYpCiB7CiAgICAgaWYgKCBuZXN0ZWRodm1fdmNwdV9pbl9ndWVzdG1vZGUo dikgKQogICAgICAgICBudm14X3VwZGF0ZV9zZWNvbmRhcnlfZXhlY19jb250cm9sKHYsCi0gICAg ICAgICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCk7CisgICAgICAg ICAgICB2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCk7CiAgICAgZWxzZQog ICAgICAgICBfX3Ztd3JpdGUoU0VDT05EQVJZX1ZNX0VYRUNfQ09OVFJPTCwKLSAgICAgICAgICAg ICAgICAgIHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sKTsKKyAgICAgICAg ICAgICAgICAgIHYtPmFyY2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sKTsKIH0KIAog dm9pZCB2bXhfdXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXAoc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAg dTMyIGJpdG1hcCA9IHVubGlrZWx5KHYtPmFyY2guaHZtX3ZteC52bXhfcmVhbG1vZGUpCi0gICAg ICAgID8gMHhmZmZmZmZmZnUgOiB2LT5hcmNoLmh2bV92bXguZXhjZXB0aW9uX2JpdG1hcDsKKyAg ICB1MzIgYml0bWFwID0gdW5saWtlbHkodi0+YXJjaC5odm0udm14LnZteF9yZWFsbW9kZSkKKyAg ICAgICAgPyAweGZmZmZmZmZmdSA6IHYtPmFyY2guaHZtLnZteC5leGNlcHRpb25fYml0bWFwOwog CiAgICAgaWYgKCBuZXN0ZWRodm1fdmNwdV9pbl9ndWVzdG1vZGUodikgKQogICAgICAgICBudm14 X3VwZGF0ZV9leGNlcHRpb25fYml0bWFwKHYsIGJpdG1hcCk7CkBAIC01NDcsOSArNTQ3LDkgQEAg c3RhdGljIHZvaWQgdm14X2NwdWlkX3BvbGljeV9jaGFuZ2VkKHN0cnVjdCB2Y3B1ICp2KQogCiAg ICAgaWYgKCBvcHRfaHZtX2ZlcCB8fAogICAgICAgICAgKHYtPmRvbWFpbi0+YXJjaC5jcHVpZC0+ eDg2X3ZlbmRvciAhPSBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IpICkKLSAgICAgICAgdi0+YXJj aC5odm1fdm14LmV4Y2VwdGlvbl9iaXRtYXAgfD0gKDFVIDw8IFRSQVBfaW52YWxpZF9vcCk7Cisg ICAgICAgIHYtPmFyY2guaHZtLnZteC5leGNlcHRpb25fYml0bWFwIHw9ICgxVSA8PCBUUkFQX2lu dmFsaWRfb3ApOwogICAgIGVsc2UKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4Y2VwdGlvbl9i aXRtYXAgJj0gfigxVSA8PCBUUkFQX2ludmFsaWRfb3ApOworICAgICAgICB2LT5hcmNoLmh2bS52 bXguZXhjZXB0aW9uX2JpdG1hcCAmPSB+KDFVIDw8IFRSQVBfaW52YWxpZF9vcCk7CiAKICAgICB2 bXhfdm1jc19lbnRlcih2KTsKICAgICB2bXhfdXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXAodik7CkBA IC01OTksNyArNTk5LDcgQEAgc3RhdGljIHZvaWQgdm14X3NhdmVfZHIoc3RydWN0IHZjcHUgKnYp CiAKICAgICAvKiBDbGVhciB0aGUgRFIgZGlydHkgZmxhZyBhbmQgcmUtZW5hYmxlIGludGVyY2Vw dHMgZm9yIERSIGFjY2Vzc2VzLiAqLwogICAgIHYtPmFyY2guaHZtLmZsYWdfZHJfZGlydHkgPSAw OwotICAgIHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgfD0gQ1BVX0JBU0VEX01PVl9EUl9F WElUSU5HOworICAgIHYtPmFyY2guaHZtLnZteC5leGVjX2NvbnRyb2wgfD0gQ1BVX0JBU0VEX01P Vl9EUl9FWElUSU5HOwogICAgIHZteF91cGRhdGVfY3B1X2V4ZWNfY29udHJvbCh2KTsKIAogICAg IHYtPmFyY2guZGVidWdyZWdbMF0gPSByZWFkX2RlYnVncmVnKDApOwpAQCAtNzY4LDIxICs3Njgs MjEgQEAgc3RhdGljIGludCB2bXhfdm1jc19yZXN0b3JlKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3Qg aHZtX2h3X2NwdSAqYykKIAogc3RhdGljIHZvaWQgdm14X3NhdmVfY3B1X3N0YXRlKHN0cnVjdCB2 Y3B1ICp2LCBzdHJ1Y3QgaHZtX2h3X2NwdSAqZGF0YSkKIHsKLSAgICBkYXRhLT5zaGFkb3dfZ3Mg ICAgICAgID0gdi0+YXJjaC5odm1fdm14LnNoYWRvd19nczsKKyAgICBkYXRhLT5zaGFkb3dfZ3Mg ICAgICAgID0gdi0+YXJjaC5odm0udm14LnNoYWRvd19nczsKICAgICBkYXRhLT5tc3JfZmxhZ3Mg ICAgICAgID0gMDsKLSAgICBkYXRhLT5tc3JfbHN0YXIgICAgICAgID0gdi0+YXJjaC5odm1fdm14 LmxzdGFyOwotICAgIGRhdGEtPm1zcl9zdGFyICAgICAgICAgPSB2LT5hcmNoLmh2bV92bXguc3Rh cjsKLSAgICBkYXRhLT5tc3JfY3N0YXIgICAgICAgID0gdi0+YXJjaC5odm1fdm14LmNzdGFyOwot ICAgIGRhdGEtPm1zcl9zeXNjYWxsX21hc2sgPSB2LT5hcmNoLmh2bV92bXguc2ZtYXNrOworICAg IGRhdGEtPm1zcl9sc3RhciAgICAgICAgPSB2LT5hcmNoLmh2bS52bXgubHN0YXI7CisgICAgZGF0 YS0+bXNyX3N0YXIgICAgICAgICA9IHYtPmFyY2guaHZtLnZteC5zdGFyOworICAgIGRhdGEtPm1z cl9jc3RhciAgICAgICAgPSB2LT5hcmNoLmh2bS52bXguY3N0YXI7CisgICAgZGF0YS0+bXNyX3N5 c2NhbGxfbWFzayA9IHYtPmFyY2guaHZtLnZteC5zZm1hc2s7CiB9CiAKIHN0YXRpYyB2b2lkIHZt eF9sb2FkX2NwdV9zdGF0ZShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9od19jcHUgKmRhdGEp CiB7Ci0gICAgdi0+YXJjaC5odm1fdm14LnNoYWRvd19ncyA9IGRhdGEtPnNoYWRvd19nczsKLSAg ICB2LT5hcmNoLmh2bV92bXguc3RhciAgICAgID0gZGF0YS0+bXNyX3N0YXI7Ci0gICAgdi0+YXJj aC5odm1fdm14LmxzdGFyICAgICA9IGRhdGEtPm1zcl9sc3RhcjsKLSAgICB2LT5hcmNoLmh2bV92 bXguY3N0YXIgICAgID0gZGF0YS0+bXNyX2NzdGFyOwotICAgIHYtPmFyY2guaHZtX3ZteC5zZm1h c2sgICAgPSBkYXRhLT5tc3Jfc3lzY2FsbF9tYXNrOworICAgIHYtPmFyY2guaHZtLnZteC5zaGFk b3dfZ3MgPSBkYXRhLT5zaGFkb3dfZ3M7CisgICAgdi0+YXJjaC5odm0udm14LnN0YXIgICAgICA9 IGRhdGEtPm1zcl9zdGFyOworICAgIHYtPmFyY2guaHZtLnZteC5sc3RhciAgICAgPSBkYXRhLT5t c3JfbHN0YXI7CisgICAgdi0+YXJjaC5odm0udm14LmNzdGFyICAgICA9IGRhdGEtPm1zcl9jc3Rh cjsKKyAgICB2LT5hcmNoLmh2bS52bXguc2ZtYXNrICAgID0gZGF0YS0+bXNyX3N5c2NhbGxfbWFz azsKIH0KIAogCkBAIC04NzQsMTAgKzg3NCwxMCBAQCBzdGF0aWMgaW50IHZteF9sb2FkX21zcihz dHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9tc3IgKmN0eHQpCiBzdGF0aWMgdm9pZCB2bXhfZnB1 X2VudGVyKHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHZjcHVfcmVzdG9yZV9mcHVfbGF6eSh2KTsK LSAgICB2LT5hcmNoLmh2bV92bXguZXhjZXB0aW9uX2JpdG1hcCAmPSB+KDF1IDw8IFRSQVBfbm9f ZGV2aWNlKTsKKyAgICB2LT5hcmNoLmh2bS52bXguZXhjZXB0aW9uX2JpdG1hcCAmPSB+KDF1IDw8 IFRSQVBfbm9fZGV2aWNlKTsKICAgICB2bXhfdXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXAodik7Ci0g ICAgdi0+YXJjaC5odm1fdm14Lmhvc3RfY3IwICY9IH5YODZfQ1IwX1RTOwotICAgIF9fdm13cml0 ZShIT1NUX0NSMCwgdi0+YXJjaC5odm1fdm14Lmhvc3RfY3IwKTsKKyAgICB2LT5hcmNoLmh2bS52 bXguaG9zdF9jcjAgJj0gflg4Nl9DUjBfVFM7CisgICAgX192bXdyaXRlKEhPU1RfQ1IwLCB2LT5h cmNoLmh2bS52bXguaG9zdF9jcjApOwogfQogCiBzdGF0aWMgdm9pZCB2bXhfZnB1X2xlYXZlKHN0 cnVjdCB2Y3B1ICp2KQpAQCAtODg1LDEwICs4ODUsMTAgQEAgc3RhdGljIHZvaWQgdm14X2ZwdV9s ZWF2ZShzdHJ1Y3QgdmNwdSAqdikKICAgICBBU1NFUlQoIXYtPmZwdV9kaXJ0aWVkKTsKICAgICBB U1NFUlQocmVhZF9jcjAoKSAmIFg4Nl9DUjBfVFMpOwogCi0gICAgaWYgKCAhKHYtPmFyY2guaHZt X3ZteC5ob3N0X2NyMCAmIFg4Nl9DUjBfVFMpICkKKyAgICBpZiAoICEodi0+YXJjaC5odm0udm14 Lmhvc3RfY3IwICYgWDg2X0NSMF9UUykgKQogICAgIHsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14 Lmhvc3RfY3IwIHw9IFg4Nl9DUjBfVFM7Ci0gICAgICAgIF9fdm13cml0ZShIT1NUX0NSMCwgdi0+ YXJjaC5odm1fdm14Lmhvc3RfY3IwKTsKKyAgICAgICAgdi0+YXJjaC5odm0udm14Lmhvc3RfY3Iw IHw9IFg4Nl9DUjBfVFM7CisgICAgICAgIF9fdm13cml0ZShIT1NUX0NSMCwgdi0+YXJjaC5odm0u dm14Lmhvc3RfY3IwKTsKICAgICB9CiAKICAgICAvKgpAQCAtOTAxLDcgKzkwMSw3IEBAIHN0YXRp YyB2b2lkIHZteF9mcHVfbGVhdmUoc3RydWN0IHZjcHUgKnYpCiAgICAgewogICAgICAgICB2LT5h cmNoLmh2bS5od19jclswXSB8PSBYODZfQ1IwX1RTOwogICAgICAgICBfX3Ztd3JpdGUoR1VFU1Rf Q1IwLCB2LT5hcmNoLmh2bS5od19jclswXSk7Ci0gICAgICAgIHYtPmFyY2guaHZtX3ZteC5leGNl cHRpb25fYml0bWFwIHw9ICgxdSA8PCBUUkFQX25vX2RldmljZSk7CisgICAgICAgIHYtPmFyY2gu aHZtLnZteC5leGNlcHRpb25fYml0bWFwIHw9ICgxdSA8PCBUUkFQX25vX2RldmljZSk7CiAgICAg ICAgIHZteF91cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCh2KTsKICAgICB9CiB9CkBAIC0xMDU2LDEw ICsxMDU2LDEwIEBAIHN0YXRpYyB2b2lkIHZteF9nZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3Qg dmNwdSAqdiwgZW51bSB4ODZfc2VnbWVudCBzZWcsCiAgICAgICAgICghKGF0dHIgJiAoMXUgPDwg MTYpKSA8PCA3KSB8IChhdHRyICYgMHg3ZikgfCAoKGF0dHIgPj4gNCkgJiAweGYwMCk7CiAKICAg ICAvKiBBZGp1c3QgZm9yIHZpcnR1YWwgODA4NiBtb2RlICovCi0gICAgaWYgKCB2LT5hcmNoLmh2 bV92bXgudm14X3JlYWxtb2RlICYmIHNlZyA8PSB4ODZfc2VnX3RyIAotICAgICAgICAgJiYgISh2 LT5hcmNoLmh2bV92bXgudm04Nl9zZWdtZW50X21hc2sgJiAoMXUgPDwgc2VnKSkgKQorICAgIGlm ICggdi0+YXJjaC5odm0udm14LnZteF9yZWFsbW9kZSAmJiBzZWcgPD0geDg2X3NlZ190cgorICAg ICAgICAgJiYgISh2LT5hcmNoLmh2bS52bXgudm04Nl9zZWdtZW50X21hc2sgJiAoMXUgPDwgc2Vn KSkgKQogICAgIHsKLSAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgKnNyZWcgPSAmdi0+ YXJjaC5odm1fdm14LnZtODZfc2F2ZWRfc2VnW3NlZ107CisgICAgICAgIHN0cnVjdCBzZWdtZW50 X3JlZ2lzdGVyICpzcmVnID0gJnYtPmFyY2guaHZtLnZteC52bTg2X3NhdmVkX3NlZ1tzZWddOwog ICAgICAgICBpZiAoIHNlZyA9PSB4ODZfc2VnX3RyICkgCiAgICAgICAgICAgICAqcmVnID0gKnNy ZWc7CiAgICAgICAgIGVsc2UgaWYgKCByZWctPmJhc2UgIT0gc3JlZy0+YmFzZSB8fCBzZWcgPT0g eDg2X3NlZ19zcyApCkBAIC0xMDk2LDEwICsxMDk2LDEwIEBAIHN0YXRpYyB2b2lkIHZteF9zZXRf c2VnbWVudF9yZWdpc3RlcihzdHJ1Y3QgdmNwdSAqdiwgZW51bSB4ODZfc2VnbWVudCBzZWcsCiAg ICAgYmFzZSA9IHJlZy0+YmFzZTsKIAogICAgIC8qIEFkanVzdCBDUy9TUy9EUy9FUy9GUy9HUy9U UiBmb3IgdmlydHVhbCA4MDg2IG1vZGUgKi8KLSAgICBpZiAoIHYtPmFyY2guaHZtX3ZteC52bXhf cmVhbG1vZGUgJiYgc2VnIDw9IHg4Nl9zZWdfdHIgKQorICAgIGlmICggdi0+YXJjaC5odm0udm14 LnZteF9yZWFsbW9kZSAmJiBzZWcgPD0geDg2X3NlZ190ciApCiAgICAgewogICAgICAgICAvKiBS ZW1lbWJlciB0aGUgcHJvcGVyIGNvbnRlbnRzICovCi0gICAgICAgIHYtPmFyY2guaHZtX3ZteC52 bTg2X3NhdmVkX3NlZ1tzZWddID0gKnJlZzsKKyAgICAgICAgdi0+YXJjaC5odm0udm14LnZtODZf c2F2ZWRfc2VnW3NlZ10gPSAqcmVnOwogICAgICAgICAKICAgICAgICAgaWYgKCBzZWcgPT0geDg2 X3NlZ190ciApIAogICAgICAgICB7CkBAIC0xMTE4LDEwICsxMTE4LDEwIEBAIHN0YXRpYyB2b2lk IHZteF9zZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3QgdmNwdSAqdiwgZW51bSB4ODZfc2VnbWVu dCBzZWcsCiAgICAgICAgICAgICAgICAgICAgIGNtcHhjaGcoJmQtPmFyY2guaHZtLnBhcmFtc1tI Vk1fUEFSQU1fVk04Nl9UU1NfU0laRURdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh bCwgdmFsICYgflZNODZfVFNTX1VQREFURUQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICB2LT5hcmNoLmh2bV92bXgudm04Nl9zZWdtZW50X21hc2sgJj0gfigxdSA8PCBzZWcp OworICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtLnZteC52bTg2X3NlZ21lbnRfbWFzayAmPSB+ KDF1IDw8IHNlZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg ICAgICAgdi0+YXJjaC5odm1fdm14LnZtODZfc2VnbWVudF9tYXNrIHw9ICgxdSA8PCBzZWcpOwor ICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtLnZteC52bTg2X3NlZ21lbnRfbWFzayB8PSAoMXUg PDwgc2VnKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTExMzQsMTAg KzExMzQsMTAgQEAgc3RhdGljIHZvaWQgdm14X3NldF9zZWdtZW50X3JlZ2lzdGVyKHN0cnVjdCB2 Y3B1ICp2LCBlbnVtIHg4Nl9zZWdtZW50IHNlZywKICAgICAgICAgICAgICAgICBzZWwgPSBiYXNl ID4+IDQ7CiAgICAgICAgICAgICAgICAgYXR0ciA9IHZtODZfZHNfYXR0cjsKICAgICAgICAgICAg ICAgICBsaW1pdCA9IDB4ZmZmZjsKLSAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92bXgudm04 Nl9zZWdtZW50X21hc2sgJj0gfigxdSA8PCBzZWcpOworICAgICAgICAgICAgICAgIHYtPmFyY2gu aHZtLnZteC52bTg2X3NlZ21lbnRfbWFzayAmPSB+KDF1IDw8IHNlZyk7CiAgICAgICAgICAgICB9 CiAgICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtX3ZteC52bTg2 X3NlZ21lbnRfbWFzayB8PSAoMXUgPDwgc2VnKTsKKyAgICAgICAgICAgICAgICB2LT5hcmNoLmh2 bS52bXgudm04Nl9zZWdtZW50X21hc2sgfD0gKDF1IDw8IHNlZyk7CiAgICAgICAgIH0KICAgICB9 CiAKQEAgLTExODYsNyArMTE4Niw3IEBAIHN0YXRpYyB2b2lkIHZteF9zZXRfc2VnbWVudF9yZWdp c3RlcihzdHJ1Y3QgdmNwdSAqdiwgZW51bSB4ODZfc2VnbWVudCBzZWcsCiAKIHN0YXRpYyB1bnNp Z25lZCBsb25nIHZteF9nZXRfc2hhZG93X2dzX2Jhc2Uoc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAg cmV0dXJuIHYtPmFyY2guaHZtX3ZteC5zaGFkb3dfZ3M7CisgICAgcmV0dXJuIHYtPmFyY2guaHZt LnZteC5zaGFkb3dfZ3M7CiB9CiAKIHN0YXRpYyBpbnQgdm14X3NldF9ndWVzdF9wYXQoc3RydWN0 IHZjcHUgKnYsIHU2NCBncGF0KQpAQCAtMTMwOSw5ICsxMzA5LDkgQEAgc3RhdGljIHZvaWQgdm14 X3NldF90c2Nfb2Zmc2V0KHN0cnVjdCB2Y3B1ICp2LCB1NjQgb2Zmc2V0LCB1NjQgYXRfdHNjKQog c3RhdGljIHZvaWQgdm14X3NldF9yZHRzY19leGl0aW5nKHN0cnVjdCB2Y3B1ICp2LCBib29sX3Qg ZW5hYmxlKQogewogICAgIHZteF92bWNzX2VudGVyKHYpOwotICAgIHYtPmFyY2guaHZtX3ZteC5l eGVjX2NvbnRyb2wgJj0gfkNQVV9CQVNFRF9SRFRTQ19FWElUSU5HOworICAgIHYtPmFyY2guaHZt LnZteC5leGVjX2NvbnRyb2wgJj0gfkNQVV9CQVNFRF9SRFRTQ19FWElUSU5HOwogICAgIGlmICgg ZW5hYmxlICkKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCB8PSBDUFVfQkFT RURfUkRUU0NfRVhJVElORzsKKyAgICAgICAgdi0+YXJjaC5odm0udm14LmV4ZWNfY29udHJvbCB8 PSBDUFVfQkFTRURfUkRUU0NfRVhJVElORzsKICAgICB2bXhfdXBkYXRlX2NwdV9leGVjX2NvbnRy b2wodik7CiAgICAgdm14X3ZtY3NfZXhpdCh2KTsKIH0KQEAgLTEzMTksMTAgKzEzMTksMTAgQEAg c3RhdGljIHZvaWQgdm14X3NldF9yZHRzY19leGl0aW5nKHN0cnVjdCB2Y3B1ICp2LCBib29sX3Qg ZW5hYmxlKQogc3RhdGljIHZvaWQgdm14X3NldF9kZXNjcmlwdG9yX2FjY2Vzc19leGl0aW5nKHN0 cnVjdCB2Y3B1ICp2LCBib29sIGVuYWJsZSkKIHsKICAgICBpZiAoIGVuYWJsZSApCi0gICAgICAg IHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sIHw9CisgICAgICAgIHYtPmFy Y2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sIHw9CiAgICAgICAgICAgICBTRUNPTkRB UllfRVhFQ19ERVNDUklQVE9SX1RBQkxFX0VYSVRJTkc7CiAgICAgZWxzZQotICAgICAgICB2LT5h cmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPQorICAgICAgICB2LT5hcmNoLmh2 bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPQogICAgICAgICAgICAgflNFQ09OREFSWV9F WEVDX0RFU0NSSVBUT1JfVEFCTEVfRVhJVElORzsKIAogICAgIHZteF92bWNzX2VudGVyKHYpOwpA QCAtMTQzMSw5ICsxNDMxLDkgQEAgc3RhdGljIHZvaWQgdm14X3VwZGF0ZV9ob3N0X2NyMyhzdHJ1 Y3QgdmNwdSAqdikKIHZvaWQgdm14X3VwZGF0ZV9kZWJ1Z19zdGF0ZShzdHJ1Y3QgdmNwdSAqdikK IHsKICAgICBpZiAoIHYtPmFyY2guaHZtLmRlYnVnX3N0YXRlX2xhdGNoICkKLSAgICAgICAgdi0+ YXJjaC5odm1fdm14LmV4Y2VwdGlvbl9iaXRtYXAgfD0gMVUgPDwgVFJBUF9pbnQzOworICAgICAg ICB2LT5hcmNoLmh2bS52bXguZXhjZXB0aW9uX2JpdG1hcCB8PSAxVSA8PCBUUkFQX2ludDM7CiAg ICAgZWxzZQotICAgICAgICB2LT5hcmNoLmh2bV92bXguZXhjZXB0aW9uX2JpdG1hcCAmPSB+KDFV IDw8IFRSQVBfaW50Myk7CisgICAgICAgIHYtPmFyY2guaHZtLnZteC5leGNlcHRpb25fYml0bWFw ICY9IH4oMVUgPDwgVFJBUF9pbnQzKTsKIAogICAgIHZteF92bWNzX2VudGVyKHYpOwogICAgIHZt eF91cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCh2KTsKQEAgLTE0NjEsMjAgKzE0NjEsMjAgQEAgc3Rh dGljIHZvaWQgdm14X3VwZGF0ZV9ndWVzdF9jcihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50 IGNyLAogICAgICAgICBpZiAoIHBhZ2luZ19tb2RlX2hhcCh2LT5kb21haW4pICkKICAgICAgICAg ewogICAgICAgICAgICAgLyogTWFuYWdlIEdVRVNUX0NSMyB3aGVuIENSMC5QRT0wLiAqLwotICAg ICAgICAgICAgdWludDMyX3Qgb2xkX2N0bHMgPSB2LT5hcmNoLmh2bV92bXguZXhlY19jb250cm9s OworICAgICAgICAgICAgdWludDMyX3Qgb2xkX2N0bHMgPSB2LT5hcmNoLmh2bS52bXguZXhlY19j b250cm9sOwogICAgICAgICAgICAgdWludDMyX3QgY3IzX2N0bHMgPSAoQ1BVX0JBU0VEX0NSM19M T0FEX0VYSVRJTkcgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX0JBU0VE X0NSM19TVE9SRV9FWElUSU5HKTsKIAotICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNf Y29udHJvbCAmPSB+Y3IzX2N0bHM7CisgICAgICAgICAgICB2LT5hcmNoLmh2bS52bXguZXhlY19j b250cm9sICY9IH5jcjNfY3RsczsKICAgICAgICAgICAgIGlmICggIWh2bV9wYWdpbmdfZW5hYmxl ZCh2KSAmJiAhdm14X3VucmVzdHJpY3RlZF9ndWVzdCh2KSApCi0gICAgICAgICAgICAgICAgdi0+ YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCB8PSBjcjNfY3RsczsKKyAgICAgICAgICAgICAgICB2 LT5hcmNoLmh2bS52bXguZXhlY19jb250cm9sIHw9IGNyM19jdGxzOwogCiAgICAgICAgICAgICAv KiBUcmFwIENSMyB1cGRhdGVzIGlmIENSMyBtZW1vcnkgZXZlbnRzIGFyZSBlbmFibGVkLiAqLwog ICAgICAgICAgICAgaWYgKCB2LT5kb21haW4tPmFyY2gubW9uaXRvci53cml0ZV9jdHJscmVnX2Vu YWJsZWQgJgogICAgICAgICAgICAgICAgICBtb25pdG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVO VF9YODZfQ1IzKSApCi0gICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJv bCB8PSBDUFVfQkFTRURfQ1IzX0xPQURfRVhJVElORzsKKyAgICAgICAgICAgICAgICB2LT5hcmNo Lmh2bS52bXguZXhlY19jb250cm9sIHw9IENQVV9CQVNFRF9DUjNfTE9BRF9FWElUSU5HOwogCi0g ICAgICAgICAgICBpZiAoIG9sZF9jdGxzICE9IHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wg KQorICAgICAgICAgICAgaWYgKCBvbGRfY3RscyAhPSB2LT5hcmNoLmh2bS52bXguZXhlY19jb250 cm9sICkKICAgICAgICAgICAgICAgICB2bXhfdXBkYXRlX2NwdV9leGVjX2NvbnRyb2wodik7CiAg ICAgICAgIH0KIApAQCAtMTQ5Nyw3ICsxNDk3LDcgQEAgc3RhdGljIHZvaWQgdm14X3VwZGF0ZV9n dWVzdF9jcihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGNyLAogICAgICAgICByZWFsbW9k ZSA9ICEodi0+YXJjaC5odm0uZ3Vlc3RfY3JbMF0gJiBYODZfQ1IwX1BFKTsKIAogICAgICAgICBp ZiAoICF2bXhfdW5yZXN0cmljdGVkX2d1ZXN0KHYpICYmCi0gICAgICAgICAgICAgKHJlYWxtb2Rl ICE9IHYtPmFyY2guaHZtX3ZteC52bXhfcmVhbG1vZGUpICkKKyAgICAgICAgICAgICAocmVhbG1v ZGUgIT0gdi0+YXJjaC5odm0udm14LnZteF9yZWFsbW9kZSkgKQogICAgICAgICB7CiAgICAgICAg ICAgICBlbnVtIHg4Nl9zZWdtZW50IHM7CiAgICAgICAgICAgICBzdHJ1Y3Qgc2VnbWVudF9yZWdp c3RlciByZWdbeDg2X3NlZ190ciArIDFdOwpAQCAtMTUwOSw3ICsxNTA5LDcgQEAgc3RhdGljIHZv aWQgdm14X3VwZGF0ZV9ndWVzdF9jcihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGNyLAog ICAgICAgICAgICAgICogdGhlIHNhdmVkIHZhbHVlcyB3ZSdsbCB1c2Ugd2hlbiByZXR1cm5pbmcg dG8gcHJvdCBtb2RlLiAqLwogICAgICAgICAgICAgZm9yICggcyA9IDA7IHMgPCBBUlJBWV9TSVpF KHJlZyk7IHMrKyApCiAgICAgICAgICAgICAgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYs IHMsICZyZWdbc10pOwotICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LnZteF9yZWFsbW9kZSA9 IHJlYWxtb2RlOworICAgICAgICAgICAgdi0+YXJjaC5odm0udm14LnZteF9yZWFsbW9kZSA9IHJl YWxtb2RlOwogCiAgICAgICAgICAgICBpZiAoIHJlYWxtb2RlICkKICAgICAgICAgICAgIHsKQEAg LTE1MTksOSArMTUxOSw5IEBAIHN0YXRpYyB2b2lkIHZteF91cGRhdGVfZ3Vlc3RfY3Ioc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGludCBjciwKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICBmb3IgKCBzID0gMDsgcyA8IEFSUkFZX1NJWkUocmVnKTsgcysr ICkKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAhKHYtPmFyY2guaHZtX3ZteC52bTg2X3NlZ21l bnRfbWFzayAmICgxPDxzKSkgKQorICAgICAgICAgICAgICAgICAgICBpZiAoICEodi0+YXJjaC5o dm0udm14LnZtODZfc2VnbWVudF9tYXNrICYgKDE8PHMpKSApCiAgICAgICAgICAgICAgICAgICAg ICAgICBodm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgdiwgcywgJnYtPmFyY2guaHZtX3ZteC52bTg2X3NhdmVkX3NlZ1tzXSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdiwgcywgJnYtPmFyY2guaHZtLnZteC52bTg2X3NhdmVkX3NlZ1tz XSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZteF91cGRhdGVfZXhjZXB0aW9uX2Jp dG1hcCh2KTsKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHN0YXRpYyB2b2lkIHZteF91cGRhdGVfZ3Vl c3RfY3Ioc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBjciwKICAgICAgICAgICAgIG52bXhf c2V0X2NyX3JlYWRfc2hhZG93KHYsIDQpOwogCiAgICAgICAgIHYtPmFyY2guaHZtLmh3X2NyWzRd IHw9IHYtPmFyY2guaHZtLmd1ZXN0X2NyWzRdOwotICAgICAgICBpZiAoIHYtPmFyY2guaHZtX3Zt eC52bXhfcmVhbG1vZGUgKQorICAgICAgICBpZiAoIHYtPmFyY2guaHZtLnZteC52bXhfcmVhbG1v ZGUgKQogICAgICAgICAgICAgdi0+YXJjaC5odm0uaHdfY3JbNF0gfD0gWDg2X0NSNF9WTUU7CiAK ICAgICAgICAgaWYgKCAhaHZtX3BhZ2luZ19lbmFibGVkKHYpICkKQEAgLTE1OTIsMjcgKzE1OTIs MjcgQEAgc3RhdGljIHZvaWQgdm14X3VwZGF0ZV9ndWVzdF9jcihzdHJ1Y3QgdmNwdSAqdiwgdW5z aWduZWQgaW50IGNyLAogICAgICAgICAgICAgICogVXBkYXRlIENSNCBob3N0IG1hc2sgdG8gb25s eSB0cmFwIHdoZW4gdGhlIGd1ZXN0IHRyaWVzIHRvIHNldAogICAgICAgICAgICAgICogYml0cyB0 aGF0IGFyZSBjb250cm9sbGVkIGJ5IHRoZSBoeXBlcnZpc29yLgogICAgICAgICAgICAgICovCi0g ICAgICAgICAgICB2LT5hcmNoLmh2bV92bXguY3I0X2hvc3RfbWFzayA9CisgICAgICAgICAgICB2 LT5hcmNoLmh2bS52bXguY3I0X2hvc3RfbWFzayA9CiAgICAgICAgICAgICAgICAgKEhWTV9DUjRf SE9TVF9NQVNLIHwgWDg2X0NSNF9QS0UgfAogICAgICAgICAgICAgICAgICB+aHZtX2NyNF9ndWVz dF92YWxpZF9iaXRzKHYtPmRvbWFpbiwgZmFsc2UpKTsKIAotICAgICAgICAgICAgdi0+YXJjaC5o dm1fdm14LmNyNF9ob3N0X21hc2sgfD0gdi0+YXJjaC5odm1fdm14LnZteF9yZWFsbW9kZSA/Cisg ICAgICAgICAgICB2LT5hcmNoLmh2bS52bXguY3I0X2hvc3RfbWFzayB8PSB2LT5hcmNoLmh2bS52 bXgudm14X3JlYWxtb2RlID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFg4Nl9DUjRfVk1FIDogMDsKLSAgICAgICAgICAgIHYtPmFyY2guaHZtX3ZteC5jcjRf aG9zdF9tYXNrIHw9ICFodm1fcGFnaW5nX2VuYWJsZWQodikgPworICAgICAgICAgICAgdi0+YXJj aC5odm0udm14LmNyNF9ob3N0X21hc2sgfD0gIWh2bV9wYWdpbmdfZW5hYmxlZCh2KSA/CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWDg2X0NSNF9QU0UgfCBY ODZfQ1I0X1NNRVAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFg4Nl9DUjRfU01BUCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDogMDsKICAgICAgICAgICAgIGlmICggdi0+ZG9tYWluLT5hcmNoLm1vbml0b3Iud3Jp dGVfY3RybHJlZ19lbmFibGVkICYKICAgICAgICAgICAgICAgICAgbW9uaXRvcl9jdHJscmVnX2Jp dG1hc2soVk1fRVZFTlRfWDg2X0NSNCkgKQotICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtX3Zt eC5jcjRfaG9zdF9tYXNrIHw9CisgICAgICAgICAgICAgICAgdi0+YXJjaC5odm0udm14LmNyNF9o b3N0X21hc2sgfD0KICAgICAgICAgICAgICAgICB+di0+ZG9tYWluLT5hcmNoLm1vbml0b3Iud3Jp dGVfY3RybHJlZ19tYXNrW1ZNX0VWRU5UX1g4Nl9DUjRdOwogCiAgICAgICAgICAgICBpZiAoIG5l c3RlZGh2bV92Y3B1X2luX2d1ZXN0bW9kZSh2KSApCiAgICAgICAgICAgICAgICAgLyogQWRkIHRo ZSBuZXN0ZWQgaG9zdCBtYXNrIHRvIGdldCB0aGUgbW9yZSByZXN0cmljdGl2ZSBvbmUuICovCi0g ICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LmNyNF9ob3N0X21hc2sgfD0gZ2V0X3Z2bWNz KHYsCisgICAgICAgICAgICAgICAgdi0+YXJjaC5odm0udm14LmNyNF9ob3N0X21hc2sgfD0gZ2V0 X3Z2bWNzKHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENSNF9HVUVTVF9IT1NUX01BU0spOwogCi0gICAgICAgICAgICBfX3Ztd3Jp dGUoQ1I0X0dVRVNUX0hPU1RfTUFTSywgdi0+YXJjaC5odm1fdm14LmNyNF9ob3N0X21hc2spOwor ICAgICAgICAgICAgX192bXdyaXRlKENSNF9HVUVTVF9IT1NUX01BU0ssIHYtPmFyY2guaHZtLnZt eC5jcjRfaG9zdF9tYXNrKTsKICAgICAgICAgfQogCiAgICAgICAgIGJyZWFrOwpAQCAtMTc3Myw4 ICsxNzczLDggQEAgc3RhdGljIHZvaWQgX192bXhfaW5qZWN0X2V4Y2VwdGlvbihpbnQgdHJhcCwg aW50IHR5cGUsIGludCBlcnJvcl9jb2RlKQogCiAgICAgLyogQ2FuJ3QgaW5qZWN0IGV4Y2VwdGlv bnMgaW4gdmlydHVhbCA4MDg2IG1vZGUgYmVjYXVzZSB0aGV5IHdvdWxkIAogICAgICAqIHVzZSB0 aGUgcHJvdGVjdGVkLW1vZGUgSURULiAgRW11bGF0ZSBhdCB0aGUgbmV4dCB2bWVudGVyIGluc3Rl YWQuICovCi0gICAgaWYgKCBjdXJyLT5hcmNoLmh2bV92bXgudm14X3JlYWxtb2RlICkgCi0gICAg ICAgIGN1cnItPmFyY2guaHZtX3ZteC52bXhfZW11bGF0ZSA9IDE7CisgICAgaWYgKCBjdXJyLT5h cmNoLmh2bS52bXgudm14X3JlYWxtb2RlICkKKyAgICAgICAgY3Vyci0+YXJjaC5odm0udm14LnZt eF9lbXVsYXRlID0gMTsKIH0KIAogdm9pZCB2bXhfaW5qZWN0X2V4dGludChpbnQgdHJhcCwgdWlu dDhfdCBzb3VyY2UpCkBAIC0xOTg4LDEwICsxOTg4LDEwIEBAIHN0YXRpYyB2b2lkIHZteF9wcm9j ZXNzX2lzcihpbnQgaXNyLCBzdHJ1Y3QgdmNwdSAqdikKICAgICBmb3IgKCBpID0gMHgxMDsgaSA8 IE5SX1ZFQ1RPUlM7ICsraSApCiAgICAgICAgIGlmICggdmxhcGljX3Rlc3RfdmVjdG9yKGksICZ2 bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JUlJdKSB8fAogICAgICAgICAgICAgIHZsYXBpY190ZXN0 X3ZlY3RvcihpLCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNfSVNSXSkgKQotICAgICAgICAgICAg c2V0X2JpdChpLCB2LT5hcmNoLmh2bV92bXguZW9pX2V4aXRfYml0bWFwKTsKKyAgICAgICAgICAg IHNldF9iaXQoaSwgdi0+YXJjaC5odm0udm14LmVvaV9leGl0X2JpdG1hcCk7CiAKLSAgICBmb3Ig KCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodi0+YXJjaC5odm1fdm14LmVvaV9leGl0X2JpdG1hcCk7 ICsraSApCi0gICAgICAgIF9fdm13cml0ZShFT0lfRVhJVF9CSVRNQVAoaSksIHYtPmFyY2guaHZt X3ZteC5lb2lfZXhpdF9iaXRtYXBbaV0pOworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0la RSh2LT5hcmNoLmh2bS52bXguZW9pX2V4aXRfYml0bWFwKTsgKytpICkKKyAgICAgICAgX192bXdy aXRlKEVPSV9FWElUX0JJVE1BUChpKSwgdi0+YXJjaC5odm0udm14LmVvaV9leGl0X2JpdG1hcFtp XSk7CiAKICAgICB2bXhfdm1jc19leGl0KHYpOwogfQpAQCAtMjA1MywyMyArMjA1MywyMyBAQCBz dGF0aWMgdm9pZCBfX3ZteF9kZWxpdmVyX3Bvc3RlZF9pbnRlcnJ1cHQoc3RydWN0IHZjcHUgKnYp CiAKIHN0YXRpYyB2b2lkIHZteF9kZWxpdmVyX3Bvc3RlZF9pbnRyKHN0cnVjdCB2Y3B1ICp2LCB1 OCB2ZWN0b3IpCiB7Ci0gICAgaWYgKCBwaV90ZXN0X2FuZF9zZXRfcGlyKHZlY3RvciwgJnYtPmFy Y2guaHZtX3ZteC5waV9kZXNjKSApCisgICAgaWYgKCBwaV90ZXN0X2FuZF9zZXRfcGlyKHZlY3Rv ciwgJnYtPmFyY2guaHZtLnZteC5waV9kZXNjKSApCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm ICggdW5saWtlbHkodi0+YXJjaC5odm1fdm14LmVvaV9leGl0bWFwX2NoYW5nZWQpICkKKyAgICBp ZiAoIHVubGlrZWx5KHYtPmFyY2guaHZtLnZteC5lb2lfZXhpdG1hcF9jaGFuZ2VkKSApCiAgICAg ewogICAgICAgICAvKgogICAgICAgICAgKiBJZiBFT0kgZXhpdGJpdG1hcCBuZWVkcyB0byBjaGFu Z2VkIG9yIG5vdGlmaWNhdGlvbiB2ZWN0b3IKICAgICAgICAgICogY2FuJ3QgYmUgYWxsb2NhdGVk LCBpbnRlcnJ1cHQgd2lsbCBub3QgYmUgaW5qZWN0ZWQgdGlsbAogICAgICAgICAgKiBWTUVudHJ5 IGFzIGl0IHVzZWQgdG8gYmUuCiAgICAgICAgICAqLwotICAgICAgICBwaV9zZXRfb24oJnYtPmFy Y2guaHZtX3ZteC5waV9kZXNjKTsKKyAgICAgICAgcGlfc2V0X29uKCZ2LT5hcmNoLmh2bS52bXgu cGlfZGVzYyk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHN0cnVjdCBwaV9kZXNj IG9sZCwgbmV3LCBwcmV2OwogCi0gICAgICAgIHByZXYuY29udHJvbCA9IHYtPmFyY2guaHZtX3Zt eC5waV9kZXNjLmNvbnRyb2w7CisgICAgICAgIHByZXYuY29udHJvbCA9IHYtPmFyY2guaHZtLnZt eC5waV9kZXNjLmNvbnRyb2w7CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgLyoKQEAgLTIw ODUsMTIgKzIwODUsMTIgQEAgc3RhdGljIHZvaWQgdm14X2RlbGl2ZXJfcG9zdGVkX2ludHIoc3Ry dWN0IHZjcHUgKnYsIHU4IHZlY3RvcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg ICAgICB9CiAKLSAgICAgICAgICAgIG9sZC5jb250cm9sID0gdi0+YXJjaC5odm1fdm14LnBpX2Rl c2MuY29udHJvbCAmCisgICAgICAgICAgICBvbGQuY29udHJvbCA9IHYtPmFyY2guaHZtLnZteC5w aV9kZXNjLmNvbnRyb2wgJgogICAgICAgICAgICAgICAgICAgICAgICAgICB+KCgxIDw8IFBPU1RF RF9JTlRSX09OKSB8ICgxIDw8IFBPU1RFRF9JTlRSX1NOKSk7Ci0gICAgICAgICAgICBuZXcuY29u dHJvbCA9IHYtPmFyY2guaHZtX3ZteC5waV9kZXNjLmNvbnRyb2wgfAorICAgICAgICAgICAgbmV3 LmNvbnRyb2wgPSB2LT5hcmNoLmh2bS52bXgucGlfZGVzYy5jb250cm9sIHwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKDEgPDwgUE9TVEVEX0lOVFJfT04pOwogCi0gICAgICAgICAgICBwcmV2 LmNvbnRyb2wgPSBjbXB4Y2hnKCZ2LT5hcmNoLmh2bV92bXgucGlfZGVzYy5jb250cm9sLAorICAg ICAgICAgICAgcHJldi5jb250cm9sID0gY21weGNoZygmdi0+YXJjaC5odm0udm14LnBpX2Rlc2Mu Y29udHJvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLmNvbnRyb2ws IG5ldy5jb250cm9sKTsKICAgICAgICAgfSB3aGlsZSAoIHByZXYuY29udHJvbCAhPSBvbGQuY29u dHJvbCApOwogCkBAIC0yMTA3LDExICsyMTA3LDExIEBAIHN0YXRpYyB2b2lkIHZteF9zeW5jX3Bp cl90b19pcnIoc3RydWN0IHZjcHUgKnYpCiAgICAgdW5zaWduZWQgaW50IGdyb3VwLCBpOwogICAg IERFQ0xBUkVfQklUTUFQKHBlbmRpbmdfaW50ciwgTlJfVkVDVE9SUyk7CiAKLSAgICBpZiAoICFw aV90ZXN0X2FuZF9jbGVhcl9vbigmdi0+YXJjaC5odm1fdm14LnBpX2Rlc2MpICkKKyAgICBpZiAo ICFwaV90ZXN0X2FuZF9jbGVhcl9vbigmdi0+YXJjaC5odm0udm14LnBpX2Rlc2MpICkKICAgICAg ICAgcmV0dXJuOwogCiAgICAgZm9yICggZ3JvdXAgPSAwOyBncm91cCA8IEFSUkFZX1NJWkUocGVu ZGluZ19pbnRyKTsgZ3JvdXArKyApCi0gICAgICAgIHBlbmRpbmdfaW50cltncm91cF0gPSBwaV9n ZXRfcGlyKCZ2LT5hcmNoLmh2bV92bXgucGlfZGVzYywgZ3JvdXApOworICAgICAgICBwZW5kaW5n X2ludHJbZ3JvdXBdID0gcGlfZ2V0X3Bpcigmdi0+YXJjaC5odm0udm14LnBpX2Rlc2MsIGdyb3Vw KTsKIAogICAgIGZvcl9lYWNoX3NldF9iaXQoaSwgcGVuZGluZ19pbnRyLCBOUl9WRUNUT1JTKQog ICAgICAgICB2bGFwaWNfc2V0X3ZlY3RvcihpLCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNfSVJS XSk7CkBAIC0yMTE5LDcgKzIxMTksNyBAQCBzdGF0aWMgdm9pZCB2bXhfc3luY19waXJfdG9faXJy KHN0cnVjdCB2Y3B1ICp2KQogCiBzdGF0aWMgYm9vbCB2bXhfdGVzdF9waXIoY29uc3Qgc3RydWN0 IHZjcHUgKnYsIHVpbnQ4X3QgdmVjKQogewotICAgIHJldHVybiBwaV90ZXN0X3Bpcih2ZWMsICZ2 LT5hcmNoLmh2bV92bXgucGlfZGVzYyk7CisgICAgcmV0dXJuIHBpX3Rlc3RfcGlyKHZlYywgJnYt PmFyY2guaHZtLnZteC5waV9kZXNjKTsKIH0KIAogc3RhdGljIHZvaWQgdm14X2hhbmRsZV9lb2ko dTggdmVjdG9yKQpAQCAtMjE2Myw3ICsyMTYzLDcgQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVfdXBk YXRlX2VwdHAoc3RydWN0IHZjcHUgKnYpCiAKICAgICBfX3Ztd3JpdGUoRVBUX1BPSU5URVIsIGVw dC0+ZXB0cCk7CiAKLSAgICBpZiAoIHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250 cm9sICYKKyAgICBpZiAoIHYtPmFyY2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICYK ICAgICAgICAgIFNFQ09OREFSWV9FWEVDX0VOQUJMRV9WSVJUX0VYQ0VQVElPTlMgKQogICAgICAg ICBfX3Ztd3JpdGUoRVBUUF9JTkRFWCwgdmNwdV9hbHRwMm0odikucDJtaWR4KTsKIApAQCAtMjE4 NSw3ICsyMTg1LDcgQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVfdXBkYXRlX3ZtZnVuY192ZShzdHJ1 Y3QgdmNwdSAqdikKIAogICAgIGlmICggIWQtPmlzX2R5aW5nICYmIGFsdHAybV9hY3RpdmUoZCkg KQogICAgIHsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wg fD0gbWFzazsKKyAgICAgICAgdi0+YXJjaC5odm0udm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wg fD0gbWFzazsKICAgICAgICAgX192bXdyaXRlKFZNX0ZVTkNUSU9OX0NPTlRST0wsIFZNWF9WTUZV TkNfRVBUUF9TV0lUQ0hJTkcpOwogICAgICAgICBfX3Ztd3JpdGUoRVBUUF9MSVNUX0FERFIsIHZp cnRfdG9fbWFkZHIoZC0+YXJjaC5hbHRwMm1fZXB0cCkpOwogCkBAIC0yMjA2LDEyICsyMjA2LDEy IEBAIHN0YXRpYyB2b2lkIHZteF92Y3B1X3VwZGF0ZV92bWZ1bmNfdmUoc3RydWN0IHZjcHUgKnYp CiAgICAgICAgICAgICAgICAgX192bXdyaXRlKEVQVFBfSU5ERVgsIHZjcHVfYWx0cDJtKHYpLnAy bWlkeCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg di0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0KKyAgICAgICAgICAgICAg ICB2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPQogICAgICAgICAgICAg ICAgICAgICB+U0VDT05EQVJZX0VYRUNfRU5BQkxFX1ZJUlRfRVhDRVBUSU9OUzsKICAgICAgICAg fQogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhl Y19jb250cm9sICY9IH5tYXNrOworICAgICAgICB2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4 ZWNfY29udHJvbCAmPSB+bWFzazsKIAogICAgIHZteF91cGRhdGVfc2Vjb25kYXJ5X2V4ZWNfY29u dHJvbCh2KTsKICAgICB2bXhfdm1jc19leGl0KHYpOwpAQCAtMjM3OCw3ICsyMzc4LDcgQEAgc3Rh dGljIHZvaWQgcGlfd2FrZXVwX2ludGVycnVwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykK ICAgICAgICAgICAgIGxpc3RfZGVsKCZ2bXgtPnBpX2Jsb2NraW5nLmxpc3QpOwogICAgICAgICAg ICAgQVNTRVJUKHZteC0+cGlfYmxvY2tpbmcubG9jayA9PSBsb2NrKTsKICAgICAgICAgICAgIHZt eC0+cGlfYmxvY2tpbmcubG9jayA9IE5VTEw7Ci0gICAgICAgICAgICB2Y3B1X3VuYmxvY2soY29u dGFpbmVyX29mKHZteCwgc3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteCkpOworICAgICAgICAgICAg dmNwdV91bmJsb2NrKGNvbnRhaW5lcl9vZih2bXgsIHN0cnVjdCB2Y3B1LCBhcmNoLmh2bS52bXgp KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjU5MCw3ICsyNTkwLDcgQEAgc3RhdGljIHZvaWQg dm14X2RyX2FjY2Vzcyh1bnNpZ25lZCBsb25nIGV4aXRfcXVhbGlmaWNhdGlvbiwKICAgICAgICAg X19yZXN0b3JlX2RlYnVnX3JlZ2lzdGVycyh2KTsKIAogICAgIC8qIEFsbG93IGd1ZXN0IGRpcmVj dCBhY2Nlc3MgdG8gRFIgcmVnaXN0ZXJzICovCi0gICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29u dHJvbCAmPSB+Q1BVX0JBU0VEX01PVl9EUl9FWElUSU5HOworICAgIHYtPmFyY2guaHZtLnZteC5l eGVjX2NvbnRyb2wgJj0gfkNQVV9CQVNFRF9NT1ZfRFJfRVhJVElORzsKICAgICB2bXhfdXBkYXRl X2NwdV9leGVjX2NvbnRyb2wodik7CiB9CiAKQEAgLTI5MDUsMTkgKzI5MDUsMTkgQEAgc3RhdGlj IGludCB2bXhfbXNyX3JlYWRfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90ICpt c3JfY29udGVudCkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1TUl9TVEFSOgotICAgICAg ICAqbXNyX2NvbnRlbnQgPSBjdXJyLT5hcmNoLmh2bV92bXguc3RhcjsKKyAgICAgICAgKm1zcl9j b250ZW50ID0gY3Vyci0+YXJjaC5odm0udm14LnN0YXI7CiAgICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSBNU1JfTFNUQVI6Ci0gICAgICAgICptc3JfY29udGVudCA9IGN1cnItPmFyY2guaHZtX3Zt eC5sc3RhcjsKKyAgICAgICAgKm1zcl9jb250ZW50ID0gY3Vyci0+YXJjaC5odm0udm14LmxzdGFy OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTVNSX0NTVEFSOgotICAgICAgICAqbXNyX2Nv bnRlbnQgPSBjdXJyLT5hcmNoLmh2bV92bXguY3N0YXI7CisgICAgICAgICptc3JfY29udGVudCA9 IGN1cnItPmFyY2guaHZtLnZteC5jc3RhcjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1T Ul9TWVNDQUxMX01BU0s6Ci0gICAgICAgICptc3JfY29udGVudCA9IGN1cnItPmFyY2guaHZtX3Zt eC5zZm1hc2s7CisgICAgICAgICptc3JfY29udGVudCA9IGN1cnItPmFyY2guaHZtLnZteC5zZm1h c2s7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNU1JfSUEzMl9ERUJVR0NUTE1TUjoKQEAg LTMwNDYsNyArMzA0Niw3IEBAIHZvaWQgdm14X3ZsYXBpY19tc3JfY2hhbmdlZChzdHJ1Y3QgdmNw dSAqdikKICAgICAgICAgcmV0dXJuOwogCiAgICAgdm14X3ZtY3NfZW50ZXIodik7Ci0gICAgdi0+ YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0KKyAgICB2LT5hcmNoLmh2bS52 bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPQogICAgICAgICB+KFNFQ09OREFSWV9FWEVDX1ZJ UlRVQUxJWkVfQVBJQ19BQ0NFU1NFUyB8CiAgICAgICAgICAgU0VDT05EQVJZX0VYRUNfVklSVFVB TElaRV9YMkFQSUNfTU9ERSk7CiAgICAgaWYgKCAhdmxhcGljX2h3X2Rpc2FibGVkKHZsYXBpYykg JiYKQEAgLTMwNTQsNyArMzA1NCw3IEBAIHZvaWQgdm14X3ZsYXBpY19tc3JfY2hhbmdlZChzdHJ1 Y3QgdmNwdSAqdikKICAgICB7CiAgICAgICAgIGlmICggdmlydHVhbGl6ZV94MmFwaWNfbW9kZSAm JiB2bGFwaWNfeDJhcGljX21vZGUodmxhcGljKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHYt PmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sIHw9CisgICAgICAgICAgICB2LT5h cmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCB8PQogICAgICAgICAgICAgICAgIFNF Q09OREFSWV9FWEVDX1ZJUlRVQUxJWkVfWDJBUElDX01PREU7CiAgICAgICAgICAgICBpZiAoIGNw dV9oYXNfdm14X2FwaWNfcmVnX3ZpcnQgKQogICAgICAgICAgICAgewpAQCAtMzA3NCwxMCArMzA3 NCwxMCBAQCB2b2lkIHZteF92bGFwaWNfbXNyX2NoYW5nZWQoc3RydWN0IHZjcHUgKnYpCiAgICAg ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgdi0+YXJjaC5o dm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgfD0KKyAgICAgICAgICAgIHYtPmFyY2guaHZt LnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sIHw9CiAgICAgICAgICAgICAgICAgU0VDT05EQVJZ X0VYRUNfVklSVFVBTElaRV9BUElDX0FDQ0VTU0VTOwogICAgIH0KLSAgICBpZiAoICEodi0+YXJj aC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJgorICAgIGlmICggISh2LT5hcmNoLmh2 bS52bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmCiAgICAgICAgICAgIFNFQ09OREFSWV9FWEVD X1ZJUlRVQUxJWkVfWDJBUElDX01PREUpICkKICAgICAgICAgZm9yICggbXNyID0gTVNSX0lBMzJf QVBJQ0JBU0VfTVNSOwogICAgICAgICAgICAgICBtc3IgPD0gTVNSX0lBMzJfQVBJQ0JBU0VfTVNS ICsgMHhmZjsgbXNyKysgKQpAQCAtMzEyOCwyNSArMzEyOCwyNSBAQCBzdGF0aWMgaW50IHZteF9t c3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50 KQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTVNSX1NUQVI6Ci0gICAgICAgIHYtPmFyY2gu aHZtX3ZteC5zdGFyID0gbXNyX2NvbnRlbnQ7CisgICAgICAgIHYtPmFyY2guaHZtLnZteC5zdGFy ID0gbXNyX2NvbnRlbnQ7CiAgICAgICAgIHdybXNybChNU1JfU1RBUiwgbXNyX2NvbnRlbnQpOwog ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTVNSX0xTVEFSOgogICAgICAgICBpZiAoICFpc19j YW5vbmljYWxfYWRkcmVzcyhtc3JfY29udGVudCkgKQogICAgICAgICAgICAgZ290byBncF9mYXVs dDsKLSAgICAgICAgdi0+YXJjaC5odm1fdm14LmxzdGFyID0gbXNyX2NvbnRlbnQ7CisgICAgICAg IHYtPmFyY2guaHZtLnZteC5sc3RhciA9IG1zcl9jb250ZW50OwogICAgICAgICB3cm1zcmwoTVNS X0xTVEFSLCBtc3JfY29udGVudCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNU1JfQ1NU QVI6CiAgICAgICAgIGlmICggIWlzX2Nhbm9uaWNhbF9hZGRyZXNzKG1zcl9jb250ZW50KSApCiAg ICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OwotICAgICAgICB2LT5hcmNoLmh2bV92bXguY3N0YXIg PSBtc3JfY29udGVudDsKKyAgICAgICAgdi0+YXJjaC5odm0udm14LmNzdGFyID0gbXNyX2NvbnRl bnQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNU1JfU1lTQ0FMTF9NQVNLOgotICAgICAg ICB2LT5hcmNoLmh2bV92bXguc2ZtYXNrID0gbXNyX2NvbnRlbnQ7CisgICAgICAgIHYtPmFyY2gu aHZtLnZteC5zZm1hc2sgPSBtc3JfY29udGVudDsKICAgICAgICAgd3Jtc3JsKE1TUl9TWVNDQUxM X01BU0ssIG1zcl9jb250ZW50KTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTMxODcsNyArMzE4Nyw3 IEBAIHN0YXRpYyBpbnQgdm14X21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwg dWludDY0X3QgbXNyX2NvbnRlbnQpCiAgICAgICAgICAqIHRoZSBndWVzdCB3b24ndCBleGVjdXRl IGNvcnJlY3RseSBlaXRoZXIuICBTaW1wbHkgY3Jhc2ggdGhlIGRvbWFpbgogICAgICAgICAgKiB0 byBtYWtlIHRoZSBmYWlsdXJlIG9idmlvdXMuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoICEo di0+YXJjaC5odm1fdm14Lmxicl9mbGFncyAmIExCUl9NU1JTX0lOU0VSVEVEKSAmJgorICAgICAg ICBpZiAoICEodi0+YXJjaC5odm0udm14Lmxicl9mbGFncyAmIExCUl9NU1JTX0lOU0VSVEVEKSAm JgogICAgICAgICAgICAgIChtc3JfY29udGVudCAmIElBMzJfREVCVUdDVExNU1JfTEJSKSApCiAg ICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsYnJfaW5mbyAqbGJyID0gbGFzdF9i cmFuY2hfbXNyX2dldCgpOwpAQCAtMzIxOSwxMSArMzIxOSwxMSBAQCBzdGF0aWMgaW50IHZteF9t c3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50 KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdi0+YXJj aC5odm1fdm14Lmxicl9mbGFncyB8PSBMQlJfTVNSU19JTlNFUlRFRDsKKyAgICAgICAgICAgIHYt PmFyY2guaHZtLnZteC5sYnJfZmxhZ3MgfD0gTEJSX01TUlNfSU5TRVJURUQ7CiAgICAgICAgICAg ICBpZiAoIGxicl90c3hfZml4dXBfbmVlZGVkICkKLSAgICAgICAgICAgICAgICB2LT5hcmNoLmh2 bV92bXgubGJyX2ZsYWdzIHw9IExCUl9GSVhVUF9UU1g7CisgICAgICAgICAgICAgICAgdi0+YXJj aC5odm0udm14Lmxicl9mbGFncyB8PSBMQlJfRklYVVBfVFNYOwogICAgICAgICAgICAgaWYgKCBi ZHdfZXJyYXR1bV9iZGYxNF9maXh1cF9uZWVkZWQgKQotICAgICAgICAgICAgICAgIHYtPmFyY2gu aHZtX3ZteC5sYnJfZmxhZ3MgfD0gTEJSX0ZJWFVQX0JERjE0OworICAgICAgICAgICAgICAgIHYt PmFyY2guaHZtLnZteC5sYnJfZmxhZ3MgfD0gTEJSX0ZJWFVQX0JERjE0OwogICAgICAgICB9CiAK ICAgICAgICAgX192bXdyaXRlKEdVRVNUX0lBMzJfREVCVUdDVEwsIG1zcl9jb250ZW50KTsKQEAg LTM0MTksNyArMzQxOSw3IEBAIHN0YXRpYyB2b2lkIHZteF9mYWlsZWRfdm1lbnRyeSh1bnNpZ25l ZCBpbnQgZXhpdF9yZWFzb24sCiAgICAgICAgICAgICBwcmludGsoIiAgRW50cnkgb3V0IG9mIHJh bmdlXG4iKTsKICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBtc3IgPSAmY3Vy ci0+YXJjaC5odm1fdm14Lm1zcl9hcmVhW2lkeF07CisgICAgICAgICAgICBtc3IgPSAmY3Vyci0+ YXJjaC5odm0udm14Lm1zcl9hcmVhW2lkeF07CiAKICAgICAgICAgICAgIHByaW50aygiICBtc3Ig JTA4eCB2YWwgJTAxNiJQUkl4NjQiIChtYnogJSN4KVxuIiwKICAgICAgICAgICAgICAgICAgICBt c3ItPmluZGV4LCBtc3ItPmRhdGEsIG1zci0+bWJ6KTsKQEAgLTM0NTIsNyArMzQ1Miw3IEBAIHZv aWQgdm14X2VudGVyX3JlYWxtb2RlKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIC8q IEFkanVzdCBSRkxBR1MgdG8gZW50ZXIgdmlydHVhbCA4MDg2IG1vZGUgd2l0aCBJT1BMID09IDMu ICBTaW5jZQogICAgICAqIHdlIGhhdmUgQ1I0LlZNRSA9PSAxIGFuZCBvdXIgb3duIFRTUyB3aXRo IGFuIGVtcHR5IGludGVycnVwdAogICAgICAqIHJlZGlyZWN0aW9uIGJpdG1hcCwgYWxsIHNvZnR3 YXJlIElOVHMgd2lsbCBiZSBoYW5kbGVkIGJ5IHZtODYgKi8KLSAgICB2LT5hcmNoLmh2bV92bXgu dm04Nl9zYXZlZF9lZmxhZ3MgPSByZWdzLT5lZmxhZ3M7CisgICAgdi0+YXJjaC5odm0udm14LnZt ODZfc2F2ZWRfZWZsYWdzID0gcmVncy0+ZWZsYWdzOwogICAgIHJlZ3MtPmVmbGFncyB8PSAoWDg2 X0VGTEFHU19WTSB8IFg4Nl9FRkxBR1NfSU9QTCk7CiB9CiAKQEAgLTM2MTgsOSArMzYxOCw5IEBA IHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAg ICAgICAgKiB2YWx1ZXMgdG8gbWF0Y2guCiAgICAgICAgICAqLwogICAgICAgICBfX3ZtcmVhZChH VUVTVF9DUjQsICZ2LT5hcmNoLmh2bS5od19jcls0XSk7Ci0gICAgICAgIHYtPmFyY2guaHZtLmd1 ZXN0X2NyWzRdICY9IHYtPmFyY2guaHZtX3ZteC5jcjRfaG9zdF9tYXNrOworICAgICAgICB2LT5h cmNoLmh2bS5ndWVzdF9jcls0XSAmPSB2LT5hcmNoLmh2bS52bXguY3I0X2hvc3RfbWFzazsKICAg ICAgICAgdi0+YXJjaC5odm0uZ3Vlc3RfY3JbNF0gfD0gKHYtPmFyY2guaHZtLmh3X2NyWzRdICYK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH52LT5hcmNoLmh2bV92bXguY3I0 X2hvc3RfbWFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+di0+YXJj aC5odm0udm14LmNyNF9ob3N0X21hc2spOwogCiAgICAgICAgIF9fdm1yZWFkKEdVRVNUX0NSMywg JnYtPmFyY2guaHZtLmh3X2NyWzNdKTsKICAgICAgICAgaWYgKCB2bXhfdW5yZXN0cmljdGVkX2d1 ZXN0KHYpIHx8IGh2bV9wYWdpbmdfZW5hYmxlZCh2KSApCkBAIC0zNjcxLDEyICszNjcxLDEyIEBA IHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAg ICAqIGZpZ3VyZSBvdXQgd2hldGhlciBpdCBoYXMgZG9uZSBzbyBhbmQgdXBkYXRlIHRoZSBhbHRw Mm0gZGF0YS4KICAgICAgKi8KICAgICBpZiAoIGFsdHAybV9hY3RpdmUodi0+ZG9tYWluKSAmJgot ICAgICAgICAodi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJgorICAgICAg ICAodi0+YXJjaC5odm0udm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJgogICAgICAgICBTRUNP TkRBUllfRVhFQ19FTkFCTEVfVk1fRlVOQ1RJT05TKSApCiAgICAgewogICAgICAgICB1bnNpZ25l ZCBsb25nIGlkeDsKIAotICAgICAgICBpZiAoIHYtPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhl Y19jb250cm9sICYKKyAgICAgICAgaWYgKCB2LT5hcmNoLmh2bS52bXguc2Vjb25kYXJ5X2V4ZWNf Y29udHJvbCAmCiAgICAgICAgICAgICBTRUNPTkRBUllfRVhFQ19FTkFCTEVfVklSVF9FWENFUFRJ T05TICkKICAgICAgICAgICAgIF9fdm1yZWFkKEVQVFBfSU5ERVgsICZpZHgpOwogICAgICAgICBl bHNlCkBAIC0zNzE4LDExICszNzE4LDExIEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGlmICggdW5saWtlbHkoZXhpdF9yZWFzb24gJiBW TVhfRVhJVF9SRUFTT05TX0ZBSUxFRF9WTUVOVFJZKSApCiAgICAgICAgIHJldHVybiB2bXhfZmFp bGVkX3ZtZW50cnkoZXhpdF9yZWFzb24sIHJlZ3MpOwogCi0gICAgaWYgKCB2LT5hcmNoLmh2bV92 bXgudm14X3JlYWxtb2RlICkKKyAgICBpZiAoIHYtPmFyY2guaHZtLnZteC52bXhfcmVhbG1vZGUg KQogICAgIHsKICAgICAgICAgLyogUHV0IFJGTEFHUyBiYWNrIHRoZSB3YXkgdGhlIGd1ZXN0IHdh bnRzIGl0ICovCiAgICAgICAgIHJlZ3MtPmVmbGFncyAmPSB+KFg4Nl9FRkxBR1NfVk0gfCBYODZf RUZMQUdTX0lPUEwpOwotICAgICAgICByZWdzLT5lZmxhZ3MgfD0gKHYtPmFyY2guaHZtX3ZteC52 bTg2X3NhdmVkX2VmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTCk7CisgICAgICAgIHJlZ3MtPmVmbGFn cyB8PSAodi0+YXJjaC5odm0udm14LnZtODZfc2F2ZWRfZWZsYWdzICYgWDg2X0VGTEFHU19JT1BM KTsKIAogICAgICAgICAvKiBVbmxlc3MgdGhpcyBleGl0IHdhcyBmb3IgYW4gaW50ZXJydXB0LCB3 ZSd2ZSBoaXQgc29tZXRoaW5nCiAgICAgICAgICAqIHZtODYgY2FuJ3QgaGFuZGxlLiAgVHJ5IGFn YWluLCB1c2luZyB0aGUgZW11bGF0b3IuICovCkBAIC0zNzM1LDcgKzM3MzUsNyBAQCB2b2lkIHZt eF92bWV4aXRfaGFuZGxlcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAg IHsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBwZXJmY19pbmNyKHJlYWxtb2Rl X2V4aXRzKTsKLSAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92bXgudm14X2VtdWxhdGUgPSAx OworICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtLnZteC52bXhfZW11bGF0ZSA9IDE7CiAgICAg ICAgICAgICAgICAgSFZNVFJBQ0VfMEQoUkVBTE1PREVfRU1VTEFURSk7CiAgICAgICAgICAgICAg ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzkxMSwxMiArMzkxMSwxMiBAQCB2b2lkIHZt eF92bWV4aXRfaGFuZGxlcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSBFWElUX1JFQVNPTl9QRU5ESU5HX1ZJUlRfSU5UUjoKICAgICAgICAgLyog RGlzYWJsZSB0aGUgaW50ZXJydXB0IHdpbmRvdy4gKi8KLSAgICAgICAgdi0+YXJjaC5odm1fdm14 LmV4ZWNfY29udHJvbCAmPSB+Q1BVX0JBU0VEX1ZJUlRVQUxfSU5UUl9QRU5ESU5HOworICAgICAg ICB2LT5hcmNoLmh2bS52bXguZXhlY19jb250cm9sICY9IH5DUFVfQkFTRURfVklSVFVBTF9JTlRS X1BFTkRJTkc7CiAgICAgICAgIHZteF91cGRhdGVfY3B1X2V4ZWNfY29udHJvbCh2KTsKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBFWElUX1JFQVNPTl9QRU5ESU5HX1ZJUlRfTk1JOgogICAgICAg ICAvKiBEaXNhYmxlIHRoZSBOTUkgd2luZG93LiAqLwotICAgICAgICB2LT5hcmNoLmh2bV92bXgu ZXhlY19jb250cm9sICY9IH5DUFVfQkFTRURfVklSVFVBTF9OTUlfUEVORElORzsKKyAgICAgICAg di0+YXJjaC5odm0udm14LmV4ZWNfY29udHJvbCAmPSB+Q1BVX0JBU0VEX1ZJUlRVQUxfTk1JX1BF TkRJTkc7CiAgICAgICAgIHZteF91cGRhdGVfY3B1X2V4ZWNfY29udHJvbCh2KTsKICAgICAgICAg YnJlYWs7CiAgICAgY2FzZSBFWElUX1JFQVNPTl9UQVNLX1NXSVRDSDogewpAQCAtNDE2NSw3ICs0 MTY1LDcgQEAgdm9pZCB2bXhfdm1leGl0X2hhbmRsZXIoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCiAgICAgfQogCiAgICAgY2FzZSBFWElUX1JFQVNPTl9NT05JVE9SX1RSQVBfRkxBRzoKLSAg ICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCAmPSB+Q1BVX0JBU0VEX01PTklUT1Jf VFJBUF9GTEFHOworICAgICAgICB2LT5hcmNoLmh2bS52bXguZXhlY19jb250cm9sICY9IH5DUFVf QkFTRURfTU9OSVRPUl9UUkFQX0ZMQUc7CiAgICAgICAgIHZteF91cGRhdGVfY3B1X2V4ZWNfY29u dHJvbCh2KTsKICAgICAgICAgaWYgKCB2LT5hcmNoLmh2bS5zaW5nbGVfc3RlcCApCiAgICAgICAg IHsKQEAgLTQyNjUsOCArNDI2NSw4IEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBj cHVfdXNlcl9yZWdzICpyZWdzKQogc3RhdGljIHZvaWQgbGJyX3RzeF9maXh1cCh2b2lkKQogewog ICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKLSAgICB1bnNpZ25lZCBpbnQgbXNyX2Nv dW50ID0gY3Vyci0+YXJjaC5odm1fdm14Lm1zcl9zYXZlX2NvdW50OwotICAgIHN0cnVjdCB2bXhf bXNyX2VudHJ5ICptc3JfYXJlYSA9IGN1cnItPmFyY2guaHZtX3ZteC5tc3JfYXJlYTsKKyAgICB1 bnNpZ25lZCBpbnQgbXNyX2NvdW50ID0gY3Vyci0+YXJjaC5odm0udm14Lm1zcl9zYXZlX2NvdW50 OworICAgIHN0cnVjdCB2bXhfbXNyX2VudHJ5ICptc3JfYXJlYSA9IGN1cnItPmFyY2guaHZtLnZt eC5tc3JfYXJlYTsKICAgICBzdHJ1Y3Qgdm14X21zcl9lbnRyeSAqbXNyOwogCiAgICAgaWYgKCAo bXNyID0gdm14X2ZpbmRfbXNyKGN1cnIsIGxicl9mcm9tX3N0YXJ0LCBWTVhfTVNSX0dVRVNUKSkg IT0gTlVMTCApCkBAIC00MzEyLDkgKzQzMTIsOSBAQCBzdGF0aWMgdm9pZCBsYnJfZml4dXAodm9p ZCkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CiAKLSAgICBpZiAoIGN1cnIt PmFyY2guaHZtX3ZteC5sYnJfZmxhZ3MgJiBMQlJfRklYVVBfVFNYICkKKyAgICBpZiAoIGN1cnIt PmFyY2guaHZtLnZteC5sYnJfZmxhZ3MgJiBMQlJfRklYVVBfVFNYICkKICAgICAgICAgbGJyX3Rz eF9maXh1cCgpOwotICAgIGlmICggY3Vyci0+YXJjaC5odm1fdm14Lmxicl9mbGFncyAmIExCUl9G SVhVUF9CREYxNCApCisgICAgaWYgKCBjdXJyLT5hcmNoLmh2bS52bXgubGJyX2ZsYWdzICYgTEJS X0ZJWFVQX0JERjE0ICkKICAgICAgICAgYmR3X2VycmF0dW1fYmRmMTRfZml4dXAoKTsKIH0KIApA QCAtNDM1MCwxNCArNDM1MCwxNCBAQCBib29sIHZteF92bWVudGVyX2hlbHBlcihjb25zdCBzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgaWYgKCAhb2xkX2FzaWQgJiYgbmV3X2Fz aWQgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBWUElEIHdhcyBkaXNhYmxlZDogbm93IGVu YWJsZWQuICovCi0gICAgICAgICAgICBjdXJyLT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNf Y29udHJvbCB8PQorICAgICAgICAgICAgY3Vyci0+YXJjaC5odm0udm14LnNlY29uZGFyeV9leGVj X2NvbnRyb2wgfD0KICAgICAgICAgICAgICAgICBTRUNPTkRBUllfRVhFQ19FTkFCTEVfVlBJRDsK ICAgICAgICAgICAgIHZteF91cGRhdGVfc2Vjb25kYXJ5X2V4ZWNfY29udHJvbChjdXJyKTsKICAg ICAgICAgfQogICAgICAgICBlbHNlIGlmICggb2xkX2FzaWQgJiYgIW5ld19hc2lkICkKICAgICAg ICAgewogICAgICAgICAgICAgLyogVlBJRCB3YXMgZW5hYmxlZDogbm93IGRpc2FibGVkLiAqLwot ICAgICAgICAgICAgY3Vyci0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0K KyAgICAgICAgICAgIGN1cnItPmFyY2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICY9 CiAgICAgICAgICAgICAgICAgflNFQ09OREFSWV9FWEVDX0VOQUJMRV9WUElEOwogICAgICAgICAg ICAgdm14X3VwZGF0ZV9zZWNvbmRhcnlfZXhlY19jb250cm9sKGN1cnIpOwogICAgICAgICB9CkBA IC00MzgyLDcgKzQzODIsNyBAQCBib29sIHZteF92bWVudGVyX2hlbHBlcihjb25zdCBzdHJ1Y3Qg Y3B1X3VzZXJfcmVncyAqcmVncykKICAgICB9CiAKICBvdXQ6Ci0gICAgaWYgKCB1bmxpa2VseShj dXJyLT5hcmNoLmh2bV92bXgubGJyX2ZsYWdzICYgTEJSX0ZJWFVQX01BU0spICkKKyAgICBpZiAo IHVubGlrZWx5KGN1cnItPmFyY2guaHZtLnZteC5sYnJfZmxhZ3MgJiBMQlJfRklYVVBfTUFTSykg KQogICAgICAgICBsYnJfZml4dXAoKTsKIAogICAgIEhWTVRSQUNFX05EKFZNRU5UUlksIDAsIDEv KmN5Y2xlcyovLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3Z2bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwppbmRleCA1Y2Rl YTQ3Li4wZTQ1ZGI4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKKysr IGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCkBAIC04Miw3ICs4Miw3IEBAIGludCBudm14 X3ZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgICAgIGdkcHJpbnRrKFhF TkxPR19FUlIsICJuZXN0OiBhbGxvY2F0aW9uIGZvciB2bXJlYWQgYml0bWFwIGZhaWxlZFxuIik7 CiAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICAgICAgfQotICAgICAgICB2LT5hcmNo Lmh2bV92bXgudm1yZWFkX2JpdG1hcCA9IHZtcmVhZF9iaXRtYXA7CisgICAgICAgIHYtPmFyY2gu aHZtLnZteC52bXJlYWRfYml0bWFwID0gdm1yZWFkX2JpdG1hcDsKIAogICAgICAgICBjbGVhcl9k b21haW5fcGFnZShwYWdlX3RvX21mbih2bXJlYWRfYml0bWFwKSk7CiAKQEAgLTkyLDcgKzkyLDcg QEAgaW50IG52bXhfdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICAgICAg Z2RwcmludGsoWEVOTE9HX0VSUiwgIm5lc3Q6IGFsbG9jYXRpb24gZm9yIHZtd3JpdGUgYml0bWFw IGZhaWxlZFxuIik7CiAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICAgICAgfQotICAg ICAgICB2LT5hcmNoLmh2bV92bXgudm13cml0ZV9iaXRtYXAgPSB2bXdyaXRlX2JpdG1hcDsKKyAg ICAgICAgdi0+YXJjaC5odm0udm14LnZtd3JpdGVfYml0bWFwID0gdm13cml0ZV9iaXRtYXA7CiAK ICAgICAgICAgdncgPSBfX21hcF9kb21haW5fcGFnZSh2bXdyaXRlX2JpdG1hcCk7CiAgICAgICAg IGNsZWFyX3BhZ2UodncpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgbnZteF92Y3B1X2Rlc3Ry b3koc3RydWN0IHZjcHUgKnYpCiAgICAgICogbGVhayBvZiBMMSBWTUNTIHBhZ2UuCiAgICAgICov CiAgICAgaWYgKCBudmNwdS0+bnZfbjF2bWN4X3BhICkKLSAgICAgICAgdi0+YXJjaC5odm1fdm14 LnZtY3NfcGEgPSBudmNwdS0+bnZfbjF2bWN4X3BhOworICAgICAgICB2LT5hcmNoLmh2bS52bXgu dm1jc19wYSA9IG52Y3B1LT5udl9uMXZtY3hfcGE7CiAKICAgICBpZiAoIG52Y3B1LT5udl9uMnZt Y3hfcGEgKQogICAgIHsKQEAgLTE1NSwxNSArMTU1LDE1IEBAIHZvaWQgbnZteF92Y3B1X2Rlc3Ry b3koc3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAgICB4ZnJlZShpdGVtKTsKICAgICAgICAgfQog Ci0gICAgaWYgKCB2LT5hcmNoLmh2bV92bXgudm1yZWFkX2JpdG1hcCApCisgICAgaWYgKCB2LT5h cmNoLmh2bS52bXgudm1yZWFkX2JpdG1hcCApCiAgICAgewotICAgICAgICBmcmVlX2RvbWhlYXBf cGFnZSh2LT5hcmNoLmh2bV92bXgudm1yZWFkX2JpdG1hcCk7Ci0gICAgICAgIHYtPmFyY2guaHZt X3ZteC52bXJlYWRfYml0bWFwID0gTlVMTDsKKyAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2Uodi0+ YXJjaC5odm0udm14LnZtcmVhZF9iaXRtYXApOworICAgICAgICB2LT5hcmNoLmh2bS52bXgudm1y ZWFkX2JpdG1hcCA9IE5VTEw7CiAgICAgfQotICAgIGlmICggdi0+YXJjaC5odm1fdm14LnZtd3Jp dGVfYml0bWFwICkKKyAgICBpZiAoIHYtPmFyY2guaHZtLnZteC52bXdyaXRlX2JpdG1hcCApCiAg ICAgewotICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZSh2LT5hcmNoLmh2bV92bXgudm13cml0ZV9i aXRtYXApOwotICAgICAgICB2LT5hcmNoLmh2bV92bXgudm13cml0ZV9iaXRtYXAgPSBOVUxMOwor ICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZSh2LT5hcmNoLmh2bS52bXgudm13cml0ZV9iaXRtYXAp OworICAgICAgICB2LT5hcmNoLmh2bS52bXgudm13cml0ZV9iaXRtYXAgPSBOVUxMOwogICAgIH0K IH0KICAKQEAgLTgwOSw3ICs4MDksNyBAQCBzdGF0aWMgdm9pZCBudm14X3B1cmdlX3Z2bWNzKHN0 cnVjdCB2Y3B1ICp2KQogICAgICAgICBodm1fdW5tYXBfZ3Vlc3RfZnJhbWUobnZjcHUtPm52X3Z2 bWN4LCAxKTsKICAgICBudmNwdS0+bnZfdnZtY3ggPSBOVUxMOwogICAgIG52Y3B1LT5udl92dm1j eGFkZHIgPSBJTlZBTElEX1BBRERSOwotICAgIHYtPmFyY2guaHZtX3ZteC52bWNzX3NoYWRvd19t YWRkciA9IDA7CisgICAgdi0+YXJjaC5odm0udm14LnZtY3Nfc2hhZG93X21hZGRyID0gMDsKICAg ICBmb3IgKGk9MDsgaTwyOyBpKyspIHsKICAgICAgICAgaWYgKCBudm14LT5pb2JpdG1hcFtpXSAp IHsKICAgICAgICAgICAgIGh2bV91bm1hcF9ndWVzdF9mcmFtZShudm14LT5pb2JpdG1hcFtpXSwg MSk7CkBAIC0xMTAxLDggKzExMDEsOCBAQCBzdGF0aWMgdm9pZCBsb2FkX3NoYWRvd19ndWVzdF9z dGF0ZShzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgICAgICAgICAgICAgIChnZXRfdnZtY3Modiwg Q1I0X1JFQURfU0hBRE9XKSAmIGNyX2doX21hc2spOwogICAgIF9fdm13cml0ZShDUjRfUkVBRF9T SEFET1csIGNyX3JlYWRfc2hhZG93KTsKICAgICAvKiBBZGQgdGhlIG5lc3RlZCBob3N0IG1hc2sg dG8gdGhlIG9uZSBzZXQgYnkgdm14X3VwZGF0ZV9ndWVzdF9jci4gKi8KLSAgICB2LT5hcmNoLmh2 bV92bXguY3I0X2hvc3RfbWFzayB8PSBjcl9naF9tYXNrOwotICAgIF9fdm13cml0ZShDUjRfR1VF U1RfSE9TVF9NQVNLLCB2LT5hcmNoLmh2bV92bXguY3I0X2hvc3RfbWFzayk7CisgICAgdi0+YXJj aC5odm0udm14LmNyNF9ob3N0X21hc2sgfD0gY3JfZ2hfbWFzazsKKyAgICBfX3Ztd3JpdGUoQ1I0 X0dVRVNUX0hPU1RfTUFTSywgdi0+YXJjaC5odm0udm14LmNyNF9ob3N0X21hc2spOwogCiAgICAg LyogVE9ETzogQ1IzIHRhcmdldCBjb250cm9sICovCiB9CkBAIC0xMTMzLDE4ICsxMTMzLDE4IEBA IHN0YXRpYyBib29sX3QgbnZteF92cGlkX2VuYWJsZWQoY29uc3Qgc3RydWN0IHZjcHUgKnYpCiAK IHN0YXRpYyB2b2lkIG52bXhfc2V0X3ZtY3NfcG9pbnRlcihzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0 IHZtY3Nfc3RydWN0ICp2dm1jcykKIHsKLSAgICBwYWRkcl90IHZ2bWNzX21hZGRyID0gdi0+YXJj aC5odm1fdm14LnZtY3Nfc2hhZG93X21hZGRyOworICAgIHBhZGRyX3QgdnZtY3NfbWFkZHIgPSB2 LT5hcmNoLmh2bS52bXgudm1jc19zaGFkb3dfbWFkZHI7CiAKICAgICBfX3ZtcGNsZWFyKHZ2bWNz X21hZGRyKTsKICAgICB2dm1jcy0+dm1jc19yZXZpc2lvbl9pZCB8PSBWTUNTX1JJRF9UWVBFX01B U0s7CiAgICAgX192bXdyaXRlKFZNQ1NfTElOS19QT0lOVEVSLCB2dm1jc19tYWRkcik7Ci0gICAg X192bXdyaXRlKFZNUkVBRF9CSVRNQVAsIHBhZ2VfdG9fbWFkZHIodi0+YXJjaC5odm1fdm14LnZt cmVhZF9iaXRtYXApKTsKLSAgICBfX3Ztd3JpdGUoVk1XUklURV9CSVRNQVAsIHBhZ2VfdG9fbWFk ZHIodi0+YXJjaC5odm1fdm14LnZtd3JpdGVfYml0bWFwKSk7CisgICAgX192bXdyaXRlKFZNUkVB RF9CSVRNQVAsIHBhZ2VfdG9fbWFkZHIodi0+YXJjaC5odm0udm14LnZtcmVhZF9iaXRtYXApKTsK KyAgICBfX3Ztd3JpdGUoVk1XUklURV9CSVRNQVAsIHBhZ2VfdG9fbWFkZHIodi0+YXJjaC5odm0u dm14LnZtd3JpdGVfYml0bWFwKSk7CiB9CiAKIHN0YXRpYyB2b2lkIG52bXhfY2xlYXJfdm1jc19w b2ludGVyKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3Qgdm1jc19zdHJ1Y3QgKnZ2bWNzKQogewotICAg IHBhZGRyX3QgdnZtY3NfbWFkZHIgPSB2LT5hcmNoLmh2bV92bXgudm1jc19zaGFkb3dfbWFkZHI7 CisgICAgcGFkZHJfdCB2dm1jc19tYWRkciA9IHYtPmFyY2guaHZtLnZteC52bWNzX3NoYWRvd19t YWRkcjsKIAogICAgIF9fdm1wY2xlYXIodnZtY3NfbWFkZHIpOwogICAgIHZ2bWNzLT52bWNzX3Jl dmlzaW9uX2lkICY9IH5WTUNTX1JJRF9UWVBFX01BU0s7CkBAIC0xMTU5LDcgKzExNTksNyBAQCBz dGF0aWMgdm9pZCB2aXJ0dWFsX3ZtZW50cnkoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAg ICAgc3RydWN0IG5lc3RlZHZjcHUgKm52Y3B1ID0gJnZjcHVfbmVzdGVkaHZtKHYpOwogICAgIHVu c2lnbmVkIGxvbmcgbG1fbDEsIGxtX2wyOwogCi0gICAgdm14X3ZtY3Nfc3dpdGNoKHYtPmFyY2gu aHZtX3ZteC52bWNzX3BhLCBudmNwdS0+bnZfbjJ2bWN4X3BhKTsKKyAgICB2bXhfdm1jc19zd2l0 Y2godi0+YXJjaC5odm0udm14LnZtY3NfcGEsIG52Y3B1LT5udl9uMnZtY3hfcGEpOwogCiAgICAg bmVzdGVkaHZtX3ZjcHVfZW50ZXJfZ3Vlc3Rtb2RlKHYpOwogICAgIG52Y3B1LT5udl92bWVudHJ5 X3BlbmRpbmcgPSAwOwpAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgc3RhdGljIHZvaWQgdmlydHVhbF92 bWVudHJ5KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIHJlZ3MtPnJmbGFncyA9IGdl dF92dm1jcyh2LCBHVUVTVF9SRkxBR1MpOwogCiAgICAgLyogdXBkYXRpbmcgaG9zdCBjcjAgdG8g c3luYyBUUyBiaXQgKi8KLSAgICBfX3Ztd3JpdGUoSE9TVF9DUjAsIHYtPmFyY2guaHZtX3ZteC5o b3N0X2NyMCk7CisgICAgX192bXdyaXRlKEhPU1RfQ1IwLCB2LT5hcmNoLmh2bS52bXguaG9zdF9j cjApOwogCiAgICAgLyogU2V0dXAgdmlydHVhbCBFVFAgZm9yIEwyIGd1ZXN0Ki8KICAgICBpZiAo IG5lc3RlZGh2bV9wYWdpbmdfbW9kZV9oYXAodikgKQpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgc3Rh dGljIHZvaWQgc3luY192dm1jc19ndWVzdF9zdGF0ZShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgaWYgKCAhKF9fbjJfZXhlY19jb250cm9sKHYpICYgQ1BV X0JBU0VEX0NSM19MT0FEX0VYSVRJTkcpICkKICAgICAgICAgc2hhZG93X3RvX3Z2bWNzKHYsIEdV RVNUX0NSMyk7CiAKLSAgICBpZiAoIHYtPmFyY2guaHZtX3ZteC5jcjRfaG9zdF9tYXNrICE9IH4w VUwgKQorICAgIGlmICggdi0+YXJjaC5odm0udm14LmNyNF9ob3N0X21hc2sgIT0gfjBVTCApCiAg ICAgICAgIC8qIE9ubHkgbmVlZCB0byB1cGRhdGUgbmVzdGVkIEdVRVNUX0NSNCBpZiBub3QgYWxs IGJpdHMgYXJlIHRyYXBwZWQuICovCiAgICAgICAgIHNldF92dm1jcyh2LCBHVUVTVF9DUjQsIHYt PmFyY2guaHZtLmd1ZXN0X2NyWzRdKTsKIH0KQEAgLTEzNzUsNyArMTM3NSw3IEBAIHN0YXRpYyB2 b2lkIHZpcnR1YWxfdm1leGl0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIC8qIFRo aXMgd2lsbCBjbGVhciBjdXJyZW50IHBDUFUgYml0IGluIHAybS0+ZGlydHlfY3B1bWFzayAqLwog ICAgIG5wMm1fc2NoZWR1bGUoTlAyTV9TQ0hFRExFX09VVCk7CiAKLSAgICB2bXhfdm1jc19zd2l0 Y2godi0+YXJjaC5odm1fdm14LnZtY3NfcGEsIG52Y3B1LT5udl9uMXZtY3hfcGEpOworICAgIHZt eF92bWNzX3N3aXRjaCh2LT5hcmNoLmh2bS52bXgudm1jc19wYSwgbnZjcHUtPm52X24xdm1jeF9w YSk7CiAKICAgICBuZXN0ZWRodm1fdmNwdV9leGl0X2d1ZXN0bW9kZSh2KTsKICAgICBudmNwdS0+ bnZfdm1leGl0X3BlbmRpbmcgPSAwOwpAQCAtMTQwNCw3ICsxNDA0LDcgQEAgc3RhdGljIHZvaWQg dmlydHVhbF92bWV4aXQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgcmVncy0+cmZs YWdzID0gWDg2X0VGTEFHU19NQlM7CiAKICAgICAvKiB1cGRhdGluZyBob3N0IGNyMCB0byBzeW5j IFRTIGJpdCAqLwotICAgIF9fdm13cml0ZShIT1NUX0NSMCwgdi0+YXJjaC5odm1fdm14Lmhvc3Rf Y3IwKTsKKyAgICBfX3Ztd3JpdGUoSE9TVF9DUjAsIHYtPmFyY2guaHZtLnZteC5ob3N0X2NyMCk7 CiAKICAgICBpZiAoIGNwdV9oYXNfdm14X3ZpcnR1YWxfaW50cl9kZWxpdmVyeSApCiAgICAgICAg IG52bXhfdXBkYXRlX2FwaWN2KHYpOwpAQCAtMTUxMSwxMiArMTUxMSwxMiBAQCBpbnQgbnZteF9o YW5kbGVfdm14b24oc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICogYGZvcmsnIHRo ZSBob3N0IHZtY3MgdG8gc2hhZG93X3ZtY3MKICAgICAgKiB2bWNzX2xvY2sgaXMgbm90IG5lZWRl ZCBzaW5jZSB3ZSBhcmUgb24gY3VycmVudAogICAgICAqLwotICAgIG52Y3B1LT5udl9uMXZtY3hf cGEgPSB2LT5hcmNoLmh2bV92bXgudm1jc19wYTsKLSAgICBfX3ZtcGNsZWFyKHYtPmFyY2guaHZt X3ZteC52bWNzX3BhKTsKKyAgICBudmNwdS0+bnZfbjF2bWN4X3BhID0gdi0+YXJjaC5odm0udm14 LnZtY3NfcGE7CisgICAgX192bXBjbGVhcih2LT5hcmNoLmh2bS52bXgudm1jc19wYSk7CiAgICAg Y29weV9kb21haW5fcGFnZShfbWZuKFBGTl9ET1dOKG52Y3B1LT5udl9uMnZtY3hfcGEpKSwKLSAg ICAgICAgICAgICAgICAgICAgIF9tZm4oUEZOX0RPV04odi0+YXJjaC5odm1fdm14LnZtY3NfcGEp KSk7Ci0gICAgX192bXB0cmxkKHYtPmFyY2guaHZtX3ZteC52bWNzX3BhKTsKLSAgICB2LT5hcmNo Lmh2bV92bXgubGF1bmNoZWQgPSAwOworICAgICAgICAgICAgICAgICAgICAgX21mbihQRk5fRE9X Tih2LT5hcmNoLmh2bS52bXgudm1jc19wYSkpKTsKKyAgICBfX3ZtcHRybGQodi0+YXJjaC5odm0u dm14LnZtY3NfcGEpOworICAgIHYtPmFyY2guaHZtLnZteC5sYXVuY2hlZCA9IDA7CiAgICAgdm1z dWNjZWVkKHJlZ3MpOwogCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKQEAgLTE2MzYsNyArMTYz Niw3IEBAIGludCBudm14X2hhbmRsZV92bXJlc3VtZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cykKICAgICB9CiAKICAgICBsYXVuY2hlZCA9IHZ2bWNzX2xhdW5jaGVkKCZudm14LT5sYXVuY2hl ZF9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZOX0RPV04odi0+YXJjaC5o dm1fdm14LnZtY3Nfc2hhZG93X21hZGRyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQRk5fRE9XTih2LT5hcmNoLmh2bS52bXgudm1jc19zaGFkb3dfbWFkZHIpKTsKICAgICBpZiAo ICFsYXVuY2hlZCApCiAgICAgewogICAgICAgICB2bWZhaWxfdmFsaWQocmVncywgVk1YX0lOU05f Vk1SRVNVTUVfTk9OTEFVTkNIRURfVk1DUyk7CkBAIC0xNjcwLDcgKzE2NzAsNyBAQCBpbnQgbnZt eF9oYW5kbGVfdm1sYXVuY2goc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgfQogCiAg ICAgbGF1bmNoZWQgPSB2dm1jc19sYXVuY2hlZCgmbnZteC0+bGF1bmNoZWRfbGlzdCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBGTl9ET1dOKHYtPmFyY2guaHZtX3ZteC52bWNzX3No YWRvd19tYWRkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZOX0RPV04odi0+ YXJjaC5odm0udm14LnZtY3Nfc2hhZG93X21hZGRyKSk7CiAgICAgaWYgKCBsYXVuY2hlZCApCiAg ICAgewogICAgICAgICB2bWZhaWxfdmFsaWQocmVncywgVk1YX0lOU05fVk1MQVVOQ0hfTk9OQ0xF QVJfVk1DUyk7CkBAIC0xNjgxLDcgKzE2ODEsNyBAQCBpbnQgbnZteF9oYW5kbGVfdm1sYXVuY2go c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgIGlmICggcmMgPT0gWDg2RU1VTF9P S0FZICkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBzZXRfdnZtY3NfbGF1bmNoZWQoJm52 bXgtPmxhdW5jaGVkX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ Rk5fRE9XTih2LT5hcmNoLmh2bV92bXgudm1jc19zaGFkb3dfbWFkZHIpKSA8IDAgKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZOX0RPV04odi0+YXJjaC5odm0udm14LnZt Y3Nfc2hhZG93X21hZGRyKSkgPCAwICkKICAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9V TkhBTkRMRUFCTEU7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBpbnQg bnZteF9oYW5kbGVfdm1wdHJsZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgbnZjcHUtPm52X3Z2bWN4ID0gdnZtY3g7CiAgICAg ICAgICAgICAgICAgbnZjcHUtPm52X3Z2bWN4YWRkciA9IGdwYTsKLSAgICAgICAgICAgICAgICB2 LT5hcmNoLmh2bV92bXgudm1jc19zaGFkb3dfbWFkZHIgPQorICAgICAgICAgICAgICAgIHYtPmFy Y2guaHZtLnZteC52bWNzX3NoYWRvd19tYWRkciA9CiAgICAgICAgICAgICAgICAgICAgIG1mbl90 b19tYWRkcihkb21haW5fcGFnZV9tYXBfdG9fbWZuKHZ2bWN4KSk7CiAgICAgICAgICAgICB9CiAg ICAgICAgICAgICBlbHNlCkBAIC0xODA2LDcgKzE4MDYsNyBAQCBpbnQgbnZteF9oYW5kbGVfdm1j bGVhcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgaWYgKCBjcHVfaGFzX3Zt eF92bWNzX3NoYWRvd2luZyApCiAgICAgICAgICAgICBudm14X2NsZWFyX3ZtY3NfcG9pbnRlcih2 LCBudmNwdS0+bnZfdnZtY3gpOwogICAgICAgICBjbGVhcl92dm1jc19sYXVuY2hlZCgmbnZteC0+ bGF1bmNoZWRfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZOX0RPV04odi0+ YXJjaC5odm1fdm14LnZtY3Nfc2hhZG93X21hZGRyKSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBGTl9ET1dOKHYtPmFyY2guaHZtLnZteC52bWNzX3NoYWRvd19tYWRkcikpOwogICAg ICAgICBudm14X3B1cmdlX3Z2bWNzKHYpOwogICAgIH0KICAgICBlbHNlIApAQCAtMjA0MSw3ICsy MDQxLDcgQEAgaW50IG52bXhfbXNyX3JlYWRfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHU2 NCAqbXNyX2NvbnRlbnQpCiAgICAgY2FzZSBNU1JfSUEzMl9WTVhfQkFTSUM6CiAgICAgewogICAg ICAgICBjb25zdCBzdHJ1Y3Qgdm1jc19zdHJ1Y3QgKnZtY3MgPQotICAgICAgICAgICAgbWFwX2Rv bWFpbl9wYWdlKF9tZm4oUEZOX0RPV04odi0+YXJjaC5odm1fdm14LnZtY3NfcGEpKSk7CisgICAg ICAgICAgICBtYXBfZG9tYWluX3BhZ2UoX21mbihQRk5fRE9XTih2LT5hcmNoLmh2bS52bXgudm1j c19wYSkpKTsKIAogICAgICAgICBkYXRhID0gKGhvc3RfZGF0YSAmICh+MHVsIDw8IDMyKSkgfAog ICAgICAgICAgICAgICAgKHZtY3MtPnZtY3NfcmV2aXNpb25faWQgJiAweDdmZmZmZmZmKTsKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJt LWVwdC5jCmluZGV4IDE0YjU5MzkuLjFmZjRmMTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0tZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwpAQCAtNjQzLDcgKzY0 Myw3IEBAIHN0YXRpYyBpbnQgcmVzb2x2ZV9taXNjb25maWcoc3RydWN0IHAybV9kb21haW4gKnAy bSwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgICAgIHN0cnVjdCB2Y3B1ICp2OwogCiAgICAgICAg IGZvcl9lYWNoX3ZjcHUgKCBwMm0tPmRvbWFpbiwgdiApCi0gICAgICAgICAgICB2LT5hcmNoLmh2 bV92bXguZXB0X3NwdXJpb3VzX21pc2NvbmZpZyA9IDE7CisgICAgICAgICAgICB2LT5hcmNoLmh2 bS52bXguZXB0X3NwdXJpb3VzX21pc2NvbmZpZyA9IDE7CiAgICAgfQogCiAgICAgcmV0dXJuIHJj OwpAQCAtNjU4LDkgKzY1OCw5IEBAIGJvb2xfdCBlcHRfaGFuZGxlX21pc2NvbmZpZyh1aW50NjRf dCBncGEpCiAKICAgICBwMm1fbG9jayhwMm0pOwogCi0gICAgc3B1cmlvdXMgPSBjdXJyLT5hcmNo Lmh2bV92bXguZXB0X3NwdXJpb3VzX21pc2NvbmZpZzsKKyAgICBzcHVyaW91cyA9IGN1cnItPmFy Y2guaHZtLnZteC5lcHRfc3B1cmlvdXNfbWlzY29uZmlnOwogICAgIHJjID0gcmVzb2x2ZV9taXNj b25maWcocDJtLCBQRk5fRE9XTihncGEpKTsKLSAgICBjdXJyLT5hcmNoLmh2bV92bXguZXB0X3Nw dXJpb3VzX21pc2NvbmZpZyA9IDA7CisgICAgY3Vyci0+YXJjaC5odm0udm14LmVwdF9zcHVyaW91 c19taXNjb25maWcgPSAwOwogCiAgICAgcDJtX3VubG9jayhwMm0pOwogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2Fz bS1vZmZzZXRzLmMKaW5kZXggNTU1ODA0Yy4uMGEyMTRlMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9m ZnNldHMuYwpAQCAtODcsMTQgKzg3LDE0IEBAIHZvaWQgX19kdW1teV9fKHZvaWQpCiAgICAgREVG SU5FKF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzLCAgX1ZHQ0Zfc3lzY2FsbF9kaXNhYmxl c19ldmVudHMpOwogICAgIEJMQU5LKCk7CiAKLSAgICBPRkZTRVQoVkNQVV9zdm1fdm1jYl9wYSwg c3RydWN0IHZjcHUsIGFyY2guaHZtX3N2bS52bWNiX3BhKTsKLSAgICBPRkZTRVQoVkNQVV9zdm1f dm1jYiwgc3RydWN0IHZjcHUsIGFyY2guaHZtX3N2bS52bWNiKTsKKyAgICBPRkZTRVQoVkNQVV9z dm1fdm1jYl9wYSwgc3RydWN0IHZjcHUsIGFyY2guaHZtLnN2bS52bWNiX3BhKTsKKyAgICBPRkZT RVQoVkNQVV9zdm1fdm1jYiwgc3RydWN0IHZjcHUsIGFyY2guaHZtLnN2bS52bWNiKTsKICAgICBC TEFOSygpOwogCi0gICAgT0ZGU0VUKFZDUFVfdm14X2xhdW5jaGVkLCBzdHJ1Y3QgdmNwdSwgYXJj aC5odm1fdm14LmxhdW5jaGVkKTsKLSAgICBPRkZTRVQoVkNQVV92bXhfcmVhbG1vZGUsIHN0cnVj dCB2Y3B1LCBhcmNoLmh2bV92bXgudm14X3JlYWxtb2RlKTsKLSAgICBPRkZTRVQoVkNQVV92bXhf ZW11bGF0ZSwgc3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteC52bXhfZW11bGF0ZSk7Ci0gICAgT0ZG U0VUKFZDUFVfdm04Nl9zZWdfbWFzaywgc3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteC52bTg2X3Nl Z21lbnRfbWFzayk7CisgICAgT0ZGU0VUKFZDUFVfdm14X2xhdW5jaGVkLCBzdHJ1Y3QgdmNwdSwg YXJjaC5odm0udm14LmxhdW5jaGVkKTsKKyAgICBPRkZTRVQoVkNQVV92bXhfcmVhbG1vZGUsIHN0 cnVjdCB2Y3B1LCBhcmNoLmh2bS52bXgudm14X3JlYWxtb2RlKTsKKyAgICBPRkZTRVQoVkNQVV92 bXhfZW11bGF0ZSwgc3RydWN0IHZjcHUsIGFyY2guaHZtLnZteC52bXhfZW11bGF0ZSk7CisgICAg T0ZGU0VUKFZDUFVfdm04Nl9zZWdfbWFzaywgc3RydWN0IHZjcHUsIGFyY2guaHZtLnZteC52bTg2 X3NlZ21lbnRfbWFzayk7CiAgICAgT0ZGU0VUKFZDUFVfaHZtX2d1ZXN0X2NyMiwgc3RydWN0IHZj cHUsIGFyY2guaHZtLmd1ZXN0X2NyWzJdKTsKICAgICBCTEFOSygpOwogCmRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pby5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8u YwppbmRleCBiYWIzYWEzLi5hNTY2OGU2IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9pby5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKQEAgLTQzOSw3ICs0 MzksNyBAQCBpbnQgcHRfaXJxX2NyZWF0ZV9iaW5kKAogCiAgICAgICAgIC8qIFVzZSBpbnRlcnJ1 cHQgcG9zdGluZyBpZiBpdCBpcyBzdXBwb3J0ZWQuICovCiAgICAgICAgIGlmICggaW9tbXVfaW50 cG9zdCApCi0gICAgICAgICAgICBwaV91cGRhdGVfaXJ0ZSh2Y3B1ID8gJnZjcHUtPmFyY2guaHZt X3ZteC5waV9kZXNjIDogTlVMTCwKKyAgICAgICAgICAgIHBpX3VwZGF0ZV9pcnRlKHZjcHUgPyAm dmNwdS0+YXJjaC5odm0udm14LnBpX2Rlc2MgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5mbywgcGlycV9kcGNpLT5nbXNpLmd2ZWMpOwogCiAgICAgICAgIGlmICggcHRfaXJx X2JpbmQtPnUubXNpLmdmbGFncyAmIFhFTl9ET01DVExfVk1TSV9YODZfVU5NQVNLRUQgKQpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvZG9tYWluLmgKaW5kZXggMGVhMzc0Mi4uYzIxNmYzNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCkBA IC02MDQsMTAgKzYwNCw2IEBAIHN0cnVjdCBndWVzdF9tZW1vcnlfcG9saWN5CiB2b2lkIHVwZGF0 ZV9ndWVzdF9tZW1vcnlfcG9saWN5KHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZ3Vlc3RfbWVtb3J5X3BvbGljeSAqcG9saWN5KTsKIAotLyog U2hvcnRoYW5kcyB0byBpbXByb3ZlIGNvZGUgbGVnaWJpbGl0eS4gKi8KLSNkZWZpbmUgaHZtX3Zt eCAgICAgICAgIGh2bS51LnZteAotI2RlZmluZSBodm1fc3ZtICAgICAgICAgaHZtLnUuc3ZtCi0K IGJvb2wgdXBkYXRlX3J1bnN0YXRlX2FyZWEoc3RydWN0IHZjcHUgKik7CiBib29sIHVwZGF0ZV9z ZWNvbmRhcnlfc3lzdGVtX3RpbWUoc3RydWN0IHZjcHUgKiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gKik7CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYXNpZC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v c3ZtL2FzaWQuaAppbmRleCBkM2ExNDRjLi42MGNiYjdiIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS9zdm0vYXNpZC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2 bS9hc2lkLmgKQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHN2bV9hc2lkX2df aW52bHBnKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGdfdmFkZHIpCiB7CiAjaWYgMAog ICAgIC8qIE9wdGltaXphdGlvbj8gKi8KLSAgICBzdm1faW52bHBnYShnX3ZhZGRyLCB2LT5hcmNo Lmh2bV9zdm0udm1jYi0+Z3Vlc3RfYXNpZCk7CisgICAgc3ZtX2ludmxwZ2EoZ192YWRkciwgdi0+ YXJjaC5odm0uc3ZtLnZtY2ItPmd1ZXN0X2FzaWQpOwogI2VuZGlmCiAKICAgICAvKiBTYWZlIGZh bGxiYWNrLiBUYWtlIGEgbmV3IEFTSUQuICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L2h2bS92Y3B1LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92Y3B1LmgKaW5kZXggYzhk MGE0ZS4uYzY2MzE1NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmNwdS5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZjcHUuaApAQCAtMTc4LDcgKzE3OCw3IEBA IHN0cnVjdCBodm1fdmNwdSB7CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3Qgdm14X3ZjcHUg dm14OwogICAgICAgICBzdHJ1Y3Qgc3ZtX3ZjcHUgc3ZtOwotICAgIH0gdTsKKyAgICB9OwogCiAg ICAgc3RydWN0IHRhc2tsZXQgICAgICBhc3NlcnRfZXZ0Y2huX2lycV90YXNrbGV0OwogCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1jcy5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vdm14L3ZtY3MuaAppbmRleCBmOTY0YTk1Li43NmRkMDRhIDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1jcy5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3ZteC92bWNzLmgKQEAgLTMxMSw3ICszMTEsNyBAQCBleHRlcm4gdTY0IHZteF9l cHRfdnBpZF9jYXA7CiAjZGVmaW5lIGNwdV9oYXNfdm14X3VucmVzdHJpY3RlZF9ndWVzdCBcCiAg ICAgKHZteF9zZWNvbmRhcnlfZXhlY19jb250cm9sICYgU0VDT05EQVJZX0VYRUNfVU5SRVNUUklD VEVEX0dVRVNUKQogI2RlZmluZSB2bXhfdW5yZXN0cmljdGVkX2d1ZXN0KHYpICAgICAgICAgICAg ICAgXAotICAgICgodiktPmFyY2guaHZtX3ZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICYgXAor ICAgICgodiktPmFyY2guaHZtLnZteC5zZWNvbmRhcnlfZXhlY19jb250cm9sICYgXAogICAgICBT RUNPTkRBUllfRVhFQ19VTlJFU1RSSUNURURfR1VFU1QpCiAjZGVmaW5lIGNwdV9oYXNfdm14X3Bs ZSBcCiAgICAgKHZteF9zZWNvbmRhcnlfZXhlY19jb250cm9sICYgU0VDT05EQVJZX0VYRUNfUEFV U0VfTE9PUF9FWElUSU5HKQotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs