From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25863 invoked by alias); 26 Apr 2012 22:23:12 -0000 Received: (qmail 25855 invoked by uid 22791); 26 Apr 2012 22:23:10 -0000 X-SWARE-Spam-Status: No, hits=-5.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ,TW_QF,TW_TM,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-vb0-f41.google.com (HELO mail-vb0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 26 Apr 2012 22:22:21 +0000 Received: by vbbey12 with SMTP id ey12so110462vbb.0 for ; Thu, 26 Apr 2012 15:22:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=xycoNOJNYpEm7tmZEDdXFGGLa/ol1R/E4UOjQw9gBHg=; b=df9/krVlmCCriipzPqjbgK23MJHQoBwZE3GcToMaoQ8OqF62VR/gq2W3Ytiu+MnsfV 2LffPq6K2N5U5iDU+eIO2UaETqXdlikrXg1z2JnouJNMBR3Oca9f+xeNqeyKxi6eFQLf 52sTxAvYr7i5MKN5R2Nf25XyE2wrjQlX3+FPmkIeC/xe+IhG1FAWZJYR3izyotePSRpX dtA2OEEywOetTZvoKhSzTPJCOHmgeRHnDx8kEgJ5GSc6hvNzAHUeoXr/h6BnWWDY7juX a0P9932xAVOHDEH7+d0ME25J6tCWh0nxkjRf3yt2OLuakLYqKrt6jobkC1ODd6pq2Cai FU/Q== Received: by 10.52.180.106 with SMTP id dn10mr7724192vdc.127.1335478939676; Thu, 26 Apr 2012 15:22:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.180.106 with SMTP id dn10mr7724185vdc.127.1335478939583; Thu, 26 Apr 2012 15:22:19 -0700 (PDT) Received: by 10.52.165.2 with HTTP; Thu, 26 Apr 2012 15:22:19 -0700 (PDT) In-Reply-To: <878vhi6vq1.fsf@fleche.redhat.com> References: <20120418185511.0AED52461AF@ruffy.mtv.corp.google.com> <878vhi6vq1.fsf@fleche.redhat.com> Date: Thu, 26 Apr 2012 23:05:00 -0000 Message-ID: Subject: Re: [RFA 2/3] Initial Fission support, rewrite DIE reading From: Doug Evans To: Tom Tromey Cc: gdb-patches@sourceware.org, ccoutant@google.com, saugustine@google.com Content-Type: multipart/mixed; boundary=bcaec51a7ed4cc842704be9c6b16 X-System-Of-Record: true X-Gm-Message-State: ALoCoQn+XpVr05NPuZUaE+oCGxK/PoSaBtdqW1MaM7ZXEL/rDHnT0WMFybp3jMLCETU3DG2XxOLiVeGsxXQapB33H+Rdcv5EOcwboiUfRlADKqF60jAXXIJKrMf2UqXTiE0Uocu7yVShh8WcW/3WxCeiU+OV+Dn83A== 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: 2012-04/txt/msg00970.txt.bz2 --bcaec51a7ed4cc842704be9c6b16 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 673 On Thu, Apr 26, 2012 at 2:15 PM, Tom Tromey wrote: >>>>>> "Doug" =3D=3D Doug Evans writes: > > Doug> This is the second patch in the Fission series and an updated > Doug> version of what I posted earlier: > Doug> http://sourceware.org/ml/gdb-patches/2012-04/msg00337.html > > Doug> Ok to commit? > > I found the patch pretty hard to read. > It looked like you moved some functions around, making it harder to > understand as a patch. > > Anyway, nothing really stuck out for me. =A0I think it is ok. Thanks. The two attachments split up the move. [Not that I'm suggesting you read the patch again. :-) Just filing for reference sake.] --bcaec51a7ed4cc842704be9c6b16 Content-Type: text/plain; charset=US-ASCII; name="gdb-120426-fission-rfa-p2a-1.patch.txt" Content-Disposition: attachment; filename="gdb-120426-fission-rfa-p2a-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h1idm9zn0 Content-length: 2693 MjAxMi0wNC0yNiAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog ZHdhcmYycmVhZC5jIChkaWVfaGFzaCwgZGllX2VxKTogTW92ZSBkZWZpbml0 aW9ucyAocHJlcCB3b3JrCglmb3IgRmlzc2lvbiBwYXRjaCkuCgpJbmRleDog ZHdhcmYycmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy9nZGIvZHdhcmYycmVhZC5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjY0MApkaWZmIC11IC1wIC1yMS42NDAgZHdhcmYycmVhZC5j Ci0tLSBkd2FyZjJyZWFkLmMJMjYgQXByIDIwMTIgMjA6MzI6MzAgLTAwMDAJ MS42NDAKKysrIGR3YXJmMnJlYWQuYwkyNiBBcHIgMjAxMiAyMjowNjoxMiAt MDAwMApAQCAtNDY5Miw2ICs0NjkyLDI5IEBAIHBzeW10YWJfdG9fc3ltdGFi XzEgKHN0cnVjdCBwYXJ0aWFsX3N5bXQKICAgZHcyX2RvX2luc3RhbnRpYXRl X3N5bXRhYiAocGVyX2N1KTsKIH0KIAorLyogVHJpdmlhbCBoYXNoIGZ1bmN0 aW9uIGZvciBkaWVfaW5mbzogdGhlIGhhc2ggdmFsdWUgb2YgYSBESUUKKyAg IGlzIGl0cyBvZmZzZXQgaW4gLmRlYnVnX2luZm8gZm9yIHRoaXMgb2JqZmls ZS4gICovCisKK3N0YXRpYyBoYXNodmFsX3QKK2RpZV9oYXNoIChjb25zdCB2 b2lkICppdGVtKQoreworICBjb25zdCBzdHJ1Y3QgZGllX2luZm8gKmRpZSA9 IGl0ZW07CisKKyAgcmV0dXJuIGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmOworfQor CisvKiBUcml2aWFsIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIGRpZV9pbmZv IHN0cnVjdHVyZXM6IHR3byBESUVzCisgICBhcmUgZXF1YWwgaWYgdGhleSBo YXZlIHRoZSBzYW1lIG9mZnNldC4gICovCisKK3N0YXRpYyBpbnQKK2RpZV9l cSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhz KQoreworICBjb25zdCBzdHJ1Y3QgZGllX2luZm8gKmRpZV9saHMgPSBpdGVt X2xoczsKKyAgY29uc3Qgc3RydWN0IGRpZV9pbmZvICpkaWVfcmhzID0gaXRl bV9yaHM7CisKKyAgcmV0dXJuIGRpZV9saHMtPm9mZnNldC5zZWN0X29mZiA9 PSBkaWVfcmhzLT5vZmZzZXQuc2VjdF9vZmY7Cit9CisKIC8qIExvYWQgdGhl IERJRXMgYXNzb2NpYXRlZCB3aXRoIFBFUl9DVSBpbnRvIG1lbW9yeS4gICov CiAKIHN0YXRpYyB2b2lkCkBAIC05MjY0LDI5ICs5Mjg3LDYgQEAgcmVhZF91 bnNwZWNpZmllZF90eXBlIChzdHJ1Y3QgZGllX2luZm8gKgogICByZXR1cm4g c2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKIH0KIAotLyogVHJpdmlh bCBoYXNoIGZ1bmN0aW9uIGZvciBkaWVfaW5mbzogdGhlIGhhc2ggdmFsdWUg b2YgYSBESUUKLSAgIGlzIGl0cyBvZmZzZXQgaW4gLmRlYnVnX2luZm8gZm9y IHRoaXMgb2JqZmlsZS4gICovCi0KLXN0YXRpYyBoYXNodmFsX3QKLWRpZV9o YXNoIChjb25zdCB2b2lkICppdGVtKQotewotICBjb25zdCBzdHJ1Y3QgZGll X2luZm8gKmRpZSA9IGl0ZW07Ci0KLSAgcmV0dXJuIGRpZS0+b2Zmc2V0LnNl Y3Rfb2ZmOwotfQotCi0vKiBUcml2aWFsIGNvbXBhcmlzb24gZnVuY3Rpb24g Zm9yIGRpZV9pbmZvIHN0cnVjdHVyZXM6IHR3byBESUVzCi0gICBhcmUgZXF1 YWwgaWYgdGhleSBoYXZlIHRoZSBzYW1lIG9mZnNldC4gICovCi0KLXN0YXRp YyBpbnQKLWRpZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZv aWQgKml0ZW1fcmhzKQotewotICBjb25zdCBzdHJ1Y3QgZGllX2luZm8gKmRp ZV9saHMgPSBpdGVtX2xoczsKLSAgY29uc3Qgc3RydWN0IGRpZV9pbmZvICpk aWVfcmhzID0gaXRlbV9yaHM7Ci0KLSAgcmV0dXJuIGRpZV9saHMtPm9mZnNl dC5zZWN0X29mZiA9PSBkaWVfcmhzLT5vZmZzZXQuc2VjdF9vZmY7Ci19Ci0K IC8qIFJlYWQgYSB3aG9sZSBjb21waWxhdGlvbiB1bml0IGludG8gYSBsaW5r ZWQgbGlzdCBvZiBkaWVzLiAgKi8KIAogc3RhdGljIHN0cnVjdCBkaWVfaW5m byAqCg== --bcaec51a7ed4cc842704be9c6b16 Content-Type: text/plain; charset=US-ASCII; name="gdb-120426-fission-rfa-p2b-1.patch.txt" Content-Disposition: attachment; filename="gdb-120426-fission-rfa-p2b-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h1idmhzi1 Content-length: 96612 MjAxMi0wNC0xOCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog ZHdhcmYycmVhZC5jIChkd2FyZjJfcGVyX29iamZpbGUpOiBSZXBsYWNlIG1l bWJlcnMKCWRlYnVnX2luZm9fdHlwZV9oYXNoIGFuZCBkZWJ1Z190eXBlc190 eXBlX2hhc2ggd2l0aCBkaWVfdHlwZV9oYXNoLgoJKGRpZV9yZWFkZXJfc3Bl Y3MpOiBOZXcgbWVtYmVyICJkaWVfc2VjdGlvbiIuICBUZW1wb3JhcmlseSBt YWtlCgltZW1iZXIgImJ1ZmZlciIgbm9uLWNvbnN0LCBwZW5kaW5nIGNvbnN0 aWZ5aW5nIGFsbCBpbmZvX3B0ciB1c2VzLgoJKGRpZV9yZWFkZXJfZnVuY19m dHlwZSk6IE5ldyB0eXBlZGVmLgoJKGR3Ml9nZXRfZmlsZV9uYW1lc19yZWFk ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZHcyX2dldF9maWxlX25hbWVzKTogUmV3 cml0ZS4KCShyZWFkX2FuZF9jaGVja190eXBlX3VuaXRfaGVhZCk6IFJlbmFt ZSBhcmcgdHlwZV9vZmZzZXQgdG8KCXR5cGVfb2Zmc2V0X2luX3R1LgoJKGNy ZWF0ZV9hbGxfdHlwZV91bml0cyk6IEltcHJvdmUgZGVidWdnaW5nIG1lc3Nh Z2UuCglJbXByb3ZlIGR1bW15IHR5cGUgdW5pdCBjaGVjay4KCShpbml0X2N1 X2RpZV9yZWFkZXIpOiBOZXcgYXJnICJzZWN0aW9uIi4gIEFsbCBjYWxsZXJz IHVwZGF0ZWQuCgkoaW5pdF9hbmRfcmVhZF9kaWVzX3dvcmtlcik6IE5ldyBm dW5jdGlvbi4KCShpbml0X2N1X2FuZF9yZWFkX2RpZXMsIGluaXRfdHVfYW5k X3JlYWRfZGllcyk6IE5ldyBmdW5jdGlvbnMuCgkoaW5pdF9jdXR1X2FuZF9y ZWFkX2RpZXNfbm9fZm9sbG93KTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfY3V0 dV9hbmRfcmVhZF9kaWVzX3NpbXBsZSk6IE5ldyBmdW5jdGlvbi4KCShwcm9j ZXNzX3BzeW10YWJfY29tcF91bml0X3JlYWRlcik6IE5ldyBmdW5jdGlvbi4K CShwcm9jZXNzX3BzeW10YWJfY29tcF91bml0KTogRGVsZXRlIGFyZ3Mgc2Vj dGlvbiwKCWlzX2RlYnVnX3R5cGVzX3NlY3Rpb24uICBSZXdyaXRlLiAgQWxs IGNhbGxlcnMgdXBkYXRlZC4KCShwcm9jZXNzX3BzeW10YWJfdHlwZV91bml0 KTogUmVuYW1lZCBmcm9tIHByb2Nlc3NfdHlwZV9jb21wX3VuaXQuCglBbGwg Y2FsbGVycyB1cGRhdGVkLiAgUmV3cml0ZS4KCShsb2FkX3BhcnRpYWxfY29t cF91bml0X3JlYWRlcik6IE5ldyBmdW5jdGlvbi4KCShsb2FkX3BhcnRpYWxf Y29tcF91bml0KTogUmV3cml0ZS4KCShza2lwX2NoaWxkcmVuKTogTmV3IGFy ZyByZWFkZXIuICBEZWxldGUgYXJncyBidWZmZXIsIGN1LgoJQWxsIGNhbGxl cnMgdXBkYXRlZC4KCShza2lwX29uZV9kaWUpOiBOZXcgYXJnIHJlYWRlci4g IERlbGV0ZSBhcmdzIGJ1ZmZlciwgY3UuCglBbGwgY2FsbGVycyB1cGRhdGVk LgoJKGxvY2F0ZV9wZGlfc2libGluZyk6IE5ldyBhcmcgcmVhZGVyLiAgRGVs ZXRlIGFyZ3MgYnVmZmVyLCBhYmZkLCBjdS4KCUFsbCBjYWxsZXJzIHVwZGF0 ZWQuCgkobG9hZF9mdWxsX2NvbXBfdW5pdF9yZWFkZXIpOiBOZXcgZnVuY3Rp b24uCgkobG9hZF9mdWxsX2NvbXBfdW5pdCk6IFJld3JpdGUuCgkocmVhZF9j b21wX3VuaXQpOiBEZWxldGUuCgkocmVhZF9kaWVfYW5kX2NoaWxkcmVuXzEp OiBEZWxldGUsIGNvbnRlbnRzIG1vdmVkIC4uLgoJKHJlYWRfZGllX2FuZF9j aGlsZHJlbik6IC4uLiBoZXJlLgoJKGR3YXJmMl9yZWFkX2FiYnJldnMpOiBO ZXcgYXJnIGFiYnJldl9zZWN0aW9uLiAgQWxsIGNhbGxlcnMgdXBkYXRlZC4K CShsb2FkX3BhcnRpYWxfZGllcyk6IE5ldyBhcmcgcmVhZGVyLiAgRGVsZXRl IGFyZ3MgYWJmZCwgYnVmZmVyLCBjdS4KCUFsbCBjYWxsZXJzIHVwZGF0ZWQu CgkocmVhZF9wYXJ0aWFsX2RpZSk6IE5ldyBhcmcgcmVhZGVyLiAgRGVsZXRl IGFyZ3MgYWJmZCwgYnVmZmVyLCBjdS4KCUFsbCBjYWxsZXJzIHVwZGF0ZWQu CgkoZmluZF9wYXJ0aWFsX2RpZSk6IFJld3JpdGUgbG9hZF9hbGxfZGllcyBz dXBwb3J0LgoJKHJlYWRfYXR0cmlidXRlX3ZhbHVlKTogTmV3IGFyZyByZWFk ZXIuICBEZWxldGUgYXJncyBhYmZkLCBjdS4KCUFsbCBjYWxsZXJzIHVwZGF0 ZWQuCgkocmVhZF9hdHRyaWJ1dGUpOiBOZXcgYXJnIHJlYWRlci4gIERlbGV0 ZSBhcmdzIGFiZmQsIGN1LgoJQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShsb2Fk X2Z1bGxfdHlwZV91bml0KTogQWRkIGFzc2VydC4KCShyZWFkX3NpZ25hdHVy ZWRfdHlwZV9yZWFkZXIpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9zaWduYXR1 cmVkX3R5cGUpOiBSZXdyaXRlLgoJKGZyZWVfc3RhY2tfY29tcF91bml0KTog UmVtb3ZlIGNhbGwgdG8gYWdlX2NhY2hlZF9jb21wX3VuaXRzLgoJKGZyZWVf b25lX2NhY2hlZF9jb21wX3VuaXQpOiBDaGFuZ2UgdGFyZ2V0X2N1IGFyZyB0 byB0YXJnZXRfcGVyX2N1LgoJQWxsIGNhbGxlcnMgdXBkYXRlZC4gIFNldCBw ZXJfY3UtPmN1ID0gTlVMTCBhZnRlciBmcmVlaW5nIGl0LgoJKGR3YXJmMl9w ZXJfY3Vfb2Zmc2V0X2FuZF90eXBlKTogUmVuYW1lZCBmcm9tIGR3YXJmMl9v ZmZzZXRfYW5kX3R5cGUuCgkocGVyX2N1X29mZnNldF9hbmRfdHlwZV9oYXNo KTogUmVuYW1lZCBmcm9tIG9mZnNldF9hbmRfdHlwZV9oYXNoLgoJKHBlcl9j dV9vZmZzZXRfYW5kX3R5cGVfZXEpOiBSZW5hbWVkIGZyb20gb2Zmc2V0X2Fu ZF90eXBlX2VxLgoJKHNldF9kaWVfdHlwZSk6IFVwZGF0ZS4KCShnZXRfZGll X3R5cGVfYXRfb2Zmc2V0KTogVXBkYXRlLgoJKHJlYWRfZmlsZV9zY29wZSk6 IENhbGwgcHJlcGFyZV9vbmVfY29tcF91bml0LgoJKHJlYWRfdHlwZV91bml0 X3Njb3BlKTogRGl0dG8uCgkocHJlcGFyZV9vbmVfY29tcF91bml0KTogU2V0 IHByb2R1Y2VyIGlmIHByZXNlbnQuCgpJbmRleDogZHdhcmYycmVhZC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvZHdhcmYycmVhZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY0MApk aWZmIC11IC1wIC1yMS42NDAgZHdhcmYycmVhZC5jCi0tLSBkd2FyZjJyZWFk LmMJMjYgQXByIDIwMTIgMjA6MzI6MzAgLTAwMDAJMS42NDAKKysrIGR3YXJm MnJlYWQuYwkyNiBBcHIgMjAxMiAyMjowNjoxMiAtMDAwMApAQCAtMjExLDE1 ICsyMTEsMTAgQEAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQogICAgICBz eW1ib2xzLiAgKi8KICAgaW50IHJlYWRpbmdfcGFydGlhbF9zeW1ib2xzOwog Ci0gIC8qIFRhYmxlIG1hcHBpbmcgdHlwZSAuZGVidWdfaW5mbyBESUUgb2Zm c2V0cyB0byB0eXBlcy4KKyAgLyogVGFibGUgbWFwcGluZyB0eXBlIERJRXMg dG8gdGhlaXIgc3RydWN0IHR5cGUgKi4KICAgICAgVGhpcyBpcyBOVUxMIGlm IG5vdCBhbGxvY2F0ZWQgeWV0LgotICAgICBJdCAoY3VycmVudGx5KSBtYWtl cyBzZW5zZSB0byBhbGxvY2F0ZSBkZWJ1Z190eXBlc190eXBlX2hhc2ggbGF6 aWx5LgotICAgICBUbyBrZWVwIHRoaW5ncyBzaW1wbGUgd2UgYWxsb2NhdGUg Ym90aCBsYXppbHkuICAqLwotICBodGFiX3QgZGVidWdfaW5mb190eXBlX2hh c2g7Ci0KLSAgLyogVGFibGUgbWFwcGluZyB0eXBlIC5kZWJ1Z190eXBlcyBE SUUgc2VjdF9vZmZzZXQgdG8gdHlwZXMuCi0gICAgIFRoaXMgaXMgTlVMTCBp ZiBub3QgYWxsb2NhdGVkIHlldC4gICovCi0gIGh0YWJfdCBkZWJ1Z190eXBl c190eXBlX2hhc2g7CisgICAgIFRoZSBtYXBwaW5nIGlzIGRvbmUgdmlhIChD VS9UVSBzaWduYXR1cmUgKyBESUUgb2Zmc2V0KSAtPiB0eXBlLiAgKi8KKyAg aHRhYl90IGRpZV90eXBlX2hhc2g7CiB9OwogCiBzdGF0aWMgc3RydWN0IGR3 YXJmMl9wZXJfb2JqZmlsZSAqZHdhcmYyX3Blcl9vYmpmaWxlOwpAQCAtNDY1 LDIyICs0NjAsMzEgQEAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZQogLyogU3Ry dWN0IHVzZWQgdG8gcGFzcyBtaXNjLiBwYXJhbWV0ZXJzIHRvIHJlYWRfZGll X2FuZF9jaGlsZHJlbiwgZXQKICAgIGFsLiAgd2hpY2ggYXJlIHVzZWQgZm9y IGJvdGggLmRlYnVnX2luZm8gYW5kIC5kZWJ1Z190eXBlcyBkaWVzLgogICAg QWxsIHBhcmFtZXRlcnMgaGVyZSBhcmUgdW5jaGFuZ2luZyBmb3IgdGhlIGxp ZmUgb2YgdGhlIGNhbGwuICBUaGlzCi0gICBzdHJ1Y3QgZXhpc3RzIHRvIGFi c3RyYWN0IGF3YXkgdGhlIGNvbnN0YW50IHBhcmFtZXRlcnMgb2YgZGllCi0g ICByZWFkaW5nLiAgKi8KKyAgIHN0cnVjdCBleGlzdHMgdG8gYWJzdHJhY3Qg YXdheSB0aGUgY29uc3RhbnQgcGFyYW1ldGVycyBvZiBkaWUgcmVhZGluZy4g ICovCiAKIHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzCiB7Ci0gIC8qIFRoZSBi ZmQgb2YgdGhpcyBvYmpmaWxlLiAgKi8KKyAgLyogZGllX3NlY3Rpb24tPmFz ZWN0aW9uLT5vd25lci4gICovCiAgIGJmZCogYWJmZDsKIAogICAvKiBUaGUg Q1Ugb2YgdGhlIERJRSB3ZSBhcmUgcGFyc2luZy4gICovCiAgIHN0cnVjdCBk d2FyZjJfY3UgKmN1OwogCi0gIC8qIFBvaW50ZXIgdG8gc3RhcnQgb2Ygc2Vj dGlvbiBidWZmZXIuCi0gICAgIFRoaXMgaXMgZWl0aGVyIHRoZSBzdGFydCBv ZiAuZGVidWdfaW5mbyBvciAuZGVidWdfdHlwZXMuICAqLwotICBjb25zdCBn ZGJfYnl0ZSAqYnVmZmVyOworICAvKiBUaGUgc2VjdGlvbiB0aGUgZGllIGNv bWVzIGZyb20uCisgICAgIFRoaXMgaXMgZWl0aGVyIC5kZWJ1Z19pbmZvIG9y IC5kZWJ1Z190eXBlcy4gICovCisgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvICpkaWVfc2VjdGlvbjsKKworICAvKiBkaWVfc2VjdGlvbi0+YnVmZmVy LiAgKi8KKyAgZ2RiX2J5dGUgKmJ1ZmZlcjsKIH07CiAKKy8qIFR5cGUgb2Yg ZnVuY3Rpb24gcGFzc2VkIHRvIGluaXRfY3VfYW5kX3JlYWRfZGllcywgZXQu YWwuICAqLwordHlwZWRlZiB2b2lkIChkaWVfcmVhZGVyX2Z1bmNfZnR5cGUp IChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQkJ CSAgICAgIGdkYl9ieXRlICppbmZvX3B0ciwKKwkJCQkgICAgICBzdHJ1Y3Qg ZGllX2luZm8gKmNvbXBfdW5pdF9kaWUsCisJCQkJICAgICAgaW50IGhhc19j aGlsZHJlbiwKKwkJCQkgICAgICB2b2lkICpkYXRhKTsKKwogLyogVGhlIGxp bmUgbnVtYmVyIGluZm9ybWF0aW9uIGZvciBhIGNvbXBpbGF0aW9uIHVuaXQg KGZvdW5kIGluIHRoZQogICAgLmRlYnVnX2xpbmUgc2VjdGlvbikgYmVnaW5z IHdpdGggYSAic3RhdGVtZW50IHByb2dyYW0gaGVhZGVyIiwKICAgIHdoaWNo IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uICAqLwpAQCAt ODg0LDE1ICs4ODgsMTIgQEAgc3RhdGljIHZvaWQgYWRkX3BhcnRpYWxfc3Vi cHJvZ3JhbSAoc3RydQogCQkJCSAgICBDT1JFX0FERFIgKmxvd3BjLCBDT1JF X0FERFIgKmhpZ2hwYywKIAkJCQkgICAgaW50IG5lZWRfcGMsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KTsKIAotc3RhdGljIGdkYl9ieXRlICpsb2NhdGVfcGRp X3NpYmxpbmcgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpvcmlnX3BkaSwK LQkJCQkgICAgIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0 ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmQg KmFiZmQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLQogc3RhdGljIHZvaWQg ZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFiIChzdHJ1Y3QgcGFydGlhbF9zeW10 YWIgKik7CiAKIHN0YXRpYyB2b2lkIHBzeW10YWJfdG9fc3ltdGFiXzEgKHN0 cnVjdCBwYXJ0aWFsX3N5bXRhYiAqKTsKIAotc3RhdGljIHZvaWQgZHdhcmYy X3JlYWRfYWJicmV2cyAoc3RydWN0IGR3YXJmMl9jdSAqY3UpOworc3RhdGlj IHZvaWQgZHdhcmYyX3JlYWRfYWJicmV2cyAoc3RydWN0IGR3YXJmMl9jdSAq LAorCQkJCSBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqKTsKIAogc3Rh dGljIHZvaWQgZHdhcmYyX2ZyZWVfYWJicmV2X3RhYmxlICh2b2lkICopOwog CkBAIC05MDQsMTUgKzkwNSwxNCBAQCBzdGF0aWMgc3RydWN0IGFiYnJldl9p bmZvICpwZWVrX2RpZV9hYmJyCiBzdGF0aWMgc3RydWN0IGFiYnJldl9pbmZv ICpkd2FyZjJfbG9va3VwX2FiYnJldiAodW5zaWduZWQgaW50LAogCQkJCQkJ IHN0cnVjdCBkd2FyZjJfY3UgKik7CiAKLXN0YXRpYyBzdHJ1Y3QgcGFydGlh bF9kaWVfaW5mbyAqbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqLAotCQkJCQkJ ICAgZ2RiX2J5dGUgKiwgZ2RiX2J5dGUgKiwKLQkJCQkJCSAgIGludCwgc3Ry dWN0IGR3YXJmMl9jdSAqKTsKK3N0YXRpYyBzdHJ1Y3QgcGFydGlhbF9kaWVf aW5mbyAqbG9hZF9wYXJ0aWFsX2RpZXMKKyAgKGNvbnN0IHN0cnVjdCBkaWVf cmVhZGVyX3NwZWNzICosIGdkYl9ieXRlICosIGludCk7CiAKLXN0YXRpYyBn ZGJfYnl0ZSAqcmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGll X2luZm8gKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGFiYnJldl9pbmZvICphYmJyZXYsCi0JCQkJICAgdW5zaWduZWQg aW50LCBiZmQgKiwKLQkJCQkgICBnZGJfYnl0ZSAqLCBnZGJfYnl0ZSAqLAot CQkJCSAgIHN0cnVjdCBkd2FyZjJfY3UgKik7CitzdGF0aWMgZ2RiX2J5dGUg KnJlYWRfcGFydGlhbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3Nw ZWNzICosCisJCQkJICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKiwKKwkJ CQkgICBzdHJ1Y3QgYWJicmV2X2luZm8gKiwKKwkJCQkgICB1bnNpZ25lZCBp bnQsCisJCQkJICAgZ2RiX2J5dGUgKik7CiAKIHN0YXRpYyBzdHJ1Y3QgcGFy dGlhbF9kaWVfaW5mbyAqZmluZF9wYXJ0aWFsX2RpZSAoc2VjdF9vZmZzZXQs CiAJCQkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CkBAIC05MjAsMTEgKzky MCw5IEBAIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqZmluZF9w YXIKIHN0YXRpYyB2b2lkIGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFy dGlhbF9kaWVfaW5mbyAqLAogCQkJICAgICAgIHN0cnVjdCBkd2FyZjJfY3Ug Kik7CiAKLXN0YXRpYyBnZGJfYnl0ZSAqcmVhZF9hdHRyaWJ1dGUgKHN0cnVj dCBhdHRyaWJ1dGUgKiwgc3RydWN0IGF0dHJfYWJicmV2ICosCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiZmQgKiwgZ2RiX2J5dGUgKiwg c3RydWN0IGR3YXJmMl9jdSAqKTsKLQotc3RhdGljIGdkYl9ieXRlICpyZWFk X2F0dHJpYnV0ZV92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqLCB1bnNpZ25l ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJm ZCAqLCBnZGJfYnl0ZSAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworc3RhdGlj IGdkYl9ieXRlICpyZWFkX2F0dHJpYnV0ZSAoY29uc3Qgc3RydWN0IGRpZV9y ZWFkZXJfc3BlY3MgKiwKKwkJCQkgc3RydWN0IGF0dHJpYnV0ZSAqLCBzdHJ1 Y3QgYXR0cl9hYmJyZXYgKiwKKwkJCQkgZ2RiX2J5dGUgKik7CiAKIHN0YXRp YyB1bnNpZ25lZCBpbnQgcmVhZF8xX2J5dGUgKGJmZCAqLCBnZGJfYnl0ZSAq KTsKIApAQCAtMTEwMCwyNiArMTA5OCwxOCBAQCBzdGF0aWMgQ09SRV9BRERS IGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgCiBzdGF0aWMgZW51bSBkd2FyZl9h cnJheV9kaW1fb3JkZXJpbmcgcmVhZF9hcnJheV9vcmRlciAoc3RydWN0IGRp ZV9pbmZvICosCiAJCQkJCQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqKTsK IAotc3RhdGljIHN0cnVjdCBkaWVfaW5mbyAqcmVhZF9jb21wX3VuaXQgKGdk Yl9ieXRlICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0KLXN0YXRpYyBzdHJ1 Y3QgZGllX2luZm8gKnJlYWRfZGllX2FuZF9jaGlsZHJlbl8xIChjb25zdCBz dHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAotCQkJCQkJIGdkYl9i eXRlICppbmZvX3B0ciwKLQkJCQkJCSBnZGJfYnl0ZSAqKm5ld19pbmZvX3B0 ciwKLQkJCQkJCSBzdHJ1Y3QgZGllX2luZm8gKnBhcmVudCk7Ci0KLXN0YXRp YyBzdHJ1Y3QgZGllX2luZm8gKnJlYWRfZGllX2FuZF9jaGlsZHJlbiAoY29u c3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKK3N0YXRpYyBz dHJ1Y3QgZGllX2luZm8gKnJlYWRfZGllX2FuZF9jaGlsZHJlbiAoY29uc3Qg c3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKiwKIAkJCQkJICAgICAgIGdkYl9i eXRlICppbmZvX3B0ciwKIAkJCQkJICAgICAgIGdkYl9ieXRlICoqbmV3X2lu Zm9fcHRyLAogCQkJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpwYXJlbnQp OwogCi1zdGF0aWMgc3RydWN0IGRpZV9pbmZvICpyZWFkX2RpZV9hbmRfc2li bGluZ3MgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIs CitzdGF0aWMgc3RydWN0IGRpZV9pbmZvICpyZWFkX2RpZV9hbmRfc2libGlu Z3MgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICosCiAJCQkJCSAg ICAgICBnZGJfYnl0ZSAqaW5mb19wdHIsCiAJCQkJCSAgICAgICBnZGJfYnl0 ZSAqKm5ld19pbmZvX3B0ciwKIAkJCQkJICAgICAgIHN0cnVjdCBkaWVfaW5m byAqcGFyZW50KTsKIAotc3RhdGljIGdkYl9ieXRlICpyZWFkX2Z1bGxfZGll IChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAotCQkJ CXN0cnVjdCBkaWVfaW5mbyAqKiwgZ2RiX2J5dGUgKiwKLQkJCQlpbnQgKik7 CitzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfZnVsbF9kaWUgKGNvbnN0IHN0cnVj dCBkaWVfcmVhZGVyX3NwZWNzICosCisJCQkJc3RydWN0IGRpZV9pbmZvICoq LCBnZGJfYnl0ZSAqLCBpbnQgKik7CiAKIHN0YXRpYyB2b2lkIHByb2Nlc3Nf ZGllIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsK IApAQCAtMTIxNiw5ICsxMjA2LDkgQEAgc3RhdGljIHZvaWQgZHdhcmYyX3N5 bWJvbF9tYXJrX2NvbXB1dGVkIAogCQkJCQkgc3RydWN0IHN5bWJvbCAqc3lt LAogCQkJCQkgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogCi1zdGF0aWMgZ2Ri X2J5dGUgKnNraXBfb25lX2RpZSAoZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5 dGUgKmluZm9fcHRyLAotCQkJICAgICAgIHN0cnVjdCBhYmJyZXZfaW5mbyAq YWJicmV2LAotCQkJICAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKK3N0 YXRpYyBnZGJfYnl0ZSAqc2tpcF9vbmVfZGllIChjb25zdCBzdHJ1Y3QgZGll X3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQkJICAgICAgIGdkYl9ieXRlICpp bmZvX3B0ciwKKwkJCSAgICAgICBzdHJ1Y3QgYWJicmV2X2luZm8gKmFiYnJl dik7CiAKIHN0YXRpYyB2b2lkIGZyZWVfc3RhY2tfY29tcF91bml0ICh2b2lk ICopOwogCkBAIC0xMjQxLDcgKzEyMzEsNyBAQCBzdGF0aWMgdm9pZCBmcmVl X2NhY2hlZF9jb21wX3VuaXRzICh2b2lkCiAKIHN0YXRpYyB2b2lkIGFnZV9j YWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAKLXN0YXRpYyB2b2lkIGZyZWVf b25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7CitzdGF0aWMgdm9pZCBm cmVlX29uZV9jYWNoZWRfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICopOwogCiBzdGF0aWMgc3RydWN0IHR5cGUgKnNldF9kaWVfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAJCQkJICBz dHJ1Y3QgZHdhcmYyX2N1ICopOwpAQCAtMTI4NCwxMSArMTI3NCwxNCBAQCBz dGF0aWMgZ2RiX2J5dGUgKnJlYWRfYW5kX2NoZWNrX2NvbXBfdW5pCiAgICBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwgZ2RiX2J5dGUg KmluZm9fcHRyLAogICAgaW50IGlzX2RlYnVnX3R5cGVzX3NlY3Rpb24pOwog Ci1zdGF0aWMgdm9pZCBpbml0X2N1X2RpZV9yZWFkZXIgKHN0cnVjdCBkaWVf cmVhZGVyX3NwZWNzICpyZWFkZXIsCi0JCQkJc3RydWN0IGR3YXJmMl9jdSAq Y3UpOworc3RhdGljIHZvaWQgaW5pdF9jdXR1X2FuZF9yZWFkX2RpZXNfc2lt cGxlCisgIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAor ICAgZGllX3JlYWRlcl9mdW5jX2Z0eXBlICpkaWVfcmVhZGVyX2Z1bmMsIHZv aWQgKmRhdGEpOwogCiBzdGF0aWMgaHRhYl90IGFsbG9jYXRlX3NpZ25hdHVy ZWRfdHlwZV90YWJsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogCitz dGF0aWMgdm9pZCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICopOworCiAjaWYgV09SRFNfQklHRU5ESUFO CiAKIC8qIENvbnZlcnQgVkFMVUUgYmV0d2VlbiBiaWctIGFuZCBsaXR0bGUt ZW5kaWFuLiAgKi8KQEAgLTIyMzMsNjcgKzIyMjYsMzMgQEAgZHcyX3NldHVw IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICAgZ2RiX2Fzc2VydCAoZHdh cmYyX3Blcl9vYmpmaWxlKTsKIH0KIAotLyogQSBoZWxwZXIgZm9yIHRoZSAi cXVpY2siIGZ1bmN0aW9ucyB3aGljaCBhdHRlbXB0cyB0byByZWFkIHRoZSBs aW5lCi0gICB0YWJsZSBmb3IgVEhJU19DVS4gICovCisvKiBkaWVfcmVhZGVy X2Z1bmMgZm9yIGR3Ml9nZXRfZmlsZV9uYW1lcy4gICovCiAKLXN0YXRpYyBz dHJ1Y3QgcXVpY2tfZmlsZV9uYW1lcyAqCi1kdzJfZ2V0X2ZpbGVfbmFtZXMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotCQkgICAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqdGhpc19jdSkKK3N0YXRpYyB2b2lkCitkdzJfZ2V0 X2ZpbGVfbmFtZXNfcmVhZGVyIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9z cGVjcyAqcmVhZGVyLAorCQkJICAgZ2RiX2J5dGUgKmluZm9fcHRyLAorCQkJ ICAgc3RydWN0IGRpZV9pbmZvICpjb21wX3VuaXRfZGllLAorCQkJICAgaW50 IGhhc19jaGlsZHJlbiwKKwkJCSAgIHZvaWQgKmRhdGEpCiB7CisgIHN0cnVj dCBkd2FyZjJfY3UgKmN1ID0gcmVhZGVyLT5jdTsKKyAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqdGhpc19jdSA9IGN1LT5wZXJfY3U7ICAKKyAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9i amZpbGU7CiAgIGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7CiAgIHN0cnVj dCBsaW5lX2hlYWRlciAqbGg7CiAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7 Ci0gIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAgc3RydWN0IGRpZV9p bmZvICpjb21wX3VuaXRfZGllOwotICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyogc2VjOwotICBnZGJfYnl0ZSAqaW5mb19wdHI7Ci0gIGludCBoYXNf Y2hpbGRyZW4sIGk7Ci0gIHN0cnVjdCBkd2FyZjJfY3UgY3U7CisgIGludCBp OwogICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKLSAgc3RydWN0IGRpZV9y ZWFkZXJfc3BlY3MgcmVhZGVyX3NwZWNzOwogICBjaGFyICpuYW1lLCAqY29t cF9kaXI7CiAgIHZvaWQgKipzbG90OwogICBzdHJ1Y3QgcXVpY2tfZmlsZV9u YW1lcyAqcWZuOwogICB1bnNpZ25lZCBpbnQgbGluZV9vZmZzZXQ7CiAKLSAg aWYgKHRoaXNfY3UtPnYucXVpY2stPmZpbGVfbmFtZXMgIT0gTlVMTCkKLSAg ICByZXR1cm4gdGhpc19jdS0+di5xdWljay0+ZmlsZV9uYW1lczsKLSAgLyog SWYgd2Uga25vdyB0aGVyZSBpcyBubyBsaW5lIGRhdGEsIG5vIHBvaW50IGlu IGxvb2tpbmcgYWdhaW4uICAqLwotICBpZiAodGhpc19jdS0+di5xdWljay0+ bm9fZmlsZV9kYXRhKQotICAgIHJldHVybiBOVUxMOwotCi0gIGluaXRfb25l X2NvbXBfdW5pdCAoJmN1LCB0aGlzX2N1KTsKLSAgY2xlYW51cHMgPSBtYWtl X2NsZWFudXAgKGZyZWVfc3RhY2tfY29tcF91bml0LCAmY3UpOwotCi0gIGlm ICh0aGlzX2N1LT5kZWJ1Z190eXBlc19zZWN0aW9uKQotICAgIHNlYyA9IHRo aXNfY3UtPmRlYnVnX3R5cGVzX3NlY3Rpb247Ci0gIGVsc2UKLSAgICBzZWMg PSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvOwotICBkd2FyZjJfcmVhZF9z ZWN0aW9uIChvYmpmaWxlLCBzZWMpOwotICBpbmZvX3B0ciA9IHNlYy0+YnVm ZmVyICsgdGhpc19jdS0+b2Zmc2V0LnNlY3Rfb2ZmOwotCi0gIGluZm9fcHRy ID0gcmVhZF9hbmRfY2hlY2tfY29tcF91bml0X2hlYWQgKCZjdS5oZWFkZXIs IHNlYywgaW5mb19wdHIsCi0JCQkJCSAgICB0aGlzX2N1LT5kZWJ1Z190eXBl c19zZWN0aW9uICE9IE5VTEwpOwotCi0gIC8qIFNraXAgZHVtbXkgY29tcGls YXRpb24gdW5pdHMuICAqLwotICBpZiAoaW5mb19wdHIgPj0gKHNlYy0+YnVm ZmVyICsgc2VjLT5zaXplKQotICAgICAgfHwgcGVla19hYmJyZXZfY29kZSAo YWJmZCwgaW5mb19wdHIpID09IDApCi0gICAgewotICAgICAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQot ICBkd2FyZjJfcmVhZF9hYmJyZXZzICgmY3UpOwotICBtYWtlX2NsZWFudXAg KGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSwgJmN1KTsKLQotICBpbml0X2N1 X2RpZV9yZWFkZXIgKCZyZWFkZXJfc3BlY3MsICZjdSk7Ci0gIHJlYWRfZnVs bF9kaWUgKCZyZWFkZXJfc3BlY3MsICZjb21wX3VuaXRfZGllLCBpbmZvX3B0 ciwKLQkJICZoYXNfY2hpbGRyZW4pOwotCiAgIGxoID0gTlVMTDsKICAgc2xv dCA9IE5VTEw7CiAgIGxpbmVfb2Zmc2V0ID0gMDsKLSAgYXR0ciA9IGR3YXJm Ml9hdHRyIChjb21wX3VuaXRfZGllLCBEV19BVF9zdG10X2xpc3QsICZjdSk7 CisKKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGllLCBEV19B VF9zdG10X2xpc3QsIGN1KTsKICAgaWYgKGF0dHIpCiAgICAgewogICAgICAg c3RydWN0IHF1aWNrX2ZpbGVfbmFtZXMgZmluZF9lbnRyeTsKQEAgLTIzMDcs MTggKzIyNjYsMTYgQEAgZHcyX2dldF9maWxlX25hbWVzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZgogCQkJICAgICAmZmluZF9lbnRyeSwgSU5TRVJUKTsKICAg ICAgIGlmICgqc2xvdCAhPSBOVUxMKQogCXsKLQkgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CiAJICB0aGlzX2N1LT52LnF1aWNrLT5maWxlX25hbWVzID0g KnNsb3Q7Ci0JICByZXR1cm4gKnNsb3Q7CisJICByZXR1cm47CiAJfQogCi0g ICAgICBsaCA9IGR3YXJmX2RlY29kZV9saW5lX2hlYWRlciAobGluZV9vZmZz ZXQsIGFiZmQsICZjdSk7CisgICAgICBsaCA9IGR3YXJmX2RlY29kZV9saW5l X2hlYWRlciAobGluZV9vZmZzZXQsIGFiZmQsIGN1KTsKICAgICB9CiAgIGlm IChsaCA9PSBOVUxMKQogICAgIHsKLSAgICAgIGRvX2NsZWFudXBzIChjbGVh bnVwcyk7CiAgICAgICB0aGlzX2N1LT52LnF1aWNrLT5ub19maWxlX2RhdGEg PSAxOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICByZXR1cm47CiAgICAg fQogCiAgIHFmbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssIHNpemVvZiAoKnFmbikpOwpAQCAtMjMyNiw3ICsyMjgzLDcg QEAgZHcyX2dldF9maWxlX25hbWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZgog ICBnZGJfYXNzZXJ0IChzbG90ICE9IE5VTEwpOwogICAqc2xvdCA9IHFmbjsK IAotICBmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoY29tcF91bml0X2RpZSwg JmN1LCAmbmFtZSwgJmNvbXBfZGlyKTsKKyAgZmluZF9maWxlX2FuZF9kaXJl Y3RvcnkgKGNvbXBfdW5pdF9kaWUsIGN1LCAmbmFtZSwgJmNvbXBfZGlyKTsK IAogICBxZm4tPm51bV9maWxlX25hbWVzID0gbGgtPm51bV9maWxlX25hbWVz OwogICBxZm4tPmZpbGVfbmFtZXMgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLApAQCAtMjMzNiwxMCArMjI5MywyOCBAQCBk dzJfZ2V0X2ZpbGVfbmFtZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmCiAgIHFm bi0+cmVhbF9uYW1lcyA9IE5VTEw7CiAKICAgZnJlZV9saW5lX2hlYWRlciAo bGgpOwotICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwogCiAgIHRoaXNfY3Ut PnYucXVpY2stPmZpbGVfbmFtZXMgPSBxZm47Ci0gIHJldHVybiBxZm47Cit9 CisKKy8qIEEgaGVscGVyIGZvciB0aGUgInF1aWNrIiBmdW5jdGlvbnMgd2hp Y2ggYXR0ZW1wdHMgdG8gcmVhZCB0aGUgbGluZQorICAgdGFibGUgZm9yIFRI SVNfQ1UuICAqLworCitzdGF0aWMgc3RydWN0IHF1aWNrX2ZpbGVfbmFtZXMg KgorZHcyX2dldF9maWxlX25hbWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKwkJICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoaXNfY3Up Cit7CisgIGlmICh0aGlzX2N1LT52LnF1aWNrLT5maWxlX25hbWVzICE9IE5V TEwpCisgICAgcmV0dXJuIHRoaXNfY3UtPnYucXVpY2stPmZpbGVfbmFtZXM7 CisgIC8qIElmIHdlIGtub3cgdGhlcmUgaXMgbm8gbGluZSBkYXRhLCBubyBw b2ludCBpbiBsb29raW5nIGFnYWluLiAgKi8KKyAgaWYgKHRoaXNfY3UtPnYu cXVpY2stPm5vX2ZpbGVfZGF0YSkKKyAgICByZXR1cm4gTlVMTDsKKworICBp bml0X2N1dHVfYW5kX3JlYWRfZGllc19zaW1wbGUgKHRoaXNfY3UsIGR3Ml9n ZXRfZmlsZV9uYW1lc19yZWFkZXIsIE5VTEwpOworCisgIGlmICh0aGlzX2N1 LT52LnF1aWNrLT5ub19maWxlX2RhdGEpCisgICAgcmV0dXJuIE5VTEw7Cisg IHJldHVybiB0aGlzX2N1LT52LnF1aWNrLT5maWxlX25hbWVzOwogfQogCiAv KiBBIGhlbHBlciBmb3IgdGhlICJxdWljayIgZnVuY3Rpb25zIHdoaWNoIGNv bXB1dGVzIGFuZCBjYWNoZXMgdGhlCkBAIC0zMTA3LDcgKzMwODIsOCBAQCBz dGF0aWMgZ2RiX2J5dGUgKgogcmVhZF9hbmRfY2hlY2tfdHlwZV91bml0X2hl YWQgKHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqaGVhZGVyLAogCQkJICAgICAg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAogCQkJICAg ICAgIGdkYl9ieXRlICppbmZvX3B0ciwKLQkJCSAgICAgICBVTE9OR0VTVCAq c2lnbmF0dXJlLCBjdV9vZmZzZXQgKnR5cGVfb2Zmc2V0KQorCQkJICAgICAg IFVMT05HRVNUICpzaWduYXR1cmUsCisJCQkgICAgICAgY3Vfb2Zmc2V0ICp0 eXBlX29mZnNldF9pbl90dSkKIHsKICAgZ2RiX2J5dGUgKmJlZ19vZl9jb21w X3VuaXQgPSBpbmZvX3B0cjsKICAgYmZkICphYmZkID0gc2VjdGlvbi0+YXNl Y3Rpb24tPm93bmVyOwpAQCAtMzEyMSw4ICszMDk3LDkgQEAgcmVhZF9hbmRf Y2hlY2tfdHlwZV91bml0X2hlYWQgKHN0cnVjdCBjbwogICBpZiAoc2lnbmF0 dXJlICE9IE5VTEwpCiAgICAgKnNpZ25hdHVyZSA9IHJlYWRfOF9ieXRlcyAo YWJmZCwgaW5mb19wdHIpOwogICBpbmZvX3B0ciArPSA4OwotICBpZiAodHlw ZV9vZmZzZXQgIT0gTlVMTCkKLSAgICB0eXBlX29mZnNldC0+Y3Vfb2ZmID0g cmVhZF9vZmZzZXRfMSAoYWJmZCwgaW5mb19wdHIsIGhlYWRlci0+b2Zmc2V0 X3NpemUpOworICBpZiAodHlwZV9vZmZzZXRfaW5fdHUgIT0gTlVMTCkKKyAg ICB0eXBlX29mZnNldF9pbl90dS0+Y3Vfb2ZmID0gcmVhZF9vZmZzZXRfMSAo YWJmZCwgaW5mb19wdHIsCisJCQkJCSAgICAgICBoZWFkZXItPm9mZnNldF9z aXplKTsKICAgaW5mb19wdHIgKz0gaGVhZGVyLT5vZmZzZXRfc2l6ZTsKIAog ICBoZWFkZXItPmZpcnN0X2RpZV9vZmZzZXQuY3Vfb2ZmID0gaW5mb19wdHIg LSBiZWdfb2ZfY29tcF91bml0OwpAQCAtMzE3MSw4ICszMTQ4LDggQEAgZHdh cmYyX2NyZWF0ZV9pbmNsdWRlX3BzeW10YWIgKGNoYXIgKm5hbQogCiBzdGF0 aWMgdm9pZAogZHdhcmYyX2J1aWxkX2luY2x1ZGVfcHN5bXRhYnMgKHN0cnVj dCBkd2FyZjJfY3UgKmN1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkaWVfaW5mbyAqZGllLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KQorCQkJ ICAgICAgIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorCQkJICAgICAgIHN0cnVj dCBwYXJ0aWFsX3N5bXRhYiAqcHN0KQogewogICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogICBiZmQgKmFiZmQgPSBvYmpmaWxl LT5vYmZkOwpAQCAtMzI0OCw2ICszMjI1LDcgQEAgYWRkX3NpZ25hdHVyZWRf dHlwZV9jdV90b190YWJsZSAodm9pZCAqKgogc3RhdGljIGludAogY3JlYXRl X2FsbF90eXBlX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKIHsK KyAgc3RydWN0IGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7CiAgIGh0YWJf dCB0eXBlc19odGFiID0gTlVMTDsKICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqKml0ZXI7CiAgIGludCBpeDsKQEAgLTMyNzYsNyArMzI1NCwxMiBA QCBjcmVhdGVfYWxsX3R5cGVfdW5pdHMgKHN0cnVjdCBvYmpmaWxlICpvCiAJ dHlwZXNfaHRhYiA9IGFsbG9jYXRlX3NpZ25hdHVyZWRfdHlwZV90YWJsZSAo b2JqZmlsZSk7CiAKICAgICAgIGlmIChkd2FyZjJfZGllX2RlYnVnKQotCWZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlNpZ25hdHVyZWQgdHlw ZXM6XG4iKTsKKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJS ZWFkaW5nIHNpZ25hdHVyZWQgdHlwZXMgZm9yICVzOlxuIiwKKwkJCSAgICBi ZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CisKKyAgICAgIC8qIFdlIGRvbid0 IHVzZSBpbml0X2N1dHVfYW5kX3JlYWRfZGllc19zaW1wbGUsIG9yIHNvbWUg c3VjaCwgaGVyZQorCSBiZWNhdXNlIHdlIGRvbid0IG5lZWQgdG8gcmVhZCBh bnkgZGllczogdGhlIHNpZ25hdHVyZSBpcyBpbiB0aGUKKwkgaGVhZGVyLiAg Ki8KIAogICAgICAgZW5kX3B0ciA9IGluZm9fcHRyICsgc2VjdGlvbi0+c2l6 ZTsKICAgICAgIHdoaWxlIChpbmZvX3B0ciA8IGVuZF9wdHIpCkBAIC0zMjg4 LDYgKzMyNzEsNyBAQCBjcmVhdGVfYWxsX3R5cGVfdW5pdHMgKHN0cnVjdCBv YmpmaWxlICpvCiAJICB2b2lkICoqc2xvdDsKIAkgIGdkYl9ieXRlICpwdHIg PSBpbmZvX3B0cjsKIAkgIHN0cnVjdCBjb21wX3VuaXRfaGVhZCBoZWFkZXI7 CisJICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwogCiAJICBvZmZzZXQuc2VjdF9v ZmYgPSBwdHIgLSBzZWN0aW9uLT5idWZmZXI7CiAKQEAgLTMyOTcsMTAgKzMy ODEsMTMgQEAgY3JlYXRlX2FsbF90eXBlX3VuaXRzIChzdHJ1Y3Qgb2JqZmls ZSAqbwogCSAgcHRyID0gcmVhZF9hbmRfY2hlY2tfdHlwZV91bml0X2hlYWQg KCZoZWFkZXIsIHNlY3Rpb24sIHB0ciwKIAkJCQkJICAgICAgICZzaWduYXR1 cmUsICZ0eXBlX29mZnNldCk7CiAKKwkgIGxlbmd0aCA9IGhlYWRlci5pbml0 aWFsX2xlbmd0aF9zaXplICsgaGVhZGVyLmxlbmd0aDsKKwogCSAgLyogU2tp cCBkdW1teSB0eXBlIHVuaXRzLiAgKi8KLQkgIGlmIChwdHIgPj0gZW5kX3B0 ciB8fCBwZWVrX2FiYnJldl9jb2RlIChvYmpmaWxlLT5vYmZkLCBwdHIpID09 IDApCisJICBpZiAocHRyID49IGluZm9fcHRyICsgbGVuZ3RoCisJICAgICAg fHwgcGVla19hYmJyZXZfY29kZSAoYWJmZCwgcHRyKSA9PSAwKQogCSAgICB7 Ci0JICAgICAgaW5mb19wdHIgPSBpbmZvX3B0ciArIGhlYWRlci5pbml0aWFs X2xlbmd0aF9zaXplICsgaGVhZGVyLmxlbmd0aDsKKwkgICAgICBpbmZvX3B0 ciArPSBoZWFkZXIuaW5pdGlhbF9sZW5ndGhfc2l6ZSArIGhlYWRlci5sZW5n dGg7CiAJICAgICAgY29udGludWU7CiAJICAgIH0KIApAQCAtMzMzMiw3ICsz MzE5LDcgQEAgY3JlYXRlX2FsbF90eXBlX3VuaXRzIChzdHJ1Y3Qgb2JqZmls ZSAqbwogCQkJCW9mZnNldC5zZWN0X29mZiwKIAkJCQlwaGV4IChzaWduYXR1 cmUsIHNpemVvZiAoc2lnbmF0dXJlKSkpOwogCi0JICBpbmZvX3B0ciA9IGlu Zm9fcHRyICsgaGVhZGVyLmluaXRpYWxfbGVuZ3RoX3NpemUgKyBoZWFkZXIu bGVuZ3RoOworCSAgaW5mb19wdHIgKz0gbGVuZ3RoOwogCX0KICAgICB9CiAK QEAgLTMzNzUsMjAgKzMzNjIsMTQgQEAgbG9va3VwX3NpZ25hdHVyZWRfdHlw ZSAoVUxPTkdFU1Qgc2lnKQogCiBzdGF0aWMgdm9pZAogaW5pdF9jdV9kaWVf cmVhZGVyIChzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAotCQkg ICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisJCSAgICBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSwKKwkJICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpz ZWN0aW9uKQogewotICByZWFkZXItPmFiZmQgPSBjdS0+b2JqZmlsZS0+b2Jm ZDsKKyAgZ2RiX2Fzc2VydCAoc2VjdGlvbi0+cmVhZGluKTsKKyAgcmVhZGVy LT5hYmZkID0gc2VjdGlvbi0+YXNlY3Rpb24tPm93bmVyOwogICByZWFkZXIt PmN1ID0gY3U7Ci0gIGlmIChjdS0+cGVyX2N1LT5kZWJ1Z190eXBlc19zZWN0 aW9uKQotICAgIHsKLSAgICAgIGdkYl9hc3NlcnQgKGN1LT5wZXJfY3UtPmRl YnVnX3R5cGVzX3NlY3Rpb24tPnJlYWRpbik7Ci0gICAgICByZWFkZXItPmJ1 ZmZlciA9IGN1LT5wZXJfY3UtPmRlYnVnX3R5cGVzX3NlY3Rpb24tPmJ1ZmZl cjsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBnZGJfYXNzZXJ0IChk d2FyZjJfcGVyX29iamZpbGUtPmluZm8ucmVhZGluKTsKLSAgICAgIHJlYWRl ci0+YnVmZmVyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmJ1ZmZlcjsK LSAgICB9CisgIHJlYWRlci0+ZGllX3NlY3Rpb24gPSBzZWN0aW9uOworICBy ZWFkZXItPmJ1ZmZlciA9IHNlY3Rpb24tPmJ1ZmZlcjsKIH0KIAogLyogRmlu ZCB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb21waWxhdGlvbiB1bml0IGZv ciByYW5nZSBsaXN0cyBhbmQKQEAgLTM0MjIsODggKzM0MDMsMzAwIEBAIGR3 YXJmMl9maW5kX2Jhc2VfYWRkcmVzcyAoc3RydWN0IGRpZV9pbmYKICAgICB9 CiB9CiAKLS8qIFN1YnJvdXRpbmUgb2YgcHJvY2Vzc190eXBlX2NvbXBfdW5p dCBhbmQgZHdhcmYyX2J1aWxkX3BzeW10YWJzX2hhcmQKLSAgIHRvIGNvbWJp bmUgdGhlIGNvbW1vbiBwYXJ0cy4KLSAgIFByb2Nlc3MgY29tcGlsYXRpb24g dW5pdCBUSElTX0NVIGZvciBhIHBzeW10YWIuCi0gICBTRUNUSU9OIGlzIHRo ZSBzZWN0aW9uIHRoZSBDVS9UVSBjb21lcyBmcm9tLAotICAgZWl0aGVyIC5k ZWJ1Z19pbmZvIG9yIC5kZWJ1Z190eXBlcy4gICovCisvKiBTdWJyb3V0aW5l IG9mIGluaXRfe2N1LHR1fV9hbmRfcmVhZF9kaWVzLgorICAgRG8gYWxsIHRo ZSB3b3JrIG5lY2Vzc2FyeSB0byBpbml0aWFsaXplIFRISVNfQ1UtPmN1IGFu ZCByZWFkIGluIGl0cyBESUUocykuCisKKyAgIElmIFVTRV9FWElTVElOR19D VSBpcyBub24temVybywgYW5kIFRISVNfQ1UtPmN1IGlzIG5vbi1OVUxMLCB0 aGVuIHVzZSBpdC4KKyAgIE90aGVyd2lzZSwgYSBuZXcgQ1UgaXMgYWxsb2Nh dGVkIHdpdGggeG1hbGxvYy4KKworICAgSWYgS0VFUCBpcyBub24temVybywg dGhlbiBpZiB3ZSBhbGxvY2F0ZWQgYSBkd2FyZjJfY3Ugd2UgYWRkIGl0IHRv CisgICByZWFkX2luX2NoYWluLiAgT3RoZXJ3aXNlIHRoZSBkd2FyZjJfY3Ug ZGF0YSBpcyBmcmVlZCBhdCB0aGUgZW5kLgorCisgICBXQVJOSU5HOiBJZiBU SElTX0NVIGlzIGEgImR1bW15IENVIiAodXNlZCBhcyBmaWxsZXIgYnkgdGhl IGluY3JlbWVudGFsCisgICBsaW5rZXIpIHRoZW4gRElFX1JFQURFUl9GVU5D IHdpbGwgbm90IGdldCBjYWxsZWQuCisKKyAgIEZJWE1FOiBBcyBhbiBpbXBs ZW1lbnRhdGlvbiBkZXRhaWwgYmV0d2VlbiBvdXIgY2FsbGVycyBhbmQgdXMs CisgICBVU0VfRVhJU1RJTkdfQ1UgYW5kIEtFRVAgYXJlIE9LLiAgQnV0IGJ1 YmJsaW5nIHRoZW0gdXAgaW50byB0aGVpciBjYWxsZXJzCisgICBpc24ndCBh cyBjbGVhbiBhcyBJJ2QgbGlrZS4gIEhhdmluZyBtb3JlIGNhbGxlcnMgd2l0 aCBnb29kIG5hbWVzCisgICBtYXkgYmUgdGhlIHdheSB0byBnby4gICovCiAK IHN0YXRpYyB2b2lkCi1wcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAotCQkJICAgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24sCi0JCQkgICBpbnQgaXNf ZGVidWdfdHlwZXNfc2VjdGlvbikKK2luaXRfYW5kX3JlYWRfZGllc193b3Jr ZXIgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoaXNfY3UsCisJCQkg ICBpbnQgdXNlX2V4aXN0aW5nX2N1LCBpbnQga2VlcCwKKwkJCSAgIGRpZV9y ZWFkZXJfZnVuY19mdHlwZSAqZGllX3JlYWRlcl9mdW5jLAorCQkJICAgdm9p ZCAqZGF0YSkKIHsKLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSB0aGlz X2N1LT5vYmpmaWxlOwotICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwot ICBnZGJfYnl0ZSAqYnVmZmVyID0gc2VjdGlvbi0+YnVmZmVyOwotICBnZGJf Ynl0ZSAqaW5mb19wdHIgPSBidWZmZXIgKyB0aGlzX2N1LT5vZmZzZXQuc2Vj dF9vZmY7Ci0gIHVuc2lnbmVkIGludCBidWZmZXJfc2l6ZSA9IHNlY3Rpb24t PnNpemU7Ci0gIGdkYl9ieXRlICpiZWdfb2ZfY29tcF91bml0ID0gaW5mb19w dHI7CisgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9v YmpmaWxlLT5vYmpmaWxlOworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byAqc2VjdGlvbjsKKyAgYmZkICphYmZkOworICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdTsKKyAgZ2RiX2J5dGUgKmJlZ2luX2luZm9fcHRyLCAqaW5mb19wdHI7 CisgIHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRlcjsKICAgc3RydWN0 IGRpZV9pbmZvICpjb21wX3VuaXRfZGllOwotICBzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKnBzdDsKLSAgQ09SRV9BRERSIGJhc2VhZGRyOwotICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190b19pbm5lcjsKLSAgc3RydWN0IGR3YXJmMl9jdSBj dTsKLSAgaW50IGhhc19jaGlsZHJlbiwgaGFzX3BjX2luZm87CisgIGludCBo YXNfY2hpbGRyZW47CiAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0gIENP UkVfQUREUiBiZXN0X2xvd3BjID0gMCwgYmVzdF9oaWdocGMgPSAwOwotICBz dHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyByZWFkZXJfc3BlY3M7Ci0gIGNvbnN0 IGNoYXIgKmZpbGVuYW1lOworICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMs ICpmcmVlX2N1X2NsZWFudXAgPSBOVUxMOworICBzdHJ1Y3Qgc2lnbmF0dXJl ZF90eXBlICpzaWdfdHlwZSA9IE5VTEw7CiAKLSAgLyogSWYgdGhpcyBjb21w aWxhdGlvbiB1bml0IHdhcyBhbHJlYWR5IHJlYWQgaW4sIGZyZWUgdGhlCi0g ICAgIGNhY2hlZCBjb3B5IGluIG9yZGVyIHRvIHJlYWQgaXQgaW4gYWdhaW4u CVRoaXMgaXMKLSAgICAgbmVjZXNzYXJ5IGJlY2F1c2Ugd2Ugc2tpcHBlZCBz b21lIHN5bWJvbHMgd2hlbiB3ZSBmaXJzdAotICAgICByZWFkIGluIHRoZSBj b21waWxhdGlvbiB1bml0IChzZWUgbG9hZF9wYXJ0aWFsX2RpZXMpLgotICAg ICBUaGlzIHByb2JsZW0gY291bGQgYmUgYXZvaWRlZCwgYnV0IHRoZSBiZW5l Zml0IGlzCi0gICAgIHVuY2xlYXIuICAqLwotICBpZiAodGhpc19jdS0+Y3Ug IT0gTlVMTCkKLSAgICBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh0aGlz X2N1LT5jdSk7CisgIGlmICh1c2VfZXhpc3RpbmdfY3UpCisgICAgZ2RiX2Fz c2VydCAoa2VlcCk7CisgIGlmICh0aGlzX2N1LT5kZWJ1Z190eXBlc19zZWN0 aW9uKQorICAgIGdkYl9hc3NlcnQgKCEgdXNlX2V4aXN0aW5nX2N1KTsKIAot ICAvKiBOb3RlIHRoYXQgdGhpcyBpcyBhIHBvaW50ZXIgdG8gb3VyIHN0YWNr IGZyYW1lLCBiZWluZwotICAgICBhZGRlZCB0byBhIGdsb2JhbCBkYXRhIHN0 cnVjdHVyZS4JSXQgd2lsbCBiZSBjbGVhbmVkIHVwCi0gICAgIGluIGZyZWVf c3RhY2tfY29tcF91bml0IHdoZW4gd2UgZmluaXNoIHdpdGggdGhpcwotICAg ICBjb21waWxhdGlvbiB1bml0LgkqLwotICBpbml0X29uZV9jb21wX3VuaXQg KCZjdSwgdGhpc19jdSk7Ci0gIGJhY2tfdG9faW5uZXIgPSBtYWtlX2NsZWFu dXAgKGZyZWVfc3RhY2tfY29tcF91bml0LCAmY3UpOworICBpZiAodGhpc19j dS0+ZGVidWdfdHlwZXNfc2VjdGlvbikKKyAgICBzZWN0aW9uID0gdGhpc19j dS0+ZGVidWdfdHlwZXNfc2VjdGlvbjsKKyAgZWxzZQorICAgIHNlY3Rpb24g PSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvOworICBhYmZkID0gc2VjdGlv bi0+YXNlY3Rpb24tPm93bmVyOwogCi0gIGluZm9fcHRyID0gcmVhZF9hbmRf Y2hlY2tfY29tcF91bml0X2hlYWQgKCZjdS5oZWFkZXIsIHNlY3Rpb24sIGlu Zm9fcHRyLAotCQkJCQkgICAgaXNfZGVidWdfdHlwZXNfc2VjdGlvbik7Cisg IGNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwp OworCisgIC8qIFRoaXMgaXMgY2hlYXAgaWYgdGhlIHNlY3Rpb24gaXMgYWxy ZWFkeSByZWFkIGluLiAgKi8KKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2Jq ZmlsZSwgc2VjdGlvbik7CisKKyAgYmVnaW5faW5mb19wdHIgPSBpbmZvX3B0 ciA9IHNlY3Rpb24tPmJ1ZmZlciArIHRoaXNfY3UtPm9mZnNldC5zZWN0X29m ZjsKKworICBpZiAodXNlX2V4aXN0aW5nX2N1ICYmIHRoaXNfY3UtPmN1ICE9 IE5VTEwpCisgICAgeworICAgICAgY3UgPSB0aGlzX2N1LT5jdTsKKyAgICAg IGluZm9fcHRyICs9IGN1LT5oZWFkZXIuZmlyc3RfZGllX29mZnNldC5jdV9v ZmY7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogSWYgIXVzZV9l eGlzdGluZ19jdSwgdGhpc19jdS0+Y3UgbXVzdCBiZSBOVUxMLiAgKi8KKyAg ICAgIGdkYl9hc3NlcnQgKHRoaXNfY3UtPmN1ID09IE5VTEwpOworCisgICAg ICBjdSA9IHhtYWxsb2MgKHNpemVvZiAoKmN1KSk7CisgICAgICBpbml0X29u ZV9jb21wX3VuaXQgKGN1LCB0aGlzX2N1KTsKKworICAgICAgLyogSWYgYW4g ZXJyb3Igb2NjdXJzIHdoaWxlIGxvYWRpbmcsIHJlbGVhc2Ugb3VyIHN0b3Jh Z2UuICAqLworICAgICAgZnJlZV9jdV9jbGVhbnVwID0gbWFrZV9jbGVhbnVw IChmcmVlX2hlYXBfY29tcF91bml0LCBjdSk7CisKKyAgICAgIGlmICh0aGlz X2N1LT5kZWJ1Z190eXBlc19zZWN0aW9uKQorCXsKKwkgIFVMT05HRVNUIHNp Z25hdHVyZTsKKworCSAgaW5mb19wdHIgPSByZWFkX2FuZF9jaGVja190eXBl X3VuaXRfaGVhZCAoJmN1LT5oZWFkZXIsCisJCQkJCQkgICAgc2VjdGlvbiwg aW5mb19wdHIsCisJCQkJCQkgICAgJnNpZ25hdHVyZSwgTlVMTCk7CisKKwkg IC8qIFRoZXJlJ3Mgbm8gd2F5IHRvIGdldCBmcm9tIFBFUl9DVSB0byBpdHMg Y29udGFpbmluZworCSAgICAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZS4KKwkg ICAgIEJ1dCB3ZSBoYXZlIHRoZSBzaWduYXR1cmUgc28gd2UgY2FuIHVzZSB0 aGF0LiAgKi8KKwkgIHNpZ190eXBlID0gbG9va3VwX3NpZ25hdHVyZWRfdHlw ZSAoc2lnbmF0dXJlKTsKKwkgIC8qIFdlJ3ZlIGFscmVhZHkgc2Nhbm5lZCBh bGwgdGhlIHNpZ25hdHVyZWQgdHlwZXMsCisJICAgICB0aGlzIG11c3Qgc3Vj Y2VlZC4gICovCisJICBnZGJfYXNzZXJ0IChzaWdfdHlwZSAhPSBOVUxMKTsK KwkgIGdkYl9hc3NlcnQgKCZzaWdfdHlwZS0+cGVyX2N1ID09IHRoaXNfY3Up OworCSAgZ2RiX2Fzc2VydCAodGhpc19jdS0+b2Zmc2V0LnNlY3Rfb2ZmID09 IGN1LT5oZWFkZXIub2Zmc2V0LnNlY3Rfb2ZmKTsKKworCSAgLyogTEVOR1RI IGhhcyBub3QgYmVlbiBzZXQgeWV0IGZvciB0eXBlIHVuaXRzLiAgKi8KKwkg IHRoaXNfY3UtPmxlbmd0aCA9IGN1LT5oZWFkZXIubGVuZ3RoICsgY3UtPmhl YWRlci5pbml0aWFsX2xlbmd0aF9zaXplOworCX0KKyAgICAgIGVsc2UKKwl7 CisJICBpbmZvX3B0ciA9IHJlYWRfYW5kX2NoZWNrX2NvbXBfdW5pdF9oZWFk ICgmY3UtPmhlYWRlciwKKwkJCQkJCSAgICBzZWN0aW9uLCBpbmZvX3B0ciwg MCk7CisKKwkgIGdkYl9hc3NlcnQgKHRoaXNfY3UtPm9mZnNldC5zZWN0X29m ZiA9PSBjdS0+aGVhZGVyLm9mZnNldC5zZWN0X29mZik7CisJICBnZGJfYXNz ZXJ0ICh0aGlzX2N1LT5sZW5ndGgKKwkJICAgICAgPT0gY3UtPmhlYWRlci5s ZW5ndGggKyBjdS0+aGVhZGVyLmluaXRpYWxfbGVuZ3RoX3NpemUpOworCX0K KyAgICB9CiAKICAgLyogU2tpcCBkdW1teSBjb21waWxhdGlvbiB1bml0cy4g ICovCi0gIGlmIChpbmZvX3B0ciA+PSBidWZmZXIgKyBidWZmZXJfc2l6ZQor ICBpZiAoaW5mb19wdHIgPj0gYmVnaW5faW5mb19wdHIgKyB0aGlzX2N1LT5s ZW5ndGgKICAgICAgIHx8IHBlZWtfYWJicmV2X2NvZGUgKGFiZmQsIGluZm9f cHRyKSA9PSAwKQogICAgIHsKLSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3Rv X2lubmVyKTsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CiAgICAg ICByZXR1cm47CiAgICAgfQogCi0gIGN1Lmxpc3RfaW5fc2NvcGUgPSAmZmls ZV9zeW1ib2xzOwotCiAgIC8qIFJlYWQgdGhlIGFiYnJldnMgZm9yIHRoaXMg Y29tcGlsYXRpb24gdW5pdCBpbnRvIGEgdGFibGUuICAqLwotICBkd2FyZjJf cmVhZF9hYmJyZXZzICgmY3UpOwotICBtYWtlX2NsZWFudXAgKGR3YXJmMl9m cmVlX2FiYnJldl90YWJsZSwgJmN1KTsKKyAgaWYgKGN1LT5kd2FyZjJfYWJi cmV2cyA9PSBOVUxMKQorICAgIHsKKyAgICAgIGR3YXJmMl9yZWFkX2FiYnJl dnMgKGN1LCAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYpOworICAgICAg bWFrZV9jbGVhbnVwIChkd2FyZjJfZnJlZV9hYmJyZXZfdGFibGUsIGN1KTsK KyAgICB9CiAKLSAgLyogUmVhZCB0aGUgY29tcGlsYXRpb24gdW5pdCBkaWUu ICAqLwotICBpbml0X2N1X2RpZV9yZWFkZXIgKCZyZWFkZXJfc3BlY3MsICZj dSk7Ci0gIGluZm9fcHRyID0gcmVhZF9mdWxsX2RpZSAoJnJlYWRlcl9zcGVj cywgJmNvbXBfdW5pdF9kaWUsIGluZm9fcHRyLAotCQkJICAgICZoYXNfY2hp bGRyZW4pOworICAvKiBSZWFkIHRoZSB0b3AgbGV2ZWwgQ1UvVFUgZGllLiAg Ki8KKyAgaW5pdF9jdV9kaWVfcmVhZGVyICgmcmVhZGVyLCBjdSwgc2VjdGlv bik7CisgIGluZm9fcHRyID0gcmVhZF9mdWxsX2RpZSAoJnJlYWRlciwgJmNv bXBfdW5pdF9kaWUsIGluZm9fcHRyLCAmaGFzX2NoaWxkcmVuKTsKIAotICBp ZiAoaXNfZGVidWdfdHlwZXNfc2VjdGlvbikKKyAgZGllX3JlYWRlcl9mdW5j ICgmcmVhZGVyLCBpbmZvX3B0ciwgY29tcF91bml0X2RpZSwgaGFzX2NoaWxk cmVuLCBkYXRhKTsKKworICBpZiAoZnJlZV9jdV9jbGVhbnVwICE9IE5VTEwp CiAgICAgewotICAgICAgLyogTEVOR1RIIGhhcyBub3QgYmVlbiBzZXQgeWV0 IGZvciB0eXBlIHVuaXRzLiAgKi8KLSAgICAgIGdkYl9hc3NlcnQgKHRoaXNf Y3UtPm9mZnNldC5zZWN0X29mZiA9PSBjdS5oZWFkZXIub2Zmc2V0LnNlY3Rf b2ZmKTsKLSAgICAgIHRoaXNfY3UtPmxlbmd0aCA9IGN1LmhlYWRlci5sZW5n dGggKyBjdS5oZWFkZXIuaW5pdGlhbF9sZW5ndGhfc2l6ZTsKKyAgICAgIGlm IChrZWVwKQorCXsKKwkgIC8qIFdlJ3ZlIHN1Y2Nlc3NmdWxseSBhbGxvY2F0 ZWQgdGhpcyBjb21waWxhdGlvbiB1bml0LiAgTGV0IG91cgorCSAgICAgY2Fs bGVyIGNsZWFuIGl0IHVwIHdoZW4gZmluaXNoZWQgd2l0aCBpdC4gICovCisJ ICBkaXNjYXJkX2NsZWFudXBzIChmcmVlX2N1X2NsZWFudXApOworCisJICAv KiBXZSBjYW4gb25seSBkaXNjYXJkIGZyZWVfY3VfY2xlYW51cCBhbmQgYWxs IHN1YnNlcXVlbnQgY2xlYW51cHMuCisJICAgICBTbyB3ZSBoYXZlIHRvIG1h bnVhbGx5IGZyZWUgdGhlIGFiYnJldiB0YWJsZS4gICovCisJICBkd2FyZjJf ZnJlZV9hYmJyZXZfdGFibGUgKGN1KTsKKworCSAgLyogTGluayB0aGlzIENV IGludG8gcmVhZF9pbl9jaGFpbi4gICovCisJICB0aGlzX2N1LT5jdS0+cmVh ZF9pbl9jaGFpbiA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+cmVhZF9pbl9jaGFp bjsKKwkgIGR3YXJmMl9wZXJfb2JqZmlsZS0+cmVhZF9pbl9jaGFpbiA9IHRo aXNfY3U7CisJfQorICAgICAgZWxzZQorCWRvX2NsZWFudXBzIChmcmVlX2N1 X2NsZWFudXApOwogICAgIH0KLSAgZWxzZSBpZiAoY29tcF91bml0X2RpZS0+ dGFnID09IERXX1RBR19wYXJ0aWFsX3VuaXQpCisKKyAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKK30KKworLyogTWFpbiBlbnRyeSBwb2ludCBmb3IgcmVh ZGluZyBhIENVLgorICAgRG8gYWxsIHRoZSB3b3JrIG5lY2Vzc2FyeSB0byBp bml0aWFsaXplIFRISVNfQ1UtPmN1IGFuZCByZWFkIGluIGl0cyBESUUocyku CisKKyAgIElmIFVTRV9FWElTVElOR19DVSBpcyBub24temVybywgYW5kIFRI SVNfQ1UtPmN1IGlzIG5vbi1OVUxMLCB0aGVuIHVzZSBpdC4KKyAgIE90aGVy d2lzZSwgYSBuZXcgQ1UgaXMgYWxsb2NhdGVkIHdpdGggeG1hbGxvYy4KKwor ICAgSWYgS0VFUCBpcyBub24temVybywgdGhlbiBpZiB3ZSBhbGxvY2F0ZWQg YSBkd2FyZjJfY3Ugd2UgYWRkIGl0IHRvCisgICByZWFkX2luX2NoYWluLiAg T3RoZXJ3aXNlIHRoZSBkd2FyZjJfY3UgZGF0YSBpcyBmcmVlZCBhdCB0aGUg ZW5kLiAgKi8KKworc3RhdGljIHZvaWQKK2luaXRfY3VfYW5kX3JlYWRfZGll cyAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhpc19jdSwKKwkJICAg ICAgIGludCB1c2VfZXhpc3RpbmdfY3UsIGludCBrZWVwLAorCQkgICAgICAg ZGllX3JlYWRlcl9mdW5jX2Z0eXBlICpkaWVfcmVhZGVyX2Z1bmMsCisJCSAg ICAgICB2b2lkICpkYXRhKQoreworICBpbml0X2FuZF9yZWFkX2RpZXNfd29y a2VyICh0aGlzX2N1LCB1c2VfZXhpc3RpbmdfY3UsIGtlZXAsCisJCQkgICAg IGRpZV9yZWFkZXJfZnVuYywgZGF0YSk7Cit9CisKKy8qIE1haW4gZW50cnkg cG9pbnQgZm9yIHJlYWRpbmcgYSBUVS4KKyAgIERvIGFsbCB0aGUgd29yayBu ZWNlc3NhcnkgdG8gaW5pdGlhbGl6ZSBUSElTX0NVLT5jdSBhbmQgcmVhZCBp biBpdHMgRElFKHMpLgorCisgICBJZiBLRUVQIGlzIG5vbi16ZXJvLCB0aGVu IGlmIHdlIGFsbG9jYXRlZCBhIGR3YXJmMl9jdSB3ZSBhZGQgaXQgdG8KKyAg IHJlYWRfaW5fY2hhaW4uICBPdGhlcndpc2UgdGhlIGR3YXJmMl9jdSBkYXRh IGlzIGZyZWVkIGF0IHRoZSBlbmQuICAqLworCitzdGF0aWMgdm9pZAoraW5p dF90dV9hbmRfcmVhZF9kaWVzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICp0aGlzX2N1LAorCQkgICAgICAgaW50IGtlZXAsCisJCSAgICAgICBkaWVf cmVhZGVyX2Z1bmNfZnR5cGUgKmRpZV9yZWFkZXJfZnVuYywKKwkJICAgICAg IHZvaWQgKmRhdGEpCit7CisgIGdkYl9hc3NlcnQgKHRoaXNfY3UtPmRlYnVn X3R5cGVzX3NlY3Rpb24pOworICBpbml0X2FuZF9yZWFkX2RpZXNfd29ya2Vy ICh0aGlzX2N1LCAwLCBrZWVwLCBkaWVfcmVhZGVyX2Z1bmMsIGRhdGEpOwor fQorCisvKiBSZWFkIHRoZSBDVS9UVSBhdCBPRkZTRVQgaW4gc2VjdGlvbiBT RUNUSU9OLgorCisgICBUaGUgY2FsbGVyIGlzIHJlcXVpcmVkIHRvIGZpbGwg aW4gVEhJU19DVS0+c2VjdGlvbiwgVEhJU19DVS0+b2Zmc2V0LCBhbmQKKyAg IFRISVNfQ1UtPmRlYnVnX3R5cGVzX3NlY3Rpb24sIGJ1dCBub3RoaW5nIGVs c2UuCisKKyAgIFdlIGZpbGwgaW4gVEhJU19DVS0+bGVuZ3RoLgorCisgICBX QVJOSU5HOiBJZiBUSElTX0NVIGlzIGEgImR1bW15IENVIiAodXNlZCBhcyBm aWxsZXIgYnkgdGhlIGluY3JlbWVudGFsCisgICBsaW5rZXIpIHRoZW4gRElF X1JFQURFUl9GVU5DIHdpbGwgbm90IGdldCBjYWxsZWQuCisKKyAgIFRISVNf Q1UtPmN1IGlzIGFsd2F5cyBmcmVlZCB3aGVuIGRvbmUuCisgICBbVGhpcyBp cyBkb25lIGZvciBGaXNzaW9uIHJlYXNvbnMsIHRvIGJlIHNwZWNpZmllZC5d ICAqLworCitzdGF0aWMgdm9pZAoraW5pdF9jdXR1X2FuZF9yZWFkX2RpZXNf bm9fZm9sbG93IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1 LAorCQkJCSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICphYmJyZXZf c2VjdGlvbiwKKwkJCQkgICBkaWVfcmVhZGVyX2Z1bmNfZnR5cGUgKmRpZV9y ZWFkZXJfZnVuYywKKwkJCQkgICB2b2lkICpkYXRhKQoreworICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmls ZTsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb247Cisg IGJmZCAqYWJmZDsKKyAgc3RydWN0IGR3YXJmMl9jdSBjdTsKKyAgZ2RiX2J5 dGUgKmJlZ2luX2luZm9fcHRyLCAqaW5mb19wdHI7CisgIHN0cnVjdCBkaWVf cmVhZGVyX3NwZWNzIHJlYWRlcjsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFu dXBzOworICBzdHJ1Y3QgZGllX2luZm8gKmNvbXBfdW5pdF9kaWU7CisgIGlu dCBoYXNfY2hpbGRyZW47CisKKyAgZ2RiX2Fzc2VydCAodGhpc19jdS0+Y3Ug PT0gTlVMTCk7CisKKyAgaWYgKHRoaXNfY3UtPmRlYnVnX3R5cGVzX3NlY3Rp b24pCisgICAgc2VjdGlvbiA9IHRoaXNfY3UtPmRlYnVnX3R5cGVzX3NlY3Rp b247CisgIGVsc2UKKyAgICBzZWN0aW9uID0gJmR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mbzsKKyAgYWJmZCA9IHNlY3Rpb24tPmFzZWN0aW9uLT5vd25lcjsK KworICAvKiBUaGlzIGlzIGNoZWFwIGlmIHRoZSBzZWN0aW9uIGlzIGFscmVh ZHkgcmVhZCBpbi4gICovCisgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZp bGUsIHNlY3Rpb24pOworCisgIGluaXRfb25lX2NvbXBfdW5pdCAoJmN1LCB0 aGlzX2N1KTsKKworICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoZnJlZV9z dGFja19jb21wX3VuaXQsICZjdSk7CisKKyAgYmVnaW5faW5mb19wdHIgPSBp bmZvX3B0ciA9IHNlY3Rpb24tPmJ1ZmZlciArIHRoaXNfY3UtPm9mZnNldC5z ZWN0X29mZjsKKyAgaW5mb19wdHIgPSByZWFkX2FuZF9jaGVja19jb21wX3Vu aXRfaGVhZCAoJmN1LmhlYWRlciwgc2VjdGlvbiwgaW5mb19wdHIsCisJCQkJ CSAgICB0aGlzX2N1LT5kZWJ1Z190eXBlc19zZWN0aW9uICE9IE5VTEwpOwor CisgIHRoaXNfY3UtPmxlbmd0aCA9IGN1LmhlYWRlci5sZW5ndGggKyBjdS5o ZWFkZXIuaW5pdGlhbF9sZW5ndGhfc2l6ZTsKKworICAvKiBTa2lwIGR1bW15 IGNvbXBpbGF0aW9uIHVuaXRzLiAgKi8KKyAgaWYgKGluZm9fcHRyID49IGJl Z2luX2luZm9fcHRyICsgdGhpc19jdS0+bGVuZ3RoCisgICAgICB8fCBwZWVr X2FiYnJldl9jb2RlIChhYmZkLCBpbmZvX3B0cikgPT0gMCkKICAgICB7Ci0g ICAgICBkb19jbGVhbnVwcyAoYmFja190b19pbm5lcik7CisgICAgICBkb19j bGVhbnVwcyAoY2xlYW51cHMpOwogICAgICAgcmV0dXJuOwogICAgIH0KIAot ICBwcmVwYXJlX29uZV9jb21wX3VuaXQgKCZjdSwgY29tcF91bml0X2RpZSk7 CisgIGR3YXJmMl9yZWFkX2FiYnJldnMgKCZjdSwgYWJicmV2X3NlY3Rpb24p OworICBtYWtlX2NsZWFudXAgKGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSwg JmN1KTsKKworICBpbml0X2N1X2RpZV9yZWFkZXIgKCZyZWFkZXIsICZjdSwg c2VjdGlvbik7CisgIGluZm9fcHRyID0gcmVhZF9mdWxsX2RpZSAoJnJlYWRl ciwgJmNvbXBfdW5pdF9kaWUsIGluZm9fcHRyLCAmaGFzX2NoaWxkcmVuKTsK KworICBkaWVfcmVhZGVyX2Z1bmMgKCZyZWFkZXIsIGluZm9fcHRyLCBjb21w X3VuaXRfZGllLCBoYXNfY2hpbGRyZW4sIGRhdGEpOworCisgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7Cit9CisKKy8qIFJlYWQgYSBDVS9UVS4KKyAgIFtU aGlzIGlzIGEgc2VwYXJhdGUgcm91dGluZSBmb3IgRmlzc2lvbiwgdG8gYmUg c3BlY2lmaWVkLl0KKworICAgVEhJU19DVS0+Y3UgaXMgYWx3YXlzIGZyZWVk IHdoZW4gZG9uZS4KKyAgIFtUaGlzIGlzIGRvbmUgZm9yIEZpc3Npb24gcmVh c29ucywgdG8gYmUgc3BlY2lmaWVkLl0gICovCisKK3N0YXRpYyB2b2lkCitp bml0X2N1dHVfYW5kX3JlYWRfZGllc19zaW1wbGUgKHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnRoaXNfY3UsCisJCQkJZGllX3JlYWRlcl9mdW5jX2Z0 eXBlICpkaWVfcmVhZGVyX2Z1bmMsCisJCQkJdm9pZCAqZGF0YSkKK3sKKyAg aW5pdF9jdXR1X2FuZF9yZWFkX2RpZXNfbm9fZm9sbG93ICh0aGlzX2N1LAor CQkJCSAgICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LAorCQkJCSAg ICAgZGllX3JlYWRlcl9mdW5jLCBkYXRhKTsKK30KKworLyogZGllX3JlYWRl cl9mdW5jIGZvciBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0LiAgKi8KKwor c3RhdGljIHZvaWQKK3Byb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXRfcmVhZGVy IChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQkJ CSAgZ2RiX2J5dGUgKmluZm9fcHRyLAorCQkJCSAgc3RydWN0IGRpZV9pbmZv ICpjb21wX3VuaXRfZGllLAorCQkJCSAgaW50IGhhc19jaGlsZHJlbiwKKwkJ CQkgIHZvaWQgKmRhdGEpCit7CisgIHN0cnVjdCBkd2FyZjJfY3UgKmN1ID0g cmVhZGVyLT5jdTsKKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+ b2JqZmlsZTsKKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1 ID0gY3UtPnBlcl9jdTsKKyAgYmZkICphYmZkID0gb2JqZmlsZS0+b2JmZDsK KyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAgQ09SRV9BRERSIGJhc2Vh ZGRyOworICBDT1JFX0FERFIgYmVzdF9sb3dwYyA9IDAsIGJlc3RfaGlnaHBj ID0gMDsKKyAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3Q7CisgIGludCBo YXNfcGNfaW5mbzsKKyAgY29uc3QgY2hhciAqZmlsZW5hbWU7CisKKyAgaWYg KGNvbXBfdW5pdF9kaWUtPnRhZyA9PSBEV19UQUdfcGFydGlhbF91bml0KQor ICAgIHJldHVybjsKKworICBwcmVwYXJlX29uZV9jb21wX3VuaXQgKGN1LCBj b21wX3VuaXRfZGllKTsKKworICBjdS0+bGlzdF9pbl9zY29wZSA9ICZmaWxl X3N5bWJvbHM7CiAKICAgLyogQWxsb2NhdGUgYSBuZXcgcGFydGlhbCBzeW1i b2wgdGFibGUgc3RydWN0dXJlLiAgKi8KLSAgYXR0ciA9IGR3YXJmMl9hdHRy IChjb21wX3VuaXRfZGllLCBEV19BVF9uYW1lLCAmY3UpOworICBhdHRyID0g ZHdhcmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX25hbWUsIGN1KTsK ICAgaWYgKGF0dHIgPT0gTlVMTCB8fCAhRFdfU1RSSU5HIChhdHRyKSkKICAg ICBmaWxlbmFtZSA9ICIiOwogICBlbHNlCkBAIC0zNTE2LDI1ICszNzA5LDI1 IEBAIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjIK IAkJCSAgICAgIG9iamZpbGUtPnN0YXRpY19wc3ltYm9scy5uZXh0KTsKICAg cHN0LT5wc3ltdGFic19hZGRybWFwX3N1cHBvcnRlZCA9IDE7CiAKLSAgYXR0 ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGllLCBEV19BVF9jb21wX2Rp ciwgJmN1KTsKKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGll LCBEV19BVF9jb21wX2RpciwgY3UpOwogICBpZiAoYXR0ciAhPSBOVUxMKQog ICAgIHBzdC0+ZGlybmFtZSA9IERXX1NUUklORyAoYXR0cik7CiAKLSAgcHN0 LT5yZWFkX3N5bXRhYl9wcml2YXRlID0gdGhpc19jdTsKKyAgcHN0LT5yZWFk X3N5bXRhYl9wcml2YXRlID0gcGVyX2N1OwogCiAgIGJhc2VhZGRyID0gQU5P RkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVY VCAob2JqZmlsZSkpOwogCiAgIC8qIFN0b3JlIHRoZSBmdW5jdGlvbiB0aGF0 IHJlYWRzIGluIHRoZSByZXN0IG9mIHRoZSBzeW1ib2wgdGFibGUuICAqLwog ICBwc3QtPnJlYWRfc3ltdGFiID0gZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFi OwogCi0gIHRoaXNfY3UtPnYucHN5bXRhYiA9IHBzdDsKKyAgcGVyX2N1LT52 LnBzeW10YWIgPSBwc3Q7CiAKLSAgZHdhcmYyX2ZpbmRfYmFzZV9hZGRyZXNz IChjb21wX3VuaXRfZGllLCAmY3UpOworICBkd2FyZjJfZmluZF9iYXNlX2Fk ZHJlc3MgKGNvbXBfdW5pdF9kaWUsIGN1KTsKIAogICAvKiBQb3NzaWJseSBz ZXQgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIExPV1BDIGFuZCBISUdIUEMgZnJv bQogICAgICBgRFdfQVRfcmFuZ2VzJy4gICovCiAgIGhhc19wY19pbmZvID0g ZHdhcmYyX2dldF9wY19ib3VuZHMgKGNvbXBfdW5pdF9kaWUsICZiZXN0X2xv d3BjLAotCQkJCSAgICAgICZiZXN0X2hpZ2hwYywgJmN1LCBwc3QpOworCQkJ CSAgICAgICZiZXN0X2hpZ2hwYywgY3UsIHBzdCk7CiAgIGlmIChoYXNfcGNf aW5mbyA9PSAxICYmIGJlc3RfbG93cGMgPCBiZXN0X2hpZ2hwYykKICAgICAv KiBTdG9yZSB0aGUgY29udGlndW91cyByYW5nZSBpZiBpdCBpcyBub3QgZW1w dHk7IGl0IGNhbiBiZSBlbXB0eSBmb3IKICAgICAgICBDVXMgd2l0aCBubyBj b2RlLiAgKi8KQEAgLTM1NTMsMTAgKzM3NDYsMTAgQEAgcHJvY2Vzc19wc3lt dGFiX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMgogICAgICAgbG93cGMgPSAo KENPUkVfQUREUikgLTEpOwogICAgICAgaGlnaHBjID0gKChDT1JFX0FERFIp IDApOwogCi0gICAgICBmaXJzdF9kaWUgPSBsb2FkX3BhcnRpYWxfZGllcyAo YWJmZCwgYnVmZmVyLCBpbmZvX3B0ciwgMSwgJmN1KTsKKyAgICAgIGZpcnN0 X2RpZSA9IGxvYWRfcGFydGlhbF9kaWVzIChyZWFkZXIsIGluZm9fcHRyLCAx KTsKIAogICAgICAgc2Nhbl9wYXJ0aWFsX3N5bWJvbHMgKGZpcnN0X2RpZSwg Jmxvd3BjLCAmaGlnaHBjLAotCQkJICAgICEgaGFzX3BjX2luZm8sICZjdSk7 CisJCQkgICAgISBoYXNfcGNfaW5mbywgY3UpOwogCiAgICAgICAvKiBJZiB3 ZSBkaWRuJ3QgZmluZCBhIGxvd3BjLCBzZXQgaXQgdG8gaGlnaHBjIHRvIGF2 b2lkCiAJIGNvbXBsYWludHMgZnJvbSBgbWFpbnQgY2hlY2snLgkgKi8KQEAg LTM1ODAsNyArMzc3Myw3IEBAIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQg KHN0cnVjdCBkd2FyZjIKICAgICAob2JqZmlsZS0+c3RhdGljX3BzeW1ib2xz Lmxpc3QgKyBwc3QtPnN0YXRpY3Nfb2Zmc2V0KTsKICAgc29ydF9wc3Rfc3lt Ym9scyAocHN0KTsKIAotICBpZiAoaXNfZGVidWdfdHlwZXNfc2VjdGlvbikK KyAgaWYgKHBlcl9jdS0+ZGVidWdfdHlwZXNfc2VjdGlvbikKICAgICB7CiAg ICAgICAvKiBJdCdzIG5vdCBjbGVhciB3ZSB3YW50IHRvIGRvIGFueXRoaW5n IHdpdGggc3RtdCBsaXN0cyBoZXJlLgogCSBXYWl0aW5nIHRvIHNlZSB3aGF0 IGdjYyB1bHRpbWF0ZWx5IGRvZXMuICAqLwpAQCAtMzU4OSwyNiArMzc4Miw1 NiBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYy CiAgICAgewogICAgICAgLyogR2V0IHRoZSBsaXN0IG9mIGZpbGVzIGluY2x1 ZGVkIGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsCiAJIGFuZCBi dWlsZCBhIHBzeW10YWIgZm9yIGVhY2ggb2YgdGhlbS4gICovCi0gICAgICBk d2FyZjJfYnVpbGRfaW5jbHVkZV9wc3ltdGFicyAoJmN1LCBjb21wX3VuaXRf ZGllLCBwc3QpOworICAgICAgZHdhcmYyX2J1aWxkX2luY2x1ZGVfcHN5bXRh YnMgKGN1LCBjb21wX3VuaXRfZGllLCBwc3QpOwogICAgIH0KK30KIAotICBk b19jbGVhbnVwcyAoYmFja190b19pbm5lcik7CisvKiBTdWJyb3V0aW5lIG9m IGR3YXJmMl9idWlsZF9wc3ltdGFic19oYXJkIHRvIHNpbXBsaWZ5IGl0Lgor ICAgUHJvY2VzcyBjb21waWxhdGlvbiB1bml0IFRISVNfQ1UgZm9yIGEgcHN5 bXRhYi4gICovCisKK3N0YXRpYyB2b2lkCitwcm9jZXNzX3BzeW10YWJfY29t cF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1KQor eworICAvKiBJZiB0aGlzIGNvbXBpbGF0aW9uIHVuaXQgd2FzIGFscmVhZHkg cmVhZCBpbiwgZnJlZSB0aGUKKyAgICAgY2FjaGVkIGNvcHkgaW4gb3JkZXIg dG8gcmVhZCBpdCBpbiBhZ2Fpbi4JVGhpcyBpcworICAgICBuZWNlc3Nhcnkg YmVjYXVzZSB3ZSBza2lwcGVkIHNvbWUgc3ltYm9scyB3aGVuIHdlIGZpcnN0 CisgICAgIHJlYWQgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgKHNlZSBsb2Fk X3BhcnRpYWxfZGllcykuCisgICAgIFRoaXMgcHJvYmxlbSBjb3VsZCBiZSBh dm9pZGVkLCBidXQgdGhlIGJlbmVmaXQgaXMgdW5jbGVhci4gICovCisgIGlm ICh0aGlzX2N1LT5jdSAhPSBOVUxMKQorICAgIGZyZWVfb25lX2NhY2hlZF9j b21wX3VuaXQgKHRoaXNfY3UpOworCisgIGdkYl9hc3NlcnQgKCEgdGhpc19j dS0+ZGVidWdfdHlwZXNfc2VjdGlvbik7CisgIGluaXRfY3VfYW5kX3JlYWRf ZGllcyAodGhpc19jdSwgMCwgMCwgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5p dF9yZWFkZXIsCisJCQkgTlVMTCk7CisKKyAgLyogQWdlIG91dCBhbnkgc2Vj b25kYXJ5IENVcy4gICovCisgIGFnZV9jYWNoZWRfY29tcF91bml0cyAoKTsK IH0KIAogLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNl X25vcmVzaXplLgogICAgUHJvY2VzcyBvbmUgLmRlYnVnX3R5cGVzIGNvbXAt dW5pdC4JKi8KIAogc3RhdGljIGludAotcHJvY2Vzc190eXBlX2NvbXBfdW5p dCAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCitwcm9jZXNzX3BzeW10YWJf dHlwZV91bml0ICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKIHsKLSAgc3Ry dWN0IHNpZ25hdHVyZWRfdHlwZSAqZW50cnkgPSAoc3RydWN0IHNpZ25hdHVy ZWRfdHlwZSAqKSAqc2xvdDsKLSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqdGhpc19jdTsKKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqc2lnX3R5 cGUgPSAoc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqKSAqc2xvdDsKKyAgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1ID0gJnNpZ190eXBlLT5w ZXJfY3U7CiAKICAgZ2RiX2Fzc2VydCAoaW5mbyA9PSBOVUxMKTsKLSAgdGhp c19jdSA9ICZlbnRyeS0+cGVyX2N1OwogCi0gIGdkYl9hc3NlcnQgKHRoaXNf Y3UtPmRlYnVnX3R5cGVzX3NlY3Rpb24tPnJlYWRpbik7Ci0gIHByb2Nlc3Nf cHN5bXRhYl9jb21wX3VuaXQgKHRoaXNfY3UsIHRoaXNfY3UtPmRlYnVnX3R5 cGVzX3NlY3Rpb24sIDEpOworICAvKiBJZiB0aGlzIGNvbXBpbGF0aW9uIHVu aXQgd2FzIGFscmVhZHkgcmVhZCBpbiwgZnJlZSB0aGUKKyAgICAgY2FjaGVk IGNvcHkgaW4gb3JkZXIgdG8gcmVhZCBpdCBpbiBhZ2Fpbi4JVGhpcyBpcwor ICAgICBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBza2lwcGVkIHNvbWUgc3ltYm9s cyB3aGVuIHdlIGZpcnN0CisgICAgIHJlYWQgaW4gdGhlIGNvbXBpbGF0aW9u IHVuaXQgKHNlZSBsb2FkX3BhcnRpYWxfZGllcykuCisgICAgIFRoaXMgcHJv YmxlbSBjb3VsZCBiZSBhdm9pZGVkLCBidXQgdGhlIGJlbmVmaXQgaXMgdW5j bGVhci4gICovCisgIGlmIChwZXJfY3UtPmN1ICE9IE5VTEwpCisgICAgZnJl ZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAocGVyX2N1KTsKKworICBnZGJfYXNz ZXJ0IChwZXJfY3UtPmRlYnVnX3R5cGVzX3NlY3Rpb24pOworICBpbml0X3R1 X2FuZF9yZWFkX2RpZXMgKHBlcl9jdSwgMCwgcHJvY2Vzc19wc3ltdGFiX2Nv bXBfdW5pdF9yZWFkZXIsIE5VTEwpOworCisgIC8qIEFnZSBvdXQgYW55IHNl Y29uZGFyeSBDVXMuICAqLworICBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKCk7 CiAKICAgcmV0dXJuIDE7CiB9CkBAIC0zNjIzLDcgKzM4NDYsNyBAQCBidWls ZF90eXBlX3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAgICAgcmV0 dXJuOwogCiAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKGR3YXJmMl9wZXJf b2JqZmlsZS0+c2lnbmF0dXJlZF90eXBlcywKLQkJCSAgcHJvY2Vzc190eXBl X2NvbXBfdW5pdCwgTlVMTCk7CisJCQkgIHByb2Nlc3NfcHN5bXRhYl90eXBl X3VuaXQsIE5VTEwpOwogfQogCiAvKiBBIGNsZWFudXAgZnVuY3Rpb24gdGhh dCBjbGVhcnMgb2JqZmlsZSdzIHBzeW10YWJzX2FkZHJtYXAgZmllbGQuICAq LwpAQCAtMzY2OSw3ICszODkyLDcgQEAgZHdhcmYyX2J1aWxkX3BzeW10YWJz X2hhcmQgKHN0cnVjdCBvYmpmaQogICAgIHsKICAgICAgIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSA9IGR3Ml9nZXRfY3UgKGkpOwogCi0g ICAgICBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChwZXJfY3UsICZkd2Fy ZjJfcGVyX29iamZpbGUtPmluZm8sIDApOworICAgICAgcHJvY2Vzc19wc3lt dGFiX2NvbXBfdW5pdCAocGVyX2N1KTsKICAgICB9CiAKICAgb2JqZmlsZS0+ cHN5bXRhYnNfYWRkcm1hcCA9IGFkZHJtYXBfY3JlYXRlX2ZpeGVkIChvYmpm aWxlLT5wc3ltdGFic19hZGRybWFwLApAQCAtMzY4Miw2MCArMzkwNSwxMyBA QCBkd2FyZjJfYnVpbGRfcHN5bXRhYnNfaGFyZCAoc3RydWN0IG9iamZpCiAv KiBMb2FkIHRoZSBwYXJ0aWFsIERJRXMgZm9yIGEgc2Vjb25kYXJ5IENVIGlu dG8gbWVtb3J5LiAgKi8KIAogc3RhdGljIHZvaWQKLWxvYWRfcGFydGlhbF9j b21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoaXNfY3Up Citsb2FkX3BhcnRpYWxfY29tcF91bml0X3JlYWRlciAoY29uc3Qgc3RydWN0 IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKKwkJCSAgICAgICBnZGJfYnl0 ZSAqaW5mb19wdHIsCisJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpjb21w X3VuaXRfZGllLAorCQkJICAgICAgIGludCBoYXNfY2hpbGRyZW4sCisJCQkg ICAgICAgdm9pZCAqZGF0YSkKIHsKLSAgc3RydWN0IG9iamZpbGUgKm9iamZp bGUgPSB0aGlzX2N1LT5vYmpmaWxlOwotICBiZmQgKmFiZmQgPSBvYmpmaWxl LT5vYmZkOwotICBnZGJfYnl0ZSAqaW5mb19wdHI7Ci0gIHN0cnVjdCBkaWVf aW5mbyAqY29tcF91bml0X2RpZTsKLSAgc3RydWN0IGR3YXJmMl9jdSAqY3U7 Ci0gIHN0cnVjdCBjbGVhbnVwICpmcmVlX2FiYnJldnNfY2xlYW51cCwgKmZy ZWVfY3VfY2xlYW51cCA9IE5VTEw7Ci0gIGludCBoYXNfY2hpbGRyZW47Ci0g IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRlcl9zcGVjczsKLSAgaW50 IHJlYWRfY3UgPSAwOwotICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAq c2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUtPmluZm87Ci0KLSAgZ2Ri X2Fzc2VydCAoISB0aGlzX2N1LT5kZWJ1Z190eXBlc19zZWN0aW9uKTsKLQot ICBnZGJfYXNzZXJ0IChzZWN0aW9uLT5yZWFkaW4pOwotICBpbmZvX3B0ciA9 IHNlY3Rpb24tPmJ1ZmZlciArIHRoaXNfY3UtPm9mZnNldC5zZWN0X29mZjsK LQotICBpZiAodGhpc19jdS0+Y3UgPT0gTlVMTCkKLSAgICB7Ci0gICAgICBj dSA9IHhtYWxsb2MgKHNpemVvZiAoKmN1KSk7Ci0gICAgICBpbml0X29uZV9j b21wX3VuaXQgKGN1LCB0aGlzX2N1KTsKLQotICAgICAgcmVhZF9jdSA9IDE7 Ci0KLSAgICAgIC8qIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBsb2FkaW5n LCByZWxlYXNlIG91ciBzdG9yYWdlLiAgKi8KLSAgICAgIGZyZWVfY3VfY2xl YW51cCA9IG1ha2VfY2xlYW51cCAoZnJlZV9oZWFwX2NvbXBfdW5pdCwgY3Up OwotCi0gICAgICBpbmZvX3B0ciA9IHJlYWRfYW5kX2NoZWNrX2NvbXBfdW5p dF9oZWFkICgmY3UtPmhlYWRlciwgc2VjdGlvbiwgaW5mb19wdHIsCi0JCQkJ CQkwKTsKLQotICAgICAgLyogU2tpcCBkdW1teSBjb21waWxhdGlvbiB1bml0 cy4gICovCi0gICAgICBpZiAoaW5mb19wdHIgPj0gKHNlY3Rpb24tPmJ1ZmZl ciArIHNlY3Rpb24tPnNpemUpCi0JICB8fCBwZWVrX2FiYnJldl9jb2RlIChh YmZkLCBpbmZvX3B0cikgPT0gMCkKLQl7Ci0JICBkb19jbGVhbnVwcyAoZnJl ZV9jdV9jbGVhbnVwKTsKLQkgIHJldHVybjsKLQl9Ci0gICAgfQotICBlbHNl Ci0gICAgewotICAgICAgY3UgPSB0aGlzX2N1LT5jdTsKLSAgICAgIGluZm9f cHRyICs9IGN1LT5oZWFkZXIuZmlyc3RfZGllX29mZnNldC5jdV9vZmY7Ci0g ICAgfQotCi0gIC8qIFJlYWQgdGhlIGFiYnJldnMgZm9yIHRoaXMgY29tcGls YXRpb24gdW5pdCBpbnRvIGEgdGFibGUuICAqLwotICBnZGJfYXNzZXJ0IChj dS0+ZHdhcmYyX2FiYnJldnMgPT0gTlVMTCk7Ci0gIGR3YXJmMl9yZWFkX2Fi YnJldnMgKGN1KTsKLSAgZnJlZV9hYmJyZXZzX2NsZWFudXAgPSBtYWtlX2Ns ZWFudXAgKGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSwgY3UpOwotCi0gIC8q IFJlYWQgdGhlIGNvbXBpbGF0aW9uIHVuaXQgZGllLiAgKi8KLSAgaW5pdF9j dV9kaWVfcmVhZGVyICgmcmVhZGVyX3NwZWNzLCBjdSk7Ci0gIGluZm9fcHRy ID0gcmVhZF9mdWxsX2RpZSAoJnJlYWRlcl9zcGVjcywgJmNvbXBfdW5pdF9k aWUsIGluZm9fcHRyLAotCQkJICAgICZoYXNfY2hpbGRyZW4pOworICBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSA9IHJlYWRlci0+Y3U7CiAKICAgcHJlcGFyZV9v bmVfY29tcF91bml0IChjdSwgY29tcF91bml0X2RpZSk7CiAKQEAgLTM3NDMs MjAgKzM5MTksMTkgQEAgbG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCAoc3RydWN0 IGR3YXJmMl9wZQogICAgICBJZiBzbywgcmVhZCB0aGUgcmVzdCBvZiB0aGUg cGFydGlhbCBzeW1ib2xzIGZyb20gdGhpcyBjb21wIHVuaXQuCiAgICAgIElm IG5vdCwgdGhlcmUncyBubyBtb3JlIGRlYnVnX2luZm8gZm9yIHRoaXMgY29t cCB1bml0LiAgKi8KICAgaWYgKGhhc19jaGlsZHJlbikKLSAgICBsb2FkX3Bh cnRpYWxfZGllcyAoYWJmZCwgc2VjdGlvbi0+YnVmZmVyLCBpbmZvX3B0ciwg MCwgY3UpOwotCi0gIGRvX2NsZWFudXBzIChmcmVlX2FiYnJldnNfY2xlYW51 cCk7CisgICAgbG9hZF9wYXJ0aWFsX2RpZXMgKHJlYWRlciwgaW5mb19wdHIs IDApOworfQogCi0gIGlmIChyZWFkX2N1KQotICAgIHsKLSAgICAgIC8qIFdl J3ZlIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgdGhpcyBjb21waWxhdGlvbiB1 bml0LiAgTGV0IG91cgotCSBjYWxsZXIgY2xlYW4gaXQgdXAgd2hlbiBmaW5p c2hlZCB3aXRoIGl0LiAgKi8KLSAgICAgIGRpc2NhcmRfY2xlYW51cHMgKGZy ZWVfY3VfY2xlYW51cCk7CisvKiBMb2FkIHRoZSBwYXJ0aWFsIERJRXMgZm9y IGEgc2Vjb25kYXJ5IENVIGludG8gbWVtb3J5LgorICAgVGhpcyBpcyBhbHNv IHVzZWQgd2hlbiByZXJlYWRpbmcgYSBwcmltYXJ5IENVIHdpdGggbG9hZF9h bGxfZGllcy4gICovCiAKLSAgICAgIC8qIExpbmsgdGhpcyBDVSBpbnRvIHJl YWRfaW5fY2hhaW4uICAqLwotICAgICAgdGhpc19jdS0+Y3UtPnJlYWRfaW5f Y2hhaW4gPSBkd2FyZjJfcGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW47Ci0g ICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW4gPSB0aGlz X2N1OwotICAgIH0KK3N0YXRpYyB2b2lkCitsb2FkX3BhcnRpYWxfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1KQorewor ICBpZiAodGhpc19jdS0+ZGVidWdfdHlwZXNfc2VjdGlvbikKKyAgICBpbml0 X3R1X2FuZF9yZWFkX2RpZXMgKHRoaXNfY3UsIDEsIGxvYWRfcGFydGlhbF9j b21wX3VuaXRfcmVhZGVyLCBOVUxMKTsKKyAgZWxzZQorICAgIGluaXRfY3Vf YW5kX3JlYWRfZGllcyAodGhpc19jdSwgMCwgMSwgbG9hZF9wYXJ0aWFsX2Nv bXBfdW5pdF9yZWFkZXIsIE5VTEwpOwogfQogCiAvKiBDcmVhdGUgYSBsaXN0 IG9mIGFsbCBjb21waWxhdGlvbiB1bml0cyBpbiBPQkpGSUxFLgpAQCAtNDM3 NSw4ICs0NTUwLDkgQEAgcGVla19kaWVfYWJicmV2IChnZGJfYnl0ZSAqaW5m b19wdHIsIHVucwogICAgRElFLiAgQW55IGNoaWxkcmVuIG9mIHRoZSBza2lw cGVkIERJRXMgd2lsbCBhbHNvIGJlIHNraXBwZWQuICAqLwogCiBzdGF0aWMg Z2RiX2J5dGUgKgotc2tpcF9jaGlsZHJlbiAoZ2RiX2J5dGUgKmJ1ZmZlciwg Z2RiX2J5dGUgKmluZm9fcHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK3Nr aXBfY2hpbGRyZW4gKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsIGdkYl9ieXRlICppbmZvX3B0cikKIHsKKyAgc3RydWN0IGR3YXJm Ml9jdSAqY3UgPSByZWFkZXItPmN1OwogICBzdHJ1Y3QgYWJicmV2X2luZm8g KmFiYnJldjsKICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CiAKQEAgLTQz ODYsNyArNDU2Miw3IEBAIHNraXBfY2hpbGRyZW4gKGdkYl9ieXRlICpidWZm ZXIsIGdkYl9ieXQKICAgICAgIGlmIChhYmJyZXYgPT0gTlVMTCkKIAlyZXR1 cm4gaW5mb19wdHIgKyBieXRlc19yZWFkOwogICAgICAgZWxzZQotCWluZm9f cHRyID0gc2tpcF9vbmVfZGllIChidWZmZXIsIGluZm9fcHRyICsgYnl0ZXNf cmVhZCwgYWJicmV2LCBjdSk7CisJaW5mb19wdHIgPSBza2lwX29uZV9kaWUg KHJlYWRlciwgaW5mb19wdHIgKyBieXRlc19yZWFkLCBhYmJyZXYpOwogICAg IH0KIH0KIApAQCAtNDM5NywxMiArNDU3MywxNCBAQCBza2lwX2NoaWxkcmVu IChnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0CiAgICBjaGlsZHJlbi4gICov CiAKIHN0YXRpYyBnZGJfYnl0ZSAqCi1za2lwX29uZV9kaWUgKGdkYl9ieXRl ICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKLQkgICAgICBzdHJ1Y3Qg YWJicmV2X2luZm8gKmFiYnJldiwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitz a2lwX29uZV9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKKwkgICAgICBzdHJ1Y3QgYWJi cmV2X2luZm8gKmFiYnJldikKIHsKICAgdW5zaWduZWQgaW50IGJ5dGVzX3Jl YWQ7CiAgIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKLSAgYmZkICphYmZkID0g Y3UtPm9iamZpbGUtPm9iZmQ7CisgIGJmZCAqYWJmZCA9IHJlYWRlci0+YWJm ZDsKKyAgc3RydWN0IGR3YXJmMl9jdSAqY3UgPSByZWFkZXItPmN1OworICBn ZGJfYnl0ZSAqYnVmZmVyID0gcmVhZGVyLT5idWZmZXI7CiAgIHVuc2lnbmVk IGludCBmb3JtLCBpOwogCiAgIGZvciAoaSA9IDA7IGkgPCBhYmJyZXYtPm51 bV9hdHRyczsgaSsrKQpAQCAtNDQxMCw4ICs0NTg4LDcgQEAgc2tpcF9vbmVf ZGllIChnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZQogICAgICAgLyogVGhl IG9ubHkgYWJicmV2IHdlIGNhcmUgYWJvdXQgaXMgRFdfQVRfc2libGluZy4g ICovCiAgICAgICBpZiAoYWJicmV2LT5hdHRyc1tpXS5uYW1lID09IERXX0FU X3NpYmxpbmcpCiAJewotCSAgcmVhZF9hdHRyaWJ1dGUgKCZhdHRyLCAmYWJi cmV2LT5hdHRyc1tpXSwKLQkJCSAgYWJmZCwgaW5mb19wdHIsIGN1KTsKKwkg IHJlYWRfYXR0cmlidXRlIChyZWFkZXIsICZhdHRyLCAmYWJicmV2LT5hdHRy c1tpXSwgaW5mb19wdHIpOwogCSAgaWYgKGF0dHIuZm9ybSA9PSBEV19GT1JN X3JlZl9hZGRyKQogCSAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsCiAJCSAgICAgICBfKCJpZ25vcmluZyBhYnNvbHV0ZSBEV19BVF9zaWJs aW5nIikpOwpAQCAtNDQ5OCwxOSArNDY3NSwxOCBAQCBza2lwX29uZV9kaWUg KGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlCiAgICAgfQogCiAgIGlmIChh YmJyZXYtPmhhc19jaGlsZHJlbikKLSAgICByZXR1cm4gc2tpcF9jaGlsZHJl biAoYnVmZmVyLCBpbmZvX3B0ciwgY3UpOworICAgIHJldHVybiBza2lwX2No aWxkcmVuIChyZWFkZXIsIGluZm9fcHRyKTsKICAgZWxzZQogICAgIHJldHVy biBpbmZvX3B0cjsKIH0KIAogLyogTG9jYXRlIE9SSUdfUERJJ3Mgc2libGlu Zy4KLSAgIElORk9fUFRSIHNob3VsZCBwb2ludCB0byB0aGUgc3RhcnQgb2Yg dGhlIG5leHQgRElFIGFmdGVyIE9SSUdfUERJCi0gICBpbiBCVUZGRVIuICAq LworICAgSU5GT19QVFIgc2hvdWxkIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0 aGUgbmV4dCBESUUgYWZ0ZXIgT1JJR19QREkuICAqLwogCiBzdGF0aWMgZ2Ri X2J5dGUgKgotbG9jYXRlX3BkaV9zaWJsaW5nIChzdHJ1Y3QgcGFydGlhbF9k aWVfaW5mbyAqb3JpZ19wZGksCi0JCSAgICBnZGJfYnl0ZSAqYnVmZmVyLCBn ZGJfYnl0ZSAqaW5mb19wdHIsCi0JCSAgICBiZmQgKmFiZmQsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorbG9jYXRlX3BkaV9zaWJsaW5nIChjb25zdCBzdHJ1 Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQkgICAgc3RydWN0IHBh cnRpYWxfZGllX2luZm8gKm9yaWdfcGRpLAorCQkgICAgZ2RiX2J5dGUgKmlu Zm9fcHRyKQogewogICAvKiBEbyB3ZSBrbm93IHRoZSBzaWJsaW5nIGFscmVh ZHk/ICAqLwogCkBAIC00NTI0LDcgKzQ3MDAsNyBAQCBsb2NhdGVfcGRpX3Np YmxpbmcgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pCiAKICAgLyogU2tpcCB0aGUg Y2hpbGRyZW4gdGhlIGxvbmcgd2F5LiAgKi8KIAotICByZXR1cm4gc2tpcF9j aGlsZHJlbiAoYnVmZmVyLCBpbmZvX3B0ciwgY3UpOworICByZXR1cm4gc2tp cF9jaGlsZHJlbiAocmVhZGVyLCBpbmZvX3B0cik7CiB9CiAKIC8qIEV4cGFu ZCB0aGlzIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGludG8gYSBmdWxsIHN5bWJv bCB0YWJsZS4gICovCkBAIC00NjQwLDcgKzQ4MTYsNyBAQCBkd2FyZjJfcmVs ZWFzZV9xdWV1ZSAodm9pZCAqZHVtbXkpCiAgICAgICBpZiAoaXRlbS0+cGVy X2N1LT5xdWV1ZWQpCiAJewogCSAgaWYgKGl0ZW0tPnBlcl9jdS0+Y3UgIT0g TlVMTCkKLQkgICAgZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAoaXRlbS0+ cGVyX2N1LT5jdSk7CisJICAgIGZyZWVfb25lX2NhY2hlZF9jb21wX3VuaXQg KGl0ZW0tPnBlcl9jdSk7CiAJICBpdGVtLT5wZXJfY3UtPnF1ZXVlZCA9IDA7 CiAJfQogCkBAIC00NzE1LDg1ICs0ODkxLDUzIEBAIGRpZV9lcSAoY29uc3Qg dm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQKICAgcmV0dXJuIGRpZV9saHMt Pm9mZnNldC5zZWN0X29mZiA9PSBkaWVfcmhzLT5vZmZzZXQuc2VjdF9vZmY7 CiB9CiAKLS8qIExvYWQgdGhlIERJRXMgYXNzb2NpYXRlZCB3aXRoIFBFUl9D VSBpbnRvIG1lbW9yeS4gICovCisvKiBkaWVfcmVhZGVyX2Z1bmMgZm9yIGxv YWRfZnVsbF9jb21wX3VuaXQuCisgICBUaGlzIGlzIGlkZW50aWNhbCB0byBy ZWFkX3NpZ25hdHVyZWRfdHlwZV9yZWFkZXIsCisgICBidXQgaXMga2VwdCBz ZXBhcmF0ZSBmb3Igbm93LiAgKi8KIAogc3RhdGljIHZvaWQKLWxvYWRfZnVs bF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dSkKK2xvYWRfZnVsbF9jb21wX3VuaXRfcmVhZGVyIChjb25zdCBzdHJ1Y3Qg ZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQkJICAgIGdkYl9ieXRlICpp bmZvX3B0ciwKKwkJCSAgICBzdHJ1Y3QgZGllX2luZm8gKmNvbXBfdW5pdF9k aWUsCisJCQkgICAgaW50IGhhc19jaGlsZHJlbiwKKwkJCSAgICB2b2lkICpk YXRhKQogewotICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+ b2JqZmlsZTsKLSAgYmZkICphYmZkID0gb2JqZmlsZS0+b2JmZDsKLSAgc3Ry dWN0IGR3YXJmMl9jdSAqY3U7Ci0gIHNlY3Rfb2Zmc2V0IG9mZnNldDsKLSAg Z2RiX2J5dGUgKmluZm9fcHRyLCAqYmVnX29mX2NvbXBfdW5pdDsKLSAgc3Ry dWN0IGNsZWFudXAgKmZyZWVfY3VfY2xlYW51cCA9IE5VTEw7CisgIHN0cnVj dCBkd2FyZjJfY3UgKmN1ID0gcmVhZGVyLT5jdTsKICAgc3RydWN0IGF0dHJp YnV0ZSAqYXR0cjsKLSAgaW50IHJlYWRfY3UgPSAwOwotCi0gIGdkYl9hc3Nl cnQgKCEgcGVyX2N1LT5kZWJ1Z190eXBlc19zZWN0aW9uKTsKLQotICAvKiBT ZXQgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHBhcnRpYWwgc3ltYm9sIHRh YmxlIGluZm8uICAqLwotICBvZmZzZXQgPSBwZXJfY3UtPm9mZnNldDsKIAot ICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9v YmpmaWxlLT5pbmZvKTsKLSAgaW5mb19wdHIgPSBkd2FyZjJfcGVyX29iamZp bGUtPmluZm8uYnVmZmVyICsgb2Zmc2V0LnNlY3Rfb2ZmOwotICBiZWdfb2Zf Y29tcF91bml0ID0gaW5mb19wdHI7Ci0KLSAgaWYgKHBlcl9jdS0+Y3UgPT0g TlVMTCkKLSAgICB7Ci0gICAgICBjdSA9IHhtYWxsb2MgKHNpemVvZiAoKmN1 KSk7Ci0gICAgICBpbml0X29uZV9jb21wX3VuaXQgKGN1LCBwZXJfY3UpOwot Ci0gICAgICByZWFkX2N1ID0gMTsKLQotICAgICAgLyogSWYgYW4gZXJyb3Ig b2NjdXJzIHdoaWxlIGxvYWRpbmcsIHJlbGVhc2Ugb3VyIHN0b3JhZ2UuICAq LwotICAgICAgZnJlZV9jdV9jbGVhbnVwID0gbWFrZV9jbGVhbnVwIChmcmVl X2hlYXBfY29tcF91bml0LCBjdSk7Ci0KLSAgICAgIC8qIFJlYWQgaW4gdGhl IGNvbXBfdW5pdCBoZWFkZXIuICAqLwotICAgICAgaW5mb19wdHIgPSByZWFk X2NvbXBfdW5pdF9oZWFkICgmY3UtPmhlYWRlciwgaW5mb19wdHIsIGFiZmQp OwotCi0gICAgICAvKiBTa2lwIGR1bW15IGNvbXBpbGF0aW9uIHVuaXRzLiAg Ki8KLSAgICAgIGlmIChpbmZvX3B0ciA+PSAoZHdhcmYyX3Blcl9vYmpmaWxl LT5pbmZvLmJ1ZmZlcgotCQkgICAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUt PmluZm8uc2l6ZSkKLQkgIHx8IHBlZWtfYWJicmV2X2NvZGUgKGFiZmQsIGlu Zm9fcHRyKSA9PSAwKQotCXsKLQkgIGRvX2NsZWFudXBzIChmcmVlX2N1X2Ns ZWFudXApOwotCSAgcmV0dXJuOwotCX0KLQotICAgICAgLyogQ29tcGxldGUg dGhlIGN1X2hlYWRlci4gICovCi0gICAgICBjdS0+aGVhZGVyLm9mZnNldCA9 IG9mZnNldDsKLSAgICAgIGN1LT5oZWFkZXIuZmlyc3RfZGllX29mZnNldC5j dV9vZmYgPSBpbmZvX3B0ciAtIGJlZ19vZl9jb21wX3VuaXQ7Ci0gICAgfQot ICBlbHNlCi0gICAgewotICAgICAgY3UgPSBwZXJfY3UtPmN1OwotICAgICAg aW5mb19wdHIgKz0gY3UtPmhlYWRlci5maXJzdF9kaWVfb2Zmc2V0LmN1X29m ZjsKLSAgICB9CisgIGdkYl9hc3NlcnQgKGN1LT5kaWVfaGFzaCA9PSBOVUxM KTsKKyAgY3UtPmRpZV9oYXNoID0KKyAgICBodGFiX2NyZWF0ZV9hbGxvY19l eCAoY3UtPmhlYWRlci5sZW5ndGggLyAxMiwKKwkJCSAgZGllX2hhc2gsCisJ CQkgIGRpZV9lcSwKKwkJCSAgTlVMTCwKKwkJCSAgJmN1LT5jb21wX3VuaXRf b2JzdGFjaywKKwkJCSAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAorCQkJ ICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwogCi0gIGN1LT5kaWVzID0g cmVhZF9jb21wX3VuaXQgKGluZm9fcHRyLCBjdSk7CisgIGlmIChoYXNfY2hp bGRyZW4pCisgICAgY29tcF91bml0X2RpZS0+Y2hpbGQgPSByZWFkX2RpZV9h bmRfc2libGluZ3MgKHJlYWRlciwgaW5mb19wdHIsCisJCQkJCQkgICZpbmZv X3B0ciwgY29tcF91bml0X2RpZSk7CisgIGN1LT5kaWVzID0gY29tcF91bml0 X2RpZTsKKyAgLyogY29tcF91bml0X2RpZSBpcyBub3Qgc3RvcmVkIGluIGRp ZV9oYXNoLCBubyBuZWVkLiAgKi8KIAogICAvKiBXZSB0cnkgbm90IHRvIHJl YWQgYW55IGF0dHJpYnV0ZXMgaW4gdGhpcyBmdW5jdGlvbiwgYmVjYXVzZSBu b3QKICAgICAgYWxsIENVcyBuZWVkZWQgZm9yIHJlZmVyZW5jZXMgaGF2ZSBi ZWVuIGxvYWRlZCB5ZXQsIGFuZCBzeW1ib2wKICAgICAgdGFibGUgcHJvY2Vz c2luZyBpc24ndCBpbml0aWFsaXplZC4gIEJ1dCB3ZSBoYXZlIHRvIHNldCB0 aGUgQ1UgbGFuZ3VhZ2UsCi0gICAgIG9yIHdlIHdvbid0IGJlIGFibGUgdG8g YnVpbGQgdHlwZXMgY29ycmVjdGx5LiAgKi8KKyAgICAgb3Igd2Ugd29uJ3Qg YmUgYWJsZSB0byBidWlsZCB0eXBlcyBjb3JyZWN0bHkuCisgICAgIFNpbWls YXJseSwgaWYgd2UgZG8gbm90IHJlYWQgdGhlIHByb2R1Y2VyLCB3ZSBjYW4g bm90IGFwcGx5CisgICAgIHByb2R1Y2VyLXNwZWNpZmljIGludGVycHJldGF0 aW9uLiAgKi8KICAgcHJlcGFyZV9vbmVfY29tcF91bml0IChjdSwgY3UtPmRp ZXMpOworfQogCi0gIC8qIFNpbWlsYXJseSwgaWYgd2UgZG8gbm90IHJlYWQg dGhlIHByb2R1Y2VyLCB3ZSBjYW4gbm90IGFwcGx5Ci0gICAgIHByb2R1Y2Vy LXNwZWNpZmljIGludGVycHJldGF0aW9uLiAgKi8KLSAgYXR0ciA9IGR3YXJm Ml9hdHRyIChjdS0+ZGllcywgRFdfQVRfcHJvZHVjZXIsIGN1KTsKLSAgaWYg KGF0dHIpCi0gICAgY3UtPnByb2R1Y2VyID0gRFdfU1RSSU5HIChhdHRyKTsK Ky8qIExvYWQgdGhlIERJRXMgYXNzb2NpYXRlZCB3aXRoIFBFUl9DVSBpbnRv IG1lbW9yeS4gICovCiAKLSAgaWYgKHJlYWRfY3UpCi0gICAgewotICAgICAg LyogV2UndmUgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCB0aGlzIGNvbXBpbGF0 aW9uIHVuaXQuICBMZXQgb3VyCi0JIGNhbGxlciBjbGVhbiBpdCB1cCB3aGVu IGZpbmlzaGVkIHdpdGggaXQuICAqLwotICAgICAgZGlzY2FyZF9jbGVhbnVw cyAoZnJlZV9jdV9jbGVhbnVwKTsKK3N0YXRpYyB2b2lkCitsb2FkX2Z1bGxf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1 KQoreworICBnZGJfYXNzZXJ0ICghIHRoaXNfY3UtPmRlYnVnX3R5cGVzX3Nl Y3Rpb24pOwogCi0gICAgICAvKiBMaW5rIHRoaXMgQ1UgaW50byByZWFkX2lu X2NoYWluLiAgKi8KLSAgICAgIHBlcl9jdS0+Y3UtPnJlYWRfaW5fY2hhaW4g PSBkd2FyZjJfcGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW47Ci0gICAgICBk d2FyZjJfcGVyX29iamZpbGUtPnJlYWRfaW5fY2hhaW4gPSBwZXJfY3U7Ci0g ICAgfQorICBpbml0X2N1X2FuZF9yZWFkX2RpZXMgKHRoaXNfY3UsIDEsIDEs IGxvYWRfZnVsbF9jb21wX3VuaXRfcmVhZGVyLCBOVUxMKTsKIH0KIAogLyog QWRkIGEgRElFIHRvIHRoZSBkZWxheWVkIHBoeXNuYW1lIGxpc3QuICAqLwpA QCAtNTc0OCwxMSArNTg5MiwxMSBAQCBoYW5kbGVfRFdfQVRfc3RtdF9saXN0 IChzdHJ1Y3QgZGllX2luZm8gCiAJPSBkd2FyZl9kZWNvZGVfbGluZV9oZWFk ZXIgKGxpbmVfb2Zmc2V0LCBhYmZkLCBjdSk7CiAKICAgICAgIGlmIChsaW5l X2hlYWRlcikKLSAgICAgICAgewotICAgICAgICAgIGN1LT5saW5lX2hlYWRl ciA9IGxpbmVfaGVhZGVyOwotICAgICAgICAgIG1ha2VfY2xlYW51cCAoZnJl ZV9jdV9saW5lX2hlYWRlciwgY3UpOworCXsKKwkgIGN1LT5saW5lX2hlYWRl ciA9IGxpbmVfaGVhZGVyOworCSAgbWFrZV9jbGVhbnVwIChmcmVlX2N1X2xp bmVfaGVhZGVyLCBjdSk7CiAJICBkd2FyZl9kZWNvZGVfbGluZXMgKGxpbmVf aGVhZGVyLCBjb21wX2RpciwgY3UsIE5VTEwsIHdhbnRfbGluZV9pbmZvKTsK LSAgICAgICAgfQorCX0KICAgICB9CiB9CiAKQEAgLTU3NjEsNyArNTkwNSw3 IEBAIGhhbmRsZV9EV19BVF9zdG10X2xpc3QgKHN0cnVjdCBkaWVfaW5mbyAK IHN0YXRpYyB2b2lkCiByZWFkX2ZpbGVfc2NvcGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKIHsKLSAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGU7CiAg IHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxs X2NsZWFudXAsIDApOwogICBDT1JFX0FERFIgbG93cGMgPSAoKENPUkVfQURE UikgLTEpOwogICBDT1JFX0FERFIgaGlnaHBjID0gKChDT1JFX0FERFIpIDAp OwpAQCAtNTc4NSwxNSArNTkyOSw3IEBAIHJlYWRfZmlsZV9zY29wZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHMKIAogICBmaW5kX2ZpbGVfYW5kX2RpcmVj dG9yeSAoZGllLCBjdSwgJm5hbWUsICZjb21wX2Rpcik7CiAKLSAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xhbmd1YWdlLCBjdSk7Ci0gIGlm IChhdHRyKQotICAgIHsKLSAgICAgIHNldF9jdV9sYW5ndWFnZSAoRFdfVU5T TkQgKGF0dHIpLCBjdSk7Ci0gICAgfQotCi0gIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9wcm9kdWNlciwgY3UpOwotICBpZiAoYXR0cikKLSAg ICBjdS0+cHJvZHVjZXIgPSBEV19TVFJJTkcgKGF0dHIpOworICBwcmVwYXJl X29uZV9jb21wX3VuaXQgKGN1LCBkaWUpOwogCiAgIC8qIFRoZSBYTENMIGRv ZXNuJ3QgZ2VuZXJhdGUgRFdfTEFOR19PcGVuQ0wgYmVjYXVzZSB0aGlzIGF0 dHJpYnV0ZSBpcyBub3QKICAgICAgc3RhbmRhcmRpc2VkIHlldC4gIEFzIGEg d29ya2Fyb3VuZCBmb3IgdGhlIGxhbmd1YWdlIGRldGVjdGlvbiB3ZSBmYWxs CkBAIC01OTAxLDE1ICs2MDM3LDcgQEAgcmVhZF90eXBlX3VuaXRfc2NvcGUg KHN0cnVjdCBkaWVfaW5mbyAqZAogICBpZiAobmFtZSA9PSBOVUxMKQogICAg IG5hbWUgPSAiPHVua25vd24+IjsKIAotICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfbGFuZ3VhZ2UsIGN1KTsKLSAgaWYgKGF0dHIpCi0gICAg c2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLQotICAv KiBUaGlzIGlzbid0IHRlY2huaWNhbGx5IG5lZWRlZCB0b2RheS4gIEl0IGlz IGRvbmUgZm9yIHN5bW1ldHJ5Ci0gICAgIHdpdGggcmVhZF9maWxlX3Njb3Bl LiAgKi8KLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3Byb2R1 Y2VyLCBjdSk7Ci0gIGlmIChhdHRyKQotICAgIGN1LT5wcm9kdWNlciA9IERX X1NUUklORyAoYXR0cik7CisgIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoY3Us IGRpZSk7CiAKICAgLyogV2UgYXNzdW1lIHRoYXQgd2UncmUgcHJvY2Vzc2lu ZyBHQ0Mgb3V0cHV0LiAgKi8KICAgcHJvY2Vzc2luZ19nY2NfY29tcGlsYXRp b24gPSAyOwpAQCAtOTI4Nyw2OSArOTQxNSw2IEBAIHJlYWRfdW5zcGVjaWZp ZWRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICoKICAgcmV0dXJuIHNldF9kaWVf dHlwZSAoZGllLCB0eXBlLCBjdSk7CiB9CiAKLS8qIFJlYWQgYSB3aG9sZSBj b21waWxhdGlvbiB1bml0IGludG8gYSBsaW5rZWQgbGlzdCBvZiBkaWVzLiAg Ki8KLQotc3RhdGljIHN0cnVjdCBkaWVfaW5mbyAqCi1yZWFkX2NvbXBfdW5p dCAoZ2RiX2J5dGUgKmluZm9fcHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LXsKLSAgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgcmVhZGVyX3NwZWNzOwot ICBpbnQgcmVhZF9hYmJyZXZzID0gMDsKLSAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG8gPSBOVUxMOwotICBzdHJ1Y3QgZGllX2luZm8gKmRpZTsKLQotICBp ZiAoY3UtPmR3YXJmMl9hYmJyZXZzID09IE5VTEwpCi0gICAgewotICAgICAg ZHdhcmYyX3JlYWRfYWJicmV2cyAoY3UpOwotICAgICAgYmFja190byA9IG1h a2VfY2xlYW51cCAoZHdhcmYyX2ZyZWVfYWJicmV2X3RhYmxlLCBjdSk7Ci0g ICAgICByZWFkX2FiYnJldnMgPSAxOwotICAgIH0KLQotICBnZGJfYXNzZXJ0 IChjdS0+ZGllX2hhc2ggPT0gTlVMTCk7Ci0gIGN1LT5kaWVfaGFzaAotICAg ID0gaHRhYl9jcmVhdGVfYWxsb2NfZXggKGN1LT5oZWFkZXIubGVuZ3RoIC8g MTIsCi0JCQkgICAgZGllX2hhc2gsCi0JCQkgICAgZGllX2VxLAotCQkJICAg IE5VTEwsCi0JCQkgICAgJmN1LT5jb21wX3VuaXRfb2JzdGFjaywKLQkJCSAg ICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0JCQkgICAgZHVtbXlfb2Jz dGFja19kZWFsbG9jYXRlKTsKLQotICBpbml0X2N1X2RpZV9yZWFkZXIgKCZy ZWFkZXJfc3BlY3MsIGN1KTsKLQotICBkaWUgPSByZWFkX2RpZV9hbmRfY2hp bGRyZW4gKCZyZWFkZXJfc3BlY3MsIGluZm9fcHRyLCAmaW5mb19wdHIsIE5V TEwpOwotCi0gIGlmIChyZWFkX2FiYnJldnMpCi0gICAgZG9fY2xlYW51cHMg KGJhY2tfdG8pOwotCi0gIHJldHVybiBkaWU7Ci19Ci0KLS8qIE1haW4gZW50 cnkgcG9pbnQgZm9yIHJlYWRpbmcgYSBESUUgYW5kIGFsbCBjaGlsZHJlbi4K LSAgIFJlYWQgdGhlIERJRSBhbmQgZHVtcCBpdCBpZiByZXF1ZXN0ZWQuICAq LwotCi1zdGF0aWMgc3RydWN0IGRpZV9pbmZvICoKLXJlYWRfZGllX2FuZF9j aGlsZHJlbiAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRl ciwKLQkJICAgICAgIGdkYl9ieXRlICppbmZvX3B0ciwKLQkJICAgICAgIGdk Yl9ieXRlICoqbmV3X2luZm9fcHRyLAotCQkgICAgICAgc3RydWN0IGRpZV9p bmZvICpwYXJlbnQpCi17Ci0gIHN0cnVjdCBkaWVfaW5mbyAqcmVzdWx0ID0g cmVhZF9kaWVfYW5kX2NoaWxkcmVuXzEgKHJlYWRlciwgaW5mb19wdHIsCi0J CQkJCQkgICAgIG5ld19pbmZvX3B0ciwgcGFyZW50KTsKLQotICBpZiAoZHdh cmYyX2RpZV9kZWJ1ZykKLSAgICB7Ci0gICAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCi0JCQkgICJcblJlYWQgZGllIGZyb20gJXMgb2Yg JXM6XG4iLAotCQkJICAocmVhZGVyLT5jdS0+cGVyX2N1LT5kZWJ1Z190eXBl c19zZWN0aW9uCi0JCQkgICA/ICIuZGVidWdfdHlwZXMiCi0JCQkgICA6ICIu ZGVidWdfaW5mbyIpLAotCQkJICByZWFkZXItPmFiZmQtPmZpbGVuYW1lKTsK LSAgICAgIGR1bXBfZGllIChyZXN1bHQsIGR3YXJmMl9kaWVfZGVidWcpOwot ICAgIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBSZWFkIGEgc2lu Z2xlIGRpZSBhbmQgYWxsIGl0cyBkZXNjZW5kZW50cy4gIFNldCB0aGUgZGll J3Mgc2libGluZwogICAgZmllbGQgdG8gTlVMTDsgc2V0IG90aGVyIGZpZWxk cyBpbiB0aGUgZGllIGNvcnJlY3RseSwgYW5kIHNldCBhbGwKICAgIG9mIHRo ZSBkZXNjZW5kZW50cycgZmllbGRzIGNvcnJlY3RseS4gIFNldCAqTkVXX0lO Rk9fUFRSIHRvIHRoZQpAQCAtOTM1NywxMCArOTQyMiwxMCBAQCByZWFkX2Rp ZV9hbmRfY2hpbGRyZW4gKGNvbnN0IHN0cnVjdCBkaWVfCiAgICBpcyB0aGUg cGFyZW50IG9mIHRoZSBkaWUgaW4gcXVlc3Rpb24uICAqLwogCiBzdGF0aWMg c3RydWN0IGRpZV9pbmZvICoKLXJlYWRfZGllX2FuZF9jaGlsZHJlbl8xIChj b25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAotCQkJIGdk Yl9ieXRlICppbmZvX3B0ciwKLQkJCSBnZGJfYnl0ZSAqKm5ld19pbmZvX3B0 ciwKLQkJCSBzdHJ1Y3QgZGllX2luZm8gKnBhcmVudCkKK3JlYWRfZGllX2Fu ZF9jaGlsZHJlbiAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJl YWRlciwKKwkJICAgICAgIGdkYl9ieXRlICppbmZvX3B0ciwKKwkJICAgICAg IGdkYl9ieXRlICoqbmV3X2luZm9fcHRyLAorCQkgICAgICAgc3RydWN0IGRp ZV9pbmZvICpwYXJlbnQpCiB7CiAgIHN0cnVjdCBkaWVfaW5mbyAqZGllOwog ICBnZGJfYnl0ZSAqY3VyX3B0cjsKQEAgLTk0MDYsNyArOTQ3MSw3IEBAIHJl YWRfZGllX2FuZF9zaWJsaW5ncyAoY29uc3Qgc3RydWN0IGRpZV8KICAgd2hp bGUgKDEpCiAgICAgewogICAgICAgc3RydWN0IGRpZV9pbmZvICpkaWUKLQk9 IHJlYWRfZGllX2FuZF9jaGlsZHJlbl8xIChyZWFkZXIsIGN1cl9wdHIsICZj dXJfcHRyLCBwYXJlbnQpOworCT0gcmVhZF9kaWVfYW5kX2NoaWxkcmVuIChy ZWFkZXIsIGN1cl9wdHIsICZjdXJfcHRyLCBwYXJlbnQpOwogCiAgICAgICBp ZiAoZGllID09IE5VTEwpCiAJewpAQCAtOTQ2NCw4ICs5NTI5LDggQEAgcmVh ZF9mdWxsX2RpZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfcwogICBkaWUt Pm51bV9hdHRycyA9IGFiYnJldi0+bnVtX2F0dHJzOwogCiAgIGZvciAoaSA9 IDA7IGkgPCBhYmJyZXYtPm51bV9hdHRyczsgKytpKQotICAgIGluZm9fcHRy ID0gcmVhZF9hdHRyaWJ1dGUgKCZkaWUtPmF0dHJzW2ldLCAmYWJicmV2LT5h dHRyc1tpXSwKLQkJCSAgICAgICBhYmZkLCBpbmZvX3B0ciwgY3UpOworICAg IGluZm9fcHRyID0gcmVhZF9hdHRyaWJ1dGUgKHJlYWRlciwgJmRpZS0+YXR0 cnNbaV0sICZhYmJyZXYtPmF0dHJzW2ldLAorCQkJICAgICAgIGluZm9fcHRy KTsKIAogICAqZGllcCA9IGRpZTsKICAgKmhhc19jaGlsZHJlbiA9IGFiYnJl di0+aGFzX2NoaWxkcmVuOwpAQCAtOTQ3OSw5ICs5NTQ0LDExIEBAIHJlYWRf ZnVsbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3MKICAgIHRoZSBk YXRhIGZvdW5kIGluIHRoZSBhYmJyZXYgdGFibGUuICAqLwogCiBzdGF0aWMg dm9pZAotZHdhcmYyX3JlYWRfYWJicmV2cyAoc3RydWN0IGR3YXJmMl9jdSAq Y3UpCitkd2FyZjJfcmVhZF9hYmJyZXZzIChzdHJ1Y3QgZHdhcmYyX2N1ICpj dSwKKwkJICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqYWJicmV2 X3NlY3Rpb24pCisKIHsKLSAgYmZkICphYmZkID0gY3UtPm9iamZpbGUtPm9i ZmQ7CisgIGJmZCAqYWJmZCA9IGFiYnJldl9zZWN0aW9uLT5hc2VjdGlvbi0+ b3duZXI7CiAgIHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyID0g JmN1LT5oZWFkZXI7CiAgIGdkYl9ieXRlICphYmJyZXZfcHRyOwogICBzdHJ1 Y3QgYWJicmV2X2luZm8gKmN1cl9hYmJyZXY7CkBAIC05NDk4LDEwICs5NTY1 LDggQEAgZHdhcmYyX3JlYWRfYWJicmV2cyAoc3RydWN0IGR3YXJmMl9jdSAq YwogICBtZW1zZXQgKGN1LT5kd2FyZjJfYWJicmV2cywgMCwKICAgICAgICAg ICBBQkJSRVZfSEFTSF9TSVpFICogc2l6ZW9mIChzdHJ1Y3QgYWJicmV2X2lu Zm8gKikpOwogCi0gIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJf b2JqZmlsZS0+b2JqZmlsZSwKLQkJICAgICAgICZkd2FyZjJfcGVyX29iamZp bGUtPmFiYnJldik7Ci0gIGFiYnJldl9wdHIgPSAoZHdhcmYyX3Blcl9vYmpm aWxlLT5hYmJyZXYuYnVmZmVyCi0JCSsgY3VfaGVhZGVyLT5hYmJyZXZfb2Zm c2V0LnNlY3Rfb2ZmKTsKKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoY3UtPm9i amZpbGUsIGFiYnJldl9zZWN0aW9uKTsKKyAgYWJicmV2X3B0ciA9IGFiYnJl dl9zZWN0aW9uLT5idWZmZXIgKyBjdV9oZWFkZXItPmFiYnJldl9vZmZzZXQu c2VjdF9vZmY7CiAgIGFiYnJldl9udW1iZXIgPSByZWFkX3Vuc2lnbmVkX2xl YjEyOCAoYWJmZCwgYWJicmV2X3B0ciwgJmJ5dGVzX3JlYWQpOwogICBhYmJy ZXZfcHRyICs9IGJ5dGVzX3JlYWQ7CiAKQEAgLTk1NjAsOCArOTYyNSw4IEBA IGR3YXJmMl9yZWFkX2FiYnJldnMgKHN0cnVjdCBkd2FyZjJfY3UgKmMKICAg ICAgICAgIGFscmVhZHkgcmVhZCAod2hpY2ggbWVhbnMgd2UgYXJlIGFib3V0 IHRvIHJlYWQgdGhlIGFiYnJldmlhdGlvbnMKICAgICAgICAgIGZvciB0aGUg bmV4dCBjb21waWxlIHVuaXQpIG9yIGlmIHRoZSBlbmQgb2YgdGhlIGFiYnJl dmlhdGlvbgogICAgICAgICAgdGFibGUgaXMgcmVhY2hlZC4gICovCi0gICAg ICBpZiAoKHVuc2lnbmVkIGludCkgKGFiYnJldl9wdHIgLSBkd2FyZjJfcGVy X29iamZpbGUtPmFiYnJldi5idWZmZXIpCi0JICA+PSBkd2FyZjJfcGVyX29i amZpbGUtPmFiYnJldi5zaXplKQorICAgICAgaWYgKCh1bnNpZ25lZCBpbnQp IChhYmJyZXZfcHRyIC0gYWJicmV2X3NlY3Rpb24tPmJ1ZmZlcikKKwkgID49 IGFiYnJldl9zZWN0aW9uLT5zaXplKQogCWJyZWFrOwogICAgICAgYWJicmV2 X251bWJlciA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBhYmJyZXZf cHRyLCAmYnl0ZXNfcmVhZCk7CiAgICAgICBhYmJyZXZfcHRyICs9IGJ5dGVz X3JlYWQ7CkBAIC05NjM5LDkgKzk3MDQsMTAgQEAgaXNfdHlwZV90YWdfZm9y X3BhcnRpYWwgKGludCB0YWcpCiAvKiBMb2FkIGFsbCBESUVzIHRoYXQgYXJl IGludGVyZXN0aW5nIGZvciBwYXJ0aWFsIHN5bWJvbHMgaW50byBtZW1vcnku ICAqLwogCiBzdGF0aWMgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKgotbG9h ZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwg Z2RiX2J5dGUgKmluZm9fcHRyLAotCQkgICBpbnQgYnVpbGRpbmdfcHN5bXRh Yiwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitsb2FkX3BhcnRpYWxfZGllcyAo Y29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKKwkJICAg Z2RiX2J5dGUgKmluZm9fcHRyLCBpbnQgYnVpbGRpbmdfcHN5bXRhYikKIHsK KyAgc3RydWN0IGR3YXJmMl9jdSAqY3UgPSByZWFkZXItPmN1OwogICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogICBzdHJ1Y3Qg cGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWU7CiAgIHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvICpwYXJlbnRfZGllLCAqbGFzdF9kaWUsICpmaXJzdF9kaWUg PSBOVUxMOwpAQCAtOTcwNCw4ICs5NzcwLDcgQEAgbG9hZF9wYXJ0aWFsX2Rp ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKgogCSAgaWYgKCFsb2FkX2FsbCkK IAkgICAgewogCSAgICAgIC8qIFdlIGRvbid0IG5lZWQgYSBwYXJ0aWFsIERJ RSBmb3IgdGhlIHRlbXBsYXRlIGFyZ3VtZW50LiAgKi8KLQkgICAgICBpbmZv X3B0ciA9IHNraXBfb25lX2RpZSAoYnVmZmVyLCBpbmZvX3B0ciArIGJ5dGVz X3JlYWQsIGFiYnJldiwKLQkJCQkgICAgICAgY3UpOworCSAgICAgIGluZm9f cHRyID0gc2tpcF9vbmVfZGllIChyZWFkZXIsIGluZm9fcHRyICsgYnl0ZXNf cmVhZCwgYWJicmV2KTsKIAkgICAgICBjb250aW51ZTsKIAkgICAgfQogCX0K QEAgLTk3MTcsNyArOTc4Miw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQg KmFiZmQsIGdkYl9ieXRlICoKIAkgICYmIHBhcmVudF9kaWUgIT0gTlVMTAog CSAgJiYgcGFyZW50X2RpZS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQog CXsKLQkgIGluZm9fcHRyID0gc2tpcF9vbmVfZGllIChidWZmZXIsIGluZm9f cHRyICsgYnl0ZXNfcmVhZCwgYWJicmV2LCBjdSk7CisJICBpbmZvX3B0ciA9 IHNraXBfb25lX2RpZSAocmVhZGVyLCBpbmZvX3B0ciArIGJ5dGVzX3JlYWQs IGFiYnJldik7CiAJICBjb250aW51ZTsKIAl9CiAKQEAgLTk3MzcsMTIgKzk4 MDIsMTIgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5 dGUgKgogCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX21lbWJlcikKIAl7 CiAJICAvKiBPdGhlcndpc2Ugd2Ugc2tpcCB0byB0aGUgbmV4dCBzaWJsaW5n LCBpZiBhbnkuICAqLwotCSAgaW5mb19wdHIgPSBza2lwX29uZV9kaWUgKGJ1 ZmZlciwgaW5mb19wdHIgKyBieXRlc19yZWFkLCBhYmJyZXYsIGN1KTsKKwkg IGluZm9fcHRyID0gc2tpcF9vbmVfZGllIChyZWFkZXIsIGluZm9fcHRyICsg Ynl0ZXNfcmVhZCwgYWJicmV2KTsKIAkgIGNvbnRpbnVlOwogCX0KIAotICAg ICAgaW5mb19wdHIgPSByZWFkX3BhcnRpYWxfZGllIChwYXJ0X2RpZSwgYWJi cmV2LCBieXRlc19yZWFkLCBhYmZkLAotCQkJCSAgIGJ1ZmZlciwgaW5mb19w dHIsIGN1KTsKKyAgICAgIGluZm9fcHRyID0gcmVhZF9wYXJ0aWFsX2RpZSAo cmVhZGVyLCBwYXJ0X2RpZSwgYWJicmV2LCBieXRlc19yZWFkLAorCQkJCSAg IGluZm9fcHRyKTsKIAogICAgICAgLyogVGhpcyB0d28tcGFzcyBhbGdvcml0 aG0gZm9yIHByb2Nlc3NpbmcgcGFydGlhbCBzeW1ib2xzIGhhcyBhCiAJIGhp Z2ggY29zdCBpbiBjYWNoZSBwcmVzc3VyZS4gIFRodXMsIGhhbmRsZSBzb21l IHNpbXBsZSBjYXNlcwpAQCAtOTc3Miw3ICs5ODM3LDcgQEAgbG9hZF9wYXJ0 aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKgogCQkJCSBWQVJfRE9N QUlOLCBMT0NfVFlQRURFRiwKIAkJCQkgJm9iamZpbGUtPnN0YXRpY19wc3lt Ym9scywKIAkJCQkgMCwgKENPUkVfQUREUikgMCwgY3UtPmxhbmd1YWdlLCBv YmpmaWxlKTsKLQkgIGluZm9fcHRyID0gbG9jYXRlX3BkaV9zaWJsaW5nIChw YXJ0X2RpZSwgYnVmZmVyLCBpbmZvX3B0ciwgYWJmZCwgY3UpOworCSAgaW5m b19wdHIgPSBsb2NhdGVfcGRpX3NpYmxpbmcgKHJlYWRlciwgcGFydF9kaWUs IGluZm9fcHRyKTsKIAkgIGNvbnRpbnVlOwogCX0KIApAQCAtOTgxMiw3ICs5 ODc3LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5 dGUgKgogCQkJCSA6ICZvYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMsCiAJCQkJ IDAsIChDT1JFX0FERFIpIDAsIGN1LT5sYW5ndWFnZSwgb2JqZmlsZSk7CiAK LQkgIGluZm9fcHRyID0gbG9jYXRlX3BkaV9zaWJsaW5nIChwYXJ0X2RpZSwg YnVmZmVyLCBpbmZvX3B0ciwgYWJmZCwgY3UpOworCSAgaW5mb19wdHIgPSBs b2NhdGVfcGRpX3NpYmxpbmcgKHJlYWRlciwgcGFydF9kaWUsIGluZm9fcHRy KTsKIAkgIGNvbnRpbnVlOwogCX0KIApAQCAtOTkwNSw3ICs5OTcwLDcgQEAg bG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKgogCX0K IAogICAgICAgLyogT3RoZXJ3aXNlIHdlIHNraXAgdG8gdGhlIG5leHQgc2li bGluZywgaWYgYW55LiAgKi8KLSAgICAgIGluZm9fcHRyID0gbG9jYXRlX3Bk aV9zaWJsaW5nIChsYXN0X2RpZSwgYnVmZmVyLCBpbmZvX3B0ciwgYWJmZCwg Y3UpOworICAgICAgaW5mb19wdHIgPSBsb2NhdGVfcGRpX3NpYmxpbmcgKHJl YWRlciwgbGFzdF9kaWUsIGluZm9fcHRyKTsKIAogICAgICAgLyogQmFjayB0 byB0aGUgdG9wLCBkbyBpdCBhZ2Fpbi4gICovCiAgICAgfQpAQCAtOTkxNCwx MyArOTk3OSwxNCBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBn ZGJfYnl0ZSAqCiAvKiBSZWFkIGEgbWluaW1hbCBhbW91bnQgb2YgaW5mb3Jt YXRpb24gaW50byB0aGUgbWluaW1hbCBkaWUgc3RydWN0dXJlLiAgKi8KIAog c3RhdGljIGdkYl9ieXRlICoKLXJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBw YXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKLQkJICBzdHJ1Y3QgYWJicmV2 X2luZm8gKmFiYnJldiwKLQkJICB1bnNpZ25lZCBpbnQgYWJicmV2X2xlbiwg YmZkICphYmZkLAotCQkgIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICpp bmZvX3B0ciwKLQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK3JlYWRfcGFy dGlhbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFk ZXIsCisJCSAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAor CQkgIHN0cnVjdCBhYmJyZXZfaW5mbyAqYWJicmV2LCB1bnNpZ25lZCBpbnQg YWJicmV2X2xlbiwKKwkJICBnZGJfYnl0ZSAqaW5mb19wdHIpCiB7CisgIHN0 cnVjdCBkd2FyZjJfY3UgKmN1ID0gcmVhZGVyLT5jdTsKICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKKyAgZ2RiX2J5dGUgKmJ1 ZmZlciA9IHJlYWRlci0+YnVmZmVyOwogICB1bnNpZ25lZCBpbnQgaTsKICAg c3RydWN0IGF0dHJpYnV0ZSBhdHRyOwogICBpbnQgaGFzX2xvd19wY19hdHRy ID0gMDsKQEAgLTk5NDAsNyArMTAwMDYsNyBAQCByZWFkX3BhcnRpYWxfZGll IChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mCiAKICAgZm9yIChpID0gMDsgaSA8 IGFiYnJldi0+bnVtX2F0dHJzOyArK2kpCiAgICAgewotICAgICAgaW5mb19w dHIgPSByZWFkX2F0dHJpYnV0ZSAoJmF0dHIsICZhYmJyZXYtPmF0dHJzW2ld LCBhYmZkLCBpbmZvX3B0ciwgY3UpOworICAgICAgaW5mb19wdHIgPSByZWFk X2F0dHJpYnV0ZSAocmVhZGVyLCAmYXR0ciwgJmFiYnJldi0+YXR0cnNbaV0s IGluZm9fcHRyKTsKIAogICAgICAgLyogU3RvcmUgdGhlIGRhdGEgaWYgaXQg aXMgb2YgYW4gYXR0cmlidXRlIHdlIHdhbnQgdG8ga2VlcCBpbiBhCiAgICAg ICAgICBwYXJ0aWFsIHN5bWJvbCB0YWJsZS4gICovCkBAIC0xMDE1NSw0MiAr MTAyMjEsMTcgQEAgZmluZF9wYXJ0aWFsX2RpZSAoc2VjdF9vZmZzZXQgb2Zm c2V0LCBzdAogICAgICAgcGQgPSBmaW5kX3BhcnRpYWxfZGllX2luX2NvbXBf dW5pdCAob2Zmc2V0LCBwZXJfY3UtPmN1KTsKICAgICB9CiAKKyAgLyogSWYg d2UgZGlkbid0IGZpbmQgaXQsIGFuZCBub3QgYWxsIGRpZXMgaGF2ZSBiZWVu IGxvYWRlZCwKKyAgICAgbG9hZCB0aGVtIGFsbCBhbmQgdHJ5IGFnYWluLiAg Ki8KKwogICBpZiAocGQgPT0gTlVMTCAmJiBwZXJfY3UtPmxvYWRfYWxsX2Rp ZXMgPT0gMCkKICAgICB7Ci0gICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKLSAgICAgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvIGNvbXBfdW5pdF9k aWU7Ci0gICAgICBzdHJ1Y3QgYWJicmV2X2luZm8gKmFiYnJldjsKLSAgICAg IHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotICAgICAgY2hhciAqaW5mb19w dHI7Ci0gICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjOwor ICAgICAgLyogRklYTUU6IFRoZSB0ZXN0c3VpdGUgZG9lc24ndCB0cmlnZ2Vy IHRoaXMgY29kZSBwYXRoLgorCSBodHRwOi8vc291cmNld2FyZS5vcmcvYnVn emlsbGEvc2hvd19idWcuY2dpP2lkPTEzOTYxICAqLwogCisgICAgICBmcmVl X29uZV9jYWNoZWRfY29tcF91bml0IChwZXJfY3UpOwogICAgICAgcGVyX2N1 LT5sb2FkX2FsbF9kaWVzID0gMTsKLQotICAgICAgaWYgKHBlcl9jdS0+ZGVi dWdfdHlwZXNfc2VjdGlvbikKLQlzZWMgPSBwZXJfY3UtPmRlYnVnX3R5cGVz X3NlY3Rpb247Ci0gICAgICBlbHNlCi0Jc2VjID0gJmR3YXJmMl9wZXJfb2Jq ZmlsZS0+aW5mbzsKLQotICAgICAgLyogUmUtcmVhZCB0aGUgRElFcywgdGhp cyB0aW1lIHJlYWRpbmcgYWxsIG9mIHRoZW0uCi0JIE5PVEU6IFdlIGRvbid0 IGRpc2NhcmQgdGhlIHByZXZpb3VzIHNldCBvZiBESUVzLgotCSBUaGlzIGRv ZXNuJ3QgaGFwcGVuIHZlcnkgb2Z0ZW4gc28gaXQncyAoaG9wZWZ1bGx5KSBu b3QgYSBwcm9ibGVtLiAgKi8KLSAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFu dXAgKG51bGxfY2xlYW51cCwgMCk7Ci0gICAgICBpZiAocGVyX2N1LT5jdS0+ ZHdhcmYyX2FiYnJldnMgPT0gTlVMTCkKLQl7Ci0JICBkd2FyZjJfcmVhZF9h YmJyZXZzIChwZXJfY3UtPmN1KTsKLQkgIG1ha2VfY2xlYW51cCAoZHdhcmYy X2ZyZWVfYWJicmV2X3RhYmxlLCBwZXJfY3UtPmN1KTsKLQl9Ci0gICAgICBp bmZvX3B0ciA9IChzZWMtPmJ1ZmZlcgotCQkgICsgcGVyX2N1LT5jdS0+aGVh ZGVyLm9mZnNldC5zZWN0X29mZgotCQkgICsgcGVyX2N1LT5jdS0+aGVhZGVy LmZpcnN0X2RpZV9vZmZzZXQuY3Vfb2ZmKTsKLSAgICAgIGFiYnJldiA9IHBl ZWtfZGllX2FiYnJldiAoaW5mb19wdHIsICZieXRlc19yZWFkLCBwZXJfY3Ut PmN1KTsKLSAgICAgIGluZm9fcHRyID0gcmVhZF9wYXJ0aWFsX2RpZSAoJmNv bXBfdW5pdF9kaWUsIGFiYnJldiwgYnl0ZXNfcmVhZCwKLQkJCQkgICBvYmpm aWxlLT5vYmZkLCBzZWMtPmJ1ZmZlciwgaW5mb19wdHIsCi0JCQkJICAgcGVy X2N1LT5jdSk7Ci0gICAgICBpZiAoY29tcF91bml0X2RpZS5oYXNfY2hpbGRy ZW4pCi0JbG9hZF9wYXJ0aWFsX2RpZXMgKG9iamZpbGUtPm9iZmQsIHNlYy0+ YnVmZmVyLCBpbmZvX3B0ciwgMCwKLQkJCSAgIHBlcl9jdS0+Y3UpOwotICAg ICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgICAgbG9hZF9wYXJ0aWFs X2NvbXBfdW5pdCAocGVyX2N1KTsKIAogICAgICAgcGQgPSBmaW5kX3BhcnRp YWxfZGllX2luX2NvbXBfdW5pdCAob2Zmc2V0LCBwZXJfY3UtPmN1KTsKICAg ICB9CkBAIC0xMDM0MSwxMCArMTAzODIsMTIgQEAgZml4dXBfcGFydGlhbF9k aWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbgogLyogUmVhZCBhbiBhdHRyaWJ1 dGUgdmFsdWUgZGVzY3JpYmVkIGJ5IGFuIGF0dHJpYnV0ZSBmb3JtLiAgKi8K IAogc3RhdGljIGdkYl9ieXRlICoKLXJlYWRfYXR0cmlidXRlX3ZhbHVlIChz dHJ1Y3QgYXR0cmlidXRlICphdHRyLCB1bnNpZ25lZCBmb3JtLAotCQkgICAg ICBiZmQgKmFiZmQsIGdkYl9ieXRlICppbmZvX3B0ciwKLQkJICAgICAgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCityZWFkX2F0dHJpYnV0ZV92YWx1ZSAoY29u c3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKKwkJICAgICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgdW5zaWduZWQgZm9ybSwKKwkJICAg ICAgZ2RiX2J5dGUgKmluZm9fcHRyKQogeworICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSA9IHJlYWRlci0+Y3U7CisgIGJmZCAqYWJmZCA9IHJlYWRlci0+YWJm ZDsKICAgc3RydWN0IGNvbXBfdW5pdF9oZWFkICpjdV9oZWFkZXIgPSAmY3Ut PmhlYWRlcjsKICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CiAgIHN0cnVj dCBkd2FyZl9ibG9jayAqYmxrOwpAQCAtMTA0NzksNyArMTA1MjIsNyBAQCBy ZWFkX2F0dHJpYnV0ZV92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqCiAgICAg Y2FzZSBEV19GT1JNX2luZGlyZWN0OgogICAgICAgZm9ybSA9IHJlYWRfdW5z aWduZWRfbGViMTI4IChhYmZkLCBpbmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwog ICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAgICAgIGluZm9fcHRy ID0gcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKGF0dHIsIGZvcm0sIGFiZmQsIGlu Zm9fcHRyLCBjdSk7CisgICAgICBpbmZvX3B0ciA9IHJlYWRfYXR0cmlidXRl X3ZhbHVlIChyZWFkZXIsIGF0dHIsIGZvcm0sIGluZm9fcHRyKTsKICAgICAg IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBlcnJvciAoXygiRHdhcmYg RXJyb3I6IENhbm5vdCBoYW5kbGUgJXMgaW4gRFdBUkYgcmVhZGVyIFtpbiBt b2R1bGUgJXNdIiksCkBAIC0xMDUxMCwxMSArMTA1NTMsMTIgQEAgcmVhZF9h dHRyaWJ1dGVfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKgogLyogUmVhZCBh biBhdHRyaWJ1dGUgZGVzY3JpYmVkIGJ5IGFuIGFiYnJldmlhdGVkIGF0dHJp YnV0ZS4gICovCiAKIHN0YXRpYyBnZGJfYnl0ZSAqCi1yZWFkX2F0dHJpYnV0 ZSAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGF0dHJfYWJicmV2 ICphYmJyZXYsCi0JCWJmZCAqYWJmZCwgZ2RiX2J5dGUgKmluZm9fcHRyLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK3JlYWRfYXR0cmlidXRlIChjb25zdCBz dHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQlzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3QgYXR0cl9hYmJyZXYgKmFiYnJldiwKKwkJ Z2RiX2J5dGUgKmluZm9fcHRyKQogewogICBhdHRyLT5uYW1lID0gYWJicmV2 LT5uYW1lOwotICByZXR1cm4gcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKGF0dHIs IGFiYnJldi0+Zm9ybSwgYWJmZCwgaW5mb19wdHIsIGN1KTsKKyAgcmV0dXJu IHJlYWRfYXR0cmlidXRlX3ZhbHVlIChyZWFkZXIsIGF0dHIsIGFiYnJldi0+ Zm9ybSwgaW5mb19wdHIpOwogfQogCiAvKiBSZWFkIGR3YXJmIGluZm9ybWF0 aW9uIGZyb20gYSBidWZmZXIuICAqLwpAQCAtMTI0NDQsNyArMTI0ODgsNiBA QCBsb29rdXBfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCiAg IGVsc2UgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9yZWZfc2lnOCkKICAg ICB7CiAgICAgICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICpzaWdfdHlwZSA9 IERXX1NJR05BVFVSRURfVFlQRSAoYXR0cik7Ci0gICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICpzaWdfY3U7CiAgICAgICBzZWN0X29mZnNldCBvZmZzZXQ7CiAK ICAgICAgIC8qIHNpZ190eXBlIHdpbGwgYmUgTlVMTCBpZiB0aGUgc2lnbmF0 dXJlZCB0eXBlIGlzIG1pc3NpbmcgZnJvbQpAQCAtMTQ2MDUsNiArMTQ2NDgs NyBAQCBsb2FkX2Z1bGxfdHlwZV91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9j CiAgICAgIGFzc2VydCBkb2Vzbid0IHJlcXVpcmUgYWxsIHRoaXMgY2x1bXNp bmVzcy4gICovCiAgIHNpZ190eXBlID0gbG9va3VwX3NpZ25hdHVyZWRfdHlw ZV9hdF9vZmZzZXQgKG9iamZpbGUsIHNlY3QsIG9mZnNldCk7CiAKKyAgZ2Ri X2Fzc2VydCAoJnNpZ190eXBlLT5wZXJfY3UgPT0gcGVyX2N1KTsKICAgZ2Ri X2Fzc2VydCAoc2lnX3R5cGUtPnBlcl9jdS5jdSA9PSBOVUxMKTsKIAogICBy ZWFkX3NpZ25hdHVyZWRfdHlwZSAoc2lnX3R5cGUpOwpAQCAtMTQ2MTIsNjYg KzE0NjU2LDU2IEBAIGxvYWRfZnVsbF90eXBlX3VuaXQgKHN0cnVjdCBkd2Fy ZjJfcGVyX2MKICAgZ2RiX2Fzc2VydCAoc2lnX3R5cGUtPnBlcl9jdS5jdSAh PSBOVUxMKTsKIH0KIAotLyogUmVhZCBpbiBhIHNpZ25hdHVyZWQgdHlwZSBh bmQgYnVpbGQgaXRzIENVIGFuZCBESUVzLiAgKi8KKy8qIGRpZV9yZWFkZXJf ZnVuYyBmb3IgcmVhZF9zaWduYXR1cmVkX3R5cGUuCisgICBUaGlzIGlzIGlk ZW50aWNhbCB0byBsb2FkX2Z1bGxfY29tcF91bml0X3JlYWRlciwKKyAgIGJ1 dCBpcyBrZXB0IHNlcGFyYXRlIGZvciBub3cuICAqLwogCiBzdGF0aWMgdm9p ZAotcmVhZF9zaWduYXR1cmVkX3R5cGUgKHN0cnVjdCBzaWduYXR1cmVkX3R5 cGUgKnNpZ190eXBlKQorcmVhZF9zaWduYXR1cmVkX3R5cGVfcmVhZGVyIChj b25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorCQkJICAg ICBnZGJfYnl0ZSAqaW5mb19wdHIsCisJCQkgICAgIHN0cnVjdCBkaWVfaW5m byAqY29tcF91bml0X2RpZSwKKwkJCSAgICAgaW50IGhhc19jaGlsZHJlbiwK KwkJCSAgICAgdm9pZCAqZGF0YSkKIHsKLSAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBzaWdfdHlwZS0+cGVyX2N1Lm9iamZpbGU7Ci0gIGdkYl9ieXRl ICp0eXBlc19wdHI7Ci0gIHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRl cl9zcGVjczsKLSAgc3RydWN0IGR3YXJmMl9jdSAqY3U7Ci0gIFVMT05HRVNU IHNpZ25hdHVyZTsKLSAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG8sICpmcmVl X2N1X2NsZWFudXA7Ci0gIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpz ZWN0aW9uID0gc2lnX3R5cGUtPnBlcl9jdS5kZWJ1Z190eXBlc19zZWN0aW9u OwotCi0gIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIHNlY3Rpb24p OwotICB0eXBlc19wdHIgPSBzZWN0aW9uLT5idWZmZXIgKyBzaWdfdHlwZS0+ cGVyX2N1Lm9mZnNldC5zZWN0X29mZjsKLQotICBnZGJfYXNzZXJ0IChzaWdf dHlwZS0+cGVyX2N1LmN1ID09IE5VTEwpOwotCi0gIGN1ID0geG1hbGxvYyAo c2l6ZW9mICgqY3UpKTsKLSAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgJnNp Z190eXBlLT5wZXJfY3UpOwotCi0gIC8qIElmIGFuIGVycm9yIG9jY3VycyB3 aGlsZSBsb2FkaW5nLCByZWxlYXNlIG91ciBzdG9yYWdlLiAgKi8KLSAgZnJl ZV9jdV9jbGVhbnVwID0gbWFrZV9jbGVhbnVwIChmcmVlX2hlYXBfY29tcF91 bml0LCBjdSk7Ci0KLSAgdHlwZXNfcHRyID0gcmVhZF9hbmRfY2hlY2tfdHlw ZV91bml0X2hlYWQgKCZjdS0+aGVhZGVyLCBzZWN0aW9uLCB0eXBlc19wdHIs Ci0JCQkJCSAgICAgJnNpZ25hdHVyZSwgTlVMTCk7Ci0gIGdkYl9hc3NlcnQg KHNpZ25hdHVyZSA9PSBzaWdfdHlwZS0+c2lnbmF0dXJlKTsKLQotICBjdS0+ ZGllX2hhc2gKLSAgICA9IGh0YWJfY3JlYXRlX2FsbG9jX2V4IChjdS0+aGVh ZGVyLmxlbmd0aCAvIDEyLAotCQkJICAgIGRpZV9oYXNoLAotCQkJICAgIGRp ZV9lcSwKLQkJCSAgICBOVUxMLAotCQkJICAgICZjdS0+Y29tcF91bml0X29i c3RhY2ssCi0JCQkgICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAotCQkJ ICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7Ci0KLSAgZHdhcmYyX3Jl YWRfYWJicmV2cyAoY3UpOwotICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChk d2FyZjJfZnJlZV9hYmJyZXZfdGFibGUsIGN1KTsKKyAgc3RydWN0IGR3YXJm Ml9jdSAqY3UgPSByZWFkZXItPmN1OworICBzdHJ1Y3QgYXR0cmlidXRlICph dHRyOwogCi0gIGluaXRfY3VfZGllX3JlYWRlciAoJnJlYWRlcl9zcGVjcywg Y3UpOworICBnZGJfYXNzZXJ0IChjdS0+ZGllX2hhc2ggPT0gTlVMTCk7Cisg IGN1LT5kaWVfaGFzaCA9CisgICAgaHRhYl9jcmVhdGVfYWxsb2NfZXggKGN1 LT5oZWFkZXIubGVuZ3RoIC8gMTIsCisJCQkgIGRpZV9oYXNoLAorCQkJICBk aWVfZXEsCisJCQkgIE5VTEwsCisJCQkgICZjdS0+Y29tcF91bml0X29ic3Rh Y2ssCisJCQkgIGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwKKwkJCSAgZHVt bXlfb2JzdGFja19kZWFsbG9jYXRlKTsKIAotICBjdS0+ZGllcyA9IHJlYWRf ZGllX2FuZF9jaGlsZHJlbiAoJnJlYWRlcl9zcGVjcywgdHlwZXNfcHRyLCAm dHlwZXNfcHRyLAotCQkJCSAgICBOVUxMIC8qcGFyZW50Ki8pOworICBpZiAo aGFzX2NoaWxkcmVuKQorICAgIGNvbXBfdW5pdF9kaWUtPmNoaWxkID0gcmVh ZF9kaWVfYW5kX3NpYmxpbmdzIChyZWFkZXIsIGluZm9fcHRyLAorCQkJCQkJ ICAmaW5mb19wdHIsIGNvbXBfdW5pdF9kaWUpOworICBjdS0+ZGllcyA9IGNv bXBfdW5pdF9kaWU7CisgIC8qIGNvbXBfdW5pdF9kaWUgaXMgbm90IHN0b3Jl ZCBpbiBkaWVfaGFzaCwgbm8gbmVlZC4gICovCiAKICAgLyogV2UgdHJ5IG5v dCB0byByZWFkIGFueSBhdHRyaWJ1dGVzIGluIHRoaXMgZnVuY3Rpb24sIGJl Y2F1c2Ugbm90CiAgICAgIGFsbCBDVXMgbmVlZGVkIGZvciByZWZlcmVuY2Vz IGhhdmUgYmVlbiBsb2FkZWQgeWV0LCBhbmQgc3ltYm9sCiAgICAgIHRhYmxl IHByb2Nlc3NpbmcgaXNuJ3QgaW5pdGlhbGl6ZWQuICBCdXQgd2UgaGF2ZSB0 byBzZXQgdGhlIENVIGxhbmd1YWdlLAotICAgICBvciB3ZSB3b24ndCBiZSBh YmxlIHRvIGJ1aWxkIHR5cGVzIGNvcnJlY3RseS4gICovCisgICAgIG9yIHdl IHdvbid0IGJlIGFibGUgdG8gYnVpbGQgdHlwZXMgY29ycmVjdGx5LgorICAg ICBTaW1pbGFybHksIGlmIHdlIGRvIG5vdCByZWFkIHRoZSBwcm9kdWNlciwg d2UgY2FuIG5vdCBhcHBseQorICAgICBwcm9kdWNlci1zcGVjaWZpYyBpbnRl cnByZXRhdGlvbi4gICovCiAgIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoY3Us IGN1LT5kaWVzKTsKK30KIAotICBkb19jbGVhbnVwcyAoYmFja190byk7Cisv KiBSZWFkIGluIGEgc2lnbmF0dXJlZCB0eXBlIGFuZCBidWlsZCBpdHMgQ1Ug YW5kIERJRXMuICAqLwogCi0gIC8qIFdlJ3ZlIHN1Y2Nlc3NmdWxseSBhbGxv Y2F0ZWQgdGhpcyBjb21waWxhdGlvbiB1bml0LiAgTGV0IG91ciBjYWxsZXIK LSAgICAgY2xlYW4gaXQgdXAgd2hlbiBmaW5pc2hlZCB3aXRoIGl0LgkgKi8K LSAgZGlzY2FyZF9jbGVhbnVwcyAoZnJlZV9jdV9jbGVhbnVwKTsKK3N0YXRp YyB2b2lkCityZWFkX3NpZ25hdHVyZWRfdHlwZSAoc3RydWN0IHNpZ25hdHVy ZWRfdHlwZSAqc2lnX3R5cGUpCit7CisgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSA9ICZzaWdfdHlwZS0+cGVyX2N1OwogCi0gIC8qIExp bmsgdGhpcyBUVSBpbnRvIHJlYWRfaW5fY2hhaW4uICAqLwotICBzaWdfdHlw ZS0+cGVyX2N1LmN1LT5yZWFkX2luX2NoYWluID0gZHdhcmYyX3Blcl9vYmpm aWxlLT5yZWFkX2luX2NoYWluOwotICBkd2FyZjJfcGVyX29iamZpbGUtPnJl YWRfaW5fY2hhaW4gPSAmc2lnX3R5cGUtPnBlcl9jdTsKKyAgZ2RiX2Fzc2Vy dCAocGVyX2N1LT5kZWJ1Z190eXBlc19zZWN0aW9uKTsKKyAgZ2RiX2Fzc2Vy dCAocGVyX2N1LT5jdSA9PSBOVUxMKTsKKworICBpbml0X3R1X2FuZF9yZWFk X2RpZXMgKHBlcl9jdSwgMSwgcmVhZF9zaWduYXR1cmVkX3R5cGVfcmVhZGVy LCBOVUxMKTsKIH0KIAogLyogRGVjb2RlIHNpbXBsZSBsb2NhdGlvbiBkZXNj cmlwdGlvbnMuCkBAIC0xNTgzNyw3ICsxNTg3MSw2IEBAIGF0dHJfZm9ybV9p c19zZWN0aW9uX29mZnNldCAoc3RydWN0IGF0dHIKIAkgIHx8IGF0dHItPmZv cm0gPT0gRFdfRk9STV9zZWNfb2Zmc2V0KTsKIH0KIAotCiAvKiBSZXR1cm4g bm9uLXplcm8gaWYgQVRUUidzIHZhbHVlIGZhbGxzIGluIHRoZSAnY29uc3Rh bnQnIGNsYXNzLCBvcgogICAgemVybyBvdGhlcndpc2UuICBXaGVuIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB5b3UgY2FuIGFwcGx5CiAgICBkd2Fy ZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgdG8gaXQuCkBAIC0xNjExNyw2 ICsxNjE1MCwxMCBAQCBwcmVwYXJlX29uZV9jb21wX3VuaXQgKHN0cnVjdCBk d2FyZjJfY3UgCiAgICAgICBjdS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZV9taW5p bWFsOwogICAgICAgY3UtPmxhbmd1YWdlX2RlZm4gPSBsYW5ndWFnZV9kZWYg KGN1LT5sYW5ndWFnZSk7CiAgICAgfQorCisgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoY29tcF91bml0X2RpZSwgRFdfQVRfcHJvZHVjZXIsIGN1KTsKKyAgaWYg KGF0dHIpCisgICAgY3UtPnByb2R1Y2VyID0gRFdfU1RSSU5HIChhdHRyKTsK IH0KIAogLyogUmVsZWFzZSBvbmUgY2FjaGVkIGNvbXBpbGF0aW9uIHVuaXQs IENVLiAgV2UgdW5saW5rIGl0IGZyb20gdGhlIHRyZWUKQEAgLTE2MTQxLDEw ICsxNjE3OCw3IEBAIGZyZWVfaGVhcF9jb21wX3VuaXQgKHZvaWQgKmRhdGEp CiAKIC8qIFRoaXMgY2xlYW51cCBmdW5jdGlvbiBpcyBwYXNzZWQgdGhlIGFk ZHJlc3Mgb2YgYSBkd2FyZjJfY3Ugb24gdGhlIHN0YWNrCiAgICB3aGVuIHdl J3JlIGZpbmlzaGVkIHdpdGggaXQuICBXZSBjYW4ndCBmcmVlIHRoZSBwb2lu dGVyIGl0c2VsZiwgYnV0IGJlCi0gICBzdXJlIHRvIHVubGluayBpdCBmcm9t IHRoZSBjYWNoZS4gIEFsc28gcmVsZWFzZSBhbnkgYXNzb2NpYXRlZCBzdG9y YWdlCi0gICBhbmQgcGVyZm9ybSBjYWNoZSBtYWludGVuYW5jZS4KLQotICAg T25seSB1c2VkIGR1cmluZyBwYXJ0aWFsIHN5bWJvbCBwYXJzaW5nLiAgKi8K KyAgIHN1cmUgdG8gdW5saW5rIGl0IGZyb20gdGhlIGNhY2hlLiAgQWxzbyBy ZWxlYXNlIGFueSBhc3NvY2lhdGVkIHN0b3JhZ2UuICAqLwogCiBzdGF0aWMg dm9pZAogZnJlZV9zdGFja19jb21wX3VuaXQgKHZvaWQgKmRhdGEpCkBAIC0x NjE1NywxMiArMTYxOTEsNiBAQCBmcmVlX3N0YWNrX2NvbXBfdW5pdCAodm9p ZCAqZGF0YSkKIAogICBvYnN0YWNrX2ZyZWUgKCZjdS0+Y29tcF91bml0X29i c3RhY2ssIE5VTEwpOwogICBjdS0+cGFydGlhbF9kaWVzID0gTlVMTDsKLQot ICAvKiBUaGUgcHJldmlvdXMgY29kZSBvbmx5IGRpZCB0aGlzIGlmIHBlcl9j dSAhPSBOVUxMLgotICAgICBCdXQgdGhhdCB3b3VsZCBhbHdheXMgc3VjY2Vl ZCwgc28gbm93IHdlIGp1c3QgdW5jb25kaXRpb25hbGx5IGRvCi0gICAgIHRo ZSBhZ2luZy4gIFRoaXMgc2VlbXMgbGlrZSB0aGUgd3JvbmcgcGxhY2UgdG8g ZG8gc3VjaCBhZ2luZywKLSAgICAgYnV0IGNsZWFuaW5nIHRoYXQgdXAgaXMg bGVmdCBmb3IgbGF0ZXIuICAqLwotICBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMg KCk7CiB9CiAKIC8qIEZyZWUgYWxsIGNhY2hlZCBjb21waWxhdGlvbiB1bml0 cy4gICovCkBAIC0xNjIyOCw3ICsxNjI1Niw3IEBAIGFnZV9jYWNoZWRfY29t cF91bml0cyAodm9pZCkKIC8qIFJlbW92ZSBhIHNpbmdsZSBjb21waWxhdGlv biB1bml0IGZyb20gdGhlIGNhY2hlLiAgKi8KIAogc3RhdGljIHZvaWQKLWZy ZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKnRhcmdldF9jdSkKK2Zy ZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnRhcmdldF9wZXJfY3UpCiB7CiAgIHN0cnVjdCBkd2FyZjJfcGVy X2N1X2RhdGEgKnBlcl9jdSwgKipsYXN0X2NoYWluOwogCkBAIC0xNjI0MCw5 ICsxNjI2OCwxMCBAQCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh2b2lk ICp0YXJnZXRfCiAKICAgICAgIG5leHRfY3UgPSBwZXJfY3UtPmN1LT5yZWFk X2luX2NoYWluOwogCi0gICAgICBpZiAocGVyX2N1LT5jdSA9PSB0YXJnZXRf Y3UpCisgICAgICBpZiAocGVyX2N1ID09IHRhcmdldF9wZXJfY3UpCiAJewog CSAgZnJlZV9oZWFwX2NvbXBfdW5pdCAocGVyX2N1LT5jdSk7CisJICBwZXJf Y3UtPmN1ID0gTlVMTDsKIAkgICpsYXN0X2NoYWluID0gbmV4dF9jdTsKIAkg IGJyZWFrOwogCX0KQEAgLTE2MjcyLDM1ICsxNjMwMSw0NCBAQCBkd2FyZjJf ZnJlZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAgIC8qIEV2ZXJ5 dGhpbmcgZWxzZSBzaG91bGQgYmUgb24gdGhlIG9iamZpbGUgb2JzdGFjay4g ICovCiB9CiAKLS8qIEEgcGFpciBvZiBESUUgb2Zmc2V0IGFuZCBHREIgdHlw ZSBwb2ludGVyLiAgV2Ugc3RvcmUgdGhlc2UKLSAgIGluIGEgaGFzaCB0YWJs ZSBzZXBhcmF0ZSBmcm9tIHRoZSBESUVzLCBhbmQgcHJlc2VydmUgdGhlbQot ICAgd2hlbiB0aGUgRElFcyBhcmUgZmx1c2hlZCBvdXQgb2YgY2FjaGUuICAq LworLyogQSBzZXQgb2YgQ1UgInBlcl9jdSIgcG9pbnRlciwgRElFIG9mZnNl dCwgYW5kIEdEQiB0eXBlIHBvaW50ZXIuCisgICBXZSBzdG9yZSB0aGVzZSBp biBhIGhhc2ggdGFibGUgc2VwYXJhdGUgZnJvbSB0aGUgRElFcywgYW5kIHBy ZXNlcnZlIHRoZW0KKyAgIHdoZW4gdGhlIERJRXMgYXJlIGZsdXNoZWQgb3V0 IG9mIGNhY2hlLgogCi1zdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZQor ICAgVGhlIENVICJwZXJfY3UiIHBvaW50ZXIgaXMgbmVlZGVkIGJlY2F1c2Ug b2Zmc2V0IGFsb25lIGlzIG5vdCBlbm91Z2ggdG8KKyAgIHVuaXF1ZWx5IGlk ZW50aWZ5IHRoZSB0eXBlLiAgQSBmaWxlIG1heSBoYXZlIG11bHRpcGxlIC5k ZWJ1Z190eXBlcyBzZWN0aW9ucy4KKyAgIFdlIGhhdmUgdG8gdXNlIHNvbWV0 aGluZyBpbiBkd2FyZjJfcGVyX2N1X2RhdGEgKG9yIHRoZSBwb2ludGVyIHRv IGl0KQorICAgYmVjYXVzZSB3ZSBjYW4gZW50ZXIgdGhlIGxvb2t1cCByb3V0 aW5lLCBnZXRfZGllX3R5cGVfYXRfb2Zmc2V0LCBmcm9tCisgICBvdXRzaWRl IHRoaXMgZmlsZSwgYW5kIHRodXMgd29uJ3QgbmVjZXNzYXJpbHkgaGF2ZSBQ RVJfQ1UtPmN1LgorICAgRm9ydHVuYXRlbHksIFBFUl9DVSBpcyBzdGFibGUg Zm9yIHRoZSBsaWZlIG9mIHRoZSBvYmpmaWxlLiAgKi8KKworc3RydWN0IGR3 YXJmMl9wZXJfY3Vfb2Zmc2V0X2FuZF90eXBlCiB7CisgIGNvbnN0IHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKICAgc2VjdF9vZmZzZXQg b2Zmc2V0OwogICBzdHJ1Y3QgdHlwZSAqdHlwZTsKIH07CiAKLS8qIEhhc2gg ZnVuY3Rpb24gZm9yIGEgZHdhcmYyX29mZnNldF9hbmRfdHlwZS4gICovCisv KiBIYXNoIGZ1bmN0aW9uIGZvciBhIGR3YXJmMl9wZXJfY3Vfb2Zmc2V0X2Fu ZF90eXBlLiAgKi8KIAogc3RhdGljIGhhc2h2YWxfdAotb2Zmc2V0X2FuZF90 eXBlX2hhc2ggKGNvbnN0IHZvaWQgKml0ZW0pCitwZXJfY3Vfb2Zmc2V0X2Fu ZF90eXBlX2hhc2ggKGNvbnN0IHZvaWQgKml0ZW0pCiB7Ci0gIGNvbnN0IHN0 cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICpvZnMgPSBpdGVtOworICBj b25zdCBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKm9m cyA9IGl0ZW07CiAKLSAgcmV0dXJuIG9mcy0+b2Zmc2V0LnNlY3Rfb2ZmOwor ICByZXR1cm4gKHVpbnRwdHJfdCkgb2ZzLT5wZXJfY3UgKyBvZnMtPm9mZnNl dC5zZWN0X29mZjsKIH0KIAotLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIGEg ZHdhcmYyX29mZnNldF9hbmRfdHlwZS4gICovCisvKiBFcXVhbGl0eSBmdW5j dGlvbiBmb3IgYSBkd2FyZjJfcGVyX2N1X29mZnNldF9hbmRfdHlwZS4gICov CiAKIHN0YXRpYyBpbnQKLW9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9p ZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorcGVyX2N1X29m ZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0 IHZvaWQgKml0ZW1fcmhzKQogewotICBjb25zdCBzdHJ1Y3QgZHdhcmYyX29m ZnNldF9hbmRfdHlwZSAqb2ZzX2xocyA9IGl0ZW1fbGhzOwotICBjb25zdCBz dHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqb2ZzX3JocyA9IGl0ZW1f cmhzOworICBjb25zdCBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5k X3R5cGUgKm9mc19saHMgPSBpdGVtX2xoczsKKyAgY29uc3Qgc3RydWN0IGR3 YXJmMl9wZXJfY3Vfb2Zmc2V0X2FuZF90eXBlICpvZnNfcmhzID0gaXRlbV9y aHM7CiAKLSAgcmV0dXJuIG9mc19saHMtPm9mZnNldC5zZWN0X29mZiA9PSBv ZnNfcmhzLT5vZmZzZXQuc2VjdF9vZmY7CisgIHJldHVybiAob2ZzX2xocy0+ cGVyX2N1ID09IG9mc19yaHMtPnBlcl9jdQorCSAgJiYgb2ZzX2xocy0+b2Zm c2V0LnNlY3Rfb2ZmID09IG9mc19yaHMtPm9mZnNldC5zZWN0X29mZik7CiB9 CiAKIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZ UEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaApAQCAtMTYzMjQsOSArMTYzNjIs OCBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhz CiBzdGF0aWMgc3RydWN0IHR5cGUgKgogc2V0X2RpZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQogewotICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlw ZSAqKnNsb3QsIG9mczsKKyAgc3RydWN0IGR3YXJmMl9wZXJfY3Vfb2Zmc2V0 X2FuZF90eXBlICoqc2xvdCwgb2ZzOwogICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSA9IGN1LT5vYmpmaWxlOwotICBodGFiX3QgKnR5cGVfaGFzaF9wdHI7 CiAKICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRoYXQgdGhlIGdu YXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKICAgICAgaW5pdGlhbGl6ZWQg KGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMg d2hlcmUKQEAgLTE2MzQxLDI4ICsxNjM3OCwyMyBAQCBzZXRfZGllX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1CiAgICAgICAmJiAhSEFWRV9H TkFUX0FVWF9JTkZPICh0eXBlKSkKICAgICBJTklUX0dOQVRfU1BFQ0lGSUMg KHR5cGUpOwogCi0gIGlmIChjdS0+cGVyX2N1LT5kZWJ1Z190eXBlc19zZWN0 aW9uKQotICAgIHR5cGVfaGFzaF9wdHIgPSAmZHdhcmYyX3Blcl9vYmpmaWxl LT5kZWJ1Z190eXBlc190eXBlX2hhc2g7Ci0gIGVsc2UKLSAgICB0eXBlX2hh c2hfcHRyID0gJmR3YXJmMl9wZXJfb2JqZmlsZS0+ZGVidWdfaW5mb190eXBl X2hhc2g7Ci0KLSAgaWYgKCp0eXBlX2hhc2hfcHRyID09IE5VTEwpCisgIGlm IChkd2FyZjJfcGVyX29iamZpbGUtPmRpZV90eXBlX2hhc2ggPT0gTlVMTCkK ICAgICB7Ci0gICAgICAqdHlwZV9oYXNoX3B0cgotCT0gaHRhYl9jcmVhdGVf YWxsb2NfZXggKDEyNywKLQkJCQlvZmZzZXRfYW5kX3R5cGVfaGFzaCwKLQkJ CQlvZmZzZXRfYW5kX3R5cGVfZXEsCi0JCQkJTlVMTCwKLQkJCQkmb2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLAotCQkJCWhhc2h0YWJfb2JzdGFja19hbGxv Y2F0ZSwKLQkJCQlkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworICAgICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID0KKwlodGFiX2Ny ZWF0ZV9hbGxvY19leCAoMTI3LAorCQkJICAgICAgcGVyX2N1X29mZnNldF9h bmRfdHlwZV9oYXNoLAorCQkJICAgICAgcGVyX2N1X29mZnNldF9hbmRfdHlw ZV9lcSwKKwkJCSAgICAgIE5VTEwsCisJCQkgICAgICAmb2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLAorCQkJICAgICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9j YXRlLAorCQkJICAgICAgZHVtbXlfb2JzdGFja19kZWFsbG9jYXRlKTsKICAg ICB9CiAKKyAgb2ZzLnBlcl9jdSA9IGN1LT5wZXJfY3U7CiAgIG9mcy5vZmZz ZXQgPSBkaWUtPm9mZnNldDsKICAgb2ZzLnR5cGUgPSB0eXBlOwotICBzbG90 ID0gKHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqKQotICAgIGh0 YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoKnR5cGVfaGFzaF9wdHIsICZvZnMs IG9mcy5vZmZzZXQuc2VjdF9vZmYsCi0JCQkgICAgICBJTlNFUlQpOworICBz bG90ID0gKHN0cnVjdCBkd2FyZjJfcGVyX2N1X29mZnNldF9hbmRfdHlwZSAq KikKKyAgICBodGFiX2ZpbmRfc2xvdCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5k aWVfdHlwZV9oYXNoLCAmb2ZzLCBJTlNFUlQpOwogICBpZiAoKnNsb3QpCiAg ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogCSAgICAgICBf KCJBIHByb2JsZW0gaW50ZXJuYWwgdG8gR0RCOiBESUUgMHgleCBoYXMgdHlw ZSBhbHJlYWR5IHNldCIpLApAQCAtMTYzNzksMTggKzE2NDExLDE0IEBAIHN0 YXRpYyBzdHJ1Y3QgdHlwZSAqCiBnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChz ZWN0X29mZnNldCBvZmZzZXQsCiAJCQlzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpwZXJfY3UpCiB7Ci0gIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90 eXBlICpzbG90LCBvZnM7Ci0gIGh0YWJfdCB0eXBlX2hhc2g7CisgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X29mZnNldF9hbmRfdHlwZSAqc2xvdCwgb2ZzOwog Ci0gIGlmIChwZXJfY3UtPmRlYnVnX3R5cGVzX3NlY3Rpb24pCi0gICAgdHlw ZV9oYXNoID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5kZWJ1Z190eXBlc190eXBl X2hhc2g7Ci0gIGVsc2UKLSAgICB0eXBlX2hhc2ggPSBkd2FyZjJfcGVyX29i amZpbGUtPmRlYnVnX2luZm9fdHlwZV9oYXNoOwotICBpZiAodHlwZV9oYXNo ID09IE5VTEwpCisgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmRpZV90eXBl X2hhc2ggPT0gTlVMTCkKICAgICByZXR1cm4gTlVMTDsKIAorICBvZnMucGVy X2N1ID0gcGVyX2N1OwogICBvZnMub2Zmc2V0ID0gb2Zmc2V0OwotICBzbG90 ID0gaHRhYl9maW5kX3dpdGhfaGFzaCAodHlwZV9oYXNoLCAmb2ZzLCBvZnMu b2Zmc2V0LnNlY3Rfb2ZmKTsKKyAgc2xvdCA9IGh0YWJfZmluZCAoZHdhcmYy X3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoLCAmb2ZzKTsKICAgaWYgKHNs b3QpCiAgICAgcmV0dXJuIHNsb3QtPnR5cGU7CiAgIGVsc2UK --bcaec51a7ed4cc842704be9c6b16--