From: "Loc Ho" Subject: [PATCH 1/1] CryptoAPI: Add Async Hash Support Date: Tue, 22 Apr 2008 10:23:23 -0700 Message-ID: <0CA0A16855646F4FA96D25A158E299D6045B3153@SDCEXCHANGE01.ad.amcc.com> References: <20080117202735.GA22733@Chamillionaire.breakpoint.cc> <0CA0A16855646F4FA96D25A158E299D603FCC4D7@SDCEXCHANGE01.ad.amcc.com> <20080118230721.GA30470@Chamillionaire.breakpoint.cc> <002301c85c96$32a67a40$5c05420a@amcc.com> <20080122231818.GB6920@Chamillionaire.breakpoint.cc> <002d01c85d66$11e1d7c0$5c05420a@amcc.com> <004601c85ecd$1eb53d80$5c05420a@amcc.com> <004a01c85efc$56f2ee70$5c05420a@amcc.com> <20080313114230.GC8393@gondor.apana.org.au> <0CA0A16855646F4FA96D25A158E299D6044D6442@SDCEXCHANGE01.ad.amcc.com> <20080422111635.GA19543@gondor.apana.org.au> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C8A49D.A361A62C" Cc: To: "Herbert Xu" Return-path: Received: from sdcmail01-ext1.amcc.com ([198.137.200.72]:1694 "EHLO sdcmail01.amcc.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755919AbYDVRXz (ORCPT ); Tue, 22 Apr 2008 13:23:55 -0400 Content-class: urn:content-classes:message In-Reply-To: <20080422111635.GA19543@gondor.apana.org.au> Sender: linux-crypto-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. ------_=_NextPart_001_01C8A49D.A361A62C Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, They are attached instead inline until I figure out how to not wrap long line. -Loc=20 -----Original Message----- From: Herbert Xu [mailto:herbert@gondor.apana.org.au]=20 Sent: Tuesday, April 22, 2008 4:17 AM To: Loc Ho Cc: linux-crypto@vger.kernel.org Subject: Re: [PATCH 1/1] CryptoAPI: Add Async Hash Support On Wed, Apr 09, 2008 at 07:03:45PM -0700, Loc Ho wrote: > Hi Herbert, >=20 > I just sync with cryptodev git and don't see async hash/digest added. > Have it being committed? OK I've looked at your patch and I think it's nearly perfect. The only trouble is that it doesn't apply because your mailer has corrupted it :) So if you could resend it with a mailer that doesn't wrap long lines it would be great. ------_=_NextPart_001_01C8A49D.A361A62C Content-Type: application/octet-stream; name="0001-Add-Async-Hash-Support.patch" Content-Transfer-Encoding: base64 Content-Description: 0001-Add-Async-Hash-Support.patch Content-Disposition: attachment; filename="0001-Add-Async-Hash-Support.patch" RnJvbSBlNWQ2N2MzNjcwZjFlYzE1MzM5YTkyY2MyOTEwMjdjMGEwNTlhYWVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb2MgSG8gPGxob0BhbWNjLmNvbT4KRGF0ZTogVGh1LCAyNCBK YW4gMjAwOCAxODoxMzoyOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBBc3luYyBIYXNoIFN1 cHBvcnQKCi0tLQogY3J5cHRvL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgICAxICsKIGNyeXB0 by9haGFzaC5jICAgICAgICAgICAgICAgIHwgIDE1MSArKysrKysrKysrKysrKysrKwogY3J5cHRv L2FsZ2FwaS5jICAgICAgICAgICAgICAgfCAgICAyICstCiBjcnlwdG8vYXBpLmMgICAgICAgICAg ICAgICAgICB8ICAgIDIgKy0KIGNyeXB0by9jcnlwdGQuYyAgICAgICAgICAgICAgIHwgIDIyMCAr KysrKysrKysrKysrKysrKysrKysrKysrCiBjcnlwdG8vZGlnZXN0LmMgICAgICAgICAgICAgICB8 ICAgIDQgKy0KIGNyeXB0by9oYXNoLmMgICAgICAgICAgICAgICAgIHwgIDEwMiArKysrKysrKysr Ky0KIGNyeXB0by90Y3J5cHQuYyAgICAgICAgICAgICAgIHwgIDE0MiArKysrKysrKysrKysrKysr LQogZHJpdmVycy9jcnlwdG8vS2NvbmZpZyAgICAgICAgfCAgICA4ICstCiBkcml2ZXJzL2NyeXB0 by9NYWtlZmlsZSAgICAgICB8ICAgIDEgKwogZHJpdmVycy9jcnlwdG8vYWhhc2hfc2FtcGxlLmMg fCAgMzU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRl L2NyeXB0by9hbGdhcGkuaCAgICAgICB8ICAgMzYgKysrKwogaW5jbHVkZS9saW51eC9jcnlwdG8u aCAgICAgICAgfCAgMTgzICsrKysrKysrKysrKysrKysrKysrLQogMTMgZmlsZXMgY2hhbmdlZCwg MTE4MyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBj cnlwdG8vYWhhc2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY3J5cHRvL2FoYXNoX3Nh bXBsZS5jCgpkaWZmIC0tZ2l0IGEvY3J5cHRvL01ha2VmaWxlIGIvY3J5cHRvL01ha2VmaWxlCmlu ZGV4IDQ4Yzc1ODMuLmE5YzNkMDkgMTAwNjQ0Ci0tLSBhL2NyeXB0by9NYWtlZmlsZQorKysgYi9j cnlwdG8vTWFrZWZpbGUKQEAgLTE4LDYgKzE4LDcgQEAgb2JqLSQoQ09ORklHX0NSWVBUT19CTEtD SVBIRVIpICs9IGVzZXFpdi5vCiBvYmotJChDT05GSUdfQ1JZUFRPX1NFUUlWKSArPSBzZXFpdi5v CiAKIGNyeXB0b19oYXNoLW9ianMgOj0gaGFzaC5vCitjcnlwdG9faGFzaC1vYmpzICs9IGFoYXNo Lm8KIG9iai0kKENPTkZJR19DUllQVE9fSEFTSCkgKz0gY3J5cHRvX2hhc2gubwogCiBvYmotJChD T05GSUdfQ1JZUFRPX01BTkFHRVIpICs9IGNyeXB0b21nci5vCmRpZmYgLS1naXQgYS9jcnlwdG8v YWhhc2guYyBiL2NyeXB0by9haGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmU5YmY3MmYKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vYWhhc2guYwpAQCAtMCwwICsx LDE1MSBAQAorLyoKKyAqIEFzeW5jaHJvbm91cyBDcnlwdG9ncmFwaGljIEhhc2ggb3BlcmF0aW9u cy4KKyAqCisgKiBUaGlzIGlzIHRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBvZiBoYXNoLmMgd2l0 aCBub3RpZmljYXRpb24gb2YKKyAqIGNvbXBsZXRpb24gdmlhIGEgY2FsbGJhY2suCisgKgorICog Q29weXJpZ2h0IChjKSAyMDA4IExvYyBIbyA8bGhvQGFtY2MuY29tPgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICogYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxjcnlwdG8vYWxnYXBpLmg+Cisj aW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKworI2luY2x1ZGUgImlu dGVybmFsLmgiCisKK3N0YXRpYyBpbnQgYWhhc2hfc2V0a2V5X3VuYWxpZ25lZChzdHJ1Y3QgY3J5 cHRvX2FoYXNoICp0Zm0sIGNvbnN0IHU4ICprZXksCisJCQkJdW5zaWduZWQgaW50IGtleWxlbikK K3sKKwlzdHJ1Y3QgYWhhc2hfYWxnICphaGFzaCA9IGNyeXB0b19haGFzaF9hbGcodGZtKTsKKwl1 bnNpZ25lZCBsb25nIGFsaWdubWFzayA9IGNyeXB0b19haGFzaF9hbGlnbm1hc2sodGZtKTsKKwlp bnQgcmV0OworCXU4ICpidWZmZXIsICphbGlnbmJ1ZmZlcjsKKwl1bnNpZ25lZCBsb25nIGFic2l6 ZTsKKworCWFic2l6ZSA9IGtleWxlbiArIGFsaWdubWFzazsKKwlidWZmZXIgPSBrbWFsbG9jKGFi c2l6ZSwgR0ZQX0FUT01JQyk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJ YWxpZ25idWZmZXIgPSAodTggKilBTElHTigodW5zaWduZWQgbG9uZylidWZmZXIsIGFsaWdubWFz ayArIDEpOworCW1lbWNweShhbGlnbmJ1ZmZlciwga2V5LCBrZXlsZW4pOworCXJldCA9IGFoYXNo LT5zZXRrZXkodGZtLCBhbGlnbmJ1ZmZlciwga2V5bGVuKTsKKwltZW1zZXQoYWxpZ25idWZmZXIs IDAsIGtleWxlbik7CisJa2ZyZWUoYnVmZmVyKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg aW50IGFoYXNoX3NldGtleShzdHJ1Y3QgY3J5cHRvX2FoYXNoICp0Zm0sIGNvbnN0IHU4ICprZXks CisJCQl1bnNpZ25lZCBpbnQga2V5bGVuKQoreworCXN0cnVjdCBhaGFzaF9hbGcgKmFoYXNoID0g Y3J5cHRvX2FoYXNoX2FsZyh0Zm0pOworCXVuc2lnbmVkIGxvbmcgYWxpZ25tYXNrID0gY3J5cHRv X2FoYXNoX2FsaWdubWFzayh0Zm0pOworCisJaWYgKCh1bnNpZ25lZCBsb25nKWtleSAmIGFsaWdu bWFzaykKKwkJcmV0dXJuIGFoYXNoX3NldGtleV91bmFsaWduZWQodGZtLCBrZXksIGtleWxlbik7 CisKKwlyZXR1cm4gYWhhc2gtPnNldGtleSh0Zm0sIGtleSwga2V5bGVuKTsKK30KKworc3RhdGlj IHVuc2lnbmVkIGludCBjcnlwdG9fYWhhc2hfY3R4c2l6ZShzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxn LCB1MzIgdHlwZSwKKwkJCQkJdTMyIG1hc2spCit7CisJcmV0dXJuIGFsZy0+Y3JhX2N0eHNpemU7 Cit9CisKK3N0YXRpYyBpbnQgY3J5cHRvX2luaXRfYWhhc2hfb3BzKHN0cnVjdCBjcnlwdG9fdGZt ICp0Zm0sIHUzMiB0eXBlLCB1MzIgbWFzaykKK3sKKwlzdHJ1Y3QgYWhhc2hfYWxnICphbGcgPSAm dGZtLT5fX2NydF9hbGctPmNyYV9haGFzaDsKKwlzdHJ1Y3QgYWhhc2hfdGZtICpjcnQgICA9ICZ0 Zm0tPmNydF9haGFzaDsKKworCWlmIChhbGctPmRpZ2VzdHNpemUgPiBjcnlwdG9fdGZtX2FsZ19i bG9ja3NpemUodGZtKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljcnQtPmluaXQgPSBhbGctPmlu aXQ7CisJY3J0LT51cGRhdGUgPSBhbGctPnVwZGF0ZTsKKwljcnQtPmZpbmFsICA9IGFsZy0+Zmlu YWw7CisJY3J0LT5kaWdlc3QgPSBhbGctPmRpZ2VzdDsKKwljcnQtPnNldGtleSA9IGFoYXNoX3Nl dGtleTsKKwljcnQtPmJhc2UgICA9IF9fY3J5cHRvX2FoYXNoX2Nhc3QodGZtKTsKKwljcnQtPmRp Z2VzdHNpemUgPSBhbGctPmRpZ2VzdHNpemU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgY3J5cHRvX2FoYXNoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgY3J5cHRvX2Fs ZyAqYWxnKQorCV9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKK3N0YXRpYyB2b2lkIGNyeXB0b19h aGFzaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGNyeXB0b19hbGcgKmFsZykKK3sK KwlzZXFfcHJpbnRmKG0sICJ0eXBlICAgICAgICAgOiBoYXNoXG4iKTsKKwlzZXFfcHJpbnRmKG0s ICJhc3luYyAgICAgICAgOiAlc1xuIiwgYWxnLT5jcmFfZmxhZ3MgJiBDUllQVE9fQUxHX0FTWU5D ID8KKwkJCQkJICAgICAieWVzIiA6ICJubyIpOworCXNlcV9wcmludGYobSwgImJsb2Nrc2l6ZSAg ICA6ICV1XG4iLCBhbGctPmNyYV9ibG9ja3NpemUpOworCXNlcV9wcmludGYobSwgImRpZ2VzdHNp emUgICA6ICV1XG4iLCBhbGctPmNyYV9oYXNoLmRpZ2VzdHNpemUpOworfQorCitjb25zdCBzdHJ1 Y3QgY3J5cHRvX3R5cGUgY3J5cHRvX2FoYXNoX3R5cGUgPSB7CisJLmN0eHNpemUgPSBjcnlwdG9f YWhhc2hfY3R4c2l6ZSwKKwkuaW5pdCA9IGNyeXB0b19pbml0X2FoYXNoX29wcywKKyNpZmRlZiBD T05GSUdfUFJPQ19GUworCS5zaG93ID0gY3J5cHRvX2FoYXNoX3Nob3csCisjZW5kaWYKK307CitF WFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fYWhhc2hfdHlwZSk7CisKK3N0cnVjdCBjcnlwdG9fYWhh c2ggKmNyeXB0b19hbGxvY19haGFzaChjb25zdCBjaGFyICphbGdfbmFtZSwKKwkJCQkJdTMyIHR5 cGUsIHUzMiBtYXNrKQoreworCXN0cnVjdCBjcnlwdG9fdGZtICp0Zm07CisJaW50IGVycjsKKwor CW1hc2sgJj0gfkNSWVBUT19BTEdfVFlQRV9NQVNLOworCW1hc2sgfD0gQ1JZUFRPX0FMR19UWVBF X0hBU0hfTUFTSzsKKworCWZvciAoOzspIHsKKwkJc3RydWN0IGNyeXB0b19hbGcgKmFsZzsKKwor CQl0eXBlICY9IH5DUllQVE9fQUxHX1RZUEVfTUFTSzsKKwkJdHlwZSB8PSBDUllQVE9fQUxHX1RZ UEVfQUhBU0g7CisJCWFsZyA9IGNyeXB0b19hbGdfbW9kX2xvb2t1cChhbGdfbmFtZSwgdHlwZSwg bWFzayk7CisJCWlmIChJU19FUlIoYWxnKSkgeworCQkJdHlwZSAmPSB+Q1JZUFRPX0FMR19UWVBF X01BU0s7CisJCQl0eXBlIHw9IENSWVBUT19BTEdfVFlQRV9IQVNIOworCQkJYWxnID0gY3J5cHRv X2FsZ19tb2RfbG9va3VwKGFsZ19uYW1lLCB0eXBlLCBtYXNrKTsKKwkJCWlmIChJU19FUlIoYWxn KSkgeworCQkJCWVyciA9IFBUUl9FUlIoYWxnKTsKKwkJCQlnb3RvIGVycjsKKwkJCX0KKwkJfQor CisJCXRmbSA9IF9fY3J5cHRvX2FsbG9jX3RmbShhbGcsIHR5cGUsIG1hc2sgfCBDUllQVE9fQUxH X0FTWU5DKTsKKwkJaWYgKCFJU19FUlIodGZtKSkKKwkJCXJldHVybiBfX2NyeXB0b19haGFzaF9j YXN0KHRmbSk7CisKKwkJY3J5cHRvX21vZF9wdXQoYWxnKTsKKwkJZXJyID0gUFRSX0VSUih0Zm0p OworCitlcnI6CisJCWlmIChlcnIgIT0gLUVBR0FJTikKKwkJCWJyZWFrOworCQlpZiAoc2lnbmFs X3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCWVyciA9IC1FSU5UUjsKKwkJCWJyZWFrOworCQl9CisJ fQorCisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b19h bGxvY19haGFzaCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElP TigiQXN5bmNocm9ub3VzIGNyeXB0b2dyYXBoaWMgaGFzaCB0eXBlIik7CmRpZmYgLS1naXQgYS9j cnlwdG8vYWxnYXBpLmMgYi9jcnlwdG8vYWxnYXBpLmMKaW5kZXggZTY1Y2I1MC4uNWZkYjk3NCAx MDA2NDQKLS0tIGEvY3J5cHRvL2FsZ2FwaS5jCisrKyBiL2NyeXB0by9hbGdhcGkuYwpAQCAtMTgy LDcgKzE4Miw3IEBAIHN0YXRpYyBpbnQgX19jcnlwdG9fcmVnaXN0ZXJfYWxnKHN0cnVjdCBjcnlw dG9fYWxnICphbGcsCiAKIAkJY3J5cHRvX3JlbW92ZV9zcGF3bnMoJnEtPmNyYV91c2VycywgbGlz dCwgYWxnLT5jcmFfZmxhZ3MpOwogCX0KLQkKKwogCWxpc3RfYWRkKCZhbGctPmNyYV9saXN0LCAm Y3J5cHRvX2FsZ19saXN0KTsKIAogCWNyeXB0b19ub3RpZnkoQ1JZUFRPX01TR19BTEdfUkVHSVNU RVIsIGFsZyk7CmRpZmYgLS1naXQgYS9jcnlwdG8vYXBpLmMgYi9jcnlwdG8vYXBpLmMKaW5kZXgg YTI0OTZkMS4uYzMyMTNmNCAxMDA2NDQKLS0tIGEvY3J5cHRvL2FwaS5jCisrKyBiL2NyeXB0by9h cGkuYwpAQCAtMTAsNyArMTAsNyBAQAogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAgKiB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSAKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKICAq IGFueSBsYXRlciB2ZXJzaW9uLgogICoKICAqLwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2NyeXB0ZC5j IGIvY3J5cHRvL2NyeXB0ZC5jCmluZGV4IDA3NDI5OGYuLmNkZjU3YzggMTAwNjQ0Ci0tLSBhL2Ny eXB0by9jcnlwdGQuYworKysgYi9jcnlwdG8vY3J5cHRkLmMKQEAgLTQ1LDYgKzQ1LDE0IEBAIHN0 cnVjdCBjcnlwdGRfYmxrY2lwaGVyX3JlcXVlc3RfY3R4IHsKIAljcnlwdG9fY29tcGxldGlvbl90 IGNvbXBsZXRlOwogfTsKIAorc3RydWN0IGNyeXB0ZF9oYXNoX2N0eCB7CisJc3RydWN0IGNyeXB0 b19oYXNoICpjaGlsZDsKK307CisKK3N0cnVjdCBjcnlwdGRfaGFzaF9yZXF1ZXN0X2N0eCB7CisJ Y3J5cHRvX2NvbXBsZXRpb25fdCBjb21wbGV0ZTsKKwlzdHJ1Y3QgaGFzaF9kZXNjICAgIGRlc2M7 Cit9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBjcnlwdGRfc3RhdGUgKmNyeXB0ZF9nZXRfc3Rh dGUoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKIHsKQEAgLTI1OSw2ICsyNjcsMjE2IEBAIG91dF9w dXRfYWxnOgogCXJldHVybiBpbnN0OwogfQogCitzdGF0aWMgaW50IGNyeXB0ZF9oYXNoX2luaXRf dGZtKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pCit7CisJc3RydWN0IGNyeXB0b19pbnN0YW5jZSAq aW5zdCA9IGNyeXB0b190Zm1fYWxnX2luc3RhbmNlKHRmbSk7CisJc3RydWN0IGNyeXB0ZF9pbnN0 YW5jZV9jdHggKmljdHggPSBjcnlwdG9faW5zdGFuY2VfY3R4KGluc3QpOworCXN0cnVjdCBjcnlw dG9fc3Bhd24gKnNwYXduID0gJmljdHgtPnNwYXduOworCXN0cnVjdCBjcnlwdGRfaGFzaF9jdHgg KmN0eCA9IGNyeXB0b190Zm1fY3R4KHRmbSk7CisJc3RydWN0IGNyeXB0b19oYXNoICpjaXBoZXI7 CisKKwljaXBoZXIgPSBjcnlwdG9fc3Bhd25faGFzaChzcGF3bik7CisJaWYgKElTX0VSUihjaXBo ZXIpKQorCQlyZXR1cm4gUFRSX0VSUihjaXBoZXIpOworCisJY3R4LT5jaGlsZCA9IGNpcGhlcjsK Kwl0Zm0tPmNydF9haGFzaC5yZXFzaXplID0KKwkJc2l6ZW9mKHN0cnVjdCBjcnlwdGRfaGFzaF9y ZXF1ZXN0X2N0eCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGNyeXB0ZF9oYXNoX2V4 aXRfdGZtKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pCit7CisJc3RydWN0IGNyeXB0ZF9oYXNoX2N0 eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgodGZtKTsKKwlzdHJ1Y3QgY3J5cHRkX3N0YXRlICpzdGF0 ZSA9IGNyeXB0ZF9nZXRfc3RhdGUodGZtKTsKKwlpbnQgYWN0aXZlOworCisJbXV0ZXhfbG9jaygm c3RhdGUtPm11dGV4KTsKKwlhY3RpdmUgPSBhaGFzaF90Zm1faW5fcXVldWUoJnN0YXRlLT5xdWV1 ZSwKKwkJCQlfX2NyeXB0b19haGFzaF9jYXN0KHRmbSkpOworCW11dGV4X3VubG9jaygmc3RhdGUt Pm11dGV4KTsKKworCUJVR19PTihhY3RpdmUpOworCisJY3J5cHRvX2ZyZWVfaGFzaChjdHgtPmNo aWxkKTsKK30KKworc3RhdGljIGludCBjcnlwdGRfaGFzaF9zZXRrZXkoc3RydWN0IGNyeXB0b19h aGFzaCAqcGFyZW50LAorCQkJCSAgIGNvbnN0IHU4ICprZXksIHVuc2lnbmVkIGludCBrZXlsZW4p Cit7CisJc3RydWN0IGNyeXB0ZF9oYXNoX2N0eCAqY3R4ICAgPSBjcnlwdG9fYWhhc2hfY3R4KHBh cmVudCk7CisJc3RydWN0IGNyeXB0b19oYXNoICAgICAqY2hpbGQgPSBjdHgtPmNoaWxkOworCWlu dCBlcnI7CisKKwljcnlwdG9faGFzaF9jbGVhcl9mbGFncyhjaGlsZCwgQ1JZUFRPX1RGTV9SRVFf TUFTSyk7CisJY3J5cHRvX2hhc2hfc2V0X2ZsYWdzKGNoaWxkLCBjcnlwdG9fYWhhc2hfZ2V0X2Zs YWdzKHBhcmVudCkgJgorCQkJCQkgIENSWVBUT19URk1fUkVRX01BU0spOworCWVyciA9IGNyeXB0 b19oYXNoX3NldGtleShjaGlsZCwga2V5LCBrZXlsZW4pOworCWNyeXB0b19haGFzaF9zZXRfZmxh Z3MocGFyZW50LCBjcnlwdG9faGFzaF9nZXRfZmxhZ3MoY2hpbGQpICYKKwkJCQkJICAgIENSWVBU T19URk1fUkVTX01BU0spOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgY3J5cHRkX2hh c2hfaW5pdChzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKQoreworCXN0cnVjdCBjcnlwdGRfaGFz aF9jdHggKmN0eCAgID0gYWhhc2hfcmVxdWVzdF9jdHgocmVxKTsKKwlzdHJ1Y3QgY3J5cHRvX2hh c2ggICAgICpjaGlsZCA9IGN0eC0+Y2hpbGQ7CisJc3RydWN0IGNyeXB0ZF9oYXNoX3JlcXVlc3Rf Y3R4ICpyY3R4ID0gYWhhc2hfcmVxdWVzdF9jdHgocmVxKTsKKwlpbnQgZXJyOworCisJZXJyID0g Y3J5cHRvX2hhc2hfY3J0KGNoaWxkKS0+aW5pdCgmcmN0eC0+ZGVzYyk7CisJcmN0eC0+ZGVzYy5m bGFncyB8PSBDUllQVE9fVEZNX1JFUV9NQVlfU0xFRVA7CisJcmV0dXJuIGVycjsKK30KKworc3Rh dGljIGludCBjcnlwdGRfaGFzaF9lbnF1ZXVlKHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEsCisJ CQkJY3J5cHRvX2NvbXBsZXRpb25fdCBjb21wbGV0ZSkKK3sKKwlzdHJ1Y3QgY3J5cHRkX2hhc2hf cmVxdWVzdF9jdHggKnJjdHggPSBhaGFzaF9yZXF1ZXN0X2N0eChyZXEpOworCXN0cnVjdCBjcnlw dG9fYWhhc2ggKnRmbSA9IGNyeXB0b19haGFzaF9yZXF0Zm0ocmVxKTsKKwlzdHJ1Y3QgY3J5cHRk X3N0YXRlICpzdGF0ZSA9CisJCWNyeXB0ZF9nZXRfc3RhdGUoY3J5cHRvX2FoYXNoX3RmbSh0Zm0p KTsKKwlpbnQgZXJyOworCisJcmN0eC0+Y29tcGxldGUgPSByZXEtPmJhc2UuY29tcGxldGU7CisJ cmVxLT5iYXNlLmNvbXBsZXRlID0gY29tcGxldGU7CisKKwlzcGluX2xvY2tfYmgoJnN0YXRlLT5s b2NrKTsKKwllcnIgPSBhaGFzaF9lbnF1ZXVlX3JlcXVlc3QoJnN0YXRlLT5xdWV1ZSwgcmVxKTsK KwlzcGluX3VubG9ja19iaCgmc3RhdGUtPmxvY2spOworCisJd2FrZV91cF9wcm9jZXNzKHN0YXRl LT50YXNrKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBjcnlwdGRfaGFzaF91cGRh dGUoc3RydWN0IGNyeXB0b19hc3luY19yZXF1ZXN0ICpyZXFfYXN5bmMsIGludCBlcnIpCit7CisJ c3RydWN0IGNyeXB0ZF9oYXNoX2N0eCAqY3R4ICAgPSBjcnlwdG9fdGZtX2N0eChyZXFfYXN5bmMt PnRmbSk7CisJc3RydWN0IGNyeXB0b19oYXNoICAgICAqY2hpbGQgPSBjdHgtPmNoaWxkOworCXN0 cnVjdCBhaGFzaF9yZXF1ZXN0ICAgICpyZXEgPSBhaGFzaF9yZXF1ZXN0X2Nhc3QocmVxX2FzeW5j KTsKKwlzdHJ1Y3QgY3J5cHRkX2hhc2hfcmVxdWVzdF9jdHggKnJjdHg7CisKKwlyY3R4ID0gYWhh c2hfcmVxdWVzdF9jdHgocmVxKTsKKworCWlmICh1bmxpa2VseShlcnIgPT0gLUVJTlBST0dSRVNT KSkgeworCQlyY3R4LT5jb21wbGV0ZSgmcmVxLT5iYXNlLCBlcnIpOworCQlyZXR1cm47CisJfQor CisJZXJyID0gY3J5cHRvX2hhc2hfY3J0KGNoaWxkKS0+dXBkYXRlKCZyY3R4LT5kZXNjLAorCQkJ CQkJcmVxLT5zcmMsCisJCQkJCQlyZXEtPm5ieXRlcyk7CisKKwlyZXEtPmJhc2UuY29tcGxldGUg PSByY3R4LT5jb21wbGV0ZTsKKworCWxvY2FsX2JoX2Rpc2FibGUoKTsKKwlyZXEtPmJhc2UuY29t cGxldGUoJnJlcS0+YmFzZSwgZXJyKTsKKwlsb2NhbF9iaF9lbmFibGUoKTsKK30KKworc3RhdGlj IGludCBjcnlwdGRfaGFzaF91cGRhdGVfZW5xdWV1ZShzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVx KQoreworCXJldHVybiBjcnlwdGRfaGFzaF9lbnF1ZXVlKHJlcSwgY3J5cHRkX2hhc2hfdXBkYXRl KTsKK30KKworc3RhdGljIHZvaWQgY3J5cHRkX2hhc2hfZmluYWwoc3RydWN0IGNyeXB0b19hc3lu Y19yZXF1ZXN0ICpyZXFfYXN5bmMsIGludCBlcnIpCit7CisJc3RydWN0IGNyeXB0ZF9oYXNoX2N0 eCAqY3R4ICAgPSBjcnlwdG9fdGZtX2N0eChyZXFfYXN5bmMtPnRmbSk7CisJc3RydWN0IGNyeXB0 b19oYXNoICAgICAqY2hpbGQgPSBjdHgtPmNoaWxkOworCXN0cnVjdCBhaGFzaF9yZXF1ZXN0ICAg ICpyZXEgPSBhaGFzaF9yZXF1ZXN0X2Nhc3QocmVxX2FzeW5jKTsKKwlzdHJ1Y3QgY3J5cHRkX2hh c2hfcmVxdWVzdF9jdHggKnJjdHg7CisKKwlyY3R4ID0gYWhhc2hfcmVxdWVzdF9jdHgocmVxKTsK KworCWlmICh1bmxpa2VseShlcnIgPT0gLUVJTlBST0dSRVNTKSkgeworCQlyY3R4LT5jb21wbGV0 ZSgmcmVxLT5iYXNlLCBlcnIpOworCQlyZXR1cm47CisJfQorCisJZXJyID0gY3J5cHRvX2hhc2hf Y3J0KGNoaWxkKS0+ZmluYWwoJnJjdHgtPmRlc2MsIHJlcS0+cmVzdWx0KTsKKworCXJlcS0+YmFz ZS5jb21wbGV0ZSA9IHJjdHgtPmNvbXBsZXRlOworCisJbG9jYWxfYmhfZGlzYWJsZSgpOworCXJl cS0+YmFzZS5jb21wbGV0ZSgmcmVxLT5iYXNlLCBlcnIpOworCWxvY2FsX2JoX2VuYWJsZSgpOwor fQorCitzdGF0aWMgaW50IGNyeXB0ZF9oYXNoX2ZpbmFsX2VucXVldWUoc3RydWN0IGFoYXNoX3Jl cXVlc3QgKnJlcSkKK3sKKwlyZXR1cm4gY3J5cHRkX2hhc2hfZW5xdWV1ZShyZXEsIGNyeXB0ZF9o YXNoX2ZpbmFsKTsKK30KKworc3RhdGljIHZvaWQgY3J5cHRkX2hhc2hfZGlnZXN0KHN0cnVjdCBj cnlwdG9fYXN5bmNfcmVxdWVzdCAqcmVxX2FzeW5jLCBpbnQgZXJyKQoreworCXN0cnVjdCBjcnlw dGRfaGFzaF9jdHggKmN0eCAgID0gY3J5cHRvX3RmbV9jdHgocmVxX2FzeW5jLT50Zm0pOworCXN0 cnVjdCBjcnlwdG9faGFzaCAgICAgKmNoaWxkID0gY3R4LT5jaGlsZDsKKwlzdHJ1Y3QgYWhhc2hf cmVxdWVzdCAgICAqcmVxID0gYWhhc2hfcmVxdWVzdF9jYXN0KHJlcV9hc3luYyk7CisJc3RydWN0 IGNyeXB0ZF9oYXNoX3JlcXVlc3RfY3R4ICpyY3R4OworCXN0cnVjdCBoYXNoX2Rlc2MgZGVzYzsK KworCXJjdHggPSBhaGFzaF9yZXF1ZXN0X2N0eChyZXEpOworCisJaWYgKHVubGlrZWx5KGVyciA9 PSAtRUlOUFJPR1JFU1MpKSB7CisJCXJjdHgtPmNvbXBsZXRlKCZyZXEtPmJhc2UsIGVycik7CisJ CXJldHVybjsKKwl9CisKKwlkZXNjLnRmbSA9IGNoaWxkOworCWRlc2MuZmxhZ3MgPSBDUllQVE9f VEZNX1JFUV9NQVlfU0xFRVA7CisKKwllcnIgPSBjcnlwdG9faGFzaF9jcnQoY2hpbGQpLT5kaWdl c3QoJmRlc2MsCisJCQkJCQlyZXEtPnNyYywKKwkJCQkJCXJlcS0+bmJ5dGVzLAorCQkJCQkJcmVx LT5yZXN1bHQpOworCisJcmVxLT5iYXNlLmNvbXBsZXRlID0gcmN0eC0+Y29tcGxldGU7CisKKwls b2NhbF9iaF9kaXNhYmxlKCk7CisJcmVxLT5iYXNlLmNvbXBsZXRlKCZyZXEtPmJhc2UsIGVycik7 CisJbG9jYWxfYmhfZW5hYmxlKCk7Cit9CisKK3N0YXRpYyBpbnQgY3J5cHRkX2hhc2hfZGlnZXN0 X2VucXVldWUoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3sKKwlyZXR1cm4gY3J5cHRkX2hh c2hfZW5xdWV1ZShyZXEsIGNyeXB0ZF9oYXNoX2RpZ2VzdCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg Y3J5cHRvX2luc3RhbmNlICpjcnlwdGRfYWxsb2NfaGFzaCgKKwlzdHJ1Y3QgcnRhdHRyICoqdGIs IHN0cnVjdCBjcnlwdGRfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBjcnlwdG9faW5zdGFuY2Ug Kmluc3Q7CisJc3RydWN0IGNyeXB0b19hbGcgKmFsZzsKKworCWFsZyA9IGNyeXB0b19nZXRfYXR0 cl9hbGcodGIsIENSWVBUT19BTEdfVFlQRV9IQVNILAorCQkJCSAgQ1JZUFRPX0FMR19UWVBFX01B U0spOworCWlmIChJU19FUlIoYWxnKSkKKwkJcmV0dXJuIEVSUl9QVFIoUFRSX0VSUihhbGcpKTsK KworCWluc3QgPSBjcnlwdGRfYWxsb2NfaW5zdGFuY2UoYWxnLCBzdGF0ZSk7CisJaWYgKElTX0VS UihpbnN0KSkKKwkJZ290byBvdXRfcHV0X2FsZzsKKworCWluc3QtPmFsZy5jcmFfZmxhZ3MgPSBD UllQVE9fQUxHX1RZUEVfQUhBU0ggfCBDUllQVE9fQUxHX0FTWU5DOworCWluc3QtPmFsZy5jcmFf dHlwZSA9ICZjcnlwdG9fYWhhc2hfdHlwZTsKKworCWluc3QtPmFsZy5jcmFfYWhhc2guZGlnZXN0 c2l6ZSA9IGFsZy0+Y3JhX2hhc2guZGlnZXN0c2l6ZTsKKwlpbnN0LT5hbGcuY3JhX2N0eHNpemUg PSBzaXplb2Yoc3RydWN0IGNyeXB0ZF9oYXNoX2N0eCk7CisKKwlpbnN0LT5hbGcuY3JhX2luaXQg PSBjcnlwdGRfaGFzaF9pbml0X3RmbTsKKwlpbnN0LT5hbGcuY3JhX2V4aXQgPSBjcnlwdGRfaGFz aF9leGl0X3RmbTsKKworCWluc3QtPmFsZy5jcmFfYWhhc2guaW5pdCAgID0gY3J5cHRkX2hhc2hf aW5pdDsKKwlpbnN0LT5hbGcuY3JhX2FoYXNoLnVwZGF0ZSA9IGNyeXB0ZF9oYXNoX3VwZGF0ZV9l bnF1ZXVlOworCWluc3QtPmFsZy5jcmFfYWhhc2guZmluYWwgID0gY3J5cHRkX2hhc2hfZmluYWxf ZW5xdWV1ZTsKKwlpbnN0LT5hbGcuY3JhX2FoYXNoLnNldGtleSA9IGNyeXB0ZF9oYXNoX3NldGtl eTsKKwlpbnN0LT5hbGcuY3JhX2FoYXNoLmRpZ2VzdCA9IGNyeXB0ZF9oYXNoX2RpZ2VzdF9lbnF1 ZXVlOworCitvdXRfcHV0X2FsZzoKKwljcnlwdG9fbW9kX3B1dChhbGcpOworCXJldHVybiBpbnN0 OworfQorCiBzdGF0aWMgc3RydWN0IGNyeXB0ZF9zdGF0ZSBzdGF0ZTsKIAogc3RhdGljIHN0cnVj dCBjcnlwdG9faW5zdGFuY2UgKmNyeXB0ZF9hbGxvYyhzdHJ1Y3QgcnRhdHRyICoqdGIpCkBAIC0y NzIsNiArNDkwLDggQEAgc3RhdGljIHN0cnVjdCBjcnlwdG9faW5zdGFuY2UgKmNyeXB0ZF9hbGxv YyhzdHJ1Y3QgcnRhdHRyICoqdGIpCiAJc3dpdGNoIChhbGd0LT50eXBlICYgYWxndC0+bWFzayAm IENSWVBUT19BTEdfVFlQRV9NQVNLKSB7CiAJY2FzZSBDUllQVE9fQUxHX1RZUEVfQkxLQ0lQSEVS OgogCQlyZXR1cm4gY3J5cHRkX2FsbG9jX2Jsa2NpcGhlcih0YiwgJnN0YXRlKTsKKwljYXNlIENS WVBUT19BTEdfVFlQRV9IQVNIOgorCQlyZXR1cm4gY3J5cHRkX2FsbG9jX2hhc2godGIsICZzdGF0 ZSk7CiAJfQogCiAJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CmRpZmYgLS1naXQgYS9jcnlwdG8v ZGlnZXN0LmMgYi9jcnlwdG8vZGlnZXN0LmMKaW5kZXggNmZkNDNiZC4uMTliN2FkZSAxMDA2NDQK LS0tIGEvY3J5cHRvL2RpZ2VzdC5jCisrKyBiL2NyeXB0by9kaWdlc3QuYwpAQCAtMTQxLDE0ICsx NDEsMTQgQEAgaW50IGNyeXB0b19pbml0X2RpZ2VzdF9vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRm bSkKIAogCWlmIChkYWxnLT5kaWFfZGlnZXN0c2l6ZSA+IGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6 ZSh0Zm0pKQogCQlyZXR1cm4gLUVJTlZBTDsKLQkKKwogCW9wcy0+aW5pdAk9IGluaXQ7CiAJb3Bz LT51cGRhdGUJPSB1cGRhdGU7CiAJb3BzLT5maW5hbAk9IGZpbmFsOwogCW9wcy0+ZGlnZXN0CT0g ZGlnZXN0OwogCW9wcy0+c2V0a2V5CT0gZGFsZy0+ZGlhX3NldGtleSA/IHNldGtleSA6IG5vc2V0 a2V5OwogCW9wcy0+ZGlnZXN0c2l6ZQk9IGRhbGctPmRpYV9kaWdlc3RzaXplOwotCQorCiAJcmV0 dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2NyeXB0by9oYXNoLmMgYi9jcnlwdG8vaGFzaC5jCmlu ZGV4IDdkY2ZmNjcuLjZkZjhhOGMgMTAwNjQ0Ci0tLSBhL2NyeXB0by9oYXNoLmMKKysrIGIvY3J5 cHRvL2hhc2guYwpAQCAtNTksMjQgKzU5LDEwOCBAQCBzdGF0aWMgaW50IGhhc2hfc2V0a2V5KHN0 cnVjdCBjcnlwdG9faGFzaCAqY3J0LCBjb25zdCB1OCAqa2V5LAogCXJldHVybiBhbGctPnNldGtl eShjcnQsIGtleSwga2V5bGVuKTsKIH0KIAotc3RhdGljIGludCBjcnlwdG9faW5pdF9oYXNoX29w cyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1MzIgdHlwZSwgdTMyIG1hc2spCitzdGF0aWMgaW50 IGhhc2hfYXN5bmNfc2V0a2V5KHN0cnVjdCBjcnlwdG9fYWhhc2ggKnRmbV9hc3luYywgY29uc3Qg dTggKmtleSwKKwkJCXVuc2lnbmVkIGludCBrZXlsZW4pCit7CisJc3RydWN0IGNyeXB0b190Zm0g ICp0Zm0gICAgICA9IGNyeXB0b19haGFzaF90Zm0odGZtX2FzeW5jKTsKKwlzdHJ1Y3QgY3J5cHRv X2hhc2ggKnRmbV9oYXNoID0gX19jcnlwdG9faGFzaF9jYXN0KHRmbSk7CisJc3RydWN0IGhhc2hf YWxnICAgICphbGcgICAgICA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2hhc2g7CisKKwlyZXR1cm4g YWxnLT5zZXRrZXkodGZtX2hhc2gsIGtleSwga2V5bGVuKTsKK30KKworc3RhdGljIGludCBoYXNo X2FzeW5jX2luaXQoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3sKKwlzdHJ1Y3QgY3J5cHRv X3RmbSAqdGZtID0gcmVxLT5iYXNlLnRmbTsKKwlzdHJ1Y3QgaGFzaF9hbGcgICAqYWxnID0gJnRm bS0+X19jcnRfYWxnLT5jcmFfaGFzaDsKKwlzdHJ1Y3QgaGFzaF9kZXNjICBkZXNjID0geworCQku dGZtID0gX19jcnlwdG9faGFzaF9jYXN0KHRmbSksCisJCS5mbGFncyA9IHJlcS0+YmFzZS5mbGFn cywKKwl9OworCisJcmV0dXJuIGFsZy0+aW5pdCgmZGVzYyk7Cit9CisKK3N0YXRpYyBpbnQgaGFz aF9hc3luY191cGRhdGUoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3sKKwlzdHJ1Y3QgY3J5 cHRvX3RmbSAqdGZtID0gcmVxLT5iYXNlLnRmbTsKKwlzdHJ1Y3QgaGFzaF9hbGcgICAqYWxnID0g JnRmbS0+X19jcnRfYWxnLT5jcmFfaGFzaDsKKwlzdHJ1Y3QgaGFzaF9kZXNjICBkZXNjID0gewor CQkudGZtID0gX19jcnlwdG9faGFzaF9jYXN0KHRmbSksCisJCS5mbGFncyA9IHJlcS0+YmFzZS5m bGFncywKKwl9OworCisJcmV0dXJuIGFsZy0+dXBkYXRlKCZkZXNjLCByZXEtPnNyYywgcmVxLT5u Ynl0ZXMpOworfQorCitzdGF0aWMgaW50IGhhc2hfYXN5bmNfZmluYWwoc3RydWN0IGFoYXNoX3Jl cXVlc3QgKnJlcSkKK3sKKwlzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtID0gcmVxLT5iYXNlLnRmbTsK KwlzdHJ1Y3QgaGFzaF9hbGcgICAqYWxnID0gJnRmbS0+X19jcnRfYWxnLT5jcmFfaGFzaDsKKwlz dHJ1Y3QgaGFzaF9kZXNjICBkZXNjID0geworCQkudGZtID0gX19jcnlwdG9faGFzaF9jYXN0KHRm bSksCisJCS5mbGFncyA9IHJlcS0+YmFzZS5mbGFncywKKwl9OworCisJcmV0dXJuIGFsZy0+Zmlu YWwoJmRlc2MsIHJlcS0+cmVzdWx0KTsKK30KKworc3RhdGljIGludCBoYXNoX2FzeW5jX2RpZ2Vz dChzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKQoreworCXN0cnVjdCBjcnlwdG9fdGZtICp0Zm0g PSByZXEtPmJhc2UudGZtOworCXN0cnVjdCBoYXNoX2FsZyAgICphbGcgPSAmdGZtLT5fX2NydF9h bGctPmNyYV9oYXNoOworCXN0cnVjdCBoYXNoX2Rlc2MgIGRlc2MgPSB7CisJCS50Zm0gPSBfX2Ny eXB0b19oYXNoX2Nhc3QodGZtKSwKKwkJLmZsYWdzID0gcmVxLT5iYXNlLmZsYWdzLAorCX07CisK KwlyZXR1cm4gYWxnLT5kaWdlc3QoJmRlc2MsIHJlcS0+c3JjLCByZXEtPm5ieXRlcywgcmVxLT5y ZXN1bHQpOworfQorCitzdGF0aWMgaW50IGNyeXB0b19pbml0X2hhc2hfb3BzX2FzeW5jKHN0cnVj dCBjcnlwdG9fdGZtICp0Zm0pCit7CisJc3RydWN0IGFoYXNoX3RmbSAqY3J0ID0gJnRmbS0+Y3J0 X2FoYXNoOworCXN0cnVjdCBoYXNoX2FsZyAgKmFsZyA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2hh c2g7CisKKwljcnQtPmluaXQgICAgICAgPSBoYXNoX2FzeW5jX2luaXQ7CisJY3J0LT51cGRhdGUg ICAgID0gaGFzaF9hc3luY191cGRhdGU7CisJY3J0LT5maW5hbCAgICAgID0gaGFzaF9hc3luY19m aW5hbDsKKwljcnQtPmRpZ2VzdCAgICAgPSBoYXNoX2FzeW5jX2RpZ2VzdDsKKwljcnQtPnNldGtl eSAgICAgPSBoYXNoX2FzeW5jX3NldGtleTsKKwljcnQtPmRpZ2VzdHNpemUgPSBhbGctPmRpZ2Vz dHNpemU7CisJY3J0LT5iYXNlICAgICAgID0gX19jcnlwdG9fYWhhc2hfY2FzdCh0Zm0pOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3J5cHRvX2luaXRfaGFzaF9vcHNfc3luYyhzdHJ1 Y3QgY3J5cHRvX3RmbSAqdGZtKQogewogCXN0cnVjdCBoYXNoX3RmbSAqY3J0ID0gJnRmbS0+Y3J0 X2hhc2g7CiAJc3RydWN0IGhhc2hfYWxnICphbGcgPSAmdGZtLT5fX2NydF9hbGctPmNyYV9oYXNo OwogCi0JaWYgKGFsZy0+ZGlnZXN0c2l6ZSA+IGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZSh0Zm0p KQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWNydC0+aW5pdCA9IGFsZy0+aW5pdDsKLQljcnQtPnVw ZGF0ZSA9IGFsZy0+dXBkYXRlOwotCWNydC0+ZmluYWwgPSBhbGctPmZpbmFsOwotCWNydC0+ZGln ZXN0ID0gYWxnLT5kaWdlc3Q7Ci0JY3J0LT5zZXRrZXkgPSBoYXNoX3NldGtleTsKKwljcnQtPmlu aXQgICAgICAgPSBhbGctPmluaXQ7CisJY3J0LT51cGRhdGUgICAgID0gYWxnLT51cGRhdGU7CisJ Y3J0LT5maW5hbCAgICAgID0gYWxnLT5maW5hbDsKKwljcnQtPmRpZ2VzdCAgICAgPSBhbGctPmRp Z2VzdDsKKwljcnQtPnNldGtleSAgICAgPSBoYXNoX3NldGtleTsKIAljcnQtPmRpZ2VzdHNpemUg PSBhbGctPmRpZ2VzdHNpemU7CiAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBjcnlwdG9f aW5pdF9oYXNoX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1MzIgdHlwZSwgdTMyIG1hc2sp Cit7CisJc3RydWN0IGhhc2hfYWxnICphbGcgPSAmdGZtLT5fX2NydF9hbGctPmNyYV9oYXNoOwor CisJaWYgKGFsZy0+ZGlnZXN0c2l6ZSA+IGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZSh0Zm0pKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChtYXNrICYgQ1JZUFRPX0FMR19BU1lOQykKKwkJcmV0 dXJuIGNyeXB0b19pbml0X2hhc2hfb3BzX2FzeW5jKHRmbSk7CisJZWxzZQorCQlyZXR1cm4gY3J5 cHRvX2luaXRfaGFzaF9vcHNfc3luYyh0Zm0pOworfQorCiBzdGF0aWMgdm9pZCBjcnlwdG9faGFz aF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGNyeXB0b19hbGcgKmFsZykKIAlfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSk7CiBzdGF0aWMgdm9pZCBjcnlwdG9faGFzaF9zaG93KHN0cnVj dCBzZXFfZmlsZSAqbSwgc3RydWN0IGNyeXB0b19hbGcgKmFsZykKZGlmZiAtLWdpdCBhL2NyeXB0 by90Y3J5cHQuYyBiL2NyeXB0by90Y3J5cHQuYwppbmRleCAxYWI4YzAxLi43ODRmMGI1IDEwMDY0 NAotLS0gYS9jcnlwdG8vdGNyeXB0LmMKKysrIGIvY3J5cHRvL3RjcnlwdC5jCkBAIC0zNSw2ICsz NSw3IEBACiAjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgogI2luY2x1ZGUgPGxpbnV4L3RpbWV4 Lmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXku aD4KICNpbmNsdWRlICJ0Y3J5cHQuaCIKIAogLyoKQEAgLTIyMCw2ICsyMjEsOTggQEAgb3V0Ogog CWNyeXB0b19mcmVlX2hhc2godGZtKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdF9haGFzaChjaGFy ICphbGdvLCBzdHJ1Y3QgaGFzaF90ZXN0dmVjICp0ZW1wbGF0ZSwKKwkJICAgICAgdW5zaWduZWQg aW50IHRjb3VudCkKK3sKKwlzdHJ1Y3QgaGFzaF90ZXN0dmVjICAqaGFzaF90djsKKwlzdHJ1Y3Qg Y3J5cHRvX2FoYXNoICAqdGZtID0gTlVMTDsKKwlzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxID0g TlVMTDsKKwlzdHJ1Y3QgdGNyeXB0X3Jlc3VsdCByZXN1bHQ7CisJc3RydWN0IHNjYXR0ZXJsaXN0 ICAgc2dbOF07CisJY2hhciAJCWRpZ2VzdF9yZXN1bHRbdGNvdW50XVs0KjE2XTsKKwl1bnNpZ25l ZCBpbnQgCXRzaXplOworCXVuc2lnbmVkIGludCAJaTsKKwlpbnQgCQlyZXQ7CisKKwlwcmludGso S0VSTl9JTkZPICJcbnRlc3RpbmcgJXNcbiIsIGFsZ28pOworCisJdHNpemUgPSBzaXplb2Yoc3Ry dWN0IGhhc2hfdGVzdHZlYyk7CisJdHNpemUgKj0gdGNvdW50OworCWlmICh0c2l6ZSA+IFRWTUVN U0laRSkgeworCQlwcmludGsoS0VSTl9FUlIgInRlbXBsYXRlICgldSkgdG9vIGJpZyBmb3IgdHZt ZW0gKCV1KVxuIiwKKwkJCXRzaXplLCBUVk1FTVNJWkUpOworCQlyZXR1cm47CisJfQorCW1lbWNw eSh0dm1lbSwgdGVtcGxhdGUsIHRzaXplKTsKKwloYXNoX3R2ID0gKHZvaWQgKil0dm1lbTsKKwor CWluaXRfY29tcGxldGlvbigmcmVzdWx0LmNvbXBsZXRpb24pOworCisJdGZtID0gY3J5cHRvX2Fs bG9jX2FoYXNoKGFsZ28sIDAsIDApOworCWlmIChJU19FUlIodGZtKSkgeworCQlwcmludGsoS0VS Tl9FUlIgImZhaWxlZCB0byBsb2FkIHRyYW5zZm9ybSBmb3IgJXM6ICVsZFxuIiwgYWxnbywKKwkJ ICAgICAgIFBUUl9FUlIodGZtKSk7CisJCXJldHVybjsKKwl9CisJcmVxID0gYWhhc2hfcmVxdWVz dF9hbGxvYyh0Zm0sIEdGUF9LRVJORUwpOworCWlmICghcmVxKSB7CisJCXByaW50ayhLRVJOX0VS UiAiZmFpbGVkIHRvIGFsbG9jYXRlIHJlcXVlc3QgZm9yICVzXG4iLCBhbGdvKTsKKwkJZ290byBv dXQ7CisJfQorCWFoYXNoX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKHJlcSwgQ1JZUFRPX1RGTV9SRVFf TUFZX0JBQ0tMT0csCisJCQkJdGNyeXB0X2NvbXBsZXRlLCAmcmVzdWx0KTsKKworCWZvciAoaSA9 IDA7IGkgPCB0Y291bnQ7IGkrKykgeworCQlwcmludGsoS0VSTl9JTkZPICJ0ZXN0ICV1OlxuIiwg aSArIDEpOworCQltZW1zZXQoJmRpZ2VzdF9yZXN1bHRbaV0sIDAsIDQqMTYpOworCQljcnlwdG9f YWhhc2hfY2xlYXJfZmxhZ3ModGZtLCB+MCk7CisJCWlmIChoYXNoX3R2W2ldLmtzaXplKSB7CisJ CQlyZXQgPSBjcnlwdG9fYWhhc2hfc2V0a2V5KHRmbSwgaGFzaF90dltpXS5rZXksCisJCQkJCQkg aGFzaF90dltpXS5rc2l6ZSk7CisJCQlpZiAocmV0KSB7CisJCQkJcHJpbnRrKEtFUk5fRVJSICJz ZXRrZXkoKSBmYWlsZWQgZXJyb3IgJWRcbiIsCisJCQkJCXJldCk7CisJCQkJZ290byBvdXQ7CisJ CQl9CisJCX0KKworCQlzZ19pbml0X29uZSgmc2dbMF0sIGhhc2hfdHZbaV0ucGxhaW50ZXh0LCBo YXNoX3R2W2ldLnBzaXplKTsKKworCQlhaGFzaF9yZXF1ZXN0X3NldF9jcnlwdChyZXEsIHNnLCBk aWdlc3RfcmVzdWx0W2ldLAorCQkJCQloYXNoX3R2W2ldLnBzaXplKTsKKworCQlyZXQgPSBjcnlw dG9fYWhhc2hfZGlnZXN0KHJlcSk7CisJCXN3aXRjaCAocmV0KSB7CisJCWNhc2UgMDoKKwkJCWJy ZWFrOworCQljYXNlIC1FSU5QUk9HUkVTUzoKKwkJY2FzZSAtRUJVU1k6CisJCQlyZXQgPSB3YWl0 X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoCisJCQkJJnJlc3VsdC5jb21wbGV0aW9uKTsK KwkJCWlmICghcmV0ICYmICEoKHJldCA9IHJlc3VsdC5lcnIpKSkgeworCQkJCUlOSVRfQ09NUExF VElPTihyZXN1bHQuY29tcGxldGlvbik7CisJCQkJYnJlYWs7CisJCQl9CisJCQkvKiBmYWxsIHRo cm91Z2ggKi8KKwkJZGVmYXVsdDoKKwkJCXByaW50ayhLRVJOX0VSUiAiaGFzaCgpIGZhaWxlZCBl cnJvciAlZFxuIiwgcmV0KTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaGV4ZHVtcChkaWdlc3Rf cmVzdWx0W2ldLCBjcnlwdG9fYWhhc2hfZGlnZXN0c2l6ZSh0Zm0pKTsKKwkJcHJpbnRrKEtFUk5f SU5GTyAiJXNcbiIsCisJCSAgICAgICBtZW1jbXAoZGlnZXN0X3Jlc3VsdFtpXSwgaGFzaF90dltp XS5kaWdlc3QsCisJCQkgICAgICBjcnlwdG9fYWhhc2hfZGlnZXN0c2l6ZSh0Zm0pKSA/CisJCSAg ICAgICAiZmFpbCIgOiAicGFzcyIpOworCX0KKworb3V0OgorCWlmIChyZXEpCisJCWFoYXNoX3Jl cXVlc3RfZnJlZShyZXEpOworCisJY3J5cHRvX2ZyZWVfYWhhc2godGZtKTsKK30KKwogc3RhdGlj IHZvaWQgdGVzdF9hZWFkKGNoYXIgKmFsZ28sIGludCBlbmMsIHN0cnVjdCBhZWFkX3Rlc3R2ZWMg KnRlbXBsYXRlLAogCQkgICAgICB1bnNpZ25lZCBpbnQgdGNvdW50KQogewpAQCAtNDcxLDcgKzU2 NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY2lwaGVyKGNoYXIgKmFsZ28sIGludCBlbmMsCiAJZWxz ZQogCQllID0gImRlY3J5cHRpb24iOwogCi0JcHJpbnRrKCJcbnRlc3RpbmcgJXMgJXNcbiIsIGFs Z28sIGUpOworCXByaW50ayhLRVJOX0lORk8gIlxudGVzdGluZyBjaXBoZXIgJXMgJXNcbiIsIGFs Z28sIGUpOwogCiAJdHNpemUgPSBzaXplb2YgKHN0cnVjdCBjaXBoZXJfdGVzdHZlYyk7CiAJaWYg KHRzaXplID4gVFZNRU1TSVpFKSB7CkBAIC0xNjE5LDYgKzE3MTIsNTEgQEAgc3RhdGljIHZvaWQg ZG9fdGVzdCh2b2lkKQogCQkJICBYQ0JDX0FFU19URVNUX1ZFQ1RPUlMpOwogCQlicmVhazsKIAor CWNhc2UgMTEwOgorCQl0ZXN0X2FoYXNoKCJobWFjKG1kNSkiLCBobWFjX21kNV90dl90ZW1wbGF0 ZSwKKwkJCSAgSE1BQ19NRDVfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDExMToK KwkJdGVzdF9haGFzaCgiaG1hYyhzaGExKSIsIGhtYWNfc2hhMV90dl90ZW1wbGF0ZSwKKwkJCSAg SE1BQ19TSEExX1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisJY2FzZSAxMTI6CisJCXRlc3Rf YWhhc2goImhtYWMoc2hhMjU2KSIsIGhtYWNfc2hhMjU2X3R2X3RlbXBsYXRlLAorCQkJICBITUFD X1NIQTI1Nl9URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKworCWNhc2UgMTEzOgorCQl0ZXN0X2Fo YXNoKCJobWFjKHNoYTM4NCkiLCBobWFjX3NoYTM4NF90dl90ZW1wbGF0ZSwKKwkJCSAgSE1BQ19T SEEzODRfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDExNDoKKwkJdGVzdF9haGFz aCgiaG1hYyhzaGE1MTIpIiwgaG1hY19zaGE1MTJfdHZfdGVtcGxhdGUsCisJCQkgIEhNQUNfU0hB NTEyX1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisJY2FzZSAxMTU6CisJCXRlc3RfYWhhc2go ImhtYWMoc2hhMjI0KSIsIGhtYWNfc2hhMjI0X3R2X3RlbXBsYXRlLAorCQkJICBITUFDX1NIQTIy NF9URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKworCWNhc2UgMTIwOgorCQl0ZXN0X2FoYXNoKCJo bWFjKG1kNSkiLCBobWFjX21kNV90dl90ZW1wbGF0ZSwKKwkJCSAgSE1BQ19NRDVfVEVTVF9WRUNU T1JTKTsKKwkJdGVzdF9haGFzaCgiaG1hYyhzaGExKSIsIGhtYWNfc2hhMV90dl90ZW1wbGF0ZSwK KwkJCSAgSE1BQ19TSEExX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfYWhhc2goImhtYWMoc2hhMjI0 KSIsIGhtYWNfc2hhMjI0X3R2X3RlbXBsYXRlLAorCQkJICBITUFDX1NIQTIyNF9URVNUX1ZFQ1RP UlMpOworCQl0ZXN0X2FoYXNoKCJobWFjKHNoYTI1NikiLCBobWFjX3NoYTI1Nl90dl90ZW1wbGF0 ZSwKKwkJCSAgSE1BQ19TSEEyNTZfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9haGFzaCgiaG1hYyhz aGEzODQpIiwgaG1hY19zaGEzODRfdHZfdGVtcGxhdGUsCisJCQkgIEhNQUNfU0hBMzg0X1RFU1Rf VkVDVE9SUyk7CisJCXRlc3RfYWhhc2goImhtYWMoc2hhNTEyKSIsIGhtYWNfc2hhNTEyX3R2X3Rl bXBsYXRlLAorCQkJICBITUFDX1NIQTUxMl9URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKwogCWNh c2UgMjAwOgogCQl0ZXN0X2NpcGhlcl9zcGVlZCgiZWNiKGFlcykiLCBFTkNSWVBULCBzZWMsIE5V TEwsIDAsCiAJCQkJICBhZXNfc3BlZWRfdGVtcGxhdGUpOwpAQCAtMTc5NSw3ICsxOTMzLDcgQEAg c3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQogCiAJLyogV2UgaW50ZW50aW9uYWx5IHJldHVy biAtRUFHQUlOIHRvIHByZXZlbnQga2VlcGluZwogCSAqIHRoZSBtb2R1bGUuIEl0IGRvZXMgYWxs IGl0cyB3b3JrIGZyb20gaW5pdCgpCi0JICogYW5kIGRvZXNuJ3Qgb2ZmZXIgYW55IHJ1bnRpbWUg ZnVuY3Rpb25hbGl0eSAKKwkgKiBhbmQgZG9lc24ndCBvZmZlciBhbnkgcnVudGltZSBmdW5jdGlv bmFsaXR5CiAJICogPT4gd2UgZG9uJ3QgbmVlZCBpdCBpbiB0aGUgbWVtb3J5LCBkbyB3ZT8KIAkg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBtbHVkdmlnCiAJICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9LY29uZmlnIGIvZHJpdmVycy9jcnlwdG8vS2Nv bmZpZwppbmRleCBkOGM3MDQwLi4yMWU0MjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NyeXB0by9L Y29uZmlnCisrKyBiL2RyaXZlcnMvY3J5cHRvL0tjb25maWcKQEAgLTkyLDYgKzkyLDEyIEBAIGNv bmZpZyBDUllQVE9fREVWX0hJRk5fNzk1WAogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGFsbG93cyB5 b3UgdG8gaGF2ZSBzdXBwb3J0IGZvciBISUZOIDc5NXggY3J5cHRvIGFkYXB0ZXJzLgogCi0KK2Nv bmZpZyBDUllQVE9fREVWX0FIQVNIX1NBTVBMRQorCXRyaXN0YXRlICJBc3luY2hyb25vdXMgSEFT SCBzYW1wbGUgZHJpdmVyIG92ZXIgc29mdHdhcmUgc3luY2hyb25vdXMgSEFTSCIKKwlzZWxlY3Qg Q1JZUFRPX0hBU0gKKwlzZWxlY3QgQ1JZUFRPX0FMR0FQSQorCWhlbHAKKwkgIFRoaXMgaXMgYSBz YW1wbGUgYXN5bmNocm9ub3VzIEhBU0ggZGV2aWNlIGRyaXZlciBvdmVyIHN5bmNocm9ub3VzIHNv ZnR3YXJlCisgICAgICAgICAgSEFTSC4KIAogZW5kaWYgIyBDUllQVE9fSFcKZGlmZiAtLWdpdCBh L2RyaXZlcnMvY3J5cHRvL01ha2VmaWxlIGIvZHJpdmVycy9jcnlwdG8vTWFrZWZpbGUKaW5kZXgg YzAzMjdmMC4uMGIxY2MyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlwdG8vTWFrZWZpbGUKKysr IGIvZHJpdmVycy9jcnlwdG8vTWFrZWZpbGUKQEAgLTIsMyArMiw0IEBAIG9iai0kKENPTkZJR19D UllQVE9fREVWX1BBRExPQ0tfQUVTKSArPSBwYWRsb2NrLWFlcy5vCiBvYmotJChDT05GSUdfQ1JZ UFRPX0RFVl9QQURMT0NLX1NIQSkgKz0gcGFkbG9jay1zaGEubwogb2JqLSQoQ09ORklHX0NSWVBU T19ERVZfR0VPREUpICs9IGdlb2RlLWFlcy5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0RFVl9ISUZO Xzc5NVgpICs9IGhpZm5fNzk1eC5vCitvYmotJChDT05GSUdfQ1JZUFRPX0RFVl9BSEFTSF9TQU1Q TEUpICs9IGFoYXNoX3NhbXBsZS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9haGFzaF9z YW1wbGUuYyBiL2RyaXZlcnMvY3J5cHRvL2FoYXNoX3NhbXBsZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjBjMWFkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2Ny eXB0by9haGFzaF9zYW1wbGUuYwpAQCAtMCwwICsxLDM1NCBAQAorLyoKKyAqIFNhbXBsZSBBc3lu Y2hyb25vdXMgZGV2aWNlIGRyaXZlciB0aGF0IHdyYXBzIGFyb3VuZCBzb2Z0d2FyZSBzeW5jIEhB U0gKKyAqCisgKiAyMDA4IENvcHlyaWdodCAoYykgTG9jIEhvIDxsaG9AYW1jYy5jb20+CisgKiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0x MzA3ICBVU0EKKyAqLworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8bGlu dXgvbW9kX2RldmljZXRhYmxlLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5j bHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+Cisj aW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisjaW5jbHVkZSA8Y3J5cHRvL2FsZ2FwaS5oPgorCitz dHJ1Y3QgYWhhc2hfc2FtcGxlX2RldmljZSB7CisJY2hhcgkJCW5hbWVbNjRdOworCXN0cnVjdCB0 YXNrbGV0X3N0cnVjdAl0YXNrbGV0OworCXN0cnVjdCBjcnlwdG9fcXVldWUgCXF1ZXVlOworCXNw aW5sb2NrX3QJCWxvY2s7CQkvKio8IFF1ZXVlIGxvY2sgcHJvdGVjdGlvbiAqLworCXN0cnVjdCBs aXN0X2hlYWQJYWxnX2xpc3Q7Cit9OworCisjZGVmaW5lIEFIQVNIX1NBTVBMRV9PUF9ESUdFU1QJ MAorI2RlZmluZSBBSEFTSF9TQU1QTEVfT1BfVVBEQVRFCTEKKyNkZWZpbmUgQUhBU0hfU0FNUExF X09QX0ZJTkFMCTIKKworc3RydWN0IGFoYXNoX3NhbXBsZV9jb250ZXh0IHsKKwlzdHJ1Y3QgYWhh c2hfc2FtcGxlX2RldmljZSAqZGV2OworCXU4CQkJa2V5WzE2XTsKKwl1bnNpZ25lZCBpbnQJCWtl eXNpemU7CisJc3RydWN0IGNyeXB0b19oYXNoIAkqc3luY190Zm07CisJc3RydWN0IGhhc2hfZGVz YyAJZGVzYzsKKwl1OAlvcHM7Cit9OworCitzdHJ1Y3QgYWhhc2hfc2FtcGxlX2FsZyB7CisJc3Ry dWN0IGxpc3RfaGVhZCAgICAJZW50cnk7CisJc3RydWN0IGNyeXB0b19hbGcgICAJYWxnOworCXN0 cnVjdCBhaGFzaF9zYW1wbGVfZGV2aWNlICpkZXY7Cit9OworCitzdGF0aWMgc3RydWN0IGFoYXNo X3NhbXBsZV9kZXZpY2UgKmFoYXNoX3NhbXBsZV9kZXY7CisKKyNkZWZpbmUgY3J5cHRvX2FsZ190 b19haGFzaF9zYW1wbGVfYWxnKGEpCWNvbnRhaW5lcl9vZihhLCBcCisJCQkJCQlzdHJ1Y3QgYWhh c2hfc2FtcGxlX2FsZywgXAorCQkJCQkJYWxnKQorCitzdGF0aWMgaW50IGFoYXNoX3NhbXBsZV9h bGdfaW5pdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXN0cnVjdCBjcnlwdG9fYWxnICAg ICphbGcgICAgICAgICAgPSB0Zm0tPl9fY3J0X2FsZzsKKwlzdHJ1Y3QgYWhhc2hfc2FtcGxlX2Fs ZyAqYWhhc2hfYWxnID0gY3J5cHRvX2FsZ190b19haGFzaF9zYW1wbGVfYWxnKAorCQkJCQkJCQkJ YWxnKTsKKwlzdHJ1Y3QgYWhhc2hfc2FtcGxlX2NvbnRleHQgKmN0eCAgID0gY3J5cHRvX3RmbV9j dHgodGZtKTsKKworCWN0eC0+ZGV2ICAgICAgPSBhaGFzaF9hbGctPmRldjsKKwljdHgtPnN5bmNf dGZtID0gY3J5cHRvX2FsbG9jX2hhc2goYWxnLT5jcmFfbmFtZSwgMCwgQ1JZUFRPX0FMR19BU1lO Qyk7CisJaWYgKElTX0VSUihjdHgtPnN5bmNfdGZtKSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJ CSJBSEFTSF9TQU1QTEU6IGZhaWxlZCB0byBsb2FkIHRyYW5zZm9ybSBmb3IgJXM6ICVsZFxuIiwK KwkJCWFsZy0+Y3JhX25hbWUsIFBUUl9FUlIoY3R4LT5zeW5jX3RmbSkpOworCQlyZXR1cm4gLUVO T01FTTsKKwl9CisJcHJpbnRrKEtFUk5fSU5GTyAiQUhBU0hfU0FNUExFOiBpbml0aWFsaXplIGFs ZyAlc1xuIiwgYWxnLT5jcmFfbmFtZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFo YXNoX3NhbXBsZV9hbGdfZXhpdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXN0cnVjdCBj cnlwdG9fYWxnICAgICAgICAgICAqYWxnID0gdGZtLT5fX2NydF9hbGc7CisJc3RydWN0IGFoYXNo X3NhbXBsZV9jb250ZXh0ICpjdHggPSBjcnlwdG9fdGZtX2N0eCh0Zm0pOworCisJcHJpbnRrKEtF Uk5fSU5GTyAiQUhBU0hfU0FNUExFOiBleGl0IGFsZyAlc1xuIiwgYWxnLT5jcmFfbmFtZSk7CisK KwlpZiAoY3R4LT5zeW5jX3RmbSkgeworCQljcnlwdG9fZnJlZV9oYXNoKGN0eC0+c3luY190Zm0p OworCQljdHgtPnN5bmNfdGZtID0gTlVMTDsKKwkJY3R4LT5kZXYgICAgICA9IE5VTEw7CisJfQor fQorCitzdGF0aWMgaW50IGFoYXNoX3NhbXBsZV9vcHNfc2V0a2V5KHN0cnVjdCBjcnlwdG9fYWhh c2ggKmNpcGhlciwgY29uc3QgdTggKmtleSwKKwkJCXVuc2lnbmVkIGludCBrZXlsZW4pCit7CisJ c3RydWN0IGNyeXB0b190Zm0gICAgICAgICAgICp0Zm0gPSBjcnlwdG9fYWhhc2hfdGZtKGNpcGhl cik7CisJc3RydWN0IGFoYXNoX3NhbXBsZV9jb250ZXh0ICpjdHggPSBjcnlwdG9fdGZtX2N0eCh0 Zm0pOworCWludCAgICByZXQ7CisKKwlwcmludGsoS0VSTl9JTkZPICJBSEFTSF9TQU1QTEU6IHNl dGtleVxuIik7CisKKwlyZXQgPSBjcnlwdG9faGFzaF9zZXRrZXkoY3R4LT5zeW5jX3RmbSwga2V5 LCBrZXlsZW4pOworCWlmIChyZXQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCQkiYXluY2hyb25v dXMgaGFzaCBnZW5lcmljIHNldGtleSBmYWlsZWQgZXJyb3IgJWRcbiIsCisJCQlyZXQpOworCQly ZXR1cm4gLTE7CisJfQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGFoYXNo X3NhbXBsZV9vcHNfaW5pdChzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKQoreworCXN0cnVjdCBh aGFzaF9zYW1wbGVfY29udGV4dCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgocmVxLT5iYXNlLnRmbSk7 CisKKwlwcmludGsoS0VSTl9JTkZPICJBSEFTSF9TQU1QTEU6IGluaXRcbiIpOworCisJY3R4LT5k ZXNjLnRmbSAgID0gY3R4LT5zeW5jX3RmbTsKKwljdHgtPmRlc2MuZmxhZ3MgPSBDUllQVE9fVEZN X1JFUV9NQVlfU0xFRVA7CisJcmV0dXJuIGNyeXB0b19oYXNoX2luaXQoJmN0eC0+ZGVzYyk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgaW50IGFoYXNoX3NhbXBsZV9vcHNfdXBkYXRlKHN0cnVjdCBhaGFz aF9yZXF1ZXN0ICpyZXEpCit7CisJc3RydWN0IGFoYXNoX3NhbXBsZV9jb250ZXh0ICpjdHggPSBj cnlwdG9fdGZtX2N0eChyZXEtPmJhc2UudGZtKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWlu dCByZXQ7CisKKwlwcmludGsoS0VSTl9JTkZPICJBSEFTSF9TQU1QTEU6IHVwZGF0ZVxuIik7CisK KwljdHgtPm9wcyA9IEFIQVNIX1NBTVBMRV9PUF9VUERBVEU7CisJc3Bpbl9sb2NrX2lycXNhdmUo JmN0eC0+ZGV2LT5sb2NrLCBmbGFncyk7CisJcmV0ID0gYWhhc2hfZW5xdWV1ZV9yZXF1ZXN0KCZj dHgtPmRldi0+cXVldWUsIHJlcSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3R4LT5kZXYt PmxvY2ssIGZsYWdzKTsKKworCXRhc2tsZXRfc2NoZWR1bGUoJmN0eC0+ZGV2LT50YXNrbGV0KTsK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lIGludCBhaGFzaF9zYW1wbGVfb3BzX2Zp bmFsKHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpCit7CisJc3RydWN0IGFoYXNoX3NhbXBsZV9j b250ZXh0ICpjdHggPSBjcnlwdG9fdGZtX2N0eChyZXEtPmJhc2UudGZtKTsKKwl1bnNpZ25lZCBs b25nIGZsYWdzOworCWludCByZXQ7CisKKwlwcmludGsoS0VSTl9JTkZPICJBSEFTSF9TQU1QTEU6 IGZpbmFsXG4iKTsKKworCWN0eC0+b3BzID0gQUhBU0hfU0FNUExFX09QX0ZJTkFMOworCXNwaW5f bG9ja19pcnFzYXZlKCZjdHgtPmRldi0+bG9jaywgZmxhZ3MpOworCXJldCA9IGFoYXNoX2VucXVl dWVfcmVxdWVzdCgmY3R4LT5kZXYtPnF1ZXVlLCByZXEpOworCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmN0eC0+ZGV2LT5sb2NrLCBmbGFncyk7CisKKwl0YXNrbGV0X3NjaGVkdWxlKCZjdHgtPmRl di0+dGFza2xldCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZSBpbnQgYWhhc2hf c2FtcGxlX29wc19kaWdlc3Qoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3sKKwlzdHJ1Y3Qg YWhhc2hfc2FtcGxlX2NvbnRleHQgKmN0eCA9IGNyeXB0b190Zm1fY3R4KHJlcS0+YmFzZS50Zm0p OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldDsKKworCXByaW50ayhLRVJOX0lORk8g IkFIQVNIX1NBTVBMRTogZGlnZXN0XG4iKTsKKworCWN0eC0+b3BzID0gQUhBU0hfU0FNUExFX09Q X0RJR0VTVDsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY3R4LT5kZXYtPmxvY2ssIGZsYWdzKTsKKwly ZXQgPSBhaGFzaF9lbnF1ZXVlX3JlcXVlc3QoJmN0eC0+ZGV2LT5xdWV1ZSwgcmVxKTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZjdHgtPmRldi0+bG9jaywgZmxhZ3MpOworCisJdGFza2xldF9z Y2hlZHVsZSgmY3R4LT5kZXYtPnRhc2tsZXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQgYWhhc2hfc2FtcGxlX2hhbmRsZV9yZXEoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3sK KwlzdHJ1Y3QgYWhhc2hfc2FtcGxlX2NvbnRleHQgKmN0eCA9IGNyeXB0b190Zm1fY3R4KHJlcS0+ YmFzZS50Zm0pOworCXN0cnVjdCBoYXNoX2Rlc2MgZGVzYzsKKwlpbnQgICAgcmV0OworCisJZGVz Yy50Zm0gICA9IGN0eC0+c3luY190Zm07CisJZGVzYy5mbGFncyA9IDA7CisJc3dpdGNoIChjdHgt Pm9wcykgeworCWNhc2UgQUhBU0hfU0FNUExFX09QX1VQREFURToKKwkJcmV0ID0gY3J5cHRvX2hh c2hfdXBkYXRlKCZkZXNjLCByZXEtPnNyYywgcmVxLT5uYnl0ZXMpOworCQlicmVhazsKKwljYXNl IEFIQVNIX1NBTVBMRV9PUF9GSU5BTDoKKwkJcmV0ID0gY3J5cHRvX2hhc2hfZmluYWwoJmRlc2Ms IHJlcS0+cmVzdWx0KTsKKwkJYnJlYWs7CisJY2FzZSBBSEFTSF9TQU1QTEVfT1BfRElHRVNUOgor CWRlZmF1bHQ6CisJCXJldCA9IGNyeXB0b19oYXNoX2RpZ2VzdCgmZGVzYywgcmVxLT5zcmMsCisJ CQkJCXJlcS0+bmJ5dGVzLCByZXEtPnJlc3VsdCk7CisJCWJyZWFrOworCX0KKwlpZiAocmV0KSB7 CisJCXByaW50ayhLRVJOX0VSUiAiQUhBU0hfU0FNUExFOiAiCisJCQkiYXN5bmNocm9ub3VzIGhh c2ggZ2VuZXJpYyBkaWdlc3QgZmFpbGVkIGVycm9yICVkXG4iLAorCQkJcmV0KTsKKwkJcmV0dXJu IHJldDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFoYXNoX3NhbXBsZV9iaF90 YXNrbGV0X2NiKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3QgYWhhc2hfc2FtcGxlX2Rl dmljZSAgKmRldiA9IChzdHJ1Y3QgYWhhc2hfc2FtcGxlX2RldmljZSAqKSBkYXRhOworCXN0cnVj dCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAqYXN5bmNfcmVxOworCXN0cnVjdCBhaGFzaF9zYW1wbGVf Y29udGV4dCAqY3R4OworCXN0cnVjdCBhaGFzaF9yZXF1ZXN0ICAgICAgICAqcmVxOworCXVuc2ln bmVkIGxvbmcgCWZsYWdzOworCWludCAJCWVycjsKKworCXdoaWxlICgxKSB7CisJCXNwaW5fbG9j a19pcnFzYXZlKCZkZXYtPmxvY2ssIGZsYWdzKTsKKwkJYXN5bmNfcmVxID0gY3J5cHRvX2RlcXVl dWVfcmVxdWVzdCgmZGV2LT5xdWV1ZSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ bG9jaywgZmxhZ3MpOworCisJCWlmICghYXN5bmNfcmVxKQorCQkJYnJlYWs7CisKKwkJY3R4ID0g Y3J5cHRvX3RmbV9jdHgoYXN5bmNfcmVxLT50Zm0pOworCQlyZXEgPSBjb250YWluZXJfb2YoYXN5 bmNfcmVxLCBzdHJ1Y3QgYWhhc2hfcmVxdWVzdCwgYmFzZSk7CisKKwkJLyogUHJvY2VzcyB0aGUg cmVxdWVzdCAqLworCQllcnIgPSBhaGFzaF9zYW1wbGVfaGFuZGxlX3JlcShyZXEpOworCisJCS8q IE5vdGlmeSBwYWNrZXQgY29tcGxldGVkICovCisJCXJlcS0+YmFzZS5jb21wbGV0ZSgmcmVxLT5i YXNlLCBlcnIpOworCX0KK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIGFoYXNoX3NhbXBs ZV9hbGdfdGJsW10gPQoreworCXsgLmNyYV9uYW1lCQk9ICJobWFjKG1kNSkiLAorCSAgLmNyYV9k cml2ZXJfbmFtZQk9ICJhaGFzaC1tZDUiLAorCSAgLmNyYV9wcmlvcml0eQkJPSAzMDAsCisJICAu Y3JhX2ZsYWdzCQk9IENSWVBUT19BTEdfVFlQRV9BSEFTSCB8IENSWVBUT19BTEdfQVNZTkMsCisJ ICAuY3JhX2Jsb2Nrc2l6ZQk9IDY0LCAvKiBNRDUtSE1BQyBibG9jayBzaXplIGlzIDUxMi1iaXRz ICovCisJICAuY3JhX2N0eHNpemUJCT0gc2l6ZW9mKHN0cnVjdCBhaGFzaF9zYW1wbGVfY29udGV4 dCksCisJICAuY3JhX2FsaWdubWFzayAJPSAwLAorCSAgLmNyYV90eXBlCQk9ICZjcnlwdG9fYWhh c2hfdHlwZSwKKwkgIC5jcmFfbW9kdWxlCQk9IFRISVNfTU9EVUxFLAorCSAgLmNyYV91CQk9IHsg LmFoYXNoID0geworCSAgLmRpZ2VzdHNpemUJCT0gMTYsIC8qIERpc2dlc3QgaXMgMTI4LWJpdHMg Ki8KKwkgIC5pbml0ICAgCQk9IGFoYXNoX3NhbXBsZV9vcHNfaW5pdCwKKwkgIC51cGRhdGUgICAJ CT0gYWhhc2hfc2FtcGxlX29wc191cGRhdGUsCisJICAuZmluYWwgICAJCT0gYWhhc2hfc2FtcGxl X29wc19maW5hbCwKKwkgIC5kaWdlc3QgCQk9IGFoYXNoX3NhbXBsZV9vcHNfZGlnZXN0LAorCSAg LnNldGtleQkJPSBhaGFzaF9zYW1wbGVfb3BzX3NldGtleSwKKwkgIH0gfSwKKwl9LAorCXsgLmNy YV9uYW1lCQk9ICIiIH0KK307CisKK3N0YXRpYyB2b2lkIGFoYXNoX3NhbXBsZV91bnJlZ2lzdGVy X2FsZyhzdHJ1Y3QgYWhhc2hfc2FtcGxlX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhaGFzaF9z YW1wbGVfYWxnICphbGcsICp0bXA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWxnLCB0 bXAsICZkZXYtPmFsZ19saXN0LCBlbnRyeSkgeworCQlsaXN0X2RlbCgmYWxnLT5lbnRyeSk7CisJ CWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnLT5hbGcpOworCQlrZnJlZShhbGcpOworCX0KK30K Kworc3RhdGljIGludCBhaGFzaF9zYW1wbGVfcmVnaXN0ZXJfYWxnKHN0cnVjdCBhaGFzaF9zYW1w bGVfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGFoYXNoX3NhbXBsZV9hbGcgKmFsZzsKKwlpbnQg aTsKKwlpbnQgcmMgPSAwOworCisJZm9yIChpID0gMDsgYWhhc2hfc2FtcGxlX2FsZ190YmxbaV0u Y3JhX25hbWVbMF0gIT0gJ1wwJzsgaSsrKSB7CisJCWFsZyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVj dCBhaGFzaF9zYW1wbGVfYWxnKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghYWxnKQorCQkJcmV0dXJu IC1FTk9NRU07CisKKwkJYWxnLT5hbGcgCQk9IGFoYXNoX3NhbXBsZV9hbGdfdGJsW2ldOworCQlJ TklUX0xJU1RfSEVBRCgmYWxnLT5hbGcuY3JhX2xpc3QpOworCQlhbGctPmRldiAJCT0gZGV2Owor CQlhbGctPmFsZy5jcmFfaW5pdAk9IGFoYXNoX3NhbXBsZV9hbGdfaW5pdDsKKwkJYWxnLT5hbGcu Y3JhX2V4aXQJPSBhaGFzaF9zYW1wbGVfYWxnX2V4aXQ7CisJCWxpc3RfYWRkX3RhaWwoJmFsZy0+ ZW50cnksICZkZXYtPmFsZ19saXN0KTsKKwkJcmMgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGct PmFsZyk7CisJCWlmIChyYykgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJIkFIQVNIX1NBTVBM RTogZmFpbGVkIHRvIHJlZ2lzdGVyIGFsZyAlcy4lcyIsCisJCQkJYWhhc2hfc2FtcGxlX2FsZ190 YmxbaV0uY3JhX2RyaXZlcl9uYW1lLAorCQkJCWFoYXNoX3NhbXBsZV9hbGdfdGJsW2ldLmNyYV9u YW1lKTsKKworCQkJbGlzdF9kZWwoJmFsZy0+ZW50cnkpOworCQkJa2ZyZWUoYWxnKTsKKwkJCXJl dHVybiByYzsKKwkJfQorCX0KKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgX19kZXZpbml0 IGFoYXNoX3NhbXBsZV9pbml0KHZvaWQpCit7CisJaW50IGVycjsKKworCWFoYXNoX3NhbXBsZV9k ZXYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYWhhc2hfc2FtcGxlX2RldmljZSkgKworCQkJCXNp emVvZihzdHJ1Y3QgY3J5cHRvX2FsZyksCisJCQkJR0ZQX0tFUk5FTCk7CisJaWYgKCFhaGFzaF9z YW1wbGVfZGV2KSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXJyX25vbWVtOworCX0KKwor CUlOSVRfTElTVF9IRUFEKCZhaGFzaF9zYW1wbGVfZGV2LT5hbGdfbGlzdCk7CisJc3RybmNweShh aGFzaF9zYW1wbGVfZGV2LT5uYW1lLCAiQUhBU0hfZ2VuZXJpYyIsCisJCXNpemVvZihhaGFzaF9z YW1wbGVfZGV2LT5uYW1lKSk7CisKKwllcnIgPSBhaGFzaF9zYW1wbGVfcmVnaXN0ZXJfYWxnKGFo YXNoX3NhbXBsZV9kZXYpOworCWlmIChlcnIpCisJCWdvdG8gZXJyX3JlZ2lzdGVyX2FsZzsKKwor CS8qIEluaXQgdGFza2xldCBmb3IgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgKi8KKwl0YXNrbGV0 X2luaXQoJmFoYXNoX3NhbXBsZV9kZXYtPnRhc2tsZXQsIGFoYXNoX3NhbXBsZV9iaF90YXNrbGV0 X2NiLAorCQkodW5zaWduZWQgbG9uZykgYWhhc2hfc2FtcGxlX2Rldik7CisJY3J5cHRvX2luaXRf cXVldWUoJmFoYXNoX3NhbXBsZV9kZXYtPnF1ZXVlLCA2NCoxMDI0KTsKKworCXByaW50ayhLRVJO X0lORk8gIkFIQVNIX1NBTVBMRTogQXN5bmNocm9ub3VzICIKKwkJImhhc2hpbmcgc2FtcGxlIGRy aXZlciBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC5cbiIpOworCXJldHVybiAwOworCitlcnJfcmVn aXN0ZXJfYWxnOgorCWtmcmVlKGFoYXNoX3NhbXBsZV9kZXYpOworCWFoYXNoX3NhbXBsZV9kZXYg PSBOVUxMOworCitlcnJfbm9tZW06CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgX19k ZXZleGl0IGFoYXNoX3NhbXBsZV9maW5pKHZvaWQpCit7CisJYWhhc2hfc2FtcGxlX3VucmVnaXN0 ZXJfYWxnKGFoYXNoX3NhbXBsZV9kZXYpOworCWtmcmVlKGFoYXNoX3NhbXBsZV9kZXYpOworCWFo YXNoX3NhbXBsZV9kZXYgPSBOVUxMOworCXByaW50ayhLRVJOX0lORk8KKwkJIkFIQVNIX1NBTVBM RTogRHJpdmVyIGZvciB0ZXN0aW5nIGFzeW5jaHJvbm91cyBoYXNoIHN1cHBvcnQgIgorCQkiZnJh bWV3b3JrIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQuXG4iKTsKK30KKworbW9k dWxlX2luaXQoYWhhc2hfc2FtcGxlX2luaXQpOworbW9kdWxlX2V4aXQoYWhhc2hfc2FtcGxlX2Zp bmkpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQVVUSE9SKCJMb2MgSG8gPGxo b0BhbWNjLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiU2FtcGxlIGFzeW5jaHJvbm91cyBo YXNoIGRyaXZlciIpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jcnlwdG8vYWxnYXBpLmggYi9pbmNs dWRlL2NyeXB0by9hbGdhcGkuaAppbmRleCA2MGQwNmU3Li5mZWYyNzJhIDEwMDY0NAotLS0gYS9p bmNsdWRlL2NyeXB0by9hbGdhcGkuaAorKysgYi9pbmNsdWRlL2NyeXB0by9hbGdhcGkuaApAQCAt OTgsNiArOTgsNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGNyeXB0b190eXBlIGNyeXB0b19hYmxr Y2lwaGVyX3R5cGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGNyeXB0b190eXBlIGNyeXB0b19hZWFk X3R5cGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGNyeXB0b190eXBlIGNyeXB0b19ibGtjaXBoZXJf dHlwZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgY3J5cHRvX3R5cGUgY3J5cHRvX2hhc2hfdHlwZTsK K2V4dGVybiBjb25zdCBzdHJ1Y3QgY3J5cHRvX3R5cGUgY3J5cHRvX2FoYXNoX3R5cGU7CiAKIHZv aWQgY3J5cHRvX21vZF9wdXQoc3RydWN0IGNyeXB0b19hbGcgKmFsZyk7CiAKQEAgLTMxNCw1ICsz MTUsNDAgQEAgc3RhdGljIGlubGluZSBpbnQgY3J5cHRvX3JlcXVpcmVzX3N5bmModTMyIHR5cGUs IHUzMiBtYXNrKQogCXJldHVybiAodHlwZSBeIENSWVBUT19BTEdfQVNZTkMpICYgbWFzayAmIENS WVBUT19BTEdfQVNZTkM7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCAqY3J5cHRvX2FoYXNoX2N0 eChzdHJ1Y3QgY3J5cHRvX2FoYXNoICp0Zm0pCit7CisJcmV0dXJuIGNyeXB0b190Zm1fY3R4KCZ0 Zm0tPmJhc2UpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBhaGFzaF9hbGcgKmNyeXB0b19h aGFzaF9hbGcoCisJc3RydWN0IGNyeXB0b19haGFzaCAqdGZtKQoreworCXJldHVybiAmY3J5cHRv X2FoYXNoX3RmbSh0Zm0pLT5fX2NydF9hbGctPmNyYV9haGFzaDsKK30KKworc3RhdGljIGlubGlu ZSBpbnQgYWhhc2hfZW5xdWV1ZV9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fcXVldWUgKnF1ZXVlLAor CQkJCQkgICAgIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXF1ZXN0KQoreworCXJldHVybiBjcnlw dG9fZW5xdWV1ZV9yZXF1ZXN0KHF1ZXVlLCAmcmVxdWVzdC0+YmFzZSk7Cit9CisKK3N0YXRpYyBp bmxpbmUgc3RydWN0IGFoYXNoX3JlcXVlc3QgKmFoYXNoX2RlcXVldWVfcmVxdWVzdCgKKwlzdHJ1 Y3QgY3J5cHRvX3F1ZXVlICpxdWV1ZSkKK3sKKwlyZXR1cm4gYWhhc2hfcmVxdWVzdF9jYXN0KGNy eXB0b19kZXF1ZXVlX3JlcXVlc3QocXVldWUpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICph aGFzaF9yZXF1ZXN0X2N0eChzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKQoreworCXJldHVybiBy ZXEtPl9fY3R4OworfQorCitzdGF0aWMgaW5saW5lIGludCBhaGFzaF90Zm1faW5fcXVldWUoc3Ry dWN0IGNyeXB0b19xdWV1ZSAqcXVldWUsCisJCQkJCSAgc3RydWN0IGNyeXB0b19haGFzaCAqdGZt KQoreworCXJldHVybiBjcnlwdG9fdGZtX2luX3F1ZXVlKHF1ZXVlLCBjcnlwdG9fYWhhc2hfdGZt KHRmbSkpOworfQorCisKICNlbmRpZgkvKiBfQ1JZUFRPX0FMR0FQSV9IICovCiAKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvY3J5cHRvLmggYi9pbmNsdWRlL2xpbnV4L2NyeXB0by5oCmluZGV4 IDVlMDJkMWIuLmZlOWE1YzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3J5cHRvLmgKKysr IGIvaW5jbHVkZS9saW51eC9jcnlwdG8uaApAQCAtNywxMCArNywxMCBAQAogICoKICAqIFBvcnRp b25zIGRlcml2ZWQgZnJvbSBDcnlwdG9hcGksIGJ5IEFsZXhhbmRlciBLamVsZGFhcyA8YXN0b3JA ZmFzdC5ubz4KICAqIGFuZCBOZXR0bGUsIGJ5IE5pZWxzIE3DtmxsZXIuCi0gKiAKKyAqCiAgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAogICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg CisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCiAgKi8KQEAg LTM3LDYgKzM3LDcgQEAKICNkZWZpbmUgQ1JZUFRPX0FMR19UWVBFX0dJVkNJUEhFUgkweDAwMDAw MDA2CiAjZGVmaW5lIENSWVBUT19BTEdfVFlQRV9DT01QUkVTUwkweDAwMDAwMDA4CiAjZGVmaW5l IENSWVBUT19BTEdfVFlQRV9BRUFECQkweDAwMDAwMDA5CisjZGVmaW5lIENSWVBUT19BTEdfVFlQ RV9BSEFTSAkJMHgwMDAwMDAwQQogCiAjZGVmaW5lIENSWVBUT19BTEdfVFlQRV9IQVNIX01BU0sJ MHgwMDAwMDAwZQogI2RlZmluZSBDUllQVE9fQUxHX1RZUEVfQkxLQ0lQSEVSX01BU0sJMHgwMDAw MDAwYwpAQCAtMTAyLDYgKzEwMyw3IEBAIHN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdDsKIHN0 cnVjdCBjcnlwdG9fYWVhZDsKIHN0cnVjdCBjcnlwdG9fYmxrY2lwaGVyOwogc3RydWN0IGNyeXB0 b19oYXNoOworc3RydWN0IGNyeXB0b19haGFzaDsKIHN0cnVjdCBjcnlwdG9fdGZtOwogc3RydWN0 IGNyeXB0b190eXBlOwogc3RydWN0IGFlYWRfZ2l2Y3J5cHRfcmVxdWVzdDsKQEAgLTEzMSw2ICsx MzMsMTYgQEAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCB7CiAJdm9pZCAqX19jdHhbXSBDUllQ VE9fTUlOQUxJR05fQVRUUjsKIH07CiAKK3N0cnVjdCBhaGFzaF9yZXF1ZXN0IHsKKwlzdHJ1Y3Qg Y3J5cHRvX2FzeW5jX3JlcXVlc3QgYmFzZTsKKworCXVuc2lnbmVkIGludCBuYnl0ZXM7CisJc3Ry dWN0IHNjYXR0ZXJsaXN0ICpzcmM7CisJdTgJCSAgICpyZXN1bHQ7CisKKwl2b2lkICpfX2N0eFtd IENSWVBUT19NSU5BTElHTl9BVFRSOworfTsKKwogLyoqCiAgKglzdHJ1Y3QgYWVhZF9yZXF1ZXN0 IC0gQUVBRCByZXF1ZXN0CiAgKglAYmFzZTogQ29tbW9uIGF0dHJpYnV0ZXMgZm9yIGFzeW5jIGNy eXB0byByZXF1ZXN0cwpAQCAtMTk1LDYgKzIwNywxNyBAQCBzdHJ1Y3QgYWJsa2NpcGhlcl9hbGcg ewogCXVuc2lnbmVkIGludCBpdnNpemU7CiB9OwogCitzdHJ1Y3QgYWhhc2hfYWxnIHsKKwlpbnQg KCppbml0KShzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKTsKKwlpbnQgKCp1cGRhdGUpKHN0cnVj dCBhaGFzaF9yZXF1ZXN0ICpyZXEpOworCWludCAoKmZpbmFsKShzdHJ1Y3QgYWhhc2hfcmVxdWVz dCAqcmVxKTsKKwlpbnQgKCpkaWdlc3QpKHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpOworCWlu dCAoKnNldGtleSkoc3RydWN0IGNyeXB0b19haGFzaCAqdGZtLCBjb25zdCB1OCAqa2V5LAorCQkJ dW5zaWduZWQgaW50IGtleWxlbik7CisKKwl1bnNpZ25lZCBpbnQgZGlnZXN0c2l6ZTsKK307CisK IHN0cnVjdCBhZWFkX2FsZyB7CiAJaW50ICgqc2V0a2V5KShzdHJ1Y3QgY3J5cHRvX2FlYWQgKnRm bSwgY29uc3QgdTggKmtleSwKIAkgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBrZXlsZW4pOwpA QCAtMjcyLDYgKzI5NSw3IEBAIHN0cnVjdCBjb21wcmVzc19hbGcgewogI2RlZmluZSBjcmFfY2lw aGVyCWNyYV91LmNpcGhlcgogI2RlZmluZSBjcmFfZGlnZXN0CWNyYV91LmRpZ2VzdAogI2RlZmlu ZSBjcmFfaGFzaAljcmFfdS5oYXNoCisjZGVmaW5lIGNyYV9haGFzaAljcmFfdS5haGFzaAogI2Rl ZmluZSBjcmFfY29tcHJlc3MJY3JhX3UuY29tcHJlc3MKIAogc3RydWN0IGNyeXB0b19hbGcgewpA QCAtMjk4LDEzICszMjIsMTQgQEAgc3RydWN0IGNyeXB0b19hbGcgewogCQlzdHJ1Y3QgY2lwaGVy X2FsZyBjaXBoZXI7CiAJCXN0cnVjdCBkaWdlc3RfYWxnIGRpZ2VzdDsKIAkJc3RydWN0IGhhc2hf YWxnIGhhc2g7CisJCXN0cnVjdCBhaGFzaF9hbGcgYWhhc2g7CiAJCXN0cnVjdCBjb21wcmVzc19h bGcgY29tcHJlc3M7CiAJfSBjcmFfdTsKIAogCWludCAoKmNyYV9pbml0KShzdHJ1Y3QgY3J5cHRv X3RmbSAqdGZtKTsKIAl2b2lkICgqY3JhX2V4aXQpKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pOwog CXZvaWQgKCpjcmFfZGVzdHJveSkoc3RydWN0IGNyeXB0b19hbGcgKmFsZyk7Ci0JCisKIAlzdHJ1 Y3QgbW9kdWxlICpjcmFfbW9kdWxlOwogfTsKIApAQCAtMzkwLDYgKzQxNSwxOSBAQCBzdHJ1Y3Qg aGFzaF90Zm0gewogCXVuc2lnbmVkIGludCBkaWdlc3RzaXplOwogfTsKIAorc3RydWN0IGFoYXNo X3RmbSB7CisJaW50ICgqaW5pdCkoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSk7CisJaW50ICgq dXBkYXRlKShzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKTsKKwlpbnQgKCpmaW5hbCkoc3RydWN0 IGFoYXNoX3JlcXVlc3QgKnJlcSk7CisJaW50ICgqZGlnZXN0KShzdHJ1Y3QgYWhhc2hfcmVxdWVz dCAqcmVxKTsKKwlpbnQgKCpzZXRrZXkpKHN0cnVjdCBjcnlwdG9fYWhhc2ggKnRmbSwgY29uc3Qg dTggKmtleSwKKwkJCXVuc2lnbmVkIGludCBrZXlsZW4pOworCisJdW5zaWduZWQgaW50IGRpZ2Vz dHNpemU7CisJc3RydWN0IGNyeXB0b19haGFzaCAqYmFzZTsKKwl1bnNpZ25lZCBpbnQgcmVxc2l6 ZTsKK307CisKIHN0cnVjdCBjb21wcmVzc190Zm0gewogCWludCAoKmNvdF9jb21wcmVzcykoc3Ry dWN0IGNyeXB0b190Zm0gKnRmbSwKIAkgICAgICAgICAgICAgICAgICAgIGNvbnN0IHU4ICpzcmMs IHVuc2lnbmVkIGludCBzbGVuLApAQCAtNDA0LDIxICs0NDIsMjMgQEAgc3RydWN0IGNvbXByZXNz X3RmbSB7CiAjZGVmaW5lIGNydF9ibGtjaXBoZXIJY3J0X3UuYmxrY2lwaGVyCiAjZGVmaW5lIGNy dF9jaXBoZXIJY3J0X3UuY2lwaGVyCiAjZGVmaW5lIGNydF9oYXNoCWNydF91Lmhhc2gKKyNkZWZp bmUgY3J0X2FoYXNoCWNydF91LmFoYXNoCiAjZGVmaW5lIGNydF9jb21wcmVzcwljcnRfdS5jb21w cmVzcwogCiBzdHJ1Y3QgY3J5cHRvX3RmbSB7CiAKIAl1MzIgY3J0X2ZsYWdzOwotCQorCiAJdW5p b24gewogCQlzdHJ1Y3QgYWJsa2NpcGhlcl90Zm0gYWJsa2NpcGhlcjsKIAkJc3RydWN0IGFlYWRf dGZtIGFlYWQ7CiAJCXN0cnVjdCBibGtjaXBoZXJfdGZtIGJsa2NpcGhlcjsKIAkJc3RydWN0IGNp cGhlcl90Zm0gY2lwaGVyOwogCQlzdHJ1Y3QgaGFzaF90Zm0gaGFzaDsKKwkJc3RydWN0IGFoYXNo X3RmbSBhaGFzaDsKIAkJc3RydWN0IGNvbXByZXNzX3RmbSBjb21wcmVzczsKIAl9IGNydF91Owot CQorCiAJc3RydWN0IGNyeXB0b19hbGcgKl9fY3J0X2FsZzsKIAogCXZvaWQgKl9fY3J0X2N0eFtd IENSWVBUT19NSU5BTElHTl9BVFRSOwpAQCAtNDQ4LDYgKzQ4OCwxMCBAQCBzdHJ1Y3QgY3J5cHRv X2hhc2ggewogCXN0cnVjdCBjcnlwdG9fdGZtIGJhc2U7CiB9OwogCitzdHJ1Y3QgY3J5cHRvX2Fo YXNoIHsKKwlzdHJ1Y3QgY3J5cHRvX3RmbSBiYXNlOworfTsKKwogZW51bSB7CiAJQ1JZUFRPQV9V TlNQRUMsCiAJQ1JZUFRPQV9BTEcsCkBAIC00NzcsNyArNTIxLDcgQEAgc3RydWN0IGNyeXB0b19h dHRyX3UzMiB7CiAvKiAKICAqIFRyYW5zZm9ybSB1c2VyIGludGVyZmFjZS4KICAqLwotIAorCiBz dHJ1Y3QgY3J5cHRvX3RmbSAqY3J5cHRvX2FsbG9jX3RmbShjb25zdCBjaGFyICphbGdfbmFtZSwg dTMyIHRmbV9mbGFncyk7CiBzdHJ1Y3QgY3J5cHRvX3RmbSAqY3J5cHRvX2FsbG9jX2Jhc2UoY29u c3QgY2hhciAqYWxnX25hbWUsIHUzMiB0eXBlLCB1MzIgbWFzayk7CiB2b2lkIGNyeXB0b19mcmVl X3RmbShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKQEAgLTExMTIsNyArMTE1Niw3IEBAIHN0YXRp YyBpbmxpbmUgc3RydWN0IGNyeXB0b19oYXNoICpjcnlwdG9fYWxsb2NfaGFzaChjb25zdCBjaGFy ICphbGdfbmFtZSwKIAkJCQkJCSAgICB1MzIgdHlwZSwgdTMyIG1hc2spCiB7CiAJdHlwZSAmPSB+ Q1JZUFRPX0FMR19UWVBFX01BU0s7Ci0JbWFzayAmPSB+Q1JZUFRPX0FMR19UWVBFX01BU0s7CisJ bWFzayAmPSB+KENSWVBUT19BTEdfVFlQRV9NQVNLIHwgQ1JZUFRPX0FMR19BU1lOQyk7CiAJdHlw ZSB8PSBDUllQVE9fQUxHX1RZUEVfSEFTSDsKIAltYXNrIHw9IENSWVBUT19BTEdfVFlQRV9IQVNI X01BU0s7CiAKQEAgLTEyNzEsNSArMTMxNSwxMzAgQEAgc3RhdGljIGlubGluZSBpbnQgY3J5cHRv X2NvbXBfZGVjb21wcmVzcyhzdHJ1Y3QgY3J5cHRvX2NvbXAgKnRmbSwKIAkJCQkJCSAgICBzcmMs IHNsZW4sIGRzdCwgZGxlbik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNyeXB0b190Zm0g KmNyeXB0b19haGFzaF90Zm0oCisJc3RydWN0IGNyeXB0b19haGFzaCAqdGZtKQoreworCXJldHVy biAmdGZtLT5iYXNlOworfQorCitzdHJ1Y3QgY3J5cHRvX2FoYXNoICpjcnlwdG9fYWxsb2NfYWhh c2goY29uc3QgY2hhciAqYWxnX25hbWUsCisJCQkJCXUzMiB0eXBlLCB1MzIgbWFzayk7CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9fZnJlZV9haGFzaChzdHJ1Y3QgY3J5cHRvX2FoYXNoICp0 Zm0pCit7CisJY3J5cHRvX2ZyZWVfdGZtKGNyeXB0b19haGFzaF90Zm0odGZtKSk7Cit9CisKK3N0 YXRpYyBpbmxpbmUgc3RydWN0IGNyeXB0b19haGFzaCAqX19jcnlwdG9fYWhhc2hfY2FzdChzdHJ1 Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXJldHVybiAoc3RydWN0IGNyeXB0b19haGFzaCAqKSB0 Zm07Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNyeXB0b19haGFzaF9hbGlnbm1h c2soCisJc3RydWN0IGNyeXB0b19haGFzaCAqdGZtKQoreworCXJldHVybiBjcnlwdG9fdGZtX2Fs Z19hbGlnbm1hc2soY3J5cHRvX2FoYXNoX3RmbSh0Zm0pKTsKK30KKworc3RhdGljIGlubGluZSBz dHJ1Y3QgYWhhc2hfdGZtICpjcnlwdG9fYWhhc2hfY3J0KHN0cnVjdCBjcnlwdG9fYWhhc2ggKnRm bSkKK3sKKwlyZXR1cm4gJmNyeXB0b19haGFzaF90Zm0odGZtKS0+Y3J0X2FoYXNoOworfQorCitz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcnlwdG9fYWhhc2hfZGlnZXN0c2l6ZShzdHJ1Y3Qg Y3J5cHRvX2FoYXNoICp0Zm0pCit7CisJcmV0dXJuIGNyeXB0b19haGFzaF9jcnQodGZtKS0+ZGln ZXN0c2l6ZTsKK30KKworc3RhdGljIGlubGluZSB1MzIgY3J5cHRvX2FoYXNoX2dldF9mbGFncyhz dHJ1Y3QgY3J5cHRvX2FoYXNoICp0Zm0pCit7CisJcmV0dXJuIGNyeXB0b190Zm1fZ2V0X2ZsYWdz KGNyeXB0b19haGFzaF90Zm0odGZtKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9f YWhhc2hfc2V0X2ZsYWdzKHN0cnVjdCBjcnlwdG9fYWhhc2ggKnRmbSwgdTMyIGZsYWdzKQorewor CWNyeXB0b190Zm1fc2V0X2ZsYWdzKGNyeXB0b19haGFzaF90Zm0odGZtKSwgZmxhZ3MpOworfQor CitzdGF0aWMgaW5saW5lIHZvaWQgY3J5cHRvX2FoYXNoX2NsZWFyX2ZsYWdzKHN0cnVjdCBjcnlw dG9fYWhhc2ggKnRmbSwgdTMyIGZsYWdzKQoreworCWNyeXB0b190Zm1fY2xlYXJfZmxhZ3MoY3J5 cHRvX2FoYXNoX3RmbSh0Zm0pLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNy eXB0b19haGFzaCAqY3J5cHRvX2FoYXNoX3JlcXRmbSgKKwlzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAq cmVxKQoreworCXJldHVybiBfX2NyeXB0b19haGFzaF9jYXN0KHJlcS0+YmFzZS50Zm0pOworfQor CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcnlwdG9fYWhhc2hfcmVxc2l6ZShzdHJ1Y3Qg Y3J5cHRvX2FoYXNoICp0Zm0pCit7CisJcmV0dXJuIGNyeXB0b19haGFzaF9jcnQodGZtKS0+cmVx c2l6ZTsKK30KKworc3RhdGljIGlubGluZSBpbnQgY3J5cHRvX2FoYXNoX3NldGtleShzdHJ1Y3Qg Y3J5cHRvX2FoYXNoICp0Zm0sCisJCQkJCWNvbnN0IHU4ICprZXksIHVuc2lnbmVkIGludCBrZXls ZW4pCit7CisJc3RydWN0IGFoYXNoX3RmbSAqY3J0ID0gY3J5cHRvX2FoYXNoX2NydCh0Zm0pOwor CisJcmV0dXJuIGNydC0+c2V0a2V5KGNydC0+YmFzZSwga2V5LCBrZXlsZW4pOworfQorCitzdGF0 aWMgaW5saW5lIGludCBjcnlwdG9fYWhhc2hfZGlnZXN0KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpy ZXEpCit7CisJc3RydWN0IGFoYXNoX3RmbSAqY3J0ID0gY3J5cHRvX2FoYXNoX2NydChjcnlwdG9f YWhhc2hfcmVxdGZtKHJlcSkpOworCXJldHVybiBjcnQtPmRpZ2VzdChyZXEpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgYWhhc2hfcmVxdWVzdF9zZXRfdGZtKAorCXN0cnVjdCBhaGFzaF9yZXF1 ZXN0ICpyZXEsIHN0cnVjdCBjcnlwdG9fYWhhc2ggKnRmbSkKK3sKKwlyZXEtPmJhc2UudGZtID0g Y3J5cHRvX2FoYXNoX3RmbShjcnlwdG9fYWhhc2hfY3J0KHRmbSktPmJhc2UpOworfQorCitzdGF0 aWMgaW5saW5lIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICphaGFzaF9yZXF1ZXN0X2FsbG9jKAorCXN0 cnVjdCBjcnlwdG9fYWhhc2ggKnRmbSwgZ2ZwX3QgZ2ZwKQoreworCXN0cnVjdCBhaGFzaF9yZXF1 ZXN0ICpyZXE7CisKKwlyZXEgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWhhc2hfcmVxdWVzdCkg KworCQkgICAgICBjcnlwdG9fYWhhc2hfcmVxc2l6ZSh0Zm0pLCBnZnApOworCisJaWYgKGxpa2Vs eShyZXEpKQorCQlhaGFzaF9yZXF1ZXN0X3NldF90Zm0ocmVxLCB0Zm0pOworCisJcmV0dXJuIHJl cTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFoYXNoX3JlcXVlc3RfZnJlZShzdHJ1Y3QgYWhh c2hfcmVxdWVzdCAqcmVxKQoreworCWtmcmVlKHJlcSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IGFoYXNoX3JlcXVlc3QgKmFoYXNoX3JlcXVlc3RfY2FzdCgKKwlzdHJ1Y3QgY3J5cHRvX2Fz eW5jX3JlcXVlc3QgKnJlcSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHJlcSwgc3RydWN0IGFo YXNoX3JlcXVlc3QsIGJhc2UpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWhhc2hfcmVxdWVz dF9zZXRfY2FsbGJhY2soCisJc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwKKwl1MzIgZmxhZ3Ms IGNyeXB0b19jb21wbGV0aW9uX3QgY29tcGxldGUsIHZvaWQgKmRhdGEpCit7CisJcmVxLT5iYXNl LmNvbXBsZXRlID0gY29tcGxldGU7CisJcmVxLT5iYXNlLmRhdGEgPSBkYXRhOworCXJlcS0+YmFz ZS5mbGFncyA9IGZsYWdzOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWhhc2hfcmVxdWVzdF9z ZXRfY3J5cHQoCisJc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwKKwlzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNyYywgdTggKnJlc3VsdCwKKwl1bnNpZ25lZCBpbnQgbmJ5dGVzKQoreworCXJlcS0+c3Jj ID0gc3JjOworCXJlcS0+bmJ5dGVzID0gbmJ5dGVzOworCXJlcS0+cmVzdWx0ID0gcmVzdWx0Owor fQorCiAjZW5kaWYJLyogX0xJTlVYX0NSWVBUT19IICovCiAKLS0gCjEuNS4zCgo= ------_=_NextPart_001_01C8A49D.A361A62C Content-Type: application/octet-stream; name="0001-Async-Digest-Support.patch" Content-Transfer-Encoding: base64 Content-Description: 0001-Async-Digest-Support.patch Content-Disposition: attachment; filename="0001-Async-Digest-Support.patch" RnJvbSAwODdiZjNiZTIyOWY3YTNiNmUxNjA3ZDNiZTdiNzQ0N2U1YTYzYmFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb2MgSG8gPGxob0BhbWNjLmNvbT4KRGF0ZTogRnJpLCAyNSBK YW4gMjAwOCAxMzoyNjo1MiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFzeW5jIERpZ2VzdCBTdXBw b3J0CgpBZGQgYXN5bmNocm9ub3VzIGRpZ2VzdCBzdXBwb3J0IHVzaW5nIGFzeW5jaHJvbm91cyBo YXNoIGludGVyZmFjZS4KLS0tCiBjcnlwdG8vYWhhc2guYyAgICAgICAgICAgICAgICB8ICAgIDkg KysrKy0KIGNyeXB0by9hcGkuYyAgICAgICAgICAgICAgICAgIHwgICAgOSArKystCiBjcnlwdG8v ZGlnZXN0LmMgICAgICAgICAgICAgICB8ICAgODMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KIGNyeXB0by9pbnRlcm5hbC5oICAgICAgICAgICAgIHwgICAgMSArCiBj cnlwdG8vdGNyeXB0LmMgICAgICAgICAgICAgICB8ICAgNDAgKysrKysrKysrKysrKysrLS0tLS0K IGRyaXZlcnMvY3J5cHRvL2FoYXNoX3NhbXBsZS5jIHwgICAxNyArKysrKysrKwogaW5jbHVkZS9s aW51eC9jcnlwdG8uaCAgICAgICAgfCAgICA2ICsrKwogNyBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5z ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY3J5cHRvL2FoYXNoLmMg Yi9jcnlwdG8vYWhhc2guYwppbmRleCBlOWJmNzJmLi45MjNmYzBlIDEwMDY0NAotLS0gYS9jcnlw dG8vYWhhc2guYworKysgYi9jcnlwdG8vYWhhc2guYwpAQCAtNTcsNiArNTcsMTMgQEAgc3RhdGlj IGludCBhaGFzaF9zZXRrZXkoc3RydWN0IGNyeXB0b19haGFzaCAqdGZtLCBjb25zdCB1OCAqa2V5 LAogCXJldHVybiBhaGFzaC0+c2V0a2V5KHRmbSwga2V5LCBrZXlsZW4pOwogfQogCitzdGF0aWMg aW50IGFoYXNoX25vc2V0a2V5KHN0cnVjdCBjcnlwdG9fYWhhc2ggKnRmbSwgY29uc3QgdTggKmtl eSwKKwkJCXVuc2lnbmVkIGludCBrZXlsZW4pCit7CisJY3J5cHRvX2FoYXNoX2NsZWFyX2ZsYWdz KHRmbSwgQ1JZUFRPX1RGTV9SRVNfTUFTSyk7CisJcmV0dXJuIC1FTk9TWVM7Cit9CisKIHN0YXRp YyB1bnNpZ25lZCBpbnQgY3J5cHRvX2FoYXNoX2N0eHNpemUoc3RydWN0IGNyeXB0b19hbGcgKmFs ZywgdTMyIHR5cGUsCiAJCQkJCXUzMiBtYXNrKQogewpAQCAtNzUsNyArODIsNyBAQCBzdGF0aWMg aW50IGNyeXB0b19pbml0X2FoYXNoX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1MzIgdHlw ZSwgdTMyIG1hc2spCiAJY3J0LT51cGRhdGUgPSBhbGctPnVwZGF0ZTsKIAljcnQtPmZpbmFsICA9 IGFsZy0+ZmluYWw7CiAJY3J0LT5kaWdlc3QgPSBhbGctPmRpZ2VzdDsKLQljcnQtPnNldGtleSA9 IGFoYXNoX3NldGtleTsKKwljcnQtPnNldGtleSA9IGFsZy0+c2V0a2V5ID8gYWhhc2hfc2V0a2V5 IDogYWhhc2hfbm9zZXRrZXk7CiAJY3J0LT5iYXNlICAgPSBfX2NyeXB0b19haGFzaF9jYXN0KHRm bSk7CiAJY3J0LT5kaWdlc3RzaXplID0gYWxnLT5kaWdlc3RzaXplOwogCmRpZmYgLS1naXQgYS9j cnlwdG8vYXBpLmMgYi9jcnlwdG8vYXBpLmMKaW5kZXggYzMyMTNmNC4uNmVmYTNiNiAxMDA2NDQK LS0tIGEvY3J5cHRvL2FwaS5jCisrKyBiL2NyeXB0by9hcGkuYwpAQCAtMjMzLDEwICsyMzMsMTMg QEAgc3RhdGljIGludCBjcnlwdG9faW5pdF9vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTMy IHR5cGUsIHUzMiBtYXNrKQogCXN3aXRjaCAoY3J5cHRvX3RmbV9hbGdfdHlwZSh0Zm0pKSB7CiAJ Y2FzZSBDUllQVE9fQUxHX1RZUEVfQ0lQSEVSOgogCQlyZXR1cm4gY3J5cHRvX2luaXRfY2lwaGVy X29wcyh0Zm0pOwotCQkKKwogCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0RJR0VTVDoKLQkJcmV0dXJu IGNyeXB0b19pbml0X2RpZ2VzdF9vcHModGZtKTsKLQkJCisJCWlmIChtYXNrICYgQ1JZUFRPX0FM R19BU1lOQykKKwkJCXJldHVybiBjcnlwdG9faW5pdF9kaWdlc3Rfb3BzX2FzeW5jKHRmbSk7CisJ CWVsc2UKKwkJCXJldHVybiBjcnlwdG9faW5pdF9kaWdlc3Rfb3BzKHRmbSk7CisKIAljYXNlIENS WVBUT19BTEdfVFlQRV9DT01QUkVTUzoKIAkJcmV0dXJuIGNyeXB0b19pbml0X2NvbXByZXNzX29w cyh0Zm0pOwogCQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2RpZ2VzdC5jIGIvY3J5cHRvL2RpZ2VzdC5j CmluZGV4IDE5YjdhZGUuLmZkMTA3YjcgMTAwNjQ0Ci0tLSBhL2NyeXB0by9kaWdlc3QuYworKysg Yi9jcnlwdG8vZGlnZXN0LmMKQEAgLTcsNyArNyw3IEBACiAgKgogICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK ICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIAorICogU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAgKgogICovCkBAIC0xNTUsMyArMTU1LDg0 IEBAIGludCBjcnlwdG9faW5pdF9kaWdlc3Rfb3BzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pCiB2 b2lkIGNyeXB0b19leGl0X2RpZ2VzdF9vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKIHsKIH0K Kworc3RhdGljIGludCBkaWdlc3RfYXN5bmNfbm9zZXRrZXkoc3RydWN0IGNyeXB0b19haGFzaCAq dGZtX2FzeW5jLCBjb25zdCB1OCAqa2V5LAorCQkJdW5zaWduZWQgaW50IGtleWxlbikKK3sKKwlj cnlwdG9fYWhhc2hfY2xlYXJfZmxhZ3ModGZtX2FzeW5jLCBDUllQVE9fVEZNX1JFU19NQVNLKTsK KwlyZXR1cm4gLUVOT1NZUzsKK30KKworc3RhdGljIGludCBkaWdlc3RfYXN5bmNfc2V0a2V5KHN0 cnVjdCBjcnlwdG9fYWhhc2ggKnRmbV9hc3luYywgY29uc3QgdTggKmtleSwKKwkJCXVuc2lnbmVk IGludCBrZXlsZW4pCit7CisJc3RydWN0IGNyeXB0b190Zm0gICAgKnRmbSAgICAgICAgPSBjcnlw dG9fYWhhc2hfdGZtKHRmbV9hc3luYyk7CisJc3RydWN0IGRpZ2VzdF9hbGcgICAgKmRhbGcgICAg ICAgPSAmdGZtLT5fX2NydF9hbGctPmNyYV9kaWdlc3Q7CisKKwljcnlwdG9fYWhhc2hfY2xlYXJf ZmxhZ3ModGZtX2FzeW5jLCBDUllQVE9fVEZNX1JFU19NQVNLKTsKKwlyZXR1cm4gZGFsZy0+ZGlh X3NldGtleSh0Zm0sIGtleSwga2V5bGVuKTsKK30KKworc3RhdGljIGludCBkaWdlc3RfYXN5bmNf aW5pdChzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKQoreworCXN0cnVjdCBjcnlwdG9fdGZtICp0 Zm0gID0gcmVxLT5iYXNlLnRmbTsKKwlzdHJ1Y3QgZGlnZXN0X2FsZyAqZGFsZyA9ICZ0Zm0tPl9f Y3J0X2FsZy0+Y3JhX2RpZ2VzdDsKKworCWRhbGctPmRpYV9pbml0KHRmbSk7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZGlnZXN0X2FzeW5jX3VwZGF0ZShzdHJ1Y3QgYWhhc2hfcmVxdWVz dCAqcmVxKQoreworCXN0cnVjdCBjcnlwdG9fdGZtICp0Zm0gPSByZXEtPmJhc2UudGZtOworCXN0 cnVjdCBoYXNoX2Rlc2MgIGRlc2MgPSB7CisJCS50Zm0gICA9IF9fY3J5cHRvX2hhc2hfY2FzdCh0 Zm0pLAorCQkuZmxhZ3MgPSByZXEtPmJhc2UuZmxhZ3MsCisJfTsKKworCXVwZGF0ZSgmZGVzYywg cmVxLT5zcmMsIHJlcS0+bmJ5dGVzKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkaWdl c3RfYXN5bmNfZmluYWwoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkKK3sKKwlzdHJ1Y3QgY3J5 cHRvX3RmbSAqdGZtICA9IHJlcS0+YmFzZS50Zm07CisJc3RydWN0IGhhc2hfZGVzYyAgZGVzYyA9 IHsKKwkJLnRmbSAgID0gX19jcnlwdG9faGFzaF9jYXN0KHRmbSksCisJCS5mbGFncyA9IHJlcS0+ YmFzZS5mbGFncywKKwl9OworCisJZmluYWwoJmRlc2MsIHJlcS0+cmVzdWx0KTsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBkaWdlc3RfYXN5bmNfZGlnZXN0KHN0cnVjdCBhaGFzaF9yZXF1 ZXN0ICpyZXEpCit7CisJc3RydWN0IGNyeXB0b190Zm0gKnRmbSAgPSByZXEtPmJhc2UudGZtOwor CXN0cnVjdCBoYXNoX2Rlc2MgIGRlc2MgPSB7CisJCS50Zm0gICA9IF9fY3J5cHRvX2hhc2hfY2Fz dCh0Zm0pLAorCQkuZmxhZ3MgPSByZXEtPmJhc2UuZmxhZ3MsCisJfTsKKworCXJldHVybiBkaWdl c3QoJmRlc2MsIHJlcS0+c3JjLCByZXEtPm5ieXRlcywgcmVxLT5yZXN1bHQpOworfQorCitpbnQg Y3J5cHRvX2luaXRfZGlnZXN0X29wc19hc3luYyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQorewor CXN0cnVjdCBhaGFzaF90Zm0gICpjcnQgID0gJnRmbS0+Y3J0X2FoYXNoOworCXN0cnVjdCBkaWdl c3RfYWxnICpkYWxnID0gJnRmbS0+X19jcnRfYWxnLT5jcmFfZGlnZXN0OworCisJaWYgKGRhbGct PmRpYV9kaWdlc3RzaXplID4gY3J5cHRvX3RmbV9hbGdfYmxvY2tzaXplKHRmbSkpCisJCXJldHVy biAtRUlOVkFMOworCisJY3J0LT5pbml0ICAgICAgID0gZGlnZXN0X2FzeW5jX2luaXQ7CisJY3J0 LT51cGRhdGUgICAgID0gZGlnZXN0X2FzeW5jX3VwZGF0ZTsKKwljcnQtPmZpbmFsICAgICAgPSBk aWdlc3RfYXN5bmNfZmluYWw7CisJY3J0LT5kaWdlc3QgICAgID0gZGlnZXN0X2FzeW5jX2RpZ2Vz dDsKKwljcnQtPnNldGtleSAgICAgPSBkYWxnLT5kaWFfc2V0a2V5ID8gZGlnZXN0X2FzeW5jX3Nl dGtleSA6CisJCQkJCQlkaWdlc3RfYXN5bmNfbm9zZXRrZXk7CisJY3J0LT5kaWdlc3RzaXplID0g ZGFsZy0+ZGlhX2RpZ2VzdHNpemU7CisJY3J0LT5iYXNlICAgICAgID0gX19jcnlwdG9fYWhhc2hf Y2FzdCh0Zm0pOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9jcnlwdG8vaW50ZXJuYWwu aCBiL2NyeXB0by9pbnRlcm5hbC5oCmluZGV4IDMyZjRjMjEuLjY4M2ZjYjIgMTAwNjQ0Ci0tLSBh L2NyeXB0by9pbnRlcm5hbC5oCisrKyBiL2NyeXB0by9pbnRlcm5hbC5oCkBAIC04Niw2ICs4Niw3 IEBAIHN0cnVjdCBjcnlwdG9fYWxnICpfX2NyeXB0b19hbGdfbG9va3VwKGNvbnN0IGNoYXIgKm5h bWUsIHUzMiB0eXBlLCB1MzIgbWFzayk7CiBzdHJ1Y3QgY3J5cHRvX2FsZyAqY3J5cHRvX2FsZ19t b2RfbG9va3VwKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiB0eXBlLCB1MzIgbWFzayk7CiAKIGludCBj cnlwdG9faW5pdF9kaWdlc3Rfb3BzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pOworaW50IGNyeXB0 b19pbml0X2RpZ2VzdF9vcHNfYXN5bmMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSk7CiBpbnQgY3J5 cHRvX2luaXRfY2lwaGVyX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKIGludCBjcnlwdG9f aW5pdF9jb21wcmVzc19vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSk7CiAKZGlmZiAtLWdpdCBh L2NyeXB0by90Y3J5cHQuYyBiL2NyeXB0by90Y3J5cHQuYwppbmRleCA3ODRmMGI1Li5iNjgwMzA5 IDEwMDY0NAotLS0gYS9jcnlwdG8vdGNyeXB0LmMKKysrIGIvY3J5cHRvL3RjcnlwdC5jCkBAIC0x NzE2LDMzICsxNzE2LDUzIEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3Qodm9pZCkKIAkJdGVzdF9haGFz aCgiaG1hYyhtZDUpIiwgaG1hY19tZDVfdHZfdGVtcGxhdGUsCiAJCQkgIEhNQUNfTUQ1X1RFU1Rf VkVDVE9SUyk7CiAJCWJyZWFrOwotCiAJY2FzZSAxMTE6CiAJCXRlc3RfYWhhc2goImhtYWMoc2hh MSkiLCBobWFjX3NoYTFfdHZfdGVtcGxhdGUsCiAJCQkgIEhNQUNfU0hBMV9URVNUX1ZFQ1RPUlMp OwogCQlicmVhazsKLQogCWNhc2UgMTEyOgorCQl0ZXN0X2FoYXNoKCJobWFjKHNoYTIyNCkiLCBo bWFjX3NoYTIyNF90dl90ZW1wbGF0ZSwKKwkJCSAgSE1BQ19TSEEyMjRfVEVTVF9WRUNUT1JTKTsK KwkJYnJlYWs7CisJY2FzZSAxMTM6CiAJCXRlc3RfYWhhc2goImhtYWMoc2hhMjU2KSIsIGhtYWNf c2hhMjU2X3R2X3RlbXBsYXRlLAogCQkJICBITUFDX1NIQTI1Nl9URVNUX1ZFQ1RPUlMpOwogCQli cmVhazsKLQotCWNhc2UgMTEzOgorCWNhc2UgMTE0OgogCQl0ZXN0X2FoYXNoKCJobWFjKHNoYTM4 NCkiLCBobWFjX3NoYTM4NF90dl90ZW1wbGF0ZSwKIAkJCSAgSE1BQ19TSEEzODRfVEVTVF9WRUNU T1JTKTsKIAkJYnJlYWs7Ci0KLQljYXNlIDExNDoKKwljYXNlIDExNToKIAkJdGVzdF9haGFzaCgi aG1hYyhzaGE1MTIpIiwgaG1hY19zaGE1MTJfdHZfdGVtcGxhdGUsCiAJCQkgIEhNQUNfU0hBNTEy X1RFU1RfVkVDVE9SUyk7CiAJCWJyZWFrOwogCi0JY2FzZSAxMTU6Ci0JCXRlc3RfYWhhc2goImht YWMoc2hhMjI0KSIsIGhtYWNfc2hhMjI0X3R2X3RlbXBsYXRlLAotCQkJICBITUFDX1NIQTIyNF9U RVNUX1ZFQ1RPUlMpOworCWNhc2UgMTIwOgorCQl0ZXN0X2FoYXNoKCJtZDUiLCBtZDVfdHZfdGVt cGxhdGUsIE1ENV9URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKwljYXNlIDEyMToKKwkJdGVzdF9h aGFzaCgic2hhMSIsIHNoYTFfdHZfdGVtcGxhdGUsIFNIQTFfVEVTVF9WRUNUT1JTKTsKKwkJYnJl YWs7CisJY2FzZSAxMjI6CisJCXRlc3RfYWhhc2goInNoYTIyNCIsIHNoYTIyNF90dl90ZW1wbGF0 ZSwgU0hBMjI0X1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCWNhc2UgMTIzOgorCQl0ZXN0X2Fo YXNoKCJzaGEyNTYiLCBzaGEyNTZfdHZfdGVtcGxhdGUsIFNIQTI1Nl9URVNUX1ZFQ1RPUlMpOwor CQlicmVhazsKKwljYXNlIDEyNDoKKwkJdGVzdF9haGFzaCgic2hhMzg0Iiwgc2hhMzg0X3R2X3Rl bXBsYXRlLCBTSEEzODRfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisJY2FzZSAxMjU6CisJCXRl c3RfYWhhc2goInNoYTUxMiIsIHNoYTUxMl90dl90ZW1wbGF0ZSwgU0hBNTEyX1RFU1RfVkVDVE9S Uyk7CiAJCWJyZWFrOwogCi0JY2FzZSAxMjA6CisJY2FzZSAxMzA6CisJCXRlc3RfYWhhc2goIm1k NSIsIG1kNV90dl90ZW1wbGF0ZSwgTUQ1X1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfYWhhc2goInNo YTEiLCBzaGExX3R2X3RlbXBsYXRlLCBTSEExX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfYWhhc2go InNoYTIyNCIsIHNoYTIyNF90dl90ZW1wbGF0ZSwgU0hBMjI0X1RFU1RfVkVDVE9SUyk7CisJCXRl c3RfYWhhc2goInNoYTI1NiIsIHNoYTI1Nl90dl90ZW1wbGF0ZSwgU0hBMjU2X1RFU1RfVkVDVE9S Uyk7CisJCXRlc3RfYWhhc2goInNoYTM4NCIsIHNoYTM4NF90dl90ZW1wbGF0ZSwgU0hBMzg0X1RF U1RfVkVDVE9SUyk7CisJCXRlc3RfYWhhc2goInNoYTUxMiIsIHNoYTUxMl90dl90ZW1wbGF0ZSwg U0hBNTEyX1RFU1RfVkVDVE9SUyk7CiAJCXRlc3RfYWhhc2goImhtYWMobWQ1KSIsIGhtYWNfbWQ1 X3R2X3RlbXBsYXRlLAogCQkJICBITUFDX01ENV9URVNUX1ZFQ1RPUlMpOwogCQl0ZXN0X2FoYXNo KCJobWFjKHNoYTEpIiwgaG1hY19zaGExX3R2X3RlbXBsYXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9jcnlwdG8vYWhhc2hfc2FtcGxlLmMgYi9kcml2ZXJzL2NyeXB0by9haGFzaF9zYW1wbGUuYwpp bmRleCAwYzFhZDYwLi41YmQ2YWEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NyeXB0by9haGFzaF9z YW1wbGUuYworKysgYi9kcml2ZXJzL2NyeXB0by9haGFzaF9zYW1wbGUuYwpAQCAtMjM1LDYgKzIz NSwyMyBAQCBzdGF0aWMgdm9pZCBhaGFzaF9zYW1wbGVfYmhfdGFza2xldF9jYih1bnNpZ25lZCBs b25nIGRhdGEpCiAKIHN0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBhaGFzaF9zYW1wbGVfYWxnX3Ri bFtdID0KIHsKKwl7IC5jcmFfbmFtZQkJPSAibWQ1IiwKKwkgIC5jcmFfZHJpdmVyX25hbWUJPSAi YWhhc2gtbWQ1IiwKKwkgIC5jcmFfcHJpb3JpdHkJCT0gMzAwLAorCSAgLmNyYV9mbGFncwkJPSBD UllQVE9fQUxHX1RZUEVfQUhBU0ggfCBDUllQVE9fQUxHX0FTWU5DLAorCSAgLmNyYV9ibG9ja3Np emUJPSA2NCwgLyogTUQ1LUhNQUMgYmxvY2sgc2l6ZSBpcyA1MTItYml0cyAqLworCSAgLmNyYV9j dHhzaXplCQk9IHNpemVvZihzdHJ1Y3QgYWhhc2hfc2FtcGxlX2NvbnRleHQpLAorCSAgLmNyYV9h bGlnbm1hc2sgCT0gMCwKKwkgIC5jcmFfdHlwZQkJPSAmY3J5cHRvX2FoYXNoX3R5cGUsCisJICAu Y3JhX21vZHVsZQkJPSBUSElTX01PRFVMRSwKKwkgIC5jcmFfdQkJPSB7IC5haGFzaCA9IHsKKwkg IC5kaWdlc3RzaXplCQk9IDE2LCAvKiBEaXNnZXN0IGlzIDEyOC1iaXRzICovCisJICAuaW5pdCAg IAkJPSBhaGFzaF9zYW1wbGVfb3BzX2luaXQsCisJICAudXBkYXRlICAgCQk9IGFoYXNoX3NhbXBs ZV9vcHNfdXBkYXRlLAorCSAgLmZpbmFsICAgCQk9IGFoYXNoX3NhbXBsZV9vcHNfZmluYWwsCisJ ICAuZGlnZXN0IAkJPSBhaGFzaF9zYW1wbGVfb3BzX2RpZ2VzdCwKKwkgIH0gfSwKKwl9LAogCXsg LmNyYV9uYW1lCQk9ICJobWFjKG1kNSkiLAogCSAgLmNyYV9kcml2ZXJfbmFtZQk9ICJhaGFzaC1t ZDUiLAogCSAgLmNyYV9wcmlvcml0eQkJPSAzMDAsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2NyeXB0by5oIGIvaW5jbHVkZS9saW51eC9jcnlwdG8uaAppbmRleCBmZTlhNWMyLi5jNGY2ZWRh IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NyeXB0by5oCisrKyBiL2luY2x1ZGUvbGludXgv Y3J5cHRvLmgKQEAgLTE0NDAsNSArMTQ0MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWhhc2hf cmVxdWVzdF9zZXRfY3J5cHQoCiAJcmVxLT5yZXN1bHQgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyBp bmxpbmUgc3RydWN0IGNyeXB0b19kaWdlc3QgKl9fY3J5cHRvX2RpZ2VzdF9jYXN0KAorCXN0cnVj dCBjcnlwdG9fdGZtICp0Zm0pCit7CisJcmV0dXJuIChzdHJ1Y3QgY3J5cHRvX2RpZ2VzdCAqKSB0 Zm07Cit9CisKICNlbmRpZgkvKiBfTElOVVhfQ1JZUFRPX0ggKi8KIAotLSAKMS41LjMKCg== ------_=_NextPart_001_01C8A49D.A361A62C--