Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933505AbdCKQyM (ORCPT ); Sat, 11 Mar 2017 11:54:12 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:54092 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932877AbdCKQxr (ORCPT ); Sat, 11 Mar 2017 11:53:47 -0500 Message-ID: <1489251219.2838.3.camel@decadent.org.uk> Subject: Re: [PATCH 3.16 000/372] 3.16.42-rc2 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: Sat, 11 Mar 2017 16:53:39 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-A+WHpWZUoPRClolYkeSP" X-Mailer: Evolution 3.22.5-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 Content-Length: 533919 Lines: 6963 --=-A+WHpWZUoPRClolYkeSP Content-Type: multipart/mixed; boundary="=-rteAsbOdKR8KANa1/XRY" --=-rteAsbOdKR8KANa1/XRY Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.16.42-rc2 relative to 3.16.41. Ben. --=20 Ben Hutchings If you seem to know what you are doing, you'll be given more to do. --=-rteAsbOdKR8KANa1/XRY Content-Disposition: attachment; filename="linux-3.16.42-rc2.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.16.42-rc2.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgz MS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14 MzEtY2xvY2sudHh0CmluZGV4IDE5ZGY4NDJjNjk0Zi4uODE2M2Q1NjVmNjk3IDEwMDY0NAotLS0g YS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MzEtY2xvY2sudHh0 CisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgzMS1jbG9j ay50eHQKQEAgLTc3LDcgKzc3LDcgQEAgRXhhbXBsZXM6CiBjbGtzOiBjY21ANTNmODAwMDB7CiAJ Y29tcGF0aWJsZSA9ICJmc2wsaW14MzEtY2NtIjsKIAlyZWcgPSA8MHg1M2Y4MDAwMCAweDQwMDA+ OwotCWludGVycnVwdHMgPSA8MCAzMSAweDA0IDAgNTMgMHgwND47CisJaW50ZXJydXB0cyA9IDwz MT4sIDw1Mz47CiAJI2Nsb2NrLWNlbGxzID0gPDE+OwogfTsKIApkaWZmIC0tZ2l0IGEvRG9jdW1l bnRhdGlvbi92aXJ0dWFsL2t2bS9hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9h cGkudHh0CmluZGV4IDc2OWMyY2I3ZjliMy4uZTg2ZGE0Mzc3NDAyIDEwMDY0NAotLS0gYS9Eb2N1 bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFs L2t2bS9hcGkudHh0CkBAIC0xODkxLDYgKzE4OTEsNyBAQCByZWdpc3RlcnMsIGZpbmQgYSBsaXN0 IGJlbG93OgogICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX1ZTQ1IJfCAzMgogICBQUEMgICB8IEtW TV9SRUdfUFBDX1RNX0RTQ1IJfCA2NAogICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX1RBUgl8IDY0 CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVE1fWEVSICAgfCA2NAogCiBBUk0gcmVnaXN0ZXJzIGFy ZSBtYXBwZWQgdXNpbmcgdGhlIGxvd2VyIDMyIGJpdHMuICBUaGUgdXBwZXIgMTYgb2YgdGhhdAog aXMgdGhlIHJlZ2lzdGVyIGdyb3VwIHR5cGUsIG9yIGNvcHJvY2Vzc29yIG51bWJlcjoKZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggNjU3OTFjMDg5MWE5Li5iMmE1 MjQzZTlkMGIgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0x MDA1NywxMSArMTAwNTcsMTEgQEAgRjoJYXJjaC94ODYveGVuLypzd2lvdGxiKgogRjoJZHJpdmVy cy94ZW4vKnN3aW90bGIqCiAKIFhGUyBGSUxFU1lTVEVNCi1NOglEYXZlIENoaW5uZXIgPGRhdmlk QGZyb21vcmJpdC5jb20+CitNOglEYXJyaWNrIEouIFdvbmcgPGRhcnJpY2sud29uZ0BvcmFjbGUu Y29tPgogTToJbGludXgteGZzQHZnZXIua2VybmVsLm9yZwogTDoJbGludXgteGZzQHZnZXIua2Vy bmVsLm9yZwogVzoJaHR0cDovL3hmcy5vcmcvCi1UOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2RnYy9saW51eC14ZnMuZ2l0CitUOglnaXQgZ2l0Oi8v Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy94ZnMveGZzLWxpbnV4LmdpdAogUzoJU3VwcG9ydGVk CiBGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy50eHQKIEY6CWZzL3hmcy8KZGlmZiAt LWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMWVkYmNiYTQ3Zjc1Li5mNzdkYmRhMGJl YzYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEsNyBAQAog VkVSU0lPTiA9IDMKIFBBVENITEVWRUwgPSAxNgotU1VCTEVWRUwgPSA0MQotRVhUUkFWRVJTSU9O ID0KK1NVQkxFVkVMID0gNDIKK0VYVFJBVkVSU0lPTiA9IC1yYzIKIE5BTUUgPSBNdXNldW0gb2Yg RmlzaGllZ29vZGllcwogCiAjICpET0NVTUVOVEFUSU9OKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcmMv a2VybmVsL3VuYWxpZ25lZC5jIGIvYXJjaC9hcmMva2VybmVsL3VuYWxpZ25lZC5jCmluZGV4IDdm ZjViNWMxODNiYi4uMmNjODJiNmVjMjNkIDEwMDY0NAotLS0gYS9hcmNoL2FyYy9rZXJuZWwvdW5h bGlnbmVkLmMKKysrIGIvYXJjaC9hcmMva2VybmVsL3VuYWxpZ25lZC5jCkBAIC0yNDAsOCArMjQw LDkgQEAgaW50IG1pc2FsaWduZWRfZml4dXAodW5zaWduZWQgbG9uZyBhZGRyZXNzLCBzdHJ1Y3Qg cHRfcmVncyAqcmVncywKIAlpZiAoc3RhdGUuZmF1bHQpCiAJCWdvdG8gZmF1bHQ7CiAKKwkvKiBj bGVhciBhbnkgcmVtYW5hbnRzIG9mIGRlbGF5IHNsb3QgKi8KIAlpZiAoZGVsYXlfbW9kZShyZWdz KSkgewotCQlyZWdzLT5yZXQgPSByZWdzLT5idGE7CisJCXJlZ3MtPnJldCA9IHJlZ3MtPmJ0YSAm IH4xVTsKIAkJcmVncy0+c3RhdHVzMzIgJj0gflNUQVRVU19ERV9NQVNLOwogCX0gZWxzZSB7CiAJ CXJlZ3MtPnJldCArPSBzdGF0ZS5pbnN0cl9sZW47CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290 L2R0cy9kYTg1MC1ldm0uZHRzIGIvYXJjaC9hcm0vYm9vdC9kdHMvZGE4NTAtZXZtLmR0cwppbmRl eCAxZTExZTVhNWY3MjMuLjIxMzQyYWI3OGZmNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYm9vdC9k dHMvZGE4NTAtZXZtLmR0cworKysgYi9hcmNoL2FybS9ib290L2R0cy9kYTg1MC1ldm0uZHRzCkBA IC01OSw2ICs1OSw3IEBACiAJCQkJI3NpemUtY2VsbHMgPSA8MT47CiAJCQkJY29tcGF0aWJsZSA9 ICJtMjVwNjQiOwogCQkJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDMwMDAwMDAwPjsKKwkJCQltMjVw LGZhc3QtcmVhZDsKIAkJCQlyZWcgPSA8MD47CiAJCQkJcGFydGl0aW9uQDAgewogCQkJCQlsYWJl bCA9ICJVLUJvb3QtU1BMIjsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL2lteDMxLmR0 c2kgYi9hcmNoL2FybS9ib290L2R0cy9pbXgzMS5kdHNpCmluZGV4IGMzNGY4MjU4MTI0OC4uNjI2 ZTVlMzc0NTcyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L2R0cy9pbXgzMS5kdHNpCisrKyBi L2FyY2gvYXJtL2Jvb3QvZHRzL2lteDMxLmR0c2kKQEAgLTMwLDExICszMCwxMSBAQAogCQl9Owog CX07CiAKLQlhdmljOiBhdmljLWludGVycnVwdC1jb250cm9sbGVyQDYwMDAwMDAwIHsKKwlhdmlj OiBpbnRlcnJ1cHQtY29udHJvbGxlckA2ODAwMDAwMCB7CiAJCWNvbXBhdGlibGUgPSAiZnNsLGlt eDMxLWF2aWMiLCAiZnNsLGF2aWMiOwogCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKIAkJI2ludGVy cnVwdC1jZWxscyA9IDwxPjsKLQkJcmVnID0gPDB4NjAwMDAwMDAgMHgxMDAwMDA+OworCQlyZWcg PSA8MHg2ODAwMDAwMCAweDEwMDAwMD47CiAJfTsKIAogCXNvYyB7CkBAIC0xMTAsMTMgKzExMCw2 IEBACiAJCQkJaW50ZXJydXB0cyA9IDwxOT47CiAJCQkJY2xvY2tzID0gPCZjbGtzIDI1PjsKIAkJ CX07Ci0KLQkJCWNsa3M6IGNjbUA1M2Y4MDAwMHsKLQkJCQljb21wYXRpYmxlID0gImZzbCxpbXgz MS1jY20iOwotCQkJCXJlZyA9IDwweDUzZjgwMDAwIDB4NDAwMD47Ci0JCQkJaW50ZXJydXB0cyA9 IDwwIDMxIDB4MDQgMCA1MyAweDA0PjsKLQkJCQkjY2xvY2stY2VsbHMgPSA8MT47Ci0JCQl9Owog CQl9OwogCiAJCWFpcHNANTNmMDAwMDAgeyAvKiBBSVBTMiAqLwpAQCAtMTI2LDYgKzExOSwxMyBA QAogCQkJcmVnID0gPDB4NTNmMDAwMDAgMHgxMDAwMDA+OwogCQkJcmFuZ2VzOwogCisJCQljbGtz OiBjY21ANTNmODAwMDB7CisJCQkJY29tcGF0aWJsZSA9ICJmc2wsaW14MzEtY2NtIjsKKwkJCQly ZWcgPSA8MHg1M2Y4MDAwMCAweDQwMDA+OworCQkJCWludGVycnVwdHMgPSA8MzE+LCA8NTM+Owor CQkJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJCX07CisKIAkJCWdwdDogdGltZXJANTNmOTAwMDAg ewogCQkJCWNvbXBhdGlibGUgPSAiZnNsLGlteDMxLWdwdCI7CiAJCQkJcmVnID0gPDB4NTNmOTAw MDAgMHg0MDAwPjsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL2lteDZxLWNtLWZ4Ni5k dHMgYi9hcmNoL2FybS9ib290L2R0cy9pbXg2cS1jbS1meDYuZHRzCmluZGV4IDk5YjQ2ZjgwMzBh ZC4uMTcyNTc5YTE0YWFlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L2R0cy9pbXg2cS1jbS1m eDYuZHRzCisrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL2lteDZxLWNtLWZ4Ni5kdHMKQEAgLTY1LDcg KzY1LDYgQEAKIAkJCQlNWDZRRExfUEFEX0VORVRfUkVGX0NMS19fRU5FVF9UWF9DTEsJMHgxYjBi MAogCQkJCU1YNlFETF9QQURfRU5FVF9NRElPX19FTkVUX01ESU8JCTB4MWIwYjAKIAkJCQlNWDZR RExfUEFEX0VORVRfTURDX19FTkVUX01EQwkJMHgxYjBiMAotCQkJCU1YNlFETF9QQURfR1BJT18x Nl9fRU5FVF9SRUZfQ0xLCTB4NDAwMWIwYTgKIAkJCT47CiAJCX07CiAKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL2luY2x1ZGUvYXNtL2NwdXR5cGUuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NwdXR5 cGUuaAppbmRleCA4YzJiNzMyMWE0NzguLjRiNDAxZjEwOTJmMyAxMDA2NDQKLS0tIGEvYXJjaC9h cm0vaW5jbHVkZS9hc20vY3B1dHlwZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NwdXR5 cGUuaApAQCAtNzksNiArNzksOSBAQAogI2RlZmluZSBBUk1fQ1BVX1hTQ0FMRV9BUkNIX1YyCQkw eDQwMDAKICNkZWZpbmUgQVJNX0NQVV9YU0NBTEVfQVJDSF9WMwkJMHg2MDAwCiAKKy8qIFF1YWxj b21tIGltcGxlbWVudGVkIGNvcmVzICovCisjZGVmaW5lIEFSTV9DUFVfUEFSVF9TQ09SUElPTgkJ MHg1MTAwMDJkMAorCiBleHRlcm4gdW5zaWduZWQgaW50IHByb2Nlc3Nvcl9pZDsKIAogI2lmZGVm IENPTkZJR19DUFVfQ1AxNQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL2h3X2JyZWFrcG9p bnQuYyBiL2FyY2gvYXJtL2tlcm5lbC9od19icmVha3BvaW50LmMKaW5kZXggNGQ5NjNmYjY2ZTNm Li41Yzc0MDQzMjZiN2MgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9od19icmVha3BvaW50 LmMKKysrIGIvYXJjaC9hcm0va2VybmVsL2h3X2JyZWFrcG9pbnQuYwpAQCAtMTA2Nyw2ICsxMDY3 LDIyIEBAIHN0YXRpYyBpbnQgX19pbml0IGFyY2hfaHdfYnJlYWtwb2ludF9pbml0KHZvaWQpCiAJ CXJldHVybiAwOwogCX0KIAorCS8qCisJICogU2NvcnBpb24gQ1BVcyAoYXQgbGVhc3QgdGhvc2Ug aW4gQVBRODA2MCkgc2VlbSB0byBzZXQgREJHUFJTUi5TUEQKKwkgKiB3aGVuZXZlciBhIFdGSSBp cyBpc3N1ZWQsIGV2ZW4gaWYgdGhlIGNvcmUgaXMgbm90IHBvd2VyZWQgZG93biwgaW4KKwkgKiB2 aW9sYXRpb24gb2YgdGhlIGFyY2hpdGVjdHVyZS4gIFdoZW4gREJHUFJTUi5TUEQgaXMgc2V0LCBh Y2Nlc3NlcyB0bworCSAqIGJyZWFrcG9pbnQgYW5kIHdhdGNocG9pbnQgcmVnaXN0ZXJzIGFyZSB0 cmVhdGVkIGFzIHVuZGVmaW5lZCwgc28KKwkgKiB0aGlzIHJlc3VsdHMgaW4gYm9vdCB0aW1lIGFu ZCBydW50aW1lIGZhaWx1cmVzIHdoZW4gdGhlc2UgYXJlCisJICogYWNjZXNzZWQgYW5kIHdlIHVu ZXhwZWN0ZWRseSB0YWtlIGEgdHJhcC4KKwkgKgorCSAqIEl0J3Mgbm90IGNsZWFyIGlmL2hvdyB0 aGlzIGNhbiBiZSB3b3JrZWQgYXJvdW5kLCBzbyB3ZSBibGFja2xpc3QKKwkgKiBTY29ycGlvbiBD UFVzIHRvIGF2b2lkIHRoZXNlIGlzc3Vlcy4KKwkqLworCWlmICgocmVhZF9jcHVpZF9pZCgpICYg MHhmZjAwZmZmMCkgPT0gQVJNX0NQVV9QQVJUX1NDT1JQSU9OKSB7CisJCXByX2luZm8oIlNjb3Jw aW9uIENQVSBkZXRlY3RlZC4gSGFyZHdhcmUgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIGRp c2FibGVkXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCiAJaGFzX29zc3IgPSBjb3JlX2hhc19vc19z YXZlX3Jlc3RvcmUoKTsKIAogCS8qIERldGVybWluZSBob3cgbWFueSBCUlBzL1dSUHMgYXJlIGF2 YWlsYWJsZS4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gv YXJtL2tlcm5lbC9wdHJhY2UuYwppbmRleCBhMjBlYmZlYWM0NzEuLmU4MWMxNTY2NWYxMCAxMDA2 NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3B0cmFjZS5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9w dHJhY2UuYwpAQCAtNjAwLDcgKzYwMCw3IEBAIHN0YXRpYyBpbnQgZ3ByX3NldChzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhcmdldCwKIAkJICAgY29uc3Qgdm9pZCAqa2J1ZiwgY29uc3Qgdm9pZCBfX3Vz ZXIgKnVidWYpCiB7CiAJaW50IHJldDsKLQlzdHJ1Y3QgcHRfcmVncyBuZXdyZWdzOworCXN0cnVj dCBwdF9yZWdzIG5ld3JlZ3MgPSAqdGFza19wdF9yZWdzKHRhcmdldCk7CiAKIAlyZXQgPSB1c2Vy X3JlZ3NldF9jb3B5aW4oJnBvcywgJmNvdW50LCAma2J1ZiwgJnVidWYsCiAJCQkJICZuZXdyZWdz LApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RhODUwLmMgYi9hcmNoL2FybS9t YWNoLWRhdmluY2kvZGE4NTAuYwppbmRleCA0NWNlMDY1ZTcxNzAuLjExODBhNzVjZDcwNyAxMDA2 NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RhODUwLmMKKysrIGIvYXJjaC9hcm0vbWFj aC1kYXZpbmNpL2RhODUwLmMKQEAgLTI5Nyw2ICsyOTcsMTYgQEAgc3RhdGljIHN0cnVjdCBjbGsg ZW1hY19jbGsgPSB7CiAJLmdwc2MJCT0gMSwKIH07CiAKKy8qCisgKiBJbiBvcmRlciB0byBhdm9p ZCBhZGRpbmcgdGhlIGVtYWNfY2xrIHRvIHRoZSBjbG9jayBsb29rdXAgdGFibGUgdHdpY2UgKGFu ZAorICogc2NyZXdpbmcgdXAgdGhlIGxpbmtlZCBsaXN0IGluIHRoZSBwcm9jZXNzKSBjcmVhdGUg YSBzZXBhcmF0ZSBjbG9jayBmb3IKKyAqIG1kaW8gaW5oZXJpdGluZyB0aGUgcmF0ZSBmcm9tIGVt YWNfY2xrLgorICovCitzdGF0aWMgc3RydWN0IGNsayBtZGlvX2NsayA9IHsKKwkubmFtZQkJPSAi bWRpbyIsCisJLnBhcmVudAkJPSAmZW1hY19jbGssCit9OworCiBzdGF0aWMgc3RydWN0IGNsayBt Y2FzcF9jbGsgPSB7CiAJLm5hbWUJCT0gIm1jYXNwIiwKIAkucGFyZW50CQk9ICZwbGwwX3N5c2Ns azIsCkBAIC00NjEsNyArNDcxLDcgQEAgc3RhdGljIHN0cnVjdCBjbGtfbG9va3VwIGRhODUwX2Ns a3NbXSA9IHsKIAlDTEsoTlVMTCwJCSJhcm0iLAkJJmFybV9jbGspLAogCUNMSyhOVUxMLAkJInJt aWkiLAkJJnJtaWlfY2xrKSwKIAlDTEsoImRhdmluY2lfZW1hYy4xIiwJTlVMTCwJCSZlbWFjX2Ns ayksCi0JQ0xLKCJkYXZpbmNpX21kaW8uMCIsCSJmY2siLAkJJmVtYWNfY2xrKSwKKwlDTEsoImRh dmluY2lfbWRpby4wIiwJImZjayIsCQkmbWRpb19jbGspLAogCUNMSygiZGF2aW5jaS1tY2FzcC4w IiwJTlVMTCwJCSZtY2FzcF9jbGspLAogCUNMSygiZGE4eHhfbGNkYy4wIiwJImZjayIsCQkmbGNk Y19jbGspLAogCUNMSygiZGE4MzAtbW1jLjAiLAlOVUxMLAkJJm1tY3NkMF9jbGspLApkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC11eDUwMC9wbS5jIGIvYXJjaC9hcm0vbWFjaC11eDUwMC9wbS5j CmluZGV4IGI4MGE5YTJlMzU2ZS4uYWMzMmFkMjI5NDI5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9t YWNoLXV4NTAwL3BtLmMKKysrIGIvYXJjaC9hcm0vbWFjaC11eDUwMC9wbS5jCkBAIC0xMzEsOCAr MTMxLDggQEAgYm9vbCBwcmNtdV9wZW5kaW5nX2lycSh2b2lkKQogICovCiBib29sIHByY211X2lz X2NwdV9pbl93ZmkoaW50IGNwdSkKIHsKLQlyZXR1cm4gcmVhZGwoUFJDTV9BUk1fV0ZJX1NUQU5E QlkpICYgY3B1ID8gUFJDTV9BUk1fV0ZJX1NUQU5EQllfV0ZJMSA6Ci0JCSAgICAgUFJDTV9BUk1f V0ZJX1NUQU5EQllfV0ZJMDsKKwlyZXR1cm4gcmVhZGwoUFJDTV9BUk1fV0ZJX1NUQU5EQlkpICYK KwkJKGNwdSA/IFBSQ01fQVJNX1dGSV9TVEFOREJZX1dGSTEgOiBQUkNNX0FSTV9XRklfU1RBTkRC WV9XRkkwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtenlucS9jb21tb24u YyBiL2FyY2gvYXJtL21hY2gtenlucS9jb21tb24uYwppbmRleCAzMWE2ZmE0MGJhMzcuLmI0MjE0 Y2YwODJiMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jCisrKyBiL2Fy Y2gvYXJtL21hY2gtenlucS9jb21tb24uYwpAQCAtNTksNyArNTksNyBAQCB2b2lkIF9faW9tZW0g Knp5bnFfc2N1X2Jhc2U7CiBzdGF0aWMgdm9pZCBfX2luaXQgenlucV9tZW1vcnlfaW5pdCh2b2lk KQogewogCWlmICghX19wYShQQUdFX09GRlNFVCkpCi0JCW1lbWJsb2NrX3Jlc2VydmUoX19wYShQ QUdFX09GRlNFVCksIF9fcGEoc3dhcHBlcl9wZ19kaXIpKTsKKwkJbWVtYmxvY2tfcmVzZXJ2ZShf X3BhKFBBR0VfT0ZGU0VUKSwgMHg4MDAwMCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlIHp5bnFfY3B1aWRsZV9kZXZpY2UgPSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS94ZW4v ZW5saWdodGVuLmMgYi9hcmNoL2FybS94ZW4vZW5saWdodGVuLmMKaW5kZXggMWU2MzI0MzA1NzBi Li5lNGQ3MTlmZjcxZjYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYworKysg Yi9hcmNoL2FybS94ZW4vZW5saWdodGVuLmMKQEAgLTI5MSw4ICsyOTEsNyBAQCBzdGF0aWMgaW50 IF9faW5pdCB4ZW5fZ3Vlc3RfaW5pdCh2b2lkKQogCSAqIGZvciBzZWNvbmRhcnkgQ1BVcyBhcyB0 aGV5IGFyZSBicm91Z2h0IHVwLgogCSAqIEZvciB1bmlmb3JtaXR5IHdlIHVzZSBWQ1BVT1BfcmVn aXN0ZXJfdmNwdV9pbmZvIGV2ZW4gb24gY3B1MC4KIAkgKi8KLQl4ZW5fdmNwdV9pbmZvID0gX19h bGxvY19wZXJjcHUoc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pLAotCQkJICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpOworCXhlbl92Y3B1X2luZm8gPSBhbGxv Y19wZXJjcHUoc3RydWN0IHZjcHVfaW5mbyk7CiAJaWYgKHhlbl92Y3B1X2luZm8gPT0gTlVMTCkK IAkJcmV0dXJuIC1FTk9NRU07CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1j ZS1jY20tY29yZS5TIGIvYXJjaC9hcm02NC9jcnlwdG8vYWVzLWNlLWNjbS1jb3JlLlMKaW5kZXgg NDMyZTQ4NDFjZDgxLi5kMDRlYjI3NzQ2ZDIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvY3J5cHRv L2Flcy1jZS1jY20tY29yZS5TCisrKyBiL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1jZS1jY20tY29y ZS5TCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+Cisj aW5jbHVkZSA8YXNtL2Fzc2VtYmxlci5oPgogCiAJLnRleHQKIAkuYXJjaAlhcm12OC1hK2NyeXB0 bwpAQCAtMTksNyArMjAsNyBAQAogCSAqLwogRU5UUlkoY2VfYWVzX2NjbV9hdXRoX2RhdGEpCiAJ bGRyCXc4LCBbeDNdCQkJLyogbGVmdG92ZXIgZnJvbSBwcmV2IHJvdW5kPyAqLwotCWxkMQl7djAu MmR9LCBbeDBdCQkJLyogbG9hZCBtYWMgKi8KKwlsZDEJe3YwLjE2Yn0sIFt4MF0JCQkvKiBsb2Fk IG1hYyAqLwogCWNiegl3OCwgMWYKIAlzdWIJdzgsIHc4LCAjMTYKIAllb3IJdjEuMTZiLCB2MS4x NmIsIHYxLjE2YgpAQCAtMzEsNyArMzIsNyBAQCBFTlRSWShjZV9hZXNfY2NtX2F1dGhfZGF0YSkK IAliZXEJOGYJCQkJLyogb3V0IG9mIGlucHV0PyAqLwogCWNibnoJdzgsIDBiCiAJZW9yCXYwLjE2 YiwgdjAuMTZiLCB2MS4xNmIKLTE6CWxkMQl7djMuMmR9LCBbeDRdCQkJLyogbG9hZCBmaXJzdCBy b3VuZCBrZXkgKi8KKzE6CWxkMQl7djMuMTZifSwgW3g0XQkJCS8qIGxvYWQgZmlyc3Qgcm91bmQg a2V5ICovCiAJcHJmbQlwbGRsMXN0cm0sIFt4MV0KIAljbXAJdzUsICMxMgkJCQkvKiB3aGljaCBr ZXkgc2l6ZT8gKi8KIAlhZGQJeDYsIHg0LCAjMTYKQEAgLTQxLDE3ICs0MiwxNyBAQCBFTlRSWShj ZV9hZXNfY2NtX2F1dGhfZGF0YSkKIAltb3YJdjUuMTZiLCB2My4xNmIKIAliCTRmCiAyOgltb3YJ djQuMTZiLCB2My4xNmIKLQlsZDEJe3Y1LjJkfSwgW3g2XSwgIzE2CQkvKiBsb2FkIDJuZCByb3Vu ZCBrZXkgKi8KKwlsZDEJe3Y1LjE2Yn0sIFt4Nl0sICMxNgkJLyogbG9hZCAybmQgcm91bmQga2V5 ICovCiAzOglhZXNlCXYwLjE2YiwgdjQuMTZiCiAJYWVzbWMJdjAuMTZiLCB2MC4xNmIKLTQ6CWxk MQl7djMuMmR9LCBbeDZdLCAjMTYJCS8qIGxvYWQgbmV4dCByb3VuZCBrZXkgKi8KKzQ6CWxkMQl7 djMuMTZifSwgW3g2XSwgIzE2CQkvKiBsb2FkIG5leHQgcm91bmQga2V5ICovCiAJYWVzZQl2MC4x NmIsIHY1LjE2YgogCWFlc21jCXYwLjE2YiwgdjAuMTZiCi01OglsZDEJe3Y0LjJkfSwgW3g2XSwg IzE2CQkvKiBsb2FkIG5leHQgcm91bmQga2V5ICovCis1OglsZDEJe3Y0LjE2Yn0sIFt4Nl0sICMx NgkJLyogbG9hZCBuZXh0IHJvdW5kIGtleSAqLwogCXN1YnMJdzcsIHc3LCAjMwogCWFlc2UJdjAu MTZiLCB2My4xNmIKIAlhZXNtYwl2MC4xNmIsIHYwLjE2YgotCWxkMQl7djUuMmR9LCBbeDZdLCAj MTYJCS8qIGxvYWQgbmV4dCByb3VuZCBrZXkgKi8KKwlsZDEJe3Y1LjE2Yn0sIFt4Nl0sICMxNgkJ LyogbG9hZCBuZXh0IHJvdW5kIGtleSAqLwogCWJwbAkzYgogCWFlc2UJdjAuMTZiLCB2NC4xNmIK IAlzdWJzCXcyLCB3MiwgIzE2CQkJLyogbGFzdCBkYXRhPyAqLwpAQCAtNjAsNyArNjEsNyBAQCBF TlRSWShjZV9hZXNfY2NtX2F1dGhfZGF0YSkKIAlsZDEJe3YxLjE2Yn0sIFt4MV0sICMxNgkJLyog bG9hZCBuZXh0IGlucHV0IGJsb2NrICovCiAJZW9yCXYwLjE2YiwgdjAuMTZiLCB2MS4xNmIJCS8q IHhvciB3aXRoIG1hYyAqLwogCWJuZQkxYgotNjoJc3QxCXt2MC4yZH0sIFt4MF0JCQkvKiBzdG9y ZSBtYWMgKi8KKzY6CXN0MQl7djAuMTZifSwgW3gwXQkJCS8qIHN0b3JlIG1hYyAqLwogCWJlcQkx MGYKIAlhZGRzCXcyLCB3MiwgIzE2CiAJYmVxCTEwZgpAQCAtNzksNyArODAsNyBAQCBFTlRSWShj ZV9hZXNfY2NtX2F1dGhfZGF0YSkKIAlhZGRzCXc3LCB3NywgIzEKIAlibmUJOWIKIAllb3IJdjAu MTZiLCB2MC4xNmIsIHYxLjE2YgotCXN0MQl7djAuMmR9LCBbeDBdCisJc3QxCXt2MC4xNmJ9LCBb eDBdCiAxMDoJc3RyCXc4LCBbeDNdCiAJcmV0CiBFTkRQUk9DKGNlX2Flc19jY21fYXV0aF9kYXRh KQpAQCAtODksMjcgKzkwLDI3IEBAIEVORFBST0MoY2VfYWVzX2NjbV9hdXRoX2RhdGEpCiAJICog CQkJIHUzMiByb3VuZHMpOwogCSAqLwogRU5UUlkoY2VfYWVzX2NjbV9maW5hbCkKLQlsZDEJe3Yz LjJkfSwgW3gyXSwgIzE2CQkvKiBsb2FkIGZpcnN0IHJvdW5kIGtleSAqLwotCWxkMQl7djAuMmR9 LCBbeDBdCQkJLyogbG9hZCBtYWMgKi8KKwlsZDEJe3YzLjE2Yn0sIFt4Ml0sICMxNgkJLyogbG9h ZCBmaXJzdCByb3VuZCBrZXkgKi8KKwlsZDEJe3YwLjE2Yn0sIFt4MF0JCQkvKiBsb2FkIG1hYyAq LwogCWNtcAl3MywgIzEyCQkJCS8qIHdoaWNoIGtleSBzaXplPyAqLwogCXN1Ygl3MywgdzMsICMy CQkJLyogbW9kaWZpZWQgIyBvZiByb3VuZHMgKi8KLQlsZDEJe3YxLjJkfSwgW3gxXQkJCS8qIGxv YWQgMXN0IGN0cml2ICovCisJbGQxCXt2MS4xNmJ9LCBbeDFdCQkJLyogbG9hZCAxc3QgY3RyaXYg Ki8KIAlibWkJMGYKIAlibmUJM2YKIAltb3YJdjUuMTZiLCB2My4xNmIKIAliCTJmCiAwOgltb3YJ djQuMTZiLCB2My4xNmIKLTE6CWxkMQl7djUuMmR9LCBbeDJdLCAjMTYJCS8qIGxvYWQgbmV4dCBy b3VuZCBrZXkgKi8KKzE6CWxkMQl7djUuMTZifSwgW3gyXSwgIzE2CQkvKiBsb2FkIG5leHQgcm91 bmQga2V5ICovCiAJYWVzZQl2MC4xNmIsIHY0LjE2YgogCWFlc2UJdjEuMTZiLCB2NC4xNmIKIAlh ZXNtYwl2MC4xNmIsIHYwLjE2YgogCWFlc21jCXYxLjE2YiwgdjEuMTZiCi0yOglsZDEJe3YzLjJk fSwgW3gyXSwgIzE2CQkvKiBsb2FkIG5leHQgcm91bmQga2V5ICovCisyOglsZDEJe3YzLjE2Yn0s IFt4Ml0sICMxNgkJLyogbG9hZCBuZXh0IHJvdW5kIGtleSAqLwogCWFlc2UJdjAuMTZiLCB2NS4x NmIKIAlhZXNlCXYxLjE2YiwgdjUuMTZiCiAJYWVzbWMJdjAuMTZiLCB2MC4xNmIKIAlhZXNtYwl2 MS4xNmIsIHYxLjE2YgotMzoJbGQxCXt2NC4yZH0sIFt4Ml0sICMxNgkJLyogbG9hZCBuZXh0IHJv dW5kIGtleSAqLworMzoJbGQxCXt2NC4xNmJ9LCBbeDJdLCAjMTYJCS8qIGxvYWQgbmV4dCByb3Vu ZCBrZXkgKi8KIAlzdWJzCXczLCB3MywgIzMKIAlhZXNlCXYwLjE2YiwgdjMuMTZiCiAJYWVzZQl2 MS4xNmIsIHYzLjE2YgpAQCAtMTIwLDQ3ICsxMjEsNDcgQEAgRU5UUlkoY2VfYWVzX2NjbV9maW5h bCkKIAlhZXNlCXYxLjE2YiwgdjQuMTZiCiAJLyogZmluYWwgcm91bmQga2V5IGNhbmNlbHMgb3V0 ICovCiAJZW9yCXYwLjE2YiwgdjAuMTZiLCB2MS4xNmIJCS8qIGVuLS9kZWNyeXB0IHRoZSBtYWMg Ki8KLQlzdDEJe3YwLjJkfSwgW3gwXQkJCS8qIHN0b3JlIHJlc3VsdCAqLworCXN0MQl7djAuMTZi fSwgW3gwXQkJCS8qIHN0b3JlIHJlc3VsdCAqLwogCXJldAogRU5EUFJPQyhjZV9hZXNfY2NtX2Zp bmFsKQogCiAJLm1hY3JvCWFlc19jY21fZG9fY3J5cHQsZW5jCiAJbGRyCXg4LCBbeDYsICM4XQkJ CS8qIGxvYWQgbG93ZXIgY3RyICovCi0JbGQxCXt2MC4yZH0sIFt4NV0JCQkvKiBsb2FkIG1hYyAq LwotCXJldgl4OCwgeDgJCQkJLyoga2VlcCBzd2FiYmVkIGN0ciBpbiByZWcgKi8KKwlsZDEJe3Yw LjE2Yn0sIFt4NV0JCQkvKiBsb2FkIG1hYyAqLworQ1BVX0xFKAlyZXYJeDgsIHg4CQkJKQkvKiBr ZWVwIHN3YWJiZWQgY3RyIGluIHJlZyAqLwogMDoJLyogb3V0ZXIgbG9vcCAqLwotCWxkMQl7djEu MWR9LCBbeDZdCQkJLyogbG9hZCB1cHBlciBjdHIgKi8KKwlsZDEJe3YxLjhifSwgW3g2XQkJCS8q IGxvYWQgdXBwZXIgY3RyICovCiAJcHJmbQlwbGRsMXN0cm0sIFt4MV0KIAlhZGQJeDgsIHg4LCAj MQogCXJldgl4OSwgeDgKIAljbXAJdzQsICMxMgkJCQkvKiB3aGljaCBrZXkgc2l6ZT8gKi8KIAlz dWIJdzcsIHc0LCAjMgkJCS8qIGdldCBtb2RpZmllZCAjIG9mIHJvdW5kcyAqLwogCWlucwl2MS5k WzFdLCB4OQkJCS8qIG5vIGNhcnJ5IGluIGxvd2VyIGN0ciAqLwotCWxkMQl7djMuMmR9LCBbeDNd CQkJLyogbG9hZCBmaXJzdCByb3VuZCBrZXkgKi8KKwlsZDEJe3YzLjE2Yn0sIFt4M10JCQkvKiBs b2FkIGZpcnN0IHJvdW5kIGtleSAqLwogCWFkZAl4MTAsIHgzLCAjMTYKIAlibWkJMWYKIAlibmUJ NGYKIAltb3YJdjUuMTZiLCB2My4xNmIKIAliCTNmCiAxOgltb3YJdjQuMTZiLCB2My4xNmIKLQls ZDEJe3Y1LjJkfSwgW3gxMF0sICMxNgkJLyogbG9hZCAybmQgcm91bmQga2V5ICovCisJbGQxCXt2 NS4xNmJ9LCBbeDEwXSwgIzE2CQkvKiBsb2FkIDJuZCByb3VuZCBrZXkgKi8KIDI6CS8qIGlubmVy IGxvb3A6IDMgcm91bmRzLCAyeCBpbnRlcmxlYXZlZCAqLwogCWFlc2UJdjAuMTZiLCB2NC4xNmIK IAlhZXNlCXYxLjE2YiwgdjQuMTZiCiAJYWVzbWMJdjAuMTZiLCB2MC4xNmIKIAlhZXNtYwl2MS4x NmIsIHYxLjE2YgotMzoJbGQxCXt2My4yZH0sIFt4MTBdLCAjMTYJCS8qIGxvYWQgbmV4dCByb3Vu ZCBrZXkgKi8KKzM6CWxkMQl7djMuMTZifSwgW3gxMF0sICMxNgkJLyogbG9hZCBuZXh0IHJvdW5k IGtleSAqLwogCWFlc2UJdjAuMTZiLCB2NS4xNmIKIAlhZXNlCXYxLjE2YiwgdjUuMTZiCiAJYWVz bWMJdjAuMTZiLCB2MC4xNmIKIAlhZXNtYwl2MS4xNmIsIHYxLjE2YgotNDoJbGQxCXt2NC4yZH0s IFt4MTBdLCAjMTYJCS8qIGxvYWQgbmV4dCByb3VuZCBrZXkgKi8KKzQ6CWxkMQl7djQuMTZifSwg W3gxMF0sICMxNgkJLyogbG9hZCBuZXh0IHJvdW5kIGtleSAqLwogCXN1YnMJdzcsIHc3LCAjMwog CWFlc2UJdjAuMTZiLCB2My4xNmIKIAlhZXNlCXYxLjE2YiwgdjMuMTZiCiAJYWVzbWMJdjAuMTZi LCB2MC4xNmIKIAlhZXNtYwl2MS4xNmIsIHYxLjE2YgotCWxkMQl7djUuMmR9LCBbeDEwXSwgIzE2 CQkvKiBsb2FkIG5leHQgcm91bmQga2V5ICovCisJbGQxCXt2NS4xNmJ9LCBbeDEwXSwgIzE2CQkv KiBsb2FkIG5leHQgcm91bmQga2V5ICovCiAJYnBsCTJiCiAJYWVzZQl2MC4xNmIsIHY0LjE2Ygog CWFlc2UJdjEuMTZiLCB2NC4xNmIKQEAgLTE3NywxNCArMTc4LDE0IEBAIEVORFBST0MoY2VfYWVz X2NjbV9maW5hbCkKIAllb3IJdjAuMTZiLCB2MC4xNmIsIHYyLjE2YgkJLyogeG9yIG1hYyB3aXRo IHB0IF4gcmtbbGFzdF0gKi8KIAlzdDEJe3YxLjE2Yn0sIFt4MF0sICMxNgkJLyogd3JpdGUgb3V0 cHV0IGJsb2NrICovCiAJYm5lCTBiCi0JcmV2CXg4LCB4OAotCXN0MQl7djAuMmR9LCBbeDVdCQkJ Lyogc3RvcmUgbWFjICovCitDUFVfTEUoCXJldgl4OCwgeDgJCQkpCisJc3QxCXt2MC4xNmJ9LCBb eDVdCQkJLyogc3RvcmUgbWFjICovCiAJc3RyCXg4LCBbeDYsICM4XQkJCS8qIHN0b3JlIGxzYiBl bmQgb2YgY3RyIChCRSkgKi8KIDU6CXJldAogCiA2Ogllb3IJdjAuMTZiLCB2MC4xNmIsIHY1LjE2 YgkJLyogZmluYWwgcm91bmQgbWFjICovCiAJZW9yCXYxLjE2YiwgdjEuMTZiLCB2NS4xNmIJCS8q IGZpbmFsIHJvdW5kIGVuYyAqLwotCXN0MQl7djAuMmR9LCBbeDVdCQkJLyogc3RvcmUgbWFjICov CisJc3QxCXt2MC4xNmJ9LCBbeDVdCQkJLyogc3RvcmUgbWFjICovCiAJYWRkCXcyLCB3MiwgIzE2 CQkJLyogcHJvY2VzcyBwYXJ0aWFsIHRhaWwgYmxvY2sgKi8KIDc6CWxkcmIJdzksIFt4MV0sICMx CQkJLyogZ2V0IDEgYnl0ZSBvZiBpbnB1dCAqLwogCXVtb3YJdzYsIHYxLmJbMF0JCQkvKiBnZXQg dG9wIGNyeXB0ZWQgY3RyIGJ5dGUgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3J5cHRvL2Fl cy1jZS5TIGIvYXJjaC9hcm02NC9jcnlwdG8vYWVzLWNlLlMKaW5kZXggNjg1YTE4ZjczMWViLi41 NmEyNThkNGJhZGEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1jZS5TCisrKyBi L2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1jZS5TCkBAIC0xMCw2ICsxMCw3IEBACiAgKi8KIAogI2lu Y2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxhc20vYXNzZW1ibGVyLmg+CiAKICNk ZWZpbmUgQUVTX0VOVFJZKGZ1bmMpCQlFTlRSWShjZV8gIyMgZnVuYykKICNkZWZpbmUgQUVTX0VO RFBST0MoZnVuYykJRU5EUFJPQyhjZV8gIyMgZnVuYykKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv Y3J5cHRvL2Flcy1tb2Rlcy5TIGIvYXJjaC9hcm02NC9jcnlwdG8vYWVzLW1vZGVzLlMKaW5kZXgg ZjZlMzcyYzUyOGViLi44MzhkYWQ1YzIwOWYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvY3J5cHRv L2Flcy1tb2Rlcy5TCisrKyBiL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1tb2Rlcy5TCkBAIC0xOTMs MTUgKzE5MywxNiBAQCBBRVNfRU5UUlkoYWVzX2NiY19lbmNyeXB0KQogCWNiegkJdzYsIC5MY2Jj ZW5jbG9vcAogCiAJbGQxCQl7djAuMTZifSwgW3g1XQkJCS8qIGdldCBpdiAqLwotCWVuY19wcmVw YXJlCXczLCB4MiwgeDUKKwllbmNfcHJlcGFyZQl3MywgeDIsIHg2CiAKIC5MY2JjZW5jbG9vcDoK IAlsZDEJCXt2MS4xNmJ9LCBbeDFdLCAjMTYJCS8qIGdldCBuZXh0IHB0IGJsb2NrICovCiAJZW9y CQl2MC4xNmIsIHYwLjE2YiwgdjEuMTZiCQkvKiAuLmFuZCB4b3Igd2l0aCBpdiAqLwotCWVuY3J5 cHRfYmxvY2sJdjAsIHczLCB4MiwgeDUsIHc2CisJZW5jcnlwdF9ibG9jawl2MCwgdzMsIHgyLCB4 NiwgdzcKIAlzdDEJCXt2MC4xNmJ9LCBbeDBdLCAjMTYKIAlzdWJzCQl3NCwgdzQsICMxCiAJYm5l CQkuTGNiY2VuY2xvb3AKKwlzdDEJCXt2MC4xNmJ9LCBbeDVdCQkJLyogcmV0dXJuIGl2ICovCiAJ cmV0CiBBRVNfRU5EUFJPQyhhZXNfY2JjX2VuY3J5cHQpCiAKQEAgLTIxMSw3ICsyMTIsNyBAQCBB RVNfRU5UUlkoYWVzX2NiY19kZWNyeXB0KQogCWNiegkJdzYsIC5MY2JjZGVjbG9vcE54CiAKIAls ZDEJCXt2Ny4xNmJ9LCBbeDVdCQkJLyogZ2V0IGl2ICovCi0JZGVjX3ByZXBhcmUJdzMsIHgyLCB4 NQorCWRlY19wcmVwYXJlCXczLCB4MiwgeDYKIAogLkxjYmNkZWNsb29wTng6CiAjaWYgSU5URVJM RUFWRSA+PSAyCkBAIC0yNDgsNyArMjQ5LDcgQEAgQUVTX0VOVFJZKGFlc19jYmNfZGVjcnlwdCkK IC5MY2JjZGVjbG9vcDoKIAlsZDEJCXt2MS4xNmJ9LCBbeDFdLCAjMTYJCS8qIGdldCBuZXh0IGN0 IGJsb2NrICovCiAJbW92CQl2MC4xNmIsIHYxLjE2YgkJCS8qIC4uLmFuZCBjb3B5IHRvIHYwICov Ci0JZGVjcnlwdF9ibG9jawl2MCwgdzMsIHgyLCB4NSwgdzYKKwlkZWNyeXB0X2Jsb2NrCXYwLCB3 MywgeDIsIHg2LCB3NwogCWVvcgkJdjAuMTZiLCB2MC4xNmIsIHY3LjE2YgkJLyogeG9yIHdpdGgg aXYgPT4gcHQgKi8KIAltb3YJCXY3LjE2YiwgdjEuMTZiCQkJLyogY3QgaXMgbmV4dCBpdiAqLwog CXN0MQkJe3YwLjE2Yn0sIFt4MF0sICMxNgpAQCAtMjU2LDYgKzI1Nyw3IEBAIEFFU19FTlRSWShh ZXNfY2JjX2RlY3J5cHQpCiAJYm5lCQkuTGNiY2RlY2xvb3AKIC5MY2JjZGVjb3V0OgogCUZSQU1F X1BPUAorCXN0MQkJe3Y3LjE2Yn0sIFt4NV0JCQkvKiByZXR1cm4gaXYgKi8KIAlyZXQKIEFFU19F TkRQUk9DKGFlc19jYmNfZGVjcnlwdCkKIApAQCAtMjY3LDI0ICsyNjksMTUgQEAgQUVTX0VORFBS T0MoYWVzX2NiY19kZWNyeXB0KQogCiBBRVNfRU5UUlkoYWVzX2N0cl9lbmNyeXB0KQogCUZSQU1F X1BVU0gKLQljYm56CQl3NiwgLkxjdHJmaXJzdAkJLyogMXN0IHRpbWUgYXJvdW5kPyAqLwotCXVt b3YJCXg1LCB2NC5kWzFdCQkvKiBrZWVwIHN3YWJiZWQgY3RyIGluIHJlZyAqLwotCXJldgkJeDUs IHg1Ci0jaWYgSU5URVJMRUFWRSA+PSAyCi0JY21uCQl3NSwgdzQJCQkvKiAzMiBiaXQgb3ZlcmZs b3c/ICovCi0JYmNzCQkuTGN0cmluYwotCWFkZAkJeDUsIHg1LCAjMQkJLyogaW5jcmVtZW50IEJF IGN0ciAqLwotCWIJCS5MY3RyaW5jTngKLSNlbHNlCi0JYgkJLkxjdHJpbmMKLSNlbmRpZgotLkxj dHJmaXJzdDoKKwljYnoJCXc2LCAuTGN0cm5vdGZpcnN0CS8qIDFzdCB0aW1lIGFyb3VuZD8gKi8K IAllbmNfcHJlcGFyZQl3MywgeDIsIHg2CiAJbGQxCQl7djQuMTZifSwgW3g1XQotCXVtb3YJCXg1 LCB2NC5kWzFdCQkvKiBrZWVwIHN3YWJiZWQgY3RyIGluIHJlZyAqLwotCXJldgkJeDUsIHg1CisK Ky5MY3Rybm90Zmlyc3Q6CisJdW1vdgkJeDgsIHY0LmRbMV0JCS8qIGtlZXAgc3dhYmJlZCBjdHIg aW4gcmVnICovCisJcmV2CQl4OCwgeDgKICNpZiBJTlRFUkxFQVZFID49IDIKLQljbW4JCXc1LCB3 NAkJCS8qIDMyIGJpdCBvdmVyZmxvdz8gKi8KKwljbW4JCXc4LCB3NAkJCS8qIDMyIGJpdCBvdmVy Zmxvdz8gKi8KIAliY3MJCS5MY3RybG9vcAogLkxjdHJsb29wTng6CiAJc3VicwkJdzQsIHc0LCAj SU5URVJMRUFWRQpAQCAtMjkyLDExICsyODUsMTEgQEAgQUVTX0VOVFJZKGFlc19jdHJfZW5jcnlw dCkKICNpZiBJTlRFUkxFQVZFID09IDIKIAltb3YJCXYwLjhiLCB2NC44YgogCW1vdgkJdjEuOGIs IHY0LjhiCi0JcmV2CQl4NywgeDUKLQlhZGQJCXg1LCB4NSwgIzEKKwlyZXYJCXg3LCB4OAorCWFk ZAkJeDgsIHg4LCAjMQogCWlucwkJdjAuZFsxXSwgeDcKLQlyZXYJCXg3LCB4NQotCWFkZAkJeDUs IHg1LCAjMQorCXJldgkJeDcsIHg4CisJYWRkCQl4OCwgeDgsICMxCiAJaW5zCQl2MS5kWzFdLCB4 NwogCWxkMQkJe3YyLjE2Yi12My4xNmJ9LCBbeDFdLCAjMzIJLyogZ2V0IDIgaW5wdXQgYmxvY2tz ICovCiAJZG9fZW5jcnlwdF9ibG9jazJ4CkBAIC0zMDUsNyArMjk4LDcgQEAgQUVTX0VOVFJZKGFl c19jdHJfZW5jcnlwdCkKIAlzdDEJCXt2MC4xNmItdjEuMTZifSwgW3gwXSwgIzMyCiAjZWxzZQog CWxkcgkJcTgsID0weDMwMDAwMDAwMjAwMDAwMDAxCS8qIGFkZGVuZHMgMSwyLDNbLDBdICovCi0J ZHVwCQl2Ny40cywgdzUKKwlkdXAJCXY3LjRzLCB3OAogCW1vdgkJdjAuMTZiLCB2NC4xNmIKIAlh ZGQJCXY3LjRzLCB2Ny40cywgdjguNHMKIAltb3YJCXYxLjE2YiwgdjQuMTZiCkBAIC0zMjMsMTgg KzMxNiwxMiBAQCBBRVNfRU5UUlkoYWVzX2N0cl9lbmNyeXB0KQogCWVvcgkJdjIuMTZiLCB2Ny4x NmIsIHYyLjE2YgogCWVvcgkJdjMuMTZiLCB2NS4xNmIsIHYzLjE2YgogCXN0MQkJe3YwLjE2Yi12 My4xNmJ9LCBbeDBdLCAjNjQKLQlhZGQJCXg1LCB4NSwgI0lOVEVSTEVBVkUKKwlhZGQJCXg4LCB4 OCwgI0lOVEVSTEVBVkUKICNlbmRpZgotCWNiegkJdzQsIC5MY3Ryb3V0TngKLS5MY3RyaW5jTng6 Ci0JcmV2CQl4NywgeDUKKwlyZXYJCXg3LCB4OAogCWlucwkJdjQuZFsxXSwgeDcKKwljYnoJCXc0 LCAuTGN0cm91dAogCWIJCS5MY3RybG9vcE54Ci0uTGN0cm91dE54OgotCXN1YgkJeDUsIHg1LCAj MQotCXJldgkJeDcsIHg1Ci0JaW5zCQl2NC5kWzFdLCB4NwotCWIJCS5MY3Ryb3V0CiAuTGN0cjF4 OgogCWFkZHMJCXc0LCB3NCwgI0lOVEVSTEVBVkUKIAliZXEJCS5MY3Ryb3V0CkBAIC0zNDIsMzAg KzMyOSwzOSBAQCBBRVNfRU5UUlkoYWVzX2N0cl9lbmNyeXB0KQogLkxjdHJsb29wOgogCW1vdgkJ djAuMTZiLCB2NC4xNmIKIAllbmNyeXB0X2Jsb2NrCXYwLCB3MywgeDIsIHg2LCB3NworCisJYWRk cwkJeDgsIHg4LCAjMQkJLyogaW5jcmVtZW50IEJFIGN0ciAqLworCXJldgkJeDcsIHg4CisJaW5z CQl2NC5kWzFdLCB4NworCWJjcwkJLkxjdHJjYXJyeQkJLyogb3ZlcmZsb3c/ICovCisKKy5MY3Ry Y2Fycnlkb25lOgogCXN1YnMJCXc0LCB3NCwgIzEKIAlibWkJCS5MY3RyaGFsZmJsb2NrCQkvKiBi bG9ja3MgPCAwIG1lYW5zIDEvMiBibG9jayAqLwogCWxkMQkJe3YzLjE2Yn0sIFt4MV0sICMxNgog CWVvcgkJdjMuMTZiLCB2MC4xNmIsIHYzLjE2YgogCXN0MQkJe3YzLjE2Yn0sIFt4MF0sICMxNgot CWJlcQkJLkxjdHJvdXQKLS5MY3RyaW5jOgotCWFkZHMJCXg1LCB4NSwgIzEJCS8qIGluY3JlbWVu dCBCRSBjdHIgKi8KLQlyZXYJCXg3LCB4NQotCWlucwkJdjQuZFsxXSwgeDcKLQliY2MJCS5MY3Ry bG9vcAkJLyogbm8gb3ZlcmZsb3c/ICovCi0JdW1vdgkJeDcsIHY0LmRbMF0JCS8qIGxvYWQgdXBw ZXIgd29yZCBvZiBjdHIgICovCi0JcmV2CQl4NywgeDcJCQkvKiAuLi4gdG8gaGFuZGxlIHRoZSBj YXJyeSAqLwotCWFkZAkJeDcsIHg3LCAjMQotCXJldgkJeDcsIHg3Ci0JaW5zCQl2NC5kWzBdLCB4 NwotCWIJCS5MY3RybG9vcAorCWJuZQkJLkxjdHJsb29wCisKKy5MY3Ryb3V0OgorCXN0MQkJe3Y0 LjE2Yn0sIFt4NV0JCS8qIHJldHVybiBuZXh0IENUUiB2YWx1ZSAqLworCUZSQU1FX1BPUAorCXJl dAorCiAuTGN0cmhhbGZibG9jazoKIAlsZDEJCXt2My44Yn0sIFt4MV0KIAllb3IJCXYzLjhiLCB2 MC44YiwgdjMuOGIKIAlzdDEJCXt2My44Yn0sIFt4MF0KLS5MY3Ryb3V0OgogCUZSQU1FX1BPUAog CXJldAorCisuTGN0cmNhcnJ5OgorCXVtb3YJCXg3LCB2NC5kWzBdCQkvKiBsb2FkIHVwcGVyIHdv cmQgb2YgY3RyICAqLworCXJldgkJeDcsIHg3CQkJLyogLi4uIHRvIGhhbmRsZSB0aGUgY2Fycnkg Ki8KKwlhZGQJCXg3LCB4NywgIzEKKwlyZXYJCXg3LCB4NworCWlucwkJdjQuZFswXSwgeDcKKwli CQkuTGN0cmNhcnJ5ZG9uZQogQUVTX0VORFBST0MoYWVzX2N0cl9lbmNyeXB0KQogCS5sdG9yZwog CkBAIC0zODYsNyArMzgyLDggQEAgQUVTX0VORFBST0MoYWVzX2N0cl9lbmNyeXB0KQogCS5lbmRt CiAKIC5MeHRzX211bF94OgotCS53b3JkCQkxLCAwLCAweDg3LCAwCitDUFVfTEUoCS5xdWFkCQkx LCAweDg3CQkpCitDUFVfQkUoCS5xdWFkCQkweDg3LCAxCQkpCiAKIEFFU19FTlRSWShhZXNfeHRz X2VuY3J5cHQpCiAJRlJBTUVfUFVTSApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcnlwdG8vYWVz LW5lb24uUyBiL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1uZW9uLlMKaW5kZXggYjkzMTcwZTFjYzkz Li44NWYwN2VhZDdjNWMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvY3J5cHRvL2Flcy1uZW9uLlMK KysrIGIvYXJjaC9hcm02NC9jcnlwdG8vYWVzLW5lb24uUwpAQCAtOSw2ICs5LDcgQEAKICAqLwog CiAjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUgPGFzbS9hc3NlbWJsZXIuaD4K IAogI2RlZmluZSBBRVNfRU5UUlkoZnVuYykJCUVOVFJZKG5lb25fICMjIGZ1bmMpCiAjZGVmaW5l IEFFU19FTkRQUk9DKGZ1bmMpCUVORFBST0MobmVvbl8gIyMgZnVuYykKQEAgLTgzLDEzICs4NCwx MyBAQAogCS5lbmRtCiAKIAkubWFjcm8JCWRvX2Jsb2NrLCBlbmMsIGluLCByb3VuZHMsIHJrLCBy a3AsIGkKLQlsZDEJCXt2MTUuMTZifSwgW1xya10KKwlsZDEJCXt2MTUuNHN9LCBbXHJrXQogCWFk ZAkJXHJrcCwgXHJrLCAjMTYKIAltb3YJCVxpLCBccm91bmRzCiAxMTExOgllb3IJCVxpblwoKS4x NmIsIFxpblwoKS4xNmIsIHYxNS4xNmIJCS8qIF5yb3VuZCBrZXkgKi8KIAl0YmwJCVxpblwoKS4x NmIsIHtcaW5cKCkuMTZifSwgdjEzLjE2YgkvKiBTaGlmdFJvd3MgKi8KIAlzdWJfYnl0ZXMJXGlu Ci0JbGQxCQl7djE1LjE2Yn0sIFtccmtwXSwgIzE2CisJbGQxCQl7djE1LjRzfSwgW1xya3BdLCAj MTYKIAlzdWJzCQlcaSwgXGksICMxCiAJYmVxCQkyMjIyZgogCS5pZgkJXGVuYyA9PSAxCkBAIC0y MjksNyArMjMwLDcgQEAKIAkuZW5kbQogCiAJLm1hY3JvCQlkb19ibG9ja18yeCwgZW5jLCBpbjAs IGluMSByb3VuZHMsIHJrLCBya3AsIGkKLQlsZDEJCXt2MTUuMTZifSwgW1xya10KKwlsZDEJCXt2 MTUuNHN9LCBbXHJrXQogCWFkZAkJXHJrcCwgXHJrLCAjMTYKIAltb3YJCVxpLCBccm91bmRzCiAx MTExOgllb3IJCVxpbjBcKCkuMTZiLCBcaW4wXCgpLjE2YiwgdjE1LjE2YgkvKiBecm91bmQga2V5 ICovCkBAIC0yMzcsNyArMjM4LDcgQEAKIAlzdWJfYnl0ZXNfMngJXGluMCwgXGluMQogCXRibAkJ XGluMFwoKS4xNmIsIHtcaW4wXCgpLjE2Yn0sIHYxMy4xNmIJLyogU2hpZnRSb3dzICovCiAJdGJs CQlcaW4xXCgpLjE2Yiwge1xpbjFcKCkuMTZifSwgdjEzLjE2YgkvKiBTaGlmdFJvd3MgKi8KLQls ZDEJCXt2MTUuMTZifSwgW1xya3BdLCAjMTYKKwlsZDEJCXt2MTUuNHN9LCBbXHJrcF0sICMxNgog CXN1YnMJCVxpLCBcaSwgIzEKIAliZXEJCTIyMjJmCiAJLmlmCQlcZW5jID09IDEKQEAgLTI1NCw3 ICsyNTUsNyBAQAogCS5lbmRtCiAKIAkubWFjcm8JCWRvX2Jsb2NrXzR4LCBlbmMsIGluMCwgaW4x LCBpbjIsIGluMywgcm91bmRzLCByaywgcmtwLCBpCi0JbGQxCQl7djE1LjE2Yn0sIFtccmtdCisJ bGQxCQl7djE1LjRzfSwgW1xya10KIAlhZGQJCVxya3AsIFxyaywgIzE2CiAJbW92CQlcaSwgXHJv dW5kcwogMTExMToJZW9yCQlcaW4wXCgpLjE2YiwgXGluMFwoKS4xNmIsIHYxNS4xNmIJLyogXnJv dW5kIGtleSAqLwpAQCAtMjY2LDcgKzI2Nyw3IEBACiAJdGJsCQlcaW4xXCgpLjE2Yiwge1xpbjFc KCkuMTZifSwgdjEzLjE2YgkvKiBTaGlmdFJvd3MgKi8KIAl0YmwJCVxpbjJcKCkuMTZiLCB7XGlu MlwoKS4xNmJ9LCB2MTMuMTZiCS8qIFNoaWZ0Um93cyAqLwogCXRibAkJXGluM1woKS4xNmIsIHtc aW4zXCgpLjE2Yn0sIHYxMy4xNmIJLyogU2hpZnRSb3dzICovCi0JbGQxCQl7djE1LjE2Yn0sIFtc cmtwXSwgIzE2CisJbGQxCQl7djE1LjRzfSwgW1xya3BdLCAjMTYKIAlzdWJzCQlcaSwgXGksICMx CiAJYmVxCQkyMjIyZgogCS5pZgkJXGVuYyA9PSAxCkBAIC0zMDYsMTIgKzMwNywxNiBAQAogCS50 ZXh0CiAJLmFsaWduCQk0CiAuTEZvcndhcmRfU2hpZnRSb3dzOgotCS5ieXRlCQkweDAsIDB4NSwg MHhhLCAweGYsIDB4NCwgMHg5LCAweGUsIDB4MwotCS5ieXRlCQkweDgsIDB4ZCwgMHgyLCAweDcs IDB4YywgMHgxLCAweDYsIDB4YgorQ1BVX0xFKAkuYnl0ZQkJMHgwLCAweDUsIDB4YSwgMHhmLCAw eDQsIDB4OSwgMHhlLCAweDMJKQorQ1BVX0xFKAkuYnl0ZQkJMHg4LCAweGQsIDB4MiwgMHg3LCAw eGMsIDB4MSwgMHg2LCAweGIJKQorQ1BVX0JFKAkuYnl0ZQkJMHhiLCAweDYsIDB4MSwgMHhjLCAw eDcsIDB4MiwgMHhkLCAweDgJKQorQ1BVX0JFKAkuYnl0ZQkJMHgzLCAweGUsIDB4OSwgMHg0LCAw eGYsIDB4YSwgMHg1LCAweDAJKQogCiAuTFJldmVyc2VfU2hpZnRSb3dzOgotCS5ieXRlCQkweDAs IDB4ZCwgMHhhLCAweDcsIDB4NCwgMHgxLCAweGUsIDB4YgotCS5ieXRlCQkweDgsIDB4NSwgMHgy LCAweGYsIDB4YywgMHg5LCAweDYsIDB4MworQ1BVX0xFKAkuYnl0ZQkJMHgwLCAweGQsIDB4YSwg MHg3LCAweDQsIDB4MSwgMHhlLCAweGIJKQorQ1BVX0xFKAkuYnl0ZQkJMHg4LCAweDUsIDB4Miwg MHhmLCAweGMsIDB4OSwgMHg2LCAweDMJKQorQ1BVX0JFKAkuYnl0ZQkJMHgzLCAweDYsIDB4OSwg MHhjLCAweGYsIDB4MiwgMHg1LCAweDgJKQorQ1BVX0JFKAkuYnl0ZQkJMHhiLCAweGUsIDB4MSwg MHg0LCAweDcsIDB4YSwgMHhkLCAweDAJKQogCiAuTEZvcndhcmRfU2JveDoKIAkuYnl0ZQkJMHg2 MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNQpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9jcnlwdG8vZ2hhc2gtY2UtY29yZS5TIGIvYXJjaC9hcm02NC9jcnlwdG8vZ2hh c2gtY2UtY29yZS5TCmluZGV4IGRjNDU3MDE1ODg0ZS4uZjBiYjlmMGI1MjRmIDEwMDY0NAotLS0g YS9hcmNoL2FybTY0L2NyeXB0by9naGFzaC1jZS1jb3JlLlMKKysrIGIvYXJjaC9hcm02NC9jcnlw dG8vZ2hhc2gtY2UtY29yZS5TCkBAIC0yOSw4ICsyOSw4IEBACiAJICoJCQkgICBzdHJ1Y3QgZ2hh c2hfa2V5IGNvbnN0ICprLCBjb25zdCBjaGFyICpoZWFkKQogCSAqLwogRU5UUlkocG11bGxfZ2hh c2hfdXBkYXRlKQotCWxkMQkJe1NIQVNILjE2Yn0sIFt4M10KLQlsZDEJCXtYTC4xNmJ9LCBbeDFd CisJbGQxCQl7U0hBU0guMmR9LCBbeDNdCisJbGQxCQl7WEwuMmR9LCBbeDFdCiAJbW92aQkJTUFT Sy4xNmIsICMweGUxCiAJZXh0CQlTSEFTSDIuMTZiLCBTSEFTSC4xNmIsIFNIQVNILjE2YiwgIzgK IAlzaGwJCU1BU0suMmQsIE1BU0suMmQsICM1NwpAQCAtNzQsNiArNzQsNiBAQCBDUFVfTEUoCXJl djY0CQlUMS4xNmIsIFQxLjE2YgkpCiAKIAljYm56CQl3MCwgMGIKIAotCXN0MQkJe1hMLjE2Yn0s IFt4MV0KKwlzdDEJCXtYTC4yZH0sIFt4MV0KIAlyZXQKIEVORFBST0MocG11bGxfZ2hhc2hfdXBk YXRlKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcnlwdG8vc2hhMS1jZS1jb3JlLlMgYi9hcmNo L2FybTY0L2NyeXB0by9zaGExLWNlLWNvcmUuUwppbmRleCAwOWQ1N2Q5ODYwOWMuLjFmYjcwODkz Y2U1NSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9jcnlwdG8vc2hhMS1jZS1jb3JlLlMKKysrIGIv YXJjaC9hcm02NC9jcnlwdG8vc2hhMS1jZS1jb3JlLlMKQEAgLTc4LDcgKzc4LDcgQEAgRU5UUlko c2hhMV9jZV90cmFuc2Zvcm0pCiAJbGQxcgkJe2szLjRzfSwgW3g2XQogCiAJLyogbG9hZCBzdGF0 ZSAqLwotCWxkcgkJZGdhLCBbeDJdCisJbGQxCQl7ZGdhdi40c30sIFt4Ml0KIAlsZHIJCWRnYiwg W3gyLCAjMTZdCiAKIAkvKiBsb2FkIHBhcnRpYWwgc3RhdGUgKGlmIHN1cHBsaWVkKSAqLwpAQCAt MTQ3LDcgKzE0Nyw3IEBAIENQVV9MRSgJcmV2MzIJCXYxMS4xNmIsIHYxMS4xNmIJKQogCWIJCTJi CiAKIAkvKiBzdG9yZSBuZXcgc3RhdGUgKi8KLTM6CXN0cgkJZGdhLCBbeDJdCiszOglzdDEJCXtk Z2F2LjRzfSwgW3gyXQogCXN0cgkJZGdiLCBbeDIsICMxNl0KIAlyZXQKIEVORFBST0Moc2hhMV9j ZV90cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NyeXB0by9zaGEyLWNlLWNvcmUu UyBiL2FyY2gvYXJtNjQvY3J5cHRvL3NoYTItY2UtY29yZS5TCmluZGV4IDdmMjlmYzAzMWVhOC4u MGFjZDYxZWY4Y2IyIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2NyeXB0by9zaGEyLWNlLWNvcmUu UworKysgYi9hcmNoL2FybTY0L2NyeXB0by9zaGEyLWNlLWNvcmUuUwpAQCAtODUsNyArODUsNyBA QCBFTlRSWShzaGEyX2NlX3RyYW5zZm9ybSkKIAlsZDEJCXt2MTIuNHMtdjE1LjRzfSwgW3g4XQog CiAJLyogbG9hZCBzdGF0ZSAqLwotCWxkcAkJZGdhLCBkZ2IsIFt4Ml0KKwlsZDEJCXtkZ2F2LjRz LCBkZ2J2LjRzfSwgW3gyXQogCiAJLyogbG9hZCBwYXJ0aWFsIGlucHV0IChpZiBzdXBwbGllZCkg Ki8KIAljYnoJCXgzLCAwZgpAQCAtMTUxLDYgKzE1MSw2IEBAIENQVV9MRSgJcmV2MzIJCXYxOS4x NmIsIHYxOS4xNmIJKQogCWIJCTJiCiAKIAkvKiBzdG9yZSBuZXcgc3RhdGUgKi8KLTM6CXN0cAkJ ZGdhLCBkZ2IsIFt4Ml0KKzM6CXN0MQkJe2RnYXYuNHMsIGRnYnYuNHN9LCBbeDJdCiAJcmV0CiBF TkRQUk9DKHNoYTJfY2VfdHJhbnNmb3JtKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRl L3VhcGkvYXNtL3B0cmFjZS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5o CmluZGV4IDY5MTM2NDNiYmU1NC4uYzEzNmZkNTNjODQ3IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0 L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNlLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkv YXNtL3B0cmFjZS5oCkBAIC03NSw2ICs3NSw3IEBAIHN0cnVjdCB1c2VyX2Zwc2ltZF9zdGF0ZSB7 CiAJX191aW50MTI4X3QJdnJlZ3NbMzJdOwogCV9fdTMyCQlmcHNyOwogCV9fdTMyCQlmcGNyOwor CV9fdTMyCQlfX3Jlc2VydmVkWzJdOwogfTsKIAogc3RydWN0IHVzZXJfaHdkZWJ1Z19zdGF0ZSB7 CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS5TIGIvYXJjaC9hcm02NC9rZXJu ZWwvZW50cnkuUwppbmRleCA4OTkzYTY5MDk5YzcuLjY3NzM4NzM3YmU5ZCAxMDA2NDQKLS0tIGEv YXJjaC9hcm02NC9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS5T CkBAIC00OTEsNyArNDkxLDcgQEAgZWwwX2ludjoKIAltb3YJeDAsIHNwCiAJbW92CXgxLCAjQkFE X1NZTkMKIAltcnMJeDIsIGVzcl9lbDEKLQliCWJhZF9tb2RlCisJYgliYWRfZWwwX3N5bmMKIEVO RFBST0MoZWwwX3N5bmMpCiAKIAkuYWxpZ24JNgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJu ZWwvcHRyYWNlLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYwppbmRleCBkMmI5YTNmNzQ1 N2QuLjA3YzVmNjNhMzM2MiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMK KysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMKQEAgLTQ0Niw2ICs0NDYsOCBAQCBzdGF0 aWMgaW50IGh3X2JyZWFrX3NldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhcmdldCwKIAkvKiAoYWRk cmVzcywgY3RybCkgcmVnaXN0ZXJzICovCiAJbGltaXQgPSByZWdzZXQtPm4gKiByZWdzZXQtPnNp emU7CiAJd2hpbGUgKGNvdW50ICYmIG9mZnNldCA8IGxpbWl0KSB7CisJCWlmIChjb3VudCA8IFBU UkFDRV9IQlBfQUREUl9TWikKKwkJCXJldHVybiAtRUlOVkFMOwogCQlyZXQgPSB1c2VyX3JlZ3Nl dF9jb3B5aW4oJnBvcywgJmNvdW50LCAma2J1ZiwgJnVidWYsICZhZGRyLAogCQkJCQkgb2Zmc2V0 LCBvZmZzZXQgKyBQVFJBQ0VfSEJQX0FERFJfU1opOwogCQlpZiAocmV0KQpAQCAtNDU1LDYgKzQ1 Nyw4IEBAIHN0YXRpYyBpbnQgaHdfYnJlYWtfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0 LAogCQkJcmV0dXJuIHJldDsKIAkJb2Zmc2V0ICs9IFBUUkFDRV9IQlBfQUREUl9TWjsKIAorCQlp ZiAoIWNvdW50KQorCQkJYnJlYWs7CiAJCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlpbigmcG9zLCAm Y291bnQsICZrYnVmLCAmdWJ1ZiwgJmN0cmwsCiAJCQkJCSBvZmZzZXQsIG9mZnNldCArIFBUUkFD RV9IQlBfQ1RSTF9TWik7CiAJCWlmIChyZXQpCkBAIC00OTEsNyArNDk1LDcgQEAgc3RhdGljIGlu dCBncHJfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LCBjb25zdCBzdHJ1Y3QgdXNlcl9y ZWdzZXQgKnJlZ3NldCwKIAkJICAgY29uc3Qgdm9pZCAqa2J1ZiwgY29uc3Qgdm9pZCBfX3VzZXIg KnVidWYpCiB7CiAJaW50IHJldDsKLQlzdHJ1Y3QgdXNlcl9wdF9yZWdzIG5ld3JlZ3M7CisJc3Ry dWN0IHVzZXJfcHRfcmVncyBuZXdyZWdzID0gdGFza19wdF9yZWdzKHRhcmdldCktPnVzZXJfcmVn czsKIAogCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlpbigmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1 ZiwgJm5ld3JlZ3MsIDAsIC0xKTsKIAlpZiAocmV0KQpAQCAtNTIxLDcgKzUyNSw4IEBAIHN0YXRp YyBpbnQgZnByX3NldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhcmdldCwgY29uc3Qgc3RydWN0IHVz ZXJfcmVnc2V0ICpyZWdzZXQsCiAJCSAgIGNvbnN0IHZvaWQgKmtidWYsIGNvbnN0IHZvaWQgX191 c2VyICp1YnVmKQogewogCWludCByZXQ7Ci0Jc3RydWN0IHVzZXJfZnBzaW1kX3N0YXRlIG5ld3N0 YXRlOworCXN0cnVjdCB1c2VyX2Zwc2ltZF9zdGF0ZSBuZXdzdGF0ZSA9CisJCXRhcmdldC0+dGhy ZWFkLmZwc2ltZF9zdGF0ZS51c2VyX2Zwc2ltZDsKIAogCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlp bigmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1ZiwgJm5ld3N0YXRlLCAwLCAtMSk7CiAJaWYgKHJl dCkKQEAgLTU0NSw3ICs1NTAsNyBAQCBzdGF0aWMgaW50IHRsc19zZXQoc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXJnZXQsIGNvbnN0IHN0cnVjdCB1c2VyX3JlZ3NldCAqcmVnc2V0LAogCQkgICBjb25z dCB2b2lkICprYnVmLCBjb25zdCB2b2lkIF9fdXNlciAqdWJ1ZikKIHsKIAlpbnQgcmV0OwotCXVu c2lnbmVkIGxvbmcgdGxzOworCXVuc2lnbmVkIGxvbmcgdGxzID0gdGFyZ2V0LT50aHJlYWQudHBf dmFsdWU7CiAKIAlyZXQgPSB1c2VyX3JlZ3NldF9jb3B5aW4oJnBvcywgJmNvdW50LCAma2J1Ziwg JnVidWYsICZ0bHMsIDAsIC0xKTsKIAlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9r ZXJuZWwvdHJhcHMuYyBiL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMKaW5kZXggYzQzY2ZhOWI4 MzA0Li5jMWMyYWQ2YTFjOTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMK KysrIGIvYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYwpAQCAtMzA5LDE2ICszMDksMzMgQEAgYXNt bGlua2FnZSBsb25nIGRvX25pX3N5c2NhbGwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB9CiAKIC8q Ci0gKiBiYWRfbW9kZSBoYW5kbGVzIHRoZSBpbXBvc3NpYmxlIGNhc2UgaW4gdGhlIGV4Y2VwdGlv biB2ZWN0b3IuCisgKiBiYWRfbW9kZSBoYW5kbGVzIHRoZSBpbXBvc3NpYmxlIGNhc2UgaW4gdGhl IGV4Y2VwdGlvbiB2ZWN0b3IuIFRoaXMgaXMgYWx3YXlzCisgKiBmYXRhbC4KICAqLwogYXNtbGlu a2FnZSB2b2lkIGJhZF9tb2RlKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgcmVhc29uLCB1bnNp Z25lZCBpbnQgZXNyKQogewotCXNpZ2luZm9fdCBpbmZvOwotCXZvaWQgX191c2VyICpwYyA9ICh2 b2lkIF9fdXNlciAqKWluc3RydWN0aW9uX3BvaW50ZXIocmVncyk7CiAJY29uc29sZV92ZXJib3Nl KCk7CiAKIAlwcl9jcml0KCJCYWQgbW9kZSBpbiAlcyBoYW5kbGVyIGRldGVjdGVkLCBjb2RlIDB4 JTA4eFxuIiwKIAkJaGFuZGxlcltyZWFzb25dLCBlc3IpOworCisJZGllKCJPb3BzIC0gYmFkIG1v ZGUiLCByZWdzLCAwKTsKKwlsb2NhbF9pcnFfZGlzYWJsZSgpOworCXBhbmljKCJiYWQgbW9kZSIp OworfQorCisvKgorICogYmFkX2VsMF9zeW5jIGhhbmRsZXMgdW5leHBlY3RlZCwgYnV0IHBvdGVu dGlhbGx5IHJlY292ZXJhYmxlIHN5bmNocm9ub3VzCisgKiBleGNlcHRpb25zIHRha2VuIGZyb20g RUwwLiBVbmxpa2UgYmFkX21vZGUsIHRoaXMgcmV0dXJucy4KKyAqLworYXNtbGlua2FnZSB2b2lk IGJhZF9lbDBfc3luYyhzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHJlYXNvbiwgdW5zaWduZWQg aW50IGVzcikKK3sKKwlzaWdpbmZvX3QgaW5mbzsKKwl2b2lkIF9fdXNlciAqcGMgPSAodm9pZCBf X3VzZXIgKilpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpOworCWNvbnNvbGVfdmVyYm9zZSgpOwor CisJcHJfY3JpdCgiQmFkIEVMMCBzeW5jaHJvbm91cyBleGNlcHRpb24gZGV0ZWN0ZWQgb24gQ1BV JWQsIGNvZGUgMHglMDh4XG4iLAorCQlzbXBfcHJvY2Vzc29yX2lkKCksIGVzcik7CiAJX19zaG93 X3JlZ3MocmVncyk7CiAKIAlpbmZvLnNpX3NpZ25vID0gU0lHSUxMOwpAQCAtMzI2LDcgKzM0Mywx MCBAQCBhc21saW5rYWdlIHZvaWQgYmFkX21vZGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBy ZWFzb24sIHVuc2lnbmVkIGludCBlc3IpCiAJaW5mby5zaV9jb2RlICA9IElMTF9JTExPUEM7CiAJ aW5mby5zaV9hZGRyICA9IHBjOwogCi0JYXJtNjRfbm90aWZ5X2RpZSgiT29wcyAtIGJhZCBtb2Rl IiwgcmVncywgJmluZm8sIDApOworCWN1cnJlbnQtPnRocmVhZC5mYXVsdF9hZGRyZXNzID0gMDsK KwljdXJyZW50LT50aHJlYWQuZmF1bHRfY29kZSA9IDA7CisKKwlmb3JjZV9zaWdfaW5mbyhpbmZv LnNpX3NpZ25vLCAmaW5mbywgY3VycmVudCk7CiB9CiAKIHZvaWQgX19wdGVfZXJyb3IoY29uc3Qg Y2hhciAqZmlsZSwgaW50IGxpbmUsIHVuc2lnbmVkIGxvbmcgdmFsKQpkaWZmIC0tZ2l0IGEvYXJj aC9jcmlzL2Jvb3QvcmVzY3VlL01ha2VmaWxlIGIvYXJjaC9jcmlzL2Jvb3QvcmVzY3VlL01ha2Vm aWxlCmluZGV4IDUyYmQwYmQxZGQyMi4uZDk4ZWRiYjMwYTE4IDEwMDY0NAotLS0gYS9hcmNoL2Ny aXMvYm9vdC9yZXNjdWUvTWFrZWZpbGUKKysrIGIvYXJjaC9jcmlzL2Jvb3QvcmVzY3VlL01ha2Vm aWxlCkBAIC0xMCw2ICsxMCw5IEBACiAKIGFzZmxhZ3MteSArPSAkKExJTlVYSU5DTFVERSkKIGNj ZmxhZ3MteSArPSAtTzIgJChMSU5VWElOQ0xVREUpCisKK2lmZGVmIENPTkZJR19FVFJBWF9BWElT RkxBU0hNQVAKKwogYXJjaC0kKENPTkZJR19FVFJBWF9BUkNIX1YxMCkgPSB2MTAKIGFyY2gtJChD T05GSUdfRVRSQVhfQVJDSF9WMzIpID0gdjMyCiAKQEAgLTI4LDYgKzMxLDExIEBAICQob2JqKS9y ZXNjdWUuYmluOiAkKG9iaikvcmVzY3VlLm8gRk9SQ0UKIAkkKGNhbGwgaWZfY2hhbmdlZCxvYmpj b3B5KQogCWNwIC1wICQob2JqKS9yZXNjdWUuYmluICQob2JqdHJlZSkKIAorZWxzZQorJChvYmop L3Jlc2N1ZS5iaW46CisKK2VuZGlmCisKICQob2JqKS90ZXN0cmVzY3VlLmJpbjogJChvYmopL3Rl c3RyZXNjdWUubwogCSQoT0JKQ09QWSkgJChPQkpDT1BZRkxBR1MpICQob2JqKS90ZXN0cmVzY3Vl Lm8gdHIuYmluCiAjIFBhZCBpdCB0byA3ODQgYnl0ZXMKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9r dm0va3ZtX21pcHMuYyBiL2FyY2gvbWlwcy9rdm0va3ZtX21pcHMuYwppbmRleCA3MmFhZDJhOWE2 YjQuLjI2M2M2YzFjOWJiYiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2t2bS9rdm1fbWlwcy5jCisr KyBiL2FyY2gvbWlwcy9rdm0va3ZtX21pcHMuYwpAQCAtMzQzLDggKzM0Myw4IEBAIHN0cnVjdCBr dm1fdmNwdSAqa3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBp bnQgaWQpCiAJICAgICAgIG1pcHMzMl9HdWVzdEV4Y2VwdGlvbkVuZCAtIG1pcHMzMl9HdWVzdEV4 Y2VwdGlvbik7CiAKIAkvKiBJbnZhbGlkYXRlIHRoZSBpY2FjaGUgZm9yIHRoZXNlIHJhbmdlcyAq LwotCWxvY2FsX2ZsdXNoX2ljYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZylnZWJhc2UsCi0JCQkJ KHVuc2lnbmVkIGxvbmcpZ2ViYXNlICsgQUxJR04oc2l6ZSwgUEFHRV9TSVpFKSk7CisJZmx1c2hf aWNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKWdlYmFzZSwKKwkJCSAgICh1bnNpZ25lZCBsb25n KWdlYmFzZSArIEFMSUdOKHNpemUsIFBBR0VfU0laRSkpOwogCiAJLyogQWxsb2NhdGUgY29tbSBw YWdlIGZvciBndWVzdCBrZXJuZWwsIGEgVExCIHdpbGwgYmUgcmVzZXJ2ZWQgZm9yIG1hcHBpbmcg R1ZBIEAgMHhGRkZGODAwMCB0byB0aGlzIHBhZ2UgKi8KIAl2Y3B1LT5hcmNoLmtzZWcwX2NvbW1w YWdlID0ga3phbGxvYyhQQUdFX1NJWkUgPDwgMSwgR0ZQX0tFUk5FTCk7CmRpZmYgLS1naXQgYS9h cmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9iaXRvcHMuaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNt L2JpdG9wcy5oCmluZGV4IDNmOTQwNmQ5YjlkNi4uZGE4Nzk0MzMyOGE1IDEwMDY0NAotLS0gYS9h cmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9iaXRvcHMuaAorKysgYi9hcmNoL3BhcmlzYy9pbmNsdWRl L2FzbS9iaXRvcHMuaApAQCAtNiw3ICs2LDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8bGludXgv Y29tcGlsZXIuaD4KLSNpbmNsdWRlIDxhc20vdHlwZXMuaD4JCS8qIGZvciBCSVRTX1BFUl9MT05H L1NISUZUX1BFUl9MT05HICovCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNt L2J5dGVvcmRlci5oPgogI2luY2x1ZGUgPGFzbS9iYXJyaWVyLmg+CiAjaW5jbHVkZSA8bGludXgv YXRvbWljLmg+CkBAIC0xNyw2ICsxNywxMiBAQAogICogdG8gaW5jbHVkZS9hc20taTM4Ni9iaXRv cHMuaCBvciBrZXJuZWxkb2MKICAqLwogCisjaWYgX19CSVRTX1BFUl9MT05HID09IDY0CisjZGVm aW5lIFNISUZUX1BFUl9MT05HIDYKKyNlbHNlCisjZGVmaW5lIFNISUZUX1BFUl9MT05HIDUKKyNl bmRpZgorCiAjZGVmaW5lIENIT1BfU0hJRlRDT1VOVCh4KSAoKCh1bnNpZ25lZCBsb25nKSAoeCkp ICYgKEJJVFNfUEVSX0xPTkcgLSAxKSkKIAogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9pbmNs dWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmggYi9hcmNoL3BhcmlzYy9pbmNsdWRlL3VhcGkvYXNt L2JpdHNwZXJsb25nLmgKaW5kZXggNzUxOTZiNDE1ZDNmLi41NDBjOTRkZTQ0MjcgMTAwNjQ0Ci0t LSBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvdWFwaS9hc20vYml0c3BlcmxvbmcuaAorKysgYi9hcmNo L3BhcmlzYy9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgKQEAgLTksMTAgKzksOCBAQAog ICovCiAjaWYgKGRlZmluZWQoX19LRVJORUxfXykgJiYgZGVmaW5lZChDT05GSUdfNjRCSVQpKSB8 fCBkZWZpbmVkIChfX0xQNjRfXykKICNkZWZpbmUgX19CSVRTX1BFUl9MT05HIDY0Ci0jZGVmaW5l IFNISUZUX1BFUl9MT05HIDYKICNlbHNlCiAjZGVmaW5lIF9fQklUU19QRVJfTE9ORyAzMgotI2Rl ZmluZSBTSElGVF9QRVJfTE9ORyA1CiAjZW5kaWYKIAogI2luY2x1ZGUgPGFzbS1nZW5lcmljL2Jp dHNwZXJsb25nLmg+CmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9pbmNsdWRlL3VhcGkvYXNtL3N3 YWIuaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvdWFwaS9hc20vc3dhYi5oCmluZGV4IGU3ODQwM2Ix MjllZi4uOTI4ZTFiYmFjOThmIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL3VhcGkv YXNtL3N3YWIuaAorKysgYi9hcmNoL3BhcmlzYy9pbmNsdWRlL3VhcGkvYXNtL3N3YWIuaApAQCAt MSw2ICsxLDcgQEAKICNpZm5kZWYgX1BBUklTQ19TV0FCX0gKICNkZWZpbmUgX1BBUklTQ19TV0FC X0gKIAorI2luY2x1ZGUgPGFzbS9iaXRzcGVybG9uZy5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+CiAjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KIApAQCAtMzgsNyArMzksNyBAQCBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX191MzIgX19hcmNoX3N3YWIzMihfX3UzMiB4 KQogfQogI2RlZmluZSBfX2FyY2hfc3dhYjMyIF9fYXJjaF9zd2FiMzIKIAotI2lmIEJJVFNfUEVS X0xPTkcgPiAzMgorI2lmIF9fQklUU19QRVJfTE9ORyA+IDMyCiAvKgogKiogRnJvbSAiUEEtUklT QyAyLjAgQXJjaGl0ZWN0dXJlIiwgSFAgUHJvZmVzc2lvbmFsIEJvb2tzLgogKiogU2VlIEFwcGVu ZGl4IEkgcGFnZSA4ICwgIkVuZGlhbiBCeXRlIFN3YXBwaW5nIi4KQEAgLTYxLDYgKzYyLDYgQEAg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTY0IF9fYXJjaF9zd2FiNjQoX191 NjQgeCkKIAlyZXR1cm4geDsKIH0KICNkZWZpbmUgX19hcmNoX3N3YWI2NCBfX2FyY2hfc3dhYjY0 Ci0jZW5kaWYgLyogQklUU19QRVJfTE9ORyA+IDMyICovCisjZW5kaWYgLyogX19CSVRTX1BFUl9M T05HID4gMzIgKi8KIAogI2VuZGlmIC8qIF9QQVJJU0NfU1dBQl9IICovCmRpZmYgLS1naXQgYS9h cmNoL3Bvd2VycGMvYm9vdC9wczMtaGVhZC5TIGIvYXJjaC9wb3dlcnBjL2Jvb3QvcHMzLWhlYWQu UwppbmRleCBiNmZjYmFmNTAyN2IuLjNkYzQ0YjA1ZmI5NyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dl cnBjL2Jvb3QvcHMzLWhlYWQuUworKysgYi9hcmNoL3Bvd2VycGMvYm9vdC9wczMtaGVhZC5TCkBA IC01NywxMSArNTcsNiBAQCBfX3N5c3RlbV9yZXNldF9vdmVybGF5OgogCWJjdHIKIAogMToKLQkv KiBTYXZlIHRoZSB2YWx1ZSBhdCBhZGRyIHplcm8gZm9yIGEgbnVsbCBwb2ludGVyIHdyaXRlIGNo ZWNrIGxhdGVyLiAqLwotCi0JbGkJcjQsIDAKLQlsd3oJcjMsIDAocjQpCi0KIAkvKiBQcmltYXJ5 IGRlbGF5cyB0aGVuIGdvZXMgdG8gX3ppbWFnZV9zdGFydCBpbiB3cmFwcGVyLiAqLwogCiAJb3IJ MzEsIDMxLCAzMSAvKiBkYjE2Y3ljICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9w czMuYyBiL2FyY2gvcG93ZXJwYy9ib290L3BzMy5jCmluZGV4IDRlYzJkODZkM2M1MC4uYTA1NTU4 YTdlNTFhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvYm9vdC9wczMuYworKysgYi9hcmNoL3Bv d2VycGMvYm9vdC9wczMuYwpAQCAtMTE5LDEzICsxMTksMTIgQEAgdm9pZCBwczNfY29weV92ZWN0 b3JzKHZvaWQpCiAJZmx1c2hfY2FjaGUoKHZvaWQgKikweDEwMCwgNTEyKTsKIH0KIAotdm9pZCBw bGF0Zm9ybV9pbml0KHVuc2lnbmVkIGxvbmcgbnVsbF9jaGVjaykKK3ZvaWQgcGxhdGZvcm1faW5p dCh2b2lkKQogewogCWNvbnN0IHUzMiBoZWFwc2l6ZSA9IDB4MTAwMDAwMCAtICh1MzIpX2VuZDsg LyogMTZNaUIgKi8KIAl2b2lkICpjaG9zZW47CiAJdW5zaWduZWQgbG9uZyBmdF9hZGRyOwogCXU2 NCBybV9zaXplOwotCXVuc2lnbmVkIGxvbmcgdmFsOwogCiAJY29uc29sZV9vcHMud3JpdGUgPSBw czNfY29uc29sZV93cml0ZTsKIAlwbGF0Zm9ybV9vcHMuZXhpdCA9IHBzM19leGl0OwpAQCAtMTUz LDExICsxNTIsNiBAQCB2b2lkIHBsYXRmb3JtX2luaXQodW5zaWduZWQgbG9uZyBudWxsX2NoZWNr KQogCiAJcHJpbnRmKCIgZmxhdCB0cmVlIGF0IDB4JWx4XG5cciIsIGZ0X2FkZHIpOwogCi0JdmFs ID0gKih1bnNpZ25lZCBsb25nICopMDsKLQotCWlmICh2YWwgIT0gbnVsbF9jaGVjaykKLQkJcHJp bnRmKCJudWxsIGNoZWNrIGZhaWxlZDogJWx4ICE9ICVseFxuXHIiLCB2YWwsIG51bGxfY2hlY2sp OwotCiAJKChrZXJuZWxfZW50cnlfdCkwKShmdF9hZGRyLCAwLCBOVUxMKTsKIAogCXBzM19leGl0 KCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC93cmFwcGVyIGIvYXJjaC9wb3dlcnBj L2Jvb3Qvd3JhcHBlcgppbmRleCBhZTBmODhlYzRhMzIuLmM3MDIxMGQ5ZmI4OSAxMDA3NTUKLS0t IGEvYXJjaC9wb3dlcnBjL2Jvb3Qvd3JhcHBlcgorKysgYi9hcmNoL3Bvd2VycGMvYm9vdC93cmFw cGVyCkBAIC0xNDQsNiArMTQ0LDI4IEBAIGNhc2UgIiRlbGZmb3JtYXQiIGluCiAgICAgZWxmMzIt cG93ZXJwYykJZm9ybWF0PWVsZjMycHBjCTs7CiBlc2FjCiAKK2xkX3ZlcnNpb24oKQoreworICAg ICMgUG9hY2hlZCBmcm9tIHNjcmlwdHMvbGQtdmVyc2lvbi5zaCwgYnV0IHdlIGRvbid0IHdhbnQg dG8gY2FsbCB0aGF0IGJlY2F1c2UKKyAgICAjIHRoaXMgc2NyaXB0ICh3cmFwcGVyKSBpcyBkaXN0 cmlidXRlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIGtlcm5lbCBzb3VyY2UuCisgICAgIyBFeHRyYWN0 IGxpbmtlciB2ZXJzaW9uIG51bWJlciBmcm9tIHN0ZGluIGFuZCB0dXJuIGludG8gc2luZ2xlIG51 bWJlci4KKyAgICBhd2sgJ3sKKwlnc3ViKCIuKlxcKSIsICIiKTsKKwlnc3ViKCIuKnZlcnNpb24g IiwgIiIpOworCWdzdWIoIi0uKiIsICIiKTsKKwlzcGxpdCgkMSxhLCAiLiIpOworCXByaW50IGFb MV0qMTAwMDAwMDAwICsgYVsyXSoxMDAwMDAwICsgYVszXSoxMDAwMDsKKwlleGl0CisgICAgfScK K30KKworIyBEbyBub3QgaW5jbHVkZSBQVF9JTlRFUlAgc2VnbWVudCB3aGVuIGxpbmtpbmcgcGll LiBOb24tcGllIGxpbmtpbmcKKyMganVzdCBpZ25vcmVzIHRoaXMgb3B0aW9uLgorTERfVkVSU0lP Tj0kKCR7Q1JPU1N9bGQgLS12ZXJzaW9uIHwgbGRfdmVyc2lvbikKK0xEX05PX0RMX01JTl9WRVJT SU9OPSQoZWNobyAyLjI2IHwgbGRfdmVyc2lvbikKK2lmIFsgIiRMRF9WRVJTSU9OIiAtZ2UgIiRM RF9OT19ETF9NSU5fVkVSU0lPTiIgXSA7IHRoZW4KKwlub2RsPSItLW5vLWR5bmFtaWMtbGlua2Vy IgorZmkKIAogcGxhdGZvcm1vPSRvYmplY3QvIiRwbGF0Zm9ybSIubwogbGRzPSRvYmplY3Qveklt YWdlLmxkcwpAQCAtMzk1LDcgKzQxNyw3IEBAIGlmIFsgIiRwbGF0Zm9ybSIgIT0gIm1pYm9vdCIg XTsgdGhlbgogICAgIGlmIFsgLW4gIiRsaW5rX2FkZHJlc3MiIF0gOyB0aGVuCiAgICAgICAgIHRl eHRfc3RhcnQ9Ii1UdGV4dCAkbGlua19hZGRyZXNzIgogICAgIGZpCi0gICAgJHtDUk9TU31sZCAt bSAkZm9ybWF0IC1UICRsZHMgJHRleHRfc3RhcnQgJHBpZSAtbyAiJG9maWxlIiBcCisgICAgJHtD Uk9TU31sZCAtbSAkZm9ybWF0IC1UICRsZHMgJHRleHRfc3RhcnQgJHBpZSAkbm9kbCAtbyAiJG9m aWxlIiBcCiAJJHBsYXRmb3JtbyAkdG1wICRvYmplY3Qvd3JhcHBlci5hCiAgICAgcm0gJHRtcAog ZmkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJj aC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjE0OWRiY2Y4OTMxLi5jMmE4 MjA0NWQ2NGUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5o CisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC01MzIsNiArNTMy LDcgQEAgc3RydWN0IGt2bV92Y3B1X2FyY2ggewogCXU2NCB0ZmlhcjsKIAogCXUzMiBjcl90bTsK Kwl1NjQgeGVyX3RtOwogCXU2NCBscl90bTsKIAl1NjQgY3RyX3RtOwogCXU2NCBhbXJfdG07CmRp ZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjLW9wY29kZS5oIGIvYXJjaC9w b3dlcnBjL2luY2x1ZGUvYXNtL3BwYy1vcGNvZGUuaAppbmRleCAzMTMyYmI5MzY1ZjMuLmY0N2Mz ZDljYjk5NyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BwYy1vcGNvZGUu aAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjLW9wY29kZS5oCkBAIC0xNDksNyAr MTQ5LDcgQEAKICNkZWZpbmUgUFBDX0lOU1RfTUNSWFIJCQkweDdjMDAwNDAwCiAjZGVmaW5lIFBQ Q19JTlNUX01DUlhSX01BU0sJCTB4ZmMwMDA3ZmUKICNkZWZpbmUgUFBDX0lOU1RfTUZTUFJfUFZS CQkweDdjMWY0MmE2Ci0jZGVmaW5lIFBQQ19JTlNUX01GU1BSX1BWUl9NQVNLCQkweGZjMWZmZmZm CisjZGVmaW5lIFBQQ19JTlNUX01GU1BSX1BWUl9NQVNLCQkweGZjMWZmZmZlCiAjZGVmaW5lIFBQ Q19JTlNUX01TR1NORAkJCTB4N2MwMDAxOWMKICNkZWZpbmUgUFBDX0lOU1RfTVNHU05EUAkJMHg3 YzAwMDExYwogI2RlZmluZSBQUENfSU5TVF9OT1AJCQkweDYwMDAwMDAwCkBAIC0xNjEsMTMgKzE2 MSwxMyBAQAogI2RlZmluZSBQUENfSU5TVF9SRkRJCQkJMHg0YzAwMDA0ZQogI2RlZmluZSBQUENf SU5TVF9SRk1DSQkJCTB4NGMwMDAwNGMKICNkZWZpbmUgUFBDX0lOU1RfTUZTUFJfRFNDUgkJMHg3 YzExMDJhNgotI2RlZmluZSBQUENfSU5TVF9NRlNQUl9EU0NSX01BU0sJMHhmYzFmZmZmZgorI2Rl ZmluZSBQUENfSU5TVF9NRlNQUl9EU0NSX01BU0sJMHhmYzFmZmZmZQogI2RlZmluZSBQUENfSU5T VF9NVFNQUl9EU0NSCQkweDdjMTEwM2E2Ci0jZGVmaW5lIFBQQ19JTlNUX01UU1BSX0RTQ1JfTUFT SwkweGZjMWZmZmZmCisjZGVmaW5lIFBQQ19JTlNUX01UU1BSX0RTQ1JfTUFTSwkweGZjMWZmZmZl CiAjZGVmaW5lIFBQQ19JTlNUX01GU1BSX0RTQ1JfVVNFUgkweDdjMDMwMmE2Ci0jZGVmaW5lIFBQ Q19JTlNUX01GU1BSX0RTQ1JfVVNFUl9NQVNLCTB4ZmMxZmZmZmYKKyNkZWZpbmUgUFBDX0lOU1Rf TUZTUFJfRFNDUl9VU0VSX01BU0sJMHhmYzFmZmZmZQogI2RlZmluZSBQUENfSU5TVF9NVFNQUl9E U0NSX1VTRVIJMHg3YzAzMDNhNgotI2RlZmluZSBQUENfSU5TVF9NVFNQUl9EU0NSX1VTRVJfTUFT SwkweGZjMWZmZmZmCisjZGVmaW5lIFBQQ19JTlNUX01UU1BSX0RTQ1JfVVNFUl9NQVNLCTB4ZmMx ZmZmZmUKICNkZWZpbmUgUFBDX0lOU1RfU0xCRkVFCQkJMHg3YzAwMDdhNwogCiAjZGVmaW5lIFBQ Q19JTlNUX1NUUklORwkJCTB4N2MwMDA0MmEKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNs dWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgK aW5kZXggZGU3ZDQyNmE5YjBjLi45Mzc4M2Y3Y2Y3MjkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJw Yy9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL3VhcGkv YXNtL2t2bS5oCkBAIC01ODAsNiArNTgwLDcgQEAgc3RydWN0IGt2bV9nZXRfaHRhYl9oZWFkZXIg ewogI2RlZmluZSBLVk1fUkVHX1BQQ19UTV9WU0NSCShLVk1fUkVHX1BQQ19UTSB8IEtWTV9SRUdf U0laRV9VMzIgfCAweDY3KQogI2RlZmluZSBLVk1fUkVHX1BQQ19UTV9EU0NSCShLVk1fUkVHX1BQ Q19UTSB8IEtWTV9SRUdfU0laRV9VNjQgfCAweDY4KQogI2RlZmluZSBLVk1fUkVHX1BQQ19UTV9U QVIJKEtWTV9SRUdfUFBDX1RNIHwgS1ZNX1JFR19TSVpFX1U2NCB8IDB4NjkpCisjZGVmaW5lIEtW TV9SRUdfUFBDX1RNX1hFUgkoS1ZNX1JFR19QUENfVE0gfCBLVk1fUkVHX1NJWkVfVTY0IHwgMHg2 YSkKIAogLyogUFBDNjQgZVh0ZXJuYWwgSW50ZXJydXB0IENvbnRyb2xsZXIgU3BlY2lmaWNhdGlv biAqLwogI2RlZmluZSBLVk1fREVWX1hJQ1NfR1JQX1NPVVJDRVMJMQkvKiA2NC1iaXQgc291cmNl IGF0dHJpYnV0ZXMgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNl dHMuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCA4OGFiZWE4ODk4 NzYuLjIxM2ZjYWY0MTY4ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zm c2V0cy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYwpAQCAtNTcyLDYg KzU3Miw3IEBAIGludCBtYWluKHZvaWQpCiAJREVGSU5FKFZDUFVfVlJTX1RNLCBvZmZzZXRvZihz dHJ1Y3Qga3ZtX3ZjcHUsIGFyY2gudnJfdG0udnIpKTsKIAlERUZJTkUoVkNQVV9WUlNBVkVfVE0s IG9mZnNldG9mKHN0cnVjdCBrdm1fdmNwdSwgYXJjaC52cnNhdmVfdG0pKTsKIAlERUZJTkUoVkNQ VV9DUl9UTSwgb2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLmNyX3RtKSk7CisJREVGSU5F KFZDUFVfWEVSX1RNLCBvZmZzZXRvZihzdHJ1Y3Qga3ZtX3ZjcHUsIGFyY2gueGVyX3RtKSk7CiAJ REVGSU5FKFZDUFVfTFJfVE0sIG9mZnNldG9mKHN0cnVjdCBrdm1fdmNwdSwgYXJjaC5scl90bSkp OwogCURFRklORShWQ1BVX0NUUl9UTSwgb2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLmN0 cl90bSkpOwogCURFRklORShWQ1BVX0FNUl9UTSwgb2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBh cmNoLmFtcl90bSkpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9pYm1lYnVzLmMg Yi9hcmNoL3Bvd2VycGMva2VybmVsL2libWVidXMuYwppbmRleCAxMTE0ZDEzYWMxOWYuLjk5ZWQy Y2M0YzkyZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9pYm1lYnVzLmMKKysrIGIv YXJjaC9wb3dlcnBjL2tlcm5lbC9pYm1lYnVzLmMKQEAgLTE4MCw2ICsxODAsNyBAQCBzdGF0aWMg aW50IGlibWVidXNfY3JlYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuKQogc3RhdGlj IGludCBpYm1lYnVzX2NyZWF0ZV9kZXZpY2VzKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1h dGNoZXMpCiB7CiAJc3RydWN0IGRldmljZV9ub2RlICpyb290LCAqY2hpbGQ7CisJc3RydWN0IGRl dmljZSAqZGV2OwogCWludCByZXQgPSAwOwogCiAJcm9vdCA9IG9mX2ZpbmRfbm9kZV9ieV9wYXRo KCIvIik7CkBAIC0xODgsOSArMTg5LDEyIEBAIHN0YXRpYyBpbnQgaWJtZWJ1c19jcmVhdGVfZGV2 aWNlcyhjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzKQogCQlpZiAoIW9mX21hdGNo X25vZGUobWF0Y2hlcywgY2hpbGQpKQogCQkJY29udGludWU7CiAKLQkJaWYgKGJ1c19maW5kX2Rl dmljZSgmaWJtZWJ1c19idXNfdHlwZSwgTlVMTCwgY2hpbGQsCi0JCQkJICAgIGlibWVidXNfbWF0 Y2hfbm9kZSkpCisJCWRldiA9IGJ1c19maW5kX2RldmljZSgmaWJtZWJ1c19idXNfdHlwZSwgTlVM TCwgY2hpbGQsCisJCQkJICAgICAgaWJtZWJ1c19tYXRjaF9ub2RlKTsKKwkJaWYgKGRldikgewor CQkJcHV0X2RldmljZShkZXYpOwogCQkJY29udGludWU7CisJCX0KIAogCQlyZXQgPSBpYm1lYnVz X2NyZWF0ZV9kZXZpY2UoY2hpbGQpOwogCQlpZiAocmV0KSB7CkBAIC0yNjIsNiArMjY2LDcgQEAg c3RhdGljIHNzaXplX3QgaWJtZWJ1c19zdG9yZV9wcm9iZShzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywK IAkJCQkgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKIHsKIAlzdHJ1Y3QgZGV2aWNl X25vZGUgKmRuID0gTlVMTDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CiAJY2hhciAqcGF0aDsKIAlz c2l6ZV90IHJjID0gMDsKIApAQCAtMjY5LDggKzI3NCwxMCBAQCBzdGF0aWMgc3NpemVfdCBpYm1l YnVzX3N0b3JlX3Byb2JlKHN0cnVjdCBidXNfdHlwZSAqYnVzLAogCWlmICghcGF0aCkKIAkJcmV0 dXJuIC1FTk9NRU07CiAKLQlpZiAoYnVzX2ZpbmRfZGV2aWNlKCZpYm1lYnVzX2J1c190eXBlLCBO VUxMLCBwYXRoLAotCQkJICAgIGlibWVidXNfbWF0Y2hfcGF0aCkpIHsKKwlkZXYgPSBidXNfZmlu ZF9kZXZpY2UoJmlibWVidXNfYnVzX3R5cGUsIE5VTEwsIHBhdGgsCisJCQkgICAgICBpYm1lYnVz X21hdGNoX3BhdGgpOworCWlmIChkZXYpIHsKKwkJcHV0X2RldmljZShkZXYpOwogCQlwcmludGso S0VSTl9XQVJOSU5HICIlczogJXMgaGFzIGFscmVhZHkgYmVlbiBwcm9iZWRcbiIsCiAJCSAgICAg ICBfX2Z1bmNfXywgcGF0aCk7CiAJCXJjID0gLUVFWElTVDsKQEAgLTMwNyw2ICszMTQsNyBAQCBz dGF0aWMgc3NpemVfdCBpYm1lYnVzX3N0b3JlX3JlbW92ZShzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywK IAlpZiAoKGRldiA9IGJ1c19maW5kX2RldmljZSgmaWJtZWJ1c19idXNfdHlwZSwgTlVMTCwgcGF0 aCwKIAkJCQkgICBpYm1lYnVzX21hdGNoX3BhdGgpKSkgewogCQlvZl9kZXZpY2VfdW5yZWdpc3Rl cih0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KSk7CisJCXB1dF9kZXZpY2UoZGV2KTsKIAogCQlrZnJl ZShwYXRoKTsKIAkJcmV0dXJuIGNvdW50OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5l bC9taXNjXzMyLlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL21pc2NfMzIuUwppbmRleCA3YzZiYjRi MTdiNDkuLjJjNzBiYmNiMDA2ZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNj XzMyLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjXzMyLlMKQEAgLTMxMyw3ICszMTMs NyBAQCBfR0xPQkFMKGZsdXNoX2luc3RydWN0aW9uX2NhY2hlKQogCWxpcwlyMywgS0VSTkVMQkFT RUBoCiAJaWNjY2kJMCxyMwogI2VuZGlmCi0jZWxpZiBDT05GSUdfRlNMX0JPT0tFCisjZWxpZiBk ZWZpbmVkKENPTkZJR19GU0xfQk9PS0UpCiBCRUdJTl9GVFJfU0VDVElPTgogCW1mc3ByICAgcjMs U1BSTl9MMUNTUjAKIAlvcmkgICAgIHIzLHIzLEwxQ1NSMF9DRkl8TDFDU1IwX0NMRkMKZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMgYi9hcmNoL3Bvd2VycGMva2Vy bmVsL3Byb21faW5pdC5jCmluZGV4IDY5YmU2ODBmNzE4NC4uYzQ5YTg1YzVmYzZiIDEwMDY0NAot LS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jCisrKyBiL2FyY2gvcG93ZXJwYy9r ZXJuZWwvcHJvbV9pbml0LmMKQEAgLTI2MzUsNiArMjYzNSw5IEBAIHN0YXRpYyB2b2lkIF9faW5p dCBwcm9tX2ZpbmRfYm9vdF9jcHUodm9pZCkKIAogCWNwdV9wa2cgPSBjYWxsX3Byb20oImluc3Rh bmNlLXRvLXBhY2thZ2UiLCAxLCAxLCBwcm9tX2NwdSk7CiAKKwlpZiAoIVBIQU5ETEVfVkFMSUQo Y3B1X3BrZykpCisJCXJldHVybjsKKwogCXByb21fZ2V0cHJvcChjcHVfcGtnLCAicmVnIiwgJnJ2 YWwsIHNpemVvZihydmFsKSk7CiAJcHJvbS5jcHUgPSBiZTMyX3RvX2NwdShydmFsKTsKIApkaWZm IC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvcG93ZXJwYy9rZXJu ZWwvcHRyYWNlLmMKaW5kZXggNjY1ZmY2NjhkOGFlLi4xYjNmNzE1ZGI2NDcgMTAwNjQ0Ci0tLSBh L2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9w dHJhY2UuYwpAQCAtMzk0LDYgKzM5NCwxMCBAQCBzdGF0aWMgaW50IGZwcl9zZXQoc3RydWN0IHRh c2tfc3RydWN0ICp0YXJnZXQsIGNvbnN0IHN0cnVjdCB1c2VyX3JlZ3NldCAqcmVnc2V0LAogCWZs dXNoX2ZwX3RvX3RocmVhZCh0YXJnZXQpOwogCiAjaWZkZWYgQ09ORklHX1ZTWAorCWZvciAoaSA9 IDA7IGkgPCAzMiA7IGkrKykKKwkJYnVmW2ldID0gdGFyZ2V0LT50aHJlYWQuVFNfRlBSKGkpOwor CWJ1ZlszMl0gPSB0YXJnZXQtPnRocmVhZC5mcF9zdGF0ZS5mcHNjcjsKKwogCS8qIGNvcHkgdG8g bG9jYWwgYnVmZmVyIHRoZW4gd3JpdGUgdGhhdCBvdXQgKi8KIAlpID0gdXNlcl9yZWdzZXRfY29w eWluKCZwb3MsICZjb3VudCwgJmtidWYsICZ1YnVmLCBidWYsIDAsIC0xKTsKIAlpZiAoaSkKQEAg LTUzNyw2ICs1NDEsOSBAQCBzdGF0aWMgaW50IHZzcl9zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0 YXJnZXQsIGNvbnN0IHN0cnVjdCB1c2VyX3JlZ3NldCAqcmVnc2V0LAogCiAJZmx1c2hfdnN4X3Rv X3RocmVhZCh0YXJnZXQpOwogCisJZm9yIChpID0gMDsgaSA8IDMyIDsgaSsrKQorCQlidWZbaV0g PSB0YXJnZXQtPnRocmVhZC5mcF9zdGF0ZS5mcHJbaV1bVFNfVlNSTE9XT0ZGU0VUXTsKKwogCXJl dCA9IHVzZXJfcmVnc2V0X2NvcHlpbigmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1ZiwKIAkJCQkg YnVmLCAwLCAzMiAqIHNpemVvZihkb3VibGUpKTsKIAlmb3IgKGkgPSAwOyBpIDwgMzIgOyBpKysp CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBj L2t2bS9ib29rM3NfaHYuYwppbmRleCBhNDE2YjZiYjBkNmEuLmQzOWZhYTIzMGViMSAxMDA2NDQK LS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYworKysgYi9hcmNoL3Bvd2VycGMva3Zt L2Jvb2szc19odi5jCkBAIC05ODgsNiArOTg4LDkgQEAgc3RhdGljIGludCBrdm1wcGNfZ2V0X29u ZV9yZWdfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaWQsCiAJY2FzZSBLVk1fUkVHX1BQ Q19UTV9DUjoKIAkJKnZhbCA9IGdldF9yZWdfdmFsKGlkLCB2Y3B1LT5hcmNoLmNyX3RtKTsKIAkJ YnJlYWs7CisJY2FzZSBLVk1fUkVHX1BQQ19UTV9YRVI6CisJCSp2YWwgPSBnZXRfcmVnX3ZhbChp ZCwgdmNwdS0+YXJjaC54ZXJfdG0pOworCQlicmVhazsKIAljYXNlIEtWTV9SRUdfUFBDX1RNX0xS OgogCQkqdmFsID0gZ2V0X3JlZ192YWwoaWQsIHZjcHUtPmFyY2gubHJfdG0pOwogCQlicmVhazsK QEAgLTEyMDEsNiArMTIwNCw5IEBAIHN0YXRpYyBpbnQga3ZtcHBjX3NldF9vbmVfcmVnX2h2KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLAogCWNhc2UgS1ZNX1JFR19QUENfVE1fQ1I6CiAJ CXZjcHUtPmFyY2guY3JfdG0gPSBzZXRfcmVnX3ZhbChpZCwgKnZhbCk7CiAJCWJyZWFrOworCWNh c2UgS1ZNX1JFR19QUENfVE1fWEVSOgorCQl2Y3B1LT5hcmNoLnhlcl90bSA9IHNldF9yZWdfdmFs KGlkLCAqdmFsKTsKKwkJYnJlYWs7CiAJY2FzZSBLVk1fUkVHX1BQQ19UTV9MUjoKIAkJdmNwdS0+ YXJjaC5scl90bSA9IHNldF9yZWdfdmFsKGlkLCAqdmFsKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQg YS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl9ybWhhbmRsZXJzLlMgYi9hcmNoL3Bvd2VycGMv a3ZtL2Jvb2szc19odl9ybWhhbmRsZXJzLlMKaW5kZXggYWI2OWE1ZjI0MmQxLi5kYTFhYTI0ZDU4 NmYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3JtaGFuZGxlcnMuUwor KysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl9ybWhhbmRsZXJzLlMKQEAgLTIzNTYsMTEg KzIzNTYsMTMgQEAga3ZtcHBjX3NhdmVfdG06CiAJbWZjdHIJcjcKIAltZnNwcglyOCwgU1BSTl9B TVIKIAltZnNwcglyMTAsIFNQUk5fVEFSCisJbWZ4ZXIJcjExCiAJc3RkCXI1LCBWQ1BVX0xSX1RN KHI5KQogCXN0dwlyNiwgVkNQVV9DUl9UTShyOSkKIAlzdGQJcjcsIFZDUFVfQ1RSX1RNKHI5KQog CXN0ZAlyOCwgVkNQVV9BTVJfVE0ocjkpCiAJc3RkCXIxMCwgVkNQVV9UQVJfVE0ocjkpCisJc3Rk CXIxMSwgVkNQVV9YRVJfVE0ocjkpCiAKIAkvKiBSZXN0b3JlIHIxMiBhcyB0cmFwIG51bWJlci4g Ki8KIAlsd3oJcjEyLCBWQ1BVX1RSQVAocjkpCkBAIC0yNDUzLDExICsyNDU1LDEzIEBAIGt2bXBw Y19yZXN0b3JlX3RtOgogCWxkCXI3LCBWQ1BVX0NUUl9UTShyNCkKIAlsZAlyOCwgVkNQVV9BTVJf VE0ocjQpCiAJbGQJcjksIFZDUFVfVEFSX1RNKHI0KQorCWxkCXIxMCwgVkNQVV9YRVJfVE0ocjQp CiAJbXRscglyNQogCW10Y3IJcjYKIAltdGN0cglyNwogCW10c3ByCVNQUk5fQU1SLCByOAogCW10 c3ByCVNQUk5fVEFSLCByOQorCW10eGVyCXIxMAogCiAJLyoKIAkgKiBMb2FkIHVwIFBQUiBhbmQg RFNDUiB2YWx1ZXMgYnV0IGRvbid0IHB1dCB0aGVtIGluIHRoZSBhY3R1YWwgU1BScwpkaWZmIC0t Z2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvbGVvbl9rZXJuZWwuYyBiL2FyY2gvc3BhcmMva2VybmVs L2xlb25fa2VybmVsLmMKaW5kZXggNjgzYzRhZjk5OWRlLi42YjQ2ZDJmMWM3NDEgMTAwNjQ0Ci0t LSBhL2FyY2gvc3BhcmMva2VybmVsL2xlb25fa2VybmVsLmMKKysrIGIvYXJjaC9zcGFyYy9rZXJu ZWwvbGVvbl9rZXJuZWwuYwpAQCAtMzM5LDM3ICszMzksMzcgQEAgdm9pZCBfX2luaXQgbGVvbl9p bml0X3RpbWVycyh2b2lkKQogCiAJLyogRmluZCBHUFRJTUVSIFRpbWVyIFJlZ2lzdGVycyBiYXNl IGFkZHJlc3Mgb3RoZXJ3aXNlIGJhaWwgb3V0LiAqLwogCW5ucCA9IHJvb3RucDsKLQlkbyB7Ci0J CW5wID0gb2ZfZmluZF9ub2RlX2J5X25hbWUobm5wLCAiR0FJU0xFUl9HUFRJTUVSIik7Ci0JCWlm ICghbnApIHsKLQkJCW5wID0gb2ZfZmluZF9ub2RlX2J5X25hbWUobm5wLCAiMDFfMDExIik7Ci0J CQlpZiAoIW5wKQotCQkJCWdvdG8gYmFkOwotCQl9CiAKLQkJYW1wb3B0cyA9IDA7Ci0JCXBwID0g b2ZfZmluZF9wcm9wZXJ0eShucCwgImFtcG9wdHMiLCAmbGVuKTsKLQkJaWYgKHBwKSB7Ci0JCQlh bXBvcHRzID0gKihpbnQgKilwcC0+dmFsdWU7Ci0JCQlpZiAoYW1wb3B0cyA9PSAwKSB7Ci0JCQkJ LyogU2tpcCB0aGlzIGluc3RhbmNlLCByZXNvdXJjZSBhbHJlYWR5Ci0JCQkJICogYWxsb2NhdGVk IGJ5IG90aGVyIE9TICovCi0JCQkJbm5wID0gbnA7Ci0JCQkJY29udGludWU7Ci0JCQl9CityZXRy eToKKwlucCA9IG9mX2ZpbmRfbm9kZV9ieV9uYW1lKG5ucCwgIkdBSVNMRVJfR1BUSU1FUiIpOwor CWlmICghbnApIHsKKwkJbnAgPSBvZl9maW5kX25vZGVfYnlfbmFtZShubnAsICIwMV8wMTEiKTsK KwkJaWYgKCFucCkKKwkJCWdvdG8gYmFkOworCX0KKworCWFtcG9wdHMgPSAwOworCXBwID0gb2Zf ZmluZF9wcm9wZXJ0eShucCwgImFtcG9wdHMiLCAmbGVuKTsKKwlpZiAocHApIHsKKwkJYW1wb3B0 cyA9ICooaW50ICopcHAtPnZhbHVlOworCQlpZiAoYW1wb3B0cyA9PSAwKSB7CisJCQkvKiBTa2lw IHRoaXMgaW5zdGFuY2UsIHJlc291cmNlIGFscmVhZHkKKwkJCSAqIGFsbG9jYXRlZCBieSBvdGhl ciBPUyAqLworCQkJbm5wID0gbnA7CisJCQlnb3RvIHJldHJ5OwogCQl9CisJfQorCisJLyogU2Vs ZWN0IFRpbWVyLUluc3RhbmNlIG9uIFRpbWVyIENvcmUuIERlZmF1bHQgaXMgemVybyAqLworCWxl b24zX2dwdGltZXJfaWR4ID0gYW1wb3B0cyAmIDB4NzsKIAotCQkvKiBTZWxlY3QgVGltZXItSW5z dGFuY2Ugb24gVGltZXIgQ29yZS4gRGVmYXVsdCBpcyB6ZXJvICovCi0JCWxlb24zX2dwdGltZXJf aWR4ID0gYW1wb3B0cyAmIDB4NzsKLQotCQlwcCA9IG9mX2ZpbmRfcHJvcGVydHkobnAsICJyZWci LCAmbGVuKTsKLQkJaWYgKHBwKQotCQkJbGVvbjNfZ3B0aW1lcl9yZWdzID0gKihzdHJ1Y3QgbGVv bjNfZ3B0aW1lcl9yZWdzX21hcCAqKikKLQkJCQkJCXBwLT52YWx1ZTsKLQkJcHAgPSBvZl9maW5k X3Byb3BlcnR5KG5wLCAiaW50ZXJydXB0cyIsICZsZW4pOwotCQlpZiAocHApCi0JCQlsZW9uM19n cHRpbWVyX2lycSA9ICoodW5zaWduZWQgaW50ICopcHAtPnZhbHVlOwotCX0gd2hpbGUgKDApOwor CXBwID0gb2ZfZmluZF9wcm9wZXJ0eShucCwgInJlZyIsICZsZW4pOworCWlmIChwcCkKKwkJbGVv bjNfZ3B0aW1lcl9yZWdzID0gKihzdHJ1Y3QgbGVvbjNfZ3B0aW1lcl9yZWdzX21hcCAqKikKKwkJ CQkJcHAtPnZhbHVlOworCXBwID0gb2ZfZmluZF9wcm9wZXJ0eShucCwgImludGVycnVwdHMiLCAm bGVuKTsKKwlpZiAocHApCisJCWxlb24zX2dwdGltZXJfaXJxID0gKih1bnNpZ25lZCBpbnQgKilw cC0+dmFsdWU7CiAKIAlpZiAoIShsZW9uM19ncHRpbWVyX3JlZ3MgJiYgbGVvbjNfaXJxY3RybF9y ZWdzICYmIGxlb24zX2dwdGltZXJfaXJxKSkKIAkJZ290byBiYWQ7CmRpZmYgLS1naXQgYS9hcmNo L3RpbGUva2VybmVsL3B0cmFjZS5jIGIvYXJjaC90aWxlL2tlcm5lbC9wdHJhY2UuYwppbmRleCBk ZTk4YzZkZGYxMzYuLjIzNDMxMjZjNGFkMiAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL2tlcm5lbC9w dHJhY2UuYworKysgYi9hcmNoL3RpbGUva2VybmVsL3B0cmFjZS5jCkBAIC0xMTAsNyArMTEwLDcg QEAgc3RhdGljIGludCB0aWxlX2dwcl9zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsCiAJ CQkgIGNvbnN0IHZvaWQgKmtidWYsIGNvbnN0IHZvaWQgX191c2VyICp1YnVmKQogewogCWludCBy ZXQ7Ci0Jc3RydWN0IHB0X3JlZ3MgcmVnczsKKwlzdHJ1Y3QgcHRfcmVncyByZWdzID0gKnRhc2tf cHRfcmVncyh0YXJnZXQpOwogCiAJcmV0ID0gdXNlcl9yZWdzZXRfY29weWluKCZwb3MsICZjb3Vu dCwgJmtidWYsICZ1YnVmLCAmcmVncywgMCwKIAkJCQkgc2l6ZW9mKHJlZ3MpKTsKZGlmZiAtLWdp dCBhL2FyY2gveDg2L2Jvb3Qvc3RyaW5nLmMgYi9hcmNoL3g4Ni9ib290L3N0cmluZy5jCmluZGV4 IDQ5M2YzZmQ5ZjEzOS4uODQ3ZjU2YzczNGI0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9ib290L3N0 cmluZy5jCisrKyBiL2FyY2gveDg2L2Jvb3Qvc3RyaW5nLmMKQEAgLTE0LDYgKzE0LDcgQEAKIAog I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSAiY3R5cGUuaCIKKyNpbmNsdWRlICJz dHJpbmcuaCIKIAogaW50IG1lbWNtcChjb25zdCB2b2lkICpzMSwgY29uc3Qgdm9pZCAqczIsIHNp emVfdCBsZW4pCiB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L3N0cmluZy5oIGIvYXJjaC94 ODYvYm9vdC9zdHJpbmcuaAppbmRleCA3MjVlODIwNjAyYjEuLjExMzU4OGRkYjQzZiAxMDA2NDQK LS0tIGEvYXJjaC94ODYvYm9vdC9zdHJpbmcuaAorKysgYi9hcmNoL3g4Ni9ib290L3N0cmluZy5o CkBAIC0xOCw0ICsxOCwxMyBAQCBpbnQgbWVtY21wKGNvbnN0IHZvaWQgKnMxLCBjb25zdCB2b2lk ICpzMiwgc2l6ZV90IGxlbik7CiAjZGVmaW5lIG1lbXNldChkLGMsbCkgX19idWlsdGluX21lbXNl dChkLGMsbCkKICNkZWZpbmUgbWVtY21wCV9fYnVpbHRpbl9tZW1jbXAKIAorZXh0ZXJuIGludCBz dHJjbXAoY29uc3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMik7CitleHRlcm4gaW50IHN0 cm5jbXAoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0LCBzaXplX3QgY291bnQpOworZXh0 ZXJuIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqcyk7CitleHRlcm4gY2hhciAqc3Ryc3RyKGNv bnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMik7CitleHRlcm4gc2l6ZV90IHN0cm5sZW4oY29u c3QgY2hhciAqcywgc2l6ZV90IG1heGxlbik7CitleHRlcm4gdW5zaWduZWQgaW50IGF0b3UoY29u c3QgY2hhciAqcyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChj b25zdCBjaGFyICpjcCwgY2hhciAqKmVuZHAsCisJCQkJCSAgdW5zaWduZWQgaW50IGJhc2UpOwor CiAjZW5kaWYgLyogQk9PVF9TVFJJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVs L2NwdS9jb21tb24uYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKaW5kZXggM2IxMmI0 ZDFhNTYwLi5iMGY0Y2ZlZjgxYzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29t bW9uLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwpAQCAtMTEwNSw3ICsxMTA1 LDcgQEAgc3RhdGljIF9faW5pdCBpbnQgc2V0dXBfZGlzYWJsZWNwdWlkKGNoYXIgKmFyZykKIHsK IAlpbnQgYml0OwogCi0JaWYgKGdldF9vcHRpb24oJmFyZywgJmJpdCkgJiYgYml0IDwgTkNBUElO VFMqMzIpCisJaWYgKGdldF9vcHRpb24oJmFyZywgJmJpdCkgJiYgYml0ID49IDAgJiYgYml0IDwg TkNBUElOVFMgKiAzMikKIAkJc2V0dXBfY2xlYXJfY3B1X2NhcChiaXQpOwogCWVsc2UKIAkJcmV0 dXJuIDA7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvZW50cnlfMzIuUyBiL2FyY2gveDg2 L2tlcm5lbC9lbnRyeV8zMi5TCmluZGV4IDBkMGM5ZDRhYjZkNS4uMmMxMjMxNzE5NDRhIDEwMDY0 NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvZW50cnlfMzIuUworKysgYi9hcmNoL3g4Ni9rZXJuZWwv ZW50cnlfMzIuUwpAQCAtMTA4Niw4ICsxMDg2LDggQEAgZnRyYWNlX2dyYXBoX2NhbGw6CiAJam1w IGZ0cmFjZV9zdHViCiAjZW5kaWYKIAotLmdsb2JsIGZ0cmFjZV9zdHViCi1mdHJhY2Vfc3R1YjoK Ky8qIFRoaXMgaXMgd2VhayB0byBrZWVwIGdhcyBmcm9tIHJlbGF4aW5nIHRoZSBqdW1wcyAqLwor V0VBSyhmdHJhY2Vfc3R1YikKIAlyZXQKIEVORChmdHJhY2VfY2FsbGVyKQogCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rdm0vbGFwaWMuYyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jCmluZGV4IDFmNGU4 ZTRlYTg2NS4uZDAzYTg4Y2IzMTI5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuYwor KysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuYwpAQCAtMTk0MSwzICsxOTQxLDkgQEAgdm9pZCBrdm1f bGFwaWNfaW5pdCh2b2lkKQogCWp1bXBfbGFiZWxfcmF0ZV9saW1pdCgmYXBpY19od19kaXNhYmxl ZCwgSFopOwogCWp1bXBfbGFiZWxfcmF0ZV9saW1pdCgmYXBpY19zd19kaXNhYmxlZCwgSFopOwog fQorCit2b2lkIGt2bV9sYXBpY19leGl0KHZvaWQpCit7CisJc3RhdGljX2tleV9kZWZlcnJlZF9m bHVzaCgmYXBpY19od19kaXNhYmxlZCk7CisJc3RhdGljX2tleV9kZWZlcnJlZF9mbHVzaCgmYXBp Y19zd19kaXNhYmxlZCk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaCBiL2Fy Y2gveDg2L2t2bS9sYXBpYy5oCmluZGV4IDcyMDUxNzMwY2FmMS4uNzc2ZTk5MTllOTEwIDEwMDY0 NAotLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaAorKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaApA QCAtOTMsNiArOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2h2X3ZhcGljX2Fzc2lzdF9w YWdlX2VuYWJsZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiBpbnQga3ZtX2xhcGljX2VuYWJs ZV9wdl9lb2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZGF0YSk7CiB2b2lkIGt2bV9sYXBp Y19pbml0KHZvaWQpOwordm9pZCBrdm1fbGFwaWNfZXhpdCh2b2lkKTsKIAogc3RhdGljIGlubGlu ZSB1MzIga3ZtX2FwaWNfZ2V0X3JlZyhzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgcmVnX29m ZikKIHsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBiL2FyY2gveDg2L2t2bS92bXgu YwppbmRleCA3YjE2NjY2ZDZlZDQuLmRhZDk0NTM4NjgwMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtNTk1NCwxNCArNTk1NCwyMCBA QCBzdGF0aWMgaW50IG5lc3RlZF92bXhfY2hlY2tfdm1wdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBpbnQgZXhpdF9yZWFzb24sCiAJCX0KIAogCQlwYWdlID0gbmVzdGVkX2dldF9wYWdlKHZjcHUs IHZtcHRyKTsKLQkJaWYgKHBhZ2UgPT0gTlVMTCB8fAotCQkgICAgKih1MzIgKilrbWFwKHBhZ2Up ICE9IFZNQ1MxMl9SRVZJU0lPTikgeworCQlpZiAocGFnZSA9PSBOVUxMKSB7CiAJCQluZXN0ZWRf dm14X2ZhaWxJbnZhbGlkKHZjcHUpOworCQkJc2tpcF9lbXVsYXRlZF9pbnN0cnVjdGlvbih2Y3B1 KTsKKwkJCXJldHVybiAxOworCQl9CisJCWlmICgqKHUzMiAqKWttYXAocGFnZSkgIT0gVk1DUzEy X1JFVklTSU9OKSB7CiAJCQlrdW5tYXAocGFnZSk7CisJCQluZXN0ZWRfcmVsZWFzZV9wYWdlX2Ns ZWFuKHBhZ2UpOworCQkJbmVzdGVkX3ZteF9mYWlsSW52YWxpZCh2Y3B1KTsKIAkJCXNraXBfZW11 bGF0ZWRfaW5zdHJ1Y3Rpb24odmNwdSk7CiAJCQlyZXR1cm4gMTsKIAkJfQogCQlrdW5tYXAocGFn ZSk7CisJCW5lc3RlZF9yZWxlYXNlX3BhZ2VfY2xlYW4ocGFnZSk7CiAJCXZteC0+bmVzdGVkLnZt eG9uX3B0ciA9IHZtcHRyOwogCQlicmVhazsKIAljYXNlIEVYSVRfUkVBU09OX1ZNQ0xFQVI6CmRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXgg ZTBhMjdkNjg0ZDI5Li43ZGNiOTU4YTgwNTQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYu YworKysgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTg5Miw3ICs4OTIsNyBAQCBzdGF0aWMgdTMy IG1zcnNfdG9fc2F2ZVtdID0gewogCU1TUl9DU1RBUiwgTVNSX0tFUk5FTF9HU19CQVNFLCBNU1Jf U1lTQ0FMTF9NQVNLLCBNU1JfTFNUQVIsCiAjZW5kaWYKIAlNU1JfSUEzMl9UU0MsIE1TUl9JQTMy X0NSX1BBVCwgTVNSX1ZNX0hTQVZFX1BBLAotCU1TUl9JQTMyX0ZFQVRVUkVfQ09OVFJPTCwgTVNS X0lBMzJfQk5EQ0ZHUywgTVNSX1RTQ19BVVgsCisJTVNSX0lBMzJfRkVBVFVSRV9DT05UUk9MLCBN U1JfSUEzMl9CTkRDRkdTCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgbnVtX21zcnNfdG9fc2F2ZTsK QEAgLTM5OTQsMTcgKzM5OTQsMTYgQEAgc3RhdGljIHZvaWQga3ZtX2luaXRfbXNyX2xpc3Qodm9p ZCkKIAogCQkvKgogCQkgKiBFdmVuIE1TUnMgdGhhdCBhcmUgdmFsaWQgaW4gdGhlIGhvc3QgbWF5 IG5vdCBiZSBleHBvc2VkCi0JCSAqIHRvIHRoZSBndWVzdHMgaW4gc29tZSBjYXNlcy4KKwkJICog dG8gdGhlIGd1ZXN0cyBpbiBzb21lIGNhc2VzLiAgV2UgY291bGQgd29yayBhcm91bmQgdGhpcwor CQkgKiBpbiBWTVggd2l0aCB0aGUgZ2VuZXJpYyBNU1Igc2F2ZS9sb2FkIG1hY2hpbmVyeSwgYnV0 IGl0CisJCSAqIGlzIG5vdCByZWFsbHkgd29ydGh3aGlsZSBzaW5jZSBpdCB3aWxsIHJlYWxseSBv bmx5CisJCSAqIGhhcHBlbiB3aXRoIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4KIAkJICovCiAJCXN3 aXRjaCAobXNyc190b19zYXZlW2ldKSB7CiAJCWNhc2UgTVNSX0lBMzJfQk5EQ0ZHUzoKIAkJCWlm ICgha3ZtX3g4Nl9vcHMtPm1weF9zdXBwb3J0ZWQoKSkKIAkJCQljb250aW51ZTsKIAkJCWJyZWFr OwotCQljYXNlIE1TUl9UU0NfQVVYOgotCQkJaWYgKCFrdm1feDg2X29wcy0+cmR0c2NwX3N1cHBv cnRlZCgpKQotCQkJCWNvbnRpbnVlOwotCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsK IAkJfQpAQCAtNTY3Nyw2ICs1Njc2LDcgQEAgb3V0OgogCiB2b2lkIGt2bV9hcmNoX2V4aXQodm9p ZCkKIHsKKwlrdm1fbGFwaWNfZXhpdCgpOwogCXBlcmZfdW5yZWdpc3Rlcl9ndWVzdF9pbmZvX2Nh bGxiYWNrcygma3ZtX2d1ZXN0X2Nicyk7CiAKIAlpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVS RV9DT05TVEFOVF9UU0MpKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvcGNpL2FjcGkuYyBiL2FyY2gv eDg2L3BjaS9hY3BpLmMKaW5kZXggMGY4MDAyY2EyYTVjLi40NWJmNDMxYTA2YWYgMTAwNjQ0Ci0t LSBhL2FyY2gveDg2L3BjaS9hY3BpLmMKKysrIGIvYXJjaC94ODYvcGNpL2FjcGkuYwpAQCAtMTE4 LDYgKzExOCwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgcGNpX2Nyc19x dWlya3NbXSBfX2luaXRjb25zdCA9IHsKIAkJCURNSV9NQVRDSChETUlfQklPU19WRVJTSU9OLCAi NkpFVDg1V1cgKDEuNDMgKSIpLAogCQl9LAogCX0sCisJLyogaHR0cHM6Ly9idWd6aWxsYS5rZXJu ZWwub3JnL3Nob3dfYnVnLmNnaT9pZD00MjYwNiAqLworCXsKKwkJLmNhbGxiYWNrID0gc2V0X25v dXNlX2NycywKKwkJLmlkZW50ID0gIlN1cGVybWljcm8gWDhEVEgiLAorCQkubWF0Y2hlcyA9IHsK KwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlN1cGVybWljcm8iKSwKKwkJCURNSV9NQVRD SChETUlfUFJPRFVDVF9OQU1FLCAiWDhEVEgtaS82L2lGLzZGIiksCisJCQlETUlfTUFUQ0goRE1J X0JJT1NfVkVSU0lPTiwgIjIuMGEiKSwKKwkJfSwKKwl9LAogCiAJLyogaHR0cHM6Ly9idWd6aWxs YS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2MiAqLwogCXsKZGlmZiAtLWdpdCBhL2Ny eXB0by9hbGdhcGkuYyBiL2NyeXB0by9hbGdhcGkuYwppbmRleCBkYWYyZjY1M2IxMzEuLjhlYTdh NWRjMzgzOSAxMDA2NDQKLS0tIGEvY3J5cHRvL2FsZ2FwaS5jCisrKyBiL2NyeXB0by9hbGdhcGku YwpAQCAtMzM3LDYgKzMzNyw3IEBAIGludCBjcnlwdG9fcmVnaXN0ZXJfYWxnKHN0cnVjdCBjcnlw dG9fYWxnICphbGcpCiAJc3RydWN0IGNyeXB0b19sYXJ2YWwgKmxhcnZhbDsKIAlpbnQgZXJyOwog CisJYWxnLT5jcmFfZmxhZ3MgJj0gfkNSWVBUT19BTEdfREVBRDsKIAllcnIgPSBjcnlwdG9fY2hl Y2tfYWxnKGFsZyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYXRhL3NhdGFfbXYuYyBiL2RyaXZlcnMvYXRhL3NhdGFfbXYuYwppbmRleCAzOTFjZmRhMWU4 M2YuLjhjM2M0ZWE3NjBmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0YV9tdi5jCisrKyBi L2RyaXZlcnMvYXRhL3NhdGFfbXYuYwpAQCAtNDEwOSw2ICs0MTA5LDkgQEAgc3RhdGljIGludCBt dl9wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWhvc3QtPmlv bWFwID0gTlVMTDsKIAlocHJpdi0+YmFzZSA9IGRldm1faW9yZW1hcCgmcGRldi0+ZGV2LCByZXMt PnN0YXJ0LAogCQkJCSAgIHJlc291cmNlX3NpemUocmVzKSk7CisJaWYgKCFocHJpdi0+YmFzZSkK KwkJcmV0dXJuIC1FTk9NRU07CisKIAlocHJpdi0+YmFzZSAtPSBTQVRBSEMwX1JFR19CQVNFOwog CiAJaHByaXYtPmNsayA9IGNsa19nZXQoJnBkZXYtPmRldiwgTlVMTCk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2Jhc2UvZG1hLW1hcHBpbmcuYyBiL2RyaXZlcnMvYmFzZS9kbWEtbWFwcGluZy5jCmlu ZGV4IDZjZDA4ZTE0NWJmYS4uMDM2YTA1YjI4ZWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2Uv ZG1hLW1hcHBpbmcuYworKysgYi9kcml2ZXJzL2Jhc2UvZG1hLW1hcHBpbmcuYwpAQCAtMTA3LDEz ICsxMDcsMTMgQEAgdm9pZCBkbWFtX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBz aXplX3Qgc2l6ZSwgdm9pZCAqdmFkZHIsCiBFWFBPUlRfU1lNQk9MKGRtYW1fZnJlZV9jb2hlcmVu dCk7CiAKIC8qKgotICogZG1hbV9hbGxvY19ub25fY29oZXJlbnQgLSBNYW5hZ2VkIGRtYV9hbGxv Y19ub25fY29oZXJlbnQoKQorICogZG1hbV9hbGxvY19ub25fY29oZXJlbnQgLSBNYW5hZ2VkIGRt YV9hbGxvY19ub25jb2hlcmVudCgpCiAgKiBAZGV2OiBEZXZpY2UgdG8gYWxsb2NhdGUgbm9uX2Nv aGVyZW50IG1lbW9yeSBmb3IKICAqIEBzaXplOiBTaXplIG9mIGFsbG9jYXRpb24KICAqIEBkbWFf aGFuZGxlOiBPdXQgYXJndW1lbnQgZm9yIGFsbG9jYXRlZCBETUEgaGFuZGxlCiAgKiBAZ2ZwOiBB bGxvY2F0aW9uIGZsYWdzCiAgKgotICogTWFuYWdlZCBkbWFfYWxsb2Nfbm9uX2NvaGVyZW50KCku ICBNZW1vcnkgYWxsb2NhdGVkIHVzaW5nIHRoaXMKKyAqIE1hbmFnZWQgZG1hX2FsbG9jX25vbmNv aGVyZW50KCkuICBNZW1vcnkgYWxsb2NhdGVkIHVzaW5nIHRoaXMKICAqIGZ1bmN0aW9uIHdpbGwg YmUgYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2ZXIgZGV0YWNoLgogICoKICAqIFJFVFVS TlM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ2NhY2hlLWx6by5jIGIvZHJp dmVycy9iYXNlL3JlZ21hcC9yZWdjYWNoZS1sem8uYwppbmRleCBlMjEwYTZkMTQwNmEuLjZhYzZi N2MwMmVjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL3JlZ21hcC9yZWdjYWNoZS1sem8uYwor KysgYi9kcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ2NhY2hlLWx6by5jCkBAIC0yMzYsMTUgKzIzNiwx MyBAQCBzdGF0aWMgaW50IHJlZ2NhY2hlX2x6b19yZWFkKHN0cnVjdCByZWdtYXAgKm1hcCwKIHsK IAlzdHJ1Y3QgcmVnY2FjaGVfbHpvX2N0eCAqbHpvX2Jsb2NrLCAqKmx6b19ibG9ja3M7CiAJaW50 IHJldCwgYmxraW5kZXgsIGJsa3BvczsKLQlzaXplX3QgYmxrc2l6ZSwgdG1wX2RzdF9sZW47CisJ c2l6ZV90IHRtcF9kc3RfbGVuOwogCXZvaWQgKnRtcF9kc3Q7CiAKIAkvKiBpbmRleCBvZiB0aGUg Y29tcHJlc3NlZCBsem8gYmxvY2sgKi8KIAlibGtpbmRleCA9IHJlZ2NhY2hlX2x6b19nZXRfYmxr aW5kZXgobWFwLCByZWcpOwogCS8qIHJlZ2lzdGVyIGluZGV4IHdpdGhpbiB0aGUgZGVjb21wcmVz c2VkIGJsb2NrICovCiAJYmxrcG9zID0gcmVnY2FjaGVfbHpvX2dldF9ibGtwb3MobWFwLCByZWcp OwotCS8qIHNpemUgb2YgdGhlIGNvbXByZXNzZWQgYmxvY2sgKi8KLQlibGtzaXplID0gcmVnY2Fj aGVfbHpvX2dldF9ibGtzaXplKG1hcCk7CiAJbHpvX2Jsb2NrcyA9IG1hcC0+Y2FjaGU7CiAJbHpv X2Jsb2NrID0gbHpvX2Jsb2Nrc1tibGtpbmRleF07CiAKQEAgLTI3NSwxNSArMjczLDEzIEBAIHN0 YXRpYyBpbnQgcmVnY2FjaGVfbHpvX3dyaXRlKHN0cnVjdCByZWdtYXAgKm1hcCwKIHsKIAlzdHJ1 Y3QgcmVnY2FjaGVfbHpvX2N0eCAqbHpvX2Jsb2NrLCAqKmx6b19ibG9ja3M7CiAJaW50IHJldCwg YmxraW5kZXgsIGJsa3BvczsKLQlzaXplX3QgYmxrc2l6ZSwgdG1wX2RzdF9sZW47CisJc2l6ZV90 IHRtcF9kc3RfbGVuOwogCXZvaWQgKnRtcF9kc3Q7CiAKIAkvKiBpbmRleCBvZiB0aGUgY29tcHJl c3NlZCBsem8gYmxvY2sgKi8KIAlibGtpbmRleCA9IHJlZ2NhY2hlX2x6b19nZXRfYmxraW5kZXgo bWFwLCByZWcpOwogCS8qIHJlZ2lzdGVyIGluZGV4IHdpdGhpbiB0aGUgZGVjb21wcmVzc2VkIGJs b2NrICovCiAJYmxrcG9zID0gcmVnY2FjaGVfbHpvX2dldF9ibGtwb3MobWFwLCByZWcpOwotCS8q IHNpemUgb2YgdGhlIGNvbXByZXNzZWQgYmxvY2sgKi8KLQlibGtzaXplID0gcmVnY2FjaGVfbHpv X2dldF9ibGtzaXplKG1hcCk7CiAJbHpvX2Jsb2NrcyA9IG1hcC0+Y2FjaGU7CiAJbHpvX2Jsb2Nr ID0gbHpvX2Jsb2Nrc1tibGtpbmRleF07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJk LmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jCmluZGV4IDdiZTQ0ZTQ2NDQ2Mi4uYTFlY2VkZmM5ZDM5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbmJk LmMKQEAgLTIzOSw5ICsyMzksMTAgQEAgc3RhdGljIGlubGluZSBpbnQgc29ja19zZW5kX2J2ZWMo c3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IGJpb192ZWMgKmJ2ZWMsCiAvKiBhbHdheXMg Y2FsbCB3aXRoIHRoZSB0eF9sb2NrIGhlbGQgKi8KIHN0YXRpYyBpbnQgbmJkX3NlbmRfcmVxKHN0 cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCByZXF1ZXN0ICpyZXEpCiB7Ci0JaW50IHJlc3Vs dCwgZmxhZ3M7CisJaW50IHJlc3VsdDsKIAlzdHJ1Y3QgbmJkX3JlcXVlc3QgcmVxdWVzdDsKIAl1 bnNpZ25lZCBsb25nIHNpemUgPSBibGtfcnFfYnl0ZXMocmVxKTsKKwlzdHJ1Y3QgYmlvICpiaW87 CiAKIAltZW1zZXQoJnJlcXVlc3QsIDAsIHNpemVvZihyZXF1ZXN0KSk7CiAJcmVxdWVzdC5tYWdp YyA9IGh0b25sKE5CRF9SRVFVRVNUX01BR0lDKTsKQEAgLTI2NiwxNyArMjY3LDE5IEBAIHN0YXRp YyBpbnQgbmJkX3NlbmRfcmVxKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCByZXF1ZXN0 ICpyZXEpCiAJCWdvdG8gZXJyb3Jfb3V0OwogCX0KIAotCWlmIChuYmRfY21kKHJlcSkgPT0gTkJE X0NNRF9XUklURSkgewotCQlzdHJ1Y3QgcmVxX2l0ZXJhdG9yIGl0ZXI7CisJaWYgKG5iZF9jbWQo cmVxKSAhPSBOQkRfQ01EX1dSSVRFKQorCQlyZXR1cm4gMDsKKworCWJpbyA9IHJlcS0+YmlvOwor CXdoaWxlIChiaW8pIHsKKwkJc3RydWN0IGJpbyAqbmV4dCA9IGJpby0+YmlfbmV4dDsKKwkJc3Ry dWN0IGJ2ZWNfaXRlciBpdGVyOwogCQlzdHJ1Y3QgYmlvX3ZlYyBidmVjOwotCQkvKgotCQkgKiB3 ZSBhcmUgcmVhbGx5IHByb2JpbmcgYXQgaW50ZXJuYWxzIHRvIGRldGVybWluZQotCQkgKiB3aGV0 aGVyIHRvIHNldCBNU0dfTU9SRSBvciBub3QuLi4KLQkJICovCi0JCXJxX2Zvcl9lYWNoX3NlZ21l bnQoYnZlYywgcmVxLCBpdGVyKSB7Ci0JCQlmbGFncyA9IDA7Ci0JCQlpZiAoIXJxX2l0ZXJfbGFz dChidmVjLCBpdGVyKSkKLQkJCQlmbGFncyA9IE1TR19NT1JFOworCisJCWJpb19mb3JfZWFjaF9z ZWdtZW50KGJ2ZWMsIGJpbywgaXRlcikgeworCQkJYm9vbCBpc19sYXN0ID0gIW5leHQgJiYgYmlv X2l0ZXJfbGFzdChidmVjLCBpdGVyKTsKKwkJCWludCBmbGFncyA9IGlzX2xhc3QgPyAwIDogTVNH X01PUkU7CisKIAkJCWRwcmludGsoREJHX1RYLCAiJXM6IHJlcXVlc3QgJXA6IHNlbmRpbmcgJWQg Ynl0ZXMgZGF0YVxuIiwKIAkJCQkJbmJkLT5kaXNrLT5kaXNrX25hbWUsIHJlcSwgYnZlYy5idl9s ZW4pOwogCQkJcmVzdWx0ID0gc29ja19zZW5kX2J2ZWMobmJkLCAmYnZlYywgZmxhZ3MpOwpAQCAt Mjg2LDcgKzI4OSwxNiBAQCBzdGF0aWMgaW50IG5iZF9zZW5kX3JlcShzdHJ1Y3QgbmJkX2Rldmlj ZSAqbmJkLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKQogCQkJCQlyZXN1bHQpOwogCQkJCWdvdG8gZXJy b3Jfb3V0OwogCQkJfQorCQkJLyoKKwkJCSAqIFRoZSBjb21wbGV0aW9uIG1pZ2h0IGFscmVhZHkg aGF2ZSBjb21lIGluLAorCQkJICogc28gYnJlYWsgZm9yIHRoZSBsYXN0IG9uZSBpbnN0ZWFkIG9m IGxldHRpbmcKKwkJCSAqIHRoZSBpdGVyYXRvciBkbyBpdC4gVGhpcyBwcmV2ZW50cyB1c2UtYWZ0 ZXItZnJlZQorCQkJICogb2YgdGhlIGJpby4KKwkJCSAqLworCQkJaWYgKGlzX2xhc3QpCisJCQkJ YnJlYWs7CiAJCX0KKwkJYmlvID0gbmV4dDsKIAl9CiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYnVzL3ZleHByZXNzLWNvbmZpZy5jIGIvZHJpdmVycy9idXMvdmV4cHJlc3MtY29u ZmlnLmMKaW5kZXggYTY0NzYzYjZiNWZkLi5hODAzZTVkODRiYWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYnVzL3ZleHByZXNzLWNvbmZpZy5jCisrKyBiL2RyaXZlcnMvYnVzL3ZleHByZXNzLWNvbmZp Zy5jCkBAIC0xNzEsNiArMTcxLDcgQEAgc3RhdGljIGludCB2ZXhwcmVzc19jb25maWdfcG9wdWxh dGUoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQogewogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqYnJp ZGdlOwogCXN0cnVjdCBkZXZpY2UgKnBhcmVudDsKKwlpbnQgcmV0OwogCiAJYnJpZGdlID0gb2Zf cGFyc2VfcGhhbmRsZShub2RlLCAiYXJtLHZleHByZXNzLGNvbmZpZy1icmlkZ2UiLCAwKTsKIAlp ZiAoIWJyaWRnZSkKQEAgLTE4MSw3ICsxODIsMTEgQEAgc3RhdGljIGludCB2ZXhwcmVzc19jb25m aWdfcG9wdWxhdGUoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQogCWlmIChXQVJOX09OKCFwYXJl bnQpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldHVybiBvZl9wbGF0Zm9ybV9wb3B1bGF0ZShu b2RlLCBOVUxMLCBOVUxMLCBwYXJlbnQpOworCXJldCA9IG9mX3BsYXRmb3JtX3BvcHVsYXRlKG5v ZGUsIE5VTEwsIE5VTEwsIHBhcmVudCk7CisKKwlwdXRfZGV2aWNlKHBhcmVudCk7CisKKwlyZXR1 cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB2ZXhwcmVzc19jb25maWdfaW5pdCh2b2lk KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvY2xrLXdtODMxeC5jIGIvZHJpdmVycy9jbGsvY2xr LXdtODMxeC5jCmluZGV4IGIxMzEwNDFjOGY0OC4uMDkzZGZlMTU5ZGZiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2Nsay9jbGstd204MzF4LmMKKysrIGIvZHJpdmVycy9jbGsvY2xrLXdtODMxeC5jCkBA IC0yNDgsNyArMjQ4LDcgQEAgc3RhdGljIGludCB3bTgzMXhfY2xrb3V0X2lzX3ByZXBhcmVkKHN0 cnVjdCBjbGtfaHcgKmh3KQogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIod204MzF4LT5kZXYs ICJVbmFibGUgdG8gcmVhZCBDTE9DS19DT05UUk9MXzE6ICVkXG4iLAogCQkJcmV0KTsKLQkJcmV0 dXJuIHRydWU7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlyZXR1cm4gKHJldCAmIFdNODMxWF9D TEtPVVRfRU5BKSAhPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvc2htb2JpbGUvY2xrLW1z dHAuYyBiL2RyaXZlcnMvY2xrL3NobW9iaWxlL2Nsay1tc3RwLmMKaW5kZXggMmQyZmU3NzNhYzgx Li5hOWUwMmEzODA5M2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL3NobW9iaWxlL2Nsay1tc3Rw LmMKKysrIGIvZHJpdmVycy9jbGsvc2htb2JpbGUvY2xrLW1zdHAuYwpAQCAtMzEsMTIgKzMxLDE0 IEBACiAgKiBAc21zdHBjcjogbW9kdWxlIHN0b3AgY29udHJvbCByZWdpc3RlcgogICogQG1zdHBz cjogbW9kdWxlIHN0b3Agc3RhdHVzIHJlZ2lzdGVyIChvcHRpb25hbCkKICAqIEBsb2NrOiBwcm90 ZWN0cyB3cml0ZXMgdG8gU01TVFBDUgorICogQHdpZHRoXzhiaXQ6IHJlZ2lzdGVycyBhcmUgOC1i aXQsIG5vdCAzMi1iaXQKICAqLwogc3RydWN0IG1zdHBfY2xvY2tfZ3JvdXAgewogCXN0cnVjdCBj bGtfb25lY2VsbF9kYXRhIGRhdGE7CiAJdm9pZCBfX2lvbWVtICpzbXN0cGNyOwogCXZvaWQgX19p b21lbSAqbXN0cHNyOwogCXNwaW5sb2NrX3QgbG9jazsKKwlib29sIHdpZHRoXzhiaXQ7CiB9Owog CiAvKioKQEAgLTUzLDYgKzU1LDE4IEBAIHN0cnVjdCBtc3RwX2Nsb2NrIHsKIAogI2RlZmluZSB0 b19tc3RwX2Nsb2NrKF9odykgY29udGFpbmVyX29mKF9odywgc3RydWN0IG1zdHBfY2xvY2ssIGh3 KQogCitzdGF0aWMgaW5saW5lIHUzMiBjcGdfbXN0cF9yZWFkKHN0cnVjdCBtc3RwX2Nsb2NrX2dy b3VwICpncm91cCwKKwkJCQl1MzIgX19pb21lbSAqcmVnKQoreworCXJldHVybiBncm91cC0+d2lk dGhfOGJpdCA/IHJlYWRiKHJlZykgOiBjbGtfcmVhZGwocmVnKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGNwZ19tc3RwX3dyaXRlKHN0cnVjdCBtc3RwX2Nsb2NrX2dyb3VwICpncm91cCwgdTMy IHZhbCwKKwkJCQkgIHUzMiBfX2lvbWVtICpyZWcpCit7CisJZ3JvdXAtPndpZHRoXzhiaXQgPyB3 cml0ZWIodmFsLCByZWcpIDogY2xrX3dyaXRlbCh2YWwsIHJlZyk7Cit9CisKIHN0YXRpYyBpbnQg Y3BnX21zdHBfY2xvY2tfZW5kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3LCBib29sIGVuYWJsZSkK IHsKIAlzdHJ1Y3QgbXN0cF9jbG9jayAqY2xvY2sgPSB0b19tc3RwX2Nsb2NrKGh3KTsKQEAgLTY0 LDEyICs3OCwxMiBAQCBzdGF0aWMgaW50IGNwZ19tc3RwX2Nsb2NrX2VuZGlzYWJsZShzdHJ1Y3Qg Y2xrX2h3ICpodywgYm9vbCBlbmFibGUpCiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZ3JvdXAtPmxv Y2ssIGZsYWdzKTsKIAotCXZhbHVlID0gY2xrX3JlYWRsKGdyb3VwLT5zbXN0cGNyKTsKKwl2YWx1 ZSA9IGNwZ19tc3RwX3JlYWQoZ3JvdXAsIGdyb3VwLT5zbXN0cGNyKTsKIAlpZiAoZW5hYmxlKQog CQl2YWx1ZSAmPSB+Yml0bWFzazsKIAllbHNlCiAJCXZhbHVlIHw9IGJpdG1hc2s7Ci0JY2xrX3dy aXRlbCh2YWx1ZSwgZ3JvdXAtPnNtc3RwY3IpOworCWNwZ19tc3RwX3dyaXRlKGdyb3VwLCB2YWx1 ZSwgZ3JvdXAtPnNtc3RwY3IpOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3JvdXAtPmxv Y2ssIGZsYWdzKTsKIApAQCAtNzcsNyArOTEsNyBAQCBzdGF0aWMgaW50IGNwZ19tc3RwX2Nsb2Nr X2VuZGlzYWJsZShzdHJ1Y3QgY2xrX2h3ICpodywgYm9vbCBlbmFibGUpCiAJCXJldHVybiAwOwog CiAJZm9yIChpID0gMTAwMDsgaSA+IDA7IC0taSkgewotCQlpZiAoIShjbGtfcmVhZGwoZ3JvdXAt Pm1zdHBzcikgJiBiaXRtYXNrKSkKKwkJaWYgKCEoY3BnX21zdHBfcmVhZChncm91cCwgZ3JvdXAt Pm1zdHBzcikgJiBiaXRtYXNrKSkKIAkJCWJyZWFrOwogCQljcHVfcmVsYXgoKTsKIAl9CkBAIC0x MDgsOSArMTIyLDkgQEAgc3RhdGljIGludCBjcGdfbXN0cF9jbG9ja19pc19lbmFibGVkKHN0cnVj dCBjbGtfaHcgKmh3KQogCXUzMiB2YWx1ZTsKIAogCWlmIChncm91cC0+bXN0cHNyKQotCQl2YWx1 ZSA9IGNsa19yZWFkbChncm91cC0+bXN0cHNyKTsKKwkJdmFsdWUgPSBjcGdfbXN0cF9yZWFkKGdy b3VwLCBncm91cC0+bXN0cHNyKTsKIAllbHNlCi0JCXZhbHVlID0gY2xrX3JlYWRsKGdyb3VwLT5z bXN0cGNyKTsKKwkJdmFsdWUgPSBjcGdfbXN0cF9yZWFkKGdyb3VwLCBncm91cC0+c21zdHBjcik7 CiAKIAlyZXR1cm4gISh2YWx1ZSAmIEJJVChjbG9jay0+Yml0X2luZGV4KSk7CiB9CkBAIC0xODIs NiArMTk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwZ19tc3RwX2Nsb2Nrc19pbml0KHN0cnVj dCBkZXZpY2Vfbm9kZSAqbnApCiAJCXJldHVybjsKIAl9CiAKKwlpZiAob2ZfZGV2aWNlX2lzX2Nv bXBhdGlibGUobnAsICJyZW5lc2FzLHI3czcyMTAwLW1zdHAtY2xvY2tzIikpCisJCWdyb3VwLT53 aWR0aF84Yml0ID0gdHJ1ZTsKKwogCWZvciAoaSA9IDA7IGkgPCBNU1RQX01BWF9DTE9DS1M7ICsr aSkKIAkJY2xrc1tpXSA9IEVSUl9QVFIoLUVOT0VOVCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y2xvY2tzb3VyY2UvZXh5bm9zX21jdC5jIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9leHlub3NfbWN0 LmMKaW5kZXggNWQxYjdmNjQ5NDdjLi4yMTYzYTUxNDU1MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Y2xvY2tzb3VyY2UvZXh5bm9zX21jdC5jCisrKyBiL2RyaXZlcnMvY2xvY2tzb3VyY2UvZXh5bm9z X21jdC5jCkBAIC00NTgsMTAgKzQ1OCwxNSBAQCBzdGF0aWMgaW50IGV4eW5vczRfbG9jYWxfdGlt ZXJfc2V0dXAoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQogCiBzdGF0aWMgdm9pZCBl eHlub3M0X2xvY2FsX3RpbWVyX3N0b3Aoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQog eworCXN0cnVjdCBtY3RfY2xvY2tfZXZlbnRfZGV2aWNlICptZXZ0OworCisJbWV2dCA9IGNvbnRh aW5lcl9vZihldnQsIHN0cnVjdCBtY3RfY2xvY2tfZXZlbnRfZGV2aWNlLCBldnQpOworCiAJZXZ0 LT5zZXRfbW9kZShDTE9DS19FVlRfTU9ERV9VTlVTRUQsIGV2dCk7CiAJaWYgKG1jdF9pbnRfdHlw ZSA9PSBNQ1RfSU5UX1NQSSkgewogCQlpZiAoZXZ0LT5pcnEgIT0gLTEpCiAJCQlkaXNhYmxlX2ly cV9ub3N5bmMoZXZ0LT5pcnEpOworCQlleHlub3M0X21jdF93cml0ZSgweDEsIG1ldnQtPmJhc2Ug KyBNQ1RfTF9JTlRfQ1NUQVRfT0ZGU0VUKTsKIAl9IGVsc2UgewogCQlkaXNhYmxlX3BlcmNwdV9p cnEobWN0X2lycXNbTUNUX0wwX0lSUV0pOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRv L2NhYW0vY2FhbWFsZy5jIGIvZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnLmMKaW5kZXggYzA5 Y2UxZjA0MGQzLi4xNjkwY2MwOWY5MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL2NhYW0v Y2FhbWFsZy5jCisrKyBiL2RyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZy5jCkBAIC01OTAsNyAr NTkwLDkgQEAgc3RhdGljIGludCBhZWFkX3NldF9zaF9kZXNjKHN0cnVjdCBjcnlwdG9fYWVhZCAq YWVhZCkKIAogCS8qIFdpbGwgcmVhZCBjcnlwdGxlbiAqLwogCWFwcGVuZF9tYXRoX2FkZChkZXNj LCBWQVJTRVFJTkxFTiwgU0VRSU5MRU4sIFJFRzAsIENBQU1fQ01EX1NaKTsKLQlhZWFkX2FwcGVu ZF9zcmNfZHN0KGRlc2MsIEZJRk9MRF9UWVBFX01TRzFPVVQyKTsKKwlhcHBlbmRfc2VxX2ZpZm9f bG9hZChkZXNjLCAwLCBGSUZPTERfQ0xBU1NfQk9USCB8IEtFWV9WTEYgfAorCQkJICAgICBGSUZP TERfVFlQRV9NU0cxT1VUMiB8IEZJRk9MRF9UWVBFX0xBU1RCT1RIKTsKKwlhcHBlbmRfc2VxX2Zp Zm9fc3RvcmUoZGVzYywgMCwgRklGT1NUX1RZUEVfTUVTU0FHRV9EQVRBIHwgS0VZX1ZMRik7CiAK IAkvKiBXcml0ZSBJQ1YgKi8KIAlhcHBlbmRfc2VxX3N0b3JlKGRlc2MsIGN0eC0+YXV0aHNpemUs IExEU1RfQ0xBU1NfMl9DQ0IgfApkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL2RldmZyZXEu YyBiL2RyaXZlcnMvZGV2ZnJlcS9kZXZmcmVxLmMKaW5kZXggYmE4NTBlYjJkMjc1Li4zZWM1NTA5 YjE0MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZGV2ZnJlcS9kZXZmcmVxLmMKKysrIGIvZHJpdmVy cy9kZXZmcmVxL2RldmZyZXEuYwpAQCAtNTAyLDIyICs1MDIsMjkgQEAgc3RydWN0IGRldmZyZXEg KmRldmZyZXFfYWRkX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJbGlzdF9hZGQoJmRldmZy ZXEtPm5vZGUsICZkZXZmcmVxX2xpc3QpOwogCiAJZ292ZXJub3IgPSBmaW5kX2RldmZyZXFfZ292 ZXJub3IoZGV2ZnJlcS0+Z292ZXJub3JfbmFtZSk7Ci0JaWYgKCFJU19FUlIoZ292ZXJub3IpKQot CQlkZXZmcmVxLT5nb3Zlcm5vciA9IGdvdmVybm9yOwotCWlmIChkZXZmcmVxLT5nb3Zlcm5vcikK LQkJZXJyID0gZGV2ZnJlcS0+Z292ZXJub3ItPmV2ZW50X2hhbmRsZXIoZGV2ZnJlcSwKLQkJCQkJ REVWRlJFUV9HT1ZfU1RBUlQsIE5VTEwpOwotCW11dGV4X3VubG9jaygmZGV2ZnJlcV9saXN0X2xv Y2spOworCWlmIChJU19FUlIoZ292ZXJub3IpKSB7CisJCWRldl9lcnIoZGV2LCAiJXM6IFVuYWJs ZSB0byBmaW5kIGdvdmVybm9yIGZvciB0aGUgZGV2aWNlXG4iLAorCQkJX19mdW5jX18pOworCQll cnIgPSBQVFJfRVJSKGdvdmVybm9yKTsKKwkJZ290byBlcnJfaW5pdDsKKwl9CisKKwlkZXZmcmVx LT5nb3Zlcm5vciA9IGdvdmVybm9yOworCWVyciA9IGRldmZyZXEtPmdvdmVybm9yLT5ldmVudF9o YW5kbGVyKGRldmZyZXEsIERFVkZSRVFfR09WX1NUQVJULAorCQkJCQkJTlVMTCk7CiAJaWYgKGVy cikgewogCQlkZXZfZXJyKGRldiwgIiVzOiBVbmFibGUgdG8gc3RhcnQgZ292ZXJub3IgZm9yIHRo ZSBkZXZpY2VcbiIsCiAJCQlfX2Z1bmNfXyk7CiAJCWdvdG8gZXJyX2luaXQ7CiAJfQorCW11dGV4 X3VubG9jaygmZGV2ZnJlcV9saXN0X2xvY2spOwogCiAJcmV0dXJuIGRldmZyZXE7CiAKIGVycl9p bml0OgogCWxpc3RfZGVsKCZkZXZmcmVxLT5ub2RlKTsKKwltdXRleF91bmxvY2soJmRldmZyZXFf bGlzdF9sb2NrKTsKKwogCWRldmljZV91bnJlZ2lzdGVyKCZkZXZmcmVxLT5kZXYpOwogZXJyX2Rl djoKIAlrZnJlZShkZXZmcmVxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwppbmRleCBjYjZkNjI2ZGFk MDIuLjE4MTUyMzUwYjMyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFp bi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwpAQCAtMTc4LDcgKzE3OCw4 IEBAIHN0YXRpYyBpbnQgYXN0X2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlhc3Rfd3JpdGUzMihhc3QsIDB4MTAwMDAsIDB4ZmM2MDAzMDkpOwogCiAJZG8gewotCQk7CisJ CWlmIChwY2lfY2hhbm5lbF9vZmZsaW5lKGRldi0+cGRldikpCisJCQlyZXR1cm4gLUVJTzsKIAl9 IHdoaWxlIChhc3RfcmVhZDMyKGFzdCwgMHgxMDAwMCkgIT0gMHgwMSk7CiAJZGF0YSA9IGFzdF9y ZWFkMzIoYXN0LCAweDEwMDA0KTsKIApAQCAtMzY5LDcgKzM3MCw5IEBAIGludCBhc3RfZHJpdmVy X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAlhc3Rf ZGV0ZWN0X2NoaXAoZGV2KTsKIAogCWlmIChhc3QtPmNoaXAgIT0gQVNUMTE4MCkgewotCQlhc3Rf Z2V0X2RyYW1faW5mbyhkZXYpOworCQlyZXQgPSBhc3RfZ2V0X2RyYW1faW5mbyhkZXYpOworCQlp ZiAocmV0KQorCQkJZ290byBvdXRfZnJlZTsKIAkJYXN0LT52cmFtX3NpemUgPSBhc3RfZ2V0X3Zy YW1faW5mbyhkZXYpOwogCQlEUk1fSU5GTygiZHJhbSAlZCAlZCAlZCAlMDh4XG4iLCBhc3QtPm1j bGssIGFzdC0+ZHJhbV90eXBlLCBhc3QtPmRyYW1fYnVzX3dpZHRoLCBhc3QtPnZyYW1fc2l6ZSk7 CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9wc2JfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vZ21hNTAwL3BzYl9kcnYuYwppbmRleCA2ZThmZTllYzAyYjUuLmVmZTVjM2M3 ZThlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9wc2JfZHJ2LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9wc2JfZHJ2LmMKQEAgLTQ2NCw2ICs0NjQsOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwc2JfZ2VtX2ZvcHMgPSB7CiAJLm9wZW4g PSBkcm1fb3BlbiwKIAkucmVsZWFzZSA9IGRybV9yZWxlYXNlLAogCS51bmxvY2tlZF9pb2N0bCA9 IHBzYl91bmxvY2tlZF9pb2N0bCwKKyNpZmRlZiBDT05GSUdfQ09NUEFUCisJLmNvbXBhdF9pb2N0 bCA9IGRybV9jb21wYXRfaW9jdGwsCisjZW5kaWYKIAkubW1hcCA9IGRybV9nZW1fbW1hcCwKIAku cG9sbCA9IGRybV9wb2xsLAogCS5yZWFkID0gZHJtX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ny dC5jCmluZGV4IGJiM2E2MjA5YjI0NS4uYTBlN2EyZTIwMTExIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jcnQuYwpAQCAtNDc3LDYgKzQ3Nyw3IEBAIHN0YXRpYyBib29sIGludGVsX2NydF9kZXRlY3Rf ZGRjKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gY3J0LT5iYXNlLmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1 Y3QgZWRpZCAqZWRpZDsKIAlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYzsKKwlib29sIHJldCA9IGZh bHNlOwogCiAJQlVHX09OKGNydC0+YmFzZS50eXBlICE9IElOVEVMX09VVFBVVF9BTkFMT0cpOwog CkBAIC00OTMsMTcgKzQ5NCwxNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfZGV0ZWN0X2RkYyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQkgKi8KIAkJaWYgKCFpc19kaWdpdGFs KSB7CiAJCQlEUk1fREVCVUdfS01TKCJDUlQgZGV0ZWN0ZWQgdmlhIEREQzoweDUwIFtFRElEXVxu Iik7Ci0JCQlyZXR1cm4gdHJ1ZTsKKwkJCXJldCA9IHRydWU7CisJCX0gZWxzZSB7CisJCQlEUk1f REVCVUdfS01TKCJDUlQgbm90IGRldGVjdGVkIHZpYSBEREM6MHg1MCBbRURJRCByZXBvcnRzIGEg ZGlnaXRhbCBwYW5lbF1cbiIpOwogCQl9Ci0KLQkJRFJNX0RFQlVHX0tNUygiQ1JUIG5vdCBkZXRl Y3RlZCB2aWEgRERDOjB4NTAgW0VESUQgcmVwb3J0cyBhIGRpZ2l0YWwgcGFuZWxdXG4iKTsKIAl9 IGVsc2UgewogCQlEUk1fREVCVUdfS01TKCJDUlQgbm90IGRldGVjdGVkIHZpYSBEREM6MHg1MCBb bm8gdmFsaWQgRURJRCBmb3VuZF1cbiIpOwogCX0KIAogCWtmcmVlKGVkaWQpOwogCi0JcmV0dXJu IGZhbHNlOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3Rh dHVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMjA0MWM1YmJiOTI5Li4w M2M3NmQxN2YwZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTg5MTMs OSArODkxMyw5IEBAIHN0YXRpYyB2b2lkIGRvX2ludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAogCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlw X3F1ZXVlKTsKIAotCXF1ZXVlX3dvcmsoZGV2X3ByaXYtPndxLCAmd29yay0+d29yayk7Ci0KIAl0 cmFjZV9pOTE1X2ZsaXBfY29tcGxldGUoaW50ZWxfY3J0Yy0+cGxhbmUsIHdvcmstPnBlbmRpbmdf ZmxpcF9vYmopOworCisJcXVldWVfd29yayhkZXZfcHJpdi0+d3EsICZ3b3JrLT53b3JrKTsKIH0K IAogdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBwaXBlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNTAxMGUyYzMyYzIzLi5hYTgzYTgz NTk2NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTM0Niw3ICs1MzQ2LDE2IEBAIHN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAlEUk1fREVCVUdfRFJJVkVSKCJDdXJyZW50IENEIGNsb2NrIHJhdGU6ICVkIE1IeiIs CiAJCQkgZGV2X3ByaXYtPnZsdl9jZGNsa19mcmVxKTsKIAotCUk5MTVfV1JJVEUoRFNQQ0xLX0dB VEVfRCwgVlJIVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUpOworCS8qCisJICogT24gZHJpdmVyIGxv YWQsIGEgcGlwZSBtYXkgYmUgYWN0aXZlIGFuZCBkcml2aW5nIGEgRFNJIGRpc3BsYXkuCisJICog UHJlc2VydmUgRFBPVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUgdG8gYXZvaWQgdGhlIHBpcGUgZ2V0 dGluZyBzdHVjaworCSAqIChhbmQgbmV2ZXIgcmVjb3ZlcmluZykgaW4gdGhpcyBjYXNlLiBpbnRl bF9kc2lfcG9zdF9kaXNhYmxlKCkgd2lsbAorCSAqIGNsZWFyIGl0IHdoZW4gd2UgdHVybiBvZmYg dGhlIGRpc3BsYXkuCisJICovCisJdmFsID0gSTkxNV9SRUFEKERTUENMS19HQVRFX0QpOworCXZh bCAmPSBEUE9VTklUX0NMT0NLX0dBVEVfRElTQUJMRTsKKwl2YWwgfD0gVlJIVU5JVF9DTE9DS19H QVRFX0RJU0FCTEU7CisJSTkxNV9XUklURShEU1BDTEtfR0FURV9ELCB2YWwpOwogCiAJLyogV2FE aXNhYmxlRWFybHlDdWxsOnZsdiAqLwogCUk5MTVfV1JJVEUoXzNEX0NISUNLRU4zLApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvaHcuYyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L2Rpc3BudjA0L2h3LmMKaW5kZXggYWNhNzZhZjExNWIzLi4xZGRiMTBiMzJi YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjA0L2h3LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvaHcuYwpAQCAtMjI1LDYgKzIyNSw3 IEBAIG5vdXZlYXVfaHdfZ2V0X2Nsb2NrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gbnZi aW9zX3BsbF90eXBlIHBsbHR5cGUpCiAJCXVpbnQzMl90IG1wbGxQOwogCiAJCXBjaV9yZWFkX2Nv bmZpZ19kd29yZChwY2lfZ2V0X2J1c19hbmRfc2xvdCgwLCAzKSwgMHg2YywgJm1wbGxQKTsKKwkJ bXBsbFAgPSAobXBsbFAgPj4gOCkgJiAweGY7CiAJCWlmICghbXBsbFApCiAJCQltcGxsUCA9IDQ7 CiAKQEAgLTIzNSw3ICsyMzYsNyBAQCBub3V2ZWF1X2h3X2dldF9jbG9jayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBlbnVtIG52Ymlvc19wbGxfdHlwZSBwbGx0eXBlKQogCQl1aW50MzJfdCBjbG9j azsKIAogCQlwY2lfcmVhZF9jb25maWdfZHdvcmQocGNpX2dldF9idXNfYW5kX3Nsb3QoMCwgNSks IDB4NGMsICZjbG9jayk7Ci0JCXJldHVybiBjbG9jazsKKwkJcmV0dXJuIGNsb2NrIC8gMTAwMDsK IAl9CiAKIAlyZXQgPSBub3V2ZWF1X2h3X2dldF9wbGx2YWxzKGRldiwgcGxsdHlwZSwgJnBsbHZh bHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3Vyc29yLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jdXJzb3IuYwppbmRleCA5NjMwZThkOTVm YjQuLmZhYWNjNDAwZDZmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fY3Vyc29yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3Vyc29yLmMK QEAgLTkwLDYgKzkwLDkgQEAgc3RhdGljIHZvaWQgcmFkZW9uX3Nob3dfY3Vyc29yKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgcmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjID0gdG9fcmFk ZW9uX2NydGMoY3J0Yyk7CiAJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBjcnRjLT5kZXYt PmRldl9wcml2YXRlOwogCisJaWYgKHJhZGVvbl9jcnRjLT5jdXJzb3Jfb3V0X29mX2JvdW5kcykK KwkJcmV0dXJuOworCiAJaWYgKEFTSUNfSVNfRENFNChyZGV2KSkgewogCQlXUkVHMzIoUkFERU9O X01NX0lOREVYLCBFVkVSR1JFRU5fQ1VSX0NPTlRST0wgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZz ZXQpOwogCQlXUkVHMzIoUkFERU9OX01NX0RBVEEsIEVWRVJHUkVFTl9DVVJTT1JfRU4gfApAQCAt MjI4LDE2ICsyMzEsMTcgQEAgaW50IHJhZGVvbl9jcnRjX2N1cnNvcl9tb3ZlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAkJeCArPSBjcnRjLT54OwogCQl5ICs9IGNydGMtPnk7CiAJfQotCURSTV9E RUJVRygieCAlZCB5ICVkIGMtPnggJWQgYy0+eSAlZFxuIiwgeCwgeSwgY3J0Yy0+eCwgY3J0Yy0+ eSk7CiAKLQlpZiAoeCA8IDApIHsKKwlpZiAoeCA8IDApCiAJCXhvcmlnaW4gPSBtaW4oLXgsIHJh ZGVvbl9jcnRjLT5tYXhfY3Vyc29yX3dpZHRoIC0gMSk7Ci0JCXggPSAwOwotCX0KLQlpZiAoeSA8 IDApIHsKKwlpZiAoeSA8IDApCiAJCXlvcmlnaW4gPSBtaW4oLXksIHJhZGVvbl9jcnRjLT5tYXhf Y3Vyc29yX2hlaWdodCAtIDEpOwotCQl5ID0gMDsKKworCWlmICghQVNJQ19JU19BVklWTyhyZGV2 KSkgeworCQl4ICs9IGNydGMtPng7CisJCXkgKz0gY3J0Yy0+eTsKIAl9CisJRFJNX0RFQlVHKCJ4 ICVkIHkgJWQgYy0+eCAlZCBjLT55ICVkXG4iLCB4LCB5LCBjcnRjLT54LCBjcnRjLT55KTsKIAog CS8qIGZpeGVkIG9uIERDRTYgYW5kIG5ld2VyICovCiAJaWYgKEFTSUNfSVNfQVZJVk8ocmRldikg JiYgIUFTSUNfSVNfRENFNihyZGV2KSkgewpAQCAtMjYwLDI3ICsyNjQsMzEgQEAgaW50IHJhZGVv bl9jcnRjX2N1cnNvcl9tb3ZlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJaWYgKGkgPiAxKSB7 CiAJCQlpbnQgY3Vyc29yX2VuZCwgZnJhbWVfZW5kOwogCi0JCQljdXJzb3JfZW5kID0geCAtIHhv cmlnaW4gKyB3OworCQkJY3Vyc29yX2VuZCA9IHggKyB3OwogCQkJZnJhbWVfZW5kID0gY3J0Yy0+ eCArIGNydGMtPm1vZGUuY3J0Y19oZGlzcGxheTsKIAkJCWlmIChjdXJzb3JfZW5kID49IGZyYW1l X2VuZCkgewogCQkJCXcgPSB3IC0gKGN1cnNvcl9lbmQgLSBmcmFtZV9lbmQpOwogCQkJCWlmICgh KGZyYW1lX2VuZCAmIDB4N2YpKQogCQkJCQl3LS07Ci0JCQl9IGVsc2UgewotCQkJCWlmICghKGN1 cnNvcl9lbmQgJiAweDdmKSkKLQkJCQkJdy0tOworCQkJfSBlbHNlIGlmIChjdXJzb3JfZW5kIDw9 IDApIHsKKwkJCQlnb3RvIG91dF9vZl9ib3VuZHM7CisJCQl9IGVsc2UgaWYgKCEoY3Vyc29yX2Vu ZCAmIDB4N2YpKSB7CisJCQkJdy0tOwogCQkJfQogCQkJaWYgKHcgPD0gMCkgewotCQkJCXcgPSAx OwotCQkJCWN1cnNvcl9lbmQgPSB4IC0geG9yaWdpbiArIHc7Ci0JCQkJaWYgKCEoY3Vyc29yX2Vu ZCAmIDB4N2YpKSB7Ci0JCQkJCXgtLTsKLQkJCQkJV0FSTl9PTl9PTkNFKHggPCAwKTsKLQkJCQl9 CisJCQkJZ290byBvdXRfb2ZfYm91bmRzOwogCQkJfQogCQl9CiAJfQogCisJaWYgKHggPD0gKGNy dGMtPnggLSB3KSB8fCB5IDw9IChjcnRjLT55IC0gcmFkZW9uX2NydGMtPmN1cnNvcl9oZWlnaHQp IHx8CisJICAgIHggPj0gKGNydGMtPnggKyBjcnRjLT5tb2RlLmhkaXNwbGF5KSB8fAorCSAgICB5 ID49IChjcnRjLT55ICsgY3J0Yy0+bW9kZS52ZGlzcGxheSkpCisJCWdvdG8gb3V0X29mX2JvdW5k czsKKworCXggKz0geG9yaWdpbjsKKwl5ICs9IHlvcmlnaW47CisKIAlyYWRlb25fbG9ja19jdXJz b3IoY3J0YywgdHJ1ZSk7CiAJaWYgKEFTSUNfSVNfRENFNChyZGV2KSkgewogCQlXUkVHMzIoRVZF UkdSRUVOX0NVUl9QT1NJVElPTiArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwgKHggPDwgMTYp IHwgeSk7CkBAIC0yOTMsNiArMzAxLDkgQEAgaW50IHJhZGVvbl9jcnRjX2N1cnNvcl9tb3ZlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJV1JFRzMyKEFWSVZPX0QxQ1VSX1NJWkUgKyByYWRlb25f Y3J0Yy0+Y3J0Y19vZmZzZXQsCiAJCSAgICAgICAoKHcgLSAxKSA8PCAxNikgfCAocmFkZW9uX2Ny dGMtPmN1cnNvcl9oZWlnaHQgLSAxKSk7CiAJfSBlbHNlIHsKKwkJeCAtPSBjcnRjLT54OworCQl5 IC09IGNydGMtPnk7CisKIAkJaWYgKGNydGMtPm1vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RC TFNDQU4pCiAJCQl5ICo9IDI7CiAKQEAgLTMxMCw1ICszMjEsMTggQEAgaW50IHJhZGVvbl9jcnRj X2N1cnNvcl9tb3ZlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl9CiAJcmFkZW9uX2xvY2tfY3Vy c29yKGNydGMsIGZhbHNlKTsKIAorCWlmIChyYWRlb25fY3J0Yy0+Y3Vyc29yX291dF9vZl9ib3Vu ZHMpIHsKKwkJcmFkZW9uX2NydGMtPmN1cnNvcl9vdXRfb2ZfYm91bmRzID0gZmFsc2U7CisJCWlm IChyYWRlb25fY3J0Yy0+Y3Vyc29yX2JvKQorCQkJcmFkZW9uX3Nob3dfY3Vyc29yKGNydGMpOwor CX0KKworCXJldHVybiAwOworCisgb3V0X29mX2JvdW5kczoKKwlpZiAoIXJhZGVvbl9jcnRjLT5j dXJzb3Jfb3V0X29mX2JvdW5kcykgeworCQlyYWRlb25faGlkZV9jdXJzb3IoY3J0Yyk7CisJCXJh ZGVvbl9jcnRjLT5jdXJzb3Jfb3V0X29mX2JvdW5kcyA9IHRydWU7CisJfQogCXJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW9kZS5oIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW9kZS5oCmluZGV4IDA1OTJkZGIwOTA0Yi4uNDNj NGZkNzU0Y2JkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2Rl LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW9kZS5oCkBAIC0zMTgsNiAr MzE4LDcgQEAgc3RydWN0IHJhZGVvbl9jcnRjIHsKIAl1MTYgbHV0X3JbMjU2XSwgbHV0X2dbMjU2 XSwgbHV0X2JbMjU2XTsKIAlib29sIGVuYWJsZWQ7CiAJYm9vbCBjYW5fdGlsZTsKKwlib29sIGN1 cnNvcl9vdXRfb2ZfYm91bmRzOwogCXVpbnQzMl90IGNydGNfb2Zmc2V0OwogCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqY3Vyc29yX2JvOwogCXVpbnQ2NF90IGN1cnNvcl9hZGRyOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vc2lfZHBtLmMKaW5kZXggYzliMjkwYjViNTJiLi4yYjA0NzQ5YWQzMTQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vc2lfZHBtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9zaV9kcG0uYwpAQCAtMjk1MywyNCArMjk1MywxMiBAQCBzdGF0aWMgdm9pZCBzaV9hcHBs eV9zdGF0ZV9hZGp1c3RfcnVsZXMoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsCiAJCSAgICAo cmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjgxNykgfHwKIAkJICAgIChyZGV2LT5wZGV2LT5kZXZp Y2UgPT0gMHg2ODA2KSkKIAkJCW1heF9tY2xrID0gMTIwMDAwOwotCX0gZWxzZSBpZiAocmRldi0+ ZmFtaWx5ID09IENISVBfVkVSREUpIHsKLQkJaWYgKChyZGV2LT5wZGV2LT5yZXZpc2lvbiA9PSAw eDgxKSB8fAotCQkgICAgKHJkZXYtPnBkZXYtPnJldmlzaW9uID09IDB4ODMpIHx8Ci0JCSAgICAo cmRldi0+cGRldi0+cmV2aXNpb24gPT0gMHg4NykgfHwKLQkJICAgIChyZGV2LT5wZGV2LT5kZXZp Y2UgPT0gMHg2ODIwKSB8fAotCQkgICAgKHJkZXYtPnBkZXYtPmRldmljZSA9PSAweDY4MjEpIHx8 Ci0JCSAgICAocmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjgyMikgfHwKLQkJICAgIChyZGV2LT5w ZGV2LT5kZXZpY2UgPT0gMHg2ODIzKSB8fAotCQkgICAgKHJkZXYtPnBkZXYtPmRldmljZSA9PSAw eDY4MkEpIHx8Ci0JCSAgICAocmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjgyQikpIHsKLQkJCW1h eF9zY2xrID0gNzUwMDA7Ci0JCQltYXhfbWNsayA9IDgwMDAwOwotCQl9CiAJfSBlbHNlIGlmIChy ZGV2LT5mYW1pbHkgPT0gQ0hJUF9PTEFORCkgewogCQlpZiAoKHJkZXYtPnBkZXYtPnJldmlzaW9u ID09IDB4QzcpIHx8CiAJCSAgICAocmRldi0+cGRldi0+cmV2aXNpb24gPT0gMHg4MCkgfHwKIAkJ ICAgIChyZGV2LT5wZGV2LT5yZXZpc2lvbiA9PSAweDgxKSB8fAogCQkgICAgKHJkZXYtPnBkZXYt PnJldmlzaW9uID09IDB4ODMpIHx8CisJCSAgICAocmRldi0+cGRldi0+cmV2aXNpb24gPT0gMHg4 NykgfHwKIAkJICAgIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2NjA0KSB8fAogCQkgICAgKHJk ZXYtPnBkZXYtPmRldmljZSA9PSAweDY2MDUpKSB7CiAJCQltYXhfc2NsayA9IDc1MDAwOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLWN5cHJlc3MuYyBiL2RyaXZlcnMvaGlkL2hpZC1jeXBy ZXNzLmMKaW5kZXggYzRlZjNiYzcyNmUzLi5lMjk5NTc2MDA0Y2UgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaGlkL2hpZC1jeXByZXNzLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLWN5cHJlc3MuYwpAQCAt MzksNiArMzksOSBAQCBzdGF0aWMgX191OCAqY3BfcmVwb3J0X2ZpeHVwKHN0cnVjdCBoaWRfZGV2 aWNlICpoZGV2LCBfX3U4ICpyZGVzYywKIAlpZiAoIShxdWlya3MgJiBDUF9SREVTQ19TV0FQUEVE X01JTl9NQVgpKQogCQlyZXR1cm4gcmRlc2M7CiAKKwlpZiAoKnJzaXplIDwgNCkKKwkJcmV0dXJu IHJkZXNjOworCiAJZm9yIChpID0gMDsgaSA8ICpyc2l6ZSAtIDQ7IGkrKykKIAkJaWYgKHJkZXNj W2ldID09IDB4MjkgJiYgcmRlc2NbaSArIDJdID09IDB4MTkpIHsKIAkJCV9fdTggdG1wOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9od21vbi9kczYyMC5jIGIvZHJpdmVycy9od21vbi9kczYyMC5jCmlu ZGV4IDA5MThiOTEzNjU4OC4uMmE1MGFiNjEzMjM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9u L2RzNjIwLmMKKysrIGIvZHJpdmVycy9od21vbi9kczYyMC5jCkBAIC0xNjYsNyArMTY2LDcgQEAg c3RhdGljIHNzaXplX3Qgc2V0X3RlbXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqZGEsCiAJaWYgKHJlcykKIAkJcmV0dXJuIHJlczsKIAotCXZhbCA9ICh2YWwg KiAxMCAvIDYyNSkgKiA4OworCXZhbCA9IChjbGFtcF92YWwodmFsLCAtMTI4MDAwLCAxMjgwMDAp ICogMTAgLyA2MjUpICogODsKIAogCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAlk YXRhLT50ZW1wW2F0dHItPmluZGV4XSA9IHZhbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v Zzc2Mi5jIGIvZHJpdmVycy9od21vbi9nNzYyLmMKaW5kZXggOThhODYxOGQ4ZmJmLi4yODExZGIw ODUzNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZzc2Mi5jCisrKyBiL2RyaXZlcnMvaHdt b24vZzc2Mi5jCkBAIC0xOTMsMTQgKzE5MywxNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu dCBycG1fZnJvbV9jbnQodTggY250LCB1MzIgY2xrX2ZyZXEsIHUxNiBwLAogICogQ29udmVydCBm YW4gUlBNIHZhbHVlIGZyb20gc3lzZnMgaW50byBjb3VudCB2YWx1ZSBmb3IgZmFuIGNvbnRyb2xs ZXIKICAqIHJlZ2lzdGVyIChGQU5fU0VUX0NOVCkuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgY2hhciBjbnRfZnJvbV9ycG0odTMyIHJwbSwgdTMyIGNsa19mcmVxLCB1MTYgcCwKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgY2hhciBjbnRfZnJvbV9ycG0odW5zaWduZWQgbG9uZyBycG0sIHUz MiBjbGtfZnJlcSwgdTE2IHAsCiAJCQkJCSB1OCBjbGtfZGl2LCB1OCBnZWFyX211bHQpCiB7Ci0J aWYgKCFycG0pICAgICAgICAgLyogdG8gc3RvcCB0aGUgZmFuLCBzZXQgY250IHRvIDI1NSAqLwor CXVuc2lnbmVkIGxvbmcgZjEgPSBjbGtfZnJlcSAqIDMwICogZ2Vhcl9tdWx0OworCXVuc2lnbmVk IGxvbmcgZjIgPSBwICogY2xrX2RpdjsKKworCWlmICghcnBtKQkvKiB0byBzdG9wIHRoZSBmYW4s IHNldCBjbnQgdG8gMjU1ICovCiAJCXJldHVybiAweGZmOwogCi0JcmV0dXJuIGNsYW1wX3ZhbCgo KGNsa19mcmVxICogMzAgKiBnZWFyX211bHQpIC8gKHJwbSAqIHAgKiBjbGtfZGl2KSksCi0JCQkg MCwgMjU1KTsKKwlycG0gPSBjbGFtcF92YWwocnBtLCBmMSAvICgyNTUgKiBmMiksIFVMT05HX01B WCAvIGYyKTsKKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZjEsIHJwbSAqIGYyKTsKIH0KIAog LyogaGVscGVyIHRvIGdyYWIgYW5kIGNhY2hlIGRhdGEsIGF0IG1vc3Qgb25lIHRpbWUgcGVyIHNl Y29uZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvaTJjLWRldi5jIGIvZHJpdmVycy9pMmMv aTJjLWRldi5jCmluZGV4IDgwYjQ3ZThjZTAzMC4uM2JhZjRhZjE0MTNhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2kyYy9pMmMtZGV2LmMKKysrIGIvZHJpdmVycy9pMmMvaTJjLWRldi5jCkBAIC0zMzQs NyArMzM0LDcgQEAgc3RhdGljIG5vaW5saW5lIGludCBpMmNkZXZfaW9jdGxfc21idXMoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCwKIAkJdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGky Y19zbWJ1c19pb2N0bF9kYXRhIGRhdGFfYXJnOwotCXVuaW9uIGkyY19zbWJ1c19kYXRhIHRlbXA7 CisJdW5pb24gaTJjX3NtYnVzX2RhdGEgdGVtcCA9IHt9OwogCWludCBkYXRhc2l6ZSwgcmVzOwog CiAJaWYgKGNvcHlfZnJvbV91c2VyKCZkYXRhX2FyZywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJj L211eGVzL2kyYy1tdXgtcGNhOTU0eC5jIGIvZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1wY2E5 NTR4LmMKaW5kZXggZjFiOTQ1NTA5NDc3Li41NDE5YTM1NmJmZGQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaTJjL211eGVzL2kyYy1tdXgtcGNhOTU0eC5jCisrKyBiL2RyaXZlcnMvaTJjL211eGVzL2ky Yy1tdXgtcGNhOTU0eC5jCkBAIC0xMzMsNiArMTMzLDkgQEAgc3RhdGljIGludCBwY2E5NTR4X3Jl Z193cml0ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsCiAJCWJ1ZlswXSA9IHZhbDsKIAkJbXNn LmJ1ZiA9IGJ1ZjsKIAkJcmV0ID0gYWRhcC0+YWxnby0+bWFzdGVyX3hmZXIoYWRhcCwgJm1zZywg MSk7CisKKwkJaWYgKHJldCA+PSAwICYmIHJldCAhPSAxKQorCQkJcmV0ID0gLUVSRU1PVEVJTzsK IAl9IGVsc2UgewogCQl1bmlvbiBpMmNfc21idXNfZGF0YSBkYXRhOwogCQlyZXQgPSBhZGFwLT5h bGdvLT5zbWJ1c194ZmVyKGFkYXAsIGNsaWVudC0+YWRkciwKQEAgLTE2MSw3ICsxNjQsNyBAQCBz dGF0aWMgaW50IHBjYTk1NHhfc2VsZWN0X2NoYW4oc3RydWN0IGkyY19hZGFwdGVyICphZGFwLAog CS8qIE9ubHkgc2VsZWN0IHRoZSBjaGFubmVsIGlmIGl0cyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFz dCBjaGFubmVsICovCiAJaWYgKGRhdGEtPmxhc3RfY2hhbiAhPSByZWd2YWwpIHsKIAkJcmV0ID0g cGNhOTU0eF9yZWdfd3JpdGUoYWRhcCwgY2xpZW50LCByZWd2YWwpOwotCQlkYXRhLT5sYXN0X2No YW4gPSByZXQgPyAwIDogcmVndmFsOworCQlkYXRhLT5sYXN0X2NoYW4gPSByZXQgPCAwID8gMCA6 IHJlZ3ZhbDsKIAl9CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaHVt aWRpdHkvZGh0MTEuYyBiL2RyaXZlcnMvaWlvL2h1bWlkaXR5L2RodDExLmMKaW5kZXggZDg3NzFm NTQ2YmYyLi5iZDdjMzg2ZDU4NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2h1bWlkaXR5L2Ro dDExLmMKKysrIGIvZHJpdmVycy9paW8vaHVtaWRpdHkvZGh0MTEuYwpAQCAtNDQsNyArNDQsOCBA QAogI2RlZmluZSBESFQxMV9FREdFU19QRVJfUkVBRCAoMipESFQxMV9CSVRTX1BFUl9SRUFEICsg REhUMTFfRURHRVNfUFJFQU1CTEUgKyAxKQogCiAvKiBEYXRhIHRyYW5zbWlzc2lvbiB0aW1pbmcg KG5hbm8gc2Vjb25kcykgKi8KLSNkZWZpbmUgREhUMTFfU1RBUlRfVFJBTlNNSVNTSU9OCTE4ICAv KiBtcyAqLworI2RlZmluZSBESFQxMV9TVEFSVF9UUkFOU01JU1NJT05fTUlOCTE4MDAwICAvKiB1 cyAqLworI2RlZmluZSBESFQxMV9TVEFSVF9UUkFOU01JU1NJT05fTUFYCTIwMDAwICAvKiB1cyAq LwogI2RlZmluZSBESFQxMV9TRU5TT1JfUkVTUE9OU0UJODAwMDAKICNkZWZpbmUgREhUMTFfU1RB UlRfQklUCQk1MDAwMAogI2RlZmluZSBESFQxMV9EQVRBX0JJVF9MT1cJMjcwMDAKQEAgLTE1Miw3 ICsxNTMsOCBAQCBzdGF0aWMgaW50IGRodDExX3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppaW9f ZGV2LAogCQlyZXQgPSBncGlvX2RpcmVjdGlvbl9vdXRwdXQoZGh0MTEtPmdwaW8sIDApOwogCQlp ZiAocmV0KQogCQkJZ290byBlcnI7Ci0JCW1zbGVlcChESFQxMV9TVEFSVF9UUkFOU01JU1NJT04p OworCQl1c2xlZXBfcmFuZ2UoREhUMTFfU1RBUlRfVFJBTlNNSVNTSU9OX01JTiwKKwkJCSAgICAg REhUMTFfU1RBUlRfVFJBTlNNSVNTSU9OX01BWCk7CiAJCXJldCA9IGdwaW9fZGlyZWN0aW9uX2lu cHV0KGRodDExLT5ncGlvKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZXJyOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbWFkLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9t YWQuYwppbmRleCBhYjMxZjEzNmQwNGIuLjViNjZmZWRhYWNjMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9pbmZpbmliYW5kL2NvcmUvbWFkLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbWFk LmMKQEAgLTE2MDcsNyArMTYwNyw3IEBAIGZpbmRfbWFkX2FnZW50KHN0cnVjdCBpYl9tYWRfcG9y dF9wcml2YXRlICpwb3J0X3ByaXYsCiAJCQlpZiAoIWNsYXNzKQogCQkJCWdvdG8gb3V0OwogCQkJ aWYgKGNvbnZlcnRfbWdtdF9jbGFzcyhtYWQtPm1hZF9oZHIubWdtdF9jbGFzcykgPj0KLQkJCSAg ICBJQl9NR01UX01BWF9NRVRIT0RTKQorCQkJICAgIEFSUkFZX1NJWkUoY2xhc3MtPm1ldGhvZF90 YWJsZSkpCiAJCQkJZ290byBvdXQ7CiAJCQltZXRob2QgPSBjbGFzcy0+bWV0aG9kX3RhYmxlW2Nv bnZlcnRfbWdtdF9jbGFzcygKIAkJCQkJCQltYWQtPm1hZF9oZHIubWdtdF9jbGFzcyldOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMgYi9kcml2ZXJzL2lu ZmluaWJhbmQvY29yZS9tdWx0aWNhc3QuYwppbmRleCAxODBkN2Y0MzZlZDUuLjJmODYxYjU5Y2Jj MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMKKysrIGIv ZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMKQEAgLTUxNiw4ICs1MTYsMTEgQEAg c3RhdGljIHZvaWQgam9pbl9oYW5kbGVyKGludCBzdGF0dXMsIHN0cnVjdCBpYl9zYV9tY21lbWJl cl9yZWMgKnJlYywKIAlpZiAoc3RhdHVzKQogCQlwcm9jZXNzX2pvaW5fZXJyb3IoZ3JvdXAsIHN0 YXR1cyk7CiAJZWxzZSB7Ci0JCWliX2ZpbmRfcGtleShncm91cC0+cG9ydC0+ZGV2LT5kZXZpY2Us IGdyb3VwLT5wb3J0LT5wb3J0X251bSwKLQkJCSAgICAgYmUxNl90b19jcHUocmVjLT5wa2V5KSwg JnBrZXlfaW5kZXgpOworCisJCWlmIChpYl9maW5kX3BrZXkoZ3JvdXAtPnBvcnQtPmRldi0+ZGV2 aWNlLAorCQkJCSBncm91cC0+cG9ydC0+cG9ydF9udW0sIGJlMTZfdG9fY3B1KHJlYy0+cGtleSks CisJCQkJICZwa2V5X2luZGV4KSkKKwkJCXBrZXlfaW5kZXggPSBNQ0FTVF9JTlZBTElEX1BLRVlf SU5ERVg7CiAKIAkJc3Bpbl9sb2NrX2lycSgmZ3JvdXAtPnBvcnQtPmxvY2spOwogCQlncm91cC0+ cmVjID0gKnJlYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19j bWQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19jbWQuYwppbmRleCA1ZTY2ZWFi MjkyZDguLmNlNjQ5YTdmZmE1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUv dXZlcmJzX2NtZC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19jbWQuYwpA QCAtMjc2NCw3ICsyNzY0LDYgQEAgaW50IGliX3V2ZXJic19leF9jcmVhdGVfZmxvdyhzdHJ1Y3Qg aWJfdXZlcmJzX2ZpbGUgKmZpbGUsCiAJCWVyciA9IFBUUl9FUlIoZmxvd19pZCk7CiAJCWdvdG8g ZXJyX2ZyZWU7CiAJfQotCWZsb3dfaWQtPnFwID0gcXA7CiAJZmxvd19pZC0+dW9iamVjdCA9IHVv Ymo7CiAJdW9iai0+b2JqZWN0ID0gZmxvd19pZDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZp bmliYW5kL2NvcmUvdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3ZlcmJzLmMKaW5k ZXggYzJiODljYzVkYmNhLi4wYzg1OWY3ZmI3YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9jb3JlL3ZlcmJzLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdmVyYnMuYwpA QCAtMTQyMCw4ICsxNDIwLDEwIEBAIHN0cnVjdCBpYl9mbG93ICppYl9jcmVhdGVfZmxvdyhzdHJ1 Y3QgaWJfcXAgKnFwLAogCQlyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTsKIAogCWZsb3dfaWQgPSBx cC0+ZGV2aWNlLT5jcmVhdGVfZmxvdyhxcCwgZmxvd19hdHRyLCBkb21haW4pOwotCWlmICghSVNf RVJSKGZsb3dfaWQpKQorCWlmICghSVNfRVJSKGZsb3dfaWQpKSB7CiAJCWF0b21pY19pbmMoJnFw LT51c2VjbnQpOworCQlmbG93X2lkLT5xcCA9IHFwOworCX0KIAlyZXR1cm4gZmxvd19pZDsKIH0K IEVYUE9SVF9TWU1CT0woaWJfY3JlYXRlX2Zsb3cpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZp bmliYW5kL2h3L2N4Z2I0L2RldmljZS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L2Rl dmljZS5jCmluZGV4IDdkYjgyYjI0MzAyYi4uZWE4Y2UzODNlNTdkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2luZmluaWJhbmQvaHcvY3hnYjQvZGV2aWNlLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5k L2h3L2N4Z2I0L2RldmljZS5jCkBAIC02OTQsNiArNjk0LDcgQEAgc3RhdGljIGludCBjNGl3X3Jk ZXZfb3BlbihzdHJ1Y3QgYzRpd19yZGV2ICpyZGV2KQogCQkJICAgIF9fZ2V0X2ZyZWVfcGFnZShH RlBfS0VSTkVMKTsKIAlpZiAoIXJkZXYtPnN0YXR1c19wYWdlKSB7CiAJCXByX2VycihNT0QgImVy cm9yIGFsbG9jYXRpbmcgc3RhdHVzIHBhZ2VcbiIpOworCQllcnIgPSAtRU5PTUVNOwogCQlnb3Rv IGVycjQ7CiAJfQogCXJkZXYtPnN0YXR1c19wYWdlLT5kYl9vZmYgPSAwOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvYWguYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9t bHg0L2FoLmMKaW5kZXggNGMyNjg2NTE0Y2VkLi42MmFhN2Q5NDIyYTQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L2FoLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3 L21seDQvYWguYwpAQCAtOTcsNyArOTcsOSBAQCBzdGF0aWMgc3RydWN0IGliX2FoICpjcmVhdGVf aWJvZV9haChzdHJ1Y3QgaWJfcGQgKnBkLCBzdHJ1Y3QgaWJfYWhfYXR0ciAqYWhfYXR0cgogCQkg ICAgICAgISgxIDw8IGFoLT5hdi5ldGguc3RhdF9yYXRlICYgZGV2LT5jYXBzLnN0YXRfcmF0ZV9z dXBwb3J0KSkKIAkJCS0tYWgtPmF2LmV0aC5zdGF0X3JhdGU7CiAJfQotCisJYWgtPmF2LmV0aC5z bF90Y2xhc3NfZmxvd2xhYmVsIHw9CisJCQljcHVfdG9fYmUzMigoYWhfYXR0ci0+Z3JoLnRyYWZm aWNfY2xhc3MgPDwgMjApIHwKKwkJCQkgICAgYWhfYXR0ci0+Z3JoLmZsb3dfbGFiZWwpOwogCS8q CiAJICogSFcgcmVxdWlyZXMgbXVsdGljYXN0IExJRCBzbyB3ZSBqdXN0IGNob29zZSBvbmUuCiAJ ICovCkBAIC0xMDUsNyArMTA3LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9haCAqY3JlYXRlX2lib2Vf YWgoc3RydWN0IGliX3BkICpwZCwgc3RydWN0IGliX2FoX2F0dHIgKmFoX2F0dHIKIAkJYWgtPmF2 LmliLmRsaWQgPSBjcHVfdG9fYmUxNigweGMwMDApOwogCiAJbWVtY3B5KGFoLT5hdi5ldGguZGdp ZCwgYWhfYXR0ci0+Z3JoLmRnaWQucmF3LCAxNik7Ci0JYWgtPmF2LmV0aC5zbF90Y2xhc3NfZmxv d2xhYmVsID0gY3B1X3RvX2JlMzIoYWhfYXR0ci0+c2wgPDwgMjkpOworCWFoLT5hdi5ldGguc2xf dGNsYXNzX2Zsb3dsYWJlbCB8PSBjcHVfdG9fYmUzMihhaF9hdHRyLT5zbCA8PCAyOSk7CiAKIAly ZXR1cm4gJmFoLT5pYmFoOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21s eDQvbWFpbi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWFpbi5jCmluZGV4IDg1YzQ3 YTBlNTI0Yy4uMTM5N2RhNzNmNjM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcv bWx4NC9tYWluLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWFpbi5jCkBAIC0y MTIsNiArMjEyLDcgQEAgc3RhdGljIGludCBtbHg0X2liX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJf ZGV2aWNlICppYmRldiwKIAlwcm9wcy0+bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaCA9IHByb3Bz LT5tYXhfbWNhc3RfcXBfYXR0YWNoICoKIAkJCQkJICAgcHJvcHMtPm1heF9tY2FzdF9ncnA7CiAJ cHJvcHMtPm1heF9tYXBfcGVyX2ZtciA9IGRldi0+ZGV2LT5jYXBzLm1heF9mbXJfbWFwczsKKwlw cm9wcy0+bWF4X2FoID0gSU5UX01BWDsKIAogb3V0OgogCWtmcmVlKGluX21hZCk7CkBAIC0zNDUs OSArMzQ2LDExIEBAIHN0YXRpYyBpbnQgZXRoX2xpbmtfcXVlcnlfcG9ydChzdHJ1Y3QgaWJfZGV2 aWNlICppYmRldiwgdTggcG9ydCwKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAotCXByb3BzLT5h Y3RpdmVfd2lkdGgJPSAgKCgodTggKiltYWlsYm94LT5idWYpWzVdID09IDB4NDApID8KLQkJCQkJ CUlCX1dJRFRIXzRYIDogSUJfV0lEVEhfMVg7Ci0JcHJvcHMtPmFjdGl2ZV9zcGVlZAk9IElCX1NQ RUVEX1FEUjsKKwlwcm9wcy0+YWN0aXZlX3dpZHRoCT0gICgoKHU4ICopbWFpbGJveC0+YnVmKVs1 XSA9PSAweDQwKSB8fAorCQkJCSAgICgoKHU4ICopbWFpbGJveC0+YnVmKVs1XSA9PSAweDIwIC8q NTZHYiovKSA/CisJCQkJCSAgIElCX1dJRFRIXzRYIDogSUJfV0lEVEhfMVg7CisJcHJvcHMtPmFj dGl2ZV9zcGVlZAk9ICAoKCh1OCAqKW1haWxib3gtPmJ1ZilbNV0gPT0gMHgyMCAvKjU2R2IqLykg PworCQkJCQkgICBJQl9TUEVFRF9GRFIgOiBJQl9TUEVFRF9RRFI7CiAJcHJvcHMtPnBvcnRfY2Fw X2ZsYWdzCT0gSUJfUE9SVF9DTV9TVVAgfCBJQl9QT1JUX0lQX0JBU0VEX0dJRFM7CiAJcHJvcHMt PmdpZF90YmxfbGVuCT0gbWRldi0+ZGV2LT5jYXBzLmdpZF90YWJsZV9sZW5bcG9ydF07CiAJcHJv cHMtPm1heF9tc2dfc3oJPSBtZGV2LT5kZXYtPmNhcHMubWF4X21zZ19zejsKQEAgLTIxNTYsMTQg KzIxNTksMTkgQEAgc3RhdGljIHZvaWQgKm1seDRfaWJfYWRkKHN0cnVjdCBtbHg0X2RldiAqZGV2 KQogCQkJZ290byBlcnJfc3RlZXJfcXBfcmVsZWFzZTsKIAkJfQogCi0JCWJpdG1hcF96ZXJvKGli ZGV2LT5pYl91Y19xcG5zX2JpdG1hcCwgaWJkZXYtPnN0ZWVyX3Fwbl9jb3VudCk7Ci0KLQkJZXJy ID0gbWx4NF9GTE9XX1NURUVSSU5HX0lCX1VDX1FQX1JBTkdFKAotCQkJCWRldiwgaWJkZXYtPnN0 ZWVyX3Fwbl9iYXNlLAotCQkJCWliZGV2LT5zdGVlcl9xcG5fYmFzZSArCi0JCQkJaWJkZXYtPnN0 ZWVyX3Fwbl9jb3VudCAtIDEpOwotCQlpZiAoZXJyKQotCQkJZ290byBlcnJfc3RlZXJfZnJlZV9i aXRtYXA7CisJCWlmIChkZXYtPmNhcHMuZmxhZ3MyICYgTUxYNF9ERVZfQ0FQX0ZMQUcyX0RNRlNf SVBPSUIpIHsKKwkJCWJpdG1hcF96ZXJvKGliZGV2LT5pYl91Y19xcG5zX2JpdG1hcCwKKwkJCQkg ICAgaWJkZXYtPnN0ZWVyX3Fwbl9jb3VudCk7CisJCQllcnIgPSBtbHg0X0ZMT1dfU1RFRVJJTkdf SUJfVUNfUVBfUkFOR0UoCisJCQkJCWRldiwgaWJkZXYtPnN0ZWVyX3Fwbl9iYXNlLAorCQkJCQlp YmRldi0+c3RlZXJfcXBuX2Jhc2UgKworCQkJCQlpYmRldi0+c3RlZXJfcXBuX2NvdW50IC0gMSk7 CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gZXJyX3N0ZWVyX2ZyZWVfYml0bWFwOworCQl9IGVsc2Ug eworCQkJYml0bWFwX2ZpbGwoaWJkZXYtPmliX3VjX3FwbnNfYml0bWFwLAorCQkJCSAgICBpYmRl di0+c3RlZXJfcXBuX2NvdW50KTsKKwkJfQogCX0KIAogCWlmIChpYl9yZWdpc3Rlcl9kZXZpY2Uo JmliZGV2LT5pYl9kZXYsIE5VTEwpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3 L21seDQvcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L3FwLmMKaW5kZXggNmY1MGEy MTMzMWVkLi4zZTFlYTAzMjM5ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9t bHg0L3FwLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvcXAuYwpAQCAtMTE1Myw3 ICsxMTUzLDggQEAgaW50IG1seDRfaWJfZGVzdHJveV9xcChzdHJ1Y3QgaWJfcXAgKnFwKQogCWlm IChpc19xcDAoZGV2LCBtcXApKQogCQltbHg0X0NMT1NFX1BPUlQoZGV2LT5kZXYsIG1xcC0+cG9y dCk7CiAKLQlpZiAoZGV2LT5xcDFfcHJveHlbbXFwLT5wb3J0IC0gMV0gPT0gbXFwKSB7CisJaWYg KG1xcC0+bWx4NF9pYl9xcF90eXBlID09IE1MWDRfSUJfUVBUX1BST1hZX0dTSSAmJgorCSAgICBk ZXYtPnFwMV9wcm94eVttcXAtPnBvcnQgLSAxXSA9PSBtcXApIHsKIAkJbXV0ZXhfbG9jaygmZGV2 LT5xcDFfcHJveHlfbG9ja1ttcXAtPnBvcnQgLSAxXSk7CiAJCWRldi0+cXAxX3Byb3h5W21xcC0+ cG9ydCAtIDFdID0gTlVMTDsKIAkJbXV0ZXhfdW5sb2NrKCZkZXYtPnFwMV9wcm94eV9sb2NrW21x cC0+cG9ydCAtIDFdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21h aW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYwppbmRleCBjYWQ4Y2FiNDM1 NTkuLmNiOTM4ODIyYTkxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUv bWFpbi5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYwpAQCAtMzE5LDYg KzMxOSw3IEBAIHN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2Rldmlj ZSAqaWJkZXYsCiAJcHJvcHMtPm1heF90b3RhbF9tY2FzdF9xcF9hdHRhY2ggPSBwcm9wcy0+bWF4 X21jYXN0X3FwX2F0dGFjaCAqCiAJCQkJCSAgIHByb3BzLT5tYXhfbWNhc3RfZ3JwOwogCXByb3Bz LT5tYXhfbWFwX3Blcl9mbXIgPSBJTlRfTUFYOyAvKiBubyBsaW1pdCBpbiBDb25uZWN0SUIgKi8K Kwlwcm9wcy0+bWF4X2FoID0gSU5UX01BWDsKIAogb3V0OgogCWtmcmVlKGluX21hZCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jIGIvZHJpdmVycy9pbmZpbmli YW5kL2h3L21seDUvbXIuYwppbmRleCBiZjc1Yjk0M2JjMzEuLmQxZmQ4YjhmNjVmMCAxMDA2NDQK LS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYworKysgYi9kcml2ZXJzL2luZmlu aWJhbmQvaHcvbWx4NS9tci5jCkBAIC01OTAsNiArNTkwLDMzIEBAIGludCBtbHg1X21yX2NhY2hl X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2 b2lkIHdhaXRfZm9yX2FzeW5jX2NvbW1hbmRzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KQorewor CXN0cnVjdCBtbHg1X21yX2NhY2hlICpjYWNoZSA9ICZkZXYtPmNhY2hlOworCXN0cnVjdCBtbHg1 X2NhY2hlX2VudCAqZW50OworCWludCB0b3RhbCA9IDA7CisJaW50IGk7CisJaW50IGo7CisKKwlm b3IgKGkgPSAwOyBpIDwgTUFYX01SX0NBQ0hFX0VOVFJJRVM7IGkrKykgeworCQllbnQgPSAmY2Fj aGUtPmVudFtpXTsKKwkJZm9yIChqID0gMCA7IGogPCAxMDAwOyBqKyspIHsKKwkJCWlmICghZW50 LT5wZW5kaW5nKQorCQkJCWJyZWFrOworCQkJbXNsZWVwKDUwKTsKKwkJfQorCX0KKwlmb3IgKGkg PSAwOyBpIDwgTUFYX01SX0NBQ0hFX0VOVFJJRVM7IGkrKykgeworCQllbnQgPSAmY2FjaGUtPmVu dFtpXTsKKwkJdG90YWwgKz0gZW50LT5wZW5kaW5nOworCX0KKworCWlmICh0b3RhbCkKKwkJbWx4 NV9pYl93YXJuKGRldiwgImFib3J0ZWQgd2hpbGUgdGhlcmUgYXJlICVkIHBlbmRpbmcgbXIgcmVx dWVzdHNcbiIsIHRvdGFsKTsKKwllbHNlCisJCW1seDVfaWJfd2FybihkZXYsICJkb25lIHdpdGgg YWxsIHBlbmRpbmcgcmVxdWVzdHNcbiIpOworfQorCiBpbnQgbWx4NV9tcl9jYWNoZV9jbGVhbnVw KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KQogewogCWludCBpOwpAQCAtNjAzLDYgKzYzMCw3IEBA IGludCBtbHg1X21yX2NhY2hlX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpCiAJCWNs ZWFuX2tleXMoZGV2LCBpKTsKIAogCWRlc3Ryb3lfd29ya3F1ZXVlKGRldi0+Y2FjaGUud3EpOwor CXdhaXRfZm9yX2FzeW5jX2NvbW1hbmRzKGRldik7CiAJZGVsX3RpbWVyX3N5bmMoJmRldi0+ZGVs YXlfdGltZXIpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQv dWxwL2lwb2liL2lwb2liX2NtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2li X2NtLmMKaW5kZXggOWJmMGM4ZjU5ZDU0Li42ZjI5YmQwNTQ0MWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYworKysgYi9kcml2ZXJzL2luZmluaWJh bmQvdWxwL2lwb2liL2lwb2liX2NtLmMKQEAgLTEwMzgsOCArMTAzOCw2IEBAIHN0YXRpYyBzdHJ1 Y3QgaWJfcXAgKmlwb2liX2NtX2NyZWF0ZV90eF9xcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBz dHJ1Y3QgaXBvaWJfCiAKIAl0eF9xcCA9IGliX2NyZWF0ZV9xcChwcml2LT5wZCwgJmF0dHIpOwog CWlmIChQVFJfRVJSKHR4X3FwKSA9PSAtRUlOVkFMKSB7Ci0JCWlwb2liX3dhcm4ocHJpdiwgImNh bid0IHVzZSBHRlBfTk9JTyBmb3IgUVBzIG9uIGRldmljZSAlcywgdXNpbmcgR0ZQX0tFUk5FTFxu IiwKLQkJCSAgIHByaXYtPmNhLT5uYW1lKTsKIAkJYXR0ci5jcmVhdGVfZmxhZ3MgJj0gfklCX1FQ X0NSRUFURV9VU0VfR0ZQX05PSU87CiAJCXR4X3FwID0gaWJfY3JlYXRlX3FwKHByaXYtPnBkLCAm YXR0cik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9p Yl9tdWx0aWNhc3QuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbXVsdGlj YXN0LmMKaW5kZXggZDRlMDA1NzIwZDAxLi4wYjBmMmM3N2Q3NGQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbXVsdGljYXN0LmMKKysrIGIvZHJpdmVycy9p bmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tdWx0aWNhc3QuYwpAQCAtNTIzLDggKzUyMywxMSBA QCB2b2lkIGlwb2liX21jYXN0X2pvaW5fdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJ aWYgKCF0ZXN0X2JpdChJUE9JQl9NQ0FTVF9SVU4sICZwcml2LT5mbGFncykpCiAJCXJldHVybjsK IAotCWlmIChpYl9xdWVyeV9wb3J0KHByaXYtPmNhLCBwcml2LT5wb3J0LCAmcG9ydF9hdHRyKSB8 fAotCSAgICBwb3J0X2F0dHIuc3RhdGUgIT0gSUJfUE9SVF9BQ1RJVkUpIHsKKwlpZiAoaWJfcXVl cnlfcG9ydChwcml2LT5jYSwgcHJpdi0+cG9ydCwgJnBvcnRfYXR0cikpIHsKKwkJaXBvaWJfZGJn KHByaXYsICJpYl9xdWVyeV9wb3J0KCkgZmFpbGVkXG4iKTsKKwkJcmV0dXJuOworCX0KKwlpZiAo cG9ydF9hdHRyLnN0YXRlICE9IElCX1BPUlRfQUNUSVZFKSB7CiAJCWlwb2liX2RiZyhwcml2LCAi cG9ydCBzdGF0ZSBpcyBub3QgQUNUSVZFIChzdGF0ZSA9ICVkKSBzdXNwZW5kaW5nIGpvaW4gdGFz a1xuIiwKIAkJCSAgcG9ydF9hdHRyLnN0YXRlKTsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9pbnB1dC9zZXJpby9pODA0Mi14ODZpYTY0aW8uaCBiL2RyaXZlcnMvaW5wdXQvc2VyaW8v aTgwNDIteDg2aWE2NGlvLmgKaW5kZXggY2NiMzZmYjU2NWRlLi4zZjNjNTE3ZjIwMzkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2NGlvLmgKKysrIGIvZHJpdmVy cy9pbnB1dC9zZXJpby9pODA0Mi14ODZpYTY0aW8uaApAQCAtMjExLDYgKzIxMSwxMiBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgX19pbml0Y29uc3QgaTgwNDJfZG1pX25vbG9v cF90YWJsZVtdID0gewogCQkJRE1JX01BVENIKERNSV9QUk9EVUNUX1ZFUlNJT04sICJSZXYgMSIp LAogCQl9LAogCX0sCisJeworCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZF TkRPUiwgIlBFR0FUUk9OIENPUlBPUkFUSU9OIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1Rf TkFNRSwgIkMxNUIiKSwKKwkJfSwKKwl9LAogCXsgfQogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pb21tdS9hbWRfaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11LmMKaW5kZXggNzZj NzFlY2JhNjU2Li4wN2FmNTVjYzJkY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kX2lv bW11LmMKKysrIGIvZHJpdmVycy9pb21tdS9hbWRfaW9tbXUuYwpAQCAtMTA0NCw3ICsxMDQ0LDcg QEAgYWdhaW46CiAJbmV4dF90YWlsID0gKHRhaWwgKyBzaXplb2YoKmNtZCkpICUgaW9tbXUtPmNt ZF9idWZfc2l6ZTsKIAlsZWZ0ICAgICAgPSAoaGVhZCAtIG5leHRfdGFpbCkgJSBpb21tdS0+Y21k X2J1Zl9zaXplOwogCi0JaWYgKGxlZnQgPD0gMikgeworCWlmIChsZWZ0IDw9IDB4MjApIHsKIAkJ c3RydWN0IGlvbW11X2NtZCBzeW5jX2NtZDsKIAkJdm9sYXRpbGUgdTY0IHNlbSA9IDA7CiAJCWlu dCByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vbWVzc2FnZS5j IGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL21lc3NhZ2UuYwppbmRleCBhODJlNTQyZmZj MjEuLmZlY2JmMWQyZjYwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29u L21lc3NhZ2UuYworKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vbWVzc2FnZS5jCkBA IC0xMTMwNCw3ICsxMTMwNCw4IEBAIHN0YXRpYyB2b2lkIG1peGVyX25vdGlmeV91cGRhdGUoUExD SSAqcGxjaSwgYnl0ZSBvdGhlcnMpCiAJCQkJKChDQVBJX01TRyAqKSBtc2cpLT5oZWFkZXIubmNj aSA9IDA7CiAJCQkJKChDQVBJX01TRyAqKSBtc2cpLT5pbmZvLmZhY2lsaXR5X3JlcS5TZWxlY3Rv ciA9IFNFTEVDVE9SX0xJTkVfSU5URVJDT05ORUNUOwogCQkJCSgoQ0FQSV9NU0cgKikgbXNnKS0+ aW5mby5mYWNpbGl0eV9yZXEuc3RydWN0c1swXSA9IDM7Ci0JCQkJUFVUX1dPUkQoJigoKENBUElf TVNHICopIG1zZyktPmluZm8uZmFjaWxpdHlfcmVxLnN0cnVjdHNbMV0pLCBMSV9SRVFfU0lMRU5U X1VQREFURSk7CisJCQkJKChDQVBJX01TRyAqKSBtc2cpLT5pbmZvLmZhY2lsaXR5X3JlcS5zdHJ1 Y3RzWzFdID0gTElfUkVRX1NJTEVOVF9VUERBVEUgJiAweGZmOworCQkJCSgoQ0FQSV9NU0cgKikg bXNnKS0+aW5mby5mYWNpbGl0eV9yZXEuc3RydWN0c1syXSA9IExJX1JFUV9TSUxFTlRfVVBEQVRF ID4+IDg7CiAJCQkJKChDQVBJX01TRyAqKSBtc2cpLT5pbmZvLmZhY2lsaXR5X3JlcS5zdHJ1Y3Rz WzNdID0gMDsKIAkJCQl3ID0gYXBpX3B1dChub3RpZnlfcGxjaS0+YXBwbCwgKENBUElfTVNHICop IG1zZyk7CiAJCQkJaWYgKHcgIT0gX1FVRVVFX0ZVTEwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21k L2RtLWNyeXB0LmMgYi9kcml2ZXJzL21kL2RtLWNyeXB0LmMKaW5kZXggMzRlN2RiMWU3MzA0Li5j NDMxODdiNGRjMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY3J5cHQuYworKysgYi9kcml2 ZXJzL21kL2RtLWNyeXB0LmMKQEAgLTE0NDksMTIgKzE0NDksMTUgQEAgc3RhdGljIGludCBjcnlw dF9zZXRfa2V5KHN0cnVjdCBjcnlwdF9jb25maWcgKmNjLCBjaGFyICprZXkpCiAJaWYgKCFjYy0+ a2V5X3NpemUgJiYgc3RyY21wKGtleSwgIi0iKSkKIAkJZ290byBvdXQ7CiAKKwkvKiBjbGVhciB0 aGUgZmxhZyBzaW5jZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBtYXkgaW52YWxpZGF0ZSBwcmV2aW91 c2x5IHZhbGlkIGtleSAqLworCWNsZWFyX2JpdChETV9DUllQVF9LRVlfVkFMSUQsICZjYy0+Zmxh Z3MpOworCiAJaWYgKGNjLT5rZXlfc2l6ZSAmJiBjcnlwdF9kZWNvZGVfa2V5KGNjLT5rZXksIGtl eSwgY2MtPmtleV9zaXplKSA8IDApCiAJCWdvdG8gb3V0OwogCi0Jc2V0X2JpdChETV9DUllQVF9L RVlfVkFMSUQsICZjYy0+ZmxhZ3MpOwotCiAJciA9IGNyeXB0X3NldGtleV9hbGxjcHVzKGNjKTsK KwlpZiAoIXIpCisJCXNldF9iaXQoRE1fQ1JZUFRfS0VZX1ZBTElELCAmY2MtPmZsYWdzKTsKIAog b3V0OgogCS8qIEhleCBrZXkgc3RyaW5nIG5vdCBuZWVkZWQgYWZ0ZXIgaGVyZSwgc28gd2lwZSBp dC4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0uYwppbmRl eCAzNWNhYTRjMTdjM2QuLmQwNDNlNTBlYmVhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS5j CisrKyBiL2RyaXZlcnMvbWQvZG0uYwpAQCAtODY4LDYgKzg2OCw5IEBAIHN0YXRpYyB2b2lkIGVu ZF9jbG9uZV9iaW8oc3RydWN0IGJpbyAqY2xvbmUsIGludCBlcnJvcikKICAqLwogc3RhdGljIHZv aWQgcnFfY29tcGxldGVkKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCwgaW50IHJ3LCBpbnQgcnVu X3F1ZXVlKQogeworCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gbWQtPnF1ZXVlOworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKIAlhdG9taWNfZGVjKCZtZC0+cGVuZGluZ1tyd10pOwogCiAJLyog bnVkZ2UgYW55b25lIHdhaXRpbmcgb24gc3VzcGVuZCBxdWV1ZSAqLwpAQCAtODgwLDggKzg4Mywx MSBAQCBzdGF0aWMgdm9pZCBycV9jb21wbGV0ZWQoc3RydWN0IG1hcHBlZF9kZXZpY2UgKm1kLCBp bnQgcncsIGludCBydW5fcXVldWUpCiAJICogYmFjayBpbnRvIC0+cmVxdWVzdF9mbigpIGNvdWxk IGRlYWRsb2NrIGF0dGVtcHRpbmcgdG8gZ3JhYiB0aGUKIAkgKiBxdWV1ZSBsb2NrIGFnYWluLgog CSAqLwotCWlmIChydW5fcXVldWUpCi0JCWJsa19ydW5fcXVldWVfYXN5bmMobWQtPnF1ZXVlKTsK KwlpZiAocnVuX3F1ZXVlKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKHEtPnF1ZXVlX2xvY2ssIGZs YWdzKTsKKwkJYmxrX3J1bl9xdWV1ZV9hc3luYyhxKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZShxLT5xdWV1ZV9sb2NrLCBmbGFncyk7CisJfQogCiAJLyoKIAkgKiBkbV9wdXQoKSBtdXN0IGJl IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gU2VlIHRoZSBjb21tZW50IGFib3ZlCmRpZmYg LS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMKaW5kZXggNjBkNTdiYWQz MGJiLi40ZGIwOTJjZjNhMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuYworKysgYi9kcml2 ZXJzL21kL21kLmMKQEAgLTY0NTMsNyArNjQ1Myw3IEBAIHN0YXRpYyBpbnQgbWRfaW9jdGwoc3Ry dWN0IGJsb2NrX2RldmljZSAqYmRldiwgZm1vZGVfdCBtb2RlLAogCQkvKiBuZWVkIHRvIGVuc3Vy ZSByZWNvdmVyeSB0aHJlYWQgaGFzIHJ1biAqLwogCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGVf dGltZW91dChtZGRldi0+c2Jfd2FpdCwKIAkJCQkJCSAhdGVzdF9iaXQoTURfUkVDT1ZFUllfTkVF REVELAotCQkJCQkJCSAgICZtZGRldi0+ZmxhZ3MpLAorCQkJCQkJCSAgICZtZGRldi0+cmVjb3Zl cnkpLAogCQkJCQkJIG1zZWNzX3RvX2ppZmZpZXMoNTAwMCkpOwogCWlmIChjbWQgPT0gU1RPUF9B UlJBWSB8fCBjbWQgPT0gU1RPUF9BUlJBWV9STykgewogCQkvKiBOZWVkIHRvIGZsdXNoIHBhZ2Ug Y2FjaGUsIGFuZCBlbnN1cmUgbm8tb25lIGVsc2Ugb3BlbnMKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvcGVyc2lzdGVudC1kYXRhL2RtLXNwYWNlLW1hcC1tZXRhZGF0YS5jIGIvZHJpdmVycy9tZC9w ZXJzaXN0ZW50LWRhdGEvZG0tc3BhY2UtbWFwLW1ldGFkYXRhLmMKaW5kZXggMDMyZWUzOWEwZTli Li44MTE0YTI5ODM5YzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcGVyc2lzdGVudC1kYXRhL2Rt LXNwYWNlLW1hcC1tZXRhZGF0YS5jCisrKyBiL2RyaXZlcnMvbWQvcGVyc2lzdGVudC1kYXRhL2Rt LXNwYWNlLW1hcC1tZXRhZGF0YS5jCkBAIC03NzMsMTcgKzc3MywxNSBAQCBpbnQgZG1fc21fbWV0 YWRhdGFfY3JlYXRlKHN0cnVjdCBkbV9zcGFjZV9tYXAgKnNtLAogCW1lbWNweSgmc21tLT5zbSwg JmJvb3RzdHJhcF9vcHMsIHNpemVvZihzbW0tPnNtKSk7CiAKIAlyID0gc21fbGxfbmV3X21ldGFk YXRhKCZzbW0tPmxsLCB0bSk7CisJaWYgKCFyKSB7CisJCWlmIChucl9ibG9ja3MgPiBETV9TTV9N RVRBREFUQV9NQVhfQkxPQ0tTKQorCQkJbnJfYmxvY2tzID0gRE1fU01fTUVUQURBVEFfTUFYX0JM T0NLUzsKKwkJciA9IHNtX2xsX2V4dGVuZCgmc21tLT5sbCwgbnJfYmxvY2tzKTsKKwl9CisJbWVt Y3B5KCZzbW0tPnNtLCAmb3BzLCBzaXplb2Yoc21tLT5zbSkpOwogCWlmIChyKQogCQlyZXR1cm4g cjsKIAotCWlmIChucl9ibG9ja3MgPiBETV9TTV9NRVRBREFUQV9NQVhfQkxPQ0tTKQotCQlucl9i bG9ja3MgPSBETV9TTV9NRVRBREFUQV9NQVhfQkxPQ0tTOwotCXIgPSBzbV9sbF9leHRlbmQoJnNt bS0+bGwsIG5yX2Jsb2Nrcyk7Ci0JaWYgKHIpCi0JCXJldHVybiByOwotCi0JbWVtY3B5KCZzbW0t PnNtLCAmb3BzLCBzaXplb2Yoc21tLT5zbSkpOwotCiAJLyoKIAkgKiBOb3cgd2UgbmVlZCB0byB1 cGRhdGUgdGhlIG5ld2x5IGNyZWF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdGhlCiAJICogYWxs b2NhdGVkIGJsb2NrcyB0aGF0IHRoZXkgd2VyZSBidWlsdCBmcm9tLgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDlkOWQ3NTdhMzQ4OC4u NjNhMDk0MTY2MTM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LmMKKysrIGIvZHJpdmVy cy9tZC9yYWlkNS5jCkBAIC02MjIyLDYgKzYyMjIsMTUgQEAgc3RhdGljIGludCBydW4oc3RydWN0 IG1kZGV2ICptZGRldikKIAkJCXN0cmlwZSA9IChzdHJpcGUgfCAoc3RyaXBlLTEpKSArIDE7CiAJ CW1kZGV2LT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gc3RyaXBlOwogCQltZGRl di0+cXVldWUtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0gc3RyaXBlOworCisJCS8qCisJ CSAqIFdlIHVzZSAxNi1iaXQgY291bnRlciBvZiBhY3RpdmUgc3RyaXBlcyBpbiBiaV9waHlzX3Nl Z21lbnRzCisJCSAqIChtaW51cyBvbmUgZm9yIG92ZXItbG9hZGVkIGluaXRpYWxpemF0aW9uKQor CQkgKi8KKwkJYmxrX3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgMHhmZmZlICog U1RSSVBFX1NFQ1RPUlMpOworCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhtZGRldi0+ cXVldWUsCisJCQkJCSAgICAgIDB4ZmZmZSAqIFNUUklQRV9TRUNUT1JTKTsKKwogCQkvKgogCQkg KiB1bmFsaWduZWQgcGFydCBvZiBkaXNjYXJkIHJlcXVlc3Qgd2lsbCBiZSBpZ25vcmVkLCBzbyBj YW4ndAogCQkgKiBndWFyYW50ZWUgZGlzY2FyZF96ZXJvZXNfZGF0YQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9pMmMvS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvaTJjL0tjb25maWcKaW5kZXgg NDQxMDUzYmU3ZjU1Li40MmJlMWU5NDRiODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvaTJj L0tjb25maWcKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZpZwpAQCAtNTkwLDYgKzU5MCw3 IEBAIGNvbmZpZyBWSURFT19TNUs2QTMKIGNvbmZpZyBWSURFT19TNUs0RUNHWAogICAgICAgICB0 cmlzdGF0ZSAiU2Ftc3VuZyBTNUs0RUNHWCBzZW5zb3Igc3VwcG9ydCIKICAgICAgICAgZGVwZW5k cyBvbiBJMkMgJiYgVklERU9fVjRMMiAmJiBWSURFT19WNEwyX1NVQkRFVl9BUEkKKwlzZWxlY3Qg Q1JDMzIKICAgICAgICAgLS0taGVscC0tLQogICAgICAgICAgIFRoaXMgaXMgYSBWNEwyIHNlbnNv ci1sZXZlbCBkcml2ZXIgZm9yIFNhbXN1bmcgUzVLNEVDR1ggNU0KICAgICAgICAgICBjYW1lcmEg c2Vuc29yIHdpdGggYW4gZW1iZWRkZWQgU29DIGltYWdlIHNpZ25hbCBwcm9jZXNzb3IuCmRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2RhdmluY2kvdnBmZV9jYXB0dXJlLmMgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2RhdmluY2kvdnBmZV9jYXB0dXJlLmMKaW5kZXggYTUxYmRh MmZiNjM3Li5mZjEwYzJlOTBhNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v ZGF2aW5jaS92cGZlX2NhcHR1cmUuYworKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2Rhdmlu Y2kvdnBmZV9jYXB0dXJlLmMKQEAgLTE5NjcsNiArMTk2Nyw3IEBAIHN0YXRpYyBpbnQgdnBmZV9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJdjRsMl9pbmZvKCZ2cGZlX2Rl di0+djRsMl9kZXYsCiAJCQkJICAidjRsMiBzdWIgZGV2aWNlICVzIHJlZ2lzdGVyIGZhaWxzXG4i LAogCQkJCSAgc2RpbmZvLT5uYW1lKTsKKwkJCXJldCA9IC1FTlhJTzsKIAkJCWdvdG8gcHJvYmVf c2Rfb3V0OwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9pdGUtY2lyLmMg Yi9kcml2ZXJzL21lZGlhL3JjL2l0ZS1jaXIuYwppbmRleCBhYjI0Y2M2ZDM2NTUuLjY1NzQwMDkz NDAzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9pdGUtY2lyLmMKKysrIGIvZHJpdmVy cy9tZWRpYS9yYy9pdGUtY2lyLmMKQEAgLTI2Myw2ICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBpdGVf c2V0X2NhcnJpZXJfcGFyYW1zKHN0cnVjdCBpdGVfZGV2ICpkZXYpCiAKIAkJCWlmIChhbGxvd2Fu Y2UgPiBJVEVfUlhEQ1JfTUFYKQogCQkJCWFsbG93YW5jZSA9IElURV9SWERDUl9NQVg7CisKKwkJ CXVzZV9kZW1vZHVsYXRvciA9IHRydWU7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvdXNiL3NpYW5vL3Ntc3VzYi5jIGIvZHJpdmVycy9tZWRpYS91c2Ivc2lhbm8vc21zdXNi LmMKaW5kZXggODljODZlZTJiMjI1Li5kY2I4ZDE0ZTViZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWVkaWEvdXNiL3NpYW5vL3Ntc3VzYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL3NpYW5vL3Nt c3VzYi5jCkBAIC0yMDYsMjIgKzIwNiwzMCBAQCBzdGF0aWMgaW50IHNtc3VzYl9zdGFydF9zdHJl YW1pbmcoc3RydWN0IHNtc3VzYl9kZXZpY2VfdCAqZGV2KQogc3RhdGljIGludCBzbXN1c2Jfc2Vu ZHJlcXVlc3Qodm9pZCAqY29udGV4dCwgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKIAlz dHJ1Y3Qgc21zdXNiX2RldmljZV90ICpkZXYgPSAoc3RydWN0IHNtc3VzYl9kZXZpY2VfdCAqKSBj b250ZXh0OwotCXN0cnVjdCBzbXNfbXNnX2hkciAqcGhkciA9IChzdHJ1Y3Qgc21zX21zZ19oZHIg KikgYnVmZmVyOwotCWludCBkdW1teTsKKwlzdHJ1Y3Qgc21zX21zZ19oZHIgKnBoZHI7CisJaW50 IGR1bW15LCByZXQ7CiAKIAlpZiAoZGV2LT5zdGF0ZSAhPSBTTVNVU0JfQUNUSVZFKSB7CiAJCXNt c19kZWJ1ZygiRGV2aWNlIG5vdCBhY3RpdmUgeWV0Iik7CiAJCXJldHVybiAtRU5PRU5UOwogCX0K IAorCXBoZHIgPSBrbWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCWlmICghcGhkcikKKwkJcmV0 dXJuIC1FTk9NRU07CisJbWVtY3B5KHBoZHIsIGJ1ZmZlciwgc2l6ZSk7CisKIAlzbXNfZGVidWco InNlbmRpbmcgJXMoJWQpIHNpemU6ICVkIiwKIAkJICBzbXNjb3JlX3RyYW5zbGF0ZV9tc2cocGhk ci0+bXNnX3R5cGUpLCBwaGRyLT5tc2dfdHlwZSwKIAkJICBwaGRyLT5tc2dfbGVuZ3RoKTsKIAog CXNtc2VuZGlhbl9oYW5kbGVfdHhfbWVzc2FnZSgoc3RydWN0IHNtc19tc2dfZGF0YSAqKSBwaGRy KTsKLQlzbXNlbmRpYW5faGFuZGxlX21lc3NhZ2VfaGVhZGVyKChzdHJ1Y3Qgc21zX21zZ19oZHIg KilidWZmZXIpOwotCXJldHVybiB1c2JfYnVsa19tc2coZGV2LT51ZGV2LCB1c2Jfc25kYnVsa3Bp cGUoZGV2LT51ZGV2LCAyKSwKLQkJCSAgICBidWZmZXIsIHNpemUsICZkdW1teSwgMTAwMCk7CisJ c21zZW5kaWFuX2hhbmRsZV9tZXNzYWdlX2hlYWRlcigoc3RydWN0IHNtc19tc2dfaGRyICopcGhk cik7CisJcmV0ID0gdXNiX2J1bGtfbXNnKGRldi0+dWRldiwgdXNiX3NuZGJ1bGtwaXBlKGRldi0+ dWRldiwgMiksCisJCQkgICAgcGhkciwgc2l6ZSwgJmR1bW15LCAxMDAwKTsKKworCWtmcmVlKHBo ZHIpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBjaGFyICpzbXN1c2IxX2Z3X2xrdXBbXSA9 IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9tZWkvY2xpZW50LmMgYi9kcml2ZXJzL21pc2Mv bWVpL2NsaWVudC5jCmluZGV4IGE0YWZhOTk2ZDQxMy4uZWQ4NDVlZmE4ZmQ0IDEwMDY0NAotLS0g YS9kcml2ZXJzL21pc2MvbWVpL2NsaWVudC5jCisrKyBiL2RyaXZlcnMvbWlzYy9tZWkvY2xpZW50 LmMKQEAgLTgxOSw3ICs4MTksNyBAQCBpbnQgbWVpX2NsX2lycV93cml0ZShzdHJ1Y3QgbWVpX2Ns ICpjbCwgc3RydWN0IG1laV9jbF9jYiAqY2IsCiAKIAlyZXRzID0gbWVpX2NsX2Zsb3dfY3RybF9j cmVkcyhjbCk7CiAJaWYgKHJldHMgPCAwKQotCQlyZXR1cm4gcmV0czsKKwkJZ290byBlcnI7CiAK IAlpZiAocmV0cyA9PSAwKSB7CiAJCWNsX2RiZyhkZXYsIGNsLCAiTm8gZmxvdyBjb250cm9sIGNy ZWRlbnRpYWxzOiBub3Qgc2VuZGluZy5cbiIpOwpAQCAtODUzLDIzICs4NTMsMjcgQEAgaW50IG1l aV9jbF9pcnFfd3JpdGUoc3RydWN0IG1laV9jbCAqY2wsIHN0cnVjdCBtZWlfY2xfY2IgKmNiLAog CQkJY2ItPnJlcXVlc3RfYnVmZmVyLnNpemUsIGNiLT5idWZfaWR4KTsKIAogCXJldHMgPSBtZWlf d3JpdGVfbWVzc2FnZShkZXYsICZtZWlfaGRyLCBidWYtPmRhdGEgKyBjYi0+YnVmX2lkeCk7Ci0J aWYgKHJldHMpIHsKLQkJY2wtPnN0YXR1cyA9IHJldHM7Ci0JCWxpc3RfbW92ZV90YWlsKCZjYi0+ bGlzdCwgJmNtcGxfbGlzdC0+bGlzdCk7Ci0JCXJldHVybiByZXRzOwotCX0KKwlpZiAocmV0cykK KwkJZ290byBlcnI7CiAKIAljbC0+c3RhdHVzID0gMDsKIAljbC0+d3JpdGluZ19zdGF0ZSA9IE1F SV9XUklUSU5HOwogCWNiLT5idWZfaWR4ICs9IG1laV9oZHIubGVuZ3RoOwogCiAJaWYgKG1laV9o ZHIubXNnX2NvbXBsZXRlKSB7Ci0JCWlmIChtZWlfY2xfZmxvd19jdHJsX3JlZHVjZShjbCkpCi0J CQlyZXR1cm4gLUVJTzsKKwkJaWYgKG1laV9jbF9mbG93X2N0cmxfcmVkdWNlKGNsKSkgeworCQkJ cmV0cyA9IC1FSU87CisJCQlnb3RvIGVycjsKKwkJfQogCQlsaXN0X21vdmVfdGFpbCgmY2ItPmxp c3QsICZkZXYtPndyaXRlX3dhaXRpbmdfbGlzdC5saXN0KTsKIAl9CiAKIAlyZXR1cm4gMDsKKwor ZXJyOgorCWNsLT5zdGF0dXMgPSByZXRzOworCWxpc3RfbW92ZV90YWlsKCZjYi0+bGlzdCwgJmNt cGxfbGlzdC0+bGlzdCk7CisJcmV0dXJuIHJldHM7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tbWMvY29yZS9tbWMuYyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMKaW5kZXggMDk0YmE4 YjhkYzNhLi5kODdmODFmM2VhZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMK KysrIGIvZHJpdmVycy9tbWMvY29yZS9tbWMuYwpAQCAtMTM5MSwxMCArMTM5MSwxMCBAQCBzdGF0 aWMgaW50IG1tY19pbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLAogCQll cnIgPSBtbWNfc2VsZWN0X2hzNDAwKGNhcmQpOwogCQlpZiAoZXJyKQogCQkJZ290byBlcnI7Ci0J fSBlbHNlIGlmIChtbWNfY2FyZF9ocyhjYXJkKSkgeworCX0gZWxzZSB7CiAJCS8qIFNlbGVjdCB0 aGUgZGVzaXJlZCBidXMgd2lkdGggb3B0aW9uYWxseSAqLwogCQllcnIgPSBtbWNfc2VsZWN0X2J1 c193aWR0aChjYXJkKTsKLQkJaWYgKCFJU19FUlJfVkFMVUUoZXJyKSkgeworCQlpZiAoIUlTX0VS Ul9WQUxVRShlcnIpICYmIG1tY19jYXJkX2hzKGNhcmQpKSB7CiAJCQllcnIgPSBtbWNfc2VsZWN0 X2hzX2RkcihjYXJkKTsKIAkJCWlmIChlcnIpCiAJCQkJZ290byBlcnI7CmRpZmYgLS1naXQgYS9k cml2ZXJzL21tYy9ob3N0L214cy1tbWMuYyBiL2RyaXZlcnMvbW1jL2hvc3QvbXhzLW1tYy5jCmlu ZGV4IGFkMzJmMjM1YmRiOC4uNWJiYzBlNjRiYWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9o b3N0L214cy1tbWMuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L214cy1tbWMuYwpAQCAtMzA4LDYg KzMwOCw5IEBAIHN0YXRpYyB2b2lkIG14c19tbWNfYWMoc3RydWN0IG14c19tbWNfaG9zdCAqaG9z dCkKIAljbWQwID0gQkZfU1NQKGNtZC0+b3Bjb2RlLCBDTUQwX0NNRCk7CiAJY21kMSA9IGNtZC0+ YXJnOwogCisJaWYgKGNtZC0+b3Bjb2RlID09IE1NQ19TVE9QX1RSQU5TTUlTU0lPTikKKwkJY21k MCB8PSBCTV9TU1BfQ01EMF9BUFBFTkRfOENZQzsKKwogCWlmIChob3N0LT5zZGlvX2lycV9lbikg ewogCQljdHJsMCB8PSBCTV9TU1BfQ1RSTDBfU0RJT19JUlFfQ0hFQ0s7CiAJCWNtZDAgfD0gQk1f U1NQX0NNRDBfQ09OVF9DTEtJTkdfRU4gfCBCTV9TU1BfQ01EMF9TTE9XX0NMS0lOR19FTjsKQEAg LTQxNiw4ICs0MTksNyBAQCBzdGF0aWMgdm9pZCBteHNfbW1jX2FkdGMoc3RydWN0IG14c19tbWNf aG9zdCAqaG9zdCkKIAkJICAgICAgIHNzcC0+YmFzZSArIEhXX1NTUF9CTE9DS19TSVpFKTsKIAl9 CiAKLQlpZiAoKGNtZC0+b3Bjb2RlID09IE1NQ19TVE9QX1RSQU5TTUlTU0lPTikgfHwKLQkgICAg KGNtZC0+b3Bjb2RlID09IFNEX0lPX1JXX0VYVEVOREVEKSkKKwlpZiAoY21kLT5vcGNvZGUgPT0g U0RfSU9fUldfRVhURU5ERUQpCiAJCWNtZDAgfD0gQk1fU1NQX0NNRDBfQVBQRU5EXzhDWUM7CiAK IAljbWQxID0gY21kLT5hcmc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMg Yi9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMKaW5kZXggNTExNDIwNmRmMDUzLi43OWQ3YTEwMDI4 YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYworKysgYi9kcml2ZXJzL21t Yy9ob3N0L3NkaGNpLmMKQEAgLTE5NTksNyArMTk1OSwyNyBAQCBzdGF0aWMgaW50IHNkaGNpX2V4 ZWN1dGVfdHVuaW5nKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCB1MzIgb3Bjb2RlKQogCQkJY3RybCAm PSB+U0RIQ0lfQ1RSTF9FWEVDX1RVTklORzsKIAkJCXNkaGNpX3dyaXRldyhob3N0LCBjdHJsLCBT REhDSV9IT1NUX0NPTlRST0wyKTsKIAorCQkJc2RoY2lfZG9fcmVzZXQoaG9zdCwgU0RIQ0lfUkVT RVRfQ01EKTsKKwkJCXNkaGNpX2RvX3Jlc2V0KGhvc3QsIFNESENJX1JFU0VUX0RBVEEpOworCiAJ CQllcnIgPSAtRUlPOworCisJCQlpZiAoY21kLm9wY29kZSAhPSBNTUNfU0VORF9UVU5JTkdfQkxP Q0tfSFMyMDApCisJCQkJZ290byBvdXQ7CisKKwkJCXNkaGNpX3dyaXRlbChob3N0LCBob3N0LT5p ZXIsIFNESENJX0lOVF9FTkFCTEUpOworCQkJc2RoY2lfd3JpdGVsKGhvc3QsIGhvc3QtPmllciwg U0RIQ0lfU0lHTkFMX0VOQUJMRSk7CisKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3Qt PmxvY2ssIGZsYWdzKTsKKworCQkJbWVtc2V0KCZjbWQsIDAsIHNpemVvZihjbWQpKTsKKwkJCWNt ZC5vcGNvZGUgPSBNTUNfU1RPUF9UUkFOU01JU1NJT047CisJCQljbWQuZmxhZ3MgPSBNTUNfUlNQ X1NQSV9SMUIgfCBNTUNfUlNQX1IxQiB8IE1NQ19DTURfQUM7CisJCQljbWQuYnVzeV90aW1lb3V0 ID0gNTA7CisJCQltbWNfd2FpdF9mb3JfY21kKG1tYywgJmNtZCwgMCk7CisKKwkJCXNwaW5fbG9j a19pcnFzYXZlKCZob3N0LT5sb2NrLCBmbGFncyk7CisKIAkJCWdvdG8gb3V0OwogCQl9CiAKQEAg LTI0NjUsNyArMjQ4NSw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBzZGhjaV9pcnEoaW50IGlycSwg dm9pZCAqZGV2X2lkKQogCQkJcHJfZXJyKCIlczogQ2FyZCBpcyBjb25zdW1pbmcgdG9vIG11Y2gg cG93ZXIhXG4iLAogCQkJCW1tY19ob3N0bmFtZShob3N0LT5tbWMpKTsKIAotCQlpZiAoaW50bWFz ayAmIFNESENJX0lOVF9DQVJEX0lOVCkgeworCQlpZiAoKGludG1hc2sgJiBTREhDSV9JTlRfQ0FS RF9JTlQpICYmCisJCSAgICAoaG9zdC0+aWVyICYgU0RIQ0lfSU5UX0NBUkRfSU5UKSkgewogCQkJ c2RoY2lfZW5hYmxlX3NkaW9faXJxX25vbG9jayhob3N0LCBmYWxzZSk7CiAJCQlob3N0LT50aHJl YWRfaXNyIHw9IFNESENJX0lOVF9DQVJEX0lOVDsKIAkJCXJlc3VsdCA9IElSUV9XQUtFX1RIUkVB RDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL25h bmQvS2NvbmZpZwppbmRleCBmMWNmNTAzNTE3ZmQuLmZhMWJiMDIyM2EwMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZwpA QCAtNTA2LDcgKzUwNiw3IEBAIGNvbmZpZyBNVERfTkFORF9GU01DCiAJICBGbGV4aWJsZSBTdGF0 aWMgTWVtb3J5IENvbnRyb2xsZXIgKEZTTUMpCiAKIGNvbmZpZyBNVERfTkFORF9YV0FZCi0JdHJp c3RhdGUgIlN1cHBvcnQgZm9yIE5BTkQgb24gTGFudGlxIFhXQVkgU29DIgorCWJvb2wgIlN1cHBv cnQgZm9yIE5BTkQgb24gTGFudGlxIFhXQVkgU29DIgogCWRlcGVuZHMgb24gTEFOVElRICYmIFNP Q19UWVBFX1hXQVkKIAlzZWxlY3QgTVREX05BTkRfUExBVEZPUk0KIAloZWxwCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jIGIvZHJpdmVycy9uZXQvYm9uZGlu Zy9ib25kX25ldGxpbmsuYwppbmRleCA4NjI2YmMwY2IyYWYuLjFiNzU0NTY4MGVhZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYworKysgYi9kcml2ZXJzL25l dC9ib25kaW5nL2JvbmRfbmV0bGluay5jCkBAIC0zNjUsNyArMzY1LDExIEBAIHN0YXRpYyBpbnQg Ym9uZF9uZXdsaW5rKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpib25k X2RldiwKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAotCXJldHVybiByZWdpc3Rlcl9u ZXRkZXZpY2UoYm9uZF9kZXYpOworCWVyciA9IHJlZ2lzdGVyX25ldGRldmljZShib25kX2Rldik7 CisKKwluZXRpZl9jYXJyaWVyX29mZihib25kX2Rldik7CisKKwlyZXR1cm4gZXJyOwogfQogCiBz dGF0aWMgc2l6ZV90IGJvbmRfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRf ZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX3BjaS5jIGIvZHJp dmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX3BjaS5jCmluZGV4IDVkMTFlMGU0MjI1Yi4uYjk5NzUw OGVhN2M2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fcGNpLmMKKysr IGIvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX3BjaS5jCkBAIC0xNjEsNiArMTYxLDcgQEAg c3RhdGljIGludCBjX2Nhbl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAKIAlkZXYt PmlycSA9IHBkZXYtPmlycTsKIAlwcml2LT5iYXNlID0gYWRkcjsKKwlwcml2LT5kZXZpY2UgPSAm cGRldi0+ZGV2OwogCiAJaWYgKCFjX2Nhbl9wY2lfZGF0YS0+ZnJlcSkgewogCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJubyBjbG9jayBmcmVxdWVuY3kgZGVmaW5lZFxuIik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jIGIvZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYwppbmRl eCAyNThiOWM0ODU2ZWMuLjM4NmQyYzAyZTE4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2Fu L3RpX2hlY2MuYworKysgYi9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jCkBAIC05NTAsNyArOTUw LDEyIEBAIHN0YXRpYyBpbnQgdGlfaGVjY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogCW5ldGlmX25hcGlfYWRkKG5kZXYsICZwcml2LT5uYXBpLCB0aV9oZWNjX3J4X3BvbGws CiAJCUhFQ0NfREVGX05BUElfV0VJR0hUKTsKIAotCWNsa19lbmFibGUocHJpdi0+Y2xrKTsKKwll cnIgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+Y2xrKTsKKwlpZiAoZXJyKSB7CisJCWRldl9l cnIoJnBkZXYtPmRldiwgImNsa19wcmVwYXJlX2VuYWJsZSgpIGZhaWxlZFxuIik7CisJCWdvdG8g cHJvYmVfZXhpdF9jbGs7CisJfQorCiAJZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpOwogCWlm IChlcnIpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVnaXN0ZXJfY2FuZGV2KCkgZmFpbGVk XG4iKTsKQEAgLTk4Myw3ICs5ODgsNyBAQCBzdGF0aWMgaW50IHRpX2hlY2NfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJc3RydWN0IHRpX2hlY2NfcHJpdiAqcHJpdiA9IG5l dGRldl9wcml2KG5kZXYpOwogCiAJdW5yZWdpc3Rlcl9jYW5kZXYobmRldik7Ci0JY2xrX2Rpc2Fi bGUocHJpdi0+Y2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKIAljbGtf cHV0KHByaXYtPmNsayk7CiAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsKIAlpb3VubWFwKHByaXYtPmJhc2UpOwpAQCAtMTAwOCw3ICsxMDEzLDcg QEAgc3RhdGljIGludCB0aV9oZWNjX3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwgcG1fbWVzc2FnZV90IHN0YXRlKQogCWhlY2Nfc2V0X2JpdChwcml2LCBIRUNDX0NBTk1DLCBI RUNDX0NBTk1DX1BEUik7CiAJcHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX1NMRUVQSU5HOwog Ci0JY2xrX2Rpc2FibGUocHJpdi0+Y2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+ Y2xrKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTAxNyw4ICsxMDIyLDExIEBAIHN0YXRpYyBpbnQg dGlfaGVjY19yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAJc3RydWN0IHRp X2hlY2NfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CisJaW50IGVycjsKIAotCWNsa19l bmFibGUocHJpdi0+Y2xrKTsKKwllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+Y2xrKTsK KwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOwogCiAJaGVjY19jbGVhcl9iaXQocHJpdiwgSEVDQ19D QU5NQywgSEVDQ19DQU5NQ19QRFIpOwogCXByaXYtPmNhbi5zdGF0ZSA9IENBTl9TVEFURV9FUlJP Ul9BQ1RJVkU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9t YWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9tYWluLmMKaW5kZXggZTc1 MWI1ZGIwMTMyLi4wNGM4NWI5NDc1NGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2F0aGVyb3MvYWx4L21haW4uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2Fs eC9tYWluLmMKQEAgLTg2LDkgKzg2LDE0IEBAIHN0YXRpYyBpbnQgYWx4X3JlZmlsbF9yeF9yaW5n KHN0cnVjdCBhbHhfcHJpdiAqYWx4LCBnZnBfdCBnZnApCiAJd2hpbGUgKCFjdXJfYnVmLT5za2Ig JiYgbmV4dCAhPSByeHEtPnJlYWRfaWR4KSB7CiAJCXN0cnVjdCBhbHhfcmZkICpyZmQgPSAmcnhx LT5yZmRbY3VyXTsKIAotCQlza2IgPSBfX25ldGRldl9hbGxvY19za2IoYWx4LT5kZXYsIGFseC0+ cnhidWZfc2l6ZSwgZ2ZwKTsKKwkJc2tiID0gX19uZXRkZXZfYWxsb2Nfc2tiKGFseC0+ZGV2LCBh bHgtPnJ4YnVmX3NpemUgKyA2NCwgZ2ZwKTsKIAkJaWYgKCFza2IpCiAJCQlicmVhazsKKworCQkv KiBXb3Jrcm91bmQgZm9yIHRoZSBIVyBSWCBETUEgb3ZlcmZsb3cgaXNzdWUgKi8KKwkJaWYgKCgo dW5zaWduZWQgbG9uZylza2ItPmRhdGEgJiAweGZmZikgPT0gMHhmYzApCisJCQlza2JfcmVzZXJ2 ZShza2IsIDY0KTsKKwogCQlkbWEgPSBkbWFfbWFwX3NpbmdsZSgmYWx4LT5ody5wZGV2LT5kZXYs CiAJCQkJICAgICBza2ItPmRhdGEsIGFseC0+cnhidWZfc2l6ZSwKIAkJCQkgICAgIERNQV9GUk9N X0RFVklDRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21z eXNwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMKaW5k ZXggM2NjYTYwNDc1NzhiLi40ZDc2MjEzOGViMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9i cm9hZGNvbS9iY21zeXNwb3J0LmMKQEAgLTU4NywxMSArNTg3LDggQEAgc3RhdGljIHVuc2lnbmVk IGludCBfX2JjbV9zeXNwb3J0X3R4X3JlY2xhaW0oc3RydWN0IGJjbV9zeXNwb3J0X3ByaXYgKnBy aXYsCiAJdW5zaWduZWQgaW50IGNfaW5kZXgsIGxhc3RfY19pbmRleCwgbGFzdF90eF9jbiwgbnVt X3R4X2NiczsKIAl1bnNpZ25lZCBpbnQgcGt0c19jb21wbCA9IDAsIGJ5dGVzX2NvbXBsID0gMDsK IAlzdHJ1Y3QgYmNtX3N5c3BvcnRfY2IgKmNiOwotCXN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTsK IAl1MzIgaHdfaW5kOwogCi0JdHhxID0gbmV0ZGV2X2dldF90eF9xdWV1ZShuZGV2LCByaW5nLT5p bmRleCk7Ci0KIAkvKiBDb21wdXRlIGhvdyBtYW55IGRlc2NyaXB0b3JzIGhhdmUgYmVlbiBwcm9j ZXNzZWQgc2luY2UgbGFzdCBjYWxsICovCiAJaHdfaW5kID0gdGRtYV9yZWFkbChwcml2LCBURE1B X0RFU0NfUklOR19QUk9EX0NPTlNfSU5ERVgocmluZy0+aW5kZXgpKTsKIAljX2luZGV4ID0gKGh3 X2luZCA+PiBSSU5HX0NPTlNfSU5ERVhfU0hJRlQpICYgUklOR19DT05TX0lOREVYX01BU0s7CkBA IC02MjIsOSArNjE5LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBfX2JjbV9zeXNwb3J0X3R4X3Jl Y2xhaW0oc3RydWN0IGJjbV9zeXNwb3J0X3ByaXYgKnByaXYsCiAKIAlyaW5nLT5jX2luZGV4ID0g Y19pbmRleDsKIAotCWlmIChuZXRpZl90eF9xdWV1ZV9zdG9wcGVkKHR4cSkgJiYgcGt0c19jb21w bCkKLQkJbmV0aWZfdHhfd2FrZV9xdWV1ZSh0eHEpOwotCiAJbmV0aWZfZGJnKHByaXYsIHR4X2Rv bmUsIG5kZXYsCiAJCQkicmluZz0lZCBjX2luZGV4PSVkIHBrdHNfY29tcGw9JWQsIGJ5dGVzX2Nv bXBsPSVkXG4iLAogCQkJcmluZy0+aW5kZXgsIHJpbmctPmNfaW5kZXgsIHBrdHNfY29tcGwsIGJ5 dGVzX2NvbXBsKTsKQEAgLTYzNiwxNiArNjMwLDMzIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19i Y21fc3lzcG9ydF90eF9yZWNsYWltKHN0cnVjdCBiY21fc3lzcG9ydF9wcml2ICpwcml2LAogc3Rh dGljIHVuc2lnbmVkIGludCBiY21fc3lzcG9ydF90eF9yZWNsYWltKHN0cnVjdCBiY21fc3lzcG9y dF9wcml2ICpwcml2LAogCQkJCQkgICBzdHJ1Y3QgYmNtX3N5c3BvcnRfdHhfcmluZyAqcmluZykK IHsKKwlzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHE7CiAJdW5zaWduZWQgaW50IHJlbGVhc2VkOwog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKKwl0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYt Pm5ldGRldiwgcmluZy0+aW5kZXgpOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmxvY2ss IGZsYWdzKTsKIAlyZWxlYXNlZCA9IF9fYmNtX3N5c3BvcnRfdHhfcmVjbGFpbShwcml2LCByaW5n KTsKKwlpZiAocmVsZWFzZWQpCisJCW5ldGlmX3R4X3dha2VfcXVldWUodHhxKTsKKwogCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiByZWxlYXNl ZDsKIH0KIAorLyogTG9ja2VkIHZlcnNpb24gb2YgdGhlIHBlci1yaW5nIFRYIHJlY2xhaW0sIGJ1 dCBkb2VzIG5vdCB3YWtlIHRoZSBxdWV1ZSAqLworc3RhdGljIHZvaWQgYmNtX3N5c3BvcnRfdHhf Y2xlYW4oc3RydWN0IGJjbV9zeXNwb3J0X3ByaXYgKnByaXYsCisJCQkJIHN0cnVjdCBiY21fc3lz cG9ydF90eF9yaW5nICpyaW5nKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xv Y2tfaXJxc2F2ZSgmcmluZy0+bG9jaywgZmxhZ3MpOworCV9fYmNtX3N5c3BvcnRfdHhfcmVjbGFp bShwcml2LCByaW5nKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5sb2NrLCBmbGFn cyk7Cit9CisKIHN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfdHhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1 Y3QgKm5hcGksIGludCBidWRnZXQpCiB7CiAJc3RydWN0IGJjbV9zeXNwb3J0X3R4X3JpbmcgKnJp bmcgPQpAQCAtODQzLDE1ICs4NTQsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgYmNtX3N5c3BvcnRf eG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIG91dDsKIAl9CiAKLQkvKiBJbnNlcnQg VFNCIGFuZCBjaGVja3N1bSBpbmZvcyAqLwotCWlmIChwcml2LT50c2JfZW4pIHsKLQkJc2tiID0g YmNtX3N5c3BvcnRfaW5zZXJ0X3RzYihza2IsIGRldik7Ci0JCWlmICghc2tiKSB7Ci0JCQlyZXQg PSBORVRERVZfVFhfT0s7Ci0JCQlnb3RvIG91dDsKLQkJfQotCX0KLQogCS8qIFRoZSBFdGhlcm5l dCBzd2l0Y2ggd2UgYXJlIGludGVyZmFjZWQgd2l0aCBuZWVkcyBwYWNrZXRzIHRvIGJlIGF0CiAJ ICogbGVhc3QgNjQgYnl0ZXMgKGluY2x1ZGluZyBGQ1MpIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUg ZGlzY2FyZGVkIHdoZW4KIAkgKiB0aGV5IGVudGVyIHRoZSBzd2l0Y2ggcG9ydCBsb2dpYy4gV2hl biBCcm9hZGNvbSB0YWdzIGFyZSBlbmFibGVkLCB3ZQpAQCAtODY0LDYgKzg2NiwxNSBAQCBzdGF0 aWMgbmV0ZGV2X3R4X3QgYmNtX3N5c3BvcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQln b3RvIG91dDsKIAl9CiAKKwkvKiBJbnNlcnQgVFNCIGFuZCBjaGVja3N1bSBpbmZvcyAqLworCWlm IChwcml2LT50c2JfZW4pIHsKKwkJc2tiID0gYmNtX3N5c3BvcnRfaW5zZXJ0X3RzYihza2IsIGRl dik7CisJCWlmICghc2tiKSB7CisJCQlyZXQgPSBORVRERVZfVFhfT0s7CisJCQlnb3RvIG91dDsK KwkJfQorCX0KKwogCXNrYl9sZW4gPSBza2ItPmxlbiA8IEVUSF9aTEVOICsgRU5FVF9CUkNNX1RB R19MRU4gPwogCQkJRVRIX1pMRU4gKyBFTkVUX0JSQ01fVEFHX0xFTiA6IHNrYi0+bGVuOwogCkBA IC0xMDcyLDcgKzEwODMsNyBAQCBzdGF0aWMgdm9pZCBiY21fc3lzcG9ydF9maW5pX3R4X3Jpbmco c3RydWN0IGJjbV9zeXNwb3J0X3ByaXYgKnByaXYsCiAJbmFwaV9kaXNhYmxlKCZyaW5nLT5uYXBp KTsKIAluZXRpZl9uYXBpX2RlbCgmcmluZy0+bmFwaSk7CiAKLQliY21fc3lzcG9ydF90eF9yZWNs YWltKHByaXYsIHJpbmcpOworCWJjbV9zeXNwb3J0X3R4X2NsZWFuKHByaXYsIHJpbmcpOwogCiAJ a2ZyZWUocmluZy0+Y2JzKTsKIAlyaW5nLT5jYnMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMKaW5kZXggZmI5NzA4ZDRiOGI1Li43MjBlZWQ1N2Qy NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWlu LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYwpAQCAt MTAzMywxMiArMTAzMywxOCBAQCBzdGF0aWMgdm9pZCBlbmljX3JxX2luZGljYXRlX2J1ZihzdHJ1 Y3Qgdm5pY19ycSAqcnEsCiAJCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIG5l dGRldik7CiAJCXNrYl9yZWNvcmRfcnhfcXVldWUoc2tiLCBxX251bWJlcik7CiAJCWlmIChuZXRk ZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9SWEhBU0gpIHsKLQkJCXNrYl9zZXRfaGFzaChza2IsIHJz c19oYXNoLAotCQkJCSAgICAgKHJzc190eXBlICYKLQkJCQkgICAgICAoTklDX0NGR19SU1NfSEFT SF9UWVBFX1RDUF9JUFY2X0VYIHwKLQkJCQkgICAgICAgTklDX0NGR19SU1NfSEFTSF9UWVBFX1RD UF9JUFY2IHwKLQkJCQkgICAgICAgTklDX0NGR19SU1NfSEFTSF9UWVBFX1RDUF9JUFY0KSkgPwot CQkJCSAgICAgUEtUX0hBU0hfVFlQRV9MNCA6IFBLVF9IQVNIX1RZUEVfTDMpOworCQkJc3dpdGNo IChyc3NfdHlwZSkgeworCQkJY2FzZSBDUV9FTkVUX1JRX0RFU0NfUlNTX1RZUEVfVENQX0lQdjQ6 CisJCQljYXNlIENRX0VORVRfUlFfREVTQ19SU1NfVFlQRV9UQ1BfSVB2NjoKKwkJCWNhc2UgQ1Ff RU5FVF9SUV9ERVNDX1JTU19UWVBFX1RDUF9JUHY2X0VYOgorCQkJCXNrYl9zZXRfaGFzaChza2Is IHJzc19oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ1FfRU5F VF9SUV9ERVNDX1JTU19UWVBFX0lQdjQ6CisJCQljYXNlIENRX0VORVRfUlFfREVTQ19SU1NfVFlQ RV9JUHY2OgorCQkJY2FzZSBDUV9FTkVUX1JRX0RFU0NfUlNTX1RZUEVfSVB2Nl9FWDoKKwkJCQlz a2Jfc2V0X2hhc2goc2tiLCByc3NfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7CisJCQkJYnJlYWs7 CisJCQl9CiAJCX0KIAogCQkvKiBIYXJkd2FyZSBkb2VzIG5vdCBwcm92aWRlIHdob2xlIHBhY2tl dCBjaGVja3N1bS4gSXQgb25seQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11 bGV4L2JlbmV0L2JlX2NtZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9i ZV9jbWRzLmMKaW5kZXggZjRlYTM0OTBmNDQ2Li44ZGM3ZjcyMjFmYTEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9jbWRzLmMKKysrIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2NtZHMuYwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAg aW50IGJlX2NtZF9wbWFjX2FkZChzdHJ1Y3QgYmVfYWRhcHRlciAqYWRhcHRlciwgdTggKm1hY19h ZGRyLAogZXJyOgogCXNwaW5fdW5sb2NrX2JoKCZhZGFwdGVyLT5tY2NfbG9jayk7CiAKLQkgaWYg KHN0YXR1cyA9PSBNQ0NfU1RBVFVTX1VOQVVUSE9SSVpFRF9SRVFVRVNUKQorCSBpZiAoYmFzZV9z dGF0dXMoc3RhdHVzKSA9PSBNQ0NfU1RBVFVTX1VOQVVUSE9SSVpFRF9SRVFVRVNUKQogCQlzdGF0 dXMgPSAtRVBFUk07CiAKIAlyZXR1cm4gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQva29yaW5hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9rb3JpbmEuYwppbmRleCBk NzRmNWY0ZTU3ODIuLjA3ZWFiZjcyYzQ4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQva29yaW5hLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQva29yaW5hLmMKQEAgLTkwMCwx MCArOTAwLDEwIEBAIHN0YXRpYyB2b2lkIGtvcmluYV9yZXN0YXJ0X3Rhc2soc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQogCQkJCURNQV9TVEFUX0RPTkUgfCBETUFfU1RBVF9IQUxUIHwgRE1BX1NU QVRfRVJSLAogCQkJCSZscC0+cnhfZG1hX3JlZ3MtPmRtYXNtKTsKIAotCWtvcmluYV9mcmVlX3Jp bmcoZGV2KTsKLQogCW5hcGlfZGlzYWJsZSgmbHAtPm5hcGkpOwogCisJa29yaW5hX2ZyZWVfcmlu ZyhkZXYpOworCiAJaWYgKGtvcmluYV9pbml0KGRldikgPCAwKSB7CiAJCXByaW50ayhLRVJOX0VS UiAiJXM6IGNhbm5vdCByZXN0YXJ0IGRldmljZVxuIiwgZGV2LT5uYW1lKTsKIAkJcmV0dXJuOwpA QCAtMTA2NCwxMiArMTA2NCwxMiBAQCBzdGF0aWMgaW50IGtvcmluYV9jbG9zZShzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2KQogCXRtcCA9IHRtcCB8IERNQV9TVEFUX0RPTkUgfCBETUFfU1RBVF9IQUxU IHwgRE1BX1NUQVRfRVJSOwogCXdyaXRlbCh0bXAsICZscC0+cnhfZG1hX3JlZ3MtPmRtYXNtKTsK IAotCWtvcmluYV9mcmVlX3JpbmcoZGV2KTsKLQogCW5hcGlfZGlzYWJsZSgmbHAtPm5hcGkpOwog CiAJY2FuY2VsX3dvcmtfc3luYygmbHAtPnJlc3RhcnRfdGFzayk7CiAKKwlrb3JpbmFfZnJlZV9y aW5nKGRldik7CisKIAlmcmVlX2lycShscC0+cnhfaXJxLCBkZXYpOwogCWZyZWVfaXJxKGxwLT50 eF9pcnEsIGRldik7CiAJZnJlZV9pcnEobHAtPm92cl9pcnEsIGRldik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3NreTIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21hcnZlbGwvc2t5Mi5jCmluZGV4IDY5NjkzMzg0YjU4Yy4uZDcyYzMzY2JhZWViIDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3NreTIuYworKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tYXJ2ZWxsL3NreTIuYwpAQCAtNTIxMSw2ICs1MjExLDE5IEBAIHN0YXRpYyBT SU1QTEVfREVWX1BNX09QUyhza3kyX3BtX29wcywgc2t5Ml9zdXNwZW5kLCBza3kyX3Jlc3VtZSk7 CiAKIHN0YXRpYyB2b2lkIHNreTJfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CisJ c3RydWN0IHNreTJfaHcgKmh3ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOworCWludCBwb3J0Owor CisJZm9yIChwb3J0ID0gMDsgcG9ydCA8IGh3LT5wb3J0czsgcG9ydCsrKSB7CisJCXN0cnVjdCBu ZXRfZGV2aWNlICpuZGV2ID0gaHctPmRldltwb3J0XTsKKworCQlydG5sX2xvY2soKTsKKwkJaWYg KG5ldGlmX3J1bm5pbmcobmRldikpIHsKKwkJCWRldl9jbG9zZShuZGV2KTsKKwkJCW5ldGlmX2Rl dmljZV9kZXRhY2gobmRldik7CisJCX0KKwkJcnRubF91bmxvY2soKTsKKwl9CiAJc2t5Ml9zdXNw ZW5kKCZwZGV2LT5kZXYpOwogCXBjaV93YWtlX2Zyb21fZDMocGRldiwgZGV2aWNlX21heV93YWtl dXAoJnBkZXYtPmRldikpOwogCXBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QzaG90KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvY3EuYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvY3EuYwppbmRleCA1NjAyMmQ2NDc4Mzcu LjZiYjA1MjFiMDlhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NC9jcS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvY3EuYwpA QCAtNTYsMTMgKzU2LDE5IEBAIHZvaWQgbWx4NF9jcV9jb21wbGV0aW9uKHN0cnVjdCBtbHg0X2Rl diAqZGV2LCB1MzIgY3FuKQogewogCXN0cnVjdCBtbHg0X2NxICpjcTsKIAorCXJjdV9yZWFkX2xv Y2soKTsKIAljcSA9IHJhZGl4X3RyZWVfbG9va3VwKCZtbHg0X3ByaXYoZGV2KS0+Y3FfdGFibGUu dHJlZSwKIAkJCSAgICAgICBjcW4gJiAoZGV2LT5jYXBzLm51bV9jcXMgLSAxKSk7CisJcmN1X3Jl YWRfdW5sb2NrKCk7CisKIAlpZiAoIWNxKSB7CiAJCW1seDRfZGJnKGRldiwgIkNvbXBsZXRpb24g ZXZlbnQgZm9yIGJvZ3VzIENRICUwOHhcbiIsIGNxbik7CiAJCXJldHVybjsKIAl9CiAKKwkvKiBB Y2Vzc2luZyB0aGUgQ1Egb3V0c2lkZSBvZiByY3VfcmVhZF9sb2NrIGlzIHNhZmUsIGJlY2F1c2UK KwkgKiB0aGUgQ1EgaXMgZnJlZWQgb25seSBhZnRlciBpbnRlcnJ1cHQgaGFuZGxpbmcgaXMgY29t cGxldGVkLgorCSAqLwogCSsrY3EtPmFybV9zbjsKIAogCWNxLT5jb21wKGNxKTsKQEAgLTczLDIz ICs3OSwxOSBAQCB2b2lkIG1seDRfY3FfZXZlbnQoc3RydWN0IG1seDRfZGV2ICpkZXYsIHUzMiBj cW4sIGludCBldmVudF90eXBlKQogCXN0cnVjdCBtbHg0X2NxX3RhYmxlICpjcV90YWJsZSA9ICZt bHg0X3ByaXYoZGV2KS0+Y3FfdGFibGU7CiAJc3RydWN0IG1seDRfY3EgKmNxOwogCi0Jc3Bpbl9s b2NrKCZjcV90YWJsZS0+bG9jayk7Ci0KKwlyY3VfcmVhZF9sb2NrKCk7CiAJY3EgPSByYWRpeF90 cmVlX2xvb2t1cCgmY3FfdGFibGUtPnRyZWUsIGNxbiAmIChkZXYtPmNhcHMubnVtX2NxcyAtIDEp KTsKLQlpZiAoY3EpCi0JCWF0b21pY19pbmMoJmNxLT5yZWZjb3VudCk7Ci0KLQlzcGluX3VubG9j aygmY3FfdGFibGUtPmxvY2spOworCXJjdV9yZWFkX3VubG9jaygpOwogCiAJaWYgKCFjcSkgewot CQltbHg0X3dhcm4oZGV2LCAiQXN5bmMgZXZlbnQgZm9yIGJvZ3VzIENRICUwOHhcbiIsIGNxbik7 CisJCW1seDRfZGJnKGRldiwgIkFzeW5jIGV2ZW50IGZvciBib2d1cyBDUSAlMDh4XG4iLCBjcW4p OwogCQlyZXR1cm47CiAJfQogCisJLyogQWNlc3NpbmcgdGhlIENRIG91dHNpZGUgb2YgcmN1X3Jl YWRfbG9jayBpcyBzYWZlLCBiZWNhdXNlCisJICogdGhlIENRIGlzIGZyZWVkIG9ubHkgYWZ0ZXIg aW50ZXJydXB0IGhhbmRsaW5nIGlzIGNvbXBsZXRlZC4KKwkgKi8KIAljcS0+ZXZlbnQoY3EsIGV2 ZW50X3R5cGUpOwotCi0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmNxLT5yZWZjb3VudCkpCi0J CWNvbXBsZXRlKCZjcS0+ZnJlZSk7CiB9CiAKIHN0YXRpYyBpbnQgbWx4NF9TVzJIV19DUShzdHJ1 Y3QgbWx4NF9kZXYgKmRldiwgc3RydWN0IG1seDRfY21kX21haWxib3ggKm1haWxib3gsCkBAIC0y NTYsOSArMjU4LDkgQEAgaW50IG1seDRfY3FfYWxsb2Moc3RydWN0IG1seDRfZGV2ICpkZXYsIGlu dCBuZW50LAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlzcGluX2xvY2tfaXJxKCZjcV90 YWJsZS0+bG9jayk7CisJc3Bpbl9sb2NrKCZjcV90YWJsZS0+bG9jayk7CiAJZXJyID0gcmFkaXhf dHJlZV9pbnNlcnQoJmNxX3RhYmxlLT50cmVlLCBjcS0+Y3FuLCBjcSk7Ci0Jc3Bpbl91bmxvY2tf aXJxKCZjcV90YWJsZS0+bG9jayk7CisJc3Bpbl91bmxvY2soJmNxX3RhYmxlLT5sb2NrKTsKIAlp ZiAoZXJyKQogCQlnb3RvIGVycl9pY207CiAKQEAgLTI5Nyw5ICsyOTksOSBAQCBpbnQgbWx4NF9j cV9hbGxvYyhzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IG5lbnQsCiAJcmV0dXJuIDA7CiAKIGVy cl9yYWRpeDoKLQlzcGluX2xvY2tfaXJxKCZjcV90YWJsZS0+bG9jayk7CisJc3Bpbl9sb2NrKCZj cV90YWJsZS0+bG9jayk7CiAJcmFkaXhfdHJlZV9kZWxldGUoJmNxX3RhYmxlLT50cmVlLCBjcS0+ Y3FuKTsKLQlzcGluX3VubG9ja19pcnEoJmNxX3RhYmxlLT5sb2NrKTsKKwlzcGluX3VubG9jaygm Y3FfdGFibGUtPmxvY2spOwogCiBlcnJfaWNtOgogCW1seDRfY3FfZnJlZV9pY20oZGV2LCBjcS0+ Y3FuKTsKQEAgLTMxOCwxMSArMzIwLDExIEBAIHZvaWQgbWx4NF9jcV9mcmVlKHN0cnVjdCBtbHg0 X2RldiAqZGV2LCBzdHJ1Y3QgbWx4NF9jcSAqY3EpCiAJaWYgKGVycikKIAkJbWx4NF93YXJuKGRl diwgIkhXMlNXX0NRIGZhaWxlZCAoJWQpIGZvciBDUU4gJTA2eFxuIiwgZXJyLCBjcS0+Y3FuKTsK IAotCXN5bmNocm9uaXplX2lycShwcml2LT5lcV90YWJsZS5lcVtjcS0+dmVjdG9yXS5pcnEpOwot Ci0Jc3Bpbl9sb2NrX2lycSgmY3FfdGFibGUtPmxvY2spOworCXNwaW5fbG9jaygmY3FfdGFibGUt PmxvY2spOwogCXJhZGl4X3RyZWVfZGVsZXRlKCZjcV90YWJsZS0+dHJlZSwgY3EtPmNxbik7Ci0J c3Bpbl91bmxvY2tfaXJxKCZjcV90YWJsZS0+bG9jayk7CisJc3Bpbl91bmxvY2soJmNxX3RhYmxl LT5sb2NrKTsKKworCXN5bmNocm9uaXplX2lycShwcml2LT5lcV90YWJsZS5lcVtjcS0+dmVjdG9y XS5pcnEpOwogCiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmNxLT5yZWZjb3VudCkpCiAJCWNv bXBsZXRlKCZjcS0+ZnJlZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg0L2VuX3J4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2Vu X3J4LmMKaW5kZXggNzY4NzlhMWNjYTZmLi5iMDdmNGMwZDYxN2IgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fcnguYworKysgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3J4LmMKQEAgLTQzNyw4ICs0MzcsMTQgQEAgaW50IG1s eDRfZW5fYWN0aXZhdGVfcnhfcmluZ3Moc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdikKIAkJcmlu Zy0+Y3FuID0gcHJpdi0+cnhfY3FbcmluZ19pbmRdLT5tY3EuY3FuOwogCiAJCXJpbmctPnN0cmlk ZSA9IHN0cmlkZTsKLQkJaWYgKHJpbmctPnN0cmlkZSA8PSBUWEJCX1NJWkUpCisJCWlmIChyaW5n LT5zdHJpZGUgPD0gVFhCQl9TSVpFKSB7CisJCQkvKiBTdGFtcCBmaXJzdCB1bnVzZWQgc2VuZCB3 cWUgKi8KKwkJCV9fYmUzMiAqcHRyID0gKF9fYmUzMiAqKXJpbmctPmJ1ZjsKKwkJCV9fYmUzMiBz dGFtcCA9IGNwdV90b19iZTMyKDEgPDwgU1RBTVBfU0hJRlQpOworCQkJKnB0ciA9IHN0YW1wOwor CQkJLyogTW92ZSBwb2ludGVyIHRvIHN0YXJ0IG9mIHJ4IHNlY3Rpb24gKi8KIAkJCXJpbmctPmJ1 ZiArPSBUWEJCX1NJWkU7CisJCX0KIAogCQlyaW5nLT5sb2dfc3RyaWRlID0gZmZzKHJpbmctPnN0 cmlkZSkgLSAxOwogCQlyaW5nLT5idWZfc2l6ZSA9IHJpbmctPnNpemUgKiByaW5nLT5zdHJpZGU7 CkBAIC01MDAsOCArNTA2LDExIEBAIHZvaWQgbWx4NF9lbl9yZWNvdmVyX2Zyb21fb29tKHN0cnVj dCBtbHg0X2VuX3ByaXYgKnByaXYpCiAJCXJldHVybjsKIAogCWZvciAocmluZyA9IDA7IHJpbmcg PCBwcml2LT5yeF9yaW5nX251bTsgcmluZysrKSB7Ci0JCWlmIChtbHg0X2VuX2lzX3JpbmdfZW1w dHkocHJpdi0+cnhfcmluZ1tyaW5nXSkpCisJCWlmIChtbHg0X2VuX2lzX3JpbmdfZW1wdHkocHJp di0+cnhfcmluZ1tyaW5nXSkpIHsKKwkJCWxvY2FsX2JoX2Rpc2FibGUoKTsKIAkJCW5hcGlfcmVz Y2hlZHVsZSgmcHJpdi0+cnhfY3FbcmluZ10tPm5hcGkpOworCQkJbG9jYWxfYmhfZW5hYmxlKCk7 CisJCX0KIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDQvZXEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZXEuYwppbmRl eCBjMjZlZWM1ZjMzYzMuLmU3OWRiZDlmZjA2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NC9lcS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDQvZXEuYwpAQCAtNTA2LDggKzUwNiw5IEBAIHN0YXRpYyBpbnQgbWx4NF9lcV9pbnQo c3RydWN0IG1seDRfZGV2ICpkZXYsIHN0cnVjdCBtbHg0X2VxICplcSkKIAkJCWJyZWFrOwogCiAJ CWNhc2UgTUxYNF9FVkVOVF9UWVBFX1NSUV9MSU1JVDoKLQkJCW1seDRfZGJnKGRldiwgIiVzOiBN TFg0X0VWRU5UX1RZUEVfU1JRX0xJTUlUXG4iLAotCQkJCSBfX2Z1bmNfXyk7CisJCQltbHg0X2Ri ZyhkZXYsICIlczogTUxYNF9FVkVOVF9UWVBFX1NSUV9MSU1JVC4gc3JxX25vPTB4JXgsIGVxIDB4 JXhcbiIsCisJCQkJIF9fZnVuY19fLCBiZTMyX3RvX2NwdShlcWUtPmV2ZW50LnNycS5zcnFuKSwK KwkJCQkgZXEtPmVxbik7CiAJCWNhc2UgTUxYNF9FVkVOVF9UWVBFX1NSUV9DQVRBU19FUlJPUjoK IAkJCWlmIChtbHg0X2lzX21hc3RlcihkZXYpKSB7CiAJCQkJLyogZm9yd2FyZCBvbmx5IHRvIHNs YXZlIG93bmluZyB0aGUgU1JRICovCkBAIC01MjIsMTUgKzUyMywxOSBAQCBzdGF0aWMgaW50IG1s eDRfZXFfaW50KHN0cnVjdCBtbHg0X2RldiAqZGV2LCBzdHJ1Y3QgbWx4NF9lcSAqZXEpCiAJCQkJ CQkgIGVxLT5lcW4sIGVxLT5jb25zX2luZGV4LCByZXQpOwogCQkJCQlicmVhazsKIAkJCQl9Ci0J CQkJbWx4NF93YXJuKGRldiwgIiVzOiBzbGF2ZTolZCwgc3JxX25vOjB4JXgsIGV2ZW50OiAlMDJ4 KCUwMngpXG4iLAotCQkJCQkgIF9fZnVuY19fLCBzbGF2ZSwKLQkJCQkJICBiZTMyX3RvX2NwdShl cWUtPmV2ZW50LnNycS5zcnFuKSwKLQkJCQkJICBlcWUtPnR5cGUsIGVxZS0+c3VidHlwZSk7CisJ CQkJaWYgKGVxZS0+dHlwZSA9PQorCQkJCSAgICBNTFg0X0VWRU5UX1RZUEVfU1JRX0NBVEFTX0VS Uk9SKQorCQkJCQltbHg0X3dhcm4oZGV2LCAiJXM6IHNsYXZlOiVkLCBzcnFfbm86MHgleCwgZXZl bnQ6ICUwMngoJTAyeClcbiIsCisJCQkJCQkgIF9fZnVuY19fLCBzbGF2ZSwKKwkJCQkJCSAgYmUz Ml90b19jcHUoZXFlLT5ldmVudC5zcnEuc3JxbiksCisJCQkJCQkgIGVxZS0+dHlwZSwgZXFlLT5z dWJ0eXBlKTsKIAogCQkJCWlmICghcmV0ICYmIHNsYXZlICE9IGRldi0+Y2Fwcy5mdW5jdGlvbikg ewotCQkJCQltbHg0X3dhcm4oZGV2LCAiJXM6IHNlbmRpbmcgZXZlbnQgJTAyeCglMDJ4KSB0byBz bGF2ZTolZFxuIiwKLQkJCQkJCSAgX19mdW5jX18sIGVxZS0+dHlwZSwKLQkJCQkJCSAgZXFlLT5z dWJ0eXBlLCBzbGF2ZSk7CisJCQkJCWlmIChlcWUtPnR5cGUgPT0KKwkJCQkJICAgIE1MWDRfRVZF TlRfVFlQRV9TUlFfQ0FUQVNfRVJST1IpCisJCQkJCQltbHg0X3dhcm4oZGV2LCAiJXM6IHNlbmRp bmcgZXZlbnQgJTAyeCglMDJ4KSB0byBzbGF2ZTolZFxuIiwKKwkJCQkJCQkgIF9fZnVuY19fLCBl cWUtPnR5cGUsCisJCQkJCQkJICBlcWUtPnN1YnR5cGUsIHNsYXZlKTsKIAkJCQkJbWx4NF9zbGF2 ZV9ldmVudChkZXYsIHNsYXZlLCBlcWUpOwogCQkJCQlicmVhazsKIAkJCQl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2ljbS5jIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9pY20uYwppbmRleCA5N2M5YjFkYjFkMjcuLjI3ZjIyY2Qz YjA3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9pY20u YworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2ljbS5jCkBAIC0xMTcs OCArMTE3LDEzIEBAIHN0YXRpYyBpbnQgbWx4NF9hbGxvY19pY21fY29oZXJlbnQoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKm1lbSwKIAlpZiAoIWJ1ZikKIAkJcmV0dXJu IC1FTk9NRU07CiAKKwlpZiAob2Zmc2V0X2luX3BhZ2UoYnVmKSkgeworCQlkbWFfZnJlZV9jb2hl cmVudChkZXYsIFBBR0VfU0laRSA8PCBvcmRlciwKKwkJCQkgIGJ1Ziwgc2dfZG1hX2FkZHJlc3Mo bWVtKSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwogCXNnX3NldF9idWYobWVtLCBidWYsIFBB R0VfU0laRSA8PCBvcmRlcik7Ci0JQlVHX09OKG1lbS0+b2Zmc2V0KTsKIAlzZ19kbWFfbGVuKG1l bSkgPSBQQUdFX1NJWkUgPDwgb3JkZXI7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L3Jlc291cmNlX3RyYWNrZXIuYyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvcmVzb3VyY2VfdHJhY2tlci5jCmluZGV4IDkw MjY5YjMwMTNiNi4uYmVlNTY2ODAzYjVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg0L3Jlc291cmNlX3RyYWNrZXIuYworKysgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg0L3Jlc291cmNlX3RyYWNrZXIuYwpAQCAtMjczMyw2ICsyNzMzLDkg QEAgaW50IG1seDRfUlNUMklOSVRfUVBfd3JhcHBlcihzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50 IHNsYXZlLAogCQlwdXRfcmVzKGRldiwgc2xhdmUsIHNycW4sIFJFU19TUlEpOwogCQlxcC0+c3Jx ID0gc3JxOwogCX0KKworCS8qIFNhdmUgcGFyYW0zIGZvciBkeW5hbWljIGNoYW5nZXMgZnJvbSBW U1QgYmFjayB0byBWR1QgKi8KKwlxcC0+cGFyYW0zID0gcXBjLT5wYXJhbTM7CiAJcHV0X3Jlcyhk ZXYsIHNsYXZlLCByY3FuLCBSRVNfQ1EpOwogCXB1dF9yZXMoZGV2LCBzbGF2ZSwgbXR0X2Jhc2Us IFJFU19NVFQpOwogCXJlc19lbmRfbW92ZShkZXYsIHNsYXZlLCBSRVNfUVAsIHFwbik7CkBAIC0z NDk1LDcgKzM0OTgsNiBAQCBpbnQgbWx4NF9JTklUMlJUUl9RUF93cmFwcGVyKHN0cnVjdCBtbHg0 X2RldiAqZGV2LCBpbnQgc2xhdmUsCiAJaW50IHFwbiA9IHZoY3ItPmluX21vZGlmaWVyICYgMHg3 ZmZmZmY7CiAJc3RydWN0IHJlc19xcCAqcXA7CiAJdTggb3JpZ19zY2hlZF9xdWV1ZTsKLQlfX2Jl MzIJb3JpZ19wYXJhbTMgPSBxcGMtPnBhcmFtMzsKIAl1OCBvcmlnX3ZsYW5fY29udHJvbCA9IHFw Yy0+cHJpX3BhdGgudmxhbl9jb250cm9sOwogCXU4IG9yaWdfZnZsX3J4ID0gcXBjLT5wcmlfcGF0 aC5mdmxfcng7CiAJdTggb3JpZ19wcmlfcGF0aF9mbCA9IHFwYy0+cHJpX3BhdGguZmw7CkBAIC0z NTM2LDcgKzM1MzgsNiBAQCBvdXQ6CiAJICovCiAJaWYgKCFlcnIpIHsKIAkJcXAtPnNjaGVkX3F1 ZXVlID0gb3JpZ19zY2hlZF9xdWV1ZTsKLQkJcXAtPnBhcmFtMwk9IG9yaWdfcGFyYW0zOwogCQlx cC0+dmxhbl9jb250cm9sID0gb3JpZ192bGFuX2NvbnRyb2w7CiAJCXFwLT5mdmxfcngJPSAgb3Jp Z19mdmxfcng7CiAJCXFwLT5wcmlfcGF0aF9mbCA9IG9yaWdfcHJpX3BhdGhfZmw7CkBAIC00MDkx LDYgKzQwOTIsNyBAQCBpbnQgbWx4NF9RUF9GTE9XX1NURUVSSU5HX0RFVEFDSF93cmFwcGVyKHN0 cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xhdmUsCiAJaW50IGVycjsKIAlzdHJ1Y3QgcmVzX3Fw ICpycXA7CiAJc3RydWN0IHJlc19mc19ydWxlICpycnVsZTsKKwlpbnQgcXBuOwogCiAJaWYgKGRl di0+Y2Fwcy5zdGVlcmluZ19tb2RlICE9CiAJICAgIE1MWDRfU1RFRVJJTkdfTU9ERV9ERVZJQ0Vf TUFOQUdFRCkKQEAgLTQwOTksOSArNDEwMSwxMCBAQCBpbnQgbWx4NF9RUF9GTE9XX1NURUVSSU5H X0RFVEFDSF93cmFwcGVyKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xhdmUsCiAJZXJyID0g Z2V0X3JlcyhkZXYsIHNsYXZlLCB2aGNyLT5pbl9wYXJhbSwgUkVTX0ZTX1JVTEUsICZycnVsZSk7 CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKKwlxcG4gPSBycnVsZS0+cXBuOwogCS8qIFJlbGVh c2UgdGhlIHJ1bGUgZm9ybSBidXN5IHN0YXRlIGJlZm9yZSByZW1vdmFsICovCiAJcHV0X3Jlcyhk ZXYsIHNsYXZlLCB2aGNyLT5pbl9wYXJhbSwgUkVTX0ZTX1JVTEUpOwotCWVyciA9IGdldF9yZXMo ZGV2LCBzbGF2ZSwgcnJ1bGUtPnFwbiwgUkVTX1FQLCAmcnFwKTsKKwllcnIgPSBnZXRfcmVzKGRl diwgc2xhdmUsIHFwbiwgUkVTX1FQLCAmcnFwKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwog CkBAIC00MTE3LDcgKzQxMjAsNyBAQCBpbnQgbWx4NF9RUF9GTE9XX1NURUVSSU5HX0RFVEFDSF93 cmFwcGVyKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xhdmUsCiAJaWYgKCFlcnIpCiAJCWF0 b21pY19kZWMoJnJxcC0+cmVmX2NvdW50KTsKIG91dDoKLQlwdXRfcmVzKGRldiwgc2xhdmUsIHJy dWxlLT5xcG4sIFJFU19RUCk7CisJcHV0X3JlcyhkZXYsIHNsYXZlLCBxcG4sIFJFU19RUCk7CiAJ cmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNh cy9zaF9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmMKaW5kZXgg ZjFlYmIxZjUwZjFjLi45YTAzYmZkNTEzOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3JlbmVzYXMvc2hfZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9z aF9ldGguYwpAQCAtNjk2LDcgKzY5Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2hfZXRoX2NwdV9kYXRh IHNoNzczNF9kYXRhID0gewogCiAJLmVjc3JfdmFsdWUJPSBFQ1NSX0lDRCB8IEVDU1JfTVBELAog CS5lY3NpcHJfdmFsdWUJPSBFQ1NJUFJfTENITkdJUCB8IEVDU0lQUl9JQ0RJUCB8IEVDU0lQUl9N UERJUCwKLQkuZWVzaXByX3ZhbHVlCT0gRE1BQ19NX1JGUk1FUiB8IERNQUNfTV9FQ0kgfCAweDAw M2ZmZmZmLAorCS5lZXNpcHJfdmFsdWUJPSBETUFDX01fUkZSTUVSIHwgRE1BQ19NX0VDSSB8IDB4 MDAzZjA3ZmYsCiAKIAkudHhfY2hlY2sJPSBFRVNSX1RDMSB8IEVFU1JfRlRDLAogCS5lZXNyX2Vy cl9jaGVjawk9IEVFU1JfVFdCMSB8IEVFU1JfVFdCIHwgRUVTUl9UQUJUIHwgRUVTUl9SQUJUIHwK QEAgLTcxMyw2ICs3MTMsNyBAQCBzdGF0aWMgc3RydWN0IHNoX2V0aF9jcHVfZGF0YSBzaDc3MzRf ZGF0YSA9IHsKIAkudHN1CQk9IDEsCiAJLmh3X2NyYwkJPSAxLAogCS5zZWxlY3RfbWlpCT0gMSwK Kwkuc2hpZnRfcmQwCT0gMSwKIH07CiAKIC8qIFNINzc2MyAqLwpAQCAtNzI1LDcgKzcyNiw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc2hfZXRoX2NwdV9kYXRhIHNoNzc2M19kYXRhID0gewogCiAJLmVjc3Jf dmFsdWUJPSBFQ1NSX0lDRCB8IEVDU1JfTVBELAogCS5lY3NpcHJfdmFsdWUJPSBFQ1NJUFJfTENI TkdJUCB8IEVDU0lQUl9JQ0RJUCB8IEVDU0lQUl9NUERJUCwKLQkuZWVzaXByX3ZhbHVlCT0gRE1B Q19NX1JGUk1FUiB8IERNQUNfTV9FQ0kgfCAweDAwM2ZmZmZmLAorCS5lZXNpcHJfdmFsdWUJPSBE TUFDX01fUkZSTUVSIHwgRE1BQ19NX0VDSSB8IDB4MDAzZjA3ZmYsCiAKIAkudHhfY2hlY2sJPSBF RVNSX1RDMSB8IEVFU1JfRlRDLAogCS5lZXNyX2Vycl9jaGVjawk9IEVFU1JfVFdCMSB8IEVFU1Jf VFdCIHwgRUVTUl9UQUJUIHwgRUVTUl9SQUJUIHwKQEAgLTc4MSw2ICs3ODIsNyBAQCBzdGF0aWMg c3RydWN0IHNoX2V0aF9jcHVfZGF0YSByOGE3NzQwX2RhdGEgPSB7CiAJLnJwYWRpcl92YWx1ZSAg ID0gMiA8PCAxNiwKIAkubm9fdHJpbWQJPSAxLAogCS5ub19hZGUJCT0gMSwKKwkuaHdfY3JjCQk9 IDEsCiAJLnRzdQkJPSAxLAogCS5zZWxlY3RfbWlpCT0gMSwKIAkuc2hpZnRfcmQwCT0gMSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWlu LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmlu ZGV4IDY0MTA4NmZjMTRiNS4uNzZmZDNhMmZhNzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTI3NjksMTIgKzI3NjksNiBA QCBzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2 aWNlLAogCXNwaW5fbG9ja19pbml0KCZwcml2LT5sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmcHJp di0+dHhfbG9jayk7CiAKLQlyZXQgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7Ci0JaWYgKHJldCkg ewotCQlwcl9lcnIoIiVzOiBFUlJPUiAlaSByZWdpc3RlcmluZyB0aGUgZGV2aWNlXG4iLCBfX2Z1 bmNfXywgcmV0KTsKLQkJZ290byBlcnJvcl9uZXRkZXZfcmVnaXN0ZXI7Ci0JfQotCiAJLyogSWYg YSBzcGVjaWZpYyBjbGtfY3NyIHZhbHVlIGlzIHBhc3NlZCBmcm9tIHRoZSBwbGF0Zm9ybQogCSAq IHRoaXMgbWVhbnMgdGhhdCB0aGUgQ1NSIENsb2NrIFJhbmdlIHNlbGVjdGlvbiBjYW5ub3QgYmUK IAkgKiBjaGFuZ2VkIGF0IHJ1bi10aW1lIGFuZCBpdCBpcyBmaXhlZC4gVmljZXZlcnNhIHRoZSBk cml2ZXInbGwgdHJ5IHRvCkBAIC0yNzk5LDExICsyNzkzLDIxIEBAIHN0cnVjdCBzdG1tYWNfcHJp diAqc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJCX0KIAl9CiAKKwly ZXQgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7CisJaWYgKHJldCkgeworCQluZXRkZXZfZXJyKHBy aXYtPmRldiwgIiVzOiBFUlJPUiAlaSByZWdpc3RlcmluZyB0aGUgZGV2aWNlXG4iLAorCQkJICAg X19mdW5jX18sIHJldCk7CisJCWdvdG8gZXJyb3JfbmV0ZGV2X3JlZ2lzdGVyOworCX0KKwogCXJl dHVybiBwcml2OwogCi1lcnJvcl9tZGlvX3JlZ2lzdGVyOgotCXVucmVnaXN0ZXJfbmV0ZGV2KG5k ZXYpOwogZXJyb3JfbmV0ZGV2X3JlZ2lzdGVyOgorCWlmIChwcml2LT5wY3MgIT0gU1RNTUFDX1BD U19SR01JSSAmJgorCSAgICBwcml2LT5wY3MgIT0gU1RNTUFDX1BDU19UQkkgJiYKKwkgICAgcHJp di0+cGNzICE9IFNUTU1BQ19QQ1NfUlRCSSkKKwkJc3RtbWFjX21kaW9fdW5yZWdpc3RlcihuZGV2 KTsKK2Vycm9yX21kaW9fcmVnaXN0ZXI6CiAJbmV0aWZfbmFwaV9kZWwoJnByaXYtPm5hcGkpOwog ZXJyb3JfaHdfaW5pdDoKIAljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+c3RtbWFjX2Nsayk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2VtYWNsaXRl LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2VtYWNsaXRlLmMKaW5kZXgg OGM0YWVkMzA1M2ViLi4wNmI1ZTQxMzIwNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94 aWxpbngveGlsaW54X2VtYWNsaXRlLmMKQEAgLTEwMCw2ICsxMDAsMTQgQEAKIC8qIEJVRkZFUl9B TElHTihhZHIpIGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBieXRlcyB0byB0aGUgbmV4dCBhbGln bm1lbnQuICovCiAjZGVmaW5lIEJVRkZFUl9BTElHTihhZHIpICgoQUxJR05NRU5UIC0gKCh1MzIp IGFkcikpICUgQUxJR05NRU5UKQogCisjaWZkZWYgX19CSUdfRU5ESUFOCisjZGVmaW5lIHhlbWFj bGl0ZV9yZWFkbAkJaW9yZWFkMzJiZQorI2RlZmluZSB4ZW1hY2xpdGVfd3JpdGVsCWlvd3JpdGUz MmJlCisjZWxzZQorI2RlZmluZSB4ZW1hY2xpdGVfcmVhZGwJCWlvcmVhZDMyCisjZGVmaW5lIHhl bWFjbGl0ZV93cml0ZWwJaW93cml0ZTMyCisjZW5kaWYKKwogLyoqCiAgKiBzdHJ1Y3QgbmV0X2xv Y2FsIC0gT3VyIHByaXZhdGUgcGVyIGRldmljZSBkYXRhCiAgKiBAbmRldjoJCWluc3RhbmNlIG9m IHRoZSBuZXR3b3JrIGRldmljZQpAQCAtMTU4LDE1ICsxNjYsMTUgQEAgc3RhdGljIHZvaWQgeGVt YWNsaXRlX2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBuZXRfbG9jYWwgKmRydmRhdGEpCiAJdTMy IHJlZ19kYXRhOwogCiAJLyogRW5hYmxlIHRoZSBUeCBpbnRlcnJ1cHRzIGZvciB0aGUgZmlyc3Qg QnVmZmVyICovCi0JcmVnX2RhdGEgPSBfX3Jhd19yZWFkbChkcnZkYXRhLT5iYXNlX2FkZHIgKyBY RUxfVFNSX09GRlNFVCk7Ci0JX19yYXdfd3JpdGVsKHJlZ19kYXRhIHwgWEVMX1RTUl9YTUlUX0lF X01BU0ssCi0JCSAgICAgZHJ2ZGF0YS0+YmFzZV9hZGRyICsgWEVMX1RTUl9PRkZTRVQpOworCXJl Z19kYXRhID0geGVtYWNsaXRlX3JlYWRsKGRydmRhdGEtPmJhc2VfYWRkciArIFhFTF9UU1JfT0ZG U0VUKTsKKwl4ZW1hY2xpdGVfd3JpdGVsKHJlZ19kYXRhIHwgWEVMX1RTUl9YTUlUX0lFX01BU0ss CisJCQkgZHJ2ZGF0YS0+YmFzZV9hZGRyICsgWEVMX1RTUl9PRkZTRVQpOwogCiAJLyogRW5hYmxl IHRoZSBSeCBpbnRlcnJ1cHRzIGZvciB0aGUgZmlyc3QgYnVmZmVyICovCi0JX19yYXdfd3JpdGVs KFhFTF9SU1JfUkVDVl9JRV9NQVNLLCBkcnZkYXRhLT5iYXNlX2FkZHIgKyBYRUxfUlNSX09GRlNF VCk7CisJeGVtYWNsaXRlX3dyaXRlbChYRUxfUlNSX1JFQ1ZfSUVfTUFTSywgZHJ2ZGF0YS0+YmFz ZV9hZGRyICsgWEVMX1JTUl9PRkZTRVQpOwogCiAJLyogRW5hYmxlIHRoZSBHbG9iYWwgSW50ZXJy dXB0IEVuYWJsZSAqLwotCV9fcmF3X3dyaXRlbChYRUxfR0lFUl9HSUVfTUFTSywgZHJ2ZGF0YS0+ YmFzZV9hZGRyICsgWEVMX0dJRVJfT0ZGU0VUKTsKKwl4ZW1hY2xpdGVfd3JpdGVsKFhFTF9HSUVS X0dJRV9NQVNLLCBkcnZkYXRhLT5iYXNlX2FkZHIgKyBYRUxfR0lFUl9PRkZTRVQpOwogfQogCiAv KioKQEAgLTE4MSwxNyArMTg5LDE3IEBAIHN0YXRpYyB2b2lkIHhlbWFjbGl0ZV9kaXNhYmxlX2lu dGVycnVwdHMoc3RydWN0IG5ldF9sb2NhbCAqZHJ2ZGF0YSkKIAl1MzIgcmVnX2RhdGE7CiAKIAkv KiBEaXNhYmxlIHRoZSBHbG9iYWwgSW50ZXJydXB0IEVuYWJsZSAqLwotCV9fcmF3X3dyaXRlbChY RUxfR0lFUl9HSUVfTUFTSywgZHJ2ZGF0YS0+YmFzZV9hZGRyICsgWEVMX0dJRVJfT0ZGU0VUKTsK Kwl4ZW1hY2xpdGVfd3JpdGVsKFhFTF9HSUVSX0dJRV9NQVNLLCBkcnZkYXRhLT5iYXNlX2FkZHIg KyBYRUxfR0lFUl9PRkZTRVQpOwogCiAJLyogRGlzYWJsZSB0aGUgVHggaW50ZXJydXB0cyBmb3Ig dGhlIGZpcnN0IGJ1ZmZlciAqLwotCXJlZ19kYXRhID0gX19yYXdfcmVhZGwoZHJ2ZGF0YS0+YmFz ZV9hZGRyICsgWEVMX1RTUl9PRkZTRVQpOwotCV9fcmF3X3dyaXRlbChyZWdfZGF0YSAmICh+WEVM X1RTUl9YTUlUX0lFX01BU0spLAotCQkgICAgIGRydmRhdGEtPmJhc2VfYWRkciArIFhFTF9UU1Jf T0ZGU0VUKTsKKwlyZWdfZGF0YSA9IHhlbWFjbGl0ZV9yZWFkbChkcnZkYXRhLT5iYXNlX2FkZHIg KyBYRUxfVFNSX09GRlNFVCk7CisJeGVtYWNsaXRlX3dyaXRlbChyZWdfZGF0YSAmICh+WEVMX1RT Ul9YTUlUX0lFX01BU0spLAorCQkJIGRydmRhdGEtPmJhc2VfYWRkciArIFhFTF9UU1JfT0ZGU0VU KTsKIAogCS8qIERpc2FibGUgdGhlIFJ4IGludGVycnVwdHMgZm9yIHRoZSBmaXJzdCBidWZmZXIg Ki8KLQlyZWdfZGF0YSA9IF9fcmF3X3JlYWRsKGRydmRhdGEtPmJhc2VfYWRkciArIFhFTF9SU1Jf T0ZGU0VUKTsKLQlfX3Jhd193cml0ZWwocmVnX2RhdGEgJiAoflhFTF9SU1JfUkVDVl9JRV9NQVNL KSwKLQkJICAgICBkcnZkYXRhLT5iYXNlX2FkZHIgKyBYRUxfUlNSX09GRlNFVCk7CisJcmVnX2Rh dGEgPSB4ZW1hY2xpdGVfcmVhZGwoZHJ2ZGF0YS0+YmFzZV9hZGRyICsgWEVMX1JTUl9PRkZTRVQp OworCXhlbWFjbGl0ZV93cml0ZWwocmVnX2RhdGEgJiAoflhFTF9SU1JfUkVDVl9JRV9NQVNLKSwK KwkJCSBkcnZkYXRhLT5iYXNlX2FkZHIgKyBYRUxfUlNSX09GRlNFVCk7CiB9CiAKIC8qKgpAQCAt MzIzLDcgKzMzMSw3IEBAIHN0YXRpYyBpbnQgeGVtYWNsaXRlX3NlbmRfZGF0YShzdHJ1Y3QgbmV0 X2xvY2FsICpkcnZkYXRhLCB1OCAqZGF0YSwKIAkJYnl0ZV9jb3VudCA9IEVUSF9GUkFNRV9MRU47 CiAKIAkvKiBDaGVjayBpZiB0aGUgZXhwZWN0ZWQgYnVmZmVyIGlzIGF2YWlsYWJsZSAqLwotCXJl Z19kYXRhID0gX19yYXdfcmVhZGwoYWRkciArIFhFTF9UU1JfT0ZGU0VUKTsKKwlyZWdfZGF0YSA9 IHhlbWFjbGl0ZV9yZWFkbChhZGRyICsgWEVMX1RTUl9PRkZTRVQpOwogCWlmICgocmVnX2RhdGEg JiAoWEVMX1RTUl9YTUlUX0JVU1lfTUFTSyB8CiAJICAgICBYRUxfVFNSX1hNSVRfQUNUSVZFX01B U0spKSA9PSAwKSB7CiAKQEAgLTMzNiw3ICszNDQsNyBAQCBzdGF0aWMgaW50IHhlbWFjbGl0ZV9z ZW5kX2RhdGEoc3RydWN0IG5ldF9sb2NhbCAqZHJ2ZGF0YSwgdTggKmRhdGEsCiAKIAkJYWRkciA9 ICh2b2lkIF9faW9tZW0gX19mb3JjZSAqKSgodTMyIF9fZm9yY2UpYWRkciBeCiAJCQkJCQkgWEVM X0JVRkZFUl9PRkZTRVQpOwotCQlyZWdfZGF0YSA9IF9fcmF3X3JlYWRsKGFkZHIgKyBYRUxfVFNS X09GRlNFVCk7CisJCXJlZ19kYXRhID0geGVtYWNsaXRlX3JlYWRsKGFkZHIgKyBYRUxfVFNSX09G RlNFVCk7CiAKIAkJaWYgKChyZWdfZGF0YSAmIChYRUxfVFNSX1hNSVRfQlVTWV9NQVNLIHwKIAkJ ICAgICBYRUxfVFNSX1hNSVRfQUNUSVZFX01BU0spKSAhPSAwKQpAQCAtMzQ3LDE2ICszNTUsMTYg QEAgc3RhdGljIGludCB4ZW1hY2xpdGVfc2VuZF9kYXRhKHN0cnVjdCBuZXRfbG9jYWwgKmRydmRh dGEsIHU4ICpkYXRhLAogCS8qIFdyaXRlIHRoZSBmcmFtZSB0byB0aGUgYnVmZmVyICovCiAJeGVt YWNsaXRlX2FsaWduZWRfd3JpdGUoZGF0YSwgKHUzMiBfX2ZvcmNlICopIGFkZHIsIGJ5dGVfY291 bnQpOwogCi0JX19yYXdfd3JpdGVsKChieXRlX2NvdW50ICYgWEVMX1RQTFJfTEVOR1RIX01BU0sp LAotCQkgICAgIGFkZHIgKyBYRUxfVFBMUl9PRkZTRVQpOworCXhlbWFjbGl0ZV93cml0ZWwoKGJ5 dGVfY291bnQgJiBYRUxfVFBMUl9MRU5HVEhfTUFTSyksCisJCQkgYWRkciArIFhFTF9UUExSX09G RlNFVCk7CiAKIAkvKiBVcGRhdGUgdGhlIFR4IFN0YXR1cyBSZWdpc3RlciB0byBpbmRpY2F0ZSB0 aGF0IHRoZXJlIGlzIGEKIAkgKiBmcmFtZSB0byBzZW5kLiBTZXQgdGhlIFhFTF9UU1JfWE1JVF9B Q1RJVkVfTUFTSyBmbGFnIHdoaWNoCiAJICogaXMgdXNlZCBieSB0aGUgaW50ZXJydXB0IGhhbmRs ZXIgdG8gY2hlY2sgd2hldGhlciBhIGZyYW1lCiAJICogaGFzIGJlZW4gdHJhbnNtaXR0ZWQgKi8K LQlyZWdfZGF0YSA9IF9fcmF3X3JlYWRsKGFkZHIgKyBYRUxfVFNSX09GRlNFVCk7CisJcmVnX2Rh dGEgPSB4ZW1hY2xpdGVfcmVhZGwoYWRkciArIFhFTF9UU1JfT0ZGU0VUKTsKIAlyZWdfZGF0YSB8 PSAoWEVMX1RTUl9YTUlUX0JVU1lfTUFTSyB8IFhFTF9UU1JfWE1JVF9BQ1RJVkVfTUFTSyk7Ci0J X19yYXdfd3JpdGVsKHJlZ19kYXRhLCBhZGRyICsgWEVMX1RTUl9PRkZTRVQpOworCXhlbWFjbGl0 ZV93cml0ZWwocmVnX2RhdGEsIGFkZHIgKyBYRUxfVFNSX09GRlNFVCk7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTM3MSw3ICszNzksNyBAQCBzdGF0aWMgaW50IHhlbWFjbGl0ZV9zZW5kX2RhdGEoc3Ry dWN0IG5ldF9sb2NhbCAqZHJ2ZGF0YSwgdTggKmRhdGEsCiAgKgogICogUmV0dXJuOglUb3RhbCBu dW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQKICAqLwotc3RhdGljIHUxNiB4ZW1hY2xpdGVfcmVjdl9k YXRhKHN0cnVjdCBuZXRfbG9jYWwgKmRydmRhdGEsIHU4ICpkYXRhKQorc3RhdGljIHUxNiB4ZW1h Y2xpdGVfcmVjdl9kYXRhKHN0cnVjdCBuZXRfbG9jYWwgKmRydmRhdGEsIHU4ICpkYXRhLCBpbnQg bWF4bGVuKQogewogCXZvaWQgX19pb21lbSAqYWRkcjsKIAl1MTYgbGVuZ3RoLCBwcm90b190eXBl OwpAQCAtMzgxLDcgKzM4OSw3IEBAIHN0YXRpYyB1MTYgeGVtYWNsaXRlX3JlY3ZfZGF0YShzdHJ1 Y3QgbmV0X2xvY2FsICpkcnZkYXRhLCB1OCAqZGF0YSkKIAlhZGRyID0gKGRydmRhdGEtPmJhc2Vf YWRkciArIGRydmRhdGEtPm5leHRfcnhfYnVmX3RvX3VzZSk7CiAKIAkvKiBWZXJpZnkgd2hpY2gg YnVmZmVyIGhhcyB2YWxpZCBkYXRhICovCi0JcmVnX2RhdGEgPSBfX3Jhd19yZWFkbChhZGRyICsg WEVMX1JTUl9PRkZTRVQpOworCXJlZ19kYXRhID0geGVtYWNsaXRlX3JlYWRsKGFkZHIgKyBYRUxf UlNSX09GRlNFVCk7CiAKIAlpZiAoKHJlZ19kYXRhICYgWEVMX1JTUl9SRUNWX0RPTkVfTUFTSykg PT0gWEVMX1JTUl9SRUNWX0RPTkVfTUFTSykgewogCQlpZiAoZHJ2ZGF0YS0+cnhfcGluZ19wb25n ICE9IDApCkBAIC0zOTgsMjcgKzQwNiwyOCBAQCBzdGF0aWMgdTE2IHhlbWFjbGl0ZV9yZWN2X2Rh dGEoc3RydWN0IG5ldF9sb2NhbCAqZHJ2ZGF0YSwgdTggKmRhdGEpCiAJCQlyZXR1cm4gMDsJLyog Tm8gZGF0YSB3YXMgYXZhaWxhYmxlICovCiAKIAkJLyogVmVyaWZ5IHRoYXQgYnVmZmVyIGhhcyB2 YWxpZCBkYXRhICovCi0JCXJlZ19kYXRhID0gX19yYXdfcmVhZGwoYWRkciArIFhFTF9SU1JfT0ZG U0VUKTsKKwkJcmVnX2RhdGEgPSB4ZW1hY2xpdGVfcmVhZGwoYWRkciArIFhFTF9SU1JfT0ZGU0VU KTsKIAkJaWYgKChyZWdfZGF0YSAmIFhFTF9SU1JfUkVDVl9ET05FX01BU0spICE9CiAJCSAgICAg WEVMX1JTUl9SRUNWX0RPTkVfTUFTSykKIAkJCXJldHVybiAwOwkvKiBObyBkYXRhIHdhcyBhdmFp bGFibGUgKi8KIAl9CiAKIAkvKiBHZXQgdGhlIHByb3RvY29sIHR5cGUgb2YgdGhlIGV0aGVybmV0 IGZyYW1lIHRoYXQgYXJyaXZlZCAqLwotCXByb3RvX3R5cGUgPSAoKG50b2hsKF9fcmF3X3JlYWRs KGFkZHIgKyBYRUxfSEVBREVSX09GRlNFVCArCisJcHJvdG9fdHlwZSA9ICgobnRvaGwoeGVtYWNs aXRlX3JlYWRsKGFkZHIgKyBYRUxfSEVBREVSX09GRlNFVCArCiAJCQlYRUxfUlhCVUZGX09GRlNF VCkpID4+IFhFTF9IRUFERVJfU0hJRlQpICYKIAkJCVhFTF9SUExSX0xFTkdUSF9NQVNLKTsKIAog CS8qIENoZWNrIGlmIHJlY2VpdmVkIGV0aGVybmV0IGZyYW1lIGlzIGEgcmF3IGV0aGVybmV0IGZy YW1lCiAJICogb3IgYW4gSVAgcGFja2V0IG9yIGFuIEFSUCBwYWNrZXQgKi8KLQlpZiAocHJvdG9f dHlwZSA+IChFVEhfRlJBTUVfTEVOICsgRVRIX0ZDU19MRU4pKSB7CisJaWYgKHByb3RvX3R5cGUg PiBFVEhfREFUQV9MRU4pIHsKIAogCQlpZiAocHJvdG9fdHlwZSA9PSBFVEhfUF9JUCkgewotCQkJ bGVuZ3RoID0gKChudG9obChfX3Jhd19yZWFkbChhZGRyICsKKwkJCWxlbmd0aCA9ICgobnRvaGwo eGVtYWNsaXRlX3JlYWRsKGFkZHIgKwogCQkJCQlYRUxfSEVBREVSX0lQX0xFTkdUSF9PRkZTRVQg KwogCQkJCQlYRUxfUlhCVUZGX09GRlNFVCkpID4+CiAJCQkJCVhFTF9IRUFERVJfU0hJRlQpICYK IAkJCQkJWEVMX1JQTFJfTEVOR1RIX01BU0spOworCQkJbGVuZ3RoID0gbWluX3QodTE2LCBsZW5n dGgsIEVUSF9EQVRBX0xFTik7CiAJCQlsZW5ndGggKz0gRVRIX0hMRU4gKyBFVEhfRkNTX0xFTjsK IAogCQl9IGVsc2UgaWYgKHByb3RvX3R5cGUgPT0gRVRIX1BfQVJQKQpAQCAtNDMxLDE0ICs0NDAs MTcgQEAgc3RhdGljIHUxNiB4ZW1hY2xpdGVfcmVjdl9kYXRhKHN0cnVjdCBuZXRfbG9jYWwgKmRy dmRhdGEsIHU4ICpkYXRhKQogCQkvKiBVc2UgdGhlIGxlbmd0aCBpbiB0aGUgZnJhbWUsIHBsdXMg dGhlIGhlYWRlciBhbmQgdHJhaWxlciAqLwogCQlsZW5ndGggPSBwcm90b190eXBlICsgRVRIX0hM RU4gKyBFVEhfRkNTX0xFTjsKIAorCWlmIChXQVJOX09OKGxlbmd0aCA+IG1heGxlbikpCisJCWxl bmd0aCA9IG1heGxlbjsKKwogCS8qIFJlYWQgZnJvbSB0aGUgRW1hY0xpdGUgZGV2aWNlICovCiAJ eGVtYWNsaXRlX2FsaWduZWRfcmVhZCgodTMyIF9fZm9yY2UgKikgKGFkZHIgKyBYRUxfUlhCVUZG X09GRlNFVCksCiAJCQkJZGF0YSwgbGVuZ3RoKTsKIAogCS8qIEFja25vd2xlZGdlIHRoZSBmcmFt ZSAqLwotCXJlZ19kYXRhID0gX19yYXdfcmVhZGwoYWRkciArIFhFTF9SU1JfT0ZGU0VUKTsKKwly ZWdfZGF0YSA9IHhlbWFjbGl0ZV9yZWFkbChhZGRyICsgWEVMX1JTUl9PRkZTRVQpOwogCXJlZ19k YXRhICY9IH5YRUxfUlNSX1JFQ1ZfRE9ORV9NQVNLOwotCV9fcmF3X3dyaXRlbChyZWdfZGF0YSwg YWRkciArIFhFTF9SU1JfT0ZGU0VUKTsKKwl4ZW1hY2xpdGVfd3JpdGVsKHJlZ19kYXRhLCBhZGRy ICsgWEVMX1JTUl9PRkZTRVQpOwogCiAJcmV0dXJuIGxlbmd0aDsKIH0KQEAgLTQ2NSwxNCArNDc3 LDE0IEBAIHN0YXRpYyB2b2lkIHhlbWFjbGl0ZV91cGRhdGVfYWRkcmVzcyhzdHJ1Y3QgbmV0X2xv Y2FsICpkcnZkYXRhLAogCiAJeGVtYWNsaXRlX2FsaWduZWRfd3JpdGUoYWRkcmVzc19wdHIsICh1 MzIgX19mb3JjZSAqKSBhZGRyLCBFVEhfQUxFTik7CiAKLQlfX3Jhd193cml0ZWwoRVRIX0FMRU4s IGFkZHIgKyBYRUxfVFBMUl9PRkZTRVQpOworCXhlbWFjbGl0ZV93cml0ZWwoRVRIX0FMRU4sIGFk ZHIgKyBYRUxfVFBMUl9PRkZTRVQpOwogCiAJLyogVXBkYXRlIHRoZSBNQUMgYWRkcmVzcyBpbiB0 aGUgRW1hY0xpdGUgKi8KLQlyZWdfZGF0YSA9IF9fcmF3X3JlYWRsKGFkZHIgKyBYRUxfVFNSX09G RlNFVCk7Ci0JX19yYXdfd3JpdGVsKHJlZ19kYXRhIHwgWEVMX1RTUl9QUk9HX01BQ19BRERSLCBh ZGRyICsgWEVMX1RTUl9PRkZTRVQpOworCXJlZ19kYXRhID0geGVtYWNsaXRlX3JlYWRsKGFkZHIg KyBYRUxfVFNSX09GRlNFVCk7CisJeGVtYWNsaXRlX3dyaXRlbChyZWdfZGF0YSB8IFhFTF9UU1Jf UFJPR19NQUNfQUREUiwgYWRkciArIFhFTF9UU1JfT0ZGU0VUKTsKIAogCS8qIFdhaXQgZm9yIEVt YWNMaXRlIHRvIGZpbmlzaCB3aXRoIHRoZSBNQUMgYWRkcmVzcyB1cGRhdGUgKi8KLQl3aGlsZSAo KF9fcmF3X3JlYWRsKGFkZHIgKyBYRUxfVFNSX09GRlNFVCkgJgorCXdoaWxlICgoeGVtYWNsaXRl X3JlYWRsKGFkZHIgKyBYRUxfVFNSX09GRlNFVCkgJgogCQlYRUxfVFNSX1BST0dfTUFDX0FERFIp ICE9IDApCiAJCTsKIH0KQEAgLTYwNSw3ICs2MTcsNyBAQCBzdGF0aWMgdm9pZCB4ZW1hY2xpdGVf cnhfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJc2tiX3Jlc2VydmUoc2tiLCAy KTsKIAotCWxlbiA9IHhlbWFjbGl0ZV9yZWN2X2RhdGEobHAsICh1OCAqKSBza2ItPmRhdGEpOwor CWxlbiA9IHhlbWFjbGl0ZV9yZWN2X2RhdGEobHAsICh1OCAqKSBza2ItPmRhdGEsIGxlbik7CiAK IAlpZiAoIWxlbikgewogCQlkZXYtPnN0YXRzLnJ4X2Vycm9ycysrOwpAQCAtNjQyLDMyICs2NTQs MzIgQEAgc3RhdGljIGlycXJldHVybl90IHhlbWFjbGl0ZV9pbnRlcnJ1cHQoaW50IGlycSwgdm9p ZCAqZGV2X2lkKQogCXUzMiB0eF9zdGF0dXM7CiAKIAkvKiBDaGVjayBpZiB0aGVyZSBpcyBSeCBE YXRhIGF2YWlsYWJsZSAqLwotCWlmICgoX19yYXdfcmVhZGwoYmFzZV9hZGRyICsgWEVMX1JTUl9P RkZTRVQpICYKKwlpZiAoKHhlbWFjbGl0ZV9yZWFkbChiYXNlX2FkZHIgKyBYRUxfUlNSX09GRlNF VCkgJgogCQkJIFhFTF9SU1JfUkVDVl9ET05FX01BU0spIHx8Ci0JICAgIChfX3Jhd19yZWFkbChi YXNlX2FkZHIgKyBYRUxfQlVGRkVSX09GRlNFVCArIFhFTF9SU1JfT0ZGU0VUKQorCSAgICAoeGVt YWNsaXRlX3JlYWRsKGJhc2VfYWRkciArIFhFTF9CVUZGRVJfT0ZGU0VUICsgWEVMX1JTUl9PRkZT RVQpCiAJCQkgJiBYRUxfUlNSX1JFQ1ZfRE9ORV9NQVNLKSkKIAogCQl4ZW1hY2xpdGVfcnhfaGFu ZGxlcihkZXYpOwogCiAJLyogQ2hlY2sgaWYgdGhlIFRyYW5zbWlzc2lvbiBmb3IgdGhlIGZpcnN0 IGJ1ZmZlciBpcyBjb21wbGV0ZWQgKi8KLQl0eF9zdGF0dXMgPSBfX3Jhd19yZWFkbChiYXNlX2Fk ZHIgKyBYRUxfVFNSX09GRlNFVCk7CisJdHhfc3RhdHVzID0geGVtYWNsaXRlX3JlYWRsKGJhc2Vf YWRkciArIFhFTF9UU1JfT0ZGU0VUKTsKIAlpZiAoKCh0eF9zdGF0dXMgJiBYRUxfVFNSX1hNSVRf QlVTWV9NQVNLKSA9PSAwKSAmJgogCQkodHhfc3RhdHVzICYgWEVMX1RTUl9YTUlUX0FDVElWRV9N QVNLKSAhPSAwKSB7CiAKIAkJdHhfc3RhdHVzICY9IH5YRUxfVFNSX1hNSVRfQUNUSVZFX01BU0s7 Ci0JCV9fcmF3X3dyaXRlbCh0eF9zdGF0dXMsIGJhc2VfYWRkciArIFhFTF9UU1JfT0ZGU0VUKTsK KwkJeGVtYWNsaXRlX3dyaXRlbCh0eF9zdGF0dXMsIGJhc2VfYWRkciArIFhFTF9UU1JfT0ZGU0VU KTsKIAogCQl0eF9jb21wbGV0ZSA9IHRydWU7CiAJfQogCiAJLyogQ2hlY2sgaWYgdGhlIFRyYW5z bWlzc2lvbiBmb3IgdGhlIHNlY29uZCBidWZmZXIgaXMgY29tcGxldGVkICovCi0JdHhfc3RhdHVz ID0gX19yYXdfcmVhZGwoYmFzZV9hZGRyICsgWEVMX0JVRkZFUl9PRkZTRVQgKyBYRUxfVFNSX09G RlNFVCk7CisJdHhfc3RhdHVzID0geGVtYWNsaXRlX3JlYWRsKGJhc2VfYWRkciArIFhFTF9CVUZG RVJfT0ZGU0VUICsgWEVMX1RTUl9PRkZTRVQpOwogCWlmICgoKHR4X3N0YXR1cyAmIFhFTF9UU1Jf WE1JVF9CVVNZX01BU0spID09IDApICYmCiAJCSh0eF9zdGF0dXMgJiBYRUxfVFNSX1hNSVRfQUNU SVZFX01BU0spICE9IDApIHsKIAogCQl0eF9zdGF0dXMgJj0gflhFTF9UU1JfWE1JVF9BQ1RJVkVf TUFTSzsKLQkJX19yYXdfd3JpdGVsKHR4X3N0YXR1cywgYmFzZV9hZGRyICsgWEVMX0JVRkZFUl9P RkZTRVQgKwotCQkJICAgICBYRUxfVFNSX09GRlNFVCk7CisJCXhlbWFjbGl0ZV93cml0ZWwodHhf c3RhdHVzLCBiYXNlX2FkZHIgKyBYRUxfQlVGRkVSX09GRlNFVCArCisJCQkJIFhFTF9UU1JfT0ZG U0VUKTsKIAogCQl0eF9jb21wbGV0ZSA9IHRydWU7CiAJfQpAQCAtNzAwLDcgKzcxMiw3IEBAIHN0 YXRpYyBpbnQgeGVtYWNsaXRlX21kaW9fd2FpdChzdHJ1Y3QgbmV0X2xvY2FsICpscCkKIAkvKiB3 YWl0IGZvciB0aGUgTURJTyBpbnRlcmZhY2UgdG8gbm90IGJlIGJ1c3kgb3IgdGltZW91dAogCSAg IGFmdGVyIHNvbWUgdGltZS4KIAkqLwotCXdoaWxlIChfX3Jhd19yZWFkbChscC0+YmFzZV9hZGRy ICsgWEVMX01ESU9DVFJMX09GRlNFVCkgJgorCXdoaWxlICh4ZW1hY2xpdGVfcmVhZGwobHAtPmJh c2VfYWRkciArIFhFTF9NRElPQ1RSTF9PRkZTRVQpICYKIAkJCVhFTF9NRElPQ1RSTF9NRElPU1RT X01BU0spIHsKIAkJaWYgKHRpbWVfYmVmb3JlX2VxKGVuZCwgamlmZmllcykpIHsKIAkJCVdBUk5f T04oMSk7CkBAIC03MzYsMTcgKzc0OCwxNyBAQCBzdGF0aWMgaW50IHhlbWFjbGl0ZV9tZGlvX3Jl YWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZykKIAkgKiBNRElPIEFk ZHJlc3MgcmVnaXN0ZXIuIFNldCB0aGUgU3RhdHVzIGJpdCBpbiB0aGUgTURJTyBDb250cm9sCiAJ ICogcmVnaXN0ZXIgdG8gc3RhcnQgYSBNRElPIHJlYWQgdHJhbnNhY3Rpb24uCiAJICovCi0JY3Ry bF9yZWcgPSBfX3Jhd19yZWFkbChscC0+YmFzZV9hZGRyICsgWEVMX01ESU9DVFJMX09GRlNFVCk7 Ci0JX19yYXdfd3JpdGVsKFhFTF9NRElPQUREUl9PUF9NQVNLIHwKLQkJICAgICAoKHBoeV9pZCA8 PCBYRUxfTURJT0FERFJfUEhZQURSX1NISUZUKSB8IHJlZyksCi0JCSAgICAgbHAtPmJhc2VfYWRk ciArIFhFTF9NRElPQUREUl9PRkZTRVQpOwotCV9fcmF3X3dyaXRlbChjdHJsX3JlZyB8IFhFTF9N RElPQ1RSTF9NRElPU1RTX01BU0ssCi0JCSAgICAgbHAtPmJhc2VfYWRkciArIFhFTF9NRElPQ1RS TF9PRkZTRVQpOworCWN0cmxfcmVnID0geGVtYWNsaXRlX3JlYWRsKGxwLT5iYXNlX2FkZHIgKyBY RUxfTURJT0NUUkxfT0ZGU0VUKTsKKwl4ZW1hY2xpdGVfd3JpdGVsKFhFTF9NRElPQUREUl9PUF9N QVNLIHwKKwkJCSAoKHBoeV9pZCA8PCBYRUxfTURJT0FERFJfUEhZQURSX1NISUZUKSB8IHJlZyks CisJCQkgbHAtPmJhc2VfYWRkciArIFhFTF9NRElPQUREUl9PRkZTRVQpOworCXhlbWFjbGl0ZV93 cml0ZWwoY3RybF9yZWcgfCBYRUxfTURJT0NUUkxfTURJT1NUU19NQVNLLAorCQkJIGxwLT5iYXNl X2FkZHIgKyBYRUxfTURJT0NUUkxfT0ZGU0VUKTsKIAogCWlmICh4ZW1hY2xpdGVfbWRpb193YWl0 KGxwKSkKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAKLQlyYyA9IF9fcmF3X3JlYWRsKGxwLT5iYXNl X2FkZHIgKyBYRUxfTURJT1JEX09GRlNFVCk7CisJcmMgPSB4ZW1hY2xpdGVfcmVhZGwobHAtPmJh c2VfYWRkciArIFhFTF9NRElPUkRfT0ZGU0VUKTsKIAogCWRldl9kYmcoJmxwLT5uZGV2LT5kZXYs CiAJCSJ4ZW1hY2xpdGVfbWRpb19yZWFkKHBoeV9pZD0laSwgcmVnPSV4KSA9PSAleFxuIiwKQEAg LTc4MywxMyArNzk1LDEzIEBAIHN0YXRpYyBpbnQgeGVtYWNsaXRlX21kaW9fd3JpdGUoc3RydWN0 IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZywKIAkgKiBEYXRhIHJlZ2lzdGVyLiBG aW5hbGx5LCBzZXQgdGhlIFN0YXR1cyBiaXQgaW4gdGhlIE1ESU8gQ29udHJvbAogCSAqIHJlZ2lz dGVyIHRvIHN0YXJ0IGEgTURJTyB3cml0ZSB0cmFuc2FjdGlvbi4KIAkgKi8KLQljdHJsX3JlZyA9 IF9fcmF3X3JlYWRsKGxwLT5iYXNlX2FkZHIgKyBYRUxfTURJT0NUUkxfT0ZGU0VUKTsKLQlfX3Jh d193cml0ZWwoflhFTF9NRElPQUREUl9PUF9NQVNLICYKLQkJICAgICAoKHBoeV9pZCA8PCBYRUxf TURJT0FERFJfUEhZQURSX1NISUZUKSB8IHJlZyksCi0JCSAgICAgbHAtPmJhc2VfYWRkciArIFhF TF9NRElPQUREUl9PRkZTRVQpOwotCV9fcmF3X3dyaXRlbCh2YWwsIGxwLT5iYXNlX2FkZHIgKyBY RUxfTURJT1dSX09GRlNFVCk7Ci0JX19yYXdfd3JpdGVsKGN0cmxfcmVnIHwgWEVMX01ESU9DVFJM X01ESU9TVFNfTUFTSywKLQkJICAgICBscC0+YmFzZV9hZGRyICsgWEVMX01ESU9DVFJMX09GRlNF VCk7CisJY3RybF9yZWcgPSB4ZW1hY2xpdGVfcmVhZGwobHAtPmJhc2VfYWRkciArIFhFTF9NRElP Q1RSTF9PRkZTRVQpOworCXhlbWFjbGl0ZV93cml0ZWwoflhFTF9NRElPQUREUl9PUF9NQVNLICYK KwkJCSAoKHBoeV9pZCA8PCBYRUxfTURJT0FERFJfUEhZQURSX1NISUZUKSB8IHJlZyksCisJCQkg bHAtPmJhc2VfYWRkciArIFhFTF9NRElPQUREUl9PRkZTRVQpOworCXhlbWFjbGl0ZV93cml0ZWwo dmFsLCBscC0+YmFzZV9hZGRyICsgWEVMX01ESU9XUl9PRkZTRVQpOworCXhlbWFjbGl0ZV93cml0 ZWwoY3RybF9yZWcgfCBYRUxfTURJT0NUUkxfTURJT1NUU19NQVNLLAorCQkJIGxwLT5iYXNlX2Fk ZHIgKyBYRUxfTURJT0NUUkxfT0ZGU0VUKTsKIAogCXJldHVybiAwOwogfQpAQCAtODM0LDggKzg0 Niw4IEBAIHN0YXRpYyBpbnQgeGVtYWNsaXRlX21kaW9fc2V0dXAoc3RydWN0IG5ldF9sb2NhbCAq bHAsIHN0cnVjdCBkZXZpY2UgKmRldikKIAkvKiBFbmFibGUgdGhlIE1ESU8gYnVzIGJ5IGFzc2Vy dGluZyB0aGUgZW5hYmxlIGJpdCBpbiBNRElPIENvbnRyb2wKIAkgKiByZWdpc3Rlci4KIAkgKi8K LQlfX3Jhd193cml0ZWwoWEVMX01ESU9DVFJMX01ESU9FTl9NQVNLLAotCQkgICAgIGxwLT5iYXNl X2FkZHIgKyBYRUxfTURJT0NUUkxfT0ZGU0VUKTsKKwl4ZW1hY2xpdGVfd3JpdGVsKFhFTF9NRElP Q1RSTF9NRElPRU5fTUFTSywKKwkJCSBscC0+YmFzZV9hZGRyICsgWEVMX01ESU9DVFJMX09GRlNF VCk7CiAKIAlidXMgPSBtZGlvYnVzX2FsbG9jKCk7CiAJaWYgKCFidXMpIHsKQEAgLTExMzgsOCAr MTE1MCw4IEBAIHN0YXRpYyBpbnQgeGVtYWNsaXRlX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKm9mZGV2KQogCQlkZXZfd2FybihkZXYsICJObyBNQUMgYWRkcmVzcyBmb3VuZFxuIik7 CiAKIAkvKiBDbGVhciB0aGUgVHggQ1NSJ3MgaW4gY2FzZSB0aGlzIGlzIGEgcmVzdGFydCAqLwot CV9fcmF3X3dyaXRlbCgwLCBscC0+YmFzZV9hZGRyICsgWEVMX1RTUl9PRkZTRVQpOwotCV9fcmF3 X3dyaXRlbCgwLCBscC0+YmFzZV9hZGRyICsgWEVMX0JVRkZFUl9PRkZTRVQgKyBYRUxfVFNSX09G RlNFVCk7CisJeGVtYWNsaXRlX3dyaXRlbCgwLCBscC0+YmFzZV9hZGRyICsgWEVMX1RTUl9PRkZT RVQpOworCXhlbWFjbGl0ZV93cml0ZWwoMCwgbHAtPmJhc2VfYWRkciArIFhFTF9CVUZGRVJfT0ZG U0VUICsgWEVMX1RTUl9PRkZTRVQpOwogCiAJLyogU2V0IHRoZSBNQUMgYWRkcmVzcyBpbiB0aGUg RW1hY0xpdGUgZGV2aWNlICovCiAJeGVtYWNsaXRlX3VwZGF0ZV9hZGRyZXNzKGxwLCBuZGV2LT5k ZXZfYWRkcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jIGIv ZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYwppbmRleCA3ZTMzMzE4MjEyMDAuLmFiNjhk OTQwYTJjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYworKysg Yi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jCkBAIC00Nyw2ICs0Nyw5IEBAIHN0cnVj dCBuZXRfZGV2aWNlX2NvbnRleHQgewogCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogfTsKIAor LyogUmVzdHJpY3QgR1NPIHNpemUgdG8gYWNjb3VudCBmb3IgTlZHUkUgKi8KKyNkZWZpbmUgTkVU VlNDX0dTT19NQVhfU0laRQk2Mjc2OAorCiAjZGVmaW5lIFJJTkdfU0laRV9NSU4gNjQKIHN0YXRp YyBpbnQgcmluZ19zaXplID0gMTI4OwogbW9kdWxlX3BhcmFtKHJpbmdfc2l6ZSwgaW50LCBTX0lS VUdPKTsKQEAgLTgzOSw2ICs4NDIsNyBAQCBzdGF0aWMgaW50IG5ldHZzY19wcm9iZShzdHJ1Y3Qg aHZfZGV2aWNlICpkZXYsCiAJbnZkZXYgPSBodl9nZXRfZHJ2ZGF0YShkZXYpOwogCW5ldGlmX3Nl dF9yZWFsX251bV90eF9xdWV1ZXMobmV0LCBudmRldi0+bnVtX2Nobik7CiAJbmV0aWZfc2V0X3Jl YWxfbnVtX3J4X3F1ZXVlcyhuZXQsIG52ZGV2LT5udW1fY2huKTsKKwluZXRpZl9zZXRfZ3NvX21h eF9zaXplKG5ldCwgTkVUVlNDX0dTT19NQVhfU0laRSk7CiAKIAlyZXQgPSByZWdpc3Rlcl9uZXRk ZXYobmV0KTsKIAlpZiAocmV0ICE9IDApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3Z0 YXAuYyBiL2RyaXZlcnMvbmV0L21hY3Z0YXAuYwppbmRleCBmYWE3OTA0MGQzMzYuLmI3ODdkMWNl ZWJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWFjdnRhcC5jCisrKyBiL2RyaXZlcnMvbmV0 L21hY3Z0YXAuYwpAQCAtNjU3LDcgKzY1Nyw3IEBAIHN0YXRpYyBzc2l6ZV90IG1hY3Z0YXBfZ2V0 X3VzZXIoc3RydWN0IG1hY3Z0YXBfcXVldWUgKnEsIHN0cnVjdCBtc2doZHIgKm0sCiAJc2l6ZV90 IGxpbmVhcjsKIAogCWlmIChxLT5mbGFncyAmIElGRl9WTkVUX0hEUikgewotCQl2bmV0X2hkcl9s ZW4gPSBxLT52bmV0X2hkcl9zejsKKwkJdm5ldF9oZHJfbGVuID0gQUNDRVNTX09OQ0UocS0+dm5l dF9oZHJfc3opOwogCiAJCWVyciA9IC1FSU5WQUw7CiAJCWlmIChsZW4gPCB2bmV0X2hkcl9sZW4p CkBAIC03OTMsNyArNzkzLDcgQEAgc3RhdGljIHNzaXplX3QgbWFjdnRhcF9wdXRfdXNlcihzdHJ1 Y3QgbWFjdnRhcF9xdWV1ZSAqcSwKIAogCWlmIChxLT5mbGFncyAmIElGRl9WTkVUX0hEUikgewog CQlzdHJ1Y3QgdmlydGlvX25ldF9oZHIgdm5ldF9oZHI7Ci0JCXZuZXRfaGRyX2xlbiA9IHEtPnZu ZXRfaGRyX3N6OworCQl2bmV0X2hkcl9sZW4gPSBBQ0NFU1NfT05DRShxLT52bmV0X2hkcl9zeik7 CiAJCWlmICgobGVuIC09IHZuZXRfaGRyX2xlbikgPCAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3R1bi5jIGIvZHJpdmVycy9uZXQvdHVuLmMKaW5kZXgg MzQzYTcxYWQ4NjViLi4xYzg0M2E0YWM3YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bi5j CisrKyBiL2RyaXZlcnMvbmV0L3R1bi5jCkBAIC0xMDM3LDkgKzEwMzcsMTEgQEAgc3RhdGljIHNz aXplX3QgdHVuX2dldF91c2VyKHN0cnVjdCB0dW5fc3RydWN0ICp0dW4sIHN0cnVjdCB0dW5fZmls ZSAqdGZpbGUsCiAJfQogCiAJaWYgKHR1bi0+ZmxhZ3MgJiBUVU5fVk5FVF9IRFIpIHsKLQkJaWYg KGxlbiA8IHR1bi0+dm5ldF9oZHJfc3opCisJCWludCB2bmV0X2hkcl9zeiA9IEFDQ0VTU19PTkNF KHR1bi0+dm5ldF9oZHJfc3opOworCisJCWlmIChsZW4gPCB2bmV0X2hkcl9zeikKIAkJCXJldHVy biAtRUlOVkFMOwotCQlsZW4gLT0gdHVuLT52bmV0X2hkcl9zejsKKwkJbGVuIC09IHZuZXRfaGRy X3N6OwogCiAJCWlmIChtZW1jcHlfZnJvbWlvdmVjZW5kKCh2b2lkICopJmdzbywgaXYsIG9mZnNl dCwgc2l6ZW9mKGdzbykpKQogCQkJcmV0dXJuIC1FRkFVTFQ7CkBAIC0xMDUwLDcgKzEwNTIsNyBA QCBzdGF0aWMgc3NpemVfdCB0dW5fZ2V0X3VzZXIoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1biwgc3Ry dWN0IHR1bl9maWxlICp0ZmlsZSwKIAogCQlpZiAoZ3NvLmhkcl9sZW4gPiBsZW4pCiAJCQlyZXR1 cm4gLUVJTlZBTDsKLQkJb2Zmc2V0ICs9IHR1bi0+dm5ldF9oZHJfc3o7CisJCW9mZnNldCArPSB2 bmV0X2hkcl9zejsKIAl9CiAKIAlpZiAoKHR1bi0+ZmxhZ3MgJiBUVU5fVFlQRV9NQVNLKSA9PSBU VU5fVEFQX0RFVikgewpAQCAtMTIyNywxNSArMTIyOSwxOSBAQCBzdGF0aWMgc3NpemVfdCB0dW5f cHV0X3VzZXIoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1biwKIAlzc2l6ZV90IHRvdGFsID0gMDsKIAlp bnQgdmxhbl9vZmZzZXQgPSAwLCBjb3BpZWQ7CiAJaW50IHZsYW5faGxlbiA9IDA7CisJaW50IHZu ZXRfaGRyX3N6ID0gMDsKIAogCWlmICh2bGFuX3R4X3RhZ19wcmVzZW50KHNrYikpCiAJCXZsYW5f aGxlbiA9IFZMQU5fSExFTjsKIAorCWlmICh0dW4tPmZsYWdzICYgVFVOX1ZORVRfSERSKQorCQl2 bmV0X2hkcl9zeiA9IEFDQ0VTU19PTkNFKHR1bi0+dm5ldF9oZHJfc3opOworCiAJaWYgKCEodHVu LT5mbGFncyAmIFRVTl9OT19QSSkpIHsKIAkJaWYgKChsZW4gLT0gc2l6ZW9mKHBpKSkgPCAwKQog CQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJaWYgKGxlbiA8IHNrYi0+bGVuKSB7CisJCWlmIChsZW4g PCBza2ItPmxlbiArIHZsYW5faGxlbiArIHZuZXRfaGRyX3N6KSB7CiAJCQkvKiBQYWNrZXQgd2ls bCBiZSBzdHJpcGVkICovCiAJCQlwaS5mbGFncyB8PSBUVU5fUEtUX1NUUklQOwogCQl9CkBAIC0x MjQ1LDkgKzEyNTEsOSBAQCBzdGF0aWMgc3NpemVfdCB0dW5fcHV0X3VzZXIoc3RydWN0IHR1bl9z dHJ1Y3QgKnR1biwKIAkJdG90YWwgKz0gc2l6ZW9mKHBpKTsKIAl9CiAKLQlpZiAodHVuLT5mbGFn cyAmIFRVTl9WTkVUX0hEUikgeworCWlmICh2bmV0X2hkcl9zeikgewogCQlzdHJ1Y3QgdmlydGlv X25ldF9oZHIgZ3NvID0geyAwIH07IC8qIG5vIGluZm8gbGVhayAqLwotCQlpZiAoKGxlbiAtPSB0 dW4tPnZuZXRfaGRyX3N6KSA8IDApCisJCWlmICgobGVuIC09IHZuZXRfaGRyX3N6KSA8IDApCiAJ CQlyZXR1cm4gLUVJTlZBTDsKIAogCQlpZiAoc2tiX2lzX2dzbyhza2IpKSB7CkBAIC0xMjkxLDcg KzEyOTcsNyBAQCBzdGF0aWMgc3NpemVfdCB0dW5fcHV0X3VzZXIoc3RydWN0IHR1bl9zdHJ1Y3Qg KnR1biwKIAkJaWYgKHVubGlrZWx5KG1lbWNweV90b2lvdmVjZW5kKGl2LCAodm9pZCAqKSZnc28s IHRvdGFsLAogCQkJCQkgICAgICAgc2l6ZW9mKGdzbykpKSkKIAkJCXJldHVybiAtRUZBVUxUOwot CQl0b3RhbCArPSB0dW4tPnZuZXRfaGRyX3N6OworCQl0b3RhbCArPSB2bmV0X2hkcl9zejsKIAl9 CiAKIAljb3BpZWQgPSB0b3RhbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMg Yi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCmluZGV4IDhjZmMzYmIwYzZhNi4uNDM2ZGEwYzNjZTNi IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCisrKyBiL2RyaXZlcnMvbmV0L3Vz Yi9jYXRjLmMKQEAgLTc3Nyw3ICs3NzcsNyBAQCBzdGF0aWMgaW50IGNhdGNfcHJvYmUoc3RydWN0 IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZAogCXN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJc3RydWN0IGNhdGMgKmNhdGM7CiAJdTggYnJvYWRj YXN0W0VUSF9BTEVOXTsKLQlpbnQgaSwgcGt0c3o7CisJaW50IHBrdHN6LCByZXQ7CiAKIAlpZiAo dXNiX3NldF9pbnRlcmZhY2UodXNiZGV2LAogCQkJaW50Zi0+YWx0c2V0dGluZy0+ZGVzYy5iSW50 ZXJmYWNlTnVtYmVyLCAxKSkgewpAQCAtODEyLDEyICs4MTIsOCBAQCBzdGF0aWMgaW50IGNhdGNf cHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNl X2lkICppZAogCWlmICgoIWNhdGMtPmN0cmxfdXJiKSB8fCAoIWNhdGMtPnR4X3VyYikgfHwgCiAJ ICAgICghY2F0Yy0+cnhfdXJiKSB8fCAoIWNhdGMtPmlycV91cmIpKSB7CiAJCWRldl9lcnIoJmlu dGYtPmRldiwgIk5vIGZyZWUgdXJicyBhdmFpbGFibGUuXG4iKTsKLQkJdXNiX2ZyZWVfdXJiKGNh dGMtPmN0cmxfdXJiKTsKLQkJdXNiX2ZyZWVfdXJiKGNhdGMtPnR4X3VyYik7Ci0JCXVzYl9mcmVl X3VyYihjYXRjLT5yeF91cmIpOwotCQl1c2JfZnJlZV91cmIoY2F0Yy0+aXJxX3VyYik7Ci0JCWZy ZWVfbmV0ZGV2KG5ldGRldik7Ci0JCXJldHVybiAtRU5PTUVNOworCQlyZXQgPSAtRU5PTUVNOwor CQlnb3RvIGZhaWxfZnJlZTsKIAl9CiAKIAkvKiBUaGUgRjVVMDExIGhhcyB0aGUgc2FtZSB2ZW5k b3IvcHJvZHVjdCBhcyB0aGUgbmV0bWF0ZSBidXQgYSBkZXZpY2UgdmVyc2lvbiBvZiAweDEzMCAq LwpAQCAtODQ1LDE1ICs4NDEsMjQgQEAgc3RhdGljIGludCBjYXRjX3Byb2JlKHN0cnVjdCB1c2Jf aW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQKICAgICAgICAg ICAgICAgICBjYXRjLT5pcnFfYnVmLCAyLCBjYXRjX2lycV9kb25lLCBjYXRjLCAxKTsKIAogCWlm ICghY2F0Yy0+aXNfZjV1MDExKSB7CisJCXUzMiAqYnVmOworCQlpbnQgaTsKKwogCQlkZXZfZGJn KGRldiwgIkNoZWNraW5nIG1lbW9yeSBzaXplXG4iKTsKIAotCQlpID0gMHgxMjM0NTY3ODsKLQkJ Y2F0Y193cml0ZV9tZW0oY2F0YywgMHg3YTgwLCAmaSwgNCk7Ci0JCWkgPSAweDg3NjU0MzIxOwkK LQkJY2F0Y193cml0ZV9tZW0oY2F0YywgMHhmYTgwLCAmaSwgNCk7Ci0JCWNhdGNfcmVhZF9tZW0o Y2F0YywgMHg3YTgwLCAmaSwgNCk7CisJCWJ1ZiA9IGttYWxsb2MoNCwgR0ZQX0tFUk5FTCk7CisJ CWlmICghYnVmKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBmYWlsX2ZyZWU7CisJCX0K KworCQkqYnVmID0gMHgxMjM0NTY3ODsKKwkJY2F0Y193cml0ZV9tZW0oY2F0YywgMHg3YTgwLCBi dWYsIDQpOworCQkqYnVmID0gMHg4NzY1NDMyMTsKKwkJY2F0Y193cml0ZV9tZW0oY2F0YywgMHhm YTgwLCBidWYsIDQpOworCQljYXRjX3JlYWRfbWVtKGNhdGMsIDB4N2E4MCwgYnVmLCA0KTsKIAkg IAotCQlzd2l0Y2ggKGkpIHsKKwkJc3dpdGNoICgqYnVmKSB7CiAJCWNhc2UgMHgxMjM0NTY3ODoK IAkJCWNhdGNfc2V0X3JlZyhjYXRjLCBUeEJ1ZkNvdW50LCA4KTsKIAkJCWNhdGNfc2V0X3JlZyhj YXRjLCBSeEJ1ZkNvdW50LCAzMik7CkBAIC04NjgsNiArODczLDggQEAgc3RhdGljIGludCBjYXRj X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2Rldmlj ZV9pZCAqaWQKIAkJCWRldl9kYmcoZGV2LCAiMzJrIE1lbW9yeVxuIik7CiAJCQlicmVhazsKIAkJ fQorCisJCWtmcmVlKGJ1Zik7CiAJICAKIAkJZGV2X2RiZyhkZXYsICJHZXR0aW5nIE1BQyBmcm9t IFNFRVJPTS5cbiIpOwogCSAgCkBAIC05MTQsMTYgKzkyMSwyMSBAQCBzdGF0aWMgaW50IGNhdGNf cHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNl X2lkICppZAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgY2F0Yyk7CiAKIAlTRVRfTkVUREVWX0RF VihuZXRkZXYsICZpbnRmLT5kZXYpOwotCWlmIChyZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KSAhPSAw KSB7Ci0JCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7Ci0JCXVzYl9mcmVlX3VyYihjYXRj LT5jdHJsX3VyYik7Ci0JCXVzYl9mcmVlX3VyYihjYXRjLT50eF91cmIpOwotCQl1c2JfZnJlZV91 cmIoY2F0Yy0+cnhfdXJiKTsKLQkJdXNiX2ZyZWVfdXJiKGNhdGMtPmlycV91cmIpOwotCQlmcmVl X25ldGRldihuZXRkZXYpOwotCQlyZXR1cm4gLUVJTzsKLQl9CisJcmV0ID0gcmVnaXN0ZXJfbmV0 ZGV2KG5ldGRldik7CisJaWYgKHJldCkKKwkJZ290byBmYWlsX2NsZWFyX2ludGZkYXRhOworCiAJ cmV0dXJuIDA7CisKK2ZhaWxfY2xlYXJfaW50ZmRhdGE6CisJdXNiX3NldF9pbnRmZGF0YShpbnRm LCBOVUxMKTsKK2ZhaWxfZnJlZToKKwl1c2JfZnJlZV91cmIoY2F0Yy0+Y3RybF91cmIpOworCXVz Yl9mcmVlX3VyYihjYXRjLT50eF91cmIpOworCXVzYl9mcmVlX3VyYihjYXRjLT5yeF91cmIpOwor CXVzYl9mcmVlX3VyYihjYXRjLT5pcnFfdXJiKTsKKwlmcmVlX25ldGRldihuZXRkZXYpOworCXJl dHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGNhdGNfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2lu dGVyZmFjZSAqaW50ZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYyBi L2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYwppbmRleCAyYTMyZDkxNjdkM2IuLjYxMGIyODU4 YzVjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jCisrKyBiL2RyaXZl cnMvbmV0L3VzYi9jZGNfZXRoZXIuYwpAQCAtNTAyLDYgKzUwMiw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJpdmVyX2luZm8gd3dhbl9pbmZvID0gewogI2RlZmluZSBERUxMX1ZFTkRPUl9JRAkJ MHg0MTNDCiAjZGVmaW5lIFJFQUxURUtfVkVORE9SX0lECTB4MGJkYQogI2RlZmluZSBTQU1TVU5H X1ZFTkRPUl9JRAkweDA0ZTgKKyNkZWZpbmUgSFBfVkVORE9SX0lECQkweDAzZjAKIAogc3RhdGlj IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkCXByb2R1Y3RzW10gPSB7CiAvKiBCTEFDS0xJU1Qg ISEKQEAgLTY0OCw2ICs2NDksMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lk CXByb2R1Y3RzW10gPSB7CiAJLmRyaXZlcl9pbmZvID0gMCwKIH0sCiAKKy8qIEhQIGx0MjUyMyAo Tm92YXRlbCBFMzcxKSAtIGhhbmRsZWQgYnkgcW1pX3d3YW4gKi8KK3sKKwlVU0JfREVWSUNFX0FO RF9JTlRFUkZBQ0VfSU5GTyhIUF9WRU5ET1JfSUQsIDB4NDIxZCwgVVNCX0NMQVNTX0NPTU0sCisJ CQkJICAgICAgVVNCX0NEQ19TVUJDTEFTU19FVEhFUk5FVCwgVVNCX0NEQ19QUk9UT19OT05FKSwK KwkuZHJpdmVyX2luZm8gPSAwLAorfSwKKwogLyogQW55REFUQSBBRFU5NjBTIC0gaGFuZGxlZCBi eSBxbWlfd3dhbiAqLwogewogCVVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTZkNSwg MHg2NTBhLCBVU0JfQ0xBU1NfQ09NTSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jZGNf bmNtLmMgYi9kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jCmluZGV4IDU4OTkwOTM0ZjE5Mi4uNzNj NWIwOTc2ZjY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jCisrKyBiL2Ry aXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMKQEAgLTgzMCw2ICs4MzAsMTMgQEAgYWR2YW5jZToKIAlp ZiAoY2RjX25jbV9pbml0KGRldikpCiAJCWdvdG8gZXJyb3IyOwogCisJLyogU29tZSBmaXJtd2Fy ZXMgbmVlZCBhIHBhdXNlIGhlcmUgb3IgdGhleSB3aWxsIHNpbGVudGx5IGZhaWwKKwkgKiB0byBz ZXQgdXAgdGhlIGludGVyZmFjZSBwcm9wZXJseS4gIFRoaXMgdmFsdWUgd2FzIGRlY2lkZWQKKwkg KiBlbXBpcmljYWxseSBvbiBhIFNpZXJyYSBXaXJlbGVzcyBNQzc0NTUgcnVubmluZyAwMi4wOC4w Mi4wMAorCSAqIGZpcm13YXJlLgorCSAqLworCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDApOwor CiAJLyogY29uZmlndXJlIGRhdGEgaW50ZXJmYWNlICovCiAJdGVtcCA9IHVzYl9zZXRfaW50ZXJm YWNlKGRldi0+dWRldiwgaWZhY2Vfbm8sIGRhdGFfYWx0c2V0dGluZyk7CiAJaWYgKHRlbXApIHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMgYi9kcml2ZXJzL25ldC91c2Iv cGVnYXN1cy5jCmluZGV4IGY4NDA4MDIxNTkxNS4uMTdmYWMwMTIxZTU2IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC91c2IvcGVnYXN1cy5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMK QEAgLTEyNiw0MCArMTI2LDYxIEBAIHN0YXRpYyB2b2lkIGFzeW5jX2N0cmxfY2FsbGJhY2soc3Ry dWN0IHVyYiAqdXJiKQogCiBzdGF0aWMgaW50IGdldF9yZWdpc3RlcnMocGVnYXN1c190ICpwZWdh c3VzLCBfX3UxNiBpbmR4LCBfX3UxNiBzaXplLCB2b2lkICpkYXRhKQogeworCXU4ICpidWY7CiAJ aW50IHJldDsKIAorCWJ1ZiA9IGttYWxsb2Moc2l6ZSwgR0ZQX05PSU8pOworCWlmICghYnVmKQor CQlyZXR1cm4gLUVOT01FTTsKKwogCXJldCA9IHVzYl9jb250cm9sX21zZyhwZWdhc3VzLT51c2Is IHVzYl9yY3ZjdHJscGlwZShwZWdhc3VzLT51c2IsIDApLAogCQkJICAgICAgUEVHQVNVU19SRVFf R0VUX1JFR1MsIFBFR0FTVVNfUkVRVF9SRUFELCAwLAotCQkJICAgICAgaW5keCwgZGF0YSwgc2l6 ZSwgMTAwMCk7CisJCQkgICAgICBpbmR4LCBidWYsIHNpemUsIDEwMDApOwogCWlmIChyZXQgPCAw KQogCQluZXRpZl9kYmcocGVnYXN1cywgZHJ2LCBwZWdhc3VzLT5uZXQsCiAJCQkgICIlcyByZXR1 cm5lZCAlZFxuIiwgX19mdW5jX18sIHJldCk7CisJZWxzZSBpZiAocmV0IDw9IHNpemUpCisJCW1l bWNweShkYXRhLCBidWYsIHJldCk7CisJa2ZyZWUoYnVmKTsKIAlyZXR1cm4gcmV0OwogfQogCi1z dGF0aWMgaW50IHNldF9yZWdpc3RlcnMocGVnYXN1c190ICpwZWdhc3VzLCBfX3UxNiBpbmR4LCBf X3UxNiBzaXplLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBzZXRfcmVnaXN0ZXJzKHBlZ2FzdXNf dCAqcGVnYXN1cywgX191MTYgaW5keCwgX191MTYgc2l6ZSwKKwkJCSBjb25zdCB2b2lkICpkYXRh KQogeworCXU4ICpidWY7CiAJaW50IHJldDsKIAorCWJ1ZiA9IGttZW1kdXAoZGF0YSwgc2l6ZSwg R0ZQX05PSU8pOworCWlmICghYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKwogCXJldCA9IHVzYl9j b250cm9sX21zZyhwZWdhc3VzLT51c2IsIHVzYl9zbmRjdHJscGlwZShwZWdhc3VzLT51c2IsIDAp LAogCQkJICAgICAgUEVHQVNVU19SRVFfU0VUX1JFR1MsIFBFR0FTVVNfUkVRVF9XUklURSwgMCwK LQkJCSAgICAgIGluZHgsIGRhdGEsIHNpemUsIDEwMCk7CisJCQkgICAgICBpbmR4LCBidWYsIHNp emUsIDEwMCk7CiAJaWYgKHJldCA8IDApCiAJCW5ldGlmX2RiZyhwZWdhc3VzLCBkcnYsIHBlZ2Fz dXMtPm5ldCwKIAkJCSAgIiVzIHJldHVybmVkICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwlrZnJl ZShidWYpOwogCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgc2V0X3JlZ2lzdGVyKHBlZ2Fz dXNfdCAqcGVnYXN1cywgX191MTYgaW5keCwgX191OCBkYXRhKQogeworCXU4ICpidWY7CiAJaW50 IHJldDsKIAorCWJ1ZiA9IGttZW1kdXAoJmRhdGEsIDEsIEdGUF9OT0lPKTsKKwlpZiAoIWJ1ZikK KwkJcmV0dXJuIC1FTk9NRU07CisKIAlyZXQgPSB1c2JfY29udHJvbF9tc2cocGVnYXN1cy0+dXNi LCB1c2Jfc25kY3RybHBpcGUocGVnYXN1cy0+dXNiLCAwKSwKIAkJCSAgICAgIFBFR0FTVVNfUkVR X1NFVF9SRUcsIFBFR0FTVVNfUkVRVF9XUklURSwgZGF0YSwKLQkJCSAgICAgIGluZHgsICZkYXRh LCAxLCAxMDAwKTsKKwkJCSAgICAgIGluZHgsIGJ1ZiwgMSwgMTAwMCk7CiAJaWYgKHJldCA8IDAp CiAJCW5ldGlmX2RiZyhwZWdhc3VzLCBkcnYsIHBlZ2FzdXMtPm5ldCwKIAkJCSAgIiVzIHJldHVy bmVkICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwlrZnJlZShidWYpOwogCXJldHVybiByZXQ7CiB9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jIGIvZHJpdmVycy9uZXQv dXNiL3FtaV93d2FuLmMKaW5kZXggZjZjYWVkZjA5MjBjLi5mMDc3NzdlYjA5YjEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9xbWlf d3dhbi5jCkBAIC01MzUsNiArNTM1LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2Rldmlj ZV9pZCBwcm9kdWN0c1tdID0gewogCQkJCQkgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLAogCQku ZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpJnFtaV93d2FuX2luZm8sCiAJfSwK Kwl7CS8qIEhQIGx0MjUyMyAoTm92YXRlbCBFMzcxKSAqLworCQlVU0JfREVWSUNFX0FORF9JTlRF UkZBQ0VfSU5GTygweDAzZjAsIDB4NDIxZCwKKwkJCQkJICAgICAgVVNCX0NMQVNTX0NPTU0sCisJ CQkJCSAgICAgIFVTQl9DRENfU1VCQ0xBU1NfRVRIRVJORVQsCisJCQkJCSAgICAgIFVTQl9DRENf UFJPVE9fTk9ORSksCisJCS5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZykmcW1p X3d3YW5faW5mbywKKwl9LAogCXsJLyogSFAgbHQ0MTEyIExURS9IU1BBKyBHb2JpIDRHIE1vZHVs ZSAoSHVhd2VpIG1lOTA2ZSkgKi8KIAkJVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgw M2YwLCAweDU4MWQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMSwgNyksCiAJCS5kcml2ZXJfaW5m byA9ICh1bnNpZ25lZCBsb25nKSZxbWlfd3dhbl9pbmZvLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvdXNiL3I4MTUyLmMgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuYwppbmRleCAzZWFiNzRjN2M1 NTQuLjU4MDc5M2E4MTkwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMKKysr IGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHN0YXRpYyB1 OCByODE1Ml9yeF9jc3VtKHN0cnVjdCByODE1MiAqdHAsIHN0cnVjdCByeF9kZXNjICpyeF9kZXNj KQogCXU4IGNoZWNrc3VtID0gQ0hFQ0tTVU1fTk9ORTsKIAl1MzIgb3B0czIsIG9wdHMzOwogCi0J aWYgKHRwLT52ZXJzaW9uID09IFJUTF9WRVJfMDEpCisJaWYgKCEodHAtPm5ldGRldi0+ZmVhdHVy ZXMgJiBORVRJRl9GX1JYQ1NVTSkpCiAJCWdvdG8gcmV0dXJuX3Jlc3VsdDsKIAogCW9wdHMyID0g bGUzMl90b19jcHUocnhfZGVzYy0+b3B0czIpOwpAQCAtMzQ1NCw2ICszNDU0LDExIEBAIHN0YXRp YyBpbnQgcnRsODE1Ml9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAkJCSAgICAg IE5FVElGX0ZfVFNPIHwgTkVUSUZfRl9GUkFHTElTVCB8CiAJCQkgICAgICBORVRJRl9GX0lQVjZf Q1NVTSB8IE5FVElGX0ZfVFNPNjsKIAorCWlmICh0cC0+dmVyc2lvbiA9PSBSVExfVkVSXzAxKSB7 CisJCW5ldGRldi0+ZmVhdHVyZXMgJj0gfk5FVElGX0ZfUlhDU1VNOworCQluZXRkZXYtPmh3X2Zl YXR1cmVzICY9IH5ORVRJRl9GX1JYQ1NVTTsKKwl9CisKIAluZXRkZXYtPmV0aHRvb2xfb3BzID0g Jm9wczsKIAluZXRpZl9zZXRfZ3NvX21heF9zaXplKG5ldGRldiwgUlRMX0xJTUlURURfVFNPX1NJ WkUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcnRsODE1MC5jIGIvZHJpdmVycy9u ZXQvdXNiL3J0bDgxNTAuYwppbmRleCA2ZTg3ZTU3MTAwNDguLmVhYjhmYmExZjhjOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvdXNiL3J0bDgxNTAuYworKysgYi9kcml2ZXJzL25ldC91c2IvcnRs ODE1MC5jCkBAIC0xNTUsMTYgKzE1NSwzNiBAQCBzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFt ZSBbXSA9ICJydGw4MTUwIjsKICovCiBzdGF0aWMgaW50IGdldF9yZWdpc3RlcnMocnRsODE1MF90 ICogZGV2LCB1MTYgaW5keCwgdTE2IHNpemUsIHZvaWQgKmRhdGEpCiB7Ci0JcmV0dXJuIHVzYl9j b250cm9sX21zZyhkZXYtPnVkZXYsIHVzYl9yY3ZjdHJscGlwZShkZXYtPnVkZXYsIDApLAotCQkJ ICAgICAgIFJUTDgxNTBfUkVRX0dFVF9SRUdTLCBSVEw4MTUwX1JFUVRfUkVBRCwKLQkJCSAgICAg ICBpbmR4LCAwLCBkYXRhLCBzaXplLCA1MDApOworCXZvaWQgKmJ1ZjsKKwlpbnQgcmV0OworCisJ YnVmID0ga21hbGxvYyhzaXplLCBHRlBfTk9JTyk7CisJaWYgKCFidWYpCisJCXJldHVybiAtRU5P TUVNOworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGRldi0+dWRldiwgdXNiX3JjdmN0cmxwaXBl KGRldi0+dWRldiwgMCksCisJCQkgICAgICBSVEw4MTUwX1JFUV9HRVRfUkVHUywgUlRMODE1MF9S RVFUX1JFQUQsCisJCQkgICAgICBpbmR4LCAwLCBidWYsIHNpemUsIDUwMCk7CisJaWYgKHJldCA+ IDAgJiYgcmV0IDw9IHNpemUpCisJCW1lbWNweShkYXRhLCBidWYsIHJldCk7CisJa2ZyZWUoYnVm KTsKKwlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHNldF9yZWdpc3RlcnMocnRsODE1MF90 ICogZGV2LCB1MTYgaW5keCwgdTE2IHNpemUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHNldF9y ZWdpc3RlcnMocnRsODE1MF90ICogZGV2LCB1MTYgaW5keCwgdTE2IHNpemUsIGNvbnN0IHZvaWQg KmRhdGEpCiB7Ci0JcmV0dXJuIHVzYl9jb250cm9sX21zZyhkZXYtPnVkZXYsIHVzYl9zbmRjdHJs cGlwZShkZXYtPnVkZXYsIDApLAotCQkJICAgICAgIFJUTDgxNTBfUkVRX1NFVF9SRUdTLCBSVEw4 MTUwX1JFUVRfV1JJVEUsCi0JCQkgICAgICAgaW5keCwgMCwgZGF0YSwgc2l6ZSwgNTAwKTsKKwl2 b2lkICpidWY7CisJaW50IHJldDsKKworCWJ1ZiA9IGttZW1kdXAoZGF0YSwgc2l6ZSwgR0ZQX05P SU8pOworCWlmICghYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IHVzYl9jb250cm9s X21zZyhkZXYtPnVkZXYsIHVzYl9zbmRjdHJscGlwZShkZXYtPnVkZXYsIDApLAorCQkJICAgICAg UlRMODE1MF9SRVFfU0VUX1JFR1MsIFJUTDgxNTBfUkVRVF9XUklURSwKKwkJCSAgICAgIGluZHgs IDAsIGJ1Ziwgc2l6ZSwgNTAwKTsKKwlrZnJlZShidWYpOworCXJldHVybiByZXQ7CiB9CiAKIHN0 YXRpYyB2b2lkIGFzeW5jX3NldF9yZWdfY2Ioc3RydWN0IHVyYiAqdXJiKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvdnhsYW4uYyBiL2RyaXZlcnMvbmV0L3Z4bGFuLmMKaW5kZXggNzRkY2NmYTAw YTVjLi43YmFkZjJhYTNmNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuLmMKKysrIGIv ZHJpdmVycy9uZXQvdnhsYW4uYwpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgc3RhdGljIGludCB2eGxh bl91ZHBfZW5jYXBfcmVjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAK IAkvKiBOZWVkIFZ4bGFuIGFuZCBpbm5lciBFdGhlcm5ldCBoZWFkZXIgdG8gYmUgcHJlc2VudCAq LwogCWlmICghcHNrYl9tYXlfcHVsbChza2IsIFZYTEFOX0hMRU4pKQotCQlnb3RvIGVycm9yOwor CQlnb3RvIGRyb3A7CiAKIAkvKiBSZXR1cm4gcGFja2V0cyB3aXRoIHJlc2VydmVkIGJpdHMgc2V0 ICovCiAJdnhoID0gKHN0cnVjdCB2eGxhbmhkciAqKSh1ZHBfaGRyKHNrYikgKyAxKTsKQEAgLTEx NTQsNyArMTE1NCw3IEBAIHN0YXRpYyBpbnQgdnhsYW5fdWRwX2VuY2FwX3JlY3Yoc3RydWN0IHNv Y2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAgICAodnhoLT52eF92bmkgJiBodG9ubCgw eGZmKSkpIHsKIAkJbmV0ZGV2X2RiZyhza2ItPmRldiwgImludmFsaWQgdnhsYW4gZmxhZ3M9JSN4 IHZuaT0lI3hcbiIsCiAJCQkgICBudG9obCh2eGgtPnZ4X2ZsYWdzKSwgbnRvaGwodnhoLT52eF92 bmkpKTsKLQkJZ290byBlcnJvcjsKKwkJZ290byBkcm9wOwogCX0KIAogCWlmIChpcHR1bm5lbF9w dWxsX2hlYWRlcihza2IsIFZYTEFOX0hMRU4sIGh0b25zKEVUSF9QX1RFQikpKQpAQCAtMTE3Mywx MCArMTE3Myw2IEBAIGRyb3A6CiAJLyogQ29uc3VtZSBiYWQgcGFja2V0ICovCiAJa2ZyZWVfc2ti KHNrYik7CiAJcmV0dXJuIDA7Ci0KLWVycm9yOgotCS8qIFJldHVybiBub24gdnhsYW4gcGt0ICov Ci0JcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyB2b2lkIHZ4bGFuX3JjdihzdHJ1Y3QgdnhsYW5fc29j ayAqdnMsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYyBiL2RyaXZlcnMv bmV0L3hlbi1uZXRmcm9udC5jCmluZGV4IDU2N2Q1YzMxZGZkMi4uZWE2YjU1YWJkNDJkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYworKysgYi9kcml2ZXJzL25ldC94ZW4t bmV0ZnJvbnQuYwpAQCAtMTQ0MCw2ICsxNDQwLDggQEAgc3RhdGljIHZvaWQgeGVubmV0X2Rpc2Nv bm5lY3RfYmFja2VuZChzdHJ1Y3QgbmV0ZnJvbnRfaW5mbyAqaW5mbykKIAlmb3IgKGkgPSAwOyBp IDwgbnVtX3F1ZXVlczsgKytpKSB7CiAJCXN0cnVjdCBuZXRmcm9udF9xdWV1ZSAqcXVldWUgPSAm aW5mby0+cXVldWVzW2ldOwogCisJCWRlbF90aW1lcl9zeW5jKCZxdWV1ZS0+cnhfcmVmaWxsX3Rp bWVyKTsKKwogCQlpZiAocXVldWUtPnR4X2lycSAmJiAocXVldWUtPnR4X2lycSA9PSBxdWV1ZS0+ cnhfaXJxKSkKIAkJCXVuYmluZF9mcm9tX2lycWhhbmRsZXIocXVldWUtPnR4X2lycSwgcXVldWUp OwogCQlpZiAocXVldWUtPnR4X2lycSAmJiAocXVldWUtPnR4X2lycSAhPSBxdWV1ZS0+cnhfaXJx KSkgewpAQCAtMjM2MCw4ICsyMzYyLDYgQEAgc3RhdGljIGludCB4ZW5uZXRfcmVtb3ZlKHN0cnVj dCB4ZW5idXNfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IG5ldGZyb250X2luZm8gKmluZm8gPSBk ZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsKIAl1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyA9IGlu Zm8tPm5ldGRldi0+cmVhbF9udW1fdHhfcXVldWVzOwotCXN0cnVjdCBuZXRmcm9udF9xdWV1ZSAq cXVldWUgPSBOVUxMOwotCXVuc2lnbmVkIGludCBpID0gMDsKIAogCWRldl9kYmcoJmRldi0+ZGV2 LCAiJXNcbiIsIGRldi0+bm9kZW5hbWUpOwogCkBAIC0yMzcxLDExICsyMzcxLDYgQEAgc3RhdGlj IGludCB4ZW5uZXRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCiAKIAl1bnJlZ2lz dGVyX25ldGRldihpbmZvLT5uZXRkZXYpOwogCi0JZm9yIChpID0gMDsgaSA8IG51bV9xdWV1ZXM7 ICsraSkgewotCQlxdWV1ZSA9ICZpbmZvLT5xdWV1ZXNbaV07Ci0JCWRlbF90aW1lcl9zeW5jKCZx dWV1ZS0+cnhfcmVmaWxsX3RpbWVyKTsKLQl9Ci0KIAlpZiAobnVtX3F1ZXVlcykgewogCQlrZnJl ZShpbmZvLT5xdWV1ZXMpOwogCQlpbmZvLT5xdWV1ZXMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9wY2kvaG90cGx1Zy9ycGFkbHBhcl9jb3JlLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3Jw YWRscGFyX2NvcmUuYwppbmRleCA3NjYwMjMyZWY0NjAuLjZkODI0OThmMWU2MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFkbHBhcl9jb3JlLmMKKysrIGIvZHJpdmVycy9wY2kv aG90cGx1Zy9ycGFkbHBhcl9jb3JlLmMKQEAgLTI1OCw4ICsyNTgsMTMgQEAgc3RhdGljIGludCBk bHBhcl9hZGRfcGhiKGNoYXIgKmRyY19uYW1lLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuKQogCiBz dGF0aWMgaW50IGRscGFyX2FkZF92aW9fc2xvdChjaGFyICpkcmNfbmFtZSwgc3RydWN0IGRldmlj ZV9ub2RlICpkbikKIHsKLQlpZiAodmlvX2ZpbmRfbm9kZShkbikpCisJc3RydWN0IHZpb19kZXYg KnZpb19kZXY7CisKKwl2aW9fZGV2ID0gdmlvX2ZpbmRfbm9kZShkbik7CisJaWYgKHZpb19kZXYp IHsKKwkJcHV0X2RldmljZSgmdmlvX2Rldi0+ZGV2KTsKIAkJcmV0dXJuIC1FSU5WQUw7CisJfQog CiAJaWYgKCF2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGUoZG4pKSB7CiAJCXByaW50ayhLRVJOX0VS UgpAQCAtMzM1LDYgKzM0MCw5IEBAIHN0YXRpYyBpbnQgZGxwYXJfcmVtb3ZlX3Zpb19zbG90KGNo YXIgKmRyY19uYW1lLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuKQogCQlyZXR1cm4gLUVJTlZBTDsK IAogCXZpb191bnJlZ2lzdGVyX2RldmljZSh2aW9fZGV2KTsKKworCXB1dF9kZXZpY2UoJnZpb19k ZXYtPmRldik7CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNp LmMgYi9kcml2ZXJzL3BjaS9wY2kuYwppbmRleCAzZTk4MTMyOWM3YTkuLjJlNTQyNjlmNTQ1OCAx MDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcGNpLmMKKysrIGIvZHJpdmVycy9wY2kvcGNpLmMKQEAg LTE5ODIsNiArMTk4MiwxMCBAQCBib29sIHBjaV9kZXZfcnVuX3dha2Uoc3RydWN0IHBjaV9kZXYg KmRldikKIAlpZiAoIWRldi0+cG1lX3N1cHBvcnQpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qIFBN RS1jYXBhYmxlIGluIHByaW5jaXBsZSwgYnV0IG5vdCBmcm9tIHRoZSBpbnRlbmRlZCBzbGVlcCBz dGF0ZSAqLworCWlmICghcGNpX3BtZV9jYXBhYmxlKGRldiwgcGNpX3RhcmdldF9zdGF0ZShkZXYp KSkKKwkJcmV0dXJuIGZhbHNlOworCiAJd2hpbGUgKGJ1cy0+cGFyZW50KSB7CiAJCXN0cnVjdCBw Y2lfZGV2ICpicmlkZ2UgPSBidXMtPnNlbGY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZv cm0veDg2L2ludGVsX21pZF9wb3dlcmJ0bi5jIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxf bWlkX3Bvd2VyYnRuLmMKaW5kZXggOGQ2Nzc1MjY2ZDY2Li4wNGRjNWFiMmUzMGQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF9wb3dlcmJ0bi5jCisrKyBiL2RyaXZl cnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF9wb3dlcmJ0bi5jCkBAIC03Niw3ICs3Niw3IEBAIHN0 YXRpYyBpbnQgbWZsZF9wYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJ aW5wdXRfc2V0X2NhcGFiaWxpdHkoaW5wdXQsIEVWX0tFWSwgS0VZX1BPV0VSKTsKIAotCWVycm9y ID0gcmVxdWVzdF90aHJlYWRlZF9pcnEoaXJxLCBOVUxMLCBtZmxkX3BiX2lzciwgSVJRRl9OT19T VVNQRU5ELAorCWVycm9yID0gcmVxdWVzdF90aHJlYWRlZF9pcnEoaXJxLCBOVUxMLCBtZmxkX3Bi X2lzciwgSVJRRl9OT19TVVNQRU5EIHwgSVJRRl9PTkVTSE9ULAogCQkJRFJJVkVSX05BTUUsIGlu cHV0KTsKIAlpZiAoZXJyb3IpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiVW5hYmxlIHRvIHJl cXVlc3QgaXJxICVkIGZvciBtZmxkIHBvd2VyIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9yZWd1bGF0 b3Ivc3R3NDgxeC12bW1jLmMgYi9kcml2ZXJzL3JlZ3VsYXRvci9zdHc0ODF4LXZtbWMuYwppbmRl eCBhN2UxNTI2OTZhMDIuLmYxNDBiNDI5NTZhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9yZWd1bGF0 b3Ivc3R3NDgxeC12bW1jLmMKKysrIGIvZHJpdmVycy9yZWd1bGF0b3Ivc3R3NDgxeC12bW1jLmMK QEAgLTQ3LDcgKzQ3LDggQEAgc3RhdGljIHN0cnVjdCByZWd1bGF0b3JfZGVzYyB2bW1jX3JlZ3Vs YXRvciA9IHsKIAkudm9sdF90YWJsZSA9IHN0dzQ4MXhfdm1tY192b2x0YWdlcywKIAkuZW5hYmxl X3RpbWUgPSAyMDAsIC8qIEZJWE1FOiBsb29rIHRoaXMgdXAgKi8KIAkuZW5hYmxlX3JlZyA9IFNU V19DT05GMSwKLQkuZW5hYmxlX21hc2sgPSBTVFdfQ09ORjFfUEROX1ZNTUMsCisJLmVuYWJsZV9t YXNrID0gU1RXX0NPTkYxX1BETl9WTU1DIHwgU1RXX0NPTkYxX01NQ19MU19TVEFUVVMsCisJLmVu YWJsZV92YWwgPSBTVFdfQ09ORjFfUEROX1ZNTUMsCiAJLnZzZWxfcmVnID0gU1RXX0NPTkYxLAog CS52c2VsX21hc2sgPSBTVFdfQ09ORjFfVk1NQ19NQVNLLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvczM5MC9jaGFyL3ZtbG9ncmRyLmMgYi9kcml2ZXJzL3MzOTAvY2hhci92bWxvZ3Jkci5jCmlu ZGV4IGE4ODQ4ZGI3YjA5ZC4uMDY0ZmZlZDI1ODlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAv Y2hhci92bWxvZ3Jkci5jCisrKyBiL2RyaXZlcnMvczM5MC9jaGFyL3ZtbG9ncmRyLmMKQEAgLTg3 Myw3ICs4NzMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB2bWxvZ3Jkcl9pbml0KHZvaWQpCiAJCWdv dG8gY2xlYW51cDsKIAogCWZvciAoaT0wOyBpIDwgTUFYTUlOT1I7ICsraSApIHsKLQkJc3lzX3Nl cltpXS5idWZmZXIgPSAoY2hhciAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CisJCXN5 c19zZXJbaV0uYnVmZmVyID0gKGNoYXIgKikgZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUwgfCBH RlBfRE1BKTsKIAkJaWYgKCFzeXNfc2VyW2ldLmJ1ZmZlcikgewogCQkJcmMgPSAtRU5PTUVNOwog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5jIGIvZHJp dmVycy9zMzkwL3Njc2kvemZjcF9kYmYuYwppbmRleCA3YjFmYmQzMDNjMjkuLjU5OGI1Nzc3NjBl ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kYmYuYworKysgYi9kcml2ZXJz L3MzOTAvc2NzaS96ZmNwX2RiZi5jCkBAIC0yODksMTEgKzI4OSwxMiBAQCB2b2lkIHpmY3BfZGJm X3JlY190cmlnKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfYWRhcHRlciAqYWRhcHRlciwKIAogCiAv KioKLSAqIHpmY3BfZGJmX3JlY19ydW4gLSB0cmFjZSBldmVudCByZWxhdGVkIHRvIHJ1bm5pbmcg cmVjb3ZlcnkKKyAqIHpmY3BfZGJmX3JlY19ydW5fbHZsIC0gdHJhY2UgZXZlbnQgcmVsYXRlZCB0 byBydW5uaW5nIHJlY292ZXJ5CisgKiBAbGV2ZWw6IHRyYWNlIGxldmVsIHRvIGJlIHVzZWQgZm9y IGV2ZW50CiAgKiBAdGFnOiBpZGVudGlmaWVyIGZvciBldmVudAogICogQGVycDogZXJwX2FjdGlv biBydW5uaW5nCiAgKi8KLXZvaWQgemZjcF9kYmZfcmVjX3J1bihjaGFyICp0YWcsIHN0cnVjdCB6 ZmNwX2VycF9hY3Rpb24gKmVycCkKK3ZvaWQgemZjcF9kYmZfcmVjX3J1bl9sdmwoaW50IGxldmVs LCBjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmVycCkKIHsKIAlzdHJ1Y3QgemZj cF9kYmYgKmRiZiA9IGVycC0+YWRhcHRlci0+ZGJmOwogCXN0cnVjdCB6ZmNwX2RiZl9yZWMgKnJl YyA9ICZkYmYtPnJlY19idWY7CkBAIC0zMTksMTEgKzMyMCwyMSBAQCB2b2lkIHpmY3BfZGJmX3Jl Y19ydW4oY2hhciAqdGFnLCBzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICplcnApCiAJZWxzZQogCQly ZWMtPnUucnVuLnJlY19jb3VudCA9IGF0b21pY19yZWFkKCZlcnAtPmFkYXB0ZXItPmVycF9jb3Vu dGVyKTsKIAotCWRlYnVnX2V2ZW50KGRiZi0+cmVjLCAxLCByZWMsIHNpemVvZigqcmVjKSk7CisJ ZGVidWdfZXZlbnQoZGJmLT5yZWMsIGxldmVsLCByZWMsIHNpemVvZigqcmVjKSk7CiAJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZGJmLT5yZWNfbG9jaywgZmxhZ3MpOwogfQogCiAvKioKKyAqIHpm Y3BfZGJmX3JlY19ydW4gLSB0cmFjZSBldmVudCByZWxhdGVkIHRvIHJ1bm5pbmcgcmVjb3ZlcnkK KyAqIEB0YWc6IGlkZW50aWZpZXIgZm9yIGV2ZW50CisgKiBAZXJwOiBlcnBfYWN0aW9uIHJ1bm5p bmcKKyAqLwordm9pZCB6ZmNwX2RiZl9yZWNfcnVuKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZXJw X2FjdGlvbiAqZXJwKQoreworCXpmY3BfZGJmX3JlY19ydW5fbHZsKDEsIHRhZywgZXJwKTsKK30K KworLyoqCiAgKiB6ZmNwX2RiZl9yZWNfcnVuX3drYSAtIHRyYWNlIHdrYSBwb3J0IGV2ZW50IHdp dGggaW5mbyBsaWtlIHJ1bm5pbmcgcmVjb3ZlcnkKICAqIEB0YWc6IGlkZW50aWZpZXIgZm9yIGV2 ZW50CiAgKiBAd2thX3BvcnQ6IHdlbGwga25vd24gYWRkcmVzcyBwb3J0CmRpZmYgLS1naXQgYS9k cml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5oIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kYmYu aAppbmRleCAzNmQwNzU4NDI3MWQuLmRiMTg2ZDQ0Y2ZhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9z MzkwL3Njc2kvemZjcF9kYmYuaAorKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5oCkBA IC0yLDcgKzIsNyBAQAogICogemZjcCBkZXZpY2UgZHJpdmVyCiAgKiBkZWJ1ZyBmZWF0dXJlIGRl Y2xhcmF0aW9ucwogICoKLSAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwOCwgMjAxNQorICogQ29w eXJpZ2h0IElCTSBDb3JwLiAyMDA4LCAyMDE2CiAgKi8KIAogI2lmbmRlZiBaRkNQX0RCRl9ICkBA IC0yODMsNiArMjgzLDMwIEBAIHN0cnVjdCB6ZmNwX2RiZiB7CiAJc3RydWN0IHpmY3BfZGJmX3Nj c2kJCXNjc2lfYnVmOwogfTsKIAorLyoqCisgKiB6ZmNwX2RiZl9oYmFfZnNmX3Jlc3Bfc3VwcHJl c3MgLSB0cnVlIGlmIHdlIHNob3VsZCBub3QgdHJhY2UgYnkgZGVmYXVsdAorICogQHJlcTogcmVx dWVzdCB0aGF0IGhhcyBiZWVuIGNvbXBsZXRlZAorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBGQ1Ag cmVzcG9uc2Ugd2l0aCBvbmx5IGJlbmlnbiByZXNpZHVhbCB1bmRlciBjb3VudC4KKyAqLworc3Rh dGljIGlubGluZQorYm9vbCB6ZmNwX2RiZl9oYmFfZnNmX3Jlc3Bfc3VwcHJlc3Moc3RydWN0IHpm Y3BfZnNmX3JlcSAqcmVxKQoreworCXN0cnVjdCBmc2ZfcXRjYiAqcXRjYiA9IHJlcS0+cXRjYjsK Kwl1MzIgZnNmX3N0YXQgPSBxdGNiLT5oZWFkZXIuZnNmX3N0YXR1czsKKwlzdHJ1Y3QgZmNwX3Jl c3AgKmZjcF9yc3A7CisJdTggcnNwX2ZsYWdzLCBmcl9zdGF0dXM7CisKKwlpZiAocXRjYi0+cHJl Zml4LnF0Y2JfdHlwZSAhPSBGU0ZfSU9fQ09NTUFORCkKKwkJcmV0dXJuIGZhbHNlOyAvKiBub3Qg YW4gRkNQIHJlc3BvbnNlICovCisJZmNwX3JzcCA9IChzdHJ1Y3QgZmNwX3Jlc3AgKikmcXRjYi0+ Ym90dG9tLmlvLmZjcF9yc3A7CisJcnNwX2ZsYWdzID0gZmNwX3JzcC0+ZnJfZmxhZ3M7CisJZnJf c3RhdHVzID0gZmNwX3JzcC0+ZnJfc3RhdHVzOworCXJldHVybiAoZnNmX3N0YXQgPT0gRlNGX0ZD UF9SU1BfQVZBSUxBQkxFKSAmJgorCQkocnNwX2ZsYWdzID09IEZDUF9SRVNJRF9VTkRFUikgJiYK KwkJKGZyX3N0YXR1cyA9PSBTQU1fU1RBVF9HT09EKTsKK30KKwogc3RhdGljIGlubGluZQogdm9p ZCB6ZmNwX2RiZl9oYmFfZnNmX3Jlc3AoY2hhciAqdGFnLCBpbnQgbGV2ZWwsIHN0cnVjdCB6ZmNw X2ZzZl9yZXEgKnJlcSkKIHsKQEAgLTMwNCw3ICszMjgsOSBAQCB2b2lkIHpmY3BfZGJmX2hiYV9m c2ZfcmVzcG9uc2Uoc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQogCQl6ZmNwX2RiZl9oYmFfZnNm X3Jlc3AoImZzX3BlcnIiLCAxLCByZXEpOwogCiAJfSBlbHNlIGlmIChxdGNiLT5oZWFkZXIuZnNm X3N0YXR1cyAhPSBGU0ZfR09PRCkgewotCQl6ZmNwX2RiZl9oYmFfZnNmX3Jlc3AoImZzX2ZlcnIi LCAxLCByZXEpOworCQl6ZmNwX2RiZl9oYmFfZnNmX3Jlc3AoImZzX2ZlcnIiLAorCQkJCSAgICAg IHpmY3BfZGJmX2hiYV9mc2ZfcmVzcF9zdXBwcmVzcyhyZXEpCisJCQkJICAgICAgPyA1IDogMSwg cmVxKTsKIAogCX0gZWxzZSBpZiAoKHJlcS0+ZnNmX2NvbW1hbmQgPT0gRlNGX1FUQ0JfT1BFTl9Q T1JUX1dJVEhfRElEKSB8fAogCQkgICAocmVxLT5mc2ZfY29tbWFuZCA9PSBGU0ZfUVRDQl9PUEVO X0xVTikpIHsKQEAgLTM4OCw0ICs0MTQsMTUgQEAgdm9pZCB6ZmNwX2RiZl9zY3NpX2RldnJlc2V0 KGNoYXIgKnRhZywgc3RydWN0IHNjc2lfY21uZCAqc2NtbmQsIHU4IGZsYWcpCiAJX3pmY3BfZGJm X3Njc2kodG1wX3RhZywgMSwgc2NtbmQsIE5VTEwpOwogfQogCisvKioKKyAqIHpmY3BfZGJmX3Nj c2lfbnVsbGNtbmQoKSAtIHRyYWNlIE5VTExpZnkgb2YgU0NTSSBjb21tYW5kIGluIGRldi90Z3Qt cmVzZXQuCisgKiBAc2NtbmQ6IFNDU0kgY29tbWFuZCB0aGF0IHdhcyBOVUxMaWZpZWQuCisgKiBA ZnNmX3JlcTogcmVxdWVzdCB0aGF0IG93bmVkIEBzY21uZC4KKyAqLworc3RhdGljIGlubGluZSB2 b2lkIHpmY3BfZGJmX3Njc2lfbnVsbGNtbmQoc3RydWN0IHNjc2lfY21uZCAqc2NtbmQsCisJCQkJ CSAgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmX3JlcSkKK3sKKwlfemZjcF9kYmZfc2NzaSgic2Nm Y19fMSIsIDMsIHNjbW5kLCBmc2ZfcmVxKTsKK30KKwogI2VuZGlmIC8qIFpGQ1BfREJGX0ggKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXJwLmMgYi9kcml2ZXJzL3MzOTAv c2NzaS96ZmNwX2VycC5jCmluZGV4IGFjODZmZjkwYzg5Ny4uYWNiMGI4YzM5ODlkIDEwMDY0NAot LS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2VycC5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3Np L3pmY3BfZXJwLmMKQEAgLTMsNyArMyw3IEBACiAgKgogICogRXJyb3IgUmVjb3ZlcnkgUHJvY2Vk dXJlcyAoRVJQKS4KICAqCi0gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMTUKKyAqIENv cHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxNgogICovCiAKICNkZWZpbmUgS01TR19DT01QT05F TlQgInpmY3AiCkBAIC0xMjExLDYgKzEyMTEsNjIgQEAgc3RhdGljIHZvaWQgemZjcF9lcnBfYWN0 aW9uX2RlcXVldWUoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIAl9CiB9CiAK Ky8qKgorICogemZjcF9lcnBfdHJ5X3Jwb3J0X3VuYmxvY2sgLSB1bmJsb2NrIHJwb3J0IGlmIG5v IG1vcmUvbmV3IHJlY292ZXJ5CisgKiBAcG9ydDogemZjcF9wb3J0IHdob3NlIGZjX3Jwb3J0IHdl IHNob3VsZCB0cnkgdG8gdW5ibG9jaworICovCitzdGF0aWMgdm9pZCB6ZmNwX2VycF90cnlfcnBv cnRfdW5ibG9jayhzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0KQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisJc3RydWN0IHpmY3BfYWRhcHRlciAqYWRhcHRlciA9IHBvcnQtPmFkYXB0ZXI7CisJaW50 IHBvcnRfc3RhdHVzOworCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gYWRhcHRlci0+c2NzaV9o b3N0OworCXN0cnVjdCBzY3NpX2RldmljZSAqc2RldjsKKworCXdyaXRlX2xvY2tfaXJxc2F2ZSgm YWRhcHRlci0+ZXJwX2xvY2ssIGZsYWdzKTsKKwlwb3J0X3N0YXR1cyA9IGF0b21pY19yZWFkKCZw b3J0LT5zdGF0dXMpOworCWlmICgocG9ydF9zdGF0dXMgJiBaRkNQX1NUQVRVU19DT01NT05fVU5C TE9DS0VEKSAgICA9PSAwIHx8CisJICAgIChwb3J0X3N0YXR1cyAmIChaRkNQX1NUQVRVU19DT01N T05fRVJQX0lOVVNFIHwKKwkJCSAgICBaRkNQX1NUQVRVU19DT01NT05fRVJQX0ZBSUxFRCkpICE9 IDApIHsKKwkJLyogbmV3IEVSUCBvZiBzZXZlcml0eSA+PSBwb3J0IHRyaWdnZXJlZCBlbHNld2hl cmUgbWVhbndoaWxlIG9yCisJCSAqIGxvY2FsIGxpbmsgZG93biAoYWRhcHRlciBlcnBfZmFpbGVk IGJ1dCBub3QgY2xlYXIgdW5ibG9jaykKKwkJICovCisJCXpmY3BfZGJmX3JlY19ydW5fbHZsKDQs ICJlcnRydV9wIiwgJnBvcnQtPmVycF9hY3Rpb24pOworCQl3cml0ZV91bmxvY2tfaXJxcmVzdG9y ZSgmYWRhcHRlci0+ZXJwX2xvY2ssIGZsYWdzKTsKKwkJcmV0dXJuOworCX0KKwlzcGluX2xvY2so c2hvc3QtPmhvc3RfbG9jayk7CisJX19zaG9zdF9mb3JfZWFjaF9kZXZpY2Uoc2Rldiwgc2hvc3Qp IHsKKwkJc3RydWN0IHpmY3Bfc2NzaV9kZXYgKnpzZGV2ID0gc2Rldl90b196ZmNwKHNkZXYpOwor CQlpbnQgbHVuX3N0YXR1czsKKworCQlpZiAoenNkZXYtPnBvcnQgIT0gcG9ydCkKKwkJCWNvbnRp bnVlOworCQkvKiBMVU4gdW5kZXIgcG9ydCBvZiBpbnRlcmVzdCAqLworCQlsdW5fc3RhdHVzID0g YXRvbWljX3JlYWQoJnpzZGV2LT5zdGF0dXMpOworCQlpZiAoKGx1bl9zdGF0dXMgJiBaRkNQX1NU QVRVU19DT01NT05fRVJQX0ZBSUxFRCkgIT0gMCkKKwkJCWNvbnRpbnVlOyAvKiB1bmJsb2NrIHJw b3J0IGRlc3BpdGUgZmFpbGVkIExVTnMgKi8KKwkJLyogTFVOIHJlY292ZXJ5IG5vdCBnaXZlbiB1 cCB5ZXQgW21heWJlIGZvbGxvdy11cCBwZW5kaW5nXSAqLworCQlpZiAoKGx1bl9zdGF0dXMgJiBa RkNQX1NUQVRVU19DT01NT05fVU5CTE9DS0VEKSA9PSAwIHx8CisJCSAgICAobHVuX3N0YXR1cyAm IFpGQ1BfU1RBVFVTX0NPTU1PTl9FUlBfSU5VU0UpICE9IDApIHsKKwkJCS8qIExVTiBibG9ja2Vk OgorCQkJICogbm90IHlldCB1bmJsb2NrZWQgW0xVTiByZWNvdmVyeSBwZW5kaW5nXQorCQkJICog b3IgbWVhbndoaWxlIGJsb2NrZWQgW25ldyBMVU4gcmVjb3ZlcnkgdHJpZ2dlcmVkXQorCQkJICov CisJCQl6ZmNwX2RiZl9yZWNfcnVuX2x2bCg0LCAiZXJ0cnVfbCIsICZ6c2Rldi0+ZXJwX2FjdGlv bik7CisJCQlzcGluX3VubG9jayhzaG9zdC0+aG9zdF9sb2NrKTsKKwkJCXdyaXRlX3VubG9ja19p cnFyZXN0b3JlKCZhZGFwdGVyLT5lcnBfbG9jaywgZmxhZ3MpOworCQkJcmV0dXJuOworCQl9CisJ fQorCS8qIG5vdyBwb3J0IGhhcyBubyBjaGlsZCBvciBhbGwgY2hpbGRyZW4gaGF2ZSBjb21wbGV0 ZWQgcmVjb3ZlcnksCisJICogYW5kIG5vIEVSUCBvZiBzZXZlcml0eSA+PSBwb3J0IHdhcyBtZWFu d2hpbGUgdHJpZ2dlcmVkIGVsc2V3aGVyZQorCSAqLworCXpmY3Bfc2NzaV9zY2hlZHVsZV9ycG9y dF9yZWdpc3Rlcihwb3J0KTsKKwlzcGluX3VubG9jayhzaG9zdC0+aG9zdF9sb2NrKTsKKwl3cml0 ZV91bmxvY2tfaXJxcmVzdG9yZSgmYWRhcHRlci0+ZXJwX2xvY2ssIGZsYWdzKTsKK30KKwogc3Rh dGljIHZvaWQgemZjcF9lcnBfYWN0aW9uX2NsZWFudXAoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAq YWN0LCBpbnQgcmVzdWx0KQogewogCXN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIgPSBhY3Qt PmFkYXB0ZXI7CkBAIC0xMjIxLDYgKzEyNzcsNyBAQCBzdGF0aWMgdm9pZCB6ZmNwX2VycF9hY3Rp b25fY2xlYW51cChzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICphY3QsIGludCByZXN1bHQpCiAJY2Fz ZSBaRkNQX0VSUF9BQ1RJT05fUkVPUEVOX0xVTjoKIAkJaWYgKCEoYWN0LT5zdGF0dXMgJiBaRkNQ X1NUQVRVU19FUlBfTk9fUkVGKSkKIAkJCXNjc2lfZGV2aWNlX3B1dChzZGV2KTsKKwkJemZjcF9l cnBfdHJ5X3Jwb3J0X3VuYmxvY2socG9ydCk7CiAJCWJyZWFrOwogCiAJY2FzZSBaRkNQX0VSUF9B Q1RJT05fUkVPUEVOX1BPUlQ6CkBAIC0xMjMxLDcgKzEyODgsNyBAQCBzdGF0aWMgdm9pZCB6ZmNw X2VycF9hY3Rpb25fY2xlYW51cChzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICphY3QsIGludCByZXN1 bHQpCiAJCSAqLwogCQlpZiAoYWN0LT5zdGVwICE9IFpGQ1BfRVJQX1NURVBfVU5JTklUSUFMSVpF RCkKIAkJCWlmIChyZXN1bHQgPT0gWkZDUF9FUlBfU1VDQ0VFREVEKQotCQkJCXpmY3Bfc2NzaV9z Y2hlZHVsZV9ycG9ydF9yZWdpc3Rlcihwb3J0KTsKKwkJCQl6ZmNwX2VycF90cnlfcnBvcnRfdW5i bG9jayhwb3J0KTsKIAkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBaRkNQX0VSUF9BQ1RJT05f UkVPUEVOX1BPUlRfRk9SQ0VEOgogCQlwdXRfZGV2aWNlKCZwb3J0LT5kZXYpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9leHQuaCBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bf ZXh0LmgKaW5kZXggMWYxZmU0MWVjYjk3Li4wYzhjOGI4ZmMxZGUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvczM5MC9zY3NpL3pmY3BfZXh0LmgKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9leHQu aApAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBFeHRlcm5hbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMu CiAgKgotICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1CisgKiBDb3B5cmlnaHQgSUJN IENvcnAuIDIwMDIsIDIwMTYKICAqLwogCiAjaWZuZGVmIFpGQ1BfRVhUX0gKQEAgLTM1LDYgKzM1 LDggQEAgZXh0ZXJuIHZvaWQgemZjcF9kYmZfYWRhcHRlcl91bnJlZ2lzdGVyKHN0cnVjdCB6ZmNw X2FkYXB0ZXIgKik7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9yZWNfdHJpZyhjaGFyICosIHN0cnVj dCB6ZmNwX2FkYXB0ZXIgKiwKIAkJCSAgICAgIHN0cnVjdCB6ZmNwX3BvcnQgKiwgc3RydWN0IHNj c2lfZGV2aWNlICosIHU4LCB1OCk7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9yZWNfcnVuKGNoYXIg Kiwgc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqKTsKK2V4dGVybiB2b2lkIHpmY3BfZGJmX3JlY19y dW5fbHZsKGludCBsZXZlbCwgY2hhciAqdGFnLAorCQkJCSBzdHJ1Y3QgemZjcF9lcnBfYWN0aW9u ICplcnApOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZfcmVjX3J1bl93a2EoY2hhciAqLCBzdHJ1Y3Qg emZjcF9mY193a2FfcG9ydCAqLCB1NjQpOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZfaGJhX2ZzZl91 c3MoY2hhciAqLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICopOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZf aGJhX2ZzZl9yZXMoY2hhciAqLCBpbnQsIHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZj cF9mc2YuYwppbmRleCA2MDY1MjEyZmRlZWQuLjM2Y2YxMWNhZmVlNyAxMDA2NDQKLS0tIGEvZHJp dmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2Zz Zi5jCkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBvdXQ6CiBpbnQgemZjcF9mc2Zfb3Blbl93a2FfcG9y dChzdHJ1Y3QgemZjcF9mY193a2FfcG9ydCAqd2thX3BvcnQpCiB7CiAJc3RydWN0IHpmY3BfcWRp byAqcWRpbyA9IHdrYV9wb3J0LT5hZGFwdGVyLT5xZGlvOwotCXN0cnVjdCB6ZmNwX2ZzZl9yZXEg KnJlcSA9IE5VTEw7CisJc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxOwogCWludCByZXR2YWwgPSAt RUlPOwogCiAJc3Bpbl9sb2NrX2lycSgmcWRpby0+cmVxX3FfbG9jayk7CkBAIC0xNjEzLDcgKzE2 MTMsNyBAQCBpbnQgemZjcF9mc2Zfb3Blbl93a2FfcG9ydChzdHJ1Y3QgemZjcF9mY193a2FfcG9y dCAqd2thX3BvcnQpCiAJCXpmY3BfZnNmX3JlcV9mcmVlKHJlcSk7CiBvdXQ6CiAJc3Bpbl91bmxv Y2tfaXJxKCZxZGlvLT5yZXFfcV9sb2NrKTsKLQlpZiAocmVxICYmICFJU19FUlIocmVxKSkKKwlp ZiAoIXJldHZhbCkKIAkJemZjcF9kYmZfcmVjX3J1bl93a2EoImZzb3dwXzEiLCB3a2FfcG9ydCwg cmVxLT5yZXFfaWQpOwogCXJldHVybiByZXR2YWw7CiB9CkBAIC0xNjM5LDcgKzE2MzksNyBAQCBz dGF0aWMgdm9pZCB6ZmNwX2ZzZl9jbG9zZV93a2FfcG9ydF9oYW5kbGVyKHN0cnVjdCB6ZmNwX2Zz Zl9yZXEgKnJlcSkKIGludCB6ZmNwX2ZzZl9jbG9zZV93a2FfcG9ydChzdHJ1Y3QgemZjcF9mY193 a2FfcG9ydCAqd2thX3BvcnQpCiB7CiAJc3RydWN0IHpmY3BfcWRpbyAqcWRpbyA9IHdrYV9wb3J0 LT5hZGFwdGVyLT5xZGlvOwotCXN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcSA9IE5VTEw7CisJc3Ry dWN0IHpmY3BfZnNmX3JlcSAqcmVxOwogCWludCByZXR2YWwgPSAtRUlPOwogCiAJc3Bpbl9sb2Nr X2lycSgmcWRpby0+cmVxX3FfbG9jayk7CkBAIC0xNjY4LDcgKzE2NjgsNyBAQCBpbnQgemZjcF9m c2ZfY2xvc2Vfd2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0KQogCQl6 ZmNwX2ZzZl9yZXFfZnJlZShyZXEpOwogb3V0OgogCXNwaW5fdW5sb2NrX2lycSgmcWRpby0+cmVx X3FfbG9jayk7Ci0JaWYgKHJlcSAmJiAhSVNfRVJSKHJlcSkpCisJaWYgKCFyZXR2YWwpCiAJCXpm Y3BfZGJmX3JlY19ydW5fd2thKCJmc2N3cF8xIiwgd2thX3BvcnQsIHJlcS0+cmVxX2lkKTsKIAly ZXR1cm4gcmV0dmFsOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2Yu aCBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgKaW5kZXggYmUxYzA0YjMzNGM1Li5lYTNj NzZhYzBkZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgKKysrIGIv ZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuaApAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBJbnRl cmZhY2UgdG8gdGhlIEZTRiBzdXBwb3J0IGZ1bmN0aW9ucy4KICAqCi0gKiBDb3B5cmlnaHQgSUJN IENvcnAuIDIwMDIsIDIwMTUKKyAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxNgogICov CiAKICNpZm5kZWYgRlNGX0gKQEAgLTc4LDYgKzc4LDcgQEAKICNkZWZpbmUgRlNGX0FQUF9UQUdf Q0hFQ0tfRkFJTFVSRQkJMHgwMDAwMDA4MgogI2RlZmluZSBGU0ZfUkVGX1RBR19DSEVDS19GQUlM VVJFCQkweDAwMDAwMDgzCiAjZGVmaW5lIEZTRl9BREFQVEVSX1NUQVRVU19BVkFJTEFCTEUJCTB4 MDAwMDAwQUQKKyNkZWZpbmUgRlNGX0ZDUF9SU1BfQVZBSUxBQkxFCQkJMHgwMDAwMDBBRgogI2Rl ZmluZSBGU0ZfVU5LTk9XTl9DT01NQU5ECQkJMHgwMDAwMDBFMgogI2RlZmluZSBGU0ZfVU5LTk9X Tl9PUF9TVUJUWVBFICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFMwogI2RlZmluZSBGU0ZfSU5W QUxJRF9DT01NQU5EX09QVElPTiAgICAgICAgICAgICAgMHgwMDAwMDBFNQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zMzkwL3Njc2kvemZjcF9yZXFsaXN0LmggYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNw X3JlcWxpc3QuaAppbmRleCA3YzJjNjE5NGRmY2EuLjcwM2ZjZTU5YmVmZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9zMzkwL3Njc2kvemZjcF9yZXFsaXN0LmgKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kv emZjcF9yZXFsaXN0LmgKQEAgLTQsNyArNCw3IEBACiAgKiBEYXRhIHN0cnVjdHVyZSBhbmQgaGVs cGVyIGZ1bmN0aW9ucyBmb3IgdHJhY2tpbmcgcGVuZGluZyBGU0YKICAqIHJlcXVlc3RzLgogICoK LSAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwOQorICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA5 LCAyMDE2CiAgKi8KIAogI2lmbmRlZiBaRkNQX1JFUUxJU1RfSApAQCAtMTgwLDQgKzE4MCwzMiBA QCBzdGF0aWMgaW5saW5lIHZvaWQgemZjcF9yZXFsaXN0X21vdmUoc3RydWN0IHpmY3BfcmVxbGlz dCAqcmwsCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmwtPmxvY2ssIGZsYWdzKTsKIH0KIAor LyoqCisgKiB6ZmNwX3JlcWxpc3RfYXBwbHlfZm9yX2FsbCgpIC0gYXBwbHkgYSBmdW5jdGlvbiB0 byBldmVyeSByZXF1ZXN0LgorICogQHJsOiB0aGUgcmVxdWVzdGxpc3QgdGhhdCBjb250YWlucyB0 aGUgdGFyZ2V0IHJlcXVlc3RzLgorICogQGY6IHRoZSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNo IHJlcXVlc3Q7IHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlCisgKiAgICAgZnVuY3Rpb24gd2ls bCBiZSB0aGUgdGFyZ2V0LXJlcXVlc3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBzYW1l CisgKiAgICAgcG9pbnRlciBhcyBnaXZlbiB3aXRoIHRoZSBhcmd1bWVudCBAZGF0YS4KKyAqIEBk YXRhOiBmcmVlbHkgY2hvc2VuIGFyZ3VtZW50OyBwYXNzZWQgdGhyb3VnaCB0byBAZiBhcyBzZWNv bmQgcGFyYW1ldGVyLgorICoKKyAqIFVzZXMgOmM6bWFjcm86YGxpc3RfZm9yX2VhY2hfZW50cnlg IHRvIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdHMgaW4gdGhlIGhhc2gtCisgKiB0YWJsZSAobm90IGEg J3NhZmUnIHZhcmlhbnQsIHNvIGRvbid0IG1vZGlmeSB0aGUgbGlzdCkuCisgKgorICogSG9sZHMg QHJsLT5sb2NrIG92ZXIgdGhlIGVudGlyZSByZXF1ZXN0LWl0ZXJhdGlvbi4KKyAqLworc3RhdGlj IGlubGluZSB2b2lkCit6ZmNwX3JlcWxpc3RfYXBwbHlfZm9yX2FsbChzdHJ1Y3QgemZjcF9yZXFs aXN0ICpybCwKKwkJCSAgIHZvaWQgKCpmKShzdHJ1Y3QgemZjcF9mc2ZfcmVxICosIHZvaWQgKiks IHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxOworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IGk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcmwtPmxv Y2ssIGZsYWdzKTsKKwlmb3IgKGkgPSAwOyBpIDwgWkZDUF9SRVFfTElTVF9CVUNLRVRTOyBpKysp CisJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxLCAmcmwtPmJ1Y2tldHNbaV0sIGxpc3QpCisJCQlm KHJlcSwgZGF0YSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmwtPmxvY2ssIGZsYWdzKTsK K30KKwogI2VuZGlmIC8qIFpGQ1BfUkVRTElTVF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Mz OTAvc2NzaS96ZmNwX3Njc2kuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc2NzaS5jCmluZGV4 IDM4ZWUwZGY2MzNhMy4uNjZjMzdlNzdhYzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2Nz aS96ZmNwX3Njc2kuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3Njc2kuYwpAQCAtMyw3 ICszLDcgQEAKICAqCiAgKiBJbnRlcmZhY2UgdG8gTGludXggU0NTSSBtaWRsYXllci4KICAqCi0g KiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMTUKKyAqIENvcHlyaWdodCBJQk0gQ29ycC4g MjAwMiwgMjAxNgogICovCiAKICNkZWZpbmUgS01TR19DT01QT05FTlQgInpmY3AiCkBAIC0xMDks OSArMTA5LDcgQEAgaW50IHpmY3Bfc2NzaV9xdWV1ZWNvbW1hbmQoc3RydWN0IFNjc2lfSG9zdCAq c2hvc3QsIHN0cnVjdCBzY3NpX2NtbmQgKnNjcG50KQogCX0KIAogCWlmICh1bmxpa2VseSghKHN0 YXR1cyAmIFpGQ1BfU1RBVFVTX0NPTU1PTl9VTkJMT0NLRUQpKSkgewotCQkvKiBUaGlzIGNvdWxk IGJlIGVpdGhlcgotCQkgKiBvcGVuIExVTiBwZW5kaW5nOiB0aGlzIGlzIHRlbXBvcmFyeSwgd2ls bCByZXN1bHQgaW4KLQkJICoJb3BlbiBMVU4gb3IgRVJQX0ZBSUxFRCwgc28gcmV0cnkgY29tbWFu ZAorCQkvKiBUaGlzIGNvdWxkIGJlCiAJCSAqIGNhbGwgdG8gcnBvcnRfZGVsZXRlIHBlbmRpbmc6 IG1pbWljIHJldHJ5IGZyb20KIAkJICogCWZjX3JlbW90ZV9wb3J0X2Noa3JlYWR5IHVudGlsIHJw b3J0IGlzIEJMT0NLRUQKIAkJICovCkBAIC0yMzAsNiArMjI4LDU3IEBAIHN0YXRpYyBpbnQgemZj cF9zY3NpX2VoX2Fib3J0X2hhbmRsZXIoc3RydWN0IHNjc2lfY21uZCAqc2NwbnQpCiAJcmV0dXJu IHJldHZhbDsKIH0KIAorc3RydWN0IHpmY3Bfc2NzaV9yZXFfZmlsdGVyIHsKKwl1OCB0bWZfc2Nv cGU7CisJdTMyIGx1bl9oYW5kbGU7CisJdTMyIHBvcnRfaGFuZGxlOworfTsKKworc3RhdGljIHZv aWQgemZjcF9zY3NpX2ZvcmdldF9jbW5kKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKm9sZF9yZXEsIHZv aWQgKmRhdGEpCit7CisJc3RydWN0IHpmY3Bfc2NzaV9yZXFfZmlsdGVyICpmaWx0ZXIgPQorCQko c3RydWN0IHpmY3Bfc2NzaV9yZXFfZmlsdGVyICopZGF0YTsKKworCS8qIGFscmVhZHkgYWJvcnRl ZCAtIHByZXZlbnQgc2lkZS1lZmZlY3RzIC0gb3Igbm90IGEgU0NTSSBjb21tYW5kICovCisJaWYg KG9sZF9yZXEtPmRhdGEgPT0gTlVMTCB8fCBvbGRfcmVxLT5mc2ZfY29tbWFuZCAhPSBGU0ZfUVRD Ql9GQ1BfQ01ORCkKKwkJcmV0dXJuOworCisJLyogKHRtZl9zY29wZSA9PSBGQ1BfVE1GX1RHVF9S RVNFVCB8fCB0bWZfc2NvcGUgPT0gRkNQX1RNRl9MVU5fUkVTRVQpICovCisJaWYgKG9sZF9yZXEt PnF0Y2ItPmhlYWRlci5wb3J0X2hhbmRsZSAhPSBmaWx0ZXItPnBvcnRfaGFuZGxlKQorCQlyZXR1 cm47CisKKwlpZiAoZmlsdGVyLT50bWZfc2NvcGUgPT0gRkNQX1RNRl9MVU5fUkVTRVQgJiYKKwkg ICAgb2xkX3JlcS0+cXRjYi0+aGVhZGVyLmx1bl9oYW5kbGUgIT0gZmlsdGVyLT5sdW5faGFuZGxl KQorCQlyZXR1cm47CisKKwl6ZmNwX2RiZl9zY3NpX251bGxjbW5kKChzdHJ1Y3Qgc2NzaV9jbW5k ICopb2xkX3JlcS0+ZGF0YSwgb2xkX3JlcSk7CisJb2xkX3JlcS0+ZGF0YSA9IE5VTEw7Cit9CisK K3N0YXRpYyB2b2lkIHpmY3Bfc2NzaV9mb3JnZXRfY21uZHMoc3RydWN0IHpmY3Bfc2NzaV9kZXYg KnpzZGV2LCB1OCB0bV9mbGFncykKK3sKKwlzdHJ1Y3QgemZjcF9hZGFwdGVyICphZGFwdGVyID0g enNkZXYtPnBvcnQtPmFkYXB0ZXI7CisJc3RydWN0IHpmY3Bfc2NzaV9yZXFfZmlsdGVyIGZpbHRl ciA9IHsKKwkJLnRtZl9zY29wZSA9IEZDUF9UTUZfVEdUX1JFU0VULAorCQkucG9ydF9oYW5kbGUg PSB6c2Rldi0+cG9ydC0+aGFuZGxlLAorCX07CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlm ICh0bV9mbGFncyA9PSBGQ1BfVE1GX0xVTl9SRVNFVCkgeworCQlmaWx0ZXIudG1mX3Njb3BlID0g RkNQX1RNRl9MVU5fUkVTRVQ7CisJCWZpbHRlci5sdW5faGFuZGxlID0genNkZXYtPmx1bl9oYW5k bGU7CisJfQorCisJLyoKKwkgKiBhYm9ydF9sb2NrIHNlY3VyZXMgYWdhaW5zdCBvdGhlciBwcm9j ZXNzaW5ncyAtIGluIHRoZSBhYm9ydC1mdW5jdGlvbgorCSAqIGFuZCBub3JtYWwgY21uZC1oYW5k bGVyIC0gb2YgKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKiktPmRhdGEKKwkgKi8KKwl3cml0ZV9sb2Nr X2lycXNhdmUoJmFkYXB0ZXItPmFib3J0X2xvY2ssIGZsYWdzKTsKKwl6ZmNwX3JlcWxpc3RfYXBw bHlfZm9yX2FsbChhZGFwdGVyLT5yZXFfbGlzdCwgemZjcF9zY3NpX2ZvcmdldF9jbW5kLAorCQkJ CSAgICZmaWx0ZXIpOworCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZhZGFwdGVyLT5hYm9ydF9s b2NrLCBmbGFncyk7Cit9CisKIHN0YXRpYyBpbnQgemZjcF90YXNrX21nbXRfZnVuY3Rpb24oc3Ry dWN0IHNjc2lfY21uZCAqc2NwbnQsIHU4IHRtX2ZsYWdzKQogewogCXN0cnVjdCB6ZmNwX3Njc2lf ZGV2ICp6ZmNwX3NkZXYgPSBzZGV2X3RvX3pmY3Aoc2NwbnQtPmRldmljZSk7CkBAIC0yNjIsOCAr MzExLDEwIEBAIHN0YXRpYyBpbnQgemZjcF90YXNrX21nbXRfZnVuY3Rpb24oc3RydWN0IHNjc2lf Y21uZCAqc2NwbnQsIHU4IHRtX2ZsYWdzKQogCWlmIChmc2ZfcmVxLT5zdGF0dXMgJiBaRkNQX1NU QVRVU19GU0ZSRVFfVE1GVU5DRkFJTEVEKSB7CiAJCXpmY3BfZGJmX3Njc2lfZGV2cmVzZXQoImZh aWwiLCBzY3BudCwgdG1fZmxhZ3MpOwogCQlyZXR2YWwgPSBGQUlMRUQ7Ci0JfSBlbHNlCisJfSBl bHNlIHsKIAkJemZjcF9kYmZfc2NzaV9kZXZyZXNldCgib2theSIsIHNjcG50LCB0bV9mbGFncyk7 CisJCXpmY3Bfc2NzaV9mb3JnZXRfY21uZHMoemZjcF9zZGV2LCB0bV9mbGFncyk7CisJfQogCiAJ emZjcF9mc2ZfcmVxX2ZyZWUoZnNmX3JlcSk7CiAJcmV0dXJuIHJldHZhbDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnVzaW9uLmMgYi9kcml2ZXJzL3Nj c2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Z1c2lvbi5jCmluZGV4IDU2MGJiYmQwMzc4OC4uNWYz MzU5MTdmNDc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2Fz X2Z1c2lvbi5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnVzaW9u LmMKQEAgLTIyOTEsNiArMjI5MSw3IEBAIGludCBtZWdhc2FzX3dhaXRfZm9yX291dHN0YW5kaW5n X2Z1c2lvbihzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5zdGFuY2UsCiAJCXByaW50aygibWVn YXJhaWRfc2FzOiBwZW5kaW5nIGNvbW1hbmRzIHJlbWFpbiBhZnRlciB3YWl0aW5nLCAiCiAJCSAg ICAgICAid2lsbCByZXNldCBhZGFwdGVyIHNjc2klZC5cbiIsCiAJCSAgICAgICBpbnN0YW5jZS0+ aG9zdC0+aG9zdF9ubyk7CisJCSpjb252ZXJ0ID0gMTsKIAkJcmV0dmFsID0gMTsKIAl9CiBvdXQ6 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbXZzYXMvbXZfOTR4eC5jIGIvZHJpdmVycy9zY3Np L212c2FzL212Xzk0eHguYwppbmRleCA5MjcwZDE1ZmYxYTQuLjczNTNhYzhkMGQzOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9zY3NpL212c2FzL212Xzk0eHguYworKysgYi9kcml2ZXJzL3Njc2kvbXZz YXMvbXZfOTR4eC5jCkBAIC02MjEsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgbXZzXzk0eHhfY29t bWFuZF9hY3RpdmUoc3RydWN0IG12c19pbmZvICptdmksIHUzMiBzbG90X2lkeCkKIHsKIAl1MzIg dG1wOwogCXRtcCA9IG12c19jcjMyKG12aSwgTVZTX0NPTU1BTkRfQUNUSVZFKyhzbG90X2lkeCA+ PiAzKSk7Ci0JaWYgKHRtcCAmJiAxIDw8IChzbG90X2lkeCAlIDMyKSkgeworCWlmICh0bXAgJiAx IDw8IChzbG90X2lkeCAlIDMyKSkgewogCQltdl9wcmludGsoImNvbW1hbmQgYWN0aXZlICUwOFgs ICBzbG90IFsleF0uXG4iLCB0bXAsIHNsb3RfaWR4KTsKIAkJbXZzX2N3MzIobXZpLCBNVlNfQ09N TUFORF9BQ1RJVkUgKyAoc2xvdF9pZHggPj4gMyksCiAJCQkxIDw8IChzbG90X2lkeCAlIDMyKSk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYyBiL2RyaXZlcnMvc2Nz aS9xbGEyeHh4L3FsYV9vcy5jCmluZGV4IDUwNzIyNTFjZGI4Yi4uYzc3MGVmODg2ZGMyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYworKysgYi9kcml2ZXJzL3Njc2kv cWxhMnh4eC9xbGFfb3MuYwpAQCAtMzM5Myw3ICszMzkzLDcgQEAgcWxhMngwMF9tZW1fYWxsb2Mo c3RydWN0IHFsYV9od19kYXRhICpoYSwgdWludDE2X3QgcmVxX2xlbiwgdWludDE2X3QgcnNwX2xl biwKIAkJCQlzaXplb2Yoc3RydWN0IGN0Nl9kc2QpLCAwLAogCQkJCVNMQUJfSFdDQUNIRV9BTElH TiwgTlVMTCk7CiAJCQlpZiAoIWN0eF9jYWNoZXApCi0JCQkJZ290byBmYWlsX2ZyZWVfZ2lkX2xp c3Q7CisJCQkJZ290byBmYWlsX2ZyZWVfc3JiX21lbXBvb2w7CiAJCX0KIAkJaGEtPmN0eF9tZW1w b29sID0gbWVtcG9vbF9jcmVhdGVfc2xhYl9wb29sKFNSQl9NSU5fUkVRLAogCQkJY3R4X2NhY2hl cCk7CkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCBxbGEyeDAwX21lbV9hbGxvYyhzdHJ1Y3QgcWxhX2h3 X2RhdGEgKmhhLCB1aW50MTZfdCByZXFfbGVuLCB1aW50MTZfdCByc3BfbGVuLAogCWhhLT5sb29w X2lkX21hcCA9IGt6YWxsb2MoQklUU19UT19MT05HUyhMT09QSURfTUFQX1NJWkUpICogc2l6ZW9m KGxvbmcpLAogCSAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIWhhLT5sb29wX2lkX21hcCkKLQkJZ290 byBmYWlsX2FzeW5jX3BkOworCQlnb3RvIGZhaWxfbG9vcF9pZF9tYXA7CiAJZWxzZSB7CiAJCXFs YTJ4MDBfc2V0X3Jlc2VydmVkX2xvb3BfaWRzKGhhKTsKIAkJcWxfZGJnX3BjaShxbF9kYmdfaW5p dCwgaGEtPnBkZXYsIDB4MDEyMywKQEAgLTM1NTUsNiArMzU1NSw4IEBAIHFsYTJ4MDBfbWVtX2Fs bG9jKHN0cnVjdCBxbGFfaHdfZGF0YSAqaGEsIHVpbnQxNl90IHJlcV9sZW4sIHVpbnQxNl90IHJz cF9sZW4sCiAKIAlyZXR1cm4gMDsKIAorZmFpbF9sb29wX2lkX21hcDoKKwlkbWFfcG9vbF9mcmVl KGhhLT5zX2RtYV9wb29sLCBoYS0+YXN5bmNfcGQsIGhhLT5hc3luY19wZF9kbWEpOwogZmFpbF9h c3luY19wZDoKIAlkbWFfcG9vbF9mcmVlKGhhLT5zX2RtYV9wb29sLCBoYS0+ZXhfaW5pdF9jYiwg aGEtPmV4X2luaXRfY2JfZG1hKTsKIGZhaWxfZXhfaW5pdF9jYjoKQEAgLTM1ODIsNiArMzU4NCwx MCBAQCBmYWlsX2ZyZWVfbXNfaW9jYjoKIAlkbWFfcG9vbF9mcmVlKGhhLT5zX2RtYV9wb29sLCBo YS0+bXNfaW9jYiwgaGEtPm1zX2lvY2JfZG1hKTsKIAloYS0+bXNfaW9jYiA9IE5VTEw7CiAJaGEt Pm1zX2lvY2JfZG1hID0gMDsKKworCWlmIChoYS0+c25zX2NtZCkKKwkJZG1hX2ZyZWVfY29oZXJl bnQoJmhhLT5wZGV2LT5kZXYsIHNpemVvZihzdHJ1Y3Qgc25zX2NtZF9wa3QpLAorCQkgICAgaGEt PnNuc19jbWQsIGhhLT5zbnNfY21kX2RtYSk7CiBmYWlsX2RtYV9wb29sOgogCWlmIChJU19RTEE4 MlhYKGhhKSB8fCBxbDJ4ZW5hYmxlZGlmKSB7CiAJCWRtYV9wb29sX2Rlc3Ryb3koaGEtPmZjcF9j bW5kX2RtYV9wb29sKTsKQEAgLTM1OTksMTAgKzM2MDUsMTIgQEAgZmFpbF9mcmVlX252cmFtOgog CWtmcmVlKGhhLT5udnJhbSk7CiAJaGEtPm52cmFtID0gTlVMTDsKIGZhaWxfZnJlZV9jdHhfbWVt cG9vbDoKLQltZW1wb29sX2Rlc3Ryb3koaGEtPmN0eF9tZW1wb29sKTsKKwlpZiAoaGEtPmN0eF9t ZW1wb29sKQorCQltZW1wb29sX2Rlc3Ryb3koaGEtPmN0eF9tZW1wb29sKTsKIAloYS0+Y3R4X21l bXBvb2wgPSBOVUxMOwogZmFpbF9mcmVlX3NyYl9tZW1wb29sOgotCW1lbXBvb2xfZGVzdHJveSho YS0+c3JiX21lbXBvb2wpOworCWlmIChoYS0+c3JiX21lbXBvb2wpCisJCW1lbXBvb2xfZGVzdHJv eShoYS0+c3JiX21lbXBvb2wpOwogCWhhLT5zcmJfbWVtcG9vbCA9IE5VTEw7CiBmYWlsX2ZyZWVf Z2lkX2xpc3Q6CiAJZG1hX2ZyZWVfY29oZXJlbnQoJmhhLT5wZGV2LT5kZXYsIHFsYTJ4MDBfZ2lk X2xpc3Rfc2l6ZShoYSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIGIv ZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYwppbmRleCAxYjMwYTY1NTU0ZjkuLmFlMjgwZTdkMzgz MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYworKysgYi9kcml2ZXJzL3Nj c2kvc2NzaV9zeXNmcy5jCkBAIC0xMDAyLDEwICsxMDAyLDYgQEAgaW50IHNjc2lfc3lzZnNfYWRk X3NkZXYoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KQogCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpy cSA9IHNkZXYtPnJlcXVlc3RfcXVldWU7CiAJc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0ID0g c2Rldi0+c2Rldl90YXJnZXQ7CiAKLQllcnJvciA9IHNjc2lfZGV2aWNlX3NldF9zdGF0ZShzZGV2 LCBTREVWX1JVTk5JTkcpOwotCWlmIChlcnJvcikKLQkJcmV0dXJuIGVycm9yOwotCiAJZXJyb3Ig PSBzY3NpX3RhcmdldF9hZGQoc3RhcmdldCk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2cuYyBiL2RyaXZlcnMvc2NzaS9zZy5jCmluZGV4 IGI0ZDUwNjYyZmM2Zi4uMDIwNmI0OTViNjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2cu YworKysgYi9kcml2ZXJzL3Njc2kvc2cuYwpAQCAtMTcxNiw2ICsxNzE2LDEwIEBAIHN0YXRpYyBp bnQgc2dfc3RhcnRfcmVxKFNnX3JlcXVlc3QgKnNycCwgdW5zaWduZWQgY2hhciAqY21kKQogCQkJ aW92X2NvdW50ID0gaW92X3Nob3J0ZW4oaW92LCBpb3ZfY291bnQsIGhwLT5keGZlcl9sZW4pOwog CQkJbGVuID0gaHAtPmR4ZmVyX2xlbjsKIAkJfQorCQlpZiAobGVuID09IDApIHsKKwkJCWtmcmVl KGlvdik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQogCiAJCXJlcyA9IGJsa19ycV9tYXBfdXNl cl9pb3YocSwgcnEsIG1kLCAoc3RydWN0IHNnX2lvdmVjICopaW92LAogCQkJCQkgIGlvdl9jb3Vu dCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3NiL3BjaS5jIGIvZHJpdmVycy9zc2IvcGNpLmMKaW5k ZXggYThkYzk1ZWJmMmQ2Li43NzAwY2VmNWUxNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL3Bj aS5jCisrKyBiL2RyaXZlcnMvc3NiL3BjaS5jCkBAIC04NDYsNiArODQ2LDcgQEAgc3RhdGljIGlu dCBzc2JfcGNpX3Nwcm9tX2dldChzdHJ1Y3Qgc3NiX2J1cyAqYnVzLAogCQkJaWYgKGVycikgewog CQkJCXNzYl93YXJuKCJXQVJOSU5HOiBVc2luZyBmYWxsYmFjayBTUFJPTSBmYWlsZWQgKGVyciAl ZClcbiIsCiAJCQkJCSBlcnIpOworCQkJCWdvdG8gb3V0X2ZyZWU7CiAJCQl9IGVsc2UgewogCQkJ CXNzYl9kYmcoIlVzaW5nIFNQUk9NIHJldmlzaW9uICVkIHByb3ZpZGVkIGJ5IHBsYXRmb3JtXG4i LAogCQkJCQlzcHJvbS0+cmV2aXNpb24pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lp by9hZGMvYWQ3NjA2X2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNl9jb3Jl LmMKaW5kZXggZjBmMDVmMTk1ZDJjLi5kNDU5OGVmNDg1NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c3RhZ2luZy9paW8vYWRjL2FkNzYwNl9jb3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9h ZGMvYWQ3NjA2X2NvcmUuYwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGFkNzYw Nl9zdG9yZV9vdmVyc2FtcGxpbmdfcmF0aW8oc3RydWN0IGRldmljZSAqZGV2LAogCW11dGV4X2xv Y2soJmluZGlvX2Rldi0+bWxvY2spOwogCWdwaW9fc2V0X3ZhbHVlKHN0LT5wZGF0YS0+Z3Bpb19v czAsIChyZXQgPj4gMCkgJiAxKTsKIAlncGlvX3NldF92YWx1ZShzdC0+cGRhdGEtPmdwaW9fb3Mx LCAocmV0ID4+IDEpICYgMSk7Ci0JZ3Bpb19zZXRfdmFsdWUoc3QtPnBkYXRhLT5ncGlvX29zMSwg KHJldCA+PiAyKSAmIDEpOworCWdwaW9fc2V0X3ZhbHVlKHN0LT5wZGF0YS0+Z3Bpb19vczIsIChy ZXQgPj4gMikgJiAxKTsKIAlzdC0+b3ZlcnNhbXBsaW5nID0gbHZhbDsKIAltdXRleF91bmxvY2so JmluZGlvX2Rldi0+bWxvY2spOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEv ZGF2aW5jaV92cGZlL3ZwZmVfdmlkZW8uYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9kYXZpbmNp X3ZwZmUvdnBmZV92aWRlby5jCmluZGV4IGQ5NWM0MjcwNDNkNC4uM2MxZDE0MDE1MjJmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvZGF2aW5jaV92cGZlL3ZwZmVfdmlkZW8uYwor KysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvZGF2aW5jaV92cGZlL3ZwZmVfdmlkZW8uYwpAQCAt MTM1MSw3ICsxMzUxLDcgQEAgc3RhdGljIGludCB2cGZlX3JlcWJ1ZnMoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKnByaXYsCiAJaWYgKHJldCkgewogCQl2NGwyX2VycigmdnBmZV9kZXYtPnY0bDJf ZGV2LCAidmIyX3F1ZXVlX2luaXQoKSBmYWlsZWRcbiIpOwogCQl2YjJfZG1hX2NvbnRpZ19jbGVh bnVwX2N0eCh2cGZlX2Rldi0+cGRldik7Ci0JCXJldHVybiByZXQ7CisJCWdvdG8gdW5sb2NrX291 dDsKIAl9CiAKIAlmaC0+aW9fYWxsb3dlZCA9IDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Rhcmdl dC9pc2NzaS9pc2NzaV90YXJnZXRfdHBnLmMgYi9kcml2ZXJzL3RhcmdldC9pc2NzaS9pc2NzaV90 YXJnZXRfdHBnLmMKaW5kZXggYzNjYjVjMTVlZmRhLi40OGNkM2NmNzQxZGYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF90cGcuYworKysgYi9kcml2ZXJzL3Rh cmdldC9pc2NzaS9pc2NzaV90YXJnZXRfdHBnLmMKQEAgLTI2MSw3ICsyNjEsNiBAQCBlcnJfb3V0 OgogCQlpc2NzaV9yZWxlYXNlX3BhcmFtX2xpc3QodHBnLT5wYXJhbV9saXN0KTsKIAkJdHBnLT5w YXJhbV9saXN0ID0gTlVMTDsKIAl9Ci0Ja2ZyZWUodHBnKTsKIAlyZXR1cm4gLUVOT01FTTsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfc2JjLmMgYi9kcml2ZXJz L3RhcmdldC90YXJnZXRfY29yZV9zYmMuYwppbmRleCBmNDg2NTkwMTI2M2YuLmEyOWZkZmFiMGQz YSAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfc2JjLmMKKysrIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfc2JjLmMKQEAgLTM2OCw2ICszNjgsNyBAQCBzdGF0aWMg c2Vuc2VfcmVhc29uX3QgY29tcGFyZV9hbmRfd3JpdGVfcG9zdChzdHJ1Y3Qgc2VfY21kICpjbWQs IGJvb2wgc3VjY2VzcywKIAkJCQkJICAgICBpbnQgKnBvc3RfcmV0KQogewogCXN0cnVjdCBzZV9k ZXZpY2UgKmRldiA9IGNtZC0+c2VfZGV2OworCXNlbnNlX3JlYXNvbl90IHJldCA9IFRDTV9OT19T RU5TRTsKIAogCS8qCiAJICogT25seSBzZXQgU0NGX0NPTVBBUkVfQU5EX1dSSVRFX1BPU1QgdG8g Zm9yY2UgYSByZXNwb25zZSBmYWxsLXRocm91Z2gKQEAgLTM3NSw5ICszNzYsMTIgQEAgc3RhdGlj IHNlbnNlX3JlYXNvbl90IGNvbXBhcmVfYW5kX3dyaXRlX3Bvc3Qoc3RydWN0IHNlX2NtZCAqY21k LCBib29sIHN1Y2Nlc3MsCiAJICogc2VudCB0byB0aGUgYmFja2VuZCBkcml2ZXIuCiAJICovCiAJ c3Bpbl9sb2NrX2lycSgmY21kLT50X3N0YXRlX2xvY2spOwotCWlmICgoY21kLT50cmFuc3BvcnRf c3RhdGUgJiBDTURfVF9TRU5UKSAmJiAhY21kLT5zY3NpX3N0YXR1cykgeworCWlmIChjbWQtPnRy YW5zcG9ydF9zdGF0ZSAmIENNRF9UX1NFTlQpIHsKIAkJY21kLT5zZV9jbWRfZmxhZ3MgfD0gU0NG X0NPTVBBUkVfQU5EX1dSSVRFX1BPU1Q7CiAJCSpwb3N0X3JldCA9IDE7CisKKwkJaWYgKGNtZC0+ c2NzaV9zdGF0dXMgPT0gU0FNX1NUQVRfQ0hFQ0tfQ09ORElUSU9OKQorCQkJcmV0ID0gVENNX0xP R0lDQUxfVU5JVF9DT01NVU5JQ0FUSU9OX0ZBSUxVUkU7CiAJfQogCXNwaW5fdW5sb2NrX2lycSgm Y21kLT50X3N0YXRlX2xvY2spOwogCkBAIC0zODcsNyArMzkxLDcgQEAgc3RhdGljIHNlbnNlX3Jl YXNvbl90IGNvbXBhcmVfYW5kX3dyaXRlX3Bvc3Qoc3RydWN0IHNlX2NtZCAqY21kLCBib29sIHN1 Y2Nlc3MsCiAJICovCiAJdXAoJmRldi0+Y2F3X3NlbSk7CiAKLQlyZXR1cm4gVENNX05PX1NFTlNF OworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBzZW5zZV9yZWFzb25fdCBjb21wYXJlX2FuZF93 cml0ZV9jYWxsYmFjayhzdHJ1Y3Qgc2VfY21kICpjbWQsIGJvb2wgc3VjY2VzcywKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jIGIvZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMKaW5kZXggZDNmNjU1MjNhMTlkLi41ODlmOWRmNTc0 ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jCisr KyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jCkBAIC0zMDkzLDcgKzMw OTMsNiBAQCBzdGF0aWMgdm9pZCB0YXJnZXRfdG1yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbWQtPnRfc3RhdGVfbG9jaywgZmxhZ3Mp OwogCQlnb3RvIGNoZWNrX3N0b3A7CiAJfQotCWNtZC0+dF9zdGF0ZSA9IFRSQU5TUE9SVF9JU1RB VEVfUFJPQ0VTU0lORzsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbWQtPnRfc3RhdGVfbG9j aywgZmxhZ3MpOwogCiAJY21kLT5zZV90Zm8tPnF1ZXVlX3RtX3JzcChjbWQpOwpAQCAtMzEwNiwx MSArMzEwNSwyNSBAQCBpbnQgdHJhbnNwb3J0X2dlbmVyaWNfaGFuZGxlX3RtcigKIAlzdHJ1Y3Qg c2VfY21kICpjbWQpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlib29sIGFib3J0ZWQgPSBm YWxzZTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZjbWQtPnRfc3RhdGVfbG9jaywgZmxhZ3MpOwot CWNtZC0+dHJhbnNwb3J0X3N0YXRlIHw9IENNRF9UX0FDVElWRTsKKwlpZiAoY21kLT50cmFuc3Bv cnRfc3RhdGUgJiBDTURfVF9BQk9SVEVEKSB7CisJCWFib3J0ZWQgPSB0cnVlOworCX0gZWxzZSB7 CisJCWNtZC0+dF9zdGF0ZSA9IFRSQU5TUE9SVF9JU1RBVEVfUFJPQ0VTU0lORzsKKwkJY21kLT50 cmFuc3BvcnRfc3RhdGUgfD0gQ01EX1RfQUNUSVZFOworCX0KIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjbWQtPnRfc3RhdGVfbG9jaywgZmxhZ3MpOwogCisJaWYgKGFib3J0ZWQpIHsKKwkJcHJf d2Fybl9yYXRlbGltaXRlZCgiaGFuZGxlX3RtciBjYXVnaHQgQ01EX1RfQUJPUlRFRCBUTVIgJWQi CisJCQkicmVmX3RhZzogJXUgdGFnOiAldVxuIiwgY21kLT5zZV90bXJfcmVxLT5mdW5jdGlvbiwK KwkJCWNtZC0+c2VfdG1yX3JlcS0+cmVmX3Rhc2tfdGFnLCBjbWQtPnNlX3Rmby0+Z2V0X3Rhc2tf dGFnKGNtZCkpOworCQl0cmFuc3BvcnRfY21kX2NoZWNrX3N0b3BfdG9fZmFicmljKGNtZCk7CisJ CXJldHVybiAwOworCX0KKwogCUlOSVRfV09SSygmY21kLT53b3JrLCB0YXJnZXRfdG1yX3dvcmsp OwogCXF1ZXVlX3dvcmsoY21kLT5zZV9kZXYtPnRtcl93cSwgJmNtZC0+d29yayk7CiAJcmV0dXJu IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV94Y29weS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfeGNvcHkuYwppbmRleCA2MGU2MTFkZjQ4MTguLmY5YjI4 YTVhNTJhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfeGNvcHkuYwor KysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV94Y29weS5jCkBAIC04ODEsNyArODgxLDcg QEAgb3V0OgogCQkJIiBDSEVDS19DT05ESVRJT04gLT4gc2VuZGluZyByZXNwb25zZVxuIiwgcmMp OwogCQllY19jbWQtPnNjc2lfc3RhdHVzID0gU0FNX1NUQVRfQ0hFQ0tfQ09ORElUSU9OOwogCX0K LQl0YXJnZXRfY29tcGxldGVfY21kKGVjX2NtZCwgU0FNX1NUQVRfQ0hFQ0tfQ09ORElUSU9OKTsK Kwl0YXJnZXRfY29tcGxldGVfY21kKGVjX2NtZCwgZWNfY21kLT5zY3NpX3N0YXR1cyk7CiB9CiAK IHNlbnNlX3JlYXNvbl90IHRhcmdldF9kb194Y29weShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9od21vbi5jIGIvZHJpdmVycy90aGVy bWFsL3RoZXJtYWxfaHdtb24uYwppbmRleCAxOTY3YmVlNGYwNzYuLjkwMzVmYmM1ZTk4ZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWxfaHdtb24uYworKysgYi9kcml2ZXJzL3Ro ZXJtYWwvdGhlcm1hbF9od21vbi5jCkBAIC05OCw3ICs5OCw3IEBAIHRlbXBfY3JpdF9zaG93KHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKIAlsb25nIHRlbXBlcmF0dXJlOwogCWludCByZXQ7CiAKLQlyZXQgPSB0ei0+b3BzLT5nZXRf dHJpcF90ZW1wKHR6LCAwLCAmdGVtcGVyYXR1cmUpOworCXJldCA9IHR6LT5vcHMtPmdldF9jcml0 X3RlbXAodHosICZ0ZW1wZXJhdHVyZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy90dHkvbl9oZGxjLmMgYi9kcml2ZXJzL3R0eS9uX2hkbGMuYwppbmRl eCA2NDRkZGI4NDFkOWYuLjZkMWUyZjc0NmFiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvbl9o ZGxjLmMKKysrIGIvZHJpdmVycy90dHkvbl9oZGxjLmMKQEAgLTExNCw3ICsxMTQsNyBAQAogI2Rl ZmluZSBERUZBVUxUX1RYX0JVRl9DT1VOVCAzCiAKIHN0cnVjdCBuX2hkbGNfYnVmIHsKLQlzdHJ1 Y3Qgbl9oZGxjX2J1ZiAqbGluazsKKwlzdHJ1Y3QgbGlzdF9oZWFkICBsaXN0X2l0ZW07CiAJaW50 CQkgIGNvdW50OwogCWNoYXIJCSAgYnVmWzFdOwogfTsKQEAgLTEyMiw4ICsxMjIsNyBAQCBzdHJ1 Y3Qgbl9oZGxjX2J1ZiB7CiAjZGVmaW5lCU5fSERMQ19CVUZfU0laRQkoc2l6ZW9mKHN0cnVjdCBu X2hkbGNfYnVmKSArIG1heGZyYW1lKQogCiBzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0IHsKLQlzdHJ1 Y3Qgbl9oZGxjX2J1ZiAqaGVhZDsKLQlzdHJ1Y3Qgbl9oZGxjX2J1ZiAqdGFpbDsKKwlzdHJ1Y3Qg bGlzdF9oZWFkICBsaXN0OwogCWludAkJICBjb3VudDsKIAlzcGlubG9ja190CSAgc3BpbmxvY2s7 CiB9OwpAQCAtMTM2LDcgKzEzNSw2IEBAIHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgewogICogQGJh Y2t1cF90dHkgLSBUVFkgdG8gdXNlIGlmIHR0eSBnZXRzIGNsb3NlZAogICogQHRidXN5IC0gcmVl bnRyYW5jeSBmbGFnIGZvciB0eCB3YWtldXAgY29kZQogICogQHdva2VfdXAgLSBGSVhNRTogZGVz Y3JpYmUgdGhpcyBmaWVsZAotICogQHRidWYgLSBjdXJyZW50bHkgdHJhbnNtaXR0aW5nIHR4IGJ1 ZmZlcgogICogQHR4X2J1Zl9saXN0IC0gbGlzdCBvZiBwZW5kaW5nIHRyYW5zbWl0IGZyYW1lIGJ1 ZmZlcnMKICAqIEByeF9idWZfbGlzdCAtIGxpc3Qgb2YgcmVjZWl2ZWQgZnJhbWUgYnVmZmVycwog ICogQHR4X2ZyZWVfYnVmX2xpc3QgLSBsaXN0IHVudXNlZCB0cmFuc21pdCBmcmFtZSBidWZmZXJz CkBAIC0xNDksNyArMTQ3LDYgQEAgc3RydWN0IG5faGRsYyB7CiAJc3RydWN0IHR0eV9zdHJ1Y3QJ KmJhY2t1cF90dHk7CiAJaW50CQkJdGJ1c3k7CiAJaW50CQkJd29rZV91cDsKLQlzdHJ1Y3Qgbl9o ZGxjX2J1ZgkqdGJ1ZjsKIAlzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0CXR4X2J1Zl9saXN0OwogCXN0 cnVjdCBuX2hkbGNfYnVmX2xpc3QJcnhfYnVmX2xpc3Q7CiAJc3RydWN0IG5faGRsY19idWZfbGlz dAl0eF9mcmVlX2J1Zl9saXN0OwpAQCAtMTU5LDcgKzE1Niw4IEBAIHN0cnVjdCBuX2hkbGMgewog LyoKICAqIEhETEMgYnVmZmVyIGxpc3QgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucwogICovCi1zdGF0 aWMgdm9pZCBuX2hkbGNfYnVmX2xpc3RfaW5pdChzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0ICpsaXN0 KTsKK3N0YXRpYyB2b2lkIG5faGRsY19idWZfcmV0dXJuKHN0cnVjdCBuX2hkbGNfYnVmX2xpc3Qg KmJ1Zl9saXN0LAorCQkJCQkJc3RydWN0IG5faGRsY19idWYgKmJ1Zik7CiBzdGF0aWMgdm9pZCBu X2hkbGNfYnVmX3B1dChzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0ICpsaXN0LAogCQkJICAgc3RydWN0 IG5faGRsY19idWYgKmJ1Zik7CiBzdGF0aWMgc3RydWN0IG5faGRsY19idWYgKm5faGRsY19idWZf Z2V0KHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgKmxpc3QpOwpAQCAtMjA5LDE2ICsyMDcsOSBAQCBz dGF0aWMgdm9pZCBmbHVzaF90eF9xdWV1ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQogewogCXN0 cnVjdCBuX2hkbGMgKm5faGRsYyA9IHR0eTJuX2hkbGModHR5KTsKIAlzdHJ1Y3Qgbl9oZGxjX2J1 ZiAqYnVmOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAl3aGlsZSAoKGJ1ZiA9IG5faGRsY19i dWZfZ2V0KCZuX2hkbGMtPnR4X2J1Zl9saXN0KSkpCiAJCW5faGRsY19idWZfcHV0KCZuX2hkbGMt PnR4X2ZyZWVfYnVmX2xpc3QsIGJ1Zik7Ci0gCXNwaW5fbG9ja19pcnFzYXZlKCZuX2hkbGMtPnR4 X2J1Zl9saXN0LnNwaW5sb2NrLCBmbGFncyk7Ci0JaWYgKG5faGRsYy0+dGJ1ZikgewotCQluX2hk bGNfYnVmX3B1dCgmbl9oZGxjLT50eF9mcmVlX2J1Zl9saXN0LCBuX2hkbGMtPnRidWYpOwotCQlu X2hkbGMtPnRidWYgPSBOVUxMOwotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZuX2hkbGMt PnR4X2J1Zl9saXN0LnNwaW5sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgdHR5X2xk aXNjX29wcyBuX2hkbGNfbGRpc2MgPSB7CkBAIC0yODQsNyArMjc1LDYgQEAgc3RhdGljIHZvaWQg bl9oZGxjX3JlbGVhc2Uoc3RydWN0IG5faGRsYyAqbl9oZGxjKQogCQl9IGVsc2UKIAkJCWJyZWFr OwogCX0KLQlrZnJlZShuX2hkbGMtPnRidWYpOwogCWtmcmVlKG5faGRsYyk7CiAJCiB9CS8qIGVu ZCBvZiBuX2hkbGNfcmVsZWFzZSgpICovCkBAIC00MDMsMTMgKzM5Myw3IEBAIHN0YXRpYyB2b2lk IG5faGRsY19zZW5kX2ZyYW1lcyhzdHJ1Y3Qgbl9oZGxjICpuX2hkbGMsIHN0cnVjdCB0dHlfc3Ry dWN0ICp0dHkpCiAJbl9oZGxjLT53b2tlX3VwID0gMDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZuX2hkbGMtPnR4X2J1Zl9saXN0LnNwaW5sb2NrLCBmbGFncyk7CiAKLQkvKiBnZXQgY3VycmVu dCB0cmFuc21pdCBidWZmZXIgb3IgZ2V0IG5ldyB0cmFuc21pdCAqLwotCS8qIGJ1ZmZlciBmcm9t IGxpc3Qgb2YgcGVuZGluZyB0cmFuc21pdCBidWZmZXJzICovCi0JCQotCXRidWYgPSBuX2hkbGMt PnRidWY7Ci0JaWYgKCF0YnVmKQotCQl0YnVmID0gbl9oZGxjX2J1Zl9nZXQoJm5faGRsYy0+dHhf YnVmX2xpc3QpOwotCQkKKwl0YnVmID0gbl9oZGxjX2J1Zl9nZXQoJm5faGRsYy0+dHhfYnVmX2xp c3QpOwogCXdoaWxlICh0YnVmKSB7CiAJCWlmIChkZWJ1Z2xldmVsID49IERFQlVHX0xFVkVMX0lO Rk8pCQogCQkJcHJpbnRrKCIlcyglZClzZW5kaW5nIGZyYW1lICVwLCBjb3VudD0lZFxuIiwKQEAg LTQyMSw3ICs0MDUsNyBAQCBzdGF0aWMgdm9pZCBuX2hkbGNfc2VuZF9mcmFtZXMoc3RydWN0IG5f aGRsYyAqbl9oZGxjLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQogCiAJCS8qIHJvbGxiYWNrIHdh cyBwb3NzaWJsZSBhbmQgaGFzIGJlZW4gZG9uZSAqLwogCQlpZiAoYWN0dWFsID09IC1FUkVTVEFS VFNZUykgewotCQkJbl9oZGxjLT50YnVmID0gdGJ1ZjsKKwkJCW5faGRsY19idWZfcmV0dXJuKCZu X2hkbGMtPnR4X2J1Zl9saXN0LCB0YnVmKTsKIAkJCWJyZWFrOwogCQl9CiAJCS8qIGlmIHRyYW5z bWl0IGVycm9yLCB0aHJvdyBmcmFtZSBhd2F5IGJ5ICovCkBAIC00MzYsMTAgKzQyMCw3IEBAIHN0 YXRpYyB2b2lkIG5faGRsY19zZW5kX2ZyYW1lcyhzdHJ1Y3Qgbl9oZGxjICpuX2hkbGMsIHN0cnVj dCB0dHlfc3RydWN0ICp0dHkpCiAJCQkJCQogCQkJLyogZnJlZSBjdXJyZW50IHRyYW5zbWl0IGJ1 ZmZlciAqLwogCQkJbl9oZGxjX2J1Zl9wdXQoJm5faGRsYy0+dHhfZnJlZV9idWZfbGlzdCwgdGJ1 Zik7Ci0JCQkKLQkJCS8qIHRoaXMgdHggYnVmZmVyIGlzIGRvbmUgKi8KLQkJCW5faGRsYy0+dGJ1 ZiA9IE5VTEw7Ci0JCQkKKwogCQkJLyogd2FpdCB1cCBzbGVlcGluZyB3cml0ZXJzICovCiAJCQl3 YWtlX3VwX2ludGVycnVwdGlibGUoJnR0eS0+d3JpdGVfd2FpdCk7CiAJCkBAIC00NDksMTAgKzQz MCwxMiBAQCBzdGF0aWMgdm9pZCBuX2hkbGNfc2VuZF9mcmFtZXMoc3RydWN0IG5faGRsYyAqbl9o ZGxjLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQogCQkJaWYgKGRlYnVnbGV2ZWwgPj0gREVCVUdf TEVWRUxfSU5GTykJCiAJCQkJcHJpbnRrKCIlcyglZClmcmFtZSAlcCBwZW5kaW5nXG4iLAogCQkJ CQlfX0ZJTEVfXyxfX0xJTkVfXyx0YnVmKTsKLQkJCQkJCi0JCQkvKiBidWZmZXIgbm90IGFjY2Vw dGVkIGJ5IGRyaXZlciAqLwotCQkJLyogc2V0IHRoaXMgYnVmZmVyIGFzIHBlbmRpbmcgYnVmZmVy ICovCi0JCQluX2hkbGMtPnRidWYgPSB0YnVmOworCisJCQkvKgorCQkJICogdGhlIGJ1ZmZlciB3 YXMgbm90IGFjY2VwdGVkIGJ5IGRyaXZlciwKKwkJCSAqIHJldHVybiBpdCBiYWNrIGludG8gdHgg cXVldWUKKwkJCSAqLworCQkJbl9oZGxjX2J1Zl9yZXR1cm4oJm5faGRsYy0+dHhfYnVmX2xpc3Qs IHRidWYpOwogCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC03NTAsNyArNzMzLDggQEAgc3RhdGljIGlu dCBuX2hkbGNfdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpm aWxlLAogCWludCBlcnJvciA9IDA7CiAJaW50IGNvdW50OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Ci0JCisJc3RydWN0IG5faGRsY19idWYgKmJ1ZiA9IE5VTEw7CisKIAlpZiAoZGVidWdsZXZlbCA+ PSBERUJVR19MRVZFTF9JTkZPKQkKIAkJcHJpbnRrKCIlcyglZCluX2hkbGNfdHR5X2lvY3RsKCkg Y2FsbGVkICVkXG4iLAogCQkJX19GSUxFX18sX19MSU5FX18sY21kKTsKQEAgLTc2NCw4ICs3NDgs MTAgQEAgc3RhdGljIGludCBuX2hkbGNfdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHks IHN0cnVjdCBmaWxlICpmaWxlLAogCQkvKiByZXBvcnQgY291bnQgb2YgcmVhZCBkYXRhIGF2YWls YWJsZSAqLwogCQkvKiBpbiBuZXh0IGF2YWlsYWJsZSBmcmFtZSAoaWYgYW55KSAqLwogCQlzcGlu X2xvY2tfaXJxc2F2ZSgmbl9oZGxjLT5yeF9idWZfbGlzdC5zcGlubG9jayxmbGFncyk7Ci0JCWlm IChuX2hkbGMtPnJ4X2J1Zl9saXN0LmhlYWQpCi0JCQljb3VudCA9IG5faGRsYy0+cnhfYnVmX2xp c3QuaGVhZC0+Y291bnQ7CisJCWJ1ZiA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmbl9oZGxj LT5yeF9idWZfbGlzdC5saXN0LAorCQkJCQkJc3RydWN0IG5faGRsY19idWYsIGxpc3RfaXRlbSk7 CisJCWlmIChidWYpCisJCQljb3VudCA9IGJ1Zi0+Y291bnQ7CiAJCWVsc2UKIAkJCWNvdW50ID0g MDsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbl9oZGxjLT5yeF9idWZfbGlzdC5zcGlubG9j ayxmbGFncyk7CkBAIC03NzcsOCArNzYzLDEwIEBAIHN0YXRpYyBpbnQgbl9oZGxjX3R0eV9pb2N0 bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJY291bnQgPSB0 dHlfY2hhcnNfaW5fYnVmZmVyKHR0eSk7CiAJCS8qIGFkZCBzaXplIG9mIG5leHQgb3V0cHV0IGZy YW1lIGluIHF1ZXVlICovCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZuX2hkbGMtPnR4X2J1Zl9saXN0 LnNwaW5sb2NrLGZsYWdzKTsKLQkJaWYgKG5faGRsYy0+dHhfYnVmX2xpc3QuaGVhZCkKLQkJCWNv dW50ICs9IG5faGRsYy0+dHhfYnVmX2xpc3QuaGVhZC0+Y291bnQ7CisJCWJ1ZiA9IGxpc3RfZmly c3RfZW50cnlfb3JfbnVsbCgmbl9oZGxjLT50eF9idWZfbGlzdC5saXN0LAorCQkJCQkJc3RydWN0 IG5faGRsY19idWYsIGxpc3RfaXRlbSk7CisJCWlmIChidWYpCisJCQljb3VudCArPSBidWYtPmNv dW50OwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZuX2hkbGMtPnR4X2J1Zl9saXN0LnNwaW5s b2NrLGZsYWdzKTsKIAkJZXJyb3IgPSBwdXRfdXNlcihjb3VudCwgKGludCBfX3VzZXIgKilhcmcp OwogCQlicmVhazsKQEAgLTgyNiwxNCArODE0LDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbl9o ZGxjX3R0eV9wb2xsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxwLAog CQlwb2xsX3dhaXQoZmlscCwgJnR0eS0+d3JpdGVfd2FpdCwgd2FpdCk7CiAKIAkJLyogc2V0IGJp dHMgZm9yIG9wZXJhdGlvbnMgdGhhdCB3b24ndCBibG9jayAqLwotCQlpZiAobl9oZGxjLT5yeF9i dWZfbGlzdC5oZWFkKQorCQlpZiAoIWxpc3RfZW1wdHkoJm5faGRsYy0+cnhfYnVmX2xpc3QubGlz dCkpCiAJCQltYXNrIHw9IFBPTExJTiB8IFBPTExSRE5PUk07CS8qIHJlYWRhYmxlICovCiAJCWlm ICh0ZXN0X2JpdChUVFlfT1RIRVJfQ0xPU0VELCAmdHR5LT5mbGFncykpCiAJCQltYXNrIHw9IFBP TExIVVA7CiAJCWlmICh0dHlfaHVuZ191cF9wKGZpbHApKQogCQkJbWFzayB8PSBQT0xMSFVQOwog CQlpZiAoIXR0eV9pc193cml0ZWxvY2tlZCh0dHkpICYmCi0JCQkJbl9oZGxjLT50eF9mcmVlX2J1 Zl9saXN0LmhlYWQpCisJCQkJIWxpc3RfZW1wdHkoJm5faGRsYy0+dHhfZnJlZV9idWZfbGlzdC5s aXN0KSkKIAkJCW1hc2sgfD0gUE9MTE9VVCB8IFBPTExXUk5PUk07CS8qIHdyaXRhYmxlICovCiAJ fQogCXJldHVybiBtYXNrOwpAQCAtODUzLDExICs4NDEsMTYgQEAgc3RhdGljIHN0cnVjdCBuX2hk bGMgKm5faGRsY19hbGxvYyh2b2lkKQogCWlmICghbl9oZGxjKQogCQlyZXR1cm4gTlVMTDsKIAot CW5faGRsY19idWZfbGlzdF9pbml0KCZuX2hkbGMtPnJ4X2ZyZWVfYnVmX2xpc3QpOwotCW5faGRs Y19idWZfbGlzdF9pbml0KCZuX2hkbGMtPnR4X2ZyZWVfYnVmX2xpc3QpOwotCW5faGRsY19idWZf bGlzdF9pbml0KCZuX2hkbGMtPnJ4X2J1Zl9saXN0KTsKLQluX2hkbGNfYnVmX2xpc3RfaW5pdCgm bl9oZGxjLT50eF9idWZfbGlzdCk7Ci0JCisJc3Bpbl9sb2NrX2luaXQoJm5faGRsYy0+cnhfZnJl ZV9idWZfbGlzdC5zcGlubG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJm5faGRsYy0+dHhfZnJlZV9i dWZfbGlzdC5zcGlubG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJm5faGRsYy0+cnhfYnVmX2xpc3Qu c3BpbmxvY2spOworCXNwaW5fbG9ja19pbml0KCZuX2hkbGMtPnR4X2J1Zl9saXN0LnNwaW5sb2Nr KTsKKworCUlOSVRfTElTVF9IRUFEKCZuX2hkbGMtPnJ4X2ZyZWVfYnVmX2xpc3QubGlzdCk7CisJ SU5JVF9MSVNUX0hFQUQoJm5faGRsYy0+dHhfZnJlZV9idWZfbGlzdC5saXN0KTsKKwlJTklUX0xJ U1RfSEVBRCgmbl9oZGxjLT5yeF9idWZfbGlzdC5saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmbl9o ZGxjLT50eF9idWZfbGlzdC5saXN0KTsKKwogCS8qIGFsbG9jYXRlIGZyZWUgcnggYnVmZmVyIGxp c3QgKi8KIAlmb3IoaT0wO2k8REVGQVVMVF9SWF9CVUZfQ09VTlQ7aSsrKSB7CiAJCWJ1ZiA9IGtt YWxsb2MoTl9IRExDX0JVRl9TSVpFLCBHRlBfS0VSTkVMKTsKQEAgLTg4NSw2MyArODc4LDY1IEBA IHN0YXRpYyBzdHJ1Y3Qgbl9oZGxjICpuX2hkbGNfYWxsb2Modm9pZCkKIH0JLyogZW5kIG9mIG5f aGRsY19hbGxvYygpICovCiAKIC8qKgotICogbl9oZGxjX2J1Zl9saXN0X2luaXQgLSBpbml0aWFs aXplIHNwZWNpZmllZCBIRExDIGJ1ZmZlciBsaXN0Ci0gKiBAbGlzdCAtIHBvaW50ZXIgdG8gYnVm ZmVyIGxpc3QKKyAqIG5faGRsY19idWZfcmV0dXJuIC0gcHV0IHRoZSBIRExDIGJ1ZmZlciBhZnRl ciB0aGUgaGVhZCBvZiB0aGUgc3BlY2lmaWVkIGxpc3QKKyAqIEBidWZfbGlzdCAtIHBvaW50ZXIg dG8gdGhlIGJ1ZmZlciBsaXN0CisgKiBAYnVmIC0gcG9pbnRlciB0byB0aGUgYnVmZmVyCiAgKi8K LXN0YXRpYyB2b2lkIG5faGRsY19idWZfbGlzdF9pbml0KHN0cnVjdCBuX2hkbGNfYnVmX2xpc3Qg Kmxpc3QpCitzdGF0aWMgdm9pZCBuX2hkbGNfYnVmX3JldHVybihzdHJ1Y3Qgbl9oZGxjX2J1Zl9s aXN0ICpidWZfbGlzdCwKKwkJCQkJCXN0cnVjdCBuX2hkbGNfYnVmICpidWYpCiB7Ci0JbWVtc2V0 KGxpc3QsIDAsIHNpemVvZigqbGlzdCkpOwotCXNwaW5fbG9ja19pbml0KCZsaXN0LT5zcGlubG9j ayk7Ci19CS8qIGVuZCBvZiBuX2hkbGNfYnVmX2xpc3RfaW5pdCgpICovCisJdW5zaWduZWQgbG9u ZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZidWZfbGlzdC0+c3BpbmxvY2ssIGZsYWdz KTsKKworCWxpc3RfYWRkKCZidWYtPmxpc3RfaXRlbSwgJmJ1Zl9saXN0LT5saXN0KTsKKwlidWZf bGlzdC0+Y291bnQrKzsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJ1Zl9saXN0LT5zcGlu bG9jaywgZmxhZ3MpOworfQogCiAvKioKICAqIG5faGRsY19idWZfcHV0IC0gYWRkIHNwZWNpZmll ZCBIRExDIGJ1ZmZlciB0byB0YWlsIG9mIHNwZWNpZmllZCBsaXN0Ci0gKiBAbGlzdCAtIHBvaW50 ZXIgdG8gYnVmZmVyIGxpc3QKKyAqIEBidWZfbGlzdCAtIHBvaW50ZXIgdG8gYnVmZmVyIGxpc3QK ICAqIEBidWYJLSBwb2ludGVyIHRvIGJ1ZmZlcgogICovCi1zdGF0aWMgdm9pZCBuX2hkbGNfYnVm X3B1dChzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0ICpsaXN0LAorc3RhdGljIHZvaWQgbl9oZGxjX2J1 Zl9wdXQoc3RydWN0IG5faGRsY19idWZfbGlzdCAqYnVmX2xpc3QsCiAJCQkgICBzdHJ1Y3Qgbl9o ZGxjX2J1ZiAqYnVmKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3Bpbl9sb2NrX2lycXNh dmUoJmxpc3QtPnNwaW5sb2NrLGZsYWdzKTsKLQkKLQlidWYtPmxpbms9TlVMTDsKLQlpZiAobGlz dC0+dGFpbCkKLQkJbGlzdC0+dGFpbC0+bGluayA9IGJ1ZjsKLQllbHNlCi0JCWxpc3QtPmhlYWQg PSBidWY7Ci0JbGlzdC0+dGFpbCA9IGJ1ZjsKLQkobGlzdC0+Y291bnQpKys7Ci0JCi0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmbGlzdC0+c3BpbmxvY2ssZmxhZ3MpOwotCQorCisJc3Bpbl9sb2Nr X2lycXNhdmUoJmJ1Zl9saXN0LT5zcGlubG9jaywgZmxhZ3MpOworCisJbGlzdF9hZGRfdGFpbCgm YnVmLT5saXN0X2l0ZW0sICZidWZfbGlzdC0+bGlzdCk7CisJYnVmX2xpc3QtPmNvdW50Kys7CisK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZidWZfbGlzdC0+c3BpbmxvY2ssIGZsYWdzKTsKIH0J LyogZW5kIG9mIG5faGRsY19idWZfcHV0KCkgKi8KIAogLyoqCiAgKiBuX2hkbGNfYnVmX2dldCAt IHJlbW92ZSBhbmQgcmV0dXJuIGFuIEhETEMgYnVmZmVyIGZyb20gbGlzdAotICogQGxpc3QgLSBw b2ludGVyIHRvIEhETEMgYnVmZmVyIGxpc3QKKyAqIEBidWZfbGlzdCAtIHBvaW50ZXIgdG8gSERM QyBidWZmZXIgbGlzdAogICogCiAgKiBSZW1vdmUgYW5kIHJldHVybiBhbiBIRExDIGJ1ZmZlciBm cm9tIHRoZSBoZWFkIG9mIHRoZSBzcGVjaWZpZWQgSERMQyBidWZmZXIKICAqIGxpc3QuCiAgKiBS ZXR1cm5zIGEgcG9pbnRlciB0byBIRExDIGJ1ZmZlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSAl TlVMTC4KICAqLwotc3RhdGljIHN0cnVjdCBuX2hkbGNfYnVmKiBuX2hkbGNfYnVmX2dldChzdHJ1 Y3Qgbl9oZGxjX2J1Zl9saXN0ICpsaXN0KQorc3RhdGljIHN0cnVjdCBuX2hkbGNfYnVmICpuX2hk bGNfYnVmX2dldChzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0ICpidWZfbGlzdCkKIHsKIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwogCXN0cnVjdCBuX2hkbGNfYnVmICpidWY7Ci0Jc3Bpbl9sb2NrX2lycXNh dmUoJmxpc3QtPnNwaW5sb2NrLGZsYWdzKTsKLQkKLQlidWYgPSBsaXN0LT5oZWFkOworCisJc3Bp bl9sb2NrX2lycXNhdmUoJmJ1Zl9saXN0LT5zcGlubG9jaywgZmxhZ3MpOworCisJYnVmID0gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKCZidWZfbGlzdC0+bGlzdCwKKwkJCQkJCXN0cnVjdCBuX2hk bGNfYnVmLCBsaXN0X2l0ZW0pOwogCWlmIChidWYpIHsKLQkJbGlzdC0+aGVhZCA9IGJ1Zi0+bGlu azsKLQkJKGxpc3QtPmNvdW50KS0tOworCQlsaXN0X2RlbCgmYnVmLT5saXN0X2l0ZW0pOworCQli dWZfbGlzdC0+Y291bnQtLTsKIAl9Ci0JaWYgKCFsaXN0LT5oZWFkKQotCQlsaXN0LT50YWlsID0g TlVMTDsKLQkKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsaXN0LT5zcGlubG9jayxmbGFncyk7 CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZidWZfbGlzdC0+c3BpbmxvY2ssIGZsYWdzKTsK IAlyZXR1cm4gYnVmOwotCQogfQkvKiBlbmQgb2Ygbl9oZGxjX2J1Zl9nZXQoKSAqLwogCiBzdGF0 aWMgY2hhciBoZGxjX2Jhbm5lcltdIF9faW5pdGRhdGEgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90 dHkvc2VyaWFsL2F0bWVsX3NlcmlhbC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2F0bWVsX3Nlcmlh bC5jCmluZGV4IGQ4MDY2NTdjYTUzZS4uNTZhM2NjNDJhNGIwIDEwMDY0NAotLS0gYS9kcml2ZXJz L3R0eS9zZXJpYWwvYXRtZWxfc2VyaWFsLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2F0bWVs X3NlcmlhbC5jCkBAIC03MzQsNiArNzM0LDExIEBAIHN0YXRpYyB2b2lkIGF0bWVsX2NvbXBsZXRl X3R4X2RtYSh2b2lkICphcmcpCiAJLyogRG8gd2UgcmVhbGx5IG5lZWQgdGhpcz8gKi8KIAlpZiAo IXVhcnRfY2lyY19lbXB0eSh4bWl0KSkKIAkJdGFza2xldF9zY2hlZHVsZSgmYXRtZWxfcG9ydC0+ dGFza2xldCk7CisJZWxzZSBpZiAoKGF0bWVsX3BvcnQtPnJzNDg1LmZsYWdzICYgU0VSX1JTNDg1 X0VOQUJMRUQpICYmCisJCSAhKGF0bWVsX3BvcnQtPnJzNDg1LmZsYWdzICYgU0VSX1JTNDg1X1JY X0RVUklOR19UWCkpIHsKKwkJLyogRE1BIGRvbmUsIHN0b3AgVFgsIHN0YXJ0IFJYIGZvciBSUzQ4 NSAqLworCQlhdG1lbF9zdGFydF9yeChwb3J0KTsKKwl9CiAKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZwb3J0LT5sb2NrLCBmbGFncyk7CiB9CkBAIC04MDYsMTIgKzgxMSw2IEBAIHN0YXRpYyB2 b2lkIGF0bWVsX3R4X2RtYShzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogCQlkZXNjLT5jYWxsYmFj ayA9IGF0bWVsX2NvbXBsZXRlX3R4X2RtYTsKIAkJZGVzYy0+Y2FsbGJhY2tfcGFyYW0gPSBhdG1l bF9wb3J0OwogCQlhdG1lbF9wb3J0LT5jb29raWVfdHggPSBkbWFlbmdpbmVfc3VibWl0KGRlc2Mp OwotCi0JfSBlbHNlIHsKLQkJaWYgKGF0bWVsX3BvcnQtPnJzNDg1LmZsYWdzICYgU0VSX1JTNDg1 X0VOQUJMRUQpIHsKLQkJCS8qIERNQSBkb25lLCBzdG9wIFRYLCBzdGFydCBSWCBmb3IgUlM0ODUg Ki8KLQkJCWF0bWVsX3N0YXJ0X3J4KHBvcnQpOwotCQl9CiAJfQogCiAJaWYgKHVhcnRfY2lyY19j aGFyc19wZW5kaW5nKHhtaXQpIDwgV0FLRVVQX0NIQVJTKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90 dHkvc3lzcnEuYyBiL2RyaXZlcnMvdHR5L3N5c3JxLmMKaW5kZXggMGM3OWY5NTM4M2MwLi40MzE3 YTE5ZDYwYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3N5c3JxLmMKKysrIGIvZHJpdmVycy90 dHkvc3lzcnEuYwpAQCAtOTMzLDggKzkzMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5wdXRf ZGV2aWNlX2lkIHN5c3JxX2lkc1tdID0gewogCXsKIAkJLmZsYWdzID0gSU5QVVRfREVWSUNFX0lE X01BVENIX0VWQklUIHwKIAkJCQlJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfS0VZQklULAotCQkuZXZi aXQgPSB7IEJJVF9NQVNLKEVWX0tFWSkgfSwKLQkJLmtleWJpdCA9IHsgQklUX01BU0soS0VZX0xF RlRBTFQpIH0sCisJCS5ldmJpdCA9IHsgW0JJVF9XT1JEKEVWX0tFWSldID0gQklUX01BU0soRVZf S0VZKSB9LAorCQkua2V5Yml0ID0geyBbQklUX1dPUkQoS0VZX0xFRlRBTFQpXSA9IEJJVF9NQVNL KEtFWV9MRUZUQUxUKSB9LAogCX0sCiAJeyB9LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNi L2NsYXNzL2NkYy1hY20uYyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYwppbmRleCA4Yzc3 OWVlMDQ0ZDguLjkxOWRjNmExYmRmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvY2Rj LWFjbS5jCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYwpAQCAtMTcyMSw2ICsxNzIx LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGFjbV9pZHNbXSA9IHsKIAl7 IFVTQl9ERVZJQ0UoMHgyMGRmLCAweDAwMDEpLCAvKiBTaW10ZWMgRWxlY3Ryb25pY3MgRW50cm9w eSBLZXkgKi8KIAkuZHJpdmVyX2luZm8gPSBRVUlSS19DT05UUk9MX0xJTkVfU1RBVEUsIH0sCiAJ eyBVU0JfREVWSUNFKDB4MjE4NCwgMHgwMDFjKSB9LAkvKiBHVyBJbnN0ZWsgQUZHLTIyMjUgKi8K Kwl7IFVTQl9ERVZJQ0UoMHgyMTg0LCAweDAwMzYpIH0sCS8qIEdXIEluc3RlayBBRkctMTI1ICov CiAJeyBVU0JfREVWSUNFKDB4MjJiOCwgMHg2NDI1KSwgLyogTW90b3JvbGEgTU9UT01BR1ggcGhv bmVzICovCiAJfSwKIAkvKiBNb3Rvcm9sYSBIMjQgSFNQQSBtb2R1bGU6ICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9jb3JlL2NvbmZpZy5jIGIvZHJpdmVycy91c2IvY29yZS9jb25maWcuYwpp bmRleCA4ZGUxNmY5ODJmNTUuLjEzZDhjNjBjMjg2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv Y29yZS9jb25maWcuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2NvbmZpZy5jCkBAIC0yMDUsNiAr MjA1LDE2IEBAIHN0YXRpYyBpbnQgdXNiX3BhcnNlX2VuZHBvaW50KHN0cnVjdCBkZXZpY2UgKmRk ZXYsIGludCBjZmdubywgaW50IGludW0sCiAJaWYgKGlmcC0+ZGVzYy5iTnVtRW5kcG9pbnRzID49 IG51bV9lcCkKIAkJZ290byBza2lwX3RvX25leHRfZW5kcG9pbnRfb3JfaW50ZXJmYWNlX2Rlc2Ny aXB0b3I7CiAKKwkvKiBDaGVjayBmb3IgZHVwbGljYXRlIGVuZHBvaW50IGFkZHJlc3NlcyAqLwor CWZvciAoaSA9IDA7IGkgPCBpZnAtPmRlc2MuYk51bUVuZHBvaW50czsgKytpKSB7CisJCWlmIChp ZnAtPmVuZHBvaW50W2ldLmRlc2MuYkVuZHBvaW50QWRkcmVzcyA9PQorCQkgICAgZC0+YkVuZHBv aW50QWRkcmVzcykgeworCQkJZGV2X3dhcm4oZGRldiwgImNvbmZpZyAlZCBpbnRlcmZhY2UgJWQg YWx0c2V0dGluZyAlZCBoYXMgYSBkdXBsaWNhdGUgZW5kcG9pbnQgd2l0aCBhZGRyZXNzIDB4JVgs IHNraXBwaW5nXG4iLAorCQkJICAgIGNmZ25vLCBpbnVtLCBhc251bSwgZC0+YkVuZHBvaW50QWRk cmVzcyk7CisJCQlnb3RvIHNraXBfdG9fbmV4dF9lbmRwb2ludF9vcl9pbnRlcmZhY2VfZGVzY3Jp cHRvcjsKKwkJfQorCX0KKwogCWVuZHBvaW50ID0gJmlmcC0+ZW5kcG9pbnRbaWZwLT5kZXNjLmJO dW1FbmRwb2ludHNdOwogCSsraWZwLT5kZXNjLmJOdW1FbmRwb2ludHM7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCmluZGV4IDU1 NGNjMjE5YWMzNC4uNjI0Mzc4NDA0YjM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1 Yi5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKQEAgLTEwNiw2ICsxMDYsNyBAQCBFWFBP UlRfU1lNQk9MX0dQTChlaGNpX2NmX3BvcnRfcmVzZXRfcndzZW0pOwogCiBzdGF0aWMgdm9pZCBo dWJfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7CiBzdGF0aWMgaW50IHVzYl9yZXNldF9hbmRf dmVyaWZ5X2RldmljZShzdHJ1Y3QgdXNiX2RldmljZSAqdWRldik7CitzdGF0aWMgaW50IGh1Yl9w b3J0X2Rpc2FibGUoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLCBpbnQgc2V0X3N0YXRl KTsKIAogc3RhdGljIGlubGluZSBjaGFyICpwb3J0c3BlZWQoc3RydWN0IHVzYl9odWIgKmh1Yiwg aW50IHBvcnRzdGF0dXMpCiB7CkBAIC04NzYsODggKzg3Nyw2IEBAIHN0YXRpYyBpbnQgaHViX3Nl dF9wb3J0X2xpbmtfc3RhdGUoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLAogfQogCiAv KgotICogSWYgVVNCIDMuMCBwb3J0cyBhcmUgcGxhY2VkIGludG8gdGhlIERpc2FibGVkIHN0YXRl LCB0aGV5IHdpbGwgbm8gbG9uZ2VyCi0gKiBkZXRlY3QgYW55IGRldmljZSBjb25uZWN0cyBvciBk aXNjb25uZWN0cy4gIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHRoZQotICogVVNCIGNvcmUg d2FudHMsIHNpbmNlIGl0IGV4cGVjdHMgYSBkaXNhYmxlZCBwb3J0IHRvIHByb2R1Y2UgYSBwb3J0 IHN0YXR1cwotICogY2hhbmdlIGV2ZW50IHdoZW4gYSBuZXcgZGV2aWNlIGNvbm5lY3RzLgotICoK LSAqIEluc3RlYWQsIHNldCB0aGUgbGluayBzdGF0ZSB0byBEaXNhYmxlZCwgd2FpdCBmb3IgdGhl IGxpbmsgdG8gc2V0dGxlIGludG8KLSAqIHRoYXQgc3RhdGUsIGNsZWFyIGFueSBjaGFuZ2UgYml0 cywgYW5kIHRoZW4gcHV0IHRoZSBwb3J0IGludG8gdGhlIFJ4RGV0ZWN0Ci0gKiBzdGF0ZS4KLSAq Lwotc3RhdGljIGludCBodWJfdXNiM19wb3J0X2Rpc2FibGUoc3RydWN0IHVzYl9odWIgKmh1Yiwg aW50IHBvcnQxKQotewotCWludCByZXQ7Ci0JaW50IHRvdGFsX3RpbWU7Ci0JdTE2IHBvcnRjaGFu Z2UsIHBvcnRzdGF0dXM7Ci0KLQlpZiAoIWh1Yl9pc19zdXBlcnNwZWVkKGh1Yi0+aGRldikpCi0J CXJldHVybiAtRUlOVkFMOwotCi0JcmV0ID0gaHViX3BvcnRfc3RhdHVzKGh1YiwgcG9ydDEsICZw b3J0c3RhdHVzLCAmcG9ydGNoYW5nZSk7Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0K LQkvKgotCSAqIFVTQiBjb250cm9sbGVyIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gW0FN RF0gRkNIIFVTQiBYSENJCi0JICogQ29udHJvbGxlciBbMTAyMjo3ODE0XSB3aWxsIGhhdmUgc3B1 cmlvdXMgcmVzdWx0IG1ha2luZyB0aGUgZm9sbG93aW5nCi0JICogdXNiIDMuMCBkZXZpY2UgaG90 cGx1Z2dpbmcgcm91dGUgdG8gdGhlIDIuMCByb290IGh1YiBhbmQgcmVjb2duaXplZAotCSAqIGFz IGhpZ2gtc3BlZWQgZGV2aWNlIGlmIHdlIHNldCB0aGUgdXNiIDMuMCBwb3J0IGxpbmsgc3RhdGUg dG8KLQkgKiBEaXNhYmxlZC4gU2luY2UgaXQncyBhbHJlYWR5IGluIFVTQl9TU19QT1JUX0xTX1JY X0RFVEVDVCBzdGF0ZSwgd2UKLQkgKiBjaGVjayB0aGUgc3RhdGUgaGVyZSB0byBhdm9pZCB0aGUg YnVnLgotCSAqLwotCWlmICgocG9ydHN0YXR1cyAmIFVTQl9QT1JUX1NUQVRfTElOS19TVEFURSkg PT0KLQkJCQlVU0JfU1NfUE9SVF9MU19SWF9ERVRFQ1QpIHsKLQkJZGV2X2RiZygmaHViLT5wb3J0 c1twb3J0MSAtIDFdLT5kZXYsCi0JCQkgIk5vdCBkaXNhYmxpbmcgcG9ydDsgbGluayBzdGF0ZSBp cyBSeERldGVjdFxuIik7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0JcmV0ID0gaHViX3NldF9wb3J0 X2xpbmtfc3RhdGUoaHViLCBwb3J0MSwgVVNCX1NTX1BPUlRfTFNfU1NfRElTQUJMRUQpOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQkvKiBXYWl0IGZvciB0aGUgbGluayB0byBlbnRlciB0 aGUgZGlzYWJsZWQgc3RhdGUuICovCi0JZm9yICh0b3RhbF90aW1lID0gMDsgOyB0b3RhbF90aW1l ICs9IEhVQl9ERUJPVU5DRV9TVEVQKSB7Ci0JCXJldCA9IGh1Yl9wb3J0X3N0YXR1cyhodWIsIHBv cnQxLCAmcG9ydHN0YXR1cywgJnBvcnRjaGFuZ2UpOwotCQlpZiAocmV0IDwgMCkKLQkJCXJldHVy biByZXQ7Ci0KLQkJaWYgKChwb3J0c3RhdHVzICYgVVNCX1BPUlRfU1RBVF9MSU5LX1NUQVRFKSA9 PQotCQkJCVVTQl9TU19QT1JUX0xTX1NTX0RJU0FCTEVEKQotCQkJYnJlYWs7Ci0JCWlmICh0b3Rh bF90aW1lID49IEhVQl9ERUJPVU5DRV9USU1FT1VUKQotCQkJYnJlYWs7Ci0JCW1zbGVlcChIVUJf REVCT1VOQ0VfU1RFUCk7Ci0JfQotCWlmICh0b3RhbF90aW1lID49IEhVQl9ERUJPVU5DRV9USU1F T1VUKQotCQlkZXZfd2FybigmaHViLT5wb3J0c1twb3J0MSAtIDFdLT5kZXYsCi0JCQkJIkNvdWxk IG5vdCBkaXNhYmxlIGFmdGVyICVkIG1zXG4iLCB0b3RhbF90aW1lKTsKLQotCXJldHVybiBodWJf c2V0X3BvcnRfbGlua19zdGF0ZShodWIsIHBvcnQxLCBVU0JfU1NfUE9SVF9MU19SWF9ERVRFQ1Qp OwotfQotCi1zdGF0aWMgaW50IGh1Yl9wb3J0X2Rpc2FibGUoc3RydWN0IHVzYl9odWIgKmh1Yiwg aW50IHBvcnQxLCBpbnQgc2V0X3N0YXRlKQotewotCXN0cnVjdCB1c2JfcG9ydCAqcG9ydF9kZXYg PSBodWItPnBvcnRzW3BvcnQxIC0gMV07Ci0Jc3RydWN0IHVzYl9kZXZpY2UgKmhkZXYgPSBodWIt PmhkZXY7Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAocG9ydF9kZXYtPmNoaWxkICYmIHNldF9zdGF0 ZSkKLQkJdXNiX3NldF9kZXZpY2Vfc3RhdGUocG9ydF9kZXYtPmNoaWxkLCBVU0JfU1RBVEVfTk9U QVRUQUNIRUQpOwotCWlmICghaHViLT5lcnJvcikgewotCQlpZiAoaHViX2lzX3N1cGVyc3BlZWQo aHViLT5oZGV2KSkKLQkJCXJldCA9IGh1Yl91c2IzX3BvcnRfZGlzYWJsZShodWIsIHBvcnQxKTsK LQkJZWxzZQotCQkJcmV0ID0gdXNiX2NsZWFyX3BvcnRfZmVhdHVyZShoZGV2LCBwb3J0MSwKLQkJ CQkJVVNCX1BPUlRfRkVBVF9FTkFCTEUpOwotCX0KLQlpZiAocmV0ICYmIHJldCAhPSAtRU5PREVW KQotCQlkZXZfZXJyKCZwb3J0X2Rldi0+ZGV2LCAiY2Fubm90IGRpc2FibGUgKGVyciA9ICVkKVxu IiwgcmV0KTsKLQlyZXR1cm4gcmV0OwotfQotCi0vKgogICogRGlzYWJsZSBhIHBvcnQgYW5kIG1h cmsgYSBsb2dpY2FsIGNvbm5lY3QtY2hhbmdlIGV2ZW50LCBzbyB0aGF0IHNvbWUKICAqIHRpbWUg bGF0ZXIga2h1YmQgd2lsbCBkaXNjb25uZWN0KCkgYW55IGV4aXN0aW5nIHVzYl9kZXZpY2Ugb24g dGhlIHBvcnQKICAqIGFuZCB3aWxsIHJlLWVudW1lcmF0ZSBpZiB0aGVyZSBhY3R1YWxseSBpcyBh IGRldmljZSBhdHRhY2hlZC4KQEAgLTQwMjIsNiArMzk0MSwyNiBAQCB2b2lkIHVzYl91bmxvY2tl ZF9lbmFibGVfbHBtKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQogfQogRVhQT1JUX1NZTUJPTF9H UEwodXNiX3VubG9ja2VkX2VuYWJsZV9scG0pOwogCisvKiB1c2IzIGRldmljZXMgdXNlIFUzIGZv ciBkaXNhYmxlZCwgbWFrZSBzdXJlIHJlbW90ZSB3YWtldXAgaXMgZGlzYWJsZWQgKi8KK3N0YXRp YyB2b2lkIGh1Yl91c2IzX3BvcnRfcHJlcGFyZV9kaXNhYmxlKHN0cnVjdCB1c2JfaHViICpodWIs CisJCQkJCSAgc3RydWN0IHVzYl9wb3J0ICpwb3J0X2RldikKK3sKKwlzdHJ1Y3QgdXNiX2Rldmlj ZSAqdWRldiA9IHBvcnRfZGV2LT5jaGlsZDsKKwlpbnQgcmV0OworCisJaWYgKHVkZXYgJiYgdWRl di0+cG9ydF9pc19zdXNwZW5kZWQgJiYgdWRldi0+ZG9fcmVtb3RlX3dha2V1cCkgeworCQlyZXQg PSBodWJfc2V0X3BvcnRfbGlua19zdGF0ZShodWIsIHBvcnRfZGV2LT5wb3J0bnVtLAorCQkJCQkg ICAgICBVU0JfU1NfUE9SVF9MU19VMCk7CisJCWlmICghcmV0KSB7CisJCQltc2xlZXAoVVNCX1JF U1VNRV9USU1FT1VUKTsKKwkJCXJldCA9IHVzYl9kaXNhYmxlX3JlbW90ZV93YWtldXAodWRldik7 CisJCX0KKwkJaWYgKHJldCkKKwkJCWRldl93YXJuKCZ1ZGV2LT5kZXYsCisJCQkJICJQb3J0IGRp c2FibGU6IGNhbid0IGRpc2FibGUgcmVtb3RlIHdha2VcbiIpOworCQl1ZGV2LT5kb19yZW1vdGVf d2FrZXVwID0gMDsKKwl9Cit9CiAKICNlbHNlCS8qIENPTkZJR19QTSAqLwogCkBAIC00MDI5LDYg KzM5NjgsOSBAQCBFWFBPUlRfU1lNQk9MX0dQTCh1c2JfdW5sb2NrZWRfZW5hYmxlX2xwbSk7CiAj ZGVmaW5lIGh1Yl9yZXN1bWUJCU5VTEwKICNkZWZpbmUgaHViX3Jlc2V0X3Jlc3VtZQlOVUxMCiAK K3N0YXRpYyBpbmxpbmUgdm9pZCBodWJfdXNiM19wb3J0X3ByZXBhcmVfZGlzYWJsZShzdHJ1Y3Qg dXNiX2h1YiAqaHViLAorCQkJCQkJIHN0cnVjdCB1c2JfcG9ydCAqcG9ydF9kZXYpIHsgfQorCiBp bnQgdXNiX2Rpc2FibGVfbHBtKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQogewogCXJldHVybiAw OwpAQCAtNDA2NCw2ICs0MDA2LDM0IEBAIHN0YXRpYyBpbnQgaHViX2hhbmRsZV9yZW1vdGVfd2Fr ZXVwKHN0cnVjdCB1c2JfaHViICpodWIsIHVuc2lnbmVkIGludCBwb3J0LAogCiAjZW5kaWYJLyog Q09ORklHX1BNICovCiAKKy8qCisgKiBVU0ItMyBkb2VzIG5vdCBoYXZlIGEgc2ltaWxhciBsaW5r IHN0YXRlIGFzIFVTQi0yIHRoYXQgd2lsbCBhdm9pZCBuZWdvdGlhdGluZworICogYSBjb25uZWN0 aW9uIHdpdGggYSBwbHVnZ2VkLWluIGNhYmxlIGJ1dCB3aWxsIHNpZ25hbCB0aGUgaG9zdCB3aGVu IHRoZSBjYWJsZQorICogaXMgdW5wbHVnZ2VkLiBEaXNhYmxlIHJlbW90ZSB3YWtlIGFuZCBzZXQg bGluayBzdGF0ZSB0byBVMyBmb3IgVVNCLTMgZGV2aWNlcworICovCitzdGF0aWMgaW50IGh1Yl9w b3J0X2Rpc2FibGUoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLCBpbnQgc2V0X3N0YXRl KQoreworCXN0cnVjdCB1c2JfcG9ydCAqcG9ydF9kZXYgPSBodWItPnBvcnRzW3BvcnQxIC0gMV07 CisJc3RydWN0IHVzYl9kZXZpY2UgKmhkZXYgPSBodWItPmhkZXY7CisJaW50IHJldCA9IDA7CisK KwlpZiAoIWh1Yi0+ZXJyb3IpIHsKKwkJaWYgKGh1Yl9pc19zdXBlcnNwZWVkKGh1Yi0+aGRldikp IHsKKwkJCWh1Yl91c2IzX3BvcnRfcHJlcGFyZV9kaXNhYmxlKGh1YiwgcG9ydF9kZXYpOworCQkJ cmV0ID0gaHViX3NldF9wb3J0X2xpbmtfc3RhdGUoaHViLCBwb3J0X2Rldi0+cG9ydG51bSwKKwkJ CQkJCSAgICAgIFVTQl9TU19QT1JUX0xTX1UzKTsKKwkJfSBlbHNlIHsKKwkJCXJldCA9IHVzYl9j bGVhcl9wb3J0X2ZlYXR1cmUoaGRldiwgcG9ydDEsCisJCQkJCVVTQl9QT1JUX0ZFQVRfRU5BQkxF KTsKKwkJfQorCX0KKwlpZiAocG9ydF9kZXYtPmNoaWxkICYmIHNldF9zdGF0ZSkKKwkJdXNiX3Nl dF9kZXZpY2Vfc3RhdGUocG9ydF9kZXYtPmNoaWxkLCBVU0JfU1RBVEVfTk9UQVRUQUNIRUQpOwor CWlmIChyZXQgJiYgcmV0ICE9IC1FTk9ERVYpCisJCWRldl9lcnIoJnBvcnRfZGV2LT5kZXYsICJj YW5ub3QgZGlzYWJsZSAoZXJyID0gJWQpXG4iLCByZXQpOworCXJldHVybiByZXQ7Cit9CisKIAog LyogVVNCIDIuMCBzcGVjLCA3LjEuNy4zIC8gZmlnIDctMjk6CiAgKgpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvY29yZS9xdWlya3MuYyBiL2RyaXZlcnMvdXNiL2NvcmUvcXVpcmtzLmMKaW5kZXgg NmM3ZTQ3ZjY3ZGQ0Li4zYTAxMGMxOWUwZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUv cXVpcmtzLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9xdWlya3MuYwpAQCAtMzcsNiArMzcsMTAg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHVzYl9xdWlya19saXN0W10gPSB7 CiAJLyogQ0JNIC0gRmxhc2ggZGlzayAqLwogCXsgVVNCX0RFVklDRSgweDAyMDQsIDB4NjAyNSks IC5kcml2ZXJfaW5mbyA9IFVTQl9RVUlSS19SRVNFVF9SRVNVTUUgfSwKIAorCS8qIFdPUkxERSBl YXN5IGtleSAoZWFzeWtleS4yNSkgTUlESSBjb250cm9sbGVyICAqLworCXsgVVNCX0RFVklDRSgw eDAyMTgsIDB4MDQwMSksIC5kcml2ZXJfaW5mbyA9CisJCQlVU0JfUVVJUktfQ09ORklHX0lOVEZf U1RSSU5HUyB9LAorCiAJLyogSFAgNTMwMC81MzcwQyBzY2FubmVyICovCiAJeyBVU0JfREVWSUNF KDB4MDNmMCwgMHgwNzAxKSwgLmRyaXZlcl9pbmZvID0KIAkJCVVTQl9RVUlSS19TVFJJTkdfRkVU Q0hfMjU1IH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL2VwMC5jIGIvZHJpdmVycy91 c2IvZHdjMy9lcDAuYwppbmRleCBiYTM1MjAxZTE5ZmUuLjA5NmM5ZTkxNzI0ZSAxMDA2NDQKLS0t IGEvZHJpdmVycy91c2IvZHdjMy9lcDAuYworKysgYi9kcml2ZXJzL3VzYi9kd2MzL2VwMC5jCkBA IC01NCwyMCArNTQsMTMgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmR3YzNfZXAwX3N0YXRlX3N0cmlu ZyhlbnVtIGR3YzNfZXAwX3N0YXRlIHN0YXRlKQogCX0KIH0KIAotc3RhdGljIGludCBkd2MzX2Vw MF9zdGFydF90cmFucyhzdHJ1Y3QgZHdjMyAqZHdjLCB1OCBlcG51bSwgZG1hX2FkZHJfdCBidWZf ZG1hLAotCQl1MzIgbGVuLCB1MzIgdHlwZSkKK3N0YXRpYyB2b2lkIGR3YzNfZXAwX3ByZXBhcmVf b25lX3RyYihzdHJ1Y3QgZHdjMyAqZHdjLCB1OCBlcG51bSwKKwkJZG1hX2FkZHJfdCBidWZfZG1h LCB1MzIgbGVuLCB1MzIgdHlwZSkKIHsKLQlzdHJ1Y3QgZHdjM19nYWRnZXRfZXBfY21kX3BhcmFt cyBwYXJhbXM7CiAJc3RydWN0IGR3YzNfdHJiCQkJKnRyYjsKIAlzdHJ1Y3QgZHdjM19lcAkJCSpk ZXA7CiAKLQlpbnQJCQkJcmV0OwotCiAJZGVwID0gZHdjLT5lcHNbZXBudW1dOwotCWlmIChkZXAt PmZsYWdzICYgRFdDM19FUF9CVVNZKSB7Ci0JCWRldl92ZGJnKGR3Yy0+ZGV2LCAiJXM6IHN0aWxs IGJ1c3lcbiIsIGRlcC0+bmFtZSk7Ci0JCXJldHVybiAwOwotCX0KIAogCXRyYiA9IGR3Yy0+ZXAw X3RyYjsKIApAQCAtODAsNiArNzMsMTcgQEAgc3RhdGljIGludCBkd2MzX2VwMF9zdGFydF90cmFu cyhzdHJ1Y3QgZHdjMyAqZHdjLCB1OCBlcG51bSwgZG1hX2FkZHJfdCBidWZfZG1hLAogCQkJfCBE V0MzX1RSQl9DVFJMX0xTVAogCQkJfCBEV0MzX1RSQl9DVFJMX0lPQwogCQkJfCBEV0MzX1RSQl9D VFJMX0lTUF9JTUkpOworfQorCitzdGF0aWMgaW50IGR3YzNfZXAwX3N0YXJ0X3RyYW5zKHN0cnVj dCBkd2MzICpkd2MsIHU4IGVwbnVtKQoreworCXN0cnVjdCBkd2MzX2dhZGdldF9lcF9jbWRfcGFy YW1zIHBhcmFtczsKKwlzdHJ1Y3QgZHdjM19lcAkJCSpkZXA7CisJaW50CQkJCXJldDsKKworCWRl cCA9IGR3Yy0+ZXBzW2VwbnVtXTsKKwlpZiAoZGVwLT5mbGFncyAmIERXQzNfRVBfQlVTWSkKKwkJ cmV0dXJuIDA7CiAKIAltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOwogCXBhcmFt cy5wYXJhbTAgPSB1cHBlcl8zMl9iaXRzKGR3Yy0+ZXAwX3RyYl9hZGRyKTsKQEAgLTI4MCw4ICsy ODQsOSBAQCB2b2lkIGR3YzNfZXAwX291dF9zdGFydChzdHJ1Y3QgZHdjMyAqZHdjKQogewogCWlu dAkJCQlyZXQ7CiAKLQlyZXQgPSBkd2MzX2VwMF9zdGFydF90cmFucyhkd2MsIDAsIGR3Yy0+Y3Ry bF9yZXFfYWRkciwgOCwKKwlkd2MzX2VwMF9wcmVwYXJlX29uZV90cmIoZHdjLCAwLCBkd2MtPmN0 cmxfcmVxX2FkZHIsIDgsCiAJCQlEV0MzX1RSQkNUTF9DT05UUk9MX1NFVFVQKTsKKwlyZXQgPSBk d2MzX2VwMF9zdGFydF90cmFucyhkd2MsIDApOwogCVdBUk5fT04ocmV0IDwgMCk7CiB9CiAKQEAg LTg5MCw5ICs4OTUsMTAgQEAgc3RhdGljIHZvaWQgX19kd2MzX2VwMF9kb19jb250cm9sX2RhdGEo c3RydWN0IGR3YzMgKmR3YywKIAlyZXEtPmRpcmVjdGlvbiA9ICEhZGVwLT5udW1iZXI7CiAKIAlp ZiAocmVxLT5yZXF1ZXN0Lmxlbmd0aCA9PSAwKSB7Ci0JCXJldCA9IGR3YzNfZXAwX3N0YXJ0X3Ry YW5zKGR3YywgZGVwLT5udW1iZXIsCisJCWR3YzNfZXAwX3ByZXBhcmVfb25lX3RyYihkd2MsIGRl cC0+bnVtYmVyLAogCQkJCWR3Yy0+Y3RybF9yZXFfYWRkciwgMCwKIAkJCQlEV0MzX1RSQkNUTF9D T05UUk9MX0RBVEEpOworCQlyZXQgPSBkd2MzX2VwMF9zdGFydF90cmFucyhkd2MsIGRlcC0+bnVt YmVyKTsKIAl9IGVsc2UgaWYgKCFJU19BTElHTkVEKHJlcS0+cmVxdWVzdC5sZW5ndGgsIGRlcC0+ ZW5kcG9pbnQubWF4cGFja2V0KQogCQkJJiYgKGRlcC0+bnVtYmVyID09IDApKSB7CiAJCXUzMgl0 cmFuc2Zlcl9zaXplOwpAQCAtOTIwLDkgKzkyNiwxMCBAQCBzdGF0aWMgdm9pZCBfX2R3YzNfZXAw X2RvX2NvbnRyb2xfZGF0YShzdHJ1Y3QgZHdjMyAqZHdjLAogCQkgKiBEV0MzX0VQMF9CT1VOQ0Vf U0laRSB3ZSB3aWxsIG5lZWQgdHdvIGNoYWluZWQKIAkJICogVFJCcyB0byBoYW5kbGUgdGhlIHRy YW5zZmVyLgogCQkgKi8KLQkJcmV0ID0gZHdjM19lcDBfc3RhcnRfdHJhbnMoZHdjLCBkZXAtPm51 bWJlciwKKwkJZHdjM19lcDBfcHJlcGFyZV9vbmVfdHJiKGR3YywgZGVwLT5udW1iZXIsCiAJCQkJ ZHdjLT5lcDBfYm91bmNlX2FkZHIsIHRyYW5zZmVyX3NpemUsCiAJCQkJRFdDM19UUkJDVExfQ09O VFJPTF9EQVRBKTsKKwkJcmV0ID0gZHdjM19lcDBfc3RhcnRfdHJhbnMoZHdjLCBkZXAtPm51bWJl cik7CiAJfSBlbHNlIHsKIAkJcmV0ID0gdXNiX2dhZGdldF9tYXBfcmVxdWVzdCgmZHdjLT5nYWRn ZXQsICZyZXEtPnJlcXVlc3QsCiAJCQkJZGVwLT5udW1iZXIpOwpAQCAtOTMxLDggKzkzOCw5IEBA IHN0YXRpYyB2b2lkIF9fZHdjM19lcDBfZG9fY29udHJvbF9kYXRhKHN0cnVjdCBkd2MzICpkd2Ms CiAJCQlyZXR1cm47CiAJCX0KIAotCQlyZXQgPSBkd2MzX2VwMF9zdGFydF90cmFucyhkd2MsIGRl cC0+bnVtYmVyLCByZXEtPnJlcXVlc3QuZG1hLAorCQlkd2MzX2VwMF9wcmVwYXJlX29uZV90cmIo ZHdjLCBkZXAtPm51bWJlciwgcmVxLT5yZXF1ZXN0LmRtYSwKIAkJCQlyZXEtPnJlcXVlc3QubGVu Z3RoLCBEV0MzX1RSQkNUTF9DT05UUk9MX0RBVEEpOworCQlyZXQgPSBkd2MzX2VwMF9zdGFydF90 cmFucyhkd2MsIGRlcC0+bnVtYmVyKTsKIAl9CiAKIAlXQVJOX09OKHJldCA8IDApOwpAQCAtOTQ2 LDggKzk1NCw5IEBAIHN0YXRpYyBpbnQgZHdjM19lcDBfc3RhcnRfY29udHJvbF9zdGF0dXMoc3Ry dWN0IGR3YzNfZXAgKmRlcCkKIAl0eXBlID0gZHdjLT50aHJlZV9zdGFnZV9zZXR1cCA/IERXQzNf VFJCQ1RMX0NPTlRST0xfU1RBVFVTMwogCQk6IERXQzNfVFJCQ1RMX0NPTlRST0xfU1RBVFVTMjsK IAotCXJldHVybiBkd2MzX2VwMF9zdGFydF90cmFucyhkd2MsIGRlcC0+bnVtYmVyLAorCWR3YzNf ZXAwX3ByZXBhcmVfb25lX3RyYihkd2MsIGRlcC0+bnVtYmVyLAogCQkJZHdjLT5jdHJsX3JlcV9h ZGRyLCAwLCB0eXBlKTsKKwlyZXR1cm4gZHdjM19lcDBfc3RhcnRfdHJhbnMoZHdjLCBkZXAtPm51 bWJlcik7CiB9CiAKIHN0YXRpYyB2b2lkIF9fZHdjM19lcDBfZG9fY29udHJvbF9zdGF0dXMoc3Ry dWN0IGR3YzMgKmR3Yywgc3RydWN0IGR3YzNfZXAgKmRlcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2R3YzMvZ2FkZ2V0LmMgYi9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jCmluZGV4IGVkZTI4 MTQ3MDJjNC4uZTgxY2RhMTEyOWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MzL2dhZGdl dC5jCisrKyBiL2RyaXZlcnMvdXNiL2R3YzMvZ2FkZ2V0LmMKQEAgLTI1NywxMSArMjU3LDExIEBA IHZvaWQgZHdjM19nYWRnZXRfZ2l2ZWJhY2soc3RydWN0IGR3YzNfZXAgKmRlcCwgc3RydWN0IGR3 YzNfcmVxdWVzdCAqcmVxLAogCWlmIChyZXEtPnJlcXVlc3Quc3RhdHVzID09IC1FSU5QUk9HUkVT UykKIAkJcmVxLT5yZXF1ZXN0LnN0YXR1cyA9IHN0YXR1czsKIAotCWlmIChkd2MtPmVwMF9ib3Vu Y2VkICYmIGRlcC0+bnVtYmVyID09IDApCisJaWYgKGR3Yy0+ZXAwX2JvdW5jZWQgJiYgZGVwLT5u dW1iZXIgPD0gMSkKIAkJZHdjLT5lcDBfYm91bmNlZCA9IGZhbHNlOwotCWVsc2UKLQkJdXNiX2dh ZGdldF91bm1hcF9yZXF1ZXN0KCZkd2MtPmdhZGdldCwgJnJlcS0+cmVxdWVzdCwKLQkJCQlyZXEt PmRpcmVjdGlvbik7CisKKwl1c2JfZ2FkZ2V0X3VubWFwX3JlcXVlc3QoJmR3Yy0+Z2FkZ2V0LAor CQkJJnJlcS0+cmVxdWVzdCwgcmVxLT5kaXJlY3Rpb24pOwogCiAJZGV2X2RiZyhkd2MtPmRldiwg InJlcXVlc3QgJXAgZnJvbSAlcyBjb21wbGV0ZWQgJWQvJWQgPT09PiAlZFxuIiwKIAkJCXJlcSwg ZGVwLT5uYW1lLCByZXEtPnJlcXVlc3QuYWN0dWFsLApAQCAtODYzLDYgKzg2Myw4IEBAIHN0YXRp YyB2b2lkIGR3YzNfcHJlcGFyZV9vbmVfdHJiKHN0cnVjdCBkd2MzX2VwICpkZXAsCiB7CiAJc3Ry dWN0IGR3YzMJCSpkd2MgPSBkZXAtPmR3YzsKIAlzdHJ1Y3QgZHdjM190cmIJCSp0cmI7CisJc3Ry dWN0IHVzYl9nYWRnZXQJKmdhZGdldCA9ICZkd2MtPmdhZGdldDsKKwllbnVtIHVzYl9kZXZpY2Vf c3BlZWQJc3BlZWQgPSBnYWRnZXQtPnNwZWVkOwogCiAJZGV2X3ZkYmcoZHdjLT5kZXYsICIlczog cmVxICVwIGRtYSAlMDhsbHggbGVuZ3RoICVkJXMlc1xuIiwKIAkJCWRlcC0+bmFtZSwgcmVxLCAo dW5zaWduZWQgbG9uZyBsb25nKSBkbWEsCkBAIC04OTUsMTAgKzg5NywxNiBAQCBzdGF0aWMgdm9p ZCBkd2MzX3ByZXBhcmVfb25lX3RyYihzdHJ1Y3QgZHdjM19lcCAqZGVwLAogCQlicmVhazsKIAog CWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSVNPQzoKLQkJaWYgKCFub2RlKQorCQlpZiAoIW5vZGUp IHsKIAkJCXRyYi0+Y3RybCA9IERXQzNfVFJCQ1RMX0lTT0NIUk9OT1VTX0ZJUlNUOwotCQllbHNl CisKKwkJCWlmIChzcGVlZCA9PSBVU0JfU1BFRURfSElHSCkgeworCQkJCXN0cnVjdCB1c2JfZXAg KmVwID0gJmRlcC0+ZW5kcG9pbnQ7CisJCQkJdHJiLT5zaXplIHw9IERXQzNfVFJCX1NJWkVfUENN MShlcC0+bXVsdCAtIDEpOworCQkJfQorCQl9IGVsc2UgewogCQkJdHJiLT5jdHJsID0gRFdDM19U UkJDVExfSVNPQ0hST05PVVM7CisJCX0KIAkJYnJlYWs7CiAKIAljYXNlIFVTQl9FTkRQT0lOVF9Y RkVSX0JVTEs6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMgYi9k cml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKaW5kZXggOTUzNmI2YWJmNjViLi5iOGE5NjFi YTFkMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYworKysgYi9k cml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKQEAgLTE0MywxMSArMTQzLDE2IEBAIGludCBj b25maWdfZXBfYnlfc3BlZWQoc3RydWN0IHVzYl9nYWRnZXQgKmcsCiAKIGVwX2ZvdW5kOgogCS8q IGNvbW1pdCByZXN1bHRzICovCi0JX2VwLT5tYXhwYWNrZXQgPSB1c2JfZW5kcG9pbnRfbWF4cChj aG9zZW5fZGVzYyk7CisJX2VwLT5tYXhwYWNrZXQgPSB1c2JfZW5kcG9pbnRfbWF4cChjaG9zZW5f ZGVzYykgJiAweDdmZjsKIAlfZXAtPmRlc2MgPSBjaG9zZW5fZGVzYzsKIAlfZXAtPmNvbXBfZGVz YyA9IE5VTEw7CiAJX2VwLT5tYXhidXJzdCA9IDA7Ci0JX2VwLT5tdWx0ID0gMDsKKwlfZXAtPm11 bHQgPSAxOworCisJaWYgKGctPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIICYmICh1c2JfZW5kcG9p bnRfeGZlcl9pc29jKF9lcC0+ZGVzYykgfHwKKwkJCQl1c2JfZW5kcG9pbnRfeGZlcl9pbnQoX2Vw LT5kZXNjKSkpCisJCV9lcC0+bXVsdCA9IHVzYl9lbmRwb2ludF9tYXhwX211bHQoX2VwLT5kZXNj KTsKKwogCWlmICghd2FudF9jb21wX2Rlc2MpCiAJCXJldHVybiAwOwogCkBAIC0xNjQsNyArMTY5 LDcgQEAgZXBfZm91bmQ6CiAJCXN3aXRjaCAodXNiX2VuZHBvaW50X3R5cGUoX2VwLT5kZXNjKSkg ewogCQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lTT0M6CiAJCQkvKiBtdWx0OiBiaXRzIDE6MCBv ZiBibUF0dHJpYnV0ZXMgKi8KLQkJCV9lcC0+bXVsdCA9IGNvbXBfZGVzYy0+Ym1BdHRyaWJ1dGVz ICYgMHgzOworCQkJX2VwLT5tdWx0ID0gKGNvbXBfZGVzYy0+Ym1BdHRyaWJ1dGVzICYgMHgzKSAr IDE7CiAJCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfQlVMSzoKIAkJY2FzZSBVU0JfRU5EUE9JTlRf WEZFUl9JTlQ6CiAJCQlfZXAtPm1heGJ1cnN0ID0gY29tcF9kZXNjLT5iTWF4QnVyc3QgKyAxOwpA QCAtMTUxNiw5ICsxNTIxLDcgQEAgY29tcG9zaXRlX3NldHVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpn YWRnZXQsIGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpCiAJCXZhbHVlID0gbWlu KHdfbGVuZ3RoLCAodTE2KSAxKTsKIAkJYnJlYWs7CiAKLQkvKiBmdW5jdGlvbiBkcml2ZXJzIG11 c3QgaGFuZGxlIGdldC9zZXQgYWx0c2V0dGluZzsgaWYgdGhlcmUncwotCSAqIG5vIGdldCgpIG1l dGhvZCwgd2Uga25vdyBvbmx5IGFsdHNldHRpbmcgemVybyB3b3Jrcy4KLQkgKi8KKwkvKiBmdW5j dGlvbiBkcml2ZXJzIG11c3QgaGFuZGxlIGdldC9zZXQgYWx0c2V0dGluZyAqLwogCWNhc2UgVVNC X1JFUV9TRVRfSU5URVJGQUNFOgogCQlpZiAoY3RybC0+YlJlcXVlc3RUeXBlICE9IFVTQl9SRUNJ UF9JTlRFUkZBQ0UpCiAJCQlnb3RvIHVua25vd247CkBAIC0xNTI3LDcgKzE1MzAsMTMgQEAgY29t cG9zaXRlX3NldHVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsIGNvbnN0IHN0cnVjdCB1c2Jf Y3RybHJlcXVlc3QgKmN0cmwpCiAJCWYgPSBjZGV2LT5jb25maWctPmludGVyZmFjZVtpbnRmXTsK IAkJaWYgKCFmKQogCQkJYnJlYWs7Ci0JCWlmICh3X3ZhbHVlICYmICFmLT5zZXRfYWx0KQorCisJ CS8qCisJCSAqIElmIHRoZXJlJ3Mgbm8gZ2V0X2FsdCgpIG1ldGhvZCwgd2Uga25vdyBvbmx5IGFs dHNldHRpbmcgemVybworCQkgKiB3b3Jrcy4gVGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBpZiBz ZXRfYWx0KCkgaXMgbm90IE5VTEwKKwkJICogYXMgd2UgY2hlY2sgdGhpcyBpbiB1c2JfYWRkX2Z1 bmN0aW9uKCkuCisJCSAqLworCQlpZiAod192YWx1ZSAmJiAhZi0+Z2V0X2FsdCkKIAkJCWJyZWFr OwogCQl2YWx1ZSA9IGYtPnNldF9hbHQoZiwgd19pbmRleCwgd192YWx1ZSk7CiAJCWlmICh2YWx1 ZSA9PSBVU0JfR0FER0VUX0RFTEFZRURfU1RBVFVTKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9nYWRnZXQvZHVtbXlfaGNkLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZHVtbXlfaGNkLmMKaW5k ZXggMmI1NDk1NWQzMTY2Li5iMGRhOTU1MmIzYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dh ZGdldC9kdW1teV9oY2QuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZHVtbXlfaGNkLmMKQEAg LTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgdm9pZCBudWtlKHN0cnVjdCBkdW1teSAqZHVtLCBzdHJ1 Y3QgZHVtbXlfZXAgKmVwKQogLyogY2FsbGVyIG11c3QgaG9sZCBsb2NrICovCiBzdGF0aWMgdm9p ZCBzdG9wX2FjdGl2aXR5KHN0cnVjdCBkdW1teSAqZHVtKQogewotCXN0cnVjdCBkdW1teV9lcAkq ZXA7CisJaW50IGk7CiAKIAkvKiBwcmV2ZW50IGFueSBtb3JlIHJlcXVlc3RzICovCiAJZHVtLT5h ZGRyZXNzID0gMDsKQEAgLTI3NCw4ICsyNzQsOCBAQCBzdGF0aWMgdm9pZCBzdG9wX2FjdGl2aXR5 KHN0cnVjdCBkdW1teSAqZHVtKQogCS8qIFRoZSB0aW1lciBpcyBsZWZ0IHJ1bm5pbmcgc28gdGhh dCBvdXRzdGFuZGluZyBVUkJzIGNhbiBmYWlsICovCiAKIAkvKiBudWtlIGFueSBwZW5kaW5nIHJl cXVlc3RzIGZpcnN0LCBzbyBkcml2ZXIgaS9vIGlzIHF1aWVzY2VkICovCi0JbGlzdF9mb3JfZWFj aF9lbnRyeShlcCwgJmR1bS0+Z2FkZ2V0LmVwX2xpc3QsIGVwLmVwX2xpc3QpCi0JCW51a2UoZHVt LCBlcCk7CisJZm9yIChpID0gMDsgaSA8IERVTU1ZX0VORFBPSU5UUzsgKytpKQorCQludWtlKGR1 bSwgJmR1bS0+ZXBbaV0pOwogCiAJLyogZHJpdmVyIG5vdyBkb2VzIGFueSBub24tdXNiIHF1aWVz Y2luZyBuZWNlc3NhcnkgKi8KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9pbm9k ZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2lub2RlLmMKaW5kZXggMWNlYWYwZTZhODU5Li5hYzNj OTFjN2U2MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9pbm9kZS5jCisrKyBiL2Ry aXZlcnMvdXNiL2dhZGdldC9pbm9kZS5jCkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBlcDBfd3JpdGUg KHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9m Zl90ICpwdHIpCiAJLyogZGF0YSBhbmQvb3Igc3RhdHVzIHN0YWdlIGZvciBjb250cm9sIHJlcXVl c3QgKi8KIAl9IGVsc2UgaWYgKGRldi0+c3RhdGUgPT0gU1RBVEVfREVWX1NFVFVQKSB7CiAKLQkJ LyogSU4gREFUQStTVEFUVVMgY2FsbGVyIG1ha2VzIGxlbiA8PSB3TGVuZ3RoICovCisJCWxlbiA9 IG1pbl90KHNpemVfdCwgbGVuLCBkZXYtPnNldHVwX3dMZW5ndGgpOwogCQlpZiAoZGV2LT5zZXR1 cF9pbikgewogCQkJcmV0dmFsID0gc2V0dXBfcmVxIChkZXYtPmdhZGdldC0+ZXAwLCBkZXYtPnJl cSwgbGVuKTsKIAkJCWlmIChyZXR2YWwgPT0gMCkgewpAQCAtMTg0MiwxMCArMTg0MiwxMiBAQCBz dGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyIHByb2JlX2RyaXZlciA9IHsKICAqIHN1Y2gg YXMgY29uZmlndXJhdGlvbiBub3RpZmljYXRpb25zLgogICovCiAKLXN0YXRpYyBpbnQgaXNfdmFs aWRfY29uZmlnIChzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcpCitzdGF0aWMg aW50IGlzX3ZhbGlkX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcs CisJCXVuc2lnbmVkIGludCB0b3RhbCkKIHsKIAlyZXR1cm4gY29uZmlnLT5iRGVzY3JpcHRvclR5 cGUgPT0gVVNCX0RUX0NPTkZJRwogCQkmJiBjb25maWctPmJMZW5ndGggPT0gVVNCX0RUX0NPTkZJ R19TSVpFCisJCSYmIHRvdGFsID49IFVTQl9EVF9DT05GSUdfU0laRQogCQkmJiBjb25maWctPmJD b25maWd1cmF0aW9uVmFsdWUgIT0gMAogCQkmJiAoY29uZmlnLT5ibUF0dHJpYnV0ZXMgJiBVU0Jf Q09ORklHX0FUVF9PTkUpICE9IDAKIAkJJiYgKGNvbmZpZy0+Ym1BdHRyaWJ1dGVzICYgVVNCX0NP TkZJR19BVFRfV0FLRVVQKSA9PSAwOwpAQCAtMTg2Miw3ICsxODY0LDggQEAgZGV2X2NvbmZpZyAo c3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2Zm X3QgKnB0cikKIAl1MzIJCQl0YWc7CiAJY2hhcgkJCSprYnVmOwogCi0JaWYgKGxlbiA8IChVU0Jf RFRfQ09ORklHX1NJWkUgKyBVU0JfRFRfREVWSUNFX1NJWkUgKyA0KSkKKwlpZiAoKGxlbiA8IChV U0JfRFRfQ09ORklHX1NJWkUgKyBVU0JfRFRfREVWSUNFX1NJWkUgKyA0KSkgfHwKKwkgICAgKGxl biA+IFBBR0VfU0laRSAqIDQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIHdlIG1pZ2h0IG5l ZWQgdG8gY2hhbmdlIG1lc3NhZ2UgZm9ybWF0IHNvbWVkYXkgKi8KQEAgLTE4ODYsNyArMTg4OSw4 IEBAIGRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwg c2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpCiAJLyogZnVsbCBvciBsb3cgc3BlZWQgY29uZmlnICov CiAJZGV2LT5jb25maWcgPSAodm9pZCAqKSBrYnVmOwogCXRvdGFsID0gbGUxNl90b19jcHUoZGV2 LT5jb25maWctPndUb3RhbExlbmd0aCk7Ci0JaWYgKCFpc192YWxpZF9jb25maWcgKGRldi0+Y29u ZmlnKSB8fCB0b3RhbCA+PSBsZW5ndGgpCisJaWYgKCFpc192YWxpZF9jb25maWcoZGV2LT5jb25m aWcsIHRvdGFsKSB8fAorCQkJdG90YWwgPiBsZW5ndGggLSBVU0JfRFRfREVWSUNFX1NJWkUpCiAJ CWdvdG8gZmFpbDsKIAlrYnVmICs9IHRvdGFsOwogCWxlbmd0aCAtPSB0b3RhbDsKQEAgLTE4OTUs MTAgKzE4OTksMTMgQEAgZGV2X2NvbmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9f dXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cikKIAlpZiAoa2J1ZiBbMV0gPT0gVVNC X0RUX0NPTkZJRykgewogCQlkZXYtPmhzX2NvbmZpZyA9ICh2b2lkICopIGtidWY7CiAJCXRvdGFs ID0gbGUxNl90b19jcHUoZGV2LT5oc19jb25maWctPndUb3RhbExlbmd0aCk7Ci0JCWlmICghaXNf dmFsaWRfY29uZmlnIChkZXYtPmhzX2NvbmZpZykgfHwgdG90YWwgPj0gbGVuZ3RoKQorCQlpZiAo IWlzX3ZhbGlkX2NvbmZpZyhkZXYtPmhzX2NvbmZpZywgdG90YWwpIHx8CisJCQkJdG90YWwgPiBs ZW5ndGggLSBVU0JfRFRfREVWSUNFX1NJWkUpCiAJCQlnb3RvIGZhaWw7CiAJCWtidWYgKz0gdG90 YWw7CiAJCWxlbmd0aCAtPSB0b3RhbDsKKwl9IGVsc2UgeworCQlkZXYtPmhzX2NvbmZpZyA9IE5V TEw7CiAJfQogCiAJLyogY291bGQgc3VwcG9ydCBtdWx0aXBsZSBjb25maWdzLCB1c2luZyBhbm90 aGVyIGVuY29kaW5nISAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3V2Y192aWRl by5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3V2Y192aWRlby5jCmluZGV4IDcxZTg5NmQ0YzVhZS4u NDNlOGM2NWZkOWVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvdXZjX3ZpZGVvLmMK KysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3V2Y192aWRlby5jCkBAIC0yNDAsNyArMjQwLDcgQEAg dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKQogCiAJcmVx X3NpemUgPSB2aWRlby0+ZXAtPm1heHBhY2tldAogCQkgKiBtYXhfdCh1bnNpZ25lZCBpbnQsIHZp ZGVvLT5lcC0+bWF4YnVyc3QsIDEpCi0JCSAqICh2aWRlby0+ZXAtPm11bHQgKyAxKTsKKwkJICog KHZpZGVvLT5lcC0+bXVsdCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgVVZDX05VTV9SRVFVRVNUUzsg KytpKSB7CiAJCXZpZGVvLT5yZXFfYnVmZmVyW2ldID0ga21hbGxvYyhyZXFfc2l6ZSwgR0ZQX0tF Uk5FTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktcGNpLmMgYi9kcml2ZXJz L3VzYi9ob3N0L3VoY2ktcGNpLmMKaW5kZXggOTQwMzA0YzMzMjI0Li4wMjI2MGNmZGVkYjEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1wY2kuYworKysgYi9kcml2ZXJzL3VzYi9o b3N0L3VoY2ktcGNpLmMKQEAgLTEyOSw2ICsxMjksMTAgQEAgc3RhdGljIGludCB1aGNpX3BjaV9p bml0KHN0cnVjdCB1c2JfaGNkICpoY2QpCiAJaWYgKHRvX3BjaV9kZXYodWhjaV9kZXYodWhjaSkp LT52ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9IUCkKIAkJdWhjaS0+d2FpdF9mb3JfaHAgPSAxOwog CisJLyogSW50ZWwgY29udHJvbGxlcnMgdXNlIG5vbi1QTUUgd2FrZXVwIHNpZ25hbGxpbmcgKi8K KwlpZiAodG9fcGNpX2Rldih1aGNpX2Rldih1aGNpKSktPnZlbmRvciA9PSBQQ0lfVkVORE9SX0lE X0lOVEVMKQorCQlkZXZpY2Vfc2V0X3J1bl93YWtlKHVoY2lfZGV2KHVoY2kpLCAxKTsKKwogCS8q IFNldCB1cCBwb2ludGVycyB0byBQQ0ktc3BlY2lmaWMgZnVuY3Rpb25zICovCiAJdWhjaS0+cmVz ZXRfaGMgPSB1aGNpX3BjaV9yZXNldF9oYzsKIAl1aGNpLT5jaGVja19hbmRfcmVzZXRfaGMgPSB1 aGNpX3BjaV9jaGVja19hbmRfcmVzZXRfaGM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0 L3hoY2ktbWVtLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktbWVtLmMKaW5kZXggZTQ2YzNiMTQx NGI5Li4wMzMzY2NjMjdiMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tZW0u YworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktbWVtLmMKQEAgLTk2NSw2ICs5NjUsNDAgQEAg dm9pZCB4aGNpX2ZyZWVfdmlydF9kZXZpY2Uoc3RydWN0IHhoY2lfaGNkICp4aGNpLCBpbnQgc2xv dF9pZCkKIAl4aGNpLT5kZXZzW3Nsb3RfaWRdID0gTlVMTDsKIH0KIAorLyoKKyAqIEZyZWUgYSB2 aXJ0X2RldmljZSBzdHJ1Y3R1cmUuCisgKiBJZiB0aGUgdmlydF9kZXZpY2UgYWRkZWQgYSB0dF9p bmZvIChhIGh1YikgYW5kIGhhcyBjaGlsZHJlbiBwb2ludGluZyB0bworICogdGhhdCB0dF9pbmZv LCB0aGVuIGZyZWUgdGhlIGNoaWxkIGZpcnN0LiBSZWN1cnNpdmUuCisgKiBXZSBjYW4ndCByZWx5 IG9uIHVkZXYgYXQgdGhpcyBwb2ludCB0byBmaW5kIGNoaWxkLXBhcmVudCByZWxhdGlvbnNoaXBz LgorICovCit2b2lkIHhoY2lfZnJlZV92aXJ0X2RldmljZXNfZGVwdGhfZmlyc3Qoc3RydWN0IHho Y2lfaGNkICp4aGNpLCBpbnQgc2xvdF9pZCkKK3sKKwlzdHJ1Y3QgeGhjaV92aXJ0X2RldmljZSAq dmRldjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICp0dF9saXN0X2hlYWQ7CisJc3RydWN0IHhoY2lfdHRf YndfaW5mbyAqdHRfaW5mbywgKm5leHQ7CisJaW50IGk7CisKKwl2ZGV2ID0geGhjaS0+ZGV2c1tz bG90X2lkXTsKKwlpZiAoIXZkZXYpCisJCXJldHVybjsKKworCXR0X2xpc3RfaGVhZCA9ICYoeGhj aS0+cmhfYndbdmRldi0+cmVhbF9wb3J0IC0gMV0udHRzKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUodHRfaW5mbywgbmV4dCwgdHRfbGlzdF9oZWFkLCB0dF9saXN0KSB7CisJCS8qIGlzIHRo aXMgYSBodWIgZGV2aWNlIHRoYXQgYWRkZWQgYSB0dF9pbmZvIHRvIHRoZSB0dHMgbGlzdCAqLwor CQlpZiAodHRfaW5mby0+c2xvdF9pZCA9PSBzbG90X2lkKSB7CisJCQkvKiBhcmUgYW55IGRldmlj ZXMgdXNpbmcgdGhpcyB0dF9pbmZvPyAqLworCQkJZm9yIChpID0gMTsgaSA8IEhDU19NQVhfU0xP VFMoeGhjaS0+aGNzX3BhcmFtczEpOyBpKyspIHsKKwkJCQl2ZGV2ID0geGhjaS0+ZGV2c1tpXTsK KwkJCQlpZiAodmRldiAmJiAodmRldi0+dHRfaW5mbyA9PSB0dF9pbmZvKSkKKwkJCQkJeGhjaV9m cmVlX3ZpcnRfZGV2aWNlc19kZXB0aF9maXJzdCgKKwkJCQkJCXhoY2ksIGkpOworCQkJfQorCQl9 CisJfQorCS8qIHdlIGFyZSBub3cgYXQgYSBsZWFmIGRldmljZSAqLworCXhoY2lfZnJlZV92aXJ0 X2RldmljZSh4aGNpLCBzbG90X2lkKTsKK30KKwogaW50IHhoY2lfYWxsb2NfdmlydF9kZXZpY2Uo c3RydWN0IHhoY2lfaGNkICp4aGNpLCBpbnQgc2xvdF9pZCwKIAkJc3RydWN0IHVzYl9kZXZpY2Ug KnVkZXYsIGdmcF90IGZsYWdzKQogewpAQCAtMTgyOCw4ICsxODYyLDggQEAgdm9pZCB4aGNpX21l bV9jbGVhbnVwKHN0cnVjdCB4aGNpX2hjZCAqeGhjaSkKIAkJfQogCX0KIAotCWZvciAoaSA9IDE7 IGkgPCBNQVhfSENfU0xPVFM7ICsraSkKLQkJeGhjaV9mcmVlX3ZpcnRfZGV2aWNlKHhoY2ksIGkp OworCWZvciAoaSA9IEhDU19NQVhfU0xPVFMoeGhjaS0+aGNzX3BhcmFtczEpOyBpID4gMDsgaS0t KQorCQl4aGNpX2ZyZWVfdmlydF9kZXZpY2VzX2RlcHRoX2ZpcnN0KHhoY2ksIGkpOwogCiAJaWYg KHhoY2ktPnNlZ21lbnRfcG9vbCkKIAkJZG1hX3Bvb2xfZGVzdHJveSh4aGNpLT5zZWdtZW50X3Bv b2wpOwpAQCAtMjM2OCw3ICsyNDAyLDcgQEAgaW50IHhoY2lfbWVtX2luaXQoc3RydWN0IHhoY2lf aGNkICp4aGNpLCBnZnBfdCBmbGFncykKIAkgKiAicGh5c2ljYWxseSBjb250aWd1b3VzIGFuZCA2 NC1ieXRlIChjYWNoZSBsaW5lKSBhbGlnbmVkIi4KIAkgKi8KIAl4aGNpLT5kY2JhYSA9IGRtYV9h bGxvY19jb2hlcmVudChkZXYsIHNpemVvZigqeGhjaS0+ZGNiYWEpLCAmZG1hLAotCQkJR0ZQX0tF Uk5FTCk7CisJCQlmbGFncyk7CiAJaWYgKCF4aGNpLT5kY2JhYSkKIAkJZ290byBmYWlsOwogCW1l bXNldCh4aGNpLT5kY2JhYSwgMCwgc2l6ZW9mICooeGhjaS0+ZGNiYWEpKTsKQEAgLTI0NjQsNyAr MjQ5OCw3IEBAIGludCB4aGNpX21lbV9pbml0KHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwgZ2ZwX3Qg ZmxhZ3MpCiAKIAl4aGNpLT5lcnN0LmVudHJpZXMgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LAog CQkJc2l6ZW9mKHN0cnVjdCB4aGNpX2Vyc3RfZW50cnkpICogRVJTVF9OVU1fU0VHUywgJmRtYSwK LQkJCUdGUF9LRVJORUwpOworCQkJZmxhZ3MpOwogCWlmICgheGhjaS0+ZXJzdC5lbnRyaWVzKQog CQlnb3RvIGZhaWw7CiAJeGhjaV9kYmdfdHJhY2UoeGhjaSwgdHJhY2VfeGhjaV9kYmdfaW5pdCwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYyBiL2RyaXZlcnMvdXNiL2hv c3QveGhjaS1wY2kuYwppbmRleCBlODA4ZDgwNzhiMmQuLjYzZDRmMjg5N2YwMCAxMDA2NDQKLS0t IGEvZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhj aS1wY2kuYwpAQCAtMTUwLDcgKzE1MCw4IEBAIHN0YXRpYyB2b2lkIHhoY2lfcGNpX3F1aXJrcyhz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB4aGNpX2hjZCAqeGhjaSkKIAkJIHBkZXYtPmRldmlj ZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX1NVTlJJU0VQT0lOVF9IX1hIQ0kgfHwKIAkJIHBkZXYt PmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX0NIRVJSWVZJRVdfWEhDSSB8fAogCQkgcGRl di0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQlJPWFRPTl9NX1hIQ0kgfHwKLQkJIHBk ZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX0JST1hUT05fQl9YSENJKSkgeworCQkg cGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQlJPWFRPTl9CX1hIQ0kgfHwKKwkJ IHBkZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX0FQTF9YSENJKSkgewogCQl4aGNp LT5xdWlya3MgfD0gWEhDSV9QTUVfU1RVQ0tfUVVJUks7CiAJfQogCWlmIChwZGV2LT52ZW5kb3Ig PT0gUENJX1ZFTkRPUl9JRF9JTlRFTCAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC94 aGNpLXJpbmcuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMKaW5kZXggNThlZGM1NDc4 ZDZlLi42ZGIwMGQ4MDRkMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5n LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLXJpbmcuYwpAQCAtODc4LDEzICs4NzgsNiBA QCB2b2lkIHhoY2lfc3RvcF9lbmRwb2ludF9jb21tYW5kX3dhdGNoZG9nKHVuc2lnbmVkIGxvbmcg YXJnKQogCXNwaW5fbG9ja19pcnFzYXZlKCZ4aGNpLT5sb2NrLCBmbGFncyk7CiAKIAllcC0+c3Rv cF9jbWRzX3BlbmRpbmctLTsKLQlpZiAoeGhjaS0+eGhjX3N0YXRlICYgWEhDSV9TVEFURV9EWUlO RykgewotCQl4aGNpX2RiZ190cmFjZSh4aGNpLCB0cmFjZV94aGNpX2RiZ19jYW5jZWxfdXJiLAot CQkJCSJTdG9wIEVQIHRpbWVyIHJhbiwgYnV0IGFub3RoZXIgdGltZXIgbWFya2VkICIKLQkJCQki eEhDSSBhcyBEWUlORywgZXhpdGluZy4iKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmeGhj aS0+bG9jaywgZmxhZ3MpOwotCQlyZXR1cm47Ci0JfQogCWlmICghKGVwLT5zdG9wX2NtZHNfcGVu ZGluZyA9PSAwICYmIChlcC0+ZXBfc3RhdGUgJiBFUF9IQUxUX1BFTkRJTkcpKSkgewogCQl4aGNp X2RiZ190cmFjZSh4aGNpLCB0cmFjZV94aGNpX2RiZ19jYW5jZWxfdXJiLAogCQkJCSJTdG9wIEVQ IHRpbWVyIHJhbiwgYnV0IG5vIGNvbW1hbmQgcGVuZGluZywgIgpAQCAtMTI5MiwzMyArMTI4NSw0 NCBAQCB2b2lkIHhoY2lfaGFuZGxlX2NvbW1hbmRfdGltZW91dCh1bnNpZ25lZCBsb25nIGRhdGEp CiAJc3RydWN0IHhoY2lfY29tbWFuZCAqY3VyX2NtZCA9IE5VTEw7CiAJeGhjaSA9IChzdHJ1Y3Qg eGhjaV9oY2QgKikgZGF0YTsKIAotCS8qIG1hcmsgdGhpcyBjb21tYW5kIHRvIGJlIGNhbmNlbGxl ZCAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZ4aGNpLT5sb2NrLCBmbGFncyk7Ci0JaWYgKHhoY2kt PmN1cnJlbnRfY21kKSB7Ci0JCWN1cl9jbWQgPSB4aGNpLT5jdXJyZW50X2NtZDsKLQkJY3VyX2Nt ZC0+c3RhdHVzID0gQ09NUF9DTURfQUJPUlQ7CisKKwkvKgorCSAqIElmIHRpbWVvdXQgd29yayBp cyBwZW5kaW5nLCBvciBjdXJyZW50X2NtZCBpcyBOVUxMLCBpdCBtZWFucyB3ZQorCSAqIHJhY2Vk IHdpdGggY29tbWFuZCBjb21wbGV0aW9uLiBDb21tYW5kIGlzIGhhbmRsZWQgc28ganVzdCByZXR1 cm4uCisJICovCisJaWYgKCF4aGNpLT5jdXJyZW50X2NtZCB8fCB0aW1lcl9wZW5kaW5nKCZ4aGNp LT5jbWRfdGltZXIpKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnhoY2ktPmxvY2ssIGZs YWdzKTsKKwkJcmV0dXJuOwogCX0KIAorCS8qIG1hcmsgdGhpcyBjb21tYW5kIHRvIGJlIGNhbmNl bGxlZCAqLworCWN1cl9jbWQgPSB4aGNpLT5jdXJyZW50X2NtZDsKKwljdXJfY21kLT5zdGF0dXMg PSBDT01QX0NNRF9BQk9SVDsKIAogCS8qIE1ha2Ugc3VyZSBjb21tYW5kIHJpbmcgaXMgcnVubmlu ZyBiZWZvcmUgYWJvcnRpbmcgaXQgKi8KIAlod19yaW5nX3N0YXRlID0geGhjaV9yZWFkXzY0KHho Y2ksICZ4aGNpLT5vcF9yZWdzLT5jbWRfcmluZyk7CiAJaWYgKCh4aGNpLT5jbWRfcmluZ19zdGF0 ZSAmIENNRF9SSU5HX1NUQVRFX1JVTk5JTkcpICYmCiAJICAgIChod19yaW5nX3N0YXRlICYgQ01E X1JJTkdfUlVOTklORykpICB7Ci0KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmeGhjaS0+bG9j aywgZmxhZ3MpOwogCQl4aGNpX2RiZyh4aGNpLCAiQ29tbWFuZCB0aW1lb3V0XG4iKTsKIAkJcmV0 ID0geGhjaV9hYm9ydF9jbWRfcmluZyh4aGNpKTsKIAkJaWYgKHVubGlrZWx5KHJldCA9PSAtRVNI VVRET1dOKSkgewogCQkJeGhjaV9lcnIoeGhjaSwgIkFib3J0IGNvbW1hbmQgcmluZyBmYWlsZWRc biIpOwogCQkJeGhjaV9jbGVhbnVwX2NvbW1hbmRfcXVldWUoeGhjaSk7CisJCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZ4aGNpLT5sb2NrLCBmbGFncyk7CiAJCQl1c2JfaGNfZGllZCh4aGNpX3Rv X2hjZCh4aGNpKS0+cHJpbWFyeV9oY2QpOwogCQkJeGhjaV9kYmcoeGhjaSwgInhIQ0kgaG9zdCBj b250cm9sbGVyIGlzIGRlYWQuXG4iKTsKKworCQkJcmV0dXJuOwogCQl9Ci0JCXJldHVybjsKKwor CQlnb3RvIHRpbWVfb3V0X2NvbXBsZXRlZDsKIAl9CiAJLyogY29tbWFuZCB0aW1lb3V0IG9uIHN0 b3BwZWQgcmluZywgcmluZyBjYW4ndCBiZSBhYm9ydGVkICovCiAJeGhjaV9kYmcoeGhjaSwgIkNv bW1hbmQgdGltZW91dCBvbiBzdG9wcGVkIHJpbmdcbiIpOwogCXhoY2lfaGFuZGxlX3N0b3BwZWRf Y21kX3JpbmcoeGhjaSwgeGhjaS0+Y3VycmVudF9jbWQpOworCit0aW1lX291dF9jb21wbGV0ZWQ6 CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmeGhjaS0+bG9jaywgZmxhZ3MpOwogCXJldHVybjsK IH0KQEAgLTEzNzcsOCArMTM4MSwxMSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfY21kX2NvbXBsZXRp b24oc3RydWN0IHhoY2lfaGNkICp4aGNpLAogCSAqLwogCWlmIChjbWRfY29tcF9jb2RlID09IENP TVBfQ01EX0FCT1JUKSB7CiAJCXhoY2ktPmNtZF9yaW5nX3N0YXRlID0gQ01EX1JJTkdfU1RBVEVf U1RPUFBFRDsKLQkJaWYgKGNtZC0+c3RhdHVzID09IENPTVBfQ01EX0FCT1JUKQorCQlpZiAoY21k LT5zdGF0dXMgPT0gQ09NUF9DTURfQUJPUlQpIHsKKwkJCWlmICh4aGNpLT5jdXJyZW50X2NtZCA9 PSBjbWQpCisJCQkJeGhjaS0+Y3VycmVudF9jbWQgPSBOVUxMOwogCQkJZ290byBldmVudF9oYW5k bGVkOworCQl9CiAJfQogCiAJY21kX3R5cGUgPSBUUkJfRklFTERfVE9fVFlQRShsZTMyX3RvX2Nw dShjbWRfdHJiLT5nZW5lcmljLmZpZWxkWzNdKSk7CkBAIC0xNDQwLDYgKzE0NDcsOCBAQCBzdGF0 aWMgdm9pZCBoYW5kbGVfY21kX2NvbXBsZXRpb24oc3RydWN0IHhoY2lfaGNkICp4aGNpLAogCQl4 aGNpLT5jdXJyZW50X2NtZCA9IGxpc3RfZW50cnkoY21kLT5jbWRfbGlzdC5uZXh0LAogCQkJCQkg ICAgICAgc3RydWN0IHhoY2lfY29tbWFuZCwgY21kX2xpc3QpOwogCQltb2RfdGltZXIoJnhoY2kt PmNtZF90aW1lciwgamlmZmllcyArIFhIQ0lfQ01EX0RFRkFVTFRfVElNRU9VVCk7CisJfSBlbHNl IGlmICh4aGNpLT5jdXJyZW50X2NtZCA9PSBjbWQpIHsKKwkJeGhjaS0+Y3VycmVudF9jbWQgPSBO VUxMOwogCX0KIAogZXZlbnRfaGFuZGxlZDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qv eGhjaS5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLmMKaW5kZXggZTg5ZDA5NDU4Nzg5Li5jOTI4 NjliM2FiNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCisrKyBiL2RyaXZl cnMvdXNiL2hvc3QveGhjaS5jCkBAIC0xNTYxLDE5ICsxNTYxLDYgQEAgaW50IHhoY2lfdXJiX2Rl cXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQog CQl4aGNpX3VyYl9mcmVlX3ByaXYoeGhjaSwgdXJiX3ByaXYpOwogCQlyZXR1cm4gcmV0OwogCX0K LQlpZiAoKHhoY2ktPnhoY19zdGF0ZSAmIFhIQ0lfU1RBVEVfRFlJTkcpIHx8Ci0JCQkoeGhjaS0+ eGhjX3N0YXRlICYgWEhDSV9TVEFURV9IQUxURUQpKSB7Ci0JCXhoY2lfZGJnX3RyYWNlKHhoY2ks IHRyYWNlX3hoY2lfZGJnX2NhbmNlbF91cmIsCi0JCQkJIkVwIDB4JXg6IFVSQiAlcCB0byBiZSBj YW5jZWxlZCBvbiAiCi0JCQkJIm5vbi1yZXNwb25zaXZlIHhIQ0kgaG9zdC4iLAotCQkJCXVyYi0+ ZXAtPmRlc2MuYkVuZHBvaW50QWRkcmVzcywgdXJiKTsKLQkJLyogTGV0IHRoZSBzdG9wIGVuZHBv aW50IGNvbW1hbmQgd2F0Y2hkb2cgdGltZXIgKHdoaWNoIHNldCB0aGlzCi0JCSAqIHN0YXRlKSBm aW5pc2ggY2xlYW5pbmcgdXAgdGhlIGVuZHBvaW50IFREIGxpc3RzLiAgV2UgbXVzdAotCQkgKiBo YXZlIGNhdWdodCBpdCBpbiB0aGUgbWlkZGxlIG9mIGRyb3BwaW5nIGEgbG9jayBhbmQgZ2l2aW5n Ci0JCSAqIGJhY2sgYW4gVVJCLgotCQkgKi8KLQkJZ290byBkb25lOwotCX0KIAogCWVwX2luZGV4 ID0geGhjaV9nZXRfZW5kcG9pbnRfaW5kZXgoJnVyYi0+ZXAtPmRlc2MpOwogCWVwID0gJnhoY2kt PmRldnNbdXJiLT5kZXYtPnNsb3RfaWRdLT5lcHNbZXBfaW5kZXhdOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvbXVzYi9tdXNiaHNkbWEuaCBiL2RyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmgK aW5kZXggZjdiMTNmZDI1MjU3Li5hM2RjYmQ1NWU0MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L211c2IvbXVzYmhzZG1hLmgKKysrIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiaHNkbWEuaApAQCAt MTU3LDUgKzE1Nyw1IEBAIHN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyIHsKIAl2b2lkIF9faW9t ZW0JCQkqYmFzZTsKIAl1OAkJCQljaGFubmVsX2NvdW50OwogCXU4CQkJCXVzZWRfY2hhbm5lbHM7 Ci0JdTgJCQkJaXJxOworCWludAkJCQlpcnE7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv cGh5L3BoeS1hbTMzNXgtY29udHJvbC5jIGIvZHJpdmVycy91c2IvcGh5L3BoeS1hbTMzNXgtY29u dHJvbC5jCmluZGV4IGQ1ZWNhN2I5YzU1NS4uODg3ZWU2NjBmYTM1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9waHkvcGh5LWFtMzM1eC1jb250cm9sLmMKKysrIGIvZHJpdmVycy91c2IvcGh5L3Bo eS1hbTMzNXgtY29udHJvbC5jCkBAIC0xMjYsMTAgKzEyNiwxMiBAQCBzdHJ1Y3QgcGh5X2NvbnRy b2wgKmFtMzM1eF9nZXRfcGh5X2NvbnRyb2woc3RydWN0IGRldmljZSAqZGV2KQogCQlyZXR1cm4g TlVMTDsKIAogCWRldiA9IGJ1c19maW5kX2RldmljZSgmcGxhdGZvcm1fYnVzX3R5cGUsIE5VTEws IG5vZGUsIG1hdGNoKTsKKwlvZl9ub2RlX3B1dChub2RlKTsKIAlpZiAoIWRldikKIAkJcmV0dXJu IE5VTEw7CiAKIAljdHJsX3VzYiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXB1dF9kZXZpY2Uo ZGV2KTsKIAlpZiAoIWN0cmxfdXNiKQogCQlyZXR1cm4gTlVMTDsKIAlyZXR1cm4gJmN0cmxfdXNi LT5waHlfY3RybDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jaDM0MS5jIGIvZHJp dmVycy91c2Ivc2VyaWFsL2NoMzQxLmMKaW5kZXggMmQ3MmFhMzU2NGEzLi42YTgwNDQyOTFhYjQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jaDM0MS5jCisrKyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9jaDM0MS5jCkBAIC02MSwxMyArNjEsMjYgQEAKICAqIHRoZSBOZXQvRnJlZUJTRCB1 Y2hjb20uYyBkcml2ZXIgYnkgVGFrYW5vcmkgV2F0YW5hYmUuICBEb21vIGFyaWdhdG8uCiAgKi8K IAorI2RlZmluZSBDSDM0MV9SRVFfUkVBRF9WRVJTSU9OIDB4NUYKICNkZWZpbmUgQ0gzNDFfUkVR X1dSSVRFX1JFRyAgICAweDlBCiAjZGVmaW5lIENIMzQxX1JFUV9SRUFEX1JFRyAgICAgMHg5NQot I2RlZmluZSBDSDM0MV9SRUdfQlJFQUsxICAgICAgIDB4MDUKLSNkZWZpbmUgQ0gzNDFfUkVHX0JS RUFLMiAgICAgICAweDE4Ci0jZGVmaW5lIENIMzQxX05CUkVBS19CSVRTX1JFRzEgMHgwMQotI2Rl ZmluZSBDSDM0MV9OQlJFQUtfQklUU19SRUcyIDB4NDAKLQorI2RlZmluZSBDSDM0MV9SRVFfU0VS SUFMX0lOSVQgIDB4QTEKKyNkZWZpbmUgQ0gzNDFfUkVRX01PREVNX0NUUkwgICAweEE0CisKKyNk ZWZpbmUgQ0gzNDFfUkVHX0JSRUFLICAgICAgICAweDA1CisjZGVmaW5lIENIMzQxX1JFR19MQ1Ig ICAgICAgICAgMHgxOAorI2RlZmluZSBDSDM0MV9OQlJFQUtfQklUUyAgICAgIDB4MDEKKworI2Rl ZmluZSBDSDM0MV9MQ1JfRU5BQkxFX1JYICAgIDB4ODAKKyNkZWZpbmUgQ0gzNDFfTENSX0VOQUJM RV9UWCAgICAweDQwCisjZGVmaW5lIENIMzQxX0xDUl9NQVJLX1NQQUNFICAgMHgyMAorI2RlZmlu ZSBDSDM0MV9MQ1JfUEFSX0VWRU4gICAgIDB4MTAKKyNkZWZpbmUgQ0gzNDFfTENSX0VOQUJMRV9Q QVIgICAweDA4CisjZGVmaW5lIENIMzQxX0xDUl9TVE9QX0JJVFNfMiAgMHgwNAorI2RlZmluZSBD SDM0MV9MQ1JfQ1M4ICAgICAgICAgIDB4MDMKKyNkZWZpbmUgQ0gzNDFfTENSX0NTNyAgICAgICAg ICAweDAyCisjZGVmaW5lIENIMzQxX0xDUl9DUzYgICAgICAgICAgMHgwMQorI2RlZmluZSBDSDM0 MV9MQ1JfQ1M1ICAgICAgICAgIDB4MDAKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNl X2lkIGlkX3RhYmxlW10gPSB7CiAJeyBVU0JfREVWSUNFKDB4NDM0OCwgMHg1NTIzKSB9LApAQCAt ODQsNiArOTcsMTAgQEAgc3RydWN0IGNoMzQxX3ByaXZhdGUgewogCXU4IGxpbmVfc3RhdHVzOyAv KiBhY3RpdmUgc3RhdHVzIG9mIG1vZGVtIGNvbnRyb2wgaW5wdXRzICovCiB9OwogCitzdGF0aWMg dm9pZCBjaDM0MV9zZXRfdGVybWlvcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAorCQkJICAgICAg c3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwKKwkJCSAgICAgIHN0cnVjdCBrdGVybWlvcyAq b2xkX3Rlcm1pb3MpOworCiBzdGF0aWMgaW50IGNoMzQxX2NvbnRyb2xfb3V0KHN0cnVjdCB1c2Jf ZGV2aWNlICpkZXYsIHU4IHJlcXVlc3QsCiAJCQkgICAgIHUxNiB2YWx1ZSwgdTE2IGluZGV4KQog ewpAQCAtOTUsNiArMTEyLDggQEAgc3RhdGljIGludCBjaDM0MV9jb250cm9sX291dChzdHJ1Y3Qg dXNiX2RldmljZSAqZGV2LCB1OCByZXF1ZXN0LAogCXIgPSB1c2JfY29udHJvbF9tc2coZGV2LCB1 c2Jfc25kY3RybHBpcGUoZGV2LCAwKSwgcmVxdWVzdCwKIAkJCSAgICBVU0JfVFlQRV9WRU5ET1Ig fCBVU0JfUkVDSVBfREVWSUNFIHwgVVNCX0RJUl9PVVQsCiAJCQkgICAgdmFsdWUsIGluZGV4LCBO VUxMLCAwLCBERUZBVUxUX1RJTUVPVVQpOworCWlmIChyIDwgMCkKKwkJZGV2X2VycigmZGV2LT5k ZXYsICJmYWlsZWQgdG8gc2VuZCBjb250cm9sIG1lc3NhZ2U6ICVkXG4iLCByKTsKIAogCXJldHVy biByOwogfQpAQCAtMTEyLDEzICsxMzEsMjYgQEAgc3RhdGljIGludCBjaDM0MV9jb250cm9sX2lu KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsCiAJciA9IHVzYl9jb250cm9sX21zZyhkZXYsIHVzYl9y Y3ZjdHJscGlwZShkZXYsIDApLCByZXF1ZXN0LAogCQkJICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVT Ql9SRUNJUF9ERVZJQ0UgfCBVU0JfRElSX0lOLAogCQkJICAgIHZhbHVlLCBpbmRleCwgYnVmLCBi dWZzaXplLCBERUZBVUxUX1RJTUVPVVQpOwotCXJldHVybiByOworCWlmIChyIDwgYnVmc2l6ZSkg eworCQlpZiAociA+PSAwKSB7CisJCQlkZXZfZXJyKCZkZXYtPmRldiwKKwkJCQkic2hvcnQgY29u dHJvbCBtZXNzYWdlIHJlY2VpdmVkICglZCA8ICV1KVxuIiwKKwkJCQlyLCBidWZzaXplKTsKKwkJ CXIgPSAtRUlPOworCQl9CisKKwkJZGV2X2VycigmZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVjZWl2 ZSBjb250cm9sIG1lc3NhZ2U6ICVkXG4iLAorCQkJcik7CisJCXJldHVybiByOworCX0KKworCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNoMzQxX3NldF9iYXVkcmF0ZShzdHJ1Y3QgdXNiX2Rl dmljZSAqZGV2LAotCQkJICAgICAgc3RydWN0IGNoMzQxX3ByaXZhdGUgKnByaXYpCitzdGF0aWMg aW50IGNoMzQxX3NldF9iYXVkcmF0ZV9sY3Ioc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKKwkJCQkg IHN0cnVjdCBjaDM0MV9wcml2YXRlICpwcml2LCB1OCBsY3IpCiB7Ci0Jc2hvcnQgYSwgYjsKKwlz aG9ydCBhOwogCWludCByOwogCXVuc2lnbmVkIGxvbmcgZmFjdG9yOwogCXNob3J0IGRpdmlzb3I7 CkBAIC0xMzgsNDMgKzE3MCw0NyBAQCBzdGF0aWMgaW50IGNoMzQxX3NldF9iYXVkcmF0ZShzdHJ1 Y3QgdXNiX2RldmljZSAqZGV2LAogCiAJZmFjdG9yID0gMHgxMDAwMCAtIGZhY3RvcjsKIAlhID0g KGZhY3RvciAmIDB4ZmYwMCkgfCBkaXZpc29yOwotCWIgPSBmYWN0b3IgJiAweGZmOwogCi0JciA9 IGNoMzQxX2NvbnRyb2xfb3V0KGRldiwgMHg5YSwgMHgxMzEyLCBhKTsKLQlpZiAoIXIpCi0JCXIg PSBjaDM0MV9jb250cm9sX291dChkZXYsIDB4OWEsIDB4MGYyYywgYik7CisJLyoKKwkgKiBDSDM0 MUEgYnVmZmVycyBkYXRhIHVudGlsIGEgZnVsbCBlbmRwb2ludC1zaXplIHBhY2tldCAoMzIgYnl0 ZXMpCisJICogaGFzIGJlZW4gcmVjZWl2ZWQgdW5sZXNzIGJpdCA3IGlzIHNldC4KKwkgKi8KKwlh IHw9IEJJVCg3KTsKKworCXIgPSBjaDM0MV9jb250cm9sX291dChkZXYsIENIMzQxX1JFUV9XUklU RV9SRUcsIDB4MTMxMiwgYSk7CisJaWYgKHIpCisJCXJldHVybiByOworCisJciA9IGNoMzQxX2Nv bnRyb2xfb3V0KGRldiwgQ0gzNDFfUkVRX1dSSVRFX1JFRywgMHgyNTE4LCBsY3IpOworCWlmIChy KQorCQlyZXR1cm4gcjsKIAogCXJldHVybiByOwogfQogCiBzdGF0aWMgaW50IGNoMzQxX3NldF9o YW5kc2hha2Uoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdTggY29udHJvbCkKIHsKLQlyZXR1cm4g Y2gzNDFfY29udHJvbF9vdXQoZGV2LCAweGE0LCB+Y29udHJvbCwgMCk7CisJcmV0dXJuIGNoMzQx X2NvbnRyb2xfb3V0KGRldiwgQ0gzNDFfUkVRX01PREVNX0NUUkwsIH5jb250cm9sLCAwKTsKIH0K IAogc3RhdGljIGludCBjaDM0MV9nZXRfc3RhdHVzKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHN0 cnVjdCBjaDM0MV9wcml2YXRlICpwcml2KQogeworCWNvbnN0IHVuc2lnbmVkIGludCBzaXplID0g MjsKIAljaGFyICpidWZmZXI7CiAJaW50IHI7Ci0JY29uc3QgdW5zaWduZWQgc2l6ZSA9IDg7CiAJ dW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWJ1ZmZlciA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5F TCk7CiAJaWYgKCFidWZmZXIpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JciA9IGNoMzQxX2NvbnRy b2xfaW4oZGV2LCAweDk1LCAweDA3MDYsIDAsIGJ1ZmZlciwgc2l6ZSk7CisJciA9IGNoMzQxX2Nv bnRyb2xfaW4oZGV2LCBDSDM0MV9SRVFfUkVBRF9SRUcsIDB4MDcwNiwgMCwgYnVmZmVyLCBzaXpl KTsKIAlpZiAociA8IDApCiAJCWdvdG8gb3V0OwogCi0JLyogc2V0dXAgdGhlIHByaXZhdGUgc3Rh dHVzIGlmIGF2YWlsYWJsZSAqLwotCWlmIChyID09IDIpIHsKLQkJciA9IDA7Ci0JCXNwaW5fbG9j a19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7Ci0JCXByaXYtPmxpbmVfc3RhdHVzID0gKH4o KmJ1ZmZlcikpICYgQ0gzNDFfQklUU19NT0RFTV9TVEFUOwotCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZwcml2LT5sb2NrLCBmbGFncyk7Ci0JfSBlbHNlCi0JCXIgPSAtRVBST1RPOworCXNwaW5f bG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7CisJcHJpdi0+bGluZV9zdGF0dXMgPSAo figqYnVmZmVyKSkgJiBDSDM0MV9CSVRTX01PREVNX1NUQVQ7CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwogCiBvdXQ6CWtmcmVlKGJ1ZmZlcik7CiAJcmV0dXJu IHI7CkBAIC0xODQsMzMgKzIyMCwyOSBAQCBvdXQ6CWtmcmVlKGJ1ZmZlcik7CiAKIHN0YXRpYyBp bnQgY2gzNDFfY29uZmlndXJlKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHN0cnVjdCBjaDM0MV9w cml2YXRlICpwcml2KQogeworCWNvbnN0IHVuc2lnbmVkIGludCBzaXplID0gMjsKIAljaGFyICpi dWZmZXI7CiAJaW50IHI7Ci0JY29uc3QgdW5zaWduZWQgc2l6ZSA9IDg7CiAKIAlidWZmZXIgPSBr bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwogCWlmICghYnVmZmVyKQogCQlyZXR1cm4gLUVOT01F TTsKIAogCS8qIGV4cGVjdCB0d28gYnl0ZXMgMHgyNyAweDAwICovCi0JciA9IGNoMzQxX2NvbnRy b2xfaW4oZGV2LCAweDVmLCAwLCAwLCBidWZmZXIsIHNpemUpOworCXIgPSBjaDM0MV9jb250cm9s X2luKGRldiwgQ0gzNDFfUkVRX1JFQURfVkVSU0lPTiwgMCwgMCwgYnVmZmVyLCBzaXplKTsKIAlp ZiAociA8IDApCiAJCWdvdG8gb3V0OwogCi0JciA9IGNoMzQxX2NvbnRyb2xfb3V0KGRldiwgMHhh MSwgMCwgMCk7Ci0JaWYgKHIgPCAwKQotCQlnb3RvIG91dDsKLQotCXIgPSBjaDM0MV9zZXRfYmF1 ZHJhdGUoZGV2LCBwcml2KTsKKwlyID0gY2gzNDFfY29udHJvbF9vdXQoZGV2LCBDSDM0MV9SRVFf U0VSSUFMX0lOSVQsIDAsIDApOwogCWlmIChyIDwgMCkKIAkJZ290byBvdXQ7CiAKIAkvKiBleHBl Y3QgdHdvIGJ5dGVzIDB4NTYgMHgwMCAqLwotCXIgPSBjaDM0MV9jb250cm9sX2luKGRldiwgMHg5 NSwgMHgyNTE4LCAwLCBidWZmZXIsIHNpemUpOworCXIgPSBjaDM0MV9jb250cm9sX2luKGRldiwg Q0gzNDFfUkVRX1JFQURfUkVHLCAweDI1MTgsIDAsIGJ1ZmZlciwgc2l6ZSk7CiAJaWYgKHIgPCAw KQogCQlnb3RvIG91dDsKIAotCXIgPSBjaDM0MV9jb250cm9sX291dChkZXYsIDB4OWEsIDB4MjUx OCwgMHgwMDUwKTsKKwlyID0gY2gzNDFfY29udHJvbF9vdXQoZGV2LCBDSDM0MV9SRVFfV1JJVEVf UkVHLCAweDI1MTgsIDB4MDA1MCk7CiAJaWYgKHIgPCAwKQogCQlnb3RvIG91dDsKIApAQCAtMjE5 LDExICsyNTEsNyBAQCBzdGF0aWMgaW50IGNoMzQxX2NvbmZpZ3VyZShzdHJ1Y3QgdXNiX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgY2gzNDFfcHJpdmF0ZSAqcHJpdikKIAlpZiAociA8IDApCiAJCWdvdG8g b3V0OwogCi0JciA9IGNoMzQxX2NvbnRyb2xfb3V0KGRldiwgMHhhMSwgMHg1MDFmLCAweGQ5MGEp OwotCWlmIChyIDwgMCkKLQkJZ290byBvdXQ7Ci0KLQlyID0gY2gzNDFfc2V0X2JhdWRyYXRlKGRl diwgcHJpdik7CisJciA9IGNoMzQxX3NldF9iYXVkcmF0ZV9sY3IoZGV2LCBwcml2LCAwKTsKIAlp ZiAociA8IDApCiAJCWdvdG8gb3V0OwogCkBAIC0yNDksNyArMjc3LDYgQEAgc3RhdGljIGludCBj aDM0MV9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiAKIAlzcGluX2xv Y2tfaW5pdCgmcHJpdi0+bG9jayk7CiAJcHJpdi0+YmF1ZF9yYXRlID0gREVGQVVMVF9CQVVEX1JB VEU7Ci0JcHJpdi0+bGluZV9jb250cm9sID0gQ0gzNDFfQklUX1JUUyB8IENIMzQxX0JJVF9EVFI7 CiAKIAlyID0gY2gzNDFfY29uZmlndXJlKHBvcnQtPnNlcmlhbC0+ZGV2LCBwcml2KTsKIAlpZiAo ciA8IDApCkBAIC0zMDksMzIgKzMzNiwzMSBAQCBzdGF0aWMgaW50IGNoMzQxX29wZW4oc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIAlzdHJ1Y3Qg Y2gzNDFfcHJpdmF0ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIAlp bnQgcjsKIAotCXByaXYtPmJhdWRfcmF0ZSA9IERFRkFVTFRfQkFVRF9SQVRFOwotCiAJciA9IGNo MzQxX2NvbmZpZ3VyZShzZXJpYWwtPmRldiwgcHJpdik7CiAJaWYgKHIpCi0JCWdvdG8gb3V0Owot Ci0JciA9IGNoMzQxX3NldF9oYW5kc2hha2Uoc2VyaWFsLT5kZXYsIHByaXYtPmxpbmVfY29udHJv bCk7Ci0JaWYgKHIpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gcjsKIAotCXIgPSBjaDM0MV9zZXRf YmF1ZHJhdGUoc2VyaWFsLT5kZXYsIHByaXYpOwotCWlmIChyKQotCQlnb3RvIG91dDsKKwlpZiAo dHR5KQorCQljaDM0MV9zZXRfdGVybWlvcyh0dHksIHBvcnQsIE5VTEwpOwogCiAJZGV2X2RiZygm cG9ydC0+ZGV2LCAiJXMgLSBzdWJtaXR0aW5nIGludGVycnVwdCB1cmJcbiIsIF9fZnVuY19fKTsK IAlyID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+aW50ZXJydXB0X2luX3VyYiwgR0ZQX0tFUk5FTCk7 CiAJaWYgKHIpIHsKIAkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgLSBmYWlsZWQgdG8gc3VibWl0 IGludGVycnVwdCB1cmI6ICVkXG4iLAogCQkJX19mdW5jX18sIHIpOwotCQljaDM0MV9jbG9zZShw b3J0KTsKLQkJZ290byBvdXQ7CisJCXJldHVybiByOwogCX0KIAogCXIgPSB1c2Jfc2VyaWFsX2dl bmVyaWNfb3Blbih0dHksIHBvcnQpOworCWlmIChyKQorCQlnb3RvIGVycl9raWxsX2ludGVycnVw dF91cmI7CisKKwlyZXR1cm4gMDsKKworZXJyX2tpbGxfaW50ZXJydXB0X3VyYjoKKwl1c2Jfa2ls bF91cmIocG9ydC0+aW50ZXJydXB0X2luX3VyYik7CiAKLW91dDoJcmV0dXJuIHI7CisJcmV0dXJu IHI7CiB9CiAKIC8qIE9sZF90ZXJtaW9zIGNvbnRhaW5zIHRoZSBvcmlnaW5hbCB0ZXJtaW9zIHNl dHRpbmdzIGFuZApAQCAtMzQ2LDIzICszNzIsMzMgQEAgc3RhdGljIHZvaWQgY2gzNDFfc2V0X3Rl cm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAlzdHJ1Y3QgY2gzNDFfcHJpdmF0ZSAqcHJp diA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIAl1bnNpZ25lZCBiYXVkX3JhdGU7 CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1bnNpZ25lZCBjaGFyIGN0cmw7CisJaW50IHI7CisK KwkvKiByZWR1bmRhbnQgY2hhbmdlcyBtYXkgY2F1c2UgdGhlIGNoaXAgdG8gbG9zZSBieXRlcyAq LworCWlmIChvbGRfdGVybWlvcyAmJiAhdHR5X3Rlcm1pb3NfaHdfY2hhbmdlKCZ0dHktPnRlcm1p b3MsIG9sZF90ZXJtaW9zKSkKKwkJcmV0dXJuOwogCiAJYmF1ZF9yYXRlID0gdHR5X2dldF9iYXVk X3JhdGUodHR5KTsKIAotCXByaXYtPmJhdWRfcmF0ZSA9IGJhdWRfcmF0ZTsKKwljdHJsID0gQ0gz NDFfTENSX0VOQUJMRV9SWCB8IENIMzQxX0xDUl9FTkFCTEVfVFggfCBDSDM0MV9MQ1JfQ1M4Owog CiAJaWYgKGJhdWRfcmF0ZSkgewotCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxh Z3MpOwotCQlwcml2LT5saW5lX2NvbnRyb2wgfD0gKENIMzQxX0JJVF9EVFIgfCBDSDM0MV9CSVRf UlRTKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwotCQlj aDM0MV9zZXRfYmF1ZHJhdGUocG9ydC0+c2VyaWFsLT5kZXYsIHByaXYpOwotCX0gZWxzZSB7Ci0J CXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7Ci0JCXByaXYtPmxpbmVfY29u dHJvbCAmPSB+KENIMzQxX0JJVF9EVFIgfCBDSDM0MV9CSVRfUlRTKTsKLQkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCQlwcml2LT5iYXVkX3JhdGUgPSBiYXVk X3JhdGU7CisKKwkJciA9IGNoMzQxX3NldF9iYXVkcmF0ZV9sY3IocG9ydC0+c2VyaWFsLT5kZXYs IHByaXYsIGN0cmwpOworCQlpZiAociA8IDAgJiYgb2xkX3Rlcm1pb3MpIHsKKwkJCXByaXYtPmJh dWRfcmF0ZSA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7CisJCQl0dHlfdGVy bWlvc19jb3B5X2h3KCZ0dHktPnRlcm1pb3MsIG9sZF90ZXJtaW9zKTsKKwkJfQogCX0KIAotCWNo MzQxX3NldF9oYW5kc2hha2UocG9ydC0+c2VyaWFsLT5kZXYsIHByaXYtPmxpbmVfY29udHJvbCk7 CisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKwlpZiAoQ19CQVVEKHR0 eSkgPT0gQjApCisJCXByaXYtPmxpbmVfY29udHJvbCAmPSB+KENIMzQxX0JJVF9EVFIgfCBDSDM0 MV9CSVRfUlRTKTsKKwllbHNlIGlmIChvbGRfdGVybWlvcyAmJiAob2xkX3Rlcm1pb3MtPmNfY2Zs YWcgJiBDQkFVRCkgPT0gQjApCisJCXByaXYtPmxpbmVfY29udHJvbCB8PSAoQ0gzNDFfQklUX0RU UiB8IENIMzQxX0JJVF9SVFMpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ss IGZsYWdzKTsKIAogCS8qIFVuaW1wbGVtZW50ZWQ6CiAJICogKGNmbGFnICYgQ1NJWkUpIDogZGF0 YSBiaXRzIFs1LCA4XQpAQCAtMzc0LDcgKzQxMCw3IEBAIHN0YXRpYyB2b2lkIGNoMzQxX3NldF90 ZXJtaW9zKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksCiBzdGF0aWMgdm9pZCBjaDM0MV9icmVha19j dGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGJyZWFrX3N0YXRlKQogewogCWNvbnN0IHVp bnQxNl90IGNoMzQxX2JyZWFrX3JlZyA9Ci0JCUNIMzQxX1JFR19CUkVBSzEgfCAoKHVpbnQxNl90 KSBDSDM0MV9SRUdfQlJFQUsyIDw8IDgpOworCQkJKCh1aW50MTZfdCkgQ0gzNDFfUkVHX0xDUiA8 PCA4KSB8IENIMzQxX1JFR19CUkVBSzsKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0g dHR5LT5kcml2ZXJfZGF0YTsKIAlpbnQgcjsKIAl1aW50MTZfdCByZWdfY29udGVudHM7CkBAIC0z OTUsMTIgKzQzMSwxMiBAQCBzdGF0aWMgdm9pZCBjaDM0MV9icmVha19jdGwoc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSwgaW50IGJyZWFrX3N0YXRlKQogCQlfX2Z1bmNfXywgYnJlYWtfcmVnWzBdLCBi cmVha19yZWdbMV0pOwogCWlmIChicmVha19zdGF0ZSAhPSAwKSB7CiAJCWRldl9kYmcoJnBvcnQt PmRldiwgIiVzIC0gRW50ZXIgYnJlYWsgc3RhdGUgcmVxdWVzdGVkXG4iLCBfX2Z1bmNfXyk7Ci0J CWJyZWFrX3JlZ1swXSAmPSB+Q0gzNDFfTkJSRUFLX0JJVFNfUkVHMTsKLQkJYnJlYWtfcmVnWzFd ICY9IH5DSDM0MV9OQlJFQUtfQklUU19SRUcyOworCQlicmVha19yZWdbMF0gJj0gfkNIMzQxX05C UkVBS19CSVRTOworCQlicmVha19yZWdbMV0gJj0gfkNIMzQxX0xDUl9FTkFCTEVfVFg7CiAJfSBl bHNlIHsKIAkJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXMgLSBMZWF2ZSBicmVhayBzdGF0ZSByZXF1 ZXN0ZWRcbiIsIF9fZnVuY19fKTsKLQkJYnJlYWtfcmVnWzBdIHw9IENIMzQxX05CUkVBS19CSVRT X1JFRzE7Ci0JCWJyZWFrX3JlZ1sxXSB8PSBDSDM0MV9OQlJFQUtfQklUU19SRUcyOworCQlicmVh a19yZWdbMF0gfD0gQ0gzNDFfTkJSRUFLX0JJVFM7CisJCWJyZWFrX3JlZ1sxXSB8PSBDSDM0MV9M Q1JfRU5BQkxFX1RYOwogCX0KIAlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyAtIE5ldyBjaDM0MSBi cmVhayByZWdpc3RlciBjb250ZW50cyAtIHJlZzE6ICV4LCByZWcyOiAleFxuIiwKIAkJX19mdW5j X18sIGJyZWFrX3JlZ1swXSwgYnJlYWtfcmVnWzFdKTsKQEAgLTU0MywxNCArNTc5LDIzIEBAIHN0 YXRpYyBpbnQgY2gzNDFfdGlvY21nZXQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkKIAogc3RhdGlj IGludCBjaDM0MV9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkKIHsKLQlz dHJ1Y3QgY2gzNDFfcHJpdmF0ZSAqcHJpdjsKLQotCXByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0 X2RhdGEoc2VyaWFsLT5wb3J0WzBdKTsKKwlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0g c2VyaWFsLT5wb3J0WzBdOworCXN0cnVjdCBjaDM0MV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9z ZXJpYWxfcG9ydF9kYXRhKHBvcnQpOworCWludCByZXQ7CiAKIAkvKiByZWNvbmZpZ3VyZSBjaDM0 MSBzZXJpYWwgcG9ydCBhZnRlciBidXMtcmVzZXQgKi8KIAljaDM0MV9jb25maWd1cmUoc2VyaWFs LT5kZXYsIHByaXYpOwogCi0JcmV0dXJuIDA7CisJaWYgKHBvcnQtPnBvcnQuZmxhZ3MgJiBBU1lO Q19JTklUSUFMSVpFRCkgeworCQlyZXQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5pbnRlcnJ1cHRf aW5fdXJiLCBHRlBfTk9JTyk7CisJCWlmIChyZXQpIHsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwg ImZhaWxlZCB0byBzdWJtaXQgaW50ZXJydXB0IHVyYjogJWRcbiIsCisJCQkJcmV0KTsKKwkJCXJl dHVybiByZXQ7CisJCX0KKwl9CisKKwlyZXR1cm4gdXNiX3NlcmlhbF9nZW5lcmljX3Jlc3VtZShz ZXJpYWwpOwogfQogCiBzdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIGNoMzQxX2Rldmlj ZSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYyBiL2RyaXZl cnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYwppbmRleCAyOTE2ZGVhM2VkZTguLjg5NDhmMzc1ZTc1 ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5YmVyamFjay5jCisrKyBiL2RyaXZl cnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYwpAQCAtNTAsNiArNTAsNyBAQAogI2RlZmluZSBDWUJF UkpBQ0tfUFJPRFVDVF9JRAkweDAxMDAKIAogLyogRnVuY3Rpb24gcHJvdG90eXBlcyAqLworc3Rh dGljIGludCBjeWJlcmphY2tfYXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpOwogc3Rh dGljIGludCBjeWJlcmphY2tfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0 KTsKIHN0YXRpYyBpbnQgY3liZXJqYWNrX3BvcnRfcmVtb3ZlKHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQpOwogc3RhdGljIGludCAgY3liZXJqYWNrX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3Qg KnR0eSwKQEAgLTc3LDYgKzc4LDcgQEAgc3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBj eWJlcmphY2tfZGV2aWNlID0gewogCS5kZXNjcmlwdGlvbiA9CQkiUmVpbmVyIFNDVCBDeWJlcmph Y2sgVVNCIGNhcmQgcmVhZGVyIiwKIAkuaWRfdGFibGUgPQkJaWRfdGFibGUsCiAJLm51bV9wb3J0 cyA9CQkxLAorCS5hdHRhY2ggPQkJY3liZXJqYWNrX2F0dGFjaCwKIAkucG9ydF9wcm9iZSA9CQlj eWJlcmphY2tfcG9ydF9wcm9iZSwKIAkucG9ydF9yZW1vdmUgPQkJY3liZXJqYWNrX3BvcnRfcmVt b3ZlLAogCS5vcGVuID0JCQljeWJlcmphY2tfb3BlbiwKQEAgLTEwMCw2ICsxMDIsMTQgQEAgc3Ry dWN0IGN5YmVyamFja19wcml2YXRlIHsKIAlzaG9ydAkJd3JzZW50OwkJLyogRGF0YSBhbHJlYWR5 IHNlbnQgKi8KIH07CiAKK3N0YXRpYyBpbnQgY3liZXJqYWNrX2F0dGFjaChzdHJ1Y3QgdXNiX3Nl cmlhbCAqc2VyaWFsKQoreworCWlmIChzZXJpYWwtPm51bV9idWxrX291dCA8IHNlcmlhbC0+bnVt X3BvcnRzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50 IGN5YmVyamFja19wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiB7CiAJ c3RydWN0IGN5YmVyamFja19wcml2YXRlICpwcml2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv c2VyaWFsL2dhcm1pbl9ncHMuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9nYXJtaW5fZ3BzLmMKaW5k ZXggZGI1OTFkMTlkNDE2Li4zN2QwZThjYzdhZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3Nl cmlhbC9nYXJtaW5fZ3BzLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2dhcm1pbl9ncHMuYwpA QCAtMTA0NCw2ICsxMDQ0LDcgQEAgc3RhdGljIGludCBnYXJtaW5fd3JpdGVfYnVsayhzdHJ1Y3Qg dXNiX3NlcmlhbF9wb3J0ICpwb3J0LAogCQkgICAiJXMgLSB1c2Jfc3VibWl0X3VyYih3cml0ZSBi dWxrKSBmYWlsZWQgd2l0aCBzdGF0dXMgPSAlZFxuIiwKIAkJCQlfX2Z1bmNfXywgc3RhdHVzKTsK IAkJY291bnQgPSBzdGF0dXM7CisJCWtmcmVlKGJ1ZmZlcik7CiAJfQogCiAJLyogd2UgYXJlIGRv bmUgd2l0aCB0aGlzIHVyYiwgc28gbGV0IHRoZSBob3N0IGRyaXZlcgpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRn ZXBvcnQuYwppbmRleCAxOTQ3ZWEwZTA5ODguLmI2M2E2YzM4OTljNSAxMDA2NDQKLS0tIGEvZHJp dmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lv X2VkZ2Vwb3J0LmMKQEAgLTI3NjEsNiArMjc2MSwxMSBAQCBzdGF0aWMgaW50IGVkZ2Vfc3RhcnR1 cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCQkJCQlFREdFX0NPTVBBVElCSUxJVFlfTUFT SzEsCiAJCQkJCUVER0VfQ09NUEFUSUJJTElUWV9NQVNLMiB9OwogCisJaWYgKHNlcmlhbC0+bnVt X2J1bGtfaW4gPCAxIHx8IHNlcmlhbC0+bnVtX2ludGVycnVwdF9pbiA8IDEpIHsKKwkJZGV2X2Vy cigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgIm1pc3NpbmcgZW5kcG9pbnRzXG4iKTsKKwkJcmV0 dXJuIC1FTk9ERVY7CisJfQorCiAJZGV2ID0gc2VyaWFsLT5kZXY7CiAKIAkvKiBjcmVhdGUgb3Vy IHByaXZhdGUgc2VyaWFsIHN0cnVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2Vy aWFsL2lvX3RpLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwppbmRleCBjMGE0MmU5ZTY3 NzcuLmVlYTE2NTUwZTU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMK KysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMKQEAgLTEzNzYsNyArMTM3Niw3IEBAIHN0 YXlpbmJvb3Rtb2RlOgogCWRldl9kYmcoZGV2LCAiJXMgLSBTVEFZSU5HIElOIEJPT1QgTU9ERVxu IiwgX19mdW5jX18pOwogCXNlcmlhbC0+cHJvZHVjdF9pbmZvLlRpTW9kZSA9IFRJX01PREVfQk9P VDsKIAotCXJldHVybiAwOworCXJldHVybiAxOwogfQogCiAKQEAgLTIzODMsNiArMjM4MywxMyBA QCBzdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCXN0 cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsOwogCWludCBzdGF0dXM7CiAKKwkvKiBN YWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgZW5kcG9pbnRzIHdoZW4gaW4gZG93bmxvYWQg bW9kZS4gKi8KKwlpZiAoc2VyaWFsLT5pbnRlcmZhY2UtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJO dW1FbmRwb2ludHMgPiAxKSB7CisJCWlmIChzZXJpYWwtPm51bV9idWxrX2luIDwgc2VyaWFsLT5u dW1fcG9ydHMgfHwKKwkJCQlzZXJpYWwtPm51bV9idWxrX291dCA8IHNlcmlhbC0+bnVtX3BvcnRz KQorCQkJcmV0dXJuIC1FTk9ERVY7CisJfQorCiAJLyogY3JlYXRlIG91ciBwcml2YXRlIHNlcmlh bCBzdHJ1Y3R1cmUgKi8KIAllZGdlX3NlcmlhbCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBlZGdl cG9ydF9zZXJpYWwpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWVkZ2Vfc2VyaWFsKQpAQCAtMjM5Mywx MSArMjQwMCwxNCBAQCBzdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAq c2VyaWFsKQogCXVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCBlZGdlX3NlcmlhbCk7CiAKIAlz dGF0dXMgPSBkb3dubG9hZF9mdyhlZGdlX3NlcmlhbCk7Ci0JaWYgKHN0YXR1cykgeworCWlmIChz dGF0dXMgPCAwKSB7CiAJCWtmcmVlKGVkZ2Vfc2VyaWFsKTsKIAkJcmV0dXJuIHN0YXR1czsKIAl9 CiAKKwlpZiAoc3RhdHVzID4gMCkKKwkJcmV0dXJuIDE7CS8qIGJpbmQgYnV0IGRvIG5vdCByZWdp c3RlciBhbnkgcG9ydHMgKi8KKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi9zZXJpYWwvaXV1X3Bob2VuaXguYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pdXVfcGhvZW5p eC5jCmluZGV4IDVhZDRhMGZiNGIyNi4uN2VkN2QzM2Q2YzEwIDEwMDY0NAotLS0gYS9kcml2ZXJz L3VzYi9zZXJpYWwvaXV1X3Bob2VuaXguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXV1X3Bo b2VuaXguYwpAQCAtNjgsNiArNjgsMTYgQEAgc3RydWN0IGl1dV9wcml2YXRlIHsKIAl1MzIgY2xr OwogfTsKIAorc3RhdGljIGludCBpdXVfYXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwp Cit7CisJdW5zaWduZWQgY2hhciBudW1fcG9ydHMgPSBzZXJpYWwtPm51bV9wb3J0czsKKworCWlm IChzZXJpYWwtPm51bV9idWxrX2luIDwgbnVtX3BvcnRzIHx8IHNlcmlhbC0+bnVtX2J1bGtfb3V0 IDwgbnVtX3BvcnRzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiAwOworfQorCiBzdGF0 aWMgaW50IGl1dV9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiB7CiAJ c3RydWN0IGl1dV9wcml2YXRlICpwcml2OwpAQCAtMTE5Niw2ICsxMjA2LDcgQEAgc3RhdGljIHN0 cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBpdXVfZGV2aWNlID0gewogCS50aW9jbXNldCA9IGl1dV90 aW9jbXNldCwKIAkuc2V0X3Rlcm1pb3MgPSBpdXVfc2V0X3Rlcm1pb3MsCiAJLmluaXRfdGVybWlv cyA9IGl1dV9pbml0X3Rlcm1pb3MsCisJLmF0dGFjaCA9IGl1dV9hdHRhY2gsCiAJLnBvcnRfcHJv YmUgPSBpdXVfcG9ydF9wcm9iZSwKIAkucG9ydF9yZW1vdmUgPSBpdXVfcG9ydF9yZW1vdmUsCiB9 OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMgYi9kcml2ZXJz L3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYwppbmRleCA0ZjdlMDcyZTRlMDAuLjkzMGJlOThkNTli MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMKKysrIGIvZHJp dmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMKQEAgLTY5OSw2ICs2OTksMTkgQEAgTU9EVUxF X0ZJUk1XQVJFKCJrZXlzcGFuX3BkYS9rZXlzcGFuX3BkYS5mdyIpOwogTU9EVUxFX0ZJUk1XQVJF KCJrZXlzcGFuX3BkYS94aXJjb21fcGdzLmZ3Iik7CiAjZW5kaWYKIAorc3RhdGljIGludCBrZXlz cGFuX3BkYV9hdHRhY2goc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkKK3sKKwl1bnNpZ25lZCBj aGFyIG51bV9wb3J0cyA9IHNlcmlhbC0+bnVtX3BvcnRzOworCisJaWYgKHNlcmlhbC0+bnVtX2J1 bGtfb3V0IDwgbnVtX3BvcnRzIHx8CisJCQlzZXJpYWwtPm51bV9pbnRlcnJ1cHRfaW4gPCBudW1f cG9ydHMpIHsKKwkJZGV2X2Vycigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgIm1pc3NpbmcgZW5k cG9pbnRzXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0 YXRpYyBpbnQga2V5c3Bhbl9wZGFfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpw b3J0KQogewogCkBAIC03NzYsNiArNzg5LDcgQEAgc3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2Ry aXZlciBrZXlzcGFuX3BkYV9kZXZpY2UgPSB7CiAJLmJyZWFrX2N0bCA9CQlrZXlzcGFuX3BkYV9i cmVha19jdGwsCiAJLnRpb2NtZ2V0ID0JCWtleXNwYW5fcGRhX3Rpb2NtZ2V0LAogCS50aW9jbXNl dCA9CQlrZXlzcGFuX3BkYV90aW9jbXNldCwKKwkuYXR0YWNoID0JCWtleXNwYW5fcGRhX2F0dGFj aCwKIAkucG9ydF9wcm9iZSA9CQlrZXlzcGFuX3BkYV9wb3J0X3Byb2JlLAogCS5wb3J0X3JlbW92 ZSA9CQlrZXlzcGFuX3BkYV9wb3J0X3JlbW92ZSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9zZXJpYWwva2w1a3VzYjEwNS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tsNWt1c2IxMDUuYwpp bmRleCBjYTg0MzAzMzE3MGMuLjg1ZTA3NGMzNDYyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv c2VyaWFsL2tsNWt1c2IxMDUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2w1a3VzYjEwNS5j CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGludCAga2xzaV8xMDVfb3BlbihzdHJ1Y3QgdHR5 X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCXJjID0gdXNiX3Nl cmlhbF9nZW5lcmljX29wZW4odHR5LCBwb3J0KTsKIAlpZiAocmMpIHsKIAkJcmV0dmFsID0gcmM7 Ci0JCWdvdG8gZXhpdDsKKwkJZ290byBlcnJfZnJlZV9jZmc7CiAJfQogCiAJcmMgPSB1c2JfY29u dHJvbF9tc2cocG9ydC0+c2VyaWFsLT5kZXYsCkBAIC0zMTUsMjEgKzMxNSwzOCBAQCBzdGF0aWMg aW50ICBrbHNpXzEwNV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB1c2Jfc2Vy aWFsX3BvcnQgKnBvcnQpCiAJaWYgKHJjIDwgMCkgewogCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJF bmFibGluZyByZWFkIGZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIHJjKTsKIAkJcmV0dmFsID0gcmM7 CisJCWdvdG8gZXJyX2dlbmVyaWNfY2xvc2U7CiAJfSBlbHNlCiAJCWRldl9kYmcoJnBvcnQtPmRl diwgIiVzIC0gZW5hYmxlZCByZWFkaW5nXG4iLCBfX2Z1bmNfXyk7CiAKIAlyYyA9IGtsc2lfMTA1 X2dldF9saW5lX3N0YXRlKHBvcnQsICZsaW5lX3N0YXRlKTsKLQlpZiAocmMgPj0gMCkgewotCQlz cGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwotCQlwcml2LT5saW5lX3N0YXRl ID0gbGluZV9zdGF0ZTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxh Z3MpOwotCQlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyAtIHJlYWQgbGluZSBzdGF0ZSAweCVseFxu IiwgX19mdW5jX18sIGxpbmVfc3RhdGUpOwotCQlyZXR2YWwgPSAwOwotCX0gZWxzZQorCWlmIChy YyA8IDApIHsKIAkJcmV0dmFsID0gcmM7CisJCWdvdG8gZXJyX2Rpc2FibGVfcmVhZDsKKwl9CisK KwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCXByaXYtPmxpbmVfc3Rh dGUgPSBsaW5lX3N0YXRlOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZs YWdzKTsKKwlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyAtIHJlYWQgbGluZSBzdGF0ZSAweCVseFxu IiwgX19mdW5jX18sCisJCQlsaW5lX3N0YXRlKTsKKworCXJldHVybiAwOwogCi1leGl0OgorZXJy X2Rpc2FibGVfcmVhZDoKKwl1c2JfY29udHJvbF9tc2cocG9ydC0+c2VyaWFsLT5kZXYsCisJCQkg ICAgIHVzYl9zbmRjdHJscGlwZShwb3J0LT5zZXJpYWwtPmRldiwgMCksCisJCQkgICAgIEtMNUtV U0IxMDVBX1NJT19DT05GSUdVUkUsCisJCQkgICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9ESVJf T1VULAorCQkJICAgICBLTDVLVVNCMTA1QV9TSU9fQ09ORklHVVJFX1JFQURfT0ZGLAorCQkJICAg ICAwLCAvKiBpbmRleCAqLworCQkJICAgICBOVUxMLCAwLAorCQkJICAgICBLTFNJX1RJTUVPVVQp OworZXJyX2dlbmVyaWNfY2xvc2U6CisJdXNiX3NlcmlhbF9nZW5lcmljX2Nsb3NlKHBvcnQpOwor ZXJyX2ZyZWVfY2ZnOgogCWtmcmVlKGNmZyk7CisKIAlyZXR1cm4gcmV0dmFsOwogfQogCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwva29iaWxfc2N0LmMgYi9kcml2ZXJzL3VzYi9zZXJp YWwva29iaWxfc2N0LmMKaW5kZXggYTMxZmYxNTAzYTk5Li45NTc5NWVmN2VjZDUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9rb2JpbF9zY3QuYworKysgYi9kcml2ZXJzL3VzYi9zZXJp YWwva29iaWxfc2N0LmMKQEAgLTUxLDYgKzUxLDcgQEAKIAogCiAvKiBGdW5jdGlvbiBwcm90b3R5 cGVzICovCitzdGF0aWMgaW50IGtvYmlsX2F0dGFjaChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFs KTsKIHN0YXRpYyBpbnQga29iaWxfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpw cm9iZSk7CiBzdGF0aWMgaW50IGtvYmlsX3BvcnRfcmVtb3ZlKHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnByb2JlKTsKIHN0YXRpYyBpbnQgIGtvYmlsX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eSwgc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCk7CkBAIC04Niw2ICs4Nyw3IEBAIHN0YXRp YyBzdHJ1Y3QgdXNiX3NlcmlhbF9kcml2ZXIga29iaWxfZGV2aWNlID0gewogCS5kZXNjcmlwdGlv biA9CQkiS09CSUwgVVNCIHNtYXJ0IGNhcmQgdGVybWluYWwiLAogCS5pZF90YWJsZSA9CQlpZF90 YWJsZSwKIAkubnVtX3BvcnRzID0JCTEsCisJLmF0dGFjaCA9CQlrb2JpbF9hdHRhY2gsCiAJLnBv cnRfcHJvYmUgPQkJa29iaWxfcG9ydF9wcm9iZSwKIAkucG9ydF9yZW1vdmUgPQkJa29iaWxfcG9y dF9yZW1vdmUsCiAJLmlvY3RsID0JCWtvYmlsX2lvY3RsLApAQCAtMTEzLDYgKzExNSwxNiBAQCBz dHJ1Y3Qga29iaWxfcHJpdmF0ZSB7CiB9OwogCiAKK3N0YXRpYyBpbnQga29iaWxfYXR0YWNoKHN0 cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCit7CisJaWYgKHNlcmlhbC0+bnVtX2ludGVycnVwdF9v dXQgPCBzZXJpYWwtPm51bV9wb3J0cykgeworCQlkZXZfZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ ZGV2LCAibWlzc2luZyBpbnRlcnJ1cHQtb3V0IGVuZHBvaW50XG4iKTsKKwkJcmV0dXJuIC1FTk9E RVY7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQga29iaWxfcG9ydF9wcm9iZShz dHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJp YWwgPSBwb3J0LT5zZXJpYWw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcy MC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL21vczc3MjAuYwppbmRleCBjM2I4YWUzNjA0MjQuLjU2 YzRmNmQwNzRjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL21vczc3MjAuYworKysg Yi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcyMC5jCkBAIC02NSw4ICs2NSw2IEBAIHN0cnVjdCBt b3NjaGlwX3BvcnQgewogCXN0cnVjdCB1cmIJCSp3cml0ZV91cmJfcG9vbFtOVU1fVVJCU107CiB9 OwogCi1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIG1vc2NoaXA3NzIwXzJwb3J0X2Ry aXZlcjsKLQogI2RlZmluZSBVU0JfVkVORE9SX0lEX01PU0NISVAJCTB4OTcxMAogI2RlZmluZSBN T1NDSElQX0RFVklDRV9JRF83NzIwCQkweDc3MjAKICNkZWZpbmUgTU9TQ0hJUF9ERVZJQ0VfSURf NzcxNQkJMHg3NzE1CkBAIC05NjIsMjUgKzk2MCw2IEBAIHN0YXRpYyB2b2lkIG1vczc3MjBfYnVs a19vdXRfZGF0YV9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCiAJCXR0eV9wb3J0X3R0eV93YWtl dXAoJm1vczc3MjBfcG9ydC0+cG9ydC0+cG9ydCk7CiB9CiAKLS8qCi0gKiBtb3M3N3h4X3Byb2Jl Ci0gKgl0aGlzIGZ1bmN0aW9uIGluc3RhbGxzIHRoZSBhcHByb3ByaWF0ZSByZWFkIGludGVycnVw dCBlbmRwb2ludCBjYWxsYmFjawotICoJZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGRldmljZSBp cyBhIDc3MjAgb3IgNzcxNSwgdGh1cyBhdm9pZGluZyBjb3N0bHkKLSAqCXJ1bi10aW1lIGNoZWNr cyBpbiB0aGUgaGlnaC1mcmVxdWVuY3kgY2FsbGJhY2sgcm91dGluZSBpdHNlbGYuCi0gKi8KLXN0 YXRpYyBpbnQgbW9zNzd4eF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAotCQkJIGNv bnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKLXsKLQlpZiAoaWQtPmlkUHJvZHVjdCA9PSBN T1NDSElQX0RFVklDRV9JRF83NzE1KQotCQltb3NjaGlwNzcyMF8ycG9ydF9kcml2ZXIucmVhZF9p bnRfY2FsbGJhY2sgPQotCQkJbW9zNzcxNV9pbnRlcnJ1cHRfY2FsbGJhY2s7Ci0JZWxzZQotCQlt b3NjaGlwNzcyMF8ycG9ydF9kcml2ZXIucmVhZF9pbnRfY2FsbGJhY2sgPQotCQkJbW9zNzcyMF9p bnRlcnJ1cHRfY2FsbGJhY2s7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBtb3M3N3h4 X2NhbGNfbnVtX3BvcnRzKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiB7CiAJdTE2IHByb2R1 Y3QgPSBsZTE2X3RvX2NwdShzZXJpYWwtPmRldi0+ZGVzY3JpcHRvci5pZFByb2R1Y3QpOwpAQCAt MTkwMSw2ICsxODgwLDExIEBAIHN0YXRpYyBpbnQgbW9zNzcyMF9zdGFydHVwKHN0cnVjdCB1c2Jf c2VyaWFsICpzZXJpYWwpCiAJdTE2IHByb2R1Y3Q7CiAJaW50IHJldF92YWw7CiAKKwlpZiAoc2Vy aWFsLT5udW1fYnVsa19pbiA8IDIgfHwgc2VyaWFsLT5udW1fYnVsa19vdXQgPCAyKSB7CisJCWRl dl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5nIGJ1bGsgZW5kcG9pbnRzXG4i KTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCiAJcHJvZHVjdCA9IGxlMTZfdG9fY3B1KHNlcmlh bC0+ZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7CiAJZGV2ID0gc2VyaWFsLT5kZXY7CiAKQEAg LTE5MjUsMTkgKzE5MDksMTggQEAgc3RhdGljIGludCBtb3M3NzIwX3N0YXJ0dXAoc3RydWN0IHVz Yl9zZXJpYWwgKnNlcmlhbCkKIAkJCXRtcC0+aW50ZXJydXB0X2luX2VuZHBvaW50QWRkcmVzczsK IAkJc2VyaWFsLT5wb3J0WzFdLT5pbnRlcnJ1cHRfaW5fdXJiID0gTlVMTDsKIAkJc2VyaWFsLT5w b3J0WzFdLT5pbnRlcnJ1cHRfaW5fYnVmZmVyID0gTlVMTDsKKworCQlpZiAoc2VyaWFsLT5wb3J0 WzBdLT5pbnRlcnJ1cHRfaW5fdXJiKSB7CisJCQlzdHJ1Y3QgdXJiICp1cmIgPSBzZXJpYWwtPnBv cnRbMF0tPmludGVycnVwdF9pbl91cmI7CisKKwkJCXVyYi0+Y29tcGxldGUgPSBtb3M3NzE1X2lu dGVycnVwdF9jYWxsYmFjazsKKwkJfQogCX0KIAogCS8qIHNldHRpbmcgY29uZmlndXJhdGlvbiBm ZWF0dXJlIHRvIG9uZSAqLwogCXVzYl9jb250cm9sX21zZyhzZXJpYWwtPmRldiwgdXNiX3NuZGN0 cmxwaXBlKHNlcmlhbC0+ZGV2LCAwKSwKIAkJCShfX3U4KTB4MDMsIDB4MDAsIDB4MDEsIDB4MDAs IE5VTEwsIDB4MDAsIDUwMDApOwogCi0JLyogc3RhcnQgdGhlIGludGVycnVwdCB1cmIgKi8KLQly ZXRfdmFsID0gdXNiX3N1Ym1pdF91cmIoc2VyaWFsLT5wb3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJi LCBHRlBfS0VSTkVMKTsKLQlpZiAocmV0X3ZhbCkKLQkJZGV2X2VycigmZGV2LT5kZXYsCi0JCQki JXMgLSBFcnJvciAlZCBzdWJtaXR0aW5nIGNvbnRyb2wgdXJiXG4iLAotCQkJX19mdW5jX18sIHJl dF92YWwpOwotCiAjaWZkZWYgQ09ORklHX1VTQl9TRVJJQUxfTU9TNzcxNV9QQVJQT1JUCiAJaWYg KHByb2R1Y3QgPT0gTU9TQ0hJUF9ERVZJQ0VfSURfNzcxNSkgewogCQlyZXRfdmFsID0gbW9zNzcx NV9wYXJwb3J0X2luaXQoc2VyaWFsKTsKQEAgLTE5NDUsNiArMTkyOCwxMyBAQCBzdGF0aWMgaW50 IG1vczc3MjBfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCQkJcmV0dXJuIHJl dF92YWw7CiAJfQogI2VuZGlmCisJLyogc3RhcnQgdGhlIGludGVycnVwdCB1cmIgKi8KKwlyZXRf dmFsID0gdXNiX3N1Ym1pdF91cmIoc2VyaWFsLT5wb3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJiLCBH RlBfS0VSTkVMKTsKKwlpZiAocmV0X3ZhbCkgeworCQlkZXZfZXJyKCZkZXYtPmRldiwgImZhaWxl ZCB0byBzdWJtaXQgaW50ZXJydXB0IHVyYjogJWRcbiIsCisJCQlyZXRfdmFsKTsKKwl9CisKIAkv KiBMU1IgRm9yIFBvcnQgMSAqLwogCXJlYWRfbW9zX3JlZyhzZXJpYWwsIDAsIExTUiwgJmRhdGEp OwogCWRldl9kYmcoJmRldi0+ZGV2LCAiTFNSOiV4XG4iLCBkYXRhKTsKQEAgLTE5NTQsNiArMTk0 NCw4IEBAIHN0YXRpYyBpbnQgbW9zNzcyMF9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJp YWwpCiAKIHN0YXRpYyB2b2lkIG1vczc3MjBfcmVsZWFzZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2Vy aWFsKQogeworCXVzYl9raWxsX3VyYihzZXJpYWwtPnBvcnRbMF0tPmludGVycnVwdF9pbl91cmIp OworCiAjaWZkZWYgQ09ORklHX1VTQl9TRVJJQUxfTU9TNzcxNV9QQVJQT1JUCiAJLyogY2xvc2Ug dGhlIHBhcmFsbGVsIHBvcnQgKi8KIApAQCAtMjAzNiw3ICsyMDI4LDYgQEAgc3RhdGljIHN0cnVj dCB1c2Jfc2VyaWFsX2RyaXZlciBtb3NjaGlwNzcyMF8ycG9ydF9kcml2ZXIgPSB7CiAJLmNsb3Nl CQkJPSBtb3M3NzIwX2Nsb3NlLAogCS50aHJvdHRsZQkJPSBtb3M3NzIwX3Rocm90dGxlLAogCS51 bnRocm90dGxlCQk9IG1vczc3MjBfdW50aHJvdHRsZSwKLQkucHJvYmUJCQk9IG1vczc3eHhfcHJv YmUsCiAJLmF0dGFjaAkJCT0gbW9zNzcyMF9zdGFydHVwLAogCS5yZWxlYXNlCQk9IG1vczc3MjBf cmVsZWFzZSwKIAkucG9ydF9wcm9iZQkJPSBtb3M3NzIwX3BvcnRfcHJvYmUsCkBAIC0yMDUwLDcg KzIwNDEsNyBAQCBzdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIG1vc2NoaXA3NzIwXzJw b3J0X2RyaXZlciA9IHsKIAkuY2hhcnNfaW5fYnVmZmVyCT0gbW9zNzcyMF9jaGFyc19pbl9idWZm ZXIsCiAJLmJyZWFrX2N0bAkJPSBtb3M3NzIwX2JyZWFrLAogCS5yZWFkX2J1bGtfY2FsbGJhY2sJ PSBtb3M3NzIwX2J1bGtfaW5fY2FsbGJhY2ssCi0JLnJlYWRfaW50X2NhbGxiYWNrCT0gTlVMTCAg LyogZHluYW1pY2FsbHkgYXNzaWduZWQgaW4gcHJvYmUoKSAqLworCS5yZWFkX2ludF9jYWxsYmFj awk9IG1vczc3MjBfaW50ZXJydXB0X2NhbGxiYWNrLAogfTsKIAogc3RhdGljIHN0cnVjdCB1c2Jf c2VyaWFsX2RyaXZlciAqIGNvbnN0IHNlcmlhbF9kcml2ZXJzW10gPSB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9zZXJpYWwvbW9zNzg0MC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAu YwppbmRleCBmNWYzYjQ5ZmY5ZDUuLjdjYjQ4ZDNhZjFmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2Ivc2VyaWFsL21vczc4NDAuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzg0MC5jCkBA IC0xMDM3LDkgKzEwMzcsNyBAQCBzdGF0aWMgaW50IG1vczc4NDBfb3BlbihzdHJ1Y3QgdHR5X3N0 cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCQkJCXNlcmlhbCwKIAkJ CQlzZXJpYWwtPnBvcnRbMF0tPmludGVycnVwdF9pbl91cmItPmludGVydmFsKTsKIAotCQkJLyog c3RhcnQgaW50ZXJydXB0IHJlYWQgZm9yIG1vczc4NDAgICAgICAgICAgICAgICAqCi0JCQkgKiB3 aWxsIGNvbnRpbnVlIGFzIGxvbmcgYXMgbW9zNzg0MCBpcyBjb25uZWN0ZWQgICovCi0KKwkJCS8q IHN0YXJ0IGludGVycnVwdCByZWFkIGZvciBtb3M3ODQwICovCiAJCQlyZXNwb25zZSA9CiAJCQkg ICAgdXNiX3N1Ym1pdF91cmIoc2VyaWFsLT5wb3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJiLAogCQkJ CQkgICBHRlBfS0VSTkVMKTsKQEAgLTIxNzksNiArMjE3NywxNyBAQCBzdGF0aWMgaW50IG1vczc4 NDBfY2FsY19udW1fcG9ydHMoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkKIAlyZXR1cm4gbW9z Nzg0MF9udW1fcG9ydHM7CiB9CiAKK3N0YXRpYyBpbnQgbW9zNzg0MF9hdHRhY2goc3RydWN0IHVz Yl9zZXJpYWwgKnNlcmlhbCkKK3sKKwlpZiAoc2VyaWFsLT5udW1fYnVsa19pbiA8IHNlcmlhbC0+ bnVtX3BvcnRzIHx8CisJCQlzZXJpYWwtPm51bV9idWxrX291dCA8IHNlcmlhbC0+bnVtX3BvcnRz KSB7CisJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5nIGVuZHBvaW50 c1xuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMg aW50IG1vczc4NDBfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogewog CXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7CkBAIC0yNDU3LDYgKzI0 NjYsNyBAQCBzdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIG1vc2NoaXA3ODQwXzRwb3J0 X2RldmljZSA9IHsKIAkudGlvY21zZXQgPSBtb3M3ODQwX3Rpb2Ntc2V0LAogCS50aW9jbWl3YWl0 ID0gdXNiX3NlcmlhbF9nZW5lcmljX3Rpb2NtaXdhaXQsCiAJLmdldF9pY291bnQgPSB1c2Jfc2Vy aWFsX2dlbmVyaWNfZ2V0X2ljb3VudCwKKwkuYXR0YWNoID0gbW9zNzg0MF9hdHRhY2gsCiAJLnBv cnRfcHJvYmUgPSBtb3M3ODQwX3BvcnRfcHJvYmUsCiAJLnBvcnRfcmVtb3ZlID0gbW9zNzg0MF9w b3J0X3JlbW92ZSwKIAkucmVhZF9idWxrX2NhbGxiYWNrID0gbW9zNzg0MF9idWxrX2luX2NhbGxi YWNrLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL29tbmluZXQuYyBiL2RyaXZlcnMv dXNiL3NlcmlhbC9vbW5pbmV0LmMKaW5kZXggZjZjNjkwMGJjY2YwLi5hMTgwYjE3ZDI0MzIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vbW5pbmV0LmMKKysrIGIvZHJpdmVycy91c2Iv c2VyaWFsL29tbmluZXQuYwpAQCAtMzgsNiArMzgsNyBAQCBzdGF0aWMgaW50ICBvbW5pbmV0X3dy aXRlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQs CiAJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpOwogc3RhdGljIGludCAg b21uaW5ldF93cml0ZV9yb29tKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogc3RhdGljIHZvaWQg b21uaW5ldF9kaXNjb25uZWN0KHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpOworc3RhdGljIGlu dCBvbW5pbmV0X2F0dGFjaChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKTsKIHN0YXRpYyBpbnQg b21uaW5ldF9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpOwogc3RhdGlj IGludCBvbW5pbmV0X3BvcnRfcmVtb3ZlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpOwog CkBAIC01Niw2ICs1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX3NlcmlhbF9kcml2ZXIgenl4ZWxf b21uaW5ldF9kZXZpY2UgPSB7CiAJLmRlc2NyaXB0aW9uID0JCSJaeVhFTCAtIG9tbmkubmV0IGxj ZCBwbHVzIHVzYiIsCiAJLmlkX3RhYmxlID0JCWlkX3RhYmxlLAogCS5udW1fcG9ydHMgPQkJMSwK KwkuYXR0YWNoID0JCW9tbmluZXRfYXR0YWNoLAogCS5wb3J0X3Byb2JlID0JCW9tbmluZXRfcG9y dF9wcm9iZSwKIAkucG9ydF9yZW1vdmUgPQkJb21uaW5ldF9wb3J0X3JlbW92ZSwKIAkub3BlbiA9 CQkJb21uaW5ldF9vcGVuLApAQCAtMTA0LDYgKzEwNiwxNyBAQCBzdHJ1Y3Qgb21uaW5ldF9kYXRh IHsKIAlfX3U4CW9kX291dHNlcTsJLyogU2VxdWVuY2UgbnVtYmVyIGZvciBidWxrX291dCBVUkJz ICovCiB9OwogCitzdGF0aWMgaW50IG9tbmluZXRfYXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpz ZXJpYWwpCit7CisJLyogVGhlIHNlY29uZCBidWxrLW91dCBlbmRwb2ludCBpcyB1c2VkIGZvciB3 cml0aW5nLiAqLworCWlmIChzZXJpYWwtPm51bV9idWxrX291dCA8IDIpIHsKKwkJZGV2X2Vycigm c2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgIm1pc3NpbmcgZW5kcG9pbnRzXG4iKTsKKwkJcmV0dXJu IC1FTk9ERVY7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb21uaW5ldF9wb3J0 X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiB7CiAJc3RydWN0IG9tbmluZXRf ZGF0YSAqb2Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMgYi9kcml2 ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKaW5kZXggZjI0M2M3MzRlYjA1Li4yYzUzNzc1MjI2YzUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvb3B0aW9uLmMKQEAgLTI3MSw2ICsyNzEsOCBAQCBzdGF0aWMgdm9pZCBvcHRpb25f aW5zdGF0X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYik7CiAjZGVmaW5lIFRFTElUX1BST0RVQ1Rf Q0M4NjRfU0lOR0xFCQkweDEwMDYKICNkZWZpbmUgVEVMSVRfUFJPRFVDVF9ERTkxMF9EVUFMCQkw eDEwMTAKICNkZWZpbmUgVEVMSVRfUFJPRFVDVF9VRTkxMF9WMgkJCTB4MTAxMgorI2RlZmluZSBU RUxJVF9QUk9EVUNUX0xFOTIyX1VTQkNGRzEJCTB4MTA0MAorI2RlZmluZSBURUxJVF9QUk9EVUNU X0xFOTIyX1VTQkNGRzIJCTB4MTA0MQogI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTIyX1VTQkNG RzAJCTB4MTA0MgogI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTIyX1VTQkNGRzMJCTB4MTA0Mwog I2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTIyX1VTQkNGRzUJCTB4MTA0NQpAQCAtMTIyOSw2ICsx MjMxLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBvcHRpb25faWRzW10g PSB7CiAJeyBVU0JfREVWSUNFKFRFTElUX1ZFTkRPUl9JRCwgVEVMSVRfUFJPRFVDVF9VRTkxMF9W MikgfSwKIAl7IFVTQl9ERVZJQ0UoVEVMSVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xFOTIy X1VTQkNGRzApLAogCQkuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJnRlbGl0X2xlOTIy X2JsYWNrbGlzdF91c2JjZmcwIH0sCisJeyBVU0JfREVWSUNFKFRFTElUX1ZFTkRPUl9JRCwgVEVM SVRfUFJPRFVDVF9MRTkyMl9VU0JDRkcxKSwKKwkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9u Z190KSZ0ZWxpdF9sZTkxMF9ibGFja2xpc3QgfSwKKwl7IFVTQl9ERVZJQ0UoVEVMSVRfVkVORE9S X0lELCBURUxJVF9QUk9EVUNUX0xFOTIyX1VTQkNGRzIpLAorCQkuZHJpdmVyX2luZm8gPSAoa2Vy bmVsX3Vsb25nX3QpJnRlbGl0X2xlOTIyX2JsYWNrbGlzdF91c2JjZmczIH0sCiAJeyBVU0JfREVW SUNFKFRFTElUX1ZFTkRPUl9JRCwgVEVMSVRfUFJPRFVDVF9MRTkyMl9VU0JDRkczKSwKIAkJLmRy aXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkyMl9ibGFja2xpc3RfdXNiY2Zn MyB9LAogCXsgVVNCX0RFVklDRV9JTlRFUkZBQ0VfQ0xBU1MoVEVMSVRfVkVORE9SX0lELCBURUxJ VF9QUk9EVUNUX0xFOTIyX1VTQkNGRzUsIDB4ZmYpLApAQCAtMjAwMCw2ICsyMDA2LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG9wdGlvbl9pZHNbXSA9IHsKIAl7IFVTQl9E RVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MjAwMSwgMHg3ZDAyLCAweGZmLCAweDAwLCAweDAw KSB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgyMDAxLCAweDdkMDMsIDB4 ZmYsIDB4MDIsIDB4MDEpIH0sCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDIw MDEsIDB4N2QwMywgMHhmZiwgMHgwMCwgMHgwMCkgfSwKKwl7IFVTQl9ERVZJQ0VfSU5URVJGQUNF X0NMQVNTKDB4MjAwMSwgMHg3ZDA0LCAweGZmKSB9LAkJCS8qIEQtTGluayBEV00tMTU4ICovCiAJ eyBVU0JfREVWSUNFX0lOVEVSRkFDRV9DTEFTUygweDIwMDEsIDB4N2UxOSwgMHhmZiksCQkJLyog RC1MaW5rIERXTS0yMjEgQjEgKi8KIAkgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkm bmV0X2ludGY0X2JsYWNrbGlzdCB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8o MHgwN2QxLCAweDNlMDEsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sIC8qIEQtTGluayBEV00tMTUyL0Mx ICovCkBAIC0yMDExLDYgKzIwMTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2Vf aWQgb3B0aW9uX2lkc1tdID0gewogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oV0VU RUxFQ09NX1ZFTkRPUl9JRCwgV0VURUxFQ09NX1BST0RVQ1RfV01EMjAwLCAweGZmLCAweGZmLCAw eGZmKSB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oV0VURUxFQ09NX1ZFTkRP Ul9JRCwgV0VURUxFQ09NX1BST0RVQ1RfNjgwMiwgMHhmZiwgMHhmZiwgMHhmZikgfSwKIAl7IFVT Ql9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKFdFVEVMRUNPTV9WRU5ET1JfSUQsIFdFVEVMRUNP TV9QUk9EVUNUX1dNRDMwMCwgMHhmZiwgMHhmZiwgMHhmZikgfSwKKwl7IFVTQl9ERVZJQ0VfQU5E X0lOVEVSRkFDRV9JTkZPKDB4MDNmMCwgMHg0MjFkLCAweGZmLCAweGZmLCAweGZmKSB9LCAvKiBI UCBsdDI1MjMgKE5vdmF0ZWwgRTM3MSkgKi8KIAl7IH0gLyogVGVybWluYXRpbmcgZW50cnkgKi8K IH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgb3B0aW9uX2lkcyk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9zZXJpYWwvb3RpNjg1OC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL290aTY4NTgu YwppbmRleCBhNGI4OGJjMDM4YjYuLmI4YmY1MmJmN2E5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2Ivc2VyaWFsL290aTY4NTguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3RpNjg1OC5jCkBA IC0xMzQsNiArMTM0LDcgQEAgc3RhdGljIGludCBvdGk2ODU4X2NoYXJzX2luX2J1ZmZlcihzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5KTsKIHN0YXRpYyBpbnQgb3RpNjg1OF90aW9jbWdldChzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5KTsKIHN0YXRpYyBpbnQgb3RpNjg1OF90aW9jbXNldChzdHJ1Y3QgdHR5 X3N0cnVjdCAqdHR5LAogCQkJCXVuc2lnbmVkIGludCBzZXQsIHVuc2lnbmVkIGludCBjbGVhcik7 CitzdGF0aWMgaW50IG90aTY4NThfYXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpOwog c3RhdGljIGludCBvdGk2ODU4X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9y dCk7CiBzdGF0aWMgaW50IG90aTY4NThfcG9ydF9yZW1vdmUoc3RydWN0IHVzYl9zZXJpYWxfcG9y dCAqcG9ydCk7CiAKQEAgLTE1OCw2ICsxNTksNyBAQCBzdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxf ZHJpdmVyIG90aTY4NThfZGV2aWNlID0gewogCS53cml0ZV9idWxrX2NhbGxiYWNrID0Jb3RpNjg1 OF93cml0ZV9idWxrX2NhbGxiYWNrLAogCS53cml0ZV9yb29tID0JCW90aTY4NThfd3JpdGVfcm9v bSwKIAkuY2hhcnNfaW5fYnVmZmVyID0Jb3RpNjg1OF9jaGFyc19pbl9idWZmZXIsCisJLmF0dGFj aCA9CQlvdGk2ODU4X2F0dGFjaCwKIAkucG9ydF9wcm9iZSA9CQlvdGk2ODU4X3BvcnRfcHJvYmUs CiAJLnBvcnRfcmVtb3ZlID0JCW90aTY4NThfcG9ydF9yZW1vdmUsCiB9OwpAQCAtMzI0LDYgKzMy NiwyMCBAQCBzdGF0aWMgdm9pZCBzZW5kX2RhdGEoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQog CXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogCitzdGF0aWMgaW50IG90aTY4NThf YXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCit7CisJdW5zaWduZWQgY2hhciBudW1f cG9ydHMgPSBzZXJpYWwtPm51bV9wb3J0czsKKworCWlmIChzZXJpYWwtPm51bV9idWxrX2luIDwg bnVtX3BvcnRzIHx8CisJCQlzZXJpYWwtPm51bV9idWxrX291dCA8IG51bV9wb3J0cyB8fAorCQkJ c2VyaWFsLT5udW1faW50ZXJydXB0X2luIDwgbnVtX3BvcnRzKSB7CisJCWRldl9lcnIoJnNlcmlh bC0+aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5nIGVuZHBvaW50c1xuIik7CisJCXJldHVybiAtRU5P REVWOworCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG90aTY4NThfcG9ydF9wcm9i ZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCBvdGk2ODU4X3ByaXZh dGUgKnByaXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMgYi9kcml2 ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMKaW5kZXggNTIxOTU5MzcwYjY2Li40NDU1YjFmZDhiNzAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvcGwyMzAzLmMKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1 c2JfZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7CiAJeyBVU0JfREVWSUNFKElPREFUQV9WRU5ET1Jf SUQsIElPREFUQV9QUk9EVUNUX0lEKSB9LAogCXsgVVNCX0RFVklDRShJT0RBVEFfVkVORE9SX0lE LCBJT0RBVEFfUFJPRFVDVF9JRF9SU0FRNSkgfSwKIAl7IFVTQl9ERVZJQ0UoQVRFTl9WRU5ET1Jf SUQsIEFURU5fUFJPRFVDVF9JRCkgfSwKKwl7IFVTQl9ERVZJQ0UoQVRFTl9WRU5ET1JfSUQsIEFU RU5fUFJPRFVDVF9JRDIpIH0sCiAJeyBVU0JfREVWSUNFKEFURU5fVkVORE9SX0lEMiwgQVRFTl9Q Uk9EVUNUX0lEKSB9LAogCXsgVVNCX0RFVklDRShFTENPTV9WRU5ET1JfSUQsIEVMQ09NX1BST0RV Q1RfSUQpIH0sCiAJeyBVU0JfREVWSUNFKEVMQ09NX1ZFTkRPUl9JRCwgRUxDT01fUFJPRFVDVF9J RF9VQ1NHVCkgfSwKQEAgLTIxNiw5ICsyMTcsMTcgQEAgc3RhdGljIGludCBwbDIzMDNfcHJvYmUo c3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCwKIHN0YXRpYyBpbnQgcGwyMzAzX3N0YXJ0dXAoc3Ry dWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkKIHsKIAlzdHJ1Y3QgcGwyMzAzX3NlcmlhbF9wcml2YXRl ICpzcHJpdjsKKwl1bnNpZ25lZCBjaGFyIG51bV9wb3J0cyA9IHNlcmlhbC0+bnVtX3BvcnRzOwog CWVudW0gcGwyMzAzX3R5cGUgdHlwZSA9IFRZUEVfMDE7CiAJdW5zaWduZWQgY2hhciAqYnVmOwog CisJaWYgKHNlcmlhbC0+bnVtX2J1bGtfaW4gPCBudW1fcG9ydHMgfHwKKwkJCXNlcmlhbC0+bnVt X2J1bGtfb3V0IDwgbnVtX3BvcnRzIHx8CisJCQlzZXJpYWwtPm51bV9pbnRlcnJ1cHRfaW4gPCBu dW1fcG9ydHMpIHsKKwkJZGV2X2Vycigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgIm1pc3Npbmcg ZW5kcG9pbnRzXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCiAJc3ByaXYgPSBremFsbG9j KHNpemVvZigqc3ByaXYpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXNwcml2KQogCQlyZXR1cm4gLUVO T01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuaCBiL2RyaXZlcnMv dXNiL3NlcmlhbC9wbDIzMDMuaAppbmRleCBlM2I3YWY4YWRmYjcuLjA5ZDliZTg4MjA5ZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5oCisrKyBiL2RyaXZlcnMvdXNiL3Nl cmlhbC9wbDIzMDMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBBVEVOX1ZFTkRPUl9JRAkJ MHgwNTU3CiAjZGVmaW5lIEFURU5fVkVORE9SX0lEMgkJMHgwNTQ3CiAjZGVmaW5lIEFURU5fUFJP RFVDVF9JRAkJMHgyMDA4CisjZGVmaW5lIEFURU5fUFJPRFVDVF9JRDIJMHgyMTE4CiAKICNkZWZp bmUgSU9EQVRBX1ZFTkRPUl9JRAkweDA0YmIKICNkZWZpbmUgSU9EQVRBX1BST0RVQ1RfSUQJMHgw YTAzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvcWNzZXJpYWwuYyBiL2RyaXZlcnMv dXNiL3NlcmlhbC9xY3NlcmlhbC5jCmluZGV4IGYwYTJhZDE1YTk5Mi4uZTA4YWUwNTA1YWQyIDEw MDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvcWNzZXJpYWwuYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvcWNzZXJpYWwuYwpAQCAtMTI0LDYgKzEyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0gewogCXtVU0JfREVWSUNFKDB4MTQxMCwgMHhh MDIxKX0sCS8qIE5vdmF0ZWwgR29iaSAzMDAwIENvbXBvc2l0ZSAqLwogCXtVU0JfREVWSUNFKDB4 NDEzYywgMHg4MTkzKX0sCS8qIERlbGwgR29iaSAzMDAwIFFETCAqLwogCXtVU0JfREVWSUNFKDB4 NDEzYywgMHg4MTk0KX0sCS8qIERlbGwgR29iaSAzMDAwIENvbXBvc2l0ZSAqLworCXtVU0JfREVW SUNFKDB4NDEzYywgMHg4MWE2KX0sCS8qIERlbGwgRFc1NTcwIFFETCAoTUM4ODA1KSAqLwogCXtV U0JfREVWSUNFKDB4MTE5OSwgMHg2OGE0KX0sCS8qIFNpZXJyYSBXaXJlbGVzcyBRREwgKi8KIAl7 VVNCX0RFVklDRSgweDExOTksIDB4NjhhNSl9LAkvKiBTaWVycmEgV2lyZWxlc3MgTW9kZW0gKi8K IAl7VVNCX0RFVklDRSgweDExOTksIDB4NjhhOCl9LAkvKiBTaWVycmEgV2lyZWxlc3MgUURMICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvcXVhdGVjaDIuYyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9xdWF0ZWNoMi5jCmluZGV4IGIxODk3NGNiZDk5NS4uYTNlZDA3YzU4NzU0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvcXVhdGVjaDIuYworKysgYi9kcml2ZXJzL3VzYi9z ZXJpYWwvcXVhdGVjaDIuYwpAQCAtNDA4LDE2ICs0MDgsMTIgQEAgc3RhdGljIHZvaWQgcXQyX2Ns b3NlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiB7CiAJc3RydWN0IHVzYl9zZXJpYWwg KnNlcmlhbDsKIAlzdHJ1Y3QgcXQyX3BvcnRfcHJpdmF0ZSAqcG9ydF9wcml2OwotCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CiAJaW50IGk7CiAKIAlzZXJpYWwgPSBwb3J0LT5zZXJpYWw7CiAJcG9ydF9w cml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCi0Jc3Bpbl9sb2NrX2lycXNh dmUoJnBvcnRfcHJpdi0+dXJiX2xvY2ssIGZsYWdzKTsKIAl1c2Jfa2lsbF91cmIocG9ydF9wcml2 LT53cml0ZV91cmIpOwotCXBvcnRfcHJpdi0+dXJiX2luX3VzZSA9IGZhbHNlOwotCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnBvcnRfcHJpdi0+dXJiX2xvY2ssIGZsYWdzKTsKIAogCS8qIGZsdXNo IHRoZSBwb3J0IHRyYW5zbWl0IGJ1ZmZlciAqLwogCWkgPSB1c2JfY29udHJvbF9tc2coc2VyaWFs LT5kZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jIGIvZHJpdmVy cy91c2Ivc2VyaWFsL3NwY3A4eDUuYwppbmRleCBlZjBkYmYwNzAzYzUuLjQ3NWU2YzMxYjI2NiAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvc3BjcDh4NS5jCkBAIC0xNTQsNiArMTU0LDE5IEBAIHN0YXRpYyBpbnQgc3BjcDh4 NV9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAogCXJldHVybiAwOwogfQogCitzdGF0 aWMgaW50IHNwY3A4eDVfYXR0YWNoKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCit7CisJdW5z aWduZWQgY2hhciBudW1fcG9ydHMgPSBzZXJpYWwtPm51bV9wb3J0czsKKworCWlmIChzZXJpYWwt Pm51bV9idWxrX2luIDwgbnVtX3BvcnRzIHx8CisJCQlzZXJpYWwtPm51bV9idWxrX291dCA8IG51 bV9wb3J0cykgeworCQlkZXZfZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2luZyBl bmRwb2ludHNcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwog c3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9y dCkKIHsKIAljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQgPSB1c2JfZ2V0X3NlcmlhbF9k YXRhKHBvcnQtPnNlcmlhbCk7CkBAIC00NzcsNiArNDkwLDcgQEAgc3RhdGljIHN0cnVjdCB1c2Jf c2VyaWFsX2RyaXZlciBzcGNwOHg1X2RldmljZSA9IHsKIAkudGlvY21nZXQJCT0gc3BjcDh4NV90 aW9jbWdldCwKIAkudGlvY21zZXQJCT0gc3BjcDh4NV90aW9jbXNldCwKIAkucHJvYmUJCQk9IHNw Y3A4eDVfcHJvYmUsCisJLmF0dGFjaAkJCT0gc3BjcDh4NV9hdHRhY2gsCiAJLnBvcnRfcHJvYmUJ CT0gc3BjcDh4NV9wb3J0X3Byb2JlLAogCS5wb3J0X3JlbW92ZQkJPSBzcGNwOHg1X3BvcnRfcmVt b3ZlLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC90aV91c2JfMzQxMF81MDUy LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdGlfdXNiXzM0MTBfNTA1Mi5jCmluZGV4IDdhMWY0NDZh YjIwNC4uZjYwYTFjOGYyZTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvdGlfdXNi XzM0MTBfNTA1Mi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC90aV91c2JfMzQxMF81MDUyLmMK QEAgLTMzOSw2ICszMzksMTMgQEAgc3RhdGljIGludCB0aV9zdGFydHVwKHN0cnVjdCB1c2Jfc2Vy aWFsICpzZXJpYWwpCiAJCWdvdG8gZnJlZV90ZGV2OwogCX0KIAorCWlmIChzZXJpYWwtPm51bV9i dWxrX2luIDwgc2VyaWFsLT5udW1fcG9ydHMgfHwKKwkJCXNlcmlhbC0+bnVtX2J1bGtfb3V0IDwg c2VyaWFsLT5udW1fcG9ydHMpIHsKKwkJZGV2X2Vycigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwg Im1pc3NpbmcgZW5kcG9pbnRzXG4iKTsKKwkJc3RhdHVzID0gLUVOT0RFVjsKKwkJZ290byBmcmVl X3RkZXY7CisJfQorCiAJcmV0dXJuIDA7CiAKIGZyZWVfdGRldjoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmggYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1 YWxfZGV2cy5oCmluZGV4IDhhNDljNDc2NTdmNC4uOTYzNzllNzE1ZDRiIDEwMDY0NAotLS0gYS9k cml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oCisrKyBiL2RyaXZlcnMvdXNiL3N0b3Jh Z2UvdW51c3VhbF9kZXZzLmgKQEAgLTE5OTAsNiArMTk5MCwxMyBAQCBVTlVTVUFMX0RFViggIDB4 MTUyZCwgMHgyNTY2LCAweDAxMTQsIDB4MDExNCwKIAkJVVNCX1NDX0RFVklDRSwgVVNCX1BSX0RF VklDRSwgTlVMTCwKIAkJVVNfRkxfQlJPS0VOX0ZVQSApLAogCisvKiBSZXBvcnRlZC1ieSBHZW9y Z2UgQ2hlcmlhbiA8Z2VvcmdlLmNoZXJpYW5AY2F2aXVtLmNvbT4gKi8KK1VOVVNVQUxfREVWKDB4 MTUyZCwgMHg5NTYxLCAweDAwMDAsIDB4OTk5OSwKKwkJIkpNaWNyb24iLAorCQkiSk1TNTZ4IiwK KwkJVVNCX1NDX0RFVklDRSwgVVNCX1BSX0RFVklDRSwgTlVMTCwKKwkJVVNfRkxfTk9fUkVQT1JU X09QQ09ERVMpLAorCiAvKiBFbnRyZWdhIFRlY2hub2xvZ2llcyBVMS1TQzI1IChsYXRlciBYaXJj b20gUG9ydEdlYXIgUEdTQ1NJKQogICogYW5kIE1hYyBVU0IgRG9jayBVU0ItU0NTSSAqLwogVU5V U1VBTF9ERVYoICAweDE2NDUsIDB4MDAwNywgMHgwMTAwLCAweDAxMzMsCmRpZmYgLS1naXQgYS9k cml2ZXJzL3ZtZS9icmlkZ2VzL3ZtZV9jYTkxY3g0Mi5jIGIvZHJpdmVycy92bWUvYnJpZGdlcy92 bWVfY2E5MWN4NDIuYwppbmRleCBiZmIyZDNmMDY3MzguLjY3NGI5NzIyMTZjMiAxMDA2NDQKLS0t IGEvZHJpdmVycy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYworKysgYi9kcml2ZXJzL3ZtZS9i cmlkZ2VzL3ZtZV9jYTkxY3g0Mi5jCkBAIC00NjgsNyArNDY4LDcgQEAgc3RhdGljIGludCBjYTkx Y3g0Ml9zbGF2ZV9nZXQoc3RydWN0IHZtZV9zbGF2ZV9yZXNvdXJjZSAqaW1hZ2UsIGludCAqZW5h YmxlZCwKIAl2bWVfYm91bmQgPSBpb3JlYWQzMihicmlkZ2UtPmJhc2UgKyBDQTkxQ1g0Ml9WU0lf QkRbaV0pOwogCXBjaV9vZmZzZXQgPSBpb3JlYWQzMihicmlkZ2UtPmJhc2UgKyBDQTkxQ1g0Ml9W U0lfVE9baV0pOwogCi0JKnBjaV9iYXNlID0gKGRtYV9hZGRyX3Qpdm1lX2Jhc2UgKyBwY2lfb2Zm c2V0OworCSpwY2lfYmFzZSA9IChkbWFfYWRkcl90KSp2bWVfYmFzZSArIHBjaV9vZmZzZXQ7CiAJ KnNpemUgPSAodW5zaWduZWQgbG9uZyBsb25nKSgodm1lX2JvdW5kIC0gKnZtZV9iYXNlKSArIGdy YW51bGFyaXR5KTsKIAogCSplbmFibGVkID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2du dGRldi5jIGIvZHJpdmVycy94ZW4vZ250ZGV2LmMKaW5kZXggN2ZmYmI5MzkwNjI4Li4xMTAyZmQw OTYzN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5jCisrKyBiL2RyaXZlcnMveGVu L2dudGRldi5jCkBAIC03NjUsNyArNzY1LDcgQEAgc3RhdGljIGludCBnbnRkZXZfbW1hcChzdHJ1 Y3QgZmlsZSAqZmxpcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAKIAl2bWEtPnZtX29w cyA9ICZnbnRkZXZfdm1vcHM7CiAKLQl2bWEtPnZtX2ZsYWdzIHw9IFZNX0RPTlRFWFBBTkQgfCBW TV9ET05URFVNUCB8IFZNX0lPOworCXZtYS0+dm1fZmxhZ3MgfD0gVk1fRE9OVEVYUEFORCB8IFZN X0RPTlREVU1QIHwgVk1fTUlYRURNQVA7CiAKIAlpZiAodXNlX3B0ZW1vZCkKIAkJdm1hLT52bV9m bGFncyB8PSBWTV9ET05UQ09QWTsKZGlmZiAtLWdpdCBhL2ZzL2Jsb2NrX2Rldi5jIGIvZnMvYmxv Y2tfZGV2LmMKaW5kZXggNmQ3Mjc0NjE5YmY5Li5hYjg2NTJiODk1NzcgMTAwNjQ0Ci0tLSBhL2Zz L2Jsb2NrX2Rldi5jCisrKyBiL2ZzL2Jsb2NrX2Rldi5jCkBAIC02OTgsNyArNjk4LDcgQEAgc3Rh dGljIGJvb2wgYmRfbWF5X2NsYWltKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBi bG9ja19kZXZpY2UgKndob2xlLAogCQlyZXR1cm4gdHJ1ZTsJIC8qIGFscmVhZHkgYSBob2xkZXIg Ki8KIAllbHNlIGlmIChiZGV2LT5iZF9ob2xkZXIgIT0gTlVMTCkKIAkJcmV0dXJuIGZhbHNlOyAJ IC8qIGhlbGQgYnkgc29tZW9uZSBlbHNlICovCi0JZWxzZSBpZiAoYmRldi0+YmRfY29udGFpbnMg PT0gYmRldikKKwllbHNlIGlmICh3aG9sZSA9PSBiZGV2KQogCQlyZXR1cm4gdHJ1ZTsgIAkgLyog aXMgYSB3aG9sZSBkZXZpY2Ugd2hpY2ggaXNuJ3QgaGVsZCAqLwogCiAJZWxzZSBpZiAod2hvbGUt PmJkX2hvbGRlciA9PSBiZF9tYXlfY2xhaW0pCkBAIC0xNzMxLDYgKzE3MzEsNyBAQCB2b2lkIGl0 ZXJhdGVfYmRldnModm9pZCAoKmZ1bmMpKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgdm9pZCAqKSwg dm9pZCAqYXJnKQogCXNwaW5fbG9jaygmaW5vZGVfc2JfbGlzdF9sb2NrKTsKIAlsaXN0X2Zvcl9l YWNoX2VudHJ5KGlub2RlLCAmYmxvY2tkZXZfc3VwZXJibG9jay0+c19pbm9kZXMsIGlfc2JfbGlz dCkgewogCQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGlub2RlLT5pX21hcHBpbmc7 CisJCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXY7CiAKIAkJc3Bpbl9sb2NrKCZpbm9kZS0+aV9s b2NrKTsKIAkJaWYgKGlub2RlLT5pX3N0YXRlICYgKElfRlJFRUlOR3xJX1dJTExfRlJFRXxJX05F VykgfHwKQEAgLTE3NTEsOCArMTc1MiwxMiBAQCB2b2lkIGl0ZXJhdGVfYmRldnModm9pZCAoKmZ1 bmMpKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgdm9pZCAqKSwgdm9pZCAqYXJnKQogCQkgKi8KIAkJ aXB1dChvbGRfaW5vZGUpOwogCQlvbGRfaW5vZGUgPSBpbm9kZTsKKwkJYmRldiA9IElfQkRFVihp bm9kZSk7CiAKLQkJZnVuYyhJX0JERVYoaW5vZGUpLCBhcmcpOworCQltdXRleF9sb2NrKCZiZGV2 LT5iZF9tdXRleCk7CisJCWlmIChiZGV2LT5iZF9vcGVuZXJzKQorCQkJZnVuYyhiZGV2LCBhcmcp OworCQltdXRleF91bmxvY2soJmJkZXYtPmJkX211dGV4KTsKIAogCQlzcGluX2xvY2soJmlub2Rl X3NiX2xpc3RfbG9jayk7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvYXN5bmMtdGhyZWFkLmMg Yi9mcy9idHJmcy9hc3luYy10aHJlYWQuYwppbmRleCBmYmQ3NmRlZDlhMzQuLmY1NDBkMTYzNTg2 ZCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvYXN5bmMtdGhyZWFkLmMKKysrIGIvZnMvYnRyZnMvYXN5 bmMtdGhyZWFkLmMKQEAgLTY0LDYgKzY0LDIwIEBAIHZvaWQgYnRyZnNfIyNuYW1lKHN0cnVjdCB3 b3JrX3N0cnVjdCAqYXJnKQkJCQlcCiAJbm9ybWFsX3dvcmtfaGVscGVyKHdvcmspOwkJCQkJXAog fQogCitib29sIGJ0cmZzX3dvcmtxdWV1ZV9ub3JtYWxfY29uZ2VzdGVkKHN0cnVjdCBidHJmc193 b3JrcXVldWUgKndxKQoreworCS8qCisJICogV2UgY291bGQgY29tcGFyZSB3cS0+bm9ybWFsLT5w ZW5kaW5nIHdpdGggbnVtX29ubGluZV9jcHVzKCkKKwkgKiB0byBzdXBwb3J0ICJ0aHJlc2ggPT0g Tk9fVEhSRVNIT0xEIiBjYXNlLCBidXQgaXQgcmVxdWlyZXMKKwkgKiBtb3ZpbmcgdXAgYXRvbWlj X2luYy9kZWMgaW4gdGhyZXNoX3F1ZXVlL2V4ZWNfaG9vay4gTGV0J3MKKwkgKiBwb3N0cG9uZSBp dCB1bnRpbCBzb21lb25lIG5lZWRzIHRoZSBzdXBwb3J0IG9mIHRoYXQgY2FzZS4KKwkgKi8KKwlp ZiAod3EtPm5vcm1hbC0+dGhyZXNoID09IE5PX1RIUkVTSE9MRCkKKwkJcmV0dXJuIGZhbHNlOwor CisJcmV0dXJuIGF0b21pY19yZWFkKCZ3cS0+bm9ybWFsLT5wZW5kaW5nKSA+IHdxLT5ub3JtYWwt PnRocmVzaCAqIDI7Cit9CisKIEJUUkZTX1dPUktfSEVMUEVSKHdvcmtlcl9oZWxwZXIpOwogQlRS RlNfV09SS19IRUxQRVIoZGVsYWxsb2NfaGVscGVyKTsKIEJUUkZTX1dPUktfSEVMUEVSKGZsdXNo X2RlbGFsbG9jX2hlbHBlcik7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9hc3luYy10aHJlYWQuaCBi L2ZzL2J0cmZzL2FzeW5jLXRocmVhZC5oCmluZGV4IGU5ZTMxYzk0NzU4Zi4uNzAzOTg5Y2Q1M2Nh IDEwMDY0NAotLS0gYS9mcy9idHJmcy9hc3luYy10aHJlYWQuaAorKysgYi9mcy9idHJmcy9hc3lu Yy10aHJlYWQuaApAQCAtNzcsNCArNzcsNSBAQCB2b2lkIGJ0cmZzX3F1ZXVlX3dvcmsoc3RydWN0 IGJ0cmZzX3dvcmtxdWV1ZSAqd3EsCiB2b2lkIGJ0cmZzX2Rlc3Ryb3lfd29ya3F1ZXVlKHN0cnVj dCBidHJmc193b3JrcXVldWUgKndxKTsKIHZvaWQgYnRyZnNfd29ya3F1ZXVlX3NldF9tYXgoc3Ry dWN0IGJ0cmZzX3dvcmtxdWV1ZSAqd3EsIGludCBtYXgpOwogdm9pZCBidHJmc19zZXRfd29ya19o aWdoX3ByaW9yaXR5KHN0cnVjdCBidHJmc193b3JrICp3b3JrKTsKK2Jvb2wgYnRyZnNfd29ya3F1 ZXVlX25vcm1hbF9jb25nZXN0ZWQoc3RydWN0IGJ0cmZzX3dvcmtxdWV1ZSAqd3EpOwogI2VuZGlm CmRpZmYgLS1naXQgYS9mcy9idHJmcy9kZWxheWVkLWlub2RlLmMgYi9mcy9idHJmcy9kZWxheWVk LWlub2RlLmMKaW5kZXggMzAyODliZjA2MDFhLi42MWY4N2M3ZWRiYjggMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2RlbGF5ZWQtaW5vZGUuYworKysgYi9mcy9idHJmcy9kZWxheWVkLWlub2RlLmMKQEAg LTEzNzEsNyArMTM3MSw4IEBAIHJlbGVhc2VfcGF0aDoKIAl0b3RhbF9kb25lKys7CiAKIAlidHJm c19yZWxlYXNlX3ByZXBhcmVkX2RlbGF5ZWRfbm9kZShkZWxheWVkX25vZGUpOwotCWlmIChhc3lu Y193b3JrLT5uciA9PSAwIHx8IHRvdGFsX2RvbmUgPCBhc3luY193b3JrLT5ucikKKwlpZiAoKGFz eW5jX3dvcmstPm5yID09IDAgJiYgdG90YWxfZG9uZSA8IEJUUkZTX0RFTEFZRURfV1JJVEVCQUNL KSB8fAorCSAgICB0b3RhbF9kb25lIDwgYXN5bmNfd29yay0+bnIpCiAJCWdvdG8gYWdhaW47CiAK IGZyZWVfcGF0aDoKQEAgLTEzODMsMTEgKzEzODQsMTIgQEAgb3V0OgogCiAKIHN0YXRpYyBpbnQg YnRyZnNfd3FfcnVuX2RlbGF5ZWRfbm9kZShzdHJ1Y3QgYnRyZnNfZGVsYXllZF9yb290ICpkZWxh eWVkX3Jvb3QsCi0JCQkJICAgICBzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgaW50IG5yKQorCQkJ CSAgICAgc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIGludCBucikKIHsKIAlzdHJ1Y3Qg YnRyZnNfYXN5bmNfZGVsYXllZF93b3JrICphc3luY193b3JrOwogCi0JaWYgKGF0b21pY19yZWFk KCZkZWxheWVkX3Jvb3QtPml0ZW1zKSA8IEJUUkZTX0RFTEFZRURfQkFDS0dST1VORCkKKwlpZiAo YXRvbWljX3JlYWQoJmRlbGF5ZWRfcm9vdC0+aXRlbXMpIDwgQlRSRlNfREVMQVlFRF9CQUNLR1JP VU5EIHx8CisJICAgIGJ0cmZzX3dvcmtxdWV1ZV9ub3JtYWxfY29uZ2VzdGVkKGZzX2luZm8tPmRl bGF5ZWRfd29ya2VycykpCiAJCXJldHVybiAwOwogCiAJYXN5bmNfd29yayA9IGttYWxsb2Moc2l6 ZW9mKCphc3luY193b3JrKSwgR0ZQX05PRlMpOwpAQCAtMTM5OSw3ICsxNDAxLDcgQEAgc3RhdGlj IGludCBidHJmc193cV9ydW5fZGVsYXllZF9ub2RlKHN0cnVjdCBidHJmc19kZWxheWVkX3Jvb3Qg KmRlbGF5ZWRfcm9vdCwKIAkJCWJ0cmZzX2FzeW5jX3J1bl9kZWxheWVkX3Jvb3QsIE5VTEwsIE5V TEwpOwogCWFzeW5jX3dvcmstPm5yID0gbnI7CiAKLQlidHJmc19xdWV1ZV93b3JrKHJvb3QtPmZz X2luZm8tPmRlbGF5ZWRfd29ya2VycywgJmFzeW5jX3dvcmstPndvcmspOworCWJ0cmZzX3F1ZXVl X3dvcmsoZnNfaW5mby0+ZGVsYXllZF93b3JrZXJzLCAmYXN5bmNfd29yay0+d29yayk7CiAJcmV0 dXJuIDA7CiB9CiAKQEAgLTE0MjYsNiArMTQyOCw3IEBAIHN0YXRpYyBpbnQgY291bGRfZW5kX3dh aXQoc3RydWN0IGJ0cmZzX2RlbGF5ZWRfcm9vdCAqZGVsYXllZF9yb290LCBpbnQgc2VxKQogdm9p ZCBidHJmc19iYWxhbmNlX2RlbGF5ZWRfaXRlbXMoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QpCiB7 CiAJc3RydWN0IGJ0cmZzX2RlbGF5ZWRfcm9vdCAqZGVsYXllZF9yb290OworCXN0cnVjdCBidHJm c19mc19pbmZvICpmc19pbmZvID0gcm9vdC0+ZnNfaW5mbzsKIAogCWRlbGF5ZWRfcm9vdCA9IGJ0 cmZzX2dldF9kZWxheWVkX3Jvb3Qocm9vdCk7CiAKQEAgLTE0MzgsNyArMTQ0MSw3IEBAIHZvaWQg YnRyZnNfYmFsYW5jZV9kZWxheWVkX2l0ZW1zKHN0cnVjdCBidHJmc19yb290ICpyb290KQogCiAJ CXNlcSA9IGF0b21pY19yZWFkKCZkZWxheWVkX3Jvb3QtPml0ZW1zX3NlcSk7CiAKLQkJcmV0ID0g YnRyZnNfd3FfcnVuX2RlbGF5ZWRfbm9kZShkZWxheWVkX3Jvb3QsIHJvb3QsIDApOworCQlyZXQg PSBidHJmc193cV9ydW5fZGVsYXllZF9ub2RlKGRlbGF5ZWRfcm9vdCwgZnNfaW5mbywgMCk7CiAJ CWlmIChyZXQpCiAJCQlyZXR1cm47CiAKQEAgLTE0NDcsNyArMTQ1MCw3IEBAIHZvaWQgYnRyZnNf YmFsYW5jZV9kZWxheWVkX2l0ZW1zKHN0cnVjdCBidHJmc19yb290ICpyb290KQogCQlyZXR1cm47 CiAJfQogCi0JYnRyZnNfd3FfcnVuX2RlbGF5ZWRfbm9kZShkZWxheWVkX3Jvb3QsIHJvb3QsIEJU UkZTX0RFTEFZRURfQkFUQ0gpOworCWJ0cmZzX3dxX3J1bl9kZWxheWVkX25vZGUoZGVsYXllZF9y b290LCBmc19pbmZvLCBCVFJGU19ERUxBWUVEX0JBVENIKTsKIH0KIAogLyogV2lsbCByZXR1cm4g MCBvciAtRU5PTUVNICovCmRpZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnQtdHJlZS5jIGIvZnMv YnRyZnMvZXh0ZW50LXRyZWUuYwppbmRleCA0ODJlYmJjZDFkNzIuLmZkNTE4ZGZmZTZkMyAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJl ZS5jCkBAIC0yNDI5LDExICsyNDI5LDExIEBAIHN0YXRpYyBub2lubGluZSBpbnQgX19idHJmc19y dW5fZGVsYXllZF9yZWZzKHN0cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRyYW5zLAogCQlpZiAo cmVmICYmIHJlZi0+c2VxICYmCiAJCSAgICBidHJmc19jaGVja19kZWxheWVkX3NlcShmc19pbmZv LCBkZWxheWVkX3JlZnMsIHJlZi0+c2VxKSkgewogCQkJc3Bpbl91bmxvY2soJmxvY2tlZF9yZWYt PmxvY2spOwotCQkJYnRyZnNfZGVsYXllZF9yZWZfdW5sb2NrKGxvY2tlZF9yZWYpOwogCQkJc3Bp bl9sb2NrKCZkZWxheWVkX3JlZnMtPmxvY2spOwogCQkJbG9ja2VkX3JlZi0+cHJvY2Vzc2luZyA9 IDA7CiAJCQlkZWxheWVkX3JlZnMtPm51bV9oZWFkc19yZWFkeSsrOwogCQkJc3Bpbl91bmxvY2so JmRlbGF5ZWRfcmVmcy0+bG9jayk7CisJCQlidHJmc19kZWxheWVkX3JlZl91bmxvY2sobG9ja2Vk X3JlZik7CiAJCQlsb2NrZWRfcmVmID0gTlVMTDsKIAkJCWNvbmRfcmVzY2hlZCgpOwogCQkJY291 bnQrKzsKQEAgLTI0NzksNyArMjQ3OSwxMCBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IF9fYnRyZnNf cnVuX2RlbGF5ZWRfcmVmcyhzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFucywKIAkJCQkJ ICovCiAJCQkJCWlmIChtdXN0X2luc2VydF9yZXNlcnZlZCkKIAkJCQkJCWxvY2tlZF9yZWYtPm11 c3RfaW5zZXJ0X3Jlc2VydmVkID0gMTsKKwkJCQkJc3Bpbl9sb2NrKCZkZWxheWVkX3JlZnMtPmxv Y2spOwogCQkJCQlsb2NrZWRfcmVmLT5wcm9jZXNzaW5nID0gMDsKKwkJCQkJZGVsYXllZF9yZWZz LT5udW1faGVhZHNfcmVhZHkrKzsKKwkJCQkJc3Bpbl91bmxvY2soJmRlbGF5ZWRfcmVmcy0+bG9j ayk7CiAJCQkJCWJ0cmZzX2RlYnVnKGZzX2luZm8sICJydW5fZGVsYXllZF9leHRlbnRfb3AgcmV0 dXJuZWQgJWQiLCByZXQpOwogCQkJCQlidHJmc19kZWxheWVkX3JlZl91bmxvY2sobG9ja2VkX3Jl Zik7CiAJCQkJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMv YnRyZnMvaW9jdGwuYwppbmRleCBlYjQzNDg3ODFhOTcuLmNkZTg3NmE5OGZiOCAxMDA2NDQKLS0t IGEvZnMvYnRyZnMvaW9jdGwuYworKysgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC01NTM2LDYgKzU1 MzYsMTAgQEAgbG9uZyBidHJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50 CiAjaWZkZWYgQ09ORklHX0NPTVBBVAogbG9uZyBidHJmc19jb21wYXRfaW9jdGwoc3RydWN0IGZp bGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogeworCS8qCisJ ICogVGhlc2UgYWxsIGFjY2VzcyAzMi1iaXQgdmFsdWVzIGFueXdheSBzbyBubyBmdXJ0aGVyCisJ ICogaGFuZGxpbmcgaXMgbmVjZXNzYXJ5LgorCSAqLwogCXN3aXRjaCAoY21kKSB7CiAJY2FzZSBG U19JT0MzMl9HRVRGTEFHUzoKIAkJY21kID0gRlNfSU9DX0dFVEZMQUdTOwpAQCAtNTU0Niw4ICs1 NTUwLDYgQEAgbG9uZyBidHJmc19jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRlNfSU9DMzJfR0VUVkVSU0lP TjoKIAkJY21kID0gRlNfSU9DX0dFVFZFUlNJT047CiAJCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJl dHVybiAtRU5PSU9DVExDTUQ7CiAJfQogCiAJcmV0dXJuIGJ0cmZzX2lvY3RsKGZpbGUsIGNtZCwg KHVuc2lnbmVkIGxvbmcpIGNvbXBhdF9wdHIoYXJnKSk7CmRpZmYgLS1naXQgYS9mcy9idHJmcy90 cmVlLWxvZy5jIGIvZnMvYnRyZnMvdHJlZS1sb2cuYwppbmRleCAwMjNjNWQ5MDVhYWMuLmEwZmEx NjAzMzAwNiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJlZS1sb2cuYworKysgYi9mcy9idHJmcy90 cmVlLWxvZy5jCkBAIC0xNzc4LDEyICsxNzc4LDExIEBAIHN0YXRpYyBub2lubGluZSBpbnQgZmlu ZF9kaXJfcmFuZ2Uoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiBuZXh0OgogCS8qIGNoZWNrIHRo ZSBuZXh0IHNsb3QgaW4gdGhlIHRyZWUgdG8gc2VlIGlmIGl0IGlzIGEgdmFsaWQgaXRlbSAqLwog CW5yaXRlbXMgPSBidHJmc19oZWFkZXJfbnJpdGVtcyhwYXRoLT5ub2Rlc1swXSk7CisJcGF0aC0+ c2xvdHNbMF0rKzsKIAlpZiAocGF0aC0+c2xvdHNbMF0gPj0gbnJpdGVtcykgewogCQlyZXQgPSBi dHJmc19uZXh0X2xlYWYocm9vdCwgcGF0aCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKLQl9 IGVsc2UgewotCQlwYXRoLT5zbG90c1swXSsrOwogCX0KIAogCWJ0cmZzX2l0ZW1fa2V5X3RvX2Nw dShwYXRoLT5ub2Rlc1swXSwgJmtleSwgcGF0aC0+c2xvdHNbMF0pOwpkaWZmIC0tZ2l0IGEvZnMv Y2VwaC9tZHNfY2xpZW50LmMgYi9mcy9jZXBoL21kc19jbGllbnQuYwppbmRleCA4ZjU4MzVjODkx OTQuLjYxMjY2NDM5YjYwMyAxMDA2NDQKLS0tIGEvZnMvY2VwaC9tZHNfY2xpZW50LmMKKysrIGIv ZnMvY2VwaC9tZHNfY2xpZW50LmMKQEAgLTI2MiwxMiArMjYyLDEzIEBAIHN0YXRpYyBpbnQgcGFy c2VfcmVwbHlfaW5mb19leHRyYSh2b2lkICoqcCwgdm9pZCAqZW5kLAogCQkJCSAgc3RydWN0IGNl cGhfbWRzX3JlcGx5X2luZm9fcGFyc2VkICppbmZvLAogCQkJCSAgdTY0IGZlYXR1cmVzKQogewot CWlmIChpbmZvLT5oZWFkLT5vcCA9PSBDRVBIX01EU19PUF9HRVRGSUxFTE9DSykKKwl1MzIgb3Ag PSBsZTMyX3RvX2NwdShpbmZvLT5oZWFkLT5vcCk7CisKKwlpZiAob3AgPT0gQ0VQSF9NRFNfT1Bf R0VURklMRUxPQ0spCiAJCXJldHVybiBwYXJzZV9yZXBseV9pbmZvX2ZpbGVsb2NrKHAsIGVuZCwg aW5mbywgZmVhdHVyZXMpOwotCWVsc2UgaWYgKGluZm8tPmhlYWQtPm9wID09IENFUEhfTURTX09Q X1JFQURESVIgfHwKLQkJIGluZm8tPmhlYWQtPm9wID09IENFUEhfTURTX09QX0xTU05BUCkKKwll bHNlIGlmIChvcCA9PSBDRVBIX01EU19PUF9SRUFERElSIHx8IG9wID09IENFUEhfTURTX09QX0xT U05BUCkKIAkJcmV0dXJuIHBhcnNlX3JlcGx5X2luZm9fZGlyKHAsIGVuZCwgaW5mbywgZmVhdHVy ZXMpOwotCWVsc2UgaWYgKGluZm8tPmhlYWQtPm9wID09IENFUEhfTURTX09QX0NSRUFURSkKKwll bHNlIGlmIChvcCA9PSBDRVBIX01EU19PUF9DUkVBVEUpCiAJCXJldHVybiBwYXJzZV9yZXBseV9p bmZvX2NyZWF0ZShwLCBlbmQsIGluZm8sIGZlYXR1cmVzKTsKIAllbHNlCiAJCXJldHVybiAtRUlP OwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9jaWZzZ2xvYi5oIGIvZnMvY2lmcy9jaWZzZ2xvYi5oCmlu ZGV4IDFjNjYzYTE2Zjc4YS4uYmE0YjkyODQ2Y2YwIDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNn bG9iLmgKKysrIGIvZnMvY2lmcy9jaWZzZ2xvYi5oCkBAIC02MDYsNiArNjA2LDggQEAgc3RydWN0 IFRDUF9TZXJ2ZXJfSW5mbyB7CiAjaWZkZWYgQ09ORklHX0NJRlNfU01CMgogCXVuc2lnbmVkIGlu dAltYXhfcmVhZDsKIAl1bnNpZ25lZCBpbnQJbWF4X3dyaXRlOworCXN0cnVjdCBkZWxheWVkX3dv cmsgcmVjb25uZWN0OyAvKiByZWNvbm5lY3Qgd29ya3F1ZXVlIGpvYiAqLworCXN0cnVjdCBtdXRl eCByZWNvbm5lY3RfbXV0ZXg7IC8qIHByZXZlbnQgc2ltdWx0YW5lb3VzIHJlY29ubmVjdHMgKi8K ICNlbmRpZiAvKiBDT05GSUdfQ0lGU19TTUIyICovCiB9OwogCkBAIC03OTUsNiArNzk3LDcgQEAg Y2FwX3VuaXgoc3RydWN0IGNpZnNfc2VzICpzZXMpCiBzdHJ1Y3QgY2lmc190Y29uIHsKIAlzdHJ1 Y3QgbGlzdF9oZWFkIHRjb25fbGlzdDsKIAlpbnQgdGNfY291bnQ7CisJc3RydWN0IGxpc3RfaGVh ZCBybGlzdDsgLyogcmVjb25uZWN0IGxpc3QgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIG9wZW5GaWxl TGlzdDsKIAlzcGlubG9ja190IG9wZW5fZmlsZV9sb2NrOyAvKiBwcm90ZWN0cyBsaXN0IGFib3Zl ICovCiAJc3RydWN0IGNpZnNfc2VzICpzZXM7CS8qIHBvaW50ZXIgdG8gc2Vzc2lvbiBhc3NvY2lh dGVkIHdpdGggKi8KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc3Byb3RvLmggYi9mcy9jaWZzL2Np ZnNwcm90by5oCmluZGV4IDA1Y2UzMDcyZmIwOS4uZWExY2JmZjI5MzJmIDEwMDY0NAotLS0gYS9m cy9jaWZzL2NpZnNwcm90by5oCisrKyBiL2ZzL2NpZnMvY2lmc3Byb3RvLmgKQEAgLTIwMyw2ICsy MDMsOSBAQCBleHRlcm4gdm9pZCBjaWZzX2FkZF9wZW5kaW5nX29wZW5fbG9ja2VkKHN0cnVjdCBj aWZzX2ZpZCAqZmlkLAogCQkJCQkgc3RydWN0IHRjb25fbGluayAqdGxpbmssCiAJCQkJCSBzdHJ1 Y3QgY2lmc19wZW5kaW5nX29wZW4gKm9wZW4pOwogZXh0ZXJuIHZvaWQgY2lmc19kZWxfcGVuZGlu Z19vcGVuKHN0cnVjdCBjaWZzX3BlbmRpbmdfb3BlbiAqb3Blbik7CitleHRlcm4gdm9pZCBjaWZz X3B1dF90Y3Bfc2Vzc2lvbihzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsCisJCQkJIGlu dCBmcm9tX3JlY29ubmVjdCk7CitleHRlcm4gdm9pZCBjaWZzX3B1dF90Y29uKHN0cnVjdCBjaWZz X3Rjb24gKnRjb24pOwogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfQ0lGU19ERlNfVVBDQUxMKQog ZXh0ZXJuIHZvaWQgY2lmc19kZnNfcmVsZWFzZV9hdXRvbW91bnRfdGltZXIodm9pZCk7CmRpZmYg LS1naXQgYS9mcy9jaWZzL2Nvbm5lY3QuYyBiL2ZzL2NpZnMvY29ubmVjdC5jCmluZGV4IDQzOTIy OTZlNmYzZi4uYjhjNWI1NDFjODEzIDEwMDY0NAotLS0gYS9mcy9jaWZzL2Nvbm5lY3QuYworKysg Yi9mcy9jaWZzL2Nvbm5lY3QuYwpAQCAtNTIsNiArNTIsOSBAQAogI2luY2x1ZGUgIm50ZXJyLmgi CiAjaW5jbHVkZSAicmZjMTAwMnBkdS5oIgogI2luY2x1ZGUgImZzY2FjaGUuaCIKKyNpZmRlZiBD T05GSUdfQ0lGU19TTUIyCisjaW5jbHVkZSAic21iMnByb3RvLmgiCisjZW5kaWYKIAogI2RlZmlu ZSBDSUZTX1BPUlQgNDQ1CiAjZGVmaW5lIFJGQzEwMDFfUE9SVCAxMzkKQEAgLTIwNjAsOCArMjA2 Myw4IEBAIGNpZnNfZmluZF90Y3Bfc2Vzc2lvbihzdHJ1Y3Qgc21iX3ZvbCAqdm9sKQogCXJldHVy biBOVUxMOwogfQogCi1zdGF0aWMgdm9pZAotY2lmc19wdXRfdGNwX3Nlc3Npb24oc3RydWN0IFRD UF9TZXJ2ZXJfSW5mbyAqc2VydmVyKQordm9pZAorY2lmc19wdXRfdGNwX3Nlc3Npb24oc3RydWN0 IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyLCBpbnQgZnJvbV9yZWNvbm5lY3QpCiB7CiAJc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrOwogCkBAIC0yMDc4LDYgKzIwODEsMTkgQEAgY2lmc19wdXRfdGNw X3Nlc3Npb24oc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyKQogCiAJY2FuY2VsX2RlbGF5 ZWRfd29ya19zeW5jKCZzZXJ2ZXItPmVjaG8pOwogCisjaWZkZWYgQ09ORklHX0NJRlNfU01CMgor CWlmIChmcm9tX3JlY29ubmVjdCkKKwkJLyoKKwkJICogQXZvaWQgZGVhZGxvY2sgaGVyZTogcmVj b25uZWN0IHdvcmsgY2FsbHMKKwkJICogY2lmc19wdXRfdGNwX3Nlc3Npb24oKSBhdCBpdHMgZW5k LiBOZWVkIHRvIGJlIHN1cmUKKwkJICogdGhhdCByZWNvbm5lY3Qgd29yayBkb2VzIG5vdGhpbmcg d2l0aCBzZXJ2ZXIgcG9pbnRlciBhZnRlcgorCQkgKiB0aGF0IHN0ZXAuCisJCSAqLworCQljYW5j ZWxfZGVsYXllZF93b3JrKCZzZXJ2ZXItPnJlY29ubmVjdCk7CisJZWxzZQorCQljYW5jZWxfZGVs YXllZF93b3JrX3N5bmMoJnNlcnZlci0+cmVjb25uZWN0KTsKKyNlbmRpZgorCiAJc3Bpbl9sb2Nr KCZHbG9iYWxNaWRfTG9jayk7CiAJc2VydmVyLT50Y3BTdGF0dXMgPSBDaWZzRXhpdGluZzsKIAlz cGluX3VubG9jaygmR2xvYmFsTWlkX0xvY2spOwpAQCAtMjE0Miw2ICsyMTU4LDEwIEBAIGNpZnNf Z2V0X3RjcF9zZXNzaW9uKHN0cnVjdCBzbWJfdm9sICp2b2x1bWVfaW5mbykKIAlJTklUX0xJU1Rf SEVBRCgmdGNwX3Nlcy0+dGNwX3Nlc19saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmdGNwX3Nlcy0+ c21iX3Nlc19saXN0KTsKIAlJTklUX0RFTEFZRURfV09SSygmdGNwX3Nlcy0+ZWNobywgY2lmc19l Y2hvX3JlcXVlc3QpOworI2lmZGVmIENPTkZJR19DSUZTX1NNQjIKKwlJTklUX0RFTEFZRURfV09S SygmdGNwX3Nlcy0+cmVjb25uZWN0LCBzbWIyX3JlY29ubmVjdF9zZXJ2ZXIpOworCW11dGV4X2lu aXQoJnRjcF9zZXMtPnJlY29ubmVjdF9tdXRleCk7CisjZW5kaWYKIAltZW1jcHkoJnRjcF9zZXMt PnNyY2FkZHIsICZ2b2x1bWVfaW5mby0+c3JjYWRkciwKIAkgICAgICAgc2l6ZW9mKHRjcF9zZXMt PnNyY2FkZHIpKTsKIAltZW1jcHkoJnRjcF9zZXMtPmRzdGFkZHIsICZ2b2x1bWVfaW5mby0+ZHN0 YWRkciwKQEAgLTIyOTQsNyArMjMxNCw3IEBAIGNpZnNfcHV0X3NtYl9zZXMoc3RydWN0IGNpZnNf c2VzICpzZXMpCiAJc3Bpbl91bmxvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKIAogCXNlc0luZm9G cmVlKHNlcyk7Ci0JY2lmc19wdXRfdGNwX3Nlc3Npb24oc2VydmVyKTsKKwljaWZzX3B1dF90Y3Bf c2Vzc2lvbihzZXJ2ZXIsIDApOwogfQogCiAjaWZkZWYgQ09ORklHX0tFWVMKQEAgLTI0NjcsNyAr MjQ4Nyw3IEBAIGNpZnNfZ2V0X3NtYl9zZXMoc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVy LCBzdHJ1Y3Qgc21iX3ZvbCAqdm9sdW1lX2luZm8pCiAJCW11dGV4X3VubG9jaygmc2VzLT5zZXNz aW9uX211dGV4KTsKIAogCQkvKiBleGlzdGluZyBTTUIgc2VzIGhhcyBhIHNlcnZlciByZWZlcmVu Y2UgYWxyZWFkeSAqLwotCQljaWZzX3B1dF90Y3Bfc2Vzc2lvbihzZXJ2ZXIpOworCQljaWZzX3B1 dF90Y3Bfc2Vzc2lvbihzZXJ2ZXIsIDApOwogCQlmcmVlX3hpZCh4aWQpOwogCQlyZXR1cm4gc2Vz OwogCX0KQEAgLTI1NTcsNyArMjU3Nyw3IEBAIGNpZnNfZmluZF90Y29uKHN0cnVjdCBjaWZzX3Nl cyAqc2VzLCBjb25zdCBjaGFyICp1bmMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lk Cit2b2lkCiBjaWZzX3B1dF90Y29uKHN0cnVjdCBjaWZzX3Rjb24gKnRjb24pCiB7CiAJdW5zaWdu ZWQgaW50IHhpZDsKQEAgLTM2MDYsNyArMzYyNiw3IEBAIG1vdW50X2ZhaWxfY2hlY2s6CiAJCWVs c2UgaWYgKHNlcykKIAkJCWNpZnNfcHV0X3NtYl9zZXMoc2VzKTsKIAkJZWxzZQotCQkJY2lmc19w dXRfdGNwX3Nlc3Npb24oc2VydmVyKTsKKwkJCWNpZnNfcHV0X3RjcF9zZXNzaW9uKHNlcnZlciwg MCk7CiAJCWJkaV9kZXN0cm95KCZjaWZzX3NiLT5iZGkpOwogCX0KIApAQCAtMzkxMCw3ICszOTMw LDcgQEAgY2lmc19jb25zdHJ1Y3RfdGNvbihzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3NiLCBr dWlkX3QgZnN1aWQpCiAJc2VzID0gY2lmc19nZXRfc21iX3NlcyhtYXN0ZXJfdGNvbi0+c2VzLT5z ZXJ2ZXIsIHZvbF9pbmZvKTsKIAlpZiAoSVNfRVJSKHNlcykpIHsKIAkJdGNvbiA9IChzdHJ1Y3Qg Y2lmc190Y29uICopc2VzOwotCQljaWZzX3B1dF90Y3Bfc2Vzc2lvbihtYXN0ZXJfdGNvbi0+c2Vz LT5zZXJ2ZXIpOworCQljaWZzX3B1dF90Y3Bfc2Vzc2lvbihtYXN0ZXJfdGNvbi0+c2VzLT5zZXJ2 ZXIsIDApOwogCQlnb3RvIG91dDsKIAl9CiAKZGlmZiAtLWdpdCBhL2ZzL2NpZnMvc21iMmZpbGUu YyBiL2ZzL2NpZnMvc21iMmZpbGUuYwppbmRleCA0NTk5Mjk0NGUyMzguLmI4N2IwNzUwNDk0NyAx MDA2NDQKLS0tIGEvZnMvY2lmcy9zbWIyZmlsZS5jCisrKyBiL2ZzL2NpZnMvc21iMmZpbGUuYwpA QCAtMjQxLDcgKzI0MSw3IEBAIHNtYjJfcHVzaF9tYW5kYXRvcnlfbG9ja3Moc3RydWN0IGNpZnNG aWxlSW5mbyAqY2ZpbGUpCiAJICogYW5kIGNoZWNrIGl0IGZvciB6ZXJvIGJlZm9yZSB1c2luZy4K IAkgKi8KIAltYXhfYnVmID0gdGxpbmtfdGNvbihjZmlsZS0+dGxpbmspLT5zZXMtPnNlcnZlci0+ bWF4QnVmOwotCWlmICghbWF4X2J1ZikgeworCWlmIChtYXhfYnVmIDwgc2l6ZW9mKHN0cnVjdCBz bWIyX2xvY2tfZWxlbWVudCkpIHsKIAkJZnJlZV94aWQoeGlkKTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9zbWIycGR1LmMgYi9mcy9jaWZzL3NtYjJwZHUuYwpp bmRleCAxZGExNjIyYWExZWEuLjIyNTZhOTkyMzg5ZiAxMDA2NDQKLS0tIGEvZnMvY2lmcy9zbWIy cGR1LmMKKysrIGIvZnMvY2lmcy9zbWIycGR1LmMKQEAgLTI4Miw3ICsyODIsNyBAQCBvdXQ6CiAJ Y2FzZSBTTUIyX0NIQU5HRV9OT1RJRlk6CiAJY2FzZSBTTUIyX1FVRVJZX0lORk86CiAJY2FzZSBT TUIyX1NFVF9JTkZPOgotCQlyZXR1cm4gLUVBR0FJTjsKKwkJcmMgPSAtRUFHQUlOOwogCX0KIAl1 bmxvYWRfbmxzKG5sc19jb2RlcGFnZSk7CiAJcmV0dXJuIHJjOwpAQCAtMTU5OCw2ICsxNTk4LDU0 IEBAIHNtYjJfZWNob19jYWxsYmFjayhzdHJ1Y3QgbWlkX3FfZW50cnkgKm1pZCkKIAlhZGRfY3Jl ZGl0cyhzZXJ2ZXIsIGNyZWRpdHNfcmVjZWl2ZWQsIENJRlNfRUNIT19PUCk7CiB9CiAKK3ZvaWQg c21iMl9yZWNvbm5lY3Rfc2VydmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1 Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIgPSBjb250YWluZXJfb2Yod29yaywKKwkJCQkJc3Ry dWN0IFRDUF9TZXJ2ZXJfSW5mbywgcmVjb25uZWN0LndvcmspOworCXN0cnVjdCBjaWZzX3NlcyAq c2VzOworCXN0cnVjdCBjaWZzX3Rjb24gKnRjb24sICp0Y29uMjsKKwlzdHJ1Y3QgbGlzdF9oZWFk IHRtcF9saXN0OworCWludCB0Y29uX2V4aXN0ID0gZmFsc2U7CisKKwkvKiBQcmV2ZW50IHNpbXVs dGFuZW91cyByZWNvbm5lY3RzIHRoYXQgY2FuIGNvcnJ1cHQgdGNvbi0+cmxpc3QgbGlzdCAqLwor CW11dGV4X2xvY2soJnNlcnZlci0+cmVjb25uZWN0X211dGV4KTsKKworCUlOSVRfTElTVF9IRUFE KCZ0bXBfbGlzdCk7CisJY2lmc19kYmcoRllJLCAiTmVlZCBuZWdvdGlhdGUsIHJlY29ubmVjdGlu ZyB0Y29uc1xuIik7CisKKwlzcGluX2xvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KHNlcywgJnNlcnZlci0+c21iX3Nlc19saXN0LCBzbWJfc2VzX2xpc3QpIHsK KwkJbGlzdF9mb3JfZWFjaF9lbnRyeSh0Y29uLCAmc2VzLT50Y29uX2xpc3QsIHRjb25fbGlzdCkg eworCQkJaWYgKHRjb24tPm5lZWRfcmVjb25uZWN0KSB7CisJCQkJdGNvbi0+dGNfY291bnQrKzsK KwkJCQlsaXN0X2FkZF90YWlsKCZ0Y29uLT5ybGlzdCwgJnRtcF9saXN0KTsKKwkJCQl0Y29uX2V4 aXN0ID0gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKwkvKgorCSAqIEdldCB0aGUgcmVmZXJlbmNlIHRv IHNlcnZlciBzdHJ1Y3QgdG8gYmUgc3VyZSB0aGF0IHRoZSBsYXN0IGNhbGwgb2YKKwkgKiBjaWZz X3B1dF90Y29uKCkgaW4gdGhlIGxvb3AgYmVsb3cgd29uJ3QgcmVsZWFzZSB0aGUgc2VydmVyIHBv aW50ZXIuCisJICovCisJaWYgKHRjb25fZXhpc3QpCisJCXNlcnZlci0+c3J2X2NvdW50Kys7CisK KwlzcGluX3VubG9jaygmY2lmc190Y3Bfc2VzX2xvY2spOworCisJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKHRjb24sIHRjb24yLCAmdG1wX2xpc3QsIHJsaXN0KSB7CisJCXNtYjJfcmVjb25uZWN0 KFNNQjJfRUNITywgdGNvbik7CisJCWxpc3RfZGVsX2luaXQoJnRjb24tPnJsaXN0KTsKKwkJY2lm c19wdXRfdGNvbih0Y29uKTsKKwl9CisKKwljaWZzX2RiZyhGWUksICJSZWNvbm5lY3RpbmcgdGNv bnMgZmluaXNoZWRcbiIpOworCW11dGV4X3VubG9jaygmc2VydmVyLT5yZWNvbm5lY3RfbXV0ZXgp OworCisJLyogbm93IHdlIGNhbiBzYWZlbHkgcmVsZWFzZSBzcnYgc3RydWN0ICovCisJaWYgKHRj b25fZXhpc3QpCisJCWNpZnNfcHV0X3RjcF9zZXNzaW9uKHNlcnZlciwgMSk7Cit9CisKIGludAog U01CMl9lY2hvKHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKIHsKQEAgLTE2MTAsMzIg KzE2NTgsMTEgQEAgU01CMl9lY2hvKHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKIAlj aWZzX2RiZyhGWUksICJJbiBlY2hvIHJlcXVlc3RcbiIpOwogCiAJaWYgKHNlcnZlci0+dGNwU3Rh dHVzID09IENpZnNOZWVkTmVnb3RpYXRlKSB7Ci0JCXN0cnVjdCBsaXN0X2hlYWQgKnRtcCwgKnRt cDI7Ci0JCXN0cnVjdCBjaWZzX3NlcyAqc2VzOwotCQlzdHJ1Y3QgY2lmc190Y29uICp0Y29uOwot Ci0JCWNpZnNfZGJnKEZZSSwgIk5lZWQgbmVnb3RpYXRlLCByZWNvbm5lY3RpbmcgdGNvbnNcbiIp OwotCQlzcGluX2xvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKLQkJbGlzdF9mb3JfZWFjaCh0bXAs ICZzZXJ2ZXItPnNtYl9zZXNfbGlzdCkgewotCQkJc2VzID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVj dCBjaWZzX3Nlcywgc21iX3Nlc19saXN0KTsKLQkJCWxpc3RfZm9yX2VhY2godG1wMiwgJnNlcy0+ dGNvbl9saXN0KSB7Ci0JCQkJdGNvbiA9IGxpc3RfZW50cnkodG1wMiwgc3RydWN0IGNpZnNfdGNv biwKLQkJCQkJCSAgdGNvbl9saXN0KTsKLQkJCQkvKiBhZGQgY2hlY2sgZm9yIHBlcnNpc3RlbnQg aGFuZGxlIHJlY29ubmVjdCAqLwotCQkJCWlmICh0Y29uICYmIHRjb24tPm5lZWRfcmVjb25uZWN0 KSB7Ci0JCQkJCXNwaW5fdW5sb2NrKCZjaWZzX3RjcF9zZXNfbG9jayk7Ci0JCQkJCXJjID0gc21i Ml9yZWNvbm5lY3QoU01CMl9FQ0hPLCB0Y29uKTsKLQkJCQkJc3Bpbl9sb2NrKCZjaWZzX3RjcF9z ZXNfbG9jayk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXNwaW5fdW5sb2NrKCZjaWZzX3RjcF9zZXNf bG9jayk7CisJCS8qIE5vIG5lZWQgdG8gc2VuZCBlY2hvIG9uIG5ld2x5IGVzdGFibGlzaGVkIGNv bm5lY3Rpb25zICovCisJCXF1ZXVlX2RlbGF5ZWRfd29yayhjaWZzaW9kX3dxLCAmc2VydmVyLT5y ZWNvbm5lY3QsIDApOworCQlyZXR1cm4gcmM7CiAJfQogCi0JLyogaWYgbm8gc2Vzc2lvbiwgcmVu ZWdvdGlhdGUgZmFpbGVkIGFib3ZlICovCi0JaWYgKHNlcnZlci0+dGNwU3RhdHVzID09IENpZnNO ZWVkTmVnb3RpYXRlKQotCQlyZXR1cm4gLUVJTzsKLQogCXJjID0gc21hbGxfc21iMl9pbml0KFNN QjJfRUNITywgTlVMTCwgKHZvaWQgKiopJnJlcSk7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CmRp ZmYgLS1naXQgYS9mcy9jaWZzL3NtYjJwcm90by5oIGIvZnMvY2lmcy9zbWIycHJvdG8uaAppbmRl eCA4ZTBkNTdiZjQ0NmIuLjk4ZDliMzZlYTNlMiAxMDA2NDQKLS0tIGEvZnMvY2lmcy9zbWIycHJv dG8uaAorKysgYi9mcy9jaWZzL3NtYjJwcm90by5oCkBAIC04OSw2ICs4OSw3IEBAIGV4dGVybiBp bnQgc21iMl9vcGVuX2ZpbGUoY29uc3QgdW5zaWduZWQgaW50IHhpZCwKIGV4dGVybiBpbnQgc21i Ml91bmxvY2tfcmFuZ2Uoc3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUsCiAJCQkgICAgIHN0cnVj dCBmaWxlX2xvY2sgKmZsb2NrLCBjb25zdCB1bnNpZ25lZCBpbnQgeGlkKTsKIGV4dGVybiBpbnQg c21iMl9wdXNoX21hbmRhdG9yeV9sb2NrcyhzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpjZmlsZSk7Citl eHRlcm4gdm9pZCBzbWIyX3JlY29ubmVjdF9zZXJ2ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KTsKIAogLyoKICAqIFNNQjIgV29ya2VyIGZ1bmN0aW9ucyAtIG1vc3Qgb2YgcHJvdG9jb2wgc3Bl Y2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscwpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMv ZXhlYy5jCmluZGV4IDk5M2VkMGFiYTk5YS4uNWI2NTNhMTI2YjIwIDEwMDY0NAotLS0gYS9mcy9l eGVjLmMKKysrIGIvZnMvZXhlYy5jCkBAIC0xOSw3ICsxOSw3IEBACiAgKiBjdXJyZW50LT5leGVj dXRhYmxlIGlzIG9ubHkgdXNlZCBieSB0aGUgcHJvY2ZzLiAgVGhpcyBhbGxvd3MgYSBkaXNwYXRj aAogICogdGFibGUgdG8gY2hlY2sgZm9yIHNldmVyYWwgZGlmZmVyZW50IHR5cGVzICBvZiBiaW5h cnkgZm9ybWF0cy4gIFdlIGtlZXAKICAqIHRyeWluZyB1bnRpbCB3ZSByZWNvZ25pemUgdGhlIGZp bGUgb3Igd2UgcnVuIG91dCBvZiBzdXBwb3J0ZWQgYmluYXJ5Ci0gKiBmb3JtYXRzLiAKKyAqIGZv cm1hdHMuCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KQEAgLTEwODcsNiArMTA4Nywx MyBAQCBpbnQgZmx1c2hfb2xkX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pCiAJZmx1 c2hfdGhyZWFkKCk7CiAJY3VycmVudC0+cGVyc29uYWxpdHkgJj0gfmJwcm0tPnBlcl9jbGVhcjsK IAorCS8qCisJICogV2UgaGF2ZSB0byBhcHBseSBDTE9FWEVDIGJlZm9yZSB3ZSBjaGFuZ2Ugd2hl dGhlciB0aGUgcHJvY2VzcyBpcworCSAqIGR1bXBhYmxlIChpbiBzZXR1cF9uZXdfZXhlYykgdG8g YXZvaWQgYSByYWNlIHdpdGggYSBwcm9jZXNzIGluIHVzZXJzcGFjZQorCSAqIHRyeWluZyB0byBh Y2Nlc3MgdGhlIHNob3VsZC1iZS1jbG9zZWQgZmlsZSBkZXNjcmlwdG9ycyBvZiBhIHByb2Nlc3MK KwkgKiB1bmRlcmdvaW5nIGV4ZWMoMikuCisJICovCisJZG9fY2xvc2Vfb25fZXhlYyhjdXJyZW50 LT5maWxlcyk7CiAJcmV0dXJuIDA7CiAKIG91dDoKQEAgLTExMzYsNyArMTE0Myw2IEBAIHZvaWQg c2V0dXBfbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pCiAJICAgZ3JvdXAgKi8K IAljdXJyZW50LT5zZWxmX2V4ZWNfaWQrKzsKIAlmbHVzaF9zaWduYWxfaGFuZGxlcnMoY3VycmVu dCwgMCk7Ci0JZG9fY2xvc2Vfb25fZXhlYyhjdXJyZW50LT5maWxlcyk7CiB9CiBFWFBPUlRfU1lN Qk9MKHNldHVwX25ld19leGVjKTsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbmxpbmUuYyBiL2Zz L2V4dDQvaW5saW5lLmMKaW5kZXggN2FmNmEzZGNiYjFmLi43YmQxM2YzZDE3OTAgMTAwNjQ0Ci0t LSBhL2ZzL2V4dDQvaW5saW5lLmMKKysrIGIvZnMvZXh0NC9pbmxpbmUuYwpAQCAtMzQwLDggKzM0 MCwxMCBAQCBzdGF0aWMgaW50IGV4dDRfdXBkYXRlX2lubGluZV9kYXRhKGhhbmRsZV90ICpoYW5k bGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAKIAlsZW4gLT0gRVhUNF9NSU5fSU5MSU5FX0RBVEFf U0laRTsKIAl2YWx1ZSA9IGt6YWxsb2MobGVuLCBHRlBfTk9GUyk7Ci0JaWYgKCF2YWx1ZSkKKwlp ZiAoIXZhbHVlKSB7CisJCWVycm9yID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CisJfQogCiAJZXJy b3IgPSBleHQ0X3hhdHRyX2lib2R5X2dldChpbm9kZSwgaS5uYW1lX2luZGV4LCBpLm5hbWUsCiAJ CQkJICAgICB2YWx1ZSwgbGVuKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4 dDQvaW5vZGUuYwppbmRleCBjMzdkZDcxNTA2MGYuLjg5OGU5NjU5ZWJmMSAxMDA2NDQKLS0tIGEv ZnMvZXh0NC9pbm9kZS5jCisrKyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtNDExOCw2ICs0MTE4LDcg QEAgc3RydWN0IGlub2RlICpleHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWdu ZWQgbG9uZyBpbm8pCiAJc3RydWN0IGlub2RlICppbm9kZTsKIAlqb3VybmFsX3QgKmpvdXJuYWwg PSBFWFQ0X1NCKHNiKS0+c19qb3VybmFsOwogCWxvbmcgcmV0OworCWxvZmZfdCBzaXplOwogCWlu dCBibG9jazsKIAl1aWRfdCBpX3VpZDsKIAlnaWRfdCBpX2dpZDsKQEAgLTQyMDksNiArNDIxMCwx MSBAQCBzdHJ1Y3QgaW5vZGUgKmV4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNp Z25lZCBsb25nIGlubykKIAkJZWktPmlfZmlsZV9hY2wgfD0KIAkJCSgoX191NjQpbGUxNl90b19j cHUocmF3X2lub2RlLT5pX2ZpbGVfYWNsX2hpZ2gpKSA8PCAzMjsKIAlpbm9kZS0+aV9zaXplID0g ZXh0NF9pc2l6ZShyYXdfaW5vZGUpOworCWlmICgoc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKSkg PCAwKSB7CisJCUVYVDRfRVJST1JfSU5PREUoaW5vZGUsICJiYWQgaV9zaXplIHZhbHVlOiAlbGxk Iiwgc2l6ZSk7CisJCXJldCA9IC1FSU87CisJCWdvdG8gYmFkX2lub2RlOworCX0KIAllaS0+aV9k aXNrc2l6ZSA9IGlub2RlLT5pX3NpemU7CiAjaWZkZWYgQ09ORklHX1FVT1RBCiAJZWktPmlfcmVz ZXJ2ZWRfcXVvdGEgPSAwOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0 L21iYWxsb2MuYwppbmRleCA2MmQwYzVjYmNhZDYuLjQyNWRkNjE4YTllMiAxMDA2NDQKLS0tIGEv ZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0NC9tYmFsbG9jLmMKQEAgLTY2OCw3ICs2Njgs NyBAQCBzdGF0aWMgdm9pZCBleHQ0X21iX21hcmtfZnJlZV9zaW1wbGUoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwKIAlleHQ0X2dycGJsa190IG1pbjsKIAlleHQ0X2dycGJsa190IG1heDsKIAlleHQ0 X2dycGJsa190IGNodW5rOwotCXVuc2lnbmVkIHNob3J0IGJvcmRlcjsKKwl1bnNpZ25lZCBpbnQg Ym9yZGVyOwogCiAJQlVHX09OKGxlbiA+IEVYVDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSk7CiAK QEAgLTIyNTIsNyArMjI1Miw3IEBAIHN0YXRpYyBpbnQgZXh0NF9tYl9zZXFfZ3JvdXBzX3Nob3co c3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpCiAJc3RydWN0IGV4dDRfZ3JvdXBfaW5mbyAq Z3JpbmZvOwogCXN0cnVjdCBzZyB7CiAJCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gaW5mbzsKLQkJ ZXh0NF9ncnBibGtfdCBjb3VudGVyc1sxNl07CisJCWV4dDRfZ3JwYmxrX3QgY291bnRlcnNbRVhU NF9NQVhfQkxPQ0tfTE9HX1NJWkUgKyAyXTsKIAl9IHNnOwogCiAJZ3JvdXAtLTsKZGlmZiAtLWdp dCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuYwppbmRleCAxM2EzM2MzMDQ3ZjQu LmM2MDhkODA1ZjUwOSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQv c3VwZXIuYwpAQCAtMzMwMSwxMCArMzMwMSwxNSBAQCBzdGF0aWMgaW50IGNvdW50X292ZXJoZWFk KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncnAsCiAJCQlleHQ0X3NldF9i aXQocysrLCBidWYpOwogCQkJY291bnQrKzsKIAkJfQotCQlmb3IgKGogPSBleHQ0X2JnX251bV9n ZGIoc2IsIGdycCk7IGogPiAwOyBqLS0pIHsKLQkJCWV4dDRfc2V0X2JpdChFWFQ0X0IyQyhzYmks IHMrKyksIGJ1Zik7Ci0JCQljb3VudCsrOworCQlqID0gZXh0NF9iZ19udW1fZ2RiKHNiLCBncnAp OworCQlpZiAocyArIGogPiBFWFQ0X0JMT0NLU19QRVJfR1JPVVAoc2IpKSB7CisJCQlleHQ0X2Vy cm9yKHNiLCAiSW52YWxpZCBudW1iZXIgb2YgYmxvY2sgZ3JvdXAgIgorCQkJCSAgICJkZXNjcmlw dG9yIGJsb2NrczogJWQiLCBqKTsKKwkJCWogPSBFWFQ0X0JMT0NLU19QRVJfR1JPVVAoc2IpIC0g czsKIAkJfQorCQljb3VudCArPSBqOworCQlmb3IgKDsgaiA+IDA7IGotLSkKKwkJCWV4dDRfc2V0 X2JpdChFWFQ0X0IyQyhzYmksIHMrKyksIGJ1Zik7CiAJfQogCWlmICghY291bnQpCiAJCXJldHVy biAwOwpAQCAtMzQwNyw3ICszNDEyLDcgQEAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKIAljaGFyICpvcmln X2RhdGEgPSBrc3RyZHVwKGRhdGEsIEdGUF9LRVJORUwpOwogCXN0cnVjdCBidWZmZXJfaGVhZCAq Ymg7CiAJc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gTlVMTDsKLQlzdHJ1Y3QgZXh0NF9z Yl9pbmZvICpzYmk7CisJc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0ga3phbGxvYyhzaXplb2Yo KnNiaSksIEdGUF9LRVJORUwpOwogCWV4dDRfZnNibGtfdCBibG9jazsKIAlleHQ0X2ZzYmxrX3Qg c2JfYmxvY2sgPSBnZXRfc2JfYmxvY2soJmRhdGEpOwogCWV4dDRfZnNibGtfdCBsb2dpY2FsX3Ni X2Jsb2NrOwpAQCAtMzQyNywxNiArMzQzMiwxNCBAQCBzdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQogCXVuc2ln bmVkIGludCBqb3VybmFsX2lvcHJpbyA9IERFRkFVTFRfSk9VUk5BTF9JT1BSSU87CiAJZXh0NF9n cm91cF90IGZpcnN0X25vdF96ZXJvZWQ7CiAKLQlzYmkgPSBremFsbG9jKHNpemVvZigqc2JpKSwg R0ZQX0tFUk5FTCk7Ci0JaWYgKCFzYmkpCi0JCWdvdG8gb3V0X2ZyZWVfb3JpZzsKKwlpZiAoKGRh dGEgJiYgIW9yaWdfZGF0YSkgfHwgIXNiaSkKKwkJZ290byBvdXRfZnJlZV9iYXNlOwogCiAJc2Jp LT5zX2Jsb2NrZ3JvdXBfbG9jayA9CiAJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBibG9ja2dyb3Vw X2xvY2spLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXNiaS0+c19ibG9ja2dyb3VwX2xvY2spIHsKLQkJ a2ZyZWUoc2JpKTsKLQkJZ290byBvdXRfZnJlZV9vcmlnOwotCX0KKwlpZiAoIXNiaS0+c19ibG9j a2dyb3VwX2xvY2spCisJCWdvdG8gb3V0X2ZyZWVfYmFzZTsKKwogCXNiLT5zX2ZzX2luZm8gPSBz Ymk7CiAJc2JpLT5zX3NiID0gc2I7CiAJc2JpLT5zX2lub2RlX3JlYWRhaGVhZF9ibGtzID0gRVhU NF9ERUZfSU5PREVfUkVBREFIRUFEX0JMS1M7CkBAIC0zNTgyLDExICszNTg1LDE5IEBAIHN0YXRp YyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHZvaWQgKmRhdGEs IGludCBzaWxlbnQpCiAJICovCiAJc2JpLT5zX2xpX3dhaXRfbXVsdCA9IEVYVDRfREVGX0xJX1dB SVRfTVVMVDsKIAotCWlmICghcGFyc2Vfb3B0aW9ucygoY2hhciAqKSBzYmktPnNfZXMtPnNfbW91 bnRfb3B0cywgc2IsCi0JCQkgICAmam91cm5hbF9kZXZudW0sICZqb3VybmFsX2lvcHJpbywgMCkp IHsKLQkJZXh0NF9tc2coc2IsIEtFUk5fV0FSTklORywKLQkJCSAiZmFpbGVkIHRvIHBhcnNlIG9w dGlvbnMgaW4gc3VwZXJibG9jazogJXMiLAotCQkJIHNiaS0+c19lcy0+c19tb3VudF9vcHRzKTsK KwlpZiAoc2JpLT5zX2VzLT5zX21vdW50X29wdHNbMF0pIHsKKwkJY2hhciAqc19tb3VudF9vcHRz ID0ga3N0cm5kdXAoc2JpLT5zX2VzLT5zX21vdW50X29wdHMsCisJCQkJCSAgICAgIHNpemVvZihz YmktPnNfZXMtPnNfbW91bnRfb3B0cyksCisJCQkJCSAgICAgIEdGUF9LRVJORUwpOworCQlpZiAo IXNfbW91bnRfb3B0cykKKwkJCWdvdG8gZmFpbGVkX21vdW50OworCQlpZiAoIXBhcnNlX29wdGlv bnMoc19tb3VudF9vcHRzLCBzYiwgJmpvdXJuYWxfZGV2bnVtLAorCQkJCSAgICZqb3VybmFsX2lv cHJpbywgMCkpIHsKKwkJCWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCisJCQkJICJmYWlsZWQg dG8gcGFyc2Ugb3B0aW9ucyBpbiBzdXBlcmJsb2NrOiAlcyIsCisJCQkJIHNfbW91bnRfb3B0cyk7 CisJCX0KKwkJa2ZyZWUoc19tb3VudF9vcHRzKTsKIAl9CiAJc2JpLT5zX2RlZl9tb3VudF9vcHQg PSBzYmktPnNfbW91bnRfb3B0OwogCWlmICghcGFyc2Vfb3B0aW9ucygoY2hhciAqKSBkYXRhLCBz YiwgJmpvdXJuYWxfZGV2bnVtLApAQCAtMzc1MCwxMiArMzc2MSwxNiBAQCBzdGF0aWMgaW50IGV4 dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2ls ZW50KQogCiAJc2JpLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgPSBsZTMyX3RvX2NwdShlcy0+c19ibG9j a3NfcGVyX2dyb3VwKTsKIAlzYmktPnNfaW5vZGVzX3Blcl9ncm91cCA9IGxlMzJfdG9fY3B1KGVz LT5zX2lub2Rlc19wZXJfZ3JvdXApOwotCWlmIChFWFQ0X0lOT0RFX1NJWkUoc2IpID09IDAgfHwg RVhUNF9JTk9ERVNfUEVSX0dST1VQKHNiKSA9PSAwKQotCQlnb3RvIGNhbnRmaW5kX2V4dDQ7CiAK IAlzYmktPnNfaW5vZGVzX3Blcl9ibG9jayA9IGJsb2Nrc2l6ZSAvIEVYVDRfSU5PREVfU0laRShz Yik7CiAJaWYgKHNiaS0+c19pbm9kZXNfcGVyX2Jsb2NrID09IDApCiAJCWdvdG8gY2FudGZpbmRf ZXh0NDsKKwlpZiAoc2JpLT5zX2lub2Rlc19wZXJfZ3JvdXAgPCBzYmktPnNfaW5vZGVzX3Blcl9i bG9jayB8fAorCSAgICBzYmktPnNfaW5vZGVzX3Blcl9ncm91cCA+IGJsb2Nrc2l6ZSAqIDgpIHsK KwkJZXh0NF9tc2coc2IsIEtFUk5fRVJSLCAiaW52YWxpZCBpbm9kZXMgcGVyIGdyb3VwOiAlbHVc biIsCisJCQkgc2JpLT5zX2Jsb2Nrc19wZXJfZ3JvdXApOworCQlnb3RvIGZhaWxlZF9tb3VudDsK Kwl9CiAJc2JpLT5zX2l0Yl9wZXJfZ3JvdXAgPSBzYmktPnNfaW5vZGVzX3Blcl9ncm91cCAvCiAJ CQkJCXNiaS0+c19pbm9kZXNfcGVyX2Jsb2NrOwogCXNiaS0+c19kZXNjX3Blcl9ibG9jayA9IGJs b2Nrc2l6ZSAvIEVYVDRfREVTQ19TSVpFKHNiKTsKQEAgLTM4MzksMTMgKzM4NTQsNiBAQCBzdGF0 aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRh LCBpbnQgc2lsZW50KQogCX0KIAlzYmktPnNfY2x1c3Rlcl9yYXRpbyA9IGNsdXN0ZXJzaXplIC8g YmxvY2tzaXplOwogCi0JaWYgKHNiaS0+c19pbm9kZXNfcGVyX2dyb3VwID4gYmxvY2tzaXplICog OCkgewotCQlleHQ0X21zZyhzYiwgS0VSTl9FUlIsCi0JCSAgICAgICAiI2lub2RlcyBwZXIgZ3Jv dXAgdG9vIGJpZzogJWx1IiwKLQkJICAgICAgIHNiaS0+c19pbm9kZXNfcGVyX2dyb3VwKTsKLQkJ Z290byBmYWlsZWRfbW91bnQ7Ci0JfQotCiAJLyogRG8gd2UgaGF2ZSBzdGFuZGFyZCBncm91cCBz aXplIG9mIGNsdXN0ZXJzaXplICogOCBibG9ja3MgPyAqLwogCWlmIChzYmktPnNfYmxvY2tzX3Bl cl9ncm91cCA9PSBjbHVzdGVyc2l6ZSA8PCAzKQogCQlzZXRfb3B0MihzYiwgU1REX0dST1VQX1NJ WkUpOwpAQCAtNDI1MSw3ICs0MjU5LDkgQEAgbm9fam91cm5hbDoKIAl9CiAKIAlleHQ0X21zZyhz YiwgS0VSTl9JTkZPLCAibW91bnRlZCBmaWxlc3lzdGVtIHdpdGglcy4gIgotCQkgIk9wdHM6ICVz JXMlcyIsIGRlc2NyLCBzYmktPnNfZXMtPnNfbW91bnRfb3B0cywKKwkJICJPcHRzOiAlLipzJXMl cyIsIGRlc2NyLAorCQkgKGludCkgc2l6ZW9mKHNiaS0+c19lcy0+c19tb3VudF9vcHRzKSwKKwkJ IHNiaS0+c19lcy0+c19tb3VudF9vcHRzLAogCQkgKnNiaS0+c19lcy0+c19tb3VudF9vcHRzID8g IjsgIiA6ICIiLCBvcmlnX2RhdGEpOwogCiAJaWYgKGVzLT5zX2Vycm9yX2NvdW50KQpAQCAtNDMy NSw4ICs0MzM1LDggQEAgZmFpbGVkX21vdW50Ogogb3V0X2ZhaWw6CiAJc2ItPnNfZnNfaW5mbyA9 IE5VTEw7CiAJa2ZyZWUoc2JpLT5zX2Jsb2NrZ3JvdXBfbG9jayk7CitvdXRfZnJlZV9iYXNlOgog CWtmcmVlKHNiaSk7Ci1vdXRfZnJlZV9vcmlnOgogCWtmcmVlKG9yaWdfZGF0YSk7CiAJcmV0dXJu IGVyciA/IGVyciA6IHJldDsKIH0KZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZGVidWcuYyBiL2ZzL2Yy ZnMvZGVidWcuYwppbmRleCBiNTJjMTJjZjU4NzMuLmRmMThlZGIzMzYwMSAxMDA2NDQKLS0tIGEv ZnMvZjJmcy9kZWJ1Zy5jCisrKyBiL2ZzL2YyZnMvZGVidWcuYwpAQCAtMjk1LDYgKzI5NSw3IEBA IHN0YXRpYyBpbnQgc3RhdF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpm aWxlKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzdGF0X2ZvcHMg PSB7CisJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJLm9wZW4gPSBzdGF0X29wZW4sCiAJLnJlYWQg PSBzZXFfcmVhZCwKIAkubGxzZWVrID0gc2VxX2xzZWVrLApkaWZmIC0tZ2l0IGEvZnMvbmZzL2Rp ci5jIGIvZnMvbmZzL2Rpci5jCmluZGV4IGM4MzI1OTk2NjliYy4uNWNiZGJiNmFlZGRlIDEwMDY0 NAotLS0gYS9mcy9uZnMvZGlyLmMKKysrIGIvZnMvbmZzL2Rpci5jCkBAIC00NTUsNyArNDU1LDcg QEAgdm9pZCBuZnNfZm9yY2VfdXNlX3JlYWRkaXJwbHVzKHN0cnVjdCBpbm9kZSAqZGlyKQogewog CWlmICghbGlzdF9lbXB0eSgmTkZTX0koZGlyKS0+b3Blbl9maWxlcykpIHsKIAkJbmZzX2Fkdmlz ZV91c2VfcmVhZGRpcnBsdXMoZGlyKTsKLQkJbmZzX3phcF9tYXBwaW5nKGRpciwgZGlyLT5pX21h cHBpbmcpOworCQlpbnZhbGlkYXRlX21hcHBpbmdfcGFnZXMoZGlyLT5pX21hcHBpbmcsIDAsIC0x KTsKIAl9CiB9CiAKQEAgLTgzNywxNyArODM3LDYgQEAgaW50IHVuY2FjaGVkX3JlYWRkaXIobmZz X3JlYWRkaXJfZGVzY3JpcHRvcl90ICpkZXNjKQogCWdvdG8gb3V0OwogfQogCi1zdGF0aWMgYm9v bCBuZnNfZGlyX21hcHBpbmdfbmVlZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqZGlyKQotewot CXN0cnVjdCBuZnNfaW5vZGUgKm5mc2kgPSBORlNfSShkaXIpOwotCi0JaWYgKG5mc19hdHRyaWJ1 dGVfY2FjaGVfZXhwaXJlZChkaXIpKQotCQlyZXR1cm4gdHJ1ZTsKLQlpZiAobmZzaS0+Y2FjaGVf dmFsaWRpdHkgJiBORlNfSU5PX0lOVkFMSURfREFUQSkKLQkJcmV0dXJuIHRydWU7Ci0JcmV0dXJu IGZhbHNlOwotfQotCiAvKiBUaGUgZmlsZSBvZmZzZXQgcG9zaXRpb24gcmVwcmVzZW50cyB0aGUg ZGlyZW50IGVudHJ5IG51bWJlci4gIEEKICAgIGxhc3QgY29va2llIGNhY2hlIHRha2VzIGNhcmUg b2YgdGhlIGNvbW1vbiBjYXNlIG9mIHJlYWRpbmcgdGhlCiAgICB3aG9sZSBkaXJlY3RvcnkuCkBA IC04ODAsNyArODY5LDcgQEAgc3RhdGljIGludCBuZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmls ZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpCiAJZGVzYy0+cGx1cyA9IG5mc191c2VfcmVhZGRp cnBsdXMoaW5vZGUsIGN0eCkgPyAxIDogMDsKIAogCW5mc19ibG9ja19zaWxseXJlbmFtZShkZW50 cnkpOwotCWlmIChjdHgtPnBvcyA9PSAwIHx8IG5mc19kaXJfbWFwcGluZ19uZWVkX3JldmFsaWRh dGUoaW5vZGUpKQorCWlmIChjdHgtPnBvcyA9PSAwIHx8IG5mc19hdHRyaWJ1dGVfY2FjaGVfZXhw aXJlZChpbm9kZSkpCiAJCXJlcyA9IG5mc19yZXZhbGlkYXRlX21hcHBpbmcoaW5vZGUsIGZpbGUt PmZfbWFwcGluZyk7CiAJaWYgKHJlcyA8IDApCiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZnMv bmZzL2ZpbGUuYyBiL2ZzL25mcy9maWxlLmMKaW5kZXggNDA0MmZmNThmZTNmLi4xOWNmYzYzNmI2 OTEgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9maWxlLmMKKysrIGIvZnMvbmZzL2ZpbGUuYwpAQCAtNDAz LDcgKzQwMyw3IEBAIHN0YXRpYyBpbnQgbmZzX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwg c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJICovCiAJaWYgKCFQYWdlVXB0b2RhdGUo cGFnZSkpIHsKIAkJdW5zaWduZWQgcGdsZW4gPSBuZnNfcGFnZV9sZW5ndGgocGFnZSk7Ci0JCXVu c2lnbmVkIGVuZCA9IG9mZnNldCArIGxlbjsKKwkJdW5zaWduZWQgZW5kID0gb2Zmc2V0ICsgY29w aWVkOwogCiAJCWlmIChwZ2xlbiA9PSAwKSB7CiAJCQl6ZXJvX3VzZXJfc2VnbWVudHMocGFnZSwg MCwgb2Zmc2V0LApkaWZmIC0tZ2l0IGEvZnMvbmZzL2ZpbGVsYXlvdXQvZmlsZWxheW91dGRldi5j IGIvZnMvbmZzL2ZpbGVsYXlvdXQvZmlsZWxheW91dGRldi5jCmluZGV4IDQ0YmYwMTQwYTRjNy4u NjUxYjE3MTM4N2UyIDEwMDY0NAotLS0gYS9mcy9uZnMvZmlsZWxheW91dC9maWxlbGF5b3V0ZGV2 LmMKKysrIGIvZnMvbmZzL2ZpbGVsYXlvdXQvZmlsZWxheW91dGRldi5jCkBAIC04MjcsNyArODI3 LDggQEAgbmZzNF9mbF9wcmVwYXJlX2RzKHN0cnVjdCBwbmZzX2xheW91dF9zZWdtZW50ICpsc2Vn LCB1MzIgZHNfaWR4KQogCQluZnM0X3dhaXRfZHNfY29ubmVjdChkcyk7CiAJfQogb3V0X3Rlc3Rf ZGV2aWQ6Ci0JaWYgKGZpbGVsYXlvdXRfdGVzdF9kZXZpZF91bmF2YWlsYWJsZShkZXZpZCkpCisJ aWYgKHJldC0+ZHNfY2xwID09IE5VTEwgfHwKKwkgICAgZmlsZWxheW91dF90ZXN0X2RldmlkX3Vu YXZhaWxhYmxlKGRldmlkKSkKIAkJcmV0ID0gTlVMTDsKIG91dDoKIAlyZXR1cm4gcmV0OwpkaWZm IC0tZ2l0IGEvZnMvbmZzL25mczRzdGF0ZS5jIGIvZnMvbmZzL25mczRzdGF0ZS5jCmluZGV4IDNk ODhiYzk2N2M4ZS4uZjk2YzY2YjRkNTA0IDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzNHN0YXRlLmMK KysrIGIvZnMvbmZzL25mczRzdGF0ZS5jCkBAIC0xMDg2LDYgKzEwODYsNyBAQCBzdGF0aWMgdm9p ZCBuZnNfaW5jcmVtZW50X3NlcWlkKGludCBzdGF0dXMsIHN0cnVjdCBuZnNfc2VxaWQgKnNlcWlk KQogCQljYXNlIC1ORlM0RVJSX0JBRFhEUjoKIAkJY2FzZSAtTkZTNEVSUl9SRVNPVVJDRToKIAkJ Y2FzZSAtTkZTNEVSUl9OT0ZJTEVIQU5ETEU6CisJCWNhc2UgLU5GUzRFUlJfTU9WRUQ6CiAJCQkv KiBOb24tc2VxaWQgbXV0YXRpbmcgZXJyb3JzICovCiAJCQlyZXR1cm47CiAJfTsKZGlmZiAtLWdp dCBhL2ZzL25vdGlmeS9pbm9kZV9tYXJrLmMgYi9mcy9ub3RpZnkvaW5vZGVfbWFyay5jCmluZGV4 IGZiYjlkZmI3YjFkMi4uMTJjNmZmMDcwY2Q4IDEwMDY0NAotLS0gYS9mcy9ub3RpZnkvaW5vZGVf bWFyay5jCisrKyBiL2ZzL25vdGlmeS9pbm9kZV9tYXJrLmMKQEAgLTI0OSwxMiArMjQ5LDEwIEBA IG91dDoKICAqLwogdm9pZCBmc25vdGlmeV91bm1vdW50X2lub2RlcyhzdHJ1Y3QgbGlzdF9oZWFk ICpsaXN0KQogewotCXN0cnVjdCBpbm9kZSAqaW5vZGUsICpuZXh0X2ksICpuZWVkX2lwdXQgPSBO VUxMOworCXN0cnVjdCBpbm9kZSAqaW5vZGUsICppcHV0X2lub2RlID0gTlVMTDsKIAogCXNwaW5f bG9jaygmaW5vZGVfc2JfbGlzdF9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaW5v ZGUsIG5leHRfaSwgbGlzdCwgaV9zYl9saXN0KSB7Ci0JCXN0cnVjdCBpbm9kZSAqbmVlZF9pcHV0 X3RtcDsKLQorCWxpc3RfZm9yX2VhY2hfZW50cnkoaW5vZGUsIGxpc3QsIGlfc2JfbGlzdCkgewog CQkvKgogCQkgKiBXZSBjYW5ub3QgX19pZ2V0KCkgYW4gaW5vZGUgaW4gc3RhdGUgSV9GUkVFSU5H LAogCQkgKiBJX1dJTExfRlJFRSwgb3IgSV9ORVcgd2hpY2ggaXMgZmluZSBiZWNhdXNlIGJ5IHRo YXQgcG9pbnQKQEAgLTI3Nyw1MCArMjc1LDI0IEBAIHZvaWQgZnNub3RpZnlfdW5tb3VudF9pbm9k ZXMoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJbmVlZF9p cHV0X3RtcCA9IG5lZWRfaXB1dDsKLQkJbmVlZF9pcHV0ID0gTlVMTDsKLQotCQkvKiBJbiBjYXNl IGZzbm90aWZ5X2lub2RlX2RlbGV0ZSgpIGRyb3BzIGEgcmVmZXJlbmNlLiAqLwotCQlpZiAoaW5v ZGUgIT0gbmVlZF9pcHV0X3RtcCkKLQkJCV9faWdldChpbm9kZSk7Ci0JCWVsc2UKLQkJCW5lZWRf aXB1dF90bXAgPSBOVUxMOworCQlfX2lnZXQoaW5vZGUpOwogCQlzcGluX3VubG9jaygmaW5vZGUt PmlfbG9jayk7Ci0KLQkJLyogSW4gY2FzZSB0aGUgZHJvcHBpbmcgb2YgYSByZWZlcmVuY2Ugd291 bGQgbnVrZSBuZXh0X2kuICovCi0JCXdoaWxlICgmbmV4dF9pLT5pX3NiX2xpc3QgIT0gbGlzdCkg ewotCQkJc3Bpbl9sb2NrKCZuZXh0X2ktPmlfbG9jayk7Ci0JCQlpZiAoIShuZXh0X2ktPmlfc3Rh dGUgJiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUpKSAmJgotCQkJCQkJYXRvbWljX3JlYWQoJm5l eHRfaS0+aV9jb3VudCkpIHsKLQkJCQlfX2lnZXQobmV4dF9pKTsKLQkJCQluZWVkX2lwdXQgPSBu ZXh0X2k7Ci0JCQkJc3Bpbl91bmxvY2soJm5leHRfaS0+aV9sb2NrKTsKLQkJCQlicmVhazsKLQkJ CX0KLQkJCXNwaW5fdW5sb2NrKCZuZXh0X2ktPmlfbG9jayk7Ci0JCQluZXh0X2kgPSBsaXN0X2Vu dHJ5KG5leHRfaS0+aV9zYl9saXN0Lm5leHQsCi0JCQkJCQlzdHJ1Y3QgaW5vZGUsIGlfc2JfbGlz dCk7Ci0JCX0KLQotCQkvKgotCQkgKiBXZSBjYW4gc2FmZWx5IGRyb3AgaW5vZGVfc2JfbGlzdF9s b2NrIGhlcmUgYmVjYXVzZSBlaXRoZXIKLQkJICogd2UgYWN0dWFsbHkgaG9sZCByZWZlcmVuY2Vz IG9uIGJvdGggaW5vZGUgYW5kIG5leHRfaSBvcgotCQkgKiBlbmQgb2YgbGlzdC4gIEFsc28gbm8g bmV3IGlub2RlcyB3aWxsIGJlIGFkZGVkIHNpbmNlIHRoZQotCQkgKiB1bW91bnQgaGFzIGJlZ3Vu LgotCQkgKi8KIAkJc3Bpbl91bmxvY2soJmlub2RlX3NiX2xpc3RfbG9jayk7CiAKLQkJaWYgKG5l ZWRfaXB1dF90bXApCi0JCQlpcHV0KG5lZWRfaXB1dF90bXApOworCQlpZiAoaXB1dF9pbm9kZSkK KwkJCWlwdXQoaXB1dF9pbm9kZSk7CiAKIAkJLyogZm9yIGVhY2ggd2F0Y2gsIHNlbmQgRlNfVU5N T1VOVCBhbmQgdGhlbiByZW1vdmUgaXQgKi8KIAkJZnNub3RpZnkoaW5vZGUsIEZTX1VOTU9VTlQs IGlub2RlLCBGU05PVElGWV9FVkVOVF9JTk9ERSwgTlVMTCwgMCk7CiAKIAkJZnNub3RpZnlfaW5v ZGVfZGVsZXRlKGlub2RlKTsKIAotCQlpcHV0KGlub2RlKTsKKwkJaXB1dF9pbm9kZSA9IGlub2Rl OwogCiAJCXNwaW5fbG9jaygmaW5vZGVfc2JfbGlzdF9sb2NrKTsKIAl9CiAJc3Bpbl91bmxvY2so Jmlub2RlX3NiX2xpc3RfbG9jayk7CisKKwlpZiAoaXB1dF9pbm9kZSkKKwkJaXB1dChpcHV0X2lu b2RlKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbWdsdWUuYyBiL2ZzL29jZnMyL2RsbWds dWUuYwppbmRleCAxMThhNDk0YTMyM2UuLjNjNGQ2ZjU4MTFlOCAxMDA2NDQKLS0tIGEvZnMvb2Nm czIvZGxtZ2x1ZS5jCisrKyBiL2ZzL29jZnMyL2RsbWdsdWUuYwpAQCAtMzMwNSw2ICszMzA1LDE2 IEBAIHN0YXRpYyBpbnQgb2NmczJfZG93bmNvbnZlcnRfbG9jayhzdHJ1Y3Qgb2NmczJfc3VwZXIg Km9zYiwKIAltbG9nKE1MX0JBU1RTLCAibG9ja3JlcyAlcywgbGV2ZWwgJWQgPT4gJWRcbiIsIGxv Y2tyZXMtPmxfbmFtZSwKIAkgICAgIGxvY2tyZXMtPmxfbGV2ZWwsIG5ld19sZXZlbCk7CiAKKwkv KgorCSAqIE9uIERMTV9MS0ZfVkFMQkxLLCBmc2RsbSBiZWhhdmVzIGRpZmZlcmVudGx5IHdpdGgg bzJjYi4gSXQgYWx3YXlzCisJICogZXhwZWN0cyBETE1fTEtGX1ZBTEJMSyBiZWluZyBzZXQgaWYg dGhlIExLQiBoYXMgTFZCLCBzbyB0aGF0CisJICogd2UgY2FuIHJlY292ZXIgY29ycmVjdGx5IGZy b20gbm9kZSBmYWlsdXJlLiBPdGhlcndpc2UsIHdlIG1heSBnZXQKKwkgKiBpbnZhbGlkIExWQiBp biBMS0IsIGJ1dCB3aXRob3V0IERMTV9TQkZfVkFMTk9UVkFMSUTCoGJlaW5nIHNldC4KKwkgKi8K KwlpZiAoIW9jZnMyX2lzX28yY2JfYWN0aXZlKCkgJiYKKwkgICAgbG9ja3Jlcy0+bF9vcHMtPmZs YWdzICYgTE9DS19UWVBFX1VTRVNfTFZCKQorCQlsdmIgPSAxOworCiAJaWYgKGx2YikKIAkJZGxt X2ZsYWdzIHw9IERMTV9MS0ZfVkFMQkxLOwogCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9zdGFja2ds dWUuYyBiL2ZzL29jZnMyL3N0YWNrZ2x1ZS5jCmluZGV4IDVkOTY1ZTgzYmQ0My4uNzgzYmNkY2U1 NjY2IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9zdGFja2dsdWUuYworKysgYi9mcy9vY2ZzMi9zdGFj a2dsdWUuYwpAQCAtNDgsNiArNDgsMTIgQEAgc3RhdGljIGNoYXIgb2NmczJfaGJfY3RsX3BhdGhb T0NGUzJfTUFYX0hCX0NUTF9QQVRIXSA9ICIvc2Jpbi9vY2ZzMl9oYl9jdGwiOwogICovCiBzdGF0 aWMgc3RydWN0IG9jZnMyX3N0YWNrX3BsdWdpbiAqYWN0aXZlX3N0YWNrOwogCitpbmxpbmUgaW50 IG9jZnMyX2lzX28yY2JfYWN0aXZlKHZvaWQpCit7CisJcmV0dXJuICFzdHJjbXAoYWN0aXZlX3N0 YWNrLT5zcF9uYW1lLCBPQ0ZTMl9TVEFDS19QTFVHSU5fTzJDQik7Cit9CitFWFBPUlRfU1lNQk9M X0dQTChvY2ZzMl9pc19vMmNiX2FjdGl2ZSk7CisKIHN0YXRpYyBzdHJ1Y3Qgb2NmczJfc3RhY2tf cGx1Z2luICpvY2ZzMl9zdGFja19sb29rdXAoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlzdHJ1Y3Qg b2NmczJfc3RhY2tfcGx1Z2luICpwOwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvc3RhY2tnbHVlLmgg Yi9mcy9vY2ZzMi9zdGFja2dsdWUuaAppbmRleCA2NjMzNGEzMGNlYTguLmUxYjMwOTMxOTc0ZCAx MDA2NDQKLS0tIGEvZnMvb2NmczIvc3RhY2tnbHVlLmgKKysrIGIvZnMvb2NmczIvc3RhY2tnbHVl LmgKQEAgLTI5OCw0ICsyOTgsNyBAQCB2b2lkIG9jZnMyX3N0YWNrX2dsdWVfc2V0X21heF9wcm90 b192ZXJzaW9uKHN0cnVjdCBvY2ZzMl9wcm90b2NvbF92ZXJzaW9uICptYXhfcAogaW50IG9jZnMy X3N0YWNrX2dsdWVfcmVnaXN0ZXIoc3RydWN0IG9jZnMyX3N0YWNrX3BsdWdpbiAqcGx1Z2luKTsK IHZvaWQgb2NmczJfc3RhY2tfZ2x1ZV91bnJlZ2lzdGVyKHN0cnVjdCBvY2ZzMl9zdGFja19wbHVn aW4gKnBsdWdpbik7CiAKKy8qIEluIG9jZnMyX2Rvd25jb252ZXJ0X2xvY2soKSwgd2UgbmVlZCB0 byBrbm93IHdoaWNoIHN0YWNrIHdlIGFyZSB1c2luZyAqLworaW50IG9jZnMyX2lzX28yY2JfYWN0 aXZlKHZvaWQpOworCiAjZW5kaWYgIC8qIFNUQUNLR0xVRV9IICovCmRpZmYgLS1naXQgYS9mcy9z cGxpY2UuYyBiL2ZzL3NwbGljZS5jCmluZGV4IDk2MmM3ZjdlMDNmNi4uNDFmMTBjZTkyOWRkIDEw MDY0NAotLS0gYS9mcy9zcGxpY2UuYworKysgYi9mcy9zcGxpY2UuYwpAQCAtMjEyLDYgKzIxMiw3 IEBAIHNzaXplX3Qgc3BsaWNlX3RvX3BpcGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwK IAkJCWJ1Zi0+bGVuID0gc3BkLT5wYXJ0aWFsW3BhZ2VfbnJdLmxlbjsKIAkJCWJ1Zi0+cHJpdmF0 ZSA9IHNwZC0+cGFydGlhbFtwYWdlX25yXS5wcml2YXRlOwogCQkJYnVmLT5vcHMgPSBzcGQtPm9w czsKKwkJCWJ1Zi0+ZmxhZ3MgPSAwOwogCQkJaWYgKHNwZC0+ZmxhZ3MgJiBTUExJQ0VfRl9HSUZU KQogCQkJCWJ1Zi0+ZmxhZ3MgfD0gUElQRV9CVUZfRkxBR19HSUZUOwogCmRpZmYgLS1naXQgYS9m cy91Ymlmcy90bmMuYyBiL2ZzL3ViaWZzL3RuYy5jCmluZGV4IDhhNDBjZjljMDJkNy4uZjA3NTk2 NDYzY2RlIDEwMDY0NAotLS0gYS9mcy91Ymlmcy90bmMuYworKysgYi9mcy91Ymlmcy90bmMuYwpA QCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSAidWJp ZnMuaCIKIAorc3RhdGljIGludCB0cnlfcmVhZF9ub2RlKGNvbnN0IHN0cnVjdCB1Ymlmc19pbmZv ICpjLCB2b2lkICpidWYsIGludCB0eXBlLAorCQkJIGludCBsZW4sIGludCBsbnVtLCBpbnQgb2Zm cyk7CitzdGF0aWMgaW50IGZhbGxpYmxlX3JlYWRfbm9kZShzdHJ1Y3QgdWJpZnNfaW5mbyAqYywg Y29uc3QgdW5pb24gdWJpZnNfa2V5ICprZXksCisJCQkgICAgICBzdHJ1Y3QgdWJpZnNfemJyYW5j aCAqemJyLCB2b2lkICpub2RlKTsKKwogLyoKICAqIFJldHVybmVkIGNvZGVzIG9mICdtYXRjaGVz X25hbWUoKScgYW5kICdmYWxsaWJsZV9tYXRjaGVzX25hbWUoKScgZnVuY3Rpb25zLgogICogQE5B TUVfTEVTUzogbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBsZXNz IHRoYW4gc2Vjb25kCkBAIC00MDMsNyArNDA4LDE5IEBAIHN0YXRpYyBpbnQgdG5jX3JlYWRfbm9k ZV9ubShzdHJ1Y3QgdWJpZnNfaW5mbyAqYywgc3RydWN0IHViaWZzX3picmFuY2ggKnpiciwKIAkJ cmV0dXJuIDA7CiAJfQogCi0JZXJyID0gdWJpZnNfdG5jX3JlYWRfbm9kZShjLCB6YnIsIG5vZGUp OworCWlmIChjLT5yZXBsYXlpbmcpIHsKKwkJZXJyID0gZmFsbGlibGVfcmVhZF9ub2RlKGMsICZ6 YnItPmtleSwgemJyLCBub2RlKTsKKwkJLyoKKwkJICogV2hlbiB0aGUgbm9kZSB3YXMgbm90IGZv dW5kLCByZXR1cm4gLUVOT0VOVCwgMCBvdGhlcndpc2UuCisJCSAqIE5lZ2F0aXZlIHJldHVybiBj b2RlcyBzdGF5IGFzLWlzLgorCQkgKi8KKwkJaWYgKGVyciA9PSAwKQorCQkJZXJyID0gLUVOT0VO VDsKKwkJZWxzZSBpZiAoZXJyID09IDEpCisJCQllcnIgPSAwOworCX0gZWxzZSB7CisJCWVyciA9 IHViaWZzX3RuY19yZWFkX25vZGUoYywgemJyLCBub2RlKTsKKwl9CiAJaWYgKGVycikKIAkJcmV0 dXJuIGVycjsKIApAQCAtMjc2Nyw3ICsyNzg0LDExIEBAIHN0cnVjdCB1Ymlmc19kZW50X25vZGUg KnViaWZzX3RuY19uZXh0X2VudChzdHJ1Y3QgdWJpZnNfaW5mbyAqYywKIAlpZiAobm0tPm5hbWUp IHsKIAkJaWYgKGVycikgewogCQkJLyogSGFuZGxlIGNvbGxpc2lvbnMgKi8KLQkJCWVyciA9IHJl c29sdmVfY29sbGlzaW9uKGMsIGtleSwgJnpub2RlLCAmbiwgbm0pOworCQkJaWYgKGMtPnJlcGxh eWluZykKKwkJCQllcnIgPSBmYWxsaWJsZV9yZXNvbHZlX2NvbGxpc2lvbihjLCBrZXksICZ6bm9k ZSwgJm4sCisJCQkJCQkJIG5tLCAwKTsKKwkJCWVsc2UKKwkJCQllcnIgPSByZXNvbHZlX2NvbGxp c2lvbihjLCBrZXksICZ6bm9kZSwgJm4sIG5tKTsKIAkJCWRiZ190bmMoInJjIHJldHVybmVkICVk LCB6bm9kZSAlcCwgbiAlZCIsCiAJCQkJZXJyLCB6bm9kZSwgbik7CiAJCQlpZiAodW5saWtlbHko ZXJyIDwgMCkpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2JtYXBfdXRpbC5jIGIvZnMveGZzL3hm c19ibWFwX3V0aWwuYwppbmRleCAzZDgwN2VmNGY4MjEuLjA5ZGM5OTlhN2U0ZSAxMDA2NDQKLS0t IGEvZnMveGZzL3hmc19ibWFwX3V0aWwuYworKysgYi9mcy94ZnMveGZzX2JtYXBfdXRpbC5jCkBA IC0xNjMyLDYgKzE2MzIsNyBAQCB4ZnNfc3dhcF9leHRlbnRzKAogCWludAkJZXJyb3IgPSAwOwog CWludAkJYWZvcmtibGtzID0gMDsKIAlpbnQJCXRhZm9ya2Jsa3MgPSAwOworCXhmc19leHRudW1f dAluZXh0ZW50czsKIAlfX3VpbnQ2NF90CXRtcDsKIAlpbnQJCWxvY2tfZmxhZ3M7CiAKQEAgLTE4 MzMsNyArMTgzNCw4IEBAIHhmc19zd2FwX2V4dGVudHMoCiAJCSAqIHBvaW50ZXIuICBPdGhlcndp c2UgaXQncyBhbHJlYWR5IE5VTEwgb3IKIAkJICogcG9pbnRpbmcgdG8gdGhlIGV4dGVudC4KIAkJ ICovCi0JCWlmIChpcC0+aV9kLmRpX25leHRlbnRzIDw9IFhGU19JTkxJTkVfRVhUUykgeworCQlu ZXh0ZW50cyA9IGlwLT5pX2RmLmlmX2J5dGVzIC8gKHVpbnQpc2l6ZW9mKHhmc19ibWJ0X3JlY190 KTsKKwkJaWYgKG5leHRlbnRzIDw9IFhGU19JTkxJTkVfRVhUUykgewogCQkJaWZwLT5pZl91MS5p Zl9leHRlbnRzID0KIAkJCQlpZnAtPmlmX3UyLmlmX2lubGluZV9leHQ7CiAJCX0KQEAgLTE4NTIs NyArMTg1NCw4IEBAIHhmc19zd2FwX2V4dGVudHMoCiAJCSAqIHBvaW50ZXIuICBPdGhlcndpc2Ug aXQncyBhbHJlYWR5IE5VTEwgb3IKIAkJICogcG9pbnRpbmcgdG8gdGhlIGV4dGVudC4KIAkJICov Ci0JCWlmICh0aXAtPmlfZC5kaV9uZXh0ZW50cyA8PSBYRlNfSU5MSU5FX0VYVFMpIHsKKwkJbmV4 dGVudHMgPSB0aXAtPmlfZGYuaWZfYnl0ZXMgLyAodWludClzaXplb2YoeGZzX2JtYnRfcmVjX3Qp OworCQlpZiAobmV4dGVudHMgPD0gWEZTX0lOTElORV9FWFRTKSB7CiAJCQl0aWZwLT5pZl91MS5p Zl9leHRlbnRzID0KIAkJCQl0aWZwLT5pZl91Mi5pZl9pbmxpbmVfZXh0OwogCQl9CmRpZmYgLS1n aXQgYS9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMgYi9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMK aW5kZXggNGI5NzM2NTNhMGU4Li4yMTczN2Q0YmFiN2MgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf bG9nX3JlY292ZXIuYworKysgYi9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMKQEAgLTM4MTMsNiAr MzgxMyw3IEBAIHhsb2dfcmVjb3Zlcl9jbGVhcl9hZ2lfYnVja2V0KAogCWFnaS0+YWdpX3VubGlu a2VkW2J1Y2tldF0gPSBjcHVfdG9fYmUzMihOVUxMQUdJTk8pOwogCW9mZnNldCA9IG9mZnNldG9m KHhmc19hZ2lfdCwgYWdpX3VubGlua2VkKSArCiAJCSAoc2l6ZW9mKHhmc19hZ2lub190KSAqIGJ1 Y2tldCk7CisJeGZzX3RyYW5zX2J1Zl9zZXRfdHlwZSh0cCwgYWdpYnAsIFhGU19CTEZUX0FHSV9C VUYpOwogCXhmc190cmFuc19sb2dfYnVmKHRwLCBhZ2licCwgb2Zmc2V0LAogCQkJICAob2Zmc2V0 ICsgc2l6ZW9mKHhmc19hZ2lub190KSAtIDEpKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9jYW4vY29yZS5oIGIvaW5jbHVkZS9saW51eC9jYW4vY29yZS5oCmluZGV4IGEwODc1MDAxYjEz Yy4uZGYwOGE0MWQ1YmU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nhbi9jb3JlLmgKKysr IGIvaW5jbHVkZS9saW51eC9jYW4vY29yZS5oCkBAIC00NSwxMCArNDUsOSBAQCBzdHJ1Y3QgY2Fu X3Byb3RvIHsKIGV4dGVybiBpbnQgIGNhbl9wcm90b19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgY2Fu X3Byb3RvICpjcCk7CiBleHRlcm4gdm9pZCBjYW5fcHJvdG9fdW5yZWdpc3Rlcihjb25zdCBzdHJ1 Y3QgY2FuX3Byb3RvICpjcCk7CiAKLWV4dGVybiBpbnQgIGNhbl9yeF9yZWdpc3RlcihzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2LCBjYW5pZF90IGNhbl9pZCwKLQkJCSAgICBjYW5pZF90IG1hc2ssCi0J CQkgICAgdm9pZCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICosIHZvaWQgKiksCi0JCQkgICAgdm9p ZCAqZGF0YSwgY2hhciAqaWRlbnQpOworaW50IGNhbl9yeF9yZWdpc3RlcihzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LCBjYW5pZF90IGNhbl9pZCwgY2FuaWRfdCBtYXNrLAorCQkgICAgdm9pZCAoKmZ1 bmMpKHN0cnVjdCBza19idWZmICosIHZvaWQgKiksCisJCSAgICB2b2lkICpkYXRhLCBjaGFyICpp ZGVudCwgc3RydWN0IHNvY2sgKnNrKTsKIAogZXh0ZXJuIHZvaWQgY2FuX3J4X3VucmVnaXN0ZXIo c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY2FuaWRfdCBjYW5faWQsCiAJCQkgICAgICBjYW5pZF90 IG1hc2ssCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NwdS5oIGIvaW5jbHVkZS9saW51eC9j cHUuaAppbmRleCAyODUxMTFmOTU0NjQuLjNiNzNlNzYyYjJmNSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9jcHUuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NwdS5oCkBAIC0xMjIsMjIgKzEyMiwx NiBAQCBlbnVtIHsKIAkJeyAubm90aWZpZXJfY2FsbCA9IGZuLCAucHJpb3JpdHkgPSBwcmkgfTsJ XAogCV9fcmVnaXN0ZXJfY3B1X25vdGlmaWVyKCZmbiMjX25iKTsJCQlcCiB9Ci0jZWxzZSAvKiAj aWYgZGVmaW5lZChDT05GSUdfSE9UUExVR19DUFUpIHx8ICFkZWZpbmVkKE1PRFVMRSkgKi8KLSNk ZWZpbmUgY3B1X25vdGlmaWVyKGZuLCBwcmkpCWRvIHsgKHZvaWQpKGZuKTsgfSB3aGlsZSAoMCkK LSNkZWZpbmUgX19jcHVfbm90aWZpZXIoZm4sIHByaSkJZG8geyAodm9pZCkoZm4pOyB9IHdoaWxl ICgwKQotI2VuZGlmIC8qICNlbHNlICNpZiBkZWZpbmVkKENPTkZJR19IT1RQTFVHX0NQVSkgfHwg IWRlZmluZWQoTU9EVUxFKSAqLwogCi0jaWZkZWYgQ09ORklHX0hPVFBMVUdfQ1BVCiBleHRlcm4g aW50IHJlZ2lzdGVyX2NwdV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKIGV4 dGVybiBpbnQgX19yZWdpc3Rlcl9jcHVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpu Yik7CiBleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX2NwdV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKm5iKTsKIGV4dGVybiB2b2lkIF9fdW5yZWdpc3Rlcl9jcHVfbm90aWZpZXIoc3RydWN0 IG5vdGlmaWVyX2Jsb2NrICpuYik7Ci0jZWxzZQogCi0jaWZuZGVmIE1PRFVMRQotZXh0ZXJuIGlu dCByZWdpc3Rlcl9jcHVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7Ci1leHRl cm4gaW50IF9fcmVnaXN0ZXJfY3B1X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIp OwotI2Vsc2UKKyNlbHNlIC8qICNpZiBkZWZpbmVkKENPTkZJR19IT1RQTFVHX0NQVSkgfHwgIWRl ZmluZWQoTU9EVUxFKSAqLworI2RlZmluZSBjcHVfbm90aWZpZXIoZm4sIHByaSkJZG8geyAodm9p ZCkoZm4pOyB9IHdoaWxlICgwKQorI2RlZmluZSBfX2NwdV9ub3RpZmllcihmbiwgcHJpKQlkbyB7 ICh2b2lkKShmbik7IH0gd2hpbGUgKDApCisKIHN0YXRpYyBpbmxpbmUgaW50IHJlZ2lzdGVyX2Nw dV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQogewogCXJldHVybiAwOwpAQCAt MTQ3LDcgKzE0MSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fcmVnaXN0ZXJfY3B1X25vdGlmaWVy KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpCiB7CiAJcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAog c3RhdGljIGlubGluZSB2b2lkIHVucmVnaXN0ZXJfY3B1X25vdGlmaWVyKHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2p1bXBfbGFiZWxfcmF0 ZWxpbWl0LmggYi9pbmNsdWRlL2xpbnV4L2p1bXBfbGFiZWxfcmF0ZWxpbWl0LmgKaW5kZXggMDg5 ZjcwZjgzZTk3Li4yM2RhM2FmNDU5ZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvanVtcF9s YWJlbF9yYXRlbGltaXQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2p1bXBfbGFiZWxfcmF0ZWxpbWl0 LmgKQEAgLTE0LDYgKzE0LDcgQEAgc3RydWN0IHN0YXRpY19rZXlfZGVmZXJyZWQgewogCiAjaWZk ZWYgSEFWRV9KVU1QX0xBQkVMCiBleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfZGVjX2RlZmVy cmVkKHN0cnVjdCBzdGF0aWNfa2V5X2RlZmVycmVkICprZXkpOworZXh0ZXJuIHZvaWQgc3RhdGlj X2tleV9kZWZlcnJlZF9mbHVzaChzdHJ1Y3Qgc3RhdGljX2tleV9kZWZlcnJlZCAqa2V5KTsKIGV4 dGVybiB2b2lkCiBqdW1wX2xhYmVsX3JhdGVfbGltaXQoc3RydWN0IHN0YXRpY19rZXlfZGVmZXJy ZWQgKmtleSwgdW5zaWduZWQgbG9uZyBybCk7CiAKQEAgLTI2LDYgKzI3LDEwIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBzdGF0aWNfa2V5X3Nsb3dfZGVjX2RlZmVycmVkKHN0cnVjdCBzdGF0aWNfa2V5 X2RlZmVycmVkICprZXkpCiAJU1RBVElDX0tFWV9DSEVDS19VU0UoKTsKIAlzdGF0aWNfa2V5X3Ns b3dfZGVjKCZrZXktPmtleSk7CiB9CitzdGF0aWMgaW5saW5lIHZvaWQgc3RhdGljX2tleV9kZWZl cnJlZF9mbHVzaChzdHJ1Y3Qgc3RhdGljX2tleV9kZWZlcnJlZCAqa2V5KQoreworCVNUQVRJQ19L RVlfQ0hFQ0tfVVNFKCk7Cit9CiBzdGF0aWMgaW5saW5lIHZvaWQKIGp1bXBfbGFiZWxfcmF0ZV9s aW1pdChzdHJ1Y3Qgc3RhdGljX2tleV9kZWZlcnJlZCAqa2V5LAogCQl1bnNpZ25lZCBsb25nIHJs KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgv bmV0ZGV2aWNlLmgKaW5kZXggYjM0MDQ3MThmZGExLi5lNTE0NWY4ZTQwMDQgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2Uu aApAQCAtMjAxNiwxNCArMjAxNiwxOSBAQCBzdGF0aWMgaW5saW5lIGludCBza2JfZ3JvX2hlYWRl cl9oYXJkKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBobGVuKQogCXJldHVybiBO QVBJX0dST19DQihza2IpLT5mcmFnMF9sZW4gPCBobGVuOwogfQogCitzdGF0aWMgaW5saW5lIHZv aWQgc2tiX2dyb19mcmFnMF9pbnZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IpCit7CisJTkFQ SV9HUk9fQ0Ioc2tiKS0+ZnJhZzAgPSBOVUxMOworCU5BUElfR1JPX0NCKHNrYiktPmZyYWcwX2xl biA9IDA7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCAqc2tiX2dyb19oZWFkZXJfc2xvdyhzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgaGxlbiwKIAkJCQkJdW5zaWduZWQgaW50IG9m ZnNldCkKIHsKIAlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuKSkKIAkJcmV0dXJuIE5VTEw7 CiAKLQlOQVBJX0dST19DQihza2IpLT5mcmFnMCA9IE5VTEw7Ci0JTkFQSV9HUk9fQ0Ioc2tiKS0+ ZnJhZzBfbGVuID0gMDsKKwlza2JfZ3JvX2ZyYWcwX2ludmFsaWRhdGUoc2tiKTsKIAlyZXR1cm4g c2tiLT5kYXRhICsgb2Zmc2V0OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25mczQu aCBiL2luY2x1ZGUvbGludXgvbmZzNC5oCmluZGV4IGExZTMwNjRhOGQ5OS4uYjE3YzcwMzFkMmJi IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25mczQuaAorKysgYi9pbmNsdWRlL2xpbnV4L25m czQuaApAQCAtMjQzLDcgKzI0Myw3IEBAIGVudW0gbmZzc3RhdDQgewogCiBzdGF0aWMgaW5saW5l IGJvb2wgc2VxaWRfbXV0YXRpbmdfZXJyKHUzMiBlcnIpCiB7Ci0JLyogcmZjIDM1MzAgc2VjdGlv biA4LjEuNTogKi8KKwkvKiBTZWUgUkZDIDc1MzAsIHNlY3Rpb24gOS4xLjcgKi8KIAlzd2l0Y2gg KGVycikgewogCWNhc2UgTkZTNEVSUl9TVEFMRV9DTElFTlRJRDoKIAljYXNlIE5GUzRFUlJfU1RB TEVfU1RBVEVJRDoKQEAgLTI1Miw2ICsyNTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2VxaWRf bXV0YXRpbmdfZXJyKHUzMiBlcnIpCiAJY2FzZSBORlM0RVJSX0JBRFhEUjoKIAljYXNlIE5GUzRF UlJfUkVTT1VSQ0U6CiAJY2FzZSBORlM0RVJSX05PRklMRUhBTkRMRToKKwljYXNlIE5GUzRFUlJf TU9WRUQ6CiAJCXJldHVybiBmYWxzZTsKIAl9OwogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9zdW5ycGMvY2xudC5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvY2xudC5o CmluZGV4IDcwNzM2Yjk4YzcyMS4uYzJhMGVjZjAyZDI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L3N1bnJwYy9jbG50LmgKKysrIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvY2xudC5oCkBAIC0x NzUsNiArMTc1LDcgQEAgdm9pZAkJcnBjX2ZvcmNlX3JlYmluZChzdHJ1Y3QgcnBjX2NsbnQgKik7 CiBzaXplX3QJCXJwY19wZWVyYWRkcihzdHJ1Y3QgcnBjX2NsbnQgKiwgc3RydWN0IHNvY2thZGRy ICosIHNpemVfdCk7CiBjb25zdCBjaGFyCSpycGNfcGVlcmFkZHIyc3RyKHN0cnVjdCBycGNfY2xu dCAqLCBlbnVtIHJwY19kaXNwbGF5X2Zvcm1hdF90KTsKIGludAkJcnBjX2xvY2FsYWRkcihzdHJ1 Y3QgcnBjX2NsbnQgKiwgc3RydWN0IHNvY2thZGRyICosIHNpemVfdCk7Cit2b2lkIHJwY19jbGVh bnVwX2NsaWRzKHZvaWQpOwogCiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogI2VuZGlmIC8qIF9M SU5VWF9TVU5SUENfQ0xOVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RjcC5oIGIv aW5jbHVkZS9saW51eC90Y3AuaAppbmRleCBhMDUxMzIxMDc5OGYuLmQ3ZGEwY2YzMzMyYiAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9saW51eC90Y3AuaAorKysgYi9pbmNsdWRlL2xpbnV4L3RjcC5oCkBA IC01Nyw4ICs1NywxMyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0Y3Bfb3B0bGVuKGNv bnN0IHN0cnVjdCBza19idWZmICpza2IpCiAKIC8qIFRDUCBGYXN0IE9wZW4gQ29va2llIGFzIHN0 b3JlZCBpbiBtZW1vcnkgKi8KIHN0cnVjdCB0Y3BfZmFzdG9wZW5fY29va2llIHsKKwl1bmlvbiB7 CisJCXU4CXZhbFtUQ1BfRkFTVE9QRU5fQ09PS0lFX01BWF07CisjaWYgSVNfRU5BQkxFRChDT05G SUdfSVBWNikKKwkJc3RydWN0IGluNl9hZGRyIGFkZHI7CisjZW5kaWYKKwl9OwogCXM4CWxlbjsK LQl1OAl2YWxbVENQX0ZBU1RPUEVOX0NPT0tJRV9NQVhdOwogfTsKIAogLyogVGhpcyBkZWZpbmVz IGEgc2VsZWN0aXZlIGFja25vd2xlZGdlbWVudCBibG9jay4gKi8KZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCmluZGV4IGU0NmM0Mzc5 NDRmNy4uMDI0YWI5MjgyMmZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCisr KyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKQEAgLTM5NDIsNiArMzk0MiwxNyBAQCB2b2lkIGNm ZzgwMjExX3J4X2Fzc29jX3Jlc3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIHZvaWQgY2ZnODAy MTFfYXNzb2NfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2ZnODAyMTFf YnNzICpic3MpOwogCiAvKioKKyAqIGNmZzgwMjExX2FiYW5kb25fYXNzb2MgLSBub3RpZnkgY2Zn ODAyMTEgb2YgYWJhbmRvbmVkIGFzc29jaWF0aW9uIGF0dGVtcHQKKyAqIEBkZXY6IG5ldHdvcmsg ZGV2aWNlCisgKiBAYnNzOiBUaGUgQlNTIGVudHJ5IHdpdGggd2hpY2ggYXNzb2NpYXRpb24gd2Fz IGFiYW5kb25lZC4KKyAqCisgKiBDYWxsIHRoaXMgd2hlbmV2ZXIgLSBmb3IgcmVhc29ucyByZXBv cnRlZCB0aHJvdWdoIG90aGVyIEFQSSwgbGlrZSBkZWF1dGggUlgsCisgKiBhbiBhc3NvY2lhdGlv biBhdHRlbXB0IHdhcyBhYmFuZG9uZWQuCisgKiBUaGlzIGZ1bmN0aW9uIG1heSBzbGVlcC4gVGhl IGNhbGxlciBtdXN0IGhvbGQgdGhlIGNvcnJlc3BvbmRpbmcgd2RldidzIG11dGV4LgorICovCit2 b2lkIGNmZzgwMjExX2FiYW5kb25fYXNzb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0 IGNmZzgwMjExX2JzcyAqYnNzKTsKKworLyoqCiAgKiBjZmc4MDIxMV90eF9tbG1lX21nbXQgLSBu b3RpZmljYXRpb24gb2YgdHJhbnNtaXR0ZWQgZGVhdXRoL2Rpc2Fzc29jIGZyYW1lCiAgKiBAZGV2 OiBuZXR3b3JrIGRldmljZQogICogQGJ1ZjogODAyLjExIGZyYW1lIChoZWFkZXIgKyBib2R5KQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2lwc29faXB2NC5oIGIvaW5jbHVkZS9uZXQvY2lwc29f aXB2NC5oCmluZGV4IGE2ZmQ5MzlmMjAyZC4uYzhiODg1MmNlOWI4IDEwMDY0NAotLS0gYS9pbmNs dWRlL25ldC9jaXBzb19pcHY0LmgKKysrIGIvaW5jbHVkZS9uZXQvY2lwc29faXB2NC5oCkBAIC0z MDIsNiArMzAyLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNpcHNvX3Y0X3ZhbGlkYXRlKGNvbnN0 IHN0cnVjdCBza19idWZmICpza2IsCiAJfQogCiAJZm9yIChvcHRfaXRlciA9IDY7IG9wdF9pdGVy IDwgb3B0X2xlbjspIHsKKwkJaWYgKG9wdF9pdGVyICsgMSA9PSBvcHRfbGVuKSB7CisJCQllcnJf b2Zmc2V0ID0gb3B0X2l0ZXI7CisJCQlnb3RvIG91dDsKKwkJfQogCQl0YWdfbGVuID0gb3B0W29w dF9pdGVyICsgMV07CiAJCWlmICgodGFnX2xlbiA9PSAwKSB8fCAodGFnX2xlbiA+IChvcHRfbGVu IC0gb3B0X2l0ZXIpKSkgewogCQkJZXJyX29mZnNldCA9IG9wdF9pdGVyICsgMTsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9sb2cuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRl ci9uZl9sb2cuaAppbmRleCA5OWVhYzEyZDA0MGIuLjZlMTFjMzQ2MTM3ZCAxMDA2NDQKLS0tIGEv aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2xvZy5oCisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRl ci9uZl9sb2cuaApAQCAtMTIsNiArMTIsOCBAQAogI2RlZmluZSBORl9MT0dfVUlECQkweDA4CS8q IExvZyBVSUQgb3duaW5nIGxvY2FsIHNvY2tldCAqLwogI2RlZmluZSBORl9MT0dfTUFTSwkJMHgw ZgogCisjZGVmaW5lIE5GX0xPR19QUkVGSVhMRU4JMTI4CisKICNkZWZpbmUgTkZfTE9HX1RZUEVf TE9HCQkweDAxCiAjZGVmaW5lIE5GX0xPR19UWVBFX1VMT0cJMHgwMgogCmRpZmYgLS1naXQgYS9p bmNsdWRlL25ldC9zb2NrLmggYi9pbmNsdWRlL25ldC9zb2NrLmgKaW5kZXggMDdlZGU5NTU5NmJi Li5hZTlkYzZjZTU3MTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NvY2suaAorKysgYi9pbmNs dWRlL25ldC9zb2NrLmgKQEAgLTE0MTEsNyArMTQxMSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IGlub2RlICpTT0NLX0lOT0RFKHN0cnVjdCBzb2NrZXQgKnNvY2tldCkKICAqIEZ1bmN0aW9ucyBm b3IgbWVtb3J5IGFjY291bnRpbmcKICAqLwogaW50IF9fc2tfbWVtX3NjaGVkdWxlKHN0cnVjdCBz b2NrICpzaywgaW50IHNpemUsIGludCBraW5kKTsKLXZvaWQgX19za19tZW1fcmVjbGFpbShzdHJ1 Y3Qgc29jayAqc2spOwordm9pZCBfX3NrX21lbV9yZWNsYWltKHN0cnVjdCBzb2NrICpzaywgaW50 IGFtb3VudCk7CiAKICNkZWZpbmUgU0tfTUVNX1FVQU5UVU0gKChpbnQpUEFHRV9TSVpFKQogI2Rl ZmluZSBTS19NRU1fUVVBTlRVTV9TSElGVCBpbG9nMihTS19NRU1fUVVBTlRVTSkKQEAgLTE0NTIs NyArMTQ1Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza19tZW1fcmVjbGFpbShzdHJ1Y3Qgc29j ayAqc2spCiAJaWYgKCFza19oYXNfYWNjb3VudChzaykpCiAJCXJldHVybjsKIAlpZiAoc2stPnNr X2ZvcndhcmRfYWxsb2MgPj0gU0tfTUVNX1FVQU5UVU0pCi0JCV9fc2tfbWVtX3JlY2xhaW0oc2sp OworCQlfX3NrX21lbV9yZWNsYWltKHNrLCBzay0+c2tfZm9yd2FyZF9hbGxvYyk7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCBza19tZW1fcmVjbGFpbV9wYXJ0aWFsKHN0cnVjdCBzb2NrICpzaykK QEAgLTE0NjAsNyArMTQ2MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza19tZW1fcmVjbGFpbV9w YXJ0aWFsKHN0cnVjdCBzb2NrICpzaykKIAlpZiAoIXNrX2hhc19hY2NvdW50KHNrKSkKIAkJcmV0 dXJuOwogCWlmIChzay0+c2tfZm9yd2FyZF9hbGxvYyA+IFNLX01FTV9RVUFOVFVNKQotCQlfX3Nr X21lbV9yZWNsYWltKHNrKTsKKwkJX19za19tZW1fcmVjbGFpbShzaywgc2stPnNrX2ZvcndhcmRf YWxsb2MgLSAxKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNrX21lbV9jaGFyZ2Uoc3RydWN0 IHNvY2sgKnNrLCBpbnQgc2l6ZSkKQEAgLTE0NzUsNiArMTQ3NSwxNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgc2tfbWVtX3VuY2hhcmdlKHN0cnVjdCBzb2NrICpzaywgaW50IHNpemUpCiAJaWYgKCFz a19oYXNfYWNjb3VudChzaykpCiAJCXJldHVybjsKIAlzay0+c2tfZm9yd2FyZF9hbGxvYyArPSBz aXplOworCisJLyogQXZvaWQgYSBwb3NzaWJsZSBvdmVyZmxvdy4KKwkgKiBUQ1Agc2VuZCBxdWV1 ZXMgY2FuIG1ha2UgdGhpcyBoYXBwZW4sIGlmIHNrX21lbV9yZWNsYWltKCkKKwkgKiBpcyBub3Qg Y2FsbGVkIGFuZCBtb3JlIHRoYW4gMiBHQnl0ZXMgYXJlIHJlbGVhc2VkIGF0IG9uY2UuCisJICoK KwkgKiBJZiB3ZSByZWFjaCAyIE1CeXRlcywgcmVjbGFpbSAxIE1CeXRlcyByaWdodCBub3csIHRo ZXJlIGlzCisJICogbm8gbmVlZCB0byBob2xkIHRoYXQgbXVjaCBmb3J3YXJkIGFsbG9jYXRpb24g YW55d2F5LgorCSAqLworCWlmICh1bmxpa2VseShzay0+c2tfZm9yd2FyZF9hbGxvYyA+PSAxIDw8 IDIxKSkKKwkJX19za19tZW1fcmVjbGFpbShzaywgMSA8PCAyMCk7CiB9CiAKIHN0YXRpYyBpbmxp bmUgdm9pZCBza193bWVtX2ZyZWVfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYg KnNrYikKQEAgLTE1NjksNiArMTU3OSw3IEBAIHN0cnVjdCBza19idWZmICpzb2NrX3dtYWxsb2Mo c3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBsb25nIHNpemUsIGludCBmb3JjZSwKIHZvaWQgc29j a193ZnJlZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIHZvaWQgc2tiX29ycGhhbl9wYXJ0aWFsKHN0 cnVjdCBza19idWZmICpza2IpOwogdm9pZCBzb2NrX3JmcmVlKHN0cnVjdCBza19idWZmICpza2Ip Owordm9pZCBzb2NrX2VmcmVlKHN0cnVjdCBza19idWZmICpza2IpOwogdm9pZCBzb2NrX2VkZW11 eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIAogaW50IHNvY2tfc2V0c29ja29wdChzdHJ1Y3Qgc29j a2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9s aW51eC91c2IvY2g5LmggYi9pbmNsdWRlL3VhcGkvbGludXgvdXNiL2NoOS5oCmluZGV4IGFhMzNm ZDFiMmQ0Zi4uYTgxZjU0NzNhODAxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdXNi L2NoOS5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC91c2IvY2g5LmgKQEAgLTM5OCw2ICszOTgs MTEgQEAgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIHsKICNkZWZpbmUgVVNCX0VORFBP SU5UX1hGRVJfSU5UCQkzCiAjZGVmaW5lIFVTQl9FTkRQT0lOVF9NQVhfQURKVVNUQUJMRQkweDgw CiAKKyNkZWZpbmUgVVNCX0VQX01BWFBfTVVMVF9TSElGVAkxMQorI2RlZmluZSBVU0JfRVBfTUFY UF9NVUxUX01BU0sJKDMgPDwgVVNCX0VQX01BWFBfTVVMVF9TSElGVCkKKyNkZWZpbmUgVVNCX0VQ X01BWFBfTVVMVChtKSBcCisJKCgobSkgJiBVU0JfRVBfTUFYUF9NVUxUX01BU0spID4+IFVTQl9F UF9NQVhQX01VTFRfU0hJRlQpCisKIC8qIFRoZSBVU0IgMy4wIHNwZWMgcmVkZWZpbmVzIGJpdHMg NTo0IG9mIGJtQXR0cmlidXRlcyBhcyBpbnRlcnJ1cHQgZXAgdHlwZS4gKi8KICNkZWZpbmUgVVNC X0VORFBPSU5UX0lOVFJUWVBFCQkweDMwCiAjZGVmaW5lIFVTQl9FTkRQT0lOVF9JTlRSX1BFUklP RElDCSgwIDw8IDQpCkBAIC02MDUsNiArNjEwLDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHVzYl9l bmRwb2ludF9tYXhwKGNvbnN0IHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXBkKQog CXJldHVybiBfX2xlMTZfdG9fY3B1KGVwZC0+d01heFBhY2tldFNpemUpOwogfQogCisvKioKKyAq IHVzYl9lbmRwb2ludF9tYXhwX211bHQgLSBnZXQgZW5kcG9pbnQncyB0cmFuc2FjdGlvbmFsIG9w cG9ydHVuaXRpZXMKKyAqIEBlcGQ6IGVuZHBvaW50IHRvIGJlIGNoZWNrZWQKKyAqCisgKiBSZXR1 cm4gQGVwZCdzIHdNYXhQYWNrZXRTaXplWzEyOjExXSArIDEKKyAqLworc3RhdGljIGlubGluZSBp bnQKK3VzYl9lbmRwb2ludF9tYXhwX211bHQoY29uc3Qgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNj cmlwdG9yICplcGQpCit7CisJaW50IG1heHAgPSBfX2xlMTZfdG9fY3B1KGVwZC0+d01heFBhY2tl dFNpemUpOworCisJcmV0dXJuIFVTQl9FUF9NQVhQX01VTFQobWF4cCkgKyAxOworfQorCiBzdGF0 aWMgaW5saW5lIGludCB1c2JfZW5kcG9pbnRfaW50ZXJydXB0X3R5cGUoCiAJCWNvbnN0IHN0cnVj dCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXBkKQogewpkaWZmIC0tZ2l0IGEvaXBjL3NobS5j IGIvaXBjL3NobS5jCmluZGV4IDQ3MWY3MzBlODY0MC4uZjhiYjdiM2ZkZDQ5IDEwMDY0NAotLS0g YS9pcGMvc2htLmMKKysrIGIvaXBjL3NobS5jCkBAIC0xMDQ0LDggKzEwNDQsOCBAQCBvdXRfdW5s b2NrMToKICAqICJyYWRkciIgdGhpbmcgcG9pbnRzIHRvIGtlcm5lbCBzcGFjZSwgYW5kIHRoZXJl IGhhcyB0byBiZSBhIHdyYXBwZXIgYXJvdW5kCiAgKiB0aGlzLgogICovCi1sb25nIGRvX3NobWF0 KGludCBzaG1pZCwgY2hhciBfX3VzZXIgKnNobWFkZHIsIGludCBzaG1mbGcsIHVsb25nICpyYWRk ciwKLQkgICAgICB1bnNpZ25lZCBsb25nIHNobWxiYSkKK2xvbmcgZG9fc2htYXQoaW50IHNobWlk LCBjaGFyIF9fdXNlciAqc2htYWRkciwgaW50IHNobWZsZywKKwkgICAgICB1bG9uZyAqcmFkZHIs IHVuc2lnbmVkIGxvbmcgc2htbGJhKQogewogCXN0cnVjdCBzaG1pZF9rZXJuZWwgKnNocDsKIAl1 bnNpZ25lZCBsb25nIGFkZHI7CkBAIC0xMDY2LDggKzEwNjYsMTMgQEAgbG9uZyBkb19zaG1hdChp bnQgc2htaWQsIGNoYXIgX191c2VyICpzaG1hZGRyLCBpbnQgc2htZmxnLCB1bG9uZyAqcmFkZHIs CiAJCWdvdG8gb3V0OwogCWVsc2UgaWYgKChhZGRyID0gKHVsb25nKXNobWFkZHIpKSB7CiAJCWlm IChhZGRyICYgKHNobWxiYSAtIDEpKSB7Ci0JCQlpZiAoc2htZmxnICYgU0hNX1JORCkKLQkJCQlh ZGRyICY9IH4oc2htbGJhIC0gMSk7CSAgIC8qIHJvdW5kIGRvd24gKi8KKwkJCS8qCisJCQkgKiBS b3VuZCBkb3duIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHNobWxiYS4KKwkJCSAqIEZvciBz YW5lIGRvX21tYXBfcGdvZmYoKSBwYXJhbWV0ZXJzLCBhdm9pZAorCQkJICogcm91bmQgZG93bnMg dGhhdCB0cmlnZ2VyIG5pbC1wYWdlIGFuZCBNQVBfRklYRUQuCisJCQkgKi8KKwkJCWlmICgoc2ht ZmxnICYgU0hNX1JORCkgJiYgYWRkciA+PSBzaG1sYmEpCisJCQkJYWRkciAmPSB+KHNobWxiYSAt IDEpOwogCQkJZWxzZQogI2lmbmRlZiBfX0FSQ0hfRk9SQ0VfU0hNTEJBCiAJCQkJaWYgKGFkZHIg JiB+UEFHRV9NQVNLKQpkaWZmIC0tZ2l0IGEva2VybmVsL2NwdS5jIGIva2VybmVsL2NwdS5jCmlu ZGV4IDI0N2Q4ZGQxN2EyYy4uZTE2MGI5YjA2NWU2IDEwMDY0NAotLS0gYS9rZXJuZWwvY3B1LmMK KysrIGIva2VybmVsL2NwdS5jCkBAIC0yMTAsMTIgKzIxMCw2IEBAIHN0YXRpYyBpbnQgY3B1X25v dGlmeSh1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdikKIAlyZXR1cm4gX19jcHVfbm90aWZ5KHZh bCwgdiwgLTEsIE5VTEwpOwogfQogCi0jaWZkZWYgQ09ORklHX0hPVFBMVUdfQ1BVCi0KLXN0YXRp YyB2b2lkIGNwdV9ub3RpZnlfbm9mYWlsKHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2KQotewot CUJVR19PTihjcHVfbm90aWZ5KHZhbCwgdikpOwotfQogRVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9j cHVfbm90aWZpZXIpOwogRVhQT1JUX1NZTUJPTChfX3JlZ2lzdGVyX2NwdV9ub3RpZmllcik7CiAK QEAgLTIzMyw2ICsyMjcsMTMgQEAgdm9pZCBfX3JlZiBfX3VucmVnaXN0ZXJfY3B1X25vdGlmaWVy KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpCiB9CiBFWFBPUlRfU1lNQk9MKF9fdW5yZWdpc3Rl cl9jcHVfbm90aWZpZXIpOwogCisjaWZkZWYgQ09ORklHX0hPVFBMVUdfQ1BVCisKK3N0YXRpYyB2 b2lkIGNwdV9ub3RpZnlfbm9mYWlsKHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2KQoreworCUJV R19PTihjcHVfbm90aWZ5KHZhbCwgdikpOworfQorCiAvKioKICAqIGNsZWFyX3Rhc2tzX21tX2Nw dW1hc2sgLSBTYWZlbHkgY2xlYXIgdGFza3MnIG1tX2NwdW1hc2sgZm9yIGEgQ1BVCiAgKiBAY3B1 OiBhIENQVSBpZApkaWZmIC0tZ2l0IGEva2VybmVsL2V2ZW50cy9jb3JlLmMgYi9rZXJuZWwvZXZl bnRzL2NvcmUuYwppbmRleCA3NDEzZGRkMWRlNTcuLjJmYWFlZDNiYTYxYiAxMDA2NDQKLS0tIGEv a2VybmVsL2V2ZW50cy9jb3JlLmMKKysrIGIva2VybmVsL2V2ZW50cy9jb3JlLmMKQEAgLTU0NzIs NiArNTQ3MiwyNyBAQCBzdGF0aWMgdm9pZCBwZXJmX2V2ZW50X21tYXBfZXZlbnQoc3RydWN0IHBl cmZfbW1hcF9ldmVudCAqbW1hcF9ldmVudCkKIAljaGFyICpidWYgPSBOVUxMOwogCWNoYXIgKm5h bWU7CiAKKwlpZiAodm1hLT52bV9mbGFncyAmIFZNX1JFQUQpCisJCXByb3QgfD0gUFJPVF9SRUFE OworCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpCisJCXByb3QgfD0gUFJPVF9XUklURTsK KwlpZiAodm1hLT52bV9mbGFncyAmIFZNX0VYRUMpCisJCXByb3QgfD0gUFJPVF9FWEVDOworCisJ aWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9NQVlTSEFSRSkKKwkJZmxhZ3MgPSBNQVBfU0hBUkVEOwor CWVsc2UKKwkJZmxhZ3MgPSBNQVBfUFJJVkFURTsKKworCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1f REVOWVdSSVRFKQorCQlmbGFncyB8PSBNQVBfREVOWVdSSVRFOworCWlmICh2bWEtPnZtX2ZsYWdz ICYgVk1fTUFZRVhFQykKKwkJZmxhZ3MgfD0gTUFQX0VYRUNVVEFCTEU7CisJaWYgKHZtYS0+dm1f ZmxhZ3MgJiBWTV9MT0NLRUQpCisJCWZsYWdzIHw9IE1BUF9MT0NLRUQ7CisJaWYgKHZtYS0+dm1f ZmxhZ3MgJiBWTV9IVUdFVExCKQorCQlmbGFncyB8PSBNQVBfSFVHRVRMQjsKKwogCWlmIChmaWxl KSB7CiAJCXN0cnVjdCBpbm9kZSAqaW5vZGU7CiAJCWRldl90IGRldjsKQEAgLTU0OTgsMjcgKzU1 MTksNiBAQCBzdGF0aWMgdm9pZCBwZXJmX2V2ZW50X21tYXBfZXZlbnQoc3RydWN0IHBlcmZfbW1h cF9ldmVudCAqbW1hcF9ldmVudCkKIAkJbWFqID0gTUFKT1IoZGV2KTsKIAkJbWluID0gTUlOT1Io ZGV2KTsKIAotCQlpZiAodm1hLT52bV9mbGFncyAmIFZNX1JFQUQpCi0JCQlwcm90IHw9IFBST1Rf UkVBRDsKLQkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkKLQkJCXByb3QgfD0gUFJPVF9X UklURTsKLQkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9FWEVDKQotCQkJcHJvdCB8PSBQUk9UX0VY RUM7Ci0KLQkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9NQVlTSEFSRSkKLQkJCWZsYWdzID0gTUFQ X1NIQVJFRDsKLQkJZWxzZQotCQkJZmxhZ3MgPSBNQVBfUFJJVkFURTsKLQotCQlpZiAodm1hLT52 bV9mbGFncyAmIFZNX0RFTllXUklURSkKLQkJCWZsYWdzIHw9IE1BUF9ERU5ZV1JJVEU7Ci0JCWlm ICh2bWEtPnZtX2ZsYWdzICYgVk1fTUFZRVhFQykKLQkJCWZsYWdzIHw9IE1BUF9FWEVDVVRBQkxF OwotCQlpZiAodm1hLT52bV9mbGFncyAmIFZNX0xPQ0tFRCkKLQkJCWZsYWdzIHw9IE1BUF9MT0NL RUQ7Ci0JCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fSFVHRVRMQikKLQkJCWZsYWdzIHw9IE1BUF9I VUdFVExCOwotCiAJCWdvdG8gZ290X25hbWU7CiAJfSBlbHNlIHsKIAkJbmFtZSA9IChjaGFyICop YXJjaF92bWFfbmFtZSh2bWEpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2Z1dGV4LmMgYi9rZXJuZWwv ZnV0ZXguYwppbmRleCBhZjY3ZDNlYWYyMzIuLjFkMWNjYjBlODdhNyAxMDA2NDQKLS0tIGEva2Vy bmVsL2Z1dGV4LmMKKysrIGIva2VybmVsL2Z1dGV4LmMKQEAgLTMwODUsNCArMzA4NSw0IEBAIHN0 YXRpYyBpbnQgX19pbml0IGZ1dGV4X2luaXQodm9pZCkKIAogCXJldHVybiAwOwogfQotX19pbml0 Y2FsbChmdXRleF9pbml0KTsKK2NvcmVfaW5pdGNhbGwoZnV0ZXhfaW5pdCk7CmRpZmYgLS1naXQg YS9rZXJuZWwvanVtcF9sYWJlbC5jIGIva2VybmVsL2p1bXBfbGFiZWwuYwppbmRleCA5MDE5ZjE1 ZGVhYjIuLjdkNGQwYTkxN2QxMyAxMDA2NDQKLS0tIGEva2VybmVsL2p1bXBfbGFiZWwuYworKysg Yi9rZXJuZWwvanVtcF9sYWJlbC5jCkBAIC0xMTYsNiArMTE2LDEzIEBAIHZvaWQgc3RhdGljX2tl eV9zbG93X2RlY19kZWZlcnJlZChzdHJ1Y3Qgc3RhdGljX2tleV9kZWZlcnJlZCAqa2V5KQogfQog RVhQT1JUX1NZTUJPTF9HUEwoc3RhdGljX2tleV9zbG93X2RlY19kZWZlcnJlZCk7CiAKK3ZvaWQg c3RhdGljX2tleV9kZWZlcnJlZF9mbHVzaChzdHJ1Y3Qgc3RhdGljX2tleV9kZWZlcnJlZCAqa2V5 KQoreworCVNUQVRJQ19LRVlfQ0hFQ0tfVVNFKCk7CisJZmx1c2hfZGVsYXllZF93b3JrKCZrZXkt PndvcmspOworfQorRVhQT1JUX1NZTUJPTF9HUEwoc3RhdGljX2tleV9kZWZlcnJlZF9mbHVzaCk7 CisKIHZvaWQganVtcF9sYWJlbF9yYXRlX2xpbWl0KHN0cnVjdCBzdGF0aWNfa2V5X2RlZmVycmVk ICprZXksCiAJCXVuc2lnbmVkIGxvbmcgcmwpCiB7CmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRr L3ByaW50ay5jIGIva2VybmVsL3ByaW50ay9wcmludGsuYwppbmRleCA2MjdiZjI1MDQ4YzYuLmU0 YzY5MDVkYjI5OCAxMDA2NDQKLS0tIGEva2VybmVsL3ByaW50ay9wcmludGsuYworKysgYi9rZXJu ZWwvcHJpbnRrL3ByaW50ay5jCkBAIC0xMzU2LDcgKzEzNTYsNyBAQCBzdGF0aWMgdm9pZCBjYWxs X2NvbnNvbGVfZHJpdmVycyhpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKnRleHQsIHNpemVfdCBsZW4p CiB7CiAJc3RydWN0IGNvbnNvbGUgKmNvbjsKIAotCXRyYWNlX2NvbnNvbGUodGV4dCwgbGVuKTsK Kwl0cmFjZV9jb25zb2xlX3JjdWlkbGUodGV4dCwgbGVuKTsKIAogCWlmIChsZXZlbCA+PSBjb25z b2xlX2xvZ2xldmVsICYmICFpZ25vcmVfbG9nbGV2ZWwpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBh L2tlcm5lbC9zY2hlZC9jcHV0aW1lLmMgYi9rZXJuZWwvc2NoZWQvY3B1dGltZS5jCmluZGV4IDM0 OWFkYTlhN2ZhNS4uZWQwZDliOGI2NjZhIDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWQvY3B1dGlt ZS5jCisrKyBiL2tlcm5lbC9zY2hlZC9jcHV0aW1lLmMKQEAgLTc1Myw2ICs3NTMsOSBAQCBjcHV0 aW1lX3QgdGFza19ndGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCiAJdW5zaWduZWQgaW50IHNl cTsKIAljcHV0aW1lX3QgZ3RpbWU7CiAKKwlpZiAoIWNvbnRleHRfdHJhY2tpbmdfaXNfZW5hYmxl ZCgpKQorCQlyZXR1cm4gdC0+Z3RpbWU7CisKIAlkbyB7CiAJCXNlcSA9IHJlYWRfc2VxYmVnaW4o JnQtPnZ0aW1lX3NlcWxvY2spOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvc3lzY3RsLmMgYi9rZXJu ZWwvc3lzY3RsLmMKaW5kZXggZjkyOTM2OTRiNTJhLi4zYTMxNzI1NTliMjIgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9zeXNjdGwuYworKysgYi9rZXJuZWwvc3lzY3RsLmMKQEAgLTIzMTcsNiArMjMxNyw3 IEBAIHN0YXRpYyBpbnQgX19kb19wcm9jX2RvdWxvbmd2ZWNfbWlubWF4KHZvaWQgKmRhdGEsIHN0 cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQKIAkJCQlicmVhazsKIAkJCWlmIChuZWcpCiAJCQkJ Y29udGludWU7CisJCQl2YWwgPSBjb252bXVsICogdmFsIC8gY29udmRpdjsKIAkJCWlmICgobWlu ICYmIHZhbCA8ICptaW4pIHx8IChtYXggJiYgdmFsID4gKm1heCkpCiAJCQkJY29udGludWU7CiAJ CQkqaSA9IHZhbDsKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZV9mdW5jdGlvbnNfZ3Jh cGguYyBiL2tlcm5lbC90cmFjZS90cmFjZV9mdW5jdGlvbnNfZ3JhcGguYwppbmRleCA0ZGUzZTU3 ZjcyM2MuLjMxOWNmMTRjOTJkMyAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlX2Z1bmN0 aW9uc19ncmFwaC5jCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZV9mdW5jdGlvbnNfZ3JhcGguYwpA QCAtODQxLDYgKzg0MSwxMCBAQCBwcmludF9ncmFwaF9lbnRyeV9sZWFmKHN0cnVjdCB0cmFjZV9p dGVyYXRvciAqaXRlciwKIAogCQljcHVfZGF0YSA9IHBlcl9jcHVfcHRyKGRhdGEtPmNwdV9kYXRh LCBjcHUpOwogCisJCS8qIElmIGEgZ3JhcGggdHJhY2VyIGlnbm9yZWQgc2V0X2dyYXBoX25vdHJh Y2UgKi8KKwkJaWYgKGNhbGwtPmRlcHRoIDwgLTEpCisJCQljYWxsLT5kZXB0aCArPSBGVFJBQ0Vf Tk9UUkFDRV9ERVBUSDsKKwogCQkvKgogCQkgKiBDb21tZW50cyBkaXNwbGF5IGF0ICsgMSB0byBk ZXB0aC4gU2luY2UKIAkJICogdGhpcyBpcyBhIGxlYWYgZnVuY3Rpb24sIGtlZXAgdGhlIGNvbW1l bnRzCkBAIC04NDksNyArODUzLDggQEAgcHJpbnRfZ3JhcGhfZW50cnlfbGVhZihzdHJ1Y3QgdHJh Y2VfaXRlcmF0b3IgKml0ZXIsCiAJCWNwdV9kYXRhLT5kZXB0aCA9IGNhbGwtPmRlcHRoIC0gMTsK IAogCQkvKiBObyBuZWVkIHRvIGtlZXAgdGhpcyBmdW5jdGlvbiBhcm91bmQgZm9yIHRoaXMgZGVw dGggKi8KLQkJaWYgKGNhbGwtPmRlcHRoIDwgRlRSQUNFX1JFVEZVTkNfREVQVEgpCisJCWlmIChj YWxsLT5kZXB0aCA8IEZUUkFDRV9SRVRGVU5DX0RFUFRIICYmCisJCSAgICAhV0FSTl9PTl9PTkNF KGNhbGwtPmRlcHRoIDwgMCkpCiAJCQljcHVfZGF0YS0+ZW50ZXJfZnVuY3NbY2FsbC0+ZGVwdGhd ID0gMDsKIAl9CiAKQEAgLTg4NiwxMSArODkxLDE2IEBAIHByaW50X2dyYXBoX2VudHJ5X25lc3Rl ZChzdHJ1Y3QgdHJhY2VfaXRlcmF0b3IgKml0ZXIsCiAJCXN0cnVjdCBmZ3JhcGhfY3B1X2RhdGEg KmNwdV9kYXRhOwogCQlpbnQgY3B1ID0gaXRlci0+Y3B1OwogCisJCS8qIElmIGEgZ3JhcGggdHJh Y2VyIGlnbm9yZWQgc2V0X2dyYXBoX25vdHJhY2UgKi8KKwkJaWYgKGNhbGwtPmRlcHRoIDwgLTEp CisJCQljYWxsLT5kZXB0aCArPSBGVFJBQ0VfTk9UUkFDRV9ERVBUSDsKKwogCQljcHVfZGF0YSA9 IHBlcl9jcHVfcHRyKGRhdGEtPmNwdV9kYXRhLCBjcHUpOwogCQljcHVfZGF0YS0+ZGVwdGggPSBj YWxsLT5kZXB0aDsKIAogCQkvKiBTYXZlIHRoaXMgZnVuY3Rpb24gcG9pbnRlciB0byBzZWUgaWYg dGhlIGV4aXQgbWF0Y2hlcyAqLwotCQlpZiAoY2FsbC0+ZGVwdGggPCBGVFJBQ0VfUkVURlVOQ19E RVBUSCkKKwkJaWYgKGNhbGwtPmRlcHRoIDwgRlRSQUNFX1JFVEZVTkNfREVQVEggJiYKKwkJICAg ICFXQVJOX09OX09OQ0UoY2FsbC0+ZGVwdGggPCAwKSkKIAkJCWNwdV9kYXRhLT5lbnRlcl9mdW5j c1tjYWxsLT5kZXB0aF0gPSBjYWxsLT5mdW5jOwogCX0KIApAQCAtMTE0Myw3ICsxMTUzLDggQEAg cHJpbnRfZ3JhcGhfcmV0dXJuKHN0cnVjdCBmdHJhY2VfZ3JhcGhfcmV0ICp0cmFjZSwgc3RydWN0 IHRyYWNlX3NlcSAqcywKIAkJICovCiAJCWNwdV9kYXRhLT5kZXB0aCA9IHRyYWNlLT5kZXB0aCAt IDE7CiAKLQkJaWYgKHRyYWNlLT5kZXB0aCA8IEZUUkFDRV9SRVRGVU5DX0RFUFRIKSB7CisJCWlm ICh0cmFjZS0+ZGVwdGggPCBGVFJBQ0VfUkVURlVOQ19ERVBUSCAmJgorCQkgICAgIVdBUk5fT05f T05DRSh0cmFjZS0+ZGVwdGggPCAwKSkgewogCQkJaWYgKGNwdV9kYXRhLT5lbnRlcl9mdW5jc1t0 cmFjZS0+ZGVwdGhdICE9IHRyYWNlLT5mdW5jKQogCQkJCWZ1bmNfbWF0Y2ggPSAwOwogCQkJY3B1 X2RhdGEtPmVudGVyX2Z1bmNzW3RyYWNlLT5kZXB0aF0gPSAwOwpkaWZmIC0tZ2l0IGEvbGliL3Zz cHJpbnRmLmMgYi9saWIvdnNwcmludGYuYwppbmRleCA2ZmUyYzg0ZWIwNTUuLmNlMTJhODhhOGZk MSAxMDA2NDQKLS0tIGEvbGliL3ZzcHJpbnRmLmMKKysrIGIvbGliL3ZzcHJpbnRmLmMKQEAgLTE2 NTcsNyArMTY1Nyw3IEBAIGludCB2c25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29u c3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCiAKIAkvKiBSZWplY3Qgb3V0LW9mLXJhbmdlIHZh bHVlcyBlYXJseS4gIExhcmdlIHBvc2l0aXZlIHNpemVzIGFyZQogCSAgIHVzZWQgZm9yIHVua25v d24gYnVmZmVyIHNpemVzLiAqLwotCWlmIChXQVJOX09OX09OQ0UoKGludCkgc2l6ZSA8IDApKQor CWlmIChXQVJOX09OX09OQ0Uoc2l6ZSA+IElOVF9NQVgpKQogCQlyZXR1cm4gMDsKIAogCXN0ciA9 IGJ1ZjsKZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuYwppbmRleCBhNTAy NGQ3MWZjYzMuLjMxYjViMjVjM2QyZCAxMDA2NDQKLS0tIGEvbW0vZmlsZW1hcC5jCisrKyBiL21t L2ZpbGVtYXAuYwpAQCAtMTQ4Miw2ICsxNDgyLDExIEBAIHN0YXRpYyBzc2l6ZV90IGRvX2dlbmVy aWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3QgKnBwb3MsCiAKIAkJY29uZF9y ZXNjaGVkKCk7CiBmaW5kX3BhZ2U6CisJCWlmIChmYXRhbF9zaWduYWxfcGVuZGluZyhjdXJyZW50 KSkgeworCQkJZXJyb3IgPSAtRUlOVFI7CisJCQlnb3RvIG91dDsKKwkJfQorCiAJCXBhZ2UgPSBm aW5kX2dldF9wYWdlKG1hcHBpbmcsIGluZGV4KTsKIAkJaWYgKCFwYWdlKSB7CiAJCQlwYWdlX2Nh Y2hlX3N5bmNfcmVhZGFoZWFkKG1hcHBpbmcsCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5j IGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCBkYzUyOGE1MWNjYmYuLmFiYzA0YTgwM2FhOCAxMDA2 NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYworKysgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0xMTky LDYgKzExOTIsMTggQEAgb3V0X3VubG9jazoKIAlyZXR1cm4gcmV0OwogfQogCisvKgorICogRk9M TF9GT1JDRSBjYW4gd3JpdGUgdG8gZXZlbiB1bndyaXRhYmxlIHBtZCdzLCBidXQgb25seQorICog YWZ0ZXIgd2UndmUgZ29uZSB0aHJvdWdoIGEgQ09XIGN5Y2xlIGFuZCB0aGV5IGFyZSBkaXJ0eS4K KyAqLworc3RhdGljIGlubGluZSBib29sIGNhbl9mb2xsb3dfd3JpdGVfcG1kKHBtZF90IHBtZCwg c3RydWN0IHBhZ2UgKnBhZ2UsCisJCQkJCXVuc2lnbmVkIGludCBmbGFncykKK3sKKwlyZXR1cm4g cG1kX3dyaXRlKHBtZCkgfHwKKwkJKChmbGFncyAmIEZPTExfRk9SQ0UpICYmIChmbGFncyAmIEZP TExfQ09XKSAmJgorCQkgcGFnZSAmJiBQYWdlQW5vbihwYWdlKSk7Cit9CisKIHN0cnVjdCBwYWdl ICpmb2xsb3dfdHJhbnNfaHVnZV9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCQkJ ICAgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJCSAgIHBtZF90ICpwbWQsCkBAIC0xMjAyLDkgKzEy MTQsNiBAQCBzdHJ1Y3QgcGFnZSAqZm9sbG93X3RyYW5zX2h1Z2VfcG1kKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLAogCiAJYXNzZXJ0X3NwaW5fbG9ja2VkKHBtZF9sb2NrcHRyKG1tLCBwbWQp KTsKIAotCWlmIChmbGFncyAmIEZPTExfV1JJVEUgJiYgIXBtZF93cml0ZSgqcG1kKSkKLQkJZ290 byBvdXQ7Ci0KIAkvKiBBdm9pZCBkdW1waW5nIGh1Z2UgemVybyBwYWdlICovCiAJaWYgKChmbGFn cyAmIEZPTExfRFVNUCkgJiYgaXNfaHVnZV96ZXJvX3BtZCgqcG1kKSkKIAkJcmV0dXJuIEVSUl9Q VFIoLUVGQVVMVCk7CkBAIC0xMjE1LDYgKzEyMjQsMTAgQEAgc3RydWN0IHBhZ2UgKmZvbGxvd190 cmFuc19odWdlX3BtZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAogCXBhZ2UgPSBwbWRf cGFnZSgqcG1kKTsKIAlWTV9CVUdfT05fUEFHRSghUGFnZUhlYWQocGFnZSksIHBhZ2UpOworCisJ aWYgKGZsYWdzICYgRk9MTF9XUklURSAmJiAhY2FuX2ZvbGxvd193cml0ZV9wbWQoKnBtZCwgcGFn ZSwgZmxhZ3MpKQorCQlnb3RvIG91dDsKKwogCWlmIChmbGFncyAmIEZPTExfVE9VQ0gpIHsKIAkJ cG1kX3QgX3BtZDsKIAkJLyoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIu YwppbmRleCBmY2E2YzZjOTFkNzYuLjQ2N2QwNGI2Mjk0OCAxMDA2NDQKLS0tIGEvbW0vaHVnZXRs Yi5jCisrKyBiL21tL2h1Z2V0bGIuYwpAQCAtMTMwMSwyMyArMTMwMSwzMiBAQCBmcmVlOgogfQog CiAvKgotICogV2hlbiByZWxlYXNpbmcgYSBodWdldGxiIHBvb2wgcmVzZXJ2YXRpb24sIGFueSBz dXJwbHVzIHBhZ2VzIHRoYXQgd2VyZQotICogYWxsb2NhdGVkIHRvIHNhdGlzZnkgdGhlIHJlc2Vy dmF0aW9uIG11c3QgYmUgZXhwbGljaXRseSBmcmVlZCBpZiB0aGV5IHdlcmUKLSAqIG5ldmVyIHVz ZWQuCi0gKiBDYWxsZWQgd2l0aCBodWdldGxiX2xvY2sgaGVsZC4KKyAqIFRoaXMgcm91dGluZSBo YXMgdHdvIG1haW4gcHVycG9zZXM6CisgKiAxKSBEZWNyZW1lbnQgdGhlIHJlc2VydmF0aW9uIGNv dW50IChyZXN2X2h1Z2VfcGFnZXMpIGJ5IHRoZSB2YWx1ZSBwYXNzZWQKKyAqICAgIGluIHVudXNl ZF9yZXN2X3BhZ2VzLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgcHJpb3IgYWRqdXN0bWVudHMg bWFkZQorICogICAgdG8gdGhlIGFzc29jaWF0ZWQgcmVzZXJ2YXRpb24gbWFwLgorICogMikgRnJl ZSBhbnkgdW51c2VkIHN1cnBsdXMgcGFnZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGFsbG9jYXRlZCB0 byBzYXRpc2Z5CisgKiAgICB0aGUgcmVzZXJ2YXRpb24uICBBcyBtYW55IGFzIHVudXNlZF9yZXN2 X3BhZ2VzIG1heSBiZSBmcmVlZC4KKyAqCisgKiBDYWxsZWQgd2l0aCBodWdldGxiX2xvY2sgaGVs ZC4gIEhvd2V2ZXIsIHRoZSBsb2NrIGNvdWxkIGJlIGRyb3BwZWQgKGFuZAorICogcmVhY3F1aXJl ZCkgZHVyaW5nIGNhbGxzIHRvIGNvbmRfcmVzY2hlZF9sb2NrLiAgV2hlbmV2ZXIgZHJvcHBpbmcg dGhlIGxvY2ssCisgKiB3ZSBtdXN0IG1ha2Ugc3VyZSBub2JvZHkgZWxzZSBjYW4gY2xhaW0gcGFn ZXMgd2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mCisgKiBmcmVlaW5nLiAgRG8gdGhpcyBieSBlbnN1 cmluZyByZXN2X2h1Z2VfcGFnZSBhbHdheXMgaXMgZ3JlYXRlciB0aGFuIHRoZQorICogbnVtYmVy IG9mIGh1Z2UgcGFnZXMgd2UgcGxhbiB0byBmcmVlIHdoZW4gZHJvcHBpbmcgdGhlIGxvY2suCiAg Ki8KIHN0YXRpYyB2b2lkIHJldHVybl91bnVzZWRfc3VycGx1c19wYWdlcyhzdHJ1Y3QgaHN0YXRl ICpoLAogCQkJCQl1bnNpZ25lZCBsb25nIHVudXNlZF9yZXN2X3BhZ2VzKQogewogCXVuc2lnbmVk IGxvbmcgbnJfcGFnZXM7CiAKLQkvKiBVbmNvbW1pdCB0aGUgcmVzZXJ2YXRpb24gKi8KLQloLT5y ZXN2X2h1Z2VfcGFnZXMgLT0gdW51c2VkX3Jlc3ZfcGFnZXM7Ci0KIAkvKiBDYW5ub3QgcmV0dXJu IGdpZ2FudGljIHBhZ2VzIGN1cnJlbnRseSAqLwogCWlmIChoc3RhdGVfaXNfZ2lnYW50aWMoaCkp Ci0JCXJldHVybjsKKwkJZ290byBvdXQ7CiAKKwkvKgorCSAqIFBhcnQgKG9yIGV2ZW4gYWxsKSBv ZiB0aGUgcmVzZXJ2YXRpb24gY291bGQgaGF2ZSBiZWVuIGJhY2tlZAorCSAqIGJ5IHByZS1hbGxv Y2F0ZWQgcGFnZXMuIE9ubHkgZnJlZSBzdXJwbHVzIHBhZ2VzLgorCSAqLwogCW5yX3BhZ2VzID0g bWluKHVudXNlZF9yZXN2X3BhZ2VzLCBoLT5zdXJwbHVzX2h1Z2VfcGFnZXMpOwogCiAJLyoKQEAg LTEzMjcsMTIgKzEzMzYsMjIgQEAgc3RhdGljIHZvaWQgcmV0dXJuX3VudXNlZF9zdXJwbHVzX3Bh Z2VzKHN0cnVjdCBoc3RhdGUgKmgsCiAJICogd2hlbiB0aGUgbm9kZXMgd2l0aCBzdXJwbHVzIHBh Z2VzIGhhdmUgbm8gZnJlZSBwYWdlcy4KIAkgKiBmcmVlX3Bvb2xfaHVnZV9wYWdlKCkgd2lsbCBi YWxhbmNlIHRoZSB0aGUgZnJlZWQgcGFnZXMgYWNyb3NzIHRoZQogCSAqIG9uLWxpbmUgbm9kZXMg d2l0aCBtZW1vcnkgYW5kIHdpbGwgaGFuZGxlIHRoZSBoc3RhdGUgYWNjb3VudGluZy4KKwkgKgor CSAqIE5vdGUgdGhhdCB3ZSBkZWNyZW1lbnQgcmVzdl9odWdlX3BhZ2VzIGFzIHdlIGZyZWUgdGhl IHBhZ2VzLiAgSWYKKwkgKiB3ZSBkcm9wIHRoZSBsb2NrLCByZXN2X2h1Z2VfcGFnZXMgd2lsbCBz dGlsbCBiZSBzdWZmaWNpZW50bHkgbGFyZ2UKKwkgKiB0byBjb3ZlciBzdWJzZXF1ZW50IHBhZ2Vz IHdlIG1heSBmcmVlLgogCSAqLwogCXdoaWxlIChucl9wYWdlcy0tKSB7CisJCWgtPnJlc3ZfaHVn ZV9wYWdlcy0tOworCQl1bnVzZWRfcmVzdl9wYWdlcy0tOwogCQlpZiAoIWZyZWVfcG9vbF9odWdl X3BhZ2UoaCwgJm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgMSkpCi0JCQlicmVhazsKKwkJCWdvdG8g b3V0OwogCQljb25kX3Jlc2NoZWRfbG9jaygmaHVnZXRsYl9sb2NrKTsKIAl9CisKK291dDoKKwkv KiBGdWxseSB1bmNvbW1pdCB0aGUgcmVzZXJ2YXRpb24gKi8KKwloLT5yZXN2X2h1Z2VfcGFnZXMg LT0gdW51c2VkX3Jlc3ZfcGFnZXM7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2Jy X2lvY3RsLmMgYi9uZXQvYnJpZGdlL2JyX2lvY3RsLmMKaW5kZXggOGQ0MjNiYzY0OWI5Li5mODc2 ZjcwN2ZkOWUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfaW9jdGwuYworKysgYi9uZXQvYnJp ZGdlL2JyX2lvY3RsLmMKQEAgLTIxLDE4ICsyMSwxOSBAQAogI2luY2x1ZGUgPGFzbS91YWNjZXNz Lmg+CiAjaW5jbHVkZSAiYnJfcHJpdmF0ZS5oIgogCi0vKiBjYWxsZWQgd2l0aCBSVE5MICovCiBz dGF0aWMgaW50IGdldF9icmlkZ2VfaWZpbmRpY2VzKHN0cnVjdCBuZXQgKm5ldCwgaW50ICppbmRp Y2VzLCBpbnQgbnVtKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJaW50IGkgPSAwOwog Ci0JZm9yX2VhY2hfbmV0ZGV2KG5ldCwgZGV2KSB7CisJcmN1X3JlYWRfbG9jaygpOworCWZvcl9l YWNoX25ldGRldl9yY3UobmV0LCBkZXYpIHsKIAkJaWYgKGkgPj0gbnVtKQogCQkJYnJlYWs7CiAJ CWlmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfRUJSSURHRSkKIAkJCWluZGljZXNbaSsrXSA9IGRl di0+aWZpbmRleDsKIAl9CisJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAlyZXR1cm4gaTsKIH0KZGlm ZiAtLWdpdCBhL25ldC9jYW4vYWZfY2FuLmMgYi9uZXQvY2FuL2FmX2Nhbi5jCmluZGV4IGQ2MDMw ZDY5NDlkZi4uZWU2ZWVlN2E4YjQyIDEwMDY0NAotLS0gYS9uZXQvY2FuL2FmX2Nhbi5jCisrKyBi L25ldC9jYW4vYWZfY2FuLmMKQEAgLTQ0Niw2ICs0NDYsNyBAQCBzdGF0aWMgc3RydWN0IGhsaXN0 X2hlYWQgKmZpbmRfcmN2X2xpc3QoY2FuaWRfdCAqY2FuX2lkLCBjYW5pZF90ICptYXNrLAogICog QGZ1bmM6IGNhbGxiYWNrIGZ1bmN0aW9uIG9uIGZpbHRlciBtYXRjaAogICogQGRhdGE6IHJldHVy bmVkIHBhcmFtZXRlciBmb3IgY2FsbGJhY2sgZnVuY3Rpb24KICAqIEBpZGVudDogc3RyaW5nIGZv ciBjYWxsaW5nIG1vZHVsZSBpZGVudGlmaWNhdGlvbgorICogQHNrOiBzb2NrZXQgcG9pbnRlciAo bWlnaHQgYmUgTlVMTCkKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqICBJbnZva2VzIHRoZSBjYWxs YmFjayBmdW5jdGlvbiB3aXRoIHRoZSByZWNlaXZlZCBza19idWZmIGFuZCB0aGUgZ2l2ZW4KQEAg LTQ2OSw3ICs0NzAsNyBAQCBzdGF0aWMgc3RydWN0IGhsaXN0X2hlYWQgKmZpbmRfcmN2X2xpc3Qo Y2FuaWRfdCAqY2FuX2lkLCBjYW5pZF90ICptYXNrLAogICovCiBpbnQgY2FuX3J4X3JlZ2lzdGVy KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNhbmlkX3QgY2FuX2lkLCBjYW5pZF90IG1hc2ssCiAJ CSAgICB2b2lkICgqZnVuYykoc3RydWN0IHNrX2J1ZmYgKiwgdm9pZCAqKSwgdm9pZCAqZGF0YSwK LQkJICAgIGNoYXIgKmlkZW50KQorCQkgICAgY2hhciAqaWRlbnQsIHN0cnVjdCBzb2NrICpzaykK IHsKIAlzdHJ1Y3QgcmVjZWl2ZXIgKnI7CiAJc3RydWN0IGhsaXN0X2hlYWQgKnJsOwpAQCAtNDk3 LDYgKzQ5OCw3IEBAIGludCBjYW5fcnhfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg Y2FuaWRfdCBjYW5faWQsIGNhbmlkX3QgbWFzaywKIAkJci0+ZnVuYyAgICA9IGZ1bmM7CiAJCXIt PmRhdGEgICAgPSBkYXRhOwogCQlyLT5pZGVudCAgID0gaWRlbnQ7CisJCXItPnNrICAgICAgPSBz azsKIAogCQlobGlzdF9hZGRfaGVhZF9yY3UoJnItPmxpc3QsIHJsKTsKIAkJZC0+ZW50cmllcysr OwpAQCAtNTIxLDggKzUyMywxMSBAQCBFWFBPUlRfU1lNQk9MKGNhbl9yeF9yZWdpc3Rlcik7CiBz dGF0aWMgdm9pZCBjYW5fcnhfZGVsZXRlX3JlY2VpdmVyKHN0cnVjdCByY3VfaGVhZCAqcnApCiB7 CiAJc3RydWN0IHJlY2VpdmVyICpyID0gY29udGFpbmVyX29mKHJwLCBzdHJ1Y3QgcmVjZWl2ZXIs IHJjdSk7CisJc3RydWN0IHNvY2sgKnNrID0gci0+c2s7CiAKIAlrbWVtX2NhY2hlX2ZyZWUocmN2 X2NhY2hlLCByKTsKKwlpZiAoc2spCisJCXNvY2tfcHV0KHNrKTsKIH0KIAogLyoqCkBAIC01OTcs OCArNjAyLDExIEBAIHZvaWQgY2FuX3J4X3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRl diwgY2FuaWRfdCBjYW5faWQsIGNhbmlkX3QgbWFzaywKIAlzcGluX3VubG9jaygmY2FuX3Jjdmxp c3RzX2xvY2spOwogCiAJLyogc2NoZWR1bGUgdGhlIHJlY2VpdmVyIGl0ZW0gZm9yIGRlbGV0aW9u ICovCi0JaWYgKHIpCisJaWYgKHIpIHsKKwkJaWYgKHItPnNrKQorCQkJc29ja19ob2xkKHItPnNr KTsKIAkJY2FsbF9yY3UoJnItPnJjdSwgY2FuX3J4X2RlbGV0ZV9yZWNlaXZlcik7CisJfQogfQog RVhQT1JUX1NZTUJPTChjYW5fcnhfdW5yZWdpc3Rlcik7CiAKZGlmZiAtLWdpdCBhL25ldC9jYW4v YWZfY2FuLmggYi9uZXQvY2FuL2FmX2Nhbi5oCmluZGV4IGZjYTBmZTlmYzQ1YS4uYjg2ZjUxMjll ODM4IDEwMDY0NAotLS0gYS9uZXQvY2FuL2FmX2Nhbi5oCisrKyBiL25ldC9jYW4vYWZfY2FuLmgK QEAgLTUwLDEzICs1MCwxNCBAQAogCiBzdHJ1Y3QgcmVjZWl2ZXIgewogCXN0cnVjdCBobGlzdF9u b2RlIGxpc3Q7Ci0Jc3RydWN0IHJjdV9oZWFkIHJjdTsKIAljYW5pZF90IGNhbl9pZDsKIAljYW5p ZF90IG1hc2s7CiAJdW5zaWduZWQgbG9uZyBtYXRjaGVzOwogCXZvaWQgKCpmdW5jKShzdHJ1Y3Qg c2tfYnVmZiAqLCB2b2lkICopOwogCXZvaWQgKmRhdGE7CiAJY2hhciAqaWRlbnQ7CisJc3RydWN0 IHNvY2sgKnNrOworCXN0cnVjdCByY3VfaGVhZCByY3U7CiB9OwogCiAjZGVmaW5lIENBTl9TRkZf UkNWX0FSUkFZX1NaICgxIDw8IENBTl9TRkZfSURfQklUUykKZGlmZiAtLWdpdCBhL25ldC9jYW4v YmNtLmMgYi9uZXQvY2FuL2JjbS5jCmluZGV4IGI5NjQzNGQwOTE3Ny4uNDY4ZGZhMTJlZWJlIDEw MDY0NAotLS0gYS9uZXQvY2FuL2JjbS5jCisrKyBiL25ldC9jYW4vYmNtLmMKQEAgLTcwNiwxNCAr NzA2LDIzIEBAIHN0YXRpYyBzdHJ1Y3QgYmNtX29wICpiY21fZmluZF9vcChzdHJ1Y3QgbGlzdF9o ZWFkICpvcHMsIGNhbmlkX3QgY2FuX2lkLAogCiBzdGF0aWMgdm9pZCBiY21fcmVtb3ZlX29wKHN0 cnVjdCBiY21fb3AgKm9wKQogewotCWhydGltZXJfY2FuY2VsKCZvcC0+dGltZXIpOwotCWhydGlt ZXJfY2FuY2VsKCZvcC0+dGhydGltZXIpOwotCi0JaWYgKG9wLT50c2tsZXQuZnVuYykKLQkJdGFz a2xldF9raWxsKCZvcC0+dHNrbGV0KTsKKwlpZiAob3AtPnRza2xldC5mdW5jKSB7CisJCXdoaWxl ICh0ZXN0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmb3AtPnRza2xldC5zdGF0ZSkgfHwKKwkJ ICAgICAgIHRlc3RfYml0KFRBU0tMRVRfU1RBVEVfUlVOLCAmb3AtPnRza2xldC5zdGF0ZSkgfHwK KwkJICAgICAgIGhydGltZXJfYWN0aXZlKCZvcC0+dGltZXIpKSB7CisJCQlocnRpbWVyX2NhbmNl bCgmb3AtPnRpbWVyKTsKKwkJCXRhc2tsZXRfa2lsbCgmb3AtPnRza2xldCk7CisJCX0KKwl9CiAK LQlpZiAob3AtPnRocnRza2xldC5mdW5jKQotCQl0YXNrbGV0X2tpbGwoJm9wLT50aHJ0c2tsZXQp OworCWlmIChvcC0+dGhydHNrbGV0LmZ1bmMpIHsKKwkJd2hpbGUgKHRlc3RfYml0KFRBU0tMRVRf U1RBVEVfU0NIRUQsICZvcC0+dGhydHNrbGV0LnN0YXRlKSB8fAorCQkgICAgICAgdGVzdF9iaXQo VEFTS0xFVF9TVEFURV9SVU4sICZvcC0+dGhydHNrbGV0LnN0YXRlKSB8fAorCQkgICAgICAgaHJ0 aW1lcl9hY3RpdmUoJm9wLT50aHJ0aW1lcikpIHsKKwkJCWhydGltZXJfY2FuY2VsKCZvcC0+dGhy dGltZXIpOworCQkJdGFza2xldF9raWxsKCZvcC0+dGhydHNrbGV0KTsKKwkJfQorCX0KIAogCWlm ICgob3AtPmZyYW1lcykgJiYgKG9wLT5mcmFtZXMgIT0gJm9wLT5zZnJhbWUpKQogCQlrZnJlZShv cC0+ZnJhbWVzKTsKQEAgLTExNjksNyArMTE3OCw3IEBAIHN0YXRpYyBpbnQgYmNtX3J4X3NldHVw KHN0cnVjdCBiY21fbXNnX2hlYWQgKm1zZ19oZWFkLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkJ ZXJyID0gY2FuX3J4X3JlZ2lzdGVyKGRldiwgb3AtPmNhbl9pZCwKIAkJCQkJCSAgICAgIFJFR01B U0sob3AtPmNhbl9pZCksCiAJCQkJCQkgICAgICBiY21fcnhfaGFuZGxlciwgb3AsCi0JCQkJCQkg ICAgICAiYmNtIik7CisJCQkJCQkgICAgICAiYmNtIiwgc2spOwogCiAJCQkJb3AtPnJ4X3JlZ19k ZXYgPSBkZXY7CiAJCQkJZGV2X3B1dChkZXYpOwpAQCAtMTE3OCw3ICsxMTg3LDcgQEAgc3RhdGlj IGludCBiY21fcnhfc2V0dXAoc3RydWN0IGJjbV9tc2dfaGVhZCAqbXNnX2hlYWQsIHN0cnVjdCBt c2doZHIgKm1zZywKIAkJfSBlbHNlCiAJCQllcnIgPSBjYW5fcnhfcmVnaXN0ZXIoTlVMTCwgb3At PmNhbl9pZCwKIAkJCQkJICAgICAgUkVHTUFTSyhvcC0+Y2FuX2lkKSwKLQkJCQkJICAgICAgYmNt X3J4X2hhbmRsZXIsIG9wLCAiYmNtIik7CisJCQkJCSAgICAgIGJjbV9yeF9oYW5kbGVyLCBvcCwg ImJjbSIsIHNrKTsKIAkJaWYgKGVycikgewogCQkJLyogdGhpcyBiY20gcnggb3AgaXMgYnJva2Vu IC0+IHJlbW92ZSBpdCAqLwogCQkJbGlzdF9kZWwoJm9wLT5saXN0KTsKZGlmZiAtLWdpdCBhL25l dC9jYW4vZ3cuYyBiL25ldC9jYW4vZ3cuYwppbmRleCAwNTBhMjExMGQ0M2YuLmQ0OTIxNTgyZDNi ZCAxMDA2NDQKLS0tIGEvbmV0L2Nhbi9ndy5jCisrKyBiL25ldC9jYW4vZ3cuYwpAQCAtNDQxLDcg KzQ0MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNnd19yZWdpc3Rlcl9maWx0ZXIoc3RydWN0IGNn d19qb2IgKmd3aikKIHsKIAlyZXR1cm4gY2FuX3J4X3JlZ2lzdGVyKGd3ai0+c3JjLmRldiwgZ3dq LT5jY2d3LmZpbHRlci5jYW5faWQsCiAJCQkgICAgICAgZ3dqLT5jY2d3LmZpbHRlci5jYW5fbWFz aywgY2FuX2Nhbl9nd19yY3YsCi0JCQkgICAgICAgZ3dqLCAiZ3ciKTsKKwkJCSAgICAgICBnd2os ICJndyIsIE5VTEwpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2d3X3VucmVnaXN0ZXJfZmls dGVyKHN0cnVjdCBjZ3dfam9iICpnd2opCmRpZmYgLS1naXQgYS9uZXQvY2FuL3Jhdy5jIGIvbmV0 L2Nhbi9yYXcuYwppbmRleCA5ZjVlZTNhNmI2NjYuLjU5ZTRjYWI5Y2Q3NiAxMDA2NDQKLS0tIGEv bmV0L2Nhbi9yYXcuYworKysgYi9uZXQvY2FuL3Jhdy5jCkBAIC0xNjQsNyArMTY0LDcgQEAgc3Rh dGljIGludCByYXdfZW5hYmxlX2ZpbHRlcnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0 IHNvY2sgKnNrLAogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAJCWVyciA9IGNhbl9y eF9yZWdpc3RlcihkZXYsIGZpbHRlcltpXS5jYW5faWQsCiAJCQkJICAgICAgZmlsdGVyW2ldLmNh bl9tYXNrLAotCQkJCSAgICAgIHJhd19yY3YsIHNrLCAicmF3Iik7CisJCQkJICAgICAgcmF3X3Jj diwgc2ssICJyYXciLCBzayk7CiAJCWlmIChlcnIpIHsKIAkJCS8qIGNsZWFuIHVwIHN1Y2Nlc3Nm dWxseSByZWdpc3RlcmVkIGZpbHRlcnMgKi8KIAkJCXdoaWxlICgtLWkgPj0gMCkKQEAgLTE4NSw3 ICsxODUsNyBAQCBzdGF0aWMgaW50IHJhd19lbmFibGVfZXJyZmlsdGVyKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYsIHN0cnVjdCBzb2NrICpzaywKIAogCWlmIChlcnJfbWFzaykKIAkJZXJyID0gY2Fu X3J4X3JlZ2lzdGVyKGRldiwgMCwgZXJyX21hc2sgfCBDQU5fRVJSX0ZMQUcsCi0JCQkJICAgICAg cmF3X3Jjdiwgc2ssICJyYXciKTsKKwkJCQkgICAgICByYXdfcmN2LCBzaywgInJhdyIsIHNrKTsK IAogCXJldHVybiBlcnI7CiB9CmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXIuYyBiL25l dC9jZXBoL21lc3Nlbmdlci5jCmluZGV4IGYyZWExYTA5MzgwMC4uYTEyNDRhMjI4ODExIDEwMDY0 NAotLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXIuYworKysgYi9uZXQvY2VwaC9tZXNzZW5nZXIuYwpA QCAtMTk3Nyw2ICsxOTc3LDE5IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19jb25uZWN0KHN0cnVjdCBj ZXBoX2Nvbm5lY3Rpb24gKmNvbikKIAogCWRvdXQoInByb2Nlc3NfY29ubmVjdCBvbiAlcCB0YWcg JWRcbiIsIGNvbiwgKGludCljb24tPmluX3RhZyk7CiAKKwlpZiAoY29uLT5hdXRoX3JlcGx5X2J1 ZikgeworCQkvKgorCQkgKiBBbnkgY29ubmVjdGlvbiB0aGF0IGRlZmluZXMgLT5nZXRfYXV0aG9y aXplcigpCisJCSAqIHNob3VsZCBhbHNvIGRlZmluZSAtPnZlcmlmeV9hdXRob3JpemVyX3JlcGx5 KCkuCisJCSAqIFNlZSBnZXRfY29ubmVjdF9hdXRob3JpemVyKCkuCisJCSAqLworCQlyZXQgPSBj b24tPm9wcy0+dmVyaWZ5X2F1dGhvcml6ZXJfcmVwbHkoY29uLCAwKTsKKwkJaWYgKHJldCA8IDAp IHsKKwkJCWNvbi0+ZXJyb3JfbXNnID0gImJhZCBhdXRob3JpemUgcmVwbHkiOworCQkJcmV0dXJu IHJldDsKKwkJfQorCX0KKwogCXN3aXRjaCAoY29uLT5pbl9yZXBseS50YWcpIHsKIAljYXNlIENF UEhfTVNHUl9UQUdfRkVBVFVSRVM6CiAJCXByX2VycigiJXMlbGxkICVzIGZlYXR1cmUgc2V0IG1p c21hdGNoLCIKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmMKaW5k ZXggNzViZTdlMjI2MjY4Li5jMTQyNThhMzg0MWUgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5j CisrKyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xNjAwLDI0ICsxNjAwLDE5IEBAIEVYUE9SVF9TWU1C T0woY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKTsKIAogc3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5 IG5ldHN0YW1wX25lZWRlZCBfX3JlYWRfbW9zdGx5OwogI2lmZGVmIEhBVkVfSlVNUF9MQUJFTAot LyogV2UgYXJlIG5vdCBhbGxvd2VkIHRvIGNhbGwgc3RhdGljX2tleV9zbG93X2RlYygpIGZyb20g aXJxIGNvbnRleHQKLSAqIElmIG5ldF9kaXNhYmxlX3RpbWVzdGFtcCgpIGlzIGNhbGxlZCBmcm9t IGlycSBjb250ZXh0LCBkZWZlciB0aGUKLSAqIHN0YXRpY19rZXlfc2xvd19kZWMoKSBjYWxscy4K LSAqLwogc3RhdGljIGF0b21pY190IG5ldHN0YW1wX25lZWRlZF9kZWZlcnJlZDsKLSNlbmRpZgot Ci12b2lkIG5ldF9lbmFibGVfdGltZXN0YW1wKHZvaWQpCitzdGF0aWMgdm9pZCBuZXRzdGFtcF9j bGVhcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7Ci0jaWZkZWYgSEFWRV9KVU1QX0xBQkVM CiAJaW50IGRlZmVycmVkID0gYXRvbWljX3hjaGcoJm5ldHN0YW1wX25lZWRlZF9kZWZlcnJlZCwg MCk7CiAKLQlpZiAoZGVmZXJyZWQpIHsKLQkJd2hpbGUgKC0tZGVmZXJyZWQpCi0JCQlzdGF0aWNf a2V5X3Nsb3dfZGVjKCZuZXRzdGFtcF9uZWVkZWQpOwotCQlyZXR1cm47Ci0JfQorCXdoaWxlIChk ZWZlcnJlZC0tKQorCQlzdGF0aWNfa2V5X3Nsb3dfZGVjKCZuZXRzdGFtcF9uZWVkZWQpOworfQor c3RhdGljIERFQ0xBUkVfV09SSyhuZXRzdGFtcF93b3JrLCBuZXRzdGFtcF9jbGVhcik7CiAjZW5k aWYKKwordm9pZCBuZXRfZW5hYmxlX3RpbWVzdGFtcCh2b2lkKQorewogCXN0YXRpY19rZXlfc2xv d19pbmMoJm5ldHN0YW1wX25lZWRlZCk7CiB9CiBFWFBPUlRfU1lNQk9MKG5ldF9lbmFibGVfdGlt ZXN0YW1wKTsKQEAgLTE2MjUsMTIgKzE2MjAsMTIgQEAgRVhQT1JUX1NZTUJPTChuZXRfZW5hYmxl X3RpbWVzdGFtcCk7CiB2b2lkIG5ldF9kaXNhYmxlX3RpbWVzdGFtcCh2b2lkKQogewogI2lmZGVm IEhBVkVfSlVNUF9MQUJFTAotCWlmIChpbl9pbnRlcnJ1cHQoKSkgewotCQlhdG9taWNfaW5jKCZu ZXRzdGFtcF9uZWVkZWRfZGVmZXJyZWQpOwotCQlyZXR1cm47Ci0JfQotI2VuZGlmCisJLyogbmV0 X2Rpc2FibGVfdGltZXN0YW1wKCkgY2FuIGJlIGNhbGxlZCBmcm9tIG5vbiBwcm9jZXNzIGNvbnRl eHQgKi8KKwlhdG9taWNfaW5jKCZuZXRzdGFtcF9uZWVkZWRfZGVmZXJyZWQpOworCXNjaGVkdWxl X3dvcmsoJm5ldHN0YW1wX3dvcmspOworI2Vsc2UKIAlzdGF0aWNfa2V5X3Nsb3dfZGVjKCZuZXRz dGFtcF9uZWVkZWQpOworI2VuZGlmCiB9CiBFWFBPUlRfU1lNQk9MKG5ldF9kaXNhYmxlX3RpbWVz dGFtcCk7CiAKQEAgLTIyODcsNyArMjI4Miw3IEBAIGludCBza2JfY2hlY2tzdW1faGVscChzdHJ1 Y3Qgc2tfYnVmZiAqc2tiKQogCQkJZ290byBvdXQ7CiAJfQogCi0JKihfX3N1bTE2ICopKHNrYi0+ ZGF0YSArIG9mZnNldCkgPSBjc3VtX2ZvbGQoY3N1bSk7CisJKihfX3N1bTE2ICopKHNrYi0+ZGF0 YSArIG9mZnNldCkgPSBjc3VtX2ZvbGQoY3N1bSkgPzogQ1NVTV9NQU5HTEVEXzA7CiBvdXRfc2V0 X3N1bW1lZDoKIAlza2ItPmlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7CiBvdXQ6CkBAIC0yNTU1 LDkgKzI1NTAsOSBAQCBzdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgaGFybW9uaXplX2ZlYXR1cmVz KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKHNrYi0+aXBfc3VtbWVkICE9IENIRUNLU1VNX05P TkUgJiYKIAkgICAgIWNhbl9jaGVja3N1bV9wcm90b2NvbChmZWF0dXJlcywgdHlwZSkpIHsKIAkJ ZmVhdHVyZXMgJj0gfk5FVElGX0ZfQUxMX0NTVU07Ci0JfSBlbHNlIGlmIChpbGxlZ2FsX2hpZ2hk bWEoc2tiLT5kZXYsIHNrYikpIHsKLQkJZmVhdHVyZXMgJj0gfk5FVElGX0ZfU0c7CiAJfQorCWlm IChpbGxlZ2FsX2hpZ2hkbWEoc2tiLT5kZXYsIHNrYikpCisJCWZlYXR1cmVzICY9IH5ORVRJRl9G X1NHOwogCiAJcmV0dXJuIGZlYXR1cmVzOwogfQpAQCAtMzkyMCw3ICszOTE1LDkgQEAgc3RhdGlj IHZvaWQgc2tiX2dyb19yZXNldF9vZmZzZXQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkgICAgcGlu Zm8tPm5yX2ZyYWdzICYmCiAJICAgICFQYWdlSGlnaE1lbShza2JfZnJhZ19wYWdlKGZyYWcwKSkp IHsKIAkJTkFQSV9HUk9fQ0Ioc2tiKS0+ZnJhZzAgPSBza2JfZnJhZ19hZGRyZXNzKGZyYWcwKTsK LQkJTkFQSV9HUk9fQ0Ioc2tiKS0+ZnJhZzBfbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnMCk7CisJ CU5BUElfR1JPX0NCKHNrYiktPmZyYWcwX2xlbiA9IG1pbl90KHVuc2lnbmVkIGludCwKKwkJCQkJ CSAgICBza2JfZnJhZ19zaXplKGZyYWcwKSwKKwkJCQkJCSAgICBza2ItPmVuZCAtIHNrYi0+dGFp bCk7CiAJfQogfQogCkBAIC00ODE1LDYgKzQ4MTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbmV0 ZGV2X2FkamFjZW50X2lzX25laWdoX2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogc3Rh dGljIGludCBfX25ldGRldl9hZGphY2VudF9kZXZfaW5zZXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCiAJCQkJCXN0cnVjdCBuZXRfZGV2aWNlICphZGpfZGV2LAorCQkJCQl1MTYgcmVmX25yLAog CQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpkZXZfbGlzdCwKIAkJCQkJdm9pZCAqcHJpdmF0ZSwgYm9v bCBtYXN0ZXIpCiB7CkBAIC00ODI0LDcgKzQ4MjIsNyBAQCBzdGF0aWMgaW50IF9fbmV0ZGV2X2Fk amFjZW50X2Rldl9pbnNlcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlhZGogPSBfX25ldGRl dl9maW5kX2FkaihkZXYsIGFkal9kZXYsIGRldl9saXN0KTsKIAogCWlmIChhZGopIHsKLQkJYWRq LT5yZWZfbnIrKzsKKwkJYWRqLT5yZWZfbnIgKz0gcmVmX25yOwogCQlyZXR1cm4gMDsKIAl9CiAK QEAgLTQ4MzQsNyArNDgzMiw3IEBAIHN0YXRpYyBpbnQgX19uZXRkZXZfYWRqYWNlbnRfZGV2X2lu c2VydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJYWRqLT5kZXYgPSBhZGpfZGV2OwogCWFk ai0+bWFzdGVyID0gbWFzdGVyOwotCWFkai0+cmVmX25yID0gMTsKKwlhZGotPnJlZl9uciA9IHJl Zl9ucjsKIAlhZGotPnByaXZhdGUgPSBwcml2YXRlOwogCWRldl9ob2xkKGFkal9kZXYpOwogCkBA IC00ODczLDYgKzQ4NzEsNyBAQCBmcmVlX2FkajoKIAogc3RhdGljIHZvaWQgX19uZXRkZXZfYWRq YWNlbnRfZGV2X3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCQkgc3RydWN0IG5l dF9kZXZpY2UgKmFkal9kZXYsCisJCQkJCSB1MTYgcmVmX25yLAogCQkJCQkgc3RydWN0IGxpc3Rf aGVhZCAqZGV2X2xpc3QpCiB7CiAJc3RydWN0IG5ldGRldl9hZGphY2VudCAqYWRqOwpAQCAtNDg4 NSwxMCArNDg4NCwxMCBAQCBzdGF0aWMgdm9pZCBfX25ldGRldl9hZGphY2VudF9kZXZfcmVtb3Zl KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCUJVRygpOwogCX0KIAotCWlmIChhZGotPnJlZl9u ciA+IDEpIHsKLQkJcHJfZGVidWcoIiVzIHRvICVzIHJlZl9uci0tID0gJWRcbiIsIGRldi0+bmFt ZSwgYWRqX2Rldi0+bmFtZSwKLQkJCSBhZGotPnJlZl9uci0xKTsKLQkJYWRqLT5yZWZfbnItLTsK KwlpZiAoYWRqLT5yZWZfbnIgPiByZWZfbnIpIHsKKwkJcHJfZGVidWcoIiVzIHRvICVzIHJlZl9u ci0lZCA9ICVkXG4iLCBkZXYtPm5hbWUsIGFkal9kZXYtPm5hbWUsCisJCQkgcmVmX25yLCBhZGot PnJlZl9uci1yZWZfbnIpOworCQlhZGotPnJlZl9uciAtPSByZWZfbnI7CiAJCXJldHVybjsKIAl9 CiAKQEAgLTQ5MDcsMjEgKzQ5MDYsMjIgQEAgc3RhdGljIHZvaWQgX19uZXRkZXZfYWRqYWNlbnRf ZGV2X3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiBzdGF0aWMgaW50IF9fbmV0ZGV2 X2FkamFjZW50X2Rldl9saW5rX2xpc3RzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJCSAg ICBzdHJ1Y3QgbmV0X2RldmljZSAqdXBwZXJfZGV2LAorCQkJCQkgICAgdTE2IHJlZl9uciwKIAkJ CQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKnVwX2xpc3QsCiAJCQkJCSAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpkb3duX2xpc3QsCiAJCQkJCSAgICB2b2lkICpwcml2YXRlLCBib29sIG1hc3RlcikKIHsK IAlpbnQgcmV0OwogCi0JcmV0ID0gX19uZXRkZXZfYWRqYWNlbnRfZGV2X2luc2VydChkZXYsIHVw cGVyX2RldiwgdXBfbGlzdCwgcHJpdmF0ZSwKLQkJCQkJICAgbWFzdGVyKTsKKwlyZXQgPSBfX25l dGRldl9hZGphY2VudF9kZXZfaW5zZXJ0KGRldiwgdXBwZXJfZGV2LCByZWZfbnIsIHVwX2xpc3Qs CisJCQkJCSAgIHByaXZhdGUsIG1hc3Rlcik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CXJldCA9IF9fbmV0ZGV2X2FkamFjZW50X2Rldl9pbnNlcnQodXBwZXJfZGV2LCBkZXYsIGRvd25f bGlzdCwgcHJpdmF0ZSwKLQkJCQkJICAgZmFsc2UpOworCXJldCA9IF9fbmV0ZGV2X2FkamFjZW50 X2Rldl9pbnNlcnQodXBwZXJfZGV2LCBkZXYsIHJlZl9uciwgZG93bl9saXN0LAorCQkJCQkgICBw cml2YXRlLCBmYWxzZSk7CiAJaWYgKHJldCkgewotCQlfX25ldGRldl9hZGphY2VudF9kZXZfcmVt b3ZlKGRldiwgdXBwZXJfZGV2LCB1cF9saXN0KTsKKwkJX19uZXRkZXZfYWRqYWNlbnRfZGV2X3Jl bW92ZShkZXYsIHVwcGVyX2RldiwgcmVmX25yLCB1cF9saXN0KTsKIAkJcmV0dXJuIHJldDsKIAl9 CiAKQEAgLTQ5MjksOSArNDkyOSwxMCBAQCBzdGF0aWMgaW50IF9fbmV0ZGV2X2FkamFjZW50X2Rl dl9saW5rX2xpc3RzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiB9CiAKIHN0YXRpYyBpbnQgX19u ZXRkZXZfYWRqYWNlbnRfZGV2X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKLQkJCQkgICAg ICBzdHJ1Y3QgbmV0X2RldmljZSAqdXBwZXJfZGV2KQorCQkJCSAgICAgIHN0cnVjdCBuZXRfZGV2 aWNlICp1cHBlcl9kZXYsCisJCQkJICAgICAgdTE2IHJlZl9ucikKIHsKLQlyZXR1cm4gX19uZXRk ZXZfYWRqYWNlbnRfZGV2X2xpbmtfbGlzdHMoZGV2LCB1cHBlcl9kZXYsCisJcmV0dXJuIF9fbmV0 ZGV2X2FkamFjZW50X2Rldl9saW5rX2xpc3RzKGRldiwgdXBwZXJfZGV2LCByZWZfbnIsCiAJCQkJ CQkmZGV2LT5hbGxfYWRqX2xpc3QudXBwZXIsCiAJCQkJCQkmdXBwZXJfZGV2LT5hbGxfYWRqX2xp c3QubG93ZXIsCiAJCQkJCQlOVUxMLCBmYWxzZSk7CkBAIC00OTM5LDE3ICs0OTQwLDE5IEBAIHN0 YXRpYyBpbnQgX19uZXRkZXZfYWRqYWNlbnRfZGV2X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRl diwKIAogc3RhdGljIHZvaWQgX19uZXRkZXZfYWRqYWNlbnRfZGV2X3VubGlua19saXN0cyhzdHJ1 Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCQkgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnVwcGVy X2RldiwKKwkJCQkJICAgICAgIHUxNiByZWZfbnIsCiAJCQkJCSAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICp1cF9saXN0LAogCQkJCQkgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZG93bl9saXN0KQog ewotCV9fbmV0ZGV2X2FkamFjZW50X2Rldl9yZW1vdmUoZGV2LCB1cHBlcl9kZXYsIHVwX2xpc3Qp OwotCV9fbmV0ZGV2X2FkamFjZW50X2Rldl9yZW1vdmUodXBwZXJfZGV2LCBkZXYsIGRvd25fbGlz dCk7CisJX19uZXRkZXZfYWRqYWNlbnRfZGV2X3JlbW92ZShkZXYsIHVwcGVyX2RldiwgcmVmX25y LCB1cF9saXN0KTsKKwlfX25ldGRldl9hZGphY2VudF9kZXZfcmVtb3ZlKHVwcGVyX2RldiwgZGV2 LCByZWZfbnIsIGRvd25fbGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9fbmV0ZGV2X2FkamFjZW50 X2Rldl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKLQkJCQkJIHN0cnVjdCBuZXRfZGV2 aWNlICp1cHBlcl9kZXYpCisJCQkJCSBzdHJ1Y3QgbmV0X2RldmljZSAqdXBwZXJfZGV2LAorCQkJ CQkgdTE2IHJlZl9ucikKIHsKLQlfX25ldGRldl9hZGphY2VudF9kZXZfdW5saW5rX2xpc3RzKGRl diwgdXBwZXJfZGV2LAorCV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmtfbGlzdHMoZGV2LCB1 cHBlcl9kZXYsIHJlZl9uciwKIAkJCQkJICAgJmRldi0+YWxsX2Fkal9saXN0LnVwcGVyLAogCQkJ CQkgICAmdXBwZXJfZGV2LT5hbGxfYWRqX2xpc3QubG93ZXIpOwogfQpAQCAtNDk1OCwxNyArNDk2 MSwxNyBAQCBzdGF0aWMgaW50IF9fbmV0ZGV2X2FkamFjZW50X2Rldl9saW5rX25laWdoYm91cihz dHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCQkJc3RydWN0IG5ldF9kZXZpY2UgKnVwcGVyX2Rl diwKIAkJCQkJCXZvaWQgKnByaXZhdGUsIGJvb2wgbWFzdGVyKQogewotCWludCByZXQgPSBfX25l dGRldl9hZGphY2VudF9kZXZfbGluayhkZXYsIHVwcGVyX2Rldik7CisJaW50IHJldCA9IF9fbmV0 ZGV2X2FkamFjZW50X2Rldl9saW5rKGRldiwgdXBwZXJfZGV2LCAxKTsKIAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlyZXQgPSBfX25ldGRldl9hZGphY2VudF9kZXZfbGlua19saXN0cyhk ZXYsIHVwcGVyX2RldiwKKwlyZXQgPSBfX25ldGRldl9hZGphY2VudF9kZXZfbGlua19saXN0cyhk ZXYsIHVwcGVyX2RldiwgMSwKIAkJCQkJICAgICAgICZkZXYtPmFkal9saXN0LnVwcGVyLAogCQkJ CQkgICAgICAgJnVwcGVyX2Rldi0+YWRqX2xpc3QubG93ZXIsCiAJCQkJCSAgICAgICBwcml2YXRl LCBtYXN0ZXIpOwogCWlmIChyZXQpIHsKLQkJX19uZXRkZXZfYWRqYWNlbnRfZGV2X3VubGluayhk ZXYsIHVwcGVyX2Rldik7CisJCV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmsoZGV2LCB1cHBl cl9kZXYsIDEpOwogCQlyZXR1cm4gcmV0OwogCX0KIApAQCAtNDk3OCw4ICs0OTgxLDggQEAgc3Rh dGljIGludCBfX25ldGRldl9hZGphY2VudF9kZXZfbGlua19uZWlnaGJvdXIoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwKIHN0YXRpYyB2b2lkIF9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmtfbmVp Z2hib3VyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJCQkgICBzdHJ1Y3QgbmV0X2Rldmlj ZSAqdXBwZXJfZGV2KQogewotCV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmsoZGV2LCB1cHBl cl9kZXYpOwotCV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmtfbGlzdHMoZGV2LCB1cHBlcl9k ZXYsCisJX19uZXRkZXZfYWRqYWNlbnRfZGV2X3VubGluayhkZXYsIHVwcGVyX2RldiwgMSk7CisJ X19uZXRkZXZfYWRqYWNlbnRfZGV2X3VubGlua19saXN0cyhkZXYsIHVwcGVyX2RldiwgMSwKIAkJ CQkJICAgJmRldi0+YWRqX2xpc3QudXBwZXIsCiAJCQkJCSAgICZ1cHBlcl9kZXYtPmFkal9saXN0 Lmxvd2VyKTsKIH0KQEAgLTUwMjAsNyArNTAyMyw3IEBAIHN0YXRpYyBpbnQgX19uZXRkZXZfdXBw ZXJfZGV2X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRy eShqLCAmdXBwZXJfZGV2LT5hbGxfYWRqX2xpc3QudXBwZXIsIGxpc3QpIHsKIAkJCXByX2RlYnVn KCJJbnRlcmxpbmtpbmcgJXMgd2l0aCAlcywgbm9uLW5laWdoYm91clxuIiwKIAkJCQkgaS0+ZGV2 LT5uYW1lLCBqLT5kZXYtPm5hbWUpOwotCQkJcmV0ID0gX19uZXRkZXZfYWRqYWNlbnRfZGV2X2xp bmsoaS0+ZGV2LCBqLT5kZXYpOworCQkJcmV0ID0gX19uZXRkZXZfYWRqYWNlbnRfZGV2X2xpbmso aS0+ZGV2LCBqLT5kZXYsIGktPnJlZl9ucik7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8gcm9sbGJh Y2tfbWVzaDsKIAkJfQpAQCAtNTAzMCw3ICs1MDMzLDcgQEAgc3RhdGljIGludCBfX25ldGRldl91 cHBlcl9kZXZfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWxpc3RfZm9yX2VhY2hfZW50 cnkoaSwgJnVwcGVyX2Rldi0+YWxsX2Fkal9saXN0LnVwcGVyLCBsaXN0KSB7CiAJCXByX2RlYnVn KCJsaW5raW5nICVzJ3MgdXBwZXIgZGV2aWNlICVzIHdpdGggJXNcbiIsCiAJCQkgdXBwZXJfZGV2 LT5uYW1lLCBpLT5kZXYtPm5hbWUsIGRldi0+bmFtZSk7Ci0JCXJldCA9IF9fbmV0ZGV2X2FkamFj ZW50X2Rldl9saW5rKGRldiwgaS0+ZGV2KTsKKwkJcmV0ID0gX19uZXRkZXZfYWRqYWNlbnRfZGV2 X2xpbmsoZGV2LCBpLT5kZXYsIGktPnJlZl9ucik7CiAJCWlmIChyZXQpCiAJCQlnb3RvIHJvbGxi YWNrX3VwcGVyX21lc2g7CiAJfQpAQCAtNTAzOSw3ICs1MDQyLDcgQEAgc3RhdGljIGludCBfX25l dGRldl91cHBlcl9kZXZfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWxpc3RfZm9yX2Vh Y2hfZW50cnkoaSwgJmRldi0+YWxsX2Fkal9saXN0Lmxvd2VyLCBsaXN0KSB7CiAJCXByX2RlYnVn KCJsaW5raW5nICVzJ3MgbG93ZXIgZGV2aWNlICVzIHdpdGggJXNcbiIsIGRldi0+bmFtZSwKIAkJ CSBpLT5kZXYtPm5hbWUsIHVwcGVyX2Rldi0+bmFtZSk7Ci0JCXJldCA9IF9fbmV0ZGV2X2FkamFj ZW50X2Rldl9saW5rKGktPmRldiwgdXBwZXJfZGV2KTsKKwkJcmV0ID0gX19uZXRkZXZfYWRqYWNl bnRfZGV2X2xpbmsoaS0+ZGV2LCB1cHBlcl9kZXYsIGktPnJlZl9ucik7CiAJCWlmIChyZXQpCiAJ CQlnb3RvIHJvbGxiYWNrX2xvd2VyX21lc2g7CiAJfQpAQCAtNTA1Miw3ICs1MDU1LDcgQEAgcm9s bGJhY2tfbG93ZXJfbWVzaDoKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGksICZkZXYtPmFsbF9hZGpf bGlzdC5sb3dlciwgbGlzdCkgewogCQlpZiAoaSA9PSB0b19pKQogCQkJYnJlYWs7Ci0JCV9fbmV0 ZGV2X2FkamFjZW50X2Rldl91bmxpbmsoaS0+ZGV2LCB1cHBlcl9kZXYpOworCQlfX25ldGRldl9h ZGphY2VudF9kZXZfdW5saW5rKGktPmRldiwgdXBwZXJfZGV2LCBpLT5yZWZfbnIpOwogCX0KIAog CWkgPSBOVUxMOwpAQCAtNTA2Miw3ICs1MDY1LDcgQEAgcm9sbGJhY2tfdXBwZXJfbWVzaDoKIAls aXN0X2Zvcl9lYWNoX2VudHJ5KGksICZ1cHBlcl9kZXYtPmFsbF9hZGpfbGlzdC51cHBlciwgbGlz dCkgewogCQlpZiAoaSA9PSB0b19pKQogCQkJYnJlYWs7Ci0JCV9fbmV0ZGV2X2FkamFjZW50X2Rl dl91bmxpbmsoZGV2LCBpLT5kZXYpOworCQlfX25ldGRldl9hZGphY2VudF9kZXZfdW5saW5rKGRl diwgaS0+ZGV2LCBpLT5yZWZfbnIpOwogCX0KIAogCWkgPSBqID0gTlVMTDsKQEAgLTUwNzQsNyAr NTA3Nyw3IEBAIHJvbGxiYWNrX21lc2g6CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoaiwgJnVwcGVy X2Rldi0+YWxsX2Fkal9saXN0LnVwcGVyLCBsaXN0KSB7CiAJCQlpZiAoaSA9PSB0b19pICYmIGog PT0gdG9faikKIAkJCQlicmVhazsKLQkJCV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmsoaS0+ ZGV2LCBqLT5kZXYpOworCQkJX19uZXRkZXZfYWRqYWNlbnRfZGV2X3VubGluayhpLT5kZXYsIGot PmRldiwgaS0+cmVmX25yKTsKIAkJfQogCQlpZiAoaSA9PSB0b19pKQogCQkJYnJlYWs7CkBAIC01 MTUwLDE2ICs1MTUzLDE2IEBAIHZvaWQgbmV0ZGV2X3VwcGVyX2Rldl91bmxpbmsoc3RydWN0IG5l dF9kZXZpY2UgKmRldiwKIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGksICZkZXYtPmFsbF9h ZGpfbGlzdC5sb3dlciwgbGlzdCkKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShqLCAmdXBwZXJfZGV2 LT5hbGxfYWRqX2xpc3QudXBwZXIsIGxpc3QpCi0JCQlfX25ldGRldl9hZGphY2VudF9kZXZfdW5s aW5rKGktPmRldiwgai0+ZGV2KTsKKwkJCV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmsoaS0+ ZGV2LCBqLT5kZXYsIGktPnJlZl9ucik7CiAKIAkvKiByZW1vdmUgYWxzbyB0aGUgZGV2aWNlcyBp dHNlbGYgZnJvbSBsb3dlci91cHBlciBkZXZpY2UKIAkgKiBsaXN0CiAJICovCiAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShpLCAmZGV2LT5hbGxfYWRqX2xpc3QubG93ZXIsIGxpc3QpCi0JCV9fbmV0ZGV2 X2FkamFjZW50X2Rldl91bmxpbmsoaS0+ZGV2LCB1cHBlcl9kZXYpOworCQlfX25ldGRldl9hZGph Y2VudF9kZXZfdW5saW5rKGktPmRldiwgdXBwZXJfZGV2LCBpLT5yZWZfbnIpOwogCiAJbGlzdF9m b3JfZWFjaF9lbnRyeShpLCAmdXBwZXJfZGV2LT5hbGxfYWRqX2xpc3QudXBwZXIsIGxpc3QpCi0J CV9fbmV0ZGV2X2FkamFjZW50X2Rldl91bmxpbmsoZGV2LCBpLT5kZXYpOworCQlfX25ldGRldl9h ZGphY2VudF9kZXZfdW5saW5rKGRldiwgaS0+ZGV2LCBpLT5yZWZfbnIpOwogCiAJY2FsbF9uZXRk ZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VVUFBFUiwgZGV2KTsKIH0KZGlmZiAtLWdpdCBh L25ldC9jb3JlL2Ryb3BfbW9uaXRvci5jIGIvbmV0L2NvcmUvZHJvcF9tb25pdG9yLmMKaW5kZXgg ZTcwMzAxZWI3YTRhLi5hZGQwNTQ0YTU3MWEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Ryb3BfbW9u aXRvci5jCisrKyBiL25ldC9jb3JlL2Ryb3BfbW9uaXRvci5jCkBAIC04MCw2ICs4MCw3IEBAIHN0 YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVzZXRfcGVyX2NwdV9kYXRhKHN0cnVjdCBwZXJfY3B1X2Rt X2RhdGEgKmRhdGEpCiAJc3RydWN0IG5sYXR0ciAqbmxhOwogCXN0cnVjdCBza19idWZmICpza2I7 CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl2b2lkICptc2dfaGVhZGVyOwogCiAJYWwgPSBzaXpl b2Yoc3RydWN0IG5ldF9kbV9hbGVydF9tc2cpOwogCWFsICs9IGRtX2hpdF9saW1pdCAqIHNpemVv ZihzdHJ1Y3QgbmV0X2RtX2Ryb3BfcG9pbnQpOwpAQCAtODcsMjEgKzg4LDQxIEBAIHN0YXRpYyBz dHJ1Y3Qgc2tfYnVmZiAqcmVzZXRfcGVyX2NwdV9kYXRhKHN0cnVjdCBwZXJfY3B1X2RtX2RhdGEg KmRhdGEpCiAKIAlza2IgPSBnZW5sbXNnX25ldyhhbCwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoc2ti KSB7Ci0JCWdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgJm5ldF9kcm9wX21vbml0b3JfZmFtaWx5LAot CQkJCTAsIE5FVF9ETV9DTURfQUxFUlQpOwotCQlubGEgPSBubGFfcmVzZXJ2ZShza2IsIE5MQV9V TlNQRUMsCi0JCQkJICBzaXplb2Yoc3RydWN0IG5ldF9kbV9hbGVydF9tc2cpKTsKLQkJbXNnID0g bmxhX2RhdGEobmxhKTsKLQkJbWVtc2V0KG1zZywgMCwgYWwpOwotCX0gZWxzZSB7Ci0JCW1vZF90 aW1lcigmZGF0YS0+c2VuZF90aW1lciwgamlmZmllcyArIEhaIC8gMTApOworCWlmICghc2tiKQor CQlnb3RvIGVycjsKKworCW1zZ19oZWFkZXIgPSBnZW5sbXNnX3B1dChza2IsIDAsIDAsICZuZXRf ZHJvcF9tb25pdG9yX2ZhbWlseSwKKwkJCQkgMCwgTkVUX0RNX0NNRF9BTEVSVCk7CisJaWYgKCFt c2dfaGVhZGVyKSB7CisJCW5sbXNnX2ZyZWUoc2tiKTsKKwkJc2tiID0gTlVMTDsKKwkJZ290byBl cnI7CisJfQorCW5sYSA9IG5sYV9yZXNlcnZlKHNrYiwgTkxBX1VOU1BFQywKKwkJCSAgc2l6ZW9m KHN0cnVjdCBuZXRfZG1fYWxlcnRfbXNnKSk7CisJaWYgKCFubGEpIHsKKwkJbmxtc2dfZnJlZShz a2IpOworCQlza2IgPSBOVUxMOworCQlnb3RvIGVycjsKIAl9CisJbXNnID0gbmxhX2RhdGEobmxh KTsKKwltZW1zZXQobXNnLCAwLCBhbCk7CisJZ290byBvdXQ7CiAKK2VycjoKKwltb2RfdGltZXIo JmRhdGEtPnNlbmRfdGltZXIsIGppZmZpZXMgKyBIWiAvIDEwKTsKK291dDoKIAlzcGluX2xvY2tf aXJxc2F2ZSgmZGF0YS0+bG9jaywgZmxhZ3MpOwogCXN3YXAoZGF0YS0+c2tiLCBza2IpOwogCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRhdGEtPmxvY2ssIGZsYWdzKTsKIAorCWlmIChza2IpIHsK KwkJc3RydWN0IG5sbXNnaGRyICpubGggPSAoc3RydWN0IG5sbXNnaGRyICopc2tiLT5kYXRhOwor CQlzdHJ1Y3QgZ2VubG1zZ2hkciAqZ25saCA9IChzdHJ1Y3QgZ2VubG1zZ2hkciAqKW5sbXNnX2Rh dGEobmxoKTsKKworCQlnZW5sbXNnX2VuZChza2IsIGdlbmxtc2dfZGF0YShnbmxoKSk7CisJfQor CiAJcmV0dXJuIHNrYjsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc29jay5jIGIvbmV0L2Nv cmUvc29jay5jCmluZGV4IDljYjAwZDFlYTE0MC4uYWY4NTZmMDFjYzhmIDEwMDY0NAotLS0gYS9u ZXQvY29yZS9zb2NrLmMKKysrIGIvbmV0L2NvcmUvc29jay5jCkBAIC0xNTYwLDYgKzE1NjAsNyBA QCBzdHJ1Y3Qgc29jayAqc2tfY2xvbmVfbG9jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0 IGdmcF90IHByaW9yaXR5KQogCQl9CiAKIAkJbmV3c2stPnNrX2VycgkgICA9IDA7CisJCW5ld3Nr LT5za19lcnJfc29mdCA9IDA7CiAJCW5ld3NrLT5za19wcmlvcml0eSA9IDA7CiAJCS8qCiAJCSAq IEJlZm9yZSB1cGRhdGluZyBza19yZWZjbnQsIHdlIG11c3QgY29tbWl0IHByaW9yIGNoYW5nZXMg dG8gbWVtb3J5CkBAIC0xNjc4LDYgKzE2NzksMTIgQEAgdm9pZCBzb2NrX3JmcmVlKHN0cnVjdCBz a19idWZmICpza2IpCiB9CiBFWFBPUlRfU1lNQk9MKHNvY2tfcmZyZWUpOwogCit2b2lkIHNvY2tf ZWZyZWUoc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzb2NrX3B1dChza2ItPnNrKTsKK30KK0VY UE9SVF9TWU1CT0woc29ja19lZnJlZSk7CisKIHZvaWQgc29ja19lZGVtdXgoc3RydWN0IHNrX2J1 ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgc29jayAqc2sgPSBza2ItPnNrOwpAQCAtMjExOSwxMiArMjEy NiwxMyBAQCBFWFBPUlRfU1lNQk9MKF9fc2tfbWVtX3NjaGVkdWxlKTsKIC8qKgogICoJX19za19y ZWNsYWltIC0gcmVjbGFpbSBtZW1vcnlfYWxsb2NhdGVkCiAgKglAc2s6IHNvY2tldAorICoJQGFt b3VudDogbnVtYmVyIG9mIGJ5dGVzIChyb3VuZGVkIGRvd24gdG8gYSBTS19NRU1fUVVBTlRVTSBt dWx0aXBsZSkKICAqLwotdm9pZCBfX3NrX21lbV9yZWNsYWltKHN0cnVjdCBzb2NrICpzaykKK3Zv aWQgX19za19tZW1fcmVjbGFpbShzdHJ1Y3Qgc29jayAqc2ssIGludCBhbW91bnQpCiB7Ci0Jc2tf bWVtb3J5X2FsbG9jYXRlZF9zdWIoc2ssCi0JCQkJc2stPnNrX2ZvcndhcmRfYWxsb2MgPj4gU0tf TUVNX1FVQU5UVU1fU0hJRlQpOwotCXNrLT5za19mb3J3YXJkX2FsbG9jICY9IFNLX01FTV9RVUFO VFVNIC0gMTsKKwlhbW91bnQgPj49IFNLX01FTV9RVUFOVFVNX1NISUZUOworCXNrX21lbW9yeV9h bGxvY2F0ZWRfc3ViKHNrLCBhbW91bnQpOworCXNrLT5za19mb3J3YXJkX2FsbG9jIC09IGFtb3Vu dCA8PCBTS19NRU1fUVVBTlRVTV9TSElGVDsKIAogCWlmIChza191bmRlcl9tZW1vcnlfcHJlc3N1 cmUoc2spICYmCiAJICAgIChza19tZW1vcnlfYWxsb2NhdGVkKHNrKSA8IHNrX3Byb3RfbWVtX2xp bWl0cyhzaywgMCkpKQpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2NC5jIGIvbmV0L2RjY3AvaXB2 NC5jCmluZGV4IGIzNzEzNDFkODk5ZC4uN2Q5YjIxYTdkYmI2IDEwMDY0NAotLS0gYS9uZXQvZGNj cC9pcHY0LmMKKysrIGIvbmV0L2RjY3AvaXB2NC5jCkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGlj IHZvaWQgZGNjcF92NF9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm8pCiB7CiAJY29u c3Qgc3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiLT5kYXRhOwogCWNvbnN0 IHU4IG9mZnNldCA9IGlwaC0+aWhsIDw8IDI7Ci0JY29uc3Qgc3RydWN0IGRjY3BfaGRyICpkaCA9 IChzdHJ1Y3QgZGNjcF9oZHIgKikoc2tiLT5kYXRhICsgb2Zmc2V0KTsKKwljb25zdCBzdHJ1Y3Qg ZGNjcF9oZHIgKmRoOwogCXN0cnVjdCBkY2NwX3NvY2sgKmRwOwogCXN0cnVjdCBpbmV0X3NvY2sg KmluZXQ7CiAJY29uc3QgaW50IHR5cGUgPSBpY21wX2hkcihza2IpLT50eXBlOwpAQCAtMjIzLDEx ICsyMjMsMTMgQEAgc3RhdGljIHZvaWQgZGNjcF92NF9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwg dTMyIGluZm8pCiAJaW50IGVycjsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KHNrYi0+ZGV2 KTsKIAotCWlmIChza2ItPmxlbiA8IG9mZnNldCArIHNpemVvZigqZGgpIHx8Ci0JICAgIHNrYi0+ bGVuIDwgb2Zmc2V0ICsgX19kY2NwX2Jhc2ljX2hkcl9sZW4oZGgpKSB7Ci0JCUlDTVBfSU5DX1NU QVRTX0JIKG5ldCwgSUNNUF9NSUJfSU5FUlJPUlMpOwotCQlyZXR1cm47Ci0JfQorCS8qIE9ubHkg bmVlZCBkY2NwaF9kcG9ydCAmIGRjY3BoX3Nwb3J0IHdoaWNoIGFyZSB0aGUgZmlyc3QKKwkgKiA0 IGJ5dGVzIGluIGRjY3AgaGVhZGVyLgorCSAqIE91ciBjYWxsZXIgKGljbXBfc29ja2V0X2RlbGl2 ZXIoKSkgYWxyZWFkeSBwdWxsZWQgOCBieXRlcyBmb3IgdXMuCisJICovCisJQlVJTERfQlVHX09O KG9mZnNldG9mKHN0cnVjdCBkY2NwX2hkciwgZGNjcGhfc3BvcnQpICsgc2l6ZW9mKGRoLT5kY2Nw aF9zcG9ydCkgPiA4KTsKKwlCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IGRjY3BfaGRyLCBk Y2NwaF9kcG9ydCkgKyBzaXplb2YoZGgtPmRjY3BoX2Rwb3J0KSA+IDgpOworCWRoID0gKHN0cnVj dCBkY2NwX2hkciAqKShza2ItPmRhdGEgKyBvZmZzZXQpOwogCiAJc2sgPSBpbmV0X2xvb2t1cChu ZXQsICZkY2NwX2hhc2hpbmZvLAogCQkJaXBoLT5kYWRkciwgZGgtPmRjY3BoX2Rwb3J0LApAQCAt NzQxLDYgKzc0Myw3IEBAIGludCBkY2NwX2ludmFsaWRfcGFja2V0KHN0cnVjdCBza19idWZmICpz a2IpCiB7CiAJY29uc3Qgc3RydWN0IGRjY3BfaGRyICpkaDsKIAl1bnNpZ25lZCBpbnQgY3Njb3Y7 CisJdTggZGNjcGhfZG9mZjsKIAogCWlmIChza2ItPnBrdF90eXBlICE9IFBBQ0tFVF9IT1NUKQog CQlyZXR1cm4gMTsKQEAgLTc2MiwxOCArNzY1LDE5IEBAIGludCBkY2NwX2ludmFsaWRfcGFja2V0 KHN0cnVjdCBza19idWZmICpza2IpCiAJLyoKIAkgKiBJZiBQLkRhdGEgT2Zmc2V0IGlzIHRvbyBz bWFsbCBmb3IgcGFja2V0IHR5cGUsIGRyb3AgcGFja2V0IGFuZCByZXR1cm4KIAkgKi8KLQlpZiAo ZGgtPmRjY3BoX2RvZmYgPCBkY2NwX2hkcl9sZW4oc2tiKSAvIHNpemVvZih1MzIpKSB7Ci0JCURD Q1BfV0FSTigiUC5EYXRhIE9mZnNldCgldSkgdG9vIHNtYWxsXG4iLCBkaC0+ZGNjcGhfZG9mZik7 CisJZGNjcGhfZG9mZiA9IGRoLT5kY2NwaF9kb2ZmOworCWlmIChkY2NwaF9kb2ZmIDwgZGNjcF9o ZHJfbGVuKHNrYikgLyBzaXplb2YodTMyKSkgeworCQlEQ0NQX1dBUk4oIlAuRGF0YSBPZmZzZXQo JXUpIHRvbyBzbWFsbFxuIiwgZGNjcGhfZG9mZik7CiAJCXJldHVybiAxOwogCX0KIAkvKgogCSAq IElmIFAuRGF0YSBPZmZzZXQgaXMgdG9vIHRvbyBsYXJnZSBmb3IgcGFja2V0LCBkcm9wIHBhY2tl dCBhbmQgcmV0dXJuCiAJICovCi0JaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgZGgtPmRjY3BoX2Rv ZmYgKiBzaXplb2YodTMyKSkpIHsKLQkJRENDUF9XQVJOKCJQLkRhdGEgT2Zmc2V0KCV1KSB0b28g bGFyZ2VcbiIsIGRoLT5kY2NwaF9kb2ZmKTsKKwlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBkY2Nw aF9kb2ZmICogc2l6ZW9mKHUzMikpKSB7CisJCURDQ1BfV0FSTigiUC5EYXRhIE9mZnNldCgldSkg dG9vIGxhcmdlXG4iLCBkY2NwaF9kb2ZmKTsKIAkJcmV0dXJuIDE7CiAJfQotCisJZGggPSBkY2Nw X2hkcihza2IpOwogCS8qCiAJICogSWYgUC50eXBlIGlzIG5vdCBEYXRhLCBBY2ssIG9yIERhdGFB Y2sgYW5kIFAuWCA9PSAwICh0aGUgcGFja2V0CiAJICogaGFzIHNob3J0IHNlcXVlbmNlIG51bWJl cnMpLCBkcm9wIHBhY2tldCBhbmQgcmV0dXJuCmRpZmYgLS1naXQgYS9uZXQvZGNjcC9pcHY2LmMg Yi9uZXQvZGNjcC9pcHY2LmMKaW5kZXggOWYyZGMxZDE1ZTQzLi5iNDIxNTFiZThhZmEgMTAwNjQ0 Ci0tLSBhL25ldC9kY2NwL2lwdjYuYworKysgYi9uZXQvZGNjcC9pcHY2LmMKQEAgLTgzLDcgKzgz LDcgQEAgc3RhdGljIHZvaWQgZGNjcF92Nl9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IGluZXQ2X3NrYl9wYXJtICpvcHQsCiAJCQl1OCB0eXBlLCB1OCBjb2RlLCBpbnQgb2Zmc2V0LCBf X2JlMzIgaW5mbykKIHsKIAljb25zdCBzdHJ1Y3QgaXB2NmhkciAqaGRyID0gKGNvbnN0IHN0cnVj dCBpcHY2aGRyICopc2tiLT5kYXRhOwotCWNvbnN0IHN0cnVjdCBkY2NwX2hkciAqZGggPSAoc3Ry dWN0IGRjY3BfaGRyICopKHNrYi0+ZGF0YSArIG9mZnNldCk7CisJY29uc3Qgc3RydWN0IGRjY3Bf aGRyICpkaDsKIAlzdHJ1Y3QgZGNjcF9zb2NrICpkcDsKIAlzdHJ1Y3QgaXB2Nl9waW5mbyAqbnA7 CiAJc3RydWN0IHNvY2sgKnNrOwpAQCAtOTEsMTIgKzkxLDEzIEBAIHN0YXRpYyB2b2lkIGRjY3Bf djZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9za2JfcGFybSAqb3B0LAog CV9fdTY0IHNlcTsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KHNrYi0+ZGV2KTsKIAotCWlm IChza2ItPmxlbiA8IG9mZnNldCArIHNpemVvZigqZGgpIHx8Ci0JICAgIHNrYi0+bGVuIDwgb2Zm c2V0ICsgX19kY2NwX2Jhc2ljX2hkcl9sZW4oZGgpKSB7Ci0JCUlDTVA2X0lOQ19TVEFUU19CSChu ZXQsIF9faW42X2Rldl9nZXQoc2tiLT5kZXYpLAotCQkJCSAgIElDTVA2X01JQl9JTkVSUk9SUyk7 Ci0JCXJldHVybjsKLQl9CisJLyogT25seSBuZWVkIGRjY3BoX2Rwb3J0ICYgZGNjcGhfc3BvcnQg d2hpY2ggYXJlIHRoZSBmaXJzdAorCSAqIDQgYnl0ZXMgaW4gZGNjcCBoZWFkZXIuCisJICogT3Vy IGNhbGxlciAoaWNtcHY2X25vdGlmeSgpKSBhbHJlYWR5IHB1bGxlZCA4IGJ5dGVzIGZvciB1cy4K KwkgKi8KKwlCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IGRjY3BfaGRyLCBkY2NwaF9zcG9y dCkgKyBzaXplb2YoZGgtPmRjY3BoX3Nwb3J0KSA+IDgpOworCUJVSUxEX0JVR19PTihvZmZzZXRv ZihzdHJ1Y3QgZGNjcF9oZHIsIGRjY3BoX2Rwb3J0KSArIHNpemVvZihkaC0+ZGNjcGhfZHBvcnQp ID4gOCk7CisJZGggPSAoc3RydWN0IGRjY3BfaGRyICopKHNrYi0+ZGF0YSArIG9mZnNldCk7CiAK IAlzayA9IGluZXQ2X2xvb2t1cChuZXQsICZkY2NwX2hhc2hpbmZvLAogCQkJJmhkci0+ZGFkZHIs IGRoLT5kY2NwaF9kcG9ydCwKQEAgLTEwMjMsNiArMTAyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGRjY3BfaXB2Nl9tYXBwZWQgPSB7CiAJLmdl dHNvY2tvcHQJICAgPSBpcHY2X2dldHNvY2tvcHQsCiAJLmFkZHIyc29ja2FkZHIJICAgPSBpbmV0 Nl9jc2tfYWRkcjJzb2NrYWRkciwKIAkuc29ja2FkZHJfbGVuCSAgID0gc2l6ZW9mKHN0cnVjdCBz b2NrYWRkcl9pbjYpLAorCS5iaW5kX2NvbmZsaWN0CSAgID0gaW5ldDZfY3NrX2JpbmRfY29uZmxp Y3QsCiAjaWZkZWYgQ09ORklHX0NPTVBBVAogCS5jb21wYXRfc2V0c29ja29wdCA9IGNvbXBhdF9p cHY2X3NldHNvY2tvcHQsCiAJLmNvbXBhdF9nZXRzb2Nrb3B0ID0gY29tcGF0X2lwdjZfZ2V0c29j a29wdCwKZGlmZiAtLWdpdCBhL25ldC9kY2NwL3Byb3RvLmMgYi9uZXQvZGNjcC9wcm90by5jCmlu ZGV4IGRlMmMxZTcxOTMwNS4uZjhmYTJkMTUxMTVlIDEwMDY0NAotLS0gYS9uZXQvZGNjcC9wcm90 by5jCisrKyBiL25ldC9kY2NwL3Byb3RvLmMKQEAgLTEwMTIsNiArMTAxMiwxMCBAQCB2b2lkIGRj Y3BfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiAJCV9fa2ZyZWVfc2tiKHNr Yik7CiAJfQogCisJLyogSWYgc29ja2V0IGhhcyBiZWVuIGFscmVhZHkgcmVzZXQga2lsbCBpdC4g Ki8KKwlpZiAoc2stPnNrX3N0YXRlID09IERDQ1BfQ0xPU0VEKQorCQlnb3RvIGFkanVkZ2VfdG9f ZGVhdGg7CisKIAlpZiAoZGF0YV93YXNfdW5yZWFkKSB7CiAJCS8qIFVucmVhZCBkYXRhIHdhcyB0 b3NzZWQsIHNlbmQgYW4gYXBwcm9wcmlhdGUgUmVzZXQgQ29kZSAqLwogCQlEQ0NQX1dBUk4oIkFC T1JUIHdpdGggJXUgYnl0ZXMgdW5yZWFkXG4iLCBkYXRhX3dhc191bnJlYWQpOwpkaWZmIC0tZ2l0 IGEvbmV0L2RlY25ldC9kbl9yb3V0ZS5jIGIvbmV0L2RlY25ldC9kbl9yb3V0ZS5jCmluZGV4IGRh Y2NjNGEzNmQ4MC4uNDA0NzM0MWY2YzA3IDEwMDY0NAotLS0gYS9uZXQvZGVjbmV0L2RuX3JvdXRl LmMKKysrIGIvbmV0L2RlY25ldC9kbl9yb3V0ZS5jCkBAIC0xMDQyLDEwICsxMDQyLDEzIEBAIHNv dXJjZV9vazoKIAlpZiAoIWZsZC5kYWRkcikgewogCQlmbGQuZGFkZHIgPSBmbGQuc2FkZHI7CiAK LQkJZXJyID0gLUVBRERSTk9UQVZBSUw7CiAJCWlmIChkZXZfb3V0KQogCQkJZGV2X3B1dChkZXZf b3V0KTsKKwkJZXJyID0gLUVJTlZBTDsKIAkJZGV2X291dCA9IGluaXRfbmV0Lmxvb3BiYWNrX2Rl djsKKwkJaWYgKCFkZXZfb3V0LT5kbl9wdHIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gLUVBRERS Tk9UQVZBSUw7CiAJCWRldl9ob2xkKGRldl9vdXQpOwogCQlpZiAoIWZsZC5kYWRkcikgewogCQkJ ZmxkLmRhZGRyID0KQEAgLTExMTgsNiArMTEyMSw4IEBAIHNvdXJjZV9vazoKIAkJaWYgKGRldl9v dXQgPT0gTlVMTCkKIAkJCWdvdG8gb3V0OwogCQlkbl9kYiA9IHJjdV9kZXJlZmVyZW5jZV9yYXco ZGV2X291dC0+ZG5fcHRyKTsKKwkJaWYgKCFkbl9kYikKKwkJCWdvdG8gZV9pbnZhbDsKIAkJLyog UG9zc2libGUgaW1wcm92ZW1lbnQgLSBjaGVjayBhbGwgZGV2aWNlcyBmb3IgbG9jYWwgYWRkciAq LwogCQlpZiAoZG5fZGV2X2lzbG9jYWwoZGV2X291dCwgZmxkLmRhZGRyKSkgewogCQkJZGV2X3B1 dChkZXZfb3V0KTsKQEAgLTExNTksNiArMTE2NCw4IEBAIHNlbGVjdF9zb3VyY2U6CiAJCQlkZXZf cHV0KGRldl9vdXQpOwogCQlkZXZfb3V0ID0gaW5pdF9uZXQubG9vcGJhY2tfZGV2OwogCQlkZXZf aG9sZChkZXZfb3V0KTsKKwkJaWYgKCFkZXZfb3V0LT5kbl9wdHIpCisJCQlnb3RvIGVfaW52YWw7 CiAJCWZsZC5mbG93aWRuX29pZiA9IGRldl9vdXQtPmlmaW5kZXg7CiAJCWlmIChyZXMuZmkpCiAJ CQlkbl9maWJfaW5mb19wdXQocmVzLmZpKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2NpcHNvX2lw djQuYyBiL25ldC9pcHY0L2NpcHNvX2lwdjQuYwppbmRleCA2OWU3N2M4ZmYyODUuLjI1YmUzMTRk MGUxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvY2lwc29faXB2NC5jCisrKyBiL25ldC9pcHY0L2Np cHNvX2lwdjQuYwpAQCAtMTY0NSw2ICsxNjQ1LDEwIEBAIGludCBjaXBzb192NF92YWxpZGF0ZShj b25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBjaGFyICoqb3B0aW9uKQogCQkJCWdv dG8gdmFsaWRhdGVfcmV0dXJuX2xvY2tlZDsKIAkJCX0KIAorCQlpZiAob3B0X2l0ZXIgKyAxID09 IG9wdF9sZW4pIHsKKwkJCWVycl9vZmZzZXQgPSBvcHRfaXRlcjsKKwkJCWdvdG8gdmFsaWRhdGVf cmV0dXJuX2xvY2tlZDsKKwkJfQogCQl0YWdfbGVuID0gdGFnWzFdOwogCQlpZiAodGFnX2xlbiA+ IChvcHRfbGVuIC0gb3B0X2l0ZXIpKSB7CiAJCQllcnJfb2Zmc2V0ID0gb3B0X2l0ZXIgKyAxOwpk aWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWdtcC5jIGIvbmV0L2lwdjQvaWdtcC5jCmluZGV4IDcyNzQ0 N2MxNzk1NC4uOGYxZWU0YmI0YzUxIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKKysrIGIv bmV0L2lwdjQvaWdtcC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIGludCB1bnNvbGljaXRl ZF9yZXBvcnRfaW50ZXJ2YWwoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogfQogCiBzdGF0aWMg dm9pZCBpZ21wdjNfYWRkX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIHN0cnVjdCBp cF9tY19saXN0ICppbSk7Ci1zdGF0aWMgdm9pZCBpZ21wdjNfZGVsX2RlbHJlYyhzdHJ1Y3QgaW5f ZGV2aWNlICppbl9kZXYsIF9fYmUzMiBtdWx0aWFkZHIpOworc3RhdGljIHZvaWQgaWdtcHYzX2Rl bF9kZWxyZWMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0p Owogc3RhdGljIHZvaWQgaWdtcHYzX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9k ZXYpOwogc3RhdGljIGludCBzZl9zZXRzdGF0ZShzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jKTsKIHN0 YXRpYyB2b2lkIHNmX21hcmtzdGF0ZShzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jKTsKQEAgLTIyMSw5 ICsyMjEsMTQgQEAgc3RhdGljIHZvaWQgaWdtcF9zdGFydF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlz dCAqaW0sIGludCBtYXhfZGVsYXkpCiBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0 cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIHsKIAlpbnQgdHYgPSBwcmFuZG9tX3UzMigpICUgaW5f ZGV2LT5tcl9tYXhkZWxheTsKKwl1bnNpZ25lZCBsb25nIGV4cCA9IGppZmZpZXMgKyB0diArIDI7 CisKKwlpZiAoaW5fZGV2LT5tcl9ncV9ydW5uaW5nICYmCisJICAgIHRpbWVfYWZ0ZXJfZXEoZXhw LCAoaW5fZGV2LT5tcl9ncV90aW1lcikuZXhwaXJlcykpCisJCXJldHVybjsKIAogCWluX2Rldi0+ bXJfZ3FfcnVubmluZyA9IDE7Ci0JaWYgKCFtb2RfdGltZXIoJmluX2Rldi0+bXJfZ3FfdGltZXIs IGppZmZpZXMrdHYrMikpCisJaWYgKCFtb2RfdGltZXIoJmluX2Rldi0+bXJfZ3FfdGltZXIsIGV4 cCkpCiAJCWluX2Rldl9ob2xkKGluX2Rldik7CiB9CiAKQEAgLTExMDQsMTAgKzExMDksMTQgQEAg c3RhdGljIHZvaWQgaWdtcHYzX2FkZF9kZWxyZWMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBz dHJ1Y3QgaXBfbWNfbGlzdCAqaW0pCiAJc3Bpbl91bmxvY2tfYmgoJmluX2Rldi0+bWNfdG9tYl9s b2NrKTsKIH0KIAotc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9kZWxyZWMoc3RydWN0IGluX2Rldmlj ZSAqaW5fZGV2LCBfX2JlMzIgbXVsdGlhZGRyKQorLyoKKyAqIHJlc3RvcmUgaXBfbWNfbGlzdCBk ZWxldGVkIHJlY29yZHMKKyAqLworc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9kZWxyZWMoc3RydWN0 IGluX2RldmljZSAqaW5fZGV2LCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pCiB7CiAJc3RydWN0IGlw X21jX2xpc3QgKnBtYywgKnBtY19wcmV2OwotCXN0cnVjdCBpcF9zZl9saXN0ICpwc2YsICpwc2Zf bmV4dDsKKwlzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmOworCV9fYmUzMiBtdWx0aWFkZHIgPSBpbS0+ bXVsdGlhZGRyOwogCiAJc3Bpbl9sb2NrX2JoKCZpbl9kZXYtPm1jX3RvbWJfbG9jayk7CiAJcG1j X3ByZXYgPSBOVUxMOwpAQCAtMTEyMywxNiArMTEzMiwyNyBAQCBzdGF0aWMgdm9pZCBpZ21wdjNf ZGVsX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBtdWx0aWFkZHIpCiAJ CQlpbl9kZXYtPm1jX3RvbWIgPSBwbWMtPm5leHQ7CiAJfQogCXNwaW5fdW5sb2NrX2JoKCZpbl9k ZXYtPm1jX3RvbWJfbG9jayk7CisKKwlzcGluX2xvY2tfYmgoJmltLT5sb2NrKTsKIAlpZiAocG1j KSB7Ci0JCWZvciAocHNmID0gcG1jLT50b21iOyBwc2Y7IHBzZiA9IHBzZl9uZXh0KSB7Ci0JCQlw c2ZfbmV4dCA9IHBzZi0+c2ZfbmV4dDsKLQkJCWtmcmVlKHBzZik7CisJCWltLT5pbnRlcmZhY2Ug PSBwbWMtPmludGVyZmFjZTsKKwkJaW0tPmNyY291bnQgPSBpbl9kZXYtPm1yX3FydiA/OiBJR01Q X1Vuc29saWNpdGVkX1JlcG9ydF9Db3VudDsKKwkJaW0tPnNmbW9kZSA9IHBtYy0+c2Ztb2RlOwor CQlpZiAocG1jLT5zZm1vZGUgPT0gTUNBU1RfSU5DTFVERSkgeworCQkJaW0tPnRvbWIgPSBwbWMt PnRvbWI7CisJCQlpbS0+c291cmNlcyA9IHBtYy0+c291cmNlczsKKwkJCWZvciAocHNmID0gaW0t PnNvdXJjZXM7IHBzZjsgcHNmID0gcHNmLT5zZl9uZXh0KQorCQkJCXBzZi0+c2ZfY3Jjb3VudCA9 IGltLT5jcmNvdW50OwogCQl9CiAJCWluX2Rldl9wdXQocG1jLT5pbnRlcmZhY2UpOwogCQlrZnJl ZShwbWMpOwogCX0KKwlzcGluX3VubG9ja19iaCgmaW0tPmxvY2spOwogfQogCisvKgorICogZmx1 c2ggaXBfbWNfbGlzdCBkZWxldGVkIHJlY29yZHMKKyAqLwogc3RhdGljIHZvaWQgaWdtcHYzX2Ns ZWFyX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiB7CiAJc3RydWN0IGlwX21jX2xp c3QgKnBtYywgKm5leHRwbWM7CkBAIC0xMzMwLDcgKzEzNTAsNyBAQCB2b2lkIGlwX21jX2luY19n cm91cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBhZGRyKQogCWlwX21jX2hhc2hf YWRkKGluX2RldiwgaW0pOwogCiAjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVAotCWlnbXB2M19k ZWxfZGVscmVjKGluX2RldiwgaW0tPm11bHRpYWRkcik7CisJaWdtcHYzX2RlbF9kZWxyZWMoaW5f ZGV2LCBpbSk7CiAjZW5kaWYKIAlpZ21wX2dyb3VwX2FkZGVkKGltKTsKIAlpZiAoIWluX2Rldi0+ ZGVhZCkKQEAgLTE0MjEsOCArMTQ0MSwxMiBAQCB2b2lkIGlwX21jX3JlbWFwKHN0cnVjdCBpbl9k ZXZpY2UgKmluX2RldikKIAogCUFTU0VSVF9SVE5MKCk7CiAKLQlmb3JfZWFjaF9wbWNfcnRubChp bl9kZXYsIHBtYykKKwlmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIHBtYykgeworI2lmZGVmIENP TkZJR19JUF9NVUxUSUNBU1QKKwkJaWdtcHYzX2RlbF9kZWxyZWMoaW5fZGV2LCBwbWMpOworI2Vu ZGlmCiAJCWlnbXBfZ3JvdXBfYWRkZWQocG1jKTsKKwl9CiB9CiAKIC8qIERldmljZSBnb2luZyBk b3duICovCkBAIC0xNDQzLDcgKzE0NjcsNiBAQCB2b2lkIGlwX21jX2Rvd24oc3RydWN0IGluX2Rl dmljZSAqaW5fZGV2KQogCWluX2Rldi0+bXJfZ3FfcnVubmluZyA9IDA7CiAJaWYgKGRlbF90aW1l cigmaW5fZGV2LT5tcl9ncV90aW1lcikpCiAJCV9faW5fZGV2X3B1dChpbl9kZXYpOwotCWlnbXB2 M19jbGVhcl9kZWxyZWMoaW5fZGV2KTsKICNlbmRpZgogCiAJaXBfbWNfZGVjX2dyb3VwKGluX2Rl diwgSUdNUF9BTExfSE9TVFMpOwpAQCAtMTQ3NCw4ICsxNDk3LDEyIEBAIHZvaWQgaXBfbWNfdXAo c3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogCiAJaXBfbWNfaW5jX2dyb3VwKGluX2RldiwgSUdN UF9BTExfSE9TVFMpOwogCi0JZm9yX2VhY2hfcG1jX3J0bmwoaW5fZGV2LCBwbWMpCisJZm9yX2Vh Y2hfcG1jX3J0bmwoaW5fZGV2LCBwbWMpIHsKKyNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUCisJ CWlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTsKKyNlbmRpZgogCQlpZ21wX2dyb3VwX2Fk ZGVkKHBtYyk7CisJfQogfQogCiAvKgpAQCAtMTQ5MCwxMyArMTUxNywxMyBAQCB2b2lkIGlwX21j X2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIAogCS8qIERlYWN0aXZhdGUg dGltZXJzICovCiAJaXBfbWNfZG93bihpbl9kZXYpOworI2lmZGVmIENPTkZJR19JUF9NVUxUSUNB U1QKKwlpZ21wdjNfY2xlYXJfZGVscmVjKGluX2Rldik7CisjZW5kaWYKIAogCXdoaWxlICgoaSA9 IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LT5tY19saXN0KSkgIT0gTlVMTCkgewogCQlpbl9kZXYt Pm1jX2xpc3QgPSBpLT5uZXh0X3JjdTsKIAkJaW5fZGV2LT5tY19jb3VudC0tOwotCi0JCS8qIFdl J3ZlIGRyb3BwZWQgdGhlIGdyb3VwcyBpbiBpcF9tY19kb3duIGFscmVhZHkgKi8KLQkJaXBfbWNf Y2xlYXJfc3JjKGkpOwogCQlpcF9tYV9wdXQoaSk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvbmV0L2lw djQvaXBtci5jIGIvbmV0L2lwdjQvaXBtci5jCmluZGV4IDY1YTI4NjIwMDA2Yy4uNjQzZWMwYmI4 MGE1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcG1yLmMKKysrIGIvbmV0L2lwdjQvaXBtci5jCkBA IC04ODMsOCArODgzLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgbWZjX2NhY2hlICppcG1yX2NhY2hlX2Fs bG9jKHZvaWQpCiB7CiAJc3RydWN0IG1mY19jYWNoZSAqYyA9IGttZW1fY2FjaGVfemFsbG9jKG1y dF9jYWNoZXAsIEdGUF9LRVJORUwpOwogCi0JaWYgKGMpCisJaWYgKGMpIHsKKwkJYy0+bWZjX3Vu LnJlcy5sYXN0X2Fzc2VydCA9IGppZmZpZXMgLSBNRkNfQVNTRVJUX1RIUkVTSCAtIDE7CiAJCWMt Pm1mY191bi5yZXMubWludmlmID0gTUFYVklGUzsKKwl9CiAJcmV0dXJuIGM7CiB9CiAKZGlmZiAt LWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9pcHRfcnBmaWx0ZXIuYyBiL25ldC9pcHY0L25ldGZp bHRlci9pcHRfcnBmaWx0ZXIuYwppbmRleCA2MGYyN2IxZTQ2ZjYuLmQwYjM4YWE1OGNhNyAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9ycGZpbHRlci5jCisrKyBiL25ldC9pcHY0 L25ldGZpbHRlci9pcHRfcnBmaWx0ZXIuYwpAQCAtNjQsMTAgKzY0LDEwIEBAIHN0YXRpYyBib29s IHJwZmlsdGVyX2xvb2t1cF9yZXZlcnNlKHN0cnVjdCBmbG93aTQgKmZsNCwKIAlyZXR1cm4gZGV2 X21hdGNoIHx8IGZsYWdzICYgWFRfUlBGSUxURVJfTE9PU0U7CiB9CiAKLXN0YXRpYyBib29sIHJw ZmlsdGVyX2lzX2xvY2FsKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCitzdGF0aWMgYm9vbAor cnBmaWx0ZXJfaXNfbG9vcGJhY2soY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3Ry dWN0IG5ldF9kZXZpY2UgKmluKQogewotCWNvbnN0IHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0 YWJsZShza2IpOwotCXJldHVybiBydCAmJiAocnQtPnJ0X2ZsYWdzICYgUlRDRl9MT0NBTCk7CisJ cmV0dXJuIHNrYi0+cGt0X3R5cGUgPT0gUEFDS0VUX0xPT1BCQUNLIHx8IGluLT5mbGFncyAmIElG Rl9MT09QQkFDSzsKIH0KIAogc3RhdGljIGJvb2wgcnBmaWx0ZXJfbXQoY29uc3Qgc3RydWN0IHNr X2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQpAQCAtODAsNyArODAsNyBA QCBzdGF0aWMgYm9vbCBycGZpbHRlcl9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJaW5mbyA9IHBhci0+bWF0Y2hpbmZvOwogCWludmVy dCA9IGluZm8tPmZsYWdzICYgWFRfUlBGSUxURVJfSU5WRVJUOwogCi0JaWYgKHJwZmlsdGVyX2lz X2xvY2FsKHNrYikpCisJaWYgKHJwZmlsdGVyX2lzX2xvb3BiYWNrKHNrYiwgcGFyLT5pbikpCiAJ CXJldHVybiB0cnVlIF4gaW52ZXJ0OwogCiAJaXBoID0gaXBfaGRyKHNrYik7CmRpZmYgLS1naXQg YS9uZXQvaXB2NC9waW5nLmMgYi9uZXQvaXB2NC9waW5nLmMKaW5kZXggMTgxZDVkZThiYTUyLi41 NzFkYWJmZTllZjMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3BpbmcuYworKysgYi9uZXQvaXB2NC9w aW5nLmMKQEAgLTY0Niw2ICs2NDYsOCBAQCBzdGF0aWMgaW50IHBpbmdfdjRfcHVzaF9wZW5kaW5n X2ZyYW1lcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwaW5nZmFrZWhkciAqcGZoLAogewogCXN0 cnVjdCBza19idWZmICpza2IgPSBza2JfcGVlaygmc2stPnNrX3dyaXRlX3F1ZXVlKTsKIAorCWlm ICghc2tiKQorCQlyZXR1cm4gMDsKIAlwZmgtPndjaGVjayA9IGNzdW1fcGFydGlhbCgoY2hhciAq KSZwZmgtPmljbXBoLAogCQlzaXplb2Yoc3RydWN0IGljbXBoZHIpLCBwZmgtPndjaGVjayk7CiAJ cGZoLT5pY21waC5jaGVja3N1bSA9IGNzdW1fZm9sZChwZmgtPndjaGVjayk7CmRpZmYgLS1naXQg YS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCA3Y2QzN2IwNGYzYTYu Ljc3YmY2YmRlMzhjYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYworKysgYi9uZXQvaXB2 NC9yb3V0ZS5jCkBAIC0xOTY4LDYgKzE5NjgsMTggQEAgc3RhdGljIHN0cnVjdCBydGFibGUgKl9f bWtyb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IGZpYl9yZXN1bHQgKnJlcywKIAkJICovCiAJCWlm IChmaSAmJiByZXMtPnByZWZpeGxlbiA8IDQpCiAJCQlmaSA9IE5VTEw7CisJfSBlbHNlIGlmICgo dHlwZSA9PSBSVE5fTE9DQUwpICYmIChvcmlnX29pZiAhPSAwKSAmJgorCQkgICAob3JpZ19vaWYg IT0gZGV2X291dC0+aWZpbmRleCkpIHsKKwkJLyogRm9yIGxvY2FsIHJvdXRlcyB0aGF0IHJlcXVp cmUgYSBwYXJ0aWN1bGFyIG91dHB1dCBpbnRlcmZhY2UKKwkJICogd2UgZG8gbm90IHdhbnQgdG8g Y2FjaGUgdGhlIHJlc3VsdC4gIENhY2hpbmcgdGhlIHJlc3VsdAorCQkgKiBjYXVzZXMgaW5jb3Jy ZWN0IGJlaGF2aW91ciB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzb3VyY2UKKwkJICogYWRkcmVz c2VzIG9uIHRoZSBpbnRlcmZhY2UsIHRoZSBlbmQgcmVzdWx0IGJlaW5nIHRoYXQgaWYgdGhlCisJ CSAqIGludGVuZGVkIHJlY2lwaWVudCBpcyB3YWl0aW5nIG9uIHRoYXQgaW50ZXJmYWNlIGZvciB0 aGUKKwkJICogcGFja2V0IGhlIHdvbid0IHJlY2VpdmUgaXQgYmVjYXVzZSBpdCB3aWxsIGJlIGRl bGl2ZXJlZCBvbgorCQkgKiB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlIGFuZCB0aGUgSVBfUEtUSU5G TyBpcGlfaWZpbmRleCB3aWxsCisJCSAqIGJlIHNldCB0byB0aGUgbG9vcGJhY2sgaW50ZXJmYWNl IGFzIHdlbGwuCisJCSAqLworCQlmaSA9IE5VTEw7CiAJfQogCiAJZm5oZSA9IE5VTEw7CmRpZmYg LS1naXQgYS9uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYyBiL25ldC9pcHY0L3RjcF9mYXN0b3Blbi5j CmluZGV4IDJiOTg2NTc2ZTVhZC4uMGIyM2M0ZWM2NTNmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90 Y3BfZmFzdG9wZW4uYworKysgYi9uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYwpAQCAtMTEyLDcgKzEx Miw3IEBAIHN0YXRpYyBib29sIHRjcF9mYXN0b3Blbl9jb29raWVfZ2VuKHN0cnVjdCByZXF1ZXN0 X3NvY2sgKnJlcSwKIAkJc3RydWN0IHRjcF9mYXN0b3Blbl9jb29raWUgdG1wOwogCiAJCWlmIChf X3RjcF9mYXN0b3Blbl9jb29raWVfZ2VuKCZpcDZoLT5zYWRkciwgJnRtcCkpIHsKLQkJCXN0cnVj dCBpbjZfYWRkciAqYnVmID0gKHN0cnVjdCBpbjZfYWRkciAqKSB0bXAudmFsOworCQkJc3RydWN0 IGluNl9hZGRyICpidWYgPSAmdG1wLmFkZHI7CiAJCQlpbnQgaSA9IDQ7CiAKIAkJCWZvciAoaSA9 IDA7IGkgPCA0OyBpKyspCkBAIC0xNjQsNiArMTY0LDcgQEAgc3RhdGljIGJvb2wgdGNwX2Zhc3Rv cGVuX2NyZWF0ZV9jaGlsZChzdHJ1Y3Qgc29jayAqc2ssCiAJICogc2NhbGVkLiBTbyBjb3JyZWN0 IGl0IGFwcHJvcHJpYXRlbHkuCiAJICovCiAJdHAtPnNuZF93bmQgPSBudG9ocyh0Y3BfaGRyKHNr YiktPndpbmRvdyk7CisJdHAtPm1heF93aW5kb3cgPSB0cC0+c25kX3duZDsKIAogCS8qIEFjdGl2 YXRlIHRoZSByZXRyYW5zIHRpbWVyIHNvIHRoYXQgU1lOQUNLIGNhbiBiZSByZXRyYW5zbWl0dGVk LgogCSAqIFRoZSByZXF1ZXN0IHNvY2tldCBpcyBub3QgYWRkZWQgdG8gdGhlIFNZTiB0YWJsZSBv ZiB0aGUgcGFyZW50CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2 NC90Y3Bfb3V0cHV0LmMKaW5kZXggOGI1YzQ1N2I0MGNkLi5mOGVlMmZjNDA0Y2QgMTAwNjQ0Ci0t LSBhL25ldC9pcHY0L3RjcF9vdXRwdXQuYworKysgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKQEAg LTE4MjEsMTIgKzE4MjEsMTQgQEAgc3RhdGljIGludCB0Y3BfbXR1X3Byb2JlKHN0cnVjdCBzb2Nr ICpzaykKIAlsZW4gPSAwOwogCXRjcF9mb3Jfd3JpdGVfcXVldWVfZnJvbV9zYWZlKHNrYiwgbmV4 dCwgc2spIHsKIAkJY29weSA9IG1pbl90KGludCwgc2tiLT5sZW4sIHByb2JlX3NpemUgLSBsZW4p OwotCQlpZiAobnNrYi0+aXBfc3VtbWVkKQorCQlpZiAobnNrYi0+aXBfc3VtbWVkKSB7CiAJCQlz a2JfY29weV9iaXRzKHNrYiwgMCwgc2tiX3B1dChuc2tiLCBjb3B5KSwgY29weSk7Ci0JCWVsc2UK LQkJCW5za2ItPmNzdW0gPSBza2JfY29weV9hbmRfY3N1bV9iaXRzKHNrYiwgMCwKLQkJCQkJCQkg ICAgc2tiX3B1dChuc2tiLCBjb3B5KSwKLQkJCQkJCQkgICAgY29weSwgbnNrYi0+Y3N1bSk7CisJ CX0gZWxzZSB7CisJCQlfX3dzdW0gY3N1bSA9IHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoc2tiLCAw LAorCQkJCQkJCSAgICAgc2tiX3B1dChuc2tiLCBjb3B5KSwKKwkJCQkJCQkgICAgIGNvcHksIDAp OworCQkJbnNrYi0+Y3N1bSA9IGNzdW1fYmxvY2tfYWRkKG5za2ItPmNzdW0sIGNzdW0sIGxlbik7 CisJCX0KIAogCQlpZiAoc2tiLT5sZW4gPD0gY29weSkgewogCQkJLyogV2UndmUgZWF0ZW4gYWxs IHRoZSBkYXRhIGZyb20gdGhpcyBza2IuCkBAIC0yMjQ5LDkgKzIyNTEsMTEgQEAgdTMyIF9fdGNw X3NlbGVjdF93aW5kb3coc3RydWN0IHNvY2sgKnNrKQogCWludCBmdWxsX3NwYWNlID0gbWluX3Qo aW50LCB0cC0+d2luZG93X2NsYW1wLCBhbGxvd2VkX3NwYWNlKTsKIAlpbnQgd2luZG93OwogCi0J aWYgKG1zcyA+IGZ1bGxfc3BhY2UpCisJaWYgKHVubGlrZWx5KG1zcyA+IGZ1bGxfc3BhY2UpKSB7 CiAJCW1zcyA9IGZ1bGxfc3BhY2U7Ci0KKwkJaWYgKG1zcyA8PSAwKQorCQkJcmV0dXJuIDA7CisJ fQogCWlmIChmcmVlX3NwYWNlIDwgKGZ1bGxfc3BhY2UgPj4gMSkpIHsKIAkJaWNzay0+aWNza19h Y2sucXVpY2sgPSAwOwogCkBAIC0yNDM3LDcgKzI0NDEsOCBAQCBpbnQgX190Y3BfcmV0cmFuc21p dF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIGNvcHlpbmcg b3ZlcmhlYWQ6IGZyYWdtZW50YXRpb24sIHR1bm5lbGluZywgbWFuZ2xpbmcgZXRjLgogCSAqLwog CWlmIChhdG9taWNfcmVhZCgmc2stPnNrX3dtZW1fYWxsb2MpID4KLQkgICAgbWluKHNrLT5za193 bWVtX3F1ZXVlZCArIChzay0+c2tfd21lbV9xdWV1ZWQgPj4gMiksIHNrLT5za19zbmRidWYpKQor CSAgICBtaW5fdCh1MzIsIHNrLT5za193bWVtX3F1ZXVlZCArIChzay0+c2tfd21lbV9xdWV1ZWQg Pj4gMiksCisJCSAgc2stPnNrX3NuZGJ1ZikpCiAJCXJldHVybiAtRUFHQUlOOwogCiAJaWYgKHNr Yl9zdGlsbF9pbl9ob3N0X3F1ZXVlKHNrLCBza2IpKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRw LmMgYi9uZXQvaXB2NC91ZHAuYwppbmRleCA3MTY0NzVmYzg4NGIuLjU5ZGRhYjFmY2UyOCAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvdWRwLmMKKysrIGIvbmV0L2lwdjQvdWRwLmMKQEAgLTE1MzMsNyAr MTUzMyw3IEBAIGludCB1ZHBfcXVldWVfcmN2X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBz a19idWZmICpza2IpCiAKIAkJLyogaWYgd2UncmUgb3Zlcmx5IHNob3J0LCBsZXQgVURQIGhhbmRs ZSBpdCAqLwogCQllbmNhcF9yY3YgPSBBQ0NFU1NfT05DRSh1cC0+ZW5jYXBfcmN2KTsKLQkJaWYg KHNrYi0+bGVuID4gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpICYmIGVuY2FwX3JjdiAhPSBOVUxMKSB7 CisJCWlmIChlbmNhcF9yY3YpIHsKIAkJCWludCByZXQ7CiAKIAkJCS8qIFZlcmlmeSBjaGVja3N1 bSBiZWZvcmUgZ2l2aW5nIHRvIGVuY2FwICovCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZGRyY29u Zi5jIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCAwMTFhNGM3MTBjOTQuLmNkMTJiNjNmYWYx MCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29u Zi5jCkBAIC00ODM3LDggKzQ4MzcsNyBAQCBzdGF0aWMgdm9pZCBhZGRyY29uZl9kaXNhYmxlX2No YW5nZShzdHJ1Y3QgbmV0ICpuZXQsIF9fczMyIG5ld2YpCiAJc3RydWN0IG5ldF9kZXZpY2UgKmRl djsKIAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2OwogCi0JcmN1X3JlYWRfbG9jaygpOwotCWZvcl9l YWNoX25ldGRldl9yY3UobmV0LCBkZXYpIHsKKwlmb3JfZWFjaF9uZXRkZXYobmV0LCBkZXYpIHsK IAkJaWRldiA9IF9faW42X2Rldl9nZXQoZGV2KTsKIAkJaWYgKGlkZXYpIHsKIAkJCWludCBjaGFu Z2VkID0gKCFpZGV2LT5jbmYuZGlzYWJsZV9pcHY2KSBeICghbmV3Zik7CkBAIC00ODQ3LDcgKzQ4 NDYsNiBAQCBzdGF0aWMgdm9pZCBhZGRyY29uZl9kaXNhYmxlX2NoYW5nZShzdHJ1Y3QgbmV0ICpu ZXQsIF9fczMyIG5ld2YpCiAJCQkJZGV2X2Rpc2FibGVfY2hhbmdlKGlkZXYpOwogCQl9CiAJfQot CXJjdV9yZWFkX3VubG9jaygpOwogfQogCiBzdGF0aWMgaW50IGFkZHJjb25mX2Rpc2FibGVfaXB2 NihzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50ICpwLCBpbnQgbmV3ZikKZGlmZiAtLWdpdCBh L25ldC9pcHY2L2lwNl9ncmUuYyBiL25ldC9pcHY2L2lwNl9ncmUuYwppbmRleCA0MmRkN2MwYzQy ODMuLmYyMDRlZmQyMWY1MCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jCisrKyBiL25l dC9pcHY2L2lwNl9ncmUuYwpAQCAtODE5LDYgKzgxOSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlw NmdyZV94bWl0X2lwdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRl dikKIAkJcmV0dXJuIC0xOwogCiAJb2Zmc2V0ID0gaXA2X3RubF9wYXJzZV90bHZfZW5jX2xpbShz a2IsIHNrYl9uZXR3b3JrX2hlYWRlcihza2IpKTsKKwkvKiBpcDZfdG5sX3BhcnNlX3Rsdl9lbmNf bGltKCkgbWlnaHQgaGF2ZSByZWFsbG9jYXRlZCBza2ItPmhlYWQgKi8KKwlpcHY2aCA9IGlwdjZf aGRyKHNrYik7CisKIAlpZiAob2Zmc2V0ID4gMCkgewogCQlzdHJ1Y3QgaXB2Nl90bHZfdG5sX2Vu Y19saW0gKnRlbDsKIAkJdGVsID0gKHN0cnVjdCBpcHY2X3Rsdl90bmxfZW5jX2xpbSAqKSZza2Jf bmV0d29ya19oZWFkZXIoc2tiKVtvZmZzZXRdOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X29m ZmxvYWQuYyBiL25ldC9pcHY2L2lwNl9vZmZsb2FkLmMKaW5kZXggZWY1OTBkNGUwMTcxLi5mOTg3 ZThhMTI4MmIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9vZmZsb2FkLmMKKysrIGIvbmV0L2lw djYvaXA2X29mZmxvYWQuYwpAQCAtMjE5LDYgKzIxOSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVm ZiAqKmlwdjZfZ3JvX3JlY2VpdmUoc3RydWN0IHNrX2J1ZmYgKipoZWFkLAogCW9wcyA9IHJjdV9k ZXJlZmVyZW5jZShpbmV0Nl9vZmZsb2Fkc1twcm90b10pOwogCWlmICghb3BzIHx8ICFvcHMtPmNh bGxiYWNrcy5ncm9fcmVjZWl2ZSkgewogCQlfX3Bza2JfcHVsbChza2IsIHNrYl9ncm9fb2Zmc2V0 KHNrYikpOworCQlza2JfZ3JvX2ZyYWcwX2ludmFsaWRhdGUoc2tiKTsKIAkJcHJvdG8gPSBpcHY2 X2dzb19wdWxsX2V4dGhkcnMoc2tiLCBwcm90byk7CiAJCXNrYl9ncm9fcHVsbChza2IsIC1za2Jf dHJhbnNwb3J0X29mZnNldChza2IpKTsKIAkJc2tiX3Jlc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2ti KTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRw dXQuYwppbmRleCBjZGQwYmM3OTM4M2EuLjcwNDZhZjI1ZDZiZSAxMDA2NDQKLS0tIGEvbmV0L2lw djYvaXA2X291dHB1dC5jCisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtMTAzMSwxNyAr MTAzMSwxMiBAQCBzdHJ1Y3QgZHN0X2VudHJ5ICppcDZfc2tfZHN0X2xvb2t1cF9mbG93KHN0cnVj dCBzb2NrICpzaywgc3RydWN0IGZsb3dpNiAqZmw2LAogCQkJCQkgY29uc3Qgc3RydWN0IGluNl9h ZGRyICpmaW5hbF9kc3QpCiB7CiAJc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tfZHN0X2NoZWNr KHNrLCBpbmV0Nl9zayhzayktPmRzdF9jb29raWUpOwotCWludCBlcnI7CiAKIAlkc3QgPSBpcDZf c2tfZHN0X2NoZWNrKHNrLCBkc3QsIGZsNik7CisJaWYgKCFkc3QpCisJCWRzdCA9IGlwNl9kc3Rf bG9va3VwX2Zsb3coc2ssIGZsNiwgZmluYWxfZHN0KTsKIAotCWVyciA9IGlwNl9kc3RfbG9va3Vw X3RhaWwoc2ssICZkc3QsIGZsNik7Ci0JaWYgKGVycikKLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsK LQlpZiAoZmluYWxfZHN0KQotCQlmbDYtPmRhZGRyID0gKmZpbmFsX2RzdDsKLQotCXJldHVybiB4 ZnJtX2xvb2t1cF9yb3V0ZShzb2NrX25ldChzayksIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiks IHNrLCAwKTsKKwlyZXR1cm4gZHN0OwogfQogRVhQT1JUX1NZTUJPTF9HUEwoaXA2X3NrX2RzdF9s b29rdXBfZmxvdyk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl90dW5uZWwuYyBiL25ldC9p cHY2L2lwNl90dW5uZWwuYwppbmRleCBlOTM5OWU1YzE3MDkuLjI4NzllYjlhNjA0OSAxMDA2NDQK LS0tIGEvbmV0L2lwdjYvaXA2X3R1bm5lbC5jCisrKyBiL25ldC9pcHY2L2lwNl90dW5uZWwuYwpA QCAtNDAyLDE4ICs0MDIsMTkgQEAgaXA2X3RubF9kZXZfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYpCiAKIF9fdTE2IGlwNl90bmxfcGFyc2VfdGx2X2VuY19saW0oc3RydWN0IHNrX2J1ZmYg KnNrYiwgX191OCAqcmF3KQogewotCWNvbnN0IHN0cnVjdCBpcHY2aGRyICppcHY2aCA9IChjb25z dCBzdHJ1Y3QgaXB2NmhkciAqKSByYXc7Ci0JX191OCBuZXh0aGRyID0gaXB2NmgtPm5leHRoZHI7 Ci0JX191MTYgb2ZmID0gc2l6ZW9mICgqaXB2NmgpOworCWNvbnN0IHN0cnVjdCBpcHY2aGRyICpp cHY2aCA9IChjb25zdCBzdHJ1Y3QgaXB2NmhkciAqKXJhdzsKKwl1bnNpZ25lZCBpbnQgbmhvZmYg PSByYXcgLSBza2ItPmRhdGE7CisJdW5zaWduZWQgaW50IG9mZiA9IG5ob2ZmICsgc2l6ZW9mKCpp cHY2aCk7CisJdTggbmV4dCwgbmV4dGhkciA9IGlwdjZoLT5uZXh0aGRyOwogCiAJd2hpbGUgKGlw djZfZXh0X2hkcihuZXh0aGRyKSAmJiBuZXh0aGRyICE9IE5FWFRIRFJfTk9ORSkgewotCQlfX3Ux NiBvcHRsZW4gPSAwOwogCQlzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpoZHI7Ci0JCWlmIChyYXcgKyBv ZmYgKyBzaXplb2YgKCpoZHIpID4gc2tiLT5kYXRhICYmCi0JCSAgICAhcHNrYl9tYXlfcHVsbChz a2IsIHJhdyAtIHNrYi0+ZGF0YSArIG9mZiArIHNpemVvZiAoKmhkcikpKQorCQl1MTYgb3B0bGVu OworCisJCWlmICghcHNrYl9tYXlfcHVsbChza2IsIG9mZiArIHNpemVvZigqaGRyKSkpCiAJCQli cmVhazsKIAotCQloZHIgPSAoc3RydWN0IGlwdjZfb3B0X2hkciAqKSAocmF3ICsgb2ZmKTsKKwkJ aGRyID0gKHN0cnVjdCBpcHY2X29wdF9oZHIgKikoc2tiLT5kYXRhICsgb2ZmKTsKIAkJaWYgKG5l eHRoZHIgPT0gTkVYVEhEUl9GUkFHTUVOVCkgewogCQkJc3RydWN0IGZyYWdfaGRyICpmcmFnX2hk ciA9IChzdHJ1Y3QgZnJhZ19oZHIgKikgaGRyOwogCQkJaWYgKGZyYWdfaGRyLT5mcmFnX29mZikK QEAgLTQyNCwyMCArNDI1LDI5IEBAIF9fdTE2IGlwNl90bmxfcGFyc2VfdGx2X2VuY19saW0oc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgX191OCAqcmF3KQogCQl9IGVsc2UgewogCQkJb3B0bGVuID0gaXB2 Nl9vcHRsZW4oaGRyKTsKIAkJfQorCQkvKiBjYWNoZSBoZHItPm5leHRoZHIsIHNpbmNlIHBza2Jf bWF5X3B1bGwoKSBtaWdodAorCQkgKiBpbnZhbGlkYXRlIGhkcgorCQkgKi8KKwkJbmV4dCA9IGhk ci0+bmV4dGhkcjsKIAkJaWYgKG5leHRoZHIgPT0gTkVYVEhEUl9ERVNUKSB7Ci0JCQlfX3UxNiBp ID0gb2ZmICsgMjsKKwkJCXUxNiBpID0gMjsKKworCQkJLyogUmVtZW1iZXIgOiBoZHIgaXMgbm8g bG9uZ2VyIHZhbGlkIGF0IHRoaXMgcG9pbnQuICovCisJCQlpZiAoIXBza2JfbWF5X3B1bGwoc2ti LCBvZmYgKyBvcHRsZW4pKQorCQkJCWJyZWFrOworCiAJCQl3aGlsZSAoMSkgewogCQkJCXN0cnVj dCBpcHY2X3Rsdl90bmxfZW5jX2xpbSAqdGVsOwogCiAJCQkJLyogTm8gbW9yZSByb29tIGZvciBl bmNhcHN1bGF0aW9uIGxpbWl0ICovCi0JCQkJaWYgKGkgKyBzaXplb2YgKCp0ZWwpID4gb2ZmICsg b3B0bGVuKQorCQkJCWlmIChpICsgc2l6ZW9mKCp0ZWwpID4gb3B0bGVuKQogCQkJCQlicmVhazsK IAotCQkJCXRlbCA9IChzdHJ1Y3QgaXB2Nl90bHZfdG5sX2VuY19saW0gKikgJnJhd1tpXTsKKwkJ CQl0ZWwgPSAoc3RydWN0IGlwdjZfdGx2X3RubF9lbmNfbGltICopKHNrYi0+ZGF0YSArIG9mZiAr IGkpOwogCQkJCS8qIHJldHVybiBpbmRleCBvZiBvcHRpb24gaWYgZm91bmQgYW5kIHZhbGlkICov CiAJCQkJaWYgKHRlbC0+dHlwZSA9PSBJUFY2X1RMVl9UTkxfRU5DQVBfTElNSVQgJiYKIAkJCQkg ICAgdGVsLT5sZW5ndGggPT0gMSkKLQkJCQkJcmV0dXJuIGk7CisJCQkJCXJldHVybiBpICsgb2Zm IC0gbmhvZmY7CiAJCQkJLyogZWxzZSBqdW1wIHRvIG5leHQgb3B0aW9uICovCiAJCQkJaWYgKHRl bC0+dHlwZSkKIAkJCQkJaSArPSB0ZWwtPmxlbmd0aCArIDI7CkBAIC00NDUsNyArNDU1LDcgQEAg X191MTYgaXA2X3RubF9wYXJzZV90bHZfZW5jX2xpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3U4 ICpyYXcpCiAJCQkJCWkrKzsKIAkJCX0KIAkJfQotCQluZXh0aGRyID0gaGRyLT5uZXh0aGRyOwor CQluZXh0aGRyID0gbmV4dDsKIAkJb2ZmICs9IG9wdGxlbjsKIAl9CiAJcmV0dXJuIDA7CkBAIC05 NTgsMTIgKzk2OCwyMSBAQCBzdGF0aWMgaW50IGlwNl90bmxfeG1pdDIoc3RydWN0IHNrX2J1ZmYg KnNrYiwKIAlzdHJ1Y3QgaXB2Nl90ZWxfdHhvcHRpb24gb3B0OwogCXN0cnVjdCBkc3RfZW50cnkg KmRzdCA9IE5VTEwsICpuZHN0ID0gTlVMTDsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqdGRldjsKKwli b29sIHVzZV9jYWNoZSA9IGZhbHNlOwogCWludCBtdHU7CiAJdW5zaWduZWQgaW50IG1heF9oZWFk cm9vbSA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7CiAJdTggcHJvdG87CiAJaW50IGVyciA9IC0x OwogCi0JaWYgKCFmbDYtPmZsb3dpNl9tYXJrKQorCWlmICghKHQtPnBhcm1zLmZsYWdzICYKKwkJ ICAgICAoSVA2X1ROTF9GX1VTRV9PUklHX1RDTEFTUyB8IElQNl9UTkxfRl9VU0VfT1JJR19GV01B UkspKSkgeworCQkvKiBlbmFibGUgdGhlIGNhY2hlIG9ubHkgb25seSBpZiB0aGUgcm91dGluZyBk ZWNpc2lvbiBkb2VzCisJCSAqIG5vdCBkZXBlbmQgb24gdGhlIGN1cnJlbnQgaW5uZXIgaGVhZGVy IHZhbHVlCisJCSAqLworCQl1c2VfY2FjaGUgPSB0cnVlOworCX0KKworCWlmICh1c2VfY2FjaGUp CiAJCWRzdCA9IGlwNl90bmxfZHN0X2NoZWNrKHQpOwogCWlmICghZHN0KSB7CiAJCW5kc3QgPSBp cDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgZmw2KTsKQEAgLTEwMjEsNyArMTA0MCw3IEBAIHN0 YXRpYyBpbnQgaXA2X3RubF94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQljb25zdW1lX3Nr Yihza2IpOwogCQlza2IgPSBuZXdfc2tiOwogCX0KLQlpZiAoZmw2LT5mbG93aTZfbWFyaykgewor CWlmICghdXNlX2NhY2hlKSB7CiAJCXNrYl9kc3Rfc2V0KHNrYiwgZHN0KTsKIAkJbmRzdCA9IE5V TEw7CiAJfSBlbHNlIHsKQEAgLTExMTgsNiArMTEzNyw4IEBAIGlwNmlwNl90bmxfeG1pdChzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlyZXR1cm4gLTE7CiAK IAlvZmZzZXQgPSBpcDZfdG5sX3BhcnNlX3Rsdl9lbmNfbGltKHNrYiwgc2tiX25ldHdvcmtfaGVh ZGVyKHNrYikpOworCS8qIGlwNl90bmxfcGFyc2VfdGx2X2VuY19saW0oKSBtaWdodCBoYXZlIHJl YWxsb2NhdGVkIHNrYi0+aGVhZCAqLworCWlwdjZoID0gaXB2Nl9oZHIoc2tiKTsKIAlpZiAob2Zm c2V0ID4gMCkgewogCQlzdHJ1Y3QgaXB2Nl90bHZfdG5sX2VuY19saW0gKnRlbDsKIAkJdGVsID0g KHN0cnVjdCBpcHY2X3Rsdl90bmxfZW5jX2xpbSAqKSZza2JfbmV0d29ya19oZWFkZXIoc2tiKVtv ZmZzZXRdOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2bXIuYyBiL25ldC9pcHY2L2lwNm1yLmMK aW5kZXggMTcwNDlmODFjNzUwLi42ZDJmN2JlNjVmNGYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lw Nm1yLmMKKysrIGIvbmV0L2lwdjYvaXA2bXIuYwpAQCAtMTA3Niw2ICsxMDc2LDcgQEAgc3RhdGlj IHN0cnVjdCBtZmM2X2NhY2hlICppcDZtcl9jYWNoZV9hbGxvYyh2b2lkKQogCXN0cnVjdCBtZmM2 X2NhY2hlICpjID0ga21lbV9jYWNoZV96YWxsb2MobXJ0X2NhY2hlcCwgR0ZQX0tFUk5FTCk7CiAJ aWYgKGMgPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7CisJYy0+bWZjX3VuLnJlcy5sYXN0X2Fzc2Vy dCA9IGppZmZpZXMgLSBNRkNfQVNTRVJUX1RIUkVTSCAtIDE7CiAJYy0+bWZjX3VuLnJlcy5taW52 aWYgPSBNQVhNSUZTOwogCXJldHVybiBjOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbWNhc3Qu YyBiL25ldC9pcHY2L21jYXN0LmMKaW5kZXggYWQ4NGU3ZGVjNDMzLi4yMzU3NWEwYWM2ZjkgMTAw NjQ0Ci0tLSBhL25ldC9pcHY2L21jYXN0LmMKKysrIGIvbmV0L2lwdjYvbWNhc3QuYwpAQCAtOTMs NyArOTMsNyBAQCBzdGF0aWMgdm9pZCBtbGRfZ3FfdGltZXJfZXhwaXJlKHVuc2lnbmVkIGxvbmcg ZGF0YSk7CiBzdGF0aWMgdm9pZCBtbGRfaWZjX3RpbWVyX2V4cGlyZSh1bnNpZ25lZCBsb25nIGRh dGEpOwogc3RhdGljIHZvaWQgbWxkX2lmY19ldmVudChzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KTsK IHN0YXRpYyB2b2lkIG1sZF9hZGRfZGVscmVjKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHN0cnVj dCBpZm1jYWRkcjYgKnBtYyk7Ci1zdGF0aWMgdm9pZCBtbGRfZGVsX2RlbHJlYyhzdHJ1Y3QgaW5l dDZfZGV2ICppZGV2LCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIpOworc3RhdGljIHZvaWQg bWxkX2RlbF9kZWxyZWMoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGlmbWNhZGRyNiAq cG1jKTsKIHN0YXRpYyB2b2lkIG1sZF9jbGVhcl9kZWxyZWMoc3RydWN0IGluZXQ2X2RldiAqaWRl dik7CiBzdGF0aWMgYm9vbCBtbGRfaW5fdjFfbW9kZShjb25zdCBzdHJ1Y3QgaW5ldDZfZGV2ICpp ZGV2KTsKIHN0YXRpYyBpbnQgc2Zfc2V0c3RhdGUoc3RydWN0IGlmbWNhZGRyNiAqcG1jKTsKQEAg LTcyNyw5ICs3MjcsOSBAQCBzdGF0aWMgdm9pZCBpZ21wNl9ncm91cF9kcm9wcGVkKHN0cnVjdCBp Zm1jYWRkcjYgKm1jKQogCQkJZGV2X21jX2RlbChkZXYsIGJ1Zik7CiAJfQogCi0JaWYgKG1jLT5t Y2FfZmxhZ3MgJiBNQUZfTk9SRVBPUlQpCi0JCWdvdG8gZG9uZTsKIAlzcGluX3VubG9ja19iaCgm bWMtPm1jYV9sb2NrKTsKKwlpZiAobWMtPm1jYV9mbGFncyAmIE1BRl9OT1JFUE9SVCkKKwkJcmV0 dXJuOwogCiAJaWYgKCFtYy0+aWRldi0+ZGVhZCkKIAkJaWdtcDZfbGVhdmVfZ3JvdXAobWMpOwpA QCAtNzM3LDggKzczNyw2IEBAIHN0YXRpYyB2b2lkIGlnbXA2X2dyb3VwX2Ryb3BwZWQoc3RydWN0 IGlmbWNhZGRyNiAqbWMpCiAJc3Bpbl9sb2NrX2JoKCZtYy0+bWNhX2xvY2spOwogCWlmIChkZWxf dGltZXIoJm1jLT5tY2FfdGltZXIpKQogCQlhdG9taWNfZGVjKCZtYy0+bWNhX3JlZmNudCk7Ci1k b25lOgotCWlwNl9tY19jbGVhcl9zcmMobWMpOwogCXNwaW5fdW5sb2NrX2JoKCZtYy0+bWNhX2xv Y2spOwogfQogCkBAIC03ODMsMTAgKzc4MSwxMSBAQCBzdGF0aWMgdm9pZCBtbGRfYWRkX2RlbHJl YyhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaWZtY2FkZHI2ICppbSkKIAlzcGluX3Vu bG9ja19iaCgmaWRldi0+bWNfbG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIG1sZF9kZWxfZGVscmVj KHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqcG1jYSkKK3N0 YXRpYyB2b2lkIG1sZF9kZWxfZGVscmVjKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHN0cnVjdCBp Zm1jYWRkcjYgKmltKQogewogCXN0cnVjdCBpZm1jYWRkcjYgKnBtYywgKnBtY19wcmV2OwotCXN0 cnVjdCBpcDZfc2ZfbGlzdCAqcHNmLCAqcHNmX25leHQ7CisJc3RydWN0IGlwNl9zZl9saXN0ICpw c2Y7CisJc3RydWN0IGluNl9hZGRyICpwbWNhID0gJmltLT5tY2FfYWRkcjsKIAogCXNwaW5fbG9j a19iaCgmaWRldi0+bWNfbG9jayk7CiAJcG1jX3ByZXYgPSBOVUxMOwpAQCAtODAzLDE0ICs4MDIs MjEgQEAgc3RhdGljIHZvaWQgbWxkX2RlbF9kZWxyZWMoc3RydWN0IGluZXQ2X2RldiAqaWRldiwg Y29uc3Qgc3RydWN0IGluNl9hZGRyICpwbWNhKQogCX0KIAlzcGluX3VubG9ja19iaCgmaWRldi0+ bWNfbG9jayk7CiAKKwlzcGluX2xvY2tfYmgoJmltLT5tY2FfbG9jayk7CiAJaWYgKHBtYykgewot CQlmb3IgKHBzZj1wbWMtPm1jYV90b21iOyBwc2Y7IHBzZj1wc2ZfbmV4dCkgewotCQkJcHNmX25l eHQgPSBwc2YtPnNmX25leHQ7Ci0JCQlrZnJlZShwc2YpOworCQlpbS0+aWRldiA9IHBtYy0+aWRl djsKKwkJaW0tPm1jYV9jcmNvdW50ID0gaWRldi0+bWNfcXJ2OworCQlpbS0+bWNhX3NmbW9kZSA9 IHBtYy0+bWNhX3NmbW9kZTsKKwkJaWYgKHBtYy0+bWNhX3NmbW9kZSA9PSBNQ0FTVF9JTkNMVURF KSB7CisJCQlpbS0+bWNhX3RvbWIgPSBwbWMtPm1jYV90b21iOworCQkJaW0tPm1jYV9zb3VyY2Vz ID0gcG1jLT5tY2Ffc291cmNlczsKKwkJCWZvciAocHNmID0gaW0tPm1jYV9zb3VyY2VzOyBwc2Y7 IHBzZiA9IHBzZi0+c2ZfbmV4dCkKKwkJCQlwc2YtPnNmX2NyY291bnQgPSBpbS0+bWNhX2NyY291 bnQ7CiAJCX0KIAkJaW42X2Rldl9wdXQocG1jLT5pZGV2KTsKIAkJa2ZyZWUocG1jKTsKIAl9CisJ c3Bpbl91bmxvY2tfYmgoJmltLT5tY2FfbG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIG1sZF9jbGVh cl9kZWxyZWMoc3RydWN0IGluZXQ2X2RldiAqaWRldikKQEAgLTkxNSw3ICs5MjEsNyBAQCBpbnQg aXB2Nl9kZXZfbWNfaW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBpbjZf YWRkciAqYWRkcikKIAlpZGV2LT5tY19saXN0ID0gbWM7CiAJd3JpdGVfdW5sb2NrX2JoKCZpZGV2 LT5sb2NrKTsKIAotCW1sZF9kZWxfZGVscmVjKGlkZXYsICZtYy0+bWNhX2FkZHIpOworCW1sZF9k ZWxfZGVscmVjKGlkZXYsIG1jKTsKIAlpZ21wNl9ncm91cF9hZGRlZChtYyk7CiAJbWFfcHV0KG1j KTsKIAlyZXR1cm4gMDsKQEAgLTkzOCw2ICs5NDQsNyBAQCBpbnQgX19pcHY2X2Rldl9tY19kZWMo c3RydWN0IGluZXQ2X2RldiAqaWRldiwgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyKQogCQkJ CXdyaXRlX3VubG9ja19iaCgmaWRldi0+bG9jayk7CiAKIAkJCQlpZ21wNl9ncm91cF9kcm9wcGVk KG1hKTsKKwkJCQlpcDZfbWNfY2xlYXJfc3JjKG1hKTsKIAogCQkJCW1hX3B1dChtYSk7CiAJCQkJ cmV0dXJuIDA7CkBAIC0yNDc5LDE1ICsyNDg2LDE3IEBAIHZvaWQgaXB2Nl9tY19kb3duKHN0cnVj dCBpbmV0Nl9kZXYgKmlkZXYpCiAJLyogV2l0aGRyYXcgbXVsdGljYXN0IGxpc3QgKi8KIAogCXJl YWRfbG9ja19iaCgmaWRldi0+bG9jayk7Ci0JbWxkX2lmY19zdG9wX3RpbWVyKGlkZXYpOwotCW1s ZF9ncV9zdG9wX3RpbWVyKGlkZXYpOwotCW1sZF9kYWRfc3RvcF90aW1lcihpZGV2KTsKIAogCWZv ciAoaSA9IGlkZXYtPm1jX2xpc3Q7IGk7IGk9aS0+bmV4dCkKIAkJaWdtcDZfZ3JvdXBfZHJvcHBl ZChpKTsKLQlyZWFkX3VubG9ja19iaCgmaWRldi0+bG9jayk7CiAKLQltbGRfY2xlYXJfZGVscmVj KGlkZXYpOworCS8qIFNob3VsZCBzdG9wIHRpbWVyIGFmdGVyIGdyb3VwIGRyb3AuIG9yIHdlIHdp bGwKKwkgKiBzdGFydCB0aW1lciBhZ2FpbiBpbiBtbGRfaWZjX2V2ZW50KCkKKwkgKi8KKwltbGRf aWZjX3N0b3BfdGltZXIoaWRldik7CisJbWxkX2dxX3N0b3BfdGltZXIoaWRldik7CisJbWxkX2Rh ZF9zdG9wX3RpbWVyKGlkZXYpOworCXJlYWRfdW5sb2NrX2JoKCZpZGV2LT5sb2NrKTsKIH0KIAog CkBAIC0yNTAwLDggKzI1MDksMTAgQEAgdm9pZCBpcHY2X21jX3VwKHN0cnVjdCBpbmV0Nl9kZXYg KmlkZXYpCiAJLyogSW5zdGFsbCBtdWx0aWNhc3QgbGlzdCwgZXhjZXB0IGZvciBhbGwtbm9kZXMg KGFscmVhZHkgaW5zdGFsbGVkKSAqLwogCiAJcmVhZF9sb2NrX2JoKCZpZGV2LT5sb2NrKTsKLQlm b3IgKGkgPSBpZGV2LT5tY19saXN0OyBpOyBpPWktPm5leHQpCisJZm9yIChpID0gaWRldi0+bWNf bGlzdDsgaTsgaSA9IGktPm5leHQpIHsKKwkJbWxkX2RlbF9kZWxyZWMoaWRldiwgaSk7CiAJCWln bXA2X2dyb3VwX2FkZGVkKGkpOworCX0KIAlyZWFkX3VubG9ja19iaCgmaWRldi0+bG9jayk7CiB9 CiAKQEAgLTI1NDAsNiArMjU1MSw3IEBAIHZvaWQgaXB2Nl9tY19kZXN0cm95X2RldihzdHJ1Y3Qg aW5ldDZfZGV2ICppZGV2KQogCiAJLyogRGVhY3RpdmF0ZSB0aW1lcnMgKi8KIAlpcHY2X21jX2Rv d24oaWRldik7CisJbWxkX2NsZWFyX2RlbHJlYyhpZGV2KTsKIAogCS8qIERlbGV0ZSBhbGwtbm9k ZXMgYWRkcmVzcy4gKi8KIAkvKiBXZSBjYW5ub3QgY2FsbCBpcHY2X2Rldl9tY19kZWMoKSBkaXJl Y3RseSwgb3VyIGNhbGxlciBpbgpAQCAtMjU1NCwxMSArMjU2Niw5IEBAIHZvaWQgaXB2Nl9tY19k ZXN0cm95X2RldihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQogCXdyaXRlX2xvY2tfYmgoJmlkZXYt PmxvY2spOwogCXdoaWxlICgoaSA9IGlkZXYtPm1jX2xpc3QpICE9IE5VTEwpIHsKIAkJaWRldi0+ bWNfbGlzdCA9IGktPm5leHQ7Ci0JCXdyaXRlX3VubG9ja19iaCgmaWRldi0+bG9jayk7CiAKLQkJ aWdtcDZfZ3JvdXBfZHJvcHBlZChpKTsKKwkJd3JpdGVfdW5sb2NrX2JoKCZpZGV2LT5sb2NrKTsK IAkJbWFfcHV0KGkpOwotCiAJCXdyaXRlX2xvY2tfYmgoJmlkZXYtPmxvY2spOwogCX0KIAl3cml0 ZV91bmxvY2tfYmgoJmlkZXYtPmxvY2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVy L2lwNnRfcnBmaWx0ZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3JwZmlsdGVyLmMKaW5k ZXggNzkwZTBjNmIxOWUxLi5hOGFmNjkzYjcxN2QgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZp bHRlci9pcDZ0X3JwZmlsdGVyLmMKKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnBmaWx0 ZXIuYwpAQCAtNzIsMTAgKzcyLDEwIEBAIHN0YXRpYyBib29sIHJwZmlsdGVyX2xvb2t1cF9yZXZl cnNlNihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRp YyBib29sIHJwZmlsdGVyX2lzX2xvY2FsKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCitzdGF0 aWMgYm9vbAorcnBmaWx0ZXJfaXNfbG9vcGJhY2soY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwg Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmluKQogewotCWNvbnN0IHN0cnVjdCBydDZfaW5mbyAq cnQgPSAoY29uc3Qgdm9pZCAqKSBza2JfZHN0KHNrYik7Ci0JcmV0dXJuIHJ0ICYmIChydC0+cnQ2 aV9mbGFncyAmIFJURl9MT0NBTCk7CisJcmV0dXJuIHNrYi0+cGt0X3R5cGUgPT0gUEFDS0VUX0xP T1BCQUNLIHx8IGluLT5mbGFncyAmIElGRl9MT09QQkFDSzsKIH0KIAogc3RhdGljIGJvb2wgcnBm aWx0ZXJfbXQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJh bSAqcGFyKQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgYm9vbCBycGZpbHRlcl9tdChjb25zdCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJc3RydWN0 IGlwdjZoZHIgKmlwaDsKIAlib29sIGludmVydCA9IGluZm8tPmZsYWdzICYgWFRfUlBGSUxURVJf SU5WRVJUOwogCi0JaWYgKHJwZmlsdGVyX2lzX2xvY2FsKHNrYikpCisJaWYgKHJwZmlsdGVyX2lz X2xvb3BiYWNrKHNrYiwgcGFyLT5pbikpCiAJCXJldHVybiB0cnVlIF4gaW52ZXJ0OwogCiAJaXBo ID0gaXB2Nl9oZHIoc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Jhdy5jIGIvbmV0L2lwdjYv cmF3LmMKaW5kZXggMTQ2Mzc1N2U4NjgyLi5lZGZmMWQxYzc0Y2IgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L3Jhdy5jCisrKyBiL25ldC9pcHY2L3Jhdy5jCkBAIC01ODgsOCArNTg4LDExIEBAIHN0YXRp YyBpbnQgcmF3djZfcHVzaF9wZW5kaW5nX2ZyYW1lcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBm bG93aTYgKmZsNiwKIAl9CiAKIAlvZmZzZXQgKz0gc2tiX3RyYW5zcG9ydF9vZmZzZXQoc2tiKTsK LQlpZiAoc2tiX2NvcHlfYml0cyhza2IsIG9mZnNldCwgJmNzdW0sIDIpKQotCQlCVUcoKTsKKwll cnIgPSBza2JfY29weV9iaXRzKHNrYiwgb2Zmc2V0LCAmY3N1bSwgMik7CisJaWYgKGVyciA8IDAp IHsKKwkJaXA2X2ZsdXNoX3BlbmRpbmdfZnJhbWVzKHNrKTsKKwkJZ290byBvdXQ7CisJfQogCiAJ LyogaW4gY2FzZSBja3N1bSB3YXMgbm90IGluaXRpYWxpemVkICovCiAJaWYgKHVubGlrZWx5KGNz dW0pKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvc2l0LmMgYi9uZXQvaXB2Ni9zaXQuYwppbmRleCBi NWJkZDJhZWIyZjguLjk2YjQ0MmVhOTA0YSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvc2l0LmMKKysr IGIvbmV0L2lwdjYvc2l0LmMKQEAgLTU1OSwxMyArNTU5LDEzIEBAIHN0YXRpYyBpbnQgaXBpcDZf ZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKQogCiAJaWYgKHR5cGUgPT0gSUNNUF9E RVNUX1VOUkVBQ0ggJiYgY29kZSA9PSBJQ01QX0ZSQUdfTkVFREVEKSB7CiAJCWlwdjRfdXBkYXRl X3BtdHUoc2tiLCBkZXZfbmV0KHNrYi0+ZGV2KSwgaW5mbywKLQkJCQkgdC0+cGFybXMubGluaywg MCwgSVBQUk9UT19JUFY2LCAwKTsKKwkJCQkgdC0+cGFybXMubGluaywgMCwgaXBoLT5wcm90b2Nv bCwgMCk7CiAJCWVyciA9IDA7CiAJCWdvdG8gb3V0OwogCX0KIAlpZiAodHlwZSA9PSBJQ01QX1JF RElSRUNUKSB7CiAJCWlwdjRfcmVkaXJlY3Qoc2tiLCBkZXZfbmV0KHNrYi0+ZGV2KSwgdC0+cGFy bXMubGluaywgMCwKLQkJCSAgICAgIElQUFJPVE9fSVBWNiwgMCk7CisJCQkgICAgICBpcGgtPnBy b3RvY29sLCAwKTsKIAkJZXJyID0gMDsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTM2OCw2ICsxMzY4 LDcgQEAgc3RhdGljIGludCBpcGlwNl90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 KQogCXR1bm5lbC0+ZHN0X2NhY2hlID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBpcF90dW5uZWxfZHN0 KTsKIAlpZiAoIXR1bm5lbC0+ZHN0X2NhY2hlKSB7CiAJCWZyZWVfcGVyY3B1KGRldi0+dHN0YXRz KTsKKwkJZGV2LT50c3RhdHMgPSBOVUxMOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKZGlmZiAt LWdpdCBhL25ldC9pcHY2L3VkcC5jIGIvbmV0L2lwdjYvdWRwLmMKaW5kZXggOGViMzg1NThlMTU3 Li4wNjcwMTFjZmYyMDcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3VkcC5jCisrKyBiL25ldC9pcHY2 L3VkcC5jCkBAIC02MzEsNyArNjMxLDcgQEAgaW50IHVkcHY2X3F1ZXVlX3Jjdl9za2Ioc3RydWN0 IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJCS8qIGlmIHdlJ3JlIG92ZXJseSBz aG9ydCwgbGV0IFVEUCBoYW5kbGUgaXQgKi8KIAkJZW5jYXBfcmN2ID0gQUNDRVNTX09OQ0UodXAt PmVuY2FwX3Jjdik7Ci0JCWlmIChza2ItPmxlbiA+IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSAmJiBl bmNhcF9yY3YgIT0gTlVMTCkgeworCQlpZiAoZW5jYXBfcmN2KSB7CiAJCQlpbnQgcmV0OwogCiAJ CQkvKiBWZXJpZnkgY2hlY2tzdW0gYmVmb3JlIGdpdmluZyB0byBlbmNhcCAqLwpkaWZmIC0tZ2l0 IGEvbmV0L2lyZGEvaXJxdWV1ZS5jIGIvbmV0L2lyZGEvaXJxdWV1ZS5jCmluZGV4IDcxNTI2MjRl ZDVmMS4uMjZjY2Q2NWNkY2FiIDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcnF1ZXVlLmMKKysrIGIv bmV0L2lyZGEvaXJxdWV1ZS5jCkBAIC0zODUsOSArMzg1LDYgQEAgRVhQT1JUX1NZTUJPTChoYXNo YmluX25ldyk7CiAgKiAgICBmb3IgZGVhbGxvY2F0aW5nIHRoaXMgc3RydWN0dXJlIGlmIGl0J3Mg Y29tcGxleC4gSWYgbm90IHRoZSB1c2VyIGNhbgogICogICAganVzdCBzdXBwbHkga2ZyZWUsIHdo aWNoIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhlIGpvYi4KICAqLwotI2lmZGVmIENPTkZJR19MT0NL REVQCi1zdGF0aWMgaW50IGhhc2hiaW5fbG9ja19kZXB0aCA9IDA7Ci0jZW5kaWYKIGludCBoYXNo YmluX2RlbGV0ZSggaGFzaGJpbl90KiBoYXNoYmluLCBGUkVFX0ZVTkMgZnJlZV9mdW5jKQogewog CWlyZGFfcXVldWVfdCogcXVldWU7CkBAIC0zOTgsMjIgKzM5NSwyNyBAQCBpbnQgaGFzaGJpbl9k ZWxldGUoIGhhc2hiaW5fdCogaGFzaGJpbiwgRlJFRV9GVU5DIGZyZWVfZnVuYykKIAlJUkRBX0FT U0VSVChoYXNoYmluLT5tYWdpYyA9PSBIQl9NQUdJQywgcmV0dXJuIC0xOyk7CiAKIAkvKiBTeW5j aHJvbml6ZSAqLwotCWlmICggaGFzaGJpbi0+aGJfdHlwZSAmIEhCX0xPQ0sgKSB7Ci0JCXNwaW5f bG9ja19pcnFzYXZlX25lc3RlZCgmaGFzaGJpbi0+aGJfc3BpbmxvY2ssIGZsYWdzLAotCQkJCQkg aGFzaGJpbl9sb2NrX2RlcHRoKyspOwotCX0KKwlpZiAoaGFzaGJpbi0+aGJfdHlwZSAmIEhCX0xP Q0spCisJCXNwaW5fbG9ja19pcnFzYXZlKCZoYXNoYmluLT5oYl9zcGlubG9jaywgZmxhZ3MpOwog CiAJLyoKIAkgKiAgRnJlZSB0aGUgZW50cmllcyBpbiB0aGUgaGFzaGJpbiwgVE9ETzogdXNlIGhh c2hiaW5fY2xlYXIgd2hlbgogCSAqICBpdCBoYXMgYmVlbiBzaG93biB0byB3b3JrCiAJICovCiAJ Zm9yIChpID0gMDsgaSA8IEhBU0hCSU5fU0laRTsgaSArKyApIHsKLQkJcXVldWUgPSBkZXF1ZXVl X2ZpcnN0KChpcmRhX3F1ZXVlX3QqKikgJmhhc2hiaW4tPmhiX3F1ZXVlW2ldKTsKLQkJd2hpbGUg KHF1ZXVlICkgewotCQkJaWYgKGZyZWVfZnVuYykKLQkJCQkoKmZyZWVfZnVuYykocXVldWUpOwot CQkJcXVldWUgPSBkZXF1ZXVlX2ZpcnN0KAotCQkJCShpcmRhX3F1ZXVlX3QqKikgJmhhc2hiaW4t PmhiX3F1ZXVlW2ldKTsKKwkJd2hpbGUgKDEpIHsKKwkJCXF1ZXVlID0gZGVxdWV1ZV9maXJzdCgo aXJkYV9xdWV1ZV90KiopICZoYXNoYmluLT5oYl9xdWV1ZVtpXSk7CisKKwkJCWlmICghcXVldWUp CisJCQkJYnJlYWs7CisKKwkJCWlmIChmcmVlX2Z1bmMpIHsKKwkJCQlpZiAoaGFzaGJpbi0+aGJf dHlwZSAmIEhCX0xPQ0spCisJCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhc2hiaW4tPmhi X3NwaW5sb2NrLCBmbGFncyk7CisJCQkJZnJlZV9mdW5jKHF1ZXVlKTsKKwkJCQlpZiAoaGFzaGJp bi0+aGJfdHlwZSAmIEhCX0xPQ0spCisJCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZoYXNoYmluLT5o Yl9zcGlubG9jaywgZmxhZ3MpOworCQkJfQogCQl9CiAJfQogCkBAIC00MjIsMTIgKzQyNCw4IEBA IGludCBoYXNoYmluX2RlbGV0ZSggaGFzaGJpbl90KiBoYXNoYmluLCBGUkVFX0ZVTkMgZnJlZV9m dW5jKQogCWhhc2hiaW4tPm1hZ2ljID0gfkhCX01BR0lDOwogCiAJLyogUmVsZWFzZSBsb2NrICov Ci0JaWYgKCBoYXNoYmluLT5oYl90eXBlICYgSEJfTE9DSykgeworCWlmIChoYXNoYmluLT5oYl90 eXBlICYgSEJfTE9DSykKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGFzaGJpbi0+aGJfc3Bp bmxvY2ssIGZsYWdzKTsKLSNpZmRlZiBDT05GSUdfTE9DS0RFUAotCQloYXNoYmluX2xvY2tfZGVw dGgtLTsKLSNlbmRpZgotCX0KIAogCS8qCiAJICogIEZyZWUgdGhlIGhhc2hiaW4gc3RydWN0dXJl CmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaCBiL25ldC9sMnRwL2wydHBfY29yZS5o CmluZGV4IDY4YWE5ZmZkNGFlNC4uZTllYzdkMmNjMzU3IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9s MnRwX2NvcmUuaAorKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaApAQCAtMjczLDYgKzI3Myw3IEBA IGludCBsMnRwX3htaXRfc2tiKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBz a19idWZmICpza2IsCiBpbnQgbDJ0cF9ubF9yZWdpc3Rlcl9vcHMoZW51bSBsMnRwX3B3dHlwZSBw d190eXBlLAogCQkJIGNvbnN0IHN0cnVjdCBsMnRwX25sX2NtZF9vcHMgKm9wcyk7CiB2b2lkIGwy dHBfbmxfdW5yZWdpc3Rlcl9vcHMoZW51bSBsMnRwX3B3dHlwZSBwd190eXBlKTsKK2ludCBsMnRw X2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogCiAv KiBTZXNzaW9uIHJlZmVyZW5jZSBjb3VudHMuIEluY3JlbWVudGVkIHdoZW4gY29kZSBvYnRhaW5z IGEgcmVmZXJlbmNlCiAgKiB0byBhIHNlc3Npb24uCmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRw X2lwLmMgYi9uZXQvbDJ0cC9sMnRwX2lwLmMKaW5kZXggNWQ1MzI0OWEyZTg0Li41ZmM4YjY4OTli OTAgMTAwNjQ0Ci0tLSBhL25ldC9sMnRwL2wydHBfaXAuYworKysgYi9uZXQvbDJ0cC9sMnRwX2lw LmMKQEAgLTExLDYgKzExLDcgQEAKIAogI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFN RSAiOiAiIGZtdAogCisjaW5jbHVkZSA8YXNtL2lvY3Rscy5oPgogI2luY2x1ZGUgPGxpbnV4L2lj bXAuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9za2J1ZmYu aD4KQEAgLTU1NSw2ICs1NTYsMzAgQEAgb3V0OgogCXJldHVybiBlcnIgPyBlcnIgOiBjb3BpZWQ7 CiB9CiAKK2ludCBsMnRwX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgdW5zaWduZWQg bG9uZyBhcmcpCit7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlpbnQgYW1vdW50OworCisJc3dp dGNoIChjbWQpIHsKKwljYXNlIFNJT0NPVVRROgorCQlhbW91bnQgPSBza193bWVtX2FsbG9jX2dl dChzayk7CisJCWJyZWFrOworCWNhc2UgU0lPQ0lOUToKKwkJc3Bpbl9sb2NrX2JoKCZzay0+c2tf cmVjZWl2ZV9xdWV1ZS5sb2NrKTsKKwkJc2tiID0gc2tiX3BlZWsoJnNrLT5za19yZWNlaXZlX3F1 ZXVlKTsKKwkJYW1vdW50ID0gc2tiID8gc2tiLT5sZW4gOiAwOworCQlzcGluX3VubG9ja19iaCgm c2stPnNrX3JlY2VpdmVfcXVldWUubG9jayk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcmV0 dXJuIC1FTk9JT0NUTENNRDsKKwl9CisKKwlyZXR1cm4gcHV0X3VzZXIoYW1vdW50LCAoaW50IF9f dXNlciAqKWFyZyk7Cit9CitFWFBPUlRfU1lNQk9MKGwydHBfaW9jdGwpOworCiBzdGF0aWMgc3Ry dWN0IHByb3RvIGwydHBfaXBfcHJvdCA9IHsKIAkubmFtZQkJICAgPSAiTDJUUC9JUCIsCiAJLm93 bmVyCQkgICA9IFRISVNfTU9EVUxFLApAQCAtNTYzLDcgKzU4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qg cHJvdG8gbDJ0cF9pcF9wcm90ID0gewogCS5iaW5kCQkgICA9IGwydHBfaXBfYmluZCwKIAkuY29u bmVjdAkgICA9IGwydHBfaXBfY29ubmVjdCwKIAkuZGlzY29ubmVjdAkgICA9IGwydHBfaXBfZGlz Y29ubmVjdCwKLQkuaW9jdGwJCSAgID0gdWRwX2lvY3RsLAorCS5pb2N0bAkJICAgPSBsMnRwX2lv Y3RsLAogCS5kZXN0cm95CSAgID0gbDJ0cF9pcF9kZXN0cm95X3NvY2ssCiAJLnNldHNvY2tvcHQJ ICAgPSBpcF9zZXRzb2Nrb3B0LAogCS5nZXRzb2Nrb3B0CSAgID0gaXBfZ2V0c29ja29wdCwKZGlm ZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfaXA2LmMgYi9uZXQvbDJ0cC9sMnRwX2lwNi5jCmluZGV4 IGE2ZTY5Njc3YTZhMS4uMDUzMTQ1MDY1N2QyIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lw Ni5jCisrKyBiL25ldC9sMnRwL2wydHBfaXA2LmMKQEAgLTcxNiw3ICs3MTYsNyBAQCBzdGF0aWMg c3RydWN0IHByb3RvIGwydHBfaXA2X3Byb3QgPSB7CiAJLmJpbmQJCSAgID0gbDJ0cF9pcDZfYmlu ZCwKIAkuY29ubmVjdAkgICA9IGwydHBfaXA2X2Nvbm5lY3QsCiAJLmRpc2Nvbm5lY3QJICAgPSBs MnRwX2lwNl9kaXNjb25uZWN0LAotCS5pb2N0bAkJICAgPSB1ZHBfaW9jdGwsCisJLmlvY3RsCQkg ICA9IGwydHBfaW9jdGwsCiAJLmRlc3Ryb3kJICAgPSBsMnRwX2lwNl9kZXN0cm95X3NvY2ssCiAJ LnNldHNvY2tvcHQJICAgPSBpcHY2X3NldHNvY2tvcHQsCiAJLmdldHNvY2tvcHQJICAgPSBpcHY2 X2dldHNvY2tvcHQsCmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xs Y19jb25uLmMKaW5kZXggNDJkYzJlNDVjOTIxLi45YzY4ZDBiY2EwNDYgMTAwNjQ0Ci0tLSBhL25l dC9sbGMvbGxjX2Nvbm4uYworKysgYi9uZXQvbGxjL2xsY19jb25uLmMKQEAgLTgyMSw3ICs4MjEs MTAgQEAgdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBz a19idWZmICpza2IpCiAJCSAqIGFub3RoZXIgdHJpY2sgcmVxdWlyZWQgdG8gY29wZSB3aXRoIGhv dyB0aGUgUFJPQ09NIHN0YXRlCiAJCSAqIG1hY2hpbmUgd29ya3MuIC1hY21lCiAJCSAqLworCQlz a2Jfb3JwaGFuKHNrYik7CisJCXNvY2tfaG9sZChzayk7CiAJCXNrYi0+c2sgPSBzazsKKwkJc2ti LT5kZXN0cnVjdG9yID0gc29ja19lZnJlZTsKIAl9CiAJaWYgKCFzb2NrX293bmVkX2J5X3VzZXIo c2spKQogCQlsbGNfY29ubl9yY3Yoc2ssIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19z YXAuYyBiL25ldC9sbGMvbGxjX3NhcC5jCmluZGV4IDA2MDMzZjZjODQ1Zi4uY2RjMWI2MjBjYmUx IDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19zYXAuYworKysgYi9uZXQvbGxjL2xsY19zYXAuYwpA QCAtMjkwLDcgKzI5MCwxMCBAQCBzdGF0aWMgdm9pZCBsbGNfc2FwX3JjdihzdHJ1Y3QgbGxjX3Nh cCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJZXYtPnR5cGUgICA9IExMQ19TQVBfRVZf VFlQRV9QRFU7CiAJZXYtPnJlYXNvbiA9IDA7CisJc2tiX29ycGhhbihza2IpOworCXNvY2tfaG9s ZChzayk7CiAJc2tiLT5zayA9IHNrOworCXNrYi0+ZGVzdHJ1Y3RvciA9IHNvY2tfZWZyZWU7CiAJ bGxjX3NhcF9zdGF0ZV9wcm9jZXNzKHNhcCwgc2tiKTsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L21h YzgwMjExL21lc2guYyBiL25ldC9tYWM4MDIxMS9tZXNoLmMKaW5kZXggMjdiNWIzYjQzNzQ0Li41 OGY1ZjM0YTdhZjEgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9tZXNoLmMKKysrIGIvbmV0L21h YzgwMjExL21lc2guYwpAQCAtMzUyLDcgKzM1Miw3IEBAIGludCBtZXNoX2FkZF92ZW5kb3JfaWVz KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCS8qIGZhc3QtZm9yd2FyZCB0 byB2ZW5kb3IgSUVzICovCiAJb2Zmc2V0ID0gaWVlZTgwMjExX2llX3NwbGl0X3ZlbmRvcihpZm1z aC0+aWUsIGlmbXNoLT5pZV9sZW4sIDApOwogCi0JaWYgKG9mZnNldCkgeworCWlmIChvZmZzZXQg PCBpZm1zaC0+aWVfbGVuKSB7CiAJCWxlbiA9IGlmbXNoLT5pZV9sZW4gLSBvZmZzZXQ7CiAJCWRh dGEgPSBpZm1zaC0+aWUgKyBvZmZzZXQ7CiAJCWlmIChza2JfdGFpbHJvb20oc2tiKSA8IGxlbikK ZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tbG1lLmMgYi9uZXQvbWFjODAyMTEvbWxtZS5jCmlu ZGV4IGZmM2RhYzg1NTEwMC4uNThmYWI1OTUxYjIyIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEv bWxtZS5jCisrKyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKQEAgLTI0NTgsNyArMjQ1OCw3IEBAIHN0 YXRpYyB2b2lkIGllZWU4MDIxMV9nZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRf YmFuZCAqc2JhbmQsCiB9CiAKIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kZXN0cm95X2Fzc29jX2Rh dGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCi0JCQkJCSBib29sIGFzc29j KQorCQkJCQkgYm9vbCBhc3NvYywgYm9vbCBhYmFuZG9uKQogewogCXN0cnVjdCBpZWVlODAyMTFf bWdkX2Fzc29jX2RhdGEgKmFzc29jX2RhdGEgPSBzZGF0YS0+dS5tZ2QuYXNzb2NfZGF0YTsKIApA QCAtMjQ3Myw2ICsyNDczLDkgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2Nf ZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJbXV0ZXhfbG9jaygm c2RhdGEtPmxvY2FsLT5tdHgpOwogCQlpZWVlODAyMTFfdmlmX3JlbGVhc2VfY2hhbm5lbChzZGF0 YSk7CiAJCW11dGV4X3VubG9jaygmc2RhdGEtPmxvY2FsLT5tdHgpOworCisJCWlmIChhYmFuZG9u KQorCQkJY2ZnODAyMTFfYWJhbmRvbl9hc3NvYyhzZGF0YS0+ZGV2LCBhc3NvY19kYXRhLT5ic3Mp OwogCX0KIAogCWtmcmVlKGFzc29jX2RhdGEpOwpAQCAtMjc3OSwxMSArMjc4MiwxMSBAQCBzdGF0 aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hc3NvY19yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3Vi X2lmX2RhdGEgKnNkYXRhLAogCWlmIChzdGF0dXNfY29kZSAhPSBXTEFOX1NUQVRVU19TVUNDRVNT KSB7CiAJCXNkYXRhX2luZm8oc2RhdGEsICIlcE0gZGVuaWVkIGFzc29jaWF0aW9uIChjb2RlPSVk KVxuIiwKIAkJCSAgIG1nbXQtPnNhLCBzdGF0dXNfY29kZSk7Ci0JCWllZWU4MDIxMV9kZXN0cm95 X2Fzc29jX2RhdGEoc2RhdGEsIGZhbHNlKTsKKwkJaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0 YShzZGF0YSwgZmFsc2UsIGZhbHNlKTsKIAl9IGVsc2UgewogCQlpZiAoIWllZWU4MDIxMV9hc3Nv Y19zdWNjZXNzKHNkYXRhLCBic3MsIG1nbXQsIGxlbikpIHsKIAkJCS8qIG9vcHMgLS0gaW50ZXJu YWwgZXJyb3IgLS0gc2VuZCB0aW1lb3V0IGZvciBub3cgKi8KLQkJCWllZWU4MDIxMV9kZXN0cm95 X2Fzc29jX2RhdGEoc2RhdGEsIGZhbHNlKTsKKwkJCWllZWU4MDIxMV9kZXN0cm95X2Fzc29jX2Rh dGEoc2RhdGEsIGZhbHNlLCBmYWxzZSk7CiAJCQljZmc4MDIxMV9hc3NvY190aW1lb3V0KHNkYXRh LT5kZXYsIGJzcyk7CiAJCQlyZXR1cm47CiAJCX0KQEAgLTI3OTQsNyArMjc5Nyw3IEBAIHN0YXRp YyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJf aWZfZGF0YSAqc2RhdGEsCiAJCSAqIHJlY2FsYyBhZnRlciBhc3NvY19kYXRhIGlzIE5VTEwgYnV0 IGJlZm9yZSBhc3NvY2lhdGVkCiAJCSAqIGlzIHNldCBjYW4gY2F1c2UgdGhlIGludGVyZmFjZSB0 byBnbyBpZGxlCiAJCSAqLwotCQlpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHNkYXRhLCB0 cnVlKTsKKwkJaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzZGF0YSwgdHJ1ZSwgZmFsc2Up OwogCX0KIAogCWNmZzgwMjExX3J4X2Fzc29jX3Jlc3Aoc2RhdGEtPmRldiwgYnNzLCAodTggKilt Z210LCBsZW4pOwpAQCAtMzQ5MSw3ICszNDk0LDcgQEAgdm9pZCBpZWVlODAyMTFfc3RhX3dvcmso c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpCiAJCSAgICBpZWVlODAyMTFfZG9f YXNzb2Moc2RhdGEpKSB7CiAJCQlzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MgPSBpZm1nZC0+YXNz b2NfZGF0YS0+YnNzOwogCi0JCQlpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHNkYXRhLCBm YWxzZSk7CisJCQlpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHNkYXRhLCBmYWxzZSwgZmFs c2UpOwogCQkJY2ZnODAyMTFfYXNzb2NfdGltZW91dChzZGF0YS0+ZGV2LCBic3MpOwogCQl9CiAJ fSBlbHNlIGlmIChpZm1nZC0+YXNzb2NfZGF0YSAmJiBpZm1nZC0+YXNzb2NfZGF0YS0+dGltZW91 dF9zdGFydGVkKQpAQCAtMzY0MCw3ICszNjQzLDcgQEAgdm9pZCBpZWVlODAyMTFfbWdkX3F1aWVz Y2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpCiAJCQkJCSAgICAgICBXTEFO X1JFQVNPTl9ERUFVVEhfTEVBVklORywKIAkJCQkJICAgICAgIGZhbHNlLCBmcmFtZV9idWYpOwog CQlpZiAoaWZtZ2QtPmFzc29jX2RhdGEpCi0JCQlpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRh KHNkYXRhLCBmYWxzZSk7CisJCQlpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHNkYXRhLCBm YWxzZSwgdHJ1ZSk7CiAJCWlmIChpZm1nZC0+YXV0aF9kYXRhKQogCQkJaWVlZTgwMjExX2Rlc3Ry b3lfYXV0aF9kYXRhKHNkYXRhLCBmYWxzZSk7CiAJCWNmZzgwMjExX3R4X21sbWVfbWdtdChzZGF0 YS0+ZGV2LCBmcmFtZV9idWYsCkBAIC00NTUzLDcgKzQ1NTYsNyBAQCB2b2lkIGllZWU4MDIxMV9t Z2Rfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKIAlzZGF0YV9sb2Nr KHNkYXRhKTsKIAlpZiAoaWZtZ2QtPmFzc29jX2RhdGEpIHsKIAkJc3RydWN0IGNmZzgwMjExX2Jz cyAqYnNzID0gaWZtZ2QtPmFzc29jX2RhdGEtPmJzczsKLQkJaWVlZTgwMjExX2Rlc3Ryb3lfYXNz b2NfZGF0YShzZGF0YSwgZmFsc2UpOworCQlpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHNk YXRhLCBmYWxzZSwgZmFsc2UpOwogCQljZmc4MDIxMV9hc3NvY190aW1lb3V0KHNkYXRhLT5kZXYs IGJzcyk7CiAJfQogCWlmIChpZm1nZC0+YXV0aF9kYXRhKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZp bHRlci9uZl9sb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbG9nLmMKaW5kZXggODUyOTZkNGVhYzBl Li40ZTYyNDVmMDllZTQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nLmMKKysrIGIv bmV0L25ldGZpbHRlci9uZl9sb2cuYwpAQCAtMTMsNyArMTMsNiBAQAogLyogSW50ZXJuYWwgbG9n Z2luZyBpbnRlcmZhY2UsIHdoaWNoIHJlbGllcyBvbiB0aGUgcmVhbAogICAgTE9HIHRhcmdldCBt b2R1bGVzICovCiAKLSNkZWZpbmUgTkZfTE9HX1BSRUZJWExFTgkJMTI4CiAjZGVmaW5lIE5GTE9H R0VSX05BTUVfTEVOCQk2NAogCiBzdGF0aWMgc3RydWN0IGxpc3RfaGVhZCBuZl9sb2dnZXJzX2xb TkZQUk9UT19OVU1QUk9UT10gX19yZWFkX21vc3RseTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0 ZXIvbmZ0X2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZnRfbG9nLmMKaW5kZXggMTBjZmIxNTZjZGY0 Li44YzI0MjcwZTA4ZTEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jCisrKyBi L25ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jCkBAIC0zOCw3ICszOCw4IEBAIHN0YXRpYyB2b2lkIG5m dF9sb2dfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsCiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbmxhX3BvbGljeSBuZnRfbG9nX3BvbGljeVtORlRBX0xPR19NQVggKyAxXSA9IHsKIAlb TkZUQV9MT0dfR1JPVVBdCT0geyAudHlwZSA9IE5MQV9VMTYgfSwKLQlbTkZUQV9MT0dfUFJFRklY XQk9IHsgLnR5cGUgPSBOTEFfU1RSSU5HIH0sCisJW05GVEFfTE9HX1BSRUZJWF0JPSB7IC50eXBl ID0gTkxBX1NUUklORywKKwkJCQkgICAgLmxlbiA9IE5GX0xPR19QUkVGSVhMRU4gLSAxIH0sCiAJ W05GVEFfTE9HX1NOQVBMRU5dCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbTkZUQV9MT0dfUVRI UkVTSE9MRF0JPSB7IC50eXBlID0gTkxBX1UxNiB9LAogfTsKZGlmZiAtLWdpdCBhL25ldC9wYWNr ZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCmluZGV4IDA2MjYyNGMxYmU3 ZS4uMTkzZWFjOTkyODE0IDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBi L25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTE0MDIsNiArMTQwMiw4IEBAIHN0YXRpYyB2b2lk IF9fZmFub3V0X2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKQog CWYtPmFycltmLT5udW1fbWVtYmVyc10gPSBzazsKIAlzbXBfd21iKCk7CiAJZi0+bnVtX21lbWJl cnMrKzsKKwlpZiAoZi0+bnVtX21lbWJlcnMgPT0gMSkKKwkJZGV2X2FkZF9wYWNrKCZmLT5wcm90 X2hvb2spOwogCXNwaW5fdW5sb2NrKCZmLT5sb2NrKTsKIH0KIApAQCAtMTQxOCw2ICsxNDIwLDgg QEAgc3RhdGljIHZvaWQgX19mYW5vdXRfdW5saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBh Y2tldF9zb2NrICpwbykKIAlCVUdfT04oaSA+PSBmLT5udW1fbWVtYmVycyk7CiAJZi0+YXJyW2ld ID0gZi0+YXJyW2YtPm51bV9tZW1iZXJzIC0gMV07CiAJZi0+bnVtX21lbWJlcnMtLTsKKwlpZiAo Zi0+bnVtX21lbWJlcnMgPT0gMCkKKwkJX19kZXZfcmVtb3ZlX3BhY2soJmYtPnByb3RfaG9vayk7 CiAJc3Bpbl91bmxvY2soJmYtPmxvY2spOwogfQogCkBAIC0xNDUxLDEzICsxNDU1LDE2IEBAIHN0 YXRpYyBpbnQgZmFub3V0X2FkZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBpZCwgdTE2IHR5cGVfZmxh Z3MpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAorCW11dGV4X2xvY2soJmZhbm91dF9tdXRleCk7 CisKKwllcnIgPSAtRUlOVkFMOwogCWlmICghcG8tPnJ1bm5pbmcpCi0JCXJldHVybiAtRUlOVkFM OworCQlnb3RvIG91dDsKIAorCWVyciA9IC1FQUxSRUFEWTsKIAlpZiAocG8tPmZhbm91dCkKLQkJ cmV0dXJuIC1FQUxSRUFEWTsKKwkJZ290byBvdXQ7CiAKLQltdXRleF9sb2NrKCZmYW5vdXRfbXV0 ZXgpOwogCW1hdGNoID0gTlVMTDsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGYsICZmYW5vdXRfbGlz dCwgbGlzdCkgewogCQlpZiAoZi0+aWQgPT0gaWQgJiYKQEAgLTE0ODcsNyArMTQ5NCw2IEBAIHN0 YXRpYyBpbnQgZmFub3V0X2FkZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBpZCwgdTE2IHR5cGVfZmxh Z3MpCiAJCW1hdGNoLT5wcm90X2hvb2suZnVuYyA9IHBhY2tldF9yY3ZfZmFub3V0OwogCQltYXRj aC0+cHJvdF9ob29rLmFmX3BhY2tldF9wcml2ID0gbWF0Y2g7CiAJCW1hdGNoLT5wcm90X2hvb2su aWRfbWF0Y2ggPSBtYXRjaF9mYW5vdXRfZ3JvdXA7Ci0JCWRldl9hZGRfcGFjaygmbWF0Y2gtPnBy b3RfaG9vayk7CiAJCWxpc3RfYWRkKCZtYXRjaC0+bGlzdCwgJmZhbm91dF9saXN0KTsKIAl9CiAJ ZXJyID0gLUVJTlZBTDsKQEAgLTE1MDgsMjQgKzE1MTQsMjkgQEAgb3V0OgogCXJldHVybiBlcnI7 CiB9CiAKLXN0YXRpYyB2b2lkIGZhbm91dF9yZWxlYXNlKHN0cnVjdCBzb2NrICpzaykKKy8qIElm IHBrdF9zayhzayktPmZhbm91dC0+c2tfcmVmIGlzIHplcm8sIHRoaXMgZnVuY3Rpb24gcmVtb3Zl cworICogcGt0X3NrKHNrKS0+ZmFub3V0IGZyb20gZmFub3V0X2xpc3QgYW5kIHJldHVybnMgcGt0 X3NrKHNrKS0+ZmFub3V0LgorICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxs ZXIgdG8gY2FsbCBmYW5vdXRfcmVsZWFzZV9kYXRhKCkgYW5kCisgKiBmcmVlIHRoZSByZXR1cm5l ZCBwYWNrZXRfZmFub3V0IChhZnRlciBzeW5jaHJvbml6ZV9uZXQoKSkKKyAqLworc3RhdGljIHN0 cnVjdCBwYWNrZXRfZmFub3V0ICpmYW5vdXRfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spCiB7CiAJ c3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7CiAJc3RydWN0IHBhY2tldF9mYW5v dXQgKmY7CiAKLQlmID0gcG8tPmZhbm91dDsKLQlpZiAoIWYpCi0JCXJldHVybjsKLQogCW11dGV4 X2xvY2soJmZhbm91dF9tdXRleCk7Ci0JcG8tPmZhbm91dCA9IE5VTEw7CisJZiA9IHBvLT5mYW5v dXQ7CisJaWYgKGYpIHsKKwkJcG8tPmZhbm91dCA9IE5VTEw7CiAKLQlpZiAoYXRvbWljX2RlY19h bmRfdGVzdCgmZi0+c2tfcmVmKSkgewotCQlsaXN0X2RlbCgmZi0+bGlzdCk7Ci0JCWRldl9yZW1v dmVfcGFjaygmZi0+cHJvdF9ob29rKTsKLQkJa2ZyZWUoZik7CisJCWlmIChhdG9taWNfZGVjX2Fu ZF90ZXN0KCZmLT5za19yZWYpKQorCQkJbGlzdF9kZWwoJmYtPmxpc3QpOworCQllbHNlCisJCQlm ID0gTlVMTDsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZmYW5vdXRfbXV0ZXgpOworCisJcmV0dXJuIGY7 CiB9CiAKIHN0YXRpYyBib29sIHBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxvd2VkKGNvbnN0IHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsCkBAIC0yNjA0LDYgKzI2MTUsNyBAQCBzdGF0aWMgaW50IHBh Y2tldF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiB7CiAJc3RydWN0IHNvY2sgKnNrID0g c29jay0+c2s7CiAJc3RydWN0IHBhY2tldF9zb2NrICpwbzsKKwlzdHJ1Y3QgcGFja2V0X2Zhbm91 dCAqZjsKIAlzdHJ1Y3QgbmV0ICpuZXQ7CiAJdW5pb24gdHBhY2tldF9yZXFfdSByZXFfdTsKIApA QCAtMjY0Myw5ICsyNjU1LDEyIEBAIHN0YXRpYyBpbnQgcGFja2V0X3JlbGVhc2Uoc3RydWN0IHNv Y2tldCAqc29jaykKIAkJcGFja2V0X3NldF9yaW5nKHNrLCAmcmVxX3UsIDEsIDEpOwogCX0KIAot CWZhbm91dF9yZWxlYXNlKHNrKTsKKwlmID0gZmFub3V0X3JlbGVhc2Uoc2spOwogCiAJc3luY2hy b25pemVfbmV0KCk7CisKKwlrZnJlZShmKTsKKwogCS8qCiAJICoJTm93IHRoZSBzb2NrZXQgaXMg ZGVhZC4gTm8gbW9yZSBpbnB1dCB3aWxsIGFwcGVhci4KIAkgKi8KZGlmZiAtLWdpdCBhL25ldC9z Y2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwppbmRleCAyNzY2MmUxOWMz YmQuLjhmMzU3YTZlYjE1MCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCisrKyBi L25ldC9zY2hlZC9hY3RfcGVkaXQuYwpAQCAtMTAzLDYgKzEwMywxNyBAQCBzdGF0aWMgdm9pZCB0 Y2ZfcGVkaXRfY2xlYW51cChzdHJ1Y3QgdGNfYWN0aW9uICphLCBpbnQgYmluZCkKIAlrZnJlZShr ZXlzKTsKIH0KIAorc3RhdGljIGJvb2wgb2Zmc2V0X3ZhbGlkKHN0cnVjdCBza19idWZmICpza2Is IGludCBvZmZzZXQpCit7CisJaWYgKG9mZnNldCA+IDAgJiYgb2Zmc2V0ID4gc2tiLT5sZW4pCisJ CXJldHVybiBmYWxzZTsKKworCWlmICAob2Zmc2V0IDwgMCAmJiAtb2Zmc2V0ID4gc2tiX2hlYWRy b29tKHNrYikpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMg aW50IHRjZl9wZWRpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9u ICphLAogCQkgICAgIHN0cnVjdCB0Y2ZfcmVzdWx0ICpyZXMpCiB7CkBAIC0xMjksNiArMTQwLDEx IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVj dCB0Y19hY3Rpb24gKmEsCiAJCQlpZiAodGtleS0+b2ZmbWFzaykgewogCQkJCWNoYXIgKmQsIF9k OwogCisJCQkJaWYgKCFvZmZzZXRfdmFsaWQoc2tiLCBvZmYgKyB0a2V5LT5hdCkpIHsKKwkJCQkJ cHJfaW5mbygidGMgZmlsdGVyIHBlZGl0ICdhdCcgb2Zmc2V0ICVkIG91dCBvZiBib3VuZHNcbiIs CisJCQkJCQlvZmYgKyB0a2V5LT5hdCk7CisJCQkJCWdvdG8gYmFkOworCQkJCX0KIAkJCQlkID0g c2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2ZmICsgdGtleS0+YXQsIDEsCiAJCQkJCQkgICAgICAg Jl9kKTsKIAkJCQlpZiAoIWQpCkBAIC0xNDEsMTAgKzE1NywxMCBAQCBzdGF0aWMgaW50IHRjZl9w ZWRpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCQkJ CQkiIG9mZnNldCBtdXN0IGJlIG9uIDMyIGJpdCBib3VuZGFyaWVzXG4iKTsKIAkJCQlnb3RvIGJh ZDsKIAkJCX0KLQkJCWlmIChvZmZzZXQgPiAwICYmIG9mZnNldCA+IHNrYi0+bGVuKSB7Ci0JCQkJ cHJfaW5mbygidGMgZmlsdGVyIHBlZGl0IgotCQkJCQkiIG9mZnNldCAlZCBjYW4ndCBleGNlZWQg cGt0IGxlbmd0aCAlZFxuIiwKLQkJCQkgICAgICAgb2Zmc2V0LCBza2ItPmxlbik7CisKKwkJCWlm ICghb2Zmc2V0X3ZhbGlkKHNrYiwgb2ZmICsgb2Zmc2V0KSkgeworCQkJCXByX2luZm8oInRjIGZp bHRlciBwZWRpdCBvZmZzZXQgJWQgb3V0IG9mIGJvdW5kc1xuIiwKKwkJCQkJb2Zmc2V0KTsKIAkJ CQlnb3RvIGJhZDsKIAkJCX0KIApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19hcGkuYyBiL25l dC9zY2hlZC9jbHNfYXBpLmMKaW5kZXggM2IyNjE3YWE2YmNkLi43ZTRlMTUwNzVjODEgMTAwNjQ0 Ci0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmMKKysrIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwpAQCAt MTMyLDEzICsxMzIsMTUgQEAgc3RhdGljIGludCB0Y19jdGxfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4pCiAJdW5zaWduZWQgbG9uZyBjbDsKIAl1bnNpZ25l ZCBsb25nIGZoOwogCWludCBlcnI7Ci0JaW50IHRwX2NyZWF0ZWQgPSAwOworCWludCB0cF9jcmVh dGVkOwogCiAJaWYgKChuLT5ubG1zZ190eXBlICE9IFJUTV9HRVRURklMVEVSKSAmJgogCSAgICAh bmV0bGlua19uc19jYXBhYmxlKHNrYiwgbmV0LT51c2VyX25zLCBDQVBfTkVUX0FETUlOKSkKIAkJ cmV0dXJuIC1FUEVSTTsKIAogcmVwbGF5OgorCXRwX2NyZWF0ZWQgPSAwOworCiAJZXJyID0gbmxt c2dfcGFyc2Uobiwgc2l6ZW9mKCp0KSwgdGNhLCBUQ0FfTUFYLCBOVUxMKTsKIAlpZiAoZXJyIDwg MCkKIAkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9lbV9tZXRhLmMgYi9uZXQv c2NoZWQvZW1fbWV0YS5jCmluZGV4IDliOGMwYjBlNjBkNy4uMzg2YjI5NzFkZjFiIDEwMDY0NAot LS0gYS9uZXQvc2NoZWQvZW1fbWV0YS5jCisrKyBiL25ldC9zY2hlZC9lbV9tZXRhLmMKQEAgLTE3 NiwxMSArMTc2LDEyIEBAIE1FVEFfQ09MTEVDVE9SKGludF92bGFuX3RhZykKIHsKIAl1bnNpZ25l ZCBzaG9ydCB0YWc7CiAKLQl0YWcgPSB2bGFuX3R4X3RhZ19nZXQoc2tiKTsKLQlpZiAoIXRhZyAm JiBfX3ZsYW5fZ2V0X3RhZyhza2IsICZ0YWcpKQotCQkqZXJyID0gLTE7Ci0JZWxzZQorCWlmICh2 bGFuX3R4X3RhZ19wcmVzZW50KHNrYikpCisJCWRzdC0+dmFsdWUgPSB2bGFuX3R4X3RhZ19nZXQo c2tiKTsKKwllbHNlIGlmICghX192bGFuX2dldF90YWcoc2tiLCAmdGFnKSkKIAkJZHN0LT52YWx1 ZSA9IHRhZzsKKwllbHNlCisJCSplcnIgPSAtMTsKIH0KIAogCmRpZmYgLS1naXQgYS9uZXQvc2No ZWQvc2NoX2RzbWFyay5jIGIvbmV0L3NjaGVkL3NjaF9kc21hcmsuYwppbmRleCA1Yjc2NjI0MmFm OTQuLjVkODE4MDI2OWRjOSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9kc21hcmsuYworKysg Yi9uZXQvc2NoZWQvc2NoX2RzbWFyay5jCkBAIC0yNTUsNiArMjU1LDcgQEAgc3RhdGljIGludCBk c21hcmtfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCkKIAkJ cmV0dXJuIGVycjsKIAl9CiAKKwlzY2gtPnFzdGF0cy5iYWNrbG9nICs9IHFkaXNjX3BrdF9sZW4o c2tiKTsKIAlzY2gtPnEucWxlbisrOwogCiAJcmV0dXJuIE5FVF9YTUlUX1NVQ0NFU1M7CkBAIC0y NzcsNiArMjc4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc21hcmtfZGVxdWV1ZShzdHJ1 Y3QgUWRpc2MgKnNjaCkKIAkJcmV0dXJuIE5VTEw7CiAKIAlxZGlzY19ic3RhdHNfdXBkYXRlKHNj aCwgc2tiKTsKKwlzY2gtPnFzdGF0cy5iYWNrbG9nIC09IHFkaXNjX3BrdF9sZW4oc2tiKTsKIAlz Y2gtPnEucWxlbi0tOwogCiAJaW5kZXggPSBza2ItPnRjX2luZGV4ICYgKHAtPmluZGljZXMgLSAx KTsKQEAgLTM5Miw2ICszOTQsNyBAQCBzdGF0aWMgdm9pZCBkc21hcmtfcmVzZXQoc3RydWN0IFFk aXNjICpzY2gpCiAKIAlwcl9kZWJ1ZygiJXMoc2NoICVwLFtxZGlzYyAlcF0pXG4iLCBfX2Z1bmNf Xywgc2NoLCBwKTsKIAlxZGlzY19yZXNldChwLT5xKTsKKwlzY2gtPnFzdGF0cy5iYWNrbG9nID0g MDsKIAlzY2gtPnEucWxlbiA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaHRi LmMgYi9uZXQvc2NoZWQvc2NoX2h0Yi5jCmluZGV4IDcxOGIwMTVkYTVjMy4uYjE2OWE4YTA1YTVk IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2h0Yi5jCisrKyBiL25ldC9zY2hlZC9zY2hfaHRi LmMKQEAgLTYwMCw2ICs2MDAsNyBAQCBzdGF0aWMgaW50IGh0Yl9lbnF1ZXVlKHN0cnVjdCBza19i dWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoKQogCQlodGJfYWN0aXZhdGUocSwgY2wpOwogCX0K IAorCXNjaC0+cXN0YXRzLmJhY2tsb2cgKz0gcWRpc2NfcGt0X2xlbihza2IpOwogCXNjaC0+cS5x bGVuKys7CiAJcmV0dXJuIE5FVF9YTUlUX1NVQ0NFU1M7CiB9CkBAIC04ODksNiArODkwLDcgQEAg c3RhdGljIHN0cnVjdCBza19idWZmICpodGJfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkKIG9r OgogCQlxZGlzY19ic3RhdHNfdXBkYXRlKHNjaCwgc2tiKTsKIAkJcWRpc2NfdW50aHJvdHRsZWQo c2NoKTsKKwkJc2NoLT5xc3RhdHMuYmFja2xvZyAtPSBxZGlzY19wa3RfbGVuKHNrYik7CiAJCXNj aC0+cS5xbGVuLS07CiAJCXJldHVybiBza2I7CiAJfQpAQCAtOTU1LDYgKzk1Nyw3IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgaHRiX2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gpCiAJCQl1bnNpZ25lZCBp bnQgbGVuOwogCQkJaWYgKGNsLT51bi5sZWFmLnEtPm9wcy0+ZHJvcCAmJgogCQkJICAgIChsZW4g PSBjbC0+dW4ubGVhZi5xLT5vcHMtPmRyb3AoY2wtPnVuLmxlYWYucSkpKSB7CisJCQkJc2NoLT5x c3RhdHMuYmFja2xvZyAtPSBsZW47CiAJCQkJc2NoLT5xLnFsZW4tLTsKIAkJCQlpZiAoIWNsLT51 bi5sZWFmLnEtPnEucWxlbikKIAkJCQkJaHRiX2RlYWN0aXZhdGUocSwgY2wpOwpAQCAtOTg0LDEy ICs5ODcsMTIgQEAgc3RhdGljIHZvaWQgaHRiX3Jlc2V0KHN0cnVjdCBRZGlzYyAqc2NoKQogCQkJ fQogCQkJY2wtPnByaW9fYWN0aXZpdHkgPSAwOwogCQkJY2wtPmNtb2RlID0gSFRCX0NBTl9TRU5E OwotCiAJCX0KIAl9CiAJcWRpc2Nfd2F0Y2hkb2dfY2FuY2VsKCZxLT53YXRjaGRvZyk7CiAJX19z a2JfcXVldWVfcHVyZ2UoJnEtPmRpcmVjdF9xdWV1ZSk7CiAJc2NoLT5xLnFsZW4gPSAwOworCXNj aC0+cXN0YXRzLmJhY2tsb2cgPSAwOwogCW1lbXNldChxLT5obGV2ZWwsIDAsIHNpemVvZihxLT5o bGV2ZWwpKTsKIAltZW1zZXQocS0+cm93X21hc2ssIDAsIHNpemVvZihxLT5yb3dfbWFzaykpOwog CWZvciAoaSA9IDA7IGkgPCBUQ19IVEJfTlVNUFJJTzsgaSsrKQpkaWZmIC0tZ2l0IGEvbmV0L3Nj aGVkL3NjaF9uZXRlbS5jIGIvbmV0L3NjaGVkL3NjaF9uZXRlbS5jCmluZGV4IDczZjFkYjhlODAz OS4uYWE5ZTA3ODE2ZmViIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX25ldGVtLmMKKysrIGIv bmV0L3NjaGVkL3NjaF9uZXRlbS5jCkBAIC00MDgsNiArNDA4LDI1IEBAIHN0YXRpYyB2b2lkIHRm aWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKm5za2IsIHN0cnVjdCBRZGlzYyAqc2NoKQogCXNj aC0+cS5xbGVuKys7CiB9CiAKKy8qIG5ldGVtIGNhbid0IHByb3Blcmx5IGNvcnJ1cHQgYSBtZWdh cGFja2V0IChsaWtlIHdlIGdldCBmcm9tIEdTTyksIHNvIGluc3RlYWQKKyAqIHdoZW4gd2Ugc3Rh dGlzdGljYWxseSBjaG9vc2UgdG8gY29ycnVwdCBvbmUsIHdlIGluc3RlYWQgc2VnbWVudCBpdCwg cmV0dXJuaW5nCisgKiB0aGUgZmlyc3QgcGFja2V0IHRvIGJlIGNvcnJ1cHRlZCwgYW5kIHJlLWVu cXVldWUgdGhlIHJlbWFpbmluZyBmcmFtZXMKKyAqLworc3RhdGljIHN0cnVjdCBza19idWZmICpu ZXRlbV9zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoKQorewor CXN0cnVjdCBza19idWZmICpzZWdzOworCW5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzID0gbmV0 aWZfc2tiX2ZlYXR1cmVzKHNrYik7CisKKwlzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgZmVh dHVyZXMgJiB+TkVUSUZfRl9HU09fTUFTSyk7CisKKwlpZiAoSVNfRVJSX09SX05VTEwoc2Vncykp IHsKKwkJcWRpc2NfcmVzaGFwZV9mYWlsKHNrYiwgc2NoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQor CWNvbnN1bWVfc2tiKHNrYik7CisJcmV0dXJuIHNlZ3M7Cit9CisKIC8qCiAgKiBJbnNlcnQgb25l IHNrYiBpbnRvIHFkaXNjLgogICogTm90ZTogcGFyZW50IGRlcGVuZHMgb24gcmV0dXJuIHZhbHVl IHRvIGFjY291bnQgZm9yIHF1ZXVlIGxlbmd0aC4KQEAgLTQyMCw3ICs0MzksMTEgQEAgc3RhdGlj IGludCBuZXRlbV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2No KQogCS8qIFdlIGRvbid0IGZpbGwgY2Igbm93IGFzIHNrYl91bnNoYXJlKCkgbWF5IGludmFsaWRh dGUgaXQgKi8KIAlzdHJ1Y3QgbmV0ZW1fc2tiX2NiICpjYjsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2ti MjsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2VncyA9IE5VTEw7CisJdW5zaWduZWQgaW50IGxlbiA9IDAs IGxhc3RfbGVuLCBwcmV2X2xlbiA9IHFkaXNjX3BrdF9sZW4oc2tiKTsKKwlpbnQgbmIgPSAwOwog CWludCBjb3VudCA9IDE7CisJaW50IHJjID0gTkVUX1hNSVRfU1VDQ0VTUzsKIAogCS8qIFJhbmRv bSBkdXBsaWNhdGlvbiAqLwogCWlmIChxLT5kdXBsaWNhdGUgJiYgcS0+ZHVwbGljYXRlID49IGdl dF9jcmFuZG9tKCZxLT5kdXBfY29yKSkKQEAgLTQ2NiwxMCArNDg5LDIzIEBAIHN0YXRpYyBpbnQg bmV0ZW1fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCkKIAkg KiBkbyBpdCBub3cgaW4gc29mdHdhcmUgYmVmb3JlIHdlIG1hbmdsZSBpdC4KIAkgKi8KIAlpZiAo cS0+Y29ycnVwdCAmJiBxLT5jb3JydXB0ID49IGdldF9jcmFuZG9tKCZxLT5jb3JydXB0X2Nvcikp IHsKKwkJaWYgKHNrYl9pc19nc28oc2tiKSkgeworCQkJc2VncyA9IG5ldGVtX3NlZ21lbnQoc2ti LCBzY2gpOworCQkJaWYgKCFzZWdzKQorCQkJCXJldHVybiBORVRfWE1JVF9EUk9QOworCQl9IGVs c2UgeworCQkJc2VncyA9IHNrYjsKKwkJfQorCisJCXNrYiA9IHNlZ3M7CisJCXNlZ3MgPSBzZWdz LT5uZXh0OworCiAJCWlmICghKHNrYiA9IHNrYl91bnNoYXJlKHNrYiwgR0ZQX0FUT01JQykpIHx8 CiAJCSAgICAoc2tiLT5pcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmJgotCQkgICAgIHNr Yl9jaGVja3N1bV9oZWxwKHNrYikpKQotCQkJcmV0dXJuIHFkaXNjX2Ryb3Aoc2tiLCBzY2gpOwor CQkgICAgIHNrYl9jaGVja3N1bV9oZWxwKHNrYikpKSB7CisJCQlyYyA9IHFkaXNjX2Ryb3Aoc2ti LCBzY2gpOworCQkJZ290byBmaW5pc2hfc2VnczsKKwkJfQogCiAJCXNrYi0+ZGF0YVtwcmFuZG9t X3UzMigpICUgc2tiX2hlYWRsZW4oc2tiKV0gXj0KIAkJCTE8PChwcmFuZG9tX3UzMigpICUgOCk7 CkBAIC01MjksNiArNTY1LDI3IEBAIHN0YXRpYyBpbnQgbmV0ZW1fZW5xdWV1ZShzdHJ1Y3Qgc2tf YnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCkKIAkJc2NoLT5xc3RhdHMucmVxdWV1ZXMrKzsK IAl9CiAKK2ZpbmlzaF9zZWdzOgorCWlmIChzZWdzKSB7CisJCXdoaWxlIChzZWdzKSB7CisJCQlz a2IyID0gc2Vncy0+bmV4dDsKKwkJCXNlZ3MtPm5leHQgPSBOVUxMOworCQkJcWRpc2Nfc2tiX2Ni KHNlZ3MpLT5wa3RfbGVuID0gc2Vncy0+bGVuOworCQkJbGFzdF9sZW4gPSBzZWdzLT5sZW47CisJ CQlyYyA9IHFkaXNjX2VucXVldWUoc2Vncywgc2NoKTsKKwkJCWlmIChyYyAhPSBORVRfWE1JVF9T VUNDRVNTKSB7CisJCQkJaWYgKG5ldF94bWl0X2Ryb3BfY291bnQocmMpKQorCQkJCQlzY2gtPnFz dGF0cy5kcm9wcysrOworCQkJfSBlbHNlIHsKKwkJCQluYisrOworCQkJCWxlbiArPSBsYXN0X2xl bjsKKwkJCX0KKwkJCXNlZ3MgPSBza2IyOworCQl9CisJCXNjaC0+cS5xbGVuICs9IG5iOworCQlp ZiAobmIgPiAxKQorCQkJcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzY2gsIDEgLSBuYiwgcHJl dl9sZW4gLSBsZW4pOworCX0KIAlyZXR1cm4gTkVUX1hNSVRfU1VDQ0VTUzsKIH0KIApkaWZmIC0t Z2l0IGEvbmV0L3NjdHAvc29ja2V0LmMgYi9uZXQvc2N0cC9zb2NrZXQuYwppbmRleCBhZGZiNGI1 ODgzMWYuLmFkMDI5MjI2MjU4MSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc29ja2V0LmMKKysrIGIv bmV0L3NjdHAvc29ja2V0LmMKQEAgLTEyMTcsOSArMTIxNywxMiBAQCBzdGF0aWMgaW50IF9fc2N0 cF9jb25uZWN0KHN0cnVjdCBzb2NrICpzaywKIAogCXRpbWVvID0gc29ja19zbmR0aW1lbyhzaywg Zl9mbGFncyAmIE9fTk9OQkxPQ0spOwogCi0JZXJyID0gc2N0cF93YWl0X2Zvcl9jb25uZWN0KGFz b2MsICZ0aW1lbyk7Ci0JaWYgKChlcnIgPT0gMCB8fCBlcnIgPT0gLUVJTlBST0dSRVNTKSAmJiBh c3NvY19pZCkKKwlpZiAoYXNzb2NfaWQpCiAJCSphc3NvY19pZCA9IGFzb2MtPmFzc29jX2lkOwor CWVyciA9IHNjdHBfd2FpdF9mb3JfY29ubmVjdChhc29jLCAmdGltZW8pOworCS8qIE5vdGU6IHRo ZSBhc29jIG1heSBiZSBmcmVlZCBhZnRlciB0aGUgcmV0dXJuIG9mCisJICogc2N0cF93YWl0X2Zv cl9jb25uZWN0LgorCSAqLwogCiAJLyogRG9uJ3QgZnJlZSBhc3NvY2lhdGlvbiBvbiBleGl0LiAq LwogCWFzb2MgPSBOVUxMOwpAQCAtNDI4MCw3ICs0MjgzLDcgQEAgc3RhdGljIGludCBzY3RwX2dl dHNvY2tvcHRfZGlzYWJsZV9mcmFnbWVudHMoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGVuLAogc3Rh dGljIGludCBzY3RwX2dldHNvY2tvcHRfZXZlbnRzKHN0cnVjdCBzb2NrICpzaywgaW50IGxlbiwg Y2hhciBfX3VzZXIgKm9wdHZhbCwKIAkJCQkgIGludCBfX3VzZXIgKm9wdGxlbikKIHsKLQlpZiAo bGVuIDw9IDApCisJaWYgKGxlbiA9PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlpZiAobGVuID4g c2l6ZW9mKHN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmliZSkpCiAJCWxlbiA9IHNpemVvZihzdHJ1 Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUpOwpAQCAtNDMyOCw2ICs0MzMxLDEyIEBAIGludCBzY3Rw X2RvX3BlZWxvZmYoc3RydWN0IHNvY2sgKnNrLCBzY3RwX2Fzc29jX3QgaWQsIHN0cnVjdCBzb2Nr ZXQgKipzb2NrcCkKIAlpZiAoIWFzb2MpCiAJCXJldHVybiAtRUlOVkFMOwogCisJLyogSWYgdGhl cmUgaXMgYSB0aHJlYWQgd2FpdGluZyBvbiBtb3JlIHNuZGJ1ZiBzcGFjZSBmb3IKKwkgKiBzZW5k aW5nIG9uIHRoaXMgYXNvYywgaXQgY2Fubm90IGJlIHBlZWxlZC4KKwkgKi8KKwlpZiAod2FpdHF1 ZXVlX2FjdGl2ZSgmYXNvYy0+d2FpdCkpCisJCXJldHVybiAtRUJVU1k7CisKIAkvKiBBbiBhc3Nv Y2lhdGlvbiBjYW5ub3QgYmUgYnJhbmNoZWQgb2ZmIGZyb20gYW4gYWxyZWFkeSBwZWVsZWQtb2Zm CiAJICogc29ja2V0LCBub3IgaXMgdGhpcyBzdXBwb3J0ZWQgZm9yIHRjcCBzdHlsZSBzb2NrZXRz LgogCSAqLwpAQCAtNTgwMSw2ICs1ODEwLDkgQEAgc3RhdGljIGludCBzY3RwX2dldHNvY2tvcHQo c3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCWlmIChnZXRfdXNlcihs ZW4sIG9wdGxlbikpCiAJCXJldHVybiAtRUZBVUxUOwogCisJaWYgKGxlbiA8IDApCisJCXJldHVy biAtRUlOVkFMOworCiAJbG9ja19zb2NrKHNrKTsKIAogCXN3aXRjaCAob3B0bmFtZSkgewpAQCAt Njc1NCw3ICs2NzY2LDYgQEAgc3RhdGljIGludCBzY3RwX3dhaXRfZm9yX3NuZGJ1ZihzdHJ1Y3Qg c2N0cF9hc3NvY2lhdGlvbiAqYXNvYywgbG9uZyAqdGltZW9fcCwKIAkJICovCiAJCXJlbGVhc2Vf c29jayhzayk7CiAJCWN1cnJlbnRfdGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KGN1cnJlbnRfdGlt ZW8pOwotCQlCVUdfT04oc2sgIT0gYXNvYy0+YmFzZS5zayk7CiAJCWxvY2tfc29jayhzayk7CiAK IAkJKnRpbWVvX3AgPSBjdXJyZW50X3RpbWVvOwpkaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIv bmV0L3NvY2tldC5jCmluZGV4IDhkYTJlMmVhNDE1MS4uY2NmYWViY2RiYTY2IDEwMDY0NAotLS0g YS9uZXQvc29ja2V0LmMKKysrIGIvbmV0L3NvY2tldC5jCkBAIC0xOTk4LDcgKzE5OTgsNyBAQCBz dGF0aWMgaW50IGNvcHlfbXNnaGRyX2Zyb21fdXNlcihzdHJ1Y3QgbXNnaGRyICprbXNnLAogCiBz dGF0aWMgaW50IF9fX3N5c19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2do ZHIgX191c2VyICptc2csCiAJCQkgc3RydWN0IG1zZ2hkciAqbXNnX3N5cywgdW5zaWduZWQgaW50 IGZsYWdzLAotCQkJIHN0cnVjdCB1c2VkX2FkZHJlc3MgKnVzZWRfYWRkcmVzcykKKwkJCSBzdHJ1 Y3QgdXNlZF9hZGRyZXNzICp1c2VkX2FkZHJlc3MsIGludCAqcmVzaWR1ZSkKIHsKIAlzdHJ1Y3Qg Y29tcGF0X21zZ2hkciBfX3VzZXIgKm1zZ19jb21wYXQgPQogCSAgICAoc3RydWN0IGNvbXBhdF9t c2doZHIgX191c2VyICopbXNnOwpAQCAtMjA5Nyw2ICsyMDk3LDggQEAgc3RhdGljIGludCBfX19z eXNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyIF9fdXNlciAqbXNn LAogCQkJbWVtY3B5KCZ1c2VkX2FkZHJlc3MtPm5hbWUsIG1zZ19zeXMtPm1zZ19uYW1lLAogCQkJ ICAgICAgIHVzZWRfYWRkcmVzcy0+bmFtZV9sZW4pOwogCX0KKwlpZiAocmVzaWR1ZSAmJiBlcnIg Pj0gMCkKKwkJKnJlc2lkdWUgPSB0b3RhbF9sZW4gLSBlcnI7CiAKIG91dF9mcmVlY3RsOgogCWlm IChjdGxfYnVmICE9IGN0bCkKQEAgLTIxMjIsNyArMjEyNCw3IEBAIGxvbmcgX19zeXNfc2VuZG1z ZyhpbnQgZmQsIHN0cnVjdCBtc2doZHIgX191c2VyICptc2csIHVuc2lnbmVkIGZsYWdzKQogCWlm ICghc29jaykKIAkJZ290byBvdXQ7CiAKLQllcnIgPSBfX19zeXNfc2VuZG1zZyhzb2NrLCBtc2cs ICZtc2dfc3lzLCBmbGFncywgTlVMTCk7CisJZXJyID0gX19fc3lzX3NlbmRtc2coc29jaywgbXNn LCAmbXNnX3N5cywgZmxhZ3MsIE5VTEwsIE5VTEwpOwogCiAJZnB1dF9saWdodChzb2NrLT5maWxl LCBmcHV0X25lZWRlZCk7CiBvdXQ6CkBAIC0yMTQ5LDYgKzIxNTEsNyBAQCBpbnQgX19zeXNfc2Vu ZG1tc2coaW50IGZkLCBzdHJ1Y3QgbW1zZ2hkciBfX3VzZXIgKm1tc2csIHVuc2lnbmVkIGludCB2 bGVuLAogCXN0cnVjdCBjb21wYXRfbW1zZ2hkciBfX3VzZXIgKmNvbXBhdF9lbnRyeTsKIAlzdHJ1 Y3QgbXNnaGRyIG1zZ19zeXM7CiAJc3RydWN0IHVzZWRfYWRkcmVzcyB1c2VkX2FkZHJlc3M7CisJ aW50IHJlc2lkdWU7CiAKIAlpZiAodmxlbiA+IFVJT19NQVhJT1YpCiAJCXZsZW4gPSBVSU9fTUFY SU9WOwpAQCAtMjE2Nyw3ICsyMTcwLDggQEAgaW50IF9fc3lzX3NlbmRtbXNnKGludCBmZCwgc3Ry dWN0IG1tc2doZHIgX191c2VyICptbXNnLCB1bnNpZ25lZCBpbnQgdmxlbiwKIAl3aGlsZSAoZGF0 YWdyYW1zIDwgdmxlbikgewogCQlpZiAoTVNHX0NNU0dfQ09NUEFUICYgZmxhZ3MpIHsKIAkJCWVy ciA9IF9fX3N5c19zZW5kbXNnKHNvY2ssIChzdHJ1Y3QgbXNnaGRyIF9fdXNlciAqKWNvbXBhdF9l bnRyeSwKLQkJCQkJICAgICAmbXNnX3N5cywgZmxhZ3MsICZ1c2VkX2FkZHJlc3MpOworCQkJCQkg ICAgICZtc2dfc3lzLCBmbGFncywgJnVzZWRfYWRkcmVzcywKKwkJCQkJICAgICAmcmVzaWR1ZSk7 CiAJCQlpZiAoZXJyIDwgMCkKIAkJCQlicmVhazsKIAkJCWVyciA9IF9fcHV0X3VzZXIoZXJyLCAm Y29tcGF0X2VudHJ5LT5tc2dfbGVuKTsKQEAgLTIxNzUsNyArMjE3OSw4IEBAIGludCBfX3N5c19z ZW5kbW1zZyhpbnQgZmQsIHN0cnVjdCBtbXNnaGRyIF9fdXNlciAqbW1zZywgdW5zaWduZWQgaW50 IHZsZW4sCiAJCX0gZWxzZSB7CiAJCQllcnIgPSBfX19zeXNfc2VuZG1zZyhzb2NrLAogCQkJCQkg ICAgIChzdHJ1Y3QgbXNnaGRyIF9fdXNlciAqKWVudHJ5LAotCQkJCQkgICAgICZtc2dfc3lzLCBm bGFncywgJnVzZWRfYWRkcmVzcyk7CisJCQkJCSAgICAgJm1zZ19zeXMsIGZsYWdzLCAmdXNlZF9h ZGRyZXNzLAorCQkJCQkgICAgICZyZXNpZHVlKTsKIAkJCWlmIChlcnIgPCAwKQogCQkJCWJyZWFr OwogCQkJZXJyID0gcHV0X3VzZXIoZXJyLCAmZW50cnktPm1zZ19sZW4pOwpAQCAtMjE4NSw2ICsy MTkwLDggQEAgaW50IF9fc3lzX3NlbmRtbXNnKGludCBmZCwgc3RydWN0IG1tc2doZHIgX191c2Vy ICptbXNnLCB1bnNpZ25lZCBpbnQgdmxlbiwKIAkJaWYgKGVycikKIAkJCWJyZWFrOwogCQkrK2Rh dGFncmFtczsKKwkJaWYgKHJlc2lkdWUpCisJCQlicmVhazsKIAl9CiAKIAlmcHV0X2xpZ2h0KHNv Y2stPmZpbGUsIGZwdXRfbmVlZGVkKTsKQEAgLTIzNDksOCArMjM1NiwxMCBAQCBpbnQgX19zeXNf cmVjdm1tc2coaW50IGZkLCBzdHJ1Y3QgbW1zZ2hkciBfX3VzZXIgKm1tc2csIHVuc2lnbmVkIGlu dCB2bGVuLAogCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gc29ja19lcnJvcihzb2NrLT5zayk7Ci0J aWYgKGVycikKKwlpZiAoZXJyKSB7CisJCWRhdGFncmFtcyA9IGVycjsKIAkJZ290byBvdXRfcHV0 OworCX0KIAogCWVudHJ5ID0gbW1zZzsKIAljb21wYXRfZW50cnkgPSAoc3RydWN0IGNvbXBhdF9t bXNnaGRyIF9fdXNlciAqKW1tc2c7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL2F1dGhfZ3NzL2dz c19ycGNfeGRyLmMgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL2dzc19ycGNfeGRyLmMKaW5kZXggZWVl YmE1YWRlZTZkLi4yNDEwZDU1N2FlMzkgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvYXV0aF9nc3Mv Z3NzX3JwY194ZHIuYworKysgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL2dzc19ycGNfeGRyLmMKQEAg LTI2MCw3ICsyNjAsNyBAQCBzdGF0aWMgaW50IGdzc3hfZGVjX29wdGlvbl9hcnJheShzdHJ1Y3Qg eGRyX3N0cmVhbSAqeGRyLAogCWlmICghb2EtPmRhdGEpCiAJCXJldHVybiAtRU5PTUVNOwogCi0J Y3JlZHMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3ZjX2NyZWQpLCBHRlBfS0VSTkVMKTsKKwlj cmVkcyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzdmNfY3JlZCksIEdGUF9LRVJORUwpOwogCWlm ICghY3JlZHMpIHsKIAkJa2ZyZWUob2EtPmRhdGEpOwogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAt LWdpdCBhL25ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYyBiL25ldC9zdW5ycGMvYXV0 aF9nc3Mvc3ZjYXV0aF9nc3MuYwppbmRleCBlZmFjMTIwMWM1NWQuLjhiYzA3N2YzZTkxZiAxMDA2 NDQKLS0tIGEvbmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jCisrKyBiL25ldC9zdW5y cGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYwpAQCAtMTQ3OSw3ICsxNDc5LDcgQEAgc3ZjYXV0aF9n c3NfYWNjZXB0KHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIF9fYmUzMiAqYXV0aHApCiAJY2FzZSBS UENfR1NTX1BST0NfREVTVFJPWToKIAkJaWYgKGdzc193cml0ZV92ZXJmKHJxc3RwLCByc2NpLT5t ZWNoY3R4LCBnYy0+Z2Nfc2VxKSkKIAkJCWdvdG8gYXV0aF9lcnI7Ci0JCXJzY2ktPmguZXhwaXJ5 X3RpbWUgPSBnZXRfc2Vjb25kcygpOworCQlyc2NpLT5oLmV4cGlyeV90aW1lID0gc2Vjb25kc19z aW5jZV9ib290KCk7CiAJCXNldF9iaXQoQ0FDSEVfTkVHQVRJVkUsICZyc2NpLT5oLmZsYWdzKTsK IAkJaWYgKHJlc3YtPmlvdl9sZW4gKyA0ID4gUEFHRV9TSVpFKQogCQkJZ290byBkcm9wOwpkaWZm IC0tZ2l0IGEvbmV0L3N1bnJwYy9jbG50LmMgYi9uZXQvc3VucnBjL2NsbnQuYwppbmRleCA3MDI3 M2FiMzBlODUuLjcxMGQ0MTkxZTlkNSAxMDA2NDQKLS0tIGEvbmV0L3N1bnJwYy9jbG50LmMKKysr IGIvbmV0L3N1bnJwYy9jbG50LmMKQEAgLTMzNiw2ICszMzYsMTEgQEAgb3V0OgogCiBzdGF0aWMg REVGSU5FX0lEQShycGNfY2xpZHMpOwogCit2b2lkIHJwY19jbGVhbnVwX2NsaWRzKHZvaWQpCit7 CisJaWRhX2Rlc3Ryb3koJnJwY19jbGlkcyk7Cit9CisKIHN0YXRpYyBpbnQgcnBjX2FsbG9jX2Ns aWQoc3RydWN0IHJwY19jbG50ICpjbG50KQogewogCWludCBjbGlkOwpkaWZmIC0tZ2l0IGEvbmV0 L3N1bnJwYy9zdW5ycGNfc3ltcy5jIGIvbmV0L3N1bnJwYy9zdW5ycGNfc3ltcy5jCmluZGV4IGNk MzAxMjBkZTllNC4uYWVmYjQ0ODg4ODBmIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3N1bnJwY19z eW1zLmMKKysrIGIvbmV0L3N1bnJwYy9zdW5ycGNfc3ltcy5jCkBAIC0xMTcsNiArMTE3LDcgQEAg b3V0Ogogc3RhdGljIHZvaWQgX19leGl0CiBjbGVhbnVwX3N1bnJwYyh2b2lkKQogeworCXJwY19j bGVhbnVwX2NsaWRzKCk7CiAJcnBjYXV0aF9yZW1vdmVfbW9kdWxlKCk7CiAJY2xlYW51cF9zb2Nr ZXRfeHBydCgpOwogCXN2Y19jbGVhbnVwX3hwcnRfc29jaygpOwpkaWZmIC0tZ2l0IGEvbmV0L3Zt d192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jCmluZGV4IDg1ZDIz MmJlZDg3ZC4uZThkMzMxM2VhMmM5IDEwMDY0NAotLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2Nr LmMKKysrIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jCkBAIC0xNzk2LDI3ICsxNzk2LDggQEAg dnNvY2tfc3RyZWFtX3JlY3Ztc2coc3RydWN0IGtpb2NiICpraW9jYiwKIAllbHNlIGlmIChzay0+ c2tfc2h1dGRvd24gJiBSQ1ZfU0hVVERPV04pCiAJCWVyciA9IDA7CiAKLQlpZiAoY29waWVkID4g MCkgewotCQkvKiBXZSBvbmx5IGRvIHRoZXNlIGFkZGl0aW9uYWwgYm9va2tlZXBpbmcvbm90aWZp Y2F0aW9uIHN0ZXBzCi0JCSAqIGlmIHdlIGFjdHVhbGx5IGNvcGllZCBzb21ldGhpbmcgb3V0IG9m IHRoZSBxdWV1ZSBwYWlyCi0JCSAqIGluc3RlYWQgb2YganVzdCBwZWVraW5nIGFoZWFkLgotCQkg Ki8KLQotCQlpZiAoIShmbGFncyAmIE1TR19QRUVLKSkgewotCQkJLyogSWYgdGhlIG90aGVyIHNp ZGUgaGFzIHNodXRkb3duIGZvciBzZW5kaW5nIGFuZCB0aGVyZQotCQkJICogaXMgbm90aGluZyBt b3JlIHRvIHJlYWQsIHRoZW4gbW9kaWZ5IHRoZSBzb2NrZXQKLQkJCSAqIHN0YXRlLgotCQkJICov Ci0JCQlpZiAodnNrLT5wZWVyX3NodXRkb3duICYgU0VORF9TSFVURE9XTikgewotCQkJCWlmICh2 c29ja19zdHJlYW1faGFzX2RhdGEodnNrKSA8PSAwKSB7Ci0JCQkJCXNrLT5za19zdGF0ZSA9IFNT X1VOQ09OTkVDVEVEOwotCQkJCQlzb2NrX3NldF9mbGFnKHNrLCBTT0NLX0RPTkUpOwotCQkJCQlz ay0+c2tfc3RhdGVfY2hhbmdlKHNrKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KKwlpZiAoY29waWVkID4g MCkKIAkJZXJyID0gY29waWVkOwotCX0KIAogb3V0X3dhaXQ6CiAJZmluaXNoX3dhaXQoc2tfc2xl ZXAoc2spLCAmd2FpdCk7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvY29yZS5oIGIvbmV0L3dp cmVsZXNzL2NvcmUuaAppbmRleCBjNGQ0YjBjNGYwZTYuLjgwNWFhYWIwNWZmYyAxMDA2NDQKLS0t IGEvbmV0L3dpcmVsZXNzL2NvcmUuaAorKysgYi9uZXQvd2lyZWxlc3MvY29yZS5oCkBAIC0zNjks NiArMzY5LDcgQEAgdm9pZCBjZmc4MDIxMV9zbWVfZGlzYXNzb2Moc3RydWN0IHdpcmVsZXNzX2Rl diAqd2Rldik7CiB2b2lkIGNmZzgwMjExX3NtZV9kZWF1dGgoc3RydWN0IHdpcmVsZXNzX2RldiAq d2Rldik7CiB2b2lkIGNmZzgwMjExX3NtZV9hdXRoX3RpbWVvdXQoc3RydWN0IHdpcmVsZXNzX2Rl diAqd2Rldik7CiB2b2lkIGNmZzgwMjExX3NtZV9hc3NvY190aW1lb3V0KHN0cnVjdCB3aXJlbGVz c19kZXYgKndkZXYpOwordm9pZCBjZmc4MDIxMV9zbWVfYWJhbmRvbl9hc3NvYyhzdHJ1Y3Qgd2ly ZWxlc3NfZGV2ICp3ZGV2KTsKIAogLyogaW50ZXJuYWwgaGVscGVycyAqLwogYm9vbCBjZmc4MDIx MV9zdXBwb3J0ZWRfY2lwaGVyX3N1aXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUzMiBjaXBoZXIp OwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL21sbWUuYyBiL25ldC93aXJlbGVzcy9tbG1lLmMK aW5kZXggMjY2NzY2YjhkODBiLi42NmRkOWJmZTVhOTYgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVz cy9tbG1lLmMKKysrIGIvbmV0L3dpcmVsZXNzL21sbWUuYwpAQCAtMTQ4LDYgKzE0OCwxOCBAQCB2 b2lkIGNmZzgwMjExX2Fzc29jX3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0 IGNmZzgwMjExX2JzcyAqYnNzKQogfQogRVhQT1JUX1NZTUJPTChjZmc4MDIxMV9hc3NvY190aW1l b3V0KTsKIAordm9pZCBjZmc4MDIxMV9hYmFuZG9uX2Fzc29jKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcykKK3sKKwlzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3 ZGV2ID0gZGV2LT5pZWVlODAyMTFfcHRyOworCXN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3ZGV2LT53 aXBoeTsKKworCWNmZzgwMjExX3NtZV9hYmFuZG9uX2Fzc29jKHdkZXYpOworCisJY2ZnODAyMTFf dW5ob2xkX2Jzcyhic3NfZnJvbV9wdWIoYnNzKSk7CisJY2ZnODAyMTFfcHV0X2Jzcyh3aXBoeSwg YnNzKTsKK30KK0VYUE9SVF9TWU1CT0woY2ZnODAyMTFfYWJhbmRvbl9hc3NvYyk7CisKIHZvaWQg Y2ZnODAyMTFfdHhfbWxtZV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpi dWYsIHNpemVfdCBsZW4pCiB7CiAJc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiA9IGRldi0+aWVl ZTgwMjExX3B0cjsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zbWUuYyBiL25ldC93aXJlbGVz cy9zbWUuYwppbmRleCA4YmJlZWIzMDIyMTYuLmM3NDUwNWMxYTMyMCAxMDA2NDQKLS0tIGEvbmV0 L3dpcmVsZXNzL3NtZS5jCisrKyBiL25ldC93aXJlbGVzcy9zbWUuYwpAQCAtMzksNiArMzksNyBA QCBzdHJ1Y3QgY2ZnODAyMTFfY29ubiB7CiAJCUNGRzgwMjExX0NPTk5fQVNTT0NJQVRJTkcsCiAJ CUNGRzgwMjExX0NPTk5fQVNTT0NfRkFJTEVELAogCQlDRkc4MDIxMV9DT05OX0RFQVVUSCwKKwkJ Q0ZHODAyMTFfQ09OTl9BQkFORE9OLAogCQlDRkc4MDIxMV9DT05OX0NPTk5FQ1RFRCwKIAl9IHN0 YXRlOwogCXU4IGJzc2lkW0VUSF9BTEVOXSwgcHJldl9ic3NpZFtFVEhfQUxFTl07CkBAIC0xOTUs NiArMTk2LDggQEAgc3RhdGljIGludCBjZmc4MDIxMV9jb25uX2RvX3dvcmsoc3RydWN0IHdpcmVs ZXNzX2RldiAqd2RldikKIAkJY2ZnODAyMTFfbWxtZV9kZWF1dGgocmRldiwgd2Rldi0+bmV0ZGV2 LCBwYXJhbXMtPmJzc2lkLAogCQkJCSAgICAgTlVMTCwgMCwKIAkJCQkgICAgIFdMQU5fUkVBU09O X0RFQVVUSF9MRUFWSU5HLCBmYWxzZSk7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgQ0ZH ODAyMTFfQ09OTl9BQkFORE9OOgogCQkvKiBmcmVlIGRpcmVjdGx5LCBkaXNjb25uZWN0ZWQgZXZl bnQgYWxyZWFkeSBzZW50ICovCiAJCWNmZzgwMjExX3NtZV9mcmVlKHdkZXYpOwogCQlyZXR1cm4g MDsKQEAgLTQxOCw2ICs0MjEsMTcgQEAgdm9pZCBjZmc4MDIxMV9zbWVfYXNzb2NfdGltZW91dChz dHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KQogCXNjaGVkdWxlX3dvcmsoJnJkZXYtPmNvbm5fd29y ayk7CiB9CiAKK3ZvaWQgY2ZnODAyMTFfc21lX2FiYW5kb25fYXNzb2Moc3RydWN0IHdpcmVsZXNz X2RldiAqd2RldikKK3sKKwlzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYg PSB3aXBoeV90b19yZGV2KHdkZXYtPndpcGh5KTsKKworCWlmICghd2Rldi0+Y29ubikKKwkJcmV0 dXJuOworCisJd2Rldi0+Y29ubi0+c3RhdGUgPSBDRkc4MDIxMV9DT05OX0FCQU5ET047CisJc2No ZWR1bGVfd29yaygmcmRldi0+Y29ubl93b3JrKTsKK30KKwogc3RhdGljIGludCBjZmc4MDIxMV9z bWVfY29ubmVjdChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBjZmc4MDIx MV9jb25uZWN0X3BhcmFtcyAqY29ubmVjdCwKIAkJCQljb25zdCB1OCAqcHJldl9ic3NpZCkKZGlm ZiAtLWdpdCBhL3NjcmlwdHMva2NvbmZpZy9uY29uZi5ndWkuYyBiL3NjcmlwdHMva2NvbmZpZy9u Y29uZi5ndWkuYwppbmRleCA4Mjc1ZjBlNTUxMDYuLjRiMmY0NGMyMGNhZiAxMDA2NDQKLS0tIGEv c2NyaXB0cy9rY29uZmlnL25jb25mLmd1aS5jCisrKyBiL3NjcmlwdHMva2NvbmZpZy9uY29uZi5n dWkuYwpAQCAtMzY0LDEyICszNjQsMTQgQEAgaW50IGRpYWxvZ19pbnB1dGJveChXSU5ET1cgKm1h aW5fd2luZG93LAogCVdJTkRPVyAqcHJvbXB0X3dpbjsKIAlXSU5ET1cgKmZvcm1fd2luOwogCVBB TkVMICpwYW5lbDsKLQlpbnQgaSwgeCwgeTsKKwlpbnQgaSwgeCwgeSwgbGluZXMsIGNvbHVtbnMs IHdpbl9saW5lcywgd2luX2NvbHM7CiAJaW50IHJlcyA9IC0xOwogCWludCBjdXJzb3JfcG9zaXRp b24gPSBzdHJsZW4oaW5pdCk7CiAJaW50IGN1cnNvcl9mb3JtX3dpbjsKIAljaGFyICpyZXN1bHQg PSAqcmVzdWx0cDsKIAorCWdldG1heHl4KHN0ZHNjciwgbGluZXMsIGNvbHVtbnMpOworCiAJaWYg KHN0cmxlbihpbml0KSsxID4gKnJlc3VsdF9sZW4pIHsKIAkJKnJlc3VsdF9sZW4gPSBzdHJsZW4o aW5pdCkrMTsKIAkJKnJlc3VsdHAgPSByZXN1bHQgPSByZWFsbG9jKHJlc3VsdCwgKnJlc3VsdF9s ZW4pOwpAQCAtMzg2LDE0ICszODgsMTkgQEAgaW50IGRpYWxvZ19pbnB1dGJveChXSU5ET1cgKm1h aW5fd2luZG93LAogCWlmICh0aXRsZSkKIAkJcHJvbXB0X3dpZHRoID0gbWF4KHByb21wdF93aWR0 aCwgc3RybGVuKHRpdGxlKSk7CiAKKwl3aW5fbGluZXMgPSBtaW4ocHJvbXB0X2xpbmVzKzYsIGxp bmVzLTIpOworCXdpbl9jb2xzID0gbWluKHByb21wdF93aWR0aCs3LCBjb2x1bW5zLTIpOworCXBy b21wdF9saW5lcyA9IG1heCh3aW5fbGluZXMtNiwgMCk7CisJcHJvbXB0X3dpZHRoID0gbWF4KHdp bl9jb2xzLTcsIDApOworCiAJLyogcGxhY2UgZGlhbG9nIGluIG1pZGRsZSBvZiBzY3JlZW4gKi8K LQl5ID0gKGdldG1heHkoc3Rkc2NyKS0ocHJvbXB0X2xpbmVzKzQpKS8yOwotCXggPSAoZ2V0bWF4 eChzdGRzY3IpLShwcm9tcHRfd2lkdGgrNCkpLzI7CisJeSA9IChsaW5lcy13aW5fbGluZXMpLzI7 CisJeCA9IChjb2x1bW5zLXdpbl9jb2xzKS8yOwogCiAJc3RybmNweShyZXN1bHQsIGluaXQsICpy ZXN1bHRfbGVuKTsKIAogCS8qIGNyZWF0ZSB0aGUgd2luZG93cyAqLwotCXdpbiA9IG5ld3dpbihw cm9tcHRfbGluZXMrNiwgcHJvbXB0X3dpZHRoKzcsIHksIHgpOworCXdpbiA9IG5ld3dpbih3aW5f bGluZXMsIHdpbl9jb2xzLCB5LCB4KTsKIAlwcm9tcHRfd2luID0gZGVyd2luKHdpbiwgcHJvbXB0 X2xpbmVzKzEsIHByb21wdF93aWR0aCwgMiwgMik7CiAJZm9ybV93aW4gPSBkZXJ3aW4od2luLCAx LCBwcm9tcHRfd2lkdGgsIHByb21wdF9saW5lcyszLCAyKTsKIAlrZXlwYWQoZm9ybV93aW4sIFRS VUUpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5jIGIvc291bmQvY29y ZS9zZXEvc2VxX21lbW9yeS5jCmluZGV4IDA0ZWY5YjUzNTFmOS4uMTUzMzFiYjE3M2YyIDEwMDY0 NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfbWVtb3J5LmMKKysrIGIvc291bmQvY29yZS9zZXEv c2VxX21lbW9yeS5jCkBAIC00MTksNyArNDE5LDYgQEAgaW50IHNuZF9zZXFfcG9vbF9kb25lKHN0 cnVjdCBzbmRfc2VxX3Bvb2wgKnBvb2wpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1 Y3Qgc25kX3NlcV9ldmVudF9jZWxsICpwdHI7Ci0JaW50IG1heF9jb3VudCA9IDUgKiBIWjsKIAog CWlmIChzbmRfQlVHX09OKCFwb29sKSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC00MzIsMTQgKzQz MSw4IEBAIGludCBzbmRfc2VxX3Bvb2xfZG9uZShzdHJ1Y3Qgc25kX3NlcV9wb29sICpwb29sKQog CWlmICh3YWl0cXVldWVfYWN0aXZlKCZwb29sLT5vdXRwdXRfc2xlZXApKQogCQl3YWtlX3VwKCZw b29sLT5vdXRwdXRfc2xlZXApOwogCi0Jd2hpbGUgKGF0b21pY19yZWFkKCZwb29sLT5jb3VudGVy KSA+IDApIHsKLQkJaWYgKG1heF9jb3VudCA9PSAwKSB7Ci0JCQlwcl93YXJuKCJBTFNBOiBzbmRf c2VxX3Bvb2xfZG9uZSB0aW1lb3V0OiAlZCBjZWxscyByZW1haW5cbiIsIGF0b21pY19yZWFkKCZw b29sLT5jb3VudGVyKSk7Ci0JCQlicmVhazsKLQkJfQorCXdoaWxlIChhdG9taWNfcmVhZCgmcG9v bC0+Y291bnRlcikgPiAwKQogCQlzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJsZSgxKTsK LQkJbWF4X2NvdW50LS07Ci0JfQogCQogCS8qIHJlbGVhc2UgYWxsIHJlc291cmNlcyAqLwogCXNw aW5fbG9ja19pcnFzYXZlKCZwb29sLT5sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9zb3VuZC9j b3JlL3NlcS9zZXFfcXVldWUuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9xdWV1ZS5jCmluZGV4IDc3 ZWMyMTQyMDM1NS4uZjY3NmFlNTNjNDc3IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFf cXVldWUuYworKysgYi9zb3VuZC9jb3JlL3NlcS9zZXFfcXVldWUuYwpAQCAtMTgxLDYgKzE4MSw4 IEBAIHZvaWQgX19leGl0IHNuZF9zZXFfcXVldWVzX2RlbGV0ZSh2b2lkKQogCX0KIH0KIAorc3Rh dGljIHZvaWQgcXVldWVfdXNlKHN0cnVjdCBzbmRfc2VxX3F1ZXVlICpxdWV1ZSwgaW50IGNsaWVu dCwgaW50IHVzZSk7CisKIC8qIGFsbG9jYXRlIGEgbmV3IHF1ZXVlIC0KICAqIHJldHVybiBxdWV1 ZSBpbmRleCB2YWx1ZSBvciBuZWdhdGl2ZSB2YWx1ZSBmb3IgZXJyb3IKICAqLwpAQCAtMTkyLDEx ICsxOTQsMTEgQEAgaW50IHNuZF9zZXFfcXVldWVfYWxsb2MoaW50IGNsaWVudCwgaW50IGxvY2tl ZCwgdW5zaWduZWQgaW50IGluZm9fZmxhZ3MpCiAJaWYgKHEgPT0gTlVMTCkKIAkJcmV0dXJuIC1F Tk9NRU07CiAJcS0+aW5mb19mbGFncyA9IGluZm9fZmxhZ3M7CisJcXVldWVfdXNlKHEsIGNsaWVu dCwgMSk7CiAJaWYgKHF1ZXVlX2xpc3RfYWRkKHEpIDwgMCkgewogCQlxdWV1ZV9kZWxldGUocSk7 CiAJCXJldHVybiAtRU5PTUVNOwogCX0KLQlzbmRfc2VxX3F1ZXVlX3VzZShxLT5xdWV1ZSwgY2xp ZW50LCAxKTsgLyogdXNlIHRoaXMgcXVldWUgKi8KIAlyZXR1cm4gcS0+cXVldWU7CiB9CiAKQEAg LTUwMiwxOSArNTA0LDkgQEAgaW50IHNuZF9zZXFfcXVldWVfdGltZXJfc2V0X3RlbXBvKGludCBx dWV1ZWlkLCBpbnQgY2xpZW50LAogCXJldHVybiByZXN1bHQ7CiB9CiAKLQotLyogdXNlIG9yIHVu dXNlIHRoaXMgcXVldWUgLQotICogaWYgaXQgaXMgdGhlIGZpcnN0IGNsaWVudCwgc3RhcnRzIHRo ZSB0aW1lci4KLSAqIGlmIGl0IGlzIG5vdCBsb25nZXIgdXNlZCBieSBhbnkgY2xpZW50cywgc3Rv cCB0aGUgdGltZXIuCi0gKi8KLWludCBzbmRfc2VxX3F1ZXVlX3VzZShpbnQgcXVldWVpZCwgaW50 IGNsaWVudCwgaW50IHVzZSkKKy8qIHVzZSBvciB1bnVzZSB0aGlzIHF1ZXVlICovCitzdGF0aWMg dm9pZCBxdWV1ZV91c2Uoc3RydWN0IHNuZF9zZXFfcXVldWUgKnF1ZXVlLCBpbnQgY2xpZW50LCBp bnQgdXNlKQogewotCXN0cnVjdCBzbmRfc2VxX3F1ZXVlICpxdWV1ZTsKLQotCXF1ZXVlID0gcXVl dWVwdHIocXVldWVpZCk7Ci0JaWYgKHF1ZXVlID09IE5VTEwpCi0JCXJldHVybiAtRUlOVkFMOwot CW11dGV4X2xvY2soJnF1ZXVlLT50aW1lcl9tdXRleCk7CiAJaWYgKHVzZSkgewogCQlpZiAoIXRl c3RfYW5kX3NldF9iaXQoY2xpZW50LCBxdWV1ZS0+Y2xpZW50c19iaXRtYXApKQogCQkJcXVldWUt PmNsaWVudHMrKzsKQEAgLTUyOSw2ICs1MjEsMjEgQEAgaW50IHNuZF9zZXFfcXVldWVfdXNlKGlu dCBxdWV1ZWlkLCBpbnQgY2xpZW50LCBpbnQgdXNlKQogCX0gZWxzZSB7CiAJCXNuZF9zZXFfdGlt ZXJfY2xvc2UocXVldWUpOwogCX0KK30KKworLyogdXNlIG9yIHVudXNlIHRoaXMgcXVldWUgLQor ICogaWYgaXQgaXMgdGhlIGZpcnN0IGNsaWVudCwgc3RhcnRzIHRoZSB0aW1lci4KKyAqIGlmIGl0 IGlzIG5vdCBsb25nZXIgdXNlZCBieSBhbnkgY2xpZW50cywgc3RvcCB0aGUgdGltZXIuCisgKi8K K2ludCBzbmRfc2VxX3F1ZXVlX3VzZShpbnQgcXVldWVpZCwgaW50IGNsaWVudCwgaW50IHVzZSkK K3sKKwlzdHJ1Y3Qgc25kX3NlcV9xdWV1ZSAqcXVldWU7CisKKwlxdWV1ZSA9IHF1ZXVlcHRyKHF1 ZXVlaWQpOworCWlmIChxdWV1ZSA9PSBOVUxMKQorCQlyZXR1cm4gLUVJTlZBTDsKKwltdXRleF9s b2NrKCZxdWV1ZS0+dGltZXJfbXV0ZXgpOworCXF1ZXVlX3VzZShxdWV1ZSwgY2xpZW50LCB1c2Up OwogCW11dGV4X3VubG9jaygmcXVldWUtPnRpbWVyX211dGV4KTsKIAlxdWV1ZWZyZWUocXVldWUp OwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9jb25leGFudC5j IGIvc291bmQvcGNpL2hkYS9wYXRjaF9jb25leGFudC5jCmluZGV4IDliNTRlOTM2YWFlNy4uY2Vk NTQyNDljMTcxIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2NvbmV4YW50LmMKKysr IGIvc291bmQvcGNpL2hkYS9wYXRjaF9jb25leGFudC5jCkBAIC0yODQzLDYgKzI4NDMsOCBAQCBl bnVtIHsKIAlDWFRfRklYVVBfSFBfNTMwLAogCUNYVF9GSVhVUF9DQVBfTUlYX0FNUF81MDQ3LAog CUNYVF9GSVhVUF9NVVRFX0xFRF9FQVBELAorCUNYVF9GSVhVUF9IUF9TUEVDVFJFLAorCUNYVF9G SVhVUF9IUF9HQVRFX01JQywKIH07CiAKIC8qIGZvciBoZGFfZml4dXBfdGhpbmtwYWRfYWNwaSgp ICovCkBAIC0zMjE2LDYgKzMyMTgsMTcgQEAgc3RhdGljIHZvaWQgY3h0X2ZpeHVwX2NhcF9taXhf YW1wXzUwNDcoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsCiAJCQkJICAoMSA8PCBBQ19BTVBDQVBf TVVURV9TSElGVCkpOwogfQogCitzdGF0aWMgdm9pZCBjeHRfZml4dXBfaHBfZ2F0ZV9taWNfamFj ayhzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGhkYV9m aXh1cCAqZml4LAorCQkJCSAgICAgICBpbnQgYWN0aW9uKQoreworCS8qIHRoZSBtaWMgcGluICgw eDE5KSBkb2Vzbid0IGdpdmUgYW4gdW5zb2xpY2l0ZWQgZXZlbnQ7CisJICogcHJvYmUgdGhlIG1p YyBwaW4gdG9nZXRoZXIgd2l0aCB0aGUgaGVhZHBob25lIHBpbiAoMHgxNikKKwkgKi8KKwlpZiAo YWN0aW9uID09IEhEQV9GSVhVUF9BQ1RfUFJPQkUpCisJCXNuZF9oZGFfamFja19zZXRfZ2F0aW5n X2phY2soY29kZWMsIDB4MTksIDB4MTYpOworfQorCiAvKiBUaGlua1BhZCBYMjAwICYgY28gd2l0 aCBjeHQ1MDUxICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGhkYV9waW50YmwgY3h0X3BpbmNmZ19s ZW5vdm9feDIwMFtdID0gewogCXsgMHgxNiwgMHgwNDIxNDBmZiB9LCAvKiBIUCAoc2VxIyBvdmVy cmlkZGVuKSAqLwpAQCAtMzM0OSw2ICszMzYyLDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRh X2ZpeHVwIGN4dF9maXh1cHNbXSA9IHsKIAkJLnR5cGUgPSBIREFfRklYVVBfRlVOQywKIAkJLnYu ZnVuYyA9IGN4dF9maXh1cF9tdXRlX2xlZF9lYXBkLAogCX0sCisJW0NYVF9GSVhVUF9IUF9TUEVD VFJFXSA9IHsKKwkJLnR5cGUgPSBIREFfRklYVVBfUElOUywKKwkJLnYucGlucyA9IChjb25zdCBz dHJ1Y3QgaGRhX3BpbnRibFtdKSB7CisJCQkvKiBlbmFibGUgTklEIDB4MWQgZm9yIHRoZSBzcGVh a2VyIG9uIHRvcCAqLworCQkJeyAweDFkLCAweDkxMTcwMTExIH0sCisJCQl7IH0KKwkJfQorCX0s CisJW0NYVF9GSVhVUF9IUF9HQVRFX01JQ10gPSB7CisJCS50eXBlID0gSERBX0ZJWFVQX0ZVTkMs CisJCS52LmZ1bmMgPSBjeHRfZml4dXBfaHBfZ2F0ZV9taWNfamFjaywKKwl9LAogfTsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfcGNpX3F1aXJrIGN4dDUwNDVfZml4dXBzW10gPSB7CkBAIC0z Mzk3LDYgKzM0MjIsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGhkYV9tb2RlbF9maXh1cCBjeHQ1 MDUxX2ZpeHVwX21vZGVsc1tdID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfcGNpX3F1aXJr IGN4dDUwNjZfZml4dXBzW10gPSB7CiAJU05EX1BDSV9RVUlSSygweDEwMjUsIDB4MDU0MywgIkFj ZXIgQXNwaXJlIE9uZSA1MjIiLCBDWFRfRklYVVBfU1RFUkVPX0RNSUMpLAogCVNORF9QQ0lfUVVJ UksoMHgxMDI1LCAweDA1NGMsICJBY2VyIEFzcGlyZSAzODMwVEciLCBDWFRfRklYVVBfQVNQSVJF X0RNSUMpLAorCVNORF9QQ0lfUVVJUksoMHgxMDI1LCAweDA1NGYsICJBY2VyIEFzcGlyZSA0ODMw VCIsIENYVF9GSVhVUF9BU1BJUkVfRE1JQyksCisJU05EX1BDSV9RVUlSSygweDEwM2MsIDB4ODE3 NCwgIkhQIFNwZWN0cmUgeDM2MCIsIENYVF9GSVhVUF9IUF9TUEVDVFJFKSwKKwlTTkRfUENJX1FV SVJLKDB4MTAzYywgMHg4MTE1LCAiSFAgWjEgR2VuMyIsIENYVF9GSVhVUF9IUF9HQVRFX01JQyks CiAJU05EX1BDSV9RVUlSSygweDEwNDMsIDB4MTM4ZCwgIkFzdXMiLCBDWFRfRklYVVBfSEVBRFBI T05FX01JQ19QSU4pLAogCVNORF9QQ0lfUVVJUksoMHgxNTJkLCAweDA4MzMsICJPTFBDIFhPLTEu NSIsIENYVF9GSVhVUF9PTFBDX1hPKSwKIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHgyMGYyLCAi TGVub3ZvIFQ0MDAiLCBDWFRfUElOQ0ZHX0xFTk9WT19UUDQxMCksCmRpZmYgLS1naXQgYS9zb3Vu ZC9wY2kvaGRhL3BhdGNoX2hkbWkuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jCmluZGV4 IGM0ZjE0OWNhMWE3Mi4uMDZiOTkwNzI3ZjY4IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3Bh dGNoX2hkbWkuYworKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwpAQCAtMzM0NSw2ICsz MzQ1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBoZGFfY29kZWNfcHJlc2V0IHNuZF9oZGFfcHJl c2V0X2hkbWlbXSA9IHsKIHsgLmlkID0gMHgxMGRlMDA3MSwgLm5hbWUgPSAiR1BVIDcxIEhETUkv RFAiLAkucGF0Y2ggPSBwYXRjaF9udmhkbWkgfSwKIHsgLmlkID0gMHgxMGRlMDA3MiwgLm5hbWUg PSAiR1BVIDcyIEhETUkvRFAiLAkucGF0Y2ggPSBwYXRjaF9udmhkbWkgfSwKIHsgLmlkID0gMHgx MGRlMDA3ZCwgLm5hbWUgPSAiR1BVIDdkIEhETUkvRFAiLAkucGF0Y2ggPSBwYXRjaF9udmhkbWkg fSwKK3sgLmlkID0gMHgxMGRlMDA4MCwgLm5hbWUgPSAiR1BVIDgwIEhETUkvRFAiLAkucGF0Y2gg PSBwYXRjaF9udmhkbWkgfSwKIHsgLmlkID0gMHgxMGRlMDA4MiwgLm5hbWUgPSAiR1BVIDgyIEhE TUkvRFAiLAkucGF0Y2ggPSBwYXRjaF9udmhkbWkgfSwKIHsgLmlkID0gMHgxMGRlMDA4MywgLm5h bWUgPSAiR1BVIDgzIEhETUkvRFAiLAkucGF0Y2ggPSBwYXRjaF9udmhkbWkgfSwKIHsgLmlkID0g MHgxMGRlODAwMSwgLm5hbWUgPSAiTUNQNzMgSERNSSIsCS5wYXRjaCA9IHBhdGNoX252aGRtaV8y Y2ggfSwKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jIGIvc291bmQv cGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKaW5kZXggYjc2ZjRmZjExN2EyLi4xYjhmYTcyYTYzMDIg MTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCisrKyBiL3NvdW5kL3Bj aS9oZGEvcGF0Y2hfcmVhbHRlay5jCkBAIC0yMjgyLDYgKzIyODIsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHNuZF9wY2lfcXVpcmsgYWxjODgyX2ZpeHVwX3RibFtdID0gewogCVNORF9QQ0lfUVVJ UksoMHgxMDQzLCAweDE5NzEsICJBc3VzIFcySkMiLCBBTEM4ODJfRklYVVBfQVNVU19XMkpDKSwK IAlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHg4MzVmLCAiQXN1cyBFZWUgMTYwMSIsIEFMQzg4OF9G SVhVUF9FRUUxNjAxKSwKIAlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHg4NGJjLCAiQVNVUyBFVDI3 MDAiLCBBTEM4ODdfRklYVVBfQVNVU19CQVNTKSwKKwlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHg4 NjkxLCAiQVNVUyBST0cgUmFuZ2VyIFZJSUkiLCBBTEM4ODJfRklYVVBfR1BJTzMpLAogCVNORF9Q Q0lfUVVJUksoMHgxMDRkLCAweDkwNDcsICJTb255IFZhaW8gVFQiLCBBTEM4ODlfRklYVVBfVkFJ T19UVCksCiAJU05EX1BDSV9RVUlSSygweDEwNGQsIDB4OTA1YSwgIlNvbnkgVmFpbyBaIiwgQUxD ODgyX0ZJWFVQX05PX1BSSU1BUllfSFApLAogCVNORF9QQ0lfUVVJUksoMHgxMDRkLCAweDkwNDMs ICJTb255IFZhaW8gVkdDLUxONTFKR0IiLCBBTEM4ODJfRklYVVBfTk9fUFJJTUFSWV9IUCksCkBA IC02MTI2LDYgKzYxMjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9wY2lfcXVpcmsgYWxj NjYyX2ZpeHVwX3RibFtdID0gewogCVNORF9QQ0lfUVVJUksoMHgxMDQzLCAweDE1YTcsICJBU1VT IFVYNTFWWkgiLCBBTEM2NjJfRklYVVBfQkFTU18xNiksCiAJU05EX1BDSV9RVUlSSygweDEwNDMs IDB4MTc3ZCwgIkFTVVMgTjU1MSIsIEFMQzY2OF9GSVhVUF9BU1VTX054NTEpLAogCVNORF9QQ0lf UVVJUksoMHgxMDQzLCAweDE3YmQsICJBU1VTIE43NTEiLCBBTEM2NjhfRklYVVBfQVNVU19OeDUx KSwKKwlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHgxOTYzLCAiQVNVUyBYNzFTTCIsIEFMQzY2Ml9G SVhVUF9BU1VTX01PREU4KSwKIAlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHgxYjczLCAiQVNVUyBO NTVTRiIsIEFMQzY2Ml9GSVhVUF9CQVNTXzE2KSwKIAlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHgx YmYzLCAiQVNVUyBONzZWWiIsIEFMQzY2Ml9GSVhVUF9CQVNTX01PREU0X0NITUFQKSwKIAlTTkRf UENJX1FVSVJLKDB4MTA0MywgMHg4NDY5LCAiQVNVUyBtb2JvIiwgQUxDNjYyX0ZJWFVQX05PX0pB Q0tfREVURUNUKSwKZGlmZiAtLWdpdCBhL3NvdW5kL3VzYi9jYXJkLmMgYi9zb3VuZC91c2IvY2Fy ZC5jCmluZGV4IDM0ZjkzNDA5NWRkZC4uODg4N2Y0ZTE5OTU2IDEwMDY0NAotLS0gYS9zb3VuZC91 c2IvY2FyZC5jCisrKyBiL3NvdW5kL3VzYi9jYXJkLmMKQEAgLTIwNCw3ICsyMDQsNiBAQCBzdGF0 aWMgaW50IHNuZF91c2JfY3JlYXRlX3N0cmVhbShzdHJ1Y3Qgc25kX3VzYl9hdWRpbyAqY2hpcCwg aW50IGN0cmxpZiwgaW50IGludAogCWlmICghIHNuZF91c2JfcGFyc2VfYXVkaW9faW50ZXJmYWNl KGNoaXAsIGludGVyZmFjZSkpIHsKIAkJdXNiX3NldF9pbnRlcmZhY2UoZGV2LCBpbnRlcmZhY2Us IDApOyAvKiByZXNldCB0aGUgY3VycmVudCBpbnRlcmZhY2UgKi8KIAkJdXNiX2RyaXZlcl9jbGFp bV9pbnRlcmZhY2UoJnVzYl9hdWRpb19kcml2ZXIsIGlmYWNlLCAodm9pZCAqKS0xTCk7Ci0JCXJl dHVybiAtRUlOVkFMOwogCX0KIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL2hp ZmFjZS9wY20uYyBiL3NvdW5kL3VzYi9oaWZhY2UvcGNtLmMKaW5kZXggMmM0NDEzOWI0MDQxLi4z M2RiMjA1ZGQxMmIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi9oaWZhY2UvcGNtLmMKKysrIGIvc291 bmQvdXNiL2hpZmFjZS9wY20uYwpAQCAtNDQ1LDYgKzQ0NSw4IEBAIHN0YXRpYyBpbnQgaGlmYWNl X3BjbV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqYWxzYV9zdWIpCiAKIAltdXRl eF9sb2NrKCZydC0+c3RyZWFtX211dGV4KTsKIAorCWhpZmFjZV9wY21fc3RyZWFtX3N0b3AocnQp OworCiAJc3ViLT5kbWFfb2ZmID0gMDsKIAlzdWItPnBlcmlvZF9vZmYgPSAwOwogCmRpZmYgLS1n aXQgYS9zb3VuZC91c2IvbWl4ZXIuYyBiL3NvdW5kL3VzYi9taXhlci5jCmluZGV4IDIxYzYwZWZm OTIwZS4uNWQyNDljYWYzMzQ5IDEwMDY0NAotLS0gYS9zb3VuZC91c2IvbWl4ZXIuYworKysgYi9z b3VuZC91c2IvbWl4ZXIuYwpAQCAtOTE2LDkgKzkxNiwxMCBAQCBzdGF0aWMgdm9pZCB2b2x1bWVf Y29udHJvbF9xdWlya3Moc3RydWN0IHVzYl9taXhlcl9lbGVtX2luZm8gKmN2YWwsCiAJY2FzZSBV U0JfSUQoMHgwNDZkLCAweDA4MjYpOiAvKiBIRCBXZWJjYW0gYzUyNSAqLwogCWNhc2UgVVNCX0lE KDB4MDQ2ZCwgMHgwOGNhKTogLyogTG9naXRlY2ggUXVpY2tjYW0gRnVzaW9uICovCiAJY2FzZSBV U0JfSUQoMHgwNDZkLCAweDA5OTEpOgorCWNhc2UgVVNCX0lEKDB4MDQ2ZCwgMHgwOWEyKTogLyog UXVpY2tDYW0gQ29tbXVuaWNhdGUgRGVsdXhlL1M3NTAwICovCiAJLyogTW9zdCBhdWRpbyB1c2Ig ZGV2aWNlcyBsaWUgYWJvdXQgdm9sdW1lIHJlc29sdXRpb24uCiAJICogTW9zdCBMb2dpdGVjaCB3 ZWJjYW1zIGhhdmUgcmVzID0gMzg0LgotCSAqIFByb2JvbHkgdGhlcmUgaXMgc29tZSBsb2dpdGVj aCBtYWdpYyBiZWhpbmQgdGhpcyBudW1iZXIgLS1maXNob3IKKwkgKiBQcm9iYWJseSB0aGVyZSBp cyBzb21lIGxvZ2l0ZWNoIG1hZ2ljIGJlaGluZCB0aGlzIG51bWJlciAtLWZpc2hvcgogCSAqLwog CQlpZiAoIXN0cmNtcChrY3RsLT5pZC5uYW1lLCAiTWljIENhcHR1cmUgVm9sdW1lIikpIHsKIAkJ CXVzYl9hdWRpb19pbmZvKGNoaXAsCmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tdHJh Y2UuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi10cmFjZS5jCmluZGV4IGY5NTRjMjZkZTIzMS4uMGRi YjY5YTQwNGZlIDEwMDY0NAotLS0gYS90b29scy9wZXJmL2J1aWx0aW4tdHJhY2UuYworKysgYi90 b29scy9wZXJmL2J1aWx0aW4tdHJhY2UuYwpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgc3RhdGljIGlu dCB0cmFjZV9fc3lzX2VudGVyKHN0cnVjdCB0cmFjZSAqdHJhY2UsIHN0cnVjdCBwZXJmX2V2c2Vs ICpldnNlbCwKIAogCWlmICghc3RyY21wKHNjLT5uYW1lLCAiZXhpdF9ncm91cCIpIHx8ICFzdHJj bXAoc2MtPm5hbWUsICJleGl0IikpIHsKIAkJaWYgKCF0cmFjZS0+ZHVyYXRpb25fZmlsdGVyICYm ICF0cmFjZS0+c3VtbWFyeV9vbmx5KSB7Ci0JCQl0cmFjZV9fZnByaW50Zl9lbnRyeV9oZWFkKHRy YWNlLCB0aHJlYWQsIDEsIHNhbXBsZS0+dGltZSwgdHJhY2UtPm91dHB1dCk7CisJCQl0cmFjZV9f ZnByaW50Zl9lbnRyeV9oZWFkKHRyYWNlLCB0aHJlYWQsIDEsIHR0cmFjZS0+ZW50cnlfdGltZSwg dHJhY2UtPm91dHB1dCk7CiAJCQlmcHJpbnRmKHRyYWNlLT5vdXRwdXQsICIlLTcwc1xuIiwgdHRy YWNlLT5lbnRyeV9zdHIpOwogCQl9CiAJfSBlbHNlCkBAIC0xNzAxLDcgKzE3MDEsNyBAQCBzdGF0 aWMgaW50IHRyYWNlX19zeXNfZXhpdChzdHJ1Y3QgdHJhY2UgKnRyYWNlLCBzdHJ1Y3QgcGVyZl9l dnNlbCAqZXZzZWwsCiAJaWYgKHRyYWNlLT5zdW1tYXJ5X29ubHkpCiAJCWdvdG8gb3V0OwogCi0J dHJhY2VfX2ZwcmludGZfZW50cnlfaGVhZCh0cmFjZSwgdGhyZWFkLCBkdXJhdGlvbiwgc2FtcGxl LT50aW1lLCB0cmFjZS0+b3V0cHV0KTsKKwl0cmFjZV9fZnByaW50Zl9lbnRyeV9oZWFkKHRyYWNl LCB0aHJlYWQsIGR1cmF0aW9uLCB0dHJhY2UtPmVudHJ5X3RpbWUsIHRyYWNlLT5vdXRwdXQpOwog CiAJaWYgKHR0cmFjZS0+ZW50cnlfcGVuZGluZykgewogCQlmcHJpbnRmKHRyYWNlLT5vdXRwdXQs ICIlLTcwcyIsIHR0cmFjZS0+ZW50cnlfc3RyKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRp bC90cmFjZS1ldmVudC1zY3JpcHRpbmcuYyBiL3Rvb2xzL3BlcmYvdXRpbC90cmFjZS1ldmVudC1z Y3JpcHRpbmcuYwppbmRleCA1N2FhY2NjMTY5MmUuLjZhMWZlODMzODZlYSAxMDA2NDQKLS0tIGEv dG9vbHMvcGVyZi91dGlsL3RyYWNlLWV2ZW50LXNjcmlwdGluZy5jCisrKyBiL3Rvb2xzL3BlcmYv dXRpbC90cmFjZS1ldmVudC1zY3JpcHRpbmcuYwpAQCAtOTAsNyArOTAsOCBAQCBzdGF0aWMgdm9p ZCByZWdpc3Rlcl9weXRob25fc2NyaXB0aW5nKHN0cnVjdCBzY3JpcHRpbmdfb3BzICpzY3JpcHRp bmdfb3BzKQogCWlmIChlcnIpCiAJCWRpZSgiZXJyb3IgcmVnaXN0ZXJpbmcgcHkgc2NyaXB0IGV4 dGVuc2lvbiIpOwogCi0Jc2NyaXB0aW5nX2NvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBz Y3JpcHRpbmdfY29udGV4dCkpOworCWlmIChzY3JpcHRpbmdfY29udGV4dCA9PSBOVUxMKQorCQlz Y3JpcHRpbmdfY29udGV4dCA9IG1hbGxvYyhzaXplb2YoKnNjcmlwdGluZ19jb250ZXh0KSk7CiB9 CiAKICNpZmRlZiBOT19MSUJQWVRIT04KQEAgLTE1Myw3ICsxNTQsOCBAQCBzdGF0aWMgdm9pZCBy ZWdpc3Rlcl9wZXJsX3NjcmlwdGluZyhzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqc2NyaXB0aW5nX29w cykKIAlpZiAoZXJyKQogCQlkaWUoImVycm9yIHJlZ2lzdGVyaW5nIHBsIHNjcmlwdCBleHRlbnNp b24iKTsKIAotCXNjcmlwdGluZ19jb250ZXh0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2NyaXB0 aW5nX2NvbnRleHQpKTsKKwlpZiAoc2NyaXB0aW5nX2NvbnRleHQgPT0gTlVMTCkKKwkJc2NyaXB0 aW5nX2NvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKCpzY3JpcHRpbmdfY29udGV4dCkpOwogfQogCiAj aWZkZWYgTk9fTElCUEVSTApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0 L3J1bl9uZXRzb2NrdGVzdHMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcnVuX25ldHNv Y2t0ZXN0cwppbmRleCBjMDlhNjgyZGY1NmEuLjE2MDU4YmJlYTdhOCAxMDA2NDQKLS0tIGEvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3J1bl9uZXRzb2NrdGVzdHMKKysrIGIvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvbmV0L3J1bl9uZXRzb2NrdGVzdHMKQEAgLTEsNCArMSw0IEBACi0jIS9i aW4vYmFzaAorIyEvYmluL3NoCiAKIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tIgogZWNobyAi cnVubmluZyBzb2NrZXQgdGVzdCIKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3Bvd2VycGMvcG11L2ViYi9wbWM1Nl9vdmVyZmxvd190ZXN0LmMgYi90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9wb3dlcnBjL3BtdS9lYmIvcG1jNTZfb3ZlcmZsb3dfdGVzdC5jCmluZGV4IGE1MDNm YTcwYzk1MC4uOWJlMjJlOTMyY2M0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9wb3dlcnBjL3BtdS9lYmIvcG1jNTZfb3ZlcmZsb3dfdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3Bvd2VycGMvcG11L2ViYi9wbWM1Nl9vdmVyZmxvd190ZXN0LmMKQEAgLTY0 LDcgKzY0LDcgQEAgaW50IHBtYzU2X292ZXJmbG93KHZvaWQpCiAKIAlGQUlMX0lGKGViYl9ldmVu dF9lbmFibGUoJmV2ZW50KSk7CiAKLQltdHNwcihTUFJOX1BNQzEsIHBtY19zYW1wbGVfcGVyaW9k KHNhbXBsZV9wZXJpb2QpKTsKKwltdHNwcihTUFJOX1BNQzIsIHBtY19zYW1wbGVfcGVyaW9kKHNh bXBsZV9wZXJpb2QpKTsKIAltdHNwcihTUFJOX1BNQzUsIDApOwogCW10c3ByKFNQUk5fUE1DNiwg MCk7CiAK --=-rteAsbOdKR8KANa1/XRY-- --=-A+WHpWZUoPRClolYkeSP Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAljEK5MACgkQ57/I7JWG EQmjmg//bUz+w8FMk+dSjCZa0lm1c3VUtMH3awVl28BPz+LrKKfJOvG00d2UmbwW IVmhryrhU80b7gkaRKJfcdgvMWkgyQgp4iKvGXmudlKEj6DofQqSbHoRpefJ/GRX f2pJPt3Zbg8XS5hvlk8Az6yKWjzsS8P8INtAnY2TN33thxQvWRbHrEXvDx3QZiLh mNd4jZ+ovhrrAWcYN6LQxoVE1o3iDUh3qultVd4yZEOMFtNRb71I9o6AKHpHHoKv O+K8AgAODE9uCz8U34UgCnYVV0AsFxCcPPV2DK7dTlStAUXuT5NWV4dhvc47+TZK f03GDlIHffXr4h7z/hH6TuyqOCBmL1r1bvOU5QFJ9MrDaAX+P+3/zw1OZgJN6oXU 4GuxHQ2Xm/cpdKb6i+eXFVrTy5jTlnnXNH4HzkOjLQvYAxZW28qspCETx9BjV6sW RNn4VuWnsFNmWVdcjCQ1oq3Y6FsaALZzyufymb4rTg/dLWPch59SBL7oYZdBUAd4 0Ap3VhTwBFZeRrQpskcBa/ikWGc4cFV2hbCs3yiMcKVKa4sRxE68U5lk09ulThT1 W52GHg6PXwg95akRx9tjNYhoEw+GVZ5cw8Mh2awh99vFOquEw+p08Mu8uMQk7aSI KtyCZIi/Q7uplMlPEAcR/alR/XXWgDrMzZlBwEFqdpfw9o6wT0M= =dhfu -----END PGP SIGNATURE----- --=-A+WHpWZUoPRClolYkeSP--