Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751732AbaKAXM1 (ORCPT ); Sat, 1 Nov 2014 19:12:27 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:60718 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751171AbaKAXMY (ORCPT ); Sat, 1 Nov 2014 19:12:24 -0400 Message-ID: <1414883527.27313.3.camel@decadent.org.uk> Subject: Re: [PATCH 3.2 000/102] 3.2.64-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org, torvalds@linux-foundation.org, Satoru Takeuchi , Guenter Roeck , Phil Jensen , akpm@linux-foundation.org Date: Sat, 01 Nov 2014 23:12:07 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-X6n5JTNLkHR5rPZq/102" X-Mailer: Evolution 3.12.7-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.4.249 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 --=-X6n5JTNLkHR5rPZq/102 Content-Type: multipart/mixed; boundary="=-Q/PpSv8caHZwMmahWlpi" --=-Q/PpSv8caHZwMmahWlpi Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined patch for 3.2.64-rc1 relative to 3.2.63. Ben. --=20 Ben Hutchings Kids! Bringing about Armageddon can be dangerous. Do not attempt it in your own home. - Terry Pratchett and Neil Gaiman, `Good Omens' --=-Q/PpSv8caHZwMmahWlpi Content-Disposition: attachment; filename="linux-3.2.64-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.2.64-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggNmQzZjJkNC4uZGY3ZmQ3YyAx MDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTEsNyArMSw3IEBACiBWRVJT SU9OID0gMwogUEFUQ0hMRVZFTCA9IDIKLVNVQkxFVkVMID0gNjMKLUVYVFJBVkVSU0lPTiA9CitT VUJMRVZFTCA9IDY0CitFWFRSQVZFUlNJT04gPSAtcmMxCiBOQU1FID0gU2FiZXItdG9vdGhlZCBT cXVpcnJlbAogCiAjICpET0NVTUVOVEFUSU9OKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vYWxp Z25tZW50LmMgYi9hcmNoL2FybS9tbS9hbGlnbm1lbnQuYwppbmRleCBhMTI1YzRiLi42ZTM5YmYx IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9hbGlnbm1lbnQuYworKysgYi9hcmNoL2FybS9tbS9h bGlnbm1lbnQuYwpAQCAtMzgsNiArMzgsNyBAQAogICogVGhpcyBjb2RlIGlzIG5vdCBwb3J0YWJs ZSB0byBwcm9jZXNzb3JzIHdpdGggbGF0ZSBkYXRhIGFib3J0IGhhbmRsaW5nLgogICovCiAjZGVm aW5lIENPRElOR19CSVRTKGkpCShpICYgMHgwZTAwMDAwMCkKKyNkZWZpbmUgQ09ORF9CSVRTKGkp CShpICYgMHhmMDAwMDAwMCkKIAogI2RlZmluZSBMRFNUX0lfQklUKGkpCShpICYgKDEgPDwgMjYp KQkJLyogSW1tZWRpYXRlIGNvbnN0YW50CSovCiAjZGVmaW5lIExEU1RfUF9CSVQoaSkJKGkgJiAo MSA8PCAyNCkpCQkvKiBQcmVpbmRleAkJKi8KQEAgLTgxMiw2ICs4MTMsOCBAQCBkb19hbGlnbm1l bnQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBpbnQgZnNyLCBzdHJ1Y3QgcHRfcmVncyAq cmVncykKIAkJYnJlYWs7CiAKIAljYXNlIDB4MDQwMDAwMDA6CS8qIGxkciBvciBzdHIgaW1tZWRp YXRlICovCisJCWlmIChDT05EX0JJVFMoaW5zdHIpID09IDB4ZjAwMDAwMDApIC8qIE5FT04gVkxE biwgVlNUbiAqLworCQkJZ290byBiYWQ7CiAJCW9mZnNldC51biA9IE9GRlNFVF9CSVRTKGluc3Ry KTsKIAkJaGFuZGxlciA9IGRvX2FsaWdubWVudF9sZHJzdHI7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvYXJjaC9taXBzL2Jvb3QvY29tcHJlc3NlZC9kZWNvbXByZXNzLmMgYi9hcmNoL21pcHMvYm9v dC9jb21wcmVzc2VkL2RlY29tcHJlc3MuYwppbmRleCA1Y2FkMGZhLi5jYTUxZDY5IDEwMDY0NAot LS0gYS9hcmNoL21pcHMvYm9vdC9jb21wcmVzc2VkL2RlY29tcHJlc3MuYworKysgYi9hcmNoL21p cHMvYm9vdC9jb21wcmVzc2VkL2RlY29tcHJlc3MuYwpAQCAtMTMsNiArMTMsNyBAQAogCiAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRl IDxsaW51eC9zdHJpbmcuaD4KIAogI2luY2x1ZGUgPGFzbS9hZGRyc3BhY2UuaD4KIApkaWZmIC0t Z2l0IGEvYXJjaC9taXBzL2tlcm5lbC9tY291bnQuUyBiL2FyY2gvbWlwcy9rZXJuZWwvbWNvdW50 LlMKaW5kZXggNGM5NjhlNy4uNTVlY2E0MSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9t Y291bnQuUworKysgYi9hcmNoL21pcHMva2VybmVsL21jb3VudC5TCkBAIC0xMTksNyArMTE5LDEx IEBAIE5FU1RFRChfbWNvdW50LCBQVF9TSVpFLCByYSkKIAkgbm9wCiAjZW5kaWYKIAliCWZ0cmFj ZV9zdHViCisjaWZkZWYgQ09ORklHXzMyQklUCisJIGFkZGl1IHNwLCBzcCwgOAorI2Vsc2UKIAkg bm9wCisjZW5kaWYKIAogc3RhdGljX3RyYWNlOgogCU1DT1VOVF9TQVZFX1JFR1MKQEAgLTEyOSw2 ICsxMzMsOSBAQCBzdGF0aWNfdHJhY2U6CiAJIG1vdmUJYTEsIEFUCQkvKiBhcmcyOiBwYXJlbnQn cyByZXR1cm4gYWRkcmVzcyAqLwogCiAJTUNPVU5UX1JFU1RPUkVfUkVHUworI2lmZGVmIENPTkZJ R18zMkJJVAorCWFkZGl1IHNwLCBzcCwgOAorI2VuZGlmCiAJLmdsb2JsIGZ0cmFjZV9zdHViCiBm dHJhY2Vfc3R1YjoKIAlSRVRVUk5fQkFDSwpAQCAtMTc3LDYgKzE4NCwxMSBAQCBORVNURUQoZnRy YWNlX2dyYXBoX2NhbGxlciwgUFRfU0laRSwgcmEpCiAJamFsCXByZXBhcmVfZnRyYWNlX3JldHVy bgogCSBub3AKIAlNQ09VTlRfUkVTVE9SRV9SRUdTCisjaWZuZGVmIENPTkZJR19EWU5BTUlDX0ZU UkFDRQorI2lmZGVmIENPTkZJR18zMkJJVAorCWFkZGl1IHNwLCBzcCwgOAorI2VuZGlmCisjZW5k aWYKIAlSRVRVUk5fQkFDSwogCUVORChmdHJhY2VfZ3JhcGhfY2FsbGVyKQogCmRpZmYgLS1naXQg YS9hcmNoL21pcHMvbW0vYy1yNGsuYyBiL2FyY2gvbWlwcy9tbS9jLXI0ay5jCmluZGV4IGZlNDI1 YmIuLjIyOGEyMDUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS9jLXI0ay5jCisrKyBiL2FyY2gv bWlwcy9tbS9jLXI0ay5jCkBAIC02MDYsNiArNjA2LDcgQEAgc3RhdGljIHZvaWQgcjRrX2RtYV9j YWNoZV93YmFja19pbnYodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCiAJ CQlyNGtfYmxhc3Rfc2NhY2hlKCk7CiAJCWVsc2UKIAkJCWJsYXN0X3NjYWNoZV9yYW5nZShhZGRy LCBhZGRyICsgc2l6ZSk7CisJCXByZWVtcHRfZW5hYmxlKCk7CiAJCV9fc3luYygpOwogCQlyZXR1 cm47CiAJfQpAQCAtNjQ3LDYgKzY0OCw3IEBAIHN0YXRpYyB2b2lkIHI0a19kbWFfY2FjaGVfaW52 KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQogCQkJICovCiAJCQlibGFz dF9pbnZfc2NhY2hlX3JhbmdlKGFkZHIsIGFkZHIgKyBzaXplKTsKIAkJfQorCQlwcmVlbXB0X2Vu YWJsZSgpOwogCQlfX3N5bmMoKTsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvcGFy aXNjL01ha2VmaWxlIGIvYXJjaC9wYXJpc2MvTWFrZWZpbGUKaW5kZXggNTVjY2ExZC4uNzU5NDdl MCAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvTWFrZWZpbGUKKysrIGIvYXJjaC9wYXJpc2MvTWFr ZWZpbGUKQEAgLTQ3LDcgKzQ3LDEyIEBAIGNmbGFncy15CTo9IC1waXBlCiAKICMgVGhlc2UgZmxh Z3Mgc2hvdWxkIGJlIGltcGxpZWQgYnkgYW4gaHBwYS1saW51eCBjb25maWd1cmF0aW9uLCBidXQg dGhleQogIyBhcmUgbm90IGluIGdjYyAzLjIuCi1jZmxhZ3MteQkrPSAtbW5vLXNwYWNlLXJlZ3Mg LW1mYXN0LWluZGlyZWN0LWNhbGxzCitjZmxhZ3MteQkrPSAtbW5vLXNwYWNlLXJlZ3MKKworIyAt bWZhc3QtaW5kaXJlY3QtY2FsbHMgaXMgb25seSByZWxldmFudCBmb3IgMzItYml0IGtlcm5lbHMu CitpZm5kZWYgQ09ORklHXzY0QklUCitjZmxhZ3MteQkrPSAtbWZhc3QtaW5kaXJlY3QtY2FsbHMK K2VuZGlmCiAKICMgQ3VycmVudGx5IHdlIHNhdmUgYW5kIHJlc3RvcmUgZnByZWdzIG9uIGFsbCBr ZXJuZWwgZW50cnkvaW50ZXJydXB0aW9uIHBhdGhzLgogIyBJZiB0aGF0IGdldHMgb3B0aW1pemVk LCB3ZSBtaWdodCBuZWVkIHRvIGRpc2FibGUgdGhlIHVzZSBvZiBmcHJlZ3MgaW4gdGhlCmRpZmYg LS1naXQgYS9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMgYi9hcmNoL3MzOTAva3ZtL2t2bS1zMzkw LmMKaW5kZXggZGQwNzJiMS4uZjZmNDFkZCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9rdm0t czM5MC5jCisrKyBiL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYwpAQCAtNTE2LDE2ICs1MTYsNiBA QCByZXJ1bl92Y3B1OgogCiAJQlVHX09OKHZjcHUtPmt2bS0+YXJjaC5mbG9hdF9pbnQubG9jYWxf aW50W3ZjcHUtPnZjcHVfaWRdID09IE5VTEwpOwogCi0Jc3dpdGNoIChrdm1fcnVuLT5leGl0X3Jl YXNvbikgewotCWNhc2UgS1ZNX0VYSVRfUzM5MF9TSUVJQzoKLQljYXNlIEtWTV9FWElUX1VOS05P V046Ci0JY2FzZSBLVk1fRVhJVF9JTlRSOgotCWNhc2UgS1ZNX0VYSVRfUzM5MF9SRVNFVDoKLQkJ YnJlYWs7Ci0JZGVmYXVsdDoKLQkJQlVHKCk7Ci0JfQotCiAJdmNwdS0+YXJjaC5zaWVfYmxvY2st Pmdwc3cubWFzayA9IGt2bV9ydW4tPnBzd19tYXNrOwogCXZjcHUtPmFyY2guc2llX2Jsb2NrLT5n cHN3LmFkZHIgPSBrdm1fcnVuLT5wc3dfYWRkcjsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5j bHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5k ZXggYjNlYjlhNy4uMTVkMjRjYiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3Zt X2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC04MjEsNiAr ODIxLDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faW5qZWN0X2dwKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgdTMyIGVycm9yX2NvZGUpCiAJa3ZtX3F1ZXVlX2V4Y2VwdGlvbl9lKHZjcHUsIEdQ X1ZFQ1RPUiwgZXJyb3JfY29kZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdTY0IGdldF9jYW5vbmlj YWwodTY0IGxhKQoreworCXJldHVybiAoKGludDY0X3QpbGEgPDwgMTYpID4+IDE2OworfQorCitz dGF0aWMgaW5saW5lIGJvb2wgaXNfbm9uY2Fub25pY2FsX2FkZHJlc3ModTY0IGxhKQoreworI2lm ZGVmIENPTkZJR19YODZfNjQKKwlyZXR1cm4gZ2V0X2Nhbm9uaWNhbChsYSkgIT0gbGE7CisjZWxz ZQorCXJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiAjZGVmaW5lIFRTU19JT1BCX0JBU0VfT0ZG U0VUIDB4NjYKICNkZWZpbmUgVFNTX0JBU0VfU0laRSAweDY4CiAjZGVmaW5lIFRTU19JT1BCX1NJ WkUgKDY1NTM2IC8gOCkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ZteC5oIGIv YXJjaC94ODYvaW5jbHVkZS9hc20vdm14LmgKaW5kZXggMzFmMTgwYy4uMmUzZTQwNyAxMDA2NDQK LS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdm14LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9h c20vdm14LmgKQEAgLTI3OSw2ICsyNzksOCBAQCBlbnVtIHZtY3NfZmllbGQgewogI2RlZmluZSBF WElUX1JFQVNPTl9BUElDX0FDQ0VTUyAgICAgICAgIDQ0CiAjZGVmaW5lIEVYSVRfUkVBU09OX0VQ VF9WSU9MQVRJT04gICAgICAgNDgKICNkZWZpbmUgRVhJVF9SRUFTT05fRVBUX01JU0NPTkZJRyAg ICAgICA0OQorI2RlZmluZSBFWElUX1JFQVNPTl9JTlZFUFQgICAgICAgICAgICAgIDUwCisjZGVm aW5lIEVYSVRfUkVBU09OX0lOVlZQSUQgICAgICAgICAgICAgNTMKICNkZWZpbmUgRVhJVF9SRUFT T05fV0JJTlZECQk1NAogI2RlZmluZSBFWElUX1JFQVNPTl9YU0VUQlYJCTU1CiAKQEAgLTM5Nyw2 ICszOTksNyBAQCBlbnVtIHZtY3NfZmllbGQgewogI2RlZmluZSBWTVhfRVBUX0VYVEVOVF9JTkRJ VklEVUFMX0FERFIJCTAKICNkZWZpbmUgVk1YX0VQVF9FWFRFTlRfQ09OVEVYVAkJCTEKICNkZWZp bmUgVk1YX0VQVF9FWFRFTlRfR0xPQkFMCQkJMgorI2RlZmluZSBWTVhfRVBUX0VYVEVOVF9TSElG VAkJCTI0CiAKICNkZWZpbmUgVk1YX0VQVF9FWEVDVVRFX09OTFlfQklUCQkoMXVsbCkKICNkZWZp bmUgVk1YX0VQVF9QQUdFX1dBTEtfNF9CSVQJCQkoMXVsbCA8PCA2KQpAQCAtNDA0LDYgKzQwNyw3 IEBAIGVudW0gdm1jc19maWVsZCB7CiAjZGVmaW5lIFZNWF9FUFRQX1dCX0JJVAkJCQkoMXVsbCA8 PCAxNCkKICNkZWZpbmUgVk1YX0VQVF8yTUJfUEFHRV9CSVQJCQkoMXVsbCA8PCAxNikKICNkZWZp bmUgVk1YX0VQVF8xR0JfUEFHRV9CSVQJCQkoMXVsbCA8PCAxNykKKyNkZWZpbmUgVk1YX0VQVF9J TlZFUFRfQklUCQkJKDF1bGwgPDwgMjApCiAjZGVmaW5lIFZNWF9FUFRfRVhURU5UX0lORElWSURV QUxfQklUCQkoMXVsbCA8PCAyNCkKICNkZWZpbmUgVk1YX0VQVF9FWFRFTlRfQ09OVEVYVF9CSVQJ CSgxdWxsIDw8IDI1KQogI2RlZmluZSBWTVhfRVBUX0VYVEVOVF9HTE9CQUxfQklUCQkoMXVsbCA8 PCAyNikKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zbXBib290LmMgYi9hcmNoL3g4Ni9r ZXJuZWwvc21wYm9vdC5jCmluZGV4IDZlNjhiZDkuLmJiMjhmMmNhIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9rZXJuZWwvc21wYm9vdC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9zbXBib290LmMKQEAg LTEyNTIsNiArMTI1Miw5IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9zaWJsaW5naW5mbyhpbnQgY3B1 KQogCiAJZm9yX2VhY2hfY3B1KHNpYmxpbmcsIGNwdV9zaWJsaW5nX21hc2soY3B1KSkKIAkJY3B1 bWFza19jbGVhcl9jcHUoY3B1LCBjcHVfc2libGluZ19tYXNrKHNpYmxpbmcpKTsKKwlmb3JfZWFj aF9jcHUoc2libGluZywgY3B1X2xsY19zaGFyZWRfbWFzayhjcHUpKQorCQljcHVtYXNrX2NsZWFy X2NwdShjcHUsIGNwdV9sbGNfc2hhcmVkX21hc2soc2libGluZykpOworCWNwdW1hc2tfY2xlYXIo Y3B1X2xsY19zaGFyZWRfbWFzayhjcHUpKTsKIAljcHVtYXNrX2NsZWFyKGNwdV9zaWJsaW5nX21h c2soY3B1KSk7CiAJY3B1bWFza19jbGVhcihjcHVfY29yZV9tYXNrKGNwdSkpOwogCWMtPnBoeXNf cHJvY19pZCA9IDA7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jIGIvYXJjaC94 ODYva3ZtL2VtdWxhdGUuYwppbmRleCA2MzhjYWI1Li41NjA0N2QyIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9rdm0vZW11bGF0ZS5jCisrKyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKQEAgLTQ1Niwx MSArNDU2LDYgQEAgcmVnaXN0ZXJfYWRkcmVzc19pbmNyZW1lbnQoc3RydWN0IHg4Nl9lbXVsYXRl X2N0eHQgKmN0eHQsIHVuc2lnbmVkIGxvbmcgKnJlZywgaW4KIAkJKnJlZyA9ICgqcmVnICYgfmFk X21hc2soY3R4dCkpIHwgKCgqcmVnICsgaW5jKSAmIGFkX21hc2soY3R4dCkpOwogfQogCi1zdGF0 aWMgaW5saW5lIHZvaWQgam1wX3JlbChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgaW50 IHJlbCkKLXsKLQlyZWdpc3Rlcl9hZGRyZXNzX2luY3JlbWVudChjdHh0LCAmY3R4dC0+X2VpcCwg cmVsKTsKLX0KLQogc3RhdGljIHUzMiBkZXNjX2xpbWl0X3NjYWxlZChzdHJ1Y3QgZGVzY19zdHJ1 Y3QgKmRlc2MpCiB7CiAJdTMyIGxpbWl0ID0gZ2V0X2Rlc2NfbGltaXQoZGVzYyk7CkBAIC01MzQs NiArNTI5LDM4IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9ubShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4 dCAqY3R4dCkKIAlyZXR1cm4gZW11bGF0ZV9leGNlcHRpb24oY3R4dCwgTk1fVkVDVE9SLCAwLCBm YWxzZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IGFzc2lnbl9laXBfZmFyKHN0cnVjdCB4ODZf ZW11bGF0ZV9jdHh0ICpjdHh0LCB1bG9uZyBkc3QsCisJCQkgICAgICAgaW50IGNzX2wpCit7CisJ c3dpdGNoIChjdHh0LT5vcF9ieXRlcykgeworCWNhc2UgMjoKKwkJY3R4dC0+X2VpcCA9ICh1MTYp ZHN0OworCQlicmVhazsKKwljYXNlIDQ6CisJCWN0eHQtPl9laXAgPSAodTMyKWRzdDsKKwkJYnJl YWs7CisJY2FzZSA4OgorCQlpZiAoKGNzX2wgJiYgaXNfbm9uY2Fub25pY2FsX2FkZHJlc3MoZHN0 KSkgfHwKKwkJICAgICghY3NfbCAmJiAoZHN0ICYgfih1MzIpLTEpKSkKKwkJCXJldHVybiBlbXVs YXRlX2dwKGN0eHQsIDApOworCQljdHh0LT5fZWlwID0gZHN0OworCQlicmVhazsKKwlkZWZhdWx0 OgorCQlXQVJOKDEsICJ1bnN1cHBvcnRlZCBlaXAgYXNzaWdubWVudCBzaXplXG4iKTsKKwl9CisJ cmV0dXJuIFg4NkVNVUxfQ09OVElOVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGFzc2lnbl9l aXBfbmVhcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgdWxvbmcgZHN0KQoreworCXJl dHVybiBhc3NpZ25fZWlwX2ZhcihjdHh0LCBkc3QsIGN0eHQtPm1vZGUgPT0gWDg2RU1VTF9NT0RF X1BST1Q2NCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGptcF9yZWwoc3RydWN0IHg4Nl9lbXVs YXRlX2N0eHQgKmN0eHQsIGludCByZWwpCit7CisJcmV0dXJuIGFzc2lnbl9laXBfbmVhcihjdHh0 LCBjdHh0LT5fZWlwICsgcmVsKTsKK30KKwogc3RhdGljIHUxNiBnZXRfc2VnbWVudF9zZWxlY3Rv cihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgdW5zaWduZWQgc2VnKQogewogCXUxNiBz ZWxlY3RvcjsKQEAgLTEyMDYsMTEgKzEyMzMsMTIgQEAgc3RhdGljIGludCB3cml0ZV9zZWdtZW50 X2Rlc2NyaXB0b3Ioc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCiB9CiAKIC8qIERvZXMg bm90IHN1cHBvcnQgbG9uZyBtb2RlICovCi1zdGF0aWMgaW50IGxvYWRfc2VnbWVudF9kZXNjcmlw dG9yKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAotCQkJCSAgIHUxNiBzZWxlY3Rvciwg aW50IHNlZykKK3N0YXRpYyBpbnQgX19sb2FkX3NlZ21lbnRfZGVzY3JpcHRvcihzdHJ1Y3QgeDg2 X2VtdWxhdGVfY3R4dCAqY3R4dCwKKwkJCQkgICAgIHUxNiBzZWxlY3RvciwgaW50IHNlZywgdTgg Y3BsLAorCQkJCSAgICAgc3RydWN0IGRlc2Nfc3RydWN0ICpkZXNjKQogewogCXN0cnVjdCBkZXNj X3N0cnVjdCBzZWdfZGVzYzsKLQl1OCBkcGwsIHJwbCwgY3BsOworCXU4IGRwbCwgcnBsOwogCXVu c2lnbmVkIGVycl92ZWMgPSBHUF9WRUNUT1I7CiAJdTMyIGVycl9jb2RlID0gMDsKIAlib29sIG51 bGxfc2VsZWN0b3IgPSAhKHNlbGVjdG9yICYgfjB4Myk7IC8qIDAwMDAtMDAwMyBhcmUgbnVsbCAq LwpAQCAtMTI1OSw3ICsxMjg3LDYgQEAgc3RhdGljIGludCBsb2FkX3NlZ21lbnRfZGVzY3JpcHRv cihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAogCXJwbCA9IHNlbGVjdG9yICYgMzsK IAlkcGwgPSBzZWdfZGVzYy5kcGw7Ci0JY3BsID0gY3R4dC0+b3BzLT5jcGwoY3R4dCk7CiAKIAlz d2l0Y2ggKHNlZykgewogCWNhc2UgVkNQVV9TUkVHX1NTOgpAQCAtMTMxNiwxMiArMTM0MywyMSBA QCBzdGF0aWMgaW50IGxvYWRfc2VnbWVudF9kZXNjcmlwdG9yKHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0LAogCX0KIGxvYWQ6CiAJY3R4dC0+b3BzLT5zZXRfc2VnbWVudChjdHh0LCBzZWxl Y3RvciwgJnNlZ19kZXNjLCAwLCBzZWcpOworCWlmIChkZXNjKQorCQkqZGVzYyA9IHNlZ19kZXNj OwogCXJldHVybiBYODZFTVVMX0NPTlRJTlVFOwogZXhjZXB0aW9uOgogCWVtdWxhdGVfZXhjZXB0 aW9uKGN0eHQsIGVycl92ZWMsIGVycl9jb2RlLCB0cnVlKTsKIAlyZXR1cm4gWDg2RU1VTF9QUk9Q QUdBVEVfRkFVTFQ7CiB9CiAKK3N0YXRpYyBpbnQgbG9hZF9zZWdtZW50X2Rlc2NyaXB0b3Ioc3Ry dWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCisJCQkJICAgdTE2IHNlbGVjdG9yLCBpbnQgc2Vn KQoreworCXU4IGNwbCA9IGN0eHQtPm9wcy0+Y3BsKGN0eHQpOworCXJldHVybiBfX2xvYWRfc2Vn bWVudF9kZXNjcmlwdG9yKGN0eHQsIHNlbGVjdG9yLCBzZWcsIGNwbCwgTlVMTCk7Cit9CisKIHN0 YXRpYyB2b2lkIHdyaXRlX3JlZ2lzdGVyX29wZXJhbmQoc3RydWN0IG9wZXJhbmQgKm9wKQogewog CS8qIFRoZSA0LWJ5dGUgY2FzZSAqaXMqIGNvcnJlY3Q6IGluIDY0LWJpdCBtb2RlIHdlIHplcm8t ZXh0ZW5kLiAqLwpAQCAtMTY2MSwxNyArMTY5NywzMSBAQCBzdGF0aWMgaW50IGVtX2lyZXQoc3Ry dWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiBzdGF0aWMgaW50IGVtX2ptcF9mYXIoc3RydWN0 IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAJaW50IHJjOwotCXVuc2lnbmVkIHNob3J0IHNl bDsKKwl1bnNpZ25lZCBzaG9ydCBzZWwsIG9sZF9zZWw7CisJc3RydWN0IGRlc2Nfc3RydWN0IG9s ZF9kZXNjLCBuZXdfZGVzYzsKKwljb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMgPSBj dHh0LT5vcHM7CisJdTggY3BsID0gY3R4dC0+b3BzLT5jcGwoY3R4dCk7CisKKwkvKiBBc3NpZ25t ZW50IG9mIFJJUCBtYXkgb25seSBmYWlsIGluIDY0LWJpdCBtb2RlICovCisJaWYgKGN0eHQtPm1v ZGUgPT0gWDg2RU1VTF9NT0RFX1BST1Q2NCkKKwkJb3BzLT5nZXRfc2VnbWVudChjdHh0LCAmb2xk X3NlbCwgJm9sZF9kZXNjLCBOVUxMLAorCQkJCSBWQ1BVX1NSRUdfQ1MpOwogCiAJbWVtY3B5KCZz ZWwsIGN0eHQtPnNyYy52YWxwdHIgKyBjdHh0LT5vcF9ieXRlcywgMik7CiAKLQlyYyA9IGxvYWRf c2VnbWVudF9kZXNjcmlwdG9yKGN0eHQsIHNlbCwgVkNQVV9TUkVHX0NTKTsKKwlyYyA9IF9fbG9h ZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgc2VsLCBWQ1BVX1NSRUdfQ1MsIGNwbCwKKwkJCQkg ICAgICAgJm5ld19kZXNjKTsKIAlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJu IHJjOwogCi0JY3R4dC0+X2VpcCA9IDA7Ci0JbWVtY3B5KCZjdHh0LT5fZWlwLCBjdHh0LT5zcmMu dmFscHRyLCBjdHh0LT5vcF9ieXRlcyk7Ci0JcmV0dXJuIFg4NkVNVUxfQ09OVElOVUU7CisJcmMg PSBhc3NpZ25fZWlwX2ZhcihjdHh0LCBjdHh0LT5zcmMudmFsLCBuZXdfZGVzYy5sKTsKKwlpZiAo cmMgIT0gWDg2RU1VTF9DT05USU5VRSkgeworCQlXQVJOX09OKCFjdHh0LT5tb2RlICE9IFg4NkVN VUxfTU9ERV9QUk9UNjQpOworCQkvKiBhc3NpZ25pbmcgZWlwIGZhaWxlZDsgcmVzdG9yZSB0aGUg b2xkIGNzICovCisJCW9wcy0+c2V0X3NlZ21lbnQoY3R4dCwgb2xkX3NlbCwgJm9sZF9kZXNjLCAw LCBWQ1BVX1NSRUdfQ1MpOworCQlyZXR1cm4gcmM7CisJfQorCXJldHVybiByYzsKIH0KIAogc3Rh dGljIGludCBlbV9ncnAxYShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKQEAgLTE3NzAs MTMgKzE4MjAsMTUgQEAgc3RhdGljIGludCBlbV9ncnA0NShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4 dCAqY3R4dCkKIAljYXNlIDI6IC8qIGNhbGwgbmVhciBhYnMgKi8gewogCQlsb25nIGludCBvbGRf ZWlwOwogCQlvbGRfZWlwID0gY3R4dC0+X2VpcDsKLQkJY3R4dC0+X2VpcCA9IGN0eHQtPnNyYy52 YWw7CisJCXJjID0gYXNzaWduX2VpcF9uZWFyKGN0eHQsIGN0eHQtPnNyYy52YWwpOworCQlpZiAo cmMgIT0gWDg2RU1VTF9DT05USU5VRSkKKwkJCWJyZWFrOwogCQljdHh0LT5zcmMudmFsID0gb2xk X2VpcDsKIAkJcmMgPSBlbV9wdXNoKGN0eHQpOwogCQlicmVhazsKIAl9CiAJY2FzZSA0OiAvKiBq bXAgYWJzICovCi0JCWN0eHQtPl9laXAgPSBjdHh0LT5zcmMudmFsOworCQlyYyA9IGFzc2lnbl9l aXBfbmVhcihjdHh0LCBjdHh0LT5zcmMudmFsKTsKIAkJYnJlYWs7CiAJY2FzZSA1OiAvKiBqbXAg ZmFyICovCiAJCXJjID0gZW1fam1wX2ZhcihjdHh0KTsKQEAgLTE4MDgsMzAgKzE4NjAsNDcgQEAg c3RhdGljIGludCBlbV9ncnA5KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogCiBzdGF0 aWMgaW50IGVtX3JldChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKLQljdHh0LT5k c3QudHlwZSA9IE9QX1JFRzsKLQljdHh0LT5kc3QuYWRkci5yZWcgPSAmY3R4dC0+X2VpcDsKLQlj dHh0LT5kc3QuYnl0ZXMgPSBjdHh0LT5vcF9ieXRlczsKLQlyZXR1cm4gZW1fcG9wKGN0eHQpOwor CWludCByYzsKKwl1bnNpZ25lZCBsb25nIGVpcDsKKworCXJjID0gZW11bGF0ZV9wb3AoY3R4dCwg JmVpcCwgY3R4dC0+b3BfYnl0ZXMpOworCWlmIChyYyAhPSBYODZFTVVMX0NPTlRJTlVFKQorCQly ZXR1cm4gcmM7CisKKwlyZXR1cm4gYXNzaWduX2VpcF9uZWFyKGN0eHQsIGVpcCk7CiB9CiAKIHN0 YXRpYyBpbnQgZW1fcmV0X2ZhcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKIAlp bnQgcmM7Ci0JdW5zaWduZWQgbG9uZyBjczsKKwl1bnNpZ25lZCBsb25nIGVpcCwgY3M7CisJdTE2 IG9sZF9jczsKIAlpbnQgY3BsID0gY3R4dC0+b3BzLT5jcGwoY3R4dCk7CisJc3RydWN0IGRlc2Nf c3RydWN0IG9sZF9kZXNjLCBuZXdfZGVzYzsKKwljb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3Bz ICpvcHMgPSBjdHh0LT5vcHM7CiAKLQlyYyA9IGVtdWxhdGVfcG9wKGN0eHQsICZjdHh0LT5fZWlw LCBjdHh0LT5vcF9ieXRlcyk7CisJaWYgKGN0eHQtPm1vZGUgPT0gWDg2RU1VTF9NT0RFX1BST1Q2 NCkKKwkJb3BzLT5nZXRfc2VnbWVudChjdHh0LCAmb2xkX2NzLCAmb2xkX2Rlc2MsIE5VTEwsCisJ CQkJIFZDUFVfU1JFR19DUyk7CisKKwlyYyA9IGVtdWxhdGVfcG9wKGN0eHQsICZlaXAsIGN0eHQt Pm9wX2J5dGVzKTsKIAlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJjOwot CWlmIChjdHh0LT5vcF9ieXRlcyA9PSA0KQotCQljdHh0LT5fZWlwID0gKHUzMiljdHh0LT5fZWlw OwogCXJjID0gZW11bGF0ZV9wb3AoY3R4dCwgJmNzLCBjdHh0LT5vcF9ieXRlcyk7CiAJaWYgKHJj ICE9IFg4NkVNVUxfQ09OVElOVUUpCiAJCXJldHVybiByYzsKIAkvKiBPdXRlci1wcml2aWxlZ2Ug bGV2ZWwgcmV0dXJuIGlzIG5vdCBpbXBsZW1lbnRlZCAqLwogCWlmIChjdHh0LT5tb2RlID49IFg4 NkVNVUxfTU9ERV9QUk9UMTYgJiYgKGNzICYgMykgPiBjcGwpCiAJCXJldHVybiBYODZFTVVMX1VO SEFORExFQUJMRTsKLQlyYyA9IGxvYWRfc2VnbWVudF9kZXNjcmlwdG9yKGN0eHQsICh1MTYpY3Ms IFZDUFVfU1JFR19DUyk7CisJcmMgPSBfX2xvYWRfc2VnbWVudF9kZXNjcmlwdG9yKGN0eHQsICh1 MTYpY3MsIFZDUFVfU1JFR19DUywgMCwKKwkJCQkgICAgICAgJm5ld19kZXNjKTsKKwlpZiAocmMg IT0gWDg2RU1VTF9DT05USU5VRSkKKwkJcmV0dXJuIHJjOworCXJjID0gYXNzaWduX2VpcF9mYXIo Y3R4dCwgZWlwLCBuZXdfZGVzYy5sKTsKKwlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkgewor CQlXQVJOX09OKCFjdHh0LT5tb2RlICE9IFg4NkVNVUxfTU9ERV9QUk9UNjQpOworCQlvcHMtPnNl dF9zZWdtZW50KGN0eHQsIG9sZF9jcywgJm9sZF9kZXNjLCAwLCBWQ1BVX1NSRUdfQ1MpOworCX0K IAlyZXR1cm4gcmM7CiB9CiAKQEAgLTIwNDMsNyArMjExMiw3IEBAIHN0YXRpYyBpbnQgZW1fc3lz ZXhpdChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKIAlzdHJ1Y3QgeDg2X2VtdWxh dGVfb3BzICpvcHMgPSBjdHh0LT5vcHM7CiAJc3RydWN0IGRlc2Nfc3RydWN0IGNzLCBzczsKLQl1 NjQgbXNyX2RhdGE7CisJdTY0IG1zcl9kYXRhLCByY3gsIHJkeDsKIAlpbnQgdXNlcm1vZGU7CiAJ dTE2IGNzX3NlbCA9IDAsIHNzX3NlbCA9IDA7CiAKQEAgLTIwNTksNiArMjEyOCw5IEBAIHN0YXRp YyBpbnQgZW1fc3lzZXhpdChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAllbHNlCiAJ CXVzZXJtb2RlID0gWDg2RU1VTF9NT0RFX1BST1QzMjsKIAorCXJjeCA9IGN0eHQtPnJlZ3NbVkNQ VV9SRUdTX1JDWF07CisJcmR4ID0gY3R4dC0+cmVnc1tWQ1BVX1JFR1NfUkRYXTsKKwogCWNzLmRw bCA9IDM7CiAJc3MuZHBsID0gMzsKIAlvcHMtPmdldF9tc3IoY3R4dCwgTVNSX0lBMzJfU1lTRU5U RVJfQ1MsICZtc3JfZGF0YSk7CkBAIC0yMDc2LDYgKzIxNDgsOSBAQCBzdGF0aWMgaW50IGVtX3N5 c2V4aXQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiAJCXNzX3NlbCA9IGNzX3NlbCAr IDg7CiAJCWNzLmQgPSAwOwogCQljcy5sID0gMTsKKwkJaWYgKGlzX25vbmNhbm9uaWNhbF9hZGRy ZXNzKHJjeCkgfHwKKwkJICAgIGlzX25vbmNhbm9uaWNhbF9hZGRyZXNzKHJkeCkpCisJCQlyZXR1 cm4gZW11bGF0ZV9ncChjdHh0LCAwKTsKIAkJYnJlYWs7CiAJfQogCWNzX3NlbCB8PSBTRUxFQ1RP Ul9SUExfTUFTSzsKQEAgLTIwODQsOCArMjE1OSw4IEBAIHN0YXRpYyBpbnQgZW1fc3lzZXhpdChz dHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAlvcHMtPnNldF9zZWdtZW50KGN0eHQsIGNz X3NlbCwgJmNzLCAwLCBWQ1BVX1NSRUdfQ1MpOwogCW9wcy0+c2V0X3NlZ21lbnQoY3R4dCwgc3Nf c2VsLCAmc3MsIDAsIFZDUFVfU1JFR19TUyk7CiAKLQljdHh0LT5fZWlwID0gY3R4dC0+cmVnc1tW Q1BVX1JFR1NfUkRYXTsKLQljdHh0LT5yZWdzW1ZDUFVfUkVHU19SU1BdID0gY3R4dC0+cmVnc1tW Q1BVX1JFR1NfUkNYXTsKKwljdHh0LT5fZWlwID0gcmR4OworCWN0eHQtPnJlZ3NbVkNQVV9SRUdT X1JTUF0gPSByY3g7CiAKIAlyZXR1cm4gWDg2RU1VTF9DT05USU5VRTsKIH0KQEAgLTIxNzQsNiAr MjI0OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF9zdGF0ZV9mcm9tX3RzczE2KHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0LAogCQkJCSBzdHJ1Y3QgdHNzX3NlZ21lbnRfMTYgKnRzcykKIHsKIAlp bnQgcmV0OworCXU4IGNwbDsKIAogCWN0eHQtPl9laXAgPSB0c3MtPmlwOwogCWN0eHQtPmVmbGFn cyA9IHRzcy0+ZmxhZyB8IDI7CkBAIC0yMTk2LDIzICsyMjcyLDMwIEBAIHN0YXRpYyBpbnQgbG9h ZF9zdGF0ZV9mcm9tX3RzczE2KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogCXNldF9z ZWdtZW50X3NlbGVjdG9yKGN0eHQsIHRzcy0+c3MsIFZDUFVfU1JFR19TUyk7CiAJc2V0X3NlZ21l bnRfc2VsZWN0b3IoY3R4dCwgdHNzLT5kcywgVkNQVV9TUkVHX0RTKTsKIAorCWNwbCA9IHRzcy0+ Y3MgJiAzOworCiAJLyoKIAkgKiBOb3cgbG9hZCBzZWdtZW50IGRlc2NyaXB0b3JzLiBJZiBmYXVs dCBoYXBwZW5lcyBhdCB0aGlzIHN0YWdlCiAJICogaXQgaXMgaGFuZGxlZCBpbiBhIGNvbnRleHQg b2YgbmV3IHRhc2sKIAkgKi8KLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0LCB0 c3MtPmxkdCwgVkNQVV9TUkVHX0xEVFIpOworCXJldCA9IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0 b3IoY3R4dCwgdHNzLT5sZHQsIFZDUFVfU1JFR19MRFRSLCBjcGwsCisJCQkJCU5VTEwpOwogCWlm IChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBsb2FkX3Nl Z21lbnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPmVzLCBWQ1BVX1NSRUdfRVMpOworCXJldCA9IF9f bG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5lcywgVkNQVV9TUkVHX0VTLCBjcGws CisJCQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJl dDsKLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPmNzLCBWQ1BVX1NS RUdfQ1MpOworCXJldCA9IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5jcywg VkNQVV9TUkVHX0NTLCBjcGwsCisJCQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05U SU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0 LCB0c3MtPnNzLCBWQ1BVX1NSRUdfU1MpOworCXJldCA9IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0 b3IoY3R4dCwgdHNzLT5zcywgVkNQVV9TUkVHX1NTLCBjcGwsCisJCQkJCU5VTEwpOwogCWlmIChy ZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBsb2FkX3NlZ21l bnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPmRzLCBWQ1BVX1NSRUdfRFMpOworCXJldCA9IF9fbG9h ZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5kcywgVkNQVV9TUkVHX0RTLCBjcGwsCisJ CQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsK IApAQCAtMjI5MSw2ICsyMzc0LDcgQEAgc3RhdGljIGludCBsb2FkX3N0YXRlX2Zyb21fdHNzMzIo c3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCiAJCQkJIHN0cnVjdCB0c3Nfc2VnbWVudF8z MiAqdHNzKQogewogCWludCByZXQ7CisJdTggY3BsOwogCiAJaWYgKGN0eHQtPm9wcy0+c2V0X2Ny KGN0eHQsIDMsIHRzcy0+Y3IzKSkKIAkJcmV0dXJuIGVtdWxhdGVfZ3AoY3R4dCwgMCk7CkBAIC0y MzA3LDcgKzIzOTEsOCBAQCBzdGF0aWMgaW50IGxvYWRfc3RhdGVfZnJvbV90c3MzMihzdHJ1Y3Qg eDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAogCS8qCiAJICogU0RNIHNheXMgdGhhdCBzZWdtZW50 IHNlbGVjdG9ycyBhcmUgbG9hZGVkIGJlZm9yZSBzZWdtZW50Ci0JICogZGVzY3JpcHRvcnMKKwkg KiBkZXNjcmlwdG9ycy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgQ1BMIGNoZWNrcyB3aWxs CisJICogdXNlIENTLlJQTC4KIAkgKi8KIAlzZXRfc2VnbWVudF9zZWxlY3RvcihjdHh0LCB0c3Mt PmxkdF9zZWxlY3RvciwgVkNQVV9TUkVHX0xEVFIpOwogCXNldF9zZWdtZW50X3NlbGVjdG9yKGN0 eHQsIHRzcy0+ZXMsIFZDUFVfU1JFR19FUyk7CkBAIC0yMzE3LDI5ICsyNDAyLDM4IEBAIHN0YXRp YyBpbnQgbG9hZF9zdGF0ZV9mcm9tX3RzczMyKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0 LAogCXNldF9zZWdtZW50X3NlbGVjdG9yKGN0eHQsIHRzcy0+ZnMsIFZDUFVfU1JFR19GUyk7CiAJ c2V0X3NlZ21lbnRfc2VsZWN0b3IoY3R4dCwgdHNzLT5ncywgVkNQVV9TUkVHX0dTKTsKIAorCWNw bCA9IHRzcy0+Y3MgJiAzOworCiAJLyoKIAkgKiBOb3cgbG9hZCBzZWdtZW50IGRlc2NyaXB0b3Jz LiBJZiBmYXVsdCBoYXBwZW5lcyBhdCB0aGlzIHN0YWdlCiAJICogaXQgaXMgaGFuZGxlZCBpbiBh IGNvbnRleHQgb2YgbmV3IHRhc2sKIAkgKi8KLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRv cihjdHh0LCB0c3MtPmxkdF9zZWxlY3RvciwgVkNQVV9TUkVHX0xEVFIpOworCXJldCA9IF9fbG9h ZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5sZHRfc2VsZWN0b3IsIFZDUFVfU1JFR19M RFRSLAorCQkJCQljcGwsIE5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJ cmV0dXJuIHJldDsKLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPmVz LCBWQ1BVX1NSRUdfRVMpOworCXJldCA9IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwg dHNzLT5lcywgVkNQVV9TUkVHX0VTLCBjcGwsCisJCQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2 RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3Jp cHRvcihjdHh0LCB0c3MtPmNzLCBWQ1BVX1NSRUdfQ1MpOworCXJldCA9IF9fbG9hZF9zZWdtZW50 X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5jcywgVkNQVV9TUkVHX0NTLCBjcGwsCisJCQkJCU5VTEwp OwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBs b2FkX3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPnNzLCBWQ1BVX1NSRUdfU1MpOworCXJl dCA9IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5zcywgVkNQVV9TUkVHX1NT LCBjcGwsCisJCQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0 dXJuIHJldDsKLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPmRzLCBW Q1BVX1NSRUdfRFMpOworCXJldCA9IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNz LT5kcywgVkNQVV9TUkVHX0RTLCBjcGwsCisJCQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1V TF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBsb2FkX3NlZ21lbnRfZGVzY3JpcHRv cihjdHh0LCB0c3MtPmZzLCBWQ1BVX1NSRUdfRlMpOworCXJldCA9IF9fbG9hZF9zZWdtZW50X2Rl c2NyaXB0b3IoY3R4dCwgdHNzLT5mcywgVkNQVV9TUkVHX0ZTLCBjcGwsCisJCQkJCU5VTEwpOwog CWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJldDsKLQlyZXQgPSBsb2Fk X3NlZ21lbnRfZGVzY3JpcHRvcihjdHh0LCB0c3MtPmdzLCBWQ1BVX1NSRUdfR1MpOworCXJldCA9 IF9fbG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgdHNzLT5ncywgVkNQVV9TUkVHX0dTLCBj cGwsCisJCQkJCU5VTEwpOwogCWlmIChyZXQgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJu IHJldDsKIApAQCAtMjUzNiwzOSArMjYzMCw2NyBAQCBzdGF0aWMgaW50IGVtX2RhcyhzdHJ1Y3Qg eDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAlyZXR1cm4gWDg2RU1VTF9DT05USU5VRTsKIH0KIAor c3RhdGljIGludCBlbV9jYWxsKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworCWlu dCByYzsKKwlsb25nIHJlbCA9IGN0eHQtPnNyYy52YWw7CisKKwljdHh0LT5zcmMudmFsID0gKHVu c2lnbmVkIGxvbmcpY3R4dC0+X2VpcDsKKwlyYyA9IGptcF9yZWwoY3R4dCwgcmVsKTsKKwlpZiAo cmMgIT0gWDg2RU1VTF9DT05USU5VRSkKKwkJcmV0dXJuIHJjOworCXJldHVybiBlbV9wdXNoKGN0 eHQpOworfQorCiBzdGF0aWMgaW50IGVtX2NhbGxfZmFyKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 ICpjdHh0KQogewogCXUxNiBzZWwsIG9sZF9jczsKIAl1bG9uZyBvbGRfZWlwOwogCWludCByYzsK KwlzdHJ1Y3QgZGVzY19zdHJ1Y3Qgb2xkX2Rlc2MsIG5ld19kZXNjOworCWNvbnN0IHN0cnVjdCB4 ODZfZW11bGF0ZV9vcHMgKm9wcyA9IGN0eHQtPm9wczsKKwlpbnQgY3BsID0gY3R4dC0+b3BzLT5j cGwoY3R4dCk7CiAKLQlvbGRfY3MgPSBnZXRfc2VnbWVudF9zZWxlY3RvcihjdHh0LCBWQ1BVX1NS RUdfQ1MpOwogCW9sZF9laXAgPSBjdHh0LT5fZWlwOworCW9wcy0+Z2V0X3NlZ21lbnQoY3R4dCwg Jm9sZF9jcywgJm9sZF9kZXNjLCBOVUxMLCBWQ1BVX1NSRUdfQ1MpOwogCiAJbWVtY3B5KCZzZWws IGN0eHQtPnNyYy52YWxwdHIgKyBjdHh0LT5vcF9ieXRlcywgMik7Ci0JaWYgKGxvYWRfc2VnbWVu dF9kZXNjcmlwdG9yKGN0eHQsIHNlbCwgVkNQVV9TUkVHX0NTKSkKKwlyYyA9IF9fbG9hZF9zZWdt ZW50X2Rlc2NyaXB0b3IoY3R4dCwgc2VsLCBWQ1BVX1NSRUdfQ1MsIGNwbCwKKwkJCQkgICAgICAg Jm5ld19kZXNjKTsKKwlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIFg4NkVN VUxfQ09OVElOVUU7CiAKLQljdHh0LT5fZWlwID0gMDsKLQltZW1jcHkoJmN0eHQtPl9laXAsIGN0 eHQtPnNyYy52YWxwdHIsIGN0eHQtPm9wX2J5dGVzKTsKKwlyYyA9IGFzc2lnbl9laXBfZmFyKGN0 eHQsIGN0eHQtPnNyYy52YWwsIG5ld19kZXNjLmwpOworCWlmIChyYyAhPSBYODZFTVVMX0NPTlRJ TlVFKQorCQlnb3RvIGZhaWw7CiAKIAljdHh0LT5zcmMudmFsID0gb2xkX2NzOwogCXJjID0gZW1f cHVzaChjdHh0KTsKIAlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKLQkJcmV0dXJuIHJjOwor CQlnb3RvIGZhaWw7CiAKIAljdHh0LT5zcmMudmFsID0gb2xkX2VpcDsKLQlyZXR1cm4gZW1fcHVz aChjdHh0KTsKKwlyYyA9IGVtX3B1c2goY3R4dCk7CisJLyogSWYgd2UgZmFpbGVkLCB3ZSB0YWlu dGVkIHRoZSBtZW1vcnksIGJ1dCB0aGUgdmVyeSBsZWFzdCB3ZSBzaG91bGQKKwkgICByZXN0b3Jl IGNzICovCisJaWYgKHJjICE9IFg4NkVNVUxfQ09OVElOVUUpCisJCWdvdG8gZmFpbDsKKwlyZXR1 cm4gcmM7CitmYWlsOgorCW9wcy0+c2V0X3NlZ21lbnQoY3R4dCwgb2xkX2NzLCAmb2xkX2Rlc2Ms IDAsIFZDUFVfU1JFR19DUyk7CisJcmV0dXJuIHJjOworCiB9CiAKIHN0YXRpYyBpbnQgZW1fcmV0 X25lYXJfaW1tKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewogCWludCByYzsKKwl1 bnNpZ25lZCBsb25nIGVpcDsKIAotCWN0eHQtPmRzdC50eXBlID0gT1BfUkVHOwotCWN0eHQtPmRz dC5hZGRyLnJlZyA9ICZjdHh0LT5fZWlwOwotCWN0eHQtPmRzdC5ieXRlcyA9IGN0eHQtPm9wX2J5 dGVzOwotCXJjID0gZW11bGF0ZV9wb3AoY3R4dCwgJmN0eHQtPmRzdC52YWwsIGN0eHQtPm9wX2J5 dGVzKTsKKwlyYyA9IGVtdWxhdGVfcG9wKGN0eHQsICZlaXAsIGN0eHQtPm9wX2J5dGVzKTsKKwlp ZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKKwkJcmV0dXJuIHJjOworCXJjID0gYXNzaWduX2Vp cF9uZWFyKGN0eHQsIGVpcCk7CiAJaWYgKHJjICE9IFg4NkVNVUxfQ09OVElOVUUpCiAJCXJldHVy biByYzsKIAlyZWdpc3Rlcl9hZGRyZXNzX2luY3JlbWVudChjdHh0LCAmY3R4dC0+cmVnc1tWQ1BV X1JFR1NfUlNQXSwgY3R4dC0+c3JjLnZhbCk7CkBAIC0yODE0LDIwICsyOTM2LDI0IEBAIHN0YXRp YyBpbnQgZW1fbG1zdyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAogc3RhdGljIGlu dCBlbV9sb29wKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogeworCWludCByYyA9IFg4 NkVNVUxfQ09OVElOVUU7CisKIAlyZWdpc3Rlcl9hZGRyZXNzX2luY3JlbWVudChjdHh0LCAmY3R4 dC0+cmVnc1tWQ1BVX1JFR1NfUkNYXSwgLTEpOwogCWlmICgoYWRkcmVzc19tYXNrKGN0eHQsIGN0 eHQtPnJlZ3NbVkNQVV9SRUdTX1JDWF0pICE9IDApICYmCiAJICAgIChjdHh0LT5iID09IDB4ZTIg fHwgdGVzdF9jYyhjdHh0LT5iIF4gMHg1LCBjdHh0LT5lZmxhZ3MpKSkKLQkJam1wX3JlbChjdHh0 LCBjdHh0LT5zcmMudmFsKTsKKwkJcmMgPSBqbXBfcmVsKGN0eHQsIGN0eHQtPnNyYy52YWwpOwog Ci0JcmV0dXJuIFg4NkVNVUxfQ09OVElOVUU7CisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50 IGVtX2pjeHooc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CisJaW50IHJjID0gWDg2 RU1VTF9DT05USU5VRTsKKwogCWlmIChhZGRyZXNzX21hc2soY3R4dCwgY3R4dC0+cmVnc1tWQ1BV X1JFR1NfUkNYXSkgPT0gMCkKLQkJam1wX3JlbChjdHh0LCBjdHh0LT5zcmMudmFsKTsKKwkJcmMg PSBqbXBfcmVsKGN0eHQsIGN0eHQtPnNyYy52YWwpOwogCi0JcmV0dXJuIFg4NkVNVUxfQ09OVElO VUU7CisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGVtX2NsaShzdHJ1Y3QgeDg2X2VtdWxh dGVfY3R4dCAqY3R4dCkKQEAgLTMyNzEsNyArMzM5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgb3Bjb2Rl IG9wY29kZV90YWJsZVsyNTZdID0gewogCUQyYnZJUChTcmNJbW1VQnl0ZSB8IERzdEFjYywgaW4s ICBjaGVja19wZXJtX2luKSwKIAlEMmJ2SVAoU3JjQWNjIHwgRHN0SW1tVUJ5dGUsIG91dCwgY2hl Y2tfcGVybV9vdXQpLAogCS8qIDB4RTggLSAweEVGICovCi0JRChTcmNJbW0gfCBTdGFjayksIEQo U3JjSW1tIHwgSW1wbGljaXRPcHMpLAorCUkoU3JjSW1tIHwgU3RhY2ssIGVtX2NhbGwpLCBEKFNy Y0ltbSB8IEltcGxpY2l0T3BzKSwKIAlJKFNyY0ltbUZBZGRyIHwgTm82NCwgZW1fam1wX2Zhciks IEQoU3JjSW1tQnl0ZSB8IEltcGxpY2l0T3BzKSwKIAlEMmJ2SVAoU3JjRFggfCBEc3RBY2MsIGlu LCAgY2hlY2tfcGVybV9pbiksCiAJRDJidklQKFNyY0FjYyB8IERzdERYLCBvdXQsIGNoZWNrX3Bl cm1fb3V0KSwKQEAgLTM5MjAsNyArNDA0Niw3IEBAIHNwZWNpYWxfaW5zbjoKIAkJYnJlYWs7CiAJ Y2FzZSAweDcwIC4uLiAweDdmOiAvKiBqY2MgKHNob3J0KSAqLwogCQlpZiAodGVzdF9jYyhjdHh0 LT5iLCBjdHh0LT5lZmxhZ3MpKQotCQkJam1wX3JlbChjdHh0LCBjdHh0LT5zcmMudmFsKTsKKwkJ CXJjID0gam1wX3JlbChjdHh0LCBjdHh0LT5zcmMudmFsKTsKIAkJYnJlYWs7CiAJY2FzZSAweDhk OiAvKiBsZWEgcjE2L3IzMiwgbSAqLwogCQljdHh0LT5kc3QudmFsID0gY3R4dC0+c3JjLmFkZHIu bWVtLmVhOwpAQCAtMzk2NiwxNiArNDA5Miw5IEBAIHNwZWNpYWxfaW5zbjoKIAljYXNlIDB4ZTY6 IC8qIG91dGIgKi8KIAljYXNlIDB4ZTc6IC8qIG91dCAqLwogCQlnb3RvIGRvX2lvX291dDsKLQlj YXNlIDB4ZTg6IC8qIGNhbGwgKG5lYXIpICovIHsKLQkJbG9uZyBpbnQgcmVsID0gY3R4dC0+c3Jj LnZhbDsKLQkJY3R4dC0+c3JjLnZhbCA9ICh1bnNpZ25lZCBsb25nKSBjdHh0LT5fZWlwOwotCQlq bXBfcmVsKGN0eHQsIHJlbCk7Ci0JCXJjID0gZW1fcHVzaChjdHh0KTsKLQkJYnJlYWs7Ci0JfQog CWNhc2UgMHhlOTogLyogam1wIHJlbCAqLwogCWNhc2UgMHhlYjogLyogam1wIHJlbCBzaG9ydCAq LwotCQlqbXBfcmVsKGN0eHQsIGN0eHQtPnNyYy52YWwpOworCQlyYyA9IGptcF9yZWwoY3R4dCwg Y3R4dC0+c3JjLnZhbCk7CiAJCWN0eHQtPmRzdC50eXBlID0gT1BfTk9ORTsgLyogRGlzYWJsZSB3 cml0ZWJhY2suICovCiAJCWJyZWFrOwogCWNhc2UgMHhlYzogLyogaW4gYWwsZHggKi8KQEAgLTQx NDEsNyArNDI2MCw3IEBAIHR3b2J5dGVfaW5zbjoKIAkJYnJlYWs7CiAJY2FzZSAweDgwIC4uLiAw eDhmOiAvKiBqbnogcmVsLCBldGMqLwogCQlpZiAodGVzdF9jYyhjdHh0LT5iLCBjdHh0LT5lZmxh Z3MpKQotCQkJam1wX3JlbChjdHh0LCBjdHh0LT5zcmMudmFsKTsKKwkJCXJjID0gam1wX3JlbChj dHh0LCBjdHh0LT5zcmMudmFsKTsKIAkJYnJlYWs7CiAJY2FzZSAweDkwIC4uLiAweDlmOiAgICAg Lyogc2V0Y2Mgci9tOCAqLwogCQljdHh0LT5kc3QudmFsID0gdGVzdF9jYyhjdHh0LT5iLCBjdHh0 LT5lZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2k4MjU0LmMgYi9hcmNoL3g4Ni9r dm0vaTgyNTQuYwppbmRleCAxMzk0MTVlLi5jY2VkNTdmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9r dm0vaTgyNTQuYworKysgYi9hcmNoL3g4Ni9rdm0vaTgyNTQuYwpAQCAtMjY0LDggKzI2NCwxMCBA QCB2b2lkIF9fa3ZtX21pZ3JhdGVfcGl0X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJ cmV0dXJuOwogCiAJdGltZXIgPSAmcGl0LT5waXRfc3RhdGUucGl0X3RpbWVyLnRpbWVyOworCW11 dGV4X2xvY2soJnBpdC0+cGl0X3N0YXRlLmxvY2spOwogCWlmIChocnRpbWVyX2NhbmNlbCh0aW1l cikpCiAJCWhydGltZXJfc3RhcnRfZXhwaXJlcyh0aW1lciwgSFJUSU1FUl9NT0RFX0FCUyk7CisJ bXV0ZXhfdW5sb2NrKCZwaXQtPnBpdF9zdGF0ZS5sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQgZGVz dHJveV9waXRfdGltZXIoc3RydWN0IGt2bV9waXQgKnBpdCkKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2t2bS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUuYwppbmRleCBkYjJmZmVmLi45M2Y4NGQ1IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11LmMKKysrIGIvYXJjaC94ODYva3ZtL21tdS5jCkBA IC0yODY5LDYgKzI4NjksNyBAQCB2b2lkIGt2bV9tbXVfc3luY19yb290cyhzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpCiAJbW11X3N5bmNfcm9vdHModmNwdSk7CiAJc3Bpbl91bmxvY2soJnZjcHUtPmt2 bS0+bW11X2xvY2spOwogfQorRVhQT1JUX1NZTUJPTF9HUEwoa3ZtX21tdV9zeW5jX3Jvb3RzKTsK IAogc3RhdGljIGdwYV90IG5vbnBhZ2luZ19ndmFfdG9fZ3BhKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgZ3ZhX3QgdmFkZHIsCiAJCQkJICB1MzIgYWNjZXNzLCBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAq ZXhjZXB0aW9uKQpAQCAtMzEzMSw2ICszMTMyLDcgQEAgdm9pZCBrdm1fbW11X2ZsdXNoX3RsYihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJKyt2Y3B1LT5zdGF0LnRsYl9mbHVzaDsKIAlrdm1fbWFr ZV9yZXF1ZXN0KEtWTV9SRVFfVExCX0ZMVVNILCB2Y3B1KTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BM KGt2bV9tbXVfZmx1c2hfdGxiKTsKIAogc3RhdGljIHZvaWQgcGFnaW5nX25ld19jcjMoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KQogewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS5jIGIvYXJj aC94ODYva3ZtL3N2bS5jCmluZGV4IDIxMDJhMTcuLjgyZjk3YTUgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2t2bS9zdm0uYworKysgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMKQEAgLTMxMDksNyArMzEwOSw3 IEBAIHN0YXRpYyBpbnQgd3Jtc3JfaW50ZXJjZXB0aW9uKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQog CiAKIAlzdm0tPm5leHRfcmlwID0ga3ZtX3JpcF9yZWFkKCZzdm0tPnZjcHUpICsgMjsKLQlpZiAo c3ZtX3NldF9tc3IoJnN2bS0+dmNwdSwgZWN4LCBkYXRhKSkgeworCWlmIChrdm1fc2V0X21zcigm c3ZtLT52Y3B1LCBlY3gsIGRhdGEpKSB7CiAJCXRyYWNlX2t2bV9tc3Jfd3JpdGVfZXgoZWN4LCBk YXRhKTsKIAkJa3ZtX2luamVjdF9ncCgmc3ZtLT52Y3B1LCAwKTsKIAl9IGVsc2UgewpkaWZmIC0t Z2l0IGEvYXJjaC94ODYva3ZtL3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC5jCmluZGV4IGE0ZjZi ZGEuLmZhNzFkNTIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYworKysgYi9hcmNoL3g4 Ni9rdm0vdm14LmMKQEAgLTM5MCw2ICszOTAsNyBAQCBzdHJ1Y3QgdmNwdV92bXggewogCQl1MTYg ICAgICAgICAgIGZzX3NlbCwgZ3Nfc2VsLCBsZHRfc2VsOwogCQlpbnQgICAgICAgICAgIGdzX2xk dF9yZWxvYWRfbmVlZGVkOwogCQlpbnQgICAgICAgICAgIGZzX3JlbG9hZF9uZWVkZWQ7CisJCXVu c2lnbmVkIGxvbmcgdm1jc19ob3N0X2NyNDsJLyogTWF5IG5vdCBtYXRjaCByZWFsIGNyNCAqLwog CX0gaG9zdF9zdGF0ZTsKIAlzdHJ1Y3QgewogCQlpbnQgdm04Nl9hY3RpdmU7CkBAIC02MDIsNiAr NjAzLDcgQEAgc3RhdGljIHZvaWQgbmVzdGVkX3JlbGVhc2VfcGFnZV9jbGVhbihzdHJ1Y3QgcGFn ZSAqcGFnZSkKIAlrdm1fcmVsZWFzZV9wYWdlX2NsZWFuKHBhZ2UpOwogfQogCitzdGF0aWMgdW5z aWduZWQgbG9uZyBuZXN0ZWRfZXB0X2dldF9jcjMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIHN0 YXRpYyB1NjQgY29uc3RydWN0X2VwdHAodW5zaWduZWQgbG9uZyByb290X2hwYSk7CiBzdGF0aWMg dm9pZCBrdm1fY3B1X3ZteG9uKHU2NCBhZGRyKTsKIHN0YXRpYyB2b2lkIGt2bV9jcHVfdm14b2Zm KHZvaWQpOwpAQCAtMTg5OSw2ICsxOTAxLDcgQEAgc3RhdGljIHUzMiBuZXN0ZWRfdm14X3NlY29u ZGFyeV9jdGxzX2xvdywgbmVzdGVkX3ZteF9zZWNvbmRhcnlfY3Rsc19oaWdoOwogc3RhdGljIHUz MiBuZXN0ZWRfdm14X3BpbmJhc2VkX2N0bHNfbG93LCBuZXN0ZWRfdm14X3BpbmJhc2VkX2N0bHNf aGlnaDsKIHN0YXRpYyB1MzIgbmVzdGVkX3ZteF9leGl0X2N0bHNfbG93LCBuZXN0ZWRfdm14X2V4 aXRfY3Rsc19oaWdoOwogc3RhdGljIHUzMiBuZXN0ZWRfdm14X2VudHJ5X2N0bHNfbG93LCBuZXN0 ZWRfdm14X2VudHJ5X2N0bHNfaGlnaDsKK3N0YXRpYyB1MzIgbmVzdGVkX3ZteF9lcHRfY2FwczsK IHN0YXRpYyBfX2luaXQgdm9pZCBuZXN0ZWRfdm14X3NldHVwX2N0bHNfbXNycyh2b2lkKQogewog CS8qCkBAIC0zNjI5LDE2ICszNjMyLDIxIEBAIHN0YXRpYyB2b2lkIHZteF9kaXNhYmxlX2ludGVy Y2VwdF9mb3JfbXNyKHUzMiBtc3IsIGJvb2wgbG9uZ21vZGVfb25seSkKICAqIE5vdGUgdGhhdCBo b3N0LXN0YXRlIHRoYXQgZG9lcyBjaGFuZ2UgaXMgc2V0IGVsc2V3aGVyZS4gRS5nLiwgaG9zdC1z dGF0ZQogICogdGhhdCBpcyBzZXQgZGlmZmVyZW50bHkgZm9yIGVhY2ggQ1BVIGlzIHNldCBpbiB2 bXhfdmNwdV9sb2FkKCksIG5vdCBoZXJlLgogICovCi1zdGF0aWMgdm9pZCB2bXhfc2V0X2NvbnN0 YW50X2hvc3Rfc3RhdGUodm9pZCkKK3N0YXRpYyB2b2lkIHZteF9zZXRfY29uc3RhbnRfaG9zdF9z dGF0ZShzdHJ1Y3QgdmNwdV92bXggKnZteCkKIHsKIAl1MzIgbG93MzIsIGhpZ2gzMjsKIAl1bnNp Z25lZCBsb25nIHRtcGw7CiAJc3RydWN0IGRlc2NfcHRyIGR0OworCXVuc2lnbmVkIGxvbmcgY3I0 OwogCiAJdm1jc193cml0ZWwoSE9TVF9DUjAsIHJlYWRfY3IwKCkgfCBYODZfQ1IwX1RTKTsgIC8q IDIyLjIuMyAqLwotCXZtY3Nfd3JpdGVsKEhPU1RfQ1I0LCByZWFkX2NyNCgpKTsgIC8qIDIyLjIu MywgMjIuMi41ICovCiAJdm1jc193cml0ZWwoSE9TVF9DUjMsIHJlYWRfY3IzKCkpOyAgLyogMjIu Mi4zICBGSVhNRTogc2hhZG93IHRhYmxlcyAqLwogCisJLyogU2F2ZSB0aGUgbW9zdCBsaWtlbHkg dmFsdWUgZm9yIHRoaXMgdGFzaydzIENSNCBpbiB0aGUgVk1DUy4gKi8KKwljcjQgPSByZWFkX2Ny NCgpOworCXZtY3Nfd3JpdGVsKEhPU1RfQ1I0LCBjcjQpOwkJCS8qIDIyLjIuMywgMjIuMi41ICov CisJdm14LT5ob3N0X3N0YXRlLnZtY3NfaG9zdF9jcjQgPSBjcjQ7CisKIAl2bWNzX3dyaXRlMTYo SE9TVF9DU19TRUxFQ1RPUiwgX19LRVJORUxfQ1MpOyAgLyogMjIuMi40ICovCiAJdm1jc193cml0 ZTE2KEhPU1RfRFNfU0VMRUNUT1IsIF9fS0VSTkVMX0RTKTsgIC8qIDIyLjIuNCAqLwogCXZtY3Nf d3JpdGUxNihIT1NUX0VTX1NFTEVDVE9SLCBfX0tFUk5FTF9EUyk7ICAvKiAyMi4yLjQgKi8KQEAg LTM3NjAsNyArMzc2OCw3IEBAIHN0YXRpYyBpbnQgdm14X3ZjcHVfc2V0dXAoc3RydWN0IHZjcHVf dm14ICp2bXgpCiAKIAl2bWNzX3dyaXRlMTYoSE9TVF9GU19TRUxFQ1RPUiwgMCk7ICAgICAgICAg ICAgLyogMjIuMi40ICovCiAJdm1jc193cml0ZTE2KEhPU1RfR1NfU0VMRUNUT1IsIDApOyAgICAg ICAgICAgIC8qIDIyLjIuNCAqLwotCXZteF9zZXRfY29uc3RhbnRfaG9zdF9zdGF0ZSgpOworCXZt eF9zZXRfY29uc3RhbnRfaG9zdF9zdGF0ZSh2bXgpOwogI2lmZGVmIENPTkZJR19YODZfNjQKIAly ZG1zcmwoTVNSX0ZTX0JBU0UsIGEpOwogCXZtY3Nfd3JpdGVsKEhPU1RfRlNfQkFTRSwgYSk7IC8q IDIyLjIuNCAqLwpAQCAtNDU0NCw3ICs0NTUyLDcgQEAgc3RhdGljIGludCBoYW5kbGVfd3Jtc3Io c3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXU2NCBkYXRhID0gKHZjcHUtPmFyY2gucmVnc1tWQ1BV X1JFR1NfUkFYXSAmIC0xdSkKIAkJfCAoKHU2NCkodmNwdS0+YXJjaC5yZWdzW1ZDUFVfUkVHU19S RFhdICYgLTF1KSA8PCAzMik7CiAKLQlpZiAodm14X3NldF9tc3IodmNwdSwgZWN4LCBkYXRhKSAh PSAwKSB7CisJaWYgKGt2bV9zZXRfbXNyKHZjcHUsIGVjeCwgZGF0YSkgIT0gMCkgewogCQl0cmFj ZV9rdm1fbXNyX3dyaXRlX2V4KGVjeCwgZGF0YSk7CiAJCWt2bV9pbmplY3RfZ3AodmNwdSwgMCk7 CiAJCXJldHVybiAxOwpAQCAtNTU1MCw2ICs1NTU4LDgwIEBAIHN0YXRpYyBpbnQgaGFuZGxlX3Zt cHRyc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXJldHVybiAxOwogfQogCisvKiBFbXVsYXRl IHRoZSBJTlZFUFQgaW5zdHJ1Y3Rpb24gKi8KK3N0YXRpYyBpbnQgaGFuZGxlX2ludmVwdChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJdTMyIHZteF9pbnN0cnVjdGlvbl9pbmZvLCB0eXBlczsK Kwl1bnNpZ25lZCBsb25nIHR5cGU7CisJZ3ZhX3QgZ3ZhOworCXN0cnVjdCB4ODZfZXhjZXB0aW9u IGU7CisJc3RydWN0IHsKKwkJdTY0IGVwdHAsIGdwYTsKKwl9IG9wZXJhbmQ7CisJdTY0IGVwdHBf bWFzayA9ICgoMXVsbCA8PCA1MSkgLSAxKSAmIFBBR0VfTUFTSzsKKworCWlmICghKG5lc3RlZF92 bXhfc2Vjb25kYXJ5X2N0bHNfaGlnaCAmIFNFQ09OREFSWV9FWEVDX0VOQUJMRV9FUFQpIHx8CisJ ICAgICEobmVzdGVkX3ZteF9lcHRfY2FwcyAmIFZNWF9FUFRfSU5WRVBUX0JJVCkpIHsKKwkJa3Zt X3F1ZXVlX2V4Y2VwdGlvbih2Y3B1LCBVRF9WRUNUT1IpOworCQlyZXR1cm4gMTsKKwl9CisKKwlp ZiAoIW5lc3RlZF92bXhfY2hlY2tfcGVybWlzc2lvbih2Y3B1KSkKKwkJcmV0dXJuIDE7CisKKwlp ZiAoIWt2bV9yZWFkX2NyMF9iaXRzKHZjcHUsIFg4Nl9DUjBfUEUpKSB7CisJCWt2bV9xdWV1ZV9l eGNlcHRpb24odmNwdSwgVURfVkVDVE9SKTsKKwkJcmV0dXJuIDE7CisJfQorCisJdm14X2luc3Ry dWN0aW9uX2luZm8gPSB2bWNzX3JlYWQzMihWTVhfSU5TVFJVQ1RJT05fSU5GTyk7CisJdHlwZSA9 IGt2bV9yZWdpc3Rlcl9yZWFkKHZjcHUsICh2bXhfaW5zdHJ1Y3Rpb25faW5mbyA+PiAyOCkgJiAw eGYpOworCisJdHlwZXMgPSAobmVzdGVkX3ZteF9lcHRfY2FwcyA+PiBWTVhfRVBUX0VYVEVOVF9T SElGVCkgJiA2OworCisJaWYgKCEodHlwZXMgJiAoMVVMIDw8IHR5cGUpKSkgeworCQluZXN0ZWRf dm14X2ZhaWxWYWxpZCh2Y3B1LAorCQkJCVZNWEVSUl9JTlZBTElEX09QRVJBTkRfVE9fSU5WRVBU X0lOVlZQSUQpOworCQlyZXR1cm4gMTsKKwl9CisKKwkvKiBBY2NvcmRpbmcgdG8gdGhlIEludGVs IFZNWCBpbnN0cnVjdGlvbiByZWZlcmVuY2UsIHRoZSBtZW1vcnkKKwkgKiBvcGVyYW5kIGlzIHJl YWQgZXZlbiBpZiBpdCBpc24ndCBuZWVkZWQgKGUuZy4sIGZvciB0eXBlPT1nbG9iYWwpCisJICov CisJaWYgKGdldF92bXhfbWVtX2FkZHJlc3ModmNwdSwgdm1jc19yZWFkbChFWElUX1FVQUxJRklD QVRJT04pLAorCQkJdm14X2luc3RydWN0aW9uX2luZm8sICZndmEpKQorCQlyZXR1cm4gMTsKKwlp ZiAoa3ZtX3JlYWRfZ3Vlc3RfdmlydCgmdmNwdS0+YXJjaC5lbXVsYXRlX2N0eHQsIGd2YSwgJm9w ZXJhbmQsCisJCQkJc2l6ZW9mKG9wZXJhbmQpLCAmZSkpIHsKKwkJa3ZtX2luamVjdF9wYWdlX2Zh dWx0KHZjcHUsICZlKTsKKwkJcmV0dXJuIDE7CisJfQorCisJc3dpdGNoICh0eXBlKSB7CisJY2Fz ZSBWTVhfRVBUX0VYVEVOVF9DT05URVhUOgorCQlpZiAoKG9wZXJhbmQuZXB0cCAmIGVwdHBfbWFz aykgIT0KKwkJCQkobmVzdGVkX2VwdF9nZXRfY3IzKHZjcHUpICYgZXB0cF9tYXNrKSkKKwkJCWJy ZWFrOworCWNhc2UgVk1YX0VQVF9FWFRFTlRfR0xPQkFMOgorCQlrdm1fbW11X3N5bmNfcm9vdHMo dmNwdSk7CisJCWt2bV9tbXVfZmx1c2hfdGxiKHZjcHUpOworCQluZXN0ZWRfdm14X3N1Y2NlZWQo dmNwdSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCUJVR19PTigxKTsKKwkJYnJlYWs7CisJfQor CisJc2tpcF9lbXVsYXRlZF9pbnN0cnVjdGlvbih2Y3B1KTsKKwlyZXR1cm4gMTsKK30KKworc3Rh dGljIGludCBoYW5kbGVfaW52dnBpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJa3ZtX3F1 ZXVlX2V4Y2VwdGlvbih2Y3B1LCBVRF9WRUNUT1IpOworCXJldHVybiAxOworfQorCiAvKgogICog VGhlIGV4aXQgaGFuZGxlcnMgcmV0dXJuIDEgaWYgdGhlIGV4aXQgd2FzIGhhbmRsZWQgZnVsbHkg YW5kIGd1ZXN0IGV4ZWN1dGlvbgogICogbWF5IHJlc3VtZS4gIE90aGVyd2lzZSB0aGV5IHNldCB0 aGUga3ZtX3J1biBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgd2hhdCBuZWVkcwpAQCAtNTU5MSw2ICs1 NjczLDggQEAgc3RhdGljIGludCAoKmt2bV92bXhfZXhpdF9oYW5kbGVyc1tdKShzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpID0gewogCVtFWElUX1JFQVNPTl9QQVVTRV9JTlNUUlVDVElPTl0gICAgICAg PSBoYW5kbGVfcGF1c2UsCiAJW0VYSVRfUkVBU09OX01XQUlUX0lOU1RSVUNUSU9OXQkgICAgICA9 IGhhbmRsZV9pbnZhbGlkX29wLAogCVtFWElUX1JFQVNPTl9NT05JVE9SX0lOU1RSVUNUSU9OXSAg ICAgPSBoYW5kbGVfaW52YWxpZF9vcCwKKwlbRVhJVF9SRUFTT05fSU5WRVBUXSAgICAgICAgICAg ICAgICAgID0gaGFuZGxlX2ludmVwdCwKKwlbRVhJVF9SRUFTT05fSU5WVlBJRF0gICAgICAgICAg ICAgICAgID0gaGFuZGxlX2ludnZwaWQsCiB9OwogCiBzdGF0aWMgY29uc3QgaW50IGt2bV92bXhf bWF4X2V4aXRfaGFuZGxlcnMgPQpAQCAtNTc3NSw2ICs1ODU5LDcgQEAgc3RhdGljIGJvb2wgbmVz dGVkX3ZteF9leGl0X2hhbmRsZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWNhc2UgRVhJVF9S RUFTT05fVk1QVFJTVDogY2FzZSBFWElUX1JFQVNPTl9WTVJFQUQ6CiAJY2FzZSBFWElUX1JFQVNP Tl9WTVJFU1VNRTogY2FzZSBFWElUX1JFQVNPTl9WTVdSSVRFOgogCWNhc2UgRVhJVF9SRUFTT05f Vk1PRkY6IGNhc2UgRVhJVF9SRUFTT05fVk1PTjoKKwljYXNlIEVYSVRfUkVBU09OX0lOVkVQVDog Y2FzZSBFWElUX1JFQVNPTl9JTlZWUElEOgogCQkvKgogCQkgKiBWTVggaW5zdHJ1Y3Rpb25zIHRy YXAgdW5jb25kaXRpb25hbGx5LiBUaGlzIGFsbG93cyBMMSB0bwogCQkgKiBlbXVsYXRlIHRoZW0g Zm9yIGl0cyBMMiBndWVzdCwgaS5lLiwgYWxsb3dzIDMtbGV2ZWwgbmVzdGluZyEKQEAgLTYwOTMs NiArNjE3OCw3IEBAIHN0YXRpYyB2b2lkIGF0b21pY19zd2l0Y2hfcGVyZl9tc3JzKHN0cnVjdCB2 Y3B1X3ZteCAqdm14KQogc3RhdGljIHZvaWQgX19ub2Nsb25lIHZteF92Y3B1X3J1bihzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7 CisJdW5zaWduZWQgbG9uZyBjcjQ7CiAKIAlpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSAmJiAhdm14 LT5uZXN0ZWQubmVzdGVkX3J1bl9wZW5kaW5nKSB7CiAJCXN0cnVjdCB2bWNzMTIgKnZtY3MxMiA9 IGdldF92bWNzMTIodmNwdSk7CkBAIC02MTIzLDYgKzYyMDksMTIgQEAgc3RhdGljIHZvaWQgX19u b2Nsb25lIHZteF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKHRlc3RfYml0 KFZDUFVfUkVHU19SSVAsICh1bnNpZ25lZCBsb25nICopJnZjcHUtPmFyY2gucmVnc19kaXJ0eSkp CiAJCXZtY3Nfd3JpdGVsKEdVRVNUX1JJUCwgdmNwdS0+YXJjaC5yZWdzW1ZDUFVfUkVHU19SSVBd KTsKIAorCWNyNCA9IHJlYWRfY3I0KCk7CisJaWYgKHVubGlrZWx5KGNyNCAhPSB2bXgtPmhvc3Rf c3RhdGUudm1jc19ob3N0X2NyNCkpIHsKKwkJdm1jc193cml0ZWwoSE9TVF9DUjQsIGNyNCk7CisJ CXZteC0+aG9zdF9zdGF0ZS52bWNzX2hvc3RfY3I0ID0gY3I0OworCX0KKwogCS8qIFdoZW4gc2lu Z2xlLXN0ZXBwaW5nIG92ZXIgU1RJIGFuZCBNT1YgU1MsIHdlIG11c3QgY2xlYXIgdGhlCiAJICog Y29ycmVzcG9uZGluZyBpbnRlcnJ1cHRpYmlsaXR5IGJpdHMgaW4gdGhlIGd1ZXN0IHN0YXRlLiBP dGhlcndpc2UKIAkgKiB2bWVudHJ5IGZhaWxzIGFzIGl0IHRoZW4gZXhwZWN0cyBiaXQgMTQgKEJT KSBpbiBwZW5kaW5nIGRlYnVnCkBAIC02NDM2LDYgKzY1MjgsMTIgQEAgc3RhdGljIHZvaWQgdm14 X3NldF9zdXBwb3J0ZWRfY3B1aWQodTMyIGZ1bmMsIHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICpl bnRyeSkKIAkJZW50cnktPmVjeCB8PSBiaXQoWDg2X0ZFQVRVUkVfVk1YKTsKIH0KIAorc3RhdGlj IHVuc2lnbmVkIGxvbmcgbmVzdGVkX2VwdF9nZXRfY3IzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkK K3sKKwkvKiByZXR1cm4gdGhlIHBhZ2UgdGFibGUgdG8gYmUgc2hhZG93ZWQgLSBpbiBvdXIgY2Fz ZSwgRVBUMTIgKi8KKwlyZXR1cm4gZ2V0X3ZtY3MxMih2Y3B1KS0+ZXB0X3BvaW50ZXI7Cit9CisK IC8qCiAgKiBwcmVwYXJlX3ZtY3MwMiBpcyBjYWxsZWQgd2hlbiB0aGUgTDEgZ3Vlc3QgaHlwZXJ2 aXNvciBydW5zIGl0cyBuZXN0ZWQKICAqIEwyIGd1ZXN0LiBMMSBoYXMgYSB2bWNzIGZvciBMMiAo dm1jczEyKSwgYW5kIHRoaXMgZnVuY3Rpb24gIm1lcmdlcyIgaXQKQEAgLTY1ODEsNyArNjY3OSw3 IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfdm1jczAyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3Ry dWN0IHZtY3MxMiAqdm1jczEyKQogCSAqIE90aGVyIGZpZWxkcyBhcmUgZGlmZmVyZW50IHBlciBD UFUsIGFuZCB3aWxsIGJlIHNldCBsYXRlciB3aGVuCiAJICogdm14X3ZjcHVfbG9hZCgpIGlzIGNh bGxlZCwgYW5kIHdoZW4gdm14X3NhdmVfaG9zdF9zdGF0ZSgpIGlzIGNhbGxlZC4KIAkgKi8KLQl2 bXhfc2V0X2NvbnN0YW50X2hvc3Rfc3RhdGUoKTsKKwl2bXhfc2V0X2NvbnN0YW50X2hvc3Rfc3Rh dGUodm14KTsKIAogCS8qCiAJICogSE9TVF9SU1AgaXMgbm9ybWFsbHkgc2V0IGNvcnJlY3RseSBp biB2bXhfdmNwdV9ydW4oKSBqdXN0IGJlZm9yZQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4 Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IGI5ZmVmYWYuLjJkN2QwZGYgMTAwNjQ0Ci0t LSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTg5Myw3 ICs4OTMsNiBAQCB2b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKQogfQogRVhQT1JU X1NZTUJPTF9HUEwoa3ZtX2VuYWJsZV9lZmVyX2JpdHMpOwogCi0KIC8qCiAgKiBXcml0ZXMgbXNy IHZhbHVlIGludG8gaW50byB0aGUgYXBwcm9wcmlhdGUgInJlZ2lzdGVyIi4KICAqIFJldHVybnMg MCBvbiBzdWNjZXNzLCBub24tMCBvdGhlcndpc2UuCkBAIC05MDEsOCArOTAwLDM0IEBAIEVYUE9S VF9TWU1CT0xfR1BMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTsKICAqLwogaW50IGt2bV9zZXRfbXNy KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1zcl9pbmRleCwgdTY0IGRhdGEpCiB7CisJc3dp dGNoIChtc3JfaW5kZXgpIHsKKwljYXNlIE1TUl9GU19CQVNFOgorCWNhc2UgTVNSX0dTX0JBU0U6 CisJY2FzZSBNU1JfS0VSTkVMX0dTX0JBU0U6CisJY2FzZSBNU1JfQ1NUQVI6CisJY2FzZSBNU1Jf TFNUQVI6CisJCWlmIChpc19ub25jYW5vbmljYWxfYWRkcmVzcyhkYXRhKSkKKwkJCXJldHVybiAx OworCQlicmVhazsKKwljYXNlIE1TUl9JQTMyX1NZU0VOVEVSX0VJUDoKKwljYXNlIE1TUl9JQTMy X1NZU0VOVEVSX0VTUDoKKwkJLyoKKwkJICogSUEzMl9TWVNFTlRFUl9FU1AgYW5kIElBMzJfU1lT RU5URVJfRUlQIGNhdXNlICNHUCBpZgorCQkgKiBub24tY2Fub25pY2FsIGFkZHJlc3MgaXMgd3Jp dHRlbiBvbiBJbnRlbCBidXQgbm90IG9uCisJCSAqIEFNRCAod2hpY2ggaWdub3JlcyB0aGUgdG9w IDMyLWJpdHMsIGJlY2F1c2UgaXQgZG9lcworCQkgKiBub3QgaW1wbGVtZW50IDY0LWJpdCBTWVNF TlRFUikuCisJCSAqCisJCSAqIDY0LWJpdCBjb2RlIHNob3VsZCBoZW5jZSBiZSBhYmxlIHRvIHdy aXRlIGEgbm9uLWNhbm9uaWNhbAorCQkgKiB2YWx1ZSBvbiBBTUQuICBNYWtpbmcgdGhlIGFkZHJl c3MgY2Fub25pY2FsIGVuc3VyZXMgdGhhdAorCQkgKiB2bWVudHJ5IGRvZXMgbm90IGZhaWwgb24g SW50ZWwgYWZ0ZXIgd3JpdGluZyBhIG5vbi1jYW5vbmljYWwKKwkJICogdmFsdWUsIGFuZCB0aGF0 IHNvbWV0aGluZyBkZXRlcm1pbmlzdGljIGhhcHBlbnMgaWYgdGhlIGd1ZXN0CisJCSAqIGludm9r ZXMgNjQtYml0IFNZU0VOVEVSLgorCQkgKi8KKwkJZGF0YSA9IGdldF9jYW5vbmljYWwoZGF0YSk7 CisJfQogCXJldHVybiBrdm1feDg2X29wcy0+c2V0X21zcih2Y3B1LCBtc3JfaW5kZXgsIGRhdGEp OwogfQorRVhQT1JUX1NZTUJPTF9HUEwoa3ZtX3NldF9tc3IpOwogCiAvKgogICogQWRhcHQgc2V0 X21zcigpIHRvIG1zcl9pbygpJ3MgY2FsbGluZyBjb252ZW50aW9uCmRpZmYgLS1naXQgYS9ibG9j ay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuYwppbmRleCA4YmQ0ZWYyLi4zNTQxNTgxMCAxMDA2NDQK LS0tIGEvYmxvY2svZ2VuaGQuYworKysgYi9ibG9jay9nZW5oZC5jCkBAIC0yOCwxMCArMjgsMTAg QEAgc3RydWN0IGtvYmplY3QgKmJsb2NrX2RlcHI7CiAvKiBmb3IgZXh0ZW5kZWQgZHluYW1pYyBk ZXZ0IGFsbG9jYXRpb24sIGN1cnJlbnRseSBvbmx5IG9uZSBtYWpvciBpcyB1c2VkICovCiAjZGVm aW5lIE5SX0VYVF9ERVZUCQkoMSA8PCBNSU5PUkJJVFMpCiAKLS8qIEZvciBleHRlbmRlZCBkZXZ0 IGFsbG9jYXRpb24uICBleHRfZGV2dF9tdXRleCBwcmV2ZW50cyBsb29rIHVwCisvKiBGb3IgZXh0 ZW5kZWQgZGV2dCBhbGxvY2F0aW9uLiAgZXh0X2RldnRfbG9jayBwcmV2ZW50cyBsb29rIHVwCiAg KiByZXN1bHRzIGZyb20gZ29pbmcgYXdheSB1bmRlcm5lYXRoIGl0cyB1c2VyLgogICovCi1zdGF0 aWMgREVGSU5FX01VVEVYKGV4dF9kZXZ0X211dGV4KTsKK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0so ZXh0X2RldnRfbG9jayk7CiBzdGF0aWMgREVGSU5FX0lEUihleHRfZGV2dF9pZHIpOwogCiBzdGF0 aWMgc3RydWN0IGRldmljZV90eXBlIGRpc2tfdHlwZTsKQEAgLTQyMSwxMyArNDIxLDEzIEBAIGlu dCBibGtfYWxsb2NfZGV2dChzdHJ1Y3QgaGRfc3RydWN0ICpwYXJ0LCBkZXZfdCAqZGV2dCkKIAlk byB7CiAJCWlmICghaWRyX3ByZV9nZXQoJmV4dF9kZXZ0X2lkciwgR0ZQX0tFUk5FTCkpCiAJCQly ZXR1cm4gLUVOT01FTTsKLQkJbXV0ZXhfbG9jaygmZXh0X2RldnRfbXV0ZXgpOworCQlzcGluX2xv Y2soJmV4dF9kZXZ0X2xvY2spOwogCQlyYyA9IGlkcl9nZXRfbmV3KCZleHRfZGV2dF9pZHIsIHBh cnQsICZpZHgpOwogCQlpZiAoIXJjICYmIGlkeCA+PSBOUl9FWFRfREVWVCkgewogCQkJaWRyX3Jl bW92ZSgmZXh0X2RldnRfaWRyLCBpZHgpOwogCQkJcmMgPSAtRUJVU1k7CiAJCX0KLQkJbXV0ZXhf dW5sb2NrKCZleHRfZGV2dF9tdXRleCk7CisJCXNwaW5fdW5sb2NrKCZleHRfZGV2dF9sb2NrKTsK IAl9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTsKIAogCWlmIChyYykKQEAgLTQ1NCw5ICs0NTQsOSBA QCB2b2lkIGJsa19mcmVlX2RldnQoZGV2X3QgZGV2dCkKIAkJcmV0dXJuOwogCiAJaWYgKE1BSk9S KGRldnQpID09IEJMT0NLX0VYVF9NQUpPUikgewotCQltdXRleF9sb2NrKCZleHRfZGV2dF9tdXRl eCk7CisJCXNwaW5fbG9jaygmZXh0X2RldnRfbG9jayk7CiAJCWlkcl9yZW1vdmUoJmV4dF9kZXZ0 X2lkciwgYmxrX21hbmdsZV9taW5vcihNSU5PUihkZXZ0KSkpOwotCQltdXRleF91bmxvY2soJmV4 dF9kZXZ0X211dGV4KTsKKwkJc3Bpbl91bmxvY2soJmV4dF9kZXZ0X2xvY2spOwogCX0KIH0KIApA QCAtNjYzLDcgKzY2Myw2IEBAIHZvaWQgZGVsX2dlbmRpc2soc3RydWN0IGdlbmRpc2sgKmRpc2sp CiAJaWYgKCFzeXNmc19kZXByZWNhdGVkKQogCQlzeXNmc19yZW1vdmVfbGluayhibG9ja19kZXBy LCBkZXZfbmFtZShkaXNrX3RvX2RldihkaXNrKSkpOwogCWRldmljZV9kZWwoZGlza190b19kZXYo ZGlzaykpOwotCWJsa19mcmVlX2RldnQoZGlza190b19kZXYoZGlzayktPmRldnQpOwogfQogRVhQ T1JUX1NZTUJPTChkZWxfZ2VuZGlzayk7CiAKQEAgLTY4OCwxMyArNjg3LDEzIEBAIHN0cnVjdCBn ZW5kaXNrICpnZXRfZ2VuZGlzayhkZXZfdCBkZXZ0LCBpbnQgKnBhcnRubykKIAl9IGVsc2Ugewog CQlzdHJ1Y3QgaGRfc3RydWN0ICpwYXJ0OwogCi0JCW11dGV4X2xvY2soJmV4dF9kZXZ0X211dGV4 KTsKKwkJc3Bpbl9sb2NrKCZleHRfZGV2dF9sb2NrKTsKIAkJcGFydCA9IGlkcl9maW5kKCZleHRf ZGV2dF9pZHIsIGJsa19tYW5nbGVfbWlub3IoTUlOT1IoZGV2dCkpKTsKIAkJaWYgKHBhcnQgJiYg Z2V0X2Rpc2socGFydF90b19kaXNrKHBhcnQpKSkgewogCQkJKnBhcnRubyA9IHBhcnQtPnBhcnRu bzsKIAkJCWRpc2sgPSBwYXJ0X3RvX2Rpc2socGFydCk7CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZl eHRfZGV2dF9tdXRleCk7CisJCXNwaW5fdW5sb2NrKCZleHRfZGV2dF9sb2NrKTsKIAl9CiAKIAly ZXR1cm4gZGlzazsKQEAgLTExMDIsNiArMTEwMSw3IEBAIHN0YXRpYyB2b2lkIGRpc2tfcmVsZWFz ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGdlbmRpc2sgKmRpc2sgPSBkZXZfdG9f ZGlzayhkZXYpOwogCisJYmxrX2ZyZWVfZGV2dChkZXYtPmRldnQpOwogCWRpc2tfcmVsZWFzZV9l dmVudHMoZGlzayk7CiAJa2ZyZWUoZGlzay0+cmFuZG9tKTsKIAlkaXNrX3JlcGxhY2VfcGFydF90 YmwoZGlzaywgTlVMTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUu YyBiL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfaWRsZS5jCmluZGV4IGRlMDc5MWMuLjM4OGJhMTAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfaWRsZS5jCisrKyBiL2RyaXZlcnMv YWNwaS9wcm9jZXNzb3JfaWRsZS5jCkBAIC0xMTY1LDkgKzExNjUsOSBAQCBpbnQgYWNwaV9wcm9j ZXNzb3JfY3N0X2hhc19jaGFuZ2VkKHN0cnVjdCBhY3BpX3Byb2Nlc3NvciAqcHIpCiAJaWYgKHNt cF9wcm9jZXNzb3JfaWQoKSA9PSAwICYmCiAJCQljcHVpZGxlX2dldF9kcml2ZXIoKSA9PSAmYWNw aV9pZGxlX2RyaXZlcikgewogCi0JCWNwdWlkbGVfcGF1c2VfYW5kX2xvY2soKTsKIAkJLyogUHJv dGVjdCBhZ2FpbnN0IGNwdS1ob3RwbHVnICovCiAJCWdldF9vbmxpbmVfY3B1cygpOworCQljcHVp ZGxlX3BhdXNlX2FuZF9sb2NrKCk7CiAKIAkJLyogRGlzYWJsZSBhbGwgY3B1aWRsZSBkZXZpY2Vz ICovCiAJCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7CkBAIC0xMTkyLDggKzExOTIsOCBAQCBp bnQgYWNwaV9wcm9jZXNzb3JfY3N0X2hhc19jaGFuZ2VkKHN0cnVjdCBhY3BpX3Byb2Nlc3NvciAq cHIpCiAJCQkJY3B1aWRsZV9lbmFibGVfZGV2aWNlKCZfcHItPnBvd2VyLmRldik7CiAJCQl9CiAJ CX0KLQkJcHV0X29ubGluZV9jcHVzKCk7CiAJCWNwdWlkbGVfcmVzdW1lX2FuZF91bmxvY2soKTsK KwkJcHV0X29ubGluZV9jcHVzKCk7CiAJfQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2F0YS9haGNpLmMgYi9kcml2ZXJzL2F0YS9haGNpLmMKaW5kZXggNDNiMGFjZi4uNDAwN2Y2 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYWhjaS5jCisrKyBiL2RyaXZlcnMvYXRhL2FoY2ku YwpAQCAtMzE1LDYgKzMxNSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQg YWhjaV9wY2lfdGJsW10gPSB7CiAJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg5Yzg1KSwgYm9hcmRf YWhjaSB9LCAvKiBXaWxkY2F0IFBvaW50LUxQIFJBSUQgKi8KIAl7IFBDSV9WREVWSUNFKElOVEVM LCAweDljODcpLCBib2FyZF9haGNpIH0sIC8qIFdpbGRjYXQgUG9pbnQtTFAgUkFJRCAqLwogCXsg UENJX1ZERVZJQ0UoSU5URUwsIDB4OWM4ZiksIGJvYXJkX2FoY2kgfSwgLyogV2lsZGNhdCBQb2lu dC1MUCBSQUlEICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg4YzgyKSwgYm9hcmRfYWhjaSB9 LCAvKiA5IFNlcmllcyBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg4YzgzKSwgYm9h cmRfYWhjaSB9LCAvKiA5IFNlcmllcyBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg4 Yzg0KSwgYm9hcmRfYWhjaSB9LCAvKiA5IFNlcmllcyBSQUlEICovCisJeyBQQ0lfVkRFVklDRShJ TlRFTCwgMHg4Yzg1KSwgYm9hcmRfYWhjaSB9LCAvKiA5IFNlcmllcyBSQUlEICovCisJeyBQQ0lf VkRFVklDRShJTlRFTCwgMHg4Yzg2KSwgYm9hcmRfYWhjaSB9LCAvKiA5IFNlcmllcyBSQUlEICov CisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg4Yzg3KSwgYm9hcmRfYWhjaSB9LCAvKiA5IFNlcmll cyBSQUlEICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg4YzhlKSwgYm9hcmRfYWhjaSB9LCAv KiA5IFNlcmllcyBSQUlEICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg4YzhmKSwgYm9hcmRf YWhjaSB9LCAvKiA5IFNlcmllcyBSQUlEICovCiAKIAkvKiBKTWljcm9uIDM2MC8xLzMvNS82LCBt YXRjaCBjbGFzcyB0byBhdm9pZCBJREUgZnVuY3Rpb24gKi8KIAl7IFBDSV9WRU5ET1JfSURfSk1J Q1JPTiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKQEAgLTQ0OSw2ICs0NTcs OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYWhjaV9wY2lfdGJsW10gPSB7 CiAJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUFSVkVMTF9FWFQsIDB4OTE3YSksCiAJICAu ZHJpdmVyX2RhdGEgPSBib2FyZF9haGNpX3llc19mYnMgfSwJCQkvKiA4OHNlOTE3MiAqLwogCXsg UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01BUlZFTExfRVhULCAweDkxNzIpLAorCSAgLmRyaXZl cl9kYXRhID0gYm9hcmRfYWhjaV95ZXNfZmJzIH0sCQkJLyogODhzZTkxODIgKi8KKwl7IFBDSV9E RVZJQ0UoUENJX1ZFTkRPUl9JRF9NQVJWRUxMX0VYVCwgMHg5MTgyKSwKIAkgIC5kcml2ZXJfZGF0 YSA9IGJvYXJkX2FoY2lfeWVzX2ZicyB9LAkJCS8qIDg4c2U5MTcyICovCiAJeyBQQ0lfREVWSUNF KFBDSV9WRU5ET1JfSURfTUFSVkVMTF9FWFQsIDB4OTE5MiksCiAJICAuZHJpdmVyX2RhdGEgPSBi b2FyZF9haGNpX3llc19mYnMgfSwJCQkvKiA4OHNlOTE3MiBvbiBzb21lIEdpZ2FieXRlICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9hdGFfcGlpeC5jIGIvZHJpdmVycy9hdGEvYXRhX3BpaXgu YwppbmRleCA1YjBiNWY3Li5iMWU4ZTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9hdGFfcGlp eC5jCisrKyBiL2RyaXZlcnMvYXRhL2F0YV9waWl4LmMKQEAgLTM2Miw2ICszNjIsMTQgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHBpaXhfcGNpX3RibFtdID0gewogCXsgMHg4 MDg2LCAweDBGMjEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIGljaDhfMnBvcnRfc2F0 YV9ieXQgfSwKIAkvKiBTQVRBIENvbnRyb2xsZXIgSURFIChDb2xldG8gQ3JlZWspICovCiAJeyAw eDgwODYsIDB4MjNhNiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgaWNoOF8ycG9ydF9z YXRhIH0sCisJLyogU0FUQSBDb250cm9sbGVyIElERSAoOSBTZXJpZXMpICovCisJeyAweDgwODYs IDB4OGM4OCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgaWNoOF8ycG9ydF9zYXRhX3Nu YiB9LAorCS8qIFNBVEEgQ29udHJvbGxlciBJREUgKDkgU2VyaWVzKSAqLworCXsgMHg4MDg2LCAw eDhjODksIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIGljaDhfMnBvcnRfc2F0YV9zbmIg fSwKKwkvKiBTQVRBIENvbnRyb2xsZXIgSURFICg5IFNlcmllcykgKi8KKwl7IDB4ODA4NiwgMHg4 YzgwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBpY2g4X3NhdGFfc25iIH0sCisJLyog U0FUQSBDb250cm9sbGVyIElERSAoOSBTZXJpZXMpICovCisJeyAweDgwODYsIDB4OGM4MSwgUENJ X0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgaWNoOF9zYXRhX3NuYiB9LAogCiAJeyB9CS8qIHRl cm1pbmF0ZSBsaXN0ICovCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL3JlZ21hcC9yZWdt YXAuYyBiL2RyaXZlcnMvYmFzZS9yZWdtYXAvcmVnbWFwLmMKaW5kZXggYmY0NDFkYi4uZWE3OGJj NDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9yZWdtYXAvcmVnbWFwLmMKKysrIGIvZHJpdmVy cy9iYXNlL3JlZ21hcC9yZWdtYXAuYwpAQCAtMzYsNiArMzYsOSBAQCBib29sIHJlZ21hcF9yZWFk YWJsZShzdHJ1Y3QgcmVnbWFwICptYXAsIHVuc2lnbmVkIGludCByZWcpCiAJaWYgKG1hcC0+bWF4 X3JlZ2lzdGVyICYmIHJlZyA+IG1hcC0+bWF4X3JlZ2lzdGVyKQogCQlyZXR1cm4gZmFsc2U7CiAK KwlpZiAobWFwLT5mb3JtYXQuZm9ybWF0X3dyaXRlKQorCQlyZXR1cm4gZmFsc2U7CisKIAlpZiAo bWFwLT5yZWFkYWJsZV9yZWcpCiAJCXJldHVybiBtYXAtPnJlYWRhYmxlX3JlZyhtYXAtPmRldiwg cmVnKTsKIApAQCAtNDQsNyArNDcsNyBAQCBib29sIHJlZ21hcF9yZWFkYWJsZShzdHJ1Y3QgcmVn bWFwICptYXAsIHVuc2lnbmVkIGludCByZWcpCiAKIGJvb2wgcmVnbWFwX3ZvbGF0aWxlKHN0cnVj dCByZWdtYXAgKm1hcCwgdW5zaWduZWQgaW50IHJlZykKIHsKLQlpZiAobWFwLT5tYXhfcmVnaXN0 ZXIgJiYgcmVnID4gbWFwLT5tYXhfcmVnaXN0ZXIpCisJaWYgKCFtYXAtPmZvcm1hdC5mb3JtYXRf d3JpdGUgJiYgIXJlZ21hcF9yZWFkYWJsZShtYXAsIHJlZykpCiAJCXJldHVybiBmYWxzZTsKIAog CWlmIChtYXAtPnZvbGF0aWxlX3JlZykKQEAgLTU1LDcgKzU4LDcgQEAgYm9vbCByZWdtYXBfdm9s YXRpbGUoc3RydWN0IHJlZ21hcCAqbWFwLCB1bnNpZ25lZCBpbnQgcmVnKQogCiBib29sIHJlZ21h cF9wcmVjaW91cyhzdHJ1Y3QgcmVnbWFwICptYXAsIHVuc2lnbmVkIGludCByZWcpCiB7Ci0JaWYg KG1hcC0+bWF4X3JlZ2lzdGVyICYmIHJlZyA+IG1hcC0+bWF4X3JlZ2lzdGVyKQorCWlmICghcmVn bWFwX3JlYWRhYmxlKG1hcCwgcmVnKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKG1hcC0+cHJl Y2lvdXNfcmVnKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCmluZGV4IDAwMTZmZWUuLjk2ZDVj ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKQEAgLTY1MSw3ICs2NTEsNyBAQCBpbml0 X3ZidF9kZWZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJRFJNX0RF QlVHX0tNUygiU2V0IGRlZmF1bHQgdG8gU1NDIGF0ICVkTUh6XG4iLCBkZXZfcHJpdi0+bHZkc19z c2NfZnJlcSk7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGludGVsX25vX29wcmVnaW9uX3ZidF9j YWxsYmFjayhjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqaWQpCitzdGF0aWMgaW50IGludGVs X25vX29wcmVnaW9uX3ZidF9jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqaWQp CiB7CiAJRFJNX0RFQlVHX0tNUygiRmFsbGluZyBiYWNrIHRvIG1hbnVhbGx5IHJlYWRpbmcgVkJU IGZyb20gIgogCQkgICAgICAiVkJJT1MgUk9NIGZvciAlc1xuIiwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2x2ZHMuYwppbmRleCA3NGQzMTJmLi5mYWRkMDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9sdmRzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZk cy5jCkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9m dW5jcyBpbnRlbF9sdmRzX2VuY19mdW5jcyA9IHsKIAkuZGVzdHJveSA9IGludGVsX2VuY29kZXJf ZGVzdHJveSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGludGVsX25vX2x2ZHNfZG1pX2NhbGxi YWNrKGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICppZCkKK3N0YXRpYyBpbnQgaW50ZWxfbm9f bHZkc19kbWlfY2FsbGJhY2soY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmlkKQogewogCURS TV9ERUJVR19LTVMoIlNraXBwaW5nIExWRFMgaW5pdGlhbGl6YXRpb24gZm9yICVzXG4iLCBpZC0+ aWRlbnQpOwogCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fYXRvbWJpb3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2F0b21iaW9z LmMKaW5kZXggNmQ5YzMyYi4uMjRlOTc1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fYXRvbWJpb3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9hdG9tYmlvcy5jCkBAIC00NTcsNiArNDU3LDEzIEBAIHN0YXRpYyBib29sIHJhZGVvbl9hdG9t X2FwcGx5X3F1aXJrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9CiAJfQogCisJLyogRnVq aXRzdSBEMzAwMy1TMiBib2FyZCBsaXN0cyBEVkktSSBhcyBEVkktSSBhbmQgVkdBICovCisJaWYg KChkZXYtPnBkZXYtPmRldmljZSA9PSAweDk4MDUpICYmCisJICAgIChkZXYtPnBkZXYtPnN1YnN5 c3RlbV92ZW5kb3IgPT0gMHgxNzM0KSAmJgorCSAgICAoZGV2LT5wZGV2LT5zdWJzeXN0ZW1fZGV2 aWNlID09IDB4MTFiZCkpIHsKKwkJaWYgKCpjb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05O RUNUT1JfVkdBKQorCQkJcmV0dXJuIGZhbHNlOworCX0KIAogCXJldHVybiB0cnVlOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmlmby5jIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZmlmby5jCmluZGV4IGEwYzJmMTIuLmRlY2NhODIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZpZm8uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9maWZvLmMKQEAgLTE2Myw4ICsxNjMsOSBAQCB2b2lkIHZt d19maWZvX3JlbGVhc2Uoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHZtd19m aWZvX3N0YXRlICpmaWZvKQogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmh3X211dGV4KTsKIAor CXZtd193cml0ZShkZXZfcHJpdiwgU1ZHQV9SRUdfU1lOQywgU1ZHQV9TWU5DX0dFTkVSSUMpOwog CXdoaWxlICh2bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9SRUdfQlVTWSkgIT0gMCkKLQkJdm13X3dy aXRlKGRldl9wcml2LCBTVkdBX1JFR19TWU5DLCBTVkdBX1NZTkNfR0VORVJJQyk7CisJCTsKIAog CWRldl9wcml2LT5sYXN0X3JlYWRfc2Vxbm8gPSBpb3JlYWQzMihmaWZvX21lbSArIFNWR0FfRklG T19GRU5DRSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYyBi L2RyaXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYwppbmRleCA3MDQyM2RjLi4yZDViYjViIDEw MDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL2VsYW50ZWNoLmMKKysrIGIvZHJpdmVycy9p bnB1dC9tb3VzZS9lbGFudGVjaC5jCkBAIC0xMTMwLDYgKzExMzAsMTMgQEAgc3RhdGljIGJvb2wg ZWxhbnRlY2hfaXNfc2lnbmF0dXJlX3ZhbGlkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBhcmFtKQog CWlmIChwYXJhbVsxXSA9PSAwKQogCQlyZXR1cm4gdHJ1ZTsKIAorCS8qCisJICogU29tZSBtb2Rl bHMgaGF2ZSBhIHJldmlzaW9uIGhpZ2hlciB0aGVuIDIwLiBNZWFuaW5nIHBhcmFtWzJdIG1heQor CSAqIGJlIDEwIG9yIDIwLCBza2lwIHRoZSByYXRlcyBjaGVjayBmb3IgdGhlc2UuCisJICovCisJ aWYgKHBhcmFtWzBdID09IDB4NDYgJiYgKHBhcmFtWzFdICYgMHhlZikgPT0gMHgwZiAmJiBwYXJh bVsyXSA8IDQwKQorCQlyZXR1cm4gdHJ1ZTsKKwogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHJhdGVzKTsgaSsrKQogCQlpZiAocGFyYW1bMl0gPT0gcmF0ZXNbaV0pCiAJCQlyZXR1cm4gZmFs c2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljcy5jIGIvZHJpdmVy cy9pbnB1dC9tb3VzZS9zeW5hcHRpY3MuYwppbmRleCBkZjhiNzJiLi5hNTBlMTIxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljcy5jCisrKyBiL2RyaXZlcnMvaW5wdXQv bW91c2Uvc3luYXB0aWNzLmMKQEAgLTUwNiwxMCArNTA2LDYxIEBAIHN0YXRpYyBpbnQgc3luYXB0 aWNzX3BhcnNlX2h3X3N0YXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmW10sCiAJCQkgKChidWZb MF0gJiAweDA0KSA+PiAxKSB8CiAJCQkgKChidWZbM10gJiAweDA0KSA+PiAyKSk7CiAKKwkJaWYg KChTWU5fQ0FQX0FEVl9HRVNUVVJFKHByaXYtPmV4dF9jYXBfMGMpIHx8CisJCQlTWU5fQ0FQX0lN QUdFX1NFTlNPUihwcml2LT5leHRfY2FwXzBjKSkgJiYKKwkJICAgIGh3LT53ID09IDIpIHsKKwkJ CXN5bmFwdGljc19wYXJzZV9hZ20oYnVmLCBwcml2LCBodyk7CisJCQlyZXR1cm4gMTsKKwkJfQor CisJCWh3LT54ID0gKCgoYnVmWzNdICYgMHgxMCkgPDwgOCkgfAorCQkJICgoYnVmWzFdICYgMHgw ZikgPDwgOCkgfAorCQkJIGJ1Zls0XSk7CisJCWh3LT55ID0gKCgoYnVmWzNdICYgMHgyMCkgPDwg NykgfAorCQkJICgoYnVmWzFdICYgMHhmMCkgPDwgNCkgfAorCQkJIGJ1Zls1XSk7CisJCWh3LT56 ID0gYnVmWzJdOworCiAJCWh3LT5sZWZ0ICA9IChidWZbMF0gJiAweDAxKSA/IDEgOiAwOwogCQlo dy0+cmlnaHQgPSAoYnVmWzBdICYgMHgwMikgPyAxIDogMDsKIAotCQlpZiAoU1lOX0NBUF9DTElD S1BBRChwcml2LT5leHRfY2FwXzBjKSkgeworCQlpZiAoU1lOX0NBUF9GT1JDRVBBRChwcml2LT5l eHRfY2FwXzBjKSkgeworCQkJLyoKKwkJCSAqIEZvcmNlUGFkcywgbGlrZSBDbGlja3BhZHMsIHVz ZSBtaWRkbGUgYnV0dG9uCisJCQkgKiBiaXRzIHRvIHJlcG9ydCBwcmltYXJ5IGJ1dHRvbiBjbGlj a3MuCisJCQkgKiBVbmZvcnR1bmF0ZWx5IHRoZXkgcmVwb3J0IHByaW1hcnkgYnV0dG9uIG5vdAor CQkJICogb25seSB3aGVuIHVzZXIgcHJlc3NlcyBvbiB0aGUgcGFkIGFib3ZlIGNlcnRhaW4KKwkJ CSAqIHRocmVzaG9sZCwgYnV0IGFsc28gd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZQorCQkJ ICogZmluZ2VyIG9uIHRoZSB0b3VjaHBhZCwgd2hpY2ggaW50ZXJmZXJlcyB3aXRoCisJCQkgKiBv dXQgbXVsdGktZmluZ2VyIGdlc3R1cmVzLgorCQkJICovCisJCQlpZiAoaHctPnogPT0gMCkgewor CQkJCS8qIE5vIGNvbnRhY3RzICovCisJCQkJcHJpdi0+cHJlc3MgPSBwcml2LT5yZXBvcnRfcHJl c3MgPSBmYWxzZTsKKwkJCX0gZWxzZSBpZiAoaHctPncgPj0gNCAmJiAoKGJ1ZlswXSBeIGJ1Zlsz XSkgJiAweDAxKSkgeworCQkJCS8qCisJCQkJICogU2luZ2xlLWZpbmdlciB0b3VjaCB3aXRoIHBy ZXNzdXJlIGFib3ZlCisJCQkJICogdGhlIHRocmVzaG9sZC4gSWYgcHJlc3N1cmUgc3RheXMgbG9u ZworCQkJCSAqIGVub3VnaCwgd2UnbGwgc3RhcnQgcmVwb3J0aW5nIHByaW1hcnkKKwkJCQkgKiBi dXR0b24uIFdlIHJlbHkgb24gdGhlIGRldmljZSBjb250aW51aW5nCisJCQkJICogc2VuZGluZyBk YXRhIGV2ZW4gaWYgZmluZ2VyIGRvZXMgbm90CisJCQkJICogbW92ZS4KKwkJCQkgKi8KKwkJCQlp ZiAgKCFwcml2LT5wcmVzcykgeworCQkJCQlwcml2LT5wcmVzc19zdGFydCA9IGppZmZpZXM7CisJ CQkJCXByaXYtPnByZXNzID0gdHJ1ZTsKKwkJCQl9IGVsc2UgaWYgKHRpbWVfYWZ0ZXIoamlmZmll cywKKwkJCQkJCXByaXYtPnByZXNzX3N0YXJ0ICsKKwkJCQkJCQltc2Vjc190b19qaWZmaWVzKDUw KSkpIHsKKwkJCQkJcHJpdi0+cmVwb3J0X3ByZXNzID0gdHJ1ZTsKKwkJCQl9CisJCQl9IGVsc2Ug eworCQkJCXByaXYtPnByZXNzID0gZmFsc2U7CisJCQl9CisKKwkJCWh3LT5sZWZ0ID0gcHJpdi0+ cmVwb3J0X3ByZXNzOworCisJCX0gZWxzZSBpZiAoU1lOX0NBUF9DTElDS1BBRChwcml2LT5leHRf Y2FwXzBjKSkgewogCQkJLyoKIAkJCSAqIENsaWNrcGFkJ3MgYnV0dG9uIGlzIHRyYW5zbWl0dGVk IGFzIG1pZGRsZSBidXR0b24sCiAJCQkgKiBob3dldmVyLCBzaW5jZSBpdCBpcyBwcmltYXJ5IGJ1 dHRvbiwgd2Ugd2lsbCByZXBvcnQKQEAgLTUyOCwyMSArNTc5LDYgQEAgc3RhdGljIGludCBzeW5h cHRpY3NfcGFyc2VfaHdfc3RhdGUoY29uc3QgdW5zaWduZWQgY2hhciBidWZbXSwKIAkJCWh3LT5k b3duID0gKChidWZbMF0gXiBidWZbM10pICYgMHgwMikgPyAxIDogMDsKIAkJfQogCi0JCWlmICgo U1lOX0NBUF9BRFZfR0VTVFVSRShwcml2LT5leHRfY2FwXzBjKSB8fAotCQkJU1lOX0NBUF9JTUFH RV9TRU5TT1IocHJpdi0+ZXh0X2NhcF8wYykpICYmCi0JCSAgICBody0+dyA9PSAyKSB7Ci0JCQlz eW5hcHRpY3NfcGFyc2VfYWdtKGJ1ZiwgcHJpdiwgaHcpOwotCQkJcmV0dXJuIDE7Ci0JCX0KLQot CQlody0+eCA9ICgoKGJ1ZlszXSAmIDB4MTApIDw8IDgpIHwKLQkJCSAoKGJ1ZlsxXSAmIDB4MGYp IDw8IDgpIHwKLQkJCSBidWZbNF0pOwotCQlody0+eSA9ICgoKGJ1ZlszXSAmIDB4MjApIDw8IDcp IHwKLQkJCSAoKGJ1ZlsxXSAmIDB4ZjApIDw8IDQpIHwKLQkJCSBidWZbNV0pOwotCQlody0+eiA9 IGJ1ZlsyXTsKLQogCQlpZiAoU1lOX0NBUF9NVUxUSV9CVVRUT05fTk8ocHJpdi0+ZXh0X2NhcCkg JiYKIAkJICAgICgoYnVmWzBdIF4gYnVmWzNdKSAmIDB4MDIpKSB7CiAJCQlzd2l0Y2ggKFNZTl9D QVBfTVVMVElfQlVUVE9OX05PKHByaXYtPmV4dF9jYXApICYgfjB4MDEpIHsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzLmggYi9kcml2ZXJzL2lucHV0L21vdXNlL3N5 bmFwdGljcy5oCmluZGV4IDYyMmFlYTguLjkwOGQxNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5w dXQvbW91c2Uvc3luYXB0aWNzLmgKKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9zeW5hcHRpY3Mu aApAQCAtNzcsNiArNzcsMTEgQEAKICAqIDIJMHgwOAlpbWFnZSBzZW5zb3IJCWltYWdlIHNlbnNv ciB0cmFja3MgNSBmaW5nZXJzLCBidXQgb25seQogICoJCQkJCXJlcG9ydHMgMi4KICAqIDIJMHgy MAlyZXBvcnQgbWluCQlxdWVyeSAweDBmIGdpdmVzIG1pbiBjb29yZCByZXBvcnRlZAorICogMgkw eDgwCWZvcmNlcGFkCQlmb3JjZXBhZCBpcyBhIHZhcmlhbnQgb2YgY2xpY2twYWQgdGhhdAorICoJ CQkJCWRvZXMgbm90IGhhdmUgcGh5c2ljYWwgYnV0dG9ucyBidXQgcmF0aGVyCisgKgkJCQkJdXNl cyBwcmVzc3VyZSBhYm92ZSBjZXJ0YWluIHRocmVzaG9sZCB0bworICoJCQkJCXJlcG9ydCBwcmlt YXJ5IGNsaWNrcy4gRm9yY2VwYWRzIGFsc28gaGF2ZQorICoJCQkJCWNsaWNrcGFkIGJpdCBzZXQu CiAgKi8KICNkZWZpbmUgU1lOX0NBUF9DTElDS1BBRChleDBjKQkJKChleDBjKSAmIDB4MTAwMDAw KSAvKiAxLWJ1dHRvbiBDbGlja1BhZCAqLwogI2RlZmluZSBTWU5fQ0FQX0NMSUNLUEFEMkJUTihl eDBjKQkoKGV4MGMpICYgMHgwMDAxMDApIC8qIDItYnV0dG9uIENsaWNrUGFkICovCkBAIC04NSw2 ICs5MCw3IEBACiAjZGVmaW5lIFNZTl9DQVBfQURWX0dFU1RVUkUoZXgwYykJKChleDBjKSAmIDB4 MDgwMDAwKQogI2RlZmluZSBTWU5fQ0FQX1JFRFVDRURfRklMVEVSSU5HKGV4MGMpCSgoZXgwYykg JiAweDAwMDQwMCkKICNkZWZpbmUgU1lOX0NBUF9JTUFHRV9TRU5TT1IoZXgwYykJKChleDBjKSAm IDB4MDAwODAwKQorI2RlZmluZSBTWU5fQ0FQX0ZPUkNFUEFEKGV4MGMpCQkoKGV4MGMpICYgMHgw MDgwMDApCiAKIC8qIHN5bmFwdGljcyBtb2RlcyBxdWVyeSBiaXRzICovCiAjZGVmaW5lIFNZTl9N T0RFX0FCU09MVVRFKG0pCQkoKG0pICYgKDEgPDwgNykpCkBAIC0xNzAsNiArMTc2LDExIEBAIHN0 cnVjdCBzeW5hcHRpY3NfZGF0YSB7CiAJICovCiAJc3RydWN0IHN5bmFwdGljc19od19zdGF0ZSBh Z207CiAJYm9vbCBhZ21fcGVuZGluZzsJCQkvKiBuZXcgQUdNIHBhY2tldCByZWNlaXZlZCAqLwor CisJLyogRm9yY2VQYWQgaGFuZGxpbmcgKi8KKwl1bnNpZ25lZCBsb25nCQkJCXByZXNzX3N0YXJ0 OworCWJvb2wJCQkJCXByZXNzOworCWJvb2wJCQkJCXJlcG9ydF9wcmVzczsKIH07CiAKIHZvaWQg c3luYXB0aWNzX21vZHVsZV9pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9z ZXJpby9pODA0Mi14ODZpYTY0aW8uaCBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2 NGlvLmgKaW5kZXggMDMxMjcwYy4uYmFiODIzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9z ZXJpby9pODA0Mi14ODZpYTY0aW8uaAorKysgYi9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4 NmlhNjRpby5oCkBAIC00NTgsNiArNDU4LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5 c3RlbV9pZCBfX2luaXRjb25zdCBpODA0Ml9kbWlfbm9tdXhfdGFibGVbXSA9IHsKIAkJCURNSV9N QVRDSChETUlfUFJPRFVDVF9OQU1FLCAiSFAgUGF2aWxpb24gZHY0IE5vdGVib29rIFBDIiksCiAJ CX0sCiAJfSwKKwl7CisJCS8qIEF2YXRhciBBVklVLTE0NUE2ICovCisJCS5tYXRjaGVzID0gewor CQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiSW50ZWwiKSwKKwkJCURNSV9NQVRDSChETUlf UFJPRFVDVF9OQU1FLCAiSUM0SSIpLAorCQl9LAorCX0sCiAJeyB9CiB9OwogCkBAIC01OTQsNiAr NjAxLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBfX2luaXRjb25zdCBp ODA0Ml9kbWlfbm90aW1lb3V0X3RhYmxlW10gPSB7CiAJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1Rf TkFNRSwgIkhQIFBhdmlsaW9uIGR2NCBOb3RlYm9vayBQQyIpLAogCQl9LAogCX0sCisJeworCQkv KiBGdWppdHN1IFU1NzQgbGFwdG9wICovCisJCS8qIGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9Njk3MzEgKi8KKwkJLm1hdGNoZXMgPSB7CisJCQlETUlfTUFUQ0go RE1JX1NZU19WRU5ET1IsICJGVUpJVFNVIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFN RSwgIkxJRkVCT09LIFU1NzQiKSwKKwkJfSwKKwl9LAogCXsgfQogfTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbnB1dC9zZXJpby9zZXJwb3J0LmMgYi9kcml2ZXJzL2lucHV0L3NlcmlvL3NlcnBv cnQuYwppbmRleCA4NzU1ZjVmLi5lNGVjZjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3Nl cmlvL3NlcnBvcnQuYworKysgYi9kcml2ZXJzL2lucHV0L3NlcmlvL3NlcnBvcnQuYwpAQCAtMjEs NiArMjEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9zZXJp by5oPgogI2luY2x1ZGUgPGxpbnV4L3R0eS5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBhdC5oPgog CiBNT0RVTEVfQVVUSE9SKCJWb2p0ZWNoIFBhdmxpayA8dm9qdGVjaEB1Y3cuY3o+Iik7CiBNT0RV TEVfREVTQ1JJUFRJT04oIklucHV0IGRldmljZSBUVFkgbGluZSBkaXNjaXBsaW5lIik7CkBAIC0x OTYsMjggKzE5Nyw1NSBAQCBzdGF0aWMgc3NpemVfdCBzZXJwb3J0X2xkaXNjX3JlYWQoc3RydWN0 IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwgdQogCXJldHVybiAwOwogfQog CitzdGF0aWMgdm9pZCBzZXJwb3J0X3NldF90eXBlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVu c2lnbmVkIGxvbmcgdHlwZSkKK3sKKwlzdHJ1Y3Qgc2VycG9ydCAqc2VycG9ydCA9IHR0eS0+ZGlz Y19kYXRhOworCisJc2VycG9ydC0+aWQucHJvdG8gPSB0eXBlICYgMHgwMDAwMDBmZjsKKwlzZXJw b3J0LT5pZC5pZCAgICA9ICh0eXBlICYgMHgwMDAwZmYwMCkgPj4gODsKKwlzZXJwb3J0LT5pZC5l eHRyYSA9ICh0eXBlICYgMHgwMGZmMDAwMCkgPj4gMTY7Cit9CisKIC8qCiAgKiBzZXJwb3J0X2xk aXNjX2lvY3RsKCkgYWxsb3dzIHRvIHNldCB0aGUgcG9ydCBwcm90b2NvbCwgYW5kIGRldmljZSBJ RAogICovCiAKLXN0YXRpYyBpbnQgc2VycG9ydF9sZGlzY19pb2N0bChzdHJ1Y3QgdHR5X3N0cnVj dCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZykKK3N0YXRpYyBpbnQgc2VycG9ydF9sZGlzY19pb2N0bChzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZykKIHsKLQlzdHJ1Y3Qgc2VycG9ydCAqc2VycG9ydCA9IChzdHJ1Y3Qg c2VycG9ydCopIHR0eS0+ZGlzY19kYXRhOwotCXVuc2lnbmVkIGxvbmcgdHlwZTsKLQogCWlmIChj bWQgPT0gU1BJT0NTVFlQRSkgeworCQl1bnNpZ25lZCBsb25nIHR5cGU7CisKIAkJaWYgKGdldF91 c2VyKHR5cGUsICh1bnNpZ25lZCBsb25nIF9fdXNlciAqKSBhcmcpKQogCQkJcmV0dXJuIC1FRkFV TFQ7CiAKLQkJc2VycG9ydC0+aWQucHJvdG8gPSB0eXBlICYgMHgwMDAwMDBmZjsKLQkJc2VycG9y dC0+aWQuaWQJICA9ICh0eXBlICYgMHgwMDAwZmYwMCkgPj4gODsKLQkJc2VycG9ydC0+aWQuZXh0 cmEgPSAodHlwZSAmIDB4MDBmZjAwMDApID4+IDE2OworCQlzZXJwb3J0X3NldF90eXBlKHR0eSwg dHlwZSk7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAtRUlOVkFMOworfQorCisjaWZkZWYg Q09ORklHX0NPTVBBVAorI2RlZmluZSBDT01QQVRfU1BJT0NTVFlQRQlfSU9XKCdxJywgMHgwMSwg Y29tcGF0X3Vsb25nX3QpCitzdGF0aWMgbG9uZyBzZXJwb3J0X2xkaXNjX2NvbXBhdF9pb2N0bChz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAorCQkJCSAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJ CQkgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJaWYgKGNt ZCA9PSBDT01QQVRfU1BJT0NTVFlQRSkgeworCQl2b2lkIF9fdXNlciAqdWFyZyA9IGNvbXBhdF9w dHIoYXJnKTsKKwkJY29tcGF0X3Vsb25nX3QgY29tcGF0X3R5cGU7CisKKwkJaWYgKGdldF91c2Vy KGNvbXBhdF90eXBlLCAoY29tcGF0X3Vsb25nX3QgX191c2VyICopdWFyZykpCisJCQlyZXR1cm4g LUVGQVVMVDsKIAorCQlzZXJwb3J0X3NldF90eXBlKHR0eSwgY29tcGF0X3R5cGUpOwogCQlyZXR1 cm4gMDsKIAl9CiAKIAlyZXR1cm4gLUVJTlZBTDsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBz ZXJwb3J0X2xkaXNjX3dyaXRlX3dha2V1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSkKIHsKQEAg LTI0MSw2ICsyNjksOSBAQCBzdGF0aWMgc3RydWN0IHR0eV9sZGlzY19vcHMgc2VycG9ydF9sZGlz YyA9IHsKIAkuY2xvc2UgPQlzZXJwb3J0X2xkaXNjX2Nsb3NlLAogCS5yZWFkID0JCXNlcnBvcnRf bGRpc2NfcmVhZCwKIAkuaW9jdGwgPQlzZXJwb3J0X2xkaXNjX2lvY3RsLAorI2lmZGVmIENPTkZJ R19DT01QQVQKKwkuY29tcGF0X2lvY3RsID0Jc2VycG9ydF9sZGlzY19jb21wYXRfaW9jdGwsCisj ZW5kaWYKIAkucmVjZWl2ZV9idWYgPQlzZXJwb3J0X2xkaXNjX3JlY2VpdmUsCiAJLndyaXRlX3dh a2V1cCA9CXNlcnBvcnRfbGRpc2Nfd3JpdGVfd2FrZXVwCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9kbS1jcnlwdC5jIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCmluZGV4IGFhMTQyZjkuLjQ4 NzhkOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY3J5cHQuYworKysgYi9kcml2ZXJzL21k L2RtLWNyeXB0LmMKQEAgLTE1NjUsNiArMTU2NSw3IEBAIHN0YXRpYyBpbnQgY3J5cHRfY3RyKHN0 cnVjdCBkbV90YXJnZXQgKnRpLCB1bnNpZ25lZCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJdW5z aWduZWQgaW50IGtleV9zaXplLCBvcHRfcGFyYW1zOwogCXVuc2lnbmVkIGxvbmcgbG9uZyB0bXBs bDsKIAlpbnQgcmV0OworCXNpemVfdCBpdl9zaXplX3BhZGRpbmc7CiAJc3RydWN0IGRtX2FyZ19z ZXQgYXM7CiAJY29uc3QgY2hhciAqb3B0X3N0cmluZzsKIApAQCAtMTYwMCwxMiArMTYwMSwyMyBA QCBzdGF0aWMgaW50IGNyeXB0X2N0cihzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgdW5zaWduZWQgaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJY2MtPmRtcmVxX3N0YXJ0ID0gc2l6ZW9mKHN0cnVjdCBh YmxrY2lwaGVyX3JlcXVlc3QpOwogCWNjLT5kbXJlcV9zdGFydCArPSBjcnlwdG9fYWJsa2NpcGhl cl9yZXFzaXplKGFueV90Zm0oY2MpKTsKLQljYy0+ZG1yZXFfc3RhcnQgPSBBTElHTihjYy0+ZG1y ZXFfc3RhcnQsIGNyeXB0b190Zm1fY3R4X2FsaWdubWVudCgpKTsKLQljYy0+ZG1yZXFfc3RhcnQg Kz0gY3J5cHRvX2FibGtjaXBoZXJfYWxpZ25tYXNrKGFueV90Zm0oY2MpKSAmCi0JCQkgICB+KGNy eXB0b190Zm1fY3R4X2FsaWdubWVudCgpIC0gMSk7CisJY2MtPmRtcmVxX3N0YXJ0ID0gQUxJR04o Y2MtPmRtcmVxX3N0YXJ0LCBfX2FsaWdub2ZfXyhzdHJ1Y3QgZG1fY3J5cHRfcmVxdWVzdCkpOwor CisJaWYgKGNyeXB0b19hYmxrY2lwaGVyX2FsaWdubWFzayhhbnlfdGZtKGNjKSkgPCBDUllQVE9f TUlOQUxJR04pIHsKKwkJLyogQWxsb2NhdGUgdGhlIHBhZGRpbmcgZXhhY3RseSAqLworCQlpdl9z aXplX3BhZGRpbmcgPSAtKGNjLT5kbXJlcV9zdGFydCArIHNpemVvZihzdHJ1Y3QgZG1fY3J5cHRf cmVxdWVzdCkpCisJCQkJJiBjcnlwdG9fYWJsa2NpcGhlcl9hbGlnbm1hc2soYW55X3RmbShjYykp OworCX0gZWxzZSB7CisJCS8qCisJCSAqIElmIHRoZSBjaXBoZXIgcmVxdWlyZXMgZ3JlYXRlciBh bGlnbm1lbnQgdGhhbiBrbWFsbG9jCisJCSAqIGFsaWdubWVudCwgd2UgZG9uJ3Qga25vdyB0aGUg ZXhhY3QgcG9zaXRpb24gb2YgdGhlCisJCSAqIGluaXRpYWxpemF0aW9uIHZlY3Rvci4gV2UgbXVz dCBhc3N1bWUgd29yc3QgY2FzZS4KKwkJICovCisJCWl2X3NpemVfcGFkZGluZyA9IGNyeXB0b19h YmxrY2lwaGVyX2FsaWdubWFzayhhbnlfdGZtKGNjKSk7CisJfQogCiAJY2MtPnJlcV9wb29sID0g bWVtcG9vbF9jcmVhdGVfa21hbGxvY19wb29sKE1JTl9JT1MsIGNjLT5kbXJlcV9zdGFydCArCi0J CQlzaXplb2Yoc3RydWN0IGRtX2NyeXB0X3JlcXVlc3QpICsgY2MtPml2X3NpemUpOworCQkJc2l6 ZW9mKHN0cnVjdCBkbV9jcnlwdF9yZXF1ZXN0KSArIGl2X3NpemVfcGFkZGluZyArIGNjLT5pdl9z aXplKTsKIAlpZiAoIWNjLT5yZXFfcG9vbCkgewogCQl0aS0+ZXJyb3IgPSAiQ2Fubm90IGFsbG9j YXRlIGNyeXB0IHJlcXVlc3QgbWVtcG9vbCI7CiAJCWdvdG8gYmFkOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvY2FuL2F0OTFfY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYwppbmRl eCAwNDRlYTA2Li5hYjQxMWMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4u YworKysgYi9kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYwpAQCAtMTExNSw3ICsxMTE1LDkgQEAg c3RhdGljIGludCBhdDkxX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgYXQ5 MV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlpbnQgZXJyOwogCi0JY2xrX2VuYWJs ZShwcml2LT5jbGspOworCWVyciA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5jbGspOworCWlm IChlcnIpCisJCXJldHVybiBlcnI7CiAKIAkvKiBjaGVjayBvciBkZXRlcm1pbmUgYW5kIHNldCBi aXR0aW1lICovCiAJZXJyID0gb3Blbl9jYW5kZXYoZGV2KTsKQEAgLTExMzksNyArMTE0MSw3IEBA IHN0YXRpYyBpbnQgYXQ5MV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAgb3V0X2Nsb3Nl OgogCWNsb3NlX2NhbmRldihkZXYpOwogIG91dDoKLQljbGtfZGlzYWJsZShwcml2LT5jbGspOwor CWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jbGspOwogCiAJcmV0dXJuIGVycjsKIH0KQEAg LTExNTYsNyArMTE1OCw3IEBAIHN0YXRpYyBpbnQgYXQ5MV9jbG9zZShzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2KQogCWF0OTFfY2hpcF9zdG9wKGRldiwgQ0FOX1NUQVRFX1NUT1BQRUQpOwogCiAJZnJl ZV9pcnEoZGV2LT5pcnEsIGRldik7Ci0JY2xrX2Rpc2FibGUocHJpdi0+Y2xrKTsKKwljbGtfZGlz YWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKIAogCWNsb3NlX2NhbmRldihkZXYpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9jYW4vZmxleGNhbi5jIGIvZHJpdmVycy9uZXQvY2FuL2ZsZXhj YW4uYwppbmRleCA3YzZiYjVhLi5iMWYzNTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4v ZmxleGNhbi5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuLmMKQEAgLTEyMCw3ICsxMjAs OSBAQAogCShGTEVYQ0FOX0VTUl9FUlJfQlVTIHwgRkxFWENBTl9FU1JfRVJSX1NUQVRFKQogCiAv KiBGTEVYQ0FOIGludGVycnVwdCBmbGFnIHJlZ2lzdGVyIChJRkxBRykgYml0cyAqLwotI2RlZmlu ZSBGTEVYQ0FOX1RYX0JVRl9JRAkJOAorLyogRXJyYXRhIEVSUjAwNTgyOSBzdGVwNzogUmVzZXJ2 ZSBmaXJzdCB2YWxpZCBNQiAqLworI2RlZmluZSBGTEVYQ0FOX1RYX0JVRl9SRVNFUlZFRAkJOAor I2RlZmluZSBGTEVYQ0FOX1RYX0JVRl9JRAkJOQogI2RlZmluZSBGTEVYQ0FOX0lGTEFHX0JVRih4 KQkJQklUKHgpCiAjZGVmaW5lIEZMRVhDQU5fSUZMQUdfUlhfRklGT19PVkVSRkxPVwlCSVQoNykK ICNkZWZpbmUgRkxFWENBTl9JRkxBR19SWF9GSUZPX1dBUk4JQklUKDYpCkBAIC0xMzEsNiArMTMz LDE3IEBACiAKIC8qIEZMRVhDQU4gbWVzc2FnZSBidWZmZXJzICovCiAjZGVmaW5lIEZMRVhDQU5f TUJfQ05UX0NPREUoeCkJCSgoKHgpICYgMHhmKSA8PCAyNCkKKyNkZWZpbmUgRkxFWENBTl9NQl9D T0RFX1JYX0lOQUNUSVZFCSgweDAgPDwgMjQpCisjZGVmaW5lIEZMRVhDQU5fTUJfQ09ERV9SWF9F TVBUWQkoMHg0IDw8IDI0KQorI2RlZmluZSBGTEVYQ0FOX01CX0NPREVfUlhfRlVMTAkJKDB4MiA8 PCAyNCkKKyNkZWZpbmUgRkxFWENBTl9NQl9DT0RFX1JYX09WRVJSUlVOCSgweDYgPDwgMjQpCisj ZGVmaW5lIEZMRVhDQU5fTUJfQ09ERV9SWF9SQU5TV0VSCSgweGEgPDwgMjQpCisKKyNkZWZpbmUg RkxFWENBTl9NQl9DT0RFX1RYX0lOQUNUSVZFCSgweDggPDwgMjQpCisjZGVmaW5lIEZMRVhDQU5f TUJfQ09ERV9UWF9BQk9SVAkoMHg5IDw8IDI0KQorI2RlZmluZSBGTEVYQ0FOX01CX0NPREVfVFhf REFUQQkJKDB4YyA8PCAyNCkKKyNkZWZpbmUgRkxFWENBTl9NQl9DT0RFX1RYX1RBTlNXRVIJKDB4 ZSA8PCAyNCkKKwogI2RlZmluZSBGTEVYQ0FOX01CX0NOVF9TUlIJCUJJVCgyMikKICNkZWZpbmUg RkxFWENBTl9NQl9DTlRfSURFCQlCSVQoMjEpCiAjZGVmaW5lIEZMRVhDQU5fTUJfQ05UX1JUUgkJ QklUKDIwKQpAQCAtMzAyLDYgKzMxNSwxNCBAQCBzdGF0aWMgaW50IGZsZXhjYW5fc3RhcnRfeG1p dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWZsZXhjYW5f d3JpdGUoY2FuX2lkLCAmcmVncy0+Y2FudHhmZ1tGTEVYQ0FOX1RYX0JVRl9JRF0uY2FuX2lkKTsK IAlmbGV4Y2FuX3dyaXRlKGN0cmwsICZyZWdzLT5jYW50eGZnW0ZMRVhDQU5fVFhfQlVGX0lEXS5j YW5fY3RybCk7CiAKKwkvKiBFcnJhdGEgRVJSMDA1ODI5IHN0ZXA4OgorCSAqIFdyaXRlIHR3aWNl IElOQUNUSVZFKDB4OCkgY29kZSB0byBmaXJzdCBNQi4KKwkgKi8KKwlmbGV4Y2FuX3dyaXRlKEZM RVhDQU5fTUJfQ09ERV9UWF9JTkFDVElWRSwKKwkJICAgICAgJnJlZ3MtPmNhbnR4ZmdbRkxFWENB Tl9UWF9CVUZfUkVTRVJWRURdLmNhbl9jdHJsKTsKKwlmbGV4Y2FuX3dyaXRlKEZMRVhDQU5fTUJf Q09ERV9UWF9JTkFDVElWRSwKKwkJICAgICAgJnJlZ3MtPmNhbnR4ZmdbRkxFWENBTl9UWF9CVUZf UkVTRVJWRURdLmNhbl9jdHJsKTsKKwogCWtmcmVlX3NrYihza2IpOwogCiAJLyogdHhfcGFja2V0 cyBpcyBpbmNyZW1lbnRlZCBpbiBmbGV4Y2FuX2lycSAqLwpAQCAtNjExLDYgKzYzMiw5IEBAIHN0 YXRpYyBpcnFyZXR1cm5fdCBmbGV4Y2FuX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJaWYg KHJlZ19pZmxhZzEgJiAoMSA8PCBGTEVYQ0FOX1RYX0JVRl9JRCkpIHsKIAkJLyogdHhfYnl0ZXMg aXMgaW5jcmVtZW50ZWQgaW4gZmxleGNhbl9zdGFydF94bWl0ICovCiAJCXN0YXRzLT50eF9wYWNr ZXRzKys7CisJCS8qIGFmdGVyIHNlbmRpbmcgYSBSVFIgZnJhbWUgbWFpbGJveCBpcyBpbiBSWCBt b2RlICovCisJCWZsZXhjYW5fd3JpdGUoRkxFWENBTl9NQl9DT0RFX1RYX0lOQUNUSVZFLAorCQkJ ICAgICAgJnJlZ3MtPmNhbnR4ZmdbRkxFWENBTl9UWF9CVUZfSURdLmNhbl9jdHJsKTsKIAkJZmxl eGNhbl93cml0ZSgoMSA8PCBGTEVYQ0FOX1RYX0JVRl9JRCksICZyZWdzLT5pZmxhZzEpOwogCQlu ZXRpZl93YWtlX3F1ZXVlKGRldik7CiAJfQpAQCAtNjY4LDYgKzY5Miw3IEBAIHN0YXRpYyBpbnQg ZmxleGNhbl9jaGlwX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IGZsZXhj YW5fcmVncyBfX2lvbWVtICpyZWdzID0gcHJpdi0+YmFzZTsKIAlpbnQgZXJyOwogCXUzMiByZWdf bWNyLCByZWdfY3RybDsKKwlpbnQgaTsKIAogCS8qIGVuYWJsZSBtb2R1bGUgKi8KIAlmbGV4Y2Fu X2NoaXBfZW5hYmxlKHByaXYpOwpAQCAtNzMzLDggKzc1OCwxOCBAQCBzdGF0aWMgaW50IGZsZXhj YW5fY2hpcF9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldl9kYmcoZGV2LT5kZXYu cGFyZW50LCAiJXM6IHdyaXRpbmcgY3RybD0weCUwOHgiLCBfX2Z1bmNfXywgcmVnX2N0cmwpOwog CWZsZXhjYW5fd3JpdGUocmVnX2N0cmwsICZyZWdzLT5jdHJsKTsKIAotCS8qIEFib3J0IGFueSBw ZW5kaW5nIFRYLCBtYXJrIE1haWxib3ggYXMgSU5BQ1RJVkUgKi8KLQlmbGV4Y2FuX3dyaXRlKEZM RVhDQU5fTUJfQ05UX0NPREUoMHg0KSwKKwkvKiBjbGVhciBhbmQgaW52YWxpZGF0ZSBhbGwgbWFp bGJveGVzIGZpcnN0ICovCisJZm9yIChpID0gRkxFWENBTl9UWF9CVUZfSUQ7IGkgPCBBUlJBWV9T SVpFKHJlZ3MtPmNhbnR4ZmcpOyBpKyspIHsKKwkJZmxleGNhbl93cml0ZShGTEVYQ0FOX01CX0NP REVfUlhfSU5BQ1RJVkUsCisJCQkgICAgICAmcmVncy0+Y2FudHhmZ1tpXS5jYW5fY3RybCk7CisJ fQorCisJLyogRXJyYXRhIEVSUjAwNTgyOTogbWFyayBmaXJzdCBUWCBtYWlsYm94IGFzIElOQUNU SVZFICovCisJZmxleGNhbl93cml0ZShGTEVYQ0FOX01CX0NPREVfVFhfSU5BQ1RJVkUsCisJCSAg ICAgICZyZWdzLT5jYW50eGZnW0ZMRVhDQU5fVFhfQlVGX1JFU0VSVkVEXS5jYW5fY3RybCk7CisK KwkvKiBtYXJrIFRYIG1haWxib3ggYXMgSU5BQ1RJVkUgKi8KKwlmbGV4Y2FuX3dyaXRlKEZMRVhD QU5fTUJfQ09ERV9UWF9JTkFDVElWRSwKIAkJICAgICAgJnJlZ3MtPmNhbnR4ZmdbRkxFWENBTl9U WF9CVUZfSURdLmNhbl9jdHJsKTsKIAogCS8qIGFjY2VwdGFuY2UgbWFzay9hY2NlcHRhbmNlIGNv ZGUgKGFjY2VwdCBldmVyeXRoaW5nKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9pd2wtYWduLXJ4b24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkv aXdsLWFnbi1yeG9uLmMKaW5kZXggZDY5NjUzNi4uZDU1MmZhMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtYWduLXJ4b24uYworKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24tcnhvbi5jCkBAIC00NDAsNiArNDQwLDE0IEBAIGludCBp d2xhZ25fY29tbWl0X3J4b24oc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaXdsX3J4b25f Y29udGV4dCAqY3R4KQogCS8qIGFsd2F5cyBnZXQgdGltZXN0YW1wIHdpdGggUnggZnJhbWUgKi8K IAljdHgtPnN0YWdpbmcuZmxhZ3MgfD0gUlhPTl9GTEdfVFNGMkhPU1RfTVNLOwogCisJLyoKKwkg KiBmb3JjZSBDVFMtdG8tc2VsZiBmcmFtZXMgcHJvdGVjdGlvbiBpZiBSVFMtQ1RTIGlzIG5vdCBw cmVmZXJyZWQKKwkgKiBvbmUgYWdncmVnYXRpb24gcHJvdGVjdGlvbiBtZXRob2QKKwkgKi8KKwlp ZiAoIShwcml2LT5jZmctPmh0X3BhcmFtcyAmJgorCSAgICAgIHByaXYtPmNmZy0+aHRfcGFyYW1z LT51c2VfcnRzX2Zvcl9hZ2dyZWdhdGlvbikpCisJCWN0eC0+c3RhZ2luZy5mbGFncyB8PSBSWE9O X0ZMR19TRUxGX0NUU19FTjsKKwogCWlmICgoY3R4LT52aWYgJiYgY3R4LT52aWYtPmJzc19jb25m LnVzZV9zaG9ydF9zbG90KSB8fAogCSAgICAhKGN0eC0+c3RhZ2luZy5mbGFncyAmIFJYT05fRkxH X0JBTkRfMjRHX01TSykpCiAJCWN0eC0+c3RhZ2luZy5mbGFncyB8PSBSWE9OX0ZMR19TSE9SVF9T TE9UX01TSzsKQEAgLTg3Miw2ICs4ODAsMTEgQEAgdm9pZCBpd2xhZ25fYnNzX2luZm9fY2hhbmdl ZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAllbHNlCiAJCWN0eC0+c3RhZ2luZy5mbGFncyAm PSB+UlhPTl9GTEdfVEdHX1BST1RFQ1RfTVNLOwogCisJaWYgKGJzc19jb25mLT51c2VfY3RzX3By b3QpCisJCWN0eC0+c3RhZ2luZy5mbGFncyB8PSBSWE9OX0ZMR19TRUxGX0NUU19FTjsKKwllbHNl CisJCWN0eC0+c3RhZ2luZy5mbGFncyAmPSB+UlhPTl9GTEdfU0VMRl9DVFNfRU47CisKIAltZW1j cHkoY3R4LT5zdGFnaW5nLmJzc2lkX2FkZHIsIGJzc19jb25mLT5ic3NpZCwgRVRIX0FMRU4pOwog CiAJaWYgKHZpZi0+dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fApkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9ydGw4MTkyY3Uvc3cuYyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL3J0bHdpZmkvcnRsODE5MmN1L3N3LmMKaW5kZXggYzE4NDI1My4uMTY0NGIxZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9ydGw4MTkyY3Uvc3cuYworKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3J0bDgxOTJjdS9zdy5jCkBAIC0zMTYsNiAr MzE2LDcgQEAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIHJ0bDgxOTJjX3VzYl9pZHNbXSA9 IHsKIAl7UlRMX1VTQl9ERVZJQ0UoMHgwYmRhLCAweDUwODgsIHJ0bDkyY3VfaGFsX2NmZyl9LCAv KlRoaW5rd2FyZS1DQyZDKi8KIAl7UlRMX1VTQl9ERVZJQ0UoMHgwZGY2LCAweDAwNTIsIHJ0bDky Y3VfaGFsX2NmZyl9LCAvKlNpdGVjb20gLSBFZGltYXgqLwogCXtSVExfVVNCX0RFVklDRSgweDBk ZjYsIDB4MDA1YywgcnRsOTJjdV9oYWxfY2ZnKX0sIC8qU2l0ZWNvbSAtIEVkaW1heCovCisJe1JU TF9VU0JfREVWSUNFKDB4MGRmNiwgMHgwMDcwLCBydGw5MmN1X2hhbF9jZmcpfSwgLypTaXRlY29t IC0gMTUwTiAqLwogCXtSVExfVVNCX0RFVklDRSgweDBkZjYsIDB4MDA3NywgcnRsOTJjdV9oYWxf Y2ZnKX0sIC8qU2l0ZWNvbS1XTEEyMTAwVjIqLwogCXtSVExfVVNCX0RFVklDRSgweDBlYjAsIDB4 OTA3MSwgcnRsOTJjdV9oYWxfY2ZnKX0sIC8qTk8gQnJhbmQgLSBFdG9wKi8KIAl7UlRMX1VTQl9E RVZJQ0UoMHg0ODU2LCAweDAwOTEsIHJ0bDkyY3VfaGFsX2NmZyl9LCAvKk5ldHdlZU4gLSBGZWl4 dW4qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYmlzY3NpLmMgYi9kcml2ZXJzL3Njc2kv bGliaXNjc2kuYwppbmRleCAxNDNiYmU0Li4yNzk0YTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Nj c2kvbGliaXNjc2kuYworKysgYi9kcml2ZXJzL3Njc2kvbGliaXNjc2kuYwpAQCAtNzE4LDExICs3 MTgsMjEgQEAgX19pc2NzaV9jb25uX3NlbmRfcGR1KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBz dHJ1Y3QgaXNjc2lfaGRyICpoZHIsCiAJCQlyZXR1cm4gTlVMTDsKIAkJfQogCisJCWlmIChkYXRh X3NpemUgPiBJU0NTSV9ERUZfTUFYX1JFQ1ZfU0VHX0xFTikgeworCQkJaXNjc2lfY29ubl9wcmlu dGsoS0VSTl9FUlIsIGNvbm4sICJJbnZhbGlkIGJ1ZmZlciBsZW4gb2YgJXUgZm9yIGxvZ2luIHRh c2suIE1heCBsZW4gaXMgJXVcbiIsIGRhdGFfc2l6ZSwgSVNDU0lfREVGX01BWF9SRUNWX1NFR19M RU4pOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwogCQl0YXNrID0gY29ubi0+bG9naW5fdGFzazsK IAl9IGVsc2UgewogCQlpZiAoc2Vzc2lvbi0+c3RhdGUgIT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lO KQogCQkJcmV0dXJuIE5VTEw7CiAKKwkJaWYgKGRhdGFfc2l6ZSAhPSAwKSB7CisJCQlpc2NzaV9j b25uX3ByaW50ayhLRVJOX0VSUiwgY29ubiwgIkNhbiBub3Qgc2VuZCBkYXRhIGJ1ZmZlciBvZiBs ZW4gJXUgZm9yIG9wIDB4JXhcbiIsIGRhdGFfc2l6ZSwgb3Bjb2RlKTsKKwkJCXJldHVybiBOVUxM OworCQl9CisKIAkJQlVHX09OKGNvbm4tPmNfc3RhZ2UgPT0gSVNDU0lfQ09OTl9JTklUSUFMX1NU QUdFKTsKIAkJQlVHX09OKGNvbm4tPmNfc3RhZ2UgPT0gSVNDU0lfQ09OTl9TVE9QUEVEKTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvaXNjc2kvaXNjc2lfdGFyZ2V0LmMgYi9kcml2ZXJz L3RhcmdldC9pc2NzaS9pc2NzaV90YXJnZXQuYwppbmRleCBhYjVkZDE2Li5hZTRlN2RhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3RhcmdldC9pc2NzaS9pc2NzaV90YXJnZXQuYworKysgYi9kcml2ZXJz L3RhcmdldC9pc2NzaS9pc2NzaV90YXJnZXQuYwpAQCAtNDMwNiw2ICs0MzA2LDcgQEAgc3RhdGlj IHZvaWQgaXNjc2l0X2xvZ291dF9wb3N0X2hhbmRsZXJfZGlmZmNpZCgKIHsKIAlzdHJ1Y3QgaXNj c2lfY29ubiAqbF9jb25uOwogCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzID0gY29ubi0+c2Vz czsKKwlib29sIGNvbm5fZm91bmQgPSBmYWxzZTsKIAogCWlmICghc2VzcykKIAkJcmV0dXJuOwpA QCAtNDMxNCwxMiArNDMxNSwxMyBAQCBzdGF0aWMgdm9pZCBpc2NzaXRfbG9nb3V0X3Bvc3RfaGFu ZGxlcl9kaWZmY2lkKAogCWxpc3RfZm9yX2VhY2hfZW50cnkobF9jb25uLCAmc2Vzcy0+c2Vzc19j b25uX2xpc3QsIGNvbm5fbGlzdCkgewogCQlpZiAobF9jb25uLT5jaWQgPT0gY2lkKSB7CiAJCQlp c2NzaXRfaW5jX2Nvbm5fdXNhZ2VfY291bnQobF9jb25uKTsKKwkJCWNvbm5fZm91bmQgPSB0cnVl OwogCQkJYnJlYWs7CiAJCX0KIAl9CiAJc3Bpbl91bmxvY2tfYmgoJnNlc3MtPmNvbm5fbG9jayk7 CiAKLQlpZiAoIWxfY29ubikKKwlpZiAoIWNvbm5fZm91bmQpCiAJCXJldHVybjsKIAogCWlmIChs X2Nvbm4tPnNvY2spCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC9pc2NzaS9pc2NzaV90YXJn ZXRfcGFyYW1ldGVycy5jIGIvZHJpdmVycy90YXJnZXQvaXNjc2kvaXNjc2lfdGFyZ2V0X3BhcmFt ZXRlcnMuYwppbmRleCBkYjMxM2JhLi5lNWY1YmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Rhcmdl dC9pc2NzaS9pc2NzaV90YXJnZXRfcGFyYW1ldGVycy5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L2lz Y3NpL2lzY3NpX3RhcmdldF9wYXJhbWV0ZXJzLmMKQEAgLTU1Miw3ICs1NTIsNyBAQCBpbnQgaXNj c2lfY29weV9wYXJhbV9saXN0KAogCXBhcmFtX2xpc3QgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qg aXNjc2lfcGFyYW1fbGlzdCksIEdGUF9LRVJORUwpOwogCWlmICghcGFyYW1fbGlzdCkgewogCQlw cl9lcnIoIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cnVjdCBpc2NzaV9wYXJhbV9s aXN0LlxuIik7Ci0JCWdvdG8gZXJyX291dDsKKwkJcmV0dXJuIC0xOwogCX0KIAlJTklUX0xJU1Rf SEVBRCgmcGFyYW1fbGlzdC0+cGFyYW1fbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJnBhcmFtX2xp c3QtPmV4dHJhX3Jlc3BvbnNlX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9o dWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKaW5kZXggZjA4NzMyYi4uMTBhZWMxYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1 Yi5jCkBAIC0zNjUxLDkgKzM2NTEsMTAgQEAgc3RhdGljIHZvaWQgaHViX2V2ZW50cyh2b2lkKQog CiAJCWh1YiA9IGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgdXNiX2h1YiwgZXZlbnRfbGlzdCk7CiAJ CWtyZWZfZ2V0KCZodWItPmtyZWYpOworCQloZGV2ID0gaHViLT5oZGV2OworCQl1c2JfZ2V0X2Rl dihoZGV2KTsKIAkJc3Bpbl91bmxvY2tfaXJxKCZodWJfZXZlbnRfbG9jayk7CiAKLQkJaGRldiA9 IGh1Yi0+aGRldjsKIAkJaHViX2RldiA9IGh1Yi0+aW50ZmRldjsKIAkJaW50ZiA9IHRvX3VzYl9p bnRlcmZhY2UoaHViX2Rldik7CiAJCWRldl9kYmcoaHViX2RldiwgInN0YXRlICVkIHBvcnRzICVk IGNoZyAlMDR4IGV2dCAlMDR4XG4iLApAQCAtMzg4OCw2ICszODg5LDcgQEAgc3RhdGljIHZvaWQg aHViX2V2ZW50cyh2b2lkKQogCQl1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoaW50Zik7CiAgbG9v cF9kaXNjb25uZWN0ZWQ6CiAJCXVzYl91bmxvY2tfZGV2aWNlKGhkZXYpOworCQl1c2JfcHV0X2Rl dihoZGV2KTsKIAkJa3JlZl9wdXQoJmh1Yi0+a3JlZiwgaHViX3JlbGVhc2UpOwogCiAgICAgICAg IH0gLyogZW5kIHdoaWxlICgxKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZHdjMy9jb3Jl LmMgYi9kcml2ZXJzL3VzYi9kd2MzL2NvcmUuYwppbmRleCA2MDBkODIzLi4zZDliNTdlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MzL2NvcmUuYworKysgYi9kcml2ZXJzL3VzYi9kd2MzL2Nv cmUuYwpAQCAtNDI3LDkgKzQyNyw2IEBAIHN0YXRpYyBpbnQgX19kZXZleGl0IGR3YzNfcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVz b3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwogCi0JcG1fcnVudGltZV9wdXQoJnBkZXYt PmRldik7Ci0JcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwotCiAJZHdjM19kZWJ1Z2Zz X2V4aXQoZHdjKTsKIAogCWlmIChmZWF0dXJlcyAmIERXQzNfSEFTX1BFUklQSEVSQUwpCkBAIC00 NDAsNiArNDM3LDkgQEAgc3RhdGljIGludCBfX2RldmV4aXQgZHdjM19yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIAlpb3VubWFwKGR3Yy0+cmVncyk7CiAJa2ZyZWUoZHdjLT5t ZW0pOwogCisJcG1fcnVudGltZV9wdXRfc3luYygmcGRldi0+ZGV2KTsKKwlwbV9ydW50aW1lX2Rp c2FibGUoJnBkZXYtPmRldik7CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy91c2IvaG9zdC94aGNpLWh1Yi5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLWh1Yi5jCmluZGV4 IDUxN2NhZGIuLmEzYjU2OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1odWIu YworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktaHViLmMKQEAgLTQ0MCw3ICs0NDAsOCBAQCB2 b2lkIHhoY2lfdGVzdF9hbmRfY2xlYXJfYml0KHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwgX19sZTMy IF9faW9tZW0gKipwb3J0X2FycmF5LAogfQogCiAvKiBVcGRhdGVzIExpbmsgU3RhdHVzIGZvciBz dXBlciBTcGVlZCBwb3J0ICovCi1zdGF0aWMgdm9pZCB4aGNpX2h1Yl9yZXBvcnRfbGlua19zdGF0 ZSh1MzIgKnN0YXR1cywgdTMyIHN0YXR1c19yZWcpCitzdGF0aWMgdm9pZCB4aGNpX2h1Yl9yZXBv cnRfbGlua19zdGF0ZShzdHJ1Y3QgeGhjaV9oY2QgKnhoY2ksCisJCXUzMiAqc3RhdHVzLCB1MzIg c3RhdHVzX3JlZykKIHsKIAl1MzIgcGxzID0gc3RhdHVzX3JlZyAmIFBPUlRfUExTX01BU0s7CiAK QEAgLTQ3OSw3ICs0ODAsOCBAQCBzdGF0aWMgdm9pZCB4aGNpX2h1Yl9yZXBvcnRfbGlua19zdGF0 ZSh1MzIgKnN0YXR1cywgdTMyIHN0YXR1c19yZWcpCiAJCSAqIGluIHdoaWNoIHNvbWV0aW1lcyB0 aGUgcG9ydCBlbnRlcnMgY29tcGxpYW5jZSBtb2RlCiAJCSAqIGNhdXNlZCBieSBhIGRlbGF5IG9u IHRoZSBob3N0LWRldmljZSBuZWdvdGlhdGlvbi4KIAkJICovCi0JCWlmIChwbHMgPT0gVVNCX1NT X1BPUlRfTFNfQ09NUF9NT0QpCisJCWlmICgoeGhjaS0+cXVpcmtzICYgWEhDSV9DT01QX01PREVf UVVJUkspICYmCisJCQkJKHBscyA9PSBVU0JfU1NfUE9SVF9MU19DT01QX01PRCkpCiAJCQlwbHMg fD0gVVNCX1BPUlRfU1RBVF9DT05ORUNUSU9OOwogCX0KIApAQCAtNjU1LDcgKzY1Nyw3IEBAIGlu dCB4aGNpX2h1Yl9jb250cm9sKHN0cnVjdCB1c2JfaGNkICpoY2QsIHUxNiB0eXBlUmVxLCB1MTYg d1ZhbHVlLAogCQl9CiAJCS8qIFVwZGF0ZSBQb3J0IExpbmsgU3RhdGUgZm9yIHN1cGVyIHNwZWVk IHBvcnRzKi8KIAkJaWYgKGhjZC0+c3BlZWQgPT0gSENEX1VTQjMpIHsKLQkJCXhoY2lfaHViX3Jl cG9ydF9saW5rX3N0YXRlKCZzdGF0dXMsIHRlbXApOworCQkJeGhjaV9odWJfcmVwb3J0X2xpbmtf c3RhdGUoeGhjaSwgJnN0YXR1cywgdGVtcCk7CiAJCQkvKgogCQkJICogVmVyaWZ5IGlmIGFsbCBV U0IzIFBvcnRzIEhhdmUgZW50ZXJlZCBVMCBhbHJlYWR5LgogCQkJICogRGVsZXRlIENvbXBsaWFu Y2UgTW9kZSBUaW1lciBpZiBzby4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1t ZW0uYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tZW0uYwppbmRleCA3NDkyMmI5Li4wZjRhNDFk IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktbWVtLmMKKysrIGIvZHJpdmVycy91 c2IvaG9zdC94aGNpLW1lbS5jCkBAIC0xNzIzLDcgKzE3MjMsNyBAQCB2b2lkIHhoY2lfbWVtX2Ns ZWFudXAoc3RydWN0IHhoY2lfaGNkICp4aGNpKQogCX0KIAogCW51bV9wb3J0cyA9IEhDU19NQVhf UE9SVFMoeGhjaS0+aGNzX3BhcmFtczEpOwotCWZvciAoaSA9IDA7IGkgPCBudW1fcG9ydHM7IGkr KykgeworCWZvciAoaSA9IDA7IGkgPCBudW1fcG9ydHMgJiYgeGhjaS0+cmhfYnc7IGkrKykgewog CQlzdHJ1Y3QgeGhjaV9pbnRlcnZhbF9id190YWJsZSAqYnd0ID0gJnhoY2ktPnJoX2J3W2ldLmJ3 X3RhYmxlOwogCQlmb3IgKGogPSAwOyBqIDwgWEhDSV9NQVhfSU5URVJWQUw7IGorKykgewogCQkJ c3RydWN0IGxpc3RfaGVhZCAqZXAgPSAmYnd0LT5pbnRlcnZhbF9id1tqXS5lbmRwb2ludHM7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3Nl cmlhbC9mdGRpX3Npby5jCmluZGV4IDBkMzRmODUuLjhmZTVjMTMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Np by5jCkBAIC03NTIsNiArNzUyLDcgQEAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3Rh YmxlX2NvbWJpbmVkIFtdID0gewogCXsgVVNCX0RFVklDRShGVERJX1ZJRCwgRlRESV9ORElfQVVS T1JBX1NDVV9QSUQpLAogCQkuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJmZ0ZGlfTkRJ X2RldmljZV9xdWlyayB9LAogCXsgVVNCX0RFVklDRShURUxMRFVTX1ZJRCwgVEVMTERVU19URUxM U1RJQ0tfUElEKSB9LAorCXsgVVNCX0RFVklDRShOT1ZJVFVTX1ZJRCwgTk9WSVRVU19CT05PX0Vf UElEKSB9LAogCXsgVVNCX0RFVklDRShSVFNZU1RFTVNfVklELCBSVFNZU1RFTVNfVVNCX1MwM19Q SUQpIH0sCiAJeyBVU0JfREVWSUNFKFJUU1lTVEVNU19WSUQsIFJUU1lTVEVNU19VU0JfNTlfUElE KSB9LAogCXsgVVNCX0RFVklDRShSVFNZU1RFTVNfVklELCBSVFNZU1RFTVNfVVNCXzU3QV9QSUQp IH0sCkBAIC05NjEsNiArOTYyLDggQEAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3Rh YmxlX2NvbWJpbmVkIFtdID0gewogCXsgVVNCX0RFVklDRShCUkFJTkJPWEVTX1ZJRCwgQlJBSU5C T1hFU19VU184NDJfNF9QSUQpIH0sCiAJLyogZWtleSBEZXZpY2VzICovCiAJeyBVU0JfREVWSUNF KEZURElfVklELCBGVERJX0VLRVlfQ09OVl9VU0JfUElEKSB9LAorCS8qIEdFIEhlYWx0aGNhcmUg ZGV2aWNlcyAqLworCXsgVVNCX0RFVklDRShHRV9IRUFMVEhDQVJFX1ZJRCwgR0VfSEVBTFRIQ0FS RV9ORU1PX1RSQUNLRVJfUElEKSB9LAogCXsgfSwJCQkJCS8qIE9wdGlvbmFsIHBhcmFtZXRlciBl bnRyeSAqLwogCXsgfQkJCQkJLyogVGVybWluYXRpbmcgZW50cnkgKi8KIH07CmRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwv ZnRkaV9zaW9faWRzLmgKaW5kZXggY2JjYjFlNi4uYmQ1MDlkZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2Ivc2VyaWFsL2Z0ZGlfc2lvX2lkcy5oCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRp X3Npb19pZHMuaApAQCAtODMxLDYgKzgzMSwxMiBAQAogI2RlZmluZSBURUxMRFVTX1RFTExTVElD S19QSUQJCTB4MEMzMAkvKiBSRiBjb250cm9sIGRvbmdsZSA0MzMgTUh6IHVzaW5nIEZUMjMyUkwg Ki8KIAogLyoKKyAqIE5PVklUVVMgcHJpbnRlcnMKKyAqLworI2RlZmluZSBOT1ZJVFVTX1ZJRAkJ CTB4MWEyOAorI2RlZmluZSBOT1ZJVFVTX0JPTk9fRV9QSUQJCTB4NjAxMAorCisvKgogICogUlQg U3lzdGVtcyBwcm9ncmFtbWluZyBjYWJsZXMgZm9yIHZhcmlvdXMgaGFtIHJhZGlvcwogICovCiAj ZGVmaW5lIFJUU1lTVEVNU19WSUQJCTB4MjEwMAkvKiBWZW5kb3IgSUQgKi8KQEAgLTEzNzksMyAr MTM4NSw5IEBACiAgKiBla2V5IGJpb21ldHJpYyBzeXN0ZW1zIEdtYkggKGh0dHA6Ly9la2V5Lm5l dC8pCiAgKi8KICNkZWZpbmUgRlRESV9FS0VZX0NPTlZfVVNCX1BJRAkJMHhDQjA4CS8qIENvbnZl cnRlciBVU0IgKi8KKworLyoKKyAqIEdFIEhlYWx0aGNhcmUgZGV2aWNlcworICovCisjZGVmaW5l IEdFX0hFQUxUSENBUkVfVklECQkweDE5MDEKKyNkZWZpbmUgR0VfSEVBTFRIQ0FSRV9ORU1PX1RS QUNLRVJfUElECTB4MDAxNQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJyYS5j IGIvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJyYS5jCmluZGV4IDBkMjZhYjYuLmRiOWU1NGEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYworKysgYi9kcml2ZXJzL3VzYi9z ZXJpYWwvc2llcnJhLmMKQEAgLTI5NiwxNCArMjk2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDExOTksIDB4NjhB MiksICAgLyogU2llcnJhIFdpcmVsZXNzIE1DNzd4eCBpbiBRTUkgbW9kZSAqLwogCSAgLmRyaXZl cl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZkaXJlY3RfaXBfaW50ZXJmYWNlX2JsYWNrbGlzdAog CX0sCi0JeyBVU0JfREVWSUNFKDB4MTE5OSwgMHg2OEEzKSwgCS8qIFNpZXJyYSBXaXJlbGVzcyBE aXJlY3QgSVAgbW9kZW1zICovCisJLyogU2llcnJhIFdpcmVsZXNzIERpcmVjdCBJUCBtb2RlbXMg Ki8KKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTE5OSwgMHg2OEEzLCAweEZG LCAweEZGLCAweEZGKSwKKwkgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmZGlyZWN0 X2lwX2ludGVyZmFjZV9ibGFja2xpc3QKKwl9LAorCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNF X0lORk8oMHgxMTk5LCAweDY4QUEsIDB4RkYsIDB4RkYsIDB4RkYpLAogCSAgLmRyaXZlcl9pbmZv ID0gKGtlcm5lbF91bG9uZ190KSZkaXJlY3RfaXBfaW50ZXJmYWNlX2JsYWNrbGlzdAogCX0sCiAJ LyogQVQmVCBEaXJlY3QgSVAgTFRFIG1vZGVtcyAqLwogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJG QUNFX0lORk8oMHgwRjNELCAweDY4QUEsIDB4RkYsIDB4RkYsIDB4RkYpLAogCSAgLmRyaXZlcl9p bmZvID0gKGtlcm5lbF91bG9uZ190KSZkaXJlY3RfaXBfaW50ZXJmYWNlX2JsYWNrbGlzdAogCX0s Ci0JeyBVU0JfREVWSUNFKDB4MGYzZCwgMHg2OEEzKSwgCS8qIEFpcnByaW1lL1NpZXJyYSBXaXJl bGVzcyBEaXJlY3QgSVAgbW9kZW1zICovCisJLyogQWlycHJpbWUvU2llcnJhIFdpcmVsZXNzIERp cmVjdCBJUCBtb2RlbXMgKi8KKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MEYz RCwgMHg2OEEzLCAweEZGLCAweEZGLCAweEZGKSwKIAkgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxf dWxvbmdfdCkmZGlyZWN0X2lwX2ludGVyZmFjZV9ibGFja2xpc3QKIAl9LAogCmRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oIGIvZHJpdmVycy91c2Ivc3RvcmFn ZS91bnVzdWFsX2RldnMuaAppbmRleCBlNTg4YTExLi5hNmM0YzdkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uv dW51c3VhbF9kZXZzLmgKQEAgLTkzLDYgKzkzLDEyIEBAIFVOVVNVQUxfREVWKCAgMHgwM2YwLCAw eDQwMDIsIDB4MDAwMSwgMHgwMDAxLAogCQkiUGhvdG9TbWFydCBSNzA3IiwKIAkJVVNCX1NDX0RF VklDRSwgVVNCX1BSX0RFVklDRSwgTlVMTCwgVVNfRkxfRklYX0NBUEFDSVRZKSwKIAorVU5VU1VB TF9ERVYoICAweDAzZjMsIDB4MDAwMSwgMHgwMDAwLCAweDk5OTksCisJCSJBZGFwdGVjIiwKKwkJ IlVTQkNvbm5lY3QgMjAwMCIsCisJCVVTQl9TQ19ERVZJQ0UsIFVTQl9QUl9ERVZJQ0UsIHVzYl9z dG9yX2V1c2NzaV9pbml0LAorCQlVU19GTF9TQ01fTVVMVF9UQVJHICksCisKIC8qIFJlcG9ydGVk IGJ5IFNlYmFzdGlhbiBLYXBmZXIgPHNlYmFzdGlhbl9rYXBmZXJAZ214Lm5ldD4KICAqIGFuZCBP bGFmIEhlcmluZyA8b2xoQHN1c2UuZGU+IChkaWZmZXJlbnQgYmNkJ3MsIHNhbWUgdmVuZG9yL3By b2R1Y3QpCiAgKiBmb3IgVVNCIGZsb3BwaWVzIHRoYXQgbmVlZCB0aGUgU0lOR0xFX0xVTiBlbmZv cmNlbWVudC4KQEAgLTczMyw2ICs3MzksMTIgQEAgVU5VU1VBTF9ERVYoICAweDA1OWIsIDB4MDAw MSwgMHgwMTAwLCAweDAxMDAsCiAJCVVTQl9TQ19ERVZJQ0UsIFVTQl9QUl9ERVZJQ0UsIE5VTEws CiAJCVVTX0ZMX1NJTkdMRV9MVU4gKSwKIAorVU5VU1VBTF9ERVYoICAweDA1OWIsIDB4MDA0MCwg MHgwMTAwLCAweDAxMDAsCisJCSJJb21lZ2EiLAorCQkiSmF6IFVTQiBBZGFwdGVyIiwKKwkJVVNC X1NDX0RFVklDRSwgVVNCX1BSX0RFVklDRSwgTlVMTCwKKwkJVVNfRkxfU0lOR0xFX0xVTiApLAor CiAvKiBSZXBvcnRlZCBieSA8SGVuZHJ5ay5QZmVpZmZlckBnbXguZGU+ICovCiBVTlVTVUFMX0RF ViggIDB4MDU5ZiwgMHgwNjQzLCAweDAwMDAsIDB4MDAwMCwKIAkJIkxhQ2llIiwKQEAgLTExMDUs NiArMTExNywxOCBAQCBVTlVTVUFMX0RFViggIDB4MDg1MSwgMHgxNTQzLCAweDAyMDAsIDB4MDIw MCwKIAkJVVNCX1NDX0RFVklDRSwgVVNCX1BSX0RFVklDRSwgTlVMTCwKIAkJVVNfRkxfTk9UX0xP Q0tBQkxFKSwKIAorVU5VU1VBTF9ERVYoICAweDA4NWEsIDB4MDAyNiwgMHgwMTAwLCAweDAxMzMs CisJCSJYaXJjb20iLAorCQkiUG9ydEdlYXIgVVNCLVNDU0kgKE1hYyBVU0IgRG9jaykiLAorCQlV U0JfU0NfREVWSUNFLCBVU0JfUFJfREVWSUNFLCB1c2Jfc3Rvcl9ldXNjc2lfaW5pdCwKKwkJVVNf RkxfU0NNX01VTFRfVEFSRyApLAorCitVTlVTVUFMX0RFViggIDB4MDg1YSwgMHgwMDI4LCAweDAx MDAsIDB4MDEzMywKKwkJIlhpcmNvbSIsCisJCSJQb3J0R2VhciBVU0IgdG8gU0NTSSBDb252ZXJ0 ZXIiLAorCQlVU0JfU0NfREVWSUNFLCBVU0JfUFJfREVWSUNFLCB1c2Jfc3Rvcl9ldXNjc2lfaW5p dCwKKwkJVVNfRkxfU0NNX01VTFRfVEFSRyApLAorCiAvKiBTdWJtaXR0ZWQgYnkgSmFuIERlIEx1 eWNrIDxsa21sQGtjb3JlLm9yZz4gKi8KIFVOVVNVQUxfREVWKCAgMHgwOGJkLCAweDExMDAsIDB4 MDAwMCwgMHgwMDAwLAogCQkiQ0lUSVpFTiIsCkBAIC0xOTMyLDYgKzE5NTYsMTQgQEAgVU5VU1VB TF9ERVYoICAweDE1MmQsIDB4MjMyOSwgMHgwMTAwLCAweDAxMDAsCiAJCVVTQl9TQ19ERVZJQ0Us IFVTQl9QUl9ERVZJQ0UsIE5VTEwsCiAJCVVTX0ZMX0lHTk9SRV9SRVNJRFVFIHwgVVNfRkxfU0FO RV9TRU5TRSApLAogCisvKiBFbnRyZWdhIFRlY2hub2xvZ2llcyBVMS1TQzI1IChsYXRlciBYaXJj b20gUG9ydEdlYXIgUEdTQ1NJKQorICogYW5kIE1hYyBVU0IgRG9jayBVU0ItU0NTSSAqLworVU5V U1VBTF9ERVYoICAweDE2NDUsIDB4MDAwNywgMHgwMTAwLCAweDAxMzMsCisJCSJFbnRyZWdhIFRl Y2hub2xvZ2llcyIsCisJCSJVU0IgdG8gU0NTSSBDb252ZXJ0ZXIiLAorCQlVU0JfU0NfREVWSUNF LCBVU0JfUFJfREVWSUNFLCB1c2Jfc3Rvcl9ldXNjc2lfaW5pdCwKKwkJVVNfRkxfU0NNX01VTFRf VEFSRyApLAorCiAvKiBSZXBvcnRlZCBieSBSb2JlcnQgU2NoZWRlbCA8ci5zY2hlZGVsQHlhaG9v LmRlPgogICogTm90ZTogdGhpcyBpcyBhICdzdXBlciB0b3AnIGRldmljZSBsaWtlIHRoZSBhYm92 ZSAxNGNkLzY2MDAgZGV2aWNlICovCiBVTlVTVUFMX0RFViggIDB4MTY1MiwgMHg2NjAwLCAweDAy MDEsIDB4MDIwMSwKQEAgLTE5NDcsNiArMTk3OSwxMiBAQCBVTlVTVUFMX0RFViggIDB4MTc3Ziwg MHgwNDAwLCAweDAwMDAsIDB4MDAwMCwKIAkJVVNCX1NDX0RFVklDRSwgVVNCX1BSX0RFVklDRSwg TlVMTCwKIAkJVVNfRkxfQlVMS19JR05PUkVfVEFHIHwgVVNfRkxfTUFYX1NFQ1RPUlNfNjQgKSwK IAorVU5VU1VBTF9ERVYoICAweDE4MjIsIDB4MDAwMSwgMHgwMDAwLCAweDk5OTksCisJCSJBcmlz dG9uIFRlY2hub2xvZ2llcyIsCisJCSJpQ29ubmVjdCBVU0IgdG8gU0NTSSBhZGFwdGVyIiwKKwkJ VVNCX1NDX0RFVklDRSwgVVNCX1BSX0RFVklDRSwgdXNiX3N0b3JfZXVzY3NpX2luaXQsCisJCVVT X0ZMX1NDTV9NVUxUX1RBUkcgKSwKKwogLyogUmVwb3J0ZWQgYnkgSGFucyBkZSBHb2VkZSA8aGRl Z29lZGVAcmVkaGF0LmNvbT4KICAqIFRoZXNlIEFwcG90ZWNoIGNvbnRyb2xsZXJzIGFyZSBmb3Vu ZCBpbiBQaWN0dXJlIEZyYW1lcywgdGhleSBwcm92aWRlIGEKICAqIChidWdneSkgZW11bGF0aW9u IG9mIGEgY2Ryb20gZHJpdmUgd2hpY2ggY29udGFpbnMgdGhlIHdpbmRvd3Mgc29mdHdhcmUKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXdiL2xjLWRldi5jIGIvZHJpdmVycy91d2IvbGMtZGV2LmMKaW5k ZXggNTI0MWYxZC4uM2M5ZTkyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvbGMtZGV2LmMKKysr IGIvZHJpdmVycy91d2IvbGMtZGV2LmMKQEAgLTQ0MSwxNiArNDQxLDE5IEBAIHZvaWQgdXdiZF9k ZXZfb25haXIoc3RydWN0IHV3Yl9yYyAqcmMsIHN0cnVjdCB1d2JfYmVjYV9lICpiY2UpCiAJdXdi X2Rldi0+bWFjX2FkZHIgPSAqYmNlLT5tYWNfYWRkcjsKIAl1d2JfZGV2LT5kZXZfYWRkciA9IGJj ZS0+ZGV2X2FkZHI7CiAJZGV2X3NldF9uYW1lKCZ1d2JfZGV2LT5kZXYsIG1hY2J1Zik7CisKKwkv KiBwbHVnIHRoZSBiZWFjb24gY2FjaGUgKi8KKwliY2UtPnV3Yl9kZXYgPSB1d2JfZGV2OworCXV3 Yl9kZXYtPmJjZSA9IGJjZTsKKwl1d2JfYmNlX2dldChiY2UpOwkJLyogcmVsZWFzZWQgaW4gdXdi X2Rldl9zeXNfcmVsZWFzZSgpICovCisKIAlyZXN1bHQgPSB1d2JfZGV2X2FkZCh1d2JfZGV2LCAm cmMtPnV3Yl9kZXYuZGV2LCByYyk7CiAJaWYgKHJlc3VsdCA8IDApIHsKIAkJZGV2X2VycihkZXYs ICJuZXcgZGV2aWNlICVzOiBjYW5ub3QgaW5zdGFudGlhdGUgZGV2aWNlXG4iLAogCQkJbWFjYnVm KTsKIAkJZ290byBlcnJvcl9kZXZfYWRkOwogCX0KLQkvKiBwbHVnIHRoZSBiZWFjb24gY2FjaGUg Ki8KLQliY2UtPnV3Yl9kZXYgPSB1d2JfZGV2OwotCXV3Yl9kZXYtPmJjZSA9IGJjZTsKLQl1d2Jf YmNlX2dldChiY2UpOwkJLyogcmVsZWFzZWQgaW4gdXdiX2Rldl9zeXNfcmVsZWFzZSgpICovCisK IAlkZXZfaW5mbyhkZXYsICJ1d2IgZGV2aWNlIChtYWMgJXMgZGV2ICVzKSBjb25uZWN0ZWQgdG8g JXMgJXNcbiIsCiAJCSBtYWNidWYsIGRldmJ1ZiwgcmMtPnV3Yl9kZXYuZGV2LnBhcmVudC0+YnVz LT5uYW1lLAogCQkgZGV2X25hbWUocmMtPnV3Yl9kZXYuZGV2LnBhcmVudCkpOwpAQCAtNDU4LDYg KzQ2MSw4IEBAIHZvaWQgdXdiZF9kZXZfb25haXIoc3RydWN0IHV3Yl9yYyAqcmMsIHN0cnVjdCB1 d2JfYmVjYV9lICpiY2UpCiAJcmV0dXJuOwogCiBlcnJvcl9kZXZfYWRkOgorCWJjZS0+dXdiX2Rl diA9IE5VTEw7CisJdXdiX2JjZV9wdXQoYmNlKTsKIAlrZnJlZSh1d2JfZGV2KTsKIAlyZXR1cm47 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9tYW5hZ2UuYyBiL2RyaXZlcnMveGVuL21hbmFn ZS5jCmluZGV4IGM4YWY3ZTUuLjY1NDg0MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL21hbmFn ZS5jCisrKyBiL2RyaXZlcnMveGVuL21hbmFnZS5jCkBAIC0xMDgsMTYgKzEwOCwxMSBAQCBzdGF0 aWMgdm9pZCBkb19zdXNwZW5kKHZvaWQpCiAKIAlzaHV0dGluZ19kb3duID0gU0hVVERPV05fU1VT UEVORDsKIAotI2lmZGVmIENPTkZJR19QUkVFTVBUCi0JLyogSWYgdGhlIGtlcm5lbCBpcyBwcmVl bXB0aWJsZSwgd2UgbmVlZCB0byBmcmVlemUgYWxsIHRoZSBwcm9jZXNzZXMKLQkgICB0byBwcmV2 ZW50IHRoZW0gZnJvbSBiZWluZyBpbiB0aGUgbWlkZGxlIG9mIGEgcGFnZXRhYmxlIHVwZGF0ZQot CSAgIGR1cmluZyBzdXNwZW5kLiAqLwogCWVyciA9IGZyZWV6ZV9wcm9jZXNzZXMoKTsKIAlpZiAo ZXJyKSB7CiAJCXByaW50ayhLRVJOX0VSUiAieGVuIHN1c3BlbmQ6IGZyZWV6ZSBmYWlsZWQgJWRc biIsIGVycik7CiAJCWdvdG8gb3V0OwogCX0KLSNlbmRpZgogCiAJZXJyID0gZHBtX3N1c3BlbmRf c3RhcnQoUE1TR19GUkVFWkUpOwogCWlmIChlcnIpIHsKQEAgLTE3MiwxMCArMTY3LDggQEAgb3V0 X3Jlc3VtZToKIAljbG9ja193YXNfc2V0KCk7CiAKIG91dF90aGF3OgotI2lmZGVmIENPTkZJR19Q UkVFTVBUCiAJdGhhd19wcm9jZXNzZXMoKTsKIG91dDoKLSNlbmRpZgogCXNodXR0aW5nX2Rvd24g PSBTSFVURE9XTl9JTlZBTElEOwogfQogI2VuZGlmCS8qIENPTkZJR19ISUJFUk5BVEVfQ0FMTEJB Q0tTICovCmRpZmYgLS1naXQgYS9mcy9haW8uYyBiL2ZzL2Fpby5jCmluZGV4IDhjZGQ4ZWEuLjlh Y2ZkMDcgMTAwNjQ0Ci0tLSBhL2ZzL2Fpby5jCisrKyBiL2ZzL2Fpby5jCkBAIC0xMTAyLDYgKzEx MDIsMTMgQEAgc3RhdGljIGludCBhaW9fcmVhZF9ldnQoc3RydWN0IGtpb2N0eCAqaW9jdHgsIHN0 cnVjdCBpb19ldmVudCAqZW50KQogCWhlYWQgPSByaW5nLT5oZWFkICUgaW5mby0+bnI7CiAJaWYg KGhlYWQgIT0gcmluZy0+dGFpbCkgewogCQlzdHJ1Y3QgaW9fZXZlbnQgKmV2cCA9IGFpb19yaW5n X2V2ZW50KGluZm8sIGhlYWQsIEtNX1VTRVIxKTsKKworCQkvKgorCQkgKiBFbnN1cmUgdGhhdCBv bmNlIHdlJ3ZlIHJlYWQgdGhlIGN1cnJlbnQgdGFpbCBwb2ludGVyLCB0aGF0CisJCSAqIHdlIGFs c28gc2VlIHRoZSBldmVudHMgdGhhdCB3ZXJlIHN0b3JlZCB1cCB0byB0aGUgdGFpbC4KKwkJICov CisJCXNtcF9ybWIoKTsKKwogCQkqZW50ID0gKmV2cDsKIAkJaGVhZCA9IChoZWFkICsgMSkgJSBp bmZvLT5ucjsKIAkJc21wX21iKCk7IC8qIGZpbmlzaCByZWFkaW5nIHRoZSBldmVudCBiZWZvcmUg dXBkYXRuZyB0aGUgaGVhZCAqLwpkaWZmIC0tZ2l0IGEvZnMvYnVmZmVyLmMgYi9mcy9idWZmZXIu YwppbmRleCA1ZjRiZGUyLi41OTQ5NmU3IDEwMDY0NAotLS0gYS9mcy9idWZmZXIuYworKysgYi9m cy9idWZmZXIuYwpAQCAtMTAyMSw3ICsxMDIxLDggQEAgZ3Jvd19kZXZfcGFnZShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBibG9jaywKIAkJYmggPSBwYWdlX2J1ZmZlcnMocGFn ZSk7CiAJCWlmIChiaC0+Yl9zaXplID09IHNpemUpIHsKIAkJCWVuZF9ibG9jayA9IGluaXRfcGFn ZV9idWZmZXJzKHBhZ2UsIGJkZXYsCi0JCQkJCQlpbmRleCA8PCBzaXplYml0cywgc2l6ZSk7CisJ CQkJCQkoc2VjdG9yX3QpaW5kZXggPDwgc2l6ZWJpdHMsCisJCQkJCQlzaXplKTsKIAkJCWdvdG8g ZG9uZTsKIAkJfQogCQlpZiAoIXRyeV90b19mcmVlX2J1ZmZlcnMocGFnZSkpCkBAIC0xMDQyLDcg KzEwNDMsOCBAQCBncm93X2Rldl9wYWdlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rv cl90IGJsb2NrLAogCSAqLwogCXNwaW5fbG9jaygmaW5vZGUtPmlfbWFwcGluZy0+cHJpdmF0ZV9s b2NrKTsKIAlsaW5rX2Rldl9idWZmZXJzKHBhZ2UsIGJoKTsKLQllbmRfYmxvY2sgPSBpbml0X3Bh Z2VfYnVmZmVycyhwYWdlLCBiZGV2LCBpbmRleCA8PCBzaXplYml0cywgc2l6ZSk7CisJZW5kX2Js b2NrID0gaW5pdF9wYWdlX2J1ZmZlcnMocGFnZSwgYmRldiwgKHNlY3Rvcl90KWluZGV4IDw8IHNp emViaXRzLAorCQkJc2l6ZSk7CiAJc3Bpbl91bmxvY2soJmlub2RlLT5pX21hcHBpbmctPnByaXZh dGVfbG9jayk7CiBkb25lOgogCXJldCA9IChibG9jayA8IGVuZF9ibG9jaykgPyAxIDogLUVOWElP OwpkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9pbm9kZS5jIGIvZnMvZXh0Mi9pbm9kZS5jCmluZGV4IDkx YTY5NDUuLjVhNDViOGYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIvaW5vZGUuYworKysgYi9mcy9leHQy L2lub2RlLmMKQEAgLTYxOSw2ICs2MTksOCBAQCBzdGF0aWMgaW50IGV4dDJfZ2V0X2Jsb2Nrcyhz dHJ1Y3QgaW5vZGUgKmlub2RlLAogCWludCBjb3VudCA9IDA7CiAJZXh0Ml9mc2Jsa190IGZpcnN0 X2Jsb2NrID0gMDsKIAorCUJVR19PTihtYXhibG9ja3MgPT0gMCk7CisKIAlkZXB0aCA9IGV4dDJf YmxvY2tfdG9fcGF0aChpbm9kZSxpYmxvY2ssb2Zmc2V0cywmYmxvY2tzX3RvX2JvdW5kYXJ5KTsK IAogCWlmIChkZXB0aCA9PSAwKQpkaWZmIC0tZ2l0IGEvZnMvZXh0Mi94aXAuYyBiL2ZzL2V4dDIv eGlwLmMKaW5kZXggMzIyYTU2Yi4uYWYwMTRiYiAxMDA2NDQKLS0tIGEvZnMvZXh0Mi94aXAuYwor KysgYi9mcy9leHQyL3hpcC5jCkBAIC0zNyw2ICszNyw3IEBAIF9fZXh0Ml9nZXRfYmxvY2soc3Ry dWN0IGlub2RlICppbm9kZSwgcGdvZmZfdCBwZ29mZiwgaW50IGNyZWF0ZSwKIAlpbnQgcmM7CiAK IAltZW1zZXQoJnRtcCwgMCwgc2l6ZW9mKHN0cnVjdCBidWZmZXJfaGVhZCkpOworCXRtcC5iX3Np emUgPSAxIDw8IGlub2RlLT5pX2Jsa2JpdHM7CiAJcmMgPSBleHQyX2dldF9ibG9jayhpbm9kZSwg cGdvZmYsICZ0bXAsIGNyZWF0ZSk7CiAJKnJlc3VsdCA9IHRtcC5iX2Jsb2NrbnI7CiAKZGlmZiAt LWdpdCBhL2ZzL2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggODE4YjQz ZS4uNWJhYTdiYSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0NC9t YmFsbG9jLmMKQEAgLTEzMTIsNiArMTMxMiw4IEBAIHN0YXRpYyB2b2lkIG1iX2ZyZWVfYmxvY2tz KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2J1ZGR5ICplNGIsCiAJdm9pZCAqYnVk ZHkyOwogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBlNGItPmJkX3NiOwogCisJaWYgKFdBUk5f T04oY291bnQgPT0gMCkpCisJCXJldHVybjsKIAlCVUdfT04oZmlyc3QgKyBjb3VudCA+IChzYi0+ c19ibG9ja3NpemUgPDwgMykpOwogCWFzc2VydF9zcGluX2xvY2tlZChleHQ0X2dyb3VwX2xvY2tf cHRyKHNiLCBlNGItPmJkX2dyb3VwKSk7CiAJbWJfY2hlY2tfYnVkZHkoZTRiKTsKQEAgLTMxMzIs NiArMzEzNCw4IEBAIHN0YXRpYyB2b2lkIGV4dDRfZGlzY2FyZF9hbGxvY2F0ZWRfYmxvY2tzKHN0 cnVjdCBleHQ0X2FsbG9jYXRpb25fY29udGV4dCAqYWMpCiAJaW50IGVycjsKIAogCWlmIChwYSA9 PSBOVUxMKSB7CisJCWlmIChhYy0+YWNfZl9leC5mZV9sZW4gPT0gMCkKKwkJCXJldHVybjsKIAkJ ZXJyID0gZXh0NF9tYl9sb2FkX2J1ZGR5KGFjLT5hY19zYiwgYWMtPmFjX2ZfZXguZmVfZ3JvdXAs ICZlNGIpOwogCQlpZiAoZXJyKSB7CiAJCQkvKgpAQCAtMzE0Niw2ICszMTUwLDcgQEAgc3RhdGlj IHZvaWQgZXh0NF9kaXNjYXJkX2FsbG9jYXRlZF9ibG9ja3Moc3RydWN0IGV4dDRfYWxsb2NhdGlv bl9jb250ZXh0ICphYykKIAkJbWJfZnJlZV9ibG9ja3MoYWMtPmFjX2lub2RlLCAmZTRiLCBhYy0+ YWNfZl9leC5mZV9zdGFydCwKIAkJCSAgICAgICBhYy0+YWNfZl9leC5mZV9sZW4pOwogCQlleHQ0 X3VubG9ja19ncm91cChhYy0+YWNfc2IsIGFjLT5hY19mX2V4LmZlX2dyb3VwKTsKKwkJZXh0NF9t Yl91bmxvYWRfYnVkZHkoJmU0Yik7CiAJCXJldHVybjsKIAl9CiAJaWYgKHBhLT5wYV90eXBlID09 IE1CX0lOT0RFX1BBKQpkaWZmIC0tZ2l0IGEvZnMvbmFtZWkuYyBiL2ZzL25hbWVpLmMKaW5kZXgg OTY4MGNlZi4uZGVhMmRhYiAxMDA2NDQKLS0tIGEvZnMvbmFtZWkuYworKysgYi9mcy9uYW1laS5j CkBAIC01NTQsMjQgKzU1NCwyMiBAQCBzdGF0aWMgaW50IGNvbXBsZXRlX3dhbGsoc3RydWN0IG5h bWVpZGF0YSAqbmQpCiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBzZXRfcm9vdChzdHJ1 Y3QgbmFtZWlkYXRhICpuZCkKIHsKLQlpZiAoIW5kLT5yb290Lm1udCkKLQkJZ2V0X2ZzX3Jvb3Qo Y3VycmVudC0+ZnMsICZuZC0+cm9vdCk7CisJZ2V0X2ZzX3Jvb3QoY3VycmVudC0+ZnMsICZuZC0+ cm9vdCk7CiB9CiAKIHN0YXRpYyBpbnQgbGlua19wYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1 Y3QgbmFtZWlkYXRhICopOwogCi1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgc2V0X3Jvb3Rf cmN1KHN0cnVjdCBuYW1laWRhdGEgKm5kKQorc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25l ZCBzZXRfcm9vdF9yY3Uoc3RydWN0IG5hbWVpZGF0YSAqbmQpCiB7Ci0JaWYgKCFuZC0+cm9vdC5t bnQpIHsKLQkJc3RydWN0IGZzX3N0cnVjdCAqZnMgPSBjdXJyZW50LT5mczsKLQkJdW5zaWduZWQg c2VxOworCXN0cnVjdCBmc19zdHJ1Y3QgKmZzID0gY3VycmVudC0+ZnM7CisJdW5zaWduZWQgc2Vx LCByZXM7CiAKLQkJZG8gewotCQkJc2VxID0gcmVhZF9zZXFjb3VudF9iZWdpbigmZnMtPnNlcSk7 Ci0JCQluZC0+cm9vdCA9IGZzLT5yb290OwotCQkJbmQtPnNlcSA9IF9fcmVhZF9zZXFjb3VudF9i ZWdpbigmbmQtPnJvb3QuZGVudHJ5LT5kX3NlcSk7Ci0JCX0gd2hpbGUgKHJlYWRfc2VxY291bnRf cmV0cnkoJmZzLT5zZXEsIHNlcSkpOwotCX0KKwlkbyB7CisJCXNlcSA9IHJlYWRfc2VxY291bnRf YmVnaW4oJmZzLT5zZXEpOworCQluZC0+cm9vdCA9IGZzLT5yb290OworCQlyZXMgPSBfX3JlYWRf c2VxY291bnRfYmVnaW4oJm5kLT5yb290LmRlbnRyeS0+ZF9zZXEpOworCX0gd2hpbGUgKHJlYWRf c2VxY291bnRfcmV0cnkoJmZzLT5zZXEsIHNlcSkpOworCXJldHVybiByZXM7CiB9CiAKIHN0YXRp YyBfX2Fsd2F5c19pbmxpbmUgaW50IF9fdmZzX2ZvbGxvd19saW5rKHN0cnVjdCBuYW1laWRhdGEg Km5kLCBjb25zdCBjaGFyICpsaW5rKQpAQCAtNTgyLDcgKzU4MCw4IEBAIHN0YXRpYyBfX2Fsd2F5 c19pbmxpbmUgaW50IF9fdmZzX2ZvbGxvd19saW5rKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBjb25z dCBjaGFyICpsCiAJCWdvdG8gZmFpbDsKIAogCWlmICgqbGluayA9PSAnLycpIHsKLQkJc2V0X3Jv b3QobmQpOworCQlpZiAoIW5kLT5yb290Lm1udCkKKwkJCXNldF9yb290KG5kKTsKIAkJcGF0aF9w dXQoJm5kLT5wYXRoKTsKIAkJbmQtPnBhdGggPSBuZC0+cm9vdDsKIAkJcGF0aF9nZXQoJm5kLT5y b290KTsKQEAgLTkxMiwyMiArOTExLDExIEBAIHN0YXRpYyBib29sIF9fZm9sbG93X21vdW50X3Jj dShzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IHBhdGggKnBhdGgsCiAJcmV0dXJuIHRydWU7 CiB9CiAKLXN0YXRpYyB2b2lkIGZvbGxvd19tb3VudF9yY3Uoc3RydWN0IG5hbWVpZGF0YSAqbmQp Ci17Ci0Jd2hpbGUgKGRfbW91bnRwb2ludChuZC0+cGF0aC5kZW50cnkpKSB7Ci0JCXN0cnVjdCB2 ZnNtb3VudCAqbW91bnRlZDsKLQkJbW91bnRlZCA9IF9fbG9va3VwX21udChuZC0+cGF0aC5tbnQs IG5kLT5wYXRoLmRlbnRyeSwgMSk7Ci0JCWlmICghbW91bnRlZCkKLQkJCWJyZWFrOwotCQluZC0+ cGF0aC5tbnQgPSBtb3VudGVkOwotCQluZC0+cGF0aC5kZW50cnkgPSBtb3VudGVkLT5tbnRfcm9v dDsKLQkJbmQtPnNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJm5kLT5wYXRoLmRlbnRyeS0+ZF9z ZXEpOwotCX0KLX0KLQogc3RhdGljIGludCBmb2xsb3dfZG90ZG90X3JjdShzdHJ1Y3QgbmFtZWlk YXRhICpuZCkKIHsKLQlzZXRfcm9vdF9yY3UobmQpOworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBu ZC0+aW5vZGU7CisJaWYgKCFuZC0+cm9vdC5tbnQpCisJCXNldF9yb290X3JjdShuZCk7CiAKIAl3 aGlsZSAoMSkgewogCQlpZiAobmQtPnBhdGguZGVudHJ5ID09IG5kLT5yb290LmRlbnRyeSAmJgpA QCAtOTM5LDYgKzkyNyw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2RvdGRvdF9yY3Uoc3RydWN0IG5h bWVpZGF0YSAqbmQpCiAJCQlzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQgPSBvbGQtPmRfcGFyZW50Owog CQkJdW5zaWduZWQgc2VxOwogCisJCQlpbm9kZSA9IHBhcmVudC0+ZF9pbm9kZTsKIAkJCXNlcSA9 IHJlYWRfc2VxY291bnRfYmVnaW4oJnBhcmVudC0+ZF9zZXEpOwogCQkJaWYgKHJlYWRfc2VxY291 bnRfcmV0cnkoJm9sZC0+ZF9zZXEsIG5kLT5zZXEpKQogCQkJCWdvdG8gZmFpbGVkOwpAQCAtOTQ4 LDEwICs5MzcsMjAgQEAgc3RhdGljIGludCBmb2xsb3dfZG90ZG90X3JjdShzdHJ1Y3QgbmFtZWlk YXRhICpuZCkKIAkJfQogCQlpZiAoIWZvbGxvd191cF9yY3UoJm5kLT5wYXRoKSkKIAkJCWJyZWFr OworCQlpbm9kZSA9IG5kLT5wYXRoLmRlbnRyeS0+ZF9pbm9kZTsKIAkJbmQtPnNlcSA9IHJlYWRf c2VxY291bnRfYmVnaW4oJm5kLT5wYXRoLmRlbnRyeS0+ZF9zZXEpOwogCX0KLQlmb2xsb3dfbW91 bnRfcmN1KG5kKTsKLQluZC0+aW5vZGUgPSBuZC0+cGF0aC5kZW50cnktPmRfaW5vZGU7CisJd2hp bGUgKGRfbW91bnRwb2ludChuZC0+cGF0aC5kZW50cnkpKSB7CisJCXN0cnVjdCB2ZnNtb3VudCAq bW91bnRlZDsKKwkJbW91bnRlZCA9IF9fbG9va3VwX21udChuZC0+cGF0aC5tbnQsIG5kLT5wYXRo LmRlbnRyeSwgMSk7CisJCWlmICghbW91bnRlZCkKKwkJCWJyZWFrOworCQluZC0+cGF0aC5tbnQg PSBtb3VudGVkOworCQluZC0+cGF0aC5kZW50cnkgPSBtb3VudGVkLT5tbnRfcm9vdDsKKwkJaW5v ZGUgPSBuZC0+cGF0aC5kZW50cnktPmRfaW5vZGU7CisJCW5kLT5zZXEgPSByZWFkX3NlcWNvdW50 X2JlZ2luKCZuZC0+cGF0aC5kZW50cnktPmRfc2VxKTsKKwl9CisJbmQtPmlub2RlID0gaW5vZGU7 CiAJcmV0dXJuIDA7CiAKIGZhaWxlZDoKQEAgLTEwMzAsNyArMTAyOSw4IEBAIHN0YXRpYyB2b2lk IGZvbGxvd19tb3VudChzdHJ1Y3QgcGF0aCAqcGF0aCkKIAogc3RhdGljIHZvaWQgZm9sbG93X2Rv dGRvdChzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKIHsKLQlzZXRfcm9vdChuZCk7CisJaWYgKCFuZC0+ cm9vdC5tbnQpCisJCXNldF9yb290KG5kKTsKIAogCXdoaWxlKDEpIHsKIAkJc3RydWN0IGRlbnRy eSAqb2xkID0gbmQtPnBhdGguZGVudHJ5OwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgc3RhdGljIGlu dCBwYXRoX2luaXQoaW50IGRmZCwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdz LAogCQlpZiAoZmxhZ3MgJiBMT09LVVBfUkNVKSB7CiAJCQlicl9yZWFkX2xvY2sodmZzbW91bnRf bG9jayk7CiAJCQlyY3VfcmVhZF9sb2NrKCk7Ci0JCQlzZXRfcm9vdF9yY3UobmQpOworCQkJbmQt PnNlcSA9IHNldF9yb290X3JjdShuZCk7CiAJCX0gZWxzZSB7CiAJCQlzZXRfcm9vdChuZCk7CiAJ CQlwYXRoX2dldCgmbmQtPnJvb3QpOwpAQCAtMTU2MCw3ICsxNTYwLDE0IEBAIHN0YXRpYyBpbnQg cGF0aF9pbml0KGludCBkZmQsIGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncywK IAl9CiAKIAluZC0+aW5vZGUgPSBuZC0+cGF0aC5kZW50cnktPmRfaW5vZGU7Ci0JcmV0dXJuIDA7 CisJaWYgKCEoZmxhZ3MgJiBMT09LVVBfUkNVKSkKKwkJcmV0dXJuIDA7CisJaWYgKGxpa2VseSgh cmVhZF9zZXFjb3VudF9yZXRyeSgmbmQtPnBhdGguZGVudHJ5LT5kX3NlcSwgbmQtPnNlcSkpKQor CQlyZXR1cm4gMDsKKwlpZiAoIShuZC0+ZmxhZ3MgJiBMT09LVVBfUk9PVCkpCisJCW5kLT5yb290 Lm1udCA9IE5VTEw7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisJcmV0dXJuIC1FQ0hJTEQ7CiAKIGZw dXRfZmFpbDoKIAlmcHV0X2xpZ2h0KGZpbGUsIGZwdXRfbmVlZGVkKTsKZGlmZiAtLWdpdCBhL2Zz L25mcy9uZnM0cHJvYy5jIGIvZnMvbmZzL25mczRwcm9jLmMKaW5kZXggYzRhMmE2OC4uNjFhMTMw MyAxMDA2NDQKLS0tIGEvZnMvbmZzL25mczRwcm9jLmMKKysrIGIvZnMvbmZzL25mczRwcm9jLmMK QEAgLTIwMTUsMjMgKzIwMTUsMjMgQEAgc3RhdGljIHZvaWQgbmZzNF9jbG9zZV9wcmVwYXJlKHN0 cnVjdCBycGNfdGFzayAqdGFzaywgdm9pZCAqZGF0YSkKIAlpc19yZHdyID0gdGVzdF9iaXQoTkZT X09fUkRXUl9TVEFURSwgJnN0YXRlLT5mbGFncyk7CiAJaXNfcmRvbmx5ID0gdGVzdF9iaXQoTkZT X09fUkRPTkxZX1NUQVRFLCAmc3RhdGUtPmZsYWdzKTsKIAlpc193cm9ubHkgPSB0ZXN0X2JpdChO RlNfT19XUk9OTFlfU1RBVEUsICZzdGF0ZS0+ZmxhZ3MpOwotCS8qIENhbGN1bGF0ZSB0aGUgY3Vy cmVudCBvcGVuIHNoYXJlIG1vZGUgKi8KLQljYWxsZGF0YS0+YXJnLmZtb2RlID0gMDsKLQlpZiAo aXNfcmRvbmx5IHx8IGlzX3Jkd3IpCi0JCWNhbGxkYXRhLT5hcmcuZm1vZGUgfD0gRk1PREVfUkVB RDsKLQlpZiAoaXNfd3Jvbmx5IHx8IGlzX3Jkd3IpCi0JCWNhbGxkYXRhLT5hcmcuZm1vZGUgfD0g Rk1PREVfV1JJVEU7CiAJLyogQ2FsY3VsYXRlIHRoZSBjaGFuZ2UgaW4gb3BlbiBtb2RlICovCisJ Y2FsbGRhdGEtPmFyZy5mbW9kZSA9IDA7CiAJaWYgKHN0YXRlLT5uX3Jkd3IgPT0gMCkgewotCQlp ZiAoc3RhdGUtPm5fcmRvbmx5ID09IDApIHsKLQkJCWNhbGxfY2xvc2UgfD0gaXNfcmRvbmx5IHx8 IGlzX3Jkd3I7Ci0JCQljYWxsZGF0YS0+YXJnLmZtb2RlICY9IH5GTU9ERV9SRUFEOwotCQl9Ci0J CWlmIChzdGF0ZS0+bl93cm9ubHkgPT0gMCkgewotCQkJY2FsbF9jbG9zZSB8PSBpc193cm9ubHkg fHwgaXNfcmR3cjsKLQkJCWNhbGxkYXRhLT5hcmcuZm1vZGUgJj0gfkZNT0RFX1dSSVRFOwotCQl9 Ci0JfQorCQlpZiAoc3RhdGUtPm5fcmRvbmx5ID09IDApCisJCQljYWxsX2Nsb3NlIHw9IGlzX3Jk b25seTsKKwkJZWxzZSBpZiAoaXNfcmRvbmx5KQorCQkJY2FsbGRhdGEtPmFyZy5mbW9kZSB8PSBG TU9ERV9SRUFEOworCQlpZiAoc3RhdGUtPm5fd3Jvbmx5ID09IDApCisJCQljYWxsX2Nsb3NlIHw9 IGlzX3dyb25seTsKKwkJZWxzZSBpZiAoaXNfd3Jvbmx5KQorCQkJY2FsbGRhdGEtPmFyZy5mbW9k ZSB8PSBGTU9ERV9XUklURTsKKwl9IGVsc2UgaWYgKGlzX3Jkd3IpCisJCWNhbGxkYXRhLT5hcmcu Zm1vZGUgfD0gRk1PREVfUkVBRHxGTU9ERV9XUklURTsKKworCWlmIChjYWxsZGF0YS0+YXJnLmZt b2RlID09IDApCisJCWNhbGxfY2xvc2UgfD0gaXNfcmR3cjsKKwogCXNwaW5fdW5sb2NrKCZzdGF0 ZS0+b3duZXItPnNvX2xvY2spOwogCiAJaWYgKCFjYWxsX2Nsb3NlKSB7CmRpZmYgLS1naXQgYS9m cy9uZnNkL3Zmcy5jIGIvZnMvbmZzZC92ZnMuYwppbmRleCAxMWUxODg4Li5lMmU3OTE0IDEwMDY0 NAotLS0gYS9mcy9uZnNkL3Zmcy5jCisrKyBiL2ZzL25mc2QvdmZzLmMKQEAgLTUwOCw2ICs1MDgs OSBAQCBzZXRfbmZzdjRfYWNsX29uZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBwb3Np eF9hY2wgKnBhY2wsIGNoYXIgKmtleSkKIAljaGFyICpidWYgPSBOVUxMOwogCWludCBlcnJvciA9 IDA7CiAKKwlpZiAoIXBhY2wpCisJCXJldHVybiB2ZnNfc2V0eGF0dHIoZGVudHJ5LCBrZXksIE5V TEwsIDAsIDApOworCiAJYnVmbGVuID0gcG9zaXhfYWNsX3hhdHRyX3NpemUocGFjbC0+YV9jb3Vu dCk7CiAJYnVmID0ga21hbGxvYyhidWZsZW4sIEdGUF9LRVJORUwpOwogCWVycm9yID0gLUVOT01F TTsKZGlmZiAtLWdpdCBhL2ZzL25pbGZzMi9pbm9kZS5jIGIvZnMvbmlsZnMyL2lub2RlLmMKaW5k ZXggZWRlYjIzOS4uYjJkOGE5NiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lub2RlLmMKKysrIGIv ZnMvbmlsZnMyL2lub2RlLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxsaW51eC9idWZm ZXJfaGVhZC5oPgogI2luY2x1ZGUgPGxpbnV4L2dmcC5oPgogI2luY2x1ZGUgPGxpbnV4L21wYWdl Lmg+CisjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L3dyaXRlYmFj ay5oPgogI2luY2x1ZGUgPGxpbnV4L3Vpby5oPgogI2luY2x1ZGUgIm5pbGZzLmgiCkBAIC0xOTUs MTAgKzE5NiwxMCBAQCBzdGF0aWMgaW50IG5pbGZzX3dyaXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAKIHN0YXRpYyBpbnQgbmlsZnNfc2V0 X3BhZ2VfZGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CisJc3RydWN0IGlub2RlICppbm9kZSA9 IHBhZ2UtPm1hcHBpbmctPmhvc3Q7CiAJaW50IHJldCA9IF9fc2V0X3BhZ2VfZGlydHlfbm9idWZm ZXJzKHBhZ2UpOwogCiAJaWYgKHBhZ2VfaGFzX2J1ZmZlcnMocGFnZSkpIHsKLQkJc3RydWN0IGlu b2RlICppbm9kZSA9IHBhZ2UtPm1hcHBpbmctPmhvc3Q7CiAJCXVuc2lnbmVkIG5yX2RpcnR5ID0g MDsKIAkJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgKmhlYWQ7CiAKQEAgLTIyMSw2ICsyMjIsMTAg QEAgc3RhdGljIGludCBuaWxmc19zZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSkKIAog CQlpZiAobnJfZGlydHkpCiAJCQluaWxmc19zZXRfZmlsZV9kaXJ0eShpbm9kZSwgbnJfZGlydHkp OworCX0gZWxzZSBpZiAocmV0KSB7CisJCXVuc2lnbmVkIG5yX2RpcnR5ID0gMSA8PCAoUEFHRV9D QUNIRV9TSElGVCAtIGlub2RlLT5pX2Jsa2JpdHMpOworCisJCW5pbGZzX3NldF9maWxlX2RpcnR5 KGlub2RlLCBucl9kaXJ0eSk7CiAJfQogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9mcy9v Y2ZzMi9kbG0vZGxtbWFzdGVyLmMgYi9mcy9vY2ZzMi9kbG0vZGxtbWFzdGVyLmMKaW5kZXggMDA1 MjYxYy4uZGJjMzcyZSAxMDA2NDQKLS0tIGEvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jCisrKyBi L2ZzL29jZnMyL2RsbS9kbG1tYXN0ZXIuYwpAQCAtNjUzLDEyICs2NTMsOSBAQCB2b2lkIGRsbV9s b2NrcmVzX2NsZWFyX3JlZm1hcF9iaXQoc3RydWN0IGRsbV9jdHh0ICpkbG0sCiAJY2xlYXJfYml0 KGJpdCwgcmVzLT5yZWZtYXApOwogfQogCi0KLXZvaWQgZGxtX2xvY2tyZXNfZ3JhYl9pbmZsaWdo dF9yZWYoc3RydWN0IGRsbV9jdHh0ICpkbG0sCitzdGF0aWMgdm9pZCBfX2RsbV9sb2NrcmVzX2dy YWJfaW5mbGlnaHRfcmVmKHN0cnVjdCBkbG1fY3R4dCAqZGxtLAogCQkJCSAgIHN0cnVjdCBkbG1f bG9ja19yZXNvdXJjZSAqcmVzKQogewotCWFzc2VydF9zcGluX2xvY2tlZCgmcmVzLT5zcGlubG9j ayk7Ci0KIAlyZXMtPmluZmxpZ2h0X2xvY2tzKys7CiAKIAltbG9nKDAsICIlczogcmVzICUuKnMs IGluZmxpZ2h0Kys6IG5vdyAldSwgJXBzKClcbiIsIGRsbS0+bmFtZSwKQEAgLTY2Niw2ICs2NjMs MTMgQEAgdm9pZCBkbG1fbG9ja3Jlc19ncmFiX2luZmxpZ2h0X3JlZihzdHJ1Y3QgZGxtX2N0eHQg KmRsbSwKIAkgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CiB9CiAKK3ZvaWQgZGxt X2xvY2tyZXNfZ3JhYl9pbmZsaWdodF9yZWYoc3RydWN0IGRsbV9jdHh0ICpkbG0sCisJCQkJICAg c3RydWN0IGRsbV9sb2NrX3Jlc291cmNlICpyZXMpCit7CisJYXNzZXJ0X3NwaW5fbG9ja2VkKCZy ZXMtPnNwaW5sb2NrKTsKKwlfX2RsbV9sb2NrcmVzX2dyYWJfaW5mbGlnaHRfcmVmKGRsbSwgcmVz KTsKK30KKwogdm9pZCBkbG1fbG9ja3Jlc19kcm9wX2luZmxpZ2h0X3JlZihzdHJ1Y3QgZGxtX2N0 eHQgKmRsbSwKIAkJCQkgICBzdHJ1Y3QgZGxtX2xvY2tfcmVzb3VyY2UgKnJlcykKIHsKQEAgLTg1 NSwxMCArODU5LDggQEAgbG9va3VwOgogCS8qIGZpbmFsbHkgYWRkIHRoZSBsb2NrcmVzIHRvIGl0 cyBoYXNoIGJ1Y2tldCAqLwogCV9fZGxtX2luc2VydF9sb2NrcmVzKGRsbSwgcmVzKTsKIAotCS8q IEdyYWIgaW5mbGlnaHQgcmVmIHRvIHBpbiB0aGUgcmVzb3VyY2UgKi8KLQlzcGluX2xvY2soJnJl cy0+c3BpbmxvY2spOwotCWRsbV9sb2NrcmVzX2dyYWJfaW5mbGlnaHRfcmVmKGRsbSwgcmVzKTsK LQlzcGluX3VubG9jaygmcmVzLT5zcGlubG9jayk7CisJLyogc2luY2UgdGhpcyBsb2NrcmVzIGlz IG5ldyBpdCBkb2Vzbid0IG5vdCByZXF1aXJlIHRoZSBzcGlubG9jayAqLworCV9fZGxtX2xvY2ty ZXNfZ3JhYl9pbmZsaWdodF9yZWYoZGxtLCByZXMpOwogCiAJLyogZ2V0IGFuIGV4dHJhIHJlZiBv biB0aGUgbWxlIGluIGNhc2UgdGhpcyBpcyBhIEJMT0NLCiAJICogaWYgc28sIHRoZSBjcmVhdG9y IG9mIHRoZSBCTE9DSyBtYXkgdHJ5IHRvIHB1dCB0aGUgbGFzdApkaWZmIC0tZ2l0IGEvZnMvcGFy dGl0aW9ucy9jaGVjay5jIGIvZnMvcGFydGl0aW9ucy9jaGVjay5jCmluZGV4IDFlZjE1Y2MuLjE4 YzU4ZTUgMTAwNjQ0Ci0tLSBhL2ZzL3BhcnRpdGlvbnMvY2hlY2suYworKysgYi9mcy9wYXJ0aXRp b25zL2NoZWNrLmMKQEAgLTM2MSw2ICszNjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCAqcGFydF9hdHRyX2dyb3Vwc1tdID0gewogc3RhdGljIHZvaWQgcGFydF9yZWxl YXNlKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgaGRfc3RydWN0ICpwID0gZGV2X3Rv X3BhcnQoZGV2KTsKKwlibGtfZnJlZV9kZXZ0KGRldi0+ZGV2dCk7CiAJZnJlZV9wYXJ0X3N0YXRz KHApOwogCWZyZWVfcGFydF9pbmZvKHApOwogCWtmcmVlKHApOwpAQCAtNDAzLDcgKzQwNCw2IEBA IHZvaWQgZGVsZXRlX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubykK IAlyY3VfYXNzaWduX3BvaW50ZXIocHRibC0+bGFzdF9sb29rdXAsIE5VTEwpOwogCWtvYmplY3Rf cHV0KHBhcnQtPmhvbGRlcl9kaXIpOwogCWRldmljZV9kZWwocGFydF90b19kZXYocGFydCkpOwot CWJsa19mcmVlX2RldnQocGFydF9kZXZ0KHBhcnQpKTsKIAogCWhkX3N0cnVjdF9wdXQocGFydCk7 CiB9CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2FvcHMuYyBiL2ZzL3hmcy94ZnNfYW9wcy5jCmlu ZGV4IGIzNjc1ODEuLjg5MTQ0NWYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYW9wcy5jCisrKyBi L2ZzL3hmcy94ZnNfYW9wcy5jCkBAIC0xNDQ4LDExICsxNDQ4LDcyIEBAIHhmc192bV9yZWFkcGFn ZXMoCiAJcmV0dXJuIG1wYWdlX3JlYWRwYWdlcyhtYXBwaW5nLCBwYWdlcywgbnJfcGFnZXMsIHhm c19nZXRfYmxvY2tzKTsKIH0KIAorLyoKKyAqIFRoaXMgaXMgYmFzaWNhbGx5IGEgY29weSBvZiBf X3NldF9wYWdlX2RpcnR5X2J1ZmZlcnMoKSB3aXRoIG9uZQorICogc21hbGwgdHdlYWs6IGJ1ZmZl cnMgYmV5b25kIEVPRiBkbyBub3QgZ2V0IG1hcmtlZCBkaXJ0eS4gSWYgd2UgbWFyayB0aGVtCisg KiBkaXJ0eSwgd2UnbGwgbmV2ZXIgYmUgYWJsZSB0byBjbGVhbiB0aGVtIGJlY2F1c2Ugd2UgZG9u J3Qgd3JpdGUgYnVmZmVycworICogYmV5b25kIEVPRiwgYW5kIHRoYXQgbWVhbnMgd2UgY2FuJ3Qg aW52YWxpZGF0ZSBwYWdlcyB0aGF0IHNwYW4gRU9GCisgKiB0aGF0IGhhdmUgYmVlbiBtYXJrZWQg ZGlydHkuIEZ1cnRoZXIsIHRoZSBkaXJ0eSBzdGF0ZSBjYW4gbGVhayBpbnRvCisgKiB0aGUgZmls ZSBpbnRlcmlvciBpZiB0aGUgZmlsZSBpcyBleHRlbmRlZCwgcmVzdWx0aW5nIGluIGFsbCBzb3J0 cyBvZgorICogYmFkIHRoaW5ncyBoYXBwZW5pbmcgYXMgdGhlIHN0YXRlIGRvZXMgbm90IG1hdGNo IHRoZSB1bmRlcmx5aW5nIGRhdGEuCisgKgorICogWFhYOiB0aGlzIHJlYWxseSBpbmRpY2F0ZXMg dGhhdCBidWZmZXJoZWFkcyBpbiBYRlMgbmVlZCB0byBkaWUuIFdhcnRzIGxpa2UKKyAqIHRoaXMg b25seSBleGlzdCBiZWNhdXNlIG9mIGJ1ZmZlcmhlYWRzIGFuZCBob3cgdGhlIGdlbmVyaWMgY29k ZSBtYW5hZ2VzIHRoZW0uCisgKi8KK1NUQVRJQyBpbnQKK3hmc192bV9zZXRfcGFnZV9kaXJ0eSgK KwlzdHJ1Y3QgcGFnZQkJKnBhZ2UpCit7CisJc3RydWN0IGFkZHJlc3Nfc3BhY2UJKm1hcHBpbmcg PSBwYWdlLT5tYXBwaW5nOworCXN0cnVjdCBpbm9kZQkJKmlub2RlID0gbWFwcGluZy0+aG9zdDsK Kwlsb2ZmX3QJCQllbmRfb2Zmc2V0OworCWxvZmZfdAkJCW9mZnNldDsKKwlpbnQJCQluZXdseV9k aXJ0eTsKKworCWlmICh1bmxpa2VseSghbWFwcGluZykpCisJCXJldHVybiAhVGVzdFNldFBhZ2VE aXJ0eShwYWdlKTsKKworCWVuZF9vZmZzZXQgPSBpX3NpemVfcmVhZChpbm9kZSk7CisJb2Zmc2V0 ID0gcGFnZV9vZmZzZXQocGFnZSk7CisKKwlzcGluX2xvY2soJm1hcHBpbmctPnByaXZhdGVfbG9j ayk7CisJaWYgKHBhZ2VfaGFzX2J1ZmZlcnMocGFnZSkpIHsKKwkJc3RydWN0IGJ1ZmZlcl9oZWFk ICpoZWFkID0gcGFnZV9idWZmZXJzKHBhZ2UpOworCQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoID0g aGVhZDsKKworCQlkbyB7CisJCQlpZiAob2Zmc2V0IDwgZW5kX29mZnNldCkKKwkJCQlzZXRfYnVm ZmVyX2RpcnR5KGJoKTsKKwkJCWJoID0gYmgtPmJfdGhpc19wYWdlOworCQkJb2Zmc2V0ICs9IDEg PDwgaW5vZGUtPmlfYmxrYml0czsKKwkJfSB3aGlsZSAoYmggIT0gaGVhZCk7CisJfQorCW5ld2x5 X2RpcnR5ID0gIVRlc3RTZXRQYWdlRGlydHkocGFnZSk7CisJc3Bpbl91bmxvY2soJm1hcHBpbmct PnByaXZhdGVfbG9jayk7CisKKwlpZiAobmV3bHlfZGlydHkpIHsKKwkJLyogc2lnaCAtIF9fc2V0 X3BhZ2VfZGlydHkoKSBpcyBzdGF0aWMsIHNvIGNvcHkgaXQgaGVyZSwgdG9vICovCisJCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJm1hcHBpbmctPnRyZWVfbG9j aywgZmxhZ3MpOworCQlpZiAocGFnZS0+bWFwcGluZykgewkvKiBSYWNlIHdpdGggdHJ1bmNhdGU/ ICovCisJCQlXQVJOX09OX09OQ0UoIVBhZ2VVcHRvZGF0ZShwYWdlKSk7CisJCQlhY2NvdW50X3Bh Z2VfZGlydGllZChwYWdlLCBtYXBwaW5nKTsKKwkJCXJhZGl4X3RyZWVfdGFnX3NldCgmbWFwcGlu Zy0+cGFnZV90cmVlLAorCQkJCQlwYWdlX2luZGV4KHBhZ2UpLCBQQUdFQ0FDSEVfVEFHX0RJUlRZ KTsKKwkJfQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtYXBwaW5nLT50cmVlX2xvY2ssIGZs YWdzKTsKKwkJX19tYXJrX2lub2RlX2RpcnR5KG1hcHBpbmctPmhvc3QsIElfRElSVFlfUEFHRVMp OworCX0KKwlyZXR1cm4gbmV3bHlfZGlydHk7Cit9CisKIGNvbnN0IHN0cnVjdCBhZGRyZXNzX3Nw YWNlX29wZXJhdGlvbnMgeGZzX2FkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyA9IHsKIAkucmVhZHBh Z2UJCT0geGZzX3ZtX3JlYWRwYWdlLAogCS5yZWFkcGFnZXMJCT0geGZzX3ZtX3JlYWRwYWdlcywK IAkud3JpdGVwYWdlCQk9IHhmc192bV93cml0ZXBhZ2UsCiAJLndyaXRlcGFnZXMJCT0geGZzX3Zt X3dyaXRlcGFnZXMsCisJLnNldF9wYWdlX2RpcnR5CQk9IHhmc192bV9zZXRfcGFnZV9kaXJ0eSwK IAkucmVsZWFzZXBhZ2UJCT0geGZzX3ZtX3JlbGVhc2VwYWdlLAogCS5pbnZhbGlkYXRlcGFnZQkJ PSB4ZnNfdm1faW52YWxpZGF0ZXBhZ2UsCiAJLndyaXRlX2JlZ2luCQk9IHhmc192bV93cml0ZV9i ZWdpbiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYWxhcm10aW1lci5oIGIvaW5jbHVkZS9s aW51eC9hbGFybXRpbWVyLmgKaW5kZXggOTc1MDA5ZS4uOWE5ODM4YSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9hbGFybXRpbWVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9hbGFybXRpbWVyLmgK QEAgLTQ4LDYgKzQ4LDcgQEAgaW50IGFsYXJtX3RyeV90b19jYW5jZWwoc3RydWN0IGFsYXJtICph bGFybSk7CiBpbnQgYWxhcm1fY2FuY2VsKHN0cnVjdCBhbGFybSAqYWxhcm0pOwogCiB1NjQgYWxh cm1fZm9yd2FyZChzdHJ1Y3QgYWxhcm0gKmFsYXJtLCBrdGltZV90IG5vdywga3RpbWVfdCBpbnRl cnZhbCk7CitrdGltZV90IGFsYXJtX2V4cGlyZXNfcmVtYWluaW5nKGNvbnN0IHN0cnVjdCBhbGFy bSAqYWxhcm0pOwogCiAvKgogICogQSBhbGFybXRpbWVyIGlzIGFjdGl2ZSwgd2hlbiBpdCBpcyBl bnF1ZXVlZCBpbnRvIHRpbWVycXVldWUgb3IgdGhlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2NlcGgvbWVzc2VuZ2VyLmggYi9pbmNsdWRlL2xpbnV4L2NlcGgvbWVzc2VuZ2VyLmgKaW5kZXgg ZmZiZWIyYy4uNWI2ZWZlZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZXBoL21lc3Nlbmdl ci5oCisrKyBiL2luY2x1ZGUvbGludXgvY2VwaC9tZXNzZW5nZXIuaApAQCAtOTIsNyArOTIsNyBA QCBzdHJ1Y3QgY2VwaF9tc2cgewogCWJvb2wgZnJvbnRfaXNfdm1hbGxvYzsKIAlib29sIG1vcmVf dG9fZm9sbG93OwogCWJvb2wgbmVlZHNfb3V0X3NlcTsKLQlpbnQgZnJvbnRfbWF4OworCWludCBm cm9udF9hbGxvY19sZW47CiAJdW5zaWduZWQgbG9uZyBhY2tfc3RhbXA7ICAgICAgICAvKiB0eDog d2hlbiB3ZSB3ZXJlIGFja2VkICovCiAKIAlzdHJ1Y3QgY2VwaF9tc2dwb29sICpwb29sOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9qaWZmaWVzLmggYi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMu aAppbmRleCBmNWRmM2RjLi5mNGU4NTc4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ppZmZp ZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaApAQCAtMjU5LDIzICsyNTksMTEgQEAg ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJlc2V0X2xwajsKICNkZWZpbmUgU0VDX0pJRkZJRV9TQyAo MzIgLSBTSElGVF9IWikKICNlbmRpZgogI2RlZmluZSBOU0VDX0pJRkZJRV9TQyAoU0VDX0pJRkZJ RV9TQyArIDI5KQotI2RlZmluZSBVU0VDX0pJRkZJRV9TQyAoU0VDX0pJRkZJRV9TQyArIDE5KQog I2RlZmluZSBTRUNfQ09OVkVSU0lPTiAoKHVuc2lnbmVkIGxvbmcpKCgoKHU2NClOU0VDX1BFUl9T RUMgPDwgU0VDX0pJRkZJRV9TQykgK1wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VElDS19OU0VDIC0xKSAvICh1NjQpVElDS19OU0VDKSkKIAogI2RlZmluZSBOU0VDX0NPTlZFUlNJ T04gKCh1bnNpZ25lZCBsb25nKSgoKCh1NjQpMSA8PCBOU0VDX0pJRkZJRV9TQykgK1wKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSUNLX05TRUMgLTEpIC8gKHU2NClU SUNLX05TRUMpKQotI2RlZmluZSBVU0VDX0NPTlZFUlNJT04gIFwKLSAgICAgICAgICAgICAgICAg ICAgKCh1bnNpZ25lZCBsb25nKSgoKCh1NjQpTlNFQ19QRVJfVVNFQyA8PCBVU0VDX0pJRkZJRV9T QykgK1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSUNLX05TRUMg LTEpIC8gKHU2NClUSUNLX05TRUMpKQotLyoKLSAqIFVTRUNfUk9VTkQgaXMgdXNlZCBpbiB0aGUg dGltZXZhbCB0byBqaWZmaWUgY29udmVyc2lvbi4gIFNlZSB0aGVyZQotICogZm9yIG1vcmUgZGV0 YWlscy4gIEl0IGlzIHRoZSBzY2FsZWQgcmVzb2x1dGlvbiByb3VuZGluZyB2YWx1ZS4gIE5vdGUK LSAqIHRoYXQgaXQgaXMgYSA2NC1iaXQgdmFsdWUuICBTaW5jZSwgd2hlbiBpdCBpcyBhcHBsaWVk LCB3ZSBhcmUgYWxyZWFkeQotICogaW4gamlmZmllcyAoYWxiaXQgc2NhbGVkKSwgaXQgaXMgbm90 aGluZyBidXQgdGhlIGJpdHMgd2Ugd2lsbCBzaGlmdAotICogb2ZmLgotICovCi0jZGVmaW5lIFVT RUNfUk9VTkQgKHU2NCkoKCh1NjQpMSA8PCBVU0VDX0pJRkZJRV9TQykgLSAxKQogLyoKICAqIFRo ZSBtYXhpbXVtIGppZmZpZSB2YWx1ZSBpcyAoTUFYX0lOVCA+PiAxKS4gIEhlcmUgd2UgdHJhbnNs YXRlIHRoYXQKICAqIGludG8gc2Vjb25kcy4gIFRoZSA2NC1iaXQgY2FzZSB3aWxsIG92ZXJmbG93 IGlmIHdlIGFyZSBub3QgY2FyZWZ1bCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3JlZ3VsYXRv cnkuaCBiL2luY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaAppbmRleCBlYjdkM2MyLi5jM2MyMmUwIDEw MDY0NAotLS0gYS9pbmNsdWRlL25ldC9yZWd1bGF0b3J5LmgKKysrIGIvaW5jbHVkZS9uZXQvcmVn dWxhdG9yeS5oCkBAIC05Miw3ICs5Miw3IEBAIHN0cnVjdCBpZWVlODAyMTFfcmVnX3J1bGUgewog CiBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiB7CiAJdTMyIG5fcmVnX3J1bGVzOwotCWNoYXIg YWxwaGEyWzJdOworCWNoYXIgYWxwaGEyWzNdOwogCXN0cnVjdCBpZWVlODAyMTFfcmVnX3J1bGUg cmVnX3J1bGVzW107CiB9OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL3NjdHAuaCBi L2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCmluZGV4IGFkMDM5ODguLmUwZjFjOTEgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCisrKyBiL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5o CkBAIC01MjMsNiArNTIzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzY3RwX2Fzc29jX3BlbmRp bmdfcG10dShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAlhc29jLT5wbXR1X3BlbmRp bmcgPSAwOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgc2N0cF9jaHVua19wZW5kaW5nKGNvbnN0 IHN0cnVjdCBzY3RwX2NodW5rICpjaHVuaykKK3sKKwlyZXR1cm4gIWxpc3RfZW1wdHkoJmNodW5r LT5saXN0KTsKK30KKwogLyogV2FsayB0aHJvdWdoIGEgbGlzdCBvZiBUTFYgcGFyYW1ldGVycy4g IERvbid0IHRydXN0IHRoZQogICogaW5kaXZpZHVhbCBwYXJhbWV0ZXIgbGVuZ3RocyBhbmQgaW5z dGVhZCBkZXBlbmQgb24KICAqIHRoZSBjaHVuayBsZW5ndGggdG8gaW5kaWNhdGUgd2hlbiB0byBz dG9wLiAgTWFrZSBzdXJlCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL3NtLmggYi9pbmNs dWRlL25ldC9zY3RwL3NtLmgKaW5kZXggOTE0ODYzMi4uNGQxYmU3NSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9uZXQvc2N0cC9zbS5oCisrKyBiL2luY2x1ZGUvbmV0L3NjdHAvc20uaApAQCAtMjUxLDkg KzI1MSw5IEBAIHN0cnVjdCBzY3RwX2NodW5rICpzY3RwX21ha2VfYXNjb25mX3VwZGF0ZV9pcChz dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqLAogCQkJCQkgICAgICBpbnQsIF9fYmUxNik7CiBzdHJ1 Y3Qgc2N0cF9jaHVuayAqc2N0cF9tYWtlX2FzY29uZl9zZXRfcHJpbShzdHJ1Y3Qgc2N0cF9hc3Nv Y2lhdGlvbiAqYXNvYywKIAkJCQkJICAgICB1bmlvbiBzY3RwX2FkZHIgKmFkZHIpOwotaW50IHNj dHBfdmVyaWZ5X2FzY29uZihjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKLQkJ ICAgICAgIHN0cnVjdCBzY3RwX3BhcmFtaGRyICpwYXJhbV9oZHIsIHZvaWQgKmNodW5rX2VuZCwK LQkJICAgICAgIHN0cnVjdCBzY3RwX3BhcmFtaGRyICoqZXJycCk7Citib29sIHNjdHBfdmVyaWZ5 X2FzY29uZihjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKKwkJCXN0cnVjdCBz Y3RwX2NodW5rICpjaHVuaywgYm9vbCBhZGRyX3BhcmFtX25lZWRlZCwKKwkJCXN0cnVjdCBzY3Rw X3BhcmFtaGRyICoqZXJycCk7CiBzdHJ1Y3Qgc2N0cF9jaHVuayAqc2N0cF9wcm9jZXNzX2FzY29u ZihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkgICAgICAgc3RydWN0IHNjdHBf Y2h1bmsgKmFzY29uZik7CiBpbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBf YXNzb2NpYXRpb24gKmFzb2MsCmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25m aWcKaW5kZXggNDMyOThmOS4uYjhkYzFkZSAxMDA2NDQKLS0tIGEvaW5pdC9LY29uZmlnCisrKyBi L2luaXQvS2NvbmZpZwpAQCAtNTU1LDYgKzU1NSw3IEBAIGNvbmZpZyBMT0dfQlVGX1NISUZUCiAJ aW50ICJLZXJuZWwgbG9nIGJ1ZmZlciBzaXplICgxNiA9PiA2NEtCLCAxNyA9PiAxMjhLQikiCiAJ cmFuZ2UgMTIgMjEKIAlkZWZhdWx0IDE3CisJZGVwZW5kcyBvbiBQUklOVEsKIAloZWxwCiAJICBT ZWxlY3Qga2VybmVsIGxvZyBidWZmZXIgc2l6ZSBhcyBhIHBvd2VyIG9mIDIuCiAJICBFeGFtcGxl czoKZGlmZiAtLWdpdCBhL2tlcm5lbC9jZ3JvdXAuYyBiL2tlcm5lbC9jZ3JvdXAuYwppbmRleCA5 M2ZjMTVlLi5mZmNmODk2IDEwMDY0NAotLS0gYS9rZXJuZWwvY2dyb3VwLmMKKysrIGIva2VybmVs L2Nncm91cC5jCkBAIC0zODcxLDYgKzM4NzEsMTEgQEAgc3RhdGljIGludCBjZ3JvdXBfbWtkaXIo c3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpCiB7CiAJ c3RydWN0IGNncm91cCAqY19wYXJlbnQgPSBkZW50cnktPmRfcGFyZW50LT5kX2ZzZGF0YTsKIAor CS8qIERvIG5vdCBhY2NlcHQgJ1xuJyB0byBwcmV2ZW50IG1ha2luZyAvcHJvYy88cGlkPi9jZ3Jv dXAgdW5wYXJzYWJsZS4KKwkgKi8KKwlpZiAoc3RyY2hyKGRlbnRyeS0+ZF9uYW1lLm5hbWUsICdc bicpKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCS8qIHRoZSB2ZnMgaG9sZHMgaW5vZGUtPmlfbXV0 ZXggYWxyZWFkeSAqLwogCXJldHVybiBjZ3JvdXBfY3JlYXRlKGNfcGFyZW50LCBkZW50cnksIG1v ZGUgfCBTX0lGRElSKTsKIH0KZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvY29yZS5jIGIva2Vy bmVsL2V2ZW50cy9jb3JlLmMKaW5kZXggMTRjMTExYy4uNGExNDg5NSAxMDA2NDQKLS0tIGEva2Vy bmVsL2V2ZW50cy9jb3JlLmMKKysrIGIva2VybmVsL2V2ZW50cy9jb3JlLmMKQEAgLTE2ODMsNiAr MTY4MywxNiBAQCByZXRyeToKIAkgKi8KIAlpZiAoY3R4LT5pc19hY3RpdmUpIHsKIAkJcmF3X3Nw aW5fdW5sb2NrX2lycSgmY3R4LT5sb2NrKTsKKwkJLyoKKwkJICogUmVsb2FkIHRoZSB0YXNrIHBv aW50ZXIsIGl0IG1pZ2h0IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5CisJCSAqIGEgY29uY3VycmVudCBw ZXJmX2V2ZW50X2NvbnRleHRfc2NoZWRfb3V0KCkuCisJCSAqLworCQl0YXNrID0gY3R4LT50YXNr OworCQkvKgorCQkgKiBSZWxvYWQgdGhlIHRhc2sgcG9pbnRlciwgaXQgbWlnaHQgaGF2ZSBiZWVu IGNoYW5nZWQgYnkKKwkJICogYSBjb25jdXJyZW50IHBlcmZfZXZlbnRfY29udGV4dF9zY2hlZF9v dXQoKS4KKwkJICovCisJCXRhc2sgPSBjdHgtPnRhc2s7CiAJCWdvdG8gcmV0cnk7CiAJfQogCkBA IC03MDcxLDggKzcwODEsMTAgQEAgaW50IHBlcmZfZXZlbnRfaW5pdF90YXNrKHN0cnVjdCB0YXNr X3N0cnVjdCAqY2hpbGQpCiAKIAlmb3JfZWFjaF90YXNrX2NvbnRleHRfbnIoY3R4bikgewogCQly ZXQgPSBwZXJmX2V2ZW50X2luaXRfY29udGV4dChjaGlsZCwgY3R4bik7Ci0JCWlmIChyZXQpCisJ CWlmIChyZXQpIHsKKwkJCXBlcmZfZXZlbnRfZnJlZV90YXNrKGNoaWxkKTsKIAkJCXJldHVybiBy ZXQ7CisJCX0KIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9r ZXJuZWwvZm9yay5jCmluZGV4IDEzYmJhMzAuLjI5YjQ2MDQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9m b3JrLmMKKysrIGIva2VybmVsL2ZvcmsuYwpAQCAtMTIyMSw3ICsxMjIxLDcgQEAgc3RhdGljIHN0 cnVjdCB0YXNrX3N0cnVjdCAqY29weV9wcm9jZXNzKHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3Ms CiAJCWdvdG8gYmFkX2ZvcmtfY2xlYW51cF9wb2xpY3k7CiAJcmV0dmFsID0gYXVkaXRfYWxsb2Mo cCk7CiAJaWYgKHJldHZhbCkKLQkJZ290byBiYWRfZm9ya19jbGVhbnVwX3BvbGljeTsKKwkJZ290 byBiYWRfZm9ya19jbGVhbnVwX3BlcmY7CiAJLyogY29weSBhbGwgdGhlIHByb2Nlc3MgaW5mb3Jt YXRpb24gKi8KIAlyZXR2YWwgPSBjb3B5X3NlbXVuZG8oY2xvbmVfZmxhZ3MsIHApOwogCWlmIChy ZXR2YWwpCkBAIC0xNDA2LDggKzE0MDYsOSBAQCBiYWRfZm9ya19jbGVhbnVwX3NlbXVuZG86CiAJ ZXhpdF9zZW0ocCk7CiBiYWRfZm9ya19jbGVhbnVwX2F1ZGl0OgogCWF1ZGl0X2ZyZWUocCk7Ci1i YWRfZm9ya19jbGVhbnVwX3BvbGljeToKK2JhZF9mb3JrX2NsZWFudXBfcGVyZjoKIAlwZXJmX2V2 ZW50X2ZyZWVfdGFzayhwKTsKK2JhZF9mb3JrX2NsZWFudXBfcG9saWN5OgogI2lmZGVmIENPTkZJ R19OVU1BCiAJbXBvbF9wdXQocC0+bWVtcG9saWN5KTsKIGJhZF9mb3JrX2NsZWFudXBfY2dyb3Vw OgpkaWZmIC0tZ2l0IGEva2VybmVsL2Z1dGV4LmMgYi9rZXJuZWwvZnV0ZXguYwppbmRleCAxYmIz N2QwLi5mMzFmMTkwIDEwMDY0NAotLS0gYS9rZXJuZWwvZnV0ZXguYworKysgYi9rZXJuZWwvZnV0 ZXguYwpAQCAtMjQ2MCw2ICsyNDYwLDcgQEAgc3RhdGljIGludCBmdXRleF93YWl0X3JlcXVldWVf cGkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywKIAkgKiBzaGFyZWQgZnV0 ZXhlcy4gV2UgbmVlZCB0byBjb21wYXJlIHRoZSBrZXlzOgogCSAqLwogCWlmIChtYXRjaF9mdXRl eCgmcS5rZXksICZrZXkyKSkgeworCQlxdWV1ZV91bmxvY2soJnEsIGhiKTsKIAkJcmV0ID0gLUVJ TlZBTDsKIAkJZ290byBvdXRfcHV0X2tleXM7CiAJfQpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUu YyBiL2tlcm5lbC90aW1lLmMKaW5kZXggNzNlNDE2ZC4uMDYwZjk2MSAxMDA2NDQKLS0tIGEva2Vy bmVsL3RpbWUuYworKysgYi9rZXJuZWwvdGltZS5jCkBAIC00OTMsMTcgKzQ5MywyMCBAQCBFWFBP UlRfU1lNQk9MKHVzZWNzX3RvX2ppZmZpZXMpOwogICogdGhhdCBhIHJlbWFpbmRlciBzdWJ0cmFj dCBoZXJlIHdvdWxkIG5vdCBkbyB0aGUgcmlnaHQgdGhpbmcgYXMgdGhlCiAgKiByZXNvbHV0aW9u IHZhbHVlcyBkb24ndCBmYWxsIG9uIHNlY29uZCBib3VuZHJpZXMuICBJLmUuIHRoZSBsaW5lOgog ICogbnNlYyAtPSBuc2VjICUgVElDS19OU0VDOyBpcyBOT1QgYSBjb3JyZWN0IHJlc29sdXRpb24g cm91bmRpbmcuCisgKiBOb3RlIHRoYXQgZHVlIHRvIHRoZSBzbWFsbCBlcnJvciBpbiB0aGUgbXVs dGlwbGllciBoZXJlLCB0aGlzCisgKiByb3VuZGluZyBpcyBpbmNvcnJlY3QgZm9yIHN1ZmZpY2ll bnRseSBsYXJnZSB2YWx1ZXMgb2YgdHZfbnNlYywgYnV0CisgKiB3ZWxsIGZvcm1lZCB0aW1lc3Bl Y3Mgc2hvdWxkIGhhdmUgdHZfbnNlYyA8IE5TRUNfUEVSX1NFQywgc28gd2UncmUKKyAqIE9LLgog ICoKICAqIFJhdGhlciwgd2UganVzdCBzaGlmdCB0aGUgYml0cyBvZmYgdGhlIHJpZ2h0LgogICoK ICAqIFRoZSA+PiAoTlNFQ19KSUZGSUVfU0MgLSBTRUNfSklGRklFX1NDKSBjb252ZXJ0cyB0aGUg c2NhbGVkIG5zZWMKICAqIHZhbHVlIHRvIGEgc2NhbGVkIHNlY29uZCB2YWx1ZS4KICAqLwotdW5z aWduZWQgbG9uZwotdGltZXNwZWNfdG9famlmZmllcyhjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnZh bHVlKQorc3RhdGljIHVuc2lnbmVkIGxvbmcKK19fdGltZXNwZWNfdG9famlmZmllcyh1bnNpZ25l ZCBsb25nIHNlYywgbG9uZyBuc2VjKQogewotCXVuc2lnbmVkIGxvbmcgc2VjID0gdmFsdWUtPnR2 X3NlYzsKLQlsb25nIG5zZWMgPSB2YWx1ZS0+dHZfbnNlYyArIFRJQ0tfTlNFQyAtIDE7CisJbnNl YyA9IG5zZWMgKyBUSUNLX05TRUMgLSAxOwogCiAJaWYgKHNlYyA+PSBNQVhfU0VDX0lOX0pJRkZJ RVMpewogCQlzZWMgPSBNQVhfU0VDX0lOX0pJRkZJRVM7CkBAIC01MTQsNiArNTE3LDEzIEBAIHRp bWVzcGVjX3RvX2ppZmZpZXMoY29uc3Qgc3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKIAkJIChOU0VD X0pJRkZJRV9TQyAtIFNFQ19KSUZGSUVfU0MpKSkgPj4gU0VDX0pJRkZJRV9TQzsKIAogfQorCit1 bnNpZ25lZCBsb25nCit0aW1lc3BlY190b19qaWZmaWVzKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq dmFsdWUpCit7CisJcmV0dXJuIF9fdGltZXNwZWNfdG9famlmZmllcyh2YWx1ZS0+dHZfc2VjLCB2 YWx1ZS0+dHZfbnNlYyk7Cit9CisKIEVYUE9SVF9TWU1CT0wodGltZXNwZWNfdG9famlmZmllcyk7 CiAKIHZvaWQKQEAgLTUzMCwzMSArNTQwLDI3IEBAIGppZmZpZXNfdG9fdGltZXNwZWMoY29uc3Qg dW5zaWduZWQgbG9uZyBqaWZmaWVzLCBzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQogfQogRVhQT1JU X1NZTUJPTChqaWZmaWVzX3RvX3RpbWVzcGVjKTsKIAotLyogU2FtZSBmb3IgInRpbWV2YWwiCisv KgorICogV2UgY291bGQgdXNlIGEgc2ltaWxhciBhbGdvcml0aG0gdG8gdGltZXNwZWNfdG9famlm ZmllcyAod2l0aCBhCisgKiBkaWZmZXJlbnQgbXVsdGlwbGllciBmb3IgdXNlYyBpbnN0ZWFkIG9m IG5zZWMpLiBCdXQgdGhpcyBoYXMgYQorICogcHJvYmxlbSB3aXRoIHJvdW5kaW5nOiB3ZSBjYW4n dCBleGFjdGx5IGFkZCBUSUNLX05TRUMgLSAxIHRvIHRoZQorICogdXNlYyB2YWx1ZSwgc2luY2Ug aXQncyBub3QgbmVjZXNzYXJpbHkgaW50ZWdyYWwuCiAgKgotICogV2VsbCwgYWxtb3N0LiAgVGhl IHByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZSByZWFsIHN5c3RlbSByZXNvbHV0aW9uIGlzCi0gKiBp biBuYW5vc2Vjb25kcyBhbmQgdGhlIHZhbHVlIGJlaW5nIGNvbnZlcnRlZCBpcyBpbiBtaWNybyBz ZWNvbmRzLgotICogQWxzbyBmb3Igc29tZSBtYWNoaW5lcyAodGhvc2UgdGhhdCB1c2UgSFogPSAx MDI0LCBpbi1wYXJ0aWN1bGFyKSwKLSAqIHRoZXJlIGlzIGEgTEFSR0UgZXJyb3IgaW4gdGhlIHRp Y2sgc2l6ZSBpbiBtaWNyb3NlY29uZHMuCi0KLSAqIFRoZSBzb2x1dGlvbiB3ZSB1c2UgaXMgdG8g ZG8gdGhlIHJvdW5kaW5nIEFGVEVSIHdlIGNvbnZlcnQgdGhlCi0gKiBtaWNyb3NlY29uZCBwYXJ0 LiAgVGh1cyB0aGUgVVNFQ19ST1VORCwgdGhlIGJpdHMgdG8gYmUgc2hpZnRlZCBvZmYuCi0gKiBJ bnN0cnVjdGlvbiB3aXNlLCB0aGlzIHNob3VsZCBjb3N0IG9ubHkgYW4gYWRkaXRpb25hbCBhZGQg d2l0aCBjYXJyeQotICogaW5zdHJ1Y3Rpb24gYWJvdmUgdGhlIHdheSBpdCB3YXMgZG9uZSBhYm92 ZS4KKyAqIFdlIGNvdWxkIGluc3RlYWQgcm91bmQgaW4gdGhlIGludGVybWVkaWF0ZSBzY2FsZWQg cmVwcmVzZW50YXRpb24KKyAqIChpLmUuIGluIHVuaXRzIG9mIDEvMl4obGFyZ2Ugc2NhbGUpIGpp ZmZpZXMpIGJ1dCB0aGF0J3MgYWxzbworICogcGVyaWxvdXM6IHRoZSBzY2FsaW5nIGludHJvZHVj ZXMgYSBzbWFsbCBwb3NpdGl2ZSBlcnJvciwgd2hpY2gKKyAqIGNvbWJpbmVkIHdpdGggYSBkaXZp c2lvbi1yb3VuZGluZy11cHdhcmQgKGkuZS4gYWRkaW5nIDJeKHNjYWxlKSAtIDEKKyAqIHVuaXRz IHRvIHRoZSBpbnRlcm1lZGlhdGUgYmVmb3JlIHNoaWZ0aW5nKSBsZWFkcyB0byBhY2NpZGVudGFs CisgKiBvdmVyZmxvdyBhbmQgb3ZlcmVzdGltYXRlcy4KKyAqCisgKiBBdCB0aGUgY29zdCBvZiBv bmUgYWRkaXRpb25hbCBtdWx0aXBsaWNhdGlvbiBieSBhIGNvbnN0YW50LCBqdXN0CisgKiB1c2Ug dGhlIHRpbWVzcGVjIGltcGxlbWVudGF0aW9uLgogICovCiB1bnNpZ25lZCBsb25nCiB0aW1ldmFs X3RvX2ppZmZpZXMoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnZhbHVlKQogewotCXVuc2lnbmVkIGxv bmcgc2VjID0gdmFsdWUtPnR2X3NlYzsKLQlsb25nIHVzZWMgPSB2YWx1ZS0+dHZfdXNlYzsKLQot CWlmIChzZWMgPj0gTUFYX1NFQ19JTl9KSUZGSUVTKXsKLQkJc2VjID0gTUFYX1NFQ19JTl9KSUZG SUVTOwotCQl1c2VjID0gMDsKLQl9Ci0JcmV0dXJuICgoKHU2NClzZWMgKiBTRUNfQ09OVkVSU0lP TikgKwotCQkoKCh1NjQpdXNlYyAqIFVTRUNfQ09OVkVSU0lPTiArIFVTRUNfUk9VTkQpID4+Ci0J CSAoVVNFQ19KSUZGSUVfU0MgLSBTRUNfSklGRklFX1NDKSkpID4+IFNFQ19KSUZGSUVfU0M7CisJ cmV0dXJuIF9fdGltZXNwZWNfdG9famlmZmllcyh2YWx1ZS0+dHZfc2VjLAorCQkJCSAgICAgdmFs dWUtPnR2X3VzZWMgKiBOU0VDX1BFUl9VU0VDKTsKIH0KIEVYUE9SVF9TWU1CT0wodGltZXZhbF90 b19qaWZmaWVzKTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvYWxhcm10aW1lci5jIGIva2Vy bmVsL3RpbWUvYWxhcm10aW1lci5jCmluZGV4IGViMTk4YTMuLjdlYWYxNjIgMTAwNjQ0Ci0tLSBh L2tlcm5lbC90aW1lL2FsYXJtdGltZXIuYworKysgYi9rZXJuZWwvdGltZS9hbGFybXRpbWVyLmMK QEAgLTIyNiw2ICsyMjYsMTIgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFsYXJtdGlt ZXJfZmlyZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCiB9CiAKK2t0aW1lX3QgYWxhcm1fZXhw aXJlc19yZW1haW5pbmcoY29uc3Qgc3RydWN0IGFsYXJtICphbGFybSkKK3sKKwlzdHJ1Y3QgYWxh cm1fYmFzZSAqYmFzZSA9ICZhbGFybV9iYXNlc1thbGFybS0+dHlwZV07CisJcmV0dXJuIGt0aW1l X3N1YihhbGFybS0+bm9kZS5leHBpcmVzLCBiYXNlLT5nZXR0aW1lKCkpOworfQorCiAjaWZkZWYg Q09ORklHX1JUQ19DTEFTUwogLyoqCiAgKiBhbGFybXRpbWVyX3N1c3BlbmQgLSBTdXNwZW5kIHRp bWUgY2FsbGJhY2sKQEAgLTQ0MiwxOCArNDQ4LDI2IEBAIHN0YXRpYyBlbnVtIGFsYXJtdGltZXJf dHlwZSBjbG9jazJhbGFybShjbG9ja2lkX3QgY2xvY2tpZCkKIHN0YXRpYyBlbnVtIGFsYXJtdGlt ZXJfcmVzdGFydCBhbGFybV9oYW5kbGVfdGltZXIoc3RydWN0IGFsYXJtICphbGFybSwKIAkJCQkJ CQlrdGltZV90IG5vdykKIHsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBrX2l0aW1l ciAqcHRyID0gY29udGFpbmVyX29mKGFsYXJtLCBzdHJ1Y3Qga19pdGltZXIsCiAJCQkJCQlpdC5h bGFybS5hbGFybXRpbWVyKTsKLQlpZiAocG9zaXhfdGltZXJfZXZlbnQocHRyLCAwKSAhPSAwKQot CQlwdHItPml0X292ZXJydW4rKzsKKwllbnVtIGFsYXJtdGltZXJfcmVzdGFydCByZXN1bHQgPSBB TEFSTVRJTUVSX05PUkVTVEFSVDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZwdHItPml0X2xvY2ss IGZsYWdzKTsKKwlpZiAoKHB0ci0+aXRfc2lnZXZfbm90aWZ5ICYgflNJR0VWX1RIUkVBRF9JRCkg IT0gU0lHRVZfTk9ORSkgeworCQlpZiAocG9zaXhfdGltZXJfZXZlbnQocHRyLCAwKSAhPSAwKQor CQkJcHRyLT5pdF9vdmVycnVuKys7CisJfQogCiAJLyogUmUtYWRkIHBlcmlvZGljIHRpbWVycyAq LwogCWlmIChwdHItPml0LmFsYXJtLmludGVydmFsLnR2NjQpIHsKIAkJcHRyLT5pdF9vdmVycnVu ICs9IGFsYXJtX2ZvcndhcmQoYWxhcm0sIG5vdywKIAkJCQkJCXB0ci0+aXQuYWxhcm0uaW50ZXJ2 YWwpOwotCQlyZXR1cm4gQUxBUk1USU1FUl9SRVNUQVJUOworCQlyZXN1bHQgPSBBTEFSTVRJTUVS X1JFU1RBUlQ7CiAJfQotCXJldHVybiBBTEFSTVRJTUVSX05PUkVTVEFSVDsKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZwdHItPml0X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiByZXN1bHQ7CiB9 CiAKIC8qKgpAQCAtNTE5LDE4ICs1MzMsMjIgQEAgc3RhdGljIGludCBhbGFybV90aW1lcl9jcmVh dGUoc3RydWN0IGtfaXRpbWVyICpuZXdfdGltZXIpCiAgKiBAbmV3X3RpbWVyOiBrX2l0aW1lciBw b2ludGVyCiAgKiBAY3VyX3NldHRpbmc6IGl0aW1lcnNwZWMgZGF0YSB0byBmaWxsCiAgKgotICog Q29waWVzIHRoZSBpdGltZXJzcGVjIGRhdGEgb3V0IGZyb20gdGhlIGtfaXRpbWVyCisgKiBDb3Bp ZXMgb3V0IHRoZSBjdXJyZW50IGl0aW1lcnNwZWMgZGF0YQogICovCiBzdGF0aWMgdm9pZCBhbGFy bV90aW1lcl9nZXQoc3RydWN0IGtfaXRpbWVyICp0aW1yLAogCQkJCXN0cnVjdCBpdGltZXJzcGVj ICpjdXJfc2V0dGluZykKIHsKLQltZW1zZXQoY3VyX3NldHRpbmcsIDAsIHNpemVvZihzdHJ1Y3Qg aXRpbWVyc3BlYykpOworCWt0aW1lX3QgcmVsYXRpdmVfZXhwaXJ5X3RpbWUgPQorCQlhbGFybV9l eHBpcmVzX3JlbWFpbmluZygmKHRpbXItPml0LmFsYXJtLmFsYXJtdGltZXIpKTsKKworCWlmIChr dGltZV90b19ucyhyZWxhdGl2ZV9leHBpcnlfdGltZSkgPiAwKSB7CisJCWN1cl9zZXR0aW5nLT5p dF92YWx1ZSA9IGt0aW1lX3RvX3RpbWVzcGVjKHJlbGF0aXZlX2V4cGlyeV90aW1lKTsKKwl9IGVs c2UgeworCQljdXJfc2V0dGluZy0+aXRfdmFsdWUudHZfc2VjID0gMDsKKwkJY3VyX3NldHRpbmct Pml0X3ZhbHVlLnR2X25zZWMgPSAwOworCX0KIAotCWN1cl9zZXR0aW5nLT5pdF9pbnRlcnZhbCA9 Ci0JCQlrdGltZV90b190aW1lc3BlYyh0aW1yLT5pdC5hbGFybS5pbnRlcnZhbCk7Ci0JY3VyX3Nl dHRpbmctPml0X3ZhbHVlID0KLQkJa3RpbWVfdG9fdGltZXNwZWModGltci0+aXQuYWxhcm0uYWxh cm10aW1lci5ub2RlLmV4cGlyZXMpOwotCXJldHVybjsKKwljdXJfc2V0dGluZy0+aXRfaW50ZXJ2 YWwgPSBrdGltZV90b190aW1lc3BlYyh0aW1yLT5pdC5hbGFybS5pbnRlcnZhbCk7CiB9CiAKIC8q KgpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IDA5ZDZhOWQu LjdkMjZlYTUgMTAwNjQ0Ci0tLSBhL21tL21pZ3JhdGUuYworKysgYi9tbS9taWdyYXRlLmMKQEAg LTE0MSw4ICsxNDEsMTEgQEAgc3RhdGljIGludCByZW1vdmVfbWlncmF0aW9uX3B0ZShzdHJ1Y3Qg cGFnZSAqbmV3LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAogCWdldF9wYWdlKG5ldyk7 CiAJcHRlID0gcHRlX21rb2xkKG1rX3B0ZShuZXcsIHZtYS0+dm1fcGFnZV9wcm90KSk7CisKKwkv KiBSZWNoZWNrIFZNQSBhcyBwZXJtaXNzaW9ucyBjYW4gY2hhbmdlIHNpbmNlIG1pZ3JhdGlvbiBz dGFydGVkICAqLwogCWlmIChpc193cml0ZV9taWdyYXRpb25fZW50cnkoZW50cnkpKQotCQlwdGUg PSBwdGVfbWt3cml0ZShwdGUpOworCQlwdGUgPSBtYXliZV9ta3dyaXRlKHB0ZSwgdm1hKTsKKwog I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIAlpZiAoUGFnZUh1Z2UobmV3KSkKIAkJcHRlID0g cHRlX21raHVnZShwdGUpOwpkaWZmIC0tZ2l0IGEvbW0vcGVyY3B1LXZtLmMgYi9tbS9wZXJjcHUt dm0uYwppbmRleCAxMmE0OGE4OC4uMDUzOWY2YSAxMDA2NDQKLS0tIGEvbW0vcGVyY3B1LXZtLmMK KysrIGIvbW0vcGVyY3B1LXZtLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgaW50IHBjcHVf YWxsb2NfcGFnZXMoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rLAogCQkJICAgIGludCBwYWdlX3N0 YXJ0LCBpbnQgcGFnZV9lbmQpCiB7CiAJY29uc3QgZ2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTCB8IF9f R0ZQX0hJR0hNRU0gfCBfX0dGUF9DT0xEOwotCXVuc2lnbmVkIGludCBjcHU7CisJdW5zaWduZWQg aW50IGNwdSwgdGNwdTsKIAlpbnQgaTsKIAogCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsK QEAgLTExNiwxNCArMTE2LDIzIEBAIHN0YXRpYyBpbnQgcGNwdV9hbGxvY19wYWdlcyhzdHJ1Y3Qg cGNwdV9jaHVuayAqY2h1bmssCiAJCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VwID0gJnBhZ2VzW3BjcHVf cGFnZV9pZHgoY3B1LCBpKV07CiAKIAkJCSpwYWdlcCA9IGFsbG9jX3BhZ2VzX25vZGUoY3B1X3Rv X25vZGUoY3B1KSwgZ2ZwLCAwKTsKLQkJCWlmICghKnBhZ2VwKSB7Ci0JCQkJcGNwdV9mcmVlX3Bh Z2VzKGNodW5rLCBwYWdlcywgcG9wdWxhdGVkLAotCQkJCQkJcGFnZV9zdGFydCwgcGFnZV9lbmQp OwotCQkJCXJldHVybiAtRU5PTUVNOwotCQkJfQorCQkJaWYgKCEqcGFnZXApCisJCQkJZ290byBl cnI7CiAJCX0KIAl9CiAJcmV0dXJuIDA7CisKK2VycjoKKwl3aGlsZSAoLS1pID49IHBhZ2Vfc3Rh cnQpCisJCV9fZnJlZV9wYWdlKHBhZ2VzW3BjcHVfcGFnZV9pZHgoY3B1LCBpKV0pOworCisJZm9y X2VhY2hfcG9zc2libGVfY3B1KHRjcHUpIHsKKwkJaWYgKHRjcHUgPT0gY3B1KQorCQkJYnJlYWs7 CisJCWZvciAoaSA9IHBhZ2Vfc3RhcnQ7IGkgPCBwYWdlX2VuZDsgaSsrKQorCQkJX19mcmVlX3Bh Z2UocGFnZXNbcGNwdV9wYWdlX2lkeCh0Y3B1LCBpKV0pOworCX0KKwlyZXR1cm4gLUVOT01FTTsK IH0KIAogLyoqCkBAIC0yNjQsNiArMjczLDcgQEAgZXJyOgogCQlfX3BjcHVfdW5tYXBfcGFnZXMo cGNwdV9jaHVua19hZGRyKGNodW5rLCB0Y3B1LCBwYWdlX3N0YXJ0KSwKIAkJCQkgICBwYWdlX2Vu ZCAtIHBhZ2Vfc3RhcnQpOwogCX0KKwlwY3B1X3Bvc3RfdW5tYXBfdGxiX2ZsdXNoKGNodW5rLCBw YWdlX3N0YXJ0LCBwYWdlX2VuZCk7CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvbW0v cGVyY3B1LmMgYi9tbS9wZXJjcHUuYwppbmRleCA1YzI5NzUwLi5lMjlhMWM0IDEwMDY0NAotLS0g YS9tbS9wZXJjcHUuYworKysgYi9tbS9wZXJjcHUuYwpAQCAtMTg5NSw2ICsxODk1LDggQEAgdm9p ZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKQogCiAJaWYgKHBjcHVfc2V0dXBfZmly c3RfY2h1bmsoYWksIGZjKSA8IDApCiAJCXBhbmljKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwZXJj cHUgYXJlYXMuIik7CisKKwlwY3B1X2ZyZWVfYWxsb2NfaW5mbyhhaSk7CiB9CiAKICNlbmRpZgkv KiBDT05GSUdfU01QICovCmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwppbmRl eCAxMzcxMDIxLi44M2VmYWM2IDEwMDY0NAotLS0gYS9tbS9zaG1lbS5jCisrKyBiL21tL3NobWVt LmMKQEAgLTE3MTksOCArMTcxOSwxMCBAQCBzdGF0aWMgaW50IHNobWVtX3JlbmFtZShzdHJ1Y3Qg aW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdAogCiAJaWYg KG5ld19kZW50cnktPmRfaW5vZGUpIHsKIAkJKHZvaWQpIHNobWVtX3VubGluayhuZXdfZGlyLCBu ZXdfZGVudHJ5KTsKLQkJaWYgKHRoZXlfYXJlX2RpcnMpCisJCWlmICh0aGV5X2FyZV9kaXJzKSB7 CisJCQlkcm9wX25saW5rKG5ld19kZW50cnktPmRfaW5vZGUpOwogCQkJZHJvcF9ubGluayhvbGRf ZGlyKTsKKwkJfQogCX0gZWxzZSBpZiAodGhleV9hcmVfZGlycykgewogCQlkcm9wX25saW5rKG9s ZF9kaXIpOwogCQlpbmNfbmxpbmsobmV3X2Rpcik7CmRpZmYgLS1naXQgYS9uZXQvY2VwaC9hdXRo X3guYyBiL25ldC9jZXBoL2F1dGhfeC5jCmluZGV4IDE1ODdkYzYuLjk4OThkMWYgMTAwNjQ0Ci0t LSBhL25ldC9jZXBoL2F1dGhfeC5jCisrKyBiL25ldC9jZXBoL2F1dGhfeC5jCkBAIC0xMyw4ICsx Myw2IEBACiAjaW5jbHVkZSAiYXV0aF94LmgiCiAjaW5jbHVkZSAiYXV0aF94X3Byb3RvY29sLmgi CiAKLSNkZWZpbmUgVEVNUF9USUNLRVRfQlVGX0xFTgkyNTYKLQogc3RhdGljIHZvaWQgY2VwaF94 X3ZhbGlkYXRlX3RpY2tldHMoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjLCBpbnQgKnBuZWVk KTsKIAogc3RhdGljIGludCBjZXBoX3hfaXNfYXV0aGVudGljYXRlZChzdHJ1Y3QgY2VwaF9hdXRo X2NsaWVudCAqYWMpCkBAIC02NCw3ICs2Miw3IEBAIHN0YXRpYyBpbnQgY2VwaF94X2VuY3J5cHQo c3RydWN0IGNlcGhfY3J5cHRvX2tleSAqc2VjcmV0LAogfQogCiBzdGF0aWMgaW50IGNlcGhfeF9k ZWNyeXB0KHN0cnVjdCBjZXBoX2NyeXB0b19rZXkgKnNlY3JldCwKLQkJCSAgdm9pZCAqKnAsIHZv aWQgKmVuZCwgdm9pZCAqb2J1Ziwgc2l6ZV90IG9sZW4pCisJCQkgIHZvaWQgKipwLCB2b2lkICpl bmQsIHZvaWQgKipvYnVmLCBzaXplX3Qgb2xlbikKIHsKIAlzdHJ1Y3QgY2VwaF94X2VuY3J5cHRf aGVhZGVyIGhlYWQ7CiAJc2l6ZV90IGhlYWRfbGVuID0gc2l6ZW9mKGhlYWQpOwpAQCAtNzUsOCAr NzMsMTQgQEAgc3RhdGljIGludCBjZXBoX3hfZGVjcnlwdChzdHJ1Y3QgY2VwaF9jcnlwdG9fa2V5 ICpzZWNyZXQsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJZG91dCgiY2VwaF94X2RlY3J5cHQgbGVu ICVkXG4iLCBsZW4pOwotCXJldCA9IGNlcGhfZGVjcnlwdDIoc2VjcmV0LCAmaGVhZCwgJmhlYWRf bGVuLCBvYnVmLCAmb2xlbiwKLQkJCSAgICAqcCwgbGVuKTsKKwlpZiAoKm9idWYgPT0gTlVMTCkg eworCQkqb2J1ZiA9IGttYWxsb2MobGVuLCBHRlBfTk9GUyk7CisJCWlmICghKm9idWYpCisJCQly ZXR1cm4gLUVOT01FTTsKKwkJb2xlbiA9IGxlbjsKKwl9CisKKwlyZXQgPSBjZXBoX2RlY3J5cHQy KHNlY3JldCwgJmhlYWQsICZoZWFkX2xlbiwgKm9idWYsICZvbGVuLCAqcCwgbGVuKTsKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCWlmIChoZWFkLnN0cnVjdF92ICE9IDEgfHwgbGU2NF90b19j cHUoaGVhZC5tYWdpYykgIT0gQ0VQSFhfRU5DX01BR0lDKQpAQCAtMTI5LDEzOSArMTMzLDEyMCBA QCBzdGF0aWMgdm9pZCByZW1vdmVfdGlja2V0X2hhbmRsZXIoc3RydWN0IGNlcGhfYXV0aF9jbGll bnQgKmFjLAogCWtmcmVlKHRoKTsKIH0KIAotc3RhdGljIGludCBjZXBoX3hfcHJvY190aWNrZXRf cmVwbHkoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjLAotCQkJCSAgICBzdHJ1Y3QgY2VwaF9j cnlwdG9fa2V5ICpzZWNyZXQsCi0JCQkJICAgIHZvaWQgKmJ1Ziwgdm9pZCAqZW5kKQorc3RhdGlj IGludCBwcm9jZXNzX29uZV90aWNrZXQoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjLAorCQkJ ICAgICAgc3RydWN0IGNlcGhfY3J5cHRvX2tleSAqc2VjcmV0LAorCQkJICAgICAgdm9pZCAqKnAs IHZvaWQgKmVuZCkKIHsKIAlzdHJ1Y3QgY2VwaF94X2luZm8gKnhpID0gYWMtPnByaXZhdGU7Ci0J aW50IG51bTsKLQl2b2lkICpwID0gYnVmOworCWludCB0eXBlOworCXU4IHRrdF9zdHJ1Y3Rfdiwg YmxvYl9zdHJ1Y3RfdjsKKwlzdHJ1Y3QgY2VwaF94X3RpY2tldF9oYW5kbGVyICp0aDsKKwl2b2lk ICpkYnVmID0gTlVMTDsKKwl2b2lkICpkcCwgKmRlbmQ7CisJaW50IGRsZW47CisJY2hhciBpc19l bmM7CisJc3RydWN0IHRpbWVzcGVjIHZhbGlkaXR5OworCXN0cnVjdCBjZXBoX2NyeXB0b19rZXkg b2xkX2tleTsKKwl2b2lkICp0aWNrZXRfYnVmID0gTlVMTDsKKwl2b2lkICp0cCwgKnRwZW5kOwor CXN0cnVjdCBjZXBoX3RpbWVzcGVjIG5ld192YWxpZGl0eTsKKwlzdHJ1Y3QgY2VwaF9jcnlwdG9f a2V5IG5ld19zZXNzaW9uX2tleTsKKwlzdHJ1Y3QgY2VwaF9idWZmZXIgKm5ld190aWNrZXRfYmxv YjsKKwl1bnNpZ25lZCBsb25nIG5ld19leHBpcmVzLCBuZXdfcmVuZXdfYWZ0ZXI7CisJdTY0IG5l d19zZWNyZXRfaWQ7CiAJaW50IHJldDsKLQljaGFyICpkYnVmOwotCWNoYXIgKnRpY2tldF9idWY7 Ci0JdTggcmVwbHlfc3RydWN0X3Y7CiAKLQlkYnVmID0ga21hbGxvYyhURU1QX1RJQ0tFVF9CVUZf TEVOLCBHRlBfTk9GUyk7Ci0JaWYgKCFkYnVmKQotCQlyZXR1cm4gLUVOT01FTTsKKwljZXBoX2Rl Y29kZV9uZWVkKHAsIGVuZCwgc2l6ZW9mKHUzMikgKyAxLCBiYWQpOwogCi0JcmV0ID0gLUVOT01F TTsKLQl0aWNrZXRfYnVmID0ga21hbGxvYyhURU1QX1RJQ0tFVF9CVUZfTEVOLCBHRlBfTk9GUyk7 Ci0JaWYgKCF0aWNrZXRfYnVmKQotCQlnb3RvIG91dF9kYnVmOworCXR5cGUgPSBjZXBoX2RlY29k ZV8zMihwKTsKKwlkb3V0KCIgdGlja2V0IHR5cGUgJWQgJXNcbiIsIHR5cGUsIGNlcGhfZW50aXR5 X3R5cGVfbmFtZSh0eXBlKSk7CiAKLQljZXBoX2RlY29kZV9uZWVkKCZwLCBlbmQsIDEgKyBzaXpl b2YodTMyKSwgYmFkKTsKLQlyZXBseV9zdHJ1Y3RfdiA9IGNlcGhfZGVjb2RlXzgoJnApOwotCWlm IChyZXBseV9zdHJ1Y3RfdiAhPSAxKQorCXRrdF9zdHJ1Y3RfdiA9IGNlcGhfZGVjb2RlXzgocCk7 CisJaWYgKHRrdF9zdHJ1Y3RfdiAhPSAxKQogCQlnb3RvIGJhZDsKLQludW0gPSBjZXBoX2RlY29k ZV8zMigmcCk7Ci0JZG91dCgiJWQgdGlja2V0c1xuIiwgbnVtKTsKLQl3aGlsZSAobnVtLS0pIHsK LQkJaW50IHR5cGU7Ci0JCXU4IHRrdF9zdHJ1Y3RfdiwgYmxvYl9zdHJ1Y3RfdjsKLQkJc3RydWN0 IGNlcGhfeF90aWNrZXRfaGFuZGxlciAqdGg7Ci0JCXZvaWQgKmRwLCAqZGVuZDsKLQkJaW50IGRs ZW47Ci0JCWNoYXIgaXNfZW5jOwotCQlzdHJ1Y3QgdGltZXNwZWMgdmFsaWRpdHk7Ci0JCXN0cnVj dCBjZXBoX2NyeXB0b19rZXkgb2xkX2tleTsKLQkJdm9pZCAqdHAsICp0cGVuZDsKLQkJc3RydWN0 IGNlcGhfdGltZXNwZWMgbmV3X3ZhbGlkaXR5OwotCQlzdHJ1Y3QgY2VwaF9jcnlwdG9fa2V5IG5l d19zZXNzaW9uX2tleTsKLQkJc3RydWN0IGNlcGhfYnVmZmVyICpuZXdfdGlja2V0X2Jsb2I7Ci0J CXVuc2lnbmVkIGxvbmcgbmV3X2V4cGlyZXMsIG5ld19yZW5ld19hZnRlcjsKLQkJdTY0IG5ld19z ZWNyZXRfaWQ7Ci0KLQkJY2VwaF9kZWNvZGVfbmVlZCgmcCwgZW5kLCBzaXplb2YodTMyKSArIDEs IGJhZCk7Ci0KLQkJdHlwZSA9IGNlcGhfZGVjb2RlXzMyKCZwKTsKLQkJZG91dCgiIHRpY2tldCB0 eXBlICVkICVzXG4iLCB0eXBlLCBjZXBoX2VudGl0eV90eXBlX25hbWUodHlwZSkpOwotCi0JCXRr dF9zdHJ1Y3RfdiA9IGNlcGhfZGVjb2RlXzgoJnApOwotCQlpZiAodGt0X3N0cnVjdF92ICE9IDEp Ci0JCQlnb3RvIGJhZDsKLQotCQl0aCA9IGdldF90aWNrZXRfaGFuZGxlcihhYywgdHlwZSk7Ci0J CWlmIChJU19FUlIodGgpKSB7Ci0JCQlyZXQgPSBQVFJfRVJSKHRoKTsKLQkJCWdvdG8gb3V0Owot CQl9CiAKLQkJLyogYmxvYiBmb3IgbWUgKi8KLQkJZGxlbiA9IGNlcGhfeF9kZWNyeXB0KHNlY3Jl dCwgJnAsIGVuZCwgZGJ1ZiwKLQkJCQkgICAgICBURU1QX1RJQ0tFVF9CVUZfTEVOKTsKLQkJaWYg KGRsZW4gPD0gMCkgewotCQkJcmV0ID0gZGxlbjsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JCWRvdXQo IiBkZWNyeXB0ZWQgJWQgYnl0ZXNcbiIsIGRsZW4pOwotCQlkZW5kID0gZGJ1ZiArIGRsZW47Ci0J CWRwID0gZGJ1ZjsKKwl0aCA9IGdldF90aWNrZXRfaGFuZGxlcihhYywgdHlwZSk7CisJaWYgKElT X0VSUih0aCkpIHsKKwkJcmV0ID0gUFRSX0VSUih0aCk7CisJCWdvdG8gb3V0OworCX0KIAotCQl0 a3Rfc3RydWN0X3YgPSBjZXBoX2RlY29kZV84KCZkcCk7Ci0JCWlmICh0a3Rfc3RydWN0X3YgIT0g MSkKLQkJCWdvdG8gYmFkOworCS8qIGJsb2IgZm9yIG1lICovCisJZGxlbiA9IGNlcGhfeF9kZWNy eXB0KHNlY3JldCwgcCwgZW5kLCAmZGJ1ZiwgMCk7CisJaWYgKGRsZW4gPD0gMCkgeworCQlyZXQg PSBkbGVuOworCQlnb3RvIG91dDsKKwl9CisJZG91dCgiIGRlY3J5cHRlZCAlZCBieXRlc1xuIiwg ZGxlbik7CisJZHAgPSBkYnVmOworCWRlbmQgPSBkcCArIGRsZW47CiAKLQkJbWVtY3B5KCZvbGRf a2V5LCAmdGgtPnNlc3Npb25fa2V5LCBzaXplb2Yob2xkX2tleSkpOwotCQlyZXQgPSBjZXBoX2Ny eXB0b19rZXlfZGVjb2RlKCZuZXdfc2Vzc2lvbl9rZXksICZkcCwgZGVuZCk7Ci0JCWlmIChyZXQp Ci0JCQlnb3RvIG91dDsKKwl0a3Rfc3RydWN0X3YgPSBjZXBoX2RlY29kZV84KCZkcCk7CisJaWYg KHRrdF9zdHJ1Y3RfdiAhPSAxKQorCQlnb3RvIGJhZDsKIAotCQljZXBoX2RlY29kZV9jb3B5KCZk cCwgJm5ld192YWxpZGl0eSwgc2l6ZW9mKG5ld192YWxpZGl0eSkpOwotCQljZXBoX2RlY29kZV90 aW1lc3BlYygmdmFsaWRpdHksICZuZXdfdmFsaWRpdHkpOwotCQluZXdfZXhwaXJlcyA9IGdldF9z ZWNvbmRzKCkgKyB2YWxpZGl0eS50dl9zZWM7Ci0JCW5ld19yZW5ld19hZnRlciA9IG5ld19leHBp cmVzIC0gKHZhbGlkaXR5LnR2X3NlYyAvIDQpOwotCQlkb3V0KCIgZXhwaXJlcz0lbHUgcmVuZXdf YWZ0ZXI9JWx1XG4iLCBuZXdfZXhwaXJlcywKLQkJICAgICBuZXdfcmVuZXdfYWZ0ZXIpOworCW1l bWNweSgmb2xkX2tleSwgJnRoLT5zZXNzaW9uX2tleSwgc2l6ZW9mKG9sZF9rZXkpKTsKKwlyZXQg PSBjZXBoX2NyeXB0b19rZXlfZGVjb2RlKCZuZXdfc2Vzc2lvbl9rZXksICZkcCwgZGVuZCk7CisJ aWYgKHJldCkKKwkJZ290byBvdXQ7CiAKLQkJLyogdGlja2V0IGJsb2IgZm9yIHNlcnZpY2UgKi8K LQkJY2VwaF9kZWNvZGVfOF9zYWZlKCZwLCBlbmQsIGlzX2VuYywgYmFkKTsKLQkJdHAgPSB0aWNr ZXRfYnVmOwotCQlpZiAoaXNfZW5jKSB7Ci0JCQkvKiBlbmNyeXB0ZWQgKi8KLQkJCWRvdXQoIiBl bmNyeXB0ZWQgdGlja2V0XG4iKTsKLQkJCWRsZW4gPSBjZXBoX3hfZGVjcnlwdCgmb2xkX2tleSwg JnAsIGVuZCwgdGlja2V0X2J1ZiwKLQkJCQkJICAgICAgVEVNUF9USUNLRVRfQlVGX0xFTik7Ci0J CQlpZiAoZGxlbiA8IDApIHsKLQkJCQlyZXQgPSBkbGVuOwotCQkJCWdvdG8gb3V0OwotCQkJfQot CQkJZGxlbiA9IGNlcGhfZGVjb2RlXzMyKCZ0cCk7Ci0JCX0gZWxzZSB7Ci0JCQkvKiB1bmVuY3J5 cHRlZCAqLwotCQkJY2VwaF9kZWNvZGVfMzJfc2FmZSgmcCwgZW5kLCBkbGVuLCBiYWQpOwotCQkJ Y2VwaF9kZWNvZGVfbmVlZCgmcCwgZW5kLCBkbGVuLCBiYWQpOwotCQkJY2VwaF9kZWNvZGVfY29w eSgmcCwgdGlja2V0X2J1ZiwgZGxlbik7CisJY2VwaF9kZWNvZGVfY29weSgmZHAsICZuZXdfdmFs aWRpdHksIHNpemVvZihuZXdfdmFsaWRpdHkpKTsKKwljZXBoX2RlY29kZV90aW1lc3BlYygmdmFs aWRpdHksICZuZXdfdmFsaWRpdHkpOworCW5ld19leHBpcmVzID0gZ2V0X3NlY29uZHMoKSArIHZh bGlkaXR5LnR2X3NlYzsKKwluZXdfcmVuZXdfYWZ0ZXIgPSBuZXdfZXhwaXJlcyAtICh2YWxpZGl0 eS50dl9zZWMgLyA0KTsKKwlkb3V0KCIgZXhwaXJlcz0lbHUgcmVuZXdfYWZ0ZXI9JWx1XG4iLCBu ZXdfZXhwaXJlcywKKwkgICAgIG5ld19yZW5ld19hZnRlcik7CisKKwkvKiB0aWNrZXQgYmxvYiBm b3Igc2VydmljZSAqLworCWNlcGhfZGVjb2RlXzhfc2FmZShwLCBlbmQsIGlzX2VuYywgYmFkKTsK KwlpZiAoaXNfZW5jKSB7CisJCS8qIGVuY3J5cHRlZCAqLworCQlkb3V0KCIgZW5jcnlwdGVkIHRp Y2tldFxuIik7CisJCWRsZW4gPSBjZXBoX3hfZGVjcnlwdCgmb2xkX2tleSwgcCwgZW5kLCAmdGlj a2V0X2J1ZiwgMCk7CisJCWlmIChkbGVuIDwgMCkgeworCQkJcmV0ID0gZGxlbjsKKwkJCWdvdG8g b3V0OwogCQl9Ci0JCXRwZW5kID0gdHAgKyBkbGVuOwotCQlkb3V0KCIgdGlja2V0IGJsb2IgaXMg JWQgYnl0ZXNcbiIsIGRsZW4pOwotCQljZXBoX2RlY29kZV9uZWVkKCZ0cCwgdHBlbmQsIDEgKyBz aXplb2YodTY0KSwgYmFkKTsKLQkJYmxvYl9zdHJ1Y3RfdiA9IGNlcGhfZGVjb2RlXzgoJnRwKTsK LQkJbmV3X3NlY3JldF9pZCA9IGNlcGhfZGVjb2RlXzY0KCZ0cCk7Ci0JCXJldCA9IGNlcGhfZGVj b2RlX2J1ZmZlcigmbmV3X3RpY2tldF9ibG9iLCAmdHAsIHRwZW5kKTsKLQkJaWYgKHJldCkKKwkJ dHAgPSB0aWNrZXRfYnVmOworCQlkbGVuID0gY2VwaF9kZWNvZGVfMzIoJnRwKTsKKwl9IGVsc2Ug eworCQkvKiB1bmVuY3J5cHRlZCAqLworCQljZXBoX2RlY29kZV8zMl9zYWZlKHAsIGVuZCwgZGxl biwgYmFkKTsKKwkJdGlja2V0X2J1ZiA9IGttYWxsb2MoZGxlbiwgR0ZQX05PRlMpOworCQlpZiAo IXRpY2tldF9idWYpIHsKKwkJCXJldCA9IC1FTk9NRU07CiAJCQlnb3RvIG91dDsKLQotCQkvKiBh bGwgaXMgd2VsbCwgdXBkYXRlIG91ciB0aWNrZXQgKi8KLQkJY2VwaF9jcnlwdG9fa2V5X2Rlc3Ry b3koJnRoLT5zZXNzaW9uX2tleSk7Ci0JCWlmICh0aC0+dGlja2V0X2Jsb2IpCi0JCQljZXBoX2J1 ZmZlcl9wdXQodGgtPnRpY2tldF9ibG9iKTsKLQkJdGgtPnNlc3Npb25fa2V5ID0gbmV3X3Nlc3Np b25fa2V5OwotCQl0aC0+dGlja2V0X2Jsb2IgPSBuZXdfdGlja2V0X2Jsb2I7Ci0JCXRoLT52YWxp ZGl0eSA9IG5ld192YWxpZGl0eTsKLQkJdGgtPnNlY3JldF9pZCA9IG5ld19zZWNyZXRfaWQ7Ci0J CXRoLT5leHBpcmVzID0gbmV3X2V4cGlyZXM7Ci0JCXRoLT5yZW5ld19hZnRlciA9IG5ld19yZW5l d19hZnRlcjsKLQkJZG91dCgiIGdvdCB0aWNrZXQgc2VydmljZSAlZCAoJXMpIHNlY3JldF9pZCAl bGxkIGxlbiAlZFxuIiwKLQkJICAgICB0eXBlLCBjZXBoX2VudGl0eV90eXBlX25hbWUodHlwZSks IHRoLT5zZWNyZXRfaWQsCi0JCSAgICAgKGludCl0aC0+dGlja2V0X2Jsb2ItPnZlYy5pb3ZfbGVu KTsKLQkJeGktPmhhdmVfa2V5cyB8PSB0aC0+c2VydmljZTsKKwkJfQorCQl0cCA9IHRpY2tldF9i dWY7CisJCWNlcGhfZGVjb2RlX25lZWQocCwgZW5kLCBkbGVuLCBiYWQpOworCQljZXBoX2RlY29k ZV9jb3B5KHAsIHRpY2tldF9idWYsIGRsZW4pOwogCX0KKwl0cGVuZCA9IHRwICsgZGxlbjsKKwlk b3V0KCIgdGlja2V0IGJsb2IgaXMgJWQgYnl0ZXNcbiIsIGRsZW4pOworCWNlcGhfZGVjb2RlX25l ZWQoJnRwLCB0cGVuZCwgMSArIHNpemVvZih1NjQpLCBiYWQpOworCWJsb2Jfc3RydWN0X3YgPSBj ZXBoX2RlY29kZV84KCZ0cCk7CisJbmV3X3NlY3JldF9pZCA9IGNlcGhfZGVjb2RlXzY0KCZ0cCk7 CisJcmV0ID0gY2VwaF9kZWNvZGVfYnVmZmVyKCZuZXdfdGlja2V0X2Jsb2IsICZ0cCwgdHBlbmQp OworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJLyogYWxsIGlzIHdlbGwsIHVwZGF0ZSBvdXIg dGlja2V0ICovCisJY2VwaF9jcnlwdG9fa2V5X2Rlc3Ryb3koJnRoLT5zZXNzaW9uX2tleSk7CisJ aWYgKHRoLT50aWNrZXRfYmxvYikKKwkJY2VwaF9idWZmZXJfcHV0KHRoLT50aWNrZXRfYmxvYik7 CisJdGgtPnNlc3Npb25fa2V5ID0gbmV3X3Nlc3Npb25fa2V5OworCXRoLT50aWNrZXRfYmxvYiA9 IG5ld190aWNrZXRfYmxvYjsKKwl0aC0+dmFsaWRpdHkgPSBuZXdfdmFsaWRpdHk7CisJdGgtPnNl Y3JldF9pZCA9IG5ld19zZWNyZXRfaWQ7CisJdGgtPmV4cGlyZXMgPSBuZXdfZXhwaXJlczsKKwl0 aC0+cmVuZXdfYWZ0ZXIgPSBuZXdfcmVuZXdfYWZ0ZXI7CisJZG91dCgiIGdvdCB0aWNrZXQgc2Vy dmljZSAlZCAoJXMpIHNlY3JldF9pZCAlbGxkIGxlbiAlZFxuIiwKKwkgICAgIHR5cGUsIGNlcGhf ZW50aXR5X3R5cGVfbmFtZSh0eXBlKSwgdGgtPnNlY3JldF9pZCwKKwkgICAgIChpbnQpdGgtPnRp Y2tldF9ibG9iLT52ZWMuaW92X2xlbik7CisJeGktPmhhdmVfa2V5cyB8PSB0aC0+c2VydmljZTsK IAotCXJldCA9IDA7CiBvdXQ6CiAJa2ZyZWUodGlja2V0X2J1Zik7Ci1vdXRfZGJ1ZjoKIAlrZnJl ZShkYnVmKTsKIAlyZXR1cm4gcmV0OwogCkBAIC0yNzAsNiArMjU1LDM0IEBAIGJhZDoKIAlnb3Rv IG91dDsKIH0KIAorc3RhdGljIGludCBjZXBoX3hfcHJvY190aWNrZXRfcmVwbHkoc3RydWN0IGNl cGhfYXV0aF9jbGllbnQgKmFjLAorCQkJCSAgICBzdHJ1Y3QgY2VwaF9jcnlwdG9fa2V5ICpzZWNy ZXQsCisJCQkJICAgIHZvaWQgKmJ1Ziwgdm9pZCAqZW5kKQoreworCXZvaWQgKnAgPSBidWY7CisJ dTggcmVwbHlfc3RydWN0X3Y7CisJdTMyIG51bTsKKwlpbnQgcmV0OworCisJY2VwaF9kZWNvZGVf OF9zYWZlKCZwLCBlbmQsIHJlcGx5X3N0cnVjdF92LCBiYWQpOworCWlmIChyZXBseV9zdHJ1Y3Rf diAhPSAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNlcGhfZGVjb2RlXzMyX3NhZmUoJnAsIGVu ZCwgbnVtLCBiYWQpOworCWRvdXQoIiVkIHRpY2tldHNcbiIsIG51bSk7CisKKwl3aGlsZSAobnVt LS0pIHsKKwkJcmV0ID0gcHJvY2Vzc19vbmVfdGlja2V0KGFjLCBzZWNyZXQsICZwLCBlbmQpOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKKworYmFkOgorCXJl dHVybiAtRUlOVkFMOworfQorCiBzdGF0aWMgaW50IGNlcGhfeF9idWlsZF9hdXRob3JpemVyKHN0 cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywKIAkJCQkgICBzdHJ1Y3QgY2VwaF94X3RpY2tldF9o YW5kbGVyICp0aCwKIAkJCQkgICBzdHJ1Y3QgY2VwaF94X2F1dGhvcml6ZXIgKmF1KQpAQCAtNTYz LDEzICs1NzYsMTQgQEAgc3RhdGljIGludCBjZXBoX3hfdmVyaWZ5X2F1dGhvcml6ZXJfcmVwbHko c3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjLAogCXN0cnVjdCBjZXBoX3hfdGlja2V0X2hhbmRs ZXIgKnRoOwogCWludCByZXQgPSAwOwogCXN0cnVjdCBjZXBoX3hfYXV0aG9yaXplX3JlcGx5IHJl cGx5OworCXZvaWQgKnByZXBseSA9ICZyZXBseTsKIAl2b2lkICpwID0gYXUtPnJlcGx5X2J1ZjsK IAl2b2lkICplbmQgPSBwICsgc2l6ZW9mKGF1LT5yZXBseV9idWYpOwogCiAJdGggPSBnZXRfdGlj a2V0X2hhbmRsZXIoYWMsIGF1LT5zZXJ2aWNlKTsKIAlpZiAoSVNfRVJSKHRoKSkKIAkJcmV0dXJu IFBUUl9FUlIodGgpOwotCXJldCA9IGNlcGhfeF9kZWNyeXB0KCZ0aC0+c2Vzc2lvbl9rZXksICZw LCBlbmQsICZyZXBseSwgc2l6ZW9mKHJlcGx5KSk7CisJcmV0ID0gY2VwaF94X2RlY3J5cHQoJnRo LT5zZXNzaW9uX2tleSwgJnAsIGVuZCwgJnByZXBseSwgc2l6ZW9mKHJlcGx5KSk7CiAJaWYgKHJl dCA8IDApCiAJCXJldHVybiByZXQ7CiAJaWYgKHJldCAhPSBzaXplb2YocmVwbHkpKQpkaWZmIC0t Z2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXIuYwppbmRleCAy MGJhMmQ1Li43YTIzOWYwIDEwMDY0NAotLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXIuYworKysgYi9u ZXQvY2VwaC9tZXNzZW5nZXIuYwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgc3RydWN0IGNlcGhfbXNn ICpjZXBoX21zZ19uZXcoaW50IHR5cGUsIGludCBmcm9udF9sZW4sIGdmcF90IGZsYWdzLAogCW0t PmZvb3Rlci5taWRkbGVfY3JjID0gMDsKIAltLT5mb290ZXIuZGF0YV9jcmMgPSAwOwogCW0tPmZv b3Rlci5mbGFncyA9IDA7Ci0JbS0+ZnJvbnRfbWF4ID0gZnJvbnRfbGVuOworCW0tPmZyb250X2Fs bG9jX2xlbiA9IGZyb250X2xlbjsKIAltLT5mcm9udF9pc192bWFsbG9jID0gZmFsc2U7CiAJbS0+ bW9yZV90b19mb2xsb3cgPSBmYWxzZTsKIAltLT5hY2tfc3RhbXAgPSAwOwpAQCAtMjU5NCw4ICsy NTk0LDggQEAgRVhQT1JUX1NZTUJPTChjZXBoX21zZ19sYXN0X3B1dCk7CiAKIHZvaWQgY2VwaF9t c2dfZHVtcChzdHJ1Y3QgY2VwaF9tc2cgKm1zZykKIHsKLQlwcl9kZWJ1ZygibXNnX2R1bXAgJXAg KGZyb250X21heCAlZCBucl9wYWdlcyAlZClcbiIsIG1zZywKLQkJIG1zZy0+ZnJvbnRfbWF4LCBt c2ctPm5yX3BhZ2VzKTsKKwlwcl9kZWJ1ZygibXNnX2R1bXAgJXAgKGZyb250X2FsbG9jX2xlbiAl ZCBucl9wYWdlcyAlZClcbiIsIG1zZywKKwkJIG1zZy0+ZnJvbnRfYWxsb2NfbGVuLCBtc2ctPm5y X3BhZ2VzKTsKIAlwcmludF9oZXhfZHVtcChLRVJOX0RFQlVHLCAiaGVhZGVyOiAiLAogCQkgICAg ICAgRFVNUF9QUkVGSVhfT0ZGU0VULCAxNiwgMSwKIAkJICAgICAgICZtc2ctPmhkciwgc2l6ZW9m KG1zZy0+aGRyKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tb25fY2xpZW50LmMgYi9u ZXQvY2VwaC9tb25fY2xpZW50LmMKaW5kZXggMGI2MmRlYS4uMGMwODU5YiAxMDA2NDQKLS0tIGEv bmV0L2NlcGgvbW9uX2NsaWVudC5jCisrKyBiL25ldC9jZXBoL21vbl9jbGllbnQuYwpAQCAtMTUw LDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgX19vcGVuX3Nlc3Npb24oc3RydWN0IGNlcGhfbW9uX2Ns aWVudCAqbW9uYykKIAkJLyogaW5pdGlhdGlhdGUgYXV0aGVudGljYXRpb24gaGFuZHNoYWtlICov CiAJCXJldCA9IGNlcGhfYXV0aF9idWlsZF9oZWxsbyhtb25jLT5hdXRoLAogCQkJCQkgICAgbW9u Yy0+bV9hdXRoLT5mcm9udC5pb3ZfYmFzZSwKLQkJCQkJICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnRf bWF4KTsKKwkJCQkJICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnRfYWxsb2NfbGVuKTsKIAkJX19zZW5k X3ByZXBhcmVkX2F1dGhfcmVxdWVzdChtb25jLCByZXQpOwogCX0gZWxzZSB7CiAJCWRvdXQoIm9w ZW5fc2Vzc2lvbiBtb24lZCBhbHJlYWR5IG9wZW5cbiIsIG1vbmMtPmN1cl9tb24pOwpAQCAtMTk0 LDcgKzE5NCw3IEBAIHN0YXRpYyB2b2lkIF9fc2VuZF9zdWJzY3JpYmUoc3RydWN0IGNlcGhfbW9u X2NsaWVudCAqbW9uYykKIAkJaW50IG51bTsKIAogCQlwID0gbXNnLT5mcm9udC5pb3ZfYmFzZTsK LQkJZW5kID0gcCArIG1zZy0+ZnJvbnRfbWF4OworCQllbmQgPSBwICsgbXNnLT5mcm9udF9hbGxv Y19sZW47CiAKIAkJbnVtID0gMSArICEhbW9uYy0+d2FudF9uZXh0X29zZG1hcCArICEhbW9uYy0+ d2FudF9tZHNtYXA7CiAJCWNlcGhfZW5jb2RlXzMyKCZwLCBudW0pOwpAQCAtODYwLDcgKzg2MCw3 IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9hdXRoX3JlcGx5KHN0cnVjdCBjZXBoX21vbl9jbGllbnQg Km1vbmMsCiAJcmV0ID0gY2VwaF9oYW5kbGVfYXV0aF9yZXBseShtb25jLT5hdXRoLCBtc2ctPmZy b250Lmlvdl9iYXNlLAogCQkJCSAgICAgbXNnLT5mcm9udC5pb3ZfbGVuLAogCQkJCSAgICAgbW9u Yy0+bV9hdXRoLT5mcm9udC5pb3ZfYmFzZSwKLQkJCQkgICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnRf bWF4KTsKKwkJCQkgICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnRfYWxsb2NfbGVuKTsKIAlpZiAocmV0 IDwgMCkgewogCQltb25jLT5jbGllbnQtPmF1dGhfZXJyID0gcmV0OwogCQl3YWtlX3VwX2FsbCgm bW9uYy0+Y2xpZW50LT5hdXRoX3dxKTsKQEAgLTg4Nyw3ICs4ODcsNyBAQCBzdGF0aWMgaW50IF9f dmFsaWRhdGVfYXV0aChzdHJ1Y3QgY2VwaF9tb25fY2xpZW50ICptb25jKQogCQlyZXR1cm4gMDsK IAogCXJldCA9IGNlcGhfYnVpbGRfYXV0aChtb25jLT5hdXRoLCBtb25jLT5tX2F1dGgtPmZyb250 Lmlvdl9iYXNlLAotCQkJICAgICAgbW9uYy0+bV9hdXRoLT5mcm9udF9tYXgpOworCQkJICAgICAg bW9uYy0+bV9hdXRoLT5mcm9udF9hbGxvY19sZW4pOwogCWlmIChyZXQgPD0gMCkKIAkJcmV0dXJu IHJldDsgLyogZWl0aGVyIGFuIGVycm9yLCBvciBubyBuZWVkIHRvIGF1dGhlbnRpY2F0ZSAqLwog CV9fc2VuZF9wcmVwYXJlZF9hdXRoX3JlcXVlc3QobW9uYywgcmV0KTsKQEAgLTk4Nyw3ICs5ODcs MTUgQEAgc3RhdGljIHN0cnVjdCBjZXBoX21zZyAqbW9uX2FsbG9jX21zZyhzdHJ1Y3QgY2VwaF9j b25uZWN0aW9uICpjb24sCiAJaWYgKCFtKSB7CiAJCXByX2luZm8oImFsbG9jX21zZyB1bmtub3du IHR5cGUgJWRcbiIsIHR5cGUpOwogCQkqc2tpcCA9IDE7CisJfSBlbHNlIGlmIChmcm9udF9sZW4g PiBtLT5mcm9udF9hbGxvY19sZW4pIHsKKwkJcHJfd2FybmluZygibW9uX2FsbG9jX21zZyBmcm9u dCAlZCA+IHByZWFsbG9jICVkICgldSMlbGx1KVxuIiwKKwkJCSAgIGZyb250X2xlbiwgbS0+ZnJv bnRfYWxsb2NfbGVuLAorCQkJICAgKHVuc2lnbmVkIGludCljb24tPnBlZXJfbmFtZS50eXBlLAor CQkJICAgbGU2NF90b19jcHUoY29uLT5wZWVyX25hbWUubnVtKSk7CisJCWNlcGhfbXNnX3B1dCht KTsKKwkJbSA9IGNlcGhfbXNnX25ldyh0eXBlLCBmcm9udF9sZW4sIEdGUF9OT0ZTLCBmYWxzZSk7 CiAJfQorCiAJcmV0dXJuIG07CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9u ZXQvaXB2NC9yb3V0ZS5jCmluZGV4IGQzNjFkYzAuLjhlNzlhOWUgMTAwNjQ0Ci0tLSBhL25ldC9p cHY0L3JvdXRlLmMKKysrIGIvbmV0L2lwdjQvcm91dGUuYwpAQCAtMTUxLDYgKzE1MSw5IEBAIHN0 YXRpYyB2b2lkCQkgaXB2NF9saW5rX2ZhaWx1cmUoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiBzdGF0 aWMgdm9pZAkJIGlwX3J0X3VwZGF0ZV9wbXR1KHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgdTMyIG10 dSk7CiBzdGF0aWMgaW50IHJ0X2dhcmJhZ2VfY29sbGVjdChzdHJ1Y3QgZHN0X29wcyAqb3BzKTsK IAorc3RhdGljIHZvaWQgX19ydF9nYXJiYWdlX2NvbGxlY3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3 KTsKK3N0YXRpYyBERUNMQVJFX1dPUksocnRfZ2Nfd29ya2VyLCBfX3J0X2dhcmJhZ2VfY29sbGVj dCk7CisKIHN0YXRpYyB2b2lkIGlwdjRfZHN0X2lmZG93bihzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Qs IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgaW50IGhvdykKIHsKQEAgLTk3OSwxMiAr OTgyLDEzIEBAIHN0YXRpYyB2b2lkIHJ0X2VtZXJnZW5jeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5l dCAqbmV0KQogICAgYW5kIHdoZW4gbG9hZCBpbmNyZWFzZXMgaXQgcmVkdWNlcyB0byBsaW1pdCBj YWNoZSBzaXplLgogICovCiAKLXN0YXRpYyBpbnQgcnRfZ2FyYmFnZV9jb2xsZWN0KHN0cnVjdCBk c3Rfb3BzICpvcHMpCitzdGF0aWMgdm9pZCBfX2RvX3J0X2dhcmJhZ2VfY29sbGVjdChpbnQgZWxh c3RpY2l0eSwgaW50IG1pbl9pbnRlcnZhbCkKIHsKIAlzdGF0aWMgdW5zaWduZWQgbG9uZyBleHBp cmUgPSBSVF9HQ19USU1FT1VUOwogCXN0YXRpYyB1bnNpZ25lZCBsb25nIGxhc3RfZ2M7CiAJc3Rh dGljIGludCByb3ZlcjsKIAlzdGF0aWMgaW50IGVxdWlsaWJyaXVtOworCXN0YXRpYyBERUZJTkVf U1BJTkxPQ0socnRfZ2NfbG9jayk7CiAJc3RydWN0IHJ0YWJsZSAqcnRoOwogCXN0cnVjdCBydGFi bGUgX19yY3UgKipydGhwOwogCXVuc2lnbmVkIGxvbmcgbm93ID0gamlmZmllczsKQEAgLTk5Niw5 ICsxMDAwLDExIEBAIHN0YXRpYyBpbnQgcnRfZ2FyYmFnZV9jb2xsZWN0KHN0cnVjdCBkc3Rfb3Bz ICpvcHMpCiAJICogZG8gbm90IG1ha2UgaXQgdG9vIGZyZXF1ZW50bHkuCiAJICovCiAKKwlzcGlu X2xvY2tfYmgoJnJ0X2djX2xvY2spOworCiAJUlRfQ0FDSEVfU1RBVF9JTkMoZ2NfdG90YWwpOwog Ci0JaWYgKG5vdyAtIGxhc3RfZ2MgPCBpcF9ydF9nY19taW5faW50ZXJ2YWwgJiYKKwlpZiAobm93 IC0gbGFzdF9nYyA8IG1pbl9pbnRlcnZhbCAmJgogCSAgICBlbnRyaWVzIDwgaXBfcnRfbWF4X3Np emUpIHsKIAkJUlRfQ0FDSEVfU1RBVF9JTkMoZ2NfaWdub3JlZCk7CiAJCWdvdG8gb3V0OwpAQCAt MTAwNiw3ICsxMDEyLDcgQEAgc3RhdGljIGludCBydF9nYXJiYWdlX2NvbGxlY3Qoc3RydWN0IGRz dF9vcHMgKm9wcykKIAogCWVudHJpZXMgPSBkc3RfZW50cmllc19nZXRfc2xvdygmaXB2NF9kc3Rf b3BzKTsKIAkvKiBDYWxjdWxhdGUgbnVtYmVyIG9mIGVudHJpZXMsIHdoaWNoIHdlIHdhbnQgdG8g ZXhwaXJlIG5vdy4gKi8KLQlnb2FsID0gZW50cmllcyAtIChpcF9ydF9nY19lbGFzdGljaXR5IDw8 IHJ0X2hhc2hfbG9nKTsKKwlnb2FsID0gZW50cmllcyAtIChlbGFzdGljaXR5IDw8IHJ0X2hhc2hf bG9nKTsKIAlpZiAoZ29hbCA8PSAwKSB7CiAJCWlmIChlcXVpbGlicml1bSA8IGlwdjRfZHN0X29w cy5nY190aHJlc2gpCiAJCQllcXVpbGlicml1bSA9IGlwdjRfZHN0X29wcy5nY190aHJlc2g7CkBA IC0xMDIzLDcgKzEwMjksNyBAQCBzdGF0aWMgaW50IHJ0X2dhcmJhZ2VfY29sbGVjdChzdHJ1Y3Qg ZHN0X29wcyAqb3BzKQogCQllcXVpbGlicml1bSA9IGVudHJpZXMgLSBnb2FsOwogCX0KIAotCWlm IChub3cgLSBsYXN0X2djID49IGlwX3J0X2djX21pbl9pbnRlcnZhbCkKKwlpZiAobm93IC0gbGFz dF9nYyA+PSBtaW5faW50ZXJ2YWwpCiAJCWxhc3RfZ2MgPSBub3c7CiAKIAlpZiAoZ29hbCA8PSAw KSB7CkBAIC0xMDg4LDE1ICsxMDk0LDM0IEBAIHN0YXRpYyBpbnQgcnRfZ2FyYmFnZV9jb2xsZWN0 KHN0cnVjdCBkc3Rfb3BzICpvcHMpCiAJaWYgKG5ldF9yYXRlbGltaXQoKSkKIAkJcHJpbnRrKEtF Uk5fV0FSTklORyAiZHN0IGNhY2hlIG92ZXJmbG93XG4iKTsKIAlSVF9DQUNIRV9TVEFUX0lOQyhn Y19kc3Rfb3ZlcmZsb3cpOwotCXJldHVybiAxOworCWdvdG8gb3V0OwogCiB3b3JrX2RvbmU6Ci0J ZXhwaXJlICs9IGlwX3J0X2djX21pbl9pbnRlcnZhbDsKKwlleHBpcmUgKz0gbWluX2ludGVydmFs OwogCWlmIChleHBpcmUgPiBpcF9ydF9nY190aW1lb3V0IHx8CiAJICAgIGRzdF9lbnRyaWVzX2dl dF9mYXN0KCZpcHY0X2RzdF9vcHMpIDwgaXB2NF9kc3Rfb3BzLmdjX3RocmVzaCB8fAogCSAgICBk c3RfZW50cmllc19nZXRfc2xvdygmaXB2NF9kc3Rfb3BzKSA8IGlwdjRfZHN0X29wcy5nY190aHJl c2gpCiAJCWV4cGlyZSA9IGlwX3J0X2djX3RpbWVvdXQ7Ci1vdXQ6CXJldHVybiAwOworb3V0Ogor CXNwaW5fdW5sb2NrX2JoKCZydF9nY19sb2NrKTsKK30KKworc3RhdGljIHZvaWQgX19ydF9nYXJi YWdlX2NvbGxlY3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3KQoreworCV9fZG9fcnRfZ2FyYmFnZV9j b2xsZWN0KGlwX3J0X2djX2VsYXN0aWNpdHksIGlwX3J0X2djX21pbl9pbnRlcnZhbCk7Cit9CisK K3N0YXRpYyBpbnQgcnRfZ2FyYmFnZV9jb2xsZWN0KHN0cnVjdCBkc3Rfb3BzICpvcHMpCit7CisJ aWYgKCF3b3JrX3BlbmRpbmcoJnJ0X2djX3dvcmtlcikpCisJCXNjaGVkdWxlX3dvcmsoJnJ0X2dj X3dvcmtlcik7CisKKwlpZiAoZHN0X2VudHJpZXNfZ2V0X2Zhc3QoJmlwdjRfZHN0X29wcykgPj0g aXBfcnRfbWF4X3NpemUgfHwKKwkgICAgZHN0X2VudHJpZXNfZ2V0X3Nsb3coJmlwdjRfZHN0X29w cykgPj0gaXBfcnRfbWF4X3NpemUpIHsKKwkJUlRfQ0FDSEVfU1RBVF9JTkMoZ2NfZHN0X292ZXJm bG93KTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOwogfQogCiAvKgpAQCAtMTE1Myw3ICsx MTc4LDcgQEAgc3RhdGljIHN0cnVjdCBydGFibGUgKnJ0X2ludGVybl9oYXNoKHVuc2lnbmVkIGhh c2gsIHN0cnVjdCBydGFibGUgKnJ0LAogCXVuc2lnbmVkIGxvbmcJbm93OwogCXUzMiAJCW1pbl9z Y29yZTsKIAlpbnQJCWNoYWluX2xlbmd0aDsKLQlpbnQgYXR0ZW1wdHMgPSAhaW5fc29mdGlycSgp OworCWludCBhdHRlbXB0cyA9IDE7CiAKIHJlc3RhcnQ6CiAJY2hhaW5fbGVuZ3RoID0gMDsKQEAg LTEyOTAsMTQgKzEzMTUsMTUgQEAgcmVzdGFydDoKIAkJCSAgIGNhbiBiZSByZWxlYXNlZC4gVHJ5 IHRvIHNocmluayByb3V0ZSBjYWNoZSwKIAkJCSAgIGl0IGlzIG1vc3QgbGlrZWx5IGl0IGhvbGRz IHNvbWUgbmVpZ2hib3VyIHJlY29yZHMuCiAJCQkgKi8KLQkJCWlmIChhdHRlbXB0cy0tID4gMCkg ewotCQkJCWludCBzYXZlZF9lbGFzdGljaXR5ID0gaXBfcnRfZ2NfZWxhc3RpY2l0eTsKLQkJCQlp bnQgc2F2ZWRfaW50ID0gaXBfcnRfZ2NfbWluX2ludGVydmFsOwotCQkJCWlwX3J0X2djX2VsYXN0 aWNpdHkJPSAxOwotCQkJCWlwX3J0X2djX21pbl9pbnRlcnZhbAk9IDA7Ci0JCQkJcnRfZ2FyYmFn ZV9jb2xsZWN0KCZpcHY0X2RzdF9vcHMpOwotCQkJCWlwX3J0X2djX21pbl9pbnRlcnZhbAk9IHNh dmVkX2ludDsKLQkJCQlpcF9ydF9nY19lbGFzdGljaXR5CT0gc2F2ZWRfZWxhc3RpY2l0eTsKKwkJ CWlmICghaW5fc29mdGlycSgpICYmIGF0dGVtcHRzLS0gPiAwKSB7CisJCQkJc3RhdGljIERFRklO RV9TUElOTE9DSyhsb2NrKTsKKworCQkJCWlmIChzcGluX3RyeWxvY2soJmxvY2spKSB7CisJCQkJ CV9fZG9fcnRfZ2FyYmFnZV9jb2xsZWN0KDEsIDApOworCQkJCQlzcGluX3VubG9jaygmbG9jayk7 CisJCQkJfSBlbHNlIHsKKwkJCQkJc3Bpbl91bmxvY2tfd2FpdCgmbG9jayk7CisJCQkJfQogCQkJ CWdvdG8gcmVzdGFydDsKIAkJCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBi L25ldC9pcHY2L2FkZHJjb25mLmMKaW5kZXggYjllZGZmMC4uM2FmZGQ3OCAxMDA2NDQKLS0tIGEv bmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCkBAIC0yNDQzLDgg KzI0NDMsMTggQEAgc3RhdGljIHZvaWQgaW5pdF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2KQogCQkJaWYgKHNwX2lmYS0+ZmxhZ3MgJiAoSUZBX0ZfREFERkFJTEVEIHwgSUZBX0ZfVEVO VEFUSVZFKSkKIAkJCQljb250aW51ZTsKIAotCQkJaWYgKHNwX2lmYS0+cnQpCi0JCQkJY29udGlu dWU7CisJCQlpZiAoc3BfaWZhLT5ydCkgeworCQkJCS8qIFRoaXMgZHN0IGhhcyBiZWVuIGFkZGVk IHRvIGdhcmJhZ2UgbGlzdCB3aGVuCisJCQkJICogbG8gZGV2aWNlIGRvd24sIHJlbGVhc2UgdGhp cyBvYnNvbGV0ZSBkc3QgYW5kCisJCQkJICogcmVhbGxvY2F0ZSBhIG5ldyByb3V0ZXIgZm9yIGlm YS4KKwkJCQkgKi8KKwkJCQlpZiAoc3BfaWZhLT5ydC0+ZHN0Lm9ic29sZXRlID4gMCkgeworCQkJ CQlkc3RfcmVsZWFzZSgmc3BfaWZhLT5ydC0+ZHN0KTsKKwkJCQkJc3BfaWZhLT5ydCA9IE5VTEw7 CisJCQkJfSBlbHNlIHsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQogCiAJCQlzcF9ydCA9 IGFkZHJjb25mX2RzdF9hbGxvYyhpZGV2LCAmc3BfaWZhLT5hZGRyLCAwKTsKIApkaWZmIC0tZ2l0 IGEvbmV0L2lwdjYvdWRwLmMgYi9uZXQvaXB2Ni91ZHAuYwppbmRleCBmOGJlYzFlLi5kMTMxYTk1 IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni91ZHAuYworKysgYi9uZXQvaXB2Ni91ZHAuYwpAQCAtMTM2 Miw3ICsxMzYyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp1ZHA2X3Vmb19mcmFnbWVudChz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgZmVhdHVyZXMpCiAJZnB0ciA9IChzdHJ1Y3QgZnJhZ19o ZHIgKikoc2tiX25ldHdvcmtfaGVhZGVyKHNrYikgKyB1bmZyYWdfaXA2aGxlbik7CiAJZnB0ci0+ bmV4dGhkciA9IG5leHRoZHI7CiAJZnB0ci0+cmVzZXJ2ZWQgPSAwOwotCWlwdjZfc2VsZWN0X2lk ZW50KGZwdHIsIChzdHJ1Y3QgcnQ2X2luZm8gKilza2JfZHN0KHNrYikpOworCWZwdHItPmlkZW50 aWZpY2F0aW9uID0gc2tiX3NoaW5mbyhza2IpLT5pcDZfZnJhZ19pZDsKIAogCS8qIEZyYWdtZW50 IHRoZSBza2IuIGlwdjYgaGVhZGVyIGFuZCB0aGUgcmVtYWluaW5nIGZpZWxkcyBvZiB0aGUKIAkg KiBmcmFnbWVudCBoZWFkZXIgYXJlIHVwZGF0ZWQgaW4gaXB2Nl9nc29fc2VnbWVudCgpCmRpZmYg LS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jCmluZGV4 IGRhNTRkMjkuLjViMmQ4ZTYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jCisrKyBi L25ldC9zY3RwL2Fzc29jaW9sYS5jCkBAIC0xNjM4LDYgKzE2MzgsOCBAQCBzdHJ1Y3Qgc2N0cF9j aHVuayAqc2N0cF9hc3NvY19sb29rdXBfYXNjb25mX2FjaygKIAkgKiBhY2sgY2h1bmsgd2hvc2Ug c2VyaWFsIG51bWJlciBtYXRjaGVzIHRoYXQgb2YgdGhlIHJlcXVlc3QuCiAJICovCiAJbGlzdF9m b3JfZWFjaF9lbnRyeShhY2ssICZhc29jLT5hc2NvbmZfYWNrX2xpc3QsIHRyYW5zbWl0dGVkX2xp c3QpIHsKKwkJaWYgKHNjdHBfY2h1bmtfcGVuZGluZyhhY2spKQorCQkJY29udGludWU7CiAJCWlm IChhY2stPnN1YmguYWRkaXBfaGRyLT5zZXJpYWwgPT0gc2VyaWFsKSB7CiAJCQlzY3RwX2NodW5r X2hvbGQoYWNrKTsKIAkJCXJldHVybiBhY2s7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9pbnF1ZXVl LmMgYi9uZXQvc2N0cC9pbnF1ZXVlLmMKaW5kZXggMzk3Mjk2Zi4uMzI0MjFhZSAxMDA2NDQKLS0t IGEvbmV0L3NjdHAvaW5xdWV1ZS5jCisrKyBiL25ldC9zY3RwL2lucXVldWUuYwpAQCAtMTUyLDE4 ICsxNTIsOSBAQCBzdHJ1Y3Qgc2N0cF9jaHVuayAqc2N0cF9pbnFfcG9wKHN0cnVjdCBzY3RwX2lu cSAqcXVldWUpCiAJCX0gZWxzZSB7CiAJCQkvKiBOb3RoaW5nIHRvIGRvLiBOZXh0IGNodW5rIGlu IHRoZSBwYWNrZXQsIHBsZWFzZS4gKi8KIAkJCWNoID0gKHNjdHBfY2h1bmtoZHJfdCAqKSBjaHVu ay0+Y2h1bmtfZW5kOwotCiAJCQkvKiBGb3JjZSBjaHVuay0+c2tiLT5kYXRhIHRvIGNodW5rLT5j aHVua19lbmQuICAqLwotCQkJc2tiX3B1bGwoY2h1bmstPnNrYiwKLQkJCQkgY2h1bmstPmNodW5r X2VuZCAtIGNodW5rLT5za2ItPmRhdGEpOwotCi0JCQkvKiBWZXJpZnkgdGhhdCB3ZSBoYXZlIGF0 IGxlYXN0IGNodW5rIGhlYWRlcnMKLQkJCSAqIHdvcnRoIG9mIGJ1ZmZlciBsZWZ0LgotCQkJICov Ci0JCQlpZiAoc2tiX2hlYWRsZW4oY2h1bmstPnNrYikgPCBzaXplb2Yoc2N0cF9jaHVua2hkcl90 KSkgewotCQkJCXNjdHBfY2h1bmtfZnJlZShjaHVuayk7Ci0JCQkJY2h1bmsgPSBxdWV1ZS0+aW5f cHJvZ3Jlc3MgPSBOVUxMOwotCQkJfQorCQkJc2tiX3B1bGwoY2h1bmstPnNrYiwgY2h1bmstPmNo dW5rX2VuZCAtIGNodW5rLT5za2ItPmRhdGEpOworCQkJLyogV2UgYXJlIGd1YXJhbnRlZWQgdG8g cHVsbCBhIFNDVFAgaGVhZGVyLiAqLwogCQl9CiAJfQogCkBAIC0xOTksMjQgKzE5MCwxNCBAQCBz dHJ1Y3Qgc2N0cF9jaHVuayAqc2N0cF9pbnFfcG9wKHN0cnVjdCBzY3RwX2lucSAqcXVldWUpCiAJ c2tiX3B1bGwoY2h1bmstPnNrYiwgc2l6ZW9mKHNjdHBfY2h1bmtoZHJfdCkpOwogCWNodW5rLT5z dWJoLnYgPSBOVUxMOyAvKiBTdWJoZWFkZXIgaXMgbm8gbG9uZ2VyIHZhbGlkLiAgKi8KIAotCWlm IChjaHVuay0+Y2h1bmtfZW5kIDwgc2tiX3RhaWxfcG9pbnRlcihjaHVuay0+c2tiKSkgeworCWlm IChjaHVuay0+Y2h1bmtfZW5kICsgc2l6ZW9mKHNjdHBfY2h1bmtoZHJfdCkgPAorCSAgICBza2Jf dGFpbF9wb2ludGVyKGNodW5rLT5za2IpKSB7CiAJCS8qIFRoaXMgaXMgbm90IGEgc2luZ2xldG9u ICovCiAJCWNodW5rLT5zaW5nbGV0b24gPSAwOwogCX0gZWxzZSBpZiAoY2h1bmstPmNodW5rX2Vu ZCA+IHNrYl90YWlsX3BvaW50ZXIoY2h1bmstPnNrYikpIHsKLQkJLyogUkZDIDI5NjAsIFNlY3Rp b24gNi4xMCAgQnVuZGxpbmcKLQkJICoKLQkJICogUGFydGlhbCBjaHVua3MgTVVTVCBOT1QgYmUg cGxhY2VkIGluIGFuIFNDVFAgcGFja2V0LgotCQkgKiBJZiB0aGUgcmVjZWl2ZXIgZGV0ZWN0cyBh IHBhcnRpYWwgY2h1bmssIGl0IE1VU1QgZHJvcAotCQkgKiB0aGUgY2h1bmsuCi0JCSAqCi0JCSAq IFNpbmNlIHRoZSBlbmQgb2YgdGhlIGNodW5rIGlzIHBhc3QgdGhlIGVuZCBvZiBvdXIgYnVmZmVy Ci0JCSAqICh3aGljaCBjb250YWlucyB0aGUgd2hvbGUgcGFja2V0LCB3ZSBjYW4gZnJlZWx5IGRp c2NhcmQKLQkJICogdGhlIHdob2xlIHBhY2tldC4KLQkJICovCi0JCXNjdHBfY2h1bmtfZnJlZShj aHVuayk7Ci0JCWNodW5rID0gcXVldWUtPmluX3Byb2dyZXNzID0gTlVMTDsKLQotCQlyZXR1cm4g TlVMTDsKKwkJLyogRGlzY2FyZCBpbnNpZGUgc3RhdGUgbWFjaGluZS4gKi8KKwkJY2h1bmstPnBk aXNjYXJkID0gMTsKKwkJY2h1bmstPmNodW5rX2VuZCA9IHNrYl90YWlsX3BvaW50ZXIoY2h1bmst PnNrYik7CiAJfSBlbHNlIHsKIAkJLyogV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHBhY2tldCwg c28gbWFyayB0aGUgY2h1bmsKIAkJICogaW4gY2FzZSB3ZSBuZWVkIHRvIHNlbmQgYSBTQUNLLgpk aWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9j aHVuay5jCmluZGV4IGM5NWEzZjIuLmQ4ZDQ3MDQgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21h a2VfY2h1bmsuYworKysgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTMwNjgsNTAgKzMw NjgsNjMgQEAgc3RhdGljIF9fYmUxNiBzY3RwX3Byb2Nlc3NfYXNjb25mX3BhcmFtKHN0cnVjdCBz Y3RwX2Fzc29jaWF0aW9uICphc29jLAogCXJldHVybiBTQ1RQX0VSUk9SX05PX0VSUk9SOwogfQog Ci0vKiBWZXJpZnkgdGhlIEFTQ09ORiBwYWNrZXQgYmVmb3JlIHdlIHByb2Nlc3MgaXQuICAqLwot aW50IHNjdHBfdmVyaWZ5X2FzY29uZihjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv YywKLQkJICAgICAgIHN0cnVjdCBzY3RwX3BhcmFtaGRyICpwYXJhbV9oZHIsIHZvaWQgKmNodW5r X2VuZCwKLQkJICAgICAgIHN0cnVjdCBzY3RwX3BhcmFtaGRyICoqZXJycCkgewotCXNjdHBfYWRk aXBfcGFyYW1fdCAqYXNjb25mX3BhcmFtOworLyogVmVyaWZ5IHRoZSBBU0NPTkYgcGFja2V0IGJl Zm9yZSB3ZSBwcm9jZXNzIGl0LiAqLworYm9vbCBzY3RwX3ZlcmlmeV9hc2NvbmYoY29uc3Qgc3Ry dWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCisJCQlzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmss IGJvb2wgYWRkcl9wYXJhbV9uZWVkZWQsCisJCQlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKmVycnAp Cit7CisJc2N0cF9hZGRpcF9jaHVua190ICphZGRpcCA9IChzY3RwX2FkZGlwX2NodW5rX3QgKikg Y2h1bmstPmNodW5rX2hkcjsKIAl1bmlvbiBzY3RwX3BhcmFtcyBwYXJhbTsKLQlpbnQgbGVuZ3Ro LCBwbGVuOwotCi0JcGFyYW0udiA9IChzY3RwX3BhcmFtaGRyX3QgKikgcGFyYW1faGRyOwotCXdo aWxlIChwYXJhbS52IDw9IGNodW5rX2VuZCAtIHNpemVvZihzY3RwX3BhcmFtaGRyX3QpKSB7Ci0J CWxlbmd0aCA9IG50b2hzKHBhcmFtLnAtPmxlbmd0aCk7Ci0JCSplcnJwID0gcGFyYW0ucDsKKwli b29sIGFkZHJfcGFyYW1fc2VlbiA9IGZhbHNlOwogCi0JCWlmIChwYXJhbS52ID4gY2h1bmtfZW5k IC0gbGVuZ3RoIHx8Ci0JCSAgICBsZW5ndGggPCBzaXplb2Yoc2N0cF9wYXJhbWhkcl90KSkKLQkJ CXJldHVybiAwOworCXNjdHBfd2Fsa19wYXJhbXMocGFyYW0sIGFkZGlwLCBhZGRpcF9oZHIucGFy YW1zKSB7CisJCXNpemVfdCBsZW5ndGggPSBudG9ocyhwYXJhbS5wLT5sZW5ndGgpOwogCisJCSpl cnJwID0gcGFyYW0ucDsKIAkJc3dpdGNoIChwYXJhbS5wLT50eXBlKSB7CisJCWNhc2UgU0NUUF9Q QVJBTV9FUlJfQ0FVU0U6CisJCQlicmVhazsKKwkJY2FzZSBTQ1RQX1BBUkFNX0lQVjRfQUREUkVT UzoKKwkJCWlmIChsZW5ndGggIT0gc2l6ZW9mKHNjdHBfaXB2NGFkZHJfcGFyYW1fdCkpCisJCQkJ cmV0dXJuIGZhbHNlOworCQkJYWRkcl9wYXJhbV9zZWVuID0gdHJ1ZTsKKwkJCWJyZWFrOworCQlj YXNlIFNDVFBfUEFSQU1fSVBWNl9BRERSRVNTOgorCQkJaWYgKGxlbmd0aCAhPSBzaXplb2Yoc2N0 cF9pcHY2YWRkcl9wYXJhbV90KSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQlhZGRyX3BhcmFtX3Nl ZW4gPSB0cnVlOworCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9QQVJBTV9BRERfSVA6CiAJCWNhc2Ug U0NUUF9QQVJBTV9ERUxfSVA6CiAJCWNhc2UgU0NUUF9QQVJBTV9TRVRfUFJJTUFSWToKLQkJCWFz Y29uZl9wYXJhbSA9IChzY3RwX2FkZGlwX3BhcmFtX3QgKilwYXJhbS52OwotCQkJcGxlbiA9IG50 b2hzKGFzY29uZl9wYXJhbS0+cGFyYW1faGRyLmxlbmd0aCk7Ci0JCQlpZiAocGxlbiA8IHNpemVv ZihzY3RwX2FkZGlwX3BhcmFtX3QpICsKLQkJCSAgICBzaXplb2Yoc2N0cF9wYXJhbWhkcl90KSkK LQkJCQlyZXR1cm4gMDsKKwkJCS8qIEluIEFTQ09ORiBjaHVua3MsIHRoZXNlIG5lZWQgdG8gYmUg Zmlyc3QuICovCisJCQlpZiAoYWRkcl9wYXJhbV9uZWVkZWQgJiYgIWFkZHJfcGFyYW1fc2VlbikK KwkJCQlyZXR1cm4gZmFsc2U7CisJCQlsZW5ndGggPSBudG9ocyhwYXJhbS5hZGRpcC0+cGFyYW1f aGRyLmxlbmd0aCk7CisJCQlpZiAobGVuZ3RoIDwgc2l6ZW9mKHNjdHBfYWRkaXBfcGFyYW1fdCkg KworCQkJCSAgICAgc2l6ZW9mKHNjdHBfcGFyYW1oZHJfdCkpCisJCQkJcmV0dXJuIGZhbHNlOwog CQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9QQVJBTV9TVUNDRVNTX1JFUE9SVDoKIAkJY2FzZSBTQ1RQ X1BBUkFNX0FEQVBUQVRJT05fTEFZRVJfSU5EOgogCQkJaWYgKGxlbmd0aCAhPSBzaXplb2Yoc2N0 cF9hZGRpcF9wYXJhbV90KSkKLQkJCQlyZXR1cm4gMDsKLQorCQkJCXJldHVybiBmYWxzZTsKIAkJ CWJyZWFrOwogCQlkZWZhdWx0OgotCQkJYnJlYWs7CisJCQkvKiBUaGlzIGlzIHVua293biB0byB1 cywgcmVqZWN0ISAqLworCQkJcmV0dXJuIGZhbHNlOwogCQl9Ci0KLQkJcGFyYW0udiArPSBXT1JE X1JPVU5EKGxlbmd0aCk7CiAJfQogCi0JaWYgKHBhcmFtLnYgIT0gY2h1bmtfZW5kKQotCQlyZXR1 cm4gMDsKKwkvKiBSZW1haW5pbmcgc2FuaXR5IGNoZWNrcy4gKi8KKwlpZiAoYWRkcl9wYXJhbV9u ZWVkZWQgJiYgIWFkZHJfcGFyYW1fc2VlbikKKwkJcmV0dXJuIGZhbHNlOworCWlmICghYWRkcl9w YXJhbV9uZWVkZWQgJiYgYWRkcl9wYXJhbV9zZWVuKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKHBh cmFtLnYgIT0gY2h1bmstPmNodW5rX2VuZCkKKwkJcmV0dXJuIGZhbHNlOwogCi0JcmV0dXJuIDE7 CisJcmV0dXJuIHRydWU7CiB9CiAKIC8qIFByb2Nlc3MgYW4gaW5jb21pbmcgQVNDT05GIGNodW5r IHdpdGggdGhlIG5leHQgZXhwZWN0ZWQgc2VyaWFsIG5vLiBhbmQKQEAgLTMxMjAsMTYgKzMxMzMs MTcgQEAgaW50IHNjdHBfdmVyaWZ5X2FzY29uZihjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlv biAqYXNvYywKIHN0cnVjdCBzY3RwX2NodW5rICpzY3RwX3Byb2Nlc3NfYXNjb25mKHN0cnVjdCBz Y3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCSAgICAgICBzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNj b25mKQogeworCXNjdHBfYWRkaXBfY2h1bmtfdCAqYWRkaXAgPSAoc2N0cF9hZGRpcF9jaHVua190 ICopIGFzY29uZi0+Y2h1bmtfaGRyOworCWJvb2wgYWxsX3BhcmFtX3Bhc3MgPSB0cnVlOworCXVu aW9uIHNjdHBfcGFyYW1zIHBhcmFtOwogCXNjdHBfYWRkaXBoZHJfdAkJKmhkcjsKIAl1bmlvbiBz Y3RwX2FkZHJfcGFyYW0JKmFkZHJfcGFyYW07CiAJc2N0cF9hZGRpcF9wYXJhbV90CSphc2NvbmZf cGFyYW07CiAJc3RydWN0IHNjdHBfY2h1bmsJKmFzY29uZl9hY2s7Ci0KIAlfX2JlMTYJZXJyX2Nv ZGU7CiAJaW50CWxlbmd0aCA9IDA7CiAJaW50CWNodW5rX2xlbjsKIAlfX3UzMglzZXJpYWw7Ci0J aW50CWFsbF9wYXJhbV9wYXNzID0gMTsKIAogCWNodW5rX2xlbiA9IG50b2hzKGFzY29uZi0+Y2h1 bmtfaGRyLT5sZW5ndGgpIC0gc2l6ZW9mKHNjdHBfY2h1bmtoZHJfdCk7CiAJaGRyID0gKHNjdHBf YWRkaXBoZHJfdCAqKWFzY29uZi0+c2tiLT5kYXRhOwpAQCAtMzE1Nyw5ICszMTcxLDE0IEBAIHN0 cnVjdCBzY3RwX2NodW5rICpzY3RwX3Byb2Nlc3NfYXNjb25mKHN0cnVjdCBzY3RwX2Fzc29jaWF0 aW9uICphc29jLAogCQlnb3RvIGRvbmU7CiAKIAkvKiBQcm9jZXNzIHRoZSBUTFZzIGNvbnRhaW5l ZCB3aXRoaW4gdGhlIEFTQ09ORiBjaHVuay4gKi8KLQl3aGlsZSAoY2h1bmtfbGVuID4gMCkgewor CXNjdHBfd2Fsa19wYXJhbXMocGFyYW0sIGFkZGlwLCBhZGRpcF9oZHIucGFyYW1zKSB7CisJCS8q IFNraXAgcHJlY2VlZGluZyBhZGRyZXNzIHBhcmFtZXRlcnMuICovCisJCWlmIChwYXJhbS5wLT50 eXBlID09IFNDVFBfUEFSQU1fSVBWNF9BRERSRVNTIHx8CisJCSAgICBwYXJhbS5wLT50eXBlID09 IFNDVFBfUEFSQU1fSVBWNl9BRERSRVNTKQorCQkJY29udGludWU7CisKIAkJZXJyX2NvZGUgPSBz Y3RwX3Byb2Nlc3NfYXNjb25mX3BhcmFtKGFzb2MsIGFzY29uZiwKLQkJCQkJCSAgICAgYXNjb25m X3BhcmFtKTsKKwkJCQkJCSAgICAgcGFyYW0uYWRkaXApOwogCQkvKiBBRERJUCA0LjEgQTcpCiAJ CSAqIElmIGFuIGVycm9yIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZvciBhIFRMViBwYXJhbWV0ZXIs CiAJCSAqIGFsbCBUTFZzIHdpdGggbm8gcmVzcG9uc2UgYmVmb3JlIHRoZSBmYWlsZWQgVExWIGFy ZQpAQCAtMzE2NywyOCArMzE4NiwyMCBAQCBzdHJ1Y3Qgc2N0cF9jaHVuayAqc2N0cF9wcm9jZXNz X2FzY29uZihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJICogdGhlIGZhaWxlZCBy ZXNwb25zZSBhcmUgY29uc2lkZXJlZCB1bnN1Y2Nlc3NmdWwgdW5sZXNzCiAJCSAqIGEgc3BlY2lm aWMgc3VjY2VzcyBpbmRpY2F0aW9uIGlzIHByZXNlbnQgZm9yIHRoZSBwYXJhbWV0ZXIuCiAJCSAq LwotCQlpZiAoU0NUUF9FUlJPUl9OT19FUlJPUiAhPSBlcnJfY29kZSkKLQkJCWFsbF9wYXJhbV9w YXNzID0gMDsKLQorCQlpZiAoZXJyX2NvZGUgIT0gU0NUUF9FUlJPUl9OT19FUlJPUikKKwkJCWFs bF9wYXJhbV9wYXNzID0gZmFsc2U7CiAJCWlmICghYWxsX3BhcmFtX3Bhc3MpCi0JCQlzY3RwX2Fk ZF9hc2NvbmZfcmVzcG9uc2UoYXNjb25mX2FjaywKLQkJCQkJCSBhc2NvbmZfcGFyYW0tPmNycl9p ZCwgZXJyX2NvZGUsCi0JCQkJCQkgYXNjb25mX3BhcmFtKTsKKwkJCXNjdHBfYWRkX2FzY29uZl9y ZXNwb25zZShhc2NvbmZfYWNrLCBwYXJhbS5hZGRpcC0+Y3JyX2lkLAorCQkJCQkJIGVycl9jb2Rl LCBwYXJhbS5hZGRpcCk7CiAKIAkJLyogQURESVAgNC4zIEQxMSkgV2hlbiBhbiBlbmRwb2ludCBy ZWNlaXZpbmcgYW4gQVNDT05GIHRvIGFkZAogCQkgKiBhbiBJUCBhZGRyZXNzIHNlbmRzIGFuICdP dXQgb2YgUmVzb3VyY2UnIGluIGl0cyByZXNwb25zZSwgaXQKIAkJICogTVVTVCBhbHNvIGZhaWwg YW55IHN1YnNlcXVlbnQgYWRkIG9yIGRlbGV0ZSByZXF1ZXN0cyBidW5kbGVkCiAJCSAqIGluIHRo ZSBBU0NPTkYuCiAJCSAqLwotCQlpZiAoU0NUUF9FUlJPUl9SU1JDX0xPVyA9PSBlcnJfY29kZSkK KwkJaWYgKGVycl9jb2RlID09IFNDVFBfRVJST1JfUlNSQ19MT1cpCiAJCQlnb3RvIGRvbmU7Ci0K LQkJLyogTW92ZSB0byB0aGUgbmV4dCBBU0NPTkYgcGFyYW0uICovCi0JCWxlbmd0aCA9IG50b2hz KGFzY29uZl9wYXJhbS0+cGFyYW1faGRyLmxlbmd0aCk7Ci0JCWFzY29uZl9wYXJhbSA9ICh2b2lk ICopYXNjb25mX3BhcmFtICsgbGVuZ3RoOwotCQljaHVua19sZW4gLT0gbGVuZ3RoOwogCX0KLQog ZG9uZToKIAlhc29jLT5wZWVyLmFkZGlwX3NlcmlhbCsrOwogCmRpZmYgLS1naXQgYS9uZXQvc2N0 cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IDVhYzMzYjYu LmQwMmRkM2MgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCisrKyBiL25ldC9z Y3RwL3NtX3N0YXRlZnVucy5jCkBAIC0xNjMsNiArMTYzLDkgQEAgc2N0cF9jaHVua19sZW5ndGhf dmFsaWQoc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLAogewogCV9fdTE2IGNodW5rX2xlbmd0aCA9 IG50b2hzKGNodW5rLT5jaHVua19oZHItPmxlbmd0aCk7CiAKKwkvKiBQcmV2aW91c2x5IGFscmVh ZHkgbWFya2VkPyAqLworCWlmICh1bmxpa2VseShjaHVuay0+cGRpc2NhcmQpKQorCQlyZXR1cm4g MDsKIAlpZiAodW5saWtlbHkoY2h1bmtfbGVuZ3RoIDwgcmVxdWlyZWRfbGVuZ3RoKSkKIAkJcmV0 dXJuIDA7CiAKQEAgLTM1MTYsOSArMzUxOSw3IEBAIHNjdHBfZGlzcG9zaXRpb25fdCBzY3RwX3Nm X2RvX2FzY29uZihjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJc3RydWN0IHNjdHBf Y2h1bmsJKmFzY29uZl9hY2sgPSBOVUxMOwogCXN0cnVjdCBzY3RwX3BhcmFtaGRyCSplcnJfcGFy YW0gPSBOVUxMOwogCXNjdHBfYWRkaXBoZHJfdAkJKmhkcjsKLQl1bmlvbiBzY3RwX2FkZHJfcGFy YW0JKmFkZHJfcGFyYW07CiAJX191MzIJCQlzZXJpYWw7Ci0JaW50CQkJbGVuZ3RoOwogCiAJaWYg KCFzY3RwX3Z0YWdfdmVyaWZ5KGNodW5rLCBhc29jKSkgewogCQlzY3RwX2FkZF9jbWRfc2YoY29t bWFuZHMsIFNDVFBfQ01EX1JFUE9SVF9CQURfVEFHLApAQCAtMzU0MywxNyArMzU0NCw4IEBAIHNj dHBfZGlzcG9zaXRpb25fdCBzY3RwX3NmX2RvX2FzY29uZihjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRw b2ludCAqZXAsCiAJaGRyID0gKHNjdHBfYWRkaXBoZHJfdCAqKWNodW5rLT5za2ItPmRhdGE7CiAJ c2VyaWFsID0gbnRvaGwoaGRyLT5zZXJpYWwpOwogCi0JYWRkcl9wYXJhbSA9ICh1bmlvbiBzY3Rw X2FkZHJfcGFyYW0gKiloZHItPnBhcmFtczsKLQlsZW5ndGggPSBudG9ocyhhZGRyX3BhcmFtLT5w Lmxlbmd0aCk7Ci0JaWYgKGxlbmd0aCA8IHNpemVvZihzY3RwX3BhcmFtaGRyX3QpKQotCQlyZXR1 cm4gc2N0cF9zZl92aW9sYXRpb25fcGFyYW1sZW4oZXAsIGFzb2MsIHR5cGUsIGFyZywKLQkJCSAg ICh2b2lkICopYWRkcl9wYXJhbSwgY29tbWFuZHMpOwotCiAJLyogVmVyaWZ5IHRoZSBBU0NPTkYg Y2h1bmsgYmVmb3JlIHByb2Nlc3NpbmcgaXQuICovCi0JaWYgKCFzY3RwX3ZlcmlmeV9hc2NvbmYo YXNvYywKLQkJCSAgICAoc2N0cF9wYXJhbWhkcl90ICopKCh2b2lkICopYWRkcl9wYXJhbSArIGxl bmd0aCksCi0JCQkgICAgKHZvaWQgKiljaHVuay0+Y2h1bmtfZW5kLAotCQkJICAgICZlcnJfcGFy YW0pKQorCWlmICghc2N0cF92ZXJpZnlfYXNjb25mKGFzb2MsIGNodW5rLCB0cnVlLCAmZXJyX3Bh cmFtKSkKIAkJcmV0dXJuIHNjdHBfc2ZfdmlvbGF0aW9uX3BhcmFtbGVuKGVwLCBhc29jLCB0eXBl LCBhcmcsCiAJCQkJCQkgICh2b2lkICopZXJyX3BhcmFtLCBjb21tYW5kcyk7CiAKQEAgLTM2NzAs MTAgKzM2NjIsNyBAQCBzY3RwX2Rpc3Bvc2l0aW9uX3Qgc2N0cF9zZl9kb19hc2NvbmZfYWNrKGNv bnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCwKIAlyY3ZkX3NlcmlhbCA9IG50b2hsKGFkZGlw X2hkci0+c2VyaWFsKTsKIAogCS8qIFZlcmlmeSB0aGUgQVNDT05GLUFDSyBjaHVuayBiZWZvcmUg cHJvY2Vzc2luZyBpdC4gKi8KLQlpZiAoIXNjdHBfdmVyaWZ5X2FzY29uZihhc29jLAotCSAgICAo c2N0cF9wYXJhbWhkcl90ICopYWRkaXBfaGRyLT5wYXJhbXMsCi0JICAgICh2b2lkICopYXNjb25m X2Fjay0+Y2h1bmtfZW5kLAotCSAgICAmZXJyX3BhcmFtKSkKKwlpZiAoIXNjdHBfdmVyaWZ5X2Fz Y29uZihhc29jLCBhc2NvbmZfYWNrLCBmYWxzZSwgJmVycl9wYXJhbSkpCiAJCXJldHVybiBzY3Rw X3NmX3Zpb2xhdGlvbl9wYXJhbWxlbihlcCwgYXNvYywgdHlwZSwgYXJnLAogCQkJICAgKHZvaWQg KillcnJfcGFyYW0sIGNvbW1hbmRzKTsKIApkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAy MTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKaW5kZXggNmQ0ZDI2My4uY2RmNzdhMiAxMDA2 NDQKLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYworKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIx MS5jCkBAIC00ODA0LDYgKzQ4MDQsOSBAQCBpbnQgY2ZnODAyMTFfdGVzdG1vZGVfcmVwbHkoc3Ry dWN0IHNrX2J1ZmYgKnNrYikKIAl2b2lkICpoZHIgPSAoKHZvaWQgKiopc2tiLT5jYilbMV07CiAJ c3RydWN0IG5sYXR0ciAqZGF0YSA9ICgodm9pZCAqKilza2ItPmNiKVsyXTsKIAorCS8qIGNsZWFy IENCIGRhdGEgZm9yIG5ldGxpbmsgY29yZSB0byBvd24gZnJvbSBub3cgb24gKi8KKwltZW1zZXQo c2tiLT5jYiwgMCwgc2l6ZW9mKHNrYi0+Y2IpKTsKKwogCWlmIChXQVJOX09OKCFyZGV2LT50ZXN0 bW9kZV9pbmZvKSkgewogCQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC00 ODMwLDYgKzQ4MzMsOSBAQCB2b2lkIGNmZzgwMjExX3Rlc3Rtb2RlX2V2ZW50KHN0cnVjdCBza19i dWZmICpza2IsIGdmcF90IGdmcCkKIAl2b2lkICpoZHIgPSAoKHZvaWQgKiopc2tiLT5jYilbMV07 CiAJc3RydWN0IG5sYXR0ciAqZGF0YSA9ICgodm9pZCAqKilza2ItPmNiKVsyXTsKIAorCS8qIGNs ZWFyIENCIGRhdGEgZm9yIG5ldGxpbmsgY29yZSB0byBvd24gZnJvbSBub3cgb24gKi8KKwltZW1z ZXQoc2tiLT5jYiwgMCwgc2l6ZW9mKHNrYi0+Y2IpKTsKKwogCW5sYV9uZXN0X2VuZChza2IsIGRh dGEpOwogCWdlbmxtc2dfZW5kKHNrYiwgaGRyKTsKIAlnZW5sbXNnX211bHRpY2FzdF9uZXRucyh3 aXBoeV9uZXQoJnJkZXYtPndpcGh5KSwgc2tiLCAwLApkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9w Y21fbGliLmMgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwppbmRleCBjZjBkNDZlLi43ZjAwZDM0IDEw MDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9saWIuYworKysgYi9zb3VuZC9jb3JlL3BjbV9saWIu YwpAQCAtMTY5MiwxNCArMTY5MiwxNiBAQCBzdGF0aWMgaW50IHNuZF9wY21fbGliX2lvY3RsX2Zp Zm9fc2l6ZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIHsKIAlzdHJ1Y3Qg c25kX3BjbV9od19wYXJhbXMgKnBhcmFtcyA9IGFyZzsKIAlzbmRfcGNtX2Zvcm1hdF90IGZvcm1h dDsKLQlpbnQgY2hhbm5lbHMsIHdpZHRoOworCWludCBjaGFubmVsczsKKwlzc2l6ZV90IGZyYW1l X3NpemU7CiAKIAlwYXJhbXMtPmZpZm9fc2l6ZSA9IHN1YnN0cmVhbS0+cnVudGltZS0+aHcuZmlm b19zaXplOwogCWlmICghKHN1YnN0cmVhbS0+cnVudGltZS0+aHcuaW5mbyAmIFNORFJWX1BDTV9J TkZPX0ZJRk9fSU5fRlJBTUVTKSkgewogCQlmb3JtYXQgPSBwYXJhbXNfZm9ybWF0KHBhcmFtcyk7 CiAJCWNoYW5uZWxzID0gcGFyYW1zX2NoYW5uZWxzKHBhcmFtcyk7Ci0JCXdpZHRoID0gc25kX3Bj bV9mb3JtYXRfcGh5c2ljYWxfd2lkdGgoZm9ybWF0KTsKLQkJcGFyYW1zLT5maWZvX3NpemUgLz0g d2lkdGggKiBjaGFubmVsczsKKwkJZnJhbWVfc2l6ZSA9IHNuZF9wY21fZm9ybWF0X3NpemUoZm9y bWF0LCBjaGFubmVscyk7CisJCWlmIChmcmFtZV9zaXplID4gMCkKKwkJCXBhcmFtcy0+Zmlmb19z aXplIC89ICh1bnNpZ25lZClmcmFtZV9zaXplOwogCX0KIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9y ZWFsdGVrLmMKaW5kZXggNDkxY2RmMC4uZDEwYTZlZiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2hk YS9wYXRjaF9yZWFsdGVrLmMKKysrIGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKQEAg LTc4OSw2ICs3ODksNyBAQCBzdGF0aWMgdm9pZCBhbGNfYXV0b19pbml0X2FtcChzdHJ1Y3QgaGRh X2NvZGVjICpjb2RlYywgaW50IHR5cGUpCiAJCWNhc2UgMHgxMGVjMDg4NToKIAkJY2FzZSAweDEw ZWMwODg3OgogCQkvKmNhc2UgMHgxMGVjMDg4OToqLyAvKiB0aGlzIGNhdXNlcyBhbiBTUERJRiBw cm9ibGVtICovCisJCWNhc2UgMHgxMGVjMDkwMDoKIAkJCWFsYzg4OV9jb2VmX2luaXQoY29kZWMp OwogCQkJYnJlYWs7CiAJCWNhc2UgMHgxMGVjMDg4ODoKQEAgLTQzNDMsNiArNDM0NCw3IEBAIHN0 YXRpYyBpbnQgcGF0Y2hfYWxjODgyKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQogCXN3aXRjaCAo Y29kZWMtPnZlbmRvcl9pZCkgewogCWNhc2UgMHgxMGVjMDg4MjoKIAljYXNlIDB4MTBlYzA4ODU6 CisJY2FzZSAweDEwZWMwOTAwOgogCQlicmVhazsKIAlkZWZhdWx0OgogCQkvKiBBTEM4ODMgYW5k IHZhcmlhbnRzICovCi== --=-Q/PpSv8caHZwMmahWlpi-- --=-X6n5JTNLkHR5rPZq/102 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIVAwUAVFVozOe/yOyVhhEJAQqIeBAAnPf0OdAFNAshYH705GrWQUWbwySRHDrL 49BQXONKB74ZRwUglIU3pRcvAYflrRT4BFRw1hI+5Vc/WHVVIOQiliUA/4EI7IX0 KNgGHa0G9RIbaha3+kOGntuP2Kz1+/3JNtL9ysVoXGXlEQ1PUnenlFw1snEZFd1X KDdq/DfdiGF43yN8YlBmCSqXzGvnBzMWSinxPo95M1FoLpqrUW3kz8my7OCFZ4AT PXs6ZACjJ3YVG+4/hQUU79ye0eB5jlkMNt4IWphN6KwdxJkGUBg1gBhn6l1R1lEh 27D+jk03pNZEmUc5CfktTY9mlFPLrTBc/1BrgZBFDPptdJQvvlq9x/xwgtSix+Ij HIhe4mgzQo50g7ICg1vxH0cbT3+t24iOJb/+H/0JMWBdOiBwOPIryeGYdYA6o/ph K9uRI9UYG8VYJW+kLhtMbU89BfMAHRUJLGl8quO86qvEhBh+ApsVqIt2rYXdbDw2 8B0pSDqX7wODJb0Bid0t8UeUbu/gkGiIRqsUJBDS4ASsdbI8evIjseGoWjbfTrHs lUaMJgAE++5FCjDQJ+n0KYID8YCVraLg4aLQi2ym3BRZ4ixEWQDgf3S9ZgiuX/wR kLmYZeO15IlP9I/jyoq04juZ7ovxl00mHCXDZ3NWDwkmo8EJVch8Ei6YmAwQXnM6 Uw9WtxFYK1Y= =LuCb -----END PGP SIGNATURE----- --=-X6n5JTNLkHR5rPZq/102-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/