From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10394 invoked by alias); 2 Nov 2009 16:45:08 -0000 Received: (qmail 10179 invoked by uid 22791); 2 Nov 2009 16:45:01 -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-f192.google.com (HELO mail-pz0-f192.google.com) (209.85.222.192) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 02 Nov 2009 16:44:55 +0000 Received: by pzk30 with SMTP id 30so3576519pzk.24 for ; Mon, 02 Nov 2009 08:44:54 -0800 (PST) MIME-Version: 1.0 Received: by 10.142.61.41 with SMTP id j41mr790419wfa.298.1257180294189; Mon, 02 Nov 2009 08:44:54 -0800 (PST) From: Hui Zhu Date: Mon, 02 Nov 2009 16:45:00 -0000 Message-ID: Subject: [RFC] Prec multi-thread support To: gdb-patches ml Cc: Michael Snyder Content-Type: multipart/mixed; boundary=001636e0b601da92fd0477661885 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/msg00027.txt.bz2 --001636e0b601da92fd0477661885 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 96 Hi guys, This patches just for discussions and comments. Please help me with it. Thanks, Hui --001636e0b601da92fd0477661885 Content-Type: text/plain; charset=US-ASCII; name="prec-fix-error-handler.txt" Content-Disposition: attachment; filename="prec-fix-error-handler.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1jgjxy80 Content-length: 2436 LS0tCiByZWNvcmQuYyB8ICAgMjkgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxOSBk ZWxldGlvbnMoLSkKCi0tLSBhL3JlY29yZC5jCisrKyBiL3JlY29yZC5jCkBA IC05NTQsNyArOTU0LDYgQEAgcmVjb3JkX2Nsb3NlIChpbnQgcXVpdHRpbmcp CiB9CiAKIHN0YXRpYyBpbnQgcmVjb3JkX3Jlc3VtZV9zdGVwID0gMDsKLXN0 YXRpYyBpbnQgcmVjb3JkX3Jlc3VtZV9lcnJvcjsKIAogLyogInRvX3Jlc3Vt ZSIgdGFyZ2V0IG1ldGhvZC4gIFJlc3VtZSB0aGUgcHJvY2VzcyByZWNvcmQg dGFyZ2V0LiAgKi8KIApAQCAtOTY2LDE1ICs5NjUsMTEgQEAgcmVjb3JkX3Jl c3VtZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgcAogCiAgIGlmICghUkVD T1JEX0lTX1JFUExBWSkKICAgICB7Ci0gICAgICBpZiAoZG9fcmVjb3JkX21l c3NhZ2UgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpLCBzaWduYWwpKQotICAg ICAgICB7Ci0gICAgICAgICAgcmVjb3JkX3Jlc3VtZV9lcnJvciA9IDA7Ci0g ICAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJl Y29yZF9yZXN1bWVfZXJyb3IgPSAxOwotICAgICAgICAgIHJldHVybjsKLSAg ICAgICAgfQorICAgICAgc3RydWN0IHJlY29yZF9tZXNzYWdlX2FyZ3MgYXJn czsKKworICAgICAgYXJncy5yZWdjYWNoZSA9IGdldF9jdXJyZW50X3JlZ2Nh Y2hlICgpOworICAgICAgYXJncy5zaWduYWwgPSBzaWduYWw7CisgICAgICBy ZWNvcmRfbWVzc2FnZSAoJmFyZ3MpOwogICAgICAgcmVjb3JkX2JlbmVhdGhf dG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0aF90b19yZXN1bWVfb3BzLCBwdGlk LCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwp OwogICAgIH0KQEAgLTEwMzgsMTQgKzEwMzMsNiBAQCByZWNvcmRfd2FpdCAo c3RydWN0IHRhcmdldF9vcHMgKm9wcywKIAogICBpZiAoIVJFQ09SRF9JU19S RVBMQVkgJiYgb3BzICE9ICZyZWNvcmRfY29yZV9vcHMpCiAgICAgewotICAg ICAgaWYgKHJlY29yZF9yZXN1bWVfZXJyb3IpCi0JewotCSAgLyogSWYgcmVj b3JkX3Jlc3VtZSBnZXQgZXJyb3IsIHJldHVybiBkaXJlY3RseS4gICovCi0J ICBzdGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBFRDsKLQkg IHN0YXR1cy0+dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF9BQlJUOwotCSAg cmV0dXJuIGluZmVyaW9yX3B0aWQ7Ci0JfQotCiAgICAgICBpZiAocmVjb3Jk X3Jlc3VtZV9zdGVwKQogCXsKIAkgIC8qIFRoaXMgaXMgYSBzaW5nbGUgc3Rl cC4gICovCkBAIC0xMDkxLDcgKzEwNzgsMTEgQEAgcmVjb3JkX3dhaXQgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAJCQkgVGhlcmVmb3JlIHdlIHdpbGwg bm90IHJldHVybiB0byBnZGIuCiAJCSAgICAgICAgIFJlY29yZCB0aGUgaW5z biBhbmQgcmVzdW1lLiAgKi8KIAkJICAgICAgaWYgKCFkb19yZWNvcmRfbWVz c2FnZSAocmVnY2FjaGUsIFRBUkdFVF9TSUdOQUxfMCkpCi0JCQlicmVhazsK KyAgCQkJeworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLT5r aW5kID0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQ7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0dXMtPnZhbHVlLnNpZyA9IFRBUkdFVF9TSUdO QUxfMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAJ CQl9CiAKIAkJICAgICAgcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNv cmRfYmVuZWF0aF90b19yZXN1bWVfb3BzLAogCQkJCQkJcHRpZCwgMSwK --001636e0b601da92fd0477661885 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_g1jgjyv41 Content-length: 997 LS0tCiBpMzg2LXRkZXAuYyB8ICAgIDkgKystLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKLS0tIGEv aTM4Ni10ZGVwLmMKKysrIGIvaTM4Ni10ZGVwLmMKQEAgLTQ4NDcsOSArNDg0 Nyw2IEBAIHJlc3dpdGNoOgogICAgICAgLyogaW50MyAqLwogICAgICAgLyog WFhYICovCiAgICAgY2FzZSAweGNjOgotICAgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0cnVj dGlvbiAiCi0JCQkgICAiaW50My5cbiIpKTsKLSAgICAgIGlyLmFkZHIgLT0g MTsKICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKICAgICAgIGJyZWFrOwogCkBA IC00OTU4LDEwICs0OTU1LDggQEAgcmVzd2l0Y2g6CiAKICAgICAgIC8qIHJk dHNjICovCiAgICAgY2FzZSAweDBmMzE6Ci0gICAgICBwcmludGZfdW5maWx0 ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKLQkJ CSAgICJpbnN0cnVjdGlvbiByZHRzYy5cbiIpKTsKLSAgICAgIGlyLmFkZHIg LT0gMjsKLSAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIEkzODZfUkVD T1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX1JFQVhfUkVHTlVN KTsKKyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZf UkVDT1JEX1JFRFhfUkVHTlVNKTsKICAgICAgIGJyZWFrOwogCiAgICAgICAv KiBzeXNlbnRlciAqLwo= --001636e0b601da92fd0477661885 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_g1jgjzdk2 Content-length: 45706 LS0tCiBhbWQ2NC1saW51eC10ZGVwLmMgfCAgICA0IAogZ2RidGhyZWFkLmgg ICAgICAgIHwgICAgMiAKIGkzODYtbGludXgtdGRlcC5jICB8ICAgIDQgCiBp Mzg2LXRkZXAuYyAgICAgICAgfCAgIDUyICsrLS0KIGkzODYtdGRlcC5oICAg ICAgICB8ICAgIDYgCiBsaW51eC1yZWNvcmQuYyAgICAgfCAgICA3IAogbGlu dXgtcmVjb3JkLmggICAgIHwgICAgMiAKIHJlY29yZC5jICAgICAgICAgICB8 ICA1NjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0KIHJlY29yZC5oICAgICAgICAgICB8ICAgIDEgCiA5 IGZpbGVzIGNoYW5nZWQsIDUxNiBpbnNlcnRpb25zKCspLCAxMjggZGVsZXRp b25zKC0pCgotLS0gYS9hbWQ2NC1saW51eC10ZGVwLmMKKysrIGIvYW1kNjQt bGludXgtdGRlcC5jCkBAIC0xMTU1LDcgKzExNTUsNyBAQCBzdGF0aWMgc3Ry dWN0IGxpbnV4X3JlY29yZF90ZGVwIGFtZDY0X2xpCiAjZGVmaW5lIFJFQ09S RF9BUkNIX0dFVF9HUwkweDEwMDQKIAogc3RhdGljIGludAotYW1kNjRfbGlu dXhfc3lzY2FsbF9yZWNvcmQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUp CithbWQ2NF9saW51eF9zeXNjYWxsX3JlY29yZCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgQ09SRV9BRERSIGFkZHIpCiB7CiAgIGludCByZXQ7CiAg IFVMT05HRVNUIHN5c2NhbGxfbmF0aXZlOwpAQCAtMTIwNSw3ICsxMjA1LDcg QEAgYW1kNjRfbGludXhfc3lzY2FsbF9yZWNvcmQgKHN0cnVjdCByZWdjYQog ICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHJldCA9IHJlY29yZF9saW51 eF9zeXN0ZW1fY2FsbCAoc3lzY2FsbF9nZGIsIHJlZ2NhY2hlLAorICAgICAg cmV0ID0gcmVjb3JkX2xpbnV4X3N5c3RlbV9jYWxsIChzeXNjYWxsX2dkYiwg YWRkciwgcmVnY2FjaGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZhbWQ2NF9saW51eF9yZWNvcmRfdGRlcCk7CiAgICAgICBp ZiAocmV0KQogICAgICAgICByZXR1cm4gcmV0OwotLS0gYS9nZGJ0aHJlYWQu aAorKysgYi9nZGJ0aHJlYWQuaApAQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3Qg dGhyZWFkX2luZm8KIAkJCQkgICAga2VybmVsIHRocmVhZCBpZCwgZXRjLiAg Ki8KICAgaW50IG51bTsJCQkvKiBDb252ZW5pZW50IGhhbmRsZSAoR0RCIHRo cmVhZCBpZCkgKi8KIAorICBpbnQgcmVjb3JkX2lzX3dhaXRpbmc7CisKICAg LyogTm9uLXplcm8gbWVhbnMgdGhlIHRocmVhZCBpcyBleGVjdXRpbmcuICBO b3RlOiB0aGlzIGlzIGRpZmZlcmVudAogICAgICBmcm9tIHNheWluZyB0aGF0 IHRoZXJlIGlzIGFuIGFjdGl2ZSB0YXJnZXQgYW5kIHdlIGFyZSBzdG9wcGVk IGF0CiAgICAgIGEgYnJlYWtwb2ludCwgZm9yIGluc3RhbmNlLiAgVGhpcyBp cyBhIHJlYWwgaW5kaWNhdG9yIHdoZXRoZXIgdGhlCi0tLSBhL2kzODYtbGlu dXgtdGRlcC5jCisrKyBiL2kzODYtbGludXgtdGRlcC5jCkBAIC00MTEsNyAr NDExLDcgQEAgaTM4Nl9jYW5vbmljYWxpemVfc3lzY2FsbCAoaW50IHN5c2Nh bGwpCiBzdGF0aWMgc3RydWN0IGxpbnV4X3JlY29yZF90ZGVwIGkzODZfbGlu dXhfcmVjb3JkX3RkZXA7CiAKIHN0YXRpYyBpbnQKLWkzODZfbGludXhfaW50 eDgwX3N5c2VudGVyX3JlY29yZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSkKK2kzODZfbGludXhfaW50eDgwX3N5c2VudGVyX3JlY29yZCAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIGFkZHIpCiB7CiAgIGlu dCByZXQ7CiAgIExPTkdFU1Qgc3lzY2FsbF9uYXRpdmU7CkBAIC00MzcsNyAr NDM3LDcgQEAgaTM4Nl9saW51eF9pbnR4ODBfc3lzZW50ZXJfcmVjb3JkIChz dHJ1YwogICAgICByZXR1cm4gMDsKICAgIH0KIAotICByZXQgPSByZWNvcmRf bGludXhfc3lzdGVtX2NhbGwgKHN5c2NhbGxfZ2RiLCByZWdjYWNoZSwKKyAg cmV0ID0gcmVjb3JkX2xpbnV4X3N5c3RlbV9jYWxsIChzeXNjYWxsX2dkYiwg YWRkciwgcmVnY2FjaGUsCiAJCQkJICAmaTM4Nl9saW51eF9yZWNvcmRfdGRl cCk7CiAgIGlmIChyZXQpCiAgICAgcmV0dXJuIHJldDsKLS0tIGEvaTM4Ni10 ZGVwLmMKKysrIGIvaTM4Ni10ZGVwLmMKQEAgLTMxNjAsMTAgKzMxNjAsMTEg QEAgaTM4Nl9yZWNvcmRfbGVhX21vZHJtIChzdHJ1Y3QgaTM4Nl9yZWNvcgog CiAgIGlmIChpcnAtPm92ZXJyaWRlID49IDApCiAgICAgewotICAgICAgd2Fy bmluZyAoXygiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5IGNo YW5nZSAiCi0gICAgICAgICAgICAgICAgICJvZiBpbnN0cnVjdGlvbiBhdCBh ZGRyZXNzICVzIGJlY2F1c2UgaXQgIgotICAgICAgICAgICAgICAgICAiY2Fu J3QgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VnbWVudCByZWdpc3Rlci4iKSwK LSAgICAgICAgICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBpcnAtPm9yaWdf YWRkcikpOworICAgICAgaWYgKHJlY29yZF9kZWJ1ZykKKyAgICAgICAgd2Fy bmluZyAoXygiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5IGNo YW5nZSAiCisgICAgICAgICAgICAgICAgICAgIm9mIGluc3RydWN0aW9uIGF0 IGFkZHJlc3MgJXMgYmVjYXVzZSBpdCAiCisgICAgICAgICAgICAgICAgICAg ImNhbid0IGdldCB0aGUgdmFsdWUgb2YgdGhlIHNlZ21lbnQgcmVnaXN0ZXIu IiksCisgICAgICAgICAgICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBpcnAt Pm9yaWdfYWRkcikpOwogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC00 MDQyLDExICs0MDQzLDEyIEBAIHJlc3dpdGNoOgogICAgIGNhc2UgMHhhMzoK ICAgICAgIGlmIChpci5vdmVycmlkZSA+PSAwKQogICAgICAgICB7Ci0JICB3 YXJuaW5nIChfKCJQcm9jZXNzIHJlY29yZCBpZ25vcmVzIHRoZSBtZW1vcnkg Y2hhbmdlICIKLSAgICAgICAgICAgICAgICAgICAgICJvZiBpbnN0cnVjdGlv biBhdCBhZGRyZXNzICVzIGJlY2F1c2UgIgotICAgICAgICAgICAgICAgICAg ICAgIml0IGNhbid0IGdldCB0aGUgdmFsdWUgb2YgdGhlIHNlZ21lbnQgIgot ICAgICAgICAgICAgICAgICAgICAgInJlZ2lzdGVyLiIpLAotICAgICAgICAg ICAgICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBpci5vcmlnX2FkZHIpKTsK KyAgICAgICAgICBpZiAocmVjb3JkX2RlYnVnKQorCSAgICB3YXJuaW5nIChf KCJQcm9jZXNzIHJlY29yZCBpZ25vcmVzIHRoZSBtZW1vcnkgY2hhbmdlICIK KyAgICAgICAgICAgICAgICAgICAgICAgIm9mIGluc3RydWN0aW9uIGF0IGFk ZHJlc3MgJXMgYmVjYXVzZSAiCisgICAgICAgICAgICAgICAgICAgICAgICJp dCBjYW4ndCBnZXQgdGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50ICIKKyAgICAg ICAgICAgICAgICAgICAgICAgInJlZ2lzdGVyLiIpLAorICAgICAgICAgICAg ICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGlyLm9yaWdfYWRkcikpOwog CX0KICAgICAgIGVsc2UKIAl7CkBAIC00NDY3LDExICs0NDY5LDEyIEBAIHJl c3dpdGNoOgogICAgICAgICAgIGlmIChpci5hZmxhZyAmJiAoZXMgIT0gZHMp KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKiBhZGRyICs9ICgo dWludDMyX3QpIHJlYWRfcmVnaXN0ZXIgKEkzODZfRVNfUkVHTlVNKSkgPDwg NDsgKi8KLSAgICAgICAgICAgICAgd2FybmluZyAoXygiUHJvY2VzcyByZWNv cmQgaWdub3JlcyB0aGUgbWVtb3J5ICIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAiY2hhbmdlIG9mIGluc3RydWN0aW9uIGF0IGFkZHJlc3MgJXMgIgot ICAgICAgICAgICAgICAgICAgICAgICAgICJiZWNhdXNlIGl0IGNhbid0IGdl dCB0aGUgdmFsdWUgb2YgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAiRVMgc2VnbWVudCByZWdpc3Rlci4iKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGlyLm9yaWdfYWRkcikpOworICAg ICAgICAgICAgICBpZiAocmVjb3JkX2RlYnVnKQorICAgICAgICAgICAgICAg IHdhcm5pbmcgKF8oIlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9y eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlIG9mIGlu c3RydWN0aW9uIGF0IGFkZHJlc3MgJXMgIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgImJlY2F1c2UgaXQgY2FuJ3QgZ2V0IHRoZSB2YWx1ZSBvZiB0 aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVTIHNlZ21lbnQg cmVnaXN0ZXIuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJl c3MgKGdkYmFyY2gsIGlyLm9yaWdfYWRkcikpOwogICAgICAgICAgICAgfQog ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKQEAgLTQ4NzMsNyArNDg3 Niw3IEBAIHJlc3dpdGNoOgogCSAgICBpci5hZGRyIC09IDI7CiAJICAgIGdv dG8gbm9fc3VwcG9ydDsKIAkgIH0KLQlyZXQgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpLT5pMzg2X2ludHg4MF9yZWNvcmQgKGlyLnJlZ2NhY2hlKTsKKwly ZXQgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X2ludHg4MF9yZWNv cmQgKGlyLnJlZ2NhY2hlLCBpci5hZGRyKTsKIAlpZiAocmV0KQogCSAgcmV0 dXJuIHJldDsKICAgICAgIH0KQEAgLTQ5NzUsNyArNDk3OCw4IEBAIHJlc3dp dGNoOgogCSAgICBpci5hZGRyIC09IDI7CiAJICAgIGdvdG8gbm9fc3VwcG9y dDsKIAkgIH0KLQlyZXQgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2 X3N5c2VudGVyX3JlY29yZCAoaXIucmVnY2FjaGUpOworCXJldCA9IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfc3lzZW50ZXJfcmVjb3JkIChpci5y ZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlyLmFkZHIpOwogCWlmIChyZXQp CiAJICByZXR1cm4gcmV0OwogICAgICAgfQpAQCAtNTAwMCw3ICs1MDA0LDgg QEAgcmVzd2l0Y2g6CiAJICAgIGlyLmFkZHIgLT0gMjsKIAkgICAgZ290byBu b19zdXBwb3J0OwogCSAgfQotCXJldCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJj aCktPmkzODZfc3lzY2FsbF9yZWNvcmQgKGlyLnJlZ2NhY2hlKTsKKwlyZXQg PSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X3N5c2NhbGxfcmVjb3Jk IChpci5yZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXIuYWRkcik7CiAJaWYg KHJldCkKIAkgIHJldHVybiByZXQ7CiAgICAgICB9CkBAIC01MTM2LDEyICs1 MTQxLDEzIEBAIHJlc3dpdGNoOgogCSAgICAgIC8qIHNpZHQgKi8KIAkgICAg ICBpZiAoaXIub3ZlcnJpZGUgPj0gMCkKIAkJewotCQkgIHdhcm5pbmcgKF8o IlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSAiCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2Ugb2YgaW5zdHJ1Y3Rpb24g YXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWRkcmVzcyAl cyBiZWNhdXNlIGl0IGNhbid0IGdldCAiCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0aGUgdmFsdWUgb2YgdGhlIHNlZ21lbnQgIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicmVnaXN0ZXIuIiksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXIub3Jp Z19hZGRyKSk7CisgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkX2RlYnVn KQorCQkgICAgd2FybmluZyAoXygiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0 aGUgbWVtb3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Y2hhbmdlIG9mIGluc3RydWN0aW9uIGF0ICIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYWRkcmVzcyAlcyBiZWNhdXNlIGl0IGNhbid0IGdl dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB2YWx1 ZSBvZiB0aGUgc2VnbWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInJlZ2lzdGVyLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXIub3JpZ19hZGRyKSk7CiAJCX0K IAkgICAgICBlbHNlCiAJCXsKLS0tIGEvaTM4Ni10ZGVwLmgKKysrIGIvaTM4 Ni10ZGVwLmgKQEAgLTExNSwxMSArMTE1LDExIEBAIHN0cnVjdCBnZGJhcmNo X3RkZXAKICAgICAgaW4gR0RCIGlzIG5vdCBzYW1lIGFzIEkzODYgaW5zdHJ1 Y3Rpb25zLiAgKi8KICAgY29uc3QgaW50ICpyZWNvcmRfcmVnbWFwOwogICAv KiBQYXJzZSBpbnR4ODAgYXJncy4gICovCi0gIGludCAoKmkzODZfaW50eDgw X3JlY29yZCkgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpOworICBpbnQg KCppMzg2X2ludHg4MF9yZWNvcmQpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBDT1JFX0FERFIgYWRkcik7CiAgIC8qIFBhcnNlIHN5c2VudGVyIGFy Z3MuICAqLwotICBpbnQgKCppMzg2X3N5c2VudGVyX3JlY29yZCkgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUpOworICBpbnQgKCppMzg2X3N5c2VudGVy X3JlY29yZCkgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQURE UiBhZGRyKTsKICAgLyogUGFyc2Ugc3lzY2FsbCBhcmdzLiAgKi8KLSAgaW50 ICgqaTM4Nl9zeXNjYWxsX3JlY29yZCkgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUpOworICBpbnQgKCppMzg2X3N5c2NhbGxfcmVjb3JkKSAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIGFkZHIpOwogfTsKIAog LyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLS0tIGEvbGludXgt cmVjb3JkLmMKKysrIGIvbGludXgtcmVjb3JkLmMKQEAgLTIyMiw3ICsyMjIs NyBAQCByZWNvcmRfbGludXhfbXNnaGRyIChzdHJ1Y3QgcmVnY2FjaGUgKnJl CiAgICBSZXR1cm4gLTEgaWYgc29tZXRoaW5nIHdyb25nLiAgKi8KIAogaW50 Ci1yZWNvcmRfbGludXhfc3lzdGVtX2NhbGwgKGVudW0gZ2RiX3N5c2NhbGwg c3lzY2FsbCwgCityZWNvcmRfbGludXhfc3lzdGVtX2NhbGwgKGVudW0gZ2Ri X3N5c2NhbGwgc3lzY2FsbCwgQ09SRV9BRERSIGFkZHIsCiAJCQkgIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcCAqdGRlcCkKIHsKQEAgLTEy MDksMTAgKzEyMDksMTMgQEAgcmVjb3JkX2xpbnV4X3N5c3RlbV9jYWxsIChl bnVtIGdkYl9zeXNjYQogCiAgICAgY2FzZSBnZGJfc3lzX2ZzeW5jOgogICAg IGNhc2UgZ2RiX3N5c19zaWdyZXR1cm46Ci0gICAgY2FzZSBnZGJfc3lzX2Ns b25lOgogICAgIGNhc2UgZ2RiX3N5c19zZXRkb21haW5uYW1lOgogICAgICAg YnJlYWs7CiAKKyAgICBjYXNlIGdkYl9zeXNfY2xvbmU6CisgICAgICByZWNv cmRfc3RlcCA9IDA7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgZ2RiX3N5 c19uZXd1bmFtZToKICAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkX3Vuc2lnbmVk IChyZWdjYWNoZSwgdGRlcC0+YXJnMSwgJnRtcHVsb25nZXN0KTsKICAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKChDT1JFX0FERFIpIHRt cHVsb25nZXN0LAotLS0gYS9saW51eC1yZWNvcmQuaAorKysgYi9saW51eC1y ZWNvcmQuaApAQCAtNTM0LDcgKzUzNCw3IEBAIGVudW0gZ2RiX3N5c2NhbGwg ewogCiAvKiBSZWNvcmQgYSBsaW51eCBzeXNjYWxsLiAgKi8KIAotZXh0ZXJu IGludCByZWNvcmRfbGludXhfc3lzdGVtX2NhbGwgKGVudW0gZ2RiX3N5c2Nh bGwgbnVtLCAKK2V4dGVybiBpbnQgcmVjb3JkX2xpbnV4X3N5c3RlbV9jYWxs IChlbnVtIGdkYl9zeXNjYWxsIG51bSwgQ09SRV9BRERSIGFkZHIsCiAJCQkJ ICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogCQkJCSAgICAgc3Ry dWN0IGxpbnV4X3JlY29yZF90ZGVwICp0ZGVwKTsKICNlbmRpZiAvKiBfTElO VVhfUkVDT1JEX0hfICovCi0tLSBhL3JlY29yZC5jCisrKyBiL3JlY29yZC5j CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAicmVjb3JkLmgiCiAjaW5j bHVkZSAiZWxmLWJmZC5oIgogI2luY2x1ZGUgImdjb3JlLmgiCisjaW5jbHVk ZSAib2JzZXJ2ZXIuaCIKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgogCkBAIC02 MCw2ICs2MSw4IEBACiAKICNkZWZpbmUgUkVDT1JEX0ZJTEVfTUFHSUMJbmV0 b3JkZXIzMigweDIwMDkxMDE2KQogCisjZGVmaW5lIFJFQ09SRF9USFJFQUQJ KHJlY29yZF9vcHMuYmVuZWF0aC0+dG9fc3RyYXR1bSA9PSB0aHJlYWRfc3Ry YXR1bSkKKwogLyogVGhlc2UgYXJlIHRoZSBjb3JlIHN0cnVjdHMgb2YgdGhl IHByb2Nlc3MgcmVjb3JkIGZ1bmN0aW9uYWxpdHkuCiAKICAgIEEgcmVjb3Jk X2VudHJ5IGlzIGEgcmVjb3JkIG9mIHRoZSB2YWx1ZSBjaGFuZ2Ugb2YgYSBy ZWdpc3RlcgpAQCAtMTA2LDcgKzEwOSw4IEBAIGVudW0gcmVjb3JkX3R5cGUK IHsKICAgcmVjb3JkX2VuZCA9IDAsCiAgIHJlY29yZF9yZWcsCi0gIHJlY29y ZF9tZW0KKyAgcmVjb3JkX21lbSwKKyAgcmVjb3JkX3B0aWQKIH07CiAKIC8q IFRoaXMgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgbWFrZXMgdXAgdGhl IGV4ZWN1dGlvbiBsb2cuCkBAIC0xNDQsNiArMTQ4LDggQEAgc3RydWN0IHJl Y29yZF9lbnRyeQogICAgIHN0cnVjdCByZWNvcmRfcmVnX2VudHJ5IHJlZzsK ICAgICAvKiBtZW0gKi8KICAgICBzdHJ1Y3QgcmVjb3JkX21lbV9lbnRyeSBt ZW07CisgICAgLyogcHRpZCAqLworICAgIHB0aWRfdCBwdGlkOwogICAgIC8q IGVuZCAqLwogICAgIHN0cnVjdCByZWNvcmRfZW5kX2VudHJ5IGVuZDsKICAg fSB1OwpAQCAtMTk2LDEwICsyMDIsMTggQEAgc3RhdGljIGludCByZWNvcmRf aW5zbl9udW0gPSAwOwogICAgdGhhbiBjb3VudCBvZiBpbnNucyBwcmVzZW50 bHkgaW4gZXhlY3V0aW9uIGxvZykuICAqLwogc3RhdGljIFVMT05HRVNUIHJl Y29yZF9pbnNuX2NvdW50OwogCisvKiBJbiByZWNvcmQgbW9kZSwgaXQncyB0 aGUgc3RlcCBvZiBuZXh0IHJlc3VtZS4gICovCitpbnQgcmVjb3JkX3N0ZXA7 CisKKy8qIFRoZSBjdXJyZW50IGluZmVyaW9yX3B0aWQgdGhhdCBpcyByZWNv cmRlZC4gICovCitzdGF0aWMgcHRpZF90IHJlY29yZF9wcmV2X3B0aWQ7CisK IC8qIFRoZSB0YXJnZXRfb3BzIG9mIHByb2Nlc3MgcmVjb3JkLiAgKi8KIHN0 YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyByZWNvcmRfb3BzOwogc3RhdGljIHN0 cnVjdCB0YXJnZXRfb3BzIHJlY29yZF9jb3JlX29wczsKIAorc3RhdGljIHN0 cnVjdCBvYnNlcnZlciAqcmVjb3JkX3RocmVhZHNfb2JzZXJ2ZXIgPSBOVUxM OworCiAvKiBUaGUgYmVuZWF0aCBmdW5jdGlvbiBwb2ludGVycy4gICovCiBz dGF0aWMgc3RydWN0IHRhcmdldF9vcHMgKnJlY29yZF9iZW5lYXRoX3RvX3Jl c3VtZV9vcHM7CiBzdGF0aWMgdm9pZCAoKnJlY29yZF9iZW5lYXRoX3RvX3Jl c3VtZSkgKHN0cnVjdCB0YXJnZXRfb3BzICosIHB0aWRfdCwgaW50LApAQCAt Mjg1LDYgKzI5OSwyNyBAQCByZWNvcmRfbWVtX3JlbGVhc2UgKHN0cnVjdCBy ZWNvcmRfZW50cnkgCiAgIHhmcmVlIChyZWMpOwogfQogCisvKiBBbGxvYyBh IHJlY29yZF9wdGlkIHJlY29yZCBlbnRyeS4gICovCisKK3N0YXRpYyBpbmxp bmUgc3RydWN0IHJlY29yZF9lbnRyeSAqCityZWNvcmRfcHRpZF9hbGxvYyAo dm9pZCkKK3sKKyAgc3RydWN0IHJlY29yZF9lbnRyeSAqcmVjOworCisgIHJl YyA9IChzdHJ1Y3QgcmVjb3JkX2VudHJ5ICopIHhjYWxsb2MgKDEsIHNpemVv ZiAoc3RydWN0IHJlY29yZF9lbnRyeSkpOworICByZWMtPnR5cGUgPSByZWNv cmRfcHRpZDsKKworICByZXR1cm4gcmVjOworfQorCisvKiBGcmVlIGEgcmVj b3JkX3B0aWQgcmVjb3JkIGVudHJ5LiAgKi8KKworc3RhdGljIGlubGluZSB2 b2lkCityZWNvcmRfcHRpZF9yZWxlYXNlIChzdHJ1Y3QgcmVjb3JkX2VudHJ5 ICpyZWMpCit7CisgIHhmcmVlIChyZWMpOworfQorCiAvKiBBbGxvYyBhIHJl Y29yZF9lbmQgcmVjb3JkIGVudHJ5LiAgKi8KIAogc3RhdGljIGlubGluZSBz dHJ1Y3QgcmVjb3JkX2VudHJ5ICoKQEAgLTMyMSw2ICszNTYsOSBAQCByZWNv cmRfZW50cnlfcmVsZWFzZSAoc3RydWN0IHJlY29yZF9lbnRyCiAgIGNhc2Ug cmVjb3JkX21lbToKICAgICByZWNvcmRfbWVtX3JlbGVhc2UgKHJlYyk7CiAg ICAgYnJlYWs7CisgIGNhc2UgcmVjb3JkX3B0aWQ6CisgICAgcmVjb3JkX3B0 aWRfcmVsZWFzZSAocmVjKTsKKyAgICBicmVhazsKICAgY2FzZSByZWNvcmRf ZW5kOgogICAgIHJlY29yZF9lbmRfcmVsZWFzZSAocmVjKTsKICAgICBicmVh azsKQEAgLTUwOSw2ICs1NDcsMjQgQEAgcmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtIChDT1JFX0FERFIgYWRkcgogICByZXR1cm4gMDsKIH0KIAorc3RhdGlj IHZvaWQKK3JlY29yZF9hcmNoX2xpc3RfYWRkX3B0aWQgKHB0aWRfdCAqcHRp ZCkKK3sKKyAgc3RydWN0IHJlY29yZF9lbnRyeSAqcmVjOworCisgIGlmIChy ZWNvcmRfZGVidWcgPiAxKQorICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKKwkJCSJQcm9jZXNzIHJlY29yZDogYWRkIHB0aWQgPSAlcyB0 byAiCisJCQkicmVjb3JkIGxpc3QuXG4iLAorCQkJdGFyZ2V0X3BpZF90b19z dHIgKCpwdGlkKSk7CisKKyAgcmVjID0gcmVjb3JkX3B0aWRfYWxsb2MgKCk7 CisKKyAgcmVjLT51LnB0aWQgPSAqcHRpZDsKKworICByZWNvcmRfYXJjaF9s aXN0X2FkZCAocmVjKTsKK30KKwogLyogQWRkIGEgcmVjb3JkX2VuZCB0eXBl IHN0cnVjdCByZWNvcmRfZW50cnkgdG8gcmVjb3JkX2FyY2hfbGlzdC4gICov CiAKIGludApAQCAtNTcwLDcgKzYyNiw2IEBAIHJlY29yZF9hcmNoX2xpc3Rf Y2xlYW51cHMgKHZvaWQgKmlnbm9yZSkKICAgIHJlY29yZF9hcmNoX2xpc3Qs IGFuZCBhZGQgaXQgdG8gcmVjb3JkX2xpc3QuICAqLwogCiBzdHJ1Y3QgcmVj b3JkX21lc3NhZ2VfYXJncyB7Ci0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGU7CiAgIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWduYWw7CiB9OwogCkBAIC01 NzksMTUgKzYzNCwyMSBAQCByZWNvcmRfbWVzc2FnZSAodm9pZCAqYXJncykK IHsKICAgaW50IHJldDsKICAgc3RydWN0IHJlY29yZF9tZXNzYWdlX2FyZ3Mg Km15YXJncyA9IGFyZ3M7Ci0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X3JlZ2NhY2hlX2FyY2ggKG15YXJncy0+cmVnY2FjaGUpOworICBzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaDsKICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwcyA9IG1ha2Vf Y2xlYW51cCAocmVjb3JkX2FyY2hfbGlzdF9jbGVhbnVwcywgMCk7CiAKKyAg cmVjb3JkX3N0ZXAgPSAxOworCiAgIHJlY29yZF9hcmNoX2xpc3RfaGVhZCA9 IE5VTEw7CiAgIHJlY29yZF9hcmNoX2xpc3RfdGFpbCA9IE5VTEw7CiAKICAg LyogQ2hlY2sgcmVjb3JkX2luc25fbnVtLiAgKi8KICAgcmVjb3JkX2NoZWNr X2luc25fbnVtICgxKTsKIAorICByZWdjYWNoZSA9IGdldF9jdXJyZW50X3Jl Z2NhY2hlICgpOworICBnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJl Z2NhY2hlKTsKKwogICAvKiBJZiBnZGIgc2VuZHMgYSBzaWduYWwgdmFsdWUg dG8gdGFyZ2V0X3Jlc3VtZSwKICAgICAgc2F2ZSBpdCBpbiB0aGUgJ2VuZCcg ZmllbGQgb2YgdGhlIHByZXZpb3VzIGluc3RydWN0aW9uLgogCkBAIC02MTAs MjAgKzY3MSw0NSBAQCByZWNvcmRfbWVzc2FnZSAodm9pZCAqYXJncykKICAg ICAgQnV0IHdlIHNob3VsZCBzdGlsbCBkZWxpdmVyIHRoZSBzaWduYWwgdG8g Z2RiIGR1cmluZyB0aGUgcmVwbGF5LAogICAgICBpZiB3ZSBkZWxpdmVyZWQg aXQgZHVyaW5nIHRoZSByZWNvcmRpbmcuICBUaGVyZWZvcmUgd2Ugc2hvdWxk CiAgICAgIHJlY29yZCB0aGUgc2lnbmFsIGR1cmluZyByZWNvcmRfd2FpdCwg bm90IHJlY29yZF9yZXN1bWUuICAqLwotICBpZiAocmVjb3JkX2xpc3QgIT0g JnJlY29yZF9maXJzdCkgICAgLyogRklYTUUgYmV0dGVyIHdheSB0byBjaGVj ayAqLworICBpZiAocHRpZF9lcXVhbCAocmVjb3JkX3ByZXZfcHRpZCwgaW5m ZXJpb3JfcHRpZCkpCiAgICAgewotICAgICAgZ2RiX2Fzc2VydCAocmVjb3Jk X2xpc3QtPnR5cGUgPT0gcmVjb3JkX2VuZCk7Ci0gICAgICByZWNvcmRfbGlz dC0+dS5lbmQuc2lndmFsID0gbXlhcmdzLT5zaWduYWw7CisgICAgICBpZiAo bXlhcmdzLT5zaWduYWwgIT0gVEFSR0VUX1NJR05BTF8wKQorICAgICAgICB7 CisgICAgICAgICAgZ2RiX2Fzc2VydCAocmVjb3JkX2xpc3QtPnR5cGUgPT0g cmVjb3JkX2VuZCk7CisgICAgICAgICAgcmVjb3JkX2xpc3QtPnUuZW5kLnNp Z3ZhbCA9IG15YXJncy0+c2lnbmFsOworICAgICAgICB9CisgICAgfQorICBl bHNlCisgICAgeworICAgICAgaWYgKG15YXJncy0+c2lnbmFsICE9IFRBUkdF VF9TSUdOQUxfMCkKKyAgICAgICAgeworICAgICAgICAgIHN0cnVjdCByZWNv cmRfZW50cnkgKnJlYzsKKyAgICAgICAgICBmb3IgKHJlYyA9IHJlY29yZF9s aXN0OyByZWMgIT0gcmVjb3JkX2ZpcnN0Lm5leHQ7IHJlYyA9IHJlYy0+cHJl dikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKHJlYy0+dHlw ZSA9PSByZWNvcmRfcHRpZAorICAgICAgICAgICAgICAgICAgJiYgcHRpZF9l cXVhbCAocmVjLT51LnB0aWQsIGluZmVyaW9yX3B0aWQpKQorICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGdkYl9hc3NlcnQgKHJlYy0+ cHJldi0+dHlwZSA9PSByZWNvcmRfZW5kKTsKKyAgICAgICAgICAgICAgICAg IHJlYy0+cHJldi0+dS5lbmQuc2lndmFsID0gbXlhcmdzLT5zaWduYWw7Cisg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgLyogSWYgdGhlIGlu ZmVyaW9yX3B0aWQgY2hhbmdlIChpbmZlcmlvcl9wdGlkIGlzIG5vdCBzYW1l IHdpdGgKKyAgICAgICAgIHJlY29yZF9wcmV2X3B0aWQpLCByZWNvcmQgcmVj b3JkX3ByZXZfcHRpZCB0byByZWNvcmQgbGlzdC4gICovCisgICAgICByZWNv cmRfYXJjaF9saXN0X2FkZF9wdGlkICgmcmVjb3JkX3ByZXZfcHRpZCk7Cisg ICAgICByZWNvcmRfcHJldl9wdGlkID0gaW5mZXJpb3JfcHRpZDsKICAgICB9 CiAKICAgaWYgKG15YXJncy0+c2lnbmFsID09IFRBUkdFVF9TSUdOQUxfMAog ICAgICAgfHwgIWdkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2lnbmFsX3AgKGdk YmFyY2gpKQogICAgIHJldCA9IGdkYmFyY2hfcHJvY2Vzc19yZWNvcmQgKGdk YmFyY2gsCi0JCQkJICBteWFyZ3MtPnJlZ2NhY2hlLAotCQkJCSAgcmVnY2Fj aGVfcmVhZF9wYyAobXlhcmdzLT5yZWdjYWNoZSkpOworCQkJCSAgcmVnY2Fj aGUsCisJCQkJICByZWdjYWNoZV9yZWFkX3BjIChyZWdjYWNoZSkpOwogICBl bHNlCiAgICAgcmV0ID0gZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9zaWduYWwg KGdkYmFyY2gsCi0JCQkJCSBteWFyZ3MtPnJlZ2NhY2hlLAorCQkJCQkgcmVn Y2FjaGUsCiAJCQkJCSBteWFyZ3MtPnNpZ25hbCk7CiAKICAgaWYgKHJldCA+ IDApCkBAIC02NDYsMTIgKzczMiwxMCBAQCByZWNvcmRfbWVzc2FnZSAodm9p ZCAqYXJncykKIH0KIAogc3RhdGljIGludAotZG9fcmVjb3JkX21lc3NhZ2Ug KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0JCSAgIGVudW0gdGFyZ2V0 X3NpZ25hbCBzaWduYWwpCitkb19yZWNvcmRfbWVzc2FnZSAoZW51bSB0YXJn ZXRfc2lnbmFsIHNpZ25hbCkKIHsKICAgc3RydWN0IHJlY29yZF9tZXNzYWdl X2FyZ3MgYXJnczsKIAotICBhcmdzLnJlZ2NhY2hlID0gcmVnY2FjaGU7CiAg IGFyZ3Muc2lnbmFsID0gc2lnbmFsOwogICByZXR1cm4gY2F0Y2hfZXJyb3Jz IChyZWNvcmRfbWVzc2FnZSwgJmFyZ3MsIE5VTEwsIFJFVFVSTl9NQVNLX0FM TCk7CiB9CkBAIC02NzgsOSArNzYyLDEyIEBAIHJlY29yZF9nZGJfb3BlcmF0 aW9uX2Rpc2FibGVfc2V0ICh2b2lkKQogICAgZW50cmllcyBhbmQgbWVtb3J5 IGVudHJpZXMsIGZvbGxvd2VkIGJ5IGFuICdlbmQnIGVudHJ5LiAgKi8KIAog c3RhdGljIGlubGluZSB2b2lkCi1yZWNvcmRfZXhlY19pbnNuIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK K3JlY29yZF9leGVjX2luc24gKHN0cnVjdCByZWdjYWNoZSAqKnJlZ2NhY2hl X3AsIHN0cnVjdCBnZGJhcmNoICoqZ2RiYXJjaF9wLAogCQkgIHN0cnVjdCBy ZWNvcmRfZW50cnkgKmVudHJ5KQogeworICBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlID0gKnJlZ2NhY2hlX3A7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gKmdkYmFyY2hfcDsKKwogICBzd2l0Y2ggKGVudHJ5LT50eXBlKQog ICAgIHsKICAgICBjYXNlIHJlY29yZF9yZWc6IC8qIHJlZyAqLwpAQCAtNzQ0 LDkgKzgzMSw1OSBAQCByZWNvcmRfZXhlY19pbnNuIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhCiAgICAgICAgICAgfQogICAgICAgfQogICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIHJlY29yZF9wdGlkOiAvKiBwdGlkICovCisgICAgICB7 CisgICAgICAgIHB0aWRfdCB0bXBfcHRpZDsKKworICAgICAgICBpZiAocmVj b3JkX2RlYnVnID4gMSkKKyAgICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UHJvY2VzcyByZWNvcmQ6IHJlY29yZF9wdGlkICVzIHRvICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJpbmZlcmlvciBwdGlkID0gJXMuXG4i LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNz X3RvX3N0cmluZyAoZW50cnkpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0X3BpZF90b19zdHIgKGVudHJ5LT51LnB0aWQpKTsKKwor ICAgICAgICBpZiAoIXB0aWRfZXF1YWwgKGVudHJ5LT51LnB0aWQsIG51bGxf cHRpZCkpCisgICAgICAgICAgeworICAgICAgICAgICAgaW5mZXJpb3JfcHRp ZCA9IGVudHJ5LT51LnB0aWQ7CisgICAgICAgICAgICAqcmVnY2FjaGVfcCA9 IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOworICAgICAgICAgICAgKmdkYmFy Y2hfcCA9IGdldF9yZWdjYWNoZV9hcmNoICgqcmVnY2FjaGVfcCk7CisgICAg ICAgICAgfQorICAgICAgICB0bXBfcHRpZCA9IGVudHJ5LT51LnB0aWQ7Cisg ICAgICAgIGVudHJ5LT51LnB0aWQgPSByZWNvcmRfcHJldl9wdGlkOworICAg ICAgICByZWNvcmRfcHJldl9wdGlkID0gdG1wX3B0aWQ7CisgICAgICB9Cisg ICAgICBicmVhazsKICAgICB9CiB9CiAKK3N0YXRpYyBpbnQgcmVjb3JkX3Ro cmVhZF9udW1iZXI7CisKK3N0YXRpYyBpbnQKK3JlY29yZF90aHJlYWRfbnVt YmVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAq dW51c2VkKQoreworICByZWNvcmRfdGhyZWFkX251bWJlciArKzsKKworICBy ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3JlY29yZF90aHJlYWRfbnVt YmVyX3Jlc2V0ICh2b2lkKQoreworICByZWNvcmRfdGhyZWFkX251bWJlciA9 IDA7CisKKyAgaWYgKFJFQ09SRF9USFJFQUQpCisgICAgaXRlcmF0ZV9vdmVy X3RocmVhZHMgKHJlY29yZF90aHJlYWRfbnVtYmVyX2NvdW50LCBOVUxMKTsK K30KKworc3RhdGljIHZvaWQKK3JlY29yZF9uZXdfdGhyZWFkX2hhbmRsZXIg KHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCit7CisgIHRwLT5yZWNvcmRfaXNf d2FpdGluZyA9IDA7CisKKyAgcmVjb3JkX3RocmVhZF9udW1iZXJfcmVzZXQg KCk7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyAqdG1wX3RvX3Jl c3VtZV9vcHM7CiBzdGF0aWMgdm9pZCAoKnRtcF90b19yZXN1bWUpIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqLCBwdGlkX3QsIGludCwKIAkJCSAgICAgIGVudW0g dGFyZ2V0X3NpZ25hbCk7CkBAIC04MzgsNiArOTc1LDggQEAgcmVjb3JkX29w ZW5fMSAoY2hhciAqbmFtZSwgaW50IGZyb21fdHR5KQogICAgIGVycm9yIChf KCJDb3VsZCBub3QgZmluZCAndG9fcmVtb3ZlX2JyZWFrcG9pbnQnIG1ldGhv ZCBvbiB0aGUgdGFyZ2V0IHN0YWNrLiIpKTsKIAogICBwdXNoX3RhcmdldCAo JnJlY29yZF9vcHMpOworCisgIHJlY29yZF90aHJlYWRzX29ic2VydmVyID0g b2JzZXJ2ZXJfYXR0YWNoX25ld190aHJlYWQgKHJlY29yZF9uZXdfdGhyZWFk X2hhbmRsZXIpOwogfQogCiAvKiAidG9fb3BlbiIgdGFyZ2V0IG1ldGhvZC4g IE9wZW4gdGhlIHByb2Nlc3MgcmVjb3JkIHRhcmdldC4gICovCkBAIC05MDMs NiArMTA0Miw3IEBAIHJlY29yZF9vcGVuIChjaGFyICpuYW1lLCBpbnQgZnJv bV90dHkpCiAgIHJlY29yZF9pbnNuX2NvdW50ID0gMDsKICAgcmVjb3JkX2xp c3QgPSAmcmVjb3JkX2ZpcnN0OwogICByZWNvcmRfbGlzdC0+bmV4dCA9IE5V TEw7CisgIHJlY29yZF9wcmV2X3B0aWQgPSBudWxsX3B0aWQ7CiAKICAgLyog U2V0IHRoZSB0bXAgYmVuZWF0aCBwb2ludGVycyB0byBiZW5lYXRoIHBvaW50 ZXJzLiAgKi8KICAgcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcyA9IHRt cF90b19yZXN1bWVfb3BzOwpAQCAtOTIwLDYgKzEwNjAsOCBAQCByZWNvcmRf b3BlbiAoY2hhciAqbmFtZSwgaW50IGZyb21fdHR5KQogICAgIHJlY29yZF9j b3JlX29wZW5fMSAobmFtZSwgZnJvbV90dHkpOwogICBlbHNlCiAgICAgcmVj b3JkX29wZW5fMSAobmFtZSwgZnJvbV90dHkpOworCisgIHJlY29yZF90aHJl YWRfbnVtYmVyX3Jlc2V0ICgpOwogfQogCiAvKiAidG9fY2xvc2UiIHRhcmdl dCBtZXRob2QuICBDbG9zZSB0aGUgcHJvY2VzcyByZWNvcmQgdGFyZ2V0LiAg Ki8KQEAgLTkzMiw2ICsxMDc0LDEyIEBAIHJlY29yZF9jbG9zZSAoaW50IHF1 aXR0aW5nKQogICBpZiAocmVjb3JkX2RlYnVnKQogICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlByb2Nlc3MgcmVjb3JkOiByZWNvcmRf Y2xvc2VcbiIpOwogCisgIGlmIChyZWNvcmRfdGhyZWFkc19vYnNlcnZlcikK KyAgICB7CisgICAgICBvYnNlcnZlcl9kZXRhY2hfbmV3X3RocmVhZCAocmVj b3JkX3RocmVhZHNfb2JzZXJ2ZXIpOworICAgICAgcmVjb3JkX3RocmVhZHNf b2JzZXJ2ZXIgPSBOVUxMOworICAgIH0KKwogICByZWNvcmRfbGlzdF9yZWxl YXNlIChyZWNvcmRfbGlzdCk7CiAKICAgLyogUmVsZWFzZSByZWNvcmRfY29y ZV9yZWdidWYuICAqLwpAQCAtOTU0LDYgKzExMDIsOCBAQCByZWNvcmRfY2xv c2UgKGludCBxdWl0dGluZykKIH0KIAogc3RhdGljIGludCByZWNvcmRfcmVz dW1lX3N0ZXAgPSAwOworc3RhdGljIHB0aWRfdCByZWNvcmRfcmVzdW1lX3B0 aWQ7CitzdGF0aWMgZW51bSB0YXJnZXRfc2lnbmFsIHJlY29yZF9yZXN1bWVf c2lnbmFsID0gVEFSR0VUX1NJR05BTF8wOwogCiAvKiAidG9fcmVzdW1lIiB0 YXJnZXQgbWV0aG9kLiAgUmVzdW1lIHRoZSBwcm9jZXNzIHJlY29yZCB0YXJn ZXQuICAqLwogCkBAIC05NjUsMTQgKzExMTUsMTg4IEBAIHJlY29yZF9yZXN1 bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHAKIAogICBpZiAoIVJFQ09S RF9JU19SRVBMQVkpCiAgICAgewotICAgICAgc3RydWN0IHJlY29yZF9tZXNz YWdlX2FyZ3MgYXJnczsKKyAgICAgIHJlY29yZF9yZXN1bWVfcHRpZCA9IHB0 aWQ7CiAKLSAgICAgIGFyZ3MucmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdj YWNoZSAoKTsKLSAgICAgIGFyZ3Muc2lnbmFsID0gc2lnbmFsOwotICAgICAg cmVjb3JkX21lc3NhZ2UgKCZhcmdzKTsKLSAgICAgIHJlY29yZF9iZW5lYXRo X3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywgcHRp ZCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFs KTsKKyAgICAgIGlmIChyZWNvcmRfdGhyZWFkX251bWJlciA+IDEgJiYgIXB0 aWRfZXF1YWwgKHB0aWQsIGluZmVyaW9yX3B0aWQpKQorICAgICAgICB7Cisg ICAgICAgICAgcmVjb3JkX3Jlc3VtZV9zaWduYWwgPSBzaWduYWw7CisgICAg ICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHN0cnVj dCByZWNvcmRfbWVzc2FnZV9hcmdzIGFyZ3M7CisKKyAgICAgICAgICBhcmdz LnNpZ25hbCA9IHNpZ25hbDsKKyAgICAgICAgICByZWNvcmRfbWVzc2FnZSAo JmFyZ3MpOworICAgICAgICAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAo cmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywgcHRpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9zdGVwLCBzaWdu YWwpOworICAgICAgICB9CisgICAgfQorfQorCitzdHJ1Y3QgcmVjb3JkX3Ro cmVhZF93YWl0X2FyZ3MgeworICBwdGlkX3QgcmVhbF9pbmZlcmlvcl9wdGlk OworICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnJlYWxfaW5mZXJpb3JfdHA7Cisg IHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyByZWFsX2luZmVyaW9yX3N0YXR1 czsKKworICBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1czsKKyAg aW50IG9wdGlvbnM7Cit9OworCitzdGF0aWMgaW50CityZWNvcmRfdGhyZWFk X3Jlc2V0X2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLCB2b2lk ICpkYXRhKQoreworICB0cC0+cmVjb3JkX2lzX3dhaXRpbmcgPSAwOworCisg IHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityZWNvcmRfdGhyZWFkX2No ZWNrX2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLCB2b2lkICpk YXRhKQoreworICBpZiAodHAtPnJlY29yZF9pc193YWl0aW5nKQorICAgIHJl dHVybiAxOworCisgIHJldHVybiAwOworfQorCisvKiBSZXR1cm4gMSBpZiBp dCBpcyBub3QgYSBzaW1wbGUgc3RlcC4KKyAgIFJldHVybiAwIGlmIGl0IGlz IGEgc2ltcGxlIHN0ZXAuICAqLworCitzdGF0aWMgaW50CityZWNvcmRfdGhy ZWFkX3dhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0 dXMgKnN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbnMs IHB0aWRfdCAqcmV0X3B0aWQpCit7CisgIHB0aWRfdCB3YWl0X3B0aWQgPSBy ZWNvcmRfYmVuZWF0aF90b193YWl0IChyZWNvcmRfYmVuZWF0aF90b193YWl0 X29wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHB0aWQsIHN0YXR1cywgb3B0aW9ucyk7CisKKyAgaWYgKHJldF9w dGlkKQorICAgICpyZXRfcHRpZCA9IHdhaXRfcHRpZDsKKworICBpZiAoc3Rh dHVzLT5raW5kID09IFRBUkdFVF9XQUlUS0lORF9JR05PUkUpCisgICAgcmV0 dXJuIDA7CisKKyAgaW5mZXJpb3JfcHRpZCA9IHdhaXRfcHRpZDsKKworICAv KiBJcyB0aGlzIGEgU0lHVFJBUD8gICovCisgIGlmIChzdGF0dXMtPmtpbmQg PT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQKKyAgICAgICYmIHN0YXR1cy0+ dmFsdWUuc2lnID09IFRBUkdFVF9TSUdOQUxfVFJBUCkKKyAgICB7CisgICAg ICBDT1JFX0FERFIgdG1wX3BjOworICAgICAgc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZTsKKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworCisg ICAgICAvKiBZZXMgLS0gY2hlY2sgaWYgdGhlcmUgaXMgYSBicmVha3BvaW50 LiAgKi8KKyAgICAgIHJlZ2lzdGVyc19jaGFuZ2VkICgpOworICAgICAgcmVn Y2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsKKyAgICAgIGdkYmFy Y2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOworICAgICAgdG1w X3BjID0gcmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpOworICAgICAgaWYg KCFyZWNvcmRfc3RlcCkKKyAgICAgICAgdG1wX3BjIC09IGdkYmFyY2hfZGVj cl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCk7CisgICAgICBpZiAoYnJlYWtw b2ludF9pbnNlcnRlZF9oZXJlX3AgKGdldF9yZWdjYWNoZV9hc3BhY2UgKHJl Z2NhY2hlKSwgdG1wX3BjKSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFRo ZXJlIGlzIGEgYnJlYWtwb2ludC4gIEdEQiB3aWxsIHdhbnQgdG8gc3RvcC4g ICovCisgICAgICAgICAgaWYgKHJlY29yZF9zdGVwKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICBDT1JFX0FERFIgZGVjcl9wY19hZnRlcl9icmVh aworICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdkYmFyY2hfZGVjcl9w Y19hZnRlcl9icmVhayAoZ2RiYXJjaCk7CisgICAgICAgICAgICAgIGlmIChk ZWNyX3BjX2FmdGVyX2JyZWFrKQorICAgICAgICAgICAgICAgIHJlZ2NhY2hl X3dyaXRlX3BjIChyZWdjYWNoZSwgdG1wX3BjICsgZGVjcl9wY19hZnRlcl9i cmVhayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gMTsK KyAgICAgICAgfQorCisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgcmV0 dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3JlY29yZF90aHJlYWRfd2FpdF9j YWxsYmFjayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwgdm9pZCAqZGF0YSkK K3sKKyAgc3RydWN0IHJlY29yZF90aHJlYWRfd2FpdF9hcmdzICphcmdzID0g ZGF0YTsKKyAgZW51bSB0YXJnZXRfc2lnbmFsIHNpZyA9IFRBUkdFVF9TSUdO QUxfMDsKKyAgaW50IG9wdGlvbnMgPSBhcmdzLT5vcHRpb25zOworICBpbnQg cmV0OworCisgIGlmIChyZWNvcmRfZGVidWcgPiAxKQorICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKyAgICAgICAgICAgICAgICAgICAg ICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX3RocmVhZF93YWl0X2NhbGxi YWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bWUgJXNcbiIs IHRhcmdldF9waWRfdG9fc3RyICh0cC0+cHRpZCkpOworCisgIGluZmVyaW9y X3B0aWQgPSB0cC0+cHRpZDsKKworICBpZiAoIXRwLT5yZWNvcmRfaXNfd2Fp dGluZykKKyAgICB7CisgICAgICBpZiAocmVjb3JkX3Jlc3VtZV9zaWduYWwg IT0gVEFSR0VUX1NJR05BTF8wCisgICAgICAgICAgJiYgcHRpZF9lcXVhbCAo aW5mZXJpb3JfcHRpZCwgYXJncy0+cmVhbF9pbmZlcmlvcl9wdGlkKSkKKyAg ICAgICAgeworICAgICAgICAgIHNpZyA9IHJlY29yZF9yZXN1bWVfc2lnbmFs OworICAgICAgICAgIHJlY29yZF9yZXN1bWVfc2lnbmFsID0gVEFSR0VUX1NJ R05BTF8wOworICAgICAgICB9CisgICAgICBpZiAoIWRvX3JlY29yZF9tZXNz YWdlIChzaWcpKQorICAgICAgICB7CisgICAgICAgICAgYXJncy0+c3RhdHVz LT5raW5kID0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQ7CisgICAgICAgICAg YXJncy0+c3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJHRVRfU0lHTkFMXzA7Cisg ICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgaWYgKHJl Y29yZF9zdGVwID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBUaGUg bmV4dCBpbnNuIGlzIGEgc3lzX2Nsb25lLiAgKi8KKyAgICAgICAgICBpZiAo aXRlcmF0ZV9vdmVyX3RocmVhZHMgKHJlY29yZF90aHJlYWRfY2hlY2tfY2Fs bGJhY2ssIE5VTEwpKQorICAgICAgICAgICAgdGFyZ2V0X3N0b3AgKG1pbnVz X29uZV9wdGlkKTsKKyAgICAgICAgICBub25fc3RvcCA9IDA7CisgICAgICAg IH0KKworICAgICAgcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNvcmRf YmVuZWF0aF90b19yZXN1bWVfb3BzLCBpbmZlcmlvcl9wdGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfc3RlcCwgc2lnKTsK KyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAocmVjb3JkX2RlYnVn ID4gMSkKKyAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9jZXNzIHJlY29y ZDogcmVjb3JkX3RocmVhZF93YWl0X2NhbGxiYWNrICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAibm90IHJlc3VtZSAlc1xuIiwgdGFyZ2V0X3Bp ZF90b19zdHIgKHRwLT5wdGlkKSk7CisgICAgfQorCisgIGlmIChyZWNvcmRf c3RlcCkKKyAgICBvcHRpb25zIHw9IFRBUkdFVF9XTk9IQU5HOworICByZXQg PSByZWNvcmRfdGhyZWFkX3dhaXQgKGluZmVyaW9yX3B0aWQsIGFyZ3MtPnN0 YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLCBO VUxMKTsKKyAgaWYgKGFyZ3MtPnN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJ VEtJTkRfSUdOT1JFKQorICAgIHsKKyAgICAgIGlmICghdHAtPnJlY29yZF9p c193YWl0aW5nKQorICAgICAgICB7CisgICAgICAgICAgdHAtPnJlY29yZF9p c193YWl0aW5nID0gMTsKKyAgICAgICAgICBpZiAocmVjb3JkX2RlYnVnID4g MSkKKyAgICAgICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2Nlc3Mg cmVjb3JkOiByZWNvcmRfdGhyZWFkX3dhaXRfY2FsbGJhY2sgIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhcnQgd2FpdGluZyAlcy5c biIsCisJCQkgICAgICAgIHRhcmdldF9waWRfdG9fc3RyICh0cC0+cHRpZCkp OworICAgICAgICB9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgaWYg KHRwLT5yZWNvcmRfaXNfd2FpdGluZykKKyAgICAgICAgeworICAgICAgICAg IHRwLT5yZWNvcmRfaXNfd2FpdGluZyA9IDA7CisgICAgICAgICAgaWYgKHJl Y29yZF9kZWJ1ZyA+IDEpCisgICAgICAgICAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX3RocmVhZF93YWl0X2NhbGxi YWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0b3Ag d2FpdGluZyAlcy5cbiIsCisJCQkgICAgICAgIHRhcmdldF9waWRfdG9fc3Ry ICh0cC0+cHRpZCkpOworICAgICAgICB9CisKKyAgICAgIGlmICghYXJncy0+ cmVhbF9pbmZlcmlvcl90cAorICAgICAgICAgICYmIHB0aWRfZXF1YWwgKGlu ZmVyaW9yX3B0aWQsIGFyZ3MtPnJlYWxfaW5mZXJpb3JfcHRpZCkpCisgICAg ICAgIGFyZ3MtPnJlYWxfaW5mZXJpb3JfdHAgPSB0cDsKKyAgICAgIGlmIChh cmdzLT5yZWFsX2luZmVyaW9yX3RwID09IHRwKQorICAgICAgICBhcmdzLT5y ZWFsX2luZmVyaW9yX3N0YXR1cyA9ICphcmdzLT5zdGF0dXM7CiAgICAgfQor CisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcmVjb3JkX2dldF9z aWcgPSAwOwpAQCAtOTk0LDcgKzEzMTgsMTMgQEAgcmVjb3JkX3NpZ19oYW5k bGVyIChpbnQgc2lnbm8pCiB9CiAKIHN0YXRpYyB2b2lkCi1yZWNvcmRfd2Fp dF9jbGVhbnVwcyAodm9pZCAqaWdub3JlKQorcmVjb3JkX3dhaXRfc2lnbmFs X2NsZWFudXBzICh2b2lkICppZ25vcmUpCit7CisgIHNpZ25hbCAoU0lHSU5U LCBoYW5kbGVfc2lnaW50KTsKK30KKworc3RhdGljIHZvaWQKK3JlY29yZF93 YWl0X3JlcGxheV9jbGVhbnVwcyAodm9pZCAqaWdub3JlKQogewogICBpZiAo ZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVSU0UpCiAgICAgewpA QCAtMTAwNSw2ICsxMzM1LDE2IEBAIHJlY29yZF93YWl0X2NsZWFudXBzICh2 b2lkICppZ25vcmUpCiAgICAgcmVjb3JkX2xpc3QgPSByZWNvcmRfbGlzdC0+ cHJldjsKIH0KIAorc3RhdGljIHZvaWQKK3JlY29yZF93YWl0X210aHJlYWRf Y2xlYW51cHMgKHZvaWQgKmlnbm9yZSkKK3sKKyAgLyogU3RvcCB0aGUgdGhy ZWFkcyB0aGF0IHN0aWxsIHJ1bm5pbmcuICAqLworICBpZiAoaXRlcmF0ZV9v dmVyX3RocmVhZHMgKHJlY29yZF90aHJlYWRfY2hlY2tfY2FsbGJhY2ssIE5V TEwpKQorICAgIHRhcmdldF9zdG9wIChtaW51c19vbmVfcHRpZCk7CisKKyAg bm9uX3N0b3AgPSAwOworfQorCiAvKiAidG9fd2FpdCIgdGFyZ2V0IG1ldGhv ZCBmb3IgcHJvY2VzcyByZWNvcmQgdGFyZ2V0LgogCiAgICBJbiByZWNvcmQg bW9kZSwgdGhlIHRhcmdldCBpcyBhbHdheXMgcnVuIGluIHNpbmdsZXN0ZXAg bW9kZQpAQCAtMTAyMyw3ICsxMzYzLDEwIEBAIHJlY29yZF93YWl0IChzdHJ1 Y3QgdGFyZ2V0X29wcyAqb3BzLAogCSAgICAgcHRpZF90IHB0aWQsIHN0cnVj dCB0YXJnZXRfd2FpdHN0YXR1cyAqc3RhdHVzLAogCSAgICAgaW50IG9wdGlv bnMpCiB7CisgIHB0aWRfdCByZXRfcHRpZDsKICAgc3RydWN0IGNsZWFudXAg KnNldF9jbGVhbnVwcyA9IHJlY29yZF9nZGJfb3BlcmF0aW9uX2Rpc2FibGVf c2V0ICgpOworICBzdHJ1Y3QgY2xlYW51cCAqc2lnbmFsX2NsZWFudXBzCisg ICAgICAgICAgICAgICAgICAgID0gbWFrZV9jbGVhbnVwIChyZWNvcmRfd2Fp dF9zaWduYWxfY2xlYW51cHMsIDApOwogCiAgIGlmIChyZWNvcmRfZGVidWcp CiAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtMTAz MSw4MSArMTM3NCwxMDMgQEAgcmVjb3JkX3dhaXQgKHN0cnVjdCB0YXJnZXRf b3BzICpvcHMsCiAJCQkicmVjb3JkX3Jlc3VtZV9zdGVwID0gJWRcbiIsCiAJ CQlyZWNvcmRfcmVzdW1lX3N0ZXApOwogCisgIHJlY29yZF9nZXRfc2lnID0g MDsKKyAgc2lnbmFsIChTSUdJTlQsIHJlY29yZF9zaWdfaGFuZGxlcik7CisK ICAgaWYgKCFSRUNPUkRfSVNfUkVQTEFZICYmIG9wcyAhPSAmcmVjb3JkX2Nv cmVfb3BzKQogICAgIHsKLSAgICAgIGlmIChyZWNvcmRfcmVzdW1lX3N0ZXAp Ci0JewotCSAgLyogVGhpcyBpcyBhIHNpbmdsZSBzdGVwLiAgKi8KLQkgIHJl dHVybiByZWNvcmRfYmVuZWF0aF90b193YWl0IChyZWNvcmRfYmVuZWF0aF90 b193YWl0X29wcywKLQkJCQkJIHB0aWQsIHN0YXR1cywgb3B0aW9ucyk7Ci0J fQotICAgICAgZWxzZQotCXsKLQkgIC8qIFRoaXMgaXMgbm90IGEgc2luZ2xl IHN0ZXAuICAqLwotCSAgcHRpZF90IHJldDsKLQkgIENPUkVfQUREUiB0bXBf cGM7Ci0KLQkgIHdoaWxlICgxKQotCSAgICB7Ci0JICAgICAgcmV0ID0gcmVj b3JkX2JlbmVhdGhfdG9fd2FpdCAocmVjb3JkX2JlbmVhdGhfdG9fd2FpdF9v cHMsCi0JCQkJCSAgICBwdGlkLCBzdGF0dXMsIG9wdGlvbnMpOworICAgICAg LyogUmVjb3JkIG1vZGUuICAqLworICAgICAgaWYgKHJlY29yZF90aHJlYWRf bnVtYmVyID4gMSAmJiAhcHRpZF9lcXVhbCAocmVjb3JkX3Jlc3VtZV9wdGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5mZXJpb3JfcHRpZCkpCisgICAgICAgIHsKKyAgICAgICAg ICAvKiBNdWx0aS10aHJlYWRzIHJlY29yZC4gICovCisgICAgICAgICAgc3Ry dWN0IHJlY29yZF90aHJlYWRfd2FpdF9hcmdzIGFyZ3M7CisgICAgICAgICAg c3RydWN0IHRocmVhZF9pbmZvICp0cDsKKyAgICAgICAgICBzdHJ1Y3QgY2xl YW51cCAqbXRocmVhZF9jbGVhbnVwcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgID0gbWFrZV9jbGVhbnVwIChyZWNvcmRfd2FpdF9tdGhyZWFkX2Ns ZWFudXBzLCAwKTsKIAotCSAgICAgIC8qIElzIHRoaXMgYSBTSUdUUkFQPyAg Ki8KLQkgICAgICBpZiAoc3RhdHVzLT5raW5kID09IFRBUkdFVF9XQUlUS0lO RF9TVE9QUEVECi0JCSAgJiYgc3RhdHVzLT52YWx1ZS5zaWcgPT0gVEFSR0VU X1NJR05BTF9UUkFQKQotCQl7Ci0JCSAgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZTsKKyAgICAgICAgICBhcmdzLnJlYWxfaW5mZXJpb3JfcHRpZCA9IGlu ZmVyaW9yX3B0aWQ7CisgICAgICAgICAgYXJncy5yZWFsX2luZmVyaW9yX3Rw ID0gTlVMTDsKKyAgICAgICAgICBhcmdzLnN0YXR1cyA9IHN0YXR1czsKKyAg ICAgICAgICBhcmdzLm9wdGlvbnMgPSBvcHRpb25zOworICAgICAgICAgIG5v bl9zdG9wID0gMTsKKyAgICAgICAgICBpdGVyYXRlX292ZXJfdGhyZWFkcyAo cmVjb3JkX3RocmVhZF9yZXNldF9jYWxsYmFjaywgTlVMTCk7CiAKLQkJICAv KiBZZXMgLS0gY2hlY2sgaWYgdGhlcmUgaXMgYSBicmVha3BvaW50LiAgKi8K LQkJICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKLQkJICByZWdjYWNoZSA9IGdl dF9jdXJyZW50X3JlZ2NhY2hlICgpOwotCQkgIHRtcF9wYyA9IHJlZ2NhY2hl X3JlYWRfcGMgKHJlZ2NhY2hlKTsKLQkJICBpZiAoYnJlYWtwb2ludF9pbnNl cnRlZF9oZXJlX3AgKGdldF9yZWdjYWNoZV9hc3BhY2UgKHJlZ2NhY2hlKSwK LQkJCQkJCSAgdG1wX3BjKSkKLQkJICAgIHsKLQkJICAgICAgLyogVGhlcmUg aXMgYSBicmVha3BvaW50LiAgR0RCIHdpbGwgd2FudCB0byBzdG9wLiAgKi8K LQkJICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2Fj aGVfYXJjaCAocmVnY2FjaGUpOwotCQkgICAgICBDT1JFX0FERFIgZGVjcl9w Y19hZnRlcl9icmVhawotCQkJPSBnZGJhcmNoX2RlY3JfcGNfYWZ0ZXJfYnJl YWsgKGdkYmFyY2gpOwotCQkgICAgICBpZiAoZGVjcl9wY19hZnRlcl9icmVh aykKLQkJCXJlZ2NhY2hlX3dyaXRlX3BjIChyZWdjYWNoZSwKLQkJCQkJICAg dG1wX3BjICsgZGVjcl9wY19hZnRlcl9icmVhayk7Ci0JCSAgICB9Ci0JCSAg ZWxzZQotCQkgICAgewotCQkgICAgICAvKiBUaGVyZSBpcyBub3QgYSBicmVh a3BvaW50LCBhbmQgZ2RiIGlzIG5vdAotCQkgICAgICAgICBzdGVwcGluZywg dGhlcmVmb3JlIGdkYiB3aWxsIG5vdCBzdG9wLgotCQkJIFRoZXJlZm9yZSB3 ZSB3aWxsIG5vdCByZXR1cm4gdG8gZ2RiLgotCQkgICAgICAgICBSZWNvcmQg dGhlIGluc24gYW5kIHJlc3VtZS4gICovCi0JCSAgICAgIGlmICghZG9fcmVj b3JkX21lc3NhZ2UgKHJlZ2NhY2hlLCBUQVJHRVRfU0lHTkFMXzApKQotICAJ CQl7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMtPmtpbmQg PSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBFRDsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cy0+dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF8w OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gIAkJCX0K KyAgICAgICAgICB3aGlsZSAoMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgdHAgPSBpdGVyYXRlX292ZXJfdGhyZWFkcyAocmVjb3JkX3RocmVh ZF93YWl0X2NhbGxiYWNrLCAmYXJncyk7CisgICAgICAgICAgICAgIGlmICh0 cCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgaWYg KHJlY29yZF9yZXN1bWVfc3RlcAorICAgICAgICAgICAgICAgICAgJiYgYXJn cy5yZWFsX2luZmVyaW9yX3RwCisgICAgICAgICAgICAgICAgICAmJiAhYXJn cy5yZWFsX2luZmVyaW9yX3RwLT5yZWNvcmRfaXNfd2FpdGluZykKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAqc3RhdHVzID0gYXJn cy5yZWFsX2luZmVyaW9yX3N0YXR1czsKKyAgICAgICAgICAgICAgICAgIGlu ZmVyaW9yX3B0aWQgPSBhcmdzLnJlYWxfaW5mZXJpb3JfcHRpZDsKKyAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIH0KIAotCQkgICAgICByZWNvcmRfYmVuZWF0aF90b19yZXN1bWUg KHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZV9vcHMsCi0JCQkJCQlwdGlkLCAx LAotCQkJCQkJVEFSR0VUX1NJR05BTF8wKTsKLQkJICAgICAgY29udGludWU7 Ci0JCSAgICB9Ci0JCX0KKyAgICAgICAgICBkb19jbGVhbnVwcyAobXRocmVh ZF9jbGVhbnVwcyk7CiAKLQkgICAgICAvKiBUaGUgaW5mZXJpb3IgaXMgYnJv a2VuIGJ5IGEgYnJlYWtwb2ludCBvciBhIHNpZ25hbC4gICovCi0JICAgICAg YnJlYWs7CisgICAgICAgICAgcmV0X3B0aWQgPSBpbmZlcmlvcl9wdGlkOwor ICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAv KiBTaW5nbGUtdGhyZWFkIHJlY29yZC4gICovCisgICAgICAgICAgaWYgKHJl Y29yZF9yZXN1bWVfc3RlcCkKKyAgICAgICAgICAgIHsKKwkgICAgICAvKiBU aGlzIGlzIGEgc2luZ2xlIHN0ZXAuICAqLworCSAgICAgIHJldF9wdGlkID0g cmVjb3JkX2JlbmVhdGhfdG9fd2FpdCAocmVjb3JkX2JlbmVhdGhfdG9fd2Fp dF9vcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHRpZCwgc3RhdHVzLCBvcHRpb25zKTsKIAkgICAgfQor ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg LyogVGhpcyBpcyBub3QgYSBzaW5nbGUgc3RlcC4gICovCisgICAgICAgICAg ICAgIHdoaWxlICgxKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgIGlmIChyZWNvcmRfdGhyZWFkX3dhaXQgKHB0aWQsIHN0YXR1cywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w dGlvbnMsICZyZXRfcHRpZCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr OwogCi0JICByZXR1cm4gcmV0OwotCX0KKyAgICAgICAgICAgICAgICAgIGlm IChyZWNvcmRfcmVzdW1lX3N0ZXApCisgICAgICAgICAgICAgICAgICAgIGJy ZWFrOworCisgICAgICAgICAgICAgICAgICAvKiBUaGVyZSBpcyBub3QgYSBi cmVha3BvaW50LCBhbmQgZ2RiIGlzIG5vdAorICAgICAgICAgICAgICAgICAg ICAgc3RlcHBpbmcsIHRoZXJlZm9yZSBnZGIgd2lsbCBub3Qgc3RvcC4KKyAg ICAgICAgICAgICAgICAgICAgIFRoZXJlZm9yZSB3ZSB3aWxsIG5vdCByZXR1 cm4gdG8gZ2RiLgorICAgICAgICAgICAgICAgICAgICAgUmVjb3JkIHRoZSBp bnNuIGFuZCByZXN1bWUuICAqLworCQkgIGlmICghZG9fcmVjb3JkX21lc3Nh Z2UgKFRBUkdFVF9TSUdOQUxfMCkpCisgICAgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgICByZXRfcHRpZCA9IGluZmVyaW9yX3B0 aWQ7CisgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLT5raW5kID0gVEFS R0VUX1dBSVRLSU5EX1NUT1BQRUQ7CisgICAgICAgICAgICAgICAgICAgICAg c3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJHRVRfU0lHTkFMXzA7CisgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K KworCQkgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVh dGhfdG9fcmVzdW1lX29wcywKKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlY29yZF9yZXN1bWVfcHRpZCwgcmVjb3JkX3N0ZXAsCisJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUQVJHRVRfU0lHTkFMXzApOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAg IH0KICAgZWxzZQogICAgIHsKLSAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsKLSAgICAgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2Nh Y2hlKTsKKyAgICAgIC8qIFJlcGxheSBtb2RlLiAgKi8KKyAgICAgIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGU7CisgICAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaDsKICAgICAgIGludCBjb250aW51ZV9mbGFnID0gMTsKICAgICAg IGludCBmaXJzdF9yZWNvcmRfZW5kID0gMTsKLSAgICAgIHN0cnVjdCBjbGVh bnVwICpvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHJlY29yZF93YWl0 X2NsZWFudXBzLCAwKTsKKyAgICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xl YW51cHMgPQorICAgICAgICBtYWtlX2NsZWFudXAgKHJlY29yZF93YWl0X3Jl cGxheV9jbGVhbnVwcywgMCk7CiAgICAgICBDT1JFX0FERFIgdG1wX3BjOwor ICAgICAgcHRpZF90IG9sZF9pbmZlcmlvcl9wdGlkID0gaW5mZXJpb3JfcHRp ZDsKKworICAgICAgaWYgKCFwdGlkX2VxdWFsIChyZWNvcmRfcHJldl9wdGlk LCBudWxsX3B0aWQpKQorICAgICAgICBpbmZlcmlvcl9wdGlkID0gcmVjb3Jk X3ByZXZfcHRpZDsKKyAgICAgIHJlZ2NhY2hlID0gZ2V0X2N1cnJlbnRfcmVn Y2FjaGUgKCk7CisgICAgICBnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2gg KHJlZ2NhY2hlKTsKIAogICAgICAgc3RhdHVzLT5raW5kID0gVEFSR0VUX1dB SVRLSU5EX1NUT1BQRUQ7CiAKQEAgLTExMjksOCArMTQ5NCw2IEBAIHJlY29y ZF93YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAogCSAgICB9CiAJfQog Ci0gICAgICByZWNvcmRfZ2V0X3NpZyA9IDA7Ci0gICAgICBzaWduYWwgKFNJ R0lOVCwgcmVjb3JkX3NpZ19oYW5kbGVyKTsKICAgICAgIC8qIElmIEdEQiBp cyBpbiB0ZXJtaW5hbF9pbmZlcmlvciBtb2RlLCBpdCB3aWxsIG5vdCBnZXQg dGhlIHNpZ25hbC4KICAgICAgICAgIEFuZCBpbiBHREIgcmVwbGF5IG1vZGUs IEdEQiBkb2Vzbid0IG5lZWQgdG8gYmUgaW4gdGVybWluYWxfaW5mZXJpb3IK ICAgICAgICAgIG1vZGUsIGJlY2F1c2UgaW5mZXJpb3Igd2lsbCBub3QgZXhl Y3V0ZWQuCkBAIC0xMTYxLDcgKzE1MjQsNyBAQCByZWNvcmRfd2FpdCAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywKIAkgICAgICBicmVhazsKIAkgICAgfQog Ci0gICAgICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAocmVnY2FjaGUsIGdkYmFy Y2gsIHJlY29yZF9saXN0KTsKKyAgICAgICAgICByZWNvcmRfZXhlY19pbnNu ICgmcmVnY2FjaGUsICZnZGJhcmNoLCByZWNvcmRfbGlzdCk7CiAKIAkgIGlm IChyZWNvcmRfbGlzdC0+dHlwZSA9PSByZWNvcmRfZW5kKQogCSAgICB7CkBA IC0xMTg0LDEyICsxNTQ3LDEzIEBAIHJlY29yZF93YWl0IChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzLAogCQkgICAgIEluIEVYRUNfRk9SV0FSRCBtb2RlLCB0 aGlzIGlzIHRoZSByZWNvcmRfZW5kIG9mIGN1cnJlbnQKIAkJICAgICBpbnN0 cnVjdGlvbi4gICovCiAJCSAgLyogc3RlcCAqLwotCQkgIGlmIChyZWNvcmRf cmVzdW1lX3N0ZXApCisJCSAgaWYgKHJlY29yZF9yZXN1bWVfc3RlcAorICAg ICAgICAgICAgICAgICAgICAgICYmIHB0aWRfZXF1YWwgKGluZmVyaW9yX3B0 aWQsIG9sZF9pbmZlcmlvcl9wdGlkKSkKIAkJICAgIHsKIAkJICAgICAgaWYg KHJlY29yZF9kZWJ1ZyA+IDEpCiAJCQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCiAJCQkJCSAgICAiUHJvY2VzcyByZWNvcmQ6IHN0ZXAuXG4i KTsKLQkJICAgICAgY29udGludWVfZmxhZyA9IDA7CisgICAgICAgICAgICAg ICAgICAgICAgY29udGludWVfZmxhZyA9IDA7CiAJCSAgICB9CiAKIAkJICAv KiBjaGVjayBicmVha3BvaW50ICovCkBAIC0xMjMzLDIyICsxNTk3LDIzIEBA IHJlY29yZF93YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAogCX0KICAg ICAgIHdoaWxlIChjb250aW51ZV9mbGFnKTsKIAotICAgICAgc2lnbmFsIChT SUdJTlQsIGhhbmRsZV9zaWdpbnQpOwotCiByZXBsYXlfb3V0OgotICAgICAg aWYgKHJlY29yZF9nZXRfc2lnKQotCXN0YXR1cy0+dmFsdWUuc2lnID0gVEFS R0VUX1NJR05BTF9JTlQ7Ci0gICAgICBlbHNlIGlmIChyZWNvcmRfbGlzdC0+ dS5lbmQuc2lndmFsICE9IFRBUkdFVF9TSUdOQUxfMCkKKyAgICAgIGlmIChy ZWNvcmRfbGlzdC0+dS5lbmQuc2lndmFsICE9IFRBUkdFVF9TSUdOQUxfMCkK IAkvKiBGSVhNRTogYmV0dGVyIHdheSB0byBjaGVjayAqLwogCXN0YXR1cy0+ dmFsdWUuc2lnID0gcmVjb3JkX2xpc3QtPnUuZW5kLnNpZ3ZhbDsKICAgICAg IGVsc2UKIAlzdGF0dXMtPnZhbHVlLnNpZyA9IFRBUkdFVF9TSUdOQUxfVFJB UDsKKyAgICAgIHJldF9wdGlkID0gaW5mZXJpb3JfcHRpZDsKIAogICAgICAg ZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKICAgICB9CiAKKyAg aWYgKHJlY29yZF9nZXRfc2lnKQorICAgIHN0YXR1cy0+dmFsdWUuc2lnID0g VEFSR0VUX1NJR05BTF9JTlQ7CisKKyAgZG9fY2xlYW51cHMgKHNpZ25hbF9j bGVhbnVwcyk7CiAgIGRvX2NsZWFudXBzIChzZXRfY2xlYW51cHMpOwotICBy ZXR1cm4gaW5mZXJpb3JfcHRpZDsKKyAgcmV0dXJuIHJldF9wdGlkOwogfQog CiAvKiAidG9fZGlzY29ubmVjdCIgbWV0aG9kIGZvciBwcm9jZXNzIHJlY29y ZCB0YXJnZXQuICAqLwpAQCAtMTMxMSw2ICsxNjc2LDEyIEBAIHJlY29yZF9y ZWdpc3RlcnNfY2hhbmdlIChzdHJ1Y3QgcmVnY2FjaGUKICAgcmVjb3JkX2Fy Y2hfbGlzdF9oZWFkID0gTlVMTDsKICAgcmVjb3JkX2FyY2hfbGlzdF90YWls ID0gTlVMTDsKIAorICBpZiAoIXB0aWRfZXF1YWwgKHJlY29yZF9wcmV2X3B0 aWQsIGluZmVyaW9yX3B0aWQpKQorICAgIHsKKyAgICAgIHJlY29yZF9hcmNo X2xpc3RfYWRkX3B0aWQgKCZyZWNvcmRfcHJldl9wdGlkKTsKKyAgICAgIHJl Y29yZF9wcmV2X3B0aWQgPSBpbmZlcmlvcl9wdGlkOworICAgIH0KKwogICBp ZiAocmVnbnVtIDwgMCkKICAgICB7CiAgICAgICBpbnQgaTsKQEAgLTE0MzMs NiArMTgwNCwxMSBAQCByZWNvcmRfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFy Z2V0X29wcyAqCiAgICAgICAvKiBSZWNvcmQgcmVnaXN0ZXJzIGNoYW5nZSB0 byBsaXN0IGFzIGFuIGluc3RydWN0aW9uLiAgKi8KICAgICAgIHJlY29yZF9h cmNoX2xpc3RfaGVhZCA9IE5VTEw7CiAgICAgICByZWNvcmRfYXJjaF9saXN0 X3RhaWwgPSBOVUxMOworICAgICAgaWYgKCFwdGlkX2VxdWFsIChyZWNvcmRf cHJldl9wdGlkLCBpbmZlcmlvcl9wdGlkKSkKKyAgICAgICAgeworICAgICAg ICAgIHJlY29yZF9hcmNoX2xpc3RfYWRkX3B0aWQgKCZyZWNvcmRfcHJldl9w dGlkKTsKKyAgICAgICAgICByZWNvcmRfcHJldl9wdGlkID0gaW5mZXJpb3Jf cHRpZDsKKyAgICAgICAgfQogICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAob2Zmc2V0LCBsZW4pKQogCXsKIAkgIHJlY29yZF9saXN0X3Jl bGVhc2UgKHJlY29yZF9hcmNoX2xpc3RfdGFpbCk7CkBAIC0yMjQwLDcgKzI2 MTYsNyBAQCBjbWRfcmVjb3JkX3NhdmUgKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0CiAgICAgICBpZiAocmVjb3JkX2xpc3QgPT0gJnJlY29yZF9maXJzdCkK ICAgICAgICAgYnJlYWs7CiAKLSAgICAgIHJlY29yZF9leGVjX2luc24gKHJl Z2NhY2hlLCBnZGJhcmNoLCByZWNvcmRfbGlzdCk7CisgICAgICByZWNvcmRf ZXhlY19pbnNuICgmcmVnY2FjaGUsICZnZGJhcmNoLCByZWNvcmRfbGlzdCk7 CiAKICAgICAgIGlmIChyZWNvcmRfbGlzdC0+cHJldikKICAgICAgICAgcmVj b3JkX2xpc3QgPSByZWNvcmRfbGlzdC0+cHJldjsKQEAgLTIzNjcsNyArMjc0 Myw3IEBAIGNtZF9yZWNvcmRfc2F2ZSAoY2hhciAqYXJncywgaW50IGZyb21f dHQKICAgICAgICAgfQogCiAgICAgICAvKiBFeGVjdXRlIGVudHJ5LiAgKi8K LSAgICAgIHJlY29yZF9leGVjX2luc24gKHJlZ2NhY2hlLCBnZGJhcmNoLCBy ZWNvcmRfbGlzdCk7CisgICAgICByZWNvcmRfZXhlY19pbnNuICgmcmVnY2Fj aGUsICZnZGJhcmNoLCByZWNvcmRfbGlzdCk7CiAKICAgICAgIGlmIChyZWNv cmRfbGlzdC0+bmV4dCkKICAgICAgICAgcmVjb3JkX2xpc3QgPSByZWNvcmRf bGlzdC0+bmV4dDsKQEAgLTIzODIsNyArMjc1OCw3IEBAIGNtZF9yZWNvcmRf c2F2ZSAoY2hhciAqYXJncywgaW50IGZyb21fdHQKICAgICAgIGlmIChyZWNv cmRfbGlzdCA9PSBjdXJfcmVjb3JkX2xpc3QpCiAgICAgICAgIGJyZWFrOwog Ci0gICAgICByZWNvcmRfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwg cmVjb3JkX2xpc3QpOworICAgICAgcmVjb3JkX2V4ZWNfaW5zbiAoJnJlZ2Nh Y2hlLCAmZ2RiYXJjaCwgcmVjb3JkX2xpc3QpOwogCiAgICAgICBpZiAocmVj b3JkX2xpc3QtPnByZXYpCiAgICAgICAgIHJlY29yZF9saXN0ID0gcmVjb3Jk X2xpc3QtPnByZXY7Ci0tLSBhL3JlY29yZC5oCisrKyBiL3JlY29yZC5oCkBA IC0yMyw2ICsyMyw3IEBACiAjZGVmaW5lIFJFQ09SRF9JU19VU0VECShjdXJy ZW50X3RhcmdldC50b19zdHJhdHVtID09IHJlY29yZF9zdHJhdHVtKQogCiBl eHRlcm4gaW50IHJlY29yZF9kZWJ1ZzsKK2V4dGVybiBpbnQgcmVjb3JkX3N0 ZXA7CiAKIGV4dGVybiBpbnQgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgbnVtKTsKIGV4dGVybiBp bnQgcmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFIgYWRkciwg aW50IGxlbik7Cg== --001636e0b601da92fd0477661885--