From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753633AbcBXAsc (ORCPT ); Tue, 23 Feb 2016 19:48:32 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:42258 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751730AbcBXAs3 (ORCPT ); Tue, 23 Feb 2016 19:48:29 -0500 Message-ID: <1456274894.14487.1.camel@decadent.org.uk> Subject: Re: [PATCH 3.2 00/67] 3.2.78-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , Phil Jensen , akpm@linux-foundation.org Date: Wed, 24 Feb 2016 00:48:14 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-7728qzalRE/GXsA4UYnv" X-Mailer: Evolution 3.18.3-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 5.148.47.190 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 --=-7728qzalRE/GXsA4UYnv Content-Type: multipart/mixed; boundary="=-0qZLOPfddWyNJPn+ROpU" --=-0qZLOPfddWyNJPn+ROpU Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.2.78-rc1 relative to 3.2.77. Ben. --=20 Ben Hutchings Beware of programmers who carry screwdrivers. - Leonard Brandwein --=-0qZLOPfddWyNJPn+ROpU Content-Disposition: attachment; filename="linux-3.2.78-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.2.78-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzY3RsL2ZzLnR4dCBiL0RvY3VtZW50YXRpb24v c3lzY3RsL2ZzLnR4dAppbmRleCBiMzE4YTc4NDhhZGQuLmI5Y2VhOGZlNDdmMCAxMDA2NDQKLS0t IGEvRG9jdW1lbnRhdGlvbi9zeXNjdGwvZnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc3lzY3Rs L2ZzLnR4dApAQCAtMzIsNiArMzIsOCBAQCBDdXJyZW50bHksIHRoZXNlIGZpbGVzIGFyZSBpbiAv cHJvYy9zeXMvZnM6CiAtIG5yX29wZW4KIC0gb3ZlcmZsb3d1aWQKIC0gb3ZlcmZsb3dnaWQKKy0g cGlwZS11c2VyLXBhZ2VzLWhhcmQKKy0gcGlwZS11c2VyLXBhZ2VzLXNvZnQKIC0gc3VpZF9kdW1w YWJsZQogLSBzdXBlci1tYXgKIC0gc3VwZXItbnIKQEAgLTE1Nyw2ICsxNTksMjcgQEAgVGhlIGRl ZmF1bHQgaXMgNjU1MzQuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAKK3BpcGUtdXNlci1wYWdlcy1oYXJkOgorCitNYXhp bXVtIHRvdGFsIG51bWJlciBvZiBwYWdlcyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIgbWF5IGFsbG9j YXRlIGZvciBwaXBlcy4KK09uY2UgdGhpcyBsaW1pdCBpcyByZWFjaGVkLCBubyBuZXcgcGlwZXMg bWF5IGJlIGFsbG9jYXRlZCB1bnRpbCB1c2FnZSBnb2VzCitiZWxvdyB0aGUgbGltaXQgYWdhaW4u IFdoZW4gc2V0IHRvIDAsIG5vIGxpbWl0IGlzIGFwcGxpZWQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0 CitzZXR0aW5nLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorCitwaXBlLXVzZXItcGFnZXMtc29mdDoKKworTWF4aW11bSB0 b3RhbCBudW1iZXIgb2YgcGFnZXMgYSBub24tcHJpdmlsZWdlZCB1c2VyIG1heSBhbGxvY2F0ZSBm b3IgcGlwZXMKK2JlZm9yZSB0aGUgcGlwZSBzaXplIGdldHMgbGltaXRlZCB0byBhIHNpbmdsZSBw YWdlLiBPbmNlIHRoaXMgbGltaXQgaXMgcmVhY2hlZCwKK25ldyBwaXBlcyB3aWxsIGJlIGxpbWl0 ZWQgdG8gYSBzaW5nbGUgcGFnZSBpbiBzaXplIGZvciB0aGlzIHVzZXIgaW4gb3JkZXIgdG8KK2xp bWl0IHRvdGFsIG1lbW9yeSB1c2FnZSwgYW5kIHRyeWluZyB0byBpbmNyZWFzZSB0aGVtIHVzaW5n IGZjbnRsKCkgd2lsbCBiZQorZGVuaWVkIHVudGlsIHVzYWdlIGdvZXMgYmVsb3cgdGhlIGxpbWl0 IGFnYWluLiBUaGUgZGVmYXVsdCB2YWx1ZSBhbGxvd3MgdG8KK2FsbG9jYXRlIHVwIHRvIDEwMjQg cGlwZXMgYXQgdGhlaXIgZGVmYXVsdCBzaXplLiBXaGVuIHNldCB0byAwLCBubyBsaW1pdCBpcwor YXBwbGllZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKwogc3VpZF9kdW1wYWJsZToKIAogVGhpcyB2YWx1ZSBjYW4gYmUg dXNlZCB0byBxdWVyeSBhbmQgc2V0IHRoZSBjb3JlIGR1bXAgbW9kZSBmb3Igc2V0dWlkCmRpZmYg LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDRlOWI4ZWVjMWExYi4uOGQ3NmMyOWM4 NmRmIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMSw3ICsxLDcgQEAK IFZFUlNJT04gPSAzCiBQQVRDSExFVkVMID0gMgotU1VCTEVWRUwgPSA3NwotRVhUUkFWRVJTSU9O ID0KK1NVQkxFVkVMID0gNzgKK0VYVFJBVkVSU0lPTiA9IC1yYzEKIE5BTUUgPSBTYWJlci10b290 aGVkIFNxdWlycmVsCiAKICMgKkRPQ1VNRU5UQVRJT04qCmRpZmYgLS1naXQgYS9hcmNoL2FybS9j b21tb24vaWNzdC5jIGIvYXJjaC9hcm0vY29tbW9uL2ljc3QuYwppbmRleCAyZGM2ZGE3MGFlNTku LmQ3ZWQyNTI3MDhjNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29tbW9uL2ljc3QuYworKysgYi9h cmNoL2FybS9jb21tb24vaWNzdC5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKi8KICNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLQorI2luY2x1ZGUgPGFz bS9kaXY2NC5oPgogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9pY3N0Lmg+CiAKIC8qCkBAIC0yOSw3 ICsyOSwxMSBAQCBFWFBPUlRfU1lNQk9MKGljc3Q1MjVfczJkaXYpOwogCiB1bnNpZ25lZCBsb25n IGljc3RfaHooY29uc3Qgc3RydWN0IGljc3RfcGFyYW1zICpwLCBzdHJ1Y3QgaWNzdF92Y28gdmNv KQogewotCXJldHVybiBwLT5yZWYgKiAyICogKHZjby52ICsgOCkgLyAoKHZjby5yICsgMikgKiBw LT5zMmRpdlt2Y28uc10pOworCXU2NCBkaXZpZGVuZCA9IHAtPnJlZiAqIDIgKiAodTY0KSh2Y28u diArIDgpOworCXUzMiBkaXZpc29yID0gKHZjby5yICsgMikgKiBwLT5zMmRpdlt2Y28uc107CisK Kwlkb19kaXYoZGl2aWRlbmQsIGRpdmlzb3IpOworCXJldHVybiAodW5zaWduZWQgbG9uZylkaXZp ZGVuZDsKIH0KIAogRVhQT1JUX1NZTUJPTChpY3N0X2h6KTsKQEAgLTU4LDYgKzYyLDcgQEAgaWNz dF9oel90b192Y28oY29uc3Qgc3RydWN0IGljc3RfcGFyYW1zICpwLCB1bnNpZ25lZCBsb25nIGZy ZXEpCiAKIAkJaWYgKGYgPiBwLT52Y29fbWluICYmIGYgPD0gcC0+dmNvX21heCkKIAkJCWJyZWFr OworCQlpKys7CiAJfSB3aGlsZSAoaSA8IDgpOwogCiAJaWYgKGkgPj0gOCkKZGlmZiAtLWdpdCBh L2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwppbmRleCBkNDdkMTUzN2Fm YzQuLjA5ZGFiNWJjNDk5NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCisrKyBiL2Fy Y2gveDg2L2t2bS94ODYuYwpAQCAtNTI1Nyw5ICs1MjU3LDEwIEBAIGludCBrdm1fYXJjaF9pbml0 KHZvaWQgKm9wYXF1ZSkKIAkJZ290byBvdXQ7CiAKIAlrdm1fc2V0X21taW9fc3B0ZV9tYXNrKCk7 Ci0Ja3ZtX2luaXRfbXNyX2xpc3QoKTsKIAogCWt2bV94ODZfb3BzID0gb3BzOworCWt2bV9pbml0 X21zcl9saXN0KCk7CisKIAlrdm1fbW11X3NldF9tYXNrX3B0ZXMoUFRfVVNFUl9NQVNLLCBQVF9B Q0NFU1NFRF9NQVNLLAogCQkJUFRfRElSVFlfTUFTSywgUFQ2NF9OWF9NQVNLLCAwKTsKIApkaWZm IC0tZ2l0IGEvYXJjaC94ODYvbW0vcGFnZWF0dHIuYyBiL2FyY2gveDg2L21tL3BhZ2VhdHRyLmMK aW5kZXggZjllNTI2NzQyZmExLi4xMWZiZTQ0OThmMjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21t L3BhZ2VhdHRyLmMKKysrIGIvYXJjaC94ODYvbW0vcGFnZWF0dHIuYwpAQCAtMzIsNyArMzIsNyBA QCBzdHJ1Y3QgY3BhX2RhdGEgewogCXVuc2lnbmVkIGxvbmcJKnZhZGRyOwogCXBncHJvdF90CW1h c2tfc2V0OwogCXBncHJvdF90CW1hc2tfY2xyOwotCWludAkJbnVtcGFnZXM7CisJdW5zaWduZWQg bG9uZwludW1wYWdlczsKIAlpbnQJCWZsYWdzOwogCXVuc2lnbmVkIGxvbmcJcGZuOwogCXVuc2ln bmVkCWZvcmNlX3NwbGl0IDogMTsKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgaW50IF9fY2hh bmdlX3BhZ2VfYXR0cl9zZXRfY2xyKHN0cnVjdCBjcGFfZGF0YSAqY3BhLCBpbnQgY2hlY2thbGlh cykKIAkJICogQ1BBIG9wZXJhdGlvbi4gRWl0aGVyIGEgbGFyZ2UgcGFnZSBoYXMgYmVlbgogCQkg KiBwcmVzZXJ2ZWQgb3IgYSBzaW5nbGUgcGFnZSB1cGRhdGUgaGFwcGVuZWQuCiAJCSAqLwotCQlC VUdfT04oY3BhLT5udW1wYWdlcyA+IG51bXBhZ2VzKTsKKwkJQlVHX09OKGNwYS0+bnVtcGFnZXMg PiBudW1wYWdlcyB8fCAhY3BhLT5udW1wYWdlcyk7CiAJCW51bXBhZ2VzIC09IGNwYS0+bnVtcGFn ZXM7CiAJCWlmIChjcGEtPmZsYWdzICYgKENQQV9QQUdFU19BUlJBWSB8IENQQV9BUlJBWSkpCiAJ CQljcGEtPmN1cnBhZ2UrKzsKZGlmZiAtLWdpdCBhL2NyeXB0by9hbGdpZl9oYXNoLmMgYi9jcnlw dG8vYWxnaWZfaGFzaC5jCmluZGV4IDJkZmIwZjEwZTBiYi4uZDExZDQzMTI1MWY3IDEwMDY0NAot LS0gYS9jcnlwdG8vYWxnaWZfaGFzaC5jCisrKyBiL2NyeXB0by9hbGdpZl9oYXNoLmMKQEAgLTU2 LDcgKzU2LDggQEAgc3RhdGljIGludCBoYXNoX3NlbmRtc2coc3RydWN0IGtpb2NiICp1bnVzZWQs IHN0cnVjdCBzb2NrZXQgKnNvY2ssCiAKIAlsb2NrX3NvY2soc2spOwogCWlmICghY3R4LT5tb3Jl KSB7Ci0JCWVyciA9IGNyeXB0b19haGFzaF9pbml0KCZjdHgtPnJlcSk7CisJCWVyciA9IGFmX2Fs Z193YWl0X2Zvcl9jb21wbGV0aW9uKGNyeXB0b19haGFzaF9pbml0KCZjdHgtPnJlcSksCisJCQkJ CQkmY3R4LT5jb21wbGV0aW9uKTsKIAkJaWYgKGVycikKIAkJCWdvdG8gdW5sb2NrOwogCX0KQEAg LTEzNiw2ICsxMzcsNyBAQCBzdGF0aWMgc3NpemVfdCBoYXNoX3NlbmRwYWdlKHN0cnVjdCBzb2Nr ZXQgKnNvY2ssIHN0cnVjdCBwYWdlICpwYWdlLAogCX0gZWxzZSB7CiAJCWlmICghY3R4LT5tb3Jl KSB7CiAJCQllcnIgPSBjcnlwdG9fYWhhc2hfaW5pdCgmY3R4LT5yZXEpOworCQkJZXJyID0gYWZf YWxnX3dhaXRfZm9yX2NvbXBsZXRpb24oZXJyLCAmY3R4LT5jb21wbGV0aW9uKTsKIAkJCWlmIChl cnIpCiAJCQkJZ290byB1bmxvY2s7CiAJCX0KZGlmZiAtLWdpdCBhL2NyeXB0by9hbGdpZl9za2Np cGhlci5jIGIvY3J5cHRvL2FsZ2lmX3NrY2lwaGVyLmMKaW5kZXggNDVmYTZiZDkxODdiLi5kYTVk NGVkMjM4ZTIgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hbGdpZl9za2NpcGhlci5jCisrKyBiL2NyeXB0 by9hbGdpZl9za2NpcGhlci5jCkBAIC0yNDksOCArMjQ5LDExIEBAIHN0YXRpYyBpbnQgc2tjaXBo ZXJfc2VuZG1zZyhzdHJ1Y3Qga2lvY2IgKnVudXNlZCwgc3RydWN0IHNvY2tldCAqc29jaywKIHsK IAlzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLT5zazsKIAlzdHJ1Y3QgYWxnX3NvY2sgKmFzayA9IGFs Z19zayhzayk7CisJc3RydWN0IHNvY2sgKnBzayA9IGFzay0+cGFyZW50OworCXN0cnVjdCBhbGdf c29jayAqcGFzayA9IGFsZ19zayhwc2spOwogCXN0cnVjdCBza2NpcGhlcl9jdHggKmN0eCA9IGFz ay0+cHJpdmF0ZTsKLQlzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnRmbSA9IGNyeXB0b19hYmxr Y2lwaGVyX3JlcXRmbSgmY3R4LT5yZXEpOworCXN0cnVjdCBhYmxrY2lwaGVyX3RmbSAqc2tjID0g cGFzay0+cHJpdmF0ZTsKKwlzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnRmbSA9IHNrYy0+YmFz ZTsKIAl1bnNpZ25lZCBpdnNpemUgPSBjcnlwdG9fYWJsa2NpcGhlcl9pdnNpemUodGZtKTsKIAlz dHJ1Y3Qgc2tjaXBoZXJfc2dfbGlzdCAqc2dsOwogCXN0cnVjdCBhZl9hbGdfY29udHJvbCBjb24g PSB7fTsKZGlmZiAtLWdpdCBhL2NyeXB0by9jcnlwdG9fdXNlci5jIGIvY3J5cHRvL2NyeXB0b191 c2VyLmMKaW5kZXggNWI2M2I4ZGQxZjlmLi5hMWQ1ODY2ODVmNWUgMTAwNjQ0Ci0tLSBhL2NyeXB0 by9jcnlwdG9fdXNlci5jCisrKyBiL2NyeXB0by9jcnlwdG9fdXNlci5jCkBAIC0zOTAsOCArMzkw LDEyIEBAIHN0YXRpYyBpbnQgY3J5cHRvX3VzZXJfcmN2X21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCkKIAkJaWYgKGxpbmstPmR1bXAgPT0gTlVMTCkKIAkJCXJl dHVybiAtRUlOVkFMOwogCi0JCXJldHVybiBuZXRsaW5rX2R1bXBfc3RhcnQoY3J5cHRvX25sc2ss IHNrYiwgbmxoLAorCQlkb3duX3JlYWQoJmNyeXB0b19hbGdfc2VtKTsKKwkJZXJyID0gbmV0bGlu a19kdW1wX3N0YXJ0KGNyeXB0b19ubHNrLCBza2IsIG5saCwKIAkJCQkJICBsaW5rLT5kdW1wLCBs aW5rLT5kb25lLCAwKTsKKwkJdXBfcmVhZCgmY3J5cHRvX2FsZ19zZW0pOworCisJCXJldHVybiBl cnI7CiAJfQogCiAJZXJyID0gbmxtc2dfcGFyc2UobmxoLCBjcnlwdG9fbXNnX21pblt0eXBlXSwg YXR0cnMsIENSWVBUT0NGR0FfTUFYLApkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYXNoLmMgYi9jcnlw dG8vc2hhc2guYwppbmRleCBkMTVmMzUwMTljNGIuLjA2MGU0MmJmMmIzNyAxMDA2NDQKLS0tIGEv Y3J5cHRvL3NoYXNoLmMKKysrIGIvY3J5cHRvL3NoYXNoLmMKQEAgLTM1MywxMSArMzUzLDEwIEBA IGludCBjcnlwdG9faW5pdF9zaGFzaF9vcHNfYXN5bmMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkK IAljcnQtPmZpbmFsID0gc2hhc2hfYXN5bmNfZmluYWw7CiAJY3J0LT5maW51cCA9IHNoYXNoX2Fz eW5jX2ZpbnVwOwogCWNydC0+ZGlnZXN0ID0gc2hhc2hfYXN5bmNfZGlnZXN0OworCWNydC0+c2V0 a2V5ID0gc2hhc2hfYXN5bmNfc2V0a2V5OworCisJY3J0LT5oYXNfc2V0a2V5ID0gYWxnLT5zZXRr ZXkgIT0gc2hhc2hfbm9fc2V0a2V5OwogCi0JaWYgKGFsZy0+c2V0a2V5KSB7Ci0JCWNydC0+c2V0 a2V5ID0gc2hhc2hfYXN5bmNfc2V0a2V5OwotCQljcnQtPmhhc19zZXRrZXkgPSB0cnVlOwotCX0K IAlpZiAoYWxnLT5leHBvcnQpCiAJCWNydC0+ZXhwb3J0ID0gc2hhc2hfYXN5bmNfZXhwb3J0Owog CWlmIChhbGctPmltcG9ydCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2FoY2kuYyBiL2RyaXZl cnMvYXRhL2FoY2kuYwppbmRleCA3MTE3NDU3NmViM2IuLmYyZmQ2YTczOTJmYyAxMDA2NDQKLS0t IGEvZHJpdmVycy9hdGEvYWhjaS5jCisrKyBiL2RyaXZlcnMvYXRhL2FoY2kuYwpAQCAtMjc0LDYg KzI3NCwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYWhjaV9wY2lfdGJs W10gPSB7CiAJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgzYjJiKSwgYm9hcmRfYWhjaSB9LCAvKiBQ Q0ggUkFJRCAqLwogCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4M2IyYyksIGJvYXJkX2FoY2kgfSwg LyogUENIIFJBSUQgKi8KIAl7IFBDSV9WREVWSUNFKElOVEVMLCAweDNiMmYpLCBib2FyZF9haGNp IH0sIC8qIFBDSCBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgxOWIwKSwgYm9hcmRf YWhjaSB9LCAvKiBETlYgQUhDSSAqLworCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MTliMSksIGJv YXJkX2FoY2kgfSwgLyogRE5WIEFIQ0kgKi8KKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDE5YjIp LCBib2FyZF9haGNpIH0sIC8qIEROViBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgx OWIzKSwgYm9hcmRfYWhjaSB9LCAvKiBETlYgQUhDSSAqLworCXsgUENJX1ZERVZJQ0UoSU5URUws IDB4MTliNCksIGJvYXJkX2FoY2kgfSwgLyogRE5WIEFIQ0kgKi8KKwl7IFBDSV9WREVWSUNFKElO VEVMLCAweDE5YjUpLCBib2FyZF9haGNpIH0sIC8qIEROViBBSENJICovCisJeyBQQ0lfVkRFVklD RShJTlRFTCwgMHgxOWI2KSwgYm9hcmRfYWhjaSB9LCAvKiBETlYgQUhDSSAqLworCXsgUENJX1ZE RVZJQ0UoSU5URUwsIDB4MTliNyksIGJvYXJkX2FoY2kgfSwgLyogRE5WIEFIQ0kgKi8KKwl7IFBD SV9WREVWSUNFKElOVEVMLCAweDE5YkUpLCBib2FyZF9haGNpIH0sIC8qIEROViBBSENJICovCisJ eyBQQ0lfVkRFVklDRShJTlRFTCwgMHgxOWJGKSwgYm9hcmRfYWhjaSB9LCAvKiBETlYgQUhDSSAq LworCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MTljMCksIGJvYXJkX2FoY2kgfSwgLyogRE5WIEFI Q0kgKi8KKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDE5YzEpLCBib2FyZF9haGNpIH0sIC8qIERO ViBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgxOWMyKSwgYm9hcmRfYWhjaSB9LCAv KiBETlYgQUhDSSAqLworCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MTljMyksIGJvYXJkX2FoY2kg fSwgLyogRE5WIEFIQ0kgKi8KKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDE5YzQpLCBib2FyZF9h aGNpIH0sIC8qIEROViBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgxOWM1KSwgYm9h cmRfYWhjaSB9LCAvKiBETlYgQUhDSSAqLworCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MTljNiks IGJvYXJkX2FoY2kgfSwgLyogRE5WIEFIQ0kgKi8KKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDE5 YzcpLCBib2FyZF9haGNpIH0sIC8qIEROViBBSENJICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwg MHgxOWNFKSwgYm9hcmRfYWhjaSB9LCAvKiBETlYgQUhDSSAqLworCXsgUENJX1ZERVZJQ0UoSU5U RUwsIDB4MTljRiksIGJvYXJkX2FoY2kgfSwgLyogRE5WIEFIQ0kgKi8KIAl7IFBDSV9WREVWSUNF KElOVEVMLCAweDFjMDIpLCBib2FyZF9haGNpIH0sIC8qIENQVCBBSENJICovCiAJeyBQQ0lfVkRF VklDRShJTlRFTCwgMHgxYzAzKSwgYm9hcmRfYWhjaSB9LCAvKiBDUFQgQUhDSSAqLwogCXsgUENJ X1ZERVZJQ0UoSU5URUwsIDB4MWMwNCksIGJvYXJkX2FoY2kgfSwgLyogQ1BUIFJBSUQgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2xpYmFoY2kuYyBiL2RyaXZlcnMvYXRhL2xpYmFoY2kuYwpp bmRleCBmYTNlY2EzNTFmZWMuLjFhZGI3MTczM2QwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEv bGliYWhjaS5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmFoY2kuYwpAQCAtNDgwLDggKzQ4MCw4IEBA IHZvaWQgYWhjaV9zYXZlX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJfQog CX0KIAotCS8qIGZhYnJpY2F0ZSBwb3J0X21hcCBmcm9tIGNhcC5ucl9wb3J0cyAqLwotCWlmICgh cG9ydF9tYXApIHsKKwkvKiBmYWJyaWNhdGUgcG9ydF9tYXAgZnJvbSBjYXAubnJfcG9ydHMgZm9y IDwgQUhDSSAxLjMgKi8KKwlpZiAoIXBvcnRfbWFwICYmIHZlcnMgPCAweDEwMzAwKSB7CiAJCXBv cnRfbWFwID0gKDEgPDwgYWhjaV9ucl9wb3J0cyhjYXApKSAtIDE7CiAJCWRldl93YXJuKGRldiwg ImZvcmNpbmcgUE9SVFNfSU1QTCB0byAweCV4XG4iLCBwb3J0X21hcCk7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYwppbmRl eCAyMmVkYzkyNzFhM2EuLmNiMjkwYWYxNTI1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGli YXRhLXNmZi5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYwpAQCAtOTk3LDEyICs5OTcs OSBAQCBzdGF0aWMgaW5saW5lIGludCBhdGFfaHNtX29rX2luX3dxKHN0cnVjdCBhdGFfcG9ydCAq YXAsCiBzdGF0aWMgdm9pZCBhdGFfaHNtX3FjX2NvbXBsZXRlKHN0cnVjdCBhdGFfcXVldWVkX2Nt ZCAqcWMsIGludCBpbl93cSkKIHsKIAlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwotCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlpZiAoYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcikgewogCQlp ZiAoaW5fd3EpIHsKLQkJCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7Ci0KIAkJ CS8qIEVIIG1pZ2h0IGhhdmUga2lja2VkIGluIHdoaWxlIGhvc3QgbG9jayBpcwogCQkJICogcmVs ZWFzZWQuCiAJCQkgKi8KQEAgLTEwMTQsOCArMTAxMSw2IEBAIHN0YXRpYyB2b2lkIGF0YV9oc21f cWNfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYywgaW50IGluX3dxKQogCQkJCX0g ZWxzZQogCQkJCQlhdGFfcG9ydF9mcmVlemUoYXApOwogCQkJfQotCi0JCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CiAJCX0gZWxzZSB7CiAJCQlpZiAobGlrZWx5KCEo cWMtPmVycl9tYXNrICYgQUNfRVJSX0hTTSkpKQogCQkJCWF0YV9xY19jb21wbGV0ZShxYyk7CkBA IC0xMDI0LDEwICsxMDE5LDggQEAgc3RhdGljIHZvaWQgYXRhX2hzbV9xY19jb21wbGV0ZShzdHJ1 Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjLCBpbnQgaW5fd3EpCiAJCX0KIAl9IGVsc2UgewogCQlpZiAo aW5fd3EpIHsKLQkJCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CiAJCQlhdGFf c2ZmX2lycV9vbihhcCk7CiAJCQlhdGFfcWNfY29tcGxldGUocWMpOwotCQkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOwogCQl9IGVsc2UKIAkJCWF0YV9xY19jb21wbGV0 ZShxYyk7CiAJfQpAQCAtMTA0OCw5ICsxMDQxLDEwIEBAIGludCBhdGFfc2ZmX2hzbV9tb3ZlKHN0 cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMsCiB7CiAJc3RydWN0 IGF0YV9saW5rICpsaW5rID0gcWMtPmRldi0+bGluazsKIAlzdHJ1Y3QgYXRhX2VoX2luZm8gKmVo aSA9ICZsaW5rLT5laF9pbmZvOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwogCWludCBwb2xs X25leHQ7CiAKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKGFwLT5sb2NrKTsKKwogCVdBUk5fT05fT05D RSgocWMtPmZsYWdzICYgQVRBX1FDRkxBR19BQ1RJVkUpID09IDApOwogCiAJLyogTWFrZSBzdXJl IGF0YV9zZmZfcWNfaXNzdWUoKSBkb2VzIG5vdCB0aHJvdyB0aGluZ3MKQEAgLTExMTIsMTQgKzEx MDYsNiBAQCBmc21fc3RhcnQ6CiAJCQl9CiAJCX0KIAotCQkvKiBTZW5kIHRoZSBDREIgKGF0YXBp KSBvciB0aGUgZmlyc3QgZGF0YSBibG9jayAoYXRhIHBpbyBvdXQpLgotCQkgKiBEdXJpbmcgdGhl IHN0YXRlIHRyYW5zaXRpb24sIGludGVycnVwdCBoYW5kbGVyIHNob3VsZG4ndAotCQkgKiBiZSBp bnZva2VkIGJlZm9yZSB0aGUgZGF0YSB0cmFuc2ZlciBpcyBjb21wbGV0ZSBhbmQKLQkJICogaHNt X3Rhc2tfc3RhdGUgaXMgY2hhbmdlZC4gSGVuY2UsIHRoZSBmb2xsb3dpbmcgbG9ja2luZy4KLQkJ ICovCi0JCWlmIChpbl93cSkKLQkJCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7 Ci0KIAkJaWYgKHFjLT50Zi5wcm90b2NvbCA9PSBBVEFfUFJPVF9QSU8pIHsKIAkJCS8qIFBJTyBk YXRhIG91dCBwcm90b2NvbC4KIAkJCSAqIHNlbmQgZmlyc3QgZGF0YSBibG9jay4KQEAgLTExMzUs OSArMTEyMSw2IEBAIGZzbV9zdGFydDoKIAkJCS8qIHNlbmQgQ0RCICovCiAJCQlhdGFwaV9zZW5k X2NkYihhcCwgcWMpOwogCi0JCWlmIChpbl93cSkKLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo YXAtPmxvY2ssIGZsYWdzKTsKLQogCQkvKiBpZiBwb2xsaW5nLCBhdGFfc2ZmX3Bpb190YXNrKCkg aGFuZGxlcyB0aGUgcmVzdC4KIAkJICogb3RoZXJ3aXNlLCBpbnRlcnJ1cHQgaGFuZGxlciB0YWtl cyBvdmVyIGZyb20gaGVyZS4KIAkJICovCkBAIC0xMzYxLDEyICsxMzQ0LDE0IEBAIHN0YXRpYyB2 b2lkIGF0YV9zZmZfcGlvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXU4IHN0YXR1 czsKIAlpbnQgcG9sbF9uZXh0OwogCisJc3Bpbl9sb2NrX2lycShhcC0+bG9jayk7CisKIAlCVUdf T04oYXAtPnNmZl9waW9fdGFza19saW5rID09IE5VTEwpOwogCS8qIHFjIGNhbiBiZSBOVUxMIGlm IHRpbWVvdXQgb2NjdXJyZWQgKi8KIAlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgbGluay0+YWN0 aXZlX3RhZyk7CiAJaWYgKCFxYykgewogCQlhcC0+c2ZmX3Bpb190YXNrX2xpbmsgPSBOVUxMOwot CQlyZXR1cm47CisJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKIGZzbV9zdGFydDoKQEAgLTEzODEs MTEgKzEzNjYsMTQgQEAgZnNtX3N0YXJ0OgogCSAqLwogCXN0YXR1cyA9IGF0YV9zZmZfYnVzeV93 YWl0KGFwLCBBVEFfQlVTWSwgNSk7CiAJaWYgKHN0YXR1cyAmIEFUQV9CVVNZKSB7CisJCXNwaW5f dW5sb2NrX2lycShhcC0+bG9jayk7CiAJCWF0YV9tc2xlZXAoYXAsIDIpOworCQlzcGluX2xvY2tf aXJxKGFwLT5sb2NrKTsKKwogCQlzdGF0dXMgPSBhdGFfc2ZmX2J1c3lfd2FpdChhcCwgQVRBX0JV U1ksIDEwKTsKIAkJaWYgKHN0YXR1cyAmIEFUQV9CVVNZKSB7CiAJCQlhdGFfc2ZmX3F1ZXVlX3Bp b190YXNrKGxpbmssIEFUQV9TSE9SVF9QQVVTRSk7Ci0JCQlyZXR1cm47CisJCQlnb3RvIG91dF91 bmxvY2s7CiAJCX0KIAl9CiAKQEAgLTE0MDIsNiArMTM5MCw4IEBAIGZzbV9zdGFydDoKIAkgKi8K IAlpZiAocG9sbF9uZXh0KQogCQlnb3RvIGZzbV9zdGFydDsKK291dF91bmxvY2s6CisJc3Bpbl91 bmxvY2tfaXJxKGFwLT5sb2NrKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Ry di5jCmluZGV4IGY3MzlmY2YzNWQ3NC4uMTQ4ZmE5MTIwYzVmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9kcnYuYwpAQCAtMjUsNiArMjUsNyBAQAogICoKICAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K ICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CiAK ICNpbmNsdWRlICJkcm1QLmgiCiAjaW5jbHVkZSAidm13Z2Z4X2Rydi5oIgpAQCAtMTE0Miw2ICsx MTQzLDEyIEBAIHN0YXRpYyBpbnQgdm13X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25z dCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogc3RhdGljIGludCBfX2luaXQgdm13Z2Z4X2lu aXQodm9pZCkKIHsKIAlpbnQgcmV0OworCisjaWZkZWYgQ09ORklHX1ZHQV9DT05TT0xFCisJaWYg KHZnYWNvbl90ZXh0X2ZvcmNlKCkpCisJCXJldHVybiAtRUlOVkFMOworI2VuZGlmCisKIAlyZXQg PSBkcm1fcGNpX2luaXQoJmRyaXZlciwgJnZtd19wY2lfZHJpdmVyKTsKIAlpZiAocmV0KQogCQlE Uk1fRVJST1IoIkZhaWxlZCBpbml0aWFsaXppbmcgRFJNLlxuIik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2luZmluaWJhbmQvaHcvY3hnYjMvaXdjaF9jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3 L2N4Z2IzL2l3Y2hfY20uYwppbmRleCBjODhiMTJiZWVmMjUuLjk5N2M1YTk1YjAyYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2IzL2l3Y2hfY20uYworKysgYi9kcml2ZXJz L2luZmluaWJhbmQvaHcvY3hnYjMvaXdjaF9jbS5jCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGlj IGludCBpd2NoX2wydF9zZW5kKHN0cnVjdCB0M2NkZXYgKnRkZXYsIHN0cnVjdCBza19idWZmICpz a2IsIHN0cnVjdCBsMnRfZW4KIAllcnJvciA9IGwydF9zZW5kKHRkZXYsIHNrYiwgbDJlKTsKIAlp ZiAoZXJyb3IgPCAwKQogCQlrZnJlZV9za2Ioc2tiKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJu IGVycm9yIDwgMCA/IGVycm9yIDogMDsKIH0KIAogaW50IGl3Y2hfY3hnYjNfb2ZsZF9zZW5kKHN0 cnVjdCB0M2NkZXYgKnRkZXYsIHN0cnVjdCBza19idWZmICpza2IpCkBAIC0xNjYsNyArMTY2LDcg QEAgaW50IGl3Y2hfY3hnYjNfb2ZsZF9zZW5kKHN0cnVjdCB0M2NkZXYgKnRkZXYsIHN0cnVjdCBz a19idWZmICpza2IpCiAJZXJyb3IgPSBjeGdiM19vZmxkX3NlbmQodGRldiwgc2tiKTsKIAlpZiAo ZXJyb3IgPCAwKQogCQlrZnJlZV9za2Ioc2tiKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVy cm9yIDwgMCA/IGVycm9yIDogMDsKIH0KIAogc3RhdGljIHZvaWQgcmVsZWFzZV90aWQoc3RydWN0 IHQzY2RldiAqdGRldiwgdTMyIGh3dGlkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3RkYTEwMDR4LmMgYi9kcml2ZXJzL21lZGlh L2R2Yi9mcm9udGVuZHMvdGRhMTAwNHguYwppbmRleCBlYTQ4NWQ5MjM1NTAuLjdhOGI3ZGJjMDQ4 YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3RkYTEwMDR4LmMKKysr IGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3RkYTEwMDR4LmMKQEAgLTg5OCw5ICs4OTgs MTggQEAgc3RhdGljIGludCB0ZGExMDA0eF9zZXRfZmUoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUs CiBzdGF0aWMgaW50IHRkYTEwMDR4X2dldF9mZShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgc3Ry dWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpmZV9wYXJhbXMpCiB7CiAJc3RydWN0IHRkYTEw MDR4X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCWludCBzdGF0dXM7CiAK IAlkcHJpbnRrKCIlc1xuIiwgX19mdW5jX18pOwogCisJc3RhdHVzID0gdGRhMTAwNHhfcmVhZF9i eXRlKHN0YXRlLCBUREExMDA0WF9TVEFUVVNfQ0QpOworCWlmIChzdGF0dXMgPT0gLTEpCisJCXJl dHVybiAtRUlPOworCisJLyogT25seSB1cGRhdGUgdGhlIHByb3BlcnRpZXMgY2FjaGUgaWYgZGV2 aWNlIGlzIGxvY2tlZCAqLworCWlmICghKHN0YXR1cyAmIDgpKQorCQlyZXR1cm4gMDsKKwogCS8v IGludmVyc2lvbiBzdGF0dXMKIAlmZV9wYXJhbXMtPmludmVyc2lvbiA9IElOVkVSU0lPTl9PRkY7 CiAJaWYgKHRkYTEwMDR4X3JlYWRfYnl0ZShzdGF0ZSwgVERBMTAwNFhfQ09ORkMxKSAmIDB4MjAp CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1hbHNhLmMg Yi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1hbHNhLmMKaW5kZXggZGJjZGZi ZjhhZWQwLi4xMWIwZWYzYTI4NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2Fh NzEzNC9zYWE3MTM0LWFsc2EuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2Fh NzEzNC1hbHNhLmMKQEAgLTExNDUsNiArMTE0NSw4IEBAIHN0YXRpYyBpbnQgYWxzYV9kZXZpY2Vf aW5pdChzdHJ1Y3Qgc2FhNzEzNF9kZXYgKmRldikKIAogc3RhdGljIGludCBhbHNhX2RldmljZV9l eGl0KHN0cnVjdCBzYWE3MTM0X2RldiAqZGV2KQogeworCWlmICghc25kX3NhYTcxMzRfY2FyZHNb ZGV2LT5ucl0pCisJCXJldHVybiAxOwogCiAJc25kX2NhcmRfZnJlZShzbmRfc2FhNzEzNF9jYXJk c1tkZXYtPm5yXSk7CiAJc25kX3NhYTcxMzRfY2FyZHNbZGV2LT5ucl0gPSBOVUxMOwpAQCAtMTE5 NCw3ICsxMTk2LDggQEAgc3RhdGljIHZvaWQgc2FhNzEzNF9hbHNhX2V4aXQodm9pZCkKIAlpbnQg aWR4OwogCiAJZm9yIChpZHggPSAwOyBpZHggPCBTTkRSVl9DQVJEUzsgaWR4KyspIHsKLQkJc25k X2NhcmRfZnJlZShzbmRfc2FhNzEzNF9jYXJkc1tpZHhdKTsKKwkJaWYgKHNuZF9zYWE3MTM0X2Nh cmRzW2lkeF0pCisJCQlzbmRfY2FyZF9mcmVlKHNuZF9zYWE3MTM0X2NhcmRzW2lkeF0pOwogCX0K IAogCXNhYTcxMzRfZG1hc291bmRfaW5pdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCAxNjVlZTE0ODI1Yjgu LmNlZmI0NzMzNGFjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYworKysgYi9k cml2ZXJzL25ldC9wcHAvcHB0cC5jCkBAIC0xMzEsMjQgKzEzMSwyNyBAQCBzdGF0aWMgaW50IGxv b2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcikKIAlyZXR1cm4gaSA8IE1B WF9DQUxMSUQ7CiB9CiAKLXN0YXRpYyBpbnQgYWRkX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNv Y2spCitzdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLAorCQkgICAg c3RydWN0IHBwdHBfYWRkciAqc2EpCiB7CiAJc3RhdGljIGludCBjYWxsX2lkOwogCiAJc3Bpbl9s b2NrKCZjaGFuX2xvY2spOwotCWlmICghc29jay0+cHJvdG8ucHB0cC5zcmNfYWRkci5jYWxsX2lk KQl7CisJaWYgKCFzYS0+Y2FsbF9pZCkJewogCQljYWxsX2lkID0gZmluZF9uZXh0X3plcm9fYml0 KGNhbGxpZF9iaXRtYXAsIE1BWF9DQUxMSUQsIGNhbGxfaWQgKyAxKTsKIAkJaWYgKGNhbGxfaWQg PT0gTUFYX0NBTExJRCkgewogCQkJY2FsbF9pZCA9IGZpbmRfbmV4dF96ZXJvX2JpdChjYWxsaWRf Yml0bWFwLCBNQVhfQ0FMTElELCAxKTsKIAkJCWlmIChjYWxsX2lkID09IE1BWF9DQUxMSUQpCiAJ CQkJZ290byBvdXRfZXJyOwogCQl9Ci0JCXNvY2stPnByb3RvLnBwdHAuc3JjX2FkZHIuY2FsbF9p ZCA9IGNhbGxfaWQ7Ci0JfSBlbHNlIGlmICh0ZXN0X2JpdChzb2NrLT5wcm90by5wcHRwLnNyY19h ZGRyLmNhbGxfaWQsIGNhbGxpZF9iaXRtYXApKQorCQlzYS0+Y2FsbF9pZCA9IGNhbGxfaWQ7CisJ fSBlbHNlIGlmICh0ZXN0X2JpdChzYS0+Y2FsbF9pZCwgY2FsbGlkX2JpdG1hcCkpIHsKIAkJZ290 byBvdXRfZXJyOworCX0KIAotCXNldF9iaXQoc29jay0+cHJvdG8ucHB0cC5zcmNfYWRkci5jYWxs X2lkLCBjYWxsaWRfYml0bWFwKTsKLQlyY3VfYXNzaWduX3BvaW50ZXIoY2FsbGlkX3NvY2tbc29j ay0+cHJvdG8ucHB0cC5zcmNfYWRkci5jYWxsX2lkXSwgc29jayk7CisJc29jay0+cHJvdG8ucHB0 cC5zcmNfYWRkciA9ICpzYTsKKwlzZXRfYml0KHNhLT5jYWxsX2lkLCBjYWxsaWRfYml0bWFwKTsK KwlyY3VfYXNzaWduX3BvaW50ZXIoY2FsbGlkX3NvY2tbc2EtPmNhbGxfaWRdLCBzb2NrKTsKIAlz cGluX3VubG9jaygmY2hhbl9sb2NrKTsKIAogCXJldHVybiAwOwpAQCAtNDE3LDcgKzQyMCw2IEBA IHN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRk ciAqdXNlcnZhZGRyLAogCXN0cnVjdCBzb2NrICpzayA9IHNvY2stPnNrOwogCXN0cnVjdCBzb2Nr YWRkcl9wcHBveCAqc3AgPSAoc3RydWN0IHNvY2thZGRyX3BwcG94ICopIHVzZXJ2YWRkcjsKIAlz dHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7Ci0Jc3RydWN0IHBwdHBfb3B0ICpv cHQgPSAmcG8tPnByb3RvLnBwdHA7CiAJaW50IGVycm9yID0gMDsKIAogCWlmIChzb2NrYWRkcl9s ZW4gPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX3BwcG94KSkKQEAgLTQyNSwxMCArNDI3LDIyIEBA IHN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRk ciAqdXNlcnZhZGRyLAogCiAJbG9ja19zb2NrKHNrKTsKIAotCW9wdC0+c3JjX2FkZHIgPSBzcC0+ c2FfYWRkci5wcHRwOwotCWlmIChhZGRfY2hhbihwbykpCisJaWYgKHNrLT5za19zdGF0ZSAmIFBQ UE9YX0RFQUQpIHsKKwkJZXJyb3IgPSAtRUFMUkVBRFk7CisJCWdvdG8gb3V0OworCX0KKworCWlm IChzay0+c2tfc3RhdGUgJiBQUFBPWF9CT1VORCkgewogCQllcnJvciA9IC1FQlVTWTsKKwkJZ290 byBvdXQ7CisJfQorCisJaWYgKGFkZF9jaGFuKHBvLCAmc3AtPnNhX2FkZHIucHB0cCkpCisJCWVy cm9yID0gLUVCVVNZOworCWVsc2UKKwkJc2stPnNrX3N0YXRlIHw9IFBQUE9YX0JPVU5EOwogCitv dXQ6CiAJcmVsZWFzZV9zb2NrKHNrKTsKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC00OTksNyArNTEz LDcgQEAgc3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0 IHNvY2thZGRyICp1c2VydmFkZHIsCiAJfQogCiAJb3B0LT5kc3RfYWRkciA9IHNwLT5zYV9hZGRy LnBwdHA7Ci0Jc2stPnNrX3N0YXRlID0gUFBQT1hfQ09OTkVDVEVEOworCXNrLT5za19zdGF0ZSB8 PSBQUFBPWF9DT05ORUNURUQ7CiAKICBlbmQ6CiAJcmVsZWFzZV9zb2NrKHNrKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL3BjaWUvYWVyL2FlcmRydi5jIGIvZHJpdmVycy9wY2kvcGNpZS9hZXIv YWVyZHJ2LmMKaW5kZXggNThhZDc5MTc1NTNjLi44Y2M1NGYyNGQwYWEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvcGNpL3BjaWUvYWVyL2FlcmRydi5jCisrKyBiL2RyaXZlcnMvcGNpL3BjaWUvYWVyL2Fl cmRydi5jCkBAIC0yNjMsNyArMjYzLDYgQEAgc3RhdGljIHN0cnVjdCBhZXJfcnBjICphZXJfYWxs b2NfcnBjKHN0cnVjdCBwY2llX2RldmljZSAqZGV2KQogCXJwYy0+cnBkID0gZGV2OwogCUlOSVRf V09SSygmcnBjLT5kcGNfaGFuZGxlciwgYWVyX2lzcik7CiAJbXV0ZXhfaW5pdCgmcnBjLT5ycGNf bXV0ZXgpOwotCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnJwYy0+d2FpdF9yZWxlYXNlKTsKIAogCS8q IFVzZSBQQ0llIGJ1cyBmdW5jdGlvbiB0byBzdG9yZSBycGMgaW50byBQQ0llIGRldmljZSAqLwog CXNldF9zZXJ2aWNlX2RhdGEoZGV2LCBycGMpOwpAQCAtMjg2LDggKzI4NSw3IEBAIHN0YXRpYyB2 b2lkIGFlcl9yZW1vdmUoc3RydWN0IHBjaWVfZGV2aWNlICpkZXYpCiAJCWlmIChycGMtPmlzcikK IAkJCWZyZWVfaXJxKGRldi0+aXJxLCBkZXYpOwogCi0JCXdhaXRfZXZlbnQocnBjLT53YWl0X3Jl bGVhc2UsIHJwYy0+cHJvZF9pZHggPT0gcnBjLT5jb25zX2lkeCk7Ci0KKwkJZmx1c2hfd29yaygm cnBjLT5kcGNfaGFuZGxlcik7CiAJCWFlcl9kaXNhYmxlX3Jvb3Rwb3J0KHJwYyk7CiAJCWtmcmVl KHJwYyk7CiAJCXNldF9zZXJ2aWNlX2RhdGEoZGV2LCBOVUxMKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGNpL3BjaWUvYWVyL2FlcmRydi5oIGIvZHJpdmVycy9wY2kvcGNpZS9hZXIvYWVyZHJ2LmgK aW5kZXggOTRhNzU5OGViMjYyLi45YzYxMWYxYmM1NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNp L3BjaWUvYWVyL2FlcmRydi5oCisrKyBiL2RyaXZlcnMvcGNpL3BjaWUvYWVyL2FlcmRydi5oCkBA IC03Niw3ICs3Niw2IEBAIHN0cnVjdCBhZXJfcnBjIHsKIAkJCQkJICogcmVjb3Zlcnkgb24gdGhl IHNhbWUKIAkJCQkJICogcm9vdCBwb3J0IGhpZXJhcmNoeQogCQkJCQkgKi8KLQl3YWl0X3F1ZXVl X2hlYWRfdCB3YWl0X3JlbGVhc2U7CiB9OwogCiBzdHJ1Y3QgYWVyX2Jyb2FkY2FzdF9kYXRhIHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3BjaWUvYWVyL2FlcmRydl9jb3JlLmMgYi9kcml2ZXJz L3BjaS9wY2llL2Flci9hZXJkcnZfY29yZS5jCmluZGV4IGVlODJjNTU5MDkyYS4uMjFhZGRmYTJm ODllIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2llL2Flci9hZXJkcnZfY29yZS5jCisrKyBi L2RyaXZlcnMvcGNpL3BjaWUvYWVyL2FlcmRydl9jb3JlLmMKQEAgLTgyMyw4ICs4MjMsNiBAQCB2 b2lkIGFlcl9pc3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXdoaWxlIChnZXRfZV9zb3Vy Y2UocnBjLCAmZV9zcmMpKQogCQlhZXJfaXNyX29uZV9lcnJvcihwX2RldmljZSwgJmVfc3JjKTsK IAltdXRleF91bmxvY2soJnJwYy0+cnBjX211dGV4KTsKLQotCXdha2VfdXAoJnJwYy0+d2FpdF9y ZWxlYXNlKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRl bF9zY3VfaXBjdXRpbC5jIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfc2N1X2lwY3V0aWwu YwppbmRleCAyZDBmOTEzNmVhOWEuLjZiZmM0MzI3ZWVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9w bGF0Zm9ybS94ODYvaW50ZWxfc2N1X2lwY3V0aWwuYworKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4 Ni9pbnRlbF9zY3VfaXBjdXRpbC5jCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBzY3VfaXBjX2Rh dGEgewogCiBzdGF0aWMgaW50IHNjdV9yZWdfYWNjZXNzKHUzMiBjbWQsIHN0cnVjdCBzY3VfaXBj X2RhdGEgICpkYXRhKQogewotCWludCBjb3VudCA9IGRhdGEtPmNvdW50OworCXVuc2lnbmVkIGlu dCBjb3VudCA9IGRhdGEtPmNvdW50OwogCiAJaWYgKGNvdW50ID09IDAgfHwgY291bnQgPT0gMyB8 fCBjb3VudCA+IDQpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3Np L2RldmljZV9oYW5kbGVyL3Njc2lfZGhfcmRhYy5jIGIvZHJpdmVycy9zY3NpL2RldmljZV9oYW5k bGVyL3Njc2lfZGhfcmRhYy5jCmluZGV4IDFkMzEyNzkyMDA2My4uMGQyODkwMDlmZTNiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9yZGFjLmMKKysrIGIv ZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfcmRhYy5jCkBAIC01NzMsNyArNTcz LDcgQEAgc3RhdGljIGludCBtb2RlX3NlbGVjdF9oYW5kbGVfc2Vuc2Uoc3RydWN0IHNjc2lfZGV2 aWNlICpzZGV2LAogCQkJLyoKIAkJCSAqIENvbW1hbmQgTG9jayBjb250ZW50aW9uCiAJCQkgKi8K LQkJCWVyciA9IFNDU0lfREhfUkVUUlk7CisJCQllcnIgPSBTQ1NJX0RIX0lNTV9SRVRSWTsKIAkJ YnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CkBAIC02MjMsNiArNjIzLDggQEAgcmV0cnk6CiAJ CWVyciA9IG1vZGVfc2VsZWN0X2hhbmRsZV9zZW5zZShzZGV2LCBoLT5zZW5zZSk7CiAJCWlmIChl cnIgPT0gU0NTSV9ESF9SRVRSWSAmJiByZXRyeV9jbnQtLSkKIAkJCWdvdG8gcmV0cnk7CisJCWlm IChlcnIgPT0gU0NTSV9ESF9JTU1fUkVUUlkpCisJCQlnb3RvIHJldHJ5OwogCX0KIAlpZiAoZXJy ID09IFNDU0lfREhfT0spIHsKIAkJaC0+c3RhdGUgPSBSREFDX1NUQVRFX0FDVElWRTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggYTUwODI1 YmE0OTA5Li45YTRmNTJkOGUxZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZC5jCisrKyBi L2RyaXZlcnMvc2NzaS9zZC5jCkBAIC0yNzY3LDggKzI3NjcsOCBAQCBzdGF0aWMgaW50IHNkX3N1 c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3QgbWVzZykKIAlzdHJ1Y3Qgc2Nz aV9kaXNrICpzZGtwID0gc2NzaV9kaXNrX2dldF9mcm9tX2RldihkZXYpOwogCWludCByZXQgPSAw OwogCi0JaWYgKCFzZGtwKQotCQlyZXR1cm4gMDsJLyogdGhpcyBjYW4gaGFwcGVuICovCisJaWYg KCFzZGtwKQkvKiBFLmcuOiBydW50aW1lIHN1c3BlbmQgZm9sbG93aW5nIHNkX3JlbW92ZSgpICov CisJCXJldHVybiAwOwogCiAJaWYgKHNka3AtPldDRSkgewogCQlzZF9wcmludGsoS0VSTl9OT1RJ Q0UsIHNka3AsICJTeW5jaHJvbml6aW5nIFNDU0kgY2FjaGVcbiIpOwpAQCAtMjc5Miw2ICsyNzky LDkgQEAgc3RhdGljIGludCBzZF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXN0cnVjdCBz Y3NpX2Rpc2sgKnNka3AgPSBzY3NpX2Rpc2tfZ2V0X2Zyb21fZGV2KGRldik7CiAJaW50IHJldCA9 IDA7CiAKKwlpZiAoIXNka3ApCS8qIEUuZy46IHJ1bnRpbWUgcmVzdW1lIGF0IHRoZSBzdGFydCBv ZiBzZF9wcm9iZSgpICovCisJCXJldHVybiAwOworCiAJaWYgKCFzZGtwLT5kZXZpY2UtPm1hbmFn ZV9zdGFydF9zdG9wKQogCQlnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0 eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmMKaW5kZXggNmFiMDMyMjljODM3Li4xZjllZTI1 YjYzNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jCisrKyBiL2RyaXZlcnMvdHR5 L3R0eV9pby5jCkBAIC0yNDc1LDYgKzI0NzUsMjggQEAgc3RhdGljIGludCB0aW9jc2V0ZChzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgX191c2VyICpwKQogfQogCiAvKioKKyAqCXRpb2NnZXRk CS0JZ2V0IGxpbmUgZGlzY2lwbGluZQorICoJQHR0eTogdHR5IGRldmljZQorICoJQHA6IHBvaW50 ZXIgdG8gdXNlciBkYXRhCisgKgorICoJUmV0cmlldmVzIHRoZSBsaW5lIGRpc2NpcGxpbmUgaWQg ZGlyZWN0bHkgZnJvbSB0aGUgbGRpc2MuCisgKgorICoJTG9ja2luZzogd2FpdHMgZm9yIGxkaXNj IHJlZmVyZW5jZSAoaW4gY2FzZSB0aGUgbGluZSBkaXNjaXBsaW5lCisgKgkJaXMgY2hhbmdpbmcg b3IgdGhlIHR0eSBpcyBiZWluZyBodW5ndXApCisgKi8KKworc3RhdGljIGludCB0aW9jZ2V0ZChz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgX191c2VyICpwKQoreworCXN0cnVjdCB0dHlfbGRp c2MgKmxkOworCWludCByZXQ7CisKKwlsZCA9IHR0eV9sZGlzY19yZWZfd2FpdCh0dHkpOworCXJl dCA9IHB1dF91c2VyKGxkLT5vcHMtPm51bSwgcCk7CisJdHR5X2xkaXNjX2RlcmVmKGxkKTsKKwly ZXR1cm4gcmV0OworfQorCisvKioKICAqCXNlbmRfYnJlYWsJLQlwZXJmb3JtZWQgdGltZSBicmVh awogICoJQHR0eTogZGV2aWNlIHRvIGJyZWFrIG9uCiAgKglAZHVyYXRpb246IHRpbWVvdXQgaW4g bVMKQEAgLTI2ODQsNyArMjcwNiw3IEBAIGxvbmcgdHR5X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxl LCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIFRJT0NHU0lEOgog CQlyZXR1cm4gdGlvY2dzaWQodHR5LCByZWFsX3R0eSwgcCk7CiAJY2FzZSBUSU9DR0VURDoKLQkJ cmV0dXJuIHB1dF91c2VyKHR0eS0+bGRpc2MtPm9wcy0+bnVtLCAoaW50IF9fdXNlciAqKXApOwor CQlyZXR1cm4gdGlvY2dldGQodHR5LCBwKTsKIAljYXNlIFRJT0NTRVREOgogCQlyZXR1cm4gdGlv Y3NldGQodHR5LCBwKTsKIAljYXNlIFRJT0NWSEFOR1VQOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2IvY2xhc3MvY2RjLWFjbS5jIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCmluZGV4IDY2 MGMzMzQ5ZWE3My4uYmJiMjE3NDk1OTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy9j ZGMtYWNtLmMKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCkBAIC0xMjM3LDYgKzEy MzcsOCBAQCBtYWRlX2NvbXByZXNzZWRfcHJvYmU6CiAJCQkJdXNiX3NuZGJ1bGtwaXBlKHVzYl9k ZXYsIGVwd3JpdGUtPmJFbmRwb2ludEFkZHJlc3MpLAogCQkJCU5VTEwsIGFjbS0+d3JpdGVzaXpl LCBhY21fd3JpdGVfYnVsaywgc25kKTsKIAkJc25kLT51cmItPnRyYW5zZmVyX2ZsYWdzIHw9IFVS Ql9OT19UUkFOU0ZFUl9ETUFfTUFQOworCQlpZiAocXVpcmtzICYgU0VORF9aRVJPX1BBQ0tFVCkK KwkJCXNuZC0+dXJiLT50cmFuc2Zlcl9mbGFncyB8PSBVUkJfWkVST19QQUNLRVQ7CiAJCXNuZC0+ aW5zdGFuY2UgPSBhY207CiAJfQogCkBAIC0xNjY2LDYgKzE2NjgsMTEgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGFjbV9pZHNbXSA9IHsKIAkuZHJpdmVyX2luZm8gPSBOT19E QVRBX0lOVEVSRkFDRSwKIAl9LAogCisJLypTYW1zdW5nIHBob25lIGluIGZpcm13YXJlIHVwZGF0 ZSBtb2RlICovCisJeyBVU0JfREVWSUNFKDB4MDRlOCwgMHg2ODVkKSwKKwkuZHJpdmVyX2luZm8g PSBJR05PUkVfREVWSUNFLAorCX0sCisKIAkvKiBFeGNsdWRlIEluZmluZW9uIEZsYXNoIExvYWRl ciB1dGlsaXR5ICovCiAJeyBVU0JfREVWSUNFKDB4MDU4YiwgMHgwMDQxKSwKIAkuZHJpdmVyX2lu Zm8gPSBJR05PUkVfREVWSUNFLApAQCAtMTY4OSw2ICsxNjk2LDEwIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgdXNiX2RldmljZV9pZCBhY21faWRzW10gPSB7CiAJeyBVU0JfSU5URVJGQUNFX0lORk8o VVNCX0NMQVNTX0NPTU0sIFVTQl9DRENfU1VCQ0xBU1NfQUNNLAogCQlVU0JfQ0RDX0FDTV9QUk9U T19BVF9DRE1BKSB9LAogCisJeyBVU0JfREVWSUNFKDB4MTUxOSwgMHgwNDUyKSwgLyogSW50ZWwg NzI2MCBtb2RlbSAqLworCS5kcml2ZXJfaW5mbyA9IFNFTkRfWkVST19QQUNLRVQsCisJfSwKKwog CXsgfQogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5oIGIvZHJp dmVycy91c2IvY2xhc3MvY2RjLWFjbS5oCmluZGV4IDlhZjVhZDI0YzdiOS4uZGZkNjZiYjU5Nzdh IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmgKKysrIGIvZHJpdmVycy91 c2IvY2xhc3MvY2RjLWFjbS5oCkBAIC0xMjksMyArMTI5LDQgQEAgc3RydWN0IGFjbSB7CiAjZGVm aW5lIE5PX0RBVEFfSU5URVJGQUNFCQkxNgogI2RlZmluZSBJR05PUkVfREVWSUNFCQkJMzIKICNk ZWZpbmUgQ0xFQVJfSEFMVF9DT05ESVRJT05TCQlCSVQoNykKKyNkZWZpbmUgU0VORF9aRVJPX1BB Q0tFVAkJQklUKDgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcGNpLmMgYi9k cml2ZXJzL3VzYi9ob3N0L3hoY2ktcGNpLmMKaW5kZXggNTIyMzg4NGU5ZTkyLi4yNDRlMWIxMjI1 OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYworKysgYi9kcml2ZXJz L3VzYi9ob3N0L3hoY2ktcGNpLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNkZWZpbmUgUENJX0RFVklD RV9JRF9JTlRFTF9DSEVSUllWSUVXX1hIQ0kJCTB4MjJiNQogI2RlZmluZSBQQ0lfREVWSUNFX0lE X0lOVEVMX1NVTlJJU0VQT0lOVF9IX1hIQ0kJCTB4YTEyZgogI2RlZmluZSBQQ0lfREVWSUNFX0lE X0lOVEVMX1NVTlJJU0VQT0lOVF9MUF9YSENJCTB4OWQyZgorI2RlZmluZSBQQ0lfREVWSUNFX0lE X0lOVEVMX0JST1hUT05fTV9YSENJCQkweDBhYTgKIAogc3RhdGljIGNvbnN0IGNoYXIgaGNkX25h bWVbXSA9ICJ4aGNpX2hjZCI7CiAKQEAgLTEzMiw3ICsxMzMsOCBAQCBzdGF0aWMgdm9pZCB4aGNp X3BjaV9xdWlya3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgeGhjaV9oY2QgKnhoY2kpCiAJ aWYgKHBkZXYtPnZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0lOVEVMICYmCiAJCShwZGV2LT5kZXZp Y2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF9TVU5SSVNFUE9JTlRfTFBfWEhDSSB8fAogCQkgcGRl di0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfU1VOUklTRVBPSU5UX0hfWEhDSSB8fAot CQkgcGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQ0hFUlJZVklFV19YSENJKSkg eworCQkgcGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQ0hFUlJZVklFV19YSENJ IHx8CisJCSBwZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF9CUk9YVE9OX01fWEhD SSkpIHsKIAkJeGhjaS0+cXVpcmtzIHw9IFhIQ0lfUE1FX1NUVUNLX1FVSVJLOwogCX0KIAlpZiAo cGRldi0+dmVuZG9yID09IFBDSV9WRU5ET1JfSURfRVRST04gJiYKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2hvc3QveGhjaS1yaW5nLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jCmlu ZGV4IDlmNTcxMTFhM2U0My4uNWZkYjg1ZmJhNDQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9o b3N0L3hoY2ktcmluZy5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMKQEAgLTIx ODcsMTAgKzIxODcsNiBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYnVsa19pbnRyX3RkKHN0cnVjdCB4 aGNpX2hjZCAqeGhjaSwgc3RydWN0IHhoY2lfdGQgKnRkLAogCQkJCUVWRU5UX1RSQl9MRU4obGUz Ml90b19jcHUoZXZlbnQtPnRyYW5zZmVyX2xlbikpKTsKIAkvKiBGYXN0IHBhdGggLSB3YXMgdGhp cyB0aGUgbGFzdCBUUkIgaW4gdGhlIFREIGZvciB0aGlzIFVSQj8gKi8KIAlpZiAoZXZlbnRfdHJi ID09IHRkLT5sYXN0X3RyYikgewotCQlpZiAodGQtPnVyYl9sZW5ndGhfc2V0ICYmIHRyYl9jb21w X2NvZGUgPT0gQ09NUF9TSE9SVF9UWCkKLQkJCXJldHVybiBmaW5pc2hfdGQoeGhjaSwgdGQsIGV2 ZW50X3RyYiwgZXZlbnQsIGVwLAotCQkJCQkgc3RhdHVzLCBmYWxzZSk7Ci0KIAkJaWYgKEVWRU5U X1RSQl9MRU4obGUzMl90b19jcHUoZXZlbnQtPnRyYW5zZmVyX2xlbikpICE9IDApIHsKIAkJCXRk LT51cmItPmFjdHVhbF9sZW5ndGggPQogCQkJCXRkLT51cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5n dGggLQpAQCAtMjI0MiwxMiArMjIzOCw2IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19idWxrX2ludHJf dGQoc3RydWN0IHhoY2lfaGNkICp4aGNpLCBzdHJ1Y3QgeGhjaV90ZCAqdGQsCiAJCQl0ZC0+dXJi LT5hY3R1YWxfbGVuZ3RoICs9CiAJCQkJVFJCX0xFTihsZTMyX3RvX2NwdShjdXJfdHJiLT5nZW5l cmljLmZpZWxkWzJdKSkgLQogCQkJCUVWRU5UX1RSQl9MRU4obGUzMl90b19jcHUoZXZlbnQtPnRy YW5zZmVyX2xlbikpOwotCi0JCWlmICh0cmJfY29tcF9jb2RlID09IENPTVBfU0hPUlRfVFgpIHsK LQkJCXhoY2lfZGJnKHhoY2ksICJtaWQgYnVsay9pbnRyIFNQLCB3YWl0IGZvciBsYXN0IFRSQiBl dmVudFxuIik7Ci0JCQl0ZC0+dXJiX2xlbmd0aF9zZXQgPSB0cnVlOwotCQkJcmV0dXJuIDA7Ci0J CX0KIAl9CiAKIAlyZXR1cm4gZmluaXNoX3RkKHhoY2ksIHRkLCBldmVudF90cmIsIGV2ZW50LCBl cCwgc3RhdHVzLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYyBi L2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCmluZGV4IGExZjkwYzdmYjU2NC4uY2ZkNWQzYTZkMzRk IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYworKysgYi9kcml2ZXJzL3VzYi9o b3N0L3hoY2kuYwpAQCAtMTUzMyw3ICsxNTMzLDkgQEAgaW50IHhoY2lfdXJiX2RlcXVldWUoc3Ry dWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQogCWlmICh0ZW1w ID09IDB4ZmZmZmZmZmYgfHwgKHhoY2ktPnhoY19zdGF0ZSAmIFhIQ0lfU1RBVEVfSEFMVEVEKSkg ewogCQl4aGNpX2RiZyh4aGNpLCAiSFcgZGllZCwgZnJlZWluZyBURC5cbiIpOwogCQl1cmJfcHJp diA9IHVyYi0+aGNwcml2OwotCQlmb3IgKGkgPSB1cmJfcHJpdi0+dGRfY250OyBpIDwgdXJiX3By aXYtPmxlbmd0aDsgaSsrKSB7CisJCWZvciAoaSA9IHVyYl9wcml2LT50ZF9jbnQ7CisJCSAgICAg aSA8IHVyYl9wcml2LT5sZW5ndGggJiYgeGhjaS0+ZGV2c1t1cmItPmRldi0+c2xvdF9pZF07CisJ CSAgICAgaSsrKSB7CiAJCQl0ZCA9IHVyYl9wcml2LT50ZFtpXTsKIAkJCWlmICghbGlzdF9lbXB0 eSgmdGQtPnRkX2xpc3QpKQogCQkJCWxpc3RfZGVsX2luaXQoJnRkLT50ZF9saXN0KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9j cDIxMHguYwppbmRleCAyZDYyMmQ3YmE1MzQuLmEzMGIxODhmOTE0YSAxMDA2NDQKLS0tIGEvZHJp dmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHgu YwpAQCAtMTA0LDYgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBp ZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODFBQykgfSwgLyogTVNEIERh c2ggSGF3ayAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODFBRCkgfSwgLyogSU5TWVMgVVNC IE1vZGVtICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MUM4KSB9LCAvKiBMaXBvd3NreSBJ bmR1c3RyaWUgRWxla3Ryb25payBHbWJILCBCYWJ5LUpUQUcgKi8KKwl7IFVTQl9ERVZJQ0UoMHgx MEM0LCAweDgxRDcpIH0sIC8qIElBSSBDb3JwLiBSQ0ItQ1YtVVNCIFVTQiB0byBSUzQ4NSBBZGFw dG9yICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MUUyKSB9LCAvKiBMaXBvd3NreSBJbmR1 c3RyaWUgRWxla3Ryb25payBHbWJILCBCYWJ5LUxJTiAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQs IDB4ODFFNykgfSwgLyogQWVyb2NvbW0gUmFkaW8gKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAw eDgxRTgpIH0sIC8qIFplcGh5ciBCaW9oYXJuZXNzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCmluZGV4 IDRmZmFhOWQxMDg3ZS4uNTA5Mjc1NzY2ZjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJp YWwvZnRkaV9zaW8uYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwpAQCAtODQ4 LDYgKzg0OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZV9jb21iaW5l ZCBbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIEZURElfVFVSVEVMSVpFUl9QSUQpLAog CQkuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJmZ0ZGlfanRhZ19xdWlyayB9LAogCXsg VVNCX0RFVklDRShSQVRPQ19WRU5ET1JfSUQsIFJBVE9DX1BST0RVQ1RfSURfVVNCNjBGKSB9LAor CXsgVVNCX0RFVklDRShSQVRPQ19WRU5ET1JfSUQsIFJBVE9DX1BST0RVQ1RfSURfU0NVMTgpIH0s CiAJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX1JFVV9USU5ZX1BJRCkgfSwKIAogCS8qIFBh cG91Y2ggZGV2aWNlcyBiYXNlZCBvbiBGVERJIGNoaXAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL3NlcmlhbC9mdGRpX3Npb19pZHMuaCBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npb19p ZHMuaAppbmRleCA3ZDExNjQyNDMwYzYuLmY5ZDU1YzRmNTA5MSAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2Ivc2VyaWFsL2Z0ZGlfc2lvX2lkcy5oCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRp X3Npb19pZHMuaApAQCAtNjE1LDYgKzYxNSw3IEBACiAgKi8KICNkZWZpbmUgUkFUT0NfVkVORE9S X0lECQkweDA1ODQKICNkZWZpbmUgUkFUT0NfUFJPRFVDVF9JRF9VU0I2MEYJMHhiMDIwCisjZGVm aW5lIFJBVE9DX1BST0RVQ1RfSURfU0NVMTgJMHhiMDNhCiAKIC8qCiAgKiBBY3RvbiBSZXNlYXJj aCBDb3JwLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jIGIvZHJpdmVy cy91c2Ivc2VyaWFsL29wdGlvbi5jCmluZGV4IDVhMzExNjkyZjk4My4uMGFhMDI1ZjFkNWZkIDEw MDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKKysrIGIvZHJpdmVycy91c2Iv c2VyaWFsL29wdGlvbi5jCkBAIC0yNjksNiArMjY5LDggQEAgc3RhdGljIHZvaWQgb3B0aW9uX2lu c3RhdF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpOwogI2RlZmluZSBURUxJVF9QUk9EVUNUX0ND ODY0X1NJTkdMRQkJMHgxMDA2CiAjZGVmaW5lIFRFTElUX1BST0RVQ1RfREU5MTBfRFVBTAkJMHgx MDEwCiAjZGVmaW5lIFRFTElUX1BST0RVQ1RfVUU5MTBfVjIJCQkweDEwMTIKKyNkZWZpbmUgVEVM SVRfUFJPRFVDVF9MRTkyMl9VU0JDRkcwCQkweDEwNDIKKyNkZWZpbmUgVEVMSVRfUFJPRFVDVF9M RTkyMl9VU0JDRkczCQkweDEwNDMKICNkZWZpbmUgVEVMSVRfUFJPRFVDVF9MRTkyMAkJCTB4MTIw MAogI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTEwCQkJMHgxMjAxCiAKQEAgLTYyMSw2ICs2MjMs MTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb25fYmxhY2tsaXN0X2luZm8gdGVsaXRfbGU5 MjBfYmxhY2tsaXN0ID0gewogCS5yZXNlcnZlZCA9IEJJVCgxKSB8IEJJVCg1KSwKIH07CiAKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uX2JsYWNrbGlzdF9pbmZvIHRlbGl0X2xlOTIyX2JsYWNr bGlzdF91c2JjZmcwID0geworCS5zZW5kc2V0dXAgPSBCSVQoMiksCisJLnJlc2VydmVkID0gQklU KDApIHwgQklUKDEpIHwgQklUKDMpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb25f YmxhY2tsaXN0X2luZm8gdGVsaXRfbGU5MjJfYmxhY2tsaXN0X3VzYmNmZzMgPSB7CisJLnNlbmRz ZXR1cCA9IEJJVCgwKSwKKwkucmVzZXJ2ZWQgPSBCSVQoMSkgfCBCSVQoMikgfCBCSVQoMyksCit9 OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgb3B0aW9uX2lkc1tdID0gewog CXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9DT0xUKSB9LAog CXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9SSUNPTEEpIH0s CkBAIC0xMTY2LDYgKzExNzgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lk IG9wdGlvbl9pZHNbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoVEVMSVRfVkVORE9SX0lELCBURUxJVF9Q Uk9EVUNUX0NDODY0X1NJTkdMRSkgfSwKIAl7IFVTQl9ERVZJQ0UoVEVMSVRfVkVORE9SX0lELCBU RUxJVF9QUk9EVUNUX0RFOTEwX0RVQUwpIH0sCiAJeyBVU0JfREVWSUNFKFRFTElUX1ZFTkRPUl9J RCwgVEVMSVRfUFJPRFVDVF9VRTkxMF9WMikgfSwKKwl7IFVTQl9ERVZJQ0UoVEVMSVRfVkVORE9S X0lELCBURUxJVF9QUk9EVUNUX0xFOTIyX1VTQkNGRzApLAorCQkuZHJpdmVyX2luZm8gPSAoa2Vy bmVsX3Vsb25nX3QpJnRlbGl0X2xlOTIyX2JsYWNrbGlzdF91c2JjZmcwIH0sCisJeyBVU0JfREVW SUNFKFRFTElUX1ZFTkRPUl9JRCwgVEVMSVRfUFJPRFVDVF9MRTkyMl9VU0JDRkczKSwKKwkJLmRy aXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkyMl9ibGFja2xpc3RfdXNiY2Zn MyB9LAogCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfTEU5MTAp LAogCQkuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJnRlbGl0X2xlOTEwX2JsYWNrbGlz dCB9LAogCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfTEU5MjAp LApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3Zpc29yLmMgYi9kcml2ZXJzL3VzYi9z ZXJpYWwvdmlzb3IuYwppbmRleCA4MGE2ZmY2OWViODMuLmVhNzQ3ODhjNmZkNiAxMDA2NDQKLS0t IGEvZHJpdmVycy91c2Ivc2VyaWFsL3Zpc29yLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3Zp c29yLmMKQEAgLTU4Nyw2ICs1ODcsMTEgQEAgc3RhdGljIGludCB0cmVvX2F0dGFjaChzdHJ1Y3Qg dXNiX3NlcmlhbCAqc2VyaWFsKQogCiAJZGJnKCIlcyIsIF9fZnVuY19fKTsKIAorCWlmIChzZXJp YWwtPm51bV9idWxrX2luIDwgMiB8fCBzZXJpYWwtPm51bV9pbnRlcnJ1cHRfaW4gPCAyKSB7CisJ CWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5nIGVuZHBvaW50c1xuIik7 CisJCXJldHVybiAtRU5PREVWOworCX0KKwogCS8qCiAJKiBJdCBhcHBlYXJzIHRoYXQgVHJlb3Mg YW5kIEt5b2NlcmFzIHdhbnQgdG8gdXNlIHRoZQogCSogMXN0IGJ1bGsgaW4gZW5kcG9pbnQgdG8g Y29tbXVuaWNhdGUgd2l0aCB0aGUgMm5kIGJ1bGsgb3V0IGVuZHBvaW50LApAQCAtNjM1LDggKzY0 MCwxMCBAQCBzdGF0aWMgaW50IGNsaWVfNV9hdHRhY2goc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlh bCkKIAkgKi8KIAogCS8qIHNvbWUgc2FuaXR5IGNoZWNrICovCi0JaWYgKHNlcmlhbC0+bnVtX3Bv cnRzIDwgMikKLQkJcmV0dXJuIC0xOworCWlmIChzZXJpYWwtPm51bV9idWxrX291dCA8IDIpIHsK KwkJZGV2X2Vycigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgIm1pc3NpbmcgYnVsayBvdXQgZW5k cG9pbnRzXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQogCiAJLyogcG9ydCAwIG5vdyB1c2Vz IHRoZSBtb2RpZmllZCBlbmRwb2ludCBBZGRyZXNzICovCiAJcG9ydCA9IHNlcmlhbC0+cG9ydFsw XTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2kuYyBiL2RyaXZlcnMvdmly dGlvL3ZpcnRpb19wY2kuYwppbmRleCAxM2Y2Y2Q4ZmZmZDIuLjQ5Y2M3YWRhNGZjNSAxMDA2NDQK LS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaS5jCisrKyBiL2RyaXZlcnMvdmlydGlvL3Zp cnRpb19wY2kuYwpAQCAtNjk4LDYgKzY5OCw3IEBAIG91dDoKIHN0YXRpYyB2b2lkIF9fZGV2ZXhp dCB2aXJ0aW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldikKIHsKIAlzdHJ1Y3Qg dmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZGV2KTsKKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSBnZXRfZGV2aWNlKCZ2cF9kZXYtPnZkZXYuZGV2KTsKIAogCXVu cmVnaXN0ZXJfdmlydGlvX2RldmljZSgmdnBfZGV2LT52ZGV2KTsKIApAQCAtNzA2LDYgKzcwNyw3 IEBAIHN0YXRpYyB2b2lkIF9fZGV2ZXhpdCB2aXJ0aW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2Rl diAqcGNpX2RldikKIAlwY2lfaW91bm1hcChwY2lfZGV2LCB2cF9kZXYtPmlvYWRkcik7CiAJcGNp X3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTsKIAlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7 CisJcHV0X2RldmljZShkZXYpOwogfQogCiAjaWZkZWYgQ09ORklHX1BNCmRpZmYgLS1naXQgYS9m cy9idHJmcy9kZWxheWVkLWlub2RlLmMgYi9mcy9idHJmcy9kZWxheWVkLWlub2RlLmMKaW5kZXgg OWMxZWNjYzJjNTAzLi5kZDliNTU3YWI2ZDUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2RlbGF5ZWQt aW5vZGUuYworKysgYi9mcy9idHJmcy9kZWxheWVkLWlub2RlLmMKQEAgLTE1OTMsNyArMTU5Myw3 IEBAIGludCBidHJmc19zaG91bGRfZGVsZXRlX2Rpcl9pbmRleChzdHJ1Y3QgbGlzdF9oZWFkICpk ZWxfbGlzdCwKICAqLwogaW50IGJ0cmZzX3JlYWRkaXJfZGVsYXllZF9kaXJfaW5kZXgoc3RydWN0 IGZpbGUgKmZpbHAsIHZvaWQgKmRpcmVudCwKIAkJCQkgICAgZmlsbGRpcl90IGZpbGxkaXIsCi0J CQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmluc19saXN0KQorCQkJCSAgICBzdHJ1Y3QgbGlzdF9o ZWFkICppbnNfbGlzdCwgYm9vbCAqZW1pdHRlZCkKIHsKIAlzdHJ1Y3QgYnRyZnNfZGlyX2l0ZW0g KmRpOwogCXN0cnVjdCBidHJmc19kZWxheWVkX2l0ZW0gKmN1cnIsICpuZXh0OwpAQCAtMTYzNyw2 ICsxNjM3LDcgQEAgaW50IGJ0cmZzX3JlYWRkaXJfZGVsYXllZF9kaXJfaW5kZXgoc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgKmRpcmVudCwKIAogCQlpZiAob3ZlcikKIAkJCXJldHVybiAxOworCQkq ZW1pdHRlZCA9IHRydWU7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMv ZGVsYXllZC1pbm9kZS5oIGIvZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oCmluZGV4IDcwODNkMDhi MmEyMS4uY2FjZGM1NjQ0ZWJmIDEwMDY0NAotLS0gYS9mcy9idHJmcy9kZWxheWVkLWlub2RlLmgK KysrIGIvZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgaW50IGJ0 cmZzX3Nob3VsZF9kZWxldGVfZGlyX2luZGV4KHN0cnVjdCBsaXN0X2hlYWQgKmRlbF9saXN0LAog CQkJCSAgdTY0IGluZGV4KTsKIGludCBidHJmc19yZWFkZGlyX2RlbGF5ZWRfZGlyX2luZGV4KHN0 cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkaXJlbnQsCiAJCQkJICAgIGZpbGxkaXJfdCBmaWxsZGly LAotCQkJCSAgICBzdHJ1Y3QgbGlzdF9oZWFkICppbnNfbGlzdCk7CisJCQkJICAgIHN0cnVjdCBs aXN0X2hlYWQgKmluc19saXN0LCBib29sICplbWl0dGVkKTsKIAogLyogZm9yIGluaXQgKi8KIGlu dCBfX2luaXQgYnRyZnNfZGVsYXllZF9pbm9kZV9pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvZnMv YnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggZTRjMzhkNDk0MDRjLi4wMDdk NDg3ZWViNmMgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lub2RlLmMKKysrIGIvZnMvYnRyZnMvaW5v ZGUuYwpAQCAtNDExMSw2ICs0MTExLDcgQEAgc3RhdGljIGludCBidHJmc19yZWFsX3JlYWRkaXIo c3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRpcmVudCwKIAljaGFyICpuYW1lX3B0cjsKIAlpbnQg bmFtZV9sZW47CiAJaW50IGlzX2N1cnIgPSAwOwkvKiBmaWxwLT5mX3BvcyBwb2ludHMgdG8gdGhl IGN1cnJlbnQgaW5kZXg/ICovCisJYm9vbCBlbWl0dGVkOwogCiAJLyogRklYTUUsIHVzZSBhIHJl YWwgZmxhZyBmb3IgZGVjaWRpbmcgYWJvdXQgdGhlIGtleSB0eXBlICovCiAJaWYgKHJvb3QtPmZz X2luZm8tPnRyZWVfcm9vdCA9PSByb290KQpAQCAtNDE1Myw2ICs0MTU0LDcgQEAgc3RhdGljIGlu dCBidHJmc19yZWFsX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRpcmVudCwKIAlp ZiAocmV0IDwgMCkKIAkJZ290byBlcnI7CiAKKwllbWl0dGVkID0gZmFsc2U7CiAJd2hpbGUgKDEp IHsKIAkJbGVhZiA9IHBhdGgtPm5vZGVzWzBdOwogCQlzbG90ID0gcGF0aC0+c2xvdHNbMF07CkBA IC00MjU0LDYgKzQyNTYsNyBAQCBza2lwOgogCiAJCQlpZiAob3ZlcikKIAkJCQlnb3RvIG5vcG9z OworCQkJZW1pdHRlZCA9IHRydWU7CiAJCQlkaV9sZW4gPSBidHJmc19kaXJfbmFtZV9sZW4obGVh ZiwgZGkpICsKIAkJCQkgYnRyZnNfZGlyX2RhdGFfbGVuKGxlYWYsIGRpKSArIHNpemVvZigqZGkp OwogCQkJZGlfY3VyICs9IGRpX2xlbjsKQEAgLTQyNjcsMTEgKzQyNzAsMjAgQEAgbmV4dDoKIAkJ aWYgKGlzX2N1cnIpCiAJCQlmaWxwLT5mX3BvcysrOwogCQlyZXQgPSBidHJmc19yZWFkZGlyX2Rl bGF5ZWRfZGlyX2luZGV4KGZpbHAsIGRpcmVudCwgZmlsbGRpciwKLQkJCQkJCSAgICAgICZpbnNf bGlzdCk7CisJCQkJCQkgICAgICAmaW5zX2xpc3QsICZlbWl0dGVkKTsKIAkJaWYgKHJldCkKIAkJ CWdvdG8gbm9wb3M7CiAJfQogCisJLyoKKwkgKiBJZiB3ZSBoYXZlbid0IGVtaXR0ZWQgYW55IGRp ciBlbnRyeSwgd2UgbXVzdCBub3QgdG91Y2ggZmlscC0+Zl9wb3MgYXMKKwkgKiBpdCB3YXMgd2Fz IHNldCB0byB0aGUgdGVybWluYXRpb24gdmFsdWUgaW4gcHJldmlvdXMgY2FsbC4gV2UgYXNzdW1l CisJICogdGhhdCAiLiIgYW5kICIuLiIgd2VyZSBlbWl0dGVkIGlmIHdlIHJlYWNoIHRoaXMgcG9p bnQgYW5kIHNldCB0aGUKKwkgKiB0ZXJtaW5hdGlvbiB2YWx1ZSBhcyB3ZWxsIGZvciBhbiBlbXB0 eSBkaXJlY3RvcnkuCisJICovCisJaWYgKGZpbHAtPmZfcG9zID4gMiAmJiAhZW1pdHRlZCkKKwkJ Z290byBub3BvczsKKwogCS8qIFJlYWNoZWQgZW5kIG9mIGRpcmVjdG9yeS9yb290LiBCdW1wIHBv cyBwYXN0IHRoZSBsYXN0IGl0ZW0uICovCiAJaWYgKGtleV90eXBlID09IEJUUkZTX0RJUl9JTkRF WF9LRVkpCiAJCS8qCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9kbG0vZGxtcmVjb3ZlcnkuYyBiL2Zz L29jZnMyL2RsbS9kbG1yZWNvdmVyeS5jCmluZGV4IDBlNTAxM2VkN2YxMy4uYmYzZjAwODA5YWMy IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9kbG0vZGxtcmVjb3ZlcnkuYworKysgYi9mcy9vY2ZzMi9k bG0vZGxtcmVjb3ZlcnkuYwpAQCAtMjMzMyw2ICsyMzMzLDggQEAgc3RhdGljIHZvaWQgZGxtX2Rv X2xvY2FsX3JlY292ZXJ5X2NsZWFudXAoc3RydWN0IGRsbV9jdHh0ICpkbG0sIHU4IGRlYWRfbm9k ZSkKIAkJCQkJCWJyZWFrOwogCQkJCQl9CiAJCQkJfQorCQkJCWRsbV9sb2NrcmVzX2NsZWFyX3Jl Zm1hcF9iaXQoZGxtLCByZXMsCisJCQkJCQlkZWFkX25vZGUpOwogCQkJCXNwaW5fdW5sb2NrKCZy ZXMtPnNwaW5sb2NrKTsKIAkJCQljb250aW51ZTsKIAkJCX0KZGlmZiAtLWdpdCBhL2ZzL3BpcGUu YyBiL2ZzL3BpcGUuYwppbmRleCBkMmNiZWZmNmNiMzIuLmJmM2E5OTMwMmQyYSAxMDA2NDQKLS0t IGEvZnMvcGlwZS5jCisrKyBiL2ZzL3BpcGUuYwpAQCAtMzUsNiArMzUsMTIgQEAgdW5zaWduZWQg aW50IHBpcGVfbWF4X3NpemUgPSAxMDQ4NTc2OwogICovCiB1bnNpZ25lZCBpbnQgcGlwZV9taW5f c2l6ZSA9IFBBR0VfU0laRTsKIAorLyogTWF4aW11bSBhbGxvY2F0YWJsZSBwYWdlcyBwZXIgdXNl ci4gSGFyZCBsaW1pdCBpcyB1bnNldCBieSBkZWZhdWx0LCBzb2Z0CisgKiBtYXRjaGVzIGRlZmF1 bHQgdmFsdWVzLgorICovCit1bnNpZ25lZCBsb25nIHBpcGVfdXNlcl9wYWdlc19oYXJkOwordW5z aWduZWQgbG9uZyBwaXBlX3VzZXJfcGFnZXNfc29mdCA9IFBJUEVfREVGX0JVRkZFUlMgKiBJTlJf T1BFTl9DVVI7CisKIC8qCiAgKiBXZSB1c2UgYSBzdGFydCtsZW4gY29uc3RydWN0aW9uLCB3aGlj aCBwcm92aWRlcyBmdWxsIHVzZSBvZiB0aGUgCiAgKiBhbGxvY2F0ZWQgbWVtb3J5LgpAQCAtMzg5 LDYgKzM5NSw3IEBAIHBpcGVfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIGNvbnN0IHN0cnVjdCBp b3ZlYyAqX2lvdiwKIAkJCXZvaWQgKmFkZHI7CiAJCQlzaXplX3QgY2hhcnMgPSBidWYtPmxlbiwg cmVtYWluaW5nOwogCQkJaW50IGVycm9yLCBhdG9taWM7CisJCQlpbnQgb2Zmc2V0OwogCiAJCQlp ZiAoY2hhcnMgPiB0b3RhbF9sZW4pCiAJCQkJY2hhcnMgPSB0b3RhbF9sZW47CkBAIC00MDIsOSAr NDA5LDEwIEBAIHBpcGVfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIGNvbnN0IHN0cnVjdCBpb3Zl YyAqX2lvdiwKIAogCQkJYXRvbWljID0gIWlvdl9mYXVsdF9pbl9wYWdlc193cml0ZShpb3YsIGNo YXJzKTsKIAkJCXJlbWFpbmluZyA9IGNoYXJzOworCQkJb2Zmc2V0ID0gYnVmLT5vZmZzZXQ7CiBy ZWRvOgogCQkJYWRkciA9IG9wcy0+bWFwKHBpcGUsIGJ1ZiwgYXRvbWljKTsKLQkJCWVycm9yID0g cGlwZV9pb3ZfY29weV90b191c2VyKGlvdiwgYWRkciwgJmJ1Zi0+b2Zmc2V0LAorCQkJZXJyb3Ig PSBwaXBlX2lvdl9jb3B5X3RvX3VzZXIoaW92LCBhZGRyLCAmb2Zmc2V0LAogCQkJCQkJICAgICAg JnJlbWFpbmluZywgYXRvbWljKTsKIAkJCW9wcy0+dW5tYXAocGlwZSwgYnVmLCBhZGRyKTsKIAkJ CWlmICh1bmxpa2VseShlcnJvcikpIHsKQEAgLTQyMCw2ICs0MjgsNyBAQCByZWRvOgogCQkJCWJy ZWFrOwogCQkJfQogCQkJcmV0ICs9IGNoYXJzOworCQkJYnVmLT5vZmZzZXQgKz0gY2hhcnM7CiAJ CQlidWYtPmxlbiAtPSBjaGFyczsKIAogCQkJLyogV2FzIGl0IGEgcGFja2V0IGJ1ZmZlcj8gQ2xl YW4gdXAgYW5kIGV4aXQgKi8KQEAgLTkyOSwyMCArOTM4LDQ5IEBAIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgcmR3cl9waXBlZmlmb19mb3BzID0gewogCS5mYXN5bmMJCT0gcGlwZV9yZHdy X2Zhc3luYywKIH07CiAKK3N0YXRpYyB2b2lkIGFjY291bnRfcGlwZV9idWZmZXJzKHN0cnVjdCBw aXBlX2lub2RlX2luZm8gKnBpcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG9sZCwgdW5zaWduZWQgbG9uZyBuZXcpCit7CisJYXRvbWljX2xvbmdfYWRk KG5ldyAtIG9sZCwgJnBpcGUtPnVzZXItPnBpcGVfYnVmcyk7Cit9CisKK3N0YXRpYyBib29sIHRv b19tYW55X3BpcGVfYnVmZmVyc19zb2Z0KHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcikKK3sKKwly ZXR1cm4gcGlwZV91c2VyX3BhZ2VzX3NvZnQgJiYKKwkgICAgICAgYXRvbWljX2xvbmdfcmVhZCgm dXNlci0+cGlwZV9idWZzKSA+PSBwaXBlX3VzZXJfcGFnZXNfc29mdDsKK30KKworc3RhdGljIGJv b2wgdG9vX21hbnlfcGlwZV9idWZmZXJzX2hhcmQoc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKQor eworCXJldHVybiBwaXBlX3VzZXJfcGFnZXNfaGFyZCAmJgorCSAgICAgICBhdG9taWNfbG9uZ19y ZWFkKCZ1c2VyLT5waXBlX2J1ZnMpID49IHBpcGVfdXNlcl9wYWdlc19oYXJkOworfQorCiBzdHJ1 Y3QgcGlwZV9pbm9kZV9pbmZvICogYWxsb2NfcGlwZV9pbmZvKHN0cnVjdCBpbm9kZSAqaW5vZGUp CiB7CiAJc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZTsKIAogCXBpcGUgPSBremFsbG9jKHNp emVvZihzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHBpcGUpIHsK LQkJcGlwZS0+YnVmcyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwaXBlX2J1ZmZlcikgKiBQSVBF X0RFRl9CVUZGRVJTLCBHRlBfS0VSTkVMKTsKKwkJdW5zaWduZWQgbG9uZyBwaXBlX2J1ZnMgPSBQ SVBFX0RFRl9CVUZGRVJTOworCQlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfY3VycmVu dF91c2VyKCk7CisKKwkJaWYgKCF0b29fbWFueV9waXBlX2J1ZmZlcnNfaGFyZCh1c2VyKSkgewor CQkJaWYgKHRvb19tYW55X3BpcGVfYnVmZmVyc19zb2Z0KHVzZXIpKQorCQkJCXBpcGVfYnVmcyA9 IDE7CisJCQlwaXBlLT5idWZzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHBpcGVfYnVmZmVyKSAq IHBpcGVfYnVmcywgR0ZQX0tFUk5FTCk7CisJCX0KKwogCQlpZiAocGlwZS0+YnVmcykgewogCQkJ aW5pdF93YWl0cXVldWVfaGVhZCgmcGlwZS0+d2FpdCk7CiAJCQlwaXBlLT5yX2NvdW50ZXIgPSBw aXBlLT53X2NvdW50ZXIgPSAxOwogCQkJcGlwZS0+aW5vZGUgPSBpbm9kZTsKLQkJCXBpcGUtPmJ1 ZmZlcnMgPSBQSVBFX0RFRl9CVUZGRVJTOworCQkJcGlwZS0+YnVmZmVycyA9IHBpcGVfYnVmczsK KwkJCXBpcGUtPnVzZXIgPSB1c2VyOworCQkJYWNjb3VudF9waXBlX2J1ZmZlcnMocGlwZSwgMCwg cGlwZV9idWZzKTsKIAkJCXJldHVybiBwaXBlOwogCQl9CisJCWZyZWVfdWlkKHVzZXIpOwogCQlr ZnJlZShwaXBlKTsKIAl9CiAKQEAgLTk1Myw2ICs5OTEsOCBAQCB2b2lkIF9fZnJlZV9waXBlX2lu Zm8oc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSkKIHsKIAlpbnQgaTsKIAorCWFjY291bnRf cGlwZV9idWZmZXJzKHBpcGUsIHBpcGUtPmJ1ZmZlcnMsIDApOworCWZyZWVfdWlkKHBpcGUtPnVz ZXIpOwogCWZvciAoaSA9IDA7IGkgPCBwaXBlLT5idWZmZXJzOyBpKyspIHsKIAkJc3RydWN0IHBp cGVfYnVmZmVyICpidWYgPSBwaXBlLT5idWZzICsgaTsKIAkJaWYgKGJ1Zi0+b3BzKQpAQCAtMTIw MSw2ICsxMjQxLDcgQEAgc3RhdGljIGxvbmcgcGlwZV9zZXRfc2l6ZShzdHJ1Y3QgcGlwZV9pbm9k ZV9pbmZvICpwaXBlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQogCQkJbWVtY3B5KGJ1ZnMgKyBo ZWFkLCBwaXBlLT5idWZzLCB0YWlsICogc2l6ZW9mKHN0cnVjdCBwaXBlX2J1ZmZlcikpOwogCX0K IAorCWFjY291bnRfcGlwZV9idWZmZXJzKHBpcGUsIHBpcGUtPmJ1ZmZlcnMsIG5yX3BhZ2VzKTsK IAlwaXBlLT5jdXJidWYgPSAwOwogCWtmcmVlKHBpcGUtPmJ1ZnMpOwogCXBpcGUtPmJ1ZnMgPSBi dWZzOwpAQCAtMTI3NCw2ICsxMzE1LDExIEBAIGxvbmcgcGlwZV9mY250bChzdHJ1Y3QgZmlsZSAq ZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCWlmICghY2FwYWJs ZShDQVBfU1lTX1JFU09VUkNFKSAmJiBzaXplID4gcGlwZV9tYXhfc2l6ZSkgewogCQkJcmV0ID0g LUVQRVJNOwogCQkJZ290byBvdXQ7CisJCX0gZWxzZSBpZiAoKHRvb19tYW55X3BpcGVfYnVmZmVy c19oYXJkKHBpcGUtPnVzZXIpIHx8CisJCQkgICAgdG9vX21hbnlfcGlwZV9idWZmZXJzX3NvZnQo cGlwZS0+dXNlcikpICYmCisJCSAgICAgICAgICAgIWNhcGFibGUoQ0FQX1NZU19SRVNPVVJDRSkg JiYgIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpIHsKKwkJCXJldCA9IC1FUEVSTTsKKwkJCWdvdG8g b3V0OwogCQl9CiAJCXJldCA9IHBpcGVfc2V0X3NpemUocGlwZSwgbnJfcGFnZXMpOwogCQlicmVh azsKZGlmZiAtLWdpdCBhL2ZzL3RpbWVyZmQuYyBiL2ZzL3RpbWVyZmQuYwppbmRleCBkZmZlYjM3 OTVhZjEuLjExMzIwOGMzYTg3NCAxMDA2NDQKLS0tIGEvZnMvdGltZXJmZC5jCisrKyBiL2ZzL3Rp bWVyZmQuYwpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBrdGltZV90IHRpbWVyZmRfZ2V0X3Jl bWFpbmluZyhzdHJ1Y3QgdGltZXJmZF9jdHggKmN0eCkKIHsKIAlrdGltZV90IHJlbWFpbmluZzsK IAotCXJlbWFpbmluZyA9IGhydGltZXJfZXhwaXJlc19yZW1haW5pbmcoJmN0eC0+dG1yKTsKKwly ZW1haW5pbmcgPSBocnRpbWVyX2V4cGlyZXNfcmVtYWluaW5nX2FkanVzdGVkKCZjdHgtPnRtcik7 CiAJcmV0dXJuIHJlbWFpbmluZy50djY0IDwgMCA/IGt0aW1lX3NldCgwLCAwKTogcmVtYWluaW5n OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCBiL2luY2x1ZGUvbGlu dXgvaHJ0aW1lci5oCmluZGV4IGNjMDdkMjc3N2JiZS4uOTk0Mjk3N2U1YTA2IDEwMDY0NAotLS0g YS9pbmNsdWRlL2xpbnV4L2hydGltZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaApA QCAtOTYsNiArOTYsNyBAQCBlbnVtIGhydGltZXJfcmVzdGFydCB7CiAgKiBAZnVuY3Rpb246CXRp bWVyIGV4cGlyeSBjYWxsYmFjayBmdW5jdGlvbgogICogQGJhc2U6CXBvaW50ZXIgdG8gdGhlIHRp bWVyIGJhc2UgKHBlciBjcHUgYW5kIHBlciBjbG9jaykKICAqIEBzdGF0ZToJc3RhdGUgaW5mb3Jt YXRpb24gKFNlZSBiaXQgdmFsdWVzIGFib3ZlKQorICogQGlzX3JlbDoJU2V0IGlmIHRoZSB0aW1l ciB3YXMgYXJtZWQgcmVsYXRpdmUKICAqIEBzdGFydF9zaXRlOgl0aW1lciBzdGF0aXN0aWNzIGZp ZWxkIHRvIHN0b3JlIHRoZSBzaXRlIHdoZXJlIHRoZSB0aW1lcgogICoJCXdhcyBzdGFydGVkCiAg KiBAc3RhcnRfY29tbTogdGltZXIgc3RhdGlzdGljcyBmaWVsZCB0byBzdG9yZSB0aGUgbmFtZSBv ZiB0aGUgcHJvY2VzcyB3aGljaApAQCAtMTEwLDcgKzExMSw4IEBAIHN0cnVjdCBocnRpbWVyIHsK IAlrdGltZV90CQkJCV9zb2Z0ZXhwaXJlczsKIAllbnVtIGhydGltZXJfcmVzdGFydAkJKCpmdW5j dGlvbikoc3RydWN0IGhydGltZXIgKik7CiAJc3RydWN0IGhydGltZXJfY2xvY2tfYmFzZQkqYmFz ZTsKLQl1bnNpZ25lZCBsb25nCQkJc3RhdGU7CisJdTgJCQkJc3RhdGU7CisJdTgJCQkJaXNfcmVs OwogI2lmZGVmIENPTkZJR19USU1FUl9TVEFUUwogCWludAkJCQlzdGFydF9waWQ7CiAJdm9pZAkJ CQkqc3RhcnRfc2l0ZTsKQEAgLTMxNSw2ICszMTcsMjkgQEAgc3RhdGljIGlubGluZSB2b2lkIGNs b2NrX3dhc19zZXRfZGVsYXllZCh2b2lkKSB7IH0KIAogI2VuZGlmCiAKK3N0YXRpYyBpbmxpbmUg a3RpbWVfdAorX19ocnRpbWVyX2V4cGlyZXNfcmVtYWluaW5nX2FkanVzdGVkKGNvbnN0IHN0cnVj dCBocnRpbWVyICp0aW1lciwga3RpbWVfdCBub3cpCit7CisJa3RpbWVfdCByZW0gPSBrdGltZV9z dWIodGltZXItPm5vZGUuZXhwaXJlcywgbm93KTsKKworCS8qCisJICogQWRqdXN0IHJlbGF0aXZl IHRpbWVycyBmb3IgdGhlIGV4dHJhIHdlIGFkZGVkIGluCisJICogaHJ0aW1lcl9zdGFydF9yYW5n ZV9ucygpIHRvIHByZXZlbnQgc2hvcnQgdGltZW91dHMuCisJICovCisjaWZkZWYgQ09ORklHX1RJ TUVfTE9XX1JFUworCWlmICh0aW1lci0+aXNfcmVsKQorCQlyZW0gPSBrdGltZV9zdWIocmVtLCBL VElNRV9MT1dfUkVTKTsKKyNlbmRpZgorCXJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbmxpbmUg a3RpbWVfdAoraHJ0aW1lcl9leHBpcmVzX3JlbWFpbmluZ19hZGp1c3RlZChjb25zdCBzdHJ1Y3Qg aHJ0aW1lciAqdGltZXIpCit7CisJcmV0dXJuIF9faHJ0aW1lcl9leHBpcmVzX3JlbWFpbmluZ19h ZGp1c3RlZCh0aW1lciwKKwkJCQkJCSAgICB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKSk7Cit9CisK IGV4dGVybiB2b2lkIGNsb2NrX3dhc19zZXQodm9pZCk7CiAjaWZkZWYgQ09ORklHX1RJTUVSRkQK IGV4dGVybiB2b2lkIHRpbWVyZmRfY2xvY2tfd2FzX3NldCh2b2lkKTsKQEAgLTM4Myw3ICs0MDgs MTIgQEAgc3RhdGljIGlubGluZSBpbnQgaHJ0aW1lcl9yZXN0YXJ0KHN0cnVjdCBocnRpbWVyICp0 aW1lcikKIH0KIAogLyogUXVlcnkgdGltZXJzOiAqLwotZXh0ZXJuIGt0aW1lX3QgaHJ0aW1lcl9n ZXRfcmVtYWluaW5nKGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lcik7CitleHRlcm4ga3RpbWVf dCBfX2hydGltZXJfZ2V0X3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGJv b2wgYWRqdXN0KTsKKworc3RhdGljIGlubGluZSBrdGltZV90IGhydGltZXJfZ2V0X3JlbWFpbmlu Zyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCit7CisJcmV0dXJuIF9faHJ0aW1lcl9nZXRf cmVtYWluaW5nKHRpbWVyLCBmYWxzZSk7Cit9CiBleHRlcm4gaW50IGhydGltZXJfZ2V0X3Jlcyhj b25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCB0aW1lc3BlYyAqdHApOwogCiBleHRl cm4ga3RpbWVfdCBocnRpbWVyX2dldF9uZXh0X2V2ZW50KHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9waXBlX2ZzX2kuaCBiL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgKaW5kZXgg ODc3OGMyNmM5NDJlLi4wZThlY2JkZGIyMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGlw ZV9mc19pLmgKKysrIGIvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaApAQCAtNDMsNiArNDMsNyBA QCBzdHJ1Y3QgcGlwZV9idWZmZXIgewogICoJQGZhc3luY193cml0ZXJzOiB3cml0ZXIgc2lkZSBm YXN5bmMKICAqCUBpbm9kZTogaW5vZGUgdGhpcyBwaXBlIGlzIGF0dGFjaGVkIHRvCiAgKglAYnVm czogdGhlIGNpcmN1bGFyIGFycmF5IG9mIHBpcGUgYnVmZmVycworICoJQHVzZXI6IHRoZSB1c2Vy IHdobyBjcmVhdGVkIHRoaXMgcGlwZQogICoqLwogc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAJ d2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKQEAgLTU3LDYgKzU4LDcgQEAgc3RydWN0IHBpcGVfaW5v ZGVfaW5mbyB7CiAJc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY193cml0ZXJzOwogCXN0cnVj dCBpbm9kZSAqaW5vZGU7CiAJc3RydWN0IHBpcGVfYnVmZmVyICpidWZzOworCXN0cnVjdCB1c2Vy X3N0cnVjdCAqdXNlcjsKIH07CiAKIC8qCkBAIC0xNDIsNiArMTQ0LDggQEAgdm9pZCBwaXBlX3Vu bG9jayhzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICopOwogdm9pZCBwaXBlX2RvdWJsZV9sb2NrKHN0 cnVjdCBwaXBlX2lub2RlX2luZm8gKiwgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqKTsKIAogZXh0 ZXJuIHVuc2lnbmVkIGludCBwaXBlX21heF9zaXplLCBwaXBlX21pbl9zaXplOworZXh0ZXJuIHVu c2lnbmVkIGxvbmcgcGlwZV91c2VyX3BhZ2VzX2hhcmQ7CitleHRlcm4gdW5zaWduZWQgbG9uZyBw aXBlX3VzZXJfcGFnZXNfc29mdDsKIGludCBwaXBlX3Byb2NfZm4oc3RydWN0IGN0bF90YWJsZSAq LCBpbnQsIHZvaWQgX191c2VyICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CiAKIApkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCmluZGV4IDli OWFjMjkxZjY2ZS4uZmI3NmVlN2RiZDlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVk LmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC03MDksNiArNzA5LDggQEAgc3RydWN0 IHVzZXJfc3RydWN0IHsKIAl1bnNpZ25lZCBsb25nIG1xX2J5dGVzOwkvKiBIb3cgbWFueSBieXRl cyBjYW4gYmUgYWxsb2NhdGVkIHRvIG1xdWV1ZT8gKi8KICNlbmRpZgogCXVuc2lnbmVkIGxvbmcg bG9ja2VkX3NobTsgLyogSG93IG1hbnkgcGFnZXMgb2YgbWxvY2tlZCBzaG0gPyAqLworCXVuc2ln bmVkIGxvbmcgdW5peF9pbmZsaWdodDsJLyogSG93IG1hbnkgZmlsZXMgaW4gZmxpZ2h0IGluIHVu aXggc29ja2V0cyAqLworCWF0b21pY19sb25nX3QgcGlwZV9idWZzOyAgLyogaG93IG1hbnkgcGFn ZXMgYXJlIGFsbG9jYXRlZCBpbiBwaXBlIGJ1ZmZlcnMgKi8KIAogI2lmZGVmIENPTkZJR19LRVlT CiAJc3RydWN0IGtleSAqdWlkX2tleXJpbmc7CS8qIFVJRCBzcGVjaWZpYyBrZXlyaW5nICovCmRp ZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl91bml4LmggYi9pbmNsdWRlL25ldC9hZl91bml4LmgK aW5kZXggZjQ4NDJmN2FmYWE1Li5hNjliZmVlMWRkMjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0 L2FmX3VuaXguaAorKysgYi9pbmNsdWRlL25ldC9hZl91bml4LmgKQEAgLTYsOCArNiw4IEBACiAj aW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxuZXQvc29jay5oPgogCi1leHRlcm4g dm9pZCB1bml4X2luZmxpZ2h0KHN0cnVjdCBmaWxlICpmcCk7Ci1leHRlcm4gdm9pZCB1bml4X25v dGluZmxpZ2h0KHN0cnVjdCBmaWxlICpmcCk7CitleHRlcm4gdm9pZCB1bml4X2luZmxpZ2h0KHN0 cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGZpbGUgKmZwKTsKK2V4dGVybiB2b2lkIHVu aXhfbm90aW5mbGlnaHQoc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgZmlsZSAqZnAp OwogZXh0ZXJuIHZvaWQgdW5peF9nYyh2b2lkKTsKIGV4dGVybiB2b2lkIHdhaXRfZm9yX3VuaXhf Z2Modm9pZCk7CiBleHRlcm4gc3RydWN0IHNvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmls ZSAqZmlscCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY20uaCBiL2luY2x1ZGUvbmV0L3Nj bS5oCmluZGV4IDVkYTBhN2I3ZWI0MS4uOTgyMmE2OGFlMTQ4IDEwMDY0NAotLS0gYS9pbmNsdWRl L25ldC9zY20uaAorKysgYi9pbmNsdWRlL25ldC9zY20uaApAQCAtMTYsNiArMTYsNyBAQCBzdHJ1 Y3Qgc2NtX2ZwX2xpc3QgewogCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKIAlzaG9ydAkJCWNvdW50 OwogCXNob3J0CQkJbWF4OworCXN0cnVjdCB1c2VyX3N0cnVjdAkqdXNlcjsKIAlzdHJ1Y3QgZmls ZQkJKmZwW1NDTV9NQVhfRkRdOwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9yYXdt aWRpLmggYi9pbmNsdWRlL3NvdW5kL3Jhd21pZGkuaAppbmRleCA2YjE0MzU5ZDlmZWQuLjY4MGE0 N2YzYzYzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9yYXdtaWRpLmgKKysrIGIvaW5jbHVk ZS9zb3VuZC9yYXdtaWRpLmgKQEAgLTE2Nyw2ICsxNjcsMTAgQEAgaW50IHNuZF9yYXdtaWRpX3Ry YW5zbWl0X3BlZWsoc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogaW50 IHNuZF9yYXdtaWRpX3RyYW5zbWl0X2FjayhzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpz dWJzdHJlYW0sIGludCBjb3VudCk7CiBpbnQgc25kX3Jhd21pZGlfdHJhbnNtaXQoc3RydWN0IHNu ZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQkJIHVuc2lnbmVkIGNoYXIgKmJ1ZmZl ciwgaW50IGNvdW50KTsKK2ludCBfX3NuZF9yYXdtaWRpX3RyYW5zbWl0X3BlZWsoc3RydWN0IHNu ZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJICAgICAgdW5zaWduZWQgY2hhciAq YnVmZmVyLCBpbnQgY291bnQpOworaW50IF9fc25kX3Jhd21pZGlfdHJhbnNtaXRfYWNrKHN0cnVj dCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCSAgICAgICBpbnQgY291bnQp OwogCiAvKiBtYWluIG1pZGkgZnVuY3Rpb25zICovCiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9ocnRp bWVyLmMgYi9rZXJuZWwvaHJ0aW1lci5jCmluZGV4IGQ5Y2UzZDQ4NDIzMS4uNjkxOGMwMzEzNjNl IDEwMDY0NAotLS0gYS9rZXJuZWwvaHJ0aW1lci5jCisrKyBiL2tlcm5lbC9ocnRpbWVyLmMKQEAg LTkxMCw3ICs5MTAsNyBAQCBzdGF0aWMgaW50IGVucXVldWVfaHJ0aW1lcihzdHJ1Y3QgaHJ0aW1l ciAqdGltZXIsCiAgKi8KIHN0YXRpYyB2b2lkIF9fcmVtb3ZlX2hydGltZXIoc3RydWN0IGhydGlt ZXIgKnRpbWVyLAogCQkJICAgICBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlICpiYXNlLAotCQkJ ICAgICB1bnNpZ25lZCBsb25nIG5ld3N0YXRlLCBpbnQgcmVwcm9ncmFtKQorCQkJICAgICB1OCBu ZXdzdGF0ZSwgaW50IHJlcHJvZ3JhbSkKIHsKIAlzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpuZXh0 X3RpbWVyOwogCWlmICghKHRpbWVyLT5zdGF0ZSAmIEhSVElNRVJfU1RBVEVfRU5RVUVVRUQpKQpA QCAtOTQ0LDcgKzk0NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50CiByZW1vdmVfaHJ0aW1lcihzdHJ1 Y3QgaHJ0aW1lciAqdGltZXIsIHN0cnVjdCBocnRpbWVyX2Nsb2NrX2Jhc2UgKmJhc2UpCiB7CiAJ aWYgKGhydGltZXJfaXNfcXVldWVkKHRpbWVyKSkgewotCQl1bnNpZ25lZCBsb25nIHN0YXRlOwor CQl1OCBzdGF0ZTsKIAkJaW50IHJlcHJvZ3JhbTsKIAogCQkvKgpAQCAtOTcwLDYgKzk3MCwyMiBA QCByZW1vdmVfaHJ0aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIHN0cnVjdCBocnRpbWVyX2Ns b2NrX2Jhc2UgKmJhc2UpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUga3RpbWVfdCBo cnRpbWVyX3VwZGF0ZV9sb3dyZXMoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbSwK KwkJCQkJICAgIGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpCit7CisjaWZkZWYgQ09ORklH X1RJTUVfTE9XX1JFUworCS8qCisJICogQ09ORklHX1RJTUVfTE9XX1JFUyBpbmRpY2F0ZXMgdGhh dCB0aGUgc3lzdGVtIGhhcyBubyB3YXkgdG8gcmV0dXJuCisJICogZ3JhbnVsYXIgdGltZSB2YWx1 ZXMuIEZvciByZWxhdGl2ZSB0aW1lcnMgd2UgYWRkIEtUSU1FX0xPV19SRVMKKwkgKiAoaS5lLiBv bmUgamlmZmllKSB0byBwcmV2ZW50IHNob3J0IHRpbWVvdXRzLgorCSAqLworCXRpbWVyLT5pc19y ZWwgPSBtb2RlICYgSFJUSU1FUl9NT0RFX1JFTDsKKwlpZiAodGltZXItPmlzX3JlbCkKKwkJdGlt ID0ga3RpbWVfYWRkX3NhZmUodGltLCBLVElNRV9MT1dfUkVTKTsKKyNlbmRpZgorCXJldHVybiB0 aW07Cit9CisKIGludCBfX2hydGltZXJfc3RhcnRfcmFuZ2VfbnMoc3RydWN0IGhydGltZXIgKnRp bWVyLCBrdGltZV90IHRpbSwKIAkJdW5zaWduZWQgbG9uZyBkZWx0YV9ucywgY29uc3QgZW51bSBo cnRpbWVyX21vZGUgbW9kZSwKIAkJaW50IHdha2V1cCkKQEAgLTk4MywxOSArOTk5LDEwIEBAIGlu dCBfX2hydGltZXJfc3RhcnRfcmFuZ2VfbnMoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90 IHRpbSwKIAkvKiBSZW1vdmUgYW4gYWN0aXZlIHRpbWVyIGZyb20gdGhlIHF1ZXVlOiAqLwogCXJl dCA9IHJlbW92ZV9ocnRpbWVyKHRpbWVyLCBiYXNlKTsKIAotCWlmIChtb2RlICYgSFJUSU1FUl9N T0RFX1JFTCkgeworCWlmIChtb2RlICYgSFJUSU1FUl9NT0RFX1JFTCkKIAkJdGltID0ga3RpbWVf YWRkX3NhZmUodGltLCBiYXNlLT5nZXRfdGltZSgpKTsKLQkJLyoKLQkJICogQ09ORklHX1RJTUVf TE9XX1JFUyBpcyBhIHRlbXBvcmFyeSB3YXkgZm9yIGFyY2hpdGVjdHVyZXMKLQkJICogdG8gc2ln bmFsIHRoYXQgdGhleSBzaW1wbHkgcmV0dXJuIHh0aW1lIGluCi0JCSAqIGRvX2dldHRpbWVvZmZz ZXQoKS4gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcm91bmQgdXAgYnkKLQkJICogcmVzb2x1dGlv biB3aGVuIHN0YXJ0aW5nIGEgcmVsYXRpdmUgdGltZXIsIHRvIGF2b2lkIHNob3J0Ci0JCSAqIHRp bWVvdXRzLiBUaGlzIHdpbGwgZ28gYXdheSB3aXRoIHRoZSBHVE9EIGZyYW1ld29yay4KLQkJICov Ci0jaWZkZWYgQ09ORklHX1RJTUVfTE9XX1JFUwotCQl0aW0gPSBrdGltZV9hZGRfc2FmZSh0aW0s IGJhc2UtPnJlc29sdXRpb24pOwotI2VuZGlmCi0JfQorCisJdGltID0gaHJ0aW1lcl91cGRhdGVf bG93cmVzKHRpbWVyLCB0aW0sIG1vZGUpOwogCiAJaHJ0aW1lcl9zZXRfZXhwaXJlc19yYW5nZV9u cyh0aW1lciwgdGltLCBkZWx0YV9ucyk7CiAKQEAgLTExMjAsMTkgKzExMjcsMjUgQEAgRVhQT1JU X1NZTUJPTF9HUEwoaHJ0aW1lcl9jYW5jZWwpOwogLyoqCiAgKiBocnRpbWVyX2dldF9yZW1haW5p bmcgLSBnZXQgcmVtYWluaW5nIHRpbWUgZm9yIHRoZSB0aW1lcgogICogQHRpbWVyOgl0aGUgdGlt ZXIgdG8gcmVhZAorICogQGFkanVzdDoJYWRqdXN0IHJlbGF0aXZlIHRpbWVycyB3aGVuIENPTkZJ R19USU1FX0xPV19SRVM9eQogICovCi1rdGltZV90IGhydGltZXJfZ2V0X3JlbWFpbmluZyhjb25z dCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCitrdGltZV90IF9faHJ0aW1lcl9nZXRfcmVtYWluaW5n KGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lciwgYm9vbCBhZGp1c3QpCiB7CiAJdW5zaWduZWQg bG9uZyBmbGFnczsKIAlrdGltZV90IHJlbTsKIAogCWxvY2tfaHJ0aW1lcl9iYXNlKHRpbWVyLCAm ZmxhZ3MpOwotCXJlbSA9IGhydGltZXJfZXhwaXJlc19yZW1haW5pbmcodGltZXIpOworI2lmZGVm IENPTkZJR19USU1FX0xPV19SRVMKKwlpZiAoYWRqdXN0KQorCQlyZW0gPSBocnRpbWVyX2V4cGly ZXNfcmVtYWluaW5nX2FkanVzdGVkKHRpbWVyKTsKKwllbHNlCisjZW5kaWYKKwkJcmVtID0gaHJ0 aW1lcl9leHBpcmVzX3JlbWFpbmluZyh0aW1lcik7CiAJdW5sb2NrX2hydGltZXJfYmFzZSh0aW1l ciwgJmZsYWdzKTsKIAogCXJldHVybiByZW07CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChocnRpbWVy X2dldF9yZW1haW5pbmcpOworRVhQT1JUX1NZTUJPTF9HUEwoX19ocnRpbWVyX2dldF9yZW1haW5p bmcpOwogCiAjaWZkZWYgQ09ORklHX05PX0haCiAvKioKQEAgLTEyNDksNiArMTI2MiwxNSBAQCBz dGF0aWMgdm9pZCBfX3J1bl9ocnRpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCAq bm93KQogCWZuID0gdGltZXItPmZ1bmN0aW9uOwogCiAJLyoKKwkgKiBDbGVhciB0aGUgJ2lzIHJl bGF0aXZlJyBmbGFnIGZvciB0aGUgVElNRV9MT1dfUkVTIGNhc2UuIElmIHRoZQorCSAqIHRpbWVy IGlzIHJlc3RhcnRlZCB3aXRoIGEgcGVyaW9kIHRoZW4gaXQgYmVjb21lcyBhbiBhYnNvbHV0ZQor CSAqIHRpbWVyLiBJZiBpdHMgbm90IHJlc3RhcnRlZCBpdCBkb2VzIG5vdCBtYXR0ZXIuCisJICov CisjaWZkZWYgQ09ORklHX1RJTUVfTE9XX1JFUworCXRpbWVyLT5pc19yZWwgPSBmYWxzZTsKKyNl bmRpZgorCisJLyoKIAkgKiBCZWNhdXNlIHdlIHJ1biB0aW1lcnMgZnJvbSBoYXJkaXJxIGNvbnRl eHQsIHRoZXJlIGlzIG5vIGNoYW5jZQogCSAqIHRoZXkgZ2V0IG1pZ3JhdGVkIHRvIGFub3RoZXIg Y3B1LCB0aGVyZWZvcmUgaXRzIHNhZmUgdG8gdW5sb2NrCiAJICogdGhlIHRpbWVyIGJhc2UuCmRp ZmYgLS1naXQgYS9rZXJuZWwvaXRpbWVyLmMgYi9rZXJuZWwvaXRpbWVyLmMKaW5kZXggZDgwMjg4 MzE1M2RhLi5jNmY5NDg5NjBhNTEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9pdGltZXIuYworKysgYi9r ZXJuZWwvaXRpbWVyLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqLwogc3RhdGljIHN0cnVjdCB0aW1l dmFsIGl0aW1lcl9nZXRfcmVtdGltZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7Ci0Ja3RpbWVf dCByZW0gPSBocnRpbWVyX2dldF9yZW1haW5pbmcodGltZXIpOworCWt0aW1lX3QgcmVtID0gX19o cnRpbWVyX2dldF9yZW1haW5pbmcodGltZXIsIHRydWUpOwogCiAJLyoKIAkgKiBSYWN5IGJ1dCBz YWZlOiBpZiB0aGUgaXRpbWVyIGV4cGlyZXMgYWZ0ZXIgdGhlIGFib3ZlCmRpZmYgLS1naXQgYS9r ZXJuZWwvcG9zaXgtdGltZXJzLmMgYi9rZXJuZWwvcG9zaXgtdGltZXJzLmMKaW5kZXggMDI4MjRh NWMyNjkzLi42NzY2MTgzMmFjMmIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3NpeC10aW1lcnMuYwor KysgYi9rZXJuZWwvcG9zaXgtdGltZXJzLmMKQEAgLTcwNiw3ICs3MDYsNyBAQCBjb21tb25fdGlt ZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltciwgc3RydWN0IGl0aW1lcnNwZWMgKmN1cl9zZXR0 aW5nKQogCSAgICAodGltci0+aXRfc2lnZXZfbm90aWZ5ICYgflNJR0VWX1RIUkVBRF9JRCkgPT0g U0lHRVZfTk9ORSkpCiAJCXRpbXItPml0X292ZXJydW4gKz0gKHVuc2lnbmVkIGludCkgaHJ0aW1l cl9mb3J3YXJkKHRpbWVyLCBub3csIGl2KTsKIAotCXJlbWFpbmluZyA9IGt0aW1lX3N1YihocnRp bWVyX2dldF9leHBpcmVzKHRpbWVyKSwgbm93KTsKKwlyZW1haW5pbmcgPSBfX2hydGltZXJfZXhw aXJlc19yZW1haW5pbmdfYWRqdXN0ZWQodGltZXIsIG5vdyk7CiAJLyogUmV0dXJuIDAgb25seSwg d2hlbiB0aGUgdGltZXIgaXMgZXhwaXJlZCBhbmQgbm90IHBlbmRpbmcgKi8KIAlpZiAocmVtYWlu aW5nLnR2NjQgPD0gMCkgewogCQkvKgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkX2ZhaXIuYyBi L2tlcm5lbC9zY2hlZF9mYWlyLmMKaW5kZXggNGM2ZGFlMTdjZDFlLi45OGUxMDM5ODhhYWQgMTAw NjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZF9mYWlyLmMKKysrIGIva2VybmVsL3NjaGVkX2ZhaXIuYwpA QCAtMjc5MSw2ICsyNzkxLDcgQEAgaW50IGNhbl9taWdyYXRlX3Rhc2soc3RydWN0IHRhc2tfc3Ry dWN0ICpwLCBzdHJ1Y3QgcnEgKnJxLCBpbnQgdGhpc19jcHUsCiAJICogMSkgcnVubmluZyAob2J2 aW91c2x5KSwgb3IKIAkgKiAyKSBjYW5ub3QgYmUgbWlncmF0ZWQgdG8gdGhpcyBDUFUgZHVlIHRv IGNwdXNfYWxsb3dlZCwgb3IKIAkgKiAzKSBhcmUgY2FjaGUtaG90IG9uIHRoZWlyIGN1cnJlbnQg Q1BVLgorCSAqIDQpIHAtPnBpX2xvY2sgaXMgaGVsZC4KIAkgKi8KIAlpZiAoIWNwdW1hc2tfdGVz dF9jcHUodGhpc19jcHUsIHRza19jcHVzX2FsbG93ZWQocCkpKSB7CiAJCXNjaGVkc3RhdF9pbmMo cCwgc2Uuc3RhdGlzdGljcy5ucl9mYWlsZWRfbWlncmF0aW9uc19hZmZpbmUpOwpAQCAtMjgwNCw2 ICsyODA1LDE0IEBAIGludCBjYW5fbWlncmF0ZV90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwg c3RydWN0IHJxICpycSwgaW50IHRoaXNfY3B1LAogCX0KIAogCS8qCisJICogcnQgLT4gZmFpciBj bGFzcyBjaGFuZ2UgbWF5IGJlIGluIHByb2dyZXNzLiAgSWYgd2Ugc25lYWsgaW4gc2hvdWxkCisJ ICogZG91YmxlX2xvY2tfYmFsYW5jZSgpIHJlbGVhc2UgcnEtPmxvY2ssIGFuZCBtb3ZlIHRoZSB0 YXNrLCB3ZSB3aWxsCisJICogY2F1c2Ugc3dpdGNoZWRfdG9fZmFpcigpIHRvIG1lZXQgYSBwYXNz ZWQgYnV0IG5vIGxvbmdlciB2YWxpZCBycS4KKwkgKi8KKwlpZiAocmF3X3NwaW5faXNfbG9ja2Vk KCZwLT5waV9sb2NrKSkKKwkJcmV0dXJuIDA7CisKKwkvKgogCSAqIEFnZ3Jlc3NpdmUgbWlncmF0 aW9uIGlmOgogCSAqIDEpIHRhc2sgaXMgY2FjaGUgY29sZCwgb3IKIAkgKiAyKSB0b28gbWFueSBi YWxhbmNlIGF0dGVtcHRzIGhhdmUgZmFpbGVkLgpkaWZmIC0tZ2l0IGEva2VybmVsL3N5c2N0bC5j IGIva2VybmVsL3N5c2N0bC5jCmluZGV4IGVhN2VjN2YxOTdjNC4uOGYzZDE0NTMwODJkIDEwMDY0 NAotLS0gYS9rZXJuZWwvc3lzY3RsLmMKKysrIGIva2VybmVsL3N5c2N0bC5jCkBAIC0xNTE4LDYg KzE1MTgsMjAgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgZnNfdGFibGVbXSA9IHsKIAkJLnBy b2NfaGFuZGxlcgk9ICZwaXBlX3Byb2NfZm4sCiAJCS5leHRyYTEJCT0gJnBpcGVfbWluX3NpemUs CiAJfSwKKwl7CisJCS5wcm9jbmFtZQk9ICJwaXBlLXVzZXItcGFnZXMtaGFyZCIsCisJCS5kYXRh CQk9ICZwaXBlX3VzZXJfcGFnZXNfaGFyZCwKKwkJLm1heGxlbgkJPSBzaXplb2YocGlwZV91c2Vy X3BhZ2VzX2hhcmQpLAorCQkubW9kZQkJPSAwNjQ0LAorCQkucHJvY19oYW5kbGVyCT0gcHJvY19k b3Vsb25ndmVjX21pbm1heCwKKwl9LAorCXsKKwkJLnByb2NuYW1lCT0gInBpcGUtdXNlci1wYWdl cy1zb2Z0IiwKKwkJLmRhdGEJCT0gJnBpcGVfdXNlcl9wYWdlc19zb2Z0LAorCQkubWF4bGVuCQk9 IHNpemVvZihwaXBlX3VzZXJfcGFnZXNfc29mdCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9j X2hhbmRsZXIJPSBwcm9jX2RvdWxvbmd2ZWNfbWlubWF4LAorCX0sCiAJeyB9CiB9OwogCmRpZmYg LS1naXQgYS9rZXJuZWwvdGltZS90aW1lcl9saXN0LmMgYi9rZXJuZWwvdGltZS90aW1lcl9saXN0 LmMKaW5kZXggMzI1ODQ1NTU0OWY0Li44ZTE3MTAxMjE2Y2QgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90 aW1lL3RpbWVyX2xpc3QuYworKysgYi9rZXJuZWwvdGltZS90aW1lcl9saXN0LmMKQEAgLTU3LDcg KzU3LDcgQEAgcHJpbnRfdGltZXIoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaHJ0aW1lciAq dGFkZHIsIHN0cnVjdCBocnRpbWVyICp0aW1lciwKIAlwcmludF9uYW1lX29mZnNldChtLCB0YWRk cik7CiAJU0VRX3ByaW50ZihtLCAiLCAiKTsKIAlwcmludF9uYW1lX29mZnNldChtLCB0aW1lci0+ ZnVuY3Rpb24pOwotCVNFUV9wcmludGYobSwgIiwgUzolMDJseCIsIHRpbWVyLT5zdGF0ZSk7CisJ U0VRX3ByaW50ZihtLCAiLCBTOiUwMngiLCB0aW1lci0+c3RhdGUpOwogI2lmZGVmIENPTkZJR19U SU1FUl9TVEFUUwogCVNFUV9wcmludGYobSwgIiwgIik7CiAJcHJpbnRfbmFtZV9vZmZzZXQobSwg dGltZXItPnN0YXJ0X3NpdGUpOwpkaWZmIC0tZ2l0IGEvbGliL2tsaXN0LmMgYi9saWIva2xpc3Qu YwppbmRleCA1NzNkNjA2OGE0MmUuLjlhMzBkY2Q0ZWFlNiAxMDA2NDQKLS0tIGEvbGliL2tsaXN0 LmMKKysrIGIvbGliL2tsaXN0LmMKQEAgLTI4Miw5ICsyODIsOSBAQCB2b2lkIGtsaXN0X2l0ZXJf aW5pdF9ub2RlKHN0cnVjdCBrbGlzdCAqaywgc3RydWN0IGtsaXN0X2l0ZXIgKmksCiAJCQkgIHN0 cnVjdCBrbGlzdF9ub2RlICpuKQogewogCWktPmlfa2xpc3QgPSBrOwotCWktPmlfY3VyID0gbjsK LQlpZiAobikKLQkJa3JlZl9nZXQoJm4tPm5fcmVmKTsKKwlpLT5pX2N1ciA9IE5VTEw7CisJaWYg KG4gJiYga3JlZl9nZXRfdW5sZXNzX3plcm8oJm4tPm5fcmVmKSkKKwkJaS0+aV9jdXIgPSBuOwog fQogRVhQT1JUX1NZTUJPTF9HUEwoa2xpc3RfaXRlcl9pbml0X25vZGUpOwogCmRpZmYgLS1naXQg YS9tbS9iYWNraW5nLWRldi5jIGIvbW0vYmFja2luZy1kZXYuYwppbmRleCAxN2Y1NDAzMDI2M2Qu Ljg0NWU1OGIzNTUwNyAxMDA2NDQKLS0tIGEvbW0vYmFja2luZy1kZXYuYworKysgYi9tbS9iYWNr aW5nLWRldi5jCkBAIC04NzksNyArODc5LDcgQEAgbG9uZyB3YWl0X2lmZl9jb25nZXN0ZWQoc3Ry dWN0IHpvbmUgKnpvbmUsIGludCBzeW5jLCBsb25nIHRpbWVvdXQpCiAJCSAqIGhlcmUgcmF0aGVy IHRoYW4gY2FsbGluZyBjb25kX3Jlc2NoZWQoKS4KIAkJICovCiAJCWlmIChjdXJyZW50LT5mbGFn cyAmIFBGX1dRX1dPUktFUikKLQkJCXNjaGVkdWxlX3RpbWVvdXQoMSk7CisJCQlzY2hlZHVsZV90 aW1lb3V0X3VuaW50ZXJydXB0aWJsZSgxKTsKIAkJZWxzZQogCQkJY29uZF9yZXNjaGVkKCk7CiAK ZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NjbS5jIGIvbmV0L2NvcmUvc2NtLmMKaW5kZXggNTFiNGQ1 MmE2Zjk4Li45YWRhYmVkYWY4YWQgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3NjbS5jCisrKyBiL25l dC9jb3JlL3NjbS5jCkBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyBpbnQgc2NtX2ZwX2NvcHkoc3Ry dWN0IGNtc2doZHIgKmNtc2csIHN0cnVjdCBzY21fZnBfbGlzdCAqKmZwbHApCiAJCSpmcGxwID0g ZnBsOwogCQlmcGwtPmNvdW50ID0gMDsKIAkJZnBsLT5tYXggPSBTQ01fTUFYX0ZEOworCQlmcGwt PnVzZXIgPSBOVUxMOwogCX0KIAlmcHAgPSAmZnBsLT5mcFtmcGwtPmNvdW50XTsKIApAQCAtMTAw LDYgKzEwMSwxMCBAQCBzdGF0aWMgaW50IHNjbV9mcF9jb3B5KHN0cnVjdCBjbXNnaGRyICpjbXNn LCBzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKipmcGxwKQogCQkqZnBwKysgPSBmaWxlOwogCQlmcGwtPmNv dW50Kys7CiAJfQorCisJaWYgKCFmcGwtPnVzZXIpCisJCWZwbC0+dXNlciA9IGdldF91aWQoY3Vy cmVudF91c2VyKCkpOworCiAJcmV0dXJuIG51bTsKIH0KIApAQCAtMTI0LDYgKzEyOSw3IEBAIHZv aWQgX19zY21fZGVzdHJveShzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKQogCQkJCWxpc3RfZGVsKCZm cGwtPmxpc3QpOwogCQkJCWZvciAoaT1mcGwtPmNvdW50LTE7IGk+PTA7IGktLSkKIAkJCQkJZnB1 dChmcGwtPmZwW2ldKTsKKwkJCQlmcmVlX3VpZChmcGwtPnVzZXIpOwogCQkJCWtmcmVlKGZwbCk7 CiAJCQl9CiAKQEAgLTM0Miw2ICszNDgsNyBAQCBzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKnNjbV9mcF9k dXAoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpCiAJCWZvciAoaSA9IDA7IGkgPCBmcGwtPmNvdW50 OyBpKyspCiAJCQlnZXRfZmlsZShmcGwtPmZwW2ldKTsKIAkJbmV3X2ZwbC0+bWF4ID0gbmV3X2Zw bC0+Y291bnQ7CisJCW5ld19mcGwtPnVzZXIgPSBnZXRfdWlkKGZwbC0+dXNlcik7CiAJfQogCXJl dHVybiBuZXdfZnBsOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3Jma2lsbC9jb3JlLmMgYi9uZXQvcmZr aWxsL2NvcmUuYwppbmRleCAxM2QwZmI2OTYwOWIuLmFlN2I1MGFmYzIxNSAxMDA2NDQKLS0tIGEv bmV0L3Jma2lsbC9jb3JlLmMKKysrIGIvbmV0L3Jma2lsbC9jb3JlLmMKQEAgLTEwNjUsMTcgKzEw NjUsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHJma2lsbF9mb3BfcG9sbChzdHJ1Y3QgZmlsZSAq ZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKIAlyZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgYm9vbCBy ZmtpbGxfcmVhZGFibGUoc3RydWN0IHJma2lsbF9kYXRhICpkYXRhKQotewotCWJvb2wgcjsKLQot CW11dGV4X2xvY2soJmRhdGEtPm10eCk7Ci0JciA9ICFsaXN0X2VtcHR5KCZkYXRhLT5ldmVudHMp OwotCW11dGV4X3VubG9jaygmZGF0YS0+bXR4KTsKLQotCXJldHVybiByOwotfQotCiBzdGF0aWMg c3NpemVfdCByZmtpbGxfZm9wX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpi dWYsCiAJCQkgICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcykKIHsKQEAgLTEwOTIsOCAr MTA4MSwxMSBAQCBzdGF0aWMgc3NpemVfdCByZmtpbGxfZm9wX3JlYWQoc3RydWN0IGZpbGUgKmZp bGUsIGNoYXIgX191c2VyICpidWYsCiAJCQlnb3RvIG91dDsKIAkJfQogCQltdXRleF91bmxvY2so JmRhdGEtPm10eCk7CisJCS8qIHNpbmNlIHdlIHJlLWNoZWNrIGFuZCBpdCBqdXN0IGNvbXBhcmVz IHBvaW50ZXJzLAorCQkgKiB1c2luZyAhbGlzdF9lbXB0eSgpIHdpdGhvdXQgbG9ja2luZyBpc24n dCBhIHByb2JsZW0KKwkJICovCiAJCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShkYXRh LT5yZWFkX3dhaXQsCi0JCQkJCSAgICAgICByZmtpbGxfcmVhZGFibGUoZGF0YSkpOworCQkJCQkg ICAgICAgIWxpc3RfZW1wdHkoJmRhdGEtPmV2ZW50cykpOwogCQltdXRleF9sb2NrKCZkYXRhLT5t dHgpOwogCiAJCWlmIChyZXQpCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zb2NrZXQuYyBiL25ldC9z Y3RwL3NvY2tldC5jCmluZGV4IDM5NjI4M2IzMDZhYi4uNWIwZTE2Y2ZhZmY1IDEwMDY0NAotLS0g YS9uZXQvc2N0cC9zb2NrZXQuYworKysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtNTMwOSw2ICs1 MzA5LDcgQEAgc3RhdGljIGludCBzY3RwX2dldHNvY2tvcHRfaG1hY19pZGVudChzdHJ1Y3Qgc29j ayAqc2ssIGludCBsZW4sCiAJc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICpobWFjczsKIAlf X3UxNiBkYXRhX2xlbiA9IDA7CiAJdTMyIG51bV9pZGVudHM7CisJaW50IGk7CiAKIAlpZiAoIXNj dHBfYXV0aF9lbmFibGUpCiAJCXJldHVybiAtRUFDQ0VTOwpAQCAtNTMyNiw4ICs1MzI3LDEyIEBA IHN0YXRpYyBpbnQgc2N0cF9nZXRzb2Nrb3B0X2htYWNfaWRlbnQoc3RydWN0IHNvY2sgKnNrLCBp bnQgbGVuLAogCQlyZXR1cm4gLUVGQVVMVDsKIAlpZiAocHV0X3VzZXIobnVtX2lkZW50cywgJnAt PnNobWFjX251bV9pZGVudHMpKQogCQlyZXR1cm4gLUVGQVVMVDsKLQlpZiAoY29weV90b191c2Vy KHAtPnNobWFjX2lkZW50cywgaG1hY3MtPmhtYWNfaWRzLCBkYXRhX2xlbikpCi0JCXJldHVybiAt RUZBVUxUOworCWZvciAoaSA9IDA7IGkgPCBudW1faWRlbnRzOyBpKyspIHsKKwkJX191MTYgaG1h Y2lkID0gbnRvaHMoaG1hY3MtPmhtYWNfaWRzW2ldKTsKKworCQlpZiAoY29weV90b191c2VyKCZw LT5zaG1hY19pZGVudHNbaV0sICZobWFjaWQsIHNpemVvZihfX3UxNikpKQorCQkJcmV0dXJuIC1F RkFVTFQ7CisJfQogCXJldHVybiAwOwogfQogCkBAIC02MjQxLDYgKzYyNDYsNyBAQCBTQ1RQX1NU QVRJQyBpbnQgc2N0cF9tc2doZHJfcGFyc2UoY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnLAogCQkJ LyogTWluaW1hbGx5LCB2YWxpZGF0ZSB0aGUgc2luZm9fZmxhZ3MuICovCiAJCQlpZiAoY21zZ3Mt PmluZm8tPnNpbmZvX2ZsYWdzICYKIAkJCSAgICB+KFNDVFBfVU5PUkRFUkVEIHwgU0NUUF9BRERS X09WRVIgfAorCQkJICAgICAgU0NUUF9TQUNLX0lNTUVESUFURUxZIHwKIAkJCSAgICAgIFNDVFBf QUJPUlQgfCBTQ1RQX0VPRikpCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCAzMGE4 ODk5Mzg4ZDIuLjM5MGUwNzk5MTNmNCAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jCisr KyBiL25ldC91bml4L2FmX3VuaXguYwpAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgc3RhdGljIHZvaWQg dW5peF9kZXRhY2hfZmRzKHN0cnVjdCBzY21fY29va2llICpzY20sIHN0cnVjdCBza19idWZmICpz a2IpCiAJVU5JWENCKHNrYikuZnAgPSBOVUxMOwogCiAJZm9yIChpID0gc2NtLT5mcC0+Y291bnQt MTsgaSA+PSAwOyBpLS0pCi0JCXVuaXhfbm90aW5mbGlnaHQoc2NtLT5mcC0+ZnBbaV0pOworCQl1 bml4X25vdGluZmxpZ2h0KHNjbS0+ZnAtPnVzZXIsIHNjbS0+ZnAtPmZwW2ldKTsKIH0KIAogc3Rh dGljIHZvaWQgdW5peF9kZXN0cnVjdF9zY20oc3RydWN0IHNrX2J1ZmYgKnNrYikKQEAgLTE0NzIs NiArMTQ3MiwyMSBAQCBzdGF0aWMgdm9pZCB1bml4X2Rlc3RydWN0X3NjbShzdHJ1Y3Qgc2tfYnVm ZiAqc2tiKQogCXNvY2tfd2ZyZWUoc2tiKTsKIH0KIAorLyoKKyAqIFRoZSAidXNlci0+dW5peF9p bmZsaWdodCIgdmFyaWFibGUgaXMgcHJvdGVjdGVkIGJ5IHRoZSBnYXJiYWdlCisgKiBjb2xsZWN0 aW9uIGxvY2ssIGFuZCB3ZSBqdXN0IHJlYWQgaXQgbG9ja2xlc3NseSBoZXJlLiBJZiB5b3UgZ28K KyAqIG92ZXIgdGhlIGxpbWl0LCB0aGVyZSBtaWdodCBiZSBhIHRpbnkgcmFjZSBpbiBhY3R1YWxs eSBub3RpY2luZworICogaXQgYWNyb3NzIHRocmVhZHMuIFRvdWdoLgorICovCitzdGF0aWMgaW5s aW5lIGJvb2wgdG9vX21hbnlfdW5peF9mZHMoc3RydWN0IHRhc2tfc3RydWN0ICpwKQoreworCXN0 cnVjdCB1c2VyX3N0cnVjdCAqdXNlciA9IGN1cnJlbnRfdXNlcigpOworCisJaWYgKHVubGlrZWx5 KHVzZXItPnVuaXhfaW5mbGlnaHQgPiB0YXNrX3JsaW1pdChwLCBSTElNSVRfTk9GSUxFKSkpCisJ CXJldHVybiAhY2FwYWJsZShDQVBfU1lTX1JFU09VUkNFKSAmJiAhY2FwYWJsZShDQVBfU1lTX0FE TUlOKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKICNkZWZpbmUgTUFYX1JFQ1VSU0lPTl9MRVZFTCA0 CiAKIHN0YXRpYyBpbnQgdW5peF9hdHRhY2hfZmRzKHN0cnVjdCBzY21fY29va2llICpzY20sIHN0 cnVjdCBza19idWZmICpza2IpCkBAIC0xNDgwLDYgKzE0OTUsOSBAQCBzdGF0aWMgaW50IHVuaXhf YXR0YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQog CXVuc2lnbmVkIGNoYXIgbWF4X2xldmVsID0gMDsKIAlpbnQgdW5peF9zb2NrX2NvdW50ID0gMDsK IAorCWlmICh0b29fbWFueV91bml4X2ZkcyhjdXJyZW50KSkKKwkJcmV0dXJuIC1FVE9PTUFOWVJF RlM7CisKIAlmb3IgKGkgPSBzY20tPmZwLT5jb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCXN0 cnVjdCBzb2NrICpzayA9IHVuaXhfZ2V0X3NvY2tldChzY20tPmZwLT5mcFtpXSk7CiAKQEAgLTE1 MDEsMTAgKzE1MTksOCBAQCBzdGF0aWMgaW50IHVuaXhfYXR0YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nv b2tpZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmICghVU5JWENCKHNrYikuZnApCiAJ CXJldHVybiAtRU5PTUVNOwogCi0JaWYgKHVuaXhfc29ja19jb3VudCkgewotCQlmb3IgKGkgPSBz Y20tPmZwLT5jb3VudCAtIDE7IGkgPj0gMDsgaS0tKQotCQkJdW5peF9pbmZsaWdodChzY20tPmZw LT5mcFtpXSk7Ci0JfQorCWZvciAoaSA9IHNjbS0+ZnAtPmNvdW50IC0gMTsgaSA+PSAwOyBpLS0p CisJCXVuaXhfaW5mbGlnaHQoc2NtLT5mcC0+dXNlciwgc2NtLT5mcC0+ZnBbaV0pOwogCXJldHVy biBtYXhfbGV2ZWw7CiB9CiAKQEAgLTIxMDAsNiArMjExNiw3IEBAIHN0YXRpYyBpbnQgdW5peF9z dHJlYW1fcmVjdm1zZyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBzb2NrZXQgKnNvY2ssCiAK IAkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewogCQkJCWVyciA9IHNvY2tfaW50cl9l cnJubyh0aW1lbyk7CisJCQkJc2NtX2Rlc3Ryb3koc2lvY2ItPnNjbSk7CiAJCQkJZ290byBvdXQ7 CiAJCQl9CiAKZGlmZiAtLWdpdCBhL25ldC91bml4L2dhcmJhZ2UuYyBiL25ldC91bml4L2dhcmJh Z2UuYwppbmRleCAwMGQzZTU2Nzg1OTkuLjMzYTIxMjYwYjc5YiAxMDA2NDQKLS0tIGEvbmV0L3Vu aXgvZ2FyYmFnZS5jCisrKyBiL25ldC91bml4L2dhcmJhZ2UuYwpAQCAtMTIyLDEyICsxMjIsMTQg QEAgc3RydWN0IHNvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscCkKICAqCWRl c2NyaXB0b3IgaWYgaXQgaXMgZm9yIGFuIEFGX1VOSVggc29ja2V0LgogICovCiAKLXZvaWQgdW5p eF9pbmZsaWdodChzdHJ1Y3QgZmlsZSAqZnApCit2b2lkIHVuaXhfaW5mbGlnaHQoc3RydWN0IHVz ZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgZmlsZSAqZnApCiB7CiAJc3RydWN0IHNvY2sgKnMgPSB1 bml4X2dldF9zb2NrZXQoZnApOworCisJc3Bpbl9sb2NrKCZ1bml4X2djX2xvY2spOworCiAJaWYg KHMpIHsKIAkJc3RydWN0IHVuaXhfc29jayAqdSA9IHVuaXhfc2socyk7Ci0JCXNwaW5fbG9jaygm dW5peF9nY19sb2NrKTsKIAkJaWYgKGF0b21pY19sb25nX2luY19yZXR1cm4oJnUtPmluZmxpZ2h0 KSA9PSAxKSB7CiAJCQlCVUdfT04oIWxpc3RfZW1wdHkoJnUtPmxpbmspKTsKIAkJCWxpc3RfYWRk X3RhaWwoJnUtPmxpbmssICZnY19pbmZsaWdodF9saXN0KTsKQEAgLTEzNSwyMiArMTM3LDI2IEBA IHZvaWQgdW5peF9pbmZsaWdodChzdHJ1Y3QgZmlsZSAqZnApCiAJCQlCVUdfT04obGlzdF9lbXB0 eSgmdS0+bGluaykpOwogCQl9CiAJCXVuaXhfdG90X2luZmxpZ2h0Kys7Ci0JCXNwaW5fdW5sb2Nr KCZ1bml4X2djX2xvY2spOwogCX0KKwl1c2VyLT51bml4X2luZmxpZ2h0Kys7CisJc3Bpbl91bmxv Y2soJnVuaXhfZ2NfbG9jayk7CiB9CiAKLXZvaWQgdW5peF9ub3RpbmZsaWdodChzdHJ1Y3QgZmls ZSAqZnApCit2b2lkIHVuaXhfbm90aW5mbGlnaHQoc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBz dHJ1Y3QgZmlsZSAqZnApCiB7CiAJc3RydWN0IHNvY2sgKnMgPSB1bml4X2dldF9zb2NrZXQoZnAp OworCisJc3Bpbl9sb2NrKCZ1bml4X2djX2xvY2spOworCiAJaWYgKHMpIHsKIAkJc3RydWN0IHVu aXhfc29jayAqdSA9IHVuaXhfc2socyk7Ci0JCXNwaW5fbG9jaygmdW5peF9nY19sb2NrKTsKIAkJ QlVHX09OKGxpc3RfZW1wdHkoJnUtPmxpbmspKTsKIAkJaWYgKGF0b21pY19sb25nX2RlY19hbmRf dGVzdCgmdS0+aW5mbGlnaHQpKQogCQkJbGlzdF9kZWxfaW5pdCgmdS0+bGluayk7CiAJCXVuaXhf dG90X2luZmxpZ2h0LS07Ci0JCXNwaW5fdW5sb2NrKCZ1bml4X2djX2xvY2spOwogCX0KKwl1c2Vy LT51bml4X2luZmxpZ2h0LS07CisJc3Bpbl91bmxvY2soJnVuaXhfZ2NfbG9jayk7CiB9CiAKIHN0 YXRpYyB2b2lkIHNjYW5faW5mbGlnaHQoc3RydWN0IHNvY2sgKngsIHZvaWQgKCpmdW5jKShzdHJ1 Y3QgdW5peF9zb2NrICopLApkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9vc3MvcGNtX29zcy5jIGIv c291bmQvY29yZS9vc3MvcGNtX29zcy5jCmluZGV4IDU0MmY2OWU4MDM2Ni4uZmE0OWEyNzIyNmYw IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL29zcy9wY21fb3NzLmMKKysrIGIvc291bmQvY29yZS9v c3MvcGNtX29zcy5jCkBAIC04MzQsNyArODM0LDggQEAgc3RhdGljIGludCBjaG9vc2VfcmF0ZShz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAlyZXR1cm4gc25kX3BjbV9od19w YXJhbV9uZWFyKHN1YnN0cmVhbSwgcGFyYW1zLCBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwgYmVz dF9yYXRlLCBOVUxMKTsKIH0KIAotc3RhdGljIGludCBzbmRfcGNtX29zc19jaGFuZ2VfcGFyYW1z KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQorc3RhdGljIGludCBzbmRfcGNt X29zc19jaGFuZ2VfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAor CQkJCSAgICAgYm9vbCB0cnlsb2NrKQogewogCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRp bWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7CiAJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJh bXMsICpzcGFyYW1zOwpAQCAtODQ4LDcgKzg0OSwxMCBAQCBzdGF0aWMgaW50IHNuZF9wY21fb3Nz X2NoYW5nZV9wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJc3Ry dWN0IHNuZF9tYXNrIHNmb3JtYXRfbWFzazsKIAlzdHJ1Y3Qgc25kX21hc2sgbWFzazsKIAotCWlm IChtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnJ1bnRpbWUtPm9zcy5wYXJhbXNfbG9jaykpCisJ aWYgKHRyeWxvY2spIHsKKwkJaWYgKCEobXV0ZXhfdHJ5bG9jaygmcnVudGltZS0+b3NzLnBhcmFt c19sb2NrKSkpCisJCQlyZXR1cm4gLUVBR0FJTjsKKwl9IGVsc2UgaWYgKG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmcnVudGltZS0+b3NzLnBhcmFtc19sb2NrKSkKIAkJcmV0dXJuIC1FSU5UUjsK IAlzd19wYXJhbXMgPSBrbWFsbG9jKHNpemVvZigqc3dfcGFyYW1zKSwgR0ZQX0tFUk5FTCk7CiAJ cGFyYW1zID0ga21hbGxvYyhzaXplb2YoKnBhcmFtcyksIEdGUF9LRVJORUwpOwpAQCAtMTA5MSw3 ICsxMDk1LDcgQEAgc3RhdGljIGludCBzbmRfcGNtX29zc19nZXRfYWN0aXZlX3N1YnN0cmVhbShz dHJ1Y3Qgc25kX3BjbV9vc3NfZmlsZSAqcGNtX29zc19maWwKIAkJaWYgKGFzdWJzdHJlYW0gPT0g TlVMTCkKIAkJCWFzdWJzdHJlYW0gPSBzdWJzdHJlYW07CiAJCWlmIChzdWJzdHJlYW0tPnJ1bnRp bWUtPm9zcy5wYXJhbXMpIHsKLQkJCWVyciA9IHNuZF9wY21fb3NzX2NoYW5nZV9wYXJhbXMoc3Vi c3RyZWFtKTsKKwkJCWVyciA9IHNuZF9wY21fb3NzX2NoYW5nZV9wYXJhbXMoc3Vic3RyZWFtLCBm YWxzZSk7CiAJCQlpZiAoZXJyIDwgMCkKIAkJCQlyZXR1cm4gZXJyOwogCQl9CkBAIC0xMTMwLDcg KzExMzQsNyBAQCBzdGF0aWMgaW50IHNuZF9wY21fb3NzX21ha2VfcmVhZHkoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJCXJldHVybiAwOwogCXJ1bnRpbWUgPSBzdWJzdHJl YW0tPnJ1bnRpbWU7CiAJaWYgKHJ1bnRpbWUtPm9zcy5wYXJhbXMpIHsKLQkJZXJyID0gc25kX3Bj bV9vc3NfY2hhbmdlX3BhcmFtcyhzdWJzdHJlYW0pOworCQllcnIgPSBzbmRfcGNtX29zc19jaGFu Z2VfcGFyYW1zKHN1YnN0cmVhbSwgZmFsc2UpOwogCQlpZiAoZXJyIDwgMCkKIAkJCXJldHVybiBl cnI7CiAJfQpAQCAtMjE2OCw3ICsyMTcyLDcgQEAgc3RhdGljIGludCBzbmRfcGNtX29zc19nZXRf c3BhY2Uoc3RydWN0IHNuZF9wY21fb3NzX2ZpbGUgKnBjbV9vc3NfZmlsZSwgaW50IHN0cmUKIAly dW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOwogCiAJaWYgKHJ1bnRpbWUtPm9zcy5wYXJhbXMg JiYKLQkgICAgKGVyciA9IHNuZF9wY21fb3NzX2NoYW5nZV9wYXJhbXMoc3Vic3RyZWFtKSkgPCAw KQorCSAgICAoZXJyID0gc25kX3BjbV9vc3NfY2hhbmdlX3BhcmFtcyhzdWJzdHJlYW0sIGZhbHNl KSkgPCAwKQogCQlyZXR1cm4gZXJyOwogCiAJaW5mby5mcmFnc2l6ZSA9IHJ1bnRpbWUtPm9zcy5w ZXJpb2RfYnl0ZXM7CkBAIC0yODA0LDcgKzI4MDgsMTIgQEAgc3RhdGljIGludCBzbmRfcGNtX29z c19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmFyZWEpCiAJ CXJldHVybiAtRUlPOwogCQogCWlmIChydW50aW1lLT5vc3MucGFyYW1zKSB7Ci0JCWlmICgoZXJy ID0gc25kX3BjbV9vc3NfY2hhbmdlX3BhcmFtcyhzdWJzdHJlYW0pKSA8IDApCisJCS8qIHVzZSBt dXRleF90cnlsb2NrKCkgZm9yIHBhcmFtc19sb2NrIGZvciBhdm9pZGluZyBhIGRlYWRsb2NrCisJ CSAqIGJldHdlZW4gbW1hcF9zZW0gYW5kIHBhcmFtc19sb2NrIHRha2VuIGJ5CisJCSAqIGNvcHlf ZnJvbS90b191c2VyKCkgaW4gc25kX3BjbV9vc3Nfd3JpdGUvcmVhZCgpCisJCSAqLworCQllcnIg PSBzbmRfcGNtX29zc19jaGFuZ2VfcGFyYW1zKHN1YnN0cmVhbSwgdHJ1ZSk7CisJCWlmIChlcnIg PCAwKQogCQkJcmV0dXJuIGVycjsKIAl9CiAjaWZkZWYgQ09ORklHX1NORF9QQ01fT1NTX1BMVUdJ TlMKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvcmF3bWlkaS5jIGIvc291bmQvY29yZS9yYXdtaWRp LmMKaW5kZXggMWJiOTVhZWVhMDg0Li4xNGU3NDUzOTY5YWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2Nv cmUvcmF3bWlkaS5jCisrKyBiL3NvdW5kL2NvcmUvcmF3bWlkaS5jCkBAIC05MzQsMzEgKzkzNCwz NiBAQCBzdGF0aWMgbG9uZyBzbmRfcmF3bWlkaV9rZXJuZWxfcmVhZDEoc3RydWN0IHNuZF9yYXdt aWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJbG9uZyBy ZXN1bHQgPSAwLCBjb3VudDE7CiAJc3RydWN0IHNuZF9yYXdtaWRpX3J1bnRpbWUgKnJ1bnRpbWUg PSBzdWJzdHJlYW0tPnJ1bnRpbWU7CisJdW5zaWduZWQgbG9uZyBhcHBsX3B0cjsKIAorCXNwaW5f bG9ja19pcnFzYXZlKCZydW50aW1lLT5sb2NrLCBmbGFncyk7CiAJd2hpbGUgKGNvdW50ID4gMCAm JiBydW50aW1lLT5hdmFpbCkgewogCQljb3VudDEgPSBydW50aW1lLT5idWZmZXJfc2l6ZSAtIHJ1 bnRpbWUtPmFwcGxfcHRyOwogCQlpZiAoY291bnQxID4gY291bnQpCiAJCQljb3VudDEgPSBjb3Vu dDsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJnJ1bnRpbWUtPmxvY2ssIGZsYWdzKTsKIAkJaWYgKGNv dW50MSA+IChpbnQpcnVudGltZS0+YXZhaWwpCiAJCQljb3VudDEgPSBydW50aW1lLT5hdmFpbDsK KworCQkvKiB1cGRhdGUgcnVudGltZS0+YXBwbF9wdHIgYmVmb3JlIHVubG9ja2luZyBmb3IgdXNl cmJ1ZiAqLworCQlhcHBsX3B0ciA9IHJ1bnRpbWUtPmFwcGxfcHRyOworCQlydW50aW1lLT5hcHBs X3B0ciArPSBjb3VudDE7CisJCXJ1bnRpbWUtPmFwcGxfcHRyICU9IHJ1bnRpbWUtPmJ1ZmZlcl9z aXplOworCQlydW50aW1lLT5hdmFpbCAtPSBjb3VudDE7CisKIAkJaWYgKGtlcm5lbGJ1ZikKLQkJ CW1lbWNweShrZXJuZWxidWYgKyByZXN1bHQsIHJ1bnRpbWUtPmJ1ZmZlciArIHJ1bnRpbWUtPmFw cGxfcHRyLCBjb3VudDEpOworCQkJbWVtY3B5KGtlcm5lbGJ1ZiArIHJlc3VsdCwgcnVudGltZS0+ YnVmZmVyICsgYXBwbF9wdHIsIGNvdW50MSk7CiAJCWlmICh1c2VyYnVmKSB7CiAJCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZydW50aW1lLT5sb2NrLCBmbGFncyk7CiAJCQlpZiAoY29weV90b191 c2VyKHVzZXJidWYgKyByZXN1bHQsCi0JCQkJCSBydW50aW1lLT5idWZmZXIgKyBydW50aW1lLT5h cHBsX3B0ciwgY291bnQxKSkgeworCQkJCQkgcnVudGltZS0+YnVmZmVyICsgYXBwbF9wdHIsIGNv dW50MSkpIHsKIAkJCQlyZXR1cm4gcmVzdWx0ID4gMCA/IHJlc3VsdCA6IC1FRkFVTFQ7CiAJCQl9 CiAJCQlzcGluX2xvY2tfaXJxc2F2ZSgmcnVudGltZS0+bG9jaywgZmxhZ3MpOwogCQl9Ci0JCXJ1 bnRpbWUtPmFwcGxfcHRyICs9IGNvdW50MTsKLQkJcnVudGltZS0+YXBwbF9wdHIgJT0gcnVudGlt ZS0+YnVmZmVyX3NpemU7Ci0JCXJ1bnRpbWUtPmF2YWlsIC09IGNvdW50MTsKLQkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcnVudGltZS0+bG9jaywgZmxhZ3MpOwogCQlyZXN1bHQgKz0gY291bnQx OwogCQljb3VudCAtPSBjb3VudDE7CiAJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJ1bnRp bWUtPmxvY2ssIGZsYWdzKTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDQ0LDIzICsxMDQ5 LDE2IEBAIGludCBzbmRfcmF3bWlkaV90cmFuc21pdF9lbXB0eShzdHJ1Y3Qgc25kX3Jhd21pZGlf c3Vic3RyZWFtICpzdWJzdHJlYW0pCiB9CiAKIC8qKgotICogc25kX3Jhd21pZGlfdHJhbnNtaXRf cGVlayAtIGNvcHkgZGF0YSBmcm9tIHRoZSBpbnRlcm5hbCBidWZmZXIKKyAqIF9fc25kX3Jhd21p ZGlfdHJhbnNtaXRfcGVlayAtIGNvcHkgZGF0YSBmcm9tIHRoZSBpbnRlcm5hbCBidWZmZXIKICAq IEBzdWJzdHJlYW06IHRoZSByYXdtaWRpIHN1YnN0cmVhbQogICogQGJ1ZmZlcjogdGhlIGJ1ZmZl ciBwb2ludGVyCiAgKiBAY291bnQ6IGRhdGEgc2l6ZSB0byB0cmFuc2ZlcgogICoKLSAqIENvcGll cyBkYXRhIGZyb20gdGhlIGludGVybmFsIG91dHB1dCBidWZmZXIgdG8gdGhlIGdpdmVuIGJ1ZmZl ci4KLSAqCi0gKiBDYWxsIHRoaXMgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyIHdoZW4gdGhlIG1p ZGkgb3V0cHV0IGlzIHJlYWR5LAotICogYW5kIGNhbGwgc25kX3Jhd21pZGlfdHJhbnNtaXRfYWNr KCkgYWZ0ZXIgdGhlIHRyYW5zbWlzc2lvbiBpcwotICogZmluaXNoZWQuCi0gKgotICogUmV0dXJu cyB0aGUgc2l6ZSBvZiBjb3BpZWQgZGF0YSwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCisgKiBUaGlzIGlzIGEgdmFyaWFudCBvZiBzbmRfcmF3bWlkaV90cmFuc21pdF9wZWVr KCkgd2l0aG91dCBzcGlubG9jay4KICAqLwotaW50IHNuZF9yYXdtaWRpX3RyYW5zbWl0X3BlZWso c3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAoraW50IF9fc25kX3Jhd21p ZGlfdHJhbnNtaXRfcGVlayhzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0s CiAJCQkgICAgICB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBjb3VudCkKIHsKLQl1bnNpZ25l ZCBsb25nIGZsYWdzOwogCWludCByZXN1bHQsIGNvdW50MTsKIAlzdHJ1Y3Qgc25kX3Jhd21pZGlf cnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKIApAQCAtMTA2OSw3ICsxMDY3 LDYgQEAgaW50IHNuZF9yYXdtaWRpX3RyYW5zbWl0X3BlZWsoc3RydWN0IHNuZF9yYXdtaWRpX3N1 YnN0cmVhbSAqc3Vic3RyZWFtLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJcmVzdWx0ID0gMDsK LQlzcGluX2xvY2tfaXJxc2F2ZSgmcnVudGltZS0+bG9jaywgZmxhZ3MpOwogCWlmIChydW50aW1l LT5hdmFpbCA+PSBydW50aW1lLT5idWZmZXJfc2l6ZSkgewogCQkvKiB3YXJuaW5nOiBsb3dsZXZl bCBsYXllciBNVVNUIHRyaWdnZXIgZG93biB0aGUgaGFyZHdhcmUgKi8KIAkJZ290byBfX3NraXA7 CkBAIC0xMDk0LDMxICsxMDkxLDUyIEBAIGludCBzbmRfcmF3bWlkaV90cmFuc21pdF9wZWVrKHN0 cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJfQogCX0KICAgICAgIF9f c2tpcDoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZydW50aW1lLT5sb2NrLCBmbGFncyk7CiAJ cmV0dXJuIHJlc3VsdDsKIH0KK0VYUE9SVF9TWU1CT0woX19zbmRfcmF3bWlkaV90cmFuc21pdF9w ZWVrKTsKIAogLyoqCi0gKiBzbmRfcmF3bWlkaV90cmFuc21pdF9hY2sgLSBhY2tub3dsZWRnZSB0 aGUgdHJhbnNtaXNzaW9uCisgKiBzbmRfcmF3bWlkaV90cmFuc21pdF9wZWVrIC0gY29weSBkYXRh IGZyb20gdGhlIGludGVybmFsIGJ1ZmZlcgogICogQHN1YnN0cmVhbTogdGhlIHJhd21pZGkgc3Vi c3RyZWFtCi0gKiBAY291bnQ6IHRoZSB0cmFuZmVycmVkIGNvdW50CisgKiBAYnVmZmVyOiB0aGUg YnVmZmVyIHBvaW50ZXIKKyAqIEBjb3VudDogZGF0YSBzaXplIHRvIHRyYW5zZmVyCiAgKgotICog QWR2YW5jZXMgdGhlIGhhcmR3YXJlIHBvaW50ZXIgZm9yIHRoZSBpbnRlcm5hbCBvdXRwdXQgYnVm ZmVyIHdpdGgKLSAqIHRoZSBnaXZlbiBzaXplIGFuZCB1cGRhdGVzIHRoZSBjb25kaXRpb24uCi0g KiBDYWxsIGFmdGVyIHRoZSB0cmFuc21pc3Npb24gaXMgZmluaXNoZWQuCisgKiBDb3BpZXMgZGF0 YSBmcm9tIHRoZSBpbnRlcm5hbCBvdXRwdXQgYnVmZmVyIHRvIHRoZSBnaXZlbiBidWZmZXIuCisg KgorICogQ2FsbCB0aGlzIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB3aGVuIHRoZSBtaWRpIG91 dHB1dCBpcyByZWFkeSwKKyAqIGFuZCBjYWxsIHNuZF9yYXdtaWRpX3RyYW5zbWl0X2FjaygpIGFm dGVyIHRoZSB0cmFuc21pc3Npb24gaXMKKyAqIGZpbmlzaGVkLgogICoKLSAqIFJldHVybnMgdGhl IGFkdmFuY2VkIHNpemUgaWYgc3VjY2Vzc2Z1bCwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9u IGZhaWx1cmUuCisgKiBSZXR1cm46IFRoZSBzaXplIG9mIGNvcGllZCBkYXRhLCBvciBhIG5lZ2F0 aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KICAqLwotaW50IHNuZF9yYXdtaWRpX3RyYW5zbWl0 X2FjayhzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBjb3VudCkK K2ludCBzbmRfcmF3bWlkaV90cmFuc21pdF9wZWVrKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJl YW0gKnN1YnN0cmVhbSwKKwkJCSAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IGNvdW50 KQogeworCXN0cnVjdCBzbmRfcmF3bWlkaV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5y dW50aW1lOworCWludCByZXN1bHQ7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZydW50aW1lLT5sb2NrLCBmbGFncyk7CisJcmVzdWx0ID0gX19zbmRfcmF3bWlk aV90cmFuc21pdF9wZWVrKHN1YnN0cmVhbSwgYnVmZmVyLCBjb3VudCk7CisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcnVudGltZS0+bG9jaywgZmxhZ3MpOworCXJldHVybiByZXN1bHQ7Cit9CisK Ky8qKgorICogX19zbmRfcmF3bWlkaV90cmFuc21pdF9hY2sgLSBhY2tub3dsZWRnZSB0aGUgdHJh bnNtaXNzaW9uCisgKiBAc3Vic3RyZWFtOiB0aGUgcmF3bWlkaSBzdWJzdHJlYW0KKyAqIEBjb3Vu dDogdGhlIHRyYW5mZXJyZWQgY291bnQKKyAqCisgKiBUaGlzIGlzIGEgdmFyaWFudCBvZiBfX3Nu ZF9yYXdtaWRpX3RyYW5zbWl0X2FjaygpIHdpdGhvdXQgc3BpbmxvY2suCisgKi8KK2ludCBfX3Nu ZF9yYXdtaWRpX3RyYW5zbWl0X2FjayhzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJz dHJlYW0sIGludCBjb3VudCkKK3sKIAlzdHJ1Y3Qgc25kX3Jhd21pZGlfcnVudGltZSAqcnVudGlt ZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKIAogCWlmIChydW50aW1lLT5idWZmZXIgPT0gTlVMTCkg ewogCQlzbmRfcHJpbnRkKCJzbmRfcmF3bWlkaV90cmFuc21pdF9hY2s6IG91dHB1dCBpcyBub3Qg YWN0aXZlISEhXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCXNwaW5fbG9ja19pcnFzYXZl KCZydW50aW1lLT5sb2NrLCBmbGFncyk7CiAJc25kX0JVR19PTihydW50aW1lLT5hdmFpbCArIGNv dW50ID4gcnVudGltZS0+YnVmZmVyX3NpemUpOwogCXJ1bnRpbWUtPmh3X3B0ciArPSBjb3VudDsK IAlydW50aW1lLT5od19wdHIgJT0gcnVudGltZS0+YnVmZmVyX3NpemU7CkBAIC0xMTI4LDkgKzEx NDYsMzIgQEAgaW50IHNuZF9yYXdtaWRpX3RyYW5zbWl0X2FjayhzdHJ1Y3Qgc25kX3Jhd21pZGlf c3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBjb3VudCkKIAkJaWYgKHJ1bnRpbWUtPmRyYWluIHx8 IHNuZF9yYXdtaWRpX3JlYWR5KHN1YnN0cmVhbSkpCiAJCQl3YWtlX3VwKCZydW50aW1lLT5zbGVl cCk7CiAJfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJ1bnRpbWUtPmxvY2ssIGZsYWdzKTsK IAlyZXR1cm4gY291bnQ7CiB9CitFWFBPUlRfU1lNQk9MKF9fc25kX3Jhd21pZGlfdHJhbnNtaXRf YWNrKTsKKworLyoqCisgKiBzbmRfcmF3bWlkaV90cmFuc21pdF9hY2sgLSBhY2tub3dsZWRnZSB0 aGUgdHJhbnNtaXNzaW9uCisgKiBAc3Vic3RyZWFtOiB0aGUgcmF3bWlkaSBzdWJzdHJlYW0KKyAq IEBjb3VudDogdGhlIHRyYW5zZmVycmVkIGNvdW50CisgKgorICogQWR2YW5jZXMgdGhlIGhhcmR3 YXJlIHBvaW50ZXIgZm9yIHRoZSBpbnRlcm5hbCBvdXRwdXQgYnVmZmVyIHdpdGgKKyAqIHRoZSBn aXZlbiBzaXplIGFuZCB1cGRhdGVzIHRoZSBjb25kaXRpb24uCisgKiBDYWxsIGFmdGVyIHRoZSB0 cmFuc21pc3Npb24gaXMgZmluaXNoZWQuCisgKgorICogUmV0dXJuOiBUaGUgYWR2YW5jZWQgc2l6 ZSBpZiBzdWNjZXNzZnVsLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAq LworaW50IHNuZF9yYXdtaWRpX3RyYW5zbWl0X2FjayhzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3Ry ZWFtICpzdWJzdHJlYW0sIGludCBjb3VudCkKK3sKKwlzdHJ1Y3Qgc25kX3Jhd21pZGlfcnVudGlt ZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlpbnQgcmVzdWx0OworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcnVudGltZS0+bG9jaywgZmxhZ3Mp OworCXJlc3VsdCA9IF9fc25kX3Jhd21pZGlfdHJhbnNtaXRfYWNrKHN1YnN0cmVhbSwgY291bnQp OworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJ1bnRpbWUtPmxvY2ssIGZsYWdzKTsKKwlyZXR1 cm4gcmVzdWx0OworfQogCiAvKioKICAqIHNuZF9yYXdtaWRpX3RyYW5zbWl0IC0gY29weSBmcm9t IHRoZSBidWZmZXIgdG8gdGhlIGRldmljZQpAQCAtMTE0NSwxMiArMTE4NiwyMiBAQCBpbnQgc25k X3Jhd21pZGlfdHJhbnNtaXRfYWNrKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSwgaW50IGNvdW50KQogaW50IHNuZF9yYXdtaWRpX3RyYW5zbWl0KHN0cnVjdCBzbmRfcmF3 bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCSB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGlu dCBjb3VudCkKIHsKKwlzdHJ1Y3Qgc25kX3Jhd21pZGlfcnVudGltZSAqcnVudGltZSA9IHN1YnN0 cmVhbS0+cnVudGltZTsKKwlpbnQgcmVzdWx0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlz cGluX2xvY2tfaXJxc2F2ZSgmcnVudGltZS0+bG9jaywgZmxhZ3MpOwogCWlmICghc3Vic3RyZWFt LT5vcGVuZWQpCi0JCXJldHVybiAtRUJBREZEOwotCWNvdW50ID0gc25kX3Jhd21pZGlfdHJhbnNt aXRfcGVlayhzdWJzdHJlYW0sIGJ1ZmZlciwgY291bnQpOwotCWlmIChjb3VudCA8IDApCi0JCXJl dHVybiBjb3VudDsKLQlyZXR1cm4gc25kX3Jhd21pZGlfdHJhbnNtaXRfYWNrKHN1YnN0cmVhbSwg Y291bnQpOworCQlyZXN1bHQgPSAtRUJBREZEOworCWVsc2UgeworCQljb3VudCA9IF9fc25kX3Jh d21pZGlfdHJhbnNtaXRfcGVlayhzdWJzdHJlYW0sIGJ1ZmZlciwgY291bnQpOworCQlpZiAoY291 bnQgPD0gMCkKKwkJCXJlc3VsdCA9IGNvdW50OworCQllbHNlCisJCQlyZXN1bHQgPSBfX3NuZF9y YXdtaWRpX3RyYW5zbWl0X2FjayhzdWJzdHJlYW0sIGNvdW50KTsKKwl9CisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcnVudGltZS0+bG9jaywgZmxhZ3MpOworCXJldHVybiByZXN1bHQ7CiB9CiAK IHN0YXRpYyBsb25nIHNuZF9yYXdtaWRpX2tlcm5lbF93cml0ZTEoc3RydWN0IHNuZF9yYXdtaWRp X3N1YnN0cmVhbSAqc3Vic3RyZWFtLApAQCAtMTE2MSw4ICsxMjEyLDkgQEAgc3RhdGljIGxvbmcg c25kX3Jhd21pZGlfa2VybmVsX3dyaXRlMShzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpz dWJzdHJlYW0sCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlsb25nIGNvdW50MSwgcmVzdWx0Owog CXN0cnVjdCBzbmRfcmF3bWlkaV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1l OworCXVuc2lnbmVkIGxvbmcgYXBwbF9wdHI7CiAKLQlpZiAoc25kX0JVR19PTigha2VybmVsYnVm ICYmICF1c2VyYnVmKSkKKwlpZiAoIWtlcm5lbGJ1ZiAmJiAhdXNlcmJ1ZikKIAkJcmV0dXJuIC1F SU5WQUw7CiAJaWYgKHNuZF9CVUdfT04oIXJ1bnRpbWUtPmJ1ZmZlcikpCiAJCXJldHVybiAtRUlO VkFMOwpAQCAtMTE4MSwxMiArMTIzMywxOSBAQCBzdGF0aWMgbG9uZyBzbmRfcmF3bWlkaV9rZXJu ZWxfd3JpdGUxKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCWNv dW50MSA9IGNvdW50OwogCQlpZiAoY291bnQxID4gKGxvbmcpcnVudGltZS0+YXZhaWwpCiAJCQlj b3VudDEgPSBydW50aW1lLT5hdmFpbDsKKworCQkvKiB1cGRhdGUgcnVudGltZS0+YXBwbF9wdHIg YmVmb3JlIHVubG9ja2luZyBmb3IgdXNlcmJ1ZiAqLworCQlhcHBsX3B0ciA9IHJ1bnRpbWUtPmFw cGxfcHRyOworCQlydW50aW1lLT5hcHBsX3B0ciArPSBjb3VudDE7CisJCXJ1bnRpbWUtPmFwcGxf cHRyICU9IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplOworCQlydW50aW1lLT5hdmFpbCAtPSBjb3VudDE7 CisKIAkJaWYgKGtlcm5lbGJ1ZikKLQkJCW1lbWNweShydW50aW1lLT5idWZmZXIgKyBydW50aW1l LT5hcHBsX3B0ciwKKwkJCW1lbWNweShydW50aW1lLT5idWZmZXIgKyBhcHBsX3B0ciwKIAkJCSAg ICAgICBrZXJuZWxidWYgKyByZXN1bHQsIGNvdW50MSk7CiAJCWVsc2UgaWYgKHVzZXJidWYpIHsK IAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJ1bnRpbWUtPmxvY2ssIGZsYWdzKTsKLQkJCWlm IChjb3B5X2Zyb21fdXNlcihydW50aW1lLT5idWZmZXIgKyBydW50aW1lLT5hcHBsX3B0ciwKKwkJ CWlmIChjb3B5X2Zyb21fdXNlcihydW50aW1lLT5idWZmZXIgKyBhcHBsX3B0ciwKIAkJCQkJICAg dXNlcmJ1ZiArIHJlc3VsdCwgY291bnQxKSkgewogCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZydW50 aW1lLT5sb2NrLCBmbGFncyk7CiAJCQkJcmVzdWx0ID0gcmVzdWx0ID4gMCA/IHJlc3VsdCA6IC1F RkFVTFQ7CkBAIC0xMTk0LDkgKzEyNTMsNiBAQCBzdGF0aWMgbG9uZyBzbmRfcmF3bWlkaV9rZXJu ZWxfd3JpdGUxKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCX0K IAkJCXNwaW5fbG9ja19pcnFzYXZlKCZydW50aW1lLT5sb2NrLCBmbGFncyk7CiAJCX0KLQkJcnVu dGltZS0+YXBwbF9wdHIgKz0gY291bnQxOwotCQlydW50aW1lLT5hcHBsX3B0ciAlPSBydW50aW1l LT5idWZmZXJfc2l6ZTsKLQkJcnVudGltZS0+YXZhaWwgLT0gY291bnQxOwogCQlyZXN1bHQgKz0g Y291bnQxOwogCQljb3VudCAtPSBjb3VudDE7CiAJfQpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9z ZXEvb3NzL3NlcV9vc3NfaW5pdC5jIGIvc291bmQvY29yZS9zZXEvb3NzL3NlcV9vc3NfaW5pdC5j CmluZGV4IGUzY2I0NmZlZjJjNy4uOTY2ZDBkYzUzODViIDEwMDY0NAotLS0gYS9zb3VuZC9jb3Jl L3NlcS9vc3Mvc2VxX29zc19pbml0LmMKKysrIGIvc291bmQvY29yZS9zZXEvb3NzL3NlcV9vc3Nf aW5pdC5jCkBAIC0xOTYsNyArMTk2LDcgQEAgc25kX3NlcV9vc3Nfb3BlbihzdHJ1Y3QgZmlsZSAq ZmlsZSwgaW50IGxldmVsKQogCiAJZHAtPmluZGV4ID0gaTsKIAlpZiAoaSA+PSBTTkRSVl9TRVFf T1NTX01BWF9DTElFTlRTKSB7Ci0JCXNuZF9wcmludGsoS0VSTl9FUlIgInRvbyBtYW55IGFwcGxp Y2F0aW9uc1xuIik7CisJCXByX2RlYnVnKCJBTFNBOiBzZXFfb3NzOiB0b28gbWFueSBhcHBsaWNh dGlvbnNcbiIpOwogCQlyYyA9IC1FTk9NRU07CiAJCWdvdG8gX2Vycm9yOwogCX0KZGlmZiAtLWdp dCBhL3NvdW5kL2NvcmUvc2VxL29zcy9zZXFfb3NzX3N5bnRoLmMgYi9zb3VuZC9jb3JlL3NlcS9v c3Mvc2VxX29zc19zeW50aC5jCmluZGV4IGM1Yjc3M2ExZWVhOS4uNGEwOWMzMDg1Y2E0IDEwMDY0 NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9vc3Mvc2VxX29zc19zeW50aC5jCisrKyBiL3NvdW5kL2Nv cmUvc2VxL29zcy9zZXFfb3NzX3N5bnRoLmMKQEAgLTMxMCw3ICszMTAsNyBAQCBzbmRfc2VxX29z c19zeW50aF9jbGVhbnVwKHN0cnVjdCBzZXFfb3NzX2RldmluZm8gKmRwKQogCXN0cnVjdCBzZXFf b3NzX3N5bnRoICpyZWM7CiAJc3RydWN0IHNlcV9vc3Nfc3ludGhpbmZvICppbmZvOwogCi0JaWYg KHNuZF9CVUdfT04oZHAtPm1heF9zeW50aGRldiA+PSBTTkRSVl9TRVFfT1NTX01BWF9TWU5USF9E RVZTKSkKKwlpZiAoc25kX0JVR19PTihkcC0+bWF4X3N5bnRoZGV2ID4gU05EUlZfU0VRX09TU19N QVhfU1lOVEhfREVWUykpCiAJCXJldHVybjsKIAlmb3IgKGkgPSAwOyBpIDwgZHAtPm1heF9zeW50 aGRldjsgaSsrKSB7CiAJCWluZm8gPSAmZHAtPnN5bnRoc1tpXTsKZGlmZiAtLWdpdCBhL3NvdW5k L2NvcmUvc2VxL3NlcV9jbGllbnRtZ3IuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3Iu YwppbmRleCBlY2ZiZjVmMzlkMzguLjA4ODY1ZGNiZjVmMSAxMDA2NDQKLS0tIGEvc291bmQvY29y ZS9zZXEvc2VxX2NsaWVudG1nci5jCisrKyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3Iu YwpAQCAtNjc4LDYgKzY3OCw5IEBAIHN0YXRpYyBpbnQgZGVsaXZlcl90b19zdWJzY3JpYmVycyhz dHJ1Y3Qgc25kX3NlcV9jbGllbnQgKmNsaWVudCwKIAllbHNlCiAJCWRvd25fcmVhZCgmZ3JwLT5s aXN0X211dGV4KTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1YnMsICZncnAtPmxpc3RfaGVhZCwg c3JjX2xpc3QpIHsKKwkJLyogYm90aCBwb3J0cyByZWFkeT8gKi8KKwkJaWYgKGF0b21pY19yZWFk KCZzdWJzLT5yZWZfY291bnQpICE9IDIpCisJCQljb250aW51ZTsKIAkJZXZlbnQtPmRlc3QgPSBz dWJzLT5pbmZvLmRlc3Q7CiAJCWlmIChzdWJzLT5pbmZvLmZsYWdzICYgU05EUlZfU0VRX1BPUlRf U1VCU19USU1FU1RBTVApCiAJCQkvKiBjb252ZXJ0IHRpbWUgYWNjb3JkaW5nIHRvIGZsYWcgd2l0 aCBzdWJzY3JpcHRpb24gKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9wb3J0cy5j IGIvc291bmQvY29yZS9zZXEvc2VxX3BvcnRzLmMKaW5kZXggOTUxNmU1Y2UzYWFkLi42N2M5MWQy MjY1NTIgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9wb3J0cy5jCisrKyBiL3NvdW5k L2NvcmUvc2VxL3NlcV9wb3J0cy5jCkBAIC0xNzUsMTAgKzE3NSw2IEBAIHN0cnVjdCBzbmRfc2Vx X2NsaWVudF9wb3J0ICpzbmRfc2VxX2NyZWF0ZV9wb3J0KHN0cnVjdCBzbmRfc2VxX2NsaWVudCAq Y2xpZW50LAogfQogCiAvKiAqLwotZW51bSBncm91cF90eXBlIHsKLQlTUkNfTElTVCwgREVTVF9M SVNUCi19OwotCiBzdGF0aWMgaW50IHN1YnNjcmliZV9wb3J0KHN0cnVjdCBzbmRfc2VxX2NsaWVu dCAqY2xpZW50LAogCQkJICBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9ydCAqcG9ydCwKIAkJCSAg c3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzX2luZm8gKmdycCwKQEAgLTIwNSw2ICsyMDEsMjAgQEAg c3RhdGljIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb3J0ICpnZXRfY2xpZW50X3BvcnQoc3RydWN0 IHNuZF9zZXFfYWRkciAqYWRkciwKIAlyZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIHZvaWQgZGVs ZXRlX2FuZF91bnN1YnNjcmliZV9wb3J0KHN0cnVjdCBzbmRfc2VxX2NsaWVudCAqY2xpZW50LAor CQkJCQlzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9ydCAqcG9ydCwKKwkJCQkJc3RydWN0IHNuZF9z ZXFfc3Vic2NyaWJlcnMgKnN1YnMsCisJCQkJCWJvb2wgaXNfc3JjLCBib29sIGFjayk7CisKK3N0 YXRpYyBpbmxpbmUgc3RydWN0IHNuZF9zZXFfc3Vic2NyaWJlcnMgKgorZ2V0X3N1YnNjcmliZXIo c3RydWN0IGxpc3RfaGVhZCAqcCwgYm9vbCBpc19zcmMpCit7CisJaWYgKGlzX3NyYykKKwkJcmV0 dXJuIGxpc3RfZW50cnkocCwgc3RydWN0IHNuZF9zZXFfc3Vic2NyaWJlcnMsIHNyY19saXN0KTsK KwllbHNlCisJCXJldHVybiBsaXN0X2VudHJ5KHAsIHN0cnVjdCBzbmRfc2VxX3N1YnNjcmliZXJz LCBkZXN0X2xpc3QpOworfQorCiAvKgogICogcmVtb3ZlIGFsbCBzdWJzY3JpYmVycyBvbiB0aGUg bGlzdAogICogdGhpcyBpcyBjYWxsZWQgZnJvbSBwb3J0X2RlbGV0ZSwgZm9yIGVhY2ggc3JjIGFu ZCBkZXN0IGxpc3QuCkBAIC0yMTIsNyArMjIyLDcgQEAgc3RhdGljIHN0cnVjdCBzbmRfc2VxX2Ns aWVudF9wb3J0ICpnZXRfY2xpZW50X3BvcnQoc3RydWN0IHNuZF9zZXFfYWRkciAqYWRkciwKIHN0 YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmliZXJfbGlzdChzdHJ1Y3Qgc25kX3NlcV9jbGllbnQgKmNs aWVudCwKIAkJCQkgIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb3J0ICpwb3J0LAogCQkJCSAgc3Ry dWN0IHNuZF9zZXFfcG9ydF9zdWJzX2luZm8gKmdycCwKLQkJCQkgIGludCBncnB0eXBlKQorCQkJ CSAgaW50IGlzX3NyYykKIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpwLCAqbjsKIApAQCAtMjIxLDE1 ICsyMzEsMTMgQEAgc3RhdGljIHZvaWQgY2xlYXJfc3Vic2NyaWJlcl9saXN0KHN0cnVjdCBzbmRf c2VxX2NsaWVudCAqY2xpZW50LAogCQlzdHJ1Y3Qgc25kX3NlcV9jbGllbnQgKmM7CiAJCXN0cnVj dCBzbmRfc2VxX2NsaWVudF9wb3J0ICphcG9ydDsKIAotCQlpZiAoZ3JwdHlwZSA9PSBTUkNfTElT VCkgewotCQkJc3VicyA9IGxpc3RfZW50cnkocCwgc3RydWN0IHNuZF9zZXFfc3Vic2NyaWJlcnMs IHNyY19saXN0KTsKKwkJc3VicyA9IGdldF9zdWJzY3JpYmVyKHAsIGlzX3NyYyk7CisJCWlmIChp c19zcmMpCiAJCQlhcG9ydCA9IGdldF9jbGllbnRfcG9ydCgmc3Vicy0+aW5mby5kZXN0LCAmYyk7 Ci0JCX0gZWxzZSB7Ci0JCQlzdWJzID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3Qgc25kX3NlcV9zdWJz Y3JpYmVycywgZGVzdF9saXN0KTsKKwkJZWxzZQogCQkJYXBvcnQgPSBnZXRfY2xpZW50X3BvcnQo JnN1YnMtPmluZm8uc2VuZGVyLCAmYyk7Ci0JCX0KLQkJbGlzdF9kZWwocCk7Ci0JCXVuc3Vic2Ny aWJlX3BvcnQoY2xpZW50LCBwb3J0LCBncnAsICZzdWJzLT5pbmZvLCAwKTsKKwkJZGVsZXRlX2Fu ZF91bnN1YnNjcmliZV9wb3J0KGNsaWVudCwgcG9ydCwgc3VicywgaXNfc3JjLCBmYWxzZSk7CisK IAkJaWYgKCFhcG9ydCkgewogCQkJLyogbG9va3MgbGlrZSB0aGUgY29ubmVjdGVkIHBvcnQgaXMg YmVpbmcgZGVsZXRlZC4KIAkJCSAqIHdlIGRlY3JlYXNlIHRoZSBjb3VudGVyLCBhbmQgd2hlbiBi b3RoIHBvcnRzIGFyZSBkZWxldGVkCkBAIC0yMzcsMjEgKzI0NSwxNCBAQCBzdGF0aWMgdm9pZCBj bGVhcl9zdWJzY3JpYmVyX2xpc3Qoc3RydWN0IHNuZF9zZXFfY2xpZW50ICpjbGllbnQsCiAJCQkg Ki8KIAkJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZzdWJzLT5yZWZfY291bnQpKQogCQkJCWtm cmVlKHN1YnMpOwotCQl9IGVsc2UgewotCQkJLyogb2sgd2UgZ290IHRoZSBjb25uZWN0ZWQgcG9y dCAqLwotCQkJc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzX2luZm8gKmFncnA7Ci0JCQlhZ3JwID0g KGdycHR5cGUgPT0gU1JDX0xJU1QpID8gJmFwb3J0LT5jX2Rlc3QgOiAmYXBvcnQtPmNfc3JjOwot CQkJZG93bl93cml0ZSgmYWdycC0+bGlzdF9tdXRleCk7Ci0JCQlpZiAoZ3JwdHlwZSA9PSBTUkNf TElTVCkKLQkJCQlsaXN0X2RlbCgmc3Vicy0+ZGVzdF9saXN0KTsKLQkJCWVsc2UKLQkJCQlsaXN0 X2RlbCgmc3Vicy0+c3JjX2xpc3QpOwotCQkJdXBfd3JpdGUoJmFncnAtPmxpc3RfbXV0ZXgpOwot CQkJdW5zdWJzY3JpYmVfcG9ydChjLCBhcG9ydCwgYWdycCwgJnN1YnMtPmluZm8sIDEpOwotCQkJ a2ZyZWUoc3Vicyk7Ci0JCQlzbmRfc2VxX3BvcnRfdW5sb2NrKGFwb3J0KTsKLQkJCXNuZF9zZXFf Y2xpZW50X3VubG9jayhjKTsKKwkJCWNvbnRpbnVlOwogCQl9CisKKwkJLyogb2sgd2UgZ290IHRo ZSBjb25uZWN0ZWQgcG9ydCAqLworCQlkZWxldGVfYW5kX3Vuc3Vic2NyaWJlX3BvcnQoYywgYXBv cnQsIHN1YnMsICFpc19zcmMsIHRydWUpOworCQlrZnJlZShzdWJzKTsKKwkJc25kX3NlcV9wb3J0 X3VubG9jayhhcG9ydCk7CisJCXNuZF9zZXFfY2xpZW50X3VubG9jayhjKTsKIAl9CiB9CiAKQEAg LTI2NCw4ICsyNjUsOCBAQCBzdGF0aWMgaW50IHBvcnRfZGVsZXRlKHN0cnVjdCBzbmRfc2VxX2Ns aWVudCAqY2xpZW50LAogCXNuZF91c2VfbG9ja19zeW5jKCZwb3J0LT51c2VfbG9jayk7IAogCiAJ LyogY2xlYXIgc3Vic2NyaWJlcnMgaW5mbyAqLwotCWNsZWFyX3N1YnNjcmliZXJfbGlzdChjbGll bnQsIHBvcnQsICZwb3J0LT5jX3NyYywgU1JDX0xJU1QpOwotCWNsZWFyX3N1YnNjcmliZXJfbGlz dChjbGllbnQsIHBvcnQsICZwb3J0LT5jX2Rlc3QsIERFU1RfTElTVCk7CisJY2xlYXJfc3Vic2Ny aWJlcl9saXN0KGNsaWVudCwgcG9ydCwgJnBvcnQtPmNfc3JjLCB0cnVlKTsKKwljbGVhcl9zdWJz Y3JpYmVyX2xpc3QoY2xpZW50LCBwb3J0LCAmcG9ydC0+Y19kZXN0LCBmYWxzZSk7CiAKIAlpZiAo cG9ydC0+cHJpdmF0ZV9mcmVlKQogCQlwb3J0LT5wcml2YXRlX2ZyZWUocG9ydC0+cHJpdmF0ZV9k YXRhKTsKQEAgLTQ4NCw4NSArNDg1LDEyMCBAQCBzdGF0aWMgaW50IG1hdGNoX3N1YnNfaW5mbyhz dHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSAqciwKIAlyZXR1cm4gMDsKIH0KIAotCi0vKiBj b25uZWN0IHR3byBwb3J0cyAqLwotaW50IHNuZF9zZXFfcG9ydF9jb25uZWN0KHN0cnVjdCBzbmRf c2VxX2NsaWVudCAqY29ubmVjdG9yLAotCQkJIHN0cnVjdCBzbmRfc2VxX2NsaWVudCAqc3JjX2Ns aWVudCwKLQkJCSBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9ydCAqc3JjX3BvcnQsCi0JCQkgc3Ry dWN0IHNuZF9zZXFfY2xpZW50ICpkZXN0X2NsaWVudCwKLQkJCSBzdHJ1Y3Qgc25kX3NlcV9jbGll bnRfcG9ydCAqZGVzdF9wb3J0LAotCQkJIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlICpp bmZvKQorc3RhdGljIGludCBjaGVja19hbmRfc3Vic2NyaWJlX3BvcnQoc3RydWN0IHNuZF9zZXFf Y2xpZW50ICpjbGllbnQsCisJCQkJICAgIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb3J0ICpwb3J0 LAorCQkJCSAgICBzdHJ1Y3Qgc25kX3NlcV9zdWJzY3JpYmVycyAqc3VicywKKwkJCQkgICAgYm9v bCBpc19zcmMsIGJvb2wgZXhjbHVzaXZlLCBib29sIGFjaykKIHsKLQlzdHJ1Y3Qgc25kX3NlcV9w b3J0X3N1YnNfaW5mbyAqc3JjID0gJnNyY19wb3J0LT5jX3NyYzsKLQlzdHJ1Y3Qgc25kX3NlcV9w b3J0X3N1YnNfaW5mbyAqZGVzdCA9ICZkZXN0X3BvcnQtPmNfZGVzdDsKLQlzdHJ1Y3Qgc25kX3Nl cV9zdWJzY3JpYmVycyAqc3VicywgKnM7Ci0JaW50IGVyciwgc3JjX2NhbGxlZCA9IDA7Ci0JdW5z aWduZWQgbG9uZyBmbGFnczsKLQlpbnQgZXhjbHVzaXZlOworCXN0cnVjdCBzbmRfc2VxX3BvcnRf c3Vic19pbmZvICpncnA7CisJc3RydWN0IGxpc3RfaGVhZCAqcDsKKwlzdHJ1Y3Qgc25kX3NlcV9z dWJzY3JpYmVycyAqczsKKwlpbnQgZXJyOwogCi0Jc3VicyA9IGt6YWxsb2Moc2l6ZW9mKCpzdWJz KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCEgc3VicykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlzdWJz LT5pbmZvID0gKmluZm87Ci0JYXRvbWljX3NldCgmc3Vicy0+cmVmX2NvdW50LCAyKTsKLQotCWRv d25fd3JpdGUoJnNyYy0+bGlzdF9tdXRleCk7Ci0JZG93bl93cml0ZV9uZXN0ZWQoJmRlc3QtPmxp c3RfbXV0ZXgsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKLQotCWV4Y2x1c2l2ZSA9IGluZm8tPmZs YWdzICYgU05EUlZfU0VRX1BPUlRfU1VCU19FWENMVVNJVkUgPyAxIDogMDsKKwlncnAgPSBpc19z cmMgPyAmcG9ydC0+Y19zcmMgOiAmcG9ydC0+Y19kZXN0OwogCWVyciA9IC1FQlVTWTsKKwlkb3du X3dyaXRlKCZncnAtPmxpc3RfbXV0ZXgpOwogCWlmIChleGNsdXNpdmUpIHsKLQkJaWYgKCEgbGlz dF9lbXB0eSgmc3JjLT5saXN0X2hlYWQpIHx8ICEgbGlzdF9lbXB0eSgmZGVzdC0+bGlzdF9oZWFk KSkKKwkJaWYgKCFsaXN0X2VtcHR5KCZncnAtPmxpc3RfaGVhZCkpCiAJCQlnb3RvIF9fZXJyb3I7 CiAJfSBlbHNlIHsKLQkJaWYgKHNyYy0+ZXhjbHVzaXZlIHx8IGRlc3QtPmV4Y2x1c2l2ZSkKKwkJ aWYgKGdycC0+ZXhjbHVzaXZlKQogCQkJZ290byBfX2Vycm9yOwogCQkvKiBjaGVjayB3aGV0aGVy IGFscmVhZHkgZXhpc3RzICovCi0JCWxpc3RfZm9yX2VhY2hfZW50cnkocywgJnNyYy0+bGlzdF9o ZWFkLCBzcmNfbGlzdCkgewotCQkJaWYgKG1hdGNoX3N1YnNfaW5mbyhpbmZvLCAmcy0+aW5mbykp Ci0JCQkJZ290byBfX2Vycm9yOwotCQl9Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkocywgJmRlc3Qt Pmxpc3RfaGVhZCwgZGVzdF9saXN0KSB7Ci0JCQlpZiAobWF0Y2hfc3Vic19pbmZvKGluZm8sICZz LT5pbmZvKSkKKwkJbGlzdF9mb3JfZWFjaChwLCAmZ3JwLT5saXN0X2hlYWQpIHsKKwkJCXMgPSBn ZXRfc3Vic2NyaWJlcihwLCBpc19zcmMpOworCQkJaWYgKG1hdGNoX3N1YnNfaW5mbygmc3Vicy0+ aW5mbywgJnMtPmluZm8pKQogCQkJCWdvdG8gX19lcnJvcjsKIAkJfQogCX0KIAotCWlmICgoZXJy ID0gc3Vic2NyaWJlX3BvcnQoc3JjX2NsaWVudCwgc3JjX3BvcnQsIHNyYywgaW5mbywKLQkJCQkg IGNvbm5lY3Rvci0+bnVtYmVyICE9IHNyY19jbGllbnQtPm51bWJlcikpIDwgMCkKLQkJZ290byBf X2Vycm9yOwotCXNyY19jYWxsZWQgPSAxOwotCi0JaWYgKChlcnIgPSBzdWJzY3JpYmVfcG9ydChk ZXN0X2NsaWVudCwgZGVzdF9wb3J0LCBkZXN0LCBpbmZvLAotCQkJCSAgY29ubmVjdG9yLT5udW1i ZXIgIT0gZGVzdF9jbGllbnQtPm51bWJlcikpIDwgMCkKKwllcnIgPSBzdWJzY3JpYmVfcG9ydChj bGllbnQsIHBvcnQsIGdycCwgJnN1YnMtPmluZm8sIGFjayk7CisJaWYgKGVyciA8IDApIHsKKwkJ Z3JwLT5leGNsdXNpdmUgPSAwOwogCQlnb3RvIF9fZXJyb3I7CisJfQogCiAJLyogYWRkIHRvIGxp c3QgKi8KLQl3cml0ZV9sb2NrX2lycXNhdmUoJnNyYy0+bGlzdF9sb2NrLCBmbGFncyk7Ci0JLy8g d3JpdGVfbG9jaygmZGVzdC0+bGlzdF9sb2NrKTsgLy8gbm8gb3RoZXIgbG9jayB5ZXQKLQlsaXN0 X2FkZF90YWlsKCZzdWJzLT5zcmNfbGlzdCwgJnNyYy0+bGlzdF9oZWFkKTsKLQlsaXN0X2FkZF90 YWlsKCZzdWJzLT5kZXN0X2xpc3QsICZkZXN0LT5saXN0X2hlYWQpOwotCS8vIHdyaXRlX3VubG9j aygmZGVzdC0+bGlzdF9sb2NrKTsgLy8gbm8gb3RoZXIgbG9jayB5ZXQKLQl3cml0ZV91bmxvY2tf aXJxcmVzdG9yZSgmc3JjLT5saXN0X2xvY2ssIGZsYWdzKTsKKwl3cml0ZV9sb2NrX2lycSgmZ3Jw LT5saXN0X2xvY2spOworCWlmIChpc19zcmMpCisJCWxpc3RfYWRkX3RhaWwoJnN1YnMtPnNyY19s aXN0LCAmZ3JwLT5saXN0X2hlYWQpOworCWVsc2UKKwkJbGlzdF9hZGRfdGFpbCgmc3Vicy0+ZGVz dF9saXN0LCAmZ3JwLT5saXN0X2hlYWQpOworCWdycC0+ZXhjbHVzaXZlID0gZXhjbHVzaXZlOwor CWF0b21pY19pbmMoJnN1YnMtPnJlZl9jb3VudCk7CisJd3JpdGVfdW5sb2NrX2lycSgmZ3JwLT5s aXN0X2xvY2spOworCWVyciA9IDA7CisKKyBfX2Vycm9yOgorCXVwX3dyaXRlKCZncnAtPmxpc3Rf bXV0ZXgpOworCXJldHVybiBlcnI7Cit9CiAKLQlzcmMtPmV4Y2x1c2l2ZSA9IGRlc3QtPmV4Y2x1 c2l2ZSA9IGV4Y2x1c2l2ZTsKK3N0YXRpYyB2b2lkIGRlbGV0ZV9hbmRfdW5zdWJzY3JpYmVfcG9y dChzdHJ1Y3Qgc25kX3NlcV9jbGllbnQgKmNsaWVudCwKKwkJCQkJc3RydWN0IHNuZF9zZXFfY2xp ZW50X3BvcnQgKnBvcnQsCisJCQkJCXN0cnVjdCBzbmRfc2VxX3N1YnNjcmliZXJzICpzdWJzLAor CQkJCQlib29sIGlzX3NyYywgYm9vbCBhY2spCit7CisJc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJz X2luZm8gKmdycDsKKworCWdycCA9IGlzX3NyYyA/ICZwb3J0LT5jX3NyYyA6ICZwb3J0LT5jX2Rl c3Q7CisJZG93bl93cml0ZSgmZ3JwLT5saXN0X211dGV4KTsKKwl3cml0ZV9sb2NrX2lycSgmZ3Jw LT5saXN0X2xvY2spOworCWlmIChpc19zcmMpCisJCWxpc3RfZGVsKCZzdWJzLT5zcmNfbGlzdCk7 CisJZWxzZQorCQlsaXN0X2RlbCgmc3Vicy0+ZGVzdF9saXN0KTsKKwlncnAtPmV4Y2x1c2l2ZSA9 IDA7CisJd3JpdGVfdW5sb2NrX2lycSgmZ3JwLT5saXN0X2xvY2spOworCXVwX3dyaXRlKCZncnAt Pmxpc3RfbXV0ZXgpOworCisJdW5zdWJzY3JpYmVfcG9ydChjbGllbnQsIHBvcnQsIGdycCwgJnN1 YnMtPmluZm8sIGFjayk7Cit9CisKKy8qIGNvbm5lY3QgdHdvIHBvcnRzICovCitpbnQgc25kX3Nl cV9wb3J0X2Nvbm5lY3Qoc3RydWN0IHNuZF9zZXFfY2xpZW50ICpjb25uZWN0b3IsCisJCQkgc3Ry dWN0IHNuZF9zZXFfY2xpZW50ICpzcmNfY2xpZW50LAorCQkJIHN0cnVjdCBzbmRfc2VxX2NsaWVu dF9wb3J0ICpzcmNfcG9ydCwKKwkJCSBzdHJ1Y3Qgc25kX3NlcV9jbGllbnQgKmRlc3RfY2xpZW50 LAorCQkJIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb3J0ICpkZXN0X3BvcnQsCisJCQkgc3RydWN0 IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUgKmluZm8pCit7CisJc3RydWN0IHNuZF9zZXFfc3Vic2Ny aWJlcnMgKnN1YnM7CisJYm9vbCBleGNsdXNpdmU7CisJaW50IGVycjsKKworCXN1YnMgPSBremFs bG9jKHNpemVvZigqc3VicyksIEdGUF9LRVJORUwpOworCWlmICghc3VicykKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwlzdWJzLT5pbmZvID0gKmluZm87CisJYXRvbWljX3NldCgmc3Vicy0+cmVmX2Nv dW50LCAwKTsKKwlJTklUX0xJU1RfSEVBRCgmc3Vicy0+c3JjX2xpc3QpOworCUlOSVRfTElTVF9I RUFEKCZzdWJzLT5kZXN0X2xpc3QpOworCisJZXhjbHVzaXZlID0gISEoaW5mby0+ZmxhZ3MgJiBT TkRSVl9TRVFfUE9SVF9TVUJTX0VYQ0xVU0lWRSk7CisKKwllcnIgPSBjaGVja19hbmRfc3Vic2Ny aWJlX3BvcnQoc3JjX2NsaWVudCwgc3JjX3BvcnQsIHN1YnMsIHRydWUsCisJCQkJICAgICAgIGV4 Y2x1c2l2ZSwKKwkJCQkgICAgICAgY29ubmVjdG9yLT5udW1iZXIgIT0gc3JjX2NsaWVudC0+bnVt YmVyKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBlcnJvcjsKKwllcnIgPSBjaGVja19hbmRfc3Vi c2NyaWJlX3BvcnQoZGVzdF9jbGllbnQsIGRlc3RfcG9ydCwgc3VicywgZmFsc2UsCisJCQkJICAg ICAgIGV4Y2x1c2l2ZSwKKwkJCQkgICAgICAgY29ubmVjdG9yLT5udW1iZXIgIT0gZGVzdF9jbGll bnQtPm51bWJlcik7CisJaWYgKGVyciA8IDApCisJCWdvdG8gZXJyb3JfZGVzdDsKIAotCXVwX3dy aXRlKCZkZXN0LT5saXN0X211dGV4KTsKLQl1cF93cml0ZSgmc3JjLT5saXN0X211dGV4KTsKIAly ZXR1cm4gMDsKIAotIF9fZXJyb3I6Ci0JaWYgKHNyY19jYWxsZWQpCi0JCXVuc3Vic2NyaWJlX3Bv cnQoc3JjX2NsaWVudCwgc3JjX3BvcnQsIHNyYywgaW5mbywKLQkJCQkgY29ubmVjdG9yLT5udW1i ZXIgIT0gc3JjX2NsaWVudC0+bnVtYmVyKTsKKyBlcnJvcl9kZXN0OgorCWRlbGV0ZV9hbmRfdW5z dWJzY3JpYmVfcG9ydChzcmNfY2xpZW50LCBzcmNfcG9ydCwgc3VicywgdHJ1ZSwKKwkJCQkgICAg Y29ubmVjdG9yLT5udW1iZXIgIT0gc3JjX2NsaWVudC0+bnVtYmVyKTsKKyBlcnJvcjoKIAlrZnJl ZShzdWJzKTsKLQl1cF93cml0ZSgmZGVzdC0+bGlzdF9tdXRleCk7Ci0JdXBfd3JpdGUoJnNyYy0+ bGlzdF9tdXRleCk7CiAJcmV0dXJuIGVycjsKIH0KIAotCiAvKiByZW1vdmUgdGhlIGNvbm5lY3Rp b24gKi8KIGludCBzbmRfc2VxX3BvcnRfZGlzY29ubmVjdChzdHJ1Y3Qgc25kX3NlcV9jbGllbnQg KmNvbm5lY3RvciwKIAkJCSAgICBzdHJ1Y3Qgc25kX3NlcV9jbGllbnQgKnNyY19jbGllbnQsCkBA IC01NzIsMzcgKzYwOCwyOCBAQCBpbnQgc25kX3NlcV9wb3J0X2Rpc2Nvbm5lY3Qoc3RydWN0IHNu ZF9zZXFfY2xpZW50ICpjb25uZWN0b3IsCiAJCQkgICAgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJz Y3JpYmUgKmluZm8pCiB7CiAJc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzX2luZm8gKnNyYyA9ICZz cmNfcG9ydC0+Y19zcmM7Ci0Jc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzX2luZm8gKmRlc3QgPSAm ZGVzdF9wb3J0LT5jX2Rlc3Q7CiAJc3RydWN0IHNuZF9zZXFfc3Vic2NyaWJlcnMgKnN1YnM7CiAJ aW50IGVyciA9IC1FTk9FTlQ7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWRvd25fd3JpdGUo JnNyYy0+bGlzdF9tdXRleCk7Ci0JZG93bl93cml0ZV9uZXN0ZWQoJmRlc3QtPmxpc3RfbXV0ZXgs IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKLQogCS8qIGxvb2sgZm9yIHRoZSBjb25uZWN0aW9uICov CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzdWJzLCAmc3JjLT5saXN0X2hlYWQsIHNyY19saXN0KSB7 CiAJCWlmIChtYXRjaF9zdWJzX2luZm8oaW5mbywgJnN1YnMtPmluZm8pKSB7Ci0JCQl3cml0ZV9s b2NrX2lycXNhdmUoJnNyYy0+bGlzdF9sb2NrLCBmbGFncyk7Ci0JCQkvLyB3cml0ZV9sb2NrKCZk ZXN0LT5saXN0X2xvY2spOyAgLy8gbm8gbG9jayB5ZXQKLQkJCWxpc3RfZGVsKCZzdWJzLT5zcmNf bGlzdCk7Ci0JCQlsaXN0X2RlbCgmc3Vicy0+ZGVzdF9saXN0KTsKLQkJCS8vIHdyaXRlX3VubG9j aygmZGVzdC0+bGlzdF9sb2NrKTsKLQkJCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZzcmMtPmxp c3RfbG9jaywgZmxhZ3MpOwotCQkJc3JjLT5leGNsdXNpdmUgPSBkZXN0LT5leGNsdXNpdmUgPSAw OwotCQkJdW5zdWJzY3JpYmVfcG9ydChzcmNfY2xpZW50LCBzcmNfcG9ydCwgc3JjLCBpbmZvLAot CQkJCQkgY29ubmVjdG9yLT5udW1iZXIgIT0gc3JjX2NsaWVudC0+bnVtYmVyKTsKLQkJCXVuc3Vi c2NyaWJlX3BvcnQoZGVzdF9jbGllbnQsIGRlc3RfcG9ydCwgZGVzdCwgaW5mbywKLQkJCQkJIGNv bm5lY3Rvci0+bnVtYmVyICE9IGRlc3RfY2xpZW50LT5udW1iZXIpOwotCQkJa2ZyZWUoc3Vicyk7 CisJCQlhdG9taWNfZGVjKCZzdWJzLT5yZWZfY291bnQpOyAvKiBtYXJrIGFzIG5vdCByZWFkeSAq LwogCQkJZXJyID0gMDsKIAkJCWJyZWFrOwogCQl9CiAJfQotCi0JdXBfd3JpdGUoJmRlc3QtPmxp c3RfbXV0ZXgpOwogCXVwX3dyaXRlKCZzcmMtPmxpc3RfbXV0ZXgpOwotCXJldHVybiBlcnI7CisJ aWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisKKwlkZWxldGVfYW5kX3Vuc3Vic2NyaWJlX3Bv cnQoc3JjX2NsaWVudCwgc3JjX3BvcnQsIHN1YnMsIHRydWUsCisJCQkJICAgIGNvbm5lY3Rvci0+ bnVtYmVyICE9IHNyY19jbGllbnQtPm51bWJlcik7CisJZGVsZXRlX2FuZF91bnN1YnNjcmliZV9w b3J0KGRlc3RfY2xpZW50LCBkZXN0X3BvcnQsIHN1YnMsIGZhbHNlLAorCQkJCSAgICBjb25uZWN0 b3ItPm51bWJlciAhPSBkZXN0X2NsaWVudC0+bnVtYmVyKTsKKwlrZnJlZShzdWJzKTsKKwlyZXR1 cm4gMDsKIH0KIAogCmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3NlcS9zZXFfdGltZXIuYyBiL3Nv dW5kL2NvcmUvc2VxL3NlcV90aW1lci5jCmluZGV4IDI0ZDQ0YjJmNjFhYy4uNmVjMzBhOThhOTJh IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfdGltZXIuYworKysgYi9zb3VuZC9jb3Jl L3NlcS9zZXFfdGltZXIuYwpAQCAtOTIsNiArOTIsOSBAQCB2b2lkIHNuZF9zZXFfdGltZXJfZGVs ZXRlKHN0cnVjdCBzbmRfc2VxX3RpbWVyICoqdG1yKQogCiB2b2lkIHNuZF9zZXFfdGltZXJfZGVm YXVsdHMoc3RydWN0IHNuZF9zZXFfdGltZXIgKiB0bXIpCiB7CisJdW5zaWduZWQgbG9uZyBmbGFn czsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ0bXItPmxvY2ssIGZsYWdzKTsKIAkvKiBzZXR1cCBk ZWZhdWx0cyAqLwogCXRtci0+cHBxID0gOTY7CQkvKiA5NiBQUFEgKi8KIAl0bXItPnRlbXBvID0g NTAwMDAwOwkvKiAxMjAgQlBNICovCkBAIC0xMDcsMjEgKzExMCwyNSBAQCB2b2lkIHNuZF9zZXFf dGltZXJfZGVmYXVsdHMoc3RydWN0IHNuZF9zZXFfdGltZXIgKiB0bXIpCiAJdG1yLT5wcmVmZXJy ZWRfcmVzb2x1dGlvbiA9IHNlcV9kZWZhdWx0X3RpbWVyX3Jlc29sdXRpb247CiAKIAl0bXItPnNr ZXcgPSB0bXItPnNrZXdfYmFzZSA9IFNLRVdfQkFTRTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZ0bXItPmxvY2ssIGZsYWdzKTsKIH0KIAotdm9pZCBzbmRfc2VxX3RpbWVyX3Jlc2V0KHN0cnVj dCBzbmRfc2VxX3RpbWVyICogdG1yKQorc3RhdGljIHZvaWQgc2VxX3RpbWVyX3Jlc2V0KHN0cnVj dCBzbmRfc2VxX3RpbWVyICp0bXIpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCXNwaW5f bG9ja19pcnFzYXZlKCZ0bXItPmxvY2ssIGZsYWdzKTsKLQogCS8qIHJlc2V0IHRpbWUgJiBzb25n cG9zaXRpb24gKi8KIAl0bXItPmN1cl90aW1lLnR2X3NlYyA9IDA7CiAJdG1yLT5jdXJfdGltZS50 dl9uc2VjID0gMDsKIAogCXRtci0+dGljay5jdXJfdGljayA9IDA7CiAJdG1yLT50aWNrLmZyYWN0 aW9uID0gMDsKK30KKwordm9pZCBzbmRfc2VxX3RpbWVyX3Jlc2V0KHN0cnVjdCBzbmRfc2VxX3Rp bWVyICp0bXIpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAorCXNwaW5fbG9ja19pcnFzYXZl KCZ0bXItPmxvY2ssIGZsYWdzKTsKKwlzZXFfdGltZXJfcmVzZXQodG1yKTsKIAlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZ0bXItPmxvY2ssIGZsYWdzKTsKIH0KIApAQCAtMTQwLDggKzE0NywxMSBA QCBzdGF0aWMgdm9pZCBzbmRfc2VxX3RpbWVyX2ludGVycnVwdChzdHJ1Y3Qgc25kX3RpbWVyX2lu c3RhbmNlICp0aW1lcmksCiAJdG1yID0gcS0+dGltZXI7CiAJaWYgKHRtciA9PSBOVUxMKQogCQly ZXR1cm47Ci0JaWYgKCF0bXItPnJ1bm5pbmcpCisJc3Bpbl9sb2NrX2lycXNhdmUoJnRtci0+bG9j aywgZmxhZ3MpOworCWlmICghdG1yLT5ydW5uaW5nKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnRtci0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm47CisJfQogCiAJcmVzb2x1dGlvbiAqPSB0 aWNrczsKIAlpZiAodG1yLT5za2V3ICE9IHRtci0+c2tld19iYXNlKSB7CkBAIC0xNTAsOCArMTYw LDYgQEAgc3RhdGljIHZvaWQgc25kX3NlcV90aW1lcl9pbnRlcnJ1cHQoc3RydWN0IHNuZF90aW1l cl9pbnN0YW5jZSAqdGltZXJpLAogCQkJKCgocmVzb2x1dGlvbiAmIDB4ZmZmZikgKiB0bXItPnNr ZXcpID4+IDE2KTsKIAl9CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmdG1yLT5sb2NrLCBmbGFncyk7 Ci0KIAkvKiB1cGRhdGUgdGltZXIgKi8KIAlzbmRfc2VxX2luY190aW1lX25zZWMoJnRtci0+Y3Vy X3RpbWUsIHJlc29sdXRpb24pOwogCkBAIC0yOTgsMjYgKzMwNiwzMCBAQCBpbnQgc25kX3NlcV90 aW1lcl9vcGVuKHN0cnVjdCBzbmRfc2VxX3F1ZXVlICpxKQogCXQtPmNhbGxiYWNrID0gc25kX3Nl cV90aW1lcl9pbnRlcnJ1cHQ7CiAJdC0+Y2FsbGJhY2tfZGF0YSA9IHE7CiAJdC0+ZmxhZ3MgfD0g U05EUlZfVElNRVJfSUZMR19BVVRPOworCXNwaW5fbG9ja19pcnEoJnRtci0+bG9jayk7CiAJdG1y LT50aW1lcmkgPSB0OworCXNwaW5fdW5sb2NrX2lycSgmdG1yLT5sb2NrKTsKIAlyZXR1cm4gMDsK IH0KIAogaW50IHNuZF9zZXFfdGltZXJfY2xvc2Uoc3RydWN0IHNuZF9zZXFfcXVldWUgKnEpCiB7 CiAJc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcjsKKwlzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNl ICp0OwogCQogCXRtciA9IHEtPnRpbWVyOwogCWlmIChzbmRfQlVHX09OKCF0bXIpKQogCQlyZXR1 cm4gLUVJTlZBTDsKLQlpZiAodG1yLT50aW1lcmkpIHsKLQkJc25kX3RpbWVyX3N0b3AodG1yLT50 aW1lcmkpOwotCQlzbmRfdGltZXJfY2xvc2UodG1yLT50aW1lcmkpOwotCQl0bXItPnRpbWVyaSA9 IE5VTEw7Ci0JfQorCXNwaW5fbG9ja19pcnEoJnRtci0+bG9jayk7CisJdCA9IHRtci0+dGltZXJp OworCXRtci0+dGltZXJpID0gTlVMTDsKKwlzcGluX3VubG9ja19pcnEoJnRtci0+bG9jayk7CisJ aWYgKHQpCisJCXNuZF90aW1lcl9jbG9zZSh0KTsKIAlyZXR1cm4gMDsKIH0KIAotaW50IHNuZF9z ZXFfdGltZXJfc3RvcChzdHJ1Y3Qgc25kX3NlcV90aW1lciAqIHRtcikKK3N0YXRpYyBpbnQgc2Vx X3RpbWVyX3N0b3Aoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcikKIHsKIAlpZiAoISB0bXItPnRp bWVyaSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0zMjgsNiArMzQwLDE3IEBAIGludCBzbmRfc2Vx X3RpbWVyX3N0b3Aoc3RydWN0IHNuZF9zZXFfdGltZXIgKiB0bXIpCiAJcmV0dXJuIDA7CiB9CiAK K2ludCBzbmRfc2VxX3RpbWVyX3N0b3Aoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcikKK3sKKwl1 bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBlcnI7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdG1y LT5sb2NrLCBmbGFncyk7CisJZXJyID0gc2VxX3RpbWVyX3N0b3AodG1yKTsKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZ0bXItPmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gZXJyOworfQorCiBzdGF0 aWMgaW50IGluaXRpYWxpemVfdGltZXIoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcikKIHsKIAlz dHJ1Y3Qgc25kX3RpbWVyICp0OwpAQCAtMzYwLDEzICszODMsMTMgQEAgc3RhdGljIGludCBpbml0 aWFsaXplX3RpbWVyKHN0cnVjdCBzbmRfc2VxX3RpbWVyICp0bXIpCiAJcmV0dXJuIDA7CiB9CiAK LWludCBzbmRfc2VxX3RpbWVyX3N0YXJ0KHN0cnVjdCBzbmRfc2VxX3RpbWVyICogdG1yKQorc3Rh dGljIGludCBzZXFfdGltZXJfc3RhcnQoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcikKIHsKIAlp ZiAoISB0bXItPnRpbWVyaSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJaWYgKHRtci0+cnVubmluZykK LQkJc25kX3NlcV90aW1lcl9zdG9wKHRtcik7Ci0Jc25kX3NlcV90aW1lcl9yZXNldCh0bXIpOwor CQlzZXFfdGltZXJfc3RvcCh0bXIpOworCXNlcV90aW1lcl9yZXNldCh0bXIpOwogCWlmIChpbml0 aWFsaXplX3RpbWVyKHRtcikgPCAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlzbmRfdGltZXJfc3Rh cnQodG1yLT50aW1lcmksIHRtci0+dGlja3MpOwpAQCAtMzc1LDE0ICszOTgsMjUgQEAgaW50IHNu ZF9zZXFfdGltZXJfc3RhcnQoc3RydWN0IHNuZF9zZXFfdGltZXIgKiB0bXIpCiAJcmV0dXJuIDA7 CiB9CiAKLWludCBzbmRfc2VxX3RpbWVyX2NvbnRpbnVlKHN0cnVjdCBzbmRfc2VxX3RpbWVyICog dG1yKQoraW50IHNuZF9zZXFfdGltZXJfc3RhcnQoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcikK K3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBlcnI7CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmdG1yLT5sb2NrLCBmbGFncyk7CisJZXJyID0gc2VxX3RpbWVyX3N0YXJ0KHRtcik7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmdG1yLT5sb2NrLCBmbGFncyk7CisJcmV0dXJuIGVycjsKK30K Kworc3RhdGljIGludCBzZXFfdGltZXJfY29udGludWUoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRt cikKIHsKIAlpZiAoISB0bXItPnRpbWVyaSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJaWYgKHRtci0+ cnVubmluZykKIAkJcmV0dXJuIC1FQlVTWTsKIAlpZiAoISB0bXItPmluaXRpYWxpemVkKSB7Ci0J CXNuZF9zZXFfdGltZXJfcmVzZXQodG1yKTsKKwkJc2VxX3RpbWVyX3Jlc2V0KHRtcik7CiAJCWlm IChpbml0aWFsaXplX3RpbWVyKHRtcikgPCAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAt MzkyLDExICs0MjYsMjQgQEAgaW50IHNuZF9zZXFfdGltZXJfY29udGludWUoc3RydWN0IHNuZF9z ZXFfdGltZXIgKiB0bXIpCiAJcmV0dXJuIDA7CiB9CiAKK2ludCBzbmRfc2VxX3RpbWVyX2NvbnRp bnVlKHN0cnVjdCBzbmRfc2VxX3RpbWVyICp0bXIpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK KwlpbnQgZXJyOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnRtci0+bG9jaywgZmxhZ3MpOworCWVy ciA9IHNlcV90aW1lcl9jb250aW51ZSh0bXIpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRt ci0+bG9jaywgZmxhZ3MpOworCXJldHVybiBlcnI7Cit9CisKIC8qIHJldHVybiBjdXJyZW50ICdy ZWFsJyB0aW1lLiB1c2UgdGltZW9mZGF5KCkgdG8gZ2V0IGJldHRlciBncmFudWxhcml0eS4gKi8K IHNuZF9zZXFfcmVhbF90aW1lX3Qgc25kX3NlcV90aW1lcl9nZXRfY3VyX3RpbWUoc3RydWN0IHNu ZF9zZXFfdGltZXIgKnRtcikKIHsKIAlzbmRfc2VxX3JlYWxfdGltZV90IGN1cl90aW1lOworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdG1yLT5sb2NrLCBmbGFn cyk7CiAJY3VyX3RpbWUgPSB0bXItPmN1cl90aW1lOwogCWlmICh0bXItPnJ1bm5pbmcpIHsgCiAJ CXN0cnVjdCB0aW1ldmFsIHRtOwpAQCAtNDEyLDcgKzQ1OSw3IEBAIHNuZF9zZXFfcmVhbF90aW1l X3Qgc25kX3NlcV90aW1lcl9nZXRfY3VyX3RpbWUoc3RydWN0IHNuZF9zZXFfdGltZXIgKnRtcikK IAkJfQogCQlzbmRfc2VxX3Nhbml0eV9yZWFsX3RpbWUoJmN1cl90aW1lKTsKIAl9Ci0gICAgICAg ICAgICAgICAgCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdG1yLT5sb2NrLCBmbGFncyk7CiAJ cmV0dXJuIGN1cl90aW1lOwkKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX3Zp cm1pZGkuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV92aXJtaWRpLmMKaW5kZXggNGI1MGU2MDQyNzZk Li42YjM4ZTdjMjY0MWEgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV92aXJtaWRpLmMK KysrIGIvc291bmQvY29yZS9zZXEvc2VxX3Zpcm1pZGkuYwpAQCAtMTU1LDIxICsxNTUsMjYgQEAg c3RhdGljIHZvaWQgc25kX3Zpcm1pZGlfb3V0cHV0X3RyaWdnZXIoc3RydWN0IHNuZF9yYXdtaWRp X3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCXN0cnVjdCBzbmRfdmlybWlkaSAqdm1pZGkgPSBzdWJz dHJlYW0tPnJ1bnRpbWUtPnByaXZhdGVfZGF0YTsKIAlpbnQgY291bnQsIHJlczsKIAl1bnNpZ25l ZCBjaGFyIGJ1ZlszMl0sICpwYnVmOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlpZiAodXAp IHsKIAkJdm1pZGktPnRyaWdnZXIgPSAxOwogCQlpZiAodm1pZGktPnNlcV9tb2RlID09IFNORFJW X1ZJUk1JRElfU0VRX0RJU1BBVENIICYmCiAJCSAgICAhKHZtaWRpLT5yZGV2LT5mbGFncyAmIFNO RFJWX1ZJUk1JRElfU1VCU0NSSUJFKSkgewotCQkJc25kX3Jhd21pZGlfdHJhbnNtaXRfYWNrKHN1 YnN0cmVhbSwgc3Vic3RyZWFtLT5ydW50aW1lLT5idWZmZXJfc2l6ZSAtIHN1YnN0cmVhbS0+cnVu dGltZS0+YXZhaWwpOwotCQkJcmV0dXJuOwkJLyogaWdub3JlZCAqLworCQkJd2hpbGUgKHNuZF9y YXdtaWRpX3RyYW5zbWl0KHN1YnN0cmVhbSwgYnVmLAorCQkJCQkJICAgIHNpemVvZihidWYpKSA+ IDApIHsKKwkJCQkvKiBpZ25vcmVkICovCisJCQl9CisJCQlyZXR1cm47CiAJCX0KIAkJaWYgKHZt aWRpLT5ldmVudC50eXBlICE9IFNORFJWX1NFUV9FVkVOVF9OT05FKSB7CiAJCQlpZiAoc25kX3Nl cV9rZXJuZWxfY2xpZW50X2Rpc3BhdGNoKHZtaWRpLT5jbGllbnQsICZ2bWlkaS0+ZXZlbnQsIGlu X2F0b21pYygpLCAwKSA8IDApCiAJCQkJcmV0dXJuOwogCQkJdm1pZGktPmV2ZW50LnR5cGUgPSBT TkRSVl9TRVFfRVZFTlRfTk9ORTsKIAkJfQorCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3Vic3RyZWFt LT5ydW50aW1lLT5sb2NrLCBmbGFncyk7CiAJCXdoaWxlICgxKSB7Ci0JCQljb3VudCA9IHNuZF9y YXdtaWRpX3RyYW5zbWl0X3BlZWsoc3Vic3RyZWFtLCBidWYsIHNpemVvZihidWYpKTsKKwkJCWNv dW50ID0gX19zbmRfcmF3bWlkaV90cmFuc21pdF9wZWVrKHN1YnN0cmVhbSwgYnVmLCBzaXplb2Yo YnVmKSk7CiAJCQlpZiAoY291bnQgPD0gMCkKIAkJCQlicmVhazsKIAkJCXBidWYgPSBidWY7CkBA IC0xNzksMTYgKzE4NCwxOCBAQCBzdGF0aWMgdm9pZCBzbmRfdmlybWlkaV9vdXRwdXRfdHJpZ2dl cihzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJCQkJCXNuZF9taWRp X2V2ZW50X3Jlc2V0X2VuY29kZSh2bWlkaS0+cGFyc2VyKTsKIAkJCQkJY29udGludWU7CiAJCQkJ fQotCQkJCXNuZF9yYXdtaWRpX3RyYW5zbWl0X2FjayhzdWJzdHJlYW0sIHJlcyk7CisJCQkJX19z bmRfcmF3bWlkaV90cmFuc21pdF9hY2soc3Vic3RyZWFtLCByZXMpOwogCQkJCXBidWYgKz0gcmVz OwogCQkJCWNvdW50IC09IHJlczsKIAkJCQlpZiAodm1pZGktPmV2ZW50LnR5cGUgIT0gU05EUlZf U0VRX0VWRU5UX05PTkUpIHsKIAkJCQkJaWYgKHNuZF9zZXFfa2VybmVsX2NsaWVudF9kaXNwYXRj aCh2bWlkaS0+Y2xpZW50LCAmdm1pZGktPmV2ZW50LCBpbl9hdG9taWMoKSwgMCkgPCAwKQotCQkJ CQkJcmV0dXJuOworCQkJCQkJZ290byBvdXQ7CiAJCQkJCXZtaWRpLT5ldmVudC50eXBlID0gU05E UlZfU0VRX0VWRU5UX05PTkU7CiAJCQkJfQogCQkJfQogCQl9CisJb3V0OgorCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZzdWJzdHJlYW0tPnJ1bnRpbWUtPmxvY2ssIGZsYWdzKTsKIAl9IGVsc2Ug ewogCQl2bWlkaS0+dHJpZ2dlciA9IDA7CiAJfQpAQCAtMjU0LDkgKzI2MSwxMyBAQCBzdGF0aWMg aW50IHNuZF92aXJtaWRpX291dHB1dF9vcGVuKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0g KnN1YnN0cmVhbSkKICAqLwogc3RhdGljIGludCBzbmRfdmlybWlkaV9pbnB1dF9jbG9zZShzdHJ1 Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CisJc3RydWN0IHNuZF92aXJt aWRpX2RldiAqcmRldiA9IHN1YnN0cmVhbS0+cm1pZGktPnByaXZhdGVfZGF0YTsKIAlzdHJ1Y3Qg c25kX3Zpcm1pZGkgKnZtaWRpID0gc3Vic3RyZWFtLT5ydW50aW1lLT5wcml2YXRlX2RhdGE7Ci0J c25kX21pZGlfZXZlbnRfZnJlZSh2bWlkaS0+cGFyc2VyKTsKKworCXdyaXRlX2xvY2tfaXJxKCZy ZGV2LT5maWxlbGlzdF9sb2NrKTsKIAlsaXN0X2RlbCgmdm1pZGktPmxpc3QpOworCXdyaXRlX3Vu bG9ja19pcnEoJnJkZXYtPmZpbGVsaXN0X2xvY2spOworCXNuZF9taWRpX2V2ZW50X2ZyZWUodm1p ZGktPnBhcnNlcik7CiAJc3Vic3RyZWFtLT5ydW50aW1lLT5wcml2YXRlX2RhdGEgPSBOVUxMOwog CWtmcmVlKHZtaWRpKTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvdGltZXIu YyBiL3NvdW5kL2NvcmUvdGltZXIuYwppbmRleCA3NmJkZmFjY2I4ZGUuLmJlYjQxZWNiMjczMCAx MDA2NDQKLS0tIGEvc291bmQvY29yZS90aW1lci5jCisrKyBiL3NvdW5kL2NvcmUvdGltZXIuYwpA QCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyB2b2lkIHNuZF90aW1lcl9ub3RpZnkxKHN0cnVjdCBz bmRfdGltZXJfaW5zdGFuY2UgKnRpLCBpbnQgZXZlbnQpCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnRp bWVyLT5sb2NrLCBmbGFncyk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0cywgJnRpLT5zbGF2ZV9h Y3RpdmVfaGVhZCwgYWN0aXZlX2xpc3QpCiAJCWlmICh0cy0+Y2NhbGxiYWNrKQotCQkJdHMtPmNj YWxsYmFjayh0aSwgZXZlbnQgKyAxMDAsICZ0c3RhbXAsIHJlc29sdXRpb24pOworCQkJdHMtPmNj YWxsYmFjayh0cywgZXZlbnQgKyAxMDAsICZ0c3RhbXAsIHJlc29sdXRpb24pOwogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnRpbWVyLT5sb2NrLCBmbGFncyk7CiB9CiAKQEAgLTQ0Myw2ICs0NDMs MTAgQEAgc3RhdGljIGludCBzbmRfdGltZXJfc3RhcnRfc2xhdmUoc3RydWN0IHNuZF90aW1lcl9p bnN0YW5jZSAqdGltZXJpKQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlzcGluX2xvY2tfaXJx c2F2ZSgmc2xhdmVfYWN0aXZlX2xvY2ssIGZsYWdzKTsKKwlpZiAodGltZXJpLT5mbGFncyAmIFNO RFJWX1RJTUVSX0lGTEdfUlVOTklORykgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbGF2 ZV9hY3RpdmVfbG9jaywgZmxhZ3MpOworCQlyZXR1cm4gLUVCVVNZOworCX0KIAl0aW1lcmktPmZs YWdzIHw9IFNORFJWX1RJTUVSX0lGTEdfUlVOTklORzsKIAlpZiAodGltZXJpLT5tYXN0ZXIgJiYg dGltZXJpLT50aW1lcikgewogCQlzcGluX2xvY2soJnRpbWVyaS0+dGltZXItPmxvY2spOwpAQCAt NDY3LDE4ICs0NzEsMjYgQEAgaW50IHNuZF90aW1lcl9zdGFydChzdHJ1Y3Qgc25kX3RpbWVyX2lu c3RhbmNlICp0aW1lcmksIHVuc2lnbmVkIGludCB0aWNrcykKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ aWYgKHRpbWVyaS0+ZmxhZ3MgJiBTTkRSVl9USU1FUl9JRkxHX1NMQVZFKSB7CiAJCXJlc3VsdCA9 IHNuZF90aW1lcl9zdGFydF9zbGF2ZSh0aW1lcmkpOwotCQlzbmRfdGltZXJfbm90aWZ5MSh0aW1l cmksIFNORFJWX1RJTUVSX0VWRU5UX1NUQVJUKTsKKwkJaWYgKHJlc3VsdCA+PSAwKQorCQkJc25k X3RpbWVyX25vdGlmeTEodGltZXJpLCBTTkRSVl9USU1FUl9FVkVOVF9TVEFSVCk7CiAJCXJldHVy biByZXN1bHQ7CiAJfQogCXRpbWVyID0gdGltZXJpLT50aW1lcjsKIAlpZiAodGltZXIgPT0gTlVM TCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJnRpbWVyLT5sb2NrLCBm bGFncyk7CisJaWYgKHRpbWVyaS0+ZmxhZ3MgJiAoU05EUlZfVElNRVJfSUZMR19SVU5OSU5HIHwK KwkJCSAgICAgU05EUlZfVElNRVJfSUZMR19TVEFSVCkpIHsKKwkJcmVzdWx0ID0gLUVCVVNZOwor CQlnb3RvIHVubG9jazsKKwl9CiAJdGltZXJpLT50aWNrcyA9IHRpbWVyaS0+Y3RpY2tzID0gdGlj a3M7CiAJdGltZXJpLT5wdGlja3MgPSAwOwogCXJlc3VsdCA9IHNuZF90aW1lcl9zdGFydDEodGlt ZXIsIHRpbWVyaSwgdGlja3MpOworIHVubG9jazoKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0 aW1lci0+bG9jaywgZmxhZ3MpOwotCXNuZF90aW1lcl9ub3RpZnkxKHRpbWVyaSwgU05EUlZfVElN RVJfRVZFTlRfU1RBUlQpOworCWlmIChyZXN1bHQgPj0gMCkKKwkJc25kX3RpbWVyX25vdGlmeTEo dGltZXJpLCBTTkRSVl9USU1FUl9FVkVOVF9TVEFSVCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApA QCAtNDk0LDkgKzUwNiwxNyBAQCBzdGF0aWMgaW50IF9zbmRfdGltZXJfc3RvcChzdHJ1Y3Qgc25k X3RpbWVyX2luc3RhbmNlICogdGltZXJpLAogCWlmICh0aW1lcmktPmZsYWdzICYgU05EUlZfVElN RVJfSUZMR19TTEFWRSkgewogCQlpZiAoIWtlZXBfZmxhZykgewogCQkJc3Bpbl9sb2NrX2lycXNh dmUoJnNsYXZlX2FjdGl2ZV9sb2NrLCBmbGFncyk7CisJCQlpZiAoISh0aW1lcmktPmZsYWdzICYg U05EUlZfVElNRVJfSUZMR19SVU5OSU5HKSkgeworCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnNsYXZlX2FjdGl2ZV9sb2NrLCBmbGFncyk7CisJCQkJcmV0dXJuIC1FQlVTWTsKKwkJCX0KKwkJ CWlmICh0aW1lcmktPnRpbWVyKQorCQkJCXNwaW5fbG9jaygmdGltZXJpLT50aW1lci0+bG9jayk7 CiAJCQl0aW1lcmktPmZsYWdzICY9IH5TTkRSVl9USU1FUl9JRkxHX1JVTk5JTkc7CiAJCQlsaXN0 X2RlbF9pbml0KCZ0aW1lcmktPmFja19saXN0KTsKIAkJCWxpc3RfZGVsX2luaXQoJnRpbWVyaS0+ YWN0aXZlX2xpc3QpOworCQkJaWYgKHRpbWVyaS0+dGltZXIpCisJCQkJc3Bpbl91bmxvY2soJnRp bWVyaS0+dGltZXItPmxvY2spOwogCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2xhdmVfYWN0 aXZlX2xvY2ssIGZsYWdzKTsKIAkJfQogCQlnb3RvIF9fZW5kOwpAQCAtNTA1LDYgKzUyNSwxMSBA QCBzdGF0aWMgaW50IF9zbmRfdGltZXJfc3RvcChzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNlICog dGltZXJpLAogCWlmICghdGltZXIpCiAJCXJldHVybiAtRUlOVkFMOwogCXNwaW5fbG9ja19pcnFz YXZlKCZ0aW1lci0+bG9jaywgZmxhZ3MpOworCWlmICghKHRpbWVyaS0+ZmxhZ3MgJiAoU05EUlZf VElNRVJfSUZMR19SVU5OSU5HIHwKKwkJCSAgICAgICBTTkRSVl9USU1FUl9JRkxHX1NUQVJUKSkp IHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZXItPmxvY2ssIGZsYWdzKTsKKwkJcmV0 dXJuIC1FQlVTWTsKKwl9CiAJbGlzdF9kZWxfaW5pdCgmdGltZXJpLT5hY2tfbGlzdCk7CiAJbGlz dF9kZWxfaW5pdCgmdGltZXJpLT5hY3RpdmVfbGlzdCk7CiAJaWYgKCh0aW1lcmktPmZsYWdzICYg U05EUlZfVElNRVJfSUZMR19SVU5OSU5HKSAmJgpAQCAtNTcwLDEwICs1OTUsMTUgQEAgaW50IHNu ZF90aW1lcl9jb250aW51ZShzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNlICp0aW1lcmkpCiAJaWYg KCEgdGltZXIpCiAJCXJldHVybiAtRUlOVkFMOwogCXNwaW5fbG9ja19pcnFzYXZlKCZ0aW1lci0+ bG9jaywgZmxhZ3MpOworCWlmICh0aW1lcmktPmZsYWdzICYgU05EUlZfVElNRVJfSUZMR19SVU5O SU5HKSB7CisJCXJlc3VsdCA9IC1FQlVTWTsKKwkJZ290byB1bmxvY2s7CisJfQogCWlmICghdGlt ZXJpLT5jdGlja3MpCiAJCXRpbWVyaS0+Y3RpY2tzID0gMTsKIAl0aW1lcmktPnB0aWNrcyA9IDA7 CiAJcmVzdWx0ID0gc25kX3RpbWVyX3N0YXJ0MSh0aW1lciwgdGltZXJpLCB0aW1lci0+c3RpY2tz KTsKKyB1bmxvY2s6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZXItPmxvY2ssIGZsYWdz KTsKIAlzbmRfdGltZXJfbm90aWZ5MSh0aW1lcmksIFNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVF KTsKIAlyZXR1cm4gcmVzdWx0OwpAQCAtNzAxLDggKzczMSw4IEBAIHZvaWQgc25kX3RpbWVyX2lu dGVycnVwdChzdHJ1Y3Qgc25kX3RpbWVyICogdGltZXIsIHVuc2lnbmVkIGxvbmcgdGlja3NfbGVm dCkKIAkJCXRpLT5jdGlja3MgPSB0aS0+dGlja3M7CiAJCX0gZWxzZSB7CiAJCQl0aS0+ZmxhZ3Mg Jj0gflNORFJWX1RJTUVSX0lGTEdfUlVOTklORzsKLQkJCWlmICgtLXRpbWVyLT5ydW5uaW5nKQot CQkJCWxpc3RfZGVsX2luaXQoJnRpLT5hY3RpdmVfbGlzdCk7CisJCQktLXRpbWVyLT5ydW5uaW5n OworCQkJbGlzdF9kZWxfaW5pdCgmdGktPmFjdGl2ZV9saXN0KTsKIAkJfQogCQlpZiAoKHRpbWVy LT5ody5mbGFncyAmIFNORFJWX1RJTUVSX0hXX1RBU0tMRVQpIHx8CiAJCSAgICAodGktPmZsYWdz ICYgU05EUlZfVElNRVJfSUZMR19GQVNUKSkKQEAgLTE4NjAsNiArMTg5MCw3IEBAIHN0YXRpYyBz c2l6ZV90IHNuZF90aW1lcl91c2VyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2Vy ICpidWZmZXIsCiB7CiAJc3RydWN0IHNuZF90aW1lcl91c2VyICp0dTsKIAlsb25nIHJlc3VsdCA9 IDAsIHVuaXQ7CisJaW50IHFoZWFkOwogCWludCBlcnIgPSAwOwogCiAJdHUgPSBmaWxlLT5wcml2 YXRlX2RhdGE7CkBAIC0xODcxLDcgKzE5MDIsNyBAQCBzdGF0aWMgc3NpemVfdCBzbmRfdGltZXJf dXNlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCiAJCQlp ZiAoKGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKSAhPSAwIHx8IHJlc3VsdCA+IDApIHsKIAkJ CQllcnIgPSAtRUFHQUlOOwotCQkJCWJyZWFrOworCQkJCWdvdG8gX2Vycm9yOwogCQkJfQogCiAJ CQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOwpAQCAtMTg4NiwzOCArMTkx NywzMyBAQCBzdGF0aWMgc3NpemVfdCBzbmRfdGltZXJfdXNlcl9yZWFkKHN0cnVjdCBmaWxlICpm aWxlLCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCiAJCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVu dCkpIHsKIAkJCQllcnIgPSAtRVJFU1RBUlRTWVM7Ci0JCQkJYnJlYWs7CisJCQkJZ290byBfZXJy b3I7CiAJCQl9CiAJCX0KIAorCQlxaGVhZCA9IHR1LT5xaGVhZCsrOworCQl0dS0+cWhlYWQgJT0g dHUtPnF1ZXVlX3NpemU7CiAJCXNwaW5fdW5sb2NrX2lycSgmdHUtPnFsb2NrKTsKLQkJaWYgKGVy ciA8IDApCi0JCQlnb3RvIF9lcnJvcjsKIAogCQlpZiAodHUtPnRyZWFkKSB7Ci0JCQlpZiAoY29w eV90b191c2VyKGJ1ZmZlciwgJnR1LT50cXVldWVbdHUtPnFoZWFkKytdLAotCQkJCQkgc2l6ZW9m KHN0cnVjdCBzbmRfdGltZXJfdHJlYWQpKSkgeworCQkJaWYgKGNvcHlfdG9fdXNlcihidWZmZXIs ICZ0dS0+dHF1ZXVlW3FoZWFkXSwKKwkJCQkJIHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVyX3RyZWFk KSkpCiAJCQkJZXJyID0gLUVGQVVMVDsKLQkJCQlnb3RvIF9lcnJvcjsKLQkJCX0KIAkJfSBlbHNl IHsKLQkJCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCAmdHUtPnF1ZXVlW3R1LT5xaGVhZCsrXSwK LQkJCQkJIHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVyX3JlYWQpKSkgeworCQkJaWYgKGNvcHlfdG9f dXNlcihidWZmZXIsICZ0dS0+cXVldWVbcWhlYWRdLAorCQkJCQkgc2l6ZW9mKHN0cnVjdCBzbmRf dGltZXJfcmVhZCkpKQogCQkJCWVyciA9IC1FRkFVTFQ7Ci0JCQkJZ290byBfZXJyb3I7Ci0JCQl9 CiAJCX0KIAotCQl0dS0+cWhlYWQgJT0gdHUtPnF1ZXVlX3NpemU7Ci0KLQkJcmVzdWx0ICs9IHVu aXQ7Ci0JCWJ1ZmZlciArPSB1bml0OwotCiAJCXNwaW5fbG9ja19pcnEoJnR1LT5xbG9jayk7CiAJ CXR1LT5xdXNlZC0tOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gX2Vycm9yOworCQlyZXN1bHQg Kz0gdW5pdDsKKwkJYnVmZmVyICs9IHVuaXQ7CiAJfQotCXNwaW5fdW5sb2NrX2lycSgmdHUtPnFs b2NrKTsKICBfZXJyb3I6CisJc3Bpbl91bmxvY2tfaXJxKCZ0dS0+cWxvY2spOwogCXJldHVybiBy ZXN1bHQgPiAwID8gcmVzdWx0IDogZXJyOwogfQogCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJz L2R1bW15LmMgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmMKaW5kZXggOTdmMWY5M2VkMjc1Li4zNjYy YzYyNjdmNTUgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvZHVtbXkuYworKysgYi9zb3VuZC9k cml2ZXJzL2R1bW15LmMKQEAgLTEwOSw2ICsxMDksOSBAQCBzdHJ1Y3QgZHVtbXlfdGltZXJfb3Bz IHsKIAlzbmRfcGNtX3VmcmFtZXNfdCAoKnBvaW50ZXIpKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVh bSAqKTsKIH07CiAKKyNkZWZpbmUgZ2V0X2R1bW15X29wcyhzdWJzdHJlYW0pIFwKKwkoKihjb25z dCBzdHJ1Y3QgZHVtbXlfdGltZXJfb3BzICoqKShzdWJzdHJlYW0pLT5ydW50aW1lLT5wcml2YXRl X2RhdGEpCisKIHN0cnVjdCBkdW1teV9tb2RlbCB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQg KCpwbGF5YmFja19jb25zdHJhaW50cykoc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSk7 CkBAIC0xMzQsNyArMTM3LDYgQEAgc3RydWN0IHNuZF9kdW1teSB7CiAJc3BpbmxvY2tfdCBtaXhl cl9sb2NrOwogCWludCBtaXhlcl92b2x1bWVbTUlYRVJfQUREUl9MQVNUKzFdWzJdOwogCWludCBj YXB0dXJlX3NvdXJjZVtNSVhFUl9BRERSX0xBU1QrMV1bMl07Ci0JY29uc3Qgc3RydWN0IGR1bW15 X3RpbWVyX29wcyAqdGltZXJfb3BzOwogfTsKIAogLyoKQEAgLTIyOCw2ICsyMzAsOCBAQCBzdHJ1 Y3QgZHVtbXlfbW9kZWwgKmR1bW15X21vZGVsc1tdID0gewogICovCiAKIHN0cnVjdCBkdW1teV9z eXN0aW1lcl9wY20geworCS8qIG9wcyBtdXN0IGJlIHRoZSBmaXJzdCBpdGVtICovCisJY29uc3Qg c3RydWN0IGR1bW15X3RpbWVyX29wcyAqdGltZXJfb3BzOwogCXNwaW5sb2NrX3QgbG9jazsKIAlz dHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKIAl1bnNpZ25lZCBsb25nIGJhc2VfdGltZTsKQEAgLTM2 NSw2ICszNjksOCBAQCBzdGF0aWMgc3RydWN0IGR1bW15X3RpbWVyX29wcyBkdW1teV9zeXN0aW1l cl9vcHMgPSB7CiAgKi8KIAogc3RydWN0IGR1bW15X2hydGltZXJfcGNtIHsKKwkvKiBvcHMgbXVz dCBiZSB0aGUgZmlyc3QgaXRlbSAqLworCWNvbnN0IHN0cnVjdCBkdW1teV90aW1lcl9vcHMgKnRp bWVyX29wczsKIAlrdGltZV90IGJhc2VfdGltZTsKIAlrdGltZV90IHBlcmlvZF90aW1lOwogCWF0 b21pY190IHJ1bm5pbmc7CkBAIC00OTEsMzEgKzQ5NywyNSBAQCBzdGF0aWMgc3RydWN0IGR1bW15 X3RpbWVyX29wcyBkdW1teV9ocnRpbWVyX29wcyA9IHsKIAogc3RhdGljIGludCBkdW1teV9wY21f dHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNtZCkKIHsK LQlzdHJ1Y3Qgc25kX2R1bW15ICpkdW1teSA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3Ry ZWFtKTsKLQogCXN3aXRjaCAoY21kKSB7CiAJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVEFSVDoK IAljYXNlIFNORFJWX1BDTV9UUklHR0VSX1JFU1VNRToKLQkJcmV0dXJuIGR1bW15LT50aW1lcl9v cHMtPnN0YXJ0KHN1YnN0cmVhbSk7CisJCXJldHVybiBnZXRfZHVtbXlfb3BzKHN1YnN0cmVhbSkt PnN0YXJ0KHN1YnN0cmVhbSk7CiAJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9QOgogCWNhc2Ug U05EUlZfUENNX1RSSUdHRVJfU1VTUEVORDoKLQkJcmV0dXJuIGR1bW15LT50aW1lcl9vcHMtPnN0 b3Aoc3Vic3RyZWFtKTsKKwkJcmV0dXJuIGdldF9kdW1teV9vcHMoc3Vic3RyZWFtKS0+c3RvcChz dWJzdHJlYW0pOwogCX0KIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAogc3RhdGljIGludCBkdW1teV9w Y21fcHJlcGFyZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIHsKLQlzdHJ1 Y3Qgc25kX2R1bW15ICpkdW1teSA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsK LQotCXJldHVybiBkdW1teS0+dGltZXJfb3BzLT5wcmVwYXJlKHN1YnN0cmVhbSk7CisJcmV0dXJu IGdldF9kdW1teV9vcHMoc3Vic3RyZWFtKS0+cHJlcGFyZShzdWJzdHJlYW0pOwogfQogCiBzdGF0 aWMgc25kX3BjbV91ZnJhbWVzX3QgZHVtbXlfcGNtX3BvaW50ZXIoc3RydWN0IHNuZF9wY21fc3Vi c3RyZWFtICpzdWJzdHJlYW0pCiB7Ci0Jc3RydWN0IHNuZF9kdW1teSAqZHVtbXkgPSBzbmRfcGNt X3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7Ci0KLQlyZXR1cm4gZHVtbXktPnRpbWVyX29wcy0+ cG9pbnRlcihzdWJzdHJlYW0pOworCXJldHVybiBnZXRfZHVtbXlfb3BzKHN1YnN0cmVhbSktPnBv aW50ZXIoc3Vic3RyZWFtKTsKIH0KIAogc3RhdGljIHN0cnVjdCBzbmRfcGNtX2hhcmR3YXJlIGR1 bW15X3BjbV9oYXJkd2FyZSA9IHsKQEAgLTU2MSwxNyArNTYxLDE5IEBAIHN0YXRpYyBpbnQgZHVt bXlfcGNtX29wZW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJc3RydWN0 IHNuZF9kdW1teSAqZHVtbXkgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CiAJ c3RydWN0IGR1bW15X21vZGVsICptb2RlbCA9IGR1bW15LT5tb2RlbDsKIAlzdHJ1Y3Qgc25kX3Bj bV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOworCWNvbnN0IHN0cnVjdCBk dW1teV90aW1lcl9vcHMgKm9wczsKIAlpbnQgZXJyOwogCi0JZHVtbXktPnRpbWVyX29wcyA9ICZk dW1teV9zeXN0aW1lcl9vcHM7CisJb3BzID0gJmR1bW15X3N5c3RpbWVyX29wczsKICNpZmRlZiBD T05GSUdfSElHSF9SRVNfVElNRVJTCiAJaWYgKGhydGltZXIpCi0JCWR1bW15LT50aW1lcl9vcHMg PSAmZHVtbXlfaHJ0aW1lcl9vcHM7CisJCW9wcyA9ICZkdW1teV9ocnRpbWVyX29wczsKICNlbmRp ZgogCi0JZXJyID0gZHVtbXktPnRpbWVyX29wcy0+Y3JlYXRlKHN1YnN0cmVhbSk7CisJZXJyID0g b3BzLT5jcmVhdGUoc3Vic3RyZWFtKTsKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKKwln ZXRfZHVtbXlfb3BzKHN1YnN0cmVhbSkgPSBvcHM7CiAKIAlydW50aW1lLT5odyA9IGR1bW15LT5w Y21faHc7CiAJaWYgKHN1YnN0cmVhbS0+cGNtLT5kZXZpY2UgJiAxKSB7CkBAIC01OTMsNyArNTk1 LDcgQEAgc3RhdGljIGludCBkdW1teV9wY21fb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSkKIAkJCWVyciA9IG1vZGVsLT5jYXB0dXJlX2NvbnN0cmFpbnRzKHN1YnN0cmVh bS0+cnVudGltZSk7CiAJfQogCWlmIChlcnIgPCAwKSB7Ci0JCWR1bW15LT50aW1lcl9vcHMtPmZy ZWUoc3Vic3RyZWFtKTsKKwkJZ2V0X2R1bW15X29wcyhzdWJzdHJlYW0pLT5mcmVlKHN1YnN0cmVh bSk7CiAJCXJldHVybiBlcnI7CiAJfQogCXJldHVybiAwOwpAQCAtNjAxLDggKzYwMyw3IEBAIHN0 YXRpYyBpbnQgZHVtbXlfcGNtX29wZW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJl YW0pCiAKIHN0YXRpYyBpbnQgZHVtbXlfcGNtX2Nsb3NlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVh bSAqc3Vic3RyZWFtKQogewotCXN0cnVjdCBzbmRfZHVtbXkgKmR1bW15ID0gc25kX3BjbV9zdWJz dHJlYW1fY2hpcChzdWJzdHJlYW0pOwotCWR1bW15LT50aW1lcl9vcHMtPmZyZWUoc3Vic3RyZWFt KTsKKwlnZXRfZHVtbXlfb3BzKHN1YnN0cmVhbSktPmZyZWUoc3Vic3RyZWFtKTsKIAlyZXR1cm4g MDsKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvdXNiL21pZGkuYyBiL3NvdW5kL3VzYi9taWRpLmMK aW5kZXggMDc1ZjMyNDgzNzY5Li43Yjg1MzI0NTNjNGYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi9t aWRpLmMKKysrIGIvc291bmQvdXNiL21pZGkuYwpAQCAtMjI4OSw3ICsyMjg5LDYgQEAgaW50IHNu ZF91c2JtaWRpX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJZWxzZQogCQllcnIgPSBz bmRfdXNibWlkaV9jcmVhdGVfZW5kcG9pbnRzKHVtaWRpLCBlbmRwb2ludHMpOwogCWlmIChlcnIg PCAwKSB7Ci0JCXNuZF91c2JtaWRpX2ZyZWUodW1pZGkpOwogCQlyZXR1cm4gZXJyOwogCX0KIApk aWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3VpL2Jyb3dzZXJzL2Fubm90YXRlLmMgYi90b29s cy9wZXJmL3V0aWwvdWkvYnJvd3NlcnMvYW5ub3RhdGUuYwppbmRleCAwNTc1OTA1ZDEyMDUuLjZk N2U3Y2E3YzI1MSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3VpL2Jyb3dzZXJzL2Fubm90 YXRlLmMKKysrIGIvdG9vbHMvcGVyZi91dGlsL3VpL2Jyb3dzZXJzL2Fubm90YXRlLmMKQEAgLTI3 NiwxMSArMjc2LDExIEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVfYnJvd3Nlcl9fcnVuKHN0cnVjdCBh bm5vdGF0ZV9icm93c2VyICpzZWxmLCBpbnQgZXZpZHgsCiAJCQkJbmQgPSBzZWxmLT5jdXJyX2hv dDsKIAkJCWJyZWFrOwogCQljYXNlIEtfVU5UQUI6Ci0JCQlpZiAobmQgIT0gTlVMTCkKKwkJCWlm IChuZCAhPSBOVUxMKSB7CiAJCQkJbmQgPSByYl9uZXh0KG5kKTsKIAkJCQlpZiAobmQgPT0gTlVM TCkKIAkJCQkJbmQgPSByYl9maXJzdCgmc2VsZi0+ZW50cmllcyk7Ci0JCQllbHNlCisJCQl9IGVs c2UKIAkJCQluZCA9IHNlbGYtPmN1cnJfaG90OwogCQkJYnJlYWs7CiAJCWNhc2UgJ0gnOgo= --=-0qZLOPfddWyNJPn+ROpU-- --=-7728qzalRE/GXsA4UYnv Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIVAwUAVsz9z+e/yOyVhhEJAQrVwRAAh9/6wbhSaZQi2Fk4RFywoPyVyZUH7t7B t+EILCcTYEoikr+1aIvcSs9bMA8gE0nr9p5Hq+euZWOxyxHaWaa6LSai7A/1Em+M yHh6ZOP4cu1qfCCVbin9WEaKzl8FuHeGys0RPvmx+WU/MP2ztHB1o53WTlrsD7hw rsWrV8Vz5+I5E3zBHX4cIPTR+QkaFiPjqDOguv8vZJSjKbk/e62lWXAxN9CCe45e RNvllszCDce3bgN28mVa6XEhWzUqzYCcLJsN0rW9+Hv5kNutJDixh6+BkkzFfOL6 BTR8x4yrneMhcedywM2gq2M++wq4yqteP/aC7rQ+DDtbkXaDajzYMGllAbJapfRl R0386AUJu8UENbDBj0yVVJjFkuLddDR8IJuf4ulQCbG6PibOIGZYe+aIpYZVvbP+ 8wDPbqgSNxfNe219lmGMmqrQ31ijaWcOuMWIr9dGEl9tRTfbrifjRNvrmMznirds L9RkLaJzrA916oDR/rTGs57EEhr+ZH1oviaqvXBo4CKPAYuoOnauxQvphFK8p3zK QDBNyM2A5HlABoN8egMRFJZr3N4rIoXMBANPIXVSj+Qzdj7098PfcoPdLdSjVMZT 5lVcR5yomKh2FRCPr2fci+yIL9+GRczCc5IKvwOyQmdLAtnorZULXPBzhMd75amS 3X1lc/KC4do= =WAMA -----END PGP SIGNATURE----- --=-7728qzalRE/GXsA4UYnv--