From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10148 invoked by alias); 13 Nov 2009 09:27:42 -0000 Received: (qmail 10106 invoked by uid 22791); 13 Nov 2009 09:27:23 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-pz0-f189.google.com (HELO mail-pz0-f189.google.com) (209.85.222.189) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 13 Nov 2009 09:27:14 +0000 Received: by pzk27 with SMTP id 27so2037318pzk.12 for ; Fri, 13 Nov 2009 01:27:12 -0800 (PST) MIME-Version: 1.0 Received: by 10.142.6.10 with SMTP id 10mr444489wff.48.1258104432160; Fri, 13 Nov 2009 01:27:12 -0800 (PST) In-Reply-To: References: From: Hui Zhu Date: Fri, 13 Nov 2009 09:27:00 -0000 Message-ID: Subject: Re: [RFC] Prec multi-thread support To: gdb-patches ml Cc: Michael Snyder , tromey@redhat.com Content-Type: multipart/mixed; boundary=00504502b0abc4f0fd04783d4326 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-11/txt/msg00296.txt.bz2 --00504502b0abc4f0fd04783d4326 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 432 Hi guys, The new patch fix some small bugs. Thanks, Hui On Thu, Nov 12, 2009 at 16:25, Hui Zhu wrote: > Hi guys, > > This is the new version for multi-thread support. =A0It make > multi-thread work OK with record save and support thread exit when > record. > I think the code work of prec multi-thread support is done. =A0 =A0I can > begin to do some make it clear and some other things. > > Thanks, > Hui > --00504502b0abc4f0fd04783d4326 Content-Type: text/plain; charset=US-ASCII; name="prec-thread.txt" Content-Disposition: attachment; filename="prec-thread.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1yr4ujk2 Content-length: 53225 LS0tCiBhbWQ2NC1saW51eC10ZGVwLmMgfCAgICA0IAogZ2RidGhyZWFkLmgg ICAgICAgIHwgICAxMSAKIGkzODYtbGludXgtdGRlcC5jICB8ICAgIDQgCiBp Mzg2LXRkZXAuYyAgICAgICAgfCAgIDUyICsrLS0KIGkzODYtdGRlcC5oICAg ICAgICB8ICAgIDYgCiBsaW51eC1yZWNvcmQuYyAgICAgfCAgIDEzIC0KIGxp bnV4LXJlY29yZC5oICAgICB8ICAgIDIgCiByZWNvcmQuYyAgICAgICAgICAg fCAgNjgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiByZWNvcmQuaCAgICAgICAgICAgfCAgICAxIAog dGhyZWFkLmMgICAgICAgICAgIHwgICAgOSAKIDEwIGZpbGVzIGNoYW5nZWQs IDY0NyBpbnNlcnRpb25zKCspLCAxMzUgZGVsZXRpb25zKC0pCgotLS0gYS9h bWQ2NC1saW51eC10ZGVwLmMKKysrIGIvYW1kNjQtbGludXgtdGRlcC5jCkBA IC0xMTU1LDcgKzExNTUsNyBAQCBzdGF0aWMgc3RydWN0IGxpbnV4X3JlY29y ZF90ZGVwIGFtZDY0X2xpCiAjZGVmaW5lIFJFQ09SRF9BUkNIX0dFVF9HUwkw eDEwMDQKIAogc3RhdGljIGludAotYW1kNjRfbGludXhfc3lzY2FsbF9yZWNv cmQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCithbWQ2NF9saW51eF9z eXNjYWxsX3JlY29yZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09S RV9BRERSIGFkZHIpCiB7CiAgIGludCByZXQ7CiAgIFVMT05HRVNUIHN5c2Nh bGxfbmF0aXZlOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgYW1kNjRfbGludXhf c3lzY2FsbF9yZWNvcmQgKHN0cnVjdCByZWdjYQogICAgIH0KICAgZWxzZQog ICAgIHsKLSAgICAgIHJldCA9IHJlY29yZF9saW51eF9zeXN0ZW1fY2FsbCAo c3lzY2FsbF9nZGIsIHJlZ2NhY2hlLAorICAgICAgcmV0ID0gcmVjb3JkX2xp bnV4X3N5c3RlbV9jYWxsIChzeXNjYWxsX2dkYiwgYWRkciwgcmVnY2FjaGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhbWQ2 NF9saW51eF9yZWNvcmRfdGRlcCk7CiAgICAgICBpZiAocmV0KQogICAgICAg ICByZXR1cm4gcmV0OwotLS0gYS9nZGJ0aHJlYWQuaAorKysgYi9nZGJ0aHJl YWQuaApAQCAtMjksNiArMjksMTUgQEAgc3RydWN0IHN5bXRhYjsKICNpbmNs dWRlICJ1aS1vdXQuaCIKICNpbmNsdWRlICJpbmZlcmlvci5oIgogCisvKiBG cm9udGVuZCB2aWV3IG9mIHRoZSB0aHJlYWQgc3RhdGUuICBQb3NzaWJsZSBl eHRlbnNpb25zOiBzdGVwcGluZywKKyAgIGZpbmlzaGluZywgdW50aWwobGlu ZyksLi4uICAqLworZW51bSB0aHJlYWRfc3RhdGUKK3sKKyAgVEhSRUFEX1NU T1BQRUQsCisgIFRIUkVBRF9SVU5OSU5HLAorICBUSFJFQURfRVhJVEVELAor fTsKKwogc3RydWN0IHRocmVhZF9pbmZvCiB7CiAgIHN0cnVjdCB0aHJlYWRf aW5mbyAqbmV4dDsKQEAgLTM3LDYgKzQ2LDggQEAgc3RydWN0IHRocmVhZF9p bmZvCiAJCQkJICAgIGtlcm5lbCB0aHJlYWQgaWQsIGV0Yy4gICovCiAgIGlu dCBudW07CQkJLyogQ29udmVuaWVudCBoYW5kbGUgKEdEQiB0aHJlYWQgaWQp ICovCiAKKyAgaW50IHJlY29yZF9pc193YWl0aW5nOworCiAgIC8qIE5vbi16 ZXJvIG1lYW5zIHRoZSB0aHJlYWQgaXMgZXhlY3V0aW5nLiAgTm90ZTogdGhp cyBpcyBkaWZmZXJlbnQKICAgICAgZnJvbSBzYXlpbmcgdGhhdCB0aGVyZSBp cyBhbiBhY3RpdmUgdGFyZ2V0IGFuZCB3ZSBhcmUgc3RvcHBlZCBhdAogICAg ICBhIGJyZWFrcG9pbnQsIGZvciBpbnN0YW5jZS4gIFRoaXMgaXMgYSByZWFs IGluZGljYXRvciB3aGV0aGVyIHRoZQotLS0gYS9pMzg2LWxpbnV4LXRkZXAu YworKysgYi9pMzg2LWxpbnV4LXRkZXAuYwpAQCAtNDExLDcgKzQxMSw3IEBA IGkzODZfY2Fub25pY2FsaXplX3N5c2NhbGwgKGludCBzeXNjYWxsKQogc3Rh dGljIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcCBpMzg2X2xpbnV4X3JlY29y ZF90ZGVwOwogCiBzdGF0aWMgaW50Ci1pMzg2X2xpbnV4X2ludHg4MF9zeXNl bnRlcl9yZWNvcmQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCitpMzg2 X2xpbnV4X2ludHg4MF9zeXNlbnRlcl9yZWNvcmQgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIENPUkVfQUREUiBhZGRyKQogewogICBpbnQgcmV0Owog ICBMT05HRVNUIHN5c2NhbGxfbmF0aXZlOwpAQCAtNDM3LDcgKzQzNyw3IEBA IGkzODZfbGludXhfaW50eDgwX3N5c2VudGVyX3JlY29yZCAoc3RydWMKICAg ICAgcmV0dXJuIDA7CiAgICB9CiAKLSAgcmV0ID0gcmVjb3JkX2xpbnV4X3N5 c3RlbV9jYWxsIChzeXNjYWxsX2dkYiwgcmVnY2FjaGUsCisgIHJldCA9IHJl Y29yZF9saW51eF9zeXN0ZW1fY2FsbCAoc3lzY2FsbF9nZGIsIGFkZHIsIHJl Z2NhY2hlLAogCQkJCSAgJmkzODZfbGludXhfcmVjb3JkX3RkZXApOwogICBp ZiAocmV0KQogICAgIHJldHVybiByZXQ7Ci0tLSBhL2kzODYtdGRlcC5jCisr KyBiL2kzODYtdGRlcC5jCkBAIC0zMTYwLDEwICszMTYwLDExIEBAIGkzODZf cmVjb3JkX2xlYV9tb2RybSAoc3RydWN0IGkzODZfcmVjb3IKIAogICBpZiAo aXJwLT5vdmVycmlkZSA+PSAwKQogICAgIHsKLSAgICAgIHdhcm5pbmcgKF8o IlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSBjaGFuZ2UgIgot ICAgICAgICAgICAgICAgICAib2YgaW5zdHJ1Y3Rpb24gYXQgYWRkcmVzcyAl cyBiZWNhdXNlIGl0ICIKLSAgICAgICAgICAgICAgICAgImNhbid0IGdldCB0 aGUgdmFsdWUgb2YgdGhlIHNlZ21lbnQgcmVnaXN0ZXIuIiksCi0gICAgICAg ICAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXJwLT5vcmlnX2FkZHIpKTsK KyAgICAgIGlmIChyZWNvcmRfZGVidWcpCisgICAgICAgIHdhcm5pbmcgKF8o IlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSBjaGFuZ2UgIgor ICAgICAgICAgICAgICAgICAgICJvZiBpbnN0cnVjdGlvbiBhdCBhZGRyZXNz ICVzIGJlY2F1c2UgaXQgIgorICAgICAgICAgICAgICAgICAgICJjYW4ndCBn ZXQgdGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50IHJlZ2lzdGVyLiIpLAorICAg ICAgICAgICAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXJwLT5vcmlnX2Fk ZHIpKTsKICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNDA0MiwxMSAr NDA0MywxMiBAQCByZXN3aXRjaDoKICAgICBjYXNlIDB4YTM6CiAgICAgICBp ZiAoaXIub3ZlcnJpZGUgPj0gMCkKICAgICAgICAgewotCSAgd2FybmluZyAo XygiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5IGNoYW5nZSAi Ci0gICAgICAgICAgICAgICAgICAgICAib2YgaW5zdHJ1Y3Rpb24gYXQgYWRk cmVzcyAlcyBiZWNhdXNlICIKLSAgICAgICAgICAgICAgICAgICAgICJpdCBj YW4ndCBnZXQgdGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50ICIKLSAgICAgICAg ICAgICAgICAgICAgICJyZWdpc3Rlci4iKSwKLSAgICAgICAgICAgICAgICAg ICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXIub3JpZ19hZGRyKSk7CisgICAgICAg ICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkgICAgd2FybmluZyAoXygiUHJvY2Vz cyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5IGNoYW5nZSAiCisgICAgICAg ICAgICAgICAgICAgICAgICJvZiBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzICVz IGJlY2F1c2UgIgorICAgICAgICAgICAgICAgICAgICAgICAiaXQgY2FuJ3Qg Z2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VnbWVudCAiCisgICAgICAgICAgICAg ICAgICAgICAgICJyZWdpc3Rlci4iKSwKKyAgICAgICAgICAgICAgICAgICAg IHBhZGRyZXNzIChnZGJhcmNoLCBpci5vcmlnX2FkZHIpKTsKIAl9CiAgICAg ICBlbHNlCiAJewpAQCAtNDQ2NywxMSArNDQ2OSwxMiBAQCByZXN3aXRjaDoK ICAgICAgICAgICBpZiAoaXIuYWZsYWcgJiYgKGVzICE9IGRzKSkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgLyogYWRkciArPSAoKHVpbnQzMl90 KSByZWFkX3JlZ2lzdGVyIChJMzg2X0VTX1JFR05VTSkpIDw8IDQ7ICovCi0g ICAgICAgICAgICAgIHdhcm5pbmcgKF8oIlByb2Nlc3MgcmVjb3JkIGlnbm9y ZXMgdGhlIG1lbW9yeSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNo YW5nZSBvZiBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzICVzICIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAiYmVjYXVzZSBpdCBjYW4ndCBnZXQgdGhlIHZh bHVlIG9mIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkVTIHNl Z21lbnQgcmVnaXN0ZXIuIiksCi0gICAgICAgICAgICAgICAgICAgICAgIHBh ZGRyZXNzIChnZGJhcmNoLCBpci5vcmlnX2FkZHIpKTsKKyAgICAgICAgICAg ICAgaWYgKHJlY29yZF9kZWJ1ZykKKyAgICAgICAgICAgICAgICB3YXJuaW5n IChfKCJQcm9jZXNzIHJlY29yZCBpZ25vcmVzIHRoZSBtZW1vcnkgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZSBvZiBpbnN0cnVjdGlv biBhdCBhZGRyZXNzICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICJiZWNhdXNlIGl0IGNhbid0IGdldCB0aGUgdmFsdWUgb2YgdGhlICIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJFUyBzZWdtZW50IHJlZ2lzdGVy LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyZXNzIChnZGJh cmNoLCBpci5vcmlnX2FkZHIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICB7CkBAIC00ODczLDcgKzQ4NzYsNyBAQCBy ZXN3aXRjaDoKIAkgICAgaXIuYWRkciAtPSAyOwogCSAgICBnb3RvIG5vX3N1 cHBvcnQ7CiAJICB9Ci0JcmV0ID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKS0+ aTM4Nl9pbnR4ODBfcmVjb3JkIChpci5yZWdjYWNoZSk7CisJcmV0ID0gZ2Ri YXJjaF90ZGVwIChnZGJhcmNoKS0+aTM4Nl9pbnR4ODBfcmVjb3JkIChpci5y ZWdjYWNoZSwgaXIuYWRkcik7CiAJaWYgKHJldCkKIAkgIHJldHVybiByZXQ7 CiAgICAgICB9CkBAIC00OTc1LDcgKzQ5NzgsOCBAQCByZXN3aXRjaDoKIAkg ICAgaXIuYWRkciAtPSAyOwogCSAgICBnb3RvIG5vX3N1cHBvcnQ7CiAJICB9 Ci0JcmV0ID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKS0+aTM4Nl9zeXNlbnRl cl9yZWNvcmQgKGlyLnJlZ2NhY2hlKTsKKwlyZXQgPSBnZGJhcmNoX3RkZXAg KGdkYmFyY2gpLT5pMzg2X3N5c2VudGVyX3JlY29yZCAoaXIucmVnY2FjaGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpci5hZGRyKTsKIAlpZiAocmV0KQogCSAgcmV0 dXJuIHJldDsKICAgICAgIH0KQEAgLTUwMDAsNyArNTAwNCw4IEBAIHJlc3dp dGNoOgogCSAgICBpci5hZGRyIC09IDI7CiAJICAgIGdvdG8gbm9fc3VwcG9y dDsKIAkgIH0KLQlyZXQgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2 X3N5c2NhbGxfcmVjb3JkIChpci5yZWdjYWNoZSk7CisJcmV0ID0gZ2RiYXJj aF90ZGVwIChnZGJhcmNoKS0+aTM4Nl9zeXNjYWxsX3JlY29yZCAoaXIucmVn Y2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlyLmFkZHIpOwogCWlmIChyZXQpCiAJ ICByZXR1cm4gcmV0OwogICAgICAgfQpAQCAtNTEzNiwxMiArNTE0MSwxMyBA QCByZXN3aXRjaDoKIAkgICAgICAvKiBzaWR0ICovCiAJICAgICAgaWYgKGly Lm92ZXJyaWRlID49IDApCiAJCXsKLQkJICB3YXJuaW5nIChfKCJQcm9jZXNz IHJlY29yZCBpZ25vcmVzIHRoZSBtZW1vcnkgIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiY2hhbmdlIG9mIGluc3RydWN0aW9uIGF0ICIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImFkZHJlc3MgJXMgYmVjYXVz ZSBpdCBjYW4ndCBnZXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAidGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50ICIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInJlZ2lzdGVyLiIpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGlyLm9yaWdfYWRkcikp OworICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkJICAg IHdhcm5pbmcgKF8oIlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9y eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZSBv ZiBpbnN0cnVjdGlvbiBhdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImFkZHJlc3MgJXMgYmVjYXVzZSBpdCBjYW4ndCBnZXQgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgdmFsdWUgb2YgdGhl IHNlZ21lbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJy ZWdpc3Rlci4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFk ZHJlc3MgKGdkYmFyY2gsIGlyLm9yaWdfYWRkcikpOwogCQl9CiAJICAgICAg ZWxzZQogCQl7Ci0tLSBhL2kzODYtdGRlcC5oCisrKyBiL2kzODYtdGRlcC5o CkBAIC0xMTUsMTEgKzExNSwxMSBAQCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCiAg ICAgIGluIEdEQiBpcyBub3Qgc2FtZSBhcyBJMzg2IGluc3RydWN0aW9ucy4g ICovCiAgIGNvbnN0IGludCAqcmVjb3JkX3JlZ21hcDsKICAgLyogUGFyc2Ug aW50eDgwIGFyZ3MuICAqLwotICBpbnQgKCppMzg2X2ludHg4MF9yZWNvcmQp IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKKyAgaW50ICgqaTM4Nl9p bnR4ODBfcmVjb3JkKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09S RV9BRERSIGFkZHIpOwogICAvKiBQYXJzZSBzeXNlbnRlciBhcmdzLiAgKi8K LSAgaW50ICgqaTM4Nl9zeXNlbnRlcl9yZWNvcmQpIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlKTsKKyAgaW50ICgqaTM4Nl9zeXNlbnRlcl9yZWNvcmQp IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgYWRkcik7 CiAgIC8qIFBhcnNlIHN5c2NhbGwgYXJncy4gICovCi0gIGludCAoKmkzODZf c3lzY2FsbF9yZWNvcmQpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsK KyAgaW50ICgqaTM4Nl9zeXNjYWxsX3JlY29yZCkgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIENPUkVfQUREUiBhZGRyKTsKIH07CiAKIC8qIEZsb2F0 aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0tLSBhL2xpbnV4LXJlY29yZC5j CisrKyBiL2xpbnV4LXJlY29yZC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5j bHVkZSAidGFyZ2V0LmgiCiAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKICNpbmNs dWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgImluZmVyaW9yLmgiCiAjaW5j bHVkZSAicmVjb3JkLmgiCiAjaW5jbHVkZSAibGludXgtcmVjb3JkLmgiCiAK QEAgLTIyMiw3ICsyMjMsNyBAQCByZWNvcmRfbGludXhfbXNnaGRyIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlCiAgICBSZXR1cm4gLTEgaWYgc29tZXRoaW5nIHdy b25nLiAgKi8KIAogaW50Ci1yZWNvcmRfbGludXhfc3lzdGVtX2NhbGwgKGVu dW0gZ2RiX3N5c2NhbGwgc3lzY2FsbCwgCityZWNvcmRfbGludXhfc3lzdGVt X2NhbGwgKGVudW0gZ2RiX3N5c2NhbGwgc3lzY2FsbCwgQ09SRV9BRERSIGFk ZHIsCiAJCQkgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcCAq dGRlcCkKIHsKQEAgLTI0Miw4ICsyNDMsOSBAQCByZWNvcmRfbGludXhfc3lz dGVtX2NhbGwgKGVudW0gZ2RiX3N5c2NhCiAgICAgICAgIGludCBxOwogICAg ICAgICB0YXJnZXRfdGVybWluYWxfb3VycyAoKTsKICAgICAgICAgcSA9IHlx dWVyeSAoXygiVGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgc3lzY2FsbCBleGl0 LiAgIgotICAgICAgICAgICAgICAgICAgICAgICJJdCB3aWxsIG1ha2UgdGhl IHByb2dyYW0gZXhpdC4gICIKLSAgICAgICAgICAgICAgICAgICAgICAiRG8g eW91IHdhbnQgdG8gc3RvcCB0aGUgcHJvZ3JhbT8iKSk7CisgICAgICAgICAg ICAgICAgICAgICAgIkl0IHdpbGwgbWFrZSB0aGUgdGhyZWFkICVzIGV4aXQu ICAiCisgICAgICAgICAgICAgICAgICAgICAgIkRvIHlvdSB3YW50IHRvIHN0 b3AgdGhlIHByb2dyYW0/IiksCisgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9waWRfdG9fc3RyIChpbmZlcmlvcl9wdGlkKSk7CiAgICAgICAgIHRhcmdl dF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKICAgICAgICAgaWYgKHEpCiAgICAg ICAgICAgcmV0dXJuIDE7CkBAIC0xMjA5LDEwICsxMjExLDEzIEBAIHJlY29y ZF9saW51eF9zeXN0ZW1fY2FsbCAoZW51bSBnZGJfc3lzY2EKIAogICAgIGNh c2UgZ2RiX3N5c19mc3luYzoKICAgICBjYXNlIGdkYl9zeXNfc2lncmV0dXJu OgotICAgIGNhc2UgZ2RiX3N5c19jbG9uZToKICAgICBjYXNlIGdkYl9zeXNf c2V0ZG9tYWlubmFtZToKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBnZGJf c3lzX2Nsb25lOgorICAgICAgcmVjb3JkX3N0ZXAgPSAwOworICAgICAgYnJl YWs7CisKICAgICBjYXNlIGdkYl9zeXNfbmV3dW5hbWU6CiAgICAgICByZWdj YWNoZV9yYXdfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHRkZXAtPmFyZzEs ICZ0bXB1bG9uZ2VzdCk7CiAgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICgoQ09SRV9BRERSKSB0bXB1bG9uZ2VzdCwKLS0tIGEvbGludXgt cmVjb3JkLmgKKysrIGIvbGludXgtcmVjb3JkLmgKQEAgLTUzNCw3ICs1MzQs NyBAQCBlbnVtIGdkYl9zeXNjYWxsIHsKIAogLyogUmVjb3JkIGEgbGludXgg c3lzY2FsbC4gICovCiAKLWV4dGVybiBpbnQgcmVjb3JkX2xpbnV4X3N5c3Rl bV9jYWxsIChlbnVtIGdkYl9zeXNjYWxsIG51bSwgCitleHRlcm4gaW50IHJl Y29yZF9saW51eF9zeXN0ZW1fY2FsbCAoZW51bSBnZGJfc3lzY2FsbCBudW0s IENPUkVfQUREUiBhZGRyLAogCQkJCSAgICAgc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwKIAkJCQkgICAgIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcCAq dGRlcCk7CiAjZW5kaWYgLyogX0xJTlVYX1JFQ09SRF9IXyAqLwotLS0gYS9y ZWNvcmQuYworKysgYi9yZWNvcmQuYwpAQCAtMzAsNiArMzAsNyBAQAogI2lu Y2x1ZGUgInJlY29yZC5oIgogI2luY2x1ZGUgImVsZi1iZmQuaCIKICNpbmNs dWRlICJnY29yZS5oIgorI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAKICNpbmNs dWRlIDxzaWduYWwuaD4KIApAQCAtNjAsNiArNjEsOCBAQAogCiAjZGVmaW5l IFJFQ09SRF9GSUxFX01BR0lDCW5ldG9yZGVyMzIoMHgyMDA5MTAxNikKIAor I2RlZmluZSBSRUNPUkRfVEhSRUFECShyZWNvcmRfb3BzLmJlbmVhdGgtPnRv X3N0cmF0dW0gPT0gdGhyZWFkX3N0cmF0dW0pCisKIC8qIFRoZXNlIGFyZSB0 aGUgY29yZSBzdHJ1Y3RzIG9mIHRoZSBwcm9jZXNzIHJlY29yZCBmdW5jdGlv bmFsaXR5LgogCiAgICBBIHJlY29yZF9lbnRyeSBpcyBhIHJlY29yZCBvZiB0 aGUgdmFsdWUgY2hhbmdlIG9mIGEgcmVnaXN0ZXIKQEAgLTEwNiw3ICsxMDks OCBAQCBlbnVtIHJlY29yZF90eXBlCiB7CiAgIHJlY29yZF9lbmQgPSAwLAog ICByZWNvcmRfcmVnLAotICByZWNvcmRfbWVtCisgIHJlY29yZF9tZW0sCisg IHJlY29yZF9wdGlkCiB9OwogCiAvKiBUaGlzIGlzIHRoZSBkYXRhIHN0cnVj dHVyZSB0aGF0IG1ha2VzIHVwIHRoZSBleGVjdXRpb24gbG9nLgpAQCAtMTQ0 LDYgKzE0OCw4IEBAIHN0cnVjdCByZWNvcmRfZW50cnkKICAgICBzdHJ1Y3Qg cmVjb3JkX3JlZ19lbnRyeSByZWc7CiAgICAgLyogbWVtICovCiAgICAgc3Ry dWN0IHJlY29yZF9tZW1fZW50cnkgbWVtOworICAgIC8qIHB0aWQgKi8KKyAg ICBwdGlkX3QgcHRpZDsKICAgICAvKiBlbmQgKi8KICAgICBzdHJ1Y3QgcmVj b3JkX2VuZF9lbnRyeSBlbmQ7CiAgIH0gdTsKQEAgLTE5NiwxMCArMjAyLDE5 IEBAIHN0YXRpYyBpbnQgcmVjb3JkX2luc25fbnVtID0gMDsKICAgIHRoYW4g Y291bnQgb2YgaW5zbnMgcHJlc2VudGx5IGluIGV4ZWN1dGlvbiBsb2cpLiAg Ki8KIHN0YXRpYyBVTE9OR0VTVCByZWNvcmRfaW5zbl9jb3VudDsKIAorLyog SW4gcmVjb3JkIG1vZGUsIGl0J3MgdGhlIHN0ZXAgb2YgbmV4dCByZXN1bWUu ICAqLworaW50IHJlY29yZF9zdGVwOworCisvKiBUaGUgY3VycmVudCBpbmZl cmlvcl9wdGlkIHRoYXQgaXMgcmVjb3JkZWQuICAqLworc3RhdGljIHB0aWRf dCByZWNvcmRfcHJldl9wdGlkOworCiAvKiBUaGUgdGFyZ2V0X29wcyBvZiBw cm9jZXNzIHJlY29yZC4gICovCiBzdGF0aWMgc3RydWN0IHRhcmdldF9vcHMg cmVjb3JkX29wczsKIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyByZWNvcmRf Y29yZV9vcHM7CiAKK3N0YXRpYyBzdHJ1Y3Qgb2JzZXJ2ZXIgKnJlY29yZF9u ZXdfdGhyZWFkX29ic2VydmVyID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3Qgb2Jz ZXJ2ZXIgKnJlY29yZF90aHJlYWRfZXhpdF9vYnNlcnZlciA9IE5VTEw7CisK IC8qIFRoZSBiZW5lYXRoIGZ1bmN0aW9uIHBvaW50ZXJzLiAgKi8KIHN0YXRp YyBzdHJ1Y3QgdGFyZ2V0X29wcyAqcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1l X29wczsKIHN0YXRpYyB2b2lkICgqcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1l KSAoc3RydWN0IHRhcmdldF9vcHMgKiwgcHRpZF90LCBpbnQsCkBAIC0yODUs NiArMzAwLDI3IEBAIHJlY29yZF9tZW1fcmVsZWFzZSAoc3RydWN0IHJlY29y ZF9lbnRyeSAKICAgeGZyZWUgKHJlYyk7CiB9CiAKKy8qIEFsbG9jIGEgcmVj b3JkX3B0aWQgcmVjb3JkIGVudHJ5LiAgKi8KKworc3RhdGljIGlubGluZSBz dHJ1Y3QgcmVjb3JkX2VudHJ5ICoKK3JlY29yZF9wdGlkX2FsbG9jICh2b2lk KQoreworICBzdHJ1Y3QgcmVjb3JkX2VudHJ5ICpyZWM7CisKKyAgcmVjID0g KHN0cnVjdCByZWNvcmRfZW50cnkgKikgeGNhbGxvYyAoMSwgc2l6ZW9mIChz dHJ1Y3QgcmVjb3JkX2VudHJ5KSk7CisgIHJlYy0+dHlwZSA9IHJlY29yZF9w dGlkOworCisgIHJldHVybiByZWM7Cit9CisKKy8qIEZyZWUgYSByZWNvcmRf cHRpZCByZWNvcmQgZW50cnkuICAqLworCitzdGF0aWMgaW5saW5lIHZvaWQK K3JlY29yZF9wdGlkX3JlbGVhc2UgKHN0cnVjdCByZWNvcmRfZW50cnkgKnJl YykKK3sKKyAgeGZyZWUgKHJlYyk7Cit9CisKIC8qIEFsbG9jIGEgcmVjb3Jk X2VuZCByZWNvcmQgZW50cnkuICAqLwogCiBzdGF0aWMgaW5saW5lIHN0cnVj dCByZWNvcmRfZW50cnkgKgpAQCAtMzIxLDYgKzM1Nyw5IEBAIHJlY29yZF9l bnRyeV9yZWxlYXNlIChzdHJ1Y3QgcmVjb3JkX2VudHIKICAgY2FzZSByZWNv cmRfbWVtOgogICAgIHJlY29yZF9tZW1fcmVsZWFzZSAocmVjKTsKICAgICBi cmVhazsKKyAgY2FzZSByZWNvcmRfcHRpZDoKKyAgICByZWNvcmRfcHRpZF9y ZWxlYXNlIChyZWMpOworICAgIGJyZWFrOwogICBjYXNlIHJlY29yZF9lbmQ6 CiAgICAgcmVjb3JkX2VuZF9yZWxlYXNlIChyZWMpOwogICAgIGJyZWFrOwpA QCAtMzI4LDYgKzM2NywxNiBAQCByZWNvcmRfZW50cnlfcmVsZWFzZSAoc3Ry dWN0IHJlY29yZF9lbnRyCiAgIHJldHVybiB0eXBlOwogfQogCisvKiBSZW1v dmUgb25lIHJlY29yZCBlbnRyeSBmcm9tIHJlY29yZF9saXN0LiAgKi8KKwor c3RhdGljIHZvaWQKK3JlY29yZF9lbnRyeV9yZW1vdmVfZnJvbV9saXN0IChz dHJ1Y3QgcmVjb3JkX2VudHJ5ICpyZWMpCit7CisgIGlmIChyZWMtPm5leHQp CisgICAgcmVjLT5uZXh0LT5wcmV2ID0gcmVjLT5wcmV2OworICByZWMtPnBy ZXYtPm5leHQgPSByZWMtPm5leHQ7Cit9CisKIC8qIEZyZWUgYWxsIHJlY29y ZCBlbnRyaWVzIGluIGxpc3QgcG9pbnRlZCB0byBieSBSRUMuICAqLwogCiBz dGF0aWMgdm9pZApAQCAtNTA5LDYgKzU1OCwyNCBAQCByZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKENPUkVfQUREUiBhZGRyCiAgIHJldHVybiAwOwogfQog CitzdGF0aWMgdm9pZAorcmVjb3JkX2FyY2hfbGlzdF9hZGRfcHRpZCAocHRp ZF90ICpwdGlkKQoreworICBzdHJ1Y3QgcmVjb3JkX2VudHJ5ICpyZWM7CisK KyAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpCisgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorCQkJIlByb2Nlc3MgcmVjb3JkOiBhZGQgcHRp ZCA9ICVzIHRvICIKKwkJCSJyZWNvcmQgbGlzdC5cbiIsCisJCQl0YXJnZXRf cGlkX3RvX3N0ciAoKnB0aWQpKTsKKworICByZWMgPSByZWNvcmRfcHRpZF9h bGxvYyAoKTsKKworICByZWMtPnUucHRpZCA9ICpwdGlkOworCisgIHJlY29y ZF9hcmNoX2xpc3RfYWRkIChyZWMpOworfQorCiAvKiBBZGQgYSByZWNvcmRf ZW5kIHR5cGUgc3RydWN0IHJlY29yZF9lbnRyeSB0byByZWNvcmRfYXJjaF9s aXN0LiAgKi8KIAogaW50CkBAIC01NzAsNyArNjM3LDYgQEAgcmVjb3JkX2Fy Y2hfbGlzdF9jbGVhbnVwcyAodm9pZCAqaWdub3JlKQogICAgcmVjb3JkX2Fy Y2hfbGlzdCwgYW5kIGFkZCBpdCB0byByZWNvcmRfbGlzdC4gICovCiAKIHN0 cnVjdCByZWNvcmRfbWVzc2FnZV9hcmdzIHsKLSAgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZTsKICAgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ25hbDsKIH07 CiAKQEAgLTU3OSwxNSArNjQ1LDIxIEBAIHJlY29yZF9tZXNzYWdlICh2b2lk ICphcmdzKQogewogICBpbnQgcmV0OwogICBzdHJ1Y3QgcmVjb3JkX21lc3Nh Z2VfYXJncyAqbXlhcmdzID0gYXJnczsKLSAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAobXlhcmdzLT5yZWdjYWNoZSk7 CisgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7CisgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoOwogICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFudXBz ID0gbWFrZV9jbGVhbnVwIChyZWNvcmRfYXJjaF9saXN0X2NsZWFudXBzLCAw KTsKIAorICByZWNvcmRfc3RlcCA9IDE7CisKICAgcmVjb3JkX2FyY2hfbGlz dF9oZWFkID0gTlVMTDsKICAgcmVjb3JkX2FyY2hfbGlzdF90YWlsID0gTlVM TDsKIAogICAvKiBDaGVjayByZWNvcmRfaW5zbl9udW0uICAqLwogICByZWNv cmRfY2hlY2tfaW5zbl9udW0gKDEpOwogCisgIHJlZ2NhY2hlID0gZ2V0X2N1 cnJlbnRfcmVnY2FjaGUgKCk7CisgIGdkYmFyY2ggPSBnZXRfcmVnY2FjaGVf YXJjaCAocmVnY2FjaGUpOworCiAgIC8qIElmIGdkYiBzZW5kcyBhIHNpZ25h bCB2YWx1ZSB0byB0YXJnZXRfcmVzdW1lLAogICAgICBzYXZlIGl0IGluIHRo ZSAnZW5kJyBmaWVsZCBvZiB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uCiAK QEAgLTYxMCwyMCArNjgyLDQ1IEBAIHJlY29yZF9tZXNzYWdlICh2b2lkICph cmdzKQogICAgICBCdXQgd2Ugc2hvdWxkIHN0aWxsIGRlbGl2ZXIgdGhlIHNp Z25hbCB0byBnZGIgZHVyaW5nIHRoZSByZXBsYXksCiAgICAgIGlmIHdlIGRl bGl2ZXJlZCBpdCBkdXJpbmcgdGhlIHJlY29yZGluZy4gIFRoZXJlZm9yZSB3 ZSBzaG91bGQKICAgICAgcmVjb3JkIHRoZSBzaWduYWwgZHVyaW5nIHJlY29y ZF93YWl0LCBub3QgcmVjb3JkX3Jlc3VtZS4gICovCi0gIGlmIChyZWNvcmRf bGlzdCAhPSAmcmVjb3JkX2ZpcnN0KSAgICAvKiBGSVhNRSBiZXR0ZXIgd2F5 IHRvIGNoZWNrICovCisgIGlmIChwdGlkX2VxdWFsIChyZWNvcmRfcHJldl9w dGlkLCBpbmZlcmlvcl9wdGlkKSkKICAgICB7Ci0gICAgICBnZGJfYXNzZXJ0 IChyZWNvcmRfbGlzdC0+dHlwZSA9PSByZWNvcmRfZW5kKTsKLSAgICAgIHJl Y29yZF9saXN0LT51LmVuZC5zaWd2YWwgPSBteWFyZ3MtPnNpZ25hbDsKKyAg ICAgIGlmIChteWFyZ3MtPnNpZ25hbCAhPSBUQVJHRVRfU0lHTkFMXzApCisg ICAgICAgIHsKKyAgICAgICAgICBnZGJfYXNzZXJ0IChyZWNvcmRfbGlzdC0+ dHlwZSA9PSByZWNvcmRfZW5kKTsKKyAgICAgICAgICByZWNvcmRfbGlzdC0+ dS5lbmQuc2lndmFsID0gbXlhcmdzLT5zaWduYWw7CisgICAgICAgIH0KKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAobXlhcmdzLT5zaWduYWwg IT0gVEFSR0VUX1NJR05BTF8wKQorICAgICAgICB7CisgICAgICAgICAgc3Ry dWN0IHJlY29yZF9lbnRyeSAqcmVjOworICAgICAgICAgIGZvciAocmVjID0g cmVjb3JkX2xpc3Q7IHJlYyAhPSByZWNvcmRfZmlyc3QubmV4dDsgcmVjID0g cmVjLT5wcmV2KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZiAo cmVjLT50eXBlID09IHJlY29yZF9wdGlkCisgICAgICAgICAgICAgICAgICAm JiBwdGlkX2VxdWFsIChyZWMtPnUucHRpZCwgaW5mZXJpb3JfcHRpZCkpCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgZ2RiX2Fzc2Vy dCAocmVjLT5wcmV2LT50eXBlID09IHJlY29yZF9lbmQpOworICAgICAgICAg ICAgICAgICAgcmVjLT5wcmV2LT51LmVuZC5zaWd2YWwgPSBteWFyZ3MtPnNp Z25hbDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAvKiBJ ZiB0aGUgaW5mZXJpb3JfcHRpZCBjaGFuZ2UgKGluZmVyaW9yX3B0aWQgaXMg bm90IHNhbWUgd2l0aAorICAgICAgICAgcmVjb3JkX3ByZXZfcHRpZCksIHJl Y29yZCByZWNvcmRfcHJldl9wdGlkIHRvIHJlY29yZCBsaXN0LiAgKi8KKyAg ICAgIHJlY29yZF9hcmNoX2xpc3RfYWRkX3B0aWQgKCZyZWNvcmRfcHJldl9w dGlkKTsKKyAgICAgIHJlY29yZF9wcmV2X3B0aWQgPSBpbmZlcmlvcl9wdGlk OwogICAgIH0KIAogICBpZiAobXlhcmdzLT5zaWduYWwgPT0gVEFSR0VUX1NJ R05BTF8wCiAgICAgICB8fCAhZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9zaWdu YWxfcCAoZ2RiYXJjaCkpCiAgICAgcmV0ID0gZ2RiYXJjaF9wcm9jZXNzX3Jl Y29yZCAoZ2RiYXJjaCwKLQkJCQkgIG15YXJncy0+cmVnY2FjaGUsCi0JCQkJ ICByZWdjYWNoZV9yZWFkX3BjIChteWFyZ3MtPnJlZ2NhY2hlKSk7CisJCQkJ ICByZWdjYWNoZSwKKwkJCQkgIHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hl KSk7CiAgIGVsc2UKICAgICByZXQgPSBnZGJhcmNoX3Byb2Nlc3NfcmVjb3Jk X3NpZ25hbCAoZ2RiYXJjaCwKLQkJCQkJIG15YXJncy0+cmVnY2FjaGUsCisJ CQkJCSByZWdjYWNoZSwKIAkJCQkJIG15YXJncy0+c2lnbmFsKTsKIAogICBp ZiAocmV0ID4gMCkKQEAgLTY0NiwxMiArNzQzLDEwIEBAIHJlY29yZF9tZXNz YWdlICh2b2lkICphcmdzKQogfQogCiBzdGF0aWMgaW50Ci1kb19yZWNvcmRf bWVzc2FnZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLQkJICAgZW51 bSB0YXJnZXRfc2lnbmFsIHNpZ25hbCwgaW50IGNhdGNoKQorZG9fcmVjb3Jk X21lc3NhZ2UgKGVudW0gdGFyZ2V0X3NpZ25hbCBzaWduYWwsIGludCBjYXRj aCkKIHsKICAgc3RydWN0IHJlY29yZF9tZXNzYWdlX2FyZ3MgYXJnczsKIAot ICBhcmdzLnJlZ2NhY2hlID0gcmVnY2FjaGU7CiAgIGFyZ3Muc2lnbmFsID0g c2lnbmFsOwogCiAgIGlmIChjYXRjaCkKQEAgLTY4Miw5ICs3NzcsMTIgQEAg cmVjb3JkX2dkYl9vcGVyYXRpb25fZGlzYWJsZV9zZXQgKHZvaWQpCiAgICBl bnRyaWVzIGFuZCBtZW1vcnkgZW50cmllcywgZm9sbG93ZWQgYnkgYW4gJ2Vu ZCcgZW50cnkuICAqLwogCiBzdGF0aWMgaW5saW5lIHZvaWQKLXJlY29yZF9l eGVjX2luc24gKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAorcmVjb3JkX2V4ZWNfaW5zbiAoc3RydWN0IHJl Z2NhY2hlICoqcmVnY2FjaGVfcCwgc3RydWN0IGdkYmFyY2ggKipnZGJhcmNo X3AsCiAJCSAgc3RydWN0IHJlY29yZF9lbnRyeSAqZW50cnkpCiB7CisgIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSAqcmVnY2FjaGVfcDsKKyAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSAqZ2RiYXJjaF9wOworCiAgIHN3aXRj aCAoZW50cnktPnR5cGUpCiAgICAgewogICAgIGNhc2UgcmVjb3JkX3JlZzog LyogcmVnICovCkBAIC03NDgsNiArODQ2LDEwMyBAQCByZWNvcmRfZXhlY19p bnNuIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhCiAgICAgICAgICAgfQogICAg ICAgfQogICAgICAgYnJlYWs7CisKKyAgICBjYXNlIHJlY29yZF9wdGlkOiAv KiBwdGlkICovCisgICAgICB7CisgICAgICAgIHB0aWRfdCB0bXBfcHRpZDsK KworICAgICAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkKKyAgICAgICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF9wdGlk ICVzIHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZl cmlvciBwdGlkID0gJXMuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZW50cnkpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BpZF90b19zdHIgKGVu dHJ5LT51LnB0aWQpKTsKKworICAgICAgICBpZiAoIXB0aWRfZXF1YWwgKGVu dHJ5LT51LnB0aWQsIG51bGxfcHRpZCkpCisgICAgICAgICAgeworICAgICAg ICAgICAgaW5mZXJpb3JfcHRpZCA9IGVudHJ5LT51LnB0aWQ7CisgICAgICAg ICAgICAqcmVnY2FjaGVfcCA9IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOwor ICAgICAgICAgICAgKmdkYmFyY2hfcCA9IGdldF9yZWdjYWNoZV9hcmNoICgq cmVnY2FjaGVfcCk7CisgICAgICAgICAgfQorICAgICAgICB0bXBfcHRpZCA9 IGVudHJ5LT51LnB0aWQ7CisgICAgICAgIGVudHJ5LT51LnB0aWQgPSByZWNv cmRfcHJldl9wdGlkOworICAgICAgICByZWNvcmRfcHJldl9wdGlkID0gdG1w X3B0aWQ7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0 YXRpYyBpbnQgcmVjb3JkX3RocmVhZF9udW1iZXI7CisKK3N0YXRpYyBpbnQK K3JlY29yZF90aHJlYWRfbnVtYmVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRocmVhZCwgdm9pZCAqdW51c2VkKQoreworICBpZiAodGhyZWFkLT5z dGF0ZV8gIT0gVEhSRUFEX0VYSVRFRCkKKyAgICByZWNvcmRfdGhyZWFkX251 bWJlciArKzsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3Jl Y29yZF90aHJlYWRfbnVtYmVyX3Jlc2V0ICh2b2lkKQoreworICByZWNvcmRf dGhyZWFkX251bWJlciA9IDA7CisKKyAgaWYgKFJFQ09SRF9USFJFQUQpCisg ICAgaXRlcmF0ZV9vdmVyX3RocmVhZHMgKHJlY29yZF90aHJlYWRfbnVtYmVy X2NvdW50LCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK3JlY29yZF9uZXdf dGhyZWFkX2hhbmRsZXIgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCit7Cisg IHRwLT5yZWNvcmRfaXNfd2FpdGluZyA9IDA7CisKKyAgcmVjb3JkX3RocmVh ZF9udW1iZXJfcmVzZXQgKCk7Cit9CisKK3N0YXRpYyB2b2lkCityZWNvcmRf dGhyZWFkX2V4aXRfaGFuZGxlciAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwg aW50IHNpbGVudCkKK3sKKyAgc3RydWN0IHJlY29yZF9lbnRyeSAqcmVjOwor ICBwdGlkX3QgY3VyX3B0aWQgPSByZWNvcmRfcHJldl9wdGlkOworCisgIGlm ICghcmVjb3JkX2ZpcnN0Lm5leHQpCisgICAgcmV0dXJuOworCisgIHRwLT5y ZWNvcmRfaXNfd2FpdGluZyA9IDA7CisKKyAgaWYgKHRwLT5zdGF0ZV8gIT0g VEhSRUFEX0VYSVRFRCkKKyAgICB7CisgICAgICBnZGJfYXNzZXJ0IChyZWNv cmRfdGhyZWFkX251bWJlciA+IDApOworICAgICAgcmVjb3JkX3RocmVhZF9u dW1iZXIgLS07CisgICAgfQorCisgIC8qIERlbGV0ZSBhbGwgdGhlIHJlY29y ZF9yZWcgYW5kIHJlY29yZF9wdGlkIGZvciB0cC0+cHRpZAorICAgICBmcm9t IHJlY29yZCBsaXN0LiAgKi8KKyAgZm9yIChyZWMgPSByZWNvcmRfbGlzdDsg cmVjICE9ICZyZWNvcmRfZmlyc3Q7KQorICAgIHsKKyAgICAgIHN0cnVjdCBy ZWNvcmRfZW50cnkgKnRtcCA9IHJlYzsKKyAgICAgIHJlYyA9IHJlYy0+cHJl djsKKworICAgICAgc3dpdGNoICh0bXAtPnR5cGUpIHsKKyAgICAgICAgY2Fz ZSByZWNvcmRfcmVnOgorICAgICAgICAgIC8qIElmIHRoaXMgcmVjb3JkX3Jl ZyBpcyBmb3IgdHAtPnB0aWQsIGRlbHRlIGl0LiAgKi8KKyAgICAgICAgICBp ZiAocHRpZF9lcXVhbCAoY3VyX3B0aWQsIHRwLT5wdGlkKSkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgcmVjb3JkX2VudHJ5X3JlbW92ZV9mcm9t X2xpc3QgKHRtcCk7CisgICAgICAgICAgICAgIHJlY29yZF9lbnRyeV9yZWxl YXNlICh0bXApOworICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIHJlY29yZF9wdGlkOgorICAgICAgICAgIC8qIElmIHRo aXMgcmVjb3JkX3B0aWQgaXMgZm9yIHRwLT5wdGlkLCBkZWx0ZSBpdC4gICov CisgICAgICAgICAgY3VyX3B0aWQgPSB0bXAtPnUucHRpZDsKKyAgICAgICAg ICBpZiAocHRpZF9lcXVhbCAoY3VyX3B0aWQsIHRwLT5wdGlkKSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgcmVjb3JkX2VudHJ5X3JlbW92ZV9m cm9tX2xpc3QgKHRtcCk7CisgICAgICAgICAgICAgIHJlY29yZF9lbnRyeV9y ZWxlYXNlICh0bXApOworICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFr OworICAgICAgfQogICAgIH0KIH0KIApAQCAtODQyLDYgKzEwMzcsOSBAQCBy ZWNvcmRfb3Blbl8xIChjaGFyICpuYW1lLCBpbnQgZnJvbV90dHkpCiAgICAg ZXJyb3IgKF8oIkNvdWxkIG5vdCBmaW5kICd0b19yZW1vdmVfYnJlYWtwb2lu dCcgbWV0aG9kIG9uIHRoZSB0YXJnZXQgc3RhY2suIikpOwogCiAgIHB1c2hf dGFyZ2V0ICgmcmVjb3JkX29wcyk7CisKKyAgcmVjb3JkX25ld190aHJlYWRf b2JzZXJ2ZXIgPSBvYnNlcnZlcl9hdHRhY2hfbmV3X3RocmVhZCAocmVjb3Jk X25ld190aHJlYWRfaGFuZGxlcik7CisgIHJlY29yZF90aHJlYWRfZXhpdF9v YnNlcnZlciA9IG9ic2VydmVyX2F0dGFjaF90aHJlYWRfZXhpdCAocmVjb3Jk X3RocmVhZF9leGl0X2hhbmRsZXIpOwogfQogCiAvKiAidG9fb3BlbiIgdGFy Z2V0IG1ldGhvZC4gIE9wZW4gdGhlIHByb2Nlc3MgcmVjb3JkIHRhcmdldC4g ICovCkBAIC05MDcsNiArMTEwNSw3IEBAIHJlY29yZF9vcGVuIChjaGFyICpu YW1lLCBpbnQgZnJvbV90dHkpCiAgIHJlY29yZF9pbnNuX2NvdW50ID0gMDsK ICAgcmVjb3JkX2xpc3QgPSAmcmVjb3JkX2ZpcnN0OwogICByZWNvcmRfbGlz dC0+bmV4dCA9IE5VTEw7CisgIHJlY29yZF9wcmV2X3B0aWQgPSBudWxsX3B0 aWQ7CiAKICAgLyogU2V0IHRoZSB0bXAgYmVuZWF0aCBwb2ludGVycyB0byBi ZW5lYXRoIHBvaW50ZXJzLiAgKi8KICAgcmVjb3JkX2JlbmVhdGhfdG9fcmVz dW1lX29wcyA9IHRtcF90b19yZXN1bWVfb3BzOwpAQCAtOTI0LDYgKzExMjMs OCBAQCByZWNvcmRfb3BlbiAoY2hhciAqbmFtZSwgaW50IGZyb21fdHR5KQog ICAgIHJlY29yZF9jb3JlX29wZW5fMSAobmFtZSwgZnJvbV90dHkpOwogICBl bHNlCiAgICAgcmVjb3JkX29wZW5fMSAobmFtZSwgZnJvbV90dHkpOworCisg IHJlY29yZF90aHJlYWRfbnVtYmVyX3Jlc2V0ICgpOwogfQogCiAvKiAidG9f Y2xvc2UiIHRhcmdldCBtZXRob2QuICBDbG9zZSB0aGUgcHJvY2VzcyByZWNv cmQgdGFyZ2V0LiAgKi8KQEAgLTkzNiw2ICsxMTM3LDE3IEBAIHJlY29yZF9j bG9zZSAoaW50IHF1aXR0aW5nKQogICBpZiAocmVjb3JkX2RlYnVnKQogICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlByb2Nlc3MgcmVj b3JkOiByZWNvcmRfY2xvc2VcbiIpOwogCisgIGlmIChyZWNvcmRfbmV3X3Ro cmVhZF9vYnNlcnZlcikKKyAgICB7CisgICAgICBvYnNlcnZlcl9kZXRhY2hf bmV3X3RocmVhZCAocmVjb3JkX25ld190aHJlYWRfb2JzZXJ2ZXIpOworICAg ICAgcmVjb3JkX25ld190aHJlYWRfb2JzZXJ2ZXIgPSBOVUxMOworICAgIH0K KyAgaWYgKHJlY29yZF90aHJlYWRfZXhpdF9vYnNlcnZlcikKKyAgICB7Cisg ICAgICBvYnNlcnZlcl9kZXRhY2hfdGhyZWFkX2V4aXQgKHJlY29yZF90aHJl YWRfZXhpdF9vYnNlcnZlcik7CisgICAgICByZWNvcmRfdGhyZWFkX2V4aXRf b2JzZXJ2ZXIgPSBOVUxMOworICAgIH0KKwogICByZWNvcmRfbGlzdF9yZWxl YXNlIChyZWNvcmRfbGlzdCk7CiAKICAgLyogUmVsZWFzZSByZWNvcmRfY29y ZV9yZWdidWYuICAqLwpAQCAtOTU4LDYgKzExNzAsOCBAQCByZWNvcmRfY2xv c2UgKGludCBxdWl0dGluZykKIH0KIAogc3RhdGljIGludCByZWNvcmRfcmVz dW1lX3N0ZXAgPSAwOworc3RhdGljIHB0aWRfdCByZWNvcmRfcmVzdW1lX3B0 aWQ7CitzdGF0aWMgZW51bSB0YXJnZXRfc2lnbmFsIHJlY29yZF9yZXN1bWVf c2lnbmFsID0gVEFSR0VUX1NJR05BTF8wOwogCiAvKiAidG9fcmVzdW1lIiB0 YXJnZXQgbWV0aG9kLiAgUmVzdW1lIHRoZSBwcm9jZXNzIHJlY29yZCB0YXJn ZXQuICAqLwogCkBAIC05NjksMTAgKzExODMsMTg2IEBAIHJlY29yZF9yZXN1 bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHAKIAogICBpZiAoIVJFQ09S RF9JU19SRVBMQVkpCiAgICAgewotICAgICAgZG9fcmVjb3JkX21lc3NhZ2Ug KGdldF9jdXJyZW50X3JlZ2NhY2hlICgpLCBzaWduYWwsIDApOwotICAgICAg cmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0aF90b19y ZXN1bWVfb3BzLCBwdGlkLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaWduYWwpOworICAgICAgcmVjb3JkX3Jlc3VtZV9wdGlkID0g cHRpZDsKKyAgICAgIGlmIChyZWNvcmRfdGhyZWFkX251bWJlciA+IDEgJiYg IXB0aWRfZXF1YWwgKHB0aWQsIGluZmVyaW9yX3B0aWQpKQorICAgICAgICB7 CisgICAgICAgICAgcmVjb3JkX3Jlc3VtZV9zaWduYWwgPSBzaWduYWw7Cisg ICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGRv X3JlY29yZF9tZXNzYWdlIChzaWduYWwsIDApOworICAgICAgICAgIHJlY29y ZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1l X29wcywgcHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlY29yZF9zdGVwLCBzaWduYWwpOworICAgICAgICB9CisgICAgfQor fQorCitzdHJ1Y3QgcmVjb3JkX3RocmVhZF93YWl0X2FyZ3MgeworICBwdGlk X3QgcmVhbF9pbmZlcmlvcl9wdGlkOworICBzdHJ1Y3QgdGhyZWFkX2luZm8g KnJlYWxfaW5mZXJpb3JfdHA7CisgIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1 cyByZWFsX2luZmVyaW9yX3N0YXR1czsKKworICBzdHJ1Y3QgdGFyZ2V0X3dh aXRzdGF0dXMgKnN0YXR1czsKKyAgaW50IG9wdGlvbnM7Cit9OworCitzdGF0 aWMgaW50CityZWNvcmRfdGhyZWFkX3Jlc2V0X2NhbGxiYWNrIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwLCB2b2lkICpkYXRhKQoreworICB0cC0+cmVjb3Jk X2lzX3dhaXRpbmcgPSAwOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50CityZWNvcmRfdGhyZWFkX3N0b3BfY2FsbGJhY2sgKHN0cnVjdCB0aHJl YWRfaW5mbyAqdHAsIHZvaWQgKmRhdGEpCit7CisgIGlmICh0cC0+c3RhdGVf ICE9IFRIUkVBRF9FWElURUQgJiYgdHAtPnJlY29yZF9pc193YWl0aW5nKQor ICAgIHRhcmdldF9zdG9wICh0cC0+cHRpZCk7CisKKyAgcmV0dXJuIDA7Cit9 CisKKy8qIFJldHVybiAxIGlmIGl0IGlzIG5vdCBhIHNpbXBsZSBzdGVwLgor ICAgUmV0dXJuIDAgaWYgaXQgaXMgYSBzaW1wbGUgc3RlcC4gICovCisKK3N0 YXRpYyBpbnQKK3JlY29yZF90aHJlYWRfd2FpdCAocHRpZF90IHB0aWQsIHN0 cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqc3RhdHVzLAorICAgICAgICAgICAg ICAgICAgICBpbnQgb3B0aW9ucywgcHRpZF90ICpyZXRfcHRpZCkKK3sKKyAg cHRpZF90IHdhaXRfcHRpZCA9IHJlY29yZF9iZW5lYXRoX3RvX3dhaXQgKHJl Y29yZF9iZW5lYXRoX3RvX3dhaXRfb3BzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRpZCwgc3RhdHVzLCBvcHRp b25zKTsKKworICBpZiAocmV0X3B0aWQpCisgICAgKnJldF9wdGlkID0gd2Fp dF9wdGlkOworCisgIGlmIChzdGF0dXMtPmtpbmQgPT0gVEFSR0VUX1dBSVRL SU5EX0lHTk9SRSkKKyAgICByZXR1cm4gMDsKKworICBpbmZlcmlvcl9wdGlk ID0gd2FpdF9wdGlkOworCisgIC8qIElzIHRoaXMgYSBTSUdUUkFQPyAgKi8K KyAgaWYgKHN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBF RAorICAgICAgJiYgc3RhdHVzLT52YWx1ZS5zaWcgPT0gVEFSR0VUX1NJR05B TF9UUkFQKQorICAgIHsKKyAgICAgIENPUkVfQUREUiB0bXBfcGM7CisgICAg ICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOworICAgICAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2g7CisKKyAgICAgIC8qIFllcyAtLSBjaGVjayBpZiB0 aGVyZSBpcyBhIGJyZWFrcG9pbnQuICAqLworICAgICAgcmVnaXN0ZXJzX2No YW5nZWQgKCk7CisgICAgICByZWdjYWNoZSA9IGdldF9jdXJyZW50X3JlZ2Nh Y2hlICgpOworICAgICAgZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChy ZWdjYWNoZSk7CisgICAgICB0bXBfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChy ZWdjYWNoZSk7CisgICAgICBpZiAoIXJlY29yZF9zdGVwKQorICAgICAgICB0 bXBfcGMgLT0gZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNo KTsKKyAgICAgIGlmIChicmVha3BvaW50X2luc2VydGVkX2hlcmVfcCAoZ2V0 X3JlZ2NhY2hlX2FzcGFjZSAocmVnY2FjaGUpLCB0bXBfcGMpKQorICAgICAg ICB7CisgICAgICAgICAgLyogVGhlcmUgaXMgYSBicmVha3BvaW50LiAgR0RC IHdpbGwgd2FudCB0byBzdG9wLiAgKi8KKyAgICAgICAgICBpZiAocmVjb3Jk X3N0ZXApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIENPUkVfQURE UiBkZWNyX3BjX2FmdGVyX2JyZWFrCisgICAgICAgICAgICAgICAgICAgICAg ICAgID0gZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKTsK KyAgICAgICAgICAgICAgaWYgKGRlY3JfcGNfYWZ0ZXJfYnJlYWspCisgICAg ICAgICAgICAgICAgcmVnY2FjaGVfd3JpdGVfcGMgKHJlZ2NhY2hlLCB0bXBf cGMgKyBkZWNyX3BjX2FmdGVyX2JyZWFrKTsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgIHJldHVy biAwOworICAgIH0KKworICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAor cmVjb3JkX3RocmVhZF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwLCB2b2lkICpkYXRhKQoreworICBzdHJ1Y3QgcmVjb3JkX3RocmVh ZF93YWl0X2FyZ3MgKmFyZ3MgPSBkYXRhOworICBlbnVtIHRhcmdldF9zaWdu YWwgc2lnID0gVEFSR0VUX1NJR05BTF8wOworICBpbnQgb3B0aW9ucyA9IGFy Z3MtPm9wdGlvbnM7CisgIGludCByZXQ7CisKKyAgaWYgKHRwLT5zdGF0ZV8g PT0gVEhSRUFEX0VYSVRFRCkKKyAgICByZXR1cm4gMDsKKworICBpZiAocmVj b3JkX2RlYnVnID4gMSkKKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJvY2VzcyByZWNv cmQ6IHJlY29yZF90aHJlYWRfd2FpdF9jYWxsYmFjayAiCisgICAgICAgICAg ICAgICAgICAgICAgICAicmVzdW1lICVzXG4iLCB0YXJnZXRfcGlkX3RvX3N0 ciAodHAtPnB0aWQpKTsKKworICBpbmZlcmlvcl9wdGlkID0gdHAtPnB0aWQ7 CisKKyAgaWYgKCF0cC0+cmVjb3JkX2lzX3dhaXRpbmcpCisgICAgeworICAg ICAgaWYgKHJlY29yZF9yZXN1bWVfc2lnbmFsICE9IFRBUkdFVF9TSUdOQUxf MAorICAgICAgICAgICYmIHB0aWRfZXF1YWwgKGluZmVyaW9yX3B0aWQsIGFy Z3MtPnJlYWxfaW5mZXJpb3JfcHRpZCkpCisgICAgICAgIHsKKyAgICAgICAg ICBzaWcgPSByZWNvcmRfcmVzdW1lX3NpZ25hbDsKKyAgICAgICAgICByZWNv cmRfcmVzdW1lX3NpZ25hbCA9IFRBUkdFVF9TSUdOQUxfMDsKKyAgICAgICAg fQorICAgICAgaWYgKCFkb19yZWNvcmRfbWVzc2FnZSAoc2lnLCAxKSkKKyAg ICAgICAgeworICAgICAgICAgIGFyZ3MtPnN0YXR1cy0+a2luZCA9IFRBUkdF VF9XQUlUS0lORF9TVE9QUEVEOworICAgICAgICAgIGFyZ3MtPnN0YXR1cy0+ dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF8wOworICAgICAgICAgIHJldHVy biAxOworICAgICAgICB9CisKKyAgICAgIGlmIChyZWNvcmRfc3RlcCA9PSAw KQorICAgICAgICB7CisgICAgICAgICAgLyogVGhlIG5leHQgaW5zbiBpcyBh IHN5c19jbG9uZS4gICovCisgICAgICAgICAgaXRlcmF0ZV9vdmVyX3RocmVh ZHMgKHJlY29yZF90aHJlYWRfc3RvcF9jYWxsYmFjaywgTlVMTCk7CisgICAg ICAgICAgbm9uX3N0b3AgPSAwOworICAgICAgICB9CisKKyAgICAgIHJlY29y ZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1l X29wcywgaW5mZXJpb3JfcHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVjb3JkX3N0ZXAsIHNpZyk7CiAgICAgfQorICBlbHNlCisg ICAgeworICAgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpCisgICAgICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF90aHJlYWRf d2FpdF9jYWxsYmFjayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im5vdCByZXN1bWUgJXNcbiIsIHRhcmdldF9waWRfdG9fc3RyICh0cC0+cHRp ZCkpOworICAgIH0KKworICBpZiAocmVjb3JkX3N0ZXApCisgICAgb3B0aW9u cyB8PSBUQVJHRVRfV05PSEFORzsKKyAgcmV0ID0gcmVjb3JkX3RocmVhZF93 YWl0IChpbmZlcmlvcl9wdGlkLCBhcmdzLT5zdGF0dXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3B0aW9ucywgTlVMTCk7CisgIGlmIChhcmdz LT5zdGF0dXMtPmtpbmQgPT0gVEFSR0VUX1dBSVRLSU5EX0lHTk9SRSkKKyAg ICB7CisgICAgICBpZiAoIXRwLT5yZWNvcmRfaXNfd2FpdGluZykKKyAgICAg ICAgeworICAgICAgICAgIHRwLT5yZWNvcmRfaXNfd2FpdGluZyA9IDE7Cisg ICAgICAgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpCisgICAgICAgICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX3Ro cmVhZF93YWl0X2NhbGxiYWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInN0YXJ0IHdhaXRpbmcgJXMuXG4iLAorCQkJICAgICAgICB0 YXJnZXRfcGlkX3RvX3N0ciAodHAtPnB0aWQpKTsKKyAgICAgICAgfQorICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlmICh0cC0+cmVjb3JkX2lzX3dh aXRpbmcpCisgICAgICAgIHsKKyAgICAgICAgICB0cC0+cmVjb3JkX2lzX3dh aXRpbmcgPSAwOworICAgICAgICAgIGlmIChyZWNvcmRfZGVidWcgPiAxKQor ICAgICAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvY2VzcyByZWNv cmQ6IHJlY29yZF90aHJlYWRfd2FpdF9jYWxsYmFjayAiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJzdG9wIHdhaXRpbmcgJXMuXG4iLAor CQkJICAgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAodHAtPnB0aWQpKTsKKyAg ICAgICAgfQorCisgICAgICBpZiAoIWFyZ3MtPnJlYWxfaW5mZXJpb3JfdHAK KyAgICAgICAgICAmJiBwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBhcmdz LT5yZWFsX2luZmVyaW9yX3B0aWQpKQorICAgICAgICBhcmdzLT5yZWFsX2lu ZmVyaW9yX3RwID0gdHA7CisgICAgICBpZiAoYXJncy0+cmVhbF9pbmZlcmlv cl90cCA9PSB0cCkKKyAgICAgICAgYXJncy0+cmVhbF9pbmZlcmlvcl9zdGF0 dXMgPSAqYXJncy0+c3RhdHVzOworICAgIH0KKworICByZXR1cm4gcmV0Owog fQogCiBzdGF0aWMgaW50IHJlY29yZF9nZXRfc2lnID0gMDsKQEAgLTk5NCw3 ICsxMzg0LDEzIEBAIHJlY29yZF9zaWdfaGFuZGxlciAoaW50IHNpZ25vKQog fQogCiBzdGF0aWMgdm9pZAotcmVjb3JkX3dhaXRfY2xlYW51cHMgKHZvaWQg Kmlnbm9yZSkKK3JlY29yZF93YWl0X3NpZ25hbF9jbGVhbnVwcyAodm9pZCAq aWdub3JlKQoreworICBzaWduYWwgKFNJR0lOVCwgaGFuZGxlX3NpZ2ludCk7 Cit9CisKK3N0YXRpYyB2b2lkCityZWNvcmRfd2FpdF9yZXBsYXlfY2xlYW51 cHMgKHZvaWQgKmlnbm9yZSkKIHsKICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rp b24gPT0gRVhFQ19SRVZFUlNFKQogICAgIHsKQEAgLTEwMDUsNiArMTQwMSwx NyBAQCByZWNvcmRfd2FpdF9jbGVhbnVwcyAodm9pZCAqaWdub3JlKQogICAg IHJlY29yZF9saXN0ID0gcmVjb3JkX2xpc3QtPnByZXY7CiB9CiAKK3N0YXRp YyB2b2lkCityZWNvcmRfd2FpdF9tdGhyZWFkX2NsZWFudXBzICh2b2lkICpp Z25vcmUpCit7CisgIG5vbl9zdG9wID0gMTsKKworICAvKiBTdG9wIHRoZSB0 aHJlYWRzIHRoYXQgc3RpbGwgcnVubmluZy4gICovCisgIGl0ZXJhdGVfb3Zl cl90aHJlYWRzIChyZWNvcmRfdGhyZWFkX3N0b3BfY2FsbGJhY2ssIE5VTEwp OworCisgIG5vbl9zdG9wID0gMDsKK30KKwogLyogInRvX3dhaXQiIHRhcmdl dCBtZXRob2QgZm9yIHByb2Nlc3MgcmVjb3JkIHRhcmdldC4KIAogICAgSW4g cmVjb3JkIG1vZGUsIHRoZSB0YXJnZXQgaXMgYWx3YXlzIHJ1biBpbiBzaW5n bGVzdGVwIG1vZGUKQEAgLTEwMjMsNyArMTQzMCwxMCBAQCByZWNvcmRfd2Fp dCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKIAkgICAgIHB0aWRfdCBwdGlk LCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1cywKIAkgICAgIGlu dCBvcHRpb25zKQogeworICBwdGlkX3QgcmV0X3B0aWQ7CiAgIHN0cnVjdCBj bGVhbnVwICpzZXRfY2xlYW51cHMgPSByZWNvcmRfZ2RiX29wZXJhdGlvbl9k aXNhYmxlX3NldCAoKTsKKyAgc3RydWN0IGNsZWFudXAgKnNpZ25hbF9jbGVh bnVwcworICAgICAgICAgICAgICAgICAgICA9IG1ha2VfY2xlYW51cCAocmVj b3JkX3dhaXRfc2lnbmFsX2NsZWFudXBzLCAwKTsKIAogICBpZiAocmVjb3Jk X2RlYnVnKQogICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK QEAgLTEwMzEsODEgKzE0NDEsMTEwIEBAIHJlY29yZF93YWl0IChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLAogCQkJInJlY29yZF9yZXN1bWVfc3RlcCA9ICVk XG4iLAogCQkJcmVjb3JkX3Jlc3VtZV9zdGVwKTsKIAorICByZWNvcmRfZ2V0 X3NpZyA9IDA7CisgIHNpZ25hbCAoU0lHSU5ULCByZWNvcmRfc2lnX2hhbmRs ZXIpOworCiAgIGlmICghUkVDT1JEX0lTX1JFUExBWSAmJiBvcHMgIT0gJnJl Y29yZF9jb3JlX29wcykKICAgICB7Ci0gICAgICBpZiAocmVjb3JkX3Jlc3Vt ZV9zdGVwKQotCXsKLQkgIC8qIFRoaXMgaXMgYSBzaW5nbGUgc3RlcC4gICov Ci0JICByZXR1cm4gcmVjb3JkX2JlbmVhdGhfdG9fd2FpdCAocmVjb3JkX2Jl bmVhdGhfdG9fd2FpdF9vcHMsCi0JCQkJCSBwdGlkLCBzdGF0dXMsIG9wdGlv bnMpOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICAvKiBUaGlzIGlzIG5vdCBh IHNpbmdsZSBzdGVwLiAgKi8KLQkgIHB0aWRfdCByZXQ7Ci0JICBDT1JFX0FE RFIgdG1wX3BjOworICAgICAgLyogUmVjb3JkIG1vZGUuICAqLworICAgICAg aWYgKHJlY29yZF90aHJlYWRfbnVtYmVyID4gMSAmJiAhcHRpZF9lcXVhbCAo cmVjb3JkX3Jlc3VtZV9wdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mZXJpb3JfcHRpZCkpCisg ICAgICAgIHsKKyAgICAgICAgICAvKiBNdWx0aS10aHJlYWRzIHJlY29yZC4g ICovCisgICAgICAgICAgc3RydWN0IHJlY29yZF90aHJlYWRfd2FpdF9hcmdz IGFyZ3M7CisgICAgICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKKyAg ICAgICAgICBzdHJ1Y3QgY2xlYW51cCAqbXRocmVhZF9jbGVhbnVwcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gbWFrZV9jbGVhbnVwIChyZWNv cmRfd2FpdF9tdGhyZWFkX2NsZWFudXBzLCAwKTsKIAotCSAgd2hpbGUgKDEp Ci0JICAgIHsKLQkgICAgICByZXQgPSByZWNvcmRfYmVuZWF0aF90b193YWl0 IChyZWNvcmRfYmVuZWF0aF90b193YWl0X29wcywKLQkJCQkJICAgIHB0aWQs IHN0YXR1cywgb3B0aW9ucyk7CisgICAgICAgICAgYXJncy5yZWFsX2luZmVy aW9yX3B0aWQgPSBpbmZlcmlvcl9wdGlkOworICAgICAgICAgIGFyZ3MucmVh bF9pbmZlcmlvcl90cCA9IE5VTEw7CisgICAgICAgICAgYXJncy5zdGF0dXMg PSBzdGF0dXM7CisgICAgICAgICAgYXJncy5vcHRpb25zID0gb3B0aW9uczsK KyAgICAgICAgICBub25fc3RvcCA9IDE7CisgICAgICAgICAgaXRlcmF0ZV9v dmVyX3RocmVhZHMgKHJlY29yZF90aHJlYWRfcmVzZXRfY2FsbGJhY2ssIE5V TEwpOwogCi0JICAgICAgLyogSXMgdGhpcyBhIFNJR1RSQVA/ICAqLwotCSAg ICAgIGlmIChzdGF0dXMtPmtpbmQgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQ RUQKLQkJICAmJiBzdGF0dXMtPnZhbHVlLnNpZyA9PSBUQVJHRVRfU0lHTkFM X1RSQVApCi0JCXsKLQkJICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwor ICAgICAgICAgIHdoaWxlICgxKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICB0cCA9IGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChyZWNvcmRfdGhyZWFk X3dhaXRfY2FsbGJhY2ssICZhcmdzKTsKKyAgICAgICAgICAgICAgaWYgKHRw KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBpZiAo cmVjb3JkX3Jlc3VtZV9zdGVwCisgICAgICAgICAgICAgICAgICAmJiBhcmdz LnJlYWxfaW5mZXJpb3JfdHAKKyAgICAgICAgICAgICAgICAgICYmICFhcmdz LnJlYWxfaW5mZXJpb3JfdHAtPnJlY29yZF9pc193YWl0aW5nKQorICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICpzdGF0dXMgPSBhcmdz LnJlYWxfaW5mZXJpb3Jfc3RhdHVzOworICAgICAgICAgICAgICAgICAgaW5m ZXJpb3JfcHRpZCA9IGFyZ3MucmVhbF9pbmZlcmlvcl9wdGlkOworICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQogCi0JCSAgLyogWWVzIC0tIGNoZWNrIGlmIHRoZXJlIGlzIGEg YnJlYWtwb2ludC4gICovCi0JCSAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7Ci0J CSAgcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsKLQkJICB0 bXBfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChyZWdjYWNoZSk7Ci0JCSAgaWYg KGJyZWFrcG9pbnRfaW5zZXJ0ZWRfaGVyZV9wIChnZXRfcmVnY2FjaGVfYXNw YWNlIChyZWdjYWNoZSksCi0JCQkJCQkgIHRtcF9wYykpCi0JCSAgICB7Ci0J CSAgICAgIC8qIFRoZXJlIGlzIGEgYnJlYWtwb2ludC4gIEdEQiB3aWxsIHdh bnQgdG8gc3RvcC4gICovCi0JCSAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLQkJICAgICAg Q09SRV9BRERSIGRlY3JfcGNfYWZ0ZXJfYnJlYWsKLQkJCT0gZ2RiYXJjaF9k ZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKTsKLQkJICAgICAgaWYgKGRl Y3JfcGNfYWZ0ZXJfYnJlYWspCi0JCQlyZWdjYWNoZV93cml0ZV9wYyAocmVn Y2FjaGUsCi0JCQkJCSAgIHRtcF9wYyArIGRlY3JfcGNfYWZ0ZXJfYnJlYWsp OwotCQkgICAgfQotCQkgIGVsc2UKLQkJICAgIHsKLQkJICAgICAgLyogVGhl cmUgaXMgbm90IGEgYnJlYWtwb2ludCwgYW5kIGdkYiBpcyBub3QKLQkJICAg ICAgICAgc3RlcHBpbmcsIHRoZXJlZm9yZSBnZGIgd2lsbCBub3Qgc3RvcC4K LQkJCSBUaGVyZWZvcmUgd2Ugd2lsbCBub3QgcmV0dXJuIHRvIGdkYi4KLQkJ ICAgICAgICAgUmVjb3JkIHRoZSBpbnNuIGFuZCByZXN1bWUuICAqLwotCQkg ICAgICBpZiAoIWRvX3JlY29yZF9tZXNzYWdlIChyZWdjYWNoZSwgVEFSR0VU X1NJR05BTF8wLCAxKSkKLSAgCQkJewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdHVzLT5raW5kID0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQ7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMtPnZhbHVlLnNp ZyA9IFRBUkdFVF9TSUdOQUxfMDsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwotICAJCQl9CisgICAgICAgICAgZG9fY2xlYW51cHMgKG10 aHJlYWRfY2xlYW51cHMpOwogCi0JCSAgICAgIHJlY29yZF9iZW5lYXRoX3Rv X3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywKLQkJCQkJ CXB0aWQsIDEsCi0JCQkJCQlUQVJHRVRfU0lHTkFMXzApOwotCQkgICAgICBj b250aW51ZTsKLQkJICAgIH0KLQkJfQorICAgICAgICAgIGlmICh0cCAmJiB0 cC0+c3RhdGVfICE9IFRIUkVBRF9FWElURUQpCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGluZmVyaW9yX3B0aWQgPSB0cC0+cHRpZDsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICByZXRfcHRpZCA9IGluZmVyaW9yX3B0aWQ7 CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg IC8qIFNpbmdsZS10aHJlYWQgcmVjb3JkLiAgKi8KKyAgICAgICAgICBpZiAo cmVjb3JkX3RocmVhZF9udW1iZXIgPiAxKQorICAgICAgICAgICAgcHRpZCA9 IHJlY29yZF9yZXN1bWVfcHRpZDsKIAotCSAgICAgIC8qIFRoZSBpbmZlcmlv ciBpcyBicm9rZW4gYnkgYSBicmVha3BvaW50IG9yIGEgc2lnbmFsLiAgKi8K LQkgICAgICBicmVhazsKKyAgICAgICAgICBpZiAocmVjb3JkX3Jlc3VtZV9z dGVwKQorICAgICAgICAgICAgeworCSAgICAgIC8qIFRoaXMgaXMgYSBzaW5n bGUgc3RlcC4gICovCisJICAgICAgcmV0X3B0aWQgPSByZWNvcmRfYmVuZWF0 aF90b193YWl0IChyZWNvcmRfYmVuZWF0aF90b193YWl0X29wcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dGlkLCBzdGF0dXMsIG9wdGlvbnMpOwogCSAgICB9CisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBUaGlzIGlzIG5v dCBhIHNpbmdsZSBzdGVwLiAgKi8KKyAgICAgICAgICAgICAgd2hpbGUgKDEp CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWYgKHJl Y29yZF90aHJlYWRfd2FpdCAocHRpZCwgc3RhdHVzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgJnJldF9w dGlkKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLQkgIHJldHVy biByZXQ7Ci0JfQorICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZF9yZXN1 bWVfc3RlcCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgICAgICAgICAgIC8qIFRoZXJlIGlzIG5vdCBhIGJyZWFrcG9pbnQsIGFu ZCBnZGIgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICBzdGVwcGluZywg dGhlcmVmb3JlIGdkYiB3aWxsIG5vdCBzdG9wLgorICAgICAgICAgICAgICAg ICAgICAgVGhlcmVmb3JlIHdlIHdpbGwgbm90IHJldHVybiB0byBnZGIuCisg ICAgICAgICAgICAgICAgICAgICBSZWNvcmQgdGhlIGluc24gYW5kIHJlc3Vt ZS4gICovCisJCSAgaWYgKCFkb19yZWNvcmRfbWVzc2FnZSAoVEFSR0VUX1NJ R05BTF8wLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICAgIHJldF9wdGlkID0gaW5mZXJpb3JfcHRpZDsKKyAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJVEtJ TkRfU1RPUFBFRDsKKyAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMtPnZh bHVlLnNpZyA9IFRBUkdFVF9TSUdOQUxfMDsKKyAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisJCSAgcmVj b3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0aF90b19yZXN1 bWVfb3BzLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Jk X3Jlc3VtZV9wdGlkLCByZWNvcmRfc3RlcCwKKwkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRBUkdFVF9TSUdOQUxfMCk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICBlbHNl CiAgICAgewotICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdl dF9jdXJyZW50X3JlZ2NhY2hlICgpOwotICAgICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOworICAg ICAgLyogUmVwbGF5IG1vZGUuICAqLworICAgICAgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZTsKKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwog ICAgICAgaW50IGNvbnRpbnVlX2ZsYWcgPSAxOwogICAgICAgaW50IGZpcnN0 X3JlY29yZF9lbmQgPSAxOwotICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9j bGVhbnVwcyA9IG1ha2VfY2xlYW51cCAocmVjb3JkX3dhaXRfY2xlYW51cHMs IDApOworICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwcyA9Cisg ICAgICAgIG1ha2VfY2xlYW51cCAocmVjb3JkX3dhaXRfcmVwbGF5X2NsZWFu dXBzLCAwKTsKICAgICAgIENPUkVfQUREUiB0bXBfcGM7CisgICAgICBwdGlk X3Qgb2xkX2luZmVyaW9yX3B0aWQgPSBpbmZlcmlvcl9wdGlkOworCisgICAg ICBpZiAoIXB0aWRfZXF1YWwgKHJlY29yZF9wcmV2X3B0aWQsIG51bGxfcHRp ZCkpCisgICAgICAgIGluZmVyaW9yX3B0aWQgPSByZWNvcmRfcHJldl9wdGlk OworICAgICAgcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsK KyAgICAgIGdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUp OwogCiAgICAgICBzdGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRfU1RP UFBFRDsKIApAQCAtMTEyOSw4ICsxNTY4LDYgQEAgcmVjb3JkX3dhaXQgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAJICAgIH0KIAl9CiAKLSAgICAgIHJl Y29yZF9nZXRfc2lnID0gMDsKLSAgICAgIHNpZ25hbCAoU0lHSU5ULCByZWNv cmRfc2lnX2hhbmRsZXIpOwogICAgICAgLyogSWYgR0RCIGlzIGluIHRlcm1p bmFsX2luZmVyaW9yIG1vZGUsIGl0IHdpbGwgbm90IGdldCB0aGUgc2lnbmFs LgogICAgICAgICAgQW5kIGluIEdEQiByZXBsYXkgbW9kZSwgR0RCIGRvZXNu J3QgbmVlZCB0byBiZSBpbiB0ZXJtaW5hbF9pbmZlcmlvcgogICAgICAgICAg bW9kZSwgYmVjYXVzZSBpbmZlcmlvciB3aWxsIG5vdCBleGVjdXRlZC4KQEAg LTExNjEsNyArMTU5OCw3IEBAIHJlY29yZF93YWl0IChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLAogCSAgICAgIGJyZWFrOwogCSAgICB9CiAKLSAgICAgICAg ICByZWNvcmRfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwgcmVjb3Jk X2xpc3QpOworICAgICAgICAgIHJlY29yZF9leGVjX2luc24gKCZyZWdjYWNo ZSwgJmdkYmFyY2gsIHJlY29yZF9saXN0KTsKIAogCSAgaWYgKHJlY29yZF9s aXN0LT50eXBlID09IHJlY29yZF9lbmQpCiAJICAgIHsKQEAgLTExODQsMTIg KzE2MjEsMTMgQEAgcmVjb3JkX3dhaXQgKHN0cnVjdCB0YXJnZXRfb3BzICpv cHMsCiAJCSAgICAgSW4gRVhFQ19GT1JXQVJEIG1vZGUsIHRoaXMgaXMgdGhl IHJlY29yZF9lbmQgb2YgY3VycmVudAogCQkgICAgIGluc3RydWN0aW9uLiAg Ki8KIAkJICAvKiBzdGVwICovCi0JCSAgaWYgKHJlY29yZF9yZXN1bWVfc3Rl cCkKKwkJICBpZiAocmVjb3JkX3Jlc3VtZV9zdGVwCisgICAgICAgICAgICAg ICAgICAgICAgJiYgcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgb2xkX2lu ZmVyaW9yX3B0aWQpKQogCQkgICAgewogCQkgICAgICBpZiAocmVjb3JkX2Rl YnVnID4gMSkKIAkJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK IAkJCQkJICAgICJQcm9jZXNzIHJlY29yZDogc3RlcC5cbiIpOwotCQkgICAg ICBjb250aW51ZV9mbGFnID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZV9mbGFnID0gMDsKIAkJICAgIH0KIAogCQkgIC8qIGNoZWNrIGJy ZWFrcG9pbnQgKi8KQEAgLTEyMzMsMjIgKzE2NzEsMjMgQEAgcmVjb3JkX3dh aXQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAJfQogICAgICAgd2hpbGUg KGNvbnRpbnVlX2ZsYWcpOwogCi0gICAgICBzaWduYWwgKFNJR0lOVCwgaGFu ZGxlX3NpZ2ludCk7Ci0KIHJlcGxheV9vdXQ6Ci0gICAgICBpZiAocmVjb3Jk X2dldF9zaWcpCi0Jc3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJHRVRfU0lHTkFM X0lOVDsKLSAgICAgIGVsc2UgaWYgKHJlY29yZF9saXN0LT51LmVuZC5zaWd2 YWwgIT0gVEFSR0VUX1NJR05BTF8wKQorICAgICAgaWYgKHJlY29yZF9saXN0 LT51LmVuZC5zaWd2YWwgIT0gVEFSR0VUX1NJR05BTF8wKQogCS8qIEZJWE1F OiBiZXR0ZXIgd2F5IHRvIGNoZWNrICovCiAJc3RhdHVzLT52YWx1ZS5zaWcg PSByZWNvcmRfbGlzdC0+dS5lbmQuc2lndmFsOwogICAgICAgZWxzZQogCXN0 YXR1cy0+dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF9UUkFQOworICAgICAg cmV0X3B0aWQgPSBpbmZlcmlvcl9wdGlkOwogCiAgICAgICBkaXNjYXJkX2Ns ZWFudXBzIChvbGRfY2xlYW51cHMpOwogICAgIH0KIAorICBpZiAocmVjb3Jk X2dldF9zaWcpCisgICAgc3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJHRVRfU0lH TkFMX0lOVDsKKworICBkb19jbGVhbnVwcyAoc2lnbmFsX2NsZWFudXBzKTsK ICAgZG9fY2xlYW51cHMgKHNldF9jbGVhbnVwcyk7Ci0gIHJldHVybiBpbmZl cmlvcl9wdGlkOworICByZXR1cm4gcmV0X3B0aWQ7CiB9CiAKIC8qICJ0b19k aXNjb25uZWN0IiBtZXRob2QgZm9yIHByb2Nlc3MgcmVjb3JkIHRhcmdldC4g ICovCkBAIC0xMzExLDYgKzE3NTAsMTIgQEAgcmVjb3JkX3JlZ2lzdGVyc19j aGFuZ2UgKHN0cnVjdCByZWdjYWNoZQogICByZWNvcmRfYXJjaF9saXN0X2hl YWQgPSBOVUxMOwogICByZWNvcmRfYXJjaF9saXN0X3RhaWwgPSBOVUxMOwog CisgIGlmICghcHRpZF9lcXVhbCAocmVjb3JkX3ByZXZfcHRpZCwgaW5mZXJp b3JfcHRpZCkpCisgICAgeworICAgICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRf cHRpZCAoJnJlY29yZF9wcmV2X3B0aWQpOworICAgICAgcmVjb3JkX3ByZXZf cHRpZCA9IGluZmVyaW9yX3B0aWQ7CisgICAgfQorCiAgIGlmIChyZWdudW0g PCAwKQogICAgIHsKICAgICAgIGludCBpOwpAQCAtMTQzMyw2ICsxODc4LDEx IEBAIHJlY29yZF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICoK ICAgICAgIC8qIFJlY29yZCByZWdpc3RlcnMgY2hhbmdlIHRvIGxpc3QgYXMg YW4gaW5zdHJ1Y3Rpb24uICAqLwogICAgICAgcmVjb3JkX2FyY2hfbGlzdF9o ZWFkID0gTlVMTDsKICAgICAgIHJlY29yZF9hcmNoX2xpc3RfdGFpbCA9IE5V TEw7CisgICAgICBpZiAoIXB0aWRfZXF1YWwgKHJlY29yZF9wcmV2X3B0aWQs IGluZmVyaW9yX3B0aWQpKQorICAgICAgICB7CisgICAgICAgICAgcmVjb3Jk X2FyY2hfbGlzdF9hZGRfcHRpZCAoJnJlY29yZF9wcmV2X3B0aWQpOworICAg ICAgICAgIHJlY29yZF9wcmV2X3B0aWQgPSBpbmZlcmlvcl9wdGlkOworICAg ICAgICB9CiAgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChv ZmZzZXQsIGxlbikpCiAJewogCSAgcmVjb3JkX2xpc3RfcmVsZWFzZSAocmVj b3JkX2FyY2hfbGlzdF90YWlsKTsKQEAgLTIwODgsNiArMjUzOCwzMiBAQCBy ZWNvcmRfcmVzdG9yZSAodm9pZCkKIAkJCQlyZWMtPnUubWVtLmxlbik7CiAg ICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSByZWNvcmRfcHRpZDog LyogcHRpZCAqLworICAgICAgICAgIHJlYyA9IHJlY29yZF9wdGlkX2FsbG9j ICgpOworCisJICAvKiBHZXQgUHJvY2VzcyBpZC4gICovCisJICBiZmRjb3Jl X3JlYWQgKGNvcmVfYmZkLCBvc2VjLCAmYWRkciwKKwkJCXNpemVvZiAoYWRk ciksICZiZmRfb2Zmc2V0KTsKKwkgIHJlYy0+dS5wdGlkLnBpZCA9IChpbnQp IG5ldG9yZGVyNjQgKGFkZHIpOworCisJICAvKiBHZXQgTGlnaHR3ZWlnaHQg cHJvY2VzcyBpZC4gICovCisJICBiZmRjb3JlX3JlYWQgKGNvcmVfYmZkLCBv c2VjLCAmYWRkciwKKwkJCXNpemVvZiAoYWRkciksICZiZmRfb2Zmc2V0KTsK KwkgIHJlYy0+dS5wdGlkLmx3cCA9IChsb25nKSBuZXRvcmRlcjY0IChhZGRy KTsKKworCSAgLyogR2V0IFRocmVhZCBpZC4gICovCisJICBiZmRjb3JlX3Jl YWQgKGNvcmVfYmZkLCBvc2VjLCAmYWRkciwKKwkJCXNpemVvZiAoYWRkciks ICZiZmRfb2Zmc2V0KTsKKwkgIHJlYy0+dS5wdGlkLnRpZCA9IChsb25nKSBu ZXRvcmRlcjY0IChhZGRyKTsKKworCSAgaWYgKHJlY29yZF9kZWJ1ZykKKwkg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAorICBSZWFk aW5nIHB0aWQgJXMgKDEgKyA4ICsgOCArIDggYnl0ZXMpLCBvZmZzZXQgPT0g JXNcbiIsCisJCQkJdGFyZ2V0X3BpZF90b19zdHIgKHJlY29yZF9saXN0LT51 LnB0aWQpLAorCQkJCXBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLAor CQkJCQkgIGJmZF9vZmZzZXQpKTsKKyAgICAgICAgICBicmVhazsKKwogICAg ICAgICBjYXNlIHJlY29yZF9lbmQ6IC8qIGVuZCAqLwogICAgICAgICAgIHJl YyA9IHJlY29yZF9lbmRfYWxsb2MgKCk7CiAgICAgICAgICAgcmVjb3JkX2lu c25fbnVtICsrOwpAQCAtMjI0MCw3ICsyNzE2LDcgQEAgY21kX3JlY29yZF9z YXZlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dAogICAgICAgaWYgKHJlY29y ZF9saXN0ID09ICZyZWNvcmRfZmlyc3QpCiAgICAgICAgIGJyZWFrOwogCi0g ICAgICByZWNvcmRfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwgcmVj b3JkX2xpc3QpOworICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAoJnJlZ2NhY2hl LCAmZ2RiYXJjaCwgcmVjb3JkX2xpc3QpOwogCiAgICAgICBpZiAocmVjb3Jk X2xpc3QtPnByZXYpCiAgICAgICAgIHJlY29yZF9saXN0ID0gcmVjb3JkX2xp c3QtPnByZXY7CkBAIC0yMjYxLDYgKzI3MzcsOSBAQCBjbWRfcmVjb3JkX3Nh dmUgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0CiAgICAgICBjYXNlIHJlY29y ZF9tZW06CiAJc2F2ZV9zaXplICs9IDEgKyA0ICsgOCArIHJlY29yZF9saXN0 LT51Lm1lbS5sZW47CiAJYnJlYWs7CisgICAgICBjYXNlIHJlY29yZF9wdGlk OgorCXNhdmVfc2l6ZSArPSAxICsgOCArIDggKyA4OworCWJyZWFrOwogICAg ICAgfQogCiAgIC8qIE1ha2UgdGhlIG5ldyBiZmQgc2VjdGlvbi4gICovCkBA IC0yMzQ3LDYgKzI4MjYsMjUgQEAgY21kX3JlY29yZF9zYXZlIChjaGFyICph cmdzLCBpbnQgZnJvbV90dAogCQkJICAgICByZWNvcmRfbGlzdC0+dS5tZW0u bGVuLCAmYmZkX29mZnNldCk7CiAgICAgICAgICAgICAgIGJyZWFrOwogCisg ICAgICAgICAgICBjYXNlIHJlY29yZF9wdGlkOiAvKiBwdGlkICovCisJICAg ICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkJZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLCAiXAorICBXcml0aW5nIHB0aWQgJXMgKDEgcGx1cyA4IHBs dXMgOCBwbHVzIDggYnl0ZXMpXG4iLAorCQkJCSAgICB0YXJnZXRfcGlkX3Rv X3N0ciAocmVjb3JkX2xpc3QtPnUucHRpZCkpOworCisJICAgICAgLyogV3Jp dGUgUHJvY2VzcyBpZC4gICovCisJICAgICAgYWRkciA9IG5ldG9yZGVyNjQg KCh1aW50NjRfdCkgcmVjb3JkX2xpc3QtPnUucHRpZC5waWQpOworCSAgICAg IGJmZGNvcmVfd3JpdGUgKG9iZmQsIG9zZWMsICZhZGRyLCBzaXplb2YgKGFk ZHIpLCAmYmZkX29mZnNldCk7CisKKwkgICAgICAvKiBXcml0ZSBMaWdodHdl aWdodCBwcm9jZXNzIGlkLiAgKi8KKwkgICAgICBhZGRyID0gbmV0b3JkZXI2 NCAoKHVpbnQ2NF90KSByZWNvcmRfbGlzdC0+dS5wdGlkLmx3cCk7CisJICAg ICAgYmZkY29yZV93cml0ZSAob2JmZCwgb3NlYywgJmFkZHIsIHNpemVvZiAo YWRkciksICZiZmRfb2Zmc2V0KTsKKworCSAgICAgIC8qIFdyaXRlIFRocmVh ZCBpZC4gICovCisJICAgICAgYWRkciA9IG5ldG9yZGVyNjQgKCh1aW50NjRf dCkgcmVjb3JkX2xpc3QtPnUucHRpZC50aWQpOworCSAgICAgIGJmZGNvcmVf d3JpdGUgKG9iZmQsIG9zZWMsICZhZGRyLCBzaXplb2YgKGFkZHIpLCAmYmZk X29mZnNldCk7CisgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAg ICAgIGNhc2UgcmVjb3JkX2VuZDoKIAkJaWYgKHJlY29yZF9kZWJ1ZykKIAkJ ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJcCkBAIC0yMzY3 LDcgKzI4NjUsNyBAQCBjbWRfcmVjb3JkX3NhdmUgKGNoYXIgKmFyZ3MsIGlu dCBmcm9tX3R0CiAgICAgICAgIH0KIAogICAgICAgLyogRXhlY3V0ZSBlbnRy eS4gICovCi0gICAgICByZWNvcmRfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2Ri YXJjaCwgcmVjb3JkX2xpc3QpOworICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAo JnJlZ2NhY2hlLCAmZ2RiYXJjaCwgcmVjb3JkX2xpc3QpOwogCiAgICAgICBp ZiAocmVjb3JkX2xpc3QtPm5leHQpCiAgICAgICAgIHJlY29yZF9saXN0ID0g cmVjb3JkX2xpc3QtPm5leHQ7CkBAIC0yMzgyLDcgKzI4ODAsNyBAQCBjbWRf cmVjb3JkX3NhdmUgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0CiAgICAgICBp ZiAocmVjb3JkX2xpc3QgPT0gY3VyX3JlY29yZF9saXN0KQogICAgICAgICBi cmVhazsKIAotICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAocmVnY2FjaGUsIGdk YmFyY2gsIHJlY29yZF9saXN0KTsKKyAgICAgIHJlY29yZF9leGVjX2luc24g KCZyZWdjYWNoZSwgJmdkYmFyY2gsIHJlY29yZF9saXN0KTsKIAogICAgICAg aWYgKHJlY29yZF9saXN0LT5wcmV2KQogICAgICAgICByZWNvcmRfbGlzdCA9 IHJlY29yZF9saXN0LT5wcmV2OwotLS0gYS9yZWNvcmQuaAorKysgYi9yZWNv cmQuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBSRUNPUkRfSVNfVVNF RAkoY3VycmVudF90YXJnZXQudG9fc3RyYXR1bSA9PSByZWNvcmRfc3RyYXR1 bSkKIAogZXh0ZXJuIGludCByZWNvcmRfZGVidWc7CitleHRlcm4gaW50IHJl Y29yZF9zdGVwOwogCiBleHRlcm4gaW50IHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG51bSk7CiBl eHRlcm4gaW50IHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4pOwotLS0gYS90aHJlYWQuYworKysgYi90aHJlYWQu YwpAQCAtNjMsMTUgKzYzLDYgQEAgc3RhdGljIHZvaWQgdGhyZWFkX2FwcGx5 X2NvbW1hbmQgKGNoYXIgKgogc3RhdGljIHZvaWQgcmVzdG9yZV9jdXJyZW50 X3RocmVhZCAocHRpZF90KTsKIHN0YXRpYyB2b2lkIHBydW5lX3RocmVhZHMg KHZvaWQpOwogCi0vKiBGcm9udGVuZCB2aWV3IG9mIHRoZSB0aHJlYWQgc3Rh dGUuICBQb3NzaWJsZSBleHRlbnNpb25zOiBzdGVwcGluZywKLSAgIGZpbmlz aGluZywgdW50aWwobGluZyksLi4uICAqLwotZW51bSB0aHJlYWRfc3RhdGUK LXsKLSAgVEhSRUFEX1NUT1BQRUQsCi0gIFRIUkVBRF9SVU5OSU5HLAotICBU SFJFQURfRVhJVEVELAotfTsKLQogc3RydWN0IHRocmVhZF9pbmZvKgogaW5m ZXJpb3JfdGhyZWFkICh2b2lkKQogewo= --00504502b0abc4f0fd04783d4326 Content-Type: text/plain; charset=US-ASCII; name="prec-x86-add-insn.txt" Content-Disposition: attachment; filename="prec-x86-add-insn.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1yr4vch3 Content-length: 997 LS0tCiBpMzg2LXRkZXAuYyB8ICAgIDkgKystLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKLS0tIGEv aTM4Ni10ZGVwLmMKKysrIGIvaTM4Ni10ZGVwLmMKQEAgLTQ4NDcsOSArNDg0 Nyw2IEBAIHJlc3dpdGNoOgogICAgICAgLyogaW50MyAqLwogICAgICAgLyog WFhYICovCiAgICAgY2FzZSAweGNjOgotICAgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0cnVj dGlvbiAiCi0JCQkgICAiaW50My5cbiIpKTsKLSAgICAgIGlyLmFkZHIgLT0g MTsKICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKICAgICAgIGJyZWFrOwogCkBA IC00OTU4LDEwICs0OTU1LDggQEAgcmVzd2l0Y2g6CiAKICAgICAgIC8qIHJk dHNjICovCiAgICAgY2FzZSAweDBmMzE6Ci0gICAgICBwcmludGZfdW5maWx0 ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKLQkJ CSAgICJpbnN0cnVjdGlvbiByZHRzYy5cbiIpKTsKLSAgICAgIGlyLmFkZHIg LT0gMjsKLSAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIEkzODZfUkVD T1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX1JFQVhfUkVHTlVN KTsKKyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZf UkVDT1JEX1JFRFhfUkVHTlVNKTsKICAgICAgIGJyZWFrOwogCiAgICAgICAv KiBzeXNlbnRlciAqLwo= --00504502b0abc4f0fd04783d4326--