From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9534 invoked by alias); 27 Jan 2011 21:51:20 -0000 Received: (qmail 9514 invoked by uid 22791); 27 Jan 2011 21:51:15 -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, 27 Jan 2011 21:51:10 +0000 Received: from hpaq12.eem.corp.google.com (hpaq12.eem.corp.google.com [172.25.149.12]) by smtp-out.google.com with ESMTP id p0RLp7F7015124 for ; Thu, 27 Jan 2011 13:51:07 -0800 Received: from qyj19 (qyj19.prod.google.com [10.241.83.83]) by hpaq12.eem.corp.google.com with ESMTP id p0RLmWCu017038 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for ; Thu, 27 Jan 2011 13:51:06 -0800 Received: by qyj19 with SMTP id 19so104752qyj.19 for ; Thu, 27 Jan 2011 13:51:05 -0800 (PST) Received: by 10.229.250.82 with SMTP id mn18mr191140qcb.142.1296165065554; Thu, 27 Jan 2011 13:51:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.29.204 with HTTP; Thu, 27 Jan 2011 13:50:35 -0800 (PST) In-Reply-To: <201101271244.09767.pedro@codesourcery.com> References: <20110119204315.0A235190C48@elbrus2.mtv.corp.google.com> <201101271244.09767.pedro@codesourcery.com> From: Paul Pluzhnikov Date: Thu, 27 Jan 2011 22:59: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=0016363b8b2c4d7d42049adaf247 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/msg00522.txt.bz2 --0016363b8b2c4d7d42049adaf247 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3087 On Thu, Jan 27, 2011 at 4:44 AM, Pedro Alves wrote: Thanks for your comments. >> +struct jit_inferior_data { > > Put the { on it's own line, please. Done. >> +static struct jit_inferior_data * >> +get_jit_inferior_data (void) > > Please add a small describing blurb over functions. Done. >> + =A0if (inf_data->breakpoint !=3D NULL) >> + =A0 =A0{ >> + =A0 =A0 =A0if (inf_data->breakpoint_addr =3D=3D inf_data->breakpoint->= loc->address) >> + =A0 =A0 =A0 /* Same location as on last run. =A0Existing breakpoint is= good. =A0*/ >> + =A0 =A0 =A0 return 0; > > I'm a little warry about this optimization. =A0For example, > we should probably also compare other things, like > gdbarch and location's pspace|aspace. =A0Is it > a significant difference if we always delete the breakpoint > (here or perhaps on inferior exit?) I have not measured this, and optimization pass will be needed later anyway for the quadratic slowdown (reported by Vyacheslav earlier). Let's worry about correctness first. > There's at least one problem to solve: on "exec", > update_breakpoints_after_exec deletes bp_jit_event > breakpoints, effectively making it so that your > inf_data->breakpoint pointer becomes stale. I am in a twisty maze of passages, all alike ;-( > There may > be other paths that delete the breakpoint behind jit.c's > back. =A0One solution would be to get rid of the breakpoint > pointer in jit.c, and add a remove_jit_event_breakpoints > function, modelled on remove_solib_event_breakpoints. Done. I am calling remove_jit_event_breakpoints from inferior_create_observer (removing breakpoints doesn't work from inferior_exit_hook :-( > But > if you want to come up with other solutions, I'd be happy > to consider them. =A0I'm thinking that we should delete the > jit breakpoint (and perhaps more) whenever the executable > changes (say, the "file" command), which is kind of > a similar case of an "exec", so maybe we should install > an executable_changed observer as well. =A0Not sure that > covers all we need. I think this is covered now -- after "file", if we attach or run, inferior_create_observer will delete the old breakpoint. Thanks, --=20 Paul Pluzhnikov 2011-01-27 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_inferior_created_observer): Adjust. (jit_inferior_exit_hook): Adjust. (jit_event_handler): Adjust. (_initialize_jit): Adjust. --0016363b8b2c4d7d42049adaf247 Content-Type: text/plain; charset=US-ASCII; name="gdb-jit-leak-20110127.txt" Content-Disposition: attachment; filename="gdb-jit-leak-20110127.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjg75rs80 Content-length: 15214 SW5kZXg6IGJyZWFrcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2JyZWFrcG9pbnQuaCx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xMzIKZGlmZiAtdSAtcCAtcCAtdSAtcjEuMTMy IGJyZWFrcG9pbnQuaAotLS0gYnJlYWtwb2ludC5oCTExIEphbiAyMDExIDE5 OjIzOjAyIC0wMDAwCTEuMTMyCisrKyBicmVha3BvaW50LmgJMjcgSmFuIDIw MTEgMjE6NDg6MTMgLTAwMDAKQEAgLTEwNzcsNiArMTA3Nyw4IEBAIGV4dGVy biBzdHJ1Y3QgYnJlYWtwb2ludCAqY3JlYXRlX3NvbGliX2UKIGV4dGVybiBz dHJ1Y3QgYnJlYWtwb2ludCAqY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqLAogCQkJCQkJCSAgQ09SRV9BRERSKTsK IAorZXh0ZXJuIHZvaWQgcmVtb3ZlX2ppdF9ldmVudF9icmVha3BvaW50cyAo dm9pZCk7CisKIGV4dGVybiB2b2lkIHJlbW92ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50cyAodm9pZCk7CiAKIGV4dGVybiB2b2lkIHJlbW92ZV90aHJlYWRf ZXZlbnRfYnJlYWtwb2ludHMgKHZvaWQpOwpJbmRleDogYnJlYWtwb2ludC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvYnJlYWtwb2ludC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUy OQpkaWZmIC11IC1wIC1wIC11IC1yMS41MjkgYnJlYWtwb2ludC5jCi0tLSBi cmVha3BvaW50LmMJMTEgSmFuIDIwMTEgMTk6Mzk6MzUgLTAwMDAJMS41MjkK KysrIGJyZWFrcG9pbnQuYwkyNyBKYW4gMjAxMSAyMTo0ODoxMyAtMDAwMApA QCAtNTkxMSw2ICs1OTExLDE5IEBAIGNyZWF0ZV9qaXRfZXZlbnRfYnJlYWtw b2ludCAoc3RydWN0IGdkYmEKICAgcmV0dXJuIGI7CiB9CiAKKy8qIFJlbW92 ZSBKSVQgY29kZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uIGJy ZWFrcG9pbnQocykuICAqLworCit2b2lkCityZW1vdmVfaml0X2V2ZW50X2Jy ZWFrcG9pbnRzICh2b2lkKQoreworICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiwg KmJfdG1wOworCisgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCBiX3RtcCkK KyAgICBpZiAoYi0+dHlwZSA9PSBicF9qaXRfZXZlbnQKKwkmJiBiLT5sb2Mt PnBzcGFjZSA9PSBjdXJyZW50X3Byb2dyYW1fc3BhY2UpCisgICAgICBkZWxl dGVfYnJlYWtwb2ludCAoYik7Cit9CisKIHZvaWQKIHJlbW92ZV9zb2xpYl9l dmVudF9icmVha3BvaW50cyAodm9pZCkKIHsKSW5kZXg6IGppdC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIv aml0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtdSAtcCAt cCAtdSAtcjEuMTAgaml0LmMKLS0tIGppdC5jCTkgSmFuIDIwMTEgMDM6MDg6 NTcgLTAwMDAJMS4xMAorKysgaml0LmMJMjcgSmFuIDIwMTEgMjE6NDg6MTMg 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 UiBiYXNlOwpAQCAtMTQ2LDEyICsxMjgsNDUgQEAgYmZkX29wZW5fZnJvbV90 YXJnZXRfbWVtb3J5IChDT1JFX0FERFIgYQogICAgICAgICAgICAgICAgICAg ICAgICAgICBtZW1fYmZkX2lvdmVjX3N0YXQpOwogfQogCitzdHJ1Y3Qgaml0 X2luZmVyaW9yX2RhdGEKK3sKKyAgQ09SRV9BRERSIGJyZWFrcG9pbnRfYWRk cjsKKyAgQ09SRV9BRERSIGRlc2NyaXB0b3JfYWRkcjsKK307CisKKy8qIFJl dHVybiBqaXRfaW5mZXJpb3JfZGF0YSBmb3IgY3VycmVudCBpbmZlcmlvci4g IEFsbG9jYXRlIGlmIG5vdCBhbHJlYWR5CisgICBwcmVzZW50LiAgKi8KKwor c3RhdGljIHN0cnVjdCBqaXRfaW5mZXJpb3JfZGF0YSAqCitnZXRfaml0X2lu ZmVyaW9yX2RhdGEgKHZvaWQpCit7CisgIHN0cnVjdCBpbmZlcmlvciAqaW5m OworICBzdHJ1Y3Qgaml0X2luZmVyaW9yX2RhdGEgKmluZl9kYXRhOworCisg IGluZiA9IGN1cnJlbnRfaW5mZXJpb3IgKCk7CisgIGluZl9kYXRhID0gaW5m ZXJpb3JfZGF0YSAoaW5mLCBqaXRfaW5mZXJpb3JfZGF0YSk7CisgIGlmIChp bmZfZGF0YSA9PSBOVUxMKQorICAgIHsKKyAgICAgIGluZl9kYXRhID0gWFpB TExPQyAoc3RydWN0IGppdF9pbmZlcmlvcl9kYXRhKTsKKyAgICAgIHNldF9p bmZlcmlvcl9kYXRhIChpbmYsIGppdF9pbmZlcmlvcl9kYXRhLCBpbmZfZGF0 YSk7CisgICAgfQorCisgIHJldHVybiBpbmZfZGF0YTsKK30KKworc3RhdGlj IHZvaWQKK2ppdF9pbmZlcmlvcl9kYXRhX2NsZWFudXAgKHN0cnVjdCBpbmZl cmlvciAqaW5mLCB2b2lkICphcmcpCit7CisgIHhmcmVlIChhcmcpOworfQor CiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHJlYWRpbmcgdGhlIGdsb2JhbCBK SVQgZGVzY3JpcHRvciBmcm9tIHJlbW90ZQogICAgbWVtb3J5LiAgKi8KIAog c3RhdGljIHZvaWQKIGppdF9yZWFkX2Rlc2NyaXB0b3IgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAotCQkgICAgIHN0cnVjdCBqaXRfZGVzY3JpcHRvciAq ZGVzY3JpcHRvcikKKwkJICAgICBzdHJ1Y3Qgaml0X2Rlc2NyaXB0b3IgKmRl c2NyaXB0b3IsCisJCSAgICAgQ09SRV9BRERSIGRlc2NyaXB0b3JfYWRkcikK IHsKICAgaW50IGVycjsKICAgc3RydWN0IHR5cGUgKnB0cl90eXBlOwpAQCAt MTY3LDcgKzE4Miw3IEBAIGppdF9yZWFkX2Rlc2NyaXB0b3IgKHN0cnVjdCBn ZGJhcmNoICpnZGIKICAgZGVzY19idWYgPSBhbGxvY2EgKGRlc2Nfc2l6ZSk7 CiAKICAgLyogUmVhZCB0aGUgZGVzY3JpcHRvci4gICovCi0gIGVyciA9IHRh cmdldF9yZWFkX21lbW9yeSAoaml0X2Rlc2NyaXB0b3JfYWRkciwgZGVzY19i dWYsIGRlc2Nfc2l6ZSk7CisgIGVyciA9IHRhcmdldF9yZWFkX21lbW9yeSAo ZGVzY3JpcHRvcl9hZGRyLCBkZXNjX2J1ZiwgZGVzY19zaXplKTsKICAgaWYg KGVycikKICAgICBlcnJvciAoXygiVW5hYmxlIHRvIHJlYWQgSklUIGRlc2Ny aXB0b3IgZnJvbSByZW1vdGUgbWVtb3J5ISIpKTsKIApAQCAtMjc4LDE3ICsy OTMsOSBAQCBKSVRlZCBzeW1ib2wgZmlsZSBpcyBub3QgYW4gb2JqZWN0IGZp bGUsCiAgICAgICAgICsraTsKICAgICAgIH0KIAotICAvKiBSYWlzZSB0aGlz IGZsYWcgd2hpbGUgd2UgcmVnaXN0ZXIgY29kZSBzbyB3ZSB3b24ndCB0cmln Z2VyIGFueQotICAgICByZS1yZWdpc3RyYXRpb24uICAqLwotICByZWdpc3Rl cmluZ19jb2RlID0gMTsKLSAgbXlfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAg KGNsZWFyX2ludCwgJnJlZ2lzdGVyaW5nX2NvZGUpOwotCiAgIC8qIFRoaXMg Y2FsbCB0YWtlcyBvd25lcnNoaXAgb2Ygc2FpLiAgKi8KICAgb2JqZmlsZSA9 IHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAobmJmZCwgMCwgc2FpLCBPQkpG X1NIQVJFRCk7CiAKLSAgLyogQ2xlYXIgdGhlIHJlZ2lzdGVyaW5nX2NvZGUg ZmxhZy4gICovCi0gIGRvX2NsZWFudXBzIChteV9jbGVhbnVwcyk7Ci0KICAg LyogUmVtZW1iZXIgYSBtYXBwaW5nIGZyb20gZW50cnlfYWRkciB0byBvYmpm aWxlLiAgKi8KICAgZW50cnlfYWRkcl9wdHIgPSB4bWFsbG9jIChzaXplb2Yg KENPUkVfQUREUikpOwogICAqZW50cnlfYWRkcl9wdHIgPSBlbnRyeV9hZGRy OwpAQCAtMzIzLDY4ICszMzAsODYgQEAgaml0X2ZpbmRfb2JqZl93aXRoX2Vu dHJ5X2FkZHIgKENPUkVfQUREUgogICByZXR1cm4gTlVMTDsKIH0KIAotLyog KFJlLSlJbml0aWFsaXplIHRoZSBqaXQgYnJlYWtwb2ludCBoYW5kbGVyLCBh bmQgcmVnaXN0ZXIgYW55IGFscmVhZHkKLSAgIGNyZWF0ZWQgdHJhbnNsYXRp b25zLiAgKi8KKy8qIChSZS0pSW5pdGlhbGl6ZSB0aGUgaml0IGJyZWFrcG9p bnQgaWYgbmVjZXNzYXJ5LgorICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gICov CisKK3N0YXRpYyBpbnQKK2ppdF9icmVha3BvaW50X3JlX3NldF9pbnRlcm5h bCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisJCQkJc3RydWN0IGppdF9p bmZlcmlvcl9kYXRhICppbmZfZGF0YSkKK3sKKyAgaWYgKGluZl9kYXRhLT5i cmVha3BvaW50X2FkZHIgPT0gMCkKKyAgICB7CisgICAgICBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKnJlZ19zeW1ib2w7CisKKyAgICAgIC8qIExvb2t1cCB0 aGUgcmVnaXN0cmF0aW9uIHN5bWJvbC4gIElmIGl0IGlzIG1pc3NpbmcsIHRo ZW4gd2UgYXNzdW1lCisJIHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBKSVQu ICAqLworICAgICAgcmVnX3N5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJv bCAoaml0X2JyZWFrX25hbWUsIE5VTEwsIE5VTEwpOworICAgICAgaWYgKHJl Z19zeW1ib2wgPT0gTlVMTCkKKwlyZXR1cm4gMTsKKyAgICAgIGluZl9kYXRh LT5icmVha3BvaW50X2FkZHIgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAocmVn X3N5bWJvbCk7CisgICAgICBpZiAoaW5mX2RhdGEtPmJyZWFrcG9pbnRfYWRk ciA9PSAwKQorCXJldHVybiAyOworICAgIH0KKyAgZWxzZQorICAgIHJldHVy biAwOworCisgIGlmIChqaXRfZGVidWcpCisgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorCQkJImppdF9icmVha3BvaW50X3JlX3NldF9p bnRlcm5hbCwgIgorCQkJImJyZWFrcG9pbnRfYWRkciA9ICVzXG4iLAorCQkJ cGFkZHJlc3MgKGdkYmFyY2gsIGluZl9kYXRhLT5icmVha3BvaW50X2FkZHIp KTsKKworICAvKiBQdXQgYSBicmVha3BvaW50IGluIHRoZSByZWdpc3RyYXRp b24gc3ltYm9sLiAgKi8KKyAgY3JlYXRlX2ppdF9ldmVudF9icmVha3BvaW50 IChnZGJhcmNoLCBpbmZfZGF0YS0+YnJlYWtwb2ludF9hZGRyKTsKKworICBy ZXR1cm4gMDsKK30KKworLyogUmVnaXN0ZXIgYW55IGFscmVhZHkgY3JlYXRl ZCB0cmFuc2xhdGlvbnMuICAqLwogCiBzdGF0aWMgdm9pZAogaml0X2luZmVy aW9yX2luaXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQogewotICBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKnJlZ19zeW1ib2w7Ci0gIHN0cnVjdCBtaW5p bWFsX3N5bWJvbCAqZGVzY19zeW1ib2w7Ci0gIENPUkVfQUREUiByZWdfYWRk cjsKICAgc3RydWN0IGppdF9kZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgIHN0 cnVjdCBqaXRfY29kZV9lbnRyeSBjdXJfZW50cnk7CisgIHN0cnVjdCBqaXRf aW5mZXJpb3JfZGF0YSAqaW5mX2RhdGE7CiAgIENPUkVfQUREUiBjdXJfZW50 cnlfYWRkcjsKIAogICBpZiAoaml0X2RlYnVnKQotICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLQkJCSJqaXRfaW5mZXJpb3JfaW5pdCwg cmVnaXN0ZXJpbmdfY29kZSA9ICVkXG4iLAotCQkJcmVnaXN0ZXJpbmdfY29k ZSk7Ci0KLSAgLyogV2hlbiB3ZSByZWdpc3RlciBjb2RlLCBHREIgcmVzZXRz IGl0cyBicmVha3BvaW50cyBpbiBjYXNlIHN5bWJvbHMgaGF2ZQotICAgICBj aGFuZ2VkLiAgVGhhdCBpbiB0dXJuIGNhbGxzIHRoaXMgaGFuZGxlciwgd2hp Y2ggbWFrZXMgdXMgbG9vayBmb3IgbmV3Ci0gICAgIGNvZGUgYWdhaW4uICBU byBhdm9pZCBiZWluZyByZS1lbnRlcmVkLCB3ZSBjaGVjayB0aGlzIGZsYWcu ICAqLwotICBpZiAocmVnaXN0ZXJpbmdfY29kZSkKLSAgICByZXR1cm47Cisg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaml0X2luZmVy aW9yX2luaXRcbiIpOwogCi0gIC8qIExvb2t1cCB0aGUgcmVnaXN0cmF0aW9u IHN5bWJvbC4gIElmIGl0IGlzIG1pc3NpbmcsIHRoZW4gd2UgYXNzdW1lIHdl IGFyZQotICAgICBub3QgYXR0YWNoZWQgdG8gYSBKSVQuICAqLwotICByZWdf c3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChqaXRfYnJlYWtfbmFt ZSwgTlVMTCwgTlVMTCk7Ci0gIGlmIChyZWdfc3ltYm9sID09IE5VTEwpCi0g ICAgcmV0dXJuOwotICByZWdfYWRkciA9IFNZTUJPTF9WQUxVRV9BRERSRVNT IChyZWdfc3ltYm9sKTsKLSAgaWYgKHJlZ19hZGRyID09IDApCisgIGluZl9k YXRhID0gZ2V0X2ppdF9pbmZlcmlvcl9kYXRhICgpOworICBpZiAoaml0X2Jy ZWFrcG9pbnRfcmVfc2V0X2ludGVybmFsIChnZGJhcmNoLCBpbmZfZGF0YSkg IT0gMCkKICAgICByZXR1cm47CiAKLSAgaWYgKGppdF9kZWJ1ZykKLSAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJqaXRfaW5mZXJpb3Jf aW5pdCwgcmVnX2FkZHIgPSAlc1xuIiwKLQkJCXBhZGRyZXNzIChnZGJhcmNo LCByZWdfYWRkcikpOworICBpZiAoaW5mX2RhdGEtPmRlc2NyaXB0b3JfYWRk ciA9PSAwKQorICAgIHsKKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq ZGVzY19zeW1ib2w7CiAKLSAgLyogTG9va3VwIHRoZSBkZXNjcmlwdG9yIHN5 bWJvbCBhbmQgY2FjaGUgdGhlIGFkZHIuICBJZiBpdCBpcyBtaXNzaW5nLCB3 ZQotICAgICBhc3N1bWUgd2UgYXJlIG5vdCBhdHRhY2hlZCB0byBhIEpJVCBh bmQgcmV0dXJuIGVhcmx5LiAgKi8KLSAgZGVzY19zeW1ib2wgPSBsb29rdXBf bWluaW1hbF9zeW1ib2wgKGppdF9kZXNjcmlwdG9yX25hbWUsIE5VTEwsIE5V TEwpOwotICBpZiAoZGVzY19zeW1ib2wgPT0gTlVMTCkKLSAgICByZXR1cm47 Ci0gIGppdF9kZXNjcmlwdG9yX2FkZHIgPSBTWU1CT0xfVkFMVUVfQUREUkVT UyAoZGVzY19zeW1ib2wpOwotICBpZiAoaml0X2Rlc2NyaXB0b3JfYWRkciA9 PSAwKQotICAgIHJldHVybjsKKyAgICAgIC8qIExvb2t1cCB0aGUgZGVzY3Jp cHRvciBzeW1ib2wgYW5kIGNhY2hlIHRoZSBhZGRyLiAgSWYgaXQgaXMKKwkg bWlzc2luZywgd2UgYXNzdW1lIHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBK SVQgYW5kIHJldHVybiBlYXJseS4gICovCisgICAgICBkZXNjX3N5bWJvbCA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoaml0X2Rlc2NyaXB0b3JfbmFtZSwg TlVMTCwgTlVMTCk7CisgICAgICBpZiAoZGVzY19zeW1ib2wgPT0gTlVMTCkK KwlyZXR1cm47CisKKyAgICAgIGluZl9kYXRhLT5kZXNjcmlwdG9yX2FkZHIg PSBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZGVzY19zeW1ib2wpOworICAgICAg aWYgKGluZl9kYXRhLT5kZXNjcmlwdG9yX2FkZHIgPT0gMCkKKwlyZXR1cm47 CisgICAgfQogCiAgIGlmIChqaXRfZGVidWcpCiAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotCQkJImppdF9pbmZlcmlvcl9pbml0LCBq aXRfZGVzY3JpcHRvcl9hZGRyID0gJXNcbiIsCi0JCQlwYWRkcmVzcyAoZ2Ri YXJjaCwgaml0X2Rlc2NyaXB0b3JfYWRkcikpOworCQkJImppdF9pbmZlcmlv cl9pbml0LCBkZXNjcmlwdG9yX2FkZHIgPSAlc1xuIiwKKwkJCXBhZGRyZXNz IChnZGJhcmNoLCBpbmZfZGF0YS0+ZGVzY3JpcHRvcl9hZGRyKSk7CiAKICAg LyogUmVhZCB0aGUgZGVzY3JpcHRvciBzbyB3ZSBjYW4gY2hlY2sgdGhlIHZl cnNpb24gbnVtYmVyIGFuZCBsb2FkCiAgICAgIGFueSBhbHJlYWR5IEpJVGVk IGZ1bmN0aW9ucy4gICovCi0gIGppdF9yZWFkX2Rlc2NyaXB0b3IgKGdkYmFy Y2gsICZkZXNjcmlwdG9yKTsKKyAgaml0X3JlYWRfZGVzY3JpcHRvciAoZ2Ri YXJjaCwgJmRlc2NyaXB0b3IsIGluZl9kYXRhLT5kZXNjcmlwdG9yX2FkZHIp OwogCiAgIC8qIENoZWNrIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGFncmVl cyB3aXRoIHRoYXQgd2Ugc3VwcG9ydC4gICovCiAgIGlmIChkZXNjcmlwdG9y LnZlcnNpb24gIT0gMSkKICAgICBlcnJvciAoXygiVW5zdXBwb3J0ZWQgSklU IHByb3RvY29sIHZlcnNpb24gaW4gZGVzY3JpcHRvciEiKSk7CiAKLSAgLyog UHV0IGEgYnJlYWtwb2ludCBpbiB0aGUgcmVnaXN0cmF0aW9uIHN5bWJvbC4g ICovCi0gIGNyZWF0ZV9qaXRfZXZlbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwg cmVnX2FkZHIpOwotCiAgIC8qIElmIHdlJ3ZlIGF0dGFjaGVkIHRvIGEgcnVu bmluZyBwcm9ncmFtLCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBkZXNjcmlwdG9y CiAgICAgIHRvIHJlZ2lzdGVyIGFueSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGFs cmVhZHkgZ2VuZXJhdGVkLiAgKi8KICAgZm9yIChjdXJfZW50cnlfYWRkciA9 IGRlc2NyaXB0b3IuZmlyc3RfZW50cnk7CkBAIC00MTYsNyArNDQxLDggQEAg aml0X2luZmVyaW9yX2NyZWF0ZWRfaG9vayAodm9pZCkKIHZvaWQKIGppdF9i cmVha3BvaW50X3JlX3NldCAodm9pZCkKIHsKLSAgaml0X2luZmVyaW9yX2lu aXQgKHRhcmdldF9nZGJhcmNoKTsKKyAgaml0X2JyZWFrcG9pbnRfcmVfc2V0 X2ludGVybmFsICh0YXJnZXRfZ2RiYXJjaCwKKwkJCQkgIGdldF9qaXRfaW5m ZXJpb3JfZGF0YSAoKSk7CiB9CiAKIC8qIFdyYXBwZXIgdG8gbWF0Y2ggdGhl IG9ic2VydmVyIGZ1bmN0aW9uIHBvaW50ZXIgcHJvdG90eXBlLiAgKi8KQEAg LTQyNCw2ICs0NTAsMTYgQEAgaml0X2JyZWFrcG9pbnRfcmVfc2V0ICh2b2lk KQogc3RhdGljIHZvaWQKIGppdF9pbmZlcmlvcl9jcmVhdGVkX29ic2VydmVy IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb2JqZmlsZSwgaW50IGZyb21fdHR5KQog eworICBzdHJ1Y3Qgaml0X2luZmVyaW9yX2RhdGEgKmluZl9kYXRhOworCisg IC8qIEZvcmNlIGppdF9pbmZlcmlvcl9pbml0IHRvIHJlLWxvb2t1cCBvZiBq aXQgc3ltYm9sIGFkZHJlc3Nlcy4gICovCisgIGluZl9kYXRhID0gaW5mZXJp b3JfZGF0YSAoY3VycmVudF9pbmZlcmlvciAoKSwgaml0X2luZmVyaW9yX2Rh dGEpOworICBpbmZfZGF0YS0+YnJlYWtwb2ludF9hZGRyID0gMDsKKyAgaW5m X2RhdGEtPmRlc2NyaXB0b3JfYWRkciA9IDA7CisKKyAgLyogUmVtb3ZlIGFu eSBleGlzdGluZyBKSVQgYnJlYWtwb2ludChzKS4gICovCisgIHJlbW92ZV9q aXRfZXZlbnRfYnJlYWtwb2ludHMgKCk7CisKICAgaml0X2luZmVyaW9yX2lu aXQgKHRhcmdldF9nZGJhcmNoKTsKIH0KIApAQCAtNDM3LDEwICs0NzMsNiBA QCBqaXRfaW5mZXJpb3JfZXhpdF9ob29rIChzdHJ1Y3QgaW5mZXJpb3IgCiAg IHN0cnVjdCBvYmpmaWxlICpvYmpmOwogICBzdHJ1Y3Qgb2JqZmlsZSAqdGVt cDsKIAotICAvKiBXZSBuZWVkIHRvIHJlc2V0IHRoZSBkZXNjcmlwdG9yIGFk ZHIgc28gdGhhdCBuZXh0IHRpbWUgd2UgbG9hZCB1cCB0aGUKLSAgICAgaW5m ZXJpb3Igd2UgbG9vayBmb3IgaXQgYWdhaW4uICAqLwotICBqaXRfZGVzY3Jp cHRvcl9hZGRyID0gMDsKLQogICBBTExfT0JKRklMRVNfU0FGRSAob2JqZiwg dGVtcCkKICAgICBpZiAob2JqZmlsZV9kYXRhIChvYmpmLCBqaXRfb2JqZmls ZV9kYXRhKSAhPSBOVUxMKQogICAgICAgaml0X3VucmVnaXN0ZXJfY29kZSAo b2JqZik7CkBAIC00NTUsNyArNDg3LDggQEAgaml0X2V2ZW50X2hhbmRsZXIg KHN0cnVjdCBnZGJhcmNoICpnZGJhcgogICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZjsKIAogICAvKiBSZWFkIHRoZSBkZXNjcmlwdG9yIGZyb20gcmVtb3RlIG1l bW9yeS4gICovCi0gIGppdF9yZWFkX2Rlc2NyaXB0b3IgKGdkYmFyY2gsICZk ZXNjcmlwdG9yKTsKKyAgaml0X3JlYWRfZGVzY3JpcHRvciAoZ2RiYXJjaCwg JmRlc2NyaXB0b3IsCisJCSAgICAgICBnZXRfaml0X2luZmVyaW9yX2RhdGEg KCktPmRlc2NyaXB0b3JfYWRkcik7CiAgIGVudHJ5X2FkZHIgPSBkZXNjcmlw dG9yLnJlbGV2YW50X2VudHJ5OwogCiAgIC8qIERvIHRoZSBjb3JyZXNwb25k aW5nIGFjdGlvbi4gICovCkBAIC01MDEsNCArNTM0LDYgQEAgX2luaXRpYWxp emVfaml0ICh2b2lkKQogICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3JfY3Jl YXRlZCAoaml0X2luZmVyaW9yX2NyZWF0ZWRfb2JzZXJ2ZXIpOwogICBvYnNl cnZlcl9hdHRhY2hfaW5mZXJpb3JfZXhpdCAoaml0X2luZmVyaW9yX2V4aXRf aG9vayk7CiAgIGppdF9vYmpmaWxlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxl X2RhdGEgKCk7CisgIGppdF9pbmZlcmlvcl9kYXRhID0KKyAgICByZWdpc3Rl cl9pbmZlcmlvcl9kYXRhX3dpdGhfY2xlYW51cCAoaml0X2luZmVyaW9yX2Rh dGFfY2xlYW51cCk7CiB9Cg== --0016363b8b2c4d7d42049adaf247--