Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751497AbdFAQ4n (ORCPT ); Thu, 1 Jun 2017 12:56:43 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:34592 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751078AbdFAQ4d (ORCPT ); Thu, 1 Jun 2017 12:56:33 -0400 Message-ID: <1496336166.3992.25.camel@decadent.org.uk> Subject: Re: [PATCH 3.16 000/212] 3.16.44-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Thu, 01 Jun 2017 17:56:06 +0100 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-2vA5ZnECyAmdncrh9K+8" X-Mailer: Evolution 3.22.6-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 82.70.136.246 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 332500 Lines: 4348 --=-2vA5ZnECyAmdncrh9K+8 Content-Type: multipart/mixed; boundary="=-CUcUAfpZYY2Dq2jGErZG" --=-CUcUAfpZYY2Dq2jGErZG Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.16.44-rc1 relative to 3.16.43. Ben. --=20 Ben Hutchings The most exhausting thing in life is being insincere. - Anne Morrow Lindberg --=-CUcUAfpZYY2Dq2jGErZG Content-Disposition: attachment; filename="linux-3.16.44-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.16.44-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL211eGVzL2kyYy1tdXgtZ3BpbyBiL0RvY3Vt ZW50YXRpb24vaTJjL211eGVzL2kyYy1tdXgtZ3BpbwppbmRleCBkNGQ5MWE1M2ZjMzkuLjdhOGQ3 ZDI2MTYzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMmMvbXV4ZXMvaTJjLW11eC1ncGlv CisrKyBiL0RvY3VtZW50YXRpb24vaTJjL211eGVzL2kyYy1tdXgtZ3BpbwpAQCAtMSwxMSArMSwx MSBAQAotS2VybmVsIGRyaXZlciBpMmMtZ3Bpby1tdXgKK0tlcm5lbCBkcml2ZXIgaTJjLW11eC1n cGlvCiAKIEF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxwZXRlci5rb3JzZ2FhcmRAYmFyY28uY29t PgogCiBEZXNjcmlwdGlvbgogLS0tLS0tLS0tLS0KIAotaTJjLWdwaW8tbXV4IGlzIGFuIGkyYyBt dXggZHJpdmVyIHByb3ZpZGluZyBhY2Nlc3MgdG8gSTJDIGJ1cyBzZWdtZW50cworaTJjLW11eC1n cGlvIGlzIGFuIGkyYyBtdXggZHJpdmVyIHByb3ZpZGluZyBhY2Nlc3MgdG8gSTJDIGJ1cyBzZWdt ZW50cwogZnJvbSBhIG1hc3RlciBJMkMgYnVzIGFuZCBhIGhhcmR3YXJlIE1VWCBjb250cm9sbGVk IHRocm91Z2ggR1BJTyBwaW5zLgogCiBFLkcuOgpAQCAtMjYsMTYgKzI2LDE2IEBAIGFjY29yZGlu ZyB0byB0aGUgc2V0dGluZ3Mgb2YgdGhlIEdQSU8gcGlucyAxLi5OLgogVXNhZ2UKIC0tLS0tCiAK LWkyYy1ncGlvLW11eCB1c2VzIHRoZSBwbGF0Zm9ybSBidXMsIHNvIHlvdSBuZWVkIHRvIHByb3Zp ZGUgYSBzdHJ1Y3QKK2kyYy1tdXgtZ3BpbyB1c2VzIHRoZSBwbGF0Zm9ybSBidXMsIHNvIHlvdSBu ZWVkIHRvIHByb3ZpZGUgYSBzdHJ1Y3QKIHBsYXRmb3JtX2RldmljZSB3aXRoIHRoZSBwbGF0Zm9y bV9kYXRhIHBvaW50aW5nIHRvIGEgc3RydWN0Ci1ncGlvX2kyY211eF9wbGF0Zm9ybV9kYXRhIHdp dGggdGhlIEkyQyBhZGFwdGVyIG51bWJlciBvZiB0aGUgbWFzdGVyCitpMmNfbXV4X2dwaW9fcGxh dGZvcm1fZGF0YSB3aXRoIHRoZSBJMkMgYWRhcHRlciBudW1iZXIgb2YgdGhlIG1hc3RlcgogYnVz LCB0aGUgbnVtYmVyIG9mIGJ1cyBzZWdtZW50cyB0byBjcmVhdGUgYW5kIHRoZSBHUElPIHBpbnMg dXNlZAotdG8gY29udHJvbCBpdC4gU2VlIGluY2x1ZGUvbGludXgvaTJjLWdwaW8tbXV4LmggZm9y IGRldGFpbHMuCit0byBjb250cm9sIGl0LiBTZWUgaW5jbHVkZS9saW51eC9pMmMtbXV4LWdwaW8u aCBmb3IgZGV0YWlscy4KIAogRS5HLiBzb21ldGhpbmcgbGlrZSB0aGlzIGZvciBhIE1VWCBwcm92 aWRpbmcgNCBidXMgc2VnbWVudHMKIGNvbnRyb2xsZWQgdGhyb3VnaCAzIEdQSU8gcGluczoKIAot I2luY2x1ZGUgPGxpbnV4L2kyYy1ncGlvLW11eC5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy1tdXgt Z3Bpby5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogCiBzdGF0aWMgY29u c3QgdW5zaWduZWQgbXlib2FyZF9ncGlvbXV4X2dwaW9zW10gPSB7CkBAIC00Niw3ICs0Niw3IEBA IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBteWJvYXJkX2dwaW9tdXhfdmFsdWVzW10gPSB7CiAJMCwg MSwgMiwgMwogfTsKIAotc3RhdGljIHN0cnVjdCBncGlvX2kyY211eF9wbGF0Zm9ybV9kYXRhIG15 Ym9hcmRfaTJjbXV4X2RhdGEgPSB7CitzdGF0aWMgc3RydWN0IGkyY19tdXhfZ3Bpb19wbGF0Zm9y bV9kYXRhIG15Ym9hcmRfaTJjbXV4X2RhdGEgPSB7CiAJLnBhcmVudAkJPSAxLAogCS5iYXNlX25y CT0gMiwgLyogb3B0aW9uYWwgKi8KIAkudmFsdWVzCQk9IG15Ym9hcmRfZ3Bpb211eF92YWx1ZXMs CkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZ3Bpb19pMmNtdXhfcGxhdGZvcm1fZGF0 YSBteWJvYXJkX2kyY211eF9kYXRhID0gewogfTsKIAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgbXlib2FyZF9pMmNtdXggPSB7Ci0JLm5hbWUJCT0gImkyYy1ncGlvLW11eCIsCisJLm5h bWUJCT0gImkyYy1tdXgtZ3BpbyIsCiAJLmlkCQk9IDAsCiAJLmRldgkJPSB7CiAJCS5wbGF0Zm9y bV9kYXRhCT0gJm15Ym9hcmRfaTJjbXV4X2RhdGEsCkBAIC02NiwxNCArNjYsMTQgQEAgc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbXlib2FyZF9pMmNtdXggPSB7CiAKIElmIHlvdSBkb24n dCBrbm93IHRoZSBhYnNvbHV0ZSBHUElPIHBpbiBudW1iZXJzIGF0IHJlZ2lzdHJhdGlvbiB0aW1l LAogeW91IGNhbiBpbnN0ZWFkIHByb3ZpZGUgYSBjaGlwIG5hbWUgKC5jaGlwX25hbWUpIGFuZCBy ZWxhdGl2ZSBHUElPIHBpbgotbnVtYmVycywgYW5kIHRoZSBpMmMtZ3Bpby1tdXggZHJpdmVyIHdp bGwgZG8gdGhlIHdvcmsgZm9yIHlvdSwKK251bWJlcnMsIGFuZCB0aGUgaTJjLW11eC1ncGlvIGRy aXZlciB3aWxsIGRvIHRoZSB3b3JrIGZvciB5b3UsCiBpbmNsdWRpbmcgZGVmZXJyZWQgcHJvYmlu ZyBpZiB0aGUgR1BJTyBjaGlwIGlzbid0IGltbWVkaWF0ZWx5CiBhdmFpbGFibGUuCiAKIERldmlj ZSBSZWdpc3RyYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiByZWdpc3RlcmluZyB5 b3VyIGkyYy1ncGlvLW11eCBkZXZpY2UsIHlvdSBzaG91bGQgcGFzcyB0aGUgbnVtYmVyCitXaGVu IHJlZ2lzdGVyaW5nIHlvdXIgaTJjLW11eC1ncGlvIGRldmljZSwgeW91IHNob3VsZCBwYXNzIHRo ZSBudW1iZXIKIG9mIGFueSBHUElPIHBpbiBpdCB1c2VzIGFzIHRoZSBkZXZpY2UgSUQuIFRoaXMg Z3VhcmFudGVlcyB0aGF0IGV2ZXJ5CiBpbnN0YW5jZSBoYXMgYSBkaWZmZXJlbnQgSUQuCiAKZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRh dGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKaW5kZXggNTkwYmYwMDY3N2E1Li5jYjc2YTNjZjA3 NjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CisrKyBi L0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC0xMTE1LDYgKzExMTUsMTAg QEAgYnl0ZXMgcmVzcGVjdGl2ZWx5LiBTdWNoIGxldHRlciBzdWZmaXhlcyBjYW4gYWxzbyBiZSBl bnRpcmVseSBvbWl0dGVkLgogCQkJV2hlbiB6ZXJvLCBwcm9maWxpbmcgZGF0YSBpcyBkaXNjYXJk ZWQgYW5kIGFzc29jaWF0ZWQKIAkJCWRlYnVnZnMgZmlsZXMgYXJlIHJlbW92ZWQgYXQgbW9kdWxl IHVubG9hZCB0aW1lLgogCisJZ29sZGZpc2gJW1g4Nl0gRW5hYmxlIHRoZSBnb2xkZmlzaCBhbmRy b2lkIGVtdWxhdG9yIHBsYXRmb3JtLgorCQkJRG9uJ3QgdXNlIHRoaXMgd2hlbiB5b3UgYXJlIG5v dCBydW5uaW5nIG9uIHRoZQorCQkJYW5kcm9pZCBlbXVsYXRvcgorCiAJZ3B0CQlbRUZJXSBGb3Jj ZXMgZGlzayB3aXRoIHZhbGlkIEdQVCBzaWduYXR1cmUgYnV0CiAJCQlpbnZhbGlkIFByb3RlY3Rp dmUgTUJSIHRvIGJlIHRyZWF0ZWQgYXMgR1BULiBJZiB0aGUKIAkJCXByaW1hcnkgR1BUIGlzIGNv cnJ1cHRlZCwgaXQgZW5hYmxlcyB0aGUgYmFja3VwL2FsdGVybmF0ZQpkaWZmIC0tZ2l0IGEvTWFr ZWZpbGUgYi9NYWtlZmlsZQppbmRleCAyOGIxZDVlZWQyYzUuLjMyODQzN2Q0YjExNCAxMDA2NDQK LS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTEsNyArMSw3IEBACiBWRVJTSU9OID0g MwogUEFUQ0hMRVZFTCA9IDE2Ci1TVUJMRVZFTCA9IDQzCi1FWFRSQVZFUlNJT04gPQorU1VCTEVW RUwgPSA0NAorRVhUUkFWRVJTSU9OID0gLXJjMQogTkFNRSA9IE11c2V1bSBvZiBGaXNoaWVnb29k aWVzCiAKICMgKkRPQ1VNRU5UQVRJT04qCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2Fz bS9rdm1fbW11LmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9rdm1fbW11LmgKaW5kZXggODYxOGJh ZGJiYmJlLi5mNGNlZjAyMWRiMWUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2t2 bV9tbXUuaAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9rdm1fbW11LmgKQEAgLTE0Miw4ICsx NDIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdmNwdV9oYXNfY2FjaGVfZW5hYmxlZChzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpCiBzdGF0aWMgaW5saW5lIHZvaWQgY29oZXJlbnRfY2FjaGVfZ3Vlc3Rf cGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGh2YV90IGh2YSwKIAkJCQkJICAgICB1bnNpZ25l ZCBsb25nIHNpemUpCiB7Ci0JaWYgKCF2Y3B1X2hhc19jYWNoZV9lbmFibGVkKHZjcHUpKQotCQlr dm1fZmx1c2hfZGNhY2hlX3RvX3BvYygodm9pZCAqKWh2YSwgc2l6ZSk7CisJa3ZtX2ZsdXNoX2Rj YWNoZV90b19wb2MoKHZvaWQgKilodmEsIHNpemUpOwogCQogCS8qCiAJICogSWYgd2UgYXJlIGdv aW5nIHRvIGluc2VydCBhbiBpbnN0cnVjdGlvbiBwYWdlIGFuZCB0aGUgaWNhY2hlIGlzCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9tbXUuaCBiL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20va3ZtX21tdS5oCmluZGV4IDIwNjdmNGI3NWQxMy4uNzc1OGUwZjQ3OGEzIDEwMDY0 NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9tbXUuaAorKysgYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2t2bV9tbXUuaApAQCAtMTQxLDggKzE0MSw3IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCB2Y3B1X2hhc19jYWNoZV9lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHN0YXRp YyBpbmxpbmUgdm9pZCBjb2hlcmVudF9jYWNoZV9ndWVzdF9wYWdlKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgaHZhX3QgaHZhLAogCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKLQlpZiAo IXZjcHVfaGFzX2NhY2hlX2VuYWJsZWQodmNwdSkpCi0JCWt2bV9mbHVzaF9kY2FjaGVfdG9fcG9j KCh2b2lkICopaHZhLCBzaXplKTsKKwlrdm1fZmx1c2hfZGNhY2hlX3RvX3BvYygodm9pZCAqKWh2 YSwgc2l6ZSk7CiAKIAlpZiAoIWljYWNoZV9pc19hbGlhc2luZygpKSB7CQkvKiBQSVBUICovCiAJ CWZsdXNoX2ljYWNoZV9yYW5nZShodmEsIGh2YSArIHNpemUpOwpkaWZmIC0tZ2l0IGEvYXJjaC9t aXBzL01ha2VmaWxlIGIvYXJjaC9taXBzL01ha2VmaWxlCmluZGV4IGQ5NjRkY2YwNzYyYi4uOTAz MjcwNmMwYTMyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvTWFrZWZpbGUKKysrIGIvYXJjaC9taXBz L01ha2VmaWxlCkBAIC0zMzMsMTEgKzMzMywxMSBAQCBDTEVBTl9GSUxFUyArPSB2bWxpbnV4LjMy IHZtbGludXguNjQKIAogYXJjaHByZXBhcmU6CiBpZmRlZiBDT05GSUdfTUlQUzMyX04zMgotCUBl Y2hvICcgIENoZWNraW5nIG1pc3Npbmctc3lzY2FsbHMgZm9yIE4zMicKKwlAJChrZWNobykgJyAg Q2hlY2tpbmcgbWlzc2luZy1zeXNjYWxscyBmb3IgTjMyJwogCSQoUSkkKE1BS0UpICQoYnVpbGQp PS4gbWlzc2luZy1zeXNjYWxscyBtaXNzaW5nX3N5c2NhbGxzX2ZsYWdzPSItbWFiaT1uMzIiCiBl bmRpZgogaWZkZWYgQ09ORklHX01JUFMzMl9PMzIKLQlAZWNobyAnICBDaGVja2luZyBtaXNzaW5n LXN5c2NhbGxzIGZvciBPMzInCisJQCQoa2VjaG8pICcgIENoZWNraW5nIG1pc3Npbmctc3lzY2Fs bHMgZm9yIE8zMicKIAkkKFEpJChNQUtFKSAkKGJ1aWxkKT0uIG1pc3Npbmctc3lzY2FsbHMgbWlz c2luZ19zeXNjYWxsc19mbGFncz0iLW1hYmk9MzIiCiBlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNo L21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMKaW5k ZXggNDlhMWNlMDY4NDRiLi42NDEyNGUzZTU0YjUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9iY200 N3h4L2J1dHRvbnMuYworKysgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMKQEAgLTE3LDYg KzE3LDEyIEBACiAJCS5hY3RpdmVfbG93CT0gMSwJCQkJCVwKIAl9CiAKKyNkZWZpbmUgQkNNNDdY WF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSkJCQkJXAorCXsJCQkJCQkJCVwKKwkJLmNvZGUJCT0g X2NvZGUsCQkJCVwKKwkJLmdwaW8JCT0gX2dwaW8sCQkJCVwKKwl9CisKIC8qIEFzdXMgKi8KIAog c3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCkBAIC03NCw4ICs4MCw4IEBAIGJj bTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MltdIF9faW5pdGNvbnN0ID0gewogCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAw d1tdIF9faW5pdGNvbnN0ID0gewotCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAot CUJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1dQU19CVVRUT04pLAorCUJDTTQ3WFhfR1BJT19LRVlf SCg2LCBLRVlfUkVTVEFSVCksCisJQkNNNDdYWF9HUElPX0tFWV9IKDcsIEtFWV9XUFNfQlVUVE9O KSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgpkaWZmIC0tZ2l0 IGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vb2N0ZW9uLW1lbWNweS5TIGIvYXJjaC9taXBzL2Nh dml1bS1vY3Rlb24vb2N0ZW9uLW1lbWNweS5TCmluZGV4IDY0ZTA4ZGY1MWQ2NS4uOGI3MDA0MTMy NDkxIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9vY3Rlb24tbWVtY3B5LlMK KysrIGIvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vb2N0ZW9uLW1lbWNweS5TCkBAIC0yMDgsMTgg KzIwOCwxOCBAQCBFWEMoCVNUT1JFCXQyLCBVTklUKDYpKGRzdCksCXNfZXhjX3AxMHUpCiAJQURE CXNyYywgc3JjLCAxNipOQllURVMKIEVYQygJU1RPUkUJdDMsIFVOSVQoNykoZHN0KSwJc19leGNf cDl1KQogCUFERAlkc3QsIGRzdCwgMTYqTkJZVEVTCi1FWEMoCUxPQUQJdDAsIFVOSVQoLTgpKHNy YyksCWxfZXhjX2NvcHkpCi1FWEMoCUxPQUQJdDEsIFVOSVQoLTcpKHNyYyksCWxfZXhjX2NvcHkp Ci1FWEMoCUxPQUQJdDIsIFVOSVQoLTYpKHNyYyksCWxfZXhjX2NvcHkpCi1FWEMoCUxPQUQJdDMs IFVOSVQoLTUpKHNyYyksCWxfZXhjX2NvcHkpCitFWEMoCUxPQUQJdDAsIFVOSVQoLTgpKHNyYyks CWxfZXhjX2NvcHlfcmV3aW5kMTYpCitFWEMoCUxPQUQJdDEsIFVOSVQoLTcpKHNyYyksCWxfZXhj X2NvcHlfcmV3aW5kMTYpCitFWEMoCUxPQUQJdDIsIFVOSVQoLTYpKHNyYyksCWxfZXhjX2NvcHlf cmV3aW5kMTYpCitFWEMoCUxPQUQJdDMsIFVOSVQoLTUpKHNyYyksCWxfZXhjX2NvcHlfcmV3aW5k MTYpCiBFWEMoCVNUT1JFCXQwLCBVTklUKC04KShkc3QpLAlzX2V4Y19wOHUpCiBFWEMoCVNUT1JF CXQxLCBVTklUKC03KShkc3QpLAlzX2V4Y19wN3UpCiBFWEMoCVNUT1JFCXQyLCBVTklUKC02KShk c3QpLAlzX2V4Y19wNnUpCiBFWEMoCVNUT1JFCXQzLCBVTklUKC01KShkc3QpLAlzX2V4Y19wNXUp Ci1FWEMoCUxPQUQJdDAsIFVOSVQoLTQpKHNyYyksCWxfZXhjX2NvcHkpCi1FWEMoCUxPQUQJdDEs IFVOSVQoLTMpKHNyYyksCWxfZXhjX2NvcHkpCi1FWEMoCUxPQUQJdDIsIFVOSVQoLTIpKHNyYyks CWxfZXhjX2NvcHkpCi1FWEMoCUxPQUQJdDMsIFVOSVQoLTEpKHNyYyksCWxfZXhjX2NvcHkpCitF WEMoCUxPQUQJdDAsIFVOSVQoLTQpKHNyYyksCWxfZXhjX2NvcHlfcmV3aW5kMTYpCitFWEMoCUxP QUQJdDEsIFVOSVQoLTMpKHNyYyksCWxfZXhjX2NvcHlfcmV3aW5kMTYpCitFWEMoCUxPQUQJdDIs IFVOSVQoLTIpKHNyYyksCWxfZXhjX2NvcHlfcmV3aW5kMTYpCitFWEMoCUxPQUQJdDMsIFVOSVQo LTEpKHNyYyksCWxfZXhjX2NvcHlfcmV3aW5kMTYpCiBFWEMoCVNUT1JFCXQwLCBVTklUKC00KShk c3QpLAlzX2V4Y19wNHUpCiBFWEMoCVNUT1JFCXQxLCBVTklUKC0zKShkc3QpLAlzX2V4Y19wM3Up CiBFWEMoCVNUT1JFCXQyLCBVTklUKC0yKShkc3QpLAlzX2V4Y19wMnUpCkBAIC0zODMsNiArMzgz LDEwIEBAIGRvbmU6CiAJIG5vcAogCUVORChtZW1jcHkpCiAKK2xfZXhjX2NvcHlfcmV3aW5kMTY6 CisJLyogUmV3aW5kIHNyYyBhbmQgZHN0IGJ5IDE2Kk5CWVRFUyBmb3IgbF9leGNfY29weSAqLwor CVNVQglzcmMsIHNyYywgMTYqTkJZVEVTCisJU1VCCWRzdCwgZHN0LCAxNipOQllURVMKIGxfZXhj X2NvcHk6CiAJLyoKIAkgKiBDb3B5IGJ5dGVzIGZyb20gc3JjIHVudGlsIGZhdWx0aW5nIGxvYWQg YWRkcmVzcyAob3IgdW50aWwgYQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19k ZWZjb25maWcgYi9hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZwppbmRleCAwZTM2YWJj ZDM5Y2MuLjc0NDYyODRkZDdiMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19k ZWZjb25maWcKKysrIGIvYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWcKQEAgLTIwNiw3 ICsyMDYsNiBAQCBDT05GSUdfTUxYNF9FTj1tCiAjIENPTkZJR19NTFg0X0RFQlVHIGlzIG5vdCBz ZXQKIENPTkZJR19URUhVVEk9bQogQ09ORklHX0JOWDJYPW0KLUNPTkZJR19RTEdFPW0KIENPTkZJ R19TRkM9bQogQ09ORklHX0JFMk5FVD1tCiBDT05GSUdfTElCRVJUQVNfVEhJTkZJUk09bQpkaWZm IC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2NoZWNrc3VtLmggYi9hcmNoL21pcHMvaW5j bHVkZS9hc20vY2hlY2tzdW0uaAppbmRleCAzNDE4YzUxZTExNTEuLjhlMDFiMDIxNTA3MCAxMDA2 NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2NoZWNrc3VtLmgKKysrIGIvYXJjaC9taXBz L2luY2x1ZGUvYXNtL2NoZWNrc3VtLmgKQEAgLTE4NSw3ICsxODUsOSBAQCBzdGF0aWMgaW5saW5l IF9fd3N1bSBjc3VtX3RjcHVkcF9ub2ZvbGQoX19iZTMyIHNhZGRyLAogCSIJZGFkZHUJJTAsICU0 CQlcbiIKIAkiCWRzbGwzMgkkMSwgJTAsIDAJXG4iCiAJIglkYWRkdQklMCwgJDEJCVxuIgorCSIJ c2x0dQkkMSwgJTAsICQxCVxuIgogCSIJZHNyYTMyCSUwLCAlMCwgMAlcbiIKKwkiCWFkZHUJJTAs ICQxCQlcbiIKICNlbmRpZgogCSIJLnNldAlwb3AiCiAJOiAiPXIiIChzdW0pCmRpZmYgLS1naXQg YS9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvbWlwcy9rZXJuZWwvcHJvY2Vzcy5j CmluZGV4IGYyMDZkZDNjMWI0Zi4uNmU5MGJmNTJiOTViIDEwMDY0NAotLS0gYS9hcmNoL21pcHMv a2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYwpAQCAtMjIz LDExICsyMjMsOSBAQCBzdHJ1Y3QgbWlwc19mcmFtZV9pbmZvIHsKICNkZWZpbmUgSl9UQVJHRVQo cGMsdGFyZ2V0KQlcCiAJCSgoKHVuc2lnbmVkIGxvbmcpKHBjKSAmIDB4ZjAwMDAwMDApIHwgKCh0 YXJnZXQpIDw8IDIpKQogCi1zdGF0aWMgaW5saW5lIGludCBpc19yYV9zYXZlX2lucyh1bmlvbiBt aXBzX2luc3RydWN0aW9uICppcCkKK3N0YXRpYyBpbmxpbmUgaW50IGlzX3JhX3NhdmVfaW5zKHVu aW9uIG1pcHNfaW5zdHJ1Y3Rpb24gKmlwLCBpbnQgKnBvZmYpCiB7CiAjaWZkZWYgQ09ORklHX0NQ VV9NSUNST01JUFMKLQl1bmlvbiBtaXBzX2luc3RydWN0aW9uIG1taTsKLQogCS8qCiAJICogc3dz cCByYSxvZmZzZXQKIAkgKiBzd20xNiByZWdsaXN0LG9mZnNldChzcCkKQEAgLTIzNywyOSArMjM1 LDcxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX3JhX3NhdmVfaW5zKHVuaW9uIG1pcHNfaW5zdHJ1 Y3Rpb24gKmlwKQogCSAqCiAJICogbWljcm9NSVBTIGlzIHdheSBtb3JlIGZ1bi4uLgogCSAqLwot CWlmIChtbV9pbnNuXzE2Yml0KGlwLT5oYWxmd29yZFswXSkpIHsKLQkJbW1pLndvcmQgPSAoaXAt PmhhbGZ3b3JkWzBdIDw8IDE2KTsKLQkJcmV0dXJuICgobW1pLm1tMTZfcjVfZm9ybWF0Lm9wY29k ZSA9PSBtbV9zd3NwMTZfb3AgJiYKLQkJCSBtbWkubW0xNl9yNV9mb3JtYXQucnQgPT0gMzEpIHx8 Ci0JCQkobW1pLm1tMTZfbV9mb3JtYXQub3Bjb2RlID09IG1tX3Bvb2wxNmNfb3AgJiYKLQkJCSBt bWkubW0xNl9tX2Zvcm1hdC5mdW5jID09IG1tX3N3bTE2X29wKSk7CisJaWYgKG1tX2luc25fMTZi aXQoaXAtPmhhbGZ3b3JkWzFdKSkgeworCQlzd2l0Y2ggKGlwLT5tbTE2X3I1X2Zvcm1hdC5vcGNv ZGUpIHsKKwkJY2FzZSBtbV9zd3NwMTZfb3A6CisJCQlpZiAoaXAtPm1tMTZfcjVfZm9ybWF0LnJ0 ICE9IDMxKQorCQkJCXJldHVybiAwOworCisJCQkqcG9mZiA9IGlwLT5tbTE2X3I1X2Zvcm1hdC5z aW1tZWRpYXRlOworCQkJKnBvZmYgPSAoKnBvZmYgPDwgMikgLyBzaXplb2YodWxvbmcpOworCQkJ cmV0dXJuIDE7CisKKwkJY2FzZSBtbV9wb29sMTZjX29wOgorCQkJc3dpdGNoIChpcC0+bW0xNl9t X2Zvcm1hdC5mdW5jKSB7CisJCQljYXNlIG1tX3N3bTE2X29wOgorCQkJCSpwb2ZmID0gaXAtPm1t MTZfbV9mb3JtYXQuaW1tOworCQkJCSpwb2ZmICs9IDEgKyBpcC0+bW0xNl9tX2Zvcm1hdC5ybGlz dDsKKwkJCQkqcG9mZiA9ICgqcG9mZiA8PCAyKSAvIHNpemVvZih1bG9uZyk7CisJCQkJcmV0dXJu IDE7CisKKwkJCWRlZmF1bHQ6CisJCQkJcmV0dXJuIDA7CisJCQl9CisKKwkJZGVmYXVsdDoKKwkJ CXJldHVybiAwOworCQl9CiAJfQotCWVsc2UgewotCQltbWkuaGFsZndvcmRbMF0gPSBpcC0+aGFs ZndvcmRbMV07Ci0JCW1taS5oYWxmd29yZFsxXSA9IGlwLT5oYWxmd29yZFswXTsKLQkJcmV0dXJu ICgobW1pLm1tX21fZm9ybWF0Lm9wY29kZSA9PSBtbV9wb29sMzJiX29wICYmCi0JCQkgbW1pLm1t X21fZm9ybWF0LnJkID4gOSAmJgotCQkJIG1taS5tbV9tX2Zvcm1hdC5iYXNlID09IDI5ICYmCi0J CQkgbW1pLm1tX21fZm9ybWF0LmZ1bmMgPT0gbW1fc3dtMzJfZnVuYykgfHwKLQkJCShtbWkuaV9m b3JtYXQub3Bjb2RlID09IG1tX3N3MzJfb3AgJiYKLQkJCSBtbWkuaV9mb3JtYXQucnMgPT0gMjkg JiYKLQkJCSBtbWkuaV9mb3JtYXQucnQgPT0gMzEpKTsKKworCXN3aXRjaCAoaXAtPmlfZm9ybWF0 Lm9wY29kZSkgeworCWNhc2UgbW1fc3czMl9vcDoKKwkJaWYgKGlwLT5pX2Zvcm1hdC5ycyAhPSAy OSkKKwkJCXJldHVybiAwOworCQlpZiAoaXAtPmlfZm9ybWF0LnJ0ICE9IDMxKQorCQkJcmV0dXJu IDA7CisKKwkJKnBvZmYgPSBpcC0+aV9mb3JtYXQuc2ltbWVkaWF0ZSAvIHNpemVvZih1bG9uZyk7 CisJCXJldHVybiAxOworCisJY2FzZSBtbV9wb29sMzJiX29wOgorCQlzd2l0Y2ggKGlwLT5tbV9t X2Zvcm1hdC5mdW5jKSB7CisJCWNhc2UgbW1fc3dtMzJfZnVuYzoKKwkJCWlmIChpcC0+bW1fbV9m b3JtYXQucmQgPCAweDEwKQorCQkJCXJldHVybiAwOworCQkJaWYgKGlwLT5tbV9tX2Zvcm1hdC5i YXNlICE9IDI5KQorCQkJCXJldHVybiAwOworCisJCQkqcG9mZiA9IGlwLT5tbV9tX2Zvcm1hdC5z aW1tZWRpYXRlOworCQkJKnBvZmYgKz0gKGlwLT5tbV9tX2Zvcm1hdC5yZCAmIDB4ZikgKiBzaXpl b2YodTMyKTsKKwkJCSpwb2ZmIC89IHNpemVvZih1bG9uZyk7CisJCQlyZXR1cm4gMTsKKwkJZGVm YXVsdDoKKwkJCXJldHVybiAwOworCQl9CisKKwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKIAl9CiAj ZWxzZQogCS8qIHN3IC8gc2QgJHJhLCBvZmZzZXQoJHNwKSAqLwotCXJldHVybiAoaXAtPmlfZm9y bWF0Lm9wY29kZSA9PSBzd19vcCB8fCBpcC0+aV9mb3JtYXQub3Bjb2RlID09IHNkX29wKSAmJgot CQlpcC0+aV9mb3JtYXQucnMgPT0gMjkgJiYKLQkJaXAtPmlfZm9ybWF0LnJ0ID09IDMxOworCWlm ICgoaXAtPmlfZm9ybWF0Lm9wY29kZSA9PSBzd19vcCB8fCBpcC0+aV9mb3JtYXQub3Bjb2RlID09 IHNkX29wKSAmJgorCQlpcC0+aV9mb3JtYXQucnMgPT0gMjkgJiYgaXAtPmlfZm9ybWF0LnJ0ID09 IDMxKSB7CisJCSpwb2ZmID0gaXAtPmlfZm9ybWF0LnNpbW1lZGlhdGUgLyBzaXplb2YodWxvbmcp OworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKICNlbmRpZgogfQogCkBAIC0yNzQsMTMg KzMxNCwxNiBAQCBzdGF0aWMgaW5saW5lIGludCBpc19qdW1wX2lucyh1bmlvbiBtaXBzX2luc3Ry dWN0aW9uICppcCkKIAkgKgogCSAqIG1pY3JvTUlQUyBpcyBraW5kIG9mIG1vcmUgZnVuLi4uCiAJ ICovCi0JdW5pb24gbWlwc19pbnN0cnVjdGlvbiBtbWk7Ci0KLQltbWkud29yZCA9IChpcC0+aGFs ZndvcmRbMF0gPDwgMTYpOworCWlmIChtbV9pbnNuXzE2Yml0KGlwLT5oYWxmd29yZFsxXSkpIHsK KwkJaWYgKChpcC0+bW0xNl9yNV9mb3JtYXQub3Bjb2RlID09IG1tX3Bvb2wxNmNfb3AgJiYKKwkJ ICAgIChpcC0+bW0xNl9yNV9mb3JtYXQucnQgJiBtbV9qcjE2X29wKSA9PSBtbV9qcjE2X29wKSkK KwkJCXJldHVybiAxOworCQlyZXR1cm4gMDsKKwl9CiAKLQlpZiAoKG1taS5tbTE2X3I1X2Zvcm1h dC5vcGNvZGUgPT0gbW1fcG9vbDE2Y19vcCAmJgotCSAgICAobW1pLm1tMTZfcjVfZm9ybWF0LnJ0 ICYgbW1fanIxNl9vcCkgPT0gbW1fanIxNl9vcCkgfHwKLQkgICAgaXAtPmpfZm9ybWF0Lm9wY29k ZSA9PSBtbV9qYWwzMl9vcCkKKwlpZiAoaXAtPmpfZm9ybWF0Lm9wY29kZSA9PSBtbV9qMzJfb3Ap CisJCXJldHVybiAxOworCWlmIChpcC0+al9mb3JtYXQub3Bjb2RlID09IG1tX2phbDMyX29wKQog CQlyZXR1cm4gMTsKIAlpZiAoaXAtPnJfZm9ybWF0Lm9wY29kZSAhPSBtbV9wb29sMzJhX29wIHx8 CiAJCQlpcC0+cl9mb3JtYXQuZnVuYyAhPSBtbV9wb29sMzJheGZfb3ApCkBAIC0zMDgsMTUgKzM1 MSwxMyBAQCBzdGF0aWMgaW5saW5lIGludCBpc19zcF9tb3ZlX2lucyh1bmlvbiBtaXBzX2luc3Ry dWN0aW9uICppcCkKIAkgKgogCSAqIG1pY3JvTUlQUyBpcyBub3QgbW9yZSBmdW4uLi4KIAkgKi8K LQlpZiAobW1faW5zbl8xNmJpdChpcC0+aGFsZndvcmRbMF0pKSB7Ci0JCXVuaW9uIG1pcHNfaW5z dHJ1Y3Rpb24gbW1pOwotCi0JCW1taS53b3JkID0gKGlwLT5oYWxmd29yZFswXSA8PCAxNik7Ci0J CXJldHVybiAoKG1taS5tbTE2X3IzX2Zvcm1hdC5vcGNvZGUgPT0gbW1fcG9vbDE2ZF9vcCAmJgot CQkJIG1taS5tbTE2X3IzX2Zvcm1hdC5zaW1tZWRpYXRlICYmIG1tX2FkZGl1c3BfZnVuYykgfHwK LQkJCShtbWkubW0xNl9yNV9mb3JtYXQub3Bjb2RlID09IG1tX3Bvb2wxNmRfb3AgJiYKLQkJCSBt bWkubW0xNl9yNV9mb3JtYXQucnQgPT0gMjkpKTsKKwlpZiAobW1faW5zbl8xNmJpdChpcC0+aGFs ZndvcmRbMV0pKSB7CisJCXJldHVybiAoaXAtPm1tMTZfcjNfZm9ybWF0Lm9wY29kZSA9PSBtbV9w b29sMTZkX29wICYmCisJCQlpcC0+bW0xNl9yM19mb3JtYXQuc2ltbWVkaWF0ZSAmJiBtbV9hZGRp dXNwX2Z1bmMpIHx8CisJCSAgICAgICAoaXAtPm1tMTZfcjVfZm9ybWF0Lm9wY29kZSA9PSBtbV9w b29sMTZkX29wICYmCisJCQlpcC0+bW0xNl9yNV9mb3JtYXQucnQgPT0gMjkpOwogCX0KKwogCXJl dHVybiAoaXAtPm1tX2lfZm9ybWF0Lm9wY29kZSA9PSBtbV9hZGRpdTMyX29wICYmCiAJCSBpcC0+ bW1faV9mb3JtYXQucnQgPT0gMjkgJiYgaXAtPm1tX2lfZm9ybWF0LnJzID09IDI5KTsKICNlbHNl CkBAIC0zMzEsMzAgKzM3MiwzNiBAQCBzdGF0aWMgaW5saW5lIGludCBpc19zcF9tb3ZlX2lucyh1 bmlvbiBtaXBzX2luc3RydWN0aW9uICppcCkKIAogc3RhdGljIGludCBnZXRfZnJhbWVfaW5mbyhz dHJ1Y3QgbWlwc19mcmFtZV9pbmZvICppbmZvKQogewotI2lmZGVmIENPTkZJR19DUFVfTUlDUk9N SVBTCi0JdW5pb24gbWlwc19pbnN0cnVjdGlvbiAqaXAgPSAodm9pZCAqKSAoKChjaGFyICopIGlu Zm8tPmZ1bmMpIC0gMSk7Ci0jZWxzZQotCXVuaW9uIG1pcHNfaW5zdHJ1Y3Rpb24gKmlwID0gaW5m by0+ZnVuYzsKLSNlbmRpZgotCXVuc2lnbmVkIG1heF9pbnNucyA9IGluZm8tPmZ1bmNfc2l6ZSAv IHNpemVvZih1bmlvbiBtaXBzX2luc3RydWN0aW9uKTsKLQl1bnNpZ25lZCBpOworCWJvb2wgaXNf bW1pcHMgPSBJU19FTkFCTEVEKENPTkZJR19DUFVfTUlDUk9NSVBTKTsKKwl1bmlvbiBtaXBzX2lu c3RydWN0aW9uIGluc24sICppcCwgKmlwX2VuZDsKKwljb25zdCB1bnNpZ25lZCBpbnQgbWF4X2lu c25zID0gMTI4OworCXVuc2lnbmVkIGludCBpOwogCiAJaW5mby0+cGNfb2Zmc2V0ID0gLTE7CiAJ aW5mby0+ZnJhbWVfc2l6ZSA9IDA7CiAKKwlpcCA9ICh2b2lkICopbXNrX2lzYTE2X21vZGUoKHVs b25nKWluZm8tPmZ1bmMpOwogCWlmICghaXApCiAJCWdvdG8gZXJyOwogCi0JaWYgKG1heF9pbnNu cyA9PSAwKQotCQltYXhfaW5zbnMgPSAxMjhVOwkvKiB1bmtub3duIGZ1bmN0aW9uIHNpemUgKi8K LQltYXhfaW5zbnMgPSBtaW4oMTI4VSwgbWF4X2luc25zKTsKLQotCWZvciAoaSA9IDA7IGkgPCBt YXhfaW5zbnM7IGkrKywgaXArKykgeworCWlwX2VuZCA9ICh2b2lkICopaXAgKyBpbmZvLT5mdW5j X3NpemU7CisKKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2luc25zICYmIGlwIDwgaXBfZW5kOyBpKyss IGlwKyspIHsKKwkJaWYgKGlzX21taXBzICYmIG1tX2luc25fMTZiaXQoaXAtPmhhbGZ3b3JkWzBd KSkgeworCQkJaW5zbi5oYWxmd29yZFswXSA9IDA7CisJCQlpbnNuLmhhbGZ3b3JkWzFdID0gaXAt PmhhbGZ3b3JkWzBdOworCQl9IGVsc2UgaWYgKGlzX21taXBzKSB7CisJCQlpbnNuLmhhbGZ3b3Jk WzBdID0gaXAtPmhhbGZ3b3JkWzFdOworCQkJaW5zbi5oYWxmd29yZFsxXSA9IGlwLT5oYWxmd29y ZFswXTsKKwkJfSBlbHNlIHsKKwkJCWluc24ud29yZCA9IGlwLT53b3JkOworCQl9CiAKLQkJaWYg KGlzX2p1bXBfaW5zKGlwKSkKKwkJaWYgKGlzX2p1bXBfaW5zKCZpbnNuKSkKIAkJCWJyZWFrOwor CiAJCWlmICghaW5mby0+ZnJhbWVfc2l6ZSkgewotCQkJaWYgKGlzX3NwX21vdmVfaW5zKGlwKSkK KwkJCWlmIChpc19zcF9tb3ZlX2lucygmaW5zbikpCiAJCQl7CiAjaWZkZWYgQ09ORklHX0NQVV9N SUNST01JUFMKIAkJCQlpZiAobW1faW5zbl8xNmJpdChpcC0+aGFsZndvcmRbMF0pKQpAQCAtMzc3 LDExICs0MjQsOSBAQCBzdGF0aWMgaW50IGdldF9mcmFtZV9pbmZvKHN0cnVjdCBtaXBzX2ZyYW1l X2luZm8gKmluZm8pCiAJCQl9CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAoaW5mby0+cGNfb2Zm c2V0ID09IC0xICYmIGlzX3JhX3NhdmVfaW5zKGlwKSkgewotCQkJaW5mby0+cGNfb2Zmc2V0ID0K LQkJCQlpcC0+aV9mb3JtYXQuc2ltbWVkaWF0ZSAvIHNpemVvZihsb25nKTsKKwkJaWYgKGluZm8t PnBjX29mZnNldCA9PSAtMSAmJgorCQkgICAgaXNfcmFfc2F2ZV9pbnMoJmluc24sICZpbmZvLT5w Y19vZmZzZXQpKQogCQkJYnJlYWs7Ci0JCX0KIAl9CiAJaWYgKGluZm8tPmZyYW1lX3NpemUgJiYg aW5mby0+cGNfb2Zmc2V0ID49IDApIC8qIG5lc3RlZCAqLwogCQlyZXR1cm4gMDsKZGlmZiAtLWdp dCBhL2FyY2gvbWlwcy9uZXRsb2dpYy9jb21tb24vc21wYm9vdC5TIGIvYXJjaC9taXBzL25ldGxv Z2ljL2NvbW1vbi9zbXBib290LlMKaW5kZXggODA1MzU1YjBiZDA1Li5kZWVhYzEyNDNiYzIgMTAw NjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXRsb2dpYy9jb21tb24vc21wYm9vdC5TCisrKyBiL2FyY2gv bWlwcy9uZXRsb2dpYy9jb21tb24vc21wYm9vdC5TCkBAIC02MSw4ICs2MSw4IEBAIE5FU1RFRCh4 bHBfYm9vdF9jb3JlMF9zaWJsaW5ncywgUFRfU0laRSwgc3ApCiAJc3luYwogCS8qIGZpbmQgdGhl IGxvY2F0aW9uIHRvIHdoaWNoIG5sbV9ib290X3NpYmxpbmdzIHdhcyByZWxvY2F0ZWQgKi8KIAls aQl0MCwgQ0tTRUcxQUREUihSRVNFVF9WRUNfUEhZUykKLQlkbGEJdDEsIG5sbV9yZXNldF9lbnRy eQotCWRsYQl0MiwgbmxtX2Jvb3Rfc2libGluZ3MKKwlQVFJfTEEJdDEsIG5sbV9yZXNldF9lbnRy eQorCVBUUl9MQQl0MiwgbmxtX2Jvb3Rfc2libGluZ3MKIAlkc3VidQl0MiwgdDEKIAlkYWRkdQl0 MiwgdDAKIAkvKiBjYWxsIGl0ICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2h3 X2JyZWFrcG9pbnQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaHdfYnJlYWtwb2ludC5jCmluZGV4 IDBiYjU5MThmYWFhZi4uODM5YjdjZDFlZGM5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2Vy bmVsL2h3X2JyZWFrcG9pbnQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2h3X2JyZWFrcG9p bnQuYwpAQCAtMjI3LDggKzIyNywxMCBAQCBpbnQgX19rcHJvYmVzIGh3X2JyZWFrcG9pbnRfaGFu ZGxlcihzdHJ1Y3QgZGllX2FyZ3MgKmFyZ3MpCiAJcmN1X3JlYWRfbG9jaygpOwogCiAJYnAgPSBf X2dldF9jcHVfdmFyKGJwX3Blcl9yZWcpOwotCWlmICghYnApCisJaWYgKCFicCkgeworCQlyYyA9 IE5PVElGWV9ET05FOwogCQlnb3RvIG91dDsKKwl9CiAJaW5mbyA9IGNvdW50ZXJfYXJjaF9icChi cCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jIGIvYXJjaC9z MzkwL2t2bS9rdm0tczM5MC5jCmluZGV4IGZkOGE4MzczYzI3NS4uZGNmNzVkZmQ0NTgzIDEwMDY0 NAotLS0gYS9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMKKysrIGIvYXJjaC9zMzkwL2t2bS9rdm0t czM5MC5jCkBAIC0yMTYsNiArMjE2LDkgQEAgaW50IGt2bV92bV9pb2N0bF9nZXRfZGlydHlfbG9n KHN0cnVjdCBrdm0gKmt2bSwKIAlzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90OwogCWlu dCBpc19kaXJ0eSA9IDA7CiAKKwlpZiAoa3ZtX2lzX3Vjb250cm9sKGt2bSkpCisJCXJldHVybiAt RUlOVkFMOworCiAJbXV0ZXhfbG9jaygma3ZtLT5zbG90c19sb2NrKTsKIAogCXIgPSAtRUlOVkFM OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9oeXBlcnYuaCBiL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vaHlwZXJ2LmgKaW5kZXggNDYyZWZlNzQ2ZDc3Li43YzY2MzRk ZDQyYzYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vaHlwZXJ2LmgKKysr IGIvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9oeXBlcnYuaApAQCAtMjE0LDYgKzIxNCw4IEBA CiAjZGVmaW5lIEhWX1NUQVRVU19JTlZBTElEX0hZUEVSQ0FMTF9DT0RFCTIKICNkZWZpbmUgSFZf U1RBVFVTX0lOVkFMSURfSFlQRVJDQUxMX0lOUFVUCTMKICNkZWZpbmUgSFZfU1RBVFVTX0lOVkFM SURfQUxJR05NRU5UCQk0CisjZGVmaW5lIEhWX1NUQVRVU19JTlNVRkZJQ0lFTlRfTUVNT1JZCQkx MQorI2RlZmluZSBIVl9TVEFUVVNfSU5WQUxJRF9DT05ORUNUSU9OX0lECQkxOAogI2RlZmluZSBI Vl9TVEFUVVNfSU5TVUZGSUNJRU5UX0JVRkZFUlMJCTE5CiAKIHR5cGVkZWYgc3RydWN0IF9IVl9S RUZFUkVOQ0VfVFNDX1BBR0UgewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3BjaS1jYWxn YXJ5XzY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvcGNpLWNhbGdhcnlfNjQuYwppbmRleCAwNDk3Zjcx OTk3N2QuLmMwNTVlOWE0ZTU0NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3BjaS1jYWxn YXJ5XzY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL3BjaS1jYWxnYXJ5XzY0LmMKQEAgLTI5Niw3 ICsyOTYsNyBAQCBzdGF0aWMgdm9pZCBpb21tdV9mcmVlKHN0cnVjdCBpb21tdV90YWJsZSAqdGJs LCBkbWFfYWRkcl90IGRtYV9hZGRyLAogCiAJLyogd2VyZSB3ZSBjYWxsZWQgd2l0aCBiYWRfZG1h X2FkZHJlc3M/ICovCiAJYmFkZW5kID0gRE1BX0VSUk9SX0NPREUgKyAoRU1FUkdFTkNZX1BBR0VT ICogUEFHRV9TSVpFKTsKLQlpZiAodW5saWtlbHkoKGRtYV9hZGRyID49IERNQV9FUlJPUl9DT0RF KSAmJiAoZG1hX2FkZHIgPCBiYWRlbmQpKSkgeworCWlmICh1bmxpa2VseShkbWFfYWRkciA8IGJh ZGVuZCkpIHsKIAkJV0FSTigxLCBLRVJOX0VSUiAiQ2FsZ2FyeTogZHJpdmVyIHRyaWVkIHVubWFw cGluZyBiYWQgRE1BICIKIAkJICAgICAgICJhZGRyZXNzIDB4JUx4XG4iLCBkbWFfYWRkcik7CiAJ CXJldHVybjsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBiL2FyY2gveDg2L2t2bS92 bXguYwppbmRleCBkYWQ5NDUzODY4MDAuLmQ1NWQ3YjUxOGNkYyAxMDA2NDQKLS0tIGEvYXJjaC94 ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtMzIzMSw3ICszMjMxLDcg QEAgc3RhdGljIHZvaWQgZml4X3Jtb2RlX3NlZyhpbnQgc2VnLCBzdHJ1Y3Qga3ZtX3NlZ21lbnQg KnNhdmUpCiAJfQogCiAJdm1jc193cml0ZTE2KHNmLT5zZWxlY3RvciwgdmFyLnNlbGVjdG9yKTsK LQl2bWNzX3dyaXRlMzIoc2YtPmJhc2UsIHZhci5iYXNlKTsKKwl2bWNzX3dyaXRlbChzZi0+YmFz ZSwgdmFyLmJhc2UpOwogCXZtY3Nfd3JpdGUzMihzZi0+bGltaXQsIHZhci5saW1pdCk7CiAJdm1j c193cml0ZTMyKHNmLT5hcl9ieXRlcywgdm14X3NlZ21lbnRfYWNjZXNzX3JpZ2h0cygmdmFyKSk7 CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9wbGF0Zm9ybS9nb2xkZmlzaC9nb2xkZmlzaC5jIGIv YXJjaC94ODYvcGxhdGZvcm0vZ29sZGZpc2gvZ29sZGZpc2guYwppbmRleCAxNjkzMTA3YTUxOGUu LjBkMTdjMGFhZmViMSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvcGxhdGZvcm0vZ29sZGZpc2gvZ29s ZGZpc2guYworKysgYi9hcmNoL3g4Ni9wbGF0Zm9ybS9nb2xkZmlzaC9nb2xkZmlzaC5jCkBAIC00 MiwxMCArNDIsMjIgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSBnb2xkZmlzaF9wZGV2X2J1c19y ZXNvdXJjZXNbXSA9IHsKIAl9CiB9OwogCitzdGF0aWMgYm9vbCBnb2xkZmlzaF9lbmFibGUgX19p bml0ZGF0YTsKKworc3RhdGljIGludCBfX2luaXQgZ29sZGZpc2hfc2V0dXAoY2hhciAqc3RyKQor eworCWdvbGRmaXNoX2VuYWJsZSA9IHRydWU7CisJcmV0dXJuIDA7Cit9CitfX3NldHVwKCJnb2xk ZmlzaCIsIGdvbGRmaXNoX3NldHVwKTsKKwogc3RhdGljIGludCBfX2luaXQgZ29sZGZpc2hfaW5p dCh2b2lkKQogeworCWlmICghZ29sZGZpc2hfZW5hYmxlKQorCQlyZXR1cm4gLUVOT0RFVjsKKwog CXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoImdvbGRmaXNoX3BkZXZfYnVzIiwgLTEs Ci0JCQkJCQlnb2xkZmlzaF9wZGV2X2J1c19yZXNvdXJjZXMsIDIpOworCQkJCQlnb2xkZmlzaF9w ZGV2X2J1c19yZXNvdXJjZXMsIDIpOwogCXJldHVybiAwOwogfQogZGV2aWNlX2luaXRjYWxsKGdv bGRmaXNoX2luaXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC94dGVuc2Eva2VybmVsL3NldHVwLmMgYi9h cmNoL3h0ZW5zYS9rZXJuZWwvc2V0dXAuYwppbmRleCBlZDViOGI5YjhkOTYuLjA4ZjhkYTBkNjQ0 MyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Eva2VybmVsL3NldHVwLmMKKysrIGIvYXJjaC94dGVu c2Eva2VybmVsL3NldHVwLmMKQEAgLTEzMyw2ICsxMzMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBw YXJzZV90YWdfaW5pdHJkKGNvbnN0IGJwX3RhZ190KiB0YWcpCiAKIF9fdGFndGFibGUoQlBfVEFH X0lOSVRSRCwgcGFyc2VfdGFnX2luaXRyZCk7CiAKKyNlbmRpZiAvKiBDT05GSUdfQkxLX0RFVl9J TklUUkQgKi8KKwogI2lmZGVmIENPTkZJR19PRgogCiBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV90 YWdfZmR0KGNvbnN0IGJwX3RhZ190ICp0YWcpCkBAIC0xNDUsOCArMTQ3LDYgQEAgX190YWd0YWJs ZShCUF9UQUdfRkRULCBwYXJzZV90YWdfZmR0KTsKIAogI2VuZGlmIC8qIENPTkZJR19PRiAqLwog Ci0jZW5kaWYgLyogQ09ORklHX0JMS19ERVZfSU5JVFJEICovCi0KIHN0YXRpYyBpbnQgX19pbml0 IHBhcnNlX3RhZ19jbWRsaW5lKGNvbnN0IGJwX3RhZ190KiB0YWcpCiB7CiAJc3RybGNweShjb21t YW5kX2xpbmUsIChjaGFyICopKHRhZy0+ZGF0YSksIENPTU1BTkRfTElORV9TSVpFKTsKZGlmZiAt LWdpdCBhL2Jsb2NrL2Jsay1tcS10YWcuYyBiL2Jsb2NrL2Jsay1tcS10YWcuYwppbmRleCBiODhm NGIzNzVjMjcuLmIzNzEyNWUyYzdkYyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLXRhZy5jCisr KyBiL2Jsb2NrL2Jsay1tcS10YWcuYwpAQCAtMzQwLDYgKzM0MCw3IEBAIHN0YXRpYyB2b2lkIGJ0 X2NsZWFyX3RhZyhzdHJ1Y3QgYmxrX21xX2JpdG1hcF90YWdzICpidCwgdW5zaWduZWQgaW50IHRh ZykKIHsKIAljb25zdCBpbnQgaW5kZXggPSBUQUdfVE9fSU5ERVgoYnQsIHRhZyk7CiAJc3RydWN0 IGJ0X3dhaXRfc3RhdGUgKmJzOworCXVuc2lnbmVkIGludCB3YWtlX2JhdGNoOwogCWludCB3YWl0 X2NudDsKIAogCWNsZWFyX2JpdChUQUdfVE9fQklUKGJ0LCB0YWcpLCAmYnQtPm1hcFtpbmRleF0u d29yZCk7CkBAIC0zNTIsMTUgKzM1MywyNCBAQCBzdGF0aWMgdm9pZCBidF9jbGVhcl90YWcoc3Ry dWN0IGJsa19tcV9iaXRtYXBfdGFncyAqYnQsIHVuc2lnbmVkIGludCB0YWcpCiAJCXJldHVybjsK IAogCXdhaXRfY250ID0gYXRvbWljX2RlY19yZXR1cm4oJmJzLT53YWl0X2NudCk7Ci0JaWYgKHdh aXRfY250ID09IDApIHsKLXdha2U6Ci0JCWF0b21pY19hZGQoYnQtPndha2VfY250LCAmYnMtPndh aXRfY250KTsKKwlpZiAod2FpdF9jbnQgPD0gMCkgeworCQl3YWtlX2JhdGNoID0gQUNDRVNTX09O Q0UoYnQtPndha2VfY250KTsKKwkJLyoKKwkJICogUGFpcnMgd2l0aCB0aGUgbWVtb3J5IGJhcnJp ZXIgaW4gYnRfdXBkYXRlX2NvdW50KCkgdG8KKwkJICogZW5zdXJlIHRoYXQgd2Ugc2VlIHRoZSBi YXRjaCBzaXplIHVwZGF0ZSBiZWZvcmUgdGhlIHdhaXQKKwkJICogY291bnQgaXMgcmVzZXQuCisJ CSAqLworCQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKKwkJLyoKKwkJICogSWYgdGhlcmUgYXJl IGNvbmN1cnJlbnQgY2FsbGVycyB0byBidF9jbGVhcl90YWcoKSwgdGhlIGxhc3QKKwkJICogb25l IHRvIGRlY3JlbWVudCB0aGUgd2FpdCBjb3VudCBiZWxvdyB6ZXJvIHdpbGwgYnVtcCBpdCBiYWNr CisJCSAqIHVwLiBJZiB0aGVyZSBpcyBhIGNvbmN1cnJlbnQgcmVzaXplLCB0aGUgY291bnQgcmVz ZXQgd2lsbAorCQkgKiBlaXRoZXIgY2F1c2UgdGhlIGNtcHhjaGcgdG8gZmFpbCBvciBvdmVyd3Jp dGUgYWZ0ZXIgdGhlCisJCSAqIGNtcHhjaGcuCisJCSAqLworCQlhdG9taWNfY21weGNoZygmYnMt PndhaXRfY250LCB3YWl0X2NudCwgd2FpdF9jbnQgKyB3YWtlX2JhdGNoKTsKIAkJYnRfaW5kZXhf YXRvbWljX2luYygmYnQtPndha2VfaW5kZXgpOwogCQl3YWtlX3VwKCZicy0+d2FpdCk7Ci0JfSBl bHNlIGlmICh3YWl0X2NudCA8IDApIHsKLQkJd2FpdF9jbnQgPSBhdG9taWNfaW5jX3JldHVybigm YnMtPndhaXRfY250KTsKLQkJaWYgKCF3YWl0X2NudCkKLQkJCWdvdG8gd2FrZTsKIAl9CiB9CiAK QEAgLTQ1MywyMCArNDYzLDMwIEBAIHN0YXRpYyB2b2lkIGJ0X3VwZGF0ZV9jb3VudChzdHJ1Y3Qg YmxrX21xX2JpdG1hcF90YWdzICpidCwKIHsKIAl1bnNpZ25lZCBpbnQgdGFnc19wZXJfd29yZCA9 IDFVIDw8IGJ0LT5iaXRzX3Blcl93b3JkOwogCXVuc2lnbmVkIGludCBtYXBfZGVwdGggPSBkZXB0 aDsKKwl1bnNpZ25lZCBpbnQgd2FrZV9iYXRjaDsKKwlpbnQgaTsKIAogCWlmIChkZXB0aCkgewot CQlpbnQgaTsKLQogCQlmb3IgKGkgPSAwOyBpIDwgYnQtPm1hcF9ucjsgaSsrKSB7CiAJCQlidC0+ bWFwW2ldLmRlcHRoID0gbWluKG1hcF9kZXB0aCwgdGFnc19wZXJfd29yZCk7CiAJCQltYXBfZGVw dGggLT0gYnQtPm1hcFtpXS5kZXB0aDsKIAkJfQogCX0KIAotCWJ0LT53YWtlX2NudCA9IEJUX1dB SVRfQkFUQ0g7Ci0JaWYgKGJ0LT53YWtlX2NudCA+IGRlcHRoIC8gQlRfV0FJVF9RVUVVRVMpCi0J CWJ0LT53YWtlX2NudCA9IG1heCgxVSwgZGVwdGggLyBCVF9XQUlUX1FVRVVFUyk7CisJd2FrZV9i YXRjaCA9IEJUX1dBSVRfQkFUQ0g7CisJaWYgKHdha2VfYmF0Y2ggPiBkZXB0aCAvIEJUX1dBSVRf UVVFVUVTKQorCQl3YWtlX2JhdGNoID0gbWF4KDFVLCBkZXB0aCAvIEJUX1dBSVRfUVVFVUVTKTsK IAorCWlmIChidC0+d2FrZV9jbnQgIT0gd2FrZV9iYXRjaCkgeworCQlBQ0NFU1NfT05DRShidC0+ d2FrZV9jbnQpID0gd2FrZV9iYXRjaDsKKwkJLyoKKwkJICogUGFpcnMgd2l0aCB0aGUgbWVtb3J5 IGJhcnJpZXIgaW4gYnRfY2xlYXJfdGFnKCkgdG8gZW5zdXJlCisJCSAqIHRoYXQgdGhlIGJhdGNo IHNpemUgaXMgdXBkYXRlZCBiZWZvcmUgdGhlIHdhaXQgY291bnRzLgorCQkgKi8KKwkJc21wX21i X19iZWZvcmVfYXRvbWljKCk7CisJCWZvciAoaSA9IDA7IGkgPCBCVF9XQUlUX1FVRVVFUzsgaSsr KQorCQkJYXRvbWljX3NldCgmYnQtPmJzW2ldLndhaXRfY250LCAxKTsKKwl9CiAJYnQtPmRlcHRo ID0gZGVwdGg7CiB9CiAKZGlmZiAtLWdpdCBhL2NyeXB0by9haGFzaC5jIGIvY3J5cHRvL2FoYXNo LmMKaW5kZXggOGEyNWZkYWZhOTdmLi5jMjk4Mjk1OGEyYTAgMTAwNjQ0Ci0tLSBhL2NyeXB0by9h aGFzaC5jCisrKyBiL2NyeXB0by9haGFzaC5jCkBAIC0zMSw2ICszMSw3IEBAIHN0cnVjdCBhaGFz aF9yZXF1ZXN0X3ByaXYgewogCWNyeXB0b19jb21wbGV0aW9uX3QgY29tcGxldGU7CiAJdm9pZCAq ZGF0YTsKIAl1OCAqcmVzdWx0OworCXUzMiBmbGFnczsKIAl2b2lkICp1YnVmW10gQ1JZUFRPX01J TkFMSUdOX0FUVFI7CiB9OwogCkBAIC0yNjMsNiArMjY0LDggQEAgc3RhdGljIGludCBhaGFzaF9z YXZlX3JlcShzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxLCBjcnlwdG9fY29tcGxldGlvbl90IGNw bHQpCiAJcHJpdi0+cmVzdWx0ID0gcmVxLT5yZXN1bHQ7CiAJcHJpdi0+Y29tcGxldGUgPSByZXEt PmJhc2UuY29tcGxldGU7CiAJcHJpdi0+ZGF0YSA9IHJlcS0+YmFzZS5kYXRhOworCXByaXYtPmZs YWdzID0gcmVxLT5iYXNlLmZsYWdzOworCiAJLyoKIAkgKiBXQVJOSU5HOiBXZSBkbyBub3QgYmFj a3VwIHJlcS0+cHJpdiBoZXJlISBUaGUgcmVxLT5wcml2CiAJICogICAgICAgICAgaXMgZm9yIGlu dGVybmFsIHVzZSBvZiB0aGUgQ3J5cHRvIEFQSSBhbmQgdGhlCkBAIC0yNzcsMzggKzI4MCw0NCBA QCBzdGF0aWMgaW50IGFoYXNoX3NhdmVfcmVxKHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEsIGNy eXB0b19jb21wbGV0aW9uX3QgY3BsdCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgYWhh c2hfcmVzdG9yZV9yZXEoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3N0YXRpYyB2b2lkIGFo YXNoX3Jlc3RvcmVfcmVxKHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEsIGludCBlcnIpCiB7CiAJ c3RydWN0IGFoYXNoX3JlcXVlc3RfcHJpdiAqcHJpdiA9IHJlcS0+cHJpdjsKIAorCWlmICghZXJy KQorCQltZW1jcHkocHJpdi0+cmVzdWx0LCByZXEtPnJlc3VsdCwKKwkJICAgICAgIGNyeXB0b19h aGFzaF9kaWdlc3RzaXplKGNyeXB0b19haGFzaF9yZXF0Zm0ocmVxKSkpOworCiAJLyogUmVzdG9y ZSB0aGUgb3JpZ2luYWwgY3J5cHRvIHJlcXVlc3QuICovCiAJcmVxLT5yZXN1bHQgPSBwcml2LT5y ZXN1bHQ7Ci0JcmVxLT5iYXNlLmNvbXBsZXRlID0gcHJpdi0+Y29tcGxldGU7Ci0JcmVxLT5iYXNl LmRhdGEgPSBwcml2LT5kYXRhOworCisJYWhhc2hfcmVxdWVzdF9zZXRfY2FsbGJhY2socmVxLCBw cml2LT5mbGFncywKKwkJCQkgICBwcml2LT5jb21wbGV0ZSwgcHJpdi0+ZGF0YSk7CiAJcmVxLT5w cml2ID0gTlVMTDsKIAogCS8qIEZyZWUgdGhlIHJlcS0+cHJpdi5wcml2IGZyb20gdGhlIEFESlVT VEVEIHJlcXVlc3QuICovCiAJa3pmcmVlKHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBhaGFzaF9v cF91bmFsaWduZWRfZmluaXNoKHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEsIGludCBlcnIpCitz dGF0aWMgdm9pZCBhaGFzaF9ub3RpZnlfZWlucHJvZ3Jlc3Moc3RydWN0IGFoYXNoX3JlcXVlc3Qg KnJlcSkKIHsKIAlzdHJ1Y3QgYWhhc2hfcmVxdWVzdF9wcml2ICpwcml2ID0gcmVxLT5wcml2Owor CXN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCBvcmVxOwogCi0JaWYgKGVyciA9PSAtRUlOUFJP R1JFU1MpCi0JCXJldHVybjsKLQotCWlmICghZXJyKQotCQltZW1jcHkocHJpdi0+cmVzdWx0LCBy ZXEtPnJlc3VsdCwKLQkJICAgICAgIGNyeXB0b19haGFzaF9kaWdlc3RzaXplKGNyeXB0b19haGFz aF9yZXF0Zm0ocmVxKSkpOworCW9yZXEuZGF0YSA9IHByaXYtPmRhdGE7CiAKLQlhaGFzaF9yZXN0 b3JlX3JlcShyZXEpOworCXByaXYtPmNvbXBsZXRlKCZvcmVxLCAtRUlOUFJPR1JFU1MpOwogfQog CiBzdGF0aWMgdm9pZCBhaGFzaF9vcF91bmFsaWduZWRfZG9uZShzdHJ1Y3QgY3J5cHRvX2FzeW5j X3JlcXVlc3QgKnJlcSwgaW50IGVycikKIHsKIAlzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqYXJlcSA9 IHJlcS0+ZGF0YTsKIAorCWlmIChlcnIgPT0gLUVJTlBST0dSRVNTKSB7CisJCWFoYXNoX25vdGlm eV9laW5wcm9ncmVzcyhhcmVxKTsKKwkJcmV0dXJuOworCX0KKwogCS8qCiAJICogUmVzdG9yZSB0 aGUgb3JpZ2luYWwgcmVxdWVzdCwgc2VlIGFoYXNoX29wX3VuYWxpZ25lZCgpIGZvciB3aGF0CiAJ ICogZ29lcyB3aGVyZS4KQEAgLTMxOSw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCBhaGFzaF9vcF91 bmFsaWduZWRfZG9uZShzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKnJlcSwgaW50IGVycikK IAkgKi8KIAogCS8qIEZpcnN0IGNvcHkgcmVxLT5yZXN1bHQgaW50byByZXEtPnByaXYucmVzdWx0 ICovCi0JYWhhc2hfb3BfdW5hbGlnbmVkX2ZpbmlzaChhcmVxLCBlcnIpOworCWFoYXNoX3Jlc3Rv cmVfcmVxKGFyZXEsIGVycik7CiAKIAkvKiBDb21wbGV0ZSB0aGUgT1JJR0lOQUwgcmVxdWVzdC4g Ki8KIAlhcmVxLT5iYXNlLmNvbXBsZXRlKCZhcmVxLT5iYXNlLCBlcnIpOwpAQCAtMzM1LDcgKzM0 NCwxMiBAQCBzdGF0aWMgaW50IGFoYXNoX29wX3VuYWxpZ25lZChzdHJ1Y3QgYWhhc2hfcmVxdWVz dCAqcmVxLAogCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gb3AocmVxKTsKLQlhaGFzaF9vcF91bmFs aWduZWRfZmluaXNoKHJlcSwgZXJyKTsKKwlpZiAoZXJyID09IC1FSU5QUk9HUkVTUyB8fAorCSAg ICAoZXJyID09IC1FQlVTWSAmJiAoYWhhc2hfcmVxdWVzdF9mbGFncyhyZXEpICYKKwkJCSAgICAg ICBDUllQVE9fVEZNX1JFUV9NQVlfQkFDS0xPRykpKQorCQlyZXR1cm4gZXJyOworCisJYWhhc2hf cmVzdG9yZV9yZXEocmVxLCBlcnIpOwogCiAJcmV0dXJuIGVycjsKIH0KQEAgLTM3MCwyNSArMzg0 LDE0IEBAIGludCBjcnlwdG9fYWhhc2hfZGlnZXN0KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEp CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fYWhhc2hfZGlnZXN0KTsKIAotc3RhdGljIHZv aWQgYWhhc2hfZGVmX2ZpbnVwX2ZpbmlzaDIoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwgaW50 IGVycikKK3N0YXRpYyB2b2lkIGFoYXNoX2RlZl9maW51cF9kb25lMihzdHJ1Y3QgY3J5cHRvX2Fz eW5jX3JlcXVlc3QgKnJlcSwgaW50IGVycikKIHsKLQlzdHJ1Y3QgYWhhc2hfcmVxdWVzdF9wcml2 ICpwcml2ID0gcmVxLT5wcml2OworCXN0cnVjdCBhaGFzaF9yZXF1ZXN0ICphcmVxID0gcmVxLT5k YXRhOwogCiAJaWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpCiAJCXJldHVybjsKIAotCWlmICghZXJy KQotCQltZW1jcHkocHJpdi0+cmVzdWx0LCByZXEtPnJlc3VsdCwKLQkJICAgICAgIGNyeXB0b19h aGFzaF9kaWdlc3RzaXplKGNyeXB0b19haGFzaF9yZXF0Zm0ocmVxKSkpOwotCi0JYWhhc2hfcmVz dG9yZV9yZXEocmVxKTsKLX0KLQotc3RhdGljIHZvaWQgYWhhc2hfZGVmX2ZpbnVwX2RvbmUyKHN0 cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAqcmVxLCBpbnQgZXJyKQotewotCXN0cnVjdCBhaGFz aF9yZXF1ZXN0ICphcmVxID0gcmVxLT5kYXRhOwotCi0JYWhhc2hfZGVmX2ZpbnVwX2ZpbmlzaDIo YXJlcSwgZXJyKTsKKwlhaGFzaF9yZXN0b3JlX3JlcShhcmVxLCBlcnIpOwogCiAJYXJlcS0+YmFz ZS5jb21wbGV0ZSgmYXJlcS0+YmFzZSwgZXJyKTsKIH0KQEAgLTM5OSwxMSArNDAyLDE1IEBAIHN0 YXRpYyBpbnQgYWhhc2hfZGVmX2ZpbnVwX2ZpbmlzaDEoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJl cSwgaW50IGVycikKIAkJZ290byBvdXQ7CiAKIAlyZXEtPmJhc2UuY29tcGxldGUgPSBhaGFzaF9k ZWZfZmludXBfZG9uZTI7Ci0JcmVxLT5iYXNlLmZsYWdzICY9IH5DUllQVE9fVEZNX1JFUV9NQVlf U0xFRVA7CisKIAllcnIgPSBjcnlwdG9fYWhhc2hfcmVxdGZtKHJlcSktPmZpbmFsKHJlcSk7CisJ aWYgKGVyciA9PSAtRUlOUFJPR1JFU1MgfHwKKwkgICAgKGVyciA9PSAtRUJVU1kgJiYgKGFoYXNo X3JlcXVlc3RfZmxhZ3MocmVxKSAmCisJCQkgICAgICAgQ1JZUFRPX1RGTV9SRVFfTUFZX0JBQ0tM T0cpKSkKKwkJcmV0dXJuIGVycjsKIAogb3V0OgotCWFoYXNoX2RlZl9maW51cF9maW5pc2gyKHJl cSwgZXJyKTsKKwlhaGFzaF9yZXN0b3JlX3JlcShyZXEsIGVycik7CiAJcmV0dXJuIGVycjsKIH0K IApAQCAtNDExLDcgKzQxOCwxNiBAQCBzdGF0aWMgdm9pZCBhaGFzaF9kZWZfZmludXBfZG9uZTEo c3RydWN0IGNyeXB0b19hc3luY19yZXF1ZXN0ICpyZXEsIGludCBlcnIpCiB7CiAJc3RydWN0IGFo YXNoX3JlcXVlc3QgKmFyZXEgPSByZXEtPmRhdGE7CiAKKwlpZiAoZXJyID09IC1FSU5QUk9HUkVT UykgeworCQlhaGFzaF9ub3RpZnlfZWlucHJvZ3Jlc3MoYXJlcSk7CisJCXJldHVybjsKKwl9CisK KwlhcmVxLT5iYXNlLmZsYWdzICY9IH5DUllQVE9fVEZNX1JFUV9NQVlfU0xFRVA7CisKIAllcnIg PSBhaGFzaF9kZWZfZmludXBfZmluaXNoMShhcmVxLCBlcnIpOworCWlmIChhcmVxLT5wcml2KQor CQlyZXR1cm47CiAKIAlhcmVxLT5iYXNlLmNvbXBsZXRlKCZhcmVxLT5iYXNlLCBlcnIpOwogfQpA QCAtNDI2LDYgKzQ0MiwxMSBAQCBzdGF0aWMgaW50IGFoYXNoX2RlZl9maW51cChzdHJ1Y3QgYWhh c2hfcmVxdWVzdCAqcmVxKQogCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gdGZtLT51cGRhdGUocmVx KTsKKwlpZiAoZXJyID09IC1FSU5QUk9HUkVTUyB8fAorCSAgICAoZXJyID09IC1FQlVTWSAmJiAo YWhhc2hfcmVxdWVzdF9mbGFncyhyZXEpICYKKwkJCSAgICAgICBDUllQVE9fVEZNX1JFUV9NQVlf QkFDS0xPRykpKQorCQlyZXR1cm4gZXJyOworCiAJcmV0dXJuIGFoYXNoX2RlZl9maW51cF9maW5p c2gxKHJlcSwgZXJyKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL3Bvd2VyL3Fvcy5j IGIvZHJpdmVycy9iYXNlL3Bvd2VyL3Fvcy5jCmluZGV4IDM2YjllYjQ4NjJjYi4uNjQ0NThkN2Uw NjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvcG93ZXIvcW9zLmMKKysrIGIvZHJpdmVycy9i YXNlL3Bvd2VyL3Fvcy5jCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBkZXZfcG1fcW9zX2NvbnN0 cmFpbnRzX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2KQogCWRldi0+cG93ZXIucW9zID0gRVJS X1BUUigtRU5PREVWKTsKIAlzcGluX3VubG9ja19pcnEoJmRldi0+cG93ZXIubG9jayk7CiAKLQlr ZnJlZShjLT5ub3RpZmllcnMpOworCWtmcmVlKHFvcy0+cmVzdW1lX2xhdGVuY3kubm90aWZpZXJz KTsKIAlrZnJlZShxb3MpOwogCiAgb3V0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iY21hL21haW4u YyBiL2RyaXZlcnMvYmNtYS9tYWluLmMKaW5kZXggMzRlYTRjNTg4ZDM2Li5mMzcxMDE5OTI1YTIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmNtYS9tYWluLmMKKysrIGIvZHJpdmVycy9iY21hL21haW4u YwpAQCAtNDUwLDggKzQ1MCwxMSBAQCBzdGF0aWMgaW50IGJjbWFfZGV2aWNlX3Byb2JlKHN0cnVj dCBkZXZpY2UgKmRldikKIAkJCQkJICAgICAgIGRydik7CiAJaW50IGVyciA9IDA7CiAKKwlnZXRf ZGV2aWNlKGRldik7CiAJaWYgKGFkcnYtPnByb2JlKQogCQllcnIgPSBhZHJ2LT5wcm9iZShjb3Jl KTsKKwlpZiAoZXJyKQorCQlwdXRfZGV2aWNlKGRldik7CiAKIAlyZXR1cm4gZXJyOwogfQpAQCAt NDY0LDYgKzQ2Nyw3IEBAIHN0YXRpYyBpbnQgYmNtYV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZp Y2UgKmRldikKIAogCWlmIChhZHJ2LT5yZW1vdmUpCiAJCWFkcnYtPnJlbW92ZShjb3JlKTsKKwlw dXRfZGV2aWNlKGRldik7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1 ZXRvb3RoL2F0aDNrLmMgYi9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5jCmluZGV4IDFhZjlmZDMy MDJjMS4uN2IzZjAyYmI4MTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5j CisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMKQEAgLTk0LDYgKzk0LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGF0aDNrX3RhYmxlW10gPSB7CiAJeyBVU0JfREVW SUNFKDB4MDRDQSwgMHgzMDBmKSB9LAogCXsgVVNCX0RFVklDRSgweDA0Q0EsIDB4MzAxMCkgfSwK IAl7IFVTQl9ERVZJQ0UoMHgwNENBLCAweDMwMTQpIH0sCisJeyBVU0JfREVWSUNFKDB4MDRDQSwg MHgzMDE4KSB9LAogCXsgVVNCX0RFVklDRSgweDA5MzAsIDB4MDIxOSkgfSwKIAl7IFVTQl9ERVZJ Q0UoMHgwOTMwLCAweDAyMWMpIH0sCiAJeyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwMjIwKSB9LApA QCAtMTYyLDYgKzE2Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgz a19ibGlzdF90YmxbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoMHgwNGNhLCAweDMwMGYpLCAuZHJpdmVy X2luZm8gPSBCVFVTQl9BVEgzMDEyIH0sCiAJeyBVU0JfREVWSUNFKDB4MDRjYSwgMHgzMDEwKSwg LmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAogCXsgVVNCX0RFVklDRSgweDA0Y2EsIDB4 MzAxNCksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKKwl7IFVTQl9ERVZJQ0UoMHgw NGNhLCAweDMwMTgpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgzMDEyIH0sCiAJeyBVU0JfREVW SUNFKDB4MDkzMCwgMHgwMjE5KSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAogCXsg VVNCX0RFVklDRSgweDA5MzAsIDB4MDIxYyksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIg fSwKIAl7IFVTQl9ERVZJQ0UoMHgwOTMwLCAweDAyMjApLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9B VEgzMDEyIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9idHVzYi5jIGIvZHJpdmVy cy9ibHVldG9vdGgvYnR1c2IuYwppbmRleCA4NzY2NTQ3NzIwOTIuLjBkYzYyN2IzYTkyYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnR1c2IuYworKysgYi9kcml2ZXJzL2JsdWV0b290 aC9idHVzYi5jCkBAIC0xODgsNiArMTg4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2 aWNlX2lkIGJsYWNrbGlzdF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDA0Y2EsIDB4MzAw ZiksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKIAl7IFVTQl9ERVZJQ0UoMHgwNGNh LCAweDMwMTApLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgzMDEyIH0sCiAJeyBVU0JfREVWSUNF KDB4MDRjYSwgMHgzMDE0KSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAorCXsgVVNC X0RFVklDRSgweDA0Y2EsIDB4MzAxOCksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwK IAl7IFVTQl9ERVZJQ0UoMHgwOTMwLCAweDAyMTkpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgz MDEyIH0sCiAJeyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwMjFjKSwgLmRyaXZlcl9pbmZvID0gQlRV U0JfQVRIMzAxMiB9LAogCXsgVVNCX0RFVklDRSgweDA5MzAsIDB4MDIyMCksIC5kcml2ZXJfaW5m byA9IEJUVVNCX0FUSDMwMTIgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci92aXJ0aW9fY29u c29sZS5jIGIvZHJpdmVycy9jaGFyL3ZpcnRpb19jb25zb2xlLmMKaW5kZXggN2Q1OGIyOTE4MTM4 Li5mNTZlYTY4MmFkNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci92aXJ0aW9fY29uc29sZS5j CisrKyBiL2RyaXZlcnMvY2hhci92aXJ0aW9fY29uc29sZS5jCkBAIC0xMTI5LDYgKzExMjksOCBA QCBzdGF0aWMgaW50IHB1dF9jaGFycyh1MzIgdnRlcm1ubywgY29uc3QgY2hhciAqYnVmLCBpbnQg Y291bnQpCiB7CiAJc3RydWN0IHBvcnQgKnBvcnQ7CiAJc3RydWN0IHNjYXR0ZXJsaXN0IHNnWzFd OworCXZvaWQgKmRhdGE7CisJaW50IHJldDsKIAogCWlmICh1bmxpa2VseShlYXJseV9wdXRfY2hh cnMpKQogCQlyZXR1cm4gZWFybHlfcHV0X2NoYXJzKHZ0ZXJtbm8sIGJ1ZiwgY291bnQpOwpAQCAt MTEzNyw4ICsxMTM5LDE0IEBAIHN0YXRpYyBpbnQgcHV0X2NoYXJzKHUzMiB2dGVybW5vLCBjb25z dCBjaGFyICpidWYsIGludCBjb3VudCkKIAlpZiAoIXBvcnQpCiAJCXJldHVybiAtRVBJUEU7CiAK LQlzZ19pbml0X29uZShzZywgYnVmLCBjb3VudCk7Ci0JcmV0dXJuIF9fc2VuZF90b19wb3J0KHBv cnQsIHNnLCAxLCBjb3VudCwgKHZvaWQgKilidWYsIGZhbHNlKTsKKwlkYXRhID0ga21lbWR1cChi dWYsIGNvdW50LCBHRlBfQVRPTUlDKTsKKwlpZiAoIWRhdGEpCisJCXJldHVybiAtRU5PTUVNOwor CisJc2dfaW5pdF9vbmUoc2csIGRhdGEsIGNvdW50KTsKKwlyZXQgPSBfX3NlbmRfdG9fcG9ydChw b3J0LCBzZywgMSwgY291bnQsIGRhdGEsIGZhbHNlKTsKKwlrZnJlZShkYXRhKTsKKwlyZXR1cm4g cmV0OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvY2xrLXdtODMxeC5jIGIvZHJp dmVycy9jbGsvY2xrLXdtODMxeC5jCmluZGV4IDA5M2RmZTE1OWRmYi4uZWY5Y2QzNGZiOWI1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2Nsay9jbGstd204MzF4LmMKKysrIGIvZHJpdmVycy9jbGsvY2xr LXdtODMxeC5jCkBAIC0xMDIsNyArMTAyLDggQEAgc3RhdGljIGludCB3bTgzMXhfZmxsX3ByZXBh cmUoc3RydWN0IGNsa19odyAqaHcpCiAJaWYgKHJldCAhPSAwKQogCQlkZXZfY3JpdCh3bTgzMXgt PmRldiwgIkZhaWxlZCB0byBlbmFibGUgRkxMOiAlZFxuIiwgcmV0KTsKIAotCXVzbGVlcF9yYW5n ZSgyMDAwLCAyMDAwKTsKKwkvKiB3YWl0IDItMyBtcyBmb3IgbmV3IGZyZXF1ZW5jeSB0YWtpbmcg ZWZmZWN0ICovCisJdXNsZWVwX3JhbmdlKDIwMDAsIDMwMDApOwogCiAJcmV0dXJuIHJldDsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGtnYXRlLXNlcGFyYXRlZC5jIGIv ZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsa2dhdGUtc2VwYXJhdGVkLmMKaW5kZXggYjAzZDVhNzI0 NmY5Li4wOThhODBkNjMwMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGtn YXRlLXNlcGFyYXRlZC5jCisrKyBiL2RyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGtnYXRlLXNlcGFy YXRlZC5jCkBAIC0xMjIsNiArMTIyLDcgQEAgc3RydWN0IGNsayAqaGlzaV9yZWdpc3Rlcl9jbGtn YXRlX3NlcChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCiAJc2Nsay0+Yml0 X2lkeCA9IGJpdF9pZHg7CiAJc2Nsay0+ZmxhZ3MgPSBjbGtfZ2F0ZV9mbGFnczsKIAlzY2xrLT5o dy5pbml0ID0gJmluaXQ7CisJc2Nsay0+bG9jayA9IGxvY2s7CiAKIAljbGsgPSBjbGtfcmVnaXN0 ZXIoZGV2LCAmc2Nsay0+aHcpOwogCWlmIChJU19FUlIoY2xrKSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvY2xrL3NhbXN1bmcvY2xrLXMzYzI0MTAuYyBiL2RyaXZlcnMvY2xrL3NhbXN1bmcvY2xrLXMz YzI0MTAuYwppbmRleCAxNDBmNDczM2MwMmUuLjBmNzYxYWNmZjdkNCAxMDA2NDQKLS0tIGEvZHJp dmVycy9jbGsvc2Ftc3VuZy9jbGstczNjMjQxMC5jCisrKyBiL2RyaXZlcnMvY2xrL3NhbXN1bmcv Y2xrLXMzYzI0MTAuYwpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgc3RydWN0IHN5c2NvcmVfb3Bz IHMzYzI0MTBfY2xrX3N5c2NvcmVfb3BzID0gewogCS5yZXN1bWUgPSBzM2MyNDEwX2Nsa19yZXN1 bWUsCiB9OwogCi1zdGF0aWMgdm9pZCBzM2MyNDEwX2Nsa19zbGVlcF9pbml0KHZvaWQpCitzdGF0 aWMgdm9pZCBfX2luaXQgczNjMjQxMF9jbGtfc2xlZXBfaW5pdCh2b2lkKQogewogCXMzYzI0MTBf c2F2ZSA9IHNhbXN1bmdfY2xrX2FsbG9jX3JlZ19kdW1wKHMzYzI0MTBfY2xrX3JlZ3MsCiAJCQkJ CQlBUlJBWV9TSVpFKHMzYzI0MTBfY2xrX3JlZ3MpKTsKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGlj IHZvaWQgczNjMjQxMF9jbGtfc2xlZXBfaW5pdCh2b2lkKQogCXJldHVybjsKIH0KICNlbHNlCi1z dGF0aWMgdm9pZCBzM2MyNDEwX2Nsa19zbGVlcF9pbml0KHZvaWQpIHt9CitzdGF0aWMgdm9pZCBf X2luaXQgczNjMjQxMF9jbGtfc2xlZXBfaW5pdCh2b2lkKSB7fQogI2VuZGlmCiAKIFBOQU1FKGZj bGtfcCkgPSB7ICJtcGxsIiwgImRpdl9zbG93IiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsv c2Ftc3VuZy9jbGstczNjMjQxMi5jIGIvZHJpdmVycy9jbGsvc2Ftc3VuZy9jbGstczNjMjQxMi5j CmluZGV4IDIzZTQzMTNmNjI1ZS4uODI4YjlmMDRiMmMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ns ay9zYW1zdW5nL2Nsay1zM2MyNDEyLmMKKysrIGIvZHJpdmVycy9jbGsvc2Ftc3VuZy9jbGstczNj MjQxMi5jCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3lzY29yZV9vcHMgczNjMjQx Ml9jbGtfc3lzY29yZV9vcHMgPSB7CiAJLnJlc3VtZSA9IHMzYzI0MTJfY2xrX3Jlc3VtZSwKIH07 CiAKLXN0YXRpYyB2b2lkIHMzYzI0MTJfY2xrX3NsZWVwX2luaXQodm9pZCkKK3N0YXRpYyB2b2lk IF9faW5pdCBzM2MyNDEyX2Nsa19zbGVlcF9pbml0KHZvaWQpCiB7CiAJczNjMjQxMl9zYXZlID0g c2Ftc3VuZ19jbGtfYWxsb2NfcmVnX2R1bXAoczNjMjQxMl9jbGtfcmVncywKIAkJCQkJCUFSUkFZ X1NJWkUoczNjMjQxMl9jbGtfcmVncykpOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCBz M2MyNDEyX2Nsa19zbGVlcF9pbml0KHZvaWQpCiAJcmV0dXJuOwogfQogI2Vsc2UKLXN0YXRpYyB2 b2lkIHMzYzI0MTJfY2xrX3NsZWVwX2luaXQodm9pZCkge30KK3N0YXRpYyB2b2lkIF9faW5pdCBz M2MyNDEyX2Nsa19zbGVlcF9pbml0KHZvaWQpIHt9CiAjZW5kaWYKIAogc3RhdGljIHN0cnVjdCBj bGtfZGl2X3RhYmxlIGRpdnh0aV9kW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zYW1z dW5nL2Nsay1zM2MyNDQzLmMgYi9kcml2ZXJzL2Nsay9zYW1zdW5nL2Nsay1zM2MyNDQzLmMKaW5k ZXggYzRiYmRhYmViYWE0Li4zMDY2NTAzZGVkMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL3Nh bXN1bmcvY2xrLXMzYzI0NDMuYworKysgYi9kcml2ZXJzL2Nsay9zYW1zdW5nL2Nsay1zM2MyNDQz LmMKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIHN0cnVjdCBzeXNjb3JlX29wcyBzM2MyNDQzX2Ns a19zeXNjb3JlX29wcyA9IHsKIAkucmVzdW1lID0gczNjMjQ0M19jbGtfcmVzdW1lLAogfTsKIAot c3RhdGljIHZvaWQgczNjMjQ0M19jbGtfc2xlZXBfaW5pdCh2b2lkKQorc3RhdGljIHZvaWQgX19p bml0IHMzYzI0NDNfY2xrX3NsZWVwX2luaXQodm9pZCkKIHsKIAlzM2MyNDQzX3NhdmUgPSBzYW1z dW5nX2Nsa19hbGxvY19yZWdfZHVtcChzM2MyNDQzX2Nsa19yZWdzLAogCQkJCQkJQVJSQVlfU0la RShzM2MyNDQzX2Nsa19yZWdzKSk7CkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgczNj MjQ0M19jbGtfc2xlZXBfaW5pdCh2b2lkKQogCXJldHVybjsKIH0KICNlbHNlCi1zdGF0aWMgdm9p ZCBzM2MyNDQzX2Nsa19zbGVlcF9pbml0KHZvaWQpIHt9CitzdGF0aWMgdm9pZCBfX2luaXQgczNj MjQ0M19jbGtfc2xlZXBfaW5pdCh2b2lkKSB7fQogI2VuZGlmCiAKIFBOQU1FKGVwbGxyZWZfcCkg PSB7ICJtcGxscmVmIiwgIm1wbGxyZWYiLCAieHRpIiwgImV4dCIgfTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY2xrL3NhbXN1bmcvY2xrLXMzYzY0eHguYyBiL2RyaXZlcnMvY2xrL3NhbXN1bmcvY2xr LXMzYzY0eHguYwppbmRleCA4ODg5ZmYxYzEwZmMuLjM3N2FhNWZmY2FiNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9jbGsvc2Ftc3VuZy9jbGstczNjNjR4eC5jCisrKyBiL2RyaXZlcnMvY2xrL3NhbXN1 bmcvY2xrLXMzYzY0eHguYwpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3lzY29y ZV9vcHMgczNjNjR4eF9jbGtfc3lzY29yZV9vcHMgPSB7CiAJLnJlc3VtZSA9IHMzYzY0eHhfY2xr X3Jlc3VtZSwKIH07CiAKLXN0YXRpYyB2b2lkIHMzYzY0eHhfY2xrX3NsZWVwX2luaXQodm9pZCkK K3N0YXRpYyB2b2lkIF9faW5pdCBzM2M2NHh4X2Nsa19zbGVlcF9pbml0KHZvaWQpCiB7CiAJczNj NjR4eF9zYXZlX2NvbW1vbiA9IHNhbXN1bmdfY2xrX2FsbG9jX3JlZ19kdW1wKHMzYzY0eHhfY2xr X3JlZ3MsCiAJCQkJCQlBUlJBWV9TSVpFKHMzYzY0eHhfY2xrX3JlZ3MpKTsKQEAgLTE0Niw3ICsx NDYsNyBAQCBlcnJfd2FybjoKIAkJX19mdW5jX18pOwogfQogI2Vsc2UKLXN0YXRpYyB2b2lkIHMz YzY0eHhfY2xrX3NsZWVwX2luaXQodm9pZCkge30KK3N0YXRpYyB2b2lkIF9faW5pdCBzM2M2NHh4 X2Nsa19zbGVlcF9pbml0KHZvaWQpIHt9CiAjZW5kaWYKIAogLyogTGlzdCBvZiBwYXJlbnQgY2xv Y2tzIGNvbW1vbiBmb3IgYWxsIFMzQzY0eHggU29Dcy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y2xrL3NobW9iaWxlL2Nsay1tc3RwLmMgYi9kcml2ZXJzL2Nsay9zaG1vYmlsZS9jbGstbXN0cC5j CmluZGV4IGE5ZTAyYTM4MDkzZS4uMmZhNjZjMWM4YTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ns ay9zaG1vYmlsZS9jbGstbXN0cC5jCisrKyBiL2RyaXZlcnMvY2xrL3NobW9iaWxlL2Nsay1tc3Rw LmMKQEAgLTg1LDYgKzg1LDEyIEBAIHN0YXRpYyBpbnQgY3BnX21zdHBfY2xvY2tfZW5kaXNhYmxl KHN0cnVjdCBjbGtfaHcgKmh3LCBib29sIGVuYWJsZSkKIAkJdmFsdWUgfD0gYml0bWFzazsKIAlj cGdfbXN0cF93cml0ZShncm91cCwgdmFsdWUsIGdyb3VwLT5zbXN0cGNyKTsKIAorCWlmICghZ3Jv dXAtPm1zdHBzcikgeworCQkvKiBkdW1teSByZWFkIHRvIGVuc3VyZSB3cml0ZSBoYXMgY29tcGxl dGVkICovCisJCWNwZ19tc3RwX3JlYWQoZ3JvdXAsIGdyb3VwLT5zbXN0cGNyKTsKKwkJYmFycmll cigpOworCX0KKwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdyb3VwLT5sb2NrLCBmbGFncyk7 CiAKIAlpZiAoIWVuYWJsZSB8fCAhZ3JvdXAtPm1zdHBzcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y3B1ZnJlcS9zM2MyNDE2LWNwdWZyZXEuYyBiL2RyaXZlcnMvY3B1ZnJlcS9zM2MyNDE2LWNwdWZy ZXEuYwppbmRleCBkNmQ0MjU3NzNmYTQuLjViMmRiM2M2NTY4ZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9jcHVmcmVxL3MzYzI0MTYtY3B1ZnJlcS5jCisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9zM2MyNDE2 LWNwdWZyZXEuYwpAQCAtNDAwLDcgKzQwMCw2IEBAIHN0YXRpYyBpbnQgczNjMjQxNl9jcHVmcmVx X2RyaXZlcl9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQogCXJhdGUgPSBjbGtf Z2V0X3JhdGUoczNjX2ZyZXEtPmhjbGspOwogCWlmIChyYXRlIDwgMTMzICogMTAwMCAqIDEwMDAp IHsKIAkJcHJfZXJyKCJjcHVmcmVxOiBIQ0xLIG5vdCBhdCAxMzNNSHpcbiIpOwotCQljbGtfcHV0 KHMzY19mcmVxLT5oY2xrKTsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBlcnJfYXJtY2xrOwog CX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyBiL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X3Bvc3QuYwppbmRleCAzOGQ0MzdmM2EyNjcuLjk3NmQyZTE0NTBlZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X3Bvc3QuYwpAQCAtMTYyNSwxMiArMTYyNSw0NCBAQCBzdGF0aWMgdm9p ZCBhc3RfaW5pdF9kcmFtXzIzMDAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJdGVtcCB8PSAw eDczOwogCQlhc3Rfd3JpdGUzMihhc3QsIDB4MTIwMDgsIHRlbXApOwogCisJCXBhcmFtLmRyYW1f ZnJlcSA9IDM5NjsKIAkJcGFyYW0uZHJhbV90eXBlID0gQVNUX0REUjM7CisJCXRlbXAgPSBhc3Rf bWluZHdtKGFzdCwgMHgxZTZlMjA3MCk7CiAJCWlmICh0ZW1wICYgMHgwMTAwMDAwMCkKIAkJCXBh cmFtLmRyYW1fdHlwZSA9IEFTVF9ERFIyOwotCQlwYXJhbS5kcmFtX2NoaXBpZCA9IGFzdC0+ZHJh bV90eXBlOwotCQlwYXJhbS5kcmFtX2ZyZXEgPSBhc3QtPm1jbGs7Ci0JCXBhcmFtLnZyYW1fc2l6 ZSA9IGFzdC0+dnJhbV9zaXplOworICAgICAgICAgICAgICAgIHN3aXRjaCAodGVtcCAmIDB4MTgw MDAwMDApIHsKKwkJY2FzZSAwOgorCQkJcGFyYW0uZHJhbV9jaGlwaWQgPSBBU1RfRFJBTV81MTJN eDE2OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCWNhc2UgMHgwODAwMDAwMDoKKwkJCXBhcmFt LmRyYW1fY2hpcGlkID0gQVNUX0RSQU1fMUd4MTY7CisJCQlicmVhazsKKwkJY2FzZSAweDEwMDAw MDAwOgorCQkJcGFyYW0uZHJhbV9jaGlwaWQgPSBBU1RfRFJBTV8yR3gxNjsKKwkJCWJyZWFrOwor CQljYXNlIDB4MTgwMDAwMDA6CisJCQlwYXJhbS5kcmFtX2NoaXBpZCA9IEFTVF9EUkFNXzRHeDE2 OworCQkJYnJlYWs7CisJCX0KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRlbXAgJiAweDBjKSB7 CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKwkJY2FzZSAweDAwOgorCQkJcGFyYW0udnJhbV9z aXplID0gQVNUX1ZJRE1FTV9TSVpFXzhNOworCQkJYnJlYWs7CisKKwkJY2FzZSAweDA0OgorCQkJ cGFyYW0udnJhbV9zaXplID0gQVNUX1ZJRE1FTV9TSVpFXzE2TTsKKwkJCWJyZWFrOworCisJCWNh c2UgMHgwODoKKwkJCXBhcmFtLnZyYW1fc2l6ZSA9IEFTVF9WSURNRU1fU0laRV8zMk07CisJCQli cmVhazsKKworCQljYXNlIDB4MGM6CisJCQlwYXJhbS52cmFtX3NpemUgPSBBU1RfVklETUVNX1NJ WkVfNjRNOworCQkJYnJlYWs7CisJCX0KIAogCQlpZiAocGFyYW0uZHJhbV90eXBlID09IEFTVF9E RFIzKSB7CiAJCQlnZXRfZGRyM19pbmZvKGFzdCwgJnBhcmFtKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RzaV9wbGwuYwppbmRleCBiYTc5ZWMxOWRhM2IuLjE0NDFiMWJhZTkwMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwpAQCAtMjY1LDggKzI2NSwxMCBAQCB2b2lkIHZsdl9l bmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAogCXZsdl9jb25m aWd1cmVfZHNpX3BsbChlbmNvZGVyKTsKIAotCS8qIHdhaXQgYXQgbGVhc3QgMC41IHVzIGFmdGVy IHVuZ2F0aW5nIGJlZm9yZSBlbmFibGluZyBWQ08gKi8KLQl1c2xlZXBfcmFuZ2UoMSwgMTApOwor CS8qIHdhaXQgYXQgbGVhc3QgMC41IHVzIGFmdGVyIHVuZ2F0aW5nIGJlZm9yZSBlbmFibGluZyBW Q08sCisJICogYWxsb3cgaHJ0aW1lciBzdWJzeXN0ZW0gb3B0aW1pemF0aW9uIGJ5IHJlbGF4aW5n IHRpbWluZworCSAqLworCXVzbGVlcF9yYW5nZSgxMCwgNTApOwogCiAJdG1wID0gdmx2X2Nja19y ZWFkKGRldl9wcml2LCBDQ0tfUkVHX0RTSV9QTExfQ09OVFJPTCk7CiAJdG1wIHw9IERTSV9QTExf VkNPX0VOOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYmlvcy5j IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYmlvcy5jCmluZGV4IGExZWJmMmM2Mjll ZC4uNmFkZDA2NDgxMTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9iaW9zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYmlvcy5jCkBAIC01 OTcsNTEgKzU5Nyw1NyBAQCBzdGF0aWMgYm9vbCByYWRlb25fcmVhZF9kaXNhYmxlZF9iaW9zKHN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogI2lmZGVmIENPTkZJR19BQ1BJCiBzdGF0aWMgYm9v bCByYWRlb25fYWNwaV92ZmN0X2Jpb3Moc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiB7Ci0J Ym9vbCByZXQgPSBmYWxzZTsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKmhkcjsKIAlhY3Bp X3NpemUgdGJsX3NpemU7CiAJVUVGSV9BQ1BJX1ZGQ1QgKnZmY3Q7Ci0JR09QX1ZCSU9TX0NPTlRF TlQgKnZiaW9zOwotCVZGQ1RfSU1BR0VfSEVBREVSICp2aGRyOworCXVuc2lnbmVkIG9mZnNldDsK IAogCWlmICghQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X3RhYmxlX3dpdGhfc2l6ZSgiVkZDVCIsIDEs ICZoZHIsICZ0Ymxfc2l6ZSkpKQogCQlyZXR1cm4gZmFsc2U7CiAJaWYgKHRibF9zaXplIDwgc2l6 ZW9mKFVFRklfQUNQSV9WRkNUKSkgewogCQlEUk1fRVJST1IoIkFDUEkgVkZDVCB0YWJsZSBwcmVz ZW50IGJ1dCBicm9rZW4gKHRvbyBzaG9ydCAjMSlcbiIpOwotCQlnb3RvIG91dF91bm1hcDsKKwkJ cmV0dXJuIGZhbHNlOwogCX0KIAogCXZmY3QgPSAoVUVGSV9BQ1BJX1ZGQ1QgKiloZHI7Ci0JaWYg KHZmY3QtPlZCSU9TSW1hZ2VPZmZzZXQgKyBzaXplb2YoVkZDVF9JTUFHRV9IRUFERVIpID4gdGJs X3NpemUpIHsKLQkJRFJNX0VSUk9SKCJBQ1BJIFZGQ1QgdGFibGUgcHJlc2VudCBidXQgYnJva2Vu ICh0b28gc2hvcnQgIzIpXG4iKTsKLQkJZ290byBvdXRfdW5tYXA7Ci0JfQorCW9mZnNldCA9IHZm Y3QtPlZCSU9TSW1hZ2VPZmZzZXQ7CiAKLQl2YmlvcyA9IChHT1BfVkJJT1NfQ09OVEVOVCAqKSgo Y2hhciAqKWhkciArIHZmY3QtPlZCSU9TSW1hZ2VPZmZzZXQpOwotCXZoZHIgPSAmdmJpb3MtPlZi aW9zSGVhZGVyOwotCURSTV9JTkZPKCJBQ1BJIFZGQ1QgY29udGFpbnMgYSBCSU9TIGZvciAlMDJ4 OiUwMnguJWQgJTA0eDolMDR4LCBzaXplICVkXG4iLAotCQkJdmhkci0+UENJQnVzLCB2aGRyLT5Q Q0lEZXZpY2UsIHZoZHItPlBDSUZ1bmN0aW9uLAotCQkJdmhkci0+VmVuZG9ySUQsIHZoZHItPkRl dmljZUlELCB2aGRyLT5JbWFnZUxlbmd0aCk7CisJd2hpbGUgKG9mZnNldCA8IHRibF9zaXplKSB7 CisJCUdPUF9WQklPU19DT05URU5UICp2YmlvcyA9IChHT1BfVkJJT1NfQ09OVEVOVCAqKSgoY2hh ciAqKWhkciArIG9mZnNldCk7CisJCVZGQ1RfSU1BR0VfSEVBREVSICp2aGRyID0gJnZiaW9zLT5W Ymlvc0hlYWRlcjsKIAotCWlmICh2aGRyLT5QQ0lCdXMgIT0gcmRldi0+cGRldi0+YnVzLT5udW1i ZXIgfHwKLQkgICAgdmhkci0+UENJRGV2aWNlICE9IFBDSV9TTE9UKHJkZXYtPnBkZXYtPmRldmZu KSB8fAotCSAgICB2aGRyLT5QQ0lGdW5jdGlvbiAhPSBQQ0lfRlVOQyhyZGV2LT5wZGV2LT5kZXZm bikgfHwKLQkgICAgdmhkci0+VmVuZG9ySUQgIT0gcmRldi0+cGRldi0+dmVuZG9yIHx8Ci0JICAg IHZoZHItPkRldmljZUlEICE9IHJkZXYtPnBkZXYtPmRldmljZSkgewotCQlEUk1fSU5GTygiQUNQ SSBWRkNUIHRhYmxlIGlzIG5vdCBmb3IgdGhpcyBjYXJkXG4iKTsKLQkJZ290byBvdXRfdW5tYXA7 Ci0JfQorCQlvZmZzZXQgKz0gc2l6ZW9mKFZGQ1RfSU1BR0VfSEVBREVSKTsKKwkJaWYgKG9mZnNl dCA+IHRibF9zaXplKSB7CisJCQlEUk1fRVJST1IoIkFDUEkgVkZDVCBpbWFnZSBoZWFkZXIgdHJ1 bmNhdGVkXG4iKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQogCi0JaWYgKHZmY3QtPlZCSU9TSW1h Z2VPZmZzZXQgKyBzaXplb2YoVkZDVF9JTUFHRV9IRUFERVIpICsgdmhkci0+SW1hZ2VMZW5ndGgg PiB0Ymxfc2l6ZSkgewotCQlEUk1fRVJST1IoIkFDUEkgVkZDVCBpbWFnZSB0cnVuY2F0ZWRcbiIp OwotCQlnb3RvIG91dF91bm1hcDsKLQl9CisJCW9mZnNldCArPSB2aGRyLT5JbWFnZUxlbmd0aDsK KwkJaWYgKG9mZnNldCA+IHRibF9zaXplKSB7CisJCQlEUk1fRVJST1IoIkFDUEkgVkZDVCBpbWFn ZSB0cnVuY2F0ZWRcbiIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CiAKLQlyZGV2LT5iaW9zID0g a21lbWR1cCgmdmJpb3MtPlZiaW9zQ29udGVudCwgdmhkci0+SW1hZ2VMZW5ndGgsIEdGUF9LRVJO RUwpOwotCXJldCA9ICEhcmRldi0+YmlvczsKKwkJaWYgKHZoZHItPkltYWdlTGVuZ3RoICYmCisJ CSAgICB2aGRyLT5QQ0lCdXMgPT0gcmRldi0+cGRldi0+YnVzLT5udW1iZXIgJiYKKwkJICAgIHZo ZHItPlBDSURldmljZSA9PSBQQ0lfU0xPVChyZGV2LT5wZGV2LT5kZXZmbikgJiYKKwkJICAgIHZo ZHItPlBDSUZ1bmN0aW9uID09IFBDSV9GVU5DKHJkZXYtPnBkZXYtPmRldmZuKSAmJgorCQkgICAg dmhkci0+VmVuZG9ySUQgPT0gcmRldi0+cGRldi0+dmVuZG9yICYmCisJCSAgICB2aGRyLT5EZXZp Y2VJRCA9PSByZGV2LT5wZGV2LT5kZXZpY2UpIHsKKwkJCXJkZXYtPmJpb3MgPSBrbWVtZHVwKCZ2 Ymlvcy0+VmJpb3NDb250ZW50LAorCQkJCQkgICAgIHZoZHItPkltYWdlTGVuZ3RoLAorCQkJCQkg ICAgIEdGUF9LRVJORUwpOworCisJCQlpZiAoIXJkZXYtPmJpb3MpIHsKKwkJCQlrZnJlZShyZGV2 LT5iaW9zKTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQor CX0KIAotb3V0X3VubWFwOgotCXJldHVybiByZXQ7CisJRFJNX0VSUk9SKCJBQ1BJIFZGQ1QgdGFi bGUgcHJlc2VudCBidXQgYnJva2VuICh0b28gc2hvcnQgIzIpXG4iKTsKKwlyZXR1cm4gZmFsc2U7 CiB9CiAjZWxzZQogc3RhdGljIGlubGluZSBib29sIHJhZGVvbl9hY3BpX3ZmY3RfYmlvcyhzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0v dHRtX2JvLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCmluZGV4IGY3YmVmYzRjMGM0 OS4uNGY5OWY4MDg0OTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKQEAgLTE2NDEsNyArMTY0MSw2IEBA IHN0YXRpYyBpbnQgdHRtX2JvX3N3YXBvdXQoc3RydWN0IHR0bV9tZW1fc2hyaW5rICpzaHJpbmsp CiAJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibzsKIAlpbnQgcmV0ID0gLUVCVVNZOwogCWlu dCBwdXRfY291bnQ7Ci0JdWludDMyX3Qgc3dhcF9wbGFjZW1lbnQgPSAoVFRNX1BMX0ZMQUdfQ0FD SEVEIHwgVFRNX1BMX0ZMQUdfU1lTVEVNKTsKIAogCXNwaW5fbG9jaygmZ2xvYi0+bHJ1X2xvY2sp OwogCWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZnbG9iLT5zd2FwX2xydSwgc3dhcCkgewpAQCAt MTY3OSw3ICsxNjc4LDggQEAgc3RhdGljIGludCB0dG1fYm9fc3dhcG91dChzdHJ1Y3QgdHRtX21l bV9zaHJpbmsgKnNocmluaykKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlnb3RvIG91dDsK IAotCWlmICgoYm8tPm1lbS5wbGFjZW1lbnQgJiBzd2FwX3BsYWNlbWVudCkgIT0gc3dhcF9wbGFj ZW1lbnQpIHsKKwlpZiAoYm8tPm1lbS5tZW1fdHlwZSAhPSBUVE1fUExfU1lTVEVNIHx8CisJICAg IGJvLT50dG0tPmNhY2hpbmdfc3RhdGUgIT0gdHRfY2FjaGVkKSB7CiAJCXN0cnVjdCB0dG1fbWVt X3JlZyBldmljdF9tZW07CiAKIAkJZXZpY3RfbWVtID0gYm8tPm1lbTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9i b192bS5jCmluZGV4IDBjZTQ4ZTVhOWNiNC4uMWNmZGJmNmVmYzIxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X2JvX3ZtLmMKQEAgLTY4LDggKzY4LDExIEBAIHN0YXRpYyBpbnQgdHRtX2JvX3ZtX2ZhdWx0X2lk bGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJaWYgKHZtZi0+ZmxhZ3MgJiBGQVVM VF9GTEFHX1JFVFJZX05PV0FJVCkKIAkJCWdvdG8gb3V0X3VubG9jazsKIAorCQl0dG1fYm9fcmVm ZXJlbmNlKGJvKTsKIAkJdXBfcmVhZCgmdm1hLT52bV9tbS0+bW1hcF9zZW0pOwogCQkodm9pZCkg dHRtX2JvX3dhaXQoYm8sIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisJCXR0bV9ib191bnJlc2VydmUo Ym8pOworCQl0dG1fYm9fdW5yZWYoJmJvKTsKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KIApAQCAt MTE3LDggKzEyMCwxMCBAQCBzdGF0aWMgaW50IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAKIAkJaWYgKHZtZi0+ZmxhZ3Mg JiBGQVVMVF9GTEFHX0FMTE9XX1JFVFJZKSB7CiAJCQlpZiAoISh2bWYtPmZsYWdzICYgRkFVTFRf RkxBR19SRVRSWV9OT1dBSVQpKSB7CisJCQkJdHRtX2JvX3JlZmVyZW5jZShibyk7CiAJCQkJdXBf cmVhZCgmdm1hLT52bV9tbS0+bW1hcF9zZW0pOwogCQkJCSh2b2lkKSB0dG1fYm9fd2FpdF91bnJl c2VydmVkKGJvKTsKKwkJCQl0dG1fYm9fdW5yZWYoJmJvKTsKIAkJCX0KIAogCQkJcmV0dXJuIFZN X0ZBVUxUX1JFVFJZOwpAQCAtMTYzLDYgKzE2OCwxMyBAQCBzdGF0aWMgaW50IHR0bV9ib192bV9m YXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJ cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X2lkbGUoYm8sIHZtYSwgdm1mKTsKIAlpZiAodW5saWtlbHko cmV0ICE9IDApKSB7CiAJCXJldHZhbCA9IHJldDsKKworCQlpZiAocmV0dmFsID09IFZNX0ZBVUxU X1JFVFJZICYmCisJCSAgICAhKHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkp IHsKKwkJCS8qIFRoZSBCTyBoYXMgYWxyZWFkeSBiZWVuIHVucmVzZXJ2ZWQuICovCisJCQlyZXR1 cm4gcmV0dmFsOworCQl9CisKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5jIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5jCmluZGV4IDE3YTQxMDc2MzliMi4uNjc2MjM3OTdiZDU1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdXJmYWNlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5jCkBAIC03MTEsMTEgKzcx MSwxNCBAQCBpbnQgdm13X3N1cmZhY2VfZGVmaW5lX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCQkxMjg7CiAKIAludW1fc2l6ZXMgPSAwOwotCWZvciAoaSA9IDA7 IGkgPCBEUk1fVk1XX01BWF9TVVJGQUNFX0ZBQ0VTOyArK2kpCisJZm9yIChpID0gMDsgaSA8IERS TV9WTVdfTUFYX1NVUkZBQ0VfRkFDRVM7ICsraSkgeworCQlpZiAocmVxLT5taXBfbGV2ZWxzW2ld ID4gRFJNX1ZNV19NQVhfTUlQX0xFVkVMUykKKwkJCXJldHVybiAtRUlOVkFMOwogCQludW1fc2l6 ZXMgKz0gcmVxLT5taXBfbGV2ZWxzW2ldOworCX0KIAotCWlmIChudW1fc2l6ZXMgPiBEUk1fVk1X X01BWF9TVVJGQUNFX0ZBQ0VTICoKLQkgICAgRFJNX1ZNV19NQVhfTUlQX0xFVkVMUykKKwlpZiAo bnVtX3NpemVzID4gRFJNX1ZNV19NQVhfU1VSRkFDRV9GQUNFUyAqIERSTV9WTVdfTUFYX01JUF9M RVZFTFMgfHwKKwkgICAgbnVtX3NpemVzID09IDApCiAJCXJldHVybiAtRUlOVkFMOwogCiAJc2l6 ZSA9IHZtd191c2VyX3N1cmZhY2Vfc2l6ZSArIDEyOCArCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h2 L2NoYW5uZWwuYyBiL2RyaXZlcnMvaHYvY2hhbm5lbC5jCmluZGV4IDFlOTUxYzUwN2MwZC4uZGIy ZTdmZWNhZTQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h2L2NoYW5uZWwuYworKysgYi9kcml2ZXJz L2h2L2NoYW5uZWwuYwpAQCAtMTYzLDcgKzE2Myw3IEBAIGludCB2bWJ1c19vcGVuKHN0cnVjdCB2 bWJ1c19jaGFubmVsICpuZXdjaGFubmVsLCB1MzIgc2VuZF9yaW5nYnVmZmVyX3NpemUsCiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmdm1idXNfY29ubmVjdGlvbi5jaGFubmVsbXNnX2xvY2ssIGZs YWdzKTsKIAogCXJldCA9IHZtYnVzX3Bvc3RfbXNnKG9wZW5fbXNnLAotCQkJICAgICAgIHNpemVv ZihzdHJ1Y3Qgdm1idXNfY2hhbm5lbF9vcGVuX2NoYW5uZWwpKTsKKwkJCSAgICAgc2l6ZW9mKHN0 cnVjdCB2bWJ1c19jaGFubmVsX29wZW5fY2hhbm5lbCksIHRydWUpOwogCiAJaWYgKHJldCAhPSAw KSB7CiAJCWVyciA9IHJldDsKQEAgLTM5MSw3ICszOTEsNyBAQCBpbnQgdm1idXNfZXN0YWJsaXNo X2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLAogCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnZtYnVzX2Nvbm5lY3Rpb24uY2hhbm5lbG1zZ19sb2NrLCBm bGFncyk7CiAKIAlyZXQgPSB2bWJ1c19wb3N0X21zZyhncGFkbG1zZywgbXNnaW5mby0+bXNnc2l6 ZSAtCi0JCQkgICAgICAgc2l6ZW9mKCptc2dpbmZvKSk7CisJCQkgICAgIHNpemVvZigqbXNnaW5m byksIHRydWUpOwogCWlmIChyZXQgIT0gMCkKIAkJZ290byBjbGVhbnVwOwogCkBAIC00MDcsOCAr NDA3LDggQEAgaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAq Y2hhbm5lbCwgdm9pZCAqa2J1ZmZlciwKIAkJCWdwYWRsX2JvZHktPmdwYWRsID0gbmV4dF9ncGFk bF9oYW5kbGU7CiAKIAkJCXJldCA9IHZtYnVzX3Bvc3RfbXNnKGdwYWRsX2JvZHksCi0JCQkJCSAg ICAgICBzdWJtc2dpbmZvLT5tc2dzaXplIC0KLQkJCQkJICAgICAgIHNpemVvZigqc3VibXNnaW5m bykpOworCQkJCQkgICAgIHN1Ym1zZ2luZm8tPm1zZ3NpemUgLSBzaXplb2YoKnN1Ym1zZ2luZm8p LAorCQkJCQkgICAgIHRydWUpOwogCQkJaWYgKHJldCAhPSAwKQogCQkJCWdvdG8gY2xlYW51cDsK IApAQCAtNDU2LDggKzQ1Niw4IEBAIGludCB2bWJ1c190ZWFyZG93bl9ncGFkbChzdHJ1Y3Qgdm1i dXNfY2hhbm5lbCAqY2hhbm5lbCwgdTMyIGdwYWRsX2hhbmRsZSkKIAlsaXN0X2FkZF90YWlsKCZp bmZvLT5tc2dsaXN0ZW50cnksCiAJCSAgICAgICZ2bWJ1c19jb25uZWN0aW9uLmNobl9tc2dfbGlz dCk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdm1idXNfY29ubmVjdGlvbi5jaGFubmVsbXNn X2xvY2ssIGZsYWdzKTsKLQlyZXQgPSB2bWJ1c19wb3N0X21zZyhtc2csCi0JCQkgICAgICAgc2l6 ZW9mKHN0cnVjdCB2bWJ1c19jaGFubmVsX2dwYWRsX3RlYXJkb3duKSk7CisJcmV0ID0gdm1idXNf cG9zdF9tc2cobXNnLCBzaXplb2Yoc3RydWN0IHZtYnVzX2NoYW5uZWxfZ3BhZGxfdGVhcmRvd24p LAorCQkJICAgICB0cnVlKTsKIAogCWlmIChyZXQpCiAJCWdvdG8gcG9zdF9tc2dfZXJyOwpAQCAt NTAyLDcgKzUwMiw4IEBAIHN0YXRpYyBpbnQgdm1idXNfY2xvc2VfaW50ZXJuYWwoc3RydWN0IHZt YnVzX2NoYW5uZWwgKmNoYW5uZWwpCiAJbXNnLT5oZWFkZXIubXNndHlwZSA9IENIQU5ORUxNU0df Q0xPU0VDSEFOTkVMOwogCW1zZy0+Y2hpbGRfcmVsaWQgPSBjaGFubmVsLT5vZmZlcm1zZy5jaGls ZF9yZWxpZDsKIAotCXJldCA9IHZtYnVzX3Bvc3RfbXNnKG1zZywgc2l6ZW9mKHN0cnVjdCB2bWJ1 c19jaGFubmVsX2Nsb3NlX2NoYW5uZWwpKTsKKwlyZXQgPSB2bWJ1c19wb3N0X21zZyhtc2csIHNp emVvZihzdHJ1Y3Qgdm1idXNfY2hhbm5lbF9jbG9zZV9jaGFubmVsKSwKKwkJCSAgICAgdHJ1ZSk7 CiAKIAlpZiAocmV0KSB7CiAJCXByX2VycigiQ2xvc2UgZmFpbGVkOiBjbG9zZSBwb3N0IG1zZyBy ZXR1cm4gaXMgJWRcbiIsIHJldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h2L2NoYW5uZWxfbWdt dC5jIGIvZHJpdmVycy9odi9jaGFubmVsX21nbXQuYwppbmRleCAxMDk1M2VjZTMzMDcuLjlhMTI5 Zjg0ODZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9odi9jaGFubmVsX21nbXQuYworKysgYi9kcml2 ZXJzL2h2L2NoYW5uZWxfbWdtdC5jCkBAIC0yMjksNyArMjI5LDggQEAgc3RhdGljIHZvaWQgdm1i dXNfcHJvY2Vzc19yZXNjaW5kX29mZmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAltZW1z ZXQoJm1zZywgMCwgc2l6ZW9mKHN0cnVjdCB2bWJ1c19jaGFubmVsX3JlbGlkX3JlbGVhc2VkKSk7 CiAJbXNnLmNoaWxkX3JlbGlkID0gY2hhbm5lbC0+b2ZmZXJtc2cuY2hpbGRfcmVsaWQ7CiAJbXNn LmhlYWRlci5tc2d0eXBlID0gQ0hBTk5FTE1TR19SRUxJRF9SRUxFQVNFRDsKLQl2bWJ1c19wb3N0 X21zZygmbXNnLCBzaXplb2Yoc3RydWN0IHZtYnVzX2NoYW5uZWxfcmVsaWRfcmVsZWFzZWQpKTsK Kwl2bWJ1c19wb3N0X21zZygmbXNnLCBzaXplb2Yoc3RydWN0IHZtYnVzX2NoYW5uZWxfcmVsaWRf cmVsZWFzZWQpLAorCQkgICAgICAgdHJ1ZSk7CiAKIAlpZiAoY2hhbm5lbC0+dGFyZ2V0X2NwdSAh PSBzbXBfcHJvY2Vzc29yX2lkKCkpCiAJCXNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjaGFubmVs LT50YXJnZXRfY3B1LApAQCAtNzcxLDggKzc3Miw4IEBAIGludCB2bWJ1c19yZXF1ZXN0X29mZmVy cyh2b2lkKQogCW1zZy0+bXNndHlwZSA9IENIQU5ORUxNU0dfUkVRVUVTVE9GRkVSUzsKIAogCi0J cmV0ID0gdm1idXNfcG9zdF9tc2cobXNnLAotCQkJICAgICAgIHNpemVvZihzdHJ1Y3Qgdm1idXNf Y2hhbm5lbF9tZXNzYWdlX2hlYWRlcikpOworCXJldCA9IHZtYnVzX3Bvc3RfbXNnKG1zZywgc2l6 ZW9mKHN0cnVjdCB2bWJ1c19jaGFubmVsX21lc3NhZ2VfaGVhZGVyKSwKKwkJCSAgICAgdHJ1ZSk7 CiAJaWYgKHJldCAhPSAwKSB7CiAJCXByX2VycigiVW5hYmxlIHRvIHJlcXVlc3Qgb2ZmZXJzIC0g JWRcbiIsIHJldCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY29ubmVjdGlvbi5jIGIvZHJp dmVycy9odi9jb25uZWN0aW9uLmMKaW5kZXggZTIwNjYxOWI5NDZlLi4wNGU1YTk4ZmRjNDQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaHYvY29ubmVjdGlvbi5jCisrKyBiL2RyaXZlcnMvaHYvY29ubmVj dGlvbi5jCkBAIC05NCw3ICs5NCw4IEBAIHN0YXRpYyBpbnQgdm1idXNfbmVnb3RpYXRlX3ZlcnNp b24oc3RydWN0IHZtYnVzX2NoYW5uZWxfbXNnaW5mbyAqbXNnaW5mbywKIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZ2bWJ1c19jb25uZWN0aW9uLmNoYW5uZWxtc2dfbG9jaywgZmxhZ3MpOwogCiAJ cmV0ID0gdm1idXNfcG9zdF9tc2cobXNnLAotCQkJICAgICAgIHNpemVvZihzdHJ1Y3Qgdm1idXNf Y2hhbm5lbF9pbml0aWF0ZV9jb250YWN0KSk7CisJCQkgICAgIHNpemVvZihzdHJ1Y3Qgdm1idXNf Y2hhbm5lbF9pbml0aWF0ZV9jb250YWN0KSwKKwkJCSAgICAgdHJ1ZSk7CiAJaWYgKHJldCAhPSAw KSB7CiAJCXNwaW5fbG9ja19pcnFzYXZlKCZ2bWJ1c19jb25uZWN0aW9uLmNoYW5uZWxtc2dfbG9j aywgZmxhZ3MpOwogCQlsaXN0X2RlbCgmbXNnaW5mby0+bXNnbGlzdGVudHJ5KTsKQEAgLTQxMywx MSArNDE0LDEyIEBAIHZvaWQgdm1idXNfb25fZXZlbnQodW5zaWduZWQgbG9uZyBkYXRhKQogLyoK ICAqIHZtYnVzX3Bvc3RfbXNnIC0gU2VuZCBhIG1zZyBvbiB0aGUgdm1idXMncyBtZXNzYWdlIGNv bm5lY3Rpb24KICAqLwotaW50IHZtYnVzX3Bvc3RfbXNnKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGJ1 ZmxlbikKK2ludCB2bWJ1c19wb3N0X21zZyh2b2lkICpidWZmZXIsIHNpemVfdCBidWZsZW4sIGJv b2wgY2FuX3NsZWVwKQogewogCXVuaW9uIGh2X2Nvbm5lY3Rpb25faWQgY29ubl9pZDsKIAlpbnQg cmV0ID0gMDsKIAlpbnQgcmV0cmllcyA9IDA7CisJdTMyIHVzZWMgPSAxOwogCiAJY29ubl9pZC5h c3UzMiA9IDA7CiAJY29ubl9pZC51LmlkID0gVk1CVVNfTUVTU0FHRV9DT05ORUNUSU9OX0lEOwpA QCAtNDI3LDEzICs0MjksMjAgQEAgaW50IHZtYnVzX3Bvc3RfbXNnKHZvaWQgKmJ1ZmZlciwgc2l6 ZV90IGJ1ZmxlbikKIAkgKiBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzLiBSZXRyeSB0aGUgb3BlcmF0 aW9uIGEgY291cGxlIG9mCiAJICogdGltZXMgYmVmb3JlIGdpdmluZyB1cC4KIAkgKi8KLQl3aGls ZSAocmV0cmllcyA8IDEwKSB7CisJd2hpbGUgKHJldHJpZXMgPCAxMDApIHsKIAkJcmV0ID0gaHZf cG9zdF9tZXNzYWdlKGNvbm5faWQsIDEsIGJ1ZmZlciwgYnVmbGVuKTsKIAogCQlzd2l0Y2ggKHJl dCkgeworCQljYXNlIEhWX1NUQVRVU19JTlZBTElEX0NPTk5FQ1RJT05fSUQ6CisJCQkvKgorCQkJ ICogV2UgY291bGQgZ2V0IHRoaXMgaWYgd2Ugc2VuZCBtZXNzYWdlcyB0b28KKwkJCSAqIGZyZXF1 ZW50bHkuCisJCQkgKi8KKwkJCXJldCA9IC1FQUdBSU47CisJCQlicmVhazsKKwkJY2FzZSBIVl9T VEFUVVNfSU5TVUZGSUNJRU5UX01FTU9SWToKIAkJY2FzZSBIVl9TVEFUVVNfSU5TVUZGSUNJRU5U X0JVRkZFUlM6CiAJCQlyZXQgPSAtRU5PTUVNOwotCQljYXNlIC1FTk9NRU06CiAJCQlicmVhazsK IAkJY2FzZSBIVl9TVEFUVVNfU1VDQ0VTUzoKIAkJCXJldHVybiByZXQ7CkBAIC00NDMsNyArNDUy LDE1IEBAIGludCB2bWJ1c19wb3N0X21zZyh2b2lkICpidWZmZXIsIHNpemVfdCBidWZsZW4pCiAJ CX0KIAogCQlyZXRyaWVzKys7Ci0JCW1zbGVlcCgxMDApOworCQlpZiAoY2FuX3NsZWVwICYmIHVz ZWMgPiAxMDAwKQorCQkJbXNsZWVwKHVzZWMgLyAxMDAwKTsKKwkJZWxzZSBpZiAodXNlYyA8IE1B WF9VREVMQVlfTVMgKiAxMDAwKQorCQkJdWRlbGF5KHVzZWMpOworCQllbHNlCisJCQltZGVsYXko dXNlYyAvIDEwMDApOworCisJCWlmICh1c2VjIDwgMjU2MDAwKQorCQkJdXNlYyAqPSAyOwogCX0K IAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9odi9odi5jIGIvZHJpdmVycy9o di9odi5jCmluZGV4IDNlNDIzNWM3YTQ3Zi4uYThiOWVlYTVjNGZjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2h2L2h2LmMKKysrIGIvZHJpdmVycy9odi9odi5jCkBAIC0xNTYsNyArMTU2LDcgQEAgaW50 IGh2X2luaXQodm9pZCkKIAkvKiBTZWUgaWYgdGhlIGh5cGVyY2FsbCBwYWdlIGlzIGFscmVhZHkg c2V0ICovCiAJcmRtc3JsKEhWX1g2NF9NU1JfSFlQRVJDQUxMLCBoeXBlcmNhbGxfbXNyLmFzX3Vp bnQ2NCk7CiAKLQl2aXJ0YWRkciA9IF9fdm1hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwsIFBB R0VfS0VSTkVMX0VYRUMpOworCXZpcnRhZGRyID0gX192bWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tF Uk5FTCwgUEFHRV9LRVJORUxfUlgpOwogCiAJaWYgKCF2aXJ0YWRkcikKIAkJZ290byBjbGVhbnVw OwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludCBodl9zeW5pY19hbGxvYyh2b2lkKQogCXNpemVfdCBz aXplID0gc2l6ZW9mKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCk7CiAJaW50IGNwdTsKIAotCWZvcl9l YWNoX29ubGluZV9jcHUoY3B1KSB7CisJZm9yX2VhY2hfcHJlc2VudF9jcHUoY3B1KSB7CiAJCWh2 X2NvbnRleHQuZXZlbnRfZHBjW2NwdV0gPSBrbWFsbG9jKHNpemUsIEdGUF9BVE9NSUMpOwogCQlp ZiAoaHZfY29udGV4dC5ldmVudF9kcGNbY3B1XSA9PSBOVUxMKSB7CiAJCQlwcl9lcnIoIlVuYWJs ZSB0byBhbGxvY2F0ZSBldmVudCBkcGNcbiIpOwpAQCAtMjk1LDYgKzI5NSw4IEBAIGludCBodl9z eW5pY19hbGxvYyh2b2lkKQogCQkJcHJfZXJyKCJVbmFibGUgdG8gYWxsb2NhdGUgcG9zdCBtc2cg cGFnZVxuIik7CiAJCQlnb3RvIGVycjsKIAkJfQorCisJCUlOSVRfTElTVF9IRUFEKCZodl9jb250 ZXh0LnBlcmNwdV9saXN0W2NwdV0pOwogCX0KIAogCXJldHVybiAwOwpAQCAtMzE3LDcgKzMxOSw3 IEBAIHZvaWQgaHZfc3luaWNfZnJlZSh2b2lkKQogewogCWludCBjcHU7CiAKLQlmb3JfZWFjaF9v bmxpbmVfY3B1KGNwdSkKKwlmb3JfZWFjaF9wcmVzZW50X2NwdShjcHUpCiAJCWh2X3N5bmljX2Zy ZWVfY3B1KGNwdSk7CiB9CiAKQEAgLTM4Niw4ICszODgsNiBAQCB2b2lkIGh2X3N5bmljX2luaXQo dm9pZCAqYXJnKQogCSAqLwogCXJkbXNybChIVl9YNjRfTVNSX1ZQX0lOREVYLCB2cF9pbmRleCk7 CiAJaHZfY29udGV4dC52cF9pbmRleFtjcHVdID0gKHUzMil2cF9pbmRleDsKLQotCUlOSVRfTElT VF9IRUFEKCZodl9jb250ZXh0LnBlcmNwdV9saXN0W2NwdV0pOwogCXJldHVybjsKIH0KIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9odi9oeXBlcnZfdm1idXMuaCBiL2RyaXZlcnMvaHYvaHlwZXJ2X3Zt YnVzLmgKaW5kZXggYzM4NmQ4ZGM3MjIzLi45N2YzYWQwMTFjNjEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaHYvaHlwZXJ2X3ZtYnVzLmgKKysrIGIvZHJpdmVycy9odi9oeXBlcnZfdm1idXMuaApAQCAt NjcyLDcgKzY3Miw3IEBAIHZvaWQgdm1idXNfZnJlZV9jaGFubmVscyh2b2lkKTsKIAogaW50IHZt YnVzX2Nvbm5lY3Qodm9pZCk7CiAKLWludCB2bWJ1c19wb3N0X21zZyh2b2lkICpidWZmZXIsIHNp emVfdCBidWZsZW4pOworaW50IHZtYnVzX3Bvc3RfbXNnKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGJ1 ZmxlbiwgYm9vbCBjYW5fc2xlZXApOwogCiBpbnQgdm1idXNfc2V0X2V2ZW50KHN0cnVjdCB2bWJ1 c19jaGFubmVsICpjaGFubmVsKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2ky Yy1yaWljLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXJpaWMuYwppbmRleCBhZjNiM2QwMzJh OWYuLjdhN2I3MWU5N2JhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1yaWlj LmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1yaWljLmMKQEAgLTgwLDYgKzgwLDcgQEAK ICNkZWZpbmUgSUNJRVJfVEVJRQkweDQwCiAjZGVmaW5lIElDSUVSX1JJRQkweDIwCiAjZGVmaW5l IElDSUVSX05BS0lFCTB4MTAKKyNkZWZpbmUgSUNJRVJfU1BJRQkweDA4CiAKICNkZWZpbmUgSUNT UjJfTkFDS0YJMHgxMAogCkBAIC0yMTYsMTEgKzIxNywxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qg cmlpY190ZW5kX2lzcihpbnQgaXJxLCB2b2lkICpkYXRhKQogCQlyZXR1cm4gSVJRX05PTkU7CiAJ fQogCi0JaWYgKHJpaWMtPmlzX2xhc3QgfHwgcmlpYy0+ZXJyKQorCWlmIChyaWljLT5pc19sYXN0 IHx8IHJpaWMtPmVycikgeworCQlyaWljX2NsZWFyX3NldF9iaXQocmlpYywgMCwgSUNJRVJfU1BJ RSwgUklJQ19JQ0lFUik7CiAJCXdyaXRlYihJQ0NSMl9TUCwgcmlpYy0+YmFzZSArIFJJSUNfSUND UjIpOwotCi0Jd3JpdGViKDAsIHJpaWMtPmJhc2UgKyBSSUlDX0lDSUVSKTsKLQljb21wbGV0ZSgm cmlpYy0+bXNnX2RvbmUpOworCX0KIAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KQEAgLTI0MCwx MyArMjQwLDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCByaWljX3JkcmZfaXNyKGludCBpcnEsIHZv aWQgKmRhdGEpCiAKIAlpZiAocmlpYy0+Ynl0ZXNfbGVmdCA9PSAxKSB7CiAJCS8qIFNUT1AgbXVz dCBjb21lIGJlZm9yZSB3ZSBzZXQgQUNLQlQhICovCi0JCWlmIChyaWljLT5pc19sYXN0KQorCQlp ZiAocmlpYy0+aXNfbGFzdCkgeworCQkJcmlpY19jbGVhcl9zZXRfYml0KHJpaWMsIDAsIElDSUVS X1NQSUUsIFJJSUNfSUNJRVIpOwogCQkJd3JpdGViKElDQ1IyX1NQLCByaWljLT5iYXNlICsgUklJ Q19JQ0NSMik7CisJCX0KIAogCQlyaWljX2NsZWFyX3NldF9iaXQocmlpYywgMCwgSUNNUjNfQUNL QlQsIFJJSUNfSUNNUjMpOwogCi0JCXdyaXRlYigwLCByaWljLT5iYXNlICsgUklJQ19JQ0lFUik7 Ci0JCWNvbXBsZXRlKCZyaWljLT5tc2dfZG9uZSk7CiAJfSBlbHNlIHsKIAkJcmlpY19jbGVhcl9z ZXRfYml0KHJpaWMsIElDTVIzX0FDS0JULCAwLCBSSUlDX0lDTVIzKTsKIAl9CkBAIC0yNTksNiAr MjU5LDIxIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCByaWljX3JkcmZfaXNyKGludCBpcnEsIHZvaWQg KmRhdGEpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCitzdGF0aWMgaXJxcmV0dXJuX3Qgcmlp Y19zdG9wX2lzcihpbnQgaXJxLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCByaWljX2RldiAqcmlp YyA9IGRhdGE7CisKKwkvKiByZWFkIGJhY2sgcmVnaXN0ZXJzIHRvIGNvbmZpcm0gd3JpdGVzIGhh dmUgZnVsbHkgcHJvcGFnYXRlZCAqLworCXdyaXRlYigwLCByaWljLT5iYXNlICsgUklJQ19JQ1NS Mik7CisJcmVhZGIocmlpYy0+YmFzZSArIFJJSUNfSUNTUjIpOworCXdyaXRlYigwLCByaWljLT5i YXNlICsgUklJQ19JQ0lFUik7CisJcmVhZGIocmlpYy0+YmFzZSArIFJJSUNfSUNJRVIpOworCisJ Y29tcGxldGUoJnJpaWMtPm1zZ19kb25lKTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKwog c3RhdGljIHUzMiByaWljX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKQogewogCXJldHVy biBJMkNfRlVOQ19JMkMgfCBJMkNfRlVOQ19TTUJVU19FTVVMOwpAQCAtMzI2LDYgKzM0MSw3IEBA IHN0YXRpYyBzdHJ1Y3QgcmlpY19pcnFfZGVzYyByaWljX2lycXNbXSA9IHsKIAl7IC5yZXNfbnVt ID0gMCwgLmlzciA9IHJpaWNfdGVuZF9pc3IsIC5uYW1lID0gInJpaWMtdGVuZCIgfSwKIAl7IC5y ZXNfbnVtID0gMSwgLmlzciA9IHJpaWNfcmRyZl9pc3IsIC5uYW1lID0gInJpaWMtcmRyZiIgfSwK IAl7IC5yZXNfbnVtID0gMiwgLmlzciA9IHJpaWNfdGRyZV9pc3IsIC5uYW1lID0gInJpaWMtdGRy ZSIgfSwKKwl7IC5yZXNfbnVtID0gMywgLmlzciA9IHJpaWNfc3RvcF9pc3IsIC5uYW1lID0gInJp aWMtc3RvcCIgfSwKIAl7IC5yZXNfbnVtID0gNSwgLmlzciA9IHJpaWNfdGVuZF9pc3IsIC5uYW1l ID0gInJpaWMtbmFjayIgfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL3ByZXNzdXJl L21wbDExNS5jIGIvZHJpdmVycy9paW8vcHJlc3N1cmUvbXBsMTE1LmMKaW5kZXggYTBkN2RlZWFj NjJmLi4zZjkwOTg1ZDU0NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL3ByZXNzdXJlL21wbDEx NS5jCisrKyBiL2RyaXZlcnMvaWlvL3ByZXNzdXJlL21wbDExNS5jCkBAIC0xMzYsNiArMTM2LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIG1wbDExNV9jaGFubmVsc1tdID0g ewogCXsKIAkJLnR5cGUgPSBJSU9fVEVNUCwKIAkJLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJ SU9fQ0hBTl9JTkZPX1JBVyksCisJCS5pbmZvX21hc2tfc2hhcmVkX2J5X3R5cGUgPQogCQkJQklU KElJT19DSEFOX0lORk9fT0ZGU0VUKSB8IEJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSwKIAl9LAog fTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL3ByZXNzdXJlL21wbDMxMTUuYyBiL2RyaXZlcnMv aWlvL3ByZXNzdXJlL21wbDMxMTUuYwppbmRleCAwMWIyZTBiMTg4NzguLjBmNWI4NzY3ZWMyZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9paW8vcHJlc3N1cmUvbXBsMzExNS5jCisrKyBiL2RyaXZlcnMv aWlvL3ByZXNzdXJlL21wbDMxMTUuYwpAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaWlvX2NoYW5fc3BlYyBtcGwzMTE1X2NoYW5uZWxzW10gPSB7CiAJewogCQkudHlwZSA9 IElJT19QUkVTU1VSRSwKIAkJLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZP X1JBVyksCi0JCQlCSVQoSUlPX0NIQU5fSU5GT19TQ0FMRSksCisJCS5pbmZvX21hc2tfc2hhcmVk X2J5X3R5cGUgPSBCSVQoSUlPX0NIQU5fSU5GT19TQ0FMRSksCiAJCS5zY2FuX2luZGV4ID0gMCwK IAkJLnNjYW5fdHlwZSA9IHsKIAkJCS5zaWduID0gJ3UnLApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBtcGwzMTE1X2NoYW5uZWxzW10gPSB7CiAJ ewogCQkudHlwZSA9IElJT19URU1QLAogCQkuaW5mb19tYXNrX3NlcGFyYXRlID0gQklUKElJT19D SEFOX0lORk9fUkFXKSwKLQkJCUJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSwKKwkJLmluZm9fbWFz a19zaGFyZWRfYnlfdHlwZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSwKIAkJLnNjYW5faW5k ZXggPSAxLAogCQkuc2Nhbl90eXBlID0gewogCQkJLnNpZ24gPSAncycsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9wcmVzc3VyZS9zdF9wcmVzc3VyZV9jb3JlLmMgYi9kcml2ZXJzL2lpby9wcmVz c3VyZS9zdF9wcmVzc3VyZV9jb3JlLmMKaW5kZXggMGQ3MDE3NmFmMjk2Li4zNjUzZDhiZjJiNGYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL3ByZXNzdXJlL3N0X3ByZXNzdXJlX2NvcmUuYworKysg Yi9kcml2ZXJzL2lpby9wcmVzc3VyZS9zdF9wcmVzc3VyZV9jb3JlLmMKQEAgLTExNiw3ICsxMTYs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgc3RfcHJlc3NfMV9jaGFubmVs c1tdID0gewogCQkuYWRkcmVzcyA9IFNUX1BSRVNTXzFfT1VUX1hMX0FERFIsCiAJCS5zY2FuX2lu ZGV4ID0gU1RfU0VOU09SU19TQ0FOX1gsCiAJCS5zY2FuX3R5cGUgPSB7Ci0JCQkuc2lnbiA9ICd1 JywKKwkJCS5zaWduID0gJ3MnLAogCQkJLnJlYWxiaXRzID0gMjQsCiAJCQkuc3RvcmFnZWJpdHMg PSAyNCwKIAkJCS5lbmRpYW5uZXNzID0gSUlPX0xFLApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBzdF9wcmVzc18xX2NoYW5uZWxzW10gPSB7CiAJ CS5hZGRyZXNzID0gU1RfVEVNUF8xX09VVF9MX0FERFIsCiAJCS5zY2FuX2luZGV4ID0gLTEsCiAJ CS5zY2FuX3R5cGUgPSB7Ci0JCQkuc2lnbiA9ICd1JywKKwkJCS5zaWduID0gJ3MnLAogCQkJLnJl YWxiaXRzID0gMTYsCiAJCQkuc3RvcmFnZWJpdHMgPSAxNiwKIAkJCS5lbmRpYW5uZXNzID0gSUlP X0xFLApAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3Bl YyBzdF9wcmVzc19scHMwMDF3cF9jaGFubmVsc1tdID0gewogCQkuYWRkcmVzcyA9IFNUX1BSRVNT X0xQUzAwMVdQX09VVF9MX0FERFIsCiAJCS5zY2FuX2luZGV4ID0gU1RfU0VOU09SU19TQ0FOX1gs CiAJCS5zY2FuX3R5cGUgPSB7Ci0JCQkuc2lnbiA9ICd1JywKKwkJCS5zaWduID0gJ3MnLAogCQkJ LnJlYWxiaXRzID0gMTYsCiAJCQkuc3RvcmFnZWJpdHMgPSAxNiwKIAkJCS5lbmRpYW5uZXNzID0g SUlPX0xFLApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5f c3BlYyBzdF9wcmVzc19scHMwMDF3cF9jaGFubmVsc1tdID0gewogCQkuYWRkcmVzcyA9IFNUX1RF TVBfTFBTMDAxV1BfT1VUX0xfQUREUiwKIAkJLnNjYW5faW5kZXggPSAtMSwKIAkJLnNjYW5fdHlw ZSA9IHsKLQkJCS5zaWduID0gJ3UnLAorCQkJLnNpZ24gPSAncycsCiAJCQkucmVhbGJpdHMgPSAx NiwKIAkJCS5zdG9yYWdlYml0cyA9IDE2LAogCQkJLmVuZGlhbm5lc3MgPSBJSU9fTEUsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFu ZC9jb3JlL2NtYS5jCmluZGV4IGNmM2Q5ZGVlOGFmZi4uZmI5YmIyNjZhNTE3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQv Y29yZS9jbWEuYwpAQCAtMjk1Miw2ICsyOTUyLDkgQEAgc3RhdGljIGludCBjbWFfYWNjZXB0X2l3 KHN0cnVjdCByZG1hX2lkX3ByaXZhdGUgKmlkX3ByaXYsCiAJc3RydWN0IGl3X2NtX2Nvbm5fcGFy YW0gaXdfcGFyYW07CiAJaW50IHJldDsKIAorCWlmICghY29ubl9wYXJhbSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKIAlyZXQgPSBjbWFfbW9kaWZ5X3FwX3J0cihpZF9wcml2LCBjb25uX3BhcmFtKTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5k L2h3L21seDUvcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMKaW5kZXggODU3 MDdiN2Q5ZmRlLi43NGNiMjg2ZTYwMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9o dy9tbHg1L3FwLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYwpAQCAtMzY3 LDEyICszNjcsMjEgQEAgc3RhdGljIGludCBuZXh0X3V1YXIoaW50IG4pCiAJcmV0dXJuIG47CiB9 CiAKK2VudW0geworCS8qIHRoaXMgaXMgdGhlIGZpcnN0IGJsdWUgZmxhbWUgcmVnaXN0ZXIgaW4g dGhlIGFycmF5IG9mIGJmcmVncyBhc3NpZ25lZAorCSAqIHRvIGEgcHJvY2Vzc2VzLiBTaW5jZSB3 ZSBkbyBub3QgdXNlIGl0IGZvciBibHVlIGZsYW1lIGJ1dCByYXRoZXIKKwkgKiByZWd1bGFyIDY0 IGJpdCBkb29yYmVsbHMsIHdlIGRvIG5vdCBuZWVkIGEgbG9jayBmb3IgbWFpbnRhaWluZworCSAq ICJvZGQvZXZlbiIgb3JkZXIKKwkgKi8KKwlOVU1fTk9OX0JMVUVfRkxBTUVfQkZSRUdTID0gMSwK K307CisKIHN0YXRpYyBpbnQgbnVtX21lZF91dWFyKHN0cnVjdCBtbHg1X3V1YXJfaW5mbyAqdXVh cmkpCiB7CiAJaW50IG47CiAKIAluID0gdXVhcmktPm51bV91YXJzICogTUxYNV9OT05fRlBfQkZf UkVHU19QRVJfUEFHRSAtCi0JCXV1YXJpLT5udW1fbG93X2xhdGVuY3lfdXVhcnMgLSAxOworCQl1 dWFyaS0+bnVtX2xvd19sYXRlbmN5X3V1YXJzIC0gTlVNX05PTl9CTFVFX0ZMQU1FX0JGUkVHUzsK IAogCXJldHVybiBuID49IDAgPyBuIDogMDsKIH0KQEAgLTM4NSwxNyArMzk0LDkgQEAgc3RhdGlj IGludCBtYXhfdXVhcmkoc3RydWN0IG1seDVfdXVhcl9pbmZvICp1dWFyaSkKIHN0YXRpYyBpbnQg Zmlyc3RfaGlfdXVhcihzdHJ1Y3QgbWx4NV91dWFyX2luZm8gKnV1YXJpKQogewogCWludCBtZWQ7 Ci0JaW50IGk7Ci0JaW50IHQ7CiAKIAltZWQgPSBudW1fbWVkX3V1YXIodXVhcmkpOwotCWZvciAo dCA9IDAsIGkgPSBmaXJzdF9tZWRfdXVhcigpOzsgaSA9IG5leHRfdXVhcihpKSkgewotCQl0Kys7 Ci0JCWlmICh0ID09IG1lZCkKLQkJCXJldHVybiBuZXh0X3V1YXIoaSk7Ci0JfQotCi0JcmV0dXJu IDA7CisJcmV0dXJuIG5leHRfdXVhcihtZWQpOwogfQogCiBzdGF0aWMgaW50IGFsbG9jX2hpZ2hf Y2xhc3NfdXVhcihzdHJ1Y3QgbWx4NV91dWFyX2luZm8gKnV1YXJpKQpAQCAtNDIxLDYgKzQyMiw4 IEBAIHN0YXRpYyBpbnQgYWxsb2NfbWVkX2NsYXNzX3V1YXIoc3RydWN0IG1seDVfdXVhcl9pbmZv ICp1dWFyaSkKIAlmb3IgKGkgPSBmaXJzdF9tZWRfdXVhcigpOyBpIDwgZmlyc3RfaGlfdXVhcih1 dWFyaSk7IGkgPSBuZXh0X3V1YXIoaSkpIHsKIAkJaWYgKHV1YXJpLT5jb3VudFtpXSA8IHV1YXJp LT5jb3VudFttaW5pZHhdKQogCQkJbWluaWR4ID0gaTsKKwkJaWYgKCF1dWFyaS0+Y291bnRbbWlu aWR4XSkKKwkJCWJyZWFrOwogCX0KIAogCXV1YXJpLT5jb3VudFttaW5pZHhdKys7CkBAIC00MzUs NiArNDM4LDcgQEAgc3RhdGljIGludCBhbGxvY191dWFyKHN0cnVjdCBtbHg1X3V1YXJfaW5mbyAq dXVhcmksCiAJbXV0ZXhfbG9jaygmdXVhcmktPmxvY2spOwogCXN3aXRjaCAobGF0KSB7CiAJY2Fz ZSBNTFg1X0lCX0xBVEVOQ1lfQ0xBU1NfTE9XOgorCQlCVUlMRF9CVUdfT04oTlVNX05PTl9CTFVF X0ZMQU1FX0JGUkVHUyAhPSAxKTsKIAkJdXVhcm4gPSAwOwogCQl1dWFyaS0+Y291bnRbdXVhcm5d Kys7CiAJCWJyZWFrOwpAQCAtMjMzMiw4ICsyMzM2LDkgQEAgc3RhdGljIGludCBzZXRfcHN2X3dy KHN0cnVjdCBpYl9zaWdfZG9tYWluICpkb21haW4sCiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKLQkJ cHJfZXJyKCJCYWQgc2lnbmF0dXJlIHR5cGUgZ2l2ZW4uXG4iKTsKLQkJcmV0dXJuIDE7CisJCXBy X2VycigiQmFkIHNpZ25hdHVyZSB0eXBlICglZCkgaXMgZ2l2ZW4uXG4iLAorCQkgICAgICAgZG9t YWluLT5zaWdfdHlwZSk7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCXJldHVybiAwOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3JxLmMgYi9kcml2ZXJzL2luZmlu aWJhbmQvaHcvbWx4NS9zcnEuYwppbmRleCAzODRhZjZkZWM1ZWIuLjdjMmZlNTIzNWFlMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3JxLmMKKysrIGIvZHJpdmVycy9p bmZpbmliYW5kL2h3L21seDUvc3JxLmMKQEAgLTE1Niw4ICsxNTYsNiBAQCBzdGF0aWMgaW50IGNy ZWF0ZV9zcnFfa2VybmVsKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9pYl9z cnEgKnNycSwKIAlpbnQgZXJyOwogCWludCBpOwogCXN0cnVjdCBtbHg1X3dxZV9zcnFfbmV4dF9z ZWcgKm5leHQ7Ci0JaW50IHBhZ2Vfc2hpZnQ7Ci0JaW50IG5wYWdlczsKIAogCWVyciA9IG1seDVf ZGJfYWxsb2MoJmRldi0+bWRldiwgJnNycS0+ZGIpOwogCWlmIChlcnIpIHsKQEAgLTE3Miw3ICsx NzAsNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9zcnFfa2VybmVsKHN0cnVjdCBtbHg1X2liX2RldiAq ZGV2LCBzdHJ1Y3QgbWx4NV9pYl9zcnEgKnNycSwKIAkJZXJyID0gLUVOT01FTTsKIAkJZ290byBl cnJfZGI7CiAJfQotCXBhZ2Vfc2hpZnQgPSBzcnEtPmJ1Zi5wYWdlX3NoaWZ0OwogCiAJc3JxLT5o ZWFkICAgID0gMDsKIAlzcnEtPnRhaWwgICAgPSBzcnEtPm1zcnEubWF4IC0gMTsKQEAgLTE4NCwx MCArMTgxLDggQEAgc3RhdGljIGludCBjcmVhdGVfc3JxX2tlcm5lbChzdHJ1Y3QgbWx4NV9pYl9k ZXYgKmRldiwgc3RydWN0IG1seDVfaWJfc3JxICpzcnEsCiAJCQljcHVfdG9fYmUxNigoaSArIDEp ICYgKHNycS0+bXNycS5tYXggLSAxKSk7CiAJfQogCi0JbnBhZ2VzID0gRElWX1JPVU5EX1VQKHNy cS0+YnVmLm5wYWdlcywgMSA8PCAocGFnZV9zaGlmdCAtIFBBR0VfU0hJRlQpKTsKLQltbHg1X2li X2RiZyhkZXYsICJidWZfc2l6ZSAlZCwgcGFnZV9zaGlmdCAlZCwgbnBhZ2VzICVkLCBjYWxjIG5w YWdlcyAlZFxuIiwKLQkJICAgIGJ1Zl9zaXplLCBwYWdlX3NoaWZ0LCBzcnEtPmJ1Zi5ucGFnZXMs IG5wYWdlcyk7Ci0JKmlubGVuID0gc2l6ZW9mKCoqaW4pICsgc2l6ZW9mKCooKmluKS0+cGFzKSAq IG5wYWdlczsKKwltbHg1X2liX2RiZyhkZXYsICJzcnEtPmJ1Zi5wYWdlX3NoaWZ0ID0gJWRcbiIs IHNycS0+YnVmLnBhZ2Vfc2hpZnQpOworCSppbmxlbiA9IHNpemVvZigqKmluKSArIHNpemVvZigq KCppbiktPnBhcykgKiBzcnEtPmJ1Zi5ucGFnZXM7CiAJKmluID0gbWx4NV92emFsbG9jKCppbmxl bik7CiAJaWYgKCEqaW4pIHsKIAkJZXJyID0gLUVOT01FTTsKQEAgLTIwNCw3ICsxOTksNyBAQCBz dGF0aWMgaW50IGNyZWF0ZV9zcnFfa2VybmVsKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1 Y3QgbWx4NV9pYl9zcnEgKnNycSwKIAl9CiAJc3JxLT53cV9zaWcgPSAhIXNycV9zaWduYXR1cmU7 CiAKLQkoKmluKS0+Y3R4LmxvZ19wZ19zeiA9IHBhZ2Vfc2hpZnQgLSBNTFg1X0FEQVBURVJfUEFH RV9TSElGVDsKKwkoKmluKS0+Y3R4LmxvZ19wZ19zeiA9IHNycS0+YnVmLnBhZ2Vfc2hpZnQgLSBN TFg1X0FEQVBURVJfUEFHRV9TSElGVDsKIAogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQv dWxwL2lwb2liL2lwb2liX2NtLmMKaW5kZXggNmYyOWJkMDU0NDFmLi5kN2RiMzQ4NmY5MzMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYworKysgYi9k cml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKQEAgLTEzNzYsNyArMTM3Niw3 IEBAIHN0YXRpYyB2b2lkIGlwb2liX2NtX3R4X3JlYXAoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQogCiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZwcml2LT5jbS5yZWFwX2xpc3QpKSB7CiAJCXAgPSBs aXN0X2VudHJ5KHByaXYtPmNtLnJlYXBfbGlzdC5uZXh0LCB0eXBlb2YoKnApLCBsaXN0KTsKLQkJ bGlzdF9kZWwoJnAtPmxpc3QpOworCQlsaXN0X2RlbF9pbml0KCZwLT5saXN0KTsKIAkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwogCQluZXRpZl90eF91bmxvY2tf YmgoZGV2KTsKIAkJaXBvaWJfY21fdHhfZGVzdHJveShwKTsKQEAgLTE0OTYsMTIgKzE0OTYsMTQg QEAgc3RhdGljIHNzaXplX3Qgc2V0X21vZGUoc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsCiAKIAlyZXQgPSBpcG9pYl9zZXRfbW9kZShkZXYsIGJ1Zik7CiAK LQlydG5sX3VubG9jaygpOwotCi0JaWYgKCFyZXQpCi0JCXJldHVybiBjb3VudDsKKwkvKiBUaGUg YXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBmdW5jdGlvbiBpcG9pYl9zZXRfbW9kZSByZXR1cm5lZAor CSAqIHdpdGggdGhlIHJ0bmwgaGVsZCBieSBpdCwgaWYgbm90IHRoZSB2YWx1ZSAtRUJVU1kgcmV0 dXJuZWQsCisJICogdGhlbiBubyBuZWVkIHRvIHJ0bmxfdW5sb2NrCisJICovCisJaWYgKHJldCAh PSAtRUJVU1kpCisJCXJ0bmxfdW5sb2NrKCk7CiAKLQlyZXR1cm4gcmV0OworCXJldHVybiAoIXJl dCB8fCByZXQgPT0gLUVCVVNZKSA/IGNvdW50IDogcmV0OwogfQogCiBzdGF0aWMgREVWSUNFX0FU VFIobW9kZSwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfbW9kZSwgc2V0X21vZGUpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tYWluLmMgYi9kcml2ZXJz L2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYwppbmRleCBkYmZlOGYxZTZkN2UuLjFh ZWExN2ZlOWNiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9p Yl9tYWluLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tYWluLmMK QEAgLTIyNiw2ICsyMjYsMTMgQEAgaW50IGlwb2liX3NldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIGNvbnN0IGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgaXBvaWJfZGV2X3ByaXYgKnByaXYg PSBuZXRkZXZfcHJpdihkZXYpOwogCisJaWYgKCh0ZXN0X2JpdChJUE9JQl9GTEFHX0FETUlOX0NN LCAmcHJpdi0+ZmxhZ3MpICYmCisJICAgICAhc3RyY21wKGJ1ZiwgImNvbm5lY3RlZFxuIikpIHx8 CisJICAgICAoIXRlc3RfYml0KElQT0lCX0ZMQUdfQURNSU5fQ00sICZwcml2LT5mbGFncykgJiYK KwkgICAgICFzdHJjbXAoYnVmLCAiZGF0YWdyYW1cbiIpKSkgeworCQlyZXR1cm4gMDsKKwl9CisK IAkvKiBmbHVzaCBwYXRocyBpZiB3ZSBzd2l0Y2ggbW9kZXMgc28gdGhhdCBjb25uZWN0aW9ucyBh cmUgcmVzdGFydGVkICovCiAJaWYgKElQT0lCX0NNX1NVUFBPUlRFRChkZXYtPmRldl9hZGRyKSAm JiAhc3RyY21wKGJ1ZiwgImNvbm5lY3RlZFxuIikpIHsKIAkJc2V0X2JpdChJUE9JQl9GTEFHX0FE TUlOX0NNLCAmcHJpdi0+ZmxhZ3MpOwpAQCAtMjM2LDggKzI0Myw3IEBAIGludCBpcG9pYl9zZXRf bW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpidWYpCiAJCXByaXYtPnR4 X3dyLnNlbmRfZmxhZ3MgJj0gfklCX1NFTkRfSVBfQ1NVTTsKIAogCQlpcG9pYl9mbHVzaF9wYXRo cyhkZXYpOwotCQlydG5sX2xvY2soKTsKLQkJcmV0dXJuIDA7CisJCXJldHVybiAoIXJ0bmxfdHJ5 bG9jaygpKSA/IC1FQlVTWSA6IDA7CiAJfQogCiAJaWYgKCFzdHJjbXAoYnVmLCAiZGF0YWdyYW1c biIpKSB7CkBAIC0yNDYsOCArMjUyLDcgQEAgaW50IGlwb2liX3NldF9tb2RlKHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1ZikKIAkJZGV2X3NldF9tdHUoZGV2LCBtaW4ocHJp di0+bWNhc3RfbXR1LCBkZXYtPm10dSkpOwogCQlydG5sX3VubG9jaygpOwogCQlpcG9pYl9mbHVz aF9wYXRocyhkZXYpOwotCQlydG5sX2xvY2soKTsKLQkJcmV0dXJuIDA7CisJCXJldHVybiAoIXJ0 bmxfdHJ5bG9jaygpKSA/IC1FQlVTWSA6IDA7CiAJfQogCiAJcmV0dXJuIC1FSU5WQUw7CkBAIC05 MzUsNyArOTQwLDcgQEAgc3RhdGljIHZvaWQgX19pcG9pYl9yZWFwX25laWdoKHN0cnVjdCBpcG9p Yl9kZXZfcHJpdiAqcHJpdikKIAkJCQkJCSAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobmVp Z2gtPmhuZXh0LAogCQkJCQkJCQkJICAgICBsb2NrZGVwX2lzX2hlbGQoJnByaXYtPmxvY2spKSk7 CiAJCQkJLyogcmVtb3ZlIGZyb20gcGF0aC9tYyBsaXN0ICovCi0JCQkJbGlzdF9kZWwoJm5laWdo LT5saXN0KTsKKwkJCQlsaXN0X2RlbF9pbml0KCZuZWlnaC0+bGlzdCk7CiAJCQkJY2FsbF9yY3Uo Jm5laWdoLT5yY3UsIGlwb2liX25laWdoX3JlY2xhaW0pOwogCQkJfSBlbHNlIHsKIAkJCQlucCA9 ICZuZWlnaC0+aG5leHQ7CkBAIC0xMDk4LDcgKzExMDMsNyBAQCB2b2lkIGlwb2liX25laWdoX2Zy ZWUoc3RydWN0IGlwb2liX25laWdoICpuZWlnaCkKIAkJCQkJICAgcmN1X2RlcmVmZXJlbmNlX3By b3RlY3RlZChuZWlnaC0+aG5leHQsCiAJCQkJCQkJCSAgICAgbG9ja2RlcF9pc19oZWxkKCZwcml2 LT5sb2NrKSkpOwogCQkJLyogcmVtb3ZlIGZyb20gcGFyZW50IGxpc3QgKi8KLQkJCWxpc3RfZGVs KCZuZWlnaC0+bGlzdCk7CisJCQlsaXN0X2RlbF9pbml0KCZuZWlnaC0+bGlzdCk7CiAJCQljYWxs X3JjdSgmbmVpZ2gtPnJjdSwgaXBvaWJfbmVpZ2hfcmVjbGFpbSk7CiAJCQlyZXR1cm47CiAJCX0g ZWxzZSB7CkBAIC0xMTgzLDcgKzExODgsNyBAQCB2b2lkIGlwb2liX2RlbF9uZWlnaHNfYnlfZ2lk KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4ICpnaWQpCiAJCQkJCQkgICByY3VfZGVyZWZlcmVu Y2VfcHJvdGVjdGVkKG5laWdoLT5obmV4dCwKIAkJCQkJCQkJCSAgICAgbG9ja2RlcF9pc19oZWxk KCZwcml2LT5sb2NrKSkpOwogCQkJCS8qIHJlbW92ZSBmcm9tIHBhcmVudCBsaXN0ICovCi0JCQkJ bGlzdF9kZWwoJm5laWdoLT5saXN0KTsKKwkJCQlsaXN0X2RlbF9pbml0KCZuZWlnaC0+bGlzdCk7 CiAJCQkJY2FsbF9yY3UoJm5laWdoLT5yY3UsIGlwb2liX25laWdoX3JlY2xhaW0pOwogCQkJfSBl bHNlIHsKIAkJCQlucCA9ICZuZWlnaC0+aG5leHQ7CkBAIC0xMjI1LDcgKzEyMzAsNyBAQCBzdGF0 aWMgdm9pZCBpcG9pYl9mbHVzaF9uZWlnaHMoc3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2KQog CQkJCQkgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5laWdoLT5obmV4dCwKIAkJCQkJCQkJ ICAgICBsb2NrZGVwX2lzX2hlbGQoJnByaXYtPmxvY2spKSk7CiAJCQkvKiByZW1vdmUgZnJvbSBw YXRoL21jIGxpc3QgKi8KLQkJCWxpc3RfZGVsKCZuZWlnaC0+bGlzdCk7CisJCQlsaXN0X2RlbF9p bml0KCZuZWlnaC0+bGlzdCk7CiAJCQljYWxsX3JjdSgmbmVpZ2gtPnJjdSwgaXBvaWJfbmVpZ2hf cmVjbGFpbSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lw b2liL2lwb2liX3ZsYW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmxh bi5jCmluZGV4IDkxZGE2ODVjZGFmZC4uMDU0NjdhYTdmNDk4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZsYW4uYworKysgYi9kcml2ZXJzL2luZmluaWJh bmQvdWxwL2lwb2liL2lwb2liX3ZsYW4uYwpAQCAtMTY4LDExICsxNjgsMTEgQEAgaW50IGlwb2li X3ZsYW5fYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpwZGV2LCB1bnNpZ25lZCBzaG9ydCBwa2V5KQog b3V0OgogCXVwX3dyaXRlKCZwcHJpdi0+dmxhbl9yd3NlbSk7CiAKKwlydG5sX3VubG9jaygpOwor CiAJaWYgKHJlc3VsdCkKIAkJZnJlZV9uZXRkZXYocHJpdi0+ZGV2KTsKIAotCXJ0bmxfdW5sb2Nr KCk7Ci0KIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xOTYsNyArMTk2LDYgQEAgaW50IGlwb2li X3ZsYW5fZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpwZGV2LCB1bnNpZ25lZCBzaG9ydCBwa2V5 KQogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwcml2LCB0cHJpdiwgJnBwcml2LT5jaGlsZF9p bnRmcywgbGlzdCkgewogCQlpZiAocHJpdi0+cGtleSA9PSBwa2V5ICYmCiAJCSAgICBwcml2LT5j aGlsZF90eXBlID09IElQT0lCX0xFR0FDWV9DSElMRCkgewotCQkJdW5yZWdpc3Rlcl9uZXRkZXZp Y2UocHJpdi0+ZGV2KTsKIAkJCWxpc3RfZGVsKCZwcml2LT5saXN0KTsKIAkJCWRldiA9IHByaXYt PmRldjsKIAkJCWJyZWFrOwpAQCAtMjA0LDYgKzIwMywxMSBAQCBpbnQgaXBvaWJfdmxhbl9kZWxl dGUoc3RydWN0IG5ldF9kZXZpY2UgKnBkZXYsIHVuc2lnbmVkIHNob3J0IHBrZXkpCiAJfQogCXVw X3dyaXRlKCZwcHJpdi0+dmxhbl9yd3NlbSk7CiAKKwlpZiAoZGV2KSB7CisJCWlwb2liX2RiZyhw cHJpdiwgImRlbGV0ZSBjaGlsZCB2bGFuICVzXG4iLCBkZXYtPm5hbWUpOworCQl1bnJlZ2lzdGVy X25ldGRldmljZShkZXYpOworCX0KKwogCXJ0bmxfdW5sb2NrKCk7CiAKIAlpZiAoZGV2KSB7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2ludGVsLWlvbW11LmMgYi9kcml2ZXJzL2lvbW11L2lu dGVsLWlvbW11LmMKaW5kZXggZDViNTg3OGZhOTk1Li41YjMzMTEwOWI0YzQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYworKysgYi9kcml2ZXJzL2lvbW11L2ludGVsLWlv bW11LmMKQEAgLTk3Miw3ICs5NzIsNyBAQCBzdGF0aWMgdm9pZCBkbWFfcHRlX2ZyZWVfbGV2ZWwo c3RydWN0IGRtYXJfZG9tYWluICpkb21haW4sIGludCBsZXZlbCwKIAkJaWYgKCFkbWFfcHRlX3By ZXNlbnQocHRlKSB8fCBkbWFfcHRlX3N1cGVycGFnZShwdGUpKQogCQkJZ290byBuZXh0OwogCi0J CWxldmVsX3BmbiA9IHBmbiAmIGxldmVsX21hc2sobGV2ZWwgLSAxKTsKKwkJbGV2ZWxfcGZuID0g cGZuICYgbGV2ZWxfbWFzayhsZXZlbCk7CiAJCWxldmVsX3B0ZSA9IHBoeXNfdG9fdmlydChkbWFf cHRlX2FkZHIocHRlKSk7CiAKIAkJaWYgKGxldmVsID4gMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvZG0tY2FjaGUtdGFyZ2V0LmMgYi9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jCmluZGV4 IDQwMWFmMzJjZTFlMi4uMzBkMDE5ZGIyYWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNh Y2hlLXRhcmdldC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTIxMCw3 ICsyMTAsNyBAQCBzdHJ1Y3QgY2FjaGUgewogCS8qCiAJICogRmllbGRzIGZvciBjb252ZXJ0aW5n IGZyb20gc2VjdG9ycyB0byBibG9ja3MuCiAJICovCi0JdWludDMyX3Qgc2VjdG9yc19wZXJfYmxv Y2s7CisJc2VjdG9yX3Qgc2VjdG9yc19wZXJfYmxvY2s7CiAJaW50IHNlY3RvcnNfcGVyX2Jsb2Nr X3NoaWZ0OwogCiAJc3BpbmxvY2tfdCBsb2NrOwpAQCAtMjgyMywxMSArMjgyMywxMSBAQCBzdGF0 aWMgdm9pZCBjYWNoZV9zdGF0dXMoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0YXR1c190eXBlX3Qg dHlwZSwKIAogCQlyZXNpZGVuY3kgPSBwb2xpY3lfcmVzaWRlbmN5KGNhY2hlLT5wb2xpY3kpOwog Ci0JCURNRU1JVCgiJXUgJWxsdS8lbGx1ICV1ICVsbHUvJWxsdSAldSAldSAldSAldSAldSAldSAl bHUgIiwKKwkJRE1FTUlUKCIldSAlbGx1LyVsbHUgJWxsdSAlbGx1LyVsbHUgJXUgJXUgJXUgJXUg JXUgJXUgJWx1ICIsCiAJCSAgICAgICAodW5zaWduZWQpKERNX0NBQ0hFX01FVEFEQVRBX0JMT0NL X1NJWkUgPj4gU0VDVE9SX1NISUZUKSwKIAkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpKG5y X2Jsb2Nrc19tZXRhZGF0YSAtIG5yX2ZyZWVfYmxvY2tzX21ldGFkYXRhKSwKIAkJICAgICAgICh1 bnNpZ25lZCBsb25nIGxvbmcpbnJfYmxvY2tzX21ldGFkYXRhLAotCQkgICAgICAgY2FjaGUtPnNl Y3RvcnNfcGVyX2Jsb2NrLAorCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyljYWNoZS0+c2Vj dG9yc19wZXJfYmxvY2ssCiAJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKSBmcm9tX2NibG9j ayhyZXNpZGVuY3kpLAogCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgZnJvbV9jYmxvY2so Y2FjaGUtPmNhY2hlX3NpemUpLAogCQkgICAgICAgKHVuc2lnbmVkKSBhdG9taWNfcmVhZCgmY2Fj aGUtPnN0YXRzLnJlYWRfaGl0KSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbGluZWFyLmMgYi9k cml2ZXJzL21kL2xpbmVhci5jCmluZGV4IDU2ZjUzNGI0YTJkMi4uYzJmNGNmMGI1OTAzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL21kL2xpbmVhci5jCisrKyBiL2RyaXZlcnMvbWQvbGluZWFyLmMKQEAg LTk3LDYgKzk3LDEyIEBAIHN0YXRpYyBpbnQgbGluZWFyX21lcmdlYWJsZV9idmVjKHN0cnVjdCBy ZXF1ZXN0X3F1ZXVlICpxLAogCQlyZXR1cm4gbWF4c2VjdG9ycyA8PCA5OwogfQogCisvKgorICog SW4gbGluZWFyX2Nvbmdlc3RlZCgpIGNvbmYtPnJhaWRfZGlza3MgaXMgdXNlZCBhcyBhIGNvcHkg b2YKKyAqIG1kZGV2LT5yYWlkX2Rpc2tzIHRvIGl0ZXJhdGUgY29uZi0+ZGlza3NbXSwgYmVjYXVz ZSBjb25mLT5yYWlkX2Rpc2tzCisgKiBhbmQgY29uZi0+ZGlza3NbXSBhcmUgY3JlYXRlZCBpbiBs aW5lYXJfY29uZigpLCB0aGV5IGFyZSBhbHdheXMKKyAqIGNvbnNpdGVudCB3aXRoIGVhY2ggb3Ro ZXIsIGJ1dCBtZGRldi0+cmFpZF9kaXNrcyBkb2VzIG5vdC4KKyAqLwogc3RhdGljIGludCBsaW5l YXJfY29uZ2VzdGVkKHZvaWQgKmRhdGEsIGludCBiaXRzKQogewogCXN0cnVjdCBtZGRldiAqbWRk ZXYgPSBkYXRhOwpAQCAtMTA5LDcgKzExNSw3IEBAIHN0YXRpYyBpbnQgbGluZWFyX2Nvbmdlc3Rl ZCh2b2lkICpkYXRhLCBpbnQgYml0cykKIAlyY3VfcmVhZF9sb2NrKCk7CiAJY29uZiA9IHJjdV9k ZXJlZmVyZW5jZShtZGRldi0+cHJpdmF0ZSk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbWRkZXYtPnJh aWRfZGlza3MgJiYgIXJldCA7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBjb25mLT5yYWlkX2Rp c2tzICYmICFyZXQgOyBpKyspIHsKIAkJc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShjb25mLT5kaXNrc1tpXS5yZGV2LT5iZGV2KTsKIAkJcmV0IHw9IGJkaV9jb25nZXN0 ZWQoJnEtPmJhY2tpbmdfZGV2X2luZm8sIGJpdHMpOwogCX0KQEAgLTE5Niw2ICsyMDIsMTkgQEAg c3RhdGljIHN0cnVjdCBsaW5lYXJfY29uZiAqbGluZWFyX2NvbmYoc3RydWN0IG1kZGV2ICptZGRl diwgaW50IHJhaWRfZGlza3MpCiAJCQljb25mLT5kaXNrc1tpLTFdLmVuZF9zZWN0b3IgKwogCQkJ Y29uZi0+ZGlza3NbaV0ucmRldi0+c2VjdG9yczsKIAorCS8qCisJICogY29uZi0+cmFpZF9kaXNr cyBpcyBjb3B5IG9mIG1kZGV2LT5yYWlkX2Rpc2tzLiBUaGUgcmVhc29uIHRvCisJICoga2VlcCBh IGNvcHkgb2YgbWRkZXYtPnJhaWRfZGlza3MgaW4gc3RydWN0IGxpbmVhcl9jb25mIGlzLAorCSAq IG1kZGV2LT5yYWlkX2Rpc2tzIG1heSBub3QgYmUgY29uc2lzdGVudCB3aXRoIHBvaW50ZXJzIG51 bWJlciBvZgorCSAqIGNvbmYtPmRpc2tzW10gd2hlbiBpdCBpcyB1cGRhdGVkIGluIGxpbmVhcl9h ZGQoKSBhbmQgdXNlZCB0bworCSAqIGl0ZXJhdGUgb2xkIGNvbmYtPmRpc2tzW10gZWFycmF5IGlu IGxpbmVhcl9jb25nZXN0ZWQoKS4KKwkgKiBIZXJlIGNvbmYtPnJhaWRfZGlza3MgaXMgYWx3YXlz IGNvbnNpdGVudCB3aXRoIG51bWJlciBvZgorCSAqIHBvaW50ZXJzIGluIGNvbmYtPmRpc2tzW10g YXJyYXksIGFuZCBtZGRldi0+cHJpdmF0ZSBpcyB1cGRhdGVkCisJICogd2l0aCByY3VfYXNzaWdu X3BvaW50ZXIoKSBpbiBsaW5lYXJfYWRkcigpLCBzdWNoIHJhY2UgY2FuIGJlCisJICogYXZvaWRl ZC4KKwkgKi8KKwljb25mLT5yYWlkX2Rpc2tzID0gcmFpZF9kaXNrczsKKwogCXJldHVybiBjb25m OwogCiBvdXQ6CkBAIC0yNTIsMTAgKzI3MSwxOCBAQCBzdGF0aWMgaW50IGxpbmVhcl9hZGQoc3Ry dWN0IG1kZGV2ICptZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYpCiAJaWYgKCFuZXdjb25mKQog CQlyZXR1cm4gLUVOT01FTTsKIAorCS8qIG5ld2NvbmYtPnJhaWRfZGlza3MgYWxyZWFkeSBrZWVw cyBhIGNvcHkgb2YgKiB0aGUgaW5jcmVhc2VkCisJICogdmFsdWUgb2YgbWRkZXYtPnJhaWRfZGlz a3MsIFdBUk5fT05DRSgpIGlzIGp1c3QgdXNlZCB0byBtYWtlCisJICogc3VyZSBvZiB0aGlzLiBJ dCBpcyBwb3NzaWJsZSB0aGF0IG9sZGNvbmYgaXMgc3RpbGwgcmVmZXJlbmNlZAorCSAqIGluIGxp bmVhcl9jb25nZXN0ZWQoKSwgdGhlcmVmb3JlIGtmcmVlX3JjdSgpIGlzIHVzZWQgdG8gZnJlZQor CSAqIG9sZGNvbmYgdW50aWwgbm8gb25lIHVzZXMgaXQgYW55bW9yZS4KKwkgKi8KIAlvbGRjb25m ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtZGRldi0+cHJpdmF0ZSwKIAkJCQkJICAgIGxv Y2tkZXBfaXNfaGVsZCgKIAkJCQkJCSAgICAmbWRkZXYtPnJlY29uZmlnX211dGV4KSk7CiAJbWRk ZXYtPnJhaWRfZGlza3MrKzsKKwlXQVJOX09OQ0UobWRkZXYtPnJhaWRfZGlza3MgIT0gbmV3Y29u Zi0+cmFpZF9kaXNrcywKKwkJImNvcGllZCByYWlkX2Rpc2tzIGRvZXNuJ3QgbWF0Y2ggbWRkZXYt PnJhaWRfZGlza3MiKTsKIAlyY3VfYXNzaWduX3BvaW50ZXIobWRkZXYtPnByaXZhdGUsIG5ld2Nv bmYpOwogCW1kX3NldF9hcnJheV9zZWN0b3JzKG1kZGV2LCBsaW5lYXJfc2l6ZShtZGRldiwgMCwg MCkpOwogCXNldF9jYXBhY2l0eShtZGRldi0+Z2VuZGlzaywgbWRkZXYtPmFycmF5X3NlY3RvcnMp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9saW5lYXIuaCBiL2RyaXZlcnMvbWQvbGluZWFyLmgK aW5kZXggYjY4NWRkZDdkN2Y3Li44ZDM5MmU2MDk4YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQv bGluZWFyLmgKKysrIGIvZHJpdmVycy9tZC9saW5lYXIuaApAQCAtMTAsNiArMTAsNyBAQCBzdHJ1 Y3QgbGluZWFyX2NvbmYKIHsKIAlzdHJ1Y3QgcmN1X2hlYWQJCXJjdTsKIAlzZWN0b3JfdAkJYXJy YXlfc2VjdG9yczsKKwlpbnQJCQlyYWlkX2Rpc2tzOyAvKiBhIGNvcHkgb2YgbWRkZXYtPnJhaWRf ZGlza3MgKi8KIAlzdHJ1Y3QgZGV2X2luZm8JCWRpc2tzWzBdOwogfTsKICNlbmRpZgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jCmluZGV4IDRkYjA5MmNmM2Ex ZC4uNjhkOTcxNGZmYzU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL21kLmMKKysrIGIvZHJpdmVy cy9tZC9tZC5jCkBAIC04NzE0LDcgKzg3MTQsMTQgQEAgc3RhdGljIF9fZXhpdCB2b2lkIG1kX2V4 aXQodm9pZCkKIAogCWZvcl9lYWNoX21kZGV2KG1kZGV2LCB0bXApIHsKIAkJZXhwb3J0X2FycmF5 KG1kZGV2KTsKKwkJbWRkZXYtPmN0aW1lID0gMDsKIAkJbWRkZXYtPmhvbGRfYWN0aXZlID0gMDsK KwkJLyoKKwkJICogZm9yX2VhY2hfbWRkZXYoKSB3aWxsIGNhbGwgbWRkZXZfcHV0KCkgYXQgdGhl IGVuZCBvZiBlYWNoCisJCSAqIGl0ZXJhdGlvbi4gIEFzIHRoZSBtZGRldiBpcyBub3cgZnVsbHkg Y2xlYXIsIHRoaXMgd2lsbAorCQkgKiBzY2hlZHVsZSB0aGUgbWRkZXYgZm9yIGRlc3RydWN0aW9u IGJ5IGEgd29ya3F1ZXVlLCBhbmQgdGhlCisJCSAqIGRlc3Ryb3lfd29ya3F1ZXVlKCkgYmVsb3cg d2lsbCB3YWl0IGZvciB0aGF0IHRvIGNvbXBsZXRlLgorCQkgKi8KIAl9CiAJZGVzdHJveV93b3Jr cXVldWUobWRfbWlzY193cSk7CiAJZGVzdHJveV93b3JrcXVldWUobWRfd3EpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYwNC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYw NC5jCmluZGV4IGY3MGNkZWEyZmNjMS4uYWY4YTk5NzE2ZGU1IDEwMDY0NAotLS0gYS9kcml2ZXJz L21lZGlhL2kyYy9hZHY3NjA0LmMKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYwNC5jCkBA IC0yNzM1LDYgKzI3MzUsOSBAQCBzdGF0aWMgaW50IGFkdjc2MDRfcGFyc2VfZHQoc3RydWN0IGFk djc2MDRfc3RhdGUgKnN0YXRlKQogCXN0YXRlLT5wZGF0YS5hbHRfZGF0YV9zYXQgPSAxOwogCXN0 YXRlLT5wZGF0YS5vcF9mb3JtYXRfbW9kZV9zZWwgPSBBRFY3NjA0X09QX0ZPUk1BVF9NT0RFMDsK IAlzdGF0ZS0+cGRhdGEuYnVzX29yZGVyID0gQURWNzYwNF9CVVNfT1JERVJfUkdCOworCXN0YXRl LT5wZGF0YS5kcl9zdHJfZGF0YSA9IEFEVjc2WFhfRFJfU1RSX01FRElVTV9ISUdIOworCXN0YXRl LT5wZGF0YS5kcl9zdHJfY2xrID0gQURWNzZYWF9EUl9TVFJfTUVESVVNX0hJR0g7CisJc3RhdGUt PnBkYXRhLmRyX3N0cl9zeW5jID0gQURWNzZYWF9EUl9TVFJfTUVESVVNX0hJR0g7CiAKIAlyZXR1 cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGNpL2RtMTEwNS9LY29uZmlnIGIv ZHJpdmVycy9tZWRpYS9wY2kvZG0xMTA1L0tjb25maWcKaW5kZXggMTczZGFmMGMwODQ3Li4xNGZh N2U0MGYyYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGNpL2RtMTEwNS9LY29uZmlnCisr KyBiL2RyaXZlcnMvbWVkaWEvcGNpL2RtMTEwNS9LY29uZmlnCkBAIC0xLDYgKzEsNiBAQAogY29u ZmlnIERWQl9ETTExMDUKIAl0cmlzdGF0ZSAiU0RNQyBETTExMDUgYmFzZWQgUENJIGNhcmRzIgot CWRlcGVuZHMgb24gRFZCX0NPUkUgJiYgUENJICYmIEkyQworCWRlcGVuZHMgb24gRFZCX0NPUkUg JiYgUENJICYmIEkyQyAmJiBJMkNfQUxHT0JJVAogCXNlbGVjdCBEVkJfUExMIGlmIE1FRElBX1NV QkRSVl9BVVRPU0VMRUNUCiAJc2VsZWN0IERWQl9TVFYwMjk5IGlmIE1FRElBX1NVQkRSVl9BVVRP U0VMRUNUCiAJc2VsZWN0IERWQl9TVFYwMjg4IGlmIE1FRElBX1NVQkRSVl9BVVRPU0VMRUNUCmRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi9kdmItdXNiLXYyL2R2Yl91c2JfY29yZS5jIGIv ZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi12Mi9kdmJfdXNiX2NvcmUuYwppbmRleCBlMzU1ODA2 MTg5MzYuLjc1YjExZmYwZTdkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvZHZiLXVz Yi12Mi9kdmJfdXNiX2NvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3VzYi9kdmItdXNiLXYyL2R2 Yl91c2JfY29yZS5jCkBAIC05NDIsOCArOTQyLDggQEAgRVhQT1JUX1NZTUJPTChkdmJfdXNidjJf cHJvYmUpOwogdm9pZCBkdmJfdXNidjJfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAq aW50ZikKIHsKIAlzdHJ1Y3QgZHZiX3VzYl9kZXZpY2UgKmQgPSB1c2JfZ2V0X2ludGZkYXRhKGlu dGYpOwotCWNvbnN0IGNoYXIgKm5hbWUgPSBkLT5uYW1lOwotCXN0cnVjdCBkZXZpY2UgZGV2ID0g ZC0+dWRldi0+ZGV2OworCWNvbnN0IGNoYXIgKmRldm5hbWUgPSBrc3RyZHVwKGRldl9uYW1lKCZk LT51ZGV2LT5kZXYpLCBHRlBfS0VSTkVMKTsKKwljb25zdCBjaGFyICpkcnZuYW1lID0gZC0+bmFt ZTsKIAlkZXZfZGJnKCZkLT51ZGV2LT5kZXYsICIlczogYkludGVyZmFjZU51bWJlcj0lZFxuIiwg X19mdW5jX18sCiAJCQlpbnRmLT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5iSW50ZXJmYWNlTnVtYmVy KTsKIApAQCAtOTUyLDggKzk1Miw5IEBAIHZvaWQgZHZiX3VzYnYyX2Rpc2Nvbm5lY3Qoc3RydWN0 IHVzYl9pbnRlcmZhY2UgKmludGYpCiAKIAlkdmJfdXNidjJfZXhpdChkKTsKIAotCWRldl9pbmZv KCZkZXYsICIlczogJyVzJyBzdWNjZXNzZnVsbHkgZGVpbml0aWFsaXplZCBhbmQgZGlzY29ubmVj dGVkXG4iLAotCQkJS0JVSUxEX01PRE5BTUUsIG5hbWUpOworCXByX2luZm8oIiVzOiAnJXM6JXMn IHN1Y2Nlc3NmdWxseSBkZWluaXRpYWxpemVkIGFuZCBkaXNjb25uZWN0ZWRcbiIsCisJCUtCVUlM RF9NT0ROQU1FLCBkcnZuYW1lLCBkZXZuYW1lKTsKKwlrZnJlZShkZXZuYW1lKTsKIH0KIEVYUE9S VF9TWU1CT0woZHZiX3VzYnYyX2Rpc2Nvbm5lY3QpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3VzYi91dmMvdXZjX3F1ZXVlLmMgYi9kcml2ZXJzL21lZGlhL3VzYi91dmMvdXZjX3F1ZXVl LmMKaW5kZXggNmU5MmQyMDgwMjU1Li40NTMwOTRiMjhiNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWVkaWEvdXNiL3V2Yy91dmNfcXVldWUuYworKysgYi9kcml2ZXJzL21lZGlhL3VzYi91dmMvdXZj X3F1ZXVlLmMKQEAgLTM5MCw3ICszOTAsNyBAQCBzdHJ1Y3QgdXZjX2J1ZmZlciAqdXZjX3F1ZXVl X25leHRfYnVmZmVyKHN0cnVjdCB1dmNfdmlkZW9fcXVldWUgKnF1ZXVlLAogCQluZXh0YnVmID0g TlVMTDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZxdWV1ZS0+aXJxbG9jaywgZmxhZ3MpOwog Ci0JYnVmLT5zdGF0ZSA9IGJ1Zi0+ZXJyb3IgPyBWQjJfQlVGX1NUQVRFX0VSUk9SIDogVVZDX0JV Rl9TVEFURV9ET05FOworCWJ1Zi0+c3RhdGUgPSBidWYtPmVycm9yID8gVVZDX0JVRl9TVEFURV9F UlJPUiA6IFVWQ19CVUZfU1RBVEVfRE9ORTsKIAl2YjJfc2V0X3BsYW5lX3BheWxvYWQoJmJ1Zi0+ YnVmLCAwLCBidWYtPmJ5dGVzdXNlZCk7CiAJdmIyX2J1ZmZlcl9kb25lKCZidWYtPmJ1ZiwgVkIy X0JVRl9TVEFURV9ET05FKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9vbWFwX2hz bW1jLmMgYi9kcml2ZXJzL21tYy9ob3N0L29tYXBfaHNtbWMuYwppbmRleCBkNDM2ODYwM2U2N2Eu LmEwYTAyYThhNTcyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9vbWFwX2hzbW1jLmMK KysrIGIvZHJpdmVycy9tbWMvaG9zdC9vbWFwX2hzbW1jLmMKQEAgLTEzOTMsMTAgKzEzOTMsMTEg QEAgc3RhdGljIGludCBvbWFwX2hzbW1jX3NldHVwX2RtYV90cmFuc2ZlcihzdHJ1Y3Qgb21hcF9o c21tY19ob3N0ICpob3N0LAogfQogCiBzdGF0aWMgdm9pZCBzZXRfZGF0YV90aW1lb3V0KHN0cnVj dCBvbWFwX2hzbW1jX2hvc3QgKmhvc3QsCi0JCQkgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0X25z LAorCQkJICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZW91dF9ucywKIAkJCSAgICAgdW5zaWdu ZWQgaW50IHRpbWVvdXRfY2xrcykKIHsKLQl1bnNpZ25lZCBpbnQgdGltZW91dCwgY3ljbGVfbnM7 CisJdW5zaWduZWQgbG9uZyBsb25nIHRpbWVvdXQgPSB0aW1lb3V0X25zOworCXVuc2lnbmVkIGlu dCBjeWNsZV9uczsKIAl1aW50MzJfdCByZWcsIGNsa2QsIGR0byA9IDA7CiAKIAlyZWcgPSBPTUFQ X0hTTU1DX1JFQUQoaG9zdC0+YmFzZSwgU1lTQ1RMKTsKQEAgLTE0MDUsNyArMTQwNiw3IEBAIHN0 YXRpYyB2b2lkIHNldF9kYXRhX3RpbWVvdXQoc3RydWN0IG9tYXBfaHNtbWNfaG9zdCAqaG9zdCwK IAkJY2xrZCA9IDE7CiAKIAljeWNsZV9ucyA9IDEwMDAwMDAwMDAgLyAoaG9zdC0+Y2xrX3JhdGUg LyBjbGtkKTsKLQl0aW1lb3V0ID0gdGltZW91dF9ucyAvIGN5Y2xlX25zOworCWRvX2Rpdih0aW1l b3V0LCBjeWNsZV9ucyk7CiAJdGltZW91dCArPSB0aW1lb3V0X2Nsa3M7CiAJaWYgKHRpbWVvdXQp IHsKIAkJd2hpbGUgKCh0aW1lb3V0ICYgMHg4MDAwMDAwMCkgPT0gMCkgewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jIGIvZHJpdmVycy9uZXQvY2FuL3VzYi91c2Jf OGRldi5jCmluZGV4IGVmNjc0ZWNiODJmOC4uNjljMTBmM2I0ZTI3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3VzYi91c2Jf OGRldi5jCkBAIC05NTcsOCArOTU3LDggQEAgc3RhdGljIGludCB1c2JfOGRldl9wcm9iZShzdHJ1 Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAlmb3IgKGkgPSAwOyBpIDwgTUFYX1RYX1VSQlM7IGkr KykKIAkJcHJpdi0+dHhfY29udGV4dHNbaV0uZWNob19pbmRleCA9IE1BWF9UWF9VUkJTOwogCi0J cHJpdi0+Y21kX21zZ19idWZmZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdXNiXzhkZXZfY21k X21zZyksCi0JCQkJICAgICAgR0ZQX0tFUk5FTCk7CisJcHJpdi0+Y21kX21zZ19idWZmZXIgPSBk ZXZtX2t6YWxsb2MoJmludGYtPmRldiwgc2l6ZW9mKHN0cnVjdCB1c2JfOGRldl9jbWRfbXNnKSwK KwkJCQkJICAgIEdGUF9LRVJORUwpOwogCWlmICghcHJpdi0+Y21kX21zZ19idWZmZXIpCiAJCWdv dG8gY2xlYW51cF9jYW5kZXY7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBzdGF0aWMgaW50IHVzYl84 ZGV2X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCWlmIChlcnIpIHsKIAkJbmV0 ZGV2X2VycihuZXRkZXYsCiAJCQkiY291bGRuJ3QgcmVnaXN0ZXIgQ0FOIGRldmljZTogJWRcbiIs IGVycik7Ci0JCWdvdG8gY2xlYW51cF9jbWRfbXNnX2J1ZmZlcjsKKwkJZ290byBjbGVhbnVwX2Nh bmRldjsKIAl9CiAKIAllcnIgPSB1c2JfOGRldl9jbWRfdmVyc2lvbihwcml2LCAmdmVyc2lvbik7 CkBAIC05OTMsOSArOTkzLDYgQEAgc3RhdGljIGludCB1c2JfOGRldl9wcm9iZShzdHJ1Y3QgdXNi X2ludGVyZmFjZSAqaW50ZiwKIGNsZWFudXBfdW5yZWdpc3Rlcl9jYW5kZXY6CiAJdW5yZWdpc3Rl cl9uZXRkZXYocHJpdi0+bmV0ZGV2KTsKIAotY2xlYW51cF9jbWRfbXNnX2J1ZmZlcjoKLQlrZnJl ZShwcml2LT5jbWRfbXNnX2J1ZmZlcik7Ci0KIGNsZWFudXBfY2FuZGV2OgogCWZyZWVfY2FuZGV2 KG5ldGRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2Jn bWFjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jCmluZGV4IDRmOTVl NzIyMjgzNC4uZGNkYzY2OTI5MjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9i cm9hZGNvbS9iZ21hYy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFj LmMKQEAgLTEyMzgsMTIgKzEyMzgsMTYgQEAgc3RhdGljIG5ldGRldl90eF90IGJnbWFjX3N0YXJ0 X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIHN0YXRpYyBpbnQgYmdtYWNfc2V0X21hY19hZGRy ZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LCB2b2lkICphZGRyKQogewogCXN0cnVjdCBi Z21hYyAqYmdtYWMgPSBuZXRkZXZfcHJpdihuZXRfZGV2KTsKKwlzdHJ1Y3Qgc29ja2FkZHIgKnNh ID0gYWRkcjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gZXRoX3ByZXBhcmVfbWFjX2FkZHJfY2hhbmdl KG5ldF9kZXYsIGFkZHIpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwotCWJnbWFjX3dy aXRlX21hY19hZGRyZXNzKGJnbWFjLCAodTggKilhZGRyKTsKKworCWV0aGVyX2FkZHJfY29weShu ZXRfZGV2LT5kZXZfYWRkciwgc2EtPnNhX2RhdGEpOworCWJnbWFjX3dyaXRlX21hY19hZGRyZXNz KGJnbWFjLCBuZXRfZGV2LT5kZXZfYWRkcik7CisKIAlldGhfY29tbWl0X21hY19hZGRyX2NoYW5n ZShuZXRfZGV2LCBhZGRyKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDQvY21kLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg0L2NtZC5jCmluZGV4IDBjMTU4ZWMzMTcwZC4uZDM4NTcyZGU4OTQ2IDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2NtZC5jCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvY21kLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNp bmNsdWRlIDxsaW51eC9tbHg0L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NlbWFwaG9yZS5o PgogI2luY2x1ZGUgPHJkbWEvaWJfc21pLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2Uu aD4KIAogI2luY2x1ZGUgPGFzbS9pby5oPgogCkBAIC0yNDA5LDcgKzI0MTAsNyBAQCBzdGF0aWMg aW50IG1seDRfc2xhdmVzX2Nsb3Nlc3RfcG9ydChzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHNs YXZlLCBpbnQgcG9ydCkKIAlyZXR1cm4gcG9ydDsKIH0KIAotaW50IG1seDRfc2V0X3ZmX21hYyhz dHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHBvcnQsIGludCB2ZiwgdTY0IG1hYykKK2ludCBtbHg0 X3NldF92Zl9tYWMoc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBwb3J0LCBpbnQgdmYsIHU4ICpt YWMpCiB7CiAJc3RydWN0IG1seDRfcHJpdiAqcHJpdiA9IG1seDRfcHJpdihkZXYpOwogCXN0cnVj dCBtbHg0X3Zwb3J0X3N0YXRlICpzX2luZm87CkBAIC0yNDE4LDEzICsyNDE5LDIyIEBAIGludCBt bHg0X3NldF92Zl9tYWMoc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBwb3J0LCBpbnQgdmYsIHU2 NCBtYWMpCiAJaWYgKCFtbHg0X2lzX21hc3RlcihkZXYpKQogCQlyZXR1cm4gLUVQUk9UT05PU1VQ UE9SVDsKIAorCWlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtYWMpKQorCQlyZXR1cm4gLUVJ TlZBTDsKKwogCXNsYXZlID0gbWx4NF9nZXRfc2xhdmVfaW5keChkZXYsIHZmKTsKIAlpZiAoc2xh dmUgPCAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXBvcnQgPSBtbHg0X3NsYXZlc19jbG9zZXN0 X3BvcnQoZGV2LCBzbGF2ZSwgcG9ydCk7CiAJc19pbmZvID0gJnByaXYtPm1mdW5jLm1hc3Rlci52 Zl9hZG1pbltzbGF2ZV0udnBvcnRbcG9ydF07Ci0Jc19pbmZvLT5tYWMgPSBtYWM7CisKKwlpZiAo c19pbmZvLT5zcG9vZmNoayAmJiBpc196ZXJvX2V0aGVyX2FkZHIobWFjKSkgeworCQltbHg0X2lu Zm8oZGV2LCAiTUFDIGludmFsaWRhdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHNwb29mY2hrIGlz IG9uXG4iKTsKKwkJcmV0dXJuIC1FUEVSTTsKKwl9CisKKwlzX2luZm8tPm1hYyA9IG1seDRfbWFj X3RvX3U2NChtYWMpOwogCW1seDRfaW5mbyhkZXYsICJkZWZhdWx0IG1hYyBvbiB2ZiAlZCBwb3J0 ICVkIHRvICVsbFggd2lsbCB0YWtlIGFmZWN0IG9ubHkgYWZ0ZXIgdmYgcmVzdGFydFxuIiwKIAkJ ICB2ZiwgcG9ydCwgc19pbmZvLT5tYWMpOwogCXJldHVybiAwOwpAQCAtMjQ5Niw2ICsyNTA2LDcg QEAgaW50IG1seDRfc2V0X3ZmX3Nwb29mY2hrKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgcG9y dCwgaW50IHZmLCBib29sIHNldHRpbmcpCiAJc3RydWN0IG1seDRfcHJpdiAqcHJpdiA9IG1seDRf cHJpdihkZXYpOwogCXN0cnVjdCBtbHg0X3Zwb3J0X3N0YXRlICpzX2luZm87CiAJaW50IHNsYXZl OworCXU4IG1hY1tFVEhfQUxFTl07CiAKIAlpZiAoKCFtbHg0X2lzX21hc3RlcihkZXYpKSB8fAog CSAgICAhKGRldi0+Y2Fwcy5mbGFnczIgJiBNTFg0X0RFVl9DQVBfRkxBRzJfRlNNKSkKQEAgLTI1 MDcsNiArMjUxOCwxMyBAQCBpbnQgbWx4NF9zZXRfdmZfc3Bvb2ZjaGsoc3RydWN0IG1seDRfZGV2 ICpkZXYsIGludCBwb3J0LCBpbnQgdmYsIGJvb2wgc2V0dGluZykKIAogCXBvcnQgPSBtbHg0X3Ns YXZlc19jbG9zZXN0X3BvcnQoZGV2LCBzbGF2ZSwgcG9ydCk7CiAJc19pbmZvID0gJnByaXYtPm1m dW5jLm1hc3Rlci52Zl9hZG1pbltzbGF2ZV0udnBvcnRbcG9ydF07CisKKwltbHg0X3U2NF90b19t YWMobWFjLCBzX2luZm8tPm1hYyk7CisJaWYgKHNldHRpbmcgJiYgIWlzX3ZhbGlkX2V0aGVyX2Fk ZHIobWFjKSkgeworCQltbHg0X2luZm8oZGV2LCAiSWxsZWdhbCBNQUMgd2l0aCBzcG9vZmNoa1xu Iik7CisJCXJldHVybiAtRVBFUk07CisJfQorCiAJc19pbmZvLT5zcG9vZmNoayA9IHNldHRpbmc7 CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDQvZW5fbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2Vu X25ldGRldi5jCmluZGV4IDZiZjRlYTQwMDY0My4uMTAwNmU3NzBjMTA5IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMKQEAgLTIyNTMsMTIgKzIy NTMsOCBAQCBzdGF0aWMgaW50IG1seDRfZW5fc2V0X3ZmX21hYyhzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2LCBpbnQgcXVldWUsIHU4ICptYWMpCiB7CiAJc3RydWN0IG1seDRfZW5fcHJpdiAqZW5fcHJp diA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IG1seDRfZW5fZGV2ICptZGV2ID0gZW5fcHJp di0+bWRldjsKLQl1NjQgbWFjX3U2NCA9IG1seDRfbWFjX3RvX3U2NChtYWMpOwogCi0JaWYgKGlz X211bHRpY2FzdF9ldGhlcl9hZGRyKG1hYykpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JcmV0dXJu IG1seDRfc2V0X3ZmX21hYyhtZGV2LT5kZXYsIGVuX3ByaXYtPnBvcnQsIHF1ZXVlLCBtYWNfdTY0 KTsKKwlyZXR1cm4gbWx4NF9zZXRfdmZfbWFjKG1kZXYtPmRldiwgZW5fcHJpdi0+cG9ydCwgcXVl dWUsIG1hYyk7CiB9CiAKIHN0YXRpYyBpbnQgbWx4NF9lbl9zZXRfdmZfdmxhbihzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2LCBpbnQgdmYsIHUxNiB2bGFuLCB1OCBxb3MpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3J4LmMgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg0L2VuX3J4LmMKaW5kZXggYjA3ZjRjMGQ2MTdiLi45MjA0NWFkYzc0 ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fcngu YworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3J4LmMKQEAgLTU2 NSwxMCArNTY1LDEwIEBAIHN0YXRpYyBpbnQgbWx4NF9lbl9jb21wbGV0ZV9yeF9kZXNjKHN0cnVj dCBtbHg0X2VuX3ByaXYgKnByaXYsCiAJCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHByaXYtPmRk ZXYsIGRtYSwgZnJhZ19pbmZvLT5mcmFnX3NpemUsCiAJCQkJCURNQV9GUk9NX0RFVklDRSk7CiAK LQkJLyogU2F2ZSBwYWdlIHJlZmVyZW5jZSBpbiBza2IgKi8KLQkJX19za2JfZnJhZ19zZXRfcGFn ZSgmc2tiX2ZyYWdzX3J4W25yXSwgZnJhZ3NbbnJdLnBhZ2UpOwotCQlza2JfZnJhZ19zaXplX3Nl dCgmc2tiX2ZyYWdzX3J4W25yXSwgZnJhZ19pbmZvLT5mcmFnX3NpemUpOwotCQlza2JfZnJhZ3Nf cnhbbnJdLnBhZ2Vfb2Zmc2V0ID0gZnJhZ3NbbnJdLnBhZ2Vfb2Zmc2V0OworCQlfX3NrYl9maWxs X3BhZ2VfZGVzYyhza2IsIG5yLCBmcmFnc1tucl0ucGFnZSwKKwkJCQkgICAgIGZyYWdzW25yXS5w YWdlX29mZnNldCwKKwkJCQkgICAgIGZyYWdfaW5mby0+ZnJhZ19zaXplKTsKKwogCQlza2ItPnRy dWVzaXplICs9IGZyYWdfaW5mby0+ZnJhZ19zdHJpZGU7CiAJCWZyYWdzW25yXS5wYWdlID0gTlVM TDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21h aW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWFpbi5jCmluZGV4IGEw YzIxNTVjNDdlOC4uYzFjMjEyMzFmNDQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg0L21haW4uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg0L21haW4uYwpAQCAtNTg1LDggKzU4NSw2IEBAIHN0YXRpYyBpbnQgbWx4NF9zbGF2ZV9j YXAoc3RydWN0IG1seDRfZGV2ICpkZXYpCiAJCXJldHVybiAtRU5PU1lTOwogCX0KIAotCW1seDRf bG9nX251bV9tZ21fZW50cnlfc2l6ZSA9IGhjYV9wYXJhbS5sb2dfbWNfZW50cnlfc3o7Ci0KIAlk ZXYtPmNhcHMuaGNhX2NvcmVfY2xvY2sgPSBoY2FfcGFyYW0uaGNhX2NvcmVfY2xvY2s7CiAKIAlt ZW1zZXQoJmRldl9jYXAsIDAsIHNpemVvZihkZXZfY2FwKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDRfZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDQvbWx4NF9lbi5oCmluZGV4IDRlNDcyMzlkMDMxZC4uNjI1NTM3MDEw ODc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDRf ZW4uaAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDRfZW4uaApA QCAtOTgsNyArOTgsOCBAQAogLyogVXNlIHRoZSBtYXhpbXVtIGJldHdlZW4gMTYzODQgYW5kIGEg c2luZ2xlIHBhZ2UgKi8KICNkZWZpbmUgTUxYNF9FTl9BTExPQ19TSVpFCVBBR0VfQUxJR04oMTYz ODQpCiAKLSNkZWZpbmUgTUxYNF9FTl9BTExPQ19QUkVGRVJfT1JERVIJUEFHRV9BTExPQ19DT1NU TFlfT1JERVIKKyNkZWZpbmUgTUxYNF9FTl9BTExPQ19QUkVGRVJfT1JERVIgbWluX3QoaW50LCBn ZXRfb3JkZXIoMzI3NjgpLAkJXAorCQkJCQkgUEFHRV9BTExPQ19DT1NUTFlfT1JERVIpCiAKIC8q IFJlY2VpdmUgZnJhZ21lbnQgc2l6ZXM7IHdlIHVzZSBhdCBtb3N0IDMgZnJhZ21lbnRzIChmb3Ig OTYwMCBieXRlIE1UVQogICogYW5kIDRLIGFsbG9jYXRpb25zKSAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2Vm eC5jCmluZGV4IDFlMjc0MDQ1OTcwZi4uNGRkMTk3MWZkMzY2IDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9zZmMvZWZ4LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2Vm eC5jCkBAIC04MzMsNyArODMzLDcgQEAgb3V0OgogCQllZnhfc2NoZWR1bGVfcmVzZXQoZWZ4LCBS RVNFVF9UWVBFX0RJU0FCTEUpOwogCX0gZWxzZSB7CiAJCWVmeF9zdGFydF9hbGwoZWZ4KTsKLQkJ bmV0aWZfZGV2aWNlX2F0dGFjaChlZngtPm5ldF9kZXYpOworCQllZnhfZGV2aWNlX2F0dGFjaF9p Zl9ub3RfcmVzZXR0aW5nKGVmeCk7CiAJfQogCXJldHVybiByYzsKIApAQCAtMjAzNiw2ICsyMDM2 LDggQEAgc3RhdGljIGludCBlZnhfbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYp CiAJZWZ4X2xpbmtfc3RhdHVzX2NoYW5nZWQoZWZ4KTsKIAogCWVmeF9zdGFydF9hbGwoZWZ4KTsK KwlpZiAoZWZ4LT5zdGF0ZSA9PSBTVEFURV9ESVNBQkxFRCB8fCBlZngtPnJlc2V0X3BlbmRpbmcp CisJCW5ldGlmX2RldmljZV9kZXRhY2goZWZ4LT5uZXRfZGV2KTsKIAllZnhfc2VsZnRlc3RfYXN5 bmNfc3RhcnQoZWZ4KTsKIAlyZXR1cm4gMDsKIH0KQEAgLTIxMDYsNyArMjEwOCw3IEBAIHN0YXRp YyBpbnQgZWZ4X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsIGludCBuZXdf bXR1KQogCW11dGV4X3VubG9jaygmZWZ4LT5tYWNfbG9jayk7CiAKIAllZnhfc3RhcnRfYWxsKGVm eCk7Ci0JbmV0aWZfZGV2aWNlX2F0dGFjaChlZngtPm5ldF9kZXYpOworCWVmeF9kZXZpY2VfYXR0 YWNoX2lmX25vdF9yZXNldHRpbmcoZWZ4KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjQ1NSw3ICsy NDU3LDcgQEAgb3V0OgogCQllZngtPnN0YXRlID0gU1RBVEVfRElTQUJMRUQ7CiAJfSBlbHNlIHsK IAkJbmV0aWZfZGJnKGVmeCwgZHJ2LCBlZngtPm5ldF9kZXYsICJyZXNldCBjb21wbGV0ZVxuIik7 Ci0JCW5ldGlmX2RldmljZV9hdHRhY2goZWZ4LT5uZXRfZGV2KTsKKwkJZWZ4X2RldmljZV9hdHRh Y2hfaWZfbm90X3Jlc2V0dGluZyhlZngpOwogCX0KIAlyZXR1cm4gcmM7CiB9CkBAIC0zMDM1LDcg KzMwMzcsNyBAQCBzdGF0aWMgaW50IGVmeF9wbV90aGF3KHN0cnVjdCBkZXZpY2UgKmRldikKIAog CQllZnhfc3RhcnRfYWxsKGVmeCk7CiAKLQkJbmV0aWZfZGV2aWNlX2F0dGFjaChlZngtPm5ldF9k ZXYpOworCQllZnhfZGV2aWNlX2F0dGFjaF9pZl9ub3RfcmVzZXR0aW5nKGVmeCk7CiAKIAkJZWZ4 LT5zdGF0ZSA9IFNUQVRFX1JFQURZOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9zZmMvZWZ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmgKaW5kZXggOTkwMzI1 ODEzMzZmLi44YzgyYTk5NmI5ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Nm Yy9lZnguaAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmgKQEAgLTI0Nyw0ICsy NDcsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGVmeF9kZXZpY2VfZGV0YWNoX3N5bmMoc3RydWN0 IGVmeF9uaWMgKmVmeCkKIAluZXRpZl90eF91bmxvY2tfYmgoZGV2KTsKIH0KIAorc3RhdGljIGlu bGluZSB2b2lkIGVmeF9kZXZpY2VfYXR0YWNoX2lmX25vdF9yZXNldHRpbmcoc3RydWN0IGVmeF9u aWMgKmVmeCkKK3sKKwlpZiAoKGVmeC0+c3RhdGUgIT0gU1RBVEVfRElTQUJMRUQpICYmICFlZngt PnJlc2V0X3BlbmRpbmcpCisJCW5ldGlmX2RldmljZV9hdHRhY2goZWZ4LT5uZXRfZGV2KTsKK30K KwogI2VuZGlmIC8qIEVGWF9FRlhfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvc2ZjL3NlbGZ0ZXN0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2VsZnRlc3QuYwpp bmRleCBiODc2ZTM4NDdiMWEuLjA1MTZiMjRmNzZlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQvc2ZjL3NlbGZ0ZXN0LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3Nl bGZ0ZXN0LmMKQEAgLTc0OSw3ICs3NDksNyBAQCBpbnQgZWZ4X3NlbGZ0ZXN0KHN0cnVjdCBlZnhf bmljICplZngsIHN0cnVjdCBlZnhfc2VsZl90ZXN0cyAqdGVzdHMsCiAJX19lZnhfcmVjb25maWd1 cmVfcG9ydChlZngpOwogCW11dGV4X3VubG9jaygmZWZ4LT5tYWNfbG9jayk7CiAKLQluZXRpZl9k ZXZpY2VfYXR0YWNoKGVmeC0+bmV0X2Rldik7CisJZWZ4X2RldmljZV9hdHRhY2hfaWZfbm90X3Jl c2V0dGluZyhlZngpOwogCiAJcmV0dXJuIHJjX3Rlc3Q7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC92eGxhbi5jIGIvZHJpdmVycy9uZXQvdnhsYW4uYwppbmRleCA3YmFkZjJhYTNmNjEuLjM0 ZjUxMGY3OGQ2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4uYworKysgYi9kcml2ZXJz L25ldC92eGxhbi5jCkBAIC0yMzI2LDcgKzIzMjYsNyBAQCBzdGF0aWMgaW50IHZ4bGFuX3ZhbGlk YXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSkKIAogCWlmIChk YXRhW0lGTEFfVlhMQU5fSURdKSB7CiAJCV9fdTMyIGlkID0gbmxhX2dldF91MzIoZGF0YVtJRkxB X1ZYTEFOX0lEXSk7Ci0JCWlmIChpZCA+PSBWWExBTl9WSURfTUFTSykKKwkJaWYgKGlkID49IFZY TEFOX05fVklEKQogCQkJcmV0dXJuIC1FUkFOR0U7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hZG04MjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hZG04MjExLmMK aW5kZXggZjM1ZjkzYzMxYjA5Li42MTNjNTU4MGZmODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2FkbTgyMTEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hZG04MjExLmMK QEAgLTE4NDMsNyArMTg0Myw4IEBAIHN0YXRpYyBpbnQgYWRtODIxMV9wcm9iZShzdHJ1Y3QgcGNp X2RldiAqcGRldiwKIAlwcml2LT5yeF9yaW5nX3NpemUgPSByeF9yaW5nX3NpemU7CiAJcHJpdi0+ dHhfcmluZ19zaXplID0gdHhfcmluZ19zaXplOwogCi0JaWYgKGFkbTgyMTFfYWxsb2NfcmluZ3Mo ZGV2KSkgeworCWVyciA9IGFkbTgyMTFfYWxsb2NfcmluZ3MoZGV2KTsKKwlpZiAoZXJyKSB7CiAJ CXByaW50ayhLRVJOX0VSUiAiJXMgKGFkbTgyMTEpOiBDYW5ub3QgYWxsb2NhdGUgVFgvUlggcmlu Z1xuIiwKIAkJICAgICAgIHBjaV9uYW1lKHBkZXYpKTsKIAkJZ290byBlcnJfaW91bm1hcDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9tYWM4MDIxMS1vcHMuYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9tYWM4MDIxMS1vcHMuYwppbmRleCBhZmIy M2IzY2M3YmUuLmViMTE4ZGNlM2M5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDVrL21hYzgwMjExLW9wcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg1ay9tYWM4MDIxMS1vcHMuYwpAQCAtNTExLDggKzUxMSw3IEBAIGF0aDVrX3NldF9rZXkoc3Ry dWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLAogCQkJYnJlYWs7CiAJ CXJldHVybiAtRU9QTk9UU1VQUDsKIAlkZWZhdWx0OgotCQlXQVJOX09OKDEpOwotCQlyZXR1cm4g LUVJTlZBTDsKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCX0KIAogCW11dGV4X2xvY2soJmFoLT5s b2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNf ZWVwcm9tLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5o CmluZGV4IDY5NGNhMmU2ODBlNS4uNzQ2NzBlMDhlNmRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5oCisrKyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmgKQEAgLTczLDEzICs3MywxMyBAQAogI2Rl ZmluZSBBUjkzMDBfT1RQX0JBU0UgXAogCQkoKEFSX1NSRVZfOTM0MChhaCkgfHwgQVJfU1JFVl85 NTUwKGFoKSkgPyAweDMwMDAwIDogMHgxNDAwMCkKICNkZWZpbmUgQVI5MzAwX09UUF9TVEFUVVMg XAotCQkoKEFSX1NSRVZfOTM0MChhaCkgfHwgQVJfU1JFVl85NTUwKGFoKSkgPyAweDMwMDE4IDog MHgxNWYxOCkKKwkJKChBUl9TUkVWXzkzNDAoYWgpIHx8IEFSX1NSRVZfOTU1MChhaCkpID8gMHgz MTAxOCA6IDB4MTVmMTgpCiAjZGVmaW5lIEFSOTMwMF9PVFBfU1RBVFVTX1RZUEUJCTB4NwogI2Rl ZmluZSBBUjkzMDBfT1RQX1NUQVRVU19WQUxJRAkJMHg0CiAjZGVmaW5lIEFSOTMwMF9PVFBfU1RB VFVTX0FDQ0VTU19CVVNZCTB4MgogI2RlZmluZSBBUjkzMDBfT1RQX1NUQVRVU19TTV9CVVNZCTB4 MQogI2RlZmluZSBBUjkzMDBfT1RQX1JFQURfREFUQSBcCi0JCSgoQVJfU1JFVl85MzQwKGFoKSB8 fCBBUl9TUkVWXzk1NTAoYWgpKSA/IDB4MzAwMWMgOiAweDE1ZjFjKQorCQkoKEFSX1NSRVZfOTM0 MChhaCkgfHwgQVJfU1JFVl85NTUwKGFoKSkgPyAweDMxMDFjIDogMHgxNWYxYykKIAogZW51bSB0 YXJnZXRQb3dlckhUUmF0ZXMgewogCUhUX1RBUkdFVF9SQVRFXzBfOF8xNiwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgKaW5kZXggMmNhOGY3ZTA2MTc0Li41ODQxYWNmYTg1NzYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oCisrKyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oCkBAIC03MDksNiArNzA5LDcg QEAgc3RydWN0IGF0aF9zb2Z0YyB7CiAJc3RydWN0IHN1cnZleV9pbmZvICpjdXJfc3VydmV5Owog CXN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIOUtfTlVNX0NIQU5ORUxTXTsKIAorCXNwaW5s b2NrX3QgaW50cl9sb2NrOwogCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCBpbnRyX3RxOwogCXN0cnVj dCB0YXNrbGV0X3N0cnVjdCBiY29uX3Rhc2tsZXQ7CiAJc3RydWN0IGF0aF9odyAqc2NfYWg7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYwppbmRleCBjNjdlZjkzMzFmYmQuLmRiMzVj ODljZjBlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQu YworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jCkBAIC01NTQsNiAr NTU0LDcgQEAgc3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0 aF9zb2Z0YyAqc2MsCiAJCWNvbW1vbi0+YnRfYW50X2RpdmVyc2l0eSA9IDE7CiAKIAlzcGluX2xv Y2tfaW5pdCgmY29tbW9uLT5jY19sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmc2MtPmludHJfbG9j ayk7CiAJc3Bpbl9sb2NrX2luaXQoJnNjLT5zY19zZXJpYWxfcncpOwogCXNwaW5fbG9ja19pbml0 KCZzYy0+c2NfcG1fbG9jayk7CiAJbXV0ZXhfaW5pdCgmc2MtPm11dGV4KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9tYWMuYwppbmRleCAzZTU4YmZhMGMxZmQuLmEyMDRlZjlmYjBmOSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21hYy5jCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWMuYwpAQCAtODA1LDIxICs4MDUsMTIgQEAgdm9p ZCBhdGg5a19od19kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IGF0aF9odyAqYWgpCiB9CiBFWFBP UlRfU1lNQk9MKGF0aDlrX2h3X2Rpc2FibGVfaW50ZXJydXB0cyk7CiAKLXZvaWQgYXRoOWtfaHdf ZW5hYmxlX2ludGVycnVwdHMoc3RydWN0IGF0aF9odyAqYWgpCitzdGF0aWMgdm9pZCBfX2F0aDlr X2h3X2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcgKmFoKQogewogCXN0cnVjdCBhdGhf Y29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpOwogCXUzMiBzeW5jX2RlZmF1bHQg PSBBUl9JTlRSX1NZTkNfREVGQVVMVDsKIAl1MzIgYXN5bmNfbWFzazsKIAotCWlmICghKGFoLT5p bWFzayAmIEFUSDlLX0lOVF9HTE9CQUwpKQotCQlyZXR1cm47Ci0KLQlpZiAoIWF0b21pY19pbmNf YW5kX3Rlc3QoJmFoLT5pbnRyX3JlZl9jbnQpKSB7Ci0JCWF0aF9kYmcoY29tbW9uLCBJTlRFUlJV UFQsICJEbyBub3QgZW5hYmxlIElFUiByZWYgY291bnQgJWRcbiIsCi0JCQlhdG9taWNfcmVhZCgm YWgtPmludHJfcmVmX2NudCkpOwotCQlyZXR1cm47Ci0JfQotCiAJaWYgKEFSX1NSRVZfOTM0MChh aCkgfHwgQVJfU1JFVl85NTUwKGFoKSB8fCBBUl9TUkVWXzk1MzEoYWgpKQogCQlzeW5jX2RlZmF1 bHQgJj0gfkFSX0lOVFJfU1lOQ19IT1NUMV9GQVRBTDsKIApAQCAtODQwLDYgKzgzMSwzOSBAQCB2 b2lkIGF0aDlrX2h3X2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcgKmFoKQogCWF0aF9k YmcoY29tbW9uLCBJTlRFUlJVUFQsICJBUl9JTVIgMHgleCBJRVIgMHgleFxuIiwKIAkJUkVHX1JF QUQoYWgsIEFSX0lNUiksIFJFR19SRUFEKGFoLCBBUl9JRVIpKTsKIH0KKwordm9pZCBhdGg5a19o d19yZXN1bWVfaW50ZXJydXB0cyhzdHJ1Y3QgYXRoX2h3ICphaCkKK3sKKwlzdHJ1Y3QgYXRoX2Nv bW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKGFoKTsKKworCWlmICghKGFoLT5pbWFzayAm IEFUSDlLX0lOVF9HTE9CQUwpKQorCQlyZXR1cm47CisKKwlpZiAoYXRvbWljX3JlYWQoJmFoLT5p bnRyX3JlZl9jbnQpICE9IDApIHsKKwkJYXRoX2RiZyhjb21tb24sIElOVEVSUlVQVCwgIkRvIG5v dCBlbmFibGUgSUVSIHJlZiBjb3VudCAlZFxuIiwKKwkJCWF0b21pY19yZWFkKCZhaC0+aW50cl9y ZWZfY250KSk7CisJCXJldHVybjsKKwl9CisKKwlfX2F0aDlrX2h3X2VuYWJsZV9pbnRlcnJ1cHRz KGFoKTsKK30KK0VYUE9SVF9TWU1CT0woYXRoOWtfaHdfcmVzdW1lX2ludGVycnVwdHMpOworCit2 b2lkIGF0aDlrX2h3X2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcgKmFoKQoreworCXN0 cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpOworCisJaWYgKCEo YWgtPmltYXNrICYgQVRIOUtfSU5UX0dMT0JBTCkpCisJCXJldHVybjsKKworCWlmICghYXRvbWlj X2luY19hbmRfdGVzdCgmYWgtPmludHJfcmVmX2NudCkpIHsKKwkJYXRoX2RiZyhjb21tb24sIElO VEVSUlVQVCwgIkRvIG5vdCBlbmFibGUgSUVSIHJlZiBjb3VudCAlZFxuIiwKKwkJCWF0b21pY19y ZWFkKCZhaC0+aW50cl9yZWZfY250KSk7CisJCXJldHVybjsKKwl9CisKKwlfX2F0aDlrX2h3X2Vu YWJsZV9pbnRlcnJ1cHRzKGFoKTsKK30KIEVYUE9SVF9TWU1CT0woYXRoOWtfaHdfZW5hYmxlX2lu dGVycnVwdHMpOwogCiB2b2lkIGF0aDlrX2h3X3NldF9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcg KmFoKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21hYy5oIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21hYy5oCmluZGV4IGRhNzY4Njc1NzUzNS4u ZTllNGE3ZjFiOTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv bWFjLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21hYy5oCkBAIC03Mzcs NiArNzM3LDcgQEAgdm9pZCBhdGg5a19od19zZXRfaW50ZXJydXB0cyhzdHJ1Y3QgYXRoX2h3ICph aCk7CiB2b2lkIGF0aDlrX2h3X2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcgKmFoKTsK IHZvaWQgYXRoOWtfaHdfZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcgKmFoKTsKIHZv aWQgYXRoOWtfaHdfa2lsbF9pbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaHcgKmFoKTsKK3ZvaWQgYXRo OWtfaHdfcmVzdW1lX2ludGVycnVwdHMoc3RydWN0IGF0aF9odyAqYWgpOwogCiB2b2lkIGFyOTAw Ml9od19hdHRhY2hfbWFjX29wcyhzdHJ1Y3QgYXRoX2h3ICphaCk7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvbWFpbi5jCmluZGV4IGJmNmVmYmMyYzljMC4uZDAyNDE3YTFhNjllIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMKQEAgLTQ0MSwyMSArNDQxLDIwIEBAIHZv aWQgYXRoOWtfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiAJc3RydWN0IGF0aF9jb21tb24g KmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihhaCk7CiAJZW51bSBhdGhfcmVzZXRfdHlwZSB0eXBl OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdTMyIHN0YXR1cyA9IHNjLT5pbnRyc3RhdHVzOwor CXUzMiBzdGF0dXM7CiAJdTMyIHJ4bWFzazsKIAorCXNwaW5fbG9ja19pcnFzYXZlKCZzYy0+aW50 cl9sb2NrLCBmbGFncyk7CisJc3RhdHVzID0gc2MtPmludHJzdGF0dXM7CisJc2MtPmludHJzdGF0 dXMgPSAwOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjLT5pbnRyX2xvY2ssIGZsYWdzKTsK KwogCWF0aDlrX3BzX3dha2V1cChzYyk7CiAJc3Bpbl9sb2NrKCZzYy0+c2NfcGN1X2xvY2spOwog CiAJaWYgKHN0YXR1cyAmIEFUSDlLX0lOVF9GQVRBTCkgewogCQl0eXBlID0gUkVTRVRfVFlQRV9G QVRBTF9JTlQ7CiAJCWF0aDlrX3F1ZXVlX3Jlc2V0KHNjLCB0eXBlKTsKLQotCQkvKgotCQkgKiBJ bmNyZW1lbnQgdGhlIHJlZi4gY291bnRlciBoZXJlIHNvIHRoYXQKLQkJICogaW50ZXJydXB0cyBh cmUgZW5hYmxlZCBpbiB0aGUgcmVzZXQgcm91dGluZS4KLQkJICovCi0JCWF0b21pY19pbmMoJmFo LT5pbnRyX3JlZl9jbnQpOwogCQlhdGhfZGJnKGNvbW1vbiwgUkVTRVQsICJGQVRBTDogU2tpcHBp bmcgaW50ZXJydXB0c1xuIik7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTQ3MSwxMSArNDcwLDYgQEAg dm9pZCBhdGg5a190YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJCXR5cGUgPSBSRVNFVF9U WVBFX0JCX1dBVENIRE9HOwogCQkJYXRoOWtfcXVldWVfcmVzZXQoc2MsIHR5cGUpOwogCi0JCQkv KgotCQkJICogSW5jcmVtZW50IHRoZSByZWYuIGNvdW50ZXIgaGVyZSBzbyB0aGF0Ci0JCQkgKiBp bnRlcnJ1cHRzIGFyZSBlbmFibGVkIGluIHRoZSByZXNldCByb3V0aW5lLgotCQkJICovCi0JCQlh dG9taWNfaW5jKCZhaC0+aW50cl9yZWZfY250KTsKIAkJCWF0aF9kYmcoY29tbW9uLCBSRVNFVCwK IAkJCQkiQkJfV0FUQ0hET0c6IFNraXBwaW5nIGludGVycnVwdHNcbiIpOwogCQkJZ290byBvdXQ7 CkBAIC00ODgsNyArNDgyLDYgQEAgdm9pZCBhdGg5a190YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0 YSkKIAkJaWYgKChzYy0+Z3R0X2NudCA+PSBNQVhfR1RUX0NOVCkgJiYgIWF0aDlrX2h3X2NoZWNr X2FsaXZlKGFoKSkgewogCQkJdHlwZSA9IFJFU0VUX1RZUEVfVFhfR1RUOwogCQkJYXRoOWtfcXVl dWVfcmVzZXQoc2MsIHR5cGUpOwotCQkJYXRvbWljX2luYygmYWgtPmludHJfcmVmX2NudCk7CiAJ CQlhdGhfZGJnKGNvbW1vbiwgUkVTRVQsCiAJCQkJIkdUVDogU2tpcHBpbmcgaW50ZXJydXB0c1xu Iik7CiAJCQlnb3RvIG91dDsKQEAgLTU0NSw3ICs1MzgsNyBAQCB2b2lkIGF0aDlrX3Rhc2tsZXQo dW5zaWduZWQgbG9uZyBkYXRhKQogCWF0aDlrX2J0Y29leF9oYW5kbGVfaW50ZXJydXB0KHNjLCBz dGF0dXMpOwogCiAJLyogcmUtZW5hYmxlIGhhcmR3YXJlIGludGVycnVwdCAqLwotCWF0aDlrX2h3 X2VuYWJsZV9pbnRlcnJ1cHRzKGFoKTsKKwlhdGg5a19od19yZXN1bWVfaW50ZXJydXB0cyhhaCk7 CiBvdXQ6CiAJc3Bpbl91bmxvY2soJnNjLT5zY19wY3VfbG9jayk7CiAJYXRoOWtfcHNfcmVzdG9y ZShzYyk7CkBAIC02MTIsNyArNjA1LDkgQEAgaXJxcmV0dXJuX3QgYXRoX2lzcihpbnQgaXJxLCB2 b2lkICpkZXYpCiAJCXJldHVybiBJUlFfTk9ORTsKIAogCS8qIENhY2hlIHRoZSBzdGF0dXMgKi8K LQlzYy0+aW50cnN0YXR1cyA9IHN0YXR1czsKKwlzcGluX2xvY2soJnNjLT5pbnRyX2xvY2spOwor CXNjLT5pbnRyc3RhdHVzIHw9IHN0YXR1czsKKwlzcGluX3VubG9jaygmc2MtPmludHJfbG9jayk7 CiAKIAlpZiAoc3RhdHVzICYgU0NIRURfSU5UUikKIAkJc2NoZWQgPSB0cnVlOwpAQCAtNjY4LDcg KzY2Myw3IEBAIGNoaXBfcmVzZXQ6CiAKIAlpZiAoc2NoZWQpIHsKIAkJLyogdHVybiBvZmYgZXZl cnkgaW50ZXJydXB0ICovCi0JCWF0aDlrX2h3X2Rpc2FibGVfaW50ZXJydXB0cyhhaCk7CisJCWF0 aDlrX2h3X2tpbGxfaW50ZXJydXB0cyhhaCk7CiAJCXRhc2tsZXRfc2NoZWR1bGUoJnNjLT5pbnRy X3RxKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvbXZt L3JzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL212bS9ycy5jCmluZGV4IDMwNmE2 Y2FhNDg2OC4uZTY1NzE0MTY4ZThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9p d2x3aWZpL212bS9ycy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvbXZtL3Jz LmMKQEAgLTI0ODEsNyArMjQ4MSw3IEBAIHZvaWQgaXdsX212bV91cGRhdGVfZnJhbWVfc3RhdHMo c3RydWN0IGl3bF9tdm0gKm12bSwKIAkJCQlzdHJ1Y3QgaXdsX212bV9mcmFtZV9zdGF0cyAqc3Rh dHMsCiAJCQkJdTMyIHJhdGUsIGJvb2wgYWdnKQogewotCXU4IG5zcyA9IDAsIG1jcyA9IDA7CisJ dTggbnNzID0gMDsKIAogCXNwaW5fbG9jaygmbXZtLT5kcnZfc3RhdHNfbG9jayk7CiAKQEAgLTI1 MDYsMTEgKzI1MDYsOSBAQCB2b2lkIGl3bF9tdm1fdXBkYXRlX2ZyYW1lX3N0YXRzKHN0cnVjdCBp d2xfbXZtICptdm0sCiAKIAlpZiAocmF0ZSAmIFJBVEVfTUNTX0hUX01TSykgewogCQlzdGF0cy0+ aHRfZnJhbWVzKys7Ci0JCW1jcyA9IHJhdGUgJiBSQVRFX0hUX01DU19SQVRFX0NPREVfTVNLOwog CQluc3MgPSAoKHJhdGUgJiBSQVRFX0hUX01DU19OU1NfTVNLKSA+PiBSQVRFX0hUX01DU19OU1Nf UE9TKSArIDE7CiAJfSBlbHNlIGlmIChyYXRlICYgUkFURV9NQ1NfVkhUX01TSykgewogCQlzdGF0 cy0+dmh0X2ZyYW1lcysrOwotCQltY3MgPSByYXRlICYgUkFURV9WSFRfTUNTX1JBVEVfQ09ERV9N U0s7CiAJCW5zcyA9ICgocmF0ZSAmIFJBVEVfVkhUX01DU19OU1NfTVNLKSA+PgogCQkgICAgICAg UkFURV9WSFRfTUNTX05TU19QT1MpICsgMTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvbXdpZmlleC9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9t d2lmaWV4L2RlYnVnZnMuYwppbmRleCAxNDcyNTA2OTYxODEuLmE1OTA5ZWY1YzIwNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvbXdpZmlleC9kZWJ1Z2ZzLmMKQEAgLTIyMCw3ICsyMjAsOCBAQCBtd2lm aWV4X2luZm9fcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsCiAJaWYg KEdFVF9CU1NfUk9MRShwcml2KSA9PSBNV0lGSUVYX0JTU19ST0xFX1NUQSkgewogCQlwICs9IHNw cmludGYocCwgIm11bHRpY2FzdF9jb3VudD1cIiVkXCJcbiIsCiAJCQkgICAgIG5ldGRldl9tY19j b3VudChuZXRkZXYpKTsKLQkJcCArPSBzcHJpbnRmKHAsICJlc3NpZD1cIiVzXCJcbiIsIGluZm8u c3NpZC5zc2lkKTsKKwkJcCArPSBzcHJpbnRmKHAsICJlc3NpZD1cIiUuKnNcIlxuIiwgaW5mby5z c2lkLnNzaWRfbGVuLAorCQkJICAgICBpbmZvLnNzaWQuc3NpZCk7CiAJCXAgKz0gc3ByaW50Zihw LCAiYnNzaWQ9XCIlcE1cIlxuIiwgaW5mby5ic3NpZCk7CiAJCXAgKz0gc3ByaW50ZihwLCAiY2hh bm5lbD1cIiVkXCJcbiIsIChpbnQpIGluZm8uYnNzX2NoYW4pOwogCQlwICs9IHNwcmludGYocCwg ImNvdW50cnlfY29kZSA9IFwiJXNcIlxuIiwgaW5mby5jb3VudHJ5X2NvZGUpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9zdGFfaW9jdGwuYyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL213aWZpZXgvc3RhX2lvY3RsLmMKaW5kZXggYzczNDcwNTY5ZTZkLi5kYTdmN2Qy ZmNiMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZpZXgvc3RhX2lvY3Rs LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9zdGFfaW9jdGwuYwpAQCAtMTA4 Miw4ICsxMDgyLDYgQEAgaW50IG13aWZpZXhfc2V0X2VuY29kZShzdHJ1Y3QgbXdpZmlleF9wcml2 YXRlICpwcml2LCBzdHJ1Y3Qga2V5X3BhcmFtcyAqa3AsCiAJCQllbmNyeXB0X2tleS5pc19yeF9z ZXFfdmFsaWQgPSB0cnVlOwogCQl9CiAJfSBlbHNlIHsKLQkJaWYgKEdFVF9CU1NfUk9MRShwcml2 KSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUCkKLQkJCXJldHVybiAwOwogCQllbmNyeXB0X2tleS5r ZXlfZGlzYWJsZSA9IHRydWU7CiAJCWlmIChtYWNfYWRkcikKIAkJCW1lbWNweShlbmNyeXB0X2tl eS5tYWNfYWRkciwgbWFjX2FkZHIsIEVUSF9BTEVOKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxh dGZvcm0vZ29sZGZpc2gvcGRldl9idXMuYyBiL2RyaXZlcnMvcGxhdGZvcm0vZ29sZGZpc2gvcGRl dl9idXMuYwppbmRleCA4YzQzNTg5YzNlZGIuLmIzMTEzOTcxYWZkYiAxMDA2NDQKLS0tIGEvZHJp dmVycy9wbGF0Zm9ybS9nb2xkZmlzaC9wZGV2X2J1cy5jCisrKyBiL2RyaXZlcnMvcGxhdGZvcm0v Z29sZGZpc2gvcGRldl9idXMuYwpAQCAtMTU3LDIzICsxNTcsMjYgQEAgc3RhdGljIGludCBnb2xk ZmlzaF9uZXdfcGRldih2b2lkKQogc3RhdGljIGlycXJldHVybl90IGdvbGRmaXNoX3BkZXZfYnVz X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJaXJxcmV0dXJuX3QgcmV0ID0g SVJRX05PTkU7CisKIAl3aGlsZSAoMSkgewogCQl1MzIgb3AgPSByZWFkbChwZGV2X2J1c19iYXNl ICsgUERFVl9CVVNfT1ApOwotCQlzd2l0Y2ggKG9wKSB7Ci0JCWNhc2UgUERFVl9CVVNfT1BfRE9O RToKLQkJCXJldHVybiBJUlFfTk9ORTsKIAorCQlzd2l0Y2ggKG9wKSB7CiAJCWNhc2UgUERFVl9C VVNfT1BfUkVNT1ZFX0RFVjoKIAkJCWdvbGRmaXNoX3BkZXZfcmVtb3ZlKCk7CisJCQlyZXQgPSBJ UlFfSEFORExFRDsKIAkJCWJyZWFrOwogCiAJCWNhc2UgUERFVl9CVVNfT1BfQUREX0RFVjoKIAkJ CWdvbGRmaXNoX25ld19wZGV2KCk7CisJCQlyZXQgPSBJUlFfSEFORExFRDsKIAkJCWJyZWFrOwor CisJCWNhc2UgUERFVl9CVVNfT1BfRE9ORToKKwkJZGVmYXVsdDoKKwkJCXJldHVybiByZXQ7CiAJ CX0KLQkJcmV0ID0gSVJRX0hBTkRMRUQ7CiAJfQotCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBp bnQgZ29sZGZpc2hfcGRldl9idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2FjZXItd21pLmMgYi9kcml2ZXJzL3Bs YXRmb3JtL3g4Ni9hY2VyLXdtaS5jCmluZGV4IDVlZWRkYzAwZjIxMC4uNzJjMWZhM2MwYmQwIDEw MDY0NAotLS0gYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9hY2VyLXdtaS5jCisrKyBiL2RyaXZlcnMv cGxhdGZvcm0veDg2L2FjZXItd21pLmMKQEAgLTE4NjYsMTEgKzE4NjYsMjQgQEAgc3RhdGljIGlu dCBhY2VyX3dtaV9lbmFibGVfbG0odm9pZCkKIAlyZXR1cm4gc3RhdHVzOwogfQogCisjZGVmaW5l IEFDRVJfV01JRF9BQ0NFTF9ISUQJIkJTVDAwMDEiCisKIHN0YXRpYyBhY3BpX3N0YXR1cyBfX2lu aXQgYWNlcl93bWlfZ2V0X2hhbmRsZV9jYihhY3BpX2hhbmRsZSBhaCwgdTMyIGxldmVsLAogCQkJ CQkJdm9pZCAqY3R4LCB2b2lkICoqcmV0dmFsKQogeworCXN0cnVjdCBhY3BpX2RldmljZSAqZGV2 OworCisJaWYgKCFzdHJjbXAoY3R4LCAiU0VOUiIpKSB7CisJCWlmIChhY3BpX2J1c19nZXRfZGV2 aWNlKGFoLCAmZGV2KSkKKwkJCXJldHVybiBBRV9PSzsKKwkJaWYgKCFzdHJjbXAoQUNFUl9XTUlE X0FDQ0VMX0hJRCwgYWNwaV9kZXZpY2VfaGlkKGRldikpKQorCQkJcmV0dXJuIEFFX09LOworCX0g ZWxzZQorCQlyZXR1cm4gQUVfT0s7CisKIAkqKGFjcGlfaGFuZGxlICopcmV0dmFsID0gYWg7Ci0J cmV0dXJuIEFFX09LOworCisJcmV0dXJuIEFFX0NUUkxfVEVSTUlOQVRFOwogfQogCiBzdGF0aWMg aW50IF9faW5pdCBhY2VyX3dtaV9nZXRfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKnByb3AsCkBAIC0xODk3LDcgKzE5MTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBhY2VyX3dt aV9hY2NlbF9zZXR1cCh2b2lkKQogewogCWludCBlcnI7CiAKLQllcnIgPSBhY2VyX3dtaV9nZXRf aGFuZGxlKCJTRU5SIiwgIkJTVDAwMDEiLCAmZ3NlbnNvcl9oYW5kbGUpOworCWVyciA9IGFjZXJf d21pX2dldF9oYW5kbGUoIlNFTlIiLCBBQ0VSX1dNSURfQUNDRUxfSElELCAmZ3NlbnNvcl9oYW5k bGUpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTIyNjgsMTAgKzIyODEsMTEgQEAg c3RhdGljIGludCBfX2luaXQgYWNlcl93bWlfaW5pdCh2b2lkKQogCQllcnIgPSBhY2VyX3dtaV9p bnB1dF9zZXR1cCgpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIGVycjsKKwkJZXJyID0gYWNlcl93 bWlfYWNjZWxfc2V0dXAoKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CiAJfQogCi0JYWNl cl93bWlfYWNjZWxfc2V0dXAoKTsKLQogCWVyciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigm YWNlcl9wbGF0Zm9ybV9kcml2ZXIpOwogCWlmIChlcnIpIHsKIAkJcHJfZXJyKCJVbmFibGUgdG8g cmVnaXN0ZXIgcGxhdGZvcm0gZHJpdmVyXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIv YnEyNDE5MF9jaGFyZ2VyLmMgYi9kcml2ZXJzL3Bvd2VyL2JxMjQxOTBfY2hhcmdlci5jCmluZGV4 IGQwZTgyMzZhNjQwNC4uNGZjOWRkMjM1NGJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bvd2VyL2Jx MjQxOTBfY2hhcmdlci5jCisrKyBiL2RyaXZlcnMvcG93ZXIvYnEyNDE5MF9jaGFyZ2VyLmMKQEAg LTE0NCwxMCArMTQ0LDcgQEAKICAqIHNvIHRoZSBmaXJzdCByZWFkIGFmdGVyIGEgZmF1bHQgcmV0 dXJucyB0aGUgbGF0Y2hlZCB2YWx1ZSBhbmQgc3Vic2VxdWVudAogICogcmVhZHMgcmV0dXJuIHRo ZSBjdXJyZW50IHZhbHVlLiAgSW4gb3JkZXIgdG8gcmV0dXJuIHRoZSBmYXVsdCBzdGF0dXMKICAq IHRvIHRoZSB1c2VyLCBoYXZlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBzYXZlIHRoZSByZWcncyB2 YWx1ZSBhbmQgcmV0cmlldmUKLSAqIGl0IGluIHRoZSBhcHByb3ByaWF0ZSBoZWFsdGgvc3RhdHVz IHJvdXRpbmUuICBFYWNoIHJvdXRpbmUgaGFzIGl0cyBvd24KLSAqIGZsYWcgaW5kaWNhdGluZyB3 aGV0aGVyIGl0IHNob3VsZCB1c2UgdGhlIHZhbHVlIHN0b3JlZCBieSB0aGUgbGFzdCBydW4KLSAq IG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBvciBkbyBhbiBhY3R1YWwgcmVnIHJlYWQuICBUaGF0 IHdheSBlYWNoIHJvdXRpbmUKLSAqIGNhbiByZXBvcnQgYmFjayB3aGF0ZXZlciBmYXVsdCBtYXkg aGF2ZSBvY2N1cmVkLgorICogaXQgaW4gdGhlIGFwcHJvcHJpYXRlIGhlYWx0aC9zdGF0dXMgcm91 dGluZS4KICAqLwogc3RydWN0IGJxMjQxOTBfZGV2X2luZm8gewogCXN0cnVjdCBpMmNfY2xpZW50 CQkqY2xpZW50OwpAQCAtMTU5LDEwICsxNTYsNiBAQCBzdHJ1Y3QgYnEyNDE5MF9kZXZfaW5mbyB7 CiAJdW5zaWduZWQgaW50CQkJZ3Bpb19pbnQ7CiAJdW5zaWduZWQgaW50CQkJaXJxOwogCXN0cnVj dCBtdXRleAkJCWZfcmVnX2xvY2s7Ci0JYm9vbAkJCQlmaXJzdF90aW1lOwotCWJvb2wJCQkJY2hh cmdlcl9oZWFsdGhfdmFsaWQ7Ci0JYm9vbAkJCQliYXR0ZXJ5X2hlYWx0aF92YWxpZDsKLQlib29s CQkJCWJhdHRlcnlfc3RhdHVzX3ZhbGlkOwogCXU4CQkJCWZfcmVnOwogCXU4CQkJCXNzX3JlZzsK IAl1OAkJCQl3YXRjaGRvZzsKQEAgLTYzOCwyMSArNjMxLDExIEBAIHN0YXRpYyBpbnQgYnEyNDE5 MF9jaGFyZ2VyX2dldF9oZWFsdGgoc3RydWN0IGJxMjQxOTBfZGV2X2luZm8gKmJkaSwKIAkJdW5p b24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkKIHsKIAl1OCB2OwotCWludCBoZWFsdGgsIHJl dDsKKwlpbnQgaGVhbHRoOwogCiAJbXV0ZXhfbG9jaygmYmRpLT5mX3JlZ19sb2NrKTsKLQotCWlm IChiZGktPmNoYXJnZXJfaGVhbHRoX3ZhbGlkKSB7Ci0JCXYgPSBiZGktPmZfcmVnOwotCQliZGkt PmNoYXJnZXJfaGVhbHRoX3ZhbGlkID0gZmFsc2U7Ci0JCW11dGV4X3VubG9jaygmYmRpLT5mX3Jl Z19sb2NrKTsKLQl9IGVsc2UgewotCQltdXRleF91bmxvY2soJmJkaS0+Zl9yZWdfbG9jayk7Ci0K LQkJcmV0ID0gYnEyNDE5MF9yZWFkKGJkaSwgQlEyNDE5MF9SRUdfRiwgJnYpOwotCQlpZiAocmV0 IDwgMCkKLQkJCXJldHVybiByZXQ7Ci0JfQorCXYgPSBiZGktPmZfcmVnOworCW11dGV4X3VubG9j aygmYmRpLT5mX3JlZ19sb2NrKTsKIAogCWlmICh2ICYgQlEyNDE5MF9SRUdfRl9CT09TVF9GQVVM VF9NQVNLKSB7CiAJCS8qCkBAIC05NDQsMTggKzkyNyw4IEBAIHN0YXRpYyBpbnQgYnEyNDE5MF9i YXR0ZXJ5X2dldF9zdGF0dXMoc3RydWN0IGJxMjQxOTBfZGV2X2luZm8gKmJkaSwKIAlpbnQgc3Rh dHVzLCByZXQ7CiAKIAltdXRleF9sb2NrKCZiZGktPmZfcmVnX2xvY2spOwotCi0JaWYgKGJkaS0+ YmF0dGVyeV9zdGF0dXNfdmFsaWQpIHsKLQkJY2hyZ19mYXVsdCA9IGJkaS0+Zl9yZWc7Ci0JCWJk aS0+YmF0dGVyeV9zdGF0dXNfdmFsaWQgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZiZGktPmZf cmVnX2xvY2spOwotCX0gZWxzZSB7Ci0JCW11dGV4X3VubG9jaygmYmRpLT5mX3JlZ19sb2NrKTsK LQotCQlyZXQgPSBicTI0MTkwX3JlYWQoYmRpLCBCUTI0MTkwX1JFR19GLCAmY2hyZ19mYXVsdCk7 Ci0JCWlmIChyZXQgPCAwKQotCQkJcmV0dXJuIHJldDsKLQl9CisJY2hyZ19mYXVsdCA9IGJkaS0+ Zl9yZWc7CisJbXV0ZXhfdW5sb2NrKCZiZGktPmZfcmVnX2xvY2spOwogCiAJY2hyZ19mYXVsdCAm PSBCUTI0MTkwX1JFR19GX0NIUkdfRkFVTFRfTUFTSzsKIAljaHJnX2ZhdWx0ID4+PSBCUTI0MTkw X1JFR19GX0NIUkdfRkFVTFRfU0hJRlQ7CkBAIC0xMDAzLDIxICs5NzYsMTEgQEAgc3RhdGljIGlu dCBicTI0MTkwX2JhdHRlcnlfZ2V0X2hlYWx0aChzdHJ1Y3QgYnEyNDE5MF9kZXZfaW5mbyAqYmRp LAogCQl1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZhbCAqdmFsKQogewogCXU4IHY7Ci0JaW50IGhl YWx0aCwgcmV0OworCWludCBoZWFsdGg7CiAKIAltdXRleF9sb2NrKCZiZGktPmZfcmVnX2xvY2sp OwotCi0JaWYgKGJkaS0+YmF0dGVyeV9oZWFsdGhfdmFsaWQpIHsKLQkJdiA9IGJkaS0+Zl9yZWc7 Ci0JCWJkaS0+YmF0dGVyeV9oZWFsdGhfdmFsaWQgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZi ZGktPmZfcmVnX2xvY2spOwotCX0gZWxzZSB7Ci0JCW11dGV4X3VubG9jaygmYmRpLT5mX3JlZ19s b2NrKTsKLQotCQlyZXQgPSBicTI0MTkwX3JlYWQoYmRpLCBCUTI0MTkwX1JFR19GLCAmdik7Ci0J CWlmIChyZXQgPCAwKQotCQkJcmV0dXJuIHJldDsKLQl9CisJdiA9IGJkaS0+Zl9yZWc7CisJbXV0 ZXhfdW5sb2NrKCZiZGktPmZfcmVnX2xvY2spOwogCiAJaWYgKHYgJiBCUTI0MTkwX1JFR19GX0JB VF9GQVVMVF9NQVNLKSB7CiAJCWhlYWx0aCA9IFBPV0VSX1NVUFBMWV9IRUFMVEhfT1ZFUlZPTFRB R0U7CkBAIC0xMjA3LDkgKzExNzAsMTIgQEAgc3RhdGljIHZvaWQgYnEyNDE5MF9iYXR0ZXJ5X2lu aXQoc3RydWN0IHBvd2VyX3N1cHBseSAqYmF0dGVyeSkKIHN0YXRpYyBpcnFyZXR1cm5fdCBicTI0 MTkwX2lycV9oYW5kbGVyX3RocmVhZChpbnQgaXJxLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBi cTI0MTkwX2Rldl9pbmZvICpiZGkgPSBkYXRhOwotCWJvb2wgYWxlcnRfdXNlcnNwYWNlID0gZmFs c2U7CisJY29uc3QgdTggYmF0dGVyeV9tYXNrX3NzID0gQlEyNDE5MF9SRUdfU1NfQ0hSR19TVEFU X01BU0s7CisJY29uc3QgdTggYmF0dGVyeV9tYXNrX2YgPSBCUTI0MTkwX1JFR19GX0JBVF9GQVVM VF9NQVNLCisJCQkJfCBCUTI0MTkwX1JFR19GX05UQ19GQVVMVF9NQVNLOworCWJvb2wgYWxlcnRf Y2hhcmdlciA9IGZhbHNlLCBhbGVydF9iYXR0ZXJ5ID0gZmFsc2U7CiAJdTggc3NfcmVnID0gMCwg Zl9yZWcgPSAwOwotCWludCByZXQ7CisJaW50IGksIHJldDsKIAogCXBtX3J1bnRpbWVfZ2V0X3N5 bmMoYmRpLT5kZXYpOwogCkBAIC0xMjE5LDYgKzExODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90 IGJxMjQxOTBfaXJxX2hhbmRsZXJfdGhyZWFkKGludCBpcnEsIHZvaWQgKmRhdGEpCiAJCWdvdG8g b3V0OwogCX0KIAorCWkgPSAwOworCWRvIHsKKwkJcmV0ID0gYnEyNDE5MF9yZWFkKGJkaSwgQlEy NDE5MF9SRUdfRiwgJmZfcmVnKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWRldl9lcnIoYmRpLT5k ZXYsICJDYW4ndCByZWFkIEYgcmVnOiAlZFxuIiwgcmV0KTsKKwkJCWdvdG8gb3V0OworCQl9CisJ fSB3aGlsZSAoZl9yZWcgJiYgKytpIDwgMik7CisKKwlpZiAoZl9yZWcgIT0gYmRpLT5mX3JlZykg eworCQlkZXZfaW5mbyhiZGktPmRldiwKKwkJCSJGYXVsdDogYm9vc3QgJWQsIGNoYXJnZSAlZCwg YmF0dGVyeSAlZCwgbnRjICVkXG4iLAorCQkJISEoZl9yZWcgJiBCUTI0MTkwX1JFR19GX0JPT1NU X0ZBVUxUX01BU0spLAorCQkJISEoZl9yZWcgJiBCUTI0MTkwX1JFR19GX0NIUkdfRkFVTFRfTUFT SyksCisJCQkhIShmX3JlZyAmIEJRMjQxOTBfUkVHX0ZfQkFUX0ZBVUxUX01BU0spLAorCQkJISEo Zl9yZWcgJiBCUTI0MTkwX1JFR19GX05UQ19GQVVMVF9NQVNLKSk7CisKKwkJbXV0ZXhfbG9jaygm YmRpLT5mX3JlZ19sb2NrKTsKKwkJaWYgKChiZGktPmZfcmVnICYgYmF0dGVyeV9tYXNrX2YpICE9 IChmX3JlZyAmIGJhdHRlcnlfbWFza19mKSkKKwkJCWFsZXJ0X2JhdHRlcnkgPSB0cnVlOworCQlp ZiAoKGJkaS0+Zl9yZWcgJiB+YmF0dGVyeV9tYXNrX2YpICE9IChmX3JlZyAmIH5iYXR0ZXJ5X21h c2tfZikpCisJCQlhbGVydF9jaGFyZ2VyID0gdHJ1ZTsKKwkJYmRpLT5mX3JlZyA9IGZfcmVnOwor CQltdXRleF91bmxvY2soJmJkaS0+Zl9yZWdfbG9jayk7CisJfQorCiAJaWYgKHNzX3JlZyAhPSBi ZGktPnNzX3JlZykgewogCQkvKgogCQkgKiBUaGUgZGV2aWNlIGlzIGluIGhvc3QgbW9kZSBzbyB3 aGVuIFBHX1NUQVQgZ29lcyBmcm9tIDEtPjAKQEAgLTEyMzUsNDQgKzEyMjcsMTcgQEAgc3RhdGlj IGlycXJldHVybl90IGJxMjQxOTBfaXJxX2hhbmRsZXJfdGhyZWFkKGludCBpcnEsIHZvaWQgKmRh dGEpCiAJCQkJCXJldCk7CiAJCX0KIAorCQlpZiAoKGJkaS0+c3NfcmVnICYgYmF0dGVyeV9tYXNr X3NzKSAhPSAoc3NfcmVnICYgYmF0dGVyeV9tYXNrX3NzKSkKKwkJCWFsZXJ0X2JhdHRlcnkgPSB0 cnVlOworCQlpZiAoKGJkaS0+c3NfcmVnICYgfmJhdHRlcnlfbWFza19zcykgIT0gKHNzX3JlZyAm IH5iYXR0ZXJ5X21hc2tfc3MpKQorCQkJYWxlcnRfY2hhcmdlciA9IHRydWU7CiAJCWJkaS0+c3Nf cmVnID0gc3NfcmVnOwotCQlhbGVydF91c2Vyc3BhY2UgPSB0cnVlOwotCX0KLQotCW11dGV4X2xv Y2soJmJkaS0+Zl9yZWdfbG9jayk7Ci0KLQlyZXQgPSBicTI0MTkwX3JlYWQoYmRpLCBCUTI0MTkw X1JFR19GLCAmZl9yZWcpOwotCWlmIChyZXQgPCAwKSB7Ci0JCW11dGV4X3VubG9jaygmYmRpLT5m X3JlZ19sb2NrKTsKLQkJZGV2X2VycihiZGktPmRldiwgIkNhbid0IHJlYWQgRiByZWc6ICVkXG4i LCByZXQpOwotCQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoZl9yZWcgIT0gYmRpLT5mX3JlZykgewot CQliZGktPmZfcmVnID0gZl9yZWc7Ci0JCWJkaS0+Y2hhcmdlcl9oZWFsdGhfdmFsaWQgPSB0cnVl OwotCQliZGktPmJhdHRlcnlfaGVhbHRoX3ZhbGlkID0gdHJ1ZTsKLQkJYmRpLT5iYXR0ZXJ5X3N0 YXR1c192YWxpZCA9IHRydWU7Ci0KLQkJYWxlcnRfdXNlcnNwYWNlID0gdHJ1ZTsKLQl9Ci0KLQlt dXRleF91bmxvY2soJmJkaS0+Zl9yZWdfbG9jayk7Ci0KLQkvKgotCSAqIFNvbWV0aW1lcyBicTI0 MTkwIGdpdmVzIGEgc3RlYWR5IHRyaWNrbGUgb2YgaW50ZXJydXB0cyBldmVuCi0JICogdGhvdWdo IHRoZSB3YXRjaGRvZyB0aW1lciBpcyB0dXJuZWQgb2ZmIGFuZCBuZWl0aGVyIHRoZSBTVEFUVVMK LQkgKiBub3IgRkFVTFQgcmVnaXN0ZXJzIGhhdmUgY2hhbmdlZC4gIFdlZWQgb3V0IHRoZXNlIHNw cnVyaW91cwotCSAqIGludGVycnVwdHMgc28gdXNlcnNwYWNlIGlzbid0IGFsZXJ0ZWQgZm9yIG5v IHJlYXNvbi4KLQkgKiBJbiBhZGRpdGlvbiwgdGhlIGNoaXAgYWx3YXlzIGdlbmVyYXRlcyBhbiBp bnRlcnJ1cHQgYWZ0ZXIKLQkgKiByZWdpc3RlciByZXNldCBzbyB3ZSBzaG91bGQgaWdub3JlIHRo YXQgb25lICh0aGUgdmVyeSBmaXJzdAotCSAqIGludGVycnVwdCByZWNlaXZlZCkuCi0JICovCi0J aWYgKGFsZXJ0X3VzZXJzcGFjZSAmJiAhYmRpLT5maXJzdF90aW1lKSB7CisJaWYgKGFsZXJ0X2No YXJnZXIpCiAJCXBvd2VyX3N1cHBseV9jaGFuZ2VkKCZiZGktPmNoYXJnZXIpOworCWlmIChhbGVy dF9iYXR0ZXJ5KQogCQlwb3dlcl9zdXBwbHlfY2hhbmdlZCgmYmRpLT5iYXR0ZXJ5KTsKLQkJYmRp LT5maXJzdF90aW1lID0gZmFsc2U7Ci0JfQogCiBvdXQ6CiAJcG1fcnVudGltZV9wdXRfc3luYyhi ZGktPmRldik7CkBAIC0xMzA3LDYgKzEyNzIsMTAgQEAgc3RhdGljIGludCBicTI0MTkwX2h3X2lu aXQoc3RydWN0IGJxMjQxOTBfZGV2X2luZm8gKmJkaSkKIAkJZ290byBvdXQ7CiAKIAlyZXQgPSBi cTI0MTkwX3NldF9tb2RlX2hvc3QoYmRpKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBvdXQ7CisK KwlyZXQgPSBicTI0MTkwX3JlYWQoYmRpLCBCUTI0MTkwX1JFR19TUywgJmJkaS0+c3NfcmVnKTsK IG91dDoKIAlwbV9ydW50aW1lX3B1dF9zeW5jKGJkaS0+ZGV2KTsKIAlyZXR1cm4gcmV0OwpAQCAt MTM4MSwxMCArMTM1MCw4IEBAIHN0YXRpYyBpbnQgYnEyNDE5MF9wcm9iZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50LAogCWJkaS0+bW9kZWwgPSBpZC0+ZHJpdmVyX2RhdGE7CiAJc3RybmNweShi ZGktPm1vZGVsX25hbWUsIGlkLT5uYW1lLCBJMkNfTkFNRV9TSVpFKTsKIAltdXRleF9pbml0KCZi ZGktPmZfcmVnX2xvY2spOwotCWJkaS0+Zmlyc3RfdGltZSA9IHRydWU7Ci0JYmRpLT5jaGFyZ2Vy X2hlYWx0aF92YWxpZCA9IGZhbHNlOwotCWJkaS0+YmF0dGVyeV9oZWFsdGhfdmFsaWQgPSBmYWxz ZTsKLQliZGktPmJhdHRlcnlfc3RhdHVzX3ZhbGlkID0gZmFsc2U7CisJYmRpLT5mX3JlZyA9IDA7 CisJYmRpLT5zc19yZWcgPSBCUTI0MTkwX1JFR19TU19WQlVTX1NUQVRfTUFTSzsgLyogaW1wb3Nz aWJsZSBzdGF0ZSAqLwogCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgYmRpKTsKIApAQCAt MTM5OCwyMiArMTM2NSwxMyBAQCBzdGF0aWMgaW50IGJxMjQxOTBfcHJvYmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0gZGV2bV9yZXF1 ZXN0X3RocmVhZGVkX2lycShkZXYsIGJkaS0+aXJxLCBOVUxMLAotCQkJYnEyNDE5MF9pcnFfaGFu ZGxlcl90aHJlYWQsCi0JCQlJUlFGX1RSSUdHRVJfUklTSU5HIHwgSVJRRl9PTkVTSE9ULAotCQkJ ImJxMjQxOTAtY2hhcmdlciIsIGJkaSk7Ci0JaWYgKHJldCA8IDApIHsKLQkJZGV2X2VycihkZXYs ICJDYW4ndCBzZXQgdXAgaXJxIGhhbmRsZXJcbiIpOwotCQlnb3RvIG91dDE7Ci0JfQotCiAJcG1f cnVudGltZV9lbmFibGUoZGV2KTsKIAlwbV9ydW50aW1lX3Jlc3VtZShkZXYpOwogCiAJcmV0ID0g YnEyNDE5MF9od19pbml0KGJkaSk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihkZXYsICJI YXJkd2FyZSBpbml0IGZhaWxlZFxuIik7Ci0JCWdvdG8gb3V0MjsKKwkJZ290byBvdXQxOwogCX0K IAogCWJxMjQxOTBfY2hhcmdlcl9pbml0KCZiZGktPmNoYXJnZXIpOwpAQCAtMTQyMSw3ICsxMzc5 LDcgQEAgc3RhdGljIGludCBicTI0MTkwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs CiAJcmV0ID0gcG93ZXJfc3VwcGx5X3JlZ2lzdGVyKGRldiwgJmJkaS0+Y2hhcmdlcik7CiAJaWYg KHJldCkgewogCQlkZXZfZXJyKGRldiwgIkNhbid0IHJlZ2lzdGVyIGNoYXJnZXJcbiIpOwotCQln b3RvIG91dDI7CisJCWdvdG8gb3V0MTsKIAl9CiAKIAlicTI0MTkwX2JhdHRlcnlfaW5pdCgmYmRp LT5iYXR0ZXJ5KTsKQEAgLTE0MjksMjQgKzEzODcsMzQgQEAgc3RhdGljIGludCBicTI0MTkwX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJcmV0ID0gcG93ZXJfc3VwcGx5X3JlZ2lz dGVyKGRldiwgJmJkaS0+YmF0dGVyeSk7CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKGRldiwgIkNh bid0IHJlZ2lzdGVyIGJhdHRlcnlcbiIpOwotCQlnb3RvIG91dDM7CisJCWdvdG8gb3V0MjsKIAl9 CiAKIAlyZXQgPSBicTI0MTkwX3N5c2ZzX2NyZWF0ZV9ncm91cChiZGkpOwogCWlmIChyZXQpIHsK IAkJZGV2X2VycihkZXYsICJDYW4ndCBjcmVhdGUgc3lzZnMgZW50cmllc1xuIik7CisJCWdvdG8g b3V0MzsKKwl9CisKKwlyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgYmRpLT5p cnEsIE5VTEwsCisJCQlicTI0MTkwX2lycV9oYW5kbGVyX3RocmVhZCwKKwkJCUlSUUZfVFJJR0dF Ul9GQUxMSU5HIHwgSVJRRl9PTkVTSE9ULAorCQkJImJxMjQxOTAtY2hhcmdlciIsIGJkaSk7CisJ aWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJDYW4ndCBzZXQgdXAgaXJxIGhhbmRsZXJc biIpOwogCQlnb3RvIG91dDQ7CiAJfQogCiAJcmV0dXJuIDA7CiAKIG91dDQ6Ci0JcG93ZXJfc3Vw cGx5X3VucmVnaXN0ZXIoJmJkaS0+YmF0dGVyeSk7CisJYnEyNDE5MF9zeXNmc19yZW1vdmVfZ3Jv dXAoYmRpKTsKIG91dDM6Ci0JcG93ZXJfc3VwcGx5X3VucmVnaXN0ZXIoJmJkaS0+Y2hhcmdlcik7 CisJcG93ZXJfc3VwcGx5X3VucmVnaXN0ZXIoJmJkaS0+YmF0dGVyeSk7CiBvdXQyOgotCXBtX3J1 bnRpbWVfZGlzYWJsZShkZXYpOworCXBvd2VyX3N1cHBseV91bnJlZ2lzdGVyKCZiZGktPmNoYXJn ZXIpOwogb3V0MToKKwlwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKIAlpZiAoYmRpLT5ncGlvX2lu dCkKIAkJZ3Bpb19mcmVlKGJkaS0+Z3Bpb19pbnQpOwogCkBAIC0xNDkwLDEyICsxNDU4LDEzIEBA IHN0YXRpYyBpbnQgYnEyNDE5MF9wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CiAJc3RydWN0IGJxMjQx OTBfZGV2X2luZm8gKmJkaSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCi0JYmRpLT5j aGFyZ2VyX2hlYWx0aF92YWxpZCA9IGZhbHNlOwotCWJkaS0+YmF0dGVyeV9oZWFsdGhfdmFsaWQg PSBmYWxzZTsKLQliZGktPmJhdHRlcnlfc3RhdHVzX3ZhbGlkID0gZmFsc2U7CisJYmRpLT5mX3Jl ZyA9IDA7CisJYmRpLT5zc19yZWcgPSBCUTI0MTkwX1JFR19TU19WQlVTX1NUQVRfTUFTSzsgLyog aW1wb3NzaWJsZSBzdGF0ZSAqLwogCiAJcG1fcnVudGltZV9nZXRfc3luYyhiZGktPmRldik7CiAJ YnEyNDE5MF9yZWdpc3Rlcl9yZXNldChiZGkpOworCWJxMjQxOTBfc2V0X21vZGVfaG9zdChiZGkp OworCWJxMjQxOTBfcmVhZChiZGksIEJRMjQxOTBfUkVHX1NTLCAmYmRpLT5zc19yZWcpOwogCXBt X3J1bnRpbWVfcHV0X3N5bmMoYmRpLT5kZXYpOwogCiAJLyogVGhpbmdzIG1heSBoYXZlIGNoYW5n ZWQgd2hpbGUgc3VzcGVuZGVkIHNvIGFsZXJ0IHVwcGVyIGxheWVyICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL3MzOTAvY2lvL2lvYXNtLmggYi9kcml2ZXJzL3MzOTAvY2lvL2lvYXNtLmgKaW5kZXgg NGQ4MGZjNjdhMDZiLi4xYWVjNWFlNWRiZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9jaW8v aW9hc20uaAorKysgYi9kcml2ZXJzL3MzOTAvY2lvL2lvYXNtLmgKQEAgLTEzOCwxMyArMTM4LDE1 IEBAIHN0YXRpYyBpbmxpbmUgaW50IHRwaShzdHJ1Y3QgdHBpX2luZm8gKmFkZHIpCiBzdGF0aWMg aW5saW5lIGludCBjaHNjKHZvaWQgKmNoc2NfYXJlYSkKIHsKIAl0eXBlZGVmIHN0cnVjdCB7IGNo YXIgX1s0MDk2XTsgfSBhZGRyX3R5cGU7Ci0JaW50IGNjOworCWludCBjYyA9IC1FSU87CiAKIAlh c20gdm9sYXRpbGUoCiAJCSIJLmluc24JcnJlLDB4YjI1ZjAwMDAsJTIsMFxuIgotCQkiCWlwbQkl MFxuIgorCQkiMDoJaXBtCSUwXG4iCiAJCSIJc3JsCSUwLDI4XG4iCi0JCTogIj1kIiAoY2MpLCAi PW0iICgqKGFkZHJfdHlwZSAqKSBjaHNjX2FyZWEpCisJCSIxOlxuIgorCQlFWF9UQUJMRSgwYiwg MWIpCisJCTogIitkIiAoY2MpLCAiPW0iICgqKGFkZHJfdHlwZSAqKSBjaHNjX2FyZWEpCiAJCTog ImQiIChjaHNjX2FyZWEpLCAibSIgKCooYWRkcl90eXBlICopIGNoc2NfYXJlYSkKIAkJOiAiY2Mi KTsKIAlyZXR1cm4gY2M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2lvL3FkaW9fdGhpbmlu dC5jIGIvZHJpdmVycy9zMzkwL2Npby9xZGlvX3RoaW5pbnQuYwppbmRleCA1ZDA2MjUzYzJhN2Eu LjMwZTlmYmJmZjA1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2Npby9xZGlvX3RoaW5pbnQu YworKysgYi9kcml2ZXJzL3MzOTAvY2lvL3FkaW9fdGhpbmludC5jCkBAIC0xNDcsMTEgKzE0Nywx MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGlxZGlvX2NhbGxfaW5xX2hhbmRsZXJzKHN0cnVjdCBx ZGlvX2lycSAqaXJxKQogCXN0cnVjdCBxZGlvX3EgKnE7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9p bnB1dF9xdWV1ZShpcnEsIHEsIGkpIHsKLQkJaWYgKCFyZWZlcmVuY2VzX3NoYXJlZF9kc2NpKGly cSkgJiYKLQkJICAgIGhhc19tdWx0aXBsZV9pbnFfb25fZHNjaShpcnEpKQotCQkJeGNoZyhxLT5p cnFfcHRyLT5kc2NpLCAwKTsKKwlpZiAoIXJlZmVyZW5jZXNfc2hhcmVkX2RzY2koaXJxKSAmJgor CSAgICBoYXNfbXVsdGlwbGVfaW5xX29uX2RzY2koaXJxKSkKKwkJeGNoZyhpcnEtPmRzY2ksIDAp OwogCisJZm9yX2VhY2hfaW5wdXRfcXVldWUoaXJxLCBxLCBpKSB7CiAJCWlmIChxLT51LmluLnF1 ZXVlX3N0YXJ0X3BvbGwpIHsKIAkJCS8qIHNraXAgaWYgcG9sbGluZyBpcyBlbmFibGVkIG9yIGFs cmVhZHkgaW4gd29yayAqLwogCQkJaWYgKHRlc3RfYW5kX3NldF9iaXQoUURJT19RVUVVRV9JUlFT X0RJU0FCTEVELApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jIGIv ZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jCmluZGV4IGNlMTc3YTUwZWMwNS4uOGMyZDll ZmNhYmIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tc3VwLmMKKysrIGIv ZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jCkBAIC04MywxMiArODMsMjAgQEAgc3RhdGlj IGludCBmaWJfbWFwX2FsbG9jKHN0cnVjdCBhYWNfZGV2ICpkZXYpCiAKIHZvaWQgYWFjX2ZpYl9t YXBfZnJlZShzdHJ1Y3QgYWFjX2RldiAqZGV2KQogewotCWlmIChkZXYtPmh3X2ZpYl92YSAmJiBk ZXYtPm1heF9maWJfc2l6ZSkgewotCQlwY2lfZnJlZV9jb25zaXN0ZW50KGRldi0+cGRldiwKLQkJ KGRldi0+bWF4X2ZpYl9zaXplICoKLQkJKGRldi0+c2NzaV9ob3N0X3B0ci0+Y2FuX3F1ZXVlICsg QUFDX05VTV9NR1RfRklCKSksCi0JCWRldi0+aHdfZmliX3ZhLCBkZXYtPmh3X2ZpYl9wYSk7Ci0J fQorCXNpemVfdCBhbGxvY19zaXplOworCXNpemVfdCBmaWJfc2l6ZTsKKwlpbnQgbnVtX2ZpYnM7 CisKKwlpZighZGV2LT5od19maWJfdmEgfHwgIWRldi0+bWF4X2ZpYl9zaXplKQorCQlyZXR1cm47 CisKKwludW1fZmlicyA9IGRldi0+c2NzaV9ob3N0X3B0ci0+Y2FuX3F1ZXVlICsgQUFDX05VTV9N R1RfRklCOworCWZpYl9zaXplID0gZGV2LT5tYXhfZmliX3NpemUgKyBzaXplb2Yoc3RydWN0IGFh Y19maWJfeHBvcnRoZHIpOworCWFsbG9jX3NpemUgPSBmaWJfc2l6ZSAqIG51bV9maWJzICsgQUxJ R04zMiAtIDE7CisKKwlwY2lfZnJlZV9jb25zaXN0ZW50KGRldi0+cGRldiwgYWxsb2Nfc2l6ZSwg ZGV2LT5od19maWJfdmEsCisJCQkJCQkJZGV2LT5od19maWJfcGEpOworCiAJZGV2LT5od19maWJf dmEgPSBOVUxMOwogCWRldi0+aHdfZmliX3BhID0gMDsKIH0KQEAgLTExNiwyMiArMTI0LDIwIEBA IGludCBhYWNfZmliX3NldHVwKHN0cnVjdCBhYWNfZGV2ICogZGV2KQogCWlmIChpPDApCiAJCXJl dHVybiAtRU5PTUVNOwogCi0JLyogMzIgYnl0ZSBhbGlnbm1lbnQgZm9yIFBNQyAqLwotCWh3X2Zp Yl9wYSA9IChkZXYtPmh3X2ZpYl9wYSArIChBTElHTjMyIC0gMSkpICYgfihBTElHTjMyIC0gMSk7 Ci0JZGV2LT5od19maWJfdmEgPSAoc3RydWN0IGh3X2ZpYiAqKSgodW5zaWduZWQgY2hhciAqKWRl di0+aHdfZmliX3ZhICsKLQkJKGh3X2ZpYl9wYSAtIGRldi0+aHdfZmliX3BhKSk7Ci0JZGV2LT5o d19maWJfcGEgPSBod19maWJfcGE7CiAJbWVtc2V0KGRldi0+aHdfZmliX3ZhLCAwLAogCQkoZGV2 LT5tYXhfZmliX3NpemUgKyBzaXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpKSAqCiAJCShk ZXYtPnNjc2lfaG9zdF9wdHItPmNhbl9xdWV1ZSArIEFBQ19OVU1fTUdUX0ZJQikpOwogCisJLyog MzIgYnl0ZSBhbGlnbm1lbnQgZm9yIFBNQyAqLworCWh3X2ZpYl9wYSA9IChkZXYtPmh3X2ZpYl9w YSArIChBTElHTjMyIC0gMSkpICYgfihBTElHTjMyIC0gMSk7CisJaHdfZmliICAgID0gKHN0cnVj dCBod19maWIgKikoKHVuc2lnbmVkIGNoYXIgKilkZXYtPmh3X2ZpYl92YSArCisJCQkJCShod19m aWJfcGEgLSBkZXYtPmh3X2ZpYl9wYSkpOworCiAJLyogYWRkIFhwb3J0IGhlYWRlciAqLwotCWRl di0+aHdfZmliX3ZhID0gKHN0cnVjdCBod19maWIgKikoKHVuc2lnbmVkIGNoYXIgKilkZXYtPmh3 X2ZpYl92YSArCisJaHdfZmliID0gKHN0cnVjdCBod19maWIgKikoKHVuc2lnbmVkIGNoYXIgKilo d19maWIgKwogCQlzaXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpKTsKLQlkZXYtPmh3X2Zp Yl9wYSArPSBzaXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpOworCWh3X2ZpYl9wYSArPSBz aXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpOwogCi0JaHdfZmliID0gZGV2LT5od19maWJf dmE7Ci0JaHdfZmliX3BhID0gZGV2LT5od19maWJfcGE7CiAJLyoKIAkgKglJbml0aWFsaXNlIHRo ZSBmaWJzCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9zcmMuYyBiL2Ry aXZlcnMvc2NzaS9hYWNyYWlkL3NyYy5jCmluZGV4IDljNjVhZWQyNjIxMi4uNzAwZDFlM2NlNmIy IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9zcmMuYworKysgYi9kcml2ZXJzL3Nj c2kvYWFjcmFpZC9zcmMuYwpAQCAtMzU5LDE2ICszNTksMjMgQEAgc3RhdGljIGludCBhYWNfc3Jj X2NoZWNrX2hlYWx0aChzdHJ1Y3QgYWFjX2RldiAqZGV2KQogCXUzMiBzdGF0dXMgPSBzcmNfcmVh ZGwoZGV2LCBNVW5pdC5PTVIpOwogCiAJLyoKKwkgKglDaGVjayB0byBzZWUgaWYgdGhlIGJvYXJk IHBhbmljJ2QuCisJICovCisJaWYgKHVubGlrZWx5KHN0YXR1cyAmIEtFUk5FTF9QQU5JQykpCisJ CWdvdG8gZXJyX2JsaW5rOworCisJLyoKIAkgKglDaGVjayB0byBzZWUgaWYgdGhlIGJvYXJkIGZh aWxlZCBhbnkgc2VsZiB0ZXN0cy4KIAkgKi8KIAlpZiAodW5saWtlbHkoc3RhdHVzICYgU0VMRl9U RVNUX0ZBSUxFRCkpCi0JCXJldHVybiAtMTsKKwkJZ290byBlcnJfb3V0OwogCiAJLyoKLQkgKglD aGVjayB0byBzZWUgaWYgdGhlIGJvYXJkIHBhbmljJ2QuCisJICoJQ2hlY2sgdG8gc2VlIGlmIHRo ZSBib2FyZCBmYWlsZWQgYW55IHNlbGYgdGVzdHMuCiAJICovCi0JaWYgKHVubGlrZWx5KHN0YXR1 cyAmIEtFUk5FTF9QQU5JQykpCi0JCXJldHVybiAoc3RhdHVzID4+IDE2KSAmIDB4RkY7CisJaWYg KHVubGlrZWx5KHN0YXR1cyAmIE1PTklUT1JfUEFOSUMpKQorCQlnb3RvIGVycl9vdXQ7CisKIAkv KgogCSAqCVdhaXQgZm9yIHRoZSBhZGFwdGVyIHRvIGJlIHVwIGFuZCBydW5uaW5nLgogCSAqLwpA QCAtMzc4LDYgKzM4NSwxMiBAQCBzdGF0aWMgaW50IGFhY19zcmNfY2hlY2tfaGVhbHRoKHN0cnVj dCBhYWNfZGV2ICpkZXYpCiAJICoJRXZlcnl0aGluZyBpcyBPSwogCSAqLwogCXJldHVybiAwOwor CitlcnJfb3V0OgorCXJldHVybiAtMTsKKworZXJyX2JsaW5rOgorCXJldHVybiAoc3RhdHVzID4g MTYpICYgMHhGRjsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3RvcnZzY19k cnYuYyBiL2RyaXZlcnMvc2NzaS9zdG9ydnNjX2Rydi5jCmluZGV4IGY5ZGE2NmZhODUwYi4uNzM5 ZTY1MWFjYzQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3RvcnZzY19kcnYuYworKysgYi9k cml2ZXJzL3Njc2kvc3RvcnZzY19kcnYuYwpAQCAtMTMzLDYgKzEzMyw4IEBAIHN0cnVjdCBodl9m Y193d25fcGFja2V0IHsKICNkZWZpbmUgU1JCX0ZMQUdTX1BPUlRfRFJJVkVSX1JFU0VSVkVECQkw eDBGMDAwMDAwCiAjZGVmaW5lIFNSQl9GTEFHU19DTEFTU19EUklWRVJfUkVTRVJWRUQJCTB4RjAw MDAwMDAKIAorI2RlZmluZSBTUF9VTlRBR0dFRAkJCSgodW5zaWduZWQgY2hhcikgfjApCisjZGVm aW5lIFNSQl9TSU1QTEVfVEFHX1JFUVVFU1QJCTB4MjAKIAogLyoKICAqIFBsYXRmb3JtIG5ldXRy YWwgZGVzY3JpcHRpb24gb2YgYSBzY3NpIHJlcXVlc3QgLQpAQCAtMzAwLDExICszMDIsMTUgQEAg ZW51bSBzdG9ydnNjX3JlcXVlc3RfdHlwZSB7CiAgKi8KIAogI2RlZmluZSBTUkJfU1RBVFVTX0FV VE9TRU5TRV9WQUxJRAkweDgwCisjZGVmaW5lIFNSQl9TVEFUVVNfUVVFVUVfRlJPWkVOCQkweDQw CiAjZGVmaW5lIFNSQl9TVEFUVVNfSU5WQUxJRF9MVU4JMHgyMAogI2RlZmluZSBTUkJfU1RBVFVT X1NVQ0NFU1MJMHgwMQogI2RlZmluZSBTUkJfU1RBVFVTX0FCT1JURUQJMHgwMgogI2RlZmluZSBT UkJfU1RBVFVTX0VSUk9SCTB4MDQKKyNkZWZpbmUgU1JCX1NUQVRVU19EQVRBX09WRVJSVU4JMHgx MgogCisjZGVmaW5lIFNSQl9TVEFUVVMoc3RhdHVzKSBcCisJKHN0YXR1cyAmIH4oU1JCX1NUQVRV U19BVVRPU0VOU0VfVkFMSUQgfCBTUkJfU1RBVFVTX1FVRVVFX0ZST1pFTikpCiAvKgogICogVGhp cyBpcyB0aGUgZW5kIG9mIFByb3RvY29sIHNwZWNpZmljIGRlZmluZXMuCiAgKi8KQEAgLTEwMDYs OSArMTAxMiwxNiBAQCBzdGF0aWMgdm9pZCBzdG9ydnNjX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgdm1z Y3NpX3JlcXVlc3QgKnZtX3NyYiwKIAl2b2lkICgqcHJvY2Vzc19lcnJfZm4pKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yayk7CiAJYm9vbCBkb193b3JrID0gZmFsc2U7CiAKLQlzd2l0Y2ggKHZtX3Ny Yi0+c3JiX3N0YXR1cykgeworCXN3aXRjaCAoU1JCX1NUQVRVUyh2bV9zcmItPnNyYl9zdGF0dXMp KSB7CiAJY2FzZSBTUkJfU1RBVFVTX0VSUk9SOgogCQkvKgorCQkgKiBMZXQgdXBwZXIgbGF5ZXIg ZGVhbCB3aXRoIGVycm9yIHdoZW4KKwkJICogc2Vuc2UgbWVzc2FnZSBpcyBwcmVzZW50LgorCQkg Ki8KKworCQlpZiAodm1fc3JiLT5zcmJfc3RhdHVzICYgU1JCX1NUQVRVU19BVVRPU0VOU0VfVkFM SUQpCisJCQlicmVhazsKKwkJLyoKIAkJICogSWYgdGhlcmUgaXMgYW4gZXJyb3I7IG9mZmxpbmUg dGhlIGRldmljZSBzaW5jZSBhbGwKIAkJICogZXJyb3IgcmVjb3Zlcnkgc3RyYXRlZ2llcyB3b3Vs ZCBoYXZlIGFscmVhZHkgYmVlbgogCQkgKiBkZXBsb3llZCBvbiB0aGUgaG9zdCBzaWRlLiBIb3dl dmVyLCBpZiB0aGUgY29tbWFuZApAQCAtMTA3Miw2ICsxMDg1LDcgQEAgc3RhdGljIHZvaWQgc3Rv cnZzY19jb21tYW5kX2NvbXBsZXRpb24oc3RydWN0IHN0b3J2c2NfY21kX3JlcXVlc3QgKmNtZF9y ZXF1ZXN0KQogCXZvaWQgKCpzY3NpX2RvbmVfZm4pKHN0cnVjdCBzY3NpX2NtbmQgKik7CiAJc3Ry dWN0IHNjc2lfc2Vuc2VfaGRyIHNlbnNlX2hkcjsKIAlzdHJ1Y3Qgdm1zY3NpX3JlcXVlc3QgKnZt X3NyYjsKKwl1MzIgZGF0YV90cmFuc2Zlcl9sZW5ndGg7CiAJc3RydWN0IHN0b3JfbWVtX3Bvb2xz ICptZW1wID0gc2NtbmQtPmRldmljZS0+aG9zdGRhdGE7CiAJc3RydWN0IFNjc2lfSG9zdCAqaG9z dDsKIAlzdHJ1Y3Qgc3RvcnZzY19kZXZpY2UgKnN0b3JfZGV2OwpAQCAtMTA4MSw2ICsxMDk1LDcg QEAgc3RhdGljIHZvaWQgc3RvcnZzY19jb21tYW5kX2NvbXBsZXRpb24oc3RydWN0IHN0b3J2c2Nf Y21kX3JlcXVlc3QgKmNtZF9yZXF1ZXN0KQogCWhvc3QgPSBzdG9yX2Rldi0+aG9zdDsKIAogCXZt X3NyYiA9ICZjbWRfcmVxdWVzdC0+dnN0b3JfcGFja2V0LnZtX3NyYjsKKwlkYXRhX3RyYW5zZmVy X2xlbmd0aCA9IHZtX3NyYi0+ZGF0YV90cmFuc2Zlcl9sZW5ndGg7CiAJaWYgKGNtZF9yZXF1ZXN0 LT5ib3VuY2Vfc2dsX2NvdW50KSB7CiAJCWlmICh2bV9zcmItPmRhdGFfaW4gPT0gUkVBRF9UWVBF KQogCQkJY29weV9mcm9tX2JvdW5jZV9idWZmZXIoc2NzaV9zZ2xpc3Qoc2NtbmQpLApAQCAtMTA5 OSwxMyArMTExNCwyMCBAQCBzdGF0aWMgdm9pZCBzdG9ydnNjX2NvbW1hbmRfY29tcGxldGlvbihz dHJ1Y3Qgc3RvcnZzY19jbWRfcmVxdWVzdCAqY21kX3JlcXVlc3QpCiAJCQlzY3NpX3ByaW50X3Nl bnNlX2hkcigic3RvcnZzYyIsICZzZW5zZV9oZHIpOwogCX0KIAotCWlmICh2bV9zcmItPnNyYl9z dGF0dXMgIT0gU1JCX1NUQVRVU19TVUNDRVNTKQorCWlmICh2bV9zcmItPnNyYl9zdGF0dXMgIT0g U1JCX1NUQVRVU19TVUNDRVNTKSB7CiAJCXN0b3J2c2NfaGFuZGxlX2Vycm9yKHZtX3NyYiwgc2Nt bmQsIGhvc3QsIHNlbnNlX2hkci5hc2MsCiAJCQkJCSBzZW5zZV9oZHIuYXNjcSk7CisJCS8qCisJ CSAqIFRoZSBXaW5kb3dzIGRyaXZlciBzZXQgZGF0YV90cmFuc2Zlcl9sZW5ndGggb24KKwkJICog U1JCX1NUQVRVU19EQVRBX09WRVJSVU4uIE9uIG90aGVyIGVycm9ycywgdGhpcyB2YWx1ZQorCQkg KiBpcyB1bnRvdWNoZWQuICBJbiB0aGVzZSBjYXNlcyB3ZSBzZXQgaXQgdG8gMC4KKwkJICovCisJ CWlmICh2bV9zcmItPnNyYl9zdGF0dXMgIT0gU1JCX1NUQVRVU19EQVRBX09WRVJSVU4pCisJCQlk YXRhX3RyYW5zZmVyX2xlbmd0aCA9IDA7CisJfQogCiAJc2NzaV9zZXRfcmVzaWQoc2NtbmQsCi0J CWNtZF9yZXF1ZXN0LT5kYXRhX2J1ZmZlci5sZW4gLQotCQl2bV9zcmItPmRhdGFfdHJhbnNmZXJf bGVuZ3RoKTsKKwkJY21kX3JlcXVlc3QtPmRhdGFfYnVmZmVyLmxlbiAtIGRhdGFfdHJhbnNmZXJf bGVuZ3RoKTsKIAogCXNjc2lfZG9uZV9mbiA9IHNjbW5kLT5zY3NpX2RvbmU7CiAKQEAgLTE2MTIs NiArMTYzNCwxMyBAQCBzdGF0aWMgaW50IHN0b3J2c2NfcXVldWVjb21tYW5kKHN0cnVjdCBTY3Np X0hvc3QgKmhvc3QsIHN0cnVjdCBzY3NpX2NtbmQgKnNjbW5kKQogCXZtX3NyYi0+d2luOF9leHRl bnNpb24uc3JiX2ZsYWdzIHw9CiAJCVNSQl9GTEFHU19ESVNBQkxFX1NZTkNIX1RSQU5TRkVSOwog CisJaWYgKHNjbW5kLT5kZXZpY2UtPnRhZ2dlZF9zdXBwb3J0ZWQpIHsKKwkJdm1fc3JiLT53aW44 X2V4dGVuc2lvbi5zcmJfZmxhZ3MgfD0KKwkJKFNSQl9GTEFHU19RVUVVRV9BQ1RJT05fRU5BQkxF IHwgU1JCX0ZMQUdTX05PX1FVRVVFX0ZSRUVaRSk7CisJCXZtX3NyYi0+d2luOF9leHRlbnNpb24u cXVldWVfdGFnID0gU1BfVU5UQUdHRUQ7CisJCXZtX3NyYi0+d2luOF9leHRlbnNpb24ucXVldWVf YWN0aW9uID0gU1JCX1NJTVBMRV9UQUdfUkVRVUVTVDsKKwl9CisKIAkvKiBCdWlsZCB0aGUgU1JC ICovCiAJc3dpdGNoIChzY21uZC0+c2NfZGF0YV9kaXJlY3Rpb24pIHsKIAljYXNlIERNQV9UT19E RVZJQ0U6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4OGV1L2NvcmUvcnR3X3Jl Y3YuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg4ZXUvY29yZS9ydHdfcmVjdi5jCmluZGV4IDBl NzNkZjU5NzViOC4uZWQ2ZGFhMmVlYzczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRs ODE4OGV1L2NvcmUvcnR3X3JlY3YuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4OGV1L2Nv cmUvcnR3X3JlY3YuYwpAQCAtMTQxOSwxMCArMTQxOSwxNCBAQCBzdGF0aWMgaW50IHdsYW5oZHJf dG9fZXRoaGRyKHN0cnVjdCByZWN2X2ZyYW1lICpwcmVjdmZyYW1lKQogCQlldGhfdHlwZSA9IDB4 ODcxMjsKIAkJLyogIGFwcGVuZCByeCBzdGF0dXMgZm9yIG1wIHRlc3QgcGFja2V0cyAqLwogCQlw dHIgPSByZWN2ZnJhbWVfcHVsbChwcmVjdmZyYW1lLCAocm12X2xlbi1zaXplb2Yoc3RydWN0IGV0 aGhkcikrMiktMjQpOworCQlpZiAoIXB0cikKKwkJCXJldHVybiBfRkFJTDsKIAkJbWVtY3B5KHB0 ciwgZ2V0X3J4bWVtKHByZWN2ZnJhbWUpLCAyNCk7CiAJCXB0ciArPSAyNDsKIAl9IGVsc2Ugewog CQlwdHIgPSByZWN2ZnJhbWVfcHVsbChwcmVjdmZyYW1lLCAocm12X2xlbi1zaXplb2Yoc3RydWN0 IGV0aGhkcikgKyAoYnNuYXBoZHIgPyAyIDogMCkpKTsKKwkJaWYgKCFwdHIpCisJCQlyZXR1cm4g X0ZBSUw7CiAJfQogCiAJbWVtY3B5KHB0ciwgcGF0dHJpYi0+ZHN0LCBFVEhfQUxFTik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmVlL3J0bDgxOTJlZS9ody5jIGIvZHJpdmVy cy9zdGFnaW5nL3J0bDgxOTJlZS9ydGw4MTkyZWUvaHcuYwppbmRleCAyNmFmMTE5ZTJjYTQuLjBj MzM2NzdkNjI3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlZS9ydGw4MTky ZWUvaHcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmVlL3J0bDgxOTJlZS9ody5jCkBA IC0xMDA2LDcgKzEwMDYsNyBAQCBzdGF0aWMgdm9pZCBfcnRsOTJlZV9od19jb25maWd1cmUoc3Ry dWN0IGllZWU4MDIxMV9odyAqaHcpCiAJcnRsX3dyaXRlX3dvcmQocnRscHJpdiwgUkVHX1NJRlNf VFJYLCAweDEwMGEpOwogCiAJLyogTm90ZSBEYXRhIHNoZWV0IGRvbid0IGRlZmluZSAqLwotCXJ0 bF93cml0ZV93b3JkKHJ0bHByaXYsIDB4NEM3LCAweDgwKTsKKwlydGxfd3JpdGVfYnl0ZShydGxw cml2LCAweDRDNywgMHg4MCk7CiAKIAlydGxfd3JpdGVfYnl0ZShydGxwcml2LCBSRUdfUlhfUEtU X0xJTUlULCAweDIwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRs ODcxeF9yZWN2LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X3JlY3YuYwppbmRl eCBlYjc3NTg3MmM5M2MuLmRmMmRhZjM1MWM5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5n L3J0bDg3MTIvcnRsODcxeF9yZWN2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRs ODcxeF9yZWN2LmMKQEAgLTYzOSwxMSArNjM5LDE2IEBAIHNpbnQgcjg3MTJfd2xhbmhkcl90b19l dGhoZHIodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSkKIAkJLyogYXBwZW5kIHJ4IHN0YXR1 cyBmb3IgbXAgdGVzdCBwYWNrZXRzICovCiAJCXB0ciA9IHJlY3ZmcmFtZV9wdWxsKHByZWN2ZnJh bWUsIChybXZfbGVuIC0KIAkJICAgICAgc2l6ZW9mKHN0cnVjdCBldGhoZHIpICsgMikgLSAyNCk7 CisJCWlmICghcHRyKQorCQkJcmV0dXJuIF9GQUlMOwogCQltZW1jcHkocHRyLCBnZXRfcnhtZW0o cHJlY3ZmcmFtZSksIDI0KTsKIAkJcHRyICs9IDI0OwotCX0gZWxzZQorCX0gZWxzZSB7CiAJCXB0 ciA9IHJlY3ZmcmFtZV9wdWxsKHByZWN2ZnJhbWUsIChybXZfbGVuIC0KIAkJICAgICAgc2l6ZW9m KHN0cnVjdCBldGhoZHIpICsgKGJzbmFwaGRyID8gMiA6IDApKSk7CisJCWlmICghcHRyKQorCQkJ cmV0dXJuIF9GQUlMOworCX0KIAogCW1lbWNweShwdHIsIHBhdHRyaWItPmRzdCwgRVRIX0FMRU4p OwogCW1lbWNweShwdHIrRVRIX0FMRU4sIHBhdHRyaWItPnNyYywgRVRIX0FMRU4pOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg4MjFhZS9ydGw4ODIxYWUvaHcuYyBiL2RyaXZlcnMv c3RhZ2luZy9ydGw4ODIxYWUvcnRsODgyMWFlL2h3LmMKaW5kZXggMWI4NTgzYjY4OWQ0Li5lZDNl ZDkyNGI2ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4ODIxYWUvcnRsODgyMWFl L2h3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg4MjFhZS9ydGw4ODIxYWUvaHcuYwpAQCAt MTA5OCw3ICsxMDk4LDcgQEAgc3RhdGljIHU4IF9ydGw4ODIxYWVfZGJpX3JlYWQoc3RydWN0IHJ0 bF9wcml2ICpydGxwcml2LCB1MTYgYWRkcikKIAl9CiAJaWYgKDAgPT0gdG1wKSB7CiAJCXJlYWRf YWRkciA9IFJFR19EQklfUkRBVEEgKyBhZGRyICUgNDsKLQkJcmV0ID0gcnRsX3JlYWRfd29yZChy dGxwcml2LCByZWFkX2FkZHIpOworCQlyZXQgPSBydGxfcmVhZF9ieXRlKHJ0bHByaXYsIHJlYWRf YWRkcik7CiAJfQogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv d2xhbi1uZy9wODAyMTFuZXRkZXYuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW5l dGRldi5jCmluZGV4IDAwYjE4NmM1OTcyNS4uMGIzMDM0MGEwZjBlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFuZXRkZXYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcv d2xhbi1uZy9wODAyMTFuZXRkZXYuYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBpbnQgcDgw MjExX2NvbnZlcnRfdG9fZXRoZXIod2xhbmRldmljZV90ICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiKQogCXN0cnVjdCBwODAyMTFfaGRyX2EzICpoZHI7CiAKIAloZHIgPSAoc3RydWN0IHA4 MDIxMV9oZHJfYTMgKikgc2tiLT5kYXRhOwotCWlmIChwODAyMTFfcnhfdHlwZWRyb3Aod2xhbmRl diwgaGRyLT5mYykpCisJaWYgKHA4MDIxMV9yeF90eXBlZHJvcCh3bGFuZGV2LCBsZTE2X3RvX2Nw dShoZHItPmZjKSkpCiAJCXJldHVybiBDT05WX1RPX0VUSEVSX1NLSVBQRUQ7CiAKIAkvKiBwZXJm b3JtIG1jYXN0IGZpbHRlcmluZzogYWxsb3cgbXkgbG9jYWwgYWRkcmVzcyB0aHJvdWdoIGJ1dCBy ZWplY3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfcGNpLmMgYi9k cml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX3BjaS5jCmluZGV4IGU5MGVhM2RhNWNkYS4uNDA1 YWI1ZTFmOGU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX3BjaS5j CisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfcGNpLmMKQEAgLTE2NjEsMTAgKzE2 NjEsNyBAQCBwY2lfeHIxN3YzNXhfc2V0dXAoc3RydWN0IHNlcmlhbF9wcml2YXRlICpwcml2LAog CQkgIHN0cnVjdCB1YXJ0XzgyNTBfcG9ydCAqcG9ydCwgaW50IGlkeCkKIHsKIAl1OCBfX2lvbWVt ICpwOwotCi0JcCA9IHBjaV9pb3JlbWFwX2Jhcihwcml2LT5kZXYsIDApOwotCWlmIChwID09IE5V TEwpCi0JCXJldHVybiAtRU5PTUVNOworCWludCByZXQ7CiAKIAlwb3J0LT5wb3J0LmZsYWdzIHw9 IFVQRl9FWEFSX0VGUjsKIApAQCAtMTY3NSw2ICsxNjcyLDE3IEBAIHBjaV94cjE3djM1eF9zZXR1 cChzdHJ1Y3Qgc2VyaWFsX3ByaXZhdGUgKnByaXYsCiAJaWYgKHhyMTd2MzV4X2hhc19zbGF2ZShw cml2KSAmJiBpZHggPj0gOCkKIAkJcG9ydC0+cG9ydC51YXJ0Y2xrID0gKDc4MTI1MDAgKiAxNiAv IDIpOwogCisJcmV0ID0gcGNpX2RlZmF1bHRfc2V0dXAocHJpdiwgYm9hcmQsIHBvcnQsIGlkeCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXAgPSBwb3J0LT5wb3J0Lm1lbWJhc2U7CisK Kwl3cml0ZWIoMHgwMCwgcCArIFVBUlRfRVhBUl84WE1PREUpOworCXdyaXRlYihVQVJUX0ZDVFJf RVhBUl9UUkdELCBwICsgVUFSVF9FWEFSX0ZDVFIpOworCXdyaXRlYigxMjgsIHAgKyBVQVJUX0VY QVJfVFhUUkcpOworCXdyaXRlYigxMjgsIHAgKyBVQVJUX0VYQVJfUlhUUkcpOworCiAJLyoKIAkg KiBTZXR1cCBNdWx0aXB1cnBvc2UgSW5wdXQvT3V0cHV0IHBpbnMuCiAJICovCkBAIC0xNjkyLDEz ICsxNzAwLDggQEAgcGNpX3hyMTd2MzV4X3NldHVwKHN0cnVjdCBzZXJpYWxfcHJpdmF0ZSAqcHJp diwKIAkJd3JpdGViKDB4MDAsIHAgKyAweDk5KTsgLypNUElPU0VMWzE1OjhdKi8KIAkJd3JpdGVi KDB4MDAsIHAgKyAweDlhKTsgLypNUElPT0RbMTU6OF0qLwogCX0KLQl3cml0ZWIoMHgwMCwgcCAr IFVBUlRfRVhBUl84WE1PREUpOwotCXdyaXRlYihVQVJUX0ZDVFJfRVhBUl9UUkdELCBwICsgVUFS VF9FWEFSX0ZDVFIpOwotCXdyaXRlYigxMjgsIHAgKyBVQVJUX0VYQVJfVFhUUkcpOwotCXdyaXRl YigxMjgsIHAgKyBVQVJUX0VYQVJfUlhUUkcpOwotCWlvdW5tYXAocCk7CiAKLQlyZXR1cm4gcGNp X2RlZmF1bHRfc2V0dXAocHJpdiwgYm9hcmQsIHBvcnQsIGlkeCk7CisJcmV0dXJuIDA7CiB9CiAK ICNkZWZpbmUgUENJX0RFVklDRV9JRF9DT01NVEVDSF80MjIyUENJMzM1IDB4MDAwNApAQCAtMjY5 Nyw2ICsyNzAwLDggQEAgZW51bSBwY2lfYm9hcmRfbnVtX3QgewogCXBibl9iMF80XzExNTIwMDBf MjAwLAogCXBibl9iMF84XzExNTIwMDBfMjAwLAogCisJcGJuX2IwXzRfMTI1MDAwMCwKKwogCXBi bl9iMF8yXzE4NDMyMDAsCiAJcGJuX2IwXzRfMTg0MzIwMCwKIApAQCAtMjkyNyw2ICsyOTMyLDEz IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpc2VyaWFsX2JvYXJkIHBjaV9ib2FyZHNbXSA9IHsKIAkJLnVh cnRfb2Zmc2V0CT0gMHgyMDAsCiAJfSwKIAorCVtwYm5fYjBfNF8xMjUwMDAwXSA9IHsKKwkJLmZs YWdzCQk9IEZMX0JBU0UwLAorCQkubnVtX3BvcnRzCT0gNCwKKwkJLmJhc2VfYmF1ZAk9IDEyNTAw MDAsCisJCS51YXJ0X29mZnNldAk9IDgsCisJfSwKKwogCVtwYm5fYjBfMl8xODQzMjAwXSA9IHsK IAkJLmZsYWdzCQk9IEZMX0JBU0UwLAogCQkubnVtX3BvcnRzCT0gMiwKQEAgLTU1MjYsNiArNTUz OCwxMCBAQCBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgc2VyaWFsX3BjaV90YmxbXSA9IHsK IAl7IFBDSV9ERVZJQ0UoMHgxYzI5LCAweDExMDgpLCAuZHJpdmVyX2RhdGEgPSBwYm5fZmludGVr XzggfSwKIAl7IFBDSV9ERVZJQ0UoMHgxYzI5LCAweDExMTIpLCAuZHJpdmVyX2RhdGEgPSBwYm5f ZmludGVrXzEyIH0sCiAKKwkvKiBNS1MgVGVudGEgU0NPTS0wODB4IHNlcmlhbCBjYXJkcyAqLwor CXsgUENJX0RFVklDRSgweDE2MDEsIDB4MDgwMCksIC5kcml2ZXJfZGF0YSA9IHBibl9iMF80XzEy NTAwMDAgfSwKKwl7IFBDSV9ERVZJQ0UoMHgxNjAxLCAweGE4MDEpLCAuZHJpdmVyX2RhdGEgPSBw Ym5fYjBfNF8xMjUwMDAwIH0sCisKIAkvKgogCSAqIFRoZXNlIGVudHJpZXMgbWF0Y2ggZGV2aWNl cyB3aXRoIGNsYXNzIENPTU1VTklDQVRJT05fU0VSSUFMLAogCSAqIENPTU1VTklDQVRJT05fTU9E RU0gb3IgQ09NTVVOSUNBVElPTl9NVUxUSVNFUklBTApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkv c2VyaWFsL21zbV9zZXJpYWwuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tc21fc2VyaWFsLmMKaW5k ZXggNWE4MmNhMmY0YmFkLi42YzkzOGFkYWU0MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3Nl cmlhbC9tc21fc2VyaWFsLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL21zbV9zZXJpYWwuYwpA QCAtMTA1NCw2ICsxMDU0LDcgQEAgc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgbXNtX21hdGNo X3RhYmxlW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJxY29tLG1zbS11YXJ0ZG0iIH0sCiAJe30K IH07CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtc21fbWF0Y2hfdGFibGUpOwogCiBzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtc21fcGxhdGZvcm1fZHJpdmVyID0gewogCS5yZW1vdmUg PSBtc21fc2VyaWFsX3JlbW92ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzMvZ2FkZ2V0 LmMgYi9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jCmluZGV4IGU4MWNkYTExMjlhMy4uNjkxYzYz Mjk3ZTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jCisrKyBiL2RyaXZl cnMvdXNiL2R3YzMvZ2FkZ2V0LmMKQEAgLTEzNDYsNiArMTM0Niw5IEBAIGludCBfX2R3YzNfZ2Fk Z2V0X2VwX3NldF9oYWx0KHN0cnVjdCBkd2MzX2VwICpkZXAsIGludCB2YWx1ZSwgaW50IHByb3Rv Y29sKQogCW1lbXNldCgmcGFyYW1zLCAweDAwLCBzaXplb2YocGFyYW1zKSk7CiAKIAlpZiAodmFs dWUpIHsKKwkJaWYgKGRlcC0+ZmxhZ3MgJiBEV0MzX0VQX1NUQUxMKQorCQkJcmV0dXJuIDA7CisK IAkJaWYgKCFwcm90b2NvbCAmJiAoKGRlcC0+ZGlyZWN0aW9uICYmIGRlcC0+ZmxhZ3MgJiBEV0Mz X0VQX0JVU1kpIHx8CiAJCQkJKCFsaXN0X2VtcHR5KCZkZXAtPnJlcV9xdWV1ZWQpIHx8CiAJCQkJ ICFsaXN0X2VtcHR5KCZkZXAtPnJlcXVlc3RfbGlzdCkpKSkgewpAQCAtMTM2Miw2ICsxMzY1LDkg QEAgaW50IF9fZHdjM19nYWRnZXRfZXBfc2V0X2hhbHQoc3RydWN0IGR3YzNfZXAgKmRlcCwgaW50 IHZhbHVlLCBpbnQgcHJvdG9jb2wpCiAJCWVsc2UKIAkJCWRlcC0+ZmxhZ3MgfD0gRFdDM19FUF9T VEFMTDsKIAl9IGVsc2UgeworCQlpZiAoIShkZXAtPmZsYWdzICYgRFdDM19FUF9TVEFMTCkpCisJ CQlyZXR1cm4gMDsKKwogCQlyZXQgPSBkd2MzX3NlbmRfZ2FkZ2V0X2VwX2NtZChkd2MsIGRlcC0+ bnVtYmVyLAogCQkJRFdDM19ERVBDTURfQ0xFQVJTVEFMTCwgJnBhcmFtcyk7CiAJCWlmIChyZXQp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9oaWQuYyBiL2RyaXZlcnMvdXNiL2dh ZGdldC9mX2hpZC5jCmluZGV4IGE5NTI5MGExMjg5Zi4uZjY5ZmQ0M2Q5ZjAzIDEwMDY0NAotLS0g YS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9oaWQuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9o aWQuYwpAQCAtNDQsMTIgKzQ0LDEyIEBAIHN0cnVjdCBmX2hpZGcgewogCiAJLyogcmVjdiByZXBv cnQgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkCQljb21wbGV0ZWRfb3V0X3JlcTsKLQlzcGlubG9ja190 CQkJc3BpbmxvY2s7CisJc3BpbmxvY2tfdAkJCXJlYWRfc3BpbmxvY2s7CiAJd2FpdF9xdWV1ZV9o ZWFkX3QJCXJlYWRfcXVldWU7CiAJdW5zaWduZWQgaW50CQkJcWxlbjsKIAogCS8qIHNlbmQgcmVw b3J0ICovCi0Jc3RydWN0IG11dGV4CQkJbG9jazsKKwlzcGlubG9ja190CQkJd3JpdGVfc3Bpbmxv Y2s7CiAJYm9vbAkJCQl3cml0ZV9wZW5kaW5nOwogCXdhaXRfcXVldWVfaGVhZF90CQl3cml0ZV9x dWV1ZTsKIAlzdHJ1Y3QgdXNiX3JlcXVlc3QJCSpyZXE7CkBAIC0xNzgsMjggKzE3OCwzNSBAQCBz dGF0aWMgc3NpemVfdCBmX2hpZGdfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIg KmJ1ZmZlciwKIAlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGJ1ZmZlciwgY291bnQpKQog CQlyZXR1cm4gLUVGQVVMVDsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZoaWRnLT5zcGlubG9jaywg ZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZoaWRnLT5yZWFkX3NwaW5sb2NrLCBmbGFncyk7 CiAKICNkZWZpbmUgUkVBRF9DT05EICghbGlzdF9lbXB0eSgmaGlkZy0+Y29tcGxldGVkX291dF9y ZXEpKQogCiAJLyogd2FpdCBmb3IgYXQgbGVhc3Qgb25lIGJ1ZmZlciB0byBjb21wbGV0ZSAqLwog CXdoaWxlICghUkVBRF9DT05EKSB7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhpZGctPnNw aW5sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhpZGctPnJlYWRfc3Bp bmxvY2ssIGZsYWdzKTsKIAkJaWYgKGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKQogCQkJcmV0 dXJuIC1FQUdBSU47CiAKIAkJaWYgKHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShoaWRnLT5yZWFk X3F1ZXVlLCBSRUFEX0NPTkQpKQogCQkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKIAotCQlzcGluX2xv Y2tfaXJxc2F2ZSgmaGlkZy0+c3BpbmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUo JmhpZGctPnJlYWRfc3BpbmxvY2ssIGZsYWdzKTsKIAl9CiAKIAkvKiBwaWNrIHRoZSBmaXJzdCBv bmUgKi8KIAlsaXN0ID0gbGlzdF9maXJzdF9lbnRyeSgmaGlkZy0+Y29tcGxldGVkX291dF9yZXEs CiAJCQkJc3RydWN0IGZfaGlkZ19yZXFfbGlzdCwgbGlzdCk7CisKKwkvKgorCSAqIFJlbW92ZSB0 aGlzIGZyb20gbGlzdCB0byBwcm90ZWN0IGl0IGZyb20gYmVpZ24gZnJlZSgpCisJICogd2hpbGUg aG9zdCBkaXNhYmxlcyBvdXIgZnVuY3Rpb24KKwkgKi8KKwlsaXN0X2RlbCgmbGlzdC0+bGlzdCk7 CisKIAlyZXEgPSBsaXN0LT5yZXE7CiAJY291bnQgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGNvdW50 LCByZXEtPmFjdHVhbCAtIGxpc3QtPnBvcyk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGlk Zy0+c3BpbmxvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoaWRnLT5yZWFk X3NwaW5sb2NrLCBmbGFncyk7CiAKIAkvKiBjb3B5IHRvIHVzZXIgb3V0c2lkZSBzcGlubG9jayAq LwogCWNvdW50IC09IGNvcHlfdG9fdXNlcihidWZmZXIsIHJlcS0+YnVmICsgbGlzdC0+cG9zLCBj b3VudCk7CkBAIC0yMTIsMTUgKzIxOSwyMCBAQCBzdGF0aWMgc3NpemVfdCBmX2hpZGdfcmVhZChz dHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAkgKiBjYWxsLCB0YWtpbmcg aW50byBhY2NvdW50IGl0cyBjdXJyZW50IHJlYWQgcG9zaXRpb24uCiAJICovCiAJaWYgKGxpc3Qt PnBvcyA9PSByZXEtPmFjdHVhbCkgewotCQlzcGluX2xvY2tfaXJxc2F2ZSgmaGlkZy0+c3Bpbmxv Y2ssIGZsYWdzKTsKLQkJbGlzdF9kZWwoJmxpc3QtPmxpc3QpOwogCQlrZnJlZShsaXN0KTsKLQkJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGlkZy0+c3BpbmxvY2ssIGZsYWdzKTsKIAogCQlyZXEt Pmxlbmd0aCA9IGhpZGctPnJlcG9ydF9sZW5ndGg7CiAJCXJldCA9IHVzYl9lcF9xdWV1ZShoaWRn LT5vdXRfZXAsIHJlcSwgR0ZQX0tFUk5FTCk7Ci0JCWlmIChyZXQgPCAwKQorCQlpZiAocmV0IDwg MCkgeworCQkJZnJlZV9lcF9yZXEoaGlkZy0+b3V0X2VwLCByZXEpOwogCQkJcmV0dXJuIHJldDsK KwkJfQorCX0gZWxzZSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZoaWRnLT5yZWFkX3NwaW5sb2Nr LCBmbGFncyk7CisJCWxpc3RfYWRkKCZsaXN0LT5saXN0LCAmaGlkZy0+Y29tcGxldGVkX291dF9y ZXEpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoaWRnLT5yZWFkX3NwaW5sb2NrLCBmbGFn cyk7CisKKwkJd2FrZV91cCgmaGlkZy0+cmVhZF9xdWV1ZSk7CiAJfQogCiAJcmV0dXJuIGNvdW50 OwpAQCAtMjI5LDEzICsyNDEsMTYgQEAgc3RhdGljIHNzaXplX3QgZl9oaWRnX3JlYWQoc3RydWN0 IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWZmZXIsCiBzdGF0aWMgdm9pZCBmX2hpZGdfcmVx X2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSkKIHsK IAlzdHJ1Y3QgZl9oaWRnICpoaWRnID0gKHN0cnVjdCBmX2hpZGcgKillcC0+ZHJpdmVyX2RhdGE7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChyZXEtPnN0YXR1cyAhPSAwKSB7CiAJCUVS Uk9SKGhpZGctPmZ1bmMuY29uZmlnLT5jZGV2LAogCQkJIkVuZCBQb2ludCBSZXF1ZXN0IEVSUk9S OiAlZFxuIiwgcmVxLT5zdGF0dXMpOwogCX0KIAorCXNwaW5fbG9ja19pcnFzYXZlKCZoaWRnLT53 cml0ZV9zcGlubG9jaywgZmxhZ3MpOwogCWhpZGctPndyaXRlX3BlbmRpbmcgPSAwOworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmhpZGctPndyaXRlX3NwaW5sb2NrLCBmbGFncyk7CiAJd2FrZV91 cCgmaGlkZy0+d3JpdGVfcXVldWUpOwogfQogCkBAIC0yNDMsMTggKzI1OCwxOSBAQCBzdGF0aWMg c3NpemVfdCBmX2hpZGdfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2Vy ICpidWZmZXIsCiAJCQkgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKm9mZnApCiB7CiAJc3RydWN0 IGZfaGlkZyAqaGlkZyAgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJdW5zaWduZWQgbG9uZyBmbGFn czsKIAlzc2l6ZV90IHN0YXR1cyA9IC1FTk9NRU07CiAKIAlpZiAoIWFjY2Vzc19vayhWRVJJRllf UkVBRCwgYnVmZmVyLCBjb3VudCkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JbXV0ZXhfbG9jaygm aGlkZy0+bG9jayk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmhpZGctPndyaXRlX3NwaW5sb2NrLCBm bGFncyk7CiAKICNkZWZpbmUgV1JJVEVfQ09ORCAoIWhpZGctPndyaXRlX3BlbmRpbmcpCiAKIAkv KiB3cml0ZSBxdWV1ZSAqLwogCXdoaWxlICghV1JJVEVfQ09ORCkgewotCQltdXRleF91bmxvY2so JmhpZGctPmxvY2spOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoaWRnLT53cml0ZV9zcGlu bG9jaywgZmxhZ3MpOwogCQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spCiAJCQlyZXR1 cm4gLUVBR0FJTjsKIApAQCAtMjYyLDE3ICsyNzgsMjAgQEAgc3RhdGljIHNzaXplX3QgZl9oaWRn X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCQkJ CWhpZGctPndyaXRlX3F1ZXVlLCBXUklURV9DT05EKSkKIAkJCXJldHVybiAtRVJFU1RBUlRTWVM7 CiAKLQkJbXV0ZXhfbG9jaygmaGlkZy0+bG9jayk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZoaWRn LT53cml0ZV9zcGlubG9jaywgZmxhZ3MpOwogCX0KIAorCWhpZGctPndyaXRlX3BlbmRpbmcgPSAx OwogCWNvdW50ICA9IG1pbl90KHVuc2lnbmVkLCBjb3VudCwgaGlkZy0+cmVwb3J0X2xlbmd0aCk7 CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoaWRnLT53cml0ZV9zcGlubG9jaywgZmxhZ3Mp OwogCXN0YXR1cyA9IGNvcHlfZnJvbV91c2VyKGhpZGctPnJlcS0+YnVmLCBidWZmZXIsIGNvdW50 KTsKIAogCWlmIChzdGF0dXMgIT0gMCkgewogCQlFUlJPUihoaWRnLT5mdW5jLmNvbmZpZy0+Y2Rl diwKIAkJCSJjb3B5X2Zyb21fdXNlciBlcnJvclxuIik7Ci0JCW11dGV4X3VubG9jaygmaGlkZy0+ bG9jayk7Ci0JCXJldHVybiAtRUlOVkFMOworCQlzdGF0dXMgPSAtRUlOVkFMOworCQlnb3RvIHJl bGVhc2Vfd3JpdGVfcGVuZGluZzsKIAl9CiAKIAloaWRnLT5yZXEtPnN0YXR1cyAgID0gMDsKQEAg LTI4MCwxOSArMjk5LDIzIEBAIHN0YXRpYyBzc2l6ZV90IGZfaGlkZ193cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAloaWRnLT5yZXEtPmxlbmd0aCAg ID0gY291bnQ7CiAJaGlkZy0+cmVxLT5jb21wbGV0ZSA9IGZfaGlkZ19yZXFfY29tcGxldGU7CiAJ aGlkZy0+cmVxLT5jb250ZXh0ICA9IGhpZGc7Ci0JaGlkZy0+d3JpdGVfcGVuZGluZyA9IDE7CiAK IAlzdGF0dXMgPSB1c2JfZXBfcXVldWUoaGlkZy0+aW5fZXAsIGhpZGctPnJlcSwgR0ZQX0FUT01J Qyk7CiAJaWYgKHN0YXR1cyA8IDApIHsKIAkJRVJST1IoaGlkZy0+ZnVuYy5jb25maWctPmNkZXYs CiAJCQkidXNiX2VwX3F1ZXVlIGVycm9yIG9uIGludCBlbmRwb2ludCAlemRcbiIsIHN0YXR1cyk7 Ci0JCWhpZGctPndyaXRlX3BlbmRpbmcgPSAwOwotCQl3YWtlX3VwKCZoaWRnLT53cml0ZV9xdWV1 ZSk7CisJCWdvdG8gcmVsZWFzZV93cml0ZV9wZW5kaW5nOwogCX0gZWxzZSB7CiAJCXN0YXR1cyA9 IGNvdW50OwogCX0KIAotCW11dGV4X3VubG9jaygmaGlkZy0+bG9jayk7CisJcmV0dXJuIHN0YXR1 czsKK3JlbGVhc2Vfd3JpdGVfcGVuZGluZzoKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaGlkZy0+d3Jp dGVfc3BpbmxvY2ssIGZsYWdzKTsKKwloaWRnLT53cml0ZV9wZW5kaW5nID0gMDsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZoaWRnLT53cml0ZV9zcGlubG9jaywgZmxhZ3MpOworCisJd2FrZV91 cCgmaGlkZy0+d3JpdGVfcXVldWUpOwogCiAJcmV0dXJuIHN0YXR1czsKIH0KQEAgLTM0NSwyMCAr MzY4LDM2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHVzYl9yZXF1ZXN0ICpoaWRnX2FsbG9jX2Vw X3JlcShzdHJ1Y3QgdXNiX2VwICplcCwKIHN0YXRpYyB2b2lkIGhpZGdfc2V0X3JlcG9ydF9jb21w bGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpCiB7CiAJc3Ry dWN0IGZfaGlkZyAqaGlkZyA9IChzdHJ1Y3QgZl9oaWRnICopIHJlcS0+Y29udGV4dDsKKwlzdHJ1 Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYgPSBoaWRnLT5mdW5jLmNvbmZpZy0+Y2RldjsKIAlz dHJ1Y3QgZl9oaWRnX3JlcV9saXN0ICpyZXFfbGlzdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwog Ci0JcmVxX2xpc3QgPSBremFsbG9jKHNpemVvZigqcmVxX2xpc3QpLCBHRlBfQVRPTUlDKTsKLQlp ZiAoIXJlcV9saXN0KQotCQlyZXR1cm47CisJc3dpdGNoIChyZXEtPnN0YXR1cykgeworCWNhc2Ug MDoKKwkJcmVxX2xpc3QgPSBremFsbG9jKHNpemVvZigqcmVxX2xpc3QpLCBHRlBfQVRPTUlDKTsK KwkJaWYgKCFyZXFfbGlzdCkgeworCQkJRVJST1IoY2RldiwgIlVuYWJsZSB0byBhbGxvY2F0ZSBt ZW0gZm9yIHJlcV9saXN0XG4iKTsKKwkJCWdvdG8gZnJlZV9yZXE7CisJCX0KIAotCXJlcV9saXN0 LT5yZXEgPSByZXE7CisJCXJlcV9saXN0LT5yZXEgPSByZXE7CiAKLQlzcGluX2xvY2tfaXJxc2F2 ZSgmaGlkZy0+c3BpbmxvY2ssIGZsYWdzKTsKLQlsaXN0X2FkZF90YWlsKCZyZXFfbGlzdC0+bGlz dCwgJmhpZGctPmNvbXBsZXRlZF9vdXRfcmVxKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZo aWRnLT5zcGlubG9jaywgZmxhZ3MpOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmaGlkZy0+cmVhZF9z cGlubG9jaywgZmxhZ3MpOworCQlsaXN0X2FkZF90YWlsKCZyZXFfbGlzdC0+bGlzdCwgJmhpZGct PmNvbXBsZXRlZF9vdXRfcmVxKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGlkZy0+cmVh ZF9zcGlubG9jaywgZmxhZ3MpOwogCi0Jd2FrZV91cCgmaGlkZy0+cmVhZF9xdWV1ZSk7CisJCXdh a2VfdXAoJmhpZGctPnJlYWRfcXVldWUpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlFUlJPUihj ZGV2LCAiU2V0IHJlcG9ydCBmYWlsZWQgJWRcbiIsIHJlcS0+c3RhdHVzKTsKKwkJLyogRkFMTFRI Uk9VR0ggKi8KKwljYXNlIC1FQ09OTkFCT1JURUQ6CQkvKiBoYXJkd2FyZSBmb3JjZWQgZXAgcmVz ZXQgKi8KKwljYXNlIC1FQ09OTlJFU0VUOgkJLyogcmVxdWVzdCBkZXF1ZXVlZCAqLworCWNhc2Ug LUVTSFVURE9XTjoJCS8qIGRpc2Nvbm5lY3QgZnJvbSBob3N0ICovCitmcmVlX3JlcToKKwkJZnJl ZV9lcF9yZXEoZXAsIHJlcSk7CisJCXJldHVybjsKKwl9CiB9CiAKIHN0YXRpYyBpbnQgaGlkZ19z ZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLApAQCAtNDU1LDYgKzQ5NCw3IEBAIHN0YXRpYyB2 b2lkIGhpZGdfZGlzYWJsZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKQogewogCXN0cnVjdCBmX2hp ZGcgKmhpZGcgPSBmdW5jX3RvX2hpZGcoZik7CiAJc3RydWN0IGZfaGlkZ19yZXFfbGlzdCAqbGlz dCwgKm5leHQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXVzYl9lcF9kaXNhYmxlKGhpZGct PmluX2VwKTsKIAloaWRnLT5pbl9lcC0+ZHJpdmVyX2RhdGEgPSBOVUxMOwpAQCAtNDYyLDEwICs1 MDIsMTMgQEAgc3RhdGljIHZvaWQgaGlkZ19kaXNhYmxlKHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYp CiAJdXNiX2VwX2Rpc2FibGUoaGlkZy0+b3V0X2VwKTsKIAloaWRnLT5vdXRfZXAtPmRyaXZlcl9k YXRhID0gTlVMTDsKIAorCXNwaW5fbG9ja19pcnFzYXZlKCZoaWRnLT5yZWFkX3NwaW5sb2NrLCBm bGFncyk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpc3QsIG5leHQsICZoaWRnLT5jb21w bGV0ZWRfb3V0X3JlcSwgbGlzdCkgeworCQlmcmVlX2VwX3JlcShoaWRnLT5vdXRfZXAsIGxpc3Qt PnJlcSk7CiAJCWxpc3RfZGVsKCZsaXN0LT5saXN0KTsKIAkJa2ZyZWUobGlzdCk7CiAJfQorCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmhpZGctPnJlYWRfc3BpbmxvY2ssIGZsYWdzKTsKIH0KIAog c3RhdGljIGludCBoaWRnX3NldF9hbHQoc3RydWN0IHVzYl9mdW5jdGlvbiAqZiwgdW5zaWduZWQg aW50ZiwgdW5zaWduZWQgYWx0KQpAQCAtNjEwLDggKzY1Myw4IEBAIHN0YXRpYyBpbnQgX19pbml0 IGhpZGdfYmluZChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIHN0cnVjdCB1c2JfZnVuY3Rp b24gKmYpCiAJaWYgKHN0YXR1cykKIAkJZ290byBmYWlsOwogCi0JbXV0ZXhfaW5pdCgmaGlkZy0+ bG9jayk7Ci0Jc3Bpbl9sb2NrX2luaXQoJmhpZGctPnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaW5p dCgmaGlkZy0+d3JpdGVfc3BpbmxvY2spOworCXNwaW5fbG9ja19pbml0KCZoaWRnLT5yZWFkX3Nw aW5sb2NrKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZoaWRnLT53cml0ZV9xdWV1ZSk7CiAJaW5p dF93YWl0cXVldWVfaGVhZCgmaGlkZy0+cmVhZF9xdWV1ZSk7CiAJSU5JVF9MSVNUX0hFQUQoJmhp ZGctPmNvbXBsZXRlZF9vdXRfcmVxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9m X21pZGkuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX21pZGkuYwppbmRleCA4MDdiMzFjMGVkYzMu LjdhYzM4NDQ2YmU1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfbWlkaS5jCisr KyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX21pZGkuYwpAQCAtMTk5LDEyICsxOTksNiBAQCBzdGF0 aWMgaW5saW5lIHN0cnVjdCB1c2JfcmVxdWVzdCAqbWlkaV9hbGxvY19lcF9yZXEoc3RydWN0IHVz Yl9lcCAqZXAsCiAJcmV0dXJuIGFsbG9jX2VwX3JlcShlcCwgbGVuZ3RoLCBsZW5ndGgpOwogfQog Ci1zdGF0aWMgdm9pZCBmcmVlX2VwX3JlcShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9y ZXF1ZXN0ICpyZXEpCi17Ci0Ja2ZyZWUocmVxLT5idWYpOwotCXVzYl9lcF9mcmVlX3JlcXVlc3Qo ZXAsIHJlcSk7Ci19Ci0KIHN0YXRpYyBjb25zdCB1aW50OF90IGZfbWlkaV9jaW5fbGVuZ3RoW10g PSB7CiAJMCwgMCwgMiwgMywgMywgMSwgMiwgMywgMywgMywgMywgMywgMiwgMiwgMywgMQogfTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX3NvdXJjZXNpbmsuYyBiL2RyaXZlcnMv dXNiL2dhZGdldC9mX3NvdXJjZXNpbmsuYwppbmRleCBkM2NkNTJkYjc4ZmUuLmI5ZjA2MzU3ZjQ0 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Zfc291cmNlc2luay5jCisrKyBiL2Ry aXZlcnMvdXNiL2dhZGdldC9mX3NvdXJjZXNpbmsuYwpAQCAtMzA3LDEyICszMDcsNiBAQCBzdGF0 aWMgaW5saW5lIHN0cnVjdCB1c2JfcmVxdWVzdCAqc3NfYWxsb2NfZXBfcmVxKHN0cnVjdCB1c2Jf ZXAgKmVwLCBpbnQgbGVuKQogCXJldHVybiBhbGxvY19lcF9yZXEoZXAsIGxlbiwgYnVmbGVuKTsK IH0KIAotdm9pZCBmcmVlX2VwX3JlcShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1 ZXN0ICpyZXEpCi17Ci0Ja2ZyZWUocmVxLT5idWYpOwotCXVzYl9lcF9mcmVlX3JlcXVlc3QoZXAs IHJlcSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGRpc2FibGVfZXAoc3RydWN0IHVzYl9jb21wb3NpdGVf ZGV2ICpjZGV2LCBzdHJ1Y3QgdXNiX2VwICplcCkKIHsKIAlpbnQJCQl2YWx1ZTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2dhZGdldC9nX3plcm8uaCBiL2RyaXZlcnMvdXNiL2dhZGdldC9nX3pl cm8uaAppbmRleCAxNWYxODA5MDRmOGEuLjVlZDkwYjQzN2YxOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2IvZ2FkZ2V0L2dfemVyby5oCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nX3plcm8uaApA QCAtNTksNyArNTksNiBAQCB2b2lkIGxiX21vZGV4aXQodm9pZCk7CiBpbnQgbGJfbW9kaW5pdCh2 b2lkKTsKIAogLyogY29tbW9uIHV0aWxpdGllcyAqLwotdm9pZCBmcmVlX2VwX3JlcShzdHJ1Y3Qg dXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpOwogdm9pZCBkaXNhYmxlX2VuZHBv aW50cyhzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYsCiAJCXN0cnVjdCB1c2JfZXAgKmlu LCBzdHJ1Y3QgdXNiX2VwICpvdXQsCiAJCXN0cnVjdCB1c2JfZXAgKmlzb19pbiwgc3RydWN0IHVz Yl9lcCAqaXNvX291dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvdV9mLmMgYi9k cml2ZXJzL3VzYi9nYWRnZXQvdV9mLmMKaW5kZXggYzYyNzZmMDI2OGFlLi40YmM3ZWVhOGJmYzgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91X2YuYworKysgYi9kcml2ZXJzL3VzYi9n YWRnZXQvdV9mLmMKQEAgLTExLDcgKzExLDYgQEAKICAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgogICovCiAKLSNpbmNsdWRlIDxsaW51eC91c2IvZ2FkZ2V0Lmg+ CiAjaW5jbHVkZSAidV9mLmgiCiAKIHN0cnVjdCB1c2JfcmVxdWVzdCAqYWxsb2NfZXBfcmVxKHN0 cnVjdCB1c2JfZXAgKmVwLCBpbnQgbGVuLCBpbnQgZGVmYXVsdF9sZW4pCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9nYWRnZXQvdV9mLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvdV9mLmgKaW5kZXgg MWQ1ZjBlYjY4NTUyLi40MjQ3Y2MwOThhODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdl dC91X2YuaAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdV9mLmgKQEAgLTE2LDYgKzE2LDggQEAK ICNpZm5kZWYgX19VX0ZfSF9fCiAjZGVmaW5lIF9fVV9GX0hfXwogCisjaW5jbHVkZSA8bGludXgv dXNiL2dhZGdldC5oPgorCiAvKiBWYXJpYWJsZSBMZW5ndGggQXJyYXkgTWFjcm9zICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIHZsYV9ncm91 cChncm91cG5hbWUpIHNpemVfdCBncm91cG5hbWUjI19fbmV4dCA9IDAKICNkZWZpbmUgdmxhX2dy b3VwX3NpemUoZ3JvdXBuYW1lKSBncm91cG5hbWUjI19fbmV4dApAQCAtNDUsOCArNDcsMTIgQEAK IHN0cnVjdCB1c2JfZXA7CiBzdHJ1Y3QgdXNiX3JlcXVlc3Q7CiAKKy8qIFJlcXVlc3RzIGFsbG9j YXRlZCB2aWEgYWxsb2NfZXBfcmVxKCkgbXVzdCBiZSBmcmVlZCBieSBmcmVlX2VwX3JlcSgpLiAq Lwogc3RydWN0IHVzYl9yZXF1ZXN0ICphbGxvY19lcF9yZXEoc3RydWN0IHVzYl9lcCAqZXAsIGlu dCBsZW4sIGludCBkZWZhdWx0X2xlbik7CitzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9lcF9yZXEo c3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKQoreworCWtmcmVlKHJl cS0+YnVmKTsKKwl1c2JfZXBfZnJlZV9yZXF1ZXN0KGVwLCByZXEpOworfQogCiAjZW5kaWYgLyog X19VX0ZfSF9fICovCi0KLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9hZHV0dXguYyBi L2RyaXZlcnMvdXNiL21pc2MvYWR1dHV4LmMKaW5kZXggMzA3MWMwZWY5MDliLi41Y2ZhZjY5YmM2 MmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvYWR1dHV4LmMKKysrIGIvZHJpdmVycy91 c2IvbWlzYy9hZHV0dXguYwpAQCAtMzg5LDEwICszODksNiBAQCBzdGF0aWMgc3NpemVfdCBhZHVf cmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgX191c2VyIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50 LAogCQkJZGV2LT5zZWNvbmRhcnlfaGVhZCArPSAoYW1vdW50IC0gaSk7CiAJCQlieXRlc19yZWFk ICs9IChhbW91bnQgLSBpKTsKIAkJCWJ5dGVzX3RvX3JlYWQgLT0gKGFtb3VudCAtIGkpOwotCQkJ aWYgKGkpIHsKLQkJCQlyZXR2YWwgPSBieXRlc19yZWFkID8gYnl0ZXNfcmVhZCA6IC1FRkFVTFQ7 Ci0JCQkJZ290byBleGl0OwotCQkJfQogCQl9IGVsc2UgewogCQkJLyogd2UgY2hlY2sgdGhlIHBy aW1hcnkgYnVmZmVyICovCiAJCQlzcGluX2xvY2tfaXJxc2F2ZSAoJmRldi0+YnVmbG9jaywgZmxh Z3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYyBiL2RyaXZlcnMv dXNiL21pc2MvaW93YXJyaW9yLmMKaW5kZXggMTk1MGU4N2I0MjE5Li5lNGQxNzg3ODc0M2UgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvaW93YXJyaW9yLmMKKysrIGIvZHJpdmVycy91c2Iv bWlzYy9pb3dhcnJpb3IuYwpAQCAtNzg3LDEyICs3ODcsNiBAQCBzdGF0aWMgaW50IGlvd2Fycmlv cl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAogCWlmYWNlX2Rlc2MgPSBp bnRlcmZhY2UtPmN1cl9hbHRzZXR0aW5nOwogCWRldi0+cHJvZHVjdF9pZCA9IGxlMTZfdG9fY3B1 KHVkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KTsKIAotCWlmIChpZmFjZV9kZXNjLT5kZXNjLmJO dW1FbmRwb2ludHMgPCAxKSB7Ci0JCWRldl9lcnIoJmludGVyZmFjZS0+ZGV2LCAiSW52YWxpZCBu dW1iZXIgb2YgZW5kcG9pbnRzXG4iKTsKLQkJcmV0dmFsID0gLUVJTlZBTDsKLQkJZ290byBlcnJv cjsKLQl9Ci0KIAkvKiBzZXQgdXAgdGhlIGVuZHBvaW50IGluZm9ybWF0aW9uICovCiAJZm9yIChp ID0gMDsgaSA8IGlmYWNlX2Rlc2MtPmRlc2MuYk51bUVuZHBvaW50czsgKytpKSB7CiAJCWVuZHBv aW50ID0gJmlmYWNlX2Rlc2MtPmVuZHBvaW50W2ldLmRlc2M7CkBAIC04MDMsNiArNzk3LDEzIEBA IHN0YXRpYyBpbnQgaW93YXJyaW9yX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZh Y2UsCiAJCQkvKiB0aGlzIG9uZSB3aWxsIG1hdGNoIGZvciB0aGUgSU9XYXJyaW9yNTYgb25seSAq LwogCQkJZGV2LT5pbnRfb3V0X2VuZHBvaW50ID0gZW5kcG9pbnQ7CiAJfQorCisJaWYgKCFkZXYt PmludF9pbl9lbmRwb2ludCkgeworCQlkZXZfZXJyKCZpbnRlcmZhY2UtPmRldiwgIm5vIGludGVy cnVwdC1pbiBlbmRwb2ludCBmb3VuZFxuIik7CisJCXJldHZhbCA9IC1FTk9ERVY7CisJCWdvdG8g ZXJyb3I7CisJfQorCiAJLyogd2UgaGF2ZSB0byBjaGVjayB0aGUgcmVwb3J0X3NpemUgb2Z0ZW4s IHNvIHJlbWVtYmVyIGl0IGluIHRoZSBlbmRpYW5uZXNzIHN1aXRhYmxlIGZvciBvdXIgbWFjaGlu ZSAqLwogCWRldi0+cmVwb3J0X3NpemUgPSB1c2JfZW5kcG9pbnRfbWF4cChkZXYtPmludF9pbl9l bmRwb2ludCk7CiAJaWYgKChkZXYtPmludGVyZmFjZS0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYklu dGVyZmFjZU51bWJlciA9PSAwKSAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Fy azMxMTYuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9hcmszMTE2LmMKaW5kZXggMTUzMmNkZThhNDM3 Li43NTRmYzNlNDEwMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9hcmszMTE2LmMK KysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2FyazMxMTYuYwpAQCAtOTksMTAgKzk5LDE3IEBAIHN0 YXRpYyBpbnQgYXJrMzExNl9yZWFkX3JlZyhzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAogCQkJ CSB1c2JfcmN2Y3RybHBpcGUoc2VyaWFsLT5kZXYsIDApLAogCQkJCSAweGZlLCAweGMwLCAwLCBy ZWcsCiAJCQkJIGJ1ZiwgMSwgQVJLX1RJTUVPVVQpOwotCWlmIChyZXN1bHQgPCAwKQorCWlmIChy ZXN1bHQgPCAxKSB7CisJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsCisJCQkJImZh aWxlZCB0byByZWFkIHJlZ2lzdGVyICV1OiAlZFxuIiwKKwkJCQlyZWcsIHJlc3VsdCk7CisJCWlm IChyZXN1bHQgPj0gMCkKKwkJCXJlc3VsdCA9IC1FSU87CisKIAkJcmV0dXJuIHJlc3VsdDsKLQll bHNlCi0JCXJldHVybiBidWZbMF07CisJfQorCisJcmV0dXJuIGJ1ZlswXTsKIH0KIAogc3RhdGlj IGlubGluZSBpbnQgY2FsY19kaXZpc29yKGludCBicHMpCkBAIC0zNjYsMjMgKzM3MywyOSBAQCBz dGF0aWMgaW50IGFyazMxMTZfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNi X3NlcmlhbF9wb3J0ICpwb3J0KQogCQlkZXZfZGJnKCZwb3J0LT5kZXYsCiAJCQkiJXMgLSB1c2Jf c2VyaWFsX2dlbmVyaWNfb3BlbiBmYWlsZWQ6ICVkXG4iLAogCQkJX19mdW5jX18sIHJlc3VsdCk7 Ci0JCWdvdG8gZXJyX291dDsKKwkJZ290byBlcnJfZnJlZTsKIAl9CiAKIAkvKiByZW1vdmUgYW55 IGRhdGEgc3RpbGwgbGVmdDogYWxzbyBjbGVhcnMgZXJyb3Igc3RhdGUgKi8KIAlhcmszMTE2X3Jl YWRfcmVnKHNlcmlhbCwgVUFSVF9SWCwgYnVmKTsKIAogCS8qIHJlYWQgbW9kZW0gc3RhdHVzICov Ci0JcHJpdi0+bXNyID0gYXJrMzExNl9yZWFkX3JlZyhzZXJpYWwsIFVBUlRfTVNSLCBidWYpOwor CXJlc3VsdCA9IGFyazMxMTZfcmVhZF9yZWcoc2VyaWFsLCBVQVJUX01TUiwgYnVmKTsKKwlpZiAo cmVzdWx0IDwgMCkKKwkJZ290byBlcnJfY2xvc2U7CisJcHJpdi0+bXNyID0gKmJ1ZjsKKwogCS8q IHJlYWQgbGluZSBzdGF0dXMgKi8KLQlwcml2LT5sc3IgPSBhcmszMTE2X3JlYWRfcmVnKHNlcmlh bCwgVUFSVF9MU1IsIGJ1Zik7CisJcmVzdWx0ID0gYXJrMzExNl9yZWFkX3JlZyhzZXJpYWwsIFVB UlRfTFNSLCBidWYpOworCWlmIChyZXN1bHQgPCAwKQorCQlnb3RvIGVycl9jbG9zZTsKKwlwcml2 LT5sc3IgPSAqYnVmOwogCiAJcmVzdWx0ID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+aW50ZXJydXB0 X2luX3VyYiwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJlc3VsdCkgewogCQlkZXZfZXJyKCZwb3J0LT5k ZXYsICJzdWJtaXQgaXJxX2luIHVyYiBmYWlsZWQgJWRcbiIsCiAJCQlyZXN1bHQpOwotCQlhcmsz MTE2X2Nsb3NlKHBvcnQpOwotCQlnb3RvIGVycl9vdXQ7CisJCWdvdG8gZXJyX2Nsb3NlOwogCX0K IAogCS8qIGFjdGl2YXRlIGludGVycnVwdHMgKi8KQEAgLTM5NSw4ICs0MDgsMTUgQEAgc3RhdGlj IGludCBhcmszMTE2X29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHVzYl9zZXJp YWxfcG9ydCAqcG9ydCkKIAlpZiAodHR5KQogCQlhcmszMTE2X3NldF90ZXJtaW9zKHR0eSwgcG9y dCwgTlVMTCk7CiAKLWVycl9vdXQ6CiAJa2ZyZWUoYnVmKTsKKworCXJldHVybiAwOworCitlcnJf Y2xvc2U6CisJdXNiX3NlcmlhbF9nZW5lcmljX2Nsb3NlKHBvcnQpOworZXJyX2ZyZWU6CisJa2Zy ZWUoYnVmKTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNi L3NlcmlhbC9jaDM0MS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2NoMzQxLmMKaW5kZXggNmE4MDQ0 MjkxYWI0Li4yMmVlZDBiMDhiOGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jaDM0 MS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jaDM0MS5jCkBAIC0yNDYsMjEgKzI0NiwxMSBA QCBzdGF0aWMgaW50IGNoMzQxX2NvbmZpZ3VyZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBzdHJ1 Y3QgY2gzNDFfcHJpdmF0ZSAqcHJpdikKIAlpZiAociA8IDApCiAJCWdvdG8gb3V0OwogCi0JLyog ZXhwZWN0IDB4ZmYgMHhlZSAqLwotCXIgPSBjaDM0MV9nZXRfc3RhdHVzKGRldiwgcHJpdik7Ci0J aWYgKHIgPCAwKQotCQlnb3RvIG91dDsKLQogCXIgPSBjaDM0MV9zZXRfYmF1ZHJhdGVfbGNyKGRl diwgcHJpdiwgMCk7CiAJaWYgKHIgPCAwKQogCQlnb3RvIG91dDsKIAogCXIgPSBjaDM0MV9zZXRf aGFuZHNoYWtlKGRldiwgcHJpdi0+bGluZV9jb250cm9sKTsKLQlpZiAociA8IDApCi0JCWdvdG8g b3V0OwotCi0JLyogZXhwZWN0IDB4OWYgMHhlZSAqLwotCXIgPSBjaDM0MV9nZXRfc3RhdHVzKGRl diwgcHJpdik7CiAKIG91dDoJa2ZyZWUoYnVmZmVyKTsKIAlyZXR1cm4gcjsKQEAgLTMzMiwxNCAr MzIyLDkgQEAgc3RhdGljIHZvaWQgY2gzNDFfY2xvc2Uoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAq cG9ydCkKIC8qIG9wZW4gdGhpcyBkZXZpY2UsIHNldCBkZWZhdWx0IHBhcmFtZXRlcnMgKi8KIHN0 YXRpYyBpbnQgY2gzNDFfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3Nl cmlhbF9wb3J0ICpwb3J0KQogewotCXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwgPSBwb3J0LT5z ZXJpYWw7CiAJc3RydWN0IGNoMzQxX3ByaXZhdGUgKnByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0 X2RhdGEocG9ydCk7CiAJaW50IHI7CiAKLQlyID0gY2gzNDFfY29uZmlndXJlKHNlcmlhbC0+ZGV2 LCBwcml2KTsKLQlpZiAocikKLQkJcmV0dXJuIHI7Ci0KIAlpZiAodHR5KQogCQljaDM0MV9zZXRf dGVybWlvcyh0dHksIHBvcnQsIE5VTEwpOwogCkBAIC0zNTEsNiArMzM2LDEyIEBAIHN0YXRpYyBp bnQgY2gzNDFfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9w b3J0ICpwb3J0KQogCQlyZXR1cm4gcjsKIAl9CiAKKwlyID0gY2gzNDFfZ2V0X3N0YXR1cyhwb3J0 LT5zZXJpYWwtPmRldiwgcHJpdik7CisJaWYgKHIgPCAwKSB7CisJCWRldl9lcnIoJnBvcnQtPmRl diwgImZhaWxlZCB0byByZWFkIG1vZGVtIHN0YXR1czogJWRcbiIsIHIpOworCQlnb3RvIGVycl9r aWxsX2ludGVycnVwdF91cmI7CisJfQorCiAJciA9IHVzYl9zZXJpYWxfZ2VuZXJpY19vcGVuKHR0 eSwgcG9ydCk7CiAJaWYgKHIpCiAJCWdvdG8gZXJyX2tpbGxfaW50ZXJydXB0X3VyYjsKQEAgLTU5 Myw2ICs1ODQsMTIgQEAgc3RhdGljIGludCBjaDM0MV9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9z ZXJpYWwgKnNlcmlhbCkKIAkJCQlyZXQpOwogCQkJcmV0dXJuIHJldDsKIAkJfQorCisJCXJldCA9 IGNoMzQxX2dldF9zdGF0dXMocG9ydC0+c2VyaWFsLT5kZXYsIHByaXYpOworCQlpZiAocmV0IDwg MCkgeworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiZmFpbGVkIHRvIHJlYWQgbW9kZW0gc3RhdHVz OiAlZFxuIiwKKwkJCQlyZXQpOworCQl9CiAJfQogCiAJcmV0dXJuIHVzYl9zZXJpYWxfZ2VuZXJp Y19yZXN1bWUoc2VyaWFsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHgu YyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYwppbmRleCA1YzRlZjVhOTY0Y2MuLjZiNzJh YWNkZDc3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCisrKyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYwpAQCAtMTcxLDYgKzE3MSw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDE5 MDEsIDB4MDE5MCkgfSwgLyogR0UgQjg1MCBDUDIxMDUgUmVjb3JkZXIgaW50ZXJmYWNlICovCiAJ eyBVU0JfREVWSUNFKDB4MTkwMSwgMHgwMTkzKSB9LCAvKiBHRSBCNjUwIENQMjEwNCBQTUMgaW50 ZXJmYWNlICovCiAJeyBVU0JfREVWSUNFKDB4MTkwMSwgMHgwMTk0KSB9LAkvKiBHRSBIZWFsdGhj YXJlIFJlbW90ZSBBbGFybSBCb3ggKi8KKwl7IFVTQl9ERVZJQ0UoMHgxOTAxLCAweDAxOTUpIH0s CS8qIEdFIEI4NTAvQjY1MC9CNDUwIENQMjEwNCBEUCBVQVJUIGludGVyZmFjZSAqLworCXsgVVNC X0RFVklDRSgweDE5MDEsIDB4MDE5NikgfSwJLyogR0UgQjg1MCBDUDIxMDUgRFAgVUFSVCBpbnRl cmZhY2UgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxOUNGLCAweDMwMDApIH0sIC8qIFBhcnJvdCBOTUVB IEdQUyBGbGlnaHQgUmVjb3JkZXIgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxQURCLCAweDAwMDEpIH0s IC8qIFNjaHdlaXR6ZXIgRW5naW5lZXJpbmcgQzY2MiBDYWJsZSAqLwogCXsgVVNCX0RFVklDRSgw eDFCMUMsIDB4MUMwMCkgfSwgLyogQ29yc2FpciBVU0IgRG9uZ2xlICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9zZXJpYWwvZGlnaV9hY2NlbGVwb3J0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwv ZGlnaV9hY2NlbGVwb3J0LmMKaW5kZXggY2Q2ZGY4NzUxNjNlLi5kZjVhZWM0ZmFlZTYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9kaWdpX2FjY2VsZXBvcnQuYworKysgYi9kcml2ZXJz L3VzYi9zZXJpYWwvZGlnaV9hY2NlbGVwb3J0LmMKQEAgLTE0MDAsMjUgKzE0MDAsMzAgQEAgc3Rh dGljIGludCBkaWdpX3JlYWRfaW5iX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKIHsKIAlzdHJ1 Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdXJiLT5jb250ZXh0OwogCXN0cnVjdCBkaWdpX3Bv cnQgKnByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7Ci0JaW50IG9wY29kZSA9 ICgodW5zaWduZWQgY2hhciAqKXVyYi0+dHJhbnNmZXJfYnVmZmVyKVswXTsKLQlpbnQgbGVuID0g KCh1bnNpZ25lZCBjaGFyICopdXJiLT50cmFuc2Zlcl9idWZmZXIpWzFdOwotCWludCBwb3J0X3N0 YXR1cyA9ICgodW5zaWduZWQgY2hhciAqKXVyYi0+dHJhbnNmZXJfYnVmZmVyKVsyXTsKLQl1bnNp Z25lZCBjaGFyICpkYXRhID0gKCh1bnNpZ25lZCBjaGFyICopdXJiLT50cmFuc2Zlcl9idWZmZXIp ICsgMzsKKwl1bnNpZ25lZCBjaGFyICpidWYgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsKKwlpbnQg b3Bjb2RlOworCWludCBsZW47CisJaW50IHBvcnRfc3RhdHVzOworCXVuc2lnbmVkIGNoYXIgKmRh dGE7CiAJaW50IGZsYWcsIHRocm90dGxlZDsKLQlpbnQgc3RhdHVzID0gdXJiLT5zdGF0dXM7Ci0K LQkvKiBkbyBub3QgcHJvY2VzcyBjYWxsYmFja3Mgb24gY2xvc2VkIHBvcnRzICovCi0JLyogYnV0 IGRvIGNvbnRpbnVlIHRoZSByZWFkIGNoYWluICovCi0JaWYgKHVyYi0+c3RhdHVzID09IC1FTk9F TlQpCi0JCXJldHVybiAwOwogCiAJLyogc2hvcnQvbXVsdGlwbGUgcGFja2V0IGNoZWNrICovCisJ aWYgKHVyYi0+YWN0dWFsX2xlbmd0aCA8IDIpIHsKKwkJZGV2X3dhcm4oJnBvcnQtPmRldiwgInNo b3J0IHBhY2tldCByZWNlaXZlZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlvcGNvZGUgPSBi dWZbMF07CisJbGVuID0gYnVmWzFdOworCiAJaWYgKHVyYi0+YWN0dWFsX2xlbmd0aCAhPSBsZW4g KyAyKSB7Ci0JCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzOiBJTkNPTVBMRVRFIE9SIE1VTFRJUExF IFBBQ0tFVCwgIgotCQkJInN0YXR1cz0lZCwgcG9ydD0lZCwgb3Bjb2RlPSVkLCBsZW49JWQsICIK LQkJCSJhY3R1YWxfbGVuZ3RoPSVkLCBzdGF0dXM9JWRcbiIsIF9fZnVuY19fLCBzdGF0dXMsCi0J CQlwcml2LT5kcF9wb3J0X251bSwgb3Bjb2RlLCBsZW4sIHVyYi0+YWN0dWFsX2xlbmd0aCwKLQkJ CXBvcnRfc3RhdHVzKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAibWFsZm9ybWVkIHBhY2tldCBy ZWNlaXZlZDogcG9ydD0lZCwgb3Bjb2RlPSVkLCBsZW49JWQsIGFjdHVhbF9sZW5ndGg9JXVcbiIs CisJCQlwcml2LT5kcF9wb3J0X251bSwgb3Bjb2RlLCBsZW4sIHVyYi0+YWN0dWFsX2xlbmd0aCk7 CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAob3Bjb2RlID09IERJR0lfQ01EX1JFQ0VJVkVfREFU QSAmJiBsZW4gPCAxKSB7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIm1hbGZvcm1lZCBkYXRhIHBh Y2tldCByZWNlaXZlZFxuIik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTE0MzIsNiArMTQzNyw5 IEBAIHN0YXRpYyBpbnQgZGlnaV9yZWFkX2luYl9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCiAK IAkvKiByZWNlaXZlIGRhdGEgKi8KIAlpZiAob3Bjb2RlID09IERJR0lfQ01EX1JFQ0VJVkVfREFU QSkgeworCQlwb3J0X3N0YXR1cyA9IGJ1ZlsyXTsKKwkJZGF0YSA9ICZidWZbM107CisKIAkJLyog Z2V0IGZsYWcgZnJvbSBwb3J0X3N0YXR1cyAqLwogCQlmbGFnID0gMDsKIApAQCAtMTQ4NCwxNiAr MTQ5MiwyMCBAQCBzdGF0aWMgaW50IGRpZ2lfcmVhZF9vb2JfY2FsbGJhY2soc3RydWN0IHVyYiAq dXJiKQogCXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7CiAJc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eTsKIAlzdHJ1Y3QgZGlnaV9wb3J0ICpwcml2ID0gdXNiX2dldF9zZXJp YWxfcG9ydF9kYXRhKHBvcnQpOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IHVyYi0+dHJhbnNmZXJf YnVmZmVyOwogCWludCBvcGNvZGUsIGxpbmUsIHN0YXR1cywgdmFsOwogCWludCBpOwogCXVuc2ln bmVkIGludCBydHM7CiAKKwlpZiAodXJiLT5hY3R1YWxfbGVuZ3RoIDwgNCkKKwkJcmV0dXJuIC0x OworCiAJLyogaGFuZGxlIGVhY2ggb29iIGNvbW1hbmQgKi8KLQlmb3IgKGkgPSAwOyBpIDwgdXJi LT5hY3R1YWxfbGVuZ3RoIC0gMzspIHsKLQkJb3Bjb2RlID0gKCh1bnNpZ25lZCBjaGFyICopdXJi LT50cmFuc2Zlcl9idWZmZXIpW2krK107Ci0JCWxpbmUgPSAoKHVuc2lnbmVkIGNoYXIgKil1cmIt PnRyYW5zZmVyX2J1ZmZlcilbaSsrXTsKLQkJc3RhdHVzID0gKCh1bnNpZ25lZCBjaGFyICopdXJi LT50cmFuc2Zlcl9idWZmZXIpW2krK107Ci0JCXZhbCA9ICgodW5zaWduZWQgY2hhciAqKXVyYi0+ dHJhbnNmZXJfYnVmZmVyKVtpKytdOworCWZvciAoaSA9IDA7IGkgPCB1cmItPmFjdHVhbF9sZW5n dGggLSA0OyBpICs9IDQpIHsKKwkJb3Bjb2RlID0gYnVmW2ldOworCQlsaW5lID0gYnVmW2kgKyAx XTsKKwkJc3RhdHVzID0gYnVmW2kgKyAyXTsKKwkJdmFsID0gYnVmW2kgKyAzXTsKIAogCQlkZXZf ZGJnKCZwb3J0LT5kZXYsICJkaWdpX3JlYWRfb29iX2NhbGxiYWNrOiBvcGNvZGU9JWQsIGxpbmU9 JWQsIHN0YXR1cz0lZCwgdmFsPSVkXG4iLAogCQkJb3Bjb2RlLCBsaW5lLCBzdGF0dXMsIHZhbCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9mdGRpX3Npby5jCmluZGV4IDk5ZGI4OWFkNDgyZS4uNTZmODhkZjU5MDZiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYworKysgYi9kcml2ZXJzL3VzYi9z ZXJpYWwvZnRkaV9zaW8uYwpAQCAtMTQ1MiwxMCArMTQ1MiwxMyBAQCBzdGF0aWMgaW50IHJlYWRf bGF0ZW5jeV90aW1lcihzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCQkJICAgICBGVERJ X1NJT19HRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUX1RZUEUsCiAJCQkgICAgIDAsIHByaXYtPmlu dGVyZmFjZSwKIAkJCSAgICAgYnVmLCAxLCBXRFJfVElNRU9VVCk7Ci0JaWYgKHJ2IDwgMCkKKwlp ZiAocnYgPCAxKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIlVuYWJsZSB0byByZWFkIGxhdGVu Y3kgdGltZXI6ICVpXG4iLCBydik7Ci0JZWxzZQorCQlpZiAocnYgPj0gMCkKKwkJCXJ2ID0gLUVJ TzsKKwl9IGVsc2UgewogCQlwcml2LT5sYXRlbmN5ID0gYnVmWzBdOworCX0KIAogCWtmcmVlKGJ1 Zik7CiAKQEAgLTE4MjUsOCArMTgyOCw2IEBAIHN0YXRpYyBpbnQgZnRkaV9zaW9fcG9ydF9wcm9i ZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCiAJbXV0ZXhfaW5pdCgmcHJpdi0+Y2Zn X2xvY2spOwogCi0JcHJpdi0+ZmxhZ3MgPSBBU1lOQ19MT1dfTEFURU5DWTsKLQogCWlmIChxdWly ayAmJiBxdWlyay0+cG9ydF9wcm9iZSkKIAkJcXVpcmstPnBvcnRfcHJvYmUocHJpdik7CiAKQEAg LTIxMDgsNiArMjEwOSwyMCBAQCBzdGF0aWMgaW50IGZ0ZGlfcHJvY2Vzc19wYWNrZXQoc3RydWN0 IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwKIAkJcHJpdi0+cHJldl9zdGF0dXMgPSBzdGF0dXM7CiAJ fQogCisJLyogc2F2ZSBpZiB0aGUgdHJhbnNtaXR0ZXIgaXMgZW1wdHkgb3Igbm90ICovCisJaWYg KHBhY2tldFsxXSAmIEZURElfUlNfVEVNVCkKKwkJcHJpdi0+dHJhbnNtaXRfZW1wdHkgPSAxOwor CWVsc2UKKwkJcHJpdi0+dHJhbnNtaXRfZW1wdHkgPSAwOworCisJbGVuIC09IDI7CisJaWYgKCFs ZW4pCisJCXJldHVybiAwOwkvKiBzdGF0dXMgb25seSAqLworCisJLyoKKwkgKiBCcmVhayBhbmQg ZXJyb3Igc3RhdHVzIG11c3Qgb25seSBiZSBwcm9jZXNzZWQgZm9yIHBhY2tldHMgd2l0aAorCSAq IGRhdGEgcGF5bG9hZCB0byBhdm9pZCBvdmVyLXJlcG9ydGluZy4KKwkgKi8KIAlmbGFnID0gVFRZ X05PUk1BTDsKIAlpZiAocGFja2V0WzFdICYgRlRESV9SU19FUlJfTUFTSykgewogCQkvKiBCcmVh ayB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgcGFyaXR5LCB3aGljaCB0YWtlcyBwcmVjZWRlbmNlCkBA IC0yMTMwLDE1ICsyMTQ1LDYgQEAgc3RhdGljIGludCBmdGRpX3Byb2Nlc3NfcGFja2V0KHN0cnVj dCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJCX0KIAl9CiAKLQkvKiBzYXZlIGlmIHRoZSB0cmFu c21pdHRlciBpcyBlbXB0eSBvciBub3QgKi8KLQlpZiAocGFja2V0WzFdICYgRlRESV9SU19URU1U KQotCQlwcml2LT50cmFuc21pdF9lbXB0eSA9IDE7Ci0JZWxzZQotCQlwcml2LT50cmFuc21pdF9l bXB0eSA9IDA7Ci0KLQlsZW4gLT0gMjsKLQlpZiAoIWxlbikKLQkJcmV0dXJuIDA7CS8qIHN0YXR1 cyBvbmx5ICovCiAJcG9ydC0+aWNvdW50LnJ4ICs9IGxlbjsKIAljaCA9IHBhY2tldCArIDI7CiAK QEAgLTI0NjksOCArMjQ3NSwxMiBAQCBzdGF0aWMgaW50IGZ0ZGlfZ2V0X21vZGVtX3N0YXR1cyhz dHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LAogCQkJRlRESV9TSU9fR0VUX01PREVNX1NUQVRV U19SRVFVRVNUX1RZUEUsCiAJCQkwLCBwcml2LT5pbnRlcmZhY2UsCiAJCQlidWYsIGxlbiwgV0RS X1RJTUVPVVQpOwotCWlmIChyZXQgPCAwKSB7CisKKwkvKiBOT1RFOiBXZSBhbGxvdyBzaG9ydCBy ZXNwb25zZXMgYW5kIGhhbmRsZSB0aGF0IGJlbG93LiAqLworCWlmIChyZXQgPCAxKSB7CiAJCWRl dl9lcnIoJnBvcnQtPmRldiwgImZhaWxlZCB0byBnZXQgbW9kZW0gc3RhdHVzOiAlZFxuIiwgcmV0 KTsKKwkJaWYgKHJldCA+PSAwKQorCQkJcmV0ID0gLUVJTzsKIAkJcmV0ID0gdXNiX3RyYW5zbGF0 ZV9lcnJvcnMocmV0KTsKIAkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv c2VyaWFsL2lvX2VkZ2Vwb3J0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwpp bmRleCBiNjNhNmMzODk5YzUuLjc0OWUxYjY3NDE0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv c2VyaWFsL2lvX2VkZ2Vwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0 LmMKQEAgLTQ5MiwyMCArNDkyLDI0IEBAIHN0YXRpYyBpbnQgZ2V0X2VwaWNfZGVzY3JpcHRvcihz dHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplcCkKIAlpbnQgcmVzdWx0OwogCXN0cnVjdCB1c2Jfc2Vy aWFsICpzZXJpYWwgPSBlcC0+c2VyaWFsOwogCXN0cnVjdCBlZGdlcG9ydF9wcm9kdWN0X2luZm8g KnByb2R1Y3RfaW5mbyA9ICZlcC0+cHJvZHVjdF9pbmZvOwotCXN0cnVjdCBlZGdlX2NvbXBhdGli aWxpdHlfZGVzY3JpcHRvciAqZXBpYyA9ICZlcC0+ZXBpY19kZXNjcmlwdG9yOworCXN0cnVjdCBl ZGdlX2NvbXBhdGliaWxpdHlfZGVzY3JpcHRvciAqZXBpYzsKIAlzdHJ1Y3QgZWRnZV9jb21wYXRp YmlsaXR5X2JpdHMgKmJpdHM7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnNlcmlhbC0+ZGV2LT5k ZXY7CiAKIAllcC0+aXNfZXBpYyA9IDA7CisKKwllcGljID0ga21hbGxvYyhzaXplb2YoKmVwaWMp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVwaWMpCisJCXJldHVybiAtRU5PTUVNOworCiAJcmVzdWx0 ID0gdXNiX2NvbnRyb2xfbXNnKHNlcmlhbC0+ZGV2LCB1c2JfcmN2Y3RybHBpcGUoc2VyaWFsLT5k ZXYsIDApLAogCQkJCSBVU0JfUkVRVUVTVF9JT05fR0VUX0VQSUNfREVTQywKIAkJCQkgMHhDMCwg MHgwMCwgMHgwMCwKLQkJCQkgJmVwLT5lcGljX2Rlc2NyaXB0b3IsCi0JCQkJIHNpemVvZihzdHJ1 Y3QgZWRnZV9jb21wYXRpYmlsaXR5X2Rlc2NyaXB0b3IpLAorCQkJCSBlcGljLCBzaXplb2YoKmVw aWMpLAogCQkJCSAzMDApOwotCi0JaWYgKHJlc3VsdCA+IDApIHsKKwlpZiAocmVzdWx0ID09IHNp emVvZigqZXBpYykpIHsKIAkJZXAtPmlzX2VwaWMgPSAxOworCQltZW1jcHkoJmVwLT5lcGljX2Rl c2NyaXB0b3IsIGVwaWMsIHNpemVvZigqZXBpYykpOwogCQltZW1zZXQocHJvZHVjdF9pbmZvLCAw LCBzaXplb2Yoc3RydWN0IGVkZ2Vwb3J0X3Byb2R1Y3RfaW5mbykpOwogCiAJCXByb2R1Y3RfaW5m by0+TnVtUG9ydHMgPSBlcGljLT5OdW1Qb3J0czsKQEAgLTUzNCw4ICs1MzgsMTYgQEAgc3RhdGlj IGludCBnZXRfZXBpY19kZXNjcmlwdG9yKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVwKQogCQlk ZXZfZGJnKGRldiwgIiAgSU9TUFdyaXRlTENSICAgICA6ICVzXG4iLCBiaXRzLT5JT1NQV3JpdGVM Q1IJPyAiVFJVRSI6ICJGQUxTRSIpOwogCQlkZXZfZGJnKGRldiwgIiAgSU9TUFNldEJhdWRSYXRl ICA6ICVzXG4iLCBiaXRzLT5JT1NQU2V0QmF1ZFJhdGUJPyAiVFJVRSI6ICJGQUxTRSIpOwogCQlk ZXZfZGJnKGRldiwgIiAgVHJ1ZUVkZ2Vwb3J0ICAgICA6ICVzXG4iLCBiaXRzLT5UcnVlRWRnZXBv cnQJPyAiVFJVRSI6ICJGQUxTRSIpOworCisJCXJlc3VsdCA9IDA7CisJfSBlbHNlIGlmIChyZXN1 bHQgPj0gMCkgeworCQlkZXZfd2Fybigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgInNob3J0IGVw aWMgZGVzY3JpcHRvciByZWNlaXZlZDogJWRcbiIsCisJCQkgcmVzdWx0KTsKKwkJcmVzdWx0ID0g LUVJTzsKIAl9CiAKKwlrZnJlZShlcGljKTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIw OTcsOCArMjEwOSw3IEBAIHN0YXRpYyBpbnQgcm9tX3dyaXRlKHN0cnVjdCB1c2Jfc2VyaWFsICpz ZXJpYWwsIF9fdTE2IGV4dEFkZHIsIF9fdTE2IGFkZHIsCiAgKiByb21fcmVhZAogICoJcmVhZHMg YSBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgRWRnZXBvcnQgZGV2aWNlIHN0YXJ0aW5nIGF0IHRo ZSBnaXZlbgogICoJYWRkcmVzcy4KLSAqCUlmIHN1Y2Nlc3NmdWwgcmV0dXJucyB0aGUgbnVtYmVy IG9mIGJ5dGVzIHJlYWQsIG90aGVyd2lzZSBpdCByZXR1cm5zCi0gKglhIG5lZ2F0aXZlIGVycm9y IG51bWJlciBvZiB0aGUgcHJvYmxlbS4KKyAqCVJldHVybnMgemVybyBvbiBzdWNjZXNzIG9yIGEg bmVnYXRpdmUgZXJyb3IgbnVtYmVyLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdGF0aWMgaW50 IHJvbV9yZWFkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsIF9fdTE2IGV4dEFkZHIsCiAJCQkJ CV9fdTE2IGFkZHIsIF9fdTE2IGxlbmd0aCwgX191OCAqZGF0YSkKQEAgLTIxMjMsMTIgKzIxMzQs MTcgQEAgc3RhdGljIGludCByb21fcmVhZChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLCBfX3Ux NiBleHRBZGRyLAogCQkJCQlVU0JfUkVRVUVTVF9JT05fUkVBRF9ST00sCiAJCQkJCTB4QzAsIGFk ZHIsIGV4dEFkZHIsIHRyYW5zZmVyX2J1ZmZlciwKIAkJCQkJY3VycmVudF9sZW5ndGgsIDMwMCk7 Ci0JCWlmIChyZXN1bHQgPCAwKQorCQlpZiAocmVzdWx0IDwgY3VycmVudF9sZW5ndGgpIHsKKwkJ CWlmIChyZXN1bHQgPj0gMCkKKwkJCQlyZXN1bHQgPSAtRUlPOwogCQkJYnJlYWs7CisJCX0KIAkJ bWVtY3B5KGRhdGEsIHRyYW5zZmVyX2J1ZmZlciwgY3VycmVudF9sZW5ndGgpOwogCQlsZW5ndGgg LT0gY3VycmVudF9sZW5ndGg7CiAJCWFkZHIgKz0gY3VycmVudF9sZW5ndGg7CiAJCWRhdGEgKz0g Y3VycmVudF9sZW5ndGg7CisKKwkJcmVzdWx0ID0gMDsKIAl9CiAKIAlrZnJlZSh0cmFuc2Zlcl9i dWZmZXIpOwpAQCAtMjU4NSw5ICsyNjAxLDEwIEBAIHN0YXRpYyB2b2lkIGdldF9tYW51ZmFjdHVy aW5nX2Rlc2Moc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpCiAJCQkJRURHRV9N QU5VRl9ERVNDX0xFTiwKIAkJCQkoX191OCAqKSgmZWRnZV9zZXJpYWwtPm1hbnVmX2Rlc2NyaXB0 b3IpKTsKIAotCWlmIChyZXNwb25zZSA8IDEpCi0JCWRldl9lcnIoZGV2LCAiZXJyb3IgaW4gZ2V0 dGluZyBtYW51ZmFjdHVyZXIgZGVzY3JpcHRvclxuIik7Ci0JZWxzZSB7CisJaWYgKHJlc3BvbnNl IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImVycm9yIGluIGdldHRpbmcgbWFudWZhY3R1cmVyIGRl c2NyaXB0b3I6ICVkXG4iLAorCQkJCXJlc3BvbnNlKTsKKwl9IGVsc2UgewogCQljaGFyIHN0cmlu Z1szMF07CiAJCWRldl9kYmcoZGV2LCAiKipNYW51ZmFjdHVyZXIgRGVzY3JpcHRvclxuIik7CiAJ CWRldl9kYmcoZGV2LCAiICBSb21TaXplOiAgICAgICAgJWRLXG4iLApAQCAtMjY0NCw5ICsyNjYx LDEwIEBAIHN0YXRpYyB2b2lkIGdldF9ib290X2Rlc2Moc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAq ZWRnZV9zZXJpYWwpCiAJCQkJRURHRV9CT09UX0RFU0NfTEVOLAogCQkJCShfX3U4ICopKCZlZGdl X3NlcmlhbC0+Ym9vdF9kZXNjcmlwdG9yKSk7CiAKLQlpZiAocmVzcG9uc2UgPCAxKQotCQlkZXZf ZXJyKGRldiwgImVycm9yIGluIGdldHRpbmcgYm9vdCBkZXNjcmlwdG9yXG4iKTsKLQllbHNlIHsK KwlpZiAocmVzcG9uc2UgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZXJyb3IgaW4gZ2V0dGluZyBi b290IGRlc2NyaXB0b3I6ICVkXG4iLAorCQkJCXJlc3BvbnNlKTsKKwl9IGVsc2UgewogCQlkZXZf ZGJnKGRldiwgIioqQm9vdCBEZXNjcmlwdG9yOlxuIik7CiAJCWRldl9kYmcoZGV2LCAiICBCb290 Q29kZUxlbmd0aDogJWRcbiIsCiAJCQlsZTE2X3RvX2NwdShlZGdlX3NlcmlhbC0+Ym9vdF9kZXNj cmlwdG9yLkJvb3RDb2RlTGVuZ3RoKSk7CkBAIC0yNzg5LDcgKzI4MDcsNyBAQCBzdGF0aWMgaW50 IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCWRldl9pbmZvKCZzZXJp YWwtPmRldi0+ZGV2LCAiJXMgZGV0ZWN0ZWRcbiIsIGVkZ2Vfc2VyaWFsLT5uYW1lKTsKIAogCS8q IFJlYWQgdGhlIGVwaWMgZGVzY3JpcHRvciAqLwotCWlmIChnZXRfZXBpY19kZXNjcmlwdG9yKGVk Z2Vfc2VyaWFsKSA8PSAwKSB7CisJaWYgKGdldF9lcGljX2Rlc2NyaXB0b3IoZWRnZV9zZXJpYWwp IDwgMCkgewogCQkvKiBtZW1jcHkgZGVzY3JpcHRvciB0byBTdXBwb3J0cyBzdHJ1Y3R1cmVzICov CiAJCW1lbWNweSgmZWRnZV9zZXJpYWwtPmVwaWNfZGVzY3JpcHRvci5TdXBwb3J0cywgZGVzY3Jp cHRvciwKIAkJICAgICAgIHNpemVvZihzdHJ1Y3QgZWRnZV9jb21wYXRpYmlsaXR5X2JpdHMpKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb190aS5jIGIvZHJpdmVycy91c2Ivc2Vy aWFsL2lvX3RpLmMKaW5kZXggZWVhMTY1NTBlNTgyLi4xYjQyOTA4YmQ4ZWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvdXNiL3NlcmlhbC9pb190aS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb190 aS5jCkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBzdGF0aWMgdm9pZCBlZGdlX2J1bGtfaW5fY2FsbGJh Y2soc3RydWN0IHVyYiAqdXJiKQogCiAJcG9ydF9udW1iZXIgPSBlZGdlX3BvcnQtPnBvcnQtPnBv cnRfbnVtYmVyOwogCi0JaWYgKGVkZ2VfcG9ydC0+bHNyX2V2ZW50KSB7CisJaWYgKHVyYi0+YWN0 dWFsX2xlbmd0aCA+IDAgJiYgZWRnZV9wb3J0LT5sc3JfZXZlbnQpIHsKIAkJZWRnZV9wb3J0LT5s c3JfZXZlbnQgPSAwOwogCQlkZXZfZGJnKGRldiwgIiVzID09PT09IFBvcnQgJXUgTFNSIFN0YXR1 cyA9ICUwMngsIERhdGEgPSAlMDJ4ID09PT09PVxuIiwKIAkJCV9fZnVuY19fLCBwb3J0X251bWJl ciwgZWRnZV9wb3J0LT5sc3JfbWFzaywgKmRhdGEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv c2VyaWFsL2tleXNwYW5fcGRhLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYwpp bmRleCA5MzBiZTk4ZDU5YjMuLjZiMDk0MjQyODkxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv c2VyaWFsL2tleXNwYW5fcGRhLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRh LmMKQEAgLTEzOSw2ICsxMzksNyBAQCBzdGF0aWMgdm9pZCBrZXlzcGFuX3BkYV9yeF9pbnRlcnJ1 cHQoc3RydWN0IHVyYiAqdXJiKQogewogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQgPSB1 cmItPmNvbnRleHQ7CiAJdW5zaWduZWQgY2hhciAqZGF0YSA9IHVyYi0+dHJhbnNmZXJfYnVmZmVy OworCXVuc2lnbmVkIGludCBsZW4gPSB1cmItPmFjdHVhbF9sZW5ndGg7CiAJaW50IHJldHZhbDsK IAlpbnQgc3RhdHVzID0gdXJiLT5zdGF0dXM7CiAJc3RydWN0IGtleXNwYW5fcGRhX3ByaXZhdGUg KnByaXY7CkBAIC0xNTksMTggKzE2MCwyNiBAQCBzdGF0aWMgdm9pZCBrZXlzcGFuX3BkYV9yeF9p bnRlcnJ1cHQoc3RydWN0IHVyYiAqdXJiKQogCQlnb3RvIGV4aXQ7CiAJfQogCisJaWYgKGxlbiA8 IDEpIHsKKwkJZGV2X3dhcm4oJnBvcnQtPmRldiwgInNob3J0IG1lc3NhZ2UgcmVjZWl2ZWRcbiIp OworCQlnb3RvIGV4aXQ7CisJfQorCiAJLyogc2VlIGlmIHRoZSBtZXNzYWdlIGlzIGRhdGEgb3Ig YSBzdGF0dXMgaW50ZXJydXB0ICovCiAJc3dpdGNoIChkYXRhWzBdKSB7CiAJY2FzZSAwOgogCQkg LyogcmVzdCBvZiBtZXNzYWdlIGlzIHJ4IGRhdGEgKi8KLQkJaWYgKHVyYi0+YWN0dWFsX2xlbmd0 aCkgewotCQkJdHR5X2luc2VydF9mbGlwX3N0cmluZygmcG9ydC0+cG9ydCwgZGF0YSArIDEsCi0J CQkJCQl1cmItPmFjdHVhbF9sZW5ndGggLSAxKTsKLQkJCXR0eV9mbGlwX2J1ZmZlcl9wdXNoKCZw b3J0LT5wb3J0KTsKLQkJfQorCQlpZiAobGVuIDwgMikKKwkJCWJyZWFrOworCQl0dHlfaW5zZXJ0 X2ZsaXBfc3RyaW5nKCZwb3J0LT5wb3J0LCBkYXRhICsgMSwgbGVuIC0gMSk7CisJCXR0eV9mbGlw X2J1ZmZlcl9wdXNoKCZwb3J0LT5wb3J0KTsKIAkJYnJlYWs7CiAJY2FzZSAxOgogCQkvKiBzdGF0 dXMgaW50ZXJydXB0ICovCisJCWlmIChsZW4gPCAzKSB7CisJCQlkZXZfd2FybigmcG9ydC0+ZGV2 LCAic2hvcnQgaW50ZXJydXB0IG1lc3NhZ2UgcmVjZWl2ZWRcbiIpOworCQkJYnJlYWs7CisJCX0K IAkJZGV2X2RiZygmcG9ydC0+ZGV2LCAicnggaW50LCBkMT0lZCwgZDI9JWRcbiIsIGRhdGFbMV0s IGRhdGFbMl0pOwogCQlzd2l0Y2ggKGRhdGFbMV0pIHsKIAkJY2FzZSAxOiAvKiBtb2RlbWxpbmUg Y2hhbmdlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvbWN0X3UyMzIuYyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9tY3RfdTIzMi5jCmluZGV4IDg5NzI2ZjcwMjIwMi4uOWJmODJjMjYy YzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvbWN0X3UyMzIuYworKysgYi9kcml2 ZXJzL3VzYi9zZXJpYWwvbWN0X3UyMzIuYwpAQCAtMzIyLDggKzMyMiwxMiBAQCBzdGF0aWMgaW50 IG1jdF91MjMyX2dldF9tb2RlbV9zdGF0KHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJ CQlNQ1RfVTIzMl9HRVRfUkVRVUVTVF9UWVBFLAogCQkJMCwgMCwgYnVmLCBNQ1RfVTIzMl9HRVRf TU9ERU1fU1RBVF9TSVpFLAogCQkJV0RSX1RJTUVPVVQpOwotCWlmIChyYyA8IDApIHsKKwlpZiAo cmMgPCBNQ1RfVTIzMl9HRVRfTU9ERU1fU1RBVF9TSVpFKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRl diwgIkdldCBNT0RFTSBTVEFUdXMgZmFpbGVkIChlcnJvciA9ICVkKVxuIiwgcmMpOworCisJCWlm IChyYyA+PSAwKQorCQkJcmMgPSAtRUlPOworCiAJCSptc3IgPSAwOwogCX0gZWxzZSB7CiAJCSpt c3IgPSBidWZbMF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzg0MC5jIGIv ZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAuYwppbmRleCA3Y2I0OGQzYWYxZjQuLmYyYTc5ODFi YTlhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAuYworKysgYi9kcml2 ZXJzL3VzYi9zZXJpYWwvbW9zNzg0MC5jCkBAIC0xMDI0LDYgKzEwMjQsNyBAQCBzdGF0aWMgaW50 IG1vczc4NDBfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9w b3J0ICpwb3J0KQogCSAqIChjYW4ndCBzZXQgaXQgdXAgaW4gbW9zNzg0MF9zdGFydHVwIGFzIHRo ZSBzdHJ1Y3R1cmVzICoKIAkgKiB3ZXJlIG5vdCBzZXQgdXAgYXQgdGhhdCB0aW1lLikgICAgICAg ICAgICAgICAgICAgICAgICAqLwogCWlmIChwb3J0MC0+b3Blbl9wb3J0cyA9PSAxKSB7CisJCS8q IEZJWE1FOiBCdWZmZXIgbmV2ZXIgTlVMTCwgc28gVVJCIGlzIG5vdCBzdWJtaXR0ZWQuICovCiAJ CWlmIChzZXJpYWwtPnBvcnRbMF0tPmludGVycnVwdF9pbl9idWZmZXIgPT0gTlVMTCkgewogCQkJ Lyogc2V0IHVwIGludGVycnVwdCB1cmIgKi8KIAkJCXVzYl9maWxsX2ludF91cmIoc2VyaWFsLT5w b3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJiLApAQCAtMjE4MCw3ICsyMTgxLDggQEAgc3RhdGljIGlu dCBtb3M3ODQwX2NhbGNfbnVtX3BvcnRzKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiBzdGF0 aWMgaW50IG1vczc4NDBfYXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiB7CiAJaWYg KHNlcmlhbC0+bnVtX2J1bGtfaW4gPCBzZXJpYWwtPm51bV9wb3J0cyB8fAotCQkJc2VyaWFsLT5u dW1fYnVsa19vdXQgPCBzZXJpYWwtPm51bV9wb3J0cykgeworCQkJc2VyaWFsLT5udW1fYnVsa19v dXQgPCBzZXJpYWwtPm51bV9wb3J0cyB8fAorCQkJc2VyaWFsLT5udW1faW50ZXJydXB0X2luIDwg MSkgewogCQlkZXZfZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2luZyBlbmRwb2lu dHNcbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9z ZXJpYWwvb21uaW5ldC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL29tbmluZXQuYwppbmRleCBhMTgw YjE3ZDI0MzIuLjc2NTY0YjNiZWJiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL29t bmluZXQuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb21uaW5ldC5jCkBAIC0xNDIsMTIgKzE0 Miw2IEBAIHN0YXRpYyBpbnQgb21uaW5ldF9wb3J0X3JlbW92ZShzdHJ1Y3QgdXNiX3NlcmlhbF9w b3J0ICpwb3J0KQogCiBzdGF0aWMgaW50IG9tbmluZXRfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogewotCXN0cnVjdCB1c2Jfc2VyaWFs CSpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7Ci0Jc3RydWN0IHVzYl9zZXJpYWxfcG9ydAkqd3BvcnQ7 Ci0KLQl3cG9ydCA9IHNlcmlhbC0+cG9ydFsxXTsKLQl0dHlfcG9ydF90dHlfc2V0KCZ3cG9ydC0+ cG9ydCwgdHR5KTsKLQogCXJldHVybiB1c2Jfc2VyaWFsX2dlbmVyaWNfb3Blbih0dHksIHBvcnQp OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aWNvbi5jIGIvZHJpdmVy cy91c2Ivc2VyaWFsL29wdGljb24uYwppbmRleCA0YjdiZmIzOTRhMzIuLjY0YmYyNThlN2UwMCAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGljb24uYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvb3B0aWNvbi5jCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIGludCBvcHRpY29u X29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9y dCkKIAl1c2JfY2xlYXJfaGFsdChwb3J0LT5zZXJpYWwtPmRldiwgcG9ydC0+cmVhZF91cmItPnBp cGUpOwogCiAJcmVzID0gdXNiX3NlcmlhbF9nZW5lcmljX29wZW4odHR5LCBwb3J0KTsKLQlpZiAo IXJlcykKKwlpZiAocmVzKQogCQlyZXR1cm4gcmVzOwogCiAJLyogUmVxdWVzdCBDVFMgbGluZSBz dGF0ZSwgc29tZXRpbWVzIGR1cmluZyBvcGVuaW5nIHRoZSBjdXJyZW50CmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9zZXJpYWwvcXVhdGVjaDIuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9xdWF0ZWNo Mi5jCmluZGV4IGEzZWQwN2M1ODc1NC4uYWYwYzg3Mjc2Mjk5IDEwMDY0NAotLS0gYS9kcml2ZXJz L3VzYi9zZXJpYWwvcXVhdGVjaDIuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcXVhdGVjaDIu YwpAQCAtMTg4LDIyICsxODgsMjIgQEAgc3RhdGljIGlubGluZSBpbnQgcXQyX3NldGRldmljZShz dHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1OCAqZGF0YSkKIH0KIAogCi1zdGF0aWMgaW5saW5lIGlu dCBxdDJfZ2V0ZGV2aWNlKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHU4ICpkYXRhKQotewotCXJl dHVybiB1c2JfY29udHJvbF9tc2coZGV2LCB1c2JfcmN2Y3RybHBpcGUoZGV2LCAwKSwKLQkJCSAg ICAgICBRVF9TRVRfR0VUX0RFVklDRSwgMHhjMCwgMCwgMCwKLQkJCSAgICAgICBkYXRhLCAzLCBR VDJfVVNCX1RJTUVPVVQpOwotfQotCiBzdGF0aWMgaW5saW5lIGludCBxdDJfZ2V0cmVnaXN0ZXIo c3RydWN0IHVzYl9kZXZpY2UgKmRldiwKIAkJCQkgIHU4IHVhcnQsCiAJCQkJICB1OCByZWcsCiAJ CQkJICB1OCAqZGF0YSkKIHsKLQlyZXR1cm4gdXNiX2NvbnRyb2xfbXNnKGRldiwgdXNiX3JjdmN0 cmxwaXBlKGRldiwgMCksCi0JCQkgICAgICAgUVRfU0VUX0dFVF9SRUdJU1RFUiwgMHhjMCwgcmVn LAotCQkJICAgICAgIHVhcnQsIGRhdGEsIHNpemVvZigqZGF0YSksIFFUMl9VU0JfVElNRU9VVCk7 CisJaW50IHJldDsKKworCXJldCA9IHVzYl9jb250cm9sX21zZyhkZXYsIHVzYl9yY3ZjdHJscGlw ZShkZXYsIDApLAorCQkJICAgICAgUVRfU0VUX0dFVF9SRUdJU1RFUiwgMHhjMCwgcmVnLAorCQkJ ICAgICAgdWFydCwgZGF0YSwgc2l6ZW9mKCpkYXRhKSwgUVQyX1VTQl9USU1FT1VUKTsKKwlpZiAo cmV0IDwgc2l6ZW9mKCpkYXRhKSkgeworCQlpZiAocmV0ID49IDApCisJCQlyZXQgPSAtRUlPOwor CX0KIAorCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHF0Ml9zZXRyZWdpc3Rl cihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LApAQCAtMzcyLDkgKzM3MiwxMSBAQCBzdGF0aWMgaW50 IHF0Ml9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQg KnBvcnQpCiAJCQkJIDB4YzAsIDAsCiAJCQkJIGRldmljZV9wb3J0LCBkYXRhLCAyLCBRVDJfVVNC X1RJTUVPVVQpOwogCi0JaWYgKHN0YXR1cyA8IDApIHsKKwlpZiAoc3RhdHVzIDwgMikgewogCQlk ZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIG9wZW4gcG9ydCBmYWlsZWQgJWlcbiIsIF9fZnVuY19f LAogCQkJc3RhdHVzKTsKKwkJaWYgKHN0YXR1cyA+PSAwKQorCQkJc3RhdHVzID0gLUVJTzsKIAkJ a2ZyZWUoZGF0YSk7CiAJCXJldHVybiBzdGF0dXM7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2Ivc2VyaWFsL3NpZXJyYS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJyYS5jCmluZGV4IDA3 ZDFlY2Q1NjRmNy4uMjYyODFkMzMxODU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwv c2llcnJhLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJyYS5jCkBAIC0xMzcsMjQgKzEz Nyw5IEBAIHN0YXRpYyBpbnQgaXNfaGltZW1vcnkoY29uc3QgdTggaWZudW0sCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgc2llcnJhX2NhbGNfaW50ZXJmYWNlKHN0cnVjdCB1c2Jfc2VyaWFs ICpzZXJpYWwpCitzdGF0aWMgdTggc2llcnJhX2ludGVyZmFjZV9udW0oc3RydWN0IHVzYl9zZXJp YWwgKnNlcmlhbCkKIHsKLQlpbnQgaW50ZXJmYWNlOwotCXN0cnVjdCB1c2JfaW50ZXJmYWNlICpw X2ludGVyZmFjZTsKLQlzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICpwX2hvc3RfaW50ZXJmYWNl OwotCi0JLyogR2V0IHRoZSBpbnRlcmZhY2Ugc3RydWN0dXJlIHBvaW50ZXIgZnJvbSB0aGUgc2Vy aWFsIHN0cnVjdCAqLwotCXBfaW50ZXJmYWNlID0gc2VyaWFsLT5pbnRlcmZhY2U7Ci0KLQkvKiBH ZXQgYSBwb2ludGVyIHRvIHRoZSBob3N0IGludGVyZmFjZSBzdHJ1Y3R1cmUgKi8KLQlwX2hvc3Rf aW50ZXJmYWNlID0gcF9pbnRlcmZhY2UtPmN1cl9hbHRzZXR0aW5nOwotCi0JLyogcmVhZCB0aGUg aW50ZXJmYWNlIGRlc2NyaXB0b3IgZm9yIHRoaXMgYWN0aXZlIGFsdHNldHRpbmcKLQkgKiB0byBm aW5kIG91dCB0aGUgaW50ZXJmYWNlIG51bWJlciB3ZSBhcmUgb24KLQkqLwotCWludGVyZmFjZSA9 IHBfaG9zdF9pbnRlcmZhY2UtPmRlc2MuYkludGVyZmFjZU51bWJlcjsKLQotCXJldHVybiBpbnRl cmZhY2U7CisJcmV0dXJuIHNlcmlhbC0+aW50ZXJmYWNlLT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5i SW50ZXJmYWNlTnVtYmVyOwogfQogCiBzdGF0aWMgaW50IHNpZXJyYV9wcm9iZShzdHJ1Y3QgdXNi X3NlcmlhbCAqc2VyaWFsLApAQCAtMTY1LDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgc2llcnJhX3By b2JlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsCiAJdTggaWZudW07CiAKIAl1ZGV2ID0gc2Vy aWFsLT5kZXY7Ci0JaWZudW0gPSBzaWVycmFfY2FsY19pbnRlcmZhY2Uoc2VyaWFsKTsKKwlpZm51 bSA9IHNpZXJyYV9pbnRlcmZhY2VfbnVtKHNlcmlhbCk7CiAKIAkvKgogCSAqIElmIHRoaXMgaW50 ZXJmYWNlIHN1cHBvcnRzIG1vcmUgdGhhbiAxIGFsdGVybmF0ZQpAQCAtMTc4LDkgKzE2Myw2IEBA IHN0YXRpYyBpbnQgc2llcnJhX3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsCiAJCXVz Yl9zZXRfaW50ZXJmYWNlKHVkZXYsIGlmbnVtLCAxKTsKIAl9CiAKLQkvKiBpZm51bSBjb3VsZCBo YXZlIGNoYW5nZWQgLSBieSBjYWxsaW5nIHVzYl9zZXRfaW50ZXJmYWNlICovCi0JaWZudW0gPSBz aWVycmFfY2FsY19pbnRlcmZhY2Uoc2VyaWFsKTsKLQogCWlmIChpc19ibGFja2xpc3RlZChpZm51 bSwKIAkJCQkoc3RydWN0IHNpZXJyYV9pZmFjZV9pbmZvICopaWQtPmRyaXZlcl9pbmZvKSkgewog CQlkZXZfZGJnKCZzZXJpYWwtPmRldi0+ZGV2LApAQCAtMzQyLDcgKzMyNCw3IEBAIHN0YXRpYyBp bnQgc2llcnJhX3NlbmRfc2V0dXAoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIAogCS8q IElmIGNvbXBvc2l0ZSBkZXZpY2UgdGhlbiBwcm9wZXJseSByZXBvcnQgaW50ZXJmYWNlICovCiAJ aWYgKHNlcmlhbC0+bnVtX3BvcnRzID09IDEpIHsKLQkJaW50ZXJmYWNlID0gc2llcnJhX2NhbGNf aW50ZXJmYWNlKHNlcmlhbCk7CisJCWludGVyZmFjZSA9IHNpZXJyYV9pbnRlcmZhY2VfbnVtKHNl cmlhbCk7CiAJCS8qIENvbnRyb2wgbWVzc2FnZSBpcyBzZW50IG9ubHkgdG8gaW50ZXJmYWNlcyB3 aXRoCiAJCSAqIGludGVycnVwdF9pbiBlbmRwb2ludHMKIAkJICovCkBAIC05MTYsNyArODk4LDcg QEAgc3RhdGljIGludCBzaWVycmFfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpw b3J0KQogCS8qIERldGVybWluZSBhY3R1YWwgbWVtb3J5IHJlcXVpcmVtZW50cyAqLwogCWlmIChz ZXJpYWwtPm51bV9wb3J0cyA9PSAxKSB7CiAJCS8qIEdldCBpbnRlcmZhY2UgbnVtYmVyIGZvciBj b21wb3NpdGUgZGV2aWNlICovCi0JCWlmbnVtID0gc2llcnJhX2NhbGNfaW50ZXJmYWNlKHNlcmlh bCk7CisJCWlmbnVtID0gc2llcnJhX2ludGVyZmFjZV9udW0oc2VyaWFsKTsKIAkJaGltZW1vcnlw ID0gJnR5cGVCX2ludGVyZmFjZV9saXN0OwogCX0gZWxzZSB7CiAJCS8qIFRoaXMgaXMgcmVhbGx5 IHRoZSB1c2Itc2VyaWFsIHBvcnQgbnVtYmVyIG9mIHRoZSBpbnRlcmZhY2UKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4 NS5jCmluZGV4IDQ3NWU2YzMxYjI2Ni4uZGRmZDc4N2M0NjFjIDEwMDY0NAotLS0gYS9kcml2ZXJz L3VzYi9zZXJpYWwvc3BjcDh4NS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMK QEAgLTIzMiwxMSArMjMyLDE3IEBAIHN0YXRpYyBpbnQgc3BjcDh4NV9nZXRfbXNyKHN0cnVjdCB1 c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHU4ICpzdGF0dXMpCiAJcmV0ID0gdXNiX2NvbnRyb2xfbXNn KGRldiwgdXNiX3JjdmN0cmxwaXBlKGRldiwgMCksCiAJCQkgICAgICBHRVRfVUFSVF9TVEFUVVMs IEdFVF9VQVJUX1NUQVRVU19UWVBFLAogCQkJICAgICAgMCwgR0VUX1VBUlRfU1RBVFVTX01TUiwg YnVmLCAxLCAxMDApOwotCWlmIChyZXQgPCAwKQorCWlmIChyZXQgPCAxKSB7CiAJCWRldl9lcnIo JnBvcnQtPmRldiwgImZhaWxlZCB0byBnZXQgbW9kZW0gc3RhdHVzOiAlZFxuIiwgcmV0KTsKKwkJ aWYgKHJldCA+PSAwKQorCQkJcmV0ID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQogCiAJZGV2X2Ri ZygmcG9ydC0+ZGV2LCAiMHhjMDoweDIyOjA6NiAgJWQgLSAweDAyJXhcbiIsIHJldCwgKmJ1Zik7 CiAJKnN0YXR1cyA9ICpidWY7CisJcmV0ID0gMDsKK291dDoKIAlrZnJlZShidWYpOwogCiAJcmV0 dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zc3UxMDAuYyBiL2RyaXZl cnMvdXNiL3NlcmlhbC9zc3UxMDAuYwppbmRleCA3MGEwOThkZTQyOWYuLjg4NmUxMjk0YjEyMCAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NzdTEwMC5jCisrKyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9zc3UxMDAuYwpAQCAtODAsOSArODAsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgc3N1 MTAwX3NldGRldmljZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1OCAqZGF0YSkKIAogc3RhdGlj IGlubGluZSBpbnQgc3N1MTAwX2dldGRldmljZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1OCAq ZGF0YSkKIHsKLQlyZXR1cm4gdXNiX2NvbnRyb2xfbXNnKGRldiwgdXNiX3JjdmN0cmxwaXBlKGRl diwgMCksCi0JCQkgICAgICAgUVRfU0VUX0dFVF9ERVZJQ0UsIDB4YzAsIDAsIDAsCi0JCQkgICAg ICAgZGF0YSwgMywgMzAwKTsKKwlpbnQgcmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGRl diwgdXNiX3JjdmN0cmxwaXBlKGRldiwgMCksCisJCQkgICAgICBRVF9TRVRfR0VUX0RFVklDRSwg MHhjMCwgMCwgMCwKKwkJCSAgICAgIGRhdGEsIDMsIDMwMCk7CisJaWYgKHJldCA8IDMpIHsKKwkJ aWYgKHJldCA+PSAwKQorCQkJcmV0ID0gLUVJTzsKKwl9CisKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgaW5saW5lIGludCBzc3UxMDBfZ2V0cmVnaXN0ZXIoc3RydWN0IHVzYl9kZXZpY2UgKmRl diwKQEAgLTkwLDEwICs5OCwxNyBAQCBzdGF0aWMgaW5saW5lIGludCBzc3UxMDBfZ2V0cmVnaXN0 ZXIoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVuc2lnbmVkIHNob3J0IHJlZywK IAkJCQkgICAgIHU4ICpkYXRhKQogewotCXJldHVybiB1c2JfY29udHJvbF9tc2coZGV2LCB1c2Jf cmN2Y3RybHBpcGUoZGV2LCAwKSwKLQkJCSAgICAgICBRVF9TRVRfR0VUX1JFR0lTVEVSLCAweGMw LCByZWcsCi0JCQkgICAgICAgdWFydCwgZGF0YSwgc2l6ZW9mKCpkYXRhKSwgMzAwKTsKKwlpbnQg cmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGRldiwgdXNiX3JjdmN0cmxwaXBlKGRldiwg MCksCisJCQkgICAgICBRVF9TRVRfR0VUX1JFR0lTVEVSLCAweGMwLCByZWcsCisJCQkgICAgICB1 YXJ0LCBkYXRhLCBzaXplb2YoKmRhdGEpLCAzMDApOworCWlmIChyZXQgPCBzaXplb2YoKmRhdGEp KSB7CisJCWlmIChyZXQgPj0gMCkKKwkJCXJldCA9IC1FSU87CisJfQogCisJcmV0dXJuIHJldDsK IH0KIAogCkBAIC0yODksOCArMzA0LDEwIEBAIHN0YXRpYyBpbnQgc3N1MTAwX29wZW4oc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIAkJCQkgUVRf T1BFTl9DTE9TRV9DSEFOTkVMLAogCQkJCSBRVF9UUkFOU0ZFUl9JTiwgMHgwMSwKIAkJCQkgMCwg ZGF0YSwgMiwgMzAwKTsKLQlpZiAocmVzdWx0IDwgMCkgeworCWlmIChyZXN1bHQgPCAyKSB7CiAJ CWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIC0gb3BlbiBmYWlsZWQgJWlcbiIsIF9fZnVuY19fLCBy ZXN1bHQpOworCQlpZiAocmVzdWx0ID49IDApCisJCQlyZXN1bHQgPSAtRUlPOwogCQlrZnJlZShk YXRhKTsKIAkJcmV0dXJuIHJlc3VsdDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJp YWwvdGlfdXNiXzM0MTBfNTA1Mi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3RpX3VzYl8zNDEwXzUw NTIuYwppbmRleCBmNjBhMWM4ZjJlNjYuLjFkMzE0ZWRlMGQ2NSAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2Ivc2VyaWFsL3RpX3VzYl8zNDEwXzUwNTIuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwv dGlfdXNiXzM0MTBfNTA1Mi5jCkBAIC0xMzU3LDEzICsxMzU3LDEwIEBAIHN0YXRpYyBpbnQgdGlf Y29tbWFuZF9vdXRfc3luYyhzdHJ1Y3QgdGlfZGV2aWNlICp0ZGV2LCBfX3U4IGNvbW1hbmQsCiAJ CShVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBfREVWSUNFIHwgVVNCX0RJUl9PVVQpLAogCQl2 YWx1ZSwgbW9kdWxlaWQsIGRhdGEsIHNpemUsIDEwMDApOwogCi0JaWYgKHN0YXR1cyA9PSBzaXpl KQotCQlzdGF0dXMgPSAwOwotCi0JaWYgKHN0YXR1cyA+IDApCi0JCXN0YXR1cyA9IC1FQ09NTTsK KwlpZiAoc3RhdHVzIDwgMCkKKwkJcmV0dXJuIHN0YXR1czsKIAotCXJldHVybiBzdGF0dXM7CisJ cmV0dXJuIDA7CiB9CiAKIApAQCAtMTM3OSw4ICsxMzc2LDcgQEAgc3RhdGljIGludCB0aV9jb21t YW5kX2luX3N5bmMoc3RydWN0IHRpX2RldmljZSAqdGRldiwgX191OCBjb21tYW5kLAogCiAJaWYg KHN0YXR1cyA9PSBzaXplKQogCQlzdGF0dXMgPSAwOwotCi0JaWYgKHN0YXR1cyA+IDApCisJZWxz ZSBpZiAoc3RhdHVzID49IDApCiAJCXN0YXR1cyA9IC1FQ09NTTsKIAogCXJldHVybiBzdGF0dXM7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL21hc3RlcnMvZHMyNDkwLmMgYi9kcml2ZXJzL3cxL21h c3RlcnMvZHMyNDkwLmMKaW5kZXggNzQwNGFkMzA2MmI3Li4xNzZiODhmYTY5NGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdzEvbWFzdGVycy9kczI0OTAuYworKysgYi9kcml2ZXJzL3cxL21hc3RlcnMv ZHMyNDkwLmMKQEAgLTE1Myw2ICsxNTMsOSBAQCBzdHJ1Y3QgZHNfZGV2aWNlCiAJICovCiAJdTE2 CQkJc3B1X2JpdDsKIAorCXU4CQkJc3RfYnVmW1NUX1NJWkVdOworCXU4CQkJYnl0ZV9idWY7CisK IAlzdHJ1Y3QgdzFfYnVzX21hc3RlcgltYXN0ZXI7CiB9OwogCkBAIC0xNzQsNyArMTc3LDYgQEAg c3RydWN0IGRzX3N0YXR1cwogCXU4CQkJZGF0YV9pbl9idWZmZXJfc3RhdHVzOwogCXU4CQkJcmVz ZXJ2ZWQxOwogCXU4CQkJcmVzZXJ2ZWQyOwotCiB9OwogCiBzdGF0aWMgc3RydWN0IHVzYl9kZXZp Y2VfaWQgZHNfaWRfdGFibGUgW10gPSB7CkBAIC0yNDQsMjcgKzI0Niw2IEBAIHN0YXRpYyBpbnQg ZHNfc2VuZF9jb250cm9sKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTE2IHZhbHVlLCB1MTYgaW5k ZXgpCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBkc19yZWN2X3N0YXR1c19ub2R1bXAo c3RydWN0IGRzX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNfc3RhdHVzICpzdCwKLQkJCQkgdW5zaWdu ZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLXsKLQlpbnQgY291bnQsIGVycjsKLQotCW1lbXNldChz dCwgMCwgc2l6ZW9mKCpzdCkpOwotCi0JY291bnQgPSAwOwotCWVyciA9IHVzYl9pbnRlcnJ1cHRf bXNnKGRldi0+dWRldiwgdXNiX3JjdmludHBpcGUoZGV2LT51ZGV2LAotCQlkZXYtPmVwW0VQX1NU QVRVU10pLCBidWYsIHNpemUsICZjb3VudCwgMTAwKTsKLQlpZiAoZXJyIDwgMCkgewotCQlwcmlu dGsoS0VSTl9FUlIgIkZhaWxlZCB0byByZWFkIDEtd2lyZSBkYXRhIGZyb20gMHgleDogZXJyPSVk LlxuIiwgZGV2LT5lcFtFUF9TVEFUVVNdLCBlcnIpOwotCQlyZXR1cm4gZXJyOwotCX0KLQotCWlm IChjb3VudCA+PSBzaXplb2YoKnN0KSkKLQkJbWVtY3B5KHN0LCBidWYsIHNpemVvZigqc3QpKTsK LQotCXJldHVybiBjb3VudDsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIGRzX3ByaW50X21zZyh1 bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGNoYXIgKnN0ciwgaW50IG9mZikKIHsKIAlwcmlu dGsoS0VSTl9JTkZPICIlNDVzOiAlOHhcbiIsIHN0ciwgYnVmW29mZl0pOwpAQCAtMzIzLDYgKzMw NCwzNSBAQCBzdGF0aWMgdm9pZCBkc19kdW1wX3N0YXR1cyhzdHJ1Y3QgZHNfZGV2aWNlICpkZXYs IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KQogCX0KIH0KIAorc3RhdGljIGludCBkc19y ZWN2X3N0YXR1cyhzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHN0cnVjdCBkc19zdGF0dXMgKnN0LAor CQkJICBib29sIGR1bXApCit7CisJaW50IGNvdW50LCBlcnI7CisKKwlpZiAoc3QpCisJCW1lbXNl dChzdCwgMCwgc2l6ZW9mKCpzdCkpOworCisJY291bnQgPSAwOworCWVyciA9IHVzYl9pbnRlcnJ1 cHRfbXNnKGRldi0+dWRldiwKKwkJCQl1c2JfcmN2aW50cGlwZShkZXYtPnVkZXYsCisJCQkJCSAg ICAgICBkZXYtPmVwW0VQX1NUQVRVU10pLAorCQkJCWRldi0+c3RfYnVmLCBzaXplb2YoZGV2LT5z dF9idWYpLAorCQkJCSZjb3VudCwgMTAwMCk7CisJaWYgKGVyciA8IDApIHsKKwkJcHJfZXJyKCJG YWlsZWQgdG8gcmVhZCAxLXdpcmUgZGF0YSBmcm9tIDB4JXg6IGVycj0lZC5cbiIsCisJCSAgICAg ICBkZXYtPmVwW0VQX1NUQVRVU10sIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJaWYgKGR1 bXApCisJCWRzX2R1bXBfc3RhdHVzKGRldiwgZGV2LT5zdF9idWYsIGNvdW50KTsKKworCWlmIChz dCAmJiBjb3VudCA+PSBzaXplb2YoKnN0KSkKKwkJbWVtY3B5KHN0LCBkZXYtPnN0X2J1Ziwgc2l6 ZW9mKCpzdCkpOworCisJcmV0dXJuIGNvdW50OworfQorCiBzdGF0aWMgdm9pZCBkc19yZXNldF9k ZXZpY2Uoc3RydWN0IGRzX2RldmljZSAqZGV2KQogewogCWRzX3NlbmRfY29udHJvbF9jbWQoZGV2 LCBDVExfUkVTRVRfREVWSUNFLCAwKTsKQEAgLTM0NSw3ICszNTUsNiBAQCBzdGF0aWMgdm9pZCBk c19yZXNldF9kZXZpY2Uoc3RydWN0IGRzX2RldmljZSAqZGV2KQogc3RhdGljIGludCBkc19yZWN2 X2RhdGEoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXpl KQogewogCWludCBjb3VudCwgZXJyOwotCXN0cnVjdCBkc19zdGF0dXMgc3Q7CiAKIAkvKiBDYXJl ZnVsIG9uIHNpemUuICBJZiBzaXplIGlzIGxlc3MgdGhhbiB3aGF0IGlzIGF2YWlsYWJsZSBpbgog CSAqIHRoZSBpbnB1dCBidWZmZXIsIHRoZSBkZXZpY2UgZmFpbHMgdGhlIGJ1bGsgdHJhbnNmZXIg YW5kCkBAIC0zNjAsMTQgKzM2OSw5IEBAIHN0YXRpYyBpbnQgZHNfcmVjdl9kYXRhKHN0cnVjdCBk c19kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKIAllcnIgPSB1c2Jf YnVsa19tc2coZGV2LT51ZGV2LCB1c2JfcmN2YnVsa3BpcGUoZGV2LT51ZGV2LCBkZXYtPmVwW0VQ X0RBVEFfSU5dKSwKIAkJCQlidWYsIHNpemUsICZjb3VudCwgMTAwMCk7CiAJaWYgKGVyciA8IDAp IHsKLQkJdTggYnVmW1NUX1NJWkVdOwotCQlpbnQgY291bnQ7Ci0KIAkJcHJpbnRrKEtFUk5fSU5G TyAiQ2xlYXJpbmcgZXAweCV4LlxuIiwgZGV2LT5lcFtFUF9EQVRBX0lOXSk7CiAJCXVzYl9jbGVh cl9oYWx0KGRldi0+dWRldiwgdXNiX3JjdmJ1bGtwaXBlKGRldi0+dWRldiwgZGV2LT5lcFtFUF9E QVRBX0lOXSkpOwotCi0JCWNvdW50ID0gZHNfcmVjdl9zdGF0dXNfbm9kdW1wKGRldiwgJnN0LCBi dWYsIHNpemVvZihidWYpKTsKLQkJZHNfZHVtcF9zdGF0dXMoZGV2LCBidWYsIGNvdW50KTsKKwkJ ZHNfcmVjdl9zdGF0dXMoZGV2LCBOVUxMLCB0cnVlKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAg LTQwNSw3ICs0MDksNiBAQCBpbnQgZHNfc3RvcF9wdWxzZShzdHJ1Y3QgZHNfZGV2aWNlICpkZXYs IGludCBsaW1pdCkKIHsKIAlzdHJ1Y3QgZHNfc3RhdHVzIHN0OwogCWludCBjb3VudCA9IDAsIGVy ciA9IDA7Ci0JdTggYnVmW1NUX1NJWkVdOwogCiAJZG8gewogCQllcnIgPSBkc19zZW5kX2NvbnRy b2woZGV2LCBDVExfSEFMVF9FWEVfSURMRSwgMCk7CkBAIC00MTQsNyArNDE3LDcgQEAgaW50IGRz X3N0b3BfcHVsc2Uoc3RydWN0IGRzX2RldmljZSAqZGV2LCBpbnQgbGltaXQpCiAJCWVyciA9IGRz X3NlbmRfY29udHJvbChkZXYsIENUTF9SRVNVTUVfRVhFLCAwKTsKIAkJaWYgKGVycikKIAkJCWJy ZWFrOwotCQllcnIgPSBkc19yZWN2X3N0YXR1c19ub2R1bXAoZGV2LCAmc3QsIGJ1Ziwgc2l6ZW9m KGJ1ZikpOworCQllcnIgPSBkc19yZWN2X3N0YXR1cyhkZXYsICZzdCwgZmFsc2UpOwogCQlpZiAo ZXJyKQogCQkJYnJlYWs7CiAKQEAgLTQ1NywxOCArNDYwLDE3IEBAIGludCBkc19kZXRlY3Qoc3Ry dWN0IGRzX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNfc3RhdHVzICpzdCkKIAogc3RhdGljIGludCBk c193YWl0X3N0YXR1cyhzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHN0cnVjdCBkc19zdGF0dXMgKnN0 KQogewotCXU4IGJ1ZltTVF9TSVpFXTsKIAlpbnQgZXJyLCBjb3VudCA9IDA7CiAKIAlkbyB7CiAJ CXN0LT5zdGF0dXMgPSAwOwotCQllcnIgPSBkc19yZWN2X3N0YXR1c19ub2R1bXAoZGV2LCBzdCwg YnVmLCBzaXplb2YoYnVmKSk7CisJCWVyciA9IGRzX3JlY3Zfc3RhdHVzKGRldiwgc3QsIGZhbHNl KTsKICNpZiAwCiAJCWlmIChlcnIgPj0gMCkgewogCQkJaW50IGk7CiAJCQlwcmludGsoIjB4JXg6 IGNvdW50PSVkLCBzdGF0dXM6ICIsIGRldi0+ZXBbRVBfU1RBVFVTXSwgZXJyKTsKIAkJCWZvciAo aT0wOyBpPGVycjsgKytpKQotCQkJCXByaW50aygiJTAyeCAiLCBidWZbaV0pOworCQkJCXByaW50 aygiJTAyeCAiLCBkZXYtPnN0X2J1ZltpXSk7CiAJCQlwcmludGsoIlxuIik7CiAJCX0KICNlbmRp ZgpAQCAtNDg2LDcgKzQ4OCw3IEBAIHN0YXRpYyBpbnQgZHNfd2FpdF9zdGF0dXMoc3RydWN0IGRz X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNfc3RhdHVzICpzdCkKIAkgKiBjYW4gZG8gc29tZXRoaW5n IHdpdGggaXQpLgogCSAqLwogCWlmIChlcnIgPiAxNiB8fCBjb3VudCA+PSAxMDAgfHwgZXJyIDwg MCkKLQkJZHNfZHVtcF9zdGF0dXMoZGV2LCBidWYsIGVycik7CisJCWRzX2R1bXBfc3RhdHVzKGRl diwgZGV2LT5zdF9idWYsIGVycik7CiAKIAkvKiBFeHRlbmRlZCBkYXRhIGlzbid0IGFuIGVycm9y LiAgV2VsbCwgYSBzaG9ydCBpcywgYnV0IHRoZSBkdW1wCiAJICogd291bGQgaGF2ZSBhbHJlYWR5 IHRvbGQgdGhlIHVzZXIgdGhhdCBhbmQgd2UgY2FuJ3QgZG8gYW55dGhpbmcKQEAgLTYwOSw3ICs2 MTEsNiBAQCBzdGF0aWMgaW50IGRzX3dyaXRlX2J5dGUoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1 OCBieXRlKQogewogCWludCBlcnI7CiAJc3RydWN0IGRzX3N0YXR1cyBzdDsKLQl1OCByYnl0ZTsK IAogCWVyciA9IGRzX3NlbmRfY29udHJvbChkZXYsIENPTU1fQllURV9JTyB8IENPTU1fSU0gfCBk ZXYtPnNwdV9iaXQsIGJ5dGUpOwogCWlmIChlcnIpCkBAIC02MjIsMTEgKzYyMywxMSBAQCBzdGF0 aWMgaW50IGRzX3dyaXRlX2J5dGUoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1OCBieXRlKQogCWlm IChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQllcnIgPSBkc19yZWN2X2RhdGEoZGV2LCAmcmJ5dGUs IHNpemVvZihyYnl0ZSkpOworCWVyciA9IGRzX3JlY3ZfZGF0YShkZXYsICZkZXYtPmJ5dGVfYnVm LCAxKTsKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAotCXJldHVybiAhKGJ5dGUgPT0g cmJ5dGUpOworCXJldHVybiAhKGJ5dGUgPT0gZGV2LT5ieXRlX2J1Zik7CiB9CiAKIHN0YXRpYyBp bnQgZHNfcmVhZF9ieXRlKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTggKmJ5dGUpCkBAIC03MTMs NyArNzE0LDYgQEAgc3RhdGljIHZvaWQgZHM5NDkwcl9zZWFyY2godm9pZCAqZGF0YSwgc3RydWN0 IHcxX21hc3RlciAqbWFzdGVyLAogCWludCBlcnI7CiAJdTE2IHZhbHVlLCBpbmRleDsKIAlzdHJ1 Y3QgZHNfc3RhdHVzIHN0OwotCXU4IHN0X2J1ZltTVF9TSVpFXTsKIAlpbnQgc2VhcmNoX2xpbWl0 OwogCWludCBmb3VuZCA9IDA7CiAJaW50IGk7CkBAIC03MjUsNyArNzI1LDEyIEBAIHN0YXRpYyB2 b2lkIGRzOTQ5MHJfc2VhcmNoKHZvaWQgKmRhdGEsIHN0cnVjdCB3MV9tYXN0ZXIgKm1hc3RlciwK IAkvKiBGSUZPIDEyOCBieXRlcywgYnVsayBwYWNrZXQgc2l6ZSA2NCwgcmVhZCBhIG11bHRpcGxl IG9mIHRoZQogCSAqIHBhY2tldCBzaXplLgogCSAqLwotCXU2NCBidWZbMio2NC84XTsKKwljb25z dCBzaXplX3QgYnVmc2l6ZSA9IDIgKiA2NDsKKwl1NjQgKmJ1ZjsKKworCWJ1ZiA9IGttYWxsb2Mo YnVmc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWYpCisJCXJldHVybjsKIAogCW11dGV4X2xv Y2soJm1hc3Rlci0+YnVzX211dGV4KTsKIApAQCAtNzQ2LDEwICs3NTEsOSBAQCBzdGF0aWMgdm9p ZCBkczk0OTByX3NlYXJjaCh2b2lkICpkYXRhLCBzdHJ1Y3QgdzFfbWFzdGVyICptYXN0ZXIsCiAJ ZG8gewogCQlzY2hlZHVsZV90aW1lb3V0KGp0aW1lKTsKIAotCQlpZiAoZHNfcmVjdl9zdGF0dXNf bm9kdW1wKGRldiwgJnN0LCBzdF9idWYsIHNpemVvZihzdF9idWYpKSA8Ci0JCQlzaXplb2Yoc3Qp KSB7CisJCWVyciA9IGRzX3JlY3Zfc3RhdHVzKGRldiwgJnN0LCBmYWxzZSk7CisJCWlmIChlcnIg PCAwIHx8IGVyciA8IHNpemVvZihzdCkpCiAJCQlicmVhazsKLQkJfQogCiAJCWlmIChzdC5kYXRh X2luX2J1ZmZlcl9zdGF0dXMpIHsKIAkJCS8qIEJ1bGsgaW4gY2FuIHJlY2VpdmUgcGFydGlhbCBp ZHMsIGJ1dCB3aGVuIGl0IGRvZXMKQEAgLTc1OSw3ICs3NjMsNyBAQCBzdGF0aWMgdm9pZCBkczk0 OTByX3NlYXJjaCh2b2lkICpkYXRhLCBzdHJ1Y3QgdzFfbWFzdGVyICptYXN0ZXIsCiAJCQkgKiBi dWxrIHdpdGhvdXQgZmlyc3QgY2hlY2tpbmcgaWYgc3RhdHVzIHNheXMgdGhlcmUKIAkJCSAqIGlz IGRhdGEgdG8gcmVhZC4KIAkJCSAqLwotCQkJZXJyID0gZHNfcmVjdl9kYXRhKGRldiwgKHU4ICop YnVmLCBzaXplb2YoYnVmKSk7CisJCQllcnIgPSBkc19yZWN2X2RhdGEoZGV2LCAodTggKilidWYs IGJ1ZnNpemUpOwogCQkJaWYgKGVyciA8IDApCiAJCQkJYnJlYWs7CiAJCQlmb3IgKGkgPSAwOyBp IDwgZXJyLzg7ICsraSkgewpAQCAtNzk1LDkgKzc5OSwxNCBAQCBzdGF0aWMgdm9pZCBkczk0OTBy X3NlYXJjaCh2b2lkICpkYXRhLCBzdHJ1Y3QgdzFfbWFzdGVyICptYXN0ZXIsCiAJfQogc2VhcmNo X291dDoKIAltdXRleF91bmxvY2soJm1hc3Rlci0+YnVzX211dGV4KTsKKwlrZnJlZShidWYpOwog fQogCiAjaWYgMAorLyoKKyAqIEZJWE1FOiBpZiB0aGlzIGRpc2FibGVkIGNvZGUgaXMgZXZlciB1 c2VkIGluIHRoZSBmdXR1cmUgYWxsIGRzX3NlbmRfZGF0YSgpCisgKiBjYWxscyBtdXN0IGJlIGNo YW5nZWQgdG8gdXNlIGEgRE1BYWJsZSBidWZmZXIuCisgKi8KIHN0YXRpYyBpbnQgZHNfbWF0Y2hf YWNjZXNzKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTY0IGluaXQpCiB7CiAJaW50IGVycjsKQEAg LTg0NiwxMyArODU1LDEyIEBAIHN0YXRpYyBpbnQgZHNfc2V0X3BhdGgoc3RydWN0IGRzX2Rldmlj ZSAqZGV2LCB1NjQgaW5pdCkKIAogc3RhdGljIHU4IGRzOTQ5MHJfdG91Y2hfYml0KHZvaWQgKmRh dGEsIHU4IGJpdCkKIHsKLQl1OCByZXQ7CiAJc3RydWN0IGRzX2RldmljZSAqZGV2ID0gZGF0YTsK IAotCWlmIChkc190b3VjaF9iaXQoZGV2LCBiaXQsICZyZXQpKQorCWlmIChkc190b3VjaF9iaXQo ZGV2LCBiaXQsICZkZXYtPmJ5dGVfYnVmKSkKIAkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0Owor CXJldHVybiBkZXYtPmJ5dGVfYnVmOwogfQogCiAjaWYgMApAQCAtODY3LDEzICs4NzUsMTIgQEAg c3RhdGljIHU4IGRzOTQ5MHJfcmVhZF9iaXQodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHNfZGV2 aWNlICpkZXYgPSBkYXRhOwogCWludCBlcnI7Ci0JdTggYml0ID0gMDsKIAotCWVyciA9IGRzX3Rv dWNoX2JpdChkZXYsIDEsICZiaXQpOworCWVyciA9IGRzX3RvdWNoX2JpdChkZXYsIDEsICZkZXYt PmJ5dGVfYnVmKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gMDsKIAotCXJldHVybiBiaXQgJiAxOwor CXJldHVybiBkZXYtPmJ5dGVfYnVmICYgMTsKIH0KICNlbmRpZgogCkBAIC04ODgsMzIgKzg5NSw1 MiBAQCBzdGF0aWMgdTggZHM5NDkwcl9yZWFkX2J5dGUodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3Qg ZHNfZGV2aWNlICpkZXYgPSBkYXRhOwogCWludCBlcnI7Ci0JdTggYnl0ZSA9IDA7CiAKLQllcnIg PSBkc19yZWFkX2J5dGUoZGV2LCAmYnl0ZSk7CisJZXJyID0gZHNfcmVhZF9ieXRlKGRldiwgJmRl di0+Ynl0ZV9idWYpOwogCWlmIChlcnIpCiAJCXJldHVybiAwOwogCi0JcmV0dXJuIGJ5dGU7CisJ cmV0dXJuIGRldi0+Ynl0ZV9idWY7CiB9CiAKIHN0YXRpYyB2b2lkIGRzOTQ5MHJfd3JpdGVfYmxv Y2sodm9pZCAqZGF0YSwgY29uc3QgdTggKmJ1ZiwgaW50IGxlbikKIHsKIAlzdHJ1Y3QgZHNfZGV2 aWNlICpkZXYgPSBkYXRhOworCXU4ICp0YnVmOworCisJaWYgKGxlbiA8PSAwKQorCQlyZXR1cm47 CisKKwl0YnVmID0ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpOworCWlmICghdGJ1ZikKKwkJcmV0 dXJuOworCisJbWVtY3B5KHRidWYsIGJ1ZiwgbGVuKTsKKwlkc193cml0ZV9ibG9jayhkZXYsIHRi dWYsIGxlbik7CiAKLQlkc193cml0ZV9ibG9jayhkZXYsICh1OCAqKWJ1ZiwgbGVuKTsKKwlrZnJl ZSh0YnVmKTsKIH0KIAogc3RhdGljIHU4IGRzOTQ5MHJfcmVhZF9ibG9jayh2b2lkICpkYXRhLCB1 OCAqYnVmLCBpbnQgbGVuKQogewogCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7CiAJaW50 IGVycjsKKwl1OCAqdGJ1ZjsKIAotCWVyciA9IGRzX3JlYWRfYmxvY2soZGV2LCBidWYsIGxlbik7 Ci0JaWYgKGVyciA8IDApCisJaWYgKGxlbiA8PSAwKQorCQlyZXR1cm4gMDsKKworCXRidWYgPSBr bWFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7CisJaWYgKCF0YnVmKQogCQlyZXR1cm4gMDsKIAotCXJl dHVybiBsZW47CisJZXJyID0gZHNfcmVhZF9ibG9jayhkZXYsIHRidWYsIGxlbik7CisJaWYgKGVy ciA+PSAwKQorCQltZW1jcHkoYnVmLCB0YnVmLCBsZW4pOworCisJa2ZyZWUodGJ1Zik7CisKKwly ZXR1cm4gZXJyID49IDAgPyBsZW4gOiAwOwogfQogCiBzdGF0aWMgdTggZHM5NDkwcl9yZXNldCh2 b2lkICpkYXRhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS93MS5jIGIvZHJpdmVycy93MS93MS5j CmluZGV4IDVkNzM0MTUyMDU0NC4uNmNhNWYzNWJkYjIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3cx L3cxLmMKKysrIGIvZHJpdmVycy93MS93MS5jCkBAIC03NDksNiArNzQ5LDcgQEAgaW50IHcxX2F0 dGFjaF9zbGF2ZV9kZXZpY2Uoc3RydWN0IHcxX21hc3RlciAqZGV2LCBzdHJ1Y3QgdzFfcmVnX251 bSAqcm4pCiAJCWRldl9lcnIoJmRldi0+ZGV2LCAiJXM6IEF0dGFjaGluZyAlcyBmYWlsZWQuXG4i LCBfX2Z1bmNfXywKIAkJCSBzbC0+bmFtZSk7CiAJCXcxX2ZhbWlseV9wdXQoc2wtPmZhbWlseSk7 CisJCWF0b21pY19kZWMoJnNsLT5tYXN0ZXItPnJlZmNudCk7CiAJCWtmcmVlKHNsKTsKIAkJcmV0 dXJuIGVycjsKIAl9CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lubGluZS5jIGIvZnMvZXh0NC9pbmxp bmUuYwppbmRleCA3YmQxM2YzZDE3OTAuLmZhODlmN2IyM2FiOSAxMDA2NDQKLS0tIGEvZnMvZXh0 NC9pbmxpbmUuYworKysgYi9mcy9leHQ0L2lubGluZS5jCkBAIC0zODAsNyArMzgwLDcgQEAgb3V0 Ogogc3RhdGljIGludCBleHQ0X3ByZXBhcmVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwg c3RydWN0IGlub2RlICppbm9kZSwKIAkJCQkgICAgdW5zaWduZWQgaW50IGxlbikKIHsKLQlpbnQg cmV0LCBzaXplOworCWludCByZXQsIHNpemUsIG5vX2V4cGFuZDsKIAlzdHJ1Y3QgZXh0NF9pbm9k ZV9pbmZvICplaSA9IEVYVDRfSShpbm9kZSk7CiAKIAlpZiAoIWV4dDRfdGVzdF9pbm9kZV9zdGF0 ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKQpAQCAtMzkwLDE1ICszOTAsMTQg QEAgc3RhdGljIGludCBleHQ0X3ByZXBhcmVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwg c3RydWN0IGlub2RlICppbm9kZSwKIAlpZiAoc2l6ZSA8IGxlbikKIAkJcmV0dXJuIC1FTk9TUEM7 CiAKLQlkb3duX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0cl9zZW0pOworCWV4dDRfd3JpdGVf bG9ja194YXR0cihpbm9kZSwgJm5vX2V4cGFuZCk7CiAKIAlpZiAoZWktPmlfaW5saW5lX29mZikK IAkJcmV0ID0gZXh0NF91cGRhdGVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgbGVuKTsKIAll bHNlCiAJCXJldCA9IGV4dDRfY3JlYXRlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGxlbik7 CiAKLQl1cF93cml0ZSgmRVhUNF9JKGlub2RlKS0+eGF0dHJfc2VtKTsKLQorCWV4dDRfd3JpdGVf dW5sb2NrX3hhdHRyKGlub2RlLCAmbm9fZXhwYW5kKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC01 MjgsNyArNTI3LDcgQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0 ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkJCQkgICAgICBzdHJ1Y3QgaW5v ZGUgKmlub2RlLAogCQkJCQkgICAgICB1bnNpZ25lZCBmbGFncykKIHsKLQlpbnQgcmV0LCBuZWVk ZWRfYmxvY2tzOworCWludCByZXQsIG5lZWRlZF9ibG9ja3MsIG5vX2V4cGFuZDsKIAloYW5kbGVf dCAqaGFuZGxlID0gTlVMTDsKIAlpbnQgcmV0cmllcyA9IDAsIHNlbV9oZWxkID0gMDsKIAlzdHJ1 Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CkBAIC01NjgsNyArNTY3LDcgQEAgcmV0cnk6CiAJCWdvdG8g b3V0OwogCX0KIAotCWRvd25fd3JpdGUoJkVYVDRfSShpbm9kZSktPnhhdHRyX3NlbSk7CisJZXh0 NF93cml0ZV9sb2NrX3hhdHRyKGlub2RlLCAmbm9fZXhwYW5kKTsKIAlzZW1faGVsZCA9IDE7CiAJ LyogSWYgc29tZSBvbmUgaGFzIGFscmVhZHkgZG9uZSB0aGlzIGZvciB1cywganVzdCBleGl0LiAq LwogCWlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7CkBAIC02MDMsNyArNjAyLDcg QEAgcmV0cnk6CiAJCXVubG9ja19wYWdlKHBhZ2UpOwogCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFn ZSk7CiAJCWV4dDRfb3JwaGFuX2FkZChoYW5kbGUsIGlub2RlKTsKLQkJdXBfd3JpdGUoJkVYVDRf SShpbm9kZSktPnhhdHRyX3NlbSk7CisJCWV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCAm bm9fZXhwYW5kKTsKIAkJc2VtX2hlbGQgPSAwOwogCQlleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUp OwogCQloYW5kbGUgPSBOVUxMOwpAQCAtNjI4LDcgKzYyNyw3IEBAIG91dDoKIAkJcGFnZV9jYWNo ZV9yZWxlYXNlKHBhZ2UpOwogCX0KIAlpZiAoc2VtX2hlbGQpCi0JCXVwX3dyaXRlKCZFWFQ0X0ko aW5vZGUpLT54YXR0cl9zZW0pOworCQlleHQ0X3dyaXRlX3VubG9ja194YXR0cihpbm9kZSwgJm5v X2V4cGFuZCk7CiAJaWYgKGhhbmRsZSkKIAkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKIAli cmVsc2UoaWxvYy5iaCk7CkBAIC03MjEsNyArNzIwLDcgQEAgY29udmVydDoKIGludCBleHQ0X3dy aXRlX2lubGluZV9kYXRhX2VuZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgcG9zLCB1bnNp Z25lZCBsZW4sCiAJCQkgICAgICAgdW5zaWduZWQgY29waWVkLCBzdHJ1Y3QgcGFnZSAqcGFnZSkK IHsKLQlpbnQgcmV0OworCWludCByZXQsIG5vX2V4cGFuZDsKIAl2b2lkICprYWRkcjsKIAlzdHJ1 Y3QgZXh0NF9pbG9jIGlsb2M7CiAKQEAgLTczOSw3ICs3MzgsNyBAQCBpbnQgZXh0NF93cml0ZV9p bmxpbmVfZGF0YV9lbmQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgdW5zaWduZWQg bGVuLAogCQlnb3RvIG91dDsKIAl9CiAKLQlkb3duX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0 cl9zZW0pOworCWV4dDRfd3JpdGVfbG9ja194YXR0cihpbm9kZSwgJm5vX2V4cGFuZCk7CiAJQlVH X09OKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpOwogCiAJa2FkZHIgPSBrbWFwX2F0b21p YyhwYWdlKTsKQEAgLTc0OSw3ICs3NDgsNyBAQCBpbnQgZXh0NF93cml0ZV9pbmxpbmVfZGF0YV9l bmQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgdW5zaWduZWQgbGVuLAogCS8qIGNs ZWFyIHBhZ2UgZGlydHkgc28gdGhhdCB3cml0ZXBhZ2VzIHdvdWxkbid0IHdvcmsgZm9yIHVzLiAq LwogCUNsZWFyUGFnZURpcnR5KHBhZ2UpOwogCi0JdXBfd3JpdGUoJkVYVDRfSShpbm9kZSktPnhh dHRyX3NlbSk7CisJZXh0NF93cml0ZV91bmxvY2tfeGF0dHIoaW5vZGUsICZub19leHBhbmQpOwog CWJyZWxzZShpbG9jLmJoKTsKIG91dDoKIAlyZXR1cm4gY29waWVkOwpAQCAtNzYwLDcgKzc1OSw3 IEBAIGV4dDRfam91cm5hbGxlZF93cml0ZV9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2Rl LAogCQkJCSAgdW5zaWduZWQgbGVuLAogCQkJCSAgc3RydWN0IHBhZ2UgKnBhZ2UpCiB7Ci0JaW50 IHJldDsKKwlpbnQgcmV0LCBub19leHBhbmQ7CiAJdm9pZCAqa2FkZHI7CiAJc3RydWN0IGV4dDRf aWxvYyBpbG9jOwogCkBAIC03NzAsMTEgKzc2OSwxMSBAQCBleHQ0X2pvdXJuYWxsZWRfd3JpdGVf aW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSwKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0J ZG93bl93cml0ZSgmRVhUNF9JKGlub2RlKS0+eGF0dHJfc2VtKTsKKwlleHQ0X3dyaXRlX2xvY2tf eGF0dHIoaW5vZGUsICZub19leHBhbmQpOwogCWthZGRyID0ga21hcF9hdG9taWMocGFnZSk7CiAJ ZXh0NF93cml0ZV9pbmxpbmVfZGF0YShpbm9kZSwgJmlsb2MsIGthZGRyLCAwLCBsZW4pOwogCWt1 bm1hcF9hdG9taWMoa2FkZHIpOwotCXVwX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0cl9zZW0p OworCWV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCAmbm9fZXhwYW5kKTsKIAogCXJldHVy biBpbG9jLmJoOwogfQpAQCAtOTMyLDggKzkzMSwxNSBAQCBpbnQgZXh0NF9kYV93cml0ZV9pbmxp bmVfZGF0YV9lbmQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywKIAkJCQkgIHN0cnVj dCBwYWdlICpwYWdlKQogewogCWludCBpX3NpemVfY2hhbmdlZCA9IDA7CisJaW50IHJldDsKIAot CWNvcGllZCA9IGV4dDRfd3JpdGVfaW5saW5lX2RhdGFfZW5kKGlub2RlLCBwb3MsIGxlbiwgY29w aWVkLCBwYWdlKTsKKwlyZXQgPSBleHQ0X3dyaXRlX2lubGluZV9kYXRhX2VuZChpbm9kZSwgcG9z LCBsZW4sIGNvcGllZCwgcGFnZSk7CisJaWYgKHJldCA8IDApIHsKKwkJdW5sb2NrX3BhZ2UocGFn ZSk7CisJCXB1dF9wYWdlKHBhZ2UpOworCQlyZXR1cm4gcmV0OworCX0KKwljb3BpZWQgPSByZXQ7 CiAKIAkvKgogCSAqIE5vIG5lZWQgdG8gdXNlIGlfc2l6ZV9yZWFkKCkgaGVyZSwgdGhlIGlfc2l6 ZQpAQCAtMTIzOCw3ICsxMjQ0LDcgQEAgb3V0OgogaW50IGV4dDRfdHJ5X2FkZF9pbmxpbmVfZW50 cnkoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCQkJICAgICAgc3Ry dWN0IGlub2RlICppbm9kZSkKIHsKLQlpbnQgcmV0LCBpbmxpbmVfc2l6ZTsKKwlpbnQgcmV0LCBp bmxpbmVfc2l6ZSwgbm9fZXhwYW5kOwogCXZvaWQgKmlubGluZV9zdGFydDsKIAlzdHJ1Y3QgZXh0 NF9pbG9jIGlsb2M7CiAJc3RydWN0IGlub2RlICpkaXIgPSBkZW50cnktPmRfcGFyZW50LT5kX2lu b2RlOwpAQCAtMTI0Nyw3ICsxMjUzLDcgQEAgaW50IGV4dDRfdHJ5X2FkZF9pbmxpbmVfZW50cnko aGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKLQlkb3duX3dyaXRlKCZFWFQ0X0koZGlyKS0+eGF0dHJfc2VtKTsKKwlleHQ0 X3dyaXRlX2xvY2tfeGF0dHIoZGlyLCAmbm9fZXhwYW5kKTsKIAlpZiAoIWV4dDRfaGFzX2lubGlu ZV9kYXRhKGRpcikpCiAJCWdvdG8gb3V0OwogCkBAIC0xMjkyLDcgKzEyOTgsNyBAQCBpbnQgZXh0 NF90cnlfYWRkX2lubGluZV9lbnRyeShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksCiAKIG91dDoKIAlleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpOwotCXVw X3dyaXRlKCZFWFQ0X0koZGlyKS0+eGF0dHJfc2VtKTsKKwlleHQ0X3dyaXRlX3VubG9ja194YXR0 cihkaXIsICZub19leHBhbmQpOwogCWJyZWxzZShpbG9jLmJoKTsKIAlyZXR1cm4gcmV0OwogfQpA QCAtMTY0OCw3ICsxNjU0LDcgQEAgaW50IGV4dDRfZGVsZXRlX2lubGluZV9lbnRyeShoYW5kbGVf dCAqaGFuZGxlLAogCQkJICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAogCQkJICAgICBpbnQg Kmhhc19pbmxpbmVfZGF0YSkKIHsKLQlpbnQgZXJyLCBpbmxpbmVfc2l6ZTsKKwlpbnQgZXJyLCBp bmxpbmVfc2l6ZSwgbm9fZXhwYW5kOwogCXN0cnVjdCBleHQ0X2lsb2MgaWxvYzsKIAl2b2lkICpp bmxpbmVfc3RhcnQ7CiAKQEAgLTE2NTYsNyArMTY2Miw3IEBAIGludCBleHQ0X2RlbGV0ZV9pbmxp bmVfZW50cnkoaGFuZGxlX3QgKmhhbmRsZSwKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0J ZG93bl93cml0ZSgmRVhUNF9JKGRpciktPnhhdHRyX3NlbSk7CisJZXh0NF93cml0ZV9sb2NrX3hh dHRyKGRpciwgJm5vX2V4cGFuZCk7CiAJaWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShkaXIpKSB7 CiAJCSpoYXNfaW5saW5lX2RhdGEgPSAwOwogCQlnb3RvIG91dDsKQEAgLTE2OTEsNyArMTY5Nyw3 IEBAIGludCBleHQ0X2RlbGV0ZV9pbmxpbmVfZW50cnkoaGFuZGxlX3QgKmhhbmRsZSwKIAogCWV4 dDRfc2hvd19pbmxpbmVfZGlyKGRpciwgaWxvYy5iaCwgaW5saW5lX3N0YXJ0LCBpbmxpbmVfc2l6 ZSk7CiBvdXQ6Ci0JdXBfd3JpdGUoJkVYVDRfSShkaXIpLT54YXR0cl9zZW0pOworCWV4dDRfd3Jp dGVfdW5sb2NrX3hhdHRyKGRpciwgJm5vX2V4cGFuZCk7CiAJYnJlbHNlKGlsb2MuYmgpOwogCWlm IChlcnIgIT0gLUVOT0VOVCkKIAkJZXh0NF9zdGRfZXJyb3IoZGlyLT5pX3NiLCBlcnIpOwpAQCAt MTc5MCwxMSArMTc5NiwxMSBAQCBvdXQ6CiAKIGludCBleHQ0X2Rlc3Ryb3lfaW5saW5lX2RhdGEo aGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSkKIHsKLQlpbnQgcmV0OworCWlu dCByZXQsIG5vX2V4cGFuZDsKIAotCWRvd25fd3JpdGUoJkVYVDRfSShpbm9kZSktPnhhdHRyX3Nl bSk7CisJZXh0NF93cml0ZV9sb2NrX3hhdHRyKGlub2RlLCAmbm9fZXhwYW5kKTsKIAlyZXQgPSBl eHQ0X2Rlc3Ryb3lfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZSwgaW5vZGUpOwotCXVwX3dyaXRl KCZFWFQ0X0koaW5vZGUpLT54YXR0cl9zZW0pOworCWV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlu b2RlLCAmbm9fZXhwYW5kKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xODcyLDcgKzE4NzgsNyBA QCBvdXQ6CiB2b2lkIGV4dDRfaW5saW5lX2RhdGFfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9k ZSwgaW50ICpoYXNfaW5saW5lKQogewogCWhhbmRsZV90ICpoYW5kbGU7Ci0JaW50IGlubGluZV9z aXplLCB2YWx1ZV9sZW4sIG5lZWRlZF9ibG9ja3M7CisJaW50IGlubGluZV9zaXplLCB2YWx1ZV9s ZW4sIG5lZWRlZF9ibG9ja3MsIG5vX2V4cGFuZDsKIAlzaXplX3QgaV9zaXplOwogCXZvaWQgKnZh bHVlID0gTlVMTDsKIAlzdHJ1Y3QgZXh0NF94YXR0cl9pYm9keV9maW5kIGlzID0gewpAQCAtMTg4 OSw3ICsxODk1LDcgQEAgdm9pZCBleHQ0X2lubGluZV9kYXRhX3RydW5jYXRlKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIGludCAqaGFzX2lubGluZSkKIAlpZiAoSVNfRVJSKGhhbmRsZSkpCiAJCXJldHVy bjsKIAotCWRvd25fd3JpdGUoJkVYVDRfSShpbm9kZSktPnhhdHRyX3NlbSk7CisJZXh0NF93cml0 ZV9sb2NrX3hhdHRyKGlub2RlLCAmbm9fZXhwYW5kKTsKIAlpZiAoIWV4dDRfaGFzX2lubGluZV9k YXRhKGlub2RlKSkgewogCQkqaGFzX2lubGluZSA9IDA7CiAJCWV4dDRfam91cm5hbF9zdG9wKGhh bmRsZSk7CkBAIC0xOTQ3LDcgKzE5NTMsNyBAQCBvdXRfZXJyb3I6CiAJdXBfd3JpdGUoJkVYVDRf SShpbm9kZSktPmlfZGF0YV9zZW0pOwogb3V0OgogCWJyZWxzZShpcy5pbG9jLmJoKTsKLQl1cF93 cml0ZSgmRVhUNF9JKGlub2RlKS0+eGF0dHJfc2VtKTsKKwlleHQ0X3dyaXRlX3VubG9ja194YXR0 cihpbm9kZSwgJm5vX2V4cGFuZCk7CiAJa2ZyZWUodmFsdWUpOwogCWlmIChpbm9kZS0+aV9ubGlu aykKIAkJZXh0NF9vcnBoYW5fZGVsKGhhbmRsZSwgaW5vZGUpOwpAQCAtMTk2Myw3ICsxOTY5LDcg QEAgb3V0OgogCiBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5v ZGUpCiB7Ci0JaW50IGVycm9yLCBuZWVkZWRfYmxvY2tzOworCWludCBlcnJvciwgbmVlZGVkX2Js b2Nrcywgbm9fZXhwYW5kOwogCWhhbmRsZV90ICpoYW5kbGU7CiAJc3RydWN0IGV4dDRfaWxvYyBp bG9jOwogCkBAIC0xOTg1LDE1ICsxOTkxLDEwIEBAIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2Rh dGEoc3RydWN0IGlub2RlICppbm9kZSkKIAkJZ290byBvdXRfZnJlZTsKIAl9CiAKLQlkb3duX3dy aXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0cl9zZW0pOwotCWlmICghZXh0NF9oYXNfaW5saW5lX2Rh dGEoaW5vZGUpKSB7Ci0JCXVwX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0cl9zZW0pOwotCQln b3RvIG91dDsKLQl9Ci0KLQllcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2so aGFuZGxlLCBpbm9kZSwgJmlsb2MpOwotCXVwX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0cl9z ZW0pOwotb3V0OgorCWV4dDRfd3JpdGVfbG9ja194YXR0cihpbm9kZSwgJm5vX2V4cGFuZCk7CisJ aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkKKwkJZXJyb3IgPSBleHQ0X2NvbnZlcnRf aW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZSwgaW5vZGUsICZpbG9jKTsKKwlleHQ0X3dyaXRlX3Vu bG9ja194YXR0cihpbm9kZSwgJm5vX2V4cGFuZCk7CiAJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxl KTsKIG91dF9mcmVlOgogCWJyZWxzZShpbG9jLmJoKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5v ZGUuYyBiL2ZzL2V4dDQvaW5vZGUuYwppbmRleCA4OThlOTY1OWViZjEuLjc3MTlhMmE1MmM5NyAx MDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCisrKyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtMTEx OCw4ICsxMTE4LDExIEBAIHN0YXRpYyBpbnQgZXh0NF93cml0ZV9lbmQoc3RydWN0IGZpbGUgKmZp bGUsCiAJaWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkgewogCQlyZXQgPSBleHQ0X3dy aXRlX2lubGluZV9kYXRhX2VuZChpbm9kZSwgcG9zLCBsZW4sCiAJCQkJCQkgY29waWVkLCBwYWdl KTsKLQkJaWYgKHJldCA8IDApCisJCWlmIChyZXQgPCAwKSB7CisJCQl1bmxvY2tfcGFnZShwYWdl KTsKKwkJCXB1dF9wYWdlKHBhZ2UpOwogCQkJZ290byBlcnJvdXQ7CisJCX0KIAkJY29waWVkID0g cmV0OwogCX0gZWxzZQogCQljb3BpZWQgPSBibG9ja193cml0ZV9lbmQoZmlsZSwgbWFwcGluZywg cG9zLApAQCAtMTE2Niw2ICsxMTY5LDQwIEBAIGVycm91dDoKIAlyZXR1cm4gcmV0ID8gcmV0IDog Y29waWVkOwogfQogCisvKgorICogVGhpcyBpcyBhIHByaXZhdGUgdmVyc2lvbiBvZiBwYWdlX3pl cm9fbmV3X2J1ZmZlcnMoKSB3aGljaCBkb2Vzbid0CisgKiBzZXQgdGhlIGJ1ZmZlciB0byBiZSBk aXJ0eSwgc2luY2UgaW4gZGF0YT1qb3VybmFsbGVkIG1vZGUgd2UgbmVlZAorICogdG8gY2FsbCBl eHQ0X2hhbmRsZV9kaXJ0eV9tZXRhZGF0YSgpIGluc3RlYWQuCisgKi8KK3N0YXRpYyB2b2lkIGV4 dDRfam91cm5hbGxlZF96ZXJvX25ld19idWZmZXJzKGhhbmRsZV90ICpoYW5kbGUsCisJCQkJCSAg ICBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCQkJICAgIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRv KQoreworCXVuc2lnbmVkIGludCBibG9ja19zdGFydCA9IDAsIGJsb2NrX2VuZDsKKwlzdHJ1Y3Qg YnVmZmVyX2hlYWQgKmhlYWQsICpiaDsKKworCWJoID0gaGVhZCA9IHBhZ2VfYnVmZmVycyhwYWdl KTsKKwlkbyB7CisJCWJsb2NrX2VuZCA9IGJsb2NrX3N0YXJ0ICsgYmgtPmJfc2l6ZTsKKwkJaWYg KGJ1ZmZlcl9uZXcoYmgpKSB7CisJCQlpZiAoYmxvY2tfZW5kID4gZnJvbSAmJiBibG9ja19zdGFy dCA8IHRvKSB7CisJCQkJaWYgKCFQYWdlVXB0b2RhdGUocGFnZSkpIHsKKwkJCQkJdW5zaWduZWQg c3RhcnQsIHNpemU7CisKKwkJCQkJc3RhcnQgPSBtYXgoZnJvbSwgYmxvY2tfc3RhcnQpOworCQkJ CQlzaXplID0gbWluKHRvLCBibG9ja19lbmQpIC0gc3RhcnQ7CisKKwkJCQkJemVyb191c2VyKHBh Z2UsIHN0YXJ0LCBzaXplKTsKKwkJCQkJd3JpdGVfZW5kX2ZuKGhhbmRsZSwgYmgpOworCQkJCX0K KwkJCQljbGVhcl9idWZmZXJfbmV3KGJoKTsKKwkJCX0KKwkJfQorCQlibG9ja19zdGFydCA9IGJs b2NrX2VuZDsKKwkJYmggPSBiaC0+Yl90aGlzX3BhZ2U7CisJfSB3aGlsZSAoYmggIT0gaGVhZCk7 Cit9CisKIHN0YXRpYyBpbnQgZXh0NF9qb3VybmFsbGVkX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAq ZmlsZSwKIAkJCQkgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkJCSAgICAg bG9mZl90IHBvcywgdW5zaWduZWQgbGVuLCB1bnNpZ25lZCBjb3BpZWQsCkBAIC0xMTg0LDE4ICsx MjIxLDI1IEBAIHN0YXRpYyBpbnQgZXh0NF9qb3VybmFsbGVkX3dyaXRlX2VuZChzdHJ1Y3QgZmls ZSAqZmlsZSwKIAogCUJVR19PTighZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKSk7CiAKLQlpZiAo ZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKQotCQljb3BpZWQgPSBleHQ0X3dyaXRlX2lubGlu ZV9kYXRhX2VuZChpbm9kZSwgcG9zLCBsZW4sCi0JCQkJCQkgICAgY29waWVkLCBwYWdlKTsKLQll bHNlIHsKLQkJaWYgKGNvcGllZCA8IGxlbikgewotCQkJaWYgKCFQYWdlVXB0b2RhdGUocGFnZSkp Ci0JCQkJY29waWVkID0gMDsKLQkJCXBhZ2VfemVyb19uZXdfYnVmZmVycyhwYWdlLCBmcm9tK2Nv cGllZCwgdG8pOworCWlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHsKKwkJcmV0ID0g ZXh0NF93cml0ZV9pbmxpbmVfZGF0YV9lbmQoaW5vZGUsIHBvcywgbGVuLAorCQkJCQkJIGNvcGll ZCwgcGFnZSk7CisJCWlmIChyZXQgPCAwKSB7CisJCQl1bmxvY2tfcGFnZShwYWdlKTsKKwkJCXB1 dF9wYWdlKHBhZ2UpOworCQkJZ290byBlcnJvdXQ7CiAJCX0KLQorCQljb3BpZWQgPSByZXQ7CisJ fSBlbHNlIGlmICh1bmxpa2VseShjb3BpZWQgPCBsZW4pICYmICFQYWdlVXB0b2RhdGUocGFnZSkp IHsKKwkJY29waWVkID0gMDsKKwkJZXh0NF9qb3VybmFsbGVkX3plcm9fbmV3X2J1ZmZlcnMoaGFu ZGxlLCBwYWdlLCBmcm9tLCB0byk7CisJfSBlbHNlIHsKKwkJaWYgKHVubGlrZWx5KGNvcGllZCA8 IGxlbikpCisJCQlleHQ0X2pvdXJuYWxsZWRfemVyb19uZXdfYnVmZmVycyhoYW5kbGUsIHBhZ2Us CisJCQkJCQkJIGZyb20gKyBjb3BpZWQsIHRvKTsKIAkJcmV0ID0gZXh0NF93YWxrX3BhZ2VfYnVm ZmVycyhoYW5kbGUsIHBhZ2VfYnVmZmVycyhwYWdlKSwgZnJvbSwKLQkJCQkJICAgICB0bywgJnBh cnRpYWwsIHdyaXRlX2VuZF9mbik7CisJCQkJCSAgICAgZnJvbSArIGNvcGllZCwgJnBhcnRpYWws CisJCQkJCSAgICAgd3JpdGVfZW5kX2ZuKTsKIAkJaWYgKCFwYXJ0aWFsKQogCQkJU2V0UGFnZVVw dG9kYXRlKHBhZ2UpOwogCX0KQEAgLTEyMTgsNiArMTI2Miw3IEBAIHN0YXRpYyBpbnQgZXh0NF9q b3VybmFsbGVkX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJICovCiAJCWV4dDRfb3Jw aGFuX2FkZChoYW5kbGUsIGlub2RlKTsKIAorZXJyb3V0OgogCXJldDIgPSBleHQ0X2pvdXJuYWxf c3RvcChoYW5kbGUpOwogCWlmICghcmV0KQogCQlyZXQgPSByZXQyOwpAQCAtNTA2Miw4ICs1MTA3 LDYgQEAgaW50IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3Qg aW5vZGUgKmlub2RlKQogCQkJCQkJICAgICAgc2JpLT5zX3dhbnRfZXh0cmFfaXNpemUsCiAJCQkJ CQkgICAgICBpbG9jLCBoYW5kbGUpOwogCQkJaWYgKHJldCkgewotCQkJCWV4dDRfc2V0X2lub2Rl X3N0YXRlKGlub2RlLAotCQkJCQkJICAgICBFWFQ0X1NUQVRFX05PX0VYUEFORCk7CiAJCQkJaWYg KG1udF9jb3VudCAhPQogCQkJCQlsZTE2X3RvX2NwdShzYmktPnNfZXMtPnNfbW50X2NvdW50KSkg ewogCQkJCQlleHQ0X3dhcm5pbmcoaW5vZGUtPmlfc2IsCmRpZmYgLS1naXQgYS9mcy9leHQ0L21i YWxsb2MuYyBiL2ZzL2V4dDQvbWJhbGxvYy5jCmluZGV4IDQyNWRkNjE4YTllMi4uZTYzNGRiOWZh MzUxIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0L21iYWxsb2Mu YwpAQCAtMzA5MSw2ICszMDkxLDEzIEBAIGV4dDRfbWJfbm9ybWFsaXplX3JlcXVlc3Qoc3RydWN0 IGV4dDRfYWxsb2NhdGlvbl9jb250ZXh0ICphYywKIAlpZiAoYXItPnByaWdodCAmJiBzdGFydCAr IHNpemUgLSAxID49IGFyLT5scmlnaHQpCiAJCXNpemUgLT0gc3RhcnQgKyBzaXplIC0gYXItPmxy aWdodDsKIAorCS8qCisJICogVHJpbSBhbGxvY2F0aW9uIHJlcXVlc3QgZm9yIGZpbGVzeXN0ZW1z IHdpdGggYXJ0aWZpY2lhbGx5IHNtYWxsCisJICogZ3JvdXBzLgorCSAqLworCWlmIChzaXplID4g RVhUNF9CTE9DS1NfUEVSX0dST1VQKGFjLT5hY19zYikpCisJCXNpemUgPSBFWFQ0X0JMT0NLU19Q RVJfR1JPVVAoYWMtPmFjX3NiKTsKKwogCWVuZCA9IHN0YXJ0ICsgc2l6ZTsKIAogCS8qIGNoZWNr IHdlIGRvbid0IGNyb3NzIGFscmVhZHkgcHJlYWxsb2NhdGVkIGJsb2NrcyAqLwpkaWZmIC0tZ2l0 IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IGM2MDhkODA1ZjUwOS4u YWYwMjY3ZmJlY2Y0IDEwMDY0NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9z dXBlci5jCkBAIC03ODMsNiArNzgzLDcgQEAgc3RhdGljIHZvaWQgZXh0NF9wdXRfc3VwZXIoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYikKIHsKIAlzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0 X1NCKHNiKTsKIAlzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktPnNfZXM7CisJaW50 IGFib3J0ZWQgPSAwOwogCWludCBpLCBlcnI7CiAKIAlleHQ0X3VucmVnaXN0ZXJfbGlfcmVxdWVz dChzYik7CkBAIC03OTIsOSArNzkzLDEwIEBAIHN0YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJZGVzdHJveV93b3JrcXVldWUoc2JpLT5yc3ZfY29udmVy c2lvbl93cSk7CiAKIAlpZiAoc2JpLT5zX2pvdXJuYWwpIHsKKwkJYWJvcnRlZCA9IGlzX2pvdXJu YWxfYWJvcnRlZChzYmktPnNfam91cm5hbCk7CiAJCWVyciA9IGpiZDJfam91cm5hbF9kZXN0cm95 KHNiaS0+c19qb3VybmFsKTsKIAkJc2JpLT5zX2pvdXJuYWwgPSBOVUxMOwotCQlpZiAoZXJyIDwg MCkKKwkJaWYgKChlcnIgPCAwKSAmJiAhYWJvcnRlZCkKIAkJCWV4dDRfYWJvcnQoc2IsICJDb3Vs ZG4ndCBjbGVhbiB1cCB0aGUgam91cm5hbCIpOwogCX0KIApAQCAtODA1LDcgKzgwNyw3IEBAIHN0 YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJZXh0NF9l eHRfcmVsZWFzZShzYik7CiAJZXh0NF94YXR0cl9wdXRfc3VwZXIoc2IpOwogCi0JaWYgKCEoc2It PnNfZmxhZ3MgJiBNU19SRE9OTFkpKSB7CisJaWYgKCEoc2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkp ICYmICFhYm9ydGVkKSB7CiAJCUVYVDRfQ0xFQVJfSU5DT01QQVRfRkVBVFVSRShzYiwgRVhUNF9G RUFUVVJFX0lOQ09NUEFUX1JFQ09WRVIpOwogCQllcy0+c19zdGF0ZSA9IGNwdV90b19sZTE2KHNi aS0+c19tb3VudF9zdGF0ZSk7CiAJfQpAQCAtMzkxNCw3ICszOTE2LDcgQEAgc3RhdGljIGludCBl eHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNp bGVudCkKIAlkYl9jb3VudCA9IChzYmktPnNfZ3JvdXBzX2NvdW50ICsgRVhUNF9ERVNDX1BFUl9C TE9DSyhzYikgLSAxKSAvCiAJCSAgIEVYVDRfREVTQ19QRVJfQkxPQ0soc2IpOwogCWlmIChFWFQ0 X0hBU19JTkNPTVBBVF9GRUFUVVJFKHNiLEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9NRVRBX0JHKSkg ewotCQlpZiAobGUzMl90b19jcHUoZXMtPnNfZmlyc3RfbWV0YV9iZykgPj0gZGJfY291bnQpIHsK KwkJaWYgKGxlMzJfdG9fY3B1KGVzLT5zX2ZpcnN0X21ldGFfYmcpID4gZGJfY291bnQpIHsKIAkJ CWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCiAJCQkJICJmaXJzdCBtZXRhIGJsb2NrIGdyb3Vw IHRvbyBsYXJnZTogJXUgIgogCQkJCSAiKGdyb3VwIGRlc2NyaXB0b3IgYmxvY2sgY291bnQgJXUp IiwKQEAgLTQwMzYsNyArNDAzOCw4IEBAIHN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCiAJICovCiAJaWYgKCF0 ZXN0X29wdChzYiwgTk9MT0FEKSAmJgogCSAgICBFWFQ0X0hBU19DT01QQVRfRkVBVFVSRShzYiwg RVhUNF9GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTCkpIHsKLQkJaWYgKGV4dDRfbG9hZF9qb3Vy bmFsKHNiLCBlcywgam91cm5hbF9kZXZudW0pKQorCQllcnIgPSBleHQ0X2xvYWRfam91cm5hbChz YiwgZXMsIGpvdXJuYWxfZGV2bnVtKTsKKwkJaWYgKGVycikKIAkJCWdvdG8gZmFpbGVkX21vdW50 MzsKIAl9IGVsc2UgaWYgKHRlc3Rfb3B0KHNiLCBOT0xPQUQpICYmICEoc2ItPnNfZmxhZ3MgJiBN U19SRE9OTFkpICYmCiAJICAgICAgRVhUNF9IQVNfSU5DT01QQVRfRkVBVFVSRShzYiwgRVhUNF9G RUFUVVJFX0lOQ09NUEFUX1JFQ09WRVIpKSB7CmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMg Yi9mcy9leHQ0L3hhdHRyLmMKaW5kZXggMmQxZTU4MDM4MzlmLi5mZjhmZDg1ZWRjZmUgMTAwNjQ0 Ci0tLSBhL2ZzL2V4dDQveGF0dHIuYworKysgYi9mcy9leHQ0L3hhdHRyLmMKQEAgLTExMDYsMTYg KzExMDYsMTQgQEAgZXh0NF94YXR0cl9zZXRfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCBuYW1lX2luZGV4LAogCXN0cnVjdCBleHQ0X3hhdHRyX2Jsb2Nr X2ZpbmQgYnMgPSB7CiAJCS5zID0geyAubm90X2ZvdW5kID0gLUVOT0RBVEEsIH0sCiAJfTsKLQl1 bnNpZ25lZCBsb25nIG5vX2V4cGFuZDsKKwlpbnQgbm9fZXhwYW5kOwogCWludCBlcnJvcjsKIAog CWlmICghbmFtZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJaWYgKHN0cmxlbihuYW1lKSA+IDI1NSkK IAkJcmV0dXJuIC1FUkFOR0U7Ci0JZG93bl93cml0ZSgmRVhUNF9JKGlub2RlKS0+eGF0dHJfc2Vt KTsKLQlub19leHBhbmQgPSBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVf Tk9fRVhQQU5EKTsKLQlleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9OT19F WFBBTkQpOworCWV4dDRfd3JpdGVfbG9ja194YXR0cihpbm9kZSwgJm5vX2V4cGFuZCk7CiAKIAll cnJvciA9IGV4dDRfcmVzZXJ2ZV9pbm9kZV93cml0ZShoYW5kbGUsIGlub2RlLCAmaXMuaWxvYyk7 CiAJaWYgKGVycm9yKQpAQCAtMTE3Niw3ICsxMTc0LDcgQEAgZXh0NF94YXR0cl9zZXRfaGFuZGxl KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBuYW1lX2luZGV4LAog CQlleHQ0X3hhdHRyX3VwZGF0ZV9zdXBlcl9ibG9jayhoYW5kbGUsIGlub2RlLT5pX3NiKTsKIAkJ aW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CiAJCWlmICghdmFsdWUp Ci0JCQlleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX05PX0VYUEFORCk7 CisJCQlub19leHBhbmQgPSAwOwogCQllcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRs ZSwgaW5vZGUsICZpcy5pbG9jKTsKIAkJLyoKIAkJICogVGhlIGJoIGlzIGNvbnN1bWVkIGJ5IGV4 dDRfbWFya19pbG9jX2RpcnR5LCBldmVuIHdpdGgKQEAgLTExOTAsOSArMTE4OCw3IEBAIGV4dDRf eGF0dHJfc2V0X2hhbmRsZShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBp bnQgbmFtZV9pbmRleCwKIGNsZWFudXA6CiAJYnJlbHNlKGlzLmlsb2MuYmgpOwogCWJyZWxzZShi cy5iaCk7Ci0JaWYgKG5vX2V4cGFuZCA9PSAwKQotCQlleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlu b2RlLCBFWFQ0X1NUQVRFX05PX0VYUEFORCk7Ci0JdXBfd3JpdGUoJkVYVDRfSShpbm9kZSktPnhh dHRyX3NlbSk7CisJZXh0NF93cml0ZV91bmxvY2tfeGF0dHIoaW5vZGUsICZub19leHBhbmQpOwog CXJldHVybiBlcnJvcjsKIH0KIApAQCAtMTI3NSwxMyArMTI3MSwxNCBAQCBpbnQgZXh0NF9leHBh bmRfZXh0cmFfaXNpemVfZWEoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5ld19leHRyYV9pc2l6 ZSwKIAl2b2lkICpiYXNlLCAqc3RhcnQsICplbmQ7CiAJaW50IGV4dHJhX2lzaXplID0gMCwgZXJy b3IgPSAwLCB0cmllZF9taW5fZXh0cmFfaXNpemUgPSAwOwogCWludCBzX21pbl9leHRyYV9pc2l6 ZSA9IGxlMTZfdG9fY3B1KEVYVDRfU0IoaW5vZGUtPmlfc2IpLT5zX2VzLT5zX21pbl9leHRyYV9p c2l6ZSk7CisJaW50IG5vX2V4cGFuZDsKIAotCWRvd25fd3JpdGUoJkVYVDRfSShpbm9kZSktPnhh dHRyX3NlbSk7Ci1yZXRyeToKLQlpZiAoRVhUNF9JKGlub2RlKS0+aV9leHRyYV9pc2l6ZSA+PSBu ZXdfZXh0cmFfaXNpemUpIHsKLQkJdXBfd3JpdGUoJkVYVDRfSShpbm9kZSktPnhhdHRyX3NlbSk7 CisJaWYgKGV4dDRfd3JpdGVfdHJ5bG9ja194YXR0cihpbm9kZSwgJm5vX2V4cGFuZCkgPT0gMCkK IAkJcmV0dXJuIDA7Ci0JfQorCityZXRyeToKKwlpZiAoRVhUNF9JKGlub2RlKS0+aV9leHRyYV9p c2l6ZSA+PSBuZXdfZXh0cmFfaXNpemUpCisJCWdvdG8gb3V0OwogCiAJaGVhZGVyID0gSUhEUihp bm9kZSwgcmF3X2lub2RlKTsKIAllbnRyeSA9IElGSVJTVChoZWFkZXIpOwpAQCAtMTMwNiw4ICsx MzAzLDcgQEAgcmV0cnk6CiAJCQkJKHZvaWQgKiloZWFkZXIsIHRvdGFsX2lubywKIAkJCQlpbm9k ZS0+aV9zYi0+c19ibG9ja3NpemUpOwogCQlFWFQ0X0koaW5vZGUpLT5pX2V4dHJhX2lzaXplID0g bmV3X2V4dHJhX2lzaXplOwotCQllcnJvciA9IDA7Ci0JCWdvdG8gY2xlYW51cDsKKwkJZ290byBv dXQ7CiAJfQogCiAJLyoKQEAgLTE0NjcsNyArMTQ2Myw4IEBAIHJldHJ5OgogCQlrZnJlZShicyk7 CiAJfQogCWJyZWxzZShiaCk7Ci0JdXBfd3JpdGUoJkVYVDRfSShpbm9kZSktPnhhdHRyX3NlbSk7 CitvdXQ6CisJZXh0NF93cml0ZV91bmxvY2tfeGF0dHIoaW5vZGUsICZub19leHBhbmQpOwogCXJl dHVybiAwOwogCiBjbGVhbnVwOgpAQCAtMTQ3OCw3ICsxNDc1LDExIEBAIGNsZWFudXA6CiAJa2Zy ZWUoaXMpOwogCWtmcmVlKGJzKTsKIAlicmVsc2UoYmgpOwotCXVwX3dyaXRlKCZFWFQ0X0koaW5v ZGUpLT54YXR0cl9zZW0pOworCS8qCisJICogSW5vZGUgc2l6ZSBleHBhbnNpb24gZmFpbGVkOyBk b24ndCB0cnkgYWdhaW4KKwkgKi8KKwlub19leHBhbmQgPSAxOworCWV4dDRfd3JpdGVfdW5sb2Nr X3hhdHRyKGlub2RlLCAmbm9fZXhwYW5kKTsKIAlyZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdp dCBhL2ZzL2V4dDQveGF0dHIuaCBiL2ZzL2V4dDQveGF0dHIuaAppbmRleCAyOWJlZGY1NTg5ZjYu LjJlOGYyM2U3OGJjMiAxMDA2NDQKLS0tIGEvZnMvZXh0NC94YXR0ci5oCisrKyBiL2ZzL2V4dDQv eGF0dHIuaApAQCAtOTgsNiArOTgsMzggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB4YXR0cl9oYW5k bGVyIGV4dDRfeGF0dHJfdXNlcl9oYW5kbGVyOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCB4YXR0cl9o YW5kbGVyIGV4dDRfeGF0dHJfdHJ1c3RlZF9oYW5kbGVyOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCB4 YXR0cl9oYW5kbGVyIGV4dDRfeGF0dHJfc2VjdXJpdHlfaGFuZGxlcjsKIAorLyoKKyAqIFRoZSBF WFQ0X1NUQVRFX05PX0VYUEFORCBpcyBvdmVybG9hZGVkIGFuZCB1c2VkIGZvciB0d28gcHVycG9z ZXMuCisgKiBUaGUgZmlyc3QgaXMgdG8gc2lnbmFsIHRoYXQgdGhlcmUgdGhlIGlubGluZSB4YXR0 cnMgYW5kIGRhdGEgYXJlCisgKiB0YWtpbmcgdXAgc28gbXVjaCBzcGFjZSB0aGF0IHdlIG1pZ2h0 IGFzIHdlbGwgbm90IGtlZXAgdHJ5aW5nIHRvCisgKiBleHBhbmQgaXQuICBUaGUgc2Vjb25kIGlz IHRoYXQgeGF0dHJfc2VtIGlzIHRha2VuIGZvciB3cml0aW5nLCBzbworICogd2Ugc2hvdWxkbid0 IHRyeSB0byByZWN1cnNlIGludG8gdGhlIGlub2RlIGV4cGFuc2lvbi4gIEZvciB0aGlzCisgKiBz ZWNvbmQgY2FzZSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSB0YWtlIHNhdmUgYW5kIHJl c3RvcmUgdGhlCisgKiBOT19FWFBBTkQgc3RhdGUgZmxhZyBhcHByb3ByaWF0ZWx5LgorICovCitz dGF0aWMgaW5saW5lIHZvaWQgZXh0NF93cml0ZV9sb2NrX3hhdHRyKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGludCAqc2F2ZSkKK3sKKwlkb3duX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT54YXR0cl9zZW0p OworCSpzYXZlID0gZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX05PX0VY UEFORCk7CisJZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTk9fRVhQQU5E KTsKK30KKworc3RhdGljIGlubGluZSBpbnQgZXh0NF93cml0ZV90cnlsb2NrX3hhdHRyKHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCAqc2F2ZSkKK3sKKwlpZiAoZG93bl93cml0ZV90cnlsb2NrKCZF WFQ0X0koaW5vZGUpLT54YXR0cl9zZW0pID09IDApCisJCXJldHVybiAwOworCSpzYXZlID0gZXh0 NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX05PX0VYUEFORCk7CisJZXh0NF9z ZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTk9fRVhQQU5EKTsKKwlyZXR1cm4gMTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGludCAqc2F2ZSkKK3sKKwlpZiAoKnNhdmUgPT0gMCkKKwkJZXh0NF9jbGVh cl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9OT19FWFBBTkQpOworCXVwX3dyaXRlKCZF WFQ0X0koaW5vZGUpLT54YXR0cl9zZW0pOworfQorCiBleHRlcm4gc3NpemVfdCBleHQ0X2xpc3R4 YXR0cihzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgc2l6ZV90KTsKIAogZXh0ZXJuIGludCBleHQ0 X3hhdHRyX2dldChzdHJ1Y3QgaW5vZGUgKiwgaW50LCBjb25zdCBjaGFyICosIHZvaWQgKiwgc2l6 ZV90KTsKZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKaW5kZXgg NThkZjk3ZTE3NGQwLi4yMmU2MzA3YjI1ZTIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZjJmcy5oCisr KyBiL2ZzL2YyZnMvZjJmcy5oCkBAIC00ODksNiArNDg5LDkgQEAgc3RydWN0IGYyZnNfc2JfaW5m byB7CiAJc3RydWN0IGYyZnNfZ2Nfa3RocmVhZAkqZ2NfdGhyZWFkOwkvKiBHQyB0aHJlYWQgKi8K IAl1bnNpZ25lZCBpbnQgY3VyX3ZpY3RpbV9zZWM7CQkvKiBjdXJyZW50IHZpY3RpbSBzZWN0aW9u IG51bSAqLwogCisJLyogdGhyZXNob2xkIGZvciBjb252ZXJ0aW5nIGJnIHZpY3RpbXMgZm9yIGZn ICovCisJdTY0IGZnZ2NfdGhyZXNob2xkOworCiAJLyogbWF4aW11bSAjIG9mIHRyaWFscyB0byBm aW5kIGEgdmljdGltIHNlZ21lbnQgZm9yIFNTUiBhbmQgR0MgKi8KIAl1bnNpZ25lZCBpbnQgbWF4 X3ZpY3RpbV9zZWFyY2g7CiAKZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZ2MuYyBiL2ZzL2YyZnMvZ2Mu YwppbmRleCBiOTBkYmU1NTQwM2EuLjYyNjc4MTdkZmU4NyAxMDA2NDQKLS0tIGEvZnMvZjJmcy9n Yy5jCisrKyBiL2ZzL2YyZnMvZ2MuYwpAQCAtMTYzLDcgKzE2Myw4IEBAIHN0YXRpYyB2b2lkIHNl bGVjdF9wb2xpY3koc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgZ2NfdHlwZSwKIAkJcC0+ b2ZzX3VuaXQgPSBzYmktPnNlZ3NfcGVyX3NlYzsKIAl9CiAKLQlpZiAocC0+bWF4X3NlYXJjaCA+ IHNiaS0+bWF4X3ZpY3RpbV9zZWFyY2gpCisJLyogd2UgbmVlZCB0byBjaGVjayBldmVyeSBkaXJ0 eSBzZWdtZW50cyBpbiB0aGUgRkdfR0MgY2FzZSAqLworCWlmIChnY190eXBlICE9IEZHX0dDICYm IHAtPm1heF9zZWFyY2ggPiBzYmktPm1heF92aWN0aW1fc2VhcmNoKQogCQlwLT5tYXhfc2VhcmNo ID0gc2JpLT5tYXhfdmljdGltX3NlYXJjaDsKIAogCXAtPm9mZnNldCA9IHNiaS0+bGFzdF92aWN0 aW1bcC0+Z2NfbW9kZV07CkBAIC0xODYsNyArMTg3LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBn ZXRfbWF4X2Nvc3Qoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAogc3RhdGljIHVuc2lnbmVkIGlu dCBjaGVja19iZ192aWN0aW1zKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKIHsKIAlzdHJ1Y3Qg ZGlydHlfc2VnbGlzdF9pbmZvICpkaXJ0eV9pID0gRElSVFlfSShzYmkpOwotCXVuc2lnbmVkIGlu dCBoaW50ID0gMDsKIAl1bnNpZ25lZCBpbnQgc2Vjbm87CiAKIAkvKgpAQCAtMTk0LDExICsxOTQs MTMgQEAgc3RhdGljIHVuc2lnbmVkIGludCBjaGVja19iZ192aWN0aW1zKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSkKIAkgKiBzZWxlY3RlZCBieSBiYWNrZ3JvdW5kIEdDIGJlZm9yZS4KIAkgKiBU aG9zZSBzZWdtZW50cyBndWFyYW50ZWUgdGhleSBoYXZlIHNtYWxsIHZhbGlkIGJsb2Nrcy4KIAkg Ki8KLW5leHQ6Ci0Jc2Vjbm8gPSBmaW5kX25leHRfYml0KGRpcnR5X2ktPnZpY3RpbV9zZWNtYXAs IFRPVEFMX1NFQ1Moc2JpKSwgaGludCsrKTsKLQlpZiAoc2Vjbm8gPCBUT1RBTF9TRUNTKHNiaSkp IHsKKwlmb3JfZWFjaF9zZXRfYml0KHNlY25vLCBkaXJ0eV9pLT52aWN0aW1fc2VjbWFwLCBUT1RB TF9TRUNTKHNiaSkpIHsKIAkJaWYgKHNlY191c2FnZV9jaGVjayhzYmksIHNlY25vKSkKLQkJCWdv dG8gbmV4dDsKKwkJCWNvbnRpbnVlOworCisJCWlmIChub19mZ2djX2NhbmRpZGF0ZShzYmksIHNl Y25vKSkKKwkJCWNvbnRpbnVlOworCiAJCWNsZWFyX2JpdChzZWNubywgZGlydHlfaS0+dmljdGlt X3NlY21hcCk7CiAJCXJldHVybiBzZWNubyAqIHNiaS0+c2Vnc19wZXJfc2VjOwogCX0KQEAgLTMw NSw2ICszMDcsOSBAQCBzdGF0aWMgaW50IGdldF92aWN0aW1fYnlfZGVmYXVsdChzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksCiAJCQljb250aW51ZTsKIAkJaWYgKGdjX3R5cGUgPT0gQkdfR0MgJiYg dGVzdF9iaXQoc2Vjbm8sIGRpcnR5X2ktPnZpY3RpbV9zZWNtYXApKQogCQkJY29udGludWU7CisJ CWlmIChnY190eXBlID09IEZHX0dDICYmIHAuYWxsb2NfbW9kZSA9PSBMRlMgJiYKKwkJCQkJbm9f ZmdnY19jYW5kaWRhdGUoc2JpLCBzZWNubykpCisJCQljb250aW51ZTsKIAogCQljb3N0ID0gZ2V0 X2djX2Nvc3Qoc2JpLCBzZWdubywgJnApOwogCkBAIC03MzYsNyArNzQxLDE4IEBAIHN0b3A6CiAK IHZvaWQgYnVpbGRfZ2NfbWFuYWdlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCiB7CisJdTY0 IG1haW5fY291bnQsIHJlc3ZfY291bnQsIG92cF9jb3VudCwgYmxvY2tzX3Blcl9zZWM7CisKIAlE SVJUWV9JKHNiaSktPnZfb3BzID0gJmRlZmF1bHRfdl9vcHM7CisKKwkvKiB0aHJlc2hvbGQgb2Yg IyBvZiB2YWxpZCBibG9ja3MgaW4gYSBzZWN0aW9uIGZvciB2aWN0aW1zIG9mIEZHX0dDICovCisJ bWFpbl9jb3VudCA9IFNNX0koc2JpKS0+bWFpbl9zZWdtZW50cyA8PCBzYmktPmxvZ19ibG9ja3Nf cGVyX3NlZzsKKwlyZXN2X2NvdW50ID0gU01fSShzYmkpLT5yZXNlcnZlZF9zZWdtZW50cyA8PCBz YmktPmxvZ19ibG9ja3NfcGVyX3NlZzsKKwlvdnBfY291bnQgPSBTTV9JKHNiaSktPm92cF9zZWdt ZW50cyA8PCBzYmktPmxvZ19ibG9ja3NfcGVyX3NlZzsKKwlibG9ja3NfcGVyX3NlYyA9IHNiaS0+ YmxvY2tzX3Blcl9zZWcgKiBzYmktPnNlZ3NfcGVyX3NlYzsKKworCXNiaS0+ZmdnY190aHJlc2hv bGQgPSBkaXZfdTY0KChtYWluX2NvdW50IC0gb3ZwX2NvdW50KSAqIGJsb2Nrc19wZXJfc2VjLAor CQkJCQkobWFpbl9jb3VudCAtIHJlc3ZfY291bnQpKTsKIH0KIAogaW50IF9faW5pdCBjcmVhdGVf Z2NfY2FjaGVzKHZvaWQpCmRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2YyZnMv c2VnbWVudC5jCmluZGV4IGQwNDYxM2RmNzEwYS4uMDBkZWM4ODQwMDY4IDEwMDY0NAotLS0gYS9m cy9mMmZzL3NlZ21lbnQuYworKysgYi9mcy9mMmZzL3NlZ21lbnQuYwpAQCAtNDM3LDE3ICs0Mzcs MTIgQEAgc3RhdGljIHZvaWQgYWRkX2Rpc2NhcmRfYWRkcnMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLAogc3RhdGljIHZvaWQgc2V0X3ByZWZyZWVfYXNfZnJlZV9zZWdtZW50cyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmkpCiB7CiAJc3RydWN0IGRpcnR5X3NlZ2xpc3RfaW5mbyAqZGlydHlfaSA9 IERJUlRZX0koc2JpKTsKLQl1bnNpZ25lZCBpbnQgc2Vnbm8gPSAtMTsKKwl1bnNpZ25lZCBpbnQg c2Vnbm87CiAJdW5zaWduZWQgaW50IHRvdGFsX3NlZ3MgPSBUT1RBTF9TRUdTKHNiaSk7CiAKIAlt dXRleF9sb2NrKCZkaXJ0eV9pLT5zZWdsaXN0X2xvY2spOwotCXdoaWxlICgxKSB7Ci0JCXNlZ25v ID0gZmluZF9uZXh0X2JpdChkaXJ0eV9pLT5kaXJ0eV9zZWdtYXBbUFJFXSwgdG90YWxfc2VncywK LQkJCQlzZWdubyArIDEpOwotCQlpZiAoc2Vnbm8gPj0gdG90YWxfc2VncykKLQkJCWJyZWFrOwor CWZvcl9lYWNoX3NldF9iaXQoc2Vnbm8sIGRpcnR5X2ktPmRpcnR5X3NlZ21hcFtQUkVdLCB0b3Rh bF9zZWdzKQogCQlfX3NldF90ZXN0X2FuZF9mcmVlKHNiaSwgc2Vnbm8pOwotCX0KIAltdXRleF91 bmxvY2soJmRpcnR5X2ktPnNlZ2xpc3RfbG9jayk7CiB9CiAKQEAgLTE1MzIsNyArMTUyNyw3IEBA IHZvaWQgZmx1c2hfc2l0X2VudHJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQogCXN0cnVj dCBwYWdlICpwYWdlID0gTlVMTDsKIAlzdHJ1Y3QgZjJmc19zaXRfYmxvY2sgKnJhd19zaXQgPSBO VUxMOwogCXVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVuZCA9IDA7Ci0JdW5zaWduZWQgaW50IHNl Z25vID0gLTE7CisJdW5zaWduZWQgaW50IHNlZ25vOwogCWJvb2wgZmx1c2hlZDsKIAogCW11dGV4 X2xvY2soJmN1cnNlZy0+Y3Vyc2VnX211dGV4KTsKQEAgLTE1NDQsNyArMTUzOSw3IEBAIHZvaWQg Zmx1c2hfc2l0X2VudHJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQogCSAqLwogCWZsdXNo ZWQgPSBmbHVzaF9zaXRzX2luX2pvdXJuYWwoc2JpKTsKIAotCXdoaWxlICgoc2Vnbm8gPSBmaW5k X25leHRfYml0KGJpdG1hcCwgbnNlZ3MsIHNlZ25vICsgMSkpIDwgbnNlZ3MpIHsKKwlmb3JfZWFj aF9zZXRfYml0KHNlZ25vLCBiaXRtYXAsIG5zZWdzKSB7CiAJCXN0cnVjdCBzZWdfZW50cnkgKnNl ID0gZ2V0X3NlZ19lbnRyeShzYmksIHNlZ25vKTsKIAkJaW50IHNpdF9vZmZzZXQsIG9mZnNldDsK IApkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmggYi9mcy9mMmZzL3NlZ21lbnQuaAppbmRl eCA3MDkxMjA0NjgwZjQuLjY0ZjJkODM5NThiYSAxMDA2NDQKLS0tIGEvZnMvZjJmcy9zZWdtZW50 LmgKKysrIGIvZnMvZjJmcy9zZWdtZW50LmgKQEAgLTY1MSw2ICs2NTEsMTUgQEAgc3RhdGljIGlu bGluZSBibG9ja190IHN1bV9ibGtfYWRkcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBi YXNlLCBpbnQgdHlwZSkKIAkJCQktIChiYXNlICsgMSkgKyB0eXBlOwogfQogCitzdGF0aWMgaW5s aW5lIGJvb2wgbm9fZmdnY19jYW5kaWRhdGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAorCQkJ CQkJdW5zaWduZWQgaW50IHNlY25vKQoreworCWlmIChnZXRfdmFsaWRfYmxvY2tzKHNiaSwgc2Vj bm8sIHNiaS0+c2Vnc19wZXJfc2VjKSA+PQorCQkJCQkJc2JpLT5mZ2djX3RocmVzaG9sZCkKKwkJ cmV0dXJuIHRydWU7CisJcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2Vj X3VzYWdlX2NoZWNrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQgaW50IHNlY25v KQogewogCWlmIChJU19DVVJTRUMoc2JpLCBzZWNubykgfHwgKHNiaS0+Y3VyX3ZpY3RpbV9zZWMg PT0gc2Vjbm8pKQpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxlLmMgYi9mcy9mdXNlL2ZpbGUuYwpp bmRleCA0ZTljZmJjNDUzYzcuLmQ1ODNjOTc2ZmZmMiAxMDA2NDQKLS0tIGEvZnMvZnVzZS9maWxl LmMKKysrIGIvZnMvZnVzZS9maWxlLmMKQEAgLTEzNiw2ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBm dXNlX2ZpbGVfcHV0KHN0cnVjdCBmdXNlX2ZpbGUgKmZmLCBib29sIHN5bmMpCiAJCQlwYXRoX3B1 dCgmcmVxLT5taXNjLnJlbGVhc2UucGF0aCk7CiAJCQlmdXNlX3B1dF9yZXF1ZXN0KGZmLT5mYywg cmVxKTsKIAkJfSBlbHNlIGlmIChzeW5jKSB7CisJCQlyZXEtPmZvcmNlID0gMTsKIAkJCXJlcS0+ YmFja2dyb3VuZCA9IDA7CiAJCQlmdXNlX3JlcXVlc3Rfc2VuZChmZi0+ZmMsIHJlcSk7CiAJCQlw YXRoX3B1dCgmcmVxLT5taXNjLnJlbGVhc2UucGF0aCk7CmRpZmYgLS1naXQgYS9mcy9qYmQyL3Ry YW5zYWN0aW9uLmMgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKaW5kZXggZjE1NjM5MDExM2RiLi4z YTVjMjlhNTczM2QgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYworKysgYi9mcy9q YmQyL3RyYW5zYWN0aW9uLmMKQEAgLTE3ODQsNyArMTc4NCw5IEBAIHN0YXRpYyB2b2lkIF9famJk Ml9qb3VybmFsX3RlbXBfdW5saW5rX2J1ZmZlcihzdHJ1Y3Qgam91cm5hbF9oZWFkICpqaCkKIAog CV9fYmxpc3RfZGVsX2J1ZmZlcihsaXN0LCBqaCk7CiAJamgtPmJfamxpc3QgPSBCSl9Ob25lOwot CWlmICh0ZXN0X2NsZWFyX2J1ZmZlcl9qYmRkaXJ0eShiaCkpCisJaWYgKHRyYW5zYWN0aW9uICYm IGlzX2pvdXJuYWxfYWJvcnRlZCh0cmFuc2FjdGlvbi0+dF9qb3VybmFsKSkKKwkJY2xlYXJfYnVm ZmVyX2piZGRpcnR5KGJoKTsKKwllbHNlIGlmICh0ZXN0X2NsZWFyX2J1ZmZlcl9qYmRkaXJ0eShi aCkpCiAJCW1hcmtfYnVmZmVyX2RpcnR5KGJoKTsJLyogRXhwb3NlIGl0IHRvIHRoZSBWTSAqLwog fQogCmRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHByb2MuYyBiL2ZzL25mcy9uZnM0cHJvYy5jCmlu ZGV4IGUwN2ZiZjk3YTkzYi4uNjY2ZWFkYjA0NDdjIDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzNHBy b2MuYworKysgYi9mcy9uZnMvbmZzNHByb2MuYwpAQCAtMjIzMyw2ICsyMjMzLDcgQEAgc3RhdGlj IGludCBfbmZzNF9vcGVuX2FuZF9nZXRfc3RhdGUoc3RydWN0IG5mczRfb3BlbmRhdGEgKm9wZW5k YXRhLAogCXJldCA9IFBUUl9FUlIoc3RhdGUpOwogCWlmIChJU19FUlIoc3RhdGUpKQogCQlnb3Rv IG91dDsKKwljdHgtPnN0YXRlID0gc3RhdGU7CiAJaWYgKHNlcnZlci0+Y2FwcyAmIE5GU19DQVBf UE9TSVhfTE9DSykKIAkJc2V0X2JpdChORlNfU1RBVEVfUE9TSVhfTE9DS1MsICZzdGF0ZS0+Zmxh Z3MpOwogCkBAIC0yMjU1LDcgKzIyNTYsNiBAQCBzdGF0aWMgaW50IF9uZnM0X29wZW5fYW5kX2dl dF9zdGF0ZShzdHJ1Y3QgbmZzNF9vcGVuZGF0YSAqb3BlbmRhdGEsCiAJaWYgKHJldCAhPSAwKQog CQlnb3RvIG91dDsKIAotCWN0eC0+c3RhdGUgPSBzdGF0ZTsKIAlpZiAoZGVudHJ5LT5kX2lub2Rl ID09IHN0YXRlLT5pbm9kZSkgewogCQluZnNfaW5vZGVfYXR0YWNoX29wZW5fY29udGV4dChjdHgp OwogCQlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmc3AtPnNvX3JlY2xhaW1fc2VxY291bnQsIHNl cSkpCkBAIC00NDQ0LDcgKzQ0NDQsNyBAQCBvdXQ6CiAgKi8KIHN0YXRpYyBzc2l6ZV90IF9fbmZz NF9nZXRfYWNsX3VuY2FjaGVkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmJ1Ziwgc2l6ZV90 IGJ1ZmxlbikKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZXNbTkZTNEFDTF9NQVhQQUdFU10gPSB7TlVM TCwgfTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZXNbTkZTNEFDTF9NQVhQQUdFUyArIDFdID0ge05VTEws IH07CiAJc3RydWN0IG5mc19nZXRhY2xhcmdzIGFyZ3MgPSB7CiAJCS5maCA9IE5GU19GSChpbm9k ZSksCiAJCS5hY2xfcGFnZXMgPSBwYWdlcywKQEAgLTQ0NTgsMTMgKzQ0NTgsOSBAQCBzdGF0aWMg c3NpemVfdCBfX25mczRfZ2V0X2FjbF91bmNhY2hlZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lk ICpidWYsIHNpemVfdCBidQogCQkucnBjX2FyZ3AgPSAmYXJncywKIAkJLnJwY19yZXNwID0gJnJl cywKIAl9OwotCXVuc2lnbmVkIGludCBucGFnZXMgPSBESVZfUk9VTkRfVVAoYnVmbGVuLCBQQUdF X1NJWkUpOworCXVuc2lnbmVkIGludCBucGFnZXMgPSBESVZfUk9VTkRfVVAoYnVmbGVuLCBQQUdF X1NJWkUpICsgMTsKIAlpbnQgcmV0ID0gLUVOT01FTSwgaTsKIAotCS8qIEFzIGxvbmcgYXMgd2Un cmUgZG9pbmcgYSByb3VuZCB0cmlwIHRvIHRoZSBzZXJ2ZXIgYW55d2F5LAotCSAqIGxldCdzIGJl IHByZXBhcmVkIGZvciBhIHBhZ2Ugb2YgYWNsIGRhdGEuICovCi0JaWYgKG5wYWdlcyA9PSAwKQot CQlucGFnZXMgPSAxOwogCWlmIChucGFnZXMgPiBBUlJBWV9TSVpFKHBhZ2VzKSkKIAkJcmV0dXJu IC1FUkFOR0U7CiAKZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0eGRyLmMgYi9mcy9uZnMvbmZzNHhk ci5jCmluZGV4IDkzOWFlNjA2Y2ZhNC4uZGU2ZDQ3M2VhNjQ1IDEwMDY0NAotLS0gYS9mcy9uZnMv bmZzNHhkci5jCisrKyBiL2ZzL25mcy9uZnM0eGRyLmMKQEAgLTE2NSw4ICsxNjUsMTAgQEAgc3Rh dGljIGludCBuZnM0X3N0YXRfdG9fZXJybm8oaW50KTsKIAkJCQlvcGVuX293bmVyX2lkX21heHN6 ICsgXAogCQkJCWVuY29kZV9vcGVudHlwZV9tYXhzeiArIFwKIAkJCQllbmNvZGVfY2xhaW1fbnVs bF9tYXhzeikKKyNkZWZpbmUgZGVjb2RlX3NwYWNlX2xpbWl0X21heHN6CSgzKQogI2RlZmluZSBk ZWNvZGVfYWNlX21heHN6CSgzICsgbmZzNF9vd25lcl9tYXhzeikKICNkZWZpbmUgZGVjb2RlX2Rl bGVnYXRpb25fbWF4c3oJKDEgKyBkZWNvZGVfc3RhdGVpZF9tYXhzeiArIDEgKyBcCisJCQkJZGVj b2RlX3NwYWNlX2xpbWl0X21heHN6ICsgXAogCQkJCWRlY29kZV9hY2VfbWF4c3opCiAjZGVmaW5l IGRlY29kZV9jaGFuZ2VfaW5mb19tYXhzegkoNSkKICNkZWZpbmUgZGVjb2RlX29wZW5fbWF4c3oJ KG9wX2RlY29kZV9oZHJfbWF4c3ogKyBcCkBAIC0yNTAyLDcgKzI1MDQsNyBAQCBzdGF0aWMgdm9p ZCBuZnM0X3hkcl9lbmNfZ2V0YWNsKHN0cnVjdCBycGNfcnFzdCAqcmVxLCBzdHJ1Y3QgeGRyX3N0 cmVhbSAqeGRyLAogCWVuY29kZV9jb21wb3VuZF9oZHIoeGRyLCByZXEsICZoZHIpOwogCWVuY29k ZV9zZXF1ZW5jZSh4ZHIsICZhcmdzLT5zZXFfYXJncywgJmhkcik7CiAJZW5jb2RlX3B1dGZoKHhk ciwgYXJncy0+ZmgsICZoZHIpOwotCXJlcGxlbiA9IGhkci5yZXBsZW4gKyBvcF9kZWNvZGVfaGRy X21heHN6ICsgMTsKKwlyZXBsZW4gPSBoZHIucmVwbGVuICsgb3BfZGVjb2RlX2hkcl9tYXhzejsK IAllbmNvZGVfZ2V0YXR0cl90d28oeGRyLCBGQVRUUjRfV09SRDBfQUNMLCAwLCAmaGRyKTsKIAog CXhkcl9pbmxpbmVfcGFnZXMoJnJlcS0+cnFfcmN2X2J1ZiwgcmVwbGVuIDw8IDIsCmRpZmYgLS1n aXQgYS9mcy9uZnNkL25mczN4ZHIuYyBiL2ZzL25mc2QvbmZzM3hkci5jCmluZGV4IGU2YzAxZTgw MzI1ZS4uZDlmYTg1ZWJjOGFjIDEwMDY0NAotLS0gYS9mcy9uZnNkL25mczN4ZHIuYworKysgYi9m cy9uZnNkL25mczN4ZHIuYwpAQCAtMzYzLDYgKzM2Myw3IEBAIG5mczNzdmNfZGVjb2RlX3dyaXRl YXJncyhzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBfX2JlMzIgKnAsCiB7CiAJdW5zaWduZWQgaW50 IGxlbiwgdiwgaGRyLCBkbGVuOwogCXUzMiBtYXhfYmxvY2tzaXplID0gc3ZjX21heF9wYXlsb2Fk KHJxc3RwKTsKKwlzdHJ1Y3Qga3ZlYyAqaGVhZCA9IHJxc3RwLT5ycV9hcmcuaGVhZDsKIAogCXAg PSBkZWNvZGVfZmgocCwgJmFyZ3MtPmZoKTsKIAlpZiAoIXApCkBAIC0zNzIsNiArMzczLDggQEAg bmZzM3N2Y19kZWNvZGVfd3JpdGVhcmdzKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIF9fYmUzMiAq cCwKIAlhcmdzLT5jb3VudCA9IG50b2hsKCpwKyspOwogCWFyZ3MtPnN0YWJsZSA9IG50b2hsKCpw KyspOwogCWxlbiA9IGFyZ3MtPmxlbiA9IG50b2hsKCpwKyspOworCWlmICgodm9pZCAqKXAgPiBo ZWFkLT5pb3ZfYmFzZSArIGhlYWQtPmlvdl9sZW4pCisJCXJldHVybiAwOwogCS8qCiAJICogVGhl IGNvdW50IG11c3QgZXF1YWwgdGhlIGFtb3VudCBvZiBkYXRhIHBhc3NlZC4KIAkgKi8KQEAgLTM4 Miw5ICszODUsOCBAQCBuZnMzc3ZjX2RlY29kZV93cml0ZWFyZ3Moc3RydWN0IHN2Y19ycXN0ICpy cXN0cCwgX19iZTMyICpwLAogCSAqIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGdvdCB0aGUg cmlnaHQgbnVtYmVyIG9mCiAJICogYnl0ZXMuCiAJICovCi0JaGRyID0gKHZvaWQqKXAgLSBycXN0 cC0+cnFfYXJnLmhlYWRbMF0uaW92X2Jhc2U7Ci0JZGxlbiA9IHJxc3RwLT5ycV9hcmcuaGVhZFsw XS5pb3ZfbGVuICsgcnFzdHAtPnJxX2FyZy5wYWdlX2xlbgotCQktIGhkcjsKKwloZHIgPSAodm9p ZCopcCAtIGhlYWQtPmlvdl9iYXNlOworCWRsZW4gPSBoZWFkLT5pb3ZfbGVuICsgcnFzdHAtPnJx X2FyZy5wYWdlX2xlbiAtIGhkcjsKIAkvKgogCSAqIFJvdW5kIHRoZSBsZW5ndGggb2YgdGhlIGRh dGEgd2hpY2ggd2FzIHNwZWNpZmllZCB1cCB0bwogCSAqIHRoZSBuZXh0IG11bHRpcGxlIG9mIFhE UiB1bml0cyBhbmQgdGhlbiBjb21wYXJlIHRoYXQKQEAgLTQwMSw3ICs0MDMsNyBAQCBuZnMzc3Zj X2RlY29kZV93cml0ZWFyZ3Moc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgX19iZTMyICpwLAogCQls ZW4gPSBhcmdzLT5sZW4gPSBtYXhfYmxvY2tzaXplOwogCX0KIAlycXN0cC0+cnFfdmVjWzBdLmlv dl9iYXNlID0gKHZvaWQqKXA7Ci0JcnFzdHAtPnJxX3ZlY1swXS5pb3ZfbGVuID0gcnFzdHAtPnJx X2FyZy5oZWFkWzBdLmlvdl9sZW4gLSBoZHI7CisJcnFzdHAtPnJxX3ZlY1swXS5pb3ZfbGVuID0g aGVhZC0+aW92X2xlbiAtIGhkcjsKIAl2ID0gMDsKIAl3aGlsZSAobGVuID4gcnFzdHAtPnJxX3Zl Y1t2XS5pb3ZfbGVuKSB7CiAJCWxlbiAtPSBycXN0cC0+cnFfdmVjW3ZdLmlvdl9sZW47CkBAIC00 NzYsNiArNDc4LDggQEAgbmZzM3N2Y19kZWNvZGVfc3ltbGlua2FyZ3Moc3RydWN0IHN2Y19ycXN0 ICpycXN0cCwgX19iZTMyICpwLAogCS8qIGZpcnN0IGNvcHkgYW5kIGNoZWNrIGZyb20gdGhlIGZp cnN0IHBhZ2UgKi8KIAlvbGQgPSAoY2hhciopcDsKIAl2ZWMgPSAmcnFzdHAtPnJxX2FyZy5oZWFk WzBdOworCWlmICgodm9pZCAqKW9sZCA+IHZlYy0+aW92X2Jhc2UgKyB2ZWMtPmlvdl9sZW4pCisJ CXJldHVybiAwOwogCWF2YWlsID0gdmVjLT5pb3ZfbGVuIC0gKG9sZCAtIChjaGFyKil2ZWMtPmlv dl9iYXNlKTsKIAl3aGlsZSAobGVuICYmIGF2YWlsICYmICpvbGQpIHsKIAkJKm5ldysrID0gKm9s ZCsrOwpkaWZmIC0tZ2l0IGEvZnMvbmZzZC9uZnNzdmMuYyBiL2ZzL25mc2QvbmZzc3ZjLmMKaW5k ZXggMmYyZWRiYjJhNGEzLi45NmMzZGMyMDBlODAgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZzc3Zj LmMKKysrIGIvZnMvbmZzZC9uZnNzdmMuYwpAQCAtNjQyLDYgKzY0MiwzNyBAQCBzdGF0aWMgX19i ZTMyIG1hcF9uZXdfZXJyb3JzKHUzMiB2ZXJzLCBfX2JlMzIgbmZzZXJyKQogCXJldHVybiBuZnNl cnI7CiB9CiAKKy8qCisgKiBBIHdyaXRlIHByb2NlZHVyZSBjYW4gaGF2ZSBhIGxhcmdlIGFyZ3Vt ZW50LCBhbmQgYSByZWFkIHByb2NlZHVyZSBjYW4KKyAqIGhhdmUgYSBsYXJnZSByZXBseSwgYnV0 IG5vIE5GU3YyIG9yIE5GU3YzIHByb2NlZHVyZSBoYXMgYXJndW1lbnQgYW5kCisgKiByZXBseSB0 aGF0IGNhbiBib3RoIGJlIGxhcmdlciB0aGFuIGEgcGFnZS4gIFRoZSB4ZHIgY29kZSBoYXMgdGFr ZW4KKyAqIGFkdmFudGFnZSBvZiB0aGlzIGFzc3VtcHRpb24gdG8gYmUgYSBzbG9wcHkgYWJvdXQg Ym91bmRzIGNoZWNraW5nIGluCisgKiBzb21lIGNhc2VzLiAgUGVuZGluZyBhIHJld3JpdGUgb2Yg dGhlIE5GU3YyL3YzIHhkciBjb2RlIHRvIGZpeCB0aGF0CisgKiBwcm9ibGVtLCB3ZSBlbmZvcmNl IHRoZXNlIGFzc3VtcHRpb25zIGhlcmU6CisgKi8KK3N0YXRpYyBib29sIG5mc19yZXF1ZXN0X3Rv b19iaWcoc3RydWN0IHN2Y19ycXN0ICpycXN0cCwKKwkJCQlzdHJ1Y3Qgc3ZjX3Byb2NlZHVyZSAq cHJvYykKK3sKKwkvKgorCSAqIFRoZSBBQ0wgY29kZSBoYXMgbW9yZSBjYXJlZnVsIGJvdW5kcy1j aGVja2luZyBhbmQgaXMgbm90CisJICogc3VzY2VwdGlibGUgdG8gdGhpcyBwcm9ibGVtOgorCSAq LworCWlmIChycXN0cC0+cnFfcHJvZyAhPSBORlNfUFJPR1JBTSkKKwkJcmV0dXJuIGZhbHNlOwor CS8qCisJICogRGl0dG8gTkZTdjQgKHdoaWNoIGNhbiBpbiB0aGVvcnkgaGF2ZSBhcmd1bWVudCBh bmQgcmVwbHkgYm90aAorCSAqIG1vcmUgdGhhbiBhIHBhZ2UpOgorCSAqLworCWlmIChycXN0cC0+ cnFfdmVycyA+PSA0KQorCQlyZXR1cm4gZmFsc2U7CisJLyogVGhlIHJlcGx5IHdpbGwgYmUgc21h bGwsIHdlJ3JlIE9LOiAqLworCWlmIChwcm9jLT5wY194ZHJyZXNzaXplID4gMCAmJgorCSAgICBw cm9jLT5wY194ZHJyZXNzaXplIDwgWERSX1FVQURMRU4oUEFHRV9TSVpFKSkKKwkJcmV0dXJuIGZh bHNlOworCisJcmV0dXJuIHJxc3RwLT5ycV9hcmcubGVuID4gUEFHRV9TSVpFOworfQorCiBpbnQK IG5mc2RfZGlzcGF0Y2goc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgX19iZTMyICpzdGF0cCkKIHsK QEAgLTY1NCw2ICs2ODUsMTEgQEAgbmZzZF9kaXNwYXRjaChzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3Rw LCBfX2JlMzIgKnN0YXRwKQogCQkJCXJxc3RwLT5ycV92ZXJzLCBycXN0cC0+cnFfcHJvYyk7CiAJ cHJvYyA9IHJxc3RwLT5ycV9wcm9jaW5mbzsKIAorCWlmIChuZnNfcmVxdWVzdF90b29fYmlnKHJx c3RwLCBwcm9jKSkgeworCQlkcHJpbnRrKCJuZnNkOiBORlN2JWQgYXJndW1lbnQgdG9vIGxhcmdl XG4iLCBycXN0cC0+cnFfdmVycyk7CisJCSpzdGF0cCA9IHJwY19nYXJiYWdlX2FyZ3M7CisJCXJl dHVybiAxOworCX0KIAkvKgogCSAqIEdpdmUgdGhlIHhkciBkZWNvZGVyIGEgY2hhbmNlIHRvIGNo YW5nZSB0aGlzIGlmIGl0IHdhbnRzCiAJICogKG5lY2Vzc2FyeSBpbiB0aGUgTkZTdjQuMCBjb21w b3VuZCBjYXNlKQpkaWZmIC0tZ2l0IGEvZnMvbmZzZC9uZnN4ZHIuYyBiL2ZzL25mc2QvbmZzeGRy LmMKaW5kZXggMWFjMzA2Yjc2OWRmLi5hNDFjMzU3MmJkZTUgMTAwNjQ0Ci0tLSBhL2ZzL25mc2Qv bmZzeGRyLmMKKysrIGIvZnMvbmZzZC9uZnN4ZHIuYwpAQCAtMjgxLDYgKzI4MSw3IEBAIG5mc3N2 Y19kZWNvZGVfd3JpdGVhcmdzKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIF9fYmUzMiAqcCwKIAkJ CQkJc3RydWN0IG5mc2Rfd3JpdGVhcmdzICphcmdzKQogewogCXVuc2lnbmVkIGludCBsZW4sIGhk ciwgZGxlbjsKKwlzdHJ1Y3Qga3ZlYyAqaGVhZCA9IHJxc3RwLT5ycV9hcmcuaGVhZDsKIAlpbnQg djsKIAogCXAgPSBkZWNvZGVfZmgocCwgJmFyZ3MtPmZoKTsKQEAgLTMwMSw5ICszMDIsMTAgQEAg bmZzc3ZjX2RlY29kZV93cml0ZWFyZ3Moc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgX19iZTMyICpw LAogCSAqIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgbnVtYmVyIG9m CiAJICogYnl0ZXMuCiAJICovCi0JaGRyID0gKHZvaWQqKXAgLSBycXN0cC0+cnFfYXJnLmhlYWRb MF0uaW92X2Jhc2U7Ci0JZGxlbiA9IHJxc3RwLT5ycV9hcmcuaGVhZFswXS5pb3ZfbGVuICsgcnFz dHAtPnJxX2FyZy5wYWdlX2xlbgotCQktIGhkcjsKKwloZHIgPSAodm9pZCopcCAtIGhlYWQtPmlv dl9iYXNlOworCWlmIChoZHIgPiBoZWFkLT5pb3ZfbGVuKQorCQlyZXR1cm4gMDsKKwlkbGVuID0g aGVhZC0+aW92X2xlbiArIHJxc3RwLT5ycV9hcmcucGFnZV9sZW4gLSBoZHI7CiAKIAkvKgogCSAq IFJvdW5kIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgd2hpY2ggd2FzIHNwZWNpZmllZCB1cCB0bwpA QCAtMzE3LDcgKzMxOSw3IEBAIG5mc3N2Y19kZWNvZGVfd3JpdGVhcmdzKHN0cnVjdCBzdmNfcnFz dCAqcnFzdHAsIF9fYmUzMiAqcCwKIAkJcmV0dXJuIDA7CiAKIAlycXN0cC0+cnFfdmVjWzBdLmlv dl9iYXNlID0gKHZvaWQqKXA7Ci0JcnFzdHAtPnJxX3ZlY1swXS5pb3ZfbGVuID0gcnFzdHAtPnJx X2FyZy5oZWFkWzBdLmlvdl9sZW4gLSBoZHI7CisJcnFzdHAtPnJxX3ZlY1swXS5pb3ZfbGVuID0g aGVhZC0+aW92X2xlbiAtIGhkcjsKIAl2ID0gMDsKIAl3aGlsZSAobGVuID4gcnFzdHAtPnJxX3Zl Y1t2XS5pb3ZfbGVuKSB7CiAJCWxlbiAtPSBycXN0cC0+cnFfdmVjW3ZdLmlvdl9sZW47CmRpZmYg LS1naXQgYS9mcy9uZnNkL3Zmcy5jIGIvZnMvbmZzZC92ZnMuYwppbmRleCA1MjFmNzE3YjRhOTku LjVjN2Y3MmNlYTBkZSAxMDA2NDQKLS0tIGEvZnMvbmZzZC92ZnMuYworKysgYi9mcy9uZnNkL3Zm cy5jCkBAIC00MDcsNyArNDA3LDcgQEAgbmZzZF9zZXRhdHRyKHN0cnVjdCBzdmNfcnFzdCAqcnFz dHAsIHN0cnVjdCBzdmNfZmggKmZocCwgc3RydWN0IGlhdHRyICppYXAsCiAJX19iZTMyCQllcnI7 CiAJaW50CQlob3N0X2VycjsKIAlib29sCQlnZXRfd3JpdGVfY291bnQ7Ci0JaW50CQlzaXplX2No YW5nZSA9IDA7CisJYm9vbAkJc2l6ZV9jaGFuZ2UgPSAoaWFwLT5pYV92YWxpZCAmIEFUVFJfU0la RSk7CiAKIAlpZiAoaWFwLT5pYV92YWxpZCAmIChBVFRSX0FUSU1FIHwgQVRUUl9NVElNRSB8IEFU VFJfU0laRSkpCiAJCWFjY21vZGUgfD0gTkZTRF9NQVlfV1JJVEV8TkZTRF9NQVlfT1dORVJfT1ZF UlJJREU7CkBAIC00MjAsMTEgKzQyMCwxMSBAQCBuZnNkX3NldGF0dHIoc3RydWN0IHN2Y19ycXN0 ICpycXN0cCwgc3RydWN0IHN2Y19maCAqZmhwLCBzdHJ1Y3QgaWF0dHIgKmlhcCwKIAkvKiBHZXQg aW5vZGUgKi8KIAllcnIgPSBmaF92ZXJpZnkocnFzdHAsIGZocCwgZnR5cGUsIGFjY21vZGUpOwog CWlmIChlcnIpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gZXJyOwogCWlmIChnZXRfd3JpdGVfY291 bnQpIHsKIAkJaG9zdF9lcnIgPSBmaF93YW50X3dyaXRlKGZocCk7CiAJCWlmIChob3N0X2VycikK LQkJCXJldHVybiBuZnNlcnJubyhob3N0X2Vycik7CisJCQlnb3RvIG91dDsKIAl9CiAKIAlkZW50 cnkgPSBmaHAtPmZoX2RlbnRyeTsKQEAgLTQzNSw0MCArNDM1LDY1IEBAIG5mc2Rfc2V0YXR0cihz dHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3Qgc3ZjX2ZoICpmaHAsIHN0cnVjdCBpYXR0ciAq aWFwLAogCQlpYXAtPmlhX3ZhbGlkICY9IH5BVFRSX01PREU7CiAKIAlpZiAoIWlhcC0+aWFfdmFs aWQpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gMDsKIAogCW5mc2Rfc2FuaXRpemVfYXR0cnMoZGVu dHJ5LCBpYXApOwogCisJaWYgKGNoZWNrX2d1YXJkICYmIGd1YXJkdGltZSAhPSBpbm9kZS0+aV9j dGltZS50dl9zZWMpCisJCXJldHVybiBuZnNlcnJfbm90c3luYzsKKwogCS8qCiAJICogVGhlIHNp emUgY2FzZSBpcyBzcGVjaWFsLCBpdCBjaGFuZ2VzIHRoZSBmaWxlIGluIGFkZGl0aW9uIHRvIHRo ZQotCSAqIGF0dHJpYnV0ZXMuCisJICogYXR0cmlidXRlcywgYW5kIGZpbGUgc3lzdGVtcyBkb24n dCBleHBlY3QgaXQgdG8gYmUgbWl4ZWQgd2l0aAorCSAqICJyYW5kb20iIGF0dHJpYnV0ZSBjaGFu Z2VzLiAgV2UgdGh1cyBzcGxpdCBvdXQgdGhlIHNpemUgY2hhbmdlCisJICogaW50byBhIHNlcGFy YXRlIGNhbGwgdG8gLT5zZXRhdHRyLCBhbmQgZG8gdGhlIHJlc3QgYXMgYSBzZXBhcmF0ZQorCSAq IHNldGF0dHIgY2FsbC4KIAkgKi8KLQlpZiAoaWFwLT5pYV92YWxpZCAmIEFUVFJfU0laRSkgewor CWlmIChzaXplX2NoYW5nZSkgewogCQllcnIgPSBuZnNkX2dldF93cml0ZV9hY2Nlc3MocnFzdHAs IGZocCwgaWFwKTsKIAkJaWYgKGVycikKLQkJCWdvdG8gb3V0OwotCQlzaXplX2NoYW5nZSA9IDE7 CisJCQlyZXR1cm4gZXJyOwogCX0KIAotCWlhcC0+aWFfdmFsaWQgfD0gQVRUUl9DVElNRTsKKwlm aF9sb2NrKGZocCk7CisJaWYgKHNpemVfY2hhbmdlKSB7CisJCS8qCisJCSAqIFJGQzU2NjEsIFNl Y3Rpb24gMTguMzAuNDoKKwkJICogICBDaGFuZ2luZyB0aGUgc2l6ZSBvZiBhIGZpbGUgd2l0aCBT RVRBVFRSIGluZGlyZWN0bHkKKwkJICogICBjaGFuZ2VzIHRoZSB0aW1lX21vZGlmeSBhbmQgY2hh bmdlIGF0dHJpYnV0ZXMuCisJCSAqCisJCSAqIChhbmQgc2ltaWxhciBmb3IgdGhlIG9sZGVyIFJG Q3MpCisJCSAqLworCQlzdHJ1Y3QgaWF0dHIgc2l6ZV9hdHRyID0geworCQkJLmlhX3ZhbGlkCT0g QVRUUl9TSVpFIHwgQVRUUl9DVElNRSB8IEFUVFJfTVRJTUUsCisJCQkuaWFfc2l6ZQk9IGlhcC0+ aWFfc2l6ZSwKKwkJfTsKIAotCWlmIChjaGVja19ndWFyZCAmJiBndWFyZHRpbWUgIT0gaW5vZGUt PmlfY3RpbWUudHZfc2VjKSB7Ci0JCWVyciA9IG5mc2Vycl9ub3RzeW5jOwotCQlnb3RvIG91dF9w dXRfd3JpdGVfYWNjZXNzOworCQlob3N0X2VyciA9IG5vdGlmeV9jaGFuZ2UoZGVudHJ5LCAmc2l6 ZV9hdHRyLCBOVUxMKTsKKwkJaWYgKGhvc3RfZXJyKQorCQkJZ290byBvdXRfdW5sb2NrOworCQlp YXAtPmlhX3ZhbGlkICY9IH5BVFRSX1NJWkU7CisKKwkJLyoKKwkJICogQXZvaWQgdGhlIGFkZGl0 aW9uYWwgc2V0YXR0ciBjYWxsIGJlbG93IGlmIHRoZSBvbmx5IG90aGVyCisJCSAqIGF0dHJpYnV0 ZSB0aGF0IHRoZSBjbGllbnQgc2VuZHMgaXMgdGhlIG10aW1lLCBhcyB3ZSB1cGRhdGUKKwkJICog aXQgYXMgcGFydCBvZiB0aGUgc2l6ZSBjaGFuZ2UgYWJvdmUuCisJCSAqLworCQlpZiAoKGlhcC0+ aWFfdmFsaWQgJiB+QVRUUl9NVElNRSkgPT0gMCkKKwkJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAK LQlmaF9sb2NrKGZocCk7CisJaWFwLT5pYV92YWxpZCB8PSBBVFRSX0NUSU1FOwogCWhvc3RfZXJy ID0gbm90aWZ5X2NoYW5nZShkZW50cnksIGlhcCwgTlVMTCk7Ci0JZmhfdW5sb2NrKGZocCk7Ci0J ZXJyID0gbmZzZXJybm8oaG9zdF9lcnIpOwogCi1vdXRfcHV0X3dyaXRlX2FjY2VzczoKK291dF91 bmxvY2s6CisJZmhfdW5sb2NrKGZocCk7CiAJaWYgKHNpemVfY2hhbmdlKQogCQlwdXRfd3JpdGVf YWNjZXNzKGlub2RlKTsKLQlpZiAoIWVycikKLQkJY29tbWl0X21ldGFkYXRhKGZocCk7CiBvdXQ6 Ci0JcmV0dXJuIGVycjsKKwlpZiAoIWhvc3RfZXJyKQorCQljb21taXRfbWV0YWRhdGEoZmhwKTsK KwlyZXR1cm4gbmZzZXJybm8oaG9zdF9lcnIpOwogfQogCiAjaWYgZGVmaW5lZChDT05GSUdfTkZT RF9WNCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3J5cHRvL2ludGVybmFsL2hhc2guaCBiL2luY2x1 ZGUvY3J5cHRvL2ludGVybmFsL2hhc2guaAppbmRleCA5YjZmMzJhNmNhZDEuLjY2ZmM0MmM1N2Fm ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jcnlwdG8vaW50ZXJuYWwvaGFzaC5oCisrKyBiL2luY2x1 ZGUvY3J5cHRvL2ludGVybmFsL2hhc2guaApAQCAtMTY0LDYgKzE2NCwxNiBAQCBzdGF0aWMgaW5s aW5lIHN0cnVjdCBhaGFzaF9pbnN0YW5jZSAqYWhhc2hfYWxsb2NfaW5zdGFuY2UoCiAJcmV0dXJu IGNyeXB0b19hbGxvY19pbnN0YW5jZTIobmFtZSwgYWxnLCBhaGFzaF9pbnN0YW5jZV9oZWFkcm9v bSgpKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGFoYXNoX3JlcXVlc3RfY29tcGxldGUoc3Ry dWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwgaW50IGVycikKK3sKKwlyZXEtPmJhc2UuY29tcGxldGUo JnJlcS0+YmFzZSwgZXJyKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgYWhhc2hfcmVxdWVzdF9m bGFncyhzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKQoreworCXJldHVybiByZXEtPmJhc2UuZmxh Z3M7Cit9CisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNyeXB0b19haGFzaCAqY3J5cHRvX3NwYXdu X2FoYXNoKAogCXN0cnVjdCBjcnlwdG9fYWhhc2hfc3Bhd24gKnNwYXduKQogewpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmggYi9pbmNsdWRlL2xpbnV4L2p1bXBfbGFiZWwu aAppbmRleCA3ODQzMDRiMjIyYjMuLmYwZDBjYzc2MzIzNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9s aW51eC9qdW1wX2xhYmVsLmgKKysrIGIvaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgKQEAgLTIw Myw0ICsyMDMsMjQgQEAgc3RhdGljIGlubGluZSBib29sIHN0YXRpY19rZXlfZW5hYmxlZChzdHJ1 Y3Qgc3RhdGljX2tleSAqa2V5KQogCXJldHVybiBzdGF0aWNfa2V5X2NvdW50KGtleSkgPiAwOwog fQogCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhdGljX2tleV9lbmFibGUoc3RydWN0IHN0YXRpY19r ZXkgKmtleSkKK3sKKwlpbnQgY291bnQgPSBzdGF0aWNfa2V5X2NvdW50KGtleSk7CisKKwlXQVJO X09OX09OQ0UoY291bnQgPCAwIHx8IGNvdW50ID4gMSk7CisKKwlpZiAoIWNvdW50KQorCQlzdGF0 aWNfa2V5X3Nsb3dfaW5jKGtleSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdGF0aWNfa2V5 X2Rpc2FibGUoc3RydWN0IHN0YXRpY19rZXkgKmtleSkKK3sKKwlpbnQgY291bnQgPSBzdGF0aWNf a2V5X2NvdW50KGtleSk7CisKKwlXQVJOX09OX09OQ0UoY291bnQgPCAwIHx8IGNvdW50ID4gMSk7 CisKKwlpZiAoY291bnQpCisJCXN0YXRpY19rZXlfc2xvd19kZWMoa2V5KTsKK30KKwogI2VuZGlm CS8qIF9MSU5VWF9KVU1QX0xBQkVMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbG9j a2QvbG9ja2QuaCBiL2luY2x1ZGUvbGludXgvbG9ja2QvbG9ja2QuaAppbmRleCAyOTRlMjNjMjQz YzYuLjEyODFhNjVjMjMwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9sb2NrZC9sb2NrZC5o CisrKyBiL2luY2x1ZGUvbGludXgvbG9ja2QvbG9ja2QuaApAQCAtMzU1LDcgKzM1NSw4IEBAIHN0 YXRpYyBpbmxpbmUgaW50IG5sbV9wcml2aWxlZ2VkX3JlcXVlc3Rlcihjb25zdCBzdHJ1Y3Qgc3Zj X3Jxc3QgKnJxc3RwKQogc3RhdGljIGlubGluZSBpbnQgbmxtX2NvbXBhcmVfbG9ja3MoY29uc3Qg c3RydWN0IGZpbGVfbG9jayAqZmwxLAogCQkJCSAgICBjb25zdCBzdHJ1Y3QgZmlsZV9sb2NrICpm bDIpCiB7Ci0JcmV0dXJuCWZsMS0+ZmxfcGlkICAgPT0gZmwyLT5mbF9waWQKKwlyZXR1cm4gZmls ZV9pbm9kZShmbDEtPmZsX2ZpbGUpID09IGZpbGVfaW5vZGUoZmwyLT5mbF9maWxlKQorCSAgICAg JiYgZmwxLT5mbF9waWQgICA9PSBmbDItPmZsX3BpZAogCSAgICAgJiYgZmwxLT5mbF9vd25lciA9 PSBmbDItPmZsX293bmVyCiAJICAgICAmJiBmbDEtPmZsX3N0YXJ0ID09IGZsMi0+Zmxfc3RhcnQK IAkgICAgICYmIGZsMS0+ZmxfZW5kICAgPT0gZmwyLT5mbF9lbmQKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvbWx4NC9jbWQuaCBiL2luY2x1ZGUvbGludXgvbWx4NC9jbWQuaAppbmRleCBjODQ1 MDM2NmMxMzAuLmI5YTZjZGY3YmE2NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg0L2Nt ZC5oCisrKyBiL2luY2x1ZGUvbGludXgvbWx4NC9jbWQuaApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0 cnVjdCBtbHg0X2NtZF9tYWlsYm94ICptbHg0X2FsbG9jX2NtZF9tYWlsYm94KHN0cnVjdCBtbHg0 X2RldiAqZGV2KTsKIHZvaWQgbWx4NF9mcmVlX2NtZF9tYWlsYm94KHN0cnVjdCBtbHg0X2RldiAq ZGV2LCBzdHJ1Y3QgbWx4NF9jbWRfbWFpbGJveCAqbWFpbGJveCk7CiAKIHUzMiBtbHg0X2NvbW1f Z2V0X3ZlcnNpb24odm9pZCk7Ci1pbnQgbWx4NF9zZXRfdmZfbWFjKHN0cnVjdCBtbHg0X2RldiAq ZGV2LCBpbnQgcG9ydCwgaW50IHZmLCB1NjQgbWFjKTsKK2ludCBtbHg0X3NldF92Zl9tYWMoc3Ry dWN0IG1seDRfZGV2ICpkZXYsIGludCBwb3J0LCBpbnQgdmYsIHU4ICptYWMpOwogaW50IG1seDRf c2V0X3ZmX3ZsYW4oc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBwb3J0LCBpbnQgdmYsIHUxNiB2 bGFuLCB1OCBxb3MpOwogaW50IG1seDRfc2V0X3ZmX3Nwb29mY2hrKHN0cnVjdCBtbHg0X2RldiAq ZGV2LCBpbnQgcG9ydCwgaW50IHZmLCBib29sIHNldHRpbmcpOwogaW50IG1seDRfZ2V0X3ZmX2Nv bmZpZyhzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHBvcnQsIGludCB2Ziwgc3RydWN0IGlmbGFf dmZfaW5mbyAqaXZmKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NC9kcml2ZXIuaCBi L2luY2x1ZGUvbGludXgvbWx4NC9kcml2ZXIuaAppbmRleCAwMjIwNTVjOGZiMjYuLjRhNzhiZGVl NGVkNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg0L2RyaXZlci5oCisrKyBiL2luY2x1 ZGUvbGludXgvbWx4NC9kcml2ZXIuaApAQCAtNzYsNCArNzYsMTQgQEAgc3RhdGljIGlubGluZSB1 NjQgbWx4NF9tYWNfdG9fdTY0KHU4ICphZGRyKQogCXJldHVybiBtYWM7CiB9CiAKK3N0YXRpYyBp bmxpbmUgdm9pZCBtbHg0X3U2NF90b19tYWModTggKmFkZHIsIHU2NCBtYWMpCit7CisJaW50IGk7 CisKKwlmb3IgKGkgPSBFVEhfQUxFTjsgaSA+IDA7IGktLSkgeworCQlhZGRyW2kgLSAxXSA9IG1h YyAmIDB4RkY7CisJCW1hYyA+Pj0gODsKKwl9Cit9CisKICNlbmRpZiAvKiBNTFg0X0RSSVZFUl9I ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaCBiL2luY2x1ZGUvbGludXgv cGFnZW1hcC5oCmluZGV4IDEwYjU3OTQwZGM2Mi4uZWQyMDRlYmEwZTg3IDEwMDY0NAotLS0gYS9p bmNsdWRlL2xpbnV4L3BhZ2VtYXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaApAQCAt MjkzLDcgKzI5Myw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKmZpbmRfZ2V0X3BhZ2Vf ZmxhZ3Moc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAKIC8qKgogICogZmluZF9sb2Nr X3BhZ2UgLSBsb2NhdGUsIHBpbiBhbmQgbG9jayBhIHBhZ2VjYWNoZSBwYWdlCi0gKiBwYWdlY2Fj aGVfZ2V0X3BhZ2UgLSBmaW5kIGFuZCBnZXQgYSBwYWdlIHJlZmVyZW5jZQogICogQG1hcHBpbmc6 IHRoZSBhZGRyZXNzX3NwYWNlIHRvIHNlYXJjaAogICogQG9mZnNldDogdGhlIHBhZ2UgaW5kZXgK ICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmggYi9pbmNsdWRlL2xpbnV4 L3d3X211dGV4LmgKaW5kZXggNzYwMzk5YTQ3MGJkLi4zNDBjMzFlZDg0ZDcgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvd3dfbXV0ZXguaAorKysgYi9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgK QEAgLTUxLDEwICs1MSwxMCBAQCBzdHJ1Y3Qgd3dfbXV0ZXggewogfTsKIAogI2lmZGVmIENPTkZJ R19ERUJVR19MT0NLX0FMTE9DCi0jIGRlZmluZSBfX1dXX0NMQVNTX01VVEVYX0lOSVRJQUxJWkVS KGxvY2tuYW1lLCB3d19jbGFzcykgXAotCQksIC53d19jbGFzcyA9ICZ3d19jbGFzcworIyBkZWZp bmUgX19XV19DTEFTU19NVVRFWF9JTklUSUFMSVpFUihsb2NrbmFtZSwgY2xhc3MpIFwKKwkJLCAu d3dfY2xhc3MgPSBjbGFzcwogI2Vsc2UKLSMgZGVmaW5lIF9fV1dfQ0xBU1NfTVVURVhfSU5JVElB TElaRVIobG9ja25hbWUsIHd3X2NsYXNzKQorIyBkZWZpbmUgX19XV19DTEFTU19NVVRFWF9JTklU SUFMSVpFUihsb2NrbmFtZSwgY2xhc3MpCiAjZW5kaWYKIAogI2RlZmluZSBfX1dXX0NMQVNTX0lO SVRJQUxJWkVSKHd3X2NsYXNzKSBcCkBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCB3d19tdXRleCB7 CiAJCSwgLm11dGV4X25hbWUgPSAjd3dfY2xhc3MgIl9tdXRleCIgfQogCiAjZGVmaW5lIF9fV1df TVVURVhfSU5JVElBTElaRVIobG9ja25hbWUsIGNsYXNzKSBcCi0JCXsgLmJhc2UgPSB7IFxfX01V VEVYX0lOSVRJQUxJWkVSKGxvY2tuYW1lKSB9IFwKKwkJeyAuYmFzZSA9ICBfX01VVEVYX0lOSVRJ QUxJWkVSKGxvY2tuYW1lLmJhc2UpIFwKIAkJX19XV19DTEFTU19NVVRFWF9JTklUSUFMSVpFUihs b2NrbmFtZSwgY2xhc3MpIH0KIAogI2RlZmluZSBERUZJTkVfV1dfQ0xBU1MoY2xhc3NuYW1lKSBc CmRpZmYgLS1naXQgYS9pbmNsdWRlL3JkbWEvaWJfc2EuaCBiL2luY2x1ZGUvcmRtYS9pYl9zYS5o CmluZGV4IDdlMDcxYTZhYmIzNC4uNWQ2MGJlNjZjMDVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Jk bWEvaWJfc2EuaAorKysgYi9pbmNsdWRlL3JkbWEvaWJfc2EuaApAQCAtMTM3LDEyICsxMzcsMTIg QEAgc3RydWN0IGliX3NhX3BhdGhfcmVjIHsKIAl1bmlvbiBpYl9naWQgc2dpZDsKIAlfX2JlMTYg ICAgICAgZGxpZDsKIAlfX2JlMTYgICAgICAgc2xpZDsKLQlpbnQgICAgICAgICAgcmF3X3RyYWZm aWM7CisJdTggICAgICAgICAgIHJhd190cmFmZmljOwogCS8qIHJlc2VydmVkICovCiAJX19iZTMy ICAgICAgIGZsb3dfbGFiZWw7CiAJdTggICAgICAgICAgIGhvcF9saW1pdDsKIAl1OCAgICAgICAg ICAgdHJhZmZpY19jbGFzczsKLQlpbnQgICAgICAgICAgcmV2ZXJzaWJsZTsKKwl1OCAgICAgICAg ICAgcmV2ZXJzaWJsZTsKIAl1OCAgICAgICAgICAgbnVtYl9wYXRoOwogCV9fYmUxNiAgICAgICBw a2V5OwogCV9fYmUxNiAgICAgICBxb3NfY2xhc3M7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3RydWN0 IGliX3NhX21jbWVtYmVyX3JlYyB7CiAJdTggICAgICAgICAgIGhvcF9saW1pdDsKIAl1OCAgICAg ICAgICAgc2NvcGU7CiAJdTggICAgICAgICAgIGpvaW5fc3RhdGU7Ci0JaW50ICAgICAgICAgIHBy b3h5X2pvaW47CisJdTggICAgICAgICAgIHByb3h5X2pvaW47CiB9OwogCiAvKiBTZXJ2aWNlIFJl Y29yZCBDb21wb25lbnQgTWFzayBTZWMgMTUuMi41LjE0IFZlciAxLjEJKi8KZGlmZiAtLWdpdCBh L2tlcm5lbC9zY2hlZC9jb3JlLmMgYi9rZXJuZWwvc2NoZWQvY29yZS5jCmluZGV4IGYyYzBiY2M0 YmE2Yy4uMmZjNDRiMjQ2NmYzIDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWQvY29yZS5jCisrKyBi L2tlcm5lbC9zY2hlZC9jb3JlLmMKQEAgLTE5NiwxNCArMTk2LDEyIEBAIHN0cnVjdCBzdGF0aWNf a2V5IHNjaGVkX2ZlYXRfa2V5c1tfX1NDSEVEX0ZFQVRfTlJdID0gewogCiBzdGF0aWMgdm9pZCBz Y2hlZF9mZWF0X2Rpc2FibGUoaW50IGkpCiB7Ci0JaWYgKHN0YXRpY19rZXlfZW5hYmxlZCgmc2No ZWRfZmVhdF9rZXlzW2ldKSkKLQkJc3RhdGljX2tleV9zbG93X2RlYygmc2NoZWRfZmVhdF9rZXlz W2ldKTsKKwlzdGF0aWNfa2V5X2Rpc2FibGUoJnNjaGVkX2ZlYXRfa2V5c1tpXSk7CiB9CiAKIHN0 YXRpYyB2b2lkIHNjaGVkX2ZlYXRfZW5hYmxlKGludCBpKQogewotCWlmICghc3RhdGljX2tleV9l bmFibGVkKCZzY2hlZF9mZWF0X2tleXNbaV0pKQotCQlzdGF0aWNfa2V5X3Nsb3dfaW5jKCZzY2hl ZF9mZWF0X2tleXNbaV0pOworCXN0YXRpY19rZXlfZW5hYmxlKCZzY2hlZF9mZWF0X2tleXNbaV0p OwogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIHNjaGVkX2ZlYXRfZGlzYWJsZShpbnQgaSkgeyB9Owpk aWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3RyYWNlLmMgYi9rZXJuZWwvdHJhY2UvdHJhY2UuYwpp bmRleCA4ZGYwZWQ5YWYyOTEuLmE2NGE3MDczYmZmZSAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNl L3RyYWNlLmMKKysrIGIva2VybmVsL3RyYWNlL3RyYWNlLmMKQEAgLTE1NjcsNyArMTU2Nyw3IEBA IHN0YXRpYyB2b2lkIF9fdHJhY2VfZmluZF9jbWRsaW5lKGludCBwaWQsIGNoYXIgY29tbVtdKQog CiAJbWFwID0gc2F2ZWRjbWQtPm1hcF9waWRfdG9fY21kbGluZVtwaWRdOwogCWlmIChtYXAgIT0g Tk9fQ01ETElORV9NQVApCi0JCXN0cmNweShjb21tLCBnZXRfc2F2ZWRfY21kbGluZXMobWFwKSk7 CisJCXN0cmxjcHkoY29tbSwgZ2V0X3NhdmVkX2NtZGxpbmVzKG1hcCksIFRBU0tfQ09NTV9MRU4p OwogCWVsc2UKIAkJc3RyY3B5KGNvbW0sICI8Li4uPiIpOwogfQpkaWZmIC0tZ2l0IGEvbW0vZmls ZW1hcC5jIGIvbW0vZmlsZW1hcC5jCmluZGV4IDMxYjViMjVjM2QyZC4uMTI4ZjNkMzRkODc0IDEw MDY0NAotLS0gYS9tbS9maWxlbWFwLmMKKysrIGIvbW0vZmlsZW1hcC5jCkBAIC03OTUsOSArNzk1 LDEyIEBAIHZvaWQgcGFnZV9lbmRpbyhzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHJ3LCBpbnQgZXJy KQogCQl1bmxvY2tfcGFnZShwYWdlKTsKIAl9IGVsc2UgeyAvKiBydyA9PSBXUklURSAqLwogCQlp ZiAoZXJyKSB7CisJCQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKKwogCQkJU2V0UGFn ZUVycm9yKHBhZ2UpOwotCQkJaWYgKHBhZ2UtPm1hcHBpbmcpCi0JCQkJbWFwcGluZ19zZXRfZXJy b3IocGFnZS0+bWFwcGluZywgZXJyKTsKKwkJCW1hcHBpbmcgPSBwYWdlX21hcHBpbmcocGFnZSk7 CisJCQlpZiAobWFwcGluZykKKwkJCQltYXBwaW5nX3NldF9lcnJvcihtYXBwaW5nLCBlcnIpOwog CQl9CiAJCWVuZF9wYWdlX3dyaXRlYmFjayhwYWdlKTsKIAl9CmRpZmYgLS1naXQgYS9tbS9odWdl X21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCBhYmMwNGE4MDNhYTguLjQzOTdiODkx NTVmOCAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYworKysgYi9tbS9odWdlX21lbW9yeS5j CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBzdHJ1Y3QgcGFnZSAqZm9sbG93X3RyYW5zX2h1Z2VfcG1k KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCVZNX0JVR19PTl9QQUdFKCFQYWdlSGVhZChw YWdlKSwgcGFnZSk7CiAKIAlpZiAoZmxhZ3MgJiBGT0xMX1dSSVRFICYmICFjYW5fZm9sbG93X3dy aXRlX3BtZCgqcG1kLCBwYWdlLCBmbGFncykpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gTlVMTDsK IAogCWlmIChmbGFncyAmIEZPTExfVE9VQ0gpIHsKIAkJcG1kX3QgX3BtZDsKZGlmZiAtLWdpdCBh L21tL21lbXBvbGljeS5jIGIvbW0vbWVtcG9saWN5LmMKaW5kZXggNzgzMmFmZmZmZGE1Li5jYTA4 OGE1NWI5MDIgMTAwNjQ0Ci0tLSBhL21tL21lbXBvbGljeS5jCisrKyBiL21tL21lbXBvbGljeS5j CkBAIC0xNTU5LDcgKzE1NTksNiBAQCBDT01QQVRfU1lTQ0FMTF9ERUZJTkU1KGdldF9tZW1wb2xp Y3ksIGludCBfX3VzZXIgKiwgcG9saWN5LAogQ09NUEFUX1NZU0NBTExfREVGSU5FMyhzZXRfbWVt cG9saWN5LCBpbnQsIG1vZGUsIGNvbXBhdF91bG9uZ190IF9fdXNlciAqLCBubWFzaywKIAkJICAg ICAgIGNvbXBhdF91bG9uZ190LCBtYXhub2RlKQogewotCWxvbmcgZXJyID0gMDsKIAl1bnNpZ25l ZCBsb25nIF9fdXNlciAqbm0gPSBOVUxMOwogCXVuc2lnbmVkIGxvbmcgbnJfYml0cywgYWxsb2Nf c2l6ZTsKIAlERUNMQVJFX0JJVE1BUChibSwgTUFYX05VTU5PREVTKTsKQEAgLTE1NjgsMTQgKzE1 NjcsMTMgQEAgQ09NUEFUX1NZU0NBTExfREVGSU5FMyhzZXRfbWVtcG9saWN5LCBpbnQsIG1vZGUs IGNvbXBhdF91bG9uZ190IF9fdXNlciAqLCBubWFzaywKIAlhbGxvY19zaXplID0gQUxJR04obnJf Yml0cywgQklUU19QRVJfTE9ORykgLyA4OwogCiAJaWYgKG5tYXNrKSB7Ci0JCWVyciA9IGNvbXBh dF9nZXRfYml0bWFwKGJtLCBubWFzaywgbnJfYml0cyk7CisJCWlmIChjb21wYXRfZ2V0X2JpdG1h cChibSwgbm1hc2ssIG5yX2JpdHMpKQorCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCW5tID0gY29tcGF0 X2FsbG9jX3VzZXJfc3BhY2UoYWxsb2Nfc2l6ZSk7Ci0JCWVyciB8PSBjb3B5X3RvX3VzZXIobm0s IGJtLCBhbGxvY19zaXplKTsKKwkJaWYgKGNvcHlfdG9fdXNlcihubSwgYm0sIGFsbG9jX3NpemUp KQorCQkJcmV0dXJuIC1FRkFVTFQ7CiAJfQogCi0JaWYgKGVycikKLQkJcmV0dXJuIC1FRkFVTFQ7 Ci0KIAlyZXR1cm4gc3lzX3NldF9tZW1wb2xpY3kobW9kZSwgbm0sIG5yX2JpdHMrMSk7CiB9CiAK QEAgLTE1ODMsNyArMTU4MSw2IEBAIENPTVBBVF9TWVNDQUxMX0RFRklORTYobWJpbmQsIGNvbXBh dF91bG9uZ190LCBzdGFydCwgY29tcGF0X3Vsb25nX3QsIGxlbiwKIAkJICAgICAgIGNvbXBhdF91 bG9uZ190LCBtb2RlLCBjb21wYXRfdWxvbmdfdCBfX3VzZXIgKiwgbm1hc2ssCiAJCSAgICAgICBj b21wYXRfdWxvbmdfdCwgbWF4bm9kZSwgY29tcGF0X3Vsb25nX3QsIGZsYWdzKQogewotCWxvbmcg ZXJyID0gMDsKIAl1bnNpZ25lZCBsb25nIF9fdXNlciAqbm0gPSBOVUxMOwogCXVuc2lnbmVkIGxv bmcgbnJfYml0cywgYWxsb2Nfc2l6ZTsKIAlub2RlbWFza190IGJtOwpAQCAtMTU5MiwxNCArMTU4 OSwxMyBAQCBDT01QQVRfU1lTQ0FMTF9ERUZJTkU2KG1iaW5kLCBjb21wYXRfdWxvbmdfdCwgc3Rh cnQsIGNvbXBhdF91bG9uZ190LCBsZW4sCiAJYWxsb2Nfc2l6ZSA9IEFMSUdOKG5yX2JpdHMsIEJJ VFNfUEVSX0xPTkcpIC8gODsKIAogCWlmIChubWFzaykgewotCQllcnIgPSBjb21wYXRfZ2V0X2Jp dG1hcChub2Rlc19hZGRyKGJtKSwgbm1hc2ssIG5yX2JpdHMpOworCQlpZiAoY29tcGF0X2dldF9i aXRtYXAobm9kZXNfYWRkcihibSksIG5tYXNrLCBucl9iaXRzKSkKKwkJCXJldHVybiAtRUZBVUxU OwogCQlubSA9IGNvbXBhdF9hbGxvY191c2VyX3NwYWNlKGFsbG9jX3NpemUpOwotCQllcnIgfD0g Y29weV90b191c2VyKG5tLCBub2Rlc19hZGRyKGJtKSwgYWxsb2Nfc2l6ZSk7CisJCWlmIChjb3B5 X3RvX3VzZXIobm0sIG5vZGVzX2FkZHIoYm0pLCBhbGxvY19zaXplKSkKKwkJCXJldHVybiAtRUZB VUxUOwogCX0KIAotCWlmIChlcnIpCi0JCXJldHVybiAtRUZBVUxUOwotCiAJcmV0dXJuIHN5c19t YmluZChzdGFydCwgbGVuLCBtb2RlLCBubSwgbnJfYml0cysxLCBmbGFncyk7CiB9CiAKZGlmZiAt LWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCA5ZGRlYTAyMDBj OTQuLmFiNzkzOGQyMjQ4ZSAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxvYy5jCisrKyBiL21tL3Bh Z2VfYWxsb2MuYwpAQCAtMTg4Myw3ICsxODgzLDcgQEAgc3RhdGljIGJvb2wgem9uZV9sb2NhbChz dHJ1Y3Qgem9uZSAqbG9jYWxfem9uZSwgc3RydWN0IHpvbmUgKnpvbmUpCiAKIHN0YXRpYyBib29s IHpvbmVfYWxsb3dzX3JlY2xhaW0oc3RydWN0IHpvbmUgKmxvY2FsX3pvbmUsIHN0cnVjdCB6b25l ICp6b25lKQogewotCXJldHVybiBub2RlX2Rpc3RhbmNlKHpvbmVfdG9fbmlkKGxvY2FsX3pvbmUp LCB6b25lX3RvX25pZCh6b25lKSkgPAorCXJldHVybiBub2RlX2Rpc3RhbmNlKHpvbmVfdG9fbmlk KGxvY2FsX3pvbmUpLCB6b25lX3RvX25pZCh6b25lKSkgPD0KIAkJCQlSRUNMQUlNX0RJU1RBTkNF OwogfQogCmRpZmYgLS1naXQgYS9tbS92bXByZXNzdXJlLmMgYi9tbS92bXByZXNzdXJlLmMKaW5k ZXggYzVhZmQ1NzNkN2RhLi4zZmIxNWMyNWFmODcgMTAwNjQ0Ci0tLSBhL21tL3ZtcHJlc3N1cmUu YworKysgYi9tbS92bXByZXNzdXJlLmMKQEAgLTExMiw5ICsxMTIsMTYgQEAgc3RhdGljIGVudW0g dm1wcmVzc3VyZV9sZXZlbHMgdm1wcmVzc3VyZV9jYWxjX2xldmVsKHVuc2lnbmVkIGxvbmcgc2Nh bm5lZCwKIAkJCQkJCSAgICB1bnNpZ25lZCBsb25nIHJlY2xhaW1lZCkKIHsKIAl1bnNpZ25lZCBs b25nIHNjYWxlID0gc2Nhbm5lZCArIHJlY2xhaW1lZDsKLQl1bnNpZ25lZCBsb25nIHByZXNzdXJl OworCXVuc2lnbmVkIGxvbmcgcHJlc3N1cmUgPSAwOwogCiAJLyoKKwkgKiByZWNsYWltZWQgY2Fu IGJlIGdyZWF0ZXIgdGhhbiBzY2FubmVkIGluIGNhc2VzCisJICogbGlrZSBUSFAsIHdoZXJlIHRo ZSBzY2FubmVkIGlzIDEgYW5kIHJlY2xhaW1lZAorCSAqIGNvdWxkIGJlIDUxMgorCSAqLworCWlm IChyZWNsYWltZWQgPj0gc2Nhbm5lZCkKKwkJZ290byBvdXQ7CisJLyoKIAkgKiBXZSBjYWxjdWxh dGUgdGhlIHJhdGlvIChpbiBwZXJjZW50cykgb2YgaG93IG1hbnkgcGFnZXMgd2VyZQogCSAqIHNj YW5uZWQgdnMuIHJlY2xhaW1lZCBpbiBhIGdpdmVuIHRpbWUgZnJhbWUgKHdpbmRvdykuIE5vdGUg dGhhdAogCSAqIHRpbWUgaXMgaW4gVk0gcmVjbGFpbWVyJ3MgInRpY2tzIiwgaS5lLiBudW1iZXIg b2YgcGFnZXMKQEAgLTEyNCw2ICsxMzEsNyBAQCBzdGF0aWMgZW51bSB2bXByZXNzdXJlX2xldmVs cyB2bXByZXNzdXJlX2NhbGNfbGV2ZWwodW5zaWduZWQgbG9uZyBzY2FubmVkLAogCXByZXNzdXJl ID0gc2NhbGUgLSAocmVjbGFpbWVkICogc2NhbGUgLyBzY2FubmVkKTsKIAlwcmVzc3VyZSA9IHBy ZXNzdXJlICogMTAwIC8gc2NhbGU7CiAKK291dDoKIAlwcl9kZWJ1ZygiJXM6ICUzbHUgIChzOiAl bHUgIHI6ICVsdSlcbiIsIF9fZnVuY19fLCBwcmVzc3VyZSwKIAkJIHNjYW5uZWQsIHJlY2xhaW1l ZCk7CiAKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L2ZyYWdtZW50YXRpb24uYyBiL25ldC9i YXRtYW4tYWR2L2ZyYWdtZW50YXRpb24uYwppbmRleCBkMmI2ZDUwNjZjMzMuLjY2Y2VmNTE1NzRk NCAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvZnJhZ21lbnRhdGlvbi5jCisrKyBiL25ldC9i YXRtYW4tYWR2L2ZyYWdtZW50YXRpb24uYwpAQCAtMjEyLDggKzIxMiwxMCBAQCBlcnJfdW5sb2Nr OgogCXNwaW5fdW5sb2NrX2JoKCZjaGFpbi0+bG9jayk7CiAKIGVycjoKLQlpZiAoIXJldCkKKwlp ZiAoIXJldCkgewogCQlrZnJlZShmcmFnX2VudHJ5X25ldyk7CisJCWtmcmVlX3NrYihza2IpOwor CX0KIAogCXJldHVybiByZXQ7CiB9CkBAIC0yODgsNyArMjkwLDcgQEAgZnJlZToKICAqCiAgKiBU aGVyZSBhcmUgdGhyZWUgcG9zc2libGUgb3V0Y29tZXM6IDEpIFBhY2tldCBpcyBtZXJnZWQ6IFJl dHVybiB0cnVlIGFuZAogICogc2V0ICpza2IgdG8gbWVyZ2VkIHBhY2tldDsgMikgUGFja2V0IGlz IGJ1ZmZlcmVkOiBSZXR1cm4gdHJ1ZSBhbmQgc2V0ICpza2IKLSAqIHRvIE5VTEw7IDMpIEVycm9y OiBSZXR1cm4gZmFsc2UgYW5kIGxlYXZlIHNrYiBhcyBpcy4KKyAqIHRvIE5VTEw7IDMpIEVycm9y OiBSZXR1cm4gZmFsc2UgYW5kIGZyZWUgc2tiLgogICovCiBib29sIGJhdGFkdl9mcmFnX3NrYl9i dWZmZXIoc3RydWN0IHNrX2J1ZmYgKipza2IsCiAJCQkgICAgc3RydWN0IGJhdGFkdl9vcmlnX25v ZGUgKm9yaWdfbm9kZV9zcmMpCkBAIC0zMTAsOSArMzEyLDkgQEAgYm9vbCBiYXRhZHZfZnJhZ19z a2JfYnVmZmVyKHN0cnVjdCBza19idWZmICoqc2tiLAogCQlnb3RvIG91dF9lcnI7CiAKIG91dDoK LQkqc2tiID0gc2tiX291dDsKIAlyZXQgPSB0cnVlOwogb3V0X2VycjoKKwkqc2tiID0gc2tiX291 dDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC00NTksNiArNDYxLDEwIEBAIGJvb2wgYmF0YWR2X2Zy YWdfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCS8qIEVhdCBhbmQgc2VuZCBm cmFnbWVudHMgZnJvbSB0aGUgdGFpbCBvZiBza2IgKi8KIAl3aGlsZSAoc2tiLT5sZW4gPiBtYXhf ZnJhZ21lbnRfc2l6ZSkgeworCQkvKiBUaGUgaW5pdGlhbCBjaGVjayBpbiB0aGlzIGZ1bmN0aW9u IHNob3VsZCBjb3ZlciB0aGlzIGNhc2UgKi8KKwkJaWYgKHVubGlrZWx5KGZyYWdfaGVhZGVyLm5v ID09IEJBVEFEVl9GUkFHX01BWF9GUkFHTUVOVFMgLSAxKSkKKwkJCWdvdG8gb3V0X2VycjsKKwog CQlza2JfZnJhZ21lbnQgPSBiYXRhZHZfZnJhZ19jcmVhdGUoc2tiLCAmZnJhZ19oZWFkZXIsIG10 dSk7CiAJCWlmICghc2tiX2ZyYWdtZW50KQogCQkJZ290byBvdXRfZXJyOwpAQCAtNDY5LDEwICs0 NzUsNiBAQCBib29sIGJhdGFkdl9mcmFnX3NlbmRfcGFja2V0KHN0cnVjdCBza19idWZmICpza2Is CiAJCWJhdGFkdl9zZW5kX3NrYl9wYWNrZXQoc2tiX2ZyYWdtZW50LCBuZWlnaF9ub2RlLT5pZl9p bmNvbWluZywKIAkJCQkgICAgICAgbmVpZ2hfbm9kZS0+YWRkcik7CiAJCWZyYWdfaGVhZGVyLm5v Kys7Ci0KLQkJLyogVGhlIGluaXRpYWwgY2hlY2sgaW4gdGhpcyBmdW5jdGlvbiBzaG91bGQgY292 ZXIgdGhpcyBjYXNlICovCi0JCWlmIChmcmFnX2hlYWRlci5ubyA9PSBCQVRBRFZfRlJBR19NQVhf RlJBR01FTlRTIC0gMSkKLQkJCWdvdG8gb3V0X2VycjsKIAl9CiAKIAkvKiBNYWtlIHJvb20gZm9y IHRoZSBmcmFnbWVudCBoZWFkZXIuICovCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25l dC9jb3JlL2Rldi5jCmluZGV4IGMxNDI1OGEzODQxZS4uMTQ0MWE0OTM0YzE4IDEwMDY0NAotLS0g YS9uZXQvY29yZS9kZXYuYworKysgYi9uZXQvY29yZS9kZXYuYwpAQCAtMTYwMSwyNyArMTYwMSw1 NCBAQCBFWFBPUlRfU1lNQk9MKGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyk7CiBzdGF0aWMgc3Ry dWN0IHN0YXRpY19rZXkgbmV0c3RhbXBfbmVlZGVkIF9fcmVhZF9tb3N0bHk7CiAjaWZkZWYgSEFW RV9KVU1QX0xBQkVMCiBzdGF0aWMgYXRvbWljX3QgbmV0c3RhbXBfbmVlZGVkX2RlZmVycmVkOwor c3RhdGljIGF0b21pY190IG5ldHN0YW1wX3dhbnRlZDsKIHN0YXRpYyB2b2lkIG5ldHN0YW1wX2Ns ZWFyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlpbnQgZGVmZXJyZWQgPSBhdG9taWNf eGNoZygmbmV0c3RhbXBfbmVlZGVkX2RlZmVycmVkLCAwKTsKKwlpbnQgd2FudGVkOwogCi0Jd2hp bGUgKGRlZmVycmVkLS0pCi0JCXN0YXRpY19rZXlfc2xvd19kZWMoJm5ldHN0YW1wX25lZWRlZCk7 CisJd2FudGVkID0gYXRvbWljX2FkZF9yZXR1cm4oZGVmZXJyZWQsICZuZXRzdGFtcF93YW50ZWQp OworCWlmICh3YW50ZWQgPiAwKQorCQlzdGF0aWNfa2V5X2VuYWJsZSgmbmV0c3RhbXBfbmVlZGVk KTsKKwllbHNlCisJCXN0YXRpY19rZXlfZGlzYWJsZSgmbmV0c3RhbXBfbmVlZGVkKTsKIH0KIHN0 YXRpYyBERUNMQVJFX1dPUksobmV0c3RhbXBfd29yaywgbmV0c3RhbXBfY2xlYXIpOwogI2VuZGlm CiAKIHZvaWQgbmV0X2VuYWJsZV90aW1lc3RhbXAodm9pZCkKIHsKKyNpZmRlZiBIQVZFX0pVTVBf TEFCRUwKKwlpbnQgd2FudGVkOworCisJd2hpbGUgKDEpIHsKKwkJd2FudGVkID0gYXRvbWljX3Jl YWQoJm5ldHN0YW1wX3dhbnRlZCk7CisJCWlmICh3YW50ZWQgPD0gMCkKKwkJCWJyZWFrOworCQlp ZiAoYXRvbWljX2NtcHhjaGcoJm5ldHN0YW1wX3dhbnRlZCwgd2FudGVkLCB3YW50ZWQgKyAxKSA9 PSB3YW50ZWQpCisJCQlyZXR1cm47CisJfQorCWF0b21pY19pbmMoJm5ldHN0YW1wX25lZWRlZF9k ZWZlcnJlZCk7CisJc2NoZWR1bGVfd29yaygmbmV0c3RhbXBfd29yayk7CisjZWxzZQogCXN0YXRp Y19rZXlfc2xvd19pbmMoJm5ldHN0YW1wX25lZWRlZCk7CisjZW5kaWYKIH0KIEVYUE9SVF9TWU1C T0wobmV0X2VuYWJsZV90aW1lc3RhbXApOwogCiB2b2lkIG5ldF9kaXNhYmxlX3RpbWVzdGFtcCh2 b2lkKQogewogI2lmZGVmIEhBVkVfSlVNUF9MQUJFTAotCS8qIG5ldF9kaXNhYmxlX3RpbWVzdGFt cCgpIGNhbiBiZSBjYWxsZWQgZnJvbSBub24gcHJvY2VzcyBjb250ZXh0ICovCi0JYXRvbWljX2lu YygmbmV0c3RhbXBfbmVlZGVkX2RlZmVycmVkKTsKKwlpbnQgd2FudGVkOworCisJd2hpbGUgKDEp IHsKKwkJd2FudGVkID0gYXRvbWljX3JlYWQoJm5ldHN0YW1wX3dhbnRlZCk7CisJCWlmICh3YW50 ZWQgPD0gMSkKKwkJCWJyZWFrOworCQlpZiAoYXRvbWljX2NtcHhjaGcoJm5ldHN0YW1wX3dhbnRl ZCwgd2FudGVkLCB3YW50ZWQgLSAxKSA9PSB3YW50ZWQpCisJCQlyZXR1cm47CisJfQorCWF0b21p Y19kZWMoJm5ldHN0YW1wX25lZWRlZF9kZWZlcnJlZCk7CiAJc2NoZWR1bGVfd29yaygmbmV0c3Rh bXBfd29yayk7CiAjZWxzZQogCXN0YXRpY19rZXlfc2xvd19kZWMoJm5ldHN0YW1wX25lZWRlZCk7 CmRpZmYgLS1naXQgYS9uZXQvZGNjcC9pcHY0LmMgYi9uZXQvZGNjcC9pcHY0LmMKaW5kZXggN2Q5 YjIxYTdkYmI2Li40MjlhYzE5MDk0ZjggMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjQuYworKysg Yi9uZXQvZGNjcC9pcHY0LmMKQEAgLTEwNDUsOSArMTA0NSwxNSBAQCBzdGF0aWMgdm9pZCBfX25l dF9leGl0IGRjY3BfdjRfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCWluZXRfY3RsX3NvY2tf ZGVzdHJveShuZXQtPmRjY3AudjRfY3RsX3NrKTsKIH0KIAorc3RhdGljIHZvaWQgX19uZXRfZXhp dCBkY2NwX3Y0X2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdCkKK3sK KwlpbmV0X3R3c2tfcHVyZ2UoJmRjY3BfaGFzaGluZm8sICZkY2NwX2RlYXRoX3JvdywgQUZfSU5F VCk7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZGNjcF92NF9vcHMgPSB7 CiAJLmluaXQJPSBkY2NwX3Y0X2luaXRfbmV0LAogCS5leGl0CT0gZGNjcF92NF9leGl0X25ldCwK KwkuZXhpdF9iYXRjaCA9IGRjY3BfdjRfZXhpdF9iYXRjaCwKIH07CiAKIHN0YXRpYyBpbnQgX19p bml0IGRjY3BfdjRfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2Ni5jIGIvbmV0 L2RjY3AvaXB2Ni5jCmluZGV4IGI0MjE1MWJlOGFmYS4uMDYyMmY3MjFlYjJjIDEwMDY0NAotLS0g YS9uZXQvZGNjcC9pcHY2LmMKKysrIGIvbmV0L2RjY3AvaXB2Ni5jCkBAIC00ODYsNiArNDg2LDkg QEAgc3RhdGljIHN0cnVjdCBzb2NrICpkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKHN0cnVjdCBz b2NrICpzaywKIAkJbmV3c2stPnNrX2JhY2tsb2dfcmN2ID0gZGNjcF92NF9kb19yY3Y7CiAJCW5l d25wLT5wa3RvcHRpb25zICA9IE5VTEw7CiAJCW5ld25wLT5vcHQJICAgPSBOVUxMOworCQluZXdu cC0+aXB2Nl9tY19saXN0ID0gTlVMTDsKKwkJbmV3bnAtPmlwdjZfYWNfbGlzdCA9IE5VTEw7CisJ CW5ld25wLT5pcHY2X2ZsX2xpc3QgPSBOVUxMOwogCQluZXducC0+bWNhc3Rfb2lmICAgPSBpbmV0 Nl9paWYoc2tiKTsKIAkJbmV3bnAtPm1jYXN0X2hvcHMgID0gaXB2Nl9oZHIoc2tiKS0+aG9wX2xp bWl0OwogCkBAIC01NjEsNiArNTY0LDkgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpkY2NwX3Y2X3Jl cXVlc3RfcmVjdl9zb2NrKHN0cnVjdCBzb2NrICpzaywKIAkvKiBDbG9uZSBSWCBiaXRzICovCiAJ bmV3bnAtPnJ4b3B0LmFsbCA9IG5wLT5yeG9wdC5hbGw7CiAKKwluZXducC0+aXB2Nl9tY19saXN0 ID0gTlVMTDsKKwluZXducC0+aXB2Nl9hY19saXN0ID0gTlVMTDsKKwluZXducC0+aXB2Nl9mbF9s aXN0ID0gTlVMTDsKIAkvKiBDbG9uZSBwa3RvcHRpb25zIHJlY2VpdmVkIHdpdGggU1lOICovCiAJ bmV3bnAtPnBrdG9wdGlvbnMgPSBOVUxMOwogCWlmIChpcmVxLT5wa3RvcHRzICE9IE5VTEwpIHsK QEAgLTExNDMsOSArMTE0OSwxNSBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IGRjY3BfdjZfZXhp dF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCWluZXRfY3RsX3NvY2tfZGVzdHJveShuZXQtPmRjY3Au djZfY3RsX3NrKTsKIH0KIAorc3RhdGljIHZvaWQgX19uZXRfZXhpdCBkY2NwX3Y2X2V4aXRfYmF0 Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdCkKK3sKKwlpbmV0X3R3c2tfcHVyZ2Uo JmRjY3BfaGFzaGluZm8sICZkY2NwX2RlYXRoX3JvdywgQUZfSU5FVDYpOworfQorCiBzdGF0aWMg c3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIGRjY3BfdjZfb3BzID0gewogCS5pbml0ICAgPSBkY2Nw X3Y2X2luaXRfbmV0LAogCS5leGl0ICAgPSBkY2NwX3Y2X2V4aXRfbmV0LAorCS5leGl0X2JhdGNo ID0gZGNjcF92Nl9leGl0X2JhdGNoLAogfTsKIAogc3RhdGljIGludCBfX2luaXQgZGNjcF92Nl9p bml0KHZvaWQpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIv bmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwppbmRleCAxNGQwMmVhOTA1YjYuLjVlMmM0 ZDUzNWIyNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYworKysg Yi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jCkBAIC02NzcsNiArNjc3LDggQEAgc3Ry dWN0IHNvY2sgKmluZXRfY3NrX2Nsb25lX2xvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLAogCQlp bmV0X3NrKG5ld3NrKS0+aW5ldF9zcG9ydCA9IGh0b25zKGluZXRfcnNrKHJlcSktPmlyX251bSk7 CiAJCW5ld3NrLT5za193cml0ZV9zcGFjZSA9IHNrX3N0cmVhbV93cml0ZV9zcGFjZTsKIAorCQlp bmV0X3NrKG5ld3NrKS0+bWNfbGlzdCA9IE5VTEw7CisKIAkJbmV3c2stPnNrX21hcmsgPSBpbmV0 X3JzayhyZXEpLT5pcl9tYXJrOwogCiAJCW5ld2ljc2stPmljc2tfcmV0cmFuc21pdHMgPSAwOwpk aWZmIC0tZ2l0IGEvbmV0L2lwdjQvcGluZy5jIGIvbmV0L2lwdjQvcGluZy5jCmluZGV4IDU3MWRh YmZlOWVmMy4uM2UzYmQwODE5OTg3IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9waW5nLmMKKysrIGIv bmV0L2lwdjQvcGluZy5jCkBAIC0xNTQsMTcgKzE1NCwxOCBAQCB2b2lkIHBpbmdfaGFzaChzdHJ1 Y3Qgc29jayAqc2spCiB2b2lkIHBpbmdfdW5oYXNoKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1 Y3QgaW5ldF9zb2NrICppc2sgPSBpbmV0X3NrKHNrKTsKKwogCXByX2RlYnVnKCJwaW5nX3VuaGFz aChpc2s9JXAsaXNrLT5udW09JXUpXG4iLCBpc2ssIGlzay0+aW5ldF9udW0pOworCXdyaXRlX2xv Y2tfYmgoJnBpbmdfdGFibGUubG9jayk7CiAJaWYgKHNrX2hhc2hlZChzaykpIHsKLQkJd3JpdGVf bG9ja19iaCgmcGluZ190YWJsZS5sb2NrKTsKIAkJaGxpc3RfbnVsbHNfZGVsKCZzay0+c2tfbnVs bHNfbm9kZSk7CiAJCXNrX251bGxzX25vZGVfaW5pdCgmc2stPnNrX251bGxzX25vZGUpOwogCQlz b2NrX3B1dChzayk7CiAJCWlzay0+aW5ldF9udW0gPSAwOwogCQlpc2stPmluZXRfc3BvcnQgPSAw OwogCQlzb2NrX3Byb3RfaW51c2VfYWRkKHNvY2tfbmV0KHNrKSwgc2stPnNrX3Byb3QsIC0xKTsK LQkJd3JpdGVfdW5sb2NrX2JoKCZwaW5nX3RhYmxlLmxvY2spOwogCX0KKwl3cml0ZV91bmxvY2tf YmgoJnBpbmdfdGFibGUubG9jayk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwaW5nX3VuaGFzaCk7 CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jCmluZGV4 IDc3YmY2YmRlMzhjYy4uYjhkYzVkOGNkZWRmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5j CisrKyBiL25ldC9pcHY0L3JvdXRlLmMKQEAgLTE4NzksNiArMTg3OSw3IEBAIGludCBpcF9yb3V0 ZV9pbnB1dF9ub3JlZihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgZGFkZHIsIF9fYmUzMiBz YWRkciwKIHsKIAlpbnQgcmVzOwogCisJdG9zICY9IElQVE9TX1JUX01BU0s7CiAJcmN1X3JlYWRf bG9jaygpOwogCiAJLyogTXVsdGljYXN0IHJlY29nbml0aW9uIGxvZ2ljIGlzIG1vdmVkIGZyb20g cm91dGUgY2FjaGUgdG8gaGVyZS4KZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9taW5pc29ja3Mu YyBiL25ldC9pcHY0L3RjcF9taW5pc29ja3MuYwppbmRleCAwYzAyNTUxMzY5OTIuLjkzYTczMTYx NGY2YSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jCisrKyBiL25ldC9pcHY0 L3RjcF9taW5pc29ja3MuYwpAQCAtMTAxLDcgKzEwMSw4IEBAIHRjcF90aW1ld2FpdF9zdGF0ZV9w cm9jZXNzKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LAogCQl0Y3BfcGFyc2Vfb3B0aW9ucyhza2IsICZ0bXBfb3B0LCAwLCBOVUxMKTsKIAogCQlpZiAo dG1wX29wdC5zYXdfdHN0YW1wKSB7Ci0JCQl0bXBfb3B0LnJjdl90c2VjcgktPSB0Y3B0dy0+dHdf dHNfb2Zmc2V0OworCQkJaWYgKHRtcF9vcHQucmN2X3RzZWNyKQorCQkJCXRtcF9vcHQucmN2X3Rz ZWNyIC09IHRjcHR3LT50d190c19vZmZzZXQ7CiAJCQl0bXBfb3B0LnRzX3JlY2VudAk9IHRjcHR3 LT50d190c19yZWNlbnQ7CiAJCQl0bXBfb3B0LnRzX3JlY2VudF9zdGFtcAk9IHRjcHR3LT50d190 c19yZWNlbnRfc3RhbXA7CiAJCQlwYXdzX3JlamVjdCA9IHRjcF9wYXdzX3JlamVjdCgmdG1wX29w dCwgdGgtPnJzdCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jIGIvbmV0L2lw djYvaXA2X29mZmxvYWQuYwppbmRleCBmOTg3ZThhMTI4MmIuLjBkNTc3MjM5MzAxNCAxMDA2NDQK LS0tIGEvbmV0L2lwdjYvaXA2X29mZmxvYWQuYworKysgYi9uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5j CkBAIC04Niw3ICs4Niw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaXB2Nl9nc29fc2VnbWVu dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWNvbnN0IHN0cnVjdCBuZXRfb2ZmbG9hZCAqb3BzOwog CWludCBwcm90bzsKIAlzdHJ1Y3QgZnJhZ19oZHIgKmZwdHI7Ci0JdW5zaWduZWQgaW50IHVuZnJh Z19pcDZobGVuOwogCXU4ICpwcmV2aGRyOwogCWludCBvZmZzZXQgPSAwOwogCWJvb2wgZW5jYXAs IHVkcGZyYWc7CkBAIC0xNDQsOCArMTQzLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaXB2 Nl9nc29fc2VnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlza2ItPm5ldHdvcmtfaGVhZGVy ID0gKHU4ICopaXB2NmggLSBza2ItPmhlYWQ7CiAKIAkJaWYgKHVkcGZyYWcpIHsKLQkJCXVuZnJh Z19pcDZobGVuID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsICZwcmV2aGRyKTsKLQkJCWZwdHIg PSAoc3RydWN0IGZyYWdfaGRyICopKCh1OCAqKWlwdjZoICsgdW5mcmFnX2lwNmhsZW4pOworCQkJ aW50IGVyciA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCAmcHJldmhkcik7CisJCQlpZiAoZXJy IDwgMCkKKwkJCQlyZXR1cm4gRVJSX1BUUihlcnIpOworCQkJZnB0ciA9IChzdHJ1Y3QgZnJhZ19o ZHIgKikoKHU4ICopaXB2NmggKyBlcnIpOwogCQkJZnB0ci0+ZnJhZ19vZmYgPSBodG9ucyhvZmZz ZXQpOwogCQkJaWYgKHNrYi0+bmV4dCAhPSBOVUxMKQogCQkJCWZwdHItPmZyYWdfb2ZmIHw9IGh0 b25zKElQNl9NRik7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2 Ni9pcDZfb3V0cHV0LmMKaW5kZXggNzA0NmFmMjVkNmJlLi5jYmU3ZGRlYjY5YzAgMTAwNjQ0Ci0t LSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYworKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKQEAg LTU2Niw3ICs1NjYsMTAgQEAgaW50IGlwNl9mcmFnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBp bnQgKCpvdXRwdXQpKHN0cnVjdCBza19idWZmICopKQogCXU4ICpwcmV2aGRyLCBuZXh0aGRyID0g MDsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KHNrYl9kc3Qoc2tiKS0+ZGV2KTsKIAotCWhs ZW4gPSBpcDZfZmluZF8xc3RmcmFnb3B0KHNrYiwgJnByZXZoZHIpOworCWVyciA9IGlwNl9maW5k XzFzdGZyYWdvcHQoc2tiLCAmcHJldmhkcik7CisJaWYgKGVyciA8IDApCisJCWdvdG8gZmFpbDsK KwlobGVuID0gZXJyOwogCW5leHRoZHIgPSAqcHJldmhkcjsKIAogCW10dSA9IGlwNl9za2JfZHN0 X210dShza2IpOwpAQCAtMTM2NCw2ICsxMzY3LDExIEBAIGFsbG9jX25ld19za2I6CiAJCQkgKi8K IAkJCWFsbG9jbGVuICs9IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpOwogCisJCQljb3B5ID0gZGF0 YWxlbiAtIHRyYW5zaGRybGVuIC0gZnJhZ2dhcDsKKwkJCWlmIChjb3B5IDwgMCkgeworCQkJCWVy ciA9IC1FSU5WQUw7CisJCQkJZ290byBlcnJvcjsKKwkJCX0KIAkJCWlmICh0cmFuc2hkcmxlbikg ewogCQkJCXNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssCiAJCQkJCQlhbGxvY2xlbiArIGho X2xlbiwKQEAgLTE0MTYsMTMgKzE0MjQsOSBAQCBhbGxvY19uZXdfc2tiOgogCQkJCWRhdGEgKz0g ZnJhZ2dhcDsKIAkJCQlwc2tiX3RyaW1fdW5pcXVlKHNrYl9wcmV2LCBtYXhmcmFnbGVuKTsKIAkJ CX0KLQkJCWNvcHkgPSBkYXRhbGVuIC0gdHJhbnNoZHJsZW4gLSBmcmFnZ2FwOwotCi0JCQlpZiAo Y29weSA8IDApIHsKLQkJCQllcnIgPSAtRUlOVkFMOwotCQkJCWtmcmVlX3NrYihza2IpOwotCQkJ CWdvdG8gZXJyb3I7Ci0JCQl9IGVsc2UgaWYgKGNvcHkgPiAwICYmIGdldGZyYWcoZnJvbSwgZGF0 YSArIHRyYW5zaGRybGVuLCBvZmZzZXQsIGNvcHksIGZyYWdnYXAsIHNrYikgPCAwKSB7CisJCQlp ZiAoY29weSA+IDAgJiYKKwkJCSAgICBnZXRmcmFnKGZyb20sIGRhdGEgKyB0cmFuc2hkcmxlbiwg b2Zmc2V0LAorCQkJCSAgICBjb3B5LCBmcmFnZ2FwLCBza2IpIDwgMCkgewogCQkJCWVyciA9IC1F RkFVTFQ7CiAJCQkJa2ZyZWVfc2tiKHNrYik7CiAJCQkJZ290byBlcnJvcjsKZGlmZiAtLWdpdCBh L25ldC9pcHY2L291dHB1dF9jb3JlLmMgYi9uZXQvaXB2Ni9vdXRwdXRfY29yZS5jCmluZGV4IDFl OTg3ZTY4ZTUxMC4uMGZjYWYzODAwNmY5IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9vdXRwdXRfY29y ZS5jCisrKyBiL25ldC9pcHY2L291dHB1dF9jb3JlLmMKQEAgLTQ1LDE0ICs0NSwxMyBAQCBFWFBP UlRfU1lNQk9MX0dQTChpcHY2X3Byb3h5X3NlbGVjdF9pZGVudCk7CiBpbnQgaXA2X2ZpbmRfMXN0 ZnJhZ29wdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqKm5leHRoZHIpCiB7CiAJdTE2IG9mZnNl dCA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7Ci0Jc3RydWN0IGlwdjZfb3B0X2hkciAqZXh0aGRy ID0KLQkJCQkoc3RydWN0IGlwdjZfb3B0X2hkciAqKShpcHY2X2hkcihza2IpICsgMSk7CiAJdW5z aWduZWQgaW50IHBhY2tldF9sZW4gPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLQogCQlza2JfbmV0 d29ya19oZWFkZXIoc2tiKTsKIAlpbnQgZm91bmRfcmhkciA9IDA7CiAJKm5leHRoZHIgPSAmaXB2 Nl9oZHIoc2tiKS0+bmV4dGhkcjsKIAotCXdoaWxlIChvZmZzZXQgKyAxIDw9IHBhY2tldF9sZW4p IHsKKwl3aGlsZSAob2Zmc2V0IDw9IHBhY2tldF9sZW4pIHsKKwkJc3RydWN0IGlwdjZfb3B0X2hk ciAqZXh0aGRyOwogCiAJCXN3aXRjaCAoKipuZXh0aGRyKSB7CiAKQEAgLTczLDEzICs3MiwxNiBA QCBpbnQgaXA2X2ZpbmRfMXN0ZnJhZ29wdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqKm5leHRo ZHIpCiAJCQlyZXR1cm4gb2Zmc2V0OwogCQl9CiAKLQkJb2Zmc2V0ICs9IGlwdjZfb3B0bGVuKGV4 dGhkcik7Ci0JCSpuZXh0aGRyID0gJmV4dGhkci0+bmV4dGhkcjsKKwkJaWYgKG9mZnNldCArIHNp emVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSA+IHBhY2tldF9sZW4pCisJCQlyZXR1cm4gLUVJTlZB TDsKKwogCQlleHRoZHIgPSAoc3RydWN0IGlwdjZfb3B0X2hkciAqKShza2JfbmV0d29ya19oZWFk ZXIoc2tiKSArCiAJCQkJCQkgb2Zmc2V0KTsKKwkJb2Zmc2V0ICs9IGlwdjZfb3B0bGVuKGV4dGhk cik7CisJCSpuZXh0aGRyID0gJmV4dGhkci0+bmV4dGhkcjsKIAl9CiAKLQlyZXR1cm4gb2Zmc2V0 OworCXJldHVybiAtRUlOVkFMOwogfQogRVhQT1JUX1NZTUJPTChpcDZfZmluZF8xc3RmcmFnb3B0 KTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMKaW5k ZXggODg5ZTA2NjI2YzI2Li44MGEzYjYyMWRjMDkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRl LmMKKysrIGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtMTczMyw2ICsxNzMzLDggQEAgc3RhdGljIGlu dCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKQogCQkJCWNvbnRpbnVlOwog CQkJaWYgKGNmZy0+ZmNfbWV0cmljICYmIGNmZy0+ZmNfbWV0cmljICE9IHJ0LT5ydDZpX21ldHJp YykKIAkJCQljb250aW51ZTsKKwkJCWlmIChjZmctPmZjX3Byb3RvY29sICYmIGNmZy0+ZmNfcHJv dG9jb2wgIT0gcnQtPnJ0NmlfcHJvdG9jb2wpCisJCQkJY29udGludWU7CiAJCQlkc3RfaG9sZCgm cnQtPmRzdCk7CiAJCQlyZWFkX3VubG9ja19iaCgmdGFibGUtPnRiNl9sb2NrKTsKIApkaWZmIC0t Z2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggYzZj OTIxZDE1ZGU0Li5iNTczNWIzMDY2N2QgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmMK KysrIGIvbmV0L2lwdjYvdGNwX2lwdjYuYwpAQCAtMTE3Nyw2ICsxMTc3LDcgQEAgc3RhdGljIHN0 cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBz a19idWZmICpza2IsCiAJCW5ld3RwLT5hZl9zcGVjaWZpYyA9ICZ0Y3Bfc29ja19pcHY2X21hcHBl ZF9zcGVjaWZpYzsKICNlbmRpZgogCisJCW5ld25wLT5pcHY2X21jX2xpc3QgPSBOVUxMOwogCQlu ZXducC0+aXB2Nl9hY19saXN0ID0gTlVMTDsKIAkJbmV3bnAtPmlwdjZfZmxfbGlzdCA9IE5VTEw7 CiAJCW5ld25wLT5wa3RvcHRpb25zICA9IE5VTEw7CkBAIC0xMjQ2LDYgKzEyNDcsNyBAQCBzdGF0 aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKHN0cnVjdCBzb2NrICpzaywgc3Ry dWN0IHNrX2J1ZmYgKnNrYiwKIAkgICBGaXJzdDogbm8gSVB2NCBvcHRpb25zLgogCSAqLwogCW5l d2luZXQtPmluZXRfb3B0ID0gTlVMTDsKKwluZXducC0+aXB2Nl9tY19saXN0ID0gTlVMTDsKIAlu ZXducC0+aXB2Nl9hY19saXN0ID0gTlVMTDsKIAluZXducC0+aXB2Nl9mbF9saXN0ID0gTlVMTDsK IApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdWRwX29mZmxvYWQuYyBiL25ldC9pcHY2L3VkcF9vZmZs b2FkLmMKaW5kZXggMGFlM2Q5OGY4M2UwLi4zZGQ5ODkxY2ZhNzcgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L3VkcF9vZmZsb2FkLmMKKysrIGIvbmV0L2lwdjYvdWRwX29mZmxvYWQuYwpAQCAtNTEsNiAr NTEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnVkcDZfdWZvX2ZyYWdtZW50KHN0cnVjdCBz a19idWZmICpza2IsCiAJaW50IG9mZnNldDsKIAlfX3dzdW0gY3N1bTsKIAlpbnQgdG5sX2hsZW47 CisJaW50IGVycjsKIAogCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemU7CiAJaWYgKHVu bGlrZWx5KHNrYi0+bGVuIDw9IG1zcykpCkBAIC0xMDEsNyArMTAyLDEwIEBAIHN0YXRpYyBzdHJ1 Y3Qgc2tfYnVmZiAqdWRwNl91Zm9fZnJhZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJLyog RmluZCB0aGUgdW5mcmFnbWVudGFibGUgaGVhZGVyIGFuZCBzaGlmdCBpdCBsZWZ0IGJ5IGZyYWdf aGRyX3N6CiAJCSAqIGJ5dGVzIHRvIGluc2VydCBmcmFnbWVudCBoZWFkZXIuCiAJCSAqLwotCQl1 bmZyYWdfaXA2aGxlbiA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCAmcHJldmhkcik7CisJCWVy ciA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCAmcHJldmhkcik7CisJCWlmIChlcnIgPCAwKQor CQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKKwkJdW5mcmFnX2lwNmhsZW4gPSBlcnI7CiAJCW5leHRo ZHIgPSAqcHJldmhkcjsKIAkJKnByZXZoZHIgPSBORVhUSERSX0ZSQUdNRU5UOwogCQl1bmZyYWdf bGVuID0gKHNrYl9uZXR3b3JrX2hlYWRlcihza2IpIC0gc2tiX21hY19oZWFkZXIoc2tiKSkgKwpk aWZmIC0tZ2l0IGEvbmV0L2lweC9hZl9pcHguYyBiL25ldC9pcHgvYWZfaXB4LmMKaW5kZXggMWIw OTVjYTM3YWE0Li5iYzA0M2RjOTg5NjMgMTAwNjQ0Ci0tLSBhL25ldC9pcHgvYWZfaXB4LmMKKysr IGIvbmV0L2lweC9hZl9pcHguYwpAQCAtMTE2OCwxMSArMTE2OCwxMCBAQCBzdGF0aWMgaW50IGlw eGl0Zl9pb2N0bCh1bnNpZ25lZCBpbnQgY21kLCB2b2lkIF9fdXNlciAqYXJnKQogCQlzaXB4LT5z aXB4X25ldHdvcmsJPSBpcHhpZi0+aWZfbmV0bnVtOwogCQltZW1jcHkoc2lweC0+c2lweF9ub2Rl LCBpcHhpZi0+aWZfbm9kZSwKIAkJCXNpemVvZihzaXB4LT5zaXB4X25vZGUpKTsKLQkJcmMgPSAt RUZBVUxUOworCQlyYyA9IDA7CiAJCWlmIChjb3B5X3RvX3VzZXIoYXJnLCAmaWZyLCBzaXplb2Yo aWZyKSkpCi0JCQlicmVhazsKKwkJCXJjID0gLUVGQVVMVDsKIAkJaXB4aXRmX3B1dChpcHhpZik7 Ci0JCXJjID0gMDsKIAkJYnJlYWs7CiAJfQogCWNhc2UgU0lPQ0FJUFhJVEZDUlQ6CmRpZmYgLS1n aXQgYS9uZXQvbDJ0cC9sMnRwX2NvcmUuYyBiL25ldC9sMnRwL2wydHBfY29yZS5jCmluZGV4IDc2 ZjRjNWM5YTQ2Ni4uNmUxZTk4YzNiZGNkIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUu YworKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuYwpAQCAtMTMxNiw2ICsxMzE2LDkgQEAgc3RhdGlj IHZvaWQgbDJ0cF90dW5uZWxfZGVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0 cnVjdCBzb2NrICpzayA9IE5VTEw7CiAKIAl0dW5uZWwgPSBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IGwydHBfdHVubmVsLCBkZWxfd29yayk7CisKKwlsMnRwX3R1bm5lbF9jbG9zZWFsbCh0dW5u ZWwpOworCiAJc2sgPSBsMnRwX3R1bm5lbF9zb2NrX2xvb2t1cCh0dW5uZWwpOwogCWlmICghc2sp CiAJCWdvdG8gb3V0OwpAQCAtMTY3Niw3ICsxNjc5LDYgQEAgRVhQT1JUX1NZTUJPTF9HUEwobDJ0 cF90dW5uZWxfY3JlYXRlKTsKIGludCBsMnRwX3R1bm5lbF9kZWxldGUoc3RydWN0IGwydHBfdHVu bmVsICp0dW5uZWwpCiB7CiAJbDJ0cF90dW5uZWxfaW5jX3JlZmNvdW50KHR1bm5lbCk7Ci0JbDJ0 cF90dW5uZWxfY2xvc2VhbGwodHVubmVsKTsKIAlpZiAoZmFsc2UgPT0gcXVldWVfd29yayhsMnRw X3dxLCAmdHVubmVsLT5kZWxfd29yaykpIHsKIAkJbDJ0cF90dW5uZWxfZGVjX3JlZmNvdW50KHR1 bm5lbCk7CiAJCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3BtLmMgYi9uZXQv bWFjODAyMTEvcG0uYwppbmRleCAwOTBiZGYxMWNhZWQuLmM1NzA2YjBiYjY4MyAxMDA2NDQKLS0t IGEvbmV0L21hYzgwMjExL3BtLmMKKysrIGIvbmV0L21hYzgwMjExL3BtLmMKQEAgLTExNCw2ICsx MTQsNyBAQCBpbnQgX19pZWVlODAyMTFfc3VzcGVuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywg c3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293bGFuKQogCQkJYnJlYWs7CiAJCX0KIAorCQlmbHVz aF9kZWxheWVkX3dvcmsoJnNkYXRhLT5kZWNfdGFpbHJvb21fbmVlZGVkX3drKTsKIAkJZHJ2X3Jl bW92ZV9pbnRlcmZhY2UobG9jYWwsIHNkYXRhKTsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9wYWNr ZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCmluZGV4IDE5M2VhYzk5Mjgx NC4uNWI0ZmI5MjE0NGIwIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBi L25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTMzNDksNiArMzM0OSw4IEBAIHBhY2tldF9zZXRz b2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoYXIg X191c2VyICpvcHR2CiAJCQlyZXR1cm4gLUVCVVNZOwogCQlpZiAoY29weV9mcm9tX3VzZXIoJnZh bCwgb3B0dmFsLCBzaXplb2YodmFsKSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKKwkJaWYgKHZhbCA+ IElOVF9NQVgpCisJCQlyZXR1cm4gLUVJTlZBTDsKIAkJcG8tPnRwX3Jlc2VydmUgPSB2YWw7CiAJ CXJldHVybiAwOwogCX0KQEAgLTM4NDIsOCArMzg0NCw4IEBAIHN0YXRpYyBpbnQgcGFja2V0X3Nl dF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsCiAJCWlm ICh1bmxpa2VseShyZXEtPnRwX2Jsb2NrX3NpemUgJiAoUEFHRV9TSVpFIC0gMSkpKQogCQkJZ290 byBvdXQ7CiAJCWlmIChwby0+dHBfdmVyc2lvbiA+PSBUUEFDS0VUX1YzICYmCi0JCSAgICAoaW50 KShyZXEtPnRwX2Jsb2NrX3NpemUgLQotCQkJICBCTEtfUExVU19QUklWKHJlcV91LT5yZXEzLnRw X3NpemVvZl9wcml2KSkgPD0gMCkKKwkJICAgIHJlcS0+dHBfYmxvY2tfc2l6ZSA8PQorCQkJICBC TEtfUExVU19QUklWKCh1NjQpcmVxX3UtPnJlcTMudHBfc2l6ZW9mX3ByaXYpKQogCQkJZ290byBv dXQ7CiAJCWlmICh1bmxpa2VseShyZXEtPnRwX2ZyYW1lX3NpemUgPCBwby0+dHBfaGRybGVuICsK IAkJCQkJcG8tPnRwX3Jlc2VydmUpKQpAQCAtMzg1NCw2ICszODU2LDggQEAgc3RhdGljIGludCBw YWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFf dSwKIAkJcmItPmZyYW1lc19wZXJfYmxvY2sgPSByZXEtPnRwX2Jsb2NrX3NpemUvcmVxLT50cF9m cmFtZV9zaXplOwogCQlpZiAodW5saWtlbHkocmItPmZyYW1lc19wZXJfYmxvY2sgPD0gMCkpCiAJ CQlnb3RvIG91dDsKKwkJaWYgKHVubGlrZWx5KHJlcS0+dHBfYmxvY2tfc2l6ZSA+IFVJTlRfTUFY IC8gcmVxLT50cF9ibG9ja19ucikpCisJCQlnb3RvIG91dDsKIAkJaWYgKHVubGlrZWx5KChyYi0+ ZnJhbWVzX3Blcl9ibG9jayAqIHJlcS0+dHBfYmxvY2tfbnIpICE9CiAJCQkJCXJlcS0+dHBfZnJh bWVfbnIpKQogCQkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIv bmV0L3NjaGVkL2FjdF9hcGkuYwppbmRleCA1NTMwN2NjZjQ0NTMuLmU3YjBjN2FmNDZkYyAxMDA2 NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuYworKysgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCkBA IC03OTksMTAgKzc5OSw4IEBAIHN0YXRpYyBpbnQgdGNhX2FjdGlvbl9mbHVzaChzdHJ1Y3QgbmV0 ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwKIAkJZ290byBvdXRfbW9kdWxlX3B1dDsKIAogCWVy ciA9IGEub3BzLT53YWxrKHNrYiwgJmRjYiwgUlRNX0RFTEFDVElPTiwgJmEpOwotCWlmIChlcnIg PCAwKQorCWlmIChlcnIgPD0gMCkKIAkJZ290byBvdXRfbW9kdWxlX3B1dDsKLQlpZiAoZXJyID09 IDApCi0JCWdvdG8gbm9mbHVzaF9vdXQ7CiAKIAlubGFfbmVzdF9lbmQoc2tiLCBuZXN0KTsKIApA QCAtODE5LDcgKzgxNyw2IEBAIHN0YXRpYyBpbnQgdGNhX2FjdGlvbl9mbHVzaChzdHJ1Y3QgbmV0 ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwKIG91dF9tb2R1bGVfcHV0OgogCW1vZHVsZV9wdXQo YS5vcHMtPm93bmVyKTsKIGVycl9vdXQ6Ci1ub2ZsdXNoX291dDoKIAlrZnJlZV9za2Ioc2tiKTsK IAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvaXB2Ni5jIGIvbmV0L3NjdHAv aXB2Ni5jCmluZGV4IDY4MjY1YjI1NTYzOC4uOGFkMTNiYTczMWI5IDEwMDY0NAotLS0gYS9uZXQv c2N0cC9pcHY2LmMKKysrIGIvbmV0L3NjdHAvaXB2Ni5jCkBAIC02NTksNiArNjU5LDkgQEAgc3Rh dGljIHN0cnVjdCBzb2NrICpzY3RwX3Y2X2NyZWF0ZV9hY2NlcHRfc2soc3RydWN0IHNvY2sgKnNr LAogCW5ld25wID0gaW5ldDZfc2sobmV3c2spOwogCiAJbWVtY3B5KG5ld25wLCBucCwgc2l6ZW9m KHN0cnVjdCBpcHY2X3BpbmZvKSk7CisJbmV3bnAtPmlwdjZfbWNfbGlzdCA9IE5VTEw7CisJbmV3 bnAtPmlwdjZfYWNfbGlzdCA9IE5VTEw7CisJbmV3bnAtPmlwdjZfZmxfbGlzdCA9IE5VTEw7CiAK IAlyY3VfcmVhZF9sb2NrKCk7CiAJb3B0ID0gcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpOwpkaWZm IC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuYwppbmRl eCA4MDU5ZTQxMmM5ZjMuLmE2ZDU0YTlhMTEzMyAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91 c2VyLmMKKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmMKQEAgLTM4Nyw3ICszODcsMTQgQEAgc3Rh dGljIGlubGluZSBpbnQgeGZybV9yZXBsYXlfdmVyaWZ5X2xlbihzdHJ1Y3QgeGZybV9yZXBsYXlf c3RhdGVfZXNuICpyZXBsYXlfZXMKIAl1cCA9IG5sYV9kYXRhKHJwKTsKIAl1bGVuID0geGZybV9y ZXBsYXlfc3RhdGVfZXNuX2xlbih1cCk7CiAKLQlpZiAobmxhX2xlbihycCkgPCB1bGVuIHx8IHhm cm1fcmVwbGF5X3N0YXRlX2Vzbl9sZW4ocmVwbGF5X2VzbikgIT0gdWxlbikKKwkvKiBDaGVjayB0 aGUgb3ZlcmFsbCBsZW5ndGggYW5kIHRoZSBpbnRlcm5hbCBiaXRtYXAgbGVuZ3RoIHRvIGF2b2lk CisJICogcG90ZW50aWFsIG92ZXJmbG93LiAqLworCWlmIChubGFfbGVuKHJwKSA8IHVsZW4gfHwK KwkgICAgeGZybV9yZXBsYXlfc3RhdGVfZXNuX2xlbihyZXBsYXlfZXNuKSAhPSB1bGVuIHx8CisJ ICAgIHJlcGxheV9lc24tPmJtcF9sZW4gIT0gdXAtPmJtcF9sZW4pCisJCXJldHVybiAtRUlOVkFM OworCisJaWYgKHVwLT5yZXBsYXlfd2luZG93ID4gdXAtPmJtcF9sZW4gKiBzaXplb2YoX191MzIp ICogOCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3NhbXBs ZXMvc2VjY29tcC9icGYtaGVscGVyLmggYi9zYW1wbGVzL3NlY2NvbXAvYnBmLWhlbHBlci5oCmlu ZGV4IDM4ZWU3MGYzY2Q1Yi4uMWQ4ZGU5ZWRkODU4IDEwMDY0NAotLS0gYS9zYW1wbGVzL3NlY2Nv bXAvYnBmLWhlbHBlci5oCisrKyBiL3NhbXBsZXMvc2VjY29tcC9icGYtaGVscGVyLmgKQEAgLTEz OCw3ICsxMzgsNyBAQCB1bmlvbiBhcmc2NCB7CiAjZGVmaW5lIEFSR18zMihpZHgpIFwKIAlCUEZf U1RNVChCUEZfTEQrQlBGX1crQlBGX0FCUywgTE9fQVJHKGlkeCkpCiAKLS8qIExvYWRzIGhpIGlu dG8gQSBhbmQgbG8gaW4gWCAqLworLyogTG9hZHMgbG8gaW50byBNWzBdIGFuZCBoaSBpbnRvIE1b MV0gYW5kIEEgKi8KICNkZWZpbmUgQVJHXzY0KGlkeCkgXAogCUJQRl9TVE1UKEJQRl9MRCtCUEZf VytCUEZfQUJTLCBMT19BUkcoaWR4KSksIFwKIAlCUEZfU1RNVChCUEZfU1QsIDApLCAvKiBsbyAt PiBNWzBdICovIFwKQEAgLTE1Myw4OCArMTUzLDEwNyBAQCB1bmlvbiBhcmc2NCB7CiAJQlBGX0pV TVAoQlBGX0pNUCtCUEZfSkVRK0JQRl9LLCAodmFsdWUpLCAxLCAwKSwgXAogCWp0CiAKLS8qIENo ZWNrcyB0aGUgbG8sIHRoZW4gc3dhcHMgdG8gY2hlY2sgdGhlIGhpLiBBPWxvLFg9aGkgKi8KKyNk ZWZpbmUgSkEzMih2YWx1ZSwganQpIFwKKwlCUEZfSlVNUChCUEZfSk1QK0JQRl9KU0VUK0JQRl9L LCAodmFsdWUpLCAwLCAxKSwgXAorCWp0CisKKyNkZWZpbmUgSkdFMzIodmFsdWUsIGp0KSBcCisJ QlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdFK0JQRl9LLCAodmFsdWUpLCAwLCAxKSwgXAorCWp0CisK KyNkZWZpbmUgSkdUMzIodmFsdWUsIGp0KSBcCisJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdUK0JQ Rl9LLCAodmFsdWUpLCAwLCAxKSwgXAorCWp0CisKKyNkZWZpbmUgSkxFMzIodmFsdWUsIGp0KSBc CisJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdUK0JQRl9LLCAodmFsdWUpLCAxLCAwKSwgXAorCWp0 CisKKyNkZWZpbmUgSkxUMzIodmFsdWUsIGp0KSBcCisJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdF K0JQRl9LLCAodmFsdWUpLCAxLCAwKSwgXAorCWp0CisKKy8qCisgKiBBbGwgdGhlIEpYWDY0IGNo ZWNrcyBhc3N1bWUgbG8gaXMgc2F2ZWQgaW4gTVswXSBhbmQgaGkgaXMgc2F2ZWQgaW4gYm90aAor ICogQSBhbmQgTVsxXS4gVGhpcyBpbnZhcmlhbnQgaXMga2VwdCBieSByZXN0b3JpbmcgQSBpZiBu ZWNlc3NhcnkuCisgKi8KICNkZWZpbmUgSkVRNjQobG8sIGhpLCBqdCkgXAorCS8qIGlmIChoaSAh PSBhcmcuaGkpIGdvdG8gTk9NQVRDSDsgKi8gXAogCUJQRl9KVU1QKEJQRl9KTVArQlBGX0pFUStC UEZfSywgKGhpKSwgMCwgNSksIFwKIAlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMCksIC8qIHN3 YXAgaW4gbG8gKi8gXAorCS8qIGlmIChsbyAhPSBhcmcubG8pIGdvdG8gTk9NQVRDSDsgKi8gXAog CUJQRl9KVU1QKEJQRl9KTVArQlBGX0pFUStCUEZfSywgKGxvKSwgMCwgMiksIFwKLQlCUEZfU1RN VChCUEZfTEQrQlBGX01FTSwgMSksIC8qIHBhc3NlZDogc3dhcCBoaSBiYWNrIGluICovIFwKKwlC UEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMSksIFwKIAlqdCwgXAotCUJQRl9TVE1UKEJQRl9MRCtC UEZfTUVNLCAxKSAvKiBmYWlsZWQ6IHN3YXAgaGkgYmFjayBpbiAqLworCUJQRl9TVE1UKEJQRl9M RCtCUEZfTUVNLCAxKQogCiAjZGVmaW5lIEpORTY0KGxvLCBoaSwganQpIFwKLQlCUEZfSlVNUChC UEZfSk1QK0JQRl9KRVErQlBGX0ssIChoaSksIDUsIDApLCBcCi0JQlBGX1NUTVQoQlBGX0xEK0JQ Rl9NRU0sIDApLCAvKiBzd2FwIGluIGxvICovIFwKKwkvKiBpZiAoaGkgIT0gYXJnLmhpKSBnb3Rv IE1BVENIOyAqLyBcCisJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkVRK0JQRl9LLCAoaGkpLCAwLCAz KSwgXAorCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAwKSwgXAorCS8qIGlmIChsbyAhPSBhcmcu bG8pIGdvdG8gTUFUQ0g7ICovIFwKIAlCUEZfSlVNUChCUEZfSk1QK0JQRl9KRVErQlBGX0ssIChs byksIDIsIDApLCBcCi0JQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpLCAvKiBwYXNzZWQ6IHN3 YXAgaGkgYmFjayBpbiAqLyBcCisJQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpLCBcCiAJanQs IFwKLQlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMSkgLyogZmFpbGVkOiBzd2FwIGhpIGJhY2sg aW4gKi8KLQotI2RlZmluZSBKQTMyKHZhbHVlLCBqdCkgXAotCUJQRl9KVU1QKEJQRl9KTVArQlBG X0pTRVQrQlBGX0ssICh2YWx1ZSksIDAsIDEpLCBcCi0JanQKKwlCUEZfU1RNVChCUEZfTEQrQlBG X01FTSwgMSkKIAogI2RlZmluZSBKQTY0KGxvLCBoaSwganQpIFwKKwkvKiBpZiAoaGkgJiBhcmcu aGkpIGdvdG8gTUFUQ0g7ICovIFwKIAlCUEZfSlVNUChCUEZfSk1QK0JQRl9KU0VUK0JQRl9LLCAo aGkpLCAzLCAwKSwgXAotCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAwKSwgLyogc3dhcCBpbiBs byAqLyBcCisJQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDApLCBcCisJLyogaWYgKGxvICYgYXJn LmxvKSBnb3RvIE1BVENIOyAqLyBcCiAJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSlNFVCtCUEZfSywg KGxvKSwgMCwgMiksIFwKLQlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMSksIC8qIHBhc3NlZDog c3dhcCBoaSBiYWNrIGluICovIFwKKwlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMSksIFwKIAlq dCwgXAotCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAxKSAvKiBmYWlsZWQ6IHN3YXAgaGkgYmFj ayBpbiAqLworCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAxKQogCi0jZGVmaW5lIEpHRTMyKHZh bHVlLCBqdCkgXAotCUJQRl9KVU1QKEJQRl9KTVArQlBGX0pHRStCUEZfSywgKHZhbHVlKSwgMCwg MSksIFwKLQlqdAotCi0jZGVmaW5lIEpMVDMyKHZhbHVlLCBqdCkgXAotCUJQRl9KVU1QKEJQRl9K TVArQlBGX0pHRStCUEZfSywgKHZhbHVlKSwgMSwgMCksIFwKLQlqdAotCi0vKiBTaG9ydGN1dCBj aGVja2luZyBpZiBoaSA+IGFyZy5oaS4gKi8KICNkZWZpbmUgSkdFNjQobG8sIGhpLCBqdCkgXAor CS8qIGlmIChoaSA+IGFyZy5oaSkgZ290byBNQVRDSDsgKi8gXAogCUJQRl9KVU1QKEJQRl9KTVAr QlBGX0pHVCtCUEZfSywgKGhpKSwgNCwgMCksIFwKKwkvKiBpZiAoaGkgIT0gYXJnLmhpKSBnb3Rv IE5PTUFUQ0g7ICovIFwKIAlCUEZfSlVNUChCUEZfSk1QK0JQRl9KRVErQlBGX0ssIChoaSksIDAs IDUpLCBcCi0JQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDApLCAvKiBzd2FwIGluIGxvICovIFwK KwlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMCksIFwKKwkvKiBpZiAobG8gPj0gYXJnLmxvKSBn b3RvIE1BVENIOyAqLyBcCiAJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdFK0JQRl9LLCAobG8pLCAw LCAyKSwgXAotCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAxKSwgLyogcGFzc2VkOiBzd2FwIGhp IGJhY2sgaW4gKi8gXAotCWp0LCBcCi0JQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpIC8qIGZh aWxlZDogc3dhcCBoaSBiYWNrIGluICovCi0KLSNkZWZpbmUgSkxUNjQobG8sIGhpLCBqdCkgXAot CUJQRl9KVU1QKEJQRl9KTVArQlBGX0pHRStCUEZfSywgKGhpKSwgMCwgNCksIFwKLQlCUEZfSlVN UChCUEZfSk1QK0JQRl9KRVErQlBGX0ssIChoaSksIDAsIDUpLCBcCi0JQlBGX1NUTVQoQlBGX0xE K0JQRl9NRU0sIDApLCAvKiBzd2FwIGluIGxvICovIFwKLQlCUEZfSlVNUChCUEZfSk1QK0JQRl9K R1QrQlBGX0ssIChsbyksIDIsIDApLCBcCi0JQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpLCAv KiBwYXNzZWQ6IHN3YXAgaGkgYmFjayBpbiAqLyBcCisJQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0s IDEpLCBcCiAJanQsIFwKLQlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMSkgLyogZmFpbGVkOiBz d2FwIGhpIGJhY2sgaW4gKi8KKwlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMSkKIAotI2RlZmlu ZSBKR1QzMih2YWx1ZSwganQpIFwKLQlCUEZfSlVNUChCUEZfSk1QK0JQRl9KR1QrQlBGX0ssICh2 YWx1ZSksIDAsIDEpLCBcCi0JanQKLQotI2RlZmluZSBKTEUzMih2YWx1ZSwganQpIFwKLQlCUEZf SlVNUChCUEZfSk1QK0JQRl9KR1QrQlBGX0ssICh2YWx1ZSksIDEsIDApLCBcCi0JanQKLQotLyog Q2hlY2sgaGkgPiBhcmdzLmhpIGZpcnN0LCB0aGVuIGRvIHRoZSBHRSBjaGVja2luZyAqLwogI2Rl ZmluZSBKR1Q2NChsbywgaGksIGp0KSBcCisJLyogaWYgKGhpID4gYXJnLmhpKSBnb3RvIE1BVENI OyAqLyBcCiAJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdUK0JQRl9LLCAoaGkpLCA0LCAwKSwgXAor CS8qIGlmIChoaSAhPSBhcmcuaGkpIGdvdG8gTk9NQVRDSDsgKi8gXAogCUJQRl9KVU1QKEJQRl9K TVArQlBGX0pFUStCUEZfSywgKGhpKSwgMCwgNSksIFwKLQlCUEZfU1RNVChCUEZfTEQrQlBGX01F TSwgMCksIC8qIHN3YXAgaW4gbG8gKi8gXAorCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAwKSwg XAorCS8qIGlmIChsbyA+IGFyZy5sbykgZ290byBNQVRDSDsgKi8gXAogCUJQRl9KVU1QKEJQRl9K TVArQlBGX0pHVCtCUEZfSywgKGxvKSwgMCwgMiksIFwKLQlCUEZfU1RNVChCUEZfTEQrQlBGX01F TSwgMSksIC8qIHBhc3NlZDogc3dhcCBoaSBiYWNrIGluICovIFwKKwlCUEZfU1RNVChCUEZfTEQr QlBGX01FTSwgMSksIFwKIAlqdCwgXAotCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAxKSAvKiBm YWlsZWQ6IHN3YXAgaGkgYmFjayBpbiAqLworCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAxKQog CiAjZGVmaW5lIEpMRTY0KGxvLCBoaSwganQpIFwKLQlCUEZfSlVNUChCUEZfSk1QK0JQRl9KR1Qr QlBGX0ssIChoaSksIDYsIDApLCBcCi0JQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkVRK0JQRl9LLCAo aGkpLCAwLCAzKSwgXAotCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAwKSwgLyogc3dhcCBpbiBs byAqLyBcCisJLyogaWYgKGhpIDwgYXJnLmhpKSBnb3RvIE1BVENIOyAqLyBcCisJQlBGX0pVTVAo QlBGX0pNUCtCUEZfSkdFK0JQRl9LLCAoaGkpLCAwLCA0KSwgXAorCS8qIGlmIChoaSAhPSBhcmcu aGkpIGdvdG8gTk9NQVRDSDsgKi8gXAorCUJQRl9KVU1QKEJQRl9KTVArQlBGX0pFUStCUEZfSywg KGhpKSwgMCwgNSksIFwKKwlCUEZfU1RNVChCUEZfTEQrQlBGX01FTSwgMCksIFwKKwkvKiBpZiAo bG8gPD0gYXJnLmxvKSBnb3RvIE1BVENIOyAqLyBcCiAJQlBGX0pVTVAoQlBGX0pNUCtCUEZfSkdU K0JQRl9LLCAobG8pLCAyLCAwKSwgXAotCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAxKSwgLyog cGFzc2VkOiBzd2FwIGhpIGJhY2sgaW4gKi8gXAorCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVNLCAx KSwgXAorCWp0LCBcCisJQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpCisKKyNkZWZpbmUgSkxU NjQobG8sIGhpLCBqdCkgXAorCS8qIGlmIChoaSA8IGFyZy5oaSkgZ290byBNQVRDSDsgKi8gXAor CUJQRl9KVU1QKEJQRl9KTVArQlBGX0pHRStCUEZfSywgKGhpKSwgMCwgNCksIFwKKwkvKiBpZiAo aGkgIT0gYXJnLmhpKSBnb3RvIE5PTUFUQ0g7ICovIFwKKwlCUEZfSlVNUChCUEZfSk1QK0JQRl9K RVErQlBGX0ssIChoaSksIDAsIDUpLCBcCisJQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDApLCBc CisJLyogaWYgKGxvIDwgYXJnLmxvKSBnb3RvIE1BVENIOyAqLyBcCisJQlBGX0pVTVAoQlBGX0pN UCtCUEZfSkdFK0JQRl9LLCAobG8pLCAyLCAwKSwgXAorCUJQRl9TVE1UKEJQRl9MRCtCUEZfTUVN LCAxKSwgXAogCWp0LCBcCi0JQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpIC8qIGZhaWxlZDog c3dhcCBoaSBiYWNrIGluICovCisJQlBGX1NUTVQoQlBGX0xEK0JQRl9NRU0sIDEpCiAKICNkZWZp bmUgTE9BRF9TWVNDQUxMX05SIFwKIAlCUEZfU1RNVChCUEZfTEQrQlBGX1crQlBGX0FCUywgXApk aWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYyBiL3Nl Y3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmMKaW5kZXggNTU2YzQzZGY2NjM2 Li45YzMyMWEyNTM0OGYgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMv ZW5jcnlwdGVkLmMKKysrIGIvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQu YwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBpbnQgaW5pdF9ibGtjaXBoZXJfZGVzYyhzdHJ1 Y3QgYmxrY2lwaGVyX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICprZXksCiBzdGF0aWMgc3RydWN0IGtl eSAqcmVxdWVzdF9tYXN0ZXJfa2V5KHN0cnVjdCBlbmNyeXB0ZWRfa2V5X3BheWxvYWQgKmVwYXls b2FkLAogCQkJCSAgICAgIHU4ICoqbWFzdGVyX2tleSwgc2l6ZV90ICptYXN0ZXJfa2V5bGVuKQog ewotCXN0cnVjdCBrZXkgKm1rZXkgPSBOVUxMOworCXN0cnVjdCBrZXkgKm1rZXkgPSBFUlJfUFRS KC1FSU5WQUwpOwogCiAJaWYgKCFzdHJuY21wKGVwYXlsb2FkLT5tYXN0ZXJfZGVzYywgS0VZX1RS VVNURURfUFJFRklYLAogCQkgICAgIEtFWV9UUlVTVEVEX1BSRUZJWF9MRU4pKSB7CmRpZmYgLS1n aXQgYS9zZWN1cml0eS9rZXlzL2tleWN0bC5jIGIvc2VjdXJpdHkva2V5cy9rZXljdGwuYwppbmRl eCAzNTUzZjE5Nzc4OWIuLjU3ZjhlMTYyYjUxYiAxMDA2NDQKLS0tIGEvc2VjdXJpdHkva2V5cy9r ZXljdGwuYworKysgYi9zZWN1cml0eS9rZXlzL2tleWN0bC5jCkBAIC04Niw2ICs4NiwxMCBAQCBT WVNDQUxMX0RFRklORTUoYWRkX2tleSwgY29uc3QgY2hhciBfX3VzZXIgKiwgX3R5cGUsCiAJCWlm ICghKmRlc2NyaXB0aW9uKSB7CiAJCQlrZnJlZShkZXNjcmlwdGlvbik7CiAJCQlkZXNjcmlwdGlv biA9IE5VTEw7CisJCX0gZWxzZSBpZiAoKGRlc2NyaXB0aW9uWzBdID09ICcuJykgJiYKKwkJCSAg IChzdHJuY21wKHR5cGUsICJrZXlyaW5nIiwgNykgPT0gMCkpIHsKKwkJCXJldCA9IC1FUEVSTTsK KwkJCWdvdG8gZXJyb3IyOwogCQl9CiAJfQogCkBAIC0yNzEsNyArMjc1LDggQEAgZXJyb3I6CiAg KiBDcmVhdGUgYW5kIGpvaW4gYW4gYW5vbnltb3VzIHNlc3Npb24ga2V5cmluZyBvciBqb2luIGEg bmFtZWQgc2Vzc2lvbgogICoga2V5cmluZywgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgQSBu YW1lZCBzZXNzaW9uIGtleXJpbmcgbXVzdCBoYXZlIFNlYXJjaAogICogcGVybWlzc2lvbiBmb3Ig aXQgdG8gYmUgam9pbmVkLiAgU2Vzc2lvbiBrZXlyaW5ncyB3aXRob3V0IHRoaXMgcGVybWl0IHdp bGwKLSAqIGJlIHNraXBwZWQgb3Zlci4KKyAqIGJlIHNraXBwZWQgb3Zlci4gIEl0IGlzIG5vdCBw ZXJtaXR0ZWQgZm9yIHVzZXJzcGFjZSB0byBjcmVhdGUgb3Igam9pbgorICoga2V5cmluZ3Mgd2hv c2UgbmFtZSBiZWdpbiB3aXRoIGEgZG90LgogICoKICAqIElmIHN1Y2Nlc3NmdWwsIHRoZSBJRCBv ZiB0aGUgam9pbmVkIHNlc3Npb24ga2V5cmluZyB3aWxsIGJlIHJldHVybmVkLgogICovCkBAIC0y ODgsMTIgKzI5MywxNiBAQCBsb25nIGtleWN0bF9qb2luX3Nlc3Npb25fa2V5cmluZyhjb25zdCBj aGFyIF9fdXNlciAqX25hbWUpCiAJCQlyZXQgPSBQVFJfRVJSKG5hbWUpOwogCQkJZ290byBlcnJv cjsKIAkJfQorCisJCXJldCA9IC1FUEVSTTsKKwkJaWYgKG5hbWVbMF0gPT0gJy4nKQorCQkJZ290 byBlcnJvcl9uYW1lOwogCX0KIAogCS8qIGpvaW4gdGhlIHNlc3Npb24gKi8KIAlyZXQgPSBqb2lu X3Nlc3Npb25fa2V5cmluZyhuYW1lKTsKK2Vycm9yX25hbWU6CiAJa2ZyZWUobmFtZSk7Ci0KIGVy cm9yOgogCXJldHVybiByZXQ7CiB9CkBAIC0xMjQwLDggKzEyNDksOCBAQCBlcnJvcjoKICAqIFJl YWQgb3Igc2V0IHRoZSBkZWZhdWx0IGtleXJpbmcgaW4gd2hpY2ggcmVxdWVzdF9rZXkoKSB3aWxs IGNhY2hlIGtleXMgYW5kCiAgKiByZXR1cm4gdGhlIG9sZCBzZXR0aW5nLgogICoKLSAqIElmIGEg cHJvY2VzcyBrZXlyaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoaXMgd2lsbCBiZSBjcmVhdGVkIGlm IGl0IGRvZXNuJ3QKLSAqIHlldCBleGlzdC4gIFRoZSBvbGQgc2V0dGluZyB3aWxsIGJlIHJldHVy bmVkIGlmIHN1Y2Nlc3NmdWwuCisgKiBJZiBhIHRocmVhZCBvciBwcm9jZXNzIGtleXJpbmcgaXMg c3BlY2lmaWVkIHRoZW4gaXQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0CisgKiBkb2Vzbid0IHlldCBl eGlzdC4gIFRoZSBvbGQgc2V0dGluZyB3aWxsIGJlIHJldHVybmVkIGlmIHN1Y2Nlc3NmdWwuCiAg Ki8KIGxvbmcga2V5Y3RsX3NldF9yZXFrZXlfa2V5cmluZyhpbnQgcmVxa2V5X2RlZmwpCiB7CkBA IC0xMjY2LDExICsxMjc1LDggQEAgbG9uZyBrZXljdGxfc2V0X3JlcWtleV9rZXlyaW5nKGludCBy ZXFrZXlfZGVmbCkKIAogCWNhc2UgS0VZX1JFUUtFWV9ERUZMX1BST0NFU1NfS0VZUklORzoKIAkJ cmV0ID0gaW5zdGFsbF9wcm9jZXNzX2tleXJpbmdfdG9fY3JlZChuZXcpOwotCQlpZiAocmV0IDwg MCkgewotCQkJaWYgKHJldCAhPSAtRUVYSVNUKQotCQkJCWdvdG8gZXJyb3I7Ci0JCQlyZXQgPSAw OwotCQl9CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBlcnJvcjsKIAkJZ290byBzZXQ7CiAKIAlj YXNlIEtFWV9SRVFLRVlfREVGTF9ERUZBVUxUOgpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9w cm9jZXNzX2tleXMuYyBiL3NlY3VyaXR5L2tleXMvcHJvY2Vzc19rZXlzLmMKaW5kZXggNGU1NjM3 MWYyMzlmLi4xOGJhZDdjYWY2MDIgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvcHJvY2Vzc19r ZXlzLmMKKysrIGIvc2VjdXJpdHkva2V5cy9wcm9jZXNzX2tleXMuYwpAQCAtMTI1LDEzICsxMjUs MTggQEAgZXJyb3I6CiB9CiAKIC8qCi0gKiBJbnN0YWxsIGEgZnJlc2ggdGhyZWFkIGtleXJpbmcg ZGlyZWN0bHkgdG8gbmV3IGNyZWRlbnRpYWxzLiAgVGhpcyBrZXlyaW5nIGlzCi0gKiBhbGxvd2Vk IHRvIG92ZXJydW4gdGhlIHF1b3RhLgorICogSW5zdGFsbCBhIHRocmVhZCBrZXlyaW5nIHRvIHRo ZSBnaXZlbiBjcmVkZW50aWFscyBzdHJ1Y3QgaWYgaXQgZGlkbid0IGhhdmUKKyAqIG9uZSBhbHJl YWR5LiAgVGhpcyBpcyBhbGxvd2VkIHRvIG92ZXJydW4gdGhlIHF1b3RhLgorICoKKyAqIFJldHVy bjogMCBpZiBhIHRocmVhZCBrZXlyaW5nIGlzIG5vdyBwcmVzZW50OyAtZXJybm8gb24gZmFpbHVy ZS4KICAqLwogaW50IGluc3RhbGxfdGhyZWFkX2tleXJpbmdfdG9fY3JlZChzdHJ1Y3QgY3JlZCAq bmV3KQogewogCXN0cnVjdCBrZXkgKmtleXJpbmc7CiAKKwlpZiAobmV3LT50aHJlYWRfa2V5cmlu ZykKKwkJcmV0dXJuIDA7CisKIAlrZXlyaW5nID0ga2V5cmluZ19hbGxvYygiX3RpZCIsIG5ldy0+ dWlkLCBuZXctPmdpZCwgbmV3LAogCQkJCUtFWV9QT1NfQUxMIHwgS0VZX1VTUl9WSUVXLAogCQkJ CUtFWV9BTExPQ19RVU9UQV9PVkVSUlVOLCBOVUxMKTsKQEAgLTE0Myw3ICsxNDgsOSBAQCBpbnQg aW5zdGFsbF90aHJlYWRfa2V5cmluZ190b19jcmVkKHN0cnVjdCBjcmVkICpuZXcpCiB9CiAKIC8q Ci0gKiBJbnN0YWxsIGEgZnJlc2ggdGhyZWFkIGtleXJpbmcsIGRpc2NhcmRpbmcgdGhlIG9sZCBv bmUuCisgKiBJbnN0YWxsIGEgdGhyZWFkIGtleXJpbmcgdG8gdGhlIGN1cnJlbnQgdGFzayBpZiBp dCBkaWRuJ3QgaGF2ZSBvbmUgYWxyZWFkeS4KKyAqCisgKiBSZXR1cm46IDAgaWYgYSB0aHJlYWQg a2V5cmluZyBpcyBub3cgcHJlc2VudDsgLWVycm5vIG9uIGZhaWx1cmUuCiAgKi8KIHN0YXRpYyBp bnQgaW5zdGFsbF90aHJlYWRfa2V5cmluZyh2b2lkKQogewpAQCAtMTU0LDggKzE2MSw2IEBAIHN0 YXRpYyBpbnQgaW5zdGFsbF90aHJlYWRfa2V5cmluZyh2b2lkKQogCWlmICghbmV3KQogCQlyZXR1 cm4gLUVOT01FTTsKIAotCUJVR19PTihuZXctPnRocmVhZF9rZXlyaW5nKTsKLQogCXJldCA9IGlu c3RhbGxfdGhyZWFkX2tleXJpbmdfdG9fY3JlZChuZXcpOwogCWlmIChyZXQgPCAwKSB7CiAJCWFi b3J0X2NyZWRzKG5ldyk7CkBAIC0xNjYsMTcgKzE3MSwxNyBAQCBzdGF0aWMgaW50IGluc3RhbGxf dGhyZWFkX2tleXJpbmcodm9pZCkKIH0KIAogLyoKLSAqIEluc3RhbGwgYSBwcm9jZXNzIGtleXJp bmcgZGlyZWN0bHkgdG8gYSBjcmVkZW50aWFscyBzdHJ1Y3QuCisgKiBJbnN0YWxsIGEgcHJvY2Vz cyBrZXlyaW5nIHRvIHRoZSBnaXZlbiBjcmVkZW50aWFscyBzdHJ1Y3QgaWYgaXQgZGlkbid0IGhh dmUKKyAqIG9uZSBhbHJlYWR5LiAgVGhpcyBpcyBhbGxvd2VkIHRvIG92ZXJydW4gdGhlIHF1b3Rh LgogICoKLSAqIFJldHVybnMgLUVFWElTVCBpZiB0aGVyZSB3YXMgYWxyZWFkeSBhIHByb2Nlc3Mg a2V5cmluZywgMCBpZiBvbmUgaW5zdGFsbGVkLAotICogYW5kIG90aGVyIHZhbHVlIG9uIGFueSBv dGhlciBlcnJvcgorICogUmV0dXJuOiAwIGlmIGEgcHJvY2VzcyBrZXlyaW5nIGlzIG5vdyBwcmVz ZW50OyAtZXJybm8gb24gZmFpbHVyZS4KICAqLwogaW50IGluc3RhbGxfcHJvY2Vzc19rZXlyaW5n X3RvX2NyZWQoc3RydWN0IGNyZWQgKm5ldykKIHsKIAlzdHJ1Y3Qga2V5ICprZXlyaW5nOwogCiAJ aWYgKG5ldy0+cHJvY2Vzc19rZXlyaW5nKQotCQlyZXR1cm4gLUVFWElTVDsKKwkJcmV0dXJuIDA7 CiAKIAlrZXlyaW5nID0ga2V5cmluZ19hbGxvYygiX3BpZCIsIG5ldy0+dWlkLCBuZXctPmdpZCwg bmV3LAogCQkJCUtFWV9QT1NfQUxMIHwgS0VZX1VTUl9WSUVXLApAQCAtMTg5LDExICsxOTQsOSBA QCBpbnQgaW5zdGFsbF9wcm9jZXNzX2tleXJpbmdfdG9fY3JlZChzdHJ1Y3QgY3JlZCAqbmV3KQog fQogCiAvKgotICogTWFrZSBzdXJlIGEgcHJvY2VzcyBrZXlyaW5nIGlzIGluc3RhbGxlZCBmb3Ig dGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoZQotICogZXhpc3RpbmcgcHJvY2VzcyBrZXlyaW5nIGlz IG5vdCByZXBsYWNlZC4KKyAqIEluc3RhbGwgYSBwcm9jZXNzIGtleXJpbmcgdG8gdGhlIGN1cnJl bnQgdGFzayBpZiBpdCBkaWRuJ3QgaGF2ZSBvbmUgYWxyZWFkeS4KICAqCi0gKiBSZXR1cm5zIDAg aWYgdGhlcmUgaXMgYSBwcm9jZXNzIGtleXJpbmcgYnkgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9u LCBzb21lCi0gKiBlcnJvciBvdGhlcndpc2UuCisgKiBSZXR1cm46IDAgaWYgYSBwcm9jZXNzIGtl eXJpbmcgaXMgbm93IHByZXNlbnQ7IC1lcnJubyBvbiBmYWlsdXJlLgogICovCiBzdGF0aWMgaW50 IGluc3RhbGxfcHJvY2Vzc19rZXlyaW5nKHZvaWQpCiB7CkBAIC0yMDcsMTQgKzIxMCwxOCBAQCBz dGF0aWMgaW50IGluc3RhbGxfcHJvY2Vzc19rZXlyaW5nKHZvaWQpCiAJcmV0ID0gaW5zdGFsbF9w cm9jZXNzX2tleXJpbmdfdG9fY3JlZChuZXcpOwogCWlmIChyZXQgPCAwKSB7CiAJCWFib3J0X2Ny ZWRzKG5ldyk7Ci0JCXJldHVybiByZXQgIT0gLUVFWElTVCA/IHJldCA6IDA7CisJCXJldHVybiBy ZXQ7CiAJfQogCiAJcmV0dXJuIGNvbW1pdF9jcmVkcyhuZXcpOwogfQogCiAvKgotICogSW5zdGFs bCBhIHNlc3Npb24ga2V5cmluZyBkaXJlY3RseSB0byBhIGNyZWRlbnRpYWxzIHN0cnVjdC4KKyAq IEluc3RhbGwgdGhlIGdpdmVuIGtleXJpbmcgYXMgdGhlIHNlc3Npb24ga2V5cmluZyBvZiB0aGUg Z2l2ZW4gY3JlZGVudGlhbHMKKyAqIHN0cnVjdCwgcmVwbGFjaW5nIHRoZSBleGlzdGluZyBvbmUg aWYgYW55LiAgSWYgdGhlIGdpdmVuIGtleXJpbmcgaXMgTlVMTCwKKyAqIHRoZW4gaW5zdGFsbCBh IG5ldyBhbm9ueW1vdXMgc2Vzc2lvbiBrZXlyaW5nLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNj ZXNzOyAtZXJybm8gb24gZmFpbHVyZS4KICAqLwogaW50IGluc3RhbGxfc2Vzc2lvbl9rZXlyaW5n X3RvX2NyZWQoc3RydWN0IGNyZWQgKmNyZWQsIHN0cnVjdCBrZXkgKmtleXJpbmcpCiB7CkBAIC0y NDksOCArMjU2LDExIEBAIGludCBpbnN0YWxsX3Nlc3Npb25fa2V5cmluZ190b19jcmVkKHN0cnVj dCBjcmVkICpjcmVkLCBzdHJ1Y3Qga2V5ICprZXlyaW5nKQogfQogCiAvKgotICogSW5zdGFsbCBh IHNlc3Npb24ga2V5cmluZywgZGlzY2FyZGluZyB0aGUgb2xkIG9uZS4gIElmIGEga2V5cmluZyBp cyBub3QKLSAqIHN1cHBsaWVkLCBhbiBlbXB0eSBvbmUgaXMgaW52ZW50ZWQuCisgKiBJbnN0YWxs IHRoZSBnaXZlbiBrZXlyaW5nIGFzIHRoZSBzZXNzaW9uIGtleXJpbmcgb2YgdGhlIGN1cnJlbnQg dGFzaywKKyAqIHJlcGxhY2luZyB0aGUgZXhpc3Rpbmcgb25lIGlmIGFueS4gIElmIHRoZSBnaXZl biBrZXlyaW5nIGlzIE5VTEwsIHRoZW4KKyAqIGluc3RhbGwgYSBuZXcgYW5vbnltb3VzIHNlc3Np b24ga2V5cmluZy4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzczsgLWVycm5vIG9uIGZhaWx1 cmUuCiAgKi8KIHN0YXRpYyBpbnQgaW5zdGFsbF9zZXNzaW9uX2tleXJpbmcoc3RydWN0IGtleSAq a2V5cmluZykKIHsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9maWZvLmMgYi9zb3Vu ZC9jb3JlL3NlcS9zZXFfZmlmby5jCmluZGV4IDFkNWFjYmUwYzA4Yi4uODYyNDBkMDJiNTMwIDEw MDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfZmlmby5jCisrKyBiL3NvdW5kL2NvcmUvc2Vx L3NlcV9maWZvLmMKQEAgLTEzNSw2ICsxMzUsNyBAQCBpbnQgc25kX3NlcV9maWZvX2V2ZW50X2lu KHN0cnVjdCBzbmRfc2VxX2ZpZm8gKmYsCiAJZi0+dGFpbCA9IGNlbGw7CiAJaWYgKGYtPmhlYWQg PT0gTlVMTCkKIAkJZi0+aGVhZCA9IGNlbGw7CisJY2VsbC0+bmV4dCA9IE5VTEw7CiAJZi0+Y2Vs bHMrKzsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmLT5sb2NrLCBmbGFncyk7CiAKQEAgLTIx NCw2ICsyMTUsOCBAQCB2b2lkIHNuZF9zZXFfZmlmb19jZWxsX3B1dGJhY2soc3RydWN0IHNuZF9z ZXFfZmlmbyAqZiwKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmYtPmxvY2ssIGZsYWdzKTsKIAkJY2Vs bC0+bmV4dCA9IGYtPmhlYWQ7CiAJCWYtPmhlYWQgPSBjZWxsOworCQlpZiAoIWYtPnRhaWwpCisJ CQlmLT50YWlsID0gY2VsbDsKIAkJZi0+Y2VsbHMrKzsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZi0+bG9jaywgZmxhZ3MpOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvdGltZXIuYyBi L3NvdW5kL2NvcmUvdGltZXIuYwppbmRleCBkMzJjNjMxY2NhNmIuLmEyNDlmYWM5YzJkMyAxMDA2 NDQKLS0tIGEvc291bmQvY29yZS90aW1lci5jCisrKyBiL3NvdW5kL2NvcmUvdGltZXIuYwpAQCAt MTcxNSw5ICsxNzE1LDIxIEBAIHN0YXRpYyBpbnQgc25kX3RpbWVyX3VzZXJfcGFyYW1zKHN0cnVj dCBmaWxlICpmaWxlLAogCQlyZXR1cm4gLUVCQURGRDsKIAlpZiAoY29weV9mcm9tX3VzZXIoJnBh cmFtcywgX3BhcmFtcywgc2l6ZW9mKHBhcmFtcykpKQogCQlyZXR1cm4gLUVGQVVMVDsKLQlpZiAo ISh0LT5ody5mbGFncyAmIFNORFJWX1RJTUVSX0hXX1NMQVZFKSAmJiBwYXJhbXMudGlja3MgPCAx KSB7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gX2VuZDsKKwlpZiAoISh0LT5ody5mbGFncyAm IFNORFJWX1RJTUVSX0hXX1NMQVZFKSkgeworCQl1NjQgcmVzb2x1dGlvbjsKKworCQlpZiAocGFy YW1zLnRpY2tzIDwgMSkgeworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gX2VuZDsKKwkJfQor CisJCS8qIERvbid0IGFsbG93IHJlc29sdXRpb24gbGVzcyB0aGFuIDFtcyAqLworCQlyZXNvbHV0 aW9uID0gc25kX3RpbWVyX3Jlc29sdXRpb24odHUtPnRpbWVyaSk7CisJCXJlc29sdXRpb24gKj0g cGFyYW1zLnRpY2tzOworCQlpZiAocmVzb2x1dGlvbiA8IDEwMDAwMDApIHsKKwkJCWVyciA9IC1F SU5WQUw7CisJCQlnb3RvIF9lbmQ7CisJCX0KIAl9CiAJaWYgKHBhcmFtcy5xdWV1ZV9zaXplID4g MCAmJgogCSAgICAocGFyYW1zLnF1ZXVlX3NpemUgPCAzMiB8fCBwYXJhbXMucXVldWVfc2l6ZSA+ IDEwMjQpKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYyBiL3NvdW5k L3BjaS9jdHhmaS9jdGh3MjBrMS5jCmluZGV4IDZhYzQwYmViNDlkYS4uYWJkMGEyZDA4NTZjIDEw MDY0NAotLS0gYS9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYworKysgYi9zb3VuZC9wY2kvY3R4 ZmkvY3RodzIwazEuYwpAQCAtMjcsMTIgKzI3LDYgQEAKICNpbmNsdWRlICJjdGh3MjBrMS5oIgog I2luY2x1ZGUgImN0MjBrMXJlZy5oIgogCi0jaWYgQklUU19QRVJfTE9ORyA9PSAzMgotI2RlZmlu ZSBDVF9YRklfRE1BX01BU0sJCURNQV9CSVRfTUFTSygzMikgLyogMzIgYml0IFBURSAqLwotI2Vs c2UKLSNkZWZpbmUgQ1RfWEZJX0RNQV9NQVNLCQlETUFfQklUX01BU0soNjQpIC8qIDY0IGJpdCBQ VEUgKi8KLSNlbmRpZgotCiBzdHJ1Y3QgaHcyMGsxIHsKIAlzdHJ1Y3QgaHcgaHc7CiAJc3Bpbmxv Y2tfdCByZWdfMjBrMV9sb2NrOwpAQCAtMTkwMywxOSArMTg5NywxOCBAQCBzdGF0aWMgaW50IGh3 X2NhcmRfc3RhcnQoc3RydWN0IGh3ICpodykKIHsKIAlpbnQgZXJyOwogCXN0cnVjdCBwY2lfZGV2 ICpwY2kgPSBody0+cGNpOworCWNvbnN0IHVuc2lnbmVkIGludCBkbWFfYml0cyA9IEJJVFNfUEVS X0xPTkc7CiAKIAllcnIgPSBwY2lfZW5hYmxlX2RldmljZShwY2kpOwogCWlmIChlcnIgPCAwKQog CQlyZXR1cm4gZXJyOwogCiAJLyogU2V0IERNQSB0cmFuc2ZlciBtYXNrICovCi0JaWYgKHBjaV9z ZXRfZG1hX21hc2socGNpLCBDVF9YRklfRE1BX01BU0spIDwgMCB8fAotCSAgICBwY2lfc2V0X2Nv bnNpc3RlbnRfZG1hX21hc2socGNpLCBDVF9YRklfRE1BX01BU0spIDwgMCkgewotCQlwcmludGso S0VSTl9FUlIgImFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IFBDSSAiCi0JCQkJImJ1c21h c3RlciBETUEgd2l0aCBtYXNrIDB4JWxseFxuIiwKLQkJICAgICAgIENUX1hGSV9ETUFfTUFTSyk7 Ci0JCWVyciA9IC1FTlhJTzsKLQkJZ290byBlcnJvcjE7CisJaWYgKGRtYV9zZXRfbWFzaygmcGNp LT5kZXYsIERNQV9CSVRfTUFTSyhkbWFfYml0cykpKSB7CisJCWRtYV9zZXRfY29oZXJlbnRfbWFz aygmcGNpLT5kZXYsIERNQV9CSVRfTUFTSyhkbWFfYml0cykpOworCX0gZWxzZSB7CisJCWRtYV9z ZXRfbWFzaygmcGNpLT5kZXYsIERNQV9CSVRfTUFTSygzMikpOworCQlkbWFfc2V0X2NvaGVyZW50 X21hc2soJnBjaS0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKIAl9CiAKIAlpZiAoIWh3LT5pb19i YXNlKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazIuYyBiL3NvdW5kL3Bj aS9jdHhmaS9jdGh3MjBrMi5jCmluZGV4IGIxNDM4ODYxZDM4YS4uNTgyOGEzZWM1OGJiIDEwMDY0 NAotLS0gYS9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazIuYworKysgYi9zb3VuZC9wY2kvY3R4Zmkv Y3RodzIwazIuYwpAQCAtMjYsMTIgKzI2LDYgQEAKICNpbmNsdWRlICJjdGh3MjBrMi5oIgogI2lu Y2x1ZGUgImN0MjBrMnJlZy5oIgogCi0jaWYgQklUU19QRVJfTE9ORyA9PSAzMgotI2RlZmluZSBD VF9YRklfRE1BX01BU0sJCURNQV9CSVRfTUFTSygzMikgLyogMzIgYml0IFBURSAqLwotI2Vsc2UK LSNkZWZpbmUgQ1RfWEZJX0RNQV9NQVNLCQlETUFfQklUX01BU0soNjQpIC8qIDY0IGJpdCBQVEUg Ki8KLSNlbmRpZgotCiBzdHJ1Y3QgaHcyMGsyIHsKIAlzdHJ1Y3QgaHcgaHc7CiAJLyogZm9yIGky YyAqLwpAQCAtMjAyNiwxOCArMjAyMCwxOCBAQCBzdGF0aWMgaW50IGh3X2NhcmRfc3RhcnQoc3Ry dWN0IGh3ICpodykKIAlpbnQgZXJyID0gMDsKIAlzdHJ1Y3QgcGNpX2RldiAqcGNpID0gaHctPnBj aTsKIAl1bnNpZ25lZCBpbnQgZ2N0bDsKKwljb25zdCB1bnNpZ25lZCBpbnQgZG1hX2JpdHMgPSBC SVRTX1BFUl9MT05HOwogCiAJZXJyID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpKTsKIAlpZiAoZXJy IDwgMCkKIAkJcmV0dXJuIGVycjsKIAogCS8qIFNldCBETUEgdHJhbnNmZXIgbWFzayAqLwotCWlm IChwY2lfc2V0X2RtYV9tYXNrKHBjaSwgQ1RfWEZJX0RNQV9NQVNLKSA8IDAgfHwKLQkgICAgcGNp X3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBjaSwgQ1RfWEZJX0RNQV9NQVNLKSA8IDApIHsKLQkJ cHJpbnRrKEtFUk5fRVJSICJjdHhmaTogYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgUENJ ICIKLQkJImJ1c21hc3RlciBETUEgd2l0aCBtYXNrIDB4JWxseFxuIiwgQ1RfWEZJX0RNQV9NQVNL KTsKLQkJZXJyID0gLUVOWElPOwotCQlnb3RvIGVycm9yMTsKKwlpZiAoIWRtYV9zZXRfbWFzaygm cGNpLT5kZXYsIERNQV9CSVRfTUFTSyhkbWFfYml0cykpKSB7CisJCWRtYV9zZXRfY29oZXJlbnRf bWFzaygmcGNpLT5kZXYsIERNQV9CSVRfTUFTSyhkbWFfYml0cykpOworCX0gZWxzZSB7CisJCWRt YV9zZXRfbWFzaygmcGNpLT5kZXYsIERNQV9CSVRfTUFTSygzMikpOworCQlkbWFfc2V0X2NvaGVy ZW50X21hc2soJnBjaS0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKIAl9CiAKIAlpZiAoIWh3LT5p b19iYXNlKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jIGIvc291bmQv c29jL2NvZGVjcy9ydDU2NDAuYwppbmRleCA3YWViNjliYWNlN2EuLmMyY2Q3NzBlYzc0OSAxMDA2 NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYworKysgYi9zb3VuZC9zb2MvY29kZWNz L3J0NTY0MC5jCkBAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIGludCBydDU2NDBfaHBfZXZlbnQo c3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsCiAKIAljYXNlIFNORF9TT0NfREFQTV9QUkVf UE1EOgogCQlydDU2NDAtPmhwX211dGUgPSAxOwotCQl1c2xlZXBfcmFuZ2UoNzAwMDAsIDc1MDAw KTsKKwkJbXNsZWVwKDcwKTsKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgpAQCAtMTAzOCw3ICsxMDM4 LDcgQEAgc3RhdGljIGludCBydDU2NDBfaHBfcG9zdF9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdywKIAlzd2l0Y2ggKGV2ZW50KSB7CiAJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9Q TVU6CiAJCWlmICghcnQ1NjQwLT5ocF9tdXRlKQotCQkJdXNsZWVwX3JhbmdlKDgwMDAwLCA4NTAw MCk7CisJCQltc2xlZXAoODApOwogCiAJCWJyZWFrOwogCmRpZmYgLS1naXQgYS90b29scy9wZXJm L0RvY3VtZW50YXRpb24vcGVyZi1zY3JpcHQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9u L3BlcmYtc2NyaXB0LnR4dAppbmRleCAwNWY5YTBhNjc4NGMuLjgwYjQyNjhlODRiNSAxMDA2NDQK LS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtc2NyaXB0LnR4dAorKysgYi90b29s cy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1zY3JpcHQudHh0CkBAIC0zNiw3ICszNiw3IEBAIFRo ZXJlIGFyZSBzZXZlcmFsIHZhcmlhbnRzIG9mIHBlcmYgc2NyaXB0OgogCiAgICdwZXJmIHNjcmlw dCByZXBvcnQgPHNjcmlwdD4gW2FyZ3NdJyB0byBydW4gYW5kIGRpc3BsYXkgdGhlIHJlc3VsdHMK ICAgb2YgPHNjcmlwdD4uICA8c2NyaXB0PiBpcyB0aGUgbmFtZSBkaXNwbGF5ZWQgaW4gdGhlIG91 dHB1dCBvZiAncGVyZgotICB0cmFjZSAtLWxpc3QnIGkuZS4gdGhlIGFjdHVhbCBzY3JpcHQgbmFt ZSBtaW51cyBhbnkgbGFuZ3VhZ2UKKyAgc2NyaXB0IC0tbGlzdCcgaS5lLiB0aGUgYWN0dWFsIHNj cmlwdCBuYW1lIG1pbnVzIGFueSBsYW5ndWFnZQogICBleHRlbnNpb24uICBUaGUgcGVyZi5kYXRh IG91dHB1dCBmcm9tIGEgcHJldmlvdXMgcnVuIG9mICdwZXJmIHNjcmlwdAogICByZWNvcmQgPHNj cmlwdD4nIGlzIHVzZWQgYW5kIHNob3VsZCBiZSBwcmVzZW50IGZvciB0aGlzIGNvbW1hbmQgdG8K ICAgc3VjY2VlZC4gIFthcmdzXSByZWZlcnMgdG8gdGhlIChtYWlubHkgb3B0aW9uYWwpIGFyZ3Mg ZXhwZWN0ZWQgYnkKQEAgLTc2LDcgKzc2LDcgQEAgT1BUSU9OUwogCUFueSBjb21tYW5kIHlvdSBj YW4gc3BlY2lmeSBpbiBhIHNoZWxsLgogCiAtRDo6Ci0tLWR1bXAtcmF3LXNjcmlwdD06OgorLS1k dW1wLXJhdy10cmFjZT06OgogICAgICAgICBEaXNwbGF5IHZlcmJvc2UgZHVtcCBvZiB0aGUgdHJh Y2UgZGF0YS4KIAogLUw6OgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi90ZXN0cy9wYXJzZS1ldmVu dHMuYyBiL3Rvb2xzL3BlcmYvdGVzdHMvcGFyc2UtZXZlbnRzLmMKaW5kZXggZGViYTY2OTU1Zjhj Li5iZmVlY2Q0Yjk0NjcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdGVzdHMvcGFyc2UtZXZlbnRz LmMKKysrIGIvdG9vbHMvcGVyZi90ZXN0cy9wYXJzZS1ldmVudHMuYwpAQCAtMTUzOSwyMSArMTUz OSwxOSBAQCBzdGF0aWMgaW50IHRlc3RfcG11X2V2ZW50cyh2b2lkKQogCX0KIAogCXdoaWxlICgh cmV0ICYmIChlbnQgPSByZWFkZGlyKGRpcikpKSB7Ci0jZGVmaW5lIE1BWF9OQU1FIDEwMAogCQlz dHJ1Y3QgZXZsaXN0X3Rlc3QgZTsKLQkJY2hhciBuYW1lW01BWF9OQU1FXTsKKwkJY2hhciBuYW1l WzIgKiBOQU1FX01BWCArIDEgKyAxMiArIDNdOwogCiAJCWlmICghc3RyY21wKGVudC0+ZF9uYW1l LCAiLiIpIHx8CiAJCSAgICAhc3RyY21wKGVudC0+ZF9uYW1lLCAiLi4iKSkKIAkJCWNvbnRpbnVl OwogCi0JCXNucHJpbnRmKG5hbWUsIE1BWF9OQU1FLCAiY3B1L2V2ZW50PSVzL3UiLCBlbnQtPmRf bmFtZSk7CisJCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgImNwdS9ldmVudD0lcy91Iiwg ZW50LT5kX25hbWUpOwogCiAJCWUubmFtZSAgPSBuYW1lOwogCQllLmNoZWNrID0gdGVzdF9fY2hl Y2tldmVudF9wbXVfZXZlbnRzOwogCiAJCXJldCA9IHRlc3RfZXZlbnQoJmUpOwotI3VuZGVmIE1B WF9OQU1FCiAJfQogCiAJY2xvc2VkaXIoZGlyKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRp bC9ldmxpc3QuYyBiL3Rvb2xzL3BlcmYvdXRpbC9ldmxpc3QuYwppbmRleCA1OWVmMjgwMmZjZjYu Ljg4NmM4ODU1MWMyZiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL2V2bGlzdC5jCisrKyBi L3Rvb2xzL3BlcmYvdXRpbC9ldmxpc3QuYwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgaW50IHBlcmZf ZXZsaXN0X19zdGFydF93b3JrbG9hZChzdHJ1Y3QgcGVyZl9ldmxpc3QgKmV2bGlzdCkKIAkJICov CiAJCXJldCA9IHdyaXRlKGV2bGlzdC0+d29ya2xvYWQuY29ya19mZCwgJmJmLCAxKTsKIAkJaWYg KHJldCA8IDApCi0JCQlwZXJyb3IoImVuYWJsZSB0byB3cml0ZSB0byBwaXBlIik7CisJCQlwZXJy b3IoInVuYWJsZSB0byB3cml0ZSB0byBwaXBlIik7CiAKIAkJY2xvc2UoZXZsaXN0LT53b3JrbG9h ZC5jb3JrX2ZkKTsKIAkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcva3Rl c3Qva3Rlc3QucGwgYi90b29scy90ZXN0aW5nL2t0ZXN0L2t0ZXN0LnBsCmluZGV4IDQwNjMxNTY5 YTBmZC4uYTk4YThlYTY1MTRjIDEwMDc1NQotLS0gYS90b29scy90ZXN0aW5nL2t0ZXN0L2t0ZXN0 LnBsCisrKyBiL3Rvb2xzL3Rlc3Rpbmcva3Rlc3Qva3Rlc3QucGwKQEAgLTI0NDUsNyArMjQ0NSw3 IEBAIHN1YiBkb19ydW5fdGVzdCB7CiAgICAgfQogCiAgICAgd2FpdHBpZCAkY2hpbGRfcGlkLCAw OwotICAgICRjaGlsZF9leGl0ID0gJD87CisgICAgJGNoaWxkX2V4aXQgPSAkPyA+PiA4OwogCiAg ICAgaWYgKCEkYnVnICYmICRpbl9iaXNlY3QpIHsKIAlpZiAoZGVmaW5lZCgkYmlzZWN0X3JldF9n b29kKSkgewo= --=-CUcUAfpZYY2Dq2jGErZG-- --=-2vA5ZnECyAmdncrh9K+8 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAlkwRyYACgkQ57/I7JWG EQm/0Q/+N4LX7hhB9+NjUDNujWyIMElcIj0djV2DYHFe166DQvWNC1dvydCBGxvP hf5WRnhjsFsIRvLq17G/oZRTPJrY2lWpSu+ZnaPWHUrjVF4Zon+JZVR6gvJaJa0i lkEfgEmqdN50I0H3e4XtODUnwLeYQCSgX4rsqNB3oomzJ5z+ojgK6fdh0F/NFVcv YnFDIlg0DBJaEv2/o8wMzMMCgtxn37sR1yOCBWWvKhx5pXa+s/+rJQON9/znGdA6 nBsiaE2c1DEQm+y0TX7SiXdoQELGb+jnumkYPfXABB0Vo2MiW5yon4gJZ7TWSJQM fj7lMJeY+xOiEaoTRgFMchiZx2baYfJ5Q+ZCUe/rfXLgbmkhffy9agMnz5GHP9hn dxggK1ckIfLPhJirbAz7fNpR8W+4n0ErqJK7q8UaRcIvE3OK+WowFnij7oG6Z9Q9 gBHA+/9+Km70kInavwJpEJuyGHJJKQ/zd+bDTFEf+oVKCd6Er9nvZzHpp8vbS1RP n7O1+wP7m3WYAGBAT9IHUNxTqbvjmpAs/dup4Ztf3zZv4iSPSrpmpbLMFR2T+Qi7 Mlp9u3LvIgn+eU/iqemKhVcz3l7JfZsGao6aGJ52C/gnc9PrC1Lh9K1hPDQLgAR1 lJOCmloQSlwz3zeAZzZ+AO1yLcIuTNxRqKo0w30WksAeDZIYYsI= =m+Qi -----END PGP SIGNATURE----- --=-2vA5ZnECyAmdncrh9K+8--