From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29796 invoked by alias); 22 Jul 2009 20:24:59 -0000 Received: (qmail 29786 invoked by uid 22791); 22 Jul 2009 20:24:57 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 22 Jul 2009 20:24:50 +0000 Received: from zps19.corp.google.com (zps19.corp.google.com [172.25.146.19]) by smtp-out.google.com with ESMTP id n6MKOmki005366 for ; Wed, 22 Jul 2009 13:24:48 -0700 Received: from qyk4 (qyk4.prod.google.com [10.241.83.132]) by zps19.corp.google.com with ESMTP id n6MKOjg3024147 for ; Wed, 22 Jul 2009 13:24:46 -0700 Received: by qyk4 with SMTP id 4so599212qyk.18 for ; Wed, 22 Jul 2009 13:24:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.96.149 with SMTP id h21mr265517qcn.53.1248294285361; Wed, 22 Jul 2009 13:24:45 -0700 (PDT) In-Reply-To: References: <20090721223129.85D1F76BC0@localhost> Date: Wed, 22 Jul 2009 23:12:00 -0000 Message-ID: <8ac60eac0907221324n28e246c1k5e62f79973955ae@mail.gmail.com> Subject: Re: [patch] Speed up dwarf2_frame_find_fde From: Paul Pluzhnikov To: Andreas Schwab Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0016363ba620744305046f5129d2 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: 2009-07/txt/msg00570.txt.bz2 --0016363ba620744305046f5129d2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 800 On Wed, Jul 22, 2009 at 1:54 AM, Andreas Schwab wrote: >> + return cie_pointer - cie->cie_pointer; > > This can overflow. Fixed in the attached patch. Thanks, -- Paul Pluzhnikov 2009-07-22 Paul Pluzhnikov * dwarf2-frame.c (struct dwarf2_cie): Remove 'next'. (struct dwarf2_cie_table): New. (struct dwarf2_fde): Remove 'next'. (struct dwarf2_fde_table): New. (struct comp_unit): Remove 'cie'. (bsearch_cie_cmp, bsearch_fde_cmp): New function. (find_cie, dwarf2_frame_find_fde): Use bsearch. (add_cie, add_fde): Use array instead of linked list. (decode_frame_entry, decode_frame_entry_1): New parameters. (qsort_fde_cmp): New function. (dwarf2_build_frame_info): Adjust. --0016363ba620744305046f5129d2 Content-Type: text/plain; charset=US-ASCII; name="gdb-find_fde-20090722.txt" Content-Disposition: attachment; filename="gdb-find_fde-20090722.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fxgi30bc0 Content-length: 17292 SW5kZXg6IGR3YXJmMi1mcmFtZS5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZHdhcmYyLWZyYW1lLmMsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuOTMKZGlmZiAtdSAtcCAtdSAtcjEuOTMg ZHdhcmYyLWZyYW1lLmMKLS0tIGR3YXJmMi1mcmFtZS5jCTEwIEp1bCAyMDA5 IDE1OjI3OjAyIC0wMDAwCTEuOTMKKysrIGR3YXJmMi1mcmFtZS5jCTIyIEp1 bCAyMDA5IDIwOjE3OjEzIC0wMDAwCkBAIC04NSw4ICs4NSwxMiBAQCBzdHJ1 Y3QgZHdhcmYyX2NpZQogCiAgIC8qIFRoZSB2ZXJzaW9uIHJlY29yZGVkIGlu IHRoZSBDSUUuICAqLwogICB1bnNpZ25lZCBjaGFyIHZlcnNpb247Cit9Owog Ci0gIHN0cnVjdCBkd2FyZjJfY2llICpuZXh0Oworc3RydWN0IGR3YXJmMl9j aWVfdGFibGUKK3sKKyAgaW50IG51bV9lbnRyaWVzOworICBzdHJ1Y3QgZHdh cmYyX2NpZSAqKmVudHJpZXM7CiB9OwogCiAvKiBGcmFtZSBEZXNjcmlwdGlv biBFbnRyeSAoRkRFKS4gICovCkBAIC0xMDksOCArMTEzLDEyIEBAIHN0cnVj dCBkd2FyZjJfZmRlCiAgIC8qIFRydWUgaWYgdGhpcyBGREUgaXMgcmVhZCBm cm9tIGEgLmVoX2ZyYW1lIGluc3RlYWQgb2YgYSAuZGVidWdfZnJhbWUKICAg ICAgc2VjdGlvbi4gICovCiAgIHVuc2lnbmVkIGNoYXIgZWhfZnJhbWVfcDsK K307CiAKLSAgc3RydWN0IGR3YXJmMl9mZGUgKm5leHQ7CitzdHJ1Y3QgZHdh cmYyX2ZkZV90YWJsZQoreworICBpbnQgbnVtX2VudHJpZXM7CisgIHN0cnVj dCBkd2FyZjJfZmRlICoqZW50cmllczsKIH07CiAKIC8qIEEgbWluaW1hbCBk ZWNvZGluZyBvZiBEV0FSRjIgY29tcGlsYXRpb24gdW5pdHMuICBXZSBvbmx5 IGRlY29kZQpAQCAtMTIzLDkgKzEzMSw2IEBAIHN0cnVjdCBjb21wX3VuaXQK IAogICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKIAotICAvKiBMaW5rZWQg bGlzdCBvZiBDSUVzIGZvciB0aGlzIG9iamVjdC4gICovCi0gIHN0cnVjdCBk d2FyZjJfY2llICpjaWU7Ci0KICAgLyogUG9pbnRlciB0byB0aGUgLmRlYnVn X2ZyYW1lIHNlY3Rpb24gbG9hZGVkIGludG8gbWVtb3J5LiAgKi8KICAgZ2Ri X2J5dGUgKmR3YXJmX2ZyYW1lX2J1ZmZlcjsKIApAQCAtMTQ2NCwzMSArMTQ2 OSw1NiBAQCByZWFkX2VuY29kZWRfdmFsdWUgKHN0cnVjdCBjb21wX3VuaXQg KnVuCiB9CiAMCiAKLS8qIEdDQyB1c2VzIGEgc2luZ2xlIENJRSBmb3IgYWxs IEZERXMgaW4gYSAuZGVidWdfZnJhbWUgc2VjdGlvbi4KLSAgIFRoYXQncyB3 aHkgd2UgdXNlIGEgc2ltcGxlIGxpbmtlZCBsaXN0IGhlcmUuICAqLwotCi1z dGF0aWMgc3RydWN0IGR3YXJmMl9jaWUgKgotZmluZF9jaWUgKHN0cnVjdCBj b21wX3VuaXQgKnVuaXQsIFVMT05HRVNUIGNpZV9wb2ludGVyKQorc3RhdGlj IGludAorYnNlYXJjaF9jaWVfY21wIChjb25zdCB2b2lkICprZXksIGNvbnN0 IHZvaWQgKmVsZW1lbnQpCiB7Ci0gIHN0cnVjdCBkd2FyZjJfY2llICpjaWUg PSB1bml0LT5jaWU7CisgIFVMT05HRVNUIGNpZV9wb2ludGVyID0gKihVTE9O R0VTVCAqKSBrZXk7CisgIHN0cnVjdCBkd2FyZjJfY2llICpjaWUgPSAqKHN0 cnVjdCBkd2FyZjJfY2llICoqKSBlbGVtZW50OwogCi0gIHdoaWxlIChjaWUp Ci0gICAgewotICAgICAgaWYgKGNpZS0+Y2llX3BvaW50ZXIgPT0gY2llX3Bv aW50ZXIpCi0JcmV0dXJuIGNpZTsKKyAgaWYgKGNpZV9wb2ludGVyID09IGNp ZS0+Y2llX3BvaW50ZXIpCisgICAgcmV0dXJuIDA7CiAKLSAgICAgIGNpZSA9 IGNpZS0+bmV4dDsKLSAgICB9CisgIHJldHVybiAoY2llX3BvaW50ZXIgPCBj aWUtPmNpZV9wb2ludGVyKSA/IC0xIDogMTsKK30KKworLyogRmluZCBDSUUg d2l0aCB0aGUgZ2l2ZW4gQ0lFX1BPSU5URVIgaW4gQ0lFX1RBQkxFLiAgKi8K K3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2NpZSAqCitmaW5kX2NpZSAoc3RydWN0 IGR3YXJmMl9jaWVfdGFibGUgKmNpZV90YWJsZSwgVUxPTkdFU1QgY2llX3Bv aW50ZXIpCit7CisgIHN0cnVjdCBkd2FyZjJfY2llICoqcF9jaWU7CiAKKyAg cF9jaWUgPSBic2VhcmNoICgmY2llX3BvaW50ZXIsIGNpZV90YWJsZS0+ZW50 cmllcywgY2llX3RhYmxlLT5udW1fZW50cmllcywKKyAgICAgICAgICAgICAg ICAgICBzaXplb2YgKGNpZV90YWJsZS0+ZW50cmllc1swXSksIGJzZWFyY2hf Y2llX2NtcCk7CisgIGlmIChwX2NpZSAhPSBOVUxMKQorICAgIHJldHVybiAq cF9jaWU7CiAgIHJldHVybiBOVUxMOwogfQogCisvKiBBZGQgYSBwb2ludGVy IHRvIG5ldyBDSUUgdG8gdGhlIENJRV9UQUJMRSwgYWxsb2NhdGluZyBzcGFj ZSBmb3IgaXQuICAqLwogc3RhdGljIHZvaWQKLWFkZF9jaWUgKHN0cnVjdCBj b21wX3VuaXQgKnVuaXQsIHN0cnVjdCBkd2FyZjJfY2llICpjaWUpCithZGRf Y2llIChzdHJ1Y3QgZHdhcmYyX2NpZV90YWJsZSAqY2llX3RhYmxlLCBzdHJ1 Y3QgZHdhcmYyX2NpZSAqY2llKQogewotICBjaWUtPm5leHQgPSB1bml0LT5j aWU7Ci0gIHVuaXQtPmNpZSA9IGNpZTsKLSAgY2llLT51bml0ID0gdW5pdDsK KyAgY29uc3QgaW50IG4gPSBjaWVfdGFibGUtPm51bV9lbnRyaWVzOworCisg IGdkYl9hc3NlcnQgKG4gPCAxCisgICAgICAgICAgICAgIHx8IGNpZV90YWJs ZS0+ZW50cmllc1tuIC0gMV0tPmNpZV9wb2ludGVyIDwgY2llLT5jaWVfcG9p bnRlcik7CisKKyAgY2llX3RhYmxlLT5lbnRyaWVzID0KKyAgICAgIHhyZWFs bG9jIChjaWVfdGFibGUtPmVudHJpZXMsIChuICsgMSkgKiBzaXplb2YgKGNp ZV90YWJsZS0+ZW50cmllc1swXSkpOworICBjaWVfdGFibGUtPmVudHJpZXNb bl0gPSBjaWU7CisgIGNpZV90YWJsZS0+bnVtX2VudHJpZXMgPSBuICsgMTsK K30KKworc3RhdGljIGludAorYnNlYXJjaF9mZGVfY21wIChjb25zdCB2b2lk ICprZXksIGNvbnN0IHZvaWQgKmVsZW1lbnQpCit7CisgIENPUkVfQUREUiBz ZWVrX3BjID0gKihDT1JFX0FERFIgKikga2V5OworICBzdHJ1Y3QgZHdhcmYy X2ZkZSAqZmRlID0gKihzdHJ1Y3QgZHdhcmYyX2ZkZSAqKikgZWxlbWVudDsK KyAgaWYgKHNlZWtfcGMgPCBmZGUtPmluaXRpYWxfbG9jYXRpb24pCisgICAg cmV0dXJuIC0xOworICBpZiAoc2Vla19wYyA8IGZkZS0+aW5pdGlhbF9sb2Nh dGlvbiArIGZkZS0+YWRkcmVzc19yYW5nZSkKKyAgICByZXR1cm4gMDsKKyAg cmV0dXJuIDE7CiB9CiAKIC8qIEZpbmQgdGhlIEZERSBmb3IgKlBDLiAgUmV0 dXJuIGEgcG9pbnRlciB0byB0aGUgRkRFLCBhbmQgc3RvcmUgdGhlCkBAIC0x NTAxLDM3ICsxNTMxLDQ3IEBAIGR3YXJmMl9mcmFtZV9maW5kX2ZkZSAoQ09S RV9BRERSICpwYykKIAogICBBTExfT0JKRklMRVMgKG9iamZpbGUpCiAgICAg ewotICAgICAgc3RydWN0IGR3YXJmMl9mZGUgKmZkZTsKKyAgICAgIHN0cnVj dCBkd2FyZjJfZmRlX3RhYmxlICpmZGVfdGFibGU7CisgICAgICBzdHJ1Y3Qg ZHdhcmYyX2ZkZSAqKnBfZmRlOwogICAgICAgQ09SRV9BRERSIG9mZnNldDsK KyAgICAgIENPUkVfQUREUiBzZWVrX3BjOwogCi0gICAgICBmZGUgPSBvYmpm aWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9mcmFtZV9vYmpmaWxlX2RhdGEp OwotICAgICAgaWYgKGZkZSA9PSBOVUxMKQorICAgICAgZmRlX3RhYmxlID0g b2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfZnJhbWVfb2JqZmlsZV9k YXRhKTsKKyAgICAgIGlmIChmZGVfdGFibGUgPT0gTlVMTCkKIAljb250aW51 ZTsKIAogICAgICAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2VjdGlvbl9vZmZz ZXRzKTsKICAgICAgIG9mZnNldCA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0 aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKIAotICAg ICAgd2hpbGUgKGZkZSkKLQl7Ci0JICBpZiAoKnBjID49IGZkZS0+aW5pdGlh bF9sb2NhdGlvbiArIG9mZnNldAotCSAgICAgICYmICpwYyA8IGZkZS0+aW5p dGlhbF9sb2NhdGlvbiArIG9mZnNldCArIGZkZS0+YWRkcmVzc19yYW5nZSkK LQkgICAgewotCSAgICAgICpwYyA9IGZkZS0+aW5pdGlhbF9sb2NhdGlvbiAr IG9mZnNldDsKLQkgICAgICByZXR1cm4gZmRlOwotCSAgICB9Ci0KLQkgIGZk ZSA9IGZkZS0+bmV4dDsKLQl9CisgICAgICBnZGJfYXNzZXJ0IChmZGVfdGFi bGUtPm51bV9lbnRyaWVzID4gMCk7CisgICAgICBpZiAoKnBjIDwgb2Zmc2V0 ICsgZmRlX3RhYmxlLT5lbnRyaWVzWzBdLT5pbml0aWFsX2xvY2F0aW9uKQor ICAgICAgICBjb250aW51ZTsKKworICAgICAgc2Vla19wYyA9ICpwYyAtIG9m ZnNldDsKKyAgICAgIHBfZmRlID0gYnNlYXJjaCAoJnNlZWtfcGMsIGZkZV90 YWJsZS0+ZW50cmllcywgZmRlX3RhYmxlLT5udW1fZW50cmllcywKKyAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChmZGVfdGFibGUtPmVudHJpZXNb MF0pLCBic2VhcmNoX2ZkZV9jbXApOworICAgICAgaWYgKHBfZmRlICE9IE5V TEwpCisgICAgICAgIHsKKyAgICAgICAgICAqcGMgPSAoKnBfZmRlKS0+aW5p dGlhbF9sb2NhdGlvbiArIG9mZnNldDsKKyAgICAgICAgICByZXR1cm4gKnBf ZmRlOworICAgICAgICB9CiAgICAgfQotCiAgIHJldHVybiBOVUxMOwogfQog CisvKiBBZGQgYSBwb2ludGVyIHRvIG5ldyBGREUgdG8gdGhlIEZERV9UQUJM RSwgYWxsb2NhdGluZyBzcGFjZSBmb3IgaXQuICAqLwogc3RhdGljIHZvaWQK LWFkZF9mZGUgKHN0cnVjdCBjb21wX3VuaXQgKnVuaXQsIHN0cnVjdCBkd2Fy ZjJfZmRlICpmZGUpCithZGRfZmRlIChzdHJ1Y3QgZHdhcmYyX2ZkZV90YWJs ZSAqZmRlX3RhYmxlLCBzdHJ1Y3QgZHdhcmYyX2ZkZSAqZmRlKQogewotICBm ZGUtPm5leHQgPSBvYmpmaWxlX2RhdGEgKHVuaXQtPm9iamZpbGUsIGR3YXJm Ml9mcmFtZV9vYmpmaWxlX2RhdGEpOwotICBzZXRfb2JqZmlsZV9kYXRhICh1 bml0LT5vYmpmaWxlLCBkd2FyZjJfZnJhbWVfb2JqZmlsZV9kYXRhLCBmZGUp OworICBpZiAoZmRlLT5hZGRyZXNzX3JhbmdlID09IDApCisgICAgLyogRGlz Y2FyZCB1c2VsZXNzIEZERXMuICAqLworICAgIHJldHVybjsKKworICBmZGVf dGFibGUtPm51bV9lbnRyaWVzICs9IDE7CisgIGZkZV90YWJsZS0+ZW50cmll cyA9CisgICAgICB4cmVhbGxvYyAoZmRlX3RhYmxlLT5lbnRyaWVzLAorICAg ICAgICAgICAgICAgIGZkZV90YWJsZS0+bnVtX2VudHJpZXMgKiBzaXplb2Yg KGZkZV90YWJsZS0+ZW50cmllc1swXSkpOworICBmZGVfdGFibGUtPmVudHJp ZXNbZmRlX3RhYmxlLT5udW1fZW50cmllcyAtIDFdID0gZmRlOwogfQogCiAj aWZkZWYgQ0NfSEFTX0xPTkdfTE9ORwpAQCAtMTU0MSwxMiArMTU4MSwxNiBA QCBhZGRfZmRlIChzdHJ1Y3QgY29tcF91bml0ICp1bml0LCBzdHJ1Y3QgCiAj ZW5kaWYKIAogc3RhdGljIGdkYl9ieXRlICpkZWNvZGVfZnJhbWVfZW50cnkg KHN0cnVjdCBjb21wX3VuaXQgKnVuaXQsIGdkYl9ieXRlICpzdGFydCwKLQkJ CQkgICAgIGludCBlaF9mcmFtZV9wKTsKKwkJCQkgICAgIGludCBlaF9mcmFt ZV9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkd2FyZjJfY2llX3RhYmxlICpjaWVfdGFibGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR3YXJmMl9mZGVf dGFibGUgKmZkZV90YWJsZSk7CiAKIC8qIERlY29kZSB0aGUgbmV4dCBDSUUg b3IgRkRFLiAgUmV0dXJuIE5VTEwgaWYgaW52YWxpZCBpbnB1dCwgb3RoZXJ3 aXNlCiAgICB0aGUgbmV4dCBieXRlIHRvIGJlIHByb2Nlc3NlZC4gICovCiBz dGF0aWMgZ2RiX2J5dGUgKgotZGVjb2RlX2ZyYW1lX2VudHJ5XzEgKHN0cnVj dCBjb21wX3VuaXQgKnVuaXQsIGdkYl9ieXRlICpzdGFydCwgaW50IGVoX2Zy YW1lX3ApCitkZWNvZGVfZnJhbWVfZW50cnlfMSAoc3RydWN0IGNvbXBfdW5p dCAqdW5pdCwgZ2RiX2J5dGUgKnN0YXJ0LCBpbnQgZWhfZnJhbWVfcCwKKyAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHdhcmYyX2NpZV90YWJsZSAq Y2llX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkd2Fy ZjJfZmRlX3RhYmxlICpmZGVfdGFibGUpCiB7CiAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAodW5pdC0+b2JqZmlsZSk7 CiAgIGdkYl9ieXRlICpidWYsICplbmQ7CkBAIC0xNjAxLDcgKzE2NDUsNyBA QCBkZWNvZGVfZnJhbWVfZW50cnlfMSAoc3RydWN0IGNvbXBfdW5pdCAqCiAg ICAgICBjaWVfcG9pbnRlciA9IHN0YXJ0IC0gdW5pdC0+ZHdhcmZfZnJhbWVf YnVmZmVyOwogCiAgICAgICAvKiBDaGVjayB3aGV0aGVyIHdlJ3ZlIGFscmVh ZHkgcmVhZCBpdC4gICovCi0gICAgICBpZiAoZmluZF9jaWUgKHVuaXQsIGNp ZV9wb2ludGVyKSkKKyAgICAgIGlmIChmaW5kX2NpZSAoY2llX3RhYmxlLCBj aWVfcG9pbnRlcikpCiAJcmV0dXJuIGVuZDsKIAogICAgICAgY2llID0gKHN0 cnVjdCBkd2FyZjJfY2llICopCkBAIC0xNzM4LDggKzE3ODIsOSBAQCBkZWNv ZGVfZnJhbWVfZW50cnlfMSAoc3RydWN0IGNvbXBfdW5pdCAqCiAKICAgICAg IGNpZS0+aW5pdGlhbF9pbnN0cnVjdGlvbnMgPSBidWY7CiAgICAgICBjaWUt PmVuZCA9IGVuZDsKKyAgICAgIGNpZS0+dW5pdCA9IHVuaXQ7CiAKLSAgICAg IGFkZF9jaWUgKHVuaXQsIGNpZSk7CisgICAgICBhZGRfY2llIChjaWVfdGFi bGUsIGNpZSk7CiAgICAgfQogICBlbHNlCiAgICAgewpAQCAtMTc2MywxMiAr MTgwOCwxMiBAQCBkZWNvZGVfZnJhbWVfZW50cnlfMSAoc3RydWN0IGNvbXBf dW5pdCAqCiAgICAgICBmZGUgPSAoc3RydWN0IGR3YXJmMl9mZGUgKikKIAlv YnN0YWNrX2FsbG9jICgmdW5pdC0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr LAogCQkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2ZkZSkpOwotICAg ICAgZmRlLT5jaWUgPSBmaW5kX2NpZSAodW5pdCwgY2llX3BvaW50ZXIpOwor ICAgICAgZmRlLT5jaWUgPSBmaW5kX2NpZSAoY2llX3RhYmxlLCBjaWVfcG9p bnRlcik7CiAgICAgICBpZiAoZmRlLT5jaWUgPT0gTlVMTCkKIAl7CiAJICBk ZWNvZGVfZnJhbWVfZW50cnkgKHVuaXQsIHVuaXQtPmR3YXJmX2ZyYW1lX2J1 ZmZlciArIGNpZV9wb2ludGVyLAotCQkJICAgICAgZWhfZnJhbWVfcCk7Ci0J ICBmZGUtPmNpZSA9IGZpbmRfY2llICh1bml0LCBjaWVfcG9pbnRlcik7CisJ CQkgICAgICBlaF9mcmFtZV9wLCBjaWVfdGFibGUsIGZkZV90YWJsZSk7CisJ ICBmZGUtPmNpZSA9IGZpbmRfY2llIChjaWVfdGFibGUsIGNpZV9wb2ludGVy KTsKIAl9CiAKICAgICAgIGdkYl9hc3NlcnQgKGZkZS0+Y2llICE9IE5VTEwp OwpAQCAtMTgwMiw3ICsxODQ3LDcgQEAgZGVjb2RlX2ZyYW1lX2VudHJ5XzEg KHN0cnVjdCBjb21wX3VuaXQgKgogCiAgICAgICBmZGUtPmVoX2ZyYW1lX3Ag PSBlaF9mcmFtZV9wOwogCi0gICAgICBhZGRfZmRlICh1bml0LCBmZGUpOwor ICAgICAgYWRkX2ZkZSAoZmRlX3RhYmxlLCBmZGUpOwogICAgIH0KIAogICBy ZXR1cm4gZW5kOwpAQCAtMTgxMCw3ICsxODU1LDkgQEAgZGVjb2RlX2ZyYW1l X2VudHJ5XzEgKHN0cnVjdCBjb21wX3VuaXQgKgogCiAvKiBSZWFkIGEgQ0lF IG9yIEZERSBpbiBCVUYgYW5kIGRlY29kZSBpdC4gICovCiBzdGF0aWMgZ2Ri X2J5dGUgKgotZGVjb2RlX2ZyYW1lX2VudHJ5IChzdHJ1Y3QgY29tcF91bml0 ICp1bml0LCBnZGJfYnl0ZSAqc3RhcnQsIGludCBlaF9mcmFtZV9wKQorZGVj b2RlX2ZyYW1lX2VudHJ5IChzdHJ1Y3QgY29tcF91bml0ICp1bml0LCBnZGJf Ynl0ZSAqc3RhcnQsIGludCBlaF9mcmFtZV9wLAorICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZHdhcmYyX2NpZV90YWJsZSAqY2llX3RhYmxlLAorICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHdhcmYyX2ZkZV90YWJsZSAqZmRl X3RhYmxlKQogewogICBlbnVtIHsgTk9ORSwgQUxJR040LCBBTElHTjgsIEZB SUwgfSB3b3JrYXJvdW5kID0gTk9ORTsKICAgZ2RiX2J5dGUgKnJldDsKQEAg LTE4MTksNyArMTg2Niw4IEBAIGRlY29kZV9mcmFtZV9lbnRyeSAoc3RydWN0 IGNvbXBfdW5pdCAqdW4KIAogICB3aGlsZSAoMSkKICAgICB7Ci0gICAgICBy ZXQgPSBkZWNvZGVfZnJhbWVfZW50cnlfMSAodW5pdCwgc3RhcnQsIGVoX2Zy YW1lX3ApOworICAgICAgcmV0ID0gZGVjb2RlX2ZyYW1lX2VudHJ5XzEgKHVu aXQsIHN0YXJ0LCBlaF9mcmFtZV9wLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNpZV90YWJsZSwgZmRlX3RhYmxlKTsKICAgICAgIGlm IChyZXQgIT0gTlVMTCkKIAlicmVhazsKIApAQCAtMTkwNSwxMSArMTk1Mywz MSBAQCBkZWNvZGVfZnJhbWVfZW50cnkgKHN0cnVjdCBjb21wX3VuaXQgKnVu CiBleHRlcm4gdm9pZCBkd2FyZjJfZ2V0X3NlY3Rpb25faW5mbyAoc3RydWN0 IG9iamZpbGUgKiwgY29uc3QgY2hhciAqLCBhc2VjdGlvbiAqKiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfYnl0ZSAqKiwg YmZkX3NpemVfdHlwZSAqKTsKIAorc3RhdGljIGludAorcXNvcnRfZmRlX2Nt cCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKyAgc3RydWN0 IGR3YXJmMl9mZGUgKmFhID0gKihzdHJ1Y3QgZHdhcmYyX2ZkZSAqKilhOwor ICBzdHJ1Y3QgZHdhcmYyX2ZkZSAqYmIgPSAqKHN0cnVjdCBkd2FyZjJfZmRl ICoqKWI7CisgIGlmIChhYS0+aW5pdGlhbF9sb2NhdGlvbiA9PSBiYi0+aW5p dGlhbF9sb2NhdGlvbikKKyAgICAvKiBQdXQgZWhfZnJhbWUgZW50cmllcyBh ZnRlciBkZWJ1Z19mcmFtZSBvbmVzLiAgKi8KKyAgICByZXR1cm4gYWEtPmVo X2ZyYW1lX3AgLSBiYi0+ZWhfZnJhbWVfcDsKKworICByZXR1cm4gKGFhLT5p bml0aWFsX2xvY2F0aW9uIDwgYmItPmluaXRpYWxfbG9jYXRpb24pID8gLTEg OiAxOworfQorCiB2b2lkCiBkd2FyZjJfYnVpbGRfZnJhbWVfaW5mbyAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCiB7CiAgIHN0cnVjdCBjb21wX3VuaXQg KnVuaXQ7CiAgIGdkYl9ieXRlICpmcmFtZV9wdHI7CisgIHN0cnVjdCBkd2Fy ZjJfY2llX3RhYmxlIGNpZV90YWJsZTsKKyAgc3RydWN0IGR3YXJmMl9mZGVf dGFibGUgZmRlX3RhYmxlOworCisgIGNpZV90YWJsZS5udW1fZW50cmllcyA9 IDA7CisgIGNpZV90YWJsZS5lbnRyaWVzID0gTlVMTDsKKworICBmZGVfdGFi bGUubnVtX2VudHJpZXMgPSAwOworICBmZGVfdGFibGUuZW50cmllcyA9IE5V TEw7CiAKICAgLyogQnVpbGQgYSBtaW5pbWFsIGRlY29kaW5nIG9mIHRoZSBE V0FSRjIgY29tcGlsYXRpb24gdW5pdC4gICovCiAgIHVuaXQgPSAoc3RydWN0 IGNvbXBfdW5pdCAqKSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLApAQCAtMTkxOSw4ICsxOTg3LDYgQEAgZHdhcmYyX2J1aWxk X2ZyYW1lX2luZm8gKHN0cnVjdCBvYmpmaWxlIAogICB1bml0LT5kYmFzZSA9 IDA7CiAgIHVuaXQtPnRiYXNlID0gMDsKIAotICAvKiBGaXJzdCBhZGQgdGhl IGluZm9ybWF0aW9uIGZyb20gdGhlIC5laF9mcmFtZSBzZWN0aW9uLiAgVGhh dCB3YXksCi0gICAgIHRoZSBGREVzIGZyb20gdGhhdCBzZWN0aW9uIGFyZSBz ZWFyY2hlZCBsYXN0LiAgKi8KICAgZHdhcmYyX2dldF9zZWN0aW9uX2luZm8g KG9iamZpbGUsICIuZWhfZnJhbWUiLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnVuaXQtPmR3YXJmX2ZyYW1lX3NlY3Rpb24sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmdW5pdC0+ZHdhcmZfZnJhbWVfYnVmZmVyLApA QCAtMTkyOSw3ICsxOTk1LDYgQEAgZHdhcmYyX2J1aWxkX2ZyYW1lX2luZm8g KHN0cnVjdCBvYmpmaWxlIAogICAgIHsKICAgICAgIGFzZWN0aW9uICpnb3Qs ICp0eHQ7CiAKLSAgICAgIHVuaXQtPmNpZSA9IE5VTEw7CiAgICAgICAvKiBG SVhNRToga2V0dGVuaXMvMjAwMzA2MDI6IFRoaXMgaXMgdGhlIERXX0VIX1BF X2RhdGFyZWwgYmFzZQogCSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBpMzg2L2Ft ZDY0IHRhcmdldCwgd2hpY2ggY3VycmVudGx5IGlzCiAJIHRoZSBvbmx5IHRh cmdldCBpbiBHQ0MgdGhhdCBzdXBwb3J0cy91c2VzIHRoZQpAQCAtMTk0Niw3 ICsyMDExLDE2IEBAIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1Y3Qg b2JqZmlsZSAKIAogICAgICAgZnJhbWVfcHRyID0gdW5pdC0+ZHdhcmZfZnJh bWVfYnVmZmVyOwogICAgICAgd2hpbGUgKGZyYW1lX3B0ciA8IHVuaXQtPmR3 YXJmX2ZyYW1lX2J1ZmZlciArIHVuaXQtPmR3YXJmX2ZyYW1lX3NpemUpCi0J ZnJhbWVfcHRyID0gZGVjb2RlX2ZyYW1lX2VudHJ5ICh1bml0LCBmcmFtZV9w dHIsIDEpOworCWZyYW1lX3B0ciA9IGRlY29kZV9mcmFtZV9lbnRyeSAodW5p dCwgZnJhbWVfcHRyLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZjaWVfdGFibGUsICZmZGVfdGFibGUpOworCisgICAg ICBpZiAoY2llX3RhYmxlLm51bV9lbnRyaWVzICE9IDApCisgICAgICAgIHsK KyAgICAgICAgICAvKiBSZWluaXQgY2llX3RhYmxlOiBkZWJ1Z19mcmFtZSBo YXMgZGlmZmVyZW50IENJRXMuICAqLworICAgICAgICAgIHhmcmVlIChjaWVf dGFibGUuZW50cmllcyk7CisgICAgICAgICAgY2llX3RhYmxlLm51bV9lbnRy aWVzID0gMDsKKyAgICAgICAgICBjaWVfdGFibGUuZW50cmllcyA9IE5VTEw7 CisgICAgICAgIH0KICAgICB9CiAKICAgZHdhcmYyX2dldF9zZWN0aW9uX2lu Zm8gKG9iamZpbGUsICIuZGVidWdfZnJhbWUiLApAQCAtMTk1NSwxMSArMjAy OSw1MiBAQCBkd2FyZjJfYnVpbGRfZnJhbWVfaW5mbyAoc3RydWN0IG9iamZp bGUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pdC0+ZHdhcmZf ZnJhbWVfc2l6ZSk7CiAgIGlmICh1bml0LT5kd2FyZl9mcmFtZV9zaXplKQog ICAgIHsKLSAgICAgIHVuaXQtPmNpZSA9IE5VTEw7Ci0KICAgICAgIGZyYW1l X3B0ciA9IHVuaXQtPmR3YXJmX2ZyYW1lX2J1ZmZlcjsKICAgICAgIHdoaWxl IChmcmFtZV9wdHIgPCB1bml0LT5kd2FyZl9mcmFtZV9idWZmZXIgKyB1bml0 LT5kd2FyZl9mcmFtZV9zaXplKQotCWZyYW1lX3B0ciA9IGRlY29kZV9mcmFt ZV9lbnRyeSAodW5pdCwgZnJhbWVfcHRyLCAwKTsKKwlmcmFtZV9wdHIgPSBk ZWNvZGVfZnJhbWVfZW50cnkgKHVuaXQsIGZyYW1lX3B0ciwgMCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2llX3RhYmxl LCAmZmRlX3RhYmxlKTsKKyAgICB9CisKKyAgLyogRGlzY2FyZCB0aGUgY2ll X3RhYmxlLCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLiAgKi8KKyAgaWYgKGNp ZV90YWJsZS5udW1fZW50cmllcyAhPSAwKQorICAgIHsKKyAgICAgIHhmcmVl IChjaWVfdGFibGUuZW50cmllcyk7CisgICAgICBjaWVfdGFibGUuZW50cmll cyA9IE5VTEw7ICAgLyogUGFyYW5vaWEuICAqLworICAgICAgY2llX3RhYmxl Lm51bV9lbnRyaWVzID0gMDsgIC8qIFBhcmFub2lhLiAgKi8KKyAgICB9CisK KyAgaWYgKGZkZV90YWJsZS5udW1fZW50cmllcyAhPSAwKQorICAgIHsKKyAg ICAgIHN0cnVjdCBkd2FyZjJfZmRlX3RhYmxlICpmZGVfdGFibGUyOworICAg ICAgaW50IGksIGo7CisKKyAgICAgIC8qIFByZXBhcmUgRkRFIHRhYmxlIGZv ciBsb29rdXBzLiAgKi8KKyAgICAgIHFzb3J0IChmZGVfdGFibGUuZW50cmll cywgZmRlX3RhYmxlLm51bV9lbnRyaWVzLAorICAgICAgICAgICAgIHNpemVv ZiAoZmRlX3RhYmxlLmVudHJpZXNbMF0pLCBxc29ydF9mZGVfY21wKTsKKwor ICAgICAgLyogQ29weSBmZGVfdGFibGUgdG8gb2JzdGFjazogaXQgaXMgbmVl ZGVkIGF0IHJ1bnRpbWUuICAqLworICAgICAgZmRlX3RhYmxlMiA9IChzdHJ1 Y3QgZHdhcmYyX2ZkZV90YWJsZSAqKQorICAgICAgICAgIG9ic3RhY2tfYWxs b2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmZkZV90 YWJsZTIpKTsKKworICAgICAgLyogU2luY2Ugd2UnbGwgYmUgZG9pbmcgYnNl YXJjaCwgc3F1ZWV6ZSBvdXQgaWRlbnRpY2FsIChleGNlcHQgZm9yCisgICAg ICAgICBlaF9mcmFtZV9wKSBmZGUgZW50cmllcyBzbyBic2VhcmNoIHJlc3Vs dCBpcyBwcmVkaWN0YWJsZS4gICovCisgICAgICBmb3IgKGkgPSAwLCBqID0g MDsgaiA8IGZkZV90YWJsZS5udW1fZW50cmllczsgKytpKQorICAgICAgICB7 CisgICAgICAgICAgY29uc3QgaW50IGsgPSBqOworCisgICAgICAgICAgb2Jz dGFja19ncm93ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCAmZmRlX3Rh YmxlLmVudHJpZXNbal0sCisgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YgKGZkZV90YWJsZS5lbnRyaWVzWzBdKSk7CisgICAgICAgICAgd2hpbGUg KCsraiA8IGZkZV90YWJsZS5udW1fZW50cmllcworICAgICAgICAgICAgICAg ICAmJiAoZmRlX3RhYmxlLmVudHJpZXNba10tPmluaXRpYWxfbG9jYXRpb24g PT0KKyAgICAgICAgICAgICAgICAgICAgIGZkZV90YWJsZS5lbnRyaWVzW2pd LT5pbml0aWFsX2xvY2F0aW9uKSkKKyAgICAgICAgICAgIC8qIFNraXAuICAq LzsKKyAgICAgICAgfQorICAgICAgZmRlX3RhYmxlMi0+ZW50cmllcyA9IG9i c3RhY2tfZmluaXNoICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKKyAg ICAgIGZkZV90YWJsZTItPm51bV9lbnRyaWVzID0gaTsKKyAgICAgIHNldF9v YmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9mcmFtZV9vYmpmaWxlX2Rh dGEsIGZkZV90YWJsZTIpOworCisgICAgICAvKiBEaXNjYXJkIHRoZSBvcmln aW5hbCBmZGVfdGFibGUuICAqLworICAgICAgeGZyZWUgKGZkZV90YWJsZS5l bnRyaWVzKTsKICAgICB9CiB9CiAK --0016363ba620744305046f5129d2--