From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2764 invoked by alias); 11 Jun 2009 01:43:07 -0000 Received: (qmail 2742 invoked by uid 22791); 11 Jun 2009 01:43:02 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_45,J_CHICKENPOX_46,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; Thu, 11 Jun 2009 01:42:53 +0000 Received: from zps19.corp.google.com (zps19.corp.google.com [172.25.146.19]) by smtp-out.google.com with ESMTP id n5B1gpi5031422 for ; Wed, 10 Jun 2009 18:42:51 -0700 Received: from qw-out-1920.google.com (qwj9.prod.google.com [10.241.195.73]) by zps19.corp.google.com with ESMTP id n5B1gnBm023110 for ; Wed, 10 Jun 2009 18:42:49 -0700 Received: by qw-out-1920.google.com with SMTP id 9so702792qwj.56 for ; Wed, 10 Jun 2009 18:42:49 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.81.136 with SMTP id x8mr433215qck.95.1244684568835; Wed, 10 Jun 2009 18:42:48 -0700 (PDT) In-Reply-To: <8ac60eac0906101839t4d3978fyc1c6d3b3e2eccb6e@mail.gmail.com> References: <20090527001157.934BD76BC0@localhost> <8ac60eac0905280956v79d9a84apad9a4370212283b9@mail.gmail.com> <8ac60eac0906101839t4d3978fyc1c6d3b3e2eccb6e@mail.gmail.com> Date: Thu, 11 Jun 2009 01:43:00 -0000 Message-ID: <8ac60eac0906101842y2d2fc9fco331cb4336d9508d0@mail.gmail.com> Subject: Re: [patch] Use mmap instead of obstack_alloc for dwarf debug sections. From: Paul Pluzhnikov To: Tom Tromey Cc: gdb-patches@sources.redhat.com Content-Type: multipart/mixed; boundary=00163616475795547b046c08b524 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-06/txt/msg00286.txt.bz2 --00163616475795547b046c08b524 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 246 On Wed, Jun 10, 2009 at 6:39 PM, Paul Pluzhnikov wrote: > bfd_mmap is now checking in; attached patch uses it. Sorry, attached the bfd patch instead of the gdb one :-( Here is the right one. Thanks, -- Paul Pluzhnikov --00163616475795547b046c08b524 Content-Type: text/plain; charset=US-ASCII; name="gdb-dwarf2-mmap-20090610.txt" Content-Disposition: attachment; filename="gdb-dwarf2-mmap-20090610.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvst05o31 Content-length: 59097 SW5kZXg6IGR3YXJmMnJlYWQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2R3YXJmMnJlYWQuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4zMDcKZGlmZiAtdSAtcCAtdSAtcjEuMzA3IGR3 YXJmMnJlYWQuYwotLS0gZHdhcmYycmVhZC5jCTEwIEp1biAyMDA5IDE0OjU1 OjE0IC0wMDAwCTEuMzA3CisrKyBkd2FyZjJyZWFkLmMJMTEgSnVuIDIwMDkg MDE6MDE6MzUgLTAwMDAKQEAgLTU1LDIwICs1NSw5IEBACiAjaWZkZWYgSEFW RV9aTElCX0gKICNpbmNsdWRlIDx6bGliLmg+CiAjZW5kaWYKLQotLyogQSBu b3RlIG9uIG1lbW9yeSB1c2FnZSBmb3IgdGhpcyBmaWxlLgotICAgCi0gICBB dCB0aGUgcHJlc2VudCB0aW1lLCB0aGlzIGNvZGUgcmVhZHMgdGhlIGRlYnVn IGluZm8gc2VjdGlvbnMgaW50bwotICAgdGhlIG9iamZpbGUncyBvYmpmaWxl X29ic3RhY2suICBBIGRlZmluaXRlIGltcHJvdmVtZW50IGZvciBzdGFydHVw Ci0gICB0aW1lLCBvbiBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IGVtaXQgcmVs b2NhdGlvbnMgZm9yIGRlYnVnCi0gICBzZWN0aW9ucywgd291bGQgYmUgdG8g dXNlIG1tYXAgaW5zdGVhZC4gIFRoZSBvYmplY3QncyBjb21wbGV0ZQotICAg ZGVidWcgaW5mb3JtYXRpb24gaXMgbG9hZGVkIGludG8gbWVtb3J5LCBwYXJ0 bHkgdG8gc2ltcGxpZnkKLSAgIGFic29sdXRlIERJRSByZWZlcmVuY2VzLgot Ci0gICBXaGV0aGVyIHVzaW5nIG9ic3RhY2tzIG9yIG1tYXAsIHRoZSBzZWN0 aW9ucyBzaG91bGQgcmVtYWluIGxvYWRlZAotICAgdW50aWwgdGhlIG9iamZp bGUgaXMgcmVsZWFzZWQsIGFuZCBwb2ludGVycyBpbnRvIHRoZSBzZWN0aW9u IGRhdGEKLSAgIGNhbiBiZSB1c2VkIGZvciBhbnkgb3RoZXIgZGF0YSBhc3Nv Y2lhdGVkIHRvIHRoZSBvYmpmaWxlIChzeW1ib2wKLSAgIG5hbWVzLCB0eXBl IG5hbWVzLCBsb2NhdGlvbiBleHByZXNzaW9ucyB0byBuYW1lIGEgZmV3KS4g ICovCisjaWZkZWYgSEFWRV9NTUFQCisjaW5jbHVkZSA8c3lzL21tYW4uaD4K KyNlbmRpZgogCiAjaWYgMAogLyogLmRlYnVnX2luZm8gaGVhZGVyIGZvciBh IGNvbXBpbGF0aW9uIHVuaXQKQEAgLTE0NSw2ICsxMzQsOCBAQCBfU1RBVEVN RU5UX1BST0xPR1VFOwogLyogV2hlbiBub24temVybywgZHVtcCBESUVzIGFm dGVyIHRoZXkgYXJlIHJlYWQgaW4uICAqLwogc3RhdGljIGludCBkd2FyZjJf ZGllX2RlYnVnID0gMDsKIAorc3RhdGljIGludCBwYWdlc2l6ZTsKKwogLyog V2hlbiBzZXQsIHRoZSBmaWxlIHRoYXQgd2UncmUgcHJvY2Vzc2luZyBpcyBr bm93biB0byBoYXZlIGRlYnVnZ2luZwogICAgaW5mbyBmb3IgQysrIG5hbWVz cGFjZXMuICBHQ0MgMy4zLnggZGlkIG5vdCBwcm9kdWNlIHRoaXMgaW5mb3Jt YXRpb24sCiAgICBidXQgbGF0ZXIgdmVyc2lvbnMgZG8uICAqLwpAQCAtMTUz LDI5ICsxNDQsMjcgQEAgc3RhdGljIGludCBwcm9jZXNzaW5nX2hhc19uYW1l c3BhY2VfaW5mbwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0 YSAqZHdhcmYyX29iamZpbGVfZGF0YV9rZXk7CiAKK3N0cnVjdCBkd2FyZjJf c2VjdGlvbl9pbmZvCit7CisgIGFzZWN0aW9uICphc2VjdGlvbjsKKyAgZ2Ri X2J5dGUgKmJ1ZmZlcjsKKyAgYmZkX3NpemVfdHlwZSBzaXplOworICBpbnQg d2FzX21tYXBlZDsKK307CisKIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUK IHsKLSAgLyogU2l6ZXMgb2YgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KLSAg dW5zaWduZWQgaW50IGluZm9fc2l6ZTsKLSAgdW5zaWduZWQgaW50IGFiYnJl dl9zaXplOwotICB1bnNpZ25lZCBpbnQgbGluZV9zaXplOwotICB1bnNpZ25l ZCBpbnQgcHVibmFtZXNfc2l6ZTsKLSAgdW5zaWduZWQgaW50IGFyYW5nZXNf c2l6ZTsKLSAgdW5zaWduZWQgaW50IGxvY19zaXplOwotICB1bnNpZ25lZCBp bnQgbWFjaW5mb19zaXplOwotICB1bnNpZ25lZCBpbnQgc3RyX3NpemU7Ci0g IHVuc2lnbmVkIGludCByYW5nZXNfc2l6ZTsKLSAgdW5zaWduZWQgaW50IGZy YW1lX3NpemU7Ci0gIHVuc2lnbmVkIGludCBlaF9mcmFtZV9zaXplOwotCi0g IC8qIExvYWRlZCBkYXRhIGZyb20gdGhlIHNlY3Rpb25zLiAgKi8KLSAgZ2Ri X2J5dGUgKmluZm9fYnVmZmVyOwotICBnZGJfYnl0ZSAqYWJicmV2X2J1ZmZl cjsKLSAgZ2RiX2J5dGUgKmxpbmVfYnVmZmVyOwotICBnZGJfYnl0ZSAqc3Ry X2J1ZmZlcjsKLSAgZ2RiX2J5dGUgKm1hY2luZm9fYnVmZmVyOwotICBnZGJf Ynl0ZSAqcmFuZ2VzX2J1ZmZlcjsKLSAgZ2RiX2J5dGUgKmxvY19idWZmZXI7 CisgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGluZm87CisgIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvIGFiYnJldjsKKyAgc3RydWN0IGR3YXJm Ml9zZWN0aW9uX2luZm8gbGluZTsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9u X2luZm8gcHVibmFtZXM7CisgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv IGFyYW5nZXM7CisgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxvYzsK KyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gbWFjaW5mbzsKKyAgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gc3RyOworICBzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyByYW5nZXM7CisgIHN0cnVjdCBkd2FyZjJfc2VjdGlv bl9pbmZvIGZyYW1lOworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBl aF9mcmFtZTsKIAogICAvKiBBIGxpc3Qgb2YgYWxsIHRoZSBjb21waWxhdGlv biB1bml0cy4gIFRoaXMgaXMgdXNlZCB0byBsb2NhdGUKICAgICAgdGhlIHRh cmdldCBjb21waWxhdGlvbiB1bml0IG9mIGEgcGFydGljdWxhciByZWZlcmVu Y2UuICAqLwpAQCAtMTk1LDE4ICsxODQsNiBAQCBzdHJ1Y3QgZHdhcmYyX3Bl cl9vYmpmaWxlCiAKIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxl ICpkd2FyZjJfcGVyX29iamZpbGU7CiAKLXN0YXRpYyBhc2VjdGlvbiAqZHdh cmZfaW5mb19zZWN0aW9uOwotc3RhdGljIGFzZWN0aW9uICpkd2FyZl9hYmJy ZXZfc2VjdGlvbjsKLXN0YXRpYyBhc2VjdGlvbiAqZHdhcmZfbGluZV9zZWN0 aW9uOwotc3RhdGljIGFzZWN0aW9uICpkd2FyZl9wdWJuYW1lc19zZWN0aW9u Owotc3RhdGljIGFzZWN0aW9uICpkd2FyZl9hcmFuZ2VzX3NlY3Rpb247Ci1z dGF0aWMgYXNlY3Rpb24gKmR3YXJmX2xvY19zZWN0aW9uOwotc3RhdGljIGFz ZWN0aW9uICpkd2FyZl9tYWNpbmZvX3NlY3Rpb247Ci1zdGF0aWMgYXNlY3Rp b24gKmR3YXJmX3N0cl9zZWN0aW9uOwotc3RhdGljIGFzZWN0aW9uICpkd2Fy Zl9yYW5nZXNfc2VjdGlvbjsKLWFzZWN0aW9uICpkd2FyZl9mcmFtZV9zZWN0 aW9uOwotYXNlY3Rpb24gKmR3YXJmX2VoX2ZyYW1lX3NlY3Rpb247Ci0KIC8q IG5hbWVzIG9mIHRoZSBkZWJ1Z2dpbmcgc2VjdGlvbnMgKi8KIAogLyogTm90 ZSB0aGF0IGlmIHRoZSBkZWJ1Z2dpbmcgc2VjdGlvbiBoYXMgYmVlbiBjb21w cmVzc2VkLCBpdCBtaWdodApAQCAtODAzLDggKzc4MCw2IEBAIHN0YXRpYyB2 b2lkIGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYiAoc3QKIAogc3RhdGljIHZv aWQgcHN5bXRhYl90b19zeW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3ltdGFi ICopOwogCi1nZGJfYnl0ZSAqZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0 IG9iamZpbGUgKiwgYXNlY3Rpb24gKik7Ci0KIHN0YXRpYyB2b2lkIGR3YXJm Ml9yZWFkX2FiYnJldnMgKGJmZCAqYWJmZCwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpOwogCiBzdGF0aWMgdm9pZCBkd2FyZjJfZnJlZV9hYmJyZXZfdGFibGUg KHZvaWQgKik7CkBAIC0xMTMwLDMwICsxMTA1LDIwIEBAIGR3YXJmMl9oYXNf aW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgc2V0X29iamZpbGVf ZGF0YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXksIGRhdGEp OwogICBkd2FyZjJfcGVyX29iamZpbGUgPSBkYXRhOwogCi0gIGR3YXJmX2lu Zm9fc2VjdGlvbiA9IDA7Ci0gIGR3YXJmX2FiYnJldl9zZWN0aW9uID0gMDsK LSAgZHdhcmZfbGluZV9zZWN0aW9uID0gMDsKLSAgZHdhcmZfc3RyX3NlY3Rp b24gPSAwOwotICBkd2FyZl9tYWNpbmZvX3NlY3Rpb24gPSAwOwotICBkd2Fy Zl9mcmFtZV9zZWN0aW9uID0gMDsKLSAgZHdhcmZfZWhfZnJhbWVfc2VjdGlv biA9IDA7Ci0gIGR3YXJmX3Jhbmdlc19zZWN0aW9uID0gMDsKLSAgZHdhcmZf bG9jX3NlY3Rpb24gPSAwOwotICAKICAgYmZkX21hcF9vdmVyX3NlY3Rpb25z IChvYmpmaWxlLT5vYmZkLCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zLCBOVUxM KTsKLSAgcmV0dXJuIChkd2FyZl9pbmZvX3NlY3Rpb24gIT0gTlVMTCAmJiBk d2FyZl9hYmJyZXZfc2VjdGlvbiAhPSBOVUxMKTsKKyAgcmV0dXJuIChkYXRh LT5pbmZvLmFzZWN0aW9uICE9IE5VTEwgJiYgZGF0YS0+YWJicmV2LmFzZWN0 aW9uICE9IE5VTEwpOwogfQogCiAvKiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMs IHdlIGNhbiBlaXRoZXIgbG9vayBmb3IgIi48bmFtZT4iLCBvciBmb3IKICAq ICIuejxuYW1lPiIsIHdoaWNoIGluZGljYXRlcyBhIGNvbXByZXNzZWQgc2Vj dGlvbi4gICovCiAKIHN0YXRpYyBpbnQKLXNlY3Rpb25faXNfcCAoYXNlY3Rp b24gKnNlY3RwLCBjb25zdCBjaGFyICpuYW1lKQorc2VjdGlvbl9pc19wIChj b25zdCBjaGFyICpzZWN0aW9uX25hbWUsIGNvbnN0IGNoYXIgKm5hbWUpCiB7 Ci0gIHJldHVybiAoKHNlY3RwLT5uYW1lWzBdID09ICcuJwotICAgICAgICAg ICAmJiBzdHJjbXAgKHNlY3RwLT5uYW1lICsgMSwgbmFtZSkgPT0gMCkKLSAg ICAgICAgICB8fCAoc2VjdHAtPm5hbWVbMF0gPT0gJy4nICYmIHNlY3RwLT5u YW1lWzFdID09ICd6JwotICAgICAgICAgICAgICAmJiBzdHJjbXAgKHNlY3Rw LT5uYW1lICsgMiwgbmFtZSkgPT0gMCkpOworICByZXR1cm4gKHNlY3Rpb25f bmFtZVswXSA9PSAnLicKKwkgICYmIChzdHJjbXAgKHNlY3Rpb25fbmFtZSAr IDEsIG5hbWUpID09IDAKKwkgICAgICB8fCAoc2VjdGlvbl9uYW1lWzFdID09 ICd6JworCQkgICYmIHN0cmNtcCAoc2VjdGlvbl9uYW1lICsgMiwgbmFtZSkg PT0gMCkpKTsKIH0KIAogLyogVGhpcyBmdW5jdGlvbiBpcyBtYXBwZWQgYWNy b3NzIHRoZSBzZWN0aW9ucyBhbmQgcmVtZW1iZXJzIHRoZQpAQCAtMTE2Mywx NDAgKzExMjgsMjYxIEBAIHNlY3Rpb25faXNfcCAoYXNlY3Rpb24gKnNlY3Rw LCBjb25zdCBjaGEKIHN0YXRpYyB2b2lkCiBkd2FyZjJfbG9jYXRlX3NlY3Rp b25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdub3Jl X3B0cikKIHsKLSAgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAsIElORk9fU0VD VElPTikpCisgIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCBJTkZP X1NFQ1RJT04pKQogICAgIHsKLSAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ aW5mb19zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAg ICAgIGR3YXJmX2luZm9fc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdhcmYy X3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0aW9uID0gc2VjdHA7CisgICAgICBk d2FyZjJfcGVyX29iamZpbGUtPmluZm8uc2l6ZSA9IGJmZF9nZXRfc2VjdGlv bl9zaXplIChzZWN0cCk7CiAgICAgfQotICBlbHNlIGlmIChzZWN0aW9uX2lz X3AgKHNlY3RwLCBBQkJSRVZfU0VDVElPTikpCisgIGVsc2UgaWYgKHNlY3Rp b25faXNfcCAoc2VjdHAtPm5hbWUsIEFCQlJFVl9TRUNUSU9OKSkKICAgICB7 Ci0gICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldl9zaXplID0gYmZk X2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgIGR3YXJmX2FiYnJl dl9zZWN0aW9uID0gc2VjdHA7CisgICAgICBkd2FyZjJfcGVyX29iamZpbGUt PmFiYnJldi5hc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdhcmYyX3Blcl9v YmpmaWxlLT5hYmJyZXYuc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChz ZWN0cCk7CiAgICAgfQotICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3Rw LCBMSU5FX1NFQ1RJT04pKQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNl Y3RwLT5uYW1lLCBMSU5FX1NFQ1RJT04pKQogICAgIHsKLSAgICAgIGR3YXJm Ml9wZXJfb2JqZmlsZS0+bGluZV9zaXplID0gYmZkX2dldF9zZWN0aW9uX3Np emUgKHNlY3RwKTsKLSAgICAgIGR3YXJmX2xpbmVfc2VjdGlvbiA9IHNlY3Rw OworICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLmFzZWN0aW9uID0g c2VjdHA7CisgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmxpbmUuc2l6ZSA9 IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7CiAgICAgfQotICBlbHNl IGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBQVUJOQU1FU19TRUNUSU9OKSkK KyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgUFVCTkFN RVNfU0VDVElPTikpCiAgICAgewotICAgICAgZHdhcmYyX3Blcl9vYmpmaWxl LT5wdWJuYW1lc19zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rw KTsKLSAgICAgIGR3YXJmX3B1Ym5hbWVzX3NlY3Rpb24gPSBzZWN0cDsKKyAg ICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+cHVibmFtZXMuYXNlY3Rpb24gPSBz ZWN0cDsKKyAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+cHVibmFtZXMuc2l6 ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7CiAgICAgfQotICBl bHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBBUkFOR0VTX1NFQ1RJT04p KQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCBBUkFO R0VTX1NFQ1RJT04pKQogICAgIHsKLSAgICAgIGR3YXJmMl9wZXJfb2JqZmls ZS0+YXJhbmdlc19zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rw KTsKLSAgICAgIGR3YXJmX2FyYW5nZXNfc2VjdGlvbiA9IHNlY3RwOworICAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5hcmFuZ2VzLmFzZWN0aW9uID0gc2Vj dHA7CisgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmFyYW5nZXMuc2l6ZSA9 IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7CiAgICAgfQotICBlbHNl IGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBMT0NfU0VDVElPTikpCisgIGVs c2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsIExPQ19TRUNUSU9O KSkKICAgICB7Ci0gICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmxvY19zaXpl ID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgIGR3YXJm X2xvY19zZWN0aW9uID0gc2VjdHA7CisgICAgICBkd2FyZjJfcGVyX29iamZp bGUtPmxvYy5hc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdhcmYyX3Blcl9v YmpmaWxlLT5sb2Muc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0 cCk7CiAgICAgfQotICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBN QUNJTkZPX1NFQ1RJT04pKQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNl Y3RwLT5uYW1lLCBNQUNJTkZPX1NFQ1RJT04pKQogICAgIHsKLSAgICAgIGR3 YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mb19zaXplID0gYmZkX2dldF9zZWN0 aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgIGR3YXJmX21hY2luZm9fc2VjdGlv biA9IHNlY3RwOworICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZv LmFzZWN0aW9uID0gc2VjdHA7CisgICAgICBkd2FyZjJfcGVyX29iamZpbGUt Pm1hY2luZm8uc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7 CiAgICAgfQotICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBTVFJf U0VDVElPTikpCisgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5h bWUsIFNUUl9TRUNUSU9OKSkKICAgICB7Ci0gICAgICBkd2FyZjJfcGVyX29i amZpbGUtPnN0cl9zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rw KTsKLSAgICAgIGR3YXJmX3N0cl9zZWN0aW9uID0gc2VjdHA7CisgICAgICBk d2FyZjJfcGVyX29iamZpbGUtPnN0ci5hc2VjdGlvbiA9IHNlY3RwOworICAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5zdHIuc2l6ZSA9IGJmZF9nZXRfc2Vj dGlvbl9zaXplIChzZWN0cCk7CiAgICAgfQotICBlbHNlIGlmIChzZWN0aW9u X2lzX3AgKHNlY3RwLCBGUkFNRV9TRUNUSU9OKSkKKyAgZWxzZSBpZiAoc2Vj dGlvbl9pc19wIChzZWN0cC0+bmFtZSwgRlJBTUVfU0VDVElPTikpCiAgICAg ewotICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5mcmFtZV9zaXplID0gYmZk X2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgIGR3YXJmX2ZyYW1l X3NlY3Rpb24gPSBzZWN0cDsKKyAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ ZnJhbWUuYXNlY3Rpb24gPSBzZWN0cDsKKyAgICAgIGR3YXJmMl9wZXJfb2Jq ZmlsZS0+ZnJhbWUuc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0 cCk7CiAgICAgfQotICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBF SF9GUkFNRV9TRUNUSU9OKSkKKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChz ZWN0cC0+bmFtZSwgRUhfRlJBTUVfU0VDVElPTikpCiAgICAgewogICAgICAg ZmxhZ3dvcmQgYWZsYWcgPSBiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGlnbm9y ZV9hYmZkLCBzZWN0cCk7CiAgICAgICBpZiAoYWZsYWcgJiBTRUNfSEFTX0NP TlRFTlRTKQogICAgICAgICB7Ci0gICAgICAgICAgZHdhcmYyX3Blcl9vYmpm aWxlLT5laF9mcmFtZV9zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNl Y3RwKTsKLSAgICAgICAgICBkd2FyZl9laF9mcmFtZV9zZWN0aW9uID0gc2Vj dHA7CisJICBkd2FyZjJfcGVyX29iamZpbGUtPmVoX2ZyYW1lLmFzZWN0aW9u ID0gc2VjdHA7CisgICAgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5laF9m cmFtZS5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKICAg ICAgICAgfQogICAgIH0KLSAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0 cCwgUkFOR0VTX1NFQ1RJT04pKQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3Ag KHNlY3RwLT5uYW1lLCBSQU5HRVNfU0VDVElPTikpCiAgICAgewotICAgICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT5yYW5nZXNfc2l6ZSA9IGJmZF9nZXRfc2Vj dGlvbl9zaXplIChzZWN0cCk7Ci0gICAgICBkd2FyZl9yYW5nZXNfc2VjdGlv biA9IHNlY3RwOworICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5yYW5nZXMu YXNlY3Rpb24gPSBzZWN0cDsKKyAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ cmFuZ2VzLnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwog ICAgIH0KLSAgCisKICAgaWYgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGFi ZmQsIHNlY3RwKSAmIFNFQ19MT0FEKQogICAgICAgJiYgYmZkX3NlY3Rpb25f dm1hIChhYmZkLCBzZWN0cCkgPT0gMCkKICAgICBkd2FyZjJfcGVyX29iamZp bGUtPmhhc19zZWN0aW9uX2F0X3plcm8gPSAxOwogfQogCi0vKiBUaGlzIGZ1 bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBkZWNvbXByZXNzaW5nIGEgc2VjdGlv biwgc28KLSAgIGR3YXJmMl9wZXJfb2JqZmlsZSBjYW4gcmVjb3JkIGl0cyBu ZXcsIHVuY29tcHJlc3NlZCBzaXplLiAgKi8KKy8qIERlY29tcHJlc3MgYSBz ZWN0aW9uIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgemxpYi4gIFN0b3Jl IHRoZQorICAgZGVjb21wcmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBp biBPVVRCVUYgYW5kIE9VVFNJWkUuICAqLwogCiBzdGF0aWMgdm9pZAotZHdh cmYyX3Jlc2l6ZV9zZWN0aW9uIChhc2VjdGlvbiAqc2VjdHAsIGJmZF9zaXpl X3R5cGUgbmV3X3NpemUpCit6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBnZGJfYnl0ZSAqKm91dGJ1ZiwgYmZkX3Np emVfdHlwZSAqb3V0c2l6ZSkKIHsKLSAgaWYgKHNlY3Rpb25faXNfcCAoc2Vj dHAsIElORk9fU0VDVElPTikpCi0gICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5p bmZvX3NpemUgPSBuZXdfc2l6ZTsKLSAgZWxzZSBpZiAoc2VjdGlvbl9pc19w IChzZWN0cCwgQUJCUkVWX1NFQ1RJT04pKQotICAgIGR3YXJmMl9wZXJfb2Jq ZmlsZS0+YWJicmV2X3NpemUgPSBuZXdfc2l6ZTsKLSAgZWxzZSBpZiAoc2Vj dGlvbl9pc19wIChzZWN0cCwgTElORV9TRUNUSU9OKSkKLSAgICBkd2FyZjJf cGVyX29iamZpbGUtPmxpbmVfc2l6ZSA9IG5ld19zaXplOwotICBlbHNlIGlm IChzZWN0aW9uX2lzX3AgKHNlY3RwLCBQVUJOQU1FU19TRUNUSU9OKSkKLSAg ICBkd2FyZjJfcGVyX29iamZpbGUtPnB1Ym5hbWVzX3NpemUgPSBuZXdfc2l6 ZTsKLSAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cCwgQVJBTkdFU19T RUNUSU9OKSkKLSAgICBkd2FyZjJfcGVyX29iamZpbGUtPmFyYW5nZXNfc2l6 ZSA9IG5ld19zaXplOwotICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3Rw LCBMT0NfU0VDVElPTikpCi0gICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Nf c2l6ZSA9IG5ld19zaXplOwotICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNl Y3RwLCBNQUNJTkZPX1NFQ1RJT04pKQotICAgIGR3YXJmMl9wZXJfb2JqZmls ZS0+bWFjaW5mb19zaXplID0gbmV3X3NpemU7Ci0gIGVsc2UgaWYgKHNlY3Rp b25faXNfcCAoc2VjdHAsIFNUUl9TRUNUSU9OKSkKLSAgICBkd2FyZjJfcGVy X29iamZpbGUtPnN0cl9zaXplID0gbmV3X3NpemU7Ci0gIGVsc2UgaWYgKHNl Y3Rpb25faXNfcCAoc2VjdHAsIEZSQU1FX1NFQ1RJT04pKQotICAgIGR3YXJm Ml9wZXJfb2JqZmlsZS0+ZnJhbWVfc2l6ZSA9IG5ld19zaXplOwotICBlbHNl IGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLCBFSF9GUkFNRV9TRUNUSU9OKSkK LSAgICBkd2FyZjJfcGVyX29iamZpbGUtPmVoX2ZyYW1lX3NpemUgPSBuZXdf c2l6ZTsKLSAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cCwgUkFOR0VT X1NFQ1RJT04pKQotICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+cmFuZ2VzX3Np emUgPSBuZXdfc2l6ZTsKLSAgZWxzZQotICAgIGludGVybmFsX2Vycm9yIChf X0ZJTEVfXywgX19MSU5FX18sCi0JCSAgICBfKCJkd2FyZjJfcmVzaXplX3Nl Y3Rpb246IG1pc3Npbmcgc2VjdGlvbl9pc19wIGNoZWNrOiAlcyIpLAotICAg ICAgICAgICAgICAgICAgICBzZWN0cC0+bmFtZSk7CisgIGJmZCAqYWJmZCA9 IG9iamZpbGUtPm9iZmQ7CisjaWZuZGVmIEhBVkVfWkxJQl9ICisgIGVycm9y IChfKCJTdXBwb3J0IGZvciB6bGliLWNvbXByZXNzZWQgRFdBUkYgZGF0YSAo ZnJvbSAnJXMnKSAiCisgICAgICAgICAgICJpcyBkaXNhYmxlZCBpbiB0aGlz IGNvcHkgb2YgR0RCIiksCisgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChh YmZkKSk7CisjZWxzZQorICBiZmRfc2l6ZV90eXBlIGNvbXByZXNzZWRfc2l6 ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgIGdkYl9ieXRl ICpjb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxsb2MgKGNvbXByZXNzZWRfc2l6 ZSk7CisgIGJmZF9zaXplX3R5cGUgdW5jb21wcmVzc2VkX3NpemU7CisgIGdk Yl9ieXRlICp1bmNvbXByZXNzZWRfYnVmZmVyOworICB6X3N0cmVhbSBzdHJt OworICBpbnQgcmM7CisgIGludCBoZWFkZXJfc2l6ZSA9IDEyOworCisgIGlm IChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAh PSAwCisgICAgICB8fCBiZmRfYnJlYWQgKGNvbXByZXNzZWRfYnVmZmVyLCBj b21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNvbXByZXNzZWRfc2l6ZSkKKyAg ICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0 YSBmcm9tICclcyciKSwKKyAgICAgICAgICAgYmZkX2dldF9maWxlbmFtZSAo YWJmZCkpOworCisgIC8qIFJlYWQgdGhlIHpsaWIgaGVhZGVyLiAgSW4gdGhp cyBjYXNlLCBpdCBzaG91bGQgYmUgIlpMSUIiIGZvbGxvd2VkCisgICAgIGJ5 IHRoZSB1bmNvbXByZXNzZWQgc2VjdGlvbiBzaXplLCA4IGJ5dGVzIGluIGJp Zy1lbmRpYW4gb3JkZXIuICAqLworICBpZiAoY29tcHJlc3NlZF9zaXplIDwg aGVhZGVyX3NpemUKKyAgICAgIHx8IHN0cm5jbXAgKGNvbXByZXNzZWRfYnVm ZmVyLCAiWkxJQiIsIDQpICE9IDApCisgICAgZXJyb3IgKF8oIkR3YXJmIEVy cm9yOiBDb3JydXB0IERXQVJGIFpMSUIgaGVhZGVyIGZyb20gJyVzJyIpLAor ICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CisgIHVuY29t cHJlc3NlZF9zaXplID0gY29tcHJlc3NlZF9idWZmZXJbNF07IHVuY29tcHJl c3NlZF9zaXplIDw8PSA4OworICB1bmNvbXByZXNzZWRfc2l6ZSArPSBjb21w cmVzc2VkX2J1ZmZlcls1XTsgdW5jb21wcmVzc2VkX3NpemUgPDw9IDg7Cisg IHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzZdOyB1 bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKyAgdW5jb21wcmVzc2VkX3NpemUg Kz0gY29tcHJlc3NlZF9idWZmZXJbN107IHVuY29tcHJlc3NlZF9zaXplIDw8 PSA4OworICB1bmNvbXByZXNzZWRfc2l6ZSArPSBjb21wcmVzc2VkX2J1ZmZl cls4XTsgdW5jb21wcmVzc2VkX3NpemUgPDw9IDg7CisgIHVuY29tcHJlc3Nl ZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzldOyB1bmNvbXByZXNzZWRf c2l6ZSA8PD0gODsKKyAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3Nl ZF9idWZmZXJbMTBdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKyAgdW5j b21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbMTFdOworCisg IC8qIEl0IGlzIHBvc3NpYmxlIHRoZSBzZWN0aW9uIGNvbnNpc3RzIG9mIHNl dmVyYWwgY29tcHJlc3NlZAorICAgICBidWZmZXJzIGNvbmNhdGVuYXRlZCB0 b2dldGhlciwgc28gd2UgdW5jb21wcmVzcyBpbiBhIGxvb3AuICAqLworICBz dHJtLnphbGxvYyA9IE5VTEw7CisgIHN0cm0uemZyZWUgPSBOVUxMOworICBz dHJtLm9wYXF1ZSA9IE5VTEw7CisgIHN0cm0uYXZhaWxfaW4gPSBjb21wcmVz c2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKKyAgc3RybS5uZXh0X2luID0gKEJ5 dGVmKikgY29tcHJlc3NlZF9idWZmZXIgKyBoZWFkZXJfc2l6ZTsKKyAgc3Ry bS5hdmFpbF9vdXQgPSB1bmNvbXByZXNzZWRfc2l6ZTsKKyAgdW5jb21wcmVz c2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bmNvbXByZXNzZWRfc2l6ZSk7CisgIHJjID0gaW5mbGF0ZUluaXQg KCZzdHJtKTsKKyAgd2hpbGUgKHN0cm0uYXZhaWxfaW4gPiAwKQorICAgIHsK KyAgICAgIGlmIChyYyAhPSBaX09LKQorICAgICAgICBlcnJvciAoXygiRHdh cmYgRXJyb3I6IHNldHRpbmcgdXAgRFdBUkYgdW5jb21wcmVzc2lvbiBpbiAn JXMnOiAlZCIpLAorICAgICAgICAgICAgICAgYmZkX2dldF9maWxlbmFtZSAo YWJmZCksIHJjKTsKKyAgICAgIHN0cm0ubmV4dF9vdXQgPSAoKEJ5dGVmKikg dW5jb21wcmVzc2VkX2J1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAr ICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0uYXZhaWxfb3V0KSk7CisgICAg ICByYyA9IGluZmxhdGUgKCZzdHJtLCBaX0ZJTklTSCk7CisgICAgICBpZiAo cmMgIT0gWl9TVFJFQU1fRU5EKQorICAgICAgICBlcnJvciAoXygiRHdhcmYg RXJyb3I6IHpsaWIgZXJyb3IgdW5jb21wcmVzc2luZyBmcm9tICclcyc6ICVk IiksCisgICAgICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwg cmMpOworICAgICAgcmMgPSBpbmZsYXRlUmVzZXQgKCZzdHJtKTsKKyAgICB9 CisgIHJjID0gaW5mbGF0ZUVuZCAoJnN0cm0pOworICBpZiAocmMgIT0gWl9P SworICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkKKyAgICBlcnJvciAo XygiRHdhcmYgRXJyb3I6IGNvbmNsdWRpbmcgRFdBUkYgdW5jb21wcmVzc2lv biBpbiAnJXMnOiAlZCIpLAorICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1l IChhYmZkKSwgcmMpOworCisgIHhmcmVlIChjb21wcmVzc2VkX2J1ZmZlcik7 CisgICpvdXRidWYgPSB1bmNvbXByZXNzZWRfYnVmZmVyOworICAqb3V0c2l6 ZSA9IHVuY29tcHJlc3NlZF9zaXplOworI2VuZGlmCiB9CiAKLS8qIEJ1aWxk IGEgcGFydGlhbCBzeW1ib2wgdGFibGUuICAqLworLyogUmVhZCB0aGUgY29u dGVudHMgb2YgdGhlIHNlY3Rpb24gU0VDVFAgZnJvbSBvYmplY3QgZmlsZSBz cGVjaWZpZWQgYnkKKyAgIE9CSkZJTEUsIHN0b3JlIGluZm8gYWJvdXQgdGhl IHNlY3Rpb24gaW50byBJTkZPLgorICAgSWYgdGhlIHNlY3Rpb24gaXMgY29t cHJlc3NlZCwgdW5jb21wcmVzcyBpdCBiZWZvcmUgcmV0dXJuaW5nLiAgKi8K IAotdm9pZAotZHdhcmYyX2J1aWxkX3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgaW50IG1haW5saW5lKQorc3RhdGljIHZvaWQKK2R3YXJm Ml9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKIHsKLSAgLyogV2UgZGVm aW5pdGVseSBuZWVkIHRoZSAuZGVidWdfaW5mbyBhbmQgLmRlYnVnX2FiYnJl diBzZWN0aW9ucyAqLworICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwor ICBhc2VjdGlvbiAqc2VjdHAgPSBpbmZvLT5hc2VjdGlvbjsKKyAgZ2RiX2J5 dGUgKmJ1ZiwgKnJldGJ1ZjsKKyAgdW5zaWduZWQgY2hhciBoZWFkZXJbNF07 CiAKLSAgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvX2J1ZmZlciA9IGR3YXJm Ml9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGR3YXJmX2luZm9fc2VjdGlvbik7 Ci0gIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2X2J1ZmZlciA9IGR3YXJm Ml9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGR3YXJmX2FiYnJldl9zZWN0aW9u KTsKKyAgaW5mby0+YnVmZmVyID0gTlVMTDsKKyAgaW5mby0+d2FzX21tYXBl ZCA9IDA7CiAKLSAgaWYgKGR3YXJmX2xpbmVfc2VjdGlvbikKLSAgICBkd2Fy ZjJfcGVyX29iamZpbGUtPmxpbmVfYnVmZmVyID0gZHdhcmYyX3JlYWRfc2Vj dGlvbiAob2JqZmlsZSwgZHdhcmZfbGluZV9zZWN0aW9uKTsKLSAgZWxzZQot ICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bGluZV9idWZmZXIgPSBOVUxMOwor ICBpZiAoaW5mby0+YXNlY3Rpb24gPT0gTlVMTCB8fCBpbmZvLT5zaXplID09 IDApCisgICAgcmV0dXJuOwogCi0gIGlmIChkd2FyZl9zdHJfc2VjdGlvbikK LSAgICBkd2FyZjJfcGVyX29iamZpbGUtPnN0cl9idWZmZXIgPSBkd2FyZjJf cmVhZF9zZWN0aW9uIChvYmpmaWxlLCBkd2FyZl9zdHJfc2VjdGlvbik7Ci0g IGVsc2UKLSAgICBkd2FyZjJfcGVyX29iamZpbGUtPnN0cl9idWZmZXIgPSBO VUxMOworICAvKiBDaGVjayBpZiB0aGUgZmlsZSBoYXMgYSA0LWJ5dGUgaGVh ZGVyIGluZGljYXRpbmcgY29tcHJlc3Npb24uICAqLworICBpZiAoaW5mby0+ c2l6ZSA+IHNpemVvZiAoaGVhZGVyKQorICAgICAgJiYgYmZkX3NlZWsgKGFi ZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgPT0gMAorICAgICAgJiYg YmZkX2JyZWFkIChoZWFkZXIsIHNpemVvZiAoaGVhZGVyKSwgYWJmZCkgPT0g c2l6ZW9mIChoZWFkZXIpKQorICAgIHsKKyAgICAgIC8qIFVwb24gZGVjb21w cmVzc2lvbiwgdXBkYXRlIHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8K KyAgICAgIGlmIChzdHJuY21wIChoZWFkZXIsICJaTElCIiwgc2l6ZW9mICho ZWFkZXIpKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgemxpYl9kZWNv bXByZXNzX3NlY3Rpb24gKG9iamZpbGUsIHNlY3RwLCAmaW5mby0+YnVmZmVy LAorCQkJCSAgICZpbmZvLT5zaXplKTsKKyAgICAgICAgICByZXR1cm47Cisg ICAgICAgIH0KKyAgICB9CiAKLSAgaWYgKGR3YXJmX21hY2luZm9fc2VjdGlv bikKLSAgICBkd2FyZjJfcGVyX29iamZpbGUtPm1hY2luZm9fYnVmZmVyID0g ZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwKLQkJCQkJCWR3YXJmX21h Y2luZm9fc2VjdGlvbik7Ci0gIGVsc2UKLSAgICBkd2FyZjJfcGVyX29iamZp bGUtPm1hY2luZm9fYnVmZmVyID0gTlVMTDsKKyNpZmRlZiBIQVZFX01NQVAK KyAgaWYgKHBhZ2VzaXplID09IDApCisgICAgcGFnZXNpemUgPSBnZXRwYWdl c2l6ZSAoKTsKKyAgaWYgKGluZm8tPnNpemUgPiA0ICogcGFnZXNpemUgJiYg KHNlY3RwLT5mbGFncyAmIFNFQ19SRUxPQykgPT0gMCkKKyAgICB7CisgICAg ICBvZmZfdCBwZ19vZmZzZXQgPSBzZWN0cC0+ZmlsZXBvcyAmIH4ocGFnZXNp emUgLSAxKTsKKyAgICAgIHNpemVfdCBtYXBfbGVuZ3RoID0gaW5mby0+c2l6 ZSArIHNlY3RwLT5maWxlcG9zIC0gcGdfb2Zmc2V0OworICAgICAgY2FkZHJf dCByZXRidWYgPSBiZmRfbW1hcCAoYWJmZCwgMCwgbWFwX2xlbmd0aCwgUFJP VF9SRUFELAorCQkJCSBNQVBfUFJJVkFURSwgcGdfb2Zmc2V0KTsKIAotICBp ZiAoZHdhcmZfcmFuZ2VzX3NlY3Rpb24pCi0gICAgZHdhcmYyX3Blcl9vYmpm aWxlLT5yYW5nZXNfYnVmZmVyID0gZHdhcmYyX3JlYWRfc2VjdGlvbiAob2Jq ZmlsZSwgZHdhcmZfcmFuZ2VzX3NlY3Rpb24pOwotICBlbHNlCi0gICAgZHdh cmYyX3Blcl9vYmpmaWxlLT5yYW5nZXNfYnVmZmVyID0gTlVMTDsKKyAgICAg IGlmIChyZXRidWYgIT0gTUFQX0ZBSUxFRCkKKwl7CisJICBpbmZvLT53YXNf bW1hcGVkID0gMTsKKwkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiArIChzZWN0 cC0+ZmlsZXBvcyAmIChwYWdlc2l6ZSAtIDEpKSA7CisJICByZXR1cm47CisJ fQorICAgIH0KKyNlbmRpZgogCi0gIGlmIChkd2FyZl9sb2Nfc2VjdGlvbikK LSAgICBkd2FyZjJfcGVyX29iamZpbGUtPmxvY19idWZmZXIgPSBkd2FyZjJf cmVhZF9zZWN0aW9uIChvYmpmaWxlLCBkd2FyZl9sb2Nfc2VjdGlvbik7Ci0g IGVsc2UKLSAgICBkd2FyZjJfcGVyX29iamZpbGUtPmxvY19idWZmZXIgPSBO VUxMOworICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBu b3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KKyAgaW5mby0+YnVmZmVyID0g YnVmCisgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLCBpbmZvLT5zaXplKTsKKworICAvKiBXaGVuIGRlYnVnZ2luZyAu byBmaWxlcywgd2UgbWF5IG5lZWQgdG8gYXBwbHkgcmVsb2NhdGlvbnM7IHNl ZQorICAgICBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KKyAgICAgV2UgbmV2ZXIgY29tcHJl c3Mgc2VjdGlvbnMgaW4gLm8gZmlsZXMsIHNvIHdlIG9ubHkgbmVlZCB0bwor ICAgICB0cnkgdGhpcyB3aGVuIHRoZSBzZWN0aW9uIGlzIG5vdCBjb21wcmVz c2VkLiAgKi8KKyAgcmV0YnVmID0gc3ltZmlsZV9yZWxvY2F0ZV9kZWJ1Z19z ZWN0aW9uIChhYmZkLCBzZWN0cCwgYnVmKTsKKyAgaWYgKHJldGJ1ZiAhPSBO VUxMKQorICAgIHsKKyAgICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKKyAg ICAgIHJldHVybjsKKyAgICB9CisKKyAgaWYgKGJmZF9zZWVrIChhYmZkLCBz ZWN0cC0+ZmlsZXBvcywgU0VFS19TRVQpICE9IDAKKyAgICAgIHx8IGJmZF9i cmVhZCAoYnVmLCBpbmZvLT5zaXplLCBhYmZkKSAhPSBpbmZvLT5zaXplKQor ICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBk YXRhIGZyb20gJyVzJyIpLAorCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQp KTsKK30KKworLyogRmlsbCBpbiBTRUNUUCwgQlVGUCBhbmQgU0laRVAgd2l0 aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCisgICBTRUNUSU9O X05BTUUuICovCisKK3ZvaWQKK2R3YXJmMl9nZXRfc2VjdGlvbl9pbmZvIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc2VjdGlvbl9u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFzZWN0aW9uICoqc2Vj dHAsIGdkYl9ieXRlICoqYnVmcCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBiZmRfc2l6ZV90eXBlICpzaXplcCkKK3sKKyAgc3RydWN0IGR3YXJmMl9w ZXJfb2JqZmlsZSAqZGF0YQorICAgID0gb2JqZmlsZV9kYXRhIChvYmpmaWxl LCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7CisgIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9pbmZvICppbmZvOworICBpZiAoc2VjdGlvbl9pc19wIChzZWN0 aW9uX25hbWUsIEVIX0ZSQU1FX1NFQ1RJT04pKQorICAgIGluZm8gPSAmZGF0 YS0+ZWhfZnJhbWU7CisgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdGlv bl9uYW1lLCBGUkFNRV9TRUNUSU9OKSkKKyAgICBpbmZvID0gJmRhdGEtPmZy YW1lOworICBlbHNlCisgICAgZ2RiX2Fzc2VydCAoMCk7CisKKyAgaWYgKGlu Zm8tPmFzZWN0aW9uICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGlu Zm8tPmJ1ZmZlciA9PSBOVUxMKQorICAgIC8qIFdlIGhhdmVuJ3QgcmVhZCB0 aGlzIHNlY3Rpb24gaW4geWV0LiAgRG8gaXQgbm93LiAgKi8KKyAgICBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBpbmZvKTsKKworICAqc2VjdHAg PSBpbmZvLT5hc2VjdGlvbjsKKyAgKmJ1ZnAgPSBpbmZvLT5idWZmZXI7Cisg ICpzaXplcCA9IGluZm8tPnNpemU7Cit9CisKKy8qIEJ1aWxkIGEgcGFydGlh bCBzeW1ib2wgdGFibGUuICAqLworCit2b2lkCitkd2FyZjJfYnVpbGRfcHN5 bXRhYnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgbWFpbmxpbmUp Cit7CisgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJf cGVyX29iamZpbGUtPmluZm8pOworICBkd2FyZjJfcmVhZF9zZWN0aW9uIChv YmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYpOworICBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxl LT5saW5lKTsKKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3 YXJmMl9wZXJfb2JqZmlsZS0+c3RyKTsKKyAgZHdhcmYyX3JlYWRfc2VjdGlv biAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mbyk7Cisg IGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29i amZpbGUtPnJhbmdlcyk7CisgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZp bGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmxvYyk7CisgIGR3YXJmMl9yZWFk X3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmVoX2Zy YW1lKTsKKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJm Ml9wZXJfb2JqZmlsZS0+ZnJhbWUpOwogCiAgIGlmIChtYWlubGluZQogICAg ICAgfHwgKG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5zaXplID09IDAKQEAg LTEzMzcsNyArMTQyMyw3IEBAIGR3YXJmMl9idWlsZF9wc3ltdGFic19lYXN5 IChzdHJ1Y3Qgb2JqZmkKICAgcHVibmFtZXNfYnVmZmVyID0gZHdhcmYyX3Jl YWRfc2VjdGlvbiAob2JqZmlsZSwKIAkJCQkJIGR3YXJmX3B1Ym5hbWVzX3Nl Y3Rpb24pOwogICBwdWJuYW1lc19wdHIgPSBwdWJuYW1lc19idWZmZXI7Ci0g IHdoaWxlICgocHVibmFtZXNfcHRyIC0gcHVibmFtZXNfYnVmZmVyKSA8IGR3 YXJmMl9wZXJfb2JqZmlsZS0+cHVibmFtZXNfc2l6ZSkKKyAgd2hpbGUgKChw dWJuYW1lc19wdHIgLSBwdWJuYW1lc19idWZmZXIpIDwgZHdhcmYyX3Blcl9v YmpmaWxlLT5wdWJuYW1lcy5zaXplKQogICAgIHsKICAgICAgIHVuc2lnbmVk IGludCBieXRlc19yZWFkOwogCkBAIC0xNDEyLDE5ICsxNDk4LDE5IEBAIHBh cnRpYWxfcmVhZF9jb21wX3VuaXRfaGVhZCAoc3RydWN0IGNvbXAKIAkgICAi KGlzICVkLCBzaG91bGQgYmUgJWQpIFtpbiBtb2R1bGUgJXNdIiksIGhlYWRl ci0+dmVyc2lvbiwKIAkgICAyLCBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7 CiAKLSAgaWYgKGhlYWRlci0+YWJicmV2X29mZnNldCA+PSBkd2FyZjJfcGVy X29iamZpbGUtPmFiYnJldl9zaXplKQorICBpZiAoaGVhZGVyLT5hYmJyZXZf b2Zmc2V0ID49IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LnNpemUpCiAg ICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBiYWQgb2Zmc2V0ICgweCVseCkg aW4gY29tcGlsYXRpb24gdW5pdCBoZWFkZXIgIgogCSAgICIob2Zmc2V0IDB4 JWx4ICsgNikgW2luIG1vZHVsZSAlc10iKSwKIAkgICAobG9uZykgaGVhZGVy LT5hYmJyZXZfb2Zmc2V0LAotCSAgIChsb25nKSAoYmVnX29mX2NvbXBfdW5p dCAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mb19idWZmZXIpLAorCSAgIChs b25nKSAoYmVnX29mX2NvbXBfdW5pdCAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+ aW5mby5idWZmZXIpLAogCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsK IAogICBpZiAoYmVnX29mX2NvbXBfdW5pdCArIGhlYWRlci0+bGVuZ3RoICsg aGVhZGVyLT5pbml0aWFsX2xlbmd0aF9zaXplCi0gICAgICA+IGR3YXJmMl9w ZXJfb2JqZmlsZS0+aW5mb19idWZmZXIgKyBkd2FyZjJfcGVyX29iamZpbGUt PmluZm9fc2l6ZSkKKyAgICAgID4gZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZv LmJ1ZmZlciArIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5zaXplKQogICAg IGVycm9yIChfKCJEd2FyZiBFcnJvcjogYmFkIGxlbmd0aCAoMHglbHgpIGlu IGNvbXBpbGF0aW9uIHVuaXQgaGVhZGVyICIKIAkgICAiKG9mZnNldCAweCVs eCArIDApIFtpbiBtb2R1bGUgJXNdIiksCiAJICAgKGxvbmcpIGhlYWRlci0+ bGVuZ3RoLAotCSAgIChsb25nKSAoYmVnX29mX2NvbXBfdW5pdCAtIGR3YXJm Ml9wZXJfb2JqZmlsZS0+aW5mb19idWZmZXIpLAorCSAgIChsb25nKSAoYmVn X29mX2NvbXBfdW5pdCAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZm ZXIpLAogCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKIAogICByZXR1 cm4gaW5mb19wdHI7CkBAIC0xNTA2LDcgKzE1OTIsNyBAQCBkd2FyZjJfYnVp bGRfcHN5bXRhYnNfaGFyZCAoc3RydWN0IG9iamZpCiAgIHN0cnVjdCBjbGVh bnVwICpiYWNrX3RvOwogICBDT1JFX0FERFIgYmFzZWFkZHI7CiAKLSAgaW5m b19wdHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm9fYnVmZmVyOworICBp bmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7CiAK ICAgLyogQW55IGNhY2hlZCBjb21waWxhdGlvbiB1bml0cyB3aWxsIGJlIGxp bmtlZCBieSB0aGUgcGVyLW9iamZpbGUKICAgICAgcmVhZF9pbl9jaGFpbi4g IE1ha2Ugc3VyZSB0byBmcmVlIHRoZW0gd2hlbiB3ZSdyZSBkb25lLiAgKi8K QEAgLTE1MzAsOCArMTYxNiw4IEBAIGR3YXJmMl9idWlsZF9wc3ltdGFic19o YXJkIChzdHJ1Y3Qgb2JqZmkKIAogICAgICBGb3IgdGhpcyBsb29wIGNvbmRp dGlvbiwgc2ltcGx5IGNoZWNraW5nIHdoZXRoZXIgdGhlcmUncyBhbnkgZGF0 YQogICAgICBsZWZ0IGF0IGFsbCBzaG91bGQgYmUgc3VmZmljaWVudC4gICov Ci0gIHdoaWxlIChpbmZvX3B0ciA8IChkd2FyZjJfcGVyX29iamZpbGUtPmlu Zm9fYnVmZmVyCi0JCSAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPmluZm9f c2l6ZSkpCisgIHdoaWxlIChpbmZvX3B0ciA8IChkd2FyZjJfcGVyX29iamZp bGUtPmluZm8uYnVmZmVyCisJCSAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUt PmluZm8uc2l6ZSkpCiAgICAgewogICAgICAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG9faW5uZXI7CiAgICAgICBzdHJ1Y3QgZHdhcmYyX2N1IGN1OwpAQCAt MTU1MSw3ICsxNjM3LDcgQEAgZHdhcmYyX2J1aWxkX3BzeW10YWJzX2hhcmQg KHN0cnVjdCBvYmpmaQogICAgICAgaW5mb19wdHIgPSBwYXJ0aWFsX3JlYWRf Y29tcF91bml0X2hlYWQgKCZjdS5oZWFkZXIsIGluZm9fcHRyLCBhYmZkKTsK IAogICAgICAgLyogQ29tcGxldGUgdGhlIGN1X2hlYWRlciAqLwotICAgICAg Y3UuaGVhZGVyLm9mZnNldCA9IGJlZ19vZl9jb21wX3VuaXQgLSBkd2FyZjJf cGVyX29iamZpbGUtPmluZm9fYnVmZmVyOworICAgICAgY3UuaGVhZGVyLm9m ZnNldCA9IGJlZ19vZl9jb21wX3VuaXQgLSBkd2FyZjJfcGVyX29iamZpbGUt PmluZm8uYnVmZmVyOwogICAgICAgY3UuaGVhZGVyLmZpcnN0X2RpZV9vZmZz ZXQgPSBpbmZvX3B0ciAtIGJlZ19vZl9jb21wX3VuaXQ7CiAKICAgICAgIGN1 Lmxpc3RfaW5fc2NvcGUgPSAmZmlsZV9zeW1ib2xzOwpAQCAtMTcwOCw3ICsx Nzk0LDcgQEAgbG9hZF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdAogICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKICAgc3RydWN0IGNs ZWFudXAgKmJhY2tfdG87CiAKLSAgaW5mb19wdHIgPSBkd2FyZjJfcGVyX29i amZpbGUtPmluZm9fYnVmZmVyICsgdGhpc19jdS0+b2Zmc2V0OworICBpbmZv X3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIgKyB0aGlz X2N1LT5vZmZzZXQ7CiAgIGJlZ19vZl9jb21wX3VuaXQgPSBpbmZvX3B0cjsK IAogICBjdSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkp OwpAQCAtMTcyMCw3ICsxODA2LDcgQEAgbG9hZF9jb21wX3VuaXQgKHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdAogICBpbmZvX3B0ciA9IHBhcnRpYWxfcmVh ZF9jb21wX3VuaXRfaGVhZCAoJmN1LT5oZWFkZXIsIGluZm9fcHRyLCBhYmZk KTsKIAogICAvKiBDb21wbGV0ZSB0aGUgY3VfaGVhZGVyLiAgKi8KLSAgY3Ut PmhlYWRlci5vZmZzZXQgPSBiZWdfb2ZfY29tcF91bml0IC0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmZvX2J1ZmZlcjsKKyAgY3UtPmhlYWRlci5vZmZzZXQg PSBiZWdfb2ZfY29tcF91bml0IC0gZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZv LmJ1ZmZlcjsKICAgY3UtPmhlYWRlci5maXJzdF9kaWVfb2Zmc2V0ID0gaW5m b19wdHIgLSBiZWdfb2ZfY29tcF91bml0OwogCiAgIC8qIFJlYWQgdGhlIGFi YnJldnMgZm9yIHRoaXMgY29tcGlsYXRpb24gdW5pdCBpbnRvIGEgdGFibGUu ICAqLwpAQCAtMTc2MCwyMSArMTg0NiwyMSBAQCBjcmVhdGVfYWxsX2NvbXBf dW5pdHMgKHN0cnVjdCBvYmpmaWxlICpvCiAgIGludCBuX2FsbG9jYXRlZDsK ICAgaW50IG5fY29tcF91bml0czsKICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqKmFsbF9jb21wX3VuaXRzOwotICBnZGJfYnl0ZSAqaW5mb19wdHIg PSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm9fYnVmZmVyOworICBnZGJfYnl0 ZSAqaW5mb19wdHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uYnVmZmVy OwogCiAgIG5fY29tcF91bml0cyA9IDA7CiAgIG5fYWxsb2NhdGVkID0gMTA7 CiAgIGFsbF9jb21wX3VuaXRzID0geG1hbGxvYyAobl9hbGxvY2F0ZWQKIAkJ CSAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKSk7 CiAgIAotICB3aGlsZSAoaW5mb19wdHIgPCBkd2FyZjJfcGVyX29iamZpbGUt PmluZm9fYnVmZmVyICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvX3NpemUp CisgIHdoaWxlIChpbmZvX3B0ciA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5m by5idWZmZXIgKyBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uc2l6ZSkKICAg ICB7CiAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbml0aWFsX2xlbmd0 aF9zaXplOwogICAgICAgZ2RiX2J5dGUgKmJlZ19vZl9jb21wX3VuaXQ7CiAg ICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1OwogICAg ICAgdW5zaWduZWQgaW50IG9mZnNldDsKIAotICAgICAgb2Zmc2V0ID0gaW5m b19wdHIgLSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm9fYnVmZmVyOworICAg ICAgb2Zmc2V0ID0gaW5mb19wdHIgLSBkd2FyZjJfcGVyX29iamZpbGUtPmlu Zm8uYnVmZmVyOwogCiAgICAgICAvKiBSZWFkIGp1c3QgZW5vdWdoIGluZm9y bWF0aW9uIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBuZXh0CiAJIGNvbXBpbGF0 aW9uIHVuaXQgaXMuICAqLwpAQCAtMjQyMCw3ICsyNTA2LDcgQEAgc2tpcF9v bmVfZGllIChnZGJfYnl0ZSAqaW5mb19wdHIsIHN0cnVjdAogCSAgaWYgKGF0 dHIuZm9ybSA9PSBEV19GT1JNX3JlZl9hZGRyKQogCSAgICBjb21wbGFpbnQg KCZzeW1maWxlX2NvbXBsYWludHMsIF8oImlnbm9yaW5nIGFic29sdXRlIERX X0FUX3NpYmxpbmciKSk7CiAJICBlbHNlCi0JICAgIHJldHVybiBkd2FyZjJf cGVyX29iamZpbGUtPmluZm9fYnVmZmVyCisJICAgIHJldHVybiBkd2FyZjJf cGVyX29iamZpbGUtPmluZm8uYnVmZmVyCiAJICAgICAgKyBkd2FyZjJfZ2V0 X3JlZl9kaWVfb2Zmc2V0ICgmYXR0cik7CiAJfQogCkBAIC0yNjkzLDcgKzI3 NzksNyBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Bl cl9jCiAgIC8qIFNldCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgcGFydGlh bCBzeW1ib2wgdGFibGUgaW5mby4gICovCiAgIG9mZnNldCA9IHBlcl9jdS0+ b2Zmc2V0OwogCi0gIGluZm9fcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5p bmZvX2J1ZmZlciArIG9mZnNldDsKKyAgaW5mb19wdHIgPSBkd2FyZjJfcGVy X29iamZpbGUtPmluZm8uYnVmZmVyICsgb2Zmc2V0OwogCiAgIGN1ID0geG1h bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2N1KSk7CiAgIG1lbXNldCAo Y3UsIDAsIHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkpOwpAQCAtMzM1OCwx NCArMzQ0NCwxNCBAQCBkd2FyZjJfcmFuZ2VzX3JlYWQgKHVuc2lnbmVkIG9m ZnNldCwgQ09SCiAgIGZvdW5kX2Jhc2UgPSBjdS0+YmFzZV9rbm93bjsKICAg YmFzZSA9IGN1LT5iYXNlX2FkZHJlc3M7CiAKLSAgaWYgKG9mZnNldCA+PSBk d2FyZjJfcGVyX29iamZpbGUtPnJhbmdlc19zaXplKQorICBpZiAob2Zmc2V0 ID49IGR3YXJmMl9wZXJfb2JqZmlsZS0+cmFuZ2VzLnNpemUpCiAgICAgewog ICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogCQkgXygi T2Zmc2V0ICVkIG91dCBvZiBib3VuZHMgZm9yIERXX0FUX3JhbmdlcyBhdHRy aWJ1dGUiKSwKIAkJIG9mZnNldCk7CiAgICAgICByZXR1cm4gMDsKICAgICB9 Ci0gIGJ1ZmZlciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+cmFuZ2VzX2J1ZmZl ciArIG9mZnNldDsKKyAgYnVmZmVyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5y YW5nZXMuYnVmZmVyICsgb2Zmc2V0OwogCiAgIC8qIFJlYWQgaW4gdGhlIGxh cmdlc3QgcG9zc2libGUgYWRkcmVzcy4gICovCiAgIG1hcmtlciA9IHJlYWRf YWRkcmVzcyAob2JmZCwgYnVmZmVyLCBjdSwgJmR1bW15KTsKQEAgLTM2NDAs NyArMzcyNiw3IEBAIGR3YXJmMl9yZWNvcmRfYmxvY2tfcmFuZ2VzIChzdHJ1 Y3QgZGllX2kKICAgICAgIC8qIFRoZSB2YWx1ZSBvZiB0aGUgRFdfQVRfcmFu Z2VzIGF0dHJpYnV0ZSBpcyB0aGUgb2Zmc2V0IG9mIHRoZQogICAgICAgICAg YWRkcmVzcyByYW5nZSBsaXN0IGluIHRoZSAuZGVidWdfcmFuZ2VzIHNlY3Rp b24uICAqLwogICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBEV19VTlNO RCAoYXR0cik7Ci0gICAgICBnZGJfYnl0ZSAqYnVmZmVyID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5yYW5nZXNfYnVmZmVyICsgb2Zmc2V0OworICAgICAgZ2Ri X2J5dGUgKmJ1ZmZlciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+cmFuZ2VzLmJ1 ZmZlciArIG9mZnNldDsKIAogICAgICAgLyogRm9yIHNvbWUgdGFyZ2V0IGFy Y2hpdGVjdHVyZXMsIGJ1dCBub3Qgb3RoZXJzLCB0aGUKICAgICAgICAgIHJl YWRfYWRkcmVzcyBmdW5jdGlvbiBzaWduLWV4dGVuZHMgdGhlIGFkZHJlc3Nl cyBpdCByZXR1cm5zLgpAQCAtMzY1OSw3ICszNzQ1LDcgQEAgZHdhcmYyX3Jl Y29yZF9ibG9ja19yYW5nZXMgKHN0cnVjdCBkaWVfaQogICAgICAgQ09SRV9B RERSIGJhc2UgPSBjdS0+YmFzZV9hZGRyZXNzOwogICAgICAgaW50IGJhc2Vf a25vd24gPSBjdS0+YmFzZV9rbm93bjsKIAotICAgICAgaWYgKG9mZnNldCA+ PSBkd2FyZjJfcGVyX29iamZpbGUtPnJhbmdlc19zaXplKQorICAgICAgaWYg KG9mZnNldCA+PSBkd2FyZjJfcGVyX29iamZpbGUtPnJhbmdlcy5zaXplKQog ICAgICAgICB7CiAgICAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLAogICAgICAgICAgICAgICAgICAgICAgXygiT2Zmc2V0ICVsdSBv dXQgb2YgYm91bmRzIGZvciBEV19BVF9yYW5nZXMgYXR0cmlidXRlIiksCkBA IC01NDk3LDEzMSArNTU4Myw2IEBAIHJlYWRfZGllX2FuZF9zaWJsaW5ncyAo Z2RiX2J5dGUgKmluZm9fcHQKICAgICB9CiB9CiAKLS8qIERlY29tcHJlc3Mg YSBzZWN0aW9uIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgemxpYi4gIFN0 b3JlIHRoZQotICAgZGVjb21wcmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXpl LCBpbiBPVVRCVUYgYW5kIE9VVFNJWkUuICAqLwotCi1zdGF0aWMgdm9pZAot emxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBhc2VjdGlvbiAqc2VjdHAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgZ2RiX2J5dGUgKipvdXRidWYsIGJmZF9zaXplX3R5cGUgKm91dHNpemUp Ci17Ci0gIGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7Ci0jaWZuZGVmIEhB VkVfWkxJQl9ICi0gIGVycm9yIChfKCJTdXBwb3J0IGZvciB6bGliLWNvbXBy ZXNzZWQgRFdBUkYgZGF0YSAoZnJvbSAnJXMnKSAiCi0gICAgICAgICAgICJp cyBkaXNhYmxlZCBpbiB0aGlzIGNvcHkgb2YgR0RCIiksCi0gICAgICAgICBi ZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0jZWxzZQotICBiZmRfc2l6ZV90 eXBlIGNvbXByZXNzZWRfc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChz ZWN0cCk7Ci0gIGdkYl9ieXRlICpjb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxs b2MgKGNvbXByZXNzZWRfc2l6ZSk7Ci0gIGJmZF9zaXplX3R5cGUgdW5jb21w cmVzc2VkX3NpemU7Ci0gIGdkYl9ieXRlICp1bmNvbXByZXNzZWRfYnVmZmVy OwotICB6X3N0cmVhbSBzdHJtOwotICBpbnQgcmM7Ci0gIGludCBoZWFkZXJf c2l6ZSA9IDEyOwotCi0gIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZp bGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0gICAgICB8fCBiZmRfYnJlYWQgKGNv bXByZXNzZWRfYnVmZmVyLCBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNv bXByZXNzZWRfc2l6ZSkKLSAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENh bid0IHJlYWQgRFdBUkYgZGF0YSBmcm9tICclcyciKSwKLSAgICAgICAgICAg YmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotCi0gIC8qIFJlYWQgdGhlIHps aWIgaGVhZGVyLiAgSW4gdGhpcyBjYXNlLCBpdCBzaG91bGQgYmUgIlpMSUIi IGZvbGxvd2VkCi0gICAgIGJ5IHRoZSB1bmNvbXByZXNzZWQgc2VjdGlvbiBz aXplLCA4IGJ5dGVzIGluIGJpZy1lbmRpYW4gb3JkZXIuICAqLwotICBpZiAo Y29tcHJlc3NlZF9zaXplIDwgaGVhZGVyX3NpemUKLSAgICAgIHx8IHN0cm5j bXAgKGNvbXByZXNzZWRfYnVmZmVyLCAiWkxJQiIsIDQpICE9IDApCi0gICAg ZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBDb3JydXB0IERXQVJGIFpMSUIgaGVh ZGVyIGZyb20gJyVzJyIpLAotICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1l IChhYmZkKSk7Ci0gIHVuY29tcHJlc3NlZF9zaXplID0gY29tcHJlc3NlZF9i dWZmZXJbNF07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OwotICB1bmNvbXBy ZXNzZWRfc2l6ZSArPSBjb21wcmVzc2VkX2J1ZmZlcls1XTsgdW5jb21wcmVz c2VkX3NpemUgPDw9IDg7Ci0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXBy ZXNzZWRfYnVmZmVyWzZdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSAg dW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbN107IHVu Y29tcHJlc3NlZF9zaXplIDw8PSA4OwotICB1bmNvbXByZXNzZWRfc2l6ZSAr PSBjb21wcmVzc2VkX2J1ZmZlcls4XTsgdW5jb21wcmVzc2VkX3NpemUgPDw9 IDg7Ci0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVy WzldOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSAgdW5jb21wcmVzc2Vk X3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbMTBdOyB1bmNvbXByZXNzZWRf c2l6ZSA8PD0gODsKLSAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3Nl ZF9idWZmZXJbMTFdOwotCi0gIC8qIEl0IGlzIHBvc3NpYmxlIHRoZSBzZWN0 aW9uIGNvbnNpc3RzIG9mIHNldmVyYWwgY29tcHJlc3NlZAotICAgICBidWZm ZXJzIGNvbmNhdGVuYXRlZCB0b2dldGhlciwgc28gd2UgdW5jb21wcmVzcyBp biBhIGxvb3AuICAqLwotICBzdHJtLnphbGxvYyA9IE5VTEw7Ci0gIHN0cm0u emZyZWUgPSBOVUxMOwotICBzdHJtLm9wYXF1ZSA9IE5VTEw7Ci0gIHN0cm0u YXZhaWxfaW4gPSBjb21wcmVzc2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKLSAg c3RybS5uZXh0X2luID0gKEJ5dGVmKikgY29tcHJlc3NlZF9idWZmZXIgKyBo ZWFkZXJfc2l6ZTsKLSAgc3RybS5hdmFpbF9vdXQgPSB1bmNvbXByZXNzZWRf c2l6ZTsKLSAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2Mg KCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWRfc2l6ZSk7Ci0g IHJjID0gaW5mbGF0ZUluaXQgKCZzdHJtKTsKLSAgd2hpbGUgKHN0cm0uYXZh aWxfaW4gPiAwKQotICAgIHsKLSAgICAgIGlmIChyYyAhPSBaX09LKQotICAg ICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IHNldHRpbmcgdXAgRFdBUkYg dW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIpLAotICAgICAgICAgICAgICAg YmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKLSAgICAgIHN0cm0ubmV4 dF9vdXQgPSAoKEJ5dGVmKikgdW5jb21wcmVzc2VkX2J1ZmZlcgotICAgICAg ICAgICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0u YXZhaWxfb3V0KSk7Ci0gICAgICByYyA9IGluZmxhdGUgKCZzdHJtLCBaX0ZJ TklTSCk7Ci0gICAgICBpZiAocmMgIT0gWl9TVFJFQU1fRU5EKQotICAgICAg ICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IHpsaWIgZXJyb3IgdW5jb21wcmVz c2luZyBmcm9tICclcyc6ICVkIiksCi0gICAgICAgICAgICAgICBiZmRfZ2V0 X2ZpbGVuYW1lIChhYmZkKSwgcmMpOwotICAgICAgcmMgPSBpbmZsYXRlUmVz ZXQgKCZzdHJtKTsKLSAgICB9Ci0gIHJjID0gaW5mbGF0ZUVuZCAoJnN0cm0p OwotICBpZiAocmMgIT0gWl9PSwotICAgICAgfHwgc3RybS5hdmFpbF9vdXQg IT0gMCkKLSAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGNvbmNsdWRpbmcg RFdBUkYgdW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIpLAotICAgICAgICAg ICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwgcmMpOwotCi0gIHhmcmVlIChj b21wcmVzc2VkX2J1ZmZlcik7Ci0gICpvdXRidWYgPSB1bmNvbXByZXNzZWRf YnVmZmVyOwotICAqb3V0c2l6ZSA9IHVuY29tcHJlc3NlZF9zaXplOwotI2Vu ZGlmCi19Ci0KLQotLyogUmVhZCB0aGUgY29udGVudHMgb2YgdGhlIHNlY3Rp b24gYXQgT0ZGU0VUIGFuZCBvZiBzaXplIFNJWkUgZnJvbSB0aGUKLSAgIG9i amVjdCBmaWxlIHNwZWNpZmllZCBieSBPQkpGSUxFIGludG8gdGhlIG9iamZp bGVfb2JzdGFjayBhbmQgcmV0dXJuIGl0LgotICAgSWYgdGhlIHNlY3Rpb24g aXMgY29tcHJlc3NlZCwgdW5jb21wcmVzcyBpdCBiZWZvcmUgcmV0dXJuaW5n LiAgKi8KLQotZ2RiX2J5dGUgKgotZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCkKLXsKLSAg YmZkICphYmZkID0gb2JqZmlsZS0+b2JmZDsKLSAgZ2RiX2J5dGUgKmJ1Ziwg KnJldGJ1ZjsKLSAgYmZkX3NpemVfdHlwZSBzaXplID0gYmZkX2dldF9zZWN0 aW9uX3NpemUgKHNlY3RwKTsKLSAgdW5zaWduZWQgY2hhciBoZWFkZXJbNF07 Ci0KLSAgaWYgKHNpemUgPT0gMCkKLSAgICByZXR1cm4gTlVMTDsKLQotICAv KiBDaGVjayBpZiB0aGUgZmlsZSBoYXMgYSA0LWJ5dGUgaGVhZGVyIGluZGlj YXRpbmcgY29tcHJlc3Npb24uICAqLwotICBpZiAoc2l6ZSA+IHNpemVvZiAo aGVhZGVyKQotICAgICAgJiYgYmZkX3NlZWsgKGFiZmQsIHNlY3RwLT5maWxl cG9zLCBTRUVLX1NFVCkgPT0gMAotICAgICAgJiYgYmZkX2JyZWFkIChoZWFk ZXIsIHNpemVvZiAoaGVhZGVyKSwgYWJmZCkgPT0gc2l6ZW9mIChoZWFkZXIp KQotICAgIHsKLSAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBkYXRl IHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KLSAgICAgIGlmIChzdHJu Y21wIChoZWFkZXIsICJaTElCIiwgc2l6ZW9mIChoZWFkZXIpKSA9PSAwKQot ICAgICAgICB7Ci0gICAgICAgICAgemxpYl9kZWNvbXByZXNzX3NlY3Rpb24g KG9iamZpbGUsIHNlY3RwLCAmYnVmLCAmc2l6ZSk7Ci0gICAgICAgICAgZHdh cmYyX3Jlc2l6ZV9zZWN0aW9uIChzZWN0cCwgc2l6ZSk7Ci0gICAgICAgICAg cmV0dXJuIGJ1ZjsKLSAgICAgICAgfQotICAgIH0KLQotICAvKiBJZiB3ZSBn ZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0 aW9uLiAgKi8KLSAgYnVmID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywgc2l6ZSk7Ci0gIC8qIFdoZW4gZGVidWdnaW5nIC5v IGZpbGVzLCB3ZSBtYXkgbmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2Vl Ci0gICAgIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDAyLTA0L21zZzAwMTM2Lmh0bWwgLgotICAgICBXZSBuZXZlciBjb21wcmVz cyBzZWN0aW9ucyBpbiAubyBmaWxlcywgc28gd2Ugb25seSBuZWVkIHRvCi0g ICAgIHRyeSB0aGlzIHdoZW4gdGhlIHNlY3Rpb24gaXMgbm90IGNvbXByZXNz ZWQuICAqLwotICByZXRidWYgPSBzeW1maWxlX3JlbG9jYXRlX2RlYnVnX3Nl Y3Rpb24gKGFiZmQsIHNlY3RwLCBidWYpOwotICBpZiAocmV0YnVmICE9IE5V TEwpCi0gICAgcmV0dXJuIHJldGJ1ZjsKLQotICBpZiAoYmZkX3NlZWsgKGFi ZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgIT0gMAotICAgICAgfHwg YmZkX2JyZWFkIChidWYsIHNpemUsIGFiZmQpICE9IHNpemUpCi0gICAgZXJy b3IgKF8oIkR3YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJv bSAnJXMnIiksCi0JICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotCi0g IHJldHVybiBidWY7Ci19Ci0KIC8qIEluIERXQVJGIHZlcnNpb24gMiwgdGhl IGRlc2NyaXB0aW9uIG9mIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaXMK ICAgIHN0b3JlZCBpbiBhIHNlcGFyYXRlIC5kZWJ1Z19hYmJyZXYgc2VjdGlv bi4gIEJlZm9yZSB3ZSByZWFkIGFueQogICAgZGllcyBmcm9tIGEgc2VjdGlv biB3ZSByZWFkIGluIGFsbCBhYmJyZXZpYXRpb25zIGFuZCBpbnN0YWxsIHRo ZW0KQEAgLTU2NDcsNyArNTYwOCw3IEBAIGR3YXJmMl9yZWFkX2FiYnJldnMg KGJmZCAqYWJmZCwgc3RydWN0IGQKICAgbWVtc2V0IChjdS0+ZHdhcmYyX2Fi YnJldnMsIDAsCiAgICAgICAgICAgQUJCUkVWX0hBU0hfU0laRSAqIHNpemVv ZiAoc3RydWN0IGFiYnJldl9pbmZvICopKTsKIAotICBhYmJyZXZfcHRyID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXZfYnVmZmVyICsgY3VfaGVhZGVy LT5hYmJyZXZfb2Zmc2V0OworICBhYmJyZXZfcHRyID0gZHdhcmYyX3Blcl9v YmpmaWxlLT5hYmJyZXYuYnVmZmVyICsgY3VfaGVhZGVyLT5hYmJyZXZfb2Zm c2V0OwogICBhYmJyZXZfbnVtYmVyID0gcmVhZF91bnNpZ25lZF9sZWIxMjgg KGFiZmQsIGFiYnJldl9wdHIsICZieXRlc19yZWFkKTsKICAgYWJicmV2X3B0 ciArPSBieXRlc19yZWFkOwogCkBAIC01NzE5LDggKzU2ODAsOCBAQCBkd2Fy ZjJfcmVhZF9hYmJyZXZzIChiZmQgKmFiZmQsIHN0cnVjdCBkCiAgICAgICAg ICBhbHJlYWR5IHJlYWQgKHdoaWNoIG1lYW5zIHdlIGFyZSBhYm91dCB0byBy ZWFkIHRoZSBhYmJyZXZpYXRpb25zCiAgICAgICAgICBmb3IgdGhlIG5leHQg Y29tcGlsZSB1bml0KSBvciBpZiB0aGUgZW5kIG9mIHRoZSBhYmJyZXZpYXRp b24KICAgICAgICAgIHRhYmxlIGlzIHJlYWNoZWQuICAqLwotICAgICAgaWYg KCh1bnNpZ25lZCBpbnQpIChhYmJyZXZfcHRyIC0gZHdhcmYyX3Blcl9vYmpm aWxlLT5hYmJyZXZfYnVmZmVyKQotCSAgPj0gZHdhcmYyX3Blcl9vYmpmaWxl LT5hYmJyZXZfc2l6ZSkKKyAgICAgIGlmICgodW5zaWduZWQgaW50KSAoYWJi cmV2X3B0ciAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LmJ1ZmZlcikK KwkgID49IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LnNpemUpCiAJYnJl YWs7CiAgICAgICBhYmJyZXZfbnVtYmVyID0gcmVhZF91bnNpZ25lZF9sZWIx MjggKGFiZmQsIGFiYnJldl9wdHIsICZieXRlc19yZWFkKTsKICAgICAgIGFi YnJldl9wdHIgKz0gYnl0ZXNfcmVhZDsKQEAgLTYwMzgsNyArNTk5OSw3IEBA IHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmYKIAog ICBtZW1zZXQgKHBhcnRfZGllLCAwLCBzaXplb2YgKHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvKSk7CiAKLSAgcGFydF9kaWUtPm9mZnNldCA9IGluZm9fcHRy IC0gZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvX2J1ZmZlcjsKKyAgcGFydF9k aWUtPm9mZnNldCA9IGluZm9fcHRyIC0gZHdhcmYyX3Blcl9vYmpmaWxlLT5p bmZvLmJ1ZmZlcjsKIAogICBpbmZvX3B0ciArPSBhYmJyZXZfbGVuOwogCkBA IC02MTUxLDcgKzYxMTIsNyBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3Qg cGFydGlhbF9kaWVfaW5mCiAJICBpZiAoYXR0ci5mb3JtID09IERXX0ZPUk1f cmVmX2FkZHIpCiAJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50 cywgXygiaWdub3JpbmcgYWJzb2x1dGUgRFdfQVRfc2libGluZyIpKTsKIAkg IGVsc2UKLQkgICAgcGFydF9kaWUtPnNpYmxpbmcgPSBkd2FyZjJfcGVyX29i amZpbGUtPmluZm9fYnVmZmVyCisJICAgIHBhcnRfZGllLT5zaWJsaW5nID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmJ1ZmZlcgogCSAgICAgICsgZHdh cmYyX2dldF9yZWZfZGllX29mZnNldCAoJmF0dHIpOwogCSAgYnJlYWs7CiAg ICAgICAgIGNhc2UgRFdfQVRfc3RtdF9saXN0OgpAQCAtNjI2Nyw3ICs2MjI4 LDcgQEAgZmluZF9wYXJ0aWFsX2RpZSAodW5zaWduZWQgaW50IG9mZnNldCwg cwogCSAgZHdhcmYyX3JlYWRfYWJicmV2cyAocGVyX2N1LT5jdS0+b2JqZmls ZS0+b2JmZCwgcGVyX2N1LT5jdSk7CiAJICBiYWNrX3RvID0gbWFrZV9jbGVh bnVwIChkd2FyZjJfZnJlZV9hYmJyZXZfdGFibGUsIHBlcl9jdS0+Y3UpOwog CX0KLSAgICAgIGluZm9fcHRyID0gKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5m b19idWZmZXIKKyAgICAgIGluZm9fcHRyID0gKGR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mby5idWZmZXIKIAkJICArIHBlcl9jdS0+Y3UtPmhlYWRlci5vZmZz ZXQKIAkJICArIHBlcl9jdS0+Y3UtPmhlYWRlci5maXJzdF9kaWVfb2Zmc2V0 KTsKICAgICAgIGFiYnJldiA9IHBlZWtfZGllX2FiYnJldiAoaW5mb19wdHIs ICZieXRlc19yZWFkLCBwZXJfY3UtPmN1KTsKQEAgLTYzNDMsNyArNjMwNCw3 IEBAIHJlYWRfZnVsbF9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqKmRpZXAsIGIK ICAgc3RydWN0IGFiYnJldl9pbmZvICphYmJyZXY7CiAgIHN0cnVjdCBkaWVf aW5mbyAqZGllOwogCi0gIG9mZnNldCA9IGluZm9fcHRyIC0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmZvX2J1ZmZlcjsKKyAgb2Zmc2V0ID0gaW5mb19wdHIg LSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uYnVmZmVyOwogICBhYmJyZXZf bnVtYmVyID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIGluZm9fcHRy LCAmYnl0ZXNfcmVhZCk7CiAgIGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7CiAg IGlmICghYWJicmV2X251bWJlcikKQEAgLTY3NzksMjIgKzY3NDAsMjIgQEAg cmVhZF9pbmRpcmVjdF9zdHJpbmcgKGJmZCAqYWJmZCwgZ2RiX2J5dAogewog ICBMT05HRVNUIHN0cl9vZmZzZXQgPSByZWFkX29mZnNldCAoYWJmZCwgYnVm LCBjdV9oZWFkZXIsIGJ5dGVzX3JlYWRfcHRyKTsKIAotICBpZiAoZHdhcmYy X3Blcl9vYmpmaWxlLT5zdHJfYnVmZmVyID09IE5VTEwpCisgIGlmIChkd2Fy ZjJfcGVyX29iamZpbGUtPnN0ci5idWZmZXIgPT0gTlVMTCkKICAgICB7CiAg ICAgICBlcnJvciAoXygiRFdfRk9STV9zdHJwIHVzZWQgd2l0aG91dCAuZGVi dWdfc3RyIHNlY3Rpb24gW2luIG1vZHVsZSAlc10iKSwKIAkJICAgICAgYmZk X2dldF9maWxlbmFtZSAoYWJmZCkpOwogICAgICAgcmV0dXJuIE5VTEw7CiAg ICAgfQotICBpZiAoc3RyX29mZnNldCA+PSBkd2FyZjJfcGVyX29iamZpbGUt PnN0cl9zaXplKQorICBpZiAoc3RyX29mZnNldCA+PSBkd2FyZjJfcGVyX29i amZpbGUtPnN0ci5zaXplKQogICAgIHsKICAgICAgIGVycm9yIChfKCJEV19G T1JNX3N0cnAgcG9pbnRpbmcgb3V0c2lkZSBvZiAuZGVidWdfc3RyIHNlY3Rp b24gW2luIG1vZHVsZSAlc10iKSwKIAkJICAgICAgYmZkX2dldF9maWxlbmFt ZSAoYWJmZCkpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICBnZGJf YXNzZXJ0IChIT1NUX0NIQVJfQklUID09IDgpOwotICBpZiAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5zdHJfYnVmZmVyW3N0cl9vZmZzZXRdID09ICdcMCcpCisg IGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnN0ci5idWZmZXJbc3RyX29mZnNl dF0gPT0gJ1wwJykKICAgICByZXR1cm4gTlVMTDsKLSAgcmV0dXJuIChjaGFy ICopIChkd2FyZjJfcGVyX29iamZpbGUtPnN0cl9idWZmZXIgKyBzdHJfb2Zm c2V0KTsKKyAgcmV0dXJuIChjaGFyICopIChkd2FyZjJfcGVyX29iamZpbGUt PnN0ci5idWZmZXIgKyBzdHJfb2Zmc2V0KTsKIH0KIAogc3RhdGljIHVuc2ln bmVkIGxvbmcKQEAgLTcwODEsNyArNzA0Miw3IEBAIGR3YXJmX2RlY29kZV9s aW5lX2hlYWRlciAodW5zaWduZWQgaW50IG8KICAgaW50IGk7CiAgIGNoYXIg KmN1cl9kaXIsICpjdXJfZmlsZTsKIAotICBpZiAoZHdhcmYyX3Blcl9vYmpm aWxlLT5saW5lX2J1ZmZlciA9PSBOVUxMKQorICBpZiAoZHdhcmYyX3Blcl9v YmpmaWxlLT5saW5lLmJ1ZmZlciA9PSBOVUxMKQogICAgIHsKICAgICAgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygibWlzc2luZyAuZGVi dWdfbGluZSBzZWN0aW9uIikpOwogICAgICAgcmV0dXJuIDA7CkBAIC03MDg5 LDcgKzcwNTAsNyBAQCBkd2FyZl9kZWNvZGVfbGluZV9oZWFkZXIgKHVuc2ln bmVkIGludCBvCiAKICAgLyogTWFrZSBzdXJlIHRoYXQgYXQgbGVhc3QgdGhl cmUncyByb29tIGZvciB0aGUgdG90YWxfbGVuZ3RoIGZpZWxkLgogICAgICBU aGF0IGNvdWxkIGJlIDEyIGJ5dGVzIGxvbmcsIGJ1dCB3ZSdyZSBqdXN0IGdv aW5nIHRvIGZ1ZGdlIHRoYXQuICAqLwotICBpZiAob2Zmc2V0ICsgNCA+PSBk d2FyZjJfcGVyX29iamZpbGUtPmxpbmVfc2l6ZSkKKyAgaWYgKG9mZnNldCAr IDQgPj0gZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLnNpemUpCiAgICAgewog ICAgICAgZHdhcmYyX3N0YXRlbWVudF9saXN0X2ZpdHNfaW5fbGluZV9udW1i ZXJfc2VjdGlvbl9jb21wbGFpbnQgKCk7CiAgICAgICByZXR1cm4gMDsKQEAg LTcxMDAsMTUgKzcwNjEsMTUgQEAgZHdhcmZfZGVjb2RlX2xpbmVfaGVhZGVy ICh1bnNpZ25lZCBpbnQgbwogICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwICgo bWFrZV9jbGVhbnVwX2Z0eXBlICopIGZyZWVfbGluZV9oZWFkZXIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIGxoKTsKIAotICBsaW5l X3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bGluZV9idWZmZXIgKyBvZmZz ZXQ7CisgIGxpbmVfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLmJ1 ZmZlciArIG9mZnNldDsKIAogICAvKiBSZWFkIGluIHRoZSBoZWFkZXIuICAq LwogICBsaC0+dG90YWxfbGVuZ3RoID0gCiAgICAgcmVhZF9jaGVja2VkX2lu aXRpYWxfbGVuZ3RoX2FuZF9vZmZzZXQgKGFiZmQsIGxpbmVfcHRyLCAmY3Ut PmhlYWRlciwKIAkJCQkJICAgICZieXRlc19yZWFkLCAmb2Zmc2V0X3NpemUp OwogICBsaW5lX3B0ciArPSBieXRlc19yZWFkOwotICBpZiAobGluZV9wdHIg KyBsaC0+dG90YWxfbGVuZ3RoID4gKGR3YXJmMl9wZXJfb2JqZmlsZS0+bGlu ZV9idWZmZXIKLQkJCQkgICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5l X3NpemUpKQorICBpZiAobGluZV9wdHIgKyBsaC0+dG90YWxfbGVuZ3RoID4g KGR3YXJmMl9wZXJfb2JqZmlsZS0+bGluZS5idWZmZXIKKwkJCQkgICAgICsg ZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLnNpemUpKQogICAgIHsKICAgICAg IGR3YXJmMl9zdGF0ZW1lbnRfbGlzdF9maXRzX2luX2xpbmVfbnVtYmVyX3Nl Y3Rpb25fY29tcGxhaW50ICgpOwogICAgICAgcmV0dXJuIDA7CkBAIC03MTY0 LDggKzcxMjUsOCBAQCBkd2FyZl9kZWNvZGVfbGluZV9oZWFkZXIgKHVuc2ln bmVkIGludCBvCiAgIGxpbmVfcHRyICs9IGJ5dGVzX3JlYWQ7CiAgIGxoLT5z dGF0ZW1lbnRfcHJvZ3JhbV9zdGFydCA9IGxpbmVfcHRyOyAKIAotICBpZiAo bGluZV9wdHIgPiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lX2J1ZmZlcgot CQkgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lX3NpemUpKQorICBpZiAo bGluZV9wdHIgPiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLmJ1ZmZlcgor CQkgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLnNpemUpKQogICAgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKIAkgICAgICAgXygibGlu ZSBudW1iZXIgaW5mbyBoZWFkZXIgZG9lc24ndCBmaXQgaW4gYC5kZWJ1Z19s aW5lJyBzZWN0aW9uIikpOwogCkBAIC0xMDE1MCw3ICsxMDExMSw3IEBAIGR3 YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAKICAgZW51 bSBkd2FyZl9tYWNpbmZvX3JlY29yZF90eXBlIG1hY2luZm9fdHlwZTsKICAg aW50IGF0X2NvbW1hbmRsaW5lOwogCi0gIGlmIChkd2FyZjJfcGVyX29iamZp bGUtPm1hY2luZm9fYnVmZmVyID09IE5VTEwpCisgIGlmIChkd2FyZjJfcGVy X29iamZpbGUtPm1hY2luZm8uYnVmZmVyID09IE5VTEwpCiAgICAgewogICAg ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJtaXNzaW5n IC5kZWJ1Z19tYWNpbmZvIHNlY3Rpb24iKSk7CiAgICAgICByZXR1cm47CkBA IC0xMDE2Nyw5ICsxMDEyOCw5IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0 cnVjdCBsaW5lX2hlYWRlciAKICAgICAgQ1VSUkVOVF9GSUxFIGFjY29yZGlu Z2x5IHNvIHRoYXQgYW55IG1hY3JvIGRlZmluaXRpb24gZm91bmQgYmVmb3Jl IHRoZQogICAgICBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgY2FuIHN0 aWxsIGJlIGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICovCiAKLSAg bWFjX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mb19idWZmZXIg KyBvZmZzZXQ7Ci0gIG1hY19lbmQgPSBkd2FyZjJfcGVyX29iamZpbGUtPm1h Y2luZm9fYnVmZmVyCi0gICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm1hY2lu Zm9fc2l6ZTsKKyAgbWFjX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFj aW5mby5idWZmZXIgKyBvZmZzZXQ7CisgIG1hY19lbmQgPSBkd2FyZjJfcGVy X29iamZpbGUtPm1hY2luZm8uYnVmZmVyCisgICAgKyBkd2FyZjJfcGVyX29i amZpbGUtPm1hY2luZm8uc2l6ZTsKIAogICBkbwogICAgIHsKQEAgLTEwMjQ2 LDcgKzEwMjA3LDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxp bmVfaGVhZGVyIAogICAgICBjb21tYW5kLWxpbmUgbWFjcm8gZGVmaW5pdGlv bnMvdW5kZWZpbml0aW9ucy4gIFRoaXMgZmxhZyBpcyB1bnNldCB3aGVuIHdl CiAgICAgIHJlYWNoIHRoZSBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUg ZW50cnkuICAqLwogCi0gIG1hY19wdHIgPSBkd2FyZjJfcGVyX29iamZpbGUt Pm1hY2luZm9fYnVmZmVyICsgb2Zmc2V0OworICBtYWNfcHRyID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciArIG9mZnNldDsKIAogICAv KiBEZXRlcm1pbmVzIGlmIEdEQiBpcyBzdGlsbCBiZWZvcmUgZmlyc3QgRFdf TUFDSU5GT19zdGFydF9maWxlLiAgSWYgdHJ1ZQogICAgICBHREIgaXMgc3Rp bGwgcmVhZGluZyB0aGUgZGVmaW5pdGlvbnMgZnJvbSBjb21tYW5kIGxpbmUu ICBGaXJzdApAQCAtMTA0NjQsNyArMTA0MjUsNyBAQCBkd2FyZjJfc3ltYm9s X21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyCiAgICAgICAvKiAiLmRlYnVn X2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5 IGJlIG91dHNpZGUKIAkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJv dWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCiAJIG90aGVyIGJyYW5jaC4g ICovCi0gICAgICAmJiBEV19VTlNORCAoYXR0cikgPCBkd2FyZjJfcGVyX29i amZpbGUtPmxvY19zaXplKQorICAgICAgJiYgRFdfVU5TTkQgKGF0dHIpIDwg ZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSkKICAgICB7CiAgICAgICBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwogCkBAIC0xMDQ3 NSw4ICsxMDQzNiw4IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAo c3RydWN0IGF0dHIKIAogICAgICAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9u ZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQogCSBk b24ndCBydW4gb2ZmIHRoZSBlZGdlIG9mIHRoZSBzZWN0aW9uLiAgKi8KLSAg ICAgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Nfc2l6 ZSAtIERXX1VOU05EIChhdHRyKTsKLSAgICAgIGJhdG9uLT5kYXRhID0gZHdh cmYyX3Blcl9vYmpmaWxlLT5sb2NfYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIp OworICAgICAgYmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmxv Yy5zaXplIC0gRFdfVU5TTkQgKGF0dHIpOworICAgICAgYmF0b24tPmRhdGEg PSBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5idWZmZXIgKyBEV19VTlNORCAo YXR0cik7CiAgICAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2Vf YWRkcmVzczsKICAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQogCWNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKQEAgLTEwNTQ1LDcgKzEw NTA2LDcgQEAgZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHN0cnVjdCBkd2Fy ZjJfcAogICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3Ut PnBzeW10YWItPm9iamZpbGU7CiAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9v YmpmaWxlICpwZXJfb2JqZmlsZQogCT0gb2JqZmlsZV9kYXRhIChvYmpmaWxl LCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7Ci0gICAgICBnZGJfYnl0ZSAq aW5mb19wdHIgPSBwZXJfb2JqZmlsZS0+aW5mb19idWZmZXIgKyBwZXJfY3Ut Pm9mZnNldDsKKyAgICAgIGdkYl9ieXRlICppbmZvX3B0ciA9IHBlcl9vYmpm aWxlLT5pbmZvLmJ1ZmZlciArIHBlcl9jdS0+b2Zmc2V0OwogCiAgICAgICBz dHJ1Y3QgY29tcF91bml0X2hlYWQgY3VfaGVhZGVyOwogICAgICAgbWVtc2V0 ICgmY3VfaGVhZGVyLCAwLCBzaXplb2YgY3VfaGVhZGVyKTsKQEAgLTEwOTM4 LDEyICsxMDg5OSw0OSBAQCBzaG93X2R3YXJmMl9jbWQgKGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0CiAgIGNtZF9zaG93X2xpc3QgKHNob3dfZHdhcmYyX2Nt ZGxpc3QsIGZyb21fdHR5LCAiIik7CiB9CiAKKy8qIElmIHNlY3Rpb24gZGVz Y3JpYmVkIGJ5IElORk8gd2FzIG1tYXBlZCwgbXVubWFwIGl0IG5vdy4gICov CisKK3N0YXRpYyB2b2lkCittdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQoreworICBpZiAoaW5mby0+ d2FzX21tYXBlZCkKKyAgICB7CisjaWZkZWYgSEFWRV9NTUFQCisgICAgICBp bnRwdHJfdCBiZWdpbiA9IChpbnRwdHJfdCkgaW5mby0+YnVmZmVyOworICAg ICAgaW50cHRyX3QgbWFwX2JlZ2luID0gYmVnaW4gJiB+KHBhZ2VzaXplIC0g MSk7CisgICAgICBzaXplX3QgbWFwX2xlbmd0aCA9IGluZm8tPnNpemUgKyBi ZWdpbiAtIG1hcF9iZWdpbjsKKyAgICAgIGdkYl9hc3NlcnQgKG11bm1hcCAo KHZvaWQgKiltYXBfYmVnaW4sIG1hcF9sZW5ndGgpID09IDApOworI2Vsc2UK KyAgICAgIC8qIFdpdGhvdXQgSEFWRV9NTUFQLCB3ZSBzaG91bGQgbmV2ZXIg YmUgaGVyZSB0byBiZWdpbiB3aXRoLiAgKi8KKyAgICAgIGdkYl9hc3NlcnQg KDApOworI2VuZGlmCisgICAgfQorfQorCisvKiBtdW5tYXAgZGVidWcgc2Vj dGlvbnMgZm9yIE9CSkZJTEUsIGlmIG5lY2Vzc2FyeS4gICovCisKK3N0YXRp YyB2b2lkCitkd2FyZjJfcGVyX29iamZpbGVfY2xlYW51cCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCit7CisgIHN0cnVjdCBkd2FyZjJf cGVyX29iamZpbGUgKmRhdGEgPSBkOworICBtdW5tYXBfc2VjdGlvbl9idWZm ZXIgKCZkYXRhLT5pbmZvKTsKKyAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgm ZGF0YS0+YWJicmV2KTsKKyAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0 YS0+bGluZSk7CisgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPnN0 cik7CisgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPm1hY2luZm8p OworICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5yYW5nZXMpOwor ICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5sb2MpOworICBtdW5t YXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5mcmFtZSk7CisgIG11bm1hcF9z ZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKK30KKwogdm9pZCBf aW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7CiAKIHZvaWQKIF9pbml0 aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKQogewotICBkd2FyZjJfb2JqZmls ZV9kYXRhX2tleSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKKyAgZHdh cmYyX29iamZpbGVfZGF0YV9rZXkKKyAgICA9IHJlZ2lzdGVyX29iamZpbGVf ZGF0YV93aXRoX2NsZWFudXAgKGR3YXJmMl9wZXJfb2JqZmlsZV9jbGVhbnVw KTsKIAogICBhZGRfcHJlZml4X2NtZCAoImR3YXJmMiIsIGNsYXNzX21haW50 ZW5hbmNlLCBzZXRfZHdhcmYyX2NtZCwgXygiXAogU2V0IERXQVJGIDIgc3Bl Y2lmaWMgdmFyaWFibGVzLlxuXApJbmRleDogZHdhcmYyLWZyYW1lLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi9kd2FyZjItZnJhbWUuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44Nwpk aWZmIC11IC1wIC11IC1yMS44NyBkd2FyZjItZnJhbWUuYwotLS0gZHdhcmYy LWZyYW1lLmMJMyBKYW4gMjAwOSAwNTo1Nzo1MSAtMDAwMAkxLjg3CisrKyBk d2FyZjItZnJhbWUuYwkxMSBKdW4gMjAwOSAwMTowMTozNSAtMDAwMApAQCAt MTg5NiwxNSArMTg5Niw5IEBAIGRlY29kZV9mcmFtZV9lbnRyeSAoc3RydWN0 IGNvbXBfdW5pdCAqdW4KIH0KIAwKIAotLyogRklYTUU6IGtldHRlbmlzLzIw MDMwNTA0OiBUaGlzIHN0aWxsIG5lZWRzIHRvIGJlIGludGVncmF0ZWQgd2l0 aAotICAgZHdhcmYycmVhZC5jIGluIGEgYmV0dGVyIHdheS4gICovCi0KLS8q IEltcG9ydGVkIGZyb20gZHdhcmYycmVhZC5jLiAgKi8KLWV4dGVybiBhc2Vj dGlvbiAqZHdhcmZfZnJhbWVfc2VjdGlvbjsKLWV4dGVybiBhc2VjdGlvbiAq ZHdhcmZfZWhfZnJhbWVfc2VjdGlvbjsKLQogLyogSW1wb3J0ZWQgZnJvbSBk d2FyZjJyZWFkLmMuICAqLwotZXh0ZXJuIGdkYl9ieXRlICpkd2FyZjJfcmVh ZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24g KnNlY3RwKTsKK2V4dGVybiB2b2lkIGR3YXJmMl9nZXRfc2VjdGlvbl9pbmZv IChzdHJ1Y3Qgb2JqZmlsZSAqLCBjb25zdCBjaGFyICosIGFzZWN0aW9uICoq LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9i eXRlICoqLCBiZmRfc2l6ZV90eXBlICopOwogCiB2b2lkCiBkd2FyZjJfYnVp bGRfZnJhbWVfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCkBAIC0x OTIyLDE3ICsxOTE2LDE1IEBAIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChz dHJ1Y3Qgb2JqZmlsZSAKIAogICAvKiBGaXJzdCBhZGQgdGhlIGluZm9ybWF0 aW9uIGZyb20gdGhlIC5laF9mcmFtZSBzZWN0aW9uLiAgVGhhdCB3YXksCiAg ICAgIHRoZSBGREVzIGZyb20gdGhhdCBzZWN0aW9uIGFyZSBzZWFyY2hlZCBs YXN0LiAgKi8KLSAgaWYgKGR3YXJmX2VoX2ZyYW1lX3NlY3Rpb24pCisgIGR3 YXJmMl9nZXRfc2VjdGlvbl9pbmZvIChvYmpmaWxlLCAiLmVoX2ZyYW1lIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bml0LT5kd2FyZl9mcmFt ZV9zZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXQt PmR3YXJmX2ZyYW1lX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ1bml0LT5kd2FyZl9mcmFtZV9zaXplKTsKKyAgaWYgKHVuaXQtPmR3 YXJmX2ZyYW1lX3NpemUpCiAgICAgewogICAgICAgYXNlY3Rpb24gKmdvdCwg KnR4dDsKIAogICAgICAgdW5pdC0+Y2llID0gTlVMTDsKLSAgICAgIHVuaXQt PmR3YXJmX2ZyYW1lX2J1ZmZlciA9IGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9i amZpbGUsCi0JCQkJCQkgICAgICBkd2FyZl9laF9mcmFtZV9zZWN0aW9uKTsK LQotICAgICAgdW5pdC0+ZHdhcmZfZnJhbWVfc2l6ZSA9IGJmZF9nZXRfc2Vj dGlvbl9zaXplIChkd2FyZl9laF9mcmFtZV9zZWN0aW9uKTsKLSAgICAgIHVu aXQtPmR3YXJmX2ZyYW1lX3NlY3Rpb24gPSBkd2FyZl9laF9mcmFtZV9zZWN0 aW9uOwotCiAgICAgICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMzA2MDI6IFRo aXMgaXMgdGhlIERXX0VIX1BFX2RhdGFyZWwgYmFzZQogCSB0aGF0IGlzIHVz ZWQgZm9yIHRoZSBpMzg2L2FtZDY0IHRhcmdldCwgd2hpY2ggY3VycmVudGx5 IGlzCiAJIHRoZSBvbmx5IHRhcmdldCBpbiBHQ0MgdGhhdCBzdXBwb3J0cy91 c2VzIHRoZQpAQCAtMTk1MiwxMyArMTk0NCwxMyBAQCBkd2FyZjJfYnVpbGRf ZnJhbWVfaW5mbyAoc3RydWN0IG9iamZpbGUgCiAJZnJhbWVfcHRyID0gZGVj b2RlX2ZyYW1lX2VudHJ5ICh1bml0LCBmcmFtZV9wdHIsIDEpOwogICAgIH0K IAotICBpZiAoZHdhcmZfZnJhbWVfc2VjdGlvbikKKyAgZHdhcmYyX2dldF9z ZWN0aW9uX2luZm8gKG9iamZpbGUsICIuZGVidWdfZnJhbWUiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnVuaXQtPmR3YXJmX2ZyYW1lX3NlY3Rp b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pdC0+ZHdhcmZf ZnJhbWVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVu aXQtPmR3YXJmX2ZyYW1lX3NpemUpOworICBpZiAodW5pdC0+ZHdhcmZfZnJh bWVfc2l6ZSkKICAgICB7CiAgICAgICB1bml0LT5jaWUgPSBOVUxMOwotICAg ICAgdW5pdC0+ZHdhcmZfZnJhbWVfYnVmZmVyID0gZHdhcmYyX3JlYWRfc2Vj dGlvbiAob2JqZmlsZSwKLQkJCQkJCSAgICAgIGR3YXJmX2ZyYW1lX3NlY3Rp b24pOwotICAgICAgdW5pdC0+ZHdhcmZfZnJhbWVfc2l6ZSA9IGJmZF9nZXRf c2VjdGlvbl9zaXplIChkd2FyZl9mcmFtZV9zZWN0aW9uKTsKLSAgICAgIHVu aXQtPmR3YXJmX2ZyYW1lX3NlY3Rpb24gPSBkd2FyZl9mcmFtZV9zZWN0aW9u OwogCiAgICAgICBmcmFtZV9wdHIgPSB1bml0LT5kd2FyZl9mcmFtZV9idWZm ZXI7CiAgICAgICB3aGlsZSAoZnJhbWVfcHRyIDwgdW5pdC0+ZHdhcmZfZnJh bWVfYnVmZmVyICsgdW5pdC0+ZHdhcmZfZnJhbWVfc2l6ZSkK --00163616475795547b046c08b524--