From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5494 invoked by alias); 12 Nov 2009 08:26:02 -0000 Received: (qmail 4995 invoked by uid 22791); 12 Nov 2009 08:25:48 -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-px0-f183.google.com (HELO mail-px0-f183.google.com) (209.85.216.183) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Nov 2009 08:25:38 +0000 Received: by pxi13 with SMTP id 13so1389553pxi.24 for ; Thu, 12 Nov 2009 00:25:37 -0800 (PST) MIME-Version: 1.0 Received: by 10.143.26.32 with SMTP id d32mr273084wfj.297.1258014337111; Thu, 12 Nov 2009 00:25:37 -0800 (PST) In-Reply-To: References: From: Hui Zhu Date: Thu, 12 Nov 2009 08:26: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=001636e0ac8faf99a4047828491e 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/msg00276.txt.bz2 --001636e0ac8faf99a4047828491e Content-Type: text/plain; charset=ISO-8859-1 Content-length: 280 Hi guys, This is the new version for multi-thread support. It 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. I can begin to do some make it clear and some other things. Thanks, Hui --001636e0ac8faf99a4047828491e 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_g1x9gltb0 Content-length: 997 LS0tCiBpMzg2LXRkZXAuYyB8ICAgIDkgKystLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKLS0tIGEv aTM4Ni10ZGVwLmMKKysrIGIvaTM4Ni10ZGVwLmMKQEAgLTQ4NDcsOSArNDg0 Nyw2IEBAIHJlc3dpdGNoOgogICAgICAgLyogaW50MyAqLwogICAgICAgLyog WFhYICovCiAgICAgY2FzZSAweGNjOgotICAgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0cnVj dGlvbiAiCi0JCQkgICAiaW50My5cbiIpKTsKLSAgICAgIGlyLmFkZHIgLT0g MTsKICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKICAgICAgIGJyZWFrOwogCkBA IC00OTU4LDEwICs0OTU1LDggQEAgcmVzd2l0Y2g6CiAKICAgICAgIC8qIHJk dHNjICovCiAgICAgY2FzZSAweDBmMzE6Ci0gICAgICBwcmludGZfdW5maWx0 ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKLQkJ CSAgICJpbnN0cnVjdGlvbiByZHRzYy5cbiIpKTsKLSAgICAgIGlyLmFkZHIg LT0gMjsKLSAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIEkzODZfUkVD T1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX1JFQVhfUkVHTlVN KTsKKyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZf UkVDT1JEX1JFRFhfUkVHTlVNKTsKICAgICAgIGJyZWFrOwogCiAgICAgICAv KiBzeXNlbnRlciAqLwo= --001636e0ac8faf99a4047828491e 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_g1x9gmit1 Content-length: 53115 LS0tCiBhbWQ2NC1saW51eC10ZGVwLmMgfCAgICA0IAogZ2RidGhyZWFkLmgg ICAgICAgIHwgICAxMSAKIGkzODYtbGludXgtdGRlcC5jICB8ICAgIDQgCiBp Mzg2LXRkZXAuYyAgICAgICAgfCAgIDUyICsrLS0KIGkzODYtdGRlcC5oICAg ICAgICB8ICAgIDYgCiBsaW51eC1yZWNvcmQuYyAgICAgfCAgIDEzIC0KIGxp bnV4LXJlY29yZC5oICAgICB8ICAgIDIgCiByZWNvcmQuYyAgICAgICAgICAg fCAgNjc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiByZWNvcmQuaCAgICAgICAgICAgfCAgICAxIAog dGhyZWFkLmMgICAgICAgICAgIHwgICAgOSAKIDEwIGZpbGVzIGNoYW5nZWQs IDY0MSBpbnNlcnRpb25zKCspLCAxMzYgZGVsZXRpb25zKC0pCgotLS0gYS9h 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 ZXQuICAqLwogCkBAIC05NjksMTIgKzExODMsMTg5IEBAIHJlY29yZF9yZXN1 bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHAKIAogICBpZiAoIVJFQ09S RF9JU19SRVBMQVkpCiAgICAgewotICAgICAgZG9fcmVjb3JkX21lc3NhZ2Ug KGdldF9jdXJyZW50X3JlZ2NhY2hlICgpLCBzaWduYWwsIDApOwotICAgICAg cmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0aF90b19y ZXN1bWVfb3BzLCBwdGlkLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaWduYWwpOworICAgICAgcmVjb3JkX3Jlc3VtZV9wdGlkID0g cHRpZDsKKyAgICAgIGlmIChyZWNvcmRfdGhyZWFkX251bWJlciA+IDEgJiYg IXB0aWRfZXF1YWwgKHB0aWQsIGluZmVyaW9yX3B0aWQpKQorICAgICAgICB7 CisgICAgICAgICAgcmVjb3JkX3Jlc3VtZV9zaWduYWwgPSBzaWduYWw7Cisg ICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGRv X3JlY29yZF9tZXNzYWdlIChzaWduYWwsIDApOworICAgICAgICAgIHJlY29y ZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1l X29wcywgcHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlY29yZF9zdGVwLCBzaWduYWwpOworICAgICAgICB9CiAgICAgfQog fQogCitzdHJ1Y3QgcmVjb3JkX3RocmVhZF93YWl0X2FyZ3MgeworICBwdGlk X3QgcmVhbF9pbmZlcmlvcl9wdGlkOworICBzdHJ1Y3QgdGhyZWFkX2luZm8g KnJlYWxfaW5mZXJpb3JfdHA7CisgIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1 cyByZWFsX2luZmVyaW9yX3N0YXR1czsKKworICBzdHJ1Y3QgdGFyZ2V0X3dh aXRzdGF0dXMgKnN0YXR1czsKKyAgaW50IG9wdGlvbnM7Cit9OworCitzdGF0 aWMgaW50CityZWNvcmRfdGhyZWFkX3Jlc2V0X2NhbGxiYWNrIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwLCB2b2lkICpkYXRhKQoreworICB0cC0+cmVjb3Jk X2lzX3dhaXRpbmcgPSAwOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50CityZWNvcmRfdGhyZWFkX2NoZWNrX2NhbGxiYWNrIChzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwLCB2b2lkICpkYXRhKQoreworICBpZiAodHAtPnN0YXRl XyAhPSBUSFJFQURfRVhJVEVEICYmIHRwLT5yZWNvcmRfaXNfd2FpdGluZykK KyAgICByZXR1cm4gMTsKKworICByZXR1cm4gMDsKK30KKworLyogUmV0dXJu IDEgaWYgaXQgaXMgbm90IGEgc2ltcGxlIHN0ZXAuCisgICBSZXR1cm4gMCBp ZiBpdCBpcyBhIHNpbXBsZSBzdGVwLiAgKi8KKworc3RhdGljIGludAorcmVj b3JkX3RocmVhZF93YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93 YWl0c3RhdHVzICpzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGludCBv cHRpb25zLCBwdGlkX3QgKnJldF9wdGlkKQoreworICBwdGlkX3Qgd2FpdF9w dGlkID0gcmVjb3JkX2JlbmVhdGhfdG9fd2FpdCAocmVjb3JkX2JlbmVhdGhf dG9fd2FpdF9vcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwdGlkLCBzdGF0dXMsIG9wdGlvbnMpOworCisgIGlm IChyZXRfcHRpZCkKKyAgICAqcmV0X3B0aWQgPSB3YWl0X3B0aWQ7CisKKyAg aWYgKHN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfSUdOT1JFKQor ICAgIHJldHVybiAwOworCisgIGluZmVyaW9yX3B0aWQgPSB3YWl0X3B0aWQ7 CisKKyAgLyogSXMgdGhpcyBhIFNJR1RSQVA/ICAqLworICBpZiAoc3RhdHVz LT5raW5kID09IFRBUkdFVF9XQUlUS0lORF9TVE9QUEVECisgICAgICAmJiBz dGF0dXMtPnZhbHVlLnNpZyA9PSBUQVJHRVRfU0lHTkFMX1RSQVApCisgICAg eworICAgICAgQ09SRV9BRERSIHRtcF9wYzsKKyAgICAgIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGU7CisgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aDsKKworICAgICAgLyogWWVzIC0tIGNoZWNrIGlmIHRoZXJlIGlzIGEgYnJl YWtwb2ludC4gICovCisgICAgICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKKyAg ICAgIHJlZ2NhY2hlID0gZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCk7CisgICAg ICBnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKKyAg ICAgIHRtcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hlKTsKKyAg ICAgIGlmICghcmVjb3JkX3N0ZXApCisgICAgICAgIHRtcF9wYyAtPSBnZGJh cmNoX2RlY3JfcGNfYWZ0ZXJfYnJlYWsgKGdkYmFyY2gpOworICAgICAgaWYg KGJyZWFrcG9pbnRfaW5zZXJ0ZWRfaGVyZV9wIChnZXRfcmVnY2FjaGVfYXNw YWNlIChyZWdjYWNoZSksIHRtcF9wYykpCisgICAgICAgIHsKKyAgICAgICAg ICAvKiBUaGVyZSBpcyBhIGJyZWFrcG9pbnQuICBHREIgd2lsbCB3YW50IHRv IHN0b3AuICAqLworICAgICAgICAgIGlmIChyZWNvcmRfc3RlcCkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgQ09SRV9BRERSIGRlY3JfcGNfYWZ0 ZXJfYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZGJhcmNo X2RlY3JfcGNfYWZ0ZXJfYnJlYWsgKGdkYmFyY2gpOworICAgICAgICAgICAg ICBpZiAoZGVjcl9wY19hZnRlcl9icmVhaykKKyAgICAgICAgICAgICAgICBy ZWdjYWNoZV93cml0ZV9wYyAocmVnY2FjaGUsIHRtcF9wYyArIGRlY3JfcGNf YWZ0ZXJfYnJlYWspOworICAgICAgICAgICAgfQorCisgICAgICAgICAgcmV0 dXJuIDE7CisgICAgICAgIH0KKworICAgICAgcmV0dXJuIDA7CisgICAgfQor CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CityZWNvcmRfdGhyZWFk X3dhaXRfY2FsbGJhY2sgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsIHZvaWQg KmRhdGEpCit7CisgIHN0cnVjdCByZWNvcmRfdGhyZWFkX3dhaXRfYXJncyAq YXJncyA9IGRhdGE7CisgIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcgPSBUQVJH RVRfU0lHTkFMXzA7CisgIGludCBvcHRpb25zID0gYXJncy0+b3B0aW9uczsK KyAgaW50IHJldDsKKworICBpZiAodHAtPnN0YXRlXyA9PSBUSFJFQURfRVhJ VEVEKQorICAgIHJldHVybiAwOworCisgIGlmIChyZWNvcmRfZGVidWcgPiAx KQorICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKyAgICAg ICAgICAgICAgICAgICAgICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX3Ro cmVhZF93YWl0X2NhbGxiYWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICJyZXN1bWUgJXNcbiIsIHRhcmdldF9waWRfdG9fc3RyICh0cC0+cHRpZCkp OworCisgIGluZmVyaW9yX3B0aWQgPSB0cC0+cHRpZDsKKworICBpZiAoIXRw LT5yZWNvcmRfaXNfd2FpdGluZykKKyAgICB7CisgICAgICBpZiAocmVjb3Jk X3Jlc3VtZV9zaWduYWwgIT0gVEFSR0VUX1NJR05BTF8wCisgICAgICAgICAg JiYgcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgYXJncy0+cmVhbF9pbmZl cmlvcl9wdGlkKSkKKyAgICAgICAgeworICAgICAgICAgIHNpZyA9IHJlY29y ZF9yZXN1bWVfc2lnbmFsOworICAgICAgICAgIHJlY29yZF9yZXN1bWVfc2ln bmFsID0gVEFSR0VUX1NJR05BTF8wOworICAgICAgICB9CisgICAgICBpZiAo IWRvX3JlY29yZF9tZXNzYWdlIChzaWcsIDEpKQorICAgICAgICB7CisgICAg ICAgICAgYXJncy0+c3RhdHVzLT5raW5kID0gVEFSR0VUX1dBSVRLSU5EX1NU T1BQRUQ7CisgICAgICAgICAgYXJncy0+c3RhdHVzLT52YWx1ZS5zaWcgPSBU QVJHRVRfU0lHTkFMXzA7CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAg IH0KKworICAgICAgaWYgKHJlY29yZF9zdGVwID09IDApCisgICAgICAgIHsK KyAgICAgICAgICAvKiBUaGUgbmV4dCBpbnNuIGlzIGEgc3lzX2Nsb25lLiAg Ki8KKyAgICAgICAgICBpZiAoaXRlcmF0ZV9vdmVyX3RocmVhZHMgKHJlY29y ZF90aHJlYWRfY2hlY2tfY2FsbGJhY2ssIE5VTEwpKQorICAgICAgICAgICAg dGFyZ2V0X3N0b3AgKG1pbnVzX29uZV9wdGlkKTsKKyAgICAgICAgICBub25f c3RvcCA9IDA7CisgICAgICAgIH0KKworICAgICAgcmVjb3JkX2JlbmVhdGhf dG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0aF90b19yZXN1bWVfb3BzLCBpbmZl cmlvcl9wdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWNvcmRfc3RlcCwgc2lnKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAg ICBpZiAocmVjb3JkX2RlYnVnID4gMSkKKyAgICAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX3RocmVhZF93YWl0X2NhbGxi YWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHJlc3Vt ZSAlc1xuIiwgdGFyZ2V0X3BpZF90b19zdHIgKHRwLT5wdGlkKSk7CisgICAg fQorCisgIGlmIChyZWNvcmRfc3RlcCkKKyAgICBvcHRpb25zIHw9IFRBUkdF VF9XTk9IQU5HOworICByZXQgPSByZWNvcmRfdGhyZWFkX3dhaXQgKGluZmVy aW9yX3B0aWQsIGFyZ3MtPnN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcHRpb25zLCBOVUxMKTsKKyAgaWYgKGFyZ3MtPnN0YXR1cy0+ a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfSUdOT1JFKQorICAgIHsKKyAgICAg IGlmICghdHAtPnJlY29yZF9pc193YWl0aW5nKQorICAgICAgICB7CisgICAg ICAgICAgdHAtPnJlY29yZF9pc193YWl0aW5nID0gMTsKKyAgICAgICAgICBp ZiAocmVjb3JkX2RlYnVnID4gMSkKKyAgICAgICAgICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlByb2Nlc3MgcmVjb3JkOiByZWNvcmRfdGhyZWFkX3dhaXRf Y2FsbGJhY2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi c3RhcnQgd2FpdGluZyAlcy5cbiIsCisJCQkgICAgICAgIHRhcmdldF9waWRf dG9fc3RyICh0cC0+cHRpZCkpOworICAgICAgICB9CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgaWYgKHRwLT5yZWNvcmRfaXNfd2FpdGluZykKKyAg ICAgICAgeworICAgICAgICAgIHRwLT5yZWNvcmRfaXNfd2FpdGluZyA9IDA7 CisgICAgICAgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpCisgICAgICAgICAg ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3Jk X3RocmVhZF93YWl0X2NhbGxiYWNrICIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInN0b3Agd2FpdGluZyAlcy5cbiIsCisJCQkgICAgICAg IHRhcmdldF9waWRfdG9fc3RyICh0cC0+cHRpZCkpOworICAgICAgICB9CisK KyAgICAgIGlmICghYXJncy0+cmVhbF9pbmZlcmlvcl90cAorICAgICAgICAg ICYmIHB0aWRfZXF1YWwgKGluZmVyaW9yX3B0aWQsIGFyZ3MtPnJlYWxfaW5m ZXJpb3JfcHRpZCkpCisgICAgICAgIGFyZ3MtPnJlYWxfaW5mZXJpb3JfdHAg PSB0cDsKKyAgICAgIGlmIChhcmdzLT5yZWFsX2luZmVyaW9yX3RwID09IHRw KQorICAgICAgICBhcmdzLT5yZWFsX2luZmVyaW9yX3N0YXR1cyA9ICphcmdz LT5zdGF0dXM7CisgICAgfQorCisgIHJldHVybiByZXQ7Cit9CisKIHN0YXRp YyBpbnQgcmVjb3JkX2dldF9zaWcgPSAwOwogCiAvKiBTSUdJTlQgc2lnbmFs IGhhbmRsZXIsIHJlZ2lzdGVyZWQgYnkgInRvX3dhaXQiIG1ldGhvZC4gICov CkBAIC05OTQsNyArMTM4NSwxMyBAQCByZWNvcmRfc2lnX2hhbmRsZXIgKGlu dCBzaWdubykKIH0KIAogc3RhdGljIHZvaWQKLXJlY29yZF93YWl0X2NsZWFu dXBzICh2b2lkICppZ25vcmUpCityZWNvcmRfd2FpdF9zaWduYWxfY2xlYW51 cHMgKHZvaWQgKmlnbm9yZSkKK3sKKyAgc2lnbmFsIChTSUdJTlQsIGhhbmRs ZV9zaWdpbnQpOworfQorCitzdGF0aWMgdm9pZAorcmVjb3JkX3dhaXRfcmVw bGF5X2NsZWFudXBzICh2b2lkICppZ25vcmUpCiB7CiAgIGlmIChleGVjdXRp b25fZGlyZWN0aW9uID09IEVYRUNfUkVWRVJTRSkKICAgICB7CkBAIC0xMDA1 LDYgKzE0MDIsMTYgQEAgcmVjb3JkX3dhaXRfY2xlYW51cHMgKHZvaWQgKmln bm9yZSkKICAgICByZWNvcmRfbGlzdCA9IHJlY29yZF9saXN0LT5wcmV2Owog fQogCitzdGF0aWMgdm9pZAorcmVjb3JkX3dhaXRfbXRocmVhZF9jbGVhbnVw cyAodm9pZCAqaWdub3JlKQoreworICAvKiBTdG9wIHRoZSB0aHJlYWRzIHRo YXQgc3RpbGwgcnVubmluZy4gICovCisgIGlmIChpdGVyYXRlX292ZXJfdGhy ZWFkcyAocmVjb3JkX3RocmVhZF9jaGVja19jYWxsYmFjaywgTlVMTCkpCisg ICAgdGFyZ2V0X3N0b3AgKG1pbnVzX29uZV9wdGlkKTsKKworICBub25fc3Rv cCA9IDA7Cit9CisKIC8qICJ0b193YWl0IiB0YXJnZXQgbWV0aG9kIGZvciBw cm9jZXNzIHJlY29yZCB0YXJnZXQuCiAKICAgIEluIHJlY29yZCBtb2RlLCB0 aGUgdGFyZ2V0IGlzIGFsd2F5cyBydW4gaW4gc2luZ2xlc3RlcCBtb2RlCkBA IC0xMDIzLDcgKzE0MzAsMTAgQEAgcmVjb3JkX3dhaXQgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMsCiAJICAgICBwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdl dF93YWl0c3RhdHVzICpzdGF0dXMsCiAJICAgICBpbnQgb3B0aW9ucykKIHsK KyAgcHRpZF90IHJldF9wdGlkOwogICBzdHJ1Y3QgY2xlYW51cCAqc2V0X2Ns ZWFudXBzID0gcmVjb3JkX2dkYl9vcGVyYXRpb25fZGlzYWJsZV9zZXQgKCk7 CisgIHN0cnVjdCBjbGVhbnVwICpzaWduYWxfY2xlYW51cHMKKyAgICAgICAg ICAgICAgICAgICAgPSBtYWtlX2NsZWFudXAgKHJlY29yZF93YWl0X3NpZ25h bF9jbGVhbnVwcywgMCk7CiAKICAgaWYgKHJlY29yZF9kZWJ1ZykKICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCkBAIC0xMDMxLDgxICsx NDQxLDEwMyBAQCByZWNvcmRfd2FpdCAoc3RydWN0IHRhcmdldF9vcHMgKm9w cywKIAkJCSJyZWNvcmRfcmVzdW1lX3N0ZXAgPSAlZFxuIiwKIAkJCXJlY29y ZF9yZXN1bWVfc3RlcCk7CiAKKyAgcmVjb3JkX2dldF9zaWcgPSAwOworICBz aWduYWwgKFNJR0lOVCwgcmVjb3JkX3NpZ19oYW5kbGVyKTsKKwogICBpZiAo IVJFQ09SRF9JU19SRVBMQVkgJiYgb3BzICE9ICZyZWNvcmRfY29yZV9vcHMp CiAgICAgewotICAgICAgaWYgKHJlY29yZF9yZXN1bWVfc3RlcCkKLQl7Ci0J ICAvKiBUaGlzIGlzIGEgc2luZ2xlIHN0ZXAuICAqLwotCSAgcmV0dXJuIHJl Y29yZF9iZW5lYXRoX3RvX3dhaXQgKHJlY29yZF9iZW5lYXRoX3RvX3dhaXRf b3BzLAotCQkJCQkgcHRpZCwgc3RhdHVzLCBvcHRpb25zKTsKLQl9Ci0gICAg ICBlbHNlCi0JewotCSAgLyogVGhpcyBpcyBub3QgYSBzaW5nbGUgc3RlcC4g ICovCi0JICBwdGlkX3QgcmV0OwotCSAgQ09SRV9BRERSIHRtcF9wYzsKLQot CSAgd2hpbGUgKDEpCi0JICAgIHsKLQkgICAgICByZXQgPSByZWNvcmRfYmVu ZWF0aF90b193YWl0IChyZWNvcmRfYmVuZWF0aF90b193YWl0X29wcywKLQkJ CQkJICAgIHB0aWQsIHN0YXR1cywgb3B0aW9ucyk7CisgICAgICAvKiBSZWNv cmQgbW9kZS4gICovCisgICAgICBpZiAocmVjb3JkX3RocmVhZF9udW1iZXIg PiAxICYmICFwdGlkX2VxdWFsIChyZWNvcmRfcmVzdW1lX3B0aWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmZlcmlvcl9wdGlkKSkKKyAgICAgICAgeworICAgICAgICAgIC8qIE11 bHRpLXRocmVhZHMgcmVjb3JkLiAgKi8KKyAgICAgICAgICBzdHJ1Y3QgcmVj b3JkX3RocmVhZF93YWl0X2FyZ3MgYXJnczsKKyAgICAgICAgICBzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwOworICAgICAgICAgIHN0cnVjdCBjbGVhbnVwICpt dGhyZWFkX2NsZWFudXBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg PSBtYWtlX2NsZWFudXAgKHJlY29yZF93YWl0X210aHJlYWRfY2xlYW51cHMs IDApOwogCi0JICAgICAgLyogSXMgdGhpcyBhIFNJR1RSQVA/ICAqLwotCSAg ICAgIGlmIChzdGF0dXMtPmtpbmQgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQ RUQKLQkJICAmJiBzdGF0dXMtPnZhbHVlLnNpZyA9PSBUQVJHRVRfU0lHTkFM X1RSQVApCi0JCXsKLQkJICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwor ICAgICAgICAgIGFyZ3MucmVhbF9pbmZlcmlvcl9wdGlkID0gaW5mZXJpb3Jf cHRpZDsKKyAgICAgICAgICBhcmdzLnJlYWxfaW5mZXJpb3JfdHAgPSBOVUxM OworICAgICAgICAgIGFyZ3Muc3RhdHVzID0gc3RhdHVzOworICAgICAgICAg IGFyZ3Mub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgICAgICAgbm9uX3N0b3Ag PSAxOworICAgICAgICAgIGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChyZWNvcmRf dGhyZWFkX3Jlc2V0X2NhbGxiYWNrLCBOVUxMKTsKIAotCQkgIC8qIFllcyAt LSBjaGVjayBpZiB0aGVyZSBpcyBhIGJyZWFrcG9pbnQuICAqLwotCQkgIHJl Z2lzdGVyc19jaGFuZ2VkICgpOwotCQkgIHJlZ2NhY2hlID0gZ2V0X2N1cnJl bnRfcmVnY2FjaGUgKCk7Ci0JCSAgdG1wX3BjID0gcmVnY2FjaGVfcmVhZF9w YyAocmVnY2FjaGUpOwotCQkgIGlmIChicmVha3BvaW50X2luc2VydGVkX2hl cmVfcCAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAocmVnY2FjaGUpLAotCQkJCQkJ ICB0bXBfcGMpKQotCQkgICAgewotCQkgICAgICAvKiBUaGVyZSBpcyBhIGJy ZWFrcG9pbnQuICBHREIgd2lsbCB3YW50IHRvIHN0b3AuICAqLwotCQkgICAg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNo IChyZWdjYWNoZSk7Ci0JCSAgICAgIENPUkVfQUREUiBkZWNyX3BjX2FmdGVy X2JyZWFrCi0JCQk9IGdkYmFyY2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2Ri YXJjaCk7Ci0JCSAgICAgIGlmIChkZWNyX3BjX2FmdGVyX2JyZWFrKQotCQkJ cmVnY2FjaGVfd3JpdGVfcGMgKHJlZ2NhY2hlLAotCQkJCQkgICB0bXBfcGMg KyBkZWNyX3BjX2FmdGVyX2JyZWFrKTsKLQkJICAgIH0KLQkJICBlbHNlCi0J CSAgICB7Ci0JCSAgICAgIC8qIFRoZXJlIGlzIG5vdCBhIGJyZWFrcG9pbnQs IGFuZCBnZGIgaXMgbm90Ci0JCSAgICAgICAgIHN0ZXBwaW5nLCB0aGVyZWZv cmUgZ2RiIHdpbGwgbm90IHN0b3AuCi0JCQkgVGhlcmVmb3JlIHdlIHdpbGwg bm90IHJldHVybiB0byBnZGIuCi0JCSAgICAgICAgIFJlY29yZCB0aGUgaW5z biBhbmQgcmVzdW1lLiAgKi8KLQkJICAgICAgaWYgKCFkb19yZWNvcmRfbWVz c2FnZSAocmVnY2FjaGUsIFRBUkdFVF9TSUdOQUxfMCwgMSkpCi0gIAkJCXsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy0+a2luZCA9IFRB UkdFVF9XQUlUS0lORF9TVE9QUEVEOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJHRVRfU0lHTkFMXzA7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgCQkJfQorICAg ICAgICAgIHdoaWxlICgxKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICB0cCA9IGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChyZWNvcmRfdGhyZWFkX3dh aXRfY2FsbGJhY2ssICZhcmdzKTsKKyAgICAgICAgICAgICAgaWYgKHRwKQor ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBpZiAocmVj b3JkX3Jlc3VtZV9zdGVwCisgICAgICAgICAgICAgICAgICAmJiBhcmdzLnJl YWxfaW5mZXJpb3JfdHAKKyAgICAgICAgICAgICAgICAgICYmICFhcmdzLnJl YWxfaW5mZXJpb3JfdHAtPnJlY29yZF9pc193YWl0aW5nKQorICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICpzdGF0dXMgPSBhcmdzLnJl YWxfaW5mZXJpb3Jfc3RhdHVzOworICAgICAgICAgICAgICAgICAgaW5mZXJp b3JfcHRpZCA9IGFyZ3MucmVhbF9pbmZlcmlvcl9wdGlkOworICAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgfQogCi0JCSAgICAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVj b3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywKLQkJCQkJCXB0aWQsIDEsCi0J CQkJCQlUQVJHRVRfU0lHTkFMXzApOwotCQkgICAgICBjb250aW51ZTsKLQkJ ICAgIH0KLQkJfQorICAgICAgICAgIGRvX2NsZWFudXBzIChtdGhyZWFkX2Ns ZWFudXBzKTsKIAotCSAgICAgIC8qIFRoZSBpbmZlcmlvciBpcyBicm9rZW4g YnkgYSBicmVha3BvaW50IG9yIGEgc2lnbmFsLiAgKi8KLQkgICAgICBicmVh azsKKyAgICAgICAgICByZXRfcHRpZCA9IGluZmVyaW9yX3B0aWQ7CisgICAg ICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIFNp bmdsZS10aHJlYWQgcmVjb3JkLiAgKi8KKyAgICAgICAgICBpZiAocmVjb3Jk X3Jlc3VtZV9zdGVwKQorICAgICAgICAgICAgeworCSAgICAgIC8qIFRoaXMg aXMgYSBzaW5nbGUgc3RlcC4gICovCisJICAgICAgcmV0X3B0aWQgPSByZWNv cmRfYmVuZWF0aF90b193YWl0IChyZWNvcmRfYmVuZWF0aF90b193YWl0X29w cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwdGlkLCBzdGF0dXMsIG9wdGlvbnMpOwogCSAgICB9CisgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBU aGlzIGlzIG5vdCBhIHNpbmdsZSBzdGVwLiAgKi8KKyAgICAgICAgICAgICAg d2hpbGUgKDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgaWYgKHJlY29yZF90aHJlYWRfd2FpdCAocHRpZCwgc3RhdHVzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u cywgJnJldF9wdGlkKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK LQkgIHJldHVybiByZXQ7Ci0JfQorICAgICAgICAgICAgICAgICAgaWYgKHJl Y29yZF9yZXN1bWVfc3RlcCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgICAgICAgICAgIC8qIFRoZXJlIGlzIG5vdCBhIGJyZWFr cG9pbnQsIGFuZCBnZGIgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICBz dGVwcGluZywgdGhlcmVmb3JlIGdkYiB3aWxsIG5vdCBzdG9wLgorICAgICAg ICAgICAgICAgICAgICAgVGhlcmVmb3JlIHdlIHdpbGwgbm90IHJldHVybiB0 byBnZGIuCisgICAgICAgICAgICAgICAgICAgICBSZWNvcmQgdGhlIGluc24g YW5kIHJlc3VtZS4gICovCisJCSAgaWYgKCFkb19yZWNvcmRfbWVzc2FnZSAo VEFSR0VUX1NJR05BTF8wLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgIHJldF9wdGlkID0gaW5mZXJpb3JfcHRp ZDsKKyAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMtPmtpbmQgPSBUQVJH RVRfV0FJVEtJTkRfU1RPUFBFRDsKKyAgICAgICAgICAgICAgICAgICAgICBz dGF0dXMtPnZhbHVlLnNpZyA9IFRBUkdFVF9TSUdOQUxfMDsKKyAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor CisJCSAgcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0 aF90b19yZXN1bWVfb3BzLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVjb3JkX3Jlc3VtZV9wdGlkLCByZWNvcmRfc3RlcCwKKwkJICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRBUkdFVF9TSUdOQUxfMCk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg fQogICBlbHNlCiAgICAgewotICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSA9IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOwotICAgICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2Fj aGUpOworICAgICAgLyogUmVwbGF5IG1vZGUuICAqLworICAgICAgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZTsKKyAgICAgIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoOwogICAgICAgaW50IGNvbnRpbnVlX2ZsYWcgPSAxOwogICAgICAg aW50IGZpcnN0X3JlY29yZF9lbmQgPSAxOwotICAgICAgc3RydWN0IGNsZWFu dXAgKm9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAocmVjb3JkX3dhaXRf Y2xlYW51cHMsIDApOworICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVh bnVwcyA9CisgICAgICAgIG1ha2VfY2xlYW51cCAocmVjb3JkX3dhaXRfcmVw bGF5X2NsZWFudXBzLCAwKTsKICAgICAgIENPUkVfQUREUiB0bXBfcGM7Cisg ICAgICBwdGlkX3Qgb2xkX2luZmVyaW9yX3B0aWQgPSBpbmZlcmlvcl9wdGlk OworCisgICAgICBpZiAoIXB0aWRfZXF1YWwgKHJlY29yZF9wcmV2X3B0aWQs IG51bGxfcHRpZCkpCisgICAgICAgIGluZmVyaW9yX3B0aWQgPSByZWNvcmRf cHJldl9wdGlkOworICAgICAgcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdj YWNoZSAoKTsKKyAgICAgIGdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAo cmVnY2FjaGUpOwogCiAgICAgICBzdGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJ VEtJTkRfU1RPUFBFRDsKIApAQCAtMTEyOSw4ICsxNTYxLDYgQEAgcmVjb3Jk X3dhaXQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAJICAgIH0KIAl9CiAK LSAgICAgIHJlY29yZF9nZXRfc2lnID0gMDsKLSAgICAgIHNpZ25hbCAoU0lH SU5ULCByZWNvcmRfc2lnX2hhbmRsZXIpOwogICAgICAgLyogSWYgR0RCIGlz IGluIHRlcm1pbmFsX2luZmVyaW9yIG1vZGUsIGl0IHdpbGwgbm90IGdldCB0 aGUgc2lnbmFsLgogICAgICAgICAgQW5kIGluIEdEQiByZXBsYXkgbW9kZSwg R0RCIGRvZXNuJ3QgbmVlZCB0byBiZSBpbiB0ZXJtaW5hbF9pbmZlcmlvcgog ICAgICAgICAgbW9kZSwgYmVjYXVzZSBpbmZlcmlvciB3aWxsIG5vdCBleGVj dXRlZC4KQEAgLTExNjEsNyArMTU5MSw3IEBAIHJlY29yZF93YWl0IChzdHJ1 Y3QgdGFyZ2V0X29wcyAqb3BzLAogCSAgICAgIGJyZWFrOwogCSAgICB9CiAK LSAgICAgICAgICByZWNvcmRfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJj aCwgcmVjb3JkX2xpc3QpOworICAgICAgICAgIHJlY29yZF9leGVjX2luc24g KCZyZWdjYWNoZSwgJmdkYmFyY2gsIHJlY29yZF9saXN0KTsKIAogCSAgaWYg KHJlY29yZF9saXN0LT50eXBlID09IHJlY29yZF9lbmQpCiAJICAgIHsKQEAg LTExODQsMTIgKzE2MTQsMTMgQEAgcmVjb3JkX3dhaXQgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMsCiAJCSAgICAgSW4gRVhFQ19GT1JXQVJEIG1vZGUsIHRo aXMgaXMgdGhlIHJlY29yZF9lbmQgb2YgY3VycmVudAogCQkgICAgIGluc3Ry dWN0aW9uLiAgKi8KIAkJICAvKiBzdGVwICovCi0JCSAgaWYgKHJlY29yZF9y ZXN1bWVfc3RlcCkKKwkJICBpZiAocmVjb3JkX3Jlc3VtZV9zdGVwCisgICAg ICAgICAgICAgICAgICAgICAgJiYgcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRp ZCwgb2xkX2luZmVyaW9yX3B0aWQpKQogCQkgICAgewogCQkgICAgICBpZiAo cmVjb3JkX2RlYnVnID4gMSkKIAkJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKIAkJCQkJICAgICJQcm9jZXNzIHJlY29yZDogc3RlcC5cbiIp OwotCQkgICAgICBjb250aW51ZV9mbGFnID0gMDsKKyAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZV9mbGFnID0gMDsKIAkJICAgIH0KIAogCQkgIC8q IGNoZWNrIGJyZWFrcG9pbnQgKi8KQEAgLTEyMzMsMjIgKzE2NjQsMjMgQEAg cmVjb3JkX3dhaXQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAJfQogICAg ICAgd2hpbGUgKGNvbnRpbnVlX2ZsYWcpOwogCi0gICAgICBzaWduYWwgKFNJ R0lOVCwgaGFuZGxlX3NpZ2ludCk7Ci0KIHJlcGxheV9vdXQ6Ci0gICAgICBp ZiAocmVjb3JkX2dldF9zaWcpCi0Jc3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJH RVRfU0lHTkFMX0lOVDsKLSAgICAgIGVsc2UgaWYgKHJlY29yZF9saXN0LT51 LmVuZC5zaWd2YWwgIT0gVEFSR0VUX1NJR05BTF8wKQorICAgICAgaWYgKHJl Y29yZF9saXN0LT51LmVuZC5zaWd2YWwgIT0gVEFSR0VUX1NJR05BTF8wKQog CS8qIEZJWE1FOiBiZXR0ZXIgd2F5IHRvIGNoZWNrICovCiAJc3RhdHVzLT52 YWx1ZS5zaWcgPSByZWNvcmRfbGlzdC0+dS5lbmQuc2lndmFsOwogICAgICAg ZWxzZQogCXN0YXR1cy0+dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF9UUkFQ OworICAgICAgcmV0X3B0aWQgPSBpbmZlcmlvcl9wdGlkOwogCiAgICAgICBk aXNjYXJkX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogICAgIH0KIAorICBp ZiAocmVjb3JkX2dldF9zaWcpCisgICAgc3RhdHVzLT52YWx1ZS5zaWcgPSBU QVJHRVRfU0lHTkFMX0lOVDsKKworICBkb19jbGVhbnVwcyAoc2lnbmFsX2Ns ZWFudXBzKTsKICAgZG9fY2xlYW51cHMgKHNldF9jbGVhbnVwcyk7Ci0gIHJl dHVybiBpbmZlcmlvcl9wdGlkOworICByZXR1cm4gcmV0X3B0aWQ7CiB9CiAK IC8qICJ0b19kaXNjb25uZWN0IiBtZXRob2QgZm9yIHByb2Nlc3MgcmVjb3Jk IHRhcmdldC4gICovCkBAIC0xMzExLDYgKzE3NDMsMTIgQEAgcmVjb3JkX3Jl Z2lzdGVyc19jaGFuZ2UgKHN0cnVjdCByZWdjYWNoZQogICByZWNvcmRfYXJj aF9saXN0X2hlYWQgPSBOVUxMOwogICByZWNvcmRfYXJjaF9saXN0X3RhaWwg PSBOVUxMOwogCisgIGlmICghcHRpZF9lcXVhbCAocmVjb3JkX3ByZXZfcHRp ZCwgaW5mZXJpb3JfcHRpZCkpCisgICAgeworICAgICAgcmVjb3JkX2FyY2hf bGlzdF9hZGRfcHRpZCAoJnJlY29yZF9wcmV2X3B0aWQpOworICAgICAgcmVj b3JkX3ByZXZfcHRpZCA9IGluZmVyaW9yX3B0aWQ7CisgICAgfQorCiAgIGlm IChyZWdudW0gPCAwKQogICAgIHsKICAgICAgIGludCBpOwpAQCAtMTQzMyw2 ICsxODcxLDExIEBAIHJlY29yZF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJn ZXRfb3BzICoKICAgICAgIC8qIFJlY29yZCByZWdpc3RlcnMgY2hhbmdlIHRv IGxpc3QgYXMgYW4gaW5zdHJ1Y3Rpb24uICAqLwogICAgICAgcmVjb3JkX2Fy Y2hfbGlzdF9oZWFkID0gTlVMTDsKICAgICAgIHJlY29yZF9hcmNoX2xpc3Rf dGFpbCA9IE5VTEw7CisgICAgICBpZiAoIXB0aWRfZXF1YWwgKHJlY29yZF9w cmV2X3B0aWQsIGluZmVyaW9yX3B0aWQpKQorICAgICAgICB7CisgICAgICAg ICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcHRpZCAoJnJlY29yZF9wcmV2X3B0 aWQpOworICAgICAgICAgIHJlY29yZF9wcmV2X3B0aWQgPSBpbmZlcmlvcl9w dGlkOworICAgICAgICB9CiAgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtIChvZmZzZXQsIGxlbikpCiAJewogCSAgcmVjb3JkX2xpc3RfcmVs ZWFzZSAocmVjb3JkX2FyY2hfbGlzdF90YWlsKTsKQEAgLTIwODgsNiArMjUz MSwzMiBAQCByZWNvcmRfcmVzdG9yZSAodm9pZCkKIAkJCQlyZWMtPnUubWVt Lmxlbik7CiAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSByZWNv cmRfcHRpZDogLyogcHRpZCAqLworICAgICAgICAgIHJlYyA9IHJlY29yZF9w dGlkX2FsbG9jICgpOworCisJICAvKiBHZXQgUHJvY2VzcyBpZC4gICovCisJ ICBiZmRjb3JlX3JlYWQgKGNvcmVfYmZkLCBvc2VjLCAmYWRkciwKKwkJCXNp emVvZiAoYWRkciksICZiZmRfb2Zmc2V0KTsKKwkgIHJlYy0+dS5wdGlkLnBp ZCA9IChpbnQpIG5ldG9yZGVyNjQgKGFkZHIpOworCisJICAvKiBHZXQgTGln aHR3ZWlnaHQgcHJvY2VzcyBpZC4gICovCisJICBiZmRjb3JlX3JlYWQgKGNv cmVfYmZkLCBvc2VjLCAmYWRkciwKKwkJCXNpemVvZiAoYWRkciksICZiZmRf b2Zmc2V0KTsKKwkgIHJlYy0+dS5wdGlkLmx3cCA9IChsb25nKSBuZXRvcmRl cjY0IChhZGRyKTsKKworCSAgLyogR2V0IFRocmVhZCBpZC4gICovCisJICBi ZmRjb3JlX3JlYWQgKGNvcmVfYmZkLCBvc2VjLCAmYWRkciwKKwkJCXNpemVv ZiAoYWRkciksICZiZmRfb2Zmc2V0KTsKKwkgIHJlYy0+dS5wdGlkLnRpZCA9 IChsb25nKSBuZXRvcmRlcjY0IChhZGRyKTsKKworCSAgaWYgKHJlY29yZF9k ZWJ1ZykKKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAi XAorICBSZWFkaW5nIHB0aWQgJXMgKDEgKyA4ICsgOCArIDggYnl0ZXMpLCBv ZmZzZXQgPT0gJXNcbiIsCisJCQkJdGFyZ2V0X3BpZF90b19zdHIgKHJlY29y ZF9saXN0LT51LnB0aWQpLAorCQkJCXBhZGRyZXNzIChnZXRfY3VycmVudF9h cmNoICgpLAorCQkJCQkgIGJmZF9vZmZzZXQpKTsKKyAgICAgICAgICBicmVh azsKKwogICAgICAgICBjYXNlIHJlY29yZF9lbmQ6IC8qIGVuZCAqLwogICAg ICAgICAgIHJlYyA9IHJlY29yZF9lbmRfYWxsb2MgKCk7CiAgICAgICAgICAg cmVjb3JkX2luc25fbnVtICsrOwpAQCAtMjI0MCw3ICsyNzA5LDcgQEAgY21k X3JlY29yZF9zYXZlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dAogICAgICAg aWYgKHJlY29yZF9saXN0ID09ICZyZWNvcmRfZmlyc3QpCiAgICAgICAgIGJy ZWFrOwogCi0gICAgICByZWNvcmRfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2Ri YXJjaCwgcmVjb3JkX2xpc3QpOworICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAo JnJlZ2NhY2hlLCAmZ2RiYXJjaCwgcmVjb3JkX2xpc3QpOwogCiAgICAgICBp ZiAocmVjb3JkX2xpc3QtPnByZXYpCiAgICAgICAgIHJlY29yZF9saXN0ID0g cmVjb3JkX2xpc3QtPnByZXY7CkBAIC0yMjYxLDYgKzI3MzAsOSBAQCBjbWRf cmVjb3JkX3NhdmUgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0CiAgICAgICBj YXNlIHJlY29yZF9tZW06CiAJc2F2ZV9zaXplICs9IDEgKyA0ICsgOCArIHJl Y29yZF9saXN0LT51Lm1lbS5sZW47CiAJYnJlYWs7CisgICAgICBjYXNlIHJl Y29yZF9wdGlkOgorCXNhdmVfc2l6ZSArPSAxICsgOCArIDggKyA4OworCWJy ZWFrOwogICAgICAgfQogCiAgIC8qIE1ha2UgdGhlIG5ldyBiZmQgc2VjdGlv bi4gICovCkBAIC0yMzQ3LDYgKzI4MTksMjUgQEAgY21kX3JlY29yZF9zYXZl IChjaGFyICphcmdzLCBpbnQgZnJvbV90dAogCQkJICAgICByZWNvcmRfbGlz dC0+dS5tZW0ubGVuLCAmYmZkX29mZnNldCk7CiAgICAgICAgICAgICAgIGJy ZWFrOwogCisgICAgICAgICAgICBjYXNlIHJlY29yZF9wdGlkOiAvKiBwdGlk ICovCisJICAgICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkJZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCAiXAorICBXcml0aW5nIHB0aWQgJXMgKDEg cGx1cyA4IHBsdXMgOCBwbHVzIDggYnl0ZXMpXG4iLAorCQkJCSAgICB0YXJn ZXRfcGlkX3RvX3N0ciAocmVjb3JkX2xpc3QtPnUucHRpZCkpOworCisJICAg ICAgLyogV3JpdGUgUHJvY2VzcyBpZC4gICovCisJICAgICAgYWRkciA9IG5l dG9yZGVyNjQgKCh1aW50NjRfdCkgcmVjb3JkX2xpc3QtPnUucHRpZC5waWQp OworCSAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQsIG9zZWMsICZhZGRyLCBz aXplb2YgKGFkZHIpLCAmYmZkX29mZnNldCk7CisKKwkgICAgICAvKiBXcml0 ZSBMaWdodHdlaWdodCBwcm9jZXNzIGlkLiAgKi8KKwkgICAgICBhZGRyID0g bmV0b3JkZXI2NCAoKHVpbnQ2NF90KSByZWNvcmRfbGlzdC0+dS5wdGlkLmx3 cCk7CisJICAgICAgYmZkY29yZV93cml0ZSAob2JmZCwgb3NlYywgJmFkZHIs IHNpemVvZiAoYWRkciksICZiZmRfb2Zmc2V0KTsKKworCSAgICAgIC8qIFdy aXRlIFRocmVhZCBpZC4gICovCisJICAgICAgYWRkciA9IG5ldG9yZGVyNjQg KCh1aW50NjRfdCkgcmVjb3JkX2xpc3QtPnUucHRpZC50aWQpOworCSAgICAg IGJmZGNvcmVfd3JpdGUgKG9iZmQsIG9zZWMsICZhZGRyLCBzaXplb2YgKGFk ZHIpLCAmYmZkX29mZnNldCk7CisgICAgICAgICAgICAgIGJyZWFrOworCiAg ICAgICAgICAgICAgIGNhc2UgcmVjb3JkX2VuZDoKIAkJaWYgKHJlY29yZF9k ZWJ1ZykKIAkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJc CkBAIC0yMzY3LDcgKzI4NTgsNyBAQCBjbWRfcmVjb3JkX3NhdmUgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0CiAgICAgICAgIH0KIAogICAgICAgLyogRXhl Y3V0ZSBlbnRyeS4gICovCi0gICAgICByZWNvcmRfZXhlY19pbnNuIChyZWdj YWNoZSwgZ2RiYXJjaCwgcmVjb3JkX2xpc3QpOworICAgICAgcmVjb3JkX2V4 ZWNfaW5zbiAoJnJlZ2NhY2hlLCAmZ2RiYXJjaCwgcmVjb3JkX2xpc3QpOwog CiAgICAgICBpZiAocmVjb3JkX2xpc3QtPm5leHQpCiAgICAgICAgIHJlY29y ZF9saXN0ID0gcmVjb3JkX2xpc3QtPm5leHQ7CkBAIC0yMzgyLDcgKzI4NzMs NyBAQCBjbWRfcmVjb3JkX3NhdmUgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 CiAgICAgICBpZiAocmVjb3JkX2xpc3QgPT0gY3VyX3JlY29yZF9saXN0KQog ICAgICAgICBicmVhazsKIAotICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAocmVn Y2FjaGUsIGdkYmFyY2gsIHJlY29yZF9saXN0KTsKKyAgICAgIHJlY29yZF9l eGVjX2luc24gKCZyZWdjYWNoZSwgJmdkYmFyY2gsIHJlY29yZF9saXN0KTsK IAogICAgICAgaWYgKHJlY29yZF9saXN0LT5wcmV2KQogICAgICAgICByZWNv cmRfbGlzdCA9IHJlY29yZF9saXN0LT5wcmV2OwotLS0gYS9yZWNvcmQuaAor KysgYi9yZWNvcmQuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBSRUNP UkRfSVNfVVNFRAkoY3VycmVudF90YXJnZXQudG9fc3RyYXR1bSA9PSByZWNv cmRfc3RyYXR1bSkKIAogZXh0ZXJuIGludCByZWNvcmRfZGVidWc7CitleHRl cm4gaW50IHJlY29yZF9zdGVwOwogCiBleHRlcm4gaW50IHJlY29yZF9hcmNo X2xpc3RfYWRkX3JlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IG51bSk7CiBleHRlcm4gaW50IHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4pOwotLS0gYS90aHJlYWQuYworKysg Yi90aHJlYWQuYwpAQCAtNjMsMTUgKzYzLDYgQEAgc3RhdGljIHZvaWQgdGhy ZWFkX2FwcGx5X2NvbW1hbmQgKGNoYXIgKgogc3RhdGljIHZvaWQgcmVzdG9y ZV9jdXJyZW50X3RocmVhZCAocHRpZF90KTsKIHN0YXRpYyB2b2lkIHBydW5l X3RocmVhZHMgKHZvaWQpOwogCi0vKiBGcm9udGVuZCB2aWV3IG9mIHRoZSB0 aHJlYWQgc3RhdGUuICBQb3NzaWJsZSBleHRlbnNpb25zOiBzdGVwcGluZywK LSAgIGZpbmlzaGluZywgdW50aWwobGluZyksLi4uICAqLwotZW51bSB0aHJl YWRfc3RhdGUKLXsKLSAgVEhSRUFEX1NUT1BQRUQsCi0gIFRIUkVBRF9SVU5O SU5HLAotICBUSFJFQURfRVhJVEVELAotfTsKLQogc3RydWN0IHRocmVhZF9p bmZvKgogaW5mZXJpb3JfdGhyZWFkICh2b2lkKQogewo= --001636e0ac8faf99a4047828491e--