From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:45214 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751216AbdGPQcx (ORCPT ); Sun, 16 Jul 2017 12:32:53 -0400 Message-ID: <1500222764.2707.155.camel@decadent.org.uk> Subject: Re: [PATCH 3.2 00/95] 3.2.91-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Sun, 16 Jul 2017 17:32:44 +0100 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-U23PIPV0x0SgT3AA7H1h" Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: --=-U23PIPV0x0SgT3AA7H1h Content-Type: multipart/mixed; boundary="=-3kj4GJRVySmTbeAcKL/f" --=-3kj4GJRVySmTbeAcKL/f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.2.91-rc1 relative to 3.2.90. Ben. --=20 Ben Hutchings If the facts do not conform to your theory, they must be disposed of. --=-3kj4GJRVySmTbeAcKL/f Content-Disposition: attachment; filename="linux-3.2.91-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.2.91-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggZWZlNWM5NzA0YWZhLi5hMWM2 N2M3ODQ3NmUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEs NyBAQAogVkVSU0lPTiA9IDMKIFBBVENITEVWRUwgPSAyCi1TVUJMRVZFTCA9IDkwCi1FWFRSQVZF UlNJT04gPQorU1VCTEVWRUwgPSA5MQorRVhUUkFWRVJTSU9OID0gLXJjMQogTkFNRSA9IFNhYmVy LXRvb3RoZWQgU3F1aXJyZWwKIAogIyAqRE9DVU1FTlRBVElPTioKZGlmZiAtLWdpdCBhL2FyY2gv bWlwcy9rZXJuZWwva2dkYi5jIGIvYXJjaC9taXBzL2tlcm5lbC9rZ2RiLmMKaW5kZXggMjM4MTdh NmUzMmI2Li41MDA3NjdiY2QwNDkgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwva2dkYi5j CisrKyBiL2FyY2gvbWlwcy9rZXJuZWwva2dkYi5jCkBAIC0yMzYsOSArMjM2LDYgQEAgc3RhdGlj IGludCBjb21wdXRlX3NpZ25hbChpbnQgdHQpCiB2b2lkIHNsZWVwaW5nX3RocmVhZF90b19nZGJf cmVncyh1bnNpZ25lZCBsb25nICpnZGJfcmVncywgc3RydWN0IHRhc2tfc3RydWN0ICpwKQogewog CWludCByZWc7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHRhc2tfdGhyZWFkX2luZm8ocCk7 Ci0JdW5zaWduZWQgbG9uZyBrc3AgPSAodW5zaWduZWQgbG9uZyl0aSArIFRIUkVBRF9TSVpFIC0g MzI7Ci0Jc3RydWN0IHB0X3JlZ3MgKnJlZ3MgPSAoc3RydWN0IHB0X3JlZ3MgKilrc3AgLSAxOwog I2lmIChLR0RCX0dEQl9SRUdfU0laRSA9PSAzMikKIAl1MzIgKnB0ciA9ICh1MzIgKilnZGJfcmVn czsKICNlbHNlCkBAIC0yNDYsMjUgKzI0Myw0NiBAQCB2b2lkIHNsZWVwaW5nX3RocmVhZF90b19n ZGJfcmVncyh1bnNpZ25lZCBsb25nICpnZGJfcmVncywgc3RydWN0IHRhc2tfc3RydWN0ICpwKQog I2VuZGlmCiAKIAlmb3IgKHJlZyA9IDA7IHJlZyA8IDE2OyByZWcrKykKLQkJKihwdHIrKykgPSBy ZWdzLT5yZWdzW3JlZ107CisJCSoocHRyKyspID0gMDsKIAogCS8qIFMwIC0gUzcgKi8KLQlmb3Ig KHJlZyA9IDE2OyByZWcgPCAyNDsgcmVnKyspCi0JCSoocHRyKyspID0gcmVncy0+cmVnc1tyZWdd OworCSoocHRyKyspID0gcC0+dGhyZWFkLnJlZzE2OworCSoocHRyKyspID0gcC0+dGhyZWFkLnJl ZzE3OworCSoocHRyKyspID0gcC0+dGhyZWFkLnJlZzE4OworCSoocHRyKyspID0gcC0+dGhyZWFk LnJlZzE5OworCSoocHRyKyspID0gcC0+dGhyZWFkLnJlZzIwOworCSoocHRyKyspID0gcC0+dGhy ZWFkLnJlZzIxOworCSoocHRyKyspID0gcC0+dGhyZWFkLnJlZzIyOworCSoocHRyKyspID0gcC0+ dGhyZWFkLnJlZzIzOwogCiAJZm9yIChyZWcgPSAyNDsgcmVnIDwgMjg7IHJlZysrKQogCQkqKHB0 cisrKSA9IDA7CiAKIAkvKiBHUCwgU1AsIEZQLCBSQSAqLwotCWZvciAocmVnID0gMjg7IHJlZyA8 IDMyOyByZWcrKykKLQkJKihwdHIrKykgPSByZWdzLT5yZWdzW3JlZ107Ci0KLQkqKHB0cisrKSA9 IHJlZ3MtPmNwMF9zdGF0dXM7Ci0JKihwdHIrKykgPSByZWdzLT5sbzsKLQkqKHB0cisrKSA9IHJl Z3MtPmhpOwotCSoocHRyKyspID0gcmVncy0+Y3AwX2JhZHZhZGRyOwotCSoocHRyKyspID0gcmVn cy0+Y3AwX2NhdXNlOwotCSoocHRyKyspID0gcmVncy0+Y3AwX2VwYzsKKwkqKHB0cisrKSA9IChs b25nKXA7CisJKihwdHIrKykgPSBwLT50aHJlYWQucmVnMjk7CisJKihwdHIrKykgPSBwLT50aHJl YWQucmVnMzA7CisJKihwdHIrKykgPSBwLT50aHJlYWQucmVnMzE7CisKKwkqKHB0cisrKSA9IHAt PnRocmVhZC5jcDBfc3RhdHVzOworCisJLyogbG8sIGhpICovCisJKihwdHIrKykgPSAwOworCSoo cHRyKyspID0gMDsKKworCS8qCisJICogQmFkVkFkZHIsIENhdXNlCisJICogSWRlYWxseSB0aGVz ZSB3b3VsZCBjb21lIGZyb20gdGhlIGxhc3QgZXhjZXB0aW9uIGZyYW1lIHVwIHRoZSBzdGFjawor CSAqIGJ1dCB0aGF0IHJlcXVpcmVzIHVud2luZGluZywgb3RoZXJ3aXNlIHdlIGNhbid0IGtub3cg bXVjaCBmb3Igc3VyZS4KKwkgKi8KKwkqKHB0cisrKSA9IDA7CisJKihwdHIrKykgPSAwOworCisJ LyoKKwkgKiBQQworCSAqIHVzZSByZXR1cm4gYWRkcmVzcyAoUkEpLCBpLmUuIHRoZSBtb21lbnQg YWZ0ZXIgcmV0dXJuIGZyb20gcmVzdW1lKCkKKwkgKi8KKwkqKHB0cisrKSA9IHAtPnRocmVhZC5y ZWczMTsKIH0KIAogdm9pZCBrZ2RiX2FyY2hfc2V0X3BjKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1 bnNpZ25lZCBsb25nIHBjKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9hbGlnbi5j IGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9hbGlnbi5jCmluZGV4IDNmY2JhZTBmYTRhMC4uYWRjMWQ0 ZjMwMDYxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2FsaWduLmMKKysrIGIvYXJj aC9wb3dlcnBjL2tlcm5lbC9hbGlnbi5jCkBAIC03NjQsMTQgKzc2NCwyNSBAQCBpbnQgZml4X2Fs aWdubWVudChzdHJ1Y3QgcHRfcmVncyAqcmVncykKIAluYiA9IGFsaWduaW5mb1tpbnN0cl0ubGVu OwogCWZsYWdzID0gYWxpZ25pbmZvW2luc3RyXS5mbGFnczsKIAotCS8qIGxkYnJ4L3N0ZGJyeCBv dmVybGFwIGxmcy9zdGZzIGluIHRoZSBEU0lTUiB1bmZvcnR1bmF0ZWx5ICovCi0JaWYgKElTX1hG T1JNKGluc3RydWN0aW9uKSAmJiAoKGluc3RydWN0aW9uID4+IDEpICYgMHgzZmYpID09IDUzMikg ewotCQluYiA9IDg7Ci0JCWZsYWdzID0gTEQrU1c7Ci0JfSBlbHNlIGlmIChJU19YRk9STShpbnN0 cnVjdGlvbikgJiYKLQkJICAgKChpbnN0cnVjdGlvbiA+PiAxKSAmIDB4M2ZmKSA9PSA2NjApIHsK LQkJbmIgPSA4OwotCQlmbGFncyA9IFNUK1NXOworCS8qCisJICogSGFuZGxlIHNvbWUgY2FzZXMg d2hpY2ggZ2l2ZSBvdmVybGFwcyBpbiB0aGUgRFNJU1IgdmFsdWVzLgorCSAqLworCWlmIChJU19Y Rk9STShpbnN0cnVjdGlvbikpIHsKKwkJc3dpdGNoICgoaW5zdHJ1Y3Rpb24gPj4gMSkgJiAweDNm ZikgeworCQljYXNlIDUzMjoJLyogbGRicnggKi8KKwkJCW5iID0gODsKKwkJCWZsYWdzID0gTEQr U1c7CisJCQlicmVhazsKKwkJY2FzZSA2NjA6CS8qIHN0ZGJyeCAqLworCQkJbmIgPSA4OworCQkJ ZmxhZ3MgPSBTVCtTVzsKKwkJCWJyZWFrOworCQljYXNlIDIwOgkvKiBsd2FyeCAqLworCQljYXNl IDg0OgkvKiBsZGFyeCAqLworCQljYXNlIDExNjoJLyogbGhhcnggKi8KKwkJY2FzZSAyNzY6CS8q IGxxYXJ4ICovCisJCQlyZXR1cm4gMDsJLyogbm90IGVtdWxhdGVkIGV2ZXIgKi8KKwkJfQogCX0K IAogCS8qIEJ5dGVzd2FwIGxpdHRsZSBlbmRpYW4gbG9hZHMgYW5kIHN0b3JlcyAqLwpkaWZmIC0t Z2l0IGEvYXJjaC9zMzkwL2Jvb3QvY29tcHJlc3NlZC9taXNjLmMgYi9hcmNoL3MzOTAvYm9vdC9j b21wcmVzc2VkL21pc2MuYwppbmRleCA0NjVlY2E3NTZmZWIuLjUyYmE2YzAzMDA1ZCAxMDA2NDQK LS0tIGEvYXJjaC9zMzkwL2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKKysrIGIvYXJjaC9zMzkwL2Jv b3QvY29tcHJlc3NlZC9taXNjLmMKQEAgLTEzNSwzMSArMTM1LDM0IEBAIHN0YXRpYyB2b2lkIGNo ZWNrX2lwbF9wYXJtYmxvY2sodm9pZCAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAogdW5z aWduZWQgbG9uZyBkZWNvbXByZXNzX2tlcm5lbCh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgb3V0 cHV0X2FkZHI7Ci0JdW5zaWduZWQgY2hhciAqb3V0cHV0OworCXZvaWQgKm91dHB1dCwgKmtlcm5l bF9lbmQ7CiAKLQlvdXRwdXRfYWRkciA9ICgodW5zaWduZWQgbG9uZykgJl9lbmQgKyBIRUFQX1NJ WkUgKyA0MDk1VUwpICYgLTQwOTZVTDsKLQljaGVja19pcGxfcGFybWJsb2NrKCh2b2lkICopIDAs IG91dHB1dF9hZGRyICsgU1pfX2Jzc19zdGFydCk7Ci0JbWVtc2V0KCZfYnNzLCAwLCAmX2Vic3Mg LSAmX2Jzcyk7Ci0JZnJlZV9tZW1fcHRyID0gKHVuc2lnbmVkIGxvbmcpJl9lbmQ7Ci0JZnJlZV9t ZW1fZW5kX3B0ciA9IGZyZWVfbWVtX3B0ciArIEhFQVBfU0laRTsKLQlvdXRwdXQgPSAodW5zaWdu ZWQgY2hhciAqKSBvdXRwdXRfYWRkcjsKKwlvdXRwdXQgPSAodm9pZCAqKSBBTElHTigodW5zaWdu ZWQgbG9uZykgJl9lbmQgKyBIRUFQX1NJWkUsIFBBR0VfU0laRSk7CisJa2VybmVsX2VuZCA9IG91 dHB1dCArIFNaX19ic3Nfc3RhcnQ7CisJY2hlY2tfaXBsX3Bhcm1ibG9jaygodm9pZCAqKSAwLCAo dW5zaWduZWQgbG9uZykga2VybmVsX2VuZCk7CiAKICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JTklU UkQKIAkvKgogCSAqIE1vdmUgdGhlIGluaXRyZCByaWdodCBiZWhpbmQgdGhlIGVuZCBvZiB0aGUg ZGVjb21wcmVzc2VkCi0JICoga2VybmVsIGltYWdlLgorCSAqIGtlcm5lbCBpbWFnZS4gVGhpcyBh bHNvIHByZXZlbnRzIGluaXRyZCBjb3JydXB0aW9uIGNhdXNlZCBieQorCSAqIGJzcyBjbGVhcmlu ZyBzaW5jZSBrZXJuZWxfZW5kIHdpbGwgYWx3YXlzIGJlIGxvY2F0ZWQgYmVoaW5kIHRoZQorCSAq IGN1cnJlbnQgYnNzIHNlY3Rpb24uLgogCSAqLwotCWlmIChJTklUUkRfU1RBUlQgJiYgSU5JVFJE X1NJWkUgJiYKLQkgICAgSU5JVFJEX1NUQVJUIDwgKHVuc2lnbmVkIGxvbmcpIG91dHB1dCArIFNa X19ic3Nfc3RhcnQpIHsKLQkJY2hlY2tfaXBsX3Bhcm1ibG9jayhvdXRwdXQgKyBTWl9fYnNzX3N0 YXJ0LAotCQkJCSAgICBJTklUUkRfU1RBUlQgKyBJTklUUkRfU0laRSk7Ci0JCW1lbW1vdmUob3V0 cHV0ICsgU1pfX2Jzc19zdGFydCwKLQkJCSh2b2lkICopIElOSVRSRF9TVEFSVCwgSU5JVFJEX1NJ WkUpOwotCQlJTklUUkRfU1RBUlQgPSAodW5zaWduZWQgbG9uZykgb3V0cHV0ICsgU1pfX2Jzc19z dGFydDsKKwlpZiAoSU5JVFJEX1NUQVJUICYmIElOSVRSRF9TSVpFICYmIGtlcm5lbF9lbmQgPiAo dm9pZCAqKSBJTklUUkRfU1RBUlQpIHsKKwkJY2hlY2tfaXBsX3Bhcm1ibG9jayhrZXJuZWxfZW5k LCBJTklUUkRfU0laRSk7CisJCW1lbW1vdmUoa2VybmVsX2VuZCwgKHZvaWQgKikgSU5JVFJEX1NU QVJULCBJTklUUkRfU0laRSk7CisJCUlOSVRSRF9TVEFSVCA9ICh1bnNpZ25lZCBsb25nKSBrZXJu ZWxfZW5kOwogCX0KICNlbmRpZgogCisJLyoKKwkgKiBDbGVhciBic3Mgc2VjdGlvbi4gZnJlZV9t ZW1fcHRyIGFuZCBmcmVlX21lbV9lbmRfcHRyIG5lZWQgdG8gYmUKKwkgKiBpbml0aWFsaXplZCBh ZnRlcndhcmRzIHNpbmNlIHRoZXkgcmVzaWRlIGluIGJzcy4KKwkgKi8KKwltZW1zZXQoJl9ic3Ms IDAsICZfZWJzcyAtICZfYnNzKTsKKwlmcmVlX21lbV9wdHIgPSAodW5zaWduZWQgbG9uZykgJl9l bmQ7CisJZnJlZV9tZW1fZW5kX3B0ciA9IGZyZWVfbWVtX3B0ciArIEhFQVBfU0laRTsKKwogCXB1 dHMoIlVuY29tcHJlc3NpbmcgTGludXguLi4gIik7CiAJZGVjb21wcmVzcyhpbnB1dF9kYXRhLCBp bnB1dF9sZW4sIE5VTEwsIE5VTEwsIG91dHB1dCwgTlVMTCwgZXJyb3IpOwogCXB1dHMoIk9rLCBi b290aW5nIHRoZSBrZXJuZWwuXG4iKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L2VsZi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZWxmLmgKaW5kZXggNWY5NjJkZjMwZDBmLi44 MWExNTY5MjNiNjEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VsZi5oCisrKyBi L2FyY2gveDg2L2luY2x1ZGUvYXNtL2VsZi5oCkBAIC0yOTgsNyArMjk4LDcgQEAgZG8gewkJCQkJ CQkJCVwKIAogI2RlZmluZSBBVF9TWVNJTkZPCQkzMgogCi0jZGVmaW5lIENPTVBBVF9BUkNIX0RM SU5GTwlBUkNIX0RMSU5GT19JQTMyKHN5c2N0bF92c3lzY2FsbDMyKQorI2RlZmluZSBDT01QQVRf QVJDSF9ETElORk8JQVJDSF9ETElORk9fSUEzMihWRFNPX0NVUlJFTlRfQkFTRSkKIAogI2RlZmlu ZSBDT01QQVRfRUxGX0VUX0RZTl9CQVNFCShUQVNLX1VOTUFQUEVEX0JBU0UgKyAweDEwMDAwMDAp CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9mdHJhY2UuYyBiL2FyY2gveDg2L2tlcm5l bC9mdHJhY2UuYwppbmRleCBjOWEyODFmMjcyZmQuLjRjMGNiNTg4M2IwOCAxMDA2NDQKLS0tIGEv YXJjaC94ODYva2VybmVsL2Z0cmFjZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9mdHJhY2UuYwpA QCAtNDA0LDYgKzQwNCwxOCBAQCB2b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBs b25nICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgc2VsZl9hZGRyLAogCXVuc2lnbmVkIGxvbmcgcmV0 dXJuX2hvb2tlciA9ICh1bnNpZ25lZCBsb25nKQogCQkJCSZyZXR1cm5fdG9faGFuZGxlcjsKIAor CS8qCisJICogV2hlbiByZXN1bWluZyBmcm9tIHN1c3BlbmQtdG8tcmFtLCB0aGlzIGZ1bmN0aW9u IGNhbiBiZSBpbmRpcmVjdGx5CisJICogY2FsbGVkIGZyb20gZWFybHkgQ1BVIHN0YXJ0dXAgY29k ZSB3aGlsZSB0aGUgQ1BVIGlzIGluIHJlYWwgbW9kZSwKKwkgKiB3aGljaCB3b3VsZCBmYWlsIG1p c2VyYWJseS4gIE1ha2Ugc3VyZSB0aGUgc3RhY2sgcG9pbnRlciBpcyBhCisJICogdmlydHVhbCBh ZGRyZXNzLgorCSAqCisJICogVGhpcyBjaGVjayBpc24ndCBhcyBhY2N1cmF0ZSBhcyB2aXJ0X2Fk ZHJfdmFsaWQoKSwgYnV0IGl0IHNob3VsZCBiZQorCSAqIGdvb2QgZW5vdWdoIGZvciB0aGlzIHB1 cnBvc2UsIGFuZCBpdCdzIGZhc3QuCisJICovCisJaWYgKHVubGlrZWx5KChsb25nKV9fYnVpbHRp bl9mcmFtZV9hZGRyZXNzKDApID49IDApKQorCQlyZXR1cm47CisKIAlpZiAodW5saWtlbHkoYXRv bWljX3JlYWQoJmN1cnJlbnQtPnRyYWNpbmdfZ3JhcGhfcGF1c2UpKSkKIAkJcmV0dXJuOwogCmRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9pbml0LmMgYi9hcmNoL3g4Ni9tbS9pbml0LmMKaW5kZXgg YTRjY2EwNjZjODg5Li5kYmE3MWIyNWE1NDYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL2luaXQu YworKysgYi9hcmNoL3g4Ni9tbS9pbml0LmMKQEAgLTMxOCwyMSArMzE4LDQwIEBAIHVuc2lnbmVk IGxvbmcgX19pbml0X3JlZm9rIGluaXRfbWVtb3J5X21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFy dCwKICAqIGRldm1lbV9pc19hbGxvd2VkKCkgY2hlY2tzIHRvIHNlZSBpZiAvZGV2L21lbSBhY2Nl c3MgdG8gYSBjZXJ0YWluIGFkZHJlc3MKICAqIGlzIHZhbGlkLiBUaGUgYXJndW1lbnQgaXMgYSBw aHlzaWNhbCBwYWdlIG51bWJlci4KICAqCi0gKgotICogT24geDg2LCBhY2Nlc3MgaGFzIHRvIGJl IGdpdmVuIHRvIHRoZSBmaXJzdCBtZWdhYnl0ZSBvZiByYW0gYmVjYXVzZSB0aGF0IGFyZWEKLSAq IGNvbnRhaW5zIGJpb3MgY29kZSBhbmQgZGF0YSByZWdpb25zIHVzZWQgYnkgWCBhbmQgZG9zZW11 IGFuZCBzaW1pbGFyIGFwcHMuCi0gKiBBY2Nlc3MgaGFzIHRvIGJlIGdpdmVuIHRvIG5vbi1rZXJu ZWwtcmFtIGFyZWFzIGFzIHdlbGwsIHRoZXNlIGNvbnRhaW4gdGhlIFBDSQotICogbW1pbyByZXNv dXJjZXMgYXMgd2VsbCBhcyBwb3RlbnRpYWwgYmlvcy9hY3BpIGRhdGEgcmVnaW9ucy4KKyAqIE9u IHg4NiwgYWNjZXNzIGhhcyB0byBiZSBnaXZlbiB0byB0aGUgZmlyc3QgbWVnYWJ5dGUgb2YgUkFN IGJlY2F1c2UgdGhhdAorICogYXJlYSB0cmFkaXRpb25hbGx5IGNvbnRhaW5zIEJJT1MgY29kZSBh bmQgZGF0YSByZWdpb25zIHVzZWQgYnkgWCwgZG9zZW11LAorICogYW5kIHNpbWlsYXIgYXBwcy4g U2luY2UgdGhleSBtYXAgdGhlIGVudGlyZSBtZW1vcnkgcmFuZ2UsIHRoZSB3aG9sZSByYW5nZQor ICogbXVzdCBiZSBhbGxvd2VkIChmb3IgbWFwcGluZyksIGJ1dCBhbnkgYXJlYXMgdGhhdCB3b3Vs ZCBvdGhlcndpc2UgYmUKKyAqIGRpc2FsbG93ZWQgYXJlIGZsYWdnZWQgYXMgYmVpbmcgInplcm8g ZmlsbGVkIiBpbnN0ZWFkIG9mIHJlamVjdGVkLgorICogQWNjZXNzIGhhcyB0byBiZSBnaXZlbiB0 byBub24ta2VybmVsLXJhbSBhcmVhcyBhcyB3ZWxsLCB0aGVzZSBjb250YWluIHRoZQorICogUENJ IG1taW8gcmVzb3VyY2VzIGFzIHdlbGwgYXMgcG90ZW50aWFsIGJpb3MvYWNwaSBkYXRhIHJlZ2lv bnMuCiAgKi8KIGludCBkZXZtZW1faXNfYWxsb3dlZCh1bnNpZ25lZCBsb25nIHBhZ2VucikKIHsK LQlpZiAocGFnZW5yIDw9IDI1NikKLQkJcmV0dXJuIDE7Ci0JaWYgKGlvbWVtX2lzX2V4Y2x1c2l2 ZShwYWdlbnIgPDwgUEFHRV9TSElGVCkpCisJaWYgKHBhZ2VfaXNfcmFtKHBhZ2VucikpIHsKKwkJ LyoKKwkJICogRm9yIGRpc2FsbG93ZWQgbWVtb3J5IHJlZ2lvbnMgaW4gdGhlIGxvdyAxTUIgcmFu Z2UsCisJCSAqIHJlcXVlc3QgdGhhdCB0aGUgcGFnZSBiZSBzaG93biBhcyBhbGwgemVyb3MuCisJ CSAqLworCQlpZiAocGFnZW5yIDwgMjU2KQorCQkJcmV0dXJuIDI7CisKKwkJcmV0dXJuIDA7CisJ fQorCisJLyoKKwkgKiBUaGlzIG11c3QgZm9sbG93IFJBTSB0ZXN0LCBzaW5jZSBTeXN0ZW0gUkFN IGlzIGNvbnNpZGVyZWQgYQorCSAqIHJlc3RyaWN0ZWQgcmVzb3VyY2UgdW5kZXIgQ09ORklHX1NU UklDVF9JT01FTS4KKwkgKi8KKwlpZiAoaW9tZW1faXNfZXhjbHVzaXZlKHBhZ2VuciA8PCBQQUdF X1NISUZUKSkgeworCQkvKiBMb3cgMU1CIGJ5cGFzc2VzIGlvbWVtIHJlc3RyaWN0aW9ucy4gKi8K KwkJaWYgKHBhZ2VuciA8IDI1NikKKwkJCXJldHVybiAxOworCiAJCXJldHVybiAwOwotCWlmICgh cGFnZV9pc19yYW0ocGFnZW5yKSkKLQkJcmV0dXJuIDE7Ci0JcmV0dXJuIDA7CisJfQorCisJcmV0 dXJuIDE7CiB9CiAKIHZvaWQgZnJlZV9pbml0X3BhZ2VzKGNoYXIgKndoYXQsIHVuc2lnbmVkIGxv bmcgYmVnaW4sIHVuc2lnbmVkIGxvbmcgZW5kKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvcGNpL3hl bi5jIGIvYXJjaC94ODYvcGNpL3hlbi5jCmluZGV4IDFlMWNhZjU2Yzk0OC4uY2QxZDk2ZjNkNzFm IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9wY2kveGVuLmMKKysrIGIvYXJjaC94ODYvcGNpL3hlbi5j CkBAIC0yMjcsMjMgKzIyNywxNCBAQCBzdGF0aWMgaW50IHhlbl9odm1fc2V0dXBfbXNpX2lycXMo c3RydWN0IHBjaV9kZXYgKmRldiwgaW50IG52ZWMsIGludCB0eXBlKQogCQlyZXR1cm4gMTsKIAog CWxpc3RfZm9yX2VhY2hfZW50cnkobXNpZGVzYywgJmRldi0+bXNpX2xpc3QsIGxpc3QpIHsKLQkJ X19yZWFkX21zaV9tc2cobXNpZGVzYywgJm1zZyk7Ci0JCXBpcnEgPSBNU0lfQUREUl9FWFRfREVT VF9JRChtc2cuYWRkcmVzc19oaSkgfAotCQkJKChtc2cuYWRkcmVzc19sbyA+PiBNU0lfQUREUl9E RVNUX0lEX1NISUZUKSAmIDB4ZmYpOwotCQlpZiAobXNnLmRhdGEgIT0gWEVOX1BJUlFfTVNJX0RB VEEgfHwKLQkJICAgIHhlbl9pcnFfZnJvbV9waXJxKHBpcnEpIDwgMCkgewotCQkJcGlycSA9IHhl bl9hbGxvY2F0ZV9waXJxX21zaShkZXYsIG1zaWRlc2MpOwotCQkJaWYgKHBpcnEgPCAwKSB7Ci0J CQkJaXJxID0gLUVOT0RFVjsKLQkJCQlnb3RvIGVycm9yOwotCQkJfQotCQkJeGVuX21zaV9jb21w b3NlX21zZyhkZXYsIHBpcnEsICZtc2cpOwotCQkJX193cml0ZV9tc2lfbXNnKG1zaWRlc2MsICZt c2cpOwotCQkJZGV2X2RiZygmZGV2LT5kZXYsICJ4ZW46IG1zaSBib3VuZCB0byBwaXJxPSVkXG4i LCBwaXJxKTsKLQkJfSBlbHNlIHsKLQkJCWRldl9kYmcoJmRldi0+ZGV2LAotCQkJCSJ4ZW46IG1z aSBhbHJlYWR5IGJvdW5kIHRvIHBpcnE9JWRcbiIsIHBpcnEpOworCQlwaXJxID0geGVuX2FsbG9j YXRlX3BpcnFfbXNpKGRldiwgbXNpZGVzYyk7CisJCWlmIChwaXJxIDwgMCkgeworCQkJaXJxID0g LUVOT0RFVjsKKwkJCWdvdG8gZXJyb3I7CiAJCX0KKwkJeGVuX21zaV9jb21wb3NlX21zZyhkZXYs IHBpcnEsICZtc2cpOworCQlfX3dyaXRlX21zaV9tc2cobXNpZGVzYywgJm1zZyk7CisJCWRldl9k YmcoJmRldi0+ZGV2LCAieGVuOiBtc2kgYm91bmQgdG8gcGlycT0lZFxuIiwgcGlycSk7CiAJCWly cSA9IHhlbl9iaW5kX3BpcnFfbXNpX3RvX2lycShkZXYsIG1zaWRlc2MsIHBpcnEsIDAsCiAJCQkJ CSAgICAgICAodHlwZSA9PSBQQ0lfQ0FQX0lEX01TSVgpID8KIAkJCQkJICAgICAgICJtc2kteCIg OiAibXNpIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9NYWtlZmlsZSBiL2RyaXZlcnMvYWNw aS9NYWtlZmlsZQppbmRleCBlY2IyNmI0ZjI5YTAuLjA3MjYwN2ExOGVmMSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9hY3BpL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQpAQCAtMiw3 ICsyLDYgQEAKICMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBBQ1BJIGludGVycHJldGVyCiAjCiAK LWNjZmxhZ3MteQkJCTo9IC1PcwogY2NmbGFncy0kKENPTkZJR19BQ1BJX0RFQlVHKQkrPSAtREFD UElfREVCVUdfT1VUUFVUCiAKICMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMu YyBiL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYwppbmRleCBlOGM0ODk5OWI4ZDcuLmJjOTgyOGRi YzE0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jCisrKyBiL2RyaXZlcnMv YWNwaS9hcGVpL2doZXMuYwpAQCAtOTUzLDYgKzk1Myw3IEBAIHN0YXRpYyBpbnQgX19kZXZleGl0 IGdoZXNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmdoZXNfZGV2KQogCQlpZiAobGlz dF9lbXB0eSgmZ2hlc19zY2kpKQogCQkJdW5yZWdpc3Rlcl9hY3BpX2hlZF9ub3RpZmllcigmZ2hl c19ub3RpZmllcl9zY2kpOwogCQltdXRleF91bmxvY2soJmdoZXNfbGlzdF9tdXRleCk7CisJCXN5 bmNocm9uaXplX3JjdSgpOwogCQlicmVhazsKIAljYXNlIEFDUElfSEVTVF9OT1RJRllfTk1JOgog CQltdXRleF9sb2NrKCZnaGVzX2xpc3RfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3Bp L3Bvd2VyLmMgYi9kcml2ZXJzL2FjcGkvcG93ZXIuYwppbmRleCA5YWMyYTlmYTkwZmYuLjY3OTNk MjRjNTI3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Bvd2VyLmMKKysrIGIvZHJpdmVycy9h Y3BpL3Bvd2VyLmMKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgaW50IGFjcGlfcG93ZXJfZ2V0 X2xpc3Rfc3RhdGUoc3RydWN0IGFjcGlfaGFuZGxlX2xpc3QgKmxpc3QsIGludCAqc3RhdGUpCiAJ CXJldHVybiAtRUlOVkFMOwogCiAJLyogVGhlIHN0YXRlIG9mIHRoZSBsaXN0IGlzICdvbicgSUZG IGFsbCByZXNvdXJjZXMgYXJlICdvbicuICovCi0KKwljdXJfc3RhdGUgPSAwOwogCWZvciAoaSA9 IDA7IGkgPCBsaXN0LT5jb3VudDsgaSsrKSB7CiAJCXN0cnVjdCBhY3BpX3Bvd2VyX3Jlc291cmNl ICpyZXNvdXJjZTsKIAkJYWNwaV9oYW5kbGUgaGFuZGxlID0gbGlzdC0+aGFuZGxlc1tpXTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jIGIvZHJpdmVycy9i bG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKaW5kZXggMjIzMmI4NTg2MThmLi4zNDdhYWJjNDIz Y2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jCisrKyBi L2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jCkBAIC04MTEsMzMgKzgxMSwzNCBA QCBzdGF0aWMgaW50IGRpc3BhdGNoX3J3X2Jsb2NrX2lvKHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lm LAogc3RhdGljIHZvaWQgbWFrZV9yZXNwb25zZShzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwgdTY0 IGlkLAogCQkJICB1bnNpZ25lZCBzaG9ydCBvcCwgaW50IHN0KQogewotCXN0cnVjdCBibGtpZl9y ZXNwb25zZSAgcmVzcDsKKwlzdHJ1Y3QgYmxraWZfcmVzcG9uc2UgKnJlc3A7CiAJdW5zaWduZWQg bG9uZyAgICAgZmxhZ3M7CiAJdW5pb24gYmxraWZfYmFja19yaW5ncyAqYmxrX3JpbmdzID0gJmJs a2lmLT5ibGtfcmluZ3M7CiAJaW50IG5vdGlmeTsKIAotCXJlc3AuaWQgICAgICAgID0gaWQ7Ci0J cmVzcC5vcGVyYXRpb24gPSBvcDsKLQlyZXNwLnN0YXR1cyAgICA9IHN0OwotCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJmJsa2lmLT5ibGtfcmluZ19sb2NrLCBmbGFncyk7CiAJLyogUGxhY2Ugb24gdGhl IHJlc3BvbnNlIHJpbmcgZm9yIHRoZSByZWxldmFudCBkb21haW4uICovCiAJc3dpdGNoIChibGtp Zi0+YmxrX3Byb3RvY29sKSB7CiAJY2FzZSBCTEtJRl9QUk9UT0NPTF9OQVRJVkU6Ci0JCW1lbWNw eShSSU5HX0dFVF9SRVNQT05TRSgmYmxrX3JpbmdzLT5uYXRpdmUsIGJsa19yaW5ncy0+bmF0aXZl LnJzcF9wcm9kX3B2dCksCi0JCSAgICAgICAmcmVzcCwgc2l6ZW9mKHJlc3ApKTsKKwkJcmVzcCA9 IFJJTkdfR0VUX1JFU1BPTlNFKCZibGtfcmluZ3MtPm5hdGl2ZSwKKwkJCQkJIGJsa19yaW5ncy0+ bmF0aXZlLnJzcF9wcm9kX3B2dCk7CiAJCWJyZWFrOwogCWNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2 XzMyOgotCQltZW1jcHkoUklOR19HRVRfUkVTUE9OU0UoJmJsa19yaW5ncy0+eDg2XzMyLCBibGtf cmluZ3MtPng4Nl8zMi5yc3BfcHJvZF9wdnQpLAotCQkgICAgICAgJnJlc3AsIHNpemVvZihyZXNw KSk7CisJCXJlc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmYmxrX3JpbmdzLT54ODZfMzIsCisJCQkJ CSBibGtfcmluZ3MtPng4Nl8zMi5yc3BfcHJvZF9wdnQpOwogCQlicmVhazsKIAljYXNlIEJMS0lG X1BST1RPQ09MX1g4Nl82NDoKLQkJbWVtY3B5KFJJTkdfR0VUX1JFU1BPTlNFKCZibGtfcmluZ3Mt Png4Nl82NCwgYmxrX3JpbmdzLT54ODZfNjQucnNwX3Byb2RfcHZ0KSwKLQkJICAgICAgICZyZXNw LCBzaXplb2YocmVzcCkpOworCQlyZXNwID0gUklOR19HRVRfUkVTUE9OU0UoJmJsa19yaW5ncy0+ eDg2XzY0LAorCQkJCQkgYmxrX3JpbmdzLT54ODZfNjQucnNwX3Byb2RfcHZ0KTsKIAkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJQlVHKCk7CiAJfQorCisJcmVzcC0+aWQgICAgICAgID0gaWQ7CisJcmVz cC0+b3BlcmF0aW9uID0gb3A7CisJcmVzcC0+c3RhdHVzICAgID0gc3Q7CisKIAlibGtfcmluZ3Mt PmNvbW1vbi5yc3BfcHJvZF9wdnQrKzsKIAlSSU5HX1BVU0hfUkVTUE9OU0VTX0FORF9DSEVDS19O T1RJRlkoJmJsa19yaW5ncy0+Y29tbW9uLCBub3RpZnkpOwogCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmJsa2lmLT5ibGtfcmluZ19sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL3hlbi1ibGtiYWNrL2NvbW1vbi5oIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9jb21t b24uaAppbmRleCAyYzYyMDVlNTAyZWYuLjRhNWYyMWU4N2E4MCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ibG9jay94ZW4tYmxrYmFjay9jb21tb24uaAorKysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGti YWNrL2NvbW1vbi5oCkBAIC01Niw5ICs1Niw2IEBACiBzdHJ1Y3QgYmxraWZfY29tbW9uX3JlcXVl c3QgewogCWNoYXIgZHVtbXk7CiB9Owotc3RydWN0IGJsa2lmX2NvbW1vbl9yZXNwb25zZSB7Ci0J Y2hhciBkdW1teTsKLX07CiAKIC8qIGkzODYgcHJvdG9jb2wgdmVyc2lvbiAqLwogI3ByYWdtYSBw YWNrKHB1c2gsIDQpCkBAIC04MywxMSArODAsNiBAQCBzdHJ1Y3QgYmxraWZfeDg2XzMyX3JlcXVl c3QgewogCQlzdHJ1Y3QgYmxraWZfeDg2XzMyX3JlcXVlc3RfZGlzY2FyZCBkaXNjYXJkOwogCX0g dTsKIH07Ci1zdHJ1Y3QgYmxraWZfeDg2XzMyX3Jlc3BvbnNlIHsKLQl1aW50NjRfdCAgICAgICAg aWQ7ICAgICAgICAgICAgICAvKiBjb3BpZWQgZnJvbSByZXF1ZXN0ICovCi0JdWludDhfdCAgICAg ICAgIG9wZXJhdGlvbjsgICAgICAgLyogY29waWVkIGZyb20gcmVxdWVzdCAqLwotCWludDE2X3Qg ICAgICAgICBzdGF0dXM7ICAgICAgICAgIC8qIEJMS0lGX1JTUF8/Pz8gICAgICAgKi8KLX07CiAj cHJhZ21hIHBhY2socG9wKQogCiAvKiB4ODZfNjQgcHJvdG9jb2wgdmVyc2lvbiAqLwpAQCAtMTEy LDE4ICsxMDQsMTMgQEAgc3RydWN0IGJsa2lmX3g4Nl82NF9yZXF1ZXN0IHsKIAkJc3RydWN0IGJs a2lmX3g4Nl82NF9yZXF1ZXN0X2Rpc2NhcmQgZGlzY2FyZDsKIAl9IHU7CiB9Owotc3RydWN0IGJs a2lmX3g4Nl82NF9yZXNwb25zZSB7Ci0JdWludDY0X3QgICAgICAgX19hdHRyaWJ1dGVfXygoX19h bGlnbmVkX18oOCkpKSBpZDsKLQl1aW50OF90ICAgICAgICAgb3BlcmF0aW9uOyAgICAgICAvKiBj b3BpZWQgZnJvbSByZXF1ZXN0ICovCi0JaW50MTZfdCAgICAgICAgIHN0YXR1czsgICAgICAgICAg LyogQkxLSUZfUlNQXz8/PyAgICAgICAqLwotfTsKIAogREVGSU5FX1JJTkdfVFlQRVMoYmxraWZf Y29tbW9uLCBzdHJ1Y3QgYmxraWZfY29tbW9uX3JlcXVlc3QsCi0JCSAgc3RydWN0IGJsa2lmX2Nv bW1vbl9yZXNwb25zZSk7CisJCSAgc3RydWN0IGJsa2lmX3Jlc3BvbnNlKTsKIERFRklORV9SSU5H X1RZUEVTKGJsa2lmX3g4Nl8zMiwgc3RydWN0IGJsa2lmX3g4Nl8zMl9yZXF1ZXN0LAotCQkgIHN0 cnVjdCBibGtpZl94ODZfMzJfcmVzcG9uc2UpOworCQkgIHN0cnVjdCBibGtpZl9yZXNwb25zZSBf X3BhY2tlZCk7CiBERUZJTkVfUklOR19UWVBFUyhibGtpZl94ODZfNjQsIHN0cnVjdCBibGtpZl94 ODZfNjRfcmVxdWVzdCwKLQkJICBzdHJ1Y3QgYmxraWZfeDg2XzY0X3Jlc3BvbnNlKTsKKwkJICBz dHJ1Y3QgYmxraWZfcmVzcG9uc2UpOwogCiB1bmlvbiBibGtpZl9iYWNrX3JpbmdzIHsKIAlzdHJ1 Y3QgYmxraWZfYmFja19yaW5nICAgICAgICBuYXRpdmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2No YXIvbHAuYyBiL2RyaXZlcnMvY2hhci9scC5jCmluZGV4IDk3YzNlZGI5NWFlNy4uYmI4ZTM3MGM5 YzQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbHAuYworKysgYi9kcml2ZXJzL2NoYXIvbHAu YwpAQCAtODU4LDcgKzg1OCwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBscF9zZXR1cCAoY2hhciAq c3RyKQogCX0gZWxzZSBpZiAoIXN0cmNtcChzdHIsICJhdXRvIikpIHsKIAkJcGFycG9ydF9uclsw XSA9IExQX1BBUlBPUlRfQVVUTzsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAibm9uZSIpKSB7 Ci0JCXBhcnBvcnRfbnJbcGFycG9ydF9wdHIrK10gPSBMUF9QQVJQT1JUX05PTkU7CisJCWlmIChw YXJwb3J0X3B0ciA8IExQX05PKQorCQkJcGFycG9ydF9ucltwYXJwb3J0X3B0cisrXSA9IExQX1BB UlBPUlRfTk9ORTsKKwkJZWxzZQorCQkJcHJpbnRrKEtFUk5fSU5GTyAibHA6IHRvbyBtYW55IHBv cnRzLCAlcyBpZ25vcmVkLlxuIiwKKwkJCSAgICAgICBzdHIpOwogCX0gZWxzZSBpZiAoIXN0cmNt cChzdHIsICJyZXNldCIpKSB7CiAJCXJlc2V0ID0gMTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2NoYXIvbWVtLmMgYi9kcml2ZXJzL2NoYXIvbWVtLmMKaW5kZXggMTQ1MTc5MDMzNzE2Li5iMWFj OGQ0MTlhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9tZW0uYworKysgYi9kcml2ZXJzL2No YXIvbWVtLmMKQEAgLTU4LDYgKzU4LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZhbGlkX21tYXBf cGh5c19hZGRyX3JhbmdlKHVuc2lnbmVkIGxvbmcgcGZuLCBzaXplX3Qgc2l6ZSkKICNlbmRpZgog CiAjaWZkZWYgQ09ORklHX1NUUklDVF9ERVZNRU0KK3N0YXRpYyBpbmxpbmUgaW50IHBhZ2VfaXNf YWxsb3dlZCh1bnNpZ25lZCBsb25nIHBmbikKK3sKKwlyZXR1cm4gZGV2bWVtX2lzX2FsbG93ZWQo cGZuKTsKK30KIHN0YXRpYyBpbmxpbmUgaW50IHJhbmdlX2lzX2FsbG93ZWQodW5zaWduZWQgbG9u ZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAl1NjQgZnJvbSA9ICgodTY0KXBmbikgPDwg UEFHRV9TSElGVDsKQEAgLTc3LDYgKzgxLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJhbmdlX2lz X2FsbG93ZWQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAlyZXR1cm4g MTsKIH0KICNlbHNlCitzdGF0aWMgaW5saW5lIGludCBwYWdlX2lzX2FsbG93ZWQodW5zaWduZWQg bG9uZyBwZm4pCit7CisJcmV0dXJuIDE7Cit9CiBzdGF0aWMgaW5saW5lIGludCByYW5nZV9pc19h bGxvd2VkKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIHNpemUpCiB7CiAJcmV0dXJu IDE7CkBAIC0xMTgsMjMgKzEyNiwzMSBAQCBzdGF0aWMgc3NpemVfdCByZWFkX21lbShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZiwKIAogCXdoaWxlIChjb3VudCA+IDApIHsKIAkJ dW5zaWduZWQgbG9uZyByZW1haW5pbmc7CisJCWludCBhbGxvd2VkOwogCiAJCXN6ID0gc2l6ZV9p bnNpZGVfcGFnZShwLCBjb3VudCk7CiAKLQkJaWYgKCFyYW5nZV9pc19hbGxvd2VkKHAgPj4gUEFH RV9TSElGVCwgY291bnQpKQorCQlhbGxvd2VkID0gcGFnZV9pc19hbGxvd2VkKHAgPj4gUEFHRV9T SElGVCk7CisJCWlmICghYWxsb3dlZCkKIAkJCXJldHVybiAtRVBFUk07CisJCWlmIChhbGxvd2Vk ID09IDIpIHsKKwkJCS8qIFNob3cgemVyb3MgZm9yIHJlc3RyaWN0ZWQgbWVtb3J5LiAqLworCQkJ cmVtYWluaW5nID0gY2xlYXJfdXNlcihidWYsIHN6KTsKKwkJfSBlbHNlIHsKKwkJCS8qCisJCQkg KiBPbiBpYTY0IGlmIGEgcGFnZSBoYXMgYmVlbiBtYXBwZWQgc29tZXdoZXJlIGFzCisJCQkgKiB1 bmNhY2hlZCwgdGhlbiBpdCBtdXN0IGFsc28gYmUgYWNjZXNzZWQgdW5jYWNoZWQKKwkJCSAqIGJ5 IHRoZSBrZXJuZWwgb3IgZGF0YSBjb3JydXB0aW9uIG1heSBvY2N1ci4KKwkJCSAqLworCQkJcHRy ID0geGxhdGVfZGV2X21lbV9wdHIocCk7CisJCQlpZiAoIXB0cikKKwkJCQlyZXR1cm4gLUVGQVVM VDsKIAotCQkvKgotCQkgKiBPbiBpYTY0IGlmIGEgcGFnZSBoYXMgYmVlbiBtYXBwZWQgc29tZXdo ZXJlIGFzIHVuY2FjaGVkLCB0aGVuCi0JCSAqIGl0IG11c3QgYWxzbyBiZSBhY2Nlc3NlZCB1bmNh Y2hlZCBieSB0aGUga2VybmVsIG9yIGRhdGEKLQkJICogY29ycnVwdGlvbiBtYXkgb2NjdXIuCi0J CSAqLwotCQlwdHIgPSB4bGF0ZV9kZXZfbWVtX3B0cihwKTsKLQkJaWYgKCFwdHIpCi0JCQlyZXR1 cm4gLUVGQVVMVDsKKwkJCXJlbWFpbmluZyA9IGNvcHlfdG9fdXNlcihidWYsIHB0ciwgc3opOwor CisJCQl1bnhsYXRlX2Rldl9tZW1fcHRyKHAsIHB0cik7CisJCX0KIAotCQlyZW1haW5pbmcgPSBj b3B5X3RvX3VzZXIoYnVmLCBwdHIsIHN6KTsKLQkJdW54bGF0ZV9kZXZfbWVtX3B0cihwLCBwdHIp OwogCQlpZiAocmVtYWluaW5nKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKQEAgLTE3NCwzMCArMTkw LDM2IEBAIHN0YXRpYyBzc2l6ZV90IHdyaXRlX21lbShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qg Y2hhciBfX3VzZXIgKmJ1ZiwKICNlbmRpZgogCiAJd2hpbGUgKGNvdW50ID4gMCkgeworCQlpbnQg YWxsb3dlZDsKKwogCQlzeiA9IHNpemVfaW5zaWRlX3BhZ2UocCwgY291bnQpOwogCi0JCWlmICgh cmFuZ2VfaXNfYWxsb3dlZChwID4+IFBBR0VfU0hJRlQsIHN6KSkKKwkJYWxsb3dlZCA9IHBhZ2Vf aXNfYWxsb3dlZChwID4+IFBBR0VfU0hJRlQpOworCQlpZiAoIWFsbG93ZWQpCiAJCQlyZXR1cm4g LUVQRVJNOwogCi0JCS8qCi0JCSAqIE9uIGlhNjQgaWYgYSBwYWdlIGhhcyBiZWVuIG1hcHBlZCBz b21ld2hlcmUgYXMgdW5jYWNoZWQsIHRoZW4KLQkJICogaXQgbXVzdCBhbHNvIGJlIGFjY2Vzc2Vk IHVuY2FjaGVkIGJ5IHRoZSBrZXJuZWwgb3IgZGF0YQotCQkgKiBjb3JydXB0aW9uIG1heSBvY2N1 ci4KLQkJICovCi0JCXB0ciA9IHhsYXRlX2Rldl9tZW1fcHRyKHApOwotCQlpZiAoIXB0cikgewot CQkJaWYgKHdyaXR0ZW4pCi0JCQkJYnJlYWs7Ci0JCQlyZXR1cm4gLUVGQVVMVDsKLQkJfQorCQkv KiBTa2lwIGFjdHVhbCB3cml0aW5nIHdoZW4gYSBwYWdlIGlzIG1hcmtlZCBhcyByZXN0cmljdGVk LiAqLworCQlpZiAoYWxsb3dlZCA9PSAxKSB7CisJCQkvKgorCQkJICogT24gaWE2NCBpZiBhIHBh Z2UgaGFzIGJlZW4gbWFwcGVkIHNvbWV3aGVyZSBhcworCQkJICogdW5jYWNoZWQsIHRoZW4gaXQg bXVzdCBhbHNvIGJlIGFjY2Vzc2VkIHVuY2FjaGVkCisJCQkgKiBieSB0aGUga2VybmVsIG9yIGRh dGEgY29ycnVwdGlvbiBtYXkgb2NjdXIuCisJCQkgKi8KKwkJCXB0ciA9IHhsYXRlX2Rldl9tZW1f cHRyKHApOworCQkJaWYgKCFwdHIpIHsKKwkJCQlpZiAod3JpdHRlbikKKwkJCQkJYnJlYWs7CisJ CQkJcmV0dXJuIC1FRkFVTFQ7CisJCQl9CiAKLQkJY29waWVkID0gY29weV9mcm9tX3VzZXIocHRy LCBidWYsIHN6KTsKLQkJdW54bGF0ZV9kZXZfbWVtX3B0cihwLCBwdHIpOwotCQlpZiAoY29waWVk KSB7Ci0JCQl3cml0dGVuICs9IHN6IC0gY29waWVkOwotCQkJaWYgKHdyaXR0ZW4pCi0JCQkJYnJl YWs7Ci0JCQlyZXR1cm4gLUVGQVVMVDsKKwkJCWNvcGllZCA9IGNvcHlfZnJvbV91c2VyKHB0ciwg YnVmLCBzeik7CisJCQl1bnhsYXRlX2Rldl9tZW1fcHRyKHAsIHB0cik7CisJCQlpZiAoY29waWVk KSB7CisJCQkJd3JpdHRlbiArPSBzeiAtIGNvcGllZDsKKwkJCQlpZiAod3JpdHRlbikKKwkJCQkJ YnJlYWs7CisJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQl9CiAJCX0KIAogCQlidWYgKz0gc3o7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5jIGIvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2UuYwppbmRleCAxZWQ1YTFjNGQ1OWEuLjQ2ZjYy NzcxMGM0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2Uu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5jCkBAIC00OTMsNyAr NDkzLDcgQEAgaW50IHZtd19mZW5jZV9jcmVhdGUoc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpm bWFuLAogCQkgICAgIHN0cnVjdCB2bXdfZmVuY2Vfb2JqICoqcF9mZW5jZSkKIHsKIAlzdHJ1Y3Qg dm13X2ZlbmNlX29iaiAqZmVuY2U7Ci0JaW50IHJldDsKKyAJaW50IHJldDsKIAogCWZlbmNlID0g a3phbGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHVubGlrZWx5KGZlbmNl ID09IE5VTEwpKQpAQCAtNjYxLDYgKzY2MSw0MSBAQCB2b2lkIHZtd19mZW5jZV9maWZvX3VwKHN0 cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbikKIH0KIAogCisvKioKKyAqIHZtd19mZW5jZV9v YmpfbG9va3VwIC0gTG9vayB1cCBhIHVzZXItc3BhY2UgZmVuY2Ugb2JqZWN0CisgKgorICogQHRm aWxlOiBBIHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgaWRlbnRpZnlpbmcgdGhlIGNhbGxlci4KKyAq IEBoYW5kbGU6IEEgaGFuZGxlIGlkZW50aWZ5aW5nIHRoZSBmZW5jZSBvYmplY3QuCisgKiBAcmV0 dXJuOiBBIHN0cnVjdCB2bXdfdXNlcl9mZW5jZSBiYXNlIHR0bSBvYmplY3Qgb24gc3VjY2VzcyBv cgorICogYW4gZXJyb3IgcG9pbnRlciBvbiBmYWlsdXJlLgorICoKKyAqIFRoZSBmZW5jZSBvYmpl Y3QgaXMgbG9va2VkIHVwIGFuZCB0eXBlLWNoZWNrZWQuIFRoZSBjYWxsZXIgbmVlZHMKKyAqIHRv IGhhdmUgb3BlbmVkIHRoZSBmZW5jZSBvYmplY3QgZmlyc3QsIGJ1dCBzaW5jZSB0aGF0IGhhcHBl bnMgb24KKyAqIGNyZWF0aW9uIGFuZCBmZW5jZSBvYmplY3RzIGFyZW4ndCBzaGFyZWFibGUsIHRo YXQncyBub3QgYW4KKyAqIGlzc3VlIGN1cnJlbnRseS4KKyAqLworc3RhdGljIHN0cnVjdCB0dG1f YmFzZV9vYmplY3QgKgordm13X2ZlbmNlX29ial9sb29rdXAoc3RydWN0IHR0bV9vYmplY3RfZmls ZSAqdGZpbGUsIHUzMiBoYW5kbGUpCit7CisJc3RydWN0IHR0bV9iYXNlX29iamVjdCAqYmFzZSA9 IHR0bV9iYXNlX29iamVjdF9sb29rdXAodGZpbGUsIGhhbmRsZSk7CisKKwlpZiAoIWJhc2UpIHsK KwkJcHJfZXJyKCJJbnZhbGlkIGZlbmNlIG9iamVjdCBoYW5kbGUgMHglMDhseC5cbiIsCisJCSAg ICAgICAodW5zaWduZWQgbG9uZyloYW5kbGUpOworCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK Kwl9CisKKwlpZiAoYmFzZS0+cmVmY291bnRfcmVsZWFzZSAhPSB2bXdfdXNlcl9mZW5jZV9iYXNl X3JlbGVhc2UpIHsKKwkJcHJfZXJyKCJJbnZhbGlkIGZlbmNlIG9iamVjdCBoYW5kbGUgMHglMDhs eC5cbiIsCisJCSAgICAgICAodW5zaWduZWQgbG9uZyloYW5kbGUpOworCQl0dG1fYmFzZV9vYmpl Y3RfdW5yZWYoJmJhc2UpOworCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwl9CisKKwlyZXR1 cm4gYmFzZTsKK30KKworCiBpbnQgdm13X2ZlbmNlX29ial93YWl0X2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2KQogewpAQCAtNjg2LDEzICs3MjEsOSBAQCBpbnQgdm13X2ZlbmNlX29ial93YWl0X2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWFyZy0+a2VybmVsX2Nvb2tp ZSA9IGppZmZpZXMgKyB3YWl0X3RpbWVvdXQ7CiAJfQogCi0JYmFzZSA9IHR0bV9iYXNlX29iamVj dF9sb29rdXAodGZpbGUsIGFyZy0+aGFuZGxlKTsKLQlpZiAodW5saWtlbHkoYmFzZSA9PSBOVUxM KSkgewotCQlwcmludGsoS0VSTl9FUlIgIldhaXQgaW52YWxpZCBmZW5jZSBvYmplY3QgaGFuZGxl ICIKLQkJICAgICAgICIweCUwOGx4LlxuIiwKLQkJICAgICAgICh1bnNpZ25lZCBsb25nKWFyZy0+ aGFuZGxlKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQorCWJhc2UgPSB2bXdfZmVuY2Vfb2JqX2xv b2t1cCh0ZmlsZSwgYXJnLT5oYW5kbGUpOworCWlmIChJU19FUlIoYmFzZSkpCisJCXJldHVybiBQ VFJfRVJSKGJhc2UpOwogCiAJZmVuY2UgPSAmKGNvbnRhaW5lcl9vZihiYXNlLCBzdHJ1Y3Qgdm13 X3VzZXJfZmVuY2UsIGJhc2UpLT5mZW5jZSk7CiAKQEAgLTczMSwxMyArNzYyLDkgQEAgaW50IHZt d19mZW5jZV9vYmpfc2lnbmFsZWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAlzdHJ1Y3QgdHRtX29iamVjdF9maWxlICp0ZmlsZSA9IHZtd19mcHJpdihmaWxlX3By aXYpLT50ZmlsZTsKIAlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gdm13X3ByaXYoZGV2 KTsKIAotCWJhc2UgPSB0dG1fYmFzZV9vYmplY3RfbG9va3VwKHRmaWxlLCBhcmctPmhhbmRsZSk7 Ci0JaWYgKHVubGlrZWx5KGJhc2UgPT0gTlVMTCkpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJGZW5j ZSBzaWduYWxlZCBpbnZhbGlkIGZlbmNlIG9iamVjdCBoYW5kbGUgIgotCQkgICAgICAgIjB4JTA4 bHguXG4iLAotCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpYXJnLT5oYW5kbGUpOwotCQlyZXR1cm4g LUVJTlZBTDsKLQl9CisJYmFzZSA9IHZtd19mZW5jZV9vYmpfbG9va3VwKHRmaWxlLCBhcmctPmhh bmRsZSk7CisJaWYgKElTX0VSUihiYXNlKSkKKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7CiAKIAlm ZW5jZSA9ICYoY29udGFpbmVyX29mKGJhc2UsIHN0cnVjdCB2bXdfdXNlcl9mZW5jZSwgYmFzZSkt PmZlbmNlKTsKIAlmbWFuID0gZmVuY2UtPmZtYW47CkBAIC05ODcsNiArMTAxNCw3IEBAIGludCB2 bXdfZmVuY2VfZXZlbnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAkJKHN0cnVjdCBkcm1fdm13X2ZlbmNlX2V2ZW50X2FyZyAqKSBkYXRhOwogCXN0cnVjdCB2bXdf ZmVuY2Vfb2JqICpmZW5jZSA9IE5VTEw7CiAJc3RydWN0IHZtd19mcHJpdiAqdm13X2ZwID0gdm13 X2Zwcml2KGZpbGVfcHJpdik7CisJc3RydWN0IHR0bV9vYmplY3RfZmlsZSAqdGZpbGUgPSB2bXdf ZnAtPnRmaWxlOwogCXN0cnVjdCBkcm1fdm13X2ZlbmNlX3JlcCBfX3VzZXIgKnVzZXJfZmVuY2Vf cmVwID0KIAkJKHN0cnVjdCBkcm1fdm13X2ZlbmNlX3JlcCBfX3VzZXIgKikodW5zaWduZWQgbG9u ZykKIAkJYXJnLT5mZW5jZV9yZXA7CkBAIC0xMDAyLDE0ICsxMDMwLDExIEBAIGludCB2bXdfZmVu Y2VfZXZlbnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkgKi8K IAlpZiAoYXJnLT5oYW5kbGUpIHsKIAkJc3RydWN0IHR0bV9iYXNlX29iamVjdCAqYmFzZSA9Ci0J CQl0dG1fYmFzZV9vYmplY3RfbG9va3VwKHZtd19mcC0+dGZpbGUsIGFyZy0+aGFuZGxlKTsKKwkJ CXZtd19mZW5jZV9vYmpfbG9va3VwKHRmaWxlLCBhcmctPmhhbmRsZSk7CisKKwkJaWYgKElTX0VS UihiYXNlKSkKKwkJCXJldHVybiBQVFJfRVJSKGJhc2UpOwogCi0JCWlmICh1bmxpa2VseShiYXNl ID09IE5VTEwpKSB7Ci0JCQlEUk1fRVJST1IoIkZlbmNlIGV2ZW50IGludmFsaWQgZmVuY2Ugb2Jq ZWN0IGhhbmRsZSAiCi0JCQkJICAiMHglMDhseC5cbiIsCi0JCQkJICAodW5zaWduZWQgbG9uZylh cmctPmhhbmRsZSk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQogCQlmZW5jZSA9ICYoY29udGFp bmVyX29mKGJhc2UsIHN0cnVjdCB2bXdfdXNlcl9mZW5jZSwKIAkJCQkgICAgICAgYmFzZSktPmZl bmNlKTsKIAkJKHZvaWQpIHZtd19mZW5jZV9vYmpfcmVmZXJlbmNlKGZlbmNlKTsKQEAgLTEwMTcs NyArMTA0Miw3IEBAIGludCB2bXdfZmVuY2VfZXZlbnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAkJaWYgKHVzZXJfZmVuY2VfcmVwICE9IE5VTEwpIHsKIAkJCWJv b2wgZXhpc3RlZDsKIAotCQkJcmV0ID0gdHRtX3JlZl9vYmplY3RfYWRkKHZtd19mcC0+dGZpbGUs IGJhc2UsCisJCQlyZXQgPSB0dG1fcmVmX29iamVjdF9hZGQodGZpbGUsIGJhc2UsCiAJCQkJCQkg VFRNX1JFRl9VU0FHRSwgJmV4aXN0ZWQpOwogCQkJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgewog CQkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlZmVyZW5jZSBhIGZlbmNlICIKQEAgLTEwOTksOCAr MTEyNCw3IEBAIGludCB2bXdfZmVuY2VfZXZlbnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ss IGlycV9mbGFncyk7CiBvdXRfbm9fZXZlbnRfc3BhY2U6CiAJaWYgKHVzZXJfZmVuY2VfcmVwICE9 IE5VTEwpCi0JCXR0bV9yZWZfb2JqZWN0X2Jhc2VfdW5yZWYodm13X2Zwcml2KGZpbGVfcHJpdikt PnRmaWxlLAotCQkJCQkgIGhhbmRsZSwgVFRNX1JFRl9VU0FHRSk7CisJCXR0bV9yZWZfb2JqZWN0 X2Jhc2VfdW5yZWYodGZpbGUsIGhhbmRsZSwgVFRNX1JFRl9VU0FHRSk7CiBvdXRfbm9fcmVmX29i ajoKIAl2bXdfZmVuY2Vfb2JqX3VucmVmZXJlbmNlKCZmZW5jZSk7CiAJcmV0dXJuIHJldDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2lvY3RsLmMgYi9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9pb2N0bC5jCmluZGV4IDY2OTE3YzZjMzgxMy4uNTJlM2Rk YWFkYmIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9pb2N0bC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2lvY3RsLmMKQEAgLTY5LDggKzY5 LDYgQEAgaW50IHZtd19nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCQlicmVhazsKIAl9CiAJZGVmYXVsdDoKLQkJRFJNX0VSUk9SKCJJbGxlZ2FsIHZt d2dmeCBnZXQgcGFyYW0gcmVxdWVzdDogJWRcbiIsCi0JCQkgIHBhcmFtLT5wYXJhbSk7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0KIApAQCAtOTAsNyArODgsNyBAQCBpbnQgdm13X2dldF9jYXBfM2Rf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAl2b2lkICpib3VuY2U7 CiAJaW50IHJldDsKIAotCWlmICh1bmxpa2VseShhcmctPnBhZDY0ICE9IDApKSB7CisJaWYgKHVu bGlrZWx5KGFyZy0+cGFkNjQgIT0gMCB8fCBhcmctPm1heF9zaXplID09IDApKSB7CiAJCURSTV9F UlJPUigiSWxsZWdhbCBHRVRfM0RfQ0FQIGFyZ3VtZW50LlxuIik7CiAJCXJldHVybiAtRUlOVkFM OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYXN1c19hdGswMTEwLmMgYi9kcml2ZXJz L2h3bW9uL2FzdXNfYXRrMDExMC5jCmluZGV4IDgzZDJmYmQ2NzBkNi4uYjJhMGJhZGM2NmIzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FzdXNfYXRrMDExMC5jCisrKyBiL2RyaXZlcnMvaHdt b24vYXN1c19hdGswMTEwLmMKQEAgLTY0NSw2ICs2NDUsOSBAQCBzdGF0aWMgaW50IGF0a19yZWFk X3ZhbHVlKHN0cnVjdCBhdGtfc2Vuc29yX2RhdGEgKnNlbnNvciwgdTY0ICp2YWx1ZSkKIAkJZWxz ZQogCQkJZXJyID0gYXRrX3JlYWRfdmFsdWVfbmV3KHNlbnNvciwgdmFsdWUpOwogCisJCWlmIChl cnIpCisJCQlyZXR1cm4gZXJyOworCiAJCXNlbnNvci0+aXNfdmFsaWQgPSB0cnVlOwogCQlzZW5z b3ItPmxhc3RfdXBkYXRlZCA9IGppZmZpZXM7CiAJCXNlbnNvci0+Y2FjaGVkX3ZhbHVlID0gKnZh bHVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5j IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jCmluZGV4IDQ0MTgwYzY0 M2FhNC4uZjE2NTMxNWM5YzdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWli L3FpYl9pYmE3MzIyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMy Mi5jCkBAIC02NjE0LDcgKzY2MTQsNyBAQCBzdGF0aWMgdm9pZCBxaWJfNzMyMl90eGNoa19jaGFu Z2Uoc3RydWN0IHFpYl9kZXZkYXRhICpkZCwgdTMyIHN0YXJ0LAogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAKIAl3aGlsZSAod2FpdCkgewotCQl1bnNpZ25lZCBsb25nIHNoYWRvdzsKKwkJdW5zaWdu ZWQgbG9uZyBzaGFkb3cgPSAwOwogCQlpbnQgY3N0YXJ0LCBwcmV2aSA9IC0xOwogCiAJCS8qCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtdXNiLmMgYi9k cml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtdXNiLmMKaW5kZXggNmM5NjYzMWFl NWQ5Li5kYWIzYTBhN2JmN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZv cmNlL2lmb3JjZS11c2IuYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9y Y2UtdXNiLmMKQEAgLTEzOCw2ICsxMzgsOSBAQCBzdGF0aWMgaW50IGlmb3JjZV91c2JfcHJvYmUo c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAKIAlpbnRlcmZhY2UgPSBpbnRmLT5jdXJfYWx0 c2V0dGluZzsKIAorCWlmIChpbnRlcmZhY2UtPmRlc2MuYk51bUVuZHBvaW50cyA8IDIpCisJCXJl dHVybiAtRU5PREVWOworCiAJZXBpcnEgPSAmaW50ZXJmYWNlLT5lbmRwb2ludFswXS5kZXNjOwog CWVwb3V0ID0gJmludGVyZmFjZS0+ZW5kcG9pbnRbMV0uZGVzYzsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9pbnB1dC9taXNjL2NtMTA5LmMgYi9kcml2ZXJzL2lucHV0L21pc2MvY20xMDkuYwppbmRl eCBhYjg2MDUxMWYwMTYuLmQ1YjM4MmNhMzRlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9t aXNjL2NtMTA5LmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL2NtMTA5LmMKQEAgLTY2Myw2ICs2 NjMsMTAgQEAgc3RhdGljIGludCBjbTEwOV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2Ug KmludGYsCiAJaW50IGVycm9yID0gLUVOT01FTTsKIAogCWludGVyZmFjZSA9IGludGYtPmN1cl9h bHRzZXR0aW5nOworCisJaWYgKGludGVyZmFjZS0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJ cmV0dXJuIC1FTk9ERVY7CisKIAllbmRwb2ludCA9ICZpbnRlcmZhY2UtPmVuZHBvaW50WzBdLmRl c2M7CiAKIAlpZiAoIXVzYl9lbmRwb2ludF9pc19pbnRfaW4oZW5kcG9pbnQpKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pbnB1dC9taXNjL3llYWxpbmsuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy95ZWFs aW5rLmMKaW5kZXggNDEyMDFjNmI1ZTY4Li4yYjhlNDMwMjUyZDUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaW5wdXQvbWlzYy95ZWFsaW5rLmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3llYWxpbmsu YwpAQCAtODY3LDYgKzg2NywxMCBAQCBzdGF0aWMgaW50IHVzYl9wcm9iZShzdHJ1Y3QgdXNiX2lu dGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQogCWludCByZXQs IHBpcGUsIGk7CiAKIAlpbnRlcmZhY2UgPSBpbnRmLT5jdXJfYWx0c2V0dGluZzsKKworCWlmIChp bnRlcmZhY2UtPmRlc2MuYk51bUVuZHBvaW50cyA8IDEpCisJCXJldHVybiAtRU5PREVWOworCiAJ ZW5kcG9pbnQgPSAmaW50ZXJmYWNlLT5lbmRwb2ludFswXS5kZXNjOwogCWlmICghdXNiX2VuZHBv aW50X2lzX2ludF9pbihlbmRwb2ludCkpCiAJCXJldHVybiAtRU5PREVWOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi14ODZpYTY0aW8uaCBiL2RyaXZlcnMvaW5wdXQvc2Vy aW8vaTgwNDIteDg2aWE2NGlvLmgKaW5kZXggOTBlMTgyNDQxYzgxLi44OTQxZDhkZGQzNTcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2NGlvLmgKKysrIGIvZHJp dmVycy9pbnB1dC9zZXJpby9pODA0Mi14ODZpYTY0aW8uaApAQCAtMTIwLDYgKzEyMCwxMyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgX19pbml0Y29uc3QgaTgwNDJfZG1pX25v bG9vcF90YWJsZVtdID0gewogCQl9LAogCX0sCiAJeworCQkvKiBEZWxsIEVtYmVkZGVkIEJveCBQ QyAzMDAwICovCisJCS5tYXRjaGVzID0geworCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAi RGVsbCBJbmMuIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIkVtYmVkZGVkIEJv eCBQQyAzMDAwIiksCisJCX0sCisJfSwKKwl7CiAJCS8qIE9RTyBNb2RlbCAwMSAqLwogCQkubWF0 Y2hlcyA9IHsKIAkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIk9RTyIpLApAQCAtNTczLDYg KzU4MCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgX19pbml0Y29uc3Qg aTgwNDJfZG1pX3Jlc2V0X3RhYmxlW10gPSB7CiAJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFN RSwgIlZvc3RybyAxNzIwIiksCiAJCX0sCiAJfSwKKwl7CisJCS8qIENsZXZvIFA2NTBSUywgNjUw UlA2LCBTYWdlciBOUDgxNTItUywgYW5kIG90aGVycyAqLworCQkubWF0Y2hlcyA9IHsKKwkJCURN SV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIk5vdGVib29rIiksCisJCQlETUlfTUFUQ0goRE1JX1BS T0RVQ1RfTkFNRSwgIlA2NXhSUCIpLAorCQl9LAorCX0sCiAJeyB9CiB9OwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2lucHV0L3RhYmxldC9oYW53YW5nLmMgYi9kcml2ZXJzL2lucHV0L3RhYmxldC9o YW53YW5nLmMKaW5kZXggNjUwNGI2MjdiMjM0Li5mOGYyYmY5ZWNmYWIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaW5wdXQvdGFibGV0L2hhbndhbmcuYworKysgYi9kcml2ZXJzL2lucHV0L3RhYmxldC9o YW53YW5nLmMKQEAgLTMxNCw2ICszMTQsOSBAQCBzdGF0aWMgaW50IGhhbndhbmdfcHJvYmUoc3Ry dWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkCiAJaW50 IGVycm9yOwogCWludCBpOwogCisJaWYgKGludGYtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJOdW1F bmRwb2ludHMgPCAxKQorCQlyZXR1cm4gLUVOT0RFVjsKKwogCWhhbndhbmcgPSBremFsbG9jKHNp emVvZihzdHJ1Y3QgaGFud2FuZyksIEdGUF9LRVJORUwpOwogCWlucHV0X2RldiA9IGlucHV0X2Fs bG9jYXRlX2RldmljZSgpOwogCWlmICghaGFud2FuZyB8fCAhaW5wdXRfZGV2KSB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2lucHV0L3RhYmxldC9rYnRhYi5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQv a2J0YWIuYwppbmRleCAyOTBmNGU1N2I1ODkuLjNiNjdmYjg2NTM0NiAxMDA2NDQKLS0tIGEvZHJp dmVycy9pbnB1dC90YWJsZXQva2J0YWIuYworKysgYi9kcml2ZXJzL2lucHV0L3RhYmxldC9rYnRh Yi5jCkBAIC0xMTcsNiArMTE3LDkgQEAgc3RhdGljIGludCBrYnRhYl9wcm9iZShzdHJ1Y3QgdXNi X2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmkKIAlzdHJ1Y3Qg aW5wdXRfZGV2ICppbnB1dF9kZXY7CiAJaW50IGVycm9yID0gLUVOT01FTTsKIAorCWlmIChpbnRm LT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9E RVY7CisKIAlrYnRhYiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBrYnRhYiksIEdGUF9LRVJORUwp OwogCWlucHV0X2RldiA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOwogCWlmICgha2J0YWIgfHwg IWlucHV0X2RldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9naWdhc2V0L2Jhcy1naWdhc2V0 LmMgYi9kcml2ZXJzL2lzZG4vZ2lnYXNldC9iYXMtZ2lnYXNldC5jCmluZGV4IDQ5MmFhNTIwYjlk Zi4uZGMwYjBiODIyMDQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vZ2lnYXNldC9iYXMtZ2ln YXNldC5jCisrKyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L2Jhcy1naWdhc2V0LmMKQEAgLTIzMTQs NiArMjMxNCw5IEBAIHN0YXRpYyBpbnQgZ2lnYXNldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFj ZSAqaW50ZXJmYWNlLAogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKKwlpZiAoaG9zdGlmLT5kZXNj LmJOdW1FbmRwb2ludHMgPCAxKQorCQlyZXR1cm4gLUVOT0RFVjsKKwogCWRldl9pbmZvKCZ1ZGV2 LT5kZXYsCiAJCSAiJXM6IERldmljZSBtYXRjaGVkIChWZW5kb3I6IDB4JXgsIFByb2R1Y3Q6IDB4 JXgpXG4iLAogCQkgX19mdW5jX18sIGxlMTZfdG9fY3B1KHVkZXYtPmRlc2NyaXB0b3IuaWRWZW5k b3IpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9kdmItdXNiLWZpcm13 YXJlLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2R2Yi11c2ItZmlybXdhcmUuYwppbmRl eCA3MzNhN2ZmN2IyMDcuLmNhYWQzYjVjMDFhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9k dmIvZHZiLXVzYi9kdmItdXNiLWZpcm13YXJlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZi LXVzYi9kdmItdXNiLWZpcm13YXJlLmMKQEAgLTM1LDQyICszNSw1MSBAQCBzdGF0aWMgaW50IHVz Yl9jeXByZXNzX3dyaXRlbWVtKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LHUxNiBhZGRyLHU4ICpk YXRhLCB1OCBsZQogCiBpbnQgdXNiX2N5cHJlc3NfbG9hZF9maXJtd2FyZShzdHJ1Y3QgdXNiX2Rl dmljZSAqdWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgaW50IHR5cGUpCiB7Ci0Jc3Ry dWN0IGhleGxpbmUgaHg7Ci0JdTggcmVzZXQ7Ci0JaW50IHJldCxwb3M9MDsKKwlzdHJ1Y3QgaGV4 bGluZSAqaHg7CisJdTggKmJ1ZjsKKwlpbnQgcmV0LCBwb3MgPSAwOworCXUxNiBjcHVfY3NfcmVn aXN0ZXIgPSBjeXByZXNzW3R5cGVdLmNwdV9jc19yZWdpc3RlcjsKKworCWJ1ZiA9IGttYWxsb2Mo c2l6ZW9mKCpoeCksIEdGUF9LRVJORUwpOworCWlmICghYnVmKQorCQlyZXR1cm4gLUVOT01FTTsK KwloeCA9IChzdHJ1Y3QgaGV4bGluZSAqKWJ1ZjsKIAogCS8qIHN0b3AgdGhlIENQVSAqLwotCXJl c2V0ID0gMTsKLQlpZiAoKHJldCA9IHVzYl9jeXByZXNzX3dyaXRlbWVtKHVkZXYsY3lwcmVzc1t0 eXBlXS5jcHVfY3NfcmVnaXN0ZXIsJnJlc2V0LDEpKSAhPSAxKQorCWJ1ZlswXSA9IDE7CisJaWYg KHVzYl9jeXByZXNzX3dyaXRlbWVtKHVkZXYsIGNwdV9jc19yZWdpc3RlciwgYnVmLCAxKSAhPSAx KQogCQllcnIoImNvdWxkIG5vdCBzdG9wIHRoZSBVU0IgY29udHJvbGxlciBDUFUuIik7CiAKLQl3 aGlsZSAoKHJldCA9IGR2Yl91c2JfZ2V0X2hleGxpbmUoZncsJmh4LCZwb3MpKSA+IDApIHsKLQkJ ZGViX2Z3KCJ3cml0aW5nIHRvIGFkZHJlc3MgMHglMDR4IChidWZmZXI6IDB4JTAyeCAlMDJ4KVxu IixoeC5hZGRyLGh4LmxlbixoeC5jaGspOwotCQlyZXQgPSB1c2JfY3lwcmVzc193cml0ZW1lbSh1 ZGV2LGh4LmFkZHIsaHguZGF0YSxoeC5sZW4pOworCXdoaWxlICgocmV0ID0gZHZiX3VzYl9nZXRf aGV4bGluZShmdywgaHgsICZwb3MpKSA+IDApIHsKKwkJZGViX2Z3KCJ3cml0aW5nIHRvIGFkZHJl c3MgMHglMDR4IChidWZmZXI6IDB4JTAyeCAlMDJ4KVxuIiwgaHgtPmFkZHIsIGh4LT5sZW4sIGh4 LT5jaGspOworCQlyZXQgPSB1c2JfY3lwcmVzc193cml0ZW1lbSh1ZGV2LCBoeC0+YWRkciwgaHgt PmRhdGEsIGh4LT5sZW4pOwogCi0JCWlmIChyZXQgIT0gaHgubGVuKSB7CisJCWlmIChyZXQgIT0g aHgtPmxlbikgewogCQkJZXJyKCJlcnJvciB3aGlsZSB0cmFuc2ZlcnJpbmcgZmlybXdhcmUgIgog CQkJCSIodHJhbnNmZXJyZWQgc2l6ZTogJWQsIGJsb2NrIHNpemU6ICVkKSIsCi0JCQkJcmV0LGh4 Lmxlbik7CisJCQkJcmV0LCBoeC0+bGVuKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlicmVhazsK IAkJfQogCX0KIAlpZiAocmV0IDwgMCkgewogCQllcnIoImZpcm13YXJlIGRvd25sb2FkIGZhaWxl ZCBhdCAlZCB3aXRoICVkIixwb3MscmV0KTsKKwkJa2ZyZWUoYnVmKTsKIAkJcmV0dXJuIHJldDsK IAl9CiAKIAlpZiAocmV0ID09IDApIHsKIAkJLyogcmVzdGFydCB0aGUgQ1BVICovCi0JCXJlc2V0 ID0gMDsKLQkJaWYgKHJldCB8fCB1c2JfY3lwcmVzc193cml0ZW1lbSh1ZGV2LGN5cHJlc3NbdHlw ZV0uY3B1X2NzX3JlZ2lzdGVyLCZyZXNldCwxKSAhPSAxKSB7CisJCWJ1ZlswXSA9IDA7CisJCWlm ICh1c2JfY3lwcmVzc193cml0ZW1lbSh1ZGV2LCBjcHVfY3NfcmVnaXN0ZXIsIGJ1ZiwgMSkgIT0g MSkgewogCQkJZXJyKCJjb3VsZCBub3QgcmVzdGFydCB0aGUgVVNCIGNvbnRyb2xsZXIgQ1BVLiIp OwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJfQogCX0gZWxzZQogCQlyZXQgPSAtRUlPOwogCisJa2Zy ZWUoYnVmKTsKKwogCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MKHVzYl9jeXByZXNzX2xv YWRfZmlybXdhcmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jIGIvZHJp dmVycy9tbWMvaG9zdC9zZGhjaS5jCmluZGV4IDlmNjhiODJlZmZkNy4uZmQ1MjRmNTY5OWZkIDEw MDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMKKysrIGIvZHJpdmVycy9tbWMvaG9z dC9zZGhjaS5jCkBAIC0xMTUwLDcgKzExNTAsOSBAQCBzdGF0aWMgdm9pZCBzZGhjaV9zZXRfY2xv Y2soc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHVuc2lnbmVkIGludCBjbG9jaykKIAkJCXJldHVy bjsKIAkJfQogCQl0aW1lb3V0LS07Ci0JCW1kZWxheSgxKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZo b3N0LT5sb2NrKTsKKwkJdXNsZWVwX3JhbmdlKDkwMCwgMTEwMCk7CisJCXNwaW5fbG9ja19pcnEo Jmhvc3QtPmxvY2spOwogCX0KIAogCWNsayB8PSBTREhDSV9DTE9DS19DQVJEX0VOOwpAQCAtMTU0 NCw5ICsxNTQ2LDE1IEBAIHN0YXRpYyB2b2lkIHNkaGNpX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3Qg bW1jX2hvc3QgKm1tYywgaW50IGVuYWJsZSkKIAlzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCA9IG1t Y19wcml2KG1tYyk7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAorCWlmIChlbmFibGUpCisJCXBt X3J1bnRpbWVfZ2V0X25vcmVzdW1lKGhvc3QtPm1tYy0+cGFyZW50KTsKKwogCXNwaW5fbG9ja19p cnFzYXZlKCZob3N0LT5sb2NrLCBmbGFncyk7CiAJc2RoY2lfZW5hYmxlX3NkaW9faXJxX25vbG9j ayhob3N0LCBlbmFibGUpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3QtPmxvY2ssIGZs YWdzKTsKKworCWlmICghZW5hYmxlKQorCQlwbV9ydW50aW1lX3B1dF9ub2lkbGUoaG9zdC0+bW1j LT5wYXJlbnQpOwogfQogCiBzdGF0aWMgaW50IHNkaGNpX2RvX3N0YXJ0X3NpZ25hbF92b2x0YWdl X3N3aXRjaChzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1j L2hvc3QvdXNoYy5jIGIvZHJpdmVycy9tbWMvaG9zdC91c2hjLmMKaW5kZXggZjA4Zjk0NGFjNTNj Li44MmY1NzI2Mzk1ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdXNoYy5jCisrKyBi L2RyaXZlcnMvbW1jL2hvc3QvdXNoYy5jCkBAIC00MjYsNiArNDI2LDkgQEAgc3RhdGljIGludCB1 c2hjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2Rl dmljZV9pZCAqaWQKIAlzdHJ1Y3QgdXNoY19kYXRhICp1c2hjOwogCWludCByZXQ7CiAKKwlpZiAo aW50Zi0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyA8IDEpCisJCXJldHVybiAt RU5PREVWOworCiAJbW1jID0gbW1jX2FsbG9jX2hvc3Qoc2l6ZW9mKHN0cnVjdCB1c2hjX2RhdGEp LCAmaW50Zi0+ZGV2KTsKIAlpZiAobW1jID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL3VwZC5jIGIvZHJpdmVycy9tdGQvdWJpL3VwZC5jCmlu ZGV4IGQxODAyYjA1NGJmZS4uMTZkMGIyMDZlODdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91 YmkvdXBkLmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL3VwZC5jCkBAIC0xNTAsMTEgKzE1MCwxMSBA QCBpbnQgdWJpX3N0YXJ0X3VwZGF0ZShzdHJ1Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJp X3ZvbHVtZSAqdm9sLAogCQkJcmV0dXJuIGVycjsKIAl9CiAKLQlpZiAoYnl0ZXMgPT0gMCkgewot CQllcnIgPSB1Ymlfd2xfZmx1c2godWJpKTsKLQkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CisJ ZXJyID0gdWJpX3dsX2ZsdXNoKHViaSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKIAorCWlm IChieXRlcyA9PSAwKSB7CiAJCWVyciA9IGNsZWFyX3VwZGF0ZV9tYXJrZXIodWJpLCB2b2wsIDAp OwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3Rvc2hpYmEvdGMzNTgxNS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdG9zaGliYS90 YzM1ODE1LmMKaW5kZXggNzFiNzg1Y2Q3NTYzLi45N2I5ZTBjOTQ0YWYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L3Rvc2hpYmEvdGMzNTgxNS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3Rvc2hpYmEvdGMzNTgxNS5jCkBAIC0xMDUzLDggKzEwNTMsOCBAQCB0YzM1ODE1X2Zy ZWVfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCQlCVUdfT04obHAtPnR4X3NrYnNb aV0uc2tiICE9IHNrYik7CiAjZW5kaWYKIAkJCWlmIChza2IpIHsKLQkJCQlkZXZfa2ZyZWVfc2ti KHNrYik7CiAJCQkJcGNpX3VubWFwX3NpbmdsZShscC0+cGNpX2RldiwgbHAtPnR4X3NrYnNbaV0u c2tiX2RtYSwgc2tiLT5sZW4sIFBDSV9ETUFfVE9ERVZJQ0UpOworCQkJCWRldl9rZnJlZV9za2Io c2tiKTsKIAkJCQlscC0+dHhfc2tic1tpXS5za2IgPSBOVUxMOwogCQkJCWxwLT50eF9za2JzW2ld LnNrYl9kbWEgPSAwOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeS5jIGIv ZHJpdmVycy9uZXQvcGh5L3BoeS5jCmluZGV4IDNjYmRhMDg1MWY4My4uZjNlYjQyNzg5YzRjIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvcGh5L3Bo eS5jCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBwaHlfc3RvcF9tYWNoaW5lKHN0cnVjdCBwaHlf ZGV2aWNlICpwaHlkZXYpCiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZwaHlkZXYtPnN0YXRl X3F1ZXVlKTsKIAogCW11dGV4X2xvY2soJnBoeWRldi0+bG9jayk7Ci0JaWYgKHBoeWRldi0+c3Rh dGUgPiBQSFlfVVApCisJaWYgKHBoeWRldi0+c3RhdGUgPiBQSFlfVVAgJiYgcGh5ZGV2LT5zdGF0 ZSAhPSBQSFlfSEFMVEVEKQogCQlwaHlkZXYtPnN0YXRlID0gUEhZX1VQOwogCW11dGV4X3VubG9j aygmcGh5ZGV2LT5sb2NrKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBf ZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYwppbmRleCA4OTY5ZjEyNGMxOGMu LjFjMjkwZGNiNTVhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMK KysrIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI3NywxMiArMjc3LDkgQEAg c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRl diwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIHsKIAlpbnQgbGVuID0gc2tiLT5sZW47CiAKLQlpZiAo c2tiX2hlYWRyb29tKHNrYikgPCAyKSB7Ci0JCXN0cnVjdCBza19idWZmICpza2IyID0gc2tiX2Nv cHlfZXhwYW5kKHNrYiwgMiwgMCwgZmxhZ3MpOworCWlmIChza2JfY293X2hlYWQoc2tiLCAyKSkg ewogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwotCQlza2IgPSBza2IyOwotCQlpZiAoIXNrYikK LQkJCXJldHVybiBOVUxMOworCQlyZXR1cm4gTlVMTDsKIAl9CiAJc2tiX3B1c2goc2tiLCAyKTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmMgYi9kcml2ZXJzL25ldC91 c2Ivc21zYzc1eHguYwppbmRleCBjNDFiNDJiYTgwYzIuLmFmZDA2ZTg0NTVjNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL3Ntc2M3 NXh4LmMKQEAgLTExNzAsMTMgKzExNzAsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNtc2M3 NXh4X3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwKIHsKIAl1MzIgdHhfY21kX2EsIHR4X2Nt ZF9iOwogCi0JaWYgKHNrYl9oZWFkcm9vbShza2IpIDwgU01TQzc1WFhfVFhfT1ZFUkhFQUQpIHsK LQkJc3RydWN0IHNrX2J1ZmYgKnNrYjIgPQotCQkJc2tiX2NvcHlfZXhwYW5kKHNrYiwgU01TQzc1 WFhfVFhfT1ZFUkhFQUQsIDAsIGZsYWdzKTsKKwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgU01TQzc1 WFhfVFhfT1ZFUkhFQUQpKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JCXNrYiA9IHNr YjI7Ci0JCWlmICghc2tiKQotCQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBOVUxMOwogCX0KIAog CXR4X2NtZF9hID0gKHUzMikoc2tiLT5sZW4gJiBUWF9DTURfQV9MRU4pIHwgVFhfQ01EX0FfRkNT OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi5jIGIvZHJpdmVycy9u ZXQvd2ltYXgvaTI0MDBtL3VzYi5jCmluZGV4IDZiYjdmM2NjNjQ4Ny4uMzA3NDgzMzc2YmVjIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLmMKKysrIGIvZHJpdmVycy9u ZXQvd2ltYXgvaTI0MDBtL3VzYi5jCkBAIC00NDksNiArNDQ5LDkgQEAgaW50IGkyNDAwbXVfcHJv YmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmlmYWNlLAogCXN0cnVjdCBpMjQwMG11ICppMjQwMG11 OwogCXN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpZmFj ZSk7CiAKKwlpZiAoaWZhY2UtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJOdW1FbmRwb2ludHMgPCA0 KQorCQlyZXR1cm4gLUVOT0RFVjsKKwogCWlmICh1c2JfZGV2LT5zcGVlZCAhPSBVU0JfU1BFRURf SElHSCkKIAkJZGV2X2VycihkZXYsICJkZXZpY2Ugbm90IGNvbm5lY3RlZCBhcyBoaWdoIHNwZWVk XG4iKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvc3JjLmMgYi9kcml2ZXJz L3Njc2kvYWFjcmFpZC9zcmMuYwppbmRleCBlZTljNTYwYjgyMGYuLmU0MDc3ZTJjMWVkZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvc3JjLmMKKysrIGIvZHJpdmVycy9zY3NpL2Fh Y3JhaWQvc3JjLmMKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgaW50IGFhY19zcmNfY2hlY2tf aGVhbHRoKHN0cnVjdCBhYWNfZGV2ICpkZXYpCiAJcmV0dXJuIC0xOwogCiBlcnJfYmxpbms6Ci0J cmV0dXJuIChzdGF0dXMgPiAxNikgJiAweEZGOworCXJldHVybiAoc3RhdHVzID4+IDE2KSAmIDB4 RkY7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfYXRhLmMg Yi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19hdGEuYwppbmRleCA1ZTE3MGUzMTQzZTIuLjMzZTBj MTgyODY2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfYXRhLmMKKysrIGIv ZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfYXRhLmMKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMg dW5zaWduZWQgaW50IHNhc19hdGFfcWNfaXNzdWUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykK IAkJdGFzay0+bnVtX3NjYXR0ZXIgPSBxYy0+bl9lbGVtOwogCX0gZWxzZSB7CiAJCWZvcl9lYWNo X3NnKHFjLT5zZywgc2csIHFjLT5uX2VsZW0sIHNpKQotCQkJeGZlciArPSBzZy0+bGVuZ3RoOwor CQkJeGZlciArPSBzZ19kbWFfbGVuKHNnKTsKIAogCQl0YXNrLT50b3RhbF94ZmVyX2xlbiA9IHhm ZXI7CiAJCXRhc2stPm51bV9zY2F0dGVyID0gc2k7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kv bHBmYy9scGZjX2luaXQuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jCmluZGV4IDEy ZWUzOThhNGQ3Yy4uMTQyMWNhM2VhNDc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9s cGZjX2luaXQuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYwpAQCAtMTAwMDIs NiArMTAwMDIsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbHBmY19kcml2ZXIgPSB7CiAJ LmlkX3RhYmxlCT0gbHBmY19pZF90YWJsZSwKIAkucHJvYmUJCT0gbHBmY19wY2lfcHJvYmVfb25l LAogCS5yZW1vdmUJCT0gX19kZXZleGl0X3AobHBmY19wY2lfcmVtb3ZlX29uZSksCisJLnNodXRk b3duCT0gbHBmY19wY2lfcmVtb3ZlX29uZSwKIAkuc3VzcGVuZCAgICAgICAgPSBscGZjX3BjaV9z dXNwZW5kX29uZSwKIAkucmVzdW1lCQk9IGxwZmNfcGNpX3Jlc3VtZV9vbmUsCiAJLmVycl9oYW5k bGVyICAgID0gJmxwZmNfZXJyX2hhbmRsZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2Qu YyBiL2RyaXZlcnMvc2NzaS9zZC5jCmluZGV4IDYxNGYyY2QyNGI3Zi4uNmNiZTJlYjUzMjZkIDEw MDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAt MTY0OCw2ICsxNjQ4LDIyIEBAIHN0YXRpYyB2b2lkIHJlYWRfY2FwYWNpdHlfZXJyb3Ioc3RydWN0 IHNjc2lfZGlzayAqc2RrcCwgc3RydWN0IHNjc2lfZGV2aWNlICpzZHAsCiAKICNkZWZpbmUgUkVB RF9DQVBBQ0lUWV9SRVRSSUVTX09OX1JFU0VUCTEwCiAKKy8qCisgKiBFbnN1cmUgdGhhdCB3ZSBk b24ndCBvdmVyZmxvdyBzZWN0b3JfdCB3aGVuIENPTkZJR19MQkRBRiBpcyBub3Qgc2V0CisgKiBh bmQgdGhlIHJlcG9ydGVkIGxvZ2ljYWwgYmxvY2sgc2l6ZSBpcyBiaWdnZXIgdGhhbiA1MTIgYnl0 ZXMuIE5vdGUKKyAqIHRoYXQgbGFzdF9zZWN0b3IgaXMgYSB1NjQgYW5kIHRoZXJlZm9yZSBsb2dp Y2FsX3RvX3NlY3RvcnMoKSBpcyBub3QKKyAqIGFwcGxpY2FibGUuCisgKi8KK3N0YXRpYyBib29s IHNkX2FkZHJlc3NhYmxlX2NhcGFjaXR5KHU2NCBsYmEsIHVuc2lnbmVkIGludCBzZWN0b3Jfc2l6 ZSkKK3sKKwl1NjQgbGFzdF9zZWN0b3IgPSAobGJhICsgMVVMTCkgPDwgKGlsb2cyKHNlY3Rvcl9z aXplKSAtIDkpOworCisJaWYgKHNpemVvZihzZWN0b3JfdCkgPT0gNCAmJiBsYXN0X3NlY3RvciA+ IDB4ZmZmZmZmZmZVTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCiBz dGF0aWMgaW50IHJlYWRfY2FwYWNpdHlfMTYoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwgc3RydWN0 IHNjc2lfZGV2aWNlICpzZHAsCiAJCQkJCQl1bnNpZ25lZCBjaGFyICpidWZmZXIpCiB7CkBAIC0x NzEwLDcgKzE3MjYsNyBAQCBzdGF0aWMgaW50IHJlYWRfY2FwYWNpdHlfMTYoc3RydWN0IHNjc2lf ZGlzayAqc2RrcCwgc3RydWN0IHNjc2lfZGV2aWNlICpzZHAsCiAKIAlzZF9yZWFkX3Byb3RlY3Rp b25fdHlwZShzZGtwLCBidWZmZXIpOwogCi0JaWYgKChzaXplb2Yoc2RrcC0+Y2FwYWNpdHkpID09 IDQpICYmIChsYmEgPj0gMHhmZmZmZmZmZlVMTCkpIHsKKwlpZiAoIXNkX2FkZHJlc3NhYmxlX2Nh cGFjaXR5KGxiYSwgc2VjdG9yX3NpemUpKSB7CiAJCXNkX3ByaW50ayhLRVJOX0VSUiwgc2RrcCwg IlRvbyBiaWcgZm9yIHRoaXMga2VybmVsLiBVc2UgYSAiCiAJCQkia2VybmVsIGNvbXBpbGVkIHdp dGggc3VwcG9ydCBmb3IgbGFyZ2UgYmxvY2sgIgogCQkJImRldmljZXMuXG4iKTsKQEAgLTE3OTYs NyArMTgxMiw3IEBAIHN0YXRpYyBpbnQgcmVhZF9jYXBhY2l0eV8xMChzdHJ1Y3Qgc2NzaV9kaXNr ICpzZGtwLCBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcCwKIAkJcmV0dXJuIHNlY3Rvcl9zaXplOwog CX0KIAotCWlmICgoc2l6ZW9mKHNka3AtPmNhcGFjaXR5KSA9PSA0KSAmJiAobGJhID09IDB4ZmZm ZmZmZmYpKSB7CisJaWYgKCFzZF9hZGRyZXNzYWJsZV9jYXBhY2l0eShsYmEsIHNlY3Rvcl9zaXpl KSkgewogCQlzZF9wcmludGsoS0VSTl9FUlIsIHNka3AsICJUb28gYmlnIGZvciB0aGlzIGtlcm5l bC4gVXNlIGEgIgogCQkJImtlcm5lbCBjb21waWxlZCB3aXRoIHN1cHBvcnQgZm9yIGxhcmdlIGJs b2NrICIKIAkJCSJkZXZpY2VzLlxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3IuYyBi L2RyaXZlcnMvc2NzaS9zci5jCmluZGV4IDVmYzk3ZDJiYTJmZC4uMGUzNTkzNjE0MzkxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3Njc2kvc3IuYworKysgYi9kcml2ZXJzL3Njc2kvc3IuYwpAQCAtODE1 LDYgKzgxNSw3IEBAIHN0YXRpYyB2b2lkIGdldF9jYXBhYmlsaXRpZXMoc3RydWN0IHNjc2lfY2Qg KmNkKQogCXVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKIAlzdHJ1Y3Qgc2NzaV9tb2RlX2RhdGEgZGF0 YTsKIAlzdHJ1Y3Qgc2NzaV9zZW5zZV9oZHIgc3NoZHI7CisJdW5zaWduZWQgaW50IG1zX2xlbiA9 IDEyODsKIAlpbnQgcmMsIG47CiAKIAlzdGF0aWMgY29uc3QgY2hhciAqbG9hZG1lY2hbXSA9CkBA IC04NDEsMTAgKzg0MiwxMSBAQCBzdGF0aWMgdm9pZCBnZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBz Y3NpX2NkICpjZCkKIAlzY3NpX3Rlc3RfdW5pdF9yZWFkeShjZC0+ZGV2aWNlLCBTUl9USU1FT1VU LCBNQVhfUkVUUklFUywgJnNzaGRyKTsKIAogCS8qIGFzayBmb3IgbW9kZSBwYWdlIDB4MmEgKi8K LQlyYyA9IHNjc2lfbW9kZV9zZW5zZShjZC0+ZGV2aWNlLCAwLCAweDJhLCBidWZmZXIsIDEyOCwK KwlyYyA9IHNjc2lfbW9kZV9zZW5zZShjZC0+ZGV2aWNlLCAwLCAweDJhLCBidWZmZXIsIG1zX2xl biwKIAkJCSAgICAgU1JfVElNRU9VVCwgMywgJmRhdGEsIE5VTEwpOwogCi0JaWYgKCFzY3NpX3N0 YXR1c19pc19nb29kKHJjKSkgeworCWlmICghc2NzaV9zdGF0dXNfaXNfZ29vZChyYykgfHwgZGF0 YS5sZW5ndGggPiBtc19sZW4gfHwKKwkgICAgZGF0YS5oZWFkZXJfbGVuZ3RoICsgZGF0YS5ibG9j a19kZXNjcmlwdG9yX2xlbmd0aCA+IGRhdGEubGVuZ3RoKSB7CiAJCS8qIGZhaWxlZCwgZHJpdmUg ZG9lc24ndCBoYXZlIGNhcGFiaWxpdGllcyBtb2RlIHBhZ2UgKi8KIAkJY2QtPmNkaS5zcGVlZCA9 IDE7CiAJCWNkLT5jZGkubWFzayB8PSAoQ0RDX0NEX1IgfCBDRENfQ0RfUlcgfCBDRENfRFZEX1Ig fApkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvaXNjc2kvaXNjc2lfdGFyZ2V0X3BhcmFtZXRl cnMuYyBiL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF9wYXJhbWV0ZXJzLmMKaW5k ZXggZTVmNWJmZjYzZjE4Li40YmQzNDkwZjk0NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0 L2lzY3NpL2lzY3NpX3RhcmdldF9wYXJhbWV0ZXJzLmMKKysrIGIvZHJpdmVycy90YXJnZXQvaXNj c2kvaXNjc2lfdGFyZ2V0X3BhcmFtZXRlcnMuYwpAQCAtNzYxLDIyICs3NjEsNiBAQCBzdGF0aWMg dm9pZCBpc2NzaV9jaGVja19wcm9wb3Nlcl9mb3Jfb3B0aW9uYWxfcmVwbHkoc3RydWN0IGlzY3Np X3BhcmFtICpwYXJhbSkKIAkJaWYgKCFzdHJjbXAocGFyYW0tPm5hbWUsIE1BWFJFQ1ZEQVRBU0VH TUVOVExFTkdUSCkpCiAJCQlTRVRfUFNUQVRFX1JFUExZX09QVElPTkFMKHBhcmFtKTsKIAkJLyoK LQkJICogVGhlIEdsb2JhbFNBTiBpU0NTSSBJbml0aWF0b3IgZm9yIE1hY09TWCBkb2VzCi0JCSAq IG5vdCByZXNwb25kIHRvIE1heEJ1cnN0TGVuZ3RoLCBGaXJzdEJ1cnN0TGVuZ3RoLAotCQkgKiBE ZWZhdWx0VGltZTJXYWl0IG9yIERlZmF1bHRUaW1lMlJldGFpbiBwYXJhbWV0ZXIga2V5cy4KLQkJ ICogU28sIHdlIHNldCB0aGVtIHRvICdyZXBseSBvcHRpb25hbCcgaGVyZSwgYW5kIGFzc3VtZSB0 aGUKLQkJICogdGhlIGRlZmF1bHRzIGZyb20gaXNjc2lfcGFyYW1ldGVycy5oIGlmIHRoZSBpbml0 aWF0b3IKLQkJICogaXMgbm90IFJGQyBjb21wbGlhbnQgYW5kIHRoZSBrZXlzIGFyZSBub3QgbmVn b3RpYXRlZC4KLQkJICovCi0JCWlmICghc3RyY21wKHBhcmFtLT5uYW1lLCBNQVhCVVJTVExFTkdU SCkpCi0JCQlTRVRfUFNUQVRFX1JFUExZX09QVElPTkFMKHBhcmFtKTsKLQkJaWYgKCFzdHJjbXAo cGFyYW0tPm5hbWUsIEZJUlNUQlVSU1RMRU5HVEgpKQotCQkJU0VUX1BTVEFURV9SRVBMWV9PUFRJ T05BTChwYXJhbSk7Ci0JCWlmICghc3RyY21wKHBhcmFtLT5uYW1lLCBERUZBVUxUVElNRTJXQUlU KSkKLQkJCVNFVF9QU1RBVEVfUkVQTFlfT1BUSU9OQUwocGFyYW0pOwotCQlpZiAoIXN0cmNtcChw YXJhbS0+bmFtZSwgREVGQVVMVFRJTUUyUkVUQUlOKSkKLQkJCVNFVF9QU1RBVEVfUkVQTFlfT1BU SU9OQUwocGFyYW0pOwotCQkvKgogCQkgKiBSZXF1aXJlZCBmb3IgZ1BYRSBpU0NTSSBib290IGNs aWVudAogCQkgKi8KIAkJaWYgKCFzdHJjbXAocGFyYW0tPm5hbWUsIE1BWENPTk5FQ1RJT05TKSkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9teHMtYXVhcnQuYyBiL2RyaXZlcnMvdHR5 L3NlcmlhbC9teHMtYXVhcnQuYwppbmRleCBhYjdkMTFlYmNkNzguLjVhOWNkNDhlNTExZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL214cy1hdWFydC5jCisrKyBiL2RyaXZlcnMvdHR5 L3NlcmlhbC9teHMtYXVhcnQuYwpAQCAtNzYsNiArNzYsOCBAQAogI2RlZmluZSBBVUFSVF9DVFJM Ml9UWEUJCQkJKDEgPDwgOCkKICNkZWZpbmUgQVVBUlRfQ1RSTDJfVUFSVEVOCQkJKDEgPDwgMCkK IAorI2RlZmluZSBBVUFSVF9MSU5FQ1RSTF9CQVVEX0RJVl9NQVgJCTB4MDAzZmZmYzAKKyNkZWZp bmUgQVVBUlRfTElORUNUUkxfQkFVRF9ESVZfTUlOCQkweDAwMDAwMGVjCiAjZGVmaW5lIEFVQVJU X0xJTkVDVFJMX0JBVURfRElWSU5UX1NISUZUCTE2CiAjZGVmaW5lIEFVQVJUX0xJTkVDVFJMX0JB VURfRElWSU5UX01BU0sJCTB4ZmZmZjAwMDAKICNkZWZpbmUgQVVBUlRfTElORUNUUkxfQkFVRF9E SVZJTlQodikJCSgoKHYpICYgMHhmZmZmKSA8PCAxNikKQEAgLTI4NSw3ICsyODcsNyBAQCBzdGF0 aWMgdm9pZCBteHNfYXVhcnRfc2V0dGVybWlvcyhzdHJ1Y3QgdWFydF9wb3J0ICp1LAogCQkJCSBz dHJ1Y3Qga3Rlcm1pb3MgKm9sZCkKIHsKIAl1MzIgYm0sIGN0cmwsIGN0cmwyLCBkaXY7Ci0JdW5z aWduZWQgaW50IGNmbGFnLCBiYXVkOworCXVuc2lnbmVkIGludCBjZmxhZywgYmF1ZCwgYmF1ZF9t aW4sIGJhdWRfbWF4OwogCiAJY2ZsYWcgPSB0ZXJtaW9zLT5jX2NmbGFnOwogCkBAIC0zNjEsOCAr MzYzLDEwIEBAIHN0YXRpYyB2b2lkIG14c19hdWFydF9zZXR0ZXJtaW9zKHN0cnVjdCB1YXJ0X3Bv cnQgKnUsCiAJCWN0cmwyICY9IH5BVUFSVF9DVFJMMl9DVFNFTjsKIAogCS8qIHNldCBiYXVkIHJh dGUgKi8KLQliYXVkID0gdWFydF9nZXRfYmF1ZF9yYXRlKHUsIHRlcm1pb3MsIG9sZCwgMCwgdS0+ dWFydGNsayk7Ci0JZGl2ID0gdS0+dWFydGNsayAqIDMyIC8gYmF1ZDsKKwliYXVkX21pbiA9IERJ Vl9ST1VORF9VUCh1LT51YXJ0Y2xrICogMzIsIEFVQVJUX0xJTkVDVFJMX0JBVURfRElWX01BWCk7 CisJYmF1ZF9tYXggPSB1LT51YXJ0Y2xrICogMzIgLyBBVUFSVF9MSU5FQ1RSTF9CQVVEX0RJVl9N SU47CisJYmF1ZCA9IHVhcnRfZ2V0X2JhdWRfcmF0ZSh1LCB0ZXJtaW9zLCBvbGQsIGJhdWRfbWlu LCBiYXVkX21heCk7CisJZGl2ID0gRElWX1JPVU5EX0NMT1NFU1QodS0+dWFydGNsayAqIDMyLCBi YXVkKTsKIAljdHJsIHw9IEFVQVJUX0xJTkVDVFJMX0JBVURfRElWRlJBQyhkaXYgJiAweDNGKTsK IAljdHJsIHw9IEFVQVJUX0xJTkVDVFJMX0JBVURfRElWSU5UKGRpdiA+PiA2KTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0 bWMuYwppbmRleCAxMmNmNWU3Mzk1YTguLmU5ZWY5YWZkYmI2MCAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2IvY2xhc3MvdXNidG1jLmMKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKQEAg LTEwMDcsNyArMTAwNyw3IEBAIHN0YXRpYyBpbnQgdXNidG1jX3Byb2JlKHN0cnVjdCB1c2JfaW50 ZXJmYWNlICppbnRmLAogCiAJZGV2X2RiZygmaW50Zi0+ZGV2LCAiJXMgY2FsbGVkXG4iLCBfX2Z1 bmNfXyk7CiAKLQlkYXRhID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0 YSksIEdGUF9LRVJORUwpOworCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdXNidG1jX2Rl dmljZV9kYXRhKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFkYXRhKSB7CiAJCWRldl9lcnIoJmludGYt PmRldiwgIlVuYWJsZSB0byBhbGxvY2F0ZSBrZXJuZWwgbWVtb3J5XG4iKTsKIAkJcmV0dXJuIC1F Tk9NRU07CkBAIC0xMDUzLDYgKzEwNTMsMTIgQEAgc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3Ry dWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJCX0KIAl9CiAKKwlpZiAoIWRhdGEtPmJ1bGtfb3V0 IHx8ICFkYXRhLT5idWxrX2luKSB7CisJCWRldl9lcnIoJmludGYtPmRldiwgImJ1bGsgZW5kcG9p bnRzIG5vdCBmb3VuZFxuIik7CisJCXJldGNvZGUgPSAtRU5PREVWOworCQlnb3RvIGVycl9wdXQ7 CisJfQorCiAJcmV0Y29kZSA9IGdldF9jYXBhYmlsaXRpZXMoZGF0YSk7CiAJaWYgKHJldGNvZGUp CiAJCWRldl9lcnIoJmludGYtPmRldiwgImNhbid0IHJlYWQgY2FwYWJpbGl0aWVzXG4iKTsKQEAg LTEwNzYsNiArMTA4Miw3IEBAIHN0YXRpYyBpbnQgdXNidG1jX3Byb2JlKHN0cnVjdCB1c2JfaW50 ZXJmYWNlICppbnRmLAogZXJyb3JfcmVnaXN0ZXI6CiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZpbnRm LT5kZXYua29iaiwgJmNhcGFiaWxpdHlfYXR0cl9ncnApOwogCXN5c2ZzX3JlbW92ZV9ncm91cCgm aW50Zi0+ZGV2LmtvYmosICZkYXRhX2F0dHJfZ3JwKTsKK2Vycl9wdXQ6CiAJa3JlZl9wdXQoJmRh dGEtPmtyZWYsIHVzYnRtY19kZWxldGUpOwogCXJldHVybiByZXRjb2RlOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy91c2IvY29yZS9jb25maWcuYyBiL2RyaXZlcnMvdXNiL2NvcmUvY29uZmlnLmMK aW5kZXggNDNmMGMxM2IwZTgxLi45ODkyNTZlOGExMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L2NvcmUvY29uZmlnLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9jb25maWcuYwpAQCAtMjQ3LDYg KzI0NywxNiBAQCBzdGF0aWMgaW50IHVzYl9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgZGV2aWNlICpk ZGV2LCBpbnQgY2Znbm8sIGludCBpbnVtLAogCiAJCQkvKgogCQkJICogQWRqdXN0IGJJbnRlcnZh bCBmb3IgcXVpcmtlZCBkZXZpY2VzLgorCQkJICovCisJCQkvKgorCQkJICogVGhpcyBxdWlyayBm aXhlcyBiSW50ZXJ2YWxzIHJlcG9ydGVkIGluIG1zLgorCQkJICovCisJCQlpZiAodG9fdXNiX2Rl dmljZShkZGV2KS0+cXVpcmtzICYKKwkJCQlVU0JfUVVJUktfTElORUFSX0ZSQU1FX0lOVFJfQklO VEVSVkFMKSB7CisJCQkJbiA9IGNsYW1wKGZscyhkLT5iSW50ZXJ2YWwpICsgMywgaSwgaik7CisJ CQkJaSA9IGogPSBuOworCQkJfQorCQkJLyoKIAkJCSAqIFRoaXMgcXVpcmsgZml4ZXMgYkludGVy dmFscyByZXBvcnRlZCBpbgogCQkJICogbGluZWFyIG1pY3JvZnJhbWVzLgogCQkJICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3F1aXJrcy5jIGIvZHJpdmVycy91c2IvY29yZS9xdWly a3MuYwppbmRleCA4NmNkMDc4MjUwMGQuLjIxNzdlZDQ4MzQxMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2IvY29yZS9xdWlya3MuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL3F1aXJrcy5jCkBAIC0x NDcsNiArMTQ3LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCB1c2JfcXVp cmtfbGlzdFtdID0gewogCS8qIE0tU3lzdGVtcyBGbGFzaCBEaXNrIFBpb25lZXJzICovCiAJeyBV U0JfREVWSUNFKDB4MDhlYywgMHgxMDAwKSwgLmRyaXZlcl9pbmZvID0gVVNCX1FVSVJLX1JFU0VU X1JFU1VNRSB9LAogCisJLyogQmF1bSBWYXJpbyBVbHRyYSAqLworCXsgVVNCX0RFVklDRSgweDA5 MDQsIDB4NjEwMSksIC5kcml2ZXJfaW5mbyA9CisJCQlVU0JfUVVJUktfTElORUFSX0ZSQU1FX0lO VFJfQklOVEVSVkFMIH0sCisJeyBVU0JfREVWSUNFKDB4MDkwNCwgMHg2MTAyKSwgLmRyaXZlcl9p bmZvID0KKwkJCVVTQl9RVUlSS19MSU5FQVJfRlJBTUVfSU5UUl9CSU5URVJWQUwgfSwKKwl7IFVT Ql9ERVZJQ0UoMHgwOTA0LCAweDYxMDMpLCAuZHJpdmVyX2luZm8gPQorCQkJVVNCX1FVSVJLX0xJ TkVBUl9GUkFNRV9JTlRSX0JJTlRFUlZBTCB9LAorCiAJLyogS2V5dG91Y2ggUVdFUlRZIFBhbmVs IGtleWJvYXJkICovCiAJeyBVU0JfREVWSUNFKDB4MDkyNiwgMHgzMzMzKSwgLmRyaXZlcl9pbmZv ID0KIAkJCVVTQl9RVUlSS19DT05GSUdfSU5URl9TVFJJTkdTIH0sCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3VzYi9kd2MzL2dhZGdldC5oIGIvZHJpdmVycy91c2IvZHdjMy9nYWRnZXQuaAppbmRleCA3 MTE0NWE0NDlkOTkuLjMxZmIwZmZiOGY4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMy9n YWRnZXQuaAorKysgYi9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5oCkBAIC00OCwyMyArNDgsMjMg QEAgc3RydWN0IGR3YzM7CiAjZGVmaW5lIGdhZGdldF90b19kd2MoZykJKGNvbnRhaW5lcl9vZihn LCBzdHJ1Y3QgZHdjMywgZ2FkZ2V0KSkKIAogLyogREVQQ0ZHIHBhcmFtZXRlciAxICovCi0jZGVm aW5lIERXQzNfREVQQ0ZHX0lOVF9OVU0obikJCSgobikgPDwgMCkKKyNkZWZpbmUgRFdDM19ERVBD RkdfSU5UX05VTShuKQkJKCgobikgJiAweDFmKSA8PCAwKQogI2RlZmluZSBEV0MzX0RFUENGR19Y RkVSX0NPTVBMRVRFX0VOCSgxIDw8IDgpCiAjZGVmaW5lIERXQzNfREVQQ0ZHX1hGRVJfSU5fUFJP R1JFU1NfRU4JKDEgPDwgOSkKICNkZWZpbmUgRFdDM19ERVBDRkdfWEZFUl9OT1RfUkVBRFlfRU4J KDEgPDwgMTApCiAjZGVmaW5lIERXQzNfREVQQ0ZHX0ZJRk9fRVJST1JfRU4JKDEgPDwgMTEpCiAj ZGVmaW5lIERXQzNfREVQQ0ZHX1NUUkVBTV9FVkVOVF9FTgkoMSA8PCAxMykKLSNkZWZpbmUgRFdD M19ERVBDRkdfQklOVEVSVkFMX00xKG4pCSgobikgPDwgMTYpCisjZGVmaW5lIERXQzNfREVQQ0ZH X0JJTlRFUlZBTF9NMShuKQkoKChuKSAmIDB4ZmYpIDw8IDE2KQogI2RlZmluZSBEV0MzX0RFUENG R19TVFJFQU1fQ0FQQUJMRQkoMSA8PCAyNCkKLSNkZWZpbmUgRFdDM19ERVBDRkdfRVBfTlVNQkVS KG4pCSgobikgPDwgMjUpCisjZGVmaW5lIERXQzNfREVQQ0ZHX0VQX05VTUJFUihuKQkoKChuKSAm IDB4MWYpIDw8IDI1KQogI2RlZmluZSBEV0MzX0RFUENGR19CVUxLX0JBU0VECQkoMSA8PCAzMCkK ICNkZWZpbmUgRFdDM19ERVBDRkdfRklGT19CQVNFRAkJKDEgPDwgMzEpCiAKIC8qIERFUENGRyBw YXJhbWV0ZXIgMCAqLwotI2RlZmluZSBEV0MzX0RFUENGR19FUF9UWVBFKG4pCQkoKG4pIDw8IDEp Ci0jZGVmaW5lIERXQzNfREVQQ0ZHX01BWF9QQUNLRVRfU0laRShuKQkoKG4pIDw8IDMpCi0jZGVm aW5lIERXQzNfREVQQ0ZHX0ZJRk9fTlVNQkVSKG4pCSgobikgPDwgMTcpCi0jZGVmaW5lIERXQzNf REVQQ0ZHX0JVUlNUX1NJWkUobikJKChuKSA8PCAyMikKKyNkZWZpbmUgRFdDM19ERVBDRkdfRVBf VFlQRShuKQkJKCgobikgJiAweDMpIDw8IDEpCisjZGVmaW5lIERXQzNfREVQQ0ZHX01BWF9QQUNL RVRfU0laRShuKQkoKChuKSAmIDB4N2ZmKSA8PCAzKQorI2RlZmluZSBEV0MzX0RFUENGR19GSUZP X05VTUJFUihuKQkoKChuKSAmIDB4MWYpIDw8IDE3KQorI2RlZmluZSBEV0MzX0RFUENGR19CVVJT VF9TSVpFKG4pCSgoKG4pICYgMHhmKSA8PCAyMikKICNkZWZpbmUgRFdDM19ERVBDRkdfREFUQV9T RVFfTlVNKG4pCSgobikgPDwgMjYpCiAjZGVmaW5lIERXQzNfREVQQ0ZHX0lHTl9TRVFfTlVNCQko MSA8PCAzMSkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfYWNtLmMgYi9kcml2 ZXJzL3VzYi9nYWRnZXQvZl9hY20uYwppbmRleCAzZjg4NDkzMzlhZGUuLmMzYzQzYzg2ZTMzZCAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfYWNtLmMKKysrIGIvZHJpdmVycy91c2Iv Z2FkZ2V0L2ZfYWNtLmMKQEAgLTQ5NywxMyArNDk3LDE1IEBAIHN0YXRpYyBpbnQgYWNtX25vdGlm eV9zZXJpYWxfc3RhdGUoc3RydWN0IGZfYWNtICphY20pCiB7CiAJc3RydWN0IHVzYl9jb21wb3Np dGVfZGV2ICpjZGV2ID0gYWNtLT5wb3J0LmZ1bmMuY29uZmlnLT5jZGV2OwogCWludAkJCXN0YXR1 czsKKwlfX2xlMTYJCQlzZXJpYWxfc3RhdGU7CiAKIAlzcGluX2xvY2soJmFjbS0+bG9jayk7CiAJ aWYgKGFjbS0+bm90aWZ5X3JlcSkgewogCQlEQkcoY2RldiwgImFjbSB0dHlHUyVkIHNlcmlhbCBz dGF0ZSAlMDR4XG4iLAogCQkJCWFjbS0+cG9ydF9udW0sIGFjbS0+c2VyaWFsX3N0YXRlKTsKKwkJ c2VyaWFsX3N0YXRlID0gY3B1X3RvX2xlMTYoYWNtLT5zZXJpYWxfc3RhdGUpOwogCQlzdGF0dXMg PSBhY21fY2RjX25vdGlmeShhY20sIFVTQl9DRENfTk9USUZZX1NFUklBTF9TVEFURSwKLQkJCQkw LCAmYWNtLT5zZXJpYWxfc3RhdGUsIHNpemVvZihhY20tPnNlcmlhbF9zdGF0ZSkpOworCQkJCTAs ICZzZXJpYWxfc3RhdGUsIHNpemVvZihhY20tPnNlcmlhbF9zdGF0ZSkpOwogCX0gZWxzZSB7CiAJ CWFjbS0+cGVuZGluZyA9IHRydWU7CiAJCXN0YXR1cyA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi9ob3N0L3hoY2kuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCmluZGV4IGE4MzQzNzM0 MTFmMi4uNTQ3YTAzOTQ5ZGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYwor KysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYwpAQCAtMTUyMiwxOSArMTUyMiwzOCBAQCBpbnQg eGhjaV91cmJfZGVxdWV1ZShzdHJ1Y3QgdXNiX2hjZCAqaGNkLCBzdHJ1Y3QgdXJiICp1cmIsIGlu dCBzdGF0dXMpCiAJdW5zaWduZWQgaW50IGVwX2luZGV4OwogCXN0cnVjdCB4aGNpX3JpbmcgKmVw X3Jpbmc7CiAJc3RydWN0IHhoY2lfdmlydF9lcCAqZXA7CisJc3RydWN0IHhoY2lfdmlydF9kZXZp Y2UgKnZkZXY7CiAKIAl4aGNpID0gaGNkX3RvX3hoY2koaGNkKTsKIAlzcGluX2xvY2tfaXJxc2F2 ZSgmeGhjaS0+bG9jaywgZmxhZ3MpOwogCS8qIE1ha2Ugc3VyZSB0aGUgVVJCIGhhc24ndCBjb21w bGV0ZWQgb3IgYmVlbiB1bmxpbmtlZCBhbHJlYWR5ICovCiAJcmV0ID0gdXNiX2hjZF9jaGVja191 bmxpbmtfdXJiKGhjZCwgdXJiLCBzdGF0dXMpOwotCWlmIChyZXQgfHwgIXVyYi0+aGNwcml2KQor CWlmIChyZXQpCiAJCWdvdG8gZG9uZTsKKworCS8qIGdpdmUgYmFjayBVUkIgbm93IGlmIHdlIGNh bid0IHF1ZXVlIGl0IGZvciBjYW5jZWwgKi8KKwl2ZGV2ID0geGhjaS0+ZGV2c1t1cmItPmRldi0+ c2xvdF9pZF07CisJdXJiX3ByaXYgPSB1cmItPmhjcHJpdjsKKwlpZiAoIXZkZXYgfHwgIXVyYl9w cml2KQorCQlnb3RvIGVycl9naXZlYmFjazsKKworCXhoY2lfZGJnKHhoY2ksICJDYW5jZWwgVVJC ICVwXG4iLCB1cmIpOworCXhoY2lfZGJnKHhoY2ksICJFdmVudCByaW5nOlxuIik7CisJeGhjaV9k ZWJ1Z19yaW5nKHhoY2ksIHhoY2ktPmV2ZW50X3JpbmcpOworCWVwX2luZGV4ID0geGhjaV9nZXRf ZW5kcG9pbnRfaW5kZXgoJnVyYi0+ZXAtPmRlc2MpOworCWVwID0gJnZkZXYtPmVwc1tlcF9pbmRl eF07CisJZXBfcmluZyA9IHhoY2lfdXJiX3RvX3RyYW5zZmVyX3JpbmcoeGhjaSwgdXJiKTsKKwlp ZiAoIWVwIHx8ICFlcF9yaW5nKQorCQlnb3RvIGVycl9naXZlYmFjazsKKworCXhoY2lfZGJnKHho Y2ksICJFbmRwb2ludCByaW5nOlxuIik7CisJeGhjaV9kZWJ1Z19yaW5nKHhoY2ksIGVwX3Jpbmcp OworCiAJdGVtcCA9IHhoY2lfcmVhZGwoeGhjaSwgJnhoY2ktPm9wX3JlZ3MtPnN0YXR1cyk7CiAJ aWYgKHRlbXAgPT0gMHhmZmZmZmZmZiB8fCAoeGhjaS0+eGhjX3N0YXRlICYgWEhDSV9TVEFURV9I QUxURUQpKSB7CiAJCXhoY2lfZGJnKHhoY2ksICJIVyBkaWVkLCBmcmVlaW5nIFRELlxuIik7Ci0J CXVyYl9wcml2ID0gdXJiLT5oY3ByaXY7CiAJCWZvciAoaSA9IHVyYl9wcml2LT50ZF9jbnQ7Ci0J CSAgICAgaSA8IHVyYl9wcml2LT5sZW5ndGggJiYgeGhjaS0+ZGV2c1t1cmItPmRldi0+c2xvdF9p ZF07CisJCSAgICAgaSA8IHVyYl9wcml2LT5sZW5ndGg7CiAJCSAgICAgaSsrKSB7CiAJCQl0ZCA9 IHVyYl9wcml2LT50ZFtpXTsKIAkJCWlmICghbGlzdF9lbXB0eSgmdGQtPnRkX2xpc3QpKQpAQCAt MTU0MiwzMCArMTU2MSw5IEBAIGludCB4aGNpX3VyYl9kZXF1ZXVlKHN0cnVjdCB1c2JfaGNkICpo Y2QsIHN0cnVjdCB1cmIgKnVyYiwgaW50IHN0YXR1cykKIAkJCWlmICghbGlzdF9lbXB0eSgmdGQt PmNhbmNlbGxlZF90ZF9saXN0KSkKIAkJCQlsaXN0X2RlbF9pbml0KCZ0ZC0+Y2FuY2VsbGVkX3Rk X2xpc3QpOwogCQl9Ci0KLQkJdXNiX2hjZF91bmxpbmtfdXJiX2Zyb21fZXAoaGNkLCB1cmIpOwot CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4aGNpLT5sb2NrLCBmbGFncyk7Ci0JCXVzYl9oY2Rf Z2l2ZWJhY2tfdXJiKGhjZCwgdXJiLCAtRVNIVVRET1dOKTsKLQkJeGhjaV91cmJfZnJlZV9wcml2 KHhoY2ksIHVyYl9wcml2KTsKLQkJcmV0dXJuIHJldDsKKwkJZ290byBlcnJfZ2l2ZWJhY2s7CiAJ fQogCi0JeGhjaV9kYmcoeGhjaSwgIkNhbmNlbCBVUkIgJXBcbiIsIHVyYik7Ci0JeGhjaV9kYmco eGhjaSwgIkV2ZW50IHJpbmc6XG4iKTsKLQl4aGNpX2RlYnVnX3JpbmcoeGhjaSwgeGhjaS0+ZXZl bnRfcmluZyk7Ci0JZXBfaW5kZXggPSB4aGNpX2dldF9lbmRwb2ludF9pbmRleCgmdXJiLT5lcC0+ ZGVzYyk7Ci0JZXAgPSAmeGhjaS0+ZGV2c1t1cmItPmRldi0+c2xvdF9pZF0tPmVwc1tlcF9pbmRl eF07Ci0JZXBfcmluZyA9IHhoY2lfdXJiX3RvX3RyYW5zZmVyX3JpbmcoeGhjaSwgdXJiKTsKLQlp ZiAoIWVwX3JpbmcpIHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBkb25lOwotCX0KLQotCXho Y2lfZGJnKHhoY2ksICJFbmRwb2ludCByaW5nOlxuIik7Ci0JeGhjaV9kZWJ1Z19yaW5nKHhoY2ks IGVwX3JpbmcpOwotCi0JdXJiX3ByaXYgPSB1cmItPmhjcHJpdjsKLQogCWZvciAoaSA9IHVyYl9w cml2LT50ZF9jbnQ7IGkgPCB1cmJfcHJpdi0+bGVuZ3RoOyBpKyspIHsKIAkJdGQgPSB1cmJfcHJp di0+dGRbaV07CiAJCWxpc3RfYWRkX3RhaWwoJnRkLT5jYW5jZWxsZWRfdGRfbGlzdCwgJmVwLT5j YW5jZWxsZWRfdGRfbGlzdCk7CkBAIC0xNTg2LDYgKzE1ODQsMTQgQEAgaW50IHhoY2lfdXJiX2Rl cXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQog ZG9uZToKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4aGNpLT5sb2NrLCBmbGFncyk7CiAJcmV0 dXJuIHJldDsKKworZXJyX2dpdmViYWNrOgorCWlmICh1cmJfcHJpdikKKwkJeGhjaV91cmJfZnJl ZV9wcml2KHhoY2ksIHVyYl9wcml2KTsKKwl1c2JfaGNkX3VubGlua191cmJfZnJvbV9lcChoY2Qs IHVyYik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmeGhjaS0+bG9jaywgZmxhZ3MpOworCXVz Yl9oY2RfZ2l2ZWJhY2tfdXJiKGhjZCwgdXJiLCAtRVNIVVRET1dOKTsKKwlyZXR1cm4gcmV0Owog fQogCiAvKiBEcm9wIGFuIGVuZHBvaW50IGZyb20gYSBuZXcgYmFuZHdpZHRoIGNvbmZpZ3VyYXRp b24gZm9yIHRoaXMgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9pZG1vdXNl LmMgYi9kcml2ZXJzL3VzYi9taXNjL2lkbW91c2UuYwppbmRleCA1MTViNjdmZmZhYjEuLjg0ODMy MmUwMmMwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9pZG1vdXNlLmMKKysrIGIvZHJp dmVycy91c2IvbWlzYy9pZG1vdXNlLmMKQEAgLTM0Niw2ICszNDYsOSBAQCBzdGF0aWMgaW50IGlk bW91c2VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSwKIAlpZiAoaWZhY2Vf ZGVzYy0+ZGVzYy5iSW50ZXJmYWNlQ2xhc3MgIT0gMHgwQSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAK KwlpZiAoaWZhY2VfZGVzYy0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9E RVY7CisKIAkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIG91ciBkZXZpY2Ugc3RhdGUgYW5kIGluaXRp YWxpemUgaXQgKi8KIAlkZXYgPSBremFsbG9jKHNpemVvZigqZGV2KSwgR0ZQX0tFUk5FTCk7CiAJ aWYgKGRldiA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3Iu YyBiL2RyaXZlcnMvdXNiL21pc2MvaW93YXJyaW9yLmMKaW5kZXggYzE5YTIxOWNkNWE2Li44Nzhh MzQ2ZDc0M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvaW93YXJyaW9yLmMKKysrIGIv ZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYwpAQCAtODA5LDYgKzgwOSwxNCBAQCBzdGF0aWMg aW50IGlvd2Fycmlvcl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAogCQln b3RvIGVycm9yOwogCX0KIAorCWlmIChkZXYtPnByb2R1Y3RfaWQgPT0gVVNCX0RFVklDRV9JRF9D T0RFTUVSQ1NfSU9XNTYpIHsKKwkJaWYgKCFkZXYtPmludF9vdXRfZW5kcG9pbnQpIHsKKwkJCWRl dl9lcnIoJmludGVyZmFjZS0+ZGV2LCAibm8gaW50ZXJydXB0LW91dCBlbmRwb2ludCBmb3VuZFxu Iik7CisJCQlyZXR2YWwgPSAtRU5PREVWOworCQkJZ290byBlcnJvcjsKKwkJfQorCX0KKwogCS8q IHdlIGhhdmUgdG8gY2hlY2sgdGhlIHJlcG9ydF9zaXplIG9mdGVuLCBzbyByZW1lbWJlciBpdCBp biB0aGUgZW5kaWFuZXNzIHN1aXRhYmxlIGZvciBvdXIgbWFjaGluZSAqLwogCWRldi0+cmVwb3J0 X3NpemUgPSB1c2JfZW5kcG9pbnRfbWF4cChkZXYtPmludF9pbl9lbmRwb2ludCk7CiAJaWYgKChk ZXYtPmludGVyZmFjZS0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlciA9PSAw KSAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c3M3MjAuYyBiL2RyaXZlcnMvdXNi L21pc2MvdXNzNzIwLmMKaW5kZXggOGIxZDk0YTc2OTE0Li40MjM5NmFhNzcyZjQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL21pc2MvdXNzNzIwLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy91c3M3 MjAuYwpAQCAtNzA0LDYgKzcwNCwxMSBAQCBzdGF0aWMgaW50IHVzczcyMF9wcm9iZShzdHJ1Y3Qg dXNiX2ludGVyZmFjZSAqaW50ZiwKIAogCWludGVyZmFjZSA9IGludGYtPmN1cl9hbHRzZXR0aW5n OwogCisJaWYgKGludGVyZmFjZS0+ZGVzYy5iTnVtRW5kcG9pbnRzIDwgMykgeworCQl1c2JfcHV0 X2Rldih1c2JkZXYpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAkvKgogCSAqIEFsbG9jYXRl IHBhcnBvcnQgaW50ZXJmYWNlIAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFs L2lvX3RpLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwppbmRleCAwZmMyZGE5OTQ4Zjcu LmE0MTc3NTYxZDA5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMKKysr IGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMKQEAgLTE2ODEsNiArMTY4MSwxMiBAQCBzdGF0 aWMgdm9pZCBlZGdlX2ludGVycnVwdF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCiAJZnVuY3Rp b24gICAgPSBUSVVNUF9HRVRfRlVOQ19GUk9NX0NPREUoZGF0YVswXSk7CiAJZGJnKCIlcyAtIHBv cnRfbnVtYmVyICVkLCBmdW5jdGlvbiAlZCwgaW5mbyAweCV4IiwKIAkgICAgIF9fZnVuY19fLCBw b3J0X251bWJlciwgZnVuY3Rpb24sIGRhdGFbMV0pOworCisJaWYgKHBvcnRfbnVtYmVyID49IGVk Z2Vfc2VyaWFsLT5zZXJpYWwtPm51bV9wb3J0cykgeworCQlkZXZfZXJyKCZ1cmItPmRldi0+ZGV2 LCAiYmFkIHBvcnQgbnVtYmVyICVkXG4iLCBwb3J0X251bWJlcik7CisJCWdvdG8gZXhpdDsKKwl9 CisKIAlwb3J0ID0gZWRnZV9zZXJpYWwtPnNlcmlhbC0+cG9ydFtwb3J0X251bWJlcl07CiAJZWRn ZV9wb3J0ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCWlmICghZWRnZV9wb3J0 KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvb3B0aW9uLmMKaW5kZXggZTQyMWViOGZiYjlkLi5jZmIzNWVjOWEyYTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYworKysgYi9kcml2ZXJzL3VzYi9zZXJp YWwvb3B0aW9uLmMKQEAgLTIzNCw2ICsyMzQsMTQgQEAgc3RhdGljIHZvaWQgb3B0aW9uX2luc3Rh dF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpOwogI2RlZmluZSBCQU5EUklDSF9QUk9EVUNUXzEw MTIJCQkweDEwMTIKIAogI2RlZmluZSBRVUFMQ09NTV9WRU5ET1JfSUQJCQkweDA1QzYKKy8qIFRo ZXNlIFF1ZWN0ZWwgcHJvZHVjdHMgdXNlIFF1YWxjb21tJ3MgdmVuZG9yIElEICovCisjZGVmaW5l IFFVRUNURUxfUFJPRFVDVF9VQzIwCQkJMHg5MDAzCisjZGVmaW5lIFFVRUNURUxfUFJPRFVDVF9V QzE1CQkJMHg5MDkwCisKKyNkZWZpbmUgUVVFQ1RFTF9WRU5ET1JfSUQJCQkweDJjN2MKKy8qIFRo ZXNlIFF1ZWN0ZWwgcHJvZHVjdHMgdXNlIFF1ZWN0ZWwncyB2ZW5kb3IgSUQgKi8KKyNkZWZpbmUg UVVFQ1RFTF9QUk9EVUNUX0VDMjEJCQkweDAxMjEKKyNkZWZpbmUgUVVFQ1RFTF9QUk9EVUNUX0VD MjUJCQkweDAxMjUKIAogI2RlZmluZSBDTU9URUNIX1ZFTkRPUl9JRAkJCTB4MTZkOAogI2RlZmlu ZSBDTU9URUNIX1BST0RVQ1RfNjAwMQkJCTB4NjAwMQpAQCAtMTE0Nyw3ICsxMTU1LDE0IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBvcHRpb25faWRzW10gPSB7CiAJeyBVU0Jf REVWSUNFKFFVQUxDT01NX1ZFTkRPUl9JRCwgMHg2NjEzKX0sIC8qIE9uZGEgSDYwMC9aVEUgTUYz MzAgKi8KIAl7IFVTQl9ERVZJQ0UoUVVBTENPTU1fVkVORE9SX0lELCAweDAwMjMpfSwgLyogT05Z WCAzRyBkZXZpY2UgKi8KIAl7IFVTQl9ERVZJQ0UoUVVBTENPTU1fVkVORE9SX0lELCAweDkwMDAp fSwgLyogU0lNQ29tIFNJTTUyMTggKi8KLQl7IFVTQl9ERVZJQ0UoUVVBTENPTU1fVkVORE9SX0lE LCAweDkwMDMpLCAvKiBRdWVjdGVsIFVDMjAgKi8KKwkvKiBRdWVjdGVsIHByb2R1Y3RzIHVzaW5n IFF1YWxjb21tIHZlbmRvciBJRCAqLworCXsgVVNCX0RFVklDRShRVUFMQ09NTV9WRU5ET1JfSUQs IFFVRUNURUxfUFJPRFVDVF9VQzE1KX0sCisJeyBVU0JfREVWSUNFKFFVQUxDT01NX1ZFTkRPUl9J RCwgUVVFQ1RFTF9QUk9EVUNUX1VDMjApLAorCSAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9u Z190KSZuZXRfaW50ZjRfYmxhY2tsaXN0IH0sCisJLyogUXVlY3RlbCBwcm9kdWN0cyB1c2luZyBR dWVjdGVsIHZlbmRvciBJRCAqLworCXsgVVNCX0RFVklDRShRVUVDVEVMX1ZFTkRPUl9JRCwgUVVF Q1RFTF9QUk9EVUNUX0VDMjEpLAorCSAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZu ZXRfaW50ZjRfYmxhY2tsaXN0IH0sCisJeyBVU0JfREVWSUNFKFFVRUNURUxfVkVORE9SX0lELCBR VUVDVEVMX1BST0RVQ1RfRUMyNSksCiAJICAuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3Qp Jm5ldF9pbnRmNF9ibGFja2xpc3QgfSwKIAl7IFVTQl9ERVZJQ0UoQ01PVEVDSF9WRU5ET1JfSUQs IENNT1RFQ0hfUFJPRFVDVF82MDAxKSB9LAogCXsgVVNCX0RFVklDRShDTU9URUNIX1ZFTkRPUl9J RCwgQ01PVEVDSF9QUk9EVUNUX0NNVV8zMDApIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9z ZXJpYWwvc2FmZV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zYWZlX3NlcmlhbC5jCmlu ZGV4IGEzNmUyMzEzZWVkMC4uNTM2YzAwYzQzMzVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9z ZXJpYWwvc2FmZV9zZXJpYWwuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc2FmZV9zZXJpYWwu YwpAQCAtMjMyLDYgKzIzMiwxMSBAQCBzdGF0aWMgdm9pZCBzYWZlX3Byb2Nlc3NfcmVhZF91cmIo c3RydWN0IHVyYiAqdXJiKQogCWlmICghc2FmZSkKIAkJZ290byBvdXQ7CiAKKwlpZiAobGVuZ3Ro IDwgMikgeworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJtYWxmb3JtZWQgcGFja2V0XG4iKTsKKwkJ cmV0dXJuOworCX0KKwogCWZjcyA9IGZjc19jb21wdXRlMTAoZGF0YSwgbGVuZ3RoLCBDUkMxMF9J TklURkNTKTsKIAlpZiAoZmNzKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gYmFkIENS QyAleFxuIiwgX19mdW5jX18sIGZjcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29y ZS93YS1oYy5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtaGMuYwppbmRleCA5ZTRhOTI0NjE2 ODguLmFjYWEwYzViZTNjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtaGMu YworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS1oYy5jCkBAIC0zOCw2ICszOCw5IEBAIGlu dCB3YV9jcmVhdGUoc3RydWN0IHdhaGMgKndhLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2Up CiAJaW50IHJlc3VsdDsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaWZhY2UtPmRldjsKIAorCWlm IChpZmFjZS0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyA8IDMpCisJCXJldHVy biAtRU5PREVWOworCiAJcmVzdWx0ID0gd2FfcnBpcGVzX2NyZWF0ZSh3YSk7CiAJaWYgKHJlc3Vs dCA8IDApCiAJCWdvdG8gZXJyb3JfcnBpcGVzX2NyZWF0ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXdiL2h3YS1yYy5jIGIvZHJpdmVycy91d2IvaHdhLXJjLmMKaW5kZXggODY2ODVlOTk0OTg3Li5h ZDk3MWRmMGYzNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXdiL2h3YS1yYy5jCisrKyBiL2RyaXZl cnMvdXdiL2h3YS1yYy5jCkBAIC04MTEsNiArODExLDkgQEAgc3RhdGljIGludCBod2FyY19wcm9i ZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2UsCiAJc3RydWN0IGh3YXJjICpod2FyYzsKIAlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmaWZhY2UtPmRldjsKIAorCWlmIChpZmFjZS0+Y3VyX2FsdHNl dHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyA8IDEpCisJCXJldHVybiAtRU5PREVWOworCiAJcmVz dWx0ID0gLUVOT01FTTsKIAl1d2JfcmMgPSB1d2JfcmNfYWxsb2MoKTsKIAlpZiAodXdiX3JjID09 IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL2kxNDgwL2RmdS91c2IuYyBiL2RyaXZl cnMvdXdiL2kxNDgwL2RmdS91c2IuYwppbmRleCBiYTg2NjQzMjhhZmEuLmI3MTI5MWI1MDU2ZiAx MDA2NDQKLS0tIGEvZHJpdmVycy91d2IvaTE0ODAvZGZ1L3VzYi5jCisrKyBiL2RyaXZlcnMvdXdi L2kxNDgwL2RmdS91c2IuYwpAQCAtMzYyLDYgKzM2Miw5IEBAIGludCBpMTQ4MF91c2JfcHJvYmUo c3RydWN0IHVzYl9pbnRlcmZhY2UgKmlmYWNlLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAq aWQpCiAJCQkJIHJlc3VsdCk7CiAJfQogCisJaWYgKGlmYWNlLT5jdXJfYWx0c2V0dGluZy0+ZGVz Yy5iTnVtRW5kcG9pbnRzIDwgMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlyZXN1bHQgPSAtRU5P TUVNOwogCWkxNDgwX3VzYiA9IGt6YWxsb2Moc2l6ZW9mKCppMTQ4MF91c2IpLCBHRlBfS0VSTkVM KTsKIAlpZiAoaTE0ODBfdXNiID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v eGVuLWZiZnJvbnQuYyBiL2RyaXZlcnMvdmlkZW8veGVuLWZiZnJvbnQuYwppbmRleCBiZWFjNTJm YzFjMGUuLjdjYjc3YWNiNmYwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby94ZW4tZmJmcm9u dC5jCisrKyBiL2RyaXZlcnMvdmlkZW8veGVuLWZiZnJvbnQuYwpAQCAtNjQwLDcgKzY0MCw2IEBA IHN0YXRpYyB2b2lkIHhlbmZiX2JhY2tlbmRfY2hhbmdlZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAq ZGV2LAogCQlicmVhazsKIAogCWNhc2UgWGVuYnVzU3RhdGVJbml0V2FpdDoKLUluaXRXYWl0Ogog CQl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOwogCQlicmVh azsKIApAQCAtNjUxLDcgKzY1MCw4IEBAIHN0YXRpYyB2b2lkIHhlbmZiX2JhY2tlbmRfY2hhbmdl ZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAogCQkgKiBnZXQgQ29ubmVjdGVkIHR3aWNlIGhl cmUuCiAJCSAqLwogCQlpZiAoZGV2LT5zdGF0ZSAhPSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkKLQkJ CWdvdG8gSW5pdFdhaXQ7IC8qIG5vIEluaXRXYWl0IHNlZW4geWV0LCBmdWRnZSBpdCAqLworCQkJ Lyogbm8gSW5pdFdhaXQgc2VlbiB5ZXQsIGZ1ZGdlIGl0ICovCisJCQl4ZW5idXNfc3dpdGNoX3N0 YXRlKGRldiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOwogCiAJCWlmICh4ZW5idXNfc2NhbmYoWEJU X05JTCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAogCQkJCSAicmVxdWVzdC11cGRhdGUiLCAiJWQi LCAmdmFsKSA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5j IGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYwppbmRleCAyOTc1YzUwODlkYWMuLmJj N2MyNmQwOWMyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYwor KysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jCkBAIC0xODAsMTIgKzE4MCwxNCBA QCBzdGF0aWMgdm9pZCB1cGRhdGVfYmFsbG9vbl9zdGF0cyhzdHJ1Y3QgdmlydGlvX2JhbGxvb24g KnZiKQogCWFsbF92bV9ldmVudHMoZXZlbnRzKTsKIAlzaV9tZW1pbmZvKCZpKTsKIAorI2lmZGVm IENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUwogCXVwZGF0ZV9zdGF0KHZiLCBpZHgrKywgVklSVElP X0JBTExPT05fU19TV0FQX0lOLAogCQkJCXBhZ2VzX3RvX2J5dGVzKGV2ZW50c1tQU1dQSU5dKSk7 CiAJdXBkYXRlX3N0YXQodmIsIGlkeCsrLCBWSVJUSU9fQkFMTE9PTl9TX1NXQVBfT1VULAogCQkJ CXBhZ2VzX3RvX2J5dGVzKGV2ZW50c1tQU1dQT1VUXSkpOwogCXVwZGF0ZV9zdGF0KHZiLCBpZHgr KywgVklSVElPX0JBTExPT05fU19NQUpGTFQsIGV2ZW50c1tQR01BSkZBVUxUXSk7CiAJdXBkYXRl X3N0YXQodmIsIGlkeCsrLCBWSVJUSU9fQkFMTE9PTl9TX01JTkZMVCwgZXZlbnRzW1BHRkFVTFRd KTsKKyNlbmRpZgogCXVwZGF0ZV9zdGF0KHZiLCBpZHgrKywgVklSVElPX0JBTExPT05fU19NRU1G UkVFLAogCQkJCXBhZ2VzX3RvX2J5dGVzKGkuZnJlZXJhbSkpOwogCXVwZGF0ZV9zdGF0KHZiLCBp ZHgrKywgVklSVElPX0JBTExPT05fU19NRU1UT1QsCkBAIC0zMjAsNiArMzIyLDggQEAgc3RhdGlj IGludCB2aXJ0YmFsbG9vbl9wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKIAkJICog UHJpbWUgdGhpcyB2aXJ0cXVldWUgd2l0aCBvbmUgYnVmZmVyIHNvIHRoZSBoeXBlcnZpc29yIGNh bgogCQkgKiB1c2UgaXQgdG8gc2lnbmFsIHVzIGxhdGVyLgogCQkgKi8KKwkJdXBkYXRlX2JhbGxv b25fc3RhdHModmIpOworCiAJCXNnX2luaXRfb25lKCZzZywgdmItPnN0YXRzLCBzaXplb2YgdmIt PnN0YXRzKTsKIAkJaWYgKHZpcnRxdWV1ZV9hZGRfYnVmKHZiLT5zdGF0c192cSwgJnNnLCAxLCAw LCB2YikgPCAwKQogCQkJQlVHKCk7CmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmMK aW5kZXggM2Y4ZDhmMzMxYTk4Li4xNTU0ZTU0OWMxZGUgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYwor KysgYi9mcy9leGVjLmMKQEAgLTIwOCw4ICsyMDgsMjYgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpn ZXRfYXJnX3BhZ2Uoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgdW5zaWduZWQgbG9uZyBwb3Ms CiAKIAlpZiAod3JpdGUpIHsKIAkJdW5zaWduZWQgbG9uZyBzaXplID0gYnBybS0+dm1hLT52bV9l bmQgLSBicHJtLT52bWEtPnZtX3N0YXJ0OworCQl1bnNpZ25lZCBsb25nIHB0cl9zaXplOwogCQlz dHJ1Y3QgcmxpbWl0ICpybGltOwogCisJCS8qCisJCSAqIFNpbmNlIHRoZSBzdGFjayB3aWxsIGhv bGQgcG9pbnRlcnMgdG8gdGhlIHN0cmluZ3MsIHdlCisJCSAqIG11c3QgYWNjb3VudCBmb3IgdGhl bSBhcyB3ZWxsLgorCQkgKgorCQkgKiBUaGUgc2l6ZSBjYWxjdWxhdGlvbiBpcyB0aGUgZW50aXJl IHZtYSB3aGlsZSBlYWNoIGFyZyBwYWdlIGlzCisJCSAqIGJ1aWx0LCBzbyBlYWNoIHRpbWUgd2Ug Z2V0IGhlcmUgaXQncyBjYWxjdWxhdGluZyBob3cgZmFyIGl0CisJCSAqIGlzIGN1cnJlbnRseSAo cmF0aGVyIHRoYW4gZWFjaCBjYWxsIGJlaW5nIGp1c3QgdGhlIG5ld2x5CisJCSAqIGFkZGVkIHNp emUgZnJvbSB0aGUgYXJnIHBhZ2UpLiAgQXMgYSByZXN1bHQsIHdlIG5lZWQgdG8KKwkJICogYWx3 YXlzIGFkZCB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHBvaW50ZXJzLCBzbyB0aGF0IG9uIHRoZQor CQkgKiBsYXN0IGNhbGwgdG8gZ2V0X2FyZ19wYWdlKCkgd2UnbGwgYWN0dWFsbHkgaGF2ZSB0aGUg ZW50aXJlCisJCSAqIGNvcnJlY3Qgc2l6ZS4KKwkJICovCisJCXB0cl9zaXplID0gKGJwcm0tPmFy Z2MgKyBicHJtLT5lbnZjKSAqIHNpemVvZih2b2lkICopOworCQlpZiAocHRyX3NpemUgPiBVTE9O R19NQVggLSBzaXplKQorCQkJZ290byBmYWlsOworCQlzaXplICs9IHB0cl9zaXplOworCiAJCWFj Y3RfYXJnX3NpemUoYnBybSwgc2l6ZSAvIFBBR0VfU0laRSk7CiAKIAkJLyoKQEAgLTIyNywxMyAr MjQ1LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqZ2V0X2FyZ19wYWdlKHN0cnVjdCBsaW51eF9i aW5wcm0gKmJwcm0sIHVuc2lnbmVkIGxvbmcgcG9zLAogCQkgKiAgICB0byB3b3JrIGZyb20uCiAJ CSAqLwogCQlybGltID0gY3VycmVudC0+c2lnbmFsLT5ybGltOwotCQlpZiAoc2l6ZSA+IEFDQ0VT U19PTkNFKHJsaW1bUkxJTUlUX1NUQUNLXS5ybGltX2N1cikgLyA0KSB7Ci0JCQlwdXRfcGFnZShw YWdlKTsKLQkJCXJldHVybiBOVUxMOwotCQl9CisJCWlmIChzaXplID4gQUNDRVNTX09OQ0Uocmxp bVtSTElNSVRfU1RBQ0tdLnJsaW1fY3VyKSAvIDQpCisJCQlnb3RvIGZhaWw7CiAJfQogCiAJcmV0 dXJuIHBhZ2U7CisKK2ZhaWw6CisJcHV0X3BhZ2UocGFnZSk7CisJcmV0dXJuIE5VTEw7CiB9CiAK IHN0YXRpYyB2b2lkIHB1dF9hcmdfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IDA0 ZWRhMjhjOTIwMy4uMmFmMzFlYjc2YmQwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVm Zi5oCisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKQEAgLTE5MjYsNiArMTkyNiwxMyBAQCBz dGF0aWMgaW5saW5lIGludCBza2JfY2xvbmVfd3JpdGFibGUoY29uc3Qgc3RydWN0IHNrX2J1ZmYg KnNrYiwgdW5zaWduZWQgaW50IGxlbgogCSAgICAgICBza2JfaGVhZHJvb20oc2tiKSArIGxlbiA8 PSBza2ItPmhkcl9sZW47CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IHNrYl90cnlfbWFrZV93cml0 YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCQl1bnNpZ25lZCBpbnQgd3JpdGVfbGVuKQor eworCXJldHVybiBza2JfY2xvbmVkKHNrYikgJiYgIXNrYl9jbG9uZV93cml0YWJsZShza2IsIHdy aXRlX2xlbikgJiYKKwkgICAgICAgcHNrYl9leHBhbmRfaGVhZChza2IsIDAsIDAsIEdGUF9BVE9N SUMpOworfQorCiBzdGF0aWMgaW5saW5lIGludCBfX3NrYl9jb3coc3RydWN0IHNrX2J1ZmYgKnNr YiwgdW5zaWduZWQgaW50IGhlYWRyb29tLAogCQkJICAgIGludCBjbG9uZWQpCiB7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9xdWlya3MuaCBiL2luY2x1ZGUvbGludXgvdXNiL3F1aXJr cy5oCmluZGV4IDE0MjI1MmM4MDk2MS4uMTVjOTliNzI3YTViIDEwMDY0NAotLS0gYS9pbmNsdWRl L2xpbnV4L3VzYi9xdWlya3MuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9xdWlya3MuaApAQCAt NDQsNCArNDQsMTAgQEAKIC8qIGRldmljZSBnZW5lcmF0ZXMgc3B1cmlvdXMgd2FrZXVwLCBpZ25v cmUgcmVtb3RlIHdha2V1cCBjYXBhYmlsaXR5ICovCiAjZGVmaW5lIFVTQl9RVUlSS19JR05PUkVf UkVNT1RFX1dBS0VVUAkweDAwMDAwMjAwCiAKKy8qCisgKiBEZXZpY2UgcmVwb3J0cyBpdHMgYklu dGVydmFsIGFzIGxpbmVhciBmcmFtZXMgaW5zdGVhZCBvZiB0aGUKKyAqIFVTQiAyLjAgY2FsY3Vs YXRpb24uCisgKi8KKyNkZWZpbmUgVVNCX1FVSVJLX0xJTkVBUl9GUkFNRV9JTlRSX0JJTlRFUlZB TAlCSVQoMTEpCisKICNlbmRpZiAvKiBfX0xJTlVYX1VTQl9RVUlSS1NfSCAqLwpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc3lzY2FsbHMuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRz L3N5c2NhbGxzLmgKaW5kZXggNWE0YzA0YTc1YjNkLi41NWM5Yjk5ZmY5YTYgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmgKKysrIGIvaW5jbHVkZS90cmFjZS9ldmVu dHMvc3lzY2FsbHMuaApAQCAtMSw1ICsxLDYgQEAKICN1bmRlZiBUUkFDRV9TWVNURU0KICNkZWZp bmUgVFJBQ0VfU1lTVEVNIHJhd19zeXNjYWxscworI3VuZGVmIFRSQUNFX0lOQ0xVREVfRklMRQog I2RlZmluZSBUUkFDRV9JTkNMVURFX0ZJTEUgc3lzY2FsbHMKIAogI2lmICFkZWZpbmVkKF9UUkFD RV9FVkVOVFNfU1lTQ0FMTFNfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRCkK ZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvY29yZS5jIGIva2VybmVsL2V2ZW50cy9jb3JlLmMK aW5kZXggNDlhMWRiNDdhMzc4Li5jZDRmODhhMzlmZTEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9ldmVu dHMvY29yZS5jCisrKyBiL2tlcm5lbC9ldmVudHMvY29yZS5jCkBAIC03MjczLDcgKzcyNzMsNyBA QCBpbnQgcGVyZl9ldmVudF9pbml0X2NvbnRleHQoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwg aW50IGN0eG4pCiAJCXJldCA9IGluaGVyaXRfdGFza19ncm91cChldmVudCwgcGFyZW50LCBwYXJl bnRfY3R4LAogCQkJCQkgY2hpbGQsIGN0eG4sICZpbmhlcml0ZWRfYWxsKTsKIAkJaWYgKHJldCkK LQkJCWJyZWFrOworCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAogCS8qCkBAIC03Mjg5LDcgKzcy ODksNyBAQCBpbnQgcGVyZl9ldmVudF9pbml0X2NvbnRleHQoc3RydWN0IHRhc2tfc3RydWN0ICpj aGlsZCwgaW50IGN0eG4pCiAJCXJldCA9IGluaGVyaXRfdGFza19ncm91cChldmVudCwgcGFyZW50 LCBwYXJlbnRfY3R4LAogCQkJCQkgY2hpbGQsIGN0eG4sICZpbmhlcml0ZWRfYWxsKTsKIAkJaWYg KHJldCkKLQkJCWJyZWFrOworCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAogCXJhd19zcGluX2xv Y2tfaXJxc2F2ZSgmcGFyZW50X2N0eC0+bG9jaywgZmxhZ3MpOwpAQCAtNzMxNyw2ICs3MzE3LDcg QEAgaW50IHBlcmZfZXZlbnRfaW5pdF9jb250ZXh0KHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQs IGludCBjdHhuKQogCX0KIAogCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZwYXJlbnRfY3R4 LT5sb2NrLCBmbGFncyk7CitvdXRfdW5sb2NrOgogCW11dGV4X3VubG9jaygmcGFyZW50X2N0eC0+ bXV0ZXgpOwogCiAJcGVyZl91bnBpbl9jb250ZXh0KHBhcmVudF9jdHgpOwpkaWZmIC0tZ2l0IGEv a2VybmVsL2Z1dGV4LmMgYi9rZXJuZWwvZnV0ZXguYwppbmRleCBkODJmZGJiNjU4NTYuLmJiZDM2 MDExMDA3OSAxMDA2NDQKLS0tIGEva2VybmVsL2Z1dGV4LmMKKysrIGIva2VybmVsL2Z1dGV4LmMK QEAgLTI0MTAsNyArMjQxMCw2IEBAIHN0YXRpYyBpbnQgZnV0ZXhfd2FpdF9yZXF1ZXVlX3BpKHUz MiBfX3VzZXIgKnVhZGRyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiB7CiAJc3RydWN0IGhydGltZXJf c2xlZXBlciB0aW1lb3V0LCAqdG8gPSBOVUxMOwogCXN0cnVjdCBydF9tdXRleF93YWl0ZXIgcnRf d2FpdGVyOwotCXN0cnVjdCBydF9tdXRleCAqcGlfbXV0ZXggPSBOVUxMOwogCXN0cnVjdCBmdXRl eF9oYXNoX2J1Y2tldCAqaGI7CiAJdW5pb24gZnV0ZXhfa2V5IGtleTIgPSBGVVRFWF9LRVlfSU5J VDsKIAlzdHJ1Y3QgZnV0ZXhfcSBxID0gZnV0ZXhfcV9pbml0OwpAQCAtMjQ5Miw2ICsyNDkxLDgg QEAgc3RhdGljIGludCBmdXRleF93YWl0X3JlcXVldWVfcGkodTMyIF9fdXNlciAqdWFkZHIsIHVu c2lnbmVkIGludCBmbGFncywKIAkJaWYgKHEucGlfc3RhdGUgJiYgKHEucGlfc3RhdGUtPm93bmVy ICE9IGN1cnJlbnQpKSB7CiAJCQlzcGluX2xvY2socS5sb2NrX3B0cik7CiAJCQlyZXQgPSBmaXh1 cF9waV9zdGF0ZV9vd25lcih1YWRkcjIsICZxLCBjdXJyZW50KTsKKwkJCWlmIChyZXQgJiYgcnRf bXV0ZXhfb3duZXIoJnEucGlfc3RhdGUtPnBpX211dGV4KSA9PSBjdXJyZW50KQorCQkJCXJ0X211 dGV4X3VubG9jaygmcS5waV9zdGF0ZS0+cGlfbXV0ZXgpOwogCQkJLyoKIAkJCSAqIERyb3AgdGhl IHJlZmVyZW5jZSB0byB0aGUgcGkgc3RhdGUgd2hpY2gKIAkJCSAqIHRoZSByZXF1ZXVlX3BpKCkg Y29kZSBhY3F1aXJlZCBmb3IgdXMuCkBAIC0yNTAwLDYgKzI1MDEsOCBAQCBzdGF0aWMgaW50IGZ1 dGV4X3dhaXRfcmVxdWV1ZV9waSh1MzIgX191c2VyICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdz LAogCQkJc3Bpbl91bmxvY2socS5sb2NrX3B0cik7CiAJCX0KIAl9IGVsc2UgeworCQlzdHJ1Y3Qg cnRfbXV0ZXggKnBpX211dGV4OworCiAJCS8qCiAJCSAqIFdlIGhhdmUgYmVlbiB3b2tlbiB1cCBi eSBmdXRleF91bmxvY2tfcGkoKSwgYSB0aW1lb3V0LCBvciBhCiAJCSAqIHNpZ25hbC4gIGZ1dGV4 X3VubG9ja19waSgpIHdpbGwgbm90IGRlc3Ryb3kgdGhlIGxvY2tfcHRyIG5vcgpAQCAtMjUyMywx OCArMjUyNiwxOSBAQCBzdGF0aWMgaW50IGZ1dGV4X3dhaXRfcmVxdWV1ZV9waSh1MzIgX191c2Vy ICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdzLAogCQlpZiAocmVzKQogCQkJcmV0ID0gKHJlcyA8 IDApID8gcmVzIDogMDsKIAorCQkvKgorCQkgKiBJZiBmaXh1cF9waV9zdGF0ZV9vd25lcigpIGZh dWx0ZWQgYW5kIHdhcyB1bmFibGUgdG8gaGFuZGxlCisJCSAqIHRoZSBmYXVsdCwgdW5sb2NrIHRo ZSBydF9tdXRleCBhbmQgcmV0dXJuIHRoZSBmYXVsdCB0bworCQkgKiB1c2Vyc3BhY2UuCisJCSAq LworCQlpZiAocmV0ICYmIHJ0X211dGV4X293bmVyKHBpX211dGV4KSA9PSBjdXJyZW50KQorCQkJ cnRfbXV0ZXhfdW5sb2NrKHBpX211dGV4KTsKKwogCQkvKiBVbnF1ZXVlIGFuZCBkcm9wIHRoZSBs b2NrLiAqLwogCQl1bnF1ZXVlX21lX3BpKCZxKTsKIAl9CiAKLQkvKgotCSAqIElmIGZpeHVwX3Bp X3N0YXRlX293bmVyKCkgZmF1bHRlZCBhbmQgd2FzIHVuYWJsZSB0byBoYW5kbGUgdGhlCi0JICog ZmF1bHQsIHVubG9jayB0aGUgcnRfbXV0ZXggYW5kIHJldHVybiB0aGUgZmF1bHQgdG8gdXNlcnNw YWNlLgotCSAqLwotCWlmIChyZXQgPT0gLUVGQVVMVCkgewotCQlpZiAocGlfbXV0ZXggJiYgcnRf bXV0ZXhfb3duZXIocGlfbXV0ZXgpID09IGN1cnJlbnQpCi0JCQlydF9tdXRleF91bmxvY2socGlf bXV0ZXgpOwotCX0gZWxzZSBpZiAocmV0ID09IC1FSU5UUikgeworCWlmIChyZXQgPT0gLUVJTlRS KSB7CiAJCS8qCiAJCSAqIFdlJ3ZlIGFscmVhZHkgYmVlbiByZXF1ZXVlZCwgYnV0IGNhbm5vdCBy ZXN0YXJ0IGJ5IGNhbGxpbmcKIAkJICogZnV0ZXhfbG9ja19waSgpIGRpcmVjdGx5LiBXZSBjb3Vs ZCByZXN0YXJ0IHRoaXMgc3lzY2FsbCwgYnV0CmRpZmYgLS1naXQgYS9rZXJuZWwvcHRyYWNlLmMg Yi9rZXJuZWwvcHRyYWNlLmMKaW5kZXggZjA3YzE0NDE2NzVjLi5mZDM5MDliODcxODggMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9wdHJhY2UuYworKysgYi9rZXJuZWwvcHRyYWNlLmMKQEAgLTE0OCwxMSAr MTQ4LDE3IEBAIHN0YXRpYyB2b2lkIHB0cmFjZV91bmZyZWV6ZV90cmFjZWQoc3RydWN0IHRhc2tf c3RydWN0ICp0YXNrKQogCiAJV0FSTl9PTighdGFzay0+cHRyYWNlIHx8IHRhc2stPnBhcmVudCAh PSBjdXJyZW50KTsKIAorCS8qCisJICogUFRSQUNFX0xJU1RFTiBjYW4gYWxsb3cgcHRyYWNlX3Ry YXBfbm90aWZ5IHRvIHdha2UgdXMgdXAgcmVtb3RlbHkuCisJICogUmVjaGVjayBzdGF0ZSB1bmRl ciB0aGUgbG9jayB0byBjbG9zZSB0aGlzIHJhY2UuCisJICovCiAJc3Bpbl9sb2NrX2lycSgmdGFz ay0+c2lnaGFuZC0+c2lnbG9jayk7Ci0JaWYgKF9fZmF0YWxfc2lnbmFsX3BlbmRpbmcodGFzaykp Ci0JCXdha2VfdXBfc3RhdGUodGFzaywgX19UQVNLX1RSQUNFRCk7Ci0JZWxzZQotCQl0YXNrLT5z dGF0ZSA9IFRBU0tfVFJBQ0VEOworCWlmICh0YXNrLT5zdGF0ZSA9PSBfX1RBU0tfVFJBQ0VEKSB7 CisJCWlmIChfX2ZhdGFsX3NpZ25hbF9wZW5kaW5nKHRhc2spKQorCQkJd2FrZV91cF9zdGF0ZSh0 YXNrLCBfX1RBU0tfVFJBQ0VEKTsKKwkJZWxzZQorCQkJdGFzay0+c3RhdGUgPSBUQVNLX1RSQUNF RDsKKwl9CiAJc3Bpbl91bmxvY2tfaXJxKCZ0YXNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKIH0KIApk aWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkLmMgYi9rZXJuZWwvc2NoZWQuYwppbmRleCBmZmEzMTkw ZGYxZWQuLjRiM2UxMmVjNWE2MCAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkLmMKKysrIGIva2Vy bmVsL3NjaGVkLmMKQEAgLTM2MTcsOCArMzYxNyw5IEBAIHZvaWQgY2FsY19sb2FkX2V4aXRfaWRs ZSh2b2lkKQogCXN0cnVjdCBycSAqdGhpc19ycSA9IHRoaXNfcnEoKTsKIAogCS8qCi0JICogSWYg d2UncmUgc3RpbGwgYmVmb3JlIHRoZSBzYW1wbGUgd2luZG93LCB3ZSdyZSBkb25lLgorCSAqIElm IHdlJ3JlIHN0aWxsIGJlZm9yZSB0aGUgcGVuZGluZyBzYW1wbGUgd2luZG93LCB3ZSdyZSBkb25l LgogCSAqLworCXRoaXNfcnEtPmNhbGNfbG9hZF91cGRhdGUgPSBjYWxjX2xvYWRfdXBkYXRlOwog CWlmICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aGlzX3JxLT5jYWxjX2xvYWRfdXBkYXRlKSkKIAkJ cmV0dXJuOwogCkBAIC0zNjI3LDcgKzM2MjgsNiBAQCB2b2lkIGNhbGNfbG9hZF9leGl0X2lkbGUo dm9pZCkKIAkgKiBhY2NvdW50ZWQgdGhyb3VnaCB0aGUgbm9oeiBhY2NvdW50aW5nLCBzbyBza2lw IHRoZSBlbnRpcmUgZGVhbCBhbmQKIAkgKiBzeW5jIHVwIGZvciB0aGUgbmV4dCB3aW5kb3cuCiAJ ICovCi0JdGhpc19ycS0+Y2FsY19sb2FkX3VwZGF0ZSA9IGNhbGNfbG9hZF91cGRhdGU7CiAJaWYg KHRpbWVfYmVmb3JlKGppZmZpZXMsIHRoaXNfcnEtPmNhbGNfbG9hZF91cGRhdGUgKyAxMCkpCiAJ CXRoaXNfcnEtPmNhbGNfbG9hZF91cGRhdGUgKz0gTE9BRF9GUkVROwogfQpkaWZmIC0tZ2l0IGEv a2VybmVsL3RyYWNlL3JpbmdfYnVmZmVyLmMgYi9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYwpp bmRleCAyYTZmODUzYzEyYjAuLmQ2ODk5YzQyZDQ5MSAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNl L3JpbmdfYnVmZmVyLmMKKysrIGIva2VybmVsL3RyYWNlL3JpbmdfYnVmZmVyLmMKQEAgLTI4Nzks MTEgKzI4NzksMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocmluZ19idWZmZXJfaXRlcl9yZXNldCk7 CiBpbnQgcmluZ19idWZmZXJfaXRlcl9lbXB0eShzdHJ1Y3QgcmluZ19idWZmZXJfaXRlciAqaXRl cikKIHsKIAlzdHJ1Y3QgcmluZ19idWZmZXJfcGVyX2NwdSAqY3B1X2J1ZmZlcjsKKwlzdHJ1Y3Qg YnVmZmVyX3BhZ2UgKnJlYWRlcjsKKwlzdHJ1Y3QgYnVmZmVyX3BhZ2UgKmhlYWRfcGFnZTsKKwlz dHJ1Y3QgYnVmZmVyX3BhZ2UgKmNvbW1pdF9wYWdlOworCXVuc2lnbmVkIGNvbW1pdDsKIAogCWNw dV9idWZmZXIgPSBpdGVyLT5jcHVfYnVmZmVyOwogCi0JcmV0dXJuIGl0ZXItPmhlYWRfcGFnZSA9 PSBjcHVfYnVmZmVyLT5jb21taXRfcGFnZSAmJgotCQlpdGVyLT5oZWFkID09IHJiX2NvbW1pdF9p bmRleChjcHVfYnVmZmVyKTsKKwkvKiBSZW1lbWJlciwgdHJhY2UgcmVjb3JkaW5nIGlzIG9mZiB3 aGVuIGl0ZXJhdG9yIGlzIGluIHVzZSAqLworCXJlYWRlciA9IGNwdV9idWZmZXItPnJlYWRlcl9w YWdlOworCWhlYWRfcGFnZSA9IGNwdV9idWZmZXItPmhlYWRfcGFnZTsKKwljb21taXRfcGFnZSA9 IGNwdV9idWZmZXItPmNvbW1pdF9wYWdlOworCWNvbW1pdCA9IHJiX3BhZ2VfY29tbWl0KGNvbW1p dF9wYWdlKTsKKworCXJldHVybiAoKGl0ZXItPmhlYWRfcGFnZSA9PSBjb21taXRfcGFnZSAmJiBp dGVyLT5oZWFkID09IGNvbW1pdCkgfHwKKwkJKGl0ZXItPmhlYWRfcGFnZSA9PSByZWFkZXIgJiYg Y29tbWl0X3BhZ2UgPT0gaGVhZF9wYWdlICYmCisJCSBoZWFkX3BhZ2UtPnJlYWQgPT0gY29tbWl0 ICYmCisJCSBpdGVyLT5oZWFkID09IHJiX3BhZ2VfY29tbWl0KGNwdV9idWZmZXItPnJlYWRlcl9w YWdlKSkpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwocmluZ19idWZmZXJfaXRlcl9lbXB0eSk7CiAK ZGlmZiAtLWdpdCBhL25ldC85cC9jbGllbnQuYyBiL25ldC85cC9jbGllbnQuYwppbmRleCBlOTU4 MTc4MDFmYzcuLjg3MTczYmIyNjQxMCAxMDA2NDQKLS0tIGEvbmV0LzlwL2NsaWVudC5jCisrKyBi L25ldC85cC9jbGllbnQuYwpAQCAtMjA1Niw2ICsyMDU2LDEwIEBAIGludCBwOV9jbGllbnRfcmVh ZGRpcihzdHJ1Y3QgcDlfZmlkICpmaWQsIGNoYXIgKmRhdGEsIHUzMiBjb3VudCwgdTY0IG9mZnNl dCkKIAkJdHJhY2VfOXBfcHJvdG9jb2xfZHVtcChjbG50LCByZXEtPnJjKTsKIAkJZ290byBmcmVl X2FuZF9lcnJvcjsKIAl9CisJaWYgKHJzaXplIDwgY291bnQpIHsKKwkJcHJfZXJyKCJib2d1cyBS UkVBRERJUiBjb3VudCAoJWQgPiAlZClcbiIsIGNvdW50LCByc2l6ZSk7CisJCWNvdW50ID0gcnNp emU7CisJfQogCiAJUDlfRFBSSU5USyhQOV9ERUJVR185UCwgIjw8PCBSUkVBRERJUiBjb3VudCAl ZFxuIiwgY291bnQpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9vdXRwdXQuYyBiL25ldC9p cHY0L2lwX291dHB1dC5jCmluZGV4IDAxM2Y1OWI4OWUyNy4uYzNhMmI4MDVkNmY1IDEwMDY0NAot LS0gYS9uZXQvaXB2NC9pcF9vdXRwdXQuYworKysgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYwpAQCAt ODM0LDcgKzgzNCw3IEBAIHN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAq c2ssCiAJY29yay0+bGVuZ3RoICs9IGxlbmd0aDsKIAlpZiAoKChsZW5ndGggPiBtdHUpIHx8IChz a2IgJiYgc2tiX2hhc19mcmFncyhza2IpKSkgJiYKIAkgICAgKHNrLT5za19wcm90b2NvbCA9PSBJ UFBST1RPX1VEUCkgJiYKLQkgICAgKHJ0LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfVUZP KSAmJiAhcnQtPmRzdC5oZWFkZXJfbGVuICYmCisJICAgIChydC0+ZHN0LmRldi0+ZmVhdHVyZXMg JiBORVRJRl9GX1VGTykgJiYgIWRzdF94ZnJtKCZydC0+ZHN0KSAmJgogCSAgICAoc2stPnNrX3R5 cGUgPT0gU09DS19ER1JBTSkpIHsKIAkJZXJyID0gaXBfdWZvX2FwcGVuZF9kYXRhKHNrLCBxdWV1 ZSwgZ2V0ZnJhZywgZnJvbSwgbGVuZ3RoLAogCQkJCQkgaGhfbGVuLCBmcmFnaGVhZGVybGVuLCB0 cmFuc2hkcmxlbiwKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfc25tcF9i YXNpYy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9zbm1wX2Jhc2ljLmMKaW5kZXggMjEz M2MzMGE0YTVmLi41ZTQwNzc1NzBhZWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9u Zl9uYXRfc25tcF9iYXNpYy5jCisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfc25tcF9i YXNpYy5jCkBAIC0xMjYxLDE2ICsxMjYxLDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZl9jb25u dHJhY2tfZXhwZWN0X3BvbGljeSBzbm1wX2V4cF9wb2xpY3kgPSB7CiAJLnRpbWVvdXQJPSAxODAs CiB9OwogCi1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgc25tcF9oZWxwZXIgX19y ZWFkX21vc3RseSA9IHsKLQkubWUJCQk9IFRISVNfTU9EVUxFLAotCS5oZWxwCQkJPSBoZWxwLAot CS5leHBlY3RfcG9saWN5CQk9ICZzbm1wX2V4cF9wb2xpY3ksCi0JLm5hbWUJCQk9ICJzbm1wIiwK LQkudHVwbGUuc3JjLmwzbnVtCT0gQUZfSU5FVCwKLQkudHVwbGUuc3JjLnUudWRwLnBvcnQJPSBj cHVfdG9fYmUxNihTTk1QX1BPUlQpLAotCS50dXBsZS5kc3QucHJvdG9udW0JPSBJUFBST1RPX1VE UCwKLX07Ci0KIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciBzbm1wX3RyYXBfaGVs cGVyIF9fcmVhZF9tb3N0bHkgPSB7CiAJLm1lCQkJPSBUSElTX01PRFVMRSwKIAkuaGVscAkJCT0g aGVscCwKQEAgLTEyODksMTcgKzEyNzksMTAgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tf aGVscGVyIHNubXBfdHJhcF9oZWxwZXIgX19yZWFkX21vc3RseSA9IHsKIAogc3RhdGljIGludCBf X2luaXQgbmZfbmF0X3NubXBfYmFzaWNfaW5pdCh2b2lkKQogewotCWludCByZXQgPSAwOwotCiAJ QlVHX09OKG5mX25hdF9zbm1wX2hvb2sgIT0gTlVMTCk7CiAJUkNVX0lOSVRfUE9JTlRFUihuZl9u YXRfc25tcF9ob29rLCBoZWxwKTsKIAotCXJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJfcmVnaXN0 ZXIoJnNubXBfdHJhcF9oZWxwZXIpOwotCWlmIChyZXQgPCAwKSB7Ci0JCW5mX2Nvbm50cmFja19o ZWxwZXJfdW5yZWdpc3Rlcigmc25tcF9oZWxwZXIpOwotCQlyZXR1cm4gcmV0OwotCX0KLQlyZXR1 cm4gcmV0OworCXJldHVybiBuZl9jb25udHJhY2tfaGVscGVyX3JlZ2lzdGVyKCZzbm1wX3RyYXBf aGVscGVyKTsKIH0KIAogc3RhdGljIHZvaWQgX19leGl0IG5mX25hdF9zbm1wX2Jhc2ljX2Zpbmko dm9pZCkKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9v dXRwdXQuYwppbmRleCA0Y2UzZTNmMzI4MDIuLmRkOGFjYTgwYjZmZSAxMDA2NDQKLS0tIGEvbmV0 L2lwdjYvaXA2X291dHB1dC5jCisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtMTM0Myw3 ICsxMzQzLDcgQEAgaW50IGlwNl9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAqc2ssIGludCBnZXRm cmFnKHZvaWQgKmZyb20sIGNoYXIgKnRvLAogCWlmICgoKGxlbmd0aCA+IG10dSkgfHwKIAkgICAg IChza2IgJiYgc2tiX2hhc19mcmFncyhza2IpKSkgJiYKIAkgICAgKHNrLT5za19wcm90b2NvbCA9 PSBJUFBST1RPX1VEUCkgJiYKLQkgICAgKHJ0LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0Zf VUZPKSAmJiAhcnQtPmRzdC5oZWFkZXJfbGVuICYmCisJICAgIChydC0+ZHN0LmRldi0+ZmVhdHVy ZXMgJiBORVRJRl9GX1VGTykgJiYgIWRzdF94ZnJtKCZydC0+ZHN0KSAmJgogCSAgICAoc2stPnNr X3R5cGUgPT0gU09DS19ER1JBTSkpIHsKIAkJZXJyID0gaXA2X3Vmb19hcHBlbmRfZGF0YShzaywg Z2V0ZnJhZywgZnJvbSwgbGVuZ3RoLAogCQkJCQkgIGhoX2xlbiwgZnJhZ2hlYWRlcmxlbiwgZXh0 aGRybGVuLApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMK aW5kZXggZDQwNTlmYTU5NTQ4Li5jZGE1Y2ZlOTJmNmIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3Jv dXRlLmMKKysrIGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtMjM4NCw2ICsyMzg0LDggQEAgc3RhdGlj IGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwKIAkJcnRtLT5ydG1fdHlwZSA9IFJU Tl9VTlJFQUNIQUJMRTsKIAllbHNlIGlmIChydC0+cnQ2aV9mbGFncyZSVEZfTE9DQUwpCiAJCXJ0 bS0+cnRtX3R5cGUgPSBSVE5fTE9DQUw7CisJZWxzZSBpZiAocnQtPnJ0NmlfZmxhZ3MgJiBSVEZf QU5ZQ0FTVCkKKwkJcnRtLT5ydG1fdHlwZSA9IFJUTl9BTllDQVNUOwogCWVsc2UgaWYgKHJ0LT5y dDZpX2RldiAmJiAocnQtPnJ0NmlfZGV2LT5mbGFncyZJRkZfTE9PUEJBQ0spKQogCQlydG0tPnJ0 bV90eXBlID0gUlROX0xPQ0FMOwogCWVsc2UKZGlmZiAtLWdpdCBhL25ldC9rZXkvYWZfa2V5LmMg Yi9uZXQva2V5L2FmX2tleS5jCmluZGV4IDg2MzZmMTBjM2ZmOC4uMWIxOWQ2YTQ2NDZmIDEwMDY0 NAotLS0gYS9uZXQva2V5L2FmX2tleS5jCisrKyBiL25ldC9rZXkvYWZfa2V5LmMKQEAgLTYzLDYg KzYzLDcgQEAgc3RydWN0IHBma2V5X3NvY2sgewogCQl9IHU7CiAJCXN0cnVjdCBza19idWZmCSpz a2I7CiAJfSBkdW1wOworCXN0cnVjdCBtdXRleCBkdW1wX2xvY2s7CiB9OwogCiBzdGF0aWMgaW5s aW5lIHN0cnVjdCBwZmtleV9zb2NrICpwZmtleV9zayhzdHJ1Y3Qgc29jayAqc2spCkBAIC0xMzks NiArMTQwLDcgQEAgc3RhdGljIGludCBwZmtleV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1 Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsCiB7CiAJc3RydWN0IG5ldG5zX3Bma2V5ICpu ZXRfcGZrZXkgPSBuZXRfZ2VuZXJpYyhuZXQsIHBma2V5X25ldF9pZCk7CiAJc3RydWN0IHNvY2sg KnNrOworCXN0cnVjdCBwZmtleV9zb2NrICpwZms7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJs ZShDQVBfTkVUX0FETUlOKSkKQEAgLTE1Myw2ICsxNTUsOSBAQCBzdGF0aWMgaW50IHBma2V5X2Ny ZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCwK IAlpZiAoc2sgPT0gTlVMTCkKIAkJZ290byBvdXQ7CiAKKwlwZmsgPSBwZmtleV9zayhzayk7CisJ bXV0ZXhfaW5pdCgmcGZrLT5kdW1wX2xvY2spOworCiAJc29jay0+b3BzID0gJnBma2V5X29wczsK IAlzb2NrX2luaXRfZGF0YShzb2NrLCBzayk7CiAKQEAgLTI4MywxMyArMjg4LDIzIEBAIHN0YXRp YyBpbnQgcGZrZXlfZG9fZHVtcChzdHJ1Y3QgcGZrZXlfc29jayAqcGZrKQogCXN0cnVjdCBzYWRi X21zZyAqaGRyOwogCWludCByYzsKIAorCW11dGV4X2xvY2soJnBmay0+ZHVtcF9sb2NrKTsKKwlp ZiAoIXBmay0+ZHVtcC5kdW1wKSB7CisJCXJjID0gMDsKKwkJZ290byBvdXQ7CisJfQorCiAJcmMg PSBwZmstPmR1bXAuZHVtcChwZmspOwotCWlmIChyYyA9PSAtRU5PQlVGUykKLQkJcmV0dXJuIDA7 CisJaWYgKHJjID09IC1FTk9CVUZTKSB7CisJCXJjID0gMDsKKwkJZ290byBvdXQ7CisJfQogCiAJ aWYgKHBmay0+ZHVtcC5za2IpIHsKLQkJaWYgKCFwZmtleV9jYW5fZHVtcCgmcGZrLT5zaykpCi0J CQlyZXR1cm4gMDsKKwkJaWYgKCFwZmtleV9jYW5fZHVtcCgmcGZrLT5zaykpIHsKKwkJCXJjID0g MDsKKwkJCWdvdG8gb3V0OworCQl9CiAKIAkJaGRyID0gKHN0cnVjdCBzYWRiX21zZyAqKSBwZmst PmR1bXAuc2tiLT5kYXRhOwogCQloZHItPnNhZGJfbXNnX3NlcSA9IDA7CkBAIC0zMDAsNiArMzE1 LDkgQEAgc3RhdGljIGludCBwZmtleV9kb19kdW1wKHN0cnVjdCBwZmtleV9zb2NrICpwZmspCiAJ fQogCiAJcGZrZXlfdGVybWluYXRlX2R1bXAocGZrKTsKKworb3V0OgorCW11dGV4X3VubG9jaygm cGZrLT5kdW1wX2xvY2spOwogCXJldHVybiByYzsKIH0KIApAQCAtMTc5MSwxOCArMTgwOSwyNCBA QCBzdGF0aWMgaW50IHBma2V5X2R1bXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBjb25zdCBzdHJ1Y3Qgc2FkYl9tcwogCXU4IHByb3RvOwogCXN0cnVjdCBwZmtleV9zb2Nr ICpwZmsgPSBwZmtleV9zayhzayk7CiAKLQlpZiAocGZrLT5kdW1wLmR1bXAgIT0gTlVMTCkKKwlt dXRleF9sb2NrKCZwZmstPmR1bXBfbG9jayk7CisJaWYgKHBmay0+ZHVtcC5kdW1wICE9IE5VTEwp IHsKKwkJbXV0ZXhfdW5sb2NrKCZwZmstPmR1bXBfbG9jayk7CiAJCXJldHVybiAtRUJVU1k7CisJ fQogCiAJcHJvdG8gPSBwZmtleV9zYXR5cGUycHJvdG8oaGRyLT5zYWRiX21zZ19zYXR5cGUpOwot CWlmIChwcm90byA9PSAwKQorCWlmIChwcm90byA9PSAwKSB7CisJCW11dGV4X3VubG9jaygmcGZr LT5kdW1wX2xvY2spOwogCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKIAlwZmstPmR1bXAubXNnX3Zl cnNpb24gPSBoZHItPnNhZGJfbXNnX3ZlcnNpb247CiAJcGZrLT5kdW1wLm1zZ19waWQgPSBoZHIt PnNhZGJfbXNnX3BpZDsKIAlwZmstPmR1bXAuZHVtcCA9IHBma2V5X2R1bXBfc2E7CiAJcGZrLT5k dW1wLmRvbmUgPSBwZmtleV9kdW1wX3NhX2RvbmU7CiAJeGZybV9zdGF0ZV93YWxrX2luaXQoJnBm ay0+ZHVtcC51LnN0YXRlLCBwcm90byk7CisJbXV0ZXhfdW5sb2NrKCZwZmstPmR1bXBfbG9jayk7 CiAKIAlyZXR1cm4gcGZrZXlfZG9fZHVtcChwZmspOwogfQpAQCAtMjY2MSwxNCArMjY4NSwxOCBA QCBzdGF0aWMgaW50IHBma2V5X3NwZGR1bXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBjb25zdCBzdHJ1Y3Qgc2FkYgogewogCXN0cnVjdCBwZmtleV9zb2NrICpwZmsgPSBw ZmtleV9zayhzayk7CiAKLQlpZiAocGZrLT5kdW1wLmR1bXAgIT0gTlVMTCkKKwltdXRleF9sb2Nr KCZwZmstPmR1bXBfbG9jayk7CisJaWYgKHBmay0+ZHVtcC5kdW1wICE9IE5VTEwpIHsKKwkJbXV0 ZXhfdW5sb2NrKCZwZmstPmR1bXBfbG9jayk7CiAJCXJldHVybiAtRUJVU1k7CisJfQogCiAJcGZr LT5kdW1wLm1zZ192ZXJzaW9uID0gaGRyLT5zYWRiX21zZ192ZXJzaW9uOwogCXBmay0+ZHVtcC5t c2dfcGlkID0gaGRyLT5zYWRiX21zZ19waWQ7CiAJcGZrLT5kdW1wLmR1bXAgPSBwZmtleV9kdW1w X3NwOwogCXBmay0+ZHVtcC5kb25lID0gcGZrZXlfZHVtcF9zcF9kb25lOwogCXhmcm1fcG9saWN5 X3dhbGtfaW5pdCgmcGZrLT5kdW1wLnUucG9saWN5LCBYRlJNX1BPTElDWV9UWVBFX01BSU4pOwor CW11dGV4X3VubG9jaygmcGZrLT5kdW1wX2xvY2spOwogCiAJcmV0dXJuIHBma2V5X2RvX2R1bXAo cGZrKTsKIH0KZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5jIGIvbmV0L2wydHAvbDJ0 cF9jb3JlLmMKaW5kZXggNzUwMWIyMmI5YzU5Li4zOTU0YjE4ZjQyZWUgMTAwNjQ0Ci0tLSBhL25l dC9sMnRwL2wydHBfY29yZS5jCisrKyBiL25ldC9sMnRwL2wydHBfY29yZS5jCkBAIC0yMjUsNyAr MjI1LDU4IEBAIHN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9maW5kKHN0cnVjdCBu ZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChs MnRwX3Nlc3Npb25fZmluZCk7CiAKLXN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9m aW5kX250aChzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgaW50IG50aCkKKy8qIExpa2UgbDJ0 cF9zZXNzaW9uX2ZpbmQoKSBidXQgdGFrZXMgYSByZWZlcmVuY2Ugb24gdGhlIHJldHVybmVkIHNl c3Npb24uCisgKiBPcHRpb25hbGx5IGNhbGxzIHNlc3Npb24tPnJlZigpIHRvbyBpZiBkb19yZWYg aXMgdHJ1ZS4KKyAqLworc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2dldChzdHJ1 Y3QgbmV0ICpuZXQsCisJCQkJICAgICAgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsCisJCQkJ ICAgICAgdTMyIHNlc3Npb25faWQsIGJvb2wgZG9fcmVmKQoreworCXN0cnVjdCBobGlzdF9oZWFk ICpzZXNzaW9uX2xpc3Q7CisJc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbjsKKwlzdHJ1Y3Qg aGxpc3Rfbm9kZSAqd2FsazsKKworCWlmICghdHVubmVsKSB7CisJCXN0cnVjdCBsMnRwX25ldCAq cG4gPSBsMnRwX3Blcm5ldChuZXQpOworCisJCXNlc3Npb25fbGlzdCA9IGwydHBfc2Vzc2lvbl9p ZF9oYXNoXzIocG4sIHNlc3Npb25faWQpOworCisJCXJjdV9yZWFkX2xvY2tfYmgoKTsKKwkJaGxp c3RfZm9yX2VhY2hfZW50cnlfcmN1KHNlc3Npb24sIHdhbGssIHNlc3Npb25fbGlzdCwgZ2xvYmFs X2hsaXN0KSB7CisJCQlpZiAoc2Vzc2lvbi0+c2Vzc2lvbl9pZCA9PSBzZXNzaW9uX2lkKSB7CisJ CQkJbDJ0cF9zZXNzaW9uX2luY19yZWZjb3VudChzZXNzaW9uKTsKKwkJCQlpZiAoZG9fcmVmICYm IHNlc3Npb24tPnJlZikKKwkJCQkJc2Vzc2lvbi0+cmVmKHNlc3Npb24pOworCQkJCXJjdV9yZWFk X3VubG9ja19iaCgpOworCisJCQkJcmV0dXJuIHNlc3Npb247CisJCQl9CisJCX0KKwkJcmN1X3Jl YWRfdW5sb2NrX2JoKCk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJc2Vzc2lvbl9saXN0ID0g bDJ0cF9zZXNzaW9uX2lkX2hhc2godHVubmVsLCBzZXNzaW9uX2lkKTsKKwlyZWFkX2xvY2tfYmgo JnR1bm5lbC0+aGxpc3RfbG9jayk7CisJaGxpc3RfZm9yX2VhY2hfZW50cnkoc2Vzc2lvbiwgd2Fs aywgc2Vzc2lvbl9saXN0LCBobGlzdCkgeworCQlpZiAoc2Vzc2lvbi0+c2Vzc2lvbl9pZCA9PSBz ZXNzaW9uX2lkKSB7CisJCQlsMnRwX3Nlc3Npb25faW5jX3JlZmNvdW50KHNlc3Npb24pOworCQkJ aWYgKGRvX3JlZiAmJiBzZXNzaW9uLT5yZWYpCisJCQkJc2Vzc2lvbi0+cmVmKHNlc3Npb24pOwor CQkJcmVhZF91bmxvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CisKKwkJCXJldHVybiBzZXNz aW9uOworCQl9CisJfQorCXJlYWRfdW5sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCisJ cmV0dXJuIE5VTEw7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChsMnRwX3Nlc3Npb25fZ2V0KTsKKwor c3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2dldF9udGgoc3RydWN0IGwydHBfdHVu bmVsICp0dW5uZWwsIGludCBudGgsCisJCQkJCSAgYm9vbCBkb19yZWYpCiB7CiAJaW50IGhhc2g7 CiAJc3RydWN0IGhsaXN0X25vZGUgKndhbGs7CkBAIC0yMzYsNiArMjg3LDkgQEAgc3RydWN0IGwy dHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVu bmVsLCBpbnQgbnRoKQogCWZvciAoaGFzaCA9IDA7IGhhc2ggPCBMMlRQX0hBU0hfU0laRTsgaGFz aCsrKSB7CiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHNlc3Npb24sIHdhbGssICZ0dW5uZWwtPnNl c3Npb25faGxpc3RbaGFzaF0sIGhsaXN0KSB7CiAJCQlpZiAoKytjb3VudCA+IG50aCkgeworCQkJ CWwydHBfc2Vzc2lvbl9pbmNfcmVmY291bnQoc2Vzc2lvbik7CisJCQkJaWYgKGRvX3JlZiAmJiBz ZXNzaW9uLT5yZWYpCisJCQkJCXNlc3Npb24tPnJlZihzZXNzaW9uKTsKIAkJCQlyZWFkX3VubG9j a19iaCgmdHVubmVsLT5obGlzdF9sb2NrKTsKIAkJCQlyZXR1cm4gc2Vzc2lvbjsKIAkJCX0KQEAg LTI0NiwxMiArMzAwLDEzIEBAIHN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9maW5k X250aChzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgaW50IG50aCkKIAogCXJldHVybiBOVUxM OwogfQotRVhQT1JUX1NZTUJPTF9HUEwobDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKTsKK0VYUE9SVF9T WU1CT0xfR1BMKGwydHBfc2Vzc2lvbl9nZXRfbnRoKTsKIAogLyogTG9va3VwIGEgc2Vzc2lvbiBi eSBpbnRlcmZhY2UgbmFtZS4KICAqIFRoaXMgaXMgdmVyeSBpbmVmZmljaWVudCBidXQgaXMgb25s eSB1c2VkIGJ5IG1hbmFnZW1lbnQgaW50ZXJmYWNlcy4KICAqLwotc3RydWN0IGwydHBfc2Vzc2lv biAqbDJ0cF9zZXNzaW9uX2ZpbmRfYnlfaWZuYW1lKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqaWZu YW1lKQorc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2dldF9ieV9pZm5hbWUoc3Ry dWN0IG5ldCAqbmV0LCBjaGFyICppZm5hbWUsCisJCQkJCQlib29sIGRvX3JlZikKIHsKIAlzdHJ1 Y3QgbDJ0cF9uZXQgKnBuID0gbDJ0cF9wZXJuZXQobmV0KTsKIAlpbnQgaGFzaDsKQEAgLTI2Miw3 ICszMTcsMTEgQEAgc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2ZpbmRfYnlfaWZu YW1lKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqaWZuYW1lKQogCWZvciAoaGFzaCA9IDA7IGhhc2gg PCBMMlRQX0hBU0hfU0laRV8yOyBoYXNoKyspIHsKIAkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1 KHNlc3Npb24sIHdhbGssICZwbi0+bDJ0cF9zZXNzaW9uX2hsaXN0W2hhc2hdLCBnbG9iYWxfaGxp c3QpIHsKIAkJCWlmICghc3RyY21wKHNlc3Npb24tPmlmbmFtZSwgaWZuYW1lKSkgeworCQkJCWwy dHBfc2Vzc2lvbl9pbmNfcmVmY291bnQoc2Vzc2lvbik7CisJCQkJaWYgKGRvX3JlZiAmJiBzZXNz aW9uLT5yZWYpCisJCQkJCXNlc3Npb24tPnJlZihzZXNzaW9uKTsKIAkJCQlyY3VfcmVhZF91bmxv Y2tfYmgoKTsKKwogCQkJCXJldHVybiBzZXNzaW9uOwogCQkJfQogCQl9CkBAIC0yNzIsNyArMzMx LDUwIEBAIHN0cnVjdCBsMnRwX3Nlc3Npb24gKmwydHBfc2Vzc2lvbl9maW5kX2J5X2lmbmFtZShz dHJ1Y3QgbmV0ICpuZXQsIGNoYXIgKmlmbmFtZSkKIAogCXJldHVybiBOVUxMOwogfQotRVhQT1JU X1NZTUJPTF9HUEwobDJ0cF9zZXNzaW9uX2ZpbmRfYnlfaWZuYW1lKTsKK0VYUE9SVF9TWU1CT0xf R1BMKGwydHBfc2Vzc2lvbl9nZXRfYnlfaWZuYW1lKTsKKworc3RhdGljIGludCBsMnRwX3Nlc3Np b25fYWRkX3RvX3R1bm5lbChzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKKwkJCQkgICAgICBz dHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uKQoreworCXN0cnVjdCBsMnRwX3Nlc3Npb24gKnNl c3Npb25fd2FsazsKKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqZ19oZWFkOworCXN0cnVjdCBobGlzdF9o ZWFkICpoZWFkOworCXN0cnVjdCBsMnRwX25ldCAqcG47CisJc3RydWN0IGhsaXN0X25vZGUgKndh bGs7CisKKwloZWFkID0gbDJ0cF9zZXNzaW9uX2lkX2hhc2godHVubmVsLCBzZXNzaW9uLT5zZXNz aW9uX2lkKTsKKworCXdyaXRlX2xvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CisJaGxpc3Rf Zm9yX2VhY2hfZW50cnkoc2Vzc2lvbl93YWxrLCB3YWxrLCBoZWFkLCBobGlzdCkKKwkJaWYgKHNl c3Npb25fd2Fsay0+c2Vzc2lvbl9pZCA9PSBzZXNzaW9uLT5zZXNzaW9uX2lkKQorCQkJZ290byBl eGlzdDsKKworCWlmICh0dW5uZWwtPnZlcnNpb24gPT0gTDJUUF9IRFJfVkVSXzMpIHsKKwkJcG4g PSBsMnRwX3Blcm5ldCh0dW5uZWwtPmwydHBfbmV0KTsKKwkJZ19oZWFkID0gbDJ0cF9zZXNzaW9u X2lkX2hhc2hfMihsMnRwX3Blcm5ldCh0dW5uZWwtPmwydHBfbmV0KSwKKwkJCQkJCXNlc3Npb24t PnNlc3Npb25faWQpOworCisJCXNwaW5fbG9ja19iaCgmcG4tPmwydHBfc2Vzc2lvbl9obGlzdF9s b2NrKTsKKwkJaGxpc3RfZm9yX2VhY2hfZW50cnkoc2Vzc2lvbl93YWxrLCB3YWxrLCBnX2hlYWQs IGdsb2JhbF9obGlzdCkKKwkJCWlmIChzZXNzaW9uX3dhbGstPnNlc3Npb25faWQgPT0gc2Vzc2lv bi0+c2Vzc2lvbl9pZCkKKwkJCQlnb3RvIGV4aXN0X2dsb2I7CisKKwkJaGxpc3RfYWRkX2hlYWRf cmN1KCZzZXNzaW9uLT5nbG9iYWxfaGxpc3QsIGdfaGVhZCk7CisJCXNwaW5fdW5sb2NrX2JoKCZw bi0+bDJ0cF9zZXNzaW9uX2hsaXN0X2xvY2spOworCX0KKworCWhsaXN0X2FkZF9oZWFkKCZzZXNz aW9uLT5obGlzdCwgaGVhZCk7CisJd3JpdGVfdW5sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2sp OworCisJcmV0dXJuIDA7CisKK2V4aXN0X2dsb2I6CisJc3Bpbl91bmxvY2tfYmgoJnBuLT5sMnRw X3Nlc3Npb25faGxpc3RfbG9jayk7CitleGlzdDoKKwl3cml0ZV91bmxvY2tfYmgoJnR1bm5lbC0+ aGxpc3RfbG9jayk7CisKKwlyZXR1cm4gLUVFWElTVDsKK30KIAogLyogTG9va3VwIGEgdHVubmVs IGJ5IGlkCiAgKi8KQEAgLTUyNCw2ICs2MjYsOSBAQCBzdGF0aWMgaW5saW5lIGludCBsMnRwX3Zl cmlmeV91ZHBfY2hlY2tzdW0oc3RydWN0IHNvY2sgKnNrLAogICogYSBkYXRhIChub3QgY29udHJv bCkgZnJhbWUgYmVmb3JlIGNvbWluZyBoZXJlLiBGaWVsZHMgdXAgdG8gdGhlCiAgKiBzZXNzaW9u LWlkIGhhdmUgYWxyZWFkeSBiZWVuIHBhcnNlZCBhbmQgcHRyIHBvaW50cyB0byB0aGUgZGF0YQog ICogYWZ0ZXIgdGhlIHNlc3Npb24taWQuCisgKgorICogc2Vzc2lvbi0+cmVmKCkgbXVzdCBoYXZl IGJlZW4gY2FsbGVkIHByaW9yIHRvIGwydHBfcmVjdl9jb21tb24oKS4KKyAqIHNlc3Npb24tPmRl cmVmKCkgd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseSBhZnRlciBza2IgaXMgcHJvY2Vzc2Vk LgogICovCiB2b2lkIGwydHBfcmVjdl9jb21tb24oc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lv biwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICAgICAgdW5zaWduZWQgY2hhciAqcHRyLCB1bnNp Z25lZCBjaGFyICpvcHRyLCB1MTYgaGRyZmxhZ3MsCkBAIC01MzMsMTQgKzYzOCw2IEBAIHZvaWQg bDJ0cF9yZWN2X2NvbW1vbihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiLAogCWludCBvZmZzZXQ7CiAJdTMyIG5zLCBucjsKIAotCS8qIFRoZSByZWYgY291 bnQgaXMgaW5jcmVhc2VkIHNpbmNlIHdlIG5vdyBob2xkIGEgcG9pbnRlciB0bwotCSAqIHRoZSBz ZXNzaW9uLiBUYWtlIGNhcmUgdG8gZGVjcmVtZW50IHRoZSByZWZjbnQgd2hlbiBleGl0aW5nCi0J ICogdGhpcyBmdW5jdGlvbiBmcm9tIG5vdyBvbi4uLgotCSAqLwotCWwydHBfc2Vzc2lvbl9pbmNf cmVmY291bnQoc2Vzc2lvbik7Ci0JaWYgKHNlc3Npb24tPnJlZikKLQkJKCpzZXNzaW9uLT5yZWYp KHNlc3Npb24pOwotCiAJLyogUGFyc2UgYW5kIGNoZWNrIG9wdGlvbmFsIGNvb2tpZSAqLwogCWlm IChzZXNzaW9uLT5wZWVyX2Nvb2tpZV9sZW4gPiAwKSB7CiAJCWlmIChtZW1jbXAocHRyLCAmc2Vz c2lvbi0+cGVlcl9jb29raWVbMF0sIHNlc3Npb24tPnBlZXJfY29va2llX2xlbikpIHsKQEAgLTcx MSw4ICs4MDgsNiBAQCB2b2lkIGwydHBfcmVjdl9jb21tb24oc3RydWN0IGwydHBfc2Vzc2lvbiAq c2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkvKiBUcnkgdG8gZGVxdWV1ZSBhcyBtYW55 IHNrYnMgZnJvbSByZW9yZGVyX3EgYXMgd2UgY2FuLiAqLwogCWwydHBfcmVjdl9kZXF1ZXVlKHNl c3Npb24pOwogCi0JbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKLQogCXJldHVy bjsKIAogZGlzY2FyZDoKQEAgLTcyMSw4ICs4MTYsNiBAQCB2b2lkIGwydHBfcmVjdl9jb21tb24o c3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWlm IChzZXNzaW9uLT5kZXJlZikKIAkJKCpzZXNzaW9uLT5kZXJlZikoc2Vzc2lvbik7Ci0KLQlsMnRw X3Nlc3Npb25fZGVjX3JlZmNvdW50KHNlc3Npb24pOwogfQogRVhQT1JUX1NZTUJPTChsMnRwX3Jl Y3ZfY29tbW9uKTsKIApAQCAtODE4LDggKzkxMSwxNCBAQCBzdGF0aWMgaW50IGwydHBfdWRwX3Jl Y3ZfY29yZShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwK IAl9CiAKIAkvKiBGaW5kIHRoZSBzZXNzaW9uIGNvbnRleHQgKi8KLQlzZXNzaW9uID0gbDJ0cF9z ZXNzaW9uX2ZpbmQodHVubmVsLT5sMnRwX25ldCwgdHVubmVsLCBzZXNzaW9uX2lkKTsKKwlzZXNz aW9uID0gbDJ0cF9zZXNzaW9uX2dldCh0dW5uZWwtPmwydHBfbmV0LCB0dW5uZWwsIHNlc3Npb25f aWQsIHRydWUpOwogCWlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+cmVjdl9za2IpIHsKKwkJaWYg KHNlc3Npb24pIHsKKwkJCWlmIChzZXNzaW9uLT5kZXJlZikKKwkJCQlzZXNzaW9uLT5kZXJlZihz ZXNzaW9uKTsKKwkJCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CisJCX0KKwog CQkvKiBOb3QgZm91bmQ/IFBhc3MgdG8gdXNlcnNwYWNlIHRvIGRlYWwgd2l0aCAqLwogCQlQUklO VEsodHVubmVsLT5kZWJ1ZywgTDJUUF9NU0dfREFUQSwgS0VSTl9JTkZPLAogCQkgICAgICAgIiVz OiBubyBzZXNzaW9uIGZvdW5kICgldS8ldSkuIFBhc3NpbmcgdXAuXG4iLApAQCAtODI4LDYgKzky Nyw3IEBAIHN0YXRpYyBpbnQgbDJ0cF91ZHBfcmVjdl9jb3JlKHN0cnVjdCBsMnRwX3R1bm5lbCAq dHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCX0KIAogCWwydHBfcmVjdl9jb21tb24oc2Vz c2lvbiwgc2tiLCBwdHIsIG9wdHIsIGhkcmZsYWdzLCBsZW5ndGgsIHBheWxvYWRfaG9vayk7CisJ bDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKIAogCXJldHVybiAwOwogCkBAIC0x NTY4LDYgKzE2NjgsNyBAQCBzdGF0aWMgdm9pZCBsMnRwX3Nlc3Npb25fc2V0X2hlYWRlcl9sZW4o c3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50IHZlcnNpbwogc3RydWN0IGwydHBfc2Vz c2lvbiAqbDJ0cF9zZXNzaW9uX2NyZWF0ZShpbnQgcHJpdl9zaXplLCBzdHJ1Y3QgbDJ0cF90dW5u ZWwgKnR1bm5lbCwgdTMyIHNlc3Npb25faWQsIHUzMiBwZWVyX3Nlc3Npb25faWQsIHN0cnVjdCBs MnRwX3Nlc3Npb25fY2ZnICpjZmcpCiB7CiAJc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbjsK KwlpbnQgZXJyOwogCiAJc2Vzc2lvbiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBsMnRwX3Nlc3Np b24pICsgcHJpdl9zaXplLCBHRlBfS0VSTkVMKTsKIAlpZiAoc2Vzc2lvbiAhPSBOVUxMKSB7CkBA IC0xNjE0LDYgKzE3MTUsMTMgQEAgc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2Ny ZWF0ZShpbnQgcHJpdl9zaXplLCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm4KIAogCQlsMnRwX3Nl c3Npb25fc2V0X2hlYWRlcl9sZW4oc2Vzc2lvbiwgdHVubmVsLT52ZXJzaW9uKTsKIAorCQllcnIg PSBsMnRwX3Nlc3Npb25fYWRkX3RvX3R1bm5lbCh0dW5uZWwsIHNlc3Npb24pOworCQlpZiAoZXJy KSB7CisJCQlrZnJlZShzZXNzaW9uKTsKKworCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKKwkJfQor CiAJCS8qIEJ1bXAgdGhlIHJlZmVyZW5jZSBjb3VudC4gVGhlIHNlc3Npb24gY29udGV4dCBpcyBk ZWxldGVkCiAJCSAqIG9ubHkgd2hlbiB0aGlzIGRyb3BzIHRvIHplcm8uCiAJCSAqLwpAQCAtMTYy MywyOCArMTczMSwxNCBAQCBzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpsMnRwX3Nlc3Npb25fY3JlYXRl KGludCBwcml2X3NpemUsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubgogCQkvKiBFbnN1cmUgdHVu bmVsIHNvY2tldCBpc24ndCBkZWxldGVkICovCiAJCXNvY2tfaG9sZCh0dW5uZWwtPnNvY2spOwog Ci0JCS8qIEFkZCBzZXNzaW9uIHRvIHRoZSB0dW5uZWwncyBoYXNoIGxpc3QgKi8KLQkJd3JpdGVf bG9ja19iaCgmdHVubmVsLT5obGlzdF9sb2NrKTsKLQkJaGxpc3RfYWRkX2hlYWQoJnNlc3Npb24t PmhsaXN0LAotCQkJICAgICAgIGwydHBfc2Vzc2lvbl9pZF9oYXNoKHR1bm5lbCwgc2Vzc2lvbl9p ZCkpOwotCQl3cml0ZV91bmxvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7Ci0KLQkJLyogQW5k IHRvIHRoZSBnbG9iYWwgc2Vzc2lvbiBsaXN0IGlmIEwyVFB2MyAqLwotCQlpZiAodHVubmVsLT52 ZXJzaW9uICE9IEwyVFBfSERSX1ZFUl8yKSB7Ci0JCQlzdHJ1Y3QgbDJ0cF9uZXQgKnBuID0gbDJ0 cF9wZXJuZXQodHVubmVsLT5sMnRwX25ldCk7Ci0KLQkJCXNwaW5fbG9ja19iaCgmcG4tPmwydHBf c2Vzc2lvbl9obGlzdF9sb2NrKTsKLQkJCWhsaXN0X2FkZF9oZWFkX3JjdSgmc2Vzc2lvbi0+Z2xv YmFsX2hsaXN0LAotCQkJCQkgICBsMnRwX3Nlc3Npb25faWRfaGFzaF8yKHBuLCBzZXNzaW9uX2lk KSk7Ci0JCQlzcGluX3VubG9ja19iaCgmcG4tPmwydHBfc2Vzc2lvbl9obGlzdF9sb2NrKTsKLQkJ fQotCiAJCS8qIElnbm9yZSBtYW5hZ2VtZW50IHNlc3Npb24gaW4gc2Vzc2lvbiBjb3VudCB2YWx1 ZSAqLwogCQlpZiAoc2Vzc2lvbi0+c2Vzc2lvbl9pZCAhPSAwKQogCQkJYXRvbWljX2luYygmbDJ0 cF9zZXNzaW9uX2NvdW50KTsKKworCQlyZXR1cm4gc2Vzc2lvbjsKIAl9CiAKLQlyZXR1cm4gc2Vz c2lvbjsKKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGwy dHBfc2Vzc2lvbl9jcmVhdGUpOwogCmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaCBi L25ldC9sMnRwL2wydHBfY29yZS5oCmluZGV4IGFkNmY3M2QxZTM0YS4uMWNhZjIxZTExODIyIDEw MDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaAorKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUu aApAQCAtMjIyLDkgKzIyMiwxNCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBsMnRwX3R1bm5lbCAq bDJ0cF9zb2NrX3RvX3R1bm5lbChzdHJ1Y3Qgc29jayAqc2spCiAJcmV0dXJuIHR1bm5lbDsKIH0K IAorc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2dldChzdHJ1Y3QgbmV0ICpuZXQs CisJCQkJICAgICAgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsCisJCQkJICAgICAgdTMyIHNl c3Npb25faWQsIGJvb2wgZG9fcmVmKTsKIGV4dGVybiBzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpsMnRw X3Nlc3Npb25fZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVs LCB1MzIgc2Vzc2lvbl9pZCk7Ci1leHRlcm4gc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNz aW9uX2ZpbmRfbnRoKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBpbnQgbnRoKTsKLWV4dGVy biBzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpsMnRwX3Nlc3Npb25fZmluZF9ieV9pZm5hbWUoc3RydWN0 IG5ldCAqbmV0LCBjaGFyICppZm5hbWUpOworc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNz aW9uX2dldF9udGgoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIGludCBudGgsCisJCQkJCSAg Ym9vbCBkb19yZWYpOworc3RydWN0IGwydHBfc2Vzc2lvbiAqbDJ0cF9zZXNzaW9uX2dldF9ieV9p Zm5hbWUoc3RydWN0IG5ldCAqbmV0LCBjaGFyICppZm5hbWUsCisJCQkJCQlib29sIGRvX3JlZik7 CiBleHRlcm4gc3RydWN0IGwydHBfdHVubmVsICpsMnRwX3R1bm5lbF9maW5kKHN0cnVjdCBuZXQg Km5ldCwgdTMyIHR1bm5lbF9pZCk7CiBleHRlcm4gc3RydWN0IGwydHBfdHVubmVsICpsMnRwX3R1 bm5lbF9maW5kX250aChzdHJ1Y3QgbmV0ICpuZXQsIGludCBudGgpOwogCmRpZmYgLS1naXQgYS9u ZXQvbDJ0cC9sMnRwX2RlYnVnZnMuYyBiL25ldC9sMnRwL2wydHBfZGVidWdmcy5jCmluZGV4IDc2 MTMwMTM0YmZhNi4uOGJiMGQ1NmM4MjJiIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2RlYnVn ZnMuYworKysgYi9uZXQvbDJ0cC9sMnRwX2RlYnVnZnMuYwpAQCAtNTEsNyArNTEsNyBAQCBzdGF0 aWMgdm9pZCBsMnRwX2Rmc19uZXh0X3R1bm5lbChzdHJ1Y3QgbDJ0cF9kZnNfc2VxX2RhdGEgKnBk KQogCiBzdGF0aWMgdm9pZCBsMnRwX2Rmc19uZXh0X3Nlc3Npb24oc3RydWN0IGwydHBfZGZzX3Nl cV9kYXRhICpwZCkKIHsKLQlwZC0+c2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9maW5kX250aChwZC0+ dHVubmVsLCBwZC0+c2Vzc2lvbl9pZHgpOworCXBkLT5zZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2dl dF9udGgocGQtPnR1bm5lbCwgcGQtPnNlc3Npb25faWR4LCB0cnVlKTsKIAlwZC0+c2Vzc2lvbl9p ZHgrKzsKIAogCWlmIChwZC0+c2Vzc2lvbiA9PSBOVUxMKSB7CkBAIC0yMjcsMTAgKzIyNywxNCBA QCBzdGF0aWMgaW50IGwydHBfZGZzX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dikKIAl9CiAKIAkvKiBTaG93IHRoZSB0dW5uZWwgb3Igc2Vzc2lvbiBjb250ZXh0ICovCi0JaWYg KHBkLT5zZXNzaW9uID09IE5VTEwpCisJaWYgKCFwZC0+c2Vzc2lvbikgewogCQlsMnRwX2Rmc19z ZXFfdHVubmVsX3Nob3cobSwgcGQtPnR1bm5lbCk7Ci0JZWxzZQorCX0gZWxzZSB7CiAJCWwydHBf ZGZzX3NlcV9zZXNzaW9uX3Nob3cobSwgcGQtPnNlc3Npb24pOworCQlpZiAocGQtPnNlc3Npb24t PmRlcmVmKQorCQkJcGQtPnNlc3Npb24tPmRlcmVmKHBkLT5zZXNzaW9uKTsKKwkJbDJ0cF9zZXNz aW9uX2RlY19yZWZjb3VudChwZC0+c2Vzc2lvbik7CisJfQogCiBvdXQ6CiAJcmV0dXJuIDA7CmRp ZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2V0aC5jIGIvbmV0L2wydHAvbDJ0cF9ldGguYwppbmRl eCA2NDE2NGZiZjZjNTEuLjc2ODIwZDY5Y2FhYSAxMDA2NDQKLS0tIGEvbmV0L2wydHAvbDJ0cF9l dGguYworKysgYi9uZXQvbDJ0cC9sMnRwX2V0aC5jCkBAIC0yMDAsMTIgKzIwMCw2IEBAIHN0YXRp YyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIHR1bm5lbF9pZCwgdTMy IHNlc3Npb25faWQsIHUzMiBwCiAJCWdvdG8gb3V0OwogCX0KIAotCXNlc3Npb24gPSBsMnRwX3Nl c3Npb25fZmluZChuZXQsIHR1bm5lbCwgc2Vzc2lvbl9pZCk7Ci0JaWYgKHNlc3Npb24pIHsKLQkJ cmMgPSAtRUVYSVNUOwotCQlnb3RvIG91dDsKLQl9Ci0KIAlpZiAoY2ZnLT5pZm5hbWUpIHsKIAkJ ZGV2ID0gZGV2X2dldF9ieV9uYW1lKG5ldCwgY2ZnLT5pZm5hbWUpOwogCQlpZiAoZGV2KSB7CkBA IC0yMTksOCArMjEzLDggQEAgc3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAq bmV0LCB1MzIgdHVubmVsX2lkLCB1MzIgc2Vzc2lvbl9pZCwgdTMyIHAKIAogCXNlc3Npb24gPSBs MnRwX3Nlc3Npb25fY3JlYXRlKHNpemVvZigqc3ByaXYpLCB0dW5uZWwsIHNlc3Npb25faWQsCiAJ CQkJICAgICAgcGVlcl9zZXNzaW9uX2lkLCBjZmcpOwotCWlmICghc2Vzc2lvbikgewotCQlyYyA9 IC1FTk9NRU07CisJaWYgKElTX0VSUihzZXNzaW9uKSkgeworCQlyYyA9IFBUUl9FUlIoc2Vzc2lv bik7CiAJCWdvdG8gb3V0OwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9pcC5jIGIv bmV0L2wydHAvbDJ0cF9pcC5jCmluZGV4IDY3Y2MzZTc5ZWMyNy4uYTc1M2M5YjIzMzZmIDEwMDY0 NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lwLmMKKysrIGIvbmV0L2wydHAvbDJ0cF9pcC5jCkBAIC0x NDgsMTkgKzE0OCwxOSBAQCBzdGF0aWMgaW50IGwydHBfaXBfcmVjdihzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQogCX0KIAogCS8qIE9rLCB0aGlzIGlzIGEgZGF0YSBwYWNrZXQuIExvb2t1cCB0aGUgc2Vz c2lvbi4gKi8KLQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2ZpbmQoJmluaXRfbmV0LCBOVUxMLCBz ZXNzaW9uX2lkKTsKLQlpZiAoc2Vzc2lvbiA9PSBOVUxMKQorCXNlc3Npb24gPSBsMnRwX3Nlc3Np b25fZ2V0KCZpbml0X25ldCwgTlVMTCwgc2Vzc2lvbl9pZCwgdHJ1ZSk7CisJaWYgKCFzZXNzaW9u KQogCQlnb3RvIGRpc2NhcmQ7CiAKIAl0dW5uZWwgPSBzZXNzaW9uLT50dW5uZWw7Ci0JaWYgKHR1 bm5lbCA9PSBOVUxMKQotCQlnb3RvIGRpc2NhcmQ7CisJaWYgKCF0dW5uZWwpCisJCWdvdG8gZGlz Y2FyZF9zZXNzOwogCiAJLyogVHJhY2UgcGFja2V0IGNvbnRlbnRzLCBpZiBlbmFibGVkICovCiAJ aWYgKHR1bm5lbC0+ZGVidWcgJiBMMlRQX01TR19EQVRBKSB7CiAJCWxlbmd0aCA9IG1pbigzMnUs IHNrYi0+bGVuKTsKIAkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgbGVuZ3RoKSkKLQkJCWdvdG8g ZGlzY2FyZDsKKwkJCWdvdG8gZGlzY2FyZF9zZXNzOwogCiAJCS8qIFBvaW50IHRvIEwyVFAgaGVh ZGVyICovCiAJCW9wdHIgPSBwdHIgPSBza2ItPmRhdGE7CkBAIC0xNzYsNiArMTc2LDcgQEAgc3Rh dGljIGludCBsMnRwX2lwX3JlY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl9CiAKIAlsMnRwX3Jl Y3ZfY29tbW9uKHNlc3Npb24sIHNrYiwgcHRyLCBvcHRyLCAwLCBza2ItPmxlbiwgdHVubmVsLT5y ZWN2X3BheWxvYWRfaG9vayk7CisJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsK IAogCXJldHVybiAwOwogCkBAIC0yMTEsNiArMjEyLDEyIEBAIHN0YXRpYyBpbnQgbDJ0cF9pcF9y ZWN2KHN0cnVjdCBza19idWZmICpza2IpCiAKIAlyZXR1cm4gc2tfcmVjZWl2ZV9za2Ioc2ssIHNr YiwgMSk7CiAKK2Rpc2NhcmRfc2VzczoKKwlpZiAoc2Vzc2lvbi0+ZGVyZWYpCisJCXNlc3Npb24t PmRlcmVmKHNlc3Npb24pOworCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CisJ Z290byBkaXNjYXJkOworCiBkaXNjYXJkX3B1dDoKIAlzb2NrX3B1dChzayk7CiAKZGlmZiAtLWdp dCBhL25ldC9sMnRwL2wydHBfbmV0bGluay5jIGIvbmV0L2wydHAvbDJ0cF9uZXRsaW5rLmMKaW5k ZXggOTNhNDFhMDk0NThiLi42ZmQ2MzIyODUxMDYgMTAwNjQ0Ci0tLSBhL25ldC9sMnRwL2wydHBf bmV0bGluay5jCisrKyBiL25ldC9sMnRwL2wydHBfbmV0bGluay5jCkBAIC00MCw3ICs0MCw4IEBA IHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgbDJ0cF9ubF9mYW1pbHkgPSB7CiAvKiBBY2Nlc3Nl ZCB1bmRlciBnZW5sIGxvY2sgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbDJ0cF9ubF9jbWRfb3Bz ICpsMnRwX25sX2NtZF9vcHNbX19MMlRQX1BXVFlQRV9NQVhdOwogCi1zdGF0aWMgc3RydWN0IGwy dHBfc2Vzc2lvbiAqbDJ0cF9ubF9zZXNzaW9uX2ZpbmQoc3RydWN0IGdlbmxfaW5mbyAqaW5mbykK K3N0YXRpYyBzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpsMnRwX25sX3Nlc3Npb25fZ2V0KHN0cnVjdCBn ZW5sX2luZm8gKmluZm8sCisJCQkJCQlib29sIGRvX3JlZikKIHsKIAl1MzIgdHVubmVsX2lkOwog CXUzMiBzZXNzaW9uX2lkOwpAQCAtNTEsMTQgKzUyLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgbDJ0cF9z ZXNzaW9uICpsMnRwX25sX3Nlc3Npb25fZmluZChzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCiAJ aWYgKGluZm8tPmF0dHJzW0wyVFBfQVRUUl9JRk5BTUVdKSB7CiAJCWlmbmFtZSA9IG5sYV9kYXRh KGluZm8tPmF0dHJzW0wyVFBfQVRUUl9JRk5BTUVdKTsKLQkJc2Vzc2lvbiA9IGwydHBfc2Vzc2lv bl9maW5kX2J5X2lmbmFtZShuZXQsIGlmbmFtZSk7CisJCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25f Z2V0X2J5X2lmbmFtZShuZXQsIGlmbmFtZSwgZG9fcmVmKTsKIAl9IGVsc2UgaWYgKChpbmZvLT5h dHRyc1tMMlRQX0FUVFJfU0VTU0lPTl9JRF0pICYmCiAJCSAgIChpbmZvLT5hdHRyc1tMMlRQX0FU VFJfQ09OTl9JRF0pKSB7CiAJCXR1bm5lbF9pZCA9IG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW0wy VFBfQVRUUl9DT05OX0lEXSk7CiAJCXNlc3Npb25faWQgPSBubGFfZ2V0X3UzMihpbmZvLT5hdHRy c1tMMlRQX0FUVFJfU0VTU0lPTl9JRF0pOwogCQl0dW5uZWwgPSBsMnRwX3R1bm5lbF9maW5kKG5l dCwgdHVubmVsX2lkKTsKIAkJaWYgKHR1bm5lbCkKLQkJCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25f ZmluZChuZXQsIHR1bm5lbCwgc2Vzc2lvbl9pZCk7CisJCQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9u X2dldChuZXQsIHR1bm5lbCwgc2Vzc2lvbl9pZCwKKwkJCQkJCSAgIGRvX3JlZik7CiAJfQogCiAJ cmV0dXJuIHNlc3Npb247CkBAIC00OTUsNyArNDk3LDcgQEAgc3RhdGljIGludCBsMnRwX25sX2Nt ZF9zZXNzaW9uX2RlbGV0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICpp bmYKIAlzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uOwogCXUxNiBwd190eXBlOwogCi0Jc2Vz c2lvbiA9IGwydHBfbmxfc2Vzc2lvbl9maW5kKGluZm8pOworCXNlc3Npb24gPSBsMnRwX25sX3Nl c3Npb25fZ2V0KGluZm8sIHRydWUpOwogCWlmIChzZXNzaW9uID09IE5VTEwpIHsKIAkJcmV0ID0g LUVOT0RFVjsKIAkJZ290byBvdXQ7CkBAIC01MDYsNiArNTA4LDEwIEBAIHN0YXRpYyBpbnQgbDJ0 cF9ubF9jbWRfc2Vzc2lvbl9kZWxldGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxf aW5mbyAqaW5mCiAJCWlmIChsMnRwX25sX2NtZF9vcHNbcHdfdHlwZV0gJiYgbDJ0cF9ubF9jbWRf b3BzW3B3X3R5cGVdLT5zZXNzaW9uX2RlbGV0ZSkKIAkJCXJldCA9ICgqbDJ0cF9ubF9jbWRfb3Bz W3B3X3R5cGVdLT5zZXNzaW9uX2RlbGV0ZSkoc2Vzc2lvbik7CiAKKwlpZiAoc2Vzc2lvbi0+ZGVy ZWYpCisJCXNlc3Npb24tPmRlcmVmKHNlc3Npb24pOworCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291 bnQoc2Vzc2lvbik7CisKIG91dDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNTE1LDcgKzUyMSw3IEBA IHN0YXRpYyBpbnQgbDJ0cF9ubF9jbWRfc2Vzc2lvbl9tb2RpZnkoc3RydWN0IHNrX2J1ZmYgKnNr Yiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mCiAJaW50IHJldCA9IDA7CiAJc3RydWN0IGwydHBfc2Vz c2lvbiAqc2Vzc2lvbjsKIAotCXNlc3Npb24gPSBsMnRwX25sX3Nlc3Npb25fZmluZChpbmZvKTsK KwlzZXNzaW9uID0gbDJ0cF9ubF9zZXNzaW9uX2dldChpbmZvLCBmYWxzZSk7CiAJaWYgKHNlc3Np b24gPT0gTlVMTCkgewogCQlyZXQgPSAtRU5PREVWOwogCQlnb3RvIG91dDsKQEAgLTU0NSw2ICs1 NTEsOCBAQCBzdGF0aWMgaW50IGwydHBfbmxfY21kX3Nlc3Npb25fbW9kaWZ5KHN0cnVjdCBza19i dWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZgogCWlmIChpbmZvLT5hdHRyc1tMMlRQX0FU VFJfTVJVXSkKIAkJc2Vzc2lvbi0+bXJ1ID0gbmxhX2dldF91MTYoaW5mby0+YXR0cnNbTDJUUF9B VFRSX01SVV0pOwogCisJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKKwogb3V0 OgogCXJldHVybiByZXQ7CiB9CkBAIC02MTUsMjkgKzYyMywzNCBAQCBzdGF0aWMgaW50IGwydHBf bmxfY21kX3Nlc3Npb25fZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8g KmluZm8pCiAJc3RydWN0IHNrX2J1ZmYgKm1zZzsKIAlpbnQgcmV0OwogCi0Jc2Vzc2lvbiA9IGwy dHBfbmxfc2Vzc2lvbl9maW5kKGluZm8pOworCXNlc3Npb24gPSBsMnRwX25sX3Nlc3Npb25fZ2V0 KGluZm8sIGZhbHNlKTsKIAlpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CiAJCXJldCA9IC1FTk9ERVY7 Ci0JCWdvdG8gb3V0OworCQlnb3RvIGVycjsKIAl9CiAKIAltc2cgPSBubG1zZ19uZXcoTkxNU0df R09PRFNJWkUsIEdGUF9LRVJORUwpOwogCWlmICghbXNnKSB7CiAJCXJldCA9IC1FTk9NRU07Ci0J CWdvdG8gb3V0OworCQlnb3RvIGVycl9yZWY7CiAJfQogCiAJcmV0ID0gbDJ0cF9ubF9zZXNzaW9u X3NlbmQobXNnLCBpbmZvLT5zbmRfcGlkLCBpbmZvLT5zbmRfc2VxLAogCQkJCSAgIDAsIHNlc3Np b24pOwogCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycl9vdXQ7CisJCWdvdG8gZXJyX3JlZl9tc2c7 CiAKLQlyZXR1cm4gZ2VubG1zZ191bmljYXN0KGdlbmxfaW5mb19uZXQoaW5mbyksIG1zZywgaW5m by0+c25kX3BpZCk7CisJcmV0ID0gZ2VubG1zZ191bmljYXN0KGdlbmxfaW5mb19uZXQoaW5mbyks IG1zZywgaW5mby0+c25kX3BpZCk7CiAKLWVycl9vdXQ6Ci0Jbmxtc2dfZnJlZShtc2cpOworCWwy dHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CiAKLW91dDoKKwlyZXR1cm4gcmV0Owor CitlcnJfcmVmX21zZzoKKwlubG1zZ19mcmVlKG1zZyk7CitlcnJfcmVmOgorCWwydHBfc2Vzc2lv bl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CitlcnI6CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNjU2 LDcgKzY2OSw3IEBAIHN0YXRpYyBpbnQgbDJ0cF9ubF9jbWRfc2Vzc2lvbl9kdW1wKHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrCiAJCQkJZ290byBvdXQ7CiAJCX0K IAotCQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKHR1bm5lbCwgc2kpOworCQlzZXNz aW9uID0gbDJ0cF9zZXNzaW9uX2dldF9udGgodHVubmVsLCBzaSwgZmFsc2UpOwogCQlpZiAoc2Vz c2lvbiA9PSBOVUxMKSB7CiAJCQl0aSsrOwogCQkJdHVubmVsID0gTlVMTDsKQEAgLTY2Niw4ICs2 NzksMTEgQEAgc3RhdGljIGludCBsMnRwX25sX2NtZF9zZXNzaW9uX2R1bXAoc3RydWN0IHNrX2J1 ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sKIAogCQlpZiAobDJ0cF9ubF9zZXNzaW9u X3NlbmQoc2tiLCBORVRMSU5LX0NCKGNiLT5za2IpLnBpZCwKIAkJCQkJIGNiLT5ubGgtPm5sbXNn X3NlcSwgTkxNX0ZfTVVMVEksCi0JCQkJCSBzZXNzaW9uKSA8PSAwKQorCQkJCQkgc2Vzc2lvbikg PD0gMCkgeworCQkJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsKIAkJCWJyZWFr OworCQl9CisJCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQoc2Vzc2lvbik7CiAKIAkJc2krKzsK IAl9CmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX3BwcC5jIGIvbmV0L2wydHAvbDJ0cF9wcHAu YwppbmRleCAwNDE3NzQzYjA5ZTUuLjQ1YzIzYmQxMmI3MiAxMDA2NDQKLS0tIGEvbmV0L2wydHAv bDJ0cF9wcHAuYworKysgYi9uZXQvbDJ0cC9sMnRwX3BwcC5jCkBAIC02NDEsNiArNjQxLDcgQEAg c3RhdGljIGludCBwcHBvbDJ0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBz b2NrYWRkciAqdXNlcnZhZGRyLAogCWludCBlcnJvciA9IDA7CiAJdTMyIHR1bm5lbF9pZCwgcGVl cl90dW5uZWxfaWQ7CiAJdTMyIHNlc3Npb25faWQsIHBlZXJfc2Vzc2lvbl9pZDsKKwlib29sIGRy b3BfcmVmY250ID0gZmFsc2U7CiAJaW50IHZlciA9IDI7CiAJaW50IGZkOwogCkBAIC03MjEsMzYg KzcyMiwzNiBAQCBzdGF0aWMgaW50IHBwcG9sMnRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29j aywgc3RydWN0IHNvY2thZGRyICp1c2VydmFkZHIsCiAJCQl0dW5uZWwtPnBlZXJfdHVubmVsX2lk ID0gc3AzLT5wcHBvbDJ0cC5kX3R1bm5lbDsKIAl9CiAKLQkvKiBDcmVhdGUgc2Vzc2lvbiBpZiBp dCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuIFdlIGhhbmRsZSB0aGUKLQkgKiBjYXNlIHdoZXJlIGEg c2Vzc2lvbiB3YXMgcHJldmlvdXNseSBjcmVhdGVkIGJ5IHRoZSBuZXRsaW5rCi0JICogaW50ZXJm YWNlIGJ5IGNoZWNraW5nIHRoYXQgdGhlIHNlc3Npb24gZG9lc24ndCBhbHJlYWR5IGhhdmUKLQkg KiBhIHNvY2tldCBhbmQgaXRzIHR1bm5lbCBzb2NrZXQgYXJlIHdoYXQgd2UgZXhwZWN0LiBJZiBh bnkKLQkgKiBvZiB0aG9zZSBjaGVja3MgZmFpbCwgcmV0dXJuIEVFWElTVCB0byB0aGUgY2FsbGVy LgotCSAqLwotCXNlc3Npb24gPSBsMnRwX3Nlc3Npb25fZmluZChzb2NrX25ldChzayksIHR1bm5l bCwgc2Vzc2lvbl9pZCk7Ci0JaWYgKHNlc3Npb24gPT0gTlVMTCkgewotCQkvKiBEZWZhdWx0IE1U VSBtdXN0IGFsbG93IHNwYWNlIGZvciBVRFAvTDJUUC9QUFAKLQkJICogaGVhZGVycy4KKwlzZXNz aW9uID0gbDJ0cF9zZXNzaW9uX2dldChzb2NrX25ldChzayksIHR1bm5lbCwgc2Vzc2lvbl9pZCwg ZmFsc2UpOworCWlmIChzZXNzaW9uKSB7CisJCWRyb3BfcmVmY250ID0gdHJ1ZTsKKwkJcHMgPSBs MnRwX3Nlc3Npb25fcHJpdihzZXNzaW9uKTsKKworCQkvKiBVc2luZyBhIHByZS1leGlzdGluZyBz ZXNzaW9uIGlzIGZpbmUgYXMgbG9uZyBhcyBpdCBoYXNuJ3QKKwkJICogYmVlbiBjb25uZWN0ZWQg eWV0LgogCQkgKi8KLQkJY2ZnLm10dSA9IGNmZy5tcnUgPSAxNTAwIC0gUFBQT0wyVFBfSEVBREVS X09WRVJIRUFEOworCQlpZiAocHMtPnNvY2spIHsKKwkJCWVycm9yID0gLUVFWElTVDsKKwkJCWdv dG8gZW5kOworCQl9CiAKLQkJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgc2Vzc2lv biBjb250ZXh0LiAqLwotCQlzZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2NyZWF0ZShzaXplb2Yoc3Ry dWN0IHBwcG9sMnRwX3Nlc3Npb24pLAotCQkJCQkgICAgICB0dW5uZWwsIHNlc3Npb25faWQsCi0J CQkJCSAgICAgIHBlZXJfc2Vzc2lvbl9pZCwgJmNmZyk7Ci0JCWlmIChzZXNzaW9uID09IE5VTEwp IHsKLQkJCWVycm9yID0gLUVOT01FTTsKKwkJLyogY29uc2lzdGVuY3kgY2hlY2tzICovCisJCWlm IChwcy0+dHVubmVsX3NvY2sgIT0gdHVubmVsLT5zb2NrKSB7CisJCQllcnJvciA9IC1FRVhJU1Q7 CiAJCQlnb3RvIGVuZDsKIAkJfQogCX0gZWxzZSB7Ci0JCXBzID0gbDJ0cF9zZXNzaW9uX3ByaXYo c2Vzc2lvbik7Ci0JCWVycm9yID0gLUVFWElTVDsKLQkJaWYgKHBzLT5zb2NrICE9IE5VTEwpCi0J CQlnb3RvIGVuZDsKKwkJLyogRGVmYXVsdCBNVFUgbXVzdCBhbGxvdyBzcGFjZSBmb3IgVURQL0wy VFAvUFBQIGhlYWRlcnMgKi8KKwkJY2ZnLm10dSA9IDE1MDAgLSBQUFBPTDJUUF9IRUFERVJfT1ZF UkhFQUQ7CisJCWNmZy5tcnUgPSBjZmcubXR1OwogCi0JCS8qIGNvbnNpc3RlbmN5IGNoZWNrcyAq LwotCQlpZiAocHMtPnR1bm5lbF9zb2NrICE9IHR1bm5lbC0+c29jaykKKwkJc2Vzc2lvbiA9IGwy dHBfc2Vzc2lvbl9jcmVhdGUoc2l6ZW9mKHN0cnVjdCBwcHBvbDJ0cF9zZXNzaW9uKSwKKwkJCQkJ ICAgICAgdHVubmVsLCBzZXNzaW9uX2lkLAorCQkJCQkgICAgICBwZWVyX3Nlc3Npb25faWQsICZj ZmcpOworCQlpZiAoSVNfRVJSKHNlc3Npb24pKSB7CisJCQllcnJvciA9IFBUUl9FUlIoc2Vzc2lv bik7CiAJCQlnb3RvIGVuZDsKKwkJfQogCX0KIAogCS8qIEFzc29jaWF0ZSBzZXNzaW9uIHdpdGgg aXRzIFBQUG9MMlRQIHNvY2tldCAqLwpAQCAtODE1LDYgKzgxNiw4IEBAIHN0YXRpYyBpbnQgcHBw b2wydHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVzZXJ2 YWRkciwKIAkgICAgICAgIiVzOiBjcmVhdGVkXG4iLCBzZXNzaW9uLT5uYW1lKTsKIAogZW5kOgor CWlmIChkcm9wX3JlZmNudCkKKwkJbDJ0cF9zZXNzaW9uX2RlY19yZWZjb3VudChzZXNzaW9uKTsK IAlyZWxlYXNlX3NvY2soc2spOwogCiAJcmV0dXJuIGVycm9yOwpAQCAtODQyLDEyICs4NDUsNiBA QCBzdGF0aWMgaW50IHBwcG9sMnRwX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMy IHR1bm5lbF9pZCwgdTMyIHNlc3Npb25faQogCWlmICh0dW5uZWwtPnNvY2sgPT0gTlVMTCkKIAkJ Z290byBvdXQ7CiAKLQkvKiBDaGVjayB0aGF0IHRoaXMgc2Vzc2lvbiBkb2Vzbid0IGFscmVhZHkg ZXhpc3QgKi8KLQllcnJvciA9IC1FRVhJU1Q7Ci0Jc2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9maW5k KG5ldCwgdHVubmVsLCBzZXNzaW9uX2lkKTsKLQlpZiAoc2Vzc2lvbiAhPSBOVUxMKQotCQlnb3Rv IG91dDsKLQogCS8qIERlZmF1bHQgTVRVIHZhbHVlcy4gKi8KIAlpZiAoY2ZnLT5tdHUgPT0gMCkK IAkJY2ZnLT5tdHUgPSAxNTAwIC0gUFBQT0wyVFBfSEVBREVSX09WRVJIRUFEOwpAQCAtODU1LDEy ICs4NTIsMTMgQEAgc3RhdGljIGludCBwcHBvbDJ0cF9zZXNzaW9uX2NyZWF0ZShzdHJ1Y3QgbmV0 ICpuZXQsIHUzMiB0dW5uZWxfaWQsIHUzMiBzZXNzaW9uX2kKIAkJY2ZnLT5tcnUgPSBjZmctPm10 dTsKIAogCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IHNlc3Npb24gY29udGV4dC4g Ki8KLQllcnJvciA9IC1FTk9NRU07CiAJc2Vzc2lvbiA9IGwydHBfc2Vzc2lvbl9jcmVhdGUoc2l6 ZW9mKHN0cnVjdCBwcHBvbDJ0cF9zZXNzaW9uKSwKIAkJCQkgICAgICB0dW5uZWwsIHNlc3Npb25f aWQsCiAJCQkJICAgICAgcGVlcl9zZXNzaW9uX2lkLCBjZmcpOwotCWlmIChzZXNzaW9uID09IE5V TEwpCisJaWYgKElTX0VSUihzZXNzaW9uKSkgeworCQllcnJvciA9IFBUUl9FUlIoc2Vzc2lvbik7 CiAJCWdvdG8gb3V0OworCX0KIAogCXBzID0gbDJ0cF9zZXNzaW9uX3ByaXYoc2Vzc2lvbik7CiAJ cHMtPnR1bm5lbF9zb2NrID0gdHVubmVsLT5zb2NrOwpAQCAtMTE1MCwxMSArMTE0OCwxOCBAQCBz dGF0aWMgaW50IHBwcG9sMnRwX3R1bm5lbF9pb2N0bChzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5l bCwKIAkJaWYgKHN0YXRzLnNlc3Npb25faWQgIT0gMCkgewogCQkJLyogcmVzZW5kIHRvIHNlc3Np b24gaW9jdGwgaGFuZGxlciAqLwogCQkJc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiA9Ci0J CQkJbDJ0cF9zZXNzaW9uX2ZpbmQoc29ja19uZXQoc2spLCB0dW5uZWwsIHN0YXRzLnNlc3Npb25f aWQpOwotCQkJaWYgKHNlc3Npb24gIT0gTlVMTCkKLQkJCQllcnIgPSBwcHBvbDJ0cF9zZXNzaW9u X2lvY3RsKHNlc3Npb24sIGNtZCwgYXJnKTsKLQkJCWVsc2UKKwkJCQlsMnRwX3Nlc3Npb25fZ2V0 KHNvY2tfbmV0KHNrKSwgdHVubmVsLAorCQkJCQkJIHN0YXRzLnNlc3Npb25faWQsIHRydWUpOwor CisJCQlpZiAoc2Vzc2lvbikgeworCQkJCWVyciA9IHBwcG9sMnRwX3Nlc3Npb25faW9jdGwoc2Vz c2lvbiwgY21kLAorCQkJCQkJCSAgICAgYXJnKTsKKwkJCQlpZiAoc2Vzc2lvbi0+ZGVyZWYpCisJ CQkJCXNlc3Npb24tPmRlcmVmKHNlc3Npb24pOworCQkJCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291 bnQoc2Vzc2lvbik7CisJCQl9IGVsc2UgewogCQkJCWVyciA9IC1FQkFEUjsKKwkJCX0KIAkJCWJy ZWFrOwogCQl9CiAjaWZkZWYgQ09ORklHX1hGUk0KQEAgLTEzODIsOCArMTM4Nyw2IEBAIHN0YXRp YyBpbnQgcHBwb2wydHBfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWws IGludCBvcHRuYW1lLAogCX0gZWxzZQogCQllcnIgPSBwcHBvbDJ0cF9zZXNzaW9uX3NldHNvY2tv cHQoc2ssIHNlc3Npb24sIG9wdG5hbWUsIHZhbCk7CiAKLQllcnIgPSAwOwotCiBlbmRfcHV0X3Nl c3M6CiAJc29ja19wdXQoc2spOwogZW5kOgpAQCAtMTUwNiw4ICsxNTA5LDEzIEBAIHN0YXRpYyBp bnQgcHBwb2wydHBfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsCiAK IAkJZXJyID0gcHBwb2wydHBfdHVubmVsX2dldHNvY2tvcHQoc2ssIHR1bm5lbCwgb3B0bmFtZSwg JnZhbCk7CiAJCXNvY2tfcHV0KHBzLT50dW5uZWxfc29jayk7Ci0JfSBlbHNlCisJCWlmIChlcnIp CisJCQlnb3RvIGVuZF9wdXRfc2VzczsKKwl9IGVsc2UgewogCQllcnIgPSBwcHBvbDJ0cF9zZXNz aW9uX2dldHNvY2tvcHQoc2ssIHNlc3Npb24sIG9wdG5hbWUsICZ2YWwpOworCQlpZiAoZXJyKQor CQkJZ290byBlbmRfcHV0X3Nlc3M7CisJfQogCiAJZXJyID0gLUVGQVVMVDsKIAlpZiAocHV0X3Vz ZXIobGVuLCAoaW50IF9fdXNlciAqKSBvcHRsZW4pKQpAQCAtMTU1OSw3ICsxNTY3LDcgQEAgc3Rh dGljIHZvaWQgcHBwb2wydHBfbmV4dF90dW5uZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBw b2wydHBfc2VxX2RhdGEgKnBkKQogCiBzdGF0aWMgdm9pZCBwcHBvbDJ0cF9uZXh0X3Nlc3Npb24o c3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBwb2wydHBfc2VxX2RhdGEgKnBkKQogewotCXBkLT5z ZXNzaW9uID0gbDJ0cF9zZXNzaW9uX2ZpbmRfbnRoKHBkLT50dW5uZWwsIHBkLT5zZXNzaW9uX2lk eCk7CisJcGQtPnNlc3Npb24gPSBsMnRwX3Nlc3Npb25fZ2V0X250aChwZC0+dHVubmVsLCBwZC0+ c2Vzc2lvbl9pZHgsIHRydWUpOwogCXBkLT5zZXNzaW9uX2lkeCsrOwogCiAJaWYgKHBkLT5zZXNz aW9uID09IE5VTEwpIHsKQEAgLTE2ODYsMTAgKzE2OTQsMTQgQEAgc3RhdGljIGludCBwcHBvbDJ0 cF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpCiAKIAkvKiBTaG93IHRoZSB0 dW5uZWwgb3Igc2Vzc2lvbiBjb250ZXh0LgogCSAqLwotCWlmIChwZC0+c2Vzc2lvbiA9PSBOVUxM KQorCWlmICghcGQtPnNlc3Npb24pIHsKIAkJcHBwb2wydHBfc2VxX3R1bm5lbF9zaG93KG0sIHBk LT50dW5uZWwpOwotCWVsc2UKKwl9IGVsc2UgewogCQlwcHBvbDJ0cF9zZXFfc2Vzc2lvbl9zaG93 KG0sIHBkLT5zZXNzaW9uKTsKKwkJaWYgKHBkLT5zZXNzaW9uLT5kZXJlZikKKwkJCXBkLT5zZXNz aW9uLT5kZXJlZihwZC0+c2Vzc2lvbik7CisJCWwydHBfc2Vzc2lvbl9kZWNfcmVmY291bnQocGQt PnNlc3Npb24pOworCX0KIAogb3V0OgogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgw MjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguYwppbmRleCBjMWQwMmQ4NjA0ODkuLjk2YzM0YzE1 YjFlYSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3J4LmMKKysrIGIvbmV0L21hYzgwMjExL3J4 LmMKQEAgLTI4NDIsNiArMjg0MiwzMCBAQCBzdGF0aWMgaW50IHByZXBhcmVfZm9yX2hhbmRsZXJz KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsCiAJCQkgICAgICBzZGF0YS0+dmlmLnAycCkp CiAJCQkJcmV0dXJuIDA7CiAJCQlzdGF0dXMtPnJ4X2ZsYWdzICY9IH5JRUVFODAyMTFfUlhfUkFf TUFUQ0g7CisJCX0gZWxzZSB7CisJCQkvKgorCQkJICogODAyLjExLTIwMTYgVGFibGUgOS0yNiBz YXlzIHRoYXQgZm9yIGRhdGEgZnJhbWVzLAorCQkJICogQTEgbXVzdCBiZSB0aGUgQlNTSUQgLSB3 ZSd2ZSBjaGVja2VkIHRoYXQgYWxyZWFkeQorCQkJICogYnV0IG1heSBoYXZlIGFjY2VwdGVkIHRo ZSB3aWxkY2FyZAorCQkJICogKGZmOmZmOmZmOmZmOmZmOmZmKS4KKwkJCSAqCisJCQkgKiBJdCBh bHNvIHNheXM6CisJCQkgKglUaGUgQlNTSUQgb2YgdGhlIERhdGEgZnJhbWUgaXMgZGV0ZXJtaW5l ZCBhcworCQkJICogICAgICBmb2xsb3dzOgorCQkJICoJYSkgSWYgdGhlIFNUQSBpcyBjb250YWlu ZWQgd2l0aGluIGFuIEFQIG9yIGlzCisJCQkgKiAgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhbiBB UCwgdGhlIEJTU0lEIGlzIHRoZQorCQkJICogICAgICAgICBhZGRyZXNzIGN1cnJlbnRseSBpbiB1 c2UgYnkgdGhlIFNUQQorCQkJICogICAgICAgICBjb250YWluZWQgaW4gdGhlIEFQLgorCQkJICoK KwkJCSAqIFNvIHdlIHNob3VsZCBub3QgYWNjZXB0IGRhdGEgZnJhbWVzIHdpdGggYW4gYWRkcmVz cworCQkJICogdGhhdCdzIG11bHRpY2FzdC4KKwkJCSAqCisJCQkgKiBBY2NlcHRpbmcgaXQgYWxz byBvcGVucyBhIHNlY3VyaXR5IHByb2JsZW0gYmVjYXVzZQorCQkJICogc3RhdGlvbnMgY291bGQg ZW5jcnlwdCBpdCB3aXRoIHRoZSBHVEsgYW5kIGluamVjdAorCQkJICogdHJhZmZpYyB0aGF0IHdh eS4KKwkJCSAqLworCQkJaWYgKGllZWU4MDIxMV9pc19kYXRhKGhkci0+ZnJhbWVfY29udHJvbCkg JiYgbXVsdGljYXN0KQorCQkJCXJldHVybiAwOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgTkw4MDIx MV9JRlRZUEVfV0RTOgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9jc3VtLmMgYi9uZXQvc2No ZWQvYWN0X2NzdW0uYwppbmRleCA0NTNhNzM0MzFhYzQuLmVhZGZkY2YyYjA1ZiAxMDA2NDQKLS0t IGEvbmV0L3NjaGVkL2FjdF9jc3VtLmMKKysrIGIvbmV0L3NjaGVkL2FjdF9jc3VtLmMKQEAgLTEy Miw5ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCAqdGNmX2NzdW1fc2tiX25leHRsYXllcihzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAogCWludCBobCA9IGlobCArIGpobDsKIAogCWlmICghcHNrYl9tYXlfcHVs bChza2IsIGlwbCArIG50a29mZikgfHwgKGlwbCA8IGhsKSB8fAotCSAgICAoc2tiX2Nsb25lZChz a2IpICYmCi0JICAgICAhc2tiX2Nsb25lX3dyaXRhYmxlKHNrYiwgaGwgKyBudGtvZmYpICYmCi0J ICAgICBwc2tiX2V4cGFuZF9oZWFkKHNrYiwgMCwgMCwgR0ZQX0FUT01JQykpKQorCSAgICBza2Jf dHJ5X21ha2Vfd3JpdGFibGUoc2tiLCBobCArIG50a29mZikpCiAJCXJldHVybiBOVUxMOwogCWVs c2UKIAkJcmV0dXJuICh2b2lkICopKHNrYl9uZXR3b3JrX2hlYWRlcihza2IpICsgaWhsKTsKQEAg LTM3Miw5ICszNzAsNyBAQCBzdGF0aWMgaW50IHRjZl9jc3VtX2lwdjQoc3RydWN0IHNrX2J1ZmYg KnNrYiwgdTMyIHVwZGF0ZV9mbGFncykKIAl9CiAKIAlpZiAodXBkYXRlX2ZsYWdzICYgVENBX0NT VU1fVVBEQVRFX0ZMQUdfSVBWNEhEUikgewotCQlpZiAoc2tiX2Nsb25lZChza2IpICYmCi0JCSAg ICAhc2tiX2Nsb25lX3dyaXRhYmxlKHNrYiwgc2l6ZW9mKCppcGgpICsgbnRrb2ZmKSAmJgotCQkg ICAgcHNrYl9leHBhbmRfaGVhZChza2IsIDAsIDAsIEdGUF9BVE9NSUMpKQorCQlpZiAoc2tiX3Ry eV9tYWtlX3dyaXRhYmxlKHNrYiwgc2l6ZW9mKCppcGgpICsgbnRrb2ZmKSkKIAkJCWdvdG8gZmFp bDsKIAogCQlpcF9zZW5kX2NoZWNrKGlwaCk7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X25h dC5jIGIvbmV0L3NjaGVkL2FjdF9uYXQuYwppbmRleCAwMDFkMWIzNTQ4NjkuLjIyNmI5NjQ0ODQw OCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9uYXQuYworKysgYi9uZXQvc2NoZWQvYWN0X25h dC5jCkBAIC0xNDQsOSArMTQ0LDcgQEAgc3RhdGljIGludCB0Y2ZfbmF0KHN0cnVjdCBza19idWZm ICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsCiAJCWFkZHIgPSBpcGgtPmRhZGRyOwog CiAJaWYgKCEoKG9sZF9hZGRyIF4gYWRkcikgJiBtYXNrKSkgewotCQlpZiAoc2tiX2Nsb25lZChz a2IpICYmCi0JCSAgICAhc2tiX2Nsb25lX3dyaXRhYmxlKHNrYiwgc2l6ZW9mKCppcGgpICsgbm9m ZikgJiYKLQkJICAgIHBza2JfZXhwYW5kX2hlYWQoc2tiLCAwLCAwLCBHRlBfQVRPTUlDKSkKKwkJ aWYgKHNrYl90cnlfbWFrZV93cml0YWJsZShza2IsIHNpemVvZigqaXBoKSArIG5vZmYpKQogCQkJ Z290byBkcm9wOwogCiAJCW5ld19hZGRyICY9IG1hc2s7CkBAIC0xNzQsOSArMTcyLDcgQEAgc3Rh dGljIGludCB0Y2ZfbmF0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rp b24gKmEsCiAJCXN0cnVjdCB0Y3BoZHIgKnRjcGg7CiAKIAkJaWYgKCFwc2tiX21heV9wdWxsKHNr YiwgaWhsICsgc2l6ZW9mKCp0Y3BoKSArIG5vZmYpIHx8Ci0JCSAgICAoc2tiX2Nsb25lZChza2Ip ICYmCi0JCSAgICAgIXNrYl9jbG9uZV93cml0YWJsZShza2IsIGlobCArIHNpemVvZigqdGNwaCkg KyBub2ZmKSAmJgotCQkgICAgIHBza2JfZXhwYW5kX2hlYWQoc2tiLCAwLCAwLCBHRlBfQVRPTUlD KSkpCisJCSAgICBza2JfdHJ5X21ha2Vfd3JpdGFibGUoc2tiLCBpaGwgKyBzaXplb2YoKnRjcGgp ICsgbm9mZikpCiAJCQlnb3RvIGRyb3A7CiAKIAkJdGNwaCA9ICh2b2lkICopKHNrYl9uZXR3b3Jr X2hlYWRlcihza2IpICsgaWhsKTsKQEAgLTE4OCw5ICsxODQsNyBAQCBzdGF0aWMgaW50IHRjZl9u YXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSwKIAkJc3Ry dWN0IHVkcGhkciAqdWRwaDsKIAogCQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBpaGwgKyBzaXpl b2YoKnVkcGgpICsgbm9mZikgfHwKLQkJICAgIChza2JfY2xvbmVkKHNrYikgJiYKLQkJICAgICAh c2tiX2Nsb25lX3dyaXRhYmxlKHNrYiwgaWhsICsgc2l6ZW9mKCp1ZHBoKSArIG5vZmYpICYmCi0J CSAgICAgcHNrYl9leHBhbmRfaGVhZChza2IsIDAsIDAsIEdGUF9BVE9NSUMpKSkKKwkJICAgIHNr Yl90cnlfbWFrZV93cml0YWJsZShza2IsIGlobCArIHNpemVvZigqdWRwaCkgKyBub2ZmKSkKIAkJ CWdvdG8gZHJvcDsKIAogCQl1ZHBoID0gKHZvaWQgKikoc2tiX25ldHdvcmtfaGVhZGVyKHNrYikg KyBpaGwpOwpAQCAtMjMwLDEwICsyMjQsOCBAQCBzdGF0aWMgaW50IHRjZl9uYXQoc3RydWN0IHNr X2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSwKIAkJaWYgKChvbGRfYWRkciBe IGFkZHIpICYgbWFzaykKIAkJCWJyZWFrOwogCi0JCWlmIChza2JfY2xvbmVkKHNrYikgJiYKLQkJ ICAgICFza2JfY2xvbmVfd3JpdGFibGUoc2tiLCBpaGwgKyBzaXplb2YoKmljbXBoKSArCi0JCQkJ CSAgICAgc2l6ZW9mKCppcGgpICsgbm9mZikgJiYKLQkJICAgIHBza2JfZXhwYW5kX2hlYWQoc2ti LCAwLCAwLCBHRlBfQVRPTUlDKSkKKwkJaWYgKHNrYl90cnlfbWFrZV93cml0YWJsZShza2IsIGlo bCArIHNpemVvZigqaWNtcGgpICsKKwkJCQkJICBzaXplb2YoKmlwaCkgKyBub2ZmKSkKIAkJCWdv dG8gZHJvcDsKIAogCQlpY21waCA9ICh2b2lkICopKHNrYl9uZXR3b3JrX2hlYWRlcihza2IpICsg aWhsKTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHNtYXJrLmMgYi9uZXQvc2NoZWQvc2No X2RzbWFyay5jCmluZGV4IGQ3NWJmY2Y5NzJmMC4uZmIyNGJiNGY1ODE4IDEwMDY0NAotLS0gYS9u ZXQvc2NoZWQvc2NoX2RzbWFyay5jCisrKyBiL25ldC9zY2hlZC9zY2hfZHNtYXJrLmMKQEAgLTIw Miw5ICsyMDIsMTMgQEAgc3RhdGljIGludCBkc21hcmtfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCkKIAlwcl9kZWJ1ZygiZHNtYXJrX2VucXVldWUoc2tiICVw LHNjaCAlcCxbcWRpc2MgJXBdKVxuIiwgc2tiLCBzY2gsIHApOwogCiAJaWYgKHAtPnNldF90Y19p bmRleCkgeworCQlpbnQgd2xlbiA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOworCiAJCXN3aXRj aCAoc2tiLT5wcm90b2NvbCkgewogCQljYXNlIGh0b25zKEVUSF9QX0lQKToKLQkJCWlmIChza2Jf Y293X2hlYWQoc2tiLCBzaXplb2Yoc3RydWN0IGlwaGRyKSkpCisJCQl3bGVuICs9IHNpemVvZihz dHJ1Y3QgaXBoZHIpOworCQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgd2xlbikgfHwKKwkJCSAg ICBza2JfdHJ5X21ha2Vfd3JpdGFibGUoc2tiLCB3bGVuKSkKIAkJCQlnb3RvIGRyb3A7CiAKIAkJ CXNrYi0+dGNfaW5kZXggPSBpcHY0X2dldF9kc2ZpZWxkKGlwX2hkcihza2IpKQpAQCAtMjEyLDcg KzIxNiw5IEBAIHN0YXRpYyBpbnQgZHNtYXJrX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwg c3RydWN0IFFkaXNjICpzY2gpCiAJCQlicmVhazsKIAogCQljYXNlIGh0b25zKEVUSF9QX0lQVjYp OgotCQkJaWYgKHNrYl9jb3dfaGVhZChza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpKQorCQkJ d2xlbiArPSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpOworCQkJaWYgKCFwc2tiX21heV9wdWxsKHNr Yiwgd2xlbikgfHwKKwkJCSAgICBza2JfdHJ5X21ha2Vfd3JpdGFibGUoc2tiLCB3bGVuKSkKIAkJ CQlnb3RvIGRyb3A7CiAKIAkJCXNrYi0+dGNfaW5kZXggPSBpcHY2X2dldF9kc2ZpZWxkKGlwdjZf aGRyKHNrYikpCmRpZmYgLS1naXQgYS9uZXQvdW5peC9nYXJiYWdlLmMgYi9uZXQvdW5peC9nYXJi YWdlLmMKaW5kZXggMzNhMjEyNjBiNzliLi5mZTAzZTEzNTYxNmYgMTAwNjQ0Ci0tLSBhL25ldC91 bml4L2dhcmJhZ2UuYworKysgYi9uZXQvdW5peC9nYXJiYWdlLmMKQEAgLTE1MCw2ICsxNTAsNyBA QCB2b2lkIHVuaXhfbm90aW5mbGlnaHQoc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3Qg ZmlsZSAqZnApCiAKIAlpZiAocykgewogCQlzdHJ1Y3QgdW5peF9zb2NrICp1ID0gdW5peF9zayhz KTsKKwkJQlVHX09OKCFhdG9taWNfbG9uZ19yZWFkKCZ1LT5pbmZsaWdodCkpOwogCQlCVUdfT04o bGlzdF9lbXB0eSgmdS0+bGluaykpOwogCQlpZiAoYXRvbWljX2xvbmdfZGVjX2FuZF90ZXN0KCZ1 LT5pbmZsaWdodCkpCiAJCQlsaXN0X2RlbF9pbml0KCZ1LT5saW5rKTsKQEAgLTM1Niw2ICszNTcs MTQgQEAgdm9pZCB1bml4X2djKHZvaWQpCiAJfQogCWxpc3RfZGVsKCZjdXJzb3IpOwogCisJLyog Tm93IGdjX2NhbmRpZGF0ZXMgY29udGFpbnMgb25seSBnYXJiYWdlLiAgUmVzdG9yZSBvcmlnaW5h bAorCSAqIGluZmxpZ2h0IGNvdW50ZXJzIGZvciB0aGVzZSBhcyB3ZWxsLCBhbmQgcmVtb3ZlIHRo ZSBza2J1ZmZzCisJICogd2hpY2ggYXJlIGNyZWF0aW5nIHRoZSBjeWNsZShzKS4KKwkgKi8KKwlz a2JfcXVldWVfaGVhZF9pbml0KCZoaXRsaXN0KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHUsICZn Y19jYW5kaWRhdGVzLCBsaW5rKQorCQlzY2FuX2NoaWxkcmVuKCZ1LT5zaywgaW5jX2luZmxpZ2h0 LCAmaGl0bGlzdCk7CisKIAkvKgogCSAqIG5vdF9jeWNsZV9saXN0IGNvbnRhaW5zIHRob3NlIHNv Y2tldHMgd2hpY2ggZG8gbm90IG1ha2UgdXAgYQogCSAqIGN5Y2xlLiAgUmVzdG9yZSB0aGVzZSB0 byB0aGUgaW5mbGlnaHQgbGlzdC4KQEAgLTM2NiwxNSArMzc1LDYgQEAgdm9pZCB1bml4X2djKHZv aWQpCiAJCWxpc3RfbW92ZV90YWlsKCZ1LT5saW5rLCAmZ2NfaW5mbGlnaHRfbGlzdCk7CiAJfQog Ci0JLyoKLQkgKiBOb3cgZ2NfY2FuZGlkYXRlcyBjb250YWlucyBvbmx5IGdhcmJhZ2UuICBSZXN0 b3JlIG9yaWdpbmFsCi0JICogaW5mbGlnaHQgY291bnRlcnMgZm9yIHRoZXNlIGFzIHdlbGwsIGFu ZCByZW1vdmUgdGhlIHNrYnVmZnMKLQkgKiB3aGljaCBhcmUgY3JlYXRpbmcgdGhlIGN5Y2xlKHMp LgotCSAqLwotCXNrYl9xdWV1ZV9oZWFkX2luaXQoJmhpdGxpc3QpOwotCWxpc3RfZm9yX2VhY2hf ZW50cnkodSwgJmdjX2NhbmRpZGF0ZXMsIGxpbmspCi0Jc2Nhbl9jaGlsZHJlbigmdS0+c2ssIGlu Y19pbmZsaWdodCwgJmhpdGxpc3QpOwotCiAJc3Bpbl91bmxvY2soJnVuaXhfZ2NfbG9jayk7CiAK IAkvKiBIZXJlIHdlIGFyZS4gSGl0bGlzdCBpcyBmaWxsZWQuIERpZS4gKi8KZGlmZiAtLWdpdCBh L3NlY3VyaXR5L2tleXMvZ2MuYyBiL3NlY3VyaXR5L2tleXMvZ2MuYwppbmRleCA3ODE3YmIwOTQy MzkuLmI2N2Y2YTJhMjgzOCAxMDA2NDQKLS0tIGEvc2VjdXJpdHkva2V5cy9nYy5jCisrKyBiL3Nl Y3VyaXR5L2tleXMvZ2MuYwpAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBr ZXlfZ2NfZmxhZ3M7CiAgKiBpbW1lZGlhdGVseSB1bmxpbmtlZC4KICAqLwogc3RydWN0IGtleV90 eXBlIGtleV90eXBlX2RlYWQgPSB7Ci0JLm5hbWUgPSAiZGVhZCIsCisJLm5hbWUgPSAiLmRlYWQi LAogfTsKIAogLyoKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3IuYyBi L3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3IuYwppbmRleCAwODg2NWRjYmY1ZjEuLmQ0NDlk ZGUxYmY1MCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxX2NsaWVudG1nci5jCisrKyBi L3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3IuYwpAQCAtMTkwOSw2ICsxOTA5LDcgQEAgc3Rh dGljIGludCBzbmRfc2VxX2lvY3RsX3NldF9jbGllbnRfcG9vbChzdHJ1Y3Qgc25kX3NlcV9jbGll bnQgKmNsaWVudCwKIAkgICAgIGluZm8ub3V0cHV0X3Bvb2wgIT0gY2xpZW50LT5wb29sLT5zaXpl KSkgewogCQlpZiAoc25kX3NlcV93cml0ZV9wb29sX2FsbG9jYXRlZChjbGllbnQpKSB7CiAJCQkv KiByZW1vdmUgYWxsIGV4aXN0aW5nIGNlbGxzICovCisJCQlzbmRfc2VxX3Bvb2xfbWFya19jbG9z aW5nKGNsaWVudC0+cG9vbCk7CiAJCQlzbmRfc2VxX3F1ZXVlX2NsaWVudF9sZWF2ZV9jZWxscyhj bGllbnQtPm51bWJlcik7CiAJCQlzbmRfc2VxX3Bvb2xfZG9uZShjbGllbnQtPnBvb2wpOwogCQl9 CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3NlcS9zZXFfZmlmby5jIGIvc291bmQvY29yZS9zZXEv c2VxX2ZpZm8uYwppbmRleCAxMTg0ODE4MzlkNDYuLjQ5MGI2OTdlODNmZiAxMDA2NDQKLS0tIGEv c291bmQvY29yZS9zZXEvc2VxX2ZpZm8uYworKysgYi9zb3VuZC9jb3JlL3NlcS9zZXFfZmlmby5j CkBAIC03Miw2ICs3Miw5IEBAIHZvaWQgc25kX3NlcV9maWZvX2RlbGV0ZShzdHJ1Y3Qgc25kX3Nl cV9maWZvICoqZmlmbykKIAkJcmV0dXJuOwogCSpmaWZvID0gTlVMTDsKIAorCWlmIChmLT5wb29s KQorCQlzbmRfc2VxX3Bvb2xfbWFya19jbG9zaW5nKGYtPnBvb2wpOworCiAJc25kX3NlcV9maWZv X2NsZWFyKGYpOwogCiAJLyogd2FrZSB1cCBjbGllbnRzIGlmIGFueSAqLwpAQCAtMjY0LDYgKzI2 NywxMCBAQCBpbnQgc25kX3NlcV9maWZvX3Jlc2l6ZShzdHJ1Y3Qgc25kX3NlcV9maWZvICpmLCBp bnQgcG9vbHNpemUpCiAJLyogTk9URTogb3ZlcmZsb3cgZmxhZyBpcyBub3QgY2xlYXJlZCAqLwog CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmYtPmxvY2ssIGZsYWdzKTsKIAorCS8qIGNsb3NlIHRo ZSBvbGQgcG9vbCBhbmQgd2FpdCB1bnRpbCBhbGwgdXNlcnMgYXJlIGdvbmUgKi8KKwlzbmRfc2Vx X3Bvb2xfbWFya19jbG9zaW5nKG9sZHBvb2wpOworCXNuZF91c2VfbG9ja19zeW5jKCZmLT51c2Vf bG9jayk7CisKIAkvKiByZWxlYXNlIGNlbGxzIGluIG9sZCBwb29sICovCiAJZm9yIChjZWxsID0g b2xkaGVhZDsgY2VsbDsgY2VsbCA9IG5leHQpIHsKIAkJbmV4dCA9IGNlbGwtPm5leHQ7CmRpZmYg LS1naXQgYS9zb3VuZC9jb3JlL3NlcS9zZXFfbG9jay5jIGIvc291bmQvY29yZS9zZXEvc2VxX2xv Y2suYwppbmRleCAyY2ZlNTBjNzFhOWQuLjhhNmI3YmFhZmEzNSAxMDA2NDQKLS0tIGEvc291bmQv Y29yZS9zZXEvc2VxX2xvY2suYworKysgYi9zb3VuZC9jb3JlL3NlcS9zZXFfbG9jay5jCkBAIC0y OCwxOSArMjgsMTYgQEAKIC8qIHdhaXQgdW50aWwgYWxsIGxvY2tzIGFyZSByZWxlYXNlZCAqLwog dm9pZCBzbmRfdXNlX2xvY2tfc3luY19oZWxwZXIoc25kX3VzZV9sb2NrX3QgKmxvY2twLCBjb25z dCBjaGFyICpmaWxlLCBpbnQgbGluZSkKIHsKLQlpbnQgbWF4X2NvdW50ID0gNSAqIEhaOworCWlu dCB3YXJuX2NvdW50ID0gNSAqIEhaOwogCiAJaWYgKGF0b21pY19yZWFkKGxvY2twKSA8IDApIHsK IAkJcHJpbnRrKEtFUk5fV0FSTklORyAic2VxX2xvY2s6IGxvY2sgdHJvdWJsZSBbY291bnRlciA9 ICVkXSBpbiAlczolZFxuIiwgYXRvbWljX3JlYWQobG9ja3ApLCBmaWxlLCBsaW5lKTsKIAkJcmV0 dXJuOwogCX0KIAl3aGlsZSAoYXRvbWljX3JlYWQobG9ja3ApID4gMCkgewotCQlpZiAobWF4X2Nv dW50ID09IDApIHsKLQkJCXNuZF9wcmludGsoS0VSTl9XQVJOSU5HICJzZXFfbG9jazogdGltZW91 dCBbJWQgbGVmdF0gaW4gJXM6JWRcbiIsIGF0b21pY19yZWFkKGxvY2twKSwgZmlsZSwgbGluZSk7 Ci0JCQlicmVhazsKLQkJfQorCQlpZiAod2Fybl9jb3VudC0tID09IDApCisJCQlwcl93YXJuKCJB TFNBOiBzZXFfbG9jazogd2FpdGluZyBbJWQgbGVmdF0gaW4gJXM6JWRcbiIsIGF0b21pY19yZWFk KGxvY2twKSwgZmlsZSwgbGluZSk7CiAJCXNjaGVkdWxlX3RpbWVvdXRfdW5pbnRlcnJ1cHRpYmxl KDEpOwotCQltYXhfY291bnQtLTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2Vx L3NlcV9tZW1vcnkuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9tZW1vcnkuYwppbmRleCA5ZjIwZDNj MjRkNzYuLjZmYzIxMWRjYjM0MiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxX21lbW9y eS5jCisrKyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9tZW1vcnkuYwpAQCAtNDE2LDYgKzQxNiwxOCBA QCBpbnQgc25kX3NlcV9wb29sX2luaXQoc3RydWN0IHNuZF9zZXFfcG9vbCAqcG9vbCkKIAlyZXR1 cm4gMDsKIH0KIAorLyogcmVmdXNlIHRoZSBmdXJ0aGVyIGluc2VydGlvbiB0byB0aGUgcG9vbCAq Lwordm9pZCBzbmRfc2VxX3Bvb2xfbWFya19jbG9zaW5nKHN0cnVjdCBzbmRfc2VxX3Bvb2wgKnBv b2wpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChzbmRfQlVHX09OKCFwb29sKSkK KwkJcmV0dXJuOworCXNwaW5fbG9ja19pcnFzYXZlKCZwb29sLT5sb2NrLCBmbGFncyk7CisJcG9v bC0+Y2xvc2luZyA9IDE7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9vbC0+bG9jaywgZmxh Z3MpOworfQorCiAvKiByZW1vdmUgZXZlbnRzICovCiBpbnQgc25kX3NlcV9wb29sX2RvbmUoc3Ry dWN0IHNuZF9zZXFfcG9vbCAqcG9vbCkKIHsKQEAgLTQyNiwxMCArNDM4LDYgQEAgaW50IHNuZF9z ZXFfcG9vbF9kb25lKHN0cnVjdCBzbmRfc2VxX3Bvb2wgKnBvb2wpCiAJCXJldHVybiAtRUlOVkFM OwogCiAJLyogd2FpdCBmb3IgY2xvc2luZyBhbGwgdGhyZWFkcyAqLwotCXNwaW5fbG9ja19pcnFz YXZlKCZwb29sLT5sb2NrLCBmbGFncyk7Ci0JcG9vbC0+Y2xvc2luZyA9IDE7Ci0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcG9vbC0+bG9jaywgZmxhZ3MpOwotCiAJaWYgKHdhaXRxdWV1ZV9hY3Rp dmUoJnBvb2wtPm91dHB1dF9zbGVlcCkpCiAJCXdha2VfdXAoJnBvb2wtPm91dHB1dF9zbGVlcCk7 CiAKQEAgLTQ4OCw2ICs0OTYsNyBAQCBpbnQgc25kX3NlcV9wb29sX2RlbGV0ZShzdHJ1Y3Qgc25k X3NlcV9wb29sICoqcHBvb2wpCiAJKnBwb29sID0gTlVMTDsKIAlpZiAocG9vbCA9PSBOVUxMKQog CQlyZXR1cm4gMDsKKwlzbmRfc2VxX3Bvb2xfbWFya19jbG9zaW5nKHBvb2wpOwogCXNuZF9zZXFf cG9vbF9kb25lKHBvb2wpOwogCWtmcmVlKHBvb2wpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv c291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5oIGIvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5o CmluZGV4IDRhMmVjNzc5YjhhNy4uMzJmOTU5YzE3Nzg2IDEwMDY0NAotLS0gYS9zb3VuZC9jb3Jl L3NlcS9zZXFfbWVtb3J5LmgKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5oCkBAIC04 NCw2ICs4NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNuZF9zZXFfdG90YWxfY2VsbHMoc3RydWN0 IHNuZF9zZXFfcG9vbCAqcG9vbCkKIGludCBzbmRfc2VxX3Bvb2xfaW5pdChzdHJ1Y3Qgc25kX3Nl cV9wb29sICpwb29sKTsKIAogLyogZG9uZSBwb29sIC0gZnJlZSBldmVudHMgKi8KK3ZvaWQgc25k X3NlcV9wb29sX21hcmtfY2xvc2luZyhzdHJ1Y3Qgc25kX3NlcV9wb29sICpwb29sKTsKIGludCBz bmRfc2VxX3Bvb2xfZG9uZShzdHJ1Y3Qgc25kX3NlcV9wb29sICpwb29sKTsKIAogLyogY3JlYXRl IHBvb2wgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvdGltZXIuYyBiL3NvdW5kL2NvcmUvdGlt ZXIuYwppbmRleCA4N2VkZjEyYTEwMjUuLjc3NTRhMzdkZTdlOSAxMDA2NDQKLS0tIGEvc291bmQv Y29yZS90aW1lci5jCisrKyBiL3NvdW5kL2NvcmUvdGltZXIuYwpAQCAtMTU5MCw2ICsxNTkwLDcg QEAgc3RhdGljIGludCBzbmRfdGltZXJfdXNlcl90c2VsZWN0KHN0cnVjdCBmaWxlICpmaWxlLAog CWlmIChlcnIgPCAwKQogCQlnb3RvIF9fZXJyOwogCisJdHUtPnFoZWFkID0gdHUtPnF0YWlsID0g dHUtPnF1c2VkID0gMDsKIAlrZnJlZSh0dS0+cXVldWUpOwogCXR1LT5xdWV1ZSA9IE5VTEw7CiAJ a2ZyZWUodHUtPnRxdWV1ZSk7CkBAIC0xOTMwLDYgKzE5MzEsNyBAQCBzdGF0aWMgc3NpemVfdCBz bmRfdGltZXJfdXNlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmZmVy LAogCiAJdHUgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJdW5pdCA9IHR1LT50cmVhZCA/IHNpemVv ZihzdHJ1Y3Qgc25kX3RpbWVyX3RyZWFkKSA6IHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVyX3JlYWQp OworCW11dGV4X2xvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAlzcGluX2xvY2tfaXJxKCZ0dS0+cWxv Y2spOwogCXdoaWxlICgobG9uZyljb3VudCAtIHJlc3VsdCA+PSB1bml0KSB7CiAJCXdoaWxlICgh dHUtPnF1c2VkKSB7CkBAIC0xOTQ1LDcgKzE5NDcsOSBAQCBzdGF0aWMgc3NpemVfdCBzbmRfdGlt ZXJfdXNlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCQkJ YWRkX3dhaXRfcXVldWUoJnR1LT5xY2hhbmdlX3NsZWVwLCAmd2FpdCk7CiAKIAkJCXNwaW5fdW5s b2NrX2lycSgmdHUtPnFsb2NrKTsKKwkJCW11dGV4X3VubG9jaygmdHUtPmlvY3RsX2xvY2spOwog CQkJc2NoZWR1bGUoKTsKKwkJCW11dGV4X2xvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAkJCXNwaW5f bG9ja19pcnEoJnR1LT5xbG9jayk7CiAKIAkJCXJlbW92ZV93YWl0X3F1ZXVlKCZ0dS0+cWNoYW5n ZV9zbGVlcCwgJndhaXQpOwpAQCAtMTk2MSw3ICsxOTY1LDYgQEAgc3RhdGljIHNzaXplX3Qgc25k X3RpbWVyX3VzZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZmZlciwK IAkJdHUtPnF1c2VkLS07CiAJCXNwaW5fdW5sb2NrX2lycSgmdHUtPnFsb2NrKTsKIAotCQltdXRl eF9sb2NrKCZ0dS0+aW9jdGxfbG9jayk7CiAJCWlmICh0dS0+dHJlYWQpIHsKIAkJCWlmIChjb3B5 X3RvX3VzZXIoYnVmZmVyLCAmdHUtPnRxdWV1ZVtxaGVhZF0sCiAJCQkJCSBzaXplb2Yoc3RydWN0 IHNuZF90aW1lcl90cmVhZCkpKQpAQCAtMTk3MSw3ICsxOTc0LDYgQEAgc3RhdGljIHNzaXplX3Qg c25kX3RpbWVyX3VzZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZmZl ciwKIAkJCQkJIHNpemVvZihzdHJ1Y3Qgc25kX3RpbWVyX3JlYWQpKSkKIAkJCQllcnIgPSAtRUZB VUxUOwogCQl9Ci0JCW11dGV4X3VubG9jaygmdHUtPmlvY3RsX2xvY2spOwogCiAJCXNwaW5fbG9j a19pcnEoJnR1LT5xbG9jayk7CiAJCWlmIChlcnIgPCAwKQpAQCAtMTk4MSw2ICsxOTgzLDcgQEAg c3RhdGljIHNzaXplX3Qgc25kX3RpbWVyX3VzZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hh ciBfX3VzZXIgKmJ1ZmZlciwKIAl9CiAgX2Vycm9yOgogCXNwaW5fdW5sb2NrX2lycSgmdHUtPnFs b2NrKTsKKwltdXRleF91bmxvY2soJnR1LT5pb2N0bF9sb2NrKTsKIAlyZXR1cm4gcmVzdWx0ID4g MCA/IHJlc3VsdCA6IGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2N0eGZpL2N0aHcy MGsxLmMgYi9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYwppbmRleCAxODg1YmZlNmZmN2IuLmFi YWM3MjhhOTQ2MCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMKKysrIGIv c291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMKQEAgLTE5MDQsNyArMTkwNCw3IEBAIHN0YXRpYyBp bnQgaHdfY2FyZF9zdGFydChzdHJ1Y3QgaHcgKmh3KQogCQlyZXR1cm4gZXJyOwogCiAJLyogU2V0 IERNQSB0cmFuc2ZlciBtYXNrICovCi0JaWYgKGRtYV9zZXRfbWFzaygmcGNpLT5kZXYsIERNQV9C SVRfTUFTSyhkbWFfYml0cykpKSB7CisJaWYgKCFkbWFfc2V0X21hc2soJnBjaS0+ZGV2LCBETUFf QklUX01BU0soZG1hX2JpdHMpKSkgewogCQlkbWFfc2V0X2NvaGVyZW50X21hc2soJnBjaS0+ZGV2 LCBETUFfQklUX01BU0soZG1hX2JpdHMpKTsKIAl9IGVsc2UgewogCQlkbWFfc2V0X21hc2soJnBj aS0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9z eW1ib2wuYyBiL3Rvb2xzL3BlcmYvdXRpbC9zeW1ib2wuYwppbmRleCA2MzJiNTBjN2JjMjYuLjQ1 MWQ1NTJjNGE4OCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3N5bWJvbC5jCisrKyBiL3Rv b2xzL3BlcmYvdXRpbC9zeW1ib2wuYwpAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIHN5 bWJvbHNfX2ZpeHVwX2VuZChzdHJ1Y3QgcmJfcm9vdCAqc3ltYm9scykKIAogCS8qIExhc3QgZW50 cnkgKi8KIAlpZiAoY3Vyci0+ZW5kID09IGN1cnItPnN0YXJ0KQotCQljdXJyLT5lbmQgPSByb3Vu ZHVwKGN1cnItPnN0YXJ0LCA0MDk2KTsKKwkJY3Vyci0+ZW5kID0gcm91bmR1cChjdXJyLT5zdGFy dCwgNDA5NikgKyA0MDk2OwogfQogCiBzdGF0aWMgdm9pZCBfX21hcF9ncm91cHNfX2ZpeHVwX2Vu ZChzdHJ1Y3QgbWFwX2dyb3VwcyAqbWcsIGVudW0gbWFwX3R5cGUgdHlwZSkKZGlmZiAtLWdpdCBh L3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL3V0aWxzL2hlbHBlcnMvY3B1aWQuYyBiL3Rvb2xzL3Bvd2Vy L2NwdXBvd2VyL3V0aWxzL2hlbHBlcnMvY3B1aWQuYwppbmRleCA5MDY4OTVkMjFjY2UuLmZiNDYx NGRhNjBlYyAxMDA2NDQKLS0tIGEvdG9vbHMvcG93ZXIvY3B1cG93ZXIvdXRpbHMvaGVscGVycy9j cHVpZC5jCisrKyBiL3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL3V0aWxzL2hlbHBlcnMvY3B1aWQuYwpA QCAtMTU2LDYgKzE1Niw3IEBAIGludCBnZXRfY3B1X2luZm8odW5zaWduZWQgaW50IGNwdSwgc3Ry dWN0IGNwdXBvd2VyX2NwdV9pbmZvICpjcHVfaW5mbykKIAkJCQkJICovCiAJCQljYXNlIDB4MkM6 CS8qIFdlc3RtZXJlIEVQIC0gR3VsZnRvd24gKi8KIAkJCQljcHVfaW5mby0+Y2FwcyB8PSBDUFVQ T1dFUl9DQVBfSEFTX1RVUkJPX1JBVElPOworCQkJCWJyZWFrOwogCQkJY2FzZSAweDJBOgkvKiBT TkIgKi8KIAkJCWNhc2UgMHgyRDoJLyogU05CIFhlb24gKi8KIAkJCQljcHVfaW5mby0+Y2FwcyB8 PSBDUFVQT1dFUl9DQVBfSEFTX1RVUkJPX1JBVElPOwo= --=-3kj4GJRVySmTbeAcKL/f-- --=-U23PIPV0x0SgT3AA7H1h Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAllrlSwACgkQ57/I7JWG EQma9Q//S6rvDXXspeeCYbwTi4lm1UiUaD/UhdtIX762V2ccJ5HjluGc+3Gb2fVK 85nHNJiPHa7QgzdphdYH3oyW4yMyazNB/aGjRD9P71w/Sh6bliC6YxxqBycIpiRs zQVxklTGqfzGXuVXvIFwUqKtiCJRQeL9ARACBFFfa7WKGMAOyqpJng/yCRvL64iV ECs8bViXDhi2Eo+hZ6quANi3nWva5Zl1bZh++XcbKxKXt3Drg4G7I+9HJiBodRJE v4Tk2E+5Ko89KsYGifgfpVBf5wIZxksb1o1F0sJXM0GJ69pUF1HdpqhyCymzghX6 cY2buOb1lBu/pSwuGZE6Q297AIsKr5IP7CP1ka+e0/t9pg6wF7VoEzc9bJj60Qm3 1uRpp44UahrfvAJS6kHJI0Q7ZKpN2yLA9ZBkG6rV2WoR+KcMiH1gFEY1bOfBZbdD TBfmVoLwuz/jCdTmfmh6rvYkECGPVXXvRZDgRjtuydYMhXoRehu72RJttTsVe0PV L4yuoXIPPrzI3EQjiINIhaahYXgSqWyyM6ihdK7kMFZzUpF1/hZ8y5ZCSz9YPyRO 3Zti3epR+e3quFVl3HfyrVWlmgphSdZKhd5y42XKwBn6Hx0Sqrzp1tifzmMPcPMW EG7xZzEJ+eFaSN6LQ8MeFkBkKYFq3AsPG6aDg916sKkR4B0qsXE= =XU3m -----END PGP SIGNATURE----- --=-U23PIPV0x0SgT3AA7H1h--