From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14848 invoked by alias); 28 Jan 2011 17:48:23 -0000 Received: (qmail 14797 invoked by uid 22791); 28 Jan 2011 17:48:21 -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; Fri, 28 Jan 2011 17:48:16 +0000 Received: from wpaz17.hot.corp.google.com (wpaz17.hot.corp.google.com [172.24.198.81]) by smtp-out.google.com with ESMTP id p0SHmCd0021147 for ; Fri, 28 Jan 2011 09:48:12 -0800 Received: from qwj9 (qwj9.prod.google.com [10.241.195.73]) by wpaz17.hot.corp.google.com with ESMTP id p0SHlxTC006553 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for ; Fri, 28 Jan 2011 09:48:10 -0800 Received: by qwj9 with SMTP id 9so4111446qwj.22 for ; Fri, 28 Jan 2011 09:48:10 -0800 (PST) Received: by 10.229.251.209 with SMTP id mt17mr2931350qcb.66.1296236890411; Fri, 28 Jan 2011 09:48:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.29.204 with HTTP; Fri, 28 Jan 2011 09:47:40 -0800 (PST) In-Reply-To: <201101272259.02058.pedro@codesourcery.com> References: <20110119204315.0A235190C48@elbrus2.mtv.corp.google.com> <201101271244.09767.pedro@codesourcery.com> <201101272259.02058.pedro@codesourcery.com> From: Paul Pluzhnikov Date: Fri, 28 Jan 2011 18:02: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=0016362851b665d39f049aebab50 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/msg00557.txt.bz2 --0016362851b665d39f049aebab50 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2110 On Thu, Jan 27, 2011 at 2:59 PM, Pedro Alves wrote: > On Thursday 27 January 2011 21:50:35, Paul Pluzhnikov wrote: >> -/* This is the address of the JIT descriptor in the inferior. =A0*/ >> - >> -static CORE_ADDR jit_descriptor_addr =3D 0; > > ... > >> +struct jit_inferior_data >> +{ >> + =A0CORE_ADDR breakpoint_addr; >> + =A0CORE_ADDR descriptor_addr; >> +}; > > You've lost the comment above. =A0It'd be nice to > have this structure and its fields documented.. Done. >> I think this is covered now -- after "file", if we attach or run, >> inferior_create_observer will delete the old breakpoint. > > The other way around isn't. =A0If e.g., you attach to a process, > and notice that the exec is wrongly set --- and then use "file" > command to fix it. =A0We'd set a new jit breakpoint before, but > we don't now --- I think we should reset the jit state in that > case, at least like jit_inferior_created_observer is > doing, and that's what I was thinking could be done > from the executable_changed observer. Done. gdb.base/jit.exp passes with both gdb and native gdbserver. I'll wait a couple more days, then submit attached patch if there are no further comments. Thanks, --=20 Paul Pluzhnikov 2011-01-28 Paul Pluzhnikov * breakpoint.h (remove_jit_event_breakpoints): New prototype. * breakpoint.c (remove_jit_event_breakpoints): New function. * 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_reset_inferior_data_and_breakpoints): New function. (jit_inferior_created_observer): Adjust. (jit_inferior_exit_hook): Adjust. (jit_executable_changed_observer): New function. (jit_event_handler): Adjust. (_initialize_jit): Adjust. --0016362851b665d39f049aebab50 Content-Type: text/plain; charset=US-ASCII; name="gdb-jit-leak-20110128.txt" Content-Disposition: attachment; filename="gdb-jit-leak-20110128.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjhdwwjh0 Content-length: 15991 SW5kZXg6IGJyZWFrcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2JyZWFrcG9pbnQuaCx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xMzIKZGlmZiAtdSAtcCAtcCAtdSAtcjEuMTMy IGJyZWFrcG9pbnQuaAotLS0gYnJlYWtwb2ludC5oCTExIEphbiAyMDExIDE5 OjIzOjAyIC0wMDAwCTEuMTMyCisrKyBicmVha3BvaW50LmgJMjggSmFuIDIw MTEgMTc6MzY6MTAgLTAwMDAKQEAgLTEwNzcsNiArMTA3Nyw4IEBAIGV4dGVy biBzdHJ1Y3QgYnJlYWtwb2ludCAqY3JlYXRlX3NvbGliX2UKIGV4dGVybiBz dHJ1Y3QgYnJlYWtwb2ludCAqY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqLAogCQkJCQkJCSAgQ09SRV9BRERSKTsK IAorZXh0ZXJuIHZvaWQgcmVtb3ZlX2ppdF9ldmVudF9icmVha3BvaW50cyAo dm9pZCk7CisKIGV4dGVybiB2b2lkIHJlbW92ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50cyAodm9pZCk7CiAKIGV4dGVybiB2b2lkIHJlbW92ZV90aHJlYWRf ZXZlbnRfYnJlYWtwb2ludHMgKHZvaWQpOwpJbmRleDogYnJlYWtwb2ludC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvYnJlYWtwb2ludC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUy OQpkaWZmIC11IC1wIC1wIC11IC1yMS41MjkgYnJlYWtwb2ludC5jCi0tLSBi cmVha3BvaW50LmMJMTEgSmFuIDIwMTEgMTk6Mzk6MzUgLTAwMDAJMS41MjkK KysrIGJyZWFrcG9pbnQuYwkyOCBKYW4gMjAxMSAxNzozNjoxMCAtMDAwMApA QCAtNTkxMSw2ICs1OTExLDE5IEBAIGNyZWF0ZV9qaXRfZXZlbnRfYnJlYWtw b2ludCAoc3RydWN0IGdkYmEKICAgcmV0dXJuIGI7CiB9CiAKKy8qIFJlbW92 ZSBKSVQgY29kZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uIGJy ZWFrcG9pbnQocykuICAqLworCit2b2lkCityZW1vdmVfaml0X2V2ZW50X2Jy ZWFrcG9pbnRzICh2b2lkKQoreworICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiwg KmJfdG1wOworCisgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCBiX3RtcCkK KyAgICBpZiAoYi0+dHlwZSA9PSBicF9qaXRfZXZlbnQKKwkmJiBiLT5sb2Mt PnBzcGFjZSA9PSBjdXJyZW50X3Byb2dyYW1fc3BhY2UpCisgICAgICBkZWxl dGVfYnJlYWtwb2ludCAoYik7Cit9CisKIHZvaWQKIHJlbW92ZV9zb2xpYl9l dmVudF9icmVha3BvaW50cyAodm9pZCkKIHsKSW5kZXg6IGppdC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIv aml0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtdSAtcCAt cCAtdSAtcjEuMTAgaml0LmMKLS0tIGppdC5jCTkgSmFuIDIwMTEgMDM6MDg6 NTcgLTAwMDAJMS4xMAorKysgaml0LmMJMjggSmFuIDIwMTEgMTc6MzY6MTAg LTAwMDAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjb21tYW5kLmgi CiAjaW5jbHVkZSAiZ2RiY21kLmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5oIgor I2luY2x1ZGUgImluZmVyaW9yLmgiCiAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIK ICNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgInN5bWZpbGUuaCIK QEAgLTM3LDE4ICszOCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBq aXRfYnJlYWtfbmFtZSAKIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGpp dF9kZXNjcmlwdG9yX25hbWUgPSAiX19qaXRfZGVidWdfZGVzY3JpcHRvciI7 CiAKLS8qIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEpJVCBkZXNjcmlw dG9yIGluIHRoZSBpbmZlcmlvci4gICovCi0KLXN0YXRpYyBDT1JFX0FERFIg aml0X2Rlc2NyaXB0b3JfYWRkciA9IDA7Ci0KLS8qIFRoaXMgaXMgYSBib29s ZWFuIGluZGljYXRpbmcgd2hldGhlciB3ZSdyZSBjdXJyZW50bHkgcmVnaXN0 ZXJpbmcgY29kZS4gIFRoaXMKLSAgIGlzIHVzZWQgdG8gYXZvaWQgcmUtZW50 ZXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBjb2RlLiAgV2Ugd2FudCB0byBjaGVj ayBmb3IKLSAgIG5ldyBKSVRlZCBldmVyeSB0aW1lIGEgbmV3IG9iamVjdCBm aWxlIGlzIGxvYWRlZCwgYnV0IHdlIHdhbnQgdG8gYXZvaWQKLSAgIGNoZWNr aW5nIGZvciBuZXcgY29kZSB3aGlsZSB3ZSdyZSByZWdpc3RlcmluZyBvYmpl Y3QgZmlsZXMgZm9yIEpJVGVkIGNvZGUuCi0gICBUaGVyZWZvcmUsIHdlIGZs aXAgdGhpcyB2YXJpYWJsZSB0byAxIGJlZm9yZSByZWdpc3RlcmluZyBuZXcg b2JqZWN0IGZpbGVzLAotICAgYW5kIHNldCBpdCB0byAwIGJlZm9yZSByZXR1 cm5pbmcuICAqLwotCi1zdGF0aWMgaW50IHJlZ2lzdGVyaW5nX2NvZGUgPSAw Oworc3RhdGljIGNvbnN0IHN0cnVjdCBpbmZlcmlvcl9kYXRhICpqaXRfaW5m ZXJpb3JfZGF0YSA9IE5VTEw7CiAKIC8qIE5vbi16ZXJvIGlmIHdlIHdhbnQg dG8gc2VlIHRyYWNlIG9mIGppdCBsZXZlbCBzdHVmZi4gICovCiAKQEAgLTYx LDE0ICs1MSw2IEBAIHNob3dfaml0X2RlYnVnIChzdHJ1Y3QgdWlfZmlsZSAq ZmlsZSwgaW4KICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiSklUIGRl YnVnZ2luZyBpcyAlcy5cbiIpLCB2YWx1ZSk7CiB9CiAKLS8qIEhlbHBlciBj bGVhbnVwIGZ1bmN0aW9uIHRvIGNsZWFyIGFuIGludGVnZXIgZmxhZyBsaWtl IHRoZSBvbmUgYWJvdmUuICAqLwotCi1zdGF0aWMgdm9pZAotY2xlYXJfaW50 ICh2b2lkICppbnRfYWRkcikKLXsKLSAgKigoaW50ICopIGludF9hZGRyKSA9 IDA7Ci19Ci0KIHN0cnVjdCB0YXJnZXRfYnVmZmVyCiB7CiAgIENPUkVfQURE UiBiYXNlOwpAQCAtMTQ2LDEyICsxMjgsNDcgQEAgYmZkX29wZW5fZnJvbV90 YXJnZXRfbWVtb3J5IChDT1JFX0FERFIgYQogICAgICAgICAgICAgICAgICAg ICAgICAgICBtZW1fYmZkX2lvdmVjX3N0YXQpOwogfQogCisvKiBQZXItaW5m ZXJpb3Igc3RydWN0dXJlIHJlY29yZGluZyB0aGUgYWRkcmVzc2VzIGluIHRo ZSBpbmZlcmlvci4gICovCisKK3N0cnVjdCBqaXRfaW5mZXJpb3JfZGF0YQor eworICBDT1JFX0FERFIgYnJlYWtwb2ludF9hZGRyOyAgLyogJl9faml0X2Rl YnVnX3JlZ2lzdGVyX2NvZGUoKSAgKi8KKyAgQ09SRV9BRERSIGRlc2NyaXB0 b3JfYWRkcjsgIC8qICZfX2ppdF9kZWJ1Z19kZXNjcmlwdG9yICAqLworfTsK KworLyogUmV0dXJuIGppdF9pbmZlcmlvcl9kYXRhIGZvciBjdXJyZW50IGlu ZmVyaW9yLiAgQWxsb2NhdGUgaWYgbm90IGFscmVhZHkKKyAgIHByZXNlbnQu ICAqLworCitzdGF0aWMgc3RydWN0IGppdF9pbmZlcmlvcl9kYXRhICoKK2dl dF9qaXRfaW5mZXJpb3JfZGF0YSAodm9pZCkKK3sKKyAgc3RydWN0IGluZmVy aW9yICppbmY7CisgIHN0cnVjdCBqaXRfaW5mZXJpb3JfZGF0YSAqaW5mX2Rh dGE7CisKKyAgaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKKyAgaW5mX2Rh dGEgPSBpbmZlcmlvcl9kYXRhIChpbmYsIGppdF9pbmZlcmlvcl9kYXRhKTsK KyAgaWYgKGluZl9kYXRhID09IE5VTEwpCisgICAgeworICAgICAgaW5mX2Rh dGEgPSBYWkFMTE9DIChzdHJ1Y3Qgaml0X2luZmVyaW9yX2RhdGEpOworICAg ICAgc2V0X2luZmVyaW9yX2RhdGEgKGluZiwgaml0X2luZmVyaW9yX2RhdGEs IGluZl9kYXRhKTsKKyAgICB9CisKKyAgcmV0dXJuIGluZl9kYXRhOworfQor CitzdGF0aWMgdm9pZAoraml0X2luZmVyaW9yX2RhdGFfY2xlYW51cCAoc3Ry dWN0IGluZmVyaW9yICppbmYsIHZvaWQgKmFyZykKK3sKKyAgeGZyZWUgKGFy Zyk7Cit9CisKIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgcmVhZGluZyB0aGUg Z2xvYmFsIEpJVCBkZXNjcmlwdG9yIGZyb20gcmVtb3RlCiAgICBtZW1vcnku ICAqLwogCiBzdGF0aWMgdm9pZAogaml0X3JlYWRfZGVzY3JpcHRvciAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0JCSAgICAgc3RydWN0IGppdF9kZXNj cmlwdG9yICpkZXNjcmlwdG9yKQorCQkgICAgIHN0cnVjdCBqaXRfZGVzY3Jp cHRvciAqZGVzY3JpcHRvciwKKwkJICAgICBDT1JFX0FERFIgZGVzY3JpcHRv cl9hZGRyKQogewogICBpbnQgZXJyOwogICBzdHJ1Y3QgdHlwZSAqcHRyX3R5 cGU7CkBAIC0xNjcsNyArMTg0LDcgQEAgaml0X3JlYWRfZGVzY3JpcHRvciAo c3RydWN0IGdkYmFyY2ggKmdkYgogICBkZXNjX2J1ZiA9IGFsbG9jYSAoZGVz Y19zaXplKTsKIAogICAvKiBSZWFkIHRoZSBkZXNjcmlwdG9yLiAgKi8KLSAg ZXJyID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChqaXRfZGVzY3JpcHRvcl9hZGRy LCBkZXNjX2J1ZiwgZGVzY19zaXplKTsKKyAgZXJyID0gdGFyZ2V0X3JlYWRf bWVtb3J5IChkZXNjcmlwdG9yX2FkZHIsIGRlc2NfYnVmLCBkZXNjX3NpemUp OwogICBpZiAoZXJyKQogICAgIGVycm9yIChfKCJVbmFibGUgdG8gcmVhZCBK SVQgZGVzY3JpcHRvciBmcm9tIHJlbW90ZSBtZW1vcnkhIikpOwogCkBAIC0y NzgsMTcgKzI5NSw5IEBAIEpJVGVkIHN5bWJvbCBmaWxlIGlzIG5vdCBhbiBv YmplY3QgZmlsZSwKICAgICAgICAgKytpOwogICAgICAgfQogCi0gIC8qIFJh aXNlIHRoaXMgZmxhZyB3aGlsZSB3ZSByZWdpc3RlciBjb2RlIHNvIHdlIHdv bid0IHRyaWdnZXIgYW55Ci0gICAgIHJlLXJlZ2lzdHJhdGlvbi4gICovCi0g IHJlZ2lzdGVyaW5nX2NvZGUgPSAxOwotICBteV9jbGVhbnVwcyA9IG1ha2Vf Y2xlYW51cCAoY2xlYXJfaW50LCAmcmVnaXN0ZXJpbmdfY29kZSk7Ci0KICAg LyogVGhpcyBjYWxsIHRha2VzIG93bmVyc2hpcCBvZiBzYWkuICAqLwogICBv YmpmaWxlID0gc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkIChuYmZkLCAwLCBz YWksIE9CSkZfU0hBUkVEKTsKIAotICAvKiBDbGVhciB0aGUgcmVnaXN0ZXJp bmdfY29kZSBmbGFnLiAgKi8KLSAgZG9fY2xlYW51cHMgKG15X2NsZWFudXBz KTsKLQogICAvKiBSZW1lbWJlciBhIG1hcHBpbmcgZnJvbSBlbnRyeV9hZGRy IHRvIG9iamZpbGUuICAqLwogICBlbnRyeV9hZGRyX3B0ciA9IHhtYWxsb2Mg KHNpemVvZiAoQ09SRV9BRERSKSk7CiAgICplbnRyeV9hZGRyX3B0ciA9IGVu dHJ5X2FkZHI7CkBAIC0zMjMsNjggKzMzMiw4NiBAQCBqaXRfZmluZF9vYmpm X3dpdGhfZW50cnlfYWRkciAoQ09SRV9BRERSCiAgIHJldHVybiBOVUxMOwog fQogCi0vKiAoUmUtKUluaXRpYWxpemUgdGhlIGppdCBicmVha3BvaW50IGhh bmRsZXIsIGFuZCByZWdpc3RlciBhbnkgYWxyZWFkeQotICAgY3JlYXRlZCB0 cmFuc2xhdGlvbnMuICAqLworLyogKFJlLSlJbml0aWFsaXplIHRoZSBqaXQg YnJlYWtwb2ludCBpZiBuZWNlc3NhcnkuCisgICBSZXR1cm4gMCBvbiBzdWNj ZXNzLiAgKi8KKworc3RhdGljIGludAoraml0X2JyZWFrcG9pbnRfcmVfc2V0 X2ludGVybmFsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKwkJCQlzdHJ1 Y3Qgaml0X2luZmVyaW9yX2RhdGEgKmluZl9kYXRhKQoreworICBpZiAoaW5m X2RhdGEtPmJyZWFrcG9pbnRfYWRkciA9PSAwKQorICAgIHsKKyAgICAgIHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqcmVnX3N5bWJvbDsKKworICAgICAgLyog TG9va3VwIHRoZSByZWdpc3RyYXRpb24gc3ltYm9sLiAgSWYgaXQgaXMgbWlz c2luZywgdGhlbiB3ZSBhc3N1bWUKKwkgd2UgYXJlIG5vdCBhdHRhY2hlZCB0 byBhIEpJVC4gICovCisgICAgICByZWdfc3ltYm9sID0gbG9va3VwX21pbmlt YWxfc3ltYm9sIChqaXRfYnJlYWtfbmFtZSwgTlVMTCwgTlVMTCk7CisgICAg ICBpZiAocmVnX3N5bWJvbCA9PSBOVUxMKQorCXJldHVybiAxOworICAgICAg aW5mX2RhdGEtPmJyZWFrcG9pbnRfYWRkciA9IFNZTUJPTF9WQUxVRV9BRERS RVNTIChyZWdfc3ltYm9sKTsKKyAgICAgIGlmIChpbmZfZGF0YS0+YnJlYWtw b2ludF9hZGRyID09IDApCisJcmV0dXJuIDI7CisgICAgfQorICBlbHNlCisg ICAgcmV0dXJuIDA7CisKKyAgaWYgKGppdF9kZWJ1ZykKKyAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkiaml0X2JyZWFrcG9pbnRf cmVfc2V0X2ludGVybmFsLCAiCisJCQkiYnJlYWtwb2ludF9hZGRyID0gJXNc biIsCisJCQlwYWRkcmVzcyAoZ2RiYXJjaCwgaW5mX2RhdGEtPmJyZWFrcG9p bnRfYWRkcikpOworCisgIC8qIFB1dCBhIGJyZWFrcG9pbnQgaW4gdGhlIHJl Z2lzdHJhdGlvbiBzeW1ib2wuICAqLworICBjcmVhdGVfaml0X2V2ZW50X2Jy ZWFrcG9pbnQgKGdkYmFyY2gsIGluZl9kYXRhLT5icmVha3BvaW50X2FkZHIp OworCisgIHJldHVybiAwOworfQorCisvKiBSZWdpc3RlciBhbnkgYWxyZWFk eSBjcmVhdGVkIHRyYW5zbGF0aW9ucy4gICovCiAKIHN0YXRpYyB2b2lkCiBq aXRfaW5mZXJpb3JfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCiB7 Ci0gIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqcmVnX3N5bWJvbDsKLSAgc3Ry dWN0IG1pbmltYWxfc3ltYm9sICpkZXNjX3N5bWJvbDsKLSAgQ09SRV9BRERS IHJlZ19hZGRyOwogICBzdHJ1Y3Qgaml0X2Rlc2NyaXB0b3IgZGVzY3JpcHRv cjsKICAgc3RydWN0IGppdF9jb2RlX2VudHJ5IGN1cl9lbnRyeTsKKyAgc3Ry dWN0IGppdF9pbmZlcmlvcl9kYXRhICppbmZfZGF0YTsKICAgQ09SRV9BRERS IGN1cl9lbnRyeV9hZGRyOwogCiAgIGlmIChqaXRfZGVidWcpCi0gICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotCQkJImppdF9pbmZlcmlv cl9pbml0LCByZWdpc3RlcmluZ19jb2RlID0gJWRcbiIsCi0JCQlyZWdpc3Rl cmluZ19jb2RlKTsKKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csICJqaXRfaW5mZXJpb3JfaW5pdFxuIik7CiAKLSAgLyogV2hlbiB3ZSBy ZWdpc3RlciBjb2RlLCBHREIgcmVzZXRzIGl0cyBicmVha3BvaW50cyBpbiBj YXNlIHN5bWJvbHMgaGF2ZQotICAgICBjaGFuZ2VkLiAgVGhhdCBpbiB0dXJu IGNhbGxzIHRoaXMgaGFuZGxlciwgd2hpY2ggbWFrZXMgdXMgbG9vayBmb3Ig bmV3Ci0gICAgIGNvZGUgYWdhaW4uICBUbyBhdm9pZCBiZWluZyByZS1lbnRl cmVkLCB3ZSBjaGVjayB0aGlzIGZsYWcuICAqLwotICBpZiAocmVnaXN0ZXJp bmdfY29kZSkKKyAgaW5mX2RhdGEgPSBnZXRfaml0X2luZmVyaW9yX2RhdGEg KCk7CisgIGlmIChqaXRfYnJlYWtwb2ludF9yZV9zZXRfaW50ZXJuYWwgKGdk YmFyY2gsIGluZl9kYXRhKSAhPSAwKQogICAgIHJldHVybjsKIAotICAvKiBM b29rdXAgdGhlIHJlZ2lzdHJhdGlvbiBzeW1ib2wuICBJZiBpdCBpcyBtaXNz aW5nLCB0aGVuIHdlIGFzc3VtZSB3ZSBhcmUKLSAgICAgbm90IGF0dGFjaGVk IHRvIGEgSklULiAgKi8KLSAgcmVnX3N5bWJvbCA9IGxvb2t1cF9taW5pbWFs X3N5bWJvbCAoaml0X2JyZWFrX25hbWUsIE5VTEwsIE5VTEwpOwotICBpZiAo cmVnX3N5bWJvbCA9PSBOVUxMKQotICAgIHJldHVybjsKLSAgcmVnX2FkZHIg PSBTWU1CT0xfVkFMVUVfQUREUkVTUyAocmVnX3N5bWJvbCk7Ci0gIGlmIChy ZWdfYWRkciA9PSAwKQotICAgIHJldHVybjsKLQotICBpZiAoaml0X2RlYnVn KQotICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImppdF9p bmZlcmlvcl9pbml0LCByZWdfYWRkciA9ICVzXG4iLAotCQkJcGFkZHJlc3Mg KGdkYmFyY2gsIHJlZ19hZGRyKSk7CisgIGlmIChpbmZfZGF0YS0+ZGVzY3Jp cHRvcl9hZGRyID09IDApCisgICAgeworICAgICAgc3RydWN0IG1pbmltYWxf c3ltYm9sICpkZXNjX3N5bWJvbDsKIAotICAvKiBMb29rdXAgdGhlIGRlc2Ny aXB0b3Igc3ltYm9sIGFuZCBjYWNoZSB0aGUgYWRkci4gIElmIGl0IGlzIG1p c3NpbmcsIHdlCi0gICAgIGFzc3VtZSB3ZSBhcmUgbm90IGF0dGFjaGVkIHRv IGEgSklUIGFuZCByZXR1cm4gZWFybHkuICAqLwotICBkZXNjX3N5bWJvbCA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoaml0X2Rlc2NyaXB0b3JfbmFtZSwg TlVMTCwgTlVMTCk7Ci0gIGlmIChkZXNjX3N5bWJvbCA9PSBOVUxMKQotICAg IHJldHVybjsKLSAgaml0X2Rlc2NyaXB0b3JfYWRkciA9IFNZTUJPTF9WQUxV RV9BRERSRVNTIChkZXNjX3N5bWJvbCk7Ci0gIGlmIChqaXRfZGVzY3JpcHRv cl9hZGRyID09IDApCi0gICAgcmV0dXJuOworICAgICAgLyogTG9va3VwIHRo ZSBkZXNjcmlwdG9yIHN5bWJvbCBhbmQgY2FjaGUgdGhlIGFkZHIuICBJZiBp dCBpcworCSBtaXNzaW5nLCB3ZSBhc3N1bWUgd2UgYXJlIG5vdCBhdHRhY2hl ZCB0byBhIEpJVCBhbmQgcmV0dXJuIGVhcmx5LiAgKi8KKyAgICAgIGRlc2Nf c3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChqaXRfZGVzY3JpcHRv cl9uYW1lLCBOVUxMLCBOVUxMKTsKKyAgICAgIGlmIChkZXNjX3N5bWJvbCA9 PSBOVUxMKQorCXJldHVybjsKKworICAgICAgaW5mX2RhdGEtPmRlc2NyaXB0 b3JfYWRkciA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChkZXNjX3N5bWJvbCk7 CisgICAgICBpZiAoaW5mX2RhdGEtPmRlc2NyaXB0b3JfYWRkciA9PSAwKQor CXJldHVybjsKKyAgICB9CiAKICAgaWYgKGppdF9kZWJ1ZykKICAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0JCQkiaml0X2luZmVyaW9y X2luaXQsIGppdF9kZXNjcmlwdG9yX2FkZHIgPSAlc1xuIiwKLQkJCXBhZGRy ZXNzIChnZGJhcmNoLCBqaXRfZGVzY3JpcHRvcl9hZGRyKSk7CisJCQkiaml0 X2luZmVyaW9yX2luaXQsIGRlc2NyaXB0b3JfYWRkciA9ICVzXG4iLAorCQkJ cGFkZHJlc3MgKGdkYmFyY2gsIGluZl9kYXRhLT5kZXNjcmlwdG9yX2FkZHIp KTsKIAogICAvKiBSZWFkIHRoZSBkZXNjcmlwdG9yIHNvIHdlIGNhbiBjaGVj ayB0aGUgdmVyc2lvbiBudW1iZXIgYW5kIGxvYWQKICAgICAgYW55IGFscmVh ZHkgSklUZWQgZnVuY3Rpb25zLiAgKi8KLSAgaml0X3JlYWRfZGVzY3JpcHRv ciAoZ2RiYXJjaCwgJmRlc2NyaXB0b3IpOworICBqaXRfcmVhZF9kZXNjcmlw dG9yIChnZGJhcmNoLCAmZGVzY3JpcHRvciwgaW5mX2RhdGEtPmRlc2NyaXB0 b3JfYWRkcik7CiAKICAgLyogQ2hlY2sgdGhhdCB0aGUgdmVyc2lvbiBudW1i ZXIgYWdyZWVzIHdpdGggdGhhdCB3ZSBzdXBwb3J0LiAgKi8KICAgaWYgKGRl c2NyaXB0b3IudmVyc2lvbiAhPSAxKQogICAgIGVycm9yIChfKCJVbnN1cHBv cnRlZCBKSVQgcHJvdG9jb2wgdmVyc2lvbiBpbiBkZXNjcmlwdG9yISIpKTsK IAotICAvKiBQdXQgYSBicmVha3BvaW50IGluIHRoZSByZWdpc3RyYXRpb24g c3ltYm9sLiAgKi8KLSAgY3JlYXRlX2ppdF9ldmVudF9icmVha3BvaW50IChn ZGJhcmNoLCByZWdfYWRkcik7Ci0KICAgLyogSWYgd2UndmUgYXR0YWNoZWQg dG8gYSBydW5uaW5nIHByb2dyYW0sIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGRl c2NyaXB0b3IKICAgICAgdG8gcmVnaXN0ZXIgYW55IGZ1bmN0aW9ucyB0aGF0 IHdlcmUgYWxyZWFkeSBnZW5lcmF0ZWQuICAqLwogICBmb3IgKGN1cl9lbnRy eV9hZGRyID0gZGVzY3JpcHRvci5maXJzdF9lbnRyeTsKQEAgLTQxNiw2ICs0 NDMsMjYgQEAgaml0X2luZmVyaW9yX2NyZWF0ZWRfaG9vayAodm9pZCkKIHZv aWQKIGppdF9icmVha3BvaW50X3JlX3NldCAodm9pZCkKIHsKKyAgaml0X2Jy ZWFrcG9pbnRfcmVfc2V0X2ludGVybmFsICh0YXJnZXRfZ2RiYXJjaCwKKwkJ CQkgIGdldF9qaXRfaW5mZXJpb3JfZGF0YSAoKSk7Cit9CisKKy8qIFJlc2V0 IGluZmVyaW9yX2RhdGEsIHNvIHN5Ym9scyB3aWxsIGJlIGxvb2tlZCB1cCBh Z2FpbiwgYW5kIGppdF9icmVha3BvaW50CisgICB3aWxsIGJlIHJlc2V0LiAg Ki8KKworc3RhdGljIHZvaWQKK2ppdF9yZXNldF9pbmZlcmlvcl9kYXRhX2Fu ZF9icmVha3BvaW50cyAodm9pZCkKK3sKKyAgc3RydWN0IGppdF9pbmZlcmlv cl9kYXRhICppbmZfZGF0YTsKKworICAvKiBGb3JjZSBqaXRfaW5mZXJpb3Jf aW5pdCB0byByZS1sb29rdXAgb2Ygaml0IHN5bWJvbCBhZGRyZXNzZXMuICAq LworICBpbmZfZGF0YSA9IGdldF9qaXRfaW5mZXJpb3JfZGF0YSAoKTsKKyAg aW5mX2RhdGEtPmJyZWFrcG9pbnRfYWRkciA9IDA7CisgIGluZl9kYXRhLT5k ZXNjcmlwdG9yX2FkZHIgPSAwOworCisgIC8qIFJlbW92ZSBhbnkgZXhpc3Rp bmcgSklUIGJyZWFrcG9pbnQocykuICAqLworICByZW1vdmVfaml0X2V2ZW50 X2JyZWFrcG9pbnRzICgpOworCiAgIGppdF9pbmZlcmlvcl9pbml0ICh0YXJn ZXRfZ2RiYXJjaCk7CiB9CiAKQEAgLTQyNCw3ICs0NzEsNyBAQCBqaXRfYnJl YWtwb2ludF9yZV9zZXQgKHZvaWQpCiBzdGF0aWMgdm9pZAogaml0X2luZmVy aW9yX2NyZWF0ZWRfb2JzZXJ2ZXIgKHN0cnVjdCB0YXJnZXRfb3BzICpvYmpm aWxlLCBpbnQgZnJvbV90dHkpCiB7Ci0gIGppdF9pbmZlcmlvcl9pbml0ICh0 YXJnZXRfZ2RiYXJjaCk7CisgIGppdF9yZXNldF9pbmZlcmlvcl9kYXRhX2Fu ZF9icmVha3BvaW50cyAoKTsKIH0KIAogLyogVGhpcyBmdW5jdGlvbiBjbGVh bnMgdXAgYW55IGNvZGUgZW50cmllcyBsZWZ0IG92ZXIgd2hlbiB0aGUKQEAg LTQzNywxNSArNDg0LDE3IEBAIGppdF9pbmZlcmlvcl9leGl0X2hvb2sgKHN0 cnVjdCBpbmZlcmlvciAKICAgc3RydWN0IG9iamZpbGUgKm9iamY7CiAgIHN0 cnVjdCBvYmpmaWxlICp0ZW1wOwogCi0gIC8qIFdlIG5lZWQgdG8gcmVzZXQg dGhlIGRlc2NyaXB0b3IgYWRkciBzbyB0aGF0IG5leHQgdGltZSB3ZSBsb2Fk IHVwIHRoZQotICAgICBpbmZlcmlvciB3ZSBsb29rIGZvciBpdCBhZ2Fpbi4g ICovCi0gIGppdF9kZXNjcmlwdG9yX2FkZHIgPSAwOwotCiAgIEFMTF9PQkpG SUxFU19TQUZFIChvYmpmLCB0ZW1wKQogICAgIGlmIChvYmpmaWxlX2RhdGEg KG9iamYsIGppdF9vYmpmaWxlX2RhdGEpICE9IE5VTEwpCiAgICAgICBqaXRf dW5yZWdpc3Rlcl9jb2RlIChvYmpmKTsKIH0KIAorc3RhdGljIHZvaWQKK2pp dF9leGVjdXRhYmxlX2NoYW5nZWRfb2JzZXJ2ZXIgKHZvaWQpCit7CisgIGpp dF9yZXNldF9pbmZlcmlvcl9kYXRhX2FuZF9icmVha3BvaW50cyAoKTsKK30K Kwogdm9pZAogaml0X2V2ZW50X2hhbmRsZXIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQogewpAQCAtNDU1LDcgKzUwNCw4IEBAIGppdF9ldmVudF9oYW5k bGVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKICAgc3RydWN0IG9iamZpbGUg Km9iamY7CiAKICAgLyogUmVhZCB0aGUgZGVzY3JpcHRvciBmcm9tIHJlbW90 ZSBtZW1vcnkuICAqLwotICBqaXRfcmVhZF9kZXNjcmlwdG9yIChnZGJhcmNo LCAmZGVzY3JpcHRvcik7CisgIGppdF9yZWFkX2Rlc2NyaXB0b3IgKGdkYmFy Y2gsICZkZXNjcmlwdG9yLAorCQkgICAgICAgZ2V0X2ppdF9pbmZlcmlvcl9k YXRhICgpLT5kZXNjcmlwdG9yX2FkZHIpOwogICBlbnRyeV9hZGRyID0gZGVz Y3JpcHRvci5yZWxldmFudF9lbnRyeTsKIAogICAvKiBEbyB0aGUgY29ycmVz cG9uZGluZyBhY3Rpb24uICAqLwpAQCAtNTAwLDUgKzU1MCw4IEBAIF9pbml0 aWFsaXplX2ppdCAodm9pZCkKIAogICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJp b3JfY3JlYXRlZCAoaml0X2luZmVyaW9yX2NyZWF0ZWRfb2JzZXJ2ZXIpOwog ICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3JfZXhpdCAoaml0X2luZmVyaW9y X2V4aXRfaG9vayk7CisgIG9ic2VydmVyX2F0dGFjaF9leGVjdXRhYmxlX2No YW5nZWQgKGppdF9leGVjdXRhYmxlX2NoYW5nZWRfb2JzZXJ2ZXIpOwogICBq aXRfb2JqZmlsZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwor ICBqaXRfaW5mZXJpb3JfZGF0YSA9CisgICAgcmVnaXN0ZXJfaW5mZXJpb3Jf ZGF0YV93aXRoX2NsZWFudXAgKGppdF9pbmZlcmlvcl9kYXRhX2NsZWFudXAp OwogfQo= --0016362851b665d39f049aebab50--