Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751336AbdGPQdm (ORCPT ); Sun, 16 Jul 2017 12:33:42 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:45220 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751244AbdGPQdf (ORCPT ); Sun, 16 Jul 2017 12:33:35 -0400 Message-ID: <1500222805.2707.156.camel@decadent.org.uk> Subject: Re: [PATCH 3.16 000/178] 3.16.46-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Sun, 16 Jul 2017 17:33:25 +0100 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-fFRo6ULrD9nIXEF8bAAI" X-Mailer: Evolution 3.22.6-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 2a02:8011:400e:2:6f00:88c8:c921:d332 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 320708 Lines: 4194 --=-fFRo6ULrD9nIXEF8bAAI Content-Type: multipart/mixed; boundary="=-6X77ZQnHhQOMEpQhqdzx" --=-6X77ZQnHhQOMEpQhqdzx Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.16.46-rc1 relative to 3.16.45. Ben. --=20 Ben Hutchings If the facts do not conform to your theory, they must be disposed of. --=-6X77ZQnHhQOMEpQhqdzx Content-Disposition: attachment; filename="linux-3.16.46-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.16.46-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggNmVmZmE0NDAxYTA5Li4yZTIw YTVmMDA5YmUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEs NyBAQAogVkVSU0lPTiA9IDMKIFBBVENITEVWRUwgPSAxNgotU1VCTEVWRUwgPSA0NQotRVhUUkFW RVJTSU9OID0KK1NVQkxFVkVMID0gNDYKK0VYVFJBVkVSU0lPTiA9IC1yYzEKIE5BTUUgPSBNdXNl dW0gb2YgRmlzaGllZ29vZGllcwogCiAjICpET0NVTUVOVEFUSU9OKgpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vYm9vdC9kdHMvYmNtNTMwMXguZHRzaSBiL2FyY2gvYXJtL2Jvb3QvZHRzL2JjbTUzMDF4 LmR0c2kKaW5kZXggNTNjNjI0Zjc2NmI0Li4xNTYyYTY0NGI3Y2QgMTAwNjQ0Ci0tLSBhL2FyY2gv YXJtL2Jvb3QvZHRzL2JjbTUzMDF4LmR0c2kKKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvYmNtNTMw MXguZHRzaQpAQCAtNTIsMTQgKzUyLDE0IEBACiAJCXRpbWVyQDAyMDAgewogCQkJY29tcGF0aWJs ZSA9ICJhcm0sY29ydGV4LWE5LWdsb2JhbC10aW1lciI7CiAJCQlyZWcgPSA8MHgwMjAwIDB4MTAw PjsKLQkJCWludGVycnVwdHMgPSA8R0lDX1BQSSAxMSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJ CWludGVycnVwdHMgPSA8R0lDX1BQSSAxMSBJUlFfVFlQRV9FREdFX1JJU0lORz47CiAJCQljbG9j a3MgPSA8JmNsa19wZXJpcGg+OwogCQl9OwogCiAJCWxvY2FsLXRpbWVyQDA2MDAgewogCQkJY29t cGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5LXR3ZC10aW1lciI7CiAJCQlyZWcgPSA8MHgwNjAwIDB4 MTAwPjsKLQkJCWludGVycnVwdHMgPSA8R0lDX1BQSSAxMyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsK KwkJCWludGVycnVwdHMgPSA8R0lDX1BQSSAxMyBJUlFfVFlQRV9FREdFX1JJU0lORz47CiAJCQlj bG9ja3MgPSA8JmNsa19wZXJpcGg+OwogCQl9OwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rdm0v bW11LmMgYi9hcmNoL2FybS9rdm0vbW11LmMKaW5kZXggMWM4OWU0OWEyNDY3Li5jMTNjODQ2ZmFk NzIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2t2bS9tbXUuYworKysgYi9hcmNoL2FybS9rdm0vbW11 LmMKQEAgLTE5OSw2ICsxOTksMTIgQEAgc3RhdGljIHZvaWQgdW5tYXBfcmFuZ2Uoc3RydWN0IGt2 bSAqa3ZtLCBwZ2RfdCAqcGdkcCwKIAkJbmV4dCA9IGt2bV9wZ2RfYWRkcl9lbmQoYWRkciwgZW5k KTsKIAkJaWYgKCFwZ2Rfbm9uZSgqcGdkKSkKIAkJCXVubWFwX3B1ZHMoa3ZtLCBwZ2QsIGFkZHIs IG5leHQpOworCQkvKgorCQkgKiBJZiB0aGUgcmFuZ2UgaXMgdG9vIGxhcmdlLCByZWxlYXNlIHRo ZSBrdm0tPm1tdV9sb2NrCisJCSAqIHRvIHByZXZlbnQgc3RhcnZhdGlvbiBhbmQgbG9ja3VwIGRl dGVjdG9yIHdhcm5pbmdzLgorCQkgKi8KKwkJaWYgKGt2bSAmJiBuZXh0ICE9IGVuZCkKKwkJCWNv bmRfcmVzY2hlZF9sb2NrKCZrdm0tPm1tdV9sb2NrKTsKIAl9IHdoaWxlIChwZ2QrKywgYWRkciA9 IG5leHQsIGFkZHIgIT0gZW5kKTsKIH0KIApAQCAtNTUzLDYgKzU1OSw3IEBAIGludCBrdm1fYWxs b2Nfc3RhZ2UyX3BnZChzdHJ1Y3Qga3ZtICprdm0pCiAgKi8KIHN0YXRpYyB2b2lkIHVubWFwX3N0 YWdlMl9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sIHBoeXNfYWRkcl90IHN0YXJ0LCB1NjQgc2l6ZSkK IHsKKwlhc3NlcnRfc3Bpbl9sb2NrZWQoJmt2bS0+bW11X2xvY2spOwogCXVubWFwX3JhbmdlKGt2 bSwga3ZtLT5hcmNoLnBnZCwgc3RhcnQsIHNpemUpOwogfQogCkBAIC02MzcsNyArNjQ0LDEwIEBA IHZvaWQga3ZtX2ZyZWVfc3RhZ2UyX3BnZChzdHJ1Y3Qga3ZtICprdm0pCiAJaWYgKGt2bS0+YXJj aC5wZ2QgPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJc3Bpbl9sb2NrKCZrdm0tPm1tdV9sb2NrKTsK IAl1bm1hcF9zdGFnZTJfcmFuZ2Uoa3ZtLCAwLCBLVk1fUEhZU19TSVpFKTsKKwlzcGluX3VubG9j aygma3ZtLT5tbXVfbG9jayk7CisKIAlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWt2bS0+YXJj aC5wZ2QsIFMyX1BHRF9PUkRFUik7CiAJa3ZtLT5hcmNoLnBnZCA9IE5VTEw7CiB9CmRpZmYgLS1n aXQgYS9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gvbWV0YWcvaW5jbHVk ZS9hc20vdWFjY2Vzcy5oCmluZGV4IDc4NDFmMjI5MDM4NS4uOWQ1MjMzNzVmNjhhIDEwMDY0NAot LS0gYS9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL21ldGFnL2lu Y2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMTkyLDIwICsxOTIsMjEgQEAgZXh0ZXJuIGxvbmcgX19t dXN0X2NoZWNrIHN0cm5sZW5fdXNlcihjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50 KTsKIAogI2RlZmluZSBzdHJsZW5fdXNlcihzdHIpIHN0cm5sZW5fdXNlcihzdHIsIDMyNzY3KQog Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBfX211c3RfY2hlY2sgX19jb3B5X3VzZXJfemVyb2luZyh2 b2lkICp0bywKLQkJCQkJCSAgICAgIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLAotCQkJCQkJICAg ICAgdW5zaWduZWQgbG9uZyBuKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIHJhd19jb3B5X2Zyb21f dXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sCisJCQkJCXVuc2lnbmVkIGxv bmcgbik7CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogY29weV9mcm9tX3VzZXIodm9p ZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiB7CisJdW5z aWduZWQgbG9uZyByZXMgPSBuOwogCWlmIChsaWtlbHkoYWNjZXNzX29rKFZFUklGWV9SRUFELCBm cm9tLCBuKSkpCi0JCXJldHVybiBfX2NvcHlfdXNlcl96ZXJvaW5nKHRvLCBmcm9tLCBuKTsKLQlt ZW1zZXQodG8sIDAsIG4pOwotCXJldHVybiBuOworCQlyZXMgPSByYXdfY29weV9mcm9tX3VzZXIo dG8sIGZyb20sIG4pOworCWlmICh1bmxpa2VseShyZXMpKQorCQltZW1zZXQodG8gKyAobiAtIHJl cyksIDAsIHJlcyk7CisJcmV0dXJuIHJlczsKIH0KIAotI2RlZmluZSBfX2NvcHlfZnJvbV91c2Vy KHRvLCBmcm9tLCBuKSBfX2NvcHlfdXNlcl96ZXJvaW5nKHRvLCBmcm9tLCBuKQorI2RlZmluZSBf X2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKSByYXdfY29weV9mcm9tX3VzZXIodG8sIGZyb20s IG4pCiAjZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWMgX19jb3B5X2Zyb21fdXNlcgog CiBleHRlcm4gdW5zaWduZWQgbG9uZyBfX211c3RfY2hlY2sgX19jb3B5X3VzZXIodm9pZCBfX3Vz ZXIgKnRvLApkaWZmIC0tZ2l0IGEvYXJjaC9tZXRhZy9saWIvdXNlcmNvcHkuYyBiL2FyY2gvbWV0 YWcvbGliL3VzZXJjb3B5LmMKaW5kZXggYjNlYmZlOWM4ZTg4Li4yNzkyZmM2MjEwODggMTAwNjQ0 Ci0tLSBhL2FyY2gvbWV0YWcvbGliL3VzZXJjb3B5LmMKKysrIGIvYXJjaC9tZXRhZy9saWIvdXNl cmNvcHkuYwpAQCAtMjksNyArMjksNiBAQAogCQlDT1BZCQkJCQkJIFwKIAkJIjE6XG4iCQkJCQkJ IFwKIAkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkgXAotCQkiCU1PViBEMUFyMSwjMFxu IgkJCQkgXAogCQlGSVhVUAkJCQkJCSBcCiAJCSIJTU9WVCAgICBEMUFyMSwjSEkoMWIpXG4iCQkg XAogCQkiCUpVTVAgICAgRDFBcjEsI0xPKDFiKVxuIgkJIFwKQEAgLTI2MCwyNyArMjU5LDMxIEBA CiAJCSJNR0VUTAlEMEZyVCwgRDAuNSwgRDAuNiwgRDAuNywgWyUxKytdXG4iCQlcCiAJCSIyMjpc biIJCQkJCQkJXAogCQkiTVNFVEwJWyUwKytdLCBEMEZyVCwgRDAuNSwgRDAuNiwgRDAuN1xuIgkJ XAotCQkiU1VCCSUzLCAlMywgIzMyXG4iCQkJCQlcCiAJCSIyMzpcbiIJCQkJCQkJXAotCQkiTUdF VEwJRDBGclQsIEQwLjUsIEQwLjYsIEQwLjcsIFslMSsrXVxuIgkJXAorCQkiU1VCCSUzLCAlMywg IzMyXG4iCQkJCQlcCiAJCSIyNDpcbiIJCQkJCQkJXAorCQkiTUdFVEwJRDBGclQsIEQwLjUsIEQw LjYsIEQwLjcsIFslMSsrXVxuIgkJXAorCQkiMjU6XG4iCQkJCQkJCVwKIAkJIk1TRVRMCVslMCsr XSwgRDBGclQsIEQwLjUsIEQwLjYsIEQwLjdcbiIJCVwKKwkJIjI2OlxuIgkJCQkJCQlcCiAJCSJT VUIJJTMsICUzLCAjMzJcbiIJCQkJCVwKIAkJIkRDQUNIRQlbJTErIy02NF0sIEQwQXI2XG4iCQkJ CVwKIAkJIkJSCSRMbG9vcCJpZCJcbiIJCQkJCVwKIAkJCQkJCQkJCVwKIAkJIk1PVglSQVBGLCAl MVxuIgkJCQkJXAotCQkiMjU6XG4iCQkJCQkJCVwKKwkJIjI3OlxuIgkJCQkJCQlcCiAJCSJNR0VU TAlEMEZyVCwgRDAuNSwgRDAuNiwgRDAuNywgWyUxKytdXG4iCQlcCi0JCSIyNjpcbiIJCQkJCQkJ XAorCQkiMjg6XG4iCQkJCQkJCVwKIAkJIk1TRVRMCVslMCsrXSwgRDBGclQsIEQwLjUsIEQwLjYs IEQwLjdcbiIJCVwKKwkJIjI5OlxuIgkJCQkJCQlcCiAJCSJTVUIJJTMsICUzLCAjMzJcbiIJCQkJ CVwKLQkJIjI3OlxuIgkJCQkJCQlcCisJCSIzMDpcbiIJCQkJCQkJXAogCQkiTUdFVEwJRDBGclQs IEQwLjUsIEQwLjYsIEQwLjcsIFslMSsrXVxuIgkJXAotCQkiMjg6XG4iCQkJCQkJCVwKKwkJIjMx OlxuIgkJCQkJCQlcCiAJCSJNU0VUTAlbJTArK10sIEQwRnJULCBEMC41LCBEMC42LCBEMC43XG4i CQlcCisJCSIzMjpcbiIJCQkJCQkJXAogCQkiU1VCCSUwLCAlMCwgIzhcbiIJCQkJCVwKLQkJIjI5 OlxuIgkJCQkJCQlcCisJCSIzMzpcbiIJCQkJCQkJXAogCQkiU0VUTAlbJTArK10sIEQwLjcsIEQx LjdcbiIJCQkJXAogCQkiU1VCCSUzLCAlMywgIzMyXG4iCQkJCQlcCiAJCSIxOiIJCQkJCQkJXApA QCAtMzEyLDExICszMTUsMTUgQEAKIAkJIgkubG9uZyAyNmIsM2JcbiIJCQkJCVwKIAkJIgkubG9u ZyAyN2IsM2JcbiIJCQkJCVwKIAkJIgkubG9uZyAyOGIsM2JcbiIJCQkJCVwKLQkJIgkubG9uZyAy OWIsNGJcbiIJCQkJCVwKKwkJIgkubG9uZyAyOWIsM2JcbiIJCQkJCVwKKwkJIgkubG9uZyAzMGIs M2JcbiIJCQkJCVwKKwkJIgkubG9uZyAzMWIsM2JcbiIJCQkJCVwKKwkJIgkubG9uZyAzMmIsM2Jc biIJCQkJCVwKKwkJIgkubG9uZyAzM2IsNGJcbiIJCQkJCVwKIAkJIgkucHJldmlvdXNcbiIJCQkJ CVwKIAkJOiAiPXIiICh0byksICI9ciIgKGZyb20pLCAiPXIiIChyZXQpLCAiPWQiIChuKQkJXAog CQk6ICIwIiAodG8pLCAiMSIgKGZyb20pLCAiMiIgKHJldCksICIzIiAobikJCVwKLQkJOiAiRDFB cjEiLCAiRDBBcjIiLCAibWVtb3J5IikKKwkJOiAiRDFBcjEiLCAiRDBBcjIiLCAiY2MiLCAibWVt b3J5IikKIAogLyoJcmV3aW5kICd0bycgYW5kICdmcm9tJyAgcG9pbnRlcnMgd2hlbiBhIGZhdWx0 IG9jY3VycwogICoKQEAgLTM0Miw3ICszNDksNyBAQAogI2RlZmluZSBfX2FzbV9jb3B5X3RvX3Vz ZXJfNjRiaXRfcmFwZl9sb29wKHRvLAlmcm9tLCByZXQsIG4sIGlkKVwKIAlfX2FzbV9jb3B5X3Vz ZXJfNjRiaXRfcmFwZl9sb29wKHRvLCBmcm9tLCByZXQsIG4sIGlkLAkJXAogCQkiTFNSCUQwQXIy LCBEMEFyMiwgIzhcbiIJCQkJXAotCQkiQU5ECUQwQXIyLCBEMEFyMiwgIzB4N1xuIgkJCQlcCisJ CSJBTkRTCUQwQXIyLCBEMEFyMiwgIzB4N1xuIgkJCQlcCiAJCSJBRERaCUQwQXIyLCBEMEFyMiwg IzRcbiIJCQkJXAogCQkiU1VCCUQwQXIyLCBEMEFyMiwgIzFcbiIJCQkJXAogCQkiTU9WCUQxQXIx LCAjNFxuIgkJCQkJXApAQCAtNDAzLDQ3ICs0MTAsNTUgQEAKIAkJIk1HRVRECUQwRnJULCBEMC41 LCBEMC42LCBEMC43LCBbJTErK11cbiIJCVwKIAkJIjIyOlxuIgkJCQkJCQlcCiAJCSJNU0VURAlb JTArK10sIEQwRnJULCBEMC41LCBEMC42LCBEMC43XG4iCQlcCi0JCSJTVUIJJTMsICUzLCAjMTZc biIJCQkJCVwKIAkJIjIzOlxuIgkJCQkJCQlcCi0JCSJNR0VURAlEMEZyVCwgRDAuNSwgRDAuNiwg RDAuNywgWyUxKytdXG4iCQlcCi0JCSIyNDpcbiIJCQkJCQkJXAotCQkiTVNFVEQJWyUwKytdLCBE MEZyVCwgRDAuNSwgRDAuNiwgRDAuN1xuIgkJXAogCQkiU1VCCSUzLCAlMywgIzE2XG4iCQkJCQlc Ci0JCSIyNTpcbiIJCQkJCQkJXAorCQkiMjQ6XG4iCQkJCQkJCVwKIAkJIk1HRVRECUQwRnJULCBE MC41LCBEMC42LCBEMC43LCBbJTErK11cbiIJCVwKLQkJIjI2OlxuIgkJCQkJCQlcCisJCSIyNTpc biIJCQkJCQkJXAogCQkiTVNFVEQJWyUwKytdLCBEMEZyVCwgRDAuNSwgRDAuNiwgRDAuN1xuIgkJ XAorCQkiMjY6XG4iCQkJCQkJCVwKIAkJIlNVQgklMywgJTMsICMxNlxuIgkJCQkJXAogCQkiMjc6 XG4iCQkJCQkJCVwKIAkJIk1HRVRECUQwRnJULCBEMC41LCBEMC42LCBEMC43LCBbJTErK11cbiIJ CVwKIAkJIjI4OlxuIgkJCQkJCQlcCiAJCSJNU0VURAlbJTArK10sIEQwRnJULCBEMC41LCBEMC42 LCBEMC43XG4iCQlcCisJCSIyOTpcbiIJCQkJCQkJXAorCQkiU1VCCSUzLCAlMywgIzE2XG4iCQkJ CQlcCisJCSIzMDpcbiIJCQkJCQkJXAorCQkiTUdFVEQJRDBGclQsIEQwLjUsIEQwLjYsIEQwLjcs IFslMSsrXVxuIgkJXAorCQkiMzE6XG4iCQkJCQkJCVwKKwkJIk1TRVRECVslMCsrXSwgRDBGclQs IEQwLjUsIEQwLjYsIEQwLjdcbiIJCVwKKwkJIjMyOlxuIgkJCQkJCQlcCiAJCSJTVUIJJTMsICUz LCAjMTZcbiIJCQkJCVwKIAkJIkRDQUNIRQlbJTErIy02NF0sIEQwQXI2XG4iCQkJCVwKIAkJIkJS CSRMbG9vcCJpZCJcbiIJCQkJCVwKIAkJCQkJCQkJCVwKIAkJIk1PVglSQVBGLCAlMVxuIgkJCQkJ XAotCQkiMjk6XG4iCQkJCQkJCVwKKwkJIjMzOlxuIgkJCQkJCQlcCiAJCSJNR0VURAlEMEZyVCwg RDAuNSwgRDAuNiwgRDAuNywgWyUxKytdXG4iCQlcCi0JCSIzMDpcbiIJCQkJCQkJXAorCQkiMzQ6 XG4iCQkJCQkJCVwKIAkJIk1TRVRECVslMCsrXSwgRDBGclQsIEQwLjUsIEQwLjYsIEQwLjdcbiIJ CVwKKwkJIjM1OlxuIgkJCQkJCQlcCiAJCSJTVUIJJTMsICUzLCAjMTZcbiIJCQkJCVwKLQkJIjMx OlxuIgkJCQkJCQlcCisJCSIzNjpcbiIJCQkJCQkJXAogCQkiTUdFVEQJRDBGclQsIEQwLjUsIEQw LjYsIEQwLjcsIFslMSsrXVxuIgkJXAotCQkiMzI6XG4iCQkJCQkJCVwKKwkJIjM3OlxuIgkJCQkJ CQlcCiAJCSJNU0VURAlbJTArK10sIEQwRnJULCBEMC41LCBEMC42LCBEMC43XG4iCQlcCisJCSIz ODpcbiIJCQkJCQkJXAogCQkiU1VCCSUzLCAlMywgIzE2XG4iCQkJCQlcCi0JCSIzMzpcbiIJCQkJ CQkJXAorCQkiMzk6XG4iCQkJCQkJCVwKIAkJIk1HRVRECUQwRnJULCBEMC41LCBEMC42LCBEMC43 LCBbJTErK11cbiIJCVwKLQkJIjM0OlxuIgkJCQkJCQlcCisJCSI0MDpcbiIJCQkJCQkJXAogCQki TVNFVEQJWyUwKytdLCBEMEZyVCwgRDAuNSwgRDAuNiwgRDAuN1xuIgkJXAorCQkiNDE6XG4iCQkJ CQkJCVwKIAkJIlNVQgklMywgJTMsICMxNlxuIgkJCQkJXAotCQkiMzU6XG4iCQkJCQkJCVwKKwkJ IjQyOlxuIgkJCQkJCQlcCiAJCSJNR0VURAlEMEZyVCwgRDAuNSwgRDAuNiwgRDAuNywgWyUxKytd XG4iCQlcCi0JCSIzNjpcbiIJCQkJCQkJXAorCQkiNDM6XG4iCQkJCQkJCVwKIAkJIk1TRVRECVsl MCsrXSwgRDBGclQsIEQwLjUsIEQwLjYsIEQwLjdcbiIJCVwKKwkJIjQ0OlxuIgkJCQkJCQlcCiAJ CSJTVUIJJTAsICUwLCAjNFxuIgkJCQkJXAotCQkiMzc6XG4iCQkJCQkJCVwKKwkJIjQ1OlxuIgkJ CQkJCQlcCiAJCSJTRVRECVslMCsrXSwgRDAuN1xuIgkJCQkJXAogCQkiU1VCCSUzLCAlMywgIzE2 XG4iCQkJCQlcCiAJCSIxOiIJCQkJCQkJXApAQCAtNDgzLDExICs0OTgsMTkgQEAKIAkJIgkubG9u ZyAzNGIsM2JcbiIJCQkJCVwKIAkJIgkubG9uZyAzNWIsM2JcbiIJCQkJCVwKIAkJIgkubG9uZyAz NmIsM2JcbiIJCQkJCVwKLQkJIgkubG9uZyAzN2IsNGJcbiIJCQkJCVwKKwkJIgkubG9uZyAzN2Is M2JcbiIJCQkJCVwKKwkJIgkubG9uZyAzOGIsM2JcbiIJCQkJCVwKKwkJIgkubG9uZyAzOWIsM2Jc biIJCQkJCVwKKwkJIgkubG9uZyA0MGIsM2JcbiIJCQkJCVwKKwkJIgkubG9uZyA0MWIsM2JcbiIJ CQkJCVwKKwkJIgkubG9uZyA0MmIsM2JcbiIJCQkJCVwKKwkJIgkubG9uZyA0M2IsM2JcbiIJCQkJ CVwKKwkJIgkubG9uZyA0NGIsM2JcbiIJCQkJCVwKKwkJIgkubG9uZyA0NWIsNGJcbiIJCQkJCVwK IAkJIgkucHJldmlvdXNcbiIJCQkJCVwKIAkJOiAiPXIiICh0byksICI9ciIgKGZyb20pLCAiPXIi IChyZXQpLCAiPWQiIChuKQkJXAogCQk6ICIwIiAodG8pLCAiMSIgKGZyb20pLCAiMiIgKHJldCks ICIzIiAobikJCVwKLQkJOiAiRDFBcjEiLCAiRDBBcjIiLCAibWVtb3J5IikKKwkJOiAiRDFBcjEi LCAiRDBBcjIiLCAiY2MiLCAibWVtb3J5IikKIAogLyoJcmV3aW5kICd0bycgYW5kICdmcm9tJyAg cG9pbnRlcnMgd2hlbiBhIGZhdWx0IG9jY3VycwogICoKQEAgLTUxMyw3ICs1MzYsNyBAQAogI2Rl ZmluZSBfX2FzbV9jb3B5X3RvX3VzZXJfMzJiaXRfcmFwZl9sb29wKHRvLCBmcm9tLCByZXQsIG4s IGlkKVwKIAlfX2FzbV9jb3B5X3VzZXJfMzJiaXRfcmFwZl9sb29wKHRvLCBmcm9tLCByZXQsIG4s IGlkLAkJXAogCQkiTFNSCUQwQXIyLCBEMEFyMiwgIzhcbiIJCQkJXAotCQkiQU5ECUQwQXIyLCBE MEFyMiwgIzB4N1xuIgkJCQlcCisJCSJBTkRTCUQwQXIyLCBEMEFyMiwgIzB4N1xuIgkJCQlcCiAJ CSJBRERaCUQwQXIyLCBEMEFyMiwgIzRcbiIJCQkJXAogCQkiU1VCCUQwQXIyLCBEMEFyMiwgIzFc biIJCQkJXAogCQkiTU9WCUQxQXIxLCAjNFxuIgkJCQkJXApAQCAtNTM4LDIzICs1NjEsMzEgQEAg dW5zaWduZWQgbG9uZyBfX2NvcHlfdXNlcih2b2lkIF9fdXNlciAqcGRzdCwgY29uc3Qgdm9pZCAq cHNyYywKIAlpZiAoKHVuc2lnbmVkIGxvbmcpIHNyYyAmIDEpIHsKIAkJX19hc21fY29weV90b191 c2VyXzEoZHN0LCBzcmMsIHJldG4pOwogCQluLS07CisJCWlmIChyZXRuKQorCQkJcmV0dXJuIHJl dG4gKyBuOwogCX0KIAlpZiAoKHVuc2lnbmVkIGxvbmcpIGRzdCAmIDEpIHsKIAkJLyogV29yc3Qg Y2FzZSAtIGJ5dGUgY29weSAqLwogCQl3aGlsZSAobiA+IDApIHsKIAkJCV9fYXNtX2NvcHlfdG9f dXNlcl8xKGRzdCwgc3JjLCByZXRuKTsKIAkJCW4tLTsKKwkJCWlmIChyZXRuKQorCQkJCXJldHVy biByZXRuICsgbjsKIAkJfQogCX0KIAlpZiAoKCh1bnNpZ25lZCBsb25nKSBzcmMgJiAyKSAmJiBu ID49IDIpIHsKIAkJX19hc21fY29weV90b191c2VyXzIoZHN0LCBzcmMsIHJldG4pOwogCQluIC09 IDI7CisJCWlmIChyZXRuKQorCQkJcmV0dXJuIHJldG4gKyBuOwogCX0KIAlpZiAoKHVuc2lnbmVk IGxvbmcpIGRzdCAmIDIpIHsKIAkJLyogU2Vjb25kIHdvcnN0IGNhc2UgLSB3b3JkIGNvcHkgKi8K IAkJd2hpbGUgKG4gPj0gMikgewogCQkJX19hc21fY29weV90b191c2VyXzIoZHN0LCBzcmMsIHJl dG4pOwogCQkJbiAtPSAyOworCQkJaWYgKHJldG4pCisJCQkJcmV0dXJuIHJldG4gKyBuOwogCQl9 CiAJfQogCkBAIC01NjksNiArNjAwLDggQEAgdW5zaWduZWQgbG9uZyBfX2NvcHlfdXNlcih2b2lk IF9fdXNlciAqcGRzdCwgY29uc3Qgdm9pZCAqcHNyYywKIAkJd2hpbGUgKG4gPj0gOCkgewogCQkJ X19hc21fY29weV90b191c2VyXzh4NjQoZHN0LCBzcmMsIHJldG4pOwogCQkJbiAtPSA4OworCQkJ aWYgKHJldG4pCisJCQkJcmV0dXJuIHJldG4gKyBuOwogCQl9CiAJfQogCWlmIChuID49IFJBUEZf TUlOX0JVRl9TSVpFKSB7CkBAIC01ODEsNiArNjE0LDggQEAgdW5zaWduZWQgbG9uZyBfX2NvcHlf dXNlcih2b2lkIF9fdXNlciAqcGRzdCwgY29uc3Qgdm9pZCAqcHNyYywKIAkJd2hpbGUgKG4gPj0g OCkgewogCQkJX19hc21fY29weV90b191c2VyXzh4NjQoZHN0LCBzcmMsIHJldG4pOwogCQkJbiAt PSA4OworCQkJaWYgKHJldG4pCisJCQkJcmV0dXJuIHJldG4gKyBuOwogCQl9CiAJfQogI2VuZGlm CkBAIC01ODgsMTEgKzYyMywxNSBAQCB1bnNpZ25lZCBsb25nIF9fY29weV91c2VyKHZvaWQgX191 c2VyICpwZHN0LCBjb25zdCB2b2lkICpwc3JjLAogCXdoaWxlIChuID49IDE2KSB7CiAJCV9fYXNt X2NvcHlfdG9fdXNlcl8xNihkc3QsIHNyYywgcmV0bik7CiAJCW4gLT0gMTY7CisJCWlmIChyZXRu KQorCQkJcmV0dXJuIHJldG4gKyBuOwogCX0KIAogCXdoaWxlIChuID49IDQpIHsKIAkJX19hc21f Y29weV90b191c2VyXzQoZHN0LCBzcmMsIHJldG4pOwogCQluIC09IDQ7CisJCWlmIChyZXRuKQor CQkJcmV0dXJuIHJldG4gKyBuOwogCX0KIAogCXN3aXRjaCAobikgewpAQCAtNjA5LDYgKzY0OCwx MCBAQCB1bnNpZ25lZCBsb25nIF9fY29weV91c2VyKHZvaWQgX191c2VyICpwZHN0LCBjb25zdCB2 b2lkICpwc3JjLAogCQlicmVhazsKIAl9CiAKKwkvKgorCSAqIElmIHdlIGdldCBoZXJlLCByZXRu IGNvcnJlY3RseSByZWZsZWN0cyB0aGUgbnVtYmVyIG9mIGZhaWxpbmcKKwkgKiBieXRlcy4KKwkg Ki8KIAlyZXR1cm4gcmV0bjsKIH0KIEVYUE9SVF9TWU1CT0woX19jb3B5X3VzZXIpOwpAQCAtNjE3 LDE2ICs2NjAsMTQgQEAgRVhQT1JUX1NZTUJPTChfX2NvcHlfdXNlcik7CiAJX19hc21fY29weV91 c2VyX2NvbnQodG8sIGZyb20sIHJldCwJXAogCQkiCUdFVEIgRDFBcjEsWyUxKytdXG4iCVwKIAkJ IjI6CVNFVEIgWyUwKytdLEQxQXIxXG4iLAlcCi0JCSIzOglBREQgICUyLCUyLCMxXG4iCVwKLQkJ IglTRVRCIFslMCsrXSxEMUFyMVxuIiwJXAorCQkiMzoJQUREICAlMiwlMiwjMVxuIiwJXAogCQki CS5sb25nIDJiLDNiXG4iKQogCiAjZGVmaW5lIF9fYXNtX2NvcHlfZnJvbV91c2VyXzJ4X2NvbnQo dG8sIGZyb20sIHJldCwgQ09QWSwgRklYVVAsIFRFTlRSWSkgXAogCV9fYXNtX2NvcHlfdXNlcl9j b250KHRvLCBmcm9tLCByZXQsCQlcCiAJCSIJR0VUVyBEMUFyMSxbJTErK11cbiIJCVwKIAkJIjI6 CVNFVFcgWyUwKytdLEQxQXIxXG4iIENPUFksCVwKLQkJIjM6CUFERCAgJTIsJTIsIzJcbiIJCVwK LQkJIglTRVRXIFslMCsrXSxEMUFyMVxuIiBGSVhVUCwJXAorCQkiMzoJQUREICAlMiwlMiwjMlxu IiBGSVhVUCwJCVwKIAkJIgkubG9uZyAyYiwzYlxuIiBURU5UUlkpCiAKICNkZWZpbmUgX19hc21f Y29weV9mcm9tX3VzZXJfMih0bywgZnJvbSwgcmV0KSBcCkBAIC02MzYsMTQ1ICs2NzcsMjYgQEAg RVhQT1JUX1NZTUJPTChfX2NvcHlfdXNlcik7CiAJX19hc21fY29weV9mcm9tX3VzZXJfMnhfY29u dCh0bywgZnJvbSwgcmV0LAlcCiAJCSIJR0VUQiBEMUFyMSxbJTErK11cbiIJCVwKIAkJIjQ6CVNF VEIgWyUwKytdLEQxQXIxXG4iLAkJXAotCQkiNToJQUREICAlMiwlMiwjMVxuIgkJXAotCQkiCVNF VEIgWyUwKytdLEQxQXIxXG4iLAkJXAorCQkiNToJQUREICAlMiwlMiwjMVxuIiwJCVwKIAkJIgku bG9uZyA0Yiw1YlxuIikKIAogI2RlZmluZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl80eF9jb250KHRv LCBmcm9tLCByZXQsIENPUFksIEZJWFVQLCBURU5UUlkpIFwKIAlfX2FzbV9jb3B5X3VzZXJfY29u dCh0bywgZnJvbSwgcmV0LAkJXAogCQkiCUdFVEQgRDFBcjEsWyUxKytdXG4iCQlcCiAJCSIyOglT RVREIFslMCsrXSxEMUFyMVxuIiBDT1BZLAlcCi0JCSIzOglBREQgICUyLCUyLCM0XG4iCQlcCi0J CSIJU0VURCBbJTArK10sRDFBcjFcbiIgRklYVVAsCVwKKwkJIjM6CUFERCAgJTIsJTIsIzRcbiIg RklYVVAsCQlcCiAJCSIJLmxvbmcgMmIsM2JcbiIgVEVOVFJZKQogCiAjZGVmaW5lIF9fYXNtX2Nv cHlfZnJvbV91c2VyXzQodG8sIGZyb20sIHJldCkgXAogCV9fYXNtX2NvcHlfZnJvbV91c2VyXzR4 X2NvbnQodG8sIGZyb20sIHJldCwgIiIsICIiLCAiIikKIAotI2RlZmluZSBfX2FzbV9jb3B5X2Zy b21fdXNlcl81KHRvLCBmcm9tLCByZXQpIFwKLQlfX2FzbV9jb3B5X2Zyb21fdXNlcl80eF9jb250 KHRvLCBmcm9tLCByZXQsCVwKLQkJIglHRVRCIEQxQXIxLFslMSsrXVxuIgkJXAotCQkiNDoJU0VU QiBbJTArK10sRDFBcjFcbiIsCQlcCi0JCSI1OglBREQgICUyLCUyLCMxXG4iCQlcCi0JCSIJU0VU QiBbJTArK10sRDFBcjFcbiIsCQlcCi0JCSIJLmxvbmcgNGIsNWJcbiIpCi0KLSNkZWZpbmUgX19h c21fY29weV9mcm9tX3VzZXJfNnhfY29udCh0bywgZnJvbSwgcmV0LCBDT1BZLCBGSVhVUCwgVEVO VFJZKSBcCi0JX19hc21fY29weV9mcm9tX3VzZXJfNHhfY29udCh0bywgZnJvbSwgcmV0LAlcCi0J CSIJR0VUVyBEMUFyMSxbJTErK11cbiIJCVwKLQkJIjQ6CVNFVFcgWyUwKytdLEQxQXIxXG4iIENP UFksCVwKLQkJIjU6CUFERCAgJTIsJTIsIzJcbiIJCVwKLQkJIglTRVRXIFslMCsrXSxEMUFyMVxu IiBGSVhVUCwJXAotCQkiCS5sb25nIDRiLDViXG4iIFRFTlRSWSkKLQotI2RlZmluZSBfX2FzbV9j b3B5X2Zyb21fdXNlcl82KHRvLCBmcm9tLCByZXQpIFwKLQlfX2FzbV9jb3B5X2Zyb21fdXNlcl82 eF9jb250KHRvLCBmcm9tLCByZXQsICIiLCAiIiwgIiIpCi0KLSNkZWZpbmUgX19hc21fY29weV9m cm9tX3VzZXJfNyh0bywgZnJvbSwgcmV0KSBcCi0JX19hc21fY29weV9mcm9tX3VzZXJfNnhfY29u dCh0bywgZnJvbSwgcmV0LAlcCi0JCSIJR0VUQiBEMUFyMSxbJTErK11cbiIJCVwKLQkJIjY6CVNF VEIgWyUwKytdLEQxQXIxXG4iLAkJXAotCQkiNzoJQUREICAlMiwlMiwjMVxuIgkJXAotCQkiCVNF VEIgWyUwKytdLEQxQXIxXG4iLAkJXAotCQkiCS5sb25nIDZiLDdiXG4iKQotCi0jZGVmaW5lIF9f YXNtX2NvcHlfZnJvbV91c2VyXzh4X2NvbnQodG8sIGZyb20sIHJldCwgQ09QWSwgRklYVVAsIFRF TlRSWSkgXAotCV9fYXNtX2NvcHlfZnJvbV91c2VyXzR4X2NvbnQodG8sIGZyb20sIHJldCwJXAot CQkiCUdFVEQgRDFBcjEsWyUxKytdXG4iCQlcCi0JCSI0OglTRVREIFslMCsrXSxEMUFyMVxuIiBD T1BZLAlcCi0JCSI1OglBREQgICUyLCUyLCM0XG4iCQkJXAotCQkiCVNFVEQgWyUwKytdLEQxQXIx XG4iIEZJWFVQLAkJXAotCQkiCS5sb25nIDRiLDViXG4iIFRFTlRSWSkKLQotI2RlZmluZSBfX2Fz bV9jb3B5X2Zyb21fdXNlcl84KHRvLCBmcm9tLCByZXQpIFwKLQlfX2FzbV9jb3B5X2Zyb21fdXNl cl84eF9jb250KHRvLCBmcm9tLCByZXQsICIiLCAiIiwgIiIpCi0KLSNkZWZpbmUgX19hc21fY29w eV9mcm9tX3VzZXJfOSh0bywgZnJvbSwgcmV0KSBcCi0JX19hc21fY29weV9mcm9tX3VzZXJfOHhf Y29udCh0bywgZnJvbSwgcmV0LAlcCi0JCSIJR0VUQiBEMUFyMSxbJTErK11cbiIJCVwKLQkJIjY6 CVNFVEIgWyUwKytdLEQxQXIxXG4iLAkJXAotCQkiNzoJQUREICAlMiwlMiwjMVxuIgkJXAotCQki CVNFVEIgWyUwKytdLEQxQXIxXG4iLAkJXAotCQkiCS5sb25nIDZiLDdiXG4iKQotCi0jZGVmaW5l IF9fYXNtX2NvcHlfZnJvbV91c2VyXzEweF9jb250KHRvLCBmcm9tLCByZXQsIENPUFksIEZJWFVQ LCBURU5UUlkpIFwKLQlfX2FzbV9jb3B5X2Zyb21fdXNlcl84eF9jb250KHRvLCBmcm9tLCByZXQs CVwKLQkJIglHRVRXIEQxQXIxLFslMSsrXVxuIgkJXAotCQkiNjoJU0VUVyBbJTArK10sRDFBcjFc biIgQ09QWSwJXAotCQkiNzoJQUREICAlMiwlMiwjMlxuIgkJXAotCQkiCVNFVFcgWyUwKytdLEQx QXIxXG4iIEZJWFVQLAlcCi0JCSIJLmxvbmcgNmIsN2JcbiIgVEVOVFJZKQotCi0jZGVmaW5lIF9f YXNtX2NvcHlfZnJvbV91c2VyXzEwKHRvLCBmcm9tLCByZXQpIFwKLQlfX2FzbV9jb3B5X2Zyb21f dXNlcl8xMHhfY29udCh0bywgZnJvbSwgcmV0LCAiIiwgIiIsICIiKQotCi0jZGVmaW5lIF9fYXNt X2NvcHlfZnJvbV91c2VyXzExKHRvLCBmcm9tLCByZXQpCQlcCi0JX19hc21fY29weV9mcm9tX3Vz ZXJfMTB4X2NvbnQodG8sIGZyb20sIHJldCwJXAotCQkiCUdFVEIgRDFBcjEsWyUxKytdXG4iCQlc Ci0JCSI4OglTRVRCIFslMCsrXSxEMUFyMVxuIiwJCVwKLQkJIjk6CUFERCAgJTIsJTIsIzFcbiIJ CVwKLQkJIglTRVRCIFslMCsrXSxEMUFyMVxuIiwJCVwKLQkJIgkubG9uZyA4Yiw5YlxuIikKLQot I2RlZmluZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl8xMnhfY29udCh0bywgZnJvbSwgcmV0LCBDT1BZ LCBGSVhVUCwgVEVOVFJZKSBcCi0JX19hc21fY29weV9mcm9tX3VzZXJfOHhfY29udCh0bywgZnJv bSwgcmV0LAlcCi0JCSIJR0VURCBEMUFyMSxbJTErK11cbiIJCVwKLQkJIjY6CVNFVEQgWyUwKytd LEQxQXIxXG4iIENPUFksCVwKLQkJIjc6CUFERCAgJTIsJTIsIzRcbiIJCVwKLQkJIglTRVREIFsl MCsrXSxEMUFyMVxuIiBGSVhVUCwJXAotCQkiCS5sb25nIDZiLDdiXG4iIFRFTlRSWSkKLQotI2Rl ZmluZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl8xMih0bywgZnJvbSwgcmV0KSBcCi0JX19hc21fY29w eV9mcm9tX3VzZXJfMTJ4X2NvbnQodG8sIGZyb20sIHJldCwgIiIsICIiLCAiIikKLQotI2RlZmlu ZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl8xMyh0bywgZnJvbSwgcmV0KSBcCi0JX19hc21fY29weV9m cm9tX3VzZXJfMTJ4X2NvbnQodG8sIGZyb20sIHJldCwJXAotCQkiCUdFVEIgRDFBcjEsWyUxKytd XG4iCQlcCi0JCSI4OglTRVRCIFslMCsrXSxEMUFyMVxuIiwJCVwKLQkJIjk6CUFERCAgJTIsJTIs IzFcbiIJCVwKLQkJIglTRVRCIFslMCsrXSxEMUFyMVxuIiwJCVwKLQkJIgkubG9uZyA4Yiw5Ylxu IikKLQotI2RlZmluZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl8xNHhfY29udCh0bywgZnJvbSwgcmV0 LCBDT1BZLCBGSVhVUCwgVEVOVFJZKSBcCi0JX19hc21fY29weV9mcm9tX3VzZXJfMTJ4X2NvbnQo dG8sIGZyb20sIHJldCwJXAotCQkiCUdFVFcgRDFBcjEsWyUxKytdXG4iCQlcCi0JCSI4OglTRVRX IFslMCsrXSxEMUFyMVxuIiBDT1BZLAlcCi0JCSI5OglBREQgICUyLCUyLCMyXG4iCQlcCi0JCSIJ U0VUVyBbJTArK10sRDFBcjFcbiIgRklYVVAsCVwKLQkJIgkubG9uZyA4Yiw5YlxuIiBURU5UUlkp Ci0KLSNkZWZpbmUgX19hc21fY29weV9mcm9tX3VzZXJfMTQodG8sIGZyb20sIHJldCkgXAotCV9f YXNtX2NvcHlfZnJvbV91c2VyXzE0eF9jb250KHRvLCBmcm9tLCByZXQsICIiLCAiIiwgIiIpCi0K LSNkZWZpbmUgX19hc21fY29weV9mcm9tX3VzZXJfMTUodG8sIGZyb20sIHJldCkgXAotCV9fYXNt X2NvcHlfZnJvbV91c2VyXzE0eF9jb250KHRvLCBmcm9tLCByZXQsCVwKLQkJIglHRVRCIEQxQXIx LFslMSsrXVxuIgkJXAotCQkiMTA6CVNFVEIgWyUwKytdLEQxQXIxXG4iLAkJXAotCQkiMTE6CUFE RCAgJTIsJTIsIzFcbiIJCVwKLQkJIglTRVRCIFslMCsrXSxEMUFyMVxuIiwJCVwKLQkJIgkubG9u ZyAxMGIsMTFiXG4iKQotCi0jZGVmaW5lIF9fYXNtX2NvcHlfZnJvbV91c2VyXzE2eF9jb250KHRv LCBmcm9tLCByZXQsIENPUFksIEZJWFVQLCBURU5UUlkpIFwKLQlfX2FzbV9jb3B5X2Zyb21fdXNl cl8xMnhfY29udCh0bywgZnJvbSwgcmV0LAlcCi0JCSIJR0VURCBEMUFyMSxbJTErK11cbiIJCVwK LQkJIjg6CVNFVEQgWyUwKytdLEQxQXIxXG4iIENPUFksCVwKLQkJIjk6CUFERCAgJTIsJTIsIzRc biIJCVwKLQkJIglTRVREIFslMCsrXSxEMUFyMVxuIiBGSVhVUCwJXAotCQkiCS5sb25nIDhiLDli XG4iIFRFTlRSWSkKLQotI2RlZmluZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl8xNih0bywgZnJvbSwg cmV0KSBcCi0JX19hc21fY29weV9mcm9tX3VzZXJfMTZ4X2NvbnQodG8sIGZyb20sIHJldCwgIiIs ICIiLCAiIikKLQogI2RlZmluZSBfX2FzbV9jb3B5X2Zyb21fdXNlcl84eDY0KHRvLCBmcm9tLCBy ZXQpIFwKIAlhc20gdm9sYXRpbGUgKAkJCQlcCiAJCSIJR0VUTCBEMEFyMixEMUFyMSxbJTErK11c biIJXAogCQkiMjoJU0VUTCBbJTArK10sRDBBcjIsRDFBcjFcbiIJXAogCQkiMTpcbiIJCQkJCVwK IAkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCVwKLQkJIglNT1YgRDFBcjEsIzBcbiIJCQlc Ci0JCSIJTU9WIEQwQXIyLCMwXG4iCQkJXAogCQkiMzoJQUREICAlMiwlMiwjOFxuIgkJXAotCQki CVNFVEwgWyUwKytdLEQwQXIyLEQxQXIxXG4iCVwKIAkJIglNT1ZUICAgIEQwQXIyLCNISSgxYilc biIJXAogCQkiCUpVTVAgICAgRDBBcjIsI0xPKDFiKVxuIglcCiAJCSIJLnByZXZpb3VzXG4iCQkJ XApAQCAtNzg5LDM2ICs3MTEsNTcgQEAgRVhQT1JUX1NZTUJPTChfX2NvcHlfdXNlcik7CiAgKgog ICoJUmF0aW9uYWxlOgogICoJCUEgZmF1bHQgb2NjdXJzIHdoaWxlIHJlYWRpbmcgZnJvbSB1c2Vy IGJ1ZmZlciwgd2hpY2ggaXMgdGhlCi0gKgkJc291cmNlLiBTaW5jZSB0aGUgZmF1bHQgaXMgYXQg YSBzaW5nbGUgYWRkcmVzcywgd2Ugb25seQotICoJCW5lZWQgdG8gcmV3aW5kIGJ5IDggYnl0ZXMu CisgKgkJc291cmNlLgogICoJCVNpbmNlIHdlIGRvbid0IHdyaXRlIHRvIGtlcm5lbCBidWZmZXIg dW50aWwgd2UgcmVhZCBmaXJzdCwKICAqCQl0aGUga2VybmVsIGJ1ZmZlciBpcyBhdCB0aGUgcmln aHQgc3RhdGUgYW5kIG5lZWRuJ3QgYmUKLSAqCQljb3JyZWN0ZWQuCisgKgkJY29ycmVjdGVkLCBi dXQgdGhlIHNvdXJjZSBtdXN0IGJlIHJld291bmQgdG8gdGhlIGJlZ2lubmluZyBvZgorICoJCXRo ZSBibG9jaywgd2hpY2ggaXMgTFNNX1NURVAqOCBieXRlcy4KKyAqCQlMU01fU1RFUCBpcyBiaXRz IDEwOjggaW4gVFhTVEFUVVMgd2hpY2ggaXMgYWxyZWFkeSByZWFkCisgKgkJYW5kIHN0b3JlZCBp biBEMEFyMgorICoKKyAqCQlOT1RFOiBJZiBhIGZhdWx0IG9jY3VycyBhdCB0aGUgbGFzdCBvcGVy YXRpb24gaW4gTXtHLFN9RVRMCisgKgkJCUxTTV9TVEVQIHdpbGwgYmUgMC4gaWU6IHdlIGRvIDQg d3JpdGVzIGluIG91ciBjYXNlLCBpZgorICoJCQlhIGZhdWx0IGhhcHBlbnMgYXQgdGhlIDR0aCB3 cml0ZSwgTFNNX1NURVAgd2lsbCBiZSAwCisgKgkJCWluc3RlYWQgb2YgNC4gVGhlIGNvZGUgY29w ZXMgd2l0aCB0aGF0LgogICovCiAjZGVmaW5lIF9fYXNtX2NvcHlfZnJvbV91c2VyXzY0Yml0X3Jh cGZfbG9vcCh0bywgZnJvbSwgcmV0LCBuLCBpZCkJXAogCV9fYXNtX2NvcHlfdXNlcl82NGJpdF9y YXBmX2xvb3AodG8sIGZyb20sIHJldCwgbiwgaWQsCQlcCi0JCSJTVUIJJTEsICUxLCAjOFxuIikK KwkJIkxTUglEMEFyMiwgRDBBcjIsICM1XG4iCQkJCVwKKwkJIkFORFMJRDBBcjIsIEQwQXIyLCAj MHgzOFxuIgkJCQlcCisJCSJBRERaCUQwQXIyLCBEMEFyMiwgIzMyXG4iCQkJCVwKKwkJIlNVQgkl MSwgJTEsIEQwQXIyXG4iKQogCiAvKglyZXdpbmQgJ2Zyb20nIHBvaW50ZXIgd2hlbiBhIGZhdWx0 IG9jY3VycwogICoKICAqCVJhdGlvbmFsZToKICAqCQlBIGZhdWx0IG9jY3VycyB3aGlsZSByZWFk aW5nIGZyb20gdXNlciBidWZmZXIsIHdoaWNoIGlzIHRoZQotICoJCXNvdXJjZS4gU2luY2UgdGhl IGZhdWx0IGlzIGF0IGEgc2luZ2xlIGFkZHJlc3MsIHdlIG9ubHkKLSAqCQluZWVkIHRvIHJld2lu ZCBieSA0IGJ5dGVzLgorICoJCXNvdXJjZS4KICAqCQlTaW5jZSB3ZSBkb24ndCB3cml0ZSB0byBr ZXJuZWwgYnVmZmVyIHVudGlsIHdlIHJlYWQgZmlyc3QsCiAgKgkJdGhlIGtlcm5lbCBidWZmZXIg aXMgYXQgdGhlIHJpZ2h0IHN0YXRlIGFuZCBuZWVkbid0IGJlCi0gKgkJY29ycmVjdGVkLgorICoJ CWNvcnJlY3RlZCwgYnV0IHRoZSBzb3VyY2UgbXVzdCBiZSByZXdvdW5kIHRvIHRoZSBiZWdpbm5p bmcgb2YKKyAqCQl0aGUgYmxvY2ssIHdoaWNoIGlzIExTTV9TVEVQKjQgYnl0ZXMuCisgKgkJTFNN X1NURVAgaXMgYml0cyAxMDo4IGluIFRYU1RBVFVTIHdoaWNoIGlzIGFscmVhZHkgcmVhZAorICoJ CWFuZCBzdG9yZWQgaW4gRDBBcjIKKyAqCisgKgkJTk9URTogSWYgYSBmYXVsdCBvY2N1cnMgYXQg dGhlIGxhc3Qgb3BlcmF0aW9uIGluIE17RyxTfUVUTAorICoJCQlMU01fU1RFUCB3aWxsIGJlIDAu IGllOiB3ZSBkbyA0IHdyaXRlcyBpbiBvdXIgY2FzZSwgaWYKKyAqCQkJYSBmYXVsdCBoYXBwZW5z IGF0IHRoZSA0dGggd3JpdGUsIExTTV9TVEVQIHdpbGwgYmUgMAorICoJCQlpbnN0ZWFkIG9mIDQu IFRoZSBjb2RlIGNvcGVzIHdpdGggdGhhdC4KICAqLwogI2RlZmluZSBfX2FzbV9jb3B5X2Zyb21f dXNlcl8zMmJpdF9yYXBmX2xvb3AodG8sIGZyb20sIHJldCwgbiwgaWQpCVwKIAlfX2FzbV9jb3B5 X3VzZXJfMzJiaXRfcmFwZl9sb29wKHRvLCBmcm9tLCByZXQsIG4sIGlkLAkJXAotCQkiU1VCCSUx LCAlMSwgIzRcbiIpCisJCSJMU1IJRDBBcjIsIEQwQXIyLCAjNlxuIgkJCQlcCisJCSJBTkRTCUQw QXIyLCBEMEFyMiwgIzB4MWNcbiIJCQkJXAorCQkiQUREWglEMEFyMiwgRDBBcjIsICMxNlxuIgkJ CQlcCisJCSJTVUIJJTEsICUxLCBEMEFyMlxuIikKIAogCi0vKiBDb3B5IGZyb20gdXNlciB0byBr ZXJuZWwsIHplcm9pbmcgdGhlIGJ5dGVzIHRoYXQgd2VyZSBpbmFjY2Vzc2libGUgaW4KLSAgIHVz ZXJsYW5kLiAgVGhlIHJldHVybi12YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2Vy ZQotICAgaW5hY2Nlc3NpYmxlLiAgKi8KLXVuc2lnbmVkIGxvbmcgX19jb3B5X3VzZXJfemVyb2lu Zyh2b2lkICpwZHN0LCBjb25zdCB2b2lkIF9fdXNlciAqcHNyYywKLQkJCQkgIHVuc2lnbmVkIGxv bmcgbikKKy8qCisgKiBDb3B5IGZyb20gdXNlciB0byBrZXJuZWwuIFRoZSByZXR1cm4tdmFsdWUg aXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUKKyAqIGluYWNjZXNzaWJsZS4KKyAqLwor dW5zaWduZWQgbG9uZyByYXdfY29weV9mcm9tX3VzZXIodm9pZCAqcGRzdCwgY29uc3Qgdm9pZCBf X3VzZXIgKnBzcmMsCisJCQkJIHVuc2lnbmVkIGxvbmcgbikKIHsKIAlyZWdpc3RlciBjaGFyICpk c3QgYXNtICgiQTAuMiIpID0gcGRzdDsKIAlyZWdpc3RlciBjb25zdCBjaGFyIF9fdXNlciAqc3Jj IGFzbSAoIkExLjIiKSA9IHBzcmM7CkBAIC04MzAsNiArNzczLDggQEAgdW5zaWduZWQgbG9uZyBf X2NvcHlfdXNlcl96ZXJvaW5nKHZvaWQgKnBkc3QsIGNvbnN0IHZvaWQgX191c2VyICpwc3JjLAog CWlmICgodW5zaWduZWQgbG9uZykgc3JjICYgMSkgewogCQlfX2FzbV9jb3B5X2Zyb21fdXNlcl8x KGRzdCwgc3JjLCByZXRuKTsKIAkJbi0tOworCQlpZiAocmV0bikKKwkJCXJldHVybiByZXRuICsg bjsKIAl9CiAJaWYgKCh1bnNpZ25lZCBsb25nKSBkc3QgJiAxKSB7CiAJCS8qIFdvcnN0IGNhc2Ug LSBieXRlIGNvcHkgKi8KQEAgLTgzNywxMiArNzgyLDE0IEBAIHVuc2lnbmVkIGxvbmcgX19jb3B5 X3VzZXJfemVyb2luZyh2b2lkICpwZHN0LCBjb25zdCB2b2lkIF9fdXNlciAqcHNyYywKIAkJCV9f YXNtX2NvcHlfZnJvbV91c2VyXzEoZHN0LCBzcmMsIHJldG4pOwogCQkJbi0tOwogCQkJaWYgKHJl dG4pCi0JCQkJZ290byBjb3B5X2V4Y2VwdGlvbl9ieXRlczsKKwkJCQlyZXR1cm4gcmV0biArIG47 CiAJCX0KIAl9CiAJaWYgKCgodW5zaWduZWQgbG9uZykgc3JjICYgMikgJiYgbiA+PSAyKSB7CiAJ CV9fYXNtX2NvcHlfZnJvbV91c2VyXzIoZHN0LCBzcmMsIHJldG4pOwogCQluIC09IDI7CisJCWlm IChyZXRuKQorCQkJcmV0dXJuIHJldG4gKyBuOwogCX0KIAlpZiAoKHVuc2lnbmVkIGxvbmcpIGRz dCAmIDIpIHsKIAkJLyogU2Vjb25kIHdvcnN0IGNhc2UgLSB3b3JkIGNvcHkgKi8KQEAgLTg1MCwx NiArNzk3LDEwIEBAIHVuc2lnbmVkIGxvbmcgX19jb3B5X3VzZXJfemVyb2luZyh2b2lkICpwZHN0 LCBjb25zdCB2b2lkIF9fdXNlciAqcHNyYywKIAkJCV9fYXNtX2NvcHlfZnJvbV91c2VyXzIoZHN0 LCBzcmMsIHJldG4pOwogCQkJbiAtPSAyOwogCQkJaWYgKHJldG4pCi0JCQkJZ290byBjb3B5X2V4 Y2VwdGlvbl9ieXRlczsKKwkJCQlyZXR1cm4gcmV0biArIG47CiAJCX0KIAl9CiAKLQkvKiBXZSBv bmx5IG5lZWQgb25lIGNoZWNrIGFmdGVyIHRoZSB1bmFsaWdubWVudC1hZGp1c3RtZW50cywKLQkg ICBiZWNhdXNlIGlmIGJvdGggYWRqdXN0bWVudHMgd2VyZSBkb25lLCBlaXRoZXIgYm90aCBvcgot CSAgIG5laXRoZXIgcmVmZXJlbmNlIGhhZCBhbiBleGNlcHRpb24uICAqLwotCWlmIChyZXRuICE9 IDApCi0JCWdvdG8gY29weV9leGNlcHRpb25fYnl0ZXM7Ci0KICNpZmRlZiBVU0VfUkFQRgogCS8q IDY0IGJpdCBjb3B5IGxvb3AgKi8KIAlpZiAoISgoKHVuc2lnbmVkIGxvbmcpIHNyYyB8ICh1bnNp Z25lZCBsb25nKSBkc3QpICYgNykpIHsKQEAgLTg3Miw3ICs4MTMsNyBAQCB1bnNpZ25lZCBsb25n IF9fY29weV91c2VyX3plcm9pbmcodm9pZCAqcGRzdCwgY29uc3Qgdm9pZCBfX3VzZXIgKnBzcmMs CiAJCQlfX2FzbV9jb3B5X2Zyb21fdXNlcl84eDY0KGRzdCwgc3JjLCByZXRuKTsKIAkJCW4gLT0g ODsKIAkJCWlmIChyZXRuKQotCQkJCWdvdG8gY29weV9leGNlcHRpb25fYnl0ZXM7CisJCQkJcmV0 dXJuIHJldG4gKyBuOwogCQl9CiAJfQogCkBAIC04ODgsNyArODI5LDcgQEAgdW5zaWduZWQgbG9u ZyBfX2NvcHlfdXNlcl96ZXJvaW5nKHZvaWQgKnBkc3QsIGNvbnN0IHZvaWQgX191c2VyICpwc3Jj LAogCQkJX19hc21fY29weV9mcm9tX3VzZXJfOHg2NChkc3QsIHNyYywgcmV0bik7CiAJCQluIC09 IDg7CiAJCQlpZiAocmV0bikKLQkJCQlnb3RvIGNvcHlfZXhjZXB0aW9uX2J5dGVzOworCQkJCXJl dHVybiByZXRuICsgbjsKIAkJfQogCX0KICNlbmRpZgpAQCAtODk4LDcgKzgzOSw3IEBAIHVuc2ln bmVkIGxvbmcgX19jb3B5X3VzZXJfemVyb2luZyh2b2lkICpwZHN0LCBjb25zdCB2b2lkIF9fdXNl ciAqcHNyYywKIAkJbiAtPSA0OwogCiAJCWlmIChyZXRuKQotCQkJZ290byBjb3B5X2V4Y2VwdGlv bl9ieXRlczsKKwkJCXJldHVybiByZXRuICsgbjsKIAl9CiAKIAkvKiBJZiB3ZSBnZXQgaGVyZSwg dGhlcmUgd2VyZSBubyBtZW1vcnkgcmVhZCBmYXVsdHMuICAqLwpAQCAtOTI0LDIxICs4NjUsOCBA QCB1bnNpZ25lZCBsb25nIF9fY29weV91c2VyX3plcm9pbmcodm9pZCAqcGRzdCwgY29uc3Qgdm9p ZCBfX3VzZXIgKnBzcmMsCiAJLyogSWYgd2UgZ2V0IGhlcmUsIHJldG4gY29ycmVjdGx5IHJlZmxl Y3RzIHRoZSBudW1iZXIgb2YgZmFpbGluZwogCSAgIGJ5dGVzLiAgKi8KIAlyZXR1cm4gcmV0bjsK LQotIGNvcHlfZXhjZXB0aW9uX2J5dGVzOgotCS8qIFdlIGFscmVhZHkgaGF2ZSAicmV0biIgYnl0 ZXMgY2xlYXJlZCwgYW5kIG5lZWQgdG8gY2xlYXIgdGhlCi0JICAgcmVtYWluaW5nICJuIiBieXRl cy4gIEEgbm9uLW9wdGltaXplZCBzaW1wbGUgYnl0ZS1mb3ItYnl0ZSBpbi1saW5lCi0JICAgbWVt c2V0IGlzIHByZWZlcnJlZCBoZXJlLCBzaW5jZSB0aGlzIGlzbid0IHNwZWVkLWNyaXRpY2FsIGNv ZGUgYW5kCi0JICAgd2UnZCByYXRoZXIgaGF2ZSB0aGlzIGEgbGVhZi1mdW5jdGlvbiB0aGFuIGNh bGxpbmcgbWVtc2V0LiAgKi8KLQl7Ci0JCWNoYXIgKmVuZHA7Ci0JCWZvciAoZW5kcCA9IGRzdCAr IG47IGRzdCA8IGVuZHA7IGRzdCsrKQotCQkJKmRzdCA9IDA7Ci0JfQotCi0JcmV0dXJuIHJldG4g KyBuOwogfQotRVhQT1JUX1NZTUJPTChfX2NvcHlfdXNlcl96ZXJvaW5nKTsKK0VYUE9SVF9TWU1C T0wocmF3X2NvcHlfZnJvbV91c2VyKTsKIAogI2RlZmluZSBfX2FzbV9jbGVhcl84eDY0KHRvLCBy ZXQpIFwKIAlhc20gdm9sYXRpbGUgKAkJCQkJXApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1 ZGUvYXNtL3NwaW5sb2NrLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc3BpbmxvY2suaAppbmRl eCA3OGQyMDFmYjZjODcuLjgyYmViNzU5YTk3ZCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1 ZGUvYXNtL3NwaW5sb2NrLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgK QEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfc3Bpbl9sb2NrKGFyY2hf c3BpbmxvY2tfdCAqbG9jaykKIAkJIglhbmRpCSVbdGlja2V0XSwgJVt0aWNrZXRdLCAweGZmZmYJ CVxuIgogCQkiCWJuZQklW3RpY2tldF0sICVbbXlfdGlja2V0XSwgNGYJCVxuIgogCQkiCSBzdWJ1 CSVbdGlja2V0XSwgJVtteV90aWNrZXRdLCAlW3RpY2tldF0JXG4iCi0JCSIyOgkJCQkJCQlcbiIK KwkJIjI6CS5pbnNuCQkJCQkJXG4iCiAJCSIJLnN1YnNlY3Rpb24gMgkJCQkJXG4iCiAJCSI0Oglh bmRpCSVbdGlja2V0XSwgJVt0aWNrZXRdLCAweGZmZmYJCVxuIgogCQkiCXNsbAklW3RpY2tldF0s IDUJCQkJXG4iCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg YXJjaF9zcGluX3RyeWxvY2soYXJjaF9zcGlubG9ja190ICpsb2NrKQogCQkiCXNjCSVbdGlja2V0 XSwgJVt0aWNrZXRfcHRyXQkJXG4iCiAJCSIJYmVxegklW3RpY2tldF0sIDFiCQkJCVxuIgogCQki CSBsaQklW3RpY2tldF0sIDEJCQkJXG4iCi0JCSIyOgkJCQkJCQlcbiIKKwkJIjI6CS5pbnNuCQkJ CQkJXG4iCiAJCSIJLnN1YnNlY3Rpb24gMgkJCQkJXG4iCiAJCSIzOgliCTJiCQkJCQlcbiIKIAkJ IgkgbGkJJVt0aWNrZXRdLCAwCQkJCVxuIgpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBpbmxp bmUgaW50IGFyY2hfcmVhZF90cnlsb2NrKGFyY2hfcndsb2NrX3QgKnJ3KQogCQkiCS5zZXQJcmVv cmRlcgkJCQkJXG4iCiAJCV9fV0VBS19MTFNDX01CCiAJCSIJbGkJJTIsIDEJCQkJCVxuIgotCQki MjoJCQkJCQkJXG4iCisJCSIyOgkuaW5zbgkJCQkJCVxuIgogCQk6ICI9bSIgKHJ3LT5sb2NrKSwg Ij0mciIgKHRtcCksICI9JnIiIChyZXQpCiAJCTogIm0iIChydy0+bG9jaykKIAkJOiAibWVtb3J5 Iik7CkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYXJjaF93cml0ZV90cnls b2NrKGFyY2hfcndsb2NrX3QgKnJ3KQogCQkJIglsdWkJJTEsIDB4ODAwMAkJCVxuIgogCQkJIglz YwklMSwgJTAJCQkJXG4iCiAJCQkiCWxpCSUyLCAxCQkJCVxuIgotCQkJIjI6CQkJCQkJXG4iCisJ CQkiMjoJLmluc24JCQkJCVxuIgogCQkJOiAiPW0iIChydy0+bG9jayksICI9JnIiICh0bXApLCAi PSZyIiAocmV0KQogCQkJOiAibSIgKHJ3LT5sb2NrKQogCQkJOiAibWVtb3J5Iik7CmRpZmYgLS1n aXQgYS9hcmNoL21pcHMva2VybmVsL2tnZGIuYyBiL2FyY2gvbWlwcy9rZXJuZWwva2dkYi5jCmlu ZGV4IDdhZmNjMmYyMmMwZC4uMzc0OTlhMjM0ZGM4IDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2Vy bmVsL2tnZGIuYworKysgYi9hcmNoL21pcHMva2VybmVsL2tnZGIuYwpAQCAtMjQ0LDkgKzI0NCw2 IEBAIHN0YXRpYyBpbnQgY29tcHV0ZV9zaWduYWwoaW50IHR0KQogdm9pZCBzbGVlcGluZ190aHJl YWRfdG9fZ2RiX3JlZ3ModW5zaWduZWQgbG9uZyAqZ2RiX3JlZ3MsIHN0cnVjdCB0YXNrX3N0cnVj dCAqcCkKIHsKIAlpbnQgcmVnOwotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSB0YXNrX3RocmVh ZF9pbmZvKHApOwotCXVuc2lnbmVkIGxvbmcga3NwID0gKHVuc2lnbmVkIGxvbmcpdGkgKyBUSFJF QURfU0laRSAtIDMyOwotCXN0cnVjdCBwdF9yZWdzICpyZWdzID0gKHN0cnVjdCBwdF9yZWdzICop a3NwIC0gMTsKICNpZiAoS0dEQl9HREJfUkVHX1NJWkUgPT0gMzIpCiAJdTMyICpwdHIgPSAodTMy ICopZ2RiX3JlZ3M7CiAjZWxzZQpAQCAtMjU0LDI1ICsyNTEsNDYgQEAgdm9pZCBzbGVlcGluZ190 aHJlYWRfdG9fZ2RiX3JlZ3ModW5zaWduZWQgbG9uZyAqZ2RiX3JlZ3MsIHN0cnVjdCB0YXNrX3N0 cnVjdCAqcCkKICNlbmRpZgogCiAJZm9yIChyZWcgPSAwOyByZWcgPCAxNjsgcmVnKyspCi0JCSoo cHRyKyspID0gcmVncy0+cmVnc1tyZWddOworCQkqKHB0cisrKSA9IDA7CiAKIAkvKiBTMCAtIFM3 ICovCi0JZm9yIChyZWcgPSAxNjsgcmVnIDwgMjQ7IHJlZysrKQotCQkqKHB0cisrKSA9IHJlZ3Mt PnJlZ3NbcmVnXTsKKwkqKHB0cisrKSA9IHAtPnRocmVhZC5yZWcxNjsKKwkqKHB0cisrKSA9IHAt PnRocmVhZC5yZWcxNzsKKwkqKHB0cisrKSA9IHAtPnRocmVhZC5yZWcxODsKKwkqKHB0cisrKSA9 IHAtPnRocmVhZC5yZWcxOTsKKwkqKHB0cisrKSA9IHAtPnRocmVhZC5yZWcyMDsKKwkqKHB0cisr KSA9IHAtPnRocmVhZC5yZWcyMTsKKwkqKHB0cisrKSA9IHAtPnRocmVhZC5yZWcyMjsKKwkqKHB0 cisrKSA9IHAtPnRocmVhZC5yZWcyMzsKIAogCWZvciAocmVnID0gMjQ7IHJlZyA8IDI4OyByZWcr KykKIAkJKihwdHIrKykgPSAwOwogCiAJLyogR1AsIFNQLCBGUCwgUkEgKi8KLQlmb3IgKHJlZyA9 IDI4OyByZWcgPCAzMjsgcmVnKyspCi0JCSoocHRyKyspID0gcmVncy0+cmVnc1tyZWddOwotCi0J KihwdHIrKykgPSByZWdzLT5jcDBfc3RhdHVzOwotCSoocHRyKyspID0gcmVncy0+bG87Ci0JKihw dHIrKykgPSByZWdzLT5oaTsKLQkqKHB0cisrKSA9IHJlZ3MtPmNwMF9iYWR2YWRkcjsKLQkqKHB0 cisrKSA9IHJlZ3MtPmNwMF9jYXVzZTsKLQkqKHB0cisrKSA9IHJlZ3MtPmNwMF9lcGM7CisJKihw dHIrKykgPSAobG9uZylwOworCSoocHRyKyspID0gcC0+dGhyZWFkLnJlZzI5OworCSoocHRyKysp ID0gcC0+dGhyZWFkLnJlZzMwOworCSoocHRyKyspID0gcC0+dGhyZWFkLnJlZzMxOworCisJKihw dHIrKykgPSBwLT50aHJlYWQuY3AwX3N0YXR1czsKKworCS8qIGxvLCBoaSAqLworCSoocHRyKysp ID0gMDsKKwkqKHB0cisrKSA9IDA7CisKKwkvKgorCSAqIEJhZFZBZGRyLCBDYXVzZQorCSAqIElk ZWFsbHkgdGhlc2Ugd291bGQgY29tZSBmcm9tIHRoZSBsYXN0IGV4Y2VwdGlvbiBmcmFtZSB1cCB0 aGUgc3RhY2sKKwkgKiBidXQgdGhhdCByZXF1aXJlcyB1bndpbmRpbmcsIG90aGVyd2lzZSB3ZSBj YW4ndCBrbm93IG11Y2ggZm9yIHN1cmUuCisJICovCisJKihwdHIrKykgPSAwOworCSoocHRyKysp ID0gMDsKKworCS8qCisJICogUEMKKwkgKiB1c2UgcmV0dXJuIGFkZHJlc3MgKFJBKSwgaS5lLiB0 aGUgbW9tZW50IGFmdGVyIHJldHVybiBmcm9tIHJlc3VtZSgpCisJICovCisJKihwdHIrKykgPSBw LT50aHJlYWQucmVnMzE7CiB9CiAKIHZvaWQga2dkYl9hcmNoX3NldF9wYyhzdHJ1Y3QgcHRfcmVn cyAqcmVncywgdW5zaWduZWQgbG9uZyBwYykKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290 L3pJbWFnZS5sZHMuUyBiL2FyY2gvcG93ZXJwYy9ib290L3pJbWFnZS5sZHMuUwppbmRleCA4NjFl NzIxMDlkZjIuLmYwODBhYmZjMmY4MyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3Qveklt YWdlLmxkcy5TCisrKyBiL2FyY2gvcG93ZXJwYy9ib290L3pJbWFnZS5sZHMuUwpAQCAtNjgsNiAr NjgsNyBAQCBTRUNUSU9OUwogICB9CiAKICNpZmRlZiBDT05GSUdfUFBDNjRfQk9PVF9XUkFQUEVS CisgIC4gPSBBTElHTigyNTYpOwogICAuZ290IDoKICAgewogICAgIF9fdG9jX3N0YXJ0ID0gLjsK ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcGNfYXNtLmggYi9hcmNoL3Bv d2VycGMvaW5jbHVkZS9hc20vcHBjX2FzbS5oCmluZGV4IDdlNDYxMjUyODU0Ni4uNmQyMzA0NTU1 NWM2IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjX2FzbS5oCisrKyBi L2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcGNfYXNtLmgKQEAgLTIxNywxMyArMjE3LDYgQEAg bmFtZTogXAogCWFkZGkgcjIscjIsKC5UT0MuLTBiKUBsOyBcCiAJLmxvY2FsZW50cnkgbmFtZSwu LW5hbWUKIAotI2RlZmluZSBfS1BST0JFKG5hbWUpIFwKLQkuc2VjdGlvbiAiLmtwcm9iZXMudGV4 dCIsImEiOyBcCi0JLmFsaWduIDIgOyBcCi0JLnR5cGUgbmFtZSxAZnVuY3Rpb247IFwKLQkuZ2xv YmwgbmFtZTsgXAotbmFtZToKLQogI2RlZmluZSBET1RTWU0oYSkJYQogCiAjZWxzZQpAQCAtMjQ3 LDIwICsyNDAsNiBAQCBuYW1lOiBcCiAKICNkZWZpbmUgX0dMT0JBTF9UT0MobmFtZSkgX0dMT0JB TChuYW1lKQogCi0jZGVmaW5lIF9LUFJPQkUobmFtZSkgXAotCS5zZWN0aW9uICIua3Byb2Jlcy50 ZXh0IiwiYSI7IFwKLQkuYWxpZ24gMiA7IFwKLQkuZ2xvYmwgbmFtZTsgXAotCS5nbG9ibCBHTFVF KC4sbmFtZSk7IFwKLQkuc2VjdGlvbiAiLm9wZCIsImF3IjsgXAotbmFtZTogXAotCS5xdWFkIEdM VUUoLixuYW1lKTsgXAotCS5xdWFkIC5UT0MuQHRvY2Jhc2U7IFwKLQkucXVhZCAwOyBcCi0JLnBy ZXZpb3VzOyBcCi0JLnR5cGUgR0xVRSguLG5hbWUpLEBmdW5jdGlvbjsgXAotR0xVRSguLG5hbWUp OgotCiAjZGVmaW5lIERPVFNZTShhKQlHTFVFKC4sYSkKIAogI2VuZGlmCkBAIC0yNzksMTMgKzI1 OCwyMiBAQCBuYW1lOiBcCiAKICNkZWZpbmUgX0dMT0JBTF9UT0MobmFtZSkgX0dMT0JBTChuYW1l KQogCi0jZGVmaW5lIF9LUFJPQkUobikJXAotCS5zZWN0aW9uICIua3Byb2Jlcy50ZXh0IiwiYSI7 CVwKLQkuZ2xvYmwJbjsJXAotbjoKLQogI2VuZGlmCiAKKy8qCisgKiBfX2twcm9iZXMgKHRoZSBD IGFubm90YXRpb24pIHB1dHMgdGhlIHN5bWJvbCBpbnRvIHRoZSAua3Byb2Jlcy50ZXh0CisgKiBz ZWN0aW9uLCB3aGljaCBnZXRzIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiByZWd1bGFyIHRleHQuCisg KgorICogX0FTTV9OT0tQUk9CRV9TWU1CT0wgYW5kIE5PS1BST0JFX1NZTUJPTCBqdXN0IGFkZHMg dGhlIHN5bWJvbCB0bworICogYSBibGFja2xpc3QuIFRoZSBmb3JtZXIgaXMgZm9yIGNvcmUga3By b2JlIGZ1bmN0aW9ucy9kYXRhLCB0aGUKKyAqIGxhdHRlciBpcyBmb3IgdGhvc2UgdGhhdCBpbmNk ZW50aWFsbHkgbXVzdCBiZSBleGNsdWRlZCBmcm9tIHByb2JpbmcKKyAqIGFuZCBhbGxvd3MgdGhl bSB0byBiZSBsaW5rZWQgYXQgbW9yZSBvcHRpbWFsIGxvY2F0aW9uIHdpdGhpbiB0ZXh0LgorICov CisjZGVmaW5lIF9BU01fTk9LUFJPQkVfU1lNQk9MKGVudHJ5KQkJCVwKKwkucHVzaHNlY3Rpb24g Il9rcHJvYmVfYmxhY2tsaXN0IiwiYXciOwkJXAorCVBQQ19MT05HIChlbnRyeSkgOwkJCQlcCisJ LnBvcHNlY3Rpb24KKwogLyogCiAgKiBMT0FEX1JFR19JTU1FRElBVEUocm4sIGV4cHIpCiAgKiAg IExvYWRzIHRoZSB2YWx1ZSBvZiB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbiAnZXhwcicgaW50byBy ZWdpc3RlciAncm4nCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2FsaWduLmMgYi9h cmNoL3Bvd2VycGMva2VybmVsL2FsaWduLmMKaW5kZXggMzRmNTU1MjRkNDU2Li5jZTA2OGNiMjA3 MWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvYWxpZ24uYworKysgYi9hcmNoL3Bv d2VycGMva2VybmVsL2FsaWduLmMKQEAgLTgwOCwxNCArODA4LDI1IEBAIGludCBmaXhfYWxpZ25t ZW50KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCW5iID0gYWxpZ25pbmZvW2luc3RyXS5sZW47CiAJ ZmxhZ3MgPSBhbGlnbmluZm9baW5zdHJdLmZsYWdzOwogCi0JLyogbGRicngvc3RkYnJ4IG92ZXJs YXAgbGZzL3N0ZnMgaW4gdGhlIERTSVNSIHVuZm9ydHVuYXRlbHkgKi8KLQlpZiAoSVNfWEZPUk0o aW5zdHJ1Y3Rpb24pICYmICgoaW5zdHJ1Y3Rpb24gPj4gMSkgJiAweDNmZikgPT0gNTMyKSB7Ci0J CW5iID0gODsKLQkJZmxhZ3MgPSBMRCtTVzsKLQl9IGVsc2UgaWYgKElTX1hGT1JNKGluc3RydWN0 aW9uKSAmJgotCQkgICAoKGluc3RydWN0aW9uID4+IDEpICYgMHgzZmYpID09IDY2MCkgewotCQlu YiA9IDg7Ci0JCWZsYWdzID0gU1QrU1c7CisJLyoKKwkgKiBIYW5kbGUgc29tZSBjYXNlcyB3aGlj aCBnaXZlIG92ZXJsYXBzIGluIHRoZSBEU0lTUiB2YWx1ZXMuCisJICovCisJaWYgKElTX1hGT1JN KGluc3RydWN0aW9uKSkgeworCQlzd2l0Y2ggKGdldF94b3AoaW5zdHJ1Y3Rpb24pKSB7CisJCWNh c2UgNTMyOgkvKiBsZGJyeCAqLworCQkJbmIgPSA4OworCQkJZmxhZ3MgPSBMRCtTVzsKKwkJCWJy ZWFrOworCQljYXNlIDY2MDoJLyogc3RkYnJ4ICovCisJCQluYiA9IDg7CisJCQlmbGFncyA9IFNU K1NXOworCQkJYnJlYWs7CisJCWNhc2UgMjA6CS8qIGx3YXJ4ICovCisJCWNhc2UgODQ6CS8qIGxk YXJ4ICovCisJCWNhc2UgMTE2OgkvKiBsaGFyeCAqLworCQljYXNlIDI3NjoJLyogbHFhcnggKi8K KwkJCXJldHVybiAwOwkvKiBub3QgZW11bGF0ZWQgZXZlciAqLworCQl9CiAJfQogCiAJLyogQnl0 ZXN3YXAgbGl0dGxlIGVuZGlhbiBsb2FkcyBhbmQgc3RvcmVzICovCmRpZmYgLS1naXQgYS9hcmNo L3Bvd2VycGMva2VybmVsL21pc2NfMzIuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY18zMi5T CmluZGV4IDJjNzBiYmNiMDA2Zi4uMDcwMzczOGQwOTJmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2Vy cGMva2VybmVsL21pc2NfMzIuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL21pc2NfMzIuUwpA QCAtMzQ1LDcgKzM0NSw3IEBAIEVORF9GVFJfU0VDVElPTl9JRlNFVChDUFVfRlRSX1VOSUZJRURf SURfQ0FDSEUpCiAgKgogICogZmx1c2hfaWNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGxvbmcgc3RvcCkKICAqLwotX0tQUk9CRShmbHVzaF9pY2FjaGVfcmFuZ2UpCitf R0xPQkFMKGZsdXNoX2ljYWNoZV9yYW5nZSkKIEJFR0lOX0ZUUl9TRUNUSU9OCiAJUFVSR0VfUFJF RkVUQ0hFRF9JTlMKIAlibHIJCQkJLyogZm9yIDYwMSwgZG8gbm90aGluZyAqLwpAQCAtMzc2LDYg KzM3Niw4IEBAIEVORF9GVFJfU0VDVElPTl9JRlNFVChDUFVfRlRSX0NPSEVSRU5UX0lDQUNIRSkK IAlzeW5jCQkJCS8qIGFkZGl0aW9uYWwgc3luYyBuZWVkZWQgb24gZzQgKi8KIAlpc3luYwogCWJs cgorX0FTTV9OT0tQUk9CRV9TWU1CT0woZmx1c2hfaWNhY2hlX3JhbmdlKQorCiAvKgogICogV3Jp dGUgYW55IG1vZGlmaWVkIGRhdGEgY2FjaGUgYmxvY2tzIG91dCB0byBtZW1vcnkuCiAgKiBEb2Vz IG5vdCBpbnZhbGlkYXRlIHRoZSBjb3JyZXNwb25kaW5nIGNhY2hlIGxpbmVzIChlc3BlY2lhbGx5 IGZvcgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjXzY0LlMgYi9hcmNoL3Bv d2VycGMva2VybmVsL21pc2NfNjQuUwppbmRleCA0ZTMxNGI5MGM3NWQuLjJiNTdjZDljOGQ2YSAx MDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjXzY0LlMKKysrIGIvYXJjaC9wb3dl cnBjL2tlcm5lbC9taXNjXzY0LlMKQEAgLTY1LDcgKzY1LDcgQEAgX0dMT0JBTChjYWxsX2RvX2ly cSkKICAqICAgZmx1c2ggYWxsIGJ5dGVzIGZyb20gc3RhcnQgdGhyb3VnaCBzdG9wLTEgaW5jbHVz aXZlCiAgKi8KIAotX0tQUk9CRShmbHVzaF9pY2FjaGVfcmFuZ2UpCitfR0xPQkFMX1RPQyhmbHVz aF9pY2FjaGVfcmFuZ2UpCiBCRUdJTl9GVFJfU0VDVElPTgogCVBVUkdFX1BSRUZFVENIRURfSU5T CiAJYmxyCkBAIC0xMDgsNyArMTA4LDggQEAgRU5EX0ZUUl9TRUNUSU9OX0lGU0VUKENQVV9GVFJf Q09IRVJFTlRfSUNBQ0hFKQogCWJkbnoJMmIKIAlpc3luYwogCWJscgotCS5wcmV2aW91cyAudGV4 dAorX0FTTV9OT0tQUk9CRV9TWU1CT0woZmx1c2hfaWNhY2hlX3JhbmdlKQorCiAvKgogICogTGlr ZSBhYm92ZSwgYnV0IG9ubHkgZG8gdGhlIEQtY2FjaGUuCiAgKgpAQCAtMTE2LDcgKzExNyw3IEBA IEVORF9GVFJfU0VDVElPTl9JRlNFVChDUFVfRlRSX0NPSEVSRU5UX0lDQUNIRSkKICAqCiAgKiAg ICBmbHVzaCBhbGwgYnl0ZXMgZnJvbSBzdGFydCB0byBzdG9wLTEgaW5jbHVzaXZlCiAgKi8KLV9H TE9CQUwoZmx1c2hfZGNhY2hlX3JhbmdlKQorX0dMT0JBTF9UT0MoZmx1c2hfZGNhY2hlX3Jhbmdl KQogCiAvKgogICogRmx1c2ggdGhlIGRhdGEgY2FjaGUgdG8gbWVtb3J5IApkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1 cF82NC5jCmluZGV4IGVlMDgyZDc3MTE3OC4uNGYxZjY3OTM2YTVmIDEwMDY0NAotLS0gYS9hcmNo L3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1 cF82NC5jCkBAIC0xOTgsNiArMTk4LDE1IEBAIHN0YXRpYyB2b2lkIGZpeHVwX2Jvb3RfcGFjYSh2 b2lkKQogCiBzdGF0aWMgdm9pZCBjcHVfcmVhZHlfZm9yX2ludGVycnVwdHModm9pZCkKIHsKKwkv KgorCSAqIEZpeHVwIEhGU0NSOlRNIGJhc2VkIG9uIENQVSBmZWF0dXJlcy4gVGhlIGJpdCBpcyBz ZXQgYnkgb3VyCisJICogZWFybHkgYXNtIGluaXQgYmVjYXVzZSBhdCB0aGF0IHBvaW50IHdlIGhh dmVuJ3QgdXBkYXRlZCBvdXIKKwkgKiBDUFUgZmVhdHVyZXMgZnJvbSBmaXJtd2FyZSBhbmQgZGV2 aWNlLXRyZWUuIEhlcmUgd2UgaGF2ZSwKKwkgKiBzbyBsZXQncyBkbyBpdC4KKwkgKi8KKwlpZiAo Y3B1X2hhc19mZWF0dXJlKENQVV9GVFJfSFZNT0RFKSAmJiAhY3B1X2hhc19mZWF0dXJlKENQVV9G VFJfVE1fQ09NUCkpCisJCW10c3ByKFNQUk5fSEZTQ1IsIG1mc3ByKFNQUk5fSEZTQ1IpICYgfkhG U0NSX1RNKTsKKwogCS8qIFNldCBJUiBhbmQgRFIgaW4gUEFDQSBNU1IgKi8KIAlnZXRfcGFjYSgp LT5rZXJuZWxfbXNyID0gTVNSX0tFUk5FTDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2Jvb3Qv Y29tcHJlc3NlZC9taXNjLmMgYi9hcmNoL3MzOTAvYm9vdC9jb21wcmVzc2VkL21pc2MuYwppbmRl eCA1N2NiYWZmMWYzOTcuLmQ3M2M4ODc4YjBjMSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2Jvb3Qv Y29tcHJlc3NlZC9taXNjLmMKKysrIGIvYXJjaC9zMzkwL2Jvb3QvY29tcHJlc3NlZC9taXNjLmMK QEAgLTE0MiwzMSArMTQyLDM0IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2lwbF9wYXJtYmxvY2sodm9p ZCAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAogdW5zaWduZWQgbG9uZyBkZWNvbXByZXNz X2tlcm5lbCh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgb3V0cHV0X2FkZHI7Ci0JdW5zaWduZWQg Y2hhciAqb3V0cHV0OworCXZvaWQgKm91dHB1dCwgKmtlcm5lbF9lbmQ7CiAKLQlvdXRwdXRfYWRk ciA9ICgodW5zaWduZWQgbG9uZykgJl9lbmQgKyBIRUFQX1NJWkUgKyA0MDk1VUwpICYgLTQwOTZV TDsKLQljaGVja19pcGxfcGFybWJsb2NrKCh2b2lkICopIDAsIG91dHB1dF9hZGRyICsgU1pfX2Jz c19zdGFydCk7Ci0JbWVtc2V0KCZfYnNzLCAwLCAmX2Vic3MgLSAmX2Jzcyk7Ci0JZnJlZV9tZW1f cHRyID0gKHVuc2lnbmVkIGxvbmcpJl9lbmQ7Ci0JZnJlZV9tZW1fZW5kX3B0ciA9IGZyZWVfbWVt X3B0ciArIEhFQVBfU0laRTsKLQlvdXRwdXQgPSAodW5zaWduZWQgY2hhciAqKSBvdXRwdXRfYWRk cjsKKwlvdXRwdXQgPSAodm9pZCAqKSBBTElHTigodW5zaWduZWQgbG9uZykgJl9lbmQgKyBIRUFQ X1NJWkUsIFBBR0VfU0laRSk7CisJa2VybmVsX2VuZCA9IG91dHB1dCArIFNaX19ic3Nfc3RhcnQ7 CisJY2hlY2tfaXBsX3Bhcm1ibG9jaygodm9pZCAqKSAwLCAodW5zaWduZWQgbG9uZykga2VybmVs X2VuZCk7CiAKICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JTklUUkQKIAkvKgogCSAqIE1vdmUgdGhl IGluaXRyZCByaWdodCBiZWhpbmQgdGhlIGVuZCBvZiB0aGUgZGVjb21wcmVzc2VkCi0JICoga2Vy bmVsIGltYWdlLgorCSAqIGtlcm5lbCBpbWFnZS4gVGhpcyBhbHNvIHByZXZlbnRzIGluaXRyZCBj b3JydXB0aW9uIGNhdXNlZCBieQorCSAqIGJzcyBjbGVhcmluZyBzaW5jZSBrZXJuZWxfZW5kIHdp bGwgYWx3YXlzIGJlIGxvY2F0ZWQgYmVoaW5kIHRoZQorCSAqIGN1cnJlbnQgYnNzIHNlY3Rpb24u LgogCSAqLwotCWlmIChJTklUUkRfU1RBUlQgJiYgSU5JVFJEX1NJWkUgJiYKLQkgICAgSU5JVFJE X1NUQVJUIDwgKHVuc2lnbmVkIGxvbmcpIG91dHB1dCArIFNaX19ic3Nfc3RhcnQpIHsKLQkJY2hl Y2tfaXBsX3Bhcm1ibG9jayhvdXRwdXQgKyBTWl9fYnNzX3N0YXJ0LAotCQkJCSAgICBJTklUUkRf U1RBUlQgKyBJTklUUkRfU0laRSk7Ci0JCW1lbW1vdmUob3V0cHV0ICsgU1pfX2Jzc19zdGFydCwK LQkJCSh2b2lkICopIElOSVRSRF9TVEFSVCwgSU5JVFJEX1NJWkUpOwotCQlJTklUUkRfU1RBUlQg PSAodW5zaWduZWQgbG9uZykgb3V0cHV0ICsgU1pfX2Jzc19zdGFydDsKKwlpZiAoSU5JVFJEX1NU QVJUICYmIElOSVRSRF9TSVpFICYmIGtlcm5lbF9lbmQgPiAodm9pZCAqKSBJTklUUkRfU1RBUlQp IHsKKwkJY2hlY2tfaXBsX3Bhcm1ibG9jayhrZXJuZWxfZW5kLCBJTklUUkRfU0laRSk7CisJCW1l bW1vdmUoa2VybmVsX2VuZCwgKHZvaWQgKikgSU5JVFJEX1NUQVJULCBJTklUUkRfU0laRSk7CisJ CUlOSVRSRF9TVEFSVCA9ICh1bnNpZ25lZCBsb25nKSBrZXJuZWxfZW5kOwogCX0KICNlbmRpZgog CisJLyoKKwkgKiBDbGVhciBic3Mgc2VjdGlvbi4gZnJlZV9tZW1fcHRyIGFuZCBmcmVlX21lbV9l bmRfcHRyIG5lZWQgdG8gYmUKKwkgKiBpbml0aWFsaXplZCBhZnRlcndhcmRzIHNpbmNlIHRoZXkg cmVzaWRlIGluIGJzcy4KKwkgKi8KKwltZW1zZXQoJl9ic3MsIDAsICZfZWJzcyAtICZfYnNzKTsK KwlmcmVlX21lbV9wdHIgPSAodW5zaWduZWQgbG9uZykgJl9lbmQ7CisJZnJlZV9tZW1fZW5kX3B0 ciA9IGZyZWVfbWVtX3B0ciArIEhFQVBfU0laRTsKKwogCXB1dHMoIlVuY29tcHJlc3NpbmcgTGlu dXguLi4gIik7CiAJZGVjb21wcmVzcyhpbnB1dF9kYXRhLCBpbnB1dF9sZW4sIE5VTEwsIE5VTEws IG91dHB1dCwgTlVMTCwgZXJyb3IpOwogCXB1dHMoIk9rLCBib290aW5nIHRoZSBrZXJuZWwuXG4i KTsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3Mz OTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IDg5MDRlMTI4MjU2Mi4uNTg5ZjljNjU0MTZh IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oCisrKyBiL2FyY2gv czM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKQEAgLTg2OCw2ICs4NjgsOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0X3B0ZV9hdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBh ZGRyLAogewogCXBnc3RlX3QgcGdzdGU7CiAKKwlpZiAocHRlX3ByZXNlbnQoZW50cnkpKQorCQlw dGVfdmFsKGVudHJ5KSAmPSB+X1BBR0VfVU5VU0VEOwogCWlmIChtbV9oYXNfcGdzdGUobW0pKSB7 CiAJCXBnc3RlID0gcGdzdGVfZ2V0X2xvY2socHRlcCk7CiAJCXBnc3RlX3ZhbChwZ3N0ZSkgJj0g fl9QR1NURV9HUFNfWkVSTzsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91YWNj ZXNzLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDUyOGYwOGMxZDU4 NC4uNmU1ZmMyZDhjNDAwIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vdWFjY2Vz cy5oCisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTE0OCw3ICsxNDgs NyBAQCB1bnNpZ25lZCBsb25nIF9fbXVzdF9jaGVjayBfX2NvcHlfdG9fdXNlcih2b2lkIF9fdXNl ciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sCiAJCSIJamcJMmJcbiIJCQkJXAogCQkiLnBvcHNlY3Rp b25cbiIJCQkJCVwKIAkJRVhfVEFCTEUoMGIsM2IpIEVYX1RBQkxFKDFiLDNiKQkJCVwKLQkJOiAi PWQiIChfX3JjKSwgIj1RIiAoKih0bykpCQkJXAorCQk6ICI9ZCIgKF9fcmMpLCAiK1EiICgqKHRv KSkJCQlcCiAJCTogImQiIChzaXplKSwgIlEiICgqKGZyb20pKSwJCQlcCiAJCSAgImQiIChfX3Jl ZzApLCAiSyIgKC1FRkFVTFQpCQkJXAogCQk6ICJjYyIpOwkJCQkJXApkaWZmIC0tZ2l0IGEvYXJj aC9zMzkwL21tL3BndGFibGUuYyBiL2FyY2gvczM5MC9tbS9wZ3RhYmxlLmMKaW5kZXggODBmY2Rm YjhhODEwLi42ODAyNTMwMDI1NGYgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9tbS9wZ3RhYmxlLmMK KysrIGIvYXJjaC9zMzkwL21tL3BndGFibGUuYwpAQCAtMTQxMSwxMSArMTQxMSwyOCBAQCBFWFBP UlRfU1lNQk9MX0dQTChzMzkwX2VuYWJsZV9za2V5KTsKICAqLwogYm9vbCBnbWFwX3Rlc3RfYW5k X2NsZWFyX2RpcnR5KHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgc3RydWN0IGdtYXAgKmdtYXApCiB7 CisJcGdkX3QgKnBnZDsKKwlwdWRfdCAqcHVkOworCXBtZF90ICpwbWQ7CiAJcHRlX3QgKnB0ZTsK IAlzcGlubG9ja190ICpwdGw7CiAJYm9vbCBkaXJ0eSA9IGZhbHNlOwogCi0JcHRlID0gZ2V0X2xv Y2tlZF9wdGUoZ21hcC0+bW0sIGFkZHJlc3MsICZwdGwpOworCXBnZCA9IHBnZF9vZmZzZXQoZ21h cC0+bW0sIGFkZHJlc3MpOworCXB1ZCA9IHB1ZF9hbGxvYyhnbWFwLT5tbSwgcGdkLCBhZGRyZXNz KTsKKwlpZiAoIXB1ZCkKKwkJcmV0dXJuIGZhbHNlOworCXBtZCA9IHBtZF9hbGxvYyhnbWFwLT5t bSwgcHVkLCBhZGRyZXNzKTsKKwlpZiAoIXBtZCkKKwkJcmV0dXJuIGZhbHNlOworCS8qIFdlIGNh bid0IHJ1biBndWVzdHMgYmFja2VkIGJ5IGh1Z2UgcGFnZXMsIGJ1dCB1c2Vyc3BhY2UgY2FuCisJ ICogc3RpbGwgc2V0IHRoZW0gdXAgYW5kIHRoZW4gdHJ5IHRvIG1pZ3JhdGUgdGhlbSB3aXRob3V0 IGFueQorCSAqIG1pZ3JhdGlvbiBzdXBwb3J0LgorCSAqLworCWlmIChwbWRfbGFyZ2UoKnBtZCkp CisJCXJldHVybiB0cnVlOworCisJcHRlID0gcHRlX2FsbG9jX21hcF9sb2NrKGdtYXAtPm1tLCBw bWQsIGFkZHJlc3MsICZwdGwpOwogCWlmICh1bmxpa2VseSghcHRlKSkKIAkJcmV0dXJuIGZhbHNl OwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbGYuaCBiL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2VsZi5oCmluZGV4IGNhMzM0N2E5ZGFiNS4uMmU1YTc5YWQ5MDYxIDEwMDY0NAot LS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbGYuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9lbGYuaApAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCB0YXNrX3N0cnVjdDsKIAogI2RlZmlu ZQlBUkNIX0RMSU5GT19JQTMyCQkJCQkJXAogZG8gewkJCQkJCQkJCVwKLQlpZiAodmRzbzMyX2Vu YWJsZWQpIHsJCQkJCQlcCisJaWYgKFZEU09fQ1VSUkVOVF9CQVNFKSB7CQkJCQlcCiAJCU5FV19B VVhfRU5UKEFUX1NZU0lORk8sCVZEU09fRU5UUlkpOwkJCVwKIAkJTkVXX0FVWF9FTlQoQVRfU1lT SU5GT19FSERSLCBWRFNPX0NVUlJFTlRfQkFTRSk7CVwKIAl9CQkJCQkJCQlcCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnRfaW50ZWxfbGJyLmMgYi9hcmNoL3g4Ni9r ZXJuZWwvY3B1L3BlcmZfZXZlbnRfaW50ZWxfbGJyLmMKaW5kZXggOWRkMjQ1OWE0YzczLi4zMmEx NGZlMmE2NWMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9pbnRl bF9sYnIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnRfaW50ZWxfbGJyLmMK QEAgLTI2OCw2ICsyNjgsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbXVfbGJyX3JlYWRfMzIoc3Ry dWN0IGNwdV9od19ldmVudHMgKmNwdWMpCiAJCWNwdWMtPmxicl9lbnRyaWVzW2ldLnRvCQk9IG1z cl9sYXN0YnJhbmNoLnRvOwogCQljcHVjLT5sYnJfZW50cmllc1tpXS5taXNwcmVkCT0gMDsKIAkJ Y3B1Yy0+bGJyX2VudHJpZXNbaV0ucHJlZGljdGVkCT0gMDsKKwkJY3B1Yy0+bGJyX2VudHJpZXNb aV0uaW5fdHgJPSAwOworCQljcHVjLT5sYnJfZW50cmllc1tpXS5hYm9ydAk9IDA7CiAJCWNwdWMt Pmxicl9lbnRyaWVzW2ldLnJlc2VydmVkCT0gMDsKIAl9CiAJY3B1Yy0+bGJyX3N0YWNrLm5yID0g aTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9mdHJhY2UuYyBiL2FyY2gveDg2L2tlcm5l bC9mdHJhY2UuYwppbmRleCBjYmM0YTkxYjEzMWUuLmIxM2JiZGVlYmZjZSAxMDA2NDQKLS0tIGEv YXJjaC94ODYva2VybmVsL2Z0cmFjZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9mdHJhY2UuYwpA QCAtNzAzLDYgKzcwMywxOCBAQCB2b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBs b25nICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgc2VsZl9hZGRyLAogCXVuc2lnbmVkIGxvbmcgcmV0 dXJuX2hvb2tlciA9ICh1bnNpZ25lZCBsb25nKQogCQkJCSZyZXR1cm5fdG9faGFuZGxlcjsKIAor CS8qCisJICogV2hlbiByZXN1bWluZyBmcm9tIHN1c3BlbmQtdG8tcmFtLCB0aGlzIGZ1bmN0aW9u IGNhbiBiZSBpbmRpcmVjdGx5CisJICogY2FsbGVkIGZyb20gZWFybHkgQ1BVIHN0YXJ0dXAgY29k ZSB3aGlsZSB0aGUgQ1BVIGlzIGluIHJlYWwgbW9kZSwKKwkgKiB3aGljaCB3b3VsZCBmYWlsIG1p c2VyYWJseS4gIE1ha2Ugc3VyZSB0aGUgc3RhY2sgcG9pbnRlciBpcyBhCisJICogdmlydHVhbCBh ZGRyZXNzLgorCSAqCisJICogVGhpcyBjaGVjayBpc24ndCBhcyBhY2N1cmF0ZSBhcyB2aXJ0X2Fk ZHJfdmFsaWQoKSwgYnV0IGl0IHNob3VsZCBiZQorCSAqIGdvb2QgZW5vdWdoIGZvciB0aGlzIHB1 cnBvc2UsIGFuZCBpdCdzIGZhc3QuCisJICovCisJaWYgKHVubGlrZWx5KChsb25nKV9fYnVpbHRp bl9mcmFtZV9hZGRyZXNzKDApID49IDApKQorCQlyZXR1cm47CisKIAlpZiAodW5saWtlbHkoYXRv bWljX3JlYWQoJmN1cnJlbnQtPnRyYWNpbmdfZ3JhcGhfcGF1c2UpKSkKIAkJcmV0dXJuOwogCmRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwva3Byb2Jlcy9jb21tb24uaCBiL2FyY2gveDg2L2tl cm5lbC9rcHJvYmVzL2NvbW1vbi5oCmluZGV4IGM2ZWU2M2Y5MjdhYi4uZDY4ODgyNmU1NzM2IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwva3Byb2Jlcy9jb21tb24uaAorKysgYi9hcmNoL3g4 Ni9rZXJuZWwva3Byb2Jlcy9jb21tb24uaApAQCAtNjcsNyArNjcsNyBAQAogI2VuZGlmCiAKIC8q IEVuc3VyZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gY2FuIGJlIGJvb3N0YWJsZSAqLwotZXh0ZXJuIGlu dCBjYW5fYm9vc3Qoa3Byb2JlX29wY29kZV90ICppbnN0cnVjdGlvbik7CitleHRlcm4gaW50IGNh bl9ib29zdChrcHJvYmVfb3Bjb2RlX3QgKmluc3RydWN0aW9uLCB2b2lkICphZGRyKTsKIC8qIFJl Y292ZXIgaW5zdHJ1Y3Rpb24gaWYgZ2l2ZW4gYWRkcmVzcyBpcyBwcm9iZWQgKi8KIGV4dGVybiB1 bnNpZ25lZCBsb25nIHJlY292ZXJfcHJvYmVkX2luc3RydWN0aW9uKGtwcm9iZV9vcGNvZGVfdCAq YnVmLAogCQkJCQkgdW5zaWduZWQgbG9uZyBhZGRyKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tl cm5lbC9rcHJvYmVzL2NvcmUuYyBiL2FyY2gveDg2L2tlcm5lbC9rcHJvYmVzL2NvcmUuYwppbmRl eCBhNzhhYTExOGFmYzIuLmI2NTQ3YTQ0MWJhZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVs L2twcm9iZXMvY29yZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9rcHJvYmVzL2NvcmUuYwpAQCAt MTYzLDEyICsxNjMsMTIgQEAgTk9LUFJPQkVfU1lNQk9MKHNraXBfcHJlZml4ZXMpOwogICogUmV0 dXJucyBub24temVybyBpZiBvcGNvZGUgaXMgYm9vc3RhYmxlLgogICogUklQIHJlbGF0aXZlIGlu c3RydWN0aW9ucyBhcmUgYWRqdXN0ZWQgYXQgY29weWluZyB0aW1lIGluIDY0IGJpdHMgbW9kZQog ICovCi1pbnQgY2FuX2Jvb3N0KGtwcm9iZV9vcGNvZGVfdCAqb3Bjb2RlcykKK2ludCBjYW5fYm9v c3Qoa3Byb2JlX29wY29kZV90ICpvcGNvZGVzLCB2b2lkICphZGRyKQogewogCWtwcm9iZV9vcGNv ZGVfdCBvcGNvZGU7CiAJa3Byb2JlX29wY29kZV90ICpvcmlnX29wY29kZXMgPSBvcGNvZGVzOwog Ci0JaWYgKHNlYXJjaF9leGNlcHRpb25fdGFibGVzKCh1bnNpZ25lZCBsb25nKW9wY29kZXMpKQor CWlmIChzZWFyY2hfZXhjZXB0aW9uX3RhYmxlcygodW5zaWduZWQgbG9uZylhZGRyKSkKIAkJcmV0 dXJuIDA7CS8qIFBhZ2UgZmF1bHQgbWF5IG9jY3VyIG9uIHRoaXMgYWRkcmVzcy4gKi8KIAogcmV0 cnk6CkBAIC0zODUsNyArMzg1LDcgQEAgc3RhdGljIGludCBhcmNoX2NvcHlfa3Byb2JlKHN0cnVj dCBrcHJvYmUgKnApCiAJICogX19jb3B5X2luc3RydWN0aW9uIGNhbiBtb2RpZnkgdGhlIGRpc3Bs YWNlbWVudCBvZiB0aGUgaW5zdHJ1Y3Rpb24sCiAJICogYnV0IGl0IGRvZXNuJ3QgYWZmZWN0IGJv b3N0YWJsZSBjaGVjay4KIAkgKi8KLQlpZiAoY2FuX2Jvb3N0KHAtPmFpbnNuLmluc24pKQorCWlm IChjYW5fYm9vc3QocC0+YWluc24uaW5zbiwgcC0+YWRkcikpCiAJCXAtPmFpbnNuLmJvb3N0YWJs ZSA9IDA7CiAJZWxzZQogCQlwLT5haW5zbi5ib29zdGFibGUgPSAtMTsKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2tlcm5lbC9rcHJvYmVzL29wdC5jIGIvYXJjaC94ODYva2VybmVsL2twcm9iZXMvb3B0 LmMKaW5kZXggZjMwNDc3MzI4NWFlLi43ZjQxMmVkNTg5MzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2tlcm5lbC9rcHJvYmVzL29wdC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9rcHJvYmVzL29wdC5j CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGludCBjb3B5X29wdGltaXplZF9pbnN0cnVjdGlv bnModTggKmRlc3QsIHU4ICpzcmMpCiAKIAl3aGlsZSAobGVuIDwgUkVMQVRJVkVKVU1QX1NJWkUp IHsKIAkJcmV0ID0gX19jb3B5X2luc3RydWN0aW9uKGRlc3QgKyBsZW4sIHNyYyArIGxlbik7Ci0J CWlmICghcmV0IHx8ICFjYW5fYm9vc3QoZGVzdCArIGxlbikpCisJCWlmICghcmV0IHx8ICFjYW5f Ym9vc3QoZGVzdCArIGxlbiwgc3JjICsgbGVuKSkKIAkJCXJldHVybiAtRUlOVkFMOwogCQlsZW4g Kz0gcmV0OwogCX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXQuYyBiL2FyY2gveDg2L21t L2luaXQuYwppbmRleCBmOTcxMzA2MTgxMTMuLjg5YzQzYTFjZTgyYiAxMDA2NDQKLS0tIGEvYXJj aC94ODYvbW0vaW5pdC5jCisrKyBiL2FyY2gveDg2L21tL2luaXQuYwpAQCAtNTczLDIxICs1NzMs NDAgQEAgdm9pZCBfX2luaXQgaW5pdF9tZW1fbWFwcGluZyh2b2lkKQogICogZGV2bWVtX2lzX2Fs bG93ZWQoKSBjaGVja3MgdG8gc2VlIGlmIC9kZXYvbWVtIGFjY2VzcyB0byBhIGNlcnRhaW4gYWRk cmVzcwogICogaXMgdmFsaWQuIFRoZSBhcmd1bWVudCBpcyBhIHBoeXNpY2FsIHBhZ2UgbnVtYmVy LgogICoKLSAqCi0gKiBPbiB4ODYsIGFjY2VzcyBoYXMgdG8gYmUgZ2l2ZW4gdG8gdGhlIGZpcnN0 IG1lZ2FieXRlIG9mIHJhbSBiZWNhdXNlIHRoYXQgYXJlYQotICogY29udGFpbnMgYmlvcyBjb2Rl IGFuZCBkYXRhIHJlZ2lvbnMgdXNlZCBieSBYIGFuZCBkb3NlbXUgYW5kIHNpbWlsYXIgYXBwcy4K LSAqIEFjY2VzcyBoYXMgdG8gYmUgZ2l2ZW4gdG8gbm9uLWtlcm5lbC1yYW0gYXJlYXMgYXMgd2Vs bCwgdGhlc2UgY29udGFpbiB0aGUgUENJCi0gKiBtbWlvIHJlc291cmNlcyBhcyB3ZWxsIGFzIHBv dGVudGlhbCBiaW9zL2FjcGkgZGF0YSByZWdpb25zLgorICogT24geDg2LCBhY2Nlc3MgaGFzIHRv IGJlIGdpdmVuIHRvIHRoZSBmaXJzdCBtZWdhYnl0ZSBvZiBSQU0gYmVjYXVzZSB0aGF0CisgKiBh cmVhIHRyYWRpdGlvbmFsbHkgY29udGFpbnMgQklPUyBjb2RlIGFuZCBkYXRhIHJlZ2lvbnMgdXNl ZCBieSBYLCBkb3NlbXUsCisgKiBhbmQgc2ltaWxhciBhcHBzLiBTaW5jZSB0aGV5IG1hcCB0aGUg ZW50aXJlIG1lbW9yeSByYW5nZSwgdGhlIHdob2xlIHJhbmdlCisgKiBtdXN0IGJlIGFsbG93ZWQg KGZvciBtYXBwaW5nKSwgYnV0IGFueSBhcmVhcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQorICog ZGlzYWxsb3dlZCBhcmUgZmxhZ2dlZCBhcyBiZWluZyAiemVybyBmaWxsZWQiIGluc3RlYWQgb2Yg cmVqZWN0ZWQuCisgKiBBY2Nlc3MgaGFzIHRvIGJlIGdpdmVuIHRvIG5vbi1rZXJuZWwtcmFtIGFy ZWFzIGFzIHdlbGwsIHRoZXNlIGNvbnRhaW4gdGhlCisgKiBQQ0kgbW1pbyByZXNvdXJjZXMgYXMg d2VsbCBhcyBwb3RlbnRpYWwgYmlvcy9hY3BpIGRhdGEgcmVnaW9ucy4KICAqLwogaW50IGRldm1l bV9pc19hbGxvd2VkKHVuc2lnbmVkIGxvbmcgcGFnZW5yKQogewotCWlmIChwYWdlbnIgPCAyNTYp Ci0JCXJldHVybiAxOwotCWlmIChpb21lbV9pc19leGNsdXNpdmUocGFnZW5yIDw8IFBBR0VfU0hJ RlQpKQorCWlmIChwYWdlX2lzX3JhbShwYWdlbnIpKSB7CisJCS8qCisJCSAqIEZvciBkaXNhbGxv d2VkIG1lbW9yeSByZWdpb25zIGluIHRoZSBsb3cgMU1CIHJhbmdlLAorCQkgKiByZXF1ZXN0IHRo YXQgdGhlIHBhZ2UgYmUgc2hvd24gYXMgYWxsIHplcm9zLgorCQkgKi8KKwkJaWYgKHBhZ2VuciA8 IDI1NikKKwkJCXJldHVybiAyOworCisJCXJldHVybiAwOworCX0KKworCS8qCisJICogVGhpcyBt dXN0IGZvbGxvdyBSQU0gdGVzdCwgc2luY2UgU3lzdGVtIFJBTSBpcyBjb25zaWRlcmVkIGEKKwkg KiByZXN0cmljdGVkIHJlc291cmNlIHVuZGVyIENPTkZJR19TVFJJQ1RfSU9NRU0uCisJICovCisJ aWYgKGlvbWVtX2lzX2V4Y2x1c2l2ZShwYWdlbnIgPDwgUEFHRV9TSElGVCkpIHsKKwkJLyogTG93 IDFNQiBieXBhc3NlcyBpb21lbSByZXN0cmljdGlvbnMuICovCisJCWlmIChwYWdlbnIgPCAyNTYp CisJCQlyZXR1cm4gMTsKKwogCQlyZXR1cm4gMDsKLQlpZiAoIXBhZ2VfaXNfcmFtKHBhZ2Vucikp Ci0JCXJldHVybiAxOwotCXJldHVybiAwOworCX0KKworCXJldHVybiAxOwogfQogCiB2b2lkIGZy ZWVfaW5pdF9wYWdlcyhjaGFyICp3aGF0LCB1bnNpZ25lZCBsb25nIGJlZ2luLCB1bnNpZ25lZCBs b25nIGVuZCkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BjaS94ZW4uYyBiL2FyY2gveDg2L3BjaS94 ZW4uYwppbmRleCA5MDU5NTZmMTY0NjUuLjhhMDZkYTcwN2RmMSAxMDA2NDQKLS0tIGEvYXJjaC94 ODYvcGNpL3hlbi5jCisrKyBiL2FyY2gveDg2L3BjaS94ZW4uYwpAQCAtMjI4LDIzICsyMjgsMTQg QEAgc3RhdGljIGludCB4ZW5faHZtX3NldHVwX21zaV9pcnFzKHN0cnVjdCBwY2lfZGV2ICpkZXYs IGludCBudmVjLCBpbnQgdHlwZSkKIAkJcmV0dXJuIDE7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KG1zaWRlc2MsICZkZXYtPm1zaV9saXN0LCBsaXN0KSB7Ci0JCV9fcmVhZF9tc2lfbXNnKG1zaWRl c2MsICZtc2cpOwotCQlwaXJxID0gTVNJX0FERFJfRVhUX0RFU1RfSUQobXNnLmFkZHJlc3NfaGkp IHwKLQkJCSgobXNnLmFkZHJlc3NfbG8gPj4gTVNJX0FERFJfREVTVF9JRF9TSElGVCkgJiAweGZm KTsKLQkJaWYgKG1zZy5kYXRhICE9IFhFTl9QSVJRX01TSV9EQVRBIHx8Ci0JCSAgICB4ZW5faXJx X2Zyb21fcGlycShwaXJxKSA8IDApIHsKLQkJCXBpcnEgPSB4ZW5fYWxsb2NhdGVfcGlycV9tc2ko ZGV2LCBtc2lkZXNjKTsKLQkJCWlmIChwaXJxIDwgMCkgewotCQkJCWlycSA9IC1FTk9ERVY7Ci0J CQkJZ290byBlcnJvcjsKLQkJCX0KLQkJCXhlbl9tc2lfY29tcG9zZV9tc2coZGV2LCBwaXJxLCAm bXNnKTsKLQkJCV9fd3JpdGVfbXNpX21zZyhtc2lkZXNjLCAmbXNnKTsKLQkJCWRldl9kYmcoJmRl di0+ZGV2LCAieGVuOiBtc2kgYm91bmQgdG8gcGlycT0lZFxuIiwgcGlycSk7Ci0JCX0gZWxzZSB7 Ci0JCQlkZXZfZGJnKCZkZXYtPmRldiwKLQkJCQkieGVuOiBtc2kgYWxyZWFkeSBib3VuZCB0byBw aXJxPSVkXG4iLCBwaXJxKTsKKwkJcGlycSA9IHhlbl9hbGxvY2F0ZV9waXJxX21zaShkZXYsIG1z aWRlc2MpOworCQlpZiAocGlycSA8IDApIHsKKwkJCWlycSA9IC1FTk9ERVY7CisJCQlnb3RvIGVy cm9yOwogCQl9CisJCXhlbl9tc2lfY29tcG9zZV9tc2coZGV2LCBwaXJxLCAmbXNnKTsKKwkJX193 cml0ZV9tc2lfbXNnKG1zaWRlc2MsICZtc2cpOworCQlkZXZfZGJnKCZkZXYtPmRldiwgInhlbjog bXNpIGJvdW5kIHRvIHBpcnE9JWRcbiIsIHBpcnEpOwogCQlpcnEgPSB4ZW5fYmluZF9waXJxX21z aV90b19pcnEoZGV2LCBtc2lkZXNjLCBwaXJxLAogCQkJCQkgICAgICAgKHR5cGUgPT0gUENJX0NB UF9JRF9NU0kpID8gbnZlYyA6IDEsCiAJCQkJCSAgICAgICAodHlwZSA9PSBQQ0lfQ0FQX0lEX01T SVgpID8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BsYXRmb3JtL2ludGVsLW1pZC9kZXZpY2VfbGli cy9wbGF0Zm9ybV93ZHQuYyBiL2FyY2gveDg2L3BsYXRmb3JtL2ludGVsLW1pZC9kZXZpY2VfbGli cy9wbGF0Zm9ybV93ZHQuYwppbmRleCA5NzNjZjNiZmE5ZmQuLmI2ZTY3NWNiYjJmYiAxMDA2NDQK LS0tIGEvYXJjaC94ODYvcGxhdGZvcm0vaW50ZWwtbWlkL2RldmljZV9saWJzL3BsYXRmb3JtX3dk dC5jCisrKyBiL2FyY2gveDg2L3BsYXRmb3JtL2ludGVsLW1pZC9kZXZpY2VfbGlicy9wbGF0Zm9y bV93ZHQuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgPGFzbS9pbnRlbC1taWQuaD4KICNp bmNsdWRlIDxhc20vaW9fYXBpYy5oPgogCi0jZGVmaW5lIFRBTkdJRVJfRVhUX1RJTUVSMF9NU0kg MTUKKyNkZWZpbmUgVEFOR0lFUl9FWFRfVElNRVIwX01TSSAxMgogCiBzdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RldmljZSB3ZHRfZGV2ID0gewogCS5uYW1lID0gImludGVsX21pZF93ZHQiLApkaWZm IC0tZ2l0IGEvYXJjaC94ODYvdmRzby92ZHNvMzItc2V0dXAuYyBiL2FyY2gveDg2L3Zkc28vdmRz bzMyLXNldHVwLmMKaW5kZXggZTRmNzc4MWVlMTYyLi5lNGMxYTE0MTA3YTQgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L3Zkc28vdmRzbzMyLXNldHVwLmMKKysrIGIvYXJjaC94ODYvdmRzby92ZHNvMzIt c2V0dXAuYwpAQCAtMzEsOCArMzEsMTAgQEAgc3RhdGljIGludCBfX2luaXQgdmRzbzMyX3NldHVw KGNoYXIgKnMpCiB7CiAJdmRzbzMyX2VuYWJsZWQgPSBzaW1wbGVfc3RydG91bChzLCBOVUxMLCAw KTsKIAotCWlmICh2ZHNvMzJfZW5hYmxlZCA+IDEpCisJaWYgKHZkc28zMl9lbmFibGVkID4gMSkg ewogCQlwcl93YXJuKCJ2ZHNvMzIgdmFsdWVzIG90aGVyIHRoYW4gMCBhbmQgMSBhcmUgbm8gbG9u Z2VyIGFsbG93ZWQ7IHZkc28gZGlzYWJsZWRcbiIpOworCQl2ZHNvMzJfZW5hYmxlZCA9IDA7CisJ fQogCiAJcmV0dXJuIDE7CiB9CkBAIC04OSwxMyArOTEsMTggQEAgc3Vic3lzX2luaXRjYWxsKHN5 c2VudGVyX3NldHVwKTsKIC8qIFJlZ2lzdGVyIHZzeXNjYWxsMzIgaW50byB0aGUgQUJJIHRhYmxl ICovCiAjaW5jbHVkZSA8bGludXgvc3lzY3RsLmg+CiAKK3N0YXRpYyBjb25zdCBpbnQgemVybzsK K3N0YXRpYyBjb25zdCBpbnQgb25lID0gMTsKKwogc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgYWJp X3RhYmxlMltdID0gewogCXsKIAkJLnByb2NuYW1lCT0gInZzeXNjYWxsMzIiLAogCQkuZGF0YQkJ PSAmdmRzbzMyX2VuYWJsZWQsCiAJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCiAJCS5tb2RlCQk9 IDA2NDQsCi0JCS5wcm9jX2hhbmRsZXIJPSBwcm9jX2RvaW50dmVjCisJCS5wcm9jX2hhbmRsZXIJ PSBwcm9jX2RvaW50dmVjX21pbm1heCwKKwkJLmV4dHJhMQkJPSAoaW50ICopJnplcm8sCisJCS5l eHRyYTIJCT0gKGludCAqKSZvbmUsCiAJfSwKIAl7fQogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv YWNwaS9NYWtlZmlsZSBiL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQppbmRleCBlYTU1ZTAxNzlmODEu LmQ4ZmYyNjUzZGNiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvYWNwaS9NYWtlZmlsZQpAQCAtMiw3ICsyLDYgQEAKICMgTWFrZWZpbGUgZm9yIHRoZSBM aW51eCBBQ1BJIGludGVycHJldGVyCiAjCiAKLWNjZmxhZ3MteQkJCTo9IC1PcwogY2NmbGFncy0k KENPTkZJR19BQ1BJX0RFQlVHKQkrPSAtREFDUElfREVCVUdfT1VUUFVUCiAKICMKZGlmZiAtLWdp dCBhL2RyaXZlcnMvYWNwaS9hY3BpX3BsYXRmb3JtLmMgYi9kcml2ZXJzL2FjcGkvYWNwaV9wbGF0 Zm9ybS5jCmluZGV4IDJiZjkwODJmNzUyMy4uMWJlZWY2YWE5OTA0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2FjcGkvYWNwaV9wbGF0Zm9ybS5jCisrKyBiL2RyaXZlcnMvYWNwaS9hY3BpX3BsYXRmb3Jt LmMKQEAgLTIzLDkgKzIzLDExIEBACiBBQ1BJX01PRFVMRV9OQU1FKCJwbGF0Zm9ybSIpOwogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZvcmJpZGRlbl9pZF9saXN0W10gPSB7 Ci0JeyJQTlAwMDAwIiwgMH0sCS8qIFBJQyAqLwotCXsiUE5QMDEwMCIsIDB9LAkvKiBUaW1lciAq LwotCXsiUE5QMDIwMCIsIDB9LAkvKiBBVCBETUEgQ29udHJvbGxlciAqLworCXsiUE5QMDAwMCIs ICAwfSwJLyogUElDICovCisJeyJQTlAwMTAwIiwgIDB9LAkvKiBUaW1lciAqLworCXsiUE5QMDIw MCIsICAwfSwJLyogQVQgRE1BIENvbnRyb2xsZXIgKi8KKwl7IkFDUEkwMDA5IiwgMH0sCS8qIElP eEFQSUMgKi8KKwl7IkFDUEkwMDBBIiwgMH0sCS8qIElPQVBJQyAqLwogCXsiIiwgMH0sCiB9Owog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMgYi9kcml2ZXJzL2FjcGkvYXBl aS9naGVzLmMKaW5kZXggMjgyYzIxYzM3ZmM0Li5jY2I2ODc2ZDlkODYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvYWNwaS9hcGVpL2doZXMuYworKysgYi9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMKQEAg LTEwMjAsNiArMTAyMCw3IEBAIHN0YXRpYyBpbnQgZ2hlc19yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqZ2hlc19kZXYpCiAJCWlmIChsaXN0X2VtcHR5KCZnaGVzX3NjaSkpCiAJCQl1bnJl Z2lzdGVyX2FjcGlfaGVkX25vdGlmaWVyKCZnaGVzX25vdGlmaWVyX3NjaSk7CiAJCW11dGV4X3Vu bG9jaygmZ2hlc19saXN0X211dGV4KTsKKwkJc3luY2hyb25pemVfcmN1KCk7CiAJCWJyZWFrOwog CWNhc2UgQUNQSV9IRVNUX05PVElGWV9OTUk6CiAJCW11dGV4X2xvY2soJmdoZXNfbGlzdF9tdXRl eCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcG93ZXIuYyBiL2RyaXZlcnMvYWNwaS9wb3dl ci5jCmluZGV4IGUwYmNmYjY0MmI1Mi4uMzliMThmNzRhNTM5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2FjcGkvcG93ZXIuYworKysgYi9kcml2ZXJzL2FjcGkvcG93ZXIuYwpAQCAtMjAxLDYgKzIwMSw3 IEBAIHN0YXRpYyBpbnQgYWNwaV9wb3dlcl9nZXRfbGlzdF9zdGF0ZShzdHJ1Y3QgbGlzdF9oZWFk ICpsaXN0LCBpbnQgKnN0YXRlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIFRoZSBzdGF0ZSBv ZiB0aGUgbGlzdCBpcyAnb24nIElGRiBhbGwgcmVzb3VyY2VzIGFyZSAnb24nLiAqLworCWN1cl9z dGF0ZSA9IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgbGlzdCwgbm9kZSkgewogCQlz dHJ1Y3QgYWNwaV9wb3dlcl9yZXNvdXJjZSAqcmVzb3VyY2UgPSBlbnRyeS0+cmVzb3VyY2U7CiAJ CWFjcGlfaGFuZGxlIGhhbmRsZSA9IHJlc291cmNlLT5kZXZpY2UuaGFuZGxlOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMgYi9kcml2ZXJzL2Jsb2NrL3hl bi1ibGtiYWNrL2Jsa2JhY2suYwppbmRleCBjNDJjMjJlNzc4ZDguLjViYzIyMGFlZmRkMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKKysrIGIvZHJpdmVy cy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKQEAgLTEzNDYsMzMgKzEzNDYsMzQgQEAgc3Rh dGljIGludCBkaXNwYXRjaF9yd19ibG9ja19pbyhzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwKIHN0 YXRpYyB2b2lkIG1ha2VfcmVzcG9uc2Uoc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsIHU2NCBpZCwK IAkJCSAgdW5zaWduZWQgc2hvcnQgb3AsIGludCBzdCkKIHsKLQlzdHJ1Y3QgYmxraWZfcmVzcG9u c2UgIHJlc3A7CisJc3RydWN0IGJsa2lmX3Jlc3BvbnNlICpyZXNwOwogCXVuc2lnbmVkIGxvbmcg ICAgIGZsYWdzOwogCXVuaW9uIGJsa2lmX2JhY2tfcmluZ3MgKmJsa19yaW5ncyA9ICZibGtpZi0+ YmxrX3JpbmdzOwogCWludCBub3RpZnk7CiAKLQlyZXNwLmlkICAgICAgICA9IGlkOwotCXJlc3Au b3BlcmF0aW9uID0gb3A7Ci0JcmVzcC5zdGF0dXMgICAgPSBzdDsKLQogCXNwaW5fbG9ja19pcnFz YXZlKCZibGtpZi0+YmxrX3JpbmdfbG9jaywgZmxhZ3MpOwogCS8qIFBsYWNlIG9uIHRoZSByZXNw b25zZSByaW5nIGZvciB0aGUgcmVsZXZhbnQgZG9tYWluLiAqLwogCXN3aXRjaCAoYmxraWYtPmJs a19wcm90b2NvbCkgewogCWNhc2UgQkxLSUZfUFJPVE9DT0xfTkFUSVZFOgotCQltZW1jcHkoUklO R19HRVRfUkVTUE9OU0UoJmJsa19yaW5ncy0+bmF0aXZlLCBibGtfcmluZ3MtPm5hdGl2ZS5yc3Bf cHJvZF9wdnQpLAotCQkgICAgICAgJnJlc3AsIHNpemVvZihyZXNwKSk7CisJCXJlc3AgPSBSSU5H X0dFVF9SRVNQT05TRSgmYmxrX3JpbmdzLT5uYXRpdmUsCisJCQkJCSBibGtfcmluZ3MtPm5hdGl2 ZS5yc3BfcHJvZF9wdnQpOwogCQlicmVhazsKIAljYXNlIEJMS0lGX1BST1RPQ09MX1g4Nl8zMjoK LQkJbWVtY3B5KFJJTkdfR0VUX1JFU1BPTlNFKCZibGtfcmluZ3MtPng4Nl8zMiwgYmxrX3Jpbmdz LT54ODZfMzIucnNwX3Byb2RfcHZ0KSwKLQkJICAgICAgICZyZXNwLCBzaXplb2YocmVzcCkpOwor CQlyZXNwID0gUklOR19HRVRfUkVTUE9OU0UoJmJsa19yaW5ncy0+eDg2XzMyLAorCQkJCQkgYmxr X3JpbmdzLT54ODZfMzIucnNwX3Byb2RfcHZ0KTsKIAkJYnJlYWs7CiAJY2FzZSBCTEtJRl9QUk9U T0NPTF9YODZfNjQ6Ci0JCW1lbWNweShSSU5HX0dFVF9SRVNQT05TRSgmYmxrX3JpbmdzLT54ODZf NjQsIGJsa19yaW5ncy0+eDg2XzY0LnJzcF9wcm9kX3B2dCksCi0JCSAgICAgICAmcmVzcCwgc2l6 ZW9mKHJlc3ApKTsKKwkJcmVzcCA9IFJJTkdfR0VUX1JFU1BPTlNFKCZibGtfcmluZ3MtPng4Nl82 NCwKKwkJCQkJIGJsa19yaW5ncy0+eDg2XzY0LnJzcF9wcm9kX3B2dCk7CiAJCWJyZWFrOwogCWRl ZmF1bHQ6CiAJCUJVRygpOwogCX0KKworCXJlc3AtPmlkICAgICAgICA9IGlkOworCXJlc3AtPm9w ZXJhdGlvbiA9IG9wOworCXJlc3AtPnN0YXR1cyAgICA9IHN0OworCiAJYmxrX3JpbmdzLT5jb21t b24ucnNwX3Byb2RfcHZ0Kys7CiAJUklOR19QVVNIX1JFU1BPTlNFU19BTkRfQ0hFQ0tfTk9USUZZ KCZibGtfcmluZ3MtPmNvbW1vbiwgbm90aWZ5KTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZi bGtpZi0+YmxrX3JpbmdfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94 ZW4tYmxrYmFjay9jb21tb24uaCBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svY29tbW9uLmgK aW5kZXggZWY2NGY1OTkyMWE3Li42MmY2MDY3ZjhmODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxv Y2sveGVuLWJsa2JhY2svY29tbW9uLmgKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9j b21tb24uaApAQCAtNzAsOSArNzAsOCBAQAogc3RydWN0IGJsa2lmX2NvbW1vbl9yZXF1ZXN0IHsK IAljaGFyIGR1bW15OwogfTsKLXN0cnVjdCBibGtpZl9jb21tb25fcmVzcG9uc2UgewotCWNoYXIg ZHVtbXk7Ci19OworCisvKiBpMzg2IHByb3RvY29sIHZlcnNpb24gKi8KIAogc3RydWN0IGJsa2lm X3g4Nl8zMl9yZXF1ZXN0X3J3IHsKIAl1aW50OF90ICAgICAgICBucl9zZWdtZW50czsgIC8qIG51 bWJlciBvZiBzZWdtZW50cyAgICAgICAgICAgICAgICAgICAqLwpAQCAtMTI0LDE0ICsxMjMsNiBA QCBzdHJ1Y3QgYmxraWZfeDg2XzMyX3JlcXVlc3QgewogCX0gdTsKIH0gX19hdHRyaWJ1dGVfXygo X19wYWNrZWRfXykpOwogCi0vKiBpMzg2IHByb3RvY29sIHZlcnNpb24gKi8KLSNwcmFnbWEgcGFj ayhwdXNoLCA0KQotc3RydWN0IGJsa2lmX3g4Nl8zMl9yZXNwb25zZSB7Ci0JdWludDY0X3QgICAg ICAgIGlkOyAgICAgICAgICAgICAgLyogY29waWVkIGZyb20gcmVxdWVzdCAqLwotCXVpbnQ4X3Qg ICAgICAgICBvcGVyYXRpb247ICAgICAgIC8qIGNvcGllZCBmcm9tIHJlcXVlc3QgKi8KLQlpbnQx Nl90ICAgICAgICAgc3RhdHVzOyAgICAgICAgICAvKiBCTEtJRl9SU1BfPz8/ICAgICAgICovCi19 OwotI3ByYWdtYSBwYWNrKHBvcCkKIC8qIHg4Nl82NCBwcm90b2NvbCB2ZXJzaW9uICovCiAKIHN0 cnVjdCBibGtpZl94ODZfNjRfcmVxdWVzdF9ydyB7CkBAIC0xODgsMTggKzE3OSwxMiBAQCBzdHJ1 Y3QgYmxraWZfeDg2XzY0X3JlcXVlc3QgewogCX0gdTsKIH0gX19hdHRyaWJ1dGVfXygoX19wYWNr ZWRfXykpOwogCi1zdHJ1Y3QgYmxraWZfeDg2XzY0X3Jlc3BvbnNlIHsKLQl1aW50NjRfdCAgICAg ICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg4KSkpIGlkOwotCXVpbnQ4X3QgICAgICAgICBv cGVyYXRpb247ICAgICAgIC8qIGNvcGllZCBmcm9tIHJlcXVlc3QgKi8KLQlpbnQxNl90ICAgICAg ICAgc3RhdHVzOyAgICAgICAgICAvKiBCTEtJRl9SU1BfPz8/ICAgICAgICovCi19OwotCiBERUZJ TkVfUklOR19UWVBFUyhibGtpZl9jb21tb24sIHN0cnVjdCBibGtpZl9jb21tb25fcmVxdWVzdCwK LQkJICBzdHJ1Y3QgYmxraWZfY29tbW9uX3Jlc3BvbnNlKTsKKwkJICBzdHJ1Y3QgYmxraWZfcmVz cG9uc2UpOwogREVGSU5FX1JJTkdfVFlQRVMoYmxraWZfeDg2XzMyLCBzdHJ1Y3QgYmxraWZfeDg2 XzMyX3JlcXVlc3QsCi0JCSAgc3RydWN0IGJsa2lmX3g4Nl8zMl9yZXNwb25zZSk7CisJCSAgc3Ry dWN0IGJsa2lmX3Jlc3BvbnNlIF9fcGFja2VkKTsKIERFRklORV9SSU5HX1RZUEVTKGJsa2lmX3g4 Nl82NCwgc3RydWN0IGJsa2lmX3g4Nl82NF9yZXF1ZXN0LAotCQkgIHN0cnVjdCBibGtpZl94ODZf NjRfcmVzcG9uc2UpOworCQkgIHN0cnVjdCBibGtpZl9yZXNwb25zZSk7CiAKIHVuaW9uIGJsa2lm X2JhY2tfcmluZ3MgewogCXN0cnVjdCBibGtpZl9iYWNrX3JpbmcgICAgICAgIG5hdGl2ZTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96 cmFtL3pyYW1fZHJ2LmMKaW5kZXggMmIzMDQ4NWNiZDI2Li41YzdmNWU0MDgwZTcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCisrKyBiL2RyaXZlcnMvYmxvY2svenJh bS96cmFtX2Rydi5jCkBAIC0zNDUsMTMgKzM0NSwxMyBAQCBzdGF0aWMgaW50IHpyYW1fZGVjb21w cmVzc19wYWdlKHN0cnVjdCB6cmFtICp6cmFtLCBjaGFyICptZW0sIHUzMiBpbmRleCkKIAogCWlm ICghaGFuZGxlIHx8IHpyYW1fdGVzdF9mbGFnKG1ldGEsIGluZGV4LCBaUkFNX1pFUk8pKSB7CiAJ CXJlYWRfdW5sb2NrKCZtZXRhLT50Yl9sb2NrKTsKLQkJY2xlYXJfcGFnZShtZW0pOworCQltZW1z ZXQobWVtLCAwLCBQQUdFX1NJWkUpOwogCQlyZXR1cm4gMDsKIAl9CiAKIAljbWVtID0genNfbWFw X29iamVjdChtZXRhLT5tZW1fcG9vbCwgaGFuZGxlLCBaU19NTV9STyk7CiAJaWYgKHNpemUgPT0g UEFHRV9TSVpFKQotCQljb3B5X3BhZ2UobWVtLCBjbWVtKTsKKwkJbWVtY3B5KG1lbSwgY21lbSwg UEFHRV9TSVpFKTsKIAllbHNlCiAJCXJldCA9IHpjb21wX2RlY29tcHJlc3MoenJhbS0+Y29tcCwg Y21lbSwgc2l6ZSwgbWVtKTsKIAl6c191bm1hcF9vYmplY3QobWV0YS0+bWVtX3Bvb2wsIGhhbmRs ZSk7CkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIGludCB6cmFtX2J2ZWNfd3JpdGUoc3RydWN0 IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW9fdmVjICpidmVjLCB1MzIgaW5kZXgsCiAKIAlpZiAoKGNs ZW4gPT0gUEFHRV9TSVpFKSAmJiAhaXNfcGFydGlhbF9pbyhidmVjKSkgewogCQlzcmMgPSBrbWFw X2F0b21pYyhwYWdlKTsKLQkJY29weV9wYWdlKGNtZW0sIHNyYyk7CisJCW1lbWNweShjbWVtLCBz cmMsIFBBR0VfU0laRSk7CiAJCWt1bm1hcF9hdG9taWMoc3JjKTsKIAl9IGVsc2UgewogCQltZW1j cHkoY21lbSwgc3JjLCBjbGVuKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9scC5jIGIvZHJp dmVycy9jaGFyL2xwLmMKaW5kZXggYzQwOTRjNGUyMmMxLi4zNGVmNDc0YTM5MjMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvY2hhci9scC5jCisrKyBiL2RyaXZlcnMvY2hhci9scC5jCkBAIC04NTksNyAr ODU5LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IGxwX3NldHVwIChjaGFyICpzdHIpCiAJfSBlbHNl IGlmICghc3RyY21wKHN0ciwgImF1dG8iKSkgewogCQlwYXJwb3J0X25yWzBdID0gTFBfUEFSUE9S VF9BVVRPOwogCX0gZWxzZSBpZiAoIXN0cmNtcChzdHIsICJub25lIikpIHsKLQkJcGFycG9ydF9u cltwYXJwb3J0X3B0cisrXSA9IExQX1BBUlBPUlRfTk9ORTsKKwkJaWYgKHBhcnBvcnRfcHRyIDwg TFBfTk8pCisJCQlwYXJwb3J0X25yW3BhcnBvcnRfcHRyKytdID0gTFBfUEFSUE9SVF9OT05FOwor CQllbHNlCisJCQlwcmludGsoS0VSTl9JTkZPICJscDogdG9vIG1hbnkgcG9ydHMsICVzIGlnbm9y ZWQuXG4iLAorCQkJICAgICAgIHN0cik7CiAJfSBlbHNlIGlmICghc3RyY21wKHN0ciwgInJlc2V0 IikpIHsKIAkJcmVzZXQgPSAxOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9tZW0uYyBi L2RyaXZlcnMvY2hhci9tZW0uYwppbmRleCA5MTc0MDNmZTEwZGEuLjVjMmI3YzU3NWM5ZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9jaGFyL21lbS5jCisrKyBiL2RyaXZlcnMvY2hhci9tZW0uYwpAQCAt NTksNiArNTksMTAgQEAgc3RhdGljIGlubGluZSBpbnQgdmFsaWRfbW1hcF9waHlzX2FkZHJfcmFu Z2UodW5zaWduZWQgbG9uZyBwZm4sIHNpemVfdCBzaXplKQogI2VuZGlmCiAKICNpZmRlZiBDT05G SUdfU1RSSUNUX0RFVk1FTQorc3RhdGljIGlubGluZSBpbnQgcGFnZV9pc19hbGxvd2VkKHVuc2ln bmVkIGxvbmcgcGZuKQoreworCXJldHVybiBkZXZtZW1faXNfYWxsb3dlZChwZm4pOworfQogc3Rh dGljIGlubGluZSBpbnQgcmFuZ2VfaXNfYWxsb3dlZCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWdu ZWQgbG9uZyBzaXplKQogewogCXU2NCBmcm9tID0gKCh1NjQpcGZuKSA8PCBQQUdFX1NISUZUOwpA QCAtNzgsNiArODIsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgcmFuZ2VfaXNfYWxsb3dlZCh1bnNp Z25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBzaXplKQogCXJldHVybiAxOwogfQogI2Vsc2UK K3N0YXRpYyBpbmxpbmUgaW50IHBhZ2VfaXNfYWxsb3dlZCh1bnNpZ25lZCBsb25nIHBmbikKK3sK KwlyZXR1cm4gMTsKK30KIHN0YXRpYyBpbmxpbmUgaW50IHJhbmdlX2lzX2FsbG93ZWQodW5zaWdu ZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlyZXR1cm4gMTsKQEAgLTEyMiwy MyArMTMwLDMxIEBAIHN0YXRpYyBzc2l6ZV90IHJlYWRfbWVtKHN0cnVjdCBmaWxlICpmaWxlLCBj aGFyIF9fdXNlciAqYnVmLAogCiAJd2hpbGUgKGNvdW50ID4gMCkgewogCQl1bnNpZ25lZCBsb25n IHJlbWFpbmluZzsKKwkJaW50IGFsbG93ZWQ7CiAKIAkJc3ogPSBzaXplX2luc2lkZV9wYWdlKHAs IGNvdW50KTsKIAotCQlpZiAoIXJhbmdlX2lzX2FsbG93ZWQocCA+PiBQQUdFX1NISUZULCBjb3Vu dCkpCisJCWFsbG93ZWQgPSBwYWdlX2lzX2FsbG93ZWQocCA+PiBQQUdFX1NISUZUKTsKKwkJaWYg KCFhbGxvd2VkKQogCQkJcmV0dXJuIC1FUEVSTTsKKwkJaWYgKGFsbG93ZWQgPT0gMikgeworCQkJ LyogU2hvdyB6ZXJvcyBmb3IgcmVzdHJpY3RlZCBtZW1vcnkuICovCisJCQlyZW1haW5pbmcgPSBj bGVhcl91c2VyKGJ1Ziwgc3opOworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIE9uIGlhNjQgaWYg YSBwYWdlIGhhcyBiZWVuIG1hcHBlZCBzb21ld2hlcmUgYXMKKwkJCSAqIHVuY2FjaGVkLCB0aGVu IGl0IG11c3QgYWxzbyBiZSBhY2Nlc3NlZCB1bmNhY2hlZAorCQkJICogYnkgdGhlIGtlcm5lbCBv ciBkYXRhIGNvcnJ1cHRpb24gbWF5IG9jY3VyLgorCQkJICovCisJCQlwdHIgPSB4bGF0ZV9kZXZf bWVtX3B0cihwKTsKKwkJCWlmICghcHRyKQorCQkJCXJldHVybiAtRUZBVUxUOwogCi0JCS8qCi0J CSAqIE9uIGlhNjQgaWYgYSBwYWdlIGhhcyBiZWVuIG1hcHBlZCBzb21ld2hlcmUgYXMgdW5jYWNo ZWQsIHRoZW4KLQkJICogaXQgbXVzdCBhbHNvIGJlIGFjY2Vzc2VkIHVuY2FjaGVkIGJ5IHRoZSBr ZXJuZWwgb3IgZGF0YQotCQkgKiBjb3JydXB0aW9uIG1heSBvY2N1ci4KLQkJICovCi0JCXB0ciA9 IHhsYXRlX2Rldl9tZW1fcHRyKHApOwotCQlpZiAoIXB0cikKLQkJCXJldHVybiAtRUZBVUxUOwor CQkJcmVtYWluaW5nID0gY29weV90b191c2VyKGJ1ZiwgcHRyLCBzeik7CisKKwkJCXVueGxhdGVf ZGV2X21lbV9wdHIocCwgcHRyKTsKKwkJfQogCi0JCXJlbWFpbmluZyA9IGNvcHlfdG9fdXNlcihi dWYsIHB0ciwgc3opOwotCQl1bnhsYXRlX2Rldl9tZW1fcHRyKHAsIHB0cik7CiAJCWlmIChyZW1h aW5pbmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIApAQCAtMTgxLDMwICsxOTcsMzYgQEAgc3RhdGlj IHNzaXplX3Qgd3JpdGVfbWVtKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAq YnVmLAogI2VuZGlmCiAKIAl3aGlsZSAoY291bnQgPiAwKSB7CisJCWludCBhbGxvd2VkOworCiAJ CXN6ID0gc2l6ZV9pbnNpZGVfcGFnZShwLCBjb3VudCk7CiAKLQkJaWYgKCFyYW5nZV9pc19hbGxv d2VkKHAgPj4gUEFHRV9TSElGVCwgc3opKQorCQlhbGxvd2VkID0gcGFnZV9pc19hbGxvd2VkKHAg Pj4gUEFHRV9TSElGVCk7CisJCWlmICghYWxsb3dlZCkKIAkJCXJldHVybiAtRVBFUk07CiAKLQkJ LyoKLQkJICogT24gaWE2NCBpZiBhIHBhZ2UgaGFzIGJlZW4gbWFwcGVkIHNvbWV3aGVyZSBhcyB1 bmNhY2hlZCwgdGhlbgotCQkgKiBpdCBtdXN0IGFsc28gYmUgYWNjZXNzZWQgdW5jYWNoZWQgYnkg dGhlIGtlcm5lbCBvciBkYXRhCi0JCSAqIGNvcnJ1cHRpb24gbWF5IG9jY3VyLgotCQkgKi8KLQkJ cHRyID0geGxhdGVfZGV2X21lbV9wdHIocCk7Ci0JCWlmICghcHRyKSB7Ci0JCQlpZiAod3JpdHRl bikKLQkJCQlicmVhazsKLQkJCXJldHVybiAtRUZBVUxUOwotCQl9CisJCS8qIFNraXAgYWN0dWFs IHdyaXRpbmcgd2hlbiBhIHBhZ2UgaXMgbWFya2VkIGFzIHJlc3RyaWN0ZWQuICovCisJCWlmIChh bGxvd2VkID09IDEpIHsKKwkJCS8qCisJCQkgKiBPbiBpYTY0IGlmIGEgcGFnZSBoYXMgYmVlbiBt YXBwZWQgc29tZXdoZXJlIGFzCisJCQkgKiB1bmNhY2hlZCwgdGhlbiBpdCBtdXN0IGFsc28gYmUg YWNjZXNzZWQgdW5jYWNoZWQKKwkJCSAqIGJ5IHRoZSBrZXJuZWwgb3IgZGF0YSBjb3JydXB0aW9u IG1heSBvY2N1ci4KKwkJCSAqLworCQkJcHRyID0geGxhdGVfZGV2X21lbV9wdHIocCk7CisJCQlp ZiAoIXB0cikgeworCQkJCWlmICh3cml0dGVuKQorCQkJCQlicmVhazsKKwkJCQlyZXR1cm4gLUVG QVVMVDsKKwkJCX0KIAotCQljb3BpZWQgPSBjb3B5X2Zyb21fdXNlcihwdHIsIGJ1Ziwgc3opOwot CQl1bnhsYXRlX2Rldl9tZW1fcHRyKHAsIHB0cik7Ci0JCWlmIChjb3BpZWQpIHsKLQkJCXdyaXR0 ZW4gKz0gc3ogLSBjb3BpZWQ7Ci0JCQlpZiAod3JpdHRlbikKLQkJCQlicmVhazsKLQkJCXJldHVy biAtRUZBVUxUOworCQkJY29waWVkID0gY29weV9mcm9tX3VzZXIocHRyLCBidWYsIHN6KTsKKwkJ CXVueGxhdGVfZGV2X21lbV9wdHIocCwgcHRyKTsKKwkJCWlmIChjb3BpZWQpIHsKKwkJCQl3cml0 dGVuICs9IHN6IC0gY29waWVkOworCQkJCWlmICh3cml0dGVuKQorCQkJCQlicmVhazsKKwkJCQly ZXR1cm4gLUVGQVVMVDsKKwkJCX0KIAkJfQogCiAJCWJ1ZiArPSBzejsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY2hhci92aXJ0aW9fY29uc29sZS5jIGIvZHJpdmVycy9jaGFyL3ZpcnRpb19jb25zb2xl LmMKaW5kZXggZjU2ZWE2ODJhZDQ0Li45NGJlNTAzZTIzNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Y2hhci92aXJ0aW9fY29uc29sZS5jCisrKyBiL2RyaXZlcnMvY2hhci92aXJ0aW9fY29uc29sZS5j CkBAIC0yMTgwLDE0ICsyMTgwLDE2IEBAIHN0YXRpYyBpbnQgdmlydGNvbnNfZnJlZXplKHN0cnVj dCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCiAJdmRldi0+Y29uZmlnLT5yZXNldCh2ZGV2KTsKIAot CXZpcnRxdWV1ZV9kaXNhYmxlX2NiKHBvcnRkZXYtPmNfaXZxKTsKKwlpZiAodXNlX211bHRpcG9y dChwb3J0ZGV2KSkKKwkJdmlydHF1ZXVlX2Rpc2FibGVfY2IocG9ydGRldi0+Y19pdnEpOwogCWNh bmNlbF93b3JrX3N5bmMoJnBvcnRkZXYtPmNvbnRyb2xfd29yayk7CiAJY2FuY2VsX3dvcmtfc3lu YygmcG9ydGRldi0+Y29uZmlnX3dvcmspOwogCS8qCiAJICogT25jZSBtb3JlOiBpZiBjb250cm9s X3dvcmtfaGFuZGxlcigpIHdhcyBydW5uaW5nLCBpdCB3b3VsZAogCSAqIGVuYWJsZSB0aGUgY2Ig YXMgdGhlIGxhc3Qgc3RlcC4KIAkgKi8KLQl2aXJ0cXVldWVfZGlzYWJsZV9jYihwb3J0ZGV2LT5j X2l2cSk7CisJaWYgKHVzZV9tdWx0aXBvcnQocG9ydGRldikpCisJCXZpcnRxdWV1ZV9kaXNhYmxl X2NiKHBvcnRkZXYtPmNfaXZxKTsKIAlyZW1vdmVfY29udHJvbHFfZGF0YShwb3J0ZGV2KTsKIAog CWxpc3RfZm9yX2VhY2hfZW50cnkocG9ydCwgJnBvcnRkZXYtPnBvcnRzLCBsaXN0KSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2NyeXB0by9jYWFtL2N0cmwuYyBiL2RyaXZlcnMvY3J5cHRvL2NhYW0v Y3RybC5jCmluZGV4IDFjMzhmODZiZjYzYS4uZGNjOGJjZjYyNWM0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2NyeXB0by9jYWFtL2N0cmwuYworKysgYi9kcml2ZXJzL2NyeXB0by9jYWFtL2N0cmwuYwpA QCAtMjUxLDcgKzI1MSw4IEBAIHN0YXRpYyBpbnQgZGVpbnN0YW50aWF0ZV9ybmcoc3RydWN0IGRl dmljZSAqY3RybGRldiwgaW50IHN0YXRlX2hhbmRsZV9tYXNrKQogCQkJLyogVHJ5IHRvIHJ1biBp dCB0aHJvdWdoIERFQ08wICovCiAJCQlyZXQgPSBydW5fZGVzY3JpcHRvcl9kZWNvMChjdHJsZGV2 LCBkZXNjLCAmc3RhdHVzKTsKIAotCQkJaWYgKHJldCB8fCBzdGF0dXMpIHsKKwkJCWlmIChyZXQg fHwKKwkJCSAgICAoc3RhdHVzICYmIHN0YXR1cyAhPSBKUlNUQV9TU1JDX0pVTVBfSEFMVF9DQykp IHsKIAkJCQlkZXZfZXJyKGN0cmxkZXYsCiAJCQkJCSJGYWlsZWQgdG8gZGVpbnN0YW50aWF0ZSBS Tkc0IFNIJWRcbiIsCiAJCQkJCXNoX2lkeCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bp by1tY3AyM3MwOC5jIGIvZHJpdmVycy9ncGlvL2dwaW8tbWNwMjNzMDguYwppbmRleCA1N2FkYmM5 MGZkYWQuLjFmMDdiMDYzODZlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL2dwaW8tbWNwMjNz MDguYworKysgYi9kcml2ZXJzL2dwaW8vZ3Bpby1tY3AyM3MwOC5jCkBAIC0zNDAsOCArMzQwLDEw IEBAIG1jcDIzczA4X2RpcmVjdGlvbl9vdXRwdXQoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5z aWduZWQgb2Zmc2V0LCBpbnQgdmFsdWUpCiBzdGF0aWMgaXJxcmV0dXJuX3QgbWNwMjNzMDhfaXJx KGludCBpcnEsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IG1jcDIzczA4ICptY3AgPSBkYXRhOwot CWludCBpbnRjYXAsIGludGYsIGk7CisJaW50IGludGNhcCwgaW50ZiwgaSwgZ3BpbywgZ3Bpb19v cmlnLCBpbnRjYXBfbWFzazsKIAl1bnNpZ25lZCBpbnQgY2hpbGRfaXJxOworCWJvb2wgaW50Zl9z ZXQsIGludGNhcF9jaGFuZ2VkLCBncGlvX2JpdF9jaGFuZ2VkLAorCQlncGlvX3NldDsKIAogCW11 dGV4X2xvY2soJm1jcC0+bG9jayk7CiAJaW50ZiA9IG1jcC0+b3BzLT5yZWFkKG1jcCwgTUNQX0lO VEYpOwpAQCAtMzU5LDEzICszNjEsNjMgQEAgc3RhdGljIGlycXJldHVybl90IG1jcDIzczA4X2ly cShpbnQgaXJxLCB2b2lkICpkYXRhKQogCX0KIAogCW1jcC0+Y2FjaGVbTUNQX0lOVENBUF0gPSBp bnRjYXA7CisKKwkvKiBUaGlzIGNsZWFycyB0aGUgaW50ZXJydXB0KGNvbmZpZ3VyYWJsZSBvbiBT MTgpICovCisJaWYgKChncGlvID0gbWNwLT5vcHMtPnJlYWQobWNwLCBNQ1BfR1BJTykpIDwgMCkg eworCQltdXRleF91bmxvY2soJm1jcC0+bG9jayk7CisJCXJldHVybiBJUlFfSEFORExFRDsKKwl9 CisJZ3Bpb19vcmlnID0gbWNwLT5jYWNoZVtNQ1BfR1BJT107CisJbWNwLT5jYWNoZVtNQ1BfR1BJ T10gPSBncGlvOwogCW11dGV4X3VubG9jaygmbWNwLT5sb2NrKTsKIAorCWlmIChtY3AtPmNhY2hl W01DUF9JTlRGXSA9PSAwKSB7CisJCS8qIFRoZXJlIGlzIG5vIGludGVycnVwdCBwZW5kaW5nICov CisJCXJldHVybiBJUlFfSEFORExFRDsKKwl9CisKKwlkZXZfZGJnKG1jcC0+Y2hpcC5kZXYsCisJ CSJpbnRjYXAgMHglMDRYIGludGYgMHglMDRYIGdwaW9fb3JpZyAweCUwNFggZ3BpbyAweCUwNFhc biIsCisJCWludGNhcCwgaW50ZiwgZ3Bpb19vcmlnLCBncGlvKTsKIAogCWZvciAoaSA9IDA7IGkg PCBtY3AtPmNoaXAubmdwaW87IGkrKykgewotCQlpZiAoKEJJVChpKSAmIG1jcC0+Y2FjaGVbTUNQ X0lOVEZdKSAmJgotCQkgICAgKChCSVQoaSkgJiBpbnRjYXAgJiBtY3AtPmlycV9yaXNlKSB8fAot CQkgICAgIChtY3AtPmlycV9mYWxsICYgfmludGNhcCAmIEJJVChpKSkpKSB7CisJCS8qIFdlIG11 c3QgY2hlY2sgYWxsIG9mIHRoZSBpbnB1dHMgb24gdGhlIGNoaXAsCisJCSAqIG90aGVyd2lzZSB3 ZSBtYXkgbm90IG5vdGljZSBhIGNoYW5nZSBvbiA+PTIgcGlucy4KKwkJICoKKwkJICogT24gYXQg bGVhc3QgdGhlIG1jcDIzczE3LCBJTlRDQVAgaXMgb25seSB1cGRhdGVkCisJCSAqIG9uZSBieXRl IGF0IGEgdGltZShJTlRDQVBBIGFuZCBJTlRDQVBCIGFyZQorCQkgKiBub3Qgd3JpdHRlbiB0byBh dCB0aGUgc2FtZSB0aW1lIC0gb25seSBvbiBhIHBlci1iYW5rCisJCSAqIGJhc2lzKS4KKwkJICoK KwkJICogSU5URiBvbmx5IGNvbnRhaW5zIHRoZSBzaW5nbGUgYml0IHRoYXQgY2F1c2VkIHRoZQor CQkgKiBpbnRlcnJ1cHQgcGVyLWJhbmsuICBPbiB0aGUgbWNwMjNzMTcsIHRoZXJlIGlzCisJCSAq IElOVEZBIGFuZCBJTlRGQi4gIElmIHR3byBwaW5zIGFyZSBjaGFuZ2VkIG9uIHRoZSBBCisJCSAq IHNpZGUgYXQgdGhlIHNhbWUgdGltZSwgSU5URiB3aWxsIG9ubHkgaGF2ZSBvbmUgYml0CisJCSAq IHNldC4gIElmIG9uZSBwaW4gb24gdGhlIEEgc2lkZSBhbmQgb25lIHBpbiBvbiB0aGUgQgorCQkg KiBzaWRlIGFyZSBjaGFuZ2VkIGF0IHRoZSBzYW1lIHRpbWUsIElOVEYgd2lsbCBoYXZlCisJCSAq IHR3byBiaXRzIHNldC4gIFRodXMsIElOVEYgY2FuJ3QgYmUgdGhlIG9ubHkgY2hlY2sKKwkJICog dG8gc2VlIGlmIHRoZSBpbnB1dCBoYXMgY2hhbmdlZC4KKwkJICovCisKKwkJaW50Zl9zZXQgPSBC SVQoaSkgJiBtY3AtPmNhY2hlW01DUF9JTlRGXTsKKwkJaWYgKGkgPCA4ICYmIGludGZfc2V0KQor CQkJaW50Y2FwX21hc2sgPSAweDAwRkY7CisJCWVsc2UgaWYgKGkgPj0gOCAmJiBpbnRmX3NldCkK KwkJCWludGNhcF9tYXNrID0gMHhGRjAwOworCQllbHNlCisJCQlpbnRjYXBfbWFzayA9IDB4MDA7 CisKKwkJaW50Y2FwX2NoYW5nZWQgPSAoaW50Y2FwX21hc2sgJgorCQkJKEJJVChpKSAmIG1jcC0+ Y2FjaGVbTUNQX0lOVENBUF0pKSAhPQorCQkJKGludGNhcF9tYXNrICYgKEJJVChpKSAmIGdwaW9f b3JpZykpOworCQlncGlvX3NldCA9IEJJVChpKSAmIG1jcC0+Y2FjaGVbTUNQX0dQSU9dOworCQln cGlvX2JpdF9jaGFuZ2VkID0gKEJJVChpKSAmIGdwaW9fb3JpZykgIT0KKwkJCShCSVQoaSkgJiBt Y3AtPmNhY2hlW01DUF9HUElPXSk7CisKKwkJaWYgKCgoZ3Bpb19iaXRfY2hhbmdlZCB8fCBpbnRj YXBfY2hhbmdlZCkgJiYKKwkJCShCSVQoaSkgJiBtY3AtPmlycV9yaXNlKSAmJiBncGlvX3NldCkg fHwKKwkJICAgICgoZ3Bpb19iaXRfY2hhbmdlZCB8fCBpbnRjYXBfY2hhbmdlZCkgJiYKKwkJCShC SVQoaSkgJiBtY3AtPmlycV9mYWxsKSAmJiAhZ3Bpb19zZXQpKSB7CiAJCQljaGlsZF9pcnEgPSBp cnFfZmluZF9tYXBwaW5nKG1jcC0+aXJxX2RvbWFpbiwgaSk7CiAJCQloYW5kbGVfbmVzdGVkX2ly cShjaGlsZF9pcnEpOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9v YmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX29iamVjdC5jCmluZGV4IGQyYTA1MzM1 Mjc4OS4uOWEyNTNhNzY5ZjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9v YmplY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3QuYwpAQCAtMTc5LDcg KzE3OSw3IEBAIGludCB0dG1fYmFzZV9vYmplY3RfaW5pdChzdHJ1Y3QgdHRtX29iamVjdF9maWxl ICp0ZmlsZSwKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlnb3RvIG91dF9lcnIwOwogCi0J cmV0ID0gdHRtX3JlZl9vYmplY3RfYWRkKHRmaWxlLCBiYXNlLCBUVE1fUkVGX1VTQUdFLCBOVUxM KTsKKwlyZXQgPSB0dG1fcmVmX29iamVjdF9hZGQodGZpbGUsIGJhc2UsIFRUTV9SRUZfVVNBR0Us IE5VTEwsIGZhbHNlKTsKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlnb3RvIG91dF9lcnIx OwogCkBAIC0zMTgsNyArMzE4LDggQEAgRVhQT1JUX1NZTUJPTCh0dG1fcmVmX29iamVjdF9leGlz dHMpOwogCiBpbnQgdHRtX3JlZl9vYmplY3RfYWRkKHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRm aWxlLAogCQkgICAgICAgc3RydWN0IHR0bV9iYXNlX29iamVjdCAqYmFzZSwKLQkJICAgICAgIGVu dW0gdHRtX3JlZl90eXBlIHJlZl90eXBlLCBib29sICpleGlzdGVkKQorCQkgICAgICAgZW51bSB0 dG1fcmVmX3R5cGUgcmVmX3R5cGUsIGJvb2wgKmV4aXN0ZWQsCisJCSAgICAgICBib29sIHJlcXVp cmVfZXhpc3RlZCkKIHsKIAlzdHJ1Y3QgZHJtX29wZW5faGFzaCAqaHQgPSAmdGZpbGUtPnJlZl9o YXNoW3JlZl90eXBlXTsKIAlzdHJ1Y3QgdHRtX3JlZl9vYmplY3QgKnJlZjsKQEAgLTM0NSw2ICsz NDYsOSBAQCBpbnQgdHRtX3JlZl9vYmplY3RfYWRkKHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRm aWxlLAogCQl9CiAKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCWlmIChyZXF1aXJlX2V4aXN0ZWQp CisJCQlyZXR1cm4gLUVQRVJNOworCiAJCXJldCA9IHR0bV9tZW1fZ2xvYmFsX2FsbG9jKG1lbV9n bG9iLCBzaXplb2YoKnJlZiksCiAJCQkJCSAgIGZhbHNlLCBmYWxzZSk7CiAJCWlmICh1bmxpa2Vs eShyZXQgIT0gMCkpCkBAIC02MzUsNyArNjM5LDcgQEAgaW50IHR0bV9wcmltZV9mZF90b19oYW5k bGUoc3RydWN0IHR0bV9vYmplY3RfZmlsZSAqdGZpbGUsCiAJcHJpbWUgPSAoc3RydWN0IHR0bV9w cmltZV9vYmplY3QgKikgZG1hX2J1Zi0+cHJpdjsKIAliYXNlID0gJnByaW1lLT5iYXNlOwogCSpo YW5kbGUgPSBiYXNlLT5oYXNoLmtleTsKLQlyZXQgPSB0dG1fcmVmX29iamVjdF9hZGQodGZpbGUs IGJhc2UsIFRUTV9SRUZfVVNBR0UsIE5VTEwpOworCXJldCA9IHR0bV9yZWZfb2JqZWN0X2FkZCh0 ZmlsZSwgYmFzZSwgVFRNX1JFRl9VU0FHRSwgTlVMTCwgZmFsc2UpOwogCiAJZG1hX2J1Zl9wdXQo ZG1hX2J1Zik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Zl bmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5jCmluZGV4IDY0ZTRm ZTRkZDFlYy4uMTAwYWFlNjQ1NGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZlbmNl LmMKQEAgLTQ5NCw3ICs0OTQsNyBAQCBpbnQgdm13X2ZlbmNlX2NyZWF0ZShzdHJ1Y3Qgdm13X2Zl bmNlX21hbmFnZXIgKmZtYW4sCiAJCSAgICAgc3RydWN0IHZtd19mZW5jZV9vYmogKipwX2ZlbmNl KQogewogCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZTsKLQlpbnQgcmV0OworIAlpbnQgcmV0 OwogCiAJZmVuY2UgPSBremFsbG9jKHNpemVvZigqZmVuY2UpLCBHRlBfS0VSTkVMKTsKIAlpZiAo dW5saWtlbHkoZmVuY2UgPT0gTlVMTCkpCkBAIC02NjIsNiArNjYyLDQxIEBAIHZvaWQgdm13X2Zl bmNlX2ZpZm9fdXAoc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuKQogfQogCiAKKy8qKgor ICogdm13X2ZlbmNlX29ial9sb29rdXAgLSBMb29rIHVwIGEgdXNlci1zcGFjZSBmZW5jZSBvYmpl Y3QKKyAqCisgKiBAdGZpbGU6IEEgc3RydWN0IHR0bV9vYmplY3RfZmlsZSBpZGVudGlmeWluZyB0 aGUgY2FsbGVyLgorICogQGhhbmRsZTogQSBoYW5kbGUgaWRlbnRpZnlpbmcgdGhlIGZlbmNlIG9i amVjdC4KKyAqIEByZXR1cm46IEEgc3RydWN0IHZtd191c2VyX2ZlbmNlIGJhc2UgdHRtIG9iamVj dCBvbiBzdWNjZXNzIG9yCisgKiBhbiBlcnJvciBwb2ludGVyIG9uIGZhaWx1cmUuCisgKgorICog VGhlIGZlbmNlIG9iamVjdCBpcyBsb29rZWQgdXAgYW5kIHR5cGUtY2hlY2tlZC4gVGhlIGNhbGxl ciBuZWVkcworICogdG8gaGF2ZSBvcGVuZWQgdGhlIGZlbmNlIG9iamVjdCBmaXJzdCwgYnV0IHNp bmNlIHRoYXQgaGFwcGVucyBvbgorICogY3JlYXRpb24gYW5kIGZlbmNlIG9iamVjdHMgYXJlbid0 IHNoYXJlYWJsZSwgdGhhdCdzIG5vdCBhbgorICogaXNzdWUgY3VycmVudGx5LgorICovCitzdGF0 aWMgc3RydWN0IHR0bV9iYXNlX29iamVjdCAqCit2bXdfZmVuY2Vfb2JqX2xvb2t1cChzdHJ1Y3Qg dHRtX29iamVjdF9maWxlICp0ZmlsZSwgdTMyIGhhbmRsZSkKK3sKKwlzdHJ1Y3QgdHRtX2Jhc2Vf b2JqZWN0ICpiYXNlID0gdHRtX2Jhc2Vfb2JqZWN0X2xvb2t1cCh0ZmlsZSwgaGFuZGxlKTsKKwor CWlmICghYmFzZSkgeworCQlwcl9lcnIoIkludmFsaWQgZmVuY2Ugb2JqZWN0IGhhbmRsZSAweCUw OGx4LlxuIiwKKwkJICAgICAgICh1bnNpZ25lZCBsb25nKWhhbmRsZSk7CisJCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOworCX0KKworCWlmIChiYXNlLT5yZWZjb3VudF9yZWxlYXNlICE9IHZtd191 c2VyX2ZlbmNlX2Jhc2VfcmVsZWFzZSkgeworCQlwcl9lcnIoIkludmFsaWQgZmVuY2Ugb2JqZWN0 IGhhbmRsZSAweCUwOGx4LlxuIiwKKwkJICAgICAgICh1bnNpZ25lZCBsb25nKWhhbmRsZSk7CisJ CXR0bV9iYXNlX29iamVjdF91bnJlZigmYmFzZSk7CisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp OworCX0KKworCXJldHVybiBiYXNlOworfQorCisKIGludCB2bXdfZmVuY2Vfb2JqX3dhaXRfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgICAgc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXYpCiB7CkBAIC02ODcsMTMgKzcyMiw5IEBAIGludCB2bXdfZmVuY2Vf b2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJYXJn LT5rZXJuZWxfY29va2llID0gamlmZmllcyArIHdhaXRfdGltZW91dDsKIAl9CiAKLQliYXNlID0g dHRtX2Jhc2Vfb2JqZWN0X2xvb2t1cCh0ZmlsZSwgYXJnLT5oYW5kbGUpOwotCWlmICh1bmxpa2Vs eShiYXNlID09IE5VTEwpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiV2FpdCBpbnZhbGlkIGZlbmNl IG9iamVjdCBoYW5kbGUgIgotCQkgICAgICAgIjB4JTA4bHguXG4iLAotCQkgICAgICAgKHVuc2ln bmVkIGxvbmcpYXJnLT5oYW5kbGUpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9CisJYmFzZSA9IHZt d19mZW5jZV9vYmpfbG9va3VwKHRmaWxlLCBhcmctPmhhbmRsZSk7CisJaWYgKElTX0VSUihiYXNl KSkKKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7CiAKIAlmZW5jZSA9ICYoY29udGFpbmVyX29mKGJh c2UsIHN0cnVjdCB2bXdfdXNlcl9mZW5jZSwgYmFzZSktPmZlbmNlKTsKIApAQCAtNzMyLDEzICs3 NjMsOSBAQCBpbnQgdm13X2ZlbmNlX29ial9zaWduYWxlZF9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRmaWxlID0gdm13 X2Zwcml2KGZpbGVfcHJpdiktPnRmaWxlOwogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYg PSB2bXdfcHJpdihkZXYpOwogCi0JYmFzZSA9IHR0bV9iYXNlX29iamVjdF9sb29rdXAodGZpbGUs IGFyZy0+aGFuZGxlKTsKLQlpZiAodW5saWtlbHkoYmFzZSA9PSBOVUxMKSkgewotCQlwcmludGso S0VSTl9FUlIgIkZlbmNlIHNpZ25hbGVkIGludmFsaWQgZmVuY2Ugb2JqZWN0IGhhbmRsZSAiCi0J CSAgICAgICAiMHglMDhseC5cbiIsCi0JCSAgICAgICAodW5zaWduZWQgbG9uZylhcmctPmhhbmRs ZSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KKwliYXNlID0gdm13X2ZlbmNlX29ial9sb29rdXAo dGZpbGUsIGFyZy0+aGFuZGxlKTsKKwlpZiAoSVNfRVJSKGJhc2UpKQorCQlyZXR1cm4gUFRSX0VS UihiYXNlKTsKIAogCWZlbmNlID0gJihjb250YWluZXJfb2YoYmFzZSwgc3RydWN0IHZtd191c2Vy X2ZlbmNlLCBiYXNlKS0+ZmVuY2UpOwogCWZtYW4gPSBmZW5jZS0+Zm1hbjsKQEAgLTEwNTIsNiAr MTA3OSw3IEBAIGludCB2bXdfZmVuY2VfZXZlbnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAkJKHN0cnVjdCBkcm1fdm13X2ZlbmNlX2V2ZW50X2FyZyAqKSBkYXRh OwogCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSA9IE5VTEw7CiAJc3RydWN0IHZtd19mcHJp diAqdm13X2ZwID0gdm13X2Zwcml2KGZpbGVfcHJpdik7CisJc3RydWN0IHR0bV9vYmplY3RfZmls ZSAqdGZpbGUgPSB2bXdfZnAtPnRmaWxlOwogCXN0cnVjdCBkcm1fdm13X2ZlbmNlX3JlcCBfX3Vz ZXIgKnVzZXJfZmVuY2VfcmVwID0KIAkJKHN0cnVjdCBkcm1fdm13X2ZlbmNlX3JlcCBfX3VzZXIg KikodW5zaWduZWQgbG9uZykKIAkJYXJnLT5mZW5jZV9yZXA7CkBAIC0xMDY1LDI0ICsxMDkzLDE4 IEBAIGludCB2bXdfZmVuY2VfZXZlbnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIAkgKi8KIAlpZiAoYXJnLT5oYW5kbGUpIHsKIAkJc3RydWN0IHR0bV9iYXNlX29i amVjdCAqYmFzZSA9Ci0JCQl0dG1fYmFzZV9vYmplY3RfbG9va3VwX2Zvcl9yZWYoZGV2X3ByaXYt PnRkZXYsCi0JCQkJCQkgICAgICAgYXJnLT5oYW5kbGUpOwotCi0JCWlmICh1bmxpa2VseShiYXNl ID09IE5VTEwpKSB7Ci0JCQlEUk1fRVJST1IoIkZlbmNlIGV2ZW50IGludmFsaWQgZmVuY2Ugb2Jq ZWN0IGhhbmRsZSAiCi0JCQkJICAiMHglMDhseC5cbiIsCi0JCQkJICAodW5zaWduZWQgbG9uZylh cmctPmhhbmRsZSk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQorCQkJdm13X2ZlbmNlX29ial9s b29rdXAodGZpbGUsIGFyZy0+aGFuZGxlKTsKKworCQlpZiAoSVNfRVJSKGJhc2UpKQorCQkJcmV0 dXJuIFBUUl9FUlIoYmFzZSk7CisKIAkJZmVuY2UgPSAmKGNvbnRhaW5lcl9vZihiYXNlLCBzdHJ1 Y3Qgdm13X3VzZXJfZmVuY2UsCiAJCQkJICAgICAgIGJhc2UpLT5mZW5jZSk7CiAJCSh2b2lkKSB2 bXdfZmVuY2Vfb2JqX3JlZmVyZW5jZShmZW5jZSk7CiAKIAkJaWYgKHVzZXJfZmVuY2VfcmVwICE9 IE5VTEwpIHsKLQkJCWJvb2wgZXhpc3RlZDsKLQogCQkJcmV0ID0gdHRtX3JlZl9vYmplY3RfYWRk KHZtd19mcC0+dGZpbGUsIGJhc2UsCi0JCQkJCQkgVFRNX1JFRl9VU0FHRSwgJmV4aXN0ZWQpOwor CQkJCQkJIFRUTV9SRUZfVVNBR0UsIE5VTEwsIGZhbHNlKTsKIAkJCWlmICh1bmxpa2VseShyZXQg IT0gMCkpIHsKIAkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWZlcmVuY2UgYSBmZW5jZSAiCiAJ CQkJCSAgIm9iamVjdC5cbiIpOwpAQCAtMTEyNSw4ICsxMTQ3LDcgQEAgaW50IHZtd19mZW5jZV9l dmVudF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAw Owogb3V0X25vX2NyZWF0ZToKIAlpZiAodXNlcl9mZW5jZV9yZXAgIT0gTlVMTCkKLQkJdHRtX3Jl Zl9vYmplY3RfYmFzZV91bnJlZih2bXdfZnByaXYoZmlsZV9wcml2KS0+dGZpbGUsCi0JCQkJCSAg aGFuZGxlLCBUVE1fUkVGX1VTQUdFKTsKKwkJdHRtX3JlZl9vYmplY3RfYmFzZV91bnJlZih0Zmls ZSwgaGFuZGxlLCBUVE1fUkVGX1VTQUdFKTsKIG91dF9ub19yZWZfb2JqOgogCXZtd19mZW5jZV9v YmpfdW5yZWZlcmVuY2UoJmZlbmNlKTsKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2lvY3RsLmMKaW5kZXggMzc4ODFlY2Y1ZDdhLi4zMDI1YzRmMGE3MTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2lvY3RsLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfaW9jdGwuYwpAQCAtMTA2LDggKzEwNiw2IEBAIGludCB2bXdf Z2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcGFy YW0tPnZhbHVlID0gZGV2X3ByaXYtPm1heF9tb2Jfc2l6ZTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK LQkJRFJNX0VSUk9SKCJJbGxlZ2FsIHZtd2dmeCBnZXQgcGFyYW0gcmVxdWVzdDogJWRcbiIsCi0J CQkgIHBhcmFtLT5wYXJhbSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMTYxLDcgKzE1 OSw3IEBAIGludCB2bXdfZ2V0X2NhcF8zZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCWJvb2wgZ2Jfb2JqZWN0cyA9ICEhKGRldl9wcml2LT5jYXBhYmlsaXRpZXMg JiBTVkdBX0NBUF9HQk9CSkVDVFMpOwogCXN0cnVjdCB2bXdfZnByaXYgKnZtd19mcCA9IHZtd19m cHJpdihmaWxlX3ByaXYpOwogCi0JaWYgKHVubGlrZWx5KGFyZy0+cGFkNjQgIT0gMCkpIHsKKwlp ZiAodW5saWtlbHkoYXJnLT5wYWQ2NCAhPSAwIHx8IGFyZy0+bWF4X3NpemUgPT0gMCkpIHsKIAkJ RFJNX0VSUk9SKCJJbGxlZ2FsIEdFVF8zRF9DQVAgYXJndW1lbnQuXG4iKTsKIAkJcmV0dXJuIC1F SU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVz b3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKaW5kZXgg NzgxOTZhOTViMGFkLi41ZWEyYzU0ODNhNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfcmVzb3VyY2UuYwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHN0YXRpYyBpbnQgdm13X3VzZXJfZG1h YnVmX3N5bmNjcHVfZ3JhYihzdHJ1Y3Qgdm13X3VzZXJfZG1hX2J1ZmZlciAqdXNlcl9ibywKIAkJ cmV0dXJuIHJldDsKIAogCXJldCA9IHR0bV9yZWZfb2JqZWN0X2FkZCh0ZmlsZSwgJnVzZXJfYm8t PnByaW1lLmJhc2UsCi0JCQkJIFRUTV9SRUZfU1lOQ0NQVV9XUklURSwgJmV4aXN0ZWQpOworCQkJ CSBUVE1fUkVGX1NZTkNDUFVfV1JJVEUsICZleGlzdGVkLCBmYWxzZSk7CiAJaWYgKHJldCAhPSAw IHx8IGV4aXN0ZWQpCiAJCXR0bV9ib19zeW5jY3B1X3dyaXRlX3JlbGVhc2UoJnVzZXJfYm8tPmRt YS5iYXNlKTsKIApAQCAtNzcxLDcgKzc3MSw3IEBAIGludCB2bXdfdXNlcl9kbWFidWZfcmVmZXJl bmNlKHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRmaWxlLAogCiAJKmhhbmRsZSA9IHVzZXJfYm8t PnByaW1lLmJhc2UuaGFzaC5rZXk7CiAJcmV0dXJuIHR0bV9yZWZfb2JqZWN0X2FkZCh0ZmlsZSwg JnVzZXJfYm8tPnByaW1lLmJhc2UsCi0JCQkJICBUVE1fUkVGX1VTQUdFLCBOVUxMKTsKKwkJCQkg IFRUTV9SRUZfVVNBR0UsIE5VTEwsIGZhbHNlKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N1cmZhY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X3N1cmZhY2UuYwppbmRleCAxNDU1MWUyNzgxNGMuLjIyZjk0MDMwZDk5NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N1cmZhY2UuYwpAQCAtOTAyLDE3ICs5MDIsMTYg QEAgdm13X3N1cmZhY2VfaGFuZGxlX3JlZmVyZW5jZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9w cml2LAogCXVpbnQzMl90IGhhbmRsZTsKIAlzdHJ1Y3QgdHRtX2Jhc2Vfb2JqZWN0ICpiYXNlOwog CWludCByZXQ7CisJYm9vbCByZXF1aXJlX2V4aXN0ID0gZmFsc2U7CiAKIAlpZiAoaGFuZGxlX3R5 cGUgPT0gRFJNX1ZNV19IQU5ETEVfUFJJTUUpIHsKIAkJcmV0ID0gdHRtX3ByaW1lX2ZkX3RvX2hh bmRsZSh0ZmlsZSwgdV9oYW5kbGUsICZoYW5kbGUpOwogCQlpZiAodW5saWtlbHkocmV0ICE9IDAp KQogCQkJcmV0dXJuIHJldDsKIAl9IGVsc2UgewotCQlpZiAodW5saWtlbHkoZHJtX2lzX3JlbmRl cl9jbGllbnQoZmlsZV9wcml2KSkpIHsKLQkJCURSTV9FUlJPUigiUmVuZGVyIGNsaWVudCByZWZ1 c2VkIGxlZ2FjeSAiCi0JCQkJICAic3VyZmFjZSByZWZlcmVuY2UuXG4iKTsKLQkJCXJldHVybiAt RUFDQ0VTOwotCQl9CisJCWlmICh1bmxpa2VseShkcm1faXNfcmVuZGVyX2NsaWVudChmaWxlX3By aXYpKSkKKwkJCXJlcXVpcmVfZXhpc3QgPSB0cnVlOworCiAJCWhhbmRsZSA9IHVfaGFuZGxlOwog CX0KIApAQCAtOTM0LDE3ICs5MzMsMTQgQEAgdm13X3N1cmZhY2VfaGFuZGxlX3JlZmVyZW5jZShz dHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0aGUg c3VyZmFjZSBjcmVhdG9yIGhhcyB0aGUgc2FtZQotCQkgKiBhdXRoZW50aWNhdGluZyBtYXN0ZXIu CisJCSAqIGF1dGhlbnRpY2F0aW5nIG1hc3Rlciwgb3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHdp dGggdXMuCiAJCSAqLwogCQlpZiAoZHJtX2lzX3ByaW1hcnlfY2xpZW50KGZpbGVfcHJpdikgJiYK LQkJICAgIHVzZXJfc3JmLT5tYXN0ZXIgIT0gZmlsZV9wcml2LT5tYXN0ZXIpIHsKLQkJCURSTV9F UlJPUigiVHJ5aW5nIHRvIHJlZmVyZW5jZSBzdXJmYWNlIG91dHNpZGUgb2YiCi0JCQkJICAiIG1h c3RlciBkb21haW4uXG4iKTsKLQkJCXJldCA9IC1FQUNDRVM7Ci0JCQlnb3RvIG91dF9iYWRfcmVz b3VyY2U7Ci0JCX0KKwkJICAgIHVzZXJfc3JmLT5tYXN0ZXIgIT0gZmlsZV9wcml2LT5tYXN0ZXIp CisJCQlyZXF1aXJlX2V4aXN0ID0gdHJ1ZTsKIAotCQlyZXQgPSB0dG1fcmVmX29iamVjdF9hZGQo dGZpbGUsIGJhc2UsIFRUTV9SRUZfVVNBR0UsIE5VTEwpOworCQlyZXQgPSB0dG1fcmVmX29iamVj dF9hZGQodGZpbGUsIGJhc2UsIFRUTV9SRUZfVVNBR0UsIE5VTEwsCisJCQkJCSByZXF1aXJlX2V4 aXN0KTsKIAkJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgewogCQkJRFJNX0VSUk9SKCJDb3VsZCBu b3QgYWRkIGEgcmVmZXJlbmNlIHRvIGEgc3VyZmFjZS5cbiIpOwogCQkJZ290byBvdXRfYmFkX3Jl c291cmNlOwpAQCAtMTI0OSw3ICsxMjQ1LDcgQEAgaW50IHZtd19nYl9zdXJmYWNlX2RlZmluZV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWludCByZXQ7CiAJdWlu dDMyX3Qgc2l6ZTsKIAljb25zdCBzdHJ1Y3Qgc3ZnYTNkX3N1cmZhY2VfZGVzYyAqZGVzYzsKLQl1 aW50MzJfdCBiYWNrdXBfaGFuZGxlOworCXVpbnQzMl90IGJhY2t1cF9oYW5kbGUgPSAwOwogCiAJ aWYgKHJlcS0+bWlwX2xldmVscyA+IERSTV9WTVdfTUFYX01JUF9MRVZFTFMpCiAJCXJldHVybiAt RUlOVkFMOwpAQCAtMTMyMSw2ICsxMzE3LDggQEAgaW50IHZtd19nYl9zdXJmYWNlX2RlZmluZV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlyZXQgPSB2bXdfdXNl cl9kbWFidWZfbG9va3VwKHRmaWxlLCByZXEtPmJ1ZmZlcl9oYW5kbGUsCiAJCQkJCSAgICAgJnJl cy0+YmFja3VwLAogCQkJCQkgICAgICZ1c2VyX3NyZi0+YmFja3VwX2Jhc2UpOworCQlpZiAocmV0 ID09IDApCisJCQliYWNrdXBfaGFuZGxlID0gcmVxLT5idWZmZXJfaGFuZGxlOwogCX0gZWxzZSBp ZiAocmVxLT5kcm1fc3VyZmFjZV9mbGFncyAmCiAJCSAgIGRybV92bXdfc3VyZmFjZV9mbGFnX2Ny ZWF0ZV9idWZmZXIpCiAJCXJldCA9IHZtd191c2VyX2RtYWJ1Zl9hbGxvYyhkZXZfcHJpdiwgdGZp bGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FzdXNfYXRrMDExMC5jIGIvZHJpdmVycy9o d21vbi9hc3VzX2F0azAxMTAuYwppbmRleCBhZTIwOGY2MTIxOTguLmVmMDA0YWRlMTRjYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9od21vbi9hc3VzX2F0azAxMTAuYworKysgYi9kcml2ZXJzL2h3bW9u L2FzdXNfYXRrMDExMC5jCkBAIC02NDYsNiArNjQ2LDkgQEAgc3RhdGljIGludCBhdGtfcmVhZF92 YWx1ZShzdHJ1Y3QgYXRrX3NlbnNvcl9kYXRhICpzZW5zb3IsIHU2NCAqdmFsdWUpCiAJCWVsc2UK IAkJCWVyciA9IGF0a19yZWFkX3ZhbHVlX25ldyhzZW5zb3IsIHZhbHVlKTsKIAorCQlpZiAoZXJy KQorCQkJcmV0dXJuIGVycjsKKwogCQlzZW5zb3ItPmlzX3ZhbGlkID0gdHJ1ZTsKIAkJc2Vuc29y LT5sYXN0X3VwZGF0ZWQgPSBqaWZmaWVzOwogCQlzZW5zb3ItPmNhY2hlZF92YWx1ZSA9ICp2YWx1 ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy90aV9hbTMzNXhfYWRjLmMgYi9kcml2ZXJz L2lpby9hZGMvdGlfYW0zMzV4X2FkYy5jCmluZGV4IDIyMmNkYjFjYWFkOS4uYTBjMWE1ZTdiMTVm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9hZGMvdGlfYW0zMzV4X2FkYy5jCisrKyBiL2RyaXZl cnMvaWlvL2FkYy90aV9hbTMzNXhfYWRjLmMKQEAgLTEyMyw3ICsxMjMsOSBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgdGlhZGNfaXJxX2goaW50IGlycSwgdm9pZCAqcHJpdmF0ZSkKIHsKIAlzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2ID0gcHJpdmF0ZTsKIAlzdHJ1Y3QgdGlhZGNfZGV2aWNlICphZGNf ZGV2ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKLQl1bnNpZ25lZCBpbnQgc3RhdHVzLCBjb25maWc7 CisJdW5zaWduZWQgaW50IHN0YXR1cywgY29uZmlnLCBhZGNfZnNtOworCXVuc2lnbmVkIHNob3J0 IGNvdW50ID0gMDsKKwogCXN0YXR1cyA9IHRpYWRjX3JlYWRsKGFkY19kZXYsIFJFR19JUlFTVEFU VVMpOwogCiAJLyoKQEAgLTEzNyw2ICsxMzksMTUgQEAgc3RhdGljIGlycXJldHVybl90IHRpYWRj X2lycV9oKGludCBpcnEsIHZvaWQgKnByaXZhdGUpCiAJCXRpYWRjX3dyaXRlbChhZGNfZGV2LCBS RUdfQ1RSTCwgY29uZmlnKTsKIAkJdGlhZGNfd3JpdGVsKGFkY19kZXYsIFJFR19JUlFTVEFUVVMs IElSUUVOQl9GSUZPMU9WUlJVTgogCQkJCXwgSVJRRU5CX0ZJRk8xVU5EUkZMVyB8IElSUUVOQl9G SUZPMVRIUkVTKTsKKworCQkvKiB3YWl0IGZvciBpZGxlIHN0YXRlLgorCQkgKiBBREMgbmVlZHMg dG8gZmluaXNoIHRoZSBjdXJyZW50IGNvbnZlcnNpb24KKwkJICogYmVmb3JlIGRpc2FibGluZyB0 aGUgbW9kdWxlCisJCSAqLworCQlkbyB7CisJCQlhZGNfZnNtID0gdGlhZGNfcmVhZGwoYWRjX2Rl diwgUkVHX0FEQ0ZTTSk7CisJCX0gd2hpbGUgKGFkY19mc20gIT0gMHgxMCAmJiBjb3VudCsrIDwg MTAwKTsKKwogCQl0aWFkY193cml0ZWwoYWRjX2RldiwgUkVHX0NUUkwsIChjb25maWcgfCBDTlRS TFJFR19UU0NTU0VOQikpOwogCQlyZXR1cm4gSVJRX0hBTkRMRUQ7CiAJfSBlbHNlIGlmIChzdGF0 dXMgJiBJUlFFTkJfRklGTzFUSFJFUykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vY29tbW9u L2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItYXR0cmlidXRlcy5jIGIvZHJpdmVycy9paW8vY29tbW9u L2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItYXR0cmlidXRlcy5jCmluZGV4IGJkNGI2ZTAyYTFjYi4u MjQ5NDMxM2IxMDA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9jb21tb24vaGlkLXNlbnNvcnMv aGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMKKysrIGIvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5z b3JzL2hpZC1zZW5zb3ItYXR0cmlidXRlcy5jCkBAIC0zNjMsNiArMzYzLDggQEAgaW50IGhpZF9z ZW5zb3JfcGFyc2VfY29tbW9uX2F0dHJpYnV0ZXMoc3RydWN0IGhpZF9zZW5zb3JfaHViX2Rldmlj ZSAqaHNkZXYsCiAJCQkJCXN0cnVjdCBoaWRfc2Vuc29yX2NvbW1vbiAqc3QpCiB7CiAKKwlzMzIg dmFsdWU7CisJaW50IHJldDsKIAogCWhpZF9zZW5zb3JfZ2V0X3JlcG9ydGluZ19pbnRlcnZhbCho c2RldiwgdXNhZ2VfaWQsIHN0KTsKIApAQCAtMzg3LDYgKzM4OSwxNCBAQCBpbnQgaGlkX3NlbnNv cl9wYXJzZV9jb21tb25fYXR0cmlidXRlcyhzdHJ1Y3QgaGlkX3NlbnNvcl9odWJfZGV2aWNlICpo c2RldiwKIAkJCXN0LT5wb3dlcl9zdGF0ZS5pbmRleCwgc3QtPnBvd2VyX3N0YXRlLnJlcG9ydF9p ZCwKIAkJCXN0LT5zZW5zaXRpdml0eS5pbmRleCwgc3QtPnNlbnNpdGl2aXR5LnJlcG9ydF9pZCk7 CiAKKwlyZXQgPSBzZW5zb3JfaHViX2dldF9mZWF0dXJlKGhzZGV2LAorCQkJCXN0LT5wb3dlcl9z dGF0ZS5yZXBvcnRfaWQsCisJCQkJc3QtPnBvd2VyX3N0YXRlLmluZGV4LCAmdmFsdWUpOworCWlm IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCWlmICh2YWx1ZSA8IDApCisJCXJldHVybiAtRUlO VkFMOworCiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKGhpZF9zZW5zb3JfcGFyc2VfY29t bW9uX2F0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaW5kdXN0cmlhbGlvLWNv cmUuYyBiL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMKaW5kZXggMjMwY2JkZGE2Y2Ux Li5jNmIwZjE1MDMzNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3Jl LmMKKysrIGIvZHJpdmVycy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYwpAQCAtMzkwLDE2ICszOTAs MTUgQEAgc3NpemVfdCBpaW9fZm9ybWF0X3ZhbHVlKGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IHR5 cGUsIGludCBzaXplLCBpbnQgKnZhbHMpCiAJCXNjYWxlX2RiID0gdHJ1ZTsKIAljYXNlIElJT19W QUxfSU5UX1BMVVNfTUlDUk86CiAJCWlmICh2YWxzWzFdIDwgMCkKLQkJCXJldHVybiBzcHJpbnRm KGJ1ZiwgIi0lbGQuJTA2dSVzXG4iLCBhYnModmFsc1swXSksCi0JCQkJCS12YWxzWzFdLAotCQkJ CXNjYWxlX2RiID8gIiBkQiIgOiAiIik7CisJCQlyZXR1cm4gc3ByaW50ZihidWYsICItJWQuJTA2 dSVzXG4iLCBhYnModmFsc1swXSksCisJCQkJICAgICAgIC12YWxzWzFdLCBzY2FsZV9kYiA/ICIg ZEIiIDogIiIpOwogCQllbHNlCiAJCQlyZXR1cm4gc3ByaW50ZihidWYsICIlZC4lMDZ1JXNcbiIs IHZhbHNbMF0sIHZhbHNbMV0sCiAJCQkJc2NhbGVfZGIgPyAiIGRCIiA6ICIiKTsKIAljYXNlIElJ T19WQUxfSU5UX1BMVVNfTkFOTzoKIAkJaWYgKHZhbHNbMV0gPCAwKQotCQkJcmV0dXJuIHNwcmlu dGYoYnVmLCAiLSVsZC4lMDl1XG4iLCBhYnModmFsc1swXSksCi0JCQkJCS12YWxzWzFdKTsKKwkJ CXJldHVybiBzcHJpbnRmKGJ1ZiwgIi0lZC4lMDl1XG4iLCBhYnModmFsc1swXSksCisJCQkJICAg ICAgIC12YWxzWzFdKTsKIAkJZWxzZQogCQkJcmV0dXJuIHNwcmludGYoYnVmLCAiJWQuJTA5dVxu IiwgdmFsc1swXSwgdmFsc1sxXSk7CiAJY2FzZSBJSU9fVkFMX0ZSQUNUSU9OQUw6CkBAIC00MDcs MTAgKzQwNiw5IEBAIHNzaXplX3QgaWlvX2Zvcm1hdF92YWx1ZShjaGFyICpidWYsIHVuc2lnbmVk IGludCB0eXBlLCBpbnQgc2l6ZSwgaW50ICp2YWxzKQogCQl2YWxzWzBdID0gKGludClkaXZfczY0 X3JlbSh0bXAsIDEwMDAwMDAwMDAsICZ2YWxzWzFdKTsKIAkJcmV0dXJuIHNwcmludGYoYnVmLCAi JWQuJTA5dVxuIiwgdmFsc1swXSwgYWJzKHZhbHNbMV0pKTsKIAljYXNlIElJT19WQUxfRlJBQ1RJ T05BTF9MT0cyOgotCQl0bXAgPSAoczY0KXZhbHNbMF0gKiAxMDAwMDAwMDAwTEwgPj4gdmFsc1sx XTsKLQkJdmFsc1sxXSA9IGRvX2Rpdih0bXAsIDEwMDAwMDAwMDBMTCk7Ci0JCXZhbHNbMF0gPSB0 bXA7Ci0JCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkLiUwOXVcbiIsIHZhbHNbMF0sIHZhbHNbMV0p OworCQl0bXAgPSBzaGlmdF9yaWdodCgoczY0KXZhbHNbMF0gKiAxMDAwMDAwMDAwTEwsIHZhbHNb MV0pOworCQl2YWxzWzBdID0gKGludClkaXZfczY0X3JlbSh0bXAsIDEwMDAwMDAwMDBMTCwgJnZh bHNbMV0pOworCQlyZXR1cm4gc3ByaW50ZihidWYsICIlZC4lMDl1XG4iLCB2YWxzWzBdLCBhYnMo dmFsc1sxXSkpOwogCWNhc2UgSUlPX1ZBTF9JTlRfTVVMVElQTEU6CiAJewogCQlpbnQgaTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYyBiL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9tbHg1L21haW4uYwppbmRleCBjYjkzODgyMmE5MWMuLmI3ZTg1MTVkZmFmMSAx MDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jCisrKyBiL2RyaXZl cnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYwpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgc3Ry dWN0IG1seDVfcHJvZmlsZSBwcm9maWxlW10gPSB7CiAJWzJdID0gewogCQkubWFzawkJPSBNTFg1 X1BST0ZfTUFTS19RUF9TSVpFIHwKIAkJCQkgIE1MWDVfUFJPRl9NQVNLX01SX0NBQ0hFLAotCQku bG9nX21heF9xcAk9IDE3LAorCQkubG9nX21heF9xcAk9IDE4LAogCQkubXJfY2FjaGVbMF0JPSB7 CiAJCQkuc2l6ZQk9IDUwMCwKIAkJCS5saW1pdAk9IDI1MApkaWZmIC0tZ2l0IGEvZHJpdmVycy9p bmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Fp Yi9xaWJfaWJhNzMyMi5jCmluZGV4IDIzY2EyYWNhMWFkNi4uNTMzMWY4NjgzZWY2IDEwMDY0NAot LS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MzIyLmMKKysrIGIvZHJpdmVy cy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jCkBAIC03MDc4LDcgKzcwNzgsNyBAQCBz dGF0aWMgdm9pZCBxaWJfNzMyMl90eGNoa19jaGFuZ2Uoc3RydWN0IHFpYl9kZXZkYXRhICpkZCwg dTMyIHN0YXJ0LAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAl3aGlsZSAod2FpdCkgewotCQl1 bnNpZ25lZCBsb25nIHNoYWRvdzsKKwkJdW5zaWduZWQgbG9uZyBzaGFkb3cgPSAwOwogCQlpbnQg Y3N0YXJ0LCBwcmV2aSA9IC0xOwogCiAJCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2pv eXN0aWNrL2lmb3JjZS9pZm9yY2UtdXNiLmMgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3Jj ZS9pZm9yY2UtdXNiLmMKaW5kZXggZDk2YWEyN2RmY2RjLi5kYjY0YWRmYmUxYWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS11c2IuYworKysgYi9kcml2 ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtdXNiLmMKQEAgLTE0MSw2ICsxNDEsOSBA QCBzdGF0aWMgaW50IGlmb3JjZV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYs CiAKIAlpbnRlcmZhY2UgPSBpbnRmLT5jdXJfYWx0c2V0dGluZzsKIAorCWlmIChpbnRlcmZhY2Ut PmRlc2MuYk51bUVuZHBvaW50cyA8IDIpCisJCXJldHVybiAtRU5PREVWOworCiAJZXBpcnEgPSAm aW50ZXJmYWNlLT5lbmRwb2ludFswXS5kZXNjOwogCWVwb3V0ID0gJmludGVyZmFjZS0+ZW5kcG9p bnRbMV0uZGVzYzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2NtMTA5LmMgYi9k cml2ZXJzL2lucHV0L21pc2MvY20xMDkuYwppbmRleCA5MzY1NTM1YmE3ZjEuLjUwYTdmYWE1MDRm NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2NtMTA5LmMKKysrIGIvZHJpdmVycy9p bnB1dC9taXNjL2NtMTA5LmMKQEAgLTY3NSw2ICs2NzUsMTAgQEAgc3RhdGljIGludCBjbTEwOV91 c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJaW50IGVycm9yID0gLUVOT01F TTsKIAogCWludGVyZmFjZSA9IGludGYtPmN1cl9hbHRzZXR0aW5nOworCisJaWYgKGludGVyZmFj ZS0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAllbmRwb2lu dCA9ICZpbnRlcmZhY2UtPmVuZHBvaW50WzBdLmRlc2M7CiAKIAlpZiAoIXVzYl9lbmRwb2ludF9p c19pbnRfaW4oZW5kcG9pbnQpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2ltcy1w Y3UuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMKaW5kZXggMzJiYTJjZjhmZGNkLi5m MTkzNzVhY2ZlZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMKKysr IGIvZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYwpAQCAtMTY2Nyw2ICsxNjY3LDEwIEBAIHN0 YXRpYyBpbnQgaW1zX3BjdV9wYXJzZV9jZGNfZGF0YShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50 Ziwgc3RydWN0IGltc19wY3UgKnBjCiAJCXJldHVybiAtRUlOVkFMOwogCiAJYWx0ID0gcGN1LT5j dHJsX2ludGYtPmN1cl9hbHRzZXR0aW5nOworCisJaWYgKGFsdC0+ZGVzYy5iTnVtRW5kcG9pbnRz IDwgMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlwY3UtPmVwX2N0cmwgPSAmYWx0LT5lbmRwb2lu dFswXS5kZXNjOwogCXBjdS0+bWF4X2N0cmxfc2l6ZSA9IHVzYl9lbmRwb2ludF9tYXhwKHBjdS0+ ZXBfY3RybCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy95ZWFsaW5rLmMgYi9k cml2ZXJzL2lucHV0L21pc2MveWVhbGluay5jCmluZGV4IDc5Yzk2NGMwNzVmMS4uNmU3ZmY5NTYx ZDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2MveWVhbGluay5jCisrKyBiL2RyaXZl cnMvaW5wdXQvbWlzYy95ZWFsaW5rLmMKQEAgLTg3NSw2ICs4NzUsMTAgQEAgc3RhdGljIGludCB1 c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2 aWNlX2lkICppZCkKIAlpbnQgcmV0LCBwaXBlLCBpOwogCiAJaW50ZXJmYWNlID0gaW50Zi0+Y3Vy X2FsdHNldHRpbmc7CisKKwlpZiAoaW50ZXJmYWNlLT5kZXNjLmJOdW1FbmRwb2ludHMgPCAxKQor CQlyZXR1cm4gLUVOT0RFVjsKKwogCWVuZHBvaW50ID0gJmludGVyZmFjZS0+ZW5kcG9pbnRbMF0u ZGVzYzsKIAlpZiAoIXVzYl9lbmRwb2ludF9pc19pbnRfaW4oZW5kcG9pbnQpKQogCQlyZXR1cm4g LUVOT0RFVjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYyBiL2Ry aXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYwppbmRleCAyNTA4OGU0MGNhMDYuLjU3N2VhOGYz Y2QwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9lbGFudGVjaC5jCisrKyBiL2Ry aXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYwpAQCAtMTAzNiw2ICsxMDM2LDcgQEAgc3RhdGlj IGludCBlbGFudGVjaF9nZXRfcmVzb2x1dGlvbl92NChzdHJ1Y3QgcHNtb3VzZSAqcHNtb3VzZSwK ICAqIEFzdXMgVVgzMlZEICAgICAgICAgICAgIDB4MzYxZjAyICAgICAgICAwMCwgMTUsIDBlICAg ICAgY2xpY2twYWQKICAqIEF2YXRhciBBVklVLTE0NUEyICAgICAgIDB4MzYxZjAwICAgICAgICA/ ICAgICAgICAgICAgICAgY2xpY2twYWQKICAqIEZ1aml0c3UgTElGRUJPT0sgRTU0NCAgIDB4NDcw ZjAwICAgICAgICBkMCwgMTIsIDA5ICAgICAgMiBodyBidXR0b25zCisgKiBGdWppdHN1IExJRkVC T09LIEU1NDcgICAweDQ3MGYwMCAgICAgICAgNTAsIDEyLCAwOSAgICAgIDIgaHcgYnV0dG9ucwog ICogRnVqaXRzdSBMSUZFQk9PSyBFNTU0ICAgMHg1NzBmMDEgICAgICAgIDQwLCAxNCwgMGMgICAg ICAyIGh3IGJ1dHRvbnMKICAqIEdpZ2FieXRlIFUyNDQyICAgICAgICAgIDB4NDUwZjAxICAgICAg ICA1OCwgMTcsIDBjICAgICAgMiBodyBidXR0b25zCiAgKiBMZW5vdm8gTDQzMCAgICAgICAgICAg ICAweDM1MGYwMiAgICAgICAgYjksIDE1LCAwYyAgICAgIDIgaHcgYnV0dG9ucyAoKikKQEAgLTEz OTYsNiArMTM5NywxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZWxhbnRl Y2hfZG1pX2ZvcmNlX2NyY19lbmFibGVkW10gPSB7CiAJCX0sCiAJfSwKIAl7CisJCS8qIEZ1aml0 c3UgTElGRUJPT0sgRTU0NyBkb2VzIG5vdCB3b3JrIHdpdGggY3JjX2VuYWJsZWQgPT0gMCAqLwor CQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkZVSklUU1UiKSwK KwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiTElGRUJPT0sgRTU0NyIpLAorCQl9LAor CX0sCisJewogCQkvKiBGdWppdHN1IExJRkVCT09LIEU1NTQgIGRvZXMgbm90IHdvcmsgd2l0aCBj cmNfZW5hYmxlZCA9PSAwICovCiAJCS5tYXRjaGVzID0gewogCQkJRE1JX01BVENIKERNSV9TWVNf VkVORE9SLCAiRlVKSVRTVSIpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0 Mi14ODZpYTY0aW8uaCBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2NGlvLmgKaW5k ZXggM2YzYzUxN2YyMDM5Li4wNGEyNTkzZjBhOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQv c2VyaW8vaTgwNDIteDg2aWE2NGlvLmgKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi14 ODZpYTY0aW8uaApAQCAtMTIwLDYgKzEyMCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9z eXN0ZW1faWQgX19pbml0Y29uc3QgaTgwNDJfZG1pX25vbG9vcF90YWJsZVtdID0gewogCQl9LAog CX0sCiAJeworCQkvKiBEZWxsIEVtYmVkZGVkIEJveCBQQyAzMDAwICovCisJCS5tYXRjaGVzID0g eworCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiRGVsbCBJbmMuIiksCisJCQlETUlfTUFU Q0goRE1JX1BST0RVQ1RfTkFNRSwgIkVtYmVkZGVkIEJveCBQQyAzMDAwIiksCisJCX0sCisJfSwK Kwl7CiAJCS8qIE9RTyBNb2RlbCAwMSAqLwogCQkubWF0Y2hlcyA9IHsKIAkJCURNSV9NQVRDSChE TUlfU1lTX1ZFTkRPUiwgIk9RTyIpLApAQCAtNTg3LDYgKzU5NCwxMyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRtaV9zeXN0ZW1faWQgX19pbml0Y29uc3QgaTgwNDJfZG1pX3Jlc2V0X3RhYmxlW10g PSB7CiAJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIjIwMDQ2IiksCiAJCX0sCiAJfSwK Kwl7CisJCS8qIENsZXZvIFA2NTBSUywgNjUwUlA2LCBTYWdlciBOUDgxNTItUywgYW5kIG90aGVy cyAqLworCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIk5vdGVi b29rIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIlA2NXhSUCIpLAorCQl9LAor CX0sCiAJeyB9CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RhYmxldC9oYW53YW5n LmMgYi9kcml2ZXJzL2lucHV0L3RhYmxldC9oYW53YW5nLmMKaW5kZXggY2Q4NTIwNTliOTllLi5k ZjRiZWE5NmQ3ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L2hhbndhbmcuYwor KysgYi9kcml2ZXJzL2lucHV0L3RhYmxldC9oYW53YW5nLmMKQEAgLTM0MCw2ICszNDAsOSBAQCBz dGF0aWMgaW50IGhhbndhbmdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0 IHN0cnVjdCB1c2JfZGV2aWNlX2lkCiAJaW50IGVycm9yOwogCWludCBpOwogCisJaWYgKGludGYt PmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJOdW1FbmRwb2ludHMgPCAxKQorCQlyZXR1cm4gLUVOT0RF VjsKKwogCWhhbndhbmcgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaGFud2FuZyksIEdGUF9LRVJO RUwpOwogCWlucHV0X2RldiA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOwogCWlmICghaGFud2Fu ZyB8fCAhaW5wdXRfZGV2KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RhYmxldC9rYnRh Yi5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQva2J0YWIuYwppbmRleCBkMmFjN2MyYjViODIuLjI4 MTJmOTIzNmI3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90YWJsZXQva2J0YWIuYworKysg Yi9kcml2ZXJzL2lucHV0L3RhYmxldC9rYnRhYi5jCkBAIC0xMjIsNiArMTIyLDkgQEAgc3RhdGlj IGludCBrYnRhYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0 IHVzYl9kZXZpY2VfaWQgKmkKIAlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7CiAJaW50IGVy cm9yID0gLUVOT01FTTsKIAorCWlmIChpbnRmLT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5iTnVtRW5k cG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlrYnRhYiA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBrYnRhYiksIEdGUF9LRVJORUwpOwogCWlucHV0X2RldiA9IGlucHV0X2FsbG9jYXRl X2RldmljZSgpOwogCWlmICgha2J0YWIgfHwgIWlucHV0X2RldikKZGlmZiAtLWdpdCBhL2RyaXZl cnMvaW5wdXQvdG91Y2hzY3JlZW4vc3VyNDAuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4v c3VyNDAuYwppbmRleCBmMWNiMDUxNDhiNDYuLmFmOTZmZmNiY2ZmZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9pbnB1dC90b3VjaHNjcmVlbi9zdXI0MC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hz Y3JlZW4vc3VyNDAuYwpAQCAtMzYxLDYgKzM2MSw5IEBAIHN0YXRpYyBpbnQgc3VyNDBfcHJvYmUo c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSwKIAlpZiAoaWZhY2VfZGVzYy0+ZGVzYy5i SW50ZXJmYWNlQ2xhc3MgIT0gMHhGRikKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlpZiAoaWZhY2Vf ZGVzYy0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgNSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAkvKiBV c2UgZW5kcG9pbnQgIzQgKDB4ODYpLiAqLwogCWVuZHBvaW50ID0gJmlmYWNlX2Rlc2MtPmVuZHBv aW50WzRdLmRlc2M7CiAJaWYgKGVuZHBvaW50LT5iRW5kcG9pbnRBZGRyZXNzICE9IFRPVUNIX0VO RFBPSU5UKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2dpZ2FzZXQvYmFzLWdpZ2FzZXQuYyBi L2RyaXZlcnMvaXNkbi9naWdhc2V0L2Jhcy1naWdhc2V0LmMKaW5kZXggYjdhZTBhMGRkNWI2Li4y YTQ2MTI4ZmY3NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9naWdhc2V0L2Jhcy1naWdhc2V0 LmMKKysrIGIvZHJpdmVycy9pc2RuL2dpZ2FzZXQvYmFzLWdpZ2FzZXQuYwpAQCAtMjMxNyw2ICsy MzE3LDkgQEAgc3RhdGljIGludCBnaWdhc2V0X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICpp bnRlcmZhY2UsCiAJCXJldHVybiAtRU5PREVWOwogCX0KIAorCWlmIChob3N0aWYtPmRlc2MuYk51 bUVuZHBvaW50cyA8IDEpCisJCXJldHVybiAtRU5PREVWOworCiAJZGV2X2luZm8oJnVkZXYtPmRl diwKIAkJICIlczogRGV2aWNlIG1hdGNoZWQgKFZlbmRvcjogMHgleCwgUHJvZHVjdDogMHgleClc biIsCiAJCSBfX2Z1bmNfXywgbGUxNl90b19jcHUodWRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciks CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxMC5jIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpp bmRleCAxOWJjMmUxYWVlMjYuLjVhZjlhNTZlNTAxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9y YWlkMTAuYworKysgYi9kcml2ZXJzL21kL3JhaWQxMC5jCkBAIC0xNTgwLDcgKzE1ODAsMjUgQEAg c3RhdGljIHZvaWQgbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8g KmJpbykKIAkJCXNwbGl0ID0gYmlvOwogCQl9CiAKKwkJLyoKKwkJICogSWYgYSBiaW8gaXMgc3Bs aXR0ZWQsIHRoZSBmaXJzdCBwYXJ0IG9mIGJpbyB3aWxsIHBhc3MKKwkJICogYmFycmllciBidXQg dGhlIGJpbyBpcyBxdWV1ZWQgaW4gY3VycmVudC0+YmlvX2xpc3QgKHNlZQorCQkgKiBnZW5lcmlj X21ha2VfcmVxdWVzdCkuIElmIHRoZXJlIGlzIGEgcmFpc2VfYmFycmllcigpIGNhbGxlZAorCQkg KiBoZXJlLCB0aGUgc2Vjb25kIHBhcnQgb2YgYmlvIGNhbid0IHBhc3MgYmFycmllci4gQnV0IHNp bmNlCisJCSAqIHRoZSBmaXJzdCBwYXJ0IGJpbyBpc24ndCBkaXNwYXRjaGVkIHRvIHVuZGVybGF5 aW5nIGRpc2tzCisJCSAqIHlldCwgdGhlIGJhcnJpZXIgaXMgbmV2ZXIgcmVsZWFzZWQsIGhlbmNl IHJhaXNlX2JhcnJpZXIgd2lsbAorCQkgKiBhbGF5cyB3YWl0LiBXZSBoYXZlIGEgZGVhZGxvY2su CisJCSAqIE5vdGUsIHRoaXMgb25seSBoYXBwZW5zIGluIHJlYWQgcGF0aC4gRm9yIHdyaXRlIHBh dGgsIHRoZQorCQkgKiBmaXJzdCBwYXJ0IG9mIGJpbyBpcyBkaXNwYXRjaGVkIGluIGEgc2NoZWR1 bGUoKSBjYWxsCisJCSAqIChiZWNhdXNlIG9mIGJsayBwbHVnKSBvciBvZmZsb2FkZWQgdG8gcmFp ZDEwZC4KKwkJICogUXVpdHRpbmcgZnJvbSB0aGUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgY2FuIGNo YW5nZSB0aGUgYmlvCisJCSAqIG9yZGVyIHF1ZXVlZCBpbiBiaW9fbGlzdCBhbmQgYXZvaWQgdGhl IGRlYWRsb2NrLgorCQkgKi8KIAkJX19tYWtlX3JlcXVlc3QobWRkZXYsIHNwbGl0KTsKKwkJaWYg KHNwbGl0ICE9IGJpbyAmJiBiaW9fZGF0YV9kaXIoYmlvKSA9PSBSRUFEKSB7CisJCQlnZW5lcmlj X21ha2VfcmVxdWVzdChiaW8pOworCQkJYnJlYWs7CisJCX0KIAl9IHdoaWxlIChzcGxpdCAhPSBi aW8pOwogCiAJLyogSW4gY2FzZSByYWlkMTBkIHNudWNrIGluIHRvIGZyZWV6ZV9hcnJheSAqLwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi9kdmItdXNiLWZpcm13YXJlLmMg Yi9kcml2ZXJzL21lZGlhL3VzYi9kdmItdXNiL2R2Yi11c2ItZmlybXdhcmUuYwppbmRleCA3MzNh N2ZmN2IyMDcuLmNhYWQzYjVjMDFhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvZHZi LXVzYi9kdmItdXNiLWZpcm13YXJlLmMKKysrIGIvZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi9k dmItdXNiLWZpcm13YXJlLmMKQEAgLTM1LDQyICszNSw1MSBAQCBzdGF0aWMgaW50IHVzYl9jeXBy ZXNzX3dyaXRlbWVtKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LHUxNiBhZGRyLHU4ICpkYXRhLCB1 OCBsZQogCiBpbnQgdXNiX2N5cHJlc3NfbG9hZF9maXJtd2FyZShzdHJ1Y3QgdXNiX2RldmljZSAq dWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgaW50IHR5cGUpCiB7Ci0Jc3RydWN0IGhl eGxpbmUgaHg7Ci0JdTggcmVzZXQ7Ci0JaW50IHJldCxwb3M9MDsKKwlzdHJ1Y3QgaGV4bGluZSAq aHg7CisJdTggKmJ1ZjsKKwlpbnQgcmV0LCBwb3MgPSAwOworCXUxNiBjcHVfY3NfcmVnaXN0ZXIg PSBjeXByZXNzW3R5cGVdLmNwdV9jc19yZWdpc3RlcjsKKworCWJ1ZiA9IGttYWxsb2Moc2l6ZW9m KCpoeCksIEdGUF9LRVJORUwpOworCWlmICghYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKwloeCA9 IChzdHJ1Y3QgaGV4bGluZSAqKWJ1ZjsKIAogCS8qIHN0b3AgdGhlIENQVSAqLwotCXJlc2V0ID0g MTsKLQlpZiAoKHJldCA9IHVzYl9jeXByZXNzX3dyaXRlbWVtKHVkZXYsY3lwcmVzc1t0eXBlXS5j cHVfY3NfcmVnaXN0ZXIsJnJlc2V0LDEpKSAhPSAxKQorCWJ1ZlswXSA9IDE7CisJaWYgKHVzYl9j eXByZXNzX3dyaXRlbWVtKHVkZXYsIGNwdV9jc19yZWdpc3RlciwgYnVmLCAxKSAhPSAxKQogCQll cnIoImNvdWxkIG5vdCBzdG9wIHRoZSBVU0IgY29udHJvbGxlciBDUFUuIik7CiAKLQl3aGlsZSAo KHJldCA9IGR2Yl91c2JfZ2V0X2hleGxpbmUoZncsJmh4LCZwb3MpKSA+IDApIHsKLQkJZGViX2Z3 KCJ3cml0aW5nIHRvIGFkZHJlc3MgMHglMDR4IChidWZmZXI6IDB4JTAyeCAlMDJ4KVxuIixoeC5h ZGRyLGh4LmxlbixoeC5jaGspOwotCQlyZXQgPSB1c2JfY3lwcmVzc193cml0ZW1lbSh1ZGV2LGh4 LmFkZHIsaHguZGF0YSxoeC5sZW4pOworCXdoaWxlICgocmV0ID0gZHZiX3VzYl9nZXRfaGV4bGlu ZShmdywgaHgsICZwb3MpKSA+IDApIHsKKwkJZGViX2Z3KCJ3cml0aW5nIHRvIGFkZHJlc3MgMHgl MDR4IChidWZmZXI6IDB4JTAyeCAlMDJ4KVxuIiwgaHgtPmFkZHIsIGh4LT5sZW4sIGh4LT5jaGsp OworCQlyZXQgPSB1c2JfY3lwcmVzc193cml0ZW1lbSh1ZGV2LCBoeC0+YWRkciwgaHgtPmRhdGEs IGh4LT5sZW4pOwogCi0JCWlmIChyZXQgIT0gaHgubGVuKSB7CisJCWlmIChyZXQgIT0gaHgtPmxl bikgewogCQkJZXJyKCJlcnJvciB3aGlsZSB0cmFuc2ZlcnJpbmcgZmlybXdhcmUgIgogCQkJCSIo dHJhbnNmZXJyZWQgc2l6ZTogJWQsIGJsb2NrIHNpemU6ICVkKSIsCi0JCQkJcmV0LGh4Lmxlbik7 CisJCQkJcmV0LCBoeC0+bGVuKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlicmVhazsKIAkJfQog CX0KIAlpZiAocmV0IDwgMCkgewogCQllcnIoImZpcm13YXJlIGRvd25sb2FkIGZhaWxlZCBhdCAl ZCB3aXRoICVkIixwb3MscmV0KTsKKwkJa2ZyZWUoYnVmKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAK IAlpZiAocmV0ID09IDApIHsKIAkJLyogcmVzdGFydCB0aGUgQ1BVICovCi0JCXJlc2V0ID0gMDsK LQkJaWYgKHJldCB8fCB1c2JfY3lwcmVzc193cml0ZW1lbSh1ZGV2LGN5cHJlc3NbdHlwZV0uY3B1 X2NzX3JlZ2lzdGVyLCZyZXNldCwxKSAhPSAxKSB7CisJCWJ1ZlswXSA9IDA7CisJCWlmICh1c2Jf Y3lwcmVzc193cml0ZW1lbSh1ZGV2LCBjcHVfY3NfcmVnaXN0ZXIsIGJ1ZiwgMSkgIT0gMSkgewog CQkJZXJyKCJjb3VsZCBub3QgcmVzdGFydCB0aGUgVVNCIGNvbnRyb2xsZXIgQ1BVLiIpOwogCQkJ cmV0ID0gLUVJTlZBTDsKIAkJfQogCX0gZWxzZQogCQlyZXQgPSAtRUlPOwogCisJa2ZyZWUoYnVm KTsKKwogCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MKHVzYl9jeXByZXNzX2xvYWRfZmly bXdhcmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hcmFzYW4uYyBi L2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktb2YtYXJhc2FuLmMKaW5kZXggNWJkMTA5MjMxMGYyLi42 OThkYWZhMTEwYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktb2YtYXJhc2Fu LmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hcmFzYW4uYwpAQCAtMjIsMTIgKzIy LDYgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlICJzZGhjaS1wbHRmbS5o IgogCi0jZGVmaW5lIFNESENJX0FSQVNBTl9DTEtfQ1RSTF9PRkZTRVQJMHgyYwotCi0jZGVmaW5l IENMS19DVFJMX1RJTUVPVVRfU0hJRlQJCTE2Ci0jZGVmaW5lIENMS19DVFJMX1RJTUVPVVRfTUFT SwkJKDB4ZiA8PCBDTEtfQ1RSTF9USU1FT1VUX1NISUZUKQotI2RlZmluZSBDTEtfQ1RSTF9USU1F T1VUX01JTl9FWFAJMTMKLQogLyoqCiAgKiBzdHJ1Y3Qgc2RoY2lfYXJhc2FuX2RhdGEKICAqIEBj bGtfYWhiOglQb2ludGVyIHRvIHRoZSBBSEIgY2xvY2sKQEAgLTM4LDE1ICszMiwxNSBAQCBzdHJ1 Y3Qgc2RoY2lfYXJhc2FuX2RhdGEgewogCiBzdGF0aWMgdW5zaWduZWQgaW50IHNkaGNpX2FyYXNh bl9nZXRfdGltZW91dF9jbG9jayhzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCkKIHsKLQl1MzIgZGl2 OwogCXVuc2lnbmVkIGxvbmcgZnJlcTsKIAlzdHJ1Y3Qgc2RoY2lfcGx0Zm1faG9zdCAqcGx0Zm1f aG9zdCA9IHNkaGNpX3ByaXYoaG9zdCk7CiAKLQlkaXYgPSByZWFkbChob3N0LT5pb2FkZHIgKyBT REhDSV9BUkFTQU5fQ0xLX0NUUkxfT0ZGU0VUKTsKLQlkaXYgPSAoZGl2ICYgQ0xLX0NUUkxfVElN RU9VVF9NQVNLKSA+PiBDTEtfQ1RSTF9USU1FT1VUX1NISUZUOworCS8qIFNESENJIHRpbWVvdXQg Y2xvY2sgaXMgaW4ga0h6ICovCisJZnJlcSA9IERJVl9ST1VORF9VUChjbGtfZ2V0X3JhdGUocGx0 Zm1faG9zdC0+Y2xrKSwgMTAwMCk7CiAKLQlmcmVxID0gY2xrX2dldF9yYXRlKHBsdGZtX2hvc3Qt PmNsayk7Ci0JZnJlcSAvPSAxIDw8IChDTEtfQ1RSTF9USU1FT1VUX01JTl9FWFAgKyBkaXYpOwor CS8qIG9yIGluIE1IeiAqLworCWlmIChob3N0LT5jYXBzICYgU0RIQ0lfVElNRU9VVF9DTEtfVU5J VCkKKwkJZnJlcSA9IERJVl9ST1VORF9VUChmcmVxLCAxMDAwKTsKIAogCXJldHVybiBmcmVxOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jIGIvZHJpdmVycy9tbWMvaG9z dC9zZGhjaS5jCmluZGV4IDc5ZDdhMTAwMjhiZS4uZDc5YjhjMzI0OTM0IDEwMDY0NAotLS0gYS9k cml2ZXJzL21tYy9ob3N0L3NkaGNpLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jCkBA IC0xMjI0LDcgKzEyMjQsOSBAQCB2b2lkIHNkaGNpX3NldF9jbG9jayhzdHJ1Y3Qgc2RoY2lfaG9z dCAqaG9zdCwgdW5zaWduZWQgaW50IGNsb2NrKQogCQkJcmV0dXJuOwogCQl9CiAJCXRpbWVvdXQt LTsKLQkJbWRlbGF5KDEpOworCQlzcGluX3VubG9ja19pcnEoJmhvc3QtPmxvY2spOworCQl1c2xl ZXBfcmFuZ2UoOTAwLCAxMTAwKTsKKwkJc3Bpbl9sb2NrX2lycSgmaG9zdC0+bG9jayk7CiAJfQog CiAJY2xrIHw9IFNESENJX0NMT0NLX0NBUkRfRU47CkBAIC0xNzA2LDYgKzE3MDgsOSBAQCBzdGF0 aWMgdm9pZCBzZGhjaV9lbmFibGVfc2Rpb19pcnEoc3RydWN0IG1tY19ob3N0ICptbWMsIGludCBl bmFibGUpCiAKIAlzZGhjaV9ydW50aW1lX3BtX2dldChob3N0KTsKIAorCWlmIChlbmFibGUpCisJ CXBtX3J1bnRpbWVfZ2V0X25vcmVzdW1lKGhvc3QtPm1tYy0+cGFyZW50KTsKKwogCXNwaW5fbG9j a19pcnFzYXZlKCZob3N0LT5sb2NrLCBmbGFncyk7CiAJaWYgKGVuYWJsZSkKIAkJaG9zdC0+Zmxh Z3MgfD0gU0RIQ0lfU0RJT19JUlFfRU5BQkxFRDsKQEAgLTE3MTUsNiArMTcyMCw5IEBAIHN0YXRp YyB2b2lkIHNkaGNpX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgaW50IGVu YWJsZSkKIAlzZGhjaV9lbmFibGVfc2Rpb19pcnFfbm9sb2NrKGhvc3QsIGVuYWJsZSk7CiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmaG9zdC0+bG9jaywgZmxhZ3MpOwogCisJaWYgKCFlbmFibGUp CisJCXBtX3J1bnRpbWVfcHV0X25vaWRsZShob3N0LT5tbWMtPnBhcmVudCk7CisKIAlzZGhjaV9y dW50aW1lX3BtX3B1dChob3N0KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC91 c2hjLmMgYi9kcml2ZXJzL21tYy9ob3N0L3VzaGMuYwppbmRleCBkMmMzODZmMDlkNjkuLjFkODQz MzU3NDIyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC91c2hjLmMKKysrIGIvZHJpdmVy cy9tbWMvaG9zdC91c2hjLmMKQEAgLTQyNiw2ICs0MjYsOSBAQCBzdGF0aWMgaW50IHVzaGNfcHJv YmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lk ICppZAogCXN0cnVjdCB1c2hjX2RhdGEgKnVzaGM7CiAJaW50IHJldDsKIAorCWlmIChpbnRmLT5j dXJfYWx0c2V0dGluZy0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9ERVY7 CisKIAltbWMgPSBtbWNfYWxsb2NfaG9zdChzaXplb2Yoc3RydWN0IHVzaGNfZGF0YSksICZpbnRm LT5kZXYpOwogCWlmIChtbWMgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQg YS9kcml2ZXJzL210ZC91YmkvdXBkLmMgYi9kcml2ZXJzL210ZC91YmkvdXBkLmMKaW5kZXggMDEz NGJhMzJhMDU3Li4zOTcxMjU2MGI0YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS91cGQu YworKysgYi9kcml2ZXJzL210ZC91YmkvdXBkLmMKQEAgLTE0OCwxMSArMTQ4LDExIEBAIGludCB1 Ymlfc3RhcnRfdXBkYXRlKHN0cnVjdCB1YmlfZGV2aWNlICp1YmksIHN0cnVjdCB1Ymlfdm9sdW1l ICp2b2wsCiAJCQlyZXR1cm4gZXJyOwogCX0KIAotCWlmIChieXRlcyA9PSAwKSB7Ci0JCWVyciA9 IHViaV93bF9mbHVzaCh1YmksIFVCSV9BTEwsIFVCSV9BTEwpOwotCQlpZiAoZXJyKQotCQkJcmV0 dXJuIGVycjsKKwllcnIgPSB1Ymlfd2xfZmx1c2godWJpLCBVQklfQUxMLCBVQklfQUxMKTsKKwlp ZiAoZXJyKQorCQlyZXR1cm4gZXJyOwogCisJaWYgKGJ5dGVzID09IDApIHsKIAkJZXJyID0gY2xl YXJfdXBkYXRlX21hcmtlcih1YmksIHZvbCwgMCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJy OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2Vu ZXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMKaW5k ZXggNTVhMmNhYTIwMjk4Li4xOGVmOTJlMmQ1ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBCcm9h ZGNvbSBHRU5FVCAoR2lnYWJpdCBFdGhlcm5ldCkgY29udHJvbGxlciBkcml2ZXIKICAqCi0gKiBD b3B5cmlnaHQgKGMpIDIwMTQgQnJvYWRjb20gQ29ycG9yYXRpb24KKyAqIENvcHlyaWdodCAoYykg MjAxNC0yMDE3IEJyb2FkY29tCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0z NzAsNiArMzcwLDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiY21nZW5ldF9yZG1hX3Jpbmdfd3Jp dGVsKHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2LAogCQkJZ2VuZXRfZG1hX3JpbmdfcmVnc1ty XSk7CiB9CiAKK3N0YXRpYyBpbnQgYmNtZ2VuZXRfYmVnaW4oc3RydWN0IG5ldF9kZXZpY2UgKmRl dikKK3sKKwlzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CisK KwkvKiBUdXJuIG9uIHRoZSBjbG9jayAqLworCXJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHJp di0+Y2xrKTsKK30KKworc3RhdGljIHZvaWQgYmNtZ2VuZXRfY29tcGxldGUoc3RydWN0IG5ldF9k ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2 KGRldik7CisKKwkvKiBUdXJuIG9mZiB0aGUgY2xvY2sgKi8KKwljbGtfZGlzYWJsZV91bnByZXBh cmUocHJpdi0+Y2xrKTsKK30KKwogc3RhdGljIGludCBiY21nZW5ldF9nZXRfc2V0dGluZ3Moc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJc3RydWN0IGV0aHRvb2xfY21kICpjbWQpCiB7CkBAIC02 MTcsOCArNjMzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiY21nZW5ldF9zdGF0cyBiY21nZW5l dF9nc3RyaW5nc19zdGF0c1tdID0gewogCVNUQVRfR0VORVRfUlVOVCgicnhfcnVudF9ieXRlcyIs IG1pYi5yeF9ydW50X2J5dGVzKSwKIAkvKiBNaXNjIFVuaU1BQyBjb3VudGVycyAqLwogCVNUQVRf R0VORVRfTUlTQygicmJ1Zl9vdmZsb3dfY250IiwgbWliLnJidWZfb3ZmbG93X2NudCwKLQkJCVVN QUNfUkJVRl9PVkZMX0NOVCksCi0JU1RBVF9HRU5FVF9NSVNDKCJyYnVmX2Vycl9jbnQiLCBtaWIu cmJ1Zl9lcnJfY250LCBVTUFDX1JCVUZfRVJSX0NOVCksCisJCQlVTUFDX1JCVUZfT1ZGTF9DTlRf VjEpLAorCVNUQVRfR0VORVRfTUlTQygicmJ1Zl9lcnJfY250IiwgbWliLnJidWZfZXJyX2NudCwK KwkJCVVNQUNfUkJVRl9FUlJfQ05UX1YxKSwKIAlTVEFUX0dFTkVUX01JU0MoIm1kZl9lcnJfY250 IiwgbWliLm1kZl9lcnJfY250LCBVTUFDX01ERl9FUlJfQ05UKSwKIH07CiAKQEAgLTY1OSw2ICs2 NzYsNDUgQEAgc3RhdGljIHZvaWQgYmNtZ2VuZXRfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwKIAl9CiB9CiAKK3N0YXRpYyB1MzIgYmNtZ2VuZXRfdXBkYXRlX3N0YXRfbWlzYyhz dHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCkKK3sKKwl1MTYgbmV3X29mZnNl dDsKKwl1MzIgdmFsOworCisJc3dpdGNoIChvZmZzZXQpIHsKKwljYXNlIFVNQUNfUkJVRl9PVkZM X0NOVF9WMToKKwkJaWYgKEdFTkVUX0lTX1YyKHByaXYpKQorCQkJbmV3X29mZnNldCA9IFJCVUZf T1ZGTF9DTlRfVjI7CisJCWVsc2UKKwkJCW5ld19vZmZzZXQgPSBSQlVGX09WRkxfQ05UX1YzUExV UzsKKworCQl2YWwgPSBiY21nZW5ldF9yYnVmX3JlYWRsKHByaXYsCW5ld19vZmZzZXQpOworCQkv KiBjbGVhciBpZiBvdmVyZmxvd2VkICovCisJCWlmICh2YWwgPT0gfjApCisJCQliY21nZW5ldF9y YnVmX3dyaXRlbChwcml2LCAwLCBuZXdfb2Zmc2V0KTsKKwkJYnJlYWs7CisJY2FzZSBVTUFDX1JC VUZfRVJSX0NOVF9WMToKKwkJaWYgKEdFTkVUX0lTX1YyKHByaXYpKQorCQkJbmV3X29mZnNldCA9 IFJCVUZfRVJSX0NOVF9WMjsKKwkJZWxzZQorCQkJbmV3X29mZnNldCA9IFJCVUZfRVJSX0NOVF9W M1BMVVM7CisKKwkJdmFsID0gYmNtZ2VuZXRfcmJ1Zl9yZWFkbChwcml2LAluZXdfb2Zmc2V0KTsK KwkJLyogY2xlYXIgaWYgb3ZlcmZsb3dlZCAqLworCQlpZiAodmFsID09IH4wKQorCQkJYmNtZ2Vu ZXRfcmJ1Zl93cml0ZWwocHJpdiwgMCwgbmV3X29mZnNldCk7CisJCWJyZWFrOworCWRlZmF1bHQ6 CisJCXZhbCA9IGJjbWdlbmV0X3VtYWNfcmVhZGwocHJpdiwgb2Zmc2V0KTsKKwkJLyogY2xlYXIg aWYgb3ZlcmZsb3dlZCAqLworCQlpZiAodmFsID09IH4wKQorCQkJYmNtZ2VuZXRfdW1hY193cml0 ZWwocHJpdiwgMCwgb2Zmc2V0KTsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHZhbDsKK30KKwog c3RhdGljIHZvaWQgYmNtZ2VuZXRfdXBkYXRlX21pYl9jb3VudGVycyhzdHJ1Y3QgYmNtZ2VuZXRf cHJpdiAqcHJpdikKIHsKIAlpbnQgaSwgaiA9IDA7CkBAIC02NzMsMTkgKzcyOSwyOCBAQCBzdGF0 aWMgdm9pZCBiY21nZW5ldF91cGRhdGVfbWliX2NvdW50ZXJzKHN0cnVjdCBiY21nZW5ldF9wcml2 ICpwcml2KQogCQlzd2l0Y2ggKHMtPnR5cGUpIHsKIAkJY2FzZSBCQ01HRU5FVF9TVEFUX05FVERF VjoKIAkJCWNvbnRpbnVlOwotCQljYXNlIEJDTUdFTkVUX1NUQVRfTUlCX1JYOgotCQljYXNlIEJD TUdFTkVUX1NUQVRfTUlCX1RYOgogCQljYXNlIEJDTUdFTkVUX1NUQVRfUlVOVDoKLQkJCWlmIChz LT50eXBlICE9IEJDTUdFTkVUX1NUQVRfTUlCX1JYKQotCQkJCW9mZnNldCA9IEJDTUdFTkVUX1NU QVRfT0ZGU0VUOworCQkJb2Zmc2V0ICs9IEJDTUdFTkVUX1NUQVRfT0ZGU0VUOworCQkJLyogZmFs bCB0aHJvdWdoICovCisJCWNhc2UgQkNNR0VORVRfU1RBVF9NSUJfVFg6CisJCQlvZmZzZXQgKz0g QkNNR0VORVRfU1RBVF9PRkZTRVQ7CisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBCQ01H RU5FVF9TVEFUX01JQl9SWDoKIAkJCXZhbCA9IGJjbWdlbmV0X3VtYWNfcmVhZGwocHJpdiwgVU1B Q19NSUJfU1RBUlQgKwogCQkJCQkJCQlqICsgb2Zmc2V0KTsKKwkJCW9mZnNldCA9IDA7CS8qIFJl c2V0IE9mZnNldCAqLwogCQkJYnJlYWs7CiAJCWNhc2UgQkNNR0VORVRfU1RBVF9NSVNDOgotCQkJ dmFsID0gYmNtZ2VuZXRfdW1hY19yZWFkbChwcml2LCBzLT5yZWdfb2Zmc2V0KTsKLQkJCS8qIGNs ZWFyIGlmIG92ZXJmbG93ZWQgKi8KLQkJCWlmICh2YWwgPT0gfjApCi0JCQkJYmNtZ2VuZXRfdW1h Y193cml0ZWwocHJpdiwgMCwgcy0+cmVnX29mZnNldCk7CisJCQlpZiAoR0VORVRfSVNfVjEocHJp dikpIHsKKwkJCQl2YWwgPSBiY21nZW5ldF91bWFjX3JlYWRsKHByaXYsIHMtPnJlZ19vZmZzZXQp OworCQkJCS8qIGNsZWFyIGlmIG92ZXJmbG93ZWQgKi8KKwkJCQlpZiAodmFsID09IH4wKQorCQkJ CQliY21nZW5ldF91bWFjX3dyaXRlbChwcml2LCAwLAorCQkJCQkJCSAgICAgcy0+cmVnX29mZnNl dCk7CisJCQl9IGVsc2UgeworCQkJCXZhbCA9IGJjbWdlbmV0X3VwZGF0ZV9zdGF0X21pc2MocHJp diwKKwkJCQkJCQkJcy0+cmVnX29mZnNldCk7CisJCQl9CiAJCQlicmVhazsKIAkJfQogCkBAIC03 MjUsNiArNzkwLDggQEAgc3RhdGljIHZvaWQgYmNtZ2VuZXRfZ2V0X2V0aHRvb2xfc3RhdHMoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwKIAogLyogc3RhbmRhcmQgZXRodG9vbCBzdXBwb3J0IGZ1bmN0 aW9ucy4gKi8KIHN0YXRpYyBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtZ2VuZXRfZXRodG9vbF9vcHMg PSB7CisJLmJlZ2luCQkJPSBiY21nZW5ldF9iZWdpbiwKKwkuY29tcGxldGUJCT0gYmNtZ2VuZXRf Y29tcGxldGUsCiAJLmdldF9zdHJpbmdzCQk9IGJjbWdlbmV0X2dldF9zdHJpbmdzLAogCS5nZXRf c3NldF9jb3VudAkJPSBiY21nZW5ldF9nZXRfc3NldF9jb3VudCwKIAkuZ2V0X2V0aHRvb2xfc3Rh dHMJPSBiY21nZW5ldF9nZXRfZXRodG9vbF9zdGF0cywKQEAgLTE4MDksNDIgKzE4NzYsNDYgQEAg c3RhdGljIGludCBiY21nZW5ldF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1 ZGdldCkKIC8qIEludGVycnVwdCBib3R0b20gaGFsZiAqLwogc3RhdGljIHZvaWQgYmNtZ2VuZXRf aXJxX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogeworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisJdW5zaWduZWQgaW50IHN0YXR1czsKIAlzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdiA9 IGNvbnRhaW5lcl9vZigKIAkJCXdvcmssIHN0cnVjdCBiY21nZW5ldF9wcml2LCBiY21nZW5ldF9p cnFfd29yayk7CiAKIAluZXRpZl9kYmcocHJpdiwgaW50ciwgcHJpdi0+ZGV2LCAiJXNcbiIsIF9f ZnVuY19fKTsKIAorCXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7CisJc3Rh dHVzID0gcHJpdi0+aXJxMF9zdGF0OworCXByaXYtPmlycTBfc3RhdCA9IDA7CisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCiAJLyogTGluayBVUC9ET1dOIGV2 ZW50ICovCiAJaWYgKChwcml2LT5od19wYXJhbXMtPmZsYWdzICYgR0VORVRfSEFTX01ESU9fSU5U UikgJiYKLQkJKHByaXYtPmlycTBfc3RhdCAmIChVTUFDX0lSUV9MSU5LX1VQfFVNQUNfSVJRX0xJ TktfRE9XTikpKSB7CisJCShzdGF0dXMgJiAoVU1BQ19JUlFfTElOS19VUHxVTUFDX0lSUV9MSU5L X0RPV04pKSkKIAkJcGh5X21hY19pbnRlcnJ1cHQocHJpdi0+cGh5ZGV2LAotCQkJcHJpdi0+aXJx MF9zdGF0ICYgVU1BQ19JUlFfTElOS19VUCk7Ci0JCXByaXYtPmlycTBfc3RhdCAmPSB+KFVNQUNf SVJRX0xJTktfVVB8VU1BQ19JUlFfTElOS19ET1dOKTsKLQl9CisJCQlzdGF0dXMgJiBVTUFDX0lS UV9MSU5LX1VQKTsKIH0KIAogLyogYmNtZ2VuZXRfaXNyMTogaW50ZXJydXB0IGhhbmRsZXIgZm9y IHJpbmcgYnVmZmVyLiAqLwogc3RhdGljIGlycXJldHVybl90IGJjbWdlbmV0X2lzcjEoaW50IGly cSwgdm9pZCAqZGV2X2lkKQogewogCXN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2ID0gZGV2X2lk OwotCXVuc2lnbmVkIGludCBpbmRleDsKKwl1bnNpZ25lZCBpbnQgaW5kZXgsIHN0YXR1czsKIAot CS8qIFNhdmUgaXJxIHN0YXR1cyBmb3IgYm90dG9tLWhhbGYgcHJvY2Vzc2luZy4gKi8KLQlwcml2 LT5pcnExX3N0YXQgPQotCQliY21nZW5ldF9pbnRybDJfMV9yZWFkbChwcml2LCBJTlRSTDJfQ1BV X1NUQVQpICYKKwkvKiBSZWFkIGlycSBzdGF0dXMgKi8KKwlzdGF0dXMgPSBiY21nZW5ldF9pbnRy bDJfMV9yZWFkbChwcml2LCBJTlRSTDJfQ1BVX1NUQVQpICYKIAkJfnByaXYtPmludDFfbWFzazsK IAkvKiBjbGVhciBpbmVycnVwdHMqLwotCWJjbWdlbmV0X2ludHJsMl8xX3dyaXRlbChwcml2LCBw cml2LT5pcnExX3N0YXQsIElOVFJMMl9DUFVfQ0xFQVIpOworCWJjbWdlbmV0X2ludHJsMl8xX3dy aXRlbChwcml2LCBzdGF0dXMsIElOVFJMMl9DUFVfQ0xFQVIpOwogCiAJbmV0aWZfZGJnKHByaXYs IGludHIsIHByaXYtPmRldiwKLQkJIiVzOiBJUlE9MHgleFxuIiwgX19mdW5jX18sIHByaXYtPmly cTFfc3RhdCk7CisJCSIlczogSVJRPTB4JXhcbiIsIF9fZnVuY19fLCBzdGF0dXMpOwogCS8qIENo ZWNrIHRoZSBNQkRPTkUgaW50ZXJydXB0cy4KIAkgKiBwYWNrZXQgaXMgZG9uZSwgcmVjbGFpbSBk ZXNjcmlwdG9ycwogCSAqLwotCWlmIChwcml2LT5pcnExX3N0YXQgJiAweDAwMDBmZmZmKSB7CisJ aWYgKHN0YXR1cyAmIDB4MDAwMGZmZmYpIHsKIAkJaW5kZXggPSAwOwogCQlmb3IgKGluZGV4ID0g MDsgaW5kZXggPCAxNjsgaW5kZXgrKykgewotCQkJaWYgKHByaXYtPmlycTFfc3RhdCAmICgxIDw8 IGluZGV4KSkKKwkJCWlmIChzdGF0dXMgJiAoMSA8PCBpbmRleCkpCiAJCQkJYmNtZ2VuZXRfdHhf cmVjbGFpbShwcml2LT5kZXYsCiAJCQkJCQkmcHJpdi0+dHhfcmluZ3NbaW5kZXhdKTsKIAkJfQpA QCAtMTg1NiwxOCArMTkyNywxOSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYmNtZ2VuZXRfaXNyMShp bnQgaXJxLCB2b2lkICpkZXZfaWQpCiBzdGF0aWMgaXJxcmV0dXJuX3QgYmNtZ2VuZXRfaXNyMChp bnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYgPSBk ZXZfaWQ7CisJdW5zaWduZWQgaW50IHN0YXR1czsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0J LyogU2F2ZSBpcnEgc3RhdHVzIGZvciBib3R0b20taGFsZiBwcm9jZXNzaW5nLiAqLwotCXByaXYt PmlycTBfc3RhdCA9Ci0JCWJjbWdlbmV0X2ludHJsMl8wX3JlYWRsKHByaXYsIElOVFJMMl9DUFVf U1RBVCkgJgorCS8qIFJlYWQgaXJxIHN0YXR1cyAqLworCXN0YXR1cyA9IGJjbWdlbmV0X2ludHJs Ml8wX3JlYWRsKHByaXYsIElOVFJMMl9DUFVfU1RBVCkgJgogCQl+YmNtZ2VuZXRfaW50cmwyXzBf cmVhZGwocHJpdiwgSU5UUkwyX0NQVV9NQVNLX1NUQVRVUyk7CiAJLyogY2xlYXIgaW5lcnJ1cHRz Ki8KLQliY21nZW5ldF9pbnRybDJfMF93cml0ZWwocHJpdiwgcHJpdi0+aXJxMF9zdGF0LCBJTlRS TDJfQ1BVX0NMRUFSKTsKKwliY21nZW5ldF9pbnRybDJfMF93cml0ZWwocHJpdiwgc3RhdHVzLCBJ TlRSTDJfQ1BVX0NMRUFSKTsKIAogCW5ldGlmX2RiZyhwcml2LCBpbnRyLCBwcml2LT5kZXYsCi0J CSJJUlE9MHgleFxuIiwgcHJpdi0+aXJxMF9zdGF0KTsKKwkJIklSUT0weCV4XG4iLCBzdGF0dXMp OwogCi0JaWYgKHByaXYtPmlycTBfc3RhdCAmIChVTUFDX0lSUV9SWERNQV9CRE9ORSB8IFVNQUNf SVJRX1JYRE1BX1BET05FKSkgeworCWlmIChzdGF0dXMgJiAoVU1BQ19JUlFfUlhETUFfQkRPTkUg fCBVTUFDX0lSUV9SWERNQV9QRE9ORSkpIHsKIAkJLyogV2UgdXNlIE5BUEkoc29mdHdhcmUgaW50 ZXJydXB0IHRocm90dGxpbmcsIGlmCiAJCSAqIFJ4IERlc2NyaXB0b3IgdGhyb3R0bGluZyBpcyBu b3QgdXNlZC4KIAkJICogRGlzYWJsZSBpbnRlcnJ1cHQsIHdpbGwgYmUgZW5hYmxlZCBpbiB0aGUg cG9sbCBtZXRob2QuCkBAIC0xODc4LDI4ICsxOTUwLDI3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBi Y21nZW5ldF9pc3IwKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAkJCV9fbmFwaV9zY2hlZHVsZSgm cHJpdi0+bmFwaSk7CiAJCX0KIAl9Ci0JaWYgKHByaXYtPmlycTBfc3RhdCAmCisJaWYgKHN0YXR1 cyAmCiAJCQkoVU1BQ19JUlFfVFhETUFfQkRPTkUgfCBVTUFDX0lSUV9UWERNQV9QRE9ORSkpIHsK IAkJLyogVHggcmVjbGFpbSAqLwogCQliY21nZW5ldF90eF9yZWNsYWltKHByaXYtPmRldiwgJnBy aXYtPnR4X3JpbmdzW0RFU0NfSU5ERVhdKTsKIAl9Ci0JaWYgKHByaXYtPmlycTBfc3RhdCAmIChV TUFDX0lSUV9QSFlfREVUX1IgfAotCQkJCVVNQUNfSVJRX1BIWV9ERVRfRiB8Ci0JCQkJVU1BQ19J UlFfTElOS19VUCB8Ci0JCQkJVU1BQ19JUlFfTElOS19ET1dOIHwKLQkJCQlVTUFDX0lSUV9IRkJf U00gfAotCQkJCVVNQUNfSVJRX0hGQl9NTSB8Ci0JCQkJVU1BQ19JUlFfTVBEX1IpKSB7Ci0JCS8q IGFsbCBvdGhlciBpbnRlcmVzdGVkIGludGVycnVwdHMgaGFuZGxlZCBpbiBib3R0b20gaGFsZiAq LwotCQlzY2hlZHVsZV93b3JrKCZwcml2LT5iY21nZW5ldF9pcnFfd29yayk7Ci0JfQotCiAJaWYg KChwcml2LT5od19wYXJhbXMtPmZsYWdzICYgR0VORVRfSEFTX01ESU9fSU5UUikgJiYKLQkJcHJp di0+aXJxMF9zdGF0ICYgKFVNQUNfSVJRX01ESU9fRE9ORSB8IFVNQUNfSVJRX01ESU9fRVJST1Ip KSB7Ci0JCXByaXYtPmlycTBfc3RhdCAmPSB+KFVNQUNfSVJRX01ESU9fRE9ORSB8IFVNQUNfSVJR X01ESU9fRVJST1IpOworCQlzdGF0dXMgJiAoVU1BQ19JUlFfTURJT19ET05FIHwgVU1BQ19JUlFf TURJT19FUlJPUikpIHsKIAkJd2FrZV91cCgmcHJpdi0+d3EpOwogCX0KIAorCS8qIGFsbCBvdGhl ciBpbnRlcmVzdGVkIGludGVycnVwdHMgaGFuZGxlZCBpbiBib3R0b20gaGFsZiAqLworCXN0YXR1 cyAmPSBVTUFDX0lSUV9MSU5LX1VQIHwgVU1BQ19JUlFfTElOS19ET1dOOworCWlmIChzdGF0dXMp IHsKKwkJLyogU2F2ZSBpcnEgc3RhdHVzIGZvciBib3R0b20taGFsZiBwcm9jZXNzaW5nLiAqLwor CQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCQlwcml2LT5pcnEwX3N0 YXQgfD0gc3RhdHVzOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2NrLCBmbGFn cyk7CisKKwkJc2NoZWR1bGVfd29yaygmcHJpdi0+YmNtZ2VuZXRfaXJxX3dvcmspOworCX0KKwog CXJldHVybiBJUlFfSEFORExFRDsKIH0KIApAQCAtMjQ0Nyw2ICsyNTE4LDcgQEAgc3RhdGljIGlu dCBiY21nZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWNvbnN0IHZv aWQgKm1hY2FkZHI7CiAJc3RydWN0IHJlc291cmNlICpyOwogCWludCBlcnIgPSAtRUlPOworCWNv bnN0IGNoYXIgKnBoeV9tb2RlX3N0cjsKIAogCS8qIFVwIHRvIEdFTkVUX01BWF9NUV9DTlQgKyAx IFRYIHF1ZXVlcyBhbmQgYSBzaW5nbGUgUlggcXVldWUgKi8KIAlkZXYgPSBhbGxvY19ldGhlcmRl dl9tcXMoc2l6ZW9mKCpwcml2KSwgR0VORVRfTUFYX01RX0NOVCArIDEsIDEpOwpAQCAtMjQ4Miw2 ICsyNTU0LDggQEAgc3RhdGljIGludCBiY21nZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQogCQlnb3RvIGVycjsKIAl9CiAKKwlzcGluX2xvY2tfaW5pdCgmcHJpdi0+bG9j ayk7CisKIAlTRVRfTkVUREVWX0RFVihkZXYsICZwZGV2LT5kZXYpOwogCWRldl9zZXRfZHJ2ZGF0 YSgmcGRldi0+ZGV2LCBkZXYpOwogCWV0aGVyX2FkZHJfY29weShkZXYtPmRldl9hZGRyLCBtYWNh ZGRyKTsKQEAgLTI1MjYsNiArMjYwMCwxMyBAQCBzdGF0aWMgaW50IGJjbWdlbmV0X3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKCFJU19FUlIocHJpdi0+Y2xrKSkKIAkJ Y2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtPmNsayk7CiAKKwkvKiBJZiB0aGlzIGlzIGFuIGludGVy bmFsIEdQSFksIHBvd2VyIGl0IG9uIG5vdywgYmVmb3JlIFVuaU1BQyBpcworCSAqIGJyb3VnaHQg b3V0IG9mIHJlc2V0IGFzIGFic29sdXRlbHkgbm8gVW5pTUFDIGFjdGl2aXR5IGlzIGFsbG93ZWQK KwkgKi8KKwlpZiAoZG4gJiYgIW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRuLCAicGh5LW1vZGUi LCAmcGh5X21vZGVfc3RyKSAmJgorCSAgICAhc3RyY2FzZWNtcChwaHlfbW9kZV9zdHIsICJpbnRl cm5hbCIpKQorCQliY21nZW5ldF9wb3dlcl91cChwcml2LCBHRU5FVF9QT1dFUl9QQVNTSVZFKTsK KwogCWVyciA9IHJlc2V0X3VtYWMocHJpdik7CiAJaWYgKGVycikKIAkJZ290byBlcnJfY2xrX2Rp c2FibGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9i Y21nZW5ldC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQu aAppbmRleCBlMjNjOTkzYjEzNjIuLjIzMTdlMzcyNTg1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaAorKysgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq IENvcHlyaWdodCAoYykgMjAxNCBCcm9hZGNvbSBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChj KSAyMDE0LTIwMTcgQnJvYWRjb20KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAg LTIwNiw3ICsyMDYsOSBAQCBzdHJ1Y3QgYmNtZ2VuZXRfbWliX2NvdW50ZXJzIHsKICNkZWZpbmUg IE1ESU9fUkVHX1NISUZUCQkJMTYKICNkZWZpbmUgIE1ESU9fUkVHX01BU0sJCQkweDFGCiAKLSNk ZWZpbmUgVU1BQ19SQlVGX09WRkxfQ05UCQkweDYxQworI2RlZmluZSBVTUFDX1JCVUZfT1ZGTF9D TlRfVjEJCTB4NjFDCisjZGVmaW5lIFJCVUZfT1ZGTF9DTlRfVjIJCTB4ODAKKyNkZWZpbmUgUkJV Rl9PVkZMX0NOVF9WM1BMVVMJCTB4OTQKIAogI2RlZmluZSBVTUFDX01QRF9DVFJMCQkJMHg2MjAK ICNkZWZpbmUgIE1QRF9FTgkJCQkoMSA8PCAwKQpAQCAtMjE2LDcgKzIxOCw5IEBAIHN0cnVjdCBi Y21nZW5ldF9taWJfY291bnRlcnMgewogCiAjZGVmaW5lIFVNQUNfTVBEX1BXX01TCQkJMHg2MjQK ICNkZWZpbmUgVU1BQ19NUERfUFdfTFMJCQkweDYyOAotI2RlZmluZSBVTUFDX1JCVUZfRVJSX0NO VAkJMHg2MzQKKyNkZWZpbmUgVU1BQ19SQlVGX0VSUl9DTlRfVjEJCTB4NjM0CisjZGVmaW5lIFJC VUZfRVJSX0NOVF9WMgkJCTB4ODQKKyNkZWZpbmUgUkJVRl9FUlJfQ05UX1YzUExVUwkJMHg5OAog I2RlZmluZSBVTUFDX01ERl9FUlJfQ05UCQkweDYzOAogI2RlZmluZSBVTUFDX01ERl9DVFJMCQkJ MHg2NTAKICNkZWZpbmUgVU1BQ19NREZfQUREUgkJCTB4NjU0CkBAIC01NjcsOCArNTcxLDEwIEBA IHN0cnVjdCBiY21nZW5ldF9wcml2IHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgYmNtZ2VuZXRfaXJx X3dvcms7CiAJaW50IGlycTA7CiAJaW50IGlycTE7CisKKwkvKiBzaGFyZWQgc3RhdHVzICovCisJ c3BpbmxvY2tfdCBsb2NrOwogCXVuc2lnbmVkIGludCBpcnEwX3N0YXQ7Ci0JdW5zaWduZWQgaW50 IGlycTFfc3RhdDsKIAogCS8qIEhXIGRlc2NyaXB0b3JzL2NoZWNrc3VtIHZhcmlhYmxlcyAqLwog CWJvb2wgZGVzY182NGJfZW47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9j YWRlL2JuYS9ibmFkX2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5h L2JuYWRfZGVidWdmcy5jCmluZGV4IDdkNmFhOGM4N2RmOC4uMTA5YTZkODQ4ZjNhIDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2RlYnVnZnMuYworKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2RlYnVnZnMuYwpAQCAtMzMx LDcgKzMzMSw3IEBAIGJuYWRfZGVidWdmc193cml0ZV9yZWdyZChzdHJ1Y3QgZmlsZSAqZmlsZSwg Y29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwKIAl9CiAKIAlyYyA9IHNzY2FuZihrZXJuX2J1ZiwgIiV4 OiV4IiwgJmFkZHIsICZsZW4pOwotCWlmIChyYyA8IDIpIHsKKwlpZiAocmMgPCAyIHx8IGxlbiA+ IFVJTlRfTUFYID4+IDIpIHsKIAkJcHJfd2FybigiYm5hICVzOiBGYWlsZWQgdG8gcmVhZCB1c2Vy IGJ1ZmZlclxuIiwKIAkJCXBjaV9uYW1lKGJuYWQtPnBjaWRldikpOwogCQlrZnJlZShrZXJuX2J1 Zik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90b3NoaWJhL3RjMzU4MTUuYyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L3Rvc2hpYmEvdGMzNTgxNS5jCmluZGV4IGZlZjU1NzNkYmZj YS4uOTcwZDcxNjk4OWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90b3NoaWJh L3RjMzU4MTUuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90b3NoaWJhL3RjMzU4MTUuYwpA QCAtMTA0OCw4ICsxMDQ4LDggQEAgdGMzNTgxNV9mcmVlX3F1ZXVlcyhzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2KQogCQkJQlVHX09OKGxwLT50eF9za2JzW2ldLnNrYiAhPSBza2IpOwogI2VuZGlmCiAJ CQlpZiAoc2tiKSB7Ci0JCQkJZGV2X2tmcmVlX3NrYihza2IpOwogCQkJCXBjaV91bm1hcF9zaW5n bGUobHAtPnBjaV9kZXYsIGxwLT50eF9za2JzW2ldLnNrYl9kbWEsIHNrYi0+bGVuLCBQQ0lfRE1B X1RPREVWSUNFKTsKKwkJCQlkZXZfa2ZyZWVfc2tiKHNrYik7CiAJCQkJbHAtPnR4X3NrYnNbaV0u c2tiID0gTlVMTDsKIAkJCQlscC0+dHhfc2tic1tpXS5za2JfZG1hID0gMDsKIAkJCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwppbmRl eCA4NDMyNTIxNDA4YTcuLjdiYTFiZmVhMjg2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWFj dmxhbi5jCisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwpAQCAtOTQyLDYgKzk0Miw3IEBAIHN0 YXRpYyBpbnQgbWFjdmxhbl9wb3J0X2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogc3Rh dGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsK IAlzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gbWFjdmxhbl9wb3J0X2dldF9ydG5sKGRldik7 CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAogCWRldi0+cHJpdl9mbGFncyAmPSB+SUZGX01BQ1ZM QU5fUE9SVDsKIAluZXRkZXZfcnhfaGFuZGxlcl91bnJlZ2lzdGVyKGRldik7CkBAIC05NTAsNyAr OTUxLDE1IEBAIHN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpCiAJICogYnV0IHdlIG5lZWQgdG8gY2FuY2VsIGl0IGFuZCBwdXJnZSBsZWZ0IHNr YnMgaWYgYW55LgogCSAqLwogCWNhbmNlbF93b3JrX3N5bmMoJnBvcnQtPmJjX3dvcmspOwotCV9f c2tiX3F1ZXVlX3B1cmdlKCZwb3J0LT5iY19xdWV1ZSk7CisKKwl3aGlsZSAoKHNrYiA9IF9fc2ti X2RlcXVldWUoJnBvcnQtPmJjX3F1ZXVlKSkpIHsKKwkJY29uc3Qgc3RydWN0IG1hY3ZsYW5fZGV2 ICpzcmMgPSBNQUNWTEFOX1NLQl9DQihza2IpLT5zcmM7CisKKwkJaWYgKHNyYykKKwkJCWRldl9w dXQoc3JjLT5kZXYpOworCisJCWtmcmVlX3NrYihza2IpOworCX0KIAogCWtmcmVlX3JjdShwb3J0 LCByY3UpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeS5jIGIvZHJpdmVycy9u ZXQvcGh5L3BoeS5jCmluZGV4IGYyYmQ0ODc4OGM5OC4uMmJjZjI5MTMwNDVmIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC9waHkvcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeS5jCkBAIC00 NzQsNyArNDc0LDcgQEAgdm9pZCBwaHlfc3RvcF9tYWNoaW5lKHN0cnVjdCBwaHlfZGV2aWNlICpw aHlkZXYpCiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZwaHlkZXYtPnN0YXRlX3F1ZXVlKTsK IAogCW11dGV4X2xvY2soJnBoeWRldi0+bG9jayk7Ci0JaWYgKHBoeWRldi0+c3RhdGUgPiBQSFlf VVApCisJaWYgKHBoeWRldi0+c3RhdGUgPiBQSFlfVVAgJiYgcGh5ZGV2LT5zdGF0ZSAhPSBQSFlf SEFMVEVEKQogCQlwaHlkZXYtPnN0YXRlID0gUEhZX1VQOwogCW11dGV4X3VubG9jaygmcGh5ZGV2 LT5sb2NrKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9k cml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDVhNTAxYmNhMzQ0Zi4uNzBhNDk1NzMz ZDgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCisrKyBiL2RyaXZl cnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTEzMzksNyArMTMzOSw3IEBAIHN0YXRpYyBzdHJ1 Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyW10gPSB7CiAJLnBoeV9pZAkJPSAweGZmZmZmZmZm LAogCS5waHlfaWRfbWFzawk9IDB4ZmZmZmZmZmYsCiAJLm5hbWUJCT0gIkdlbmVyaWMgUEhZIiwK LQkuc29mdF9yZXNldAk9IGdlbnBoeV9zb2Z0X3Jlc2V0LAorCS5zb2Z0X3Jlc2V0CT0gZ2VucGh5 X25vX3NvZnRfcmVzZXQsCiAJLmNvbmZpZ19pbml0CT0gZ2VucGh5X2NvbmZpZ19pbml0LAogCS5m ZWF0dXJlcwk9IFBIWV9HQklUX0ZFQVRVUkVTIHwgU1VQUE9SVEVEX01JSSB8CiAJCQkgIFNVUFBP UlRFRF9BVUkgfCBTVVBQT1JURURfRklCUkUgfApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVh bS90ZWFtLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW0uYwppbmRleCA1M2RkNDFiNDY4ZDUuLmI3 ODUzMmU4YzU2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtLmMKKysrIGIvZHJp dmVycy9uZXQvdGVhbS90ZWFtLmMKQEAgLTIzMTksOCArMjMxOSwxMCBAQCBzdGF0aWMgaW50IHRl YW1fbmxfc2VuZF9vcHRpb25zX2dldChzdHJ1Y3QgdGVhbSAqdGVhbSwgdTMyIHBvcnRpZCwgdTMy IHNlcSwKIAogCWhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsICZ0ZWFtX25sX2Zh bWlseSwgZmxhZ3MgfCBOTE1fRl9NVUxUSSwKIAkJCSAgVEVBTV9DTURfT1BUSU9OU19HRVQpOwot CWlmICghaGRyKQorCWlmICghaGRyKSB7CisJCW5sbXNnX2ZyZWUoc2tiKTsKIAkJcmV0dXJuIC1F TVNHU0laRTsKKwl9CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBURUFNX0FUVFJfVEVBTV9JRklO REVYLCB0ZWFtLT5kZXYtPmlmaW5kZXgpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKQEAgLTI1 ODcsOCArMjU4OSwxMCBAQCBzdGF0aWMgaW50IHRlYW1fbmxfc2VuZF9wb3J0X2xpc3RfZ2V0KHN0 cnVjdCB0ZWFtICp0ZWFtLCB1MzIgcG9ydGlkLCB1MzIgc2VxLAogCiAJaGRyID0gZ2VubG1zZ19w dXQoc2tiLCBwb3J0aWQsIHNlcSwgJnRlYW1fbmxfZmFtaWx5LCBmbGFncyB8IE5MTV9GX01VTFRJ LAogCQkJICBURUFNX0NNRF9QT1JUX0xJU1RfR0VUKTsKLQlpZiAoIWhkcikKKwlpZiAoIWhkcikg eworCQlubG1zZ19mcmVlKHNrYik7CiAJCXJldHVybiAtRU1TR1NJWkU7CisJfQogCiAJaWYgKG5s YV9wdXRfdTMyKHNrYiwgVEVBTV9BVFRSX1RFQU1fSUZJTkRFWCwgdGVhbS0+ZGV2LT5pZmluZGV4 KSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2Iv Y3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCmluZGV4IGZlNDhm NGM1MTM3My4uYmFlNjFjMjRiOTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvY3g4MjMx MF9ldGguYworKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYwpAQCAtMjc1LDEyICsy NzUsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVz Ym5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogewogCWludCBsZW4gPSBza2ItPmxlbjsK IAotCWlmIChza2JfaGVhZHJvb20oc2tiKSA8IDIpIHsKLQkJc3RydWN0IHNrX2J1ZmYgKnNrYjIg PSBza2JfY29weV9leHBhbmQoc2tiLCAyLCAwLCBmbGFncyk7CisJaWYgKHNrYl9jb3dfaGVhZChz a2IsIDIpKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JCXNrYiA9IHNrYjI7Ci0JCWlm ICghc2tiKQotCQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBOVUxMOwogCX0KIAlza2JfcHVzaChz a2IsIDIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYyBiL2RyaXZl cnMvbmV0L3VzYi9zbXNjNzV4eC5jCmluZGV4IGQ5ZTc4OTIyNjJmYS4uMmM1MjZjYTI5Y2RlIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYworKysgYi9kcml2ZXJzL25ldC91 c2Ivc21zYzc1eHguYwpAQCAtMjE5OCwxMyArMjE5OCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVm ZiAqc21zYzc1eHhfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LAogewogCXUzMiB0eF9jbWRf YSwgdHhfY21kX2I7CiAKLQlpZiAoc2tiX2hlYWRyb29tKHNrYikgPCBTTVNDNzVYWF9UWF9PVkVS SEVBRCkgewotCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiMiA9Ci0JCQlza2JfY29weV9leHBhbmQoc2ti LCBTTVNDNzVYWF9UWF9PVkVSSEVBRCwgMCwgZmxhZ3MpOworCWlmIChza2JfY293X2hlYWQoc2ti LCBTTVNDNzVYWF9UWF9PVkVSSEVBRCkpIHsKIAkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKLQkJ c2tiID0gc2tiMjsKLQkJaWYgKCFza2IpCi0JCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIE5VTEw7 CiAJfQogCiAJdHhfY21kX2EgPSAodTMyKShza2ItPmxlbiAmIFRYX0NNRF9BX0xFTikgfCBUWF9D TURfQV9GQ1M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2Ivc3I5NzAwLmMgYi9kcml2ZXJz L25ldC91c2Ivc3I5NzAwLmMKaW5kZXggOTliNjlhZjE0Mjc0Li43MDI2OWFkYmE5ZGIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYworKysgYi9kcml2ZXJzL25ldC91c2Ivc3I5 NzAwLmMKQEAgLTQ1NiwxNCArNDU2LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzcjk3MDBf dHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJbGVu ID0gc2tiLT5sZW47CiAKLQlpZiAoc2tiX2hlYWRyb29tKHNrYikgPCBTUl9UWF9PVkVSSEVBRCkg ewotCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiMjsKLQotCQlza2IyID0gc2tiX2NvcHlfZXhwYW5kKHNr YiwgU1JfVFhfT1ZFUkhFQUQsIDAsIGZsYWdzKTsKKwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgU1Jf VFhfT1ZFUkhFQUQpKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JCXNrYiA9IHNrYjI7 Ci0JCWlmICghc2tiKQotCQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBOVUxMOwogCX0KIAogCV9f c2tiX3B1c2goc2tiLCBTUl9UWF9PVkVSSEVBRCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aW1heC9pMjQwMG0vdXNiLmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLmMKaW5kZXgg Y2QxNWE5M2Q5MDg0Li5iOTQ5ZWQ4NmRiNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4 L2kyNDAwbS91c2IuYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLmMKQEAgLTQ2 Nyw2ICs0NjcsOSBAQCBpbnQgaTI0MDBtdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZh Y2UsCiAJc3RydWN0IGkyNDAwbXUgKmkyNDAwbXU7CiAJc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9k ZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGlmYWNlKTsKIAorCWlmIChpZmFjZS0+Y3VyX2FsdHNl dHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyA8IDQpCisJCXJldHVybiAtRU5PREVWOworCiAJaWYg KHVzYl9kZXYtPnNwZWVkICE9IFVTQl9TUEVFRF9ISUdIKQogCQlkZXZfZXJyKGRldiwgImRldmlj ZSBub3QgY29ubmVjdGVkIGFzIGhpZ2ggc3BlZWRcbiIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC93aXJlbGVzcy9pd2x3aWZpL2R2bS9jYWxpYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv aXdsd2lmaS9kdm0vY2FsaWIuYwppbmRleCAyMGU2YWE5MTA3MDAuLmMxNDgwODU3NDJhMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9kdm0vY2FsaWIuYworKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2R2bS9jYWxpYi5jCkBAIC05MDEsNyArOTAxLDcg QEAgc3RhdGljIHZvaWQgaXdsYWduX2dhaW5fY29tcHV0YXRpb24oc3RydWN0IGl3bF9wcml2ICpw cml2LAogCQkvKiBib3VuZCBnYWluIGJ5IDIgYml0cyB2YWx1ZSBtYXgsIDNyZCBiaXQgaXMgc2ln biAqLwogCQlkYXRhLT5kZWx0YV9nYWluX2NvZGVbaV0gPQogCQkJbWluKGFicyhkZWx0YV9nKSwK LQkJCShsb25nKSBDSEFJTl9OT0lTRV9NQVhfREVMVEFfR0FJTl9DT0RFKTsKKwkJCShzMzIpIENI QUlOX05PSVNFX01BWF9ERUxUQV9HQUlOX0NPREUpOwogCiAJCWlmIChkZWx0YV9nIDwgMCkKIAkJ CS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9zcmMuYyBiL2RyaXZlcnMvc2Nz aS9hYWNyYWlkL3NyYy5jCmluZGV4IDcwMGQxZTNjZTZiMi4uNmY4ZjE4ZjE3Yzg3IDEwMDY0NAot LS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9zcmMuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFp ZC9zcmMuYwpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyBpbnQgYWFjX3NyY19jaGVja19oZWFs dGgoc3RydWN0IGFhY19kZXYgKmRldikKIAlyZXR1cm4gLTE7CiAKIGVycl9ibGluazoKLQlyZXR1 cm4gKHN0YXR1cyA+IDE2KSAmIDB4RkY7CisJcmV0dXJuIChzdGF0dXMgPj4gMTYpICYgMHhGRjsK IH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGliaXNjc2kuYyBiL2RyaXZlcnMv c2NzaS9saWJpc2NzaS5jCmluZGV4IGNkNGQ0YjFmMzcxZC4uODc3ZmQ5Mzc2NmNlIDEwMDY0NAot LS0gYS9kcml2ZXJzL3Njc2kvbGliaXNjc2kuYworKysgYi9kcml2ZXJzL3Njc2kvbGliaXNjc2ku YwpAQCAtNTYwLDggKzU2MCwxMiBAQCBzdGF0aWMgdm9pZCBpc2NzaV9jb21wbGV0ZV90YXNrKHN0 cnVjdCBpc2NzaV90YXNrICp0YXNrLCBpbnQgc3RhdGUpCiAJV0FSTl9PTl9PTkNFKHRhc2stPnN0 YXRlID09IElTQ1NJX1RBU0tfRlJFRSk7CiAJdGFzay0+c3RhdGUgPSBzdGF0ZTsKIAotCWlmICgh bGlzdF9lbXB0eSgmdGFzay0+cnVubmluZykpCisJc3Bpbl9sb2NrX2JoKCZjb25uLT50YXNrcXVl dWVsb2NrKTsKKwlpZiAoIWxpc3RfZW1wdHkoJnRhc2stPnJ1bm5pbmcpKSB7CisJCXByX2RlYnVn X29uY2UoIiVzIHdoaWxlIHRhc2sgb24gbGlzdCIsIF9fZnVuY19fKTsKIAkJbGlzdF9kZWxfaW5p dCgmdGFzay0+cnVubmluZyk7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZjb25uLT50YXNrcXVldWVs b2NrKTsKIAogCWlmIChjb25uLT50YXNrID09IHRhc2spCiAJCWNvbm4tPnRhc2sgPSBOVUxMOwpA QCAtNzgzLDcgKzc4Nyw5IEBAIF9faXNjc2lfY29ubl9zZW5kX3BkdShzdHJ1Y3QgaXNjc2lfY29u biAqY29ubiwgc3RydWN0IGlzY3NpX2hkciAqaGRyLAogCQlpZiAoc2Vzc2lvbi0+dHQtPnhtaXRf dGFzayh0YXNrKSkKIAkJCWdvdG8gZnJlZV90YXNrOwogCX0gZWxzZSB7CisJCXNwaW5fbG9ja19i aCgmY29ubi0+dGFza3F1ZXVlbG9jayk7CiAJCWxpc3RfYWRkX3RhaWwoJnRhc2stPnJ1bm5pbmcs ICZjb25uLT5tZ210cXVldWUpOworCQlzcGluX3VubG9ja19iaCgmY29ubi0+dGFza3F1ZXVlbG9j ayk7CiAJCWlzY3NpX2Nvbm5fcXVldWVfd29yayhjb25uKTsKIAl9CiAKQEAgLTE0NzQsOCArMTQ4 MCwxMCBAQCB2b2lkIGlzY3NpX3JlcXVldWVfdGFzayhzdHJ1Y3QgaXNjc2lfdGFzayAqdGFzaykK IAkgKiB0aGlzIG1heSBiZSBvbiB0aGUgcmVxdWV1ZSBsaXN0IGFscmVhZHkgaWYgdGhlIHhtaXRf dGFzayBjYWxsb3V0CiAJICogaXMgaGFuZGxpbmcgdGhlIHIydHMgd2hpbGUgd2UgYXJlIGFkZGlu ZyBuZXcgb25lcwogCSAqLworCXNwaW5fbG9ja19iaCgmY29ubi0+dGFza3F1ZXVlbG9jayk7CiAJ aWYgKGxpc3RfZW1wdHkoJnRhc2stPnJ1bm5pbmcpKQogCQlsaXN0X2FkZF90YWlsKCZ0YXNrLT5y dW5uaW5nLCAmY29ubi0+cmVxdWV1ZSk7CisJc3Bpbl91bmxvY2tfYmgoJmNvbm4tPnRhc2txdWV1 ZWxvY2spOwogCWlzY3NpX2Nvbm5fcXVldWVfd29yayhjb25uKTsKIH0KIEVYUE9SVF9TWU1CT0xf R1BMKGlzY3NpX3JlcXVldWVfdGFzayk7CkBAIC0xNTEyLDIyICsxNTIwLDI2IEBAIHN0YXRpYyBp bnQgaXNjc2lfZGF0YV94bWl0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogCSAqIG9ubHkgaGF2 ZSBvbmUgbm9wLW91dCBhcyBhIHBpbmcgZnJvbSB1cyBhbmQgdGFyZ2V0cyBzaG91bGQgbm90CiAJ ICogb3ZlcmZsb3cgdXMgd2l0aCBub3AtaW5zCiAJICovCisJc3Bpbl9sb2NrX2JoKCZjb25uLT50 YXNrcXVldWVsb2NrKTsKIGNoZWNrX21nbXQ6CiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZjb25uLT5t Z210cXVldWUpKSB7CiAJCWNvbm4tPnRhc2sgPSBsaXN0X2VudHJ5KGNvbm4tPm1nbXRxdWV1ZS5u ZXh0LAogCQkJCQkgc3RydWN0IGlzY3NpX3Rhc2ssIHJ1bm5pbmcpOwogCQlsaXN0X2RlbF9pbml0 KCZjb25uLT50YXNrLT5ydW5uaW5nKTsKKwkJc3Bpbl91bmxvY2tfYmgoJmNvbm4tPnRhc2txdWV1 ZWxvY2spOwogCQlpZiAoaXNjc2lfcHJlcF9tZ210X3Rhc2soY29ubiwgY29ubi0+dGFzaykpIHsK IAkJCS8qIHJlZ3VsYXIgUlggcGF0aCB1c2VzIGJhY2tfbG9jayAqLwogCQkJc3Bpbl9sb2NrX2Jo KCZjb25uLT5zZXNzaW9uLT5iYWNrX2xvY2spOwogCQkJX19pc2NzaV9wdXRfdGFzayhjb25uLT50 YXNrKTsKIAkJCXNwaW5fdW5sb2NrX2JoKCZjb25uLT5zZXNzaW9uLT5iYWNrX2xvY2spOwogCQkJ Y29ubi0+dGFzayA9IE5VTEw7CisJCQlzcGluX2xvY2tfYmgoJmNvbm4tPnRhc2txdWV1ZWxvY2sp OwogCQkJY29udGludWU7CiAJCX0KIAkJcmMgPSBpc2NzaV94bWl0X3Rhc2soY29ubik7CiAJCWlm IChyYykKIAkJCWdvdG8gZG9uZTsKKwkJc3Bpbl9sb2NrX2JoKCZjb25uLT50YXNrcXVldWVsb2Nr KTsKIAl9CiAKIAkvKiBwcm9jZXNzIHBlbmRpbmcgY29tbWFuZCBxdWV1ZSAqLwpAQCAtMTUzNSwx OSArMTU0NywyNCBAQCBzdGF0aWMgaW50IGlzY3NpX2RhdGFfeG1pdChzdHJ1Y3QgaXNjc2lfY29u biAqY29ubikKIAkJY29ubi0+dGFzayA9IGxpc3RfZW50cnkoY29ubi0+Y21kcXVldWUubmV4dCwg c3RydWN0IGlzY3NpX3Rhc2ssCiAJCQkJCXJ1bm5pbmcpOwogCQlsaXN0X2RlbF9pbml0KCZjb25u LT50YXNrLT5ydW5uaW5nKTsKKwkJc3Bpbl91bmxvY2tfYmgoJmNvbm4tPnRhc2txdWV1ZWxvY2sp OwogCQlpZiAoY29ubi0+c2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfTE9HR0lOR19PVVQp IHsKIAkJCWZhaWxfc2NzaV90YXNrKGNvbm4tPnRhc2ssIERJRF9JTU1fUkVUUlkpOworCQkJc3Bp bl9sb2NrX2JoKCZjb25uLT50YXNrcXVldWVsb2NrKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXJj ID0gaXNjc2lfcHJlcF9zY3NpX2NtZF9wZHUoY29ubi0+dGFzayk7CiAJCWlmIChyYykgewogCQkJ aWYgKHJjID09IC1FTk9NRU0gfHwgcmMgPT0gLUVBQ0NFUykgeworCQkJCXNwaW5fbG9ja19iaCgm Y29ubi0+dGFza3F1ZXVlbG9jayk7CiAJCQkJbGlzdF9hZGRfdGFpbCgmY29ubi0+dGFzay0+cnVu bmluZywKIAkJCQkJICAgICAgJmNvbm4tPmNtZHF1ZXVlKTsKIAkJCQljb25uLT50YXNrID0gTlVM TDsKKwkJCQlzcGluX3VubG9ja19iaCgmY29ubi0+dGFza3F1ZXVlbG9jayk7CiAJCQkJZ290byBk b25lOwogCQkJfSBlbHNlCiAJCQkJZmFpbF9zY3NpX3Rhc2soY29ubi0+dGFzaywgRElEX0FCT1JU KTsKKwkJCXNwaW5fbG9ja19iaCgmY29ubi0+dGFza3F1ZXVlbG9jayk7CiAJCQljb250aW51ZTsK IAkJfQogCQlyYyA9IGlzY3NpX3htaXRfdGFzayhjb25uKTsKQEAgLTE1NTgsNiArMTU3NSw3IEBA IHN0YXRpYyBpbnQgaXNjc2lfZGF0YV94bWl0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogCQkg KiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBtZ210IHF1ZXVlIGZvciBub3BzIHRoYXQgbmVlZCB0bwog CQkgKiBiZSBzZW50IHRvIGF2aW9kIHN0YXJ2YXRpb24KIAkJICovCisJCXNwaW5fbG9ja19iaCgm Y29ubi0+dGFza3F1ZXVlbG9jayk7CiAJCWlmICghbGlzdF9lbXB0eSgmY29ubi0+bWdtdHF1ZXVl KSkKIAkJCWdvdG8gY2hlY2tfbWdtdDsKIAl9CkBAIC0xNTc3LDEyICsxNTk1LDE1IEBAIHN0YXRp YyBpbnQgaXNjc2lfZGF0YV94bWl0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogCQljb25uLT50 YXNrID0gdGFzazsKIAkJbGlzdF9kZWxfaW5pdCgmY29ubi0+dGFzay0+cnVubmluZyk7CiAJCWNv bm4tPnRhc2stPnN0YXRlID0gSVNDU0lfVEFTS19SVU5OSU5HOworCQlzcGluX3VubG9ja19iaCgm Y29ubi0+dGFza3F1ZXVlbG9jayk7CiAJCXJjID0gaXNjc2lfeG1pdF90YXNrKGNvbm4pOwogCQlp ZiAocmMpCiAJCQlnb3RvIGRvbmU7CisJCXNwaW5fbG9ja19iaCgmY29ubi0+dGFza3F1ZXVlbG9j ayk7CiAJCWlmICghbGlzdF9lbXB0eSgmY29ubi0+bWdtdHF1ZXVlKSkKIAkJCWdvdG8gY2hlY2tf bWdtdDsKIAl9CisJc3Bpbl91bmxvY2tfYmgoJmNvbm4tPnRhc2txdWV1ZWxvY2spOwogCXNwaW5f dW5sb2NrX2JoKCZjb25uLT5zZXNzaW9uLT5mcndkX2xvY2spOwogCXJldHVybiAtRU5PREFUQTsK IApAQCAtMTczOCw3ICsxNzU5LDkgQEAgaW50IGlzY3NpX3F1ZXVlY29tbWFuZChzdHJ1Y3QgU2Nz aV9Ib3N0ICpob3N0LCBzdHJ1Y3Qgc2NzaV9jbW5kICpzYykKIAkJCWdvdG8gcHJlcGRfcmVqZWN0 OwogCQl9CiAJfSBlbHNlIHsKKwkJc3Bpbl9sb2NrX2JoKCZjb25uLT50YXNrcXVldWVsb2NrKTsK IAkJbGlzdF9hZGRfdGFpbCgmdGFzay0+cnVubmluZywgJmNvbm4tPmNtZHF1ZXVlKTsKKwkJc3Bp bl91bmxvY2tfYmgoJmNvbm4tPnRhc2txdWV1ZWxvY2spOwogCQlpc2NzaV9jb25uX3F1ZXVlX3dv cmsoY29ubik7CiAJfQogCkBAIC0yOTE3LDYgKzI5NDAsNyBAQCBpc2NzaV9jb25uX3NldHVwKHN0 cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqY2xzX3Nlc3Npb24sIGludCBkZF9zaXplLAogCUlOSVRf TElTVF9IRUFEKCZjb25uLT5tZ210cXVldWUpOwogCUlOSVRfTElTVF9IRUFEKCZjb25uLT5jbWRx dWV1ZSk7CiAJSU5JVF9MSVNUX0hFQUQoJmNvbm4tPnJlcXVldWUpOworCXNwaW5fbG9ja19pbml0 KCZjb25uLT50YXNrcXVldWVsb2NrKTsKIAlJTklUX1dPUksoJmNvbm4tPnhtaXR3b3JrLCBpc2Nz aV94bWl0d29ya2VyKTsKIAogCS8qIGFsbG9jYXRlIGxvZ2luX3Rhc2sgdXNlZCBmb3IgdGhlIGxv Z2luL3RleHQgc2VxdWVuY2VzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nh c19hdGEuYyBiL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2F0YS5jCmluZGV4IDc2NjA5OGFmNGVi Ny4uM2YwYzNlMGI1ODM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19hdGEu YworKysgYi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19hdGEuYwpAQCAtMjE5LDcgKzIxOSw3IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgc2FzX2F0YV9xY19pc3N1ZShzdHJ1Y3QgYXRhX3F1ZXVlZF9j bWQgKnFjKQogCQl0YXNrLT5udW1fc2NhdHRlciA9IHFjLT5uX2VsZW07CiAJfSBlbHNlIHsKIAkJ Zm9yX2VhY2hfc2cocWMtPnNnLCBzZywgcWMtPm5fZWxlbSwgc2kpCi0JCQl4ZmVyICs9IHNnLT5s ZW5ndGg7CisJCQl4ZmVyICs9IHNnX2RtYV9sZW4oc2cpOwogCiAJCXRhc2stPnRvdGFsX3hmZXJf bGVuID0geGZlcjsKIAkJdGFzay0+bnVtX3NjYXR0ZXIgPSBzaTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19pbml0LmMK aW5kZXggMTQ2YWIyYWUxODg2Li4wODEzYTJkY2QzZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2Nz aS9scGZjL2xwZmNfaW5pdC5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jCkBA IC0xMTI1NSw2ICsxMTI1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBscGZjX2RyaXZl ciA9IHsKIAkuaWRfdGFibGUJPSBscGZjX2lkX3RhYmxlLAogCS5wcm9iZQkJPSBscGZjX3BjaV9w cm9iZV9vbmUsCiAJLnJlbW92ZQkJPSBscGZjX3BjaV9yZW1vdmVfb25lLAorCS5zaHV0ZG93bgk9 IGxwZmNfcGNpX3JlbW92ZV9vbmUsCiAJLnN1c3BlbmQgICAgICAgID0gbHBmY19wY2lfc3VzcGVu ZF9vbmUsCiAJLnJlc3VtZQkJPSBscGZjX3BjaV9yZXN1bWVfb25lLAogCS5lcnJfaGFuZGxlciAg ICA9ICZscGZjX2Vycl9oYW5kbGVyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NkLmMgYi9k cml2ZXJzL3Njc2kvc2QuYwppbmRleCBiMzgzMTIzNmExNDcuLmNkOTBjMzAwY2VjNyAxMDA2NDQK LS0tIGEvZHJpdmVycy9zY3NpL3NkLmMKKysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTE5MzAs NiArMTkzMCwyMiBAQCBzdGF0aWMgdm9pZCByZWFkX2NhcGFjaXR5X2Vycm9yKHN0cnVjdCBzY3Np X2Rpc2sgKnNka3AsIHN0cnVjdCBzY3NpX2RldmljZSAqc2RwLAogCiAjZGVmaW5lIFJFQURfQ0FQ QUNJVFlfUkVUUklFU19PTl9SRVNFVAkxMAogCisvKgorICogRW5zdXJlIHRoYXQgd2UgZG9uJ3Qg b3ZlcmZsb3cgc2VjdG9yX3Qgd2hlbiBDT05GSUdfTEJEQUYgaXMgbm90IHNldAorICogYW5kIHRo ZSByZXBvcnRlZCBsb2dpY2FsIGJsb2NrIHNpemUgaXMgYmlnZ2VyIHRoYW4gNTEyIGJ5dGVzLiBO b3RlCisgKiB0aGF0IGxhc3Rfc2VjdG9yIGlzIGEgdTY0IGFuZCB0aGVyZWZvcmUgbG9naWNhbF90 b19zZWN0b3JzKCkgaXMgbm90CisgKiBhcHBsaWNhYmxlLgorICovCitzdGF0aWMgYm9vbCBzZF9h ZGRyZXNzYWJsZV9jYXBhY2l0eSh1NjQgbGJhLCB1bnNpZ25lZCBpbnQgc2VjdG9yX3NpemUpCit7 CisJdTY0IGxhc3Rfc2VjdG9yID0gKGxiYSArIDFVTEwpIDw8IChpbG9nMihzZWN0b3Jfc2l6ZSkg LSA5KTsKKworCWlmIChzaXplb2Yoc2VjdG9yX3QpID09IDQgJiYgbGFzdF9zZWN0b3IgPiBVMzJf TUFYKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGludCBy ZWFkX2NhcGFjaXR5XzE2KHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsIHN0cnVjdCBzY3NpX2Rldmlj ZSAqc2RwLAogCQkJCQkJdW5zaWduZWQgY2hhciAqYnVmZmVyKQogewpAQCAtMTk5NSw3ICsyMDEx LDcgQEAgc3RhdGljIGludCByZWFkX2NhcGFjaXR5XzE2KHN0cnVjdCBzY3NpX2Rpc2sgKnNka3As IHN0cnVjdCBzY3NpX2RldmljZSAqc2RwLAogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKLQlpZiAo KHNpemVvZihzZGtwLT5jYXBhY2l0eSkgPT0gNCkgJiYgKGxiYSA+PSAweGZmZmZmZmZmVUxMKSkg eworCWlmICghc2RfYWRkcmVzc2FibGVfY2FwYWNpdHkobGJhLCBzZWN0b3Jfc2l6ZSkpIHsKIAkJ c2RfcHJpbnRrKEtFUk5fRVJSLCBzZGtwLCAiVG9vIGJpZyBmb3IgdGhpcyBrZXJuZWwuIFVzZSBh ICIKIAkJCSJrZXJuZWwgY29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBsYXJnZSBibG9jayAiCiAJ CQkiZGV2aWNlcy5cbiIpOwpAQCAtMjA4MSw3ICsyMDk3LDcgQEAgc3RhdGljIGludCByZWFkX2Nh cGFjaXR5XzEwKHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsIHN0cnVjdCBzY3NpX2RldmljZSAqc2Rw LAogCQlyZXR1cm4gc2VjdG9yX3NpemU7CiAJfQogCi0JaWYgKChzaXplb2Yoc2RrcC0+Y2FwYWNp dHkpID09IDQpICYmIChsYmEgPT0gMHhmZmZmZmZmZikpIHsKKwlpZiAoIXNkX2FkZHJlc3NhYmxl X2NhcGFjaXR5KGxiYSwgc2VjdG9yX3NpemUpKSB7CiAJCXNkX3ByaW50ayhLRVJOX0VSUiwgc2Rr cCwgIlRvbyBiaWcgZm9yIHRoaXMga2VybmVsLiBVc2UgYSAiCiAJCQkia2VybmVsIGNvbXBpbGVk IHdpdGggc3VwcG9ydCBmb3IgbGFyZ2UgYmxvY2sgIgogCQkJImRldmljZXMuXG4iKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvc2NzaS9zci5jIGIvZHJpdmVycy9zY3NpL3NyLmMKaW5kZXggNDE2YmFm ZmE1MWVlLi44ZWJlM2E3MzJlNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zci5jCisrKyBi L2RyaXZlcnMvc2NzaS9zci5jCkBAIC04MzgsNiArODM4LDcgQEAgc3RhdGljIHZvaWQgZ2V0X2Nh cGFiaWxpdGllcyhzdHJ1Y3Qgc2NzaV9jZCAqY2QpCiAJdW5zaWduZWQgY2hhciAqYnVmZmVyOwog CXN0cnVjdCBzY3NpX21vZGVfZGF0YSBkYXRhOwogCXN0cnVjdCBzY3NpX3NlbnNlX2hkciBzc2hk cjsKKwl1bnNpZ25lZCBpbnQgbXNfbGVuID0gMTI4OwogCWludCByYywgbjsKIAogCXN0YXRpYyBj b25zdCBjaGFyICpsb2FkbWVjaFtdID0KQEAgLTg2NCwxMCArODY1LDExIEBAIHN0YXRpYyB2b2lk IGdldF9jYXBhYmlsaXRpZXMoc3RydWN0IHNjc2lfY2QgKmNkKQogCXNjc2lfdGVzdF91bml0X3Jl YWR5KGNkLT5kZXZpY2UsIFNSX1RJTUVPVVQsIE1BWF9SRVRSSUVTLCAmc3NoZHIpOwogCiAJLyog YXNrIGZvciBtb2RlIHBhZ2UgMHgyYSAqLwotCXJjID0gc2NzaV9tb2RlX3NlbnNlKGNkLT5kZXZp Y2UsIDAsIDB4MmEsIGJ1ZmZlciwgMTI4LAorCXJjID0gc2NzaV9tb2RlX3NlbnNlKGNkLT5kZXZp Y2UsIDAsIDB4MmEsIGJ1ZmZlciwgbXNfbGVuLAogCQkJICAgICBTUl9USU1FT1VULCAzLCAmZGF0 YSwgTlVMTCk7CiAKLQlpZiAoIXNjc2lfc3RhdHVzX2lzX2dvb2QocmMpKSB7CisJaWYgKCFzY3Np X3N0YXR1c19pc19nb29kKHJjKSB8fCBkYXRhLmxlbmd0aCA+IG1zX2xlbiB8fAorCSAgICBkYXRh LmhlYWRlcl9sZW5ndGggKyBkYXRhLmJsb2NrX2Rlc2NyaXB0b3JfbGVuZ3RoID4gZGF0YS5sZW5n dGgpIHsKIAkJLyogZmFpbGVkLCBkcml2ZSBkb2Vzbid0IGhhdmUgY2FwYWJpbGl0aWVzIG1vZGUg cGFnZSAqLwogCQljZC0+Y2RpLnNwZWVkID0gMTsKIAkJY2QtPmNkaS5tYXNrIHw9IChDRENfQ0Rf UiB8IENEQ19DRF9SVyB8IENEQ19EVkRfUiB8CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC9p c2NzaS9pc2NzaV90YXJnZXRfcGFyYW1ldGVycy5jIGIvZHJpdmVycy90YXJnZXQvaXNjc2kvaXNj c2lfdGFyZ2V0X3BhcmFtZXRlcnMuYwppbmRleCAxOGMyOTI2MGI0YTIuLjU3OGY1ZDAzZDg0ZSAx MDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvaXNjc2kvaXNjc2lfdGFyZ2V0X3BhcmFtZXRlcnMu YworKysgYi9kcml2ZXJzL3RhcmdldC9pc2NzaS9pc2NzaV90YXJnZXRfcGFyYW1ldGVycy5jCkBA IC04MDQsMjIgKzgwNCw2IEBAIHN0YXRpYyB2b2lkIGlzY3NpX2NoZWNrX3Byb3Bvc2VyX2Zvcl9v cHRpb25hbF9yZXBseShzdHJ1Y3QgaXNjc2lfcGFyYW0gKnBhcmFtKQogCQlpZiAoIXN0cmNtcChw YXJhbS0+bmFtZSwgTUFYUkVDVkRBVEFTRUdNRU5UTEVOR1RIKSkKIAkJCVNFVF9QU1RBVEVfUkVQ TFlfT1BUSU9OQUwocGFyYW0pOwogCQkvKgotCQkgKiBUaGUgR2xvYmFsU0FOIGlTQ1NJIEluaXRp YXRvciBmb3IgTWFjT1NYIGRvZXMKLQkJICogbm90IHJlc3BvbmQgdG8gTWF4QnVyc3RMZW5ndGgs IEZpcnN0QnVyc3RMZW5ndGgsCi0JCSAqIERlZmF1bHRUaW1lMldhaXQgb3IgRGVmYXVsdFRpbWUy UmV0YWluIHBhcmFtZXRlciBrZXlzLgotCQkgKiBTbywgd2Ugc2V0IHRoZW0gdG8gJ3JlcGx5IG9w dGlvbmFsJyBoZXJlLCBhbmQgYXNzdW1lIHRoZQotCQkgKiB0aGUgZGVmYXVsdHMgZnJvbSBpc2Nz aV9wYXJhbWV0ZXJzLmggaWYgdGhlIGluaXRpYXRvcgotCQkgKiBpcyBub3QgUkZDIGNvbXBsaWFu dCBhbmQgdGhlIGtleXMgYXJlIG5vdCBuZWdvdGlhdGVkLgotCQkgKi8KLQkJaWYgKCFzdHJjbXAo cGFyYW0tPm5hbWUsIE1BWEJVUlNUTEVOR1RIKSkKLQkJCVNFVF9QU1RBVEVfUkVQTFlfT1BUSU9O QUwocGFyYW0pOwotCQlpZiAoIXN0cmNtcChwYXJhbS0+bmFtZSwgRklSU1RCVVJTVExFTkdUSCkp Ci0JCQlTRVRfUFNUQVRFX1JFUExZX09QVElPTkFMKHBhcmFtKTsKLQkJaWYgKCFzdHJjbXAocGFy YW0tPm5hbWUsIERFRkFVTFRUSU1FMldBSVQpKQotCQkJU0VUX1BTVEFURV9SRVBMWV9PUFRJT05B TChwYXJhbSk7Ci0JCWlmICghc3RyY21wKHBhcmFtLT5uYW1lLCBERUZBVUxUVElNRTJSRVRBSU4p KQotCQkJU0VUX1BTVEFURV9SRVBMWV9PUFRJT05BTChwYXJhbSk7Ci0JCS8qCiAJCSAqIFJlcXVp cmVkIGZvciBnUFhFIGlTQ1NJIGJvb3QgY2xpZW50CiAJCSAqLwogCQlpZiAoIXN0cmNtcChwYXJh bS0+bmFtZSwgTUFYQ09OTkVDVElPTlMpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvaXNj c2kvaXNjc2lfdGFyZ2V0X3V0aWwuYyBiL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3Rhcmdl dF91dGlsLmMKaW5kZXggMmU5NmFlNmNmM2MxLi42NjhmYTA2ZDhjNjIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF91dGlsLmMKKysrIGIvZHJpdmVycy90YXJn ZXQvaXNjc2kvaXNjc2lfdGFyZ2V0X3V0aWwuYwpAQCAtNzI5LDIxICs3MjksMjMgQEAgdm9pZCBp c2NzaXRfZnJlZV9jbWQoc3RydWN0IGlzY3NpX2NtZCAqY21kLCBib29sIHNodXRkb3duKQogewog CXN0cnVjdCBzZV9jbWQgKnNlX2NtZCA9IE5VTEw7CiAJaW50IHJjOworCWJvb2wgb3Bfc2NzaSA9 IGZhbHNlOwogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGEgc3RydWN0IHNlX2NtZCBpcyBhc3NvY2lh dGVkIHdpdGgKIAkgKiB0aGlzIHN0cnVjdCBpc2NzaV9jbWQuCiAJICovCiAJc3dpdGNoIChjbWQt PmlzY3NpX29wY29kZSkgewogCWNhc2UgSVNDU0lfT1BfU0NTSV9DTUQ6Ci0JCXNlX2NtZCA9ICZj bWQtPnNlX2NtZDsKLQkJX19pc2NzaXRfZnJlZV9jbWQoY21kLCB0cnVlLCBzaHV0ZG93bik7CisJ CW9wX3Njc2kgPSB0cnVlOwogCQkvKgogCQkgKiBGYWxsdGhyb3VnaAogCQkgKi8KIAljYXNlIElT Q1NJX09QX1NDU0lfVE1GVU5DOgotCQlyYyA9IHRyYW5zcG9ydF9nZW5lcmljX2ZyZWVfY21kKCZj bWQtPnNlX2NtZCwgc2h1dGRvd24pOwotCQlpZiAoIXJjICYmIHNodXRkb3duICYmIHNlX2NtZCAm JiBzZV9jbWQtPnNlX3Nlc3MpIHsKLQkJCV9faXNjc2l0X2ZyZWVfY21kKGNtZCwgdHJ1ZSwgc2h1 dGRvd24pOworCQlzZV9jbWQgPSAmY21kLT5zZV9jbWQ7CisJCV9faXNjc2l0X2ZyZWVfY21kKGNt ZCwgb3Bfc2NzaSwgc2h1dGRvd24pOworCQlyYyA9IHRyYW5zcG9ydF9nZW5lcmljX2ZyZWVfY21k KHNlX2NtZCwgc2h1dGRvd24pOworCQlpZiAoIXJjICYmIHNodXRkb3duICYmIHNlX2NtZC0+c2Vf c2VzcykgeworCQkJX19pc2NzaXRfZnJlZV9jbWQoY21kLCBvcF9zY3NpLCBzaHV0ZG93bik7CiAJ CQl0YXJnZXRfcHV0X3Nlc3NfY21kKHNlX2NtZC0+c2Vfc2Vzcywgc2VfY21kKTsKIAkJfQogCQli cmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3BzY3NpLmMgYi9k cml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wc2NzaS5jCmluZGV4IGZlODhjMWJjZmZiYi4uYzkz NjM2ZDI5ODJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wc2NzaS5j CisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3BzY3NpLmMKQEAgLTE1Nyw3ICsxNTcs NyBAQCBzdGF0aWMgdm9pZCBwc2NzaV90YXBlX3JlYWRfYmxvY2tzaXplKHN0cnVjdCBzZV9kZXZp Y2UgKmRldiwKIAogCWJ1ZiA9IGt6YWxsb2MoMTIsIEdGUF9LRVJORUwpOwogCWlmICghYnVmKQot CQlyZXR1cm47CisJCWdvdG8gb3V0X2ZyZWU7CiAKIAltZW1zZXQoY2RiLCAwLCBNQVhfQ09NTUFO RF9TSVpFKTsKIAljZGJbMF0gPSBNT0RFX1NFTlNFOwpAQCAtMTcyLDkgKzE3MiwxMCBAQCBzdGF0 aWMgdm9pZCBwc2NzaV90YXBlX3JlYWRfYmxvY2tzaXplKHN0cnVjdCBzZV9kZXZpY2UgKmRldiwK IAkgKiBJZiBNT0RFX1NFTlNFIHN0aWxsIHJldHVybnMgemVybywgc2V0IHRoZSBkZWZhdWx0IHZh bHVlIHRvIDEwMjQuCiAJICovCiAJc2Rldi0+c2VjdG9yX3NpemUgPSAoYnVmWzldIDw8IDE2KSB8 IChidWZbMTBdIDw8IDgpIHwgKGJ1ZlsxMV0pOworb3V0X2ZyZWU6CiAJaWYgKCFzZGV2LT5zZWN0 b3Jfc2l6ZSkKIAkJc2Rldi0+c2VjdG9yX3NpemUgPSAxMDI0Owotb3V0X2ZyZWU6CisKIAlrZnJl ZShidWYpOwogfQogCkBAIC0zMTcsOSArMzE4LDEwIEBAIHN0YXRpYyBpbnQgcHNjc2lfYWRkX2Rl dmljZV90b19saXN0KHN0cnVjdCBzZV9kZXZpY2UgKmRldiwKIAkJCQlzZC0+bHVuLCBzZC0+cXVl dWVfZGVwdGgpOwogCX0KIAotCWRldi0+ZGV2X2F0dHJpYi5od19ibG9ja19zaXplID0gc2QtPnNl Y3Rvcl9zaXplOworCWRldi0+ZGV2X2F0dHJpYi5od19ibG9ja19zaXplID0KKwkJbWluX25vdF96 ZXJvKChpbnQpc2QtPnNlY3Rvcl9zaXplLCA1MTIpOwogCWRldi0+ZGV2X2F0dHJpYi5od19tYXhf c2VjdG9ycyA9Ci0JCW1pbl90KGludCwgc2QtPmhvc3QtPm1heF9zZWN0b3JzLCBxdWV1ZV9tYXhf aHdfc2VjdG9ycyhxKSk7CisJCW1pbl9ub3RfemVybygodW5zaWduZWQgaW50KXNkLT5ob3N0LT5t YXhfc2VjdG9ycywgcXVldWVfbWF4X2h3X3NlY3RvcnMocSkpOwogCWRldi0+ZGV2X2F0dHJpYi5o d19xdWV1ZV9kZXB0aCA9IHNkLT5xdWV1ZV9kZXB0aDsKIAogCS8qCkBAIC0zNDIsOCArMzQ0LDEw IEBAIHN0YXRpYyBpbnQgcHNjc2lfYWRkX2RldmljZV90b19saXN0KHN0cnVjdCBzZV9kZXZpY2Ug KmRldiwKIAkvKgogCSAqIEZvciBUWVBFX1RBUEUsIGF0dGVtcHQgdG8gZGV0ZXJtaW5lIGJsb2Nr c2l6ZSB3aXRoIE1PREVfU0VOU0UuCiAJICovCi0JaWYgKHNkLT50eXBlID09IFRZUEVfVEFQRSkK KwlpZiAoc2QtPnR5cGUgPT0gVFlQRV9UQVBFKSB7CiAJCXBzY3NpX3RhcGVfcmVhZF9ibG9ja3Np emUoZGV2LCBzZCk7CisJCWRldi0+ZGV2X2F0dHJpYi5od19ibG9ja19zaXplID0gc2QtPnNlY3Rv cl9zaXplOworCX0KIAlyZXR1cm4gMDsKIH0KIApAQCAtNDA5LDcgKzQxMyw3IEBAIHN0YXRpYyBp bnQgcHNjc2lfY3JlYXRlX3R5cGVfZGlzayhzdHJ1Y3Qgc2VfZGV2aWNlICpkZXYsIHN0cnVjdCBz Y3NpX2RldmljZSAqc2QpCiAvKgogICogQ2FsbGVkIHdpdGggc3RydWN0IFNjc2lfSG9zdC0+aG9z dF9sb2NrIGNhbGxlZC4KICAqLwotc3RhdGljIGludCBwc2NzaV9jcmVhdGVfdHlwZV9yb20oc3Ry dWN0IHNlX2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkKQorc3RhdGljIGludCBw c2NzaV9jcmVhdGVfdHlwZV9ub25kaXNrKHN0cnVjdCBzZV9kZXZpY2UgKmRldiwgc3RydWN0IHNj c2lfZGV2aWNlICpzZCkKIAlfX3JlbGVhc2VzKHNoLT5ob3N0X2xvY2spCiB7CiAJc3RydWN0IHBz Y3NpX2hiYV92aXJ0ICpwaHYgPSBkZXYtPnNlX2hiYS0+aGJhX3B0cjsKQEAgLTQzNiwyOCArNDQw LDYgQEAgc3RhdGljIGludCBwc2NzaV9jcmVhdGVfdHlwZV9yb20oc3RydWN0IHNlX2RldmljZSAq ZGV2LCBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkKQogCXJldHVybiAwOwogfQogCi0vKgotICogQ2Fs bGVkIHdpdGggc3RydWN0IFNjc2lfSG9zdC0+aG9zdF9sb2NrIGNhbGxlZC4KLSAqLwotc3RhdGlj IGludCBwc2NzaV9jcmVhdGVfdHlwZV9vdGhlcihzdHJ1Y3Qgc2VfZGV2aWNlICpkZXYsCi0JCXN0 cnVjdCBzY3NpX2RldmljZSAqc2QpCi0JX19yZWxlYXNlcyhzaC0+aG9zdF9sb2NrKQotewotCXN0 cnVjdCBwc2NzaV9oYmFfdmlydCAqcGh2ID0gZGV2LT5zZV9oYmEtPmhiYV9wdHI7Ci0Jc3RydWN0 IFNjc2lfSG9zdCAqc2ggPSBzZC0+aG9zdDsKLQlpbnQgcmV0OwotCi0Jc3Bpbl91bmxvY2tfaXJx KHNoLT5ob3N0X2xvY2spOwotCXJldCA9IHBzY3NpX2FkZF9kZXZpY2VfdG9fbGlzdChkZXYsIHNk KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcHJfZGVidWcoIkNPUkVfUFNDU0lbJWRd IC0gQWRkZWQgVHlwZTogJXMgZm9yICVkOiVkOiVkOiVkXG4iLAotCQlwaHYtPnBodl9ob3N0X2lk LCBzY3NpX2RldmljZV90eXBlKHNkLT50eXBlKSwgc2gtPmhvc3Rfbm8sCi0JCXNkLT5jaGFubmVs LCBzZC0+aWQsIHNkLT5sdW4pOwotCXJldHVybiAwOwotfQotCiBzdGF0aWMgaW50IHBzY3NpX2Nv bmZpZ3VyZV9kZXZpY2Uoc3RydWN0IHNlX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBzZV9oYmEg KmhiYSA9IGRldi0+c2VfaGJhOwpAQCAtNTQ1LDExICs1MjcsOCBAQCBzdGF0aWMgaW50IHBzY3Np X2NvbmZpZ3VyZV9kZXZpY2Uoc3RydWN0IHNlX2RldmljZSAqZGV2KQogCQljYXNlIFRZUEVfRElT SzoKIAkJCXJldCA9IHBzY3NpX2NyZWF0ZV90eXBlX2Rpc2soZGV2LCBzZCk7CiAJCQlicmVhazsK LQkJY2FzZSBUWVBFX1JPTToKLQkJCXJldCA9IHBzY3NpX2NyZWF0ZV90eXBlX3JvbShkZXYsIHNk KTsKLQkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJcmV0ID0gcHNjc2lfY3JlYXRlX3R5cGVfb3Ro ZXIoZGV2LCBzZCk7CisJCQlyZXQgPSBwc2NzaV9jcmVhdGVfdHlwZV9ub25kaXNrKGRldiwgc2Qp OwogCQkJYnJlYWs7CiAJCX0KIApAQCAtNjA2LDggKzU4NSw3IEBAIHN0YXRpYyB2b2lkIHBzY3Np X2ZyZWVfZGV2aWNlKHN0cnVjdCBzZV9kZXZpY2UgKmRldikKIAkJZWxzZSBpZiAocGR2LT5wZHZf bGxkX2hvc3QpCiAJCQlzY3NpX2hvc3RfcHV0KHBkdi0+cGR2X2xsZF9ob3N0KTsKIAotCQlpZiAo KHNkLT50eXBlID09IFRZUEVfRElTSykgfHwgKHNkLT50eXBlID09IFRZUEVfUk9NKSkKLQkJCXNj c2lfZGV2aWNlX3B1dChzZCk7CisJCXNjc2lfZGV2aWNlX3B1dChzZCk7CiAKIAkJcGR2LT5wZHZf c2QgPSBOVUxMOwogCX0KQEAgLTExMjUsNyArMTEwMyw2IEBAIHN0YXRpYyBzZWN0b3JfdCBwc2Nz aV9nZXRfYmxvY2tzKHN0cnVjdCBzZV9kZXZpY2UgKmRldikKIAlpZiAocGR2LT5wZHZfYmQgJiYg cGR2LT5wZHZfYmQtPmJkX3BhcnQpCiAJCXJldHVybiBwZHYtPnBkdl9iZC0+YmRfcGFydC0+bnJf c2VjdHM7CiAKLQlkdW1wX3N0YWNrKCk7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3NiYy5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2Nv cmVfc2JjLmMKaW5kZXggYTI5ZmRmYWIwZDNhLi5jYWYzYmFhYzVkMDggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3NiYy5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3Rhcmdl dF9jb3JlX3NiYy5jCkBAIC05NTAsOSArOTUwLDE1IEBAIHNiY19wYXJzZV9jZGIoc3RydWN0IHNl X2NtZCAqY21kLCBzdHJ1Y3Qgc2JjX29wcyAqb3BzKQogCQkJcmV0dXJuIHJldDsKIAkJYnJlYWs7 CiAJY2FzZSBWRVJJRlk6CisJY2FzZSBWRVJJRllfMTY6CiAJCXNpemUgPSAwOwotCQlzZWN0b3Jz ID0gdHJhbnNwb3J0X2dldF9zZWN0b3JzXzEwKGNkYik7Ci0JCWNtZC0+dF90YXNrX2xiYSA9IHRy YW5zcG9ydF9sYmFfMzIoY2RiKTsKKwkJaWYgKGNkYlswXSA9PSBWRVJJRlkpIHsKKwkJCXNlY3Rv cnMgPSB0cmFuc3BvcnRfZ2V0X3NlY3RvcnNfMTAoY2RiKTsKKwkJCWNtZC0+dF90YXNrX2xiYSA9 IHRyYW5zcG9ydF9sYmFfMzIoY2RiKTsKKwkJfSBlbHNlIHsKKwkJCXNlY3RvcnMgPSB0cmFuc3Bv cnRfZ2V0X3NlY3RvcnNfMTYoY2RiKTsKKwkJCWNtZC0+dF90YXNrX2xiYSA9IHRyYW5zcG9ydF9s YmFfNjQoY2RiKTsKKwkJfQogCQljbWQtPmV4ZWN1dGVfY21kID0gc2JjX2VtdWxhdGVfbm9vcDsK IAkJZ290byBjaGVja19sYmE7CiAJY2FzZSBSRVpFUk9fVU5JVDoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdHR5L3NlcmlhbC9teHMtYXVhcnQuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9teHMtYXVhcnQu YwppbmRleCA4NmRlNDQ3N2Q5OGEuLjdmNGJjNDg0NTEwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy90 dHkvc2VyaWFsL214cy1hdWFydC5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9teHMtYXVhcnQu YwpAQCAtOTAsNiArOTAsOCBAQAogI2RlZmluZSBBVUFSVF9DVFJMMl9UWEUJCQkJKDEgPDwgOCkK ICNkZWZpbmUgQVVBUlRfQ1RSTDJfVUFSVEVOCQkJKDEgPDwgMCkKIAorI2RlZmluZSBBVUFSVF9M SU5FQ1RSTF9CQVVEX0RJVl9NQVgJCTB4MDAzZmZmYzAKKyNkZWZpbmUgQVVBUlRfTElORUNUUkxf QkFVRF9ESVZfTUlOCQkweDAwMDAwMGVjCiAjZGVmaW5lIEFVQVJUX0xJTkVDVFJMX0JBVURfRElW SU5UX1NISUZUCTE2CiAjZGVmaW5lIEFVQVJUX0xJTkVDVFJMX0JBVURfRElWSU5UX01BU0sJCTB4 ZmZmZjAwMDAKICNkZWZpbmUgQVVBUlRfTElORUNUUkxfQkFVRF9ESVZJTlQodikJCSgoKHYpICYg MHhmZmZmKSA8PCAxNikKQEAgLTU2Niw3ICs1NjgsNyBAQCBzdGF0aWMgdm9pZCBteHNfYXVhcnRf c2V0dGVybWlvcyhzdHJ1Y3QgdWFydF9wb3J0ICp1LAogewogCXN0cnVjdCBteHNfYXVhcnRfcG9y dCAqcyA9IHRvX2F1YXJ0X3BvcnQodSk7CiAJdTMyIGJtLCBjdHJsLCBjdHJsMiwgZGl2OwotCXVu c2lnbmVkIGludCBjZmxhZywgYmF1ZDsKKwl1bnNpZ25lZCBpbnQgY2ZsYWcsIGJhdWQsIGJhdWRf bWluLCBiYXVkX21heDsKIAogCWNmbGFnID0gdGVybWlvcy0+Y19jZmxhZzsKIApAQCAtNjU2LDgg KzY1OCwxMCBAQCBzdGF0aWMgdm9pZCBteHNfYXVhcnRfc2V0dGVybWlvcyhzdHJ1Y3QgdWFydF9w b3J0ICp1LAogCX0KIAogCS8qIHNldCBiYXVkIHJhdGUgKi8KLQliYXVkID0gdWFydF9nZXRfYmF1 ZF9yYXRlKHUsIHRlcm1pb3MsIG9sZCwgMCwgdS0+dWFydGNsayk7Ci0JZGl2ID0gdS0+dWFydGNs ayAqIDMyIC8gYmF1ZDsKKwliYXVkX21pbiA9IERJVl9ST1VORF9VUCh1LT51YXJ0Y2xrICogMzIs IEFVQVJUX0xJTkVDVFJMX0JBVURfRElWX01BWCk7CisJYmF1ZF9tYXggPSB1LT51YXJ0Y2xrICog MzIgLyBBVUFSVF9MSU5FQ1RSTF9CQVVEX0RJVl9NSU47CisJYmF1ZCA9IHVhcnRfZ2V0X2JhdWRf cmF0ZSh1LCB0ZXJtaW9zLCBvbGQsIGJhdWRfbWluLCBiYXVkX21heCk7CisJZGl2ID0gRElWX1JP VU5EX0NMT1NFU1QodS0+dWFydGNsayAqIDMyLCBiYXVkKTsKIAljdHJsIHw9IEFVQVJUX0xJTkVD VFJMX0JBVURfRElWRlJBQyhkaXYgJiAweDNGKTsKIAljdHJsIHw9IEFVQVJUX0xJTkVDVFJMX0JB VURfRElWSU5UKGRpdiA+PiA2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNi dG1jLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwppbmRleCA0YzZkNjNkNGE5ZTguLjdk ZTE1OWZlYTQ3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKKysrIGIv ZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKQEAgLTExMDQsNyArMTEwNCw3IEBAIHN0YXRpYyBp bnQgdXNidG1jX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCiAJZGV2X2RiZygm aW50Zi0+ZGV2LCAiJXMgY2FsbGVkXG4iLCBfX2Z1bmNfXyk7CiAKLQlkYXRhID0ga21hbGxvYyhz aXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKKwlkYXRhID0ga3phbGxvYyhzaXplb2YoKmRhdGEp LCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRhdGEpIHsKIAkJZGV2X2VycigmaW50Zi0+ZGV2LCAiVW5h YmxlIHRvIGFsbG9jYXRlIGtlcm5lbCBtZW1vcnlcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKQEAg LTExNjQsNiArMTE2NCwxMiBAQCBzdGF0aWMgaW50IHVzYnRtY19wcm9iZShzdHJ1Y3QgdXNiX2lu dGVyZmFjZSAqaW50ZiwKIAkJfQogCX0KIAorCWlmICghZGF0YS0+YnVsa19vdXQgfHwgIWRhdGEt PmJ1bGtfaW4pIHsKKwkJZGV2X2VycigmaW50Zi0+ZGV2LCAiYnVsayBlbmRwb2ludHMgbm90IGZv dW5kXG4iKTsKKwkJcmV0Y29kZSA9IC1FTk9ERVY7CisJCWdvdG8gZXJyX3B1dDsKKwl9CisKIAly ZXRjb2RlID0gZ2V0X2NhcGFiaWxpdGllcyhkYXRhKTsKIAlpZiAocmV0Y29kZSkKIAkJZGV2X2Vy cigmaW50Zi0+ZGV2LCAiY2FuJ3QgcmVhZCBjYXBhYmlsaXRpZXNcbiIpOwpAQCAtMTE4Nyw2ICsx MTkzLDcgQEAgc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmlu dGYsCiBlcnJvcl9yZWdpc3RlcjoKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJmludGYtPmRldi5rb2Jq LCAmY2FwYWJpbGl0eV9hdHRyX2dycCk7CiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZpbnRmLT5kZXYu a29iaiwgJmRhdGFfYXR0cl9ncnApOworZXJyX3B1dDoKIAlrcmVmX3B1dCgmZGF0YS0+a3JlZiwg dXNidG1jX2RlbGV0ZSk7CiAJcmV0dXJuIHJldGNvZGU7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi9jb3JlL2NvbmZpZy5jIGIvZHJpdmVycy91c2IvY29yZS9jb25maWcuYwppbmRleCAxM2Q4 YzYwYzI4NmEuLjYyNzAzODg4M2M1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9jb25m aWcuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2NvbmZpZy5jCkBAIC0yNDUsNiArMjQ1LDE2IEBA IHN0YXRpYyBpbnQgdXNiX3BhcnNlX2VuZHBvaW50KHN0cnVjdCBkZXZpY2UgKmRkZXYsIGludCBj ZmdubywgaW50IGludW0sCiAKIAkJCS8qCiAJCQkgKiBBZGp1c3QgYkludGVydmFsIGZvciBxdWly a2VkIGRldmljZXMuCisJCQkgKi8KKwkJCS8qCisJCQkgKiBUaGlzIHF1aXJrIGZpeGVzIGJJbnRl cnZhbHMgcmVwb3J0ZWQgaW4gbXMuCisJCQkgKi8KKwkJCWlmICh0b191c2JfZGV2aWNlKGRkZXYp LT5xdWlya3MgJgorCQkJCVVTQl9RVUlSS19MSU5FQVJfRlJBTUVfSU5UUl9CSU5URVJWQUwpIHsK KwkJCQluID0gY2xhbXAoZmxzKGQtPmJJbnRlcnZhbCkgKyAzLCBpLCBqKTsKKwkJCQlpID0gaiA9 IG47CisJCQl9CisJCQkvKgogCQkJICogVGhpcyBxdWlyayBmaXhlcyBiSW50ZXJ2YWxzIHJlcG9y dGVkIGluCiAJCQkgKiBsaW5lYXIgbWljcm9mcmFtZXMuCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL2NvcmUvaGNkLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCmluZGV4IDdmMjE0 NGViNThkOS4uNjZmNTEzMzk4ZDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2hjZC5j CisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKQEAgLTQ5Nyw4ICs0OTcsMTAgQEAgc3RhdGlj IGludCByaF9jYWxsX2NvbnRyb2wgKHN0cnVjdCB1c2JfaGNkICpoY2QsIHN0cnVjdCB1cmIgKnVy YikKIAkgKi8KIAl0YnVmX3NpemUgPSAgbWF4X3QodTE2LCBzaXplb2Yoc3RydWN0IHVzYl9odWJf ZGVzY3JpcHRvciksIHdMZW5ndGgpOwogCXRidWYgPSBremFsbG9jKHRidWZfc2l6ZSwgR0ZQX0tF Uk5FTCk7Ci0JaWYgKCF0YnVmKQotCQlyZXR1cm4gLUVOT01FTTsKKwlpZiAoIXRidWYpIHsKKwkJ c3RhdHVzID0gLUVOT01FTTsKKwkJZ290byBlcnJfYWxsb2M7CisJfQogCiAJYnVmcCA9IHRidWY7 CiAKQEAgLTcwMSw2ICs3MDMsNyBAQCBzdGF0aWMgaW50IHJoX2NhbGxfY29udHJvbCAoc3RydWN0 IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiKQogCX0KIAogCWtmcmVlKHRidWYpOworIGVy cl9hbGxvYzoKIAogCS8qIGFueSBlcnJvcnMgZ2V0IHJldHVybmVkIHRocm91Z2ggdGhlIHVyYiBj b21wbGV0aW9uICovCiAJc3Bpbl9sb2NrX2lycSgmaGNkX3Jvb3RfaHViX2xvY2spOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKaW5k ZXggNjI0Mzc4NDA0YjM3Li43YTZkZGRhNzAzODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2Nv cmUvaHViLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwpAQCAtNDE0OCw3ICs0MTQ4LDcg QEAgc3RhdGljIHZvaWQgaHViX3NldF9pbml0aWFsX3VzYjJfbHBtX3BvbGljeShzdHJ1Y3QgdXNi X2RldmljZSAqdWRldikKIAlzdHJ1Y3QgdXNiX2h1YiAqaHViID0gdXNiX2h1Yl90b19zdHJ1Y3Rf aHViKHVkZXYtPnBhcmVudCk7CiAJaW50IGNvbm5lY3RfdHlwZSA9IFVTQl9QT1JUX0NPTk5FQ1Rf VFlQRV9VTktOT1dOOwogCi0JaWYgKCF1ZGV2LT51c2IyX2h3X2xwbV9jYXBhYmxlKQorCWlmICgh dWRldi0+dXNiMl9od19scG1fY2FwYWJsZSB8fCAhdWRldi0+Ym9zKQogCQlyZXR1cm47CiAKIAlp ZiAoaHViKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9xdWlya3MuYyBiL2RyaXZlcnMv dXNiL2NvcmUvcXVpcmtzLmMKaW5kZXggM2EwMTBjMTllMGVjLi4zYTVhNGY0OWU4OTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvcXVpcmtzLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9x dWlya3MuYwpAQCAtMTY3LDYgKzE2NywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZp Y2VfaWQgdXNiX3F1aXJrX2xpc3RbXSA9IHsKIAkvKiBNLVN5c3RlbXMgRmxhc2ggRGlzayBQaW9u ZWVycyAqLwogCXsgVVNCX0RFVklDRSgweDA4ZWMsIDB4MTAwMCksIC5kcml2ZXJfaW5mbyA9IFVT Ql9RVUlSS19SRVNFVF9SRVNVTUUgfSwKIAorCS8qIEJhdW0gVmFyaW8gVWx0cmEgKi8KKwl7IFVT Ql9ERVZJQ0UoMHgwOTA0LCAweDYxMDEpLCAuZHJpdmVyX2luZm8gPQorCQkJVVNCX1FVSVJLX0xJ TkVBUl9GUkFNRV9JTlRSX0JJTlRFUlZBTCB9LAorCXsgVVNCX0RFVklDRSgweDA5MDQsIDB4NjEw MiksIC5kcml2ZXJfaW5mbyA9CisJCQlVU0JfUVVJUktfTElORUFSX0ZSQU1FX0lOVFJfQklOVEVS VkFMIH0sCisJeyBVU0JfREVWSUNFKDB4MDkwNCwgMHg2MTAzKSwgLmRyaXZlcl9pbmZvID0KKwkJ CVVTQl9RVUlSS19MSU5FQVJfRlJBTUVfSU5UUl9CSU5URVJWQUwgfSwKKwogCS8qIEtleXRvdWNo IFFXRVJUWSBQYW5lbCBrZXlib2FyZCAqLwogCXsgVVNCX0RFVklDRSgweDA5MjYsIDB4MzMzMyks IC5kcml2ZXJfaW5mbyA9CiAJCQlVU0JfUVVJUktfQ09ORklHX0lOVEZfU1RSSU5HUyB9LApkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvZHdjMy9nYWRnZXQuaCBiL2RyaXZlcnMvdXNiL2R3YzMvZ2Fk Z2V0LmgKaW5kZXggYWM2MjU1ODIzMWJlLi4yODA5ZDdlOWEwNjMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL2R3YzMvZ2FkZ2V0LmgKKysrIGIvZHJpdmVycy91c2IvZHdjMy9nYWRnZXQuaApAQCAt MjgsMjMgKzI4LDIzIEBAIHN0cnVjdCBkd2MzOwogI2RlZmluZSBnYWRnZXRfdG9fZHdjKGcpCShj b250YWluZXJfb2YoZywgc3RydWN0IGR3YzMsIGdhZGdldCkpCiAKIC8qIERFUENGRyBwYXJhbWV0 ZXIgMSAqLwotI2RlZmluZSBEV0MzX0RFUENGR19JTlRfTlVNKG4pCQkoKG4pIDw8IDApCisjZGVm aW5lIERXQzNfREVQQ0ZHX0lOVF9OVU0obikJCSgoKG4pICYgMHgxZikgPDwgMCkKICNkZWZpbmUg RFdDM19ERVBDRkdfWEZFUl9DT01QTEVURV9FTgkoMSA8PCA4KQogI2RlZmluZSBEV0MzX0RFUENG R19YRkVSX0lOX1BST0dSRVNTX0VOCSgxIDw8IDkpCiAjZGVmaW5lIERXQzNfREVQQ0ZHX1hGRVJf Tk9UX1JFQURZX0VOCSgxIDw8IDEwKQogI2RlZmluZSBEV0MzX0RFUENGR19GSUZPX0VSUk9SX0VO CSgxIDw8IDExKQogI2RlZmluZSBEV0MzX0RFUENGR19TVFJFQU1fRVZFTlRfRU4JKDEgPDwgMTMp Ci0jZGVmaW5lIERXQzNfREVQQ0ZHX0JJTlRFUlZBTF9NMShuKQkoKG4pIDw8IDE2KQorI2RlZmlu ZSBEV0MzX0RFUENGR19CSU5URVJWQUxfTTEobikJKCgobikgJiAweGZmKSA8PCAxNikKICNkZWZp bmUgRFdDM19ERVBDRkdfU1RSRUFNX0NBUEFCTEUJKDEgPDwgMjQpCi0jZGVmaW5lIERXQzNfREVQ Q0ZHX0VQX05VTUJFUihuKQkoKG4pIDw8IDI1KQorI2RlZmluZSBEV0MzX0RFUENGR19FUF9OVU1C RVIobikJKCgobikgJiAweDFmKSA8PCAyNSkKICNkZWZpbmUgRFdDM19ERVBDRkdfQlVMS19CQVNF RAkJKDEgPDwgMzApCiAjZGVmaW5lIERXQzNfREVQQ0ZHX0ZJRk9fQkFTRUQJCSgxIDw8IDMxKQog CiAvKiBERVBDRkcgcGFyYW1ldGVyIDAgKi8KLSNkZWZpbmUgRFdDM19ERVBDRkdfRVBfVFlQRShu KQkJKChuKSA8PCAxKQotI2RlZmluZSBEV0MzX0RFUENGR19NQVhfUEFDS0VUX1NJWkUobikJKChu KSA8PCAzKQotI2RlZmluZSBEV0MzX0RFUENGR19GSUZPX05VTUJFUihuKQkoKG4pIDw8IDE3KQot I2RlZmluZSBEV0MzX0RFUENGR19CVVJTVF9TSVpFKG4pCSgobikgPDwgMjIpCisjZGVmaW5lIERX QzNfREVQQ0ZHX0VQX1RZUEUobikJCSgoKG4pICYgMHgzKSA8PCAxKQorI2RlZmluZSBEV0MzX0RF UENGR19NQVhfUEFDS0VUX1NJWkUobikJKCgobikgJiAweDdmZikgPDwgMykKKyNkZWZpbmUgRFdD M19ERVBDRkdfRklGT19OVU1CRVIobikJKCgobikgJiAweDFmKSA8PCAxNykKKyNkZWZpbmUgRFdD M19ERVBDRkdfQlVSU1RfU0laRShuKQkoKChuKSAmIDB4ZikgPDwgMjIpCiAjZGVmaW5lIERXQzNf REVQQ0ZHX0RBVEFfU0VRX05VTShuKQkoKG4pIDw8IDI2KQogLyogVGhpcyBhcHBsaWVzIGZvciBj b3JlIHZlcnNpb25zIGVhcmxpZXIgdGhhbiAxLjk0YSAqLwogI2RlZmluZSBEV0MzX0RFUENGR19J R05fU0VRX05VTQkJKDEgPDwgMzEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9h Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX2FjbS5jCmluZGV4IDMzODQ0ODZjMjg4NC4uZmYz MDE3MWI2OTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9hY20uYworKysgYi9k cml2ZXJzL3VzYi9nYWRnZXQvZl9hY20uYwpAQCAtNTM1LDEzICs1MzUsMTUgQEAgc3RhdGljIGlu dCBhY21fbm90aWZ5X3NlcmlhbF9zdGF0ZShzdHJ1Y3QgZl9hY20gKmFjbSkKIHsKIAlzdHJ1Y3Qg dXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYgPSBhY20tPnBvcnQuZnVuYy5jb25maWctPmNkZXY7CiAJ aW50CQkJc3RhdHVzOworCV9fbGUxNgkJCXNlcmlhbF9zdGF0ZTsKIAogCXNwaW5fbG9jaygmYWNt LT5sb2NrKTsKIAlpZiAoYWNtLT5ub3RpZnlfcmVxKSB7CiAJCURCRyhjZGV2LCAiYWNtIHR0eUdT JWQgc2VyaWFsIHN0YXRlICUwNHhcbiIsCiAJCQkJYWNtLT5wb3J0X251bSwgYWNtLT5zZXJpYWxf c3RhdGUpOworCQlzZXJpYWxfc3RhdGUgPSBjcHVfdG9fbGUxNihhY20tPnNlcmlhbF9zdGF0ZSk7 CiAJCXN0YXR1cyA9IGFjbV9jZGNfbm90aWZ5KGFjbSwgVVNCX0NEQ19OT1RJRllfU0VSSUFMX1NU QVRFLAotCQkJCTAsICZhY20tPnNlcmlhbF9zdGF0ZSwgc2l6ZW9mKGFjbS0+c2VyaWFsX3N0YXRl KSk7CisJCQkJMCwgJnNlcmlhbF9zdGF0ZSwgc2l6ZW9mKGFjbS0+c2VyaWFsX3N0YXRlKSk7CiAJ fSBlbHNlIHsKIAkJYWNtLT5wZW5kaW5nID0gdHJ1ZTsKIAkJc3RhdHVzID0gMDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX2ZzLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9mcy5j CmluZGV4IGU4YmZlYWQ0NDliYi4uMDE5ZDQwNGRjNTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9nYWRnZXQvZl9mcy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX2ZzLmMKQEAgLTE2MTks MTEgKzE2MTksMTQgQEAgc3RhdGljIGludCBmZnNfZnVuY19lcHNfZW5hYmxlKHN0cnVjdCBmZnNf ZnVuY3Rpb24gKmZ1bmMpCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmZ1bmMtPmZmcy0+ZXBzX2xvY2ss IGZsYWdzKTsKIAlkbyB7CiAJCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZHM7CisJ CXN0cnVjdCB1c2Jfc3NfZXBfY29tcF9kZXNjcmlwdG9yICpjb21wX2Rlc2MgPSBOVUxMOworCQlp bnQgbmVlZHNfY29tcF9kZXNjID0gZmFsc2U7CiAJCWludCBkZXNjX2lkeDsKIAotCQlpZiAoZmZz LT5nYWRnZXQtPnNwZWVkID09IFVTQl9TUEVFRF9TVVBFUikKKwkJaWYgKGZmcy0+Z2FkZ2V0LT5z cGVlZCA9PSBVU0JfU1BFRURfU1VQRVIpIHsKIAkJCWRlc2NfaWR4ID0gMjsKLQkJZWxzZSBpZiAo ZmZzLT5nYWRnZXQtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIKQorCQkJbmVlZHNfY29tcF9kZXNj ID0gdHJ1ZTsKKwkJfSBlbHNlIGlmIChmZnMtPmdhZGdldC0+c3BlZWQgPT0gVVNCX1NQRUVEX0hJ R0gpCiAJCQlkZXNjX2lkeCA9IDE7CiAJCWVsc2UKIAkJCWRlc2NfaWR4ID0gMDsKQEAgLTE2NDAs NiArMTY0MywxNCBAQCBzdGF0aWMgaW50IGZmc19mdW5jX2Vwc19lbmFibGUoc3RydWN0IGZmc19m dW5jdGlvbiAqZnVuYykKIAogCQllcC0+ZXAtPmRyaXZlcl9kYXRhID0gZXA7CiAJCWVwLT5lcC0+ ZGVzYyA9IGRzOworCisJCWNvbXBfZGVzYyA9IChzdHJ1Y3QgdXNiX3NzX2VwX2NvbXBfZGVzY3Jp cHRvciAqKShkcyArCisJCQkJVVNCX0RUX0VORFBPSU5UX1NJWkUpOworCQllcC0+ZXAtPm1heGJ1 cnN0ID0gY29tcF9kZXNjLT5iTWF4QnVyc3QgKyAxOworCisJCWlmIChuZWVkc19jb21wX2Rlc2Mp CisJCQllcC0+ZXAtPmNvbXBfZGVzYyA9IGNvbXBfZGVzYzsKKwogCQlyZXQgPSB1c2JfZXBfZW5h YmxlKGVwLT5lcCk7CiAJCWlmIChsaWtlbHkoIXJldCkpIHsKIAkJCWVwZmlsZS0+ZXAgPSBlcDsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX3V2Yy5jIGIvZHJpdmVycy91c2IvZ2Fk Z2V0L2ZfdXZjLmMKaW5kZXggZTJhMWY1MGJkOTNjLi4xZjUxODJlM2EzNzAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvdXNiL2dhZGdldC9mX3V2Yy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX3V2 Yy5jCkBAIC02MTEsMTkgKzYxMSwyMSBAQCB1dmNfZnVuY3Rpb25fYmluZChzdHJ1Y3QgdXNiX2Nv bmZpZ3VyYXRpb24gKmMsIHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpCiAJCW1heF9wYWNrZXRfc2l6 ZSA9IHN0cmVhbWluZ19tYXhwYWNrZXQgLyAzOwogCX0KIAotCXV2Y19mc19zdHJlYW1pbmdfZXAu d01heFBhY2tldFNpemUgPSBtaW4oc3RyZWFtaW5nX21heHBhY2tldCwgMTAyM1UpOworCXV2Y19m c19zdHJlYW1pbmdfZXAud01heFBhY2tldFNpemUgPQorCQljcHVfdG9fbGUxNihtaW4oc3RyZWFt aW5nX21heHBhY2tldCwgMTAyM1UpKTsKIAl1dmNfZnNfc3RyZWFtaW5nX2VwLmJJbnRlcnZhbCA9 IHN0cmVhbWluZ19pbnRlcnZhbDsKIAotCXV2Y19oc19zdHJlYW1pbmdfZXAud01heFBhY2tldFNp emUgPSBtYXhfcGFja2V0X3NpemU7Ci0JdXZjX2hzX3N0cmVhbWluZ19lcC53TWF4UGFja2V0U2l6 ZSB8PSAoKG1heF9wYWNrZXRfbXVsdCAtIDEpIDw8IDExKTsKKwl1dmNfaHNfc3RyZWFtaW5nX2Vw LndNYXhQYWNrZXRTaXplID0KKwkJY3B1X3RvX2xlMTYobWF4X3BhY2tldF9zaXplIHwgKChtYXhf cGFja2V0X211bHQgLSAxKSA8PCAxMSkpOwogCXV2Y19oc19zdHJlYW1pbmdfZXAuYkludGVydmFs ID0gc3RyZWFtaW5nX2ludGVydmFsOwogCi0JdXZjX3NzX3N0cmVhbWluZ19lcC53TWF4UGFja2V0 U2l6ZSA9IG1heF9wYWNrZXRfc2l6ZTsKKwl1dmNfc3Nfc3RyZWFtaW5nX2VwLndNYXhQYWNrZXRT aXplID0gY3B1X3RvX2xlMTYobWF4X3BhY2tldF9zaXplKTsKIAl1dmNfc3Nfc3RyZWFtaW5nX2Vw LmJJbnRlcnZhbCA9IHN0cmVhbWluZ19pbnRlcnZhbDsKIAl1dmNfc3Nfc3RyZWFtaW5nX2NvbXAu Ym1BdHRyaWJ1dGVzID0gbWF4X3BhY2tldF9tdWx0IC0gMTsKIAl1dmNfc3Nfc3RyZWFtaW5nX2Nv bXAuYk1heEJ1cnN0ID0gc3RyZWFtaW5nX21heGJ1cnN0OwogCXV2Y19zc19zdHJlYW1pbmdfY29t cC53Qnl0ZXNQZXJJbnRlcnZhbCA9Ci0JCW1heF9wYWNrZXRfc2l6ZSAqIG1heF9wYWNrZXRfbXVs dCAqIHN0cmVhbWluZ19tYXhidXJzdDsKKwkJY3B1X3RvX2xlMTYobWF4X3BhY2tldF9zaXplICog bWF4X3BhY2tldF9tdWx0ICoKKwkJCSAgICAoc3RyZWFtaW5nX21heGJ1cnN0ICsgMSkpOwogCiAJ LyogQWxsb2NhdGUgZW5kcG9pbnRzLiAqLwogCWVwID0gdXNiX2VwX2F1dG9jb25maWcoY2Rldi0+ Z2FkZ2V0LCAmdXZjX2NvbnRyb2xfZXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC94 aGNpLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYwppbmRleCBjOTI4NjliM2FiNTYuLmFmMmJl MTQ3NmQ4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLmMKKysrIGIvZHJpdmVy cy91c2IvaG9zdC94aGNpLmMKQEAgLTE1MzMsMjAgKzE1MzMsMzMgQEAgaW50IHhoY2lfdXJiX2Rl cXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQog CXN0cnVjdCB4aGNpX3JpbmcgKmVwX3Jpbmc7CiAJc3RydWN0IHhoY2lfdmlydF9lcCAqZXA7CiAJ c3RydWN0IHhoY2lfY29tbWFuZCAqY29tbWFuZDsKKwlzdHJ1Y3QgeGhjaV92aXJ0X2RldmljZSAq dmRldjsKIAogCXhoY2kgPSBoY2RfdG9feGhjaShoY2QpOwogCXNwaW5fbG9ja19pcnFzYXZlKCZ4 aGNpLT5sb2NrLCBmbGFncyk7CiAJLyogTWFrZSBzdXJlIHRoZSBVUkIgaGFzbid0IGNvbXBsZXRl ZCBvciBiZWVuIHVubGlua2VkIGFscmVhZHkgKi8KIAlyZXQgPSB1c2JfaGNkX2NoZWNrX3VubGlu a191cmIoaGNkLCB1cmIsIHN0YXR1cyk7Ci0JaWYgKHJldCB8fCAhdXJiLT5oY3ByaXYpCisJaWYg KHJldCkKIAkJZ290byBkb25lOworCisJLyogZ2l2ZSBiYWNrIFVSQiBub3cgaWYgd2UgY2FuJ3Qg cXVldWUgaXQgZm9yIGNhbmNlbCAqLworCXZkZXYgPSB4aGNpLT5kZXZzW3VyYi0+ZGV2LT5zbG90 X2lkXTsKKwl1cmJfcHJpdiA9IHVyYi0+aGNwcml2OworCWlmICghdmRldiB8fCAhdXJiX3ByaXYp CisJCWdvdG8gZXJyX2dpdmViYWNrOworCisJZXBfaW5kZXggPSB4aGNpX2dldF9lbmRwb2ludF9p bmRleCgmdXJiLT5lcC0+ZGVzYyk7CisJZXAgPSAmdmRldi0+ZXBzW2VwX2luZGV4XTsKKwllcF9y aW5nID0geGhjaV91cmJfdG9fdHJhbnNmZXJfcmluZyh4aGNpLCB1cmIpOworCWlmICghZXAgfHwg IWVwX3JpbmcpCisJCWdvdG8gZXJyX2dpdmViYWNrOworCiAJdGVtcCA9IHJlYWRsKCZ4aGNpLT5v cF9yZWdzLT5zdGF0dXMpOwogCWlmICh0ZW1wID09IDB4ZmZmZmZmZmYgfHwgKHhoY2ktPnhoY19z dGF0ZSAmIFhIQ0lfU1RBVEVfSEFMVEVEKSkgewogCQl4aGNpX2RiZ190cmFjZSh4aGNpLCB0cmFj ZV94aGNpX2RiZ19jYW5jZWxfdXJiLAogCQkJCSJIVyBkaWVkLCBmcmVlaW5nIFRELiIpOwotCQl1 cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogCQlmb3IgKGkgPSB1cmJfcHJpdi0+dGRfY250OwotCQkg ICAgIGkgPCB1cmJfcHJpdi0+bGVuZ3RoICYmIHhoY2ktPmRldnNbdXJiLT5kZXYtPnNsb3RfaWRd OworCQkgICAgIGkgPCB1cmJfcHJpdi0+bGVuZ3RoOwogCQkgICAgIGkrKykgewogCQkJdGQgPSB1 cmJfcHJpdi0+dGRbaV07CiAJCQlpZiAoIWxpc3RfZW1wdHkoJnRkLT50ZF9saXN0KSkKQEAgLTE1 NTQsMjMgKzE1NjcsOSBAQCBpbnQgeGhjaV91cmJfZGVxdWV1ZShzdHJ1Y3QgdXNiX2hjZCAqaGNk LCBzdHJ1Y3QgdXJiICp1cmIsIGludCBzdGF0dXMpCiAJCQlpZiAoIWxpc3RfZW1wdHkoJnRkLT5j YW5jZWxsZWRfdGRfbGlzdCkpCiAJCQkJbGlzdF9kZWxfaW5pdCgmdGQtPmNhbmNlbGxlZF90ZF9s aXN0KTsKIAkJfQotCi0JCXVzYl9oY2RfdW5saW5rX3VyYl9mcm9tX2VwKGhjZCwgdXJiKTsKLQkJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmeGhjaS0+bG9jaywgZmxhZ3MpOwotCQl1c2JfaGNkX2dp dmViYWNrX3VyYihoY2QsIHVyYiwgLUVTSFVURE9XTik7Ci0JCXhoY2lfdXJiX2ZyZWVfcHJpdih4 aGNpLCB1cmJfcHJpdik7Ci0JCXJldHVybiByZXQ7CisJCWdvdG8gZXJyX2dpdmViYWNrOwogCX0K IAotCWVwX2luZGV4ID0geGhjaV9nZXRfZW5kcG9pbnRfaW5kZXgoJnVyYi0+ZXAtPmRlc2MpOwot CWVwID0gJnhoY2ktPmRldnNbdXJiLT5kZXYtPnNsb3RfaWRdLT5lcHNbZXBfaW5kZXhdOwotCWVw X3JpbmcgPSB4aGNpX3VyYl90b190cmFuc2Zlcl9yaW5nKHhoY2ksIHVyYik7Ci0JaWYgKCFlcF9y aW5nKSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gZG9uZTsKLQl9Ci0KLQl1cmJfcHJpdiA9 IHVyYi0+aGNwcml2OwogCWkgPSB1cmJfcHJpdi0+dGRfY250OwogCWlmIChpIDwgdXJiX3ByaXYt Pmxlbmd0aCkKIAkJeGhjaV9kYmdfdHJhY2UoeGhjaSwgdHJhY2VfeGhjaV9kYmdfY2FuY2VsX3Vy YiwKQEAgLTE2MDQsNiArMTYwMywxNCBAQCBpbnQgeGhjaV91cmJfZGVxdWV1ZShzdHJ1Y3QgdXNi X2hjZCAqaGNkLCBzdHJ1Y3QgdXJiICp1cmIsIGludCBzdGF0dXMpCiBkb25lOgogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnhoY2ktPmxvY2ssIGZsYWdzKTsKIAlyZXR1cm4gcmV0OworCitlcnJf Z2l2ZWJhY2s6CisJaWYgKHVyYl9wcml2KQorCQl4aGNpX3VyYl9mcmVlX3ByaXYoeGhjaSwgdXJi X3ByaXYpOworCXVzYl9oY2RfdW5saW5rX3VyYl9mcm9tX2VwKGhjZCwgdXJiKTsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZ4aGNpLT5sb2NrLCBmbGFncyk7CisJdXNiX2hjZF9naXZlYmFja191 cmIoaGNkLCB1cmIsIC1FU0hVVERPV04pOworCXJldHVybiByZXQ7CiB9CiAKIC8qIERyb3AgYW4g ZW5kcG9pbnQgZnJvbSBhIG5ldyBiYW5kd2lkdGggY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkZXZp Y2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2lkbW91c2UuYyBiL2RyaXZlcnMvdXNi L21pc2MvaWRtb3VzZS5jCmluZGV4IDRlMzg2ODNjNjUzYy4uNmQ0ZTc1Nzg1NzEwIDEwMDY0NAot LS0gYS9kcml2ZXJzL3VzYi9taXNjL2lkbW91c2UuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2lk bW91c2UuYwpAQCAtMzQ2LDYgKzM0Niw5IEBAIHN0YXRpYyBpbnQgaWRtb3VzZV9wcm9iZShzdHJ1 Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAogCWlmIChpZmFjZV9kZXNjLT5kZXNjLmJJbnRl cmZhY2VDbGFzcyAhPSAweDBBKQogCQlyZXR1cm4gLUVOT0RFVjsKIAorCWlmIChpZmFjZV9kZXNj LT5kZXNjLmJOdW1FbmRwb2ludHMgPCAxKQorCQlyZXR1cm4gLUVOT0RFVjsKKwogCS8qIGFsbG9j YXRlIG1lbW9yeSBmb3Igb3VyIGRldmljZSBzdGF0ZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLwogCWRl diA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLCBHRlBfS0VSTkVMKTsKIAlpZiAoZGV2ID09IE5VTEwp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2lvd2Fycmlvci5jIGIvZHJpdmVycy91c2Iv bWlzYy9pb3dhcnJpb3IuYwppbmRleCBlNGQxNzg3ODc0M2UuLjc3NTY5MGJlZDRjMCAxMDA2NDQK LS0tIGEvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYworKysgYi9kcml2ZXJzL3VzYi9taXNj L2lvd2Fycmlvci5jCkBAIC04MDQsNiArODA0LDE0IEBAIHN0YXRpYyBpbnQgaW93YXJyaW9yX3By b2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsCiAJCWdvdG8gZXJyb3I7CiAJfQog CisJaWYgKGRldi0+cHJvZHVjdF9pZCA9PSBVU0JfREVWSUNFX0lEX0NPREVNRVJDU19JT1c1Nikg eworCQlpZiAoIWRldi0+aW50X291dF9lbmRwb2ludCkgeworCQkJZGV2X2VycigmaW50ZXJmYWNl LT5kZXYsICJubyBpbnRlcnJ1cHQtb3V0IGVuZHBvaW50IGZvdW5kXG4iKTsKKwkJCXJldHZhbCA9 IC1FTk9ERVY7CisJCQlnb3RvIGVycm9yOworCQl9CisJfQorCiAJLyogd2UgaGF2ZSB0byBjaGVj ayB0aGUgcmVwb3J0X3NpemUgb2Z0ZW4sIHNvIHJlbWVtYmVyIGl0IGluIHRoZSBlbmRpYW5uZXNz IHN1aXRhYmxlIGZvciBvdXIgbWFjaGluZSAqLwogCWRldi0+cmVwb3J0X3NpemUgPSB1c2JfZW5k cG9pbnRfbWF4cChkZXYtPmludF9pbl9lbmRwb2ludCk7CiAJaWYgKChkZXYtPmludGVyZmFjZS0+ Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlciA9PSAwKSAmJgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy91c2IvbWlzYy91c3M3MjAuYyBiL2RyaXZlcnMvdXNiL21pc2MvdXNzNzIwLmMK aW5kZXggNDBlZjQwYWZmZTgzLi4zY2IwNWViNWYxZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L21pc2MvdXNzNzIwLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy91c3M3MjAuYwpAQCAtNzE1LDYg KzcxNSwxMSBAQCBzdGF0aWMgaW50IHVzczcyMF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAq aW50ZiwKIAogCWludGVyZmFjZSA9IGludGYtPmN1cl9hbHRzZXR0aW5nOwogCisJaWYgKGludGVy ZmFjZS0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMykgeworCQl1c2JfcHV0X2Rldih1c2JkZXYpOwor CQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAkvKgogCSAqIEFsbG9jYXRlIHBhcnBvcnQgaW50ZXJm YWNlIAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2RpZ2lfYWNjZWxlcG9y dC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2RpZ2lfYWNjZWxlcG9ydC5jCmluZGV4IGRmNWFlYzRm YWVlNi4uZTMyMjIyMTZhYmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZGlnaV9h Y2NlbGVwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2RpZ2lfYWNjZWxlcG9ydC5jCkBA IC0xNTAxLDcgKzE1MDEsNyBAQCBzdGF0aWMgaW50IGRpZ2lfcmVhZF9vb2JfY2FsbGJhY2soc3Ry dWN0IHVyYiAqdXJiKQogCQlyZXR1cm4gLTE7CiAKIAkvKiBoYW5kbGUgZWFjaCBvb2IgY29tbWFu ZCAqLwotCWZvciAoaSA9IDA7IGkgPCB1cmItPmFjdHVhbF9sZW5ndGggLSA0OyBpICs9IDQpIHsK Kwlmb3IgKGkgPSAwOyBpIDwgdXJiLT5hY3R1YWxfbGVuZ3RoIC0gMzsgaSArPSA0KSB7CiAJCW9w Y29kZSA9IGJ1ZltpXTsKIAkJbGluZSA9IGJ1ZltpICsgMV07CiAJCXN0YXR1cyA9IGJ1ZltpICsg Ml07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9pb190aS5jCmluZGV4IDFiNDI5MDhiZDhlYi4uZWExNTkxMTI3YWNiIDEwMDY0NAot LS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwv aW9fdGkuYwpAQCAtMTU1MCw2ICsxNTUwLDEyIEBAIHN0YXRpYyB2b2lkIGVkZ2VfaW50ZXJydXB0 X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKIAlmdW5jdGlvbiAgICA9IFRJVU1QX0dFVF9GVU5D X0ZST01fQ09ERShkYXRhWzBdKTsKIAlkZXZfZGJnKGRldiwgIiVzIC0gcG9ydF9udW1iZXIgJWQs IGZ1bmN0aW9uICVkLCBpbmZvIDB4JXhcbiIsIF9fZnVuY19fLAogCQlwb3J0X251bWJlciwgZnVu Y3Rpb24sIGRhdGFbMV0pOworCisJaWYgKHBvcnRfbnVtYmVyID49IGVkZ2Vfc2VyaWFsLT5zZXJp YWwtPm51bV9wb3J0cykgeworCQlkZXZfZXJyKGRldiwgImJhZCBwb3J0IG51bWJlciAlZFxuIiwg cG9ydF9udW1iZXIpOworCQlnb3RvIGV4aXQ7CisJfQorCiAJcG9ydCA9IGVkZ2Vfc2VyaWFsLT5z ZXJpYWwtPnBvcnRbcG9ydF9udW1iZXJdOwogCWVkZ2VfcG9ydCA9IHVzYl9nZXRfc2VyaWFsX3Bv cnRfZGF0YShwb3J0KTsKIAlpZiAoIWVkZ2VfcG9ydCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2Ivc2VyaWFsL29wdGlvbi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCmluZGV4IDJj NTM3NzUyMjZjNS4uZjU5OWExOTA0Zjg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwv b3B0aW9uLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCkBAIC0yMzQsNiArMjM0 LDE0IEBAIHN0YXRpYyB2b2lkIG9wdGlvbl9pbnN0YXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJi KTsKICNkZWZpbmUgQkFORFJJQ0hfUFJPRFVDVF8xMDEyCQkJMHgxMDEyCiAKICNkZWZpbmUgUVVB TENPTU1fVkVORE9SX0lECQkJMHgwNUM2CisvKiBUaGVzZSBRdWVjdGVsIHByb2R1Y3RzIHVzZSBR dWFsY29tbSdzIHZlbmRvciBJRCAqLworI2RlZmluZSBRVUVDVEVMX1BST0RVQ1RfVUMyMAkJCTB4 OTAwMworI2RlZmluZSBRVUVDVEVMX1BST0RVQ1RfVUMxNQkJCTB4OTA5MAorCisjZGVmaW5lIFFV RUNURUxfVkVORE9SX0lECQkJMHgyYzdjCisvKiBUaGVzZSBRdWVjdGVsIHByb2R1Y3RzIHVzZSBR dWVjdGVsJ3MgdmVuZG9yIElEICovCisjZGVmaW5lIFFVRUNURUxfUFJPRFVDVF9FQzIxCQkJMHgw MTIxCisjZGVmaW5lIFFVRUNURUxfUFJPRFVDVF9FQzI1CQkJMHgwMTI1CiAKICNkZWZpbmUgU0lF UlJBX1ZFTkRPUl9JRAkJCTB4MTE5OQogCkBAIC0xMTgwLDcgKzExODgsMTQgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG9wdGlvbl9pZHNbXSA9IHsKIAkgIC5kcml2ZXJfaW5m byA9IChrZXJuZWxfdWxvbmdfdCkmc2llcnJhX21jNzN4eF9ibGFja2xpc3QgfSwgLyogTUM3M3h4 ICovCiAJeyBVU0JfREVWSUNFX0lOVEVSRkFDRV9DTEFTUyhTSUVSUkFfVkVORE9SX0lELCAweDkw NDEsIDB4ZmYpLAogCSAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZzaWVycmFfbWM3 M3h4X2JsYWNrbGlzdCB9LCAvKiBNQzczMDUvTUM3MzU1ICovCi0JeyBVU0JfREVWSUNFKFFVQUxD T01NX1ZFTkRPUl9JRCwgMHg5MDAzKSwgLyogUXVlY3RlbCBVQzIwICovCisJLyogUXVlY3RlbCBw cm9kdWN0cyB1c2luZyBRdWFsY29tbSB2ZW5kb3IgSUQgKi8KKwl7IFVTQl9ERVZJQ0UoUVVBTENP TU1fVkVORE9SX0lELCBRVUVDVEVMX1BST0RVQ1RfVUMxNSl9LAorCXsgVVNCX0RFVklDRShRVUFM Q09NTV9WRU5ET1JfSUQsIFFVRUNURUxfUFJPRFVDVF9VQzIwKSwKKwkgIC5kcml2ZXJfaW5mbyA9 IChrZXJuZWxfdWxvbmdfdCkmbmV0X2ludGY0X2JsYWNrbGlzdCB9LAorCS8qIFF1ZWN0ZWwgcHJv ZHVjdHMgdXNpbmcgUXVlY3RlbCB2ZW5kb3IgSUQgKi8KKwl7IFVTQl9ERVZJQ0UoUVVFQ1RFTF9W RU5ET1JfSUQsIFFVRUNURUxfUFJPRFVDVF9FQzIxKSwKKwkgIC5kcml2ZXJfaW5mbyA9IChrZXJu ZWxfdWxvbmdfdCkmbmV0X2ludGY0X2JsYWNrbGlzdCB9LAorCXsgVVNCX0RFVklDRShRVUVDVEVM X1ZFTkRPUl9JRCwgUVVFQ1RFTF9QUk9EVUNUX0VDMjUpLAogCSAgLmRyaXZlcl9pbmZvID0gKGtl cm5lbF91bG9uZ190KSZuZXRfaW50ZjRfYmxhY2tsaXN0IH0sCiAJeyBVU0JfREVWSUNFKENNT1RF Q0hfVkVORE9SX0lELCBDTU9URUNIX1BST0RVQ1RfNjAwMSkgfSwKIAl7IFVTQl9ERVZJQ0UoQ01P VEVDSF9WRU5ET1JfSUQsIENNT1RFQ0hfUFJPRFVDVF9DTVVfMzAwKSB9LApkaWZmIC0tZ2l0IGEv ZHJpdmVycy91c2Ivc2VyaWFsL3Fjc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcWNzZXJp YWwuYwppbmRleCBlMDhhZTA1MDVhZDIuLjJmMWUxYWMxMzNkYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2Ivc2VyaWFsL3Fjc2VyaWFsLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3Fjc2VyaWFs LmMKQEAgLTE2Nyw2ICsxNjcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQg aWRfdGFibGVbXSA9IHsKIAl7REVWSUNFX1NXSSgweDQxM2MsIDB4ODFhOSl9LAkvKiBEZWxsIFdp cmVsZXNzIDU4MDhlIEdvYmkoVE0pIDRHIExURSBNb2JpbGUgQnJvYWRiYW5kIENhcmQgKi8KIAl7 REVWSUNFX1NXSSgweDQxM2MsIDB4ODFiMSl9LAkvKiBEZWxsIFdpcmVsZXNzIDU4MDllIEdvYmko VE0pIDRHIExURSBNb2JpbGUgQnJvYWRiYW5kIENhcmQgKi8KIAl7REVWSUNFX1NXSSgweDQxM2Ms IDB4ODFiMyl9LAkvKiBEZWxsIFdpcmVsZXNzIDU4MDllIEdvYmkoVE0pIDRHIExURSBNb2JpbGUg QnJvYWRiYW5kIENhcmQgKHJldjMpICovCisJe0RFVklDRV9TV0koMHg0MTNjLCAweDgxYjUpfSwJ LyogRGVsbCBXaXJlbGVzcyA1ODExZSBRREwgKi8KKwl7REVWSUNFX1NXSSgweDQxM2MsIDB4ODFi Nil9LAkvKiBEZWxsIFdpcmVsZXNzIDU4MTFlIFFETCAqLwogCiAJLyogSHVhd2VpIGRldmljZXMg Ki8KIAl7REVWSUNFX0hXSSgweDAzZjAsIDB4NTgxZCl9LAkvKiBIUCBsdDQxMTIgTFRFL0hTUEEr IEdvYmkgNEcgTW9kZW0gKEh1YXdlaSBtZTkwNmUpICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9zZXJpYWwvc2FmZV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zYWZlX3NlcmlhbC5j CmluZGV4IGIyZGZmMGYxNDc0My4uMjM2ZWE0M2Y3ODE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9zZXJpYWwvc2FmZV9zZXJpYWwuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc2FmZV9zZXJp YWwuYwpAQCAtMjA1LDYgKzIwNSwxMSBAQCBzdGF0aWMgdm9pZCBzYWZlX3Byb2Nlc3NfcmVhZF91 cmIoc3RydWN0IHVyYiAqdXJiKQogCWlmICghc2FmZSkKIAkJZ290byBvdXQ7CiAKKwlpZiAobGVu Z3RoIDwgMikgeworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJtYWxmb3JtZWQgcGFja2V0XG4iKTsK KwkJcmV0dXJuOworCX0KKwogCWZjcyA9IGZjc19jb21wdXRlMTAoZGF0YSwgbGVuZ3RoLCBDUkMx MF9JTklURkNTKTsKIAlpZiAoZmNzKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gYmFk IENSQyAleFxuIiwgX19mdW5jX18sIGZjcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNi Y29yZS93YS1oYy5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtaGMuYwppbmRleCAyNTJjN2Jk OTIxOGEuLmQwMTQ5NmZkMjdmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2Et aGMuYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS1oYy5jCkBAIC0zOSw2ICszOSw5IEBA IGludCB3YV9jcmVhdGUoc3RydWN0IHdhaGMgKndhLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZh Y2UsCiAJaW50IHJlc3VsdDsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaWZhY2UtPmRldjsKIAor CWlmIChpZmFjZS0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyA8IDMpCisJCXJl dHVybiAtRU5PREVWOworCiAJcmVzdWx0ID0gd2FfcnBpcGVzX2NyZWF0ZSh3YSk7CiAJaWYgKHJl c3VsdCA8IDApCiAJCWdvdG8gZXJyb3JfcnBpcGVzX2NyZWF0ZTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXdiL2h3YS1yYy5jIGIvZHJpdmVycy91d2IvaHdhLXJjLmMKaW5kZXggMDI1N2YzNWNmYjlk Li5lNzViYmU1YTEwY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXdiL2h3YS1yYy5jCisrKyBiL2Ry aXZlcnMvdXdiL2h3YS1yYy5jCkBAIC04MjUsNiArODI1LDkgQEAgc3RhdGljIGludCBod2FyY19w cm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2UsCiAJc3RydWN0IGh3YXJjICpod2FyYzsK IAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaWZhY2UtPmRldjsKIAorCWlmIChpZmFjZS0+Y3VyX2Fs dHNldHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyA8IDEpCisJCXJldHVybiAtRU5PREVWOworCiAJ cmVzdWx0ID0gLUVOT01FTTsKIAl1d2JfcmMgPSB1d2JfcmNfYWxsb2MoKTsKIAlpZiAodXdiX3Jj ID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL2kxNDgwL2RmdS91c2IuYyBiL2Ry aXZlcnMvdXdiL2kxNDgwL2RmdS91c2IuYwppbmRleCAyYmZjODQ2YWMwNzEuLjYzNDVlODU4MjJh NCAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvaTE0ODAvZGZ1L3VzYi5jCisrKyBiL2RyaXZlcnMv dXdiL2kxNDgwL2RmdS91c2IuYwpAQCAtMzYyLDYgKzM2Miw5IEBAIGludCBpMTQ4MF91c2JfcHJv YmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmlmYWNlLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9p ZCAqaWQpCiAJCQkJIHJlc3VsdCk7CiAJfQogCisJaWYgKGlmYWNlLT5jdXJfYWx0c2V0dGluZy0+ ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlyZXN1bHQgPSAt RU5PTUVNOwogCWkxNDgwX3VzYiA9IGt6YWxsb2Moc2l6ZW9mKCppMTQ4MF91c2IpLCBHRlBfS0VS TkVMKTsKIAlpZiAoaTE0ODBfdXNiID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlk ZW8vZmJkZXYveGVuLWZiZnJvbnQuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYveGVuLWZiZnJvbnQu YwppbmRleCA5MDEwMTRiYmM4MjEuLjIyNjNjNDI3Zjc4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi94ZW4tZmJmcm9udC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYveGVuLWZi ZnJvbnQuYwpAQCAtNjQ0LDcgKzY0NCw2IEBAIHN0YXRpYyB2b2lkIHhlbmZiX2JhY2tlbmRfY2hh bmdlZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAogCQlicmVhazsKIAogCWNhc2UgWGVuYnVz U3RhdGVJbml0V2FpdDoKLUluaXRXYWl0OgogCQl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVu YnVzU3RhdGVDb25uZWN0ZWQpOwogCQlicmVhazsKIApAQCAtNjU1LDcgKzY1NCw4IEBAIHN0YXRp YyB2b2lkIHhlbmZiX2JhY2tlbmRfY2hhbmdlZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAog CQkgKiBnZXQgQ29ubmVjdGVkIHR3aWNlIGhlcmUuCiAJCSAqLwogCQlpZiAoZGV2LT5zdGF0ZSAh PSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkKLQkJCWdvdG8gSW5pdFdhaXQ7IC8qIG5vIEluaXRXYWl0 IHNlZW4geWV0LCBmdWRnZSBpdCAqLworCQkJLyogbm8gSW5pdFdhaXQgc2VlbiB5ZXQsIGZ1ZGdl IGl0ICovCisJCQl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQp OwogCiAJCWlmICh4ZW5idXNfc2NhbmYoWEJUX05JTCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAog CQkJCSAicmVxdWVzdC11cGRhdGUiLCAiJWQiLCAmdmFsKSA8IDApCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxv b24uYwppbmRleCA0NDc1NzFkMTllY2IuLjBjYTRkNjUwZGM5YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYworKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFs bG9vbi5jCkBAIC0yMTgsMTIgKzIxOCwxNCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYmFsbG9vbl9z dGF0cyhzdHJ1Y3QgdmlydGlvX2JhbGxvb24gKnZiKQogCWFsbF92bV9ldmVudHMoZXZlbnRzKTsK IAlzaV9tZW1pbmZvKCZpKTsKIAorI2lmZGVmIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUwogCXVw ZGF0ZV9zdGF0KHZiLCBpZHgrKywgVklSVElPX0JBTExPT05fU19TV0FQX0lOLAogCQkJCXBhZ2Vz X3RvX2J5dGVzKGV2ZW50c1tQU1dQSU5dKSk7CiAJdXBkYXRlX3N0YXQodmIsIGlkeCsrLCBWSVJU SU9fQkFMTE9PTl9TX1NXQVBfT1VULAogCQkJCXBhZ2VzX3RvX2J5dGVzKGV2ZW50c1tQU1dQT1VU XSkpOwogCXVwZGF0ZV9zdGF0KHZiLCBpZHgrKywgVklSVElPX0JBTExPT05fU19NQUpGTFQsIGV2 ZW50c1tQR01BSkZBVUxUXSk7CiAJdXBkYXRlX3N0YXQodmIsIGlkeCsrLCBWSVJUSU9fQkFMTE9P Tl9TX01JTkZMVCwgZXZlbnRzW1BHRkFVTFRdKTsKKyNlbmRpZgogCXVwZGF0ZV9zdGF0KHZiLCBp ZHgrKywgVklSVElPX0JBTExPT05fU19NRU1GUkVFLAogCQkJCXBhZ2VzX3RvX2J5dGVzKGkuZnJl ZXJhbSkpOwogCXVwZGF0ZV9zdGF0KHZiLCBpZHgrKywgVklSVElPX0JBTExPT05fU19NRU1UT1Qs CkBAIC0zNDYsNiArMzQ4LDggQEAgc3RhdGljIGludCBpbml0X3ZxcyhzdHJ1Y3QgdmlydGlvX2Jh bGxvb24gKnZiKQogCQkgKiBQcmltZSB0aGlzIHZpcnRxdWV1ZSB3aXRoIG9uZSBidWZmZXIgc28g dGhlIGh5cGVydmlzb3IgY2FuCiAJCSAqIHVzZSBpdCB0byBzaWduYWwgdXMgbGF0ZXIgKGl0IGNh bid0IGJlIGJyb2tlbiB5ZXQhKS4KIAkJICovCisJCXVwZGF0ZV9iYWxsb29uX3N0YXRzKHZiKTsK KwogCQlzZ19pbml0X29uZSgmc2csIHZiLT5zdGF0cywgc2l6ZW9mIHZiLT5zdGF0cyk7CiAJCWlm ICh2aXJ0cXVldWVfYWRkX291dGJ1Zih2Yi0+c3RhdHNfdnEsICZzZywgMSwgdmIsIEdGUF9LRVJO RUwpCiAJCSAgICA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi94ZW4tYWNwaS1wcm9jZXNz b3IuYyBiL2RyaXZlcnMveGVuL3hlbi1hY3BpLXByb2Nlc3Nvci5jCmluZGV4IGI5NmUyMDdiZjI1 MC4uNTdkYmVlZjJkNjY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi94ZW4tYWNwaS1wcm9jZXNz b3IuYworKysgYi9kcml2ZXJzL3hlbi94ZW4tYWNwaS1wcm9jZXNzb3IuYwpAQCAtMjcsMTAgKzI3 LDEwIEBACiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc3lzY29yZV9vcHMu aD4KICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9wcm9jZXNzb3IuaD4K ICNpbmNsdWRlIDx4ZW4veGVuLmg+Ci0jaW5jbHVkZSA8eGVuL3hlbi1vcHMuaD4KICNpbmNsdWRl IDx4ZW4vaW50ZXJmYWNlL3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcmNhbGwu aD4KIApAQCAtNDY2LDE1ICs0NjYsMzMgQEAgc3RhdGljIGludCB4ZW5fdXBsb2FkX3Byb2Nlc3Nv cl9wbV9kYXRhKHZvaWQpCiAJcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IHhlbl9hY3BpX3By b2Nlc3Nvcl9yZXN1bWUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKLQkJCQkgICAgIHVuc2ln bmVkIGxvbmcgYWN0aW9uLCB2b2lkICpkYXRhKQorc3RhdGljIHZvaWQgeGVuX2FjcGlfcHJvY2Vz c29yX3Jlc3VtZV93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSkKIHsKKwlpbnQgcmM7 CisKIAliaXRtYXBfemVybyhhY3BpX2lkc19kb25lLCBucl9hY3BpX2JpdHMpOwotCXJldHVybiB4 ZW5fdXBsb2FkX3Byb2Nlc3Nvcl9wbV9kYXRhKCk7CisKKwlyYyA9IHhlbl91cGxvYWRfcHJvY2Vz c29yX3BtX2RhdGEoKTsKKwlpZiAocmMgIT0gMCkKKwkJcHJfaW5mbygiQUNQSSBkYXRhIHVwbG9h ZCBmYWlsZWQsIGVycm9yID0gJWRcbiIsIHJjKTsKK30KKworc3RhdGljIHZvaWQgeGVuX2FjcGlf cHJvY2Vzc29yX3Jlc3VtZSh2b2lkKQoreworCXN0YXRpYyBERUNMQVJFX1dPUksod3EsIHhlbl9h Y3BpX3Byb2Nlc3Nvcl9yZXN1bWVfd29ya2VyKTsKKworCS8qCisJICogeGVuX3VwbG9hZF9wcm9j ZXNzb3JfcG1fZGF0YSgpIGNhbGxzIG5vbi1hdG9taWMgY29kZS4KKwkgKiBIb3dldmVyLCB0aGUg Y29udGV4dCBmb3IgeGVuX2FjcGlfcHJvY2Vzc29yX3Jlc3VtZSBpcyBzeXNjb3JlCisJICogd2l0 aCBvbmx5IHRoZSBib290IENQVSBvbmxpbmUgYW5kIGluIGFuIGF0b21pYyBjb250ZXh0LgorCSAq CisJICogU28gZGVmZXIgdGhlIHVwbG9hZCBmb3Igc29tZSBwb2ludCBzYWZlci4KKwkgKi8KKwlz Y2hlZHVsZV93b3JrKCZ3cSk7CiB9CiAKLXN0cnVjdCBub3RpZmllcl9ibG9jayB4ZW5fYWNwaV9w cm9jZXNzb3JfcmVzdW1lX25iID0gewotCS5ub3RpZmllcl9jYWxsID0geGVuX2FjcGlfcHJvY2Vz c29yX3Jlc3VtZSwKK3N0YXRpYyBzdHJ1Y3Qgc3lzY29yZV9vcHMgeGFwX3N5c2NvcmVfb3BzID0g eworCS5yZXN1bWUJPSB4ZW5fYWNwaV9wcm9jZXNzb3JfcmVzdW1lLAogfTsKIAogc3RhdGljIGlu dCBfX2luaXQgeGVuX2FjcGlfcHJvY2Vzc29yX2luaXQodm9pZCkKQEAgLTUyNyw3ICs1NDUsNyBA QCBzdGF0aWMgaW50IF9faW5pdCB4ZW5fYWNwaV9wcm9jZXNzb3JfaW5pdCh2b2lkKQogCWlmIChy YykKIAkJZ290byBlcnJfdW5yZWdpc3RlcjsKIAotCXhlbl9yZXN1bWVfbm90aWZpZXJfcmVnaXN0 ZXIoJnhlbl9hY3BpX3Byb2Nlc3Nvcl9yZXN1bWVfbmIpOworCXJlZ2lzdGVyX3N5c2NvcmVfb3Bz KCZ4YXBfc3lzY29yZV9vcHMpOwogCiAJcmV0dXJuIDA7CiBlcnJfdW5yZWdpc3RlcjoKQEAgLTU0 Niw3ICs1NjQsNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgeGVuX2FjcGlfcHJvY2Vzc29yX2V4aXQo dm9pZCkKIHsKIAlpbnQgaTsKIAotCXhlbl9yZXN1bWVfbm90aWZpZXJfdW5yZWdpc3RlcigmeGVu X2FjcGlfcHJvY2Vzc29yX3Jlc3VtZV9uYik7CisJdW5yZWdpc3Rlcl9zeXNjb3JlX29wcygmeGFw X3N5c2NvcmVfb3BzKTsKIAlrZnJlZShhY3BpX2lkc19kb25lKTsKIAlrZnJlZShhY3BpX2lkX3By ZXNlbnQpOwogCWtmcmVlKGFjcGlfaWRfY3N0X3ByZXNlbnQpOwpkaWZmIC0tZ2l0IGEvZnMvY2Vw aC9pbm9kZS5jIGIvZnMvY2VwaC9pbm9kZS5jCmluZGV4IDEyMmQ2MDUwNmFiOS4uNTBlZmIyYTVk M2Y2IDEwMDY0NAotLS0gYS9mcy9jZXBoL2lub2RlLmMKKysrIGIvZnMvY2VwaC9pbm9kZS5jCkBA IC0xODc1LDEyICsxODc1LDYgQEAgaW50IGNlcGhfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpZiAoaW5vZGVfZGlydHlfZmxhZ3MpCiAJCV9fbWFy a19pbm9kZV9kaXJ0eShpbm9kZSwgaW5vZGVfZGlydHlfZmxhZ3MpOwogCi0JaWYgKGlhX3ZhbGlk ICYgQVRUUl9NT0RFKSB7Ci0JCWVyciA9IHBvc2l4X2FjbF9jaG1vZChpbm9kZSwgYXR0ci0+aWFf bW9kZSk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dF9wdXQ7Ci0JfQotCiAJaWYgKG1hc2spIHsK IAkJcmVxLT5yX2lub2RlID0gaW5vZGU7CiAJCWlob2xkKGlub2RlKTsKQEAgLTE4OTMsMTIgKzE4 ODcsMTYgQEAgaW50IGNlcGhfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBp YXR0ciAqYXR0cikKIAkgICAgIGNlcGhfY2FwX3N0cmluZyhkaXJ0aWVkKSwgbWFzayk7CiAKIAlj ZXBoX21kc2NfcHV0X3JlcXVlc3QocmVxKTsKLQlpZiAobWFzayAmIENFUEhfU0VUQVRUUl9TSVpF KQorCisJaWYgKGVyciA+PSAwICYmIChtYXNrICYgQ0VQSF9TRVRBVFRSX1NJWkUpKQogCQlfX2Nl cGhfZG9fcGVuZGluZ192bXRydW5jYXRlKGlub2RlKTsKKworCWlmIChlcnIgPj0gMCAmJiAoYXR0 ci0+aWFfdmFsaWQgJiBBVFRSX01PREUpKQorCQllcnIgPSBwb3NpeF9hY2xfY2htb2QoaW5vZGUs IGF0dHItPmlhX21vZGUpOworCiAJcmV0dXJuIGVycjsKIG91dDoKIAlzcGluX3VubG9jaygmY2kt PmlfY2VwaF9sb2NrKTsKLW91dF9wdXQ6CiAJY2VwaF9tZHNjX3B1dF9yZXF1ZXN0KHJlcSk7CiAJ cmV0dXJuIGVycjsKIH0KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2dsb2IuaCBiL2ZzL2NpZnMv Y2lmc2dsb2IuaAppbmRleCBiYTRiOTI4NDZjZjAuLjdmMmJlYjc1Nzk1NyAxMDA2NDQKLS0tIGEv ZnMvY2lmcy9jaWZzZ2xvYi5oCisrKyBiL2ZzL2NpZnMvY2lmc2dsb2IuaApAQCAtMjIzLDYgKzIy Myw3IEBAIHN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHsKIAkvKiB2ZXJpZnkgdGhlIG1l c3NhZ2UgKi8KIAlpbnQgKCpjaGVja19tZXNzYWdlKShjaGFyICosIHVuc2lnbmVkIGludCk7CiAJ Ym9vbCAoKmlzX29wbG9ja19icmVhaykoY2hhciAqLCBzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICop OworCWludCAoKmhhbmRsZV9jYW5jZWxsZWRfbWlkKShjaGFyICosIHN0cnVjdCBUQ1BfU2VydmVy X0luZm8gKik7CiAJdm9pZCAoKmRvd25ncmFkZV9vcGxvY2spKHN0cnVjdCBUQ1BfU2VydmVyX0lu Zm8gKiwKIAkJCQkJc3RydWN0IGNpZnNJbm9kZUluZm8gKiwgYm9vbCk7CiAJLyogcHJvY2VzcyB0 cmFuc2FjdGlvbjIgcmVzcG9uc2UgKi8KQEAgLTg3Miw3ICs4NzMsNiBAQCBzdHJ1Y3QgY2lmc190 Y29uIHsKIAlib29sIG5lZWRfcmVjb25uZWN0OjE7IC8qIGNvbm5lY3Rpb24gcmVzZXQsIHRpZCBu b3cgaW52YWxpZCAqLwogI2lmZGVmIENPTkZJR19DSUZTX1NNQjIKIAlib29sIHByaW50OjE7CQkv KiBzZXQgaWYgY29ubmVjdGlvbiB0byBwcmludGVyIHNoYXJlICovCi0JYm9vbCBiYWRfbmV0d29y a19uYW1lOjE7IC8qIHNldCBpZiByZXQgc3RhdHVzIFNUQVRVU19CQURfTkVUV09SS19OQU1FICov CiAJX19sZTMyIGNhcGFiaWxpdGllczsKIAlfX3UzMiBzaGFyZV9mbGFnczsKIAlfX3UzMiBtYXhp bWFsX2FjY2VzczsKQEAgLTEyNDYsMTIgKzEyNDYsMTkgQEAgc3RydWN0IG1pZF9xX2VudHJ5IHsK IAl2b2lkICpjYWxsYmFja19kYXRhOwkgIC8qIGdlbmVyYWwgcHVycG9zZSBwb2ludGVyIGZvciBj YWxsYmFjayAqLwogCXZvaWQgKnJlc3BfYnVmOwkJLyogcG9pbnRlciB0byByZWNlaXZlZCBTTUIg aGVhZGVyICovCiAJaW50IG1pZF9zdGF0ZTsJLyogd2lzaCB0aGlzIHdlcmUgZW51bSBidXQgY2Fu IG5vdCBwYXNzIHRvIHdhaXRfZXZlbnQgKi8KKwl1bnNpZ25lZCBpbnQgbWlkX2ZsYWdzOwogCV9f bGUxNiBjb21tYW5kOwkJLyogc21iIGNvbW1hbmQgY29kZSAqLwogCWJvb2wgbGFyZ2VfYnVmOjE7 CS8qIGlmIHZhbGlkIHJlc3BvbnNlLCBpcyBwb2ludGVyIHRvIGxhcmdlIGJ1ZiAqLwogCWJvb2wg bXVsdGlSc3A6MTsJLyogbXVsdGlwbGUgdHJhbnMyIHJlc3BvbnNlcyBmb3Igb25lIHJlcXVlc3Qg ICovCiAJYm9vbCBtdWx0aUVuZDoxOwkvKiBib3RoIHJlY2VpdmVkICovCiB9OwogCitzdHJ1Y3Qg Y2xvc2VfY2FuY2VsbGVkX29wZW4geworCXN0cnVjdCBjaWZzX2ZpZCAgICAgICAgIGZpZDsKKwlz dHJ1Y3QgY2lmc190Y29uICAgICAgICAqdGNvbjsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICB3 b3JrOworfTsKKwogLyoJTWFrZSBjb2RlIGluIHRyYW5zcG9ydC5jIGEgbGl0dGxlIGNsZWFuZXIg YnkgbW92aW5nCiAJdXBkYXRlIG9mIG9wdGlvbmFsIHN0YXRzIGludG8gZnVuY3Rpb24gYmVsb3cg Ki8KICNpZmRlZiBDT05GSUdfQ0lGU19TVEFUUzIKQEAgLTEzODMsNiArMTM5MCw5IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBmcmVlX2Rmc19pbmZvX2FycmF5KHN0cnVjdCBkZnNfaW5mbzNfcGFyYW0g KnBhcmFtLAogI2RlZmluZSAgIE1JRF9SRVNQT05TRV9NQUxGT1JNRUQgMHgxMAogI2RlZmluZSAg IE1JRF9TSFVURE9XTgkJIDB4MjAKIAorLyogRmxhZ3MgKi8KKyNkZWZpbmUgICBNSURfV0FJVF9D QU5DRUxMRUQJIDEgLyogQ2FuY2VsbGVkIHdoaWxlIHdhaXRpbmcgZm9yIHJlc3BvbnNlICovCisK IC8qIFR5cGVzIG9mIHJlc3BvbnNlIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFNlbmRSZWNlaXZlMiAq LwogI2RlZmluZSAgIENJRlNfTk9fQlVGRkVSICAgICAgICAwICAgIC8qIFJlc3BvbnNlIGJ1ZmZl ciBub3QgcmV0dXJuZWQgKi8KICNkZWZpbmUgICBDSUZTX1NNQUxMX0JVRkZFUiAgICAgMQpkaWZm IC0tZ2l0IGEvZnMvY2lmcy9jaWZzc21iLmMgYi9mcy9jaWZzL2NpZnNzbWIuYwppbmRleCAxYzI5 ODFmZGE2M2QuLjkwYzg1NTgzODNmNSAxMDA2NDQKLS0tIGEvZnMvY2lmcy9jaWZzc21iLmMKKysr IGIvZnMvY2lmcy9jaWZzc21iLmMKQEAgLTE0MjcsNiArMTQyNyw4IEBAIGNpZnNfcmVhZHZfZGlz Y2FyZChzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHN0cnVjdCBtaWRfcV9lbnRyeSAq bWlkKQogCiAJbGVuZ3RoID0gZGlzY2FyZF9yZW1haW5pbmdfZGF0YShzZXJ2ZXIpOwogCWRlcXVl dWVfbWlkKG1pZCwgcmRhdGEtPnJlc3VsdCk7CisJbWlkLT5yZXNwX2J1ZiA9IHNlcnZlci0+c21h bGxidWY7CisJc2VydmVyLT5zbWFsbGJ1ZiA9IE5VTEw7CiAJcmV0dXJuIGxlbmd0aDsKIH0KIApA QCAtMTU0Miw2ICsxNTQ0LDggQEAgY2lmc19yZWFkdl9yZWNlaXZlKHN0cnVjdCBUQ1BfU2VydmVy X0luZm8gKnNlcnZlciwgc3RydWN0IG1pZF9xX2VudHJ5ICptaWQpCiAJCXJldHVybiBjaWZzX3Jl YWR2X2Rpc2NhcmQoc2VydmVyLCBtaWQpOwogCiAJZGVxdWV1ZV9taWQobWlkLCBmYWxzZSk7CisJ bWlkLT5yZXNwX2J1ZiA9IHNlcnZlci0+c21hbGxidWY7CisJc2VydmVyLT5zbWFsbGJ1ZiA9IE5V TEw7CiAJcmV0dXJuIGxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvZnMvY2lmcy9jb25uZWN0LmMg Yi9mcy9jaWZzL2Nvbm5lY3QuYwppbmRleCBiOGM1YjU0MWM4MTMuLjk1YTk1NzNmNDllOSAxMDA2 NDQKLS0tIGEvZnMvY2lmcy9jb25uZWN0LmMKKysrIGIvZnMvY2lmcy9jb25uZWN0LmMKQEAgLTkx MSwxMCArOTExLDE5IEBAIGNpZnNfZGVtdWx0aXBsZXhfdGhyZWFkKHZvaWQgKnApCiAKIAkJc2Vy dmVyLT5sc3RycCA9IGppZmZpZXM7CiAJCWlmIChtaWRfZW50cnkgIT0gTlVMTCkgeworCQkJaWYg KChtaWRfZW50cnktPm1pZF9mbGFncyAmIE1JRF9XQUlUX0NBTkNFTExFRCkgJiYKKwkJCSAgICAg bWlkX2VudHJ5LT5taWRfc3RhdGUgPT0gTUlEX1JFU1BPTlNFX1JFQ0VJVkVEICYmCisJCQkJCXNl cnZlci0+b3BzLT5oYW5kbGVfY2FuY2VsbGVkX21pZCkKKwkJCQlzZXJ2ZXItPm9wcy0+aGFuZGxl X2NhbmNlbGxlZF9taWQoCisJCQkJCQkJbWlkX2VudHJ5LT5yZXNwX2J1ZiwKKwkJCQkJCQlzZXJ2 ZXIpOworCiAJCQlpZiAoIW1pZF9lbnRyeS0+bXVsdGlSc3AgfHwgbWlkX2VudHJ5LT5tdWx0aUVu ZCkKIAkJCQltaWRfZW50cnktPmNhbGxiYWNrKG1pZF9lbnRyeSk7Ci0JCX0gZWxzZSBpZiAoIXNl cnZlci0+b3BzLT5pc19vcGxvY2tfYnJlYWsgfHwKLQkJCSAgICFzZXJ2ZXItPm9wcy0+aXNfb3Bs b2NrX2JyZWFrKGJ1Ziwgc2VydmVyKSkgeworCQl9IGVsc2UgaWYgKHNlcnZlci0+b3BzLT5pc19v cGxvY2tfYnJlYWsgJiYKKwkJCSAgIHNlcnZlci0+b3BzLT5pc19vcGxvY2tfYnJlYWsoYnVmLCBz ZXJ2ZXIpKSB7CisJCQljaWZzX2RiZyhGWUksICJSZWNlaXZlZCBvcGxvY2sgYnJlYWtcbiIpOwor CQl9IGVsc2UgewogCQkJY2lmc19kYmcoVkZTLCAiTm8gdGFzayB0byB3YWtlLCB1bmtub3duIGZy YW1lIHJlY2VpdmVkISBOdW1NaWRzICVkXG4iLAogCQkJCSBhdG9taWNfcmVhZCgmbWlkQ291bnQp KTsKIAkJCWNpZnNfZHVtcF9tZW0oIlJlY2VpdmVkIERhdGEgaXM6ICIsIGJ1ZiwKZGlmZiAtLWdp dCBhL2ZzL2NpZnMvc21iMW9wcy5jIGIvZnMvY2lmcy9zbWIxb3BzLmMKaW5kZXggZTlhZDhkMzdi YjAwLi4yMzEyYTg1NjM0NTMgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvc21iMW9wcy5jCisrKyBiL2Zz L2NpZnMvc21iMW9wcy5jCkBAIC0xMDE1LDYgKzEwMTUsMTUgQEAgY2lmc19kaXJfbmVlZHNfY2xv c2Uoc3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUpCiAJcmV0dXJuICFjZmlsZS0+c3JjaF9pbmYu ZW5kT2ZTZWFyY2ggJiYgIWNmaWxlLT5pbnZhbGlkSGFuZGxlOwogfQogCitzdGF0aWMgYm9vbAor Y2lmc19jYW5fZWNobyhzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIpCit7CisJaWYgKHNl cnZlci0+dGNwU3RhdHVzID09IENpZnNHb29kKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBm YWxzZTsKK30KKwogc3RydWN0IHNtYl92ZXJzaW9uX29wZXJhdGlvbnMgc21iMV9vcGVyYXRpb25z ID0gewogCS5zZW5kX2NhbmNlbCA9IHNlbmRfbnRfY2FuY2VsLAogCS5jb21wYXJlX2ZpZHMgPSBj aWZzX2NvbXBhcmVfZmlkcywKQEAgLTEwNDgsNiArMTA1Nyw3IEBAIHN0cnVjdCBzbWJfdmVyc2lv bl9vcGVyYXRpb25zIHNtYjFfb3BlcmF0aW9ucyA9IHsKIAkuZ2V0X2Rmc19yZWZlciA9IENJRlNH ZXRERlNSZWZlciwKIAkucWZzX3Rjb24gPSBjaWZzX3Fmc190Y29uLAogCS5pc19wYXRoX2FjY2Vz c2libGUgPSBjaWZzX2lzX3BhdGhfYWNjZXNzaWJsZSwKKwkuY2FuX2VjaG8gPSBjaWZzX2Nhbl9l Y2hvLAogCS5xdWVyeV9wYXRoX2luZm8gPSBjaWZzX3F1ZXJ5X3BhdGhfaW5mbywKIAkucXVlcnlf ZmlsZV9pbmZvID0gY2lmc19xdWVyeV9maWxlX2luZm8sCiAJLmdldF9zcnZfaW51bSA9IGNpZnNf Z2V0X3Nydl9pbnVtLApkaWZmIC0tZ2l0IGEvZnMvY2lmcy9zbWIybWlzYy5jIGIvZnMvY2lmcy9z bWIybWlzYy5jCmluZGV4IDU3OTY0NWQ4N2Y5My4uOWY5NGM5MWVkNDU4IDEwMDY0NAotLS0gYS9m cy9jaWZzL3NtYjJtaXNjLmMKKysrIGIvZnMvY2lmcy9zbWIybWlzYy5jCkBAIC02MDcsMyArNjA3 LDQ3IEBAIHNtYjJfaXNfdmFsaWRfb3Bsb2NrX2JyZWFrKGNoYXIgKmJ1ZmZlciwgc3RydWN0IFRD UF9TZXJ2ZXJfSW5mbyAqc2VydmVyKQogCWNpZnNfZGJnKEZZSSwgIkNhbiBub3QgcHJvY2VzcyBv cGxvY2sgYnJlYWsgZm9yIG5vbi1leGlzdGVudCBjb25uZWN0aW9uXG4iKTsKIAlyZXR1cm4gZmFs c2U7CiB9CisKK3ZvaWQKK3NtYjJfY2FuY2VsbGVkX2Nsb3NlX2ZpZChzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCit7CisJc3RydWN0IGNsb3NlX2NhbmNlbGxlZF9vcGVuICpjYW5jZWxsZWQgPSBj b250YWluZXJfb2Yod29yaywKKwkJCQkJc3RydWN0IGNsb3NlX2NhbmNlbGxlZF9vcGVuLCB3b3Jr KTsKKworCWNpZnNfZGJnKFZGUywgIkNsb3NlIHVubWF0Y2hlZCBvcGVuXG4iKTsKKworCVNNQjJf Y2xvc2UoMCwgY2FuY2VsbGVkLT50Y29uLCBjYW5jZWxsZWQtPmZpZC5wZXJzaXN0ZW50X2ZpZCwK KwkJICAgY2FuY2VsbGVkLT5maWQudm9sYXRpbGVfZmlkKTsKKwljaWZzX3B1dF90Y29uKGNhbmNl bGxlZC0+dGNvbik7CisJa2ZyZWUoY2FuY2VsbGVkKTsKK30KKworaW50CitzbWIyX2hhbmRsZV9j YW5jZWxsZWRfbWlkKGNoYXIgKmJ1ZmZlciwgc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVy KQoreworCXN0cnVjdCBzbWIyX2hkciAqaGRyID0gKHN0cnVjdCBzbWIyX2hkciAqKWJ1ZmZlcjsK KwlzdHJ1Y3Qgc21iMl9jcmVhdGVfcnNwICpyc3AgPSAoc3RydWN0IHNtYjJfY3JlYXRlX3JzcCAq KWJ1ZmZlcjsKKwlzdHJ1Y3QgY2lmc190Y29uICp0Y29uOworCXN0cnVjdCBjbG9zZV9jYW5jZWxs ZWRfb3BlbiAqY2FuY2VsbGVkOworCisJaWYgKGhkci0+Q29tbWFuZCAhPSBTTUIyX0NSRUFURSB8 fCBoZHItPlN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykKKwkJcmV0dXJuIDA7CisKKwljYW5jZWxs ZWQgPSBremFsbG9jKHNpemVvZigqY2FuY2VsbGVkKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjYW5j ZWxsZWQpCisJCXJldHVybiAtRU5PTUVNOworCisJdGNvbiA9IHNtYjJfZmluZF9zbWJfdGNvbihz ZXJ2ZXIsIGhkci0+U2Vzc2lvbklkLCBoZHItPlRyZWVJZCk7CisJaWYgKCF0Y29uKSB7CisJCWtm cmVlKGNhbmNlbGxlZCk7CisJCXJldHVybiAtRU5PRU5UOworCX0KKworCWNhbmNlbGxlZC0+Zmlk LnBlcnNpc3RlbnRfZmlkID0gcnNwLT5QZXJzaXN0ZW50RmlsZUlkOworCWNhbmNlbGxlZC0+Zmlk LnZvbGF0aWxlX2ZpZCA9IHJzcC0+Vm9sYXRpbGVGaWxlSWQ7CisJY2FuY2VsbGVkLT50Y29uID0g dGNvbjsKKwlJTklUX1dPUksoJmNhbmNlbGxlZC0+d29yaywgc21iMl9jYW5jZWxsZWRfY2xvc2Vf ZmlkKTsKKwlxdWV1ZV93b3JrKGNpZnNpb2Rfd3EsICZjYW5jZWxsZWQtPndvcmspOworCisJcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9mcy9jaWZzL3NtYjJvcHMuYyBiL2ZzL2NpZnMvc21iMm9w cy5jCmluZGV4IDZjZmM0ZWEzZjNhMS4uOWUxZWY0NThiZTMwIDEwMDY0NAotLS0gYS9mcy9jaWZz L3NtYjJvcHMuYworKysgYi9mcy9jaWZzL3NtYjJvcHMuYwpAQCAtMTE2Myw2ICsxMTYzLDcgQEAg c3RydWN0IHNtYl92ZXJzaW9uX29wZXJhdGlvbnMgc21iMjBfb3BlcmF0aW9ucyA9IHsKIAkuY2xl YXJfc3RhdHMgPSBzbWIyX2NsZWFyX3N0YXRzLAogCS5wcmludF9zdGF0cyA9IHNtYjJfcHJpbnRf c3RhdHMsCiAJLmlzX29wbG9ja19icmVhayA9IHNtYjJfaXNfdmFsaWRfb3Bsb2NrX2JyZWFrLAor CS5oYW5kbGVfY2FuY2VsbGVkX21pZCA9IHNtYjJfaGFuZGxlX2NhbmNlbGxlZF9taWQsCiAJLmRv d25ncmFkZV9vcGxvY2sgPSBzbWIyX2Rvd25ncmFkZV9vcGxvY2ssCiAJLm5lZWRfbmVnID0gc21i Ml9uZWVkX25lZywKIAkubmVnb3RpYXRlID0gc21iMl9uZWdvdGlhdGUsCkBAIC0xMjM5LDYgKzEy NDAsNyBAQCBzdHJ1Y3Qgc21iX3ZlcnNpb25fb3BlcmF0aW9ucyBzbWIyMV9vcGVyYXRpb25zID0g ewogCS5jbGVhcl9zdGF0cyA9IHNtYjJfY2xlYXJfc3RhdHMsCiAJLnByaW50X3N0YXRzID0gc21i Ml9wcmludF9zdGF0cywKIAkuaXNfb3Bsb2NrX2JyZWFrID0gc21iMl9pc192YWxpZF9vcGxvY2tf YnJlYWssCisJLmhhbmRsZV9jYW5jZWxsZWRfbWlkID0gc21iMl9oYW5kbGVfY2FuY2VsbGVkX21p ZCwKIAkuZG93bmdyYWRlX29wbG9jayA9IHNtYjJfZG93bmdyYWRlX29wbG9jaywKIAkubmVlZF9u ZWcgPSBzbWIyX25lZWRfbmVnLAogCS5uZWdvdGlhdGUgPSBzbWIyX25lZ290aWF0ZSwKQEAgLTEz MTYsNiArMTMxOCw3IEBAIHN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMwX29wZXJh dGlvbnMgPSB7CiAJLnByaW50X3N0YXRzID0gc21iMl9wcmludF9zdGF0cywKIAkuZHVtcF9zaGFy ZV9jYXBzID0gc21iMl9kdW1wX3NoYXJlX2NhcHMsCiAJLmlzX29wbG9ja19icmVhayA9IHNtYjJf aXNfdmFsaWRfb3Bsb2NrX2JyZWFrLAorCS5oYW5kbGVfY2FuY2VsbGVkX21pZCA9IHNtYjJfaGFu ZGxlX2NhbmNlbGxlZF9taWQsCiAJLmRvd25ncmFkZV9vcGxvY2sgPSBzbWIyX2Rvd25ncmFkZV9v cGxvY2ssCiAJLm5lZWRfbmVnID0gc21iMl9uZWVkX25lZywKIAkubmVnb3RpYXRlID0gc21iMl9u ZWdvdGlhdGUsCmRpZmYgLS1naXQgYS9mcy9jaWZzL3NtYjJwZHUuYyBiL2ZzL2NpZnMvc21iMnBk dS5jCmluZGV4IDIyNTZhOTkyMzg5Zi4uYmRjNWZiNGNiMTgxIDEwMDY0NAotLS0gYS9mcy9jaWZz L3NtYjJwZHUuYworKysgYi9mcy9jaWZzL3NtYjJwZHUuYwpAQCAtODQzLDkgKzg0Myw2IEBAIFNN QjJfdGNvbihjb25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc19zZXMgKnNlcywgY29u c3QgY2hhciAqdHJlZSwKIAllbHNlCiAJCXJldHVybiAtRUlPOwogCi0JaWYgKHRjb24gJiYgdGNv bi0+YmFkX25ldHdvcmtfbmFtZSkKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KIAl1bmNfcGF0aCA9IGtt YWxsb2MoTUFYX1NIQVJFTkFNRV9MRU5HVEggKiAyLCBHRlBfS0VSTkVMKTsKIAlpZiAodW5jX3Bh dGggPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC04NTcsNiArODU0LDEwIEBAIFNNQjJf dGNvbihjb25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc19zZXMgKnNlcywgY29uc3Qg Y2hhciAqdHJlZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCisJLyogU01CMiBUUkVFX0NPTk5F Q1QgcmVxdWVzdCBtdXN0IGJlIGNhbGxlZCB3aXRoIFRyZWVJZCA9PSAwICovCisJaWYgKHRjb24p CisJCXRjb24tPnRpZCA9IDA7CisKIAlyYyA9IHNtYWxsX3NtYjJfaW5pdChTTUIyX1RSRUVfQ09O TkVDVCwgdGNvbiwgKHZvaWQgKiopICZyZXEpOwogCWlmIChyYykgewogCQlrZnJlZSh1bmNfcGF0 aCk7CkBAIC05MzUsOCArOTM2LDYgQEAgU01CMl90Y29uKGNvbnN0IHVuc2lnbmVkIGludCB4aWQs IHN0cnVjdCBjaWZzX3NlcyAqc2VzLCBjb25zdCBjaGFyICp0cmVlLAogdGNvbl9lcnJvcl9leGl0 OgogCWlmIChyc3AtPmhkci5TdGF0dXMgPT0gU1RBVFVTX0JBRF9ORVRXT1JLX05BTUUpIHsKIAkJ Y2lmc19kYmcoVkZTLCAiQkFEX05FVFdPUktfTkFNRTogJXNcbiIsIHRyZWUpOwotCQlpZiAodGNv bikKLQkJCXRjb24tPmJhZF9uZXR3b3JrX25hbWUgPSB0cnVlOwogCX0KIAlnb3RvIHRjb25fZXhp dDsKIH0KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvc21iMnByb3RvLmggYi9mcy9jaWZzL3NtYjJwcm90 by5oCmluZGV4IDk4ZDliMzZlYTNlMi4uMzBiYzZkZDIwMmIzIDEwMDY0NAotLS0gYS9mcy9jaWZz L3NtYjJwcm90by5oCisrKyBiL2ZzL2NpZnMvc21iMnByb3RvLmgKQEAgLTQ3LDYgKzQ3LDEwIEBA IGV4dGVybiBzdHJ1Y3QgbWlkX3FfZW50cnkgKnNtYjJfc2V0dXBfcmVxdWVzdChzdHJ1Y3QgY2lm c19zZXMgKnNlcywKIAkJCSAgICAgIHN0cnVjdCBzbWJfcnFzdCAqcnFzdCk7CiBleHRlcm4gc3Ry dWN0IG1pZF9xX2VudHJ5ICpzbWIyX3NldHVwX2FzeW5jX3JlcXVlc3QoCiAJCQlzdHJ1Y3QgVENQ X1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHN0cnVjdCBzbWJfcnFzdCAqcnFzdCk7CitleHRlcm4gc3Ry dWN0IGNpZnNfc2VzICpzbWIyX2ZpbmRfc21iX3NlcyhzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpz ZXJ2ZXIsCisJCQkJCSAgIF9fdTY0IHNlc19pZCk7CitleHRlcm4gc3RydWN0IGNpZnNfdGNvbiAq c21iMl9maW5kX3NtYl90Y29uKHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlciwKKwkJCQkJ CV9fdTY0IHNlc19pZCwgX191MzIgIHRpZCk7CiBleHRlcm4gaW50IHNtYjJfY2FsY19zaWduYXR1 cmUoc3RydWN0IHNtYl9ycXN0ICpycXN0LAogCQkJCXN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNl cnZlcik7CiBleHRlcm4gaW50IHNtYjNfY2FsY19zaWduYXR1cmUoc3RydWN0IHNtYl9ycXN0ICpy cXN0LApAQCAtMTUxLDYgKzE1NSw5IEBAIGV4dGVybiBpbnQgU01CMl9zZXRfY29tcHJlc3Npb24o Y29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbiwKIGV4dGVybiBp bnQgU01CMl9vcGxvY2tfYnJlYWsoY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNf dGNvbiAqdGNvbiwKIAkJCSAgICAgY29uc3QgdTY0IHBlcnNpc3RlbnRfZmlkLCBjb25zdCB1NjQg dm9sYXRpbGVfZmlkLAogCQkJICAgICBjb25zdCBfX3U4IG9wbG9ja19sZXZlbCk7CitleHRlcm4g aW50IHNtYjJfaGFuZGxlX2NhbmNlbGxlZF9taWQoY2hhciAqYnVmZmVyLAorCQkJCQlzdHJ1Y3Qg VENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIpOwordm9pZCBzbWIyX2NhbmNlbGxlZF9jbG9zZV9maWQo c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKIGV4dGVybiBpbnQgU01CMl9RRlNfaW5mbyhjb25z dCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCQkJIHU2NCBwZXJz aXN0ZW50X2ZpbGVfaWQsIHU2NCB2b2xhdGlsZV9maWxlX2lkLAogCQkJIHN0cnVjdCBrc3RhdGZz ICpGU0RhdGEpOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9zbWIydHJhbnNwb3J0LmMgYi9mcy9jaWZz L3NtYjJ0cmFuc3BvcnQuYwppbmRleCA1OWM3NDhjZTg3MmYuLjllOGExYzk3ZGNkMCAxMDA2NDQK LS0tIGEvZnMvY2lmcy9zbWIydHJhbnNwb3J0LmMKKysrIGIvZnMvY2lmcy9zbWIydHJhbnNwb3J0 LmMKQEAgLTExNSwyMiArMTE1LDY4IEBAIHNtYjNfY3J5cHRvX3NoYXNoX2FsbG9jYXRlKHN0cnVj dCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKIH0KIAogc3RhdGljIHN0cnVjdCBjaWZzX3NlcyAq Ci1zbWIyX2ZpbmRfc21iX3NlcyhzdHJ1Y3Qgc21iMl9oZHIgKnNtYjJoZHIsIHN0cnVjdCBUQ1Bf U2VydmVyX0luZm8gKnNlcnZlcikKK3NtYjJfZmluZF9zbWJfc2VzX3VubG9ja2VkKHN0cnVjdCBU Q1BfU2VydmVyX0luZm8gKnNlcnZlciwgX191NjQgc2VzX2lkKQogewogCXN0cnVjdCBjaWZzX3Nl cyAqc2VzOwogCi0Jc3Bpbl9sb2NrKCZjaWZzX3RjcF9zZXNfbG9jayk7CiAJbGlzdF9mb3JfZWFj aF9lbnRyeShzZXMsICZzZXJ2ZXItPnNtYl9zZXNfbGlzdCwgc21iX3Nlc19saXN0KSB7Ci0JCWlm IChzZXMtPlN1aWQgIT0gc21iMmhkci0+U2Vzc2lvbklkKQorCQlpZiAoc2VzLT5TdWlkICE9IHNl c19pZCkKIAkJCWNvbnRpbnVlOwotCQlzcGluX3VubG9jaygmY2lmc190Y3Bfc2VzX2xvY2spOwog CQlyZXR1cm4gc2VzOwogCX0KKworCXJldHVybiBOVUxMOworfQorCitzdHJ1Y3QgY2lmc19zZXMg Kgorc21iMl9maW5kX3NtYl9zZXMoc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyLCBfX3U2 NCBzZXNfaWQpCit7CisJc3RydWN0IGNpZnNfc2VzICpzZXM7CisKKwlzcGluX2xvY2soJmNpZnNf dGNwX3Nlc19sb2NrKTsKKwlzZXMgPSBzbWIyX2ZpbmRfc21iX3Nlc191bmxvY2tlZChzZXJ2ZXIs IHNlc19pZCk7CiAJc3Bpbl91bmxvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKIAorCXJldHVybiBz ZXM7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY2lmc190Y29uICoKK3NtYjJfZmluZF9zbWJfc2Vzc190 Y29uX3VubG9ja2VkKHN0cnVjdCBjaWZzX3NlcyAqc2VzLCBfX3UzMiAgdGlkKQoreworCXN0cnVj dCBjaWZzX3Rjb24gKnRjb247CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRjb24sICZzZXMtPnRj b25fbGlzdCwgdGNvbl9saXN0KSB7CisJCWlmICh0Y29uLT50aWQgIT0gdGlkKQorCQkJY29udGlu dWU7CisJCSsrdGNvbi0+dGNfY291bnQ7CisJCXJldHVybiB0Y29uOworCX0KKwogCXJldHVybiBO VUxMOwogfQogCisvKgorICogT2J0YWluIHRjb24gY29ycmVzcG9uZGluZyB0byB0aGUgdGlkIGlu IHRoZSBnaXZlbgorICogY2lmc19zZXMKKyAqLworCitzdHJ1Y3QgY2lmc190Y29uICoKK3NtYjJf ZmluZF9zbWJfdGNvbihzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIF9fdTY0IHNlc19p ZCwgX191MzIgdGlkKQoreworCXN0cnVjdCBjaWZzX3NlcyAqc2VzOworCXN0cnVjdCBjaWZzX3Rj b24gKnRjb247CisKKwlzcGluX2xvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKKwlzZXMgPSBzbWIy X2ZpbmRfc21iX3Nlc191bmxvY2tlZChzZXJ2ZXIsIHNlc19pZCk7CisJaWYgKCFzZXMpIHsKKwkJ c3Bpbl91bmxvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCXRj b24gPSBzbWIyX2ZpbmRfc21iX3Nlc3NfdGNvbl91bmxvY2tlZChzZXMsIHRpZCk7CisJc3Bpbl91 bmxvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKKworCXJldHVybiB0Y29uOworfQogCiBpbnQKIHNt YjJfY2FsY19zaWduYXR1cmUoc3RydWN0IHNtYl9ycXN0ICpycXN0LCBzdHJ1Y3QgVENQX1NlcnZl cl9JbmZvICpzZXJ2ZXIpCkBAIC0xNDMsNyArMTg5LDcgQEAgc21iMl9jYWxjX3NpZ25hdHVyZShz dHJ1Y3Qgc21iX3Jxc3QgKnJxc3QsIHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKIAlz dHJ1Y3Qgc21iMl9oZHIgKnNtYjJfcGR1ID0gKHN0cnVjdCBzbWIyX2hkciAqKWlvdlswXS5pb3Zf YmFzZTsKIAlzdHJ1Y3QgY2lmc19zZXMgKnNlczsKIAotCXNlcyA9IHNtYjJfZmluZF9zbWJfc2Vz KHNtYjJfcGR1LCBzZXJ2ZXIpOworCXNlcyA9IHNtYjJfZmluZF9zbWJfc2VzKHNlcnZlciwgc21i Ml9wZHUtPlNlc3Npb25JZCk7CiAJaWYgKCFzZXMpIHsKIAkJY2lmc19kYmcoVkZTLCAiJXM6IENv dWxkIG5vdCBmaW5kIHNlc3Npb25cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CkBAIC0zMTQs NyArMzYwLDcgQEAgc21iM19jYWxjX3NpZ25hdHVyZShzdHJ1Y3Qgc21iX3Jxc3QgKnJxc3QsIHN0 cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKIAlzdHJ1Y3Qgc21iMl9oZHIgKnNtYjJfcGR1 ID0gKHN0cnVjdCBzbWIyX2hkciAqKWlvdlswXS5pb3ZfYmFzZTsKIAlzdHJ1Y3QgY2lmc19zZXMg KnNlczsKIAotCXNlcyA9IHNtYjJfZmluZF9zbWJfc2VzKHNtYjJfcGR1LCBzZXJ2ZXIpOworCXNl cyA9IHNtYjJfZmluZF9zbWJfc2VzKHNlcnZlciwgc21iMl9wZHUtPlNlc3Npb25JZCk7CiAJaWYg KCFzZXMpIHsKIAkJY2lmc19kYmcoVkZTLCAiJXM6IENvdWxkIG5vdCBmaW5kIHNlc3Npb25cbiIs IF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9mcy9jaWZzL3RyYW5zcG9ydC5j IGIvZnMvY2lmcy90cmFuc3BvcnQuYwppbmRleCBmM2U0ZTNiNzJkZjIuLmVjYWY3MmJkNjBkYSAx MDA2NDQKLS0tIGEvZnMvY2lmcy90cmFuc3BvcnQuYworKysgYi9mcy9jaWZzL3RyYW5zcG9ydC5j CkBAIC03NzMsOSArNzczLDExIEBAIFNlbmRSZWNlaXZlMihjb25zdCB1bnNpZ25lZCBpbnQgeGlk LCBzdHJ1Y3QgY2lmc19zZXMgKnNlcywKIAogCXJjID0gd2FpdF9mb3JfcmVzcG9uc2Uoc2VzLT5z ZXJ2ZXIsIG1pZFEpOwogCWlmIChyYyAhPSAwKSB7CisJCWNpZnNfZGJnKEZZSSwgIkNhbmNlbGxp bmcgd2FpdCBmb3IgbWlkICVsbHVcbiIsCW1pZFEtPm1pZCk7CiAJCXNlbmRfY2FuY2VsKHNlcy0+ c2VydmVyLCBidWYsIG1pZFEpOwogCQlzcGluX2xvY2soJkdsb2JhbE1pZF9Mb2NrKTsKIAkJaWYg KG1pZFEtPm1pZF9zdGF0ZSA9PSBNSURfUkVRVUVTVF9TVUJNSVRURUQpIHsKKwkJCW1pZFEtPm1p ZF9mbGFncyB8PSBNSURfV0FJVF9DQU5DRUxMRUQ7CiAJCQltaWRRLT5jYWxsYmFjayA9IERlbGV0 ZU1pZFFFbnRyeTsKIAkJCXNwaW5fdW5sb2NrKCZHbG9iYWxNaWRfTG9jayk7CiAJCQljaWZzX3Nt YWxsX2J1Zl9yZWxlYXNlKGJ1Zik7CmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmMK aW5kZXggOGNiN2ZjNGFiNzg5Li5iNWFmNmEyNTZjZjcgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYwor KysgYi9mcy9leGVjLmMKQEAgLTIwNSw4ICsyMDUsMjYgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpn ZXRfYXJnX3BhZ2Uoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgdW5zaWduZWQgbG9uZyBwb3Ms CiAKIAlpZiAod3JpdGUpIHsKIAkJdW5zaWduZWQgbG9uZyBzaXplID0gYnBybS0+dm1hLT52bV9l bmQgLSBicHJtLT52bWEtPnZtX3N0YXJ0OworCQl1bnNpZ25lZCBsb25nIHB0cl9zaXplOwogCQlz dHJ1Y3QgcmxpbWl0ICpybGltOwogCisJCS8qCisJCSAqIFNpbmNlIHRoZSBzdGFjayB3aWxsIGhv bGQgcG9pbnRlcnMgdG8gdGhlIHN0cmluZ3MsIHdlCisJCSAqIG11c3QgYWNjb3VudCBmb3IgdGhl bSBhcyB3ZWxsLgorCQkgKgorCQkgKiBUaGUgc2l6ZSBjYWxjdWxhdGlvbiBpcyB0aGUgZW50aXJl IHZtYSB3aGlsZSBlYWNoIGFyZyBwYWdlIGlzCisJCSAqIGJ1aWx0LCBzbyBlYWNoIHRpbWUgd2Ug Z2V0IGhlcmUgaXQncyBjYWxjdWxhdGluZyBob3cgZmFyIGl0CisJCSAqIGlzIGN1cnJlbnRseSAo cmF0aGVyIHRoYW4gZWFjaCBjYWxsIGJlaW5nIGp1c3QgdGhlIG5ld2x5CisJCSAqIGFkZGVkIHNp emUgZnJvbSB0aGUgYXJnIHBhZ2UpLiAgQXMgYSByZXN1bHQsIHdlIG5lZWQgdG8KKwkJICogYWx3 YXlzIGFkZCB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHBvaW50ZXJzLCBzbyB0aGF0IG9uIHRoZQor CQkgKiBsYXN0IGNhbGwgdG8gZ2V0X2FyZ19wYWdlKCkgd2UnbGwgYWN0dWFsbHkgaGF2ZSB0aGUg ZW50aXJlCisJCSAqIGNvcnJlY3Qgc2l6ZS4KKwkJICovCisJCXB0cl9zaXplID0gKGJwcm0tPmFy Z2MgKyBicHJtLT5lbnZjKSAqIHNpemVvZih2b2lkICopOworCQlpZiAocHRyX3NpemUgPiBVTE9O R19NQVggLSBzaXplKQorCQkJZ290byBmYWlsOworCQlzaXplICs9IHB0cl9zaXplOworCiAJCWFj Y3RfYXJnX3NpemUoYnBybSwgc2l6ZSAvIFBBR0VfU0laRSk7CiAKIAkJLyoKQEAgLTIyNCwxMyAr MjQyLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqZ2V0X2FyZ19wYWdlKHN0cnVjdCBsaW51eF9i aW5wcm0gKmJwcm0sIHVuc2lnbmVkIGxvbmcgcG9zLAogCQkgKiAgICB0byB3b3JrIGZyb20uCiAJ CSAqLwogCQlybGltID0gY3VycmVudC0+c2lnbmFsLT5ybGltOwotCQlpZiAoc2l6ZSA+IEFDQ0VT U19PTkNFKHJsaW1bUkxJTUlUX1NUQUNLXS5ybGltX2N1cikgLyA0KSB7Ci0JCQlwdXRfcGFnZShw YWdlKTsKLQkJCXJldHVybiBOVUxMOwotCQl9CisJCWlmIChzaXplID4gQUNDRVNTX09OQ0Uocmxp bVtSTElNSVRfU1RBQ0tdLnJsaW1fY3VyKSAvIDQpCisJCQlnb3RvIGZhaWw7CiAJfQogCiAJcmV0 dXJuIHBhZ2U7CisKK2ZhaWw6CisJcHV0X3BhZ2UocGFnZSk7CisJcmV0dXJuIE5VTEw7CiB9CiAK IHN0YXRpYyB2b2lkIHB1dF9hcmdfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKZGlmZiAtLWdpdCBh L2ZzL2V4dDQvaW5saW5lLmMgYi9mcy9leHQ0L2lubGluZS5jCmluZGV4IGZhODlmN2IyM2FiOS4u MmE3MDg2MGE4YWQzIDEwMDY0NAotLS0gYS9mcy9leHQ0L2lubGluZS5jCisrKyBiL2ZzL2V4dDQv aW5saW5lLmMKQEAgLTExNTgsMTAgKzExNTgsOSBAQCBzdGF0aWMgaW50IGV4dDRfZmluaXNoX2Nv bnZlcnRfaW5saW5lX2RpcihoYW5kbGVfdCAqaGFuZGxlLAogCXNldF9idWZmZXJfdXB0b2RhdGUo ZGlyX2Jsb2NrKTsKIAllcnIgPSBleHQ0X2hhbmRsZV9kaXJ0eV9kaXJlbnRfbm9kZShoYW5kbGUs IGlub2RlLCBkaXJfYmxvY2spOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gZXJy OwogCXNldF9idWZmZXJfdmVyaWZpZWQoZGlyX2Jsb2NrKTsKLW91dDoKLQlyZXR1cm4gZXJyOwor CXJldHVybiBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiB9CiAKIHN0YXRp YyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLApk aWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jCmluZGV4IGZmOGZk ODVlZGNmZS4uZDZjOWNhY2Y4ZmVkIDEwMDY0NAotLS0gYS9mcy9leHQ0L3hhdHRyLmMKKysrIGIv ZnMvZXh0NC94YXR0ci5jCkBAIC0xMzksMzEgKzEzOSwyNiBAQCBzdGF0aWMgX19sZTMyIGV4dDRf eGF0dHJfYmxvY2tfY3N1bShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogfQogCiBzdGF0aWMgaW50IGV4 dDRfeGF0dHJfYmxvY2tfY3N1bV92ZXJpZnkoc3RydWN0IGlub2RlICppbm9kZSwKLQkJCQkJc2Vj dG9yX3QgYmxvY2tfbnIsCi0JCQkJCXN0cnVjdCBleHQ0X3hhdHRyX2hlYWRlciAqaGRyKQorCQkJ CQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogewotCWlmIChleHQ0X2hhc19tZXRhZGF0YV9jc3Vt KGlub2RlLT5pX3NiKSAmJgotCSAgICAoaGRyLT5oX2NoZWNrc3VtICE9IGV4dDRfeGF0dHJfYmxv Y2tfY3N1bShpbm9kZSwgYmxvY2tfbnIsIGhkcikpKQotCQlyZXR1cm4gMDsKLQlyZXR1cm4gMTsK LX0KLQotc3RhdGljIHZvaWQgZXh0NF94YXR0cl9ibG9ja19jc3VtX3NldChzdHJ1Y3QgaW5vZGUg Kmlub2RlLAotCQkJCSAgICAgIHNlY3Rvcl90IGJsb2NrX25yLAotCQkJCSAgICAgIHN0cnVjdCBl eHQ0X3hhdHRyX2hlYWRlciAqaGRyKQotewotCWlmICghZXh0NF9oYXNfbWV0YWRhdGFfY3N1bShp bm9kZS0+aV9zYikpCi0JCXJldHVybjsKKwlzdHJ1Y3QgZXh0NF94YXR0cl9oZWFkZXIgKmhkciA9 IEJIRFIoYmgpOworCWludCByZXQgPSAxOwogCi0JaGRyLT5oX2NoZWNrc3VtID0gZXh0NF94YXR0 cl9ibG9ja19jc3VtKGlub2RlLCBibG9ja19uciwgaGRyKTsKKwlpZiAoZXh0NF9oYXNfbWV0YWRh dGFfY3N1bShpbm9kZS0+aV9zYikpIHsKKwkJbG9ja19idWZmZXIoYmgpOworCQlyZXQgPSAoaGRy LT5oX2NoZWNrc3VtID09IGV4dDRfeGF0dHJfYmxvY2tfY3N1bShpbm9kZSwKKwkJCQkJCQliaC0+ Yl9ibG9ja25yLCBoZHIpKTsKKwkJdW5sb2NrX2J1ZmZlcihiaCk7CisJfQorCXJldHVybiByZXQ7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGV4dDRfaGFuZGxlX2RpcnR5X3hhdHRyX2Jsb2NrKGhh bmRsZV90ICpoYW5kbGUsCi0JCQkJCQlzdHJ1Y3QgaW5vZGUgKmlub2RlLAotCQkJCQkJc3RydWN0 IGJ1ZmZlcl9oZWFkICpiaCkKK3N0YXRpYyB2b2lkIGV4dDRfeGF0dHJfYmxvY2tfY3N1bV9zZXQo c3RydWN0IGlub2RlICppbm9kZSwKKwkJCQkgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQog ewotCWV4dDRfeGF0dHJfYmxvY2tfY3N1bV9zZXQoaW5vZGUsIGJoLT5iX2Jsb2NrbnIsIEJIRFIo YmgpKTsKLQlyZXR1cm4gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBpbm9kZSwg YmgpOworCWlmIChleHQ0X2hhc19tZXRhZGF0YV9jc3VtKGlub2RlLT5pX3NiKSkKKwkJQkhEUihi aCktPmhfY2hlY2tzdW0gPSBleHQ0X3hhdHRyX2Jsb2NrX2NzdW0oaW5vZGUsCisJCQkJCQliaC0+ Yl9ibG9ja25yLCBCSERSKGJoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IHhh dHRyX2hhbmRsZXIgKgpAQCAtMjI0LDcgKzIxOSw3IEBAIGV4dDRfeGF0dHJfY2hlY2tfYmxvY2so c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKIAlpZiAoQkhEUihi aCktPmhfbWFnaWMgIT0gY3B1X3RvX2xlMzIoRVhUNF9YQVRUUl9NQUdJQykgfHwKIAkgICAgQkhE UihiaCktPmhfYmxvY2tzICE9IGNwdV90b19sZTMyKDEpKQogCQlyZXR1cm4gLUVJTzsKLQlpZiAo IWV4dDRfeGF0dHJfYmxvY2tfY3N1bV92ZXJpZnkoaW5vZGUsIGJoLT5iX2Jsb2NrbnIsIEJIRFIo YmgpKSkKKwlpZiAoIWV4dDRfeGF0dHJfYmxvY2tfY3N1bV92ZXJpZnkoaW5vZGUsIGJoKSkKIAkJ cmV0dXJuIC1FSU87CiAJZXJyb3IgPSBleHQ0X3hhdHRyX2NoZWNrX25hbWVzKEJGSVJTVChiaCks IGJoLT5iX2RhdGEgKyBiaC0+Yl9zaXplLAogCQkJCSAgICAgICBiaC0+Yl9kYXRhKTsKQEAgLTU2 OCwyMyArNTYzLDIyIEBAIGV4dDRfeGF0dHJfcmVsZWFzZV9ibG9jayhoYW5kbGVfdCAqaGFuZGxl LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQlsZTMyX2FkZF9jcHUoJkJIRFIoYmgpLT5oX3JlZmNv dW50LCAtMSk7CiAJCWlmIChjZSkKIAkJCW1iX2NhY2hlX2VudHJ5X3JlbGVhc2UoY2UpOworCQll eHQ0X3hhdHRyX2Jsb2NrX2NzdW1fc2V0KGlub2RlLCBiaCk7CiAJCS8qCiAJCSAqIEJld2FyZSBv ZiB0aGlzIHVnbGluZXNzOiBSZWxlYXNpbmcgb2YgeGF0dHIgYmxvY2sgcmVmZXJlbmNlcwogCQkg KiBmcm9tIGRpZmZlcmVudCBpbm9kZXMgY2FuIHJhY2UgYW5kIHNvIHdlIGhhdmUgdG8gcHJvdGVj dAogCQkgKiBmcm9tIGEgcmFjZSB3aGVyZSBzb21lb25lIGVsc2UgZnJlZXMgdGhlIGJsb2NrIChh bmQgcmVsZWFzZXMKIAkJICogaXRzIGpvdXJuYWxfaGVhZCkgYmVmb3JlIHdlIGFyZSBkb25lIGRp cnR5aW5nIHRoZSBidWZmZXIuIEluCiAJCSAqIG5vam91cm5hbCBtb2RlIHRoaXMgcmFjZSBpcyBo YXJtbGVzcyBhbmQgd2UgYWN0dWFsbHkgY2Fubm90Ci0JCSAqIGNhbGwgZXh0NF9oYW5kbGVfZGly dHlfeGF0dHJfYmxvY2soKSB3aXRoIGxvY2tlZCBidWZmZXIgYXMKKwkJICogY2FsbCBleHQ0X2hh bmRsZV9kaXJ0eV9tZXRhZGF0YSgpIHdpdGggbG9ja2VkIGJ1ZmZlciBhcwogCQkgKiB0aGF0IGZ1 bmN0aW9uIGNhbiBjYWxsIHN5bmNfZGlydHlfYnVmZmVyKCkgc28gZm9yIHRoYXQgY2FzZQogCQkg KiB3ZSBoYW5kbGUgdGhlIGRpcnR5aW5nIGFmdGVyIHVubG9ja2luZyB0aGUgYnVmZmVyLgogCQkg Ki8KIAkJaWYgKGV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSkpCi0JCQllcnJvciA9IGV4dDRfaGFu ZGxlX2RpcnR5X3hhdHRyX2Jsb2NrKGhhbmRsZSwgaW5vZGUsCi0JCQkJCQkJICAgICAgYmgpOwor CQkJZXJyb3IgPSBleHQ0X2hhbmRsZV9kaXJ0eV9tZXRhZGF0YShoYW5kbGUsIGlub2RlLCBiaCk7 CiAJCXVubG9ja19idWZmZXIoYmgpOwogCQlpZiAoIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSkp Ci0JCQllcnJvciA9IGV4dDRfaGFuZGxlX2RpcnR5X3hhdHRyX2Jsb2NrKGhhbmRsZSwgaW5vZGUs Ci0JCQkJCQkJICAgICAgYmgpOworCQkJZXJyb3IgPSBleHQ0X2hhbmRsZV9kaXJ0eV9tZXRhZGF0 YShoYW5kbGUsIGlub2RlLCBiaCk7CiAJCWlmIChJU19TWU5DKGlub2RlKSkKIAkJCWV4dDRfaGFu ZGxlX3N5bmMoaGFuZGxlKTsKIAkJZHF1b3RfZnJlZV9ibG9jayhpbm9kZSwgRVhUNF9DMkIoRVhU NF9TQihpbm9kZS0+aV9zYiksIDEpKTsKQEAgLTgxMiwxMyArODA2LDE0IEBAIGV4dDRfeGF0dHJf YmxvY2tfc2V0KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQkJZXh0 NF94YXR0cl9jYWNoZV9pbnNlcnQoZXh0NF9tYl9jYWNoZSwKIAkJCQkJYnMtPmJoKTsKIAkJCX0K KwkJCWV4dDRfeGF0dHJfYmxvY2tfY3N1bV9zZXQoaW5vZGUsIGJzLT5iaCk7CiAJCQl1bmxvY2tf YnVmZmVyKGJzLT5iaCk7CiAJCQlpZiAoZXJyb3IgPT0gLUVJTykKIAkJCQlnb3RvIGJhZF9ibG9j azsKIAkJCWlmICghZXJyb3IpCi0JCQkJZXJyb3IgPSBleHQ0X2hhbmRsZV9kaXJ0eV94YXR0cl9i bG9jayhoYW5kbGUsCi0JCQkJCQkJCSAgICAgIGlub2RlLAotCQkJCQkJCQkgICAgICBicy0+Ymgp OworCQkJCWVycm9yID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLAorCQkJCQkJ CQkgICBpbm9kZSwKKwkJCQkJCQkJICAgYnMtPmJoKTsKIAkJCWlmIChlcnJvcikKIAkJCQlnb3Rv IGNsZWFudXA7CiAJCQlnb3RvIGluc2VydGVkOwpAQCAtODg3LDEwICs4ODIsMTEgQEAgZXh0NF94 YXR0cl9ibG9ja19zZXQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJ CQlsZTMyX2FkZF9jcHUoJkJIRFIobmV3X2JoKS0+aF9yZWZjb3VudCwgMSk7CiAJCQkJZWFfYmRl YnVnKG5ld19iaCwgInJldXNpbmc7IHJlZmNvdW50IG5vdz0lZCIsCiAJCQkJCWxlMzJfdG9fY3B1 KEJIRFIobmV3X2JoKS0+aF9yZWZjb3VudCkpOworCQkJCWV4dDRfeGF0dHJfYmxvY2tfY3N1bV9z ZXQoaW5vZGUsIG5ld19iaCk7CiAJCQkJdW5sb2NrX2J1ZmZlcihuZXdfYmgpOwotCQkJCWVycm9y ID0gZXh0NF9oYW5kbGVfZGlydHlfeGF0dHJfYmxvY2soaGFuZGxlLAotCQkJCQkJCQkgICAgICBp bm9kZSwKLQkJCQkJCQkJICAgICAgbmV3X2JoKTsKKwkJCQllcnJvciA9IGV4dDRfaGFuZGxlX2Rp cnR5X21ldGFkYXRhKGhhbmRsZSwKKwkJCQkJCQkJICAgaW5vZGUsCisJCQkJCQkJCSAgIG5ld19i aCk7CiAJCQkJaWYgKGVycm9yKQogCQkJCQlnb3RvIGNsZWFudXBfZHF1b3Q7CiAJCQl9CkBAIC05 NDUsMTEgKzk0MSwxMiBAQCBleHQ0X3hhdHRyX2Jsb2NrX3NldChoYW5kbGVfdCAqaGFuZGxlLCBz dHJ1Y3QgaW5vZGUgKmlub2RlLAogCQkJCWdvdG8gZ2V0YmxrX2ZhaWxlZDsKIAkJCX0KIAkJCW1l bWNweShuZXdfYmgtPmJfZGF0YSwgcy0+YmFzZSwgbmV3X2JoLT5iX3NpemUpOworCQkJZXh0NF94 YXR0cl9ibG9ja19jc3VtX3NldChpbm9kZSwgbmV3X2JoKTsKIAkJCXNldF9idWZmZXJfdXB0b2Rh dGUobmV3X2JoKTsKIAkJCXVubG9ja19idWZmZXIobmV3X2JoKTsKIAkJCWV4dDRfeGF0dHJfY2Fj aGVfaW5zZXJ0KGV4dDRfbWJfY2FjaGUsIG5ld19iaCk7Ci0JCQllcnJvciA9IGV4dDRfaGFuZGxl X2RpcnR5X3hhdHRyX2Jsb2NrKGhhbmRsZSwKLQkJCQkJCQkgICAgICBpbm9kZSwgbmV3X2JoKTsK KwkJCWVycm9yID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBpbm9kZSwKKwkJ CQkJCQkgICBuZXdfYmgpOwogCQkJaWYgKGVycm9yKQogCQkJCWdvdG8gY2xlYW51cDsKIAkJfQpk aWZmIC0tZ2l0IGEvZnMvbmZzL25mczRwcm9jLmMgYi9mcy9uZnMvbmZzNHByb2MuYwppbmRleCA2 NjZlYWRiMDQ0N2MuLjE4ZDMxNGIzZjgwZiAxMDA2NDQKLS0tIGEvZnMvbmZzL25mczRwcm9jLmMK KysrIGIvZnMvbmZzL25mczRwcm9jLmMKQEAgLTE5ODAsOCArMTk4MCw2IEBAIHN0YXRpYyBpbnQg bmZzNF9vcGVuZGF0YV9hY2Nlc3Moc3RydWN0IHJwY19jcmVkICpjcmVkLAogCWlmICgobWFzayAm IH5jYWNoZS5tYXNrICYgKE1BWV9SRUFEIHwgTUFZX0VYRUMpKSA9PSAwKQogCQlyZXR1cm4gMDsK IAotCS8qIGV2ZW4gdGhvdWdoIE9QRU4gc3VjY2VlZGVkLCBhY2Nlc3MgaXMgZGVuaWVkLiBDbG9z ZSB0aGUgZmlsZSAqLwotCW5mczRfY2xvc2Vfc3RhdGUoc3RhdGUsIGZtb2RlKTsKIAlyZXR1cm4g LUVBQ0NFUzsKIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9vYmplY3QuaCBi L2luY2x1ZGUvZHJtL3R0bS90dG1fb2JqZWN0LmgKaW5kZXggZWQ5NTNmOThmMGUxLi4xNDg3MDEx ZmUwNTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fb2JqZWN0LmgKKysrIGIvaW5j bHVkZS9kcm0vdHRtL3R0bV9vYmplY3QuaApAQCAtMjI5LDYgKzIyOSw4IEBAIGV4dGVybiB2b2lk IHR0bV9iYXNlX29iamVjdF91bnJlZihzdHJ1Y3QgdHRtX2Jhc2Vfb2JqZWN0ICoqcF9iYXNlKTsK ICAqIEByZWZfdHlwZTogVGhlIHR5cGUgb2YgcmVmZXJlbmNlLgogICogQGV4aXN0ZWQ6IFVwb24g Y29tcGxldGlvbiwgaW5kaWNhdGVzIHRoYXQgYW4gaWRlbnRpY2FsIHJlZmVyZW5jZSBvYmplY3QK ICAqIGFscmVhZHkgZXhpc3RlZCwgYW5kIHRoZSByZWZjb3VudCB3YXMgdXBwZWQgb24gdGhhdCBv YmplY3QgaW5zdGVhZC4KKyAqIEByZXF1aXJlX2V4aXN0ZWQ6IEZhaWwgd2l0aCAtRVBFUk0gaWYg YW4gaWRlbnRpY2FsIHJlZiBvYmplY3QgZGlkbid0CisgKiBhbHJlYWR5IGV4aXN0LgogICoKICAq IENoZWNrcyB0aGF0IHRoZSBiYXNlIG9iamVjdCBpcyBzaGFyZWFibGUgYW5kIGFkZHMgYSByZWYg b2JqZWN0IHRvIGl0LgogICoKQEAgLTI0Myw3ICsyNDUsOCBAQCBleHRlcm4gdm9pZCB0dG1fYmFz ZV9vYmplY3RfdW5yZWYoc3RydWN0IHR0bV9iYXNlX29iamVjdCAqKnBfYmFzZSk7CiAgKi8KIGV4 dGVybiBpbnQgdHRtX3JlZl9vYmplY3RfYWRkKHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRmaWxl LAogCQkJICAgICAgc3RydWN0IHR0bV9iYXNlX29iamVjdCAqYmFzZSwKLQkJCSAgICAgIGVudW0g dHRtX3JlZl90eXBlIHJlZl90eXBlLCBib29sICpleGlzdGVkKTsKKwkJCSAgICAgIGVudW0gdHRt X3JlZl90eXBlIHJlZl90eXBlLCBib29sICpleGlzdGVkLAorCQkJICAgICAgYm9vbCByZXF1aXJl X2V4aXN0ZWQpOwogCiBleHRlcm4gYm9vbCB0dG1fcmVmX29iamVjdF9leGlzdHMoc3RydWN0IHR0 bV9vYmplY3RfZmlsZSAqdGZpbGUsCiAJCQkJICBzdHJ1Y3QgdHRtX2Jhc2Vfb2JqZWN0ICpiYXNl KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2VybmVsLmggYi9pbmNsdWRlL2xpbnV4L2tl cm5lbC5oCmluZGV4IDJhOGJmNGRiODRlOS4uODJmYzk1ZTI2YTQxIDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L2tlcm5lbC5oCisrKyBiL2luY2x1ZGUvbGludXgva2VybmVsLmgKQEAgLTE4Mywy OCArMTgzLDMxIEBAIGV4dGVybiBpbnQgX2NvbmRfcmVzY2hlZCh2b2lkKTsKIAogI2RlZmluZSBt aWdodF9zbGVlcF9pZihjb25kKSBkbyB7IGlmIChjb25kKSBtaWdodF9zbGVlcCgpOyB9IHdoaWxl ICgwKQogCi0vKgotICogYWJzKCkgaGFuZGxlcyB1bnNpZ25lZCBhbmQgc2lnbmVkIGxvbmdzLCBp bnRzLCBzaG9ydHMgYW5kIGNoYXJzLiAgRm9yIGFsbAotICogaW5wdXQgdHlwZXMgYWJzKCkgcmV0 dXJucyBhIHNpZ25lZCBsb25nLgotICogYWJzKCkgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciA2NC1i aXQgdHlwZXMgKHM2NCwgdTY0LCBsb25nIGxvbmcpIC0gdXNlIGFiczY0KCkKLSAqIGZvciB0aG9z ZS4KKy8qKgorICogYWJzIC0gcmV0dXJuIGFic29sdXRlIHZhbHVlIG9mIGFuIGFyZ3VtZW50Cisg KiBAeDogdGhlIHZhbHVlLiAgSWYgaXQgaXMgdW5zaWduZWQgdHlwZSwgaXQgaXMgY29udmVydGVk IHRvIHNpZ25lZCB0eXBlIGZpcnN0LgorICogICAgIGNoYXIgaXMgdHJlYXRlZCBhcyBpZiBpdCB3 YXMgc2lnbmVkIChyZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgcmVhbGx5IGlzKQorICogICAgIGJ1 dCB0aGUgbWFjcm8ncyByZXR1cm4gdHlwZSBpcyBwcmVzZXJ2ZWQgYXMgY2hhci4KKyAqCisgKiBS ZXR1cm46IGFuIGFic29sdXRlIHZhbHVlIG9mIHguCiAgKi8KLSNkZWZpbmUgYWJzKHgpICh7CQkJ CQkJXAotCQlsb25nIHJldDsJCQkJCVwKLQkJaWYgKHNpemVvZih4KSA9PSBzaXplb2YobG9uZykp IHsJCVwKLQkJCWxvbmcgX194ID0gKHgpOwkJCQlcCi0JCQlyZXQgPSAoX194IDwgMCkgPyAtX194 IDogX194OwkJXAotCQl9IGVsc2UgewkJCQkJXAotCQkJaW50IF9feCA9ICh4KTsJCQkJXAotCQkJ cmV0ID0gKF9feCA8IDApID8gLV9feCA6IF9feDsJCVwKLQkJfQkJCQkJCVwKLQkJcmV0OwkJCQkJ CVwKLQl9KQotCi0jZGVmaW5lIGFiczY0KHgpICh7CQkJCVwKLQkJczY0IF9feCA9ICh4KTsJCQlc Ci0JCShfX3ggPCAwKSA/IC1fX3ggOiBfX3g7CQlcCi0JfSkKKyNkZWZpbmUgYWJzKHgpCV9fYWJz X2Nob29zZV9leHByKHgsIGxvbmcgbG9uZywJCQkJXAorCQlfX2Fic19jaG9vc2VfZXhwcih4LCBs b25nLAkJCQlcCisJCV9fYWJzX2Nob29zZV9leHByKHgsIGludCwJCQkJXAorCQlfX2Fic19jaG9v c2VfZXhwcih4LCBzaG9ydCwJCQkJXAorCQlfX2Fic19jaG9vc2VfZXhwcih4LCBjaGFyLAkJCQlc CisJCV9fYnVpbHRpbl9jaG9vc2VfZXhwcigJCQkJCVwKKwkJCV9fYnVpbHRpbl90eXBlc19jb21w YXRpYmxlX3AodHlwZW9mKHgpLCBjaGFyKSwJXAorCQkJKGNoYXIpKHsgc2lnbmVkIGNoYXIgX194 ID0gKHgpOyBfX3g8MD8tX194Ol9feDsgfSksIFwKKwkJCSgodm9pZCkwKSkpKSkpKQorCisjZGVm aW5lIF9fYWJzX2Nob29zZV9leHByKHgsIHR5cGUsIG90aGVyKSBfX2J1aWx0aW5fY2hvb3NlX2V4 cHIoCVwKKwlfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZih4KSwgICBzaWduZWQg dHlwZSkgfHwJXAorCV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKHgpLCB1bnNp Z25lZCB0eXBlKSwJCVwKKwkoeyBzaWduZWQgdHlwZSBfX3ggPSAoeCk7IF9feCA8IDAgPyAtX194 IDogX194OyB9KSwgb3RoZXIpCisKKy8qIERlcHJlY2F0ZWQsIHVzZSBhYnMgaW5zdGVhZC4gKi8K KyNkZWZpbmUgYWJzNjQoeCkgYWJzKChzNjQpKHgpKQogCiAvKioKICAqIHJlY2lwcm9jYWxfc2Nh bGUgLSAic2NhbGUiIGEgdmFsdWUgaW50byByYW5nZSBbMCwgZXBfcm8pCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKaW5kZXgg ZWM0ZTNiZDgzZDQ3Li4yM2YxY2U0ZTU1NGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3Zt X2hvc3QuaAorKysgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTE3Nyw4ICsxNzcsOCBA QCBpbnQga3ZtX2lvX2J1c19yZWFkKHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19p ZHgsIGdwYV90IGFkZHIsIGludCBsZW4sCiAJCSAgICB2b2lkICp2YWwpOwogaW50IGt2bV9pb19i dXNfcmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsIGdw YV90IGFkZHIsCiAJCQkgICAgaW50IGxlbiwgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7Ci1p bnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1 cyBidXNfaWR4LAotCQkJICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7Cit2b2lkIGt2 bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVz X2lkeCwKKwkJCSAgICAgICBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2KTsKIAogI2lmZGVmIENP TkZJR19LVk1fQVNZTkNfUEYKIHN0cnVjdCBrdm1fYXN5bmNfcGYgewpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmgKaW5kZXggNjgwNDE0NDZjNDUw Li4xZjA3MmE3MDFjMjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKKysrIGIvaW5j bHVkZS9saW51eC9waHkuaApAQCAtNjkyLDYgKzY5MiwxMCBAQCBpbnQgZ2VucGh5X3JlYWRfc3Rh dHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IGdlbnBoeV9zdXNwZW5kKHN0cnVj dCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IGdlbnBoeV9yZXN1bWUoc3RydWN0IHBoeV9kZXZp Y2UgKnBoeWRldik7CiBpbnQgZ2VucGh5X3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBo eWRldik7CitzdGF0aWMgaW5saW5lIGludCBnZW5waHlfbm9fc29mdF9yZXNldChzdHJ1Y3QgcGh5 X2RldmljZSAqcGh5ZGV2KQoreworCXJldHVybiAwOworfQogdm9pZCBwaHlfZHJpdmVyX3VucmVn aXN0ZXIoc3RydWN0IHBoeV9kcml2ZXIgKmRydik7CiB2b2lkIHBoeV9kcml2ZXJzX3VucmVnaXN0 ZXIoc3RydWN0IHBoeV9kcml2ZXIgKmRydiwgaW50IG4pOwogaW50IHBoeV9kcml2ZXJfcmVnaXN0 ZXIoc3RydWN0IHBoeV9kcml2ZXIgKm5ld19kcml2ZXIpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKaW5kZXggNjI5ZjUxOTIyNGVl Li42M2M5ZDM4MWUwZDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKKysrIGIv aW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMjMwNyw2ICsyMzA3LDEzIEBAIHN0YXRpYyBpbmxp bmUgaW50IHNrYl9jbG9uZV93cml0YWJsZShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNp Z25lZCBpbnQgbGVuCiAJICAgICAgIHNrYl9oZWFkcm9vbShza2IpICsgbGVuIDw9IHNrYi0+aGRy X2xlbjsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgc2tiX3RyeV9tYWtlX3dyaXRhYmxlKHN0cnVj dCBza19idWZmICpza2IsCisJCQkJCXVuc2lnbmVkIGludCB3cml0ZV9sZW4pCit7CisJcmV0dXJu IHNrYl9jbG9uZWQoc2tiKSAmJiAhc2tiX2Nsb25lX3dyaXRhYmxlKHNrYiwgd3JpdGVfbGVuKSAm JgorCSAgICAgICBwc2tiX2V4cGFuZF9oZWFkKHNrYiwgMCwgMCwgR0ZQX0FUT01JQyk7Cit9CisK IHN0YXRpYyBpbmxpbmUgaW50IF9fc2tiX2NvdyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25l ZCBpbnQgaGVhZHJvb20sCiAJCQkgICAgaW50IGNsb25lZCkKIHsKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvdXNiL3F1aXJrcy5oIGIvaW5jbHVkZS9saW51eC91c2IvcXVpcmtzLmgKaW5kZXgg OGY0ZjIyMTQ2NTJmLi5iNTRmZGNiNTJiMWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNi L3F1aXJrcy5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3F1aXJrcy5oCkBAIC01MCw0ICs1MCwx MCBAQAogLyogZGV2aWNlIGNhbid0IGhhbmRsZSBMaW5rIFBvd2VyIE1hbmFnZW1lbnQgKi8KICNk ZWZpbmUgVVNCX1FVSVJLX05PX0xQTQkJCUJJVCgxMCkKIAorLyoKKyAqIERldmljZSByZXBvcnRz IGl0cyBiSW50ZXJ2YWwgYXMgbGluZWFyIGZyYW1lcyBpbnN0ZWFkIG9mIHRoZQorICogVVNCIDIu MCBjYWxjdWxhdGlvbi4KKyAqLworI2RlZmluZSBVU0JfUVVJUktfTElORUFSX0ZSQU1FX0lOVFJf QklOVEVSVkFMCUJJVCgxMSkKKwogI2VuZGlmIC8qIF9fTElOVVhfVVNCX1FVSVJLU19IICovCmRp ZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvbGliaXNjc2kuaCBiL2luY2x1ZGUvc2NzaS9saWJpc2Nz aS5oCmluZGV4IDcyOGM5YWQ5ZmViMC4uNWNlYTE3NDQwNmMwIDEwMDY0NAotLS0gYS9pbmNsdWRl L3Njc2kvbGliaXNjc2kuaAorKysgYi9pbmNsdWRlL3Njc2kvbGliaXNjc2kuaApAQCAtMTk2LDYg KzE5Niw3IEBAIHN0cnVjdCBpc2NzaV9jb25uIHsKIAlzdHJ1Y3QgaXNjc2lfdGFzawkqdGFzazsJ CS8qIHhtaXQgdGFzayBpbiBwcm9ncmVzcyAqLwogCiAJLyogeG1pdCAqLworCXNwaW5sb2NrX3QJ CXRhc2txdWV1ZWxvY2s7ICAvKiBwcm90ZWN0cyB0aGUgbmV4dCB0aHJlZSBsaXN0cyAqLwogCXN0 cnVjdCBsaXN0X2hlYWQJbWdtdHF1ZXVlOwkvKiBtZ210IChjb250cm9sKSB4bWl0IHF1ZXVlICov CiAJc3RydWN0IGxpc3RfaGVhZAljbWRxdWV1ZTsJLyogZGF0YS1wYXRoIGNtZCBxdWV1ZSAqLwog CXN0cnVjdCBsaXN0X2hlYWQJcmVxdWV1ZTsJLyogdGFza3MgbmVlZGluZyBhbm90aGVyIHJ1biAq LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc3lzY2FsbHMuaCBiL2luY2x1ZGUv dHJhY2UvZXZlbnRzL3N5c2NhbGxzLmgKaW5kZXggMTRlNDljNzk4MTM1Li5iMzU1MzNiOTQyNzcg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmgKKysrIGIvaW5jbHVk ZS90cmFjZS9ldmVudHMvc3lzY2FsbHMuaApAQCAtMSw1ICsxLDYgQEAKICN1bmRlZiBUUkFDRV9T WVNURU0KICNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJhd19zeXNjYWxscworI3VuZGVmIFRSQUNFX0lO Q0xVREVfRklMRQogI2RlZmluZSBUUkFDRV9JTkNMVURFX0ZJTEUgc3lzY2FsbHMKIAogI2lmICFk ZWZpbmVkKF9UUkFDRV9FVkVOVFNfU1lTQ0FMTFNfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJf TVVMVElfUkVBRCkKZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvY29yZS5jIGIva2VybmVsL2V2 ZW50cy9jb3JlLmMKaW5kZXggMmZhYWVkM2JhNjFiLi4xYWMwNWQxYzBlNmIgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9ldmVudHMvY29yZS5jCisrKyBiL2tlcm5lbC9ldmVudHMvY29yZS5jCkBAIC04MTc3 LDcgKzgxNzcsNyBAQCBpbnQgcGVyZl9ldmVudF9pbml0X2NvbnRleHQoc3RydWN0IHRhc2tfc3Ry dWN0ICpjaGlsZCwgaW50IGN0eG4pCiAJCXJldCA9IGluaGVyaXRfdGFza19ncm91cChldmVudCwg cGFyZW50LCBwYXJlbnRfY3R4LAogCQkJCQkgY2hpbGQsIGN0eG4sICZpbmhlcml0ZWRfYWxsKTsK IAkJaWYgKHJldCkKLQkJCWJyZWFrOworCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAogCS8qCkBA IC04MTkzLDcgKzgxOTMsNyBAQCBpbnQgcGVyZl9ldmVudF9pbml0X2NvbnRleHQoc3RydWN0IHRh c2tfc3RydWN0ICpjaGlsZCwgaW50IGN0eG4pCiAJCXJldCA9IGluaGVyaXRfdGFza19ncm91cChl dmVudCwgcGFyZW50LCBwYXJlbnRfY3R4LAogCQkJCQkgY2hpbGQsIGN0eG4sICZpbmhlcml0ZWRf YWxsKTsKIAkJaWYgKHJldCkKLQkJCWJyZWFrOworCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAog CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcGFyZW50X2N0eC0+bG9jaywgZmxhZ3MpOwpAQCAtODIy MSw2ICs4MjIxLDcgQEAgaW50IHBlcmZfZXZlbnRfaW5pdF9jb250ZXh0KHN0cnVjdCB0YXNrX3N0 cnVjdCAqY2hpbGQsIGludCBjdHhuKQogCX0KIAogCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwYXJlbnRfY3R4LT5sb2NrLCBmbGFncyk7CitvdXRfdW5sb2NrOgogCW11dGV4X3VubG9jaygm cGFyZW50X2N0eC0+bXV0ZXgpOwogCiAJcGVyZl91bnBpbl9jb250ZXh0KHBhcmVudF9jdHgpOwpk aWZmIC0tZ2l0IGEva2VybmVsL2Z1dGV4LmMgYi9rZXJuZWwvZnV0ZXguYwppbmRleCAxZDFjY2Iw ZTg3YTcuLjMzOGY2MjY3NTM4MyAxMDA2NDQKLS0tIGEva2VybmVsL2Z1dGV4LmMKKysrIGIva2Vy bmVsL2Z1dGV4LmMKQEAgLTI1NzgsNyArMjU3OCw2IEBAIHN0YXRpYyBpbnQgZnV0ZXhfd2FpdF9y ZXF1ZXVlX3BpKHUzMiBfX3VzZXIgKnVhZGRyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiB7CiAJc3Ry dWN0IGhydGltZXJfc2xlZXBlciB0aW1lb3V0LCAqdG8gPSBOVUxMOwogCXN0cnVjdCBydF9tdXRl eF93YWl0ZXIgcnRfd2FpdGVyOwotCXN0cnVjdCBydF9tdXRleCAqcGlfbXV0ZXggPSBOVUxMOwog CXN0cnVjdCBmdXRleF9oYXNoX2J1Y2tldCAqaGI7CiAJdW5pb24gZnV0ZXhfa2V5IGtleTIgPSBG VVRFWF9LRVlfSU5JVDsKIAlzdHJ1Y3QgZnV0ZXhfcSBxID0gZnV0ZXhfcV9pbml0OwpAQCAtMjY2 Miw2ICsyNjYxLDggQEAgc3RhdGljIGludCBmdXRleF93YWl0X3JlcXVldWVfcGkodTMyIF9fdXNl ciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywKIAkJaWYgKHEucGlfc3RhdGUgJiYgKHEucGlf c3RhdGUtPm93bmVyICE9IGN1cnJlbnQpKSB7CiAJCQlzcGluX2xvY2socS5sb2NrX3B0cik7CiAJ CQlyZXQgPSBmaXh1cF9waV9zdGF0ZV9vd25lcih1YWRkcjIsICZxLCBjdXJyZW50KTsKKwkJCWlm IChyZXQgJiYgcnRfbXV0ZXhfb3duZXIoJnEucGlfc3RhdGUtPnBpX211dGV4KSA9PSBjdXJyZW50 KQorCQkJCXJ0X211dGV4X3VubG9jaygmcS5waV9zdGF0ZS0+cGlfbXV0ZXgpOwogCQkJLyoKIAkJ CSAqIERyb3AgdGhlIHJlZmVyZW5jZSB0byB0aGUgcGkgc3RhdGUgd2hpY2gKIAkJCSAqIHRoZSBy ZXF1ZXVlX3BpKCkgY29kZSBhY3F1aXJlZCBmb3IgdXMuCkBAIC0yNjcwLDYgKzI2NzEsOCBAQCBz dGF0aWMgaW50IGZ1dGV4X3dhaXRfcmVxdWV1ZV9waSh1MzIgX191c2VyICp1YWRkciwgdW5zaWdu ZWQgaW50IGZsYWdzLAogCQkJc3Bpbl91bmxvY2socS5sb2NrX3B0cik7CiAJCX0KIAl9IGVsc2Ug eworCQlzdHJ1Y3QgcnRfbXV0ZXggKnBpX211dGV4OworCiAJCS8qCiAJCSAqIFdlIGhhdmUgYmVl biB3b2tlbiB1cCBieSBmdXRleF91bmxvY2tfcGkoKSwgYSB0aW1lb3V0LCBvciBhCiAJCSAqIHNp Z25hbC4gIGZ1dGV4X3VubG9ja19waSgpIHdpbGwgbm90IGRlc3Ryb3kgdGhlIGxvY2tfcHRyIG5v cgpAQCAtMjY5MywxOCArMjY5NiwxOSBAQCBzdGF0aWMgaW50IGZ1dGV4X3dhaXRfcmVxdWV1ZV9w aSh1MzIgX191c2VyICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdzLAogCQlpZiAocmVzKQogCQkJ cmV0ID0gKHJlcyA8IDApID8gcmVzIDogMDsKIAorCQkvKgorCQkgKiBJZiBmaXh1cF9waV9zdGF0 ZV9vd25lcigpIGZhdWx0ZWQgYW5kIHdhcyB1bmFibGUgdG8gaGFuZGxlCisJCSAqIHRoZSBmYXVs dCwgdW5sb2NrIHRoZSBydF9tdXRleCBhbmQgcmV0dXJuIHRoZSBmYXVsdCB0bworCQkgKiB1c2Vy c3BhY2UuCisJCSAqLworCQlpZiAocmV0ICYmIHJ0X211dGV4X293bmVyKHBpX211dGV4KSA9PSBj dXJyZW50KQorCQkJcnRfbXV0ZXhfdW5sb2NrKHBpX211dGV4KTsKKwogCQkvKiBVbnF1ZXVlIGFu ZCBkcm9wIHRoZSBsb2NrLiAqLwogCQl1bnF1ZXVlX21lX3BpKCZxKTsKIAl9CiAKLQkvKgotCSAq IElmIGZpeHVwX3BpX3N0YXRlX293bmVyKCkgZmF1bHRlZCBhbmQgd2FzIHVuYWJsZSB0byBoYW5k bGUgdGhlCi0JICogZmF1bHQsIHVubG9jayB0aGUgcnRfbXV0ZXggYW5kIHJldHVybiB0aGUgZmF1 bHQgdG8gdXNlcnNwYWNlLgotCSAqLwotCWlmIChyZXQgPT0gLUVGQVVMVCkgewotCQlpZiAocGlf bXV0ZXggJiYgcnRfbXV0ZXhfb3duZXIocGlfbXV0ZXgpID09IGN1cnJlbnQpCi0JCQlydF9tdXRl eF91bmxvY2socGlfbXV0ZXgpOwotCX0gZWxzZSBpZiAocmV0ID09IC1FSU5UUikgeworCWlmIChy ZXQgPT0gLUVJTlRSKSB7CiAJCS8qCiAJCSAqIFdlJ3ZlIGFscmVhZHkgYmVlbiByZXF1ZXVlZCwg YnV0IGNhbm5vdCByZXN0YXJ0IGJ5IGNhbGxpbmcKIAkJICogZnV0ZXhfbG9ja19waSgpIGRpcmVj dGx5LiBXZSBjb3VsZCByZXN0YXJ0IHRoaXMgc3lzY2FsbCwgYnV0CmRpZmYgLS1naXQgYS9rZXJu ZWwvcHRyYWNlLmMgYi9rZXJuZWwvcHRyYWNlLmMKaW5kZXggODA4ZTVkYmNiZDlmLi5kNTJiZDhk YmZiNGIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wdHJhY2UuYworKysgYi9rZXJuZWwvcHRyYWNlLmMK QEAgLTE1MCwxMSArMTUwLDE3IEBAIHN0YXRpYyB2b2lkIHB0cmFjZV91bmZyZWV6ZV90cmFjZWQo c3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogCiAJV0FSTl9PTighdGFzay0+cHRyYWNlIHx8IHRh c2stPnBhcmVudCAhPSBjdXJyZW50KTsKIAorCS8qCisJICogUFRSQUNFX0xJU1RFTiBjYW4gYWxs b3cgcHRyYWNlX3RyYXBfbm90aWZ5IHRvIHdha2UgdXMgdXAgcmVtb3RlbHkuCisJICogUmVjaGVj ayBzdGF0ZSB1bmRlciB0aGUgbG9jayB0byBjbG9zZSB0aGlzIHJhY2UuCisJICovCiAJc3Bpbl9s b2NrX2lycSgmdGFzay0+c2lnaGFuZC0+c2lnbG9jayk7Ci0JaWYgKF9fZmF0YWxfc2lnbmFsX3Bl bmRpbmcodGFzaykpCi0JCXdha2VfdXBfc3RhdGUodGFzaywgX19UQVNLX1RSQUNFRCk7Ci0JZWxz ZQotCQl0YXNrLT5zdGF0ZSA9IFRBU0tfVFJBQ0VEOworCWlmICh0YXNrLT5zdGF0ZSA9PSBfX1RB U0tfVFJBQ0VEKSB7CisJCWlmIChfX2ZhdGFsX3NpZ25hbF9wZW5kaW5nKHRhc2spKQorCQkJd2Fr ZV91cF9zdGF0ZSh0YXNrLCBfX1RBU0tfVFJBQ0VEKTsKKwkJZWxzZQorCQkJdGFzay0+c3RhdGUg PSBUQVNLX1RSQUNFRDsKKwl9CiAJc3Bpbl91bmxvY2tfaXJxKCZ0YXNrLT5zaWdoYW5kLT5zaWds b2NrKTsKIH0KIApkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL3Byb2MuYyBiL2tlcm5lbC9zY2hl ZC9wcm9jLmMKaW5kZXggYjY3MmQ3ODE2MGNmLi5hOTRjY2I1ODIxYmIgMTAwNjQ0Ci0tLSBhL2tl cm5lbC9zY2hlZC9wcm9jLmMKKysrIGIva2VybmVsL3NjaGVkL3Byb2MuYwpAQCAtMjA1LDggKzIw NSw5IEBAIHZvaWQgY2FsY19sb2FkX2V4aXRfaWRsZSh2b2lkKQogCXN0cnVjdCBycSAqdGhpc19y cSA9IHRoaXNfcnEoKTsKIAogCS8qCi0JICogSWYgd2UncmUgc3RpbGwgYmVmb3JlIHRoZSBzYW1w bGUgd2luZG93LCB3ZSdyZSBkb25lLgorCSAqIElmIHdlJ3JlIHN0aWxsIGJlZm9yZSB0aGUgcGVu ZGluZyBzYW1wbGUgd2luZG93LCB3ZSdyZSBkb25lLgogCSAqLworCXRoaXNfcnEtPmNhbGNfbG9h ZF91cGRhdGUgPSBjYWxjX2xvYWRfdXBkYXRlOwogCWlmICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0 aGlzX3JxLT5jYWxjX2xvYWRfdXBkYXRlKSkKIAkJcmV0dXJuOwogCkBAIC0yMTUsNyArMjE2LDYg QEAgdm9pZCBjYWxjX2xvYWRfZXhpdF9pZGxlKHZvaWQpCiAJICogYWNjb3VudGVkIHRocm91Z2gg dGhlIG5vaHogYWNjb3VudGluZywgc28gc2tpcCB0aGUgZW50aXJlIGRlYWwgYW5kCiAJICogc3lu YyB1cCBmb3IgdGhlIG5leHQgd2luZG93LgogCSAqLwotCXRoaXNfcnEtPmNhbGNfbG9hZF91cGRh dGUgPSBjYWxjX2xvYWRfdXBkYXRlOwogCWlmICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aGlzX3Jx LT5jYWxjX2xvYWRfdXBkYXRlICsgMTApKQogCQl0aGlzX3JxLT5jYWxjX2xvYWRfdXBkYXRlICs9 IExPQURfRlJFUTsKIH0KZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jIGIv a2VybmVsL3RyYWNlL3JpbmdfYnVmZmVyLmMKaW5kZXggNzliZjYyYjRlNzQwLi42M2M5OGU5Y2Iy MDQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jCisrKyBiL2tlcm5lbC90 cmFjZS9yaW5nX2J1ZmZlci5jCkBAIC0zNDYzLDExICszNDYzLDIzIEBAIEVYUE9SVF9TWU1CT0xf R1BMKHJpbmdfYnVmZmVyX2l0ZXJfcmVzZXQpOwogaW50IHJpbmdfYnVmZmVyX2l0ZXJfZW1wdHko c3RydWN0IHJpbmdfYnVmZmVyX2l0ZXIgKml0ZXIpCiB7CiAJc3RydWN0IHJpbmdfYnVmZmVyX3Bl cl9jcHUgKmNwdV9idWZmZXI7CisJc3RydWN0IGJ1ZmZlcl9wYWdlICpyZWFkZXI7CisJc3RydWN0 IGJ1ZmZlcl9wYWdlICpoZWFkX3BhZ2U7CisJc3RydWN0IGJ1ZmZlcl9wYWdlICpjb21taXRfcGFn ZTsKKwl1bnNpZ25lZCBjb21taXQ7CiAKIAljcHVfYnVmZmVyID0gaXRlci0+Y3B1X2J1ZmZlcjsK IAotCXJldHVybiBpdGVyLT5oZWFkX3BhZ2UgPT0gY3B1X2J1ZmZlci0+Y29tbWl0X3BhZ2UgJiYK LQkJaXRlci0+aGVhZCA9PSByYl9jb21taXRfaW5kZXgoY3B1X2J1ZmZlcik7CisJLyogUmVtZW1i ZXIsIHRyYWNlIHJlY29yZGluZyBpcyBvZmYgd2hlbiBpdGVyYXRvciBpcyBpbiB1c2UgKi8KKwly ZWFkZXIgPSBjcHVfYnVmZmVyLT5yZWFkZXJfcGFnZTsKKwloZWFkX3BhZ2UgPSBjcHVfYnVmZmVy LT5oZWFkX3BhZ2U7CisJY29tbWl0X3BhZ2UgPSBjcHVfYnVmZmVyLT5jb21taXRfcGFnZTsKKwlj b21taXQgPSByYl9wYWdlX2NvbW1pdChjb21taXRfcGFnZSk7CisKKwlyZXR1cm4gKChpdGVyLT5o ZWFkX3BhZ2UgPT0gY29tbWl0X3BhZ2UgJiYgaXRlci0+aGVhZCA9PSBjb21taXQpIHx8CisJCShp dGVyLT5oZWFkX3BhZ2UgPT0gcmVhZGVyICYmIGNvbW1pdF9wYWdlID09IGhlYWRfcGFnZSAmJgor CQkgaGVhZF9wYWdlLT5yZWFkID09IGNvbW1pdCAmJgorCQkgaXRlci0+aGVhZCA9PSByYl9wYWdl X2NvbW1pdChjcHVfYnVmZmVyLT5yZWFkZXJfcGFnZSkpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BM KHJpbmdfYnVmZmVyX2l0ZXJfZW1wdHkpOwogCkBAIC00ODk5LDkgKzQ5MTEsOSBAQCBzdGF0aWMg X19pbml0IGludCB0ZXN0X3JpbmdidWZmZXIodm9pZCkKIAkJcmJfZGF0YVtjcHVdLmNudCA9IGNw dTsKIAkJcmJfdGhyZWFkc1tjcHVdID0ga3RocmVhZF9jcmVhdGUocmJfdGVzdCwgJnJiX2RhdGFb Y3B1XSwKIAkJCQkJCSAicmJ0ZXN0ZXIvJWQiLCBjcHUpOwotCQlpZiAoV0FSTl9PTighcmJfdGhy ZWFkc1tjcHVdKSkgeworCQlpZiAoV0FSTl9PTihJU19FUlIocmJfdGhyZWFkc1tjcHVdKSkpIHsK IAkJCXByX2NvbnQoIkZBSUxFRFxuIik7Ci0JCQlyZXQgPSAtMTsKKwkJCXJldCA9IFBUUl9FUlIo cmJfdGhyZWFkc1tjcHVdKTsKIAkJCWdvdG8gb3V0X2ZyZWU7CiAJCX0KIApAQCAtNDkxMSw5ICs0 OTIzLDkgQEAgc3RhdGljIF9faW5pdCBpbnQgdGVzdF9yaW5nYnVmZmVyKHZvaWQpCiAKIAkvKiBO b3cgY3JlYXRlIHRoZSByYiBoYW1tZXIhICovCiAJcmJfaGFtbWVyID0ga3RocmVhZF9ydW4ocmJf aGFtbWVyX3Rlc3QsIE5VTEwsICJyYmhhbW1lciIpOwotCWlmIChXQVJOX09OKCFyYl9oYW1tZXIp KSB7CisJaWYgKFdBUk5fT04oSVNfRVJSKHJiX2hhbW1lcikpKSB7CiAJCXByX2NvbnQoIkZBSUxF RFxuIik7Ci0JCXJldCA9IC0xOworCQlyZXQgPSBQVFJfRVJSKHJiX2hhbW1lcik7CiAJCWdvdG8g b3V0X2ZyZWU7CiAJfQogCmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvdHJhY2UuYyBiL2tlcm5l bC90cmFjZS90cmFjZS5jCmluZGV4IGE2NGE3MDczYmZmZS4uYjg2ZWU0ZWZmYTAyIDEwMDY0NAot LS0gYS9rZXJuZWwvdHJhY2UvdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvdHJhY2UuYwpAQCAt NTc3NSwxMSArNTc3NSwxMyBAQCBmdHJhY2VfdHJhY2Vfc25hcHNob3RfY2FsbGJhY2soc3RydWN0 IGZ0cmFjZV9oYXNoICpoYXNoLAogCQlyZXR1cm4gcmV0OwogCiAgb3V0X3JlZzoKLQlyZXQgPSBy ZWdpc3Rlcl9mdHJhY2VfZnVuY3Rpb25fcHJvYmUoZ2xvYiwgb3BzLCBjb3VudCk7CisJcmV0ID0g YWxsb2Nfc25hcHNob3QoJmdsb2JhbF90cmFjZSk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0 OwogCi0JaWYgKHJldCA+PSAwKQotCQlhbGxvY19zbmFwc2hvdCgmZ2xvYmFsX3RyYWNlKTsKKwly ZXQgPSByZWdpc3Rlcl9mdHJhY2VfZnVuY3Rpb25fcHJvYmUoZ2xvYiwgb3BzLCBjb3VudCk7CiAK KyBvdXQ6CiAJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAwOwogfQogCmRpZmYgLS1naXQgYS9uZXQv OXAvY2xpZW50LmMgYi9uZXQvOXAvY2xpZW50LmMKaW5kZXggNTVhNTVjZTkyZGMxLi4xYTM5YTY2 MGRkMTggMTAwNjQ0Ci0tLSBhL25ldC85cC9jbGllbnQuYworKysgYi9uZXQvOXAvY2xpZW50LmMK QEAgLTIxMDcsNiArMjEwNywxMCBAQCBpbnQgcDlfY2xpZW50X3JlYWRkaXIoc3RydWN0IHA5X2Zp ZCAqZmlkLCBjaGFyICpkYXRhLCB1MzIgY291bnQsIHU2NCBvZmZzZXQpCiAJCXRyYWNlXzlwX3By b3RvY29sX2R1bXAoY2xudCwgcmVxLT5yYyk7CiAJCWdvdG8gZnJlZV9hbmRfZXJyb3I7CiAJfQor CWlmIChyc2l6ZSA8IGNvdW50KSB7CisJCXByX2VycigiYm9ndXMgUlJFQURESVIgY291bnQgKCVk ID4gJWQpXG4iLCBjb3VudCwgcnNpemUpOworCQljb3VudCA9IHJzaXplOworCX0KIAogCXA5X2Rl YnVnKFA5X0RFQlVHXzlQLCAiPDw8IFJSRUFERElSIGNvdW50ICVkXG4iLCBjb3VudCk7CiAKZGlm ZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L2ZyYWdtZW50YXRpb24uYyBiL25ldC9iYXRtYW4tYWR2 L2ZyYWdtZW50YXRpb24uYwppbmRleCA2NmNlZjUxNTc0ZDQuLmFmOTc3NTJiNTJhYSAxMDA2NDQK LS0tIGEvbmV0L2JhdG1hbi1hZHYvZnJhZ21lbnRhdGlvbi5jCisrKyBiL25ldC9iYXRtYW4tYWR2 L2ZyYWdtZW50YXRpb24uYwpAQCAtMzc3LDcgKzM3Nyw3IEBAIGJvb2wgYmF0YWR2X2ZyYWdfc2ti X2Z3ZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICogYmF0YWR2X2ZyYWdfY3JlYXRlIC0gY3JlYXRl IGEgZnJhZ21lbnQgZnJvbSBza2IKICAqIEBza2I6IHNrYiB0byBjcmVhdGUgZnJhZ21lbnQgZnJv bQogICogQGZyYWdfaGVhZDogaGVhZGVyIHRvIHVzZSBpbiBuZXcgZnJhZ21lbnQKLSAqIEBtdHU6 IHNpemUgb2YgbmV3IGZyYWdtZW50CisgKiBAZnJhZ21lbnRfc2l6ZTogc2l6ZSBvZiBuZXcgZnJh Z21lbnQKICAqCiAgKiBTcGxpdCB0aGUgcGFzc2VkIHNrYiBpbnRvIHR3byBmcmFnbWVudHM6IEEg bmV3IG9uZSB3aXRoIHNpemUgbWF0Y2hpbmcgdGhlCiAgKiBwYXNzZWQgbXR1IGFuZCB0aGUgb2xk IG9uZSB3aXRoIHRoZSByZXN0LiBUaGUgbmV3IHNrYiBjb250YWlucyBkYXRhIGZyb20gdGhlCkBA IC0zODcsMTEgKzM4NywxMSBAQCBib29sIGJhdGFkdl9mcmFnX3NrYl9md2Qoc3RydWN0IHNrX2J1 ZmYgKnNrYiwKICAqLwogc3RhdGljIHN0cnVjdCBza19idWZmICpiYXRhZHZfZnJhZ19jcmVhdGUo c3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkJICBzdHJ1Y3QgYmF0YWR2X2ZyYWdfcGFja2V0ICpm cmFnX2hlYWQsCi0JCQkJCSAgdW5zaWduZWQgaW50IG10dSkKKwkJCQkJICB1bnNpZ25lZCBpbnQg ZnJhZ21lbnRfc2l6ZSkKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2ZyYWdtZW50OwogCXVuc2ln bmVkIGhlYWRlcl9zaXplID0gc2l6ZW9mKCpmcmFnX2hlYWQpOwotCXVuc2lnbmVkIGZyYWdtZW50 X3NpemUgPSBtdHUgLSBoZWFkZXJfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgbXR1ID0gZnJhZ21lbnRf c2l6ZSArIGhlYWRlcl9zaXplOwogCiAJc2tiX2ZyYWdtZW50ID0gbmV0ZGV2X2FsbG9jX3NrYihO VUxMLCBtdHUgKyBFVEhfSExFTik7CiAJaWYgKCFza2JfZnJhZ21lbnQpCkBAIC00MjksNyArNDI5 LDcgQEAgYm9vbCBiYXRhZHZfZnJhZ19zZW5kX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAog CXN0cnVjdCBza19idWZmICpza2JfZnJhZ21lbnQ7CiAJdW5zaWduZWQgbXR1ID0gbmVpZ2hfbm9k ZS0+aWZfaW5jb21pbmctPm5ldF9kZXYtPm10dTsKIAl1bnNpZ25lZCBoZWFkZXJfc2l6ZSA9IHNp emVvZihmcmFnX2hlYWRlcik7Ci0JdW5zaWduZWQgbWF4X2ZyYWdtZW50X3NpemUsIG1heF9wYWNr ZXRfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgbWF4X2ZyYWdtZW50X3NpemUsIG51bV9mcmFnbWVudHM7 CiAJYm9vbCByZXQgPSBmYWxzZTsKIAogCS8qIFRvIGF2b2lkIG1lcmdlIGFuZCByZWZyYWdtZW50 YXRpb24gYXQgbmV4dC1ob3BzIHdlIG5ldmVyIHNlbmQKQEAgLTQzNywxMCArNDM3LDE1IEBAIGJv b2wgYmF0YWR2X2ZyYWdfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAlt dHUgPSBtaW5fdCh1bnNpZ25lZCwgbXR1LCBCQVRBRFZfRlJBR19NQVhfRlJBR19TSVpFKTsKIAlt YXhfZnJhZ21lbnRfc2l6ZSA9IG10dSAtIGhlYWRlcl9zaXplOwotCW1heF9wYWNrZXRfc2l6ZSA9 IG1heF9mcmFnbWVudF9zaXplICogQkFUQURWX0ZSQUdfTUFYX0ZSQUdNRU5UUzsKKworCWlmIChz a2ItPmxlbiA9PSAwIHx8IG1heF9mcmFnbWVudF9zaXplID09IDApCisJCXJldHVybiAtRUlOVkFM OworCisJbnVtX2ZyYWdtZW50cyA9IChza2ItPmxlbiAtIDEpIC8gbWF4X2ZyYWdtZW50X3NpemUg KyAxOworCW1heF9mcmFnbWVudF9zaXplID0gKHNrYi0+bGVuIC0gMSkgLyBudW1fZnJhZ21lbnRz ICsgMTsKIAogCS8qIERvbid0IGV2ZW4gdHJ5IHRvIGZyYWdtZW50LCBpZiB3ZSBuZWVkIG1vcmUg dGhhbiAxNiBmcmFnbWVudHMgKi8KLQlpZiAoc2tiLT5sZW4gPiBtYXhfcGFja2V0X3NpemUpCisJ aWYgKG51bV9mcmFnbWVudHMgPiBCQVRBRFZfRlJBR19NQVhfRlJBR01FTlRTKQogCQlnb3RvIG91 dF9lcnI7CiAKIAliYXRfcHJpdiA9IG9yaWdfbm9kZS0+YmF0X3ByaXY7CkBAIC00NjUsNyArNDcw LDggQEAgYm9vbCBiYXRhZHZfZnJhZ19zZW5kX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAog CQlpZiAodW5saWtlbHkoZnJhZ19oZWFkZXIubm8gPT0gQkFUQURWX0ZSQUdfTUFYX0ZSQUdNRU5U UyAtIDEpKQogCQkJZ290byBvdXRfZXJyOwogCi0JCXNrYl9mcmFnbWVudCA9IGJhdGFkdl9mcmFn X2NyZWF0ZShza2IsICZmcmFnX2hlYWRlciwgbXR1KTsKKwkJc2tiX2ZyYWdtZW50ID0gYmF0YWR2 X2ZyYWdfY3JlYXRlKHNrYiwgJmZyYWdfaGVhZGVyLAorCQkJCQkJICBtYXhfZnJhZ21lbnRfc2l6 ZSk7CiAJCWlmICghc2tiX2ZyYWdtZW50KQogCQkJZ290byBvdXRfZXJyOwogCmRpZmYgLS1naXQg YS9uZXQvY2VwaC9tZXNzZW5nZXIuYyBiL25ldC9jZXBoL21lc3Nlbmdlci5jCmluZGV4IGExMjQ0 YTIyODgxMS4uOGUwZWQ4ZGUzMjE2IDEwMDY0NAotLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXIuYwor KysgYi9uZXQvY2VwaC9tZXNzZW5nZXIuYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlIDxsaW51 eC9pbmV0Lmg+CiAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgogI2luY2x1ZGUgPGxpbnV4L25l dC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgog I2luY2x1ZGUgPGxpbnV4L3NvY2tldC5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgpAQCAt NDc2LDExICs0NzcsMTYgQEAgc3RhdGljIGludCBjZXBoX3RjcF9jb25uZWN0KHN0cnVjdCBjZXBo X2Nvbm5lY3Rpb24gKmNvbikKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqcGFkZHIgPSAm Y29uLT5wZWVyX2FkZHIuaW5fYWRkcjsKIAlzdHJ1Y3Qgc29ja2V0ICpzb2NrOworCXVuc2lnbmVk IGludCBub2lvX2ZsYWc7CiAJaW50IHJldDsKIAogCUJVR19PTihjb24tPnNvY2spOworCisJLyog c29ja19jcmVhdGVfa2VybigpIGFsbG9jYXRlcyB3aXRoIEdGUF9LRVJORUwgKi8KKwlub2lvX2Zs YWcgPSBtZW1hbGxvY19ub2lvX3NhdmUoKTsKIAlyZXQgPSBzb2NrX2NyZWF0ZV9rZXJuKGNvbi0+ cGVlcl9hZGRyLmluX2FkZHIuc3NfZmFtaWx5LCBTT0NLX1NUUkVBTSwKIAkJCSAgICAgICBJUFBS T1RPX1RDUCwgJnNvY2spOworCW1lbWFsbG9jX25vaW9fcmVzdG9yZShub2lvX2ZsYWcpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAJc29jay0+c2stPnNrX2FsbG9jYXRpb24gPSBHRlBfTk9G UzsKZGlmZiAtLWdpdCBhL25ldC9jZXBoL29zZG1hcC5jIGIvbmV0L2NlcGgvb3NkbWFwLmMKaW5k ZXggOThjNTc5MjQzZDg3Li5lNzdmZWFjN2FjNmQgMTAwNjQ0Ci0tLSBhL25ldC9jZXBoL29zZG1h cC5jCisrKyBiL25ldC9jZXBoL29zZG1hcC5jCkBAIC0xMjQwLDcgKzEyNDAsNiBAQCBzdGF0aWMg aW50IGRlY29kZV9uZXdfdXBfc3RhdGVfd2VpZ2h0KHZvaWQgKipwLCB2b2lkICplbmQsCiAJCWlm ICgobWFwLT5vc2Rfc3RhdGVbb3NkXSAmIENFUEhfT1NEX0VYSVNUUykgJiYKIAkJICAgICh4b3Jz dGF0ZSAmIENFUEhfT1NEX0VYSVNUUykpIHsKIAkJCXByX2luZm8oIm9zZCVkIGRvZXMgbm90IGV4 aXN0XG4iLCBvc2QpOwotCQkJbWFwLT5vc2Rfd2VpZ2h0W29zZF0gPSBDRVBIX09TRF9JTjsKIAkJ CXJldCA9IHNldF9wcmltYXJ5X2FmZmluaXR5KG1hcCwgb3NkLAogCQkJCQkJICAgQ0VQSF9PU0Rf REVGQVVMVF9QUklNQVJZX0FGRklOSVRZKTsKIAkJCWlmIChyZXQpCmRpZmYgLS1naXQgYS9uZXQv Y29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggYWY4NTZmMDFjYzhmLi45MmZmOGZi YTMxYWIgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3NvY2suYworKysgYi9uZXQvY29yZS9zb2NrLmMK QEAgLTE0NDgsNiArMTQ0OCwxMSBAQCBzdGF0aWMgdm9pZCBfX3NrX2ZyZWUoc3RydWN0IHNvY2sg KnNrKQogCQlwcl9kZWJ1ZygiJXM6IG9wdG1lbSBsZWFrYWdlICglZCBieXRlcykgZGV0ZWN0ZWRc biIsCiAJCQkgX19mdW5jX18sIGF0b21pY19yZWFkKCZzay0+c2tfb21lbV9hbGxvYykpOwogCisJ aWYgKHNrLT5za19mcmFnLnBhZ2UpIHsKKwkJcHV0X3BhZ2Uoc2stPnNrX2ZyYWcucGFnZSk7CisJ CXNrLT5za19mcmFnLnBhZ2UgPSBOVUxMOworCX0KKwogCWlmIChzay0+c2tfcGVlcl9jcmVkKQog CQlwdXRfY3JlZChzay0+c2tfcGVlcl9jcmVkKTsKIAlwdXRfcGlkKHNrLT5za19wZWVyX3BpZCk7 CkBAIC0yNjg1LDExICsyNjkwLDYgQEAgdm9pZCBza19jb21tb25fcmVsZWFzZShzdHJ1Y3Qgc29j ayAqc2spCiAKIAlza19yZWZjbnRfZGVidWdfcmVsZWFzZShzayk7CiAKLQlpZiAoc2stPnNrX2Zy YWcucGFnZSkgewotCQlwdXRfcGFnZShzay0+c2tfZnJhZy5wYWdlKTsKLQkJc2stPnNrX2ZyYWcu cGFnZSA9IE5VTEw7Ci0JfQotCiAJc29ja19wdXQoc2spOwogfQogRVhQT1JUX1NZTUJPTChza19j b21tb25fcmVsZWFzZSk7CmRpZmYgLS1naXQgYS9uZXQvZGNjcC9pcHY0LmMgYi9uZXQvZGNjcC9p cHY0LmMKaW5kZXggNDI5YWMxOTA5NGY4Li43NTVjZjE0NTllOTMgMTAwNjQ0Ci0tLSBhL25ldC9k Y2NwL2lwdjQuYworKysgYi9uZXQvZGNjcC9pcHY0LmMKQEAgLTI2NCw3ICsyNjQsOCBAQCBzdGF0 aWMgdm9pZCBkY2NwX3Y0X2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbykKIAogCXN3 aXRjaCAodHlwZSkgewogCWNhc2UgSUNNUF9SRURJUkVDVDoKLQkJZGNjcF9kb19yZWRpcmVjdChz a2IsIHNrKTsKKwkJaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKQorCQkJZGNjcF9kb19yZWRp cmVjdChza2IsIHNrKTsKIAkJZ290byBvdXQ7CiAJY2FzZSBJQ01QX1NPVVJDRV9RVUVOQ0g6CiAJ CS8qIEp1c3Qgc2lsZW50bHkgaWdub3JlIHRoZXNlLiAqLwpkaWZmIC0tZ2l0IGEvbmV0L2RjY3Av aXB2Ni5jIGIvbmV0L2RjY3AvaXB2Ni5jCmluZGV4IDA2MjJmNzIxZWIyYy4uMzA0NTViZjkxYjE4 IDEwMDY0NAotLS0gYS9uZXQvZGNjcC9pcHY2LmMKKysrIGIvbmV0L2RjY3AvaXB2Ni5jCkBAIC0x MzIsMTAgKzEzMiwxMiBAQCBzdGF0aWMgdm9pZCBkY2NwX3Y2X2VycihzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBzdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0gKm9wdCwKIAlucCA9IGluZXQ2X3NrKHNrKTsKIAog CWlmICh0eXBlID09IE5ESVNDX1JFRElSRUNUKSB7Ci0JCXN0cnVjdCBkc3RfZW50cnkgKmRzdCA9 IF9fc2tfZHN0X2NoZWNrKHNrLCBucC0+ZHN0X2Nvb2tpZSk7CisJCWlmICghc29ja19vd25lZF9i eV91c2VyKHNrKSkgeworCQkJc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gX19za19kc3RfY2hlY2so c2ssIG5wLT5kc3RfY29va2llKTsKIAotCQlpZiAoZHN0KQotCQkJZHN0LT5vcHMtPnJlZGlyZWN0 KGRzdCwgc2ssIHNrYik7CisJCQlpZiAoZHN0KQorCQkJCWRzdC0+b3BzLT5yZWRpcmVjdChkc3Qs IHNrLCBza2IpOworCQl9CiAJCWdvdG8gb3V0OwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQv aXBfb3V0cHV0LmMgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYwppbmRleCBlZGFiNzI1ZmVjY2MuLjNk MmY2NmZhZDMyMiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMKKysrIGIvbmV0L2lw djQvaXBfb3V0cHV0LmMKQEAgLTg4Nyw3ICs4ODcsNyBAQCBzdGF0aWMgaW50IF9faXBfYXBwZW5k X2RhdGEoc3RydWN0IHNvY2sgKnNrLAogCWNvcmstPmxlbmd0aCArPSBsZW5ndGg7CiAJaWYgKCgo bGVuZ3RoID4gbXR1KSB8fCAoc2tiICYmIHNrYl9pc19nc28oc2tiKSkpICYmCiAJICAgIChzay0+ c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApICYmCi0JICAgIChydC0+ZHN0LmRldi0+ZmVhdHVy ZXMgJiBORVRJRl9GX1VGTykgJiYgIXJ0LT5kc3QuaGVhZGVyX2xlbiAmJgorCSAgICAocnQtPmRz dC5kZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9VRk8pICYmICFkc3RfeGZybSgmcnQtPmRzdCkgJiYK IAkgICAgKHNrLT5za190eXBlID09IFNPQ0tfREdSQU0pKSB7CiAJCWVyciA9IGlwX3Vmb19hcHBl bmRfZGF0YShzaywgcXVldWUsIGdldGZyYWcsIGZyb20sIGxlbmd0aCwKIAkJCQkJIGhoX2xlbiwg ZnJhZ2hlYWRlcmxlbiwgdHJhbnNoZHJsZW4sCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0 ZXIvbmZfbmF0X3NubXBfYmFzaWMuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfc25tcF9i YXNpYy5jCmluZGV4IDdjNjc2NjcxMzI5ZC4uNjI5M2RjMTY5ZTJkIDEwMDY0NAotLS0gYS9uZXQv aXB2NC9uZXRmaWx0ZXIvbmZfbmF0X3NubXBfYmFzaWMuYworKysgYi9uZXQvaXB2NC9uZXRmaWx0 ZXIvbmZfbmF0X3NubXBfYmFzaWMuYwpAQCAtMTI2MCwxNiArMTI2MCw2IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdF9wb2xpY3kgc25tcF9leHBfcG9saWN5ID0gewog CS50aW1lb3V0CT0gMTgwLAogfTsKIAotc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVy IHNubXBfaGVscGVyIF9fcmVhZF9tb3N0bHkgPSB7Ci0JLm1lCQkJPSBUSElTX01PRFVMRSwKLQku aGVscAkJCT0gaGVscCwKLQkuZXhwZWN0X3BvbGljeQkJPSAmc25tcF9leHBfcG9saWN5LAotCS5u YW1lCQkJPSAic25tcCIsCi0JLnR1cGxlLnNyYy5sM251bQk9IEFGX0lORVQsCi0JLnR1cGxlLnNy Yy51LnVkcC5wb3J0CT0gY3B1X3RvX2JlMTYoU05NUF9QT1JUKSwKLQkudHVwbGUuZHN0LnByb3Rv bnVtCT0gSVBQUk9UT19VRFAsCi19OwotCiBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxw ZXIgc25tcF90cmFwX2hlbHBlciBfX3JlYWRfbW9zdGx5ID0gewogCS5tZQkJCT0gVEhJU19NT0RV TEUsCiAJLmhlbHAJCQk9IGhlbHAsCkBAIC0xMjg4LDE3ICsxMjc4LDEwIEBAIHN0YXRpYyBzdHJ1 Y3QgbmZfY29ubnRyYWNrX2hlbHBlciBzbm1wX3RyYXBfaGVscGVyIF9fcmVhZF9tb3N0bHkgPSB7 CiAKIHN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9zbm1wX2Jhc2ljX2luaXQodm9pZCkKIHsKLQlp bnQgcmV0ID0gMDsKLQogCUJVR19PTihuZl9uYXRfc25tcF9ob29rICE9IE5VTEwpOwogCVJDVV9J TklUX1BPSU5URVIobmZfbmF0X3NubXBfaG9vaywgaGVscCk7CiAKLQlyZXQgPSBuZl9jb25udHJh Y2tfaGVscGVyX3JlZ2lzdGVyKCZzbm1wX3RyYXBfaGVscGVyKTsKLQlpZiAocmV0IDwgMCkgewot CQluZl9jb25udHJhY2tfaGVscGVyX3VucmVnaXN0ZXIoJnNubXBfaGVscGVyKTsKLQkJcmV0dXJu IHJldDsKLQl9Ci0JcmV0dXJuIHJldDsKKwlyZXR1cm4gbmZfY29ubnRyYWNrX2hlbHBlcl9yZWdp c3Rlcigmc25tcF90cmFwX2hlbHBlcik7CiB9CiAKIHN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRf c25tcF9iYXNpY19maW5pKHZvaWQpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIv bmV0L2lwdjQvdGNwX2lwdjQuYwppbmRleCBmNjZmMDMzYzUxZmUuLjQ5ODRkYTFhMzFiMyAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuYworKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCkBA IC0zOTEsNyArMzkxLDggQEAgdm9pZCB0Y3BfdjRfZXJyKHN0cnVjdCBza19idWZmICppY21wX3Nr YiwgdTMyIGluZm8pCiAKIAlzd2l0Y2ggKHR5cGUpIHsKIAljYXNlIElDTVBfUkVESVJFQ1Q6Ci0J CWRvX3JlZGlyZWN0KGljbXBfc2tiLCBzayk7CisJCWlmICghc29ja19vd25lZF9ieV91c2VyKHNr KSkKKwkJCWRvX3JlZGlyZWN0KGljbXBfc2tiLCBzayk7CiAJCWdvdG8gb3V0OwogCWNhc2UgSUNN UF9TT1VSQ0VfUVVFTkNIOgogCQkvKiBKdXN0IHNpbGVudGx5IGlnbm9yZSB0aGVzZS4gKi8KZGlm ZiAtLWdpdCBhL25ldC9pcHY2L2FmX2luZXQ2LmMgYi9uZXQvaXB2Ni9hZl9pbmV0Ni5jCmluZGV4 IDhhYWJhY2RkNWRkNy4uZmVlZDQ2ZjRkNzI2IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZl9pbmV0 Ni5jCisrKyBiL25ldC9pcHY2L2FmX2luZXQ2LmMKQEAgLTg5OSw4ICs4OTksNiBAQCBzdGF0aWMg aW50IF9faW5pdCBpbmV0Nl9pbml0KHZvaWQpCiAJaWYgKGVycikKIAkJZ290byBpZ21wX2ZhaWw7 CiAKLQlpcHY2X3N0dWIgPSAmaXB2Nl9zdHViX2ltcGw7Ci0KIAllcnIgPSBpcHY2X25ldGZpbHRl cl9pbml0KCk7CiAJaWYgKGVycikKIAkJZ290byBuZXRmaWx0ZXJfZmFpbDsKQEAgLTk2NCw2ICs5 NjIsMTAgQEAgc3RhdGljIGludCBfX2luaXQgaW5ldDZfaW5pdCh2b2lkKQogCWlmIChlcnIpCiAJ CWdvdG8gc3lzY3RsX2ZhaWw7CiAjZW5kaWYKKworCS8qIGVuc3VyZSB0aGF0IGlwdjYgc3R1YnMg YXJlIHZpc2libGUgb25seSBhZnRlciBpcHY2IGlzIHJlYWR5ICovCisJd21iKCk7CisJaXB2Nl9z dHViID0gJmlwdjZfc3R1Yl9pbXBsOwogb3V0OgogCXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBh L25ldC9pcHY2L2lwNl9maWIuYyBiL25ldC9pcHY2L2lwNl9maWIuYwppbmRleCA1YzNmMGRjMWM3 NTQuLmY1ZTk5YTg1YmY5MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jCisrKyBiL25l dC9pcHY2L2lwNl9maWIuYwpAQCAtODYyLDYgKzg2Miw4IEBAIHN0YXRpYyBpbnQgZmliNl9hZGRf cnQybm9kZShzdHJ1Y3QgZmliNl9ub2RlICpmbiwgc3RydWN0IHJ0Nl9pbmZvICpydCwKIAkJCWlu cyA9ICZydC0+ZHN0LnJ0Nl9uZXh0OwogCQkJaXRlciA9ICppbnM7CiAJCQl3aGlsZSAoaXRlcikg eworCQkJCWlmIChpdGVyLT5ydDZpX21ldHJpYyA+IHJ0LT5ydDZpX21ldHJpYykKKwkJCQkJYnJl YWs7CiAJCQkJaWYgKHJ0Nl9xdWFsaWZ5X2Zvcl9lY21wKGl0ZXIpKSB7CiAJCQkJCSppbnMgPSBp dGVyLT5kc3QucnQ2X25leHQ7CiAJCQkJCWZpYjZfcHVyZ2VfcnQoaXRlciwgZm4sIGluZm8tPm5s X25ldCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZf b3V0cHV0LmMKaW5kZXggY2JlN2RkZWI2OWMwLi4yNDcyYWI5MzkyYWUgMTAwNjQ0Ci0tLSBhL25l dC9pcHY2L2lwNl9vdXRwdXQuYworKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKQEAgLTEyOTQs NyArMTI5NCw3IEBAIGludCBpcDZfYXBwZW5kX2RhdGEoc3RydWN0IHNvY2sgKnNrLCBpbnQgZ2V0 ZnJhZyh2b2lkICpmcm9tLCBjaGFyICp0bywKIAlpZiAoKChsZW5ndGggPiBtdHUpIHx8CiAJICAg ICAoc2tiICYmIHNrYl9pc19nc28oc2tiKSkpICYmCiAJICAgIChzay0+c2tfcHJvdG9jb2wgPT0g SVBQUk9UT19VRFApICYmCi0JICAgIChydC0+ZHN0LmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1VG TykgJiYgIXJ0LT5kc3QuaGVhZGVyX2xlbiAmJgorCSAgICAocnQtPmRzdC5kZXYtPmZlYXR1cmVz ICYgTkVUSUZfRl9VRk8pICYmICFkc3RfeGZybSgmcnQtPmRzdCkgJiYKIAkgICAgKHNrLT5za190 eXBlID09IFNPQ0tfREdSQU0pKSB7CiAJCWVyciA9IGlwNl91Zm9fYXBwZW5kX2RhdGEoc2ssIGdl dGZyYWcsIGZyb20sIGxlbmd0aCwKIAkJCQkJICBoaF9sZW4sIGZyYWdoZWFkZXJsZW4sIGV4dGhk cmxlbiwKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25kaXNjLmMgYi9uZXQvaXB2Ni9uZGlzYy5jCmlu ZGV4IDU3NzMzODIwNDg2My4uNTZmNzdjNThjOWFlIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZGlz Yy5jCisrKyBiL25ldC9pcHY2L25kaXNjLmMKQEAgLTE2MDgsNyArMTYwOCw4IEBAIHN0YXRpYyBp bnQgbmRpc2NfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWdu ZWQgbG9uZyBldmVudCwKIAkJaWRldiA9IGluNl9kZXZfZ2V0KGRldik7CiAJCWlmICghaWRldikK IAkJCWJyZWFrOwotCQlpZiAoaWRldi0+Y25mLm5kaXNjX25vdGlmeSkKKwkJaWYgKGlkZXYtPmNu Zi5uZGlzY19ub3RpZnkgfHwKKwkJICAgIG5ldC0+aXB2Ni5kZXZjb25mX2FsbC0+bmRpc2Nfbm90 aWZ5KQogCQkJbmRpc2Nfc2VuZF91bnNvbF9uYShkZXYpOwogCQlpbjZfZGV2X3B1dChpZGV2KTsK IAkJYnJlYWs7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUu YwppbmRleCA4MGEzYjYyMWRjMDkuLjU0ZTYwYjQyMDgzMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYv cm91dGUuYworKysgYi9uZXQvaXB2Ni9yb3V0ZS5jCkBAIC0yNTgyLDYgKzI1ODIsOCBAQCBzdGF0 aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LAogCX0KIAllbHNlIGlmIChydC0+ cnQ2aV9mbGFncyAmIFJURl9MT0NBTCkKIAkJcnRtLT5ydG1fdHlwZSA9IFJUTl9MT0NBTDsKKwll bHNlIGlmIChydC0+cnQ2aV9mbGFncyAmIFJURl9BTllDQVNUKQorCQlydG0tPnJ0bV90eXBlID0g UlROX0FOWUNBU1Q7CiAJZWxzZSBpZiAocnQtPmRzdC5kZXYgJiYgKHJ0LT5kc3QuZGV2LT5mbGFn cyAmIElGRl9MT09QQkFDSykpCiAJCXJ0bS0+cnRtX3R5cGUgPSBSVE5fTE9DQUw7CiAJZWxzZQpk aWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5k ZXggYjU3MzViMzA2NjdkLi40MDk4MjQzZjY1ODkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3RjcF9p cHY2LmMKKysrIGIvbmV0L2lwdjYvdGNwX2lwdjYuYwpAQCAtMzg2LDEwICszODYsMTIgQEAgc3Rh dGljIHZvaWQgdGNwX3Y2X2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfc2ti X3Bhcm0gKm9wdCwKIAlucCA9IGluZXQ2X3NrKHNrKTsKIAogCWlmICh0eXBlID09IE5ESVNDX1JF RElSRUNUKSB7Ci0JCXN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IF9fc2tfZHN0X2NoZWNrKHNrLCBu cC0+ZHN0X2Nvb2tpZSk7CisJCWlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkgeworCQkJc3Ry dWN0IGRzdF9lbnRyeSAqZHN0ID0gX19za19kc3RfY2hlY2soc2ssIG5wLT5kc3RfY29va2llKTsK IAotCQlpZiAoZHN0KQotCQkJZHN0LT5vcHMtPnJlZGlyZWN0KGRzdCwgc2ssIHNrYik7CisJCQlp ZiAoZHN0KQorCQkJCWRzdC0+b3BzLT5yZWRpcmVjdChkc3QsIHNrLCBza2IpOworCQl9CiAJCWdv dG8gb3V0OwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2tleS9hZl9rZXkuYyBiL25ldC9rZXkvYWZf a2V5LmMKaW5kZXggYTlmMjVmZGVlYjRiLi45N2Q5NGZhMjg3ZWQgMTAwNjQ0Ci0tLSBhL25ldC9r ZXkvYWZfa2V5LmMKKysrIGIvbmV0L2tleS9hZl9rZXkuYwpAQCAtNjMsNiArNjMsNyBAQCBzdHJ1 Y3QgcGZrZXlfc29jayB7CiAJCX0gdTsKIAkJc3RydWN0IHNrX2J1ZmYJKnNrYjsKIAl9IGR1bXA7 CisJc3RydWN0IG11dGV4IGR1bXBfbG9jazsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBm a2V5X3NvY2sgKnBma2V5X3NrKHN0cnVjdCBzb2NrICpzaykKQEAgLTEzOSw2ICsxNDAsNyBAQCBz dGF0aWMgaW50IHBma2V5X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNv Y2ssIGludCBwcm90b2NvbCwKIHsKIAlzdHJ1Y3QgbmV0bnNfcGZrZXkgKm5ldF9wZmtleSA9IG5l dF9nZW5lcmljKG5ldCwgcGZrZXlfbmV0X2lkKTsKIAlzdHJ1Y3Qgc29jayAqc2s7CisJc3RydWN0 IHBma2V5X3NvY2sgKnBmazsKIAlpbnQgZXJyOwogCiAJaWYgKCFuc19jYXBhYmxlKG5ldC0+dXNl cl9ucywgQ0FQX05FVF9BRE1JTikpCkBAIC0xNTMsNiArMTU1LDkgQEAgc3RhdGljIGludCBwZmtl eV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9j b2wsCiAJaWYgKHNrID09IE5VTEwpCiAJCWdvdG8gb3V0OwogCisJcGZrID0gcGZrZXlfc2soc2sp OworCW11dGV4X2luaXQoJnBmay0+ZHVtcF9sb2NrKTsKKwogCXNvY2stPm9wcyA9ICZwZmtleV9v cHM7CiAJc29ja19pbml0X2RhdGEoc29jaywgc2spOwogCkBAIC0yODEsMTMgKzI4NiwyMyBAQCBz dGF0aWMgaW50IHBma2V5X2RvX2R1bXAoc3RydWN0IHBma2V5X3NvY2sgKnBmaykKIAlzdHJ1Y3Qg c2FkYl9tc2cgKmhkcjsKIAlpbnQgcmM7CiAKKwltdXRleF9sb2NrKCZwZmstPmR1bXBfbG9jayk7 CisJaWYgKCFwZmstPmR1bXAuZHVtcCkgeworCQlyYyA9IDA7CisJCWdvdG8gb3V0OworCX0KKwog CXJjID0gcGZrLT5kdW1wLmR1bXAocGZrKTsKLQlpZiAocmMgPT0gLUVOT0JVRlMpCi0JCXJldHVy biAwOworCWlmIChyYyA9PSAtRU5PQlVGUykgeworCQlyYyA9IDA7CisJCWdvdG8gb3V0OworCX0K IAogCWlmIChwZmstPmR1bXAuc2tiKSB7Ci0JCWlmICghcGZrZXlfY2FuX2R1bXAoJnBmay0+c2sp KQotCQkJcmV0dXJuIDA7CisJCWlmICghcGZrZXlfY2FuX2R1bXAoJnBmay0+c2spKSB7CisJCQly YyA9IDA7CisJCQlnb3RvIG91dDsKKwkJfQogCiAJCWhkciA9IChzdHJ1Y3Qgc2FkYl9tc2cgKikg cGZrLT5kdW1wLnNrYi0+ZGF0YTsKIAkJaGRyLT5zYWRiX21zZ19zZXEgPSAwOwpAQCAtMjk4LDYg KzMxMyw5IEBAIHN0YXRpYyBpbnQgcGZrZXlfZG9fZHVtcChzdHJ1Y3QgcGZrZXlfc29jayAqcGZr KQogCX0KIAogCXBma2V5X3Rlcm1pbmF0ZV9kdW1wKHBmayk7CisKK291dDoKKwltdXRleF91bmxv Y2soJnBmay0+ZHVtcF9sb2NrKTsKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTE3OTUsMTkgKzE4MTMs MjYgQEAgc3RhdGljIGludCBwZmtleV9kdW1wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1 ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHNhZGJfbXMKIAlzdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRl ciAqZmlsdGVyID0gTlVMTDsKIAlzdHJ1Y3QgcGZrZXlfc29jayAqcGZrID0gcGZrZXlfc2soc2sp OwogCi0JaWYgKHBmay0+ZHVtcC5kdW1wICE9IE5VTEwpCisJbXV0ZXhfbG9jaygmcGZrLT5kdW1w X2xvY2spOworCWlmIChwZmstPmR1bXAuZHVtcCAhPSBOVUxMKSB7CisJCW11dGV4X3VubG9jaygm cGZrLT5kdW1wX2xvY2spOwogCQlyZXR1cm4gLUVCVVNZOworCX0KIAogCXByb3RvID0gcGZrZXlf c2F0eXBlMnByb3RvKGhkci0+c2FkYl9tc2dfc2F0eXBlKTsKLQlpZiAocHJvdG8gPT0gMCkKKwlp ZiAocHJvdG8gPT0gMCkgeworCQltdXRleF91bmxvY2soJnBmay0+ZHVtcF9sb2NrKTsKIAkJcmV0 dXJuIC1FSU5WQUw7CisJfQogCiAJaWYgKGV4dF9oZHJzW1NBREJfWF9FWFRfRklMVEVSIC0gMV0p IHsKIAkJc3RydWN0IHNhZGJfeF9maWx0ZXIgKnhmaWx0ZXIgPSBleHRfaGRyc1tTQURCX1hfRVhU X0ZJTFRFUiAtIDFdOwogCiAJCWZpbHRlciA9IGttYWxsb2Moc2l6ZW9mKCpmaWx0ZXIpLCBHRlBf S0VSTkVMKTsKLQkJaWYgKGZpbHRlciA9PSBOVUxMKQorCQlpZiAoZmlsdGVyID09IE5VTEwpIHsK KwkJCW11dGV4X3VubG9jaygmcGZrLT5kdW1wX2xvY2spOwogCQkJcmV0dXJuIC1FTk9NRU07CisJ CX0KIAogCQltZW1jcHkoJmZpbHRlci0+c2FkZHIsICZ4ZmlsdGVyLT5zYWRiX3hfZmlsdGVyX3Nh ZGRyLAogCQkgICAgICAgc2l6ZW9mKHhmcm1fYWRkcmVzc190KSk7CkBAIC0xODIzLDYgKzE4NDgs NyBAQCBzdGF0aWMgaW50IHBma2V5X2R1bXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBjb25zdCBzdHJ1Y3Qgc2FkYl9tcwogCXBmay0+ZHVtcC5kdW1wID0gcGZrZXlfZHVt cF9zYTsKIAlwZmstPmR1bXAuZG9uZSA9IHBma2V5X2R1bXBfc2FfZG9uZTsKIAl4ZnJtX3N0YXRl X3dhbGtfaW5pdCgmcGZrLT5kdW1wLnUuc3RhdGUsIHByb3RvLCBmaWx0ZXIpOworCW11dGV4X3Vu bG9jaygmcGZrLT5kdW1wX2xvY2spOwogCiAJcmV0dXJuIHBma2V5X2RvX2R1bXAocGZrKTsKIH0K QEAgLTI2ODEsMTQgKzI3MDcsMTggQEAgc3RhdGljIGludCBwZmtleV9zcGRkdW1wKHN0cnVjdCBz b2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHNhZGIKIHsKIAlzdHJ1 Y3QgcGZrZXlfc29jayAqcGZrID0gcGZrZXlfc2soc2spOwogCi0JaWYgKHBmay0+ZHVtcC5kdW1w ICE9IE5VTEwpCisJbXV0ZXhfbG9jaygmcGZrLT5kdW1wX2xvY2spOworCWlmIChwZmstPmR1bXAu ZHVtcCAhPSBOVUxMKSB7CisJCW11dGV4X3VubG9jaygmcGZrLT5kdW1wX2xvY2spOwogCQlyZXR1 cm4gLUVCVVNZOworCX0KIAogCXBmay0+ZHVtcC5tc2dfdmVyc2lvbiA9IGhkci0+c2FkYl9tc2df dmVyc2lvbjsKIAlwZmstPmR1bXAubXNnX3BvcnRpZCA9IGhkci0+c2FkYl9tc2dfcGlkOwogCXBm ay0+ZHVtcC5kdW1wID0gcGZrZXlfZHVtcF9zcDsKIAlwZmstPmR1bXAuZG9uZSA9IHBma2V5X2R1 bXBfc3BfZG9uZTsKIAl4ZnJtX3BvbGljeV93YWxrX2luaXQoJnBmay0+ZHVtcC51LnBvbGljeSwg WEZSTV9QT0xJQ1lfVFlQRV9NQUlOKTsKKwltdXRleF91bmxvY2soJnBmay0+ZHVtcF9sb2NrKTsK IAogCXJldHVybiBwZmtleV9kb19kdW1wKHBmayk7CiB9CmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9s MnRwX2NvcmUuYyBiL25ldC9sMnRwL2wydHBfY29yZS5jCmluZGV4IDZlMWU5OGMzYmRjZC4uMzg0 ZDkyZWNkMjZhIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuYworKysgYi9uZXQvbDJ0 cC9sMnRwX2NvcmUuYwpAQCAtMjc3LDcgKzI3Nyw1NyBAQCBzdHJ1Y3QgbDJ0cF9zZXNzaW9uICps MnRwX3Nlc3Npb25fZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVu bgogfQogRVhQT1JUX1NZTUJPTF9HUEwobDJ0cF9zZXNzaW9uX2ZpbmQpOwogCi1zdHJ1Y3QgbDJ0 cF9zZXNzaW9uICpsMnRwX3Nlc3Npb25fZmluZF9udGgoc3RydWN0IGwydHBfdHVubmVsICp0dW5u ZWwsIGludCBudGgpCisvKiBMaWtlIGwydHBfc2Vzc2lvbl9maW5kKCkgYnV0IHRha2VzIGEgcmVm ZXJlbmNlIG9uIHRoZSByZXR1cm5lZCBzZXNzaW9uLgorICogT3B0aW9uYWxseSBjYWxscyBzZXNz aW9uLT5yZWYoKSB0b28gaWYgZG9fcmVmIGlzIHRydWUuCisgKi8KK3N0cnVjdCBsMnRwX3Nlc3Np b24gKmwydHBfc2Vzc2lvbl9nZXQoc3RydWN0IG5ldCAqbmV0LAorCQkJCSAgICAgIHN0cnVjdCBs MnRwX3R1bm5lbCAqdHVubmVsLAorCQkJCSAgICAgIHUzMiBzZXNzaW9uX2lkLCBib29sIGRvX3Jl ZikKK3sKKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqc2Vzc2lvbl9saXN0OworCXN0cnVjdCBsMnRwX3Nl c3Npb24gKnNlc3Npb247CisKKwlpZiAoIXR1bm5lbCkgeworCQlzdHJ1Y3QgbDJ0cF9uZXQgKnBu ID0gbDJ0cF9wZXJuZXQobmV0KTsKKworCQlzZXNzaW9uX2xpc3QgPSBsMnRwX3Nlc3Npb25faWRf aGFzaF8yKHBuLCBzZXNzaW9uX2lkKTsKKworCQlyY3VfcmVhZF9sb2NrX2JoKCk7CisJCWhsaXN0 X2Zvcl9lYWNoX2VudHJ5X3JjdShzZXNzaW9uLCBzZXNzaW9uX2xpc3QsIGdsb2JhbF9obGlzdCkg eworCQkJaWYgKHNlc3Npb24tPnNlc3Npb25faWQgPT0gc2Vzc2lvbl9pZCkgeworCQkJCWwydHBf c2Vzc2lvbl9pbmNfcmVmY291bnQoc2Vzc2lvbik7CisJCQkJaWYgKGRvX3JlZiAmJiBzZXNzaW9u LT5yZWYpCisJCQkJCXNlc3Npb24tPnJlZihzZXNzaW9uKTsKKwkJCQlyY3VfcmVhZF91bmxvY2tf YmgoKTsKKworCQkJCXJldHVybiBzZXNzaW9uOworCQkJfQorCQl9CisJCXJjdV9yZWFkX3VubG9j a19iaCgpOworCisJCXJldHVybiBOVUxMOworCX0KKworCXNlc3Npb25fbGlzdCA9IGwydHBfc2Vz c2lvbl9pZF9oYXNoKHR1bm5lbCwgc2Vzc2lvbl9pZCk7CisJcmVhZF9sb2NrX2JoKCZ0dW5uZWwt PmhsaXN0X2xvY2spOworCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHNlc3Npb24sIHNlc3Npb25fbGlz dCwgaGxpc3QpIHsKKwkJaWYgKHNlc3Npb24tPnNlc3Npb25faWQgPT0gc2Vzc2lvbl9pZCkgewor CQkJbDJ0cF9zZXNzaW9uX2luY19yZWZjb3VudChzZXNzaW9uKTsKKwkJCWlmIChkb19yZWYgJiYg c2Vzc2lvbi0+cmVmKQorCQkJCXNlc3Npb24tPnJlZihzZXNzaW9uKTsKKwkJCXJlYWRfdW5sb2Nr X2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCisJCQlyZXR1cm4gc2Vzc2lvbjsKKwkJfQorCX0K KwlyZWFkX3VubG9ja19iaCgmdHVubmVsLT5obGlzdF9sb2NrKTsKKworCXJldHVybiBOVUxMOwor fQorRVhQT1JUX1NZTUJPTF9HUEwobDJ0cF9zZXNzaW9uX2dldCk7CisKK3N0cnVjdCBsMnRwX3Nl c3Npb24gKmwydHBfc2Vzc2lvbl9nZXRfbnRoKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBp bnQgbnRoLAorCQkJCQkgIGJvb2wgZG9fcmVmKQogewogCWludCBoYXNoOwogCXN0cnVjdCBsMnRw X3Nlc3Npb24gKnNlc3Npb247CkBAIC0yODcsNiArMzM3LDkgQEAgc3RydWN0IGwydHBfc2Vzc2lv biAqbDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBpbnQg bnRoKQogCWZvciAoaGFzaCA9IDA7IGhhc2ggPCBMMlRQX0hBU0hfU0laRTsgaGFzaCsrKSB7CiAJ CWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHNlc3Npb24sICZ0dW5uZWwtPnNlc3Npb25faGxpc3RbaGFz aF0sIGhsaXN0KSB7CiAJCQlpZiAoKytjb3VudCA+IG50aCkgeworCQkJCWwydHBfc2Vzc2lvbl9p bmNfcmVmY291bnQoc2Vzc2lvbik7CisJCQkJaWYgKGRvX3JlZiAmJiBzZXNzaW9uLT5yZWYpCisJ CQkJCXNlc3Npb24tPnJlZihzZXNzaW9uKTsKIAkJCQlyZWFkX3VubG9ja19iaCgmdHVubmVsLT5o bGlzdF9sb2NrKTsKIAkJCQlyZXR1cm4gc2Vzc2lvbjsKIAkJCX0KQEAgLTI5NywxMiArMzUwLDEz IEBAIHN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9maW5kX250aChzdHJ1Y3QgbDJ0 cF90dW5uZWwgKnR1bm5lbCwgaW50IG50aCkKIAogCXJldHVybiBOVUxMOwogfQotRVhQT1JUX1NZ TUJPTF9HUEwobDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGwydHBf c2Vzc2lvbl9nZXRfbnRoKTsKIAogLyogTG9va3VwIGEgc2Vzc2lvbiBieSBpbnRlcmZhY2UgbmFt ZS4KICAqIFRoaXMgaXMgdmVyeSBpbmVmZmljaWVudCBidXQgaXMgb25seSB1c2VkIGJ5IG1hbmFn ZW1lbnQgaW50ZXJmYWNlcy4KICAqLwotc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9u X2ZpbmRfYnlfaWZuYW1lKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqaWZuYW1lKQorc3RydWN0IGwy dHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2dldF9ieV9pZm5hbWUoc3RydWN0IG5ldCAqbmV0LCBj aGFyICppZm5hbWUsCisJCQkJCQlib29sIGRvX3JlZikKIHsKIAlzdHJ1Y3QgbDJ0cF9uZXQgKnBu ID0gbDJ0cF9wZXJuZXQobmV0KTsKIAlpbnQgaGFzaDsKQEAgLTMxMiw3ICszNjYsMTEgQEAgc3Ry dWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2ZpbmRfYnlfaWZuYW1lKHN0cnVjdCBuZXQg Km5ldCwgY2hhciAqaWZuYW1lKQogCWZvciAoaGFzaCA9IDA7IGhhc2ggPCBMMlRQX0hBU0hfU0la RV8yOyBoYXNoKyspIHsKIAkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHNlc3Npb24sICZwbi0+ bDJ0cF9zZXNzaW9uX2hsaXN0W2hhc2hdLCBnbG9iYWxfaGxpc3QpIHsKIAkJCWlmICghc3RyY21w KHNlc3Npb24tPmlmbmFtZSwgaWZuYW1lKSkgeworCQkJCWwydHBfc2Vzc2lvbl9pbmNfcmVmY291 bnQoc2Vzc2lvbik7CisJCQkJaWYgKGRvX3JlZiAmJiBzZXNzaW9uLT5yZWYpCisJCQkJCXNlc3Np b24tPnJlZihzZXNzaW9uKTsKIAkJCQlyY3VfcmVhZF91bmxvY2tfYmgoKTsKKwogCQkJCXJldHVy biBzZXNzaW9uOwogCQkJfQogCQl9CkBAIC0zMjIsNyArMzgwLDQ5IEBAIHN0cnVjdCBsMnRwX3Nl c3Npb24gKmwydHBfc2Vzc2lvbl9maW5kX2J5X2lmbmFtZShzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIg KmlmbmFtZSkKIAogCXJldHVybiBOVUxMOwogfQotRVhQT1JUX1NZTUJPTF9HUEwobDJ0cF9zZXNz aW9uX2ZpbmRfYnlfaWZuYW1lKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGwydHBfc2Vzc2lvbl9nZXRf YnlfaWZuYW1lKTsKKworc3RhdGljIGludCBsMnRwX3Nlc3Npb25fYWRkX3RvX3R1bm5lbChzdHJ1 Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKKwkJCQkgICAgICBzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpz ZXNzaW9uKQoreworCXN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb25fd2FsazsKKwlzdHJ1Y3Qg aGxpc3RfaGVhZCAqZ19oZWFkOworCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOworCXN0cnVjdCBs MnRwX25ldCAqcG47CisKKwloZWFkID0gbDJ0cF9zZXNzaW9uX2lkX2hhc2godHVubmVsLCBzZXNz aW9uLT5zZXNzaW9uX2lkKTsKKworCXdyaXRlX2xvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7 CisJaGxpc3RfZm9yX2VhY2hfZW50cnkoc2Vzc2lvbl93YWxrLCBoZWFkLCBobGlzdCkKKwkJaWYg KHNlc3Npb25fd2Fsay0+c2Vzc2lvbl9pZCA9PSBzZXNzaW9uLT5zZXNzaW9uX2lkKQorCQkJZ290 byBleGlzdDsKKworCWlmICh0dW5uZWwtPnZlcnNpb24gPT0gTDJUUF9IRFJfVkVSXzMpIHsKKwkJ cG4gPSBsMnRwX3Blcm5ldCh0dW5uZWwtPmwydHBfbmV0KTsKKwkJZ19oZWFkID0gbDJ0cF9zZXNz aW9uX2lkX2hhc2hfMihsMnRwX3Blcm5ldCh0dW5uZWwtPmwydHBfbmV0KSwKKwkJCQkJCXNlc3Np b24tPnNlc3Npb25faWQpOworCisJCXNwaW5fbG9ja19iaCgmcG4tPmwydHBfc2Vzc2lvbl9obGlz dF9sb2NrKTsKKwkJaGxpc3RfZm9yX2VhY2hfZW50cnkoc2Vzc2lvbl93YWxrLCBnX2hlYWQsIGds b2JhbF9obGlzdCkKKwkJCWlmIChzZXNzaW9uX3dhbGstPnNlc3Npb25faWQgPT0gc2Vzc2lvbi0+ c2Vzc2lvbl9pZCkKKwkJCQlnb3RvIGV4aXN0X2dsb2I7CisKKwkJaGxpc3RfYWRkX2hlYWRfcmN1 KCZzZXNzaW9uLT5nbG9iYWxfaGxpc3QsIGdfaGVhZCk7CisJCXNwaW5fdW5sb2NrX2JoKCZwbi0+ bDJ0cF9zZXNzaW9uX2hsaXN0X2xvY2spOworCX0KKworCWhsaXN0X2FkZF9oZWFkKCZzZXNzaW9u LT5obGlzdCwgaGVhZCk7CisJd3JpdGVfdW5sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOwor CisJcmV0dXJuIDA7CisKK2V4aXN0X2dsb2I6CisJc3Bpbl91bmxvY2tfYmgoJnBuLT5sMnRwX3Nl c3Npb25faGxpc3RfbG9jayk7CitleGlzdDoKKwl3cml0ZV91bmxvY2tfYmgoJnR1bm5lbC0+aGxp c3RfbG9jayk7CisKKwlyZXR1cm4gLUVFWElTVDsKK30KIAogLyogTG9va3VwIGEgdHVubmVsIGJ5 IGlkCiAgKi8KQEAgLTYzMiw2ICs3MzIsOSBAQCBzdGF0aWMgaW50IGwydHBfcmVjdl9kYXRhX3Nl cShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogICog YSBkYXRhIChub3QgY29udHJvbCkgZnJhbWUgYmVmb3JlIGNvbWluZyBoZXJlLiBGaWVsZHMgdXAg dG8gdGhlCiAgKiBzZXNzaW9uLWlkIGhhdmUgYWxyZWFkeSBiZWVuIHBhcnNlZCBhbmQgcHRyIHBv aW50cyB0byB0aGUgZGF0YQogICogYWZ0ZXIgdGhlIHNlc3Npb24taWQuCisgKgorICogc2Vzc2lv bi0+cmVmKCkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIHByaW9yIHRvIGwydHBfcmVjdl9jb21tb24o KS4KKyAqIHNlc3Npb24tPmRlcmVmKCkgd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseSBhZnRl ciBza2IgaXMgcHJvY2Vzc2VkLgogICovCiB2b2lkIGwydHBfcmVjdl9jb21tb24oc3RydWN0IGwy dHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICAgICAgdW5zaWdu ZWQgY2hhciAqcHRyLCB1bnNpZ25lZCBjaGFyICpvcHRyLCB1MTYgaGRyZmxhZ3MsCkBAIC02NDEs MTQgKzc0NCw2IEBAIHZvaWQgbDJ0cF9yZWN2X2NvbW1vbihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpz ZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCBvZmZzZXQ7CiAJdTMyIG5zLCBucjsK IAotCS8qIFRoZSByZWYgY291bnQgaXMgaW5jcmVhc2VkIHNpbmNlIHdlIG5vdyBob2xkIGEgcG9p bnRlciB0bwotCSAqIHRoZSBzZXNzaW9uLiBUYWtlIGNhcmUgdG8gZGVjcmVtZW50IHRoZSByZWZj bnQgd2hlbiBleGl0aW5nCi0JICogdGhpcyBmdW5jdGlvbiBmcm9tIG5vdyBvbi4uLgotCSAqLwot CWwydHBfc2Vzc2lvbl9pbmNfcmVmY291bnQoc2Vzc2lvbik7Ci0JaWYgKHNlc3Npb24tPnJlZikK LQkJKCpzZXNzaW9uLT5yZWYpKHNlc3Npb24pOwotCiAJLyogUGFyc2UgYW5kIGNoZWNrIG9wdGlv bmFsIGNvb2tpZSAqLwogCWlmIChzZXNzaW9uLT5wZWVyX2Nvb2tpZV9sZW4gPiAwKSB7CiAJCWlm IChtZW1jbXAocHRyLCAmc2Vzc2lvbi0+cGVlcl9jb29raWVbMF0sIHNlc3Npb24tPnBlZXJfY29v a2llX2xlbikpIHsKQEAgLTgwMSw4ICs4OTYsNiBAQCB2b2lkIGwydHBfcmVjdl9jb21tb24oc3Ry dWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkvKiBUcnkg dG8gZGVxdWV1ZSBhcyBtYW55IHNrYnMgZnJvbSByZW9yZGVyX3EgYXMgd2UgY2FuLiAqLwogCWwy dHBfcmVjdl9kZXF1ZXVlKHNlc3Npb24pOwogCi0JbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChz ZXNzaW9uKTsKLQogCXJldHVybjsKIAogZGlzY2FyZDoKQEAgLTgxMSw4ICs5MDQsNiBAQCB2b2lk IGwydHBfcmVjdl9jb21tb24oc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNr X2J1ZmYgKnNrYiwKIAogCWlmIChzZXNzaW9uLT5kZXJlZikKIAkJKCpzZXNzaW9uLT5kZXJlZiko c2Vzc2lvbik7Ci0KLQlsMnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24pOwogfQogRVhQ T1JUX1NZTUJPTChsMnRwX3JlY3ZfY29tbW9uKTsKIApAQCAtOTE5LDggKzEwMTAsMTQgQEAgc3Rh dGljIGludCBsMnRwX3VkcF9yZWN2X2NvcmUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0 cnVjdCBza19idWZmICpza2IsCiAJfQogCiAJLyogRmluZCB0aGUgc2Vzc2lvbiBjb250ZXh0ICov Ci0Jc2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9maW5kKHR1bm5lbC0+bDJ0cF9uZXQsIHR1bm5lbCwg c2Vzc2lvbl9pZCk7CisJc2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9nZXQodHVubmVsLT5sMnRwX25l dCwgdHVubmVsLCBzZXNzaW9uX2lkLCB0cnVlKTsKIAlpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24t PnJlY3Zfc2tiKSB7CisJCWlmIChzZXNzaW9uKSB7CisJCQlpZiAoc2Vzc2lvbi0+ZGVyZWYpCisJ CQkJc2Vzc2lvbi0+ZGVyZWYoc2Vzc2lvbik7CisJCQlsMnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50 KHNlc3Npb24pOworCQl9CisKIAkJLyogTm90IGZvdW5kPyBQYXNzIHRvIHVzZXJzcGFjZSB0byBk ZWFsIHdpdGggKi8KIAkJbDJ0cF9pbmZvKHR1bm5lbCwgTDJUUF9NU0dfREFUQSwKIAkJCSAgIiVz OiBubyBzZXNzaW9uIGZvdW5kICgldS8ldSkuIFBhc3NpbmcgdXAuXG4iLApAQCAtOTI5LDYgKzEw MjYsNyBAQCBzdGF0aWMgaW50IGwydHBfdWRwX3JlY3ZfY29yZShzdHJ1Y3QgbDJ0cF90dW5uZWwg KnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAlsMnRwX3JlY3ZfY29tbW9uKHNl c3Npb24sIHNrYiwgcHRyLCBvcHRyLCBoZHJmbGFncywgbGVuZ3RoLCBwYXlsb2FkX2hvb2spOwor CWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CiAKIAlyZXR1cm4gMDsKIApAQCAt MTc3NSw2ICsxODczLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwobDJ0cF9zZXNzaW9uX3NldF9oZWFk ZXJfbGVuKTsKIHN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9jcmVhdGUoaW50IHBy aXZfc2l6ZSwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHUzMiBzZXNzaW9uX2lkLCB1MzIg cGVlcl9zZXNzaW9uX2lkLCBzdHJ1Y3QgbDJ0cF9zZXNzaW9uX2NmZyAqY2ZnKQogewogCXN0cnVj dCBsMnRwX3Nlc3Npb24gKnNlc3Npb247CisJaW50IGVycjsKIAogCXNlc3Npb24gPSBremFsbG9j KHNpemVvZihzdHJ1Y3QgbDJ0cF9zZXNzaW9uKSArIHByaXZfc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJ aWYgKHNlc3Npb24gIT0gTlVMTCkgewpAQCAtMTgzMCw2ICsxOTI5LDEzIEBAIHN0cnVjdCBsMnRw X3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9jcmVhdGUoaW50IHByaXZfc2l6ZSwgc3RydWN0IGwydHBf dHVubmVsICp0dW5uCiAKIAkJbDJ0cF9zZXNzaW9uX3NldF9oZWFkZXJfbGVuKHNlc3Npb24sIHR1 bm5lbC0+dmVyc2lvbik7CiAKKwkJZXJyID0gbDJ0cF9zZXNzaW9uX2FkZF90b190dW5uZWwodHVu bmVsLCBzZXNzaW9uKTsKKwkJaWYgKGVycikgeworCQkJa2ZyZWUoc2Vzc2lvbik7CisKKwkJCXJl dHVybiBFUlJfUFRSKGVycik7CisJCX0KKwogCQkvKiBCdW1wIHRoZSByZWZlcmVuY2UgY291bnQu IFRoZSBzZXNzaW9uIGNvbnRleHQgaXMgZGVsZXRlZAogCQkgKiBvbmx5IHdoZW4gdGhpcyBkcm9w cyB0byB6ZXJvLgogCQkgKi8KQEAgLTE4MzksMjggKzE5NDUsMTQgQEAgc3RydWN0IGwydHBfc2Vz c2lvbiAqbDJ0cF9zZXNzaW9uX2NyZWF0ZShpbnQgcHJpdl9zaXplLCBzdHJ1Y3QgbDJ0cF90dW5u ZWwgKnR1bm4KIAkJLyogRW5zdXJlIHR1bm5lbCBzb2NrZXQgaXNuJ3QgZGVsZXRlZCAqLwogCQlz b2NrX2hvbGQodHVubmVsLT5zb2NrKTsKIAotCQkvKiBBZGQgc2Vzc2lvbiB0byB0aGUgdHVubmVs J3MgaGFzaCBsaXN0ICovCi0JCXdyaXRlX2xvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7Ci0J CWhsaXN0X2FkZF9oZWFkKCZzZXNzaW9uLT5obGlzdCwKLQkJCSAgICAgICBsMnRwX3Nlc3Npb25f aWRfaGFzaCh0dW5uZWwsIHNlc3Npb25faWQpKTsKLQkJd3JpdGVfdW5sb2NrX2JoKCZ0dW5uZWwt PmhsaXN0X2xvY2spOwotCi0JCS8qIEFuZCB0byB0aGUgZ2xvYmFsIHNlc3Npb24gbGlzdCBpZiBM MlRQdjMgKi8KLQkJaWYgKHR1bm5lbC0+dmVyc2lvbiAhPSBMMlRQX0hEUl9WRVJfMikgewotCQkJ c3RydWN0IGwydHBfbmV0ICpwbiA9IGwydHBfcGVybmV0KHR1bm5lbC0+bDJ0cF9uZXQpOwotCi0J CQlzcGluX2xvY2tfYmgoJnBuLT5sMnRwX3Nlc3Npb25faGxpc3RfbG9jayk7Ci0JCQlobGlzdF9h ZGRfaGVhZF9yY3UoJnNlc3Npb24tPmdsb2JhbF9obGlzdCwKLQkJCQkJICAgbDJ0cF9zZXNzaW9u X2lkX2hhc2hfMihwbiwgc2Vzc2lvbl9pZCkpOwotCQkJc3Bpbl91bmxvY2tfYmgoJnBuLT5sMnRw X3Nlc3Npb25faGxpc3RfbG9jayk7Ci0JCX0KLQogCQkvKiBJZ25vcmUgbWFuYWdlbWVudCBzZXNz aW9uIGluIHNlc3Npb24gY291bnQgdmFsdWUgKi8KIAkJaWYgKHNlc3Npb24tPnNlc3Npb25faWQg IT0gMCkKIAkJCWF0b21pY19pbmMoJmwydHBfc2Vzc2lvbl9jb3VudCk7CisKKwkJcmV0dXJuIHNl c3Npb247CiAJfQogCi0JcmV0dXJuIHNlc3Npb247CisJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChsMnRwX3Nlc3Npb25fY3JlYXRlKTsKIApkaWZmIC0tZ2l0 IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmggYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaAppbmRleCBlOWVj N2QyY2MzNTcuLjEyYjA4MDE2YTMxMiAxMDA2NDQKLS0tIGEvbmV0L2wydHAvbDJ0cF9jb3JlLmgK KysrIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmgKQEAgLTI0MCwxMSArMjQwLDE2IEBAIHN0YXRpYyBp bmxpbmUgc3RydWN0IGwydHBfdHVubmVsICpsMnRwX3NvY2tfdG9fdHVubmVsKHN0cnVjdCBzb2Nr ICpzaykKIAlyZXR1cm4gdHVubmVsOwogfQogCitzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpsMnRwX3Nl c3Npb25fZ2V0KHN0cnVjdCBuZXQgKm5ldCwKKwkJCQkgICAgICBzdHJ1Y3QgbDJ0cF90dW5uZWwg KnR1bm5lbCwKKwkJCQkgICAgICB1MzIgc2Vzc2lvbl9pZCwgYm9vbCBkb19yZWYpOwogc3RydWN0 IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2ZpbmQoc3RydWN0IG5ldCAqbmV0LAogCQkJCSAg ICAgICBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKIAkJCQkgICAgICAgdTMyIHNlc3Npb25f aWQpOwotc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKHN0cnVjdCBs MnRwX3R1bm5lbCAqdHVubmVsLCBpbnQgbnRoKTsKLXN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBf c2Vzc2lvbl9maW5kX2J5X2lmbmFtZShzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIgKmlmbmFtZSk7Citz dHJ1Y3QgbDJ0cF9zZXNzaW9uICpsMnRwX3Nlc3Npb25fZ2V0X250aChzdHJ1Y3QgbDJ0cF90dW5u ZWwgKnR1bm5lbCwgaW50IG50aCwKKwkJCQkJICBib29sIGRvX3JlZik7CitzdHJ1Y3QgbDJ0cF9z ZXNzaW9uICpsMnRwX3Nlc3Npb25fZ2V0X2J5X2lmbmFtZShzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIg KmlmbmFtZSwKKwkJCQkJCWJvb2wgZG9fcmVmKTsKIHN0cnVjdCBsMnRwX3R1bm5lbCAqbDJ0cF90 dW5uZWxfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiB0dW5uZWxfaWQpOwogc3RydWN0IGwydHBf dHVubmVsICpsMnRwX3R1bm5lbF9maW5kX250aChzdHJ1Y3QgbmV0ICpuZXQsIGludCBudGgpOwog CmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2RlYnVnZnMuYyBiL25ldC9sMnRwL2wydHBfZGVi dWdmcy5jCmluZGV4IDJkNjc2MGEyYWUzNC4uZDEwMGFlZDNkMDZmIDEwMDY0NAotLS0gYS9uZXQv bDJ0cC9sMnRwX2RlYnVnZnMuYworKysgYi9uZXQvbDJ0cC9sMnRwX2RlYnVnZnMuYwpAQCAtNTMs NyArNTMsNyBAQCBzdGF0aWMgdm9pZCBsMnRwX2Rmc19uZXh0X3R1bm5lbChzdHJ1Y3QgbDJ0cF9k ZnNfc2VxX2RhdGEgKnBkKQogCiBzdGF0aWMgdm9pZCBsMnRwX2Rmc19uZXh0X3Nlc3Npb24oc3Ry dWN0IGwydHBfZGZzX3NlcV9kYXRhICpwZCkKIHsKLQlwZC0+c2Vzc2lvbiA9IGwydHBfc2Vzc2lv bl9maW5kX250aChwZC0+dHVubmVsLCBwZC0+c2Vzc2lvbl9pZHgpOworCXBkLT5zZXNzaW9uID0g bDJ0cF9zZXNzaW9uX2dldF9udGgocGQtPnR1bm5lbCwgcGQtPnNlc3Npb25faWR4LCB0cnVlKTsK IAlwZC0+c2Vzc2lvbl9pZHgrKzsKIAogCWlmIChwZC0+c2Vzc2lvbiA9PSBOVUxMKSB7CkBAIC0y MzgsMTAgKzIzOCwxNCBAQCBzdGF0aWMgaW50IGwydHBfZGZzX3NlcV9zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdikKIAl9CiAKIAkvKiBTaG93IHRoZSB0dW5uZWwgb3Igc2Vzc2lvbiBj b250ZXh0ICovCi0JaWYgKHBkLT5zZXNzaW9uID09IE5VTEwpCisJaWYgKCFwZC0+c2Vzc2lvbikg ewogCQlsMnRwX2Rmc19zZXFfdHVubmVsX3Nob3cobSwgcGQtPnR1bm5lbCk7Ci0JZWxzZQorCX0g ZWxzZSB7CiAJCWwydHBfZGZzX3NlcV9zZXNzaW9uX3Nob3cobSwgcGQtPnNlc3Npb24pOworCQlp ZiAocGQtPnNlc3Npb24tPmRlcmVmKQorCQkJcGQtPnNlc3Npb24tPmRlcmVmKHBkLT5zZXNzaW9u KTsKKwkJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChwZC0+c2Vzc2lvbik7CisJfQogCiBvdXQ6 CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2V0aC5jIGIvbmV0L2wydHAv bDJ0cF9ldGguYwppbmRleCA3NjEyNWM1N2VlNmQuLjE5MTk4Njc1ZGFlYSAxMDA2NDQKLS0tIGEv bmV0L2wydHAvbDJ0cF9ldGguYworKysgYi9uZXQvbDJ0cC9sMnRwX2V0aC5jCkBAIC0yMjIsMTIg KzIyMiw2IEBAIHN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMy IHR1bm5lbF9pZCwgdTMyIHNlc3Npb25faWQsIHUzMiBwCiAJCWdvdG8gb3V0OwogCX0KIAotCXNl c3Npb24gPSBsMnRwX3Nlc3Npb25fZmluZChuZXQsIHR1bm5lbCwgc2Vzc2lvbl9pZCk7Ci0JaWYg KHNlc3Npb24pIHsKLQkJcmMgPSAtRUVYSVNUOwotCQlnb3RvIG91dDsKLQl9Ci0KIAlpZiAoY2Zn LT5pZm5hbWUpIHsKIAkJZGV2ID0gZGV2X2dldF9ieV9uYW1lKG5ldCwgY2ZnLT5pZm5hbWUpOwog CQlpZiAoZGV2KSB7CkBAIC0yNDEsOCArMjM1LDggQEAgc3RhdGljIGludCBsMnRwX2V0aF9jcmVh dGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgdHVubmVsX2lkLCB1MzIgc2Vzc2lvbl9pZCwgdTMyIHAK IAogCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25fY3JlYXRlKHNpemVvZigqc3ByaXYpLCB0dW5uZWws IHNlc3Npb25faWQsCiAJCQkJICAgICAgcGVlcl9zZXNzaW9uX2lkLCBjZmcpOwotCWlmICghc2Vz c2lvbikgewotCQlyYyA9IC1FTk9NRU07CisJaWYgKElTX0VSUihzZXNzaW9uKSkgeworCQlyYyA9 IFBUUl9FUlIoc2Vzc2lvbik7CiAJCWdvdG8gb3V0OwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2wy dHAvbDJ0cF9pcC5jIGIvbmV0L2wydHAvbDJ0cF9pcC5jCmluZGV4IDVmYzhiNjg5OWI5MC4uMWVj YzcxY2U4Y2FlIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lwLmMKKysrIGIvbmV0L2wydHAv bDJ0cF9pcC5jCkBAIC0xNDIsMTkgKzE0MiwxOSBAQCBzdGF0aWMgaW50IGwydHBfaXBfcmVjdihz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCX0KIAogCS8qIE9rLCB0aGlzIGlzIGEgZGF0YSBwYWNrZXQu IExvb2t1cCB0aGUgc2Vzc2lvbi4gKi8KLQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2ZpbmQobmV0 LCBOVUxMLCBzZXNzaW9uX2lkKTsKLQlpZiAoc2Vzc2lvbiA9PSBOVUxMKQorCXNlc3Npb24gPSBs MnRwX3Nlc3Npb25fZ2V0KG5ldCwgTlVMTCwgc2Vzc2lvbl9pZCwgdHJ1ZSk7CisJaWYgKCFzZXNz aW9uKQogCQlnb3RvIGRpc2NhcmQ7CiAKIAl0dW5uZWwgPSBzZXNzaW9uLT50dW5uZWw7Ci0JaWYg KHR1bm5lbCA9PSBOVUxMKQotCQlnb3RvIGRpc2NhcmQ7CisJaWYgKCF0dW5uZWwpCisJCWdvdG8g ZGlzY2FyZF9zZXNzOwogCiAJLyogVHJhY2UgcGFja2V0IGNvbnRlbnRzLCBpZiBlbmFibGVkICov CiAJaWYgKHR1bm5lbC0+ZGVidWcgJiBMMlRQX01TR19EQVRBKSB7CiAJCWxlbmd0aCA9IG1pbigz MnUsIHNrYi0+bGVuKTsKIAkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgbGVuZ3RoKSkKLQkJCWdv dG8gZGlzY2FyZDsKKwkJCWdvdG8gZGlzY2FyZF9zZXNzOwogCiAJCS8qIFBvaW50IHRvIEwyVFAg aGVhZGVyICovCiAJCW9wdHIgPSBwdHIgPSBza2ItPmRhdGE7CkBAIC0xNjQsNiArMTY0LDcgQEAg c3RhdGljIGludCBsMnRwX2lwX3JlY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl9CiAKIAlsMnRw X3JlY3ZfY29tbW9uKHNlc3Npb24sIHNrYiwgcHRyLCBvcHRyLCAwLCBza2ItPmxlbiwgdHVubmVs LT5yZWN2X3BheWxvYWRfaG9vayk7CisJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9u KTsKIAogCXJldHVybiAwOwogCkBAIC0xOTksNiArMjAwLDEyIEBAIHN0YXRpYyBpbnQgbDJ0cF9p cF9yZWN2KHN0cnVjdCBza19idWZmICpza2IpCiAKIAlyZXR1cm4gc2tfcmVjZWl2ZV9za2Ioc2ss IHNrYiwgMSk7CiAKK2Rpc2NhcmRfc2VzczoKKwlpZiAoc2Vzc2lvbi0+ZGVyZWYpCisJCXNlc3Np b24tPmRlcmVmKHNlc3Npb24pOworCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7 CisJZ290byBkaXNjYXJkOworCiBkaXNjYXJkX3B1dDoKIAlzb2NrX3B1dChzayk7CiAKZGlmZiAt LWdpdCBhL25ldC9sMnRwL2wydHBfaXA2LmMgYi9uZXQvbDJ0cC9sMnRwX2lwNi5jCmluZGV4IDA1 MzE0NTA2NTdkMi4uYzA1MmQyOTkxZjg0IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lwNi5j CisrKyBiL25ldC9sMnRwL2wydHBfaXA2LmMKQEAgLTE1MywxOSArMTUzLDE5IEBAIHN0YXRpYyBp bnQgbDJ0cF9pcDZfcmVjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCX0KIAogCS8qIE9rLCB0aGlz IGlzIGEgZGF0YSBwYWNrZXQuIExvb2t1cCB0aGUgc2Vzc2lvbi4gKi8KLQlzZXNzaW9uID0gbDJ0 cF9zZXNzaW9uX2ZpbmQoJmluaXRfbmV0LCBOVUxMLCBzZXNzaW9uX2lkKTsKLQlpZiAoc2Vzc2lv biA9PSBOVUxMKQorCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25fZ2V0KCZpbml0X25ldCwgTlVMTCwg c2Vzc2lvbl9pZCwgdHJ1ZSk7CisJaWYgKCFzZXNzaW9uKQogCQlnb3RvIGRpc2NhcmQ7CiAKIAl0 dW5uZWwgPSBzZXNzaW9uLT50dW5uZWw7Ci0JaWYgKHR1bm5lbCA9PSBOVUxMKQotCQlnb3RvIGRp c2NhcmQ7CisJaWYgKCF0dW5uZWwpCisJCWdvdG8gZGlzY2FyZF9zZXNzOwogCiAJLyogVHJhY2Ug cGFja2V0IGNvbnRlbnRzLCBpZiBlbmFibGVkICovCiAJaWYgKHR1bm5lbC0+ZGVidWcgJiBMMlRQ X01TR19EQVRBKSB7CiAJCWxlbmd0aCA9IG1pbigzMnUsIHNrYi0+bGVuKTsKIAkJaWYgKCFwc2ti X21heV9wdWxsKHNrYiwgbGVuZ3RoKSkKLQkJCWdvdG8gZGlzY2FyZDsKKwkJCWdvdG8gZGlzY2Fy ZF9zZXNzOwogCiAJCS8qIFBvaW50IHRvIEwyVFAgaGVhZGVyICovCiAJCW9wdHIgPSBwdHIgPSBz a2ItPmRhdGE7CkBAIC0xNzYsNiArMTc2LDggQEAgc3RhdGljIGludCBsMnRwX2lwNl9yZWN2KHN0 cnVjdCBza19idWZmICpza2IpCiAKIAlsMnRwX3JlY3ZfY29tbW9uKHNlc3Npb24sIHNrYiwgcHRy LCBvcHRyLCAwLCBza2ItPmxlbiwKIAkJCSB0dW5uZWwtPnJlY3ZfcGF5bG9hZF9ob29rKTsKKwls MnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24pOworCiAJcmV0dXJuIDA7CiAKIHBhc3Nf dXA6CkBAIC0yMTEsNiArMjEzLDEyIEBAIHN0YXRpYyBpbnQgbDJ0cF9pcDZfcmVjdihzdHJ1Y3Qg c2tfYnVmZiAqc2tiKQogCiAJcmV0dXJuIHNrX3JlY2VpdmVfc2tiKHNrLCBza2IsIDEpOwogCitk aXNjYXJkX3Nlc3M6CisJaWYgKHNlc3Npb24tPmRlcmVmKQorCQlzZXNzaW9uLT5kZXJlZihzZXNz aW9uKTsKKwlsMnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24pOworCWdvdG8gZGlzY2Fy ZDsKKwogZGlzY2FyZF9wdXQ6CiAJc29ja19wdXQoc2spOwogCmRpZmYgLS1naXQgYS9uZXQvbDJ0 cC9sMnRwX25ldGxpbmsuYyBiL25ldC9sMnRwL2wydHBfbmV0bGluay5jCmluZGV4IDBhYzkwN2Fk YjJmNC4uYTQ5MmE3ODFjZTllIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYwor KysgYi9uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYwpAQCAtNDMsNyArNDMsOCBAQCBzdGF0aWMgc3Ry dWN0IGdlbmxfZmFtaWx5IGwydHBfbmxfZmFtaWx5ID0gewogLyogQWNjZXNzZWQgdW5kZXIgZ2Vu bCBsb2NrICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGwydHBfbmxfY21kX29wcyAqbDJ0cF9ubF9j bWRfb3BzW19fTDJUUF9QV1RZUEVfTUFYXTsKIAotc3RhdGljIHN0cnVjdCBsMnRwX3Nlc3Npb24g KmwydHBfbmxfc2Vzc2lvbl9maW5kKHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCitzdGF0aWMgc3Ry dWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9ubF9zZXNzaW9uX2dldChzdHJ1Y3QgZ2VubF9pbmZvICpp bmZvLAorCQkJCQkJYm9vbCBkb19yZWYpCiB7CiAJdTMyIHR1bm5lbF9pZDsKIAl1MzIgc2Vzc2lv bl9pZDsKQEAgLTU0LDE0ICs1NSwxNSBAQCBzdGF0aWMgc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0 cF9ubF9zZXNzaW9uX2ZpbmQoc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAogCWlmIChpbmZvLT5h dHRyc1tMMlRQX0FUVFJfSUZOQU1FXSkgewogCQlpZm5hbWUgPSBubGFfZGF0YShpbmZvLT5hdHRy c1tMMlRQX0FUVFJfSUZOQU1FXSk7Ci0JCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25fZmluZF9ieV9p Zm5hbWUobmV0LCBpZm5hbWUpOworCQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2dldF9ieV9pZm5h bWUobmV0LCBpZm5hbWUsIGRvX3JlZik7CiAJfSBlbHNlIGlmICgoaW5mby0+YXR0cnNbTDJUUF9B VFRSX1NFU1NJT05fSURdKSAmJgogCQkgICAoaW5mby0+YXR0cnNbTDJUUF9BVFRSX0NPTk5fSURd KSkgewogCQl0dW5uZWxfaWQgPSBubGFfZ2V0X3UzMihpbmZvLT5hdHRyc1tMMlRQX0FUVFJfQ09O Tl9JRF0pOwogCQlzZXNzaW9uX2lkID0gbmxhX2dldF91MzIoaW5mby0+YXR0cnNbTDJUUF9BVFRS X1NFU1NJT05fSURdKTsKIAkJdHVubmVsID0gbDJ0cF90dW5uZWxfZmluZChuZXQsIHR1bm5lbF9p ZCk7CiAJCWlmICh0dW5uZWwpCi0JCQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2ZpbmQobmV0LCB0 dW5uZWwsIHNlc3Npb25faWQpOworCQkJc2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9nZXQobmV0LCB0 dW5uZWwsIHNlc3Npb25faWQsCisJCQkJCQkgICBkb19yZWYpOwogCX0KIAogCXJldHVybiBzZXNz aW9uOwpAQCAtNTQ5LDcgKzU1MSw3IEBAIHN0YXRpYyBpbnQgbDJ0cF9ubF9jbWRfc2Vzc2lvbl9k ZWxldGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mCiAJc3RydWN0 IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbjsKIAl1MTYgcHdfdHlwZTsKIAotCXNlc3Npb24gPSBsMnRw X25sX3Nlc3Npb25fZmluZChpbmZvKTsKKwlzZXNzaW9uID0gbDJ0cF9ubF9zZXNzaW9uX2dldChp bmZvLCB0cnVlKTsKIAlpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJ CWdvdG8gb3V0OwpAQCAtNTYwLDYgKzU2MiwxMCBAQCBzdGF0aWMgaW50IGwydHBfbmxfY21kX3Nl c3Npb25fZGVsZXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZgog CQlpZiAobDJ0cF9ubF9jbWRfb3BzW3B3X3R5cGVdICYmIGwydHBfbmxfY21kX29wc1twd190eXBl XS0+c2Vzc2lvbl9kZWxldGUpCiAJCQlyZXQgPSAoKmwydHBfbmxfY21kX29wc1twd190eXBlXS0+ c2Vzc2lvbl9kZWxldGUpKHNlc3Npb24pOwogCisJaWYgKHNlc3Npb24tPmRlcmVmKQorCQlzZXNz aW9uLT5kZXJlZihzZXNzaW9uKTsKKwlsMnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24p OworCiBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTU2OSw3ICs1NzUsNyBAQCBzdGF0aWMgaW50 IGwydHBfbmxfY21kX3Nlc3Npb25fbW9kaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBn ZW5sX2luZm8gKmluZgogCWludCByZXQgPSAwOwogCXN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Np b247CiAKLQlzZXNzaW9uID0gbDJ0cF9ubF9zZXNzaW9uX2ZpbmQoaW5mbyk7CisJc2Vzc2lvbiA9 IGwydHBfbmxfc2Vzc2lvbl9nZXQoaW5mbywgZmFsc2UpOwogCWlmIChzZXNzaW9uID09IE5VTEwp IHsKIAkJcmV0ID0gLUVOT0RFVjsKIAkJZ290byBvdXQ7CkBAIC02MDEsNiArNjA3LDggQEAgc3Rh dGljIGludCBsMnRwX25sX2NtZF9zZXNzaW9uX21vZGlmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBz dHJ1Y3QgZ2VubF9pbmZvICppbmYKIAlpZiAoaW5mby0+YXR0cnNbTDJUUF9BVFRSX01SVV0pCiAJ CXNlc3Npb24tPm1ydSA9IG5sYV9nZXRfdTE2KGluZm8tPmF0dHJzW0wyVFBfQVRUUl9NUlVdKTsK IAorCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CisKIG91dDoKIAlyZXR1cm4g cmV0OwogfQpAQCAtNjg2LDI5ICs2OTQsMzQgQEAgc3RhdGljIGludCBsMnRwX25sX2NtZF9zZXNz aW9uX2dldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCXN0 cnVjdCBza19idWZmICptc2c7CiAJaW50IHJldDsKIAotCXNlc3Npb24gPSBsMnRwX25sX3Nlc3Np b25fZmluZChpbmZvKTsKKwlzZXNzaW9uID0gbDJ0cF9ubF9zZXNzaW9uX2dldChpbmZvLCBmYWxz ZSk7CiAJaWYgKHNlc3Npb24gPT0gTlVMTCkgewogCQlyZXQgPSAtRU5PREVWOwotCQlnb3RvIG91 dDsKKwkJZ290byBlcnI7CiAJfQogCiAJbXNnID0gbmxtc2dfbmV3KE5MTVNHX0RFRkFVTFRfU0la RSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtc2cpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBv dXQ7CisJCWdvdG8gZXJyX3JlZjsKIAl9CiAKIAlyZXQgPSBsMnRwX25sX3Nlc3Npb25fc2VuZCht c2csIGluZm8tPnNuZF9wb3J0aWQsIGluZm8tPnNuZF9zZXEsCiAJCQkJICAgMCwgc2Vzc2lvbik7 CiAJaWYgKHJldCA8IDApCi0JCWdvdG8gZXJyX291dDsKKwkJZ290byBlcnJfcmVmX21zZzsKIAot CXJldHVybiBnZW5sbXNnX3VuaWNhc3QoZ2VubF9pbmZvX25ldChpbmZvKSwgbXNnLCBpbmZvLT5z bmRfcG9ydGlkKTsKKwlyZXQgPSBnZW5sbXNnX3VuaWNhc3QoZ2VubF9pbmZvX25ldChpbmZvKSwg bXNnLCBpbmZvLT5zbmRfcG9ydGlkKTsKIAotZXJyX291dDoKLQlubG1zZ19mcmVlKG1zZyk7CisJ bDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKIAotb3V0OgorCXJldHVybiByZXQ7 CisKK2Vycl9yZWZfbXNnOgorCW5sbXNnX2ZyZWUobXNnKTsKK2Vycl9yZWY6CisJbDJ0cF9zZXNz aW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKK2VycjoKIAlyZXR1cm4gcmV0OwogfQogCkBAIC03 MjcsNyArNzQwLDcgQEAgc3RhdGljIGludCBsMnRwX25sX2NtZF9zZXNzaW9uX2R1bXAoc3RydWN0 IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sKIAkJCQlnb3RvIG91dDsKIAkJ fQogCi0JCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25fZmluZF9udGgodHVubmVsLCBzaSk7CisJCXNl c3Npb24gPSBsMnRwX3Nlc3Npb25fZ2V0X250aCh0dW5uZWwsIHNpLCBmYWxzZSk7CiAJCWlmIChz ZXNzaW9uID09IE5VTEwpIHsKIAkJCXRpKys7CiAJCQl0dW5uZWwgPSBOVUxMOwpAQCAtNzM3LDgg Kzc1MCwxMSBAQCBzdGF0aWMgaW50IGwydHBfbmxfY21kX3Nlc3Npb25fZHVtcChzdHJ1Y3Qgc2tf YnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawogCiAJCWlmIChsMnRwX25sX3Nlc3Np b25fc2VuZChza2IsIE5FVExJTktfQ0IoY2ItPnNrYikucG9ydGlkLAogCQkJCQkgY2ItPm5saC0+ bmxtc2dfc2VxLCBOTE1fRl9NVUxUSSwKLQkJCQkJIHNlc3Npb24pIDw9IDApCisJCQkJCSBzZXNz aW9uKSA8PSAwKSB7CisJCQlsMnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24pOwogCQkJ YnJlYWs7CisJCX0KKwkJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKIAogCQlz aSsrOwogCX0KZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfcHBwLmMgYi9uZXQvbDJ0cC9sMnRw X3BwcC5jCmluZGV4IDFhZTY5YTQ2OTVkZS4uOWU2MTA3NWJjMDhiIDEwMDY0NAotLS0gYS9uZXQv bDJ0cC9sMnRwX3BwcC5jCisrKyBiL25ldC9sMnRwL2wydHBfcHBwLmMKQEAgLTQ2OSw2ICs0Njks MTAgQEAgc3RhdGljIHZvaWQgcHBwb2wydHBfc2Vzc2lvbl9jbG9zZShzdHJ1Y3QgbDJ0cF9zZXNz aW9uICpzZXNzaW9uKQogc3RhdGljIHZvaWQgcHBwb2wydHBfc2Vzc2lvbl9kZXN0cnVjdChzdHJ1 Y3Qgc29jayAqc2spCiB7CiAJc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiA9IHNrLT5za191 c2VyX2RhdGE7CisKKwlza2JfcXVldWVfcHVyZ2UoJnNrLT5za19yZWNlaXZlX3F1ZXVlKTsKKwlz a2JfcXVldWVfcHVyZ2UoJnNrLT5za193cml0ZV9xdWV1ZSk7CisKIAlpZiAoc2Vzc2lvbikgewog CQlzay0+c2tfdXNlcl9kYXRhID0gTlVMTDsKIAkJQlVHX09OKHNlc3Npb24tPm1hZ2ljICE9IEwy VFBfU0VTU0lPTl9NQUdJQyk7CkBAIC01MDcsOSArNTExLDYgQEAgc3RhdGljIGludCBwcHBvbDJ0 cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAJCWwydHBfc2Vzc2lvbl9xdWV1ZV9wdXJn ZShzZXNzaW9uKTsKIAkJc29ja19wdXQoc2spOwogCX0KLQlza2JfcXVldWVfcHVyZ2UoJnNrLT5z a19yZWNlaXZlX3F1ZXVlKTsKLQlza2JfcXVldWVfcHVyZ2UoJnNrLT5za193cml0ZV9xdWV1ZSk7 Ci0KIAlyZWxlYXNlX3NvY2soc2spOwogCiAJLyogVGhpcyB3aWxsIGRlbGV0ZSB0aGUgc2Vzc2lv biBjb250ZXh0IHZpYQpAQCAtNjAxLDYgKzYwMiw3IEBAIHN0YXRpYyBpbnQgcHBwb2wydHBfY29u bmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVzZXJ2YWRkciwKIAlp bnQgZXJyb3IgPSAwOwogCXUzMiB0dW5uZWxfaWQsIHBlZXJfdHVubmVsX2lkOwogCXUzMiBzZXNz aW9uX2lkLCBwZWVyX3Nlc3Npb25faWQ7CisJYm9vbCBkcm9wX3JlZmNudCA9IGZhbHNlOwogCWlu dCB2ZXIgPSAyOwogCWludCBmZDsKIApAQCAtNzAyLDM2ICs3MDQsMzYgQEAgc3RhdGljIGludCBw cHBvbDJ0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNl cnZhZGRyLAogCWlmICh0dW5uZWwtPnBlZXJfdHVubmVsX2lkID09IDApCiAJCXR1bm5lbC0+cGVl cl90dW5uZWxfaWQgPSBwZWVyX3R1bm5lbF9pZDsKIAotCS8qIENyZWF0ZSBzZXNzaW9uIGlmIGl0 IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4gV2UgaGFuZGxlIHRoZQotCSAqIGNhc2Ugd2hlcmUgYSBz ZXNzaW9uIHdhcyBwcmV2aW91c2x5IGNyZWF0ZWQgYnkgdGhlIG5ldGxpbmsKLQkgKiBpbnRlcmZh Y2UgYnkgY2hlY2tpbmcgdGhhdCB0aGUgc2Vzc2lvbiBkb2Vzbid0IGFscmVhZHkgaGF2ZQotCSAq IGEgc29ja2V0IGFuZCBpdHMgdHVubmVsIHNvY2tldCBhcmUgd2hhdCB3ZSBleHBlY3QuIElmIGFu eQotCSAqIG9mIHRob3NlIGNoZWNrcyBmYWlsLCByZXR1cm4gRUVYSVNUIHRvIHRoZSBjYWxsZXIu Ci0JICovCi0Jc2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9maW5kKHNvY2tfbmV0KHNrKSwgdHVubmVs LCBzZXNzaW9uX2lkKTsKLQlpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7Ci0JCS8qIERlZmF1bHQgTVRV IG11c3QgYWxsb3cgc3BhY2UgZm9yIFVEUC9MMlRQL1BQUAotCQkgKiBoZWFkZXJzLgorCXNlc3Np b24gPSBsMnRwX3Nlc3Npb25fZ2V0KHNvY2tfbmV0KHNrKSwgdHVubmVsLCBzZXNzaW9uX2lkLCBm YWxzZSk7CisJaWYgKHNlc3Npb24pIHsKKwkJZHJvcF9yZWZjbnQgPSB0cnVlOworCQlwcyA9IGwy dHBfc2Vzc2lvbl9wcml2KHNlc3Npb24pOworCisJCS8qIFVzaW5nIGEgcHJlLWV4aXN0aW5nIHNl c3Npb24gaXMgZmluZSBhcyBsb25nIGFzIGl0IGhhc24ndAorCQkgKiBiZWVuIGNvbm5lY3RlZCB5 ZXQuCiAJCSAqLwotCQljZmcubXR1ID0gY2ZnLm1ydSA9IDE1MDAgLSBQUFBPTDJUUF9IRUFERVJf T1ZFUkhFQUQ7CisJCWlmIChwcy0+c29jaykgeworCQkJZXJyb3IgPSAtRUVYSVNUOworCQkJZ290 byBlbmQ7CisJCX0KIAotCQkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBzZXNzaW9u IGNvbnRleHQuICovCi0JCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25fY3JlYXRlKHNpemVvZihzdHJ1 Y3QgcHBwb2wydHBfc2Vzc2lvbiksCi0JCQkJCSAgICAgIHR1bm5lbCwgc2Vzc2lvbl9pZCwKLQkJ CQkJICAgICAgcGVlcl9zZXNzaW9uX2lkLCAmY2ZnKTsKLQkJaWYgKHNlc3Npb24gPT0gTlVMTCkg ewotCQkJZXJyb3IgPSAtRU5PTUVNOworCQkvKiBjb25zaXN0ZW5jeSBjaGVja3MgKi8KKwkJaWYg KHBzLT50dW5uZWxfc29jayAhPSB0dW5uZWwtPnNvY2spIHsKKwkJCWVycm9yID0gLUVFWElTVDsK IAkJCWdvdG8gZW5kOwogCQl9CiAJfSBlbHNlIHsKLQkJcHMgPSBsMnRwX3Nlc3Npb25fcHJpdihz ZXNzaW9uKTsKLQkJZXJyb3IgPSAtRUVYSVNUOwotCQlpZiAocHMtPnNvY2sgIT0gTlVMTCkKLQkJ CWdvdG8gZW5kOworCQkvKiBEZWZhdWx0IE1UVSBtdXN0IGFsbG93IHNwYWNlIGZvciBVRFAvTDJU UC9QUFAgaGVhZGVycyAqLworCQljZmcubXR1ID0gMTUwMCAtIFBQUE9MMlRQX0hFQURFUl9PVkVS SEVBRDsKKwkJY2ZnLm1ydSA9IGNmZy5tdHU7CiAKLQkJLyogY29uc2lzdGVuY3kgY2hlY2tzICov Ci0JCWlmIChwcy0+dHVubmVsX3NvY2sgIT0gdHVubmVsLT5zb2NrKQorCQlzZXNzaW9uID0gbDJ0 cF9zZXNzaW9uX2NyZWF0ZShzaXplb2Yoc3RydWN0IHBwcG9sMnRwX3Nlc3Npb24pLAorCQkJCQkg ICAgICB0dW5uZWwsIHNlc3Npb25faWQsCisJCQkJCSAgICAgIHBlZXJfc2Vzc2lvbl9pZCwgJmNm Zyk7CisJCWlmIChJU19FUlIoc2Vzc2lvbikpIHsKKwkJCWVycm9yID0gUFRSX0VSUihzZXNzaW9u KTsKIAkJCWdvdG8gZW5kOworCQl9CiAJfQogCiAJLyogQXNzb2NpYXRlIHNlc3Npb24gd2l0aCBp dHMgUFBQb0wyVFAgc29ja2V0ICovCkBAIC03OTYsNiArNzk4LDggQEAgc3RhdGljIGludCBwcHBv bDJ0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZh ZGRyLAogCQkgIHNlc3Npb24tPm5hbWUpOwogCiBlbmQ6CisJaWYgKGRyb3BfcmVmY250KQorCQls MnRwX3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24pOwogCXJlbGVhc2Vfc29jayhzayk7CiAK IAlyZXR1cm4gZXJyb3I7CkBAIC04MjMsMTIgKzgyNyw2IEBAIHN0YXRpYyBpbnQgcHBwb2wydHBf c2Vzc2lvbl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgdHVubmVsX2lkLCB1MzIgc2Vzc2lv bl9pCiAJaWYgKHR1bm5lbC0+c29jayA9PSBOVUxMKQogCQlnb3RvIG91dDsKIAotCS8qIENoZWNr IHRoYXQgdGhpcyBzZXNzaW9uIGRvZXNuJ3QgYWxyZWFkeSBleGlzdCAqLwotCWVycm9yID0gLUVF WElTVDsKLQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2ZpbmQobmV0LCB0dW5uZWwsIHNlc3Npb25f aWQpOwotCWlmIChzZXNzaW9uICE9IE5VTEwpCi0JCWdvdG8gb3V0OwotCiAJLyogRGVmYXVsdCBN VFUgdmFsdWVzLiAqLwogCWlmIChjZmctPm10dSA9PSAwKQogCQljZmctPm10dSA9IDE1MDAgLSBQ UFBPTDJUUF9IRUFERVJfT1ZFUkhFQUQ7CkBAIC04MzYsMTIgKzgzNCwxMyBAQCBzdGF0aWMgaW50 IHBwcG9sMnRwX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIHR1bm5lbF9pZCwg dTMyIHNlc3Npb25faQogCQljZmctPm1ydSA9IGNmZy0+bXR1OwogCiAJLyogQWxsb2NhdGUgYW5k IGluaXRpYWxpemUgYSBuZXcgc2Vzc2lvbiBjb250ZXh0LiAqLwotCWVycm9yID0gLUVOT01FTTsK IAlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2NyZWF0ZShzaXplb2Yoc3RydWN0IHBwcG9sMnRwX3Nl c3Npb24pLAogCQkJCSAgICAgIHR1bm5lbCwgc2Vzc2lvbl9pZCwKIAkJCQkgICAgICBwZWVyX3Nl c3Npb25faWQsIGNmZyk7Ci0JaWYgKHNlc3Npb24gPT0gTlVMTCkKKwlpZiAoSVNfRVJSKHNlc3Np b24pKSB7CisJCWVycm9yID0gUFRSX0VSUihzZXNzaW9uKTsKIAkJZ290byBvdXQ7CisJfQogCiAJ cHMgPSBsMnRwX3Nlc3Npb25fcHJpdihzZXNzaW9uKTsKIAlwcy0+dHVubmVsX3NvY2sgPSB0dW5u ZWwtPnNvY2s7CkBAIC0xMTU5LDExICsxMTU4LDE4IEBAIHN0YXRpYyBpbnQgcHBwb2wydHBfdHVu bmVsX2lvY3RsKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLAogCQlpZiAoc3RhdHMuc2Vzc2lv bl9pZCAhPSAwKSB7CiAJCQkvKiByZXNlbmQgdG8gc2Vzc2lvbiBpb2N0bCBoYW5kbGVyICovCiAJ CQlzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uID0KLQkJCQlsMnRwX3Nlc3Npb25fZmluZChz b2NrX25ldChzayksIHR1bm5lbCwgc3RhdHMuc2Vzc2lvbl9pZCk7Ci0JCQlpZiAoc2Vzc2lvbiAh PSBOVUxMKQotCQkJCWVyciA9IHBwcG9sMnRwX3Nlc3Npb25faW9jdGwoc2Vzc2lvbiwgY21kLCBh cmcpOwotCQkJZWxzZQorCQkJCWwydHBfc2Vzc2lvbl9nZXQoc29ja19uZXQoc2spLCB0dW5uZWws CisJCQkJCQkgc3RhdHMuc2Vzc2lvbl9pZCwgdHJ1ZSk7CisKKwkJCWlmIChzZXNzaW9uKSB7CisJ CQkJZXJyID0gcHBwb2wydHBfc2Vzc2lvbl9pb2N0bChzZXNzaW9uLCBjbWQsCisJCQkJCQkJICAg ICBhcmcpOworCQkJCWlmIChzZXNzaW9uLT5kZXJlZikKKwkJCQkJc2Vzc2lvbi0+ZGVyZWYoc2Vz c2lvbik7CisJCQkJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKKwkJCX0gZWxz ZSB7CiAJCQkJZXJyID0gLUVCQURSOworCQkJfQogCQkJYnJlYWs7CiAJCX0KICNpZmRlZiBDT05G SUdfWEZSTQpAQCAtMTM5Niw4ICsxNDAyLDYgQEAgc3RhdGljIGludCBwcHBvbDJ0cF9zZXRzb2Nr b3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJfSBlbHNl CiAJCWVyciA9IHBwcG9sMnRwX3Nlc3Npb25fc2V0c29ja29wdChzaywgc2Vzc2lvbiwgb3B0bmFt ZSwgdmFsKTsKIAotCWVyciA9IDA7Ci0KIGVuZF9wdXRfc2VzczoKIAlzb2NrX3B1dChzayk7CiBl bmQ6CkBAIC0xNTIwLDggKzE1MjQsMTMgQEAgc3RhdGljIGludCBwcHBvbDJ0cF9nZXRzb2Nrb3B0 KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAKIAkJZXJyID0g cHBwb2wydHBfdHVubmVsX2dldHNvY2tvcHQoc2ssIHR1bm5lbCwgb3B0bmFtZSwgJnZhbCk7CiAJ CXNvY2tfcHV0KHBzLT50dW5uZWxfc29jayk7Ci0JfSBlbHNlCisJCWlmIChlcnIpCisJCQlnb3Rv IGVuZF9wdXRfc2VzczsKKwl9IGVsc2UgewogCQllcnIgPSBwcHBvbDJ0cF9zZXNzaW9uX2dldHNv Y2tvcHQoc2ssIHNlc3Npb24sIG9wdG5hbWUsICZ2YWwpOworCQlpZiAoZXJyKQorCQkJZ290byBl bmRfcHV0X3Nlc3M7CisJfQogCiAJZXJyID0gLUVGQVVMVDsKIAlpZiAocHV0X3VzZXIobGVuLCBv cHRsZW4pKQpAQCAtMTU3Myw3ICsxNTgyLDcgQEAgc3RhdGljIHZvaWQgcHBwb2wydHBfbmV4dF90 dW5uZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBwb2wydHBfc2VxX2RhdGEgKnBkKQogCiBz dGF0aWMgdm9pZCBwcHBvbDJ0cF9uZXh0X3Nlc3Npb24oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qg cHBwb2wydHBfc2VxX2RhdGEgKnBkKQogewotCXBkLT5zZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2Zp bmRfbnRoKHBkLT50dW5uZWwsIHBkLT5zZXNzaW9uX2lkeCk7CisJcGQtPnNlc3Npb24gPSBsMnRw X3Nlc3Npb25fZ2V0X250aChwZC0+dHVubmVsLCBwZC0+c2Vzc2lvbl9pZHgsIHRydWUpOwogCXBk LT5zZXNzaW9uX2lkeCsrOwogCiAJaWYgKHBkLT5zZXNzaW9uID09IE5VTEwpIHsKQEAgLTE3MDAs MTAgKzE3MDksMTQgQEAgc3RhdGljIGludCBwcHBvbDJ0cF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnYpCiAKIAkvKiBTaG93IHRoZSB0dW5uZWwgb3Igc2Vzc2lvbiBjb250ZXh0 LgogCSAqLwotCWlmIChwZC0+c2Vzc2lvbiA9PSBOVUxMKQorCWlmICghcGQtPnNlc3Npb24pIHsK IAkJcHBwb2wydHBfc2VxX3R1bm5lbF9zaG93KG0sIHBkLT50dW5uZWwpOwotCWVsc2UKKwl9IGVs c2UgewogCQlwcHBvbDJ0cF9zZXFfc2Vzc2lvbl9zaG93KG0sIHBkLT5zZXNzaW9uKTsKKwkJaWYg KHBkLT5zZXNzaW9uLT5kZXJlZikKKwkJCXBkLT5zZXNzaW9uLT5kZXJlZihwZC0+c2Vzc2lvbik7 CisJCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQocGQtPnNlc3Npb24pOworCX0KIAogb3V0Ogog CXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEv cnguYwppbmRleCBiZjI1ZjEzOTljNmMuLmIxZDBkMjJmYjJhNCAxMDA2NDQKLS0tIGEvbmV0L21h YzgwMjExL3J4LmMKKysrIGIvbmV0L21hYzgwMjExL3J4LmMKQEAgLTMxNDAsNiArMzE0MCwzMCBA QCBzdGF0aWMgYm9vbCBwcmVwYXJlX2Zvcl9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2Rh dGEgKnJ4LAogCQkJaWYgKCFpZWVlODAyMTFfaXNfYmVhY29uKGhkci0+ZnJhbWVfY29udHJvbCkp CiAJCQkJcmV0dXJuIGZhbHNlOwogCQkJc3RhdHVzLT5yeF9mbGFncyAmPSB+SUVFRTgwMjExX1JY X1JBX01BVENIOworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIDgwMi4xMS0yMDE2IFRhYmxlIDkt MjYgc2F5cyB0aGF0IGZvciBkYXRhIGZyYW1lcywKKwkJCSAqIEExIG11c3QgYmUgdGhlIEJTU0lE IC0gd2UndmUgY2hlY2tlZCB0aGF0IGFscmVhZHkKKwkJCSAqIGJ1dCBtYXkgaGF2ZSBhY2NlcHRl ZCB0aGUgd2lsZGNhcmQKKwkJCSAqIChmZjpmZjpmZjpmZjpmZjpmZikuCisJCQkgKgorCQkJICog SXQgYWxzbyBzYXlzOgorCQkJICoJVGhlIEJTU0lEIG9mIHRoZSBEYXRhIGZyYW1lIGlzIGRldGVy bWluZWQgYXMKKwkJCSAqICAgICAgZm9sbG93czoKKwkJCSAqCWEpIElmIHRoZSBTVEEgaXMgY29u dGFpbmVkIHdpdGhpbiBhbiBBUCBvciBpcworCQkJICogICAgICAgICBhc3NvY2lhdGVkIHdpdGgg YW4gQVAsIHRoZSBCU1NJRCBpcyB0aGUKKwkJCSAqICAgICAgICAgYWRkcmVzcyBjdXJyZW50bHkg aW4gdXNlIGJ5IHRoZSBTVEEKKwkJCSAqICAgICAgICAgY29udGFpbmVkIGluIHRoZSBBUC4KKwkJ CSAqCisJCQkgKiBTbyB3ZSBzaG91bGQgbm90IGFjY2VwdCBkYXRhIGZyYW1lcyB3aXRoIGFuIGFk ZHJlc3MKKwkJCSAqIHRoYXQncyBtdWx0aWNhc3QuCisJCQkgKgorCQkJICogQWNjZXB0aW5nIGl0 IGFsc28gb3BlbnMgYSBzZWN1cml0eSBwcm9ibGVtIGJlY2F1c2UKKwkJCSAqIHN0YXRpb25zIGNv dWxkIGVuY3J5cHQgaXQgd2l0aCB0aGUgR1RLIGFuZCBpbmplY3QKKwkJCSAqIHRyYWZmaWMgdGhh dCB3YXkuCisJCQkgKi8KKwkJCWlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItPmZyYW1lX2NvbnRy b2wpICYmIG11bHRpY2FzdCkKKwkJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAkJYnJlYWs7CiAJY2Fz ZSBOTDgwMjExX0lGVFlQRV9XRFM6CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2NzdW0uYyBi L25ldC9zY2hlZC9hY3RfY3N1bS5jCmluZGV4IGVkYmY0MGRhYzcwOS4uZjU0Y2RkNDJjYjRhIDEw MDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X2NzdW0uYworKysgYi9uZXQvc2NoZWQvYWN0X2NzdW0u YwpAQCAtMTA0LDkgKzEwNCw3IEBAIHN0YXRpYyB2b2lkICp0Y2ZfY3N1bV9za2JfbmV4dGxheWVy KHN0cnVjdCBza19idWZmICpza2IsCiAJaW50IGhsID0gaWhsICsgamhsOwogCiAJaWYgKCFwc2ti X21heV9wdWxsKHNrYiwgaXBsICsgbnRrb2ZmKSB8fCAoaXBsIDwgaGwpIHx8Ci0JICAgIChza2Jf Y2xvbmVkKHNrYikgJiYKLQkgICAgICFza2JfY2xvbmVfd3JpdGFibGUoc2tiLCBobCArIG50a29m ZikgJiYKLQkgICAgIHBza2JfZXhwYW5kX2hlYWQoc2tiLCAwLCAwLCBHRlBfQVRPTUlDKSkpCisJ ICAgIHNrYl90cnlfbWFrZV93cml0YWJsZShza2IsIGhsICsgbnRrb2ZmKSkKIAkJcmV0dXJuIE5V TEw7CiAJZWxzZQogCQlyZXR1cm4gKHZvaWQgKikoc2tiX25ldHdvcmtfaGVhZGVyKHNrYikgKyBp aGwpOwpAQCAtMzY0LDkgKzM2Miw3IEBAIHN0YXRpYyBpbnQgdGNmX2NzdW1faXB2NChzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCB1MzIgdXBkYXRlX2ZsYWdzKQogCX0KIAogCWlmICh1cGRhdGVfZmxhZ3Mg JiBUQ0FfQ1NVTV9VUERBVEVfRkxBR19JUFY0SERSKSB7Ci0JCWlmIChza2JfY2xvbmVkKHNrYikg JiYKLQkJICAgICFza2JfY2xvbmVfd3JpdGFibGUoc2tiLCBzaXplb2YoKmlwaCkgKyBudGtvZmYp ICYmCi0JCSAgICBwc2tiX2V4cGFuZF9oZWFkKHNrYiwgMCwgMCwgR0ZQX0FUT01JQykpCisJCWlm IChza2JfdHJ5X21ha2Vfd3JpdGFibGUoc2tiLCBzaXplb2YoKmlwaCkgKyBudGtvZmYpKQogCQkJ Z290byBmYWlsOwogCiAJCWlwX3NlbmRfY2hlY2soaXBfaGRyKHNrYikpOwpkaWZmIC0tZ2l0IGEv bmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmMKaW5kZXggMjcwYTAzMGQ1 ZmQwLi4yNThhYjViN2VjYzYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfbmF0LmMKKysrIGIv bmV0L3NjaGVkL2FjdF9uYXQuYwpAQCAtMTI1LDkgKzEyNSw3IEBAIHN0YXRpYyBpbnQgdGNmX25h dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCQlhZGRy ID0gaXBoLT5kYWRkcjsKIAogCWlmICghKChvbGRfYWRkciBeIGFkZHIpICYgbWFzaykpIHsKLQkJ aWYgKHNrYl9jbG9uZWQoc2tiKSAmJgotCQkgICAgIXNrYl9jbG9uZV93cml0YWJsZShza2IsIHNp emVvZigqaXBoKSArIG5vZmYpICYmCi0JCSAgICBwc2tiX2V4cGFuZF9oZWFkKHNrYiwgMCwgMCwg R0ZQX0FUT01JQykpCisJCWlmIChza2JfdHJ5X21ha2Vfd3JpdGFibGUoc2tiLCBzaXplb2YoKmlw aCkgKyBub2ZmKSkKIAkJCWdvdG8gZHJvcDsKIAogCQluZXdfYWRkciAmPSBtYXNrOwpAQCAtMTU1 LDkgKzE1Myw3IEBAIHN0YXRpYyBpbnQgdGNmX25hdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25z dCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCQlzdHJ1Y3QgdGNwaGRyICp0Y3BoOwogCiAJCWlmICgh cHNrYl9tYXlfcHVsbChza2IsIGlobCArIHNpemVvZigqdGNwaCkgKyBub2ZmKSB8fAotCQkgICAg KHNrYl9jbG9uZWQoc2tiKSAmJgotCQkgICAgICFza2JfY2xvbmVfd3JpdGFibGUoc2tiLCBpaGwg KyBzaXplb2YoKnRjcGgpICsgbm9mZikgJiYKLQkJICAgICBwc2tiX2V4cGFuZF9oZWFkKHNrYiwg MCwgMCwgR0ZQX0FUT01JQykpKQorCQkgICAgc2tiX3RyeV9tYWtlX3dyaXRhYmxlKHNrYiwgaWhs ICsgc2l6ZW9mKCp0Y3BoKSArIG5vZmYpKQogCQkJZ290byBkcm9wOwogCiAJCXRjcGggPSAodm9p ZCAqKShza2JfbmV0d29ya19oZWFkZXIoc2tiKSArIGlobCk7CkBAIC0xNjksOSArMTY1LDcgQEAg c3RhdGljIGludCB0Y2ZfbmF0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19h Y3Rpb24gKmEsCiAJCXN0cnVjdCB1ZHBoZHIgKnVkcGg7CiAKIAkJaWYgKCFwc2tiX21heV9wdWxs KHNrYiwgaWhsICsgc2l6ZW9mKCp1ZHBoKSArIG5vZmYpIHx8Ci0JCSAgICAoc2tiX2Nsb25lZChz a2IpICYmCi0JCSAgICAgIXNrYl9jbG9uZV93cml0YWJsZShza2IsIGlobCArIHNpemVvZigqdWRw aCkgKyBub2ZmKSAmJgotCQkgICAgIHBza2JfZXhwYW5kX2hlYWQoc2tiLCAwLCAwLCBHRlBfQVRP TUlDKSkpCisJCSAgICBza2JfdHJ5X21ha2Vfd3JpdGFibGUoc2tiLCBpaGwgKyBzaXplb2YoKnVk cGgpICsgbm9mZikpCiAJCQlnb3RvIGRyb3A7CiAKIAkJdWRwaCA9ICh2b2lkICopKHNrYl9uZXR3 b3JrX2hlYWRlcihza2IpICsgaWhsKTsKQEAgLTIxMSwxMCArMjA1LDggQEAgc3RhdGljIGludCB0 Y2ZfbmF0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsCiAJ CWlmICgob2xkX2FkZHIgXiBhZGRyKSAmIG1hc2spCiAJCQlicmVhazsKIAotCQlpZiAoc2tiX2Ns b25lZChza2IpICYmCi0JCSAgICAhc2tiX2Nsb25lX3dyaXRhYmxlKHNrYiwgaWhsICsgc2l6ZW9m KCppY21waCkgKwotCQkJCQkgICAgIHNpemVvZigqaXBoKSArIG5vZmYpICYmCi0JCSAgICBwc2ti X2V4cGFuZF9oZWFkKHNrYiwgMCwgMCwgR0ZQX0FUT01JQykpCisJCWlmIChza2JfdHJ5X21ha2Vf d3JpdGFibGUoc2tiLCBpaGwgKyBzaXplb2YoKmljbXBoKSArCisJCQkJCSAgc2l6ZW9mKCppcGgp ICsgbm9mZikpCiAJCQlnb3RvIGRyb3A7CiAKIAkJaWNtcGggPSAodm9pZCAqKShza2JfbmV0d29y a19oZWFkZXIoc2tiKSArIGlobCk7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2RzbWFyay5j IGIvbmV0L3NjaGVkL3NjaF9kc21hcmsuYwppbmRleCA1ZDgxODAyNjlkYzkuLjU1NzFlN2MwNzZk ZSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9kc21hcmsuYworKysgYi9uZXQvc2NoZWQvc2No X2RzbWFyay5jCkBAIC0xOTcsOSArMTk3LDEzIEBAIHN0YXRpYyBpbnQgZHNtYXJrX2VucXVldWUo c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpCiAJcHJfZGVidWcoIiVzKHNr YiAlcCxzY2ggJXAsW3FkaXNjICVwXSlcbiIsIF9fZnVuY19fLCBza2IsIHNjaCwgcCk7CiAKIAlp ZiAocC0+c2V0X3RjX2luZGV4KSB7CisJCWludCB3bGVuID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNr Yik7CisKIAkJc3dpdGNoIChza2ItPnByb3RvY29sKSB7CiAJCWNhc2UgaHRvbnMoRVRIX1BfSVAp OgotCQkJaWYgKHNrYl9jb3dfaGVhZChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSkKKwkJCXds ZW4gKz0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7CisJCQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCB3 bGVuKSB8fAorCQkJICAgIHNrYl90cnlfbWFrZV93cml0YWJsZShza2IsIHdsZW4pKQogCQkJCWdv dG8gZHJvcDsKIAogCQkJc2tiLT50Y19pbmRleCA9IGlwdjRfZ2V0X2RzZmllbGQoaXBfaGRyKHNr YikpCkBAIC0yMDcsNyArMjExLDkgQEAgc3RhdGljIGludCBkc21hcmtfZW5xdWV1ZShzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCkKIAkJCWJyZWFrOwogCiAJCWNhc2UgaHRv bnMoRVRIX1BfSVBWNik6Ci0JCQlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgc2l6ZW9mKHN0cnVjdCBp cHY2aGRyKSkpCisJCQl3bGVuICs9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7CisJCQlpZiAoIXBz a2JfbWF5X3B1bGwoc2tiLCB3bGVuKSB8fAorCQkJICAgIHNrYl90cnlfbWFrZV93cml0YWJsZShz a2IsIHdsZW4pKQogCQkJCWdvdG8gZHJvcDsKIAogCQkJc2tiLT50Y19pbmRleCA9IGlwdjZfZ2V0 X2RzZmllbGQoaXB2Nl9oZHIoc2tiKSkKZGlmZiAtLWdpdCBhL25ldC91bml4L2dhcmJhZ2UuYyBi L25ldC91bml4L2dhcmJhZ2UuYwppbmRleCBhNzIxODJkNjc1MGYuLjU4YmEwZTVmMTQ3YiAxMDA2 NDQKLS0tIGEvbmV0L3VuaXgvZ2FyYmFnZS5jCisrKyBiL25ldC91bml4L2dhcmJhZ2UuYwpAQCAt MTUyLDYgKzE1Miw3IEBAIHZvaWQgdW5peF9ub3RpbmZsaWdodChzdHJ1Y3QgdXNlcl9zdHJ1Y3Qg KnVzZXIsIHN0cnVjdCBmaWxlICpmcCkKIAlpZiAocykgewogCQlzdHJ1Y3QgdW5peF9zb2NrICp1 ID0gdW5peF9zayhzKTsKIAorCQlCVUdfT04oIWF0b21pY19sb25nX3JlYWQoJnUtPmluZmxpZ2h0 KSk7CiAJCUJVR19PTihsaXN0X2VtcHR5KCZ1LT5saW5rKSk7CiAJCWlmIChhdG9taWNfbG9uZ19k ZWNfYW5kX3Rlc3QoJnUtPmluZmxpZ2h0KSkKIAkJCWxpc3RfZGVsX2luaXQoJnUtPmxpbmspOwpA QCAtMzU4LDYgKzM1OSwxNCBAQCB2b2lkIHVuaXhfZ2Modm9pZCkKIAl9CiAJbGlzdF9kZWwoJmN1 cnNvcik7CiAKKwkvKiBOb3cgZ2NfY2FuZGlkYXRlcyBjb250YWlucyBvbmx5IGdhcmJhZ2UuICBS ZXN0b3JlIG9yaWdpbmFsCisJICogaW5mbGlnaHQgY291bnRlcnMgZm9yIHRoZXNlIGFzIHdlbGws IGFuZCByZW1vdmUgdGhlIHNrYnVmZnMKKwkgKiB3aGljaCBhcmUgY3JlYXRpbmcgdGhlIGN5Y2xl KHMpLgorCSAqLworCXNrYl9xdWV1ZV9oZWFkX2luaXQoJmhpdGxpc3QpOworCWxpc3RfZm9yX2Vh Y2hfZW50cnkodSwgJmdjX2NhbmRpZGF0ZXMsIGxpbmspCisJCXNjYW5fY2hpbGRyZW4oJnUtPnNr LCBpbmNfaW5mbGlnaHQsICZoaXRsaXN0KTsKKwogCS8qCiAJICogbm90X2N5Y2xlX2xpc3QgY29u dGFpbnMgdGhvc2Ugc29ja2V0cyB3aGljaCBkbyBub3QgbWFrZSB1cCBhCiAJICogY3ljbGUuICBS ZXN0b3JlIHRoZXNlIHRvIHRoZSBpbmZsaWdodCBsaXN0LgpAQCAtMzY4LDE1ICszNzcsNiBAQCB2 b2lkIHVuaXhfZ2Modm9pZCkKIAkJbGlzdF9tb3ZlX3RhaWwoJnUtPmxpbmssICZnY19pbmZsaWdo dF9saXN0KTsKIAl9CiAKLQkvKgotCSAqIE5vdyBnY19jYW5kaWRhdGVzIGNvbnRhaW5zIG9ubHkg Z2FyYmFnZS4gIFJlc3RvcmUgb3JpZ2luYWwKLQkgKiBpbmZsaWdodCBjb3VudGVycyBmb3IgdGhl c2UgYXMgd2VsbCwgYW5kIHJlbW92ZSB0aGUgc2tidWZmcwotCSAqIHdoaWNoIGFyZSBjcmVhdGlu ZyB0aGUgY3ljbGUocykuCi0JICovCi0Jc2tiX3F1ZXVlX2hlYWRfaW5pdCgmaGl0bGlzdCk7Ci0J bGlzdF9mb3JfZWFjaF9lbnRyeSh1LCAmZ2NfY2FuZGlkYXRlcywgbGluaykKLQlzY2FuX2NoaWxk cmVuKCZ1LT5zaywgaW5jX2luZmxpZ2h0LCAmaGl0bGlzdCk7Ci0KIAlzcGluX3VubG9jaygmdW5p eF9nY19sb2NrKTsKIAogCS8qIEhlcmUgd2UgYXJlLiBIaXRsaXN0IGlzIGZpbGxlZC4gRGllLiAq LwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgw MjExLmMKaW5kZXggZDRmYjI3NWM0YzIwLi5lYzA1YWQ4YWRlMjEgMTAwNjQ0Ci0tLSBhL25ldC93 aXJlbGVzcy9ubDgwMjExLmMKKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtNDcxLDIx ICs0NzEsMTcgQEAgc3RhdGljIGludCBubDgwMjExX3ByZXBhcmVfd2Rldl9kdW1wKHN0cnVjdCBz a19idWZmICpza2IsCiB7CiAJaW50IGVycjsKIAotCXJ0bmxfbG9jaygpOwotCiAJaWYgKCFjYi0+ YXJnc1swXSkgewogCQllcnIgPSBubG1zZ19wYXJzZShjYi0+bmxoLCBHRU5MX0hEUkxFTiArIG5s ODAyMTFfZmFtLmhkcnNpemUsCiAJCQkJICBubDgwMjExX2ZhbS5hdHRyYnVmLCBubDgwMjExX2Zh bS5tYXhhdHRyLAogCQkJCSAgbmw4MDIxMV9wb2xpY3kpOwogCQlpZiAoZXJyKQotCQkJZ290byBv dXRfdW5sb2NrOworCQkJcmV0dXJuIGVycjsKIAogCQkqd2RldiA9IF9fY2ZnODAyMTFfd2Rldl9m cm9tX2F0dHJzKHNvY2tfbmV0KHNrYi0+c2spLAogCQkJCQkJICAgbmw4MDIxMV9mYW0uYXR0cmJ1 Zik7Ci0JCWlmIChJU19FUlIoKndkZXYpKSB7Ci0JCQllcnIgPSBQVFJfRVJSKCp3ZGV2KTsKLQkJ CWdvdG8gb3V0X3VubG9jazsKLQkJfQorCQlpZiAoSVNfRVJSKCp3ZGV2KSkKKwkJCXJldHVybiBQ VFJfRVJSKCp3ZGV2KTsKIAkJKnJkZXYgPSB3aXBoeV90b19yZGV2KCgqd2RldiktPndpcGh5KTsK IAkJLyogMCBpcyB0aGUgZmlyc3QgaW5kZXggLSBhZGQgMSB0byBwYXJzZSBvbmx5IG9uY2UgKi8K IAkJY2ItPmFyZ3NbMF0gPSAoKnJkZXYpLT53aXBoeV9pZHggKyAxOwpAQCAtNDk1LDEwICs0OTEs OCBAQCBzdGF0aWMgaW50IG5sODAyMTFfcHJlcGFyZV93ZGV2X2R1bXAoc3RydWN0IHNrX2J1ZmYg KnNrYiwKIAkJc3RydWN0IHdpcGh5ICp3aXBoeSA9IHdpcGh5X2lkeF90b193aXBoeShjYi0+YXJn c1swXSAtIDEpOwogCQlzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp0bXA7CiAKLQkJaWYgKCF3aXBoeSkg ewotCQkJZXJyID0gLUVOT0RFVjsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQorCQlpZiAoIXdp cGh5KQorCQkJcmV0dXJuIC1FTk9ERVY7CiAJCSpyZGV2ID0gd2lwaHlfdG9fcmRldih3aXBoeSk7 CiAJCSp3ZGV2ID0gTlVMTDsKIApAQCAtNTA5LDIxICs1MDMsMTEgQEAgc3RhdGljIGludCBubDgw MjExX3ByZXBhcmVfd2Rldl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsCiAJCQl9CiAJCX0KIAot CQlpZiAoISp3ZGV2KSB7Ci0JCQllcnIgPSAtRU5PREVWOwotCQkJZ290byBvdXRfdW5sb2NrOwot CQl9CisJCWlmICghKndkZXYpCisJCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKIAlyZXR1cm4gMDsK LSBvdXRfdW5sb2NrOgotCXJ0bmxfdW5sb2NrKCk7Ci0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGlj IHZvaWQgbmw4MDIxMV9maW5pc2hfd2Rldl9kdW1wKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVk X2RldmljZSAqcmRldikKLXsKLQlydG5sX3VubG9jaygpOwogfQogCiAvKiBJRSB2YWxpZGF0aW9u ICovCkBAIC0zNzI3LDkgKzM3MTEsMTAgQEAgc3RhdGljIGludCBubDgwMjExX2R1bXBfc3RhdGlv bihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCBzdGFfaWR4ID0gY2ItPmFyZ3NbMl07CiAJaW50 IGVycjsKIAorCXJ0bmxfbG9jaygpOwogCWVyciA9IG5sODAyMTFfcHJlcGFyZV93ZGV2X2R1bXAo c2tiLCBjYiwgJnJkZXYsICZ3ZGV2KTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCQlnb3Rv IG91dF9lcnI7CiAKIAlpZiAoIXdkZXYtPm5ldGRldikgewogCQllcnIgPSAtRUlOVkFMOwpAQCAt Mzc2NSw3ICszNzUwLDcgQEAgc3RhdGljIGludCBubDgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAogCWNiLT5hcmdzWzJdID0gc3RhX2lkeDsKIAllcnIgPSBza2ItPmxlbjsK ICBvdXRfZXJyOgotCW5sODAyMTFfZmluaXNoX3dkZXZfZHVtcChyZGV2KTsKKwlydG5sX3VubG9j aygpOwogCiAJcmV0dXJuIGVycjsKIH0KQEAgLTQ0NDMsOSArNDQyOCwxMCBAQCBzdGF0aWMgaW50 IG5sODAyMTFfZHVtcF9tcGF0aChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCBwYXRoX2lkeCA9 IGNiLT5hcmdzWzJdOwogCWludCBlcnI7CiAKKwlydG5sX2xvY2soKTsKIAllcnIgPSBubDgwMjEx X3ByZXBhcmVfd2Rldl9kdW1wKHNrYiwgY2IsICZyZGV2LCAmd2Rldik7CiAJaWYgKGVycikKLQkJ cmV0dXJuIGVycjsKKwkJZ290byBvdXRfZXJyOwogCiAJaWYgKCFyZGV2LT5vcHMtPmR1bXBfbXBh dGgpIHsKIAkJZXJyID0gLUVPUE5PVFNVUFA7CkBAIC00NDc5LDcgKzQ0NjUsNyBAQCBzdGF0aWMg aW50IG5sODAyMTFfZHVtcF9tcGF0aChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWNiLT5hcmdzWzJd ID0gcGF0aF9pZHg7CiAJZXJyID0gc2tiLT5sZW47CiAgb3V0X2VycjoKLQlubDgwMjExX2Zpbmlz aF93ZGV2X2R1bXAocmRldik7CisJcnRubF91bmxvY2soKTsKIAlyZXR1cm4gZXJyOwogfQogCkBA IC02MTU3LDkgKzYxNDMsMTIgQEAgc3RhdGljIGludCBubDgwMjExX2R1bXBfc2NhbihzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJaW50IHN0YXJ0ID0g Y2ItPmFyZ3NbMl0sIGlkeCA9IDA7CiAJaW50IGVycjsKIAorCXJ0bmxfbG9jaygpOwogCWVyciA9 IG5sODAyMTFfcHJlcGFyZV93ZGV2X2R1bXAoc2tiLCBjYiwgJnJkZXYsICZ3ZGV2KTsKLQlpZiAo ZXJyKQorCWlmIChlcnIpIHsKKwkJcnRubF91bmxvY2soKTsKIAkJcmV0dXJuIGVycjsKKwl9CiAK IAl3ZGV2X2xvY2sod2Rldik7CiAJc3Bpbl9sb2NrX2JoKCZyZGV2LT5ic3NfbG9jayk7CkBAIC02 MTgyLDcgKzYxNzEsNyBAQCBzdGF0aWMgaW50IG5sODAyMTFfZHVtcF9zY2FuKHN0cnVjdCBza19i dWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYikKIAl3ZGV2X3VubG9jayh3ZGV2 KTsKIAogCWNiLT5hcmdzWzJdID0gaWR4OwotCW5sODAyMTFfZmluaXNoX3dkZXZfZHVtcChyZGV2 KTsKKwlydG5sX3VubG9jaygpOwogCiAJcmV0dXJuIHNrYi0+bGVuOwogfQpAQCAtNjI1NSw5ICs2 MjQ0LDEwIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9kdW1wX3N1cnZleShzdHJ1Y3Qgc2tfYnVmZiAq c2tiLAogCWludCBzdXJ2ZXlfaWR4ID0gY2ItPmFyZ3NbMl07CiAJaW50IHJlczsKIAorCXJ0bmxf bG9jaygpOwogCXJlcyA9IG5sODAyMTFfcHJlcGFyZV93ZGV2X2R1bXAoc2tiLCBjYiwgJnJkZXYs ICZ3ZGV2KTsKIAlpZiAocmVzKQotCQlyZXR1cm4gcmVzOworCQlnb3RvIG91dF9lcnI7CiAKIAlp ZiAoIXdkZXYtPm5ldGRldikgewogCQlyZXMgPSAtRUlOVkFMOwpAQCAtNjMwMyw3ICs2MjkzLDcg QEAgc3RhdGljIGludCBubDgwMjExX2R1bXBfc3VydmV5KHN0cnVjdCBza19idWZmICpza2IsCiAJ Y2ItPmFyZ3NbMl0gPSBzdXJ2ZXlfaWR4OwogCXJlcyA9IHNrYi0+bGVuOwogIG91dF9lcnI6Ci0J bmw4MDIxMV9maW5pc2hfd2Rldl9kdW1wKHJkZXYpOworCXJ0bmxfdW5sb2NrKCk7CiAJcmV0dXJu IHJlczsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJt L3hmcm1fcG9saWN5LmMKaW5kZXggNDhjZThmMzdlNDU3Li4xNWQxMzYzODk4ZWYgMTAwNjQ0Ci0t LSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKKysrIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwpA QCAtMjg3OCw2ICsyODc4LDExIEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX25ldF9pbml0 KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAlpbnQgcnY7CiAKKwkvKiBJbml0aWFsaXplIHRoZSBwZXIt bmV0IGxvY2tzIGhlcmUgKi8KKwlzcGluX2xvY2tfaW5pdCgmbmV0LT54ZnJtLnhmcm1fc3RhdGVf bG9jayk7CisJcndsb2NrX2luaXQoJm5ldC0+eGZybS54ZnJtX3BvbGljeV9sb2NrKTsKKwltdXRl eF9pbml0KCZuZXQtPnhmcm0ueGZybV9jZmdfbXV0ZXgpOworCiAJcnYgPSB4ZnJtX3N0YXRpc3Rp Y3NfaW5pdChuZXQpOwogCWlmIChydiA8IDApCiAJCWdvdG8gb3V0X3N0YXRpc3RpY3M7CkBAIC0y ODk0LDExICsyODk5LDYgQEAgc3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fbmV0X2luaXQoc3Ry dWN0IG5ldCAqbmV0KQogCWlmIChydiA8IDApCiAJCWdvdG8gb3V0OwogCi0JLyogSW5pdGlhbGl6 ZSB0aGUgcGVyLW5ldCBsb2NrcyBoZXJlICovCi0Jc3Bpbl9sb2NrX2luaXQoJm5ldC0+eGZybS54 ZnJtX3N0YXRlX2xvY2spOwotCXJ3bG9ja19pbml0KCZuZXQtPnhmcm0ueGZybV9wb2xpY3lfbG9j ayk7Ci0JbXV0ZXhfaW5pdCgmbmV0LT54ZnJtLnhmcm1fY2ZnX211dGV4KTsKLQogCXJldHVybiAw OwogCiBvdXQ6CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2djLmMgYi9zZWN1cml0eS9rZXlz L2djLmMKaW5kZXggNGE3ODAzMzNjMjJjLi5kYTcxNWViODczMzMgMTAwNjQ0Ci0tLSBhL3NlY3Vy aXR5L2tleXMvZ2MuYworKysgYi9zZWN1cml0eS9rZXlzL2djLmMKQEAgLTQ2LDcgKzQ2LDcgQEAg c3RhdGljIHVuc2lnbmVkIGxvbmcga2V5X2djX2ZsYWdzOwogICogaW1tZWRpYXRlbHkgdW5saW5r ZWQuCiAgKi8KIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9kZWFkID0gewotCS5uYW1lID0gImRl YWQiLAorCS5uYW1lID0gIi5kZWFkIiwKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9zb3VuZC9jb3Jl L3NlcS9zZXFfY2xpZW50bWdyLmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfY2xpZW50bWdyLmMKaW5k ZXggZTc0ZTIwYWYzYzRlLi43ODI1ZTdlNjlhYjQgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2Vx L3NlcV9jbGllbnRtZ3IuYworKysgYi9zb3VuZC9jb3JlL3NlcS9zZXFfY2xpZW50bWdyLmMKQEAg LTE5MjEsNiArMTkyMSw3IEBAIHN0YXRpYyBpbnQgc25kX3NlcV9pb2N0bF9zZXRfY2xpZW50X3Bv b2woc3RydWN0IHNuZF9zZXFfY2xpZW50ICpjbGllbnQsCiAJICAgICBpbmZvLm91dHB1dF9wb29s ICE9IGNsaWVudC0+cG9vbC0+c2l6ZSkpIHsKIAkJaWYgKHNuZF9zZXFfd3JpdGVfcG9vbF9hbGxv Y2F0ZWQoY2xpZW50KSkgewogCQkJLyogcmVtb3ZlIGFsbCBleGlzdGluZyBjZWxscyAqLworCQkJ c25kX3NlcV9wb29sX21hcmtfY2xvc2luZyhjbGllbnQtPnBvb2wpOwogCQkJc25kX3NlcV9xdWV1 ZV9jbGllbnRfbGVhdmVfY2VsbHMoY2xpZW50LT5udW1iZXIpOwogCQkJc25kX3NlcV9wb29sX2Rv bmUoY2xpZW50LT5wb29sKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX2Zp Zm8uYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9maWZvLmMKaW5kZXggODYyNDBkMDJiNTMwLi4zNDkw ZDIxYWI5ZTcgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9maWZvLmMKKysrIGIvc291 bmQvY29yZS9zZXEvc2VxX2ZpZm8uYwpAQCAtNzAsNiArNzAsOSBAQCB2b2lkIHNuZF9zZXFfZmlm b19kZWxldGUoc3RydWN0IHNuZF9zZXFfZmlmbyAqKmZpZm8pCiAJCXJldHVybjsKIAkqZmlmbyA9 IE5VTEw7CiAKKwlpZiAoZi0+cG9vbCkKKwkJc25kX3NlcV9wb29sX21hcmtfY2xvc2luZyhmLT5w b29sKTsKKwogCXNuZF9zZXFfZmlmb19jbGVhcihmKTsKIAogCS8qIHdha2UgdXAgY2xpZW50cyBp ZiBhbnkgKi8KQEAgLTI2Miw2ICsyNjUsMTAgQEAgaW50IHNuZF9zZXFfZmlmb19yZXNpemUoc3Ry dWN0IHNuZF9zZXFfZmlmbyAqZiwgaW50IHBvb2xzaXplKQogCS8qIE5PVEU6IG92ZXJmbG93IGZs YWcgaXMgbm90IGNsZWFyZWQgKi8KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmLT5sb2NrLCBm bGFncyk7CiAKKwkvKiBjbG9zZSB0aGUgb2xkIHBvb2wgYW5kIHdhaXQgdW50aWwgYWxsIHVzZXJz IGFyZSBnb25lICovCisJc25kX3NlcV9wb29sX21hcmtfY2xvc2luZyhvbGRwb29sKTsKKwlzbmRf dXNlX2xvY2tfc3luYygmZi0+dXNlX2xvY2spOworCiAJLyogcmVsZWFzZSBjZWxscyBpbiBvbGQg cG9vbCAqLwogCWZvciAoY2VsbCA9IG9sZGhlYWQ7IGNlbGw7IGNlbGwgPSBuZXh0KSB7CiAJCW5l eHQgPSBjZWxsLT5uZXh0OwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX2xvY2suYyBi L3NvdW5kL2NvcmUvc2VxL3NlcV9sb2NrLmMKaW5kZXggM2I2OTNlOTI0ZGI3Li4xMmJhODMzNjdi MWIgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9sb2NrLmMKKysrIGIvc291bmQvY29y ZS9zZXEvc2VxX2xvY2suYwpAQCAtMjgsMTkgKzI4LDE2IEBACiAvKiB3YWl0IHVudGlsIGFsbCBs b2NrcyBhcmUgcmVsZWFzZWQgKi8KIHZvaWQgc25kX3VzZV9sb2NrX3N5bmNfaGVscGVyKHNuZF91 c2VfbG9ja190ICpsb2NrcCwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpCiB7Ci0JaW50IG1h eF9jb3VudCA9IDUgKiBIWjsKKwlpbnQgd2Fybl9jb3VudCA9IDUgKiBIWjsKIAogCWlmIChhdG9t aWNfcmVhZChsb2NrcCkgPCAwKSB7CiAJCXByX3dhcm4oIkFMU0E6IHNlcV9sb2NrOiBsb2NrIHRy b3VibGUgW2NvdW50ZXIgPSAlZF0gaW4gJXM6JWRcbiIsIGF0b21pY19yZWFkKGxvY2twKSwgZmls ZSwgbGluZSk7CiAJCXJldHVybjsKIAl9CiAJd2hpbGUgKGF0b21pY19yZWFkKGxvY2twKSA+IDAp IHsKLQkJaWYgKG1heF9jb3VudCA9PSAwKSB7Ci0JCQlwcl93YXJuKCJBTFNBOiBzZXFfbG9jazog dGltZW91dCBbJWQgbGVmdF0gaW4gJXM6JWRcbiIsIGF0b21pY19yZWFkKGxvY2twKSwgZmlsZSwg bGluZSk7Ci0JCQlicmVhazsKLQkJfQorCQlpZiAod2Fybl9jb3VudC0tID09IDApCisJCQlwcl93 YXJuKCJBTFNBOiBzZXFfbG9jazogd2FpdGluZyBbJWQgbGVmdF0gaW4gJXM6JWRcbiIsIGF0b21p Y19yZWFkKGxvY2twKSwgZmlsZSwgbGluZSk7CiAJCXNjaGVkdWxlX3RpbWVvdXRfdW5pbnRlcnJ1 cHRpYmxlKDEpOwotCQltYXhfY291bnQtLTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NvdW5kL2Nv cmUvc2VxL3NlcV9tZW1vcnkuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9tZW1vcnkuYwppbmRleCAx NTMzMWJiMTczZjIuLmIyMGQ1YjUzNjhjZCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2Vx X21lbW9yeS5jCisrKyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9tZW1vcnkuYwpAQCAtNDE0LDYgKzQx NCwxOCBAQCBpbnQgc25kX3NlcV9wb29sX2luaXQoc3RydWN0IHNuZF9zZXFfcG9vbCAqcG9vbCkK IAlyZXR1cm4gMDsKIH0KIAorLyogcmVmdXNlIHRoZSBmdXJ0aGVyIGluc2VydGlvbiB0byB0aGUg cG9vbCAqLwordm9pZCBzbmRfc2VxX3Bvb2xfbWFya19jbG9zaW5nKHN0cnVjdCBzbmRfc2VxX3Bv b2wgKnBvb2wpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChzbmRfQlVHX09OKCFw b29sKSkKKwkJcmV0dXJuOworCXNwaW5fbG9ja19pcnFzYXZlKCZwb29sLT5sb2NrLCBmbGFncyk7 CisJcG9vbC0+Y2xvc2luZyA9IDE7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9vbC0+bG9j aywgZmxhZ3MpOworfQorCiAvKiByZW1vdmUgZXZlbnRzICovCiBpbnQgc25kX3NlcV9wb29sX2Rv bmUoc3RydWN0IHNuZF9zZXFfcG9vbCAqcG9vbCkKIHsKQEAgLTQyNCwxMCArNDM2LDYgQEAgaW50 IHNuZF9zZXFfcG9vbF9kb25lKHN0cnVjdCBzbmRfc2VxX3Bvb2wgKnBvb2wpCiAJCXJldHVybiAt RUlOVkFMOwogCiAJLyogd2FpdCBmb3IgY2xvc2luZyBhbGwgdGhyZWFkcyAqLwotCXNwaW5fbG9j a19pcnFzYXZlKCZwb29sLT5sb2NrLCBmbGFncyk7Ci0JcG9vbC0+Y2xvc2luZyA9IDE7Ci0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcG9vbC0+bG9jaywgZmxhZ3MpOwotCiAJaWYgKHdhaXRxdWV1 ZV9hY3RpdmUoJnBvb2wtPm91dHB1dF9zbGVlcCkpCiAJCXdha2VfdXAoJnBvb2wtPm91dHB1dF9z bGVlcCk7CiAKQEAgLTQ4NCw2ICs0OTIsNyBAQCBpbnQgc25kX3NlcV9wb29sX2RlbGV0ZShzdHJ1 Y3Qgc25kX3NlcV9wb29sICoqcHBvb2wpCiAJKnBwb29sID0gTlVMTDsKIAlpZiAocG9vbCA9PSBO VUxMKQogCQlyZXR1cm4gMDsKKwlzbmRfc2VxX3Bvb2xfbWFya19jbG9zaW5nKHBvb2wpOwogCXNu ZF9zZXFfcG9vbF9kb25lKHBvb2wpOwogCWtmcmVlKHBvb2wpOwogCXJldHVybiAwOwpkaWZmIC0t Z2l0IGEvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5oIGIvc291bmQvY29yZS9zZXEvc2VxX21l bW9yeS5oCmluZGV4IDRhMmVjNzc5YjhhNy4uMzJmOTU5YzE3Nzg2IDEwMDY0NAotLS0gYS9zb3Vu ZC9jb3JlL3NlcS9zZXFfbWVtb3J5LmgKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5o CkBAIC04NCw2ICs4NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNuZF9zZXFfdG90YWxfY2VsbHMo c3RydWN0IHNuZF9zZXFfcG9vbCAqcG9vbCkKIGludCBzbmRfc2VxX3Bvb2xfaW5pdChzdHJ1Y3Qg c25kX3NlcV9wb29sICpwb29sKTsKIAogLyogZG9uZSBwb29sIC0gZnJlZSBldmVudHMgKi8KK3Zv aWQgc25kX3NlcV9wb29sX21hcmtfY2xvc2luZyhzdHJ1Y3Qgc25kX3NlcV9wb29sICpwb29sKTsK IGludCBzbmRfc2VxX3Bvb2xfZG9uZShzdHJ1Y3Qgc25kX3NlcV9wb29sICpwb29sKTsKIAogLyog Y3JlYXRlIHBvb2wgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvdGltZXIuYyBiL3NvdW5kL2Nv cmUvdGltZXIuYwppbmRleCBhMjQ5ZmFjOWMyZDMuLjhiZGZlYzIzN2FkYSAxMDA2NDQKLS0tIGEv c291bmQvY29yZS90aW1lci5jCisrKyBiL3NvdW5kL2NvcmUvdGltZXIuYwpAQCAtMTYzNiw2ICsx NjM2LDcgQEAgc3RhdGljIGludCBzbmRfdGltZXJfdXNlcl90c2VsZWN0KHN0cnVjdCBmaWxlICpm aWxlLAogCWlmIChlcnIgPCAwKQogCQlnb3RvIF9fZXJyOwogCisJdHUtPnFoZWFkID0gdHUtPnF0 YWlsID0gdHUtPnF1c2VkID0gMDsKIAlrZnJlZSh0dS0+cXVldWUpOwogCXR1LT5xdWV1ZSA9IE5V TEw7CiAJa2ZyZWUodHUtPnRxdWV1ZSk7CkBAIC0xOTc2LDYgKzE5NzcsNyBAQCBzdGF0aWMgc3Np emVfdCBzbmRfdGltZXJfdXNlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAq YnVmZmVyLAogCiAJdHUgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJdW5pdCA9IHR1LT50cmVhZCA/ IHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVyX3RyZWFkKSA6IHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVy X3JlYWQpOworCW11dGV4X2xvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAlzcGluX2xvY2tfaXJxKCZ0 dS0+cWxvY2spOwogCXdoaWxlICgobG9uZyljb3VudCAtIHJlc3VsdCA+PSB1bml0KSB7CiAJCXdo aWxlICghdHUtPnF1c2VkKSB7CkBAIC0xOTkxLDcgKzE5OTMsOSBAQCBzdGF0aWMgc3NpemVfdCBz bmRfdGltZXJfdXNlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmZmVy LAogCQkJYWRkX3dhaXRfcXVldWUoJnR1LT5xY2hhbmdlX3NsZWVwLCAmd2FpdCk7CiAKIAkJCXNw aW5fdW5sb2NrX2lycSgmdHUtPnFsb2NrKTsKKwkJCW11dGV4X3VubG9jaygmdHUtPmlvY3RsX2xv Y2spOwogCQkJc2NoZWR1bGUoKTsKKwkJCW11dGV4X2xvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAkJ CXNwaW5fbG9ja19pcnEoJnR1LT5xbG9jayk7CiAKIAkJCXJlbW92ZV93YWl0X3F1ZXVlKCZ0dS0+ cWNoYW5nZV9zbGVlcCwgJndhaXQpOwpAQCAtMjAxMSw3ICsyMDE1LDYgQEAgc3RhdGljIHNzaXpl X3Qgc25kX3RpbWVyX3VzZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1 ZmZlciwKIAkJdHUtPnF1c2VkLS07CiAJCXNwaW5fdW5sb2NrX2lycSgmdHUtPnFsb2NrKTsKIAot CQltdXRleF9sb2NrKCZ0dS0+aW9jdGxfbG9jayk7CiAJCWlmICh0dS0+dHJlYWQpIHsKIAkJCWlm IChjb3B5X3RvX3VzZXIoYnVmZmVyLCAmdHUtPnRxdWV1ZVtxaGVhZF0sCiAJCQkJCSBzaXplb2Yo c3RydWN0IHNuZF90aW1lcl90cmVhZCkpKQpAQCAtMjAyMSw3ICsyMDI0LDYgQEAgc3RhdGljIHNz aXplX3Qgc25kX3RpbWVyX3VzZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIg KmJ1ZmZlciwKIAkJCQkJIHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVyX3JlYWQpKSkKIAkJCQllcnIg PSAtRUZBVUxUOwogCQl9Ci0JCW11dGV4X3VubG9jaygmdHUtPmlvY3RsX2xvY2spOwogCiAJCXNw aW5fbG9ja19pcnEoJnR1LT5xbG9jayk7CiAJCWlmIChlcnIgPCAwKQpAQCAtMjAzMSw2ICsyMDMz LDcgQEAgc3RhdGljIHNzaXplX3Qgc25kX3RpbWVyX3VzZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmls ZSwgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAl9CiAgX2Vycm9yOgogCXNwaW5fdW5sb2NrX2lycSgm dHUtPnFsb2NrKTsKKwltdXRleF91bmxvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAlyZXR1cm4gcmVz dWx0ID4gMCA/IHJlc3VsdCA6IGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2N0eGZp L2N0aHcyMGsxLmMgYi9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYwppbmRleCBhYmQwYTJkMDg1 NmMuLjdmNDE0YjA1NjQ0YiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMK KysrIGIvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMKQEAgLTE5MDQsNyArMTkwNCw3IEBAIHN0 YXRpYyBpbnQgaHdfY2FyZF9zdGFydChzdHJ1Y3QgaHcgKmh3KQogCQlyZXR1cm4gZXJyOwogCiAJ LyogU2V0IERNQSB0cmFuc2ZlciBtYXNrICovCi0JaWYgKGRtYV9zZXRfbWFzaygmcGNpLT5kZXYs IERNQV9CSVRfTUFTSyhkbWFfYml0cykpKSB7CisJaWYgKCFkbWFfc2V0X21hc2soJnBjaS0+ZGV2 LCBETUFfQklUX01BU0soZG1hX2JpdHMpKSkgewogCQlkbWFfc2V0X2NvaGVyZW50X21hc2soJnBj aS0+ZGV2LCBETUFfQklUX01BU0soZG1hX2JpdHMpKTsKIAl9IGVsc2UgewogCQlkbWFfc2V0X21h c2soJnBjaS0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYv dXRpbC9zeW1ib2wuYyBiL3Rvb2xzL3BlcmYvdXRpbC9zeW1ib2wuYwppbmRleCBhM2YwMzkwOGY0 MjEuLmYyZTJlOTRmYjYzZiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3N5bWJvbC5jCisr KyBiL3Rvb2xzL3BlcmYvdXRpbC9zeW1ib2wuYwpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgc3lt Ym9sc19fZml4dXBfZW5kKHN0cnVjdCByYl9yb290ICpzeW1ib2xzKQogCiAJLyogTGFzdCBlbnRy eSAqLwogCWlmIChjdXJyLT5lbmQgPT0gY3Vyci0+c3RhcnQpCi0JCWN1cnItPmVuZCA9IHJvdW5k dXAoY3Vyci0+c3RhcnQsIDQwOTYpOworCQljdXJyLT5lbmQgPSByb3VuZHVwKGN1cnItPnN0YXJ0 LCA0MDk2KSArIDQwOTY7CiB9CiAKIHZvaWQgX19tYXBfZ3JvdXBzX19maXh1cF9lbmQoc3RydWN0 IG1hcF9ncm91cHMgKm1nLCBlbnVtIG1hcF90eXBlIHR5cGUpCmRpZmYgLS1naXQgYS90b29scy9w b3dlci9jcHVwb3dlci91dGlscy9oZWxwZXJzL2NwdWlkLmMgYi90b29scy9wb3dlci9jcHVwb3dl ci91dGlscy9oZWxwZXJzL2NwdWlkLmMKaW5kZXggOTNiMGFhNzRjYTAzLi4zOWMyYzdkMDY3YmIg MTAwNjQ0Ci0tLSBhL3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL3V0aWxzL2hlbHBlcnMvY3B1aWQuYwor KysgYi90b29scy9wb3dlci9jcHVwb3dlci91dGlscy9oZWxwZXJzL2NwdWlkLmMKQEAgLTE1Niw2 ICsxNTYsNyBAQCBpbnQgZ2V0X2NwdV9pbmZvKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVw b3dlcl9jcHVfaW5mbyAqY3B1X2luZm8pCiAJCQkJCSAqLwogCQkJY2FzZSAweDJDOgkvKiBXZXN0 bWVyZSBFUCAtIEd1bGZ0b3duICovCiAJCQkJY3B1X2luZm8tPmNhcHMgfD0gQ1BVUE9XRVJfQ0FQ X0hBU19UVVJCT19SQVRJTzsKKwkJCQlicmVhazsKIAkJCWNhc2UgMHgyQToJLyogU05CICovCiAJ CQljYXNlIDB4MkQ6CS8qIFNOQiBYZW9uICovCiAJCQljYXNlIDB4M0E6CS8qIElWQiAqLwpkaWZm IC0tZ2l0IGEvdmlydC9rdm0vZXZlbnRmZC5jIGIvdmlydC9rdm0vZXZlbnRmZC5jCmluZGV4IDJk NDI5MWI4Nzc5Mi4uOGViYzE2MmJiNDI4IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9ldmVudGZkLmMK KysrIGIvdmlydC9rdm0vZXZlbnRmZC5jCkBAIC03OTQsNyArNzk0LDggQEAga3ZtX2RlYXNzaWdu X2lvZXZlbnRmZF9pZHgoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKIAkJ CWNvbnRpbnVlOwogCiAJCWt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBidXNfaWR4LCAm cC0+ZGV2KTsKLQkJa3ZtLT5idXNlc1tidXNfaWR4XS0+aW9ldmVudGZkX2NvdW50LS07CisJCWlm IChrdm0tPmJ1c2VzW2J1c19pZHhdKQorCQkJa3ZtLT5idXNlc1tidXNfaWR4XS0+aW9ldmVudGZk X2NvdW50LS07CiAJCWlvZXZlbnRmZF9yZWxlYXNlKHApOwogCQlyZXQgPSAwOwogCQlicmVhazsK ZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmlu ZGV4IDYxMDNmOTIzODc3NC4uNTJlY2QzYTE1OTQxIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1f bWFpbi5jCisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTYwNiw4ICs2MDYsMTEgQEAgc3Rh dGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCWxpc3RfZGVsKCZrdm0t PnZtX2xpc3QpOwogCXNwaW5fdW5sb2NrKCZrdm1fbG9jayk7CiAJa3ZtX2ZyZWVfaXJxX3JvdXRp bmcoa3ZtKTsKLQlmb3IgKGkgPSAwOyBpIDwgS1ZNX05SX0JVU0VTOyBpKyspCi0JCWt2bV9pb19i dXNfZGVzdHJveShrdm0tPmJ1c2VzW2ldKTsKKwlmb3IgKGkgPSAwOyBpIDwgS1ZNX05SX0JVU0VT OyBpKyspIHsKKwkJaWYgKGt2bS0+YnVzZXNbaV0pCisJCQlrdm1faW9fYnVzX2Rlc3Ryb3koa3Zt LT5idXNlc1tpXSk7CisJCWt2bS0+YnVzZXNbaV0gPSBOVUxMOworCX0KIAlrdm1fY29hbGVzY2Vk X21taW9fZnJlZShrdm0pOwogI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikgJiYgZGVm aW5lZChLVk1fQVJDSF9XQU5UX01NVV9OT1RJRklFUikKIAltbXVfbm90aWZpZXJfdW5yZWdpc3Rl cigma3ZtLT5tbXVfbm90aWZpZXIsIGt2bS0+bW0pOwpAQCAtMjkwNiw2ICsyOTA5LDggQEAgaW50 IGt2bV9pb19idXNfd3JpdGUoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwg Z3BhX3QgYWRkciwKIAl9OwogCiAJYnVzID0gc3JjdV9kZXJlZmVyZW5jZShrdm0tPmJ1c2VzW2J1 c19pZHhdLCAma3ZtLT5zcmN1KTsKKwlpZiAoIWJ1cykKKwkJcmV0dXJuIC1FTk9NRU07CiAJciA9 IF9fa3ZtX2lvX2J1c193cml0ZShidXMsICZyYW5nZSwgdmFsKTsKIAlyZXR1cm4gciA8IDAgPyBy IDogMDsKIH0KQEAgLTI5MjMsNiArMjkyOCw4IEBAIGludCBrdm1faW9fYnVzX3dyaXRlX2Nvb2tp ZShzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LCBncGFfdCBhZGRyLAogCX07 CiAKIAlidXMgPSBzcmN1X2RlcmVmZXJlbmNlKGt2bS0+YnVzZXNbYnVzX2lkeF0sICZrdm0tPnNy Y3UpOworCWlmICghYnVzKQorCQlyZXR1cm4gLUVOT01FTTsKIAogCS8qIEZpcnN0IHRyeSB0aGUg ZGV2aWNlIHJlZmVyZW5jZWQgYnkgY29va2llLiAqLwogCWlmICgoY29va2llID49IDApICYmIChj b29raWUgPCBidXMtPmRldl9jb3VudCkgJiYKQEAgLTI5NzMsNiArMjk4MCw4IEBAIGludCBrdm1f aW9fYnVzX3JlYWQoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwgZ3BhX3Qg YWRkciwKIAl9OwogCiAJYnVzID0gc3JjdV9kZXJlZmVyZW5jZShrdm0tPmJ1c2VzW2J1c19pZHhd LCAma3ZtLT5zcmN1KTsKKwlpZiAoIWJ1cykKKwkJcmV0dXJuIC1FTk9NRU07CiAJciA9IF9fa3Zt X2lvX2J1c19yZWFkKGJ1cywgJnJhbmdlLCB2YWwpOwogCXJldHVybiByIDwgMCA/IHIgOiAwOwog fQpAQCAtMjk4NSw2ICsyOTk0LDkgQEAgaW50IGt2bV9pb19idXNfcmVnaXN0ZXJfZGV2KHN0cnVj dCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsIGdwYV90IGFkZHIsCiAJc3RydWN0IGt2 bV9pb19idXMgKm5ld19idXMsICpidXM7CiAKIAlidXMgPSBrdm0tPmJ1c2VzW2J1c19pZHhdOwor CWlmICghYnVzKQorCQlyZXR1cm4gLUVOT01FTTsKKwogCS8qIGV4Y2x1ZGUgaW9ldmVudGZkIHdo aWNoIGlzIGxpbWl0ZWQgYnkgbWF4aW11bSBmZCAqLwogCWlmIChidXMtPmRldl9jb3VudCAtIGJ1 cy0+aW9ldmVudGZkX2NvdW50ID4gTlJfSU9CVVNfREVWUyAtIDEpCiAJCXJldHVybiAtRU5PU1BD OwpAQCAtMzAwNCwzNyArMzAxNiw0MSBAQCBpbnQga3ZtX2lvX2J1c19yZWdpc3Rlcl9kZXYoc3Ry dWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwgZ3BhX3QgYWRkciwKIH0KIAogLyog Q2FsbGVyIG11c3QgaG9sZCBzbG90c19sb2NrLiAqLwotaW50IGt2bV9pb19idXNfdW5yZWdpc3Rl cl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKLQkJCSAgICAgIHN0 cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpCit2b2lkIGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYo c3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKKwkJCSAgICAgICBzdHJ1Y3Qg a3ZtX2lvX2RldmljZSAqZGV2KQogewotCWludCBpLCByOworCWludCBpOwogCXN0cnVjdCBrdm1f aW9fYnVzICpuZXdfYnVzLCAqYnVzOwogCiAJYnVzID0ga3ZtLT5idXNlc1tidXNfaWR4XTsKLQly ID0gLUVOT0VOVDsKKwlpZiAoIWJ1cykKKwkJcmV0dXJuOworCiAJZm9yIChpID0gMDsgaSA8IGJ1 cy0+ZGV2X2NvdW50OyBpKyspCiAJCWlmIChidXMtPnJhbmdlW2ldLmRldiA9PSBkZXYpIHsKLQkJ CXIgPSAwOwogCQkJYnJlYWs7CiAJCX0KIAotCWlmIChyKQotCQlyZXR1cm4gcjsKKwlpZiAoaSA9 PSBidXMtPmRldl9jb3VudCkKKwkJcmV0dXJuOwogCiAJbmV3X2J1cyA9IGt6YWxsb2Moc2l6ZW9m KCpidXMpICsgKChidXMtPmRldl9jb3VudCAtIDEpICoKIAkJCSAgc2l6ZW9mKHN0cnVjdCBrdm1f aW9fcmFuZ2UpKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFuZXdfYnVzKQotCQlyZXR1cm4gLUVOT01F TTsKKwlpZiAoIW5ld19idXMpICB7CisJCXByX2Vycigia3ZtOiBmYWlsZWQgdG8gc2hyaW5rIGJ1 cywgcmVtb3ZpbmcgaXQgY29tcGxldGVseVxuIik7CisJCWdvdG8gYnJva2VuOworCX0KIAogCW1l bWNweShuZXdfYnVzLCBidXMsIHNpemVvZigqYnVzKSArIGkgKiBzaXplb2Yoc3RydWN0IGt2bV9p b19yYW5nZSkpOwogCW5ld19idXMtPmRldl9jb3VudC0tOwogCW1lbWNweShuZXdfYnVzLT5yYW5n ZSArIGksIGJ1cy0+cmFuZ2UgKyBpICsgMSwKIAkgICAgICAgKG5ld19idXMtPmRldl9jb3VudCAt IGkpICogc2l6ZW9mKHN0cnVjdCBrdm1faW9fcmFuZ2UpKTsKIAorYnJva2VuOgogCXJjdV9hc3Np Z25fcG9pbnRlcihrdm0tPmJ1c2VzW2J1c19pZHhdLCBuZXdfYnVzKTsKIAlzeW5jaHJvbml6ZV9z cmN1X2V4cGVkaXRlZCgma3ZtLT5zcmN1KTsKIAlrZnJlZShidXMpOwotCXJldHVybiByOworCXJl dHVybjsKIH0KIAogc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBrdm1fY3B1X25vdGlmaWVy ID0gewo= --=-6X77ZQnHhQOMEpQhqdzx-- --=-fFRo6ULrD9nIXEF8bAAI Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAllrlVUACgkQ57/I7JWG EQlbcxAAyRUn2+E+xNK703JTD5GN3w19QdGUcFExwuuJqfw24+Lr9kjEd6YO15HT SsSGT0Oc5pMa9YFTCqwUGzpcAj2W+MfBCok51QSXweIMXGNqnyOBLfImc+ZgFmZW U3I2gPP1UmxktzfQiJ1CFrgbZOvch9OhWxU8b/8VENj5tIKllvAodiOFmyi7uw5Y LszHQAyisTUZXDWzbwiRXGNDHU8dQOUEYt+ZZzNhl6oVjLTAnyf2LipMAAHDwa8R /9zmSJetnAOnuSnxwK+eugJzbGaWlUJWOK3wIeF9qyNRBBFEMRVxLiqOiLJ/AYQY tATRGxd7SW2k4SDDazo9Syu45Da3tHCPcOb5iTJGfBgWYghdfCK8BJ2Xcv3SZCh4 LwNu8dxWqihUiwAoAEsWklC6BeMO3ZgGXh3w42oQ3WQgm7UDQyLvy3VcrT86gxeK Rfc6/+vuT1ysVcnKKstQHQ2J/vM8D7J1X4HVL3kiMtXwXfyWODMoa1dnessLe+ja YO/HzsT+ykEHcPoFezU/1zw7SbK84xj+pueZadwQWC21R8xD2Y90NZnPbQmTClUZ YwvvG2+F8BpEU4SJIIg2jRchnnrEEdYb8qGBNf+/6XPRz4dykTC1JNQ+G8ZRZ9la 8/gt8QvBOLjZoXXxg7zAs2emS7DsGUZsYB0qVcSvWT3YUdHA/hA= =JyHl -----END PGP SIGNATURE----- --=-fFRo6ULrD9nIXEF8bAAI--