From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11956 invoked by alias); 14 Jul 2009 23:29:56 -0000 Received: (qmail 11943 invoked by uid 22791); 14 Jul 2009 23:29:53 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66,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; Tue, 14 Jul 2009 23:29:41 +0000 Received: from zps38.corp.google.com (zps38.corp.google.com [172.25.146.38]) by smtp-out.google.com with ESMTP id n6ENTdRr023552 for ; Tue, 14 Jul 2009 16:29:39 -0700 Received: from fxm20 (fxm20.prod.google.com [10.184.13.20]) by zps38.corp.google.com with ESMTP id n6ENTZjn011445 for ; Tue, 14 Jul 2009 16:29:36 -0700 Received: by fxm20 with SMTP id 20so1488849fxm.17 for ; Tue, 14 Jul 2009 16:29:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.49.12 with SMTP id b12mr3709715muk.51.1247614175016; Tue, 14 Jul 2009 16:29:35 -0700 (PDT) In-Reply-To: References: <20090620000402.C37E5843F5@localhost> Date: Wed, 15 Jul 2009 01:13:00 -0000 Message-ID: Subject: Re: [RFA] comdat types From: Doug Evans To: tromey@redhat.com Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0016364d1fefb7fc1c046eb2cffd 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/msg00386.txt.bz2 --0016364d1fefb7fc1c046eb2cffd Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 337 How about this? It addresses the issues raised here: http://sourceware.org/ml/gdb-patches/2009-06/msg00689.html This patch requires: http://sourceware.org/ml/gdb-patches/2009-06/msg00521.html which is unchanged (modulo the requested formatting change), and was approved here: http://sourceware.org/ml/gdb-patches/2009-06/msg00657.html --0016364d1fefb7fc1c046eb2cffd Content-Type: text/plain; charset=US-ASCII; name="gdb-090714-dwarf2read-sig8-2.patch.txt" Content-Disposition: attachment; filename="gdb-090714-dwarf2read-sig8-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fx5990ve0 Content-length: 55787 MjAwOS0wNi0xOSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog ZHdhcmYyLmggKGVudW0gZHdhcmZfdGFnKTogQWRkIERXX1RBR190eXBlX3Vu aXQuCgkoZW51bSBkd2FyZl9mb3JtKTogQWRkIERXX0ZPUk1fc2VjX29mZnNl dCwgRFdfRk9STV9leHBybG9jLAoJRFdfRk9STV9mbGFnX3ByZXNlbnQsIERX X0ZPUk1fc2lnOC4KCShlbnVtIGR3YXJmX2F0dHJpYnV0ZSk6IEFkZCBEV19B VF9zaWduYXR1cmUsIERXX0FUX0dOVV9vZHJfc2lnbmF0dXJlLgoKCUFkZCBz dXBwb3J0IGZvciAiY29tZGF0IHR5cGVzIiBmcm9tIERXQVJGNC4KCSogZHdh cmYycmVhZC5jIChkd2FyZjJfcGVyX29iamZpbGUpOiBOZXcgbWVtYmVyIHR5 cGVzLAoJc2lnbmF0dXJlZF90eXBlcy4KCShUWVBFU19TRUNUSU9OKTogTmV3 IG1hY3JvLgoJKGR3YXJmMl9wZXJfY3VfZGF0YSk6IENoYW5nZSBzaXplIG9m IGxlbmd0aCBmaWVsZCBmcm9tIDMwIGJpdHMKCXRvIDI5IGJpdHMuICBOZXcg bWVtYmVyIGZyb21fZGVidWdfdHlwZXMuCgkoc2lnbmF0dXJlZF90eXBlKTog TmV3IHN0cnVjdC4KCShzdHJ1Y3QgYXR0cmlidXRlKTogTmV3IHVuaW9uIG1l bWJlciBzaWduYXR1cmVkX3R5cGUuCgkoRFdfU0lHTkFUVVJFRF9UWVBFKTog TmV3IG1hY3JvLgoJKGR3YXJmMl9hdHRyX25vX2ZvbGxvdyk6IE5ldyBmdW5j dGlvbi4KCShyZWFkX3R5cGVfdW5pdF9zY29wZSk6IE5ldyBmdW5jdGlvbi4K CShmb2xsb3dfZGllX3JlZl9vcl9zaWcsIGZvbGxvd19kaWVfc2lnKTogTmV3 IGZ1bmN0aW9ucy4KCShkd2FyZjJfbG9jYXRlX3NlY3RvaW5zKTogSGFuZGxl IC5kZWJ1Z190eXBlcy4KCShkd2FyZjJfYnVpbGRfcHN5bXRhYnMpOiBSZWFk IC5kZWJ1Z190eXBlcy4KCShyZWFkX3R5cGVfY29tcF91bml0X2hlYWQpOiBO ZXcgZnVuY3Rpb24uCgkoaGFzaF90eXBlX3NpZ25hdHVyZSwgZXFfdHlwZV9z aWduYXR1cmUpOiBOZXcgZnVuY3Rpb25zLgoJKGNyZWF0ZV9kZWJ1Z190eXBl c19oYXNoX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF9zaWduYXR1 cmVkX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc19wc3ltdGFiX2Nv bXBfdW5pdCk6IEhhbmRsZSB0eXBlIHVuaXRzIHRvby4KCShwcm9jZXNzX3R5 cGVfY29tcF91bml0LCBidWlsZF90eXBlX3BzeW10YWJzKTogTmV3IGZ1bmN0 aW9ucy4KCShkd2FyZjJfYnVpbGRfcHN5bXRhYnNfaGFyZCk6IENhbGwgYnVp bGRfdHlwZV9wc3ltdGFicy4KCShsb2FkX3BhcnRpYWxfY29tcF91bml0KTog QXNzZXJ0IG5vdCBjYWxsZWQgZm9yIGEgdHlwZSB1bml0LgoJKHNraXBfb25l X2RpZSk6IEhhbmRsZSBEV19GT1JNX3NpZzguCgkocXVldWVfY29tcF91bml0 KTogRG9uJ3QgY2FsbCBsb2FkX2Z1bGxfY29tcF91bml0IGhlcmUsIG9yCgl1 cGRhdGUgcmVhZF9pbl9jaGFpbi4KCShwc3ltdGFiX3RvX3N5bXRhYl8xKTog Q2FsbCByZWFkX3NpZ25hdHVyZWRfdHlwZV9hdF9vZmZzZXQgZm9yCgl0eXBl IHVuaXRzLCBvciBsb2FkX2Z1bGxfY29tcF91bml0IGZvciBjb21wIHVuaXRz IGFmdGVyCglxdWV1ZV9jb21wX3VuaXQgcmV0dXJucy4KCShsb2FkX2Z1bGxf Y29tcF91bml0KTogQXNzZXJ0IG5vdCBjYWxsZWQgZm9yIHR5cGUgdW5pdHMu CgkobG9hZF9mdWxsX2NvbXBfdW5pdCk6IFVwZGF0ZSByZWFkX2luX2NoYWlu IGhlcmUuCgkocHJvY2Vzc19kaWUpOiBIYW5kbGUgRFdfVEFHX3R5cGVfdW5p dC4KCShyZWFkX3N0cnVjdHVyZV90eXBlKTogTG9vayBmb3Igc2lnbmF0dXJl ZCB0eXBlcy4KCShyZWFkX2VudW1lcmF0aW9uX3R5cGUpOiBEaXR0by4KCShp bml0X2N1X2RpZV9yZWFkZXIpOiBIYW5kbGUgLmRlYnVnX3R5cGVzLgoJKHJl YWRfY29tcF91bml0KTogQXNzZXJ0IGhhc2ggbm90IGNvbXB1dGVkIHlldC4K CShyZWFkX2RpZV9hbmRfY2hpbGRyZW4pOiBFeHBhbmQgZGVidWdnaW5nIHBy aW50ZiB0byBoYW5kbGUgLmRlYnVnX3R5cGVzLgoJKHJlYWRfcGFydGlhbF9k aWUpOiBIYW5kbGUgRFdfVEFHX3R5cGVfdW5pdDoKCShmaW5kX3BhdGlhbF9k aWUpOiBIYW5kbGUgLmRlYnVnX3R5cGVzLgoJKHJlYWRfYXR0cmlidXRlX3Zh bHVlKTogSGFuZGxlIERXX0ZPUk1fc2lnOC4KCShkaWVfdHlwZSk6IENhbGwg Zm9sbG93X2RpZV9yZWZfb3Jfc2lnIGluc3RlYWQgb2YgZm9sbG93X2RpZV9y ZWYuCgkoZGllX2NvbnRhaW5pbmdfdHlwZSk6IERpdHRvLgoJKGR3YXJmX3Rh Z19uYW1lKTogSGFuZGxlIERXX1RBR190eXBlX3VuaXQuCgkoZHdhcmZfYXR0 cl9uYW1lKTogSGFuZGxlIERXX0FUX3NpZ25hdHVyZSwgRFdfR05VX29kcl9z aWduYXR1cmUuCgkoZHdhcmZfZm9ybV9uYW1lKTogSGFuZGxlIERXX0ZPUk1f c2VjX29mZnNldCwgRFdfRk9STV9leHBybG9jLAoJRFdfRk9STV9mbGFnX3By ZXNlbnQsIERXX0ZPUk1fc2lnOC4KCShkdW1wX2RpZV9zaGFsbG93KTogSGFu ZGxlbCBEV19GT1JNX3NpZzguCgkobWF5YmVfcXVldWVfY29tcF91bml0KTog Q2hhbmdlIHJldHVybiB0eXBlIHRvIGludCBmcm9tIHZvaWQuCglBbGwgY2Fs bGVycyB1cGRhdGVkLgoJKGZvbGxvd19kaWVfcmVmKTogSGFuZGxlIC5kZWJ1 Z190eXBlcy4KCShsb29rdXBfc2lnbmF0dXJlZF90eXBlX2F0X29mZnNldCk6 IE5ldyBmdW5jdGlvbi4KCShyZWFkX3NpZ25hdHVyZWRfdHlwZV9hdF9vZmZz ZXQpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9zaWduYXR1cmVkX3R5cGUpOiBO ZXcgZnVuY3Rpb24uCgoKZGlmZiAtdSAtcCAtcjEuMiBkd2FyZjIuaAotLS0g ZHdhcmYyLmgJOSBKdWwgMjAwOSAyMTowMToxNSAtMDAwMAkxLjIKKysrIGR3 YXJmMi5oCTE0IEp1bCAyMDA5IDIzOjIyOjM1IC0wMDAwCkBAIC0xOTQsNiAr MTk0LDggQEAgZW51bSBkd2FyZl90YWcKICAgICBEV19UQUdfaW1wb3J0ZWRf dW5pdCA9IDB4M2QsCiAgICAgRFdfVEFHX2NvbmRpdGlvbiA9IDB4M2YsCiAg ICAgRFdfVEFHX3NoYXJlZF90eXBlID0gMHg0MCwKKyAgICAvKiBEV0FSRiA0 LiAgKi8KKyAgICBEV19UQUdfdHlwZV91bml0ID0gMHg0MSwKIAogICAgIERX X1RBR19sb191c2VyID0gMHg0MDgwLAogICAgIERXX1RBR19oaV91c2VyID0g MHhmZmZmLApAQCAtMjQ0LDcgKzI0NiwxMiBAQCBlbnVtIGR3YXJmX2Zvcm0K ICAgICBEV19GT1JNX3JlZjQgPSAweDEzLAogICAgIERXX0ZPUk1fcmVmOCA9 IDB4MTQsCiAgICAgRFdfRk9STV9yZWZfdWRhdGEgPSAweDE1LAotICAgIERX X0ZPUk1faW5kaXJlY3QgPSAweDE2CisgICAgRFdfRk9STV9pbmRpcmVjdCA9 IDB4MTYsCisgICAgLyogRFdBUkYgNC4gICovCisgICAgRFdfRk9STV9zZWNf b2Zmc2V0ID0gMHgxNywKKyAgICBEV19GT1JNX2V4cHJsb2MgPSAweDE4LAor ICAgIERXX0ZPUk1fZmxhZ19wcmVzZW50ID0gMHgxOSwKKyAgICBEV19GT1JN X3NpZzggPSAweDIwCiAgIH07CiAKIC8qIEF0dHJpYnV0ZSBuYW1lcyBhbmQg Y29kZXMuICAqLwpAQCAtMzQyLDYgKzM0OSw4IEBAIGVudW0gZHdhcmZfYXR0 cmlidXRlCiAgICAgRFdfQVRfZWxlbWVudGFsICAgICA9IDB4NjYsCiAgICAg RFdfQVRfcHVyZSAgICAgICAgICA9IDB4NjcsCiAgICAgRFdfQVRfcmVjdXJz aXZlICAgICA9IDB4NjgsCisgICAgLyogRFdBUkYgNCB2YWx1ZXMuICAqLwor ICAgIERXX0FUX3NpZ25hdHVyZSAgICAgPSAweDY5LAogCiAgICAgRFdfQVRf bG9fdXNlciA9IDB4MjAwMCwJLyogSW1wbGVtZW50YXRpb24tZGVmaW5lZCBy YW5nZSBzdGFydC4gICovCiAgICAgRFdfQVRfaGlfdXNlciA9IDB4M2ZmMCwJ LyogSW1wbGVtZW50YXRpb24tZGVmaW5lZCByYW5nZSBlbmQuICAqLwpAQCAt MzgxLDYgKzM5MCw3IEBAIGVudW0gZHdhcmZfYXR0cmlidXRlCiAgICAgRFdf QVRfYm9keV9iZWdpbiA9IDB4MjEwNSwKICAgICBEV19BVF9ib2R5X2VuZCAg ID0gMHgyMTA2LAogICAgIERXX0FUX0dOVV92ZWN0b3IgPSAweDIxMDcsCisg ICAgRFdfQVRfR05VX29kcl9zaWduYXR1cmUgPSAweDIxMGYsCiAgICAgLyog Vk1TIGV4dGVuc2lvbnMuICAqLwogICAgIERXX0FUX1ZNU19ydG5iZWdfcGRf YWRkcmVzcyA9IDB4MjIwMSwKICAgICAvKiBVUEMgZXh0ZW5zaW9uLiAgKi8K CmRpZmYgLXUgLXAgLi4vLi4vZHdhcmYtY2xlYW51cC9zcmMvZ2RiL2R3YXJm MnJlYWQuYyAuL2dkYi9kd2FyZjJyZWFkLmMKLS0tIC4uLy4uLy4uL2R3YXJm LWNsZWFudXAvc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAwOS0wNy0xNCAxNDoz Njo1NS4wMDAwMDAwMDAgLTA3MDAKKysrIC4vZHdhcmYycmVhZC5jCTIwMDkt MDctMTQgMTY6MTk6MzAuMDAwMDAwMDAwIC0wNzAwCkBAIC0xNjQsNiArMTY0 LDcgQEAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQogICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyBtYWNpbmZvOwogICBzdHJ1Y3QgZHdhcmYyX3Nl Y3Rpb25faW5mbyBzdHI7CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv IHJhbmdlczsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gdHlwZXM7 CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGZyYW1lOwogICBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBlaF9mcmFtZTsKIApAQCAtMTc4LDYg KzE3OSwxMCBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCiAgICAgIHRo ZXkgY2FuIGJlIGZyZWVkIGxhdGVyLiAgKi8KICAgc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqcmVhZF9pbl9jaGFpbjsKIAorICAvKiBBIHRhYmxlIG1h cHBpbmcgLmRlYnVnX3R5cGVzIHNpZ25hdHVyZXMgdG8gaXRzIHNpZ25hdHVy ZWRfdHlwZSBlbnRyeS4KKyAgICAgVGhpcyBpcyBOVUxMIGlmIHRoZSAuZGVi dWdfdHlwZXMgc2VjdGlvbiBoYXNuJ3QgYmVlbiByZWFkIGluIHlldC4gICov CisgIGh0YWJfdCBzaWduYXR1cmVkX3R5cGVzOworCiAgIC8qIEEgZmxhZyBp bmRpY2F0aW5nIHdldGhlciB0aGlzIG9iamZpbGUgaGFzIGEgc2VjdGlvbiBs b2FkZWQgYXQgYQogICAgICBWTUEgb2YgMC4gICovCiAgIGludCBoYXNfc2Vj dGlvbl9hdF96ZXJvOwpAQCAtMTk5LDYgKzIwNCw3IEBAIHN0YXRpYyBzdHJ1 Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkd2FyZjIKICNkZWZpbmUgTUFDSU5G T19TRUNUSU9OICAiZGVidWdfbWFjaW5mbyIKICNkZWZpbmUgU1RSX1NFQ1RJ T04gICAgICAiZGVidWdfc3RyIgogI2RlZmluZSBSQU5HRVNfU0VDVElPTiAg ICJkZWJ1Z19yYW5nZXMiCisjZGVmaW5lIFRZUEVTX1NFQ1RJT04gICAgImRl YnVnX3R5cGVzIgogI2RlZmluZSBGUkFNRV9TRUNUSU9OICAgICJkZWJ1Z19m cmFtZSIKICNkZWZpbmUgRUhfRlJBTUVfU0VDVElPTiAiZWhfZnJhbWUiCiAK QEAgLTM0MCwxMyArMzQ2LDEzIEBAIHN0cnVjdCBkd2FyZjJfY3UKIAogc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YQogewotICAvKiBUaGUgc3RhcnQgb2Zm c2V0IGFuZCBsZW5ndGggb2YgdGhpcyBjb21waWxhdGlvbiB1bml0LiAgMioq MzAtMQorICAvKiBUaGUgc3RhcnQgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhp cyBjb21waWxhdGlvbiB1bml0LiAgMioqMjktMQogICAgICBieXRlcyBzaG91 bGQgc3VmZmljZSB0byBzdG9yZSB0aGUgbGVuZ3RoIG9mIGFueSBjb21waWxh dGlvbiB1bml0CiAgICAgIC0gaWYgaXQgZG9lc24ndCwgR0RCIHdpbGwgZmFs bCBvdmVyIGFueXdheS4KICAgICAgTk9URTogVW5saWtlIGNvbXBfdW5pdF9o ZWFkLmxlbmd0aCwgdGhpcyBsZW5ndGggaW5jbHVkZXMKICAgICAgaW5pdGlh bF9sZW5ndGhfc2l6ZS4gICovCiAgIHVuc2lnbmVkIGludCBvZmZzZXQ7Ci0g IHVuc2lnbmVkIGludCBsZW5ndGggOiAzMDsKKyAgdW5zaWduZWQgaW50IGxl bmd0aCA6IDI5OwogCiAgIC8qIEZsYWcgaW5kaWNhdGluZyB0aGlzIGNvbXBp bGF0aW9uIHVuaXQgd2lsbCBiZSByZWFkIGluIGJlZm9yZQogICAgICBhbnkg b2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdHMgYXJlIHByb2Nlc3Nl ZC4gICovCkBAIC0zNTgsNiArMzY0LDEwIEBAIHN0cnVjdCBkd2FyZjJfcGVy X2N1X2RhdGEKICAgICAgaGFzaCB0YWJsZSBhbmQgZG9uJ3QgZmluZCBpdC4g ICovCiAgIHVuc2lnbmVkIGludCBsb2FkX2FsbF9kaWVzIDogMTsKIAorICAv KiBOb24temVybyBpZiB0aGlzIENVIGlzIGZyb20gLmRlYnVnX3R5cGVzLgor ICAgICBPdGhlcndpc2UgaXQncyBmcm9tIC5kZWJ1Z19pbmZvLiAgKi8KKyAg dW5zaWduZWQgaW50IGZyb21fZGVidWdfdHlwZXMgOiAxOworCiAgIC8qIFNl dCBpZmYgY3VycmVudGx5IHJlYWQgaW4uICAqLwogICBzdHJ1Y3QgZHdhcmYy X2N1ICpjdTsKIApAQCAtMzczLDYgKzM4MywyMiBAQCBzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhCiAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN5bXRh YjsKIH07CiAKKy8qIEVudHJ5IGluIHRoZSBzaWduYXR1cmVkX3R5cGVzIGhh c2ggdGFibGUuICAqLworCitzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlCit7Cisg IFVMT05HRVNUIHNpZ25hdHVyZTsKKworICAvKiBPZmZzZXQgaW4gLmRlYnVn X3R5cGVzIG9mIHRoZSBUVSAodHlwZV91bml0KSBmb3IgdGhpcyB0eXBlLiAg Ki8KKyAgdW5zaWduZWQgaW50IG9mZnNldDsKKworICAvKiBPZmZzZXQgaW4g LmRlYnVnX3R5cGVzIG9mIHRoZSB0eXBlIGRlZmluZWQgYnkgdGhpcyBUVS4g ICovCisgIHVuc2lnbmVkIGludCB0eXBlX29mZnNldDsKKworICAvKiBUaGUg Q1UoL1RVKSBvZiB0aGlzIHR5cGUuICAqLworICBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhIHBlcl9jdTsKK307CisKIC8qIFN0cnVjdCB1c2VkIHRvIHBh c3MgbWlzYy4gcGFyYW1ldGVycyB0byByZWFkX2RpZV9hbmRfY2hpbGRyZW4s IGV0LiBhbC4KICAgIHdoaWNoIGFyZSB1c2VkIGZvciBib3RoIC5kZWJ1Z19p bmZvIGFuZCAuZGVidWdfdHlwZXMgZGllcy4KICAgIEFsbCBwYXJhbWV0ZXJz IGhlcmUgYXJlIHVuY2hhbmdpbmcgZm9yIHRoZSBsaWZlIG9mIHRoZSBjYWxs LgpAQCAtNTQxLDYgKzU2Nyw3IEBAIHN0cnVjdCBhdHRyaWJ1dGUKIAl1bnNp Z25lZCBsb25nIHVuc25kOwogCWxvbmcgaW50IHNuZDsKIAlDT1JFX0FERFIg YWRkcjsKKwlzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICpzaWduYXR1cmVkX3R5 cGU7CiAgICAgICB9CiAgICAgdTsKICAgfTsKQEAgLTU5MCw2ICs2MTcsNyBA QCBzdHJ1Y3QgZnVuY3Rpb25fcmFuZ2UKICNkZWZpbmUgRFdfQkxPQ0soYXR0 cikgICAgICgoYXR0ciktPnUuYmxrKQogI2RlZmluZSBEV19TTkQoYXR0cikg ICAgICAgKChhdHRyKS0+dS5zbmQpCiAjZGVmaW5lIERXX0FERFIoYXR0cikJ ICAgKChhdHRyKS0+dS5hZGRyKQorI2RlZmluZSBEV19TSUdOQVRVUkVEX1RZ UEUoYXR0cikgKChhdHRyKS0+dS5zaWduYXR1cmVkX3R5cGUpCiAKIC8qIEJs b2NrcyBhcmUgYSBidW5jaCBvZiB1bnR5cGVkIGJ5dGVzLiAqLwogc3RydWN0 IGR3YXJmX2Jsb2NrCkBAIC04NzQsNiArOTAyLDEwIEBAIHN0YXRpYyB2b2lk IHNldF9jdV9sYW5ndWFnZSAodW5zaWduZWQgaW4KIHN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICpkd2FyZjJfYXR0ciAoc3RydWN0IGRpZV9pbmZvICosIHVu c2lnbmVkIGludCwKIAkJCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwog CitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHdhcmYyX2F0dHJfbm9fZm9s bG93IChzdHJ1Y3QgZGllX2luZm8gKiwKKwkJCQkJCXVuc2lnbmVkIGludCwK KwkJCQkJCXN0cnVjdCBkd2FyZjJfY3UgKik7CisKIHN0YXRpYyBpbnQgZHdh cmYyX2ZsYWdfdHJ1ZV9wIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgdW5zaWdu ZWQgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSk7CiAKQEAgLTkyNCw2ICs5NTYsOCBAQCBzdGF0 aWMgY2hhciAqdHlwZW5hbWVfY29uY2F0IChzdHJ1Y3Qgb2JzCiAKIHN0YXRp YyB2b2lkIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICosIHN0 cnVjdCBkd2FyZjJfY3UgKik7CiAKK3N0YXRpYyB2b2lkIHJlYWRfdHlwZV91 bml0X3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9j dSAqKTsKKwogc3RhdGljIHZvaWQgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3Qg ZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKIAogc3RhdGljIHZv aWQgcmVhZF9sZXhpY2FsX2Jsb2NrX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8g Kiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKQEAgLTEwNDYsMTAgKzEwODAsMjQg QEAgc3RhdGljIHVuc2lnbmVkIGludCBkd2FyZjJfZ2V0X3JlZl9kaWVfbwog CiBzdGF0aWMgaW50IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAo c3RydWN0IGF0dHJpYnV0ZSAqLCBpbnQpOwogCitzdGF0aWMgc3RydWN0IGRp ZV9pbmZvICpmb2xsb3dfZGllX3JlZl9vcl9zaWcgKHN0cnVjdCBkaWVfaW5m byAqLAorCQkJCQkgICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqLAorCQkJCQkg ICAgICAgc3RydWN0IGR3YXJmMl9jdSAqKik7CisKIHN0YXRpYyBzdHJ1Y3Qg ZGllX2luZm8gKmZvbGxvd19kaWVfcmVmIChzdHJ1Y3QgZGllX2luZm8gKiwK IAkJCQkJc3RydWN0IGF0dHJpYnV0ZSAqLAogCQkJCQlzdHJ1Y3QgZHdhcmYy X2N1ICoqKTsKIAorc3RhdGljIHN0cnVjdCBkaWVfaW5mbyAqZm9sbG93X2Rp ZV9zaWcgKHN0cnVjdCBkaWVfaW5mbyAqLAorCQkJCQlzdHJ1Y3QgYXR0cmli dXRlICosCisJCQkJCXN0cnVjdCBkd2FyZjJfY3UgKiopOworCitzdGF0aWMg dm9pZCByZWFkX3NpZ25hdHVyZWRfdHlwZV9hdF9vZmZzZXQgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorCQkJCQkgICAgdW5zaWduZWQgaW50IG9mZnNl dCk7CisKK3N0YXRpYyB2b2lkIHJlYWRfc2lnbmF0dXJlZF90eXBlIChzdHJ1 Y3Qgb2JqZmlsZSAqLAorCQkJCSAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAq dHlwZV9zaWcpOworCiAvKiBtZW1vcnkgYWxsb2NhdGlvbiBpbnRlcmZhY2Ug Ki8KIAogc3RhdGljIHN0cnVjdCBkd2FyZl9ibG9jayAqZHdhcmZfYWxsb2Nf YmxvY2sgKHN0cnVjdCBkd2FyZjJfY3UgKik7CkBAIC0xMjE3LDYgKzEyNjUs MTEgQEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2Vj dAogICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5yYW5nZXMuYXNlY3Rpb24g PSBzZWN0cDsKICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+cmFuZ2VzLnNp emUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwogICAgIH0KKyAg ZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgVFlQRVNfU0VD VElPTikpCisgICAgeworICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBl cy5hc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdhcmYyX3Blcl9vYmpmaWxl LT50eXBlcy5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsK KyAgICB9CiAKICAgaWYgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGFiZmQs IHNlY3RwKSAmIFNFQ19MT0FEKQogICAgICAgJiYgYmZkX3NlY3Rpb25fdm1h IChhYmZkLCBzZWN0cCkgPT0gMCkKQEAgLTE0MTYsNiArMTQ2OSw3IEBAIGR3 YXJmMl9idWlsZF9wc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKm8KICAgZHdh cmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmls ZS0+c3RyKTsKICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3 YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mbyk7CiAgIGR3YXJmMl9yZWFkX3Nl Y3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPnJhbmdlcyk7 CisgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVy X29iamZpbGUtPnR5cGVzKTsKICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2Jq ZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jKTsKICAgZHdhcmYyX3Jl YWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+ZWhf ZnJhbWUpOwogICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdh cmYyX3Blcl9vYmpmaWxlLT5mcmFtZSk7CkBAIC0xNTU0LDYgKzE2MDgsMjkg QEAgcGFydGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29tcAog ICByZXR1cm4gaW5mb19wdHI7CiB9CiAKKy8qIFJlYWQgaW4gdGhlIHR5cGVz IGNvbXAgdW5pdCBoZWFkZXIgaW5mb3JtYXRpb24gZnJvbSAuZGVidWdfdHlw ZXMgZW50cnkgYXQKKyAgIHR5cGVzX3B0ci4gIFRoZSByZXN1bHQgaXMgYSBw b2ludGVyIHRvIG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGhlYWRlci4gICov CisKK3N0YXRpYyBnZGJfYnl0ZSAqCityZWFkX3R5cGVfY29tcF91bml0X2hl YWQgKHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAorCQkJICBV TE9OR0VTVCAqc2lnbmF0dXJlLAorCQkJICBnZGJfYnl0ZSAqdHlwZXNfcHRy LCBiZmQgKmFiZmQpCit7CisgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwor ICBnZGJfYnl0ZSAqaW5pdGlhbF90eXBlc19wdHIgPSB0eXBlc19wdHI7CisK KyAgY3VfaGVhZGVyLT5vZmZzZXQgPSB0eXBlc19wdHIgLSBkd2FyZjJfcGVy X29iamZpbGUtPnR5cGVzLmJ1ZmZlcjsKKworICB0eXBlc19wdHIgPSByZWFk X2NvbXBfdW5pdF9oZWFkIChjdV9oZWFkZXIsIHR5cGVzX3B0ciwgYWJmZCk7 CisKKyAgKnNpZ25hdHVyZSA9IHJlYWRfOF9ieXRlcyAoYWJmZCwgdHlwZXNf cHRyKTsKKyAgdHlwZXNfcHRyICs9IDg7CisgIHR5cGVzX3B0ciArPSBjdV9o ZWFkZXItPm9mZnNldF9zaXplOworICBjdV9oZWFkZXItPmZpcnN0X2RpZV9v ZmZzZXQgPSB0eXBlc19wdHIgLSBpbml0aWFsX3R5cGVzX3B0cjsKKworICBy ZXR1cm4gdHlwZXNfcHRyOworfQorCiAvKiBBbGxvY2F0ZSBhIG5ldyBwYXJ0 aWFsIHN5bXRhYiBmb3IgZmlsZSBuYW1lZCBOQU1FIGFuZCBtYXJrIHRoaXMg bmV3CiAgICBwYXJ0aWFsIHN5bXRhYiBhcyBiZWluZyBhbiBpbmNsdWRlIG9m IFBTVC4gICovCiAKQEAgLTE2MTMsOSArMTY5MCwxMzMgQEAgZHdhcmYyX2J1 aWxkX2luY2x1ZGVfcHN5bXRhYnMgKHN0cnVjdCBkdwogICBmcmVlX2xpbmVf aGVhZGVyIChsaCk7CiB9CiAKLS8qIFN1YnJvdXRpbmUgb2YgZHdhcmYyX2J1 aWxkX3BzeW10YWJzX2hhcmQgdG8gc2ltcGxpZnkgaXQuCitzdGF0aWMgaGFz aHZhbF90CitoYXNoX3R5cGVfc2lnbmF0dXJlIChjb25zdCB2b2lkICppdGVt KQoreworICBjb25zdCBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICp0eXBlX3Np ZyA9IGl0ZW07CisgIC8qIFRoaXMgZHJvcHMgdGhlIHRvcCAzMiBiaXRzIG9m IHRoZSBzaWduYXR1cmUsIGJ1dCBpcyBvayBmb3IgYSBoYXNoLiAgKi8KKyAg cmV0dXJuIHR5cGVfc2lnLT5zaWduYXR1cmU7Cit9CisKK3N0YXRpYyBpbnQK K2VxX3R5cGVfc2lnbmF0dXJlIChjb25zdCB2b2lkICppdGVtX2xocywgY29u c3Qgdm9pZCAqaXRlbV9yaHMpCit7CisgIGNvbnN0IHN0cnVjdCBzaWduYXR1 cmVkX3R5cGUgKmxocyA9IGl0ZW1fbGhzOworICBjb25zdCBzdHJ1Y3Qgc2ln bmF0dXJlZF90eXBlICpyaHMgPSBpdGVtX3JoczsKKyAgcmV0dXJuIGxocy0+ c2lnbmF0dXJlID09IHJocy0+c2lnbmF0dXJlOworfQorCisvKiBDcmVhdGUg dGhlIGhhc2ggdGFibGUgb2YgYWxsIGVudHJpZXMgaW4gdGhlIC5kZWJ1Z190 eXBlcyBzZWN0aW9uLgorICAgVGhlIHJlc3VsdCBpcyB6ZXJvIGlmIHRoZXJl IGlzIGFuIGVycm9yIChlLmcuIG1pc3NpbmcgLmRlYnVnX3R5cGVzIHNlY3Rp b24pLAorICAgb3RoZXJ3aXNlIG5vbi16ZXJvLgkqLworCitzdGF0aWMgaW50 CitjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCit7CisgIGdkYl9ieXRlICppbmZvX3B0ciA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyOworICBodGFiX3QgdHlwZXNf aHRhYjsKKworICBpZiAoaW5mb19wdHIgPT0gTlVMTCkKKyAgICB7CisgICAg ICBkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMgPSBOVUxM OworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIHR5cGVzX2h0YWIgPSBo dGFiX2NyZWF0ZV9hbGxvY19leCAoNDEsCisJCQkJICAgICBoYXNoX3R5cGVf c2lnbmF0dXJlLAorCQkJCSAgICAgZXFfdHlwZV9zaWduYXR1cmUsCisJCQkJ ICAgICBOVUxMLAorCQkJCSAgICAgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywKKwkJCQkgICAgIGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwKKwkJCQkg ICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7CisKKyAgaWYgKGR3YXJm Ml9kaWVfZGVidWcpCisgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLCAiU2lnbmF0dXJlZCB0eXBlczpcbiIpOworCisgIHdoaWxlIChpbmZv X3B0ciA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyICsgZHdh cmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXplKQorICAgIHsKKyAgICAgIHVu c2lnbmVkIGludCBvZmZzZXQ7CisgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0 X3NpemU7CisgICAgICB1bnNpZ25lZCBpbnQgdHlwZV9vZmZzZXQ7CisgICAg ICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbml0aWFsX2xlbmd0aF9zaXplOwor ICAgICAgdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsKKyAgICAgIFVMT05HRVNU IHNpZ25hdHVyZTsKKyAgICAgIHN0cnVjdCBzaWduYXR1cmVkX3R5cGUgKnR5 cGVfc2lnOworICAgICAgdm9pZCAqKnNsb3Q7CisgICAgICBnZGJfYnl0ZSAq cHRyID0gaW5mb19wdHI7CisKKyAgICAgIG9mZnNldCA9IHB0ciAtIGR3YXJm Ml9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyOworCisgICAgICAvKiBXZSBu ZWVkIHRvIHJlYWQgdGhlIHR5cGUncyBzaWduYXR1cmUgaW4gb3JkZXIgdG8g YnVpbGQgdGhlIGhhc2gKKwkgdGFibGUsIGJ1dCB3ZSBkb24ndCBuZWVkIHRv IHJlYWQgYW55dGhpbmcgZWxzZSBqdXN0IHlldC4gICovCisKKyAgICAgIC8q IFNhbml0eSBjaGVjayB0byBlbnN1cmUgZW50aXJlIGN1IGlzIHByZXNlbnQu ICAqLworICAgICAgbGVuZ3RoID0gcmVhZF9pbml0aWFsX2xlbmd0aCAob2Jq ZmlsZS0+b2JmZCwgcHRyLCAmaW5pdGlhbF9sZW5ndGhfc2l6ZSk7CisgICAg ICBpZiAocHRyICsgbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZQorCSAg PiBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmJ1ZmZlciArIGR3YXJmMl9w ZXJfb2JqZmlsZS0+dHlwZXMuc2l6ZSkKKwl7CisJICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsCisJCSAgICAgXygiZGVidWcgdHlwZSBlbnRy eSBydW5zIG9mZiBlbmQgb2YgYC5kZWJ1Z190eXBlcycgc2VjdGlvbiwgaWdu b3JlZCIpKTsKKwkgIGJyZWFrOworCX0KKworICAgICAgb2Zmc2V0X3NpemUg PSBpbml0aWFsX2xlbmd0aF9zaXplID09IDQgPyA0IDogODsKKyAgICAgIHB0 ciArPSBpbml0aWFsX2xlbmd0aF9zaXplOworICAgICAgdmVyc2lvbiA9IGJm ZF9nZXRfMTYgKG9iamZpbGUtPm9iZmQsIHB0cik7CisgICAgICBwdHIgKz0g MjsKKyAgICAgIHB0ciArPSBvZmZzZXRfc2l6ZTsgLyogYWJicmV2IG9mZnNl dCAqLworICAgICAgcHRyICs9IDE7IC8qIGFkZHJlc3Mgc2l6ZSAqLworICAg ICAgc2lnbmF0dXJlID0gYmZkX2dldF82NCAob2JqZmlsZS0+b2JmZCwgcHRy KTsKKyAgICAgIHB0ciArPSA4OworICAgICAgdHlwZV9vZmZzZXQgPSByZWFk X29mZnNldF8xIChvYmpmaWxlLT5vYmZkLCBwdHIsIG9mZnNldF9zaXplKTsK KworICAgICAgdHlwZV9zaWcgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKCp0eXBlX3NpZykpOworICAgICAg bWVtc2V0ICh0eXBlX3NpZywgMCwgc2l6ZW9mICgqdHlwZV9zaWcpKTsKKyAg ICAgIHR5cGVfc2lnLT5zaWduYXR1cmUgPSBzaWduYXR1cmU7CisgICAgICB0 eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0OworICAgICAgdHlwZV9zaWctPnR5 cGVfb2Zmc2V0ID0gdHlwZV9vZmZzZXQ7CisKKyAgICAgIHNsb3QgPSBodGFi X2ZpbmRfc2xvdCAodHlwZXNfaHRhYiwgdHlwZV9zaWcsIElOU0VSVCk7Cisg ICAgICBnZGJfYXNzZXJ0IChzbG90ICE9IE5VTEwpOworICAgICAgKnNsb3Qg PSB0eXBlX3NpZzsKKworICAgICAgaWYgKGR3YXJmMl9kaWVfZGVidWcpCisJ ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiICBvZmZzZXQgMHgl eCwgc2lnbmF0dXJlIDB4JXNcbiIsCisJCQkgICAgb2Zmc2V0LCBwaGV4IChz aWduYXR1cmUsIHNpemVvZiAoc2lnbmF0dXJlKSkpOworCisgICAgICBpbmZv X3B0ciA9IGluZm9fcHRyICsgaW5pdGlhbF9sZW5ndGhfc2l6ZSArIGxlbmd0 aDsKKyAgICB9CisKKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT5zaWduYXR1cmVk X3R5cGVzID0gdHlwZXNfaHRhYjsKKworICByZXR1cm4gMTsKK30KKworLyog TG9va3VwIGEgc2lnbmF0dXJlIGJhc2VkIHR5cGUuCisgICBSZXR1cm5zIE5V TEwgaWYgU0lHIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZS4gICovCisK K3N0YXRpYyBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICoKK2xvb2t1cF9zaWdu YXR1cmVkX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBVTE9OR0VT VCBzaWcpCit7CisgIHN0cnVjdCBzaWduYXR1cmVkX3R5cGUgZmluZF9lbnRy eSwgKmVudHJ5OworCisgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25h dHVyZWRfdHlwZXMgPT0gTlVMTCkKKyAgICB7CisgICAgICBjb21wbGFpbnQg KCZzeW1maWxlX2NvbXBsYWludHMsCisJCSBfKCJtaXNzaW5nIGAuZGVidWdf dHlwZXMnIHNlY3Rpb24gZm9yIERXX0ZPUk1fc2lnOCBkaWUiKSk7CisgICAg ICByZXR1cm4gMDsKKyAgICB9CisKKyAgZmluZF9lbnRyeS5zaWduYXR1cmUg PSBzaWc7CisgIGVudHJ5ID0gaHRhYl9maW5kIChkd2FyZjJfcGVyX29iamZp bGUtPnNpZ25hdHVyZWRfdHlwZXMsICZmaW5kX2VudHJ5KTsKKyAgcmV0dXJu IGVudHJ5OworfQorCisvKiBTdWJyb3V0aW5lIG9mIHByb2Nlc3NfdHlwZV9j b21wX3VuaXQgYW5kIGR3YXJmMl9idWlsZF9wc3ltdGFic19oYXJkCisgICB0 byBjb21iaW5lIHRoZSBjb21tb24gcGFydHMuCiAgICBQcm9jZXNzIGEgY29t cGlsYXRpb24gdW5pdCBmb3IgYSBwc3ltdGFiLgotICAgQlVGRkVSIGlzIGEg cG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkd2FyZiBzZWN0aW9u IGJ1ZmZlci4KKyAgIEJVRkZFUiBpcyBhIHBvaW50ZXIgdG8gdGhlIGJlZ2lu bmluZyBvZiB0aGUgZHdhcmYgc2VjdGlvbiBidWZmZXIsCisgICBlaXRoZXIg LmRlYnVnX2luZm8gb3IgZGVidWdfdHlwZXMuCiAgICBJTkZPX1BUUiBpcyBh IHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBDVS4KICAgIFJldHVybnMg YSBwb2ludGVyIHRvIHRoZSBuZXh0IENVLiAgKi8KIApAQCAtMTY1NiwxMSAr MTg1NywxOSBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1Y3Qg b2JqZmlsCiAgIG1ha2VfY2xlYW51cCAoZHdhcmYyX2ZyZWVfYWJicmV2X3Rh YmxlLCAmY3UpOwogCiAgIC8qIFJlYWQgdGhlIGNvbXBpbGF0aW9uIHVuaXQg ZGllLiAgKi8KKyAgaWYgKHRoaXNfY3UtPmZyb21fZGVidWdfdHlwZXMpCisg ICAgaW5mb19wdHIgKz0gOCAvKnNpZ25hdHVyZSovICsgY3UuaGVhZGVyLm9m ZnNldF9zaXplOwogICBhYmJyZXYgPSBwZWVrX2RpZV9hYmJyZXYgKGluZm9f cHRyLCAmYnl0ZXNfcmVhZCwgJmN1KTsKICAgaW5mb19wdHIgPSByZWFkX3Bh cnRpYWxfZGllICgmY29tcF91bml0X2RpZSwgYWJicmV2LCBieXRlc19yZWFk LCBhYmZkLAogCQkJICAgICAgIGJ1ZmZlciwgaW5mb19wdHIsICZjdSk7CiAK LSAgaWYgKGNvbXBfdW5pdF9kaWUudGFnID09IERXX1RBR19wYXJ0aWFsX3Vu aXQpCisgIGlmICh0aGlzX2N1LT5mcm9tX2RlYnVnX3R5cGVzKQorICAgIHsK KyAgICAgIC8qIG9mZnNldCxsZW5ndGggaGF2ZW4ndCBiZWVuIHNldCB5ZXQg Zm9yIHR5cGUgdW5pdHMuICAqLworICAgICAgdGhpc19jdS0+b2Zmc2V0ID0g Y3UuaGVhZGVyLm9mZnNldDsKKyAgICAgIHRoaXNfY3UtPmxlbmd0aCA9IGN1 LmhlYWRlci5sZW5ndGggKyBjdS5oZWFkZXIuaW5pdGlhbF9sZW5ndGhfc2l6 ZTsKKyAgICB9CisgIGVsc2UgaWYgKGNvbXBfdW5pdF9kaWUudGFnID09IERX X1RBR19wYXJ0aWFsX3VuaXQpCiAgICAgewogICAgICAgaW5mb19wdHIgPSAo YmVnX29mX2NvbXBfdW5pdCArIGN1LmhlYWRlci5sZW5ndGgKIAkJICArIGN1 LmhlYWRlci5pbml0aWFsX2xlbmd0aF9zaXplKTsKQEAgLTE3NjcsMTIgKzE5 NzYsMTggQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoc3RydWN0IG9i amZpbAogICAvKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcHN5bXRhYiBvciBz eW10YWIgZm9yIGEgZmlsZSBvZiB0aGlzCiAgICAgIG5hbWUsIHJlbW92ZSBp dC4gKElmIHRoZXJlIGlzIGEgc3ltdGFiLCBtb3JlIGRyYXN0aWMgdGhpbmdz CiAgICAgIGFsc28gaGFwcGVuLikgVGhpcyBoYXBwZW5zIGluIFZ4V29ya3Mu ICAqLwotICBmcmVlX25hbWVkX3N5bXRhYnMgKHBzdC0+ZmlsZW5hbWUpOwor ICBpZiAoISB0aGlzX2N1LT5mcm9tX2RlYnVnX3R5cGVzKQorICAgIGZyZWVf bmFtZWRfc3ltdGFicyAocHN0LT5maWxlbmFtZSk7CiAKICAgaW5mb19wdHIg PSAoYmVnX29mX2NvbXBfdW5pdCArIGN1LmhlYWRlci5sZW5ndGgKIAkgICAg ICArIGN1LmhlYWRlci5pbml0aWFsX2xlbmd0aF9zaXplKTsKIAotICBpZiAo Y29tcF91bml0X2RpZS5oYXNfc3RtdF9saXN0KQorICBpZiAodGhpc19jdS0+ ZnJvbV9kZWJ1Z190eXBlcykKKyAgICB7CisgICAgICAvKiBJdCdzIG5vdCBj bGVhciB3ZSB3YW50IHRvIGRvIGFueXRoaW5nIHdpdGggc3RtdCBsaXN0cyBo ZXJlLgorCSBXYWl0aW5nIHRvIHNlZSB3aGF0IGdjYyB1bHRpbWF0ZWx5IGRv ZXMuICAqLworICAgIH0KKyAgZWxzZSBpZiAoY29tcF91bml0X2RpZS5oYXNf c3RtdF9saXN0KQogICAgIHsKICAgICAgIC8qIEdldCB0aGUgbGlzdCBvZiBm aWxlcyBpbmNsdWRlZCBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0 LAogCSBhbmQgYnVpbGQgYSBwc3ltdGFiIGZvciBlYWNoIG9mIHRoZW0uICAq LwpAQCAtMTc4NCw2ICsxOTk5LDQwIEBAIHByb2Nlc3NfcHN5bXRhYl9jb21w X3VuaXQgKHN0cnVjdCBvYmpmaWwKICAgcmV0dXJuIGluZm9fcHRyOwogfQog CisvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2Vfbm9y ZXNpemUuCisgICBQcm9jZXNzIG9uZSAuZGVidWdfdHlwZXMgY29tcC11bml0 LgkqLworCitzdGF0aWMgaW50Citwcm9jZXNzX3R5cGVfY29tcF91bml0ICh2 b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKK3sKKyAgc3RydWN0IHNpZ25hdHVy ZWRfdHlwZSAqZW50cnkgPSAoc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqKSAq c2xvdDsKKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSAoc3RydWN0IG9i amZpbGUgKikgaW5mbzsKKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq dGhpc19jdTsKKworICB0aGlzX2N1ID0gJmVudHJ5LT5wZXJfY3U7CisgIHRo aXNfY3UtPmZyb21fZGVidWdfdHlwZXMgPSAxOworCisgIHByb2Nlc3NfcHN5 bXRhYl9jb21wX3VuaXQgKG9iamZpbGUsIHRoaXNfY3UsCisJCQkgICAgIGR3 YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyLAorCQkJICAgICBkd2Fy ZjJfcGVyX29iamZpbGUtPnR5cGVzLmJ1ZmZlciArIGVudHJ5LT5vZmZzZXQs CisJCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuc2l6ZSk7CisK KyAgcmV0dXJuIDE7Cit9CisKKy8qIFN1YnJvdXRpbmUgb2YgZHdhcmYyX2J1 aWxkX3BzeW10YWJzX2hhcmQgdG8gc2ltcGxpZnkgaXQuCisgICBCdWlsZCBw YXJ0aWFsIHN5bWJvbCB0YWJsZXMgZm9yIHRoZSAuZGVidWdfdHlwZXMgY29t cC11bml0cy4gICovCisKK3N0YXRpYyB2b2lkCitidWlsZF90eXBlX3BzeW10 YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK3sKKyAgaWYgKCEgY3Jl YXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUgKG9iamZpbGUpKQorICAgIHJl dHVybjsKKworICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChkd2FyZjJfcGVy X29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMsCisJCQkgIHByb2Nlc3NfdHlw ZV9jb21wX3VuaXQsIG9iamZpbGUpOworfQorCiAvKiBCdWlsZCB0aGUgcGFy dGlhbCBzeW1ib2wgdGFibGUgYnkgZG9pbmcgYSBxdWljayBwYXNzIHRocm91 Z2ggdGhlCiAgICAuZGVidWdfaW5mbyBhbmQgLmRlYnVnX2FiYnJldiBzZWN0 aW9ucy4gICovCiAKQEAgLTE4MDIsNiArMjA1MSw4IEBAIGR3YXJmMl9idWls ZF9wc3ltdGFic19oYXJkIChzdHJ1Y3Qgb2JqZmkKICAgICAgcmVhZF9pbl9j aGFpbi4gIE1ha2Ugc3VyZSB0byBmcmVlIHRoZW0gd2hlbiB3ZSdyZSBkb25l LiAgKi8KICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jYWNoZWRf Y29tcF91bml0cywgTlVMTCk7CiAKKyAgYnVpbGRfdHlwZV9wc3ltdGFicyAo b2JqZmlsZSk7CisKICAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChvYmpmaWxl KTsKIAogICBvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwID0KQEAgLTE4NTUs NiArMjEwNiw4IEBAIGxvYWRfcGFydGlhbF9jb21wX3VuaXQgKHN0cnVjdCBk d2FyZjJfcGUKICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CiAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwogCisgIGdkYl9hc3NlcnQgKCEgdGhpc19j dS0+ZnJvbV9kZWJ1Z190eXBlcyk7CisKICAgaW5mb19wdHIgPSBkd2FyZjJf cGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgdGhpc19jdS0+b2Zmc2V0Owog ICBiZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7CiAKQEAgLTI1OTUsNiAr Mjg0OCw3IEBAIHNraXBfb25lX2RpZSAoZ2RiX2J5dGUgKmJ1ZmZlciwgZ2Ri X2J5dGUKIAkgIGJyZWFrOwogCWNhc2UgRFdfRk9STV9kYXRhODoKIAljYXNl IERXX0ZPUk1fcmVmODoKKwljYXNlIERXX0ZPUk1fc2lnODoKIAkgIGluZm9f cHRyICs9IDg7CiAJICBicmVhazsKIAljYXNlIERXX0ZPUk1fc3RyaW5nOgpA QCAtMjczMCwxMiArMjk4NCw2IEBAIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGEKICAgICBkd2FyZjJfcXVldWVfdGFpbC0+bmV4 dCA9IGl0ZW07CiAKICAgZHdhcmYyX3F1ZXVlX3RhaWwgPSBpdGVtOwotCi0g IC8qIEVpdGhlciBQRVJfQ1UgaXMgdGhlIENVIHdlIHdhbnQgdG8gcHJvY2Vz cywgb3Igd2UncmUgZm9sbG93aW5nIGEgcmVmZXJlbmNlCi0gICAgIHBvaW50 aW5nIGludG8gUEVSX0NVLiAgRWl0aGVyIHdheSwgd2UgbmVlZCBpdHMgRElF cyBub3cuICAqLwotICBsb2FkX2Z1bGxfY29tcF91bml0IChpdGVtLT5wZXJf Y3UsIG9iamZpbGUpOwotICBpdGVtLT5wZXJfY3UtPmN1LT5yZWFkX2luX2No YWluID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5yZWFkX2luX2NoYWluOwotICBk d2FyZjJfcGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW4gPSBpdGVtLT5wZXJf Y3U7CiB9CiAKIC8qIFByb2Nlc3MgdGhlIHF1ZXVlLiAgKi8KQEAgLTI4MzAs NiArMzA3OCwxMSBAQCBwc3ltdGFiX3RvX3N5bXRhYl8xIChzdHJ1Y3QgcGFy dGlhbF9zeW10CiAKICAgcXVldWVfY29tcF91bml0IChwZXJfY3UsIHBzdC0+ b2JqZmlsZSk7CiAKKyAgaWYgKHBlcl9jdS0+ZnJvbV9kZWJ1Z190eXBlcykK KyAgICByZWFkX3NpZ25hdHVyZWRfdHlwZV9hdF9vZmZzZXQgKHBzdC0+b2Jq ZmlsZSwgcGVyX2N1LT5vZmZzZXQpOworICBlbHNlCisgICAgbG9hZF9mdWxs X2NvbXBfdW5pdCAocGVyX2N1LCBwc3QtPm9iamZpbGUpOworCiAgIHByb2Nl c3NfcXVldWUgKHBzdC0+b2JqZmlsZSk7CiAKICAgLyogQWdlIHRoZSBjYWNo ZSwgcmVsZWFzaW5nIGNvbXBpbGF0aW9uIHVuaXRzIHRoYXQgaGF2ZSBub3QK QEAgLTI4NTIsNiArMzEwNSw4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0 cnVjdCBkd2FyZjJfcGVyX2MKICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK ICAgQ09SRV9BRERSIGJhc2VhZGRyOwogCisgIGdkYl9hc3NlcnQgKCEgcGVy X2N1LT5mcm9tX2RlYnVnX3R5cGVzKTsKKwogICAvKiBTZXQgbG9jYWwgdmFy aWFibGVzIGZyb20gdGhlIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGluZm8uICAq LwogICBvZmZzZXQgPSBwZXJfY3UtPm9mZnNldDsKIApAQCAtMjg5MSw2ICsz MTQ2LDEwIEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJf cGVyX2MKICAgZWxzZQogICAgIHNldF9jdV9sYW5ndWFnZSAobGFuZ3VhZ2Vf bWluaW1hbCwgY3UpOwogCisgIC8qIExpbmsgdGhpcyBDVSBpbnRvIHJlYWRf aW5fY2hhaW4uICAqLworICBwZXJfY3UtPmN1LT5yZWFkX2luX2NoYWluID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5yZWFkX2luX2NoYWluOworICBkd2FyZjJf cGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW4gPSBwZXJfY3U7CisKICAgZG9f Y2xlYW51cHMgKGJhY2tfdG8pOwogCiAgIC8qIFdlJ3ZlIHN1Y2Nlc3NmdWxs eSBhbGxvY2F0ZWQgdGhpcyBjb21waWxhdGlvbiB1bml0LiAgTGV0IG91ciBj YWxsZXIKQEAgLTI5ODIsNiArMzI0MSw5IEBAIHByb2Nlc3NfZGllIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWMKICAgICBjYXNlIERXX1RBR19jb21w aWxlX3VuaXQ6CiAgICAgICByZWFkX2ZpbGVfc2NvcGUgKGRpZSwgY3UpOwog ICAgICAgYnJlYWs7CisgICAgY2FzZSBEV19UQUdfdHlwZV91bml0OgorICAg ICAgcmVhZF90eXBlX3VuaXRfc2NvcGUgKGRpZSwgY3UpOworICAgICAgYnJl YWs7CiAgICAgY2FzZSBEV19UQUdfc3VicHJvZ3JhbToKICAgICBjYXNlIERX X1RBR19pbmxpbmVkX3N1YnJvdXRpbmU6CiAgICAgICByZWFkX2Z1bmNfc2Nv cGUgKGRpZSwgY3UpOwpAQCAtMzMwMyw2ICszNTY1LDg1IEBAIHJlYWRfZmls ZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOwogfQogCisvKiBGb3IgVFVzIHdlIHdhbnQgdG8gc2tp cCB0aGUgZmlyc3QgdG9wIGxldmVsIHNpYmxpbmcgaWYgaXQncyBub3QgdGhl CisgICBhY3R1YWwgdHlwZSBiZWluZyBkZWZpbmVkIGJ5IHRoaXMgVFUuICBJ biB0aGlzIGNhc2UgdGhlIGZpcnN0IHRvcAorICAgbGV2ZWwgc2libGluZyBp cyB0aGVyZSB0byBwcm92aWRlIGNvbnRleHQgb25seS4gICovCisKK3N0YXRp YyB2b2lkCityZWFkX3R5cGVfdW5pdF9zY29wZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQoreworICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOworICBzdHJ1Y3QgY2xlYW51 cCAqYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsK KyAgQ09SRV9BRERSIGxvd3BjOworICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OworICBjaGFyICpuYW1lID0gTlVMTDsKKyAgY2hhciAqY29tcF9kaXIgPSBO VUxMOworICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZTsKKyAgYmZkICph YmZkID0gb2JqZmlsZS0+b2JmZDsKKyAgc3RydWN0IGxpbmVfaGVhZGVyICps aW5lX2hlYWRlciA9IDA7CisKKyAgLyogc3RhcnRfc3ltdGFiIG5lZWRzIGEg bG93IHBjLCBidXQgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgb25lLgorICAgICBE byB3aGF0IHJlYWRfZmlsZV9zY29wZSB3b3VsZCBkbyBpbiB0aGUgYWJzZW5j ZSBvZiBzdWNoIGluZm8uICAqLworICBsb3dwYyA9IEFOT0ZGU0VUIChvYmpm aWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUp KTsKKworICAvKiBGaW5kIHRoZSBmaWxlbmFtZS4gIERvIG5vdCB1c2UgZHdh cmYyX25hbWUgaGVyZSwgc2luY2UgdGhlIGZpbGVuYW1lCisgICAgIGlzIG5v dCBhIHNvdXJjZSBsYW5ndWFnZSBpZGVudGlmaWVyLiAgKi8KKyAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX25hbWUsIGN1KTsKKyAgaWYgKGF0 dHIpCisgICAgbmFtZSA9IERXX1NUUklORyAoYXR0cik7CisKKyAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbXBfZGlyLCBjdSk7CisgIGlm IChhdHRyKQorICAgIGNvbXBfZGlyID0gRFdfU1RSSU5HIChhdHRyKTsKKyAg ZWxzZSBpZiAobmFtZSAhPSBOVUxMICYmIElTX0FCU09MVVRFX1BBVEggKG5h bWUpKQorICAgIHsKKyAgICAgIGNvbXBfZGlyID0gbGRpcm5hbWUgKG5hbWUp OworICAgICAgaWYgKGNvbXBfZGlyICE9IE5VTEwpCisJbWFrZV9jbGVhbnVw ICh4ZnJlZSwgY29tcF9kaXIpOworICAgIH0KKworICBpZiAobmFtZSA9PSBO VUxMKQorICAgIG5hbWUgPSAiPHVua25vd24+IjsKKworICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfbGFuZ3VhZ2UsIGN1KTsKKyAgaWYgKGF0 dHIpCisgICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1 KTsKKworICAvKiBUaGlzIGlzbid0IHRlY2huaWNhbGx5IG5lZWRlZCB0b2Rh eS4gIEl0IGlzIGRvbmUgZm9yIHN5bW1ldHJ5CisgICAgIHdpdGggcmVhZF9m aWxlX3Njb3BlLiAgKi8KKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX3Byb2R1Y2VyLCBjdSk7CisgIGlmIChhdHRyKSAKKyAgICBjdS0+cHJv ZHVjZXIgPSBEV19TVFJJTkcgKGF0dHIpOworCisgIC8qIFdlIGFzc3VtZSB0 aGF0IHdlJ3JlIHByb2Nlc3NpbmcgR0NDIG91dHB1dC4gKi8KKyAgcHJvY2Vz c2luZ19nY2NfY29tcGlsYXRpb24gPSAyOworCisgIHByb2Nlc3NpbmdfaGFz X25hbWVzcGFjZV9pbmZvID0gMDsKKworICBzdGFydF9zeW10YWIgKG5hbWUs IGNvbXBfZGlyLCBsb3dwYyk7CisgIHJlY29yZF9kZWJ1Z2Zvcm1hdCAoIkRX QVJGIDIiKTsKKyAgcmVjb3JkX3Byb2R1Y2VyIChjdS0+cHJvZHVjZXIpOwor CisgIC8qIFByb2Nlc3MgdGhlIGRpZXMgaW4gdGhlIHR5cGUgdW5pdC4gICov CisgIGlmIChkaWUtPmNoaWxkID09IE5VTEwpCisgICAgeworICAgICAgZHVt cF9kaWVfZm9yX2Vycm9yIChkaWUpOworICAgICAgZXJyb3IgKF8oIkR3YXJm IEVycm9yOiBNaXNzaW5nIGNoaWxkcmVuIGZvciB0eXBlIHVuaXQgW2luIG1v ZHVsZSAlc10iKSwKKwkgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsK KyAgICB9CisKKyAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKKworICB3aGls ZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQorICAgIHsKKyAgICAg IHByb2Nlc3NfZGllIChjaGlsZF9kaWUsIGN1KTsKKworICAgICAgY2hpbGRf ZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7CisgICAgfQorCisgIGRv X2NsZWFudXBzIChiYWNrX3RvKTsKK30KKwogc3RhdGljIHZvaWQKIGFkZF90 b19jdV9mdW5jX2xpc3QgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBs b3dwYywgQ09SRV9BRERSIGhpZ2hwYywKIAkJICAgICBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKQEAgLTQ1MzIsNiArNDg3MywyMiBAQCByZWFkX3N0cnVjdHVy ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpCiAgIGlmICh0eXBlKQogICAg IHJldHVybiB0eXBlOwogCisgIC8qIElmIHRoZSBkZWZpbml0aW9uIG9mIHRo aXMgdHlwZSBsaXZlcyBpbiAuZGVidWdfdHlwZXMsIHJlYWQgdGhhdCB0eXBl LgorICAgICBEb24ndCBmb2xsb3cgRFdfQVRfc3BlY2lmaWNhdGlvbiB0aG91 Z2gsIHRoYXQgd2lsbCB0YWtlIHVzIGJhY2sgdXAKKyAgICAgdGhlIGNoYWlu IGFuZCB3ZSB3YW50IHRvIGdvIGRvd24uICAqLworICBhdHRyID0gZHdhcmYy X2F0dHJfbm9fZm9sbG93IChkaWUsIERXX0FUX3NpZ25hdHVyZSwgY3UpOwor ICBpZiAoYXR0cikKKyAgICB7CisgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0 eXBlX2N1ID0gY3U7CisgICAgICBzdHJ1Y3QgZGllX2luZm8gKnR5cGVfZGll ID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0eXBlX2N1 KTsKKyAgICAgIC8qIFdlIGNvdWxkIGp1c3QgcmVjdXJzZSBvbiByZWFkX3N0 cnVjdHVyZV90eXBlLCBidXQgd2UgbmVlZCB0byBjYWxsCisJIGdldF9kaWVf dHlwZSB0byBlbnN1cmUgb25seSBvbmUgdHlwZSBmb3IgdGhpcyBESUUgaXMg Y3JlYXRlZC4KKwkgVGhpcyBpcyBpbXBvcnRhbnQsIGZvciBleGFtcGxlLCBi ZWNhdXNlIGZvciBjKysgY2xhc3NlcyB3ZSBuZWVkCisJIFRZUEVfTkFNRSBz ZXQgd2hpY2ggaXMgb25seSBkb25lIGJ5IG5ld19zeW1ib2wuICBCbGVjaC4g ICovCisgICAgICB0eXBlID0gcmVhZF90eXBlX2RpZSAodHlwZV9kaWUsIHR5 cGVfY3UpOworICAgICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCB0eXBl LCBjdSk7CisgICAgfQorCiAgIHR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxl KTsKICAgSU5JVF9DUExVU19TUEVDSUZJQyAodHlwZSk7CiAKQEAgLTQ3NDYs NiArNTEwMywxOCBAQCByZWFkX2VudW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqCiAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CiAgIGNvbnN0 IGNoYXIgKm5hbWU7CiAKKyAgLyogSWYgdGhlIGRlZmluaXRpb24gb2YgdGhp cyB0eXBlIGxpdmVzIGluIC5kZWJ1Z190eXBlcywgcmVhZCB0aGF0IHR5cGUu CisgICAgIERvbid0IGZvbGxvdyBEV19BVF9zcGVjaWZpY2F0aW9uIHRob3Vn aCwgdGhhdCB3aWxsIHRha2UgdXMgYmFjayB1cAorICAgICB0aGUgY2hhaW4g YW5kIHdlIHdhbnQgdG8gZ28gZG93bi4gICovCisgIGF0dHIgPSBkd2FyZjJf YXR0cl9ub19mb2xsb3cgKGRpZSwgRFdfQVRfc2lnbmF0dXJlLCBjdSk7Cisg IGlmIChhdHRyKQorICAgIHsKKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnR5 cGVfY3UgPSBjdTsKKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdHlwZV9kaWUg PSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnR5cGVfY3Up OworICAgICAgdHlwZSA9IHJlYWRfdHlwZV9kaWUgKHR5cGVfZGllLCB0eXBl X2N1KTsKKyAgICAgIHJldHVybiBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwg Y3UpOworICAgIH0KKwogICB0eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7 CiAKICAgVFlQRV9DT0RFICh0eXBlKSA9IFRZUEVfQ09ERV9FTlVNOwpAQCAt NTY2NSw3ICs2MDM0LDEwIEBAIGluaXRfY3VfZGllX3JlYWRlciAoc3RydWN0 IGRpZV9yZWFkZXJfc3AKIHsKICAgcmVhZGVyLT5hYmZkID0gY3UtPm9iamZp bGUtPm9iZmQ7CiAgIHJlYWRlci0+Y3UgPSBjdTsKLSAgcmVhZGVyLT5idWZm ZXIgPSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uYnVmZmVyOworICBpZiAo Y3UtPnBlcl9jdS0+ZnJvbV9kZWJ1Z190eXBlcykKKyAgICByZWFkZXItPmJ1 ZmZlciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyOworICBl bHNlCisgICAgcmVhZGVyLT5idWZmZXIgPSBkd2FyZjJfcGVyX29iamZpbGUt PmluZm8uYnVmZmVyOwogfQogCiAvKiBSZWFkIGEgd2hvbGUgY29tcGlsYXRp b24gdW5pdCBpbnRvIGEgbGlua2VkIGxpc3Qgb2YgZGllcy4gICovCkBAIC01 Njc1LDYgKzYwNDcsNyBAQCByZWFkX2NvbXBfdW5pdCAoZ2RiX2J5dGUgKmlu Zm9fcHRyLCBzdHJ1CiB7CiAgIHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJl YWRlcl9zcGVjczsKIAorICBnZGJfYXNzZXJ0IChjdS0+ZGllX2hhc2ggPT0g TlVMTCk7CiAgIGN1LT5kaWVfaGFzaAogICAgID0gaHRhYl9jcmVhdGVfYWxs b2NfZXggKGN1LT5oZWFkZXIubGVuZ3RoIC8gMTIsCiAJCQkgICAgZGllX2hh c2gsCkBAIC01NzAzLDcgKzYwNzYsMTQgQEAgcmVhZF9kaWVfYW5kX2NoaWxk cmVuIChjb25zdCBzdHJ1Y3QgZGllXwogCiAgIGlmIChkd2FyZjJfZGllX2Rl YnVnKQogICAgIHsKLSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgIlJlYWQgZGllIGZyb20gLmRlYnVnX2luZm86XG4iKTsKKyAgICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCSAgIlxuUmVh ZCBkaWUgZnJvbSAlcyBvZiAlczpcbiIsCisJCQkgIHJlYWRlci0+YnVmZmVy ID09IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIKKwkJCSAgPyAi LmRlYnVnX2luZm8iCisJCQkgIDogcmVhZGVyLT5idWZmZXIgPT0gZHdhcmYy X3Blcl9vYmpmaWxlLT50eXBlcy5idWZmZXIKKwkJCSAgPyAiLmRlYnVnX3R5 cGVzIgorCQkJICA6ICJ1bmtub3duIHNlY3Rpb24iLAorCQkJICByZWFkZXIt PmFiZmQtPmZpbGVuYW1lKTsKICAgICAgIGR1bXBfZGllIChyZXN1bHQsIGR3 YXJmMl9kaWVfZGVidWcpOwogICAgIH0KIApAQCAtNTczNSw5ICs2MTE1LDcg QEAgcmVhZF9kaWVfYW5kX2NoaWxkcmVuXzEgKGNvbnN0IHN0cnVjdCBkaQog ICBzdG9yZV9pbl9yZWZfdGFibGUgKGRpZSwgcmVhZGVyLT5jdSk7CiAKICAg aWYgKGhhc19jaGlsZHJlbikKLSAgICB7Ci0gICAgICBkaWUtPmNoaWxkID0g cmVhZF9kaWVfYW5kX3NpYmxpbmdzIChyZWFkZXIsIGN1cl9wdHIsIG5ld19p bmZvX3B0ciwgZGllKTsKLSAgICB9CisgICAgZGllLT5jaGlsZCA9IHJlYWRf ZGllX2FuZF9zaWJsaW5ncyAocmVhZGVyLCBjdXJfcHRyLCBuZXdfaW5mb19w dHIsIGRpZSk7CiAgIGVsc2UKICAgICB7CiAgICAgICBkaWUtPmNoaWxkID0g TlVMTDsKQEAgLTU4MTMsMTEgKzYxOTEsMTAgQEAgcmVhZF9mdWxsX2RpZSAo Y29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfcwogCiAgIGFiYnJldiA9IGR3YXJm Ml9sb29rdXBfYWJicmV2IChhYmJyZXZfbnVtYmVyLCBjdSk7CiAgIGlmICgh YWJicmV2KQotICAgIHsKLSAgICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjog Y291bGQgbm90IGZpbmQgYWJicmV2IG51bWJlciAlZCBbaW4gbW9kdWxlICVz XSIpLAotCSAgICAgYWJicmV2X251bWJlciwKLQkgICAgIGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpKTsKLSAgICB9CisgICAgZXJyb3IgKF8oIkR3YXJmIEVy cm9yOiBjb3VsZCBub3QgZmluZCBhYmJyZXYgbnVtYmVyICVkIFtpbiBtb2R1 bGUgJXNdIiksCisJICAgYWJicmV2X251bWJlciwKKwkgICBiZmRfZ2V0X2Zp bGVuYW1lIChhYmZkKSk7CisKICAgZGllID0gZHdhcmZfYWxsb2NfZGllIChj dSwgYWJicmV2LT5udW1fYXR0cnMpOwogICBkaWUtPm9mZnNldCA9IG9mZnNl dDsKICAgZGllLT50YWcgPSBhYmJyZXYtPnRhZzsKQEAgLTYyNzMsNiArNjY1 MCw3IEBAIHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9p bmYKIAkgIHN3aXRjaCAocGFydF9kaWUtPnRhZykKIAkgICAgewogCSAgICBj YXNlIERXX1RBR19jb21waWxlX3VuaXQ6CisJICAgIGNhc2UgRFdfVEFHX3R5 cGVfdW5pdDoKIAkgICAgICAvKiBDb21waWxhdGlvbiB1bml0cyBoYXZlIGEg RFdfQVRfbmFtZSB0aGF0IGlzIGEgZmlsZW5hbWUsIG5vdAogCQkgYSBzb3Vy Y2UgbGFuZ3VhZ2UgaWRlbnRpZmllci4gICovCiAJICAgIGNhc2UgRFdfVEFH X2VudW1lcmF0aW9uX3R5cGU6CkBAIC02NDM1LDcgKzY4MTMsMTAgQEAgZmlu ZF9wYXJ0aWFsX2RpZV9pbl9jb21wX3VuaXQgKHVuc2lnbmVkIAogICByZXR1 cm4gbG9va3VwX2RpZTsKIH0KIAotLyogRmluZCBhIHBhcnRpYWwgRElFIGF0 IE9GRlNFVCwgd2hpY2ggbWF5IG9yIG1heSBub3QgYmUgaW4gQ1UuICAqLwor LyogRmluZCBhIHBhcnRpYWwgRElFIGF0IE9GRlNFVCwgd2hpY2ggbWF5IG9y IG1heSBub3QgYmUgaW4gQ1UsCisgICBleGNlcHQgaW4gdGhlIGNhc2Ugb2Yg LmRlYnVnX3R5cGVzIERJRXMgd2hpY2ggZG8gbm90IHJlZmVyZW5jZQorICAg b3V0c2lkZSB0aGVpciBDVSAodGhleSBkbyBob3dldmVyIHJlZmVyZW5jaW5n IG90aGVyIHR5cGVzIHZpYQorICAgRFdfRk9STV9zaWc4KS4gICovCiAKIHN0 YXRpYyBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqCiBmaW5kX3BhcnRpYWxf ZGllICh1bnNpZ25lZCBpbnQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKQEAgLTY0NDMsNiArNjgyNCwxNCBAQCBmaW5kX3BhcnRpYWxfZGllICh1 bnNpZ25lZCBpbnQgb2Zmc2V0LCBzCiAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSA9IE5VTEw7CiAgIHN0cnVjdCBwYXJ0aWFsX2RpZV9p bmZvICpwZCA9IE5VTEw7CiAKKyAgaWYgKGN1LT5wZXJfY3UtPmZyb21fZGVi dWdfdHlwZXMpCisgICAgeworICAgICAgcGQgPSBmaW5kX3BhcnRpYWxfZGll X2luX2NvbXBfdW5pdCAob2Zmc2V0LCBjdSk7CisgICAgICBpZiAocGQgIT0g TlVMTCkKKwlyZXR1cm4gcGQ7CisgICAgICBnb3RvIG5vdF9mb3VuZDsKKyAg ICB9CisKICAgaWYgKG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zm c2V0KSkKICAgICB7CiAgICAgICBwZCA9IGZpbmRfcGFydGlhbF9kaWVfaW5f Y29tcF91bml0IChvZmZzZXQsIGN1KTsKQEAgLTY0OTYsNiArNjg4NSw4IEBA IGZpbmRfcGFydGlhbF9kaWUgKHVuc2lnbmVkIGludCBvZmZzZXQsIHMKICAg ICAgIHBkID0gZmluZF9wYXJ0aWFsX2RpZV9pbl9jb21wX3VuaXQgKG9mZnNl dCwgcGVyX2N1LT5jdSk7CiAgICAgfQogCisgbm90X2ZvdW5kOgorCiAgIGlm IChwZCA9PSBOVUxMKQogICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sCiAJCSAgICBfKCJjb3VsZCBub3QgZmluZCBwYXJ0aWFsIERJ RSAweCV4IGluIGNhY2hlIFtmcm9tIG1vZHVsZSAlc11cbiIpLApAQCAtNjY0 OSw2ICs3MDQwLDE0IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChzdHJ1Y3Qg YXR0cmlidXRlICoKICAgICAgIERXX0FERFIgKGF0dHIpID0gY3UtPmhlYWRl ci5vZmZzZXQgKyByZWFkXzhfYnl0ZXMgKGFiZmQsIGluZm9fcHRyKTsKICAg ICAgIGluZm9fcHRyICs9IDg7CiAgICAgICBicmVhazsKKyAgICBjYXNlIERX X0ZPUk1fc2lnODoKKyAgICAgIC8qIENvbnZlcnQgdGhlIHNpZ25hdHVyZSB0 byBzb21ldGhpbmcgd2UgY2FuIHJlY29yZCBpbiBEV19VTlNORAorCSBmb3Ig bGF0ZXIgbG9va3VwLgorICAgICAgICAgTk9URTogVGhpcyBpcyBOVUxMIGlm IHRoZSB0eXBlIHdhc24ndCBmb3VuZC4gICovCisgICAgICBEV19TSUdOQVRV UkVEX1RZUEUgKGF0dHIpID0KKwlsb29rdXBfc2lnbmF0dXJlZF90eXBlIChj dS0+b2JqZmlsZSwgcmVhZF84X2J5dGVzIChhYmZkLCBpbmZvX3B0cikpOwor ICAgICAgaW5mb19wdHIgKz0gODsKKyAgICAgIGJyZWFrOwogICAgIGNhc2Ug RFdfRk9STV9yZWZfdWRhdGE6CiAgICAgICBEV19BRERSIChhdHRyKSA9IChj dS0+aGVhZGVyLm9mZnNldAogCQkJKyByZWFkX3Vuc2lnbmVkX2xlYjEyOCAo YWJmZCwgaW5mb19wdHIsICZieXRlc19yZWFkKSk7CkBAIC03MTExLDYgKzc1 MTAsMjUgQEAgZHdhcmYyX2F0dHIgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCB1 bnNpZwogICByZXR1cm4gTlVMTDsKIH0KIAorLyogUmV0dXJuIHRoZSBuYW1l ZCBhdHRyaWJ1dGUgb3IgTlVMTCBpZiBub3QgdGhlcmUsCisgICBidXQgZG8g bm90IGZvbGxvdyBEV19BVF9zcGVjaWZpY2F0aW9uLCBldGMuCisgICBUaGlz IGlzIGZvciB1c2UgaW4gY29udGV4dHMgd2hlcmUgd2UncmUgcmVhZGluZyAu ZGVidWdfdHlwZXMgZGllcy4KKyAgIEZvbGxvd2luZyBEV19BVF9zcGVjaWZp Y2F0aW9uLCBEV19BVF9hYnN0cmFjdF9vcmlnaW4gd2lsbCB0YWtlIHVzCisg ICBiYWNrIHVwIHRoZSBjaGFpbiwgYW5kIHdlIHdhbnQgdG8gZ28gZG93bi4g ICovCisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICoKK2R3YXJmMl9hdHRy X25vX2ZvbGxvdyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHVuc2lnbmVkIGlu dCBuYW1lLAorCQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCit7Cisg IHVuc2lnbmVkIGludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBkaWUtPm51 bV9hdHRyczsgKytpKQorICAgIGlmIChkaWUtPmF0dHJzW2ldLm5hbWUgPT0g bmFtZSkKKyAgICAgIHJldHVybiAmZGllLT5hdHRyc1tpXTsKKworICByZXR1 cm4gTlVMTDsKK30KKwogLyogUmV0dXJuIG5vbi16ZXJvIGlmZiB0aGUgYXR0 cmlidXRlIE5BTUUgaXMgZGVmaW5lZCBmb3IgdGhlIGdpdmVuIERJRSwKICAg IGFuZCBob2xkcyBhIG5vbi16ZXJvIHZhbHVlLiAgVGhpcyBmdW5jdGlvbiBz aG91bGQgb25seSBiZSB1c2VkIGZvcgogICAgRFdfRk9STV9mbGFnIGF0dHJp YnV0ZXMuICAqLwpAQCAtODI2Niw4ICs4Njg0LDggQEAgZGllX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZAogICAgICAgLyogQSBtaXNz aW5nIERXX0FUX3R5cGUgcmVwcmVzZW50cyBhIHZvaWQgdHlwZS4gICovCiAg ICAgICByZXR1cm4gb2JqZmlsZV90eXBlIChjdS0+b2JqZmlsZSktPmJ1aWx0 aW5fdm9pZDsKICAgICB9Ci0gIGVsc2UKLSAgICB0eXBlX2RpZSA9IGZvbGxv d19kaWVfcmVmIChkaWUsIHR5cGVfYXR0ciwgJmN1KTsKKworICB0eXBlX2Rp ZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCB0eXBlX2F0dHIsICZj dSk7CiAKICAgdHlwZSA9IHRhZ190eXBlX3RvX3R5cGUgKHR5cGVfZGllLCBj dSk7CiAgIGlmICghdHlwZSkKQEAgLTgyOTIsNyArODcxMCw3IEBAIGRpZV9j b250YWluaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGkKICAgdHlwZV9h dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY29udGFpbmluZ190eXBl LCBjdSk7CiAgIGlmICh0eXBlX2F0dHIpCiAgICAgewotICAgICAgdHlwZV9k aWUgPSBmb2xsb3dfZGllX3JlZiAoZGllLCB0eXBlX2F0dHIsICZjdSk7Cisg ICAgICB0eXBlX2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCB0 eXBlX2F0dHIsICZjdSk7CiAgICAgICB0eXBlID0gdGFnX3R5cGVfdG9fdHlw ZSAodHlwZV9kaWUsIGN1KTsKICAgICB9CiAgIGlmICghdHlwZSkKQEAgLTg3 MzEsNiArOTE0OSw4IEBAIGR3YXJmX3RhZ19uYW1lICh1bnNpZ25lZCB0YWcp CiAgICAgICByZXR1cm4gIkRXX1RBR19jb25kaXRpb24iOwogICAgIGNhc2Ug RFdfVEFHX3NoYXJlZF90eXBlOgogICAgICAgcmV0dXJuICJEV19UQUdfc2hh cmVkX3R5cGUiOworICAgIGNhc2UgRFdfVEFHX3R5cGVfdW5pdDoKKyAgICAg IHJldHVybiAiRFdfVEFHX3R5cGVfdW5pdCI7CiAgICAgY2FzZSBEV19UQUdf TUlQU19sb29wOgogICAgICAgcmV0dXJuICJEV19UQUdfTUlQU19sb29wIjsK ICAgICBjYXNlIERXX1RBR19IUF9hcnJheV9kZXNjcmlwdG9yOgpAQCAtODk0 Niw2ICs5MzY2LDkgQEAgZHdhcmZfYXR0cl9uYW1lICh1bnNpZ25lZCBhdHRy KQogICAgICAgcmV0dXJuICJEV19BVF9wdXJlIjsKICAgICBjYXNlIERXX0FU X3JlY3Vyc2l2ZToKICAgICAgIHJldHVybiAiRFdfQVRfcmVjdXJzaXZlIjsK KyAgICAvKiBEV0FSRiA0IHZhbHVlcy4gICovCisgICAgY2FzZSBEV19BVF9z aWduYXR1cmU6CisgICAgICByZXR1cm4gIkRXX0FUX3NpZ25hdHVyZSI7CiAg ICAgLyogU0dJL01JUFMgZXh0ZW5zaW9ucy4gICovCiAjaWZkZWYgTUlQUyAv KiBjb2xsaWRlcyB3aXRoIERXX0FUX0hQX2Jsb2NrX2luZGV4ICovCiAgICAg Y2FzZSBEV19BVF9NSVBTX2ZkZToKQEAgLTkwMTcsNiArOTQ0MCw4IEBAIGR3 YXJmX2F0dHJfbmFtZSAodW5zaWduZWQgYXR0cikKICAgICAgIHJldHVybiAi RFdfQVRfYm9keV9lbmQiOwogICAgIGNhc2UgRFdfQVRfR05VX3ZlY3RvcjoK ICAgICAgIHJldHVybiAiRFdfQVRfR05VX3ZlY3RvciI7CisgICAgY2FzZSBE V19BVF9HTlVfb2RyX3NpZ25hdHVyZToKKyAgICAgIHJldHVybiAiRFdfQVRf R05VX29kcl9zaWduYXR1cmUiOwogICAgIC8qIFZNUyBleHRlbnNpb25zLiAg Ki8KICAgICBjYXNlIERXX0FUX1ZNU19ydG5iZWdfcGRfYWRkcmVzczoKICAg ICAgIHJldHVybiAiRFdfQVRfVk1TX3J0bmJlZ19wZF9hZGRyZXNzIjsKQEAg LTkwODQsNiArOTUwOSwxNCBAQCBkd2FyZl9mb3JtX25hbWUgKHVuc2lnbmVk IGZvcm0pCiAgICAgICByZXR1cm4gIkRXX0ZPUk1fcmVmX3VkYXRhIjsKICAg ICBjYXNlIERXX0ZPUk1faW5kaXJlY3Q6CiAgICAgICByZXR1cm4gIkRXX0ZP Uk1faW5kaXJlY3QiOworICAgIGNhc2UgRFdfRk9STV9zZWNfb2Zmc2V0Ogor ICAgICAgcmV0dXJuICJEV19GT1JNX3NlY19vZmZzZXQiOworICAgIGNhc2Ug RFdfRk9STV9leHBybG9jOgorICAgICAgcmV0dXJuICJEV19GT1JNX2V4cHJs b2MiOworICAgIGNhc2UgRFdfRk9STV9mbGFnX3ByZXNlbnQ6CisgICAgICBy ZXR1cm4gIkRXX0ZPUk1fZmxhZ19wcmVzZW50IjsKKyAgICBjYXNlIERXX0ZP Uk1fc2lnODoKKyAgICAgIHJldHVybiAiRFdfRk9STV9zaWc4IjsKICAgICBj YXNlIEdEQl9GT1JNX2NhY2hlZF9zdHJpbmc6CiAgICAgICByZXR1cm4gIkdE Ql9GT1JNX2NhY2hlZF9zdHJpbmciOwogICAgIGRlZmF1bHQ6CkBAIC05NjI5 LDYgKzEwMDYyLDEzIEBAIGR1bXBfZGllX3NoYWxsb3cgKHN0cnVjdCB1aV9m aWxlICpmLCBpbnQKIAljYXNlIERXX0ZPUk1fc2RhdGE6CiAJICBmcHJpbnRm X3VuZmlsdGVyZWQgKGYsICJjb25zdGFudDogJWxkIiwgRFdfVU5TTkQgKCZk aWUtPmF0dHJzW2ldKSk7CiAJICBicmVhazsKKwljYXNlIERXX0ZPUk1fc2ln ODoKKwkgIGlmIChEV19TSUdOQVRVUkVEX1RZUEUgKCZkaWUtPmF0dHJzW2ld KSAhPSBOVUxMKQorCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGYsICJzaWdu YXR1cmVkIHR5cGUsIG9mZnNldDogMHgleCIsCisJCQkJRFdfU0lHTkFUVVJF RF9UWVBFICgmZGllLT5hdHRyc1tpXSktPm9mZnNldCk7CisJICBlbHNlCisJ ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInNpZ25hdHVyZWQgdHlwZSwg b2Zmc2V0OiB1bmtub3duIik7CisJICBicmVhazsKIAljYXNlIERXX0ZPUk1f c3RyaW5nOgogCWNhc2UgRFdfRk9STV9zdHJwOgogCWNhc2UgR0RCX0ZPUk1f Y2FjaGVkX3N0cmluZzoKQEAgLTk3NjYsOSArMTAyMDYsMTEgQEAgZHdhcmYy X2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChzdHJ1Y3QgYQogfQogCiAvKiBU SElTX0NVIGhhcyBhIHJlZmVyZW5jZSB0byBQRVJfQ1UuICBJZiBuZWNlc3Nh cnksIGxvYWQgdGhlIG5ldyBjb21waWxhdGlvbgotICAgdW5pdCBhbmQgYWRk IGl0IHRvIG91ciBxdWV1ZS4gICovCisgICB1bml0IGFuZCBhZGQgaXQgdG8g b3VyIHF1ZXVlLgorICAgVGhlIHJlc3VsdCBpcyBub24temVybyBpZiBQRVJf Q1Ugd2FzIHF1ZXVlZCwgb3RoZXJ3aXNlIHRoZSByZXN1bHQgaXMgemVybwor ICAgbWVhbmluZyBlaXRoZXIgUEVSX0NVIGlzIGFscmVhZHkgcXVldWVkIG9y IGl0IGlzIGFscmVhZHkgbG9hZGVkLiAgKi8KIAotc3RhdGljIHZvaWQKK3N0 YXRpYyBpbnQKIG1heWJlX3F1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJm Ml9jdSAqdGhpc19jdSwKIAkJICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSkKIHsKQEAgLTk3NzgsMTggKzEwMjIwLDQ0IEBAIG1h eWJlX3F1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9jdSAKIAogICAv KiBJZiBpdCdzIGFscmVhZHkgb24gdGhlIHF1ZXVlLCB3ZSBoYXZlIG5vdGhp bmcgdG8gZG8uICAqLwogICBpZiAocGVyX2N1LT5xdWV1ZWQpCi0gICAgcmV0 dXJuOworICAgIHJldHVybiAwOwogCiAgIC8qIElmIHRoZSBjb21waWxhdGlv biB1bml0IGlzIGFscmVhZHkgbG9hZGVkLCBqdXN0IG1hcmsgaXQgYXMKICAg ICAgdXNlZC4gICovCiAgIGlmIChwZXJfY3UtPmN1ICE9IE5VTEwpCiAgICAg ewogICAgICAgcGVyX2N1LT5jdS0+bGFzdF91c2VkID0gMDsKLSAgICAgIHJl dHVybjsKKyAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAvKiBBZGQgaXQg dG8gdGhlIHF1ZXVlLiAgKi8KICAgcXVldWVfY29tcF91bml0IChwZXJfY3Us IHRoaXNfY3UtPm9iamZpbGUpOworCisgIHJldHVybiAxOworfQorCisvKiBG b2xsb3cgcmVmZXJlbmNlIG9yIHNpZ25hdHVyZSBhdHRyaWJ1dGUgQVRUUiBv ZiBTUkNfRElFLgorICAgT24gZW50cnkgKlJFRl9DVSBpcyB0aGUgQ1Ugb2Yg U1JDX0RJRS4KKyAgIE9uIGV4aXQgKlJFRl9DVSBpcyB0aGUgQ1Ugb2YgdGhl IHJlc3VsdC4gICovCisKK3N0YXRpYyBzdHJ1Y3QgZGllX2luZm8gKgorZm9s bG93X2RpZV9yZWZfb3Jfc2lnIChzdHJ1Y3QgZGllX2luZm8gKnNyY19kaWUs IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCisJCSAgICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICoqcmVmX2N1KQoreworICBzdHJ1Y3QgZGllX2luZm8gKmRpZTsK KworICBpZiAoaXNfcmVmX2F0dHIgKGF0dHIpKQorICAgIGRpZSA9IGZvbGxv d19kaWVfcmVmIChzcmNfZGllLCBhdHRyLCByZWZfY3UpOworICBlbHNlIGlm IChhdHRyLT5mb3JtID09IERXX0ZPUk1fc2lnOCkKKyAgICBkaWUgPSBmb2xs b3dfZGllX3NpZyAoc3JjX2RpZSwgYXR0ciwgcmVmX2N1KTsKKyAgZWxzZQor ICAgIHsKKyAgICAgIGR1bXBfZGllX2Zvcl9lcnJvciAoc3JjX2RpZSk7Cisg ICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IEV4cGVjdGVkIHJlZmVyZW5j ZSBhdHRyaWJ1dGUgW2luIG1vZHVsZSAlc10iKSwKKwkgICAgICgqcmVmX2N1 KS0+b2JqZmlsZS0+bmFtZSk7CisgICAgfQorCisgIHJldHVybiBkaWU7CiB9 CiAKIC8qIEZvbGxvdyByZWZlcmVuY2UgYXR0cmlidXRlIEFUVFIgb2YgU1JD X0RJRS4KQEAgLTk4MDUsMTUgKzEwMjczLDI3IEBAIGZvbGxvd19kaWVfcmVm IChzdHJ1Y3QgZGllX2luZm8gKnNyY19kaWUKICAgc3RydWN0IGRpZV9pbmZv IHRlbXBfZGllOwogICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UsICpj dSA9ICpyZWZfY3U7CiAKKyAgZ2RiX2Fzc2VydCAoY3UtPnBlcl9jdSAhPSBO VUxMKTsKKwogICBvZmZzZXQgPSBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0 IChhdHRyKTsKIAotICBpZiAoISBvZmZzZXRfaW5fY3VfcCAoJmN1LT5oZWFk ZXIsIG9mZnNldCkpCisgIGlmIChjdS0+cGVyX2N1LT5mcm9tX2RlYnVnX3R5 cGVzKQorICAgIHsKKyAgICAgIC8qIC5kZWJ1Z190eXBlcyBDVXMgY2Fubm90 IHJlZmVyZW5jZSBhbnl0aGluZyBvdXRzaWRlIHRoZWlyIENVLgorCSBJZiB0 aGV5IG5lZWQgdG8sIHRoZXkgaGF2ZSB0byByZWZlcmVuY2UgYSBzaWduYXR1 cmVkIHR5cGUgdmlhCisJIERXX0ZPUk1fc2lnOC4gICovCisgICAgICBpZiAo ISBvZmZzZXRfaW5fY3VfcCAoJmN1LT5oZWFkZXIsIG9mZnNldCkpCisJZ290 byBub3RfZm91bmQ7CisgICAgICB0YXJnZXRfY3UgPSBjdTsKKyAgICB9Cisg IGVsc2UgaWYgKCEgb2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZz ZXQpKQogICAgIHsKICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KnBlcl9jdTsKICAgICAgIHBlcl9jdSA9IGR3YXJmMl9maW5kX2NvbnRhaW5p bmdfY29tcF91bml0IChvZmZzZXQsIGN1LT5vYmpmaWxlKTsKIAogICAgICAg LyogSWYgbmVjZXNzYXJ5LCBhZGQgaXQgdG8gdGhlIHF1ZXVlIGFuZCBsb2Fk IGl0cyBESUVzLiAgKi8KLSAgICAgIG1heWJlX3F1ZXVlX2NvbXBfdW5pdCAo Y3UsIHBlcl9jdSk7CisgICAgICBpZiAobWF5YmVfcXVldWVfY29tcF91bml0 IChjdSwgcGVyX2N1KSkKKwlsb2FkX2Z1bGxfY29tcF91bml0IChwZXJfY3Us IGN1LT5vYmpmaWxlKTsKIAogICAgICAgdGFyZ2V0X2N1ID0gcGVyX2N1LT5j dTsKICAgICB9CkBAIC05ODI2LDkgKzEwMzA2LDE2NCBAQCBmb2xsb3dfZGll X3JlZiAoc3RydWN0IGRpZV9pbmZvICpzcmNfZGllCiAgIGlmIChkaWUpCiAg ICAgcmV0dXJuIGRpZTsKIAotICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENh bm5vdCBmaW5kIERJRSBhdCAweCVseCByZWZlcmVuY2VkIGZyb20gRElFICIK LQkgImF0IDB4JWx4IFtpbiBtb2R1bGUgJXNdIiksCi0JIChsb25nKSBvZmZz ZXQsIChsb25nKSBzcmNfZGllLT5vZmZzZXQsIGN1LT5vYmpmaWxlLT5uYW1l KTsKKyBub3RfZm91bmQ6CisKKyAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBD YW5ub3QgZmluZCBESUUgYXQgMHgleCByZWZlcmVuY2VkIGZyb20gRElFICIK KwkgImF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKKwkgb2Zmc2V0LCBzcmNf ZGllLT5vZmZzZXQsIGN1LT5vYmpmaWxlLT5uYW1lKTsKK30KKworLyogRm9s bG93IHRoZSBzaWduYXR1cmUgYXR0cmlidXRlIEFUVFIgaW4gU1JDX0RJRS4K KyAgIE9uIGVudHJ5ICpSRUZfQ1UgaXMgdGhlIENVIG9mIFNSQ19ESUUuCisg ICBPbiBleGl0ICpSRUZfQ1UgaXMgdGhlIENVIG9mIHRoZSByZXN1bHQuICAq LworCitzdGF0aWMgc3RydWN0IGRpZV9pbmZvICoKK2ZvbGxvd19kaWVfc2ln IChzdHJ1Y3QgZGllX2luZm8gKnNyY19kaWUsIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsCisJCXN0cnVjdCBkd2FyZjJfY3UgKipyZWZfY3UpCit7CisgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gKCpyZWZfY3UpLT5vYmpmaWxlOwor ICBzdHJ1Y3QgZGllX2luZm8gdGVtcF9kaWU7CisgIHN0cnVjdCBzaWduYXR1 cmVkX3R5cGUgKnNpZ190eXBlID0gRFdfU0lHTkFUVVJFRF9UWVBFIChhdHRy KTsKKyAgc3RydWN0IGR3YXJmMl9jdSAqc2lnX2N1OworICBzdHJ1Y3QgZGll X2luZm8gKmRpZTsKKworICAvKiBzaWdfdHlwZSB3aWxsIGJlIE5VTEwgaWYg dGhlIHNpZ25hdHVyZWQgdHlwZSBpcyBtaXNzaW5nIGZyb20KKyAgICAgdGhl IGRlYnVnIGluZm8uICAqLworICBpZiAoc2lnX3R5cGUgPT0gTlVMTCkKKyAg ICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbm5vdCBmaW5kIHNpZ25hdHVy ZWQgRElFIHJlZmVyZW5jZWQgZnJvbSBESUUgIgorCSAgICAgImF0IDB4JXgg W2luIG1vZHVsZSAlc10iKSwKKwkgICBzcmNfZGllLT5vZmZzZXQsIG9iamZp bGUtPm5hbWUpOworCisgIC8qIElmIG5lY2Vzc2FyeSwgYWRkIGl0IHRvIHRo ZSBxdWV1ZSBhbmQgbG9hZCBpdHMgRElFcy4gICovCisKKyAgaWYgKG1heWJl X3F1ZXVlX2NvbXBfdW5pdCAoKnJlZl9jdSwgJnNpZ190eXBlLT5wZXJfY3Up KQorICAgIHJlYWRfc2lnbmF0dXJlZF90eXBlIChvYmpmaWxlLCBzaWdfdHlw ZSk7CisKKyAgZ2RiX2Fzc2VydCAoc2lnX3R5cGUtPnBlcl9jdS5jdSAhPSBO VUxMKTsKKworICBzaWdfY3UgPSBzaWdfdHlwZS0+cGVyX2N1LmN1OworICB0 ZW1wX2RpZS5vZmZzZXQgPSBzaWdfY3UtPmhlYWRlci5vZmZzZXQgKyBzaWdf dHlwZS0+dHlwZV9vZmZzZXQ7CisgIGRpZSA9IGh0YWJfZmluZF93aXRoX2hh c2ggKHNpZ19jdS0+ZGllX2hhc2gsICZ0ZW1wX2RpZSwgdGVtcF9kaWUub2Zm c2V0KTsKKyAgaWYgKGRpZSkKKyAgICB7CisgICAgICAqcmVmX2N1ID0gc2ln X2N1OworICAgICAgcmV0dXJuIGRpZTsKKyAgICB9CisKKyAgZXJyb3IgKF8o IkR3YXJmIEVycm9yOiBDYW5ub3QgZmluZCBzaWduYXR1cmVkIERJRSBhdCAw eCV4IHJlZmVyZW5jZWQgZnJvbSBESUUgIgorCSAiYXQgMHgleCBbaW4gbW9k dWxlICVzXSIpLAorCSBzaWdfdHlwZS0+dHlwZV9vZmZzZXQsIHNyY19kaWUt Pm9mZnNldCwgb2JqZmlsZS0+bmFtZSk7Cit9CisKKy8qIEdpdmVuIGFuIG9m ZnNldCBvZiBhIHNpZ25hdHVyZWQgdHlwZSwgcmV0dXJuIGl0cyBzaWduYXR1 cmVkX3R5cGUuICAqLworCitzdGF0aWMgc3RydWN0IHNpZ25hdHVyZWRfdHlw ZSAqCitsb29rdXBfc2lnbmF0dXJlZF90eXBlX2F0X29mZnNldCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7Cisg IGdkYl9ieXRlICppbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlw ZXMuYnVmZmVyICsgb2Zmc2V0OworICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBp bml0aWFsX2xlbmd0aF9zaXplOworICB1bnNpZ25lZCBpbnQgc2lnX29mZnNl dDsKKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSBmaW5kX2VudHJ5LCAqdHlw ZV9zaWc7CisKKyAgbGVuZ3RoID0gcmVhZF9pbml0aWFsX2xlbmd0aCAob2Jq ZmlsZS0+b2JmZCwgaW5mb19wdHIsICZpbml0aWFsX2xlbmd0aF9zaXplKTsK KyAgc2lnX29mZnNldCA9IChpbml0aWFsX2xlbmd0aF9zaXplCisJCSsgMiAv KnZlcnNpb24qLworCQkrIChpbml0aWFsX2xlbmd0aF9zaXplID09IDQgPyA0 IDogOCkgLypkZWJ1Z19hYmJyZXZfb2Zmc2V0Ki8KKwkJKyAxIC8qYWRkcmVz c19zaXplKi8pOworICBmaW5kX2VudHJ5LnNpZ25hdHVyZSA9IGJmZF9nZXRf NjQgKG9iamZpbGUtPm9iZmQsIGluZm9fcHRyICsgc2lnX29mZnNldCk7Cisg IHR5cGVfc2lnID0gaHRhYl9maW5kIChkd2FyZjJfcGVyX29iamZpbGUtPnNp Z25hdHVyZWRfdHlwZXMsICZmaW5kX2VudHJ5KTsKKworICAvKiBUaGlzIGlz IG9ubHkgdXNlZCB0byBsb29rdXAgcHJldmlvdXNseSByZWNvcmRlZCB0eXBl cy4KKyAgICAgSWYgd2UgZGlkbid0IGZpbmQgaXQsIGl0J3Mgb3VyIGJ1Zy4g ICovCisgIGdkYl9hc3NlcnQgKHR5cGVfc2lnICE9IE5VTEwpOworICBnZGJf YXNzZXJ0IChvZmZzZXQgPT0gdHlwZV9zaWctPm9mZnNldCk7CisKKyAgcmV0 dXJuIHR5cGVfc2lnOworfQorCisvKiBSZWFkIGluIHNpZ25hdHVyZWQgdHlw ZSBhdCBPRkZTRVQgYW5kIGJ1aWxkIGl0cyBDVSBhbmQgZGllKHMpLiAgKi8K Kworc3RhdGljIHZvaWQKK3JlYWRfc2lnbmF0dXJlZF90eXBlX2F0X29mZnNl dCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisJCQkJdW5zaWduZWQgaW50 IG9mZnNldCkKK3sKKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqdHlwZV9z aWc7CisKKyAgLyogV2UgaGF2ZSB0aGUgc2VjdGlvbiBvZmZzZXQsIGJ1dCB3 ZSBuZWVkIHRoZSBzaWduYXR1cmUgdG8gZG8gdGhlCisgICAgIGhhc2ggdGFi bGUgbG9va3VwLgkgKi8KKyAgdHlwZV9zaWcgPSBsb29rdXBfc2lnbmF0dXJl ZF90eXBlX2F0X29mZnNldCAob2JqZmlsZSwgb2Zmc2V0KTsKKworICBnZGJf YXNzZXJ0ICh0eXBlX3NpZy0+cGVyX2N1LmN1ID09IE5VTEwpOworCisgIHJl YWRfc2lnbmF0dXJlZF90eXBlIChvYmpmaWxlLCB0eXBlX3NpZyk7CisKKyAg Z2RiX2Fzc2VydCAodHlwZV9zaWctPnBlcl9jdS5jdSAhPSBOVUxMKTsKK30K KworLyogUmVhZCBpbiBhIHNpZ25hdHVyZWQgdHlwZSBhbmQgYnVpbGQgaXRz IENVIGFuZCBESUVzLiAgKi8KKworc3RhdGljIHZvaWQKK3JlYWRfc2lnbmF0 dXJlZF90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKwkJICAgICAg c3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqdHlwZV9zaWcpCit7CisgIGdkYl9i eXRlICp0eXBlc19wdHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmJ1 ZmZlciArIHR5cGVfc2lnLT5vZmZzZXQ7CisgIHN0cnVjdCBkaWVfcmVhZGVy X3NwZWNzIHJlYWRlcl9zcGVjczsKKyAgc3RydWN0IGR3YXJmMl9jdSAqY3U7 CisgIFVMT05HRVNUIHNpZ25hdHVyZTsKKyAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG8sICpmcmVlX2N1X2NsZWFudXA7CisgIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHI7CisKKyAgZ2RiX2Fzc2VydCAodHlwZV9zaWctPnBlcl9jdS5jdSA9 PSBOVUxMKTsKKworICBjdSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGR3 YXJmMl9jdSkpOworICBtZW1zZXQgKGN1LCAwLCBzaXplb2YgKHN0cnVjdCBk d2FyZjJfY3UpKTsKKyAgb2JzdGFja19pbml0ICgmY3UtPmNvbXBfdW5pdF9v YnN0YWNrKTsKKyAgY3UtPm9iamZpbGUgPSBvYmpmaWxlOworICB0eXBlX3Np Zy0+cGVyX2N1LmN1ID0gY3U7CisgIGN1LT5wZXJfY3UgPSAmdHlwZV9zaWct PnBlcl9jdTsKKworICAvKiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgbG9h ZGluZywgcmVsZWFzZSBvdXIgc3RvcmFnZS4gICovCisgIGZyZWVfY3VfY2xl YW51cCA9IG1ha2VfY2xlYW51cCAoZnJlZV9vbmVfY29tcF91bml0LCBjdSk7 CisKKyAgdHlwZXNfcHRyID0gcmVhZF90eXBlX2NvbXBfdW5pdF9oZWFkICgm Y3UtPmhlYWRlciwgJnNpZ25hdHVyZSwKKwkJCQkJdHlwZXNfcHRyLCBvYmpm aWxlLT5vYmZkKTsKKyAgZ2RiX2Fzc2VydCAoc2lnbmF0dXJlID09IHR5cGVf c2lnLT5zaWduYXR1cmUpOworCisgIGN1LT5kaWVfaGFzaAorICAgID0gaHRh Yl9jcmVhdGVfYWxsb2NfZXggKGN1LT5oZWFkZXIubGVuZ3RoIC8gMTIsCisJ CQkgICAgZGllX2hhc2gsCisJCQkgICAgZGllX2VxLAorCQkJICAgIE5VTEws CisJCQkgICAgJmN1LT5jb21wX3VuaXRfb2JzdGFjaywKKwkJCSAgICBoYXNo dGFiX29ic3RhY2tfYWxsb2NhdGUsCisJCQkgICAgZHVtbXlfb2JzdGFja19k ZWFsbG9jYXRlKTsKKworICBkd2FyZjJfcmVhZF9hYmJyZXZzIChjdS0+b2Jq ZmlsZS0+b2JmZCwgY3UpOworICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChk d2FyZjJfZnJlZV9hYmJyZXZfdGFibGUsIGN1KTsKKworICBpbml0X2N1X2Rp ZV9yZWFkZXIgKCZyZWFkZXJfc3BlY3MsIGN1KTsKKworICBjdS0+ZGllcyA9 IHJlYWRfZGllX2FuZF9jaGlsZHJlbiAoJnJlYWRlcl9zcGVjcywgdHlwZXNf cHRyLCAmdHlwZXNfcHRyLAorCQkJCSAgICBOVUxMIC8qcGFyZW50Ki8pOwor CisgIC8qIFdlIHRyeSBub3QgdG8gcmVhZCBhbnkgYXR0cmlidXRlcyBpbiB0 aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIG5vdAorICAgICBhbGwgb2JqZmlsZXMg bmVlZGVkIGZvciByZWZlcmVuY2VzIGhhdmUgYmVlbiBsb2FkZWQgeWV0LCBh bmQgc3ltYm9sCisgICAgIHRhYmxlIHByb2Nlc3NpbmcgaXNuJ3QgaW5pdGlh bGl6ZWQuICBCdXQgd2UgaGF2ZSB0byBzZXQgdGhlIENVIGxhbmd1YWdlLAor ICAgICBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGJ1aWxkIHR5cGVzIGNvcnJl Y3RseS4gICovCisgIGF0dHIgPSBkd2FyZjJfYXR0ciAoY3UtPmRpZXMsIERX X0FUX2xhbmd1YWdlLCBjdSk7CisgIGlmIChhdHRyKQorICAgIHNldF9jdV9s YW5ndWFnZSAoRFdfVU5TTkQgKGF0dHIpLCBjdSk7CisgIGVsc2UKKyAgICBz ZXRfY3VfbGFuZ3VhZ2UgKGxhbmd1YWdlX21pbmltYWwsIGN1KTsKKworICBk b19jbGVhbnVwcyAoYmFja190byk7CisKKyAgLyogV2UndmUgc3VjY2Vzc2Z1 bGx5IGFsbG9jYXRlZCB0aGlzIGNvbXBpbGF0aW9uIHVuaXQuICBMZXQgb3Vy IGNhbGxlcgorICAgICBjbGVhbiBpdCB1cCB3aGVuIGZpbmlzaGVkIHdpdGgg aXQuCSAqLworICBkaXNjYXJkX2NsZWFudXBzIChmcmVlX2N1X2NsZWFudXAp OworCisgIHR5cGVfc2lnLT5wZXJfY3UuY3UtPnJlYWRfaW5fY2hhaW4gPSBk d2FyZjJfcGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW47CisgIGR3YXJmMl9w ZXJfb2JqZmlsZS0+cmVhZF9pbl9jaGFpbiA9ICZ0eXBlX3NpZy0+cGVyX2N1 OwogfQogCiAvKiBEZWNvZGUgc2ltcGxlIGxvY2F0aW9uIGRlc2NyaXB0aW9u cy4KQEAgLTEwNzY0LDggKzExMzk5LDggQEAgZHdhcmYyX3Blcl9jdV9hZGRy X3NpemUgKHN0cnVjdCBkd2FyZjJfcAogICAgIH0KIH0KIAotLyogTG9jYXRl IHRoZSBjb21waWxhdGlvbiB1bml0IGZyb20gQ1UncyBvYmpmaWxlIHdoaWNo IGNvbnRhaW5zIHRoZQotICAgRElFIGF0IE9GRlNFVC4gIFJhaXNlcyBhbiBl cnJvciBvbiBmYWlsdXJlLiAgKi8KKy8qIExvY2F0ZSB0aGUgLmRlYnVnX2lu Zm8gY29tcGlsYXRpb24gdW5pdCBmcm9tIENVJ3Mgb2JqZmlsZSB3aGljaCBj b250YWlucworICAgdGhlIERJRSBhdCBPRkZTRVQuICBSYWlzZXMgYW4gZXJy b3Igb24gZmFpbHVyZS4gICovCiAKIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICoKIGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0 ICh1bnNpZ25lZCBpbnQgb2Zmc2V0LAo= --0016364d1fefb7fc1c046eb2cffd--