From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59F4EC49ED6 for ; Sat, 14 Sep 2019 08:54:19 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1E40920717 for ; Sat, 14 Sep 2019 08:54:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1E40920717 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i93oj-0000R0-4i; Sat, 14 Sep 2019 08:54:05 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i93oh-0000O2-M7 for xen-devel@lists.xenproject.org; Sat, 14 Sep 2019 08:54:03 +0000 X-Inumbo-ID: 0ddb36ef-d6cd-11e9-95c1-12813bfff9fa Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 0ddb36ef-d6cd-11e9-95c1-12813bfff9fa; Sat, 14 Sep 2019 08:53:02 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id A4459B665; Sat, 14 Sep 2019 08:52:59 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Sat, 14 Sep 2019 10:52:19 +0200 Message-Id: <20190914085251.18816-16-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190914085251.18816-1-jgross@suse.com> References: <20190914085251.18816-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v3 15/47] xen/sched: make rt scheduler vcpu agnostic. X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , George Dunlap , Meng Xu , Dario Faggioli MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" U3dpdGNoIHJ0IHNjaGVkdWxlciBjb21wbGV0ZWx5IGZyb20gdmNwdSB0byBzY2hlZF91bml0IHVz YWdlLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0K IHhlbi9jb21tb24vc2NoZWRfcnQuYyB8IDM1NiArKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCsp LCAxODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jIGIv eGVuL2NvbW1vbi9zY2hlZF9ydC5jCmluZGV4IGE0N2NjNTk4YTkuLjdhNzJjZmI4NmMgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfcnQuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMK QEAgLTM2LDcgKzM2LDcgQEAKICAqCiAgKiBNaWdyYXRpb24gY29tcGVuc2F0aW9uIGFuZCByZXNp c3QgbGlrZSBjcmVkaXQyIHRvIGJldHRlciB1c2UgY2FjaGU7CiAgKiBMb2NrIEhvbGRlciBQcm9i bGVtLCB1c2luZyB5aWVsZD8KLSAqIFNlbGYgc3dpdGNoIHByb2JsZW06IFZDUFVzIG9mIHRoZSBz YW1lIGRvbWFpbiBtYXkgcHJlZW1wdCBlYWNoIG90aGVyOworICogU2VsZiBzd2l0Y2ggcHJvYmxl bTogVU5JVHMgb2YgdGhlIHNhbWUgZG9tYWluIG1heSBwcmVlbXB0IGVhY2ggb3RoZXI7CiAgKi8K IAogLyoKQEAgLTQ0LDMwICs0NCwzMCBAQAogICoKICAqIFRoaXMgc2NoZWR1bGVyIGZvbGxvd3Mg dGhlIFByZWVtcHRpdmUgR2xvYmFsIEVhcmxpZXN0IERlYWRsaW5lIEZpcnN0IChFREYpCiAgKiB0 aGVvcnkgaW4gcmVhbC10aW1lIGZpZWxkLgotICogQXQgYW55IHNjaGVkdWxpbmcgcG9pbnQsIHRo ZSBWQ1BVIHdpdGggZWFybGllciBkZWFkbGluZSBoYXMgaGlnaGVyIHByaW9yaXR5LgotICogVGhl IHNjaGVkdWxlciBhbHdheXMgcGlja3MgaGlnaGVzdCBwcmlvcml0eSBWQ1BVIHRvIHJ1biBvbiBh IGZlYXNpYmxlIFBDUFUuCi0gKiBBIFBDUFUgaXMgZmVhc2libGUgaWYgdGhlIFZDUFUgY2FuIHJ1 biBvbiB0aGlzIFBDUFUgYW5kICh0aGUgUENQVSBpcyBpZGxlIG9yCi0gKiBoYXMgYSBsb3dlci1w cmlvcml0eSBWQ1BVIHJ1bm5pbmcgb24gaXQuKQorICogQXQgYW55IHNjaGVkdWxpbmcgcG9pbnQs IHRoZSBVTklUIHdpdGggZWFybGllciBkZWFkbGluZSBoYXMgaGlnaGVyIHByaW9yaXR5LgorICog VGhlIHNjaGVkdWxlciBhbHdheXMgcGlja3MgaGlnaGVzdCBwcmlvcml0eSBVTklUIHRvIHJ1biBv biBhIGZlYXNpYmxlIFBDUFUuCisgKiBBIFBDUFUgaXMgZmVhc2libGUgaWYgdGhlIFVOSVQgY2Fu IHJ1biBvbiB0aGlzIFBDUFUgYW5kICh0aGUgUENQVSBpcyBpZGxlIG9yCisgKiBoYXMgYSBsb3dl ci1wcmlvcml0eSBVTklUIHJ1bm5pbmcgb24gaXQuKQogICoKLSAqIEVhY2ggVkNQVSBoYXMgYSBk ZWRpY2F0ZWQgcGVyaW9kLCBidWRnZXQgYW5kIGEgZXh0cmF0aW1lIGZsYWcKLSAqIFRoZSBkZWFk bGluZSBvZiBhIFZDUFUgaXMgYXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZDsKLSAqIEEgVkNQVSBo YXMgaXRzIGJ1ZGdldCByZXBsZW5pc2hlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcGVyaW9k OwotICogV2hpbGUgc2NoZWR1bGVkLCBhIFZDUFUgYnVybnMgaXRzIGJ1ZGdldC4KLSAqIFRoZSBW Q1BVIG5lZWRzIHRvIGZpbmlzaCBpdHMgYnVkZ2V0IGJlZm9yZSBpdHMgZGVhZGxpbmUgaW4gZWFj aCBwZXJpb2Q7Ci0gKiBUaGUgVkNQVSBkaXNjYXJkcyBpdHMgdW51c2VkIGJ1ZGdldCBhdCB0aGUg ZW5kIG9mIGVhY2ggcGVyaW9kLgotICogV2hlbiBhIFZDUFUgcnVucyBvdXQgb2YgYnVkZ2V0IGlu IGEgcGVyaW9kLCBpZiBpdHMgZXh0cmF0aW1lIGZsYWcgaXMgc2V0LAotICogdGhlIFZDUFUgaW5j cmVhc2VzIGl0cyBwcmlvcml0eV9sZXZlbCBieSAxIGFuZCByZWZpbGxzIGl0cyBidWRnZXQ7IG90 aGVyd2lzZSwKKyAqIEVhY2ggVU5JVCBoYXMgYSBkZWRpY2F0ZWQgcGVyaW9kLCBidWRnZXQgYW5k IGEgZXh0cmF0aW1lIGZsYWcKKyAqIFRoZSBkZWFkbGluZSBvZiBhbiBVTklUIGlzIGF0IHRoZSBl bmQgb2YgZWFjaCBwZXJpb2Q7CisgKiBBbiBVTklUIGhhcyBpdHMgYnVkZ2V0IHJlcGxlbmlzaGVk IGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBwZXJpb2Q7CisgKiBXaGlsZSBzY2hlZHVsZWQsIGFu IFVOSVQgYnVybnMgaXRzIGJ1ZGdldC4KKyAqIFRoZSBVTklUIG5lZWRzIHRvIGZpbmlzaCBpdHMg YnVkZ2V0IGJlZm9yZSBpdHMgZGVhZGxpbmUgaW4gZWFjaCBwZXJpb2Q7CisgKiBUaGUgVU5JVCBk aXNjYXJkcyBpdHMgdW51c2VkIGJ1ZGdldCBhdCB0aGUgZW5kIG9mIGVhY2ggcGVyaW9kLgorICog V2hlbiBhbiBVTklUIHJ1bnMgb3V0IG9mIGJ1ZGdldCBpbiBhIHBlcmlvZCwgaWYgaXRzIGV4dHJh dGltZSBmbGFnIGlzIHNldCwKKyAqIHRoZSBVTklUIGluY3JlYXNlcyBpdHMgcHJpb3JpdHlfbGV2 ZWwgYnkgMSBhbmQgcmVmaWxscyBpdHMgYnVkZ2V0OyBvdGhlcndpc2UsCiAgKiBpdCBoYXMgdG8g d2FpdCB1bnRpbCBuZXh0IHBlcmlvZC4KICAqCi0gKiBFYWNoIFZDUFUgaXMgaW1wbGVtZW50ZWQg YXMgYSBkZWZlcmFibGUgc2VydmVyLgotICogV2hlbiBhIFZDUFUgaGFzIGEgdGFzayBydW5uaW5n IG9uIGl0LCBpdHMgYnVkZ2V0IGlzIGNvbnRpbnVvdXNseSBidXJuZWQ7Ci0gKiBXaGVuIGEgVkNQ VSBoYXMgbm8gdGFzayBidXQgd2l0aCBidWRnZXQgbGVmdCwgaXRzIGJ1ZGdldCBpcyBwcmVzZXJ2 ZWQuCisgKiBFYWNoIFVOSVQgaXMgaW1wbGVtZW50ZWQgYXMgYSBkZWZlcmFibGUgc2VydmVyLgor ICogV2hlbiBhbiBVTklUIGhhcyBhIHRhc2sgcnVubmluZyBvbiBpdCwgaXRzIGJ1ZGdldCBpcyBj b250aW51b3VzbHkgYnVybmVkOworICogV2hlbiBhbiBVTklUIGhhcyBubyB0YXNrIGJ1dCB3aXRo IGJ1ZGdldCBsZWZ0LCBpdHMgYnVkZ2V0IGlzIHByZXNlcnZlZC4KICAqCiAgKiBRdWV1ZSBzY2hl bWU6CiAgKiBBIGdsb2JhbCBydW5xdWV1ZSBhbmQgYSBnbG9iYWwgZGVwbGV0ZWRxdWV1ZSBmb3Ig ZWFjaCBDUFUgcG9vbC4KLSAqIFRoZSBydW5xdWV1ZSBob2xkcyBhbGwgcnVubmFibGUgVkNQVXMg d2l0aCBidWRnZXQsCisgKiBUaGUgcnVucXVldWUgaG9sZHMgYWxsIHJ1bm5hYmxlIFVOSVRzIHdp dGggYnVkZ2V0LAogICogc29ydGVkIGJ5IHByaW9yaXR5X2xldmVsIGFuZCBkZWFkbGluZTsKLSAq IFRoZSBkZXBsZXRlZHF1ZXVlIGhvbGRzIGFsbCBWQ1BVcyB3aXRob3V0IGJ1ZGdldCwgdW5zb3J0 ZWQ7CisgKiBUaGUgZGVwbGV0ZWRxdWV1ZSBob2xkcyBhbGwgVU5JVHMgd2l0aG91dCBidWRnZXQs IHVuc29ydGVkOwogICoKICAqIE5vdGU6IGNwdW1hc2sgYW5kIGNwdXBvb2wgaXMgc3VwcG9ydGVk LgogICovCkBAIC04Miw3ICs4Miw3IEBACiAgKiBpbiBzY2hlZHVsZS5jCiAgKgogICogVGhlIGZ1 bmN0aW9ucyBpbnZvbGVzIFJ1blEgYW5kIG5lZWRzIHRvIGdyYWIgbG9ja3MgYXJlOgotICogICAg dmNwdV9pbnNlcnQsIHZjcHVfcmVtb3ZlLCBjb250ZXh0X3NhdmVkLCBydW5xX2luc2VydAorICog ICAgdW5pdF9pbnNlcnQsIHVuaXRfcmVtb3ZlLCBjb250ZXh0X3NhdmVkLCBydW5xX2luc2VydAog ICovCiAKIApAQCAtOTUsNyArOTUsNyBAQAogCiAvKgogICogTWF4IHBlcmlvZDogbWF4IGRlbHRh IG9mIHRpbWUgdHlwZSwgYmVjYXVzZSBwZXJpb2QgaXMgYWRkZWQgdG8gdGhlIHRpbWUKLSAqIGEg dmNwdSBhY3RpdmF0ZXMsIHNvIHRoaXMgbXVzdCBub3Qgb3ZlcmZsb3cuCisgKiBhbiB1bml0IGFj dGl2YXRlcywgc28gdGhpcyBtdXN0IG5vdCBvdmVyZmxvdy4KICAqIE1pbiBwZXJpb2Q6IDEwIHVz LCBjb25zaWRlcmluZyB0aGUgc2NoZWR1bGluZyBvdmVyaGVhZCAod2hlbiBwZXJpb2QgaXMKICAq IHRvbyBsb3csIHNjaGVkdWxpbmcgaXMgaW52b2tlZCB0b28gZnJlcXVlbnRseSwgY2F1c2luZyBo aWdoIG92ZXJoZWFkKS4KICAqLwpAQCAtMTIxLDEyICsxMjEsMTIgQEAKICAqIEZsYWdzCiAgKi8K IC8qCi0gKiBSVERTX3NjaGVkdWxlZDogSXMgdGhpcyB2Y3B1IGVpdGhlciBydW5uaW5nIG9uLCBv ciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCisgKiBSVERTX3NjaGVkdWxlZDogSXMgdGhpcyB1bml0 IGVpdGhlciBydW5uaW5nIG9uLCBvciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCiAgKiBhIHBoeWlz Y2FsIGNwdT8KICAqICsgQWNjZXNzZWQgb25seSB3aXRoIGdsb2JhbCBsb2NrIGhlbGQuCiAgKiAr IFNldCB3aGVuIGNob3NlbiBhcyBuZXh0IGluIHJ0X3NjaGVkdWxlKCkuCiAgKiArIENsZWFyZWQg YWZ0ZXIgY29udGV4dCBzd2l0Y2ggaGFzIGJlZW4gc2F2ZWQgaW4gcnRfY29udGV4dF9zYXZlZCgp Ci0gKiArIENoZWNrZWQgaW4gdmNwdV93YWtlIHRvIHNlZSBpZiB3ZSBjYW4gYWRkIHRvIHRoZSBS dW5xdWV1ZSwgb3IgaWYgd2Ugc2hvdWxkCisgKiArIENoZWNrZWQgaW4gdW5pdF93YWtlIHRvIHNl ZSBpZiB3ZSBjYW4gYWRkIHRvIHRoZSBSdW5xdWV1ZSwgb3IgaWYgd2Ugc2hvdWxkCiAgKiAgIHNl dCBSVERTX2RlbGF5ZWRfcnVucV9hZGQKICAqICsgQ2hlY2tlZCB0byBiZSBmYWxzZSBpbiBydW5x X2luc2VydC4KICAqLwpAQCAtMTQ2LDE1ICsxNDYsMTUgQEAKIC8qCiAgKiBSVERTX2RlcGxldGVk OiBEb2VzIHRoaXMgdmNwIHJ1biBvdXQgb2YgYnVkZ2V0PwogICogVGhpcyBmbGFnIGlzCi0gKiAr IHNldCBpbiBidXJuX2J1ZGdldCgpIGlmIGEgdmNwdSBoYXMgemVybyBidWRnZXQgbGVmdDsKKyAq ICsgc2V0IGluIGJ1cm5fYnVkZ2V0KCkgaWYgYW4gdW5pdCBoYXMgemVybyBidWRnZXQgbGVmdDsK ICAqICsgY2xlYXJlZCBhbmQgY2hlY2tlZCBpbiB0aGUgcmVwZW5pc2htZW50IGhhbmRsZXIsCi0g KiAgIGZvciB0aGUgdmNwdXMgdGhhdCBhcmUgYmVpbmcgcmVwbGVuaXNoZWQuCisgKiAgIGZvciB0 aGUgdW5pdHMgdGhhdCBhcmUgYmVpbmcgcmVwbGVuaXNoZWQuCiAgKi8KICNkZWZpbmUgX19SVERT X2RlcGxldGVkICAgICAzCiAjZGVmaW5lIFJURFNfZGVwbGV0ZWQgKDE8PF9fUlREU19kZXBsZXRl ZCkKIAogLyoKLSAqIFJURFNfZXh0cmF0aW1lOiBDYW4gdGhlIHZjcHUgcnVuIGluIHRoZSB0aW1l IHRoYXQgaXMKKyAqIFJURFNfZXh0cmF0aW1lOiBDYW4gdGhlIHVuaXQgcnVuIGluIHRoZSB0aW1l IHRoYXQgaXMKICAqIG5vdCBwYXJ0IG9mIGFueSByZWFsLXRpbWUgcmVzZXJ2YXRpb24sIGFuZCB3 b3VsZCB0aGVyZWZvcmUKICAqIGJlIG90aGVyd2lzZSBsZWZ0IGlkbGU/CiAgKi8KQEAgLTE4Mywx MSArMTgzLDExIEBAIHN0cnVjdCBydF9wcml2YXRlIHsKICAgICBzcGlubG9ja190IGxvY2s7ICAg ICAgICAgICAgLyogdGhlIGdsb2JhbCBjb2Fyc2UtZ3JhaW5lZCBsb2NrICovCiAgICAgc3RydWN0 IGxpc3RfaGVhZCBzZG9tOyAgICAgIC8qIGxpc3Qgb2YgYXZhaWxhbGJlIGRvbWFpbnMsIHVzZWQg Zm9yIGR1bXAgKi8KIAotICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVucTsgICAgICAvKiBvcmRlcmVk IGxpc3Qgb2YgcnVubmFibGUgdmNwdXMgKi8KLSAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRlcGxldGVk cTsgLyogdW5vcmRlcmVkIGxpc3Qgb2YgZGVwbGV0ZWQgdmNwdXMgKi8KKyAgICBzdHJ1Y3QgbGlz dF9oZWFkIHJ1bnE7ICAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHVuaXRzICovCisg ICAgc3RydWN0IGxpc3RfaGVhZCBkZXBsZXRlZHE7IC8qIHVub3JkZXJlZCBsaXN0IG9mIGRlcGxl dGVkIHVuaXRzICovCiAKICAgICBzdHJ1Y3QgdGltZXIgcmVwbF90aW1lcjsgICAgLyogcmVwbGVu aXNobWVudCB0aW1lciAqLwotICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHE7ICAgICAvKiBvcmRl cmVkIGxpc3Qgb2YgdmNwdXMgdGhhdCBuZWVkIHJlcGxlbmlzaG1lbnQgKi8KKyAgICBzdHJ1Y3Qg bGlzdF9oZWFkIHJlcGxxOyAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHVuaXRzIHRoYXQgbmVlZCBy ZXBsZW5pc2htZW50ICovCiAKICAgICBjcHVtYXNrX3QgdGlja2xlZDsgICAgICAgICAgLyogY3B1 cyBiZWVuIHRpY2tsZWQgKi8KIH07CkBAIC0xOTksMTggKzE5OSwxOCBAQCBzdHJ1Y3QgcnRfdW5p dCB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBxX2VsZW07ICAgICAvKiBvbiB0aGUgcnVucS9kZXBs ZXRlZHEgbGlzdCAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHFfZWxlbTsgLyogb24gdGhl IHJlcGxlbmlzaG1lbnQgZXZlbnRzIGxpc3QgKi8KIAotICAgIC8qIFZDUFUgcGFyYW1ldGVycywg aW4gbmFub3NlY29uZHMgKi8KKyAgICAvKiBVTklUIHBhcmFtZXRlcnMsIGluIG5hbm9zZWNvbmRz ICovCiAgICAgc190aW1lX3QgcGVyaW9kOwogICAgIHNfdGltZV90IGJ1ZGdldDsKIAotICAgIC8q IFZDUFUgY3VycmVudCBpbmZvcm1hdGlvbiBpbiBuYW5vc2Vjb25kICovCisgICAgLyogVU5JVCBj dXJyZW50IGluZm9ybWF0aW9uIGluIG5hbm9zZWNvbmQgKi8KICAgICBzX3RpbWVfdCBjdXJfYnVk Z2V0OyAgICAgICAgIC8qIGN1cnJlbnQgYnVkZ2V0ICovCiAgICAgc190aW1lX3QgbGFzdF9zdGFy dDsgICAgICAgICAvKiBsYXN0IHN0YXJ0IHRpbWUgKi8KICAgICBzX3RpbWVfdCBjdXJfZGVhZGxp bmU7ICAgICAgIC8qIGN1cnJlbnQgZGVhZGxpbmUgZm9yIEVERiAqLwogCiAgICAgLyogVXAtcG9p bnRlcnMgKi8KICAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tOwotICAgIHN0cnVjdCB2Y3B1ICp2Y3B1 OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0OwogCiAgICAgdW5zaWduZWQgcHJpb3JpdHlf bGV2ZWw7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzX2V4dHJh dGltZShjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICogYW5kIHRoZSByZXBsZW5pc2htZW50 IGV2ZW50cyBxdWV1ZS4KICAqLwogc3RhdGljIGludAotdmNwdV9vbl9xKGNvbnN0IHN0cnVjdCBy dF91bml0ICpzdmMpCit1bml0X29uX3EoY29uc3Qgc3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKICAg IHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5xX2VsZW0pOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBA IHJlcGxxX2VsZW0oc3RydWN0IGxpc3RfaGVhZCAqZWxlbSkKIH0KIAogc3RhdGljIGludAotdmNw dV9vbl9yZXBscShjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQordW5pdF9vbl9yZXBscShjb25z dCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogewogICAgIHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5y ZXBscV9lbGVtKTsKIH0KQEAgLTI5MSw3ICsyOTEsNyBAQCB2Y3B1X29uX3JlcGxxKGNvbnN0IHN0 cnVjdCBydF91bml0ICpzdmMpCiAgKiBPdGhlcndpc2UsIHJldHVybiB2YWx1ZSA8IDAKICAqLwog c3RhdGljIHNfdGltZV90Ci1jb21wYXJlX3ZjcHVfcHJpb3JpdHkoY29uc3Qgc3RydWN0IHJ0X3Vu aXQgKnYxLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqdjIpCitjb21wYXJlX3VuaXRfcHJpb3JpdHko Y29uc3Qgc3RydWN0IHJ0X3VuaXQgKnYxLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqdjIpCiB7CiAg ICAgaW50IHByaW8gPSB2Mi0+cHJpb3JpdHlfbGV2ZWwgLSB2MS0+cHJpb3JpdHlfbGV2ZWw7CiAK QEAgLTMwMiwxNSArMzAyLDE1IEBAIGNvbXBhcmVfdmNwdV9wcmlvcml0eShjb25zdCBzdHJ1Y3Qg cnRfdW5pdCAqdjEsIGNvbnN0IHN0cnVjdCBydF91bml0ICp2MikKIH0KIAogLyoKLSAqIERlYnVn IHJlbGF0ZWQgY29kZSwgZHVtcCB2Y3B1L2NwdSBpbmZvcm1hdGlvbgorICogRGVidWcgcmVsYXRl ZCBjb2RlLCBkdW1wIHVuaXQvY3B1IGluZm9ybWF0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1ydF9k dW1wX3ZjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5p dCAqc3ZjKQorcnRfZHVtcF91bml0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qg c3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKICAgICBjcHVtYXNrX3QgKmNwdXBvb2xfbWFzaywgKm1h c2s7CiAKICAgICBBU1NFUlQoc3ZjICE9IE5VTEwpOwotICAgIC8qIGlkbGUgdmNwdSAqLworICAg IC8qIGlkbGUgdW5pdCAqLwogICAgIGlmKCBzdmMtPnNkb20gPT0gTlVMTCApCiAgICAgewogICAg ICAgICBwcmludGsoIlxuIik7CkBAIC0zMjEsMjAgKzMyMSwyMCBAQCBydF9kdW1wX3ZjcHUoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAg ICAqIFdlIGNhbid0IGp1c3QgdXNlICdjcHVtYXNrX3NjcmF0Y2gnIGJlY2F1c2UgdGhlIGR1bXBp bmcgY2FuCiAgICAgICogaGFwcGVuIGZyb20gYSBwQ1BVIG91dHNpZGUgb2YgdGhpcyBzY2hlZHVs ZXIncyBjcHVwb29sLCBhbmQKICAgICAgKiBoZW5jZSBpdCdzIG5vdCByaWdodCB0byB1c2UgaXRz IHBDUFUncyBzY3JhdGNoIG1hc2suCi0gICAgICogT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIHNh ZmUgdG8gdXNlIHN2Yy0+dmNwdS0+cHJvY2Vzc29yJ3MKKyAgICAgKiBPbiB0aGUgb3RoZXIgaGFu ZCwgaXQgaXMgc2FmZSB0byB1c2Ugc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KSdzCiAgICAgICog b3duIHNjcmF0Y2ggc3BhY2UsIHNpbmNlIHdlIGhvbGQgdGhlIHJ1bnF1ZXVlIGxvY2suCiAgICAg ICovCi0gICAgbWFzayA9IGNwdW1hc2tfc2NyYXRjaF9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3Ip OworICAgIG1hc2sgPSBjcHVtYXNrX3NjcmF0Y2hfY3B1KHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5p dCkpOwogCi0gICAgY3B1cG9vbF9tYXNrID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayhzdmMtPnZj cHUtPmRvbWFpbik7Ci0gICAgY3B1bWFza19hbmQobWFzaywgY3B1cG9vbF9tYXNrLCBzdmMtPnZj cHUtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICBjcHVwb29sX21hc2sgPSBj cHVwb29sX2RvbWFpbl9jcHVtYXNrKHN2Yy0+dW5pdC0+ZG9tYWluKTsKKyAgICBjcHVtYXNrX2Fu ZChtYXNrLCBjcHVwb29sX21hc2ssIHN2Yy0+dW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogICAg IHByaW50aygiWyU1ZC4lLTJ1XSBjcHUgJXUsICglIlBSSV9zdGltZSIsICUiUFJJX3N0aW1lIiks IgogICAgICAgICAgICAiIGN1cl9iPSUiUFJJX3N0aW1lIiBjdXJfZD0lIlBSSV9zdGltZSIgbGFz dF9zdGFydD0lIlBSSV9zdGltZSJcbiIKICAgICAgICAgICAgIiBcdFx0IHByaW9yaXR5X2xldmVs PSVkIGhhc19leHRyYXRpbWU9JWRcbiIKICAgICAgICAgICAgIiBcdFx0IG9uUT0lZCBydW5uYWJs ZT0lZCBmbGFncz0leCBlZmZlY3RpdmUgaGFyZF9hZmZpbml0eT0lKnBibFxuIiwKLSAgICAgICAg ICAgIHN2Yy0+dmNwdS0+ZG9tYWluLT5kb21haW5faWQsCi0gICAgICAgICAgICBzdmMtPnZjcHUt PnZjcHVfaWQsCi0gICAgICAgICAgICBzdmMtPnZjcHUtPnByb2Nlc3NvciwKKyAgICAgICAgICAg IHN2Yy0+dW5pdC0+ZG9tYWluLT5kb21haW5faWQsCisgICAgICAgICAgICBzdmMtPnVuaXQtPnVu aXRfaWQsCisgICAgICAgICAgICBzY2hlZF91bml0X2NwdShzdmMtPnVuaXQpLAogICAgICAgICAg ICAgc3ZjLT5wZXJpb2QsCiAgICAgICAgICAgICBzdmMtPmJ1ZGdldCwKICAgICAgICAgICAgIHN2 Yy0+Y3VyX2J1ZGdldCwKQEAgLTM0Miw4ICszNDIsOCBAQCBydF9kdW1wX3ZjcHUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgICAgICAg ICAgc3ZjLT5sYXN0X3N0YXJ0LAogICAgICAgICAgICAgc3ZjLT5wcmlvcml0eV9sZXZlbCwKICAg ICAgICAgICAgIGhhc19leHRyYXRpbWUoc3ZjKSwKLSAgICAgICAgICAgIHZjcHVfb25fcShzdmMp LAotICAgICAgICAgICAgdmNwdV9ydW5uYWJsZShzdmMtPnZjcHUpLAorICAgICAgICAgICAgdW5p dF9vbl9xKHN2YyksCisgICAgICAgICAgICB1bml0X3J1bm5hYmxlKHN2Yy0+dW5pdCksCiAgICAg ICAgICAgICBzdmMtPmZsYWdzLCBDUFVNQVNLX1BSKG1hc2spKTsKIH0KIApAQCAtMzU2LDExICsz NTYsMTEgQEAgcnRfZHVtcF9wY3B1KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNw dSkKIAogICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKICAgICBwcmlu dGsoIkNQVVslMDJkXVxuIiwgY3B1KTsKLSAgICAvKiBjdXJyZW50IFZDUFUgKG5vdGhpbmcgdG8g c2F5IGlmIHRoYXQncyB0aGUgaWRsZSB2Y3B1KS4gKi8KKyAgICAvKiBjdXJyZW50IFVOSVQgKG5v dGhpbmcgdG8gc2F5IGlmIHRoYXQncyB0aGUgaWRsZSB1bml0KS4gKi8KICAgICBzdmMgPSBydF91 bml0KGN1cnJfb25fY3B1KGNwdSkpOwotICAgIGlmICggc3ZjICYmICFpc19pZGxlX3ZjcHUoc3Zj LT52Y3B1KSApCisgICAgaWYgKCBzdmMgJiYgIWlzX2lkbGVfdW5pdChzdmMtPnVuaXQpICkKICAg ICB7Ci0gICAgICAgIHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CisgICAgICAgIHJ0X2R1bXBfdW5p dChvcHMsIHN2Yyk7CiAgICAgfQogICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBydi0+bG9j aywgZmxhZ3MpOwogfQpAQCAtMzg3LDM1ICszODcsMzUgQEAgcnRfZHVtcChjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMpCiAgICAgbGlzdF9mb3JfZWFjaCAoIGl0ZXIsIHJ1bnEgKQogICAgIHsK ICAgICAgICAgc3ZjID0gcV9lbGVtKGl0ZXIpOwotICAgICAgICBydF9kdW1wX3ZjcHUob3BzLCBz dmMpOworICAgICAgICBydF9kdW1wX3VuaXQob3BzLCBzdmMpOwogICAgIH0KIAogICAgIHByaW50 aygiR2xvYmFsIERlcGxldGVkUXVldWUgaW5mbzpcbiIpOwogICAgIGxpc3RfZm9yX2VhY2ggKCBp dGVyLCBkZXBsZXRlZHEgKQogICAgIHsKICAgICAgICAgc3ZjID0gcV9lbGVtKGl0ZXIpOwotICAg ICAgICBydF9kdW1wX3ZjcHUob3BzLCBzdmMpOworICAgICAgICBydF9kdW1wX3VuaXQob3BzLCBz dmMpOwogICAgIH0KIAogICAgIHByaW50aygiR2xvYmFsIFJlcGxlbmlzaG1lbnQgRXZlbnRzIGlu Zm86XG4iKTsKICAgICBsaXN0X2Zvcl9lYWNoICggaXRlciwgcmVwbHEgKQogICAgIHsKICAgICAg ICAgc3ZjID0gcmVwbHFfZWxlbShpdGVyKTsKLSAgICAgICAgcnRfZHVtcF92Y3B1KG9wcywgc3Zj KTsKKyAgICAgICAgcnRfZHVtcF91bml0KG9wcywgc3ZjKTsKICAgICB9CiAKICAgICBwcmludGso IkRvbWFpbiBpbmZvOlxuIik7CiAgICAgbGlzdF9mb3JfZWFjaCAoIGl0ZXIsICZwcnYtPnNkb20g KQogICAgIHsKLSAgICAgICAgc3RydWN0IHZjcHUgKnY7CisgICAgICAgIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0OwogCiAgICAgICAgIHNkb20gPSBsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBydF9k b20sIHNkb21fZWxlbSk7CiAgICAgICAgIHByaW50aygiXHRkb21haW46ICVkXG4iLCBzZG9tLT5k b20tPmRvbWFpbl9pZCk7CiAKLSAgICAgICAgZm9yX2VhY2hfdmNwdSAoIHNkb20tPmRvbSwgdiAp CisgICAgICAgIGZvcl9lYWNoX3NjaGVkX3VuaXQgKCBzZG9tLT5kb20sIHVuaXQgKQogICAgICAg ICB7Ci0gICAgICAgICAgICBzdmMgPSBydF91bml0KHYtPnNjaGVkX3VuaXQpOwotICAgICAgICAg ICAgcnRfZHVtcF92Y3B1KG9wcywgc3ZjKTsKKyAgICAgICAgICAgIHN2YyA9IHJ0X3VuaXQodW5p dCk7CisgICAgICAgICAgICBydF9kdW1wX3VuaXQob3BzLCBzdmMpOwogICAgICAgICB9CiAgICAg fQogCkBAIC00NTcsMTIgKzQ1NywxMiBAQCBydF91cGRhdGVfZGVhZGxpbmUoc190aW1lX3Qgbm93 LCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIC8qIFRSQUNFICovCiAgICAgewogICAgICAgICBz dHJ1Y3QgX19wYWNrZWQgewotICAgICAgICAgICAgdW5zaWduZWQgdmNwdToxNiwgZG9tOjE2Owor ICAgICAgICAgICAgdW5zaWduZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgdW5zaWdu ZWQgcHJpb3JpdHlfbGV2ZWw7CiAgICAgICAgICAgICB1aW50NjRfdCBjdXJfZGVhZGxpbmUsIGN1 cl9idWRnZXQ7CiAgICAgICAgIH0gZDsKLSAgICAgICAgZC5kb20gPSBzdmMtPnZjcHUtPmRvbWFp bi0+ZG9tYWluX2lkOwotICAgICAgICBkLnZjcHUgPSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAg ICAgIGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0 ID0gc3ZjLT51bml0LT51bml0X2lkOwogICAgICAgICBkLnByaW9yaXR5X2xldmVsID0gc3ZjLT5w cmlvcml0eV9sZXZlbDsKICAgICAgICAgZC5jdXJfZGVhZGxpbmUgPSAodWludDY0X3QpIHN2Yy0+ Y3VyX2RlYWRsaW5lOwogICAgICAgICBkLmN1cl9idWRnZXQgPSAodWludDY0X3QpIHN2Yy0+Y3Vy X2J1ZGdldDsKQEAgLTQ3NSwxNSArNDc1LDE1IEBAIHJ0X3VwZGF0ZV9kZWFkbGluZShzX3RpbWVf dCBub3csIHN0cnVjdCBydF91bml0ICpzdmMpCiB9CiAKIC8qCi0gKiBIZWxwZXJzIGZvciByZW1v dmluZyBhbmQgaW5zZXJ0aW5nIGEgdmNwdSBpbiBhIHF1ZXVlCi0gKiB0aGF0IGlzIGJlaW5nIGtl cHQgb3JkZXJlZCBieSB0aGUgdmNwdXMnIGRlYWRsaW5lcyAoYXMgRURGCisgKiBIZWxwZXJzIGZv ciByZW1vdmluZyBhbmQgaW5zZXJ0aW5nIGFuIHVuaXQgaW4gYSBxdWV1ZQorICogdGhhdCBpcyBi ZWluZyBrZXB0IG9yZGVyZWQgYnkgdGhlIHVuaXRzJyBkZWFkbGluZXMgKGFzIEVERgogICogbWFu ZGF0ZXMpLgogICoKLSAqIEZvciBjYWxsZXJzJyBjb252ZW5pZW5jZSwgdGhlIHZjcHUgcmVtb3Zp bmcgaGVscGVyIHJldHVybnMKLSAqIHRydWUgaWYgdGhlIHZjcHUgcmVtb3ZlZCB3YXMgdGhlIG9u ZSBhdCB0aGUgZnJvbnQgb2YgdGhlCisgKiBGb3IgY2FsbGVycycgY29udmVuaWVuY2UsIHRoZSB1 bml0IHJlbW92aW5nIGhlbHBlciByZXR1cm5zCisgKiB0cnVlIGlmIHRoZSB1bml0IHJlbW92ZWQg d2FzIHRoZSBvbmUgYXQgdGhlIGZyb250IG9mIHRoZQogICogcXVldWU7IHNpbWlsYXJseSwgdGhl IGluc2VydGluZyBoZWxwZXIgcmV0dXJucyB0cnVlIGlmIHRoZQogICogaW5zZXJ0ZWQgZW5kZWQg YXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZSAoaS5lLiwgaW4gYm90aAotICogY2FzZXMsIGlmIHRo ZSB2Y3B1IHdpdGggdGhlIGVhcmxpZXN0IGRlYWRsaW5lIGlzIHdoYXQgd2UKKyAqIGNhc2VzLCBp ZiB0aGUgdW5pdCB3aXRoIHRoZSBlYXJsaWVzdCBkZWFkbGluZSBpcyB3aGF0IHdlCiAgKiBhcmUg ZGVhbGluZyB3aXRoKS4KICAqLwogc3RhdGljIGlubGluZSBib29sCkBAIC01MDksNyArNTA5LDcg QEAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KHN0cnVjdCBydF91bml0ICogKCpxZWxlbSkoc3RydWN0 IGxpc3RfaGVhZCAqKSwKICAgICBsaXN0X2Zvcl9lYWNoICggaXRlciwgcXVldWUgKQogICAgIHsK ICAgICAgICAgc3RydWN0IHJ0X3VuaXQgKiBpdGVyX3N2YyA9ICgqcWVsZW0pKGl0ZXIpOwotICAg ICAgICBpZiAoIGNvbXBhcmVfdmNwdV9wcmlvcml0eShzdmMsIGl0ZXJfc3ZjKSA+IDAgKQorICAg ICAgICBpZiAoIGNvbXBhcmVfdW5pdF9wcmlvcml0eShzdmMsIGl0ZXJfc3ZjKSA+IDAgKQogICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIHBvcysrOwogICAgIH0KQEAgLTUyNCw3ICs1MjQsNyBA QCBkZWFkbGluZV9xdWV1ZV9pbnNlcnQoc3RydWN0IHJ0X3VuaXQgKiAoKnFlbGVtKShzdHJ1Y3Qg bGlzdF9oZWFkICopLAogc3RhdGljIGlubGluZSB2b2lkCiBxX3JlbW92ZShzdHJ1Y3QgcnRfdW5p dCAqc3ZjKQogewotICAgIEFTU0VSVCggdmNwdV9vbl9xKHN2YykgKTsKKyAgICBBU1NFUlQoIHVu aXRfb25fcShzdmMpICk7CiAgICAgbGlzdF9kZWxfaW5pdCgmc3ZjLT5xX2VsZW0pOwogfQogCkBA IC01MzQsMTQgKzUzNCwxNCBAQCByZXBscV9yZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBy dF9wcml2KG9wcyk7CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMp OwogCi0gICAgQVNTRVJUKCB2Y3B1X29uX3JlcGxxKHN2YykgKTsKKyAgICBBU1NFUlQoIHVuaXRf b25fcmVwbHEoc3ZjKSApOwogCiAgICAgaWYgKCBkZWFkbGluZV9xdWV1ZV9yZW1vdmUocmVwbHEs ICZzdmMtPnJlcGxxX2VsZW0pICkKICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSBy ZXBsZW5pc2htZW50IHRpbWVyIG5lZWRzIHRvIGJlIHNldCB0byBmaXJlIHdoZW4gYQotICAgICAg ICAgKiByZXBsZW5pc2htZW50IGZvciB0aGUgdmNwdSBhdCB0aGUgZnJvbnQgb2YgdGhlIHJlcGxl bmlzaG1lbnQKLSAgICAgICAgICogcXVldWUgaXMgZHVlLiBJZiBpdCBpcyBzdWNoIHZjcHUgdGhh dCB3ZSBqdXN0IHJlbW92ZWQsIHdlIG1heQorICAgICAgICAgKiByZXBsZW5pc2htZW50IGZvciB0 aGUgdW5pdCBhdCB0aGUgZnJvbnQgb2YgdGhlIHJlcGxlbmlzaG1lbnQKKyAgICAgICAgICogcXVl dWUgaXMgZHVlLiBJZiBpdCBpcyBzdWNoIHVuaXQgdGhhdCB3ZSBqdXN0IHJlbW92ZWQsIHdlIG1h eQogICAgICAgICAgKiBuZWVkIHRvIHJlcHJvZ3JhbSB0aGUgdGltZXIuCiAgICAgICAgICAqLwog ICAgICAgICBpZiAoICFsaXN0X2VtcHR5KHJlcGxxKSApCkBAIC01NTYsNyArNTU2LDcgQEAgcmVw bHFfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3VuaXQgKnN2 YykKIAogLyoKICAqIEluc2VydCBzdmMgd2l0aCBidWRnZXQgaW4gUnVuUSBhY2NvcmRpbmcgdG8g RURGOgotICogdmNwdXMgd2l0aCBzbWFsbGVyIGRlYWRsaW5lcyBnbyBmaXJzdC4KKyAqIHVuaXRz IHdpdGggc21hbGxlciBkZWFkbGluZXMgZ28gZmlyc3QuCiAgKiBJbnNlcnQgc3ZjIHdpdGhvdXQg YnVkZ2V0IGluIERlcGxldGVkUSB1bnNvcnRlZDsKICAqLwogc3RhdGljIHZvaWQKQEAgLTU2Niw4 ICs1NjYsOCBAQCBydW5xX2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVj dCBydF91bml0ICpzdmMpCiAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnVucSA9IHJ0X3J1bnEob3Bz KTsKIAogICAgIEFTU0VSVCggc3Bpbl9pc19sb2NrZWQoJnBydi0+bG9jaykgKTsKLSAgICBBU1NF UlQoICF2Y3B1X29uX3Eoc3ZjKSApOwotICAgIEFTU0VSVCggdmNwdV9vbl9yZXBscShzdmMpICk7 CisgICAgQVNTRVJUKCAhdW5pdF9vbl9xKHN2YykgKTsKKyAgICBBU1NFUlQoIHVuaXRfb25fcmVw bHEoc3ZjKSApOwogCiAgICAgLyogYWRkIHN2YyB0byBydW5xIGlmIHN2YyBzdGlsbCBoYXMgYnVk Z2V0IG9yIGl0cyBleHRyYXRpbWUgaXMgc2V0ICovCiAgICAgaWYgKCBzdmMtPmN1cl9idWRnZXQg PiAwIHx8CkBAIC01ODMsNyArNTgzLDcgQEAgcmVwbHFfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc3RydWN0IHJ0X3VuaXQgKnN2YykKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpy ZXBscSA9IHJ0X3JlcGxxKG9wcyk7CiAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3By aXYob3BzKTsKIAotICAgIEFTU0VSVCggIXZjcHVfb25fcmVwbHEoc3ZjKSApOworICAgIEFTU0VS VCggIXVuaXRfb25fcmVwbHEoc3ZjKSApOwogCiAgICAgLyoKICAgICAgKiBUaGUgdGltZXIgbWF5 IGJlIHJlLXByb2dyYW1tZWQgaWYgc3ZjIGlzIGluc2VydGVkCkBAIC02MDYsMTIgKzYwNiwxMiBA QCByZXBscV9yZWluc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF91 bml0ICpzdmMpCiAgICAgc3RydWN0IHJ0X3VuaXQgKnJlYXJtX3N2YyA9IHN2YzsKICAgICBib29s X3QgcmVhcm0gPSAwOwogCi0gICAgQVNTRVJUKCB2Y3B1X29uX3JlcGxxKHN2YykgKTsKKyAgICBB U1NFUlQoIHVuaXRfb25fcmVwbHEoc3ZjKSApOwogCiAgICAgLyoKICAgICAgKiBJZiBzdmMgd2Fz IGF0IHRoZSBmcm9udCBvZiB0aGUgcmVwbGVuaXNobWVudCBxdWV1ZSwgd2UgY2VydGFpbmx5CiAg ICAgICogbmVlZCB0byByZS1wcm9ncmFtIHRoZSB0aW1lciwgYW5kIHdlIHdhbnQgdG8gdXNlIHRo ZSBkZWFkbGluZSBvZgotICAgICAqIHRoZSB2Y3B1IHdoaWNoIGlzIG5vdyBhdCB0aGUgZnJvbnQg b2YgdGhlIHF1ZXVlICh3aGljaCBtYXkgc3RpbGwKKyAgICAgKiB0aGUgdW5pdCB3aGljaCBpcyBu b3cgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZSAod2hpY2ggbWF5IHN0aWxsCiAgICAgICogYmUg c3ZjIG9yIG5vdCkuCiAgICAgICoKICAgICAgKiBXZSBtYXkgYWxzbyBuZWVkIHRvIHJlLXByb2dy YW0sIGlmIHN2YyBoYXMgYmVlbiBwdXQgYXQgdGhlIGZyb250CkBAIC02MzEsMjQgKzYzMSwyMyBA QCByZXBscV9yZWluc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF91 bml0ICpzdmMpCiB9CiAKIC8qCi0gKiBQaWNrIGEgdmFsaWQgcmVzb3VyY2UgZm9yIHRoZSB2Y3B1 IHZjCi0gKiBWYWxpZCByZXNvdXJjZSBvZiBhIHZjcHUgaXMgaW50ZXNlY3Rpb24gb2YgdmNwdSdz IGFmZmluaXR5CisgKiBQaWNrIGEgdmFsaWQgcmVzb3VyY2UgZm9yIHRoZSB1bml0IHZjCisgKiBW YWxpZCByZXNvdXJjZSBvZiBhbiB1bml0IGlzIGludGVzZWN0aW9uIG9mIHVuaXQncyBhZmZpbml0 eQogICogYW5kIGF2YWlsYWJsZSByZXNvdXJjZXMKICAqLwogc3RhdGljIHN0cnVjdCBzY2hlZF9y ZXNvdXJjZSAqCiBydF9yZXNfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNvbnN0 IHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQt PnZjcHVfbGlzdDsKICAgICBjcHVtYXNrX3QgY3B1czsKICAgICBjcHVtYXNrX3QgKm9ubGluZTsK ICAgICBpbnQgY3B1OwogCi0gICAgb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayh2Yy0+ ZG9tYWluKTsKKyAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHVuaXQtPmRvbWFp bik7CiAgICAgY3B1bWFza19hbmQoJmNwdXMsIG9ubGluZSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5p dHkpOwogCi0gICAgY3B1ID0gY3B1bWFza190ZXN0X2NwdSh2Yy0+cHJvY2Vzc29yLCAmY3B1cykK LSAgICAgICAgICAgID8gdmMtPnByb2Nlc3NvcgotICAgICAgICAgICAgOiBjcHVtYXNrX2N5Y2xl KHZjLT5wcm9jZXNzb3IsICZjcHVzKTsKKyAgICBjcHUgPSBjcHVtYXNrX3Rlc3RfY3B1KHNjaGVk X3VuaXRfY3B1KHVuaXQpLCAmY3B1cykKKyAgICAgICAgICAgID8gc2NoZWRfdW5pdF9jcHUodW5p dCkKKyAgICAgICAgICAgIDogY3B1bWFza19jeWNsZShzY2hlZF91bml0X2NwdSh1bml0KSwgJmNw dXMpOwogICAgIEFTU0VSVCggIWNwdW1hc2tfZW1wdHkoJmNwdXMpICYmIGNwdW1hc2tfdGVzdF9j cHUoY3B1LCAmY3B1cykgKTsKIAogICAgIHJldHVybiBnZXRfc2NoZWRfcmVzKGNwdSk7CkBAIC03 MzcsNyArNzM2LDcgQEAgcnRfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMs IHVuc2lnbmVkIGludCBjcHUsCiAgICAgc3RydWN0IHJ0X3VuaXQgKnN2YyA9IHZkYXRhOwogICAg IHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2QgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CiAKLSAgICBB U1NFUlQoIXBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3ZjcHUoc3ZjLT52Y3B1KSk7CisgICAgQVNT RVJUKCFwZGF0YSAmJiBzdmMgJiYgaXNfaWRsZV91bml0KHN2Yy0+dW5pdCkpOwogCiAgICAgLyoK ICAgICAgKiBXZSBhcmUgaG9sZGluZyB0aGUgcnVucXVldWUgbG9jayBhbHJlYWR5IChpdCdzIGJl ZW4gdGFrZW4gaW4KQEAgLTc2MSw3ICs3NjAsNyBAQCBydF9zd2l0Y2hfc2NoZWQoc3RydWN0IHNj aGVkdWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKICAgICAgICAgZHByaW50ayhYRU5M T0dfREVCVUcsICJSVERTOiB0aW1lciBpbml0aWFsaXplZCBvbiBjcHUgJXVcbiIsIGNwdSk7CiAg ICAgfQogCi0gICAgaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQtPnByaXYgPSB2ZGF0YTsKKyAg ICBzY2hlZF9pZGxlX3VuaXQoY3B1KS0+cHJpdiA9IHZkYXRhOwogCiAgICAgcmV0dXJuICZwcnYt PmxvY2s7CiB9CkBAIC04NDEsMTAgKzg0MCw5IEBAIHJ0X2ZyZWVfZG9tZGF0YShjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKmRhdGEpCiBzdGF0aWMgdm9pZCAqCiBydF9hbGxvY192 ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0 LCB2b2lkICpkZCkKIHsKLSAgICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1X2xpc3Q7CiAg ICAgc3RydWN0IHJ0X3VuaXQgKnN2YzsKIAotICAgIC8qIEFsbG9jYXRlIHBlci1WQ1BVIGluZm8g Ki8KKyAgICAvKiBBbGxvY2F0ZSBwZXItVU5JVCBpbmZvICovCiAgICAgc3ZjID0geHphbGxvYyhz dHJ1Y3QgcnRfdW5pdCk7CiAgICAgaWYgKCBzdmMgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiBO VUxMOwpAQCAtODUzLDEzICs4NTEsMTMgQEAgcnRfYWxsb2NfdmRhdGEoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCwgdm9pZCAqZGQpCiAgICAgSU5J VF9MSVNUX0hFQUQoJnN2Yy0+cmVwbHFfZWxlbSk7CiAgICAgc3ZjLT5mbGFncyA9IDBVOwogICAg IHN2Yy0+c2RvbSA9IGRkOwotICAgIHN2Yy0+dmNwdSA9IHZjOworICAgIHN2Yy0+dW5pdCA9IHVu aXQ7CiAgICAgc3ZjLT5sYXN0X3N0YXJ0ID0gMDsKIAogICAgIF9fc2V0X2JpdChfX1JURFNfZXh0 cmF0aW1lLCAmc3ZjLT5mbGFncyk7CiAgICAgc3ZjLT5wcmlvcml0eV9sZXZlbCA9IDA7CiAgICAg c3ZjLT5wZXJpb2QgPSBSVERTX0RFRkFVTFRfUEVSSU9EOwotICAgIGlmICggIWlzX2lkbGVfdmNw dSh2YykgKQorICAgIGlmICggIWlzX2lkbGVfdW5pdCh1bml0KSApCiAgICAgICAgIHN2Yy0+YnVk Z2V0ID0gUlREU19ERUZBVUxUX0JVREdFVDsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF9h bGxvYyk7CkBAIC04NzksMjIgKzg3NywyMCBAQCBydF9mcmVlX3ZkYXRhKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgdm9pZCAqcHJpdikKICAqIEl0IGlzIGNhbGxlZCBpbiBzY2hlZF9tb3Zl X2RvbWFpbigpIGFuZCBzY2hlZF9pbml0X3ZjcHUKICAqIGluIHNjaGVkdWxlLmMuCiAgKiBXaGVu IG1vdmUgYSBkb21haW4gdG8gYSBuZXcgY3B1cG9vbC4KLSAqIEl0IGluc2VydHMgdmNwdXMgb2Yg bW92aW5nIGRvbWFpbiB0byB0aGUgc2NoZWR1bGVyJ3MgUnVuUSBpbgorICogSXQgaW5zZXJ0cyB1 bml0cyBvZiBtb3ZpbmcgZG9tYWluIHRvIHRoZSBzY2hlZHVsZXIncyBSdW5RIGluCiAgKiBkZXN0 LiBjcHVwb29sLgogICovCiBzdGF0aWMgdm9pZAogcnRfdW5pdF9pbnNlcnQoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1Y3Qg dmNwdSAqdmMgPSB1bml0LT52Y3B1X2xpc3Q7CiAgICAgc3RydWN0IHJ0X3VuaXQgKnN2YyA9IHJ0 X3VuaXQodW5pdCk7CiAgICAgc190aW1lX3Qgbm93OwogICAgIHNwaW5sb2NrX3QgKmxvY2s7CiAK LSAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKKyAgICBCVUdfT04oIGlzX2lkbGVfdW5p dCh1bml0KSApOwogCi0gICAgLyogVGhpcyBpcyBzYWZlIGJlY2F1c2UgdmMgaXNuJ3QgeWV0IGJl aW5nIHNjaGVkdWxlZCAqLwotICAgIHVuaXQtPnJlcyA9IHJ0X3Jlc19waWNrKG9wcywgdW5pdCk7 Ci0gICAgdmMtPnByb2Nlc3NvciA9IHVuaXQtPnJlcy0+bWFzdGVyX2NwdTsKKyAgICAvKiBUaGlz IGlzIHNhZmUgYmVjYXVzZSB1bml0IGlzbid0IHlldCBiZWluZyBzY2hlZHVsZWQgKi8KKyAgICBz Y2hlZF9zZXRfcmVzKHVuaXQsIHJ0X3Jlc19waWNrKG9wcywgdW5pdCkpOwogCiAgICAgbG9jayA9 IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKQEAgLTkwMiw3ICs4OTgsNyBAQCBydF91 bml0X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0 ICp1bml0KQogICAgIGlmICggbm93ID49IHN2Yy0+Y3VyX2RlYWRsaW5lICkKICAgICAgICAgcnRf dXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKIAotICAgIGlmICggIXZjcHVfb25fcShzdmMpICYm IHZjcHVfcnVubmFibGUodmMpICkKKyAgICBpZiAoICF1bml0X29uX3Eoc3ZjKSAmJiB1bml0X3J1 bm5hYmxlKHVuaXQpICkKICAgICB7CiAgICAgICAgIHJlcGxxX2luc2VydChvcHMsIHN2Yyk7CiAK QEAgLTkyOSwxMCArOTI1LDEwIEBAIHJ0X3VuaXRfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgQlVHX09OKCBzZG9tID09IE5V TEwgKTsKIAogICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwotICAgIGlm ICggdmNwdV9vbl9xKHN2YykgKQorICAgIGlmICggdW5pdF9vbl9xKHN2YykgKQogICAgICAgICBx X3JlbW92ZShzdmMpOwogCi0gICAgaWYgKCB2Y3B1X29uX3JlcGxxKHN2YykgKQorICAgIGlmICgg dW5pdF9vbl9yZXBscShzdmMpICkKICAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcyxzdmMpOwogCiAg ICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwpAQCAtOTQ2LDggKzk0Miw4 IEBAIGJ1cm5fYnVkZ2V0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3Vu aXQgKnN2Yywgc190aW1lX3Qgbm93KQogewogICAgIHNfdGltZV90IGRlbHRhOwogCi0gICAgLyog ZG9uJ3QgYnVybiBidWRnZXQgZm9yIGlkbGUgVkNQVSAqLwotICAgIGlmICggaXNfaWRsZV92Y3B1 KHN2Yy0+dmNwdSkgKQorICAgIC8qIGRvbid0IGJ1cm4gYnVkZ2V0IGZvciBpZGxlIFVOSVQgKi8K KyAgICBpZiAoIGlzX2lkbGVfdW5pdChzdmMtPnVuaXQpICkKICAgICAgICAgcmV0dXJuOwogCiAg ICAgLyogYnVybiBhdCBuYW5vc2Vjb25kcyBsZXZlbCAqLwpAQCAtOTg0LDE0ICs5ODAsMTQgQEAg YnVybl9idWRnZXQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAq c3ZjLCBzX3RpbWVfdCBub3cpCiAgICAgLyogVFJBQ0UgKi8KICAgICB7CiAgICAgICAgIHN0cnVj dCBfX3BhY2tlZCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7CisgICAg ICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAgICAgICB1aW50NjRfdCBj dXJfYnVkZ2V0OwogICAgICAgICAgICAgaW50IGRlbHRhOwogICAgICAgICAgICAgdW5zaWduZWQg cHJpb3JpdHlfbGV2ZWw7CiAgICAgICAgICAgICBib29sIGhhc19leHRyYXRpbWU7CiAgICAgICAg IH0gZDsKLSAgICAgICAgZC5kb20gPSBzdmMtPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwotICAg ICAgICBkLnZjcHUgPSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgIGQuZG9tID0gc3ZjLT51 bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0ID0gc3ZjLT51bml0LT51bml0 X2lkOwogICAgICAgICBkLmN1cl9idWRnZXQgPSAodWludDY0X3QpIHN2Yy0+Y3VyX2J1ZGdldDsK ICAgICAgICAgZC5kZWx0YSA9IGRlbHRhOwogICAgICAgICBkLnByaW9yaXR5X2xldmVsID0gc3Zj LT5wcmlvcml0eV9sZXZlbDsKQEAgLTEwMjEsOSArMTAxNyw4IEBAIHJ1bnFfcGljayhjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKICAgICAgICAgaXRl cl9zdmMgPSBxX2VsZW0oaXRlcik7CiAKICAgICAgICAgLyogbWFzayBjcHVfaGFyZF9hZmZpbml0 eSAmIGNwdXBvb2wgJiBtYXNrICovCi0gICAgICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWluX2Nw dW1hc2soaXRlcl9zdmMtPnZjcHUtPmRvbWFpbik7Ci0gICAgICAgIGNwdW1hc2tfYW5kKCZjcHVf Y29tbW9uLCBvbmxpbmUsCi0gICAgICAgICAgICAgICAgICAgIGl0ZXJfc3ZjLT52Y3B1LT5zY2hl ZF91bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgICAgIG9ubGluZSA9IGNwdXBvb2xfZG9t YWluX2NwdW1hc2soaXRlcl9zdmMtPnVuaXQtPmRvbWFpbik7CisgICAgICAgIGNwdW1hc2tfYW5k KCZjcHVfY29tbW9uLCBvbmxpbmUsIGl0ZXJfc3ZjLT51bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7 CiAgICAgICAgIGNwdW1hc2tfYW5kKCZjcHVfY29tbW9uLCBtYXNrLCAmY3B1X2NvbW1vbik7CiAg ICAgICAgIGlmICggY3B1bWFza19lbXB0eSgmY3B1X2NvbW1vbikgKQogICAgICAgICAgICAgY29u dGludWU7CkBAIC0xMDM5LDExICsxMDM0LDExIEBAIHJ1bnFfcGljayhjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKICAgICAgICAgaWYoIHN2YyAhPSBO VUxMICkKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IF9fcGFja2VkIHsKLSAgICAgICAg ICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7CisgICAgICAgICAgICAgICAgdW5zaWdu ZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1cl9kZWFkbGlu ZSwgY3VyX2J1ZGdldDsKICAgICAgICAgICAgIH0gZDsKLSAgICAgICAgICAgIGQuZG9tID0gc3Zj LT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgICAgIGQudmNwdSA9IHN2Yy0+dmNw dS0+dmNwdV9pZDsKKyAgICAgICAgICAgIGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRvbWFp bl9pZDsKKyAgICAgICAgICAgIGQudW5pdCA9IHN2Yy0+dW5pdC0+dW5pdF9pZDsKICAgICAgICAg ICAgIGQuY3VyX2RlYWRsaW5lID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9kZWFkbGluZTsKICAgICAg ICAgICAgIGQuY3VyX2J1ZGdldCA9ICh1aW50NjRfdCkgc3ZjLT5jdXJfYnVkZ2V0OwogICAgICAg ICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1JVTlFfUElDSywgMSwKQEAgLTEwNjcsNiArMTA2Miw3 IEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qgbm93 LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgc3RydWN0IHJ0X3VuaXQgKmNvbnN0IHNj dXJyID0gcnRfdW5pdChjdXJyZW50LT5zY2hlZF91bml0KTsKICAgICBzdHJ1Y3QgcnRfdW5pdCAq c25leHQgPSBOVUxMOwogICAgIHN0cnVjdCB0YXNrX3NsaWNlIHJldCA9IHsgLm1pZ3JhdGVkID0g MCB9OworICAgIHN0cnVjdCBzY2hlZF91bml0ICpjdXJydW5pdCA9IGN1cnJlbnQtPnNjaGVkX3Vu aXQ7CiAKICAgICAvKiBUUkFDRSAqLwogICAgIHsKQEAgLTEwNzYsNyArMTA3Miw3IEBAIHJ0X3Nj aGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29sX3Qg dGFza2xldF93b3JrX3NjaGVkCiAgICAgICAgIGQuY3B1ID0gY3B1OwogICAgICAgICBkLnRhc2ts ZXQgPSB0YXNrbGV0X3dvcmtfc2NoZWR1bGVkOwogICAgICAgICBkLnRpY2tsZWQgPSBjcHVtYXNr X3Rlc3RfY3B1KGNwdSwgJnBydi0+dGlja2xlZCk7Ci0gICAgICAgIGQuaWRsZSA9IGlzX2lkbGVf dmNwdShjdXJyZW50KTsKKyAgICAgICAgZC5pZGxlID0gaXNfaWRsZV91bml0KGN1cnJ1bml0KTsK ICAgICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1NDSEVEVUxFLCAxLAogICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGQpLAogICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikmZCk7CkBA IC0xMDg1LDcyICsxMDgxLDcwIEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgc190aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgLyogY2xl YXIgdGlja2VkIGJpdCBub3cgdGhhdCB3ZSd2ZSBiZWVuIHNjaGVkdWxlZCAqLwogICAgIGNwdW1h c2tfY2xlYXJfY3B1KGNwdSwgJnBydi0+dGlja2xlZCk7CiAKLSAgICAvKiBidXJuX2J1ZGdldCB3 b3VsZCByZXR1cm4gZm9yIElETEUgVkNQVSAqLworICAgIC8qIGJ1cm5fYnVkZ2V0IHdvdWxkIHJl dHVybiBmb3IgSURMRSBVTklUICovCiAgICAgYnVybl9idWRnZXQob3BzLCBzY3Vyciwgbm93KTsK IAogICAgIGlmICggdGFza2xldF93b3JrX3NjaGVkdWxlZCApCiAgICAgewogICAgICAgICB0cmFj ZV92YXIoVFJDX1JURFNfU0NIRURfVEFTS0xFVCwgMSwgMCwgIE5VTEwpOwotICAgICAgICBzbmV4 dCA9IHJ0X3VuaXQoaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICBzbmV4dCA9 IHJ0X3VuaXQoc2NoZWRfaWRsZV91bml0KGNwdSkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewog ICAgICAgICBzbmV4dCA9IHJ1bnFfcGljayhvcHMsIGNwdW1hc2tfb2YoY3B1KSk7CiAgICAgICAg IGlmICggc25leHQgPT0gTlVMTCApCi0gICAgICAgICAgICBzbmV4dCA9IHJ0X3VuaXQoaWRsZV92 Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgc25leHQgPSBydF91bml0KHNjaGVk X2lkbGVfdW5pdChjcHUpKTsKIAogICAgICAgICAvKiBpZiBzY3VyciBoYXMgaGlnaGVyIHByaW9y aXR5IGFuZCBidWRnZXQsIHN0aWxsIHBpY2sgc2N1cnIgKi8KLSAgICAgICAgaWYgKCAhaXNfaWRs ZV92Y3B1KGN1cnJlbnQpICYmCi0gICAgICAgICAgICAgdmNwdV9ydW5uYWJsZShjdXJyZW50KSAm JgorICAgICAgICBpZiAoICFpc19pZGxlX3VuaXQoY3VycnVuaXQpICYmCisgICAgICAgICAgICAg dW5pdF9ydW5uYWJsZShjdXJydW5pdCkgJiYKICAgICAgICAgICAgICBzY3Vyci0+Y3VyX2J1ZGdl dCA+IDAgJiYKLSAgICAgICAgICAgICAoIGlzX2lkbGVfdmNwdShzbmV4dC0+dmNwdSkgfHwKLSAg ICAgICAgICAgICAgIGNvbXBhcmVfdmNwdV9wcmlvcml0eShzY3Vyciwgc25leHQpID4gMCApICkK KyAgICAgICAgICAgICAoIGlzX2lkbGVfdW5pdChzbmV4dC0+dW5pdCkgfHwKKyAgICAgICAgICAg ICAgIGNvbXBhcmVfdW5pdF9wcmlvcml0eShzY3Vyciwgc25leHQpID4gMCApICkKICAgICAgICAg ICAgIHNuZXh0ID0gc2N1cnI7CiAgICAgfQogCiAgICAgaWYgKCBzbmV4dCAhPSBzY3VyciAmJgot ICAgICAgICAgIWlzX2lkbGVfdmNwdShjdXJyZW50KSAmJgotICAgICAgICAgdmNwdV9ydW5uYWJs ZShjdXJyZW50KSApCisgICAgICAgICAhaXNfaWRsZV91bml0KGN1cnJ1bml0KSAmJgorICAgICAg ICAgdW5pdF9ydW5uYWJsZShjdXJydW5pdCkgKQogICAgICAgICBfX3NldF9iaXQoX19SVERTX2Rl bGF5ZWRfcnVucV9hZGQsICZzY3Vyci0+ZmxhZ3MpOwogCiAgICAgc25leHQtPmxhc3Rfc3RhcnQg PSBub3c7Ci0gICAgcmV0LnRpbWUgPSAgLTE7IC8qIGlmIGFuIGlkbGUgdmNwdSBpcyBwaWNrZWQg Ki8KLSAgICBpZiAoICFpc19pZGxlX3ZjcHUoc25leHQtPnZjcHUpICkKKyAgICByZXQudGltZSA9 ICAtMTsgLyogaWYgYW4gaWRsZSB1bml0IGlzIHBpY2tlZCAqLworICAgIGlmICggIWlzX2lkbGVf dW5pdChzbmV4dC0+dW5pdCkgKQogICAgIHsKICAgICAgICAgaWYgKCBzbmV4dCAhPSBzY3VyciAp CiAgICAgICAgIHsKICAgICAgICAgICAgIHFfcmVtb3ZlKHNuZXh0KTsKICAgICAgICAgICAgIF9f c2V0X2JpdChfX1JURFNfc2NoZWR1bGVkLCAmc25leHQtPmZsYWdzKTsKICAgICAgICAgfQotICAg ICAgICBpZiAoIHNuZXh0LT52Y3B1LT5wcm9jZXNzb3IgIT0gY3B1ICkKKyAgICAgICAgaWYgKCBz Y2hlZF91bml0X2NwdShzbmV4dC0+dW5pdCkgIT0gY3B1ICkKICAgICAgICAgewotICAgICAgICAg ICAgc25leHQtPnZjcHUtPnByb2Nlc3NvciA9IGNwdTsKLSAgICAgICAgICAgIHNuZXh0LT52Y3B1 LT5zY2hlZF91bml0LT5yZXMgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CisgICAgICAgICAgICBzY2hl ZF9zZXRfcmVzKHNuZXh0LT51bml0LCBnZXRfc2NoZWRfcmVzKGNwdSkpOwogICAgICAgICAgICAg cmV0Lm1pZ3JhdGVkID0gMTsKICAgICAgICAgfQogICAgICAgICByZXQudGltZSA9IHNuZXh0LT5j dXJfYnVkZ2V0OyAvKiBpbnZva2UgdGhlIHNjaGVkdWxlciBuZXh0IHRpbWUgKi8KICAgICB9Ci0g ICAgcmV0LnRhc2sgPSBzbmV4dC0+dmNwdS0+c2NoZWRfdW5pdDsKKyAgICByZXQudGFzayA9IHNu ZXh0LT51bml0OwogCiAgICAgcmV0dXJuIHJldDsKIH0KIAogLyoKLSAqIFJlbW92ZSBWQ1BVIGZy b20gUnVuUQorICogUmVtb3ZlIFVOSVQgZnJvbSBSdW5RCiAgKiBUaGUgbG9jayBpcyBhbHJlYWR5 IGdyYWJiZWQgaW4gc2NoZWR1bGUuYywgbm8gbmVlZCB0byBsb2NrIGhlcmUKICAqLwogc3RhdGlj IHZvaWQKIHJ0X3VuaXRfc2xlZXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qg c2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1X2xp c3Q7CiAgICAgc3RydWN0IHJ0X3VuaXQgKiBjb25zdCBzdmMgPSBydF91bml0KHVuaXQpOwogCi0g ICAgQlVHX09OKCBpc19pZGxlX3ZjcHUodmMpICk7CisgICAgQlVHX09OKCBpc19pZGxlX3VuaXQo dW5pdCkgKTsKICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfc2xlZXApOwogCi0gICAgaWYgKCBj dXJyX29uX2NwdSh2Yy0+cHJvY2Vzc29yKSA9PSB1bml0ICkKLSAgICAgICAgY3B1X3JhaXNlX3Nv ZnRpcnEodmMtPnByb2Nlc3NvciwgU0NIRURVTEVfU09GVElSUSk7Ci0gICAgZWxzZSBpZiAoIHZj cHVfb25fcShzdmMpICkKKyAgICBpZiAoIGN1cnJfb25fY3B1KHNjaGVkX3VuaXRfY3B1KHVuaXQp KSA9PSB1bml0ICkKKyAgICAgICAgY3B1X3JhaXNlX3NvZnRpcnEoc2NoZWRfdW5pdF9jcHUodW5p dCksIFNDSEVEVUxFX1NPRlRJUlEpOworICAgIGVsc2UgaWYgKCB1bml0X29uX3Eoc3ZjKSApCiAg ICAgewogICAgICAgICBxX3JlbW92ZShzdmMpOwogICAgICAgICByZXBscV9yZW1vdmUob3BzLCBz dmMpOwpAQCAtMTE2MCwyMCArMTE1NCwyMCBAQCBydF91bml0X3NsZWVwKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiB9CiAKIC8qCi0gKiBQaWNr IGEgY3B1IHdoZXJlIHRvIHJ1biBhIHZjcHUsCi0gKiBwb3NzaWJseSBraWNraW5nIG91dCB0aGUg dmNwdSBydW5uaW5nIHRoZXJlCisgKiBQaWNrIGEgY3B1IHdoZXJlIHRvIHJ1biBhbiB1bml0LAor ICogcG9zc2libHkga2lja2luZyBvdXQgdGhlIHVuaXQgcnVubmluZyB0aGVyZQogICogQ2FsbGVk IGJ5IHdha2UoKSBhbmQgY29udGV4dF9zYXZlZCgpCiAgKiBXZSBoYXZlIGEgcnVubmluZyBjYW5k aWRhdGUgaGVyZSwgdGhlIGtpY2sgbG9naWMgaXM6CiAgKiBBbW9uZyBhbGwgdGhlIGNwdXMgdGhh dCBhcmUgd2l0aGluIHRoZSBjcHUgYWZmaW5pdHkKICAqIDEpIGlmIHRoZXJlIGFyZSBhbnkgaWRs ZSBDUFVzLCBraWNrIG9uZS4KICAgICAgIEZvciBjYWNoZSBiZW5lZml0LCB3ZSBjaGVjayBuZXct PmNwdSBhcyBmaXJzdAogICogMikgbm93IGFsbCBwY3B1cyBhcmUgYnVzeTsKLSAqICAgIGFtb25n IGFsbCB0aGUgcnVubmluZyB2Y3B1cywgcGljayBsb3dlc3QgcHJpb3JpdHkgb25lCisgKiAgICBh bW9uZyBhbGwgdGhlIHJ1bm5pbmcgdW5pdHMsIHBpY2sgbG93ZXN0IHByaW9yaXR5IG9uZQogICog ICAgaWYgc25leHQgaGFzIGhpZ2hlciBwcmlvcml0eSwga2ljayBpdC4KICAqCiAgKiBUT0RPOgot ICogMSkgd2hhdCBpZiB0aGVzZSB0d28gdmNwdXMgYmVsb25ncyB0byB0aGUgc2FtZSBkb21haW4/ Ci0gKiAgICByZXBsYWNlIGEgdmNwdSBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgZG9tYWluIGludHJv ZHVjZXMgbW9yZSBvdmVyaGVhZAorICogMSkgd2hhdCBpZiB0aGVzZSB0d28gdW5pdHMgYmVsb25n cyB0byB0aGUgc2FtZSBkb21haW4/CisgKiAgICByZXBsYWNlIGFuIHVuaXQgYmVsb25naW5nIHRv IHRoZSBzYW1lIGRvbWFpbiBpbnRyb2R1Y2VzIG1vcmUgb3ZlcmhlYWQKICAqCiAgKiBsb2NrIGlz IGdyYWJiZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbgogICovCkBAIC0xMTgxLDE4ICsx MTc1LDE4IEBAIHN0YXRpYyB2b2lkCiBydW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCBydF91bml0ICpuZXcpCiB7CiAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBy diA9IHJ0X3ByaXYob3BzKTsKLSAgICBzdHJ1Y3QgcnRfdW5pdCAqbGF0ZXN0X2RlYWRsaW5lX3Zj cHUgPSBOVUxMOyAvKiBsb3dlc3QgcHJpb3JpdHkgKi8KKyAgICBzdHJ1Y3QgcnRfdW5pdCAqbGF0 ZXN0X2RlYWRsaW5lX3VuaXQgPSBOVUxMOyAvKiBsb3dlc3QgcHJpb3JpdHkgKi8KICAgICBzdHJ1 Y3QgcnRfdW5pdCAqaXRlcl9zdmM7Ci0gICAgc3RydWN0IHZjcHUgKml0ZXJfdmM7CisgICAgc3Ry dWN0IHNjaGVkX3VuaXQgKml0ZXJfdW5pdDsKICAgICBpbnQgY3B1ID0gMCwgY3B1X3RvX3RpY2ts ZSA9IDA7CiAgICAgY3B1bWFza190IG5vdF90aWNrbGVkOwogICAgIGNwdW1hc2tfdCAqb25saW5l OwogCi0gICAgaWYgKCBuZXcgPT0gTlVMTCB8fCBpc19pZGxlX3ZjcHUobmV3LT52Y3B1KSApCisg ICAgaWYgKCBuZXcgPT0gTlVMTCB8fCBpc19pZGxlX3VuaXQobmV3LT51bml0KSApCiAgICAgICAg IHJldHVybjsKIAotICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWluX2NwdW1hc2sobmV3LT52Y3B1 LT5kb21haW4pOwotICAgIGNwdW1hc2tfYW5kKCZub3RfdGlja2xlZCwgb25saW5lLCBuZXctPnZj cHUtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICBvbmxpbmUgPSBjcHVwb29s X2RvbWFpbl9jcHVtYXNrKG5ldy0+dW5pdC0+ZG9tYWluKTsKKyAgICBjcHVtYXNrX2FuZCgmbm90 X3RpY2tsZWQsIG9ubGluZSwgbmV3LT51bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgY3B1 bWFza19hbmRub3QoJm5vdF90aWNrbGVkLCAmbm90X3RpY2tsZWQsICZwcnYtPnRpY2tsZWQpOwog CiAgICAgLyoKQEAgLTEyMDAsMzEgKzExOTQsMzEgQEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqbmV3KQogICAgICAqICAgIEZvciBjYWNo ZSBiZW5lZml0LHdlIGZpcnN0IHNlYXJjaCBuZXctPmNwdS4KICAgICAgKiAgICBUaGUgc2FtZSBs b29wIGFsc28gZmluZCB0aGUgb25lIHdpdGggbG93ZXN0IHByaW9yaXR5LgogICAgICAqLwotICAg IGNwdSA9IGNwdW1hc2tfdGVzdF9vcl9jeWNsZShuZXctPnZjcHUtPnByb2Nlc3NvciwgJm5vdF90 aWNrbGVkKTsKKyAgICBjcHUgPSBjcHVtYXNrX3Rlc3Rfb3JfY3ljbGUoc2NoZWRfdW5pdF9jcHUo bmV3LT51bml0KSwgJm5vdF90aWNrbGVkKTsKICAgICB3aGlsZSAoIGNwdSE9IG5yX2NwdV9pZHMg KQogICAgIHsKLSAgICAgICAgaXRlcl92YyA9IGN1cnJfb25fY3B1KGNwdSktPnZjcHVfbGlzdDsK LSAgICAgICAgaWYgKCBpc19pZGxlX3ZjcHUoaXRlcl92YykgKQorICAgICAgICBpdGVyX3VuaXQg PSBjdXJyX29uX2NwdShjcHUpOworICAgICAgICBpZiAoIGlzX2lkbGVfdW5pdChpdGVyX3VuaXQp ICkKICAgICAgICAgewogICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh0aWNrbGVkX2lkbGVf Y3B1KTsKICAgICAgICAgICAgIGNwdV90b190aWNrbGUgPSBjcHU7CiAgICAgICAgICAgICBnb3Rv IG91dDsKICAgICAgICAgfQotICAgICAgICBpdGVyX3N2YyA9IHJ0X3VuaXQoaXRlcl92Yy0+c2No ZWRfdW5pdCk7Ci0gICAgICAgIGlmICggbGF0ZXN0X2RlYWRsaW5lX3ZjcHUgPT0gTlVMTCB8fAot ICAgICAgICAgICAgIGNvbXBhcmVfdmNwdV9wcmlvcml0eShpdGVyX3N2YywgbGF0ZXN0X2RlYWRs aW5lX3ZjcHUpIDwgMCApCi0gICAgICAgICAgICBsYXRlc3RfZGVhZGxpbmVfdmNwdSA9IGl0ZXJf c3ZjOworICAgICAgICBpdGVyX3N2YyA9IHJ0X3VuaXQoaXRlcl91bml0KTsKKyAgICAgICAgaWYg KCBsYXRlc3RfZGVhZGxpbmVfdW5pdCA9PSBOVUxMIHx8CisgICAgICAgICAgICAgY29tcGFyZV91 bml0X3ByaW9yaXR5KGl0ZXJfc3ZjLCBsYXRlc3RfZGVhZGxpbmVfdW5pdCkgPCAwICkKKyAgICAg ICAgICAgIGxhdGVzdF9kZWFkbGluZV91bml0ID0gaXRlcl9zdmM7CiAKICAgICAgICAgY3B1bWFz a19jbGVhcl9jcHUoY3B1LCAmbm90X3RpY2tsZWQpOwogICAgICAgICBjcHUgPSBjcHVtYXNrX2N5 Y2xlKGNwdSwgJm5vdF90aWNrbGVkKTsKICAgICB9CiAKLSAgICAvKiAyKSBjYW5kaWNhdGUgaGFz IGhpZ2hlciBwcmlvcml0eSwga2ljayBvdXQgbG93ZXN0IHByaW9yaXR5IHZjcHUgKi8KLSAgICBp ZiAoIGxhdGVzdF9kZWFkbGluZV92Y3B1ICE9IE5VTEwgJiYKLSAgICAgICAgIGNvbXBhcmVfdmNw dV9wcmlvcml0eShsYXRlc3RfZGVhZGxpbmVfdmNwdSwgbmV3KSA8IDAgKQorICAgIC8qIDIpIGNh bmRpY2F0ZSBoYXMgaGlnaGVyIHByaW9yaXR5LCBraWNrIG91dCBsb3dlc3QgcHJpb3JpdHkgdW5p dCAqLworICAgIGlmICggbGF0ZXN0X2RlYWRsaW5lX3VuaXQgIT0gTlVMTCAmJgorICAgICAgICAg Y29tcGFyZV91bml0X3ByaW9yaXR5KGxhdGVzdF9kZWFkbGluZV91bml0LCBuZXcpIDwgMCApCiAg ICAgewogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHRpY2tsZWRfYnVzeV9jcHUpOwotICAgICAg ICBjcHVfdG9fdGlja2xlID0gbGF0ZXN0X2RlYWRsaW5lX3ZjcHUtPnZjcHUtPnByb2Nlc3NvcjsK KyAgICAgICAgY3B1X3RvX3RpY2tsZSA9IHNjaGVkX3VuaXRfY3B1KGxhdGVzdF9kZWFkbGluZV91 bml0LT51bml0KTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCkBAIC0xMjUwLDM1ICsxMjQ0 LDM0IEBAIHJ1bnFfdGlja2xlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0 X3VuaXQgKm5ldykKIH0KIAogLyoKLSAqIFNob3VsZCBhbHdheXMgd2FrZSB1cCBydW5uYWJsZSB2 Y3B1LCBwdXQgaXQgYmFjayB0byBSdW5RLgorICogU2hvdWxkIGFsd2F5cyB3YWtlIHVwIHJ1bm5h YmxlIHVuaXQsIHB1dCBpdCBiYWNrIHRvIFJ1blEuCiAgKiBDaGVjayBwcmlvcml0eSB0byByYWlz ZSBpbnRlcnJ1cHQKICAqIFRoZSBsb2NrIGlzIGFscmVhZHkgZ3JhYmJlZCBpbiBzY2hlZHVsZS5j LCBubyBuZWVkIHRvIGxvY2sgaGVyZQotICogVE9ETzogd2hhdCBpZiB0aGVzZSB0d28gdmNwdXMg YmVsb25ncyB0byB0aGUgc2FtZSBkb21haW4/CisgKiBUT0RPOiB3aGF0IGlmIHRoZXNlIHR3byB1 bml0cyBiZWxvbmdzIHRvIHRoZSBzYW1lIGRvbWFpbj8KICAqLwogc3RhdGljIHZvaWQKIHJ0X3Vu aXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1 bml0KQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1 Y3QgcnRfdW5pdCAqIGNvbnN0IHN2YyA9IHJ0X3VuaXQodW5pdCk7CiAgICAgc190aW1lX3Qgbm93 OwogICAgIGJvb2xfdCBtaXNzZWQ7CiAKLSAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsK KyAgICBCVUdfT04oIGlzX2lkbGVfdW5pdCh1bml0KSApOwogCi0gICAgaWYgKCB1bmxpa2VseShj dXJyX29uX2NwdSh2Yy0+cHJvY2Vzc29yKSA9PSB1bml0KSApCisgICAgaWYgKCB1bmxpa2VseShj dXJyX29uX2NwdShzY2hlZF91bml0X2NwdSh1bml0KSkgPT0gdW5pdCkgKQogICAgIHsKICAgICAg ICAgU0NIRURfU1RBVF9DUkFOSyh1bml0X3dha2VfcnVubmluZyk7CiAgICAgICAgIHJldHVybjsK ICAgICB9CiAKICAgICAvKiBvbiBSdW5RL0RlcGxldGVkUSwganVzdCB1cGRhdGUgaW5mbyBpcyBv ayAqLwotICAgIGlmICggdW5saWtlbHkodmNwdV9vbl9xKHN2YykpICkKKyAgICBpZiAoIHVubGlr ZWx5KHVuaXRfb25fcShzdmMpKSApCiAgICAgewogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVu aXRfd2FrZV9vbnJ1bnEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCBsaWtl bHkodmNwdV9ydW5uYWJsZSh2YykpICkKKyAgICBpZiAoIGxpa2VseSh1bml0X3J1bm5hYmxlKHVu aXQpKSApCiAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF93YWtlX3J1bm5hYmxlKTsKICAg ICBlbHNlCiAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF93YWtlX25vdF9ydW5uYWJsZSk7 CkBAIC0xMjk0LDE2ICsxMjg3LDE2IEBAIHJ0X3VuaXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgICAgICBydF91cGRhdGVfZGVh ZGxpbmUobm93LCBzdmMpOwogCiAgICAgLyoKLSAgICAgKiBJZiBjb250ZXh0IGhhc24ndCBiZWVu IHNhdmVkIGZvciB0aGlzIHZjcHUgeWV0LCB3ZSBjYW4ndCBwdXQgaXQgb24KKyAgICAgKiBJZiBj b250ZXh0IGhhc24ndCBiZWVuIHNhdmVkIGZvciB0aGlzIHVuaXQgeWV0LCB3ZSBjYW4ndCBwdXQg aXQgb24KICAgICAgKiB0aGUgcnVuLXF1ZXVlL2RlcGxldGVkLXF1ZXVlLiBJbnN0ZWFkLCB3ZSBz ZXQgdGhlIGFwcHJvcHJpYXRlIGZsYWcsCi0gICAgICogdGhlIHZjcHUgd2lsbCBiZSBwdXQgYmFj ayBvbiBxdWV1ZSBhZnRlciB0aGUgY29udGV4dCBoYXMgYmVlbiBzYXZlZAorICAgICAqIHRoZSB1 bml0IHdpbGwgYmUgcHV0IGJhY2sgb24gcXVldWUgYWZ0ZXIgdGhlIGNvbnRleHQgaGFzIGJlZW4g c2F2ZWQKICAgICAgKiAoaW4gcnRfY29udGV4dF9zYXZlKCkpLgogICAgICAqLwogICAgIGlmICgg dW5saWtlbHkoc3ZjLT5mbGFncyAmIFJURFNfc2NoZWR1bGVkKSApCiAgICAgewogICAgICAgICBf X3NldF9iaXQoX19SVERTX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKTsKICAgICAgICAg LyoKLSAgICAgICAgICogVGhlIHZjcHUgaXMgd2FraW5nIHVwIGFscmVhZHksIGFuZCB3ZSBkaWRu J3QgZXZlbiBoYWQgdGhlIHRpbWUgdG8KKyAgICAgICAgICogVGhlIHVuaXQgaXMgd2FraW5nIHVw IGFscmVhZHksIGFuZCB3ZSBkaWRuJ3QgZXZlbiBoYWQgdGhlIHRpbWUgdG8KICAgICAgICAgICog cmVtb3ZlIGl0cyBuZXh0IHJlcGxlbmlzaG1lbnQgZXZlbnQgZnJvbSB0aGUgcmVwbGVuaXNobWVu dCBxdWV1ZQogICAgICAgICAgKiB3aGVuIGl0IGJsb2NrZWQhIE5vIGJpZyBkZWFsLiBJZiB3ZSBk aWQgbm90IG1pc3MgdGhlIGRlYWRsaW5lIGluCiAgICAgICAgICAqIHRoZSBtZWFudGltZSwgbGV0 J3MganVzdCBsZWF2ZSBpdCB0aGVyZS4gSWYgd2UgZGlkLCBsZXQncyByZW1vdmUgaXQKQEAgLTEz MjQsMjIgKzEzMTcsMjEgQEAgcnRfdW5pdF93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAKIC8qCiAgKiBzY3VyciBoYXMgZmluaXNoZWQg Y29udGV4dCBzd2l0Y2gsIGluc2VydCBpdCBiYWNrIHRvIHRoZSBSdW5RLAotICogYW5kIHRoZW4g cGljayB0aGUgaGlnaGVzdCBwcmlvcml0eSB2Y3B1IGZyb20gcnVucSB0byBydW4KKyAqIGFuZCB0 aGVuIHBpY2sgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdW5pdCBmcm9tIHJ1bnEgdG8gcnVuCiAgKi8K IHN0YXRpYyB2b2lkCiBydF9jb250ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5p dC0+dmNwdV9saXN0OwogICAgIHN0cnVjdCBydF91bml0ICpzdmMgPSBydF91bml0KHVuaXQpOwog ICAgIHNwaW5sb2NrX3QgKmxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwogCiAg ICAgX19jbGVhcl9iaXQoX19SVERTX3NjaGVkdWxlZCwgJnN2Yy0+ZmxhZ3MpOwotICAgIC8qIG5v dCBpbnNlcnQgaWRsZSB2Y3B1IHRvIHJ1bnEgKi8KLSAgICBpZiAoIGlzX2lkbGVfdmNwdSh2Yykg KQorICAgIC8qIG5vdCBpbnNlcnQgaWRsZSB1bml0IHRvIHJ1bnEgKi8KKyAgICBpZiAoIGlzX2lk bGVfdW5pdCh1bml0KSApCiAgICAgICAgIGdvdG8gb3V0OwogCiAgICAgaWYgKCBfX3Rlc3RfYW5k X2NsZWFyX2JpdChfX1JURFNfZGVsYXllZF9ydW5xX2FkZCwgJnN2Yy0+ZmxhZ3MpICYmCi0gICAg ICAgICBsaWtlbHkodmNwdV9ydW5uYWJsZSh2YykpICkKKyAgICAgICAgIGxpa2VseSh1bml0X3J1 bm5hYmxlKHVuaXQpKSApCiAgICAgewogICAgICAgICBydW5xX2luc2VydChvcHMsIHN2Yyk7CiAg ICAgICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjKTsKQEAgLTEzNTIsNyArMTM0NCw3IEBAIG91dDoK IH0KIAogLyoKLSAqIHNldC9nZXQgZWFjaCB2Y3B1IGluZm8gb2YgZWFjaCBkb21haW4KKyAqIHNl dC9nZXQgZWFjaCB1bml0IGluZm8gb2YgZWFjaCBkb21haW4KICAqLwogc3RhdGljIGludAogcnRf ZG9tX2NudGwoCkBAIC0xMzYyLDcgKzEzNTQsNyBAQCBydF9kb21fY250bCgKIHsKICAgICBzdHJ1 Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwogICAgIHN0cnVjdCBydF91bml0ICpz dmM7Ci0gICAgc3RydWN0IHZjcHUgKnY7CisgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQ7CiAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBpbnQgcmMgPSAwOwogICAgIHN0cnVjdCB4ZW5f ZG9tY3RsX3NjaGVkcGFyYW1fdmNwdSBsb2NhbF9zY2hlZDsKQEAgLTEzODMsOSArMTM3NSw5IEBA IHJ0X2RvbV9jbnRsKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgc3Bp bl9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwotICAgICAgICBmb3JfZWFjaF92Y3B1 ICggZCwgdiApCisgICAgICAgIGZvcl9lYWNoX3NjaGVkX3VuaXQgKCBkLCB1bml0ICkKICAgICAg ICAgewotICAgICAgICAgICAgc3ZjID0gcnRfdW5pdCh2LT5zY2hlZF91bml0KTsKKyAgICAgICAg ICAgIHN2YyA9IHJ0X3VuaXQodW5pdCk7CiAgICAgICAgICAgICBzdmMtPnBlcmlvZCA9IE1JQ1JP U0VDUyhvcC0+dS5ydGRzLnBlcmlvZCk7IC8qIHRyYW5zZmVyIHRvIG5hbm9zZWMgKi8KICAgICAg ICAgICAgIHN2Yy0+YnVkZ2V0ID0gTUlDUk9TRUNTKG9wLT51LnJ0ZHMuYnVkZ2V0KTsKICAgICAg ICAgfQpAQCAtMTQ1Myw3ICsxNDQ1LDcgQEAgcnRfZG9tX2NudGwoCiAgICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCAhcmMgKQotICAgICAgICAgICAgLyogbm90 aWZ5IHVwcGVyIGNhbGxlciBob3cgbWFueSB2Y3B1cyBoYXZlIGJlZW4gcHJvY2Vzc2VkLiAqLwor ICAgICAgICAgICAgLyogbm90aWZ5IHVwcGVyIGNhbGxlciBob3cgbWFueSB1bml0cyBoYXZlIGJl ZW4gcHJvY2Vzc2VkLiAqLwogICAgICAgICAgICAgb3AtPnUudi5ucl92Y3B1cyA9IGluZGV4Owog ICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDYyLDcgKzE0NTQsNyBAQCBydF9kb21fY250bCgK IH0KIAogLyoKLSAqIFRoZSByZXBsZW5pc2htZW50IHRpbWVyIGhhbmRsZXIgcGlja3MgdmNwdXMK KyAqIFRoZSByZXBsZW5pc2htZW50IHRpbWVyIGhhbmRsZXIgcGlja3MgdW5pdHMKICAqIGZyb20g dGhlIHJlcGxxIGFuZCBkb2VzIHRoZSBhY3R1YWwgcmVwbGVuaXNobWVudC4KICAqLwogc3RhdGlj IHZvaWQgcmVwbF90aW1lcl9oYW5kbGVyKHZvaWQgKmRhdGEpewpAQCAtMTQ4MCw3ICsxNDcyLDcg QEAgc3RhdGljIHZvaWQgcmVwbF90aW1lcl9oYW5kbGVyKHZvaWQgKmRhdGEpewogICAgIG5vdyA9 IE5PVygpOwogCiAgICAgLyoKLSAgICAgKiBEbyB0aGUgcmVwbGVuaXNobWVudCBhbmQgbW92ZSBy ZXBsZW5pc2hlZCB2Y3B1cworICAgICAqIERvIHRoZSByZXBsZW5pc2htZW50IGFuZCBtb3ZlIHJl cGxlbmlzaGVkIHVuaXRzCiAgICAgICogdG8gdGhlIHRlbXBvcmFyeSBsaXN0IHRvIHRpY2tsZS4K ICAgICAgKiBJZiBzdmMgaXMgb24gcnVuIHF1ZXVlLCB3ZSBuZWVkIHRvIHB1dCBpdCBhdAogICAg ICAqIHRoZSBjb3JyZWN0IHBsYWNlIHNpbmNlIGl0cyBkZWFkbGluZSBjaGFuZ2VzLgpAQCAtMTQ5 Niw3ICsxNDg4LDcgQEAgc3RhdGljIHZvaWQgcmVwbF90aW1lcl9oYW5kbGVyKHZvaWQgKmRhdGEp ewogICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOwogICAgICAgICBsaXN0X2Fk ZCgmc3ZjLT5yZXBscV9lbGVtLCAmdG1wX3JlcGxxKTsKIAotICAgICAgICBpZiAoIHZjcHVfb25f cShzdmMpICkKKyAgICAgICAgaWYgKCB1bml0X29uX3Eoc3ZjKSApCiAgICAgICAgIHsKICAgICAg ICAgICAgIHFfcmVtb3ZlKHN2Yyk7CiAgICAgICAgICAgICBydW5xX2luc2VydChvcHMsIHN2Yyk7 CkBAIC0xNTA0LDI2ICsxNDk2LDI2IEBAIHN0YXRpYyB2b2lkIHJlcGxfdGltZXJfaGFuZGxlcih2 b2lkICpkYXRhKXsKICAgICB9CiAKICAgICAvKgotICAgICAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUg bGlzdCBvZiB1cGRhdGVkIHZjcHVzLgotICAgICAqIElmIGFuIHVwZGF0ZWQgdmNwdSBpcyBydW5u aW5nLCB0aWNrbGUgdGhlIGhlYWQgb2YgdGhlCisgICAgICogSXRlcmF0ZSB0aHJvdWdoIHRoZSBs aXN0IG9mIHVwZGF0ZWQgdW5pdHMuCisgICAgICogSWYgYW4gdXBkYXRlZCB1bml0IGlzIHJ1bm5p bmcsIHRpY2tsZSB0aGUgaGVhZCBvZiB0aGUKICAgICAgKiBydW5xdWV1ZSBpZiBpdCBoYXMgYSBo aWdoZXIgcHJpb3JpdHkuCi0gICAgICogSWYgYW4gdXBkYXRlZCB2Y3B1IHdhcyBkZXBsZXRlZCBh bmQgb24gdGhlIHJ1bnF1ZXVlLCB0aWNrbGUgaXQuCi0gICAgICogRmluYWxseSwgcmVpbnNlcnQg dGhlIHZjcHVzIGJhY2sgdG8gcmVwbGVuaXNoZW1lbnQgZXZlbnRzIGxpc3QuCisgICAgICogSWYg YW4gdXBkYXRlZCB1bml0IHdhcyBkZXBsZXRlZCBhbmQgb24gdGhlIHJ1bnF1ZXVlLCB0aWNrbGUg aXQuCisgICAgICogRmluYWxseSwgcmVpbnNlcnQgdGhlIHVuaXRzIGJhY2sgdG8gcmVwbGVuaXNo ZW1lbnQgZXZlbnRzIGxpc3QuCiAgICAgICovCiAgICAgbGlzdF9mb3JfZWFjaF9zYWZlICggaXRl ciwgdG1wLCAmdG1wX3JlcGxxICkKICAgICB7CiAgICAgICAgIHN2YyA9IHJlcGxxX2VsZW0oaXRl cik7CiAKLSAgICAgICAgaWYgKCBjdXJyX29uX2NwdShzdmMtPnZjcHUtPnByb2Nlc3NvcikgPT0g c3ZjLT52Y3B1LT5zY2hlZF91bml0ICYmCisgICAgICAgIGlmICggY3Vycl9vbl9jcHUoc2NoZWRf dW5pdF9jcHUoc3ZjLT51bml0KSkgPT0gc3ZjLT51bml0ICYmCiAgICAgICAgICAgICAgIWxpc3Rf ZW1wdHkocnVucSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3QgcnRfdW5pdCAqbmV4 dF9vbl9ydW5xID0gcV9lbGVtKHJ1bnEtPm5leHQpOwogCi0gICAgICAgICAgICBpZiAoIGNvbXBh cmVfdmNwdV9wcmlvcml0eShzdmMsIG5leHRfb25fcnVucSkgPCAwICkKKyAgICAgICAgICAgIGlm ICggY29tcGFyZV91bml0X3ByaW9yaXR5KHN2YywgbmV4dF9vbl9ydW5xKSA8IDAgKQogICAgICAg ICAgICAgICAgIHJ1bnFfdGlja2xlKG9wcywgbmV4dF9vbl9ydW5xKTsKICAgICAgICAgfQogICAg ICAgICBlbHNlIGlmICggX190ZXN0X2FuZF9jbGVhcl9iaXQoX19SVERTX2RlcGxldGVkLCAmc3Zj LT5mbGFncykgJiYKLSAgICAgICAgICAgICAgICAgIHZjcHVfb25fcShzdmMpICkKKyAgICAgICAg ICAgICAgICAgIHVuaXRfb25fcShzdmMpICkKICAgICAgICAgICAgIHJ1bnFfdGlja2xlKG9wcywg c3ZjKTsKIAogICAgICAgICBsaXN0X2RlbCgmc3ZjLT5yZXBscV9lbGVtKTsKQEAgLTE1MzEsNyAr MTUyMyw3IEBAIHN0YXRpYyB2b2lkIHJlcGxfdGltZXJfaGFuZGxlcih2b2lkICpkYXRhKXsKICAg ICB9CiAKICAgICAvKgotICAgICAqIElmIHRoZXJlIGFyZSB2Y3B1cyBsZWZ0IGluIHRoZSByZXBs ZW5pc2htZW50IGV2ZW50IGxpc3QsCisgICAgICogSWYgdGhlcmUgYXJlIHVuaXRzIGxlZnQgaW4g dGhlIHJlcGxlbmlzaG1lbnQgZXZlbnQgbGlzdCwKICAgICAgKiBzZXQgdGhlIG5leHQgcmVwbGVu aXNobWVudCB0byBoYXBwZW4gYXQgdGhlIGRlYWRsaW5lIG9mCiAgICAgICogdGhlIG9uZSBpbiB0 aGUgZnJvbnQuCiAgICAgICovCi0tIAoyLjE2LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v bGlzdGluZm8veGVuLWRldmVs