From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754486AbdBPAGe (ORCPT ); Wed, 15 Feb 2017 19:06:34 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:54708 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754015AbdBPAGa (ORCPT ); Wed, 15 Feb 2017 19:06:30 -0500 Message-ID: <1487203585.22520.0.camel@decadent.org.uk> Subject: Re: [PATCH 3.2 000/126] 3.2.85-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Thu, 16 Feb 2017 00:06:25 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-pQR46GR3ibgvyKIcEvNN" X-Mailer: Evolution 3.22.4-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 2a02:8011:400e:2:6f00:88c8:c921:d332 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 --=-pQR46GR3ibgvyKIcEvNN Content-Type: multipart/mixed; boundary="=-SWZwyogNiRx74yOG2lTd" --=-SWZwyogNiRx74yOG2lTd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.2.85-rc1 relative to 3.2.84. Ben. --=20 Ben Hutchings The most exhausting thing in life is being insincere. - Anne Morrow Lindberg --=-SWZwyogNiRx74yOG2lTd Content-Disposition: attachment; filename="linux-3.2.85-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.2.85-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggYmEyNWViOTZjOWEyLi5iZTZm YzRiNjRmZjAgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEs NyBAQAogVkVSU0lPTiA9IDMKIFBBVENITEVWRUwgPSAyCi1TVUJMRVZFTCA9IDg0Ci1FWFRSQVZF UlNJT04gPQorU1VCTEVWRUwgPSA4NQorRVhUUkFWRVJTSU9OID0gLXJjMQogTkFNRSA9IFNhYmVy LXRvb3RoZWQgU3F1aXJyZWwKIAogIyAqRE9DVU1FTlRBVElPTioKZGlmZiAtLWdpdCBhL2FyY2gv YXJtL21tL2RtYS1tYXBwaW5nLmMgYi9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jCmluZGV4IGUx ZGQ5MmMwNDkzOS4uZjc5NjEwMTA3OTg4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9kbWEtbWFw cGluZy5jCisrKyBiL2FyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMKQEAgLTM3NCw3ICszNzQsNyBA QCBkbWFfYWxsb2NfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1h X2FkZHJfdCAqaGFuZGxlLCBnZnBfdCBnZgogCQlyZXR1cm4gbWVtb3J5OwogCiAJcmV0dXJuIF9f ZG1hX2FsbG9jKGRldiwgc2l6ZSwgaGFuZGxlLCBnZnAsCi0JCQkgICBwZ3Byb3RfZG1hY29oZXJl bnQocGdwcm90X2tlcm5lbCkpOworCQkJICAgcGdwcm90X2RtYWNvaGVyZW50KFBBR0VfS0VSTkVM KSk7CiB9CiBFWFBPUlRfU1lNQk9MKGRtYV9hbGxvY19jb2hlcmVudCk7CiAKQEAgLTM4Niw3ICsz ODYsNyBAQCB2b2lkICoKIGRtYV9hbGxvY193cml0ZWNvbWJpbmUoc3RydWN0IGRldmljZSAqZGV2 LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLCBnZnBfdCBnZnApCiB7CiAJcmV0dXJu IF9fZG1hX2FsbG9jKGRldiwgc2l6ZSwgaGFuZGxlLCBnZnAsCi0JCQkgICBwZ3Byb3Rfd3JpdGVj b21iaW5lKHBncHJvdF9rZXJuZWwpKTsKKwkJCSAgIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9L RVJORUwpKTsKIH0KIEVYUE9SVF9TWU1CT0woZG1hX2FsbG9jX3dyaXRlY29tYmluZSk7CiAKZGlm ZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsLlMgYi9hcmNoL3BhcmlzYy9rZXJu ZWwvc3lzY2FsbC5TCmluZGV4IGVkM2RmNDQzZTAyZC4uYzljYmFkYTI0OTY5IDEwMDY0NAotLS0g YS9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbC5TCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9z eXNjYWxsLlMKQEAgLTgyLDggKzgyLDYgQEAgbGludXhfZ2F0ZXdheV9lbnRyeToKIAltdHNwCSVy MCwlc3I0CQkJLyogZ2V0IGtlcm5lbCBzcGFjZSBpbnRvIHNyNCAqLwogCW10c3AJJXIwLCVzcjUJ CQkvKiBnZXQga2VybmVsIHNwYWNlIGludG8gc3I1ICovCiAJbXRzcAklcjAsJXNyNgkJCS8qIGdl dCBrZXJuZWwgc3BhY2UgaW50byBzcjYgKi8KLQltZnNwICAgICVzcjcsJXIxICAgICAgICAgICAg ICAgICAgICAgICAgLyogc2F2ZSB1c2VyIHNyNyAqLwotCW10c3AgICAgJXIxLCVzcjMgICAgICAg ICAgICAgICAgICAgICAgICAvKiBhbmQgc3RvcmUgaXQgaW4gc3IzICovCiAKICNpZmRlZiBDT05G SUdfNjRCSVQKIAkvKiBmb3Igbm93IHdlIGNhbiAqYWx3YXlzKiBzZXQgdGhlIFcgYml0IG9uIGVu dHJ5IHRvIHRoZSBzeXNjYWxsCkBAIC0xMDksNiArMTA3LDE0IEBAIGxpbnV4X2dhdGV3YXlfZW50 cnk6CiAJZGVwZGkJMCwgMzEsIDMyLCAlcjIxCiAxOgkKICNlbmRpZgorCisJLyogV2UgdXNlIGEg cnNtL3NzbSBwYWlyIHRvIHByZXZlbnQgc3IzIGZyb20gYmVpbmcgY2xvYmJlcmVkCisJICogYnkg ZXh0ZXJuYWwgaW50ZXJydXB0cy4KKwkgKi8KKwltZnNwICAgICVzcjcsJXIxICAgICAgICAgICAg ICAgICAgICAgICAgLyogc2F2ZSB1c2VyIHNyNyAqLworCXJzbQlQU1dfU01fSSwgJXIwCQkJLyog ZGlzYWJsZSBpbnRlcnJ1cHRzICovCisJbXRzcCAgICAlcjEsJXNyMyAgICAgICAgICAgICAgICAg ICAgICAgIC8qIGFuZCBzdG9yZSBpdCBpbiBzcjMgKi8KKwogCW1mY3RsICAgJWNyMzAsJXIxCiAJ eG9yICAgICAlcjEsJXIzMCwlcjMwICAgICAgICAgICAgICAgICAgIC8qIHllIG9sZGUgeG9yIHRy aWNrICovCiAJeG9yICAgICAlcjEsJXIzMCwlcjEKQEAgLTEyMyw2ICsxMjksNyBAQCBsaW51eF9n YXRld2F5X2VudHJ5OgogCSAqLwogCiAJbXRzcAklcjAsJXNyNwkJCS8qIGdldCBrZXJuZWwgc3Bh Y2UgaW50byBzcjcgKi8KKwlzc20JUFNXX1NNX0ksICVyMAkJCS8qIGVuYWJsZSBpbnRlcnJ1cHRz ICovCiAJU1RSRUdNCSVyMSxGUkFNRV9TSVpFKCVyMzApCQkvKiBzYXZlIHIxICh1c3ApIGhlcmUg Zm9yIG5vdyAqLwogCW1mY3RsCSVjcjMwLCVyMQkJCS8qIGdldCB0YXNrIHB0ciBpbiAlcjEgKi8K IAlMRFJFRwlUSV9UQVNLKCVyMSksJXIxCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVs L2lkbGVfcG93ZXI3LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2lkbGVfcG93ZXI3LlMKaW5kZXgg M2E3MDg0NWE1MWM3Li43ZTQ5ZmRiNTdmM2MgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJu ZWwvaWRsZV9wb3dlcjcuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2lkbGVfcG93ZXI3LlMK QEAgLTY3LDcgKzY3LDcgQEAgX0dMT0JBTChwb3dlcjdfaWRsZSkKIAlzdGQJcjAsMChyMSkKIAlw dGVzeW5jCiAJbGQJcjAsMChyMSkKLTE6CWNtcAljcjAscjAscjAKKzE6CWNtcGQJY3IwLHIwLHIw CiAJYm5lCTFiCiAJUFBDX05BUAogCWIJLgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5l bC9udnJhbV82NC5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9udnJhbV82NC5jCmluZGV4IGJlYzFl OTMwZWQ3My4uYzIxNjA0ODlmOWNiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL252 cmFtXzY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9udnJhbV82NC5jCkBAIC0yODAsNyAr MjgwLDcgQEAgaW50IF9faW5pdCBudnJhbV9yZW1vdmVfcGFydGl0aW9uKGNvbnN0IGNoYXIgKm5h bWUsIGludCBzaWcsCiAKIAkJLyogTWFrZSBwYXJ0aXRpb24gYSBmcmVlIHBhcnRpdGlvbiAqLwog CQlwYXJ0LT5oZWFkZXIuc2lnbmF0dXJlID0gTlZSQU1fU0lHX0ZSRUU7Ci0JCXN0cm5jcHkocGFy dC0+aGVhZGVyLm5hbWUsICJ3d3d3d3d3d3d3d3ciLCAxMik7CisJCW1lbXNldChwYXJ0LT5oZWFk ZXIubmFtZSwgJ3cnLCAxMik7CiAJCXBhcnQtPmhlYWRlci5jaGVja3N1bSA9IG52cmFtX2NoZWNr c3VtKCZwYXJ0LT5oZWFkZXIpOwogCQlyYyA9IG52cmFtX3dyaXRlX2hlYWRlcihwYXJ0KTsKIAkJ aWYgKHJjIDw9IDApIHsKQEAgLTI5OCw4ICsyOTgsOCBAQCBpbnQgX19pbml0IG52cmFtX3JlbW92 ZV9wYXJ0aXRpb24oY29uc3QgY2hhciAqbmFtZSwgaW50IHNpZywKIAkJfQogCQlpZiAocHJldikg ewogCQkJcHJldi0+aGVhZGVyLmxlbmd0aCArPSBwYXJ0LT5oZWFkZXIubGVuZ3RoOwotCQkJcHJl di0+aGVhZGVyLmNoZWNrc3VtID0gbnZyYW1fY2hlY2tzdW0oJnBhcnQtPmhlYWRlcik7Ci0JCQly YyA9IG52cmFtX3dyaXRlX2hlYWRlcihwYXJ0KTsKKwkJCXByZXYtPmhlYWRlci5jaGVja3N1bSA9 IG52cmFtX2NoZWNrc3VtKCZwcmV2LT5oZWFkZXIpOworCQkJcmMgPSBudnJhbV93cml0ZV9oZWFk ZXIocHJldik7CiAJCQlpZiAocmMgPD0gMCkgewogCQkJCXByaW50ayhLRVJOX0VSUiAibnZyYW1f cmVtb3ZlX3BhcnRpdGlvbjogbnZyYW1fd3JpdGUgZmFpbGVkICglZClcbiIsIHJjKTsKIAkJCQly ZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9kYXRhcGFn ZS5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvNjQvZGF0YXBhZ2UuUwppbmRleCA3OTc5NmRl MTE3MzcuLjMyNjNlZTIzMTcwZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNv NjQvZGF0YXBhZ2UuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9kYXRhcGFnZS5T CkBAIC01Nyw3ICs1Nyw3IEBAIFZfRlVOQ1RJT05fQkVHSU4oX19rZXJuZWxfZ2V0X3N5c2NhbGxf bWFwKQogCWJsCVZfTE9DQUxfRlVOQyhfX2dldF9kYXRhcGFnZSkKIAltdGxyCXIxMgogCWFkZGkJ cjMscjMsQ0ZHX1NZU0NBTExfTUFQNjQKLQljbXBsaQljcjAscjQsMAorCWNtcGxkaQljcjAscjQs MAogCWNyY2xyCWNyMCo0K3NvCiAJYmVxbHIKIAlsaQlyMCxfX05SX3N5c2NhbGxzCmRpZmYgLS1n aXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9nZXR0aW1lb2ZkYXkuUyBiL2FyY2gvcG93 ZXJwYy9rZXJuZWwvdmRzbzY0L2dldHRpbWVvZmRheS5TCmluZGV4IGU5N2E5YTBkYzRhYy4uZDAy OTVjZDYyMjllIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9nZXR0aW1l b2ZkYXkuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9nZXR0aW1lb2ZkYXkuUwpA QCAtMTQ1LDcgKzE0NSw3IEBAIFZfRlVOQ1RJT05fQkVHSU4oX19rZXJuZWxfY2xvY2tfZ2V0cmVz KQogCWJuZQljcjAsOTlmCiAKIAlsaQlyMywwCi0JY21wbGkJY3IwLHI0LDAKKwljbXBsZGkJY3Iw LHI0LDAKIAljcmNscgljcjAqNCtzbwogCWJlcWxyCiAJbGlzCXI1LENMT0NLX1JFQUxUSU1FX1JF U0BoCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbGliL2NvcHl1c2VyXzY0LlMgYi9hcmNoL3Bv d2VycGMvbGliL2NvcHl1c2VyXzY0LlMKaW5kZXggNTc4YjYyNWQ2YTNjLi44M2Y0ODAxNDhiZjMg MTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9saWIvY29weXVzZXJfNjQuUworKysgYi9hcmNoL3Bv d2VycGMvbGliL2NvcHl1c2VyXzY0LlMKQEAgLTMzMCw2ICszMzAsNyBAQCBFTkRfRlRSX1NFQ1RJ T05fSUZDTFIoQ1BVX0ZUUl9VTkFMSUdORURfTERfU1REKQogCWFkZGkJcjMscjMsOAogMTcxOgog MTc3OgorMTc5OgogCWFkZGkJcjMscjMsOAogMzcwOgogMzcyOgpAQCAtMzQ0LDcgKzM0NSw2IEBA IEVORF9GVFJfU0VDVElPTl9JRkNMUihDUFVfRlRSX1VOQUxJR05FRF9MRF9TVEQpCiAxNzM6CiAx NzQ6CiAxNzU6Ci0xNzk6CiAxODE6CiAxODQ6CiAxODY6CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5k ZXggMzYzNjFiZjZmZGQxLi43YmRjOGY0MDc1Y2QgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAg LTM0Nyw3ICszNDcsNyBAQCBkbyB7CQkJCQkJCQkJXAogI2RlZmluZSBfX2dldF91c2VyX2FzbV91 NjQoeCwgcHRyLCByZXR2YWwsIGVycnJldCkgXAogCSBfX2dldF91c2VyX2FzbSh4LCBwdHIsIHJl dHZhbCwgInEiLCAiIiwgIj1yIiwgZXJycmV0KQogI2RlZmluZSBfX2dldF91c2VyX2FzbV9leF91 NjQoeCwgcHRyKSBcCi0JIF9fZ2V0X3VzZXJfYXNtX2V4KHgsIHB0ciwgInEiLCAiIiwgIj1yIikK KwkgX19nZXRfdXNlcl9hc21fZXgoeCwgcHRyLCAicSIsICIiLCAiPSZyIikKICNlbmRpZgogCiAj ZGVmaW5lIF9fZ2V0X3VzZXJfc2l6ZSh4LCBwdHIsIHNpemUsIHJldHZhbCwgZXJycmV0KQkJCVwK QEAgLTM4OSwxMyArMzg5LDEzIEBAIGRvIHsJCQkJCQkJCQlcCiAJX19jaGtfdXNlcl9wdHIocHRy KTsJCQkJCQlcCiAJc3dpdGNoIChzaXplKSB7CQkJCQkJCVwKIAljYXNlIDE6CQkJCQkJCQlcCi0J CV9fZ2V0X3VzZXJfYXNtX2V4KHgsIHB0ciwgImIiLCAiYiIsICI9cSIpOwkJXAorCQlfX2dldF91 c2VyX2FzbV9leCh4LCBwdHIsICJiIiwgImIiLCAiPSZxIik7CQlcCiAJCWJyZWFrOwkJCQkJCQlc CiAJY2FzZSAyOgkJCQkJCQkJXAotCQlfX2dldF91c2VyX2FzbV9leCh4LCBwdHIsICJ3IiwgInci LCAiPXIiKTsJCVwKKwkJX19nZXRfdXNlcl9hc21fZXgoeCwgcHRyLCAidyIsICJ3IiwgIj0mciIp OwkJXAogCQlicmVhazsJCQkJCQkJXAogCWNhc2UgNDoJCQkJCQkJCVwKLQkJX19nZXRfdXNlcl9h c21fZXgoeCwgcHRyLCAibCIsICJrIiwgIj1yIik7CQlcCisJCV9fZ2V0X3VzZXJfYXNtX2V4KHgs IHB0ciwgImwiLCAiayIsICI9JnIiKTsJCVwKIAkJYnJlYWs7CQkJCQkJCVwKIAljYXNlIDg6CQkJ CQkJCQlcCiAJCV9fZ2V0X3VzZXJfYXNtX2V4X3U2NCh4LCBwdHIpOwkJCQlcCkBAIC00MDksNyAr NDA5LDcgQEAgZG8gewkJCQkJCQkJCVwKIAlhc20gdm9sYXRpbGUoIjE6CW1vdiJpdHlwZSIgJTEs JSJydHlwZSIwXG4iCQlcCiAJCSAgICAgIjI6XG4iCQkJCQkJXAogCQkgICAgIF9BU01fRVhUQUJM RSgxYiwgMmIgLSAxYikJCQkJXAotCQkgICAgIDogbHR5cGUoeCkgOiAibSIgKF9fbShhZGRyKSkp CisJCSAgICAgOiBsdHlwZSh4KSA6ICJtIiAoX19tKGFkZHIpKSwgIjAiICgwKSkKIAogI2RlZmlu ZSBfX3B1dF91c2VyX25vY2hlY2soeCwgcHRyLCBzaXplKQkJCVwKICh7CQkJCQkJCQlcCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jIGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuYwpp bmRleCA5YWYwYjgyMDBkNWEuLjczZTA2NWI3ODdkZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3Zt L2VtdWxhdGUuYworKysgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jCkBAIC0xNjk5LDE2ICsxNjk5 LDEwIEBAIHN0YXRpYyBpbnQgZW1faXJldChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkK IHN0YXRpYyBpbnQgZW1fam1wX2ZhcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsK IAlpbnQgcmM7Ci0JdW5zaWduZWQgc2hvcnQgc2VsLCBvbGRfc2VsOwotCXN0cnVjdCBkZXNjX3N0 cnVjdCBvbGRfZGVzYywgbmV3X2Rlc2M7Ci0JY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAq b3BzID0gY3R4dC0+b3BzOworCXVuc2lnbmVkIHNob3J0IHNlbDsKKwlzdHJ1Y3QgZGVzY19zdHJ1 Y3QgbmV3X2Rlc2M7CiAJdTggY3BsID0gY3R4dC0+b3BzLT5jcGwoY3R4dCk7CiAKLQkvKiBBc3Np Z25tZW50IG9mIFJJUCBtYXkgb25seSBmYWlsIGluIDY0LWJpdCBtb2RlICovCi0JaWYgKGN0eHQt Pm1vZGUgPT0gWDg2RU1VTF9NT0RFX1BST1Q2NCkKLQkJb3BzLT5nZXRfc2VnbWVudChjdHh0LCAm b2xkX3NlbCwgJm9sZF9kZXNjLCBOVUxMLAotCQkJCSBWQ1BVX1NSRUdfQ1MpOwotCiAJbWVtY3B5 KCZzZWwsIGN0eHQtPnNyYy52YWxwdHIgKyBjdHh0LT5vcF9ieXRlcywgMik7CiAKIAlyYyA9IF9f bG9hZF9zZWdtZW50X2Rlc2NyaXB0b3IoY3R4dCwgc2VsLCBWQ1BVX1NSRUdfQ1MsIGNwbCwKQEAg LTE3MTcsMTIgKzE3MTEsMTAgQEAgc3RhdGljIGludCBlbV9qbXBfZmFyKHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0KQogCQlyZXR1cm4gcmM7CiAKIAlyYyA9IGFzc2lnbl9laXBfZmFyKGN0 eHQsIGN0eHQtPnNyYy52YWwsIG5ld19kZXNjLmwpOwotCWlmIChyYyAhPSBYODZFTVVMX0NPTlRJ TlVFKSB7Ci0JCVdBUk5fT04oY3R4dC0+bW9kZSAhPSBYODZFTVVMX01PREVfUFJPVDY0KTsKLQkJ LyogYXNzaWduaW5nIGVpcCBmYWlsZWQ7IHJlc3RvcmUgdGhlIG9sZCBjcyAqLwotCQlvcHMtPnNl dF9zZWdtZW50KGN0eHQsIG9sZF9zZWwsICZvbGRfZGVzYywgMCwgVkNQVV9TUkVHX0NTKTsKLQkJ cmV0dXJuIHJjOwotCX0KKwkvKiBFcnJvciBoYW5kbGluZyBpcyBub3QgaW1wbGVtZW50ZWQuICov CisJaWYgKHJjICE9IFg4NkVNVUxfQ09OVElOVUUpCisJCXJldHVybiBYODZFTVVMX1VOSEFORExF QUJMRTsKKwogCXJldHVybiByYzsKIH0KIApAQCAtMTg3NiwxNCArMTg2OCw4IEBAIHN0YXRpYyBp bnQgZW1fcmV0X2ZhcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKIAlpbnQgcmM7 CiAJdW5zaWduZWQgbG9uZyBlaXAsIGNzOwotCXUxNiBvbGRfY3M7CiAJaW50IGNwbCA9IGN0eHQt Pm9wcy0+Y3BsKGN0eHQpOwotCXN0cnVjdCBkZXNjX3N0cnVjdCBvbGRfZGVzYywgbmV3X2Rlc2M7 Ci0JY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzID0gY3R4dC0+b3BzOwotCi0JaWYg KGN0eHQtPm1vZGUgPT0gWDg2RU1VTF9NT0RFX1BST1Q2NCkKLQkJb3BzLT5nZXRfc2VnbWVudChj dHh0LCAmb2xkX2NzLCAmb2xkX2Rlc2MsIE5VTEwsCi0JCQkJIFZDUFVfU1JFR19DUyk7CisJc3Ry dWN0IGRlc2Nfc3RydWN0IG5ld19kZXNjOwogCiAJcmMgPSBlbXVsYXRlX3BvcChjdHh0LCAmZWlw LCBjdHh0LT5vcF9ieXRlcyk7CiAJaWYgKHJjICE9IFg4NkVNVUxfQ09OVElOVUUpCkBAIC0xODk5 LDEwICsxODg1LDEwIEBAIHN0YXRpYyBpbnQgZW1fcmV0X2ZhcihzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCkKIAlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKIAkJcmV0dXJuIHJjOwog CXJjID0gYXNzaWduX2VpcF9mYXIoY3R4dCwgZWlwLCBuZXdfZGVzYy5sKTsKLQlpZiAocmMgIT0g WDg2RU1VTF9DT05USU5VRSkgewotCQlXQVJOX09OKGN0eHQtPm1vZGUgIT0gWDg2RU1VTF9NT0RF X1BST1Q2NCk7Ci0JCW9wcy0+c2V0X3NlZ21lbnQoY3R4dCwgb2xkX2NzLCAmb2xkX2Rlc2MsIDAs IFZDUFVfU1JFR19DUyk7Ci0JfQorCS8qIEVycm9yIGhhbmRsaW5nIGlzIG5vdCBpbXBsZW1lbnRl ZC4gKi8KKwlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKKwkJcmV0dXJuIFg4NkVNVUxfVU5I QU5ETEVBQkxFOworCiAJcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v eDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggNGFlMzM0YTFiZDk5Li40NDA4YWVlODIz NmQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9rdm0veDg2 LmMKQEAgLTE3Miw3ICsxNzIsMTggQEAgc3RhdGljIHZvaWQga3ZtX29uX3VzZXJfcmV0dXJuKHN0 cnVjdCB1c2VyX3JldHVybl9ub3RpZmllciAqdXJuKQogCXN0cnVjdCBrdm1fc2hhcmVkX21zcnMg KmxvY2FscwogCQk9IGNvbnRhaW5lcl9vZih1cm4sIHN0cnVjdCBrdm1fc2hhcmVkX21zcnMsIHVy bik7CiAJc3RydWN0IGt2bV9zaGFyZWRfbXNyX3ZhbHVlcyAqdmFsdWVzOworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAKKwkvKgorCSAqIERpc2FibGluZyBpcnFzIGF0IHRoaXMgcG9pbnQgc2luY2Ug dGhlIGZvbGxvd2luZyBjb2RlIGNvdWxkIGJlCisJICogaW50ZXJydXB0ZWQgYW5kIGV4ZWN1dGVk IHRocm91Z2gga3ZtX2FyY2hfaGFyZHdhcmVfZGlzYWJsZSgpCisJICovCisJbG9jYWxfaXJxX3Nh dmUoZmxhZ3MpOworCWlmIChsb2NhbHMtPnJlZ2lzdGVyZWQpIHsKKwkJbG9jYWxzLT5yZWdpc3Rl cmVkID0gZmFsc2U7CisJCXVzZXJfcmV0dXJuX25vdGlmaWVyX3VucmVnaXN0ZXIodXJuKTsKKwl9 CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBzaGFy ZWRfbXNyc19nbG9iYWwubnI7ICsrc2xvdCkgewogCQl2YWx1ZXMgPSAmbG9jYWxzLT52YWx1ZXNb c2xvdF07CiAJCWlmICh2YWx1ZXMtPmhvc3QgIT0gdmFsdWVzLT5jdXJyKSB7CkBAIC0xODAsOCAr MTkxLDYgQEAgc3RhdGljIHZvaWQga3ZtX29uX3VzZXJfcmV0dXJuKHN0cnVjdCB1c2VyX3JldHVy bl9ub3RpZmllciAqdXJuKQogCQkJdmFsdWVzLT5jdXJyID0gdmFsdWVzLT5ob3N0OwogCQl9CiAJ fQotCWxvY2Fscy0+cmVnaXN0ZXJlZCA9IGZhbHNlOwotCXVzZXJfcmV0dXJuX25vdGlmaWVyX3Vu cmVnaXN0ZXIodXJuKTsKIH0KIAogc3RhdGljIHZvaWQgc2hhcmVkX21zcl91cGRhdGUodW5zaWdu ZWQgc2xvdCwgdTMyIG1zcikKQEAgLTY0MDYsMTEgKzY0MTUsMTMgQEAgdm9pZCBrdm1fcHV0X2d1 ZXN0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAKIHZvaWQga3ZtX2FyY2hfdmNwdV9mcmVl KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKKwl2b2lkICp3YmludmRfZGlydHlfbWFzayA9IHZj cHUtPmFyY2gud2JpbnZkX2RpcnR5X21hc2s7CisKIAlrdm1jbG9ja19yZXNldCh2Y3B1KTsKIAot CWZyZWVfY3B1bWFza192YXIodmNwdS0+YXJjaC53YmludmRfZGlydHlfbWFzayk7CiAJZnhfZnJl ZSh2Y3B1KTsKIAlrdm1feDg2X29wcy0+dmNwdV9mcmVlKHZjcHUpOworCWZyZWVfY3B1bWFza192 YXIod2JpbnZkX2RpcnR5X21hc2spOwogfQogCiBzdHJ1Y3Qga3ZtX3ZjcHUgKmt2bV9hcmNoX3Zj cHVfY3JlYXRlKHN0cnVjdCBrdm0gKmt2bSwKZGlmZiAtLWdpdCBhL2Jsb2NrL2JzZy5jIGIvYmxv Y2svYnNnLmMKaW5kZXggYzBhYjI1YzJhY2YyLi4yYTAxOTQwMjcyM2YgMTAwNjQ0Ci0tLSBhL2Js b2NrL2JzZy5jCisrKyBiL2Jsb2NrL2JzZy5jCkBAIC02NzUsNiArNjc1LDkgQEAgYnNnX3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQs IGxvZmZfdCAqcHBvcykKIAogCWRwcmludGsoIiVzOiB3cml0ZSAlWmQgYnl0ZXNcbiIsIGJkLT5u YW1lLCBjb3VudCk7CiAKKwlpZiAodW5saWtlbHkoc2VnbWVudF9lcShnZXRfZnMoKSwgS0VSTkVM X0RTKSkpCisJCXJldHVybiAtRUlOVkFMOworCiAJYnNnX3NldF9ibG9jayhiZCwgZmlsZSk7CiAK IAlieXRlc193cml0dGVuID0gMDsKZGlmZiAtLWdpdCBhL2NyeXB0by9nY20uYyBiL2NyeXB0by9n Y20uYwppbmRleCA5ZTQ3YzRkZmE5MWMuLmRkM2JmMzBmMjYwYiAxMDA2NDQKLS0tIGEvY3J5cHRv L2djbS5jCisrKyBiL2NyeXB0by9nY20uYwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBpbnQg Y3J5cHRvX2djbV9zZXRrZXkoc3RydWN0IGNyeXB0b19hZWFkICphZWFkLCBjb25zdCB1OCAqa2V5 LAogCXN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAqY3RyID0gY3R4LT5jdHI7CiAJc3RydWN0IHsK IAkJYmUxMjggaGFzaDsKLQkJdTggaXZbOF07CisJCXU4IGl2WzE2XTsKIAogCQlzdHJ1Y3QgY3J5 cHRvX2djbV9zZXRrZXlfcmVzdWx0IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3Bp L2FwZWkvZ2hlcy5jIGIvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jCmluZGV4IGI4ZTA4Y2I2N2Ex OC4uZThjNDg5OTliOGQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMKKysr IGIvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jCkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIGlu dCBnaGVzX3Byb2Moc3RydWN0IGdoZXMgKmdoZXMpCiAJZ2hlc19kb19wcm9jKGdoZXMtPmVzdGF0 dXMpOwogb3V0OgogCWdoZXNfY2xlYXJfZXN0YXR1cyhnaGVzKTsKLQlyZXR1cm4gMDsKKwlyZXR1 cm4gcmM7CiB9CiAKIHN0YXRpYyB2b2lkIGdoZXNfYWRkX3RpbWVyKHN0cnVjdCBnaGVzICpnaGVz KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJld2lyZS9uZXQuYyBiL2RyaXZlcnMvZmlyZXdpcmUv bmV0LmMKaW5kZXggNDE4YzRkYTU0ZmRjLi43OTFmMDUzYTI3MTQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZmlyZXdpcmUvbmV0LmMKKysrIGIvZHJpdmVycy9maXJld2lyZS9uZXQuYwpAQCAtOTIsMTMg KzkyLDEzIEBAIHN0cnVjdCByZmMyNzM0X2hlYWRlciB7CiAKICNkZWZpbmUgZnduZXRfZ2V0X2hk cl9sZihoKQkJKCgoaCktPncwICYgMHhjMDAwMDAwMCkgPj4gMzApCiAjZGVmaW5lIGZ3bmV0X2dl dF9oZHJfZXRoZXJfdHlwZShoKQkoKChoKS0+dzAgJiAweDAwMDBmZmZmKSkKLSNkZWZpbmUgZndu ZXRfZ2V0X2hkcl9kZ19zaXplKGgpCSgoKGgpLT53MCAmIDB4MGZmZjAwMDApID4+IDE2KQorI2Rl ZmluZSBmd25ldF9nZXRfaGRyX2RnX3NpemUoaCkJKCgoKGgpLT53MCAmIDB4MGZmZjAwMDApID4+ IDE2KSArIDEpCiAjZGVmaW5lIGZ3bmV0X2dldF9oZHJfZmdfb2ZmKGgpCQkoKChoKS0+dzAgJiAw eDAwMDAwZmZmKSkKICNkZWZpbmUgZnduZXRfZ2V0X2hkcl9kZ2woaCkJCSgoKGgpLT53MSAmIDB4 ZmZmZjAwMDApID4+IDE2KQogCi0jZGVmaW5lIGZ3bmV0X3NldF9oZHJfbGYobGYpCQkoKGxmKSAg PDwgMzApCisjZGVmaW5lIGZ3bmV0X3NldF9oZHJfbGYobGYpCQkoKGxmKSA8PCAzMCkKICNkZWZp bmUgZnduZXRfc2V0X2hkcl9ldGhlcl90eXBlKGV0KQkoZXQpCi0jZGVmaW5lIGZ3bmV0X3NldF9o ZHJfZGdfc2l6ZShkZ3MpCSgoZGdzKSA8PCAxNikKKyNkZWZpbmUgZnduZXRfc2V0X2hkcl9kZ19z aXplKGRncykJKCgoZGdzKSAtIDEpIDw8IDE2KQogI2RlZmluZSBmd25ldF9zZXRfaGRyX2ZnX29m ZihmZ28pCShmZ28pCiAKICNkZWZpbmUgZnduZXRfc2V0X2hkcl9kZ2woZGdsKQkJKChkZ2wpIDw8 IDE2KQpAQCAtNzIyLDcgKzcyMiw3IEBAIHN0YXRpYyBpbnQgZnduZXRfaW5jb21pbmdfcGFja2V0 KHN0cnVjdCBmd25ldF9kZXZpY2UgKmRldiwgX19iZTMyICpidWYsIGludCBsZW4sCiAJCWZnX29m ZiA9IGZ3bmV0X2dldF9oZHJfZmdfb2ZmKCZoZHIpOwogCX0KIAlkYXRhZ3JhbV9sYWJlbCA9IGZ3 bmV0X2dldF9oZHJfZGdsKCZoZHIpOwotCWRnX3NpemUgPSBmd25ldF9nZXRfaGRyX2RnX3NpemUo Jmhkcik7IC8qID8/PyArIDEgKi8KKwlkZ19zaXplID0gZnduZXRfZ2V0X2hkcl9kZ19zaXplKCZo ZHIpOwogCiAJaWYgKGZnX29mZiArIGxlbiA+IGRnX3NpemUpCiAJCXJldHVybiAwOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYyBiL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMKaW5k ZXggNjE2NjBmODI3M2ZhLi4xZWM4ODI1MzEzYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2hp ZC1jb3JlLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLWNvcmUuYwpAQCAtOTg5LDYgKzk4OSw3IEBA IHN0YXRpYyB2b2lkIGhpZF9pbnB1dF9maWVsZChzdHJ1Y3QgaGlkX2RldmljZSAqaGlkLCBzdHJ1 Y3QgaGlkX2ZpZWxkICpmaWVsZCwKIAkJLyogSWdub3JlIHJlcG9ydCBpZiBFcnJvclJvbGxPdmVy ICovCiAJCWlmICghKGZpZWxkLT5mbGFncyAmIEhJRF9NQUlOX0lURU1fVkFSSUFCTEUpICYmCiAJ CSAgICB2YWx1ZVtuXSA+PSBtaW4gJiYgdmFsdWVbbl0gPD0gbWF4ICYmCisJCSAgICB2YWx1ZVtu XSAtIG1pbiA8IGZpZWxkLT5tYXh1c2FnZSAmJgogCQkgICAgZmllbGQtPnVzYWdlW3ZhbHVlW25d IC0gbWluXS5oaWQgPT0gSElEX1VQX0tFWUJPQVJEICsgMSkKIAkJCWdvdG8gZXhpdDsKIAl9CkBA IC0xMDAxLDExICsxMDAyLDEzIEBAIHN0YXRpYyB2b2lkIGhpZF9pbnB1dF9maWVsZChzdHJ1Y3Qg aGlkX2RldmljZSAqaGlkLCBzdHJ1Y3QgaGlkX2ZpZWxkICpmaWVsZCwKIAkJfQogCiAJCWlmIChm aWVsZC0+dmFsdWVbbl0gPj0gbWluICYmIGZpZWxkLT52YWx1ZVtuXSA8PSBtYXgKKwkJCSYmIGZp ZWxkLT52YWx1ZVtuXSAtIG1pbiA8IGZpZWxkLT5tYXh1c2FnZQogCQkJJiYgZmllbGQtPnVzYWdl W2ZpZWxkLT52YWx1ZVtuXSAtIG1pbl0uaGlkCiAJCQkmJiBzZWFyY2godmFsdWUsIGZpZWxkLT52 YWx1ZVtuXSwgY291bnQpKQogCQkJCWhpZF9wcm9jZXNzX2V2ZW50KGhpZCwgZmllbGQsICZmaWVs ZC0+dXNhZ2VbZmllbGQtPnZhbHVlW25dIC0gbWluXSwgMCwgaW50ZXJydXB0KTsKIAogCQlpZiAo dmFsdWVbbl0gPj0gbWluICYmIHZhbHVlW25dIDw9IG1heAorCQkJJiYgdmFsdWVbbl0gLSBtaW4g PCBmaWVsZC0+bWF4dXNhZ2UKIAkJCSYmIGZpZWxkLT51c2FnZVt2YWx1ZVtuXSAtIG1pbl0uaGlk CiAJCQkmJiBzZWFyY2goZmllbGQtPnZhbHVlLCB2YWx1ZVtuXSwgY291bnQpKQogCQkJCWhpZF9w cm9jZXNzX2V2ZW50KGhpZCwgZmllbGQsICZmaWVsZC0+dXNhZ2VbdmFsdWVbbl0gLSBtaW5dLCAx LCBpbnRlcnJ1cHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLWlkcy5oIGIvZHJpdmVy cy9oaWQvaGlkLWlkcy5oCmluZGV4IGNjYzg5YjBlMTRkOS4uMjE5ZDM1ZjYxODI1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2hpZC9oaWQtaWRzLmgKKysrIGIvZHJpdmVycy9oaWQvaGlkLWlkcy5oCkBA IC0xNTIsNiArMTUyLDggQEAKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9BVEVOXzJQT1JUS1ZNCTB4 MjIwNAogI2RlZmluZSBVU0JfREVWSUNFX0lEX0FURU5fNFBPUlRLVk0JMHgyMjA1CiAjZGVmaW5l IFVTQl9ERVZJQ0VfSURfQVRFTl80UE9SVEtWTUMJMHgyMjA4CisjZGVmaW5lIFVTQl9ERVZJQ0Vf SURfQVRFTl9DUzY4MgkweDIyMTMKKyNkZWZpbmUgVVNCX0RFVklDRV9JRF9BVEVOX0NTNjkyCTB4 ODAyMQogCiAjZGVmaW5lIFVTQl9WRU5ET1JfSURfQVRNRUwJCTB4MDNlYgogI2RlZmluZSBVU0Jf REVWSUNFX0lEX0FUTUVMX01VTFRJVE9VQ0gJMHgyMTFjCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hp ZC91c2JoaWQvaGlkLXF1aXJrcy5jIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1xdWlya3MuYwpp bmRleCA3MWMyNTgyOTUwNDUuLjc1OTMxODk5Mzg0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQv dXNiaGlkL2hpZC1xdWlya3MuYworKysgYi9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLXF1aXJrcy5j CkBAIC01OSw2ICs1OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGlkX2JsYWNrbGlzdCB7CiAJ eyBVU0JfVkVORE9SX0lEX0FURU4sIFVTQl9ERVZJQ0VfSURfQVRFTl8yUE9SVEtWTSwgSElEX1FV SVJLX05PR0VUIH0sCiAJeyBVU0JfVkVORE9SX0lEX0FURU4sIFVTQl9ERVZJQ0VfSURfQVRFTl80 UE9SVEtWTSwgSElEX1FVSVJLX05PR0VUIH0sCiAJeyBVU0JfVkVORE9SX0lEX0FURU4sIFVTQl9E RVZJQ0VfSURfQVRFTl80UE9SVEtWTUMsIEhJRF9RVUlSS19OT0dFVCB9LAorCXsgVVNCX1ZFTkRP Ul9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FURU5fQ1M2ODIsIEhJRF9RVUlSS19OT0dFVCB9LAor CXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FURU5fQ1M2OTIsIEhJRF9RVUlS S19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9DSCwgVVNCX0RFVklDRV9JRF9DSF9DT01CQVRT VElDSywgSElEX1FVSVJLX05PR0VUIH0sCiAJeyBVU0JfVkVORE9SX0lEX0NILCBVU0JfREVWSUNF X0lEX0NIX0ZMSUdIVF9TSU1fRUNMSVBTRV9ZT0tFLCBISURfUVVJUktfTk9HRVQgfSwKIAl7IFVT Ql9WRU5ET1JfSURfQ0gsIFVTQl9ERVZJQ0VfSURfQ0hfRkxJR0hUX1NJTV9ZT0tFLCBISURfUVVJ UktfTk9HRVQgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvaHZfdXRpbC5jIGIvZHJpdmVycy9o di9odl91dGlsLmMKaW5kZXggNTVkNThmMjFlNmQ0Li4zZmUxY2UyMjI4NTQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvaHYvaHZfdXRpbC5jCisrKyBiL2RyaXZlcnMvaHYvaHZfdXRpbC5jCkBAIC0yMjks MTAgKzIyOSwxNCBAQCBzdGF0aWMgdm9pZCBoZWFydGJlYXRfb25jaGFubmVsY2FsbGJhY2sodm9p ZCAqY29udGV4dCkKIAlzdHJ1Y3QgaGVhcnRiZWF0X21zZ19kYXRhICpoZWFydGJlYXRfbXNnOwog CXU4ICpoYmVhdF90eGZfYnVmID0gdXRpbF9oZWFydGJlYXQucmVjdl9idWZmZXI7CiAKLQl2bWJ1 c19yZWN2cGFja2V0KGNoYW5uZWwsIGhiZWF0X3R4Zl9idWYsCi0JCQkgUEFHRV9TSVpFLCAmcmVj dmxlbiwgJnJlcXVlc3RpZCk7CisJd2hpbGUgKDEpIHsKKworCQl2bWJ1c19yZWN2cGFja2V0KGNo YW5uZWwsIGhiZWF0X3R4Zl9idWYsCisJCQkJIFBBR0VfU0laRSwgJnJlY3ZsZW4sICZyZXF1ZXN0 aWQpOworCisJCWlmICghcmVjdmxlbikKKwkJCWJyZWFrOwogCi0JaWYgKHJlY3ZsZW4gPiAwKSB7 CiAJCWljbXNnaGRycCA9IChzdHJ1Y3QgaWNtc2dfaGRyICopJmhiZWF0X3R4Zl9idWZbCiAJCQkJ c2l6ZW9mKHN0cnVjdCB2bWJ1c3BpcGVfaGRyKV07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJj L2kyYy1jb3JlLmMgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCmluZGV4IDFlNTYwNjE4NWI0Zi4u YzM3OTNhNzlmY2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCisrKyBiL2Ry aXZlcnMvaTJjL2kyYy1jb3JlLmMKQEAgLTExMzksNiArMTEzOSw3IEBAIGludCBpMmNfcmVnaXN0 ZXJfZHJpdmVyKHN0cnVjdCBtb2R1bGUgKm93bmVyLCBzdHJ1Y3QgaTJjX2RyaXZlciAqZHJpdmVy KQogCS8qIGFkZCB0aGUgZHJpdmVyIHRvIHRoZSBsaXN0IG9mIGkyYyBkcml2ZXJzIGluIHRoZSBk cml2ZXIgY29yZSAqLwogCWRyaXZlci0+ZHJpdmVyLm93bmVyID0gb3duZXI7CiAJZHJpdmVyLT5k cml2ZXIuYnVzID0gJmkyY19idXNfdHlwZTsKKwlJTklUX0xJU1RfSEVBRCgmZHJpdmVyLT5jbGll bnRzKTsKIAogCS8qIFdoZW4gcmVnaXN0cmF0aW9uIHJldHVybnMsIHRoZSBkcml2ZXIgY29yZQog CSAqIHdpbGwgaGF2ZSBjYWxsZWQgcHJvYmUoKSBmb3IgYWxsIG1hdGNoaW5nLWJ1dC11bmJvdW5k IGRldmljZXMuCkBAIC0xMTU3LDcgKzExNTgsNiBAQCBpbnQgaTJjX3JlZ2lzdGVyX2RyaXZlcihz dHJ1Y3QgbW9kdWxlICpvd25lciwgc3RydWN0IGkyY19kcml2ZXIgKmRyaXZlcikKIAogCXByX2Rl YnVnKCJpMmMtY29yZTogZHJpdmVyIFslc10gcmVnaXN0ZXJlZFxuIiwgZHJpdmVyLT5kcml2ZXIu bmFtZSk7CiAKLQlJTklUX0xJU1RfSEVBRCgmZHJpdmVyLT5jbGllbnRzKTsKIAkvKiBXYWxrIHRo ZSBhZGFwdGVycyB0aGF0IGFyZSBhbHJlYWR5IHByZXNlbnQgKi8KIAlpMmNfZm9yX2VhY2hfZGV2 KGRyaXZlciwgX19wcm9jZXNzX25ld19kcml2ZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lu ZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZl cmJzX21haW4uYwppbmRleCA5Y2RjYjUwMzg2MjIuLjE2NjE2NTA0ZGVmYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYworKysgYi9kcml2ZXJzL2luZmlu aWJhbmQvY29yZS91dmVyYnNfbWFpbi5jCkBAIC0yMTMsMTIgKzIxMyw5IEBAIHN0YXRpYyBpbnQg aWJfdXZlcmJzX2NsZWFudXBfdWNvbnRleHQoc3RydWN0IGliX3V2ZXJic19maWxlICpmaWxlLAog CQkJY29udGFpbmVyX29mKHVvYmosIHN0cnVjdCBpYl91cXBfb2JqZWN0LCB1ZXZlbnQudW9iamVj dCk7CiAKIAkJaWRyX3JlbW92ZV91b2JqKCZpYl91dmVyYnNfcXBfaWRyLCB1b2JqKTsKLQkJaWYg KHFwICE9IHFwLT5yZWFsX3FwKSB7Ci0JCQlpYl9jbG9zZV9xcChxcCk7Ci0JCX0gZWxzZSB7CisJ CWlmIChxcCA9PSBxcC0+cmVhbF9xcCkKIAkJCWliX3V2ZXJic19kZXRhY2hfdW1jYXN0KHFwLCB1 cXApOwotCQkJaWJfZGVzdHJveV9xcChxcCk7Ci0JCX0KKwkJaWJfZGVzdHJveV9xcChxcCk7CiAJ CWliX3V2ZXJic19yZWxlYXNlX3VldmVudChmaWxlLCAmdXFwLT51ZXZlbnQpOwogCQlrZnJlZSh1 cXApOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L2NxLmMgYi9k cml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NC9jcS5jCmluZGV4IGU4ZGYxNTViYzNiMC4uZDgzZTRl MGUzYzA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NC9jcS5jCisrKyBi L2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L2NxLmMKQEAgLTIzMywxMSArMjMzLDE0IEBAIHN0 cnVjdCBpYl9jcSAqbWx4NF9pYl9jcmVhdGVfY3Eoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIGlu dCBlbnRyaWVzLCBpbnQgdmVjdG9yCiAJaWYgKGNvbnRleHQpCiAJCWlmIChpYl9jb3B5X3RvX3Vk YXRhKHVkYXRhLCAmY3EtPm1jcS5jcW4sIHNpemVvZiAoX191MzIpKSkgewogCQkJZXJyID0gLUVG QVVMVDsKLQkJCWdvdG8gZXJyX2RibWFwOworCQkJZ290byBlcnJfY3FfZnJlZTsKIAkJfQogCiAJ cmV0dXJuICZjcS0+aWJjcTsKIAorZXJyX2NxX2ZyZWU6CisJbWx4NF9jcV9mcmVlKGRldi0+ZGV2 LCAmY3EtPm1jcSk7CisKIGVycl9kYm1hcDoKIAlpZiAoY29udGV4dCkKIAkJbWx4NF9pYl9kYl91 bm1hcF91c2VyKHRvX211Y29udGV4dChjb250ZXh0KSwgJmNxLT5kYik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4NmlhNjRpby5oIGIvZHJpdmVycy9pbnB1dC9zZXJp by9pODA0Mi14ODZpYTY0aW8uaAppbmRleCA2Y2VjY2MyZjJkNjQuLmM4NmRhNTAxY2E3ZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi14ODZpYTY0aW8uaAorKysgYi9kcml2 ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4NmlhNjRpby5oCkBAIC03NjIsNiArNzYyLDEzIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBfX2luaXRjb25zdCBpODA0Ml9kbWlfa2Jk cmVzZXRfdGFibGVbXSA9IHsKIAkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiUDM0Iiks CiAJCX0sCiAJfSwKKwl7CisJCS8qIFNjaGVua2VyIFhNRyBDNTA0IC0gRWxhbnRlY2ggdG91Y2hw YWQgKi8KKwkJLm1hdGNoZXMgPSB7CisJCQlETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJYTUci KSwKKwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiQzUwNCIpLAorCQl9LAorCX0sCiAJ eyB9CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZF9pb21tdS5jIGIvZHJpdmVy cy9pb21tdS9hbWRfaW9tbXUuYwppbmRleCA0ODY5ODJmODQ0OWYuLjQzYTg0ZTMyYzg5MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9pb21tdS9hbWRfaW9tbXUuYworKysgYi9kcml2ZXJzL2lvbW11L2Ft ZF9pb21tdS5jCkBAIC0xNTQxLDYgKzE1NDEsOSBAQCBzdGF0aWMgdm9pZCBkbWFfb3BzX2RvbWFp bl9mcmVlKHN0cnVjdCBkbWFfb3BzX2RvbWFpbiAqZG9tKQogCQlrZnJlZShkb20tPmFwZXJ0dXJl W2ldKTsKIAl9CiAKKwlpZiAoZG9tLT5kb21haW4uaWQpCisJCWRvbWFpbl9pZF9mcmVlKGRvbS0+ ZG9tYWluLmlkKTsKKwogCWtmcmVlKGRvbSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNk bi9naWdhc2V0L3Nlci1naWdhc2V0LmMgYi9kcml2ZXJzL2lzZG4vZ2lnYXNldC9zZXItZ2lnYXNl dC5jCmluZGV4IGNmM2MxZDQ4M2NjOS4uM2VjODFhMTA4NDBjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2lzZG4vZ2lnYXNldC9zZXItZ2lnYXNldC5jCisrKyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L3Nl ci1naWdhc2V0LmMKQEAgLTUyNiw5ICs1MjYsMTggQEAgZ2lnYXNldF90dHlfb3BlbihzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5KQogCWNzLT5ody5zZXItPnR0eSA9IHR0eTsKIAlhdG9taWNfc2V0KCZj cy0+aHcuc2VyLT5yZWZjbnQsIDEpOwogCWluaXRfY29tcGxldGlvbigmY3MtPmh3LnNlci0+ZGVh ZF9jbXApOwotCiAJdHR5LT5kaXNjX2RhdGEgPSBjczsKIAorCS8qIFNldCB0aGUgYW1vdW50IG9m IGRhdGEgd2UncmUgd2lsbGluZyB0byByZWNlaXZlIHBlciBjYWxsCisJICogZnJvbSB0aGUgaGFy ZHdhcmUgZHJpdmVyIHRvIGhhbGYgb2YgdGhlIGlucHV0IGJ1ZmZlciBzaXplCisJICogdG8gbGVh dmUgc29tZSByZXNlcnZlLgorCSAqIE5vdGU6IFdlIGRvbid0IGRvIGZsb3cgY29udHJvbCB0b3dh cmRzIHRoZSBoYXJkd2FyZSBkcml2ZXIuCisJICogSWYgbW9yZSBkYXRhIGlzIHJlY2VpdmVkIHRo YW4gd2lsbCBmaXQgaW50byB0aGUgaW5wdXQgYnVmZmVyLAorCSAqIGl0IHdpbGwgYmUgZHJvcHBl ZCBhbmQgYW4gZXJyb3Igd2lsbCBiZSBsb2dnZWQuIFRoaXMgc2hvdWxkCisJICogbmV2ZXIgaGFw cGVuIGFzIHRoZSBkZXZpY2UgaXMgc2xvdyBhbmQgdGhlIGJ1ZmZlciBzaXplIGFtcGxlLgorCSAq LworCXR0eS0+cmVjZWl2ZV9yb29tID0gUkJVRlNJWkUvMjsKKwogCS8qIE9LLi4gSW5pdGlhbGl6 YXRpb24gb2YgdGhlIGRhdGFzdHJ1Y3R1cmVzIGFuZCB0aGUgSFcgaXMgZG9uZS4uIE5vdwogCSAq IHN0YXJ0dXAgc3lzdGVtIGFuZCBub3RpZnkgdGhlIExMIHRoYXQgd2UgYXJlIHJlYWR5IHRvIHJ1 bgogCSAqLwpAQCAtNzc5LDggKzc4OCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBzZXJfZ2lnYXNl dF9pbml0KHZvaWQpCiAJZHJpdmVyID0gZ2lnYXNldF9pbml0ZHJpdmVyKEdJR0FTRVRfTUlOT1Is IEdJR0FTRVRfTUlOT1JTLAogCQkJCQkgIEdJR0FTRVRfTU9EVUxFTkFNRSwgR0lHQVNFVF9ERVZO QU1FLAogCQkJCQkgICZvcHMsIFRISVNfTU9EVUxFKTsKLQlpZiAoIWRyaXZlcikKKwlpZiAoIWRy aXZlcikgeworCQlyYyA9IC1FTk9NRU07CiAJCWdvdG8gZXJyb3I7CisJfQogCiAJcmMgPSB0dHlf cmVnaXN0ZXJfbGRpc2MoTl9HSUdBU0VUX00xMDEsICZnaWdhc2V0X2xkaXNjKTsKIAlpZiAocmMg IT0gMCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10YWJsZS5jIGIvZHJpdmVycy9tZC9k bS10YWJsZS5jCmluZGV4IDFlMzc5MzEyZmE2Ni4uMGQwYmMwNDRhNjljIDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2RtLXRhYmxlLmMKKysrIGIvZHJpdmVycy9tZC9kbS10YWJsZS5jCkBAIC03OTUs MzcgKzc5NSwzMiBAQCBpbnQgZG1fdGFibGVfYWRkX3RhcmdldChzdHJ1Y3QgZG1fdGFibGUgKnQs IGNvbnN0IGNoYXIgKnR5cGUsCiAKIAl0Z3QtPnR5cGUgPSBkbV9nZXRfdGFyZ2V0X3R5cGUodHlw ZSk7CiAJaWYgKCF0Z3QtPnR5cGUpIHsKLQkJRE1FUlIoIiVzOiAlczogdW5rbm93biB0YXJnZXQg dHlwZSIsIGRtX2RldmljZV9uYW1lKHQtPm1kKSwKLQkJICAgICAgdHlwZSk7CisJCURNRVJSKCIl czogJXM6IHVua25vd24gdGFyZ2V0IHR5cGUiLCBkbV9kZXZpY2VfbmFtZSh0LT5tZCksIHR5cGUp OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoZG1fdGFyZ2V0X25lZWRzX3NpbmdsZXRv bih0Z3QtPnR5cGUpKSB7CiAJCWlmICh0LT5udW1fdGFyZ2V0cykgewotCQkJRE1FUlIoIiVzOiB0 YXJnZXQgdHlwZSAlcyBtdXN0IGFwcGVhciBhbG9uZSBpbiB0YWJsZSIsCi0JCQkgICAgICBkbV9k ZXZpY2VfbmFtZSh0LT5tZCksIHR5cGUpOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl0Z3QtPmVy cm9yID0gInNpbmdsZXRvbiB0YXJnZXQgdHlwZSBtdXN0IGFwcGVhciBhbG9uZSBpbiB0YWJsZSI7 CisJCQlnb3RvIGJhZDsKIAkJfQogCQl0LT5zaW5nbGV0b24gPSAxOwogCX0KIAogCWlmIChkbV90 YXJnZXRfYWx3YXlzX3dyaXRlYWJsZSh0Z3QtPnR5cGUpICYmICEodC0+bW9kZSAmIEZNT0RFX1dS SVRFKSkgewotCQlETUVSUigiJXM6IHRhcmdldCB0eXBlICVzIG1heSBub3QgYmUgaW5jbHVkZWQg aW4gcmVhZC1vbmx5IHRhYmxlcyIsCi0JCSAgICAgIGRtX2RldmljZV9uYW1lKHQtPm1kKSwgdHlw ZSk7Ci0JCXJldHVybiAtRUlOVkFMOworCQl0Z3QtPmVycm9yID0gInRhcmdldCB0eXBlIG1heSBu b3QgYmUgaW5jbHVkZWQgaW4gYSByZWFkLW9ubHkgdGFibGUiOworCQlnb3RvIGJhZDsKIAl9CiAK IAlpZiAodC0+aW1tdXRhYmxlX3RhcmdldF90eXBlKSB7CiAJCWlmICh0LT5pbW11dGFibGVfdGFy Z2V0X3R5cGUgIT0gdGd0LT50eXBlKSB7Ci0JCQlETUVSUigiJXM6IGltbXV0YWJsZSB0YXJnZXQg dHlwZSAlcyBjYW5ub3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0YXJnZXQgdHlwZXMiLAotCQkJICAg ICAgZG1fZGV2aWNlX25hbWUodC0+bWQpLCB0LT5pbW11dGFibGVfdGFyZ2V0X3R5cGUtPm5hbWUp OwotCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl0Z3QtPmVycm9yID0gImltbXV0YWJsZSB0YXJnZXQg dHlwZSBjYW5ub3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0YXJnZXQgdHlwZXMiOworCQkJZ290byBi YWQ7CiAJCX0KIAl9IGVsc2UgaWYgKGRtX3RhcmdldF9pc19pbW11dGFibGUodGd0LT50eXBlKSkg ewogCQlpZiAodC0+bnVtX3RhcmdldHMpIHsKLQkJCURNRVJSKCIlczogaW1tdXRhYmxlIHRhcmdl dCB0eXBlICVzIGNhbm5vdCBiZSBtaXhlZCB3aXRoIG90aGVyIHRhcmdldCB0eXBlcyIsCi0JCQkg ICAgICBkbV9kZXZpY2VfbmFtZSh0LT5tZCksIHRndC0+dHlwZS0+bmFtZSk7Ci0JCQlyZXR1cm4g LUVJTlZBTDsKKwkJCXRndC0+ZXJyb3IgPSAiaW1tdXRhYmxlIHRhcmdldCB0eXBlIGNhbm5vdCBi ZSBtaXhlZCB3aXRoIG90aGVyIHRhcmdldCB0eXBlcyI7CisJCQlnb3RvIGJhZDsKIAkJfQogCQl0 LT5pbW11dGFibGVfdGFyZ2V0X3R5cGUgPSB0Z3QtPnR5cGU7CiAJfQpAQCAtODQwLDcgKzgzNSw2 IEBAIGludCBkbV90YWJsZV9hZGRfdGFyZ2V0KHN0cnVjdCBkbV90YWJsZSAqdCwgY29uc3QgY2hh ciAqdHlwZSwKIAkgKi8KIAlpZiAoIWFkam9pbih0LCB0Z3QpKSB7CiAJCXRndC0+ZXJyb3IgPSAi R2FwIGluIHRhYmxlIjsKLQkJciA9IC1FSU5WQUw7CiAJCWdvdG8gYmFkOwogCX0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9kaWIwNzAwX2NvcmUuYyBiL2RyaXZlcnMv bWVkaWEvZHZiL2R2Yi11c2IvZGliMDcwMF9jb3JlLmMKaW5kZXggMTU2Y2JmYzljNzlkLi5jNGZm MDUyMzM2ZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvZGliMDcwMF9j b3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9kaWIwNzAwX2NvcmUuYwpAQCAt NjczLDcgKzY3Myw3IEBAIHN0YXRpYyB2b2lkIGRpYjA3MDBfcmNfdXJiX2NvbXBsZXRpb24oc3Ry dWN0IHVyYiAqcHVyYikKIHsKIAlzdHJ1Y3QgZHZiX3VzYl9kZXZpY2UgKmQgPSBwdXJiLT5jb250 ZXh0OwogCXN0cnVjdCBkaWIwNzAwX3JjX3Jlc3BvbnNlICpwb2xsX3JlcGx5OwotCXUzMiB1bmlu aXRpYWxpemVkX3ZhcihrZXljb2RlKTsKKwl1MzIga2V5Y29kZTsKIAl1OCB0b2dnbGU7CiAKIAlk ZWJfaW5mbygiJXMoKVxuIiwgX19mdW5jX18pOwpAQCAtNzEzLDcgKzcxMyw4IEBAIHN0YXRpYyB2 b2lkIGRpYjA3MDBfcmNfdXJiX2NvbXBsZXRpb24oc3RydWN0IHVyYiAqcHVyYikKIAkJaWYgKChw b2xsX3JlcGx5LT5zeXN0ZW0gPT0gMHgwMCkgJiYgKHBvbGxfcmVwbHktPmRhdGEgPT0gMHgwMCkK IAkJICAgICYmIChwb2xsX3JlcGx5LT5ub3RfZGF0YSA9PSAweGZmKSkgewogCQkJcG9sbF9yZXBs eS0+ZGF0YV9zdGF0ZSA9IDI7Ci0JCQlicmVhazsKKwkJCXJjX3JlcGVhdChkLT5yY19kZXYpOwor CQkJZ290byByZXN1Ym1pdDsKIAkJfQogCiAJCWlmICgocG9sbF9yZXBseS0+c3lzdGVtIF4gcG9s bF9yZXBseS0+bm90X3N5c3RlbSkgIT0gMHhmZikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMv bWI4NmEyMHMuYwppbmRleCAwZjg2N2E1MDU1ZmIuLjlkZWVlNTZlNDY4OSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMKKysrIGIvZHJpdmVycy9tZWRp YS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMKQEAgLTQ3Nyw3ICs0NzcsMTEgQEAgc3RhdGljIGlu dCBtYjg2YTIwc19yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgZmVfc3RhdHVz X3QgKnN0YXR1cykKIAlpZiAodmFsID49IDcpCiAJCSpzdGF0dXMgfD0gRkVfSEFTX1NZTkM7CiAK LQlpZiAodmFsID49IDgpCQkJCS8qIE1heWJlIDk/ICovCisJLyoKKwkgKiBBY3R1YWxseSwgb24g c3RhdGUgUzgsIGl0IHN0YXJ0cyByZWNlaXZpbmcgVFMsIGJ1dCB0aGUgVFMKKwkgKiBvdXRwdXQg aXMgb25seSBvbiBub3JtYWwgc3RhdGUgYWZ0ZXIgdGhlIHRyYW5zaXRpb24gdG8gUzkuCisJICov CisJaWYgKHZhbCA+PSA5KQogCQkqc3RhdHVzIHw9IEZFX0hBU19MT0NLOwogCiAJZHByaW50aygi dmFsID0gJWQsIHN0YXR1cyA9IDB4JTAyeFxuIiwgdmFsLCAqc3RhdHVzKTsKQEAgLTU2Miw2ICs1 NjYsMTEgQEAgc3RhdGljIHZvaWQgbWI4NmEyMHNfcmVsZWFzZShzdHJ1Y3QgZHZiX2Zyb250ZW5k ICpmZSkKIAlrZnJlZShzdGF0ZSk7CiB9CiAKK3N0YXRpYyBpbnQgbWI4NmEyMHNfZ2V0X2Zyb250 ZW5kX2FsZ28oc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCit7CisgICAgICAgIHJldHVybiBEVkJG RV9BTEdPX0hXOworfQorCiBzdGF0aWMgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgbWI4NmEyMHNf b3BzOwogCiBzdHJ1Y3QgZHZiX2Zyb250ZW5kICptYjg2YTIwc19hdHRhY2goY29uc3Qgc3RydWN0 IG1iODZhMjBzX2NvbmZpZyAqY29uZmlnLApAQCAtNjMyLDYgKzY0MSw3IEBAIHN0YXRpYyBzdHJ1 Y3QgZHZiX2Zyb250ZW5kX29wcyBtYjg2YTIwc19vcHMgPSB7CiAJLnJlYWRfc3RhdHVzID0gbWI4 NmEyMHNfcmVhZF9zdGF0dXMsCiAJLnJlYWRfc2lnbmFsX3N0cmVuZ3RoID0gbWI4NmEyMHNfcmVh ZF9zaWduYWxfc3RyZW5ndGgsCiAJLnR1bmUgPSBtYjg2YTIwc190dW5lLAorCS5nZXRfZnJvbnRl bmRfYWxnbyA9IG1iODZhMjBzX2dldF9mcm9udGVuZF9hbGdvLAogfTsKIAogTU9EVUxFX0RFU0NS SVBUSU9OKCJEVkIgRnJvbnRlbmQgbW9kdWxlIGZvciBGdWppdHN1IG1iODZBMjBzIGhhcmR3YXJl Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21lZGlhLWRldmljZS5jIGIvZHJpdmVycy9t ZWRpYS9tZWRpYS1kZXZpY2UuYwppbmRleCAyOTg3MDNmY2EzYjUuLmRmYzMzODk2ODQ1OCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9tZWRpYS1kZXZpY2UuYworKysgYi9kcml2ZXJzL21lZGlh L21lZGlhLWRldmljZS5jCkBAIC0xNDIsNiArMTQyLDggQEAgc3RhdGljIGxvbmcgbWVkaWFfZGV2 aWNlX2VudW1fbGlua3Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwKIAogCQlmb3IgKHAgPSAw OyBwIDwgZW50aXR5LT5udW1fcGFkczsgcCsrKSB7CiAJCQlzdHJ1Y3QgbWVkaWFfcGFkX2Rlc2Mg cGFkOworCisJCQltZW1zZXQoJnBhZCwgMCwgc2l6ZW9mKHBhZCkpOwogCQkJbWVkaWFfZGV2aWNl X2twYWRfdG9fdXBhZCgmZW50aXR5LT5wYWRzW3BdLCAmcGFkKTsKIAkJCWlmIChjb3B5X3RvX3Vz ZXIoJmxpbmtzLnBhZHNbcF0sICZwYWQsIHNpemVvZihwYWQpKSkKIAkJCQlyZXR1cm4gLUVGQVVM VDsKQEAgLTE1OSw2ICsxNjEsNyBAQCBzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfZW51bV9saW5r cyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LAogCQkJaWYgKGVudGl0eS0+bGlua3NbbF0uc291 cmNlLT5lbnRpdHkgIT0gZW50aXR5KQogCQkJCWNvbnRpbnVlOwogCisJCQltZW1zZXQoJmxpbmss IDAsIHNpemVvZihsaW5rKSk7CiAJCQltZWRpYV9kZXZpY2Vfa3BhZF90b191cGFkKGVudGl0eS0+ bGlua3NbbF0uc291cmNlLAogCQkJCQkJICAmbGluay5zb3VyY2UpOwogCQkJbWVkaWFfZGV2aWNl X2twYWRfdG9fdXBhZChlbnRpdHktPmxpbmtzW2xdLnNpbmssCmRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlk ZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCmluZGV4IDUzZmYyNmU3YWJmNy4uMDY1ZDgxNDQ4 YjQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNv cmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYwpA QCAtMTI2NCw3ICsxMjY0LDEwIEBAIGludCBjeDIzMXh4X3NldF9hZ2NfYW5hbG9nX2RpZ2l0YWxf bXV4X3NlbGVjdChzdHJ1Y3QgY3gyMzF4eCAqZGV2LAogCQkJCSAgIGRldi0+Ym9hcmQuYWdjX2Fu YWxvZ19kaWdpdGFsX3NlbGVjdF9ncGlvLAogCQkJCSAgIGFuYWxvZ19vcl9kaWdpdGFsKTsKIAot CXJldHVybiBzdGF0dXM7CisJaWYgKHN0YXR1cyA8IDApCisJCXJldHVybiBzdGF0dXM7CisKKwly ZXR1cm4gMDsKIH0KIAogaW50IGN4MjMxeHhfZW5hYmxlX2kyY19wb3J0XzMoc3RydWN0IGN4MjMx eHggKmRldiwgYm9vbCBpc19wb3J0XzMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVv L2N4MjMxeHgvY3gyMzF4eC1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4 MjMxeHgtY2FyZHMuYwppbmRleCA1M2RhZTJhODI3MmQuLjc3ZDEwNjQ5M2Q4ZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtY2FyZHMuYworKysgYi9kcml2 ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1jYXJkcy5jCkBAIC00NDgsNyArNDQ4LDcg QEAgc3RydWN0IGN4MjMxeHhfYm9hcmQgY3gyMzF4eF9ib2FyZHNbXSA9IHsKIAkJLm91dHB1dF9t b2RlID0gT1VUX01PREVfVklQMTEsCiAJCS5kZW1vZF94ZmVyX21vZGUgPSAwLAogCQkuY3RsX3Bp bl9zdGF0dXNfbWFzayA9IDB4RkZGRkZGQzQsCi0JCS5hZ2NfYW5hbG9nX2RpZ2l0YWxfc2VsZWN0 X2dwaW8gPSAweDAwLAkvKiBBY2NvcmRpbmcgd2l0aCBQViBjeFBvbGFyaXMuaW5mIGZpbGUgKi8K KwkJLmFnY19hbmFsb2dfZGlnaXRhbF9zZWxlY3RfZ3BpbyA9IDB4MWMsCiAJCS50dW5lcl9zaWZf Z3BpbyA9IC0xLAogCQkudHVuZXJfc2NsX2dwaW8gPSAtMSwKIAkJLnR1bmVyX3NkYV9ncGlvID0g LTEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1jb3Jl LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1jb3JlLmMKaW5kZXggZDQ0 NTdmOTQ4OGVlLi43Y2MxY2U1NTdhYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8v Y3gyMzF4eC9jeDIzMXh4LWNvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgv Y3gyMzF4eC1jb3JlLmMKQEAgLTcyMCw2ICs3MjAsNyBAQCBpbnQgY3gyMzF4eF9zZXRfbW9kZShz dHJ1Y3QgY3gyMzF4eCAqZGV2LCBlbnVtIGN4MjMxeHhfbW9kZSBzZXRfbW9kZSkKIAkJCWJyZWFr OwogCQljYXNlIENYMjMxWFhfQk9BUkRfQ05YVF9SREVfMjUzUzoKIAkJY2FzZSBDWDIzMVhYX0JP QVJEX0NOWFRfUkRVXzI1M1M6CisJCWNhc2UgQ1gyMzFYWF9CT0FSRF9QVl9QTEFZVFZfVVNCX0hZ QlJJRDoKIAkJCWVyckNvZGUgPSBjeDIzMXh4X3NldF9hZ2NfYW5hbG9nX2RpZ2l0YWxfbXV4X3Nl bGVjdChkZXYsIDEpOwogCQkJYnJlYWs7CiAJCWNhc2UgQ1gyMzFYWF9CT0FSRF9IQVVQUEFVR0Vf RVhFVEVSOgpAQCAtNzQ0LDcgKzc0NSw3IEBAIGludCBjeDIzMXh4X3NldF9tb2RlKHN0cnVjdCBj eDIzMXh4ICpkZXYsIGVudW0gY3gyMzF4eF9tb2RlIHNldF9tb2RlKQogCQljYXNlIENYMjMxWFhf Qk9BUkRfUFZfUExBWVRWX1VTQl9IWUJSSUQ6CiAJCWNhc2UgQ1gyMzFYWF9CT0FSRF9IQVVQUEFV R0VfVVNCMl9GTV9QQUw6CiAJCWNhc2UgQ1gyMzFYWF9CT0FSRF9IQVVQUEFVR0VfVVNCMl9GTV9O VFNDOgotCQllcnJDb2RlID0gY3gyMzF4eF9zZXRfYWdjX2FuYWxvZ19kaWdpdGFsX211eF9zZWxl Y3QoZGV2LCAwKTsKKwkJCWVyckNvZGUgPSBjeDIzMXh4X3NldF9hZ2NfYW5hbG9nX2RpZ2l0YWxf bXV4X3NlbGVjdChkZXYsIDApOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWZkL21mZC1jb3JlLmMgYi9kcml2ZXJzL21mZC9tZmQtY29yZS5j CmluZGV4IDZkYWQyZWY5YjYyMC4uMWNlOTYwMmI2ODVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21m ZC9tZmQtY29yZS5jCisrKyBiL2RyaXZlcnMvbWZkL21mZC1jb3JlLmMKQEAgLTI0MSw2ICsyNDEs OCBAQCBpbnQgbWZkX2Nsb25lX2NlbGwoY29uc3QgY2hhciAqY2VsbCwgY29uc3QgY2hhciAqKmNs b25lcywgc2l6ZV90IG5fY2xvbmVzKQogCQkJCQljbG9uZXNbaV0pOwogCX0KIAorCXB1dF9kZXZp Y2UoZGV2KTsKKwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChtZmRfY2xvbmVfY2VsbCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jYXJkL2Jsb2NrLmMgYi9kcml2ZXJzL21tYy9jYXJk L2Jsb2NrLmMKaW5kZXggZjUzZDVjODA2YTllLi4xYTNkNjIyOWZhYzMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbW1jL2NhcmQvYmxvY2suYworKysgYi9kcml2ZXJzL21tYy9jYXJkL2Jsb2NrLmMKQEAg LTE0OTMsNyArMTQ5Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgbW1jX2Jsa19kYXRhICptbWNfYmxrX2Fs bG9jX3JlcShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsCiAJc2V0X2NhcGFjaXR5KG1kLT5kaXNrLCBz aXplKTsKIAogCWlmIChtbWNfaG9zdF9jbWQyMyhjYXJkLT5ob3N0KSkgewotCQlpZiAobW1jX2Nh cmRfbW1jKGNhcmQpIHx8CisJCWlmICgobW1jX2NhcmRfbW1jKGNhcmQpICYmCisJCSAgICAgY2Fy ZC0+Y3NkLm1tY2FfdnNuID49IENTRF9TUEVDX1ZFUl8zKSB8fAogCQkgICAgKG1tY19jYXJkX3Nk KGNhcmQpICYmCiAJCSAgICAgY2FyZC0+c2NyLmNtZHMgJiBTRF9TQ1JfQ01EMjNfU1VQUE9SVCkp CiAJCQltZC0+ZmxhZ3MgfD0gTU1DX0JMS19DTUQyMzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1j L2hvc3QvbXhzLW1tYy5jIGIvZHJpdmVycy9tbWMvaG9zdC9teHMtbW1jLmMKaW5kZXggZjIwMWJl ZDc0NDQyLi4wYzc4MWFjZjNkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvbXhzLW1t Yy5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvbXhzLW1tYy5jCkBAIC03NTIsMTIgKzc1MiwxMiBA QCBzdGF0aWMgaW50IG14c19tbWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IAogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1tYyk7CiAKKwlzcGluX2xvY2tfaW5pdCgm aG9zdC0+bG9jayk7CisKIAlyZXQgPSByZXF1ZXN0X2lycShob3N0LT5pcnEsIG14c19tbWNfaXJx X2hhbmRsZXIsIDAsIERSSVZFUl9OQU1FLCBob3N0KTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF9m cmVlX2RtYTsKIAotCXNwaW5fbG9ja19pbml0KCZob3N0LT5sb2NrKTsKLQogCXJldCA9IG1tY19h ZGRfaG9zdChtbWMpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X2ZyZWVfaXJxOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lycnVzL2VwOTN4eF9ldGguYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L2NpcnJ1cy9lcDkzeHhfZXRoLmMKaW5kZXggNDMxN2FmOGQyZjBhLi42YzliZDU1 OWE3ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NpcnJ1cy9lcDkzeHhfZXRo LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lycnVzL2VwOTN4eF9ldGguYwpAQCAtNDY5 LDYgKzQ2OSw5IEBAIHN0YXRpYyB2b2lkIGVwOTN4eF9mcmVlX2J1ZmZlcnMoc3RydWN0IGVwOTN4 eF9wcml2ICplcCkKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBlcC0+ZGV2LT5kZXYucGFyZW50Owog CWludCBpOwogCisJaWYgKCFlcC0+ZGVzY3MpCisJCXJldHVybjsKKwogCWZvciAoaSA9IDA7IGkg PCBSWF9RVUVVRV9FTlRSSUVTOyBpKyspIHsKIAkJZG1hX2FkZHJfdCBkOwogCkBAIC00OTMsNiAr NDk2LDcgQEAgc3RhdGljIHZvaWQgZXA5M3h4X2ZyZWVfYnVmZmVycyhzdHJ1Y3QgZXA5M3h4X3By aXYgKmVwKQogCiAJZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBzaXplb2Yoc3RydWN0IGVwOTN4eF9k ZXNjcyksIGVwLT5kZXNjcywKIAkJCQkJCQllcC0+ZGVzY3NfZG1hX2FkZHIpOworCWVwLT5kZXNj cyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQgZXA5M3h4X2FsbG9jX2J1ZmZlcnMoc3RydWN0IGVw OTN4eF9wcml2ICplcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDQvY21kLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2NtZC5jCmlu ZGV4IDc4ZjVhMWEwYjhjOC4uMzdmNDk5NWRiMDdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg0L2NtZC5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDQvY21kLmMKQEAgLTMxMywxMiArMzEzLDE4IEBAIGludCBfX21seDRfY21kKHN0 cnVjdCBtbHg0X2RldiAqZGV2LCB1NjQgaW5fcGFyYW0sIHU2NCAqb3V0X3BhcmFtLAogCSAgICAg ICBpbnQgb3V0X2lzX2ltbSwgdTMyIGluX21vZGlmaWVyLCB1OCBvcF9tb2RpZmllciwKIAkgICAg ICAgdTE2IG9wLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCiB7CisJaW50IHJldDsKKworCWRvd25f cmVhZCgmbWx4NF9wcml2KGRldiktPmNtZC5zd2l0Y2hfc2VtKTsKIAlpZiAobWx4NF9wcml2KGRl diktPmNtZC51c2VfZXZlbnRzKQotCQlyZXR1cm4gbWx4NF9jbWRfd2FpdChkZXYsIGluX3BhcmFt LCBvdXRfcGFyYW0sIG91dF9pc19pbW0sCi0JCQkJICAgICBpbl9tb2RpZmllciwgb3BfbW9kaWZp ZXIsIG9wLCB0aW1lb3V0KTsKKwkJcmV0ID0gbWx4NF9jbWRfd2FpdChkZXYsIGluX3BhcmFtLCBv dXRfcGFyYW0sIG91dF9pc19pbW0sCisJCQkJICAgIGluX21vZGlmaWVyLCBvcF9tb2RpZmllciwg b3AsIHRpbWVvdXQpOwogCWVsc2UKLQkJcmV0dXJuIG1seDRfY21kX3BvbGwoZGV2LCBpbl9wYXJh bSwgb3V0X3BhcmFtLCBvdXRfaXNfaW1tLAotCQkJCSAgICAgaW5fbW9kaWZpZXIsIG9wX21vZGlm aWVyLCBvcCwgdGltZW91dCk7CisJCXJldCA9IG1seDRfY21kX3BvbGwoZGV2LCBpbl9wYXJhbSwg b3V0X3BhcmFtLCBvdXRfaXNfaW1tLAorCQkJCSAgICBpbl9tb2RpZmllciwgb3BfbW9kaWZpZXIs IG9wLCB0aW1lb3V0KTsKKworCXVwX3JlYWQoJm1seDRfcHJpdihkZXYpLT5jbWQuc3dpdGNoX3Nl bSk7CisJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKF9fbWx4NF9jbWQpOwogCkBA IC0zMjYsNiArMzMyLDcgQEAgaW50IG1seDRfY21kX2luaXQoc3RydWN0IG1seDRfZGV2ICpkZXYp CiB7CiAJc3RydWN0IG1seDRfcHJpdiAqcHJpdiA9IG1seDRfcHJpdihkZXYpOwogCisJaW5pdF9y d3NlbSgmcHJpdi0+Y21kLnN3aXRjaF9zZW0pOwogCW11dGV4X2luaXQoJnByaXYtPmNtZC5oY3Jf bXV0ZXgpOwogCXNlbWFfaW5pdCgmcHJpdi0+Y21kLnBvbGxfc2VtLCAxKTsKIAlwcml2LT5jbWQu dXNlX2V2ZW50cyA9IDA7CkBAIC0zNzIsNiArMzc5LDcgQEAgaW50IG1seDRfY21kX3VzZV9ldmVu dHMoc3RydWN0IG1seDRfZGV2ICpkZXYpCiAJaWYgKCFwcml2LT5jbWQuY29udGV4dCkKIAkJcmV0 dXJuIC1FTk9NRU07CiAKKwlkb3duX3dyaXRlKCZwcml2LT5jbWQuc3dpdGNoX3NlbSk7CiAJZm9y IChpID0gMDsgaSA8IHByaXYtPmNtZC5tYXhfY21kczsgKytpKSB7CiAJCXByaXYtPmNtZC5jb250 ZXh0W2ldLnRva2VuID0gaTsKIAkJcHJpdi0+Y21kLmNvbnRleHRbaV0ubmV4dCAgPSBpICsgMTsK QEAgLTM5MCw2ICszOTgsNyBAQCBpbnQgbWx4NF9jbWRfdXNlX2V2ZW50cyhzdHJ1Y3QgbWx4NF9k ZXYgKmRldikKIAktLXByaXYtPmNtZC50b2tlbl9tYXNrOwogCiAJcHJpdi0+Y21kLnVzZV9ldmVu dHMgPSAxOworCXVwX3dyaXRlKCZwcml2LT5jbWQuc3dpdGNoX3NlbSk7CiAKIAlkb3duKCZwcml2 LT5jbWQucG9sbF9zZW0pOwogCkBAIC00MDQsNiArNDEzLDcgQEAgdm9pZCBtbHg0X2NtZF91c2Vf cG9sbGluZyhzdHJ1Y3QgbWx4NF9kZXYgKmRldikKIAlzdHJ1Y3QgbWx4NF9wcml2ICpwcml2ID0g bWx4NF9wcml2KGRldik7CiAJaW50IGk7CiAKKwlkb3duX3dyaXRlKCZwcml2LT5jbWQuc3dpdGNo X3NlbSk7CiAJcHJpdi0+Y21kLnVzZV9ldmVudHMgPSAwOwogCiAJZm9yIChpID0gMDsgaSA8IHBy aXYtPmNtZC5tYXhfY21kczsgKytpKQpAQCAtNDEyLDYgKzQyMiw3IEBAIHZvaWQgbWx4NF9jbWRf dXNlX3BvbGxpbmcoc3RydWN0IG1seDRfZGV2ICpkZXYpCiAJa2ZyZWUocHJpdi0+Y21kLmNvbnRl eHQpOwogCiAJdXAoJnByaXYtPmNtZC5wb2xsX3NlbSk7CisJdXBfd3JpdGUoJnByaXYtPmNtZC5z d2l0Y2hfc2VtKTsKIH0KIAogc3RydWN0IG1seDRfY21kX21haWxib3ggKm1seDRfYWxsb2NfY21k X21haWxib3goc3RydWN0IG1seDRfZGV2ICpkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYwppbmRleCAzMDgzNDlhNDNkNjAuLjM5MjZiNzY2MTQ4 ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRk ZXYuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5j CkBAIC02ODQsNiArNjg0LDEzIEBAIGludCBtbHg0X2VuX3N0YXJ0X3BvcnQoc3RydWN0IG5ldF9k ZXZpY2UgKmRldikKIAlxdWV1ZV93b3JrKG1kZXYtPndvcmtxdWV1ZSwgJnByaXYtPm1jYXN0X3Rh c2spOwogCiAJcHJpdi0+cG9ydF91cCA9IHRydWU7CisKKwkvKiBQcm9jZXNzIGFsbCBjb21wbGV0 aW9ucyBpZiBleGlzdCB0byBwcmV2ZW50CisJICogdGhlIHF1ZXVlcyBmcmVlemluZyBpZiB0aGV5 IGFyZSBmdWxsCisJICovCisJZm9yIChpID0gMDsgaSA8IHByaXYtPnJ4X3JpbmdfbnVtOyBpKysp CisJCW5hcGlfc2NoZWR1bGUoJnByaXYtPnJ4X2NxW2ldLm5hcGkpOworCiAJbmV0aWZfdHhfc3Rh cnRfYWxsX3F1ZXVlcyhkZXYpOwogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDQvbWx4NC5oCmluZGV4IDE2OTg1M2Q5MzhmNy4uMWJmMjZiYWZjYWVhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDQuaAorKysgYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDQuaApAQCAtNDIsNiArNDIsNyBA QAogI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CiAjaW5jbHVkZSA8bGludXgvc2VtYXBob3JlLmg+ CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5jbHVkZSA8bGludXgvcndzZW0uaD4K IAogI2luY2x1ZGUgPGxpbnV4L21seDQvZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvbWx4NC9k cml2ZXIuaD4KQEAgLTE5MCw2ICsxOTEsNyBAQCBzdHJ1Y3QgbWx4NF9jbWQgewogCXN0cnVjdCBt dXRleAkJaGNyX211dGV4OwogCXN0cnVjdCBzZW1hcGhvcmUJcG9sbF9zZW07CiAJc3RydWN0IHNl bWFwaG9yZQlldmVudF9zZW07CisJc3RydWN0IHJ3X3NlbWFwaG9yZQlzd2l0Y2hfc2VtOwogCWlu dAkJCW1heF9jbWRzOwogCXNwaW5sb2NrX3QJCWNvbnRleHRfbG9jazsKIAlpbnQJCQlmcmVlX2hl YWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L2NmZzgwMjExLmMg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L2NmZzgwMjExLmMKaW5kZXggNDVhYzQwN2Rl ZGE5Li40ZDdlMzM0NjAzYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZp ZXgvY2ZnODAyMTEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L2NmZzgwMjEx LmMKQEAgLTk0NCw4ICs5NDQsOSBAQCBkb25lOgogCQkJfQogCQkJaXNfc2Nhbm5pbmdfcmVxdWly ZWQgPSAxOwogCQl9IGVsc2UgewotCQkJZGV2X2RiZyhwcml2LT5hZGFwdGVyLT5kZXYsICJpbmZv OiB0cnlpbmcgdG8gYXNzb2NpYXRlIHRvICVzIGFuZCBic3NpZCAlcE1cbiIsCi0JCQkJCShjaGFy ICopIHJlcV9zc2lkLnNzaWQsIGJzcy0+YnNzaWQpOworCQkJZGV2X2RiZyhwcml2LT5hZGFwdGVy LT5kZXYsICJpbmZvOiB0cnlpbmcgdG8gYXNzb2NpYXRlIHRvICclLipzJyBic3NpZCAlcE1cbiIs CisJCQkJcmVxX3NzaWQuc3NpZF9sZW4sIChjaGFyICopcmVxX3NzaWQuc3NpZCwKKwkJCQlic3Mt PmJzc2lkKTsKIAkJCW1lbWNweSgmcHJpdi0+Y2ZnX2Jzc2lkLCBic3MtPmJzc2lkLCBFVEhfQUxF Tik7CiAJCQlicmVhazsKIAkJfQpAQCAtOTg5LDggKzk5MCw4IEBAIG13aWZpZXhfY2ZnODAyMTFf Y29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJ cHJpdi0+YXNzb2NfcmVxdWVzdCA9IC1FSU5QUk9HUkVTUzsKIAotCXdpcGh5X2RiZyh3aXBoeSwg ImluZm86IFRyeWluZyB0byBhc3NvY2lhdGUgdG8gJXMgYW5kIGJzc2lkICVwTVxuIiwKLQkgICAg ICAgKGNoYXIgKikgc21lLT5zc2lkLCBzbWUtPmJzc2lkKTsKKwl3aXBoeV9kYmcod2lwaHksICJp bmZvOiBUcnlpbmcgdG8gYXNzb2NpYXRlIHRvICUuKnMgYW5kIGJzc2lkICVwTVxuIiwKKwkJICAo aW50KXNtZS0+c3NpZF9sZW4sIChjaGFyICopc21lLT5zc2lkLCBzbWUtPmJzc2lkKTsKIAogCXJl dCA9IG13aWZpZXhfY2ZnODAyMTFfYXNzb2MocHJpdiwgc21lLT5zc2lkX2xlbiwgc21lLT5zc2lk LCBzbWUtPmJzc2lkLAogCQkJCSAgICAgcHJpdi0+YnNzX21vZGUsIHNtZS0+Y2hhbm5lbCwgc21l LCAwKTsKQEAgLTEwMjYsOCArMTAyNyw4IEBAIG13aWZpZXhfY2ZnODAyMTFfam9pbl9pYnNzKHN0 cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlwcml2LT5pYnNz X2pvaW5fcmVxdWVzdCA9IC1FSU5QUk9HUkVTUzsKIAotCXdpcGh5X2RiZyh3aXBoeSwgImluZm86 IHRyeWluZyB0byBqb2luIHRvICVzIGFuZCBic3NpZCAlcE1cbiIsCi0JICAgICAgIChjaGFyICop IHBhcmFtcy0+c3NpZCwgcGFyYW1zLT5ic3NpZCk7CisJd2lwaHlfZGJnKHdpcGh5LCAiaW5mbzog dHJ5aW5nIHRvIGpvaW4gdG8gJS4qcyBhbmQgYnNzaWQgJXBNXG4iLAorCQkgIHBhcmFtcy0+c3Np ZF9sZW4sIChjaGFyICopcGFyYW1zLT5zc2lkLCBwYXJhbXMtPmJzc2lkKTsKIAogCXJldCA9IG13 aWZpZXhfY2ZnODAyMTFfYXNzb2MocHJpdiwgcGFyYW1zLT5zc2lkX2xlbiwgcGFyYW1zLT5zc2lk LAogCQkJCXBhcmFtcy0+YnNzaWQsIHByaXYtPmJzc19tb2RlLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3 aWZpL3JlZ2QuYwppbmRleCA5ZmVkYjFmNzA5MTkuLjFlZDVhZTdkMDNiOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9yZWdkLmMKKysrIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvcnRsd2lmaS9yZWdkLmMKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RhdGljIHN0cnVjdCBjb3Vu dHJ5X2NvZGVfdG9fZW51bV9yZCBhbGxDb3VudHJpZXNbXSA9IHsKIAl7Q09VTlRSWV9DT0RFX0dM T0JBTF9ET01BSU4sICJKUCJ9LAogCXtDT1VOVFJZX0NPREVfV09STERfV0lERV8xMywgIkVDIn0s CiAJe0NPVU5UUllfQ09ERV9URUxFQ19ORVRHRUFSLCAiRUMifSwKKwl7Q09VTlRSWV9DT0RFX1dP UkxEX1dJREVfMTNfNUdfQUxMLCAiVVMifSwKIH07CiAKIC8qCkBAIC0xMzUsNiArMTM2LDE3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBydGxfcmVnZG9tXzE0XzYw XzY0ID0gewogCQkgICAgICB9CiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9y ZWdkb21haW4gcnRsX3JlZ2RvbV8xMl8xM181Z19hbGwgPSB7CisJLm5fcmVnX3J1bGVzID0gNCwK KwkuYWxwaGEyID0gIjk5IiwKKwkucmVnX3J1bGVzID0geworCQkJUlRMODE5eF8yR0haX0NIMDFf MTEsCisJCQlSVEw4MTl4XzJHSFpfQ0gxMl8xMywKKwkJCVJUTDgxOXhfNUdIWl81MTUwXzUzNTAs CisJCQlSVEw4MTl4XzVHSFpfNTQ3MF81ODUwLAorCQl9Cit9OworCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IGllZWU4MDIxMV9yZWdkb21haW4gcnRsX3JlZ2RvbV8xNCA9IHsKIAkubl9yZWdfcnVsZXMg PSAzLAogCS5hbHBoYTIgPSAiOTkiLApAQCAtMzMxLDkgKzM0Myw5IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqX3J0bF9yZWdkb21haW5fc2VsZWN0KAogCQlyZXR1 cm4gJnJ0bF9yZWdkb21fbm9fbWlkYmFuZDsKIAljYXNlIENPVU5UUllfQ09ERV9JQzoKIAkJcmV0 dXJuICZydGxfcmVnZG9tXzExOwotCWNhc2UgQ09VTlRSWV9DT0RFX0VUU0k6CiAJY2FzZSBDT1VO VFJZX0NPREVfVEVMRUNfTkVUR0VBUjoKIAkJcmV0dXJuICZydGxfcmVnZG9tXzYwXzY0OworCWNh c2UgQ09VTlRSWV9DT0RFX0VUU0k6CiAJY2FzZSBDT1VOVFJZX0NPREVfU1BBSU46CiAJY2FzZSBD T1VOVFJZX0NPREVfRlJBTkNFOgogCWNhc2UgQ09VTlRSWV9DT0RFX0lTUkFFTDoKQEAgLTM0Niw2 ICszNTgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKl9ydGxf cmVnZG9tYWluX3NlbGVjdCgKIAkJcmV0dXJuICZydGxfcmVnZG9tXzE0XzYwXzY0OwogCWNhc2Ug Q09VTlRSWV9DT0RFX0dMT0JBTF9ET01BSU46CiAJCXJldHVybiAmcnRsX3JlZ2RvbV8xNDsKKwlj YXNlIENPVU5UUllfQ09ERV9XT1JMRF9XSURFXzEzXzVHX0FMTDoKKwkJcmV0dXJuICZydGxfcmVn ZG9tXzEyXzEzXzVnX2FsbDsKIAlkZWZhdWx0OgogCQlyZXR1cm4gJnJ0bF9yZWdkb21fbm9fbWlk YmFuZDsKIAl9CkBAIC0zODMsNiArMzk3LDI3IEBAIHN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2Rl X3RvX2VudW1fcmQgKl9ydGxfcmVnZF9maW5kX2NvdW50cnkodTE2IGNvdW50cnljb2RlKQogCXJl dHVybiBOVUxMOwogfQogCitzdGF0aWMgdTggY2hhbm5lbF9wbGFuX3RvX2NvdW50cnlfY29kZSh1 OCBjaGFubmVscGxhbikKK3sKKwlzd2l0Y2ggKGNoYW5uZWxwbGFuKSB7CisJY2FzZSAweDIwOgor CWNhc2UgMHgyMToKKwkJcmV0dXJuIENPVU5UUllfQ09ERV9XT1JMRF9XSURFXzEzOworCWNhc2Ug MHgyMjoKKwkJcmV0dXJuIENPVU5UUllfQ09ERV9JQzsKKwljYXNlIDB4MjU6CisJCXJldHVybiBD T1VOVFJZX0NPREVfRVRTSTsKKwljYXNlIDB4MzI6CisJCXJldHVybiBDT1VOVFJZX0NPREVfVEVM RUNfTkVUR0VBUjsKKwljYXNlIDB4NDE6CisJCXJldHVybiBDT1VOVFJZX0NPREVfR0xPQkFMX0RP TUFJTjsKKwljYXNlIDB4N2Y6CisJCXJldHVybiBDT1VOVFJZX0NPREVfV09STERfV0lERV8xM181 R19BTEw7CisJZGVmYXVsdDoKKwkJcmV0dXJuIENPVU5UUllfQ09ERV9NQVg7IC8qRXJyb3IqLwor CX0KK30KKwogaW50IHJ0bF9yZWdkX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCSAg aW50ICgqcmVnX25vdGlmaWVyKSAoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICAgICAgc3Ry dWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCkpCkBAIC0zOTUsMTEgKzQzMCwxMiBAQCBp bnQgcnRsX3JlZ2RfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJcmV0dXJuIC1FSU5W QUw7CiAKIAkvKiBpbml0IGNvdW50cnlfY29kZSBmcm9tIGVmdXNlIGNoYW5uZWwgcGxhbiAqLwot CXJ0bHByaXYtPnJlZ2QuY291bnRyeV9jb2RlID0gcnRscHJpdi0+ZWZ1c2UuY2hhbm5lbF9wbGFu OworCXJ0bHByaXYtPnJlZ2QuY291bnRyeV9jb2RlID0KKwkJY2hhbm5lbF9wbGFuX3RvX2NvdW50 cnlfY29kZShydGxwcml2LT5lZnVzZS5jaGFubmVsX3BsYW4pOwogCi0JUlRfVFJBQ0UocnRscHJp diwgQ09NUF9SRUdELCBEQkdfVFJBQ0UsCi0JCSAoS0VSTl9ERUJVRyAicnRsOiBFRVBST00gcmVn ZG9tYWluOiAweCUweFxuIiwKLQkJICBydGxwcml2LT5yZWdkLmNvdW50cnlfY29kZSkpOworCVJU X1RSQUNFKHJ0bHByaXYsIENPTVBfUkVHRCwgREJHX0RNRVNHLAorCQkgKEtFUk5fREVCVUcgInJ0 bDogRUVQUk9NIHJlZ2RvbWFpbjogMHglMHggY29udW50cnkgY29kZTogJWRcbiIsCisJCSBydGxw cml2LT5lZnVzZS5jaGFubmVsX3BsYW4sIHJ0bHByaXYtPnJlZ2QuY291bnRyeV9jb2RlKSk7CiAK IAlpZiAocnRscHJpdi0+cmVnZC5jb3VudHJ5X2NvZGUgPj0gQ09VTlRSWV9DT0RFX01BWCkgewog CQlSVF9UUkFDRShydGxwcml2LCBDT01QX1JFR0QsIERCR19ETUVTRywKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv cnRsd2lmaS9yZWdkLmgKaW5kZXggZDIzMTE4OTM4ZmFjLi44ODNjZWJiMDk3NTUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5oCisrKyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5oCkBAIC00OSw2ICs0OSw3IEBAIGVudW0gY291bnRyeV9j b2RlX3R5cGVfdCB7CiAJQ09VTlRSWV9DT0RFX0dMT0JBTF9ET01BSU4gPSAxMCwKIAlDT1VOVFJZ X0NPREVfV09STERfV0lERV8xMyA9IDExLAogCUNPVU5UUllfQ09ERV9URUxFQ19ORVRHRUFSID0g MTIsCisJQ09VTlRSWV9DT0RFX1dPUkxEX1dJREVfMTNfNUdfQUxMID0gMTMsCiAKIAkvKmFkZCBu ZXcgY2hhbm5lbCBwbGFuIGFib3ZlIHRoaXMgbGluZSAqLwogCUNPVU5UUllfQ09ERV9NQVgKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcmVndWxhdG9yL3RwczY1OTEwLXJlZ3VsYXRvci5jIGIvZHJpdmVy cy9yZWd1bGF0b3IvdHBzNjU5MTAtcmVndWxhdG9yLmMKaW5kZXggYjU1MmFhZTU1YjQxLi5jNzlm YjMwZmQ1MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcmVndWxhdG9yL3RwczY1OTEwLXJlZ3VsYXRv ci5jCisrKyBiL2RyaXZlcnMvcmVndWxhdG9yL3RwczY1OTEwLXJlZ3VsYXRvci5jCkBAIC05MDQs NiArOTA0LDEyIEBAIHN0YXRpYyBfX2RldmluaXQgaW50IHRwczY1OTEwX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXBtaWMtPmdldF9jdHJsX3JlZyA9ICZ0cHM2NTkxMF9n ZXRfY3RybF9yZWdpc3RlcjsKIAkJcG1pYy0+bnVtX3JlZ3VsYXRvcnMgPSBBUlJBWV9TSVpFKHRw czY1OTEwX3JlZ3MpOwogCQlpbmZvID0gdHBzNjU5MTBfcmVnczsKKwkJLyogV29yayBhcm91bmQg c2lsaWNvbiBlcnJhdHVtIFNXQ1owMTA6IG91dHB1dCBwcm9ncmFtbWVkCisJCSAqIHZvbHRhZ2Ug bGV2ZWwgY2FuIGdvIGhpZ2hlciB0aGFuIGV4cGVjdGVkIG9yIGNyYXNoCisJCSAqIFdvcmthcm91 bmQ6IHVzZSBubyBzeW5jaHJvbml6YXRpb24gb2YgRENEQyBjbG9ja3MKKwkJICovCisJCXRwczY1 OTEwX2NsZWFyX2JpdHMocG1pYy0+bWZkLCBUUFM2NTkxMF9EQ0RDQ1RSTCwKKwkJCQkgICAgRENE Q0NUUkxfRENEQ0NLU1lOQ19NQVNLKTsKIAkJYnJlYWs7CiAJY2FzZSBUUFM2NTkxMToKIAkJcG1p Yy0+Z2V0X2N0cmxfcmVnID0gJnRwczY1OTExX2dldF9jdHJsX3JlZ2lzdGVyOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jIGIvZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3 MC5jCmluZGV4IGJiMDc1NzdlOGZkNC4uZDljNmFlOTczYzg3IDEwMDY0NAotLS0gYS9kcml2ZXJz L3MzOTAvY2hhci9jb24zMjcwLmMKKysrIGIvZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jCkBA IC0xMjEsNyArMTIxLDEyIEBAIGNvbjMyNzBfY3JlYXRlX3N0YXR1cyhzdHJ1Y3QgY29uMzI3MCAq Y3ApCiBzdGF0aWMgdm9pZAogY29uMzI3MF91cGRhdGVfc3RyaW5nKHN0cnVjdCBjb24zMjcwICpj cCwgc3RydWN0IHN0cmluZyAqcywgaW50IG5yKQogewotCWlmIChzLT5sZW4gPj0gY3AtPnZpZXcu Y29scyAtIDUpCisJaWYgKHMtPmxlbiA8IDQpIHsKKwkJLyogVGhpcyBpbmRpY2F0ZXMgYSBidWcs IGJ1dCBwcmludGluZyBhIHdhcm5pbmcgd291bGQKKwkJICogY2F1c2UgYSBkZWFkbG9jay4gKi8K KwkJcmV0dXJuOworCX0KKwlpZiAocy0+c3RyaW5nW3MtPmxlbiAtIDRdICE9IFRPX1JBKQogCQly ZXR1cm47CiAJcmF3MzI3MF9idWZmZXJfYWRkcmVzcyhjcC0+dmlldy5kZXYsIHMtPnN0cmluZyAr IHMtPmxlbiAtIDMsCiAJCQkgICAgICAgY3AtPnZpZXcuY29scyAqIChuciArIDEpKTsKQEAgLTQ1 MiwxMSArNDU3LDExIEBAIGNvbjMyNzBfY2xpbmVfZW5kKHN0cnVjdCBjb24zMjcwICpjcCkKIAkJ Y3AtPmNsaW5lLT5sZW4gKyA0IDogY3AtPnZpZXcuY29sczsKIAlzID0gY29uMzI3MF9hbGxvY19z dHJpbmcoY3AsIHNpemUpOwogCW1lbWNweShzLT5zdHJpbmcsIGNwLT5jbGluZS0+c3RyaW5nLCBj cC0+Y2xpbmUtPmxlbik7Ci0JaWYgKHMtPmxlbiA8IGNwLT52aWV3LmNvbHMgLSA1KSB7CisJaWYg KGNwLT5jbGluZS0+bGVuIDwgY3AtPnZpZXcuY29scyAtIDUpIHsKIAkJcy0+c3RyaW5nW3MtPmxl biAtIDRdID0gVE9fUkE7CiAJCXMtPnN0cmluZ1tzLT5sZW4gLSAxXSA9IDA7CiAJfSBlbHNlIHsK LQkJd2hpbGUgKC0tc2l6ZSA+IGNwLT5jbGluZS0+bGVuKQorCQl3aGlsZSAoLS1zaXplID49IGNw LT5jbGluZS0+bGVuKQogCQkJcy0+c3RyaW5nW3NpemVdID0gY3AtPnZpZXcuYXNjZWJjWycgJ107 CiAJfQogCS8qIFJlcGxhY2UgY2xpbmUgd2l0aCBhbGxvY2F0ZWQgbGluZSBzIGFuZCByZXNldCBj bGluZS4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmMgYi9kcml2 ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5jCmluZGV4IDc5Yjk4NDgyNTQ3Yi4uYzg0NmE2M2VhNjcy IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5jCisrKyBiL2RyaXZlcnMv czM5MC9zY3NpL3pmY3BfZGJmLmMKQEAgLTMsNyArMyw3IEBACiAgKgogICogRGVidWcgdHJhY2Vz IGZvciB6ZmNwLgogICoKLSAqIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMiwgMjAxMAor ICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE2CiAgKi8KIAogI2RlZmluZSBLTVNHX0NP TVBPTkVOVCAiemZjcCIKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCB6ZmNwX2RiZl9wbF93cml0ZShz dHJ1Y3QgemZjcF9kYmYgKmRiZiwgdm9pZCAqZGF0YSwgdTE2IGxlbmd0aCwgY2hhciAqYXJlYSwK ICAqIEB0YWc6IHRhZyBpbmRpY2F0aW5nIHdoaWNoIGtpbmQgb2YgdW5zb2xpY2l0ZWQgc3RhdHVz IGhhcyBiZWVuIHJlY2VpdmVkCiAgKiBAcmVxOiByZXF1ZXN0IGZvciB3aGljaCBhIHJlc3BvbnNl IHdhcyByZWNlaXZlZAogICovCi12b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKnRhZywg c3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQordm9pZCB6ZmNwX2RiZl9oYmFfZnNmX3JlcyhjaGFy ICp0YWcsIGludCBsZXZlbCwgc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQogewogCXN0cnVjdCB6 ZmNwX2RiZiAqZGJmID0gcmVxLT5hZGFwdGVyLT5kYmY7CiAJc3RydWN0IGZzZl9xdGNiX3ByZWZp eCAqcV9wcmVmID0gJnJlcS0+cXRjYi0+cHJlZml4OwpAQCAtNzgsNiArNzgsOCBAQCB2b2lkIHpm Y3BfZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQog CXJlYy0+dS5yZXMucmVxX2lzc3VlZCA9IHJlcS0+aXNzdWVkOwogCXJlYy0+dS5yZXMucHJvdF9z dGF0dXMgPSBxX3ByZWYtPnByb3Rfc3RhdHVzOwogCXJlYy0+dS5yZXMuZnNmX3N0YXR1cyA9IHFf aGVhZC0+ZnNmX3N0YXR1czsKKwlyZWMtPnUucmVzLnBvcnRfaGFuZGxlID0gcV9oZWFkLT5wb3J0 X2hhbmRsZTsKKwlyZWMtPnUucmVzLmx1bl9oYW5kbGUgPSBxX2hlYWQtPmx1bl9oYW5kbGU7CiAK IAltZW1jcHkocmVjLT51LnJlcy5wcm90X3N0YXR1c19xdWFsLCAmcV9wcmVmLT5wcm90X3N0YXR1 c19xdWFsLAogCSAgICAgICBGU0ZfUFJPVF9TVEFUVVNfUVVBTF9TSVpFKTsKQEAgLTkwLDcgKzky LDcgQEAgdm9pZCB6ZmNwX2RiZl9oYmFfZnNmX3JlcyhjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2Zz Zl9yZXEgKnJlcSkKIAkJCQkgIHJlYy0+cGxfbGVuLCAiZnNmX3JlcyIsIHJlcS0+cmVxX2lkKTsK IAl9CiAKLQlkZWJ1Z19ldmVudChkYmYtPmhiYSwgMSwgcmVjLCBzaXplb2YoKnJlYykpOworCWRl YnVnX2V2ZW50KGRiZi0+aGJhLCBsZXZlbCwgcmVjLCBzaXplb2YoKnJlYykpOwogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRiZi0+aGJhX2xvY2ssIGZsYWdzKTsKIH0KIApAQCAtMjM0LDcgKzIz Niw4IEBAIHN0YXRpYyB2b2lkIHpmY3BfZGJmX3NldF9jb21tb24oc3RydWN0IHpmY3BfZGJmX3Jl YyAqcmVjLAogCWlmIChzZGV2KSB7CiAJCXJlYy0+bHVuX3N0YXR1cyA9IGF0b21pY19yZWFkKCZz ZGV2X3RvX3pmY3Aoc2RldiktPnN0YXR1cyk7CiAJCXJlYy0+bHVuID0gemZjcF9zY3NpX2Rldl9s dW4oc2Rldik7Ci0JfQorCX0gZWxzZQorCQlyZWMtPmx1biA9IFpGQ1BfREJGX0lOVkFMSURfTFVO OwogfQogCiAvKioKQEAgLTMxMywxMyArMzE2LDQ4IEBAIHZvaWQgemZjcF9kYmZfcmVjX3J1bihj aGFyICp0YWcsIHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmVycCkKIAlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkYmYtPnJlY19sb2NrLCBmbGFncyk7CiB9CiAKKy8qKgorICogemZjcF9kYmZfcmVj X3J1bl93a2EgLSB0cmFjZSB3a2EgcG9ydCBldmVudCB3aXRoIGluZm8gbGlrZSBydW5uaW5nIHJl Y292ZXJ5CisgKiBAdGFnOiBpZGVudGlmaWVyIGZvciBldmVudAorICogQHdrYV9wb3J0OiB3ZWxs IGtub3duIGFkZHJlc3MgcG9ydAorICogQHJlcV9pZDogcmVxdWVzdCBJRCB0byBjb3JyZWxhdGUg d2l0aCBwb3RlbnRpYWwgSEJBIHRyYWNlIHJlY29yZAorICovCit2b2lkIHpmY3BfZGJmX3JlY19y dW5fd2thKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0LAorCQkJ ICB1NjQgcmVxX2lkKQoreworCXN0cnVjdCB6ZmNwX2RiZiAqZGJmID0gd2thX3BvcnQtPmFkYXB0 ZXItPmRiZjsKKwlzdHJ1Y3QgemZjcF9kYmZfcmVjICpyZWMgPSAmZGJmLT5yZWNfYnVmOworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGJmLT5yZWNfbG9jaywg ZmxhZ3MpOworCW1lbXNldChyZWMsIDAsIHNpemVvZigqcmVjKSk7CisKKwlyZWMtPmlkID0gWkZD UF9EQkZfUkVDX1JVTjsKKwltZW1jcHkocmVjLT50YWcsIHRhZywgWkZDUF9EQkZfVEFHX0xFTik7 CisJcmVjLT5wb3J0X3N0YXR1cyA9IHdrYV9wb3J0LT5zdGF0dXM7CisJcmVjLT5kX2lkID0gd2th X3BvcnQtPmRfaWQ7CisJcmVjLT5sdW4gPSBaRkNQX0RCRl9JTlZBTElEX0xVTjsKKworCXJlYy0+ dS5ydW4uZnNmX3JlcV9pZCA9IHJlcV9pZDsKKwlyZWMtPnUucnVuLnJlY19zdGF0dXMgPSB+MDsK KwlyZWMtPnUucnVuLnJlY19zdGVwID0gfjA7CisJcmVjLT51LnJ1bi5yZWNfYWN0aW9uID0gfjA7 CisJcmVjLT51LnJ1bi5yZWNfY291bnQgPSB+MDsKKworCWRlYnVnX2V2ZW50KGRiZi0+cmVjLCAx LCByZWMsIHNpemVvZigqcmVjKSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGJmLT5yZWNf bG9jaywgZmxhZ3MpOworfQorCiBzdGF0aWMgaW5saW5lCi12b2lkIHpmY3BfZGJmX3NhbihjaGFy ICp0YWcsIHN0cnVjdCB6ZmNwX2RiZiAqZGJmLCB2b2lkICpkYXRhLCB1OCBpZCwgdTE2IGxlbiwK LQkJICB1NjQgcmVxX2lkLCB1MzIgZF9pZCkKK3ZvaWQgemZjcF9kYmZfc2FuKGNoYXIgKnRhZywg c3RydWN0IHpmY3BfZGJmICpkYmYsCisJCSAgY2hhciAqcGF5dGFnLCBzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNnLCB1OCBpZCwgdTE2IGxlbiwKKwkJICB1NjQgcmVxX2lkLCB1MzIgZF9pZCwgdTE2IGNh cF9sZW4pCiB7CiAJc3RydWN0IHpmY3BfZGJmX3NhbiAqcmVjID0gJmRiZi0+c2FuX2J1ZjsKIAl1 MTYgcmVjX2xlbjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVjdCB6ZmNwX2RiZl9wYXkg KnBheWxvYWQgPSAmZGJmLT5wYXlfYnVmOworCXUxNiBwYXlfc3VtID0gMDsKIAogCXNwaW5fbG9j a19pcnFzYXZlKCZkYmYtPnNhbl9sb2NrLCBmbGFncyk7CiAJbWVtc2V0KHJlYywgMCwgc2l6ZW9m KCpyZWMpKTsKQEAgLTMyNywxMCArMzY1LDQxIEBAIHZvaWQgemZjcF9kYmZfc2FuKGNoYXIgKnRh Zywgc3RydWN0IHpmY3BfZGJmICpkYmYsIHZvaWQgKmRhdGEsIHU4IGlkLCB1MTYgbGVuLAogCXJl Yy0+aWQgPSBpZDsKIAlyZWMtPmZzZl9yZXFfaWQgPSByZXFfaWQ7CiAJcmVjLT5kX2lkID0gZF9p ZDsKLQlyZWNfbGVuID0gbWluKGxlbiwgKHUxNilaRkNQX0RCRl9TQU5fTUFYX1BBWUxPQUQpOwot CW1lbWNweShyZWMtPnBheWxvYWQsIGRhdGEsIHJlY19sZW4pOwogCW1lbWNweShyZWMtPnRhZywg dGFnLCBaRkNQX0RCRl9UQUdfTEVOKTsKKwlyZWMtPnBsX2xlbiA9IGxlbjsgLyogZnVsbCBsZW5n dGggZXZlbiBpZiB3ZSBjYXAgcGF5IGJlbG93ICovCisJaWYgKCFzZykKKwkJZ290byBvdXQ7CisJ cmVjX2xlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgc2ctPmxlbmd0aCwgWkZDUF9EQkZfU0FOX01B WF9QQVlMT0FEKTsKKwltZW1jcHkocmVjLT5wYXlsb2FkLCBzZ192aXJ0KHNnKSwgcmVjX2xlbik7 IC8qIHBhcnQgb2YgMXN0IHNnIGVudHJ5ICovCisJaWYgKGxlbiA8PSByZWNfbGVuKQorCQlnb3Rv IG91dDsgLyogc2tpcCBwYXkgcmVjb3JkIGlmIGZ1bGwgY29udGVudCBpbiByZWMtPnBheWxvYWQg Ki8KKworCS8qIGlmIChsZW4gPiByZWNfbGVuKToKKwkgKiBkdW1wIGRhdGEgdXAgdG8gY2FwX2xl biBpZ25vcmluZyBzbWFsbCBkdXBsaWNhdGUgaW4gcmVjLT5wYXlsb2FkCisJICovCisJc3Bpbl9s b2NrKCZkYmYtPnBheV9sb2NrKTsKKwltZW1zZXQocGF5bG9hZCwgMCwgc2l6ZW9mKCpwYXlsb2Fk KSk7CisJbWVtY3B5KHBheWxvYWQtPmFyZWEsIHBheXRhZywgWkZDUF9EQkZfVEFHX0xFTik7CisJ cGF5bG9hZC0+ZnNmX3JlcV9pZCA9IHJlcV9pZDsKKwlwYXlsb2FkLT5jb3VudGVyID0gMDsKKwlm b3IgKDsgc2cgJiYgcGF5X3N1bSA8IGNhcF9sZW47IHNnID0gc2dfbmV4dChzZykpIHsKKwkJdTE2 IHBheV9sZW4sIG9mZnNldCA9IDA7CisKKwkJd2hpbGUgKG9mZnNldCA8IHNnLT5sZW5ndGggJiYg cGF5X3N1bSA8IGNhcF9sZW4pIHsKKwkJCXBheV9sZW4gPSBtaW4oKHUxNilaRkNQX0RCRl9QQVlf TUFYX1JFQywKKwkJCQkgICAgICAodTE2KShzZy0+bGVuZ3RoIC0gb2Zmc2V0KSk7CisJCQkvKiBj YXBfbGVuIDw9IHBheV9zdW0gPCBjYXBfbGVuK1pGQ1BfREJGX1BBWV9NQVhfUkVDICovCisJCQlt ZW1jcHkocGF5bG9hZC0+ZGF0YSwgc2dfdmlydChzZykgKyBvZmZzZXQsIHBheV9sZW4pOworCQkJ ZGVidWdfZXZlbnQoZGJmLT5wYXksIDEsIHBheWxvYWQsCisJCQkJICAgIHpmY3BfZGJmX3BsZW4o cGF5X2xlbikpOworCQkJcGF5bG9hZC0+Y291bnRlcisrOworCQkJb2Zmc2V0ICs9IHBheV9sZW47 CisJCQlwYXlfc3VtICs9IHBheV9sZW47CisJCX0KKwl9CisJc3Bpbl91bmxvY2soJmRiZi0+cGF5 X2xvY2spOwogCitvdXQ6CiAJZGVidWdfZXZlbnQoZGJmLT5zYW4sIDEsIHJlYywgc2l6ZW9mKCpy ZWMpKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkYmYtPnNhbl9sb2NrLCBmbGFncyk7CiB9 CkBAIC0zNDcsOSArNDE2LDYyIEBAIHZvaWQgemZjcF9kYmZfc2FuX3JlcShjaGFyICp0YWcsIHN0 cnVjdCB6ZmNwX2ZzZl9yZXEgKmZzZiwgdTMyIGRfaWQpCiAJc3RydWN0IHpmY3BfZnNmX2N0X2Vs cyAqY3RfZWxzID0gZnNmLT5kYXRhOwogCXUxNiBsZW5ndGg7CiAKLQlsZW5ndGggPSAodTE2KShj dF9lbHMtPnJlcS0+bGVuZ3RoICsgRkNfQ1RfSERSX0xFTik7Ci0JemZjcF9kYmZfc2FuKHRhZywg ZGJmLCBzZ192aXJ0KGN0X2Vscy0+cmVxKSwgWkZDUF9EQkZfU0FOX1JFUSwgbGVuZ3RoLAotCQkg ICAgIGZzZi0+cmVxX2lkLCBkX2lkKTsKKwlsZW5ndGggPSAodTE2KXpmY3BfcWRpb19yZWFsX2J5 dGVzKGN0X2Vscy0+cmVxKTsKKwl6ZmNwX2RiZl9zYW4odGFnLCBkYmYsICJzYW5fcmVxIiwgY3Rf ZWxzLT5yZXEsIFpGQ1BfREJGX1NBTl9SRVEsCisJCSAgICAgbGVuZ3RoLCBmc2YtPnJlcV9pZCwg ZF9pZCwgbGVuZ3RoKTsKK30KKworc3RhdGljIHUxNiB6ZmNwX2RiZl9zYW5fcmVzX2NhcF9sZW5f aWZfZ3BuX2Z0KGNoYXIgKnRhZywKKwkJCQkJICAgICAgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNm LAorCQkJCQkgICAgICB1MTYgbGVuKQoreworCXN0cnVjdCB6ZmNwX2ZzZl9jdF9lbHMgKmN0X2Vs cyA9IGZzZi0+ZGF0YTsKKwlzdHJ1Y3QgZmNfY3RfaGRyICpyZXFoID0gc2dfdmlydChjdF9lbHMt PnJlcSk7CisJc3RydWN0IGZjX25zX2dpZF9mdCAqcmVxbiA9IChzdHJ1Y3QgZmNfbnNfZ2lkX2Z0 ICopKHJlcWggKyAxKTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnJlc3BfZW50cnkgPSBjdF9lbHMt PnJlc3A7CisJc3RydWN0IGZjX2dwbl9mdF9yZXNwICphY2M7CisJaW50IG1heF9lbnRyaWVzLCB4 LCBsYXN0ID0gMDsKKworCWlmICghKG1lbWNtcCh0YWcsICJmc3NjdGgyIiwgNykgPT0gMAorCSAg ICAgICYmIGN0X2Vscy0+ZF9pZCA9PSBGQ19GSURfRElSX1NFUlYKKwkgICAgICAmJiByZXFoLT5j dF9yZXYgPT0gRkNfQ1RfUkVWCisJICAgICAgJiYgcmVxaC0+Y3RfaW5faWRbMF0gPT0gMAorCSAg ICAgICYmIHJlcWgtPmN0X2luX2lkWzFdID09IDAKKwkgICAgICAmJiByZXFoLT5jdF9pbl9pZFsy XSA9PSAwCisJICAgICAgJiYgcmVxaC0+Y3RfZnNfdHlwZSA9PSBGQ19GU1RfRElSCisJICAgICAg JiYgcmVxaC0+Y3RfZnNfc3VidHlwZSA9PSBGQ19OU19TVUJUWVBFCisJICAgICAgJiYgcmVxaC0+ Y3Rfb3B0aW9ucyA9PSAwCisJICAgICAgJiYgcmVxaC0+X2N0X3Jlc3ZkMSA9PSAwCisJICAgICAg JiYgcmVxaC0+Y3RfY21kID09IEZDX05TX0dQTl9GVAorCSAgICAgIC8qIHJlcWgtPmN0X21yX3Np emUgY2FuIHZhcnkgc28gZG8gbm90IG1hdGNoIGJ1dCByZWFkIGJlbG93ICovCisJICAgICAgJiYg cmVxaC0+X2N0X3Jlc3ZkMiA9PSAwCisJICAgICAgJiYgcmVxaC0+Y3RfcmVhc29uID09IDAKKwkg ICAgICAmJiByZXFoLT5jdF9leHBsYW4gPT0gMAorCSAgICAgICYmIHJlcWgtPmN0X3ZlbmRvciA9 PSAwCisJICAgICAgJiYgcmVxbi0+Zm5fcmVzdmQgPT0gMAorCSAgICAgICYmIHJlcW4tPmZuX2Rv bWFpbl9pZF9zY29wZSA9PSAwCisJICAgICAgJiYgcmVxbi0+Zm5fYXJlYV9pZF9zY29wZSA9PSAw CisJICAgICAgJiYgcmVxbi0+Zm5fZmM0X3R5cGUgPT0gRkNfVFlQRV9GQ1ApKQorCQlyZXR1cm4g bGVuOyAvKiBub3QgR1BOX0ZUIHJlc3BvbnNlIHNvIGRvIG5vdCBjYXAgKi8KKworCWFjYyA9IHNn X3ZpcnQocmVzcF9lbnRyeSk7CisJbWF4X2VudHJpZXMgPSAocmVxaC0+Y3RfbXJfc2l6ZSAqIDQg LyBzaXplb2Yoc3RydWN0IGZjX2dwbl9mdF9yZXNwKSkKKwkJKyAxIC8qIHpmY3BfZmNfc2Nhbl9w b3J0czogYnl0ZXMgY29ycmVjdCwgZW50cmllcyBvZmYtYnktb25lCisJCSAgICAgKiB0byBhY2Nv dW50IGZvciBoZWFkZXIgYXMgMXN0IHBzZXVkbyAiZW50cnkiICovOworCisJLyogdGhlIGJhc2lj IENUX0lVIHByZWFtYmxlIGlzIHRoZSBzYW1lIHNpemUgYXMgb25lIGVudHJ5IGluIHRoZSBHUE5f RlQKKwkgKiByZXNwb25zZSwgYWxsb3dpbmcgdXMgdG8gc2tpcCBzcGVjaWFsIGhhbmRsaW5nIGZv ciBpdCAtIGp1c3Qgc2tpcCBpdAorCSAqLworCWZvciAoeCA9IDE7IHggPCBtYXhfZW50cmllcyAm JiAhbGFzdDsgeCsrKSB7CisJCWlmICh4ICUgKFpGQ1BfRkNfR1BOX0ZUX0VOVF9QQUdFICsgMSkp CisJCQlhY2MrKzsKKwkJZWxzZQorCQkJYWNjID0gc2dfdmlydCgrK3Jlc3BfZW50cnkpOworCisJ CWxhc3QgPSBhY2MtPmZwX2ZsYWdzICYgRkNfTlNfRklEX0xBU1Q7CisJfQorCWxlbiA9IG1pbihs ZW4sICh1MTYpKHggKiBzaXplb2Yoc3RydWN0IGZjX2dwbl9mdF9yZXNwKSkpOworCXJldHVybiBs ZW47IC8qIGNhcCBhZnRlciBsYXN0IGVudHJ5ICovCiB9CiAKIC8qKgpAQCAtMzYzLDkgKzQ4NSwx MCBAQCB2b2lkIHpmY3BfZGJmX3Nhbl9yZXMoY2hhciAqdGFnLCBzdHJ1Y3QgemZjcF9mc2ZfcmVx ICpmc2YpCiAJc3RydWN0IHpmY3BfZnNmX2N0X2VscyAqY3RfZWxzID0gZnNmLT5kYXRhOwogCXUx NiBsZW5ndGg7CiAKLQlsZW5ndGggPSAodTE2KShjdF9lbHMtPnJlc3AtPmxlbmd0aCArIEZDX0NU X0hEUl9MRU4pOwotCXpmY3BfZGJmX3Nhbih0YWcsIGRiZiwgc2dfdmlydChjdF9lbHMtPnJlc3Ap LCBaRkNQX0RCRl9TQU5fUkVTLCBsZW5ndGgsCi0JCSAgICAgZnNmLT5yZXFfaWQsIDApOworCWxl bmd0aCA9ICh1MTYpemZjcF9xZGlvX3JlYWxfYnl0ZXMoY3RfZWxzLT5yZXNwKTsKKwl6ZmNwX2Ri Zl9zYW4odGFnLCBkYmYsICJzYW5fcmVzIiwgY3RfZWxzLT5yZXNwLCBaRkNQX0RCRl9TQU5fUkVT LAorCQkgICAgIGxlbmd0aCwgZnNmLT5yZXFfaWQsIGN0X2Vscy0+ZF9pZCwKKwkJICAgICB6ZmNw X2RiZl9zYW5fcmVzX2NhcF9sZW5faWZfZ3BuX2Z0KHRhZywgZnNmLCBsZW5ndGgpKTsKIH0KIAog LyoqCkBAIC0zNzksMTEgKzUwMiwxMyBAQCB2b2lkIHpmY3BfZGJmX3Nhbl9pbl9lbHMoY2hhciAq dGFnLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICpmc2YpCiAJc3RydWN0IGZzZl9zdGF0dXNfcmVhZF9i dWZmZXIgKnNyYiA9CiAJCShzdHJ1Y3QgZnNmX3N0YXR1c19yZWFkX2J1ZmZlciAqKSBmc2YtPmRh dGE7CiAJdTE2IGxlbmd0aDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2c7CiAKIAlsZW5ndGggPSAo dTE2KShzcmItPmxlbmd0aCAtCiAJCQlvZmZzZXRvZihzdHJ1Y3QgZnNmX3N0YXR1c19yZWFkX2J1 ZmZlciwgcGF5bG9hZCkpOwotCXpmY3BfZGJmX3Nhbih0YWcsIGRiZiwgc3JiLT5wYXlsb2FkLmRh dGEsIFpGQ1BfREJGX1NBTl9FTFMsIGxlbmd0aCwKLQkJICAgICBmc2YtPnJlcV9pZCwgbnRvaDI0 KHNyYi0+ZF9pZCkpOworCXNnX2luaXRfb25lKCZzZywgc3JiLT5wYXlsb2FkLmRhdGEsIGxlbmd0 aCk7CisJemZjcF9kYmZfc2FuKHRhZywgZGJmLCAic2FuX2VscyIsICZzZywgWkZDUF9EQkZfU0FO X0VMUywgbGVuZ3RoLAorCQkgICAgIGZzZi0+cmVxX2lkLCBudG9oMjQoc3JiLT5kX2lkKSwgbGVu Z3RoKTsKIH0KIAogLyoqCkBAIC0zOTIsNyArNTE3LDggQEAgdm9pZCB6ZmNwX2RiZl9zYW5faW5f ZWxzKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmKQogICogQHNjOiBwb2ludGVy IHRvIHN0cnVjdCBzY3NpX2NtbmQKICAqIEBmc2Y6IHBvaW50ZXIgdG8gc3RydWN0IHpmY3BfZnNm X3JlcQogICovCi12b2lkIHpmY3BfZGJmX3Njc2koY2hhciAqdGFnLCBzdHJ1Y3Qgc2NzaV9jbW5k ICpzYywgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmKQordm9pZCB6ZmNwX2RiZl9zY3NpKGNoYXIg KnRhZywgaW50IGxldmVsLCBzdHJ1Y3Qgc2NzaV9jbW5kICpzYywKKwkJICAgc3RydWN0IHpmY3Bf ZnNmX3JlcSAqZnNmKQogewogCXN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIgPQogCQkoc3Ry dWN0IHpmY3BfYWRhcHRlciAqKSBzYy0+ZGV2aWNlLT5ob3N0LT5ob3N0ZGF0YVswXTsKQEAgLTQz NCw3ICs1NjAsNyBAQCB2b2lkIHpmY3BfZGJmX3Njc2koY2hhciAqdGFnLCBzdHJ1Y3Qgc2NzaV9j bW5kICpzYywgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmKQogCQl9CiAJfQogCi0JZGVidWdfZXZl bnQoZGJmLT5zY3NpLCAxLCByZWMsIHNpemVvZigqcmVjKSk7CisJZGVidWdfZXZlbnQoZGJmLT5z Y3NpLCBsZXZlbCwgcmVjLCBzaXplb2YoKnJlYykpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmRiZi0+c2NzaV9sb2NrLCBmbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9z Y3NpL3pmY3BfZGJmLmggYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5oCmluZGV4IDNhYzdh NGIzMGRkOS4uNDQwYWE2MTlkYTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNw X2RiZi5oCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmgKQEAgLTIsNyArMiw3IEBA CiAgKiB6ZmNwIGRldmljZSBkcml2ZXIKICAqIGRlYnVnIGZlYXR1cmUgZGVjbGFyYXRpb25zCiAg KgotICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA4LCAyMDEwCisgKiBDb3B5cmlnaHQgSUJNIENv cnAuIDIwMDgsIDIwMTUKICAqLwogCiAjaWZuZGVmIFpGQ1BfREJGX0gKQEAgLTE3LDYgKzE3LDEx IEBACiAKICNkZWZpbmUgWkZDUF9EQkZfSU5WQUxJRF9MVU4JMHhGRkZGRkZGRkZGRkZGRkZGdWxs CiAKK2VudW0gemZjcF9kYmZfcHNldWRvX2VycF9hY3RfdHlwZSB7CisJWkZDUF9QU0VVRE9fRVJQ X0FDVElPTl9SUE9SVF9BREQgPSAweGZmLAorCVpGQ1BfUFNFVURPX0VSUF9BQ1RJT05fUlBPUlRf REVMID0gMHhmZSwKK307CisKIC8qKgogICogc3RydWN0IHpmY3BfZGJmX3JlY190cmlnZ2VyIC0g dHJhY2UgcmVjb3JkIGZvciB0cmlnZ2VyZWQgcmVjb3ZlcnkgYWN0aW9uCiAgKiBAcmVhZHk6IG51 bWJlciBvZiByZWFkeSByZWNvdmVyeSBhY3Rpb25zCkBAIC0xMTAsNiArMTE1LDcgQEAgc3RydWN0 IHpmY3BfZGJmX3NhbiB7CiAJdTMyIGRfaWQ7CiAjZGVmaW5lIFpGQ1BfREJGX1NBTl9NQVhfUEFZ TE9BRCAoRkNfQ1RfSERSX0xFTiArIDMyKQogCWNoYXIgcGF5bG9hZFtaRkNQX0RCRl9TQU5fTUFY X1BBWUxPQURdOworCXUxNiBwbF9sZW47CiB9IF9fcGFja2VkOwogCiAvKioKQEAgLTEyNiw2ICsx MzIsOCBAQCBzdHJ1Y3QgemZjcF9kYmZfaGJhX3JlcyB7CiAJdTggIHByb3Rfc3RhdHVzX3F1YWxb RlNGX1BST1RfU1RBVFVTX1FVQUxfU0laRV07CiAJdTMyIGZzZl9zdGF0dXM7CiAJdTggIGZzZl9z dGF0dXNfcXVhbFtGU0ZfU1RBVFVTX1FVQUxJRklFUl9TSVpFXTsKKwl1MzIgcG9ydF9oYW5kbGU7 CisJdTMyIGx1bl9oYW5kbGU7CiB9IF9fcGFja2VkOwogCiAvKioKQEAgLTI3OSw3ICsyODcsNyBA QCBzdGF0aWMgaW5saW5lCiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVzcChjaGFyICp0YWcsIGlu dCBsZXZlbCwgc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQogewogCWlmIChsZXZlbCA8PSByZXEt PmFkYXB0ZXItPmRiZi0+aGJhLT5sZXZlbCkKLQkJemZjcF9kYmZfaGJhX2ZzZl9yZXModGFnLCBy ZXEpOworCQl6ZmNwX2RiZl9oYmFfZnNmX3Jlcyh0YWcsIGxldmVsLCByZXEpOwogfQogCiAvKioK QEAgLTMxOCw3ICszMjYsNyBAQCB2b2lkIF96ZmNwX2RiZl9zY3NpKGNoYXIgKnRhZywgaW50IGxl dmVsLCBzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kLAogCQkJCQlzY21kLT5kZXZpY2UtPmhvc3QtPmhv c3RkYXRhWzBdOwogCiAJaWYgKGxldmVsIDw9IGFkYXB0ZXItPmRiZi0+c2NzaS0+bGV2ZWwpCi0J CXpmY3BfZGJmX3Njc2kodGFnLCBzY21kLCByZXEpOworCQl6ZmNwX2RiZl9zY3NpKHRhZywgbGV2 ZWwsIHNjbWQsIHJlcSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kv emZjcF9lcnAuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXJwLmMKaW5kZXggNWM4NzI3MDhh NTc0Li43MjNjYmUzOTg1ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXJw LmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9lcnAuYwpAQCAtMyw3ICszLDcgQEAKICAq CiAgKiBFcnJvciBSZWNvdmVyeSBQcm9jZWR1cmVzIChFUlApLgogICoKLSAqIENvcHlyaWdodCBJ Qk0gQ29ycG9yYXRpb24gMjAwMiwgMjAxMAorICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAy MDE1CiAgKi8KIAogI2RlZmluZSBLTVNHX0NPTVBPTkVOVCAiemZjcCIKQEAgLTEyMjUsOCArMTIy NSwxNCBAQCBzdGF0aWMgdm9pZCB6ZmNwX2VycF9hY3Rpb25fY2xlYW51cChzdHJ1Y3QgemZjcF9l cnBfYWN0aW9uICphY3QsIGludCByZXN1bHQpCiAJCWJyZWFrOwogCiAJY2FzZSBaRkNQX0VSUF9B Q1RJT05fUkVPUEVOX1BPUlQ6Ci0JCWlmIChyZXN1bHQgPT0gWkZDUF9FUlBfU1VDQ0VFREVEKQot CQkJemZjcF9zY3NpX3NjaGVkdWxlX3Jwb3J0X3JlZ2lzdGVyKHBvcnQpOworCQkvKiBUaGlzIHN3 aXRjaCBjYXNlIG1pZ2h0IGFsc28gaGFwcGVuIGFmdGVyIGEgZm9yY2VkIHJlb3BlbgorCQkgKiB3 YXMgc3VjY2Vzc2Z1bGx5IGRvbmUgYW5kIHRodXMgb3ZlcndyaXR0ZW4gd2l0aCBhIG5ldworCQkg KiBub24tZm9yY2VkIHJlb3BlbiBhdCBgZXJzZnNfMicuIEluIHRoaXMgY2FzZSwgd2UgbXVzdCBu b3QKKwkJICogZG8gdGhlIGNsZWFuLXVwIG9mIHRoZSBub24tZm9yY2VkIHZlcnNpb24uCisJCSAq LworCQlpZiAoYWN0LT5zdGVwICE9IFpGQ1BfRVJQX1NURVBfVU5JTklUSUFMSVpFRCkKKwkJCWlm IChyZXN1bHQgPT0gWkZDUF9FUlBfU1VDQ0VFREVEKQorCQkJCXpmY3Bfc2NzaV9zY2hlZHVsZV9y cG9ydF9yZWdpc3Rlcihwb3J0KTsKIAkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBaRkNQX0VS UF9BQ1RJT05fUkVPUEVOX1BPUlRfRk9SQ0VEOgogCQlwdXRfZGV2aWNlKCZwb3J0LT5kZXYpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9leHQuaCBiL2RyaXZlcnMvczM5MC9z Y3NpL3pmY3BfZXh0LmgKaW5kZXggZWY5ZTUwMjI1ZWU3Li5iNTE1MDBhY2NjZTIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXh0LmgKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kv emZjcF9leHQuaApAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBFeHRlcm5hbCBmdW5jdGlvbiBkZWNs YXJhdGlvbnMuCiAgKgotICogQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAyLCAyMDEwCisg KiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMTUKICAqLwogCiAjaWZuZGVmIFpGQ1BfRVhU X0gKQEAgLTQ5LDggKzQ5LDkgQEAgZXh0ZXJuIHZvaWQgemZjcF9kYmZfYWRhcHRlcl91bnJlZ2lz dGVyKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKik7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9yZWNfdHJp ZyhjaGFyICosIHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKiwKIAkJCSAgICAgIHN0cnVjdCB6ZmNwX3Bv cnQgKiwgc3RydWN0IHNjc2lfZGV2aWNlICosIHU4LCB1OCk7CiBleHRlcm4gdm9pZCB6ZmNwX2Ri Zl9yZWNfcnVuKGNoYXIgKiwgc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqKTsKK2V4dGVybiB2b2lk IHpmY3BfZGJmX3JlY19ydW5fd2thKGNoYXIgKiwgc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKiwg dTY0KTsKIGV4dGVybiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfdXNzKGNoYXIgKiwgc3RydWN0IHpm Y3BfZnNmX3JlcSAqKTsKLWV4dGVybiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKiwg c3RydWN0IHpmY3BfZnNmX3JlcSAqKTsKK2V4dGVybiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVz KGNoYXIgKiwgaW50LCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICopOwogZXh0ZXJuIHZvaWQgemZjcF9k YmZfaGJhX2JpdF9lcnIoY2hhciAqLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICopOwogZXh0ZXJuIHZv aWQgemZjcF9kYmZfaGJhX2JlcnIoc3RydWN0IHpmY3BfZGJmICosIHN0cnVjdCB6ZmNwX2ZzZl9y ZXEgKik7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9oYmFfZGVmX2VycihzdHJ1Y3QgemZjcF9hZGFw dGVyICosIHU2NCwgdTE2LCB2b2lkICoqKTsKQEAgLTU4LDcgKzU5LDggQEAgZXh0ZXJuIHZvaWQg emZjcF9kYmZfaGJhX2Jhc2ljKGNoYXIgKiwgc3RydWN0IHpmY3BfYWRhcHRlciAqKTsKIGV4dGVy biB2b2lkIHpmY3BfZGJmX3Nhbl9yZXEoY2hhciAqLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICosIHUz Mik7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9zYW5fcmVzKGNoYXIgKiwgc3RydWN0IHpmY3BfZnNm X3JlcSAqKTsKIGV4dGVybiB2b2lkIHpmY3BfZGJmX3Nhbl9pbl9lbHMoY2hhciAqLCBzdHJ1Y3Qg emZjcF9mc2ZfcmVxICopOwotZXh0ZXJuIHZvaWQgemZjcF9kYmZfc2NzaShjaGFyICosIHN0cnVj dCBzY3NpX2NtbmQgKiwgc3RydWN0IHpmY3BfZnNmX3JlcSAqKTsKK2V4dGVybiB2b2lkIHpmY3Bf ZGJmX3Njc2koY2hhciAqLCBpbnQsIHN0cnVjdCBzY3NpX2NtbmQgKiwKKwkJCSAgc3RydWN0IHpm Y3BfZnNmX3JlcSAqKTsKIAogLyogemZjcF9lcnAuYyAqLwogZXh0ZXJuIHZvaWQgemZjcF9lcnBf c2V0X2FkYXB0ZXJfc3RhdHVzKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKiwgdTMyKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNw X2ZzZi5jCmluZGV4IDhiZmQ1NzllMjU0My4uMGNiYWViYjUyNDAyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNm LmMKQEAgLTMsNyArMyw3IEBACiAgKgogICogSW1wbGVtZW50YXRpb24gb2YgRlNGIGNvbW1hbmRz LgogICoKLSAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxMworICogQ29weXJpZ2h0IElC TSBDb3JwLiAyMDAyLCAyMDE1CiAgKi8KIAogI2RlZmluZSBLTVNHX0NPTVBPTkVOVCAiemZjcCIK QEAgLTQ4NCw3ICs0ODQsMTAgQEAgc3RhdGljIGludCB6ZmNwX2ZzZl9leGNoYW5nZV9jb25maWdf ZXZhbHVhdGUoc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQogCQlmY19ob3N0X3BvcnRfdHlwZShz aG9zdCkgPSBGQ19QT1JUVFlQRV9QVFA7CiAJCWJyZWFrOwogCWNhc2UgRlNGX1RPUE9fRkFCUklD OgotCQlmY19ob3N0X3BvcnRfdHlwZShzaG9zdCkgPSBGQ19QT1JUVFlQRV9OUE9SVDsKKwkJaWYg KGJvdHRvbS0+Y29ubmVjdGlvbl9mZWF0dXJlcyAmIEZTRl9GRUFUVVJFX05QSVZfTU9ERSkKKwkJ CWZjX2hvc3RfcG9ydF90eXBlKHNob3N0KSA9IEZDX1BPUlRUWVBFX05QSVY7CisJCWVsc2UKKwkJ CWZjX2hvc3RfcG9ydF90eXBlKHNob3N0KSA9IEZDX1BPUlRUWVBFX05QT1JUOwogCQlicmVhazsK IAljYXNlIEZTRl9UT1BPX0FMOgogCQlmY19ob3N0X3BvcnRfdHlwZShzaG9zdCkgPSBGQ19QT1JU VFlQRV9OTFBPUlQ7CkBAIC01ODksNyArNTkyLDYgQEAgc3RhdGljIHZvaWQgemZjcF9mc2ZfZXhj aGFuZ2VfcG9ydF9ldmFsdWF0ZShzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXEpCiAKIAlpZiAoYWRh cHRlci0+Y29ubmVjdGlvbl9mZWF0dXJlcyAmIEZTRl9GRUFUVVJFX05QSVZfTU9ERSkgewogCQlm Y19ob3N0X3Blcm1hbmVudF9wb3J0X25hbWUoc2hvc3QpID0gYm90dG9tLT53d3BuOwotCQlmY19o b3N0X3BvcnRfdHlwZShzaG9zdCkgPSBGQ19QT1JUVFlQRV9OUElWOwogCX0gZWxzZQogCQlmY19o b3N0X3Blcm1hbmVudF9wb3J0X25hbWUoc2hvc3QpID0gZmNfaG9zdF9wb3J0X25hbWUoc2hvc3Qp OwogCWZjX2hvc3RfbWF4ZnJhbWVfc2l6ZShzaG9zdCkgPSBib3R0b20tPm1heGltdW1fZnJhbWVf c2l6ZTsKQEAgLTk1OCw4ICs5NjAsMTIgQEAgc3RhdGljIGludCB6ZmNwX2ZzZl9zZXR1cF9jdF9l bHNfc2JhbHMoc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxLAogCWlmICh6ZmNwX2FkYXB0ZXJfbXVs dGlfYnVmZmVyX2FjdGl2ZShhZGFwdGVyKSkgewogCQlpZiAoemZjcF9xZGlvX3NiYWxzX2Zyb21f c2cocWRpbywgJnJlcS0+cWRpb19yZXEsIHNnX3JlcSkpCiAJCQlyZXR1cm4gLUVJTzsKKwkJcXRj Yi0+Ym90dG9tLnN1cHBvcnQucmVxX2J1Zl9sZW5ndGggPQorCQkJemZjcF9xZGlvX3JlYWxfYnl0 ZXMoc2dfcmVxKTsKIAkJaWYgKHpmY3BfcWRpb19zYmFsc19mcm9tX3NnKHFkaW8sICZyZXEtPnFk aW9fcmVxLCBzZ19yZXNwKSkKIAkJCXJldHVybiAtRUlPOworCQlxdGNiLT5ib3R0b20uc3VwcG9y dC5yZXNwX2J1Zl9sZW5ndGggPQorCQkJemZjcF9xZGlvX3JlYWxfYnl0ZXMoc2dfcmVzcCk7CiAK IAkJemZjcF9xZGlvX3NldF9kYXRhX2RpdihxZGlvLCAmcmVxLT5xZGlvX3JlcSwKIAkJCQkJemZj cF9xZGlvX3NiYWxlX2NvdW50KHNnX3JlcSkpOwpAQCAtMTA0OSw2ICsxMDU1LDcgQEAgaW50IHpm Y3BfZnNmX3NlbmRfY3Qoc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0LAogCiAJcmVx LT5oYW5kbGVyID0gemZjcF9mc2Zfc2VuZF9jdF9oYW5kbGVyOwogCXJlcS0+cXRjYi0+aGVhZGVy LnBvcnRfaGFuZGxlID0gd2thX3BvcnQtPmhhbmRsZTsKKwljdC0+ZF9pZCA9IHdrYV9wb3J0LT5k X2lkOwogCXJlcS0+ZGF0YSA9IGN0OwogCiAJemZjcF9kYmZfc2FuX3JlcSgiZnNzY3RfMSIsIHJl cSwgd2thX3BvcnQtPmRfaWQpOwpAQCAtMTE1Miw2ICsxMTU5LDcgQEAgaW50IHpmY3BfZnNmX3Nl bmRfZWxzKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBkX2lkLAogCiAJaHRvbjI0 KHJlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuZF9pZCwgZF9pZCk7CiAJcmVxLT5oYW5kbGVyID0g emZjcF9mc2Zfc2VuZF9lbHNfaGFuZGxlcjsKKwllbHMtPmRfaWQgPSBkX2lkOwogCXJlcS0+ZGF0 YSA9IGVsczsKIAogCXpmY3BfZGJmX3Nhbl9yZXEoImZzc2VsczEiLCByZXEsIGRfaWQpOwpAQCAt MTU2OSw3ICsxNTc3LDcgQEAgb3V0OgogaW50IHpmY3BfZnNmX29wZW5fd2thX3BvcnQoc3RydWN0 IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0KQogewogCXN0cnVjdCB6ZmNwX3FkaW8gKnFkaW8g PSB3a2FfcG9ydC0+YWRhcHRlci0+cWRpbzsKLQlzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXE7CisJ c3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxID0gTlVMTDsKIAlpbnQgcmV0dmFsID0gLUVJTzsKIAog CXNwaW5fbG9ja19pcnEoJnFkaW8tPnJlcV9xX2xvY2spOwpAQCAtMTU5OCw2ICsxNjA2LDggQEAg aW50IHpmY3BfZnNmX29wZW5fd2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9w b3J0KQogCQl6ZmNwX2ZzZl9yZXFfZnJlZShyZXEpOwogb3V0OgogCXNwaW5fdW5sb2NrX2lycSgm cWRpby0+cmVxX3FfbG9jayk7CisJaWYgKHJlcSAmJiAhSVNfRVJSKHJlcSkpCisJCXpmY3BfZGJm X3JlY19ydW5fd2thKCJmc293cF8xIiwgd2thX3BvcnQsIHJlcS0+cmVxX2lkKTsKIAlyZXR1cm4g cmV0dmFsOwogfQogCkBAIC0xNjIyLDcgKzE2MzIsNyBAQCBzdGF0aWMgdm9pZCB6ZmNwX2ZzZl9j bG9zZV93a2FfcG9ydF9oYW5kbGVyKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcSkKIGludCB6ZmNw X2ZzZl9jbG9zZV93a2FfcG9ydChzdHJ1Y3QgemZjcF9mY193a2FfcG9ydCAqd2thX3BvcnQpCiB7 CiAJc3RydWN0IHpmY3BfcWRpbyAqcWRpbyA9IHdrYV9wb3J0LT5hZGFwdGVyLT5xZGlvOwotCXN0 cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcTsKKwlzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXEgPSBOVUxM OwogCWludCByZXR2YWwgPSAtRUlPOwogCiAJc3Bpbl9sb2NrX2lycSgmcWRpby0+cmVxX3FfbG9j ayk7CkBAIC0xNjUxLDYgKzE2NjEsOCBAQCBpbnQgemZjcF9mc2ZfY2xvc2Vfd2thX3BvcnQoc3Ry dWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0KQogCQl6ZmNwX2ZzZl9yZXFfZnJlZShyZXEp Owogb3V0OgogCXNwaW5fdW5sb2NrX2lycSgmcWRpby0+cmVxX3FfbG9jayk7CisJaWYgKHJlcSAm JiAhSVNfRVJSKHJlcSkpCisJCXpmY3BfZGJmX3JlY19ydW5fd2thKCJmc2N3cF8xIiwgd2thX3Bv cnQsIHJlcS0+cmVxX2lkKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuaApp bmRleCBkYjhjODUzODJkY2EuLjhjYWQ0MWZmYjZiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkw L3Njc2kvemZjcF9mc2YuaAorKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oCkBAIC0z LDcgKzMsNyBAQAogICoKICAqIEludGVyZmFjZSB0byB0aGUgRlNGIHN1cHBvcnQgZnVuY3Rpb25z LgogICoKLSAqIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMiwgMjAxMAorICogQ29weXJp Z2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1CiAgKi8KIAogI2lmbmRlZiBGU0ZfSApAQCAtNDYyLDYg KzQ2Miw3IEBAIHN0cnVjdCB6ZmNwX2Jsa19kcnZfZGF0YSB7CiAgKiBAaGFuZGxlcl9kYXRhOiBk YXRhIHBhc3NlZCB0byBoYW5kbGVyIGZ1bmN0aW9uCiAgKiBAcG9ydDogT3B0aW9uYWwgcG9pbnRl ciB0byBwb3J0IGZvciB6ZmNwIGludGVybmFsIEVMUyAob25seSB0ZXN0IGxpbmsgQURJU0MpCiAg KiBAc3RhdHVzOiB1c2VkIHRvIHBhc3MgZXJyb3Igc3RhdHVzIHRvIGNhbGxpbmcgZnVuY3Rpb24K KyAqIEBkX2lkOiBEZXN0aW5hdGlvbiBJRCBvZiBlaXRoZXIgb3BlbiBXS0EgcG9ydCBmb3IgQ1Qg b3Igb2YgRF9JRCBmb3IgRUxTCiAgKi8KIHN0cnVjdCB6ZmNwX2ZzZl9jdF9lbHMgewogCXN0cnVj dCBzY2F0dGVybGlzdCAqcmVxOwpAQCAtNDcwLDYgKzQ3MSw3IEBAIHN0cnVjdCB6ZmNwX2ZzZl9j dF9lbHMgewogCXZvaWQgKmhhbmRsZXJfZGF0YTsKIAlzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0Owog CWludCBzdGF0dXM7CisJdTMyIGRfaWQ7CiB9OwogCiAjZW5kaWYJCQkJLyogRlNGX0ggKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc2NzaS5jIGIvZHJpdmVycy9zMzkwL3Nj c2kvemZjcF9zY3NpLmMKaW5kZXggN2IzNTM2NDdjYjkwLi4zOGVlMGRmNjMzYTMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc2NzaS5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3Np L3pmY3Bfc2NzaS5jCkBAIC0zLDcgKzMsNyBAQAogICoKICAqIEludGVyZmFjZSB0byBMaW51eCBT Q1NJIG1pZGxheWVyLgogICoKLSAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxMworICog Q29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1CiAgKi8KIAogI2RlZmluZSBLTVNHX0NPTVBP TkVOVCAiemZjcCIKQEAgLTU3Nyw2ICs1NzcsOSBAQCBzdGF0aWMgdm9pZCB6ZmNwX3Njc2lfcnBv cnRfcmVnaXN0ZXIoc3RydWN0IHpmY3BfcG9ydCAqcG9ydCkKIAlpZHMucG9ydF9pZCA9IHBvcnQt PmRfaWQ7CiAJaWRzLnJvbGVzID0gRkNfUlBPUlRfUk9MRV9GQ1BfVEFSR0VUOwogCisJemZjcF9k YmZfcmVjX3RyaWcoInNjcGFkZHkiLCBwb3J0LT5hZGFwdGVyLCBwb3J0LCBOVUxMLAorCQkJICBa RkNQX1BTRVVET19FUlBfQUNUSU9OX1JQT1JUX0FERCwKKwkJCSAgWkZDUF9QU0VVRE9fRVJQX0FD VElPTl9SUE9SVF9BREQpOwogCXJwb3J0ID0gZmNfcmVtb3RlX3BvcnRfYWRkKHBvcnQtPmFkYXB0 ZXItPnNjc2lfaG9zdCwgMCwgJmlkcyk7CiAJaWYgKCFycG9ydCkgewogCQlkZXZfZXJyKCZwb3J0 LT5hZGFwdGVyLT5jY3dfZGV2aWNlLT5kZXYsCkBAIC01OTgsNiArNjAxLDkgQEAgc3RhdGljIHZv aWQgemZjcF9zY3NpX3Jwb3J0X2Jsb2NrKHN0cnVjdCB6ZmNwX3BvcnQgKnBvcnQpCiAJc3RydWN0 IGZjX3Jwb3J0ICpycG9ydCA9IHBvcnQtPnJwb3J0OwogCiAJaWYgKHJwb3J0KSB7CisJCXpmY3Bf ZGJmX3JlY190cmlnKCJzY3BkZWx5IiwgcG9ydC0+YWRhcHRlciwgcG9ydCwgTlVMTCwKKwkJCQkg IFpGQ1BfUFNFVURPX0VSUF9BQ1RJT05fUlBPUlRfREVMLAorCQkJCSAgWkZDUF9QU0VVRE9fRVJQ X0FDVElPTl9SUE9SVF9ERUwpOwogCQlmY19yZW1vdGVfcG9ydF9kZWxldGUocnBvcnQpOwogCQlw b3J0LT5ycG9ydCA9IE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FyY21zci9h cmNtc3JfaGJhLmMgYi9kcml2ZXJzL3Njc2kvYXJjbXNyL2FyY21zcl9oYmEuYwppbmRleCAyZGNi Yjk3MGRlYmEuLjQ5ZmYzODAzN2RmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FyY21zci9h cmNtc3JfaGJhLmMKKysrIGIvZHJpdmVycy9zY3NpL2FyY21zci9hcmNtc3JfaGJhLmMKQEAgLTIw NjksMTggKzIwNjksOSBAQCBzdGF0aWMgaW50IGFyY21zcl9xdWV1ZV9jb21tYW5kX2xjayhzdHJ1 Y3Qgc2NzaV9jbW5kICpjbWQsCiAJc3RydWN0IEFkYXB0ZXJDb250cm9sQmxvY2sgKmFjYiA9IChz dHJ1Y3QgQWRhcHRlckNvbnRyb2xCbG9jayAqKSBob3N0LT5ob3N0ZGF0YTsKIAlzdHJ1Y3QgQ29t bWFuZENvbnRyb2xCbG9jayAqY2NiOwogCWludCB0YXJnZXQgPSBjbWQtPmRldmljZS0+aWQ7Ci0J aW50IGx1biA9IGNtZC0+ZGV2aWNlLT5sdW47Ci0JdWludDhfdCBzY3NpY21kID0gY21kLT5jbW5k WzBdOwogCWNtZC0+c2NzaV9kb25lID0gZG9uZTsKIAljbWQtPmhvc3Rfc2NyaWJibGUgPSBOVUxM OwogCWNtZC0+cmVzdWx0ID0gMDsKLQlpZiAoKHNjc2ljbWQgPT0gU1lOQ0hST05JWkVfQ0FDSEUp IHx8KHNjc2ljbWQgPT0gU0VORF9ESUFHTk9TVElDKSl7Ci0JCWlmKGFjYi0+ZGV2c3RhdGVbdGFy Z2V0XVtsdW5dID09IEFSRUNBX1JBSURfR09ORSkgewotICAgIAkJCWNtZC0+cmVzdWx0ID0gKERJ RF9OT19DT05ORUNUIDw8IDE2KTsKLQkJfQotCQljbWQtPnNjc2lfZG9uZShjbWQpOwotCQlyZXR1 cm4gMDsKLQl9CiAJaWYgKHRhcmdldCA9PSAxNikgewogCQkvKiB2aXJ0dWFsIGRldmljZSBmb3Ig aW9wIG1lc3NhZ2UgdHJhbnNmZXIgKi8KIAkJYXJjbXNyX2hhbmRsZV92aXJ0dWFsX2NvbW1hbmQo YWNiLCBjbWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2libXZzY3NpL2libXZmYy5jIGIv ZHJpdmVycy9zY3NpL2libXZzY3NpL2libXZmYy5jCmluZGV4IGJkZmEyMjNhN2RiYi4uZGYwMjFi NDA4MTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaWJtdnNjc2kvaWJtdmZjLmMKKysrIGIv ZHJpdmVycy9zY3NpL2libXZzY3NpL2libXZmYy5jCkBAIC03MTcsNyArNzE3LDYgQEAgc3RhdGlj IGludCBpYm12ZmNfcmVzZXRfY3JxKHN0cnVjdCBpYm12ZmNfaG9zdCAqdmhvc3QpCiAJc3Bpbl9s b2NrX2lycXNhdmUodmhvc3QtPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwogCXZob3N0LT5zdGF0 ZSA9IElCTVZGQ19OT19DUlE7CiAJdmhvc3QtPmxvZ2dlZF9pbiA9IDA7Ci0JaWJtdmZjX3NldF9o b3N0X2FjdGlvbih2aG9zdCwgSUJNVkZDX0hPU1RfQUNUSU9OX05PTkUpOwogCiAJLyogQ2xlYW4g b3V0IHRoZSBxdWV1ZSAqLwogCW1lbXNldChjcnEtPm1zZ3MsIDAsIFBBR0VfU0laRSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmggYi9kcml2ZXJzL3Nj c2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKaW5kZXggNDU4ZmIzNGZhOTFiLi5iYzcyYmYwYzQ3 ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaAorKysg Yi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKQEAgLTE0MDIsNyArMTQwMiw3 IEBAIHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlX3RlbXBsYXRlIHsKIH07CiAKICNkZWZpbmUgTUVH QVNBU19JU19MT0dJQ0FMKHNjcCkJCQkJCQlcCi0JKHNjcC0+ZGV2aWNlLT5jaGFubmVsIDwgTUVH QVNBU19NQVhfUERfQ0hBTk5FTFMpID8gMCA6IDEKKwkoKHNjcC0+ZGV2aWNlLT5jaGFubmVsIDwg TUVHQVNBU19NQVhfUERfQ0hBTk5FTFMpID8gMCA6IDEpCiAKICNkZWZpbmUgTUVHQVNBU19ERVZf SU5ERVgoaW5zdCwgc2NwKQkJCQkJXAogCSgoc2NwLT5kZXZpY2UtPmNoYW5uZWwgJSAyKSAqIE1F R0FTQVNfTUFYX0RFVl9QRVJfQ0hBTk5FTCkgKyAJXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3Np L21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVn YXJhaWRfc2FzX2Jhc2UuYwppbmRleCAxMDU1MGYzYzdiNDUuLjZlMWFlNTk1MWRlYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKKysrIGIvZHJp dmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKQEAgLTE0ODYsMTYgKzE0ODYs MTMgQEAgbWVnYXNhc19xdWV1ZV9jb21tYW5kX2xjayhzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kLCB2 b2lkICgqZG9uZSkgKHN0cnVjdCBzY3NpX2NtbmQKIAkJZ290byBvdXRfZG9uZTsKIAl9CiAKLQlz d2l0Y2ggKHNjbWQtPmNtbmRbMF0pIHsKLQljYXNlIFNZTkNIUk9OSVpFX0NBQ0hFOgotCQkvKgot CQkgKiBGVyB0YWtlcyBjYXJlIG9mIGZsdXNoIGNhY2hlIG9uIGl0cyBvd24KLQkJICogTm8gbmVl ZCB0byBzZW5kIGl0IGRvd24KLQkJICovCisJLyoKKwkgKiBGVyB0YWtlcyBjYXJlIG9mIGZsdXNo IGNhY2hlIG9uIGl0cyBvd24gZm9yIFZpcnR1YWwgRGlzay4KKwkgKiBObyBuZWVkIHRvIHNlbmQg aXQgZG93biBmb3IgVkQuIEZvciBKQk9EIHNlbmQgU1lOQ0hST05JWkVfQ0FDSEUgdG8gRlcuCisJ ICovCisJaWYgKChzY21kLT5jbW5kWzBdID09IFNZTkNIUk9OSVpFX0NBQ0hFKSAmJiBNRUdBU0FT X0lTX0xPR0lDQUwoc2NtZCkpIHsKIAkJc2NtZC0+cmVzdWx0ID0gRElEX09LIDw8IDE2OwogCQln b3RvIG91dF9kb25lOwotCWRlZmF1bHQ6Ci0JCWJyZWFrOwogCX0KIAogCWlmIChpbnN0YW5jZS0+ aW5zdGFuY2V0LT5idWlsZF9hbmRfaXNzdWVfY21kKGluc3RhbmNlLCBzY21kKSkgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2RlYnVn LmMKaW5kZXggYjNhNzI5YzkwYWEyLi5hOWQxZmVhMmVhMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c2NzaS9zY3NpX2RlYnVnLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYwpAQCAtMzQ3 NCw2ICszNDc0LDcgQEAgc3RhdGljIHZvaWQgX19leGl0IHNjc2lfZGVidWdfZXhpdCh2b2lkKQog CWJ1c191bnJlZ2lzdGVyKCZwc2V1ZG9fbGxkX2J1cyk7CiAJcm9vdF9kZXZpY2VfdW5yZWdpc3Rl cihwc2V1ZG9fcHJpbWFyeSk7CiAKKwl2ZnJlZShtYXBfc3RvcmVwKTsKIAlpZiAoZGlmX3N0b3Jl cCkKIAkJdmZyZWUoZGlmX3N0b3JlcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3Np X3NjYW4uYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYwppbmRleCAyOWY1NzUxMmI4NTYuLjVk MjA3ZjFhY2E3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jCisrKyBiL2Ry aXZlcnMvc2NzaS9zY3NpX3NjYW4uYwpAQCAtMTUyMiwxMiArMTUyMiwxMiBAQCBzdGF0aWMgaW50 IHNjc2lfcmVwb3J0X2x1bl9zY2FuKHN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldCwgaW50IGJm bGFncywKICBvdXRfZXJyOgogCWtmcmVlKGx1bl9kYXRhKTsKICBvdXQ6Ci0Jc2NzaV9kZXZpY2Vf cHV0KHNkZXYpOwogCWlmIChzY3NpX2RldmljZV9jcmVhdGVkKHNkZXYpKQogCQkvKgogCQkgKiB0 aGUgc2RldiB3ZSB1c2VkIGRpZG4ndCBhcHBlYXIgaW4gdGhlIHJlcG9ydCBsdW5zIHNjYW4KIAkJ ICovCiAJCV9fc2NzaV9yZW1vdmVfZGV2aWNlKHNkZXYpOworCXNjc2lfZGV2aWNlX3B1dChzZGV2 KTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2cuYyBiL2Ry aXZlcnMvc2NzaS9zZy5jCmluZGV4IGZkZGNlNGVlZmNkMi4uZmI1OWE0OWRkMDFkIDEwMDY0NAot LS0gYS9kcml2ZXJzL3Njc2kvc2cuYworKysgYi9kcml2ZXJzL3Njc2kvc2cuYwpAQCAtNTQ0LDYg KzU0NCw5IEBAIHNnX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAq YnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqIHBwb3MpCiAJc2dfaW9faGRyX3QgKmhwOwogCXVu c2lnbmVkIGNoYXIgY21uZFtNQVhfQ09NTUFORF9TSVpFXTsKIAorCWlmICh1bmxpa2VseShzZWdt ZW50X2VxKGdldF9mcygpLCBLRVJORUxfRFMpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlpZiAo KCEoc2ZwID0gKFNnX2ZkICopIGZpbHAtPnByaXZhdGVfZGF0YSkpIHx8ICghKHNkcCA9IHNmcC0+ cGFyZW50ZHApKSkKIAkJcmV0dXJuIC1FTlhJTzsKIAlTQ1NJX0xPR19USU1FT1VUKDMsIHByaW50 aygic2dfd3JpdGU6ICVzLCBjb3VudD0lZFxuIiwKQEAgLTc0Miw4ICs3NDUsMTEgQEAgc2dfY29t bW9uX3dyaXRlKFNnX2ZkICogc2ZwLCBTZ19yZXF1ZXN0ICogc3JwLAogCQlyZXR1cm4gazsJLyog cHJvYmFibHkgb3V0IG9mIHNwYWNlIC0tPiBFTk9NRU0gKi8KIAl9CiAJaWYgKHNkcC0+ZGV0YWNo ZWQpIHsKLQkJaWYgKHNycC0+YmlvKQorCQlpZiAoc3JwLT5iaW8pIHsKIAkJCWJsa19lbmRfcmVx dWVzdF9hbGwoc3JwLT5ycSwgLUVJTyk7CisJCQlzcnAtPnJxID0gTlVMTDsKKwkJfQorCiAJCXNn X2ZpbmlzaF9yZW1fcmVxKHNycCk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9paW8vaW1wZWRhbmNlLWFuYWx5emVyL2FkNTkzMy5jIGIvZHJpdmVy cy9zdGFnaW5nL2lpby9pbXBlZGFuY2UtYW5hbHl6ZXIvYWQ1OTMzLmMKaW5kZXggYjg4MTlkZTFj ZDhhLi4xY2U1NjlhNDA1YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW1wZWRh bmNlLWFuYWx5emVyL2FkNTkzMy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW1wZWRhbmNl LWFuYWx5emVyL2FkNTkzMy5jCkBAIC02MjYsNiArNjI2LDcgQEAgc3RhdGljIHZvaWQgYWQ1OTMz X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBpaW9fYnVmZmVyICpyaW5n ID0gaW5kaW9fZGV2LT5idWZmZXI7CiAJc2lnbmVkIHNob3J0IGJ1ZlsyXTsKIAl1bnNpZ25lZCBj aGFyIHN0YXR1czsKKwlpbnQgcmV0OwogCiAJbXV0ZXhfbG9jaygmaW5kaW9fZGV2LT5tbG9jayk7 CiAJaWYgKHN0LT5zdGF0ZSA9PSBBRDU5MzNfQ1RSTF9JTklUX1NUQVJUX0ZSRVEpIHsKQEAgLTYz MywxNyArNjM0LDIwIEBAIHN0YXRpYyB2b2lkIGFkNTkzM193b3JrKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKIAkJYWQ1OTMzX2NtZChzdCwgQUQ1OTMzX0NUUkxfU1RBUlRfU1dFRVApOwogCQlz dC0+c3RhdGUgPSBBRDU5MzNfQ1RSTF9TVEFSVF9TV0VFUDsKIAkJc2NoZWR1bGVfZGVsYXllZF93 b3JrKCZzdC0+d29yaywgc3QtPnBvbGxfdGltZV9qaWZmaWVzKTsKLQkJbXV0ZXhfdW5sb2NrKCZp bmRpb19kZXYtPm1sb2NrKTsKLQkJcmV0dXJuOworCQlnb3RvIG91dDsKIAl9CiAKLQlhZDU5MzNf aTJjX3JlYWQoc3QtPmNsaWVudCwgQUQ1OTMzX1JFR19TVEFUVVMsIDEsICZzdGF0dXMpOworCXJl dCA9IGFkNTkzM19pMmNfcmVhZChzdC0+Y2xpZW50LCBBRDU5MzNfUkVHX1NUQVRVUywgMSwgJnN0 YXR1cyk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CiAKIAlpZiAoc3RhdHVzICYgQUQ1OTMzX1NU QVRfREFUQV9WQUxJRCkgewotCQlhZDU5MzNfaTJjX3JlYWQoc3QtPmNsaWVudCwKKwkJcmV0ID0g YWQ1OTMzX2kyY19yZWFkKHN0LT5jbGllbnQsCiAJCQkJdGVzdF9iaXQoMSwgcmluZy0+c2Nhbl9t YXNrKSA/CiAJCQkJQUQ1OTMzX1JFR19SRUFMX0RBVEEgOiBBRDU5MzNfUkVHX0lNQUdfREFUQSwK IAkJCQlyaW5nLT5zY2FuX2NvdW50ICogMiwgKHU4ICopYnVmKTsKKwkJaWYgKHJldCkKKwkJCWdv dG8gb3V0OwogCiAJCWlmIChyaW5nLT5zY2FuX2NvdW50ID09IDIpIHsKIAkJCWJ1ZlswXSA9IGJl MTZfdG9fY3B1KGJ1ZlswXSk7CkBAIC02NTYsOCArNjYwLDcgQEAgc3RhdGljIHZvaWQgYWQ1OTMz X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCX0gZWxzZSB7CiAJCS8qIG5vIGRhdGEg YXZhaWxhYmxlIC0gdHJ5IGFnYWluIGxhdGVyICovCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygm c3QtPndvcmssIHN0LT5wb2xsX3RpbWVfamlmZmllcyk7Ci0JCW11dGV4X3VubG9jaygmaW5kaW9f ZGV2LT5tbG9jayk7Ci0JCXJldHVybjsKKwkJZ290byBvdXQ7CiAJfQogCiAJaWYgKHN0YXR1cyAm IEFENTkzM19TVEFUX1NXRUVQX0RPTkUpIHsKQEAgLTY2OSw3ICs2NzIsNyBAQCBzdGF0aWMgdm9p ZCBhZDU5MzNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWFkNTkzM19jbWQoc3Qs IEFENTkzM19DVFJMX0lOQ19GUkVRKTsKIAkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZzdC0+d29y aywgc3QtPnBvbGxfdGltZV9qaWZmaWVzKTsKIAl9Ci0KK291dDoKIAltdXRleF91bmxvY2soJmlu ZGlvX2Rldi0+bWxvY2spOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfbGRpc2Mu YyBiL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jCmluZGV4IDhlMDkyNGY1NTQ0Ni4uODIzNThjMmM5 ZmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYworKysgYi9kcml2ZXJzL3R0 eS90dHlfbGRpc2MuYwpAQCAtNDI0LDYgKzQyNCwxMCBAQCBFWFBPUlRfU1lNQk9MX0dQTCh0dHlf bGRpc2NfZmx1c2gpOwogICoJdGhleSBhcmUgbm90IG9uIGhvdCBwYXRocyBzbyBhIGxpdHRsZSBk aXNjaXBsaW5lIHdvbid0IGRvCiAgKglhbnkgaGFybS4KICAqCisgKglUaGUgbGluZSBkaXNjaXBs aW5lLXJlbGF0ZWQgdHR5X3N0cnVjdCBmaWVsZHMgYXJlIHJlc2V0IHRvCisgKglwcmV2ZW50IHRo ZSBsZGlzYyBkcml2ZXIgZnJvbSByZS11c2luZyBzdGFsZSBpbmZvcm1hdGlvbiBmb3IKKyAqCXRo ZSBuZXcgbGRpc2MgaW5zdGFuY2UuCisgKgogICoJTG9ja2luZzogdGFrZXMgdGVybWlvc19tdXRl eAogICovCiAKQEAgLTQzMiw2ICs0MzYsOSBAQCBzdGF0aWMgdm9pZCB0dHlfc2V0X3Rlcm1pb3Nf bGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IG51bSkKIAltdXRleF9sb2NrKCZ0dHkt PnRlcm1pb3NfbXV0ZXgpOwogCXR0eS0+dGVybWlvcy0+Y19saW5lID0gbnVtOwogCW11dGV4X3Vu bG9jaygmdHR5LT50ZXJtaW9zX211dGV4KTsKKworCXR0eS0+ZGlzY19kYXRhID0gTlVMTDsKKwl0 dHktPnJlY2VpdmVfcm9vbSA9IDA7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkv dnQvdnQuYyBiL2RyaXZlcnMvdHR5L3Z0L3Z0LmMKaW5kZXggNGRmNWNmZjdmMjk4Li4xYzQ2OWFk MWUwZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3Z0L3Z0LmMKKysrIGIvZHJpdmVycy90dHkv dnQvdnQuYwpAQCAtODgyLDEwICs4ODIsMTUgQEAgc3RhdGljIGludCB2Y19kb19yZXNpemUoc3Ry dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHZjX2RhdGEgKnZjLAogCWlmIChuZXdfY29scyA9 PSB2Yy0+dmNfY29scyAmJiBuZXdfcm93cyA9PSB2Yy0+dmNfcm93cykKIAkJcmV0dXJuIDA7CiAK KwlpZiAobmV3X3NjcmVlbl9zaXplID4gKDQgPDwgMjApKQorCQlyZXR1cm4gLUVJTlZBTDsKIAlu ZXdzY3JlZW4gPSBrbWFsbG9jKG5ld19zY3JlZW5fc2l6ZSwgR0ZQX1VTRVIpOwogCWlmICghbmV3 c2NyZWVuKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWlmICh2YyA9PSBzZWxfY29ucykKKwkJY2xl YXJfc2VsZWN0aW9uKCk7CisKIAlvbGRfcm93cyA9IHZjLT52Y19yb3dzOwogCW9sZF9yb3dfc2l6 ZSA9IHZjLT52Y19zaXplX3JvdzsKIApAQCAtMTE5Nyw3ICsxMjAyLDcgQEAgc3RhdGljIHZvaWQg Y3NpX0ooc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgdnBhcikKIAkJCWJyZWFrOwogCQljYXNlIDM6 IC8qIGVyYXNlIHNjcm9sbC1iYWNrIGJ1ZmZlciAoYW5kIHdob2xlIGRpc3BsYXkpICovCiAJCQlz Y3JfbWVtc2V0dyh2Yy0+dmNfc2NyZWVuYnVmLCB2Yy0+dmNfdmlkZW9fZXJhc2VfY2hhciwKLQkJ CQkgICAgdmMtPnZjX3NjcmVlbmJ1Zl9zaXplID4+IDEpOworCQkJCSAgICB2Yy0+dmNfc2NyZWVu YnVmX3NpemUpOwogCQkJc2V0X29yaWdpbih2Yyk7CiAJCQlpZiAoQ09OX0lTX1ZJU0lCTEUodmMp KQogCQkJCXVwZGF0ZV9zY3JlZW4odmMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0 L3VfZXRoZXIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC91X2V0aGVyLmMKaW5kZXggOWEyYTFhZTli NjY3Li4zNzQ5MjY5ZDc5NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91X2V0aGVy LmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3VfZXRoZXIuYwpAQCAtNTkwLDEzICs1OTAsNiBA QCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXRoX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwK IAogCXJlcS0+bGVuZ3RoID0gbGVuZ3RoOwogCi0JLyogdGhyb3R0bGUgaGlnaC9zdXBlciBzcGVl ZCBJUlEgcmF0ZSBiYWNrIHNsaWdodGx5ICovCi0JaWYgKGdhZGdldF9pc19kdWFsc3BlZWQoZGV2 LT5nYWRnZXQpKQotCQlyZXEtPm5vX2ludGVycnVwdCA9IChkZXYtPmdhZGdldC0+c3BlZWQgPT0g VVNCX1NQRUVEX0hJR0ggfHwKLQkJCQkgICAgIGRldi0+Z2FkZ2V0LT5zcGVlZCA9PSBVU0JfU1BF RURfU1VQRVIpCi0JCQk/ICgoYXRvbWljX3JlYWQoJmRldi0+dHhfcWxlbikgJSBxbXVsdCkgIT0g MCkKLQkJCTogMDsKLQogCXJldHZhbCA9IHVzYl9lcF9xdWV1ZShpbiwgcmVxLCBHRlBfQVRPTUlD KTsKIAlzd2l0Y2ggKHJldHZhbCkgewogCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9ob3N0L3hoY2ktcGNpLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcGNpLmMKaW5kZXggY2M2 YWE2NmY0Mjc4Li5mY2U2MzU1M2YzOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhj aS1wY2kuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcGNpLmMKQEAgLTM2LDYgKzM2LDcg QEAKIAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0xZTlhQT0lOVF9YSENJCTB4OGMzMQog I2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0xZTlhQT0lOVF9MUF9YSENJCTB4OWMzMQorI2Rl ZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX1dJTERDQVRQT0lOVF9MUF9YSENJCTB4OWNiMQogI2Rl ZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0NIRVJSWVZJRVdfWEhDSQkJMHgyMmI1CiAjZGVmaW5l IFBDSV9ERVZJQ0VfSURfSU5URUxfU1VOUklTRVBPSU5UX0hfWEhDSQkJMHhhMTJmCiAjZGVmaW5l IFBDSV9ERVZJQ0VfSURfSU5URUxfU1VOUklTRVBPSU5UX0xQX1hIQ0kJMHg5ZDJmCkBAIC0xMjcs NyArMTI4LDggQEAgc3RhdGljIHZvaWQgeGhjaV9wY2lfcXVpcmtzKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IHhoY2lfaGNkICp4aGNpKQogCQl4aGNpLT5xdWlya3MgfD0gWEhDSV9TUFVSSU9V U19SRUJPT1Q7CiAJfQogCWlmIChwZGV2LT52ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9JTlRFTCAm JgotCQlwZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF9MWU5YUE9JTlRfTFBfWEhD SSkgeworCQkocGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfTFlOWFBPSU5UX0xQ X1hIQ0kgfHwKKwkJIHBkZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX1dJTERDQVRQ T0lOVF9MUF9YSENJKSkgewogCQl4aGNpLT5xdWlya3MgfD0gWEhDSV9TUFVSSU9VU19SRUJPT1Q7 CiAJCXhoY2ktPnF1aXJrcyB8PSBYSENJX1NQVVJJT1VTX1dBS0VVUDsKIAl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9taXNjL2xlZ291c2J0b3dlci5jIGIvZHJpdmVycy91c2IvbWlzYy9sZWdv dXNidG93ZXIuYwppbmRleCBhOTg5MzU2ZjY5M2UuLjFkNjUyMTEwNWJkZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2IvbWlzYy9sZWdvdXNidG93ZXIuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2xl Z291c2J0b3dlci5jCkBAIC05NTEsMjQgKzk1MSw2IEBAIHN0YXRpYyBpbnQgdG93ZXJfcHJvYmUg KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNl CiAJZGV2LT5pbnRlcnJ1cHRfaW5faW50ZXJ2YWwgPSBpbnRlcnJ1cHRfaW5faW50ZXJ2YWwgPyBp bnRlcnJ1cHRfaW5faW50ZXJ2YWwgOiBkZXYtPmludGVycnVwdF9pbl9lbmRwb2ludC0+YkludGVy dmFsOwogCWRldi0+aW50ZXJydXB0X291dF9pbnRlcnZhbCA9IGludGVycnVwdF9vdXRfaW50ZXJ2 YWwgPyBpbnRlcnJ1cHRfb3V0X2ludGVydmFsIDogZGV2LT5pbnRlcnJ1cHRfb3V0X2VuZHBvaW50 LT5iSW50ZXJ2YWw7CiAKLQkvKiB3ZSBjYW4gcmVnaXN0ZXIgdGhlIGRldmljZSBub3csIGFzIGl0 IGlzIHJlYWR5ICovCi0JdXNiX3NldF9pbnRmZGF0YSAoaW50ZXJmYWNlLCBkZXYpOwotCi0JcmV0 dmFsID0gdXNiX3JlZ2lzdGVyX2RldiAoaW50ZXJmYWNlLCAmdG93ZXJfY2xhc3MpOwotCi0JaWYg KHJldHZhbCkgewotCQkvKiBzb21ldGhpbmcgcHJldmVudGVkIHVzIGZyb20gcmVnaXN0ZXJpbmcg dGhpcyBkcml2ZXIgKi8KLQkJZXJyICgiTm90IGFibGUgdG8gZ2V0IGEgbWlub3IgZm9yIHRoaXMg ZGV2aWNlLiIpOwotCQl1c2Jfc2V0X2ludGZkYXRhIChpbnRlcmZhY2UsIE5VTEwpOwotCQlnb3Rv IGVycm9yOwotCX0KLQlkZXYtPm1pbm9yID0gaW50ZXJmYWNlLT5taW5vcjsKLQotCS8qIGxldCB0 aGUgdXNlciBrbm93IHdoYXQgbm9kZSB0aGlzIGRldmljZSBpcyBub3cgYXR0YWNoZWQgdG8gKi8K LQlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJMRUdPIFVTQiBUb3dlciAjJWQgbm93IGF0dGFj aGVkIHRvIG1ham9yICIKLQkJICIlZCBtaW5vciAlZFxuIiwgKGRldi0+bWlub3IgLSBMRUdPX1VT Ql9UT1dFUl9NSU5PUl9CQVNFKSwKLQkJIFVTQl9NQUpPUiwgZGV2LT5taW5vcik7Ci0KIAkvKiBn ZXQgdGhlIGZpcm13YXJlIHZlcnNpb24gYW5kIGxvZyBpdCAqLwogCXJlc3VsdCA9IHVzYl9jb250 cm9sX21zZyAodWRldiwKIAkJCQkgIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSwKQEAgLTk4OSw2 ICs5NzEsMjMgQEAgc3RhdGljIGludCB0b3dlcl9wcm9iZSAoc3RydWN0IHVzYl9pbnRlcmZhY2Ug KmludGVyZmFjZSwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2UKIAkJIGdldF92ZXJzaW9uX3JlcGx5 Lm1pbm9yLAogCQkgbGUxNl90b19jcHUoZ2V0X3ZlcnNpb25fcmVwbHkuYnVpbGRfbm8pKTsKIAor CS8qIHdlIGNhbiByZWdpc3RlciB0aGUgZGV2aWNlIG5vdywgYXMgaXQgaXMgcmVhZHkgKi8KKwl1 c2Jfc2V0X2ludGZkYXRhIChpbnRlcmZhY2UsIGRldik7CisKKwlyZXR2YWwgPSB1c2JfcmVnaXN0 ZXJfZGV2IChpbnRlcmZhY2UsICZ0b3dlcl9jbGFzcyk7CisKKwlpZiAocmV0dmFsKSB7CisJCS8q IHNvbWV0aGluZyBwcmV2ZW50ZWQgdXMgZnJvbSByZWdpc3RlcmluZyB0aGlzIGRyaXZlciAqLwor CQllcnIgKCJOb3QgYWJsZSB0byBnZXQgYSBtaW5vciBmb3IgdGhpcyBkZXZpY2UuIik7CisJCXVz Yl9zZXRfaW50ZmRhdGEgKGludGVyZmFjZSwgTlVMTCk7CisJCWdvdG8gZXJyb3I7CisJfQorCWRl di0+bWlub3IgPSBpbnRlcmZhY2UtPm1pbm9yOworCisJLyogbGV0IHRoZSB1c2VyIGtub3cgd2hh dCBub2RlIHRoaXMgZGV2aWNlIGlzIG5vdyBhdHRhY2hlZCB0byAqLworCWRldl9pbmZvKCZpbnRl cmZhY2UtPmRldiwgIkxFR08gVVNCIFRvd2VyICMlZCBub3cgYXR0YWNoZWQgdG8gbWFqb3IgIgor CQkgIiVkIG1pbm9yICVkXG4iLCAoZGV2LT5taW5vciAtIExFR09fVVNCX1RPV0VSX01JTk9SX0JB U0UpLAorCQkgVVNCX01BSk9SLCBkZXYtPm1pbm9yKTsKIAogZXhpdDoKIAlkYmcoMiwgIiVzOiBs ZWF2ZSwgcmV0dXJuIHZhbHVlIDB4JS44bHggKGRldikiLCBfX2Z1bmNfXywgKGxvbmcpIGRldik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTB4LmMgYi9kcml2ZXJzL3VzYi9z ZXJpYWwvY3AyMTB4LmMKaW5kZXggZTk0MWUyZDMzMjY1Li40MjM4YzI3NWVkZmUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwv Y3AyMTB4LmMKQEAgLTEyMyw2ICsxMjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZp Y2VfaWQgaWRfdGFibGVbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDg0MTEpIH0sIC8q IEt5b2NlcmEgR1BTIE1vZHVsZSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODQxOCkgfSwg LyogSVJaIEF1dG9tYXRpb24gVGVsZXBvcnQgU0ctMTAgR1NNL0dQUlMgTW9kZW0gKi8KIAl7IFVT Ql9ERVZJQ0UoMHgxMEM0LCAweDg0NkUpIH0sIC8qIEJFSSBVU0IgU2Vuc29yIEludGVyZmFjZSAo VkNQKSAqLworCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODQ3MCkgfSwgLyogSnVuaXBlciBOZXR3 b3JrcyBCWCBTZXJpZXMgU3lzdGVtIENvbnNvbGUgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAw eDg0NzcpIH0sIC8qIEJhbGx1ZmYgUkZJRCAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODRC NikgfSwgLyogU3Rhcml6b25hIEh5cGVyaW9uICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4 NUVBKSB9LCAvKiBBQy1TZXJ2aWNlcyBJQlVTLUlGICovCkBAIC0xMzUsNiArMTM2LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7CiAJeyBVU0JfREVW SUNFKDB4MTBDNCwgMHg4OEE0KSB9LCAvKiBNTUIgTmV0d29ya3MgWmlnQmVlIFVTQiBEZXZpY2Ug Ki8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDg4QTUpIH0sIC8qIFBsYW5ldCBJbm5vdmF0aW9u IEluZ2VuaSBaaWdCZWUgVVNCIERldmljZSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODk0 NikgfSwgLyogS2V0cmEgTjEgV2lyZWxlc3MgSW50ZXJmYWNlICovCisJeyBVU0JfREVWSUNFKDB4 MTBDNCwgMHg4OTYyKSB9LCAvKiBCcmltIEJyb3RoZXJzIGNoYXJnaW5nIGRvY2sgKi8KIAl7IFVT Ql9ERVZJQ0UoMHgxMEM0LCAweDg5NzcpIH0sCS8qIENFTCBNZXNoV29ya3MgRGV2S2l0IERldmlj ZSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODk5OCkgfSwgLyogS0NGIFRlY2hub2xvZ2ll cyBQUk4gKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDhBMkEpIH0sIC8qIEh1YlogZHVhbCBa aWdCZWUgYW5kIFotV2F2ZSBkb25nbGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3Nlcmlh bC9mdGRpX3Npby5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKaW5kZXggOTNmZTAw NzdmMTA4Li5kYmM0MzdjNjFmYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRp X3Npby5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCkBAIC0xMDMzLDYgKzEw MzMsOCBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgaWRfdGFibGVfY29tYmluZWQgW10g PSB7CiAJeyBVU0JfREVWSUNFKElDUERBU19WSUQsIElDUERBU19JNzU2MVVfUElEKSB9LAogCXsg VVNCX0RFVklDRShJQ1BEQVNfVklELCBJQ1BEQVNfSTc1NjNVX1BJRCkgfSwKIAl7IFVTQl9ERVZJ Q0UoV0lDRURfVklELCBXSUNFRF9VU0IyMDcwNlYyX1BJRCkgfSwKKwl7IFVTQl9ERVZJQ0UoVElf VklELCBUSV9DQzMyMDBfTEFVTkNIUEFEX1BJRCksCisJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxf dWxvbmdfdCkmZnRkaV9qdGFnX3F1aXJrIH0sCiAJeyB9LAkJCQkJLyogT3B0aW9uYWwgcGFyYW1l dGVyIGVudHJ5ICovCiAJeyB9CQkJCQkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLwogfTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npb19pZHMuaCBiL2RyaXZlcnMvdXNiL3Nl cmlhbC9mdGRpX3Npb19pZHMuaAppbmRleCA1NTk2Njk3ODZhMjAuLjYxODFiNzljMmVkMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvX2lkcy5oCisrKyBiL2RyaXZlcnMv dXNiL3NlcmlhbC9mdGRpX3Npb19pZHMuaApAQCAtNTk2LDYgKzU5NiwxMiBAQAogI2RlZmluZSBT VEs1NDFfUElECQkweDIxMDkgLyogWmlnYmVlIENvbnRyb2xsZXIgKi8KIAogLyoKKyAqIFRleGFz IEluc3RydW1lbnRzCisgKi8KKyNkZWZpbmUgVElfVklECQkJMHgwNDUxCisjZGVmaW5lIFRJX0ND MzIwMF9MQVVOQ0hQQURfUElECTB4QzMyQSAvKiBTaW1wbGVMaW5rIFdpLUZpIENDMzIwMCBMYXVu Y2hQYWQgKi8KKworLyoKICAqIEJsYWNrZmluIGduSUNFIEpUQUcKICAqIGh0dHA6Ly9kb2NzLmJs YWNrZmluLnVjbGludXgub3JnL2Rva3UucGhwP2lkPWh3Omp0YWc6Z25pY2UKICAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS90cmFuc3BvcnQuYyBiL2RyaXZlcnMvdXNiL3N0b3Jh Z2UvdHJhbnNwb3J0LmMKaW5kZXggMzY2Mzk1YzVmYTkyLi4xOTdmY2ZhMDY1OWEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc3Rv cmFnZS90cmFuc3BvcnQuYwpAQCAtOTIyLDEwICs5MjIsMTUgQEAgaW50IHVzYl9zdG9yX0NCX3Ry YW5zcG9ydChzdHJ1Y3Qgc2NzaV9jbW5kICpzcmIsIHN0cnVjdCB1c19kYXRhICp1cykKIAogCS8q IENPTU1BTkQgU1RBR0UgKi8KIAkvKiBsZXQncyBzZW5kIHRoZSBjb21tYW5kIHZpYSB0aGUgY29u dHJvbCBwaXBlICovCisJLyoKKwkgKiBDb21tYW5kIGlzIHNvbWV0aW1lIChmLmUuIGFmdGVyIHNj c2lfZWhfcHJlcF9jbW5kKSBvbiB0aGUgc3RhY2suCisJICogU3RhY2sgbWF5IGJlIHZtYWxsb2Nh dGVkLiAgU28gbm8gRE1BIGZvciB1cy4gIE1ha2UgYSBjb3B5LgorCSAqLworCW1lbWNweSh1cy0+ aW9idWYsIHNyYi0+Y21uZCwgc3JiLT5jbWRfbGVuKTsKIAlyZXN1bHQgPSB1c2Jfc3Rvcl9jdHJs X3RyYW5zZmVyKHVzLCB1cy0+c2VuZF9jdHJsX3BpcGUsCiAJCQkJICAgICAgVVNfQ0JJX0FEU0Ms IAogCQkJCSAgICAgIFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwgMCwgCi0J CQkJICAgICAgdXMtPmlmbnVtLCBzcmItPmNtbmQsIHNyYi0+Y21kX2xlbik7CisJCQkJICAgICAg dXMtPmlmbnVtLCB1cy0+aW9idWYsIHNyYi0+Y21kX2xlbik7CiAKIAkvKiBjaGVjayB0aGUgcmV0 dXJuIGNvZGUgZm9yIHRoZSBjb21tYW5kICovCiAJVVNfREVCVUdQKCJDYWxsIHRvIHVzYl9zdG9y X2N0cmxfdHJhbnNmZXIoKSByZXR1cm5lZCAlZFxuIiwgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXdiL2xjLXJjLmMgYi9kcml2ZXJzL3V3Yi9sYy1yYy5jCmluZGV4IDRkNjg4Yzc1MDgw MS4uY2Y5NmI5M2JhZDE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3V3Yi9sYy1yYy5jCisrKyBiL2Ry aXZlcnMvdXdiL2xjLXJjLmMKQEAgLTU2LDggKzU2LDExIEBAIHN0YXRpYyBzdHJ1Y3QgdXdiX3Jj ICp1d2JfcmNfZmluZF9ieV9pbmRleChpbnQgaW5kZXgpCiAJc3RydWN0IHV3Yl9yYyAqcmMgPSBO VUxMOwogCiAJZGV2ID0gY2xhc3NfZmluZF9kZXZpY2UoJnV3Yl9yY19jbGFzcywgTlVMTCwgJmlu ZGV4LCB1d2JfcmNfaW5kZXhfbWF0Y2gpOwotCWlmIChkZXYpCisJaWYgKGRldikgewogCQlyYyA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCQlwdXRfZGV2aWNlKGRldik7CisJfQorCiAJcmV0dXJu IHJjOwogfQogCkBAIC0zNjgsNyArMzcxLDkgQEAgc3RydWN0IHV3Yl9yYyAqX191d2JfcmNfdHJ5 X2dldChzdHJ1Y3QgdXdiX3JjICp0YXJnZXRfcmMpCiAJaWYgKGRldikgewogCQlyYyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwogCQlfX3V3Yl9yY19nZXQocmMpOworCQlwdXRfZGV2aWNlKGRldik7 CiAJfQorCiAJcmV0dXJuIHJjOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoX191d2JfcmNfdHJ5X2dl dCk7CkBAIC00MjEsOCArNDI2LDExIEBAIHN0cnVjdCB1d2JfcmMgKnV3Yl9yY19nZXRfYnlfZ3Jh bmRwYShjb25zdCBzdHJ1Y3QgZGV2aWNlICpncmFuZHBhX2RldikKIAogCWRldiA9IGNsYXNzX2Zp bmRfZGV2aWNlKCZ1d2JfcmNfY2xhc3MsIE5VTEwsICh2b2lkICopZ3JhbmRwYV9kZXYsCiAJCQkJ ZmluZF9yY19ncmFuZHBhKTsKLQlpZiAoZGV2KQorCWlmIChkZXYpIHsKIAkJcmMgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKKwkJcHV0X2RldmljZShkZXYpOworCX0KKwogCXJldHVybiByYzsKIH0K IEVYUE9SVF9TWU1CT0xfR1BMKHV3Yl9yY19nZXRfYnlfZ3JhbmRwYSk7CkBAIC00NTUsOCArNDYz LDEwIEBAIHN0cnVjdCB1d2JfcmMgKnV3Yl9yY19nZXRfYnlfZGV2KGNvbnN0IHN0cnVjdCB1d2Jf ZGV2X2FkZHIgKmFkZHIpCiAKIAlkZXYgPSBjbGFzc19maW5kX2RldmljZSgmdXdiX3JjX2NsYXNz LCBOVUxMLCAodm9pZCAqKWFkZHIsCiAJCQkJZmluZF9yY19kZXYpOwotCWlmIChkZXYpCisJaWYg KGRldikgewogCQlyYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCQlwdXRfZGV2aWNlKGRldik7 CisJfQogCiAJcmV0dXJuIHJjOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9lZmlmYi5j IGIvZHJpdmVycy92aWRlby9lZmlmYi5jCmluZGV4IDc4NDEzOWFlZDA3OS4uMWJiNTkxOGNmYTNi IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2VmaWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9l ZmlmYi5jCkBAIC0yNjgsOSArMjY4LDkgQEAgc3RhdGljIGludCBlZmlmYl9zZXRjb2xyZWcodW5z aWduZWQgcmVnbm8sIHVuc2lnbmVkIHJlZCwgdW5zaWduZWQgZ3JlZW4sCiAJCXJldHVybiAxOwog CiAJaWYgKHJlZ25vIDwgMTYpIHsKLQkJcmVkICAgPj49IDg7Ci0JCWdyZWVuID4+PSA4OwotCQli bHVlICA+Pj0gODsKKwkJcmVkICAgPj49IDE2IC0gaW5mby0+dmFyLnJlZC5sZW5ndGg7CisJCWdy ZWVuID4+PSAxNiAtIGluZm8tPnZhci5ncmVlbi5sZW5ndGg7CisJCWJsdWUgID4+PSAxNiAtIGlu Zm8tPnZhci5ibHVlLmxlbmd0aDsKIAkJKCh1MzIgKikoaW5mby0+cHNldWRvX3BhbGV0dGUpKVty ZWdub10gPQogCQkJKHJlZCAgIDw8IGluZm8tPnZhci5yZWQub2Zmc2V0KSAgIHwKIAkJCShncmVl biA8PCBpbmZvLT52YXIuZ3JlZW4ub2Zmc2V0KSB8CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVv L2ZiY21hcC5jIGIvZHJpdmVycy92aWRlby9mYmNtYXAuYwppbmRleCA1YzM5NjBkYTc1NWEuLjcx NjY2YzAyZGVhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmNtYXAuYworKysgYi9kcml2 ZXJzL3ZpZGVvL2ZiY21hcC5jCkBAIC0xNjMsMTcgKzE2MywxOCBAQCB2b2lkIGZiX2RlYWxsb2Nf Y21hcChzdHJ1Y3QgZmJfY21hcCAqY21hcCkKIAogaW50IGZiX2NvcHlfY21hcChjb25zdCBzdHJ1 Y3QgZmJfY21hcCAqZnJvbSwgc3RydWN0IGZiX2NtYXAgKnRvKQogewotCWludCB0b29mZiA9IDAs IGZyb21vZmYgPSAwOwotCWludCBzaXplOworCXVuc2lnbmVkIGludCB0b29mZiA9IDAsIGZyb21v ZmYgPSAwOworCXNpemVfdCBzaXplOwogCiAJaWYgKHRvLT5zdGFydCA+IGZyb20tPnN0YXJ0KQog CQlmcm9tb2ZmID0gdG8tPnN0YXJ0IC0gZnJvbS0+c3RhcnQ7CiAJZWxzZQogCQl0b29mZiA9IGZy b20tPnN0YXJ0IC0gdG8tPnN0YXJ0OwotCXNpemUgPSB0by0+bGVuIC0gdG9vZmY7Ci0JaWYgKHNp emUgPiAoaW50KSAoZnJvbS0+bGVuIC0gZnJvbW9mZikpCi0JCXNpemUgPSBmcm9tLT5sZW4gLSBm cm9tb2ZmOwotCWlmIChzaXplIDw9IDApCisJaWYgKGZyb21vZmYgPj0gZnJvbS0+bGVuIHx8IHRv b2ZmID49IHRvLT5sZW4pCisJCXJldHVybiAtRUlOVkFMOworCisJc2l6ZSA9IG1pbl90KHNpemVf dCwgdG8tPmxlbiAtIHRvb2ZmLCBmcm9tLT5sZW4gLSBmcm9tb2ZmKTsKKwlpZiAoc2l6ZSA9PSAw KQogCQlyZXR1cm4gLUVJTlZBTDsKIAlzaXplICo9IHNpemVvZih1MTYpOwogCkBAIC0xODcsMTcg KzE4OCwxOCBAQCBpbnQgZmJfY29weV9jbWFwKGNvbnN0IHN0cnVjdCBmYl9jbWFwICpmcm9tLCBz dHJ1Y3QgZmJfY21hcCAqdG8pCiAKIGludCBmYl9jbWFwX3RvX3VzZXIoY29uc3Qgc3RydWN0IGZi X2NtYXAgKmZyb20sIHN0cnVjdCBmYl9jbWFwX3VzZXIgKnRvKQogewotCWludCB0b29mZiA9IDAs IGZyb21vZmYgPSAwOwotCWludCBzaXplOworCXVuc2lnbmVkIGludCB0b29mZiA9IDAsIGZyb21v ZmYgPSAwOworCXNpemVfdCBzaXplOwogCiAJaWYgKHRvLT5zdGFydCA+IGZyb20tPnN0YXJ0KQog CQlmcm9tb2ZmID0gdG8tPnN0YXJ0IC0gZnJvbS0+c3RhcnQ7CiAJZWxzZQogCQl0b29mZiA9IGZy b20tPnN0YXJ0IC0gdG8tPnN0YXJ0OwotCXNpemUgPSB0by0+bGVuIC0gdG9vZmY7Ci0JaWYgKHNp emUgPiAoaW50KSAoZnJvbS0+bGVuIC0gZnJvbW9mZikpCi0JCXNpemUgPSBmcm9tLT5sZW4gLSBm cm9tb2ZmOwotCWlmIChzaXplIDw9IDApCisJaWYgKGZyb21vZmYgPj0gZnJvbS0+bGVuIHx8IHRv b2ZmID49IHRvLT5sZW4pCisJCXJldHVybiAtRUlOVkFMOworCisJc2l6ZSA9IG1pbl90KHNpemVf dCwgdG8tPmxlbiAtIHRvb2ZmLCBmcm9tLT5sZW4gLSBmcm9tb2ZmKTsKKwlpZiAoc2l6ZSA9PSAw KQogCQlyZXR1cm4gLUVJTlZBTDsKIAlzaXplICo9IHNpemVvZih1MTYpOwogCmRpZmYgLS1naXQg YS9mcy9leGVjLmMgYi9mcy9leGVjLmMKaW5kZXggYTAwMDZkODU3ODVjLi4zZjhkOGYzMzFhOTgg MTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYworKysgYi9mcy9leGVjLmMKQEAgLTI1LDYgKzI1LDcgQEAK ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPgogI2luY2x1 ZGUgPGxpbnV4L2ZkdGFibGUuaD4KKyNpbmNsdWRlIDxsaW51eC9mcmVlemVyLmg+CiAjaW5jbHVk ZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CiAjaW5jbHVkZSA8bGludXgv ZmNudGwuaD4KQEAgLTE5NzQsOCArMTk3NSwxMSBAQCBzdGF0aWMgaW50IGNvcmVkdW1wX3dhaXQo aW50IGV4aXRfY29kZSwgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGUpCiAJCWNvbXBsZXRl KHZmb3JrX2RvbmUpOwogCX0KIAotCWlmIChjb3JlX3dhaXRlcnMpCisJaWYgKGNvcmVfd2FpdGVy cyA+IDApIHsKKwkJZnJlZXplcl9kb19ub3RfY291bnQoKTsKIAkJd2FpdF9mb3JfY29tcGxldGlv bigmY29yZV9zdGF0ZS0+c3RhcnR1cCk7CisJCWZyZWV6ZXJfY291bnQoKTsKKwl9CiBmYWlsOgog CXJldHVybiBjb3JlX3dhaXRlcnM7CiB9CmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2Zz L2V4dDQvZXh0NC5oCmluZGV4IDhjODExNWNlMjMyZi4uZWVmMGQxYWIwY2M3IDEwMDY0NAotLS0g YS9mcy9leHQ0L2V4dDQuaAorKysgYi9mcy9leHQ0L2V4dDQuaApAQCAtMjQ0LDYgKzI0NCw3IEBA IHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCB7CiAjZGVmaW5lCUVYVDRfTUFYX0JMT0NLX1NJWkUJCTY1 NTM2CiAjZGVmaW5lIEVYVDRfTUlOX0JMT0NLX0xPR19TSVpFCQkxMAogI2RlZmluZSBFWFQ0X01B WF9CTE9DS19MT0dfU0laRQkJMTYKKyNkZWZpbmUgRVhUNF9NQVhfQ0xVU1RFUl9MT0dfU0laRQkz MAogI2lmZGVmIF9fS0VSTkVMX18KICMgZGVmaW5lIEVYVDRfQkxPQ0tfU0laRShzKQkJKChzKS0+ c19ibG9ja3NpemUpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0 NC9pbm9kZS5jCmluZGV4IGZmMmUzNjlkZTA0MC4uMDkzYTc0MWQ5NjVjIDEwMDY0NAotLS0gYS9m cy9leHQ0L2lub2RlLmMKKysrIGIvZnMvZXh0NC9pbm9kZS5jCkBAIC00MDkzLDE0ICs0MDkzLDE0 IEBAIHN0YXRpYyBpbnQgZXh0NF9kb191cGRhdGVfaW5vZGUoaGFuZGxlX3QgKmhhbmRsZSwKICAq IEZpeCB1cCBpbnRlcm9wZXJhYmlsaXR5IHdpdGggb2xkIGtlcm5lbHMuIE90aGVyd2lzZSwgb2xk IGlub2RlcyBnZXQKICAqIHJlLXVzZWQgd2l0aCB0aGUgdXBwZXIgMTYgYml0cyBvZiB0aGUgdWlk L2dpZCBpbnRhY3QKICAqLwotCQlpZiAoIWVpLT5pX2R0aW1lKSB7CisJCWlmIChlaS0+aV9kdGlt ZSAmJiBsaXN0X2VtcHR5KCZlaS0+aV9vcnBoYW4pKSB7CisJCQlyYXdfaW5vZGUtPmlfdWlkX2hp Z2ggPSAwOworCQkJcmF3X2lub2RlLT5pX2dpZF9oaWdoID0gMDsKKwkJfSBlbHNlIHsKIAkJCXJh d19pbm9kZS0+aV91aWRfaGlnaCA9CiAJCQkJY3B1X3RvX2xlMTYoaGlnaF8xNl9iaXRzKGlub2Rl LT5pX3VpZCkpOwogCQkJcmF3X2lub2RlLT5pX2dpZF9oaWdoID0KIAkJCQljcHVfdG9fbGUxNiho aWdoXzE2X2JpdHMoaW5vZGUtPmlfZ2lkKSk7Ci0JCX0gZWxzZSB7Ci0JCQlyYXdfaW5vZGUtPmlf dWlkX2hpZ2ggPSAwOwotCQkJcmF3X2lub2RlLT5pX2dpZF9oaWdoID0gMDsKIAkJfQogCX0gZWxz ZSB7CiAJCXJhd19pbm9kZS0+aV91aWRfbG93ID0KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbmFtZWku YyBiL2ZzL2V4dDQvbmFtZWkuYwppbmRleCBjZDFkZDQ5ODI5N2UuLmVkZTNhMzNhMmYxYSAxMDA2 NDQKLS0tIGEvZnMvZXh0NC9uYW1laS5jCisrKyBiL2ZzL2V4dDQvbmFtZWkuYwpAQCAtMTQxMywz MiArMTQxMywzMCBAQCBzdGF0aWMgaW50IG1ha2VfaW5kZXhlZF9kaXIoaGFuZGxlX3QgKmhhbmRs ZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCWZyYW1lLT5lbnRyaWVzID0gZW50cmllczsKIAlm cmFtZS0+YXQgPSBlbnRyaWVzOwogCWZyYW1lLT5iaCA9IGJoOwotCWJoID0gYmgyOwogCiAJcmV0 dmFsID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBkaXIsIGZyYW1lLT5iaCk7 CiAJaWYgKHJldHZhbCkKIAkJZ290byBvdXRfZnJhbWVzOwkKLQlyZXR2YWwgPSBleHQ0X2hhbmRs ZV9kaXJ0eV9tZXRhZGF0YShoYW5kbGUsIGRpciwgYmgpOworCXJldHZhbCA9IGV4dDRfaGFuZGxl X2RpcnR5X21ldGFkYXRhKGhhbmRsZSwgZGlyLCBiaDIpOwogCWlmIChyZXR2YWwpCiAJCWdvdG8g b3V0X2ZyYW1lczsJCiAKLQlkZSA9IGRvX3NwbGl0KGhhbmRsZSxkaXIsICZiaCwgZnJhbWUsICZo aW5mbywgJnJldHZhbCk7CisJZGUgPSBkb19zcGxpdChoYW5kbGUsZGlyLCAmYmgyLCBmcmFtZSwg JmhpbmZvLCAmcmV0dmFsKTsKIAlpZiAoIWRlKSB7CiAJCWdvdG8gb3V0X2ZyYW1lczsKIAl9Ci0J ZHhfcmVsZWFzZShmcmFtZXMpOwogCi0JcmV0dmFsID0gYWRkX2RpcmVudF90b19idWYoaGFuZGxl LCBkZW50cnksIGlub2RlLCBkZSwgYmgpOwotCWJyZWxzZShiaCk7Ci0JcmV0dXJuIHJldHZhbDsK KwlyZXR2YWwgPSBhZGRfZGlyZW50X3RvX2J1ZihoYW5kbGUsIGRlbnRyeSwgaW5vZGUsIGRlLCBi aDIpOwogb3V0X2ZyYW1lczoKIAkvKgogCSAqIEV2ZW4gaWYgdGhlIGJsb2NrIHNwbGl0IGZhaWxl ZCwgd2UgaGF2ZSB0byBwcm9wZXJseSB3cml0ZQogCSAqIG91dCBhbGwgdGhlIGNoYW5nZXMgd2Ug ZGlkIHNvIGZhci4gT3RoZXJ3aXNlIHdlIGNhbiBlbmQgdXAKIAkgKiB3aXRoIGNvcnJ1cHRlZCBm aWxlc3lzdGVtLgogCSAqLwotCWV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGRpcik7CisJ aWYgKHJldHZhbCkKKwkJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTsKIAlkeF9y ZWxlYXNlKGZyYW1lcyk7CisJYnJlbHNlKGJoMik7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApkaWZm IC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IDcyNjZhMmU1 YmVmYy4uZTNjY2RkYjZiNDI1IDEwMDY0NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMv ZXh0NC9zdXBlci5jCkBAIC0zNDUxLDcgKzM0NTEsMTUgQEAgc3RhdGljIGludCBleHQ0X2ZpbGxf c3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKIAlp ZiAoYmxvY2tzaXplIDwgRVhUNF9NSU5fQkxPQ0tfU0laRSB8fAogCSAgICBibG9ja3NpemUgPiBF WFQ0X01BWF9CTE9DS19TSVpFKSB7CiAJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwKLQkJICAgICAg ICJVbnN1cHBvcnRlZCBmaWxlc3lzdGVtIGJsb2Nrc2l6ZSAlZCIsIGJsb2Nrc2l6ZSk7CisJCSAg ICAgICAiVW5zdXBwb3J0ZWQgZmlsZXN5c3RlbSBibG9ja3NpemUgJWQgKCVkIGxvZ19ibG9ja19z aXplKSIsCisJCQkgYmxvY2tzaXplLCBsZTMyX3RvX2NwdShlcy0+c19sb2dfYmxvY2tfc2l6ZSkp OworCQlnb3RvIGZhaWxlZF9tb3VudDsKKwl9CisJaWYgKGxlMzJfdG9fY3B1KGVzLT5zX2xvZ19i bG9ja19zaXplKSA+CisJICAgIChFWFQ0X01BWF9CTE9DS19MT0dfU0laRSAtIEVYVDRfTUlOX0JM T0NLX0xPR19TSVpFKSkgeworCQlleHQ0X21zZyhzYiwgS0VSTl9FUlIsCisJCQkgIkludmFsaWQg bG9nIGJsb2NrIHNpemU6ICV1IiwKKwkJCSBsZTMyX3RvX2NwdShlcy0+c19sb2dfYmxvY2tfc2l6 ZSkpOwogCQlnb3RvIGZhaWxlZF9tb3VudDsKIAl9CiAKQEAgLTM1NjgsNiArMzU3NiwxMyBAQCBz dGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpk YXRhLCBpbnQgc2lsZW50KQogCQkJCSAiYmxvY2sgc2l6ZSAoJWQpIiwgY2x1c3RlcnNpemUsIGJs b2Nrc2l6ZSk7CiAJCQlnb3RvIGZhaWxlZF9tb3VudDsKIAkJfQorCQlpZiAobGUzMl90b19jcHUo ZXMtPnNfbG9nX2NsdXN0ZXJfc2l6ZSkgPgorCQkgICAgKEVYVDRfTUFYX0NMVVNURVJfTE9HX1NJ WkUgLSBFWFQ0X01JTl9CTE9DS19MT0dfU0laRSkpIHsKKwkJCWV4dDRfbXNnKHNiLCBLRVJOX0VS UiwKKwkJCQkgIkludmFsaWQgbG9nIGNsdXN0ZXIgc2l6ZTogJXUiLAorCQkJCSBsZTMyX3RvX2Nw dShlcy0+c19sb2dfY2x1c3Rlcl9zaXplKSk7CisJCQlnb3RvIGZhaWxlZF9tb3VudDsKKwkJfQog CQlzYmktPnNfY2x1c3Rlcl9iaXRzID0gbGUzMl90b19jcHUoZXMtPnNfbG9nX2NsdXN0ZXJfc2l6 ZSkgLQogCQkJbGUzMl90b19jcHUoZXMtPnNfbG9nX2Jsb2NrX3NpemUpOwogCQlzYmktPnNfY2x1 c3RlcnNfcGVyX2dyb3VwID0KZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGlyLmMgYi9mcy9mdXNlL2Rp ci5jCmluZGV4IDE1YzFkMjk0OGY0YS4uZDBmNTdiMThjMDFjIDEwMDY0NAotLS0gYS9mcy9mdXNl L2Rpci5jCisrKyBiL2ZzL2Z1c2UvZGlyLmMKQEAgLTEzOTMsMTAgKzEzOTMsNDIgQEAgZXJyb3I6 CiAKIHN0YXRpYyBpbnQgZnVzZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmVudHJ5LCBzdHJ1Y3Qg aWF0dHIgKmF0dHIpCiB7Ci0JaWYgKGF0dHItPmlhX3ZhbGlkICYgQVRUUl9GSUxFKQotCQlyZXR1 cm4gZnVzZV9kb19zZXRhdHRyKGVudHJ5LCBhdHRyLCBhdHRyLT5pYV9maWxlKTsKLQllbHNlCi0J CXJldHVybiBmdXNlX2RvX3NldGF0dHIoZW50cnksIGF0dHIsIE5VTEwpOworCXN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBlbnRyeS0+ZF9pbm9kZTsKKwlzdHJ1Y3QgZmlsZSAqZmlsZSA9IChhdHRyLT5p YV92YWxpZCAmIEFUVFJfRklMRSkgPyBhdHRyLT5pYV9maWxlIDogTlVMTDsKKwlpbnQgcmV0Owor CisJaWYgKGF0dHItPmlhX3ZhbGlkICYgKEFUVFJfS0lMTF9TVUlEIHwgQVRUUl9LSUxMX1NHSUQp KSB7CisJCWF0dHItPmlhX3ZhbGlkICY9IH4oQVRUUl9LSUxMX1NVSUQgfCBBVFRSX0tJTExfU0dJ RCB8CisJCQkJICAgIEFUVFJfTU9ERSk7CisJCS8qCisJCSAqIGlhX21vZGUgY2FsY3VsYXRpb24g bWF5IGhhdmUgdXNlZCBzdGFsZSBpX21vZGUuICBSZWZyZXNoIGFuZAorCQkgKiByZWNhbGN1bGF0 ZS4KKwkJICovCisJCXJldCA9IGZ1c2VfZG9fZ2V0YXR0cihpbm9kZSwgTlVMTCwgZmlsZSk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCWF0dHItPmlhX21vZGUgPSBpbm9kZS0+aV9t b2RlOworCQlpZiAoaW5vZGUtPmlfbW9kZSAmIFNfSVNVSUQpIHsKKwkJCWF0dHItPmlhX3ZhbGlk IHw9IEFUVFJfTU9ERTsKKwkJCWF0dHItPmlhX21vZGUgJj0gflNfSVNVSUQ7CisJCX0KKwkJaWYg KChpbm9kZS0+aV9tb2RlICYgKFNfSVNHSUQgfCBTX0lYR1JQKSkgPT0gKFNfSVNHSUQgfCBTX0lY R1JQKSkgeworCQkJYXR0ci0+aWFfdmFsaWQgfD0gQVRUUl9NT0RFOworCQkJYXR0ci0+aWFfbW9k ZSAmPSB+U19JU0dJRDsKKwkJfQorCX0KKwlpZiAoIWF0dHItPmlhX3ZhbGlkKQorCQlyZXR1cm4g MDsKKworCXJldCA9IGZ1c2VfZG9fc2V0YXR0cihlbnRyeSwgYXR0ciwgZmlsZSk7CisJaWYgKCFy ZXQpIHsKKwkJLyogRGlyZWN0b3J5IG1vZGUgY2hhbmdlZCwgbWF5IG5lZWQgdG8gcmV2YWxpZGF0 ZSBhY2Nlc3MgKi8KKwkJaWYgKFNfSVNESVIoZW50cnktPmRfaW5vZGUtPmlfbW9kZSkgJiYKKwkJ ICAgIChhdHRyLT5pYV92YWxpZCAmIEFUVFJfTU9ERSkpCisJCQlmdXNlX2ludmFsaWRhdGVfZW50 cnlfY2FjaGUoZW50cnkpOworCX0KKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGZ1c2Vf Z2V0YXR0cihzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRlbnRyeSAqZW50cnksCkBAIC0x NTAxLDYgKzE1MzMsMjMgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9nZXR4YXR0cihzdHJ1Y3QgZGVu dHJ5ICplbnRyeSwgY29uc3QgY2hhciAqbmFtZSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMg aW50IGZ1c2VfdmVyaWZ5X3hhdHRyX2xpc3QoY2hhciAqbGlzdCwgc2l6ZV90IHNpemUpCit7CisJ c2l6ZV90IG9yaWdzaXplID0gc2l6ZTsKKworCXdoaWxlIChzaXplKSB7CisJCXNpemVfdCB0aGlz bGVuID0gc3RybmxlbihsaXN0LCBzaXplKTsKKworCQlpZiAoIXRoaXNsZW4gfHwgdGhpc2xlbiA9 PSBzaXplKQorCQkJcmV0dXJuIC1FSU87CisKKwkJc2l6ZSAtPSB0aGlzbGVuICsgMTsKKwkJbGlz dCArPSB0aGlzbGVuICsgMTsKKwl9CisKKwlyZXR1cm4gb3JpZ3NpemU7Cit9CisKIHN0YXRpYyBz c2l6ZV90IGZ1c2VfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmVudHJ5LCBjaGFyICpsaXN0LCBz aXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZW50cnktPmRfaW5vZGU7CkBA IC0xNTM5LDkgKzE1ODgsMTEgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9saXN0eGF0dHIoc3RydWN0 IGRlbnRyeSAqZW50cnksIGNoYXIgKmxpc3QsIHNpemVfdCBzaXplKQogCX0KIAlmdXNlX3JlcXVl c3Rfc2VuZChmYywgcmVxKTsKIAlyZXQgPSByZXEtPm91dC5oLmVycm9yOwotCWlmICghcmV0KQor CWlmICghcmV0KSB7CiAJCXJldCA9IHNpemUgPyByZXEtPm91dC5hcmdzWzBdLnNpemUgOiBvdXRh cmcuc2l6ZTsKLQllbHNlIHsKKwkJaWYgKHJldCA+IDAgJiYgc2l6ZSkKKwkJCXJldCA9IGZ1c2Vf dmVyaWZ5X3hhdHRyX2xpc3QobGlzdCwgcmV0KTsKKwl9IGVsc2UgewogCQlpZiAocmV0ID09IC1F Tk9TWVMpIHsKIAkJCWZjLT5ub19saXN0eGF0dHIgPSAxOwogCQkJcmV0ID0gLUVPUE5PVFNVUFA7 CmRpZmYgLS1naXQgYS9mcy9pb3ByaW8uYyBiL2ZzL2lvcHJpby5jCmluZGV4IDViNTU1MTE5NDVl Zi4uZTFiYTFlNjA3Njg5IDEwMDY0NAotLS0gYS9mcy9pb3ByaW8uYworKysgYi9mcy9pb3ByaW8u YwpAQCAtMTYxLDggKzE2MSwxMCBAQCBzdGF0aWMgaW50IGdldF90YXNrX2lvcHJpbyhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnApCiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAJcmV0ID0gSU9QUklPX1BS SU9fVkFMVUUoSU9QUklPX0NMQVNTX05PTkUsIElPUFJJT19OT1JNKTsKKwl0YXNrX2xvY2socCk7 CiAJaWYgKHAtPmlvX2NvbnRleHQpCiAJCXJldCA9IHAtPmlvX2NvbnRleHQtPmlvcHJpbzsKKwl0 YXNrX3VubG9jayhwKTsKIG91dDoKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZnMvaXNv ZnMvaW5vZGUuYyBiL2ZzL2lzb2ZzL2lub2RlLmMKaW5kZXggMmY5MTk3ZjViYTAyLi5lNTY1NzIw MGVhZGQgMTAwNjQ0Ci0tLSBhL2ZzL2lzb2ZzL2lub2RlLmMKKysrIGIvZnMvaXNvZnMvaW5vZGUu YwpAQCAtNzE3LDYgKzcxNywxMSBAQCBzdGF0aWMgaW50IGlzb2ZzX2ZpbGxfc3VwZXIoc3RydWN0 IHN1cGVyX2Jsb2NrICpzLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQogCXByaV9iaCA9IE5VTEw7 CiAKIHJvb3RfZm91bmQ6CisJLyogV2UgZG9uJ3Qgc3VwcG9ydCByZWFkLXdyaXRlIG1vdW50cyAq LworCWlmICghKHMtPnNfZmxhZ3MgJiBNU19SRE9OTFkpKSB7CisJCWVycm9yID0gLUVBQ0NFUzsK KwkJZ290byBvdXRfZnJlZWJoOworCX0KIAogCWlmIChqb2xpZXRfbGV2ZWwgJiYgKHByaSA9PSBO VUxMIHx8ICFvcHQucm9jaykpIHsKIAkJLyogVGhpcyBpcyB0aGUgY2FzZSBvZiBKb2xpZXQgd2l0 aCB0aGUgbm9yb2NrIG1vdW50IGZsYWcuCkBAIC0xNTI3LDkgKzE1MzIsNiBAQCBzdHJ1Y3QgaW5v ZGUgKl9faXNvZnNfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogc3RhdGljIHN0cnVjdCBk ZW50cnkgKmlzb2ZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAogCWlu dCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCiB7Ci0JLyogV2UgZG9u J3Qgc3VwcG9ydCByZWFkLXdyaXRlIG1vdW50cyAqLwotCWlmICghKGZsYWdzICYgTVNfUkRPTkxZ KSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVBQ0NFUyk7CiAJcmV0dXJuIG1vdW50X2JkZXYoZnNfdHlw ZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBpc29mc19maWxsX3N1cGVyKTsKIH0KIApkaWZmIC0t Z2l0IGEvZnMvbmZzL25mczRzdGF0ZS5jIGIvZnMvbmZzL25mczRzdGF0ZS5jCmluZGV4IGM0Yzgy NDM5ZDYwZS4uYzhiNTFmNDA0ZWRhIDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzNHN0YXRlLmMKKysr IGIvZnMvbmZzL25mczRzdGF0ZS5jCkBAIC0xMjAzLDYgKzEyMDMsOSBAQCByZXN0YXJ0OgogCQkJ CQkJX19mdW5jX18sIHN0YXR1cyk7CiAJCQljYXNlIC1FTk9FTlQ6CiAJCQljYXNlIC1FTk9NRU06 CisJCQljYXNlIC1FQUNDRVM6CisJCQljYXNlIC1FUk9GUzoKKwkJCWNhc2UgLUVJTzoKIAkJCWNh c2UgLUVTVEFMRToKIAkJCQkvKgogCQkJCSAqIE9wZW4gc3RhdGUgb24gdGhpcyBmaWxlIGNhbm5v dCBiZSByZWNvdmVyZWQKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL3N1cGVyLmMgYi9mcy9yZWlz ZXJmcy9zdXBlci5jCmluZGV4IDU2OTQ5OGFlMTY0ZS4uMDhiNTBlZThmYjRhIDEwMDY0NAotLS0g YS9mcy9yZWlzZXJmcy9zdXBlci5jCisrKyBiL2ZzL3JlaXNlcmZzL3N1cGVyLmMKQEAgLTE0MCw3 ICsxNDAsMTUgQEAgc3RhdGljIGludCByZW1vdmVfc2F2ZV9saW5rX29ubHkoc3RydWN0IHN1cGVy X2Jsb2NrICpzLAogc3RhdGljIGludCByZWlzZXJmc19xdW90YV9vbl9tb3VudChzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKiwgaW50KTsKICNlbmRpZgogCi0vKiBsb29rIGZvciB1bmNvbXBsZXRlZCB1bmxp bmtzIGFuZCB0cnVuY2F0ZXMgYW5kIGNvbXBsZXRlIHRoZW0gKi8KKy8qCisgKiBMb29rIGZvciB1 bmNvbXBsZXRlZCB1bmxpbmtzIGFuZCB0cnVuY2F0ZXMgYW5kIGNvbXBsZXRlIHRoZW0KKyAqCisg KiBDYWxsZWQgd2l0aCBzdXBlcmJsb2NrIHdyaXRlIGxvY2tlZC4gIElmIHF1b3RhcyBhcmUgZW5h YmxlZCwgd2UgaGF2ZSB0bworICogcmVsZWFzZS9yZXRha2UgbGVzdCB3ZSBjYWxsIGRxdW90X3F1 b3RhX29uX21vdW50KCksIHByb2NlZWQgdG8KKyAqIHNjaGVkdWxlX29uX2VhY2hfY3B1KCkgaW4g aW52YWxpZGF0ZV9iZGV2KCkgYW5kIGRlYWRsb2NrIHdhaXRpbmcgZm9yIHRoZSBwZXIKKyAqIGNw dSB3b3JrbGV0cyB0byBjb21wbGV0ZSBmbHVzaF9hc3luY19jb21taXRzKCkgdGhhdCBpbiB0dXJu IHdhaXQgZm9yIHRoZQorICogc3VwZXJibG9jayB3cml0ZSBsb2NrLgorICovCiBzdGF0aWMgaW50 IGZpbmlzaF91bmZpbmlzaGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqcykKIHsKIAlJTklUSUFMSVpF X1BBVEgocGF0aCk7CkBAIC0xODcsNyArMTk1LDkgQEAgc3RhdGljIGludCBmaW5pc2hfdW5maW5p c2hlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpCiAJCQkJcXVvdGFfZW5hYmxlZFtpXSA9IDA7CiAJ CQkJY29udGludWU7CiAJCQl9CisJCQlyZWlzZXJmc193cml0ZV91bmxvY2socyk7CiAJCQlyZXQg PSByZWlzZXJmc19xdW90YV9vbl9tb3VudChzLCBpKTsKKwkJCXJlaXNlcmZzX3dyaXRlX2xvY2so cyk7CiAJCQlpZiAocmV0IDwgMCkKIAkJCQlyZWlzZXJmc193YXJuaW5nKHMsICJyZWlzZXJmcy0y NTAwIiwKIAkJCQkJCSAiY2Fubm90IHR1cm4gb24gam91cm5hbGVkICIKZGlmZiAtLWdpdCBhL2Zz L3ViaWZzL2Rpci5jIGIvZnMvdWJpZnMvZGlyLmMKaW5kZXggYWFlYmYwZjIxYWI1Li4zNDhkY2Iy ZDJlOGYgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL2Rpci5jCisrKyBiL2ZzL3ViaWZzL2Rpci5jCkBA IC0zNTYsNyArMzU2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCB2ZnNfZGVudF90eXBlKHVpbnQ4 X3QgdHlwZSkKICAqLwogc3RhdGljIGludCB1Ymlmc19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpkaXJlbnQsIGZpbGxkaXJfdCBmaWxsZGlyKQogewotCWludCBlcnIsIG92ZXIgPSAw OworCWludCBlcnIgPSAwLCBvdmVyID0gMDsKIAlsb2ZmX3QgcG9zID0gZmlsZS0+Zl9wb3M7CiAJ c3RydWN0IHFzdHIgbm07CiAJdW5pb24gdWJpZnNfa2V5IGtleTsKQEAgLTQ3NSwxNiArNDc1LDIy IEBAIHN0YXRpYyBpbnQgdWJpZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZGly ZW50LCBmaWxsZGlyX3QgZmlsbGRpcikKIAl9CiAKIG91dDoKLQlpZiAoZXJyICE9IC1FTk9FTlQp IHsKKwlpZiAoZXJyICE9IC1FTk9FTlQpCiAJCXViaWZzX2VycigiY2Fubm90IGZpbmQgbmV4dCBk aXJlbnRyeSwgZXJyb3IgJWQiLCBlcnIpOwotCQlyZXR1cm4gZXJyOwotCX0KKwllbHNlCisJCS8q CisJCSAqIC1FTk9FTlQgaXMgYSBub24tZmF0YWwgZXJyb3IgaW4gdGhpcyBjb250ZXh0LCB0aGUg VE5DIHVzZXMKKwkJICogaXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY3Vyc29yIG1vdmVkIHBhc3Qg dGhlIGN1cnJlbnQgZGlyZWN0b3J5CisJCSAqIGFuZCByZWFkZGlyKCkgaGFzIHRvIHN0b3AuCisJ CSAqLworCQllcnIgPSAwOworCiAKIAlrZnJlZShmaWxlLT5wcml2YXRlX2RhdGEpOwogCWZpbGUt PnByaXZhdGVfZGF0YSA9IE5VTEw7CiAJLyogMiBpcyBhIHNwZWNpYWwgdmFsdWUgaW5kaWNhdGlu ZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIGRpcmVudHJpZXMgKi8KIAlmaWxlLT5mX3BvcyA9IDI7 Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGxvZmZfdCB1Ymlmc19kaXJf bGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKQpkaWZm IC0tZ2l0IGEvZnMvdWJpZnMveGF0dHIuYyBiL2ZzL3ViaWZzL3hhdHRyLmMKaW5kZXggYmYxOGY3 YTA0NTQ0Li4yOGI3ZWJmNWQwZDkgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL3hhdHRyLmMKKysrIGIv ZnMvdWJpZnMveGF0dHIuYwpAQCAtMTY4LDYgKzE2OCw3IEBAIG91dF9jYW5jZWw6CiAJaG9zdF91 aS0+eGF0dHJfY250IC09IDE7CiAJaG9zdF91aS0+eGF0dHJfc2l6ZSAtPSBDQUxDX0RFTlRfU0la RShubS0+bGVuKTsKIAlob3N0X3VpLT54YXR0cl9zaXplIC09IENBTENfWEFUVFJfQllURVMoc2l6 ZSk7CisJaG9zdF91aS0+eGF0dHJfbmFtZXMgLT0gbm0tPmxlbjsKIAltdXRleF91bmxvY2soJmhv c3RfdWktPnVpX211dGV4KTsKIG91dF9mcmVlOgogCW1ha2VfYmFkX2lub2RlKGlub2RlKTsKQEAg LTUxNiw2ICs1MTcsNyBAQCBvdXRfY2FuY2VsOgogCWhvc3RfdWktPnhhdHRyX2NudCArPSAxOwog CWhvc3RfdWktPnhhdHRyX3NpemUgKz0gQ0FMQ19ERU5UX1NJWkUobm0tPmxlbik7CiAJaG9zdF91 aS0+eGF0dHJfc2l6ZSArPSBDQUxDX1hBVFRSX0JZVEVTKHVpLT5kYXRhX2xlbik7CisJaG9zdF91 aS0+eGF0dHJfbmFtZXMgKz0gbm0tPmxlbjsKIAltdXRleF91bmxvY2soJmhvc3RfdWktPnVpX211 dGV4KTsKIAl1Ymlmc19yZWxlYXNlX2J1ZGdldChjLCAmcmVxKTsKIAltYWtlX2JhZF9pbm9kZShp bm9kZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Nhbi5oIGIvaW5jbHVkZS9saW51eC9j YW4uaAppbmRleCA5YTE5YmNiM2VlYWYuLjg2YTk2YTZlOTc5NSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9jYW4uaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nhbi5oCkBAIC0xMDUsNSArMTA1LDYg QEAgc3RydWN0IGNhbl9maWx0ZXIgewogfTsKIAogI2RlZmluZSBDQU5fSU5WX0ZJTFRFUiAweDIw MDAwMDAwVSAvKiB0byBiZSBzZXQgaW4gY2FuX2ZpbHRlci5jYW5faWQgKi8KKyNkZWZpbmUgQ0FO X1JBV19GSUxURVJfTUFYIDUxMiAvKiBtYXhpbXVtIG51bWJlciBvZiBjYW5fZmlsdGVyIHNldCB2 aWEgc2V0c29ja29wdCgpICovCiAKICNlbmRpZiAvKiBDQU5fSCAqLwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKaW5kZXggOGVlYjIw NWYyOThiLi5mNDgwNWUxNWIyOWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmgK KysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaApAQCAtMTUwLDcgKzE1MCwxMSBAQCBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGludCBza19maWx0ZXJfbGVuKGNvbnN0IHN0cnVjdCBza19maWx0ZXIg KmZwKQogCXJldHVybiBmcC0+bGVuICogc2l6ZW9mKHN0cnVjdCBzb2NrX2ZpbHRlcikgKyBzaXpl b2YoKmZwKTsKIH0KIAotZXh0ZXJuIGludCBza19maWx0ZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiKTsKK2ludCBza19maWx0ZXJfdHJpbV9jYXAoc3RydWN0IHNvY2sgKnNr LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgY2FwKTsKK3N0YXRpYyBpbmxpbmUg aW50IHNrX2ZpbHRlcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCit7CisJ cmV0dXJuIHNrX2ZpbHRlcl90cmltX2NhcChzaywgc2tiLCAxKTsKK30KIGV4dGVybiB1bnNpZ25l ZCBpbnQgc2tfcnVuX2ZpbHRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgY29u c3Qgc3RydWN0IHNvY2tfZmlsdGVyICpmaWx0ZXIpOwogZXh0ZXJuIGludCBza19hdHRhY2hfZmls dGVyKHN0cnVjdCBzb2NrX2Zwcm9nICpmcHJvZywgc3RydWN0IHNvY2sgKnNrKTsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIGIvaW5jbHVkZS9saW51eC9sb2NrZGVwLmgKaW5k ZXggOGI5YmJmMWQ1YjZlLi44YWJhZWRmZmE5MDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgv bG9ja2RlcC5oCisrKyBiL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oCkBAIC0zOTQsNyArMzk0LDcg QEAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHsgfTsKIAogI2RlZmluZSBsb2NrZGVwX2RlcHRoKHRz aykJKDApCiAKLSNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZChsKQkJCWRvIHsgfSB3aGlsZSAo MCkKKyNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZChsKQkJCWRvIHsgKHZvaWQpKGwpOyB9IHdo aWxlICgwKQogI2RlZmluZSBsb2NrZGVwX2Fzc2VydF9oZWxkX29uY2UobCkJCWRvIHsgKHZvaWQp KGwpOyB9IHdoaWxlICgwKQogCiAjZW5kaWYgLyogIUxPQ0tERVAgKi8KZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbmV0L3NvY2suaCBiL2luY2x1ZGUvbmV0L3NvY2suaAppbmRleCAzOGZjZWU5MGJkZTIu LjE0NDRiNTIzMjY0YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc29jay5oCisrKyBiL2luY2x1 ZGUvbmV0L3NvY2suaApAQCAtMTI2OCw4ICsxMjY4LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBz b2NrX3B1dChzdHJ1Y3Qgc29jayAqc2spCiAJCXNrX2ZyZWUoc2spOwogfQogCi1leHRlcm4gaW50 IHNrX3JlY2VpdmVfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJ CSAgY29uc3QgaW50IG5lc3RlZCk7CitpbnQgX19za19yZWNlaXZlX3NrYihzdHJ1Y3Qgc29jayAq c2ssIHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IGludCBuZXN0ZWQsCisJCSAgICAgdW5zaWdu ZWQgaW50IHRyaW1fY2FwKTsKK3N0YXRpYyBpbmxpbmUgaW50IHNrX3JlY2VpdmVfc2tiKHN0cnVj dCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkgY29uc3QgaW50IG5lc3RlZCkK K3sKKwlyZXR1cm4gX19za19yZWNlaXZlX3NrYihzaywgc2tiLCBuZXN0ZWQsIDEpOworfQogCiBz dGF0aWMgaW5saW5lIHZvaWQgc2tfdHhfcXVldWVfc2V0KHN0cnVjdCBzb2NrICpzaywgaW50IHR4 X3F1ZXVlKQogewpAQCAtMTYyOSw2ICsxNjM0LDcgQEAgZXh0ZXJuIHZvaWQgc2tfcmVzZXRfdGlt ZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGltZXJfbGlzdCogdGltZXIsCiAKIGV4dGVybiB2 b2lkIHNrX3N0b3BfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGltZXJfbGlzdCogdGlt ZXIpOwogCitpbnQgX19zb2NrX3F1ZXVlX3Jjdl9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiKTsKIGV4dGVybiBpbnQgc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2Nr ICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIGV4dGVybiBpbnQgc29ja19xdWV1ZV9lcnJf c2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7CmRpZmYgLS1naXQgYS9p bmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oCmluZGV4IDBmNGUxZDQxOWJmYi4u OTVjNDIxMWY0N2E3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAorKysgYi9pbmNsdWRl L25ldC90Y3AuaApAQCAtOTY2LDYgKzk2Niw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHRjcF9wcmVx dWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJcmV0dXJuIDE7CiB9 CiAKK2ludCB0Y3BfZmlsdGVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7 CiAKICN1bmRlZiBTVEFURV9UUkFDRQogCmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL2NvcmUu YyBiL2tlcm5lbC9ldmVudHMvY29yZS5jCmluZGV4IDdjMGI0ZjA3Zjk0Ny4uNTE4ZDhlOTk0ZjJi IDEwMDY0NAotLS0gYS9rZXJuZWwvZXZlbnRzL2NvcmUuYworKysgYi9rZXJuZWwvZXZlbnRzL2Nv cmUuYwpAQCAtNjY1LDYgKzY2NSw3NiBAQCBzdGF0aWMgdm9pZCBwdXRfY3R4KHN0cnVjdCBwZXJm X2V2ZW50X2NvbnRleHQgKmN0eCkKIAl9CiB9CiAKKy8qCisgKiBCZWNhdXNlIG9mIHBlcmZfZXZl bnQ6OmN0eCBtaWdyYXRpb24gaW4gc3lzX3BlcmZfZXZlbnRfb3Blbjo6bW92ZV9ncm91cCB3ZQor ICogbmVlZCBzb21lIG1hZ2ljLgorICoKKyAqIFRob3NlIHBsYWNlcyB0aGF0IGNoYW5nZSBwZXJm X2V2ZW50OjpjdHggd2lsbCBob2xkIGJvdGgKKyAqIHBlcmZfZXZlbnRfY3R4OjptdXRleCBvZiB0 aGUgJ29sZCcgYW5kICduZXcnIGN0eCB2YWx1ZS4KKyAqCisgKiBMb2NrIG9yZGVyaW5nIGlzIGJ5 IG11dGV4IGFkZHJlc3MuIFRoZXJlIGlzIG9uZSBvdGhlciBzaXRlIHdoZXJlCisgKiBwZXJmX2V2 ZW50X2NvbnRleHQ6Om11dGV4IG5lc3RzIGFuZCB0aGF0IGlzIHB1dF9ldmVudCgpLiBCdXQgcmVt ZW1iZXIgdGhhdAorICogdGhhdCBpcyBhIHBhcmVudDwtPmNoaWxkIGNvbnRleHQgcmVsYXRpb24s IGFuZCBtaWdyYXRpb24gZG9lcyBub3QgYWZmZWN0CisgKiBjaGlsZHJlbiwgdGhlcmVmb3JlIHRo ZXNlIHR3byBvcmRlcmluZ3Mgc2hvdWxkIG5vdCBpbnRlcmFjdC4KKyAqCisgKiBUaGUgY2hhbmdl IGluIHBlcmZfZXZlbnQ6OmN0eCBkb2VzIG5vdCBhZmZlY3QgY2hpbGRyZW4gKGFzIGNsYWltZWQg YWJvdmUpCisgKiBiZWNhdXNlIHRoZSBzeXNfcGVyZl9ldmVudF9vcGVuKCkgY2FzZSB3aWxsIGlu c3RhbGwgYSBuZXcgZXZlbnQgYW5kIGJyZWFrCisgKiB0aGUgY3R4IHBhcmVudDwtPmNoaWxkIHJl bGF0aW9uLgorICoKKyAqIFRoZSBwbGFjZXMgdGhhdCBjaGFuZ2UgcGVyZl9ldmVudDo6Y3R4IHdp bGwgaXNzdWU6CisgKgorICogICBwZXJmX3JlbW92ZV9mcm9tX2NvbnRleHQoKTsKKyAqICAgc3lu Y2hyb25pemVfcmN1KCk7CisgKiAgIHBlcmZfaW5zdGFsbF9pbl9jb250ZXh0KCk7CisgKgorICog dG8gYWZmZWN0IHRoZSBjaGFuZ2UuIFRoZSByZW1vdmVfZnJvbV9jb250ZXh0KCkgKyBzeW5jaHJv bml6ZV9yY3UoKSBzaG91bGQKKyAqIHF1aWVzY2UgdGhlIGV2ZW50LCBhZnRlciB3aGljaCB3ZSBj YW4gaW5zdGFsbCBpdCBpbiB0aGUgbmV3IGxvY2F0aW9uLiBUaGlzCisgKiBtZWFucyB0aGF0IG9u bHkgZXh0ZXJuYWwgdmVjdG9ycyAocGVyZl9mb3BzLCBwcmN0bCkgY2FuIHBlcnR1cmIgdGhlIGV2 ZW50CisgKiB3aGlsZSBpbiB0cmFuc2l0LiBUaGVyZWZvcmUgYWxsIHN1Y2ggYWNjZXNzb3JzIHNo b3VsZCBhbHNvIGFjcXVpcmUKKyAqIHBlcmZfZXZlbnRfY29udGV4dDo6bXV0ZXggdG8gc2VyaWFs aXplIGFnYWluc3QgdGhpcy4KKyAqCisgKiBIb3dldmVyOyBiZWNhdXNlIGV2ZW50LT5jdHggY2Fu IGNoYW5nZSB3aGlsZSB3ZSdyZSB3YWl0aW5nIHRvIGFjcXVpcmUKKyAqIGN0eC0+bXV0ZXggd2Ug bXVzdCBiZSBjYXJlZnVsIGFuZCB1c2UgdGhlIGJlbG93IHBlcmZfZXZlbnRfY3R4X2xvY2soKQor ICogZnVuY3Rpb24uCisgKgorICogTG9jayBvcmRlcjoKKyAqCXRhc2tfc3RydWN0OjpwZXJmX2V2 ZW50X211dGV4CisgKgkgIHBlcmZfZXZlbnRfY29udGV4dDo6bXV0ZXgKKyAqCSAgICBwZXJmX2V2 ZW50X2NvbnRleHQ6OmxvY2sKKyAqCSAgICBwZXJmX2V2ZW50OjpjaGlsZF9tdXRleDsKKyAqCSAg ICBwZXJmX2V2ZW50OjptbWFwX211dGV4CisgKgkgICAgbW1hcF9zZW0KKyAqLworc3RhdGljIHN0 cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKnBlcmZfZXZlbnRfY3R4X2xvY2soc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmN0eDsKKworYWdh aW46CisJcmN1X3JlYWRfbG9jaygpOworCWN0eCA9IEFDQ0VTU19PTkNFKGV2ZW50LT5jdHgpOwor CWlmICghYXRvbWljX2luY19ub3RfemVybygmY3R4LT5yZWZjb3VudCkpIHsKKwkJcmN1X3JlYWRf dW5sb2NrKCk7CisJCWdvdG8gYWdhaW47CisJfQorCXJjdV9yZWFkX3VubG9jaygpOworCisJbXV0 ZXhfbG9jaygmY3R4LT5tdXRleCk7CisJaWYgKGV2ZW50LT5jdHggIT0gY3R4KSB7CisJCW11dGV4 X3VubG9jaygmY3R4LT5tdXRleCk7CisJCXB1dF9jdHgoY3R4KTsKKwkJZ290byBhZ2FpbjsKKwl9 CisKKwlyZXR1cm4gY3R4OworfQorCitzdGF0aWMgdm9pZCBwZXJmX2V2ZW50X2N0eF91bmxvY2so c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LAorCQkJCSAgc3RydWN0IHBlcmZfZXZlbnRfY29udGV4 dCAqY3R4KQoreworCW11dGV4X3VubG9jaygmY3R4LT5tdXRleCk7CisJcHV0X2N0eChjdHgpOwor fQorCiBzdGF0aWMgdm9pZCB1bmNsb25lX2N0eChzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpj dHgpCiB7CiAJaWYgKGN0eC0+cGFyZW50X2N0eCkgewpAQCAtMTMyNSw3ICsxMzk1LDcgQEAgc3Rh dGljIGludCBfX3BlcmZfZXZlbnRfZGlzYWJsZSh2b2lkICppbmZvKQogICogaXMgdGhlIGN1cnJl bnQgY29udGV4dCBvbiB0aGlzIENQVSBhbmQgcHJlZW1wdGlvbiBpcyBkaXNhYmxlZCwKICAqIGhl bmNlIHdlIGNhbid0IGdldCBpbnRvIHBlcmZfZXZlbnRfdGFza19zY2hlZF9vdXQgZm9yIHRoaXMg Y29udGV4dC4KICAqLwotdm9pZCBwZXJmX2V2ZW50X2Rpc2FibGUoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50KQorc3RhdGljIHZvaWQgX3BlcmZfZXZlbnRfZGlzYWJsZShzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCiB7CiAJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4ID0gZXZlbnQtPmN0 eDsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBjdHgtPnRhc2s7CkBAIC0xMzY3LDYgKzE0 MzcsMTkgQEAgcmV0cnk6CiAJcmF3X3NwaW5fdW5sb2NrX2lycSgmY3R4LT5sb2NrKTsKIH0KIAor LyoKKyAqIFN0cmljdGx5IHNwZWFraW5nIGtlcm5lbCB1c2VycyBjYW5ub3QgY3JlYXRlIGdyb3Vw cyBhbmQgdGhlcmVmb3JlIHRoaXMKKyAqIGludGVyZmFjZSBkb2VzIG5vdCBuZWVkIHRoZSBwZXJm X2V2ZW50X2N0eF9sb2NrKCkgbWFnaWMuCisgKi8KK3ZvaWQgcGVyZl9ldmVudF9kaXNhYmxlKHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpj dHg7CisKKwljdHggPSBwZXJmX2V2ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwlfcGVyZl9ldmVudF9k aXNhYmxlKGV2ZW50KTsKKwlwZXJmX2V2ZW50X2N0eF91bmxvY2soZXZlbnQsIGN0eCk7Cit9CisK IHN0YXRpYyB2b2lkIHBlcmZfc2V0X3NoYWRvd190aW1lKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwKIAkJCQkgc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4LAogCQkJCSB1NjQgdHN0YW1w KQpAQCAtMTgxMyw3ICsxODk2LDcgQEAgdW5sb2NrOgogICogcGVyZl9ldmVudF9mb3JfZWFjaF9j aGlsZCBvciBwZXJmX2V2ZW50X2Zvcl9lYWNoIGFzIGRlc2NyaWJlZAogICogZm9yIHBlcmZfZXZl bnRfZGlzYWJsZS4KICAqLwotdm9pZCBwZXJmX2V2ZW50X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCitzdGF0aWMgdm9pZCBfcGVyZl9ldmVudF9lbmFibGUoc3RydWN0IHBlcmZfZXZl bnQgKmV2ZW50KQogewogCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmN0eCA9IGV2ZW50LT5j dHg7CiAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrID0gY3R4LT50YXNrOwpAQCAtMTg3MCw3ICsx OTUzLDE5IEBAIG91dDoKIAlyYXdfc3Bpbl91bmxvY2tfaXJxKCZjdHgtPmxvY2spOwogfQogCi1p bnQgcGVyZl9ldmVudF9yZWZyZXNoKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IHJlZnJl c2gpCisvKgorICogU2VlIHBlcmZfZXZlbnRfZGlzYWJsZSgpOworICovCit2b2lkIHBlcmZfZXZl bnRfZW5hYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgcGVyZl9ldmVu dF9jb250ZXh0ICpjdHg7CisKKwljdHggPSBwZXJmX2V2ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwlf cGVyZl9ldmVudF9lbmFibGUoZXZlbnQpOworCXBlcmZfZXZlbnRfY3R4X3VubG9jayhldmVudCwg Y3R4KTsKK30KKworc3RhdGljIGludCBfcGVyZl9ldmVudF9yZWZyZXNoKHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCwgaW50IHJlZnJlc2gpCiB7CiAJLyoKIAkgKiBub3Qgc3VwcG9ydGVkIG9uIGlu aGVyaXRlZCBldmVudHMKQEAgLTE4NzksMTAgKzE5NzQsMjUgQEAgaW50IHBlcmZfZXZlbnRfcmVm cmVzaChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCByZWZyZXNoKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAogCWF0b21pY19hZGQocmVmcmVzaCwgJmV2ZW50LT5ldmVudF9saW1pdCk7Ci0JcGVy Zl9ldmVudF9lbmFibGUoZXZlbnQpOworCV9wZXJmX2V2ZW50X2VuYWJsZShldmVudCk7CiAKIAly ZXR1cm4gMDsKIH0KKworLyoKKyAqIFNlZSBwZXJmX2V2ZW50X2Rpc2FibGUoKQorICovCitpbnQg cGVyZl9ldmVudF9yZWZyZXNoKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IHJlZnJlc2gp Cit7CisJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4OworCWludCByZXQ7CisKKwljdHgg PSBwZXJmX2V2ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwlyZXQgPSBfcGVyZl9ldmVudF9yZWZyZXNo KGV2ZW50LCByZWZyZXNoKTsKKwlwZXJmX2V2ZW50X2N0eF91bmxvY2soZXZlbnQsIGN0eCk7CisK KwlyZXR1cm4gcmV0OworfQogRVhQT1JUX1NZTUJPTF9HUEwocGVyZl9ldmVudF9yZWZyZXNoKTsK IAogc3RhdGljIHZvaWQgY3R4X3NjaGVkX291dChzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpj dHgsCkBAIC0zMTEwLDcgKzMyMjAsMTYgQEAgc3RhdGljIHZvaWQgcHV0X2V2ZW50KHN0cnVjdCBw ZXJmX2V2ZW50ICpldmVudCkKIAlyY3VfcmVhZF91bmxvY2soKTsKIAogCWlmIChvd25lcikgewot CQltdXRleF9sb2NrKCZvd25lci0+cGVyZl9ldmVudF9tdXRleCk7CisJCS8qCisJCSAqIElmIHdl J3JlIGhlcmUgdGhyb3VnaCBwZXJmX2V2ZW50X2V4aXRfdGFzaygpIHdlJ3JlIGFscmVhZHkKKwkJ ICogaG9sZGluZyBjdHgtPm11dGV4IHdoaWNoIHdvdWxkIGJlIGFuIGludmVyc2lvbiB3cnQuIHRo ZQorCQkgKiBub3JtYWwgbG9jayBvcmRlci4KKwkJICoKKwkJICogSG93ZXZlciB3ZSBjYW4gc2Fm ZWx5IHRha2UgdGhpcyBsb2NrIGJlY2F1c2UgaXRzIHRoZSBjaGlsZAorCQkgKiBjdHgtPm11dGV4 LgorCQkgKi8KKwkJbXV0ZXhfbG9ja19uZXN0ZWQoJm93bmVyLT5wZXJmX2V2ZW50X211dGV4LCBT SU5HTEVfREVQVEhfTkVTVElORyk7CisKIAkJLyoKIAkJICogV2UgaGF2ZSB0byByZS1jaGVjayB0 aGUgZXZlbnQtPm93bmVyIGZpZWxkLCBpZiBpdCBpcyBjbGVhcmVkCiAJCSAqIHdlIHJhY2VkIHdp dGggcGVyZl9ldmVudF9leGl0X3Rhc2soKSwgYWNxdWlyaW5nIHRoZSBtdXRleApAQCAtMzE2Miwx MiArMzI4MSwxMyBAQCBzdGF0aWMgaW50IHBlcmZfZXZlbnRfcmVhZF9ncm91cChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQsCiAJCQkJICAgdTY0IHJlYWRfZm9ybWF0LCBjaGFyIF9fdXNlciAqYnVm KQogewogCXN0cnVjdCBwZXJmX2V2ZW50ICpsZWFkZXIgPSBldmVudC0+Z3JvdXBfbGVhZGVyLCAq c3ViOwotCWludCBuID0gMCwgc2l6ZSA9IDAsIHJldCA9IC1FRkFVTFQ7CiAJc3RydWN0IHBlcmZf ZXZlbnRfY29udGV4dCAqY3R4ID0gbGVhZGVyLT5jdHg7Ci0JdTY0IHZhbHVlc1s1XTsKKwlpbnQg biA9IDAsIHNpemUgPSAwLCByZXQ7CiAJdTY0IGNvdW50LCBlbmFibGVkLCBydW5uaW5nOworCXU2 NCB2YWx1ZXNbNV07CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjdHgtPm11dGV4KTsKIAotCW11 dGV4X2xvY2soJmN0eC0+bXV0ZXgpOwogCWNvdW50ID0gcGVyZl9ldmVudF9yZWFkX3ZhbHVlKGxl YWRlciwgJmVuYWJsZWQsICZydW5uaW5nKTsKIAogCXZhbHVlc1tuKytdID0gMSArIGxlYWRlci0+ bnJfc2libGluZ3M7CkBAIC0zMTgyLDcgKzMzMDIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZXZlbnRf cmVhZF9ncm91cChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCiAJc2l6ZSA9IG4gKiBzaXplb2Yo dTY0KTsKIAogCWlmIChjb3B5X3RvX3VzZXIoYnVmLCB2YWx1ZXMsIHNpemUpKQotCQlnb3RvIHVu bG9jazsKKwkJcmV0dXJuIC1FRkFVTFQ7CiAKIAlyZXQgPSBzaXplOwogCkBAIC0zMTk2LDE0ICsz MzE2LDExIEBAIHN0YXRpYyBpbnQgcGVyZl9ldmVudF9yZWFkX2dyb3VwKHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCwKIAkJc2l6ZSA9IG4gKiBzaXplb2YodTY0KTsKIAogCQlpZiAoY29weV90b191 c2VyKGJ1ZiArIHJldCwgdmFsdWVzLCBzaXplKSkgewotCQkJcmV0ID0gLUVGQVVMVDsKLQkJCWdv dG8gdW5sb2NrOworCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCX0KIAogCQlyZXQgKz0gc2l6ZTsKIAl9 Ci11bmxvY2s6Ci0JbXV0ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKIAogCXJldHVybiByZXQ7CiB9 CkBAIC0zMjYyLDggKzMzNzksMTQgQEAgc3RhdGljIHNzaXplX3QKIHBlcmZfcmVhZChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3Mp CiB7CiAJc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0 cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmN0eDsKKwlpbnQgcmV0OworCisJY3R4ID0gcGVyZl9l dmVudF9jdHhfbG9jayhldmVudCk7CisJcmV0ID0gcGVyZl9yZWFkX2h3KGV2ZW50LCBidWYsIGNv dW50KTsKKwlwZXJmX2V2ZW50X2N0eF91bmxvY2soZXZlbnQsIGN0eCk7CiAKLQlyZXR1cm4gcGVy Zl9yZWFkX2h3KGV2ZW50LCBidWYsIGNvdW50KTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMg dW5zaWduZWQgaW50IHBlcmZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2Fp dCkKQEAgLTMyODcsNyArMzQxMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGVyZl9wb2xsKHN0 cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KQogCXJldHVybiBldmVudHM7CiB9CiAK LXN0YXRpYyB2b2lkIHBlcmZfZXZlbnRfcmVzZXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQor c3RhdGljIHZvaWQgX3BlcmZfZXZlbnRfcmVzZXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQog ewogCSh2b2lkKXBlcmZfZXZlbnRfcmVhZChldmVudCk7CiAJbG9jYWw2NF9zZXQoJmV2ZW50LT5j b3VudCwgMCk7CkBAIC0zMzA2LDYgKzM0MjksNyBAQCBzdGF0aWMgdm9pZCBwZXJmX2V2ZW50X2Zv cl9lYWNoX2NoaWxkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwKIAlzdHJ1Y3QgcGVyZl9ldmVu dCAqY2hpbGQ7CiAKIAlXQVJOX09OX09OQ0UoZXZlbnQtPmN0eC0+cGFyZW50X2N0eCk7CisKIAlt dXRleF9sb2NrKCZldmVudC0+Y2hpbGRfbXV0ZXgpOwogCWZ1bmMoZXZlbnQpOwogCWxpc3RfZm9y X2VhY2hfZW50cnkoY2hpbGQsICZldmVudC0+Y2hpbGRfbGlzdCwgY2hpbGRfbGlzdCkKQEAgLTMz MTksMTUgKzM0NDMsMTQgQEAgc3RhdGljIHZvaWQgcGVyZl9ldmVudF9mb3JfZWFjaChzdHJ1Y3Qg cGVyZl9ldmVudCAqZXZlbnQsCiAJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4ID0gZXZl bnQtPmN0eDsKIAlzdHJ1Y3QgcGVyZl9ldmVudCAqc2libGluZzsKIAotCVdBUk5fT05fT05DRShj dHgtPnBhcmVudF9jdHgpOwotCW11dGV4X2xvY2soJmN0eC0+bXV0ZXgpOworCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJmN0eC0+bXV0ZXgpOworCiAJZXZlbnQgPSBldmVudC0+Z3JvdXBfbGVhZGVyOwog CiAJcGVyZl9ldmVudF9mb3JfZWFjaF9jaGlsZChldmVudCwgZnVuYyk7CiAJZnVuYyhldmVudCk7 CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWJsaW5nLCAmZXZlbnQtPnNpYmxpbmdfbGlzdCwgZ3Jv dXBfZW50cnkpCi0JCXBlcmZfZXZlbnRfZm9yX2VhY2hfY2hpbGQoZXZlbnQsIGZ1bmMpOwotCW11 dGV4X3VubG9jaygmY3R4LT5tdXRleCk7CisJCXBlcmZfZXZlbnRfZm9yX2VhY2hfY2hpbGQoc2li bGluZywgZnVuYyk7CiB9CiAKIHN0YXRpYyBpbnQgcGVyZl9ldmVudF9wZXJpb2Qoc3RydWN0IHBl cmZfZXZlbnQgKmV2ZW50LCB1NjQgX191c2VyICphcmcpCkBAIC0zMzg2LDI1ICszNTA5LDI0IEBA IHN0YXRpYyBpbnQgcGVyZl9ldmVudF9zZXRfb3V0cHV0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwKIAkJCQkgc3RydWN0IHBlcmZfZXZlbnQgKm91dHB1dF9ldmVudCk7CiBzdGF0aWMgaW50IHBl cmZfZXZlbnRfc2V0X2ZpbHRlcihzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHZvaWQgX191c2Vy ICphcmcpOwogCi1zdGF0aWMgbG9uZyBwZXJmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKK3N0YXRpYyBsb25nIF9wZXJmX2lvY3Rs KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9u ZyBhcmcpCiB7Ci0Jc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50ID0gZmlsZS0+cHJpdmF0ZV9kYXRh OwogCXZvaWQgKCpmdW5jKShzdHJ1Y3QgcGVyZl9ldmVudCAqKTsKIAl1MzIgZmxhZ3MgPSBhcmc7 CiAKIAlzd2l0Y2ggKGNtZCkgewogCWNhc2UgUEVSRl9FVkVOVF9JT0NfRU5BQkxFOgotCQlmdW5j ID0gcGVyZl9ldmVudF9lbmFibGU7CisJCWZ1bmMgPSBfcGVyZl9ldmVudF9lbmFibGU7CiAJCWJy ZWFrOwogCWNhc2UgUEVSRl9FVkVOVF9JT0NfRElTQUJMRToKLQkJZnVuYyA9IHBlcmZfZXZlbnRf ZGlzYWJsZTsKKwkJZnVuYyA9IF9wZXJmX2V2ZW50X2Rpc2FibGU7CiAJCWJyZWFrOwogCWNhc2Ug UEVSRl9FVkVOVF9JT0NfUkVTRVQ6Ci0JCWZ1bmMgPSBwZXJmX2V2ZW50X3Jlc2V0OworCQlmdW5j ID0gX3BlcmZfZXZlbnRfcmVzZXQ7CiAJCWJyZWFrOwogCiAJY2FzZSBQRVJGX0VWRU5UX0lPQ19S RUZSRVNIOgotCQlyZXR1cm4gcGVyZl9ldmVudF9yZWZyZXNoKGV2ZW50LCBhcmcpOworCQlyZXR1 cm4gX3BlcmZfZXZlbnRfcmVmcmVzaChldmVudCwgYXJnKTsKIAogCWNhc2UgUEVSRl9FVkVOVF9J T0NfUEVSSU9EOgogCQlyZXR1cm4gcGVyZl9ldmVudF9wZXJpb2QoZXZlbnQsICh1NjQgX191c2Vy ICopYXJnKTsKQEAgLTM0NDUsNiArMzU2NywxOSBAQCBzdGF0aWMgbG9uZyBwZXJmX2lvY3RsKHN0 cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAly ZXR1cm4gMDsKIH0KIAorc3RhdGljIGxvbmcgcGVyZl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwg dW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IHBlcmZfZXZl bnQgKmV2ZW50ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRl eHQgKmN0eDsKKwlsb25nIHJldDsKKworCWN0eCA9IHBlcmZfZXZlbnRfY3R4X2xvY2soZXZlbnQp OworCXJldCA9IF9wZXJmX2lvY3RsKGV2ZW50LCBjbWQsIGFyZyk7CisJcGVyZl9ldmVudF9jdHhf dW5sb2NrKGV2ZW50LCBjdHgpOworCisJcmV0dXJuIHJldDsKK30KKwogI2lmZGVmIENPTkZJR19D T01QQVQKIHN0YXRpYyBsb25nIHBlcmZfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1 bnNpZ25lZCBpbnQgY21kLAogCQkJCXVuc2lnbmVkIGxvbmcgYXJnKQpAQCAtMzQ2NiwxMSArMzYw MSwxNSBAQCBzdGF0aWMgbG9uZyBwZXJmX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwg dW5zaWduZWQgaW50IGNtZCwKIAogaW50IHBlcmZfZXZlbnRfdGFza19lbmFibGUodm9pZCkKIHsK KwlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHg7CiAJc3RydWN0IHBlcmZfZXZlbnQgKmV2 ZW50OwogCiAJbXV0ZXhfbG9jaygmY3VycmVudC0+cGVyZl9ldmVudF9tdXRleCk7Ci0JbGlzdF9m b3JfZWFjaF9lbnRyeShldmVudCwgJmN1cnJlbnQtPnBlcmZfZXZlbnRfbGlzdCwgb3duZXJfZW50 cnkpCi0JCXBlcmZfZXZlbnRfZm9yX2VhY2hfY2hpbGQoZXZlbnQsIHBlcmZfZXZlbnRfZW5hYmxl KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAmY3VycmVudC0+cGVyZl9ldmVudF9saXN0 LCBvd25lcl9lbnRyeSkgeworCQljdHggPSBwZXJmX2V2ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwkJ cGVyZl9ldmVudF9mb3JfZWFjaF9jaGlsZChldmVudCwgX3BlcmZfZXZlbnRfZW5hYmxlKTsKKwkJ cGVyZl9ldmVudF9jdHhfdW5sb2NrKGV2ZW50LCBjdHgpOworCX0KIAltdXRleF91bmxvY2soJmN1 cnJlbnQtPnBlcmZfZXZlbnRfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CkBAIC0zNDc4LDExICszNjE3 LDE1IEBAIGludCBwZXJmX2V2ZW50X3Rhc2tfZW5hYmxlKHZvaWQpCiAKIGludCBwZXJmX2V2ZW50 X3Rhc2tfZGlzYWJsZSh2b2lkKQogeworCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmN0eDsK IAlzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQ7CiAKIAltdXRleF9sb2NrKCZjdXJyZW50LT5wZXJm X2V2ZW50X211dGV4KTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAmY3VycmVudC0+cGVy Zl9ldmVudF9saXN0LCBvd25lcl9lbnRyeSkKLQkJcGVyZl9ldmVudF9mb3JfZWFjaF9jaGlsZChl dmVudCwgcGVyZl9ldmVudF9kaXNhYmxlKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAm Y3VycmVudC0+cGVyZl9ldmVudF9saXN0LCBvd25lcl9lbnRyeSkgeworCQljdHggPSBwZXJmX2V2 ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwkJcGVyZl9ldmVudF9mb3JfZWFjaF9jaGlsZChldmVudCwg X3BlcmZfZXZlbnRfZGlzYWJsZSk7CisJCXBlcmZfZXZlbnRfY3R4X3VubG9jayhldmVudCwgY3R4 KTsKKwl9CiAJbXV0ZXhfdW5sb2NrKCZjdXJyZW50LT5wZXJmX2V2ZW50X211dGV4KTsKIAogCXJl dHVybiAwOwpAQCAtNDk1OCw5ICs1MTAxLDYgQEAgc3RydWN0IHN3ZXZlbnRfaHRhYmxlIHsKIAog CS8qIFJlY3Vyc2lvbiBhdm9pZGFuY2UgaW4gZWFjaCBjb250ZXh0cyAqLwogCWludAkJCQlyZWN1 cnNpb25bUEVSRl9OUl9DT05URVhUU107Ci0KLQkvKiBLZWVwcyB0cmFjayBvZiBjcHUgYmVpbmcg aW5pdGlhbGl6ZWQvZXhpdGVkICovCi0JYm9vbAkJCQlvbmxpbmU7CiB9OwogCiBzdGF0aWMgREVG SU5FX1BFUl9DUFUoc3RydWN0IHN3ZXZlbnRfaHRhYmxlLCBzd2V2ZW50X2h0YWJsZSk7CkBAIC01 MjAzLDE0ICs1MzQzLDggQEAgc3RhdGljIGludCBwZXJmX3N3ZXZlbnRfYWRkKHN0cnVjdCBwZXJm X2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQogCWh3Yy0+c3RhdGUgPSAhKGZsYWdzICYgUEVSRl9F Rl9TVEFSVCk7CiAKIAloZWFkID0gZmluZF9zd2V2ZW50X2hlYWQoc3doYXNoLCBldmVudCk7Ci0J aWYgKCFoZWFkKSB7Ci0JCS8qCi0JCSAqIFdlIGNhbiByYWNlIHdpdGggY3B1IGhvdHBsdWcgY29k ZS4gRG8gbm90Ci0JCSAqIFdBUk4gaWYgdGhlIGNwdSBqdXN0IGdvdCB1bnBsdWdnZWQuCi0JCSAq LwotCQlXQVJOX09OX09OQ0Uoc3doYXNoLT5vbmxpbmUpOworCWlmIChXQVJOX09OX09OQ0UoIWhl YWQpKQogCQlyZXR1cm4gLUVJTlZBTDsKLQl9CiAKIAlobGlzdF9hZGRfaGVhZF9yY3UoJmV2ZW50 LT5obGlzdF9lbnRyeSwgaGVhZCk7CiAKQEAgLTUyODIsNyArNTQxNiw2IEBAIHN0YXRpYyBpbnQg c3dldmVudF9obGlzdF9nZXRfY3B1KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGNwdSkK IAlpbnQgZXJyID0gMDsKIAogCW11dGV4X2xvY2soJnN3aGFzaC0+aGxpc3RfbXV0ZXgpOwotCiAJ aWYgKCFzd2V2ZW50X2hsaXN0X2RlcmVmKHN3aGFzaCkgJiYgY3B1X29ubGluZShjcHUpKSB7CiAJ CXN0cnVjdCBzd2V2ZW50X2hsaXN0ICpobGlzdDsKIApAQCAtNjMzMiw2ICs2NDY1LDQ2IEBAIG91 dDoKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9pZCBtdXRleF9sb2NrX2RvdWJsZShzdHJ1 Y3QgbXV0ZXggKmEsIHN0cnVjdCBtdXRleCAqYikKK3sKKwlpZiAoYiA8IGEpCisJCXN3YXAoYSwg Yik7CisKKwltdXRleF9sb2NrKGEpOworCW11dGV4X2xvY2tfbmVzdGVkKGIsIFNJTkdMRV9ERVBU SF9ORVNUSU5HKTsKK30KKworLyoKKyAqIFZhcmlhdGlvbiBvbiBwZXJmX2V2ZW50X2N0eF9sb2Nr X25lc3RlZCgpLCBleGNlcHQgd2UgdGFrZSB0d28gY29udGV4dAorICogbXV0ZXhlcy4KKyAqLwor c3RhdGljIHN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKgorX19wZXJmX2V2ZW50X2N0eF9sb2Nr X2RvdWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZ3JvdXBfbGVhZGVyLAorCQkJICAgICBzdHJ1Y3Qg cGVyZl9ldmVudF9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAq Z2N0eDsKKworYWdhaW46CisJcmN1X3JlYWRfbG9jaygpOworCWdjdHggPSBBQ0NFU1NfT05DRShn cm91cF9sZWFkZXItPmN0eCk7CisJaWYgKCFhdG9taWNfaW5jX25vdF96ZXJvKCZnY3R4LT5yZWZj b3VudCkpIHsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCWdvdG8gYWdhaW47CisJfQorCXJjdV9y ZWFkX3VubG9jaygpOworCisJbXV0ZXhfbG9ja19kb3VibGUoJmdjdHgtPm11dGV4LCAmY3R4LT5t dXRleCk7CisKKwlpZiAoZ3JvdXBfbGVhZGVyLT5jdHggIT0gZ2N0eCkgeworCQltdXRleF91bmxv Y2soJmN0eC0+bXV0ZXgpOworCQltdXRleF91bmxvY2soJmdjdHgtPm11dGV4KTsKKwkJcHV0X2N0 eChnY3R4KTsKKwkJZ290byBhZ2FpbjsKKwl9CisKKwlyZXR1cm4gZ2N0eDsKK30KKwogLyoqCiAg KiBzeXNfcGVyZl9ldmVudF9vcGVuIC0gb3BlbiBhIHBlcmZvcm1hbmNlIGV2ZW50LCBhc3NvY2lh dGUgaXQgdG8gYSB0YXNrL2NwdQogICoKQEAgLTYzNDcsNyArNjUyMCw3IEBAIFNZU0NBTExfREVG SU5FNShwZXJmX2V2ZW50X29wZW4sCiAJc3RydWN0IHBlcmZfZXZlbnQgKmdyb3VwX2xlYWRlciA9 IE5VTEwsICpvdXRwdXRfZXZlbnQgPSBOVUxMOwogCXN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwg KnNpYmxpbmc7CiAJc3RydWN0IHBlcmZfZXZlbnRfYXR0ciBhdHRyOwotCXN0cnVjdCBwZXJmX2V2 ZW50X2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHgsICp1bmlu aXRpYWxpemVkX3ZhcihnY3R4KTsKIAlzdHJ1Y3QgZmlsZSAqZXZlbnRfZmlsZSA9IE5VTEw7CiAJ c3RydWN0IGZpbGUgKmdyb3VwX2ZpbGUgPSBOVUxMOwogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz ayA9IE5VTEw7CkBAIC02NTE5LDkgKzY2OTIsMzEgQEAgU1lTQ0FMTF9ERUZJTkU1KHBlcmZfZXZl bnRfb3BlbiwKIAl9CiAKIAlpZiAobW92ZV9ncm91cCkgewotCQlzdHJ1Y3QgcGVyZl9ldmVudF9j b250ZXh0ICpnY3R4ID0gZ3JvdXBfbGVhZGVyLT5jdHg7CisJCWdjdHggPSBfX3BlcmZfZXZlbnRf Y3R4X2xvY2tfZG91YmxlKGdyb3VwX2xlYWRlciwgY3R4KTsKKworCQkvKgorCQkgKiBDaGVjayBp ZiB3ZSByYWNlZCBhZ2FpbnN0IGFub3RoZXIgc3lzX3BlcmZfZXZlbnRfb3BlbigpIGNhbGwKKwkJ ICogbW92aW5nIHRoZSBzb2Z0d2FyZSBncm91cCB1bmRlcm5lYXRoIHVzLgorCQkgKi8KKwkJaWYg KCEoZ3JvdXBfbGVhZGVyLT5ncm91cF9mbGFncyAmIFBFUkZfR1JPVVBfU09GVFdBUkUpKSB7CisJ CQkvKgorCQkJICogSWYgc29tZW9uZSBtb3ZlZCB0aGUgZ3JvdXAgb3V0IGZyb20gdW5kZXIgdXMs IGNoZWNrCisJCQkgKiBpZiB0aGlzIG5ldyBldmVudCB3b3VuZCB1cCBvbiB0aGUgc2FtZSBjdHgs IGlmIHNvCisJCQkgKiBpdHMgdGhlIHJlZ3VsYXIgIW1vdmVfZ3JvdXAgY2FzZSwgb3RoZXJ3aXNl IGZhaWwuCisJCQkgKi8KKwkJCWlmIChnY3R4ICE9IGN0eCkgeworCQkJCWVyciA9IC1FSU5WQUw7 CisJCQkJZ290byBlcnJfbG9ja2VkOworCQkJfSBlbHNlIHsKKwkJCQlwZXJmX2V2ZW50X2N0eF91 bmxvY2soZ3JvdXBfbGVhZGVyLCBnY3R4KTsKKwkJCQltb3ZlX2dyb3VwID0gMDsKKwkJCX0KKwkJ fQogCi0JCW11dGV4X2xvY2soJmdjdHgtPm11dGV4KTsKKwkJLyoKKwkJICogU2VlIHBlcmZfZXZl bnRfY3R4X2xvY2soKSBmb3IgY29tbWVudHMgb24gdGhlIGRldGFpbHMKKwkJICogb2Ygc3dpenps aW5nIHBlcmZfZXZlbnQ6OmN0eC4KKwkJICovCiAJCXBlcmZfcmVtb3ZlX2Zyb21fY29udGV4dChn cm91cF9sZWFkZXIsIGZhbHNlKTsKIAogCQkvKgpAQCAtNjUzNiwxNCArNjczMSwxOSBAQCBTWVND QUxMX0RFRklORTUocGVyZl9ldmVudF9vcGVuLAogCQkJcGVyZl9ldmVudF9fc3RhdGVfaW5pdChz aWJsaW5nKTsKIAkJCXB1dF9jdHgoZ2N0eCk7CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZnY3R4LT5t dXRleCk7Ci0JCXB1dF9jdHgoZ2N0eCk7CisJfSBlbHNlIHsKKwkJbXV0ZXhfbG9jaygmY3R4LT5t dXRleCk7CiAJfQogCiAJV0FSTl9PTl9PTkNFKGN0eC0+cGFyZW50X2N0eCk7Ci0JbXV0ZXhfbG9j aygmY3R4LT5tdXRleCk7CiAKIAlpZiAobW92ZV9ncm91cCkgeworCQkvKgorCQkgKiBXYWl0IGZv ciBldmVyeWJvZHkgdG8gc3RvcCByZWZlcmVuY2luZyB0aGUgZXZlbnRzIHRocm91Z2gKKwkJICog dGhlIG9sZCBsaXN0cywgYmVmb3JlIGluc3RhbGxpbmcgaXQgb24gbmV3IGxpc3RzLgorCQkgKi8K KwkJc3luY2hyb25pemVfcmN1KCk7CisKIAkJcGVyZl9pbnN0YWxsX2luX2NvbnRleHQoY3R4LCBn cm91cF9sZWFkZXIsIGNwdSk7CiAJCWdldF9jdHgoY3R4KTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRy eShzaWJsaW5nLCAmZ3JvdXBfbGVhZGVyLT5zaWJsaW5nX2xpc3QsCkBAIC02NTU2LDYgKzY3NTYs OSBAQCBTWVNDQUxMX0RFRklORTUocGVyZl9ldmVudF9vcGVuLAogCXBlcmZfaW5zdGFsbF9pbl9j b250ZXh0KGN0eCwgZXZlbnQsIGNwdSk7CiAJKytjdHgtPmdlbmVyYXRpb247CiAJcGVyZl91bnBp bl9jb250ZXh0KGN0eCk7CisKKwlpZiAobW92ZV9ncm91cCkKKwkJcGVyZl9ldmVudF9jdHhfdW5s b2NrKGdyb3VwX2xlYWRlciwgZ2N0eCk7CiAJbXV0ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKIAog CWV2ZW50LT5vd25lciA9IGN1cnJlbnQ7CkBAIC02NTgwLDExICs2NzgzLDIxIEBAIFNZU0NBTExf REVGSU5FNShwZXJmX2V2ZW50X29wZW4sCiAJZmRfaW5zdGFsbChldmVudF9mZCwgZXZlbnRfZmls ZSk7CiAJcmV0dXJuIGV2ZW50X2ZkOwogCitlcnJfbG9ja2VkOgorCWlmIChtb3ZlX2dyb3VwKQor CQlwZXJmX2V2ZW50X2N0eF91bmxvY2soZ3JvdXBfbGVhZGVyLCBnY3R4KTsKKwltdXRleF91bmxv Y2soJmN0eC0+bXV0ZXgpOworCWZwdXQoZXZlbnRfZmlsZSk7CiBlcnJfY29udGV4dDoKIAlwZXJm X3VucGluX2NvbnRleHQoY3R4KTsKIAlwdXRfY3R4KGN0eCk7CiBlcnJfYWxsb2M6Ci0JZnJlZV9l dmVudChldmVudCk7CisJLyoKKwkgKiBJZiBldmVudF9maWxlIGlzIHNldCwgdGhlIGZwdXQoKSBh Ym92ZSB3aWxsIGhhdmUgY2FsbGVkIC0+cmVsZWFzZSgpCisJICogYW5kIHRoYXQgd2lsbCB0YWtl IGNhcmUgb2YgZnJlZWluZyB0aGUgZXZlbnQuCisJICovCisJaWYgKCFldmVudF9maWxlKQorCQlm cmVlX2V2ZW50KGV2ZW50KTsKIGVycl90YXNrOgogCWlmICh0YXNrKQogCQlwdXRfdGFza19zdHJ1 Y3QodGFzayk7CkBAIC03MTQ5LDcgKzczNjIsNiBAQCBzdGF0aWMgdm9pZCBfX2NwdWluaXQgcGVy Zl9ldmVudF9pbml0X2NwdShpbnQgY3B1KQogCXN0cnVjdCBzd2V2ZW50X2h0YWJsZSAqc3doYXNo ID0gJnBlcl9jcHUoc3dldmVudF9odGFibGUsIGNwdSk7CiAKIAltdXRleF9sb2NrKCZzd2hhc2gt PmhsaXN0X211dGV4KTsKLQlzd2hhc2gtPm9ubGluZSA9IHRydWU7CiAJaWYgKHN3aGFzaC0+aGxp c3RfcmVmY291bnQgPiAwKSB7CiAJCXN0cnVjdCBzd2V2ZW50X2hsaXN0ICpobGlzdDsKIApAQCAt NzIwMiwxNCArNzQxNCw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfZXZlbnRfZXhpdF9jcHVfY29udGV4 dChpbnQgY3B1KQogCiBzdGF0aWMgdm9pZCBwZXJmX2V2ZW50X2V4aXRfY3B1KGludCBjcHUpCiB7 Ci0Jc3RydWN0IHN3ZXZlbnRfaHRhYmxlICpzd2hhc2ggPSAmcGVyX2NwdShzd2V2ZW50X2h0YWJs ZSwgY3B1KTsKLQogCXBlcmZfZXZlbnRfZXhpdF9jcHVfY29udGV4dChjcHUpOwotCi0JbXV0ZXhf bG9jaygmc3doYXNoLT5obGlzdF9tdXRleCk7Ci0Jc3doYXNoLT5vbmxpbmUgPSBmYWxzZTsKLQlz d2V2ZW50X2hsaXN0X3JlbGVhc2Uoc3doYXNoKTsKLQltdXRleF91bmxvY2soJnN3aGFzaC0+aGxp c3RfbXV0ZXgpOwogfQogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJmX2V2ZW50X2V4aXRf Y3B1KGludCBjcHUpIHsgfQpkaWZmIC0tZ2l0IGEva2VybmVsL3J0bXV0ZXguYyBiL2tlcm5lbC9y dG11dGV4LmMKaW5kZXggMTkyOGYzZGI3N2IwLi5jMjRiMmM1MDZkNTAgMTAwNjQ0Ci0tLSBhL2tl cm5lbC9ydG11dGV4LmMKKysrIGIva2VybmVsL3J0bXV0ZXguYwpAQCAtNjMsOCArNjMsNzIgQEAg c3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3J0X211dGV4X3dhaXRlcnMoc3RydWN0IHJ0X211dGV4 ICpsb2NrKQogCiBzdGF0aWMgdm9pZCBmaXh1cF9ydF9tdXRleF93YWl0ZXJzKHN0cnVjdCBydF9t dXRleCAqbG9jaykKIHsKLQlpZiAoIXJ0X211dGV4X2hhc193YWl0ZXJzKGxvY2spKQotCQljbGVh cl9ydF9tdXRleF93YWl0ZXJzKGxvY2spOworCXVuc2lnbmVkIGxvbmcgb3duZXIsICpwID0gKHVu c2lnbmVkIGxvbmcgKikgJmxvY2stPm93bmVyOworCisJaWYgKHJ0X211dGV4X2hhc193YWl0ZXJz KGxvY2spKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFRoZSByYnRyZWUgaGFzIG5vIHdhaXRlcnMg ZW5xdWV1ZWQsIG5vdyBtYWtlIHN1cmUgdGhhdCB0aGUKKwkgKiBsb2NrLT5vd25lciBzdGlsbCBo YXMgdGhlIHdhaXRlcnMgYml0IHNldCwgb3RoZXJ3aXNlIHRoZQorCSAqIGZvbGxvd2luZyBjYW4g aGFwcGVuOgorCSAqCisJICogQ1BVIDAJQ1BVIDEJCUNQVTIKKwkgKiBsLT5vd25lcj1UMQorCSAq CQlydF9tdXRleF9sb2NrKGwpCisJICoJCWxvY2sobC0+bG9jaykKKwkgKgkJbC0+b3duZXIgPSBU MSB8IEhBU19XQUlURVJTOworCSAqCQllbnF1ZXVlKFQyKQorCSAqCQlib29zdCgpCisJICoJCSAg dW5sb2NrKGwtPmxvY2spCisJICoJCWJsb2NrKCkKKwkgKgorCSAqCQkJCXJ0X211dGV4X2xvY2so bCkKKwkgKgkJCQlsb2NrKGwtPmxvY2spCisJICoJCQkJbC0+b3duZXIgPSBUMSB8IEhBU19XQUlU RVJTOworCSAqCQkJCWVucXVldWUoVDMpCisJICoJCQkJYm9vc3QoKQorCSAqCQkJCSAgdW5sb2Nr KGwtPmxvY2spCisJICoJCQkJYmxvY2soKQorCSAqCQlzaWduYWwoLT5UMikJc2lnbmFsKC0+VDMp CisJICoJCWxvY2sobC0+bG9jaykKKwkgKgkJZGVxdWV1ZShUMikKKwkgKgkJZGVib29zdCgpCisJ ICoJCSAgdW5sb2NrKGwtPmxvY2spCisJICoJCQkJbG9jayhsLT5sb2NrKQorCSAqCQkJCWRlcXVl dWUoVDMpCisJICoJCQkJID09PiB3YWl0IGxpc3QgaXMgZW1wdHkKKwkgKgkJCQlkZWJvb3N0KCkK KwkgKgkJCQkgdW5sb2NrKGwtPmxvY2spCisJICoJCWxvY2sobC0+bG9jaykKKwkgKgkJZml4dXBf cnRfbXV0ZXhfd2FpdGVycygpCisJICoJCSAgaWYgKHdhaXRfbGlzdF9lbXB0eShsKSB7CisJICoJ CSAgICBsLT5vd25lciA9IG93bmVyCisJICoJCSAgICBvd25lciA9IGwtPm93bmVyICYgfkhBU19X QUlURVJTOworCSAqCQkgICAgICA9PT4gbC0+b3duZXIgPSBUMQorCSAqCQkgIH0KKwkgKgkJCQls b2NrKGwtPmxvY2spCisJICogcnRfbXV0ZXhfdW5sb2NrKGwpCQlmaXh1cF9ydF9tdXRleF93YWl0 ZXJzKCkKKwkgKgkJCQkgIGlmICh3YWl0X2xpc3RfZW1wdHkobCkgeworCSAqCQkJCSAgICBvd25l ciA9IGwtPm93bmVyICYgfkhBU19XQUlURVJTOworCSAqIGNtcHhjaGcobC0+b3duZXIsIFQxLCBO VUxMKQorCSAqICA9PT0+IFN1Y2Nlc3MgKGwtPm93bmVyID0gTlVMTCkKKwkgKgorCSAqCQkJCSAg ICBsLT5vd25lciA9IG93bmVyCisJICoJCQkJICAgICAgPT0+IGwtPm93bmVyID0gVDEKKwkgKgkJ CQkgIH0KKwkgKgorCSAqIFdpdGggdGhlIGNoZWNrIGZvciB0aGUgd2FpdGVyIGJpdCBpbiBwbGFj ZSBUMyBvbiBDUFUyIHdpbGwgbm90CisJICogb3ZlcndyaXRlLiBBbGwgdGFza3MgZmlkZGxpbmcg d2l0aCB0aGUgd2FpdGVycyBiaXQgYXJlCisJICogc2VyaWFsaXplZCBieSBsLT5sb2NrLCBzbyBu b3RoaW5nIGVsc2UgY2FuIG1vZGlmeSB0aGUgd2FpdGVycworCSAqIGJpdC4gSWYgdGhlIGJpdCBp cyBzZXQgdGhlbiBub3RoaW5nIGNhbiBjaGFuZ2UgbC0+b3duZXIgZWl0aGVyCisJICogc28gdGhl IHNpbXBsZSBSTVcgaXMgc2FmZS4gVGhlIGNtcHhjaGcoKSB3aWxsIHNpbXBseSBmYWlsIGlmIGl0 CisJICogaGFwcGVucyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBSTVcgYmVjYXVzZSB0aGUgd2FpdGVy cyBiaXQgaXMKKwkgKiBzdGlsbCBzZXQuCisJICovCisJb3duZXIgPSBBQ0NFU1NfT05DRSgqcCk7 CisJaWYgKG93bmVyICYgUlRfTVVURVhfSEFTX1dBSVRFUlMpCisJCUFDQ0VTU19PTkNFKCpwKSA9 IG93bmVyICYgflJUX01VVEVYX0hBU19XQUlURVJTOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbGli L2dlbmFsbG9jLmMgYi9saWIvZ2VuYWxsb2MuYwppbmRleCA3MTZmOTQ3NDdjODEuLjI2NmUwZTY3 ZDBhYSAxMDA2NDQKLS0tIGEvbGliL2dlbmFsbG9jLmMKKysrIGIvbGliL2dlbmFsbG9jLmMKQEAg LTI2Myw3ICsyNjMsNyBAQCB1bnNpZ25lZCBsb25nIGdlbl9wb29sX2FsbG9jKHN0cnVjdCBnZW5f cG9vbCAqcG9vbCwgc2l6ZV90IHNpemUpCiAJc3RydWN0IGdlbl9wb29sX2NodW5rICpjaHVuazsK IAl1bnNpZ25lZCBsb25nIGFkZHIgPSAwOwogCWludCBvcmRlciA9IHBvb2wtPm1pbl9hbGxvY19v cmRlcjsKLQlpbnQgbmJpdHMsIHN0YXJ0X2JpdCA9IDAsIGVuZF9iaXQsIHJlbWFpbjsKKwlpbnQg bmJpdHMsIHN0YXJ0X2JpdCwgZW5kX2JpdCwgcmVtYWluOwogCiAjaWZuZGVmIENPTkZJR19BUkNI X0hBVkVfTk1JX1NBRkVfQ01QWENIRwogCUJVR19PTihpbl9ubWkoKSk7CkBAIC0yNzgsNiArMjc4 LDcgQEAgdW5zaWduZWQgbG9uZyBnZW5fcG9vbF9hbGxvYyhzdHJ1Y3QgZ2VuX3Bvb2wgKnBvb2ws IHNpemVfdCBzaXplKQogCQlpZiAoc2l6ZSA+IGF0b21pY19yZWFkKCZjaHVuay0+YXZhaWwpKQog CQkJY29udGludWU7CiAKKwkJc3RhcnRfYml0ID0gMDsKIAkJZW5kX2JpdCA9IChjaHVuay0+ZW5k X2FkZHIgLSBjaHVuay0+c3RhcnRfYWRkcikgPj4gb3JkZXI7CiByZXRyeToKIAkJc3RhcnRfYml0 ID0gYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWEoY2h1bmstPmJpdHMsIGVuZF9iaXQsCmRpZmYg LS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuYwppbmRleCBkYmQyYjY3YmI1MGQu Ljk2MGIwZGFiNTE4MiAxMDA2NDQKLS0tIGEvbW0vc3dhcGZpbGUuYworKysgYi9tbS9zd2FwZmls ZS5jCkBAIC0xOTEzLDYgKzE5MTMsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyByZWFkX3N3YXBf aGVhZGVyKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpwLAogCQlzd2FiMzJzKCZzd2FwX2hlYWRl ci0+aW5mby52ZXJzaW9uKTsKIAkJc3dhYjMycygmc3dhcF9oZWFkZXItPmluZm8ubGFzdF9wYWdl KTsKIAkJc3dhYjMycygmc3dhcF9oZWFkZXItPmluZm8ubnJfYmFkcGFnZXMpOworCQlpZiAoc3dh cF9oZWFkZXItPmluZm8ubnJfYmFkcGFnZXMgPiBNQVhfU1dBUF9CQURQQUdFUykKKwkJCXJldHVy biAwOwogCQlmb3IgKGkgPSAwOyBpIDwgc3dhcF9oZWFkZXItPmluZm8ubnJfYmFkcGFnZXM7IGkr KykKIAkJCXN3YWIzMnMoJnN3YXBfaGVhZGVyLT5pbmZvLmJhZHBhZ2VzW2ldKTsKIAl9CmRpZmYg LS1naXQgYS9uZXQvYmF0bWFuLWFkdi9oYXJkLWludGVyZmFjZS5jIGIvbmV0L2JhdG1hbi1hZHYv aGFyZC1pbnRlcmZhY2UuYwppbmRleCA3NzA0ZGY0NjhlMGIuLjE0ODc2ZDg0ZTI4ZCAxMDA2NDQK LS0tIGEvbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuYworKysgYi9uZXQvYmF0bWFuLWFk di9oYXJkLWludGVyZmFjZS5jCkBAIC00MTIsNyArNDEyLDYgQEAgdm9pZCBoYXJkaWZfZGlzYWJs ZV9pbnRlcmZhY2Uoc3RydWN0IGhhcmRfaWZhY2UgKmhhcmRfaWZhY2UpCiAJaWYgKCFiYXRfcHJp di0+bnVtX2lmYWNlcykKIAkJc29mdGlmX2Rlc3Ryb3koaGFyZF9pZmFjZS0+c29mdF9pZmFjZSk7 CiAKLQloYXJkX2lmYWNlLT5zb2Z0X2lmYWNlID0gTlVMTDsKIAloYXJkaWZfZnJlZV9yZWYoaGFy ZF9pZmFjZSk7CiAKIG91dDoKZGlmZiAtLWdpdCBhL25ldC9jYW4vYmNtLmMgYi9uZXQvY2FuL2Jj bS5jCmluZGV4IDM5MTBjMWZlZmQwNC4uYzI5Nzk3NDMxMWIzIDEwMDY0NAotLS0gYS9uZXQvY2Fu L2JjbS5jCisrKyBiL25ldC9jYW4vYmNtLmMKQEAgLTE0OTQsMjQgKzE0OTQsMzEgQEAgc3RhdGlj IGludCBiY21fY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVh ZGRyLCBpbnQgbGVuLAogCXN0cnVjdCBzb2NrYWRkcl9jYW4gKmFkZHIgPSAoc3RydWN0IHNvY2th ZGRyX2NhbiAqKXVhZGRyOwogCXN0cnVjdCBzb2NrICpzayA9IHNvY2stPnNrOwogCXN0cnVjdCBi Y21fc29jayAqYm8gPSBiY21fc2soc2spOworCWludCByZXQgPSAwOwogCiAJaWYgKGxlbiA8IHNp emVvZigqYWRkcikpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKGJvLT5ib3VuZCkKLQkJcmV0 dXJuIC1FSVNDT05OOworCWxvY2tfc29jayhzayk7CisKKwlpZiAoYm8tPmJvdW5kKSB7CisJCXJl dCA9IC1FSVNDT05OOworCQlnb3RvIGZhaWw7CisJfQogCiAJLyogYmluZCBhIGRldmljZSB0byB0 aGlzIHNvY2tldCAqLwogCWlmIChhZGRyLT5jYW5faWZpbmRleCkgewogCQlzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2OwogCiAJCWRldiA9IGRldl9nZXRfYnlfaW5kZXgoJmluaXRfbmV0LCBhZGRyLT5j YW5faWZpbmRleCk7Ci0JCWlmICghZGV2KQotCQkJcmV0dXJuIC1FTk9ERVY7Ci0KKwkJaWYgKCFk ZXYpIHsKKwkJCXJldCA9IC1FTk9ERVY7CisJCQlnb3RvIGZhaWw7CisJCX0KIAkJaWYgKGRldi0+ dHlwZSAhPSBBUlBIUkRfQ0FOKSB7CiAJCQlkZXZfcHV0KGRldik7Ci0JCQlyZXR1cm4gLUVOT0RF VjsKKwkJCXJldCA9IC1FTk9ERVY7CisJCQlnb3RvIGZhaWw7CiAJCX0KIAogCQliby0+aWZpbmRl eCA9IGRldi0+aWZpbmRleDsKQEAgLTE1MjIsMTcgKzE1MjksMjQgQEAgc3RhdGljIGludCBiY21f Y29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLCBpbnQg bGVuLAogCQliby0+aWZpbmRleCA9IDA7CiAJfQogCi0JYm8tPmJvdW5kID0gMTsKLQogCWlmIChw cm9jX2RpcikgewogCQkvKiB1bmlxdWUgc29ja2V0IGFkZHJlc3MgYXMgZmlsZW5hbWUgKi8KIAkJ c3ByaW50Zihiby0+cHJvY25hbWUsICIlbHUiLCBzb2NrX2lfaW5vKHNrKSk7CiAJCWJvLT5iY21f cHJvY19yZWFkID0gcHJvY19jcmVhdGVfZGF0YShiby0+cHJvY25hbWUsIDA2NDQsCiAJCQkJCQkg ICAgIHByb2NfZGlyLAogCQkJCQkJICAgICAmYmNtX3Byb2NfZm9wcywgc2spOworCQlpZiAoIWJv LT5iY21fcHJvY19yZWFkKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBmYWlsOworCQl9 CiAJfQogCi0JcmV0dXJuIDA7CisJYm8tPmJvdW5kID0gMTsKKworZmFpbDoKKwlyZWxlYXNlX3Nv Y2soc2spOworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBiY21fcmVjdm1zZyhzdHJ1 Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBzb2NrZXQgKnNvY2ssCmRpZmYgLS1naXQgYS9uZXQvY2Fu L3Jhdy5jIGIvbmV0L2Nhbi9yYXcuYwppbmRleCA0NmNjYTNhOTFkMTkuLjczMjAxOTdiOGVhNyAx MDA2NDQKLS0tIGEvbmV0L2Nhbi9yYXcuYworKysgYi9uZXQvY2FuL3Jhdy5jCkBAIC00NTksNiAr NDU5LDkgQEAgc3RhdGljIGludCByYXdfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBp bnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCQlpZiAob3B0bGVuICUgc2l6ZW9mKHN0cnVjdCBjYW5f ZmlsdGVyKSAhPSAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKKwkJaWYgKG9wdGxlbiA+IENBTl9S QVdfRklMVEVSX01BWCAqIHNpemVvZihzdHJ1Y3QgY2FuX2ZpbHRlcikpCisJCQlyZXR1cm4gLUVJ TlZBTDsKKwogCQljb3VudCA9IG9wdGxlbiAvIHNpemVvZihzdHJ1Y3QgY2FuX2ZpbHRlcik7CiAK IAkJaWYgKGNvdW50ID4gMSkgewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQv Y29yZS9maWx0ZXIuYwppbmRleCA5Yzg4MDgwZTQwNDkuLjYyNjY3NzIyYjU3NCAxMDA2NDQKLS0t IGEvbmV0L2NvcmUvZmlsdGVyLmMKKysrIGIvbmV0L2NvcmUvZmlsdGVyLmMKQEAgLTY0LDkgKzY0 LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqbG9hZF9wb2ludGVyKGNvbnN0IHN0cnVjdCBza19i dWZmICpza2IsIGludCBrLAogfQogCiAvKioKLSAqCXNrX2ZpbHRlciAtIHJ1biBhIHBhY2tldCB0 aHJvdWdoIGEgc29ja2V0IGZpbHRlcgorICoJc2tfZmlsdGVyX3RyaW1fY2FwIC0gcnVuIGEgcGFj a2V0IHRocm91Z2ggYSBzb2NrZXQgZmlsdGVyCiAgKglAc2s6IHNvY2sgYXNzb2NpYXRlZCB3aXRo ICZza19idWZmCiAgKglAc2tiOiBidWZmZXIgdG8gZmlsdGVyCisgKglAY2FwOiBsaW1pdCBvbiBo b3cgc2hvcnQgdGhlIGVCUEYgcHJvZ3JhbSBtYXkgdHJpbSB0aGUgcGFja2V0CiAgKgogICogUnVu IHRoZSBmaWx0ZXIgY29kZSBhbmQgdGhlbiBjdXQgc2tiLT5kYXRhIHRvIGNvcnJlY3Qgc2l6ZSBy ZXR1cm5lZCBieQogICogc2tfcnVuX2ZpbHRlci4gSWYgcGt0X2xlbiBpcyAwIHdlIHRvc3MgcGFj a2V0LiBJZiBza2ItPmxlbiBpcyBzbWFsbGVyCkBAIC03NSw3ICs3Niw3IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCAqbG9hZF9wb2ludGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBrLAog ICogYmUgYWNjZXB0ZWQgb3IgLUVQRVJNIGlmIHRoZSBwYWNrZXQgc2hvdWxkIGJlIHRvc3NlZC4K ICAqCiAgKi8KLWludCBza19maWx0ZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQoraW50IHNrX2ZpbHRlcl90cmltX2NhcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19i dWZmICpza2IsIHVuc2lnbmVkIGludCBjYXApCiB7CiAJaW50IGVycjsKIAlzdHJ1Y3Qgc2tfZmls dGVyICpmaWx0ZXI7CkBAIC04OCwxNCArODksMTMgQEAgaW50IHNrX2ZpbHRlcihzdHJ1Y3Qgc29j ayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJZmlsdGVyID0gcmN1X2RlcmVmZXJlbmNlKHNr LT5za19maWx0ZXIpOwogCWlmIChmaWx0ZXIpIHsKIAkJdW5zaWduZWQgaW50IHBrdF9sZW4gPSBT S19SVU5fRklMVEVSKGZpbHRlciwgc2tiKTsKLQotCQllcnIgPSBwa3RfbGVuID8gcHNrYl90cmlt KHNrYiwgcGt0X2xlbikgOiAtRVBFUk07CisJCWVyciA9IHBrdF9sZW4gPyBwc2tiX3RyaW0oc2ti LCBtYXgoY2FwLCBwa3RfbGVuKSkgOiAtRVBFUk07CiAJfQogCXJjdV9yZWFkX3VubG9jaygpOwog CiAJcmV0dXJuIGVycjsKIH0KLUVYUE9SVF9TWU1CT0woc2tfZmlsdGVyKTsKK0VYUE9SVF9TWU1C T0woc2tfZmlsdGVyX3RyaW1fY2FwKTsKIAogLyoqCiAgKglza19ydW5fZmlsdGVyIC0gcnVuIGEg ZmlsdGVyIG9uIGEgc29ja2V0CmRpZmYgLS1naXQgYS9uZXQvY29yZS9ydG5ldGxpbmsuYyBiL25l dC9jb3JlL3J0bmV0bGluay5jCmluZGV4IDcyYTdlZDgyNjU5Yi4uNjg0YjU3MzgwYjJiIDEwMDY0 NAotLS0gYS9uZXQvY29yZS9ydG5ldGxpbmsuYworKysgYi9uZXQvY29yZS9ydG5ldGxpbmsuYwpA QCAtMjQ5LDYgKzI0OSw3IEBAIGludCBydG5sX3VucmVnaXN0ZXIoaW50IHByb3RvY29sLCBpbnQg bXNndHlwZSkKIAogCXJ0bmxfbXNnX2hhbmRsZXJzW3Byb3RvY29sXVttc2dpbmRleF0uZG9pdCA9 IE5VTEw7CiAJcnRubF9tc2dfaGFuZGxlcnNbcHJvdG9jb2xdW21zZ2luZGV4XS5kdW1waXQgPSBO VUxMOworCXJ0bmxfbXNnX2hhbmRsZXJzW3Byb3RvY29sXVttc2dpbmRleF0uY2FsY2l0ID0gTlVM TDsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc29jay5jIGIvbmV0L2Nv cmUvc29jay5jCmluZGV4IGUwOTM1MjgyOTQ1Zi4uMDdjMDc4ZTNmNTcwIDEwMDY0NAotLS0gYS9u ZXQvY29yZS9zb2NrLmMKKysrIGIvbmV0L2NvcmUvc29jay5jCkBAIC0yODEsOSArMjgxLDggQEAg c3RhdGljIHZvaWQgc29ja19kaXNhYmxlX3RpbWVzdGFtcChzdHJ1Y3Qgc29jayAqc2ssIGludCBm bGFnKQogfQogCiAKLWludCBzb2NrX3F1ZXVlX3Jjdl9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiKQoraW50IF9fc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpz aywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKLQlpbnQgZXJyOwogCWludCBza2JfbGVuOwogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCA9ICZzay0+c2tf cmVjZWl2ZV9xdWV1ZTsKQEAgLTI5NCwxMCArMjkzLDYgQEAgaW50IHNvY2tfcXVldWVfcmN2X3Nr YihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJCXJldHVybiAtRU5PTUVN OwogCX0KIAotCWVyciA9IHNrX2ZpbHRlcihzaywgc2tiKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4g ZXJyOwotCiAJaWYgKCFza19ybWVtX3NjaGVkdWxlKHNrLCBza2ItPnRydWVzaXplKSkgewogCQlh dG9taWNfaW5jKCZzay0+c2tfZHJvcHMpOwogCQlyZXR1cm4gLUVOT0JVRlM7CkBAIC0zMjcsMTMg KzMyMiwyNiBAQCBpbnQgc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0 IHNrX2J1ZmYgKnNrYikKIAkJc2stPnNrX2RhdGFfcmVhZHkoc2ssIHNrYl9sZW4pOwogCXJldHVy biAwOwogfQorRVhQT1JUX1NZTUJPTChfX3NvY2tfcXVldWVfcmN2X3NrYik7CisKK2ludCBzb2Nr X3F1ZXVlX3Jjdl9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQorewor CWludCBlcnI7CisKKwllcnIgPSBza19maWx0ZXIoc2ssIHNrYik7CisJaWYgKGVycikKKwkJcmV0 dXJuIGVycjsKKworCXJldHVybiBfX3NvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKTsKK30KIEVY UE9SVF9TWU1CT0woc29ja19xdWV1ZV9yY3Zfc2tiKTsKIAotaW50IHNrX3JlY2VpdmVfc2tiKHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG5lc3RlZCkKK2lu dCBfX3NrX3JlY2VpdmVfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwK KwkJICAgICBjb25zdCBpbnQgbmVzdGVkLCB1bnNpZ25lZCBpbnQgdHJpbV9jYXApCiB7CiAJaW50 IHJjID0gTkVUX1JYX1NVQ0NFU1M7CiAKLQlpZiAoc2tfZmlsdGVyKHNrLCBza2IpKQorCWlmIChz a19maWx0ZXJfdHJpbV9jYXAoc2ssIHNrYiwgdHJpbV9jYXApKQogCQlnb3RvIGRpc2NhcmRfYW5k X3JlbHNlOwogCiAJc2tiLT5kZXYgPSBOVUxMOwpAQCAtMzY5LDcgKzM3Nyw3IEBAIGRpc2NhcmRf YW5kX3JlbHNlOgogCWtmcmVlX3NrYihza2IpOwogCWdvdG8gb3V0OwogfQotRVhQT1JUX1NZTUJP TChza19yZWNlaXZlX3NrYik7CitFWFBPUlRfU1lNQk9MKF9fc2tfcmVjZWl2ZV9za2IpOwogCiB2 b2lkIHNrX3Jlc2V0X3R4cShzdHJ1Y3Qgc29jayAqc2spCiB7CkBAIC01MjYsMjMgKzUzNCwxNSBA QCBpbnQgc29ja19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50 IG9wdG5hbWUsCiAJCWJyZWFrOwogCWNhc2UgU09fU05EQlVGOgogCQkvKiBEb24ndCBlcnJvciBv biB0aGlzIEJTRCBkb2Vzbid0IGFuZCBpZiB5b3UgdGhpbmsKLQkJICAgYWJvdXQgaXQgdGhpcyBp cyByaWdodC4gT3RoZXJ3aXNlIGFwcHMgaGF2ZSB0bwotCQkgICBwbGF5ICdndWVzcyB0aGUgYmln Z2VzdCBzaXplJyBnYW1lcy4gUkNWQlVGL1NOREJVRgotCQkgICBhcmUgdHJlYXRlZCBpbiBCU0Qg YXMgaGludHMgKi8KLQotCQlpZiAodmFsID4gc3lzY3RsX3dtZW1fbWF4KQotCQkJdmFsID0gc3lz Y3RsX3dtZW1fbWF4OworCQkgKiBhYm91dCBpdCB0aGlzIGlzIHJpZ2h0LiBPdGhlcndpc2UgYXBw cyBoYXZlIHRvCisJCSAqIHBsYXkgJ2d1ZXNzIHRoZSBiaWdnZXN0IHNpemUnIGdhbWVzLiBSQ1ZC VUYvU05EQlVGCisJCSAqIGFyZSB0cmVhdGVkIGluIEJTRCBhcyBoaW50cworCQkgKi8KKwkJdmFs ID0gbWluX3QodTMyLCB2YWwsIHN5c2N0bF93bWVtX21heCk7CiBzZXRfc25kYnVmOgogCQlzay0+ c2tfdXNlcmxvY2tzIHw9IFNPQ0tfU05EQlVGX0xPQ0s7Ci0JCWlmICgodmFsICogMikgPCBTT0NL X01JTl9TTkRCVUYpCi0JCQlzay0+c2tfc25kYnVmID0gU09DS19NSU5fU05EQlVGOwotCQllbHNl Ci0JCQlzay0+c2tfc25kYnVmID0gdmFsICogMjsKLQotCQkvKgotCQkgKglXYWtlIHVwIHNlbmRp bmcgdGFza3MgaWYgd2UKLQkJICoJdXBwZWQgdGhlIHZhbHVlLgotCQkgKi8KKwkJc2stPnNrX3Nu ZGJ1ZiA9IG1heF90KGludCwgdmFsICogMiwgU09DS19NSU5fU05EQlVGKTsKKwkJLyogV2FrZSB1 cCBzZW5kaW5nIHRhc2tzIGlmIHdlIHVwcGVkIHRoZSB2YWx1ZS4gKi8KIAkJc2stPnNrX3dyaXRl X3NwYWNlKHNrKTsKIAkJYnJlYWs7CiAKQEAgLTU1NSwxMiArNTU1LDExIEBAIHNldF9zbmRidWY6 CiAKIAljYXNlIFNPX1JDVkJVRjoKIAkJLyogRG9uJ3QgZXJyb3Igb24gdGhpcyBCU0QgZG9lc24n dCBhbmQgaWYgeW91IHRoaW5rCi0JCSAgIGFib3V0IGl0IHRoaXMgaXMgcmlnaHQuIE90aGVyd2lz ZSBhcHBzIGhhdmUgdG8KLQkJICAgcGxheSAnZ3Vlc3MgdGhlIGJpZ2dlc3Qgc2l6ZScgZ2FtZXMu IFJDVkJVRi9TTkRCVUYKLQkJICAgYXJlIHRyZWF0ZWQgaW4gQlNEIGFzIGhpbnRzICovCi0KLQkJ aWYgKHZhbCA+IHN5c2N0bF9ybWVtX21heCkKLQkJCXZhbCA9IHN5c2N0bF9ybWVtX21heDsKKwkJ ICogYWJvdXQgaXQgdGhpcyBpcyByaWdodC4gT3RoZXJ3aXNlIGFwcHMgaGF2ZSB0bworCQkgKiBw bGF5ICdndWVzcyB0aGUgYmlnZ2VzdCBzaXplJyBnYW1lcy4gUkNWQlVGL1NOREJVRgorCQkgKiBh cmUgdHJlYXRlZCBpbiBCU0QgYXMgaGludHMKKwkJICovCisJCXZhbCA9IG1pbl90KHUzMiwgdmFs LCBzeXNjdGxfcm1lbV9tYXgpOwogc2V0X3JjdmJ1ZjoKIAkJc2stPnNrX3VzZXJsb2NrcyB8PSBT T0NLX1JDVkJVRl9MT0NLOwogCQkvKgpAQCAtNTc4LDEwICs1NzcsNyBAQCBzZXRfcmN2YnVmOgog CQkgKiByZXR1cm5pbmcgdGhlIHZhbHVlIHdlIGFjdHVhbGx5IHVzZWQgaW4gZ2V0c29ja29wdAog CQkgKiBpcyB0aGUgbW9zdCBkZXNpcmFibGUgYmVoYXZpb3IuCiAJCSAqLwotCQlpZiAoKHZhbCAq IDIpIDwgU09DS19NSU5fUkNWQlVGKQotCQkJc2stPnNrX3JjdmJ1ZiA9IFNPQ0tfTUlOX1JDVkJV RjsKLQkJZWxzZQotCQkJc2stPnNrX3JjdmJ1ZiA9IHZhbCAqIDI7CisJCXNrLT5za19yY3ZidWYg PSBtYXhfdChpbnQsIHZhbCAqIDIsIFNPQ0tfTUlOX1JDVkJVRik7CiAJCWJyZWFrOwogCiAJY2Fz ZSBTT19SQ1ZCVUZGT1JDRToKQEAgLTkyMyw3ICs5MTksNyBAQCBpbnQgc29ja19nZXRzb2Nrb3B0 KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCWJyZWFrOwog CiAJY2FzZSBTT19QQVNTQ1JFRDoKLQkJdi52YWwgPSB0ZXN0X2JpdChTT0NLX1BBU1NDUkVELCAm c29jay0+ZmxhZ3MpID8gMSA6IDA7CisJCXYudmFsID0gISF0ZXN0X2JpdChTT0NLX1BBU1NDUkVE LCAmc29jay0+ZmxhZ3MpOwogCQlicmVhazsKIAogCWNhc2UgU09fUEVFUkNSRUQ6CkBAIC05NTgs NyArOTU0LDcgQEAgaW50IHNvY2tfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQg bGV2ZWwsIGludCBvcHRuYW1lLAogCQlicmVhazsKIAogCWNhc2UgU09fUEFTU1NFQzoKLQkJdi52 YWwgPSB0ZXN0X2JpdChTT0NLX1BBU1NTRUMsICZzb2NrLT5mbGFncykgPyAxIDogMDsKKwkJdi52 YWwgPSAhIXRlc3RfYml0KFNPQ0tfUEFTU1NFQywgJnNvY2stPmZsYWdzKTsKIAkJYnJlYWs7CiAK IAljYXNlIFNPX1BFRVJTRUM6CmRpZmYgLS1naXQgYS9uZXQvZGNjcC9pcHY0LmMgYi9uZXQvZGNj cC9pcHY0LmMKaW5kZXggNzI0MTZjOGYwODU5Li5kMzM2NTAxZjM0NTEgMTAwNjQ0Ci0tLSBhL25l dC9kY2NwL2lwdjQuYworKysgYi9uZXQvZGNjcC9pcHY0LmMKQEAgLTg3Nyw3ICs4NzcsNyBAQCBz dGF0aWMgaW50IGRjY3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpCiAJCWdvdG8gZGlzY2Fy ZF9hbmRfcmVsc2U7CiAJbmZfcmVzZXQoc2tiKTsKIAotCXJldHVybiBza19yZWNlaXZlX3NrYihz aywgc2tiLCAxKTsKKwlyZXR1cm4gX19za19yZWNlaXZlX3NrYihzaywgc2tiLCAxLCBkaC0+ZGNj cGhfZG9mZiAqIDQpOwogCiBub19kY2NwX3NvY2tldDoKIAlpZiAoIXhmcm00X3BvbGljeV9jaGVj ayhOVUxMLCBYRlJNX1BPTElDWV9JTiwgc2tiKSkKZGlmZiAtLWdpdCBhL25ldC9kY2NwL2lwdjYu YyBiL25ldC9kY2NwL2lwdjYuYwppbmRleCAwOTg3Yzg5MDMxYzIuLmIwMGJjMTE1YTJmMCAxMDA2 NDQKLS0tIGEvbmV0L2RjY3AvaXB2Ni5jCisrKyBiL25ldC9kY2NwL2lwdjYuYwpAQCAtODE3LDcg KzgxNyw3IEBAIHN0YXRpYyBpbnQgZGNjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlp ZiAoIXhmcm02X3BvbGljeV9jaGVjayhzaywgWEZSTV9QT0xJQ1lfSU4sIHNrYikpCiAJCWdvdG8g ZGlzY2FyZF9hbmRfcmVsc2U7CiAKLQlyZXR1cm4gc2tfcmVjZWl2ZV9za2Ioc2ssIHNrYiwgMSkg PyAtMSA6IDA7CisJcmV0dXJuIF9fc2tfcmVjZWl2ZV9za2Ioc2ssIHNrYiwgMSwgZGgtPmRjY3Bo X2RvZmYgKiA0KSA/IC0xIDogMDsKIAogbm9fZGNjcF9zb2NrZXQ6CiAJaWYgKCF4ZnJtNl9wb2xp Y3lfY2hlY2soTlVMTCwgWEZSTV9QT0xJQ1lfSU4sIHNrYikpCkBAIC0xMDM3LDYgKzEwMzcsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBkY2NwX2lw djZfbWFwcGVkID0gewogCS5nZXRzb2Nrb3B0CSAgID0gaXB2Nl9nZXRzb2Nrb3B0LAogCS5hZGRy MnNvY2thZGRyCSAgID0gaW5ldDZfY3NrX2FkZHIyc29ja2FkZHIsCiAJLnNvY2thZGRyX2xlbgkg ICA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSwKKwkuYmluZF9jb25mbGljdAkgICA9IGlu ZXQ2X2Nza19iaW5kX2NvbmZsaWN0LAogI2lmZGVmIENPTkZJR19DT01QQVQKIAkuY29tcGF0X3Nl dHNvY2tvcHQgPSBjb21wYXRfaXB2Nl9zZXRzb2Nrb3B0LAogCS5jb21wYXRfZ2V0c29ja29wdCA9 IGNvbXBhdF9pcHY2X2dldHNvY2tvcHQsCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9u ZXQvaXB2NC9pZ21wLmMKaW5kZXggMjRmNjlhMGNlYmZhLi45NzAzZGNkYjYwZGQgMTAwNjQ0Ci0t LSBhL25ldC9pcHY0L2lnbXAuYworKysgYi9uZXQvaXB2NC9pZ21wLmMKQEAgLTE0MCw3ICsxNDAs NyBAQAogCSAgdGltZV9iZWZvcmUoamlmZmllcywgKGluX2RldiktPm1yX3YyX3NlZW4pKSkKIAog c3RhdGljIHZvaWQgaWdtcHYzX2FkZF9kZWxyZWMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBz dHJ1Y3QgaXBfbWNfbGlzdCAqaW0pOwotc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9kZWxyZWMoc3Ry dWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgbXVsdGlhZGRyKTsKK3N0YXRpYyB2b2lkIGln bXB2M19kZWxfZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldiwgc3RydWN0IGlwX21jX2xp c3QgKmltKTsKIHN0YXRpYyB2b2lkIGlnbXB2M19jbGVhcl9kZWxyZWMoc3RydWN0IGluX2Rldmlj ZSAqaW5fZGV2KTsKIHN0YXRpYyBpbnQgc2Zfc2V0c3RhdGUoc3RydWN0IGlwX21jX2xpc3QgKnBt Yyk7CiBzdGF0aWMgdm9pZCBzZl9tYXJrc3RhdGUoc3RydWN0IGlwX21jX2xpc3QgKnBtYyk7CkBA IC0xMDc3LDEwICsxMDc3LDE0IEBAIHN0YXRpYyB2b2lkIGlnbXB2M19hZGRfZGVscmVjKHN0cnVj dCBpbl9kZXZpY2UgKmluX2Rldiwgc3RydWN0IGlwX21jX2xpc3QgKmltKQogCXNwaW5fdW5sb2Nr X2JoKCZpbl9kZXYtPm1jX3RvbWJfbG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIGlnbXB2M19kZWxf ZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIG11bHRpYWRkcikKKy8qCisg KiByZXN0b3JlIGlwX21jX2xpc3QgZGVsZXRlZCByZWNvcmRzCisgKi8KK3N0YXRpYyB2b2lkIGln bXB2M19kZWxfZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldiwgc3RydWN0IGlwX21jX2xp c3QgKmltKQogewogCXN0cnVjdCBpcF9tY19saXN0ICpwbWMsICpwbWNfcHJldjsKLQlzdHJ1Y3Qg aXBfc2ZfbGlzdCAqcHNmLCAqcHNmX25leHQ7CisJc3RydWN0IGlwX3NmX2xpc3QgKnBzZjsKKwlf X2JlMzIgbXVsdGlhZGRyID0gaW0tPm11bHRpYWRkcjsKIAogCXNwaW5fbG9ja19iaCgmaW5fZGV2 LT5tY190b21iX2xvY2spOwogCXBtY19wcmV2ID0gTlVMTDsKQEAgLTEwOTYsMTYgKzExMDAsMjYg QEAgc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9kZWxyZWMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2 LCBfX2JlMzIgbXVsdGlhZGRyKQogCQkJaW5fZGV2LT5tY190b21iID0gcG1jLT5uZXh0OwogCX0K IAlzcGluX3VubG9ja19iaCgmaW5fZGV2LT5tY190b21iX2xvY2spOworCisJc3Bpbl9sb2NrX2Jo KCZpbS0+bG9jayk7CiAJaWYgKHBtYykgewotCQlmb3IgKHBzZj1wbWMtPnRvbWI7IHBzZjsgcHNm PXBzZl9uZXh0KSB7Ci0JCQlwc2ZfbmV4dCA9IHBzZi0+c2ZfbmV4dDsKLQkJCWtmcmVlKHBzZik7 CisJCWltLT5pbnRlcmZhY2UgPSBwbWMtPmludGVyZmFjZTsKKwkJaW0tPmNyY291bnQgPSBpbl9k ZXYtPm1yX3FydiA/OiBJR01QX1Vuc29saWNpdGVkX1JlcG9ydF9Db3VudDsKKwkJaW0tPnNmbW9k ZSA9IHBtYy0+c2Ztb2RlOworCQlpZiAocG1jLT5zZm1vZGUgPT0gTUNBU1RfSU5DTFVERSkgewor CQkJaW0tPnRvbWIgPSBwbWMtPnRvbWI7CisJCQlpbS0+c291cmNlcyA9IHBtYy0+c291cmNlczsK KwkJCWZvciAocHNmID0gaW0tPnNvdXJjZXM7IHBzZjsgcHNmID0gcHNmLT5zZl9uZXh0KQorCQkJ CXBzZi0+c2ZfY3Jjb3VudCA9IGltLT5jcmNvdW50OwogCQl9CiAJCWluX2Rldl9wdXQocG1jLT5p bnRlcmZhY2UpOwotCQlrZnJlZShwbWMpOwogCX0KKwlzcGluX3VubG9ja19iaCgmaW0tPmxvY2sp OwogfQogCisvKgorICogZmx1c2ggaXBfbWNfbGlzdCBkZWxldGVkIHJlY29yZHMKKyAqLwogc3Rh dGljIHZvaWQgaWdtcHYzX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiB7 CiAJc3RydWN0IGlwX21jX2xpc3QgKnBtYywgKm5leHRwbWM7CkBAIC0xMjUwLDcgKzEyNjQsNyBA QCB2b2lkIGlwX21jX2luY19ncm91cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBh ZGRyKQogCXJjdV9hc3NpZ25fcG9pbnRlcihpbl9kZXYtPm1jX2xpc3QsIGltKTsKIAogI2lmZGVm IENPTkZJR19JUF9NVUxUSUNBU1QKLQlpZ21wdjNfZGVsX2RlbHJlYyhpbl9kZXYsIGltLT5tdWx0 aWFkZHIpOworCWlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgaW0pOwogI2VuZGlmCiAJaWdtcF9n cm91cF9hZGRlZChpbSk7CiAJaWYgKCFpbl9kZXYtPmRlYWQpCkBAIC0xMzQwLDggKzEzNTQsMTIg QEAgdm9pZCBpcF9tY19yZW1hcChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiAKIAlBU1NFUlRf UlROTCgpOwogCi0JZm9yX2VhY2hfcG1jX3J0bmwoaW5fZGV2LCBwbWMpCisJZm9yX2VhY2hfcG1j X3J0bmwoaW5fZGV2LCBwbWMpIHsKKyNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUCisJCWlnbXB2 M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTsKKyNlbmRpZgogCQlpZ21wX2dyb3VwX2FkZGVkKHBt Yyk7CisJfQogfQogCiAvKiBEZXZpY2UgZ29pbmcgZG93biAqLwpAQCAtMTM2Miw3ICsxMzgwLDYg QEAgdm9pZCBpcF9tY19kb3duKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIAlpbl9kZXYtPm1y X2dxX3J1bm5pbmcgPSAwOwogCWlmIChkZWxfdGltZXIoJmluX2Rldi0+bXJfZ3FfdGltZXIpKQog CQlfX2luX2Rldl9wdXQoaW5fZGV2KTsKLQlpZ21wdjNfY2xlYXJfZGVscmVjKGluX2Rldik7CiAj ZW5kaWYKIAogCWlwX21jX2RlY19ncm91cChpbl9kZXYsIElHTVBfQUxMX0hPU1RTKTsKQEAgLTEz OTcsOCArMTQxNCwxMiBAQCB2b2lkIGlwX21jX3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikK IAogCWlwX21jX2luY19ncm91cChpbl9kZXYsIElHTVBfQUxMX0hPU1RTKTsKIAotCWZvcl9lYWNo X3BtY19ydG5sKGluX2RldiwgcG1jKQorCWZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgcG1jKSB7 CisjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVAorCQlpZ21wdjNfZGVsX2RlbHJlYyhpbl9kZXYs IHBtYyk7CisjZW5kaWYKIAkJaWdtcF9ncm91cF9hZGRlZChwbWMpOworCX0KIH0KIAogLyoKQEAg LTE0MTMsMTMgKzE0MzQsMTMgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2 aWNlICppbl9kZXYpCiAKIAkvKiBEZWFjdGl2YXRlIHRpbWVycyAqLwogCWlwX21jX2Rvd24oaW5f ZGV2KTsKKyNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUCisJaWdtcHYzX2NsZWFyX2RlbHJlYyhp bl9kZXYpOworI2VuZGlmCiAKIAl3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi0+ bWNfbGlzdCkpICE9IE5VTEwpIHsKIAkJaW5fZGV2LT5tY19saXN0ID0gaS0+bmV4dF9yY3U7CiAJ CWluX2Rldi0+bWNfY291bnQtLTsKLQotCQkvKiBXZSd2ZSBkcm9wcGVkIHRoZSBncm91cHMgaW4g aXBfbWNfZG93biBhbHJlYWR5ICovCi0JCWlwX21jX2NsZWFyX3NyYyhpKTsKIAkJaXBfbWFfcHV0 KGkpOwogCX0KIH0KZGlmZiAtLWdpdCBhL25ldC9pcHY0L3BpbmcuYyBiL25ldC9pcHY0L3Bpbmcu YwppbmRleCA1ZDI4Njc3MzQ1ZTAuLmNmNDc5ZjJkMWU4YyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQv cGluZy5jCisrKyBiL25ldC9pcHY0L3BpbmcuYwpAQCAtNDgyLDYgKzQ4MiwxMCBAQCBzdGF0aWMg aW50IHBpbmdfc2VuZG1zZyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBzb2NrICpzaywgc3Ry dWN0IG1zZ2hkciAqbXNnLAogCWlmIChsZW4gPiAweEZGRkYpCiAJCXJldHVybiAtRU1TR1NJWkU7 CiAKKwkvKiBNdXN0IGhhdmUgYXQgbGVhc3QgYSBmdWxsIElDTVAgaGVhZGVyLiAqLworCWlmIChs ZW4gPCBzaXplb2Yoc3RydWN0IGljbXBoZHIpKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCS8qCiAJ ICoJQ2hlY2sgdGhlIGZsYWdzLgogCSAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQu YyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKaW5kZXggYjRlMGViNDlmNTZkLi40YmE3N2VlYTZiODUg MTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQu YwpAQCAtMTY0Nyw2ICsxNjQ3LDIxIEBAIGNzdW1fZXJyOgogfQogRVhQT1JUX1NZTUJPTCh0Y3Bf djRfZG9fcmN2KTsKIAoraW50IHRjcF9maWx0ZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiKQoreworCXN0cnVjdCB0Y3BoZHIgKnRoID0gKHN0cnVjdCB0Y3BoZHIgKilza2It PmRhdGE7CisJdW5zaWduZWQgaW50IGVhdGVuID0gc2tiLT5sZW47CisJaW50IGVycjsKKworCWVy ciA9IHNrX2ZpbHRlcl90cmltX2NhcChzaywgc2tiLCB0aC0+ZG9mZiAqIDQpOworCWlmICghZXJy KSB7CisJCWVhdGVuIC09IHNrYi0+bGVuOworCQlUQ1BfU0tCX0NCKHNrYiktPmVuZF9zZXEgLT0g ZWF0ZW47CisJfQorCXJldHVybiBlcnI7Cit9CitFWFBPUlRfU1lNQk9MKHRjcF9maWx0ZXIpOwor CiAvKgogICoJRnJvbSB0Y3BfaW5wdXQuYwogICovCkBAIC0xNzA5LDggKzE3MjQsMTAgQEAgcHJv Y2VzczoKIAkJZ290byBkaXNjYXJkX2FuZF9yZWxzZTsKIAluZl9yZXNldChza2IpOwogCi0JaWYg KHNrX2ZpbHRlcihzaywgc2tiKSkKKwlpZiAodGNwX2ZpbHRlcihzaywgc2tiKSkKIAkJZ290byBk aXNjYXJkX2FuZF9yZWxzZTsKKwl0aCA9IChjb25zdCBzdHJ1Y3QgdGNwaGRyICopc2tiLT5kYXRh OworCWlwaCA9IGlwX2hkcihza2IpOwogCiAJc2tiLT5kZXYgPSBOVUxMOwogCmRpZmYgLS1naXQg YS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggZjFj YTY1ODgzMDdjLi5jNTlmNjQ2YTdkNGYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQu YworKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKQEAgLTEzMzgsNyArMTMzOCw3IEBAIGludCBp cDZfYXBwZW5kX2RhdGEoc3RydWN0IHNvY2sgKnNrLCBpbnQgZ2V0ZnJhZyh2b2lkICpmcm9tLCBj aGFyICp0bywKIAlpZiAoKChsZW5ndGggPiBtdHUpIHx8CiAJICAgICAoc2tiICYmIHNrYl9oYXNf ZnJhZ3Moc2tiKSkpICYmCiAJICAgIChzay0+c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApICYm Ci0JICAgIChydC0+ZHN0LmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1VGTykgJiYKKwkgICAgKHJ0 LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfVUZPKSAmJiAhcnQtPmRzdC5oZWFkZXJfbGVu ICYmCiAJICAgIChzay0+c2tfdHlwZSA9PSBTT0NLX0RHUkFNKSkgewogCQllcnIgPSBpcDZfdWZv X2FwcGVuZF9kYXRhKHNrLCBnZXRmcmFnLCBmcm9tLCBsZW5ndGgsCiAJCQkJCSAgaGhfbGVuLCBm cmFnaGVhZGVybGVuLCBleHRoZHJsZW4sCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfdHVubmVs LmMgYi9uZXQvaXB2Ni9pcDZfdHVubmVsLmMKaW5kZXggMTgyOGMyN2JhN2FhLi43NDE5MTdjM2Fh NWQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl90dW5uZWwuYworKysgYi9uZXQvaXB2Ni9pcDZf dHVubmVsLmMKQEAgLTk4Myw2ICs5ODMsNyBAQCBzdGF0aWMgaW50IGlwNl90bmxfeG1pdDIoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwKIAlpcHY2X2FkZHJfY29weSgmaXB2NmgtPnNhZGRyLCAmZmw2LT5z YWRkcik7CiAJaXB2Nl9hZGRyX2NvcHkoJmlwdjZoLT5kYWRkciwgJmZsNi0+ZGFkZHIpOwogCW5m X3Jlc2V0KHNrYik7CisJbWVtc2V0KHNrYi0+Y2IsIDAsIHNpemVvZihzdHJ1Y3QgaW5ldDZfc2ti X3Bhcm0pKTsKIAlwa3RfbGVuID0gc2tiLT5sZW47CiAJZXJyID0gaXA2X2xvY2FsX291dChza2Ip OwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYu YwppbmRleCBiMjBmN2EwOGI0ZjcuLjJjMmQ3MTEyMzI1MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYv dGNwX2lwdjYuYworKysgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xNTg1LDcgKzE1ODUsNyBA QCBzdGF0aWMgaW50IHRjcF92Nl9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiKQogCQlnb3RvIGRpc2NhcmQ7CiAjZW5kaWYKIAotCWlmIChza19maWx0ZXIoc2ssIHNr YikpCisJaWYgKHRjcF9maWx0ZXIoc2ssIHNrYikpCiAJCWdvdG8gZGlzY2FyZDsKIAogCS8qCkBA IC0xNzQzLDggKzE3NDMsMTAgQEAgcHJvY2VzczoKIAlpZiAoIXhmcm02X3BvbGljeV9jaGVjayhz aywgWEZSTV9QT0xJQ1lfSU4sIHNrYikpCiAJCWdvdG8gZGlzY2FyZF9hbmRfcmVsc2U7CiAKLQlp ZiAoc2tfZmlsdGVyKHNrLCBza2IpKQorCWlmICh0Y3BfZmlsdGVyKHNrLCBza2IpKQogCQlnb3Rv IGRpc2NhcmRfYW5kX3JlbHNlOworCXRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilza2ItPmRh dGE7CisJaGRyID0gaXB2Nl9oZHIoc2tiKTsKIAogCXNrYi0+ZGV2ID0gTlVMTDsKIApkaWZmIC0t Z2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguYwppbmRleCA3YzUzZWZm YjZlZGEuLmMxZDAyZDg2MDQ4OSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3J4LmMKKysrIGIv bmV0L21hYzgwMjExL3J4LmMKQEAgLTE4NTQsMTYgKzE4NTQsMjIgQEAgaWVlZTgwMjExX3J4X2hf YW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCkKIAlpZiAoIShzdGF0dXMtPnJ4X2Zs YWdzICYgSUVFRTgwMjExX1JYX0FNU0RVKSkKIAkJcmV0dXJuIFJYX0NPTlRJTlVFOwogCi0JaWYg KGllZWU4MDIxMV9oYXNfYTQoaGRyLT5mcmFtZV9jb250cm9sKSAmJgotCSAgICByeC0+c2RhdGEt PnZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gJiYKLQkgICAgIXJ4LT5zZGF0YS0+ dS52bGFuLnN0YSkKLQkJcmV0dXJuIFJYX0RST1BfVU5VU0FCTEU7CisJaWYgKHVubGlrZWx5KGll ZWU4MDIxMV9oYXNfYTQoaGRyLT5mcmFtZV9jb250cm9sKSkpIHsKKwkJc3dpdGNoIChyeC0+c2Rh dGEtPnZpZi50eXBlKSB7CisJCWNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjoKKwkJCWlmICgh cngtPnNkYXRhLT51LnZsYW4uc3RhKQorCQkJCXJldHVybiBSWF9EUk9QX1VOVVNBQkxFOworCQkJ YnJlYWs7CisJCWNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjoKKwkJCWlmICghcngtPnNkYXRh LT51Lm1nZC51c2VfNGFkZHIpCisJCQkJcmV0dXJuIFJYX0RST1BfVU5VU0FCTEU7CisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiBSWF9EUk9QX1VOVVNBQkxFOworCQl9CisJfQogCi0J aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci0+YWRkcjEpICYmCi0JICAgICgocngtPnNk YXRhLT52aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOICYmCi0JICAgICAgcngtPnNk YXRhLT51LnZsYW4uc3RhKSB8fAotCSAgICAgKHJ4LT5zZGF0YS0+dmlmLnR5cGUgPT0gTkw4MDIx MV9JRlRZUEVfU1RBVElPTiAmJgotCSAgICAgIHJ4LT5zZGF0YS0+dS5tZ2QudXNlXzRhZGRyKSkp CisJaWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci0+YWRkcjEpKQogCQlyZXR1cm4gUlhf RFJPUF9VTlVTQUJMRTsKIAogCXNrYi0+ZGV2ID0gZGV2OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZp bHRlci9uZl9jb25udHJhY2tfY29yZS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29y ZS5jCmluZGV4IGM4NTU2NzNjZWIyMy4uNjljZTIzZmM4MWViIDEwMDY0NAotLS0gYS9uZXQvbmV0 ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJh Y2tfY29yZS5jCkBAIC01NTAsNiArNTUwLDcgQEAgbmZfY29ubnRyYWNrX3R1cGxlX3Rha2VuKGNv bnN0IHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgKnR1cGxlLAogCSAqIGxlYXN0IG9uY2UgZm9y IHRoZSBzdGF0cyBhbnl3YXkuCiAJICovCiAJcmN1X3JlYWRfbG9ja19iaCgpOworIGJlZ2luOgog CWhsaXN0X251bGxzX2Zvcl9lYWNoX2VudHJ5X3JjdShoLCBuLCAmbmV0LT5jdC5oYXNoW2hhc2hd LCBobm5vZGUpIHsKIAkJY3QgPSBuZl9jdF90dXBsZWhhc2hfdG9fY3RyYWNrKGgpOwogCQlpZiAo Y3QgIT0gaWdub3JlZF9jb25udHJhY2sgJiYKQEAgLTU2MSw2ICs1NjIsMTIgQEAgbmZfY29ubnRy YWNrX3R1cGxlX3Rha2VuKGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgKnR1cGxlLAog CQl9CiAJCU5GX0NUX1NUQVRfSU5DKG5ldCwgc2VhcmNoZWQpOwogCX0KKworCWlmIChnZXRfbnVs bHNfdmFsdWUobikgIT0gaGFzaCkgeworCQlORl9DVF9TVEFUX0lOQyhuZXQsIHNlYXJjaF9yZXN0 YXJ0KTsKKwkJZ290byBiZWdpbjsKKwl9CisKIAlyY3VfcmVhZF91bmxvY2tfYmgoKTsKIAogCXJl dHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMgYi9u ZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYwppbmRleCA0YThjNTViZDYwZWUuLjdjYmY5 YmRmZWFhOCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMKKysr IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMKQEAgLTEzNzIsOSArMTM3MiwxMiBA QCBzdGF0aWMgaW50IHByb2Nlc3Nfc2lwX3JlcXVlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5z aWduZWQgaW50IGRhdGFvZmYsCiAJCWhhbmRsZXIgPSAmc2lwX2hhbmRsZXJzW2ldOwogCQlpZiAo aGFuZGxlci0+cmVxdWVzdCA9PSBOVUxMKQogCQkJY29udGludWU7Ci0JCWlmICgqZGF0YWxlbiA8 IGhhbmRsZXItPmxlbiB8fAorCQlpZiAoKmRhdGFsZW4gPCBoYW5kbGVyLT5sZW4gKyAyIHx8CiAJ CSAgICBzdHJuaWNtcCgqZHB0ciwgaGFuZGxlci0+bWV0aG9kLCBoYW5kbGVyLT5sZW4pKQogCQkJ Y29udGludWU7CisJCWlmICgoKmRwdHIpW2hhbmRsZXItPmxlbl0gIT0gJyAnIHx8CisJCSAgICAh aXNhbHBoYSgoKmRwdHIpW2hhbmRsZXItPmxlbisxXSkpCisJCQljb250aW51ZTsKIAogCQlpZiAo Y3Rfc2lwX2dldF9oZWFkZXIoY3QsICpkcHRyLCAwLCAqZGF0YWxlbiwgU0lQX0hEUl9DU0VRLAog CQkJCSAgICAgICZtYXRjaG9mZiwgJm1hdGNobGVuKSA8PSAwKQpkaWZmIC0tZ2l0IGEvbmV0L3Bh Y2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggNGE5MTJmNzhl NDIzLi5kYWU5NDc2ZmE0ZDggMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKKysr IGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMzA3NywxOSArMzA3NywyNSBAQCBwYWNrZXRf c2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBj aGFyIF9fdXNlciAqb3B0dgogCiAJCWlmIChvcHRsZW4gIT0gc2l6ZW9mKHZhbCkpCiAJCQlyZXR1 cm4gLUVJTlZBTDsKLQkJaWYgKHBvLT5yeF9yaW5nLnBnX3ZlYyB8fCBwby0+dHhfcmluZy5wZ192 ZWMpCi0JCQlyZXR1cm4gLUVCVVNZOwogCQlpZiAoY29weV9mcm9tX3VzZXIoJnZhbCwgb3B0dmFs LCBzaXplb2YodmFsKSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJc3dpdGNoICh2YWwpIHsKIAkJ Y2FzZSBUUEFDS0VUX1YxOgogCQljYXNlIFRQQUNLRVRfVjI6CiAJCWNhc2UgVFBBQ0tFVF9WMzoK LQkJCXBvLT50cF92ZXJzaW9uID0gdmFsOwotCQkJcmV0dXJuIDA7CisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CisJCWxvY2tfc29jayhzayk7CisJCWlmIChw by0+cnhfcmluZy5wZ192ZWMgfHwgcG8tPnR4X3JpbmcucGdfdmVjKSB7CisJCQlyZXQgPSAtRUJV U1k7CisJCX0gZWxzZSB7CisJCQlwby0+dHBfdmVyc2lvbiA9IHZhbDsKKwkJCXJldCA9IDA7CisJ CX0KKwkJcmVsZWFzZV9zb2NrKHNrKTsKKwkJcmV0dXJuIHJldDsKIAl9CiAJY2FzZSBQQUNLRVRf UkVTRVJWRToKIAl7CkBAIC0zNTYwLDYgKzM1NjYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zZXRf cmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LAogCS8qIEFk ZGVkIHRvIGF2b2lkIG1pbmltYWwgY29kZSBjaHVybiAqLwogCXN0cnVjdCB0cGFja2V0X3JlcSAq cmVxID0gJnJlcV91LT5yZXE7CiAKKwlsb2NrX3NvY2soc2spOwogCS8qIE9wZW5pbmcgYSBUeC1y aW5nIGlzIE5PVCBzdXBwb3J0ZWQgaW4gVFBBQ0tFVF9WMyAqLwogCWlmICghY2xvc2luZyAmJiB0 eF9yaW5nICYmIChwby0+dHBfdmVyc2lvbiA+IFRQQUNLRVRfVjIpKSB7CiAJCVdBUk4oMSwgIlR4 LXJpbmcgaXMgbm90IHN1cHBvcnRlZC5cbiIpOwpAQCAtMzYzNyw3ICszNjQ0LDYgQEAgc3RhdGlj IGludCBwYWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91 ICpyZXFfdSwKIAkJCWdvdG8gb3V0OwogCX0KIAotCWxvY2tfc29jayhzayk7CiAKIAkvKiBEZXRh Y2ggc29ja2V0IGZyb20gbmV0d29yayAqLwogCXNwaW5fbG9jaygmcG8tPmJpbmRfbG9jayk7CkBA IC0zNjg2LDExICszNjkyLDExIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBz b2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsCiAJCWlmICghdHhfcmluZykKIAkJ CXByYl9zaHV0ZG93bl9yZXRpcmVfYmxrX3RpbWVyKHBvLCB0eF9yaW5nLCByYl9xdWV1ZSk7CiAJ fQotCXJlbGVhc2Vfc29jayhzayk7CiAKIAlpZiAocGdfdmVjKQogCQlmcmVlX3BnX3ZlYyhwZ192 ZWMsIG9yZGVyLCByZXEtPnRwX2Jsb2NrX25yKTsKIG91dDoKKwlyZWxlYXNlX3NvY2soc2spOwog CXJldHVybiBlcnI7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9yb3NlL3Jvc2VfaW4uYyBiL25ldC9y b3NlL3Jvc2VfaW4uYwppbmRleCA3ZjdmY2I0NmI0ZmEuLmU1MDI5YzU4ZTQ3MiAxMDA2NDQKLS0t IGEvbmV0L3Jvc2Uvcm9zZV9pbi5jCisrKyBiL25ldC9yb3NlL3Jvc2VfaW4uYwpAQCAtMTY1LDcg KzE2NSw4IEBAIHN0YXRpYyBpbnQgcm9zZV9zdGF0ZTNfbWFjaGluZShzdHJ1Y3Qgc29jayAqc2ss IHN0cnVjdCBza19idWZmICpza2IsIGludCBmcmFtZXR5CiAJCXJvc2VfZnJhbWVzX2Fja2VkKHNr LCBucik7CiAJCWlmIChucyA9PSByb3NlLT52cikgewogCQkJcm9zZV9zdGFydF9pZGxldGltZXIo c2spOwotCQkJaWYgKHNvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSA9PSAwKSB7CisJCQlpZiAo c2tfZmlsdGVyX3RyaW1fY2FwKHNrLCBza2IsIFJPU0VfTUlOX0xFTikgPT0gMCAmJgorCQkJICAg IF9fc29ja19xdWV1ZV9yY3Zfc2tiKHNrLCBza2IpID09IDApIHsKIAkJCQlyb3NlLT52ciA9IChy b3NlLT52ciArIDEpICUgUk9TRV9NT0RVTFVTOwogCQkJCXF1ZXVlZCA9IDE7CiAJCQl9IGVsc2Ug ewpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jIGIvbmV0L3NjdHAvc21fc2lk ZWVmZmVjdC5jCmluZGV4IDU0MzdiMzNmZDMzZS4uNmRjYTU4OGIxNGFmIDEwMDY0NAotLS0gYS9u ZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKKysrIGIvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jCkBA IC05OTUsMTkgKzk5NSwxMyBAQCBzdGF0aWMgdm9pZCBzY3RwX2NtZF90MV90aW1lcl91cGRhdGUo c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAgKiBUaGlzIHdheSB0aGUgd2hvbGUgbWVz c2FnZSBpcyBxdWV1ZWQgdXAgYW5kIGJ1bmRsaW5nIGlmCiAgKiBlbmNvdXJhZ2VkIGZvciBzbWFs bCBmcmFnbWVudHMuCiAgKi8KLXN0YXRpYyBpbnQgc2N0cF9jbWRfc2VuZF9tc2coc3RydWN0IHNj dHBfYXNzb2NpYXRpb24gKmFzb2MsCi0JCQkJc3RydWN0IHNjdHBfZGF0YW1zZyAqbXNnKQorc3Rh dGljIHZvaWQgc2N0cF9jbWRfc2VuZF9tc2coc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2Ms CisJCQkgICAgICBzdHJ1Y3Qgc2N0cF9kYXRhbXNnICptc2cpCiB7CiAJc3RydWN0IHNjdHBfY2h1 bmsgKmNodW5rOwotCWludCBlcnJvciA9IDA7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNodW5r LCAmbXNnLT5jaHVua3MsIGZyYWdfbGlzdCkgewotCQllcnJvciA9IHNjdHBfb3V0cV90YWlsKCZh c29jLT5vdXRxdWV1ZSwgY2h1bmspOwotCQlpZiAoZXJyb3IpCi0JCQlicmVhazsKLQl9CiAKLQly ZXR1cm4gZXJyb3I7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjaHVuaywgJm1zZy0+Y2h1bmtzLCBm cmFnX2xpc3QpCisJCXNjdHBfb3V0cV90YWlsKCZhc29jLT5vdXRxdWV1ZSwgY2h1bmspOwogfQog CiAKQEAgLTE2ODUsNyArMTY3OSw3IEBAIHN0YXRpYyBpbnQgc2N0cF9jbWRfaW50ZXJwcmV0ZXIo c2N0cF9ldmVudF90IGV2ZW50X3R5cGUsCiAJCQkJc2N0cF9vdXRxX2NvcmsoJmFzb2MtPm91dHF1 ZXVlKTsKIAkJCQlsb2NhbF9jb3JrID0gMTsKIAkJCX0KLQkJCWVycm9yID0gc2N0cF9jbWRfc2Vu ZF9tc2coYXNvYywgY21kLT5vYmoubXNnKTsKKwkJCXNjdHBfY21kX3NlbmRfbXNnKGFzb2MsIGNt ZC0+b2JqLm1zZyk7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQX0NNRF9TRU5EX05FWFRfQVNDT05G OgogCQkJc2N0cF9jbWRfc2VuZF9hc2NvbmYoYXNvYyk7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9z bV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IDRlMGE5YjkzNDIz My4uNmIyMmQ2YTJkZDYzIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYworKysg Yi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwpAQCAtMzM1NCw2ICszMzU0LDEyIEBAIHNjdHBfZGlz cG9zaXRpb25fdCBzY3RwX3NmX29vdGIoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLAog CQkJcmV0dXJuIHNjdHBfc2ZfdmlvbGF0aW9uX2NodW5rbGVuKGVwLCBhc29jLCB0eXBlLCBhcmcs CiAJCQkJCQkgIGNvbW1hbmRzKTsKIAorCQkvKiBSZXBvcnQgdmlvbGF0aW9uIGlmIGNodW5rIGxl biBvdmVyZmxvd3MgKi8KKwkJY2hfZW5kID0gKChfX3U4ICopY2gpICsgV09SRF9ST1VORChudG9o cyhjaC0+bGVuZ3RoKSk7CisJCWlmIChjaF9lbmQgPiBza2JfdGFpbF9wb2ludGVyKHNrYikpCisJ CQlyZXR1cm4gc2N0cF9zZl92aW9sYXRpb25fY2h1bmtsZW4oZXAsIGFzb2MsIHR5cGUsIGFyZywK KwkJCQkJCSAgY29tbWFuZHMpOworCiAJCS8qIE5vdyB0aGF0IHdlIGtub3cgd2UgYXQgbGVhc3Qg aGF2ZSBhIGNodW5rIGhlYWRlciwKIAkJICogZG8gdGhpbmdzIHRoYXQgYXJlIHR5cGUgYXBwcm9w cmlhdGUuCiAJCSAqLwpAQCAtMzM4NSwxMiArMzM5MSw2IEBAIHNjdHBfZGlzcG9zaXRpb25fdCBz Y3RwX3NmX29vdGIoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLAogCQkJfQogCQl9CiAK LQkJLyogUmVwb3J0IHZpb2xhdGlvbiBpZiBjaHVuayBsZW4gb3ZlcmZsb3dzICovCi0JCWNoX2Vu ZCA9ICgoX191OCAqKWNoKSArIFdPUkRfUk9VTkQobnRvaHMoY2gtPmxlbmd0aCkpOwotCQlpZiAo Y2hfZW5kID4gc2tiX3RhaWxfcG9pbnRlcihza2IpKQotCQkJcmV0dXJuIHNjdHBfc2ZfdmlvbGF0 aW9uX2NodW5rbGVuKGVwLCBhc29jLCB0eXBlLCBhcmcsCi0JCQkJCQkgIGNvbW1hbmRzKTsKLQog CQljaCA9IChzY3RwX2NodW5raGRyX3QgKikgY2hfZW5kOwogCX0gd2hpbGUgKGNoX2VuZCA8IHNr Yl90YWlsX3BvaW50ZXIoc2tiKSk7CiAKZGlmZiAtLWdpdCBhL25ldC90aXBjL2JlYXJlci5oIGIv bmV0L3RpcGMvYmVhcmVyLmgKaW5kZXggZDY5NmY5ZTQxNGUzLi5kOTdkMDNmNGQzMWIgMTAwNjQ0 Ci0tLSBhL25ldC90aXBjL2JlYXJlci5oCisrKyBiL25ldC90aXBjL2JlYXJlci5oCkBAIC00Nyw2 ICs0NywxMyBAQAogICovCiAjZGVmaW5lIFRJUENfTUVESUFfVFlQRV9FVEgJMQogCisvKiBNZXNz YWdlIGhlYWRlciBzaXplcyBmcm9tIG1zZy5oIC0gZHVwbGljYXRlZCB0byBhdm9pZCBtdXR1YWwg aW5jbHVzaW9uICovCisjZGVmaW5lIElOVF9IX1NJWkUgICAgICAgICAgICAgICAgNDAKKyNkZWZp bmUgTUFYX0hfU0laRSAgICAgICAgICAgICAgICA2MAorCisvKiBtaW5pbXVtIGJlYXJlciBNVFUg Ki8KKyNkZWZpbmUgVElQQ19NSU5fQkVBUkVSX01UVQkoTUFYX0hfU0laRSArIElOVF9IX1NJWkUp CisKIC8qCiAgKiBEZXN0aW5hdGlvbiBhZGRyZXNzIHN0cnVjdHVyZSB1c2VkIGJ5IFRJUEMgYmVh cmVycyB3aGVuIHNlbmRpbmcgbWVzc2FnZXMKICAqCkBAIC0yMDksNCArMjE2LDEzIEBAIHN0YXRp YyBpbmxpbmUgaW50IHRpcGNfYmVhcmVyX3NlbmQoc3RydWN0IHRpcGNfYmVhcmVyICpiX3B0ciwK IAlyZXR1cm4gIWJfcHRyLT5tZWRpYS0+c2VuZF9tc2coYnVmLCBiX3B0ciwgZGVzdCk7CiB9CiAK Ky8qIGNoZWNrIGlmIGRldmljZSBNVFUgaXMgdG9vIGxvdyBmb3IgdGlwYyBoZWFkZXJzICovCitz dGF0aWMgaW5saW5lIGJvb2wgdGlwY19tdHVfYmFkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVu c2lnbmVkIGludCByZXNlcnZlKQoreworCWlmIChkZXYtPm10dSA+PSBUSVBDX01JTl9CRUFSRVJf TVRVICsgcmVzZXJ2ZSkKKwkJcmV0dXJuIGZhbHNlOworCW5ldGRldl93YXJuKGRldiwgIk1UVSB0 b28gbG93IGZvciB0aXBjIGJlYXJlclxuIik7CisJcmV0dXJuIHRydWU7Cit9CisKICNlbmRpZgkv KiBfVElQQ19CRUFSRVJfSCAqLwpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvZXRoX21lZGlhLmMgYi9u ZXQvdGlwYy9ldGhfbWVkaWEuYwppbmRleCBhMjI0YTM4ZjAyMTguLjJlNzllODQ2NjBmYiAxMDA2 NDQKLS0tIGEvbmV0L3RpcGMvZXRoX21lZGlhLmMKKysrIGIvbmV0L3RpcGMvZXRoX21lZGlhLmMK QEAgLTE2Nyw2ICsxNjcsMTAgQEAgc3RhdGljIGludCBlbmFibGVfYmVhcmVyKHN0cnVjdCB0aXBj X2JlYXJlciAqdGJfcHRyKQogCXJlYWRfdW5sb2NrKCZkZXZfYmFzZV9sb2NrKTsKIAlpZiAoIWRl dikKIAkJcmV0dXJuIC1FTk9ERVY7CisJaWYgKHRpcGNfbXR1X2JhZChkZXYsIDApKSB7CisJCWRl dl9wdXQoZGV2KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQogCiAJLyogQ3JlYXRlIEV0aGVybmV0 IGJlYXJlciBmb3IgZGV2aWNlICovCiAKQEAgLTIyNyw4ICsyMzEsNiBAQCBzdGF0aWMgaW50IHJl Y3Zfbm90aWZpY2F0aW9uKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcg ZXZ0LAogCWlmICghZWJfcHRyLT5iZWFyZXIpCiAJCXJldHVybiBOT1RJRllfRE9ORTsJCS8qIGJl YXJlciBoYWQgYmVlbiBkaXNhYmxlZCAqLwogCi0JZWJfcHRyLT5iZWFyZXItPm10dSA9IGRldi0+ bXR1OwotCiAJc3dpdGNoIChldnQpIHsKIAljYXNlIE5FVERFVl9DSEFOR0U6CiAJCWlmIChuZXRp Zl9jYXJyaWVyX29rKGRldikpCkBAIC0yNDMsNiArMjQ1LDEyIEBAIHN0YXRpYyBpbnQgcmVjdl9u b3RpZmljYXRpb24oc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBldnQs CiAJCXRpcGNfYmxvY2tfYmVhcmVyKGViX3B0ci0+YmVhcmVyLT5uYW1lKTsKIAkJYnJlYWs7CiAJ Y2FzZSBORVRERVZfQ0hBTkdFTVRVOgorCQlpZiAodGlwY19tdHVfYmFkKGRldiwgMCkpIHsKKwkJ CXRpcGNfZGlzYWJsZV9iZWFyZXIoZWJfcHRyLT5iZWFyZXItPm5hbWUpOworCQkJYnJlYWs7CisJ CX0KKwkJZWJfcHRyLT5iZWFyZXItPm10dSA9IGRldi0+bXR1OworCQkvKiBmYWxsIHRocm91Z2gg Ki8KIAljYXNlIE5FVERFVl9DSEFOR0VBRERSOgogCQl0aXBjX2Jsb2NrX2JlYXJlcihlYl9wdHIt PmJlYXJlci0+bmFtZSk7CiAJCXRpcGNfY29udGludWUoZWJfcHRyLT5iZWFyZXIpOwpkaWZmIC0t Z2l0IGEvc291bmQvY29yZS9wY21fbGliLmMgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwppbmRleCA3 ZjAwZDM0ZjBhYmQuLmIzNjU0NGE2MmI0MCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbGli LmMKKysrIGIvc291bmQvY29yZS9wY21fbGliLmMKQEAgLTE3NjYsMTAgKzE3NjYsMTAgQEAgdm9p ZCBzbmRfcGNtX3BlcmlvZF9lbGFwc2VkKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtKQogCWlmIChzdWJzdHJlYW0tPnRpbWVyX3J1bm5pbmcpCiAJCXNuZF90aW1lcl9pbnRlcnJ1 cHQoc3Vic3RyZWFtLT50aW1lciwgMSk7CiAgX2VuZDoKLQlzbmRfcGNtX3N0cmVhbV91bmxvY2tf aXJxcmVzdG9yZShzdWJzdHJlYW0sIGZsYWdzKTsKIAlpZiAocnVudGltZS0+dHJhbnNmZXJfYWNr X2VuZCkKIAkJcnVudGltZS0+dHJhbnNmZXJfYWNrX2VuZChzdWJzdHJlYW0pOwogCWtpbGxfZmFz eW5jKCZydW50aW1lLT5mYXN5bmMsIFNJR0lPLCBQT0xMX0lOKTsKKwlzbmRfcGNtX3N0cmVhbV91 bmxvY2tfaXJxcmVzdG9yZShzdWJzdHJlYW0sIGZsYWdzKTsKIH0KIAogRVhQT1JUX1NZTUJPTChz bmRfcGNtX3BlcmlvZF9lbGFwc2VkKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hbGk1NDUxL2Fs aTU0NTEuYyBiL3NvdW5kL3BjaS9hbGk1NDUxL2FsaTU0NTEuYwppbmRleCBiZTY2MmM5YTIxMTMu LjhlOTM1ZGVhNThkNCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FsaTU0NTEvYWxpNTQ1MS5jCisr KyBiL3NvdW5kL3BjaS9hbGk1NDUxL2FsaTU0NTEuYwpAQCAtMTQyMiw2ICsxNDIyLDcgQEAgc25k X2FsaV9wbGF5YmFja19wb2ludGVyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt KQogCXNwaW5fdW5sb2NrKCZjb2RlYy0+cmVnX2xvY2spOwogCXNuZF9hbGlfcHJpbnRrKCJwbGF5 YmFjayBwb2ludGVyIHJldHVybmVkIGNzbz0leGguXG4iLCBjc28pOwogCisJY3NvICU9IHJ1bnRp bWUtPmJ1ZmZlcl9zaXplOwogCXJldHVybiBjc287CiB9CiAKQEAgLTE0NDIsNiArMTQ0Myw3IEBA IHN0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdCBzbmRfYWxpX3BvaW50ZXIoc3RydWN0IHNuZF9wY21f c3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJY3NvID0gaW53KEFMSV9SRUcoY29kZWMsIEFMSV9DU09f QUxQSEFfRk1TICsgMikpOwogCXNwaW5fdW5sb2NrKCZjb2RlYy0+cmVnX2xvY2spOwogCisJY3Nv ICU9IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplOwogCXJldHVybiBjc287CiB9CiAKZGlmZiAtLWdpdCBh L3NvdW5kL3VzYi9taXhlcl9xdWlya3MuYyBiL3NvdW5kL3VzYi9taXhlcl9xdWlya3MuYwppbmRl eCAyMWY0ZDQ0OGIyNDIuLmQ0MjJkMTYyNzI0YSAxMDA2NDQKLS0tIGEvc291bmQvdXNiL21peGVy X3F1aXJrcy5jCisrKyBiL3NvdW5kL3VzYi9taXhlcl9xdWlya3MuYwpAQCAtNjg0LDYgKzY4NCw3 IEBAIHZvaWQgc25kX3VzYl9taXhlcl9yY19tZW1vcnlfY2hhbmdlKHN0cnVjdCB1c2JfbWl4ZXJf aW50ZXJmYWNlICptaXhlciwKIH0KIAogc3RhdGljIHZvaWQgc25kX2RyYWdvbmZseV9xdWlya19k Yl9zY2FsZShzdHJ1Y3QgdXNiX21peGVyX2ludGVyZmFjZSAqbWl4ZXIsCisJCQkJCSBzdHJ1Y3Qg dXNiX21peGVyX2VsZW1faW5mbyAqY3ZhbCwKIAkJCQkJIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtj dGwpCiB7CiAJLyogQXBwcm94aW1hdGlvbiB1c2luZyAxMCByYW5nZXMgYmFzZWQgb24gb3V0cHV0 IG1lYXN1cmVtZW50IG9uIGh3IHYxLjIuCkBAIC03MDEsMTAgKzcwMiwxOSBAQCBzdGF0aWMgdm9p ZCBzbmRfZHJhZ29uZmx5X3F1aXJrX2RiX3NjYWxlKHN0cnVjdCB1c2JfbWl4ZXJfaW50ZXJmYWNl ICptaXhlciwKIAkJNDEsIDUwLCBUTFZfREJfTUlOTUFYX0lURU0oLTQ0MSwgMCksCiAJKTsKIAot CWRldl9pbmZvKCZtaXhlci0+Y2hpcC0+ZGV2LT5kZXYsICJhcHBseWluZyBEcmFnb25GbHkgZEIg c2NhbGUgcXVpcmtcbiIpOwotCWtjdGwtPnRsdi5wID0gc2NhbGU7Ci0Ja2N0bC0+dmRbMF0uYWNj ZXNzIHw9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRDsKLQlrY3RsLT52ZFswXS5hY2Nl c3MgJj0gflNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ0FMTEJBQ0s7CisJaWYgKGN2YWwtPm1p biA9PSAwICYmIGN2YWwtPm1heCA9PSA1MCkgeworCQlkZXZfaW5mbygmbWl4ZXItPmNoaXAtPmRl di0+ZGV2LCAiYXBwbHlpbmcgRHJhZ29uRmx5IGRCIHNjYWxlIHF1aXJrICgwLTUwIHZhcmlhbnQp XG4iKTsKKwkJa2N0bC0+dGx2LnAgPSBzY2FsZTsKKwkJa2N0bC0+dmRbMF0uYWNjZXNzIHw9IFNO RFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRDsKKwkJa2N0bC0+dmRbMF0uYWNjZXNzICY9IH5T TkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX0NBTExCQUNLOworCisJfSBlbHNlIGlmIChjdmFsLT5t aW4gPT0gMCAmJiBjdmFsLT5tYXggPD0gMTAwMCkgeworCQkvKiBTb21lIG90aGVyIGNsZWFybHkg YnJva2VuIERyYWdvbkZseSB2YXJpYW50LgorCQkgKiBBdCBsZWFzdCBhIDAuLjUzIHZhcmlhbnQg KGh3IHYxLjApIGV4aXN0cy4KKwkJICovCisJCWRldl9pbmZvKCZtaXhlci0+Y2hpcC0+ZGV2LT5k ZXYsICJpZ25vcmluZyB0b28gbmFycm93IGRCIHJhbmdlIG9uIGEgRHJhZ29uRmx5IGRldmljZSIp OworCQlrY3RsLT52ZFswXS5hY2Nlc3MgJj0gflNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ0FM TEJBQ0s7CisJfQogfQogCiB2b2lkIHNuZF91c2JfbWl4ZXJfZnVfYXBwbHlfcXVpcmsoc3RydWN0 IHVzYl9taXhlcl9pbnRlcmZhY2UgKm1peGVyLApAQCAtNzEzLDggKzcyMyw4IEBAIHZvaWQgc25k X3VzYl9taXhlcl9mdV9hcHBseV9xdWlyayhzdHJ1Y3QgdXNiX21peGVyX2ludGVyZmFjZSAqbWl4 ZXIsCiB7CiAJc3dpdGNoIChtaXhlci0+Y2hpcC0+dXNiX2lkKSB7CiAJY2FzZSBVU0JfSUQoMHgy MWI0LCAweDAwODEpOiAvKiBBdWRpb1F1ZXN0IERyYWdvbkZseSAqLwotCQlpZiAodW5pdGlkID09 IDcgJiYgY3ZhbC0+bWluID09IDAgJiYgY3ZhbC0+bWF4ID09IDUwKQotCQkJc25kX2RyYWdvbmZs eV9xdWlya19kYl9zY2FsZShtaXhlciwga2N0bCk7CisJCWlmICh1bml0aWQgPT0gNyAmJiBjdmFs LT5jb250cm9sID09IFVBQ19GVV9WT0xVTUUpCisJCQlzbmRfZHJhZ29uZmx5X3F1aXJrX2RiX3Nj YWxlKG1peGVyLCBjdmFsLCBrY3RsKTsKIAkJYnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc291 bmQvdXNiL3F1aXJrcy10YWJsZS5oIGIvc291bmQvdXNiL3F1aXJrcy10YWJsZS5oCmluZGV4IDBm MThjNzUzZTY2MC4uMTcyNzk5YTRmNDFlIDEwMDY0NAotLS0gYS9zb3VuZC91c2IvcXVpcmtzLXRh YmxlLmgKKysrIGIvc291bmQvdXNiL3F1aXJrcy10YWJsZS5oCkBAIC0yNjg5LDYgKzI2ODksMjMg QEAgQVUwODI4X0RFVklDRSgweDIwNDAsIDB4NzI2MCwgIkhhdXBwYXVnZSIsICJIVlItOTUwUSIp LAogQVUwODI4X0RFVklDRSgweDIwNDAsIDB4NzIxMywgIkhhdXBwYXVnZSIsICJIVlItOTUwUSIp LAogQVUwODI4X0RFVklDRSgweDIwNDAsIDB4NzI3MCwgIkhhdXBwYXVnZSIsICJIVlItOTUwUSIp LAogCisvKiBTeW50ZWsgU1RLMTE2MCAqLworeworCS5tYXRjaF9mbGFncyA9IFVTQl9ERVZJQ0Vf SURfTUFUQ0hfREVWSUNFIHwKKwkJICAgICAgIFVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX0NMQVNT IHwKKwkJICAgICAgIFVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX1NVQkNMQVNTLAorCS5pZFZlbmRv ciA9IDB4MDVlMSwKKwkuaWRQcm9kdWN0ID0gMHgwNDA4LAorCS5iSW50ZXJmYWNlQ2xhc3MgPSBV U0JfQ0xBU1NfQVVESU8sCisJLmJJbnRlcmZhY2VTdWJDbGFzcyA9IFVTQl9TVUJDTEFTU19BVURJ T0NPTlRST0wsCisJLmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpICYoY29uc3Qgc3RydWN0 IHNuZF91c2JfYXVkaW9fcXVpcmspIHsKKwkJLnZlbmRvcl9uYW1lID0gIlN5bnRlayIsCisJCS5w cm9kdWN0X25hbWUgPSAiU1RLMTE2MCIsCisJCS5pZm51bSA9IFFVSVJLX0FOWV9JTlRFUkZBQ0Us CisJCS50eXBlID0gUVVJUktfQVVESU9fQUxJR05fVFJBTlNGRVIKKwl9Cit9LAorCiAvKiBEaWdp ZGVzaWduIE1ib3ggKi8KIHsKIAkvKiBUaGFua3MgdG8gQ2xlbWVucyBMYWRpc2NoIDxjbGVtZW5z QGxhZGlzY2guZGU+ICovCi== --=-SWZwyogNiRx74yOG2lTd-- --=-pQR46GR3ibgvyKIcEvNN Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAlik7QEACgkQ57/I7JWG EQmqkxAAkam39PRJj7X/NNSEQ5lchlMSL8TQhEoA87ZhUsO+38w2OirFMxw/cKES EZUO6X9mV2Pmzbe5DLc9LLipaBgnU7a2gMyUVxDAD7a9out5cdCOV52+rxioRCFp JLMi8cwRTCkZTeLc51yahJAW5cH0asxqeibPxWKgyVfjSHu86M8h74c4k/wwZNjz Adgz+c/5pCEkPy8n6zzpwXdZrMn7ZrDaVuY8UCGxKYH1ULtoSnez88vhPNFaj8dK Fpp8MoJqeF5zS4TGtFvZYsl46A0hS23UmFLUCmpRaD8MmANBrFE2A9sWsl5DRbg8 uvkoNe7KaPH0Ong4zc5MIERllwV6O1M3UHEvPluBL8sUv6vDu1ErCaF34a4V2Cmq 5FskLHiCVgeN+Q7wbXcBA5KrM1rcJMPmcjJplpG73kDy+fArPV/rINfYpQCdVjWc DfNwjc3z58p1WUCfYX+3jqFxFVOPjROYvb8zgRDQzJnvjcv+0UZkRff2SvdaZz/c 7EZtk8jM7/6alYRyq6KbWi9kdJoG1TTqmx4PjRRWv7q9se02cUVZ3LCTKvTA35DO I16y/DNUQPStKE1m3x3mfBbLczkmMp1UaksppmPLCbHQXR06T4EYNDtGghkSY9OJ /ynuB8f9rpKB1Z19nIOmEUznjCMeh1m/DmSfzGzQFq7ISVDAg8E= =TzOI -----END PGP SIGNATURE----- --=-pQR46GR3ibgvyKIcEvNN--