Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751617AbaKAXqt (ORCPT ); Sat, 1 Nov 2014 19:46:49 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:60857 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751036AbaKAXqr (ORCPT ); Sat, 1 Nov 2014 19:46:47 -0400 Message-ID: <1414885596.27313.5.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:46:36 +0000 In-Reply-To: <1414883527.27313.3.camel@decadent.org.uk> References: <1414883527.27313.3.camel@decadent.org.uk> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-oLVftlMM6pcONn/r0K9n" 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 --=-oLVftlMM6pcONn/r0K9n Content-Type: multipart/mixed; boundary="=-m8mhQzFTY/1Jt4fms/11" --=-m8mhQzFTY/1Jt4fms/11 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2014-11-01 at 23:12 +0000, Ben Hutchings wrote: > This is the combined patch for 3.2.64-rc1 relative to 3.2.63. Sorry, that was missing the last two patches in the series. This one includes all 102 patches that went out for review. 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' --=-m8mhQzFTY/1Jt4fms/11 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 KgpkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3JpbmdfYnVmZmVyLmMgYi9rZXJuZWwvdHJhY2Uv cmluZ19idWZmZXIuYwppbmRleCA0YmFiZDc3Li5iMjUyNjYxIDEwMDY0NAotLS0gYS9rZXJuZWwv dHJhY2UvcmluZ19idWZmZXIuYworKysgYi9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYwpAQCAt Mjg0Nyw3ICsyODQ3LDcgQEAgc3RhdGljIHZvaWQgcmJfaXRlcl9yZXNldChzdHJ1Y3QgcmluZ19i dWZmZXJfaXRlciAqaXRlcikKIAlpdGVyLT5oZWFkID0gY3B1X2J1ZmZlci0+cmVhZGVyX3BhZ2Ut PnJlYWQ7CiAKIAlpdGVyLT5jYWNoZV9yZWFkZXJfcGFnZSA9IGl0ZXItPmhlYWRfcGFnZTsKLQlp dGVyLT5jYWNoZV9yZWFkID0gaXRlci0+aGVhZDsKKwlpdGVyLT5jYWNoZV9yZWFkID0gY3B1X2J1 ZmZlci0+cmVhZDsKIAogCWlmIChpdGVyLT5oZWFkKQogCQlpdGVyLT5yZWFkX3N0YW1wID0gY3B1 X2J1ZmZlci0+cmVhZF9zdGFtcDsKZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3Jh dGUuYwppbmRleCAwOWQ2YTlkLi43ZDI2ZWE1IDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKKysr IGIvbW0vbWlncmF0ZS5jCkBAIC0xNDEsOCArMTQxLDExIEBAIHN0YXRpYyBpbnQgcmVtb3ZlX21p Z3JhdGlvbl9wdGUoc3RydWN0IHBhZ2UgKm5ldywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEs CiAKIAlnZXRfcGFnZShuZXcpOwogCXB0ZSA9IHB0ZV9ta29sZChta19wdGUobmV3LCB2bWEtPnZt X3BhZ2VfcHJvdCkpOworCisJLyogUmVjaGVjayBWTUEgYXMgcGVybWlzc2lvbnMgY2FuIGNoYW5n ZSBzaW5jZSBtaWdyYXRpb24gc3RhcnRlZCAgKi8KIAlpZiAoaXNfd3JpdGVfbWlncmF0aW9uX2Vu dHJ5KGVudHJ5KSkKLQkJcHRlID0gcHRlX21rd3JpdGUocHRlKTsKKwkJcHRlID0gbWF5YmVfbWt3 cml0ZShwdGUsIHZtYSk7CisKICNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFCiAJaWYgKFBhZ2VI dWdlKG5ldykpCiAJCXB0ZSA9IHB0ZV9ta2h1Z2UocHRlKTsKZGlmZiAtLWdpdCBhL21tL3BlcmNw dS12bS5jIGIvbW0vcGVyY3B1LXZtLmMKaW5kZXggMTJhNDhhODguLjA1MzlmNmEgMTAwNjQ0Ci0t LSBhL21tL3BlcmNwdS12bS5jCisrKyBiL21tL3BlcmNwdS12bS5jCkBAIC0xMDgsNyArMTA4LDcg QEAgc3RhdGljIGludCBwY3B1X2FsbG9jX3BhZ2VzKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywK IAkJCSAgICBpbnQgcGFnZV9zdGFydCwgaW50IHBhZ2VfZW5kKQogewogCWNvbnN0IGdmcF90IGdm cCA9IEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNIHwgX19HRlBfQ09MRDsKLQl1bnNpZ25lZCBp bnQgY3B1OworCXVuc2lnbmVkIGludCBjcHUsIHRjcHU7CiAJaW50IGk7CiAKIAlmb3JfZWFjaF9w b3NzaWJsZV9jcHUoY3B1KSB7CkBAIC0xMTYsMTQgKzExNiwyMyBAQCBzdGF0aWMgaW50IHBjcHVf YWxsb2NfcGFnZXMoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rLAogCQkJc3RydWN0IHBhZ2UgKipw YWdlcCA9ICZwYWdlc1twY3B1X3BhZ2VfaWR4KGNwdSwgaSldOwogCiAJCQkqcGFnZXAgPSBhbGxv Y19wYWdlc19ub2RlKGNwdV90b19ub2RlKGNwdSksIGdmcCwgMCk7Ci0JCQlpZiAoISpwYWdlcCkg ewotCQkJCXBjcHVfZnJlZV9wYWdlcyhjaHVuaywgcGFnZXMsIHBvcHVsYXRlZCwKLQkJCQkJCXBh Z2Vfc3RhcnQsIHBhZ2VfZW5kKTsKLQkJCQlyZXR1cm4gLUVOT01FTTsKLQkJCX0KKwkJCWlmICgh KnBhZ2VwKQorCQkJCWdvdG8gZXJyOwogCQl9CiAJfQogCXJldHVybiAwOworCitlcnI6CisJd2hp bGUgKC0taSA+PSBwYWdlX3N0YXJ0KQorCQlfX2ZyZWVfcGFnZShwYWdlc1twY3B1X3BhZ2VfaWR4 KGNwdSwgaSldKTsKKworCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdSh0Y3B1KSB7CisJCWlmICh0Y3B1 ID09IGNwdSkKKwkJCWJyZWFrOworCQlmb3IgKGkgPSBwYWdlX3N0YXJ0OyBpIDwgcGFnZV9lbmQ7 IGkrKykKKwkJCV9fZnJlZV9wYWdlKHBhZ2VzW3BjcHVfcGFnZV9pZHgodGNwdSwgaSldKTsKKwl9 CisJcmV0dXJuIC1FTk9NRU07CiB9CiAKIC8qKgpAQCAtMjY0LDYgKzI3Myw3IEBAIGVycjoKIAkJ X19wY3B1X3VubWFwX3BhZ2VzKHBjcHVfY2h1bmtfYWRkcihjaHVuaywgdGNwdSwgcGFnZV9zdGFy dCksCiAJCQkJICAgcGFnZV9lbmQgLSBwYWdlX3N0YXJ0KTsKIAl9CisJcGNwdV9wb3N0X3VubWFw X3RsYl9mbHVzaChjaHVuaywgcGFnZV9zdGFydCwgcGFnZV9lbmQpOwogCXJldHVybiBlcnI7CiB9 CiAKZGlmZiAtLWdpdCBhL21tL3BlcmNwdS5jIGIvbW0vcGVyY3B1LmMKaW5kZXggNWMyOTc1MC4u ZTI5YTFjNCAxMDA2NDQKLS0tIGEvbW0vcGVyY3B1LmMKKysrIGIvbW0vcGVyY3B1LmMKQEAgLTE4 OTUsNiArMTg5NSw4IEBAIHZvaWQgX19pbml0IHNldHVwX3Blcl9jcHVfYXJlYXModm9pZCkKIAog CWlmIChwY3B1X3NldHVwX2ZpcnN0X2NodW5rKGFpLCBmYykgPCAwKQogCQlwYW5pYygiRmFpbGVk IHRvIGluaXRpYWxpemUgcGVyY3B1IGFyZWFzLiIpOworCisJcGNwdV9mcmVlX2FsbG9jX2luZm8o YWkpOwogfQogCiAjZW5kaWYJLyogQ09ORklHX1NNUCAqLwpkaWZmIC0tZ2l0IGEvbW0vc2htZW0u YyBiL21tL3NobWVtLmMKaW5kZXggMTM3MTAyMS4uODNlZmFjNiAxMDA2NDQKLS0tIGEvbW0vc2ht ZW0uYworKysgYi9tbS9zaG1lbS5jCkBAIC0xNzE5LDggKzE3MTksMTAgQEAgc3RhdGljIGludCBz aG1lbV9yZW5hbWUoc3RydWN0IGlub2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVu dHJ5LCBzdHJ1Y3QKIAogCWlmIChuZXdfZGVudHJ5LT5kX2lub2RlKSB7CiAJCSh2b2lkKSBzaG1l bV91bmxpbmsobmV3X2RpciwgbmV3X2RlbnRyeSk7Ci0JCWlmICh0aGV5X2FyZV9kaXJzKQorCQlp ZiAodGhleV9hcmVfZGlycykgeworCQkJZHJvcF9ubGluayhuZXdfZGVudHJ5LT5kX2lub2RlKTsK IAkJCWRyb3Bfbmxpbmsob2xkX2Rpcik7CisJCX0KIAl9IGVsc2UgaWYgKHRoZXlfYXJlX2RpcnMp IHsKIAkJZHJvcF9ubGluayhvbGRfZGlyKTsKIAkJaW5jX25saW5rKG5ld19kaXIpOwpkaWZmIC0t Z2l0IGEvbmV0L2NlcGgvYXV0aF94LmMgYi9uZXQvY2VwaC9hdXRoX3guYwppbmRleCAxNTg3ZGM2 Li45ODk4ZDFmIDEwMDY0NAotLS0gYS9uZXQvY2VwaC9hdXRoX3guYworKysgYi9uZXQvY2VwaC9h dXRoX3guYwpAQCAtMTMsOCArMTMsNiBAQAogI2luY2x1ZGUgImF1dGhfeC5oIgogI2luY2x1ZGUg ImF1dGhfeF9wcm90b2NvbC5oIgogCi0jZGVmaW5lIFRFTVBfVElDS0VUX0JVRl9MRU4JMjU2Ci0K IHN0YXRpYyB2b2lkIGNlcGhfeF92YWxpZGF0ZV90aWNrZXRzKHN0cnVjdCBjZXBoX2F1dGhfY2xp ZW50ICphYywgaW50ICpwbmVlZCk7CiAKIHN0YXRpYyBpbnQgY2VwaF94X2lzX2F1dGhlbnRpY2F0 ZWQoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjKQpAQCAtNjQsNyArNjIsNyBAQCBzdGF0aWMg aW50IGNlcGhfeF9lbmNyeXB0KHN0cnVjdCBjZXBoX2NyeXB0b19rZXkgKnNlY3JldCwKIH0KIAog c3RhdGljIGludCBjZXBoX3hfZGVjcnlwdChzdHJ1Y3QgY2VwaF9jcnlwdG9fa2V5ICpzZWNyZXQs Ci0JCQkgIHZvaWQgKipwLCB2b2lkICplbmQsIHZvaWQgKm9idWYsIHNpemVfdCBvbGVuKQorCQkJ ICB2b2lkICoqcCwgdm9pZCAqZW5kLCB2b2lkICoqb2J1Ziwgc2l6ZV90IG9sZW4pCiB7CiAJc3Ry dWN0IGNlcGhfeF9lbmNyeXB0X2hlYWRlciBoZWFkOwogCXNpemVfdCBoZWFkX2xlbiA9IHNpemVv ZihoZWFkKTsKQEAgLTc1LDggKzczLDE0IEBAIHN0YXRpYyBpbnQgY2VwaF94X2RlY3J5cHQoc3Ry dWN0IGNlcGhfY3J5cHRvX2tleSAqc2VjcmV0LAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWRvdXQo ImNlcGhfeF9kZWNyeXB0IGxlbiAlZFxuIiwgbGVuKTsKLQlyZXQgPSBjZXBoX2RlY3J5cHQyKHNl Y3JldCwgJmhlYWQsICZoZWFkX2xlbiwgb2J1ZiwgJm9sZW4sCi0JCQkgICAgKnAsIGxlbik7CisJ aWYgKCpvYnVmID09IE5VTEwpIHsKKwkJKm9idWYgPSBrbWFsbG9jKGxlbiwgR0ZQX05PRlMpOwor CQlpZiAoISpvYnVmKQorCQkJcmV0dXJuIC1FTk9NRU07CisJCW9sZW4gPSBsZW47CisJfQorCisJ cmV0ID0gY2VwaF9kZWNyeXB0MihzZWNyZXQsICZoZWFkLCAmaGVhZF9sZW4sICpvYnVmLCAmb2xl biwgKnAsIGxlbik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAlpZiAoaGVhZC5zdHJ1Y3Rf diAhPSAxIHx8IGxlNjRfdG9fY3B1KGhlYWQubWFnaWMpICE9IENFUEhYX0VOQ19NQUdJQykKQEAg LTEyOSwxMzkgKzEzMywxMjAgQEAgc3RhdGljIHZvaWQgcmVtb3ZlX3RpY2tldF9oYW5kbGVyKHN0 cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywKIAlrZnJlZSh0aCk7CiB9CiAKLXN0YXRpYyBpbnQg Y2VwaF94X3Byb2NfdGlja2V0X3JlcGx5KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywKLQkJ CQkgICAgc3RydWN0IGNlcGhfY3J5cHRvX2tleSAqc2VjcmV0LAotCQkJCSAgICB2b2lkICpidWYs IHZvaWQgKmVuZCkKK3N0YXRpYyBpbnQgcHJvY2Vzc19vbmVfdGlja2V0KHN0cnVjdCBjZXBoX2F1 dGhfY2xpZW50ICphYywKKwkJCSAgICAgIHN0cnVjdCBjZXBoX2NyeXB0b19rZXkgKnNlY3JldCwK KwkJCSAgICAgIHZvaWQgKipwLCB2b2lkICplbmQpCiB7CiAJc3RydWN0IGNlcGhfeF9pbmZvICp4 aSA9IGFjLT5wcml2YXRlOwotCWludCBudW07Ci0Jdm9pZCAqcCA9IGJ1ZjsKKwlpbnQgdHlwZTsK Kwl1OCB0a3Rfc3RydWN0X3YsIGJsb2Jfc3RydWN0X3Y7CisJc3RydWN0IGNlcGhfeF90aWNrZXRf aGFuZGxlciAqdGg7CisJdm9pZCAqZGJ1ZiA9IE5VTEw7CisJdm9pZCAqZHAsICpkZW5kOworCWlu dCBkbGVuOworCWNoYXIgaXNfZW5jOworCXN0cnVjdCB0aW1lc3BlYyB2YWxpZGl0eTsKKwlzdHJ1 Y3QgY2VwaF9jcnlwdG9fa2V5IG9sZF9rZXk7CisJdm9pZCAqdGlja2V0X2J1ZiA9IE5VTEw7CisJ dm9pZCAqdHAsICp0cGVuZDsKKwlzdHJ1Y3QgY2VwaF90aW1lc3BlYyBuZXdfdmFsaWRpdHk7CisJ c3RydWN0IGNlcGhfY3J5cHRvX2tleSBuZXdfc2Vzc2lvbl9rZXk7CisJc3RydWN0IGNlcGhfYnVm ZmVyICpuZXdfdGlja2V0X2Jsb2I7CisJdW5zaWduZWQgbG9uZyBuZXdfZXhwaXJlcywgbmV3X3Jl bmV3X2FmdGVyOworCXU2NCBuZXdfc2VjcmV0X2lkOwogCWludCByZXQ7Ci0JY2hhciAqZGJ1ZjsK LQljaGFyICp0aWNrZXRfYnVmOwotCXU4IHJlcGx5X3N0cnVjdF92OwogCi0JZGJ1ZiA9IGttYWxs b2MoVEVNUF9USUNLRVRfQlVGX0xFTiwgR0ZQX05PRlMpOwotCWlmICghZGJ1ZikKLQkJcmV0dXJu IC1FTk9NRU07CisJY2VwaF9kZWNvZGVfbmVlZChwLCBlbmQsIHNpemVvZih1MzIpICsgMSwgYmFk KTsKIAotCXJldCA9IC1FTk9NRU07Ci0JdGlja2V0X2J1ZiA9IGttYWxsb2MoVEVNUF9USUNLRVRf QlVGX0xFTiwgR0ZQX05PRlMpOwotCWlmICghdGlja2V0X2J1ZikKLQkJZ290byBvdXRfZGJ1ZjsK Kwl0eXBlID0gY2VwaF9kZWNvZGVfMzIocCk7CisJZG91dCgiIHRpY2tldCB0eXBlICVkICVzXG4i LCB0eXBlLCBjZXBoX2VudGl0eV90eXBlX25hbWUodHlwZSkpOwogCi0JY2VwaF9kZWNvZGVfbmVl ZCgmcCwgZW5kLCAxICsgc2l6ZW9mKHUzMiksIGJhZCk7Ci0JcmVwbHlfc3RydWN0X3YgPSBjZXBo X2RlY29kZV84KCZwKTsKLQlpZiAocmVwbHlfc3RydWN0X3YgIT0gMSkKKwl0a3Rfc3RydWN0X3Yg PSBjZXBoX2RlY29kZV84KHApOworCWlmICh0a3Rfc3RydWN0X3YgIT0gMSkKIAkJZ290byBiYWQ7 Ci0JbnVtID0gY2VwaF9kZWNvZGVfMzIoJnApOwotCWRvdXQoIiVkIHRpY2tldHNcbiIsIG51bSk7 Ci0Jd2hpbGUgKG51bS0tKSB7Ci0JCWludCB0eXBlOwotCQl1OCB0a3Rfc3RydWN0X3YsIGJsb2Jf c3RydWN0X3Y7Ci0JCXN0cnVjdCBjZXBoX3hfdGlja2V0X2hhbmRsZXIgKnRoOwotCQl2b2lkICpk cCwgKmRlbmQ7Ci0JCWludCBkbGVuOwotCQljaGFyIGlzX2VuYzsKLQkJc3RydWN0IHRpbWVzcGVj IHZhbGlkaXR5OwotCQlzdHJ1Y3QgY2VwaF9jcnlwdG9fa2V5IG9sZF9rZXk7Ci0JCXZvaWQgKnRw LCAqdHBlbmQ7Ci0JCXN0cnVjdCBjZXBoX3RpbWVzcGVjIG5ld192YWxpZGl0eTsKLQkJc3RydWN0 IGNlcGhfY3J5cHRvX2tleSBuZXdfc2Vzc2lvbl9rZXk7Ci0JCXN0cnVjdCBjZXBoX2J1ZmZlciAq bmV3X3RpY2tldF9ibG9iOwotCQl1bnNpZ25lZCBsb25nIG5ld19leHBpcmVzLCBuZXdfcmVuZXdf YWZ0ZXI7Ci0JCXU2NCBuZXdfc2VjcmV0X2lkOwotCi0JCWNlcGhfZGVjb2RlX25lZWQoJnAsIGVu ZCwgc2l6ZW9mKHUzMikgKyAxLCBiYWQpOwotCi0JCXR5cGUgPSBjZXBoX2RlY29kZV8zMigmcCk7 Ci0JCWRvdXQoIiB0aWNrZXQgdHlwZSAlZCAlc1xuIiwgdHlwZSwgY2VwaF9lbnRpdHlfdHlwZV9u YW1lKHR5cGUpKTsKLQotCQl0a3Rfc3RydWN0X3YgPSBjZXBoX2RlY29kZV84KCZwKTsKLQkJaWYg KHRrdF9zdHJ1Y3RfdiAhPSAxKQotCQkJZ290byBiYWQ7Ci0KLQkJdGggPSBnZXRfdGlja2V0X2hh bmRsZXIoYWMsIHR5cGUpOwotCQlpZiAoSVNfRVJSKHRoKSkgewotCQkJcmV0ID0gUFRSX0VSUih0 aCk7Ci0JCQlnb3RvIG91dDsKLQkJfQogCi0JCS8qIGJsb2IgZm9yIG1lICovCi0JCWRsZW4gPSBj ZXBoX3hfZGVjcnlwdChzZWNyZXQsICZwLCBlbmQsIGRidWYsCi0JCQkJICAgICAgVEVNUF9USUNL RVRfQlVGX0xFTik7Ci0JCWlmIChkbGVuIDw9IDApIHsKLQkJCXJldCA9IGRsZW47Ci0JCQlnb3Rv IG91dDsKLQkJfQotCQlkb3V0KCIgZGVjcnlwdGVkICVkIGJ5dGVzXG4iLCBkbGVuKTsKLQkJZGVu ZCA9IGRidWYgKyBkbGVuOwotCQlkcCA9IGRidWY7CisJdGggPSBnZXRfdGlja2V0X2hhbmRsZXIo YWMsIHR5cGUpOworCWlmIChJU19FUlIodGgpKSB7CisJCXJldCA9IFBUUl9FUlIodGgpOworCQln b3RvIG91dDsKKwl9CiAKLQkJdGt0X3N0cnVjdF92ID0gY2VwaF9kZWNvZGVfOCgmZHApOwotCQlp ZiAodGt0X3N0cnVjdF92ICE9IDEpCi0JCQlnb3RvIGJhZDsKKwkvKiBibG9iIGZvciBtZSAqLwor CWRsZW4gPSBjZXBoX3hfZGVjcnlwdChzZWNyZXQsIHAsIGVuZCwgJmRidWYsIDApOworCWlmIChk bGVuIDw9IDApIHsKKwkJcmV0ID0gZGxlbjsKKwkJZ290byBvdXQ7CisJfQorCWRvdXQoIiBkZWNy eXB0ZWQgJWQgYnl0ZXNcbiIsIGRsZW4pOworCWRwID0gZGJ1ZjsKKwlkZW5kID0gZHAgKyBkbGVu OwogCi0JCW1lbWNweSgmb2xkX2tleSwgJnRoLT5zZXNzaW9uX2tleSwgc2l6ZW9mKG9sZF9rZXkp KTsKLQkJcmV0ID0gY2VwaF9jcnlwdG9fa2V5X2RlY29kZSgmbmV3X3Nlc3Npb25fa2V5LCAmZHAs IGRlbmQpOwotCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CisJdGt0X3N0cnVjdF92ID0gY2VwaF9k ZWNvZGVfOCgmZHApOworCWlmICh0a3Rfc3RydWN0X3YgIT0gMSkKKwkJZ290byBiYWQ7CiAKLQkJ Y2VwaF9kZWNvZGVfY29weSgmZHAsICZuZXdfdmFsaWRpdHksIHNpemVvZihuZXdfdmFsaWRpdHkp KTsKLQkJY2VwaF9kZWNvZGVfdGltZXNwZWMoJnZhbGlkaXR5LCAmbmV3X3ZhbGlkaXR5KTsKLQkJ bmV3X2V4cGlyZXMgPSBnZXRfc2Vjb25kcygpICsgdmFsaWRpdHkudHZfc2VjOwotCQluZXdfcmVu ZXdfYWZ0ZXIgPSBuZXdfZXhwaXJlcyAtICh2YWxpZGl0eS50dl9zZWMgLyA0KTsKLQkJZG91dCgi IGV4cGlyZXM9JWx1IHJlbmV3X2FmdGVyPSVsdVxuIiwgbmV3X2V4cGlyZXMsCi0JCSAgICAgbmV3 X3JlbmV3X2FmdGVyKTsKKwltZW1jcHkoJm9sZF9rZXksICZ0aC0+c2Vzc2lvbl9rZXksIHNpemVv ZihvbGRfa2V5KSk7CisJcmV0ID0gY2VwaF9jcnlwdG9fa2V5X2RlY29kZSgmbmV3X3Nlc3Npb25f a2V5LCAmZHAsIGRlbmQpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OwogCi0JCS8qIHRpY2tldCBi bG9iIGZvciBzZXJ2aWNlICovCi0JCWNlcGhfZGVjb2RlXzhfc2FmZSgmcCwgZW5kLCBpc19lbmMs IGJhZCk7Ci0JCXRwID0gdGlja2V0X2J1ZjsKLQkJaWYgKGlzX2VuYykgewotCQkJLyogZW5jcnlw dGVkICovCi0JCQlkb3V0KCIgZW5jcnlwdGVkIHRpY2tldFxuIik7Ci0JCQlkbGVuID0gY2VwaF94 X2RlY3J5cHQoJm9sZF9rZXksICZwLCBlbmQsIHRpY2tldF9idWYsCi0JCQkJCSAgICAgIFRFTVBf VElDS0VUX0JVRl9MRU4pOwotCQkJaWYgKGRsZW4gPCAwKSB7Ci0JCQkJcmV0ID0gZGxlbjsKLQkJ CQlnb3RvIG91dDsKLQkJCX0KLQkJCWRsZW4gPSBjZXBoX2RlY29kZV8zMigmdHApOwotCQl9IGVs c2UgewotCQkJLyogdW5lbmNyeXB0ZWQgKi8KLQkJCWNlcGhfZGVjb2RlXzMyX3NhZmUoJnAsIGVu ZCwgZGxlbiwgYmFkKTsKLQkJCWNlcGhfZGVjb2RlX25lZWQoJnAsIGVuZCwgZGxlbiwgYmFkKTsK LQkJCWNlcGhfZGVjb2RlX2NvcHkoJnAsIHRpY2tldF9idWYsIGRsZW4pOworCWNlcGhfZGVjb2Rl X2NvcHkoJmRwLCAmbmV3X3ZhbGlkaXR5LCBzaXplb2YobmV3X3ZhbGlkaXR5KSk7CisJY2VwaF9k ZWNvZGVfdGltZXNwZWMoJnZhbGlkaXR5LCAmbmV3X3ZhbGlkaXR5KTsKKwluZXdfZXhwaXJlcyA9 IGdldF9zZWNvbmRzKCkgKyB2YWxpZGl0eS50dl9zZWM7CisJbmV3X3JlbmV3X2FmdGVyID0gbmV3 X2V4cGlyZXMgLSAodmFsaWRpdHkudHZfc2VjIC8gNCk7CisJZG91dCgiIGV4cGlyZXM9JWx1IHJl bmV3X2FmdGVyPSVsdVxuIiwgbmV3X2V4cGlyZXMsCisJICAgICBuZXdfcmVuZXdfYWZ0ZXIpOwor CisJLyogdGlja2V0IGJsb2IgZm9yIHNlcnZpY2UgKi8KKwljZXBoX2RlY29kZV84X3NhZmUocCwg ZW5kLCBpc19lbmMsIGJhZCk7CisJaWYgKGlzX2VuYykgeworCQkvKiBlbmNyeXB0ZWQgKi8KKwkJ ZG91dCgiIGVuY3J5cHRlZCB0aWNrZXRcbiIpOworCQlkbGVuID0gY2VwaF94X2RlY3J5cHQoJm9s ZF9rZXksIHAsIGVuZCwgJnRpY2tldF9idWYsIDApOworCQlpZiAoZGxlbiA8IDApIHsKKwkJCXJl dCA9IGRsZW47CisJCQlnb3RvIG91dDsKIAkJfQotCQl0cGVuZCA9IHRwICsgZGxlbjsKLQkJZG91 dCgiIHRpY2tldCBibG9iIGlzICVkIGJ5dGVzXG4iLCBkbGVuKTsKLQkJY2VwaF9kZWNvZGVfbmVl ZCgmdHAsIHRwZW5kLCAxICsgc2l6ZW9mKHU2NCksIGJhZCk7Ci0JCWJsb2Jfc3RydWN0X3YgPSBj ZXBoX2RlY29kZV84KCZ0cCk7Ci0JCW5ld19zZWNyZXRfaWQgPSBjZXBoX2RlY29kZV82NCgmdHAp OwotCQlyZXQgPSBjZXBoX2RlY29kZV9idWZmZXIoJm5ld190aWNrZXRfYmxvYiwgJnRwLCB0cGVu ZCk7Ci0JCWlmIChyZXQpCisJCXRwID0gdGlja2V0X2J1ZjsKKwkJZGxlbiA9IGNlcGhfZGVjb2Rl XzMyKCZ0cCk7CisJfSBlbHNlIHsKKwkJLyogdW5lbmNyeXB0ZWQgKi8KKwkJY2VwaF9kZWNvZGVf MzJfc2FmZShwLCBlbmQsIGRsZW4sIGJhZCk7CisJCXRpY2tldF9idWYgPSBrbWFsbG9jKGRsZW4s IEdGUF9OT0ZTKTsKKwkJaWYgKCF0aWNrZXRfYnVmKSB7CisJCQlyZXQgPSAtRU5PTUVNOwogCQkJ Z290byBvdXQ7Ci0KLQkJLyogYWxsIGlzIHdlbGwsIHVwZGF0ZSBvdXIgdGlja2V0ICovCi0JCWNl cGhfY3J5cHRvX2tleV9kZXN0cm95KCZ0aC0+c2Vzc2lvbl9rZXkpOwotCQlpZiAodGgtPnRpY2tl dF9ibG9iKQotCQkJY2VwaF9idWZmZXJfcHV0KHRoLT50aWNrZXRfYmxvYik7Ci0JCXRoLT5zZXNz aW9uX2tleSA9IG5ld19zZXNzaW9uX2tleTsKLQkJdGgtPnRpY2tldF9ibG9iID0gbmV3X3RpY2tl dF9ibG9iOwotCQl0aC0+dmFsaWRpdHkgPSBuZXdfdmFsaWRpdHk7Ci0JCXRoLT5zZWNyZXRfaWQg PSBuZXdfc2VjcmV0X2lkOwotCQl0aC0+ZXhwaXJlcyA9IG5ld19leHBpcmVzOwotCQl0aC0+cmVu ZXdfYWZ0ZXIgPSBuZXdfcmVuZXdfYWZ0ZXI7Ci0JCWRvdXQoIiBnb3QgdGlja2V0IHNlcnZpY2Ug JWQgKCVzKSBzZWNyZXRfaWQgJWxsZCBsZW4gJWRcbiIsCi0JCSAgICAgdHlwZSwgY2VwaF9lbnRp dHlfdHlwZV9uYW1lKHR5cGUpLCB0aC0+c2VjcmV0X2lkLAotCQkgICAgIChpbnQpdGgtPnRpY2tl dF9ibG9iLT52ZWMuaW92X2xlbik7Ci0JCXhpLT5oYXZlX2tleXMgfD0gdGgtPnNlcnZpY2U7CisJ CX0KKwkJdHAgPSB0aWNrZXRfYnVmOworCQljZXBoX2RlY29kZV9uZWVkKHAsIGVuZCwgZGxlbiwg YmFkKTsKKwkJY2VwaF9kZWNvZGVfY29weShwLCB0aWNrZXRfYnVmLCBkbGVuKTsKIAl9CisJdHBl bmQgPSB0cCArIGRsZW47CisJZG91dCgiIHRpY2tldCBibG9iIGlzICVkIGJ5dGVzXG4iLCBkbGVu KTsKKwljZXBoX2RlY29kZV9uZWVkKCZ0cCwgdHBlbmQsIDEgKyBzaXplb2YodTY0KSwgYmFkKTsK KwlibG9iX3N0cnVjdF92ID0gY2VwaF9kZWNvZGVfOCgmdHApOworCW5ld19zZWNyZXRfaWQgPSBj ZXBoX2RlY29kZV82NCgmdHApOworCXJldCA9IGNlcGhfZGVjb2RlX2J1ZmZlcigmbmV3X3RpY2tl dF9ibG9iLCAmdHAsIHRwZW5kKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCS8qIGFsbCBp cyB3ZWxsLCB1cGRhdGUgb3VyIHRpY2tldCAqLworCWNlcGhfY3J5cHRvX2tleV9kZXN0cm95KCZ0 aC0+c2Vzc2lvbl9rZXkpOworCWlmICh0aC0+dGlja2V0X2Jsb2IpCisJCWNlcGhfYnVmZmVyX3B1 dCh0aC0+dGlja2V0X2Jsb2IpOworCXRoLT5zZXNzaW9uX2tleSA9IG5ld19zZXNzaW9uX2tleTsK Kwl0aC0+dGlja2V0X2Jsb2IgPSBuZXdfdGlja2V0X2Jsb2I7CisJdGgtPnZhbGlkaXR5ID0gbmV3 X3ZhbGlkaXR5OworCXRoLT5zZWNyZXRfaWQgPSBuZXdfc2VjcmV0X2lkOworCXRoLT5leHBpcmVz ID0gbmV3X2V4cGlyZXM7CisJdGgtPnJlbmV3X2FmdGVyID0gbmV3X3JlbmV3X2FmdGVyOworCWRv dXQoIiBnb3QgdGlja2V0IHNlcnZpY2UgJWQgKCVzKSBzZWNyZXRfaWQgJWxsZCBsZW4gJWRcbiIs CisJICAgICB0eXBlLCBjZXBoX2VudGl0eV90eXBlX25hbWUodHlwZSksIHRoLT5zZWNyZXRfaWQs CisJICAgICAoaW50KXRoLT50aWNrZXRfYmxvYi0+dmVjLmlvdl9sZW4pOworCXhpLT5oYXZlX2tl eXMgfD0gdGgtPnNlcnZpY2U7CiAKLQlyZXQgPSAwOwogb3V0OgogCWtmcmVlKHRpY2tldF9idWYp Owotb3V0X2RidWY6CiAJa2ZyZWUoZGJ1Zik7CiAJcmV0dXJuIHJldDsKIApAQCAtMjcwLDYgKzI1 NSwzNCBAQCBiYWQ6CiAJZ290byBvdXQ7CiB9CiAKK3N0YXRpYyBpbnQgY2VwaF94X3Byb2NfdGlj a2V0X3JlcGx5KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywKKwkJCQkgICAgc3RydWN0IGNl cGhfY3J5cHRvX2tleSAqc2VjcmV0LAorCQkJCSAgICB2b2lkICpidWYsIHZvaWQgKmVuZCkKK3sK Kwl2b2lkICpwID0gYnVmOworCXU4IHJlcGx5X3N0cnVjdF92OworCXUzMiBudW07CisJaW50IHJl dDsKKworCWNlcGhfZGVjb2RlXzhfc2FmZSgmcCwgZW5kLCByZXBseV9zdHJ1Y3RfdiwgYmFkKTsK KwlpZiAocmVwbHlfc3RydWN0X3YgIT0gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljZXBoX2Rl Y29kZV8zMl9zYWZlKCZwLCBlbmQsIG51bSwgYmFkKTsKKwlkb3V0KCIlZCB0aWNrZXRzXG4iLCBu dW0pOworCisJd2hpbGUgKG51bS0tKSB7CisJCXJldCA9IHByb2Nlc3Nfb25lX3RpY2tldChhYywg c2VjcmV0LCAmcCwgZW5kKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0 dXJuIDA7CisKK2JhZDoKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwogc3RhdGljIGludCBjZXBoX3hf YnVpbGRfYXV0aG9yaXplcihzdHJ1Y3QgY2VwaF9hdXRoX2NsaWVudCAqYWMsCiAJCQkJICAgc3Ry dWN0IGNlcGhfeF90aWNrZXRfaGFuZGxlciAqdGgsCiAJCQkJICAgc3RydWN0IGNlcGhfeF9hdXRo b3JpemVyICphdSkKQEAgLTU2MywxMyArNTc2LDE0IEBAIHN0YXRpYyBpbnQgY2VwaF94X3Zlcmlm eV9hdXRob3JpemVyX3JlcGx5KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywKIAlzdHJ1Y3Qg Y2VwaF94X3RpY2tldF9oYW5kbGVyICp0aDsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3QgY2VwaF94 X2F1dGhvcml6ZV9yZXBseSByZXBseTsKKwl2b2lkICpwcmVwbHkgPSAmcmVwbHk7CiAJdm9pZCAq cCA9IGF1LT5yZXBseV9idWY7CiAJdm9pZCAqZW5kID0gcCArIHNpemVvZihhdS0+cmVwbHlfYnVm KTsKIAogCXRoID0gZ2V0X3RpY2tldF9oYW5kbGVyKGFjLCBhdS0+c2VydmljZSk7CiAJaWYgKElT X0VSUih0aCkpCiAJCXJldHVybiBQVFJfRVJSKHRoKTsKLQlyZXQgPSBjZXBoX3hfZGVjcnlwdCgm dGgtPnNlc3Npb25fa2V5LCAmcCwgZW5kLCAmcmVwbHksIHNpemVvZihyZXBseSkpOworCXJldCA9 IGNlcGhfeF9kZWNyeXB0KCZ0aC0+c2Vzc2lvbl9rZXksICZwLCBlbmQsICZwcmVwbHksIHNpemVv ZihyZXBseSkpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCWlmIChyZXQgIT0gc2l6 ZW9mKHJlcGx5KSkKZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlci5jIGIvbmV0L2NlcGgv bWVzc2VuZ2VyLmMKaW5kZXggMjBiYTJkNS4uN2EyMzlmMCAxMDA2NDQKLS0tIGEvbmV0L2NlcGgv bWVzc2VuZ2VyLmMKKysrIGIvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKQEAgLTI0MjMsNyArMjQyMyw3 IEBAIHN0cnVjdCBjZXBoX21zZyAqY2VwaF9tc2dfbmV3KGludCB0eXBlLCBpbnQgZnJvbnRfbGVu LCBnZnBfdCBmbGFncywKIAltLT5mb290ZXIubWlkZGxlX2NyYyA9IDA7CiAJbS0+Zm9vdGVyLmRh dGFfY3JjID0gMDsKIAltLT5mb290ZXIuZmxhZ3MgPSAwOwotCW0tPmZyb250X21heCA9IGZyb250 X2xlbjsKKwltLT5mcm9udF9hbGxvY19sZW4gPSBmcm9udF9sZW47CiAJbS0+ZnJvbnRfaXNfdm1h bGxvYyA9IGZhbHNlOwogCW0tPm1vcmVfdG9fZm9sbG93ID0gZmFsc2U7CiAJbS0+YWNrX3N0YW1w ID0gMDsKQEAgLTI1OTQsOCArMjU5NCw4IEBAIEVYUE9SVF9TWU1CT0woY2VwaF9tc2dfbGFzdF9w dXQpOwogCiB2b2lkIGNlcGhfbXNnX2R1bXAoc3RydWN0IGNlcGhfbXNnICptc2cpCiB7Ci0JcHJf ZGVidWcoIm1zZ19kdW1wICVwIChmcm9udF9tYXggJWQgbnJfcGFnZXMgJWQpXG4iLCBtc2csCi0J CSBtc2ctPmZyb250X21heCwgbXNnLT5ucl9wYWdlcyk7CisJcHJfZGVidWcoIm1zZ19kdW1wICVw IChmcm9udF9hbGxvY19sZW4gJWQgbnJfcGFnZXMgJWQpXG4iLCBtc2csCisJCSBtc2ctPmZyb250 X2FsbG9jX2xlbiwgbXNnLT5ucl9wYWdlcyk7CiAJcHJpbnRfaGV4X2R1bXAoS0VSTl9ERUJVRywg ImhlYWRlcjogIiwKIAkJICAgICAgIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCiAJCSAgICAg ICAmbXNnLT5oZHIsIHNpemVvZihtc2ctPmhkciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvbmV0L2Nl cGgvbW9uX2NsaWVudC5jIGIvbmV0L2NlcGgvbW9uX2NsaWVudC5jCmluZGV4IDBiNjJkZWEuLjBj MDg1OWIgMTAwNjQ0Ci0tLSBhL25ldC9jZXBoL21vbl9jbGllbnQuYworKysgYi9uZXQvY2VwaC9t b25fY2xpZW50LmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IF9fb3Blbl9zZXNzaW9u KHN0cnVjdCBjZXBoX21vbl9jbGllbnQgKm1vbmMpCiAJCS8qIGluaXRpYXRpYXRlIGF1dGhlbnRp Y2F0aW9uIGhhbmRzaGFrZSAqLwogCQlyZXQgPSBjZXBoX2F1dGhfYnVpbGRfaGVsbG8obW9uYy0+ YXV0aCwKIAkJCQkJICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnQuaW92X2Jhc2UsCi0JCQkJCSAgICBt b25jLT5tX2F1dGgtPmZyb250X21heCk7CisJCQkJCSAgICBtb25jLT5tX2F1dGgtPmZyb250X2Fs bG9jX2xlbik7CiAJCV9fc2VuZF9wcmVwYXJlZF9hdXRoX3JlcXVlc3QobW9uYywgcmV0KTsKIAl9 IGVsc2UgewogCQlkb3V0KCJvcGVuX3Nlc3Npb24gbW9uJWQgYWxyZWFkeSBvcGVuXG4iLCBtb25j LT5jdXJfbW9uKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdm9pZCBfX3NlbmRfc3Vic2Ny aWJlKHN0cnVjdCBjZXBoX21vbl9jbGllbnQgKm1vbmMpCiAJCWludCBudW07CiAKIAkJcCA9IG1z Zy0+ZnJvbnQuaW92X2Jhc2U7Ci0JCWVuZCA9IHAgKyBtc2ctPmZyb250X21heDsKKwkJZW5kID0g cCArIG1zZy0+ZnJvbnRfYWxsb2NfbGVuOwogCiAJCW51bSA9IDEgKyAhIW1vbmMtPndhbnRfbmV4 dF9vc2RtYXAgKyAhIW1vbmMtPndhbnRfbWRzbWFwOwogCQljZXBoX2VuY29kZV8zMigmcCwgbnVt KTsKQEAgLTg2MCw3ICs4NjAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfYXV0aF9yZXBseShzdHJ1 Y3QgY2VwaF9tb25fY2xpZW50ICptb25jLAogCXJldCA9IGNlcGhfaGFuZGxlX2F1dGhfcmVwbHko bW9uYy0+YXV0aCwgbXNnLT5mcm9udC5pb3ZfYmFzZSwKIAkJCQkgICAgIG1zZy0+ZnJvbnQuaW92 X2xlbiwKIAkJCQkgICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnQuaW92X2Jhc2UsCi0JCQkJICAgICBt b25jLT5tX2F1dGgtPmZyb250X21heCk7CisJCQkJICAgICBtb25jLT5tX2F1dGgtPmZyb250X2Fs bG9jX2xlbik7CiAJaWYgKHJldCA8IDApIHsKIAkJbW9uYy0+Y2xpZW50LT5hdXRoX2VyciA9IHJl dDsKIAkJd2FrZV91cF9hbGwoJm1vbmMtPmNsaWVudC0+YXV0aF93cSk7CkBAIC04ODcsNyArODg3 LDcgQEAgc3RhdGljIGludCBfX3ZhbGlkYXRlX2F1dGgoc3RydWN0IGNlcGhfbW9uX2NsaWVudCAq bW9uYykKIAkJcmV0dXJuIDA7CiAKIAlyZXQgPSBjZXBoX2J1aWxkX2F1dGgobW9uYy0+YXV0aCwg bW9uYy0+bV9hdXRoLT5mcm9udC5pb3ZfYmFzZSwKLQkJCSAgICAgIG1vbmMtPm1fYXV0aC0+ZnJv bnRfbWF4KTsKKwkJCSAgICAgIG1vbmMtPm1fYXV0aC0+ZnJvbnRfYWxsb2NfbGVuKTsKIAlpZiAo cmV0IDw9IDApCiAJCXJldHVybiByZXQ7IC8qIGVpdGhlciBhbiBlcnJvciwgb3Igbm8gbmVlZCB0 byBhdXRoZW50aWNhdGUgKi8KIAlfX3NlbmRfcHJlcGFyZWRfYXV0aF9yZXF1ZXN0KG1vbmMsIHJl dCk7CkBAIC05ODcsNyArOTg3LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgY2VwaF9tc2cgKm1vbl9hbGxv Y19tc2coc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uLAogCWlmICghbSkgewogCQlwcl9pbmZv KCJhbGxvY19tc2cgdW5rbm93biB0eXBlICVkXG4iLCB0eXBlKTsKIAkJKnNraXAgPSAxOworCX0g ZWxzZSBpZiAoZnJvbnRfbGVuID4gbS0+ZnJvbnRfYWxsb2NfbGVuKSB7CisJCXByX3dhcm5pbmco Im1vbl9hbGxvY19tc2cgZnJvbnQgJWQgPiBwcmVhbGxvYyAlZCAoJXUjJWxsdSlcbiIsCisJCQkg ICBmcm9udF9sZW4sIG0tPmZyb250X2FsbG9jX2xlbiwKKwkJCSAgICh1bnNpZ25lZCBpbnQpY29u LT5wZWVyX25hbWUudHlwZSwKKwkJCSAgIGxlNjRfdG9fY3B1KGNvbi0+cGVlcl9uYW1lLm51bSkp OworCQljZXBoX21zZ19wdXQobSk7CisJCW0gPSBjZXBoX21zZ19uZXcodHlwZSwgZnJvbnRfbGVu LCBHRlBfTk9GUywgZmFsc2UpOwogCX0KKwogCXJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9u ZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCBkMzYxZGMwLi44ZTc5YTll IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCisrKyBiL25ldC9pcHY0L3JvdXRlLmMKQEAg LTE1MSw2ICsxNTEsOSBAQCBzdGF0aWMgdm9pZAkJIGlwdjRfbGlua19mYWlsdXJlKHN0cnVjdCBz a19idWZmICpza2IpOwogc3RhdGljIHZvaWQJCSBpcF9ydF91cGRhdGVfcG10dShzdHJ1Y3QgZHN0 X2VudHJ5ICpkc3QsIHUzMiBtdHUpOwogc3RhdGljIGludCBydF9nYXJiYWdlX2NvbGxlY3Qoc3Ry dWN0IGRzdF9vcHMgKm9wcyk7CiAKK3N0YXRpYyB2b2lkIF9fcnRfZ2FyYmFnZV9jb2xsZWN0KHN0 cnVjdCB3b3JrX3N0cnVjdCAqdyk7CitzdGF0aWMgREVDTEFSRV9XT1JLKHJ0X2djX3dvcmtlciwg X19ydF9nYXJiYWdlX2NvbGxlY3QpOworCiBzdGF0aWMgdm9pZCBpcHY0X2RzdF9pZmRvd24oc3Ry dWN0IGRzdF9lbnRyeSAqZHN0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgIGludCBo b3cpCiB7CkBAIC05NzksMTIgKzk4MiwxMyBAQCBzdGF0aWMgdm9pZCBydF9lbWVyZ2VuY3lfaGFz aF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldCkKICAgIGFuZCB3aGVuIGxvYWQgaW5jcmVhc2VzIGl0 IHJlZHVjZXMgdG8gbGltaXQgY2FjaGUgc2l6ZS4KICAqLwogCi1zdGF0aWMgaW50IHJ0X2dhcmJh Z2VfY29sbGVjdChzdHJ1Y3QgZHN0X29wcyAqb3BzKQorc3RhdGljIHZvaWQgX19kb19ydF9nYXJi YWdlX2NvbGxlY3QoaW50IGVsYXN0aWNpdHksIGludCBtaW5faW50ZXJ2YWwpCiB7CiAJc3RhdGlj IHVuc2lnbmVkIGxvbmcgZXhwaXJlID0gUlRfR0NfVElNRU9VVDsKIAlzdGF0aWMgdW5zaWduZWQg bG9uZyBsYXN0X2djOwogCXN0YXRpYyBpbnQgcm92ZXI7CiAJc3RhdGljIGludCBlcXVpbGlicml1 bTsKKwlzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHJ0X2djX2xvY2spOwogCXN0cnVjdCBydGFibGUg KnJ0aDsKIAlzdHJ1Y3QgcnRhYmxlIF9fcmN1ICoqcnRocDsKIAl1bnNpZ25lZCBsb25nIG5vdyA9 IGppZmZpZXM7CkBAIC05OTYsOSArMTAwMCwxMSBAQCBzdGF0aWMgaW50IHJ0X2dhcmJhZ2VfY29s bGVjdChzdHJ1Y3QgZHN0X29wcyAqb3BzKQogCSAqIGRvIG5vdCBtYWtlIGl0IHRvbyBmcmVxdWVu dGx5LgogCSAqLwogCisJc3Bpbl9sb2NrX2JoKCZydF9nY19sb2NrKTsKKwogCVJUX0NBQ0hFX1NU QVRfSU5DKGdjX3RvdGFsKTsKIAotCWlmIChub3cgLSBsYXN0X2djIDwgaXBfcnRfZ2NfbWluX2lu dGVydmFsICYmCisJaWYgKG5vdyAtIGxhc3RfZ2MgPCBtaW5faW50ZXJ2YWwgJiYKIAkgICAgZW50 cmllcyA8IGlwX3J0X21heF9zaXplKSB7CiAJCVJUX0NBQ0hFX1NUQVRfSU5DKGdjX2lnbm9yZWQp OwogCQlnb3RvIG91dDsKQEAgLTEwMDYsNyArMTAxMiw3IEBAIHN0YXRpYyBpbnQgcnRfZ2FyYmFn ZV9jb2xsZWN0KHN0cnVjdCBkc3Rfb3BzICpvcHMpCiAKIAllbnRyaWVzID0gZHN0X2VudHJpZXNf Z2V0X3Nsb3coJmlwdjRfZHN0X29wcyk7CiAJLyogQ2FsY3VsYXRlIG51bWJlciBvZiBlbnRyaWVz LCB3aGljaCB3ZSB3YW50IHRvIGV4cGlyZSBub3cuICovCi0JZ29hbCA9IGVudHJpZXMgLSAoaXBf cnRfZ2NfZWxhc3RpY2l0eSA8PCBydF9oYXNoX2xvZyk7CisJZ29hbCA9IGVudHJpZXMgLSAoZWxh c3RpY2l0eSA8PCBydF9oYXNoX2xvZyk7CiAJaWYgKGdvYWwgPD0gMCkgewogCQlpZiAoZXF1aWxp YnJpdW0gPCBpcHY0X2RzdF9vcHMuZ2NfdGhyZXNoKQogCQkJZXF1aWxpYnJpdW0gPSBpcHY0X2Rz dF9vcHMuZ2NfdGhyZXNoOwpAQCAtMTAyMyw3ICsxMDI5LDcgQEAgc3RhdGljIGludCBydF9nYXJi YWdlX2NvbGxlY3Qoc3RydWN0IGRzdF9vcHMgKm9wcykKIAkJZXF1aWxpYnJpdW0gPSBlbnRyaWVz IC0gZ29hbDsKIAl9CiAKLQlpZiAobm93IC0gbGFzdF9nYyA+PSBpcF9ydF9nY19taW5faW50ZXJ2 YWwpCisJaWYgKG5vdyAtIGxhc3RfZ2MgPj0gbWluX2ludGVydmFsKQogCQlsYXN0X2djID0gbm93 OwogCiAJaWYgKGdvYWwgPD0gMCkgewpAQCAtMTA4OCwxNSArMTA5NCwzNCBAQCBzdGF0aWMgaW50 IHJ0X2dhcmJhZ2VfY29sbGVjdChzdHJ1Y3QgZHN0X29wcyAqb3BzKQogCWlmIChuZXRfcmF0ZWxp bWl0KCkpCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgImRzdCBjYWNoZSBvdmVyZmxvd1xuIik7CiAJ UlRfQ0FDSEVfU1RBVF9JTkMoZ2NfZHN0X292ZXJmbG93KTsKLQlyZXR1cm4gMTsKKwlnb3RvIG91 dDsKIAogd29ya19kb25lOgotCWV4cGlyZSArPSBpcF9ydF9nY19taW5faW50ZXJ2YWw7CisJZXhw aXJlICs9IG1pbl9pbnRlcnZhbDsKIAlpZiAoZXhwaXJlID4gaXBfcnRfZ2NfdGltZW91dCB8fAog CSAgICBkc3RfZW50cmllc19nZXRfZmFzdCgmaXB2NF9kc3Rfb3BzKSA8IGlwdjRfZHN0X29wcy5n Y190aHJlc2ggfHwKIAkgICAgZHN0X2VudHJpZXNfZ2V0X3Nsb3coJmlwdjRfZHN0X29wcykgPCBp cHY0X2RzdF9vcHMuZ2NfdGhyZXNoKQogCQlleHBpcmUgPSBpcF9ydF9nY190aW1lb3V0Owotb3V0 OglyZXR1cm4gMDsKK291dDoKKwlzcGluX3VubG9ja19iaCgmcnRfZ2NfbG9jayk7Cit9CisKK3N0 YXRpYyB2b2lkIF9fcnRfZ2FyYmFnZV9jb2xsZWN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKK3sK KwlfX2RvX3J0X2dhcmJhZ2VfY29sbGVjdChpcF9ydF9nY19lbGFzdGljaXR5LCBpcF9ydF9nY19t aW5faW50ZXJ2YWwpOworfQorCitzdGF0aWMgaW50IHJ0X2dhcmJhZ2VfY29sbGVjdChzdHJ1Y3Qg ZHN0X29wcyAqb3BzKQoreworCWlmICghd29ya19wZW5kaW5nKCZydF9nY193b3JrZXIpKQorCQlz Y2hlZHVsZV93b3JrKCZydF9nY193b3JrZXIpOworCisJaWYgKGRzdF9lbnRyaWVzX2dldF9mYXN0 KCZpcHY0X2RzdF9vcHMpID49IGlwX3J0X21heF9zaXplIHx8CisJICAgIGRzdF9lbnRyaWVzX2dl dF9zbG93KCZpcHY0X2RzdF9vcHMpID49IGlwX3J0X21heF9zaXplKSB7CisJCVJUX0NBQ0hFX1NU QVRfSU5DKGdjX2RzdF9vdmVyZmxvdyk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKIH0K IAogLyoKQEAgLTExNTMsNyArMTE3OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICpydF9pbnRl cm5faGFzaCh1bnNpZ25lZCBoYXNoLCBzdHJ1Y3QgcnRhYmxlICpydCwKIAl1bnNpZ25lZCBsb25n CW5vdzsKIAl1MzIgCQltaW5fc2NvcmU7CiAJaW50CQljaGFpbl9sZW5ndGg7Ci0JaW50IGF0dGVt cHRzID0gIWluX3NvZnRpcnEoKTsKKwlpbnQgYXR0ZW1wdHMgPSAxOwogCiByZXN0YXJ0OgogCWNo YWluX2xlbmd0aCA9IDA7CkBAIC0xMjkwLDE0ICsxMzE1LDE1IEBAIHJlc3RhcnQ6CiAJCQkgICBj YW4gYmUgcmVsZWFzZWQuIFRyeSB0byBzaHJpbmsgcm91dGUgY2FjaGUsCiAJCQkgICBpdCBpcyBt b3N0IGxpa2VseSBpdCBob2xkcyBzb21lIG5laWdoYm91ciByZWNvcmRzLgogCQkJICovCi0JCQlp ZiAoYXR0ZW1wdHMtLSA+IDApIHsKLQkJCQlpbnQgc2F2ZWRfZWxhc3RpY2l0eSA9IGlwX3J0X2dj X2VsYXN0aWNpdHk7Ci0JCQkJaW50IHNhdmVkX2ludCA9IGlwX3J0X2djX21pbl9pbnRlcnZhbDsK LQkJCQlpcF9ydF9nY19lbGFzdGljaXR5CT0gMTsKLQkJCQlpcF9ydF9nY19taW5faW50ZXJ2YWwJ PSAwOwotCQkJCXJ0X2dhcmJhZ2VfY29sbGVjdCgmaXB2NF9kc3Rfb3BzKTsKLQkJCQlpcF9ydF9n Y19taW5faW50ZXJ2YWwJPSBzYXZlZF9pbnQ7Ci0JCQkJaXBfcnRfZ2NfZWxhc3RpY2l0eQk9IHNh dmVkX2VsYXN0aWNpdHk7CisJCQlpZiAoIWluX3NvZnRpcnEoKSAmJiBhdHRlbXB0cy0tID4gMCkg eworCQkJCXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobG9jayk7CisKKwkJCQlpZiAoc3Bpbl90cnls b2NrKCZsb2NrKSkgeworCQkJCQlfX2RvX3J0X2dhcmJhZ2VfY29sbGVjdCgxLCAwKTsKKwkJCQkJ c3Bpbl91bmxvY2soJmxvY2spOworCQkJCX0gZWxzZSB7CisJCQkJCXNwaW5fdW5sb2NrX3dhaXQo JmxvY2spOworCQkJCX0KIAkJCQlnb3RvIHJlc3RhcnQ7CiAJCQl9CiAKZGlmZiAtLWdpdCBhL25l dC9pcHY2L2FkZHJjb25mLmMgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCmluZGV4IGI5ZWRmZjAuLjNh ZmRkNzggMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmMKKysrIGIvbmV0L2lwdjYvYWRk cmNvbmYuYwpAQCAtMjQ0Myw4ICsyNDQzLDE4IEBAIHN0YXRpYyB2b2lkIGluaXRfbG9vcGJhY2so c3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWlmIChzcF9pZmEtPmZsYWdzICYgKElGQV9GX0RB REZBSUxFRCB8IElGQV9GX1RFTlRBVElWRSkpCiAJCQkJY29udGludWU7CiAKLQkJCWlmIChzcF9p ZmEtPnJ0KQotCQkJCWNvbnRpbnVlOworCQkJaWYgKHNwX2lmYS0+cnQpIHsKKwkJCQkvKiBUaGlz IGRzdCBoYXMgYmVlbiBhZGRlZCB0byBnYXJiYWdlIGxpc3Qgd2hlbgorCQkJCSAqIGxvIGRldmlj ZSBkb3duLCByZWxlYXNlIHRoaXMgb2Jzb2xldGUgZHN0IGFuZAorCQkJCSAqIHJlYWxsb2NhdGUg YSBuZXcgcm91dGVyIGZvciBpZmEuCisJCQkJICovCisJCQkJaWYgKHNwX2lmYS0+cnQtPmRzdC5v YnNvbGV0ZSA+IDApIHsKKwkJCQkJZHN0X3JlbGVhc2UoJnNwX2lmYS0+cnQtPmRzdCk7CisJCQkJ CXNwX2lmYS0+cnQgPSBOVUxMOworCQkJCX0gZWxzZSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0K KwkJCX0KIAogCQkJc3BfcnQgPSBhZGRyY29uZl9kc3RfYWxsb2MoaWRldiwgJnNwX2lmYS0+YWRk ciwgMCk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3VkcC5jIGIvbmV0L2lwdjYvdWRwLmMKaW5k ZXggZjhiZWMxZS4uZDEzMWE5NSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdWRwLmMKKysrIGIvbmV0 L2lwdjYvdWRwLmMKQEAgLTEzNjIsNyArMTM2Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAq dWRwNl91Zm9fZnJhZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGZlYXR1cmVzKQogCWZw dHIgPSAoc3RydWN0IGZyYWdfaGRyICopKHNrYl9uZXR3b3JrX2hlYWRlcihza2IpICsgdW5mcmFn X2lwNmhsZW4pOwogCWZwdHItPm5leHRoZHIgPSBuZXh0aGRyOwogCWZwdHItPnJlc2VydmVkID0g MDsKLQlpcHY2X3NlbGVjdF9pZGVudChmcHRyLCAoc3RydWN0IHJ0Nl9pbmZvICopc2tiX2RzdChz a2IpKTsKKwlmcHRyLT5pZGVudGlmaWNhdGlvbiA9IHNrYl9zaGluZm8oc2tiKS0+aXA2X2ZyYWdf aWQ7CiAKIAkvKiBGcmFnbWVudCB0aGUgc2tiLiBpcHY2IGhlYWRlciBhbmQgdGhlIHJlbWFpbmlu ZyBmaWVsZHMgb2YgdGhlCiAJICogZnJhZ21lbnQgaGVhZGVyIGFyZSB1cGRhdGVkIGluIGlwdjZf Z3NvX3NlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4u YyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKaW5kZXggMjlmYTViYS4uNjQyMjg0 NSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYworKysgYi9uZXQv bmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC03NzcsNyArNzc3LDYgQEAgc3RhdGljIHZv aWQgaXBfdnNfY29ubl9leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKQogCQkJaXBfdnNfY29udHJv bF9kZWwoY3ApOwogCiAJCWlmIChjcC0+ZmxhZ3MgJiBJUF9WU19DT05OX0ZfTkZDVCkgewotCQkJ aXBfdnNfY29ubl9kcm9wX2Nvbm50cmFjayhjcCk7CiAJCQkvKiBEbyBub3QgYWNjZXNzIGNvbm50 cmFja3MgZHVyaW5nIHN1YnN5cyBjbGVhbnVwCiAJCQkgKiBiZWNhdXNlIG5mX2Nvbm50cmFja19m aW5kX2dldCBjYW4gbm90IGJlIHVzZWQgYWZ0ZXIKIAkJCSAqIGNvbm50cmFjayBjbGVhbnVwIGZv ciB0aGUgbmV0LgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9h c3NvY2lvbGEuYwppbmRleCBkYTU0ZDI5Li41YjJkOGU2IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9h c3NvY2lvbGEuYworKysgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtMTYzOCw2ICsxNjM4LDgg QEAgc3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soCiAJICog YWNrIGNodW5rIHdob3NlIHNlcmlhbCBudW1iZXIgbWF0Y2hlcyB0aGF0IG9mIHRoZSByZXF1ZXN0 LgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnkoYWNrLCAmYXNvYy0+YXNjb25mX2Fja19saXN0 LCB0cmFuc21pdHRlZF9saXN0KSB7CisJCWlmIChzY3RwX2NodW5rX3BlbmRpbmcoYWNrKSkKKwkJ CWNvbnRpbnVlOwogCQlpZiAoYWNrLT5zdWJoLmFkZGlwX2hkci0+c2VyaWFsID09IHNlcmlhbCkg ewogCQkJc2N0cF9jaHVua19ob2xkKGFjayk7CiAJCQlyZXR1cm4gYWNrOwpkaWZmIC0tZ2l0IGEv bmV0L3NjdHAvaW5xdWV1ZS5jIGIvbmV0L3NjdHAvaW5xdWV1ZS5jCmluZGV4IDM5NzI5NmYuLjMy NDIxYWUgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2lucXVldWUuYworKysgYi9uZXQvc2N0cC9pbnF1 ZXVlLmMKQEAgLTE1MiwxOCArMTUyLDkgQEAgc3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfaW5xX3Bv cChzdHJ1Y3Qgc2N0cF9pbnEgKnF1ZXVlKQogCQl9IGVsc2UgewogCQkJLyogTm90aGluZyB0byBk by4gTmV4dCBjaHVuayBpbiB0aGUgcGFja2V0LCBwbGVhc2UuICovCiAJCQljaCA9IChzY3RwX2No dW5raGRyX3QgKikgY2h1bmstPmNodW5rX2VuZDsKLQogCQkJLyogRm9yY2UgY2h1bmstPnNrYi0+ ZGF0YSB0byBjaHVuay0+Y2h1bmtfZW5kLiAgKi8KLQkJCXNrYl9wdWxsKGNodW5rLT5za2IsCi0J CQkJIGNodW5rLT5jaHVua19lbmQgLSBjaHVuay0+c2tiLT5kYXRhKTsKLQotCQkJLyogVmVyaWZ5 IHRoYXQgd2UgaGF2ZSBhdCBsZWFzdCBjaHVuayBoZWFkZXJzCi0JCQkgKiB3b3J0aCBvZiBidWZm ZXIgbGVmdC4KLQkJCSAqLwotCQkJaWYgKHNrYl9oZWFkbGVuKGNodW5rLT5za2IpIDwgc2l6ZW9m KHNjdHBfY2h1bmtoZHJfdCkpIHsKLQkJCQlzY3RwX2NodW5rX2ZyZWUoY2h1bmspOwotCQkJCWNo dW5rID0gcXVldWUtPmluX3Byb2dyZXNzID0gTlVMTDsKLQkJCX0KKwkJCXNrYl9wdWxsKGNodW5r LT5za2IsIGNodW5rLT5jaHVua19lbmQgLSBjaHVuay0+c2tiLT5kYXRhKTsKKwkJCS8qIFdlIGFy ZSBndWFyYW50ZWVkIHRvIHB1bGwgYSBTQ1RQIGhlYWRlci4gKi8KIAkJfQogCX0KIApAQCAtMTk5 LDI0ICsxOTAsMTQgQEAgc3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfaW5xX3BvcChzdHJ1Y3Qgc2N0 cF9pbnEgKnF1ZXVlKQogCXNrYl9wdWxsKGNodW5rLT5za2IsIHNpemVvZihzY3RwX2NodW5raGRy X3QpKTsKIAljaHVuay0+c3ViaC52ID0gTlVMTDsgLyogU3ViaGVhZGVyIGlzIG5vIGxvbmdlciB2 YWxpZC4gICovCiAKLQlpZiAoY2h1bmstPmNodW5rX2VuZCA8IHNrYl90YWlsX3BvaW50ZXIoY2h1 bmstPnNrYikpIHsKKwlpZiAoY2h1bmstPmNodW5rX2VuZCArIHNpemVvZihzY3RwX2NodW5raGRy X3QpIDwKKwkgICAgc2tiX3RhaWxfcG9pbnRlcihjaHVuay0+c2tiKSkgewogCQkvKiBUaGlzIGlz IG5vdCBhIHNpbmdsZXRvbiAqLwogCQljaHVuay0+c2luZ2xldG9uID0gMDsKIAl9IGVsc2UgaWYg KGNodW5rLT5jaHVua19lbmQgPiBza2JfdGFpbF9wb2ludGVyKGNodW5rLT5za2IpKSB7Ci0JCS8q IFJGQyAyOTYwLCBTZWN0aW9uIDYuMTAgIEJ1bmRsaW5nCi0JCSAqCi0JCSAqIFBhcnRpYWwgY2h1 bmtzIE1VU1QgTk9UIGJlIHBsYWNlZCBpbiBhbiBTQ1RQIHBhY2tldC4KLQkJICogSWYgdGhlIHJl Y2VpdmVyIGRldGVjdHMgYSBwYXJ0aWFsIGNodW5rLCBpdCBNVVNUIGRyb3AKLQkJICogdGhlIGNo dW5rLgotCQkgKgotCQkgKiBTaW5jZSB0aGUgZW5kIG9mIHRoZSBjaHVuayBpcyBwYXN0IHRoZSBl bmQgb2Ygb3VyIGJ1ZmZlcgotCQkgKiAod2hpY2ggY29udGFpbnMgdGhlIHdob2xlIHBhY2tldCwg d2UgY2FuIGZyZWVseSBkaXNjYXJkCi0JCSAqIHRoZSB3aG9sZSBwYWNrZXQuCi0JCSAqLwotCQlz Y3RwX2NodW5rX2ZyZWUoY2h1bmspOwotCQljaHVuayA9IHF1ZXVlLT5pbl9wcm9ncmVzcyA9IE5V TEw7Ci0KLQkJcmV0dXJuIE5VTEw7CisJCS8qIERpc2NhcmQgaW5zaWRlIHN0YXRlIG1hY2hpbmUu ICovCisJCWNodW5rLT5wZGlzY2FyZCA9IDE7CisJCWNodW5rLT5jaHVua19lbmQgPSBza2JfdGFp bF9wb2ludGVyKGNodW5rLT5za2IpOwogCX0gZWxzZSB7CiAJCS8qIFdlIGFyZSBhdCB0aGUgZW5k IG9mIHRoZSBwYWNrZXQsIHNvIG1hcmsgdGhlIGNodW5rCiAJCSAqIGluIGNhc2Ugd2UgbmVlZCB0 byBzZW5kIGEgU0FDSy4KZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25l dC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCBjOTVhM2YyLi5kOGQ0NzA0IDEwMDY0NAotLS0g YS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5j CkBAIC0zMDY4LDUwICszMDY4LDYzIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9wcm9jZXNzX2FzY29u Zl9wYXJhbShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAlyZXR1cm4gU0NUUF9FUlJP Ul9OT19FUlJPUjsKIH0KIAotLyogVmVyaWZ5IHRoZSBBU0NPTkYgcGFja2V0IGJlZm9yZSB3ZSBw cm9jZXNzIGl0LiAgKi8KLWludCBzY3RwX3ZlcmlmeV9hc2NvbmYoY29uc3Qgc3RydWN0IHNjdHBf YXNzb2NpYXRpb24gKmFzb2MsCi0JCSAgICAgICBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcGFyYW1f aGRyLCB2b2lkICpjaHVua19lbmQsCi0JCSAgICAgICBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKmVy cnApIHsKLQlzY3RwX2FkZGlwX3BhcmFtX3QgKmFzY29uZl9wYXJhbTsKKy8qIFZlcmlmeSB0aGUg QVNDT05GIHBhY2tldCBiZWZvcmUgd2UgcHJvY2VzcyBpdC4gKi8KK2Jvb2wgc2N0cF92ZXJpZnlf YXNjb25mKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAorCQkJc3RydWN0IHNj dHBfY2h1bmsgKmNodW5rLCBib29sIGFkZHJfcGFyYW1fbmVlZGVkLAorCQkJc3RydWN0IHNjdHBf cGFyYW1oZHIgKiplcnJwKQoreworCXNjdHBfYWRkaXBfY2h1bmtfdCAqYWRkaXAgPSAoc2N0cF9h ZGRpcF9jaHVua190ICopIGNodW5rLT5jaHVua19oZHI7CiAJdW5pb24gc2N0cF9wYXJhbXMgcGFy YW07Ci0JaW50IGxlbmd0aCwgcGxlbjsKLQotCXBhcmFtLnYgPSAoc2N0cF9wYXJhbWhkcl90ICop IHBhcmFtX2hkcjsKLQl3aGlsZSAocGFyYW0udiA8PSBjaHVua19lbmQgLSBzaXplb2Yoc2N0cF9w YXJhbWhkcl90KSkgewotCQlsZW5ndGggPSBudG9ocyhwYXJhbS5wLT5sZW5ndGgpOwotCQkqZXJy cCA9IHBhcmFtLnA7CisJYm9vbCBhZGRyX3BhcmFtX3NlZW4gPSBmYWxzZTsKIAotCQlpZiAocGFy YW0udiA+IGNodW5rX2VuZCAtIGxlbmd0aCB8fAotCQkgICAgbGVuZ3RoIDwgc2l6ZW9mKHNjdHBf cGFyYW1oZHJfdCkpCi0JCQlyZXR1cm4gMDsKKwlzY3RwX3dhbGtfcGFyYW1zKHBhcmFtLCBhZGRp cCwgYWRkaXBfaGRyLnBhcmFtcykgeworCQlzaXplX3QgbGVuZ3RoID0gbnRvaHMocGFyYW0ucC0+ bGVuZ3RoKTsKIAorCQkqZXJycCA9IHBhcmFtLnA7CiAJCXN3aXRjaCAocGFyYW0ucC0+dHlwZSkg eworCQljYXNlIFNDVFBfUEFSQU1fRVJSX0NBVVNFOgorCQkJYnJlYWs7CisJCWNhc2UgU0NUUF9Q QVJBTV9JUFY0X0FERFJFU1M6CisJCQlpZiAobGVuZ3RoICE9IHNpemVvZihzY3RwX2lwdjRhZGRy X3BhcmFtX3QpKQorCQkJCXJldHVybiBmYWxzZTsKKwkJCWFkZHJfcGFyYW1fc2VlbiA9IHRydWU7 CisJCQlicmVhazsKKwkJY2FzZSBTQ1RQX1BBUkFNX0lQVjZfQUREUkVTUzoKKwkJCWlmIChsZW5n dGggIT0gc2l6ZW9mKHNjdHBfaXB2NmFkZHJfcGFyYW1fdCkpCisJCQkJcmV0dXJuIGZhbHNlOwor CQkJYWRkcl9wYXJhbV9zZWVuID0gdHJ1ZTsKKwkJCWJyZWFrOwogCQljYXNlIFNDVFBfUEFSQU1f QUREX0lQOgogCQljYXNlIFNDVFBfUEFSQU1fREVMX0lQOgogCQljYXNlIFNDVFBfUEFSQU1fU0VU X1BSSU1BUlk6Ci0JCQlhc2NvbmZfcGFyYW0gPSAoc2N0cF9hZGRpcF9wYXJhbV90ICopcGFyYW0u djsKLQkJCXBsZW4gPSBudG9ocyhhc2NvbmZfcGFyYW0tPnBhcmFtX2hkci5sZW5ndGgpOwotCQkJ aWYgKHBsZW4gPCBzaXplb2Yoc2N0cF9hZGRpcF9wYXJhbV90KSArCi0JCQkgICAgc2l6ZW9mKHNj dHBfcGFyYW1oZHJfdCkpCi0JCQkJcmV0dXJuIDA7CisJCQkvKiBJbiBBU0NPTkYgY2h1bmtzLCB0 aGVzZSBuZWVkIHRvIGJlIGZpcnN0LiAqLworCQkJaWYgKGFkZHJfcGFyYW1fbmVlZGVkICYmICFh ZGRyX3BhcmFtX3NlZW4pCisJCQkJcmV0dXJuIGZhbHNlOworCQkJbGVuZ3RoID0gbnRvaHMocGFy YW0uYWRkaXAtPnBhcmFtX2hkci5sZW5ndGgpOworCQkJaWYgKGxlbmd0aCA8IHNpemVvZihzY3Rw X2FkZGlwX3BhcmFtX3QpICsKKwkJCQkgICAgIHNpemVvZihzY3RwX3BhcmFtaGRyX3QpKQorCQkJ CXJldHVybiBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNlIFNDVFBfUEFSQU1fU1VDQ0VTU19SRVBP UlQ6CiAJCWNhc2UgU0NUUF9QQVJBTV9BREFQVEFUSU9OX0xBWUVSX0lORDoKIAkJCWlmIChsZW5n dGggIT0gc2l6ZW9mKHNjdHBfYWRkaXBfcGFyYW1fdCkpCi0JCQkJcmV0dXJuIDA7Ci0KKwkJCQly ZXR1cm4gZmFsc2U7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWJyZWFrOworCQkJLyogVGhp cyBpcyB1bmtvd24gdG8gdXMsIHJlamVjdCEgKi8KKwkJCXJldHVybiBmYWxzZTsKIAkJfQotCi0J CXBhcmFtLnYgKz0gV09SRF9ST1VORChsZW5ndGgpOwogCX0KIAotCWlmIChwYXJhbS52ICE9IGNo dW5rX2VuZCkKLQkJcmV0dXJuIDA7CisJLyogUmVtYWluaW5nIHNhbml0eSBjaGVja3MuICovCisJ aWYgKGFkZHJfcGFyYW1fbmVlZGVkICYmICFhZGRyX3BhcmFtX3NlZW4pCisJCXJldHVybiBmYWxz ZTsKKwlpZiAoIWFkZHJfcGFyYW1fbmVlZGVkICYmIGFkZHJfcGFyYW1fc2VlbikKKwkJcmV0dXJu IGZhbHNlOworCWlmIChwYXJhbS52ICE9IGNodW5rLT5jaHVua19lbmQpCisJCXJldHVybiBmYWxz ZTsKIAotCXJldHVybiAxOworCXJldHVybiB0cnVlOwogfQogCiAvKiBQcm9jZXNzIGFuIGluY29t aW5nIEFTQ09ORiBjaHVuayB3aXRoIHRoZSBuZXh0IGV4cGVjdGVkIHNlcmlhbCBuby4gYW5kCkBA IC0zMTIwLDE2ICszMTMzLDE3IEBAIGludCBzY3RwX3ZlcmlmeV9hc2NvbmYoY29uc3Qgc3RydWN0 IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiBzdHJ1Y3Qgc2N0cF9jaHVuayAqc2N0cF9wcm9jZXNz X2FzY29uZihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkgICAgICAgc3RydWN0 IHNjdHBfY2h1bmsgKmFzY29uZikKIHsKKwlzY3RwX2FkZGlwX2NodW5rX3QgKmFkZGlwID0gKHNj dHBfYWRkaXBfY2h1bmtfdCAqKSBhc2NvbmYtPmNodW5rX2hkcjsKKwlib29sIGFsbF9wYXJhbV9w YXNzID0gdHJ1ZTsKKwl1bmlvbiBzY3RwX3BhcmFtcyBwYXJhbTsKIAlzY3RwX2FkZGlwaGRyX3QJ CSpoZHI7CiAJdW5pb24gc2N0cF9hZGRyX3BhcmFtCSphZGRyX3BhcmFtOwogCXNjdHBfYWRkaXBf cGFyYW1fdAkqYXNjb25mX3BhcmFtOwogCXN0cnVjdCBzY3RwX2NodW5rCSphc2NvbmZfYWNrOwot CiAJX19iZTE2CWVycl9jb2RlOwogCWludAlsZW5ndGggPSAwOwogCWludAljaHVua19sZW47CiAJ X191MzIJc2VyaWFsOwotCWludAlhbGxfcGFyYW1fcGFzcyA9IDE7CiAKIAljaHVua19sZW4gPSBu dG9ocyhhc2NvbmYtPmNodW5rX2hkci0+bGVuZ3RoKSAtIHNpemVvZihzY3RwX2NodW5raGRyX3Qp OwogCWhkciA9IChzY3RwX2FkZGlwaGRyX3QgKilhc2NvbmYtPnNrYi0+ZGF0YTsKQEAgLTMxNTcs OSArMzE3MSwxNCBAQCBzdHJ1Y3Qgc2N0cF9jaHVuayAqc2N0cF9wcm9jZXNzX2FzY29uZihzdHJ1 Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJZ290byBkb25lOwogCiAJLyogUHJvY2VzcyB0 aGUgVExWcyBjb250YWluZWQgd2l0aGluIHRoZSBBU0NPTkYgY2h1bmsuICovCi0Jd2hpbGUgKGNo dW5rX2xlbiA+IDApIHsKKwlzY3RwX3dhbGtfcGFyYW1zKHBhcmFtLCBhZGRpcCwgYWRkaXBfaGRy LnBhcmFtcykgeworCQkvKiBTa2lwIHByZWNlZWRpbmcgYWRkcmVzcyBwYXJhbWV0ZXJzLiAqLwor CQlpZiAocGFyYW0ucC0+dHlwZSA9PSBTQ1RQX1BBUkFNX0lQVjRfQUREUkVTUyB8fAorCQkgICAg cGFyYW0ucC0+dHlwZSA9PSBTQ1RQX1BBUkFNX0lQVjZfQUREUkVTUykKKwkJCWNvbnRpbnVlOwor CiAJCWVycl9jb2RlID0gc2N0cF9wcm9jZXNzX2FzY29uZl9wYXJhbShhc29jLCBhc2NvbmYsCi0J CQkJCQkgICAgIGFzY29uZl9wYXJhbSk7CisJCQkJCQkgICAgIHBhcmFtLmFkZGlwKTsKIAkJLyog QURESVAgNC4xIEE3KQogCQkgKiBJZiBhbiBlcnJvciByZXNwb25zZSBpcyByZWNlaXZlZCBmb3Ig YSBUTFYgcGFyYW1ldGVyLAogCQkgKiBhbGwgVExWcyB3aXRoIG5vIHJlc3BvbnNlIGJlZm9yZSB0 aGUgZmFpbGVkIFRMViBhcmUKQEAgLTMxNjcsMjggKzMxODYsMjAgQEAgc3RydWN0IHNjdHBfY2h1 bmsgKnNjdHBfcHJvY2Vzc19hc2NvbmYoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJ CSAqIHRoZSBmYWlsZWQgcmVzcG9uc2UgYXJlIGNvbnNpZGVyZWQgdW5zdWNjZXNzZnVsIHVubGVz cwogCQkgKiBhIHNwZWNpZmljIHN1Y2Nlc3MgaW5kaWNhdGlvbiBpcyBwcmVzZW50IGZvciB0aGUg cGFyYW1ldGVyLgogCQkgKi8KLQkJaWYgKFNDVFBfRVJST1JfTk9fRVJST1IgIT0gZXJyX2NvZGUp Ci0JCQlhbGxfcGFyYW1fcGFzcyA9IDA7Ci0KKwkJaWYgKGVycl9jb2RlICE9IFNDVFBfRVJST1Jf Tk9fRVJST1IpCisJCQlhbGxfcGFyYW1fcGFzcyA9IGZhbHNlOwogCQlpZiAoIWFsbF9wYXJhbV9w YXNzKQotCQkJc2N0cF9hZGRfYXNjb25mX3Jlc3BvbnNlKGFzY29uZl9hY2ssCi0JCQkJCQkgYXNj b25mX3BhcmFtLT5jcnJfaWQsIGVycl9jb2RlLAotCQkJCQkJIGFzY29uZl9wYXJhbSk7CisJCQlz Y3RwX2FkZF9hc2NvbmZfcmVzcG9uc2UoYXNjb25mX2FjaywgcGFyYW0uYWRkaXAtPmNycl9pZCwK KwkJCQkJCSBlcnJfY29kZSwgcGFyYW0uYWRkaXApOwogCiAJCS8qIEFERElQIDQuMyBEMTEpIFdo ZW4gYW4gZW5kcG9pbnQgcmVjZWl2aW5nIGFuIEFTQ09ORiB0byBhZGQKIAkJICogYW4gSVAgYWRk cmVzcyBzZW5kcyBhbiAnT3V0IG9mIFJlc291cmNlJyBpbiBpdHMgcmVzcG9uc2UsIGl0CiAJCSAq IE1VU1QgYWxzbyBmYWlsIGFueSBzdWJzZXF1ZW50IGFkZCBvciBkZWxldGUgcmVxdWVzdHMgYnVu ZGxlZAogCQkgKiBpbiB0aGUgQVNDT05GLgogCQkgKi8KLQkJaWYgKFNDVFBfRVJST1JfUlNSQ19M T1cgPT0gZXJyX2NvZGUpCisJCWlmIChlcnJfY29kZSA9PSBTQ1RQX0VSUk9SX1JTUkNfTE9XKQog CQkJZ290byBkb25lOwotCi0JCS8qIE1vdmUgdG8gdGhlIG5leHQgQVNDT05GIHBhcmFtLiAqLwot CQlsZW5ndGggPSBudG9ocyhhc2NvbmZfcGFyYW0tPnBhcmFtX2hkci5sZW5ndGgpOwotCQlhc2Nv bmZfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9wYXJhbSArIGxlbmd0aDsKLQkJY2h1bmtfbGVuIC09 IGxlbmd0aDsKIAl9Ci0KIGRvbmU6CiAJYXNvYy0+cGVlci5hZGRpcF9zZXJpYWwrKzsKIApkaWZm IC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMu YwppbmRleCA1YWMzM2I2Li5kMDJkZDNjIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1 bnMuYworKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwpAQCAtMTYzLDYgKzE2Myw5IEBAIHNj dHBfY2h1bmtfbGVuZ3RoX3ZhbGlkKHN0cnVjdCBzY3RwX2NodW5rICpjaHVuaywKIHsKIAlfX3Ux NiBjaHVua19sZW5ndGggPSBudG9ocyhjaHVuay0+Y2h1bmtfaGRyLT5sZW5ndGgpOwogCisJLyog UHJldmlvdXNseSBhbHJlYWR5IG1hcmtlZD8gKi8KKwlpZiAodW5saWtlbHkoY2h1bmstPnBkaXNj YXJkKSkKKwkJcmV0dXJuIDA7CiAJaWYgKHVubGlrZWx5KGNodW5rX2xlbmd0aCA8IHJlcXVpcmVk X2xlbmd0aCkpCiAJCXJldHVybiAwOwogCkBAIC0zNTE2LDkgKzM1MTksNyBAQCBzY3RwX2Rpc3Bv c2l0aW9uX3Qgc2N0cF9zZl9kb19hc2NvbmYoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVw LAogCXN0cnVjdCBzY3RwX2NodW5rCSphc2NvbmZfYWNrID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF9w YXJhbWhkcgkqZXJyX3BhcmFtID0gTlVMTDsKIAlzY3RwX2FkZGlwaGRyX3QJCSpoZHI7Ci0JdW5p b24gc2N0cF9hZGRyX3BhcmFtCSphZGRyX3BhcmFtOwogCV9fdTMyCQkJc2VyaWFsOwotCWludAkJ CWxlbmd0aDsKIAogCWlmICghc2N0cF92dGFnX3ZlcmlmeShjaHVuaywgYXNvYykpIHsKIAkJc2N0 cF9hZGRfY21kX3NmKGNvbW1hbmRzLCBTQ1RQX0NNRF9SRVBPUlRfQkFEX1RBRywKQEAgLTM1NDMs MTcgKzM1NDQsOCBAQCBzY3RwX2Rpc3Bvc2l0aW9uX3Qgc2N0cF9zZl9kb19hc2NvbmYoY29uc3Qg c3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLAogCWhkciA9IChzY3RwX2FkZGlwaGRyX3QgKiljaHVu ay0+c2tiLT5kYXRhOwogCXNlcmlhbCA9IG50b2hsKGhkci0+c2VyaWFsKTsKIAotCWFkZHJfcGFy YW0gPSAodW5pb24gc2N0cF9hZGRyX3BhcmFtICopaGRyLT5wYXJhbXM7Ci0JbGVuZ3RoID0gbnRv aHMoYWRkcl9wYXJhbS0+cC5sZW5ndGgpOwotCWlmIChsZW5ndGggPCBzaXplb2Yoc2N0cF9wYXJh bWhkcl90KSkKLQkJcmV0dXJuIHNjdHBfc2ZfdmlvbGF0aW9uX3BhcmFtbGVuKGVwLCBhc29jLCB0 eXBlLCBhcmcsCi0JCQkgICAodm9pZCAqKWFkZHJfcGFyYW0sIGNvbW1hbmRzKTsKLQogCS8qIFZl cmlmeSB0aGUgQVNDT05GIGNodW5rIGJlZm9yZSBwcm9jZXNzaW5nIGl0LiAqLwotCWlmICghc2N0 cF92ZXJpZnlfYXNjb25mKGFzb2MsCi0JCQkgICAgKHNjdHBfcGFyYW1oZHJfdCAqKSgodm9pZCAq KWFkZHJfcGFyYW0gKyBsZW5ndGgpLAotCQkJICAgICh2b2lkICopY2h1bmstPmNodW5rX2VuZCwK LQkJCSAgICAmZXJyX3BhcmFtKSkKKwlpZiAoIXNjdHBfdmVyaWZ5X2FzY29uZihhc29jLCBjaHVu aywgdHJ1ZSwgJmVycl9wYXJhbSkpCiAJCXJldHVybiBzY3RwX3NmX3Zpb2xhdGlvbl9wYXJhbWxl bihlcCwgYXNvYywgdHlwZSwgYXJnLAogCQkJCQkJICAodm9pZCAqKWVycl9wYXJhbSwgY29tbWFu ZHMpOwogCkBAIC0zNjcwLDEwICszNjYyLDcgQEAgc2N0cF9kaXNwb3NpdGlvbl90IHNjdHBfc2Zf ZG9fYXNjb25mX2Fjayhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJcmN2ZF9zZXJp YWwgPSBudG9obChhZGRpcF9oZHItPnNlcmlhbCk7CiAKIAkvKiBWZXJpZnkgdGhlIEFTQ09ORi1B Q0sgY2h1bmsgYmVmb3JlIHByb2Nlc3NpbmcgaXQuICovCi0JaWYgKCFzY3RwX3ZlcmlmeV9hc2Nv bmYoYXNvYywKLQkgICAgKHNjdHBfcGFyYW1oZHJfdCAqKWFkZGlwX2hkci0+cGFyYW1zLAotCSAg ICAodm9pZCAqKWFzY29uZl9hY2stPmNodW5rX2VuZCwKLQkgICAgJmVycl9wYXJhbSkpCisJaWYg KCFzY3RwX3ZlcmlmeV9hc2NvbmYoYXNvYywgYXNjb25mX2FjaywgZmFsc2UsICZlcnJfcGFyYW0p KQogCQlyZXR1cm4gc2N0cF9zZl92aW9sYXRpb25fcGFyYW1sZW4oZXAsIGFzb2MsIHR5cGUsIGFy ZywKIAkJCSAgICh2b2lkICopZXJyX3BhcmFtLCBjb21tYW5kcyk7CiAKZGlmZiAtLWdpdCBhL25l dC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDZkNGQy NjMuLmNkZjc3YTIgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKKysrIGIvbmV0 L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtNDgwNCw2ICs0ODA0LDkgQEAgaW50IGNmZzgwMjExX3Rl c3Rtb2RlX3JlcGx5KHN0cnVjdCBza19idWZmICpza2IpCiAJdm9pZCAqaGRyID0gKCh2b2lkICoq KXNrYi0+Y2IpWzFdOwogCXN0cnVjdCBubGF0dHIgKmRhdGEgPSAoKHZvaWQgKiopc2tiLT5jYilb Ml07CiAKKwkvKiBjbGVhciBDQiBkYXRhIGZvciBuZXRsaW5rIGNvcmUgdG8gb3duIGZyb20gbm93 IG9uICovCisJbWVtc2V0KHNrYi0+Y2IsIDAsIHNpemVvZihza2ItPmNiKSk7CisKIAlpZiAoV0FS Tl9PTighcmRldi0+dGVzdG1vZGVfaW5mbykpIHsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVy biAtRUlOVkFMOwpAQCAtNDgzMCw2ICs0ODMzLDkgQEAgdm9pZCBjZmc4MDIxMV90ZXN0bW9kZV9l dmVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBnZnApCiAJdm9pZCAqaGRyID0gKCh2b2lk ICoqKXNrYi0+Y2IpWzFdOwogCXN0cnVjdCBubGF0dHIgKmRhdGEgPSAoKHZvaWQgKiopc2tiLT5j YilbMl07CiAKKwkvKiBjbGVhciBDQiBkYXRhIGZvciBuZXRsaW5rIGNvcmUgdG8gb3duIGZyb20g bm93IG9uICovCisJbWVtc2V0KHNrYi0+Y2IsIDAsIHNpemVvZihza2ItPmNiKSk7CisKIAlubGFf bmVzdF9lbmQoc2tiLCBkYXRhKTsKIAlnZW5sbXNnX2VuZChza2IsIGhkcik7CiAJZ2VubG1zZ19t dWx0aWNhc3RfbmV0bnMod2lwaHlfbmV0KCZyZGV2LT53aXBoeSksIHNrYiwgMCwKZGlmZiAtLWdp dCBhL3NvdW5kL2NvcmUvcGNtX2xpYi5jIGIvc291bmQvY29yZS9wY21fbGliLmMKaW5kZXggY2Yw ZDQ2ZS4uN2YwMGQzNCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbGliLmMKKysrIGIvc291 bmQvY29yZS9wY21fbGliLmMKQEAgLTE2OTIsMTQgKzE2OTIsMTYgQEAgc3RhdGljIGludCBzbmRf cGNtX2xpYl9pb2N0bF9maWZvX3NpemUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJl YW0sCiB7CiAJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMgPSBhcmc7CiAJc25kX3Bj bV9mb3JtYXRfdCBmb3JtYXQ7Ci0JaW50IGNoYW5uZWxzLCB3aWR0aDsKKwlpbnQgY2hhbm5lbHM7 CisJc3NpemVfdCBmcmFtZV9zaXplOwogCiAJcGFyYW1zLT5maWZvX3NpemUgPSBzdWJzdHJlYW0t PnJ1bnRpbWUtPmh3LmZpZm9fc2l6ZTsKIAlpZiAoIShzdWJzdHJlYW0tPnJ1bnRpbWUtPmh3Lmlu Zm8gJiBTTkRSVl9QQ01fSU5GT19GSUZPX0lOX0ZSQU1FUykpIHsKIAkJZm9ybWF0ID0gcGFyYW1z X2Zvcm1hdChwYXJhbXMpOwogCQljaGFubmVscyA9IHBhcmFtc19jaGFubmVscyhwYXJhbXMpOwot CQl3aWR0aCA9IHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKGZvcm1hdCk7Ci0JCXBhcmFt cy0+Zmlmb19zaXplIC89IHdpZHRoICogY2hhbm5lbHM7CisJCWZyYW1lX3NpemUgPSBzbmRfcGNt X2Zvcm1hdF9zaXplKGZvcm1hdCwgY2hhbm5lbHMpOworCQlpZiAoZnJhbWVfc2l6ZSA+IDApCisJ CQlwYXJhbXMtPmZpZm9fc2l6ZSAvPSAodW5zaWduZWQpZnJhbWVfc2l6ZTsKIAl9CiAJcmV0dXJu IDA7CiB9CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYyBiL3NvdW5k L3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCmluZGV4IDQ5MWNkZjAuLmQxMGE2ZWYgMTAwNjQ0Ci0t LSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCisrKyBiL3NvdW5kL3BjaS9oZGEvcGF0 Y2hfcmVhbHRlay5jCkBAIC03ODksNiArNzg5LDcgQEAgc3RhdGljIHZvaWQgYWxjX2F1dG9faW5p dF9hbXAoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsIGludCB0eXBlKQogCQljYXNlIDB4MTBlYzA4 ODU6CiAJCWNhc2UgMHgxMGVjMDg4NzoKIAkJLypjYXNlIDB4MTBlYzA4ODk6Ki8gLyogdGhpcyBj YXVzZXMgYW4gU1BESUYgcHJvYmxlbSAqLworCQljYXNlIDB4MTBlYzA5MDA6CiAJCQlhbGM4ODlf Y29lZl9pbml0KGNvZGVjKTsKIAkJCWJyZWFrOwogCQljYXNlIDB4MTBlYzA4ODg6CkBAIC00MzQz LDYgKzQzNDQsNyBAQCBzdGF0aWMgaW50IHBhdGNoX2FsYzg4MihzdHJ1Y3QgaGRhX2NvZGVjICpj b2RlYykKIAlzd2l0Y2ggKGNvZGVjLT52ZW5kb3JfaWQpIHsKIAljYXNlIDB4MTBlYzA4ODI6CiAJ Y2FzZSAweDEwZWMwODg1OgorCWNhc2UgMHgxMGVjMDkwMDoKIAkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJLyogQUxDODgzIGFuZCB2YXJpYW50cyAqLwo= --=-m8mhQzFTY/1Jt4fms/11-- --=-oLVftlMM6pcONn/r0K9n Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIVAwUAVFVw3Oe/yOyVhhEJAQp31BAAwen29mYx+br4ZR+OfHn4Y5CSNZE5uIEJ Q7di5MKMGualtVnHvAW+dwobyYP/1qW87tQLXrFj7QBCWq0iLcFvKZmQDFKDEdji p7NzV1rlp39wjskddBFc8U5JyViVVsvDHdiLFAtWwkmmbXnBm9eXnyhcxJY0Vo58 mgiQ3TrMNgZ1K56xe+DRGVButhPNKWzp4SJiX/Ry1F7N5jFLjwJ/x1OefBmQVaiB NaIWT3A/yn5JRs+H283FlIvFPhbjjyUMc54h3mW/30vNtnEAwAkwGB2KumYb5HKh PnLHnHbAOIUnylgEmJuiBtwEEjMdm0ounnIislY/1rSV70uHZ6eAkQw59Tz7C7Rb pk03CzQw2IpBEZaKjj4M/MGOWvOJNe5Epp63H29WLmaUA+0o/k0aVyLBhWNMsRvn 4Xi1UKJjkOVk/QhGTzSTJhTDQPqn1eI7crRj52Yf3+Nl11kN+538mwSX+GYjzXxk fAK+q97+Dsp1A+T8N/+FHBEcB2njU0ASnQ6JBFs+JCPw4L9cpZ8NU3byIGO8cN/P OLGppkFw1O0Tj5FWnhHWH1GqfN/Dt2d6/UFinN0nJSUumEulJ6b1YxQEgfb4kbYK 5h3TT/X+dF/GWl4omkjEMWi7SPLKQ2VMcSh4nhnci4kAATy2b26CjQv3Ialm+rRx HGQ0FI1wAME= =vD8k -----END PGP SIGNATURE----- --=-oLVftlMM6pcONn/r0K9n-- -- 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/