From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id F0CAD6E027 for ; Tue, 4 Aug 2020 09:42:12 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 4 Aug 2020 11:41:26 +0200 Message-Id: <20200804094128.31242-16-zbigniew.kempczynski@intel.com> In-Reply-To: <20200804094128.31242-1-zbigniew.kempczynski@intel.com> References: <20200804094128.31242-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v26 15/17] tests/gem|kms: remove libdrm dependency (batch 2) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: VXNlIGludGVsX2JiIC8gaW50ZWxfYnVmIHRvIHJlbW92ZSBsaWJkcm0gZGVwZW5kZW5jeS4KClRl c3RzIGNoYW5nZWQ6Ci0gZ2VtX3JlYWRfcmVhZF9zcGVlZAotIGdlbV9yZW5kZXJfY29weQotIGdl bV9yZW5kZXJfY29weV9yZWR1eAotIGdlbV9yZW5kZXJfbGluZWFyX2JsaXRzCi0gZ2VtX3JlbmRl cl90aWxlZF9ibGl0cwotIGdlbV9zdHJlc3MKLSBrbXNfYmlnX2ZiCi0ga21zX2N1cnNvcl9jcmMK ClJlbW92ZSB0cmFuc2l0aW9uYWwgcmVuZGVyY29weV9idWZtZ3IsIHdlIGRvbid0IG5lZWQgaXQg YW55bW9yZS4KClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcu a2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdy emVnb3J6ZWtAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgICAgICAgIHwgICAyIC0K IGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBsaWIvcmVuZGVy Y29weV9idWZtZ3IuYyAgICAgICAgICAgICAgfCAxNzEgLS0tLS0tLS0tLS0tLS0tCiBsaWIvcmVu ZGVyY29weV9idWZtZ3IuaCAgICAgICAgICAgICAgfCAgMjggLS0tCiB0ZXN0cy9pOTE1L2dlbV9y ZWFkX3JlYWRfc3BlZWQuYyAgICAgfCAxNjEgKysrKysrKy0tLS0tLS0KIHRlc3RzL2k5MTUvZ2Vt X3JlbmRlcl9jb3B5LmMgICAgICAgICB8IDMxMyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K IHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5X3JlZHV4LmMgICB8ICA2NyArKystLS0KIHRlc3Rz L2k5MTUvZ2VtX3JlbmRlcl9saW5lYXJfYmxpdHMuYyB8ICA5MCArKystLS0tLQogdGVzdHMvaTkx NS9nZW1fcmVuZGVyX3RpbGVkX2JsaXRzLmMgIHwgIDkzICsrKystLS0tCiB0ZXN0cy9pOTE1L2dl bV9zdHJlc3MuYyAgICAgICAgICAgICAgfCAyNDQgKysrKysrKysrKystLS0tLS0tLS0tCiB0ZXN0 cy9rbXNfYmlnX2ZiLmMgICAgICAgICAgICAgICAgICAgfCAgNTQgKysrLS0KIHRlc3RzL2ttc19j dXJzb3JfY3JjLmMgICAgICAgICAgICAgICB8ICA2MyArKystLS0KIDEyIGZpbGVzIGNoYW5nZWQs IDUwNiBpbnNlcnRpb25zKCspLCA3ODEgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg bGliL3JlbmRlcmNvcHlfYnVmbWdyLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWIvcmVuZGVyY29w eV9idWZtZ3IuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2Vm aWxlLnNvdXJjZXMKaW5kZXggNDY0ZjViZTIuLjY3YjM4NjQ1IDEwMDY0NAotLS0gYS9saWIvTWFr ZWZpbGUuc291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtMTA3LDggKzEwNyw2 IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWdlbjdfcmVuZGVyLmgJCVwKIAlnZW44X3JlbmRl ci5oCQlcCiAJZ2VuOV9yZW5kZXIuaAkJXAotCXJlbmRlcmNvcHlfYnVmbWdyLmMJXAotCXJlbmRl cmNvcHlfYnVmbWdyLmgJXAogCXJlbmRlcmNvcHlfZ2VuNC5jCVwKIAlyZW5kZXJjb3B5X2dlbjYu YwlcCiAJcmVuZGVyY29weV9nZW43LmMJXApkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIv bGliL21lc29uLmJ1aWxkCmluZGV4IDM0MTY5NmU1Li5mMWY1ZjdjYSAxMDA2NDQKLS0tIGEvbGli L21lc29uLmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtNDUsNyArNDUsNiBAQCBsaWJf c291cmNlcyA9IFsKIAknZ3B1X2NtZHMuYycsCiAJJ3JlbmRlcmNvcHlfaTkxNS5jJywKIAkncmVu ZGVyY29weV9pODMwLmMnLAotCSdyZW5kZXJjb3B5X2J1Zm1nci5jJywKIAkncmVuZGVyY29weV9n ZW40LmMnLAogCSdyZW5kZXJjb3B5X2dlbjYuYycsCiAJJ3JlbmRlcmNvcHlfZ2VuNy5jJywKZGlm ZiAtLWdpdCBhL2xpYi9yZW5kZXJjb3B5X2J1Zm1nci5jIGIvbGliL3JlbmRlcmNvcHlfYnVmbWdy LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYjU4OGZhLi4wMDAwMDAwMAotLS0g YS9saWIvcmVuZGVyY29weV9idWZtZ3IuYworKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBA Ci0vKgotICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKLSAqIFNvZnR3YXJlLgotICoK LSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBT SEFMTAotICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTCi0gKiBJTiBUSEUgU09GVFdBUkUuCi0gKgotICovCi0KLSNpbmNsdWRlIDxz eXMvaW9jdGwuaD4KLSNpbmNsdWRlICJpZ3QuaCIKLSNpbmNsdWRlICJpZ3RfeDg2LmgiCi0jaW5j bHVkZSAicmVuZGVyY29weV9idWZtZ3IuaCIKLQotLyoqCi0gKiBTRUNUSU9OOnJlbmRlcmNvcHlf YnVmbWdyCi0gKiBAc2hvcnRfZGVzY3JpcHRpb246IFJlbmRlciBjb3B5IGJ1ZmZlciBtYW5hZ2Vy Ci0gKiBAdGl0bGU6IFJlbmRlciBjb3B5IGJ1Zm1ncgotICogQGluY2x1ZGU6IGlndC5oCi0gKgot ICogIyBSZW5kZXJjb3B5IGJ1ZmZlciBtYW5hZ2VyCi0gKgotICogUmVuZGVyY29weSBkZXBlbmRz IG9uIGxpYmRybSBhbmQgaWd0X2J1Ziwgc28gc29tZSBtaWRkbGUgbGF5ZXIgdG8gaW50ZWxfYnVm Ci0gKiBhbmQgYnVmX29wcyBpcyByZXF1aXJlZC4KLSAqCi0gKiB8WzwhLS0gbGFuZ3VhZ2U9ImMi IC0tPgotICogc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdyOwotICogLi4uCi0gKiBibWdy ID0gcmVuZGVyY29weV9idWZtZ3JfY3JlYXRlKGZkLCBidWZtZ3IpOwotICogLi4uCi0gKiBpZ3Rf YnVmX2luaXQoYm1nciwgJmJ1ZiwgNTEyLCA1MTIsIDMyLCBJOTE1X1RJTElOR19YLCBmYWxzZSk7 Ci0gKiAuLi4KLSAqIGxpbmVhcl90b19pZ3RfYnVmKGJtZ3IsICZidWYsIGxpbmVhcik7Ci0gKiAu Li4KLSAqIGlndF9idWZfdG9fbGluZWFyKGJtZ3IsICZidWYsIGxpbmVhcik7Ci0gKiAuLi4KLSAq IHJlbmRlcmNvcHlfYnVmbWdyX2Rlc3Ryb3koYm1ncik7Ci0gKiBdfAotICovCi0KLXN0cnVjdCBy ZW5kZXJjb3B5X2J1Zm1nciB7Ci0JaW50IGZkOwotCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsK LQlzdHJ1Y3QgYnVmX29wcyAqYm9wczsKLX07Ci0KLXN0YXRpYyB2b2lkIF9faWd0X2J1Zl90b19p bnRlbF9idWYoc3RydWN0IGlndF9idWYgKmJ1Ziwgc3RydWN0IGludGVsX2J1ZiAqaWJ1ZikKLXsK LQlpYnVmLT5oYW5kbGUgPSBidWYtPmJvLT5oYW5kbGU7Ci0JaWJ1Zi0+c3VyZmFjZVswXS5zdHJp ZGUgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlOwotCWlidWYtPnRpbGluZyA9IGJ1Zi0+dGlsaW5n OwotCWlidWYtPmJwcCA9IGJ1Zi0+YnBwOwotCWlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IGJ1Zi0+ c3VyZmFjZVswXS5zaXplOwotCWlidWYtPmNvbXByZXNzaW9uID0gYnVmLT5jb21wcmVzc2lvbjsK LQlpYnVmLT5jY3NbMF0ub2Zmc2V0ID0gYnVmLT5jY3NbMF0ub2Zmc2V0OwotCWlidWYtPmNjc1sw XS5zdHJpZGUgPSBidWYtPmNjc1swXS5zdHJpZGU7Ci19Ci0KLXZvaWQgaWd0X2J1Zl90b19saW5l YXIoc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdyLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAot CQkgICAgICAgdWludDMyX3QgKmxpbmVhcikKLXsKLQlzdHJ1Y3QgaW50ZWxfYnVmIGlidWY7Ci0K LQlfX2lndF9idWZfdG9faW50ZWxfYnVmKGJ1ZiwgJmlidWYpOwotCi0JaW50ZWxfYnVmX3RvX2xp bmVhcihibWdyLT5ib3BzLCAmaWJ1ZiwgbGluZWFyKTsKLX0KLQotdm9pZCBsaW5lYXJfdG9faWd0 X2J1ZihzdHJ1Y3QgcmVuZGVyY29weV9idWZtZ3IgKmJtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYs Ci0JCSAgICAgICB1aW50MzJfdCAqbGluZWFyKQotewotCXN0cnVjdCBpbnRlbF9idWYgaWJ1ZjsK LQotCV9faWd0X2J1Zl90b19pbnRlbF9idWYoYnVmLCAmaWJ1Zik7Ci0KLQlsaW5lYXJfdG9faW50 ZWxfYnVmKGJtZ3ItPmJvcHMsICZpYnVmLCBsaW5lYXIpOwotfQotCi1zdHJ1Y3QgcmVuZGVyY29w eV9idWZtZ3IgKgotcmVuZGVyY29weV9idWZtZ3JfY3JlYXRlKGludCBmZCwgZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyKQotewotCXN0cnVjdCBidWZfb3BzICpib3BzOwotCXN0cnVjdCByZW5kZXJj b3B5X2J1Zm1nciAqYm1ncjsKLQotCWlndF9hc3NlcnQoYnVmbWdyKTsKLQotCWJvcHMgPSBidWZf b3BzX2NyZWF0ZShmZCk7Ci0JaWd0X2Fzc2VydChib3BzKTsKLQotCWJtZ3IgPSBjYWxsb2MoMSwg c2l6ZW9mKCpibWdyKSk7Ci0JaWd0X2Fzc2VydChibWdyKTsKLQotCWJtZ3ItPmZkID0gZmQ7Ci0J Ym1nci0+YnVmbWdyID0gYnVmbWdyOwotCWJtZ3ItPmJvcHMgPSBib3BzOwotCi0JcmV0dXJuIGJt Z3I7Ci19Ci0KLXZvaWQgcmVuZGVyY29weV9idWZtZ3JfZGVzdHJveShzdHJ1Y3QgcmVuZGVyY29w eV9idWZtZ3IgKmJtZ3IpCi17Ci0JaWd0X2Fzc2VydChibWdyKTsKLQlpZ3RfYXNzZXJ0KGJtZ3It PmJvcHMpOwotCi0JYnVmX29wc19kZXN0cm95KGJtZ3ItPmJvcHMpOwotCWZyZWUoYm1ncik7Ci19 Ci0KLWJvb2wgcmVuZGVyY29weV9idWZtZ3Jfc2V0X3NvZnR3YXJlX3RpbGluZyhzdHJ1Y3QgcmVu ZGVyY29weV9idWZtZ3IgKmJtZ3IsCi0JCQkJCSAgIHVpbnQzMl90IHRpbGluZywKLQkJCQkJICAg Ym9vbCB1c2Vfc29mdHdhcmVfdGlsaW5nKQotewotCXJldHVybiBidWZfb3BzX3NldF9zb2Z0d2Fy ZV90aWxpbmcoYm1nci0+Ym9wcywgdGlsaW5nLAotCQkJCQkgICB1c2Vfc29mdHdhcmVfdGlsaW5n KTsKLX0KLQotdm9pZCBpZ3RfYnVmX2luaXQoc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdy LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJw cCwKLQkJICB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IGNvbXByZXNzaW9uKQotewotCXVpbnQz Ml90IGRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChibWdyLT5mZCk7Ci0JaW50IGdlbmVyYXRp b249IGludGVsX2dlbihkZXZpZCk7Ci0Jc3RydWN0IGludGVsX2J1ZiBpYnVmOwotCWludCBzaXpl OwotCi0JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKLQotCWJ1Zi0+c3VyZmFjZVswXS5z dHJpZGUgPSBBTElHTih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsKLQlidWYtPnN1cmZhY2VbMF0u c2l6ZSA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgKiBoZWlnaHQ7Ci0JYnVmLT50aWxpbmcgPSB0 aWxpbmc7Ci0JYnVmLT5icHAgPSBicHA7Ci0JYnVmLT5jb21wcmVzc2lvbiA9IGNvbXByZXNzaW9u OwotCi0Jc2l6ZSA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsK LQotCWlmIChjb21wcmVzc2lvbikgewotCQlpbnQgY2NzX3dpZHRoID0gaWd0X2J1Zl9pbnRlbF9j Y3Nfd2lkdGgoZ2VuZXJhdGlvbiwgYnVmKTsKLQkJaW50IGNjc19oZWlnaHQgPSBpZ3RfYnVmX2lu dGVsX2Njc19oZWlnaHQoZ2VuZXJhdGlvbiwgYnVmKTsKLQotCQlidWYtPmNjc1swXS5vZmZzZXQg PSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7Ci0JCWJ1Zi0+Y2Nz WzBdLnN0cmlkZSA9IGNjc193aWR0aDsKLQotCQlzaXplID0gYnVmLT5jY3NbMF0ub2Zmc2V0ICsg Y2NzX3dpZHRoICogY2NzX2hlaWdodDsKLQl9Ci0KLQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2Fs bG9jKGJtZ3ItPmJ1Zm1nciwgIiIsIHNpemUsIDQwOTYpOwotCi0JaW50ZWxfYnVmX2luaXRfdXNp bmdfaGFuZGxlKGJtZ3ItPmJvcHMsCi0JCQkJICAgIGJ1Zi0+Ym8tPmhhbmRsZSwKLQkJCQkgICAg JmlidWYsCi0JCQkJICAgIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwKLQkJCQkgICAgdGlsaW5nLCBj b21wcmVzc2lvbik7Ci0KLQlidWYtPmNjc1swXS5vZmZzZXQgPSBpYnVmLmNjc1swXS5vZmZzZXQ7 Ci0JYnVmLT5jY3NbMF0uc3RyaWRlID0gaWJ1Zi5jY3NbMF0uc3RyaWRlOwotfQpkaWZmIC0tZ2l0 IGEvbGliL3JlbmRlcmNvcHlfYnVmbWdyLmggYi9saWIvcmVuZGVyY29weV9idWZtZ3IuaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRlNTExOGMuLjAwMDAwMDAwCi0tLSBhL2xpYi9y ZW5kZXJjb3B5X2J1Zm1nci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotI2lmbmRl ZiBfX1JFTkRFUkNPUFlfQlVGTUdSX0hfXwotI2RlZmluZSBfX1JFTkRFUkNPUFlfQlVGTUdSX0hf XwotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSAiaW50ZWxfYnVmb3BzLmgiCi0jaW5j bHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKLQotc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyOwot Ci1zdHJ1Y3QgcmVuZGVyY29weV9idWZtZ3IgKnJlbmRlcmNvcHlfYnVmbWdyX2NyZWF0ZShpbnQg ZmQsCi0JCQkJCQkgICBkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IpOwotdm9pZCByZW5kZXJjb3B5 X2J1Zm1ncl9kZXN0cm95KHN0cnVjdCByZW5kZXJjb3B5X2J1Zm1nciAqYm1ncik7Ci0KLWJvb2wg cmVuZGVyY29weV9idWZtZ3Jfc2V0X3NvZnR3YXJlX3RpbGluZyhzdHJ1Y3QgcmVuZGVyY29weV9i dWZtZ3IgKmJtZ3IsCi0JCQkJCSAgIHVpbnQzMl90IHRpbGluZywKLQkJCQkJICAgYm9vbCB1c2Vf c29mdHdhcmVfdGlsaW5nKTsKLQotdm9pZCBpZ3RfYnVmX3RvX2xpbmVhcihzdHJ1Y3QgcmVuZGVy Y29weV9idWZtZ3IgKmJtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCSAgICAgICB1aW50MzJf dCAqbGluZWFyKTsKLQotdm9pZCBsaW5lYXJfdG9faWd0X2J1ZihzdHJ1Y3QgcmVuZGVyY29weV9i dWZtZ3IgKmJtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCSAgICAgICB1aW50MzJfdCAqbGlu ZWFyKTsKLQotdm9pZCBpZ3RfYnVmX2luaXQoc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdy LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJw cCwKLQkJICB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IGNvbXByZXNzaW9uKTsKLQotI2VuZGlm CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZWFkX3JlYWRfc3BlZWQuYyBiL3Rlc3RzL2k5 MTUvZ2VtX3JlYWRfcmVhZF9zcGVlZC5jCmluZGV4IDA2YjY2OTM1Li40MDQ5NDU2NiAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVhZF9yZWFkX3NwZWVkLmMKKysrIGIvdGVzdHMvaTkxNS9n ZW1fcmVhZF9yZWFkX3NwZWVkLmMKQEAgLTQyLDcwICs0Miw2MyBAQAogI2luY2x1ZGUgImk5MTUv Z2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCi0jaW5jbHVk ZSAiaW50ZWxfYnVmbWdyLmgiCiAKIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IHNwZWVkIG9m IGNvbmN1cnJlbnQgcmVhZHMgYmV0d2VlbiBlbmdpbmVzLiIpOwogCisjZGVmaW5lIEJCU0laRSA0 MDk2CiBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgcmVuZGVyY29weTsKLXN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2g7CiBpbnQgd2lkdGgsIGhlaWdodDsKIAotc3RhdGljIGRybV9pbnRlbF9i byAqcmNzX2NvcHlfYm8oZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKQorc3Rh dGljIHZvaWQgc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGludGVsX2J1ZiAqYnVmLCBpbnQgd3Jp dGluZykKIHsKLQlzdHJ1Y3QgaWd0X2J1ZiBkID0gewotCQkuYm8gPSBkc3QsCi0JCS5udW1fdGls ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQsCi0JCS5zdXJmYWNlWzBdID0gewotCQkJLnNpemUgPSB3 aWR0aCAqIGhlaWdodCAqIDQsIC5zdHJpZGUgPSB3aWR0aCAqIDQsCi0JCX0sCi0JCS5icHAgPSAz MiwKLQl9LCBzID0gewotCQkuYm8gPSBzcmMsCi0JCS5udW1fdGlsZXMgPSB3aWR0aCAqIGhlaWdo dCAqIDQsCi0JCS5zdXJmYWNlWzBdID0gewotCQkJLnNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQs IC5zdHJpZGUgPSB3aWR0aCAqIDQsCi0JCX0sCi0JCS5icHAgPSAzMiwKLQl9OwotCXVpbnQzMl90 IHN3aXp6bGU7Ci0JZHJtX2ludGVsX2JvICpibyA9IGJhdGNoLT5ibzsKLQlkcm1faW50ZWxfYm9f cmVmZXJlbmNlKGJvKTsKLQotCWRybV9pbnRlbF9ib19nZXRfdGlsaW5nKGRzdCwgJmQudGlsaW5n LCAmc3dpenpsZSk7Ci0JZHJtX2ludGVsX2JvX2dldF90aWxpbmcoc3JjLCAmcy50aWxpbmcsICZz d2l6emxlKTsKLQotCXJlbmRlcmNvcHkoYmF0Y2gsIE5VTEwsCi0JCSAgICZzLCAwLCAwLAorCWlu dCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYnVmLT5ib3BzKTsKKworCWdlbV9zZXRfZG9tYWluKGk5 MTUsIGJ1Zi0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RULAorCQkgICAgICAgd3JpdGluZyA/ IEk5MTVfR0VNX0RPTUFJTl9HVFQgOiAwKTsKK30KKworc3RhdGljIHN0cnVjdCBpbnRlbF9iYiAq cmNzX2NvcHlfYm8oc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxf YnVmICpzcmMpCit7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChkc3QtPmJvcHMpOworCXN0 cnVjdCBpbnRlbF9iYiAqaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIEJCU0laRSk7CisKKwkv KiBlbmZvcmNlIGJhdGNoIHdvbid0IGJlIHJlY3JlYXRlZCBhZnRlciBleGVjdXRpb24gKi8KKwlp bnRlbF9iYl9yZWYoaWJiKTsKKworCXJlbmRlcmNvcHkoaWJiLCAwLAorCQkgICBzcmMsIDAsIDAs CiAJCSAgIHdpZHRoLCBoZWlnaHQsCi0JCSAgICZkLCAwLCAwKTsKKwkJICAgZHN0LCAwLCAwKTsK IAotCXJldHVybiBibzsKKwlyZXR1cm4gaWJiOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICpi Y3NfY29weV9ibyhkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCitzdGF0aWMg c3RydWN0IGludGVsX2JiICpiY3NfY29weV9ibyhzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCQkJ ICAgIHN0cnVjdCBpbnRlbF9idWYgKnNyYykKIHsKLQlkcm1faW50ZWxfYm8gKmJvID0gYmF0Y2gt PmJvOwotCWRybV9pbnRlbF9ib19yZWZlcmVuY2UoYm8pOworCWludCBpOTE1ID0gYnVmX29wc19n ZXRfZmQoZHN0LT5ib3BzKTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGludGVsX2JiX2NyZWF0 ZShpOTE1LCBCQlNJWkUpOwogCi0JaW50ZWxfYmx0X2NvcHkoYmF0Y2gsCi0JCSAgICAgICBzcmMs IDAsIDAsIDQqd2lkdGgsCi0JCSAgICAgICBkc3QsIDAsIDAsIDQqd2lkdGgsCi0JCSAgICAgICB3 aWR0aCwgaGVpZ2h0LCAzMik7CisJaW50ZWxfYmJfcmVmKGliYik7CiAKLQlyZXR1cm4gYm87CisJ aW50ZWxfYmJfYmx0X2NvcHkoaWJiLAorCQkJICBzcmMsIDAsIDAsIDQqd2lkdGgsCisJCQkgIGRz dCwgMCwgMCwgNCp3aWR0aCwKKwkJCSAgd2lkdGgsIGhlaWdodCwgMzIpOworCisJcmV0dXJuIGli YjsKIH0KIAotc3RhdGljIHZvaWQKLXNldF9ibyhkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2 YWwpCitzdGF0aWMgdm9pZCBzZXRfYm8oc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2 YWwpCiB7CiAJaW50IHNpemUgPSB3aWR0aCAqIGhlaWdodDsKIAl1aW50MzJfdCAqdmFkZHI7CiAK LQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX21hcChibywgMSkpOwotCXZhZGRyID0gYm8tPnZpcnR1 YWw7CisJdmFkZHIgPSBpbnRlbF9idWZfZGV2aWNlX21hcChidWYsIHRydWUpOwogCXdoaWxlIChz aXplLS0pCiAJCSp2YWRkcisrID0gdmFsOwotCWRybV9pbnRlbF9ib191bm1hcChibyk7CisJaW50 ZWxfYnVmX3VubWFwKGJ1Zik7CiB9CiAKIHN0YXRpYyBkb3VibGUgZWxhcHNlZChjb25zdCBzdHJ1 Y3QgdGltZXNwZWMgKnN0YXJ0LApAQCAtMTE1LDU0ICsxMDgsNTkgQEAgc3RhdGljIGRvdWJsZSBl bGFwc2VkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqc3RhcnQsCiAJcmV0dXJuICgxZTYqKGVuZC0+ dHZfc2VjIC0gc3RhcnQtPnR2X3NlYykgKyAoZW5kLT50dl9uc2VjIC0gc3RhcnQtPnR2X25zZWMp LzEwMDApL2xvb3A7CiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKmNyZWF0ZV9ibyhkcm1faW50 ZWxfYnVmbWdyICpidWZtZ3IsCi0JCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSkKK3N0YXRpYyBz dHJ1Y3QgaW50ZWxfYnVmICpjcmVhdGVfYm8oc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGNvbnN0IGNo YXIgKm5hbWUpCiB7CiAJdWludDMyX3QgdGlsaW5nX21vZGUgPSBJOTE1X1RJTElOR19YOwotCXVu c2lnbmVkIGxvbmcgcGl0Y2g7Ci0JcmV0dXJuIGRybV9pbnRlbF9ib19hbGxvY190aWxlZChidWZt Z3IsIG5hbWUsCi0JCQkJCXdpZHRoLCBoZWlnaHQsIDQsCi0JCQkJCSZ0aWxpbmdfbW9kZSwgJnBp dGNoLCAwKTsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CisKKwlidWYgPSBpbnRlbF9idWZfY3Jl YXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIDMyLCAwLCB0aWxpbmdfbW9kZSwKKwkJCSAgICAgICBJ OTE1X0NPTVBSRVNTSU9OX05PTkUpOworCWludGVsX2J1Zl9zZXRfbmFtZShidWYsIG5hbWUpOwor CisJcmV0dXJuIGJ1ZjsKIH0KIAotc3RhdGljIHZvaWQgcnVuKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwgaW50IF93aWR0aCwgaW50IF9oZWlnaHQsCitzdGF0aWMgdm9pZCBydW4oc3RydWN0IGJ1 Zl9vcHMgKmJvcHMsIGludCBfd2lkdGgsIGludCBfaGVpZ2h0LAogCQlib29sIHdyaXRlX2Jjcywg Ym9vbCB3cml0ZV9yY3MpCiB7Ci0JZHJtX2ludGVsX2JvICpzcmMgPSBOVUxMLCAqYmNzID0gTlVM TCwgKnJjcyA9IE5VTEw7Ci0JZHJtX2ludGVsX2JvICpiY3NfYmF0Y2gsICpyY3NfYmF0Y2g7CisJ c3RydWN0IGludGVsX2J1ZiAqc3JjID0gTlVMTCwgKmJjcyA9IE5VTEwsICpyY3MgPSBOVUxMOwor CXN0cnVjdCBpbnRlbF9iYiAqYmNzX2liYiA9IE5VTEwsICpyY3NfaWJiID0gTlVMTDsKIAlzdHJ1 Y3QgdGltZXNwZWMgc3RhcnQsIGVuZDsKLQlpbnQgbG9vcHMgPSAxMDAwOworCWludCBsb29wcyA9 IDE7CiAKIAl3aWR0aCA9IF93aWR0aDsKIAloZWlnaHQgPSBfaGVpZ2h0OwogCi0Jc3JjID0gY3Jl YXRlX2JvKGJ1Zm1nciwgInNyYyIpOwotCWJjcyA9IGNyZWF0ZV9ibyhidWZtZ3IsICJiY3MiKTsK LQlyY3MgPSBjcmVhdGVfYm8oYnVmbWdyLCAicmNzIik7CisJaWd0X2luZm8oIndpZHRoOiAlZCwg aGVpZ2h0OiAlZFxuIiwgd2lkdGgsIGhlaWdodCk7CisKKwlzcmMgPSBjcmVhdGVfYm8oYm9wcywg InNyYyIpOworCWJjcyA9IGNyZWF0ZV9ibyhib3BzLCAiYmNzIik7CisJcmNzID0gY3JlYXRlX2Jv KGJvcHMsICJyY3MiKTsKIAogCXNldF9ibyhzcmMsIDB4ZGVhZGJlZWYpOwogCiAJaWYgKHdyaXRl X2JjcykgewotCQliY3NfYmF0Y2ggPSBiY3NfY29weV9ibyhzcmMsIGJjcyk7CisJCWJjc19pYmIg PSBiY3NfY29weV9ibyhzcmMsIGJjcyk7CiAJfSBlbHNlIHsKLQkJYmNzX2JhdGNoID0gYmNzX2Nv cHlfYm8oYmNzLCBzcmMpOworCQliY3NfaWJiID0gYmNzX2NvcHlfYm8oYmNzLCBzcmMpOwogCX0K IAlpZiAod3JpdGVfcmNzKSB7Ci0JCXJjc19iYXRjaCA9IHJjc19jb3B5X2JvKHNyYywgcmNzKTsK KwkJcmNzX2liYiA9IHJjc19jb3B5X2JvKHNyYywgcmNzKTsKIAl9IGVsc2UgewotCQlyY3NfYmF0 Y2ggPSByY3NfY29weV9ibyhyY3MsIHNyYyk7CisJCXJjc19pYmIgPSByY3NfY29weV9ibyhyY3Ms IHNyYyk7CiAJfQogCi0JZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKHJjcyk7Ci0JZHJtX2ludGVs X2JvX3VucmVmZXJlbmNlKGJjcyk7CisJc2V0X3RvX2d0dF9kb21haW4oc3JjLCB0cnVlKTsKIAot CWRybV9pbnRlbF9nZW1fYm9fc3RhcnRfZ3R0X2FjY2VzcyhzcmMsIHRydWUpOwogCWNsb2NrX2dl dHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmc3RhcnQpOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbG9v cHM7IGkrKykgewotCQlkcm1faW50ZWxfZ2VtX2JvX2NvbnRleHRfZXhlYyhyY3NfYmF0Y2gsIE5V TEwsIDQwOTYsIEk5MTVfRVhFQ19SRU5ERVIpOwotCQlkcm1faW50ZWxfZ2VtX2JvX2NvbnRleHRf ZXhlYyhiY3NfYmF0Y2gsIE5VTEwsIDQwOTYsIEk5MTVfRVhFQ19CTFQpOworCQlpbnRlbF9iYl9l eGVjKHJjc19pYmIsIGludGVsX2JiX29mZnNldChyY3NfaWJiKSwKKwkJCSAgICAgIEk5MTVfRVhF Q19SRU5ERVIsIGZhbHNlKTsKKwkJaW50ZWxfYmJfZXhlYyhiY3NfaWJiLCBpbnRlbF9iYl9vZmZz ZXQoYmNzX2liYiksCisJCQkgICAgICBJOTE1X0VYRUNfQkxULCBmYWxzZSk7CiAJfQotCWRybV9p bnRlbF9nZW1fYm9fc3RhcnRfZ3R0X2FjY2VzcyhzcmMsIHRydWUpOworCisJc2V0X3RvX2d0dF9k b21haW4oc3JjLCB0cnVlKTsKIAljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmVuZCk7 CiAKIAlpZ3RfaW5mbygiVGltZSB0byAlcy0lcyAlZHglZCBbJWRrXToJCSU3LjNmwrVzXG4iLApA QCAtMTcxLDE2ICsxNjksMTkgQEAgc3RhdGljIHZvaWQgcnVuKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwgaW50IF93aWR0aCwgaW50IF9oZWlnaHQsCiAJCSB3aWR0aCwgaGVpZ2h0LCA0KndpZHRo KmhlaWdodC8xMDI0LAogCQkgZWxhcHNlZCgmc3RhcnQsICZlbmQsIGxvb3BzKSk7CiAKLQlkcm1f aW50ZWxfYm9fdW5yZWZlcmVuY2UocmNzX2JhdGNoKTsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2UoYmNzX2JhdGNoKTsKLQotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShzcmMpOworCWludGVs X2JiX3VucmVmKHJjc19pYmIpOworCWludGVsX2JiX2Rlc3Ryb3kocmNzX2liYik7CisJaW50ZWxf YmJfdW5yZWYoYmNzX2liYik7CisJaW50ZWxfYmJfZGVzdHJveShiY3NfaWJiKTsKKwlpbnRlbF9i dWZfZGVzdHJveShzcmMpOworCWludGVsX2J1Zl9kZXN0cm95KHJjcyk7CisJaW50ZWxfYnVmX2Rl c3Ryb3koYmNzKTsKIH0KIAogaWd0X21haW4KIHsKLQljb25zdCBpbnQgc2l6ZXNbXSA9IHsxLCAx MjgsIDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAwfTsKLQlkcm1faW50ZWxfYnVm bWdyICpidWZtZ3IgPSBOVUxMOworCWNvbnN0IGludCBzaXplc1tdID0gezEyOCwgMjU2LCA1MTIs IDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDB9OworCXN0cnVjdCBidWZfb3BzICpib3BzID0gTlVM TDsKIAlpbnQgZmQsIGk7CiAKIAlpZ3RfZml4dHVyZSB7CkBAIC0xOTUsMjIgKzE5NiwyNCBAQCBp Z3RfbWFpbgogCQlyZW5kZXJjb3B5ID0gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoZGV2aWQpOwog CQlpZ3RfcmVxdWlyZShyZW5kZXJjb3B5KTsKIAotCQlidWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdy X2dlbV9pbml0KGZkLCA0MDk2KTsKLQkJaWd0X2Fzc2VydChidWZtZ3IpOwotCi0JCWJhdGNoID0g IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJ1Zm1nciwgZGV2aWQpOworCQlib3BzID0gYnVmX29w c19jcmVhdGUoZmQpOwogCiAJCWdlbV9zdWJtaXNzaW9uX3ByaW50X21ldGhvZChmZCk7CiAJfQog CiAJZm9yIChpID0gMDsgc2l6ZXNbaV0gIT0gMDsgaSsrKSB7CiAJCWlndF9zdWJ0ZXN0X2YoInJl YWQtcmVhZC0lZHglZCIsIHNpemVzW2ldLCBzaXplc1tpXSkKLQkJCXJ1bihidWZtZ3IsIHNpemVz W2ldLCBzaXplc1tpXSwgZmFsc2UsIGZhbHNlKTsKKwkJCXJ1bihib3BzLCBzaXplc1tpXSwgc2l6 ZXNbaV0sIGZhbHNlLCBmYWxzZSk7CiAJCWlndF9zdWJ0ZXN0X2YoInJlYWQtd3JpdGUtJWR4JWQi LCBzaXplc1tpXSwgc2l6ZXNbaV0pCi0JCQlydW4oYnVmbWdyLCBzaXplc1tpXSwgc2l6ZXNbaV0s IGZhbHNlLCB0cnVlKTsKKwkJCXJ1bihib3BzLCBzaXplc1tpXSwgc2l6ZXNbaV0sIGZhbHNlLCB0 cnVlKTsKIAkJaWd0X3N1YnRlc3RfZigid3JpdGUtcmVhZC0lZHglZCIsIHNpemVzW2ldLCBzaXpl c1tpXSkKLQkJCXJ1bihidWZtZ3IsIHNpemVzW2ldLCBzaXplc1tpXSwgdHJ1ZSwgZmFsc2UpOwor CQkJcnVuKGJvcHMsIHNpemVzW2ldLCBzaXplc1tpXSwgdHJ1ZSwgZmFsc2UpOwogCQlpZ3Rfc3Vi dGVzdF9mKCJ3cml0ZS13cml0ZS0lZHglZCIsIHNpemVzW2ldLCBzaXplc1tpXSkKLQkJCXJ1bihi dWZtZ3IsIHNpemVzW2ldLCBzaXplc1tpXSwgdHJ1ZSwgdHJ1ZSk7CisJCQlydW4oYm9wcywgc2l6 ZXNbaV0sIHNpemVzW2ldLCB0cnVlLCB0cnVlKTsKKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWJ1 Zl9vcHNfZGVzdHJveShib3BzKTsKKwkJY2xvc2UoZmQpOwogCX0KIH0KZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5j CmluZGV4IDFlMWU3OWI5Li43ZjQyNWRjZCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVu ZGVyX2NvcHkuYworKysgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCkBAIC00Nyw4ICs0 Nyw3IEBACiAjaW5jbHVkZSAiaTkxNS9nZW0uaCIKICNpbmNsdWRlICJpZ3QuaCIKICNpbmNsdWRl ICJpZ3RfeDg2LmgiCi0jaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCi0jaW5jbHVkZSAicmVuZGVy Y29weV9idWZtZ3IuaCIKKyNpbmNsdWRlICJpbnRlbF9idWZvcHMuaCIKIAogSUdUX1RFU1RfREVT Q1JJUFRJT04oIkJhc2ljIHRlc3QgZm9yIHRoZSByZW5kZXJfY29weSgpIGZ1bmN0aW9uLiIpOwog CkBAIC01OCwxMSArNTcsMTAgQEAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJhc2ljIHRlc3QgZm9y IHRoZSByZW5kZXJfY29weSgpIGZ1bmN0aW9uLiIpOwogdHlwZWRlZiBzdHJ1Y3QgewogCWludCBk cm1fZmQ7CiAJdWludDMyX3QgZGV2aWQ7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotCXN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CisJ c3RydWN0IGludGVsX2JiICppYmI7CiAJaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcl9jb3B5 OwogCWlndF92ZWJveF9jb3B5ZnVuY190IHZlYm94X2NvcHk7Ci0Jc3RydWN0IHJlbmRlcmNvcHlf YnVmbWdyICpibWdyOwogfSBkYXRhX3Q7CiBzdGF0aWMgaW50IG9wdF9kdW1wX3BuZyA9IGZhbHNl Owogc3RhdGljIGludCBjaGVja19hbGxfcGl4ZWxzID0gZmFsc2U7CkBAIC04Nyw1OSArODUsMzIg QEAgc3RhdGljIHZvaWQgKmFsbG9jX2FsaWduZWQodWludDY0X3Qgc2l6ZSkKIH0KIAogc3RhdGlj IHZvaWQKLWNvcHlfZnJvbV9saW5lYXJfYnVmKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYg KnNyYywgc3RydWN0IGlndF9idWYgKmRzdCkKK2NvcHlfZnJvbV9saW5lYXJfYnVmKGRhdGFfdCAq ZGF0YSwgc3RydWN0IGludGVsX2J1ZiAqc3JjLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QpCiB7Ci0J dm9pZCAqbGluZWFyOwotCiAJaWd0X2Fzc2VydChzcmMtPnRpbGluZyA9PSBJOTE1X1RJTElOR19O T05FKTsKIAotCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAor CWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgc3JjLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1 X0dFTV9ET01BSU5fQ1BVLCAwKTsKLQlsaW5lYXIgPSBfX2dlbV9tbWFwX29mZnNldF9fY3B1KGRh dGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLCAwLAotCQkJCQlzcmMtPmJvLT5zaXplLCBQUk9U X1JFQUQpOwotCWlmICghbGluZWFyKQotCQlsaW5lYXIgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRy bV9mZCwgc3JjLT5iby0+aGFuZGxlLCAwLAotCQkJCSAgICAgICBzcmMtPmJvLT5zaXplLCBQUk9U X1JFQUQpOwotCi0JbGluZWFyX3RvX2lndF9idWYoZGF0YS0+Ym1nciwgZHN0LCBsaW5lYXIpOwot Ci0JbXVubWFwKGxpbmVhciwgc3JjLT5iby0+c2l6ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNjcmF0 Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0J CQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLQljYWlyb19zdXJmYWNlX3QgKnN1cmZh Y2U7Ci0JY2Fpcm9fc3RhdHVzX3QgcmV0OwotCXZvaWQgKmxpbmVhcjsKLQotCWxpbmVhciA9IGFs bG9jX2FsaWduZWQoYnVmLT5iby0+c2l6ZSk7Ci0JaWd0X2J1Zl90b19saW5lYXIoZGF0YS0+Ym1n ciwgYnVmLCBsaW5lYXIpOworCWludGVsX2J1Zl9jcHVfbWFwKHNyYywgZmFsc2UpOwogCi0Jc3Vy ZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGxpbmVhciwKLQkJCQkJ CSAgICAgIENBSVJPX0ZPUk1BVF9SR0IyNCwKLQkJCQkJCSAgICAgIGlndF9idWZfd2lkdGgoYnVm KSwKLQkJCQkJCSAgICAgIGlndF9idWZfaGVpZ2h0KGJ1ZiksCi0JCQkJCQkgICAgICBidWYtPnN1 cmZhY2VbMF0uc3RyaWRlKTsKLQlyZXQgPSBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZyhzdXJm YWNlLCBtYWtlX2ZpbGVuYW1lKGZpbGVuYW1lKSk7Ci0JaWd0X2Fzc2VydChyZXQgPT0gQ0FJUk9f U1RBVFVTX1NVQ0NFU1MpOwotCWNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKKwlsaW5l YXJfdG9faW50ZWxfYnVmKGRhdGEtPmJvcHMsIGRzdCwgc3JjLT5wdHIpOwogCi0JZnJlZShsaW5l YXIpOworCWludGVsX2J1Zl91bm1hcChzcmMpOwogfQogCi1zdGF0aWMgdm9pZCAqbGluZWFyX2Nv cHlfY2NzKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKK3N0YXRpYyB2b2lkICps aW5lYXJfY29weV9jY3MoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7CiAJ dm9pZCAqY2NzX2RhdGEsICpsaW5lYXI7CiAJaW50IGdlbiA9IGludGVsX2dlbihkYXRhLT5kZXZp ZCk7Ci0JaW50IGNjc19zaXplID0gaWd0X2J1Zl9pbnRlbF9jY3Nfd2lkdGgoZ2VuLCBidWYpICoK LQkJaWd0X2J1Zl9pbnRlbF9jY3NfaGVpZ2h0KGdlbiwgYnVmKTsKKwlpbnQgY2NzX3NpemUgPSBp bnRlbF9idWZfY2NzX3dpZHRoKGdlbiwgYnVmKSAqCisJCWludGVsX2J1Zl9jY3NfaGVpZ2h0KGdl biwgYnVmKTsKKwlpbnQgYm9fc2l6ZSA9IGludGVsX2J1Zl9ib19zaXplKGJ1Zik7CiAKIAljY3Nf ZGF0YSA9IGFsbG9jX2FsaWduZWQoY2NzX3NpemUpOwotCWxpbmVhciA9IGFsbG9jX2FsaWduZWQo YnVmLT5iby0+c2l6ZSk7Ci0JbWVtc2V0KGxpbmVhciwgMCwgYnVmLT5iby0+c2l6ZSk7CisJbGlu ZWFyID0gYWxsb2NfYWxpZ25lZChib19zaXplKTsKKwltZW1zZXQobGluZWFyLCAwLCBib19zaXpl KTsKIAotCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIGJ1ZiwgbGluZWFyKTsKKwlpbnRl bF9idWZfdG9fbGluZWFyKGRhdGEtPmJvcHMsIGJ1ZiwgbGluZWFyKTsKIAlpZ3RfbWVtY3B5X2Zy b21fd2MoY2NzX2RhdGEsIGxpbmVhciArIGJ1Zi0+Y2NzWzBdLm9mZnNldCwgY2NzX3NpemUpOwog CiAJZnJlZShsaW5lYXIpOwpAQCAtMTQ3LDMxICsxMTgsNyBAQCBzdGF0aWMgdm9pZCAqbGluZWFy X2NvcHlfY2NzKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKIAlyZXR1cm4gY2Nz X2RhdGE7CiB9CiAKLXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2Njc193cml0ZV90b19wbmcoZGF0 YV90ICpkYXRhLAotCQkJCQkgc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJCQkJIGNvbnN0IGNoYXIg KmZpbGVuYW1lKQotewotCWNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKLQljYWlyb19zdGF0dXNf dCByZXQ7Ci0Jdm9pZCAqbGluZWFyOwotCWludCBnZW4gPSBpbnRlbF9nZW4oZGF0YS0+ZGV2aWQp OwotCXVuc2lnbmVkIGludCBjY3Nfd2lkdGggPSBpZ3RfYnVmX2ludGVsX2Njc193aWR0aChnZW4s IGJ1Zik7Ci0JdW5zaWduZWQgaW50IGNjc19oZWlnaHQgPSBpZ3RfYnVmX2ludGVsX2Njc19oZWln aHQoZ2VuLCBidWYpOwotCi0JbGluZWFyID0gbGluZWFyX2NvcHlfY2NzKGRhdGEsIGJ1Zik7Ci0K LQlzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEobGluZWFyLAot CQkJCQkJICAgICAgQ0FJUk9fRk9STUFUX0E4LAotCQkJCQkJICAgICAgY2NzX3dpZHRoLCBjY3Nf aGVpZ2h0LAotCQkJCQkJICAgICAgYnVmLT5jY3NbMF0uc3RyaWRlKTsKLQlyZXQgPSBjYWlyb19z dXJmYWNlX3dyaXRlX3RvX3BuZyhzdXJmYWNlLCBtYWtlX2ZpbGVuYW1lKGZpbGVuYW1lKSk7Ci0J aWd0X2Fzc2VydChyZXQgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwotCWNhaXJvX3N1cmZhY2Vf ZGVzdHJveShzdXJmYWNlKTsKLQotCWZyZWUobGluZWFyKTsKLX0KLQotc3RhdGljIHZvaWQgc2Ny YXRjaF9idWZfZHJhd19wYXR0ZXJuKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwK K3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRhdGEsIHN0cnVj dCBpbnRlbF9idWYgKmJ1ZiwKIAkJCQkgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLAog CQkJCSAgICAgaW50IGN4LCBpbnQgY3ksIGludCBjdywgaW50IGNoLAogCQkJCSAgICAgYm9vbCB1 c2VfYWx0ZXJuYXRlX2NvbG9ycykKQEAgLTE4MSwxMiArMTI4LDEyIEBAIHN0YXRpYyB2b2lkIHNj cmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYs CiAJY2Fpcm9fdCAqY3I7CiAJdm9pZCAqbGluZWFyOwogCi0JbGluZWFyID0gYWxsb2NfYWxpZ25l ZChidWYtPmJvLT5zaXplKTsKKwlsaW5lYXIgPSBhbGxvY19hbGlnbmVkKGJ1Zi0+c3VyZmFjZVsw XS5zaXplKTsKIAogCXN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0 YShsaW5lYXIsCiAJCQkJCQkgICAgICBDQUlST19GT1JNQVRfUkdCMjQsCi0JCQkJCQkgICAgICBp Z3RfYnVmX3dpZHRoKGJ1ZiksCi0JCQkJCQkgICAgICBpZ3RfYnVmX2hlaWdodChidWYpLAorCQkJ CQkJICAgICAgaW50ZWxfYnVmX3dpZHRoKGJ1ZiksCisJCQkJCQkgICAgICBpbnRlbF9idWZfaGVp Z2h0KGJ1ZiksCiAJCQkJCQkgICAgICBidWYtPnN1cmZhY2VbMF0uc3RyaWRlKTsKIAogCWNyID0g Y2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwpAQCAtMjIyLDI0ICsxNjksMjQgQEAgc3RhdGljIHZvaWQg c2NyYXRjaF9idWZfZHJhd19wYXR0ZXJuKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1 ZiwKIAogCWNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKIAotCWxpbmVhcl90b19pZ3Rf YnVmKGRhdGEtPmJtZ3IsIGJ1ZiwgbGluZWFyKTsKKwlsaW5lYXJfdG9faW50ZWxfYnVmKGRhdGEt PmJvcHMsIGJ1ZiwgbGluZWFyKTsKIAogCWZyZWUobGluZWFyKTsKIH0KIAogc3RhdGljIHZvaWQK IHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAotCQkgc3RydWN0IGlndF9idWYgKnNyYywg aW50IHN4LCBpbnQgc3ksIGludCB3LCBpbnQgaCwKLQkJIHN0cnVjdCBpZ3RfYnVmICpkc3QsIGlu dCBkeCwgaW50IGR5KQorCQkgc3RydWN0IGludGVsX2J1ZiAqc3JjLCBpbnQgc3gsIGludCBzeSwg aW50IHcsIGludCBoLAorCQkgc3RydWN0IGludGVsX2J1ZiAqZHN0LCBpbnQgZHgsIGludCBkeSkK IHsKLQlpbnQgd2lkdGggPSBpZ3RfYnVmX3dpZHRoKGRzdCk7Ci0JaW50IGhlaWdodCAgPSBpZ3Rf YnVmX2hlaWdodChkc3QpOworCWludCB3aWR0aCA9IGludGVsX2J1Zl93aWR0aChkc3QpOworCWlu dCBoZWlnaHQgPSBpbnRlbF9idWZfaGVpZ2h0KGRzdCk7CiAJdWludDMyX3QgKmxpbmVhcl9kc3Q7 CiAJdWludDMyX3QgKmxpbmVhcl9zcmM7CiAKLQlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfd2lkdGgo ZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMpKTsKLQlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVpZ2h0 KGRzdCksIGlndF9idWZfaGVpZ2h0KHNyYykpOwotCWlndF9hc3NlcnRfZXEoZHN0LT5iby0+c2l6 ZSwgc3JjLT5iby0+c2l6ZSk7CisJaWd0X2Fzc2VydF9lcShpbnRlbF9idWZfd2lkdGgoZHN0KSwg aW50ZWxfYnVmX3dpZHRoKHNyYykpOworCWlndF9hc3NlcnRfZXEoaW50ZWxfYnVmX2hlaWdodChk c3QpLCBpbnRlbF9idWZfaGVpZ2h0KHNyYykpOworCWlndF9hc3NlcnRfZXEoaW50ZWxfYnVmX2Jv X3NpemUoZHN0KSwgaW50ZWxfYnVmX2JvX3NpemUoc3JjKSk7CiAJaWd0X2Fzc2VydF9lcShkc3Qt PmJwcCwgc3JjLT5icHApOwogCiAJdyA9IG1pbih3LCB3aWR0aCAtIHN4KTsKQEAgLTI0OCwxMCAr MTk1LDEwIEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAogCWggPSBtaW4oaCwgaGVp Z2h0IC0gc3kpOwogCWggPSBtaW4oaCwgaGVpZ2h0IC0gZHkpOwogCi0JbGluZWFyX2RzdCA9IGFs bG9jX2FsaWduZWQoZHN0LT5iby0+c2l6ZSk7Ci0JbGluZWFyX3NyYyA9IGFsbG9jX2FsaWduZWQo c3JjLT5iby0+c2l6ZSk7Ci0JaWd0X2J1Zl90b19saW5lYXIoZGF0YS0+Ym1nciwgc3JjLCBsaW5l YXJfc3JjKTsKLQlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5ibWdyLCBkc3QsIGxpbmVhcl9kc3Qp OworCWxpbmVhcl9kc3QgPSBhbGxvY19hbGlnbmVkKGludGVsX2J1Zl9ib19zaXplKGRzdCkpOwor CWxpbmVhcl9zcmMgPSBhbGxvY19hbGlnbmVkKGludGVsX2J1Zl9ib19zaXplKHNyYykpOworCWlu dGVsX2J1Zl90b19saW5lYXIoZGF0YS0+Ym9wcywgc3JjLCBsaW5lYXJfc3JjKTsKKwlpbnRlbF9i dWZfdG9fbGluZWFyKGRhdGEtPmJvcHMsIGRzdCwgbGluZWFyX2RzdCk7CiAKIAlmb3IgKGludCB5 ID0gMDsgeSA8IGg7IHkrKykgewogCQltZW1jcHkoJmxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGgg KyBkeF0sCkBAIC0yNjAsNTAgKzIwNyw1MCBAQCBzY3JhdGNoX2J1Zl9jb3B5KGRhdGFfdCAqZGF0 YSwKIAl9CiAJZnJlZShsaW5lYXJfc3JjKTsKIAotCWxpbmVhcl90b19pZ3RfYnVmKGRhdGEtPmJt Z3IsIGRzdCwgbGluZWFyX2RzdCk7CisJbGluZWFyX3RvX2ludGVsX2J1ZihkYXRhLT5ib3BzLCBk c3QsIGxpbmVhcl9kc3QpOwogCWZyZWUobGluZWFyX2RzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNj cmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAorc3RhdGlj IHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpbnRlbF9idWYgKmJ1 ZiwKIAkJCSAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCQkJICAgICB1aW50MzJfdCByZXFf dGlsaW5nLAogCQkJICAgICBlbnVtIGk5MTVfY29tcHJlc3Npb24gY29tcHJlc3Npb24pCiB7CiAJ aW50IGJwcCA9IDMyOwogCi0JaWd0X2J1Zl9pbml0KGRhdGEtPmJtZ3IsIGJ1Ziwgd2lkdGgsIGhl aWdodCwgYnBwLCByZXFfdGlsaW5nLAotCQkgICAgIGNvbXByZXNzaW9uKTsKKwlpbnRlbF9idWZf aW5pdChkYXRhLT5ib3BzLCBidWYsIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwKKwkJICAgICAgIHJl cV90aWxpbmcsIGNvbXByZXNzaW9uKTsKIAotCWlndF9hc3NlcnQoaWd0X2J1Zl93aWR0aChidWYp ID09IHdpZHRoKTsKLQlpZ3RfYXNzZXJ0KGlndF9idWZfaGVpZ2h0KGJ1ZikgPT0gaGVpZ2h0KTsK KwlpZ3RfYXNzZXJ0KGludGVsX2J1Zl93aWR0aChidWYpID09IHdpZHRoKTsKKwlpZ3RfYXNzZXJ0 KGludGVsX2J1Zl9oZWlnaHQoYnVmKSA9PSBoZWlnaHQpOwogfQogCi1zdGF0aWMgdm9pZCBzY3Jh dGNoX2J1Zl9maW5pKHN0cnVjdCBpZ3RfYnVmICpidWYpCitzdGF0aWMgdm9pZCBzY3JhdGNoX2J1 Zl9maW5pKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikKIHsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2UoYnVmLT5ibyk7CisJaW50ZWxfYnVmX2Nsb3NlKGJ1Zi0+Ym9wcywgYnVmKTsKIH0KIAogc3Rh dGljIHZvaWQKIHNjcmF0Y2hfYnVmX2NoZWNrKGRhdGFfdCAqZGF0YSwKLQkJICBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmLAotCQkgIHN0cnVjdCBpZ3RfYnVmICpyZWYsCisJCSAgc3RydWN0IGludGVsX2J1 ZiAqYnVmLAorCQkgIHN0cnVjdCBpbnRlbF9idWYgKnJlZiwKIAkJICBpbnQgeCwgaW50IHkpCiB7 Ci0JaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0aChidWYpOworCWludCB3aWR0aCA9IGludGVsX2J1 Zl93aWR0aChidWYpOwogCXVpbnQzMl90IGJ1Zl92YWwsIHJlZl92YWw7CiAJdWludDMyX3QgKmxp bmVhcjsKIAotCWlndF9hc3NlcnRfZXEoaWd0X2J1Zl93aWR0aChidWYpLCBpZ3RfYnVmX3dpZHRo KHJlZikpOwotCWlndF9hc3NlcnRfZXEoaWd0X2J1Zl9oZWlnaHQoYnVmKSwgaWd0X2J1Zl9oZWln aHQocmVmKSk7Ci0JaWd0X2Fzc2VydF9lcShidWYtPmJvLT5zaXplLCByZWYtPmJvLT5zaXplKTsK KwlpZ3RfYXNzZXJ0X2VxKGludGVsX2J1Zl93aWR0aChidWYpLCBpbnRlbF9idWZfd2lkdGgocmVm KSk7CisJaWd0X2Fzc2VydF9lcShpbnRlbF9idWZfaGVpZ2h0KGJ1ZiksIGludGVsX2J1Zl9oZWln aHQocmVmKSk7CisJaWd0X2Fzc2VydF9lcShidWYtPnN1cmZhY2VbMF0uc2l6ZSwgcmVmLT5zdXJm YWNlWzBdLnNpemUpOwogCi0JbGluZWFyID0gYWxsb2NfYWxpZ25lZChidWYtPmJvLT5zaXplKTsK LQlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5ibWdyLCBidWYsIGxpbmVhcik7CisJbGluZWFyID0g YWxsb2NfYWxpZ25lZChidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CisJaW50ZWxfYnVmX3RvX2xpbmVh cihkYXRhLT5ib3BzLCBidWYsIGxpbmVhcik7CiAJYnVmX3ZhbCA9IGxpbmVhclt5ICogd2lkdGgg KyB4XTsKIAlmcmVlKGxpbmVhcik7CiAKLQlsaW5lYXIgPSBhbGxvY19hbGlnbmVkKHJlZi0+Ym8t PnNpemUpOwotCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIGJ1ZiwgbGluZWFyKTsKKwls aW5lYXIgPSBhbGxvY19hbGlnbmVkKHJlZi0+c3VyZmFjZVswXS5zaXplKTsKKwlpbnRlbF9idWZf dG9fbGluZWFyKGRhdGEtPmJvcHMsIGJ1ZiwgbGluZWFyKTsKIAlyZWZfdmFsID0gbGluZWFyW3kg KiB3aWR0aCArIHhdOwogCWZyZWUobGluZWFyKTsKIApAQCAtMzE0LDIxICsyNjEsMjEgQEAgc2Ny YXRjaF9idWZfY2hlY2soZGF0YV90ICpkYXRhLAogCiBzdGF0aWMgdm9pZAogc2NyYXRjaF9idWZf Y2hlY2tfYWxsKGRhdGFfdCAqZGF0YSwKLQkJICAgICAgc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJ ICAgICAgc3RydWN0IGlndF9idWYgKnJlZikKKwkJICAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVm LAorCQkgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpyZWYpCiB7Ci0JaW50IHdpZHRoID0gaWd0X2J1 Zl93aWR0aChidWYpOwotCWludCBoZWlnaHQgID0gaWd0X2J1Zl9oZWlnaHQoYnVmKTsKKwlpbnQg d2lkdGggPSBpbnRlbF9idWZfd2lkdGgoYnVmKTsKKwlpbnQgaGVpZ2h0ID0gaW50ZWxfYnVmX2hl aWdodChidWYpOwogCXVpbnQzMl90ICpsaW5lYXJfYnVmLCAqbGluZWFyX3JlZjsKIAotCWlndF9h c3NlcnRfZXEoaWd0X2J1Zl93aWR0aChidWYpLCBpZ3RfYnVmX3dpZHRoKHJlZikpOwotCWlndF9h c3NlcnRfZXEoaWd0X2J1Zl9oZWlnaHQoYnVmKSwgaWd0X2J1Zl9oZWlnaHQocmVmKSk7Ci0JaWd0 X2Fzc2VydF9lcShidWYtPmJvLT5zaXplLCByZWYtPmJvLT5zaXplKTsKKwlpZ3RfYXNzZXJ0X2Vx KGludGVsX2J1Zl93aWR0aChidWYpLCBpbnRlbF9idWZfd2lkdGgocmVmKSk7CisJaWd0X2Fzc2Vy dF9lcShpbnRlbF9idWZfaGVpZ2h0KGJ1ZiksIGludGVsX2J1Zl9oZWlnaHQocmVmKSk7CisJaWd0 X2Fzc2VydF9lcShidWYtPnN1cmZhY2VbMF0uc2l6ZSwgcmVmLT5zdXJmYWNlWzBdLnNpemUpOwog Ci0JbGluZWFyX2J1ZiA9IGFsbG9jX2FsaWduZWQoYnVmLT5iby0+c2l6ZSk7Ci0JbGluZWFyX3Jl ZiA9IGFsbG9jX2FsaWduZWQocmVmLT5iby0+c2l6ZSk7Ci0JaWd0X2J1Zl90b19saW5lYXIoZGF0 YS0+Ym1nciwgYnVmLCBsaW5lYXJfYnVmKTsKLQlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5ibWdy LCByZWYsIGxpbmVhcl9yZWYpOworCWxpbmVhcl9idWYgPSBhbGxvY19hbGlnbmVkKGJ1Zi0+c3Vy ZmFjZVswXS5zaXplKTsKKwlsaW5lYXJfcmVmID0gYWxsb2NfYWxpZ25lZChyZWYtPnN1cmZhY2Vb MF0uc2l6ZSk7CisJaW50ZWxfYnVmX3RvX2xpbmVhcihkYXRhLT5ib3BzLCBidWYsIGxpbmVhcl9i dWYpOworCWludGVsX2J1Zl90b19saW5lYXIoZGF0YS0+Ym9wcywgcmVmLCBsaW5lYXJfcmVmKTsK IAogCWZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKIAkJZm9yIChpbnQgeCA9IDA7 IHggPCB3aWR0aDsgeCsrKSB7CkBAIC0zNDYsMTEgKzI5MywxMSBAQCBzY3JhdGNoX2J1Zl9jaGVj a19hbGwoZGF0YV90ICpkYXRhLAogfQogCiBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9jY3NfY2hl Y2soZGF0YV90ICpkYXRhLAotCQkJCSAgc3RydWN0IGlndF9idWYgKmJ1ZikKKwkJCQkgIHN0cnVj dCBpbnRlbF9idWYgKmJ1ZikKIHsKIAlpbnQgZ2VuID0gaW50ZWxfZ2VuKGRhdGEtPmRldmlkKTsK LQlpbnQgY2NzX3NpemUgPSBpZ3RfYnVmX2ludGVsX2Njc193aWR0aChnZW4sIGJ1ZikgKgotCQlp Z3RfYnVmX2ludGVsX2Njc19oZWlnaHQoZ2VuLCBidWYpOworCWludCBjY3Nfc2l6ZSA9IGludGVs X2J1Zl9jY3Nfd2lkdGgoZ2VuLCBidWYpICoKKwkJaW50ZWxfYnVmX2Njc19oZWlnaHQoZ2VuLCBi dWYpOwogCXVpbnQ4X3QgKmxpbmVhcjsKIAlpbnQgaTsKIApAQCAtMzY4LDI2ICszMTUsMjIgQEAg c3RhdGljIHZvaWQgc2NyYXRjaF9idWZfY2NzX2NoZWNrKGRhdGFfdCAqZGF0YSwKIH0KIAogc3Rh dGljIHZvaWQKLWR1bXBfaWd0X2J1Zl90b19maWxlKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9i dWYgKmJ1ZiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCitkdW1wX2ludGVsX2J1Zl90b19maWxlKGRh dGFfdCAqZGF0YSwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCBjb25zdCBjaGFyICpmaWxlbmFtZSkK IHsKIAlGSUxFICpvdXQ7Ci0Jdm9pZCAqbGluZWFyOworCXZvaWQgKnB0cjsKKwl1aW50MzJfdCBz aXplID0gaW50ZWxfYnVmX2JvX3NpemUoYnVmKTsKIAotCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRy bV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVm LT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwlwdHIgPSBnZW1f bW1hcF9fY3B1X2NvaGVyZW50KGRhdGEtPmRybV9mZCwgYnVmLT5oYW5kbGUsIDAsIHNpemUsIFBS T1RfUkVBRCk7CiAKLQlsaW5lYXIgPSBfX2dlbV9tbWFwX29mZnNldF9fY3B1KGRhdGEtPmRybV9m ZCwgYnVmLT5iby0+aGFuZGxlLCAwLAotCQkJCQlidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwot CWlmICghbGluZWFyKQotCQlsaW5lYXIgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgYnVm LT5iby0+aGFuZGxlLCAwLAotCQkJCSAgICAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwog CW91dCA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKIAlpZ3RfYXNzZXJ0KG91dCk7Ci0JZndyaXRl KGxpbmVhciwgYnVmLT5iby0+c2l6ZSwgMSwgb3V0KTsKKwlmd3JpdGUocHRyLCBzaXplLCAxLCBv dXQpOwogCWZjbG9zZShvdXQpOwogCi0JbXVubWFwKGxpbmVhciwgYnVmLT5iby0+c2l6ZSk7Ci0K KwltdW5tYXAocHRyLCBzaXplKTsKIH0KIAogI2RlZmluZSBTT1VSQ0VfTUlYRURfVElMRUQJMQpA QCAtMzk4LDkgKzM0MSw5IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJf dCBzcmNfdGlsaW5nLCB1aW50MzJfdCBkc3RfdGlsaW5nLAogCQkgZW51bSBpOTE1X2NvbXByZXNz aW9uIGRzdF9jb21wcmVzc2lvbiwKIAkJIGludCBmbGFncykKIHsKLQlzdHJ1Y3QgaWd0X2J1ZiBy ZWYsIHNyY190aWxlZCwgc3JjX2NjcywgZHN0X2NjcywgZHN0OworCXN0cnVjdCBpbnRlbF9idWYg cmVmLCBzcmNfdGlsZWQsIHNyY19jY3MsIGRzdF9jY3MsIGRzdDsKIAlzdHJ1Y3QgewotCQlzdHJ1 Y3QgaWd0X2J1ZiBidWY7CisJCXN0cnVjdCBpbnRlbF9idWYgYnVmOwogCQljb25zdCBjaGFyICpm aWxlbmFtZTsKIAkJdWludDMyX3QgdGlsaW5nOwogCQlpbnQgeCwgeTsKQEAgLTQyNiw3ICszNjks NiBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3Qgc3JjX3RpbGluZywg dWludDMyX3QgZHN0X3RpbGluZywKIAkJCS54ID0gMSwgLnkgPSAxLAogCQl9LAogCX07Ci0JaW50 IG9wdF9kdW1wX2F1YiA9IGlndF9hdWJfZHVtcF9lbmFibGVkKCk7CiAJaW50IG51bV9zcmMgPSBB UlJBWV9TSVpFKHNyYyk7CiAJY29uc3QgYm9vbCBzcmNfbWl4ZWRfdGlsZWQgPSBmbGFncyAmIFNP VVJDRV9NSVhFRF9USUxFRDsKIAljb25zdCBib29sIHNyY19jb21wcmVzc2VkID0gc3JjX2NvbXBy ZXNzaW9uICE9IEk5MTVfQ09NUFJFU1NJT05fTk9ORTsKQEAgLTQ5NSwxOCArNDM3LDEzIEBAIHN0 YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1aW50MzJf dCBkc3RfdGlsaW5nLAogCiAJaWYgKG9wdF9kdW1wX3BuZykgewogCQlmb3IgKGludCBpID0gMDsg aSA8IG51bV9zcmM7IGkrKykKLQkJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmc3Jj W2ldLmJ1Ziwgc3JjW2ldLmZpbGVuYW1lKTsKKwkJCWludGVsX2J1Zl93cml0ZV90b19wbmcoJnNy Y1tpXS5idWYsCisJCQkJCSAgICAgICBtYWtlX2ZpbGVuYW1lKHNyY1tpXS5maWxlbmFtZSkpOwog CQlpZiAoIXNyY19taXhlZF90aWxlZCkKLQkJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRh LCAmc3JjX3RpbGVkLAotCQkJCQkJICJzb3VyY2UtdGlsZWQucG5nIik7Ci0JCXNjcmF0Y2hfYnVm X3dyaXRlX3RvX3BuZyhkYXRhLCAmZHN0LCAiZGVzdGluYXRpb24ucG5nIik7Ci0JCXNjcmF0Y2hf YnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmcmVmLCAicmVmZXJlbmNlLnBuZyIpOwotCX0KLQotCWlm IChvcHRfZHVtcF9hdWIpIHsKLQkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9maWxlbmFt ZShkYXRhLT5idWZtZ3IsCi0JCQkJCQkgICAgICAicmVuZGVyY29weS5hdWIiKTsKLQkJZHJtX2lu dGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9kdW1wKGRhdGEtPmJ1Zm1nciwgdHJ1ZSk7CisJCQlpbnRl bF9idWZfd3JpdGVfdG9fcG5nKCZzcmNfdGlsZWQsCisJCQkJCSAgICAgICBtYWtlX2ZpbGVuYW1l KCJzb3VyY2UtdGlsZWQucG5nIikpOworCQlpbnRlbF9idWZfd3JpdGVfdG9fcG5nKCZkc3QsIG1h a2VfZmlsZW5hbWUoImRlc3RpbmF0aW9uLnBuZyIpKTsKKwkJaW50ZWxfYnVmX3dyaXRlX3RvX3Bu ZygmcmVmLCBtYWtlX2ZpbGVuYW1lKCJyZWZlcmVuY2UucG5nIikpOwogCX0KIAogCS8qIFRoaXMg d2lsbCBjb3B5IHRoZSBzcmMgdG8gdGhlIG1pZCBwb2ludCBvZiB0aGUgZHN0IGJ1ZmZlci4gUHJl c3VtYWJseQpAQCAtNTE5LDc1ICs0NTYsNzYgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRh dGEsIHVpbnQzMl90IHNyY190aWxpbmcsIHVpbnQzMl90IGRzdF90aWxpbmcsCiAJICovCiAJaWYg KHNyY19taXhlZF90aWxlZCkgewogCQlpZiAoZHN0X2NvbXByZXNzZWQpCi0JCQlkYXRhLT5yZW5k ZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKKwkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmli YiwgMCwKIAkJCQkJICAmZHN0LCAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJCQkgICZkc3RfY2Nz LCAwLCAwKTsKIAotCQlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkrKykKLQkJCWRhdGEt PnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAorCQlmb3IgKGludCBpID0gMDsgaSA8IG51 bV9zcmM7IGkrKykgeworCQkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+aWJiLCAwLAogCQkJCQkg ICZzcmNbaV0uYnVmLAogCQkJCQkgIFdJRFRILzQsIEhFSUdIVC80LCBXSURUSC8yLTIsIEhFSUdI VC8yLTIsCiAJCQkJCSAgZHN0X2NvbXByZXNzZWQgPyAmZHN0X2NjcyA6ICZkc3QsCiAJCQkJCSAg c3JjW2ldLngsIHNyY1tpXS55KTsKKwkJfQogCiAJCWlmIChkc3RfY29tcHJlc3NlZCkKLQkJCWRh dGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAorCQkJZGF0YS0+cmVuZGVyX2NvcHko ZGF0YS0+aWJiLCAwLAogCQkJCQkgICZkc3RfY2NzLCAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJ CQkgICZkc3QsIDAsIDApOwogCiAJfSBlbHNlIHsKIAkJaWYgKHNyY19jb21wcmVzc2lvbiA9PSBJ OTE1X0NPTVBSRVNTSU9OX1JFTkRFUikgewotCQkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0 Y2gsIE5VTEwsCisJCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5pYmIsIDAsCiAJCQkJCSAgJnNy Y190aWxlZCwgMCwgMCwgV0lEVEgsIEhFSUdIVCwKIAkJCQkJICAmc3JjX2NjcywKIAkJCQkJICAw LCAwKTsKIAkJCWlmIChkdW1wX2NvbXByZXNzZWRfc3JjX2J1ZikgewotCQkJCWR1bXBfaWd0X2J1 Zl90b19maWxlKGRhdGEsICZzcmNfdGlsZWQsCi0JCQkJCQkgICAgICJyZW5kZXItc3JjX3RpbGVk LmJpbiIpOwotCQkJCWR1bXBfaWd0X2J1Zl90b19maWxlKGRhdGEsICZzcmNfY2NzLAotCQkJCQkJ ICAgICAicmVuZGVyLXNyY19jY3MuYmluIik7CisJCQkJZHVtcF9pbnRlbF9idWZfdG9fZmlsZShk YXRhLCAmc3JjX3RpbGVkLAorCQkJCQkJICAgICAgICJyZW5kZXItc3JjX3RpbGVkLmJpbiIpOwor CQkJCWR1bXBfaW50ZWxfYnVmX3RvX2ZpbGUoZGF0YSwgJnNyY19jY3MsCisJCQkJCQkgICAgICAg InJlbmRlci1zcmNfY2NzLmJpbiIpOwogCQkJfQogCQl9IGVsc2UgaWYgKHNyY19jb21wcmVzc2lv biA9PSBJOTE1X0NPTVBSRVNTSU9OX01FRElBKSB7Ci0JCQlkYXRhLT52ZWJveF9jb3B5KGRhdGEt PmJhdGNoLAorCQkJZGF0YS0+dmVib3hfY29weShkYXRhLT5pYmIsCiAJCQkJCSAmc3JjX3RpbGVk LCBXSURUSCwgSEVJR0hULAogCQkJCQkgJnNyY19jY3MpOwogCQkJaWYgKGR1bXBfY29tcHJlc3Nl ZF9zcmNfYnVmKSB7Ci0JCQkJZHVtcF9pZ3RfYnVmX3RvX2ZpbGUoZGF0YSwgJnNyY190aWxlZCwK LQkJCQkJCSAgICAgInZlYm94LXNyY190aWxlZC5iaW4iKTsKLQkJCQlkdW1wX2lndF9idWZfdG9f ZmlsZShkYXRhLCAmc3JjX2NjcywKLQkJCQkJCSAgICAgInZlYm94LXNyY19jY3MuYmluIik7CisJ CQkJZHVtcF9pbnRlbF9idWZfdG9fZmlsZShkYXRhLCAmc3JjX3RpbGVkLAorCQkJCQkJICAgICAg ICJ2ZWJveC1zcmNfdGlsZWQuYmluIik7CisJCQkJZHVtcF9pbnRlbF9idWZfdG9fZmlsZShkYXRh LCAmc3JjX2NjcywKKwkJCQkJCSAgICAgICAidmVib3gtc3JjX2Njcy5iaW4iKTsKIAkJCX0KIAkJ fQogCiAJCWlmIChkc3RfY29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9SRU5ERVIpIHsK LQkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAorCQkJZGF0YS0+cmVuZGVy X2NvcHkoZGF0YS0+aWJiLCAwLAogCQkJCQkgIHNyY19jb21wcmVzc2VkID8gJnNyY19jY3MgOiAm c3JjX3RpbGVkLAogCQkJCQkgIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkJCSAgJmRzdF9jY3Ms CiAJCQkJCSAgMCwgMCk7CiAKLQkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxM LAorCQkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+aWJiLCAwLAogCQkJCQkgICZkc3RfY2NzLAog CQkJCQkgIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkJCSAgJmRzdCwKIAkJCQkJICAwLCAwKTsK IAkJfSBlbHNlIGlmIChkc3RfY29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9NRURJQSkg ewotCQkJZGF0YS0+dmVib3hfY29weShkYXRhLT5iYXRjaCwKKwkJCWRhdGEtPnZlYm94X2NvcHko ZGF0YS0+aWJiLAogCQkJCQkgc3JjX2NvbXByZXNzZWQgPyAmc3JjX2NjcyA6ICZzcmNfdGlsZWQs CiAJCQkJCSBXSURUSCwgSEVJR0hULAogCQkJCQkgJmRzdF9jY3MpOwogCi0JCQlkYXRhLT52ZWJv eF9jb3B5KGRhdGEtPmJhdGNoLAorCQkJZGF0YS0+dmVib3hfY29weShkYXRhLT5pYmIsCiAJCQkJ CSAmZHN0X2NjcywKIAkJCQkJIFdJRFRILCBIRUlHSFQsCiAJCQkJCSAmZHN0KTsKIAkJfSBlbHNl IGlmIChmb3JjZV92ZWJveF9kc3RfY29weSkgewotCQkJZGF0YS0+dmVib3hfY29weShkYXRhLT5i YXRjaCwKKwkJCWRhdGEtPnZlYm94X2NvcHkoZGF0YS0+aWJiLAogCQkJCQkgc3JjX2NvbXByZXNz ZWQgPyAmc3JjX2NjcyA6ICZzcmNfdGlsZWQsCiAJCQkJCSBXSURUSCwgSEVJR0hULAogCQkJCQkg JmRzdCk7CiAJCX0gZWxzZSB7Ci0JCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVM TCwKKwkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwgMCwKIAkJCQkJICBzcmNfY29tcHJl c3NlZCA/ICZzcmNfY2NzIDogJnNyY190aWxlZCwKIAkJCQkJICAwLCAwLCBXSURUSCwgSEVJR0hU LAogCQkJCQkgICZkc3QsCkBAIC01OTYsMjkgKzUzNCwyMiBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRh dGFfdCAqZGF0YSwgdWludDMyX3Qgc3JjX3RpbGluZywgdWludDMyX3QgZHN0X3RpbGluZywKIAl9 CiAKIAlpZiAob3B0X2R1bXBfcG5nKXsKLQkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEs ICZkc3QsICJyZXN1bHQucG5nIik7CisJCWludGVsX2J1Zl93cml0ZV90b19wbmcoJmRzdCwgbWFr ZV9maWxlbmFtZSgicmVzdWx0LnBuZyIpKTsKIAkJaWYgKHNyY19jb21wcmVzc2VkKSB7Ci0JCQlz Y3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnNyY19jY3MsCi0JCQkJCQkgImNvbXByZXNz ZWQtc3JjLnBuZyIpOwotCQkJc2NyYXRjaF9idWZfY2NzX3dyaXRlX3RvX3BuZyhkYXRhLCAmc3Jj X2NjcywKLQkJCQkJCSAgICAgImNvbXByZXNzZWQtc3JjLWNjcy5wbmciKTsKKwkJCWludGVsX2J1 Zl93cml0ZV90b19wbmcoJnNyY19jY3MsCisJCQkJCSAgICAgICBtYWtlX2ZpbGVuYW1lKCJjb21w cmVzc2VkLXNyYy5wbmciKSk7CisJCQlpbnRlbF9idWZfd3JpdGVfYXV4X3RvX3BuZygmc3JjX2Nj cywKKwkJCQkJCSAgICJjb21wcmVzc2VkLXNyYy1jY3MucG5nIik7CiAJCX0KIAkJaWYgKGRzdF9j b21wcmVzc2VkKSB7Ci0JCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmRzdF9jY3Ms Ci0JCQkJCQkgImNvbXByZXNzZWQtZHN0LnBuZyIpOwotCQkJc2NyYXRjaF9idWZfY2NzX3dyaXRl X3RvX3BuZyhkYXRhLCAmZHN0X2NjcywKLQkJCQkJCSAgICAgImNvbXByZXNzZWQtZHN0LWNjcy5w bmciKTsKKwkJCWludGVsX2J1Zl93cml0ZV90b19wbmcoJmRzdF9jY3MsCisJCQkJCSAgICAgICBt YWtlX2ZpbGVuYW1lKCJjb21wcmVzc2VkLWRzdC5wbmciKSk7CisJCQlpbnRlbF9idWZfd3JpdGVf YXV4X3RvX3BuZygmZHN0X2NjcywKKwkJCQkJCSAgICJjb21wcmVzc2VkLWRzdC1jY3MucG5nIik7 CiAJCX0KIAl9CiAKLQlpZiAob3B0X2R1bXBfYXViKSB7Ci0JCWRybV9pbnRlbF9nZW1fYm9fYXVi X2R1bXBfYm1wKGRzdC5ibywKLQkJCQkJICAgICAgMCwgMCwgaWd0X2J1Zl93aWR0aCgmZHN0KSwK LQkJCQkJICAgICAgaWd0X2J1Zl9oZWlnaHQoJmRzdCksCi0JCQkJCSAgICAgIEFVQl9EVU1QX0JN UF9GT1JNQVRfQVJHQl84ODg4LAotCQkJCQkgICAgICBkc3Quc3VyZmFjZVswXS5zdHJpZGUsIDAp OwotCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2R1bXAoZGF0YS0+YnVmbWdyLCBmYWxz ZSk7Ci0JfSBlbHNlIGlmIChjaGVja19hbGxfcGl4ZWxzKSB7CisJaWYgKGNoZWNrX2FsbF9waXhl bHMpIHsKIAkJc2NyYXRjaF9idWZfY2hlY2tfYWxsKGRhdGEsICZkc3QsICZyZWYpOwogCX0gZWxz ZSB7CiAJCXNjcmF0Y2hfYnVmX2NoZWNrKGRhdGEsICZkc3QsICZyZWYsIDEwLCAxMCk7CkBAIC02 MzEsNiArNTYyLDggQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHNy Y190aWxpbmcsIHVpbnQzMl90IGRzdF90aWxpbmcsCiAJCXNjcmF0Y2hfYnVmX2Njc19jaGVjayhk YXRhLCAmZHN0X2Njcyk7CiAKIAlzY3JhdGNoX2J1Zl9maW5pKCZyZWYpOworCWlmICghc3JjX21p eGVkX3RpbGVkKQorCQlzY3JhdGNoX2J1Zl9maW5pKCZzcmNfdGlsZWQpOwogCWlmIChkc3RfY29t cHJlc3NlZCkKIAkJc2NyYXRjaF9idWZfZmluaSgmZHN0X2Njcyk7CiAJaWYgKHNyY19jb21wcmVz c2VkKQpAQCAtNjM4LDYgKzU3MSw5IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1 aW50MzJfdCBzcmNfdGlsaW5nLCB1aW50MzJfdCBkc3RfdGlsaW5nLAogCXNjcmF0Y2hfYnVmX2Zp bmkoJmRzdCk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCiAJCXNjcmF0Y2hf YnVmX2ZpbmkoJnNyY1tpXS5idWYpOworCisJLyogaGFuZGxlcyBnb25lLCBuZWVkIHRvIGNsZWFu IHRoZSBvYmplY3RzIGNhY2hlIHdpdGhpbiBpbnRlbF9iYiAqLworCWludGVsX2JiX3Jlc2V0KGRh dGEtPmliYiwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBpbnQgb3B0X2hhbmRsZXIoaW50IG9wdCwgaW50 IG9wdF9pbmRleCwgdm9pZCAqZGF0YSkKQEAgLTY0OSw2ICs1ODUsOSBAQCBzdGF0aWMgaW50IG9w dF9oYW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgsIHZvaWQgKmRhdGEpCiAJY2FzZSAnYSc6 CiAJCWNoZWNrX2FsbF9waXhlbHMgPSB0cnVlOwogCQlicmVhazsKKwljYXNlICdjJzoKKwkJZHVt cF9jb21wcmVzc2VkX3NyY19idWYgPSB0cnVlOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1 cm4gSUdUX09QVF9IQU5ETEVSX0VSUk9SOwogCX0KQEAgLTY1OSw2ICs1OTgsNyBAQCBzdGF0aWMg aW50IG9wdF9oYW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgsIHZvaWQgKmRhdGEpCiBjb25z dCBjaGFyICpoZWxwX3N0ciA9CiAJIiAgLWRcdER1bXAgUE5HXG4iCiAJIiAgLWFcdENoZWNrIGFs bCBwaXhlbHNcbiIKKwkiICAtY1x0RHVtcCBjb21wcmVzc2VkIHNyYyBzdXJmYWNlXG4iCiAJOwog CiBzdGF0aWMgdm9pZCBidWZfbW9kZV90b19zdHIodWludDMyX3QgdGlsaW5nLCBib29sIG1peGVk X3RpbGVkLApAQCAtNzA1LDcgKzY0NSw3IEBAIHN0YXRpYyB2b2lkIGJ1Zl9tb2RlX3RvX3N0cih1 aW50MzJfdCB0aWxpbmcsIGJvb2wgbWl4ZWRfdGlsZWQsCiAJCSB0aWxpbmdfc3RyLCBjb21wcmVz c2lvbl9zdHJbMF0gPyAiLSIgOiAiIiwgY29tcHJlc3Npb25fc3RyKTsKIH0KIAotaWd0X21haW5f YXJncygiZGEiLCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsIE5VTEwpCitpZ3RfbWFpbl9h cmdzKCJkYWMiLCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsIE5VTEwpCiB7CiAJc3RhdGlj IGNvbnN0IHN0cnVjdCB0ZXN0X2Rlc2MgewogCQlpbnQgc3JjX3RpbGluZzsKQEAgLTg0OSwyMCAr Nzg5LDE0IEBAIGlndF9tYWluX2FyZ3MoImRhIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5kbGVy LCBOVUxMKQogCQlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9mZCk7 CiAJCWlndF9yZXF1aXJlX2dlbShkYXRhLmRybV9mZCk7CiAKLQkJZGF0YS5idWZtZ3IgPSBkcm1f aW50ZWxfYnVmbWdyX2dlbV9pbml0KGRhdGEuZHJtX2ZkLCA0MDk2KTsKLQkJaWd0X2Fzc2VydChk YXRhLmJ1Zm1ncik7Ci0KIAkJZGF0YS5yZW5kZXJfY29weSA9IGlndF9nZXRfcmVuZGVyX2NvcHlm dW5jKGRhdGEuZGV2aWQpOwogCQlpZ3RfcmVxdWlyZV9mKGRhdGEucmVuZGVyX2NvcHksCiAJCQkg ICAgICAibm8gcmVuZGVyLWNvcHkgZnVuY3Rpb25cbiIpOwogCiAJCWRhdGEudmVib3hfY29weSA9 IGlndF9nZXRfdmVib3hfY29weWZ1bmMoZGF0YS5kZXZpZCk7CiAKLQkJZGF0YS5iYXRjaCA9IGlu dGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEuYnVmbWdyLCBkYXRhLmRldmlkKTsKLQkJaWd0X2Fz c2VydChkYXRhLmJhdGNoKTsKLQotCQlkYXRhLmJtZ3IgPSByZW5kZXJjb3B5X2J1Zm1ncl9jcmVh dGUoZGF0YS5kcm1fZmQsIGRhdGEuYnVmbWdyKTsKLQkJaWd0X2Fzc2VydChkYXRhLmJtZ3IpOwor CQlkYXRhLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShkYXRhLmRybV9mZCk7CisJCWRhdGEuaWJiID0g aW50ZWxfYmJfY3JlYXRlKGRhdGEuZHJtX2ZkLCA0MDk2KTsKIAogCQlpZ3RfZm9ya19oYW5nX2Rl dGVjdG9yKGRhdGEuZHJtX2ZkKTsKIAl9CkBAIC05MTUsOCArODQ5LDcgQEAgaWd0X21haW5fYXJn cygiZGEiLCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsIE5VTEwpCiAKIAlpZ3RfZml4dHVy ZSB7CiAJCWlndF9zdG9wX2hhbmdfZGV0ZWN0b3IoKTsKLQkJaW50ZWxfYmF0Y2hidWZmZXJfZnJl ZShkYXRhLmJhdGNoKTsKLQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGRhdGEuYnVmbWdyKTsK LQkJcmVuZGVyY29weV9idWZtZ3JfZGVzdHJveShkYXRhLmJtZ3IpOworCQlpbnRlbF9iYl9kZXN0 cm95KGRhdGEuaWJiKTsKKwkJYnVmX29wc19kZXN0cm95KGRhdGEuYm9wcyk7CiAJfQogfQpkaWZm IC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHlfcmVkdXguYyBiL3Rlc3RzL2k5MTUv Z2VtX3JlbmRlcl9jb3B5X3JlZHV4LmMKaW5kZXggYTNmNzdlODQuLjNmOWY5MjZjIDEwMDY0NAot LS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weV9yZWR1eC5jCisrKyBiL3Rlc3RzL2k5MTUv Z2VtX3JlbmRlcl9jb3B5X3JlZHV4LmMKQEAgLTQ4LDcgKzQ4LDYgQEAKIAogI2luY2x1ZGUgImk5 MTUvZ2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCi0jaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCiAK IElHVF9URVNUX0RFU0NSSVBUSU9OKCJBZHZhbmNlZCB0ZXN0IGZvciB0aGUgcmVuZGVyX2NvcHko KSBmdW5jdGlvbi4iKTsKIApAQCAtNjMsOCArNjIsOCBAQCBJR1RfVEVTVF9ERVNDUklQVElPTigi QWR2YW5jZWQgdGVzdCBmb3IgdGhlIHJlbmRlcl9jb3B5KCkgZnVuY3Rpb24uIik7CiB0eXBlZGVm IHN0cnVjdCB7CiAJaW50IGZkOwogCXVpbnQzMl90IGRldmlkOwotCWRybV9pbnRlbF9idWZtZ3Ig KmJ1Zm1ncjsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOworCXN0cnVjdCBidWZf b3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCWlndF9yZW5kZXJfY29weWZ1bmNf dCByZW5kZXJfY29weTsKIAl1aW50MzJfdCBsaW5lYXJbV0lEVEggKiBIRUlHSFRdOwogfSBkYXRh X3Q7CkBAIC03NCw1OCArNzMsNTAgQEAgc3RhdGljIHZvaWQgZGF0YV9pbml0KGRhdGFfdCAqZGF0 YSkKIAlkYXRhLT5mZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwogCWRhdGEtPmRl dmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLT5mZCk7CiAKLQlkYXRhLT5idWZtZ3IgPSBk cm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRhdGEtPmZkLCA0MDk2KTsKLQlpZ3RfYXNzZXJ0KGRh dGEtPmJ1Zm1ncik7Ci0KKwlkYXRhLT5ib3BzID0gYnVmX29wc19jcmVhdGUoZGF0YS0+ZmQpOwog CWRhdGEtPnJlbmRlcl9jb3B5ID0gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoZGF0YS0+ZGV2aWQp OwogCWlndF9yZXF1aXJlX2YoZGF0YS0+cmVuZGVyX2NvcHksCiAJCSAgICAgICJubyByZW5kZXIt Y29weSBmdW5jdGlvblxuIik7CiAKLQlkYXRhLT5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2Fs bG9jKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZGV2aWQpOwotCWlndF9hc3NlcnQoZGF0YS0+YmF0Y2gp OworCWRhdGEtPmliYiA9IGludGVsX2JiX2NyZWF0ZShkYXRhLT5mZCwgNDA5Nik7CiB9CiAKIHN0 YXRpYyB2b2lkIGRhdGFfZmluaShkYXRhX3QgKmRhdGEpCiB7Ci0JIGludGVsX2JhdGNoYnVmZmVy X2ZyZWUoZGF0YS0+YmF0Y2gpOwotCSBkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koZGF0YS0+YnVm bWdyKTsKLQkgY2xvc2UoZGF0YS0+ZmQpOworCWludGVsX2JiX2Rlc3Ryb3koZGF0YS0+aWJiKTsK KwlidWZfb3BzX2Rlc3Ryb3koZGF0YS0+Ym9wcyk7CisJY2xvc2UoZGF0YS0+ZmQpOwogfQogCi1z dGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYg KmJ1ZiwKK3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsCiAJCQkgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlk ZSwgdWludDMyX3QgY29sb3IpCiB7Ci0JZHJtX2ludGVsX2JvICpibzsKIAlpbnQgaTsKIAotCWJv ID0gZHJtX2ludGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIFNJWkUsIDQwOTYpOworCWlu dGVsX2J1Zl9pbml0KGRhdGEtPmJvcHMsIGJ1Ziwgd2lkdGgsIGhlaWdodCwgMzIsIDAsCisJCSAg ICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOworCWlndF9hc3Nl cnQoYnVmLT5zdXJmYWNlWzBdLnNpemUgPT0gU0laRSk7CisJaWd0X2Fzc2VydChidWYtPnN1cmZh Y2VbMF0uc3RyaWRlID09IHN0cmlkZSk7CisKIAlmb3IgKGkgPSAwOyBpIDwgd2lkdGggKiBoZWln aHQ7IGkrKykKIAkJZGF0YS0+bGluZWFyW2ldID0gY29sb3I7Ci0JZ2VtX3dyaXRlKGRhdGEtPmZk LCBiby0+aGFuZGxlLCAwLCBkYXRhLT5saW5lYXIsCisJZ2VtX3dyaXRlKGRhdGEtPmZkLCBidWYt PmhhbmRsZSwgMCwgZGF0YS0+bGluZWFyLAogCQkgIHNpemVvZihkYXRhLT5saW5lYXIpKTsKLQot CW1lbXNldChidWYsIDAsIHNpemVvZigqYnVmKSk7Ci0KLQlidWYtPmJvID0gYm87Ci0JYnVmLT5z dXJmYWNlWzBdLnN0cmlkZSA9IHN0cmlkZTsKLQlidWYtPnRpbGluZyA9IEk5MTVfVElMSU5HX05P TkU7Ci0JYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwotCWJ1Zi0+YnBwID0gMzI7CiB9CiAK LXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2ZpbmkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1 ZiAqYnVmKQorc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZmluaShkYXRhX3QgKmRhdGEsIHN0cnVj dCBpbnRlbF9idWYgKmJ1ZikKIHsKLQlkcmlfYm9fdW5yZWZlcmVuY2UoYnVmLT5ibyk7CisJaW50 ZWxfYnVmX2Nsb3NlKGRhdGEtPmJvcHMsIGJ1Zik7CiAJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpi dWYpKTsKIH0KIAogc3RhdGljIHZvaWQKLXNjcmF0Y2hfYnVmX2NoZWNrKGRhdGFfdCAqZGF0YSwg c3RydWN0IGlndF9idWYgKmJ1ZiwgaW50IHgsIGludCB5LAorc2NyYXRjaF9idWZfY2hlY2soZGF0 YV90ICpkYXRhLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGludCB4LCBpbnQgeSwKIAkJICB1aW50 MzJfdCBjb2xvcikKIHsKIAl1aW50MzJfdCB2YWw7CiAKLQlnZW1fcmVhZChkYXRhLT5mZCwgYnVm LT5iby0+aGFuZGxlLCAwLAorCWdlbV9yZWFkKGRhdGEtPmZkLCBidWYtPmhhbmRsZSwgMCwKIAkJ IGRhdGEtPmxpbmVhciwgc2l6ZW9mKGRhdGEtPmxpbmVhcikpOwogCXZhbCA9IGRhdGEtPmxpbmVh clt5ICogV0lEVEggKyB4XTsKIAlpZ3RfYXNzZXJ0X2YodmFsID09IGNvbG9yLApAQCAtMTM1LDcg KzEyNiw3IEBAIHNjcmF0Y2hfYnVmX2NoZWNrKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYg KmJ1ZiwgaW50IHgsIGludCB5LAogCiBzdGF0aWMgdm9pZCBjb3B5KGRhdGFfdCAqZGF0YSkKIHsK LQlzdHJ1Y3QgaWd0X2J1ZiBzcmMsIGRzdDsKKwlzdHJ1Y3QgaW50ZWxfYnVmIHNyYywgZHN0Owog CiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmc3JjLCBXSURUSCwgSEVJR0hULCBTVFJJREUsIFNS Q19DT0xPUik7CiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmZHN0LCBXSURUSCwgSEVJR0hULCBT VFJJREUsIERTVF9DT0xPUik7CkBAIC0xNDMsNyArMTM0LDcgQEAgc3RhdGljIHZvaWQgY29weShk YXRhX3QgKmRhdGEpCiAJc2NyYXRjaF9idWZfY2hlY2soZGF0YSwgJnNyYywgV0lEVEggLyAyLCBI RUlHSFQgLyAyLCBTUkNfQ09MT1IpOwogCXNjcmF0Y2hfYnVmX2NoZWNrKGRhdGEsICZkc3QsIFdJ RFRIIC8gMiwgSEVJR0hUIC8gMiwgRFNUX0NPTE9SKTsKIAotCWRhdGEtPnJlbmRlcl9jb3B5KGRh dGEtPmJhdGNoLCBOVUxMLAorCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwgMCwKIAkJCSAg JnNyYywgMCwgMCwgV0lEVEgsIEhFSUdIVCwKIAkJCSAgJmRzdCwgV0lEVEggLyAyLCBIRUlHSFQg LyAyKTsKIApAQCAtMTU3LDkgKzE0OCw5IEBAIHN0YXRpYyB2b2lkIGNvcHkoZGF0YV90ICpkYXRh KQogc3RhdGljIHZvaWQgY29weV9mbGluayhkYXRhX3QgKmRhdGEpCiB7CiAJZGF0YV90IGxvY2Fs OwotCXN0cnVjdCBpZ3RfYnVmIHNyYywgZHN0OwotCXN0cnVjdCBpZ3RfYnVmIGxvY2FsX3NyYywg bG9jYWxfZHN0OwotCXN0cnVjdCBpZ3RfYnVmIGZsaW5rOworCXN0cnVjdCBpbnRlbF9idWYgc3Jj LCBkc3Q7CisJc3RydWN0IGludGVsX2J1ZiBsb2NhbF9zcmMsIGxvY2FsX2RzdDsKKwlzdHJ1Y3Qg aW50ZWxfYnVmIGZsaW5rOwogCXVpbnQzMl90IG5hbWU7CiAKIAlkYXRhX2luaXQoJmxvY2FsKTsK QEAgLTE2NywyMyArMTU4LDIyIEBAIHN0YXRpYyB2b2lkIGNvcHlfZmxpbmsoZGF0YV90ICpkYXRh KQogCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJnNyYywgV0lEVEgsIEhFSUdIVCwgU1RSSURFLCAw KTsKIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZkc3QsIFdJRFRILCBIRUlHSFQsIFNUUklERSwg RFNUX0NPTE9SKTsKIAotCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAorCWRh dGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwgMCwKIAkJCSAgJnNyYywgMCwgMCwgV0lEVEgsIEhF SUdIVCwKIAkJCSAgJmRzdCwgV0lEVEgsIEhFSUdIVCk7CiAKIAlzY3JhdGNoX2J1Zl9pbml0KCZs b2NhbCwgJmxvY2FsX3NyYywgV0lEVEgsIEhFSUdIVCwgU1RSSURFLCAwKTsKIAlzY3JhdGNoX2J1 Zl9pbml0KCZsb2NhbCwgJmxvY2FsX2RzdCwgV0lEVEgsIEhFSUdIVCwgU1RSSURFLCBTUkNfQ09M T1IpOwogCi0JbG9jYWwucmVuZGVyX2NvcHkobG9jYWwuYmF0Y2gsIE5VTEwsCisJbG9jYWwucmVu ZGVyX2NvcHkobG9jYWwuaWJiLCAwLAogCQkJICAmbG9jYWxfc3JjLCAwLCAwLCBXSURUSCwgSEVJ R0hULAogCQkJICAmbG9jYWxfZHN0LCBXSURUSCwgSEVJR0hUKTsKIAotCi0JZHJtX2ludGVsX2Jv X2ZsaW5rKGxvY2FsX2RzdC5ibywgJm5hbWUpOworCW5hbWUgPSBnZW1fZmxpbmsobG9jYWwuZmQs IGxvY2FsX2RzdC5oYW5kbGUpOwogCWZsaW5rID0gbG9jYWxfZHN0OwotCWZsaW5rLmJvID0gZHJt X2ludGVsX2JvX2dlbV9jcmVhdGVfZnJvbV9uYW1lKGRhdGEtPmJ1Zm1nciwgImZsaW5rIiwgbmFt ZSk7CisJZmxpbmsuaGFuZGxlID0gZ2VtX29wZW4oZGF0YS0+ZmQsIG5hbWUpOwogCi0JZGF0YS0+ cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCisJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+ aWJiLCAwLAogCQkJICAmZmxpbmssIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkgICZkc3QsIFdJ RFRIIC8gMiwgSEVJR0hUIC8gMik7CiAKQEAgLTE5Myw2ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBj b3B5X2ZsaW5rKGRhdGFfdCAqZGF0YSkKIAlzY3JhdGNoX2J1Zl9jaGVjayhkYXRhLCAmZHN0LCAx MCwgMTAsIERTVF9DT0xPUik7CiAJc2NyYXRjaF9idWZfY2hlY2soZGF0YSwgJmRzdCwgV0lEVEgg LSAxMCwgSEVJR0hUIC0gMTAsIFNSQ19DT0xPUik7CiAKKwlpbnRlbF9iYl9yZXNldChkYXRhLT5p YmIsIHRydWUpOwogCXNjcmF0Y2hfYnVmX2ZpbmkoZGF0YSwgJnNyYyk7CiAJc2NyYXRjaF9idWZf ZmluaShkYXRhLCAmZmxpbmspOwogCXNjcmF0Y2hfYnVmX2ZpbmkoZGF0YSwgJmRzdCk7CmRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfbGluZWFyX2JsaXRzLmMgYi90ZXN0cy9pOTE1 L2dlbV9yZW5kZXJfbGluZWFyX2JsaXRzLmMKaW5kZXggNTVhOWU2YmUuLjhkMDQ0ZTllIDEwMDY0 NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfbGluZWFyX2JsaXRzLmMKKysrIGIvdGVzdHMv aTkxNS9nZW1fcmVuZGVyX2xpbmVhcl9ibGl0cy5jCkBAIC00OSw3ICs0OSw2IEBACiAKICNpbmNs dWRlICJpOTE1L2dlbS5oIgogI2luY2x1ZGUgImlndC5oIgotI2luY2x1ZGUgImludGVsX2J1Zm1n ci5oIgogCiAjZGVmaW5lIFdJRFRIIDUxMgogI2RlZmluZSBTVFJJREUgKFdJRFRIKjQpCkBAIC02 MCw3ICs1OSw3IEBAIHN0YXRpYyB1aW50MzJfdCBsaW5lYXJbV0lEVEgqSEVJR0hUXTsKIHN0YXRp YyBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2NvcHk7CiAKIHN0YXRpYyB2b2lkCi1jaGVj a19ibyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgdmFsKQorY2hlY2tfYnVmKGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB2YWwpCiB7CiAJaW50IGk7CiAKQEAgLTc2 LDExNCArNzUsODkgQEAgY2hlY2tfYm8oaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90 IHZhbCkKIAogc3RhdGljIHZvaWQgcnVuX3Rlc3QgKGludCBmZCwgaW50IGNvdW50KQogewotCWRy bV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo OworCXN0cnVjdCBidWZfb3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCXVpbnQz Ml90ICpzdGFydF92YWw7Ci0JZHJtX2ludGVsX2JvICoqYm87CisJc3RydWN0IGludGVsX2J1ZiAq YnVmczsKIAl1aW50MzJfdCBzdGFydCA9IDA7CiAJaW50IGksIGo7CiAKIAlyZW5kZXJfY29weSA9 IGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKIAlpZ3Rf cmVxdWlyZShyZW5kZXJfY29weSk7CiAKLQlidWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9p bml0KGZkLCA0MDk2KTsKLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJ1Zm1nciwg aW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOworCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShmZCk7CisJ aWJiID0gaW50ZWxfYmJfY3JlYXRlKGZkLCA0MDk2KTsKIAotCWJvID0gbWFsbG9jKHNpemVvZigq Ym8pKmNvdW50KTsKKwlidWZzID0gbWFsbG9jKHNpemVvZigqYnVmcykqY291bnQpOwogCXN0YXJ0 X3ZhbCA9IG1hbGxvYyhzaXplb2YoKnN0YXJ0X3ZhbCkqY291bnQpOwogCiAJZm9yIChpID0gMDsg aSA8IGNvdW50OyBpKyspIHsKLQkJYm9baV0gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAi IiwgU0laRSwgNDA5Nik7CisJCWludGVsX2J1Zl9pbml0KGJvcHMsICZidWZzW2ldLCBXSURUSCwg SEVJR0hULCAzMiwgMCwKKwkJCSAgICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNT SU9OX05PTkUpOwogCQlzdGFydF92YWxbaV0gPSBzdGFydDsKIAkJZm9yIChqID0gMDsgaiA8IFdJ RFRIKkhFSUdIVDsgaisrKQogCQkJbGluZWFyW2pdID0gc3RhcnQrKzsKLQkJZ2VtX3dyaXRlKGZk LCBib1tpXS0+aGFuZGxlLCAwLCBsaW5lYXIsIHNpemVvZihsaW5lYXIpKTsKKwkJZ2VtX3dyaXRl KGZkLCBidWZzW2ldLmhhbmRsZSwgMCwgbGluZWFyLCBzaXplb2YobGluZWFyKSk7CiAJfQogCiAJ aWd0X2luZm8oIlZlcmlmeWluZyBpbml0aWFsaXNhdGlvbiAtICVkIGJ1ZmZlcnMgb2YgJWQgYnl0 ZXNcbiIsIGNvdW50LCBTSVpFKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hl Y2tfYm8oZmQsIGJvW2ldLT5oYW5kbGUsIHN0YXJ0X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihmZCwg YnVmc1tpXS5oYW5kbGUsIHN0YXJ0X3ZhbFtpXSk7CiAKIAlpZ3RfaW5mbygiQ3ljbGljIGJsaXRz LCBmb3J3YXJkLi4uXG4iKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQgKiA0OyBpKyspIHsKLQkJ c3RydWN0IGlndF9idWYgc3JjID0ge30sIGRzdCA9IHt9OworCQlzdHJ1Y3QgaW50ZWxfYnVmICpz cmMsICpkc3Q7CiAKLQkJc3JjLmJvID0gYm9baSAlIGNvdW50XTsKLQkJc3JjLnN1cmZhY2VbMF0u c3RyaWRlID0gU1RSSURFOwotCQlzcmMudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKLQkJc3Jj LnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JCXNyYy5icHAgPSAzMjsKKwkJc3JjID0gJmJ1ZnNb aSAlIGNvdW50XTsKKwkJZHN0ID0gJmJ1ZnNbKGkgKyAxKSAlIGNvdW50XTsKIAotCQlkc3QuYm8g PSBib1soaSArIDEpICUgY291bnRdOwotCQlkc3Quc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7 Ci0JCWRzdC50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwotCQlkc3Quc3VyZmFjZVswXS5zaXpl ID0gU0laRTsKLQkJZHN0LmJwcCA9IDMyOwotCi0JCXJlbmRlcl9jb3B5KGJhdGNoLCBOVUxMLCAm c3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULCAmZHN0LCAwLCAwKTsKKwkJcmVuZGVyX2NvcHkoaWJi LCAwLCBzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsIGRzdCwgMCwgMCk7CiAJCXN0YXJ0X3ZhbFso aSArIDEpICUgY291bnRdID0gc3RhcnRfdmFsW2kgJSBjb3VudF07CiAJfQorCiAJZm9yIChpID0g MDsgaSA8IGNvdW50OyBpKyspCi0JCWNoZWNrX2JvKGZkLCBib1tpXS0+aGFuZGxlLCBzdGFydF92 YWxbaV0pOworCQljaGVja19idWYoZmQsIGJ1ZnNbaV0uaGFuZGxlLCBzdGFydF92YWxbaV0pOwog CiAJaWYgKGlndF9ydW5faW5fc2ltdWxhdGlvbigpKQogCQlyZXR1cm47CiAKIAlpZ3RfaW5mbygi Q3ljbGljIGJsaXRzLCBiYWNrd2FyZC4uLlxuIik7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50ICog NDsgaSsrKSB7Ci0JCXN0cnVjdCBpZ3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKKwkJc3RydWN0 IGludGVsX2J1ZiAqc3JjLCAqZHN0OwogCi0JCXNyYy5ibyA9IGJvWyhpICsgMSkgJSBjb3VudF07 Ci0JCXNyYy5zdXJmYWNlWzBdLnN0cmlkZSA9IFNUUklERTsKLQkJc3JjLnRpbGluZyA9IEk5MTVf VElMSU5HX05PTkU7Ci0JCXNyYy5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwotCQlzcmMuYnBwID0g MzI7CisJCXNyYyA9ICZidWZzWyhpICsgMSkgJSBjb3VudF07CisJCWRzdCA9ICZidWZzW2kgJSBj b3VudF07CiAKLQkJZHN0LmJvID0gYm9baSAlIGNvdW50XTsKLQkJZHN0LnN1cmZhY2VbMF0uc3Ry aWRlID0gU1RSSURFOwotCQlkc3QudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKLQkJZHN0LnN1 cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JCWRzdC5icHAgPSAzMjsKLQotCQlyZW5kZXJfY29weShi YXRjaCwgTlVMTCwgJnNyYywgMCwgMCwgV0lEVEgsIEhFSUdIVCwgJmRzdCwgMCwgMCk7CisJCXJl bmRlcl9jb3B5KGliYiwgMCwgc3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULCBkc3QsIDAsIDApOwog CQlzdGFydF92YWxbaSAlIGNvdW50XSA9IHN0YXJ0X3ZhbFsoaSArIDEpICUgY291bnRdOwogCX0K IAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tfYm8oZmQsIGJvW2ldLT5oYW5k bGUsIHN0YXJ0X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihmZCwgYnVmc1tpXS5oYW5kbGUsIHN0YXJ0 X3ZhbFtpXSk7CiAKIAlpZ3RfaW5mbygiUmFuZG9tIGJsaXRzLi4uXG4iKTsKIAlmb3IgKGkgPSAw OyBpIDwgY291bnQgKiA0OyBpKyspIHsKLQkJc3RydWN0IGlndF9idWYgc3JjID0ge30sIGRzdCA9 IHt9OworCQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsICpkc3Q7CiAJCWludCBzID0gcmFuZG9tKCkg JSBjb3VudDsKIAkJaW50IGQgPSByYW5kb20oKSAlIGNvdW50OwogCiAJCWlmIChzID09IGQpCiAJ CQljb250aW51ZTsKIAotCQlzcmMuYm8gPSBib1tzXTsKLQkJc3JjLnN1cmZhY2VbMF0uc3RyaWRl ID0gU1RSSURFOwotCQlzcmMudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKLQkJc3JjLnN1cmZh Y2VbMF0uc2l6ZSA9IFNJWkU7Ci0JCXNyYy5icHAgPSAzMjsKLQotCQlkc3QuYm8gPSBib1tkXTsK LQkJZHN0LnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwotCQlkc3QudGlsaW5nID0gSTkxNV9U SUxJTkdfTk9ORTsKLQkJZHN0LnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JCWRzdC5icHAgPSAz MjsKKwkJc3JjID0gJmJ1ZnNbc107CisJCWRzdCA9ICZidWZzW2RdOwogCi0JCXJlbmRlcl9jb3B5 KGJhdGNoLCBOVUxMLCAmc3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULCAmZHN0LCAwLCAwKTsKKwkJ cmVuZGVyX2NvcHkoaWJiLCAwLCBzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsIGRzdCwgMCwgMCk7 CiAJCXN0YXJ0X3ZhbFtkXSA9IHN0YXJ0X3ZhbFtzXTsKIAl9CiAJZm9yIChpID0gMDsgaSA8IGNv dW50OyBpKyspCi0JCWNoZWNrX2JvKGZkLCBib1tpXS0+aGFuZGxlLCBzdGFydF92YWxbaV0pOwor CQljaGVja19idWYoZmQsIGJ1ZnNbaV0uaGFuZGxlLCBzdGFydF92YWxbaV0pOwogCiAJLyogcmVs ZWFzZSByZXNvdXJjZXMgKi8KLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQlkcm1f aW50ZWxfYm9fdW5yZWZlcmVuY2UoYm9baV0pOwotCX0KLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVl KGJhdGNoKTsKLQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYnVmbWdyKTsKKwlmb3IgKGkgPSAw OyBpIDwgY291bnQ7IGkrKykKKwkJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsICZidWZzW2ldKTsKKwlm cmVlKGJ1ZnMpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKKwlidWZfb3BzX2Rlc3Ryb3koYm9w cyk7CiB9CiAKIGlndF9tYWluCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfdGls ZWRfYmxpdHMuYyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl90aWxlZF9ibGl0cy5jCmluZGV4IGJk NzYwNjZhLi4wZDgzYTQzZSAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX3RpbGVk X2JsaXRzLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX3RpbGVkX2JsaXRzLmMKQEAgLTQy LDEyICs0MiwxMiBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4K ICNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAKICNpbmNsdWRl IDxkcm0uaD4KIAogI2luY2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCi0jaW5j bHVkZSAiaW50ZWxfYnVmbWdyLmgiCiAKICNkZWZpbmUgV0lEVEggNTEyCiAjZGVmaW5lIFNUUklE RSAoV0lEVEgqNCkKQEAgLTU1LDI5ICs1NSwyNiBAQAogI2RlZmluZSBTSVpFIChIRUlHSFQqU1RS SURFKQogCiBzdGF0aWMgaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcl9jb3B5Owotc3RhdGlj IGRybV9pbnRlbF9ibyAqbGluZWFyOworc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgbGluZWFyOwog c3RhdGljIHVpbnQzMl90IGRhdGFbV0lEVEgqSEVJR0hUXTsKIHN0YXRpYyBpbnQgc25vb3A7CiAK IHN0YXRpYyB2b2lkCi1jaGVja19ibyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCBz dHJ1Y3QgaWd0X2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCitjaGVja19idWYoc3RydWN0IGludGVs X2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCXN0cnVj dCBpZ3RfYnVmIHRtcCA9IHt9OworCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQobGluZWFyLmJv cHMpOwogCXVpbnQzMl90ICpwdHI7CiAJaW50IGk7CiAKLQl0bXAuYm8gPSBsaW5lYXI7Ci0JdG1w LnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwotCXRtcC50aWxpbmcgPSBJOTE1X1RJTElOR19O T05FOwotCXRtcC5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwotCXRtcC5icHAgPSAzMjsKKwlyZW5k ZXJfY29weShpYmIsIDAsIGJ1ZiwgMCwgMCwgV0lEVEgsIEhFSUdIVCwgJmxpbmVhciwgMCwgMCk7 CisJaW50ZWxfYmJfc3luYyhpYmIpOwogCi0JcmVuZGVyX2NvcHkoYmF0Y2gsIE5VTEwsIGJ1Ziwg MCwgMCwgV0lEVEgsIEhFSUdIVCwgJnRtcCwgMCwgMCk7CiAJaWYgKHNub29wKSB7Ci0JCWRvX29y X2RpZShkcm1faW50ZWxfYm9fbWFwKGxpbmVhciwgMCkpOwotCQlwdHIgPSBsaW5lYXItPnZpcnR1 YWw7CisJCXB0ciA9IGdlbV9tbWFwX19jcHVfY29oZXJlbnQoaTkxNSwgbGluZWFyLmhhbmRsZSwg MCwKKwkJCQkJICAgICBsaW5lYXIuc3VyZmFjZVswXS5zaXplLCBQUk9UX1JFQUQpOworCQlnZW1f c2V0X2RvbWFpbihpOTE1LCBsaW5lYXIuaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsK IAl9IGVsc2UgewotCQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX2dldF9zdWJkYXRhKGxpbmVhciwg MCwgc2l6ZW9mKGRhdGEpLCBkYXRhKSk7CisJCWdlbV9yZWFkKGk5MTUsIGxpbmVhci5oYW5kbGUs IDAsIGRhdGEsIHNpemVvZihkYXRhKSk7CiAJCXB0ciA9IGRhdGE7CiAJfQogCWZvciAoaSA9IDA7 IGkgPCBXSURUSCpIRUlHSFQ7IGkrKykgewpAQCAtODgsMTUgKzg1LDE1IEBAIGNoZWNrX2JvKHN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHN0cnVjdCBpZ3RfYnVmICpidWYsIHVpbnQz Ml90IHZhbCkKIAkJdmFsKys7CiAJfQogCWlmIChwdHIgIT0gZGF0YSkKLQkJZHJtX2ludGVsX2Jv X3VubWFwKGxpbmVhcik7CisJCW11bm1hcChwdHIsIGxpbmVhci5zdXJmYWNlWzBdLnNpemUpOwog fQogCiBzdGF0aWMgdm9pZCBydW5fdGVzdCAoaW50IGZkLCBpbnQgY291bnQpCiB7Ci0JZHJtX2lu dGVsX2J1Zm1nciAqYnVmbWdyOwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7CisJ c3RydWN0IGJ1Zl9vcHMgKmJvcHM7CisJc3RydWN0IGludGVsX2JiICppYmI7CiAJdWludDMyX3Qg KnN0YXJ0X3ZhbDsKLQlzdHJ1Y3QgaWd0X2J1ZiAqYnVmOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1 ZnM7CiAJdWludDMyX3Qgc3RhcnQgPSAwOwogCWludCBpLCBqOwogCXVpbnQzMl90IGRldmlkOwpA QCAtMTEyLDY2ICsxMDksNjcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QgKGludCBmZCwgaW50IGNv dW50KQogCWlmIChJU19CUk9BRFdBVEVSKGRldmlkKSB8fCBJU19DUkVTVExJTkUoZGV2aWQpKSAv KiBzbmFmdSAqLwogCQlzbm9vcCA9IDA7CiAKLQlidWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dl bV9pbml0KGZkLCA0MDk2KTsKLQlkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfdm1hX2NhY2hlX3Np emUoYnVmbWdyLCAzMik7Ci0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3Is IGRldmlkKTsKKwlib3BzID0gYnVmX29wc19jcmVhdGUoZmQpOworCWliYiA9IGludGVsX2JiX2Ny ZWF0ZShmZCwgNDA5Nik7CiAKLQlsaW5lYXIgPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAi bGluZWFyIiwgV0lEVEgqSEVJR0hUKjQsIDApOworCWludGVsX2J1Zl9pbml0KGJvcHMsICZsaW5l YXIsIFdJRFRILCBIRUlHSFQsIDMyLCAwLAorCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkx NV9DT01QUkVTU0lPTl9OT05FKTsKIAlpZiAoc25vb3ApIHsKLQkJZ2VtX3NldF9jYWNoaW5nKGZk LCBsaW5lYXItPmhhbmRsZSwgMSk7CisJCWdlbV9zZXRfY2FjaGluZyhmZCwgbGluZWFyLmhhbmRs ZSwgMSk7CiAJCWlndF9pbmZvKCJVc2luZyBhIHNub29wIGxpbmVhciBidWZmZXIgZm9yIGNvbXBh cmlzb25zXG4iKTsKIAl9CiAKLQlidWYgPSBjYWxsb2Moc2l6ZW9mKCpidWYpLCBjb3VudCk7CisJ YnVmcyA9IGNhbGxvYyhzaXplb2YoKmJ1ZnMpLCBjb3VudCk7CiAJc3RhcnRfdmFsID0gbWFsbG9j KHNpemVvZigqc3RhcnRfdmFsKSpjb3VudCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr KykgewogCQl1aW50MzJfdCB0aWxpbmcgPSBJOTE1X1RJTElOR19YICsgKHJhbmRvbSgpICYgMSk7 Ci0JCXVuc2lnbmVkIGxvbmcgcGl0Y2ggPSBTVFJJREU7CiAJCXVpbnQzMl90ICpwdHI7CiAKLQkJ YnVmW2ldLmJvID0gZHJtX2ludGVsX2JvX2FsbG9jX3RpbGVkKGJ1Zm1nciwgIiIsCi0JCQkJCQkg ICAgIFdJRFRILCBIRUlHSFQsIDQsCi0JCQkJCQkgICAgICZ0aWxpbmcsICZwaXRjaCwgMCk7Ci0J CWJ1ZltpXS5zdXJmYWNlWzBdLnN0cmlkZSA9IHBpdGNoOwotCQlidWZbaV0udGlsaW5nID0gdGls aW5nOwotCQlidWZbaV0uc3VyZmFjZVswXS5zaXplID0gU0laRTsKLQkJYnVmW2ldLmJwcCA9IDMy OwotCisJCWludGVsX2J1Zl9pbml0KGJvcHMsICZidWZzW2ldLCBXSURUSCwgSEVJR0hULCAzMiwg MCwKKwkJCSAgICAgICB0aWxpbmcsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAJCXN0YXJ0X3Zh bFtpXSA9IHN0YXJ0OwogCi0JCWRvX29yX2RpZShkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYnVm W2ldLmJvKSk7Ci0JCXB0ciA9IGJ1ZltpXS5iby0+dmlydHVhbDsKKwkJcHRyID0gZ2VtX21tYXBf X2d0dChmZCwgYnVmc1tpXS5oYW5kbGUsCisJCQkJICAgIGJ1ZnNbaV0uc3VyZmFjZVswXS5zaXpl LCBQUk9UX1dSSVRFKTsKKwkJZ2VtX3NldF9kb21haW4oZmQsIGJ1ZnNbaV0uaGFuZGxlLAorCQkJ ICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwogCQlmb3Ig KGogPSAwOyBqIDwgV0lEVEgqSEVJR0hUOyBqKyspCiAJCQlwdHJbal0gPSBzdGFydCsrOwotCQlk cm1faW50ZWxfZ2VtX2JvX3VubWFwX2d0dChidWZbaV0uYm8pOworCisJCW11bm1hcChwdHIsIGJ1 ZnNbaV0uc3VyZmFjZVswXS5zaXplKTsKIAl9CiAKIAlpZ3RfaW5mbygiVmVyaWZ5aW5nIGluaXRp YWxpc2F0aW9uLi4uXG4iKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tf Ym8oYmF0Y2gsICZidWZbaV0sIHN0YXJ0X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihpYmIsICZidWZz W2ldLCBzdGFydF92YWxbaV0pOwogCiAJaWd0X2luZm8oIkN5Y2xpYyBibGl0cywgZm9yd2FyZC4u LlxuIik7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50ICogNDsgaSsrKSB7CiAJCWludCBzcmMgPSBp ICUgY291bnQ7CiAJCWludCBkc3QgPSAoaSArIDEpICUgY291bnQ7CiAKLQkJcmVuZGVyX2NvcHko YmF0Y2gsIE5VTEwsIGJ1ZitzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsIGJ1Zitkc3QsIDAsIDAp OworCQlyZW5kZXJfY29weShpYmIsIDAsICZidWZzW3NyY10sIDAsIDAsIFdJRFRILCBIRUlHSFQs CisJCQkgICAgJmJ1ZnNbZHN0XSwgMCwgMCk7CiAJCXN0YXJ0X3ZhbFtkc3RdID0gc3RhcnRfdmFs W3NyY107CiAJfQorCWludGVsX2JiX3N5bmMoaWJiKTsKKwogCWZvciAoaSA9IDA7IGkgPCBjb3Vu dDsgaSsrKQotCQljaGVja19ibyhiYXRjaCwgJmJ1ZltpXSwgc3RhcnRfdmFsW2ldKTsKKwkJY2hl Y2tfYnVmKGliYiwgJmJ1ZnNbaV0sIHN0YXJ0X3ZhbFtpXSk7CiAKIAlpZ3RfaW5mbygiQ3ljbGlj IGJsaXRzLCBiYWNrd2FyZC4uLlxuIik7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50ICogNDsgaSsr KSB7CiAJCWludCBzcmMgPSAoaSArIDEpICUgY291bnQ7CiAJCWludCBkc3QgPSBpICUgY291bnQ7 CiAKLQkJcmVuZGVyX2NvcHkoYmF0Y2gsIE5VTEwsIGJ1ZitzcmMsIDAsIDAsIFdJRFRILCBIRUlH SFQsIGJ1Zitkc3QsIDAsIDApOworCQlyZW5kZXJfY29weShpYmIsIDAsICZidWZzW3NyY10sIDAs IDAsIFdJRFRILCBIRUlHSFQsCisJCQkgICAgJmJ1ZnNbZHN0XSwgMCwgMCk7CiAJCXN0YXJ0X3Zh bFtkc3RdID0gc3RhcnRfdmFsW3NyY107CiAJfQorCWludGVsX2JiX3N5bmMoaWJiKTsKIAlmb3Ig KGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tfYm8oYmF0Y2gsICZidWZbaV0sIHN0YXJ0 X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihpYmIsICZidWZzW2ldLCBzdGFydF92YWxbaV0pOwogCiAJ aWd0X2luZm8oIlJhbmRvbSBibGl0cy4uLlxuIik7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50ICog NDsgaSsrKSB7CkBAIC0xODEsMTkgKzE3OSwyMiBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdCAoaW50 IGZkLCBpbnQgY291bnQpCiAJCWlmIChzcmMgPT0gZHN0KQogCQkJY29udGludWU7CiAKLQkJcmVu ZGVyX2NvcHkoYmF0Y2gsIE5VTEwsIGJ1ZitzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsIGJ1Zitk c3QsIDAsIDApOworCQlyZW5kZXJfY29weShpYmIsIDAsICZidWZzW3NyY10sIDAsIDAsIFdJRFRI LCBIRUlHSFQsCisJCQkgICAgJmJ1ZnNbZHN0XSwgMCwgMCk7CiAJCXN0YXJ0X3ZhbFtkc3RdID0g c3RhcnRfdmFsW3NyY107CiAJfQorCWludGVsX2JiX3N5bmMoaWJiKTsKKwogCWZvciAoaSA9IDA7 IGkgPCBjb3VudDsgaSsrKQotCQljaGVja19ibyhiYXRjaCwgJmJ1ZltpXSwgc3RhcnRfdmFsW2ld KTsKKwkJY2hlY2tfYnVmKGliYiwgJmJ1ZnNbaV0sIHN0YXJ0X3ZhbFtpXSk7CiAKIAkvKiByZWxl YXNlIHJlc291cmNlcyAqLwotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShsaW5lYXIpOworCWlu dGVsX2J1Zl9jbG9zZShib3BzLCAmbGluZWFyKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr KykgewotCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYnVmW2ldLmJvKTsKKwkJaW50ZWxfYnVm X2Nsb3NlKGJvcHMsICZidWZzW2ldKTsKIAl9Ci0JaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRj aCk7Ci0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisJaW50ZWxfYmJfZGVzdHJv eShpYmIpOworCWJ1Zl9vcHNfZGVzdHJveShib3BzKTsKIH0KIAogCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9zdHJlc3MuYyBiL3Rlc3RzL2k5MTUvZ2VtX3N0cmVzcy5jCmluZGV4IDUwMjQ1 YjkzLi4wZDUxMzcwOSAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMKKysrIGIv dGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMKQEAgLTYyLDggKzYyLDYgQEAKIAogI2luY2x1ZGUgPGRy bS5oPgogCi0jaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCi0KIElHVF9URVNUX0RFU0NSSVBUSU9O KCJHZW5lcmFsIGdlbSBjb2hlcmVuY3kgdGVzdC4iKTsKIAogI2RlZmluZSBDTURfUE9MWV9TVElQ UExFX09GRlNFVCAgICAgICAweDc5MDYKQEAgLTg0LDEzICs4MiwxMyBAQCBJR1RfVEVTVF9ERVND UklQVElPTigiR2VuZXJhbCBnZW0gY29oZXJlbmN5IHRlc3QuIik7CiAgKiAgIGZpcnN0IG9uZSAo dG8gY2hlY2sgY29uc2lzdGVuY3kgb2YgdGhlIGtlcm5lbCByZWNvdmVyeSBwYXRocykKICAqLwog Ci1kcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Ci1zdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJh dGNoOworc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CitzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKIGludCBk cm1fZmQ7CiBpbnQgZGV2aWQ7CiBpbnQgbnVtX2ZlbmNlczsKIAotZHJtX2ludGVsX2JvICpidXN5 X2JvOworc3RydWN0IGludGVsX2J1ZiBidXN5X2JvOwogCiBzdHJ1Y3Qgb3B0aW9uX3N0cnVjdCB7 CiAgICAgdW5zaWduZWQgc2NyYXRjaF9idWZfc2l6ZTsKQEAgLTEzNiw3ICsxMzQsNyBAQCBzdHJ1 Y3Qgb3B0aW9uX3N0cnVjdCBvcHRpb25zID0gewogCS5jaGVja19yZW5kZXJfY3B5Zm4gPSAwLAog fTsKIAotc3RhdGljIHN0cnVjdCBpZ3RfYnVmIGJ1ZmZlcnNbMl1bTUFYX0JVRlNdOworc3RhdGlj IHN0cnVjdCBpbnRlbF9idWYgYnVmZmVyc1syXVtNQVhfQlVGU107CiAvKiB0aWxlIGkgaXMgYXQg bG9naWNhbCBwb3NpdGlvbiB0aWxlX3Blcm11dGF0aW9uW2ldICovCiBzdGF0aWMgdW5zaWduZWQg KnRpbGVfcGVybXV0YXRpb247CiBzdGF0aWMgdW5zaWduZWQgbnVtX2J1ZmZlcnMgPSAwOwpAQCAt MTUyLDE2ICsxNTAsMTYgQEAgc3RydWN0IHsKIAl1bnNpZ25lZCBtYXhfZmFpbGVkX3JlYWRzOwog fSBzdGF0czsKIAotc3RhdGljIHZvaWQgdGlsZTJ4eShzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCB1bnNp Z25lZCB0aWxlLCB1bnNpZ25lZCAqeCwgdW5zaWduZWQgKnkpCitzdGF0aWMgdm9pZCB0aWxlMnh5 KHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdW5zaWduZWQgdGlsZSwgdW5zaWduZWQgKngsIHVuc2ln bmVkICp5KQogewotCWlndF9hc3NlcnQodGlsZSA8IGJ1Zi0+bnVtX3RpbGVzKTsKKwlpZ3RfYXNz ZXJ0KHRpbGUgPCBvcHRpb25zLnRpbGVzX3Blcl9idWYpOwogCSp4ID0gKHRpbGUqb3B0aW9ucy50 aWxlX3NpemUpICUgKGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSk7CiAJ KnkgPSAoKHRpbGUqb3B0aW9ucy50aWxlX3NpemUpIC8gKGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUv c2l6ZW9mKHVpbnQzMl90KSkpICogb3B0aW9ucy50aWxlX3NpemU7CiB9CiAKLXN0YXRpYyB2b2lk IGVtaXRfYmx0KGRybV9pbnRlbF9ibyAqc3JjX2JvLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1bnNp Z25lZCBzcmNfcGl0Y2gsCitzdGF0aWMgdm9pZCBlbWl0X2JsdChzdHJ1Y3QgaW50ZWxfYnVmICpz cmMsIHVpbnQzMl90IHNyY190aWxpbmcsIHVuc2lnbmVkIHNyY19waXRjaCwKIAkJICAgICB1bnNp Z25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksIHVuc2lnbmVkIHcsIHVuc2lnbmVkIGgsCi0JCSAg ICAgZHJtX2ludGVsX2JvICpkc3RfYm8sIHVpbnQzMl90IGRzdF90aWxpbmcsIHVuc2lnbmVkIGRz dF9waXRjaCwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsIHVpbnQzMl90IGRzdF90aWxp bmcsIHVuc2lnbmVkIGRzdF9waXRjaCwKIAkJICAgICB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQg ZHN0X3kpCiB7CiAJdWludDMyX3QgY21kX2JpdHMgPSAwOwpAQCAtMTc3LDI0ICsxNzUsMjYgQEAg c3RhdGljIHZvaWQgZW1pdF9ibHQoZHJtX2ludGVsX2JvICpzcmNfYm8sIHVpbnQzMl90IHNyY190 aWxpbmcsIHVuc2lnbmVkIHNyY19waXQKIAl9CiAKIAkvKiBjb3B5IGxvd2VyIGhhbGYgdG8gdXBw ZXIgaGFsZiAqLwotCUJMSVRfQ09QWV9CQVRDSF9TVEFSVChjbWRfYml0cyk7Ci0JT1VUX0JBVENI KCgzIDw8IDI0KSB8IC8qIDMyIGJpdHMgKi8KLQkJICAoMHhjYyA8PCAxNikgfCAvKiBjb3B5IFJP UCAqLwotCQkgIGRzdF9waXRjaCk7Ci0JT1VUX0JBVENIKGRzdF95IDw8IDE2IHwgZHN0X3gpOwot CU9VVF9CQVRDSCgoZHN0X3kraCkgPDwgMTYgfCAoZHN0X3grdykpOwotCU9VVF9SRUxPQ19GRU5D RUQoZHN0X2JvLCBJOTE1X0dFTV9ET01BSU5fUkVOREVSLCBJOTE1X0dFTV9ET01BSU5fUkVOREVS LCAwKTsKLQlPVVRfQkFUQ0goc3JjX3kgPDwgMTYgfCBzcmNfeCk7Ci0JT1VUX0JBVENIKHNyY19w aXRjaCk7Ci0JT1VUX1JFTE9DX0ZFTkNFRChzcmNfYm8sIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIs IDAsIDApOwotCUFEVkFOQ0VfQkFUQ0goKTsKLQotCWlmIChiYXRjaC0+Z2VuID49IDYpIHsKLQkJ QkVHSU5fQkFUQ0goMywgMCk7Ci0JCU9VVF9CQVRDSChYWV9TRVRVUF9DTElQX0JMVF9DTUQpOwot CQlPVVRfQkFUQ0goMCk7Ci0JCU9VVF9CQVRDSCgwKTsKLQkJQURWQU5DRV9CQVRDSCgpOworCWlu dGVsX2JiX2JsaXRfc3RhcnQoaWJiLCBjbWRfYml0cyk7CisJaW50ZWxfYmJfb3V0KGliYiwgKDMg PDwgMjQpIHwgLyogMzIgYml0cyAqLworCQkgICAgICgweGNjIDw8IDE2KSB8IC8qIGNvcHkgUk9Q ICovCisJCSAgICAgZHN0X3BpdGNoKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCBkc3RfeSA8PCAxNiB8 IGRzdF94KTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAoZHN0X3kraCkgPDwgMTYgfCAoZHN0X3grdykp OworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2VkKGliYiwgZHN0LT5oYW5kbGUsCisJCQkJICAg STkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKKwkJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAor CQkJCSAgIDAsIGRzdC0+YWRkci5vZmZzZXQpOworCWludGVsX2JiX291dChpYmIsIHNyY195IDw8 IDE2IHwgc3JjX3gpOworCWludGVsX2JiX291dChpYmIsIHNyY19waXRjaCk7CisJaW50ZWxfYmJf ZW1pdF9yZWxvY19mZW5jZWQoaWJiLCBzcmMtPmhhbmRsZSwKKwkJCQkgICBJOTE1X0dFTV9ET01B SU5fUkVOREVSLCAwLAorCQkJCSAgIDAsIHNyYy0+YWRkci5vZmZzZXQpOworCisJaWYgKGliYi0+ Z2VuID49IDYpIHsKKwkJaW50ZWxfYmJfb3V0KGliYiwgWFlfU0VUVVBfQ0xJUF9CTFRfQ01EKTsK KwkJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJCWludGVsX2JiX291dChpYmIsIDApOwogCX0KIH0K IApAQCAtMjA3LDE5ICsyMDcsMjUgQEAgc3RhdGljIHZvaWQga2VlcF9ncHVfYnVzeSh2b2lkKQog CXRtcCA9IDEgPDwgZ3B1X2J1c3lfbG9hZDsKIAlpZ3RfYXNzZXJ0X2x0ZSh0bXAsIDEwMjQpOwog Ci0JZW1pdF9ibHQoYnVzeV9ibywgMCwgNDA5NiwgMCwgMCwgdG1wLCAxMjgsCi0JCSBidXN5X2Jv LCAwLCA0MDk2LCAwLCAxMjgpOworCWVtaXRfYmx0KCZidXN5X2JvLCAwLCA0MDk2LCAwLCAwLCB0 bXAsIDEyOCwKKwkJICZidXN5X2JvLCAwLCA0MDk2LCAwLCAxMjgpOwogfQogCi1zdGF0aWMgdm9p ZCBzZXRfdG9fY3B1X2RvbWFpbihzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCBpbnQgd3JpdGluZykKK3N0 YXRpYyB2b2lkIHNldF90b19jcHVfZG9tYWluKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgaW50IHdy aXRpbmcpCiB7Ci0JZ2VtX3NldF9kb21haW4oZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsIEk5MTVf R0VNX0RPTUFJTl9DUFUsCisJZ2VtX3NldF9kb21haW4oZHJtX2ZkLCBidWYtPmhhbmRsZSwgSTkx NV9HRU1fRE9NQUlOX0NQVSwKIAkJICAgICAgIHdyaXRpbmcgPyBJOTE1X0dFTV9ET01BSU5fQ1BV IDogMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldF90b19ndHRfZG9tYWluKHN0cnVjdCBpbnRlbF9i dWYgKmJ1ZiwgaW50IHdyaXRpbmcpCit7CisJZ2VtX3NldF9kb21haW4oZHJtX2ZkLCBidWYtPmhh bmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwKKwkJICAgICAgIHdyaXRpbmcgPyBJOTE1X0dFTV9E T01BSU5fR1RUIDogMCk7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29weWZ1bmNfc2VxID0g MDsKLXN0YXRpYyB2b2lkICgqY29weWZ1bmMpKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVk IHNyY194LCB1bnNpZ25lZCBzcmNfeSwKLQkJCXN0cnVjdCBpZ3RfYnVmICpkc3QsIHVuc2lnbmVk IGRzdF94LCB1bnNpZ25lZCBkc3RfeSwKK3N0YXRpYyB2b2lkICgqY29weWZ1bmMpKHN0cnVjdCBp bnRlbF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LAorCQkJc3RydWN0 IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCiAJCQl1bnNp Z25lZCBsb2dpY2FsX3RpbGVfbm8pOwogCiAvKiBzdHJpZGUsIHgsIHkgaW4gdW5pdHMgb2YgdWlu dDMyX3QhICovCkBAIC0yNTQsNTEgKzI2MCw1MyBAQCBzdGF0aWMgdm9pZCBjcHVjcHkyZCh1aW50 MzJfdCAqc3JjLCB1bnNpZ25lZCBzcmNfc3RyaWRlLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZQog CQlzdGF0cy5udW1fZmFpbGVkKys7CiB9CiAKLXN0YXRpYyB2b2lkIGNwdV9jb3B5ZnVuYyhzdHJ1 Y3QgaWd0X2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCi0JCQkgc3Ry dWN0IGlndF9idWYgKmRzdCwgdW5zaWduZWQgZHN0X3gsIHVuc2lnbmVkIGRzdF95LAorc3RhdGlj IHZvaWQgY3B1X2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gs IHVuc2lnbmVkIHNyY195LAorCQkJIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwgdW5zaWduZWQgZHN0 X3gsIHVuc2lnbmVkIGRzdF95LAogCQkJIHVuc2lnbmVkIGxvZ2ljYWxfdGlsZV9ubykKIHsKLQlp Z3RfYXNzZXJ0KGJhdGNoLT5wdHIgPT0gYmF0Y2gtPmJ1ZmZlcik7CisJaWd0X2Fzc2VydChzcmMt PnB0cik7CisJaWd0X2Fzc2VydChkc3QtPnB0cik7CiAKIAlpZiAob3B0aW9ucy5kdWN0dGFwZSkK LQkJZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nKGRzdC0+Ym8pOworCQlzZXRfdG9fZ3R0X2Rv bWFpbihkc3QsIDEpOwogCiAJaWYgKG9wdGlvbnMudXNlX2NwdV9tYXBzKSB7CiAJCXNldF90b19j cHVfZG9tYWluKHNyYywgMCk7CiAJCXNldF90b19jcHVfZG9tYWluKGRzdCwgMSk7CiAJfQogCi0J Y3B1Y3B5MmQoc3JjLT5kYXRhLCBzcmMtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJf dCksIHNyY194LAotCQkgc3JjX3ksCi0JCSBkc3QtPmRhdGEsIGRzdC0+c3VyZmFjZVswXS5zdHJp ZGUvc2l6ZW9mKHVpbnQzMl90KSwgZHN0X3gsCi0JCSBkc3RfeSwKKwljcHVjcHkyZChzcmMtPnB0 ciwgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZS9zaXplb2YodWludDMyX3QpLCBzcmNfeCwgc3JjX3ks CisJCSBkc3QtPnB0ciwgZHN0LT5zdXJmYWNlWzBdLnN0cmlkZS9zaXplb2YodWludDMyX3QpLCBk c3RfeCwgZHN0X3ksCiAJCSBsb2dpY2FsX3RpbGVfbm8pOwogfQogCi1zdGF0aWMgdm9pZCBwcndf Y29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNy Y195LAotCQkJIHN0cnVjdCBpZ3RfYnVmICpkc3QsIHVuc2lnbmVkIGRzdF94LCB1bnNpZ25lZCBk c3RfeSwKK3N0YXRpYyB2b2lkIHByd19jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsIHVu c2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKKwkJCSBzdHJ1Y3QgaW50ZWxfYnVmICpkc3Qs IHVuc2lnbmVkIGRzdF94LCB1bnNpZ25lZCBkc3RfeSwKIAkJCSB1bnNpZ25lZCBsb2dpY2FsX3Rp bGVfbm8pCiB7CiAJdWludDMyX3QgdG1wX3RpbGVbb3B0aW9ucy50aWxlX3NpemUqb3B0aW9ucy50 aWxlX3NpemVdOwogCWludCBpOwogCi0JaWd0X2Fzc2VydChiYXRjaC0+cHRyID09IGJhdGNoLT5i dWZmZXIpOworCWlndF9hc3NlcnQoc3JjLT5wdHIpOworCWlndF9hc3NlcnQoZHN0LT5wdHIpOwor CisJaWd0X2luZm8oInByd1xuIik7CiAKIAlpZiAob3B0aW9ucy5kdWN0dGFwZSkKLQkJZHJtX2lu dGVsX2JvX3dhaXRfcmVuZGVyaW5nKGRzdC0+Ym8pOworCQlzZXRfdG9fZ3R0X2RvbWFpbihkc3Qs IDEpOwogCiAJaWYgKHNyYy0+dGlsaW5nID09IEk5MTVfVElMSU5HX05PTkUpIHsKIAkJZm9yIChp ID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspIHsKIAkJCXVuc2lnbmVkIG9mcyA9IHNy Y194KnNpemVvZih1aW50MzJfdCkgKyBzcmMtPnN1cmZhY2VbMF0uc3RyaWRlKihzcmNfeSArIGkp OwotCQkJZHJtX2ludGVsX2JvX2dldF9zdWJkYXRhKHNyYy0+Ym8sIG9mcywKLQkJCQkJCSBvcHRp b25zLnRpbGVfc2l6ZSpzaXplb2YodWludDMyX3QpLAotCQkJCQkJIHRtcF90aWxlICsgb3B0aW9u cy50aWxlX3NpemUqaSk7CisJCQlnZW1fcmVhZChkcm1fZmQsIHNyYy0+aGFuZGxlLCBvZnMsCisJ CQkJIHRtcF90aWxlICsgb3B0aW9ucy50aWxlX3NpemUqaSwKKwkJCQkgb3B0aW9ucy50aWxlX3Np emUqc2l6ZW9mKHVpbnQzMl90KSk7CiAJCX0KIAl9IGVsc2UgewogCQlpZiAob3B0aW9ucy51c2Vf Y3B1X21hcHMpCiAJCQlzZXRfdG9fY3B1X2RvbWFpbihzcmMsIDApOwogCi0JCWNwdWNweTJkKHNy Yy0+ZGF0YSwgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZS9zaXplb2YodWludDMyX3QpLAorCQljcHVj cHkyZChzcmMtPnB0ciwgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZS9zaXplb2YodWludDMyX3QpLAog CQkJIHNyY194LCBzcmNfeSwKIAkJCSB0bXBfdGlsZSwgb3B0aW9ucy50aWxlX3NpemUsIDAsIDAs IGxvZ2ljYWxfdGlsZV9ubyk7CiAJfQpAQCAtMzA2LDIzICszMTQsMjMgQEAgc3RhdGljIHZvaWQg cHJ3X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25l ZCBzcmNfeSwKIAlpZiAoZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfTk9ORSkgewogCQlmb3Ig KGkgPSAwOyBpIDwgb3B0aW9ucy50aWxlX3NpemU7IGkrKykgewogCQkJdW5zaWduZWQgb2ZzID0g ZHN0X3gqc2l6ZW9mKHVpbnQzMl90KSArIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUqKGRzdF95ICsg aSk7Ci0JCQlkcm1faW50ZWxfYm9fc3ViZGF0YShkc3QtPmJvLCBvZnMsCi0JCQkJCSAgICAgb3B0 aW9ucy50aWxlX3NpemUqc2l6ZW9mKHVpbnQzMl90KSwKLQkJCQkJICAgICB0bXBfdGlsZSArIG9w dGlvbnMudGlsZV9zaXplKmkpOworCQkJZ2VtX3dyaXRlKGRybV9mZCwgZHN0LT5oYW5kbGUsIG9m cywKKwkJCQkgIHRtcF90aWxlICsgb3B0aW9ucy50aWxlX3NpemUqaSwKKwkJCQkgIG9wdGlvbnMu dGlsZV9zaXplKnNpemVvZih1aW50MzJfdCkpOwogCQl9CiAJfSBlbHNlIHsKIAkJaWYgKG9wdGlv bnMudXNlX2NwdV9tYXBzKQogCQkJc2V0X3RvX2NwdV9kb21haW4oZHN0LCAxKTsKIAogCQljcHVj cHkyZCh0bXBfdGlsZSwgb3B0aW9ucy50aWxlX3NpemUsIDAsIDAsCi0JCQkgZHN0LT5kYXRhLCBk c3QtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksCisJCQkgZHN0LT5wdHIsIGRz dC0+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwKIAkJCSBkc3RfeCwgZHN0X3ks CiAJCQkgbG9naWNhbF90aWxlX25vKTsKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGJsaXR0ZXJfY29w eWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195 LAotCQkJICAgICBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQg ZHN0X3ksCitzdGF0aWMgdm9pZCBibGl0dGVyX2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9idWYgKnNy YywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LAorCQkJICAgICBzdHJ1Y3QgaW50ZWxf YnVmICpkc3QsIHVuc2lnbmVkIGRzdF94LCB1bnNpZ25lZCBkc3RfeSwKIAkJCSAgICAgdW5zaWdu ZWQgbG9naWNhbF90aWxlX25vKQogewogCXN0YXRpYyB1bnNpZ25lZCBrZWVwX2dwdV9idXN5X2Nv dW50ZXIgPSAwOwpAQCAtMzMxLDkgKzMzOSw5IEBAIHN0YXRpYyB2b2lkIGJsaXR0ZXJfY29weWZ1 bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195CiAJ aWYgKGtlZXBfZ3B1X2J1c3lfY291bnRlciAmIDEgJiYgIWZlbmNlX3N0b3JtKQogCQlrZWVwX2dw dV9idXN5KCk7CiAKLQllbWl0X2JsdChzcmMtPmJvLCBzcmMtPnRpbGluZywgc3JjLT5zdXJmYWNl WzBdLnN0cmlkZSwgc3JjX3gsIHNyY195LAorCWVtaXRfYmx0KHNyYywgc3JjLT50aWxpbmcsIHNy Yy0+c3VyZmFjZVswXS5zdHJpZGUsIHNyY194LCBzcmNfeSwKIAkJIG9wdGlvbnMudGlsZV9zaXpl LCBvcHRpb25zLnRpbGVfc2l6ZSwKLQkJIGRzdC0+Ym8sIGRzdC0+dGlsaW5nLCBkc3QtPnN1cmZh Y2VbMF0uc3RyaWRlLCBkc3RfeCwgZHN0X3kpOworCQkgZHN0LCBkc3QtPnRpbGluZywgZHN0LT5z dXJmYWNlWzBdLnN0cmlkZSwgZHN0X3gsIGRzdF95KTsKIAogCWlmICghKGtlZXBfZ3B1X2J1c3lf Y291bnRlciAmIDEpICYmICFmZW5jZV9zdG9ybSkKIAkJa2VlcF9ncHVfYnVzeSgpOwpAQCAtMzQ3 LDEyICszNTUsMTIgQEAgc3RhdGljIHZvaWQgYmxpdHRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1 ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3kKIAogCWlmIChmZW5jZV9zdG9y bSA8PSAxKSB7CiAJCWZlbmNlX3N0b3JtID0gMDsKLQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2go YmF0Y2gpOworCQlpbnRlbF9iYl9mbHVzaF9ibGl0KGliYik7CiAJfQogfQogCi1zdGF0aWMgdm9p ZCByZW5kZXJfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVu c2lnbmVkIHNyY195LAotCQkJICAgIHN0cnVjdCBpZ3RfYnVmICpkc3QsIHVuc2lnbmVkIGRzdF94 LCB1bnNpZ25lZCBkc3RfeSwKK3N0YXRpYyB2b2lkIHJlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaW50 ZWxfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKKwkJCSAgICBzdHJ1 Y3QgaW50ZWxfYnVmICpkc3QsIHVuc2lnbmVkIGRzdF94LCB1bnNpZ25lZCBkc3RfeSwKIAkJCSAg ICB1bnNpZ25lZCBsb2dpY2FsX3RpbGVfbm8pCiB7CiAJc3RhdGljIHVuc2lnbmVkIGtlZXBfZ3B1 X2J1c3lfY291bnRlciA9IDA7CkBAIC0zNjcsOCArMzc1LDkgQEAgc3RhdGljIHZvaWQgcmVuZGVy X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBz cmNfeSwKIAkJICogRmx1c2ggb3V0c3RhbmRpbmcgYmx0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgZW5k IHVwIG9uCiAJCSAqIHRoZSByZW5kZXIgcmluZyB3aGVuIHRoYXQncyBub3QgYWxsb3dlZCAoZ2Vu NispLgogCQkgKi8KLQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2goYmF0Y2gpOwotCQlyZW5kZXJj b3B5KGJhdGNoLCBOVUxMLCBzcmMsIHNyY194LCBzcmNfeSwKKwkJaW50ZWxfYmJfZmx1c2hfYmxp dChpYmIpOworCisJCXJlbmRlcmNvcHkoaWJiLCAwLCBzcmMsIHNyY194LCBzcmNfeSwKIAkJICAg ICBvcHRpb25zLnRpbGVfc2l6ZSwgb3B0aW9ucy50aWxlX3NpemUsCiAJCSAgICAgZHN0LCBkc3Rf eCwgZHN0X3kpOwogCX0gZWxzZQpAQCAtMzc5LDcgKzM4OCw3IEBAIHN0YXRpYyB2b2lkIHJlbmRl cl9jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQg c3JjX3ksCiAJCWtlZXBfZ3B1X2J1c3koKTsKIAogCWtlZXBfZ3B1X2J1c3lfY291bnRlcisrOwot CWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJhdGNoKTsKKwlpbnRlbF9iYl9mbHVzaF9ibGl0KGli Yik7CiB9CiAKIHN0YXRpYyB2b2lkIG5leHRfY29weWZ1bmMoaW50IHRpbGUpCkBAIC00NDQsNyAr NDUzLDcgQEAgc3RhdGljIHZvaWQgZmFuX291dCh2b2lkKQogCQkJc2V0X3RvX2NwdV9kb21haW4o JmJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLCAxKTsKIAogCQljcHVjcHkyZCh0bXBfdGls ZSwgb3B0aW9ucy50aWxlX3NpemUsIDAsIDAsCi0JCQkgYnVmZmVyc1tjdXJyZW50X3NldF1bYnVm X2lkeF0uZGF0YSwKKwkJCSBidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4XS5wdHIsCiAJCQkg YnVmZmVyc1tjdXJyZW50X3NldF1bYnVmX2lkeF0uc3VyZmFjZVswXS5zdHJpZGUgLyBzaXplb2Yo dWludDMyX3QpLAogCQkJIHgsIHksIGkpOwogCX0KQEAgLTQ2OCw3ICs0NzcsNyBAQCBzdGF0aWMg dm9pZCBmYW5faW5fYW5kX2NoZWNrKHZvaWQpCiAJCWlmIChvcHRpb25zLnVzZV9jcHVfbWFwcykK IAkJCXNldF90b19jcHVfZG9tYWluKCZidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4XSwgMCk7 CiAKLQkJY3B1Y3B5MmQoYnVmZmVyc1tjdXJyZW50X3NldF1bYnVmX2lkeF0uZGF0YSwKKwkJY3B1 Y3B5MmQoYnVmZmVyc1tjdXJyZW50X3NldF1bYnVmX2lkeF0ucHRyLAogCQkJIGJ1ZmZlcnNbY3Vy cmVudF9zZXRdW2J1Zl9pZHhdLnN1cmZhY2VbMF0uc3RyaWRlIC8gc2l6ZW9mKHVpbnQzMl90KSwK IAkJCSB4LCB5LAogCQkJIHRtcF90aWxlLCBvcHRpb25zLnRpbGVfc2l6ZSwgMCwgMCwKQEAgLTQ3 Niw2MSArNDg1LDU5IEBAIHN0YXRpYyB2b2lkIGZhbl9pbl9hbmRfY2hlY2sodm9pZCkKIAl9CiB9 CiAKLXN0YXRpYyB2b2lkIHNhbml0aXplX3N0cmlkZShzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQorc3Rh dGljIHZvaWQgc2FuaXRpemVfc3RyaWRlKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikKIHsKIAotCWlm IChpZ3RfYnVmX2hlaWdodChidWYpID4gb3B0aW9ucy5tYXhfZGltZW5zaW9uKQorCWlmIChpbnRl bF9idWZfaGVpZ2h0KGJ1ZikgPiBvcHRpb25zLm1heF9kaW1lbnNpb24pCiAJCWJ1Zi0+c3VyZmFj ZVswXS5zdHJpZGUgPSBidWYtPnN1cmZhY2VbMF0uc2l6ZSAvIG9wdGlvbnMubWF4X2RpbWVuc2lv bjsKIAotCWlmIChpZ3RfYnVmX2hlaWdodChidWYpIDwgb3B0aW9ucy50aWxlX3NpemUpCisJaWYg KGludGVsX2J1Zl9oZWlnaHQoYnVmKSA8IG9wdGlvbnMudGlsZV9zaXplKQogCQlidWYtPnN1cmZh Y2VbMF0uc3RyaWRlID0gYnVmLT5zdXJmYWNlWzBdLnNpemUgLyBvcHRpb25zLnRpbGVfc2l6ZTsK IAotCWlmIChpZ3RfYnVmX3dpZHRoKGJ1ZikgPCBvcHRpb25zLnRpbGVfc2l6ZSkKKwlpZiAoaW50 ZWxfYnVmX3dpZHRoKGJ1ZikgPCBvcHRpb25zLnRpbGVfc2l6ZSkKIAkJYnVmLT5zdXJmYWNlWzBd LnN0cmlkZSA9IG9wdGlvbnMudGlsZV9zaXplICogc2l6ZW9mKHVpbnQzMl90KTsKIAogCWlndF9h c3NlcnQoYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA8PSA4MTkyKTsKLQlpZ3RfYXNzZXJ0KGlndF9i dWZfd2lkdGgoYnVmKSA8PSBvcHRpb25zLm1heF9kaW1lbnNpb24pOwotCWlndF9hc3NlcnQoaWd0 X2J1Zl9oZWlnaHQoYnVmKSA8PSBvcHRpb25zLm1heF9kaW1lbnNpb24pOworCWlndF9hc3NlcnQo aW50ZWxfYnVmX3dpZHRoKGJ1ZikgPD0gb3B0aW9ucy5tYXhfZGltZW5zaW9uKTsKKwlpZ3RfYXNz ZXJ0KGludGVsX2J1Zl9oZWlnaHQoYnVmKSA8PSBvcHRpb25zLm1heF9kaW1lbnNpb24pOwogCi0J aWd0X2Fzc2VydChpZ3RfYnVmX3dpZHRoKGJ1ZikgPj0gb3B0aW9ucy50aWxlX3NpemUpOwotCWln dF9hc3NlcnQoaWd0X2J1Zl9oZWlnaHQoYnVmKSA+PSBvcHRpb25zLnRpbGVfc2l6ZSk7CisJaWd0 X2Fzc2VydChpbnRlbF9idWZfd2lkdGgoYnVmKSA+PSBvcHRpb25zLnRpbGVfc2l6ZSk7CisJaWd0 X2Fzc2VydChpbnRlbF9idWZfaGVpZ2h0KGJ1ZikgPj0gb3B0aW9ucy50aWxlX3NpemUpOwogCiB9 CiAKLXN0YXRpYyB2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBpZ3RfYnVmICpidWYsIHVuc2lnbmVk IHNpemUpCitzdGF0aWMgdm9pZCBpbml0X2J1ZmZlcihzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVu c2lnbmVkIHNpemUpCiB7Ci0JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKKwl1aW50MzJf dCBzdHJpZGUsIHdpZHRoLCBoZWlnaHQsIGJwcDsKKworCXN0cmlkZSA9IDQwOTY7CisJYnBwID0g MzI7CisJd2lkdGggPSBzdHJpZGUgLyAoYnBwIC8gOCk7CisJaGVpZ2h0ID0gc2l6ZSAvIHN0cmlk ZTsKIAotCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAidGlsZWQgYm8iLCBz aXplLCA0MDk2KTsKLQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IHNpemU7Ci0JaWd0X2Fzc2VydChi dWYtPmJvKTsKLQlidWYtPnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Ci0JYnVmLT5zdXJmYWNl WzBdLnN0cmlkZSA9IDQwOTY7Ci0JYnVmLT5icHAgPSAzMjsKKwlpbnRlbF9idWZfaW5pdChib3Bz LCBidWYsIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwKKwkJICAgICAgIEk5MTVfVElMSU5HX05PTkUs IEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAKIAlzYW5pdGl6ZV9zdHJpZGUoYnVmKTsKIAogCWlm IChvcHRpb25zLm5vX2h3KQotCQlidWYtPmRhdGEgPSBtYWxsb2Moc2l6ZSk7CisJCWJ1Zi0+cHRy ID0gbWFsbG9jKHNpemUpOwogCWVsc2UgewogCQlpZiAob3B0aW9ucy51c2VfY3B1X21hcHMpCi0J CQlkcm1faW50ZWxfYm9fbWFwKGJ1Zi0+Ym8sIDEpOworCQkJaW50ZWxfYnVmX2NwdV9tYXAoYnVm LCB0cnVlKTsKIAkJZWxzZQotCQkJZHJtX2ludGVsX2dlbV9ib19tYXBfZ3R0KGJ1Zi0+Ym8pOwot CQlidWYtPmRhdGEgPSBidWYtPmJvLT52aXJ0dWFsOworCQkJaW50ZWxfYnVmX2RldmljZV9tYXAo YnVmLCB0cnVlKTsKIAl9Ci0KLQlidWYtPm51bV90aWxlcyA9IG9wdGlvbnMudGlsZXNfcGVyX2J1 ZjsKIH0KIAogc3RhdGljIHZvaWQgZXhjaGFuZ2VfYnVmKHZvaWQgKmFycmF5LCB1bnNpZ25lZCBp LCB1bnNpZ25lZCBqKQogewotCXN0cnVjdCBpZ3RfYnVmICpidWZfYXJyLCB0bXA7CisJc3RydWN0 IGludGVsX2J1ZiAqYnVmX2FyciwgdG1wOwogCWJ1Zl9hcnIgPSBhcnJheTsKIAotCW1lbWNweSgm dG1wLCAmYnVmX2FycltpXSwgc2l6ZW9mKHN0cnVjdCBpZ3RfYnVmKSk7Ci0JbWVtY3B5KCZidWZf YXJyW2ldLCAmYnVmX2FycltqXSwgc2l6ZW9mKHN0cnVjdCBpZ3RfYnVmKSk7Ci0JbWVtY3B5KCZi dWZfYXJyW2pdLCAmdG1wLCBzaXplb2Yoc3RydWN0IGlndF9idWYpKTsKKwltZW1jcHkoJnRtcCwg JmJ1Zl9hcnJbaV0sIHNpemVvZihzdHJ1Y3QgaW50ZWxfYnVmKSk7CisJbWVtY3B5KCZidWZfYXJy W2ldLCAmYnVmX2FycltqXSwgc2l6ZW9mKHN0cnVjdCBpbnRlbF9idWYpKTsKKwltZW1jcHkoJmJ1 Zl9hcnJbal0sICZ0bXAsIHNpemVvZihzdHJ1Y3QgaW50ZWxfYnVmKSk7CiB9CiAKIApAQCAtNTc3 LDcgKzU4NCw3IEBAIHN0YXRpYyB2b2lkIGluaXRfc2V0KHVuc2lnbmVkIHNldCkKIAogCQlzYW5p dGl6ZV9zdHJpZGUoJmJ1ZmZlcnNbc2V0XVtpXSk7CiAKLQkJZ2VtX3NldF90aWxpbmcoZHJtX2Zk LCBidWZmZXJzW3NldF1baV0uYm8tPmhhbmRsZSwKKwkJZ2VtX3NldF90aWxpbmcoZHJtX2ZkLCBi dWZmZXJzW3NldF1baV0uaGFuZGxlLAogCQkJICAgICAgIGJ1ZmZlcnNbc2V0XVtpXS50aWxpbmcs CiAJCQkgICAgICAgYnVmZmVyc1tzZXRdW2ldLnN1cmZhY2VbMF0uc3RyaWRlKTsKIApAQCAtNTk4 LDggKzYwNSw5IEBAIHN0YXRpYyB2b2lkIGNvcHlfdGlsZXModW5zaWduZWQgKnBlcm11dGF0aW9u KQogewogCXVuc2lnbmVkIHNyY190aWxlLCBzcmNfYnVmX2lkeCwgc3JjX3gsIHNyY195OwogCXVu c2lnbmVkIGRzdF90aWxlLCBkc3RfYnVmX2lkeCwgZHN0X3gsIGRzdF95OwotCXN0cnVjdCBpZ3Rf YnVmICpzcmNfYnVmLCAqZHN0X2J1ZjsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpzcmNfYnVmLCAqZHN0 X2J1ZjsKIAlpbnQgaSwgaWR4OworCiAJZm9yIChpID0gMDsgaSA8IG51bV90b3RhbF90aWxlczsg aSsrKSB7CiAJCS8qIHRpbGVfcGVybXV0YXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgY3VycmVudF9w ZXJtdXRhdGlvbiwgc28KIAkJICogYWJ1c2UgaXQgdG8gcmFuZG9taXplIHRoZSBvcmRlciBvZiB0 aGUgc3JjIGJvcyAqLwpAQCAtNjIwLDEwICs2MjgsMTAgQEAgc3RhdGljIHZvaWQgY29weV90aWxl cyh1bnNpZ25lZCAqcGVybXV0YXRpb24pCiAJCQlpZ3RfaW5mbygiY29weWluZyB0aWxlICVpIGZy b20gJWkgKCVpLCAlaSkgdG8gJWkgKCVpLCAlaSkiLCBpLCB0aWxlX3Blcm11dGF0aW9uW2ldLCBz cmNfYnVmX2lkeCwgc3JjX3RpbGUsIHBlcm11dGF0aW9uW2lkeF0sIGRzdF9idWZfaWR4LCBkc3Rf dGlsZSk7CiAKIAkJaWYgKG9wdGlvbnMubm9faHcpIHsKLQkJCWNwdWNweTJkKHNyY19idWYtPmRh dGEsCisJCQljcHVjcHkyZChzcmNfYnVmLT5wdHIsCiAJCQkJIHNyY19idWYtPnN1cmZhY2VbMF0u c3RyaWRlIC8gc2l6ZW9mKHVpbnQzMl90KSwKIAkJCQkgc3JjX3gsIHNyY195LAotCQkJCSBkc3Rf YnVmLT5kYXRhLAorCQkJCSBkc3RfYnVmLT5wdHIsCiAJCQkJIGRzdF9idWYtPnN1cmZhY2VbMF0u c3RyaWRlIC8gc2l6ZW9mKHVpbnQzMl90KSwKIAkJCQkgZHN0X3gsIGRzdF95LAogCQkJCSBpKTsK QEAgLTYzNSw3ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBjb3B5X3RpbGVzKHVuc2lnbmVkICpwZXJt dXRhdGlvbikKIAkJfQogCX0KIAotCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJhdGNoKTsKKwlp bnRlbF9iYl9mbHVzaF9ibGl0KGliYik7CiB9CiAKIHN0YXRpYyB2b2lkIHNhbml0aXplX3RpbGVz X3Blcl9idWYodm9pZCkKQEAgLTc1Nyw2ICs3NjUsNyBAQCBzdGF0aWMgdm9pZCBpbml0KHZvaWQp CiB7CiAJaW50IGk7CiAJdW5zaWduZWQgdG1wOworCXVpbnQzMl90IHN0cmlkZSwgd2lkdGgsIGhl aWdodCwgYnBwOwogCiAJaWYgKG9wdGlvbnMubnVtX2J1ZmZlcnMgPT0gMCkgewogCQl0bXAgPSBn ZW1fYXBlcnR1cmVfc2l6ZShkcm1fZmQpOwpAQCAtNzY3LDIyICs3NzYsMjUgQEAgc3RhdGljIHZv aWQgaW5pdCh2b2lkKQogCX0gZWxzZQogCQludW1fYnVmZmVycyA9IG9wdGlvbnMubnVtX2J1ZmZl cnM7CiAKLQlidWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRybV9mZCwgNDA5Nik7 Ci0JZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGJ1Zm1ncik7Ci0JZHJtX2ludGVs X2J1Zm1ncl9nZW1fZW5hYmxlX2ZlbmNlZF9yZWxvY3MoYnVmbWdyKTsKIAludW1fZmVuY2VzID0g Z2VtX2F2YWlsYWJsZV9mZW5jZXMoZHJtX2ZkKTsKIAlpZ3RfYXNzZXJ0X2x0KDQsIG51bV9mZW5j ZXMpOwotCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYnVmbWdyLCBkZXZpZCk7CiAK LQlidXN5X2JvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgInRpbGVkIGJvIiwgQlVTWV9C VUZfU0laRSwgNDA5Nik7Ci0JaWYgKG9wdGlvbnMuZm9yY2VkX3RpbGluZyA+PSAwKQotCQlnZW1f c2V0X3RpbGluZyhkcm1fZmQsIGJ1c3lfYm8tPmhhbmRsZSwgb3B0aW9ucy5mb3JjZWRfdGlsaW5n LCA0MDk2KTsKKwlib3BzID0gYnVmX29wc19jcmVhdGUoZHJtX2ZkKTsKKwlpYmIgPSBpbnRlbF9i Yl9jcmVhdGUoZHJtX2ZkLCA0MDk2KTsKKworCXN0cmlkZSA9IDQwOTY7CisJYnBwID0gMzI7CisJ d2lkdGggPSBzdHJpZGUgLyAoYnBwIC8gOCk7CisJaGVpZ2h0ID0gQlVTWV9CVUZfU0laRSAvIHN0 cmlkZTsKKwlpbnRlbF9idWZfaW5pdChib3BzLCAmYnVzeV9ibywKKwkJICAgICAgIHdpZHRoLCBo ZWlnaHQsIGJwcCwgMCwgb3B0aW9ucy5mb3JjZWRfdGlsaW5nLAorCQkgICAgICAgSTkxNV9DT01Q UkVTU0lPTl9OT05FKTsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1fYnVmZmVyczsgaSsrKSB7CiAJ CWluaXRfYnVmZmVyKCZidWZmZXJzWzBdW2ldLCBvcHRpb25zLnNjcmF0Y2hfYnVmX3NpemUpOwog CQlpbml0X2J1ZmZlcigmYnVmZmVyc1sxXVtpXSwgb3B0aW9ucy5zY3JhdGNoX2J1Zl9zaXplKTsK IAotCQludW1fdG90YWxfdGlsZXMgKz0gYnVmZmVyc1swXVtpXS5udW1fdGlsZXM7CisJCW51bV90 b3RhbF90aWxlcyArPSBvcHRpb25zLnRpbGVzX3Blcl9idWY7CiAJfQogCWN1cnJlbnRfc2V0ID0g MDsKIApAQCAtNzkyLDcgKzgwNCw3IEBAIHN0YXRpYyB2b2lkIGluaXQodm9pZCkKIAogc3RhdGlj IHZvaWQgY2hlY2tfcmVuZGVyX2NvcHlmdW5jKHZvaWQpCiB7Ci0Jc3RydWN0IGlndF9idWYgc3Jj LCBkc3Q7CisJc3RydWN0IGludGVsX2J1ZiBzcmMsIGRzdDsKIAl1aW50MzJfdCAqcHRyOwogCWlu dCBpLCBqLCBwYXNzOwogCkBAIC04MDMsMTcgKzgxNSwxOCBAQCBzdGF0aWMgdm9pZCBjaGVja19y ZW5kZXJfY29weWZ1bmModm9pZCkKIAlpbml0X2J1ZmZlcigmZHN0LCBvcHRpb25zLnNjcmF0Y2hf YnVmX3NpemUpOwogCiAJZm9yIChwYXNzID0gMDsgcGFzcyA8IDE2OyBwYXNzKyspIHsKLQkJaW50 IHN4ID0gcmFuZG9tKCkgJSAoaWd0X2J1Zl93aWR0aCgmc3JjKS1vcHRpb25zLnRpbGVfc2l6ZSk7 Ci0JCWludCBzeSA9IHJhbmRvbSgpICUgKGlndF9idWZfaGVpZ2h0KCZzcmMpLW9wdGlvbnMudGls ZV9zaXplKTsKLQkJaW50IGR4ID0gcmFuZG9tKCkgJSAoaWd0X2J1Zl93aWR0aCgmZHN0KS1vcHRp b25zLnRpbGVfc2l6ZSk7Ci0JCWludCBkeSA9IHJhbmRvbSgpICUgKGlndF9idWZfaGVpZ2h0KCZk c3QpLW9wdGlvbnMudGlsZV9zaXplKTsKKwkJaW50IHN4ID0gcmFuZG9tKCkgJSAoaW50ZWxfYnVm X3dpZHRoKCZzcmMpLW9wdGlvbnMudGlsZV9zaXplKTsKKwkJaW50IHN5ID0gcmFuZG9tKCkgJSAo aW50ZWxfYnVmX2hlaWdodCgmc3JjKS1vcHRpb25zLnRpbGVfc2l6ZSk7CisJCWludCBkeCA9IHJh bmRvbSgpICUgKGludGVsX2J1Zl93aWR0aCgmZHN0KS1vcHRpb25zLnRpbGVfc2l6ZSk7CisJCWlu dCBkeSA9IHJhbmRvbSgpICUgKGludGVsX2J1Zl9oZWlnaHQoJmRzdCktb3B0aW9ucy50aWxlX3Np emUpOwogCiAJCWlmIChvcHRpb25zLnVzZV9jcHVfbWFwcykKIAkJCXNldF90b19jcHVfZG9tYWlu KCZzcmMsIDEpOwogCi0JCW1lbXNldChzcmMuZGF0YSwgMHhmZiwgb3B0aW9ucy5zY3JhdGNoX2J1 Zl9zaXplKTsKKwkJbWVtc2V0KHNyYy5wdHIsIDB4ZmYsIG9wdGlvbnMuc2NyYXRjaF9idWZfc2l6 ZSk7CiAJCWZvciAoaiA9IDA7IGogPCBvcHRpb25zLnRpbGVfc2l6ZTsgaisrKSB7Ci0JCQlwdHIg PSAodWludDMyX3QqKSgoY2hhciAqKXNyYy5kYXRhICsgc3gqNCArIChzeStqKSAqIHNyYy5zdXJm YWNlWzBdLnN0cmlkZSk7CisJCQlwdHIgPSAodWludDMyX3QqKSgoY2hhciAqKXNyYy5wdHIgKyBz eCo0ICsKKwkJCQkJICAoc3kraikgKiBzcmMuc3VyZmFjZVswXS5zdHJpZGUpOwogCQkJZm9yIChp ID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspCiAJCQkJcHRyW2ldID0gaiAqIG9wdGlv bnMudGlsZV9zaXplICsgaTsKIAkJfQpAQCAtODI0LDcgKzgzNyw4IEBAIHN0YXRpYyB2b2lkIGNo ZWNrX3JlbmRlcl9jb3B5ZnVuYyh2b2lkKQogCQkJc2V0X3RvX2NwdV9kb21haW4oJmRzdCwgMCk7 CiAKIAkJZm9yIChqID0gMDsgaiA8IG9wdGlvbnMudGlsZV9zaXplOyBqKyspIHsKLQkJCXB0ciA9 ICh1aW50MzJfdCopKChjaGFyICopZHN0LmRhdGEgKyBkeCo0ICsgKGR5K2opICogZHN0LnN1cmZh Y2VbMF0uc3RyaWRlKTsKKwkJCXB0ciA9ICh1aW50MzJfdCopKChjaGFyICopZHN0LnB0ciArIGR4 KjQgKworCQkJCQkgIChkeStqKSAqIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSk7CiAJCQlmb3IgKGkg PSAwOyBpIDwgb3B0aW9ucy50aWxlX3NpemU7IGkrKykKIAkJCQlpZiAocHRyW2ldICE9IGogKiBv cHRpb25zLnRpbGVfc2l6ZSArIGkpIHsKIAkJCQkJaWd0X2luZm8oInJlbmRlciBjb3B5ZnVuYyBt aXNtYXRjaCBhdCAoJWQsICVkKTogZm91bmQgJWQsIGV4cGVjdGVkICVkXG4iLCBpLCBqLCBwdHJb aV0sIGogKiBvcHRpb25zLnRpbGVfc2l6ZSArIGkpOwpAQCAtOTA5LDggKzkyMyw4IEBAIGlndF9z aW1wbGVfbWFpbl9hcmdzKCJkczpnOmM6dDpyYnV4bW86ZnA6IiwKIAogCWlndF9pbmZvKCJudW0g ZmFpbGVkIHRpbGVzICV1LCBtYXggaW5jb2hlcmVudCBieXRlcyAlemRcbiIsIHN0YXRzLm51bV9m YWlsZWQsIHN0YXRzLm1heF9mYWlsZWRfcmVhZHMgKiBzaXplb2YodWludDMyX3QpKTsKIAotCWlu dGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwotCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShi dWZtZ3IpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKKwlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7 CiAKIAljbG9zZShkcm1fZmQpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYmlnX2ZiLmMgYi90 ZXN0cy9rbXNfYmlnX2ZiLmMKaW5kZXggYTc1NGIyOTkuLmE5OTA3ZWEzIDEwMDY0NAotLS0gYS90 ZXN0cy9rbXNfYmlnX2ZiLmMKKysrIGIvdGVzdHMva21zX2JpZ19mYi5jCkBAIC00NiwyOCArNDYs MzYgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCWludCBiaWdfZmJfd2lkdGgsIGJpZ19mYl9oZWlnaHQ7 CiAJdWludDY0X3QgcmFtX3NpemUsIGFwZXJfc2l6ZSwgbWFwcGFibGVfc2l6ZTsKIAlpZ3RfcmVu ZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2NvcHk7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwot CXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7 CisJc3RydWN0IGludGVsX2JiICppYmI7CiB9IGRhdGFfdDsKIAogc3RhdGljIHZvaWQgaW5pdF9i dWYoZGF0YV90ICpkYXRhLAotCQkgICAgIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCSAgICAgc3Ry dWN0IGludGVsX2J1ZiAqYnVmLAogCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLAotCQkg ICAgIGNvbnN0IGNoYXIgKm5hbWUpCisJCSAgICAgY29uc3QgY2hhciAqYnVmX25hbWUpCiB7CisJ dWludDMyX3QgbmFtZSwgaGFuZGxlLCB0aWxpbmcsIHN0cmlkZSwgd2lkdGgsIGhlaWdodCwgYnBw LCBzaXplOworCiAJaWd0X2Fzc2VydF9lcShmYi0+b2Zmc2V0c1swXSwgMCk7CiAKLQlidWYtPmJv ID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oZGF0YS0+YnVmbWdyLCBkYXRhLT5kcm1fZmQsCi0J CQkJCSAgbmFtZSwgZmItPmdlbV9oYW5kbGUpOwotCWJ1Zi0+dGlsaW5nID0gaWd0X2ZiX21vZF90 b190aWxpbmcoZmItPm1vZGlmaWVyKTsKLQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gZmItPnN0 cmlkZXNbMF07Ci0JYnVmLT5icHAgPSBmYi0+cGxhbmVfYnBwWzBdOwotCWJ1Zi0+c3VyZmFjZVsw XS5zaXplID0gZmItPnNpemU7CisJdGlsaW5nID0gaWd0X2ZiX21vZF90b190aWxpbmcoZmItPm1v ZGlmaWVyKTsKKwlzdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsKKwlicHAgPSBmYi0+cGxhbmVfYnBw WzBdOworCXNpemUgPSBmYi0+c2l6ZTsKKwl3aWR0aCA9IHN0cmlkZSAvIChicHAgLyA4KTsKKwlo ZWlnaHQgPSBzaXplIC8gc3RyaWRlOworCisJbmFtZSA9IGdlbV9mbGluayhkYXRhLT5kcm1fZmQs IGZiLT5nZW1faGFuZGxlKTsKKwloYW5kbGUgPSBnZW1fb3BlbihkYXRhLT5kcm1fZmQsIG5hbWUp OworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShkYXRhLT5ib3BzLCBoYW5kbGUsIGJ1Ziwg d2lkdGgsIGhlaWdodCwgYnBwLAorCQkJCSAgICAwLCB0aWxpbmcsIDApOworCWludGVsX2J1Zl9z ZXRfbmFtZShidWYsIGJ1Zl9uYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZmluaV9idWYoc3RydWN0 IGlndF9idWYgKmJ1ZikKK3N0YXRpYyB2b2lkIGZpbmlfYnVmKHN0cnVjdCBpbnRlbF9idWYgKmJ1 ZikKIHsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYnVmLT5ibyk7CisJaW50ZWxfYnVmX2Ns b3NlKGJ1Zi0+Ym9wcywgYnVmKTsKIH0KIAogc3RhdGljIHZvaWQgY29weV9wYXR0ZXJuKGRhdGFf dCAqZGF0YSwKQEAgLTc1LDcgKzgzLDcgQEAgc3RhdGljIHZvaWQgY29weV9wYXR0ZXJuKGRhdGFf dCAqZGF0YSwKIAkJCSBzdHJ1Y3QgaWd0X2ZiICpzcmNfZmIsIGludCBzeCwgaW50IHN5LAogCQkJ IGludCB3LCBpbnQgaCkKIHsKLQlzdHJ1Y3QgaWd0X2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307CisJ c3RydWN0IGludGVsX2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307CiAKIAlpbml0X2J1ZihkYXRhLCAm c3JjLCBzcmNfZmIsICJiaWcgZmIgc3JjIik7CiAJaW5pdF9idWYoZGF0YSwgJmRzdCwgZHN0X2Zi LCAiYmlnIGZiIGRzdCIpOwpAQCAtOTEsNyArOTksNyBAQCBzdGF0aWMgdm9pZCBjb3B5X3BhdHRl cm4oZGF0YV90ICpkYXRhLAogCSAqIHJlbmRlcmVkIHdpdGggdGhlIGJsaXR0ZXIvcmVuZGVyIGVu Z2luZS4KIAkgKi8KIAlpZiAoZGF0YS0+cmVuZGVyX2NvcHkpIHsKLQkJZGF0YS0+cmVuZGVyX2Nv cHkoZGF0YS0+YmF0Y2gsIE5VTEwsICZzcmMsIHN4LCBzeSwgdywgaCwgJmRzdCwgZHgsIGR5KTsK KwkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+aWJiLCAwLCAmc3JjLCBzeCwgc3ksIHcsIGgsICZk c3QsIGR4LCBkeSk7CiAJfSBlbHNlIHsKIAkJdyA9IG1pbih3LCBzcmNfZmItPndpZHRoIC0gc3gp OwogCQl3ID0gbWluKHcsIGRzdF9mYi0+d2lkdGggLSBkeCk7CkBAIC05OSwxNCArMTA3LDE2IEBA IHN0YXRpYyB2b2lkIGNvcHlfcGF0dGVybihkYXRhX3QgKmRhdGEsCiAJCWggPSBtaW4oaCwgc3Jj X2ZiLT5oZWlnaHQgLSBzeSk7CiAJCWggPSBtaW4oaCwgZHN0X2ZiLT5oZWlnaHQgLSBkeSk7CiAK LQkJaW50ZWxfYmx0X2NvcHkoZGF0YS0+YmF0Y2gsIHNyYy5ibywgc3gsIHN5LAotCQkJICAgICAg IHNyYy5zdXJmYWNlWzBdLnN0cmlkZSwKLQkJCSAgICAgICBkc3QuYm8sIGR4LCBkeSwgZHN0LnN1 cmZhY2VbMF0uc3RyaWRlLCB3LCBoLAotCQkJICAgICAgIGRzdC5icHApOworCQlpbnRlbF9iYl9i bHRfY29weShkYXRhLT5pYmIsICZzcmMsIHN4LCBzeSwgc3JjLnN1cmZhY2VbMF0uc3RyaWRlLAor CQkJCSAgJmRzdCwgZHgsIGR5LCBkc3Quc3VyZmFjZVswXS5zdHJpZGUsIHcsIGgsIGRzdC5icHAp OwogCX0KIAogCWZpbmlfYnVmKCZkc3QpOwogCWZpbmlfYnVmKCZzcmMpOworCisJLyogaW50ZWxf YmIgY2FjaGUgZG9lc24ndCBrbm93IHdoZW4gb2JqZWN0cyBkaXNzYXBwZWFyLCBzbworCSAqIGxl dCdzIHB1cmdlIHRoZSBjYWNoZSAqLworCWludGVsX2JiX3Jlc2V0KGRhdGEtPmliYiwgdHJ1ZSk7 CiB9CiAKIHN0YXRpYyB2b2lkIGdlbmVyYXRlX3BhdHRlcm4oZGF0YV90ICpkYXRhLApAQCAtNjQ4 LDggKzY1OCw4IEBAIGlndF9tYWluCiAJCWlmIChpbnRlbF9nZW4oZGF0YS5kZXZpZCkgPj0gNCkK IAkJCWRhdGEucmVuZGVyX2NvcHkgPSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhkYXRhLmRldmlk KTsKIAotCQlkYXRhLmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZGF0YS5kcm1f ZmQsIDQwOTYpOwotCQlkYXRhLmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoZGF0YS5i dWZtZ3IsIGRhdGEuZGV2aWQpOworCQlkYXRhLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShkYXRhLmRy bV9mZCk7CisJCWRhdGEuaWJiID0gaW50ZWxfYmJfY3JlYXRlKGRhdGEuZHJtX2ZkLCA0MDk2KTsK IAl9CiAKIAkvKgpAQCAtNzA4LDcgKzcxOCw3IEBAIGlndF9tYWluCiAJaWd0X2ZpeHR1cmUgewog CQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwogCi0JCWludGVsX2JhdGNoYnVmZmVy X2ZyZWUoZGF0YS5iYXRjaCk7Ci0JCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShkYXRhLmJ1Zm1n cik7CisJCWludGVsX2JiX2Rlc3Ryb3koZGF0YS5pYmIpOworCQlidWZfb3BzX2Rlc3Ryb3koZGF0 YS5ib3BzKTsKIAl9CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY3Vyc29yX2NyYy5jIGIvdGVz dHMva21zX2N1cnNvcl9jcmMuYwppbmRleCBlOTQ5MTg0Ny4uYmUzN2E3NWQgMTAwNjQ0Ci0tLSBh L3Rlc3RzL2ttc19jdXJzb3JfY3JjLmMKKysrIGIvdGVzdHMva21zX2N1cnNvcl9jcmMuYwpAQCAt NjQsMTEgKzY0LDExIEBAIHR5cGVkZWYgc3RydWN0IHsKIAlpZ3RfcGxhbmVfdCAqY3Vyc29yOwog CWNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKIAl1aW50MzJfdCBkZXZpZDsKLQlkcm1faW50ZWxf YnVmbWdyICpidWZtZ3I7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CiAJaWd0X3JlbmRlcl9jb3B5 ZnVuY190IHJlbmRlcmNvcHk7Ci0JZHJtX2ludGVsX2JvICogZHJtaWJvWzJdOwotCXN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0Jc3RydWN0IGlndF9idWYgaWd0Ym9bMl07CisJdWlu dDMyX3QgZHJtX2hhbmRsZVsyXTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKKwlzdHJ1Y3QgaW50 ZWxfYnVmIGlndGJvWzJdOwogCiB9IGRhdGFfdDsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRp YyB2b2lkIHJlc3RvcmVfaW1hZ2UoZGF0YV90ICpkYXRhKQogCiAJaWYgKGRhdGEtPnJlbmRlcmNv cHkgIT0gTlVMTCkgewogCQkvKiB1c2UgcmVuZGVyY29weSBpZiBhdmFpbGFibGUgKi8KLQkJZGF0 YS0+cmVuZGVyY29weShkYXRhLT5iYXRjaCwgTlVMTCwKKwkJZGF0YS0+cmVuZGVyY29weShkYXRh LT5pYmIsIDAsCiAJCQkJICZkYXRhLT5pZ3Rib1tSRVNUT1JFQlVGRkVSXSwgMCwgMCwKIAkJCQkg ZGF0YS0+cHJpbWFyeV9mYltSRVNUT1JFQlVGRkVSXS53aWR0aCwKIAkJCQkgZGF0YS0+cHJpbWFy eV9mYltSRVNUT1JFQlVGRkVSXS5oZWlnaHQsCkBAIC0zODEsMTYgKzM4MSwyNSBAQCBzdGF0aWMg dm9pZCBjbGVhbnVwX2NydGMoZGF0YV90ICpkYXRhKQogCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJt X2ZkLCAmZGF0YS0+cHJpbWFyeV9mYltGUk9OVEJVRkZFUl0pOwogCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZGF0YS0+cHJpbWFyeV9mYltSRVNUT1JFQlVGRkVSXSk7CiAKKwlpbnRlbF9i Yl9kZXN0cm95KGRhdGEtPmliYik7CisKIAlpZ3RfZGlzcGxheV9yZXNldChkaXNwbGF5KTsKIH0K IAogc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIGludCBidWZmZXIp CiB7Ci0JZGF0YS0+aWd0Ym9bYnVmZmVyXS5ibyA9IGRhdGEtPmRybWlib1tidWZmZXJdOwotCWRh dGEtPmlndGJvW2J1ZmZlcl0uc3VyZmFjZVswXS5zdHJpZGUgPSBkYXRhLT5wcmltYXJ5X2ZiW2J1 ZmZlcl0uc3RyaWRlc1swXTsKLQlkYXRhLT5pZ3Rib1tidWZmZXJdLnRpbGluZyA9IGRhdGEtPnBy aW1hcnlfZmJbYnVmZmVyXS5tb2RpZmllcjsKLQlkYXRhLT5pZ3Rib1tidWZmZXJdLnN1cmZhY2Vb MF0uc2l6ZSA9IGRhdGEtPnByaW1hcnlfZmJbYnVmZmVyXS5zaXplOwotCWRhdGEtPmlndGJvW2J1 ZmZlcl0uYnBwID0gZGF0YS0+cHJpbWFyeV9mYltidWZmZXJdLnBsYW5lX2JwcFswXTsKKwl1aW50 MzJfdCBoYW5kbGUsIHRpbGluZywgc3RyaWRlLCB3aWR0aCwgaGVpZ2h0LCBicHAsIHNpemU7CisK KwloYW5kbGUgPSBkYXRhLT5kcm1faGFuZGxlW2J1ZmZlcl07CisJc2l6ZSA9IGRhdGEtPnByaW1h cnlfZmJbYnVmZmVyXS5zaXplOworCXRpbGluZyA9IGRhdGEtPnByaW1hcnlfZmJbYnVmZmVyXS5t b2RpZmllcjsKKwlzdHJpZGUgPSBkYXRhLT5wcmltYXJ5X2ZiW2J1ZmZlcl0uc3RyaWRlc1swXTsK KwlicHAgPSBkYXRhLT5wcmltYXJ5X2ZiW2J1ZmZlcl0ucGxhbmVfYnBwWzBdOworCXdpZHRoID0g c3RyaWRlIC8gKGJwcCAvIDgpOworCWhlaWdodCA9IHNpemUgLyBzdHJpZGU7CisKKwlpbnRlbF9i dWZfaW5pdF91c2luZ19oYW5kbGUoZGF0YS0+Ym9wcywgaGFuZGxlLCAmZGF0YS0+aWd0Ym9bYnVm ZmVyXSwKKwkJCQkgICAgd2lkdGgsIGhlaWdodCwgYnBwLCAwLCB0aWxpbmcsIDApOwogfQogCiBz dGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwKQEAgLTQ1MCw2ICs0NTksOCBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpk YXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKIAkJaWd0X3BhaW50X3Rlc3RfcGF0dGVybihjciwg ZGF0YS0+c2NyZWVudywgZGF0YS0+c2NyZWVuaCk7CiAJCWNhaXJvX2Rlc3Ryb3koY3IpOwogCX0g ZWxzZSB7CisJCXVpbnQzMl90IG5hbWU7CisKIAkJLyogc3RvcmUgdGVzdCBpbWFnZSBhcyBmYiBp ZiByZW5kZXJjb3B5IGlzIGF2YWlsYWJsZSAqLwogCQljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRh dGEtPmRybV9mZCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAmZGF0YS0+cHJpbWFyeV9mYltS RVNUT1JFQlVGRkVSXSk7CkBAIC00NTcsMjIgKzQ2OCwyMCBAQCBzdGF0aWMgdm9pZCBwcmVwYXJl X2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKIAkJaWd0X3BhaW50X3Rl c3RfcGF0dGVybihjciwgZGF0YS0+c2NyZWVudywgZGF0YS0+c2NyZWVuaCk7CiAJCWlndF9wdXRf Y2Fpcm9fY3R4KGNyKTsKIAotCQlkYXRhLT5kcm1pYm9bRlJPTlRCVUZGRVJdID0gZ2VtX2hhbmRs ZV90b19saWJkcm1fYm8oZGF0YS0+YnVmbWdyLAotCQkJCQkJCQkgICAgZGF0YS0+ZHJtX2ZkLAot CQkJCQkJCQkgICAgIiIsIGRhdGEtPnByaW1hcnlfZmJbRlJPTlRCVUZGRVJdLmdlbV9oYW5kbGUp OwotCQlpZ3RfYXNzZXJ0KGRhdGEtPmRybWlib1tGUk9OVEJVRkZFUl0pOworCQluYW1lID0gZ2Vt X2ZsaW5rKGRhdGEtPmRybV9mZCwKKwkJCQkgZGF0YS0+cHJpbWFyeV9mYltGUk9OVEJVRkZFUl0u Z2VtX2hhbmRsZSk7CisJCWRhdGEtPmRybV9oYW5kbGVbRlJPTlRCVUZGRVJdID0gZ2VtX29wZW4o ZGF0YS0+ZHJtX2ZkLCBuYW1lKTsKKwkJaWd0X2Fzc2VydChkYXRhLT5kcm1faGFuZGxlW0ZST05U QlVGRkVSXSk7CiAKLQkJZGF0YS0+ZHJtaWJvW1JFU1RPUkVCVUZGRVJdID0gZ2VtX2hhbmRsZV90 b19saWJkcm1fYm8oZGF0YS0+YnVmbWdyLAotCQkJCQkJCQkgICAgICBkYXRhLT5kcm1fZmQsCi0J CQkJCQkJCSAgICAgICIiLCBkYXRhLT5wcmltYXJ5X2ZiW1JFU1RPUkVCVUZGRVJdLmdlbV9oYW5k bGUpOwotCQlpZ3RfYXNzZXJ0KGRhdGEtPmRybWlib1tSRVNUT1JFQlVGRkVSXSk7CisJCW5hbWUg PSBnZW1fZmxpbmsoZGF0YS0+ZHJtX2ZkLAorCQkJCSBkYXRhLT5wcmltYXJ5X2ZiW1JFU1RPUkVC VUZGRVJdLmdlbV9oYW5kbGUpOworCQlkYXRhLT5kcm1faGFuZGxlW1JFU1RPUkVCVUZGRVJdID0g Z2VtX29wZW4oZGF0YS0+ZHJtX2ZkLCBuYW1lKTsKKwkJaWd0X2Fzc2VydChkYXRhLT5kcm1faGFu ZGxlW1JFU1RPUkVCVUZGRVJdKTsKIAogCQlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsIFJFU1RPUkVC VUZGRVIpOwogCQlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsIEZST05UQlVGRkVSKTsKIAotCQlkYXRh LT5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwKLQkJCQkJCSAg ICAgIGRhdGEtPmRldmlkKTsKLQkJaWd0X2Fzc2VydChkYXRhLT5iYXRjaCk7CisJCWRhdGEtPmli YiA9IGludGVsX2JiX2NyZWF0ZShkYXRhLT5kcm1fZmQsIDQwOTYpOwogCX0KIAogCWlndF9waXBl X2NyY19zdGFydChkYXRhLT5waXBlX2NyYyk7CkBAIC04MzIsMTAgKzg0MSw3IEBAIGlndF9tYWlu CiAJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5kcm1fZmQpOwogCiAJ CWlmIChpc19pOTE1X2RldmljZShkYXRhLmRybV9mZCkpIHsKLQkJCWRhdGEuYnVmbWdyID0gZHJt X2ludGVsX2J1Zm1ncl9nZW1faW5pdChkYXRhLmRybV9mZCwgNDA5Nik7Ci0JCQlpZ3RfYXNzZXJ0 KGRhdGEuYnVmbWdyKTsKLQkJCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShkYXRh LmJ1Zm1ncik7Ci0KKwkJCWRhdGEuYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRhdGEuZHJtX2ZkKTsK IAkJCWRhdGEuZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRhdGEuZHJtX2ZkKTsKIAkJCWRh dGEucmVuZGVyY29weSA9IGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jKGRhdGEuZGV2aWQpOwogCQl9 CkBAIC04NTQsMTIgKzg2MCw3IEBAIGlndF9tYWluCiAJCQlpZ3RfcGlwZV9jcmNfc3RvcChkYXRh LnBpcGVfY3JjKTsKIAkJCWlndF9waXBlX2NyY19mcmVlKGRhdGEucGlwZV9jcmMpOwogCQl9Ci0K LQkJaWYgKGRhdGEuYnVmbWdyICE9IE5VTEwpIHsKLQkJCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUo ZGF0YS5iYXRjaCk7Ci0JCQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koZGF0YS5idWZtZ3IpOwot CQl9Ci0KKwkJYnVmX29wc19kZXN0cm95KGRhdGEuYm9wcyk7CiAJCWlndF9kaXNwbGF5X2Zpbmko JmRhdGEuZGlzcGxheSk7CiAJfQogfQotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lndC1kZXYK