From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8446 invoked by alias); 20 Jan 2011 23:28:26 -0000 Received: (qmail 8415 invoked by uid 22791); 20 Jan 2011 23:28:24 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 20 Jan 2011 23:28:14 +0000 Received: from wpaz13.hot.corp.google.com (wpaz13.hot.corp.google.com [172.24.198.77]) by smtp-out.google.com with ESMTP id p0KNSB9O012437 for ; Thu, 20 Jan 2011 15:28:11 -0800 Received: from qwi2 (qwi2.prod.google.com [10.241.195.2]) by wpaz13.hot.corp.google.com with ESMTP id p0KNS9un025614 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for ; Thu, 20 Jan 2011 15:28:10 -0800 Received: by qwi2 with SMTP id 2so1143698qwi.20 for ; Thu, 20 Jan 2011 15:28:09 -0800 (PST) Received: by 10.224.80.212 with SMTP id u20mr2385470qak.128.1295566089576; Thu, 20 Jan 2011 15:28:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.29.204 with HTTP; Thu, 20 Jan 2011 15:27:39 -0800 (PST) In-Reply-To: References: <20110119204315.0A235190C48@elbrus2.mtv.corp.google.com> <201101191409.17445.pedro@codesourcery.com> From: Paul Pluzhnikov Date: Fri, 21 Jan 2011 01:11:00 -0000 Message-ID: Subject: Re: [patch] Fix leak of bp_jit_event breakpoints To: Pedro Alves Cc: gdb-patches@sourceware.org, Yao Qi Content-Type: multipart/mixed; boundary=0015175cb1108d62a2049a4f7c93 X-System-Of-Record: true 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: 2011-01/txt/msg00430.txt.bz2 --0015175cb1108d62a2049a4f7c93 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1103 On Wed, Jan 19, 2011 at 9:57 PM, Paul Pluzhnikov wrote: > Would recording the current jit_event breakpoint in inferior (via > register_inferior_data_with_cleanup ()) be a good solution? That appears to work reasonably well. It fixes both the gdbserver failure in jit.exp, and also as yet undiscovered problem: the old static/global jit_descriptor_addr couldn't possibly work for more than one inferior. Thanks, -- Paul Pluzhnikov 2011-01-20 Paul Pluzhnikov * jit.c (jit_descriptor_addr): Delete. (registering_code): Delete. (clear_int): Delete. (jit_inferior_data): New variable. (struct jit_inferior_data): New type. (get_jit_inferior_data): New function. (jit_inferior_data_cleanup): New function. (jit_read_descriptor): Adjust. (jit_register_code): Adjust. (jit_breakpoint_re_set_internal): New function; move code here ... (jit_inferior_init): ... from here. (jit_breakpoint_re_set): Adjust. (jit_inferior_exit_hook): Adjust. (jit_event_handler): Adjust. (_initialize_jit): Adjust. --0015175cb1108d62a2049a4f7c93 Content-Type: text/plain; charset=US-ASCII; name="gdb-jit-leak-20110120.txt" Content-Disposition: attachment; filename="gdb-jit-leak-20110120.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gj6ais1i0 Content-length: 13534 SW5kZXg6IGppdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy9nZGIvaml0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMTAKZGlmZiAtdSAtcCAtcCAtdSAtcjEuMTAgaml0LmMKLS0tIGppdC5j CTkgSmFuIDIwMTEgMDM6MDg6NTcgLTAwMDAJMS4xMAorKysgaml0LmMJMjAg SmFuIDIwMTEgMjM6MDM6MjAgLTAwMDAKQEAgLTI0LDYgKzI0LDcgQEAKICNp bmNsdWRlICJjb21tYW5kLmgiCiAjaW5jbHVkZSAiZ2RiY21kLmgiCiAjaW5j bHVkZSAiZ2RiY29yZS5oIgorI2luY2x1ZGUgImluZmVyaW9yLmgiCiAjaW5j bHVkZSAib2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2lu Y2x1ZGUgInN5bWZpbGUuaCIKQEAgLTM3LDE4ICszOCw3IEBAIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBqaXRfYnJlYWtfbmFtZSAKIAogc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IGppdF9kZXNjcmlwdG9yX25hbWUgPSAiX19qaXRf ZGVidWdfZGVzY3JpcHRvciI7CiAKLS8qIFRoaXMgaXMgdGhlIGFkZHJlc3Mg b2YgdGhlIEpJVCBkZXNjcmlwdG9yIGluIHRoZSBpbmZlcmlvci4gICovCi0K LXN0YXRpYyBDT1JFX0FERFIgaml0X2Rlc2NyaXB0b3JfYWRkciA9IDA7Ci0K LS8qIFRoaXMgaXMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB3ZSdy ZSBjdXJyZW50bHkgcmVnaXN0ZXJpbmcgY29kZS4gIFRoaXMKLSAgIGlzIHVz ZWQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBjb2Rl LiAgV2Ugd2FudCB0byBjaGVjayBmb3IKLSAgIG5ldyBKSVRlZCBldmVyeSB0 aW1lIGEgbmV3IG9iamVjdCBmaWxlIGlzIGxvYWRlZCwgYnV0IHdlIHdhbnQg dG8gYXZvaWQKLSAgIGNoZWNraW5nIGZvciBuZXcgY29kZSB3aGlsZSB3ZSdy ZSByZWdpc3RlcmluZyBvYmplY3QgZmlsZXMgZm9yIEpJVGVkIGNvZGUuCi0g ICBUaGVyZWZvcmUsIHdlIGZsaXAgdGhpcyB2YXJpYWJsZSB0byAxIGJlZm9y ZSByZWdpc3RlcmluZyBuZXcgb2JqZWN0IGZpbGVzLAotICAgYW5kIHNldCBp dCB0byAwIGJlZm9yZSByZXR1cm5pbmcuICAqLwotCi1zdGF0aWMgaW50IHJl Z2lzdGVyaW5nX2NvZGUgPSAwOworc3RhdGljIGNvbnN0IHN0cnVjdCBpbmZl cmlvcl9kYXRhICpqaXRfaW5mZXJpb3JfZGF0YSA9IE5VTEw7CiAKIC8qIE5v bi16ZXJvIGlmIHdlIHdhbnQgdG8gc2VlIHRyYWNlIG9mIGppdCBsZXZlbCBz dHVmZi4gICovCiAKQEAgLTYxLDE0ICs1MSw2IEBAIHNob3dfaml0X2RlYnVn IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW4KICAgZnByaW50Zl9maWx0ZXJl ZCAoZmlsZSwgXygiSklUIGRlYnVnZ2luZyBpcyAlcy5cbiIpLCB2YWx1ZSk7 CiB9CiAKLS8qIEhlbHBlciBjbGVhbnVwIGZ1bmN0aW9uIHRvIGNsZWFyIGFu IGludGVnZXIgZmxhZyBsaWtlIHRoZSBvbmUgYWJvdmUuICAqLwotCi1zdGF0 aWMgdm9pZAotY2xlYXJfaW50ICh2b2lkICppbnRfYWRkcikKLXsKLSAgKigo aW50ICopIGludF9hZGRyKSA9IDA7Ci19Ci0KIHN0cnVjdCB0YXJnZXRfYnVm ZmVyCiB7CiAgIENPUkVfQUREUiBiYXNlOwpAQCAtMTQ2LDEyICsxMjgsNDIg QEAgYmZkX29wZW5fZnJvbV90YXJnZXRfbWVtb3J5IChDT1JFX0FERFIgYQog ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1fYmZkX2lvdmVjX3N0YXQp OwogfQogCitzdHJ1Y3Qgaml0X2luZmVyaW9yX2RhdGEgeworICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYnJlYWtwb2ludDsKKyAgQ09SRV9BRERSIGJyZWFrcG9p bnRfYWRkcjsKKyAgQ09SRV9BRERSIGRlc2NyaXB0b3JfYWRkcjsKK307CisK K3N0YXRpYyBzdHJ1Y3Qgaml0X2luZmVyaW9yX2RhdGEgKgorZ2V0X2ppdF9p bmZlcmlvcl9kYXRhICh2b2lkKQoreworICBzdHJ1Y3QgaW5mZXJpb3IgKmlu ZjsKKyAgc3RydWN0IGppdF9pbmZlcmlvcl9kYXRhICppbmZfZGF0YTsKKwor ICBpbmYgPSBjdXJyZW50X2luZmVyaW9yICgpOworICBpbmZfZGF0YSA9IGlu ZmVyaW9yX2RhdGEgKGluZiwgaml0X2luZmVyaW9yX2RhdGEpOworICBpZiAo aW5mX2RhdGEgPT0gTlVMTCkKKyAgICB7CisgICAgICBpbmZfZGF0YSA9IFha QUxMT0MgKHN0cnVjdCBqaXRfaW5mZXJpb3JfZGF0YSk7CisgICAgICBzZXRf aW5mZXJpb3JfZGF0YSAoaW5mLCBqaXRfaW5mZXJpb3JfZGF0YSwgaW5mX2Rh dGEpOworICAgIH0KKworICByZXR1cm4gaW5mX2RhdGE7Cit9CisKK3N0YXRp YyB2b2lkCitqaXRfaW5mZXJpb3JfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgaW5m ZXJpb3IgKmluZiwgdm9pZCAqYXJnKQoreworICB4ZnJlZSAoYXJnKTsKK30K KwogLyogSGVscGVyIGZ1bmN0aW9uIGZvciByZWFkaW5nIHRoZSBnbG9iYWwg SklUIGRlc2NyaXB0b3IgZnJvbSByZW1vdGUKICAgIG1lbW9yeS4gICovCiAK IHN0YXRpYyB2b2lkCiBqaXRfcmVhZF9kZXNjcmlwdG9yIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKLQkJICAgICBzdHJ1Y3Qgaml0X2Rlc2NyaXB0b3Ig KmRlc2NyaXB0b3IpCisJCSAgICAgc3RydWN0IGppdF9kZXNjcmlwdG9yICpk ZXNjcmlwdG9yLAorCQkgICAgIENPUkVfQUREUiBkZXNjcmlwdG9yX2FkZHIp CiB7CiAgIGludCBlcnI7CiAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZTsKQEAg LTE2Nyw3ICsxNzksNyBAQCBqaXRfcmVhZF9kZXNjcmlwdG9yIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiCiAgIGRlc2NfYnVmID0gYWxsb2NhIChkZXNjX3NpemUp OwogCiAgIC8qIFJlYWQgdGhlIGRlc2NyaXB0b3IuICAqLwotICBlcnIgPSB0 YXJnZXRfcmVhZF9tZW1vcnkgKGppdF9kZXNjcmlwdG9yX2FkZHIsIGRlc2Nf YnVmLCBkZXNjX3NpemUpOworICBlcnIgPSB0YXJnZXRfcmVhZF9tZW1vcnkg KGRlc2NyaXB0b3JfYWRkciwgZGVzY19idWYsIGRlc2Nfc2l6ZSk7CiAgIGlm IChlcnIpCiAgICAgZXJyb3IgKF8oIlVuYWJsZSB0byByZWFkIEpJVCBkZXNj cmlwdG9yIGZyb20gcmVtb3RlIG1lbW9yeSEiKSk7CiAKQEAgLTI3OCwxNyAr MjkwLDkgQEAgSklUZWQgc3ltYm9sIGZpbGUgaXMgbm90IGFuIG9iamVjdCBm aWxlLAogICAgICAgICArK2k7CiAgICAgICB9CiAKLSAgLyogUmFpc2UgdGhp cyBmbGFnIHdoaWxlIHdlIHJlZ2lzdGVyIGNvZGUgc28gd2Ugd29uJ3QgdHJp Z2dlciBhbnkKLSAgICAgcmUtcmVnaXN0cmF0aW9uLiAgKi8KLSAgcmVnaXN0 ZXJpbmdfY29kZSA9IDE7Ci0gIG15X2NsZWFudXBzID0gbWFrZV9jbGVhbnVw IChjbGVhcl9pbnQsICZyZWdpc3RlcmluZ19jb2RlKTsKLQogICAvKiBUaGlz IGNhbGwgdGFrZXMgb3duZXJzaGlwIG9mIHNhaS4gICovCiAgIG9iamZpbGUg PSBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKG5iZmQsIDAsIHNhaSwgT0JK Rl9TSEFSRUQpOwogCi0gIC8qIENsZWFyIHRoZSByZWdpc3RlcmluZ19jb2Rl IGZsYWcuICAqLwotICBkb19jbGVhbnVwcyAobXlfY2xlYW51cHMpOwotCiAg IC8qIFJlbWVtYmVyIGEgbWFwcGluZyBmcm9tIGVudHJ5X2FkZHIgdG8gb2Jq ZmlsZS4gICovCiAgIGVudHJ5X2FkZHJfcHRyID0geG1hbGxvYyAoc2l6ZW9m IChDT1JFX0FERFIpKTsKICAgKmVudHJ5X2FkZHJfcHRyID0gZW50cnlfYWRk cjsKQEAgLTMyMyw2OCArMzI3LDk5IEBAIGppdF9maW5kX29iamZfd2l0aF9l bnRyeV9hZGRyIChDT1JFX0FERFIKICAgcmV0dXJuIE5VTEw7CiB9CiAKLS8q IChSZS0pSW5pdGlhbGl6ZSB0aGUgaml0IGJyZWFrcG9pbnQgaGFuZGxlciwg YW5kIHJlZ2lzdGVyIGFueSBhbHJlYWR5Ci0gICBjcmVhdGVkIHRyYW5zbGF0 aW9ucy4gICovCisvKiAoUmUtKUluaXRpYWxpemUgdGhlIGppdCBicmVha3Bv aW50IGlmIG5lY2Vzc2FyeS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuICAq LworCitzdGF0aWMgaW50CitqaXRfYnJlYWtwb2ludF9yZV9zZXRfaW50ZXJu YWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorCQkJCXN0cnVjdCBqaXRf aW5mZXJpb3JfZGF0YSAqaW5mX2RhdGEpCit7CisgIGlmIChpbmZfZGF0YS0+ YnJlYWtwb2ludF9hZGRyICE9IDAgJiYgaW5mX2RhdGEtPmJyZWFrcG9pbnQg IT0gTlVMTCkKKyAgICAvKiBCcmVha3BvaW50IGFscmVhZHkgc2V0LiAgKi8K KyAgICByZXR1cm4gMDsKKworICBpZiAoaW5mX2RhdGEtPmJyZWFrcG9pbnRf YWRkciA9PSAwKQorICAgIHsKKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqcmVnX3N5bWJvbDsKKworICAgICAgLyogTG9va3VwIHRoZSByZWdpc3Ry YXRpb24gc3ltYm9sLiAgSWYgaXQgaXMgbWlzc2luZywgdGhlbiB3ZSBhc3N1 bWUKKwkgd2UgYXJlIG5vdCBhdHRhY2hlZCB0byBhIEpJVC4gICovCisgICAg ICByZWdfc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChqaXRfYnJl YWtfbmFtZSwgTlVMTCwgTlVMTCk7CisgICAgICBpZiAocmVnX3N5bWJvbCA9 PSBOVUxMKQorCXJldHVybiAxOworICAgICAgaW5mX2RhdGEtPmJyZWFrcG9p bnRfYWRkciA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChyZWdfc3ltYm9sKTsK KyAgICAgIGlmIChpbmZfZGF0YS0+YnJlYWtwb2ludF9hZGRyID09IDApCisJ cmV0dXJuIDI7CisgICAgfQorCisgIGlmIChqaXRfZGVidWcpCisgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJImppdF9icmVha3Bv aW50X3JlX3NldF9pbnRlcm5hbCwgIgorCQkJImJyZWFrcG9pbnRfYWRkciA9 ICVzXG4iLAorCQkJcGFkZHJlc3MgKGdkYmFyY2gsIGluZl9kYXRhLT5icmVh a3BvaW50X2FkZHIpKTsKKworICBpZiAoaW5mX2RhdGEtPmJyZWFrcG9pbnQg IT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAoaW5mX2RhdGEtPmJyZWFrcG9p bnRfYWRkciA9PSBpbmZfZGF0YS0+YnJlYWtwb2ludC0+bG9jLT5hZGRyZXNz KQorCS8qIFNhbWUgbG9jYXRpb24gYXMgb24gbGFzdCBydW4uICBFeGlzdGlu ZyBicmVha3BvaW50IGlzIGdvb2QuICAqLworCXJldHVybiAwOworCisgICAg ICAvKiBMb2NhdGlvbiBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHJ1bi4gICov CisgICAgICBkZWxldGVfYnJlYWtwb2ludCAoaW5mX2RhdGEtPmJyZWFrcG9p bnQpOworICAgIH0KKworICAvKiBQdXQgYSBicmVha3BvaW50IGluIHRoZSBy ZWdpc3RyYXRpb24gc3ltYm9sLiAgKi8KKyAgaW5mX2RhdGEtPmJyZWFrcG9p bnQgPQorICAgIGNyZWF0ZV9qaXRfZXZlbnRfYnJlYWtwb2ludCAoZ2RiYXJj aCwgaW5mX2RhdGEtPmJyZWFrcG9pbnRfYWRkcik7CisKKyAgcmV0dXJuIDA7 Cit9CisKKy8qIFJlZ2lzdGVyIGFueSBhbHJlYWR5IGNyZWF0ZWQgdHJhbnNs YXRpb25zLiAgKi8KIAogc3RhdGljIHZvaWQKIGppdF9pbmZlcmlvcl9pbml0 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKIHsKLSAgc3RydWN0IG1pbmlt YWxfc3ltYm9sICpyZWdfc3ltYm9sOwotICBzdHJ1Y3QgbWluaW1hbF9zeW1i b2wgKmRlc2Nfc3ltYm9sOwotICBDT1JFX0FERFIgcmVnX2FkZHI7CiAgIHN0 cnVjdCBqaXRfZGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICBzdHJ1Y3Qgaml0 X2NvZGVfZW50cnkgY3VyX2VudHJ5OworICBzdHJ1Y3Qgaml0X2luZmVyaW9y X2RhdGEgKmluZl9kYXRhOwogICBDT1JFX0FERFIgY3VyX2VudHJ5X2FkZHI7 CiAKICAgaWYgKGppdF9kZWJ1ZykKLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCi0JCQkiaml0X2luZmVyaW9yX2luaXQsIHJlZ2lzdGVy aW5nX2NvZGUgPSAlZFxuIiwKLQkJCXJlZ2lzdGVyaW5nX2NvZGUpOwotCi0g IC8qIFdoZW4gd2UgcmVnaXN0ZXIgY29kZSwgR0RCIHJlc2V0cyBpdHMgYnJl YWtwb2ludHMgaW4gY2FzZSBzeW1ib2xzIGhhdmUKLSAgICAgY2hhbmdlZC4g IFRoYXQgaW4gdHVybiBjYWxscyB0aGlzIGhhbmRsZXIsIHdoaWNoIG1ha2Vz IHVzIGxvb2sgZm9yIG5ldwotICAgICBjb2RlIGFnYWluLiAgVG8gYXZvaWQg YmVpbmcgcmUtZW50ZXJlZCwgd2UgY2hlY2sgdGhpcyBmbGFnLiAgKi8KLSAg aWYgKHJlZ2lzdGVyaW5nX2NvZGUpCi0gICAgcmV0dXJuOworICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImppdF9pbmZlcmlvcl9pbml0 XG4iKTsKIAotICAvKiBMb29rdXAgdGhlIHJlZ2lzdHJhdGlvbiBzeW1ib2wu ICBJZiBpdCBpcyBtaXNzaW5nLCB0aGVuIHdlIGFzc3VtZSB3ZSBhcmUKLSAg ICAgbm90IGF0dGFjaGVkIHRvIGEgSklULiAgKi8KLSAgcmVnX3N5bWJvbCA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoaml0X2JyZWFrX25hbWUsIE5VTEws IE5VTEwpOwotICBpZiAocmVnX3N5bWJvbCA9PSBOVUxMKQotICAgIHJldHVy bjsKLSAgcmVnX2FkZHIgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAocmVnX3N5 bWJvbCk7Ci0gIGlmIChyZWdfYWRkciA9PSAwKQorICBpbmZfZGF0YSA9IGdl dF9qaXRfaW5mZXJpb3JfZGF0YSAoKTsKKyAgaWYgKGppdF9icmVha3BvaW50 X3JlX3NldF9pbnRlcm5hbCAoZ2RiYXJjaCwgaW5mX2RhdGEpICE9IDApCiAg ICAgcmV0dXJuOwogCi0gIGlmIChqaXRfZGVidWcpCi0gICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaml0X2luZmVyaW9yX2luaXQsIHJl Z19hZGRyID0gJXNcbiIsCi0JCQlwYWRkcmVzcyAoZ2RiYXJjaCwgcmVnX2Fk ZHIpKTsKKyAgaWYgKGluZl9kYXRhLT5kZXNjcmlwdG9yX2FkZHIgPT0gMCkK KyAgICB7CisgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmRlc2Nfc3lt Ym9sOwogCi0gIC8qIExvb2t1cCB0aGUgZGVzY3JpcHRvciBzeW1ib2wgYW5k IGNhY2hlIHRoZSBhZGRyLiAgSWYgaXQgaXMgbWlzc2luZywgd2UKLSAgICAg YXNzdW1lIHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBKSVQgYW5kIHJldHVy biBlYXJseS4gICovCi0gIGRlc2Nfc3ltYm9sID0gbG9va3VwX21pbmltYWxf c3ltYm9sIChqaXRfZGVzY3JpcHRvcl9uYW1lLCBOVUxMLCBOVUxMKTsKLSAg aWYgKGRlc2Nfc3ltYm9sID09IE5VTEwpCi0gICAgcmV0dXJuOwotICBqaXRf ZGVzY3JpcHRvcl9hZGRyID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRlc2Nf c3ltYm9sKTsKLSAgaWYgKGppdF9kZXNjcmlwdG9yX2FkZHIgPT0gMCkKLSAg ICByZXR1cm47CisgICAgICAvKiBMb29rdXAgdGhlIGRlc2NyaXB0b3Igc3lt Ym9sIGFuZCBjYWNoZSB0aGUgYWRkci4gIElmIGl0IGlzCisJIG1pc3Npbmcs IHdlIGFzc3VtZSB3ZSBhcmUgbm90IGF0dGFjaGVkIHRvIGEgSklUIGFuZCBy ZXR1cm4gZWFybHkuICAqLworICAgICAgZGVzY19zeW1ib2wgPSBsb29rdXBf bWluaW1hbF9zeW1ib2wgKGppdF9kZXNjcmlwdG9yX25hbWUsIE5VTEwsIE5V TEwpOworICAgICAgaWYgKGRlc2Nfc3ltYm9sID09IE5VTEwpCisJcmV0dXJu OworCisgICAgICBpbmZfZGF0YS0+ZGVzY3JpcHRvcl9hZGRyID0gU1lNQk9M X1ZBTFVFX0FERFJFU1MgKGRlc2Nfc3ltYm9sKTsKKyAgICAgIGlmIChpbmZf ZGF0YS0+ZGVzY3JpcHRvcl9hZGRyID09IDApCisJcmV0dXJuOworICAgIH0K IAogICBpZiAoaml0X2RlYnVnKQogICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLQkJCSJqaXRfaW5mZXJpb3JfaW5pdCwgaml0X2Rlc2Ny aXB0b3JfYWRkciA9ICVzXG4iLAotCQkJcGFkZHJlc3MgKGdkYmFyY2gsIGpp dF9kZXNjcmlwdG9yX2FkZHIpKTsKKwkJCSJqaXRfaW5mZXJpb3JfaW5pdCwg ZGVzY3JpcHRvcl9hZGRyID0gJXNcbiIsCisJCQlwYWRkcmVzcyAoZ2RiYXJj aCwgaW5mX2RhdGEtPmRlc2NyaXB0b3JfYWRkcikpOwogCiAgIC8qIFJlYWQg dGhlIGRlc2NyaXB0b3Igc28gd2UgY2FuIGNoZWNrIHRoZSB2ZXJzaW9uIG51 bWJlciBhbmQgbG9hZAogICAgICBhbnkgYWxyZWFkeSBKSVRlZCBmdW5jdGlv bnMuICAqLwotICBqaXRfcmVhZF9kZXNjcmlwdG9yIChnZGJhcmNoLCAmZGVz Y3JpcHRvcik7CisgIGppdF9yZWFkX2Rlc2NyaXB0b3IgKGdkYmFyY2gsICZk ZXNjcmlwdG9yLCBpbmZfZGF0YS0+ZGVzY3JpcHRvcl9hZGRyKTsKIAogICAv KiBDaGVjayB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBhZ3JlZXMgd2l0aCB0 aGF0IHdlIHN1cHBvcnQuICAqLwogICBpZiAoZGVzY3JpcHRvci52ZXJzaW9u ICE9IDEpCiAgICAgZXJyb3IgKF8oIlVuc3VwcG9ydGVkIEpJVCBwcm90b2Nv bCB2ZXJzaW9uIGluIGRlc2NyaXB0b3IhIikpOwogCi0gIC8qIFB1dCBhIGJy ZWFrcG9pbnQgaW4gdGhlIHJlZ2lzdHJhdGlvbiBzeW1ib2wuICAqLwotICBj cmVhdGVfaml0X2V2ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHJlZ19hZGRy KTsKLQogICAvKiBJZiB3ZSd2ZSBhdHRhY2hlZCB0byBhIHJ1bm5pbmcgcHJv Z3JhbSwgd2UgbmVlZCB0byBjaGVjayB0aGUgZGVzY3JpcHRvcgogICAgICB0 byByZWdpc3RlciBhbnkgZnVuY3Rpb25zIHRoYXQgd2VyZSBhbHJlYWR5IGdl bmVyYXRlZC4gICovCiAgIGZvciAoY3VyX2VudHJ5X2FkZHIgPSBkZXNjcmlw dG9yLmZpcnN0X2VudHJ5OwpAQCAtNDE2LDcgKzQ1MSw4IEBAIGppdF9pbmZl cmlvcl9jcmVhdGVkX2hvb2sgKHZvaWQpCiB2b2lkCiBqaXRfYnJlYWtwb2lu dF9yZV9zZXQgKHZvaWQpCiB7Ci0gIGppdF9pbmZlcmlvcl9pbml0ICh0YXJn ZXRfZ2RiYXJjaCk7CisgIGppdF9icmVha3BvaW50X3JlX3NldF9pbnRlcm5h bCAodGFyZ2V0X2dkYmFyY2gsCisJCQkJICBnZXRfaml0X2luZmVyaW9yX2Rh dGEgKCkpOwogfQogCiAvKiBXcmFwcGVyIHRvIG1hdGNoIHRoZSBvYnNlcnZl ciBmdW5jdGlvbiBwb2ludGVyIHByb3RvdHlwZS4gICovCkBAIC00MzYsMTQg KzQ3MiwxNiBAQCBqaXRfaW5mZXJpb3JfZXhpdF9ob29rIChzdHJ1Y3QgaW5m ZXJpb3IgCiB7CiAgIHN0cnVjdCBvYmpmaWxlICpvYmpmOwogICBzdHJ1Y3Qg b2JqZmlsZSAqdGVtcDsKLQotICAvKiBXZSBuZWVkIHRvIHJlc2V0IHRoZSBk ZXNjcmlwdG9yIGFkZHIgc28gdGhhdCBuZXh0IHRpbWUgd2UgbG9hZCB1cCB0 aGUKLSAgICAgaW5mZXJpb3Igd2UgbG9vayBmb3IgaXQgYWdhaW4uICAqLwot ICBqaXRfZGVzY3JpcHRvcl9hZGRyID0gMDsKKyAgc3RydWN0IGppdF9pbmZl cmlvcl9kYXRhICppbmZfZGF0YTsKIAogICBBTExfT0JKRklMRVNfU0FGRSAo b2JqZiwgdGVtcCkKICAgICBpZiAob2JqZmlsZV9kYXRhIChvYmpmLCBqaXRf b2JqZmlsZV9kYXRhKSAhPSBOVUxMKQogICAgICAgaml0X3VucmVnaXN0ZXJf Y29kZSAob2JqZik7CisKKyAgLyogRm9yY2UgbG9va3VwIG9mIGppdCBzeW1i b2wgYWRkcmVzc2VzIG9uIG5leHQgcnVuLiAgKi8KKyAgaW5mX2RhdGEgPSBp bmZlcmlvcl9kYXRhIChpbmYsIGppdF9pbmZlcmlvcl9kYXRhKTsKKyAgaW5m X2RhdGEtPmJyZWFrcG9pbnRfYWRkciA9IDA7CisgIGluZl9kYXRhLT5kZXNj cmlwdG9yX2FkZHIgPSAwOwogfQogCiB2b2lkCkBAIC00NTUsNyArNDkzLDgg QEAgaml0X2V2ZW50X2hhbmRsZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcgog ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZjsKIAogICAvKiBSZWFkIHRoZSBkZXNj cmlwdG9yIGZyb20gcmVtb3RlIG1lbW9yeS4gICovCi0gIGppdF9yZWFkX2Rl c2NyaXB0b3IgKGdkYmFyY2gsICZkZXNjcmlwdG9yKTsKKyAgaml0X3JlYWRf ZGVzY3JpcHRvciAoZ2RiYXJjaCwgJmRlc2NyaXB0b3IsCisJCSAgICAgICBn ZXRfaml0X2luZmVyaW9yX2RhdGEgKCktPmRlc2NyaXB0b3JfYWRkcik7CiAg IGVudHJ5X2FkZHIgPSBkZXNjcmlwdG9yLnJlbGV2YW50X2VudHJ5OwogCiAg IC8qIERvIHRoZSBjb3JyZXNwb25kaW5nIGFjdGlvbi4gICovCkBAIC01MDEs NCArNTQwLDYgQEAgX2luaXRpYWxpemVfaml0ICh2b2lkKQogICBvYnNlcnZl cl9hdHRhY2hfaW5mZXJpb3JfY3JlYXRlZCAoaml0X2luZmVyaW9yX2NyZWF0 ZWRfb2JzZXJ2ZXIpOwogICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3JfZXhp dCAoaml0X2luZmVyaW9yX2V4aXRfaG9vayk7CiAgIGppdF9vYmpmaWxlX2Rh dGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CisgIGppdF9pbmZlcmlv cl9kYXRhID0KKyAgICByZWdpc3Rlcl9pbmZlcmlvcl9kYXRhX3dpdGhfY2xl YW51cCAoaml0X2luZmVyaW9yX2RhdGFfY2xlYW51cCk7CiB9Cg== --0015175cb1108d62a2049a4f7c93--