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=-9.8 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 F013EC433FF for ; Fri, 9 Aug 2019 14:59:46 +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 ABE4620B7C for ; Fri, 9 Aug 2019 14:59:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ABE4620B7C 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 1hw6MY-0007lV-Kh; Fri, 09 Aug 2019 14:59:26 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw6M6-0006kX-Tb for xen-devel@lists.xenproject.org; Fri, 09 Aug 2019 14:58:59 +0000 X-Inumbo-ID: 2ee570fc-bab6-11e9-8980-bc764e045a96 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 2ee570fc-bab6-11e9-8980-bc764e045a96; Fri, 09 Aug 2019 14:58:45 +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 A3CBAB090; Fri, 9 Aug 2019 14:58:43 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Fri, 9 Aug 2019 16:58:02 +0200 Message-Id: <20190809145833.1020-18-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190809145833.1020-1-jgross@suse.com> References: <20190809145833.1020-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v2 17/48] xen/sched: make credit2 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 , 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" U3dpdGNoIGNyZWRpdDIgc2NoZWR1bGVyIGNvbXBsZXRlbHkgZnJvbSB2Y3B1IHRvIHNjaGVkX3Vu aXQgdXNhZ2UuCgpBcyB3ZSBhcmUgdG91Y2hpbmcgbG90cyBvZiBsaW5lcyByZW1vdmUgc29tZSB3 aGl0ZSBzcGFjZSBhdCB0aGUgZW5kIG9mCnRoZSBsaW5lLCB0b28uCgpTaWduZWQtb2ZmLWJ5OiBK dWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQogeGVuL2NvbW1vbi9zY2hlZF9jcmVk aXQyLmMgfCA4MjAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgNDAzIGluc2VydGlvbnMoKyksIDQxNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyBiL3hlbi9jb21tb24vc2NoZWRf Y3JlZGl0Mi5jCmluZGV4IDU0ODdkMDg3ZTEuLmUzYWM5YzU0NjAgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24vc2NoZWRfY3JlZGl0Mi5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCkBA IC00NSw3ICs0NSw3IEBACiAjZGVmaW5lIFRSQ19DU0NIRUQyX1NDSEVEX1RBU0tMRVQgICAgVFJD X1NDSEVEX0NMQVNTX0VWVChDU0NIRUQyLCA4KQogI2RlZmluZSBUUkNfQ1NDSEVEMl9VUERBVEVf TE9BRCAgICAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoQ1NDSEVEMiwgOSkKICNkZWZpbmUgVFJDX0NT Q0hFRDJfUlVOUV9BU1NJR04gICAgICBUUkNfU0NIRURfQ0xBU1NfRVZUKENTQ0hFRDIsIDEwKQot I2RlZmluZSBUUkNfQ1NDSEVEMl9VUERBVEVfVkNQVV9MT0FEIFRSQ19TQ0hFRF9DTEFTU19FVlQo Q1NDSEVEMiwgMTEpCisjZGVmaW5lIFRSQ19DU0NIRUQyX1VQREFURV9VTklUX0xPQUQgVFJDX1ND SEVEX0NMQVNTX0VWVChDU0NIRUQyLCAxMSkKICNkZWZpbmUgVFJDX0NTQ0hFRDJfVVBEQVRFX1JV TlFfTE9BRCBUUkNfU0NIRURfQ0xBU1NfRVZUKENTQ0hFRDIsIDEyKQogI2RlZmluZSBUUkNfQ1ND SEVEMl9USUNLTEVfTkVXICAgICAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoQ1NDSEVEMiwgMTMpCiAj ZGVmaW5lIFRSQ19DU0NIRUQyX1JVTlFfTUFYX1dFSUdIVCAgVFJDX1NDSEVEX0NMQVNTX0VWVChD U0NIRUQyLCAxNCkKQEAgLTc0LDEzICs3NCwxMyBAQAogICogRGVzaWduOgogICoKICAqIFZNcyAi YnVybiIgY3JlZGl0cyBiYXNlZCBvbiB0aGVpciB3ZWlnaHQ7IGhpZ2hlciB3ZWlnaHQgbWVhbnMK LSAqIGNyZWRpdHMgYnVybiBtb3JlIHNsb3dseS4gIFRoZSBoaWdoZXN0IHdlaWdodCB2Y3B1IGJ1 cm5zIGNyZWRpdHMgYXQKKyAqIGNyZWRpdHMgYnVybiBtb3JlIHNsb3dseS4gIFRoZSBoaWdoZXN0 IHdlaWdodCB1bml0IGJ1cm5zIGNyZWRpdHMgYXQKICAqIGEgcmF0ZSBvZiAxIGNyZWRpdCBwZXIg bmFub3NlY29uZC4gIE90aGVycyBidXJuIHByb3BvcnRpb25hbGx5CiAgKiBtb3JlLgogICoKLSAq IHZjcHVzIGFyZSBpbnNlcnRlZCBpbnRvIHRoZSBydW5xdWV1ZSBieSBjcmVkaXQgb3JkZXIuCisg KiB1bml0cyBhcmUgaW5zZXJ0ZWQgaW50byB0aGUgcnVucXVldWUgYnkgY3JlZGl0IG9yZGVyLgog ICoKLSAqIENyZWRpdHMgYXJlICJyZXNldCIgd2hlbiB0aGUgbmV4dCB2Y3B1IGluIHRoZSBydW5x dWV1ZSBpcyBsZXNzIHRoYW4KKyAqIENyZWRpdHMgYXJlICJyZXNldCIgd2hlbiB0aGUgbmV4dCB1 bml0IGluIHRoZSBydW5xdWV1ZSBpcyBsZXNzIHRoYW4KICAqIG9yIGVxdWFsIHRvIHplcm8uICBB dCB0aGF0IHBvaW50LCBldmVyeW9uZSdzIGNyZWRpdHMgYXJlICJjbGlwcGVkIgogICogdG8gYSBz bWFsbCB2YWx1ZSwgYW5kIGEgZml4ZWQgY3JlZGl0IGlzIGFkZGVkIHRvIGV2ZXJ5b25lLgogICov CkBAIC05NSwzMyArOTUsMzMgQEAKICAqICAgYmUgZ2l2ZW4gYSBjYXAgb2YgMjUlOyBhIGRvbWFp biB0aGF0IG11c3Qgbm90IHVzZSBtb3JlIHRoYW4gMSsxLzIgb2YKICAqICAgcGh5c2ljYWwgQ1BV IHRpbWUsIHdpbGwgYmUgZ2l2ZW4gYSBjYXAgb2YgMTUwJTsKICAqCi0gKiAtIGNhcHMgYXJlIHBl ci1kb21haW4gKG5vdCBwZXItdkNQVSkuIElmIGEgZG9tYWluIGhhcyBvbmx5IDEgdkNQVSwgYW5k Ci0gKiAgIGEgNDAlIGNhcCwgdGhhdCBvbmUgdkNQVSB3aWxsIHVzZSA0MCUgb2Ygb25lIHBDUFUu IElmIGEgc29tYWluIGhhcyA0Ci0gKiAgIHZDUFVzLCBhbmQgYSAyMDAlIGNhcCwgdGhlIGVxdWl2 YWxlbnQgb2YgMTAwJSB0aW1lIG9uIDIgcENQVXMgd2lsbCBiZQotICogICBzcGxpdCBhbW9uZyB0 aGUgdiB2Q1BVcy4gSG93IG11Y2ggZWFjaCBvZiB0aGUgdkNQVXMgd2lsbCBhY3R1YWxseSBnZXQs CisgKiAtIGNhcHMgYXJlIHBlci1kb21haW4gKG5vdCBwZXItdW5pdCkuIElmIGEgZG9tYWluIGhh cyBvbmx5IDEgdW5pdCwgYW5kCisgKiAgIGEgNDAlIGNhcCwgdGhhdCBvbmUgdW5pdCB3aWxsIHVz ZSA0MCUgb2Ygb25lIHBDUFUuIElmIGEgc29tYWluIGhhcyA0CisgKiAgIHVuaXRzLCBhbmQgYSAy MDAlIGNhcCwgdGhlIGVxdWl2YWxlbnQgb2YgMTAwJSB0aW1lIG9uIDIgcENQVXMgd2lsbCBiZQor ICogICBzcGxpdCBhbW9uZyB0aGUgdiB1bml0cy4gSG93IG11Y2ggZWFjaCBvZiB0aGUgdW5pdHMg d2lsbCBhY3R1YWxseSBnZXQsCiAgKiAgIGR1cmluZyBhbnkgZ2l2ZW4gaW50ZXJ2YWwgb2YgdGlt ZSwgaXMgdW5zcGVjaWZpZWQgKGFzIGl0IGRlcGVuZHMgb24KICAqICAgdmFyaW91cyBhc3BlY3Rz OiB3b3JrbG9hZCwgc3lzdGVtIGxvYWQsIGV0Yy4pLiBGb3IgaW5zdGFuY2UsIGl0IGlzCi0gKiAg IHBvc3NpYmxlIHRoYXQsIGR1cmluZyBhIGdpdmVuIHRpbWUgaW50ZXJ2YWwsIDIgdkNQVXMgdXNl IDEwMCUgZWFjaCwKKyAqICAgcG9zc2libGUgdGhhdCwgZHVyaW5nIGEgZ2l2ZW4gdGltZSBpbnRl cnZhbCwgMiB1bml0cyB1c2UgMTAwJSBlYWNoLAogICogICBhbmQgdGhlIG90aGVyIHR3byB1c2Ug bm90aGluZzsgd2hpbGUgZHVyaW5nIGFub3RoZXIgdGltZSBpbnRlcnZhbCwKLSAqICAgdHdvIHZD UFVzIHVzZSA4MCUsIG9uZSB1c2VzIDEwJSBhbmQgdGhlIG90aGVyIDMwJTsgb3IgdGhhdCBlYWNo IHVzZQorICogICB0d28gdW5pdHMgdXNlIDgwJSwgb25lIHVzZXMgMTAlIGFuZCB0aGUgb3RoZXIg MzAlOyBvciB0aGF0IGVhY2ggdXNlCiAgKiAgIDUwJSAoYW5kIHNvIG9uIGFuZCBzbyBmb3J0aCku CiAgKgogICogRm9yIGltcGxlbWVudGluZyB0aGlzLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBhcHBy b2FjaDoKICAqCiAgKiAtIGVhY2ggZG9tYWluIGlzIGdpdmVuIGEgJ2J1ZGdldCcsIGFuIGVhY2gg ZG9tYWluIGhhcyBhIHRpbWVyLCB3aGljaAogICogICByZXBsZW5pc2hlcyB0aGUgZG9tYWluJ3Mg YnVkZ2V0IHBlcmlvZGljYWxseS4gVGhlIGJ1ZGdldCBpcyB0aGUgYW1vdW50Ci0gKiAgIG9mIHRp bWUgdGhlIHZDUFVzIG9mIHRoZSBkb21haW4gY2FuIHVzZSBldmVyeSAncGVyaW9kJzsKKyAqICAg b2YgdGltZSB0aGUgdW5pdHMgb2YgdGhlIGRvbWFpbiBjYW4gdXNlIGV2ZXJ5ICdwZXJpb2QnOwog ICoKICAqIC0gdGhlIHBlcmlvZCBpcyBDU0NIRUQyX0JER1RfUkVQTF9QRVJJT0QsIGFuZCBpcyB0 aGUgc2FtZSBmb3IgYWxsIGRvbWFpbnMKICAqICAgKGJ1dCBlYWNoIGRvbWFpbiBoYXMgaXRzIG93 biB0aW1lcjsgc28gdGhlIGFsbCBhcmUgcGVyaW9kaWMgYnkgdGhlIHNhbWUKICAqICAgcGVyaW9k LCBidXQgcmVwbGVuaXNobWVudCBvZiB0aGUgYnVkZ2V0cyBvZiB0aGUgdmFyaW91cyBkb21haW5z LCBhdAogICogICBwZXJpb2RzIGJvdW5kYXJpZXMsIGFyZSBub3Qgc3luY2hyb25vdXMpOwogICoK LSAqIC0gd2hlbiB2Q1BVcyBydW4sIHRoZXkgY29uc3VtZSBidWRnZXQuIFdoZW4gdGhleSBkb24n dCBydW4sIHRoZXkgZG9uJ3QKLSAqICAgY29uc3VtZSBidWRnZXQuIElmIHRoZXJlIGlzIG5vIGJ1 ZGdldCBsZWZ0IGZvciB0aGUgZG9tYWluLCBubyB2Q1BVIG9mCi0gKiAgIHRoYXQgZG9tYWluIGNh biBydW4uIElmIGEgdkNQVSB0cmllcyB0byBydW4gYW5kIGZpbmRzIHRoYXQgdGhlcmUgaXMgbm8K KyAqIC0gd2hlbiB1bml0cyBydW4sIHRoZXkgY29uc3VtZSBidWRnZXQuIFdoZW4gdGhleSBkb24n dCBydW4sIHRoZXkgZG9uJ3QKKyAqICAgY29uc3VtZSBidWRnZXQuIElmIHRoZXJlIGlzIG5vIGJ1 ZGdldCBsZWZ0IGZvciB0aGUgZG9tYWluLCBubyB1bml0IG9mCisgKiAgIHRoYXQgZG9tYWluIGNh biBydW4uIElmIGFuIHVuaXQgdHJpZXMgdG8gcnVuIGFuZCBmaW5kcyB0aGF0IHRoZXJlIGlzIG5v CiAgKiAgIGJ1ZGdldCwgaXQgYmxvY2tzLgotICogICBBdCB3aGF0ZXZlciB0aW1lIGEgdkNQVSB3 YW50cyB0byBydW4sIGl0IG11c3QgY2hlY2sgdGhlIGRvbWFpbidzIGJ1ZGdldCwKKyAqICAgQXQg d2hhdGV2ZXIgdGltZSBhbiB1bml0IHdhbnRzIHRvIHJ1biwgaXQgbXVzdCBjaGVjayB0aGUgZG9t YWluJ3MgYnVkZ2V0LAogICogICBhbmQgaWYgdGhlcmUgaXMgc29tZSwgaXQgY2FuIHVzZSBpdC4K ICAqCiAgKiAtIGJ1ZGdldCBpcyByZXBsZW5pc2hlZCB0byB0aGUgdG9wIG9mIHRoZSBjYXBhY2l0 eSBmb3IgdGhlIGRvbWFpbiBvbmNlCkBAIC0xMjksMzkgKzEyOSwzOSBAQAogICogICB0aG91Z2gs IHRoZSBidWRnZXQgYWZ0ZXIgYSByZXBsZW5pc2htZW50IHdpbGwgYWx3YXlzIGJlIGF0IG1vc3Qg ZXF1YWwKICAqICAgdG8gdGhlIHRvdGFsIGNhcGFjaWZ5IG9mIHRoZSBkb21haW4gKCd0b3RfYnVk Z2V0Jyk7CiAgKgotICogLSB3aGVuIGEgYnVkZ2V0IHJlcGxlbmlzaG1lbnQgb2NjdXJzLCBpZiB0 aGVyZSBhcmUgdkNQVXMgdGhhdCBoYWQgYmVlbgorICogLSB3aGVuIGEgYnVkZ2V0IHJlcGxlbmlz aG1lbnQgb2NjdXJzLCBpZiB0aGVyZSBhcmUgdW5pdHMgdGhhdCBoYWQgYmVlbgogICogICBibG9j a2VkIGJlY2F1c2Ugb2YgbGFjayBvZiBidWRnZXQsIHRoZXknbGwgYmUgdW5ibG9ja2VkLCBhbmQg dGhleSB3aWxsCiAgKiAgIChwb3RlbnRpYWxseSkgYmUgYWJsZSB0byBydW4gYWdhaW4uCiAgKgog ICogRmluYWxseSwgc29tZSBldmVuIG1vcmUgaW1wbGVtZW50YXRpb24gcmVsYXRlZCBkZXRhaWw6 CiAgKgotICogLSBidWRnZXQgaXMgc3RvcmVkIGluIGEgZG9tYWluLXdpZGUgcG9vbC4gdkNQVXMg b2YgdGhlIGRvbWFpbiB0aGF0IHdhbnQKKyAqIC0gYnVkZ2V0IGlzIHN0b3JlZCBpbiBhIGRvbWFp bi13aWRlIHBvb2wuIEl0ZW1zIG9mIHRoZSBkb21haW4gdGhhdCB3YW50CiAgKiAgIHRvIHJ1biBn byB0byBzdWNoIHBvb2wsIGFuZCBncnViIHNvbWUuIFdoZW4gdGhleSBkbyBzbywgdGhlIGFtb3Vu dAogICogICB0aGV5IGdyYWJiZWQgaXMgX2ltbWVkaWF0ZWx5XyByZW1vdmVkIGZyb20gdGhlIHBv b2wuIFRoaXMgaGFwcGVucyBpbgotICogICB2Y3B1X2dyYWJfYnVkZ2V0KCk7CisgKiAgIHVuaXRf Z3JhYl9idWRnZXQoKTsKICAqCi0gKiAtIHdoZW4gdkNQVXMgc3RvcCBydW5uaW5nLCBpZiB0aGV5 J3ZlIG5vdCBjb25zdW1lZCBhbGwgdGhlIGJ1ZGdldCB0aGV5CisgKiAtIHdoZW4gdW5pdHMgc3Rv cCBydW5uaW5nLCBpZiB0aGV5J3ZlIG5vdCBjb25zdW1lZCBhbGwgdGhlIGJ1ZGdldCB0aGV5CiAg KiAgIHRvb2ssIHRoZSBsZWZ0b3ZlciBpcyBwdXQgYmFjayBpbiB0aGUgcG9vbC4gVGhpcyBoYXBw ZW5zIGluCi0gKiAgIHZjcHVfcmV0dXJuX2J1ZGdldCgpOworICogICB1bml0X3JldHVybl9idWRn ZXQoKTsKICAqCi0gKiAtIHRoZSBhYm92ZSBtZWFucyB0aGF0IGEgdkNQVSBjYW4gZmluZCBvdXQg dGhhdCB0aGVyZSBpcyBubyBidWRnZXQgYW5kCisgKiAtIHRoZSBhYm92ZSBtZWFucyB0aGF0IGFu IHVuaXQgY2FuIGZpbmQgb3V0IHRoYXQgdGhlcmUgaXMgbm8gYnVkZ2V0IGFuZAogICogICBibG9j aywgbm90IG9ubHkgaWYgdGhlIGNhcCBoYXMgYWN0dWFsbHkgYmVlbiByZWFjaGVkIChmb3IgdGhp cyBwZXJpb2QpLAotICogICBidXQgYWxzbyBpZiBzb21lIG90aGVyIHZDUFVzLCBpbiBvcmRlciB0 byBydW4sIGhhdmUgZ3JhYmJlZCBhIGNlcnRhaW4KKyAqICAgYnV0IGFsc28gaWYgc29tZSBvdGhl ciB1bml0cywgaW4gb3JkZXIgdG8gcnVuLCBoYXZlIGdyYWJiZWQgYSBjZXJ0YWluCiAgKiAgIHF1 b3RhIG9mIGJ1ZGdldCwgbm8gbWF0dGVyIHdoZXRoZXIgdGhleSd2ZSBhbHJlYWR5IHVzZWQgaXQg YWxsIG9yIG5vdC4KLSAqICAgQSB2Q1BVIGJsb2NraW5nIGJlY2F1c2UgKGFueSBmb3JtIG9mKSBs YWNrIG9mIGJ1ZGdldCBpcyBzYWlkIHRvIGJlCi0gKiAgICJwYXJrZWQiLCBhbmQgc3VjaCBibG9j a2luZyBoYXBwZW5zIGluIHBhcmtfdmNwdSgpOworICogICBBbiB1bml0IGJsb2NraW5nIGJlY2F1 c2UgKGFueSBmb3JtIG9mKSBsYWNrIG9mIGJ1ZGdldCBpcyBzYWlkIHRvIGJlCisgKiAgICJwYXJr ZWQiLCBhbmQgc3VjaCBibG9ja2luZyBoYXBwZW5zIGluIHBhcmtfdW5pdCgpOwogICoKLSAqIC0g d2hlbiBhIHZDUFUgc3RvcHMgcnVubmluZywgYW5kIHB1dHMgYmFjayBzb21lIGJ1ZGdldCBpbiB0 aGUgZG9tYWluIHBvb2wsCisgKiAtIHdoZW4gYW4gdW5pdCBzdG9wcyBydW5uaW5nLCBhbmQgcHV0 cyBiYWNrIHNvbWUgYnVkZ2V0IGluIHRoZSBkb21haW4gcG9vbCwKICAqICAgd2UgbmVlZCB0byBj aGVjayB3aGV0aGVyIHRoZXJlIGlzIHNvbWVvbmUgd2hpY2ggaGFzIGJlZW4gcGFya2VkIGFuZCB0 aGF0Ci0gKiAgIGNhbiBiZSB1bnBhcmtlZC4gVGhpcyBoYXBwZW5zIGluIHVucGFya19wYXJrZWRf dmNwdXMoKSwgY2FsbGVkIGZyb20KKyAqICAgY2FuIGJlIHVucGFya2VkLiBUaGlzIGhhcHBlbnMg aW4gdW5wYXJrX3BhcmtlZF91bml0cygpLCBjYWxsZWQgZnJvbQogICogICBjc2NoZWQyX2NvbnRl eHRfc2F2ZWQoKTsKICAqCiAgKiAtIG9mIGNvdXJzZSwgdW5wYXJraW5nIGhhcHBlbnMgYWxzbyBh cyBhIGNvbnNlcXVlbmNlIG9mIHRoZSBkb21haW4ncyBidWRnZXQKICAqICAgYmVpbmcgcmVwbGVu aXNoZWQgYnkgdGhlIHBlcmlvZGljIHRpbWVyLiBUaGlzIGFsc28gb2NjdXJzIGJ5IG1lYW5zIG9m CiAgKiAgIGNhbGxpbmcgY3NjaGVkMl9jb250ZXh0X3NhdmVkKCkgKGJ1dCBmcm9tIHJlcGxlbmlz aF9kb21haW5fYnVkZ2V0KCkpOwogICoKLSAqIC0gcGFya2VkIHZDUFVzIG9mIGEgZG9tYWluIGFy ZSBrZXB0IGluIGEgKHBlci1kb21haW4pIGxpc3QsIGNhbGxlZAotICogICAncGFya2VkX3ZjcHVz JykuIE1hbmlwdWxhdGlvbiBvZiB0aGUgbGlzdCBhbmQgb2YgdGhlIGRvbWFpbi13aWRlIGJ1ZGdl dAorICogLSBwYXJrZWQgdW5pdHMgb2YgYSBkb21haW4gYXJlIGtlcHQgaW4gYSAocGVyLWRvbWFp bikgbGlzdCwgY2FsbGVkCisgKiAgICdwYXJrZWRfdW5pdHMnKS4gTWFuaXB1bGF0aW9uIG9mIHRo ZSBsaXN0IGFuZCBvZiB0aGUgZG9tYWluLXdpZGUgYnVkZ2V0CiAgKiAgIHBvb2wsIG11c3Qgb2Nj dXIgb25seSB3aGVuIGhvbGRpbmcgdGhlICdidWRnZXRfbG9jaycuCiAgKi8KIApAQCAtMTc0LDkg KzE3NCw5IEBACiAgKiAgICAgcGNwdV9zY2hlZHVsZV9sb2NrKCkgLyB1bml0X3NjaGVkdWxlX2xv Y2soKSAoYW5kIGZyaWVuZHMpLAogICogICAqIGEgY3B1IG1heSAodHJ5IHRvKSB0YWtlIGEgInJl bW90ZSIgcnVucXVldWUgbG9jaywgZS5nLiwgZm9yCiAgKiAgICAgbG9hZCBiYWxhbmNpbmc7Ci0g KiAgKyBzZXJpYWxpemVzIHJ1bnF1ZXVlIG9wZXJhdGlvbnMgKHJlbW92aW5nIGFuZCBpbnNlcnRp bmcgdmNwdXMpOworICogICsgc2VyaWFsaXplcyBydW5xdWV1ZSBvcGVyYXRpb25zIChyZW1vdmlu ZyBhbmQgaW5zZXJ0aW5nIHVuaXRzKTsKICAqICArIHByb3RlY3RzIHJ1bnF1ZXVlLXdpZGUgZGF0 YSBpbiBjc2NoZWQyX3J1bnF1ZXVlX2RhdGE7Ci0gKiAgKyBwcm90ZWN0cyB2Y3B1IHBhcmFtZXRl cnMgaW4gY3NjaGVkMl91bml0IGZvciB0aGUgdmNwdSBpbiB0aGUKKyAqICArIHByb3RlY3RzIHVu aXQgcGFyYW1ldGVycyBpbiBjc2NoZWQyX3VuaXQgZm9yIHRoZSB1bml0IGluIHRoZQogICogICAg cnVucXVldWUuCiAgKgogICogLSBQcml2YXRlIHNjaGVkdWxlciBsb2NrCkBAIC0xOTAsOCArMTkw LDggQEAKICAqICArIGl0IGlzIHBlci1kb21haW47CiAgKiAgKyBwcm90ZWN0cywgaW4gZG9tYWlu cyB0aGF0IGhhdmUgYW4gdXRpbGl6YXRpb24gY2FwOwogICogICAqIG1hbmlwdWxhdGlvbiBvZiB0 aGUgdG90YWwgYnVkZ2V0IG9mIHRoZSBkb21haW4gKGFzIGl0IGlzIHNoYXJlZAotICogICAgIGFt b25nIGFsbCB2Q1BVcyBvZiB0aGUgZG9tYWluKSwKLSAqICAgKiBtYW5pcHVsYXRpb24gb2YgdGhl IGxpc3Qgb2YgdkNQVXMgdGhhdCBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvcgorICogICAgIGFtb25n IGFsbCB1bml0cyBvZiB0aGUgZG9tYWluKSwKKyAqICAgKiBtYW5pcHVsYXRpb24gb2YgdGhlIGxp c3Qgb2YgdW5pdHMgdGhhdCBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvcgogICogICAgIHNvbWUgYnVk Z2V0IHRvIGJlIGF2YWlsYWJsZS4KICAqCiAgKiAtIFR5cGU6CkBAIC0yMjgsOSArMjI4LDkgQEAK ICAqLwogI2RlZmluZSBDU0NIRUQyX0NSRURJVF9JTklUICAgICAgICAgIE1JTExJU0VDUygxMCkK IC8qCi0gKiBBbW91bnQgb2YgY3JlZGl0IHRoZSBpZGxlIHZjcHVzIGhhdmUuIEl0IG5ldmVyIGNo YW5nZXMsIGFzIGlkbGUKLSAqIHZjcHVzIGRvZXMgbm90IGNvbnN1bWUgY3JlZGl0cywgYW5kIGl0 IG11c3QgYmUgbG93ZXIgdGhhbiB3aGF0ZXZlcgotICogYW1vdW50IG9mIGNyZWRpdCAncmVndWxh cicgdmNwdSB3b3VsZCBlbmQgdXAgd2l0aC4KKyAqIEFtb3VudCBvZiBjcmVkaXQgdGhlIGlkbGUg dW5pdHMgaGF2ZS4gSXQgbmV2ZXIgY2hhbmdlcywgYXMgaWRsZQorICogdW5pdHMgZG9lcyBub3Qg Y29uc3VtZSBjcmVkaXRzLCBhbmQgaXQgbXVzdCBiZSBsb3dlciB0aGFuIHdoYXRldmVyCisgKiBh bW91bnQgb2YgY3JlZGl0ICdyZWd1bGFyJyB1bml0IHdvdWxkIGVuZCB1cCB3aXRoLgogICovCiAj ZGVmaW5lIENTQ0hFRDJfSURMRV9DUkVESVQgICAgICAgICAgKC0oMVU8PDMwKSkKIC8qCkBAIC0y NDMsOSArMjQzLDkgQEAKICAqIE1JTl9USU1FUi4KICAqLwogI2RlZmluZSBDU0NIRUQyX01JR1JB VEVfUkVTSVNUICAgICAgICgob3B0X21pZ3JhdGVfcmVzaXN0KSpNSUNST1NFQ1MoMSkpCi0vKiBI b3cgbXVjaCB0byAiY29tcGVuc2F0ZSIgYSB2Y3B1IGZvciBMMiBtaWdyYXRpb24uICovCisvKiBI b3cgbXVjaCB0byAiY29tcGVuc2F0ZSIgYW4gdW5pdCBmb3IgTDIgbWlncmF0aW9uLiAqLwogI2Rl ZmluZSBDU0NIRUQyX01JR1JBVEVfQ09NUEVOU0FUSU9OIE1JQ1JPU0VDUyg1MCkKLS8qIEhvdyB0 b2xlcmFudCB3ZSBzaG91bGQgYmUgd2hlbiBwZWVraW5nIGF0IHJ1bnRpbWUgb2YgdmNwdXMgb24g b3RoZXIgY3B1cyAqLworLyogSG93IHRvbGVyYW50IHdlIHNob3VsZCBiZSB3aGVuIHBlZWtpbmcg YXQgcnVudGltZSBvZiB1bml0cyBvbiBvdGhlciBjcHVzICovCiAjZGVmaW5lIENTQ0hFRDJfUkFU RUxJTUlUX1RJQ0tMRV9UT0xFUkFOQ0UgTUlDUk9TRUNTKDUwKQogLyogUmVzZXQ6IFZhbHVlIGJl bG93IHdoaWNoIGNyZWRpdCB3aWxsIGJlIHJlc2V0LiAqLwogI2RlZmluZSBDU0NIRUQyX0NSRURJ VF9SRVNFVCAgICAgICAgIDAKQEAgLTI1OCw3ICsyNTgsNyBAQAogICogRmxhZ3MKICAqLwogLyoK LSAqIENTRkxBR19zY2hlZHVsZWQ6IElzIHRoaXMgdmNwdSBlaXRoZXIgcnVubmluZyBvbiwgb3Ig Y29udGV4dC1zd2l0Y2hpbmcgb2ZmLAorICogQ1NGTEFHX3NjaGVkdWxlZDogSXMgdGhpcyB1bml0 IGVpdGhlciBydW5uaW5nIG9uLCBvciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCiAgKiBhIHBoeXNp Y2FsIGNwdT8KICAqICsgQWNjZXNzZWQgb25seSB3aXRoIHJ1bnF1ZXVlIGxvY2sgaGVsZAogICog KyBTZXQgd2hlbiBjaG9zZW4gYXMgbmV4dCBpbiBjc2NoZWQyX3NjaGVkdWxlKCkuCkBAIC0yODAs MjEgKzI4MCwyMSBAQAogI2RlZmluZSBfX0NTRkxBR19kZWxheWVkX3J1bnFfYWRkIDIKICNkZWZp bmUgQ1NGTEFHX2RlbGF5ZWRfcnVucV9hZGQgKDFVPDxfX0NTRkxBR19kZWxheWVkX3J1bnFfYWRk KQogLyoKLSAqIENTRkxBR19ydW5xX21pZ3JhdGVfcmVxdWVzdDogVGhpcyB2Y3B1IGlzIGJlaW5n IG1pZ3JhdGVkIGFzIGEgcmVzdWx0IG9mIGEKKyAqIENTRkxBR19ydW5xX21pZ3JhdGVfcmVxdWVz dDogVGhpcyB1bml0IGlzIGJlaW5nIG1pZ3JhdGVkIGFzIGEgcmVzdWx0IG9mIGEKICAqIGNyZWRp dDItaW5pdGlhdGVkIHJ1bnEgbWlncmF0ZSByZXF1ZXN0OyBtaWdyYXRlIGl0IHRvIHRoZSBydW5x dWV1ZSBpbmRpY2F0ZWQKLSAqIGluIHRoZSBzdmMgc3RydWN0LiAKKyAqIGluIHRoZSBzdmMgc3Ry dWN0LgogICovCiAjZGVmaW5lIF9fQ1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0IDMKICNkZWZp bmUgQ1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0ICgxVTw8X19DU0ZMQUdfcnVucV9taWdyYXRl X3JlcXVlc3QpCiAvKgotICogQ1NGTEFHX3ZjcHVfeWllbGQ6IHRoaXMgdmNwdSB3YXMgcnVubmlu ZywgYW5kIGhhcyBjYWxsZWQgdmNwdV95aWVsZCgpLiBUaGUKKyAqIENTRkxBR191bml0X3lpZWxk OiB0aGlzIHVuaXQgd2FzIHJ1bm5pbmcsIGFuZCBoYXMgY2FsbGVkIHZjcHVfeWllbGQoKS4gVGhl CiAgKiBzY2hlZHVsZXIgaXMgaW52b2tlZCB0byBzZWUgaWYgd2UgY2FuIGdpdmUgdGhlIGNwdSB0 byBzb21lb25lIGVsc2UsIGFuZAotICogZ2V0IGJhY2sgdG8gdGhlIHlpZWxkaW5nIHZjcHUgaW4g YSB3aGlsZS4KKyAqIGdldCBiYWNrIHRvIHRoZSB5aWVsZGluZyB1bml0IGluIGEgd2hpbGUuCiAg Ki8KLSNkZWZpbmUgX19DU0ZMQUdfdmNwdV95aWVsZCA0Ci0jZGVmaW5lIENTRkxBR192Y3B1X3lp ZWxkICgxVTw8X19DU0ZMQUdfdmNwdV95aWVsZCkKKyNkZWZpbmUgX19DU0ZMQUdfdW5pdF95aWVs ZCA0CisjZGVmaW5lIENTRkxBR191bml0X3lpZWxkICgxVTw8X19DU0ZMQUdfdW5pdF95aWVsZCkK IC8qCi0gKiBDU0ZMQUdTX3Bpbm5lZDogdGhpcyB2Y3B1IGlzIGN1cnJlbnRseSAncGlubmVkJywg aS5lLiwgaGFzIGl0cyBoYXJkCisgKiBDU0ZMQUdTX3Bpbm5lZDogdGhpcyB1bml0IGlzIGN1cnJl bnRseSAncGlubmVkJywgaS5lLiwgaGFzIGl0cyBoYXJkCiAgKiBhZmZpbml0eSBzZXQgdG8gb25l IGFuZCBvbmx5IDEgY3B1IChhbmQsIGhlbmNlLCBjYW4gb25seSBydW4gdGhlcmUpLgogICovCiAj ZGVmaW5lIF9fQ1NGTEFHX3Bpbm5lZCA1CkBAIC0zMDYsNyArMzA2LDcgQEAgaW50ZWdlcl9wYXJh bSgic2NoZWRfY3JlZGl0Ml9taWdyYXRlX3Jlc2lzdCIsIG9wdF9taWdyYXRlX3Jlc2lzdCk7CiAv KgogICogTG9hZCB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcKICAqCi0gKiBMb2FkIGhpc3Rv cnkgb2YgcnVucXVldWVzIGFuZCB2Y3B1cyBpcyBhY2NvdW50ZWQgZm9yIGJ5IHVzaW5nIGFuCisg KiBMb2FkIGhpc3Rvcnkgb2YgcnVucXVldWVzIGFuZCB1bml0cyBpcyBhY2NvdW50ZWQgZm9yIGJ5 IHVzaW5nIGFuCiAgKiBleHBvbmVudGlhbCB3ZWlnaHRlZCBtb3ZpbmcgYXZlcmFnZSBhbGdvcml0 aG0uIEhvd2V2ZXIsIGluc3RlYWQgb2YgdXNpbmcKICAqIGZyYWN0aW9ucyx3ZSBzaGlmdCBldmVy eXRoaW5nIHRvIGxlZnQgYnkgdGhlIG51bWJlciBvZiBiaXRzIHdlIHdhbnQgdG8KICAqIHVzZSBm b3IgcmVwcmVzZW50aW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKFEtZm9ybWF0KS4KQEAgLTMyNiw3 ICszMjYsNyBAQCBpbnRlZ2VyX3BhcmFtKCJzY2hlZF9jcmVkaXQyX21pZ3JhdGVfcmVzaXN0Iiwg b3B0X21pZ3JhdGVfcmVzaXN0KTsKICAqCiAgKiB3aGVyZSBXIGlzIHRoZSBsZW5ndGggb2YgdGhl IHdpbmRvdywgUCB0aGUgbXVsdGlwbGllciBmb3IgdHJhbnNpdGlvbmcgaW50bwogICogUS1mb3Jt YXQgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYyBhbmQgbG9hZCBpcyB0aGUgaW5zdGFudGFuZW91cyBs b2FkIG9mIGEKLSAqIHJ1bnF1ZXVlLCB3aGljaCBiYXNpY2FsbHkgaXMgdGhlIG51bWJlciBvZiBy dW5uYWJsZSB2Y3B1cyB0aGVyZSBhcmUgb24gdGhlCisgKiBydW5xdWV1ZSwgd2hpY2ggYmFzaWNh bGx5IGlzIHRoZSBudW1iZXIgb2YgcnVubmFibGUgdW5pdHMgdGhlcmUgYXJlIG9uIHRoZQogICog cnVucXVldWUgKGZvciB0aGUgbWVhbmluZyBvZiB0aGUgb3RoZXIgdGVybXMsIGxvb2sgYXQgdGhl IGRvYyBjb21tZW50IHRvCiAgKiAgdXBkYXRlX3J1bnFfbG9hZCgpKS4KICAqCkBAIC0zMzgsNyAr MzM4LDcgQEAgaW50ZWdlcl9wYXJhbSgic2NoZWRfY3JlZGl0Ml9taWdyYXRlX3Jlc2lzdCIsIG9w dF9taWdyYXRlX3Jlc2lzdCk7CiAgKiBUaGUgbWF4aW11bSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhl IGF2ZXJhZ2UgbG9hZCwgd2hpY2ggd2Ugd2FudCB0byBzdG9yZSBpbgogICogc190aW1lX3QgdHlw ZSB2YXJpYWJsZXMgKGkuZS4sIHdlIGhhdmUgNjMgYml0cyBhdmFpbGFibGUpIGlzIGxvYWQqUC4g VGhpcwogICogbWVhbnMgdGhhdCwgd2l0aCBQIDE4IGJpdHMgd2lkZSwgbG9hZCBjYW4gb2NjdXB5 IDQ1IGJpdHMuIFRoaXMgaW4gdHVybgotICogbWVhbnMgd2UgY2FuIGhhdmUgMl40NSB2Y3B1cyBp biBlYWNoIHJ1bnF1ZXVlLCBiZWZvcmUgb3ZlcmZsb3cgb2NjdXJzIQorICogbWVhbnMgd2UgY2Fu IGhhdmUgMl40NSB1bml0cyBpbiBlYWNoIHJ1bnF1ZXVlLCBiZWZvcmUgb3ZlcmZsb3cgb2NjdXJz IQogICoKICAqIEhvd2V2ZXIsIGl0IGNhbiBoYXBwZW4gdGhhdCwgYXQgc3RlcCBqKzEsIGlmOgog ICoKQEAgLTM1NCwxMyArMzU0LDEzIEBAIGludGVnZXJfcGFyYW0oInNjaGVkX2NyZWRpdDJfbWln cmF0ZV9yZXNpc3QiLCBvcHRfbWlncmF0ZV9yZXNpc3QpOwogICoKICAqICAyXig2MyAtIDMwIC0g MTgpID0gMl4xNSA9IDMyNzY4CiAgKgotICogU28gMzI3NjggaXMgdGhlIG1heGltdW0gbnVtYmVy IG9mIHZjcHVzIHRoZSB3ZSBjYW4gaGF2ZSBpbiBhIHJ1bnF1ZXVlLAorICogU28gMzI3NjggaXMg dGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXRzIHRoZSB3ZSBjYW4gaGF2ZSBpbiBhIHJ1bnF1ZXVl LAogICogYXQgYW55IGdpdmVuIHRpbWUsIGFuZCBzdGlsbCBub3QgaGF2ZSBwcm9ibGVtcyB3aXRo IHRoZSBsb2FkIHRyYWNraW5nCiAgKiBjYWxjdWxhdGlvbnMuLi4gYW5kIHRoaXMgaXMgbW9yZSB0 aGFuIGZpbmUuCiAgKgogICogQXMgYSBtYXR0ZXIgb2YgZmFjdCwgc2luY2Ugd2UgYXJlIHVzaW5n IG1pY3Jvc2Vjb25kcyBncmFudWxhcml0eSwgd2UgaGF2ZQogICogVz0yXjIwLiBTbywgc3RpbGwg d2l0aCAxOCBmcmFjdGlvbmFsIGJpdHMgYW5kIGEgMSBzZWNvbmQgbG9uZyB3aW5kb3csIHRoZXJl Ci0gKiBtYXkgYmUgMl4yNSA9IDMzNTU0NDMyIHZjcHVzIGluIGEgcnVucSBiZWZvcmUgd2UgaGF2 ZSB0byBzdGFydCB0aGlua2luZworICogbWF5IGJlIDJeMjUgPSAzMzU1NDQzMiB1bml0cyBpbiBh IHJ1bnEgYmVmb3JlIHdlIGhhdmUgdG8gc3RhcnQgdGhpbmtpbmcKICAqIGFib3V0IG92ZXJmbG93 LgogICovCiAKQEAgLTQ2OSw3ICs0NjksNyBAQCBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRh IHsKICAgICB1bnNpZ25lZCBpbnQgbnJfY3B1czsgICAgICAvKiBIb3cgbWFueSBDUFVzIGFyZSBz aGFyaW5nIHRoaXMgcnVucXVldWUgICAgKi8KICAgICBpbnQgaWQ7ICAgICAgICAgICAgICAgICAg ICAvKiBJRCBvZiB0aGlzIHJ1bnF1ZXVlICgtMSBpZiBpbnZhbGlkKSAgICAgICAgKi8KIAotICAg IGludCBsb2FkOyAgICAgICAgICAgICAgICAgIC8qIEluc3RhbnRhbmVvdXMgbG9hZCAobnVtIG9m IG5vbi1pZGxlIHZjcHVzKSAqLworICAgIGludCBsb2FkOyAgICAgICAgICAgICAgICAgIC8qIElu c3RhbnRhbmVvdXMgbG9hZCAobnVtIG9mIG5vbi1pZGxlIHVuaXRzKSAqLwogICAgIHNfdGltZV90 IGxvYWRfbGFzdF91cGRhdGU7IC8qIExhc3QgdGltZSBhdmVyYWdlIHdhcyB1cGRhdGVkICAgICAg ICAgICAgICAqLwogICAgIHNfdGltZV90IGF2Z2xvYWQ7ICAgICAgICAgIC8qIERlY2F5aW5nIHF1 ZXVlIGxvYWQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHNfdGltZV90IGJfYXZnbG9h ZDsgICAgICAgIC8qIERlY2F5aW5nIHF1ZXVlIGxvYWQgbW9kaWZpZWQgYnkgYmFsYW5jaW5nICAq LwpAQCAtNDc5LDggKzQ3OSw4IEBAIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgewogICAg ICAgICB0aWNrbGVkLCAgICAgICAgICAgICAgIC8qIEhhdmUgYmVlbiBhc2tlZCB0byBnbyB0aHJv dWdoIHNjaGVkdWxlICAgICAqLwogICAgICAgICBpZGxlOyAgICAgICAgICAgICAgICAgIC8qIEN1 cnJlbnRseSBpZGxlIHBjcHVzICAgICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgc3RydWN0 IGxpc3RfaGVhZCBzdmM7ICAgICAgLyogTGlzdCBvZiBhbGwgdmNwdXMgYXNzaWduZWQgdG8gdGhl IHJ1bnF1ZXVlICovCi0gICAgdW5zaWduZWQgaW50IG1heF93ZWlnaHQ7ICAgLyogTWF4IHdlaWdo dCBvZiB0aGUgdmNwdXMgaW4gdGhpcyBydW5xdWV1ZSAgICovCisgICAgc3RydWN0IGxpc3RfaGVh ZCBzdmM7ICAgICAgLyogTGlzdCBvZiBhbGwgdW5pdHMgYXNzaWduZWQgdG8gdGhlIHJ1bnF1ZXVl ICovCisgICAgdW5zaWduZWQgaW50IG1heF93ZWlnaHQ7ICAgLyogTWF4IHdlaWdodCBvZiB0aGUg dW5pdHMgaW4gdGhpcyBydW5xdWV1ZSAgICovCiAgICAgdW5zaWduZWQgaW50IHBpY2tfYmlhczsg ICAgLyogTGFzdCBwaWNrZWQgcGNwdS4gU3RhcnQgZnJvbSBpdCBuZXh0IHRpbWUgICovCiB9Owog CkBAIC01MTAsMjAgKzUxMCwyMCBAQCBzdHJ1Y3QgY3NjaGVkMl9wY3B1IHsKIH07CiAKIC8qCi0g KiBWaXJ0dWFsIENQVQorICogU2NoZWR1bGUgSXRlbQogICovCiBzdHJ1Y3QgY3NjaGVkMl91bml0 IHsKICAgICBzdHJ1Y3QgY3NjaGVkMl9kb20gKnNkb207ICAgICAgICAgIC8qIFVwLXBvaW50ZXIg dG8gZG9tYWluICAgICAgICAgICAgICAgICovCi0gICAgc3RydWN0IHZjcHUgKnZjcHU7ICAgICAg ICAgICAgICAgICAvKiBVcC1wb2ludGVyLCB0byB2Y3B1ICAgICAgICAgICAgICAgICAqLworICAg IHN0cnVjdCBzY2hlZF91bml0ICp1bml0OyAgICAgICAgICAgLyogVXAtcG9pbnRlciwgdG8gc2No ZWR1bGUgdW5pdCAgICAgICAgKi8KICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpy cWQ7IC8qIFVwLXBvaW50ZXIgdG8gdGhlIHJ1bnF1ZXVlICAgICAgICAgICovCiAKICAgICBpbnQg Y3JlZGl0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEN1cnJlbnQgYW1vdW50IG9mIGNyZWRp dCAgICAgICAgICAgICovCi0gICAgdW5zaWduZWQgaW50IHdlaWdodDsgICAgICAgICAgICAgICAv KiBXZWlnaHQgb2YgdGhpcyB2Y3B1ICAgICAgICAgICAgICAgICAqLworICAgIHVuc2lnbmVkIGlu dCB3ZWlnaHQ7ICAgICAgICAgICAgICAgLyogV2VpZ2h0IG9mIHRoaXMgdW5pdCAgICAgICAgICAg ICAgICAgKi8KICAgICB1bnNpZ25lZCBpbnQgcmVzaWR1YWw7ICAgICAgICAgICAgIC8qIFJlbWlu ZGVyIG9mIGRpdihtYXhfd2VpZ2h0L3dlaWdodCkgICovCiAgICAgdW5zaWduZWQgZmxhZ3M7ICAg ICAgICAgICAgICAgICAgICAvKiBTdGF0dXMgZmxhZ3MgKDE2IGJpdHMgd291bGQgYmUgb2ssICAq LwogICAgIHNfdGltZV90IGJ1ZGdldDsgICAgICAgICAgICAgICAgICAgLyogQ3VycmVudCBidWRn ZXQgKGlmIGRvbWFpbnMgaGFzIGNhcCkgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIGJ1dCBjbGVhcl9iaXQoKSBkb2VzIG5vdCBsaWtlIHRoYXQpICovCi0gICAg c190aW1lX3QgYnVkZ2V0X3F1b3RhOyAgICAgICAgICAgICAvKiBCdWRnZXQgdG8gd2hpY2ggdkNQ VSBpcyBlbnRpdGxlZCAgICAqLworICAgIHNfdGltZV90IGJ1ZGdldF9xdW90YTsgICAgICAgICAg ICAgLyogQnVkZ2V0IHRvIHdoaWNoIHVuaXQgaXMgZW50aXRsZWQgICAgKi8KIAogICAgIHNfdGlt ZV90IHN0YXJ0X3RpbWU7ICAgICAgICAgICAgICAgLyogVGltZSB3ZSB3ZXJlIHNjaGVkdWxlZCAo Zm9yIGNyZWRpdCkgKi8KIApAQCAtNTMyLDcgKzUzMiw3IEBAIHN0cnVjdCBjc2NoZWQyX3VuaXQg ewogICAgIHNfdGltZV90IGF2Z2xvYWQ7ICAgICAgICAgICAgICAgICAgLyogRGVjYXlpbmcgcXVl dWUgbG9hZCAgICAgICAgICAgICAgICAgKi8KIAogICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVucV9l bGVtOyAgICAgICAgLyogT24gdGhlIHJ1bnF1ZXVlIChycWQtPnJ1bnEpICAgICAgICAgKi8KLSAg ICBzdHJ1Y3QgbGlzdF9oZWFkIHBhcmtlZF9lbGVtOyAgICAgIC8qIE9uIHRoZSBwYXJrZWRfdmNw dXMgbGlzdCAgICAgICAgICAgICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBwYXJrZWRfZWxlbTsg ICAgICAvKiBPbiB0aGUgcGFya2VkX3VuaXRzIGxpc3QgICAgICAgICAgICAqLwogICAgIHN0cnVj dCBsaXN0X2hlYWQgcnFkX2VsZW07ICAgICAgICAgLyogT24gY3NjaGVkMl9ydW5xdWV1ZV9kYXRh J3Mgc3ZjIGxpc3QgKi8KICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICptaWdyYXRl X3JxZDsgLyogUHJlLWRldGVybWluZWQgbWlnci4gdGFyZ2V0ICovCiAgICAgaW50IHRpY2tsZWRf Y3B1OyAgICAgICAgICAgICAgICAgICAvKiBDcHUgdGhhdCB3aWxsIHBpY2sgdXMgKC0xIGlmIG5v bmUpICAqLwpAQCAtNTUwLDEyICs1NTAsMTIgQEAgc3RydWN0IGNzY2hlZDJfZG9tIHsKIAogICAg IHN0cnVjdCB0aW1lciByZXBsX3RpbWVyOyAgICAvKiBUaW1lciBmb3IgcGVyaW9kaWMgcmVwbGVu aXNobWVudCBvZiBidWRnZXQgKi8KICAgICBzX3RpbWVfdCBuZXh0X3JlcGw7ICAgICAgICAgLyog VGltZSBhdCB3aGljaCBuZXh0IHJlcGxlbmlzaG1lbnQgb2NjdXJzICAgICovCi0gICAgc3RydWN0 IGxpc3RfaGVhZCBwYXJrZWRfdmNwdXM7IC8qIExpc3Qgb2YgQ1BVcyB3YWl0aW5nIGZvciBidWRn ZXQgICAgICAgICAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgcGFya2VkX3VuaXRzOyAvKiBMaXN0 IG9mIENQVXMgd2FpdGluZyBmb3IgYnVkZ2V0ICAgICAgICAgKi8KIAogICAgIHN0cnVjdCBsaXN0 X2hlYWQgc2RvbV9lbGVtOyAvKiBPbiBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEncyBzZG9tIGxpc3Qg ICAgICAgKi8KICAgICB1aW50MTZfdCB3ZWlnaHQ7ICAgICAgICAgICAgLyogVXNlciBzcGVjaWZp ZWQgd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgdWludDE2X3QgY2FwOyAgICAg ICAgICAgICAgIC8qIFVzZXIgc3BlY2lmaWVkIGNhcCAgICAgICAgICAgICAgICAgICAgICAgICAq LwotICAgIHVpbnQxNl90IG5yX3ZjcHVzOyAgICAgICAgICAvKiBOdW1iZXIgb2YgdmNwdXMgb2Yg dGhpcyBkb21haW4gICAgICAgICAgICAgKi8KKyAgICB1aW50MTZfdCBucl91bml0czsgICAgICAg ICAgLyogTnVtYmVyIG9mIHVuaXRzIG9mIHRoaXMgZG9tYWluICAgICAgICAgICAgICovCiB9Owog CiAvKgpAQCAtNTk0LDcgKzU5NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNzY2hlZDJfcnVu cXVldWVfZGF0YSAqYzJycWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgIHJldHVy biAmY3NjaGVkMl9wcml2KG9wcyktPnJxZFtjMnIoY3B1KV07CiB9CiAKLS8qIERvZXMgdGhlIGRv bWFpbiBvZiB0aGlzIHZDUFUgaGF2ZSBhIGNhcD8gKi8KKy8qIERvZXMgdGhlIGRvbWFpbiBvZiB0 aGlzIHVuaXQgaGF2ZSBhIGNhcD8gKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfY2FwKGNvbnN0 IHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YykKIHsKICAgICByZXR1cm4gc3ZjLT5idWRnZXQgIT0g U1RJTUVfTUFYOwpAQCAtNjEyLDI0ICs2MTIsMjQgQEAgc3RhdGljIGlubGluZSBib29sIGhhc19j YXAoY29uc3Qgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogICogICAgc210X2lkbGUgbWFzay4K ICAqCiAgKiBPbmNlIHdlIGhhdmUgc3VjaCBhIG1hc2ssIGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50 IGEgcG9saWN5IHRoYXQsIGVpdGhlcjoKLSAqICAtIHVzZXMgZnVsbHkgaWRsZSBjb3JlcyBmaXJz dDogaXQgaXMgZW5vdWdoIHRvIHRyeSB0byBzY2hlZHVsZSB0aGUgdmNwdXMKKyAqICAtIHVzZXMg ZnVsbHkgaWRsZSBjb3JlcyBmaXJzdDogaXQgaXMgZW5vdWdoIHRvIHRyeSB0byBzY2hlZHVsZSB0 aGUgdW5pdHMKICAqICAgIG9uIHBjcHVzIGZyb20gc210X2lkbGUgbWFzayBmaXJzdC4gVGhpcyBp cyB3aGF0IGhhcHBlbnMgaWYKICAqICAgIHNjaGVkX3NtdF9wb3dlcl9zYXZpbmdzIHdhcyBub3Qg c2V0IGF0IGJvb3QgKGRlZmF1bHQpLCBhbmQgaXQgbWF4aW1pemVzCiAgKiAgICB0cnVlIHBhcmFs bGVsaXNtLCBhbmQgaGVuY2UgcGVyZm9ybWFuY2U7Ci0gKiAgLSB1c2VzIGFscmVhZHkgYnVzeSBj b3JlcyBmaXJzdDogaXQgaXMgZW5vdWdoIHRvIHRyeSB0byBzY2hlZHVsZSB0aGUgdmNwdXMKKyAq ICAtIHVzZXMgYWxyZWFkeSBidXN5IGNvcmVzIGZpcnN0OiBpdCBpcyBlbm91Z2ggdG8gdHJ5IHRv IHNjaGVkdWxlIHRoZSB1bml0cwogICogICAgb24gcGNwdXMgdGhhdCBhcmUgaWRsZSwgYnV0IGFy ZSBub3QgaW4gc210X2lkbGUuIFRoaXMgaXMgd2hhdCBoYXBwZW5zIGlmCiAgKiAgICBzY2hlZF9z bXRfcG93ZXJfc2F2aW5ncyBpcyBzZXQgYXQgYm9vdCwgYW5kIGl0IGFsbG93cyBhcyBtb3JlIGNv cmVzIGFzCiAgKiAgICBwb3NzaWJsZSB0byBzdGF5IGluIGxvdyBwb3dlciBzdGF0ZXMsIG1pbmlt aXppbmcgcG93ZXIgY29uc3VtcHRpb24uCiAgKgogICogVGhpcyBsb2dpYyBpcyBlbnRpcmVseSBp bXBsZW1lbnRlZCBpbiBydW5xX3RpY2tsZSgpLCBhbmQgdGhhdCBpcyBlbm91Z2guCi0gKiBJbiBm YWN0LCBpbiB0aGlzIHNjaGVkdWxlciwgcGxhY2VtZW50IG9mIGEgdmNwdSBvbiBvbmUgb2YgdGhl IHBjcHVzIG9mIGEKKyAqIEluIGZhY3QsIGluIHRoaXMgc2NoZWR1bGVyLCBwbGFjZW1lbnQgb2Yg YW4gdW5pdCBvbiBvbmUgb2YgdGhlIHBjcHVzIG9mIGEKICAqIHJ1bnEsIF9hbHdheXNfIGhhcHBl bnMgYnkgbWVhbnMgb2YgdGlja2xpbmc6Ci0gKiAgLSB3aGVuIGEgdmNwdSB3YWtlcyB1cCwgaXQg Y2FsbHMgY3NjaGVkMl91bml0X3dha2UoKSwgd2hpY2ggY2FsbHMKKyAqICAtIHdoZW4gYW4gdW5p dCB3YWtlcyB1cCwgaXQgY2FsbHMgY3NjaGVkMl91bml0X3dha2UoKSwgd2hpY2ggY2FsbHMKICAq ICAgIHJ1bnFfdGlja2xlKCk7CiAgKiAgLSB3aGVuIGEgbWlncmF0aW9uIGlzIGluaXRpYXRlZCBp biBzY2hlZHVsZS5jLCB3ZSBjYWxsIGNzY2hlZDJfcmVzX3BpY2soKSwKICAqICAgIGNzY2hlZDJf dW5pdF9taWdyYXRlKCkgKHdoaWNoIGNhbGxzIG1pZ3JhdGUoKSkgYW5kIGNzY2hlZDJfdW5pdF93 YWtlKCkuCiAgKiAgICBjc2NoZWQyX3Jlc19waWNrKCkgbG9va3MgZm9yIHRoZSBsZWFzdCBsb2Fk ZWQgcnVucSBhbmQgcmV0dXJuIGp1c3QgYW55Ci0gKiAgICBvZiBpdHMgcHJvY2Vzc29ycy4gVGhl biwgY3NjaGVkMl91bml0X21pZ3JhdGUoKSBqdXN0IG1vdmVzIHRoZSB2Y3B1IHRvCisgKiAgICBv ZiBpdHMgcHJvY2Vzc29ycy4gVGhlbiwgY3NjaGVkMl91bml0X21pZ3JhdGUoKSBqdXN0IG1vdmVz IHRoZSB1bml0IHRvCiAgKiAgICB0aGUgY2hvc2VuIHJ1bnEsIGFuZCBpdCBpcyBhZ2FpbiBydW5x X3RpY2tsZSgpLCBjYWxsZWQgYnkKICAqICAgIGNzY2hlZDJfdW5pdF93YWtlKCkgdGhhdCBhY3R1 YWxseSBkZWNpZGVzIHdoYXQgcGNwdSB0byB1c2Ugd2l0aGluIHRoZQogICogICAgY2hvc2VuIHJ1 bnE7CkBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc19jYXAoY29uc3Qg c3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogICoKICAqIE5CIHRoYXQgcnFkLT5zbXRfaWRsZSBp cyBkaWZmZXJlbnQgdGhhbiBycWQtPmlkbGUuICBycWQtPmlkbGUKICAqIHJlY29yZHMgcGNwdXMg dGhhdCBhdCBhcmUgbWVyZWx5IGlkbGUgKGkuZS4sIGF0IHRoZSBtb21lbnQgZG8gbm90Ci0gKiBo YXZlIGEgdmNwdSBydW5uaW5nIG9uIHRoZW0pLiAgQnV0IHlvdSBoYXZlIHRvIG1hbnVhbGx5IGZp bHRlciBvdXQKKyAqIGhhdmUgYW4gdW5pdCBydW5uaW5nIG9uIHRoZW0pLiAgQnV0IHlvdSBoYXZl IHRvIG1hbnVhbGx5IGZpbHRlciBvdXQKICAqIHdoaWNoIHBjcHVzIGhhdmUgYmVlbiB0aWNrbGVk IGluIG9yZGVyIHRvIGZpbmQgY29yZXMgdGhhdCBhcmUgbm90CiAgKiBnb2luZyB0byBiZSBidXN5 IHNvb24uICBGaWx0ZXJpbmcgb3V0IHRpY2tsZWQgY3B1cyBwYWlyd2lzZSBpcyBhCiAgKiBsb3Qg b2YgZXh0cmEgcGFpbjsgc28gZm9yIHJxZC0+c210X2lkbGUsIHdlIGV4cGxpY2l0bHkgbWFrZSBz byB0aGF0CkBAIC02OTEsMjQgKzY5MSwyNCBAQCB2b2lkIHNtdF9pZGxlX21hc2tfY2xlYXIodW5z aWduZWQgaW50IGNwdSwgY3B1bWFza190ICptYXNrKQogICovCiBzdGF0aWMgaW50IGdldF9mYWxs YmFja19jcHUoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogewotICAgIHN0cnVjdCB2Y3B1ICp2 ID0gc3ZjLT52Y3B1OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0ID0gc3ZjLT51bml0Owog ICAgIHVuc2lnbmVkIGludCBiczsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksobmVlZF9mYWxsYmFj a19jcHUpOwogCiAgICAgZm9yX2VhY2hfYWZmaW5pdHlfYmFsYW5jZV9zdGVwKCBicyApCiAgICAg ewotICAgICAgICBpbnQgY3B1ID0gdi0+cHJvY2Vzc29yOworICAgICAgICBpbnQgY3B1ID0gc2No ZWRfdW5pdF9jcHUodW5pdCk7CiAKLSAgICAgICAgaWYgKCBicyA9PSBCQUxBTkNFX1NPRlRfQUZG SU5JVFkgJiYgIWhhc19zb2Z0X2FmZmluaXR5KHYtPnNjaGVkX3VuaXQpICkKKyAgICAgICAgaWYg KCBicyA9PSBCQUxBTkNFX1NPRlRfQUZGSU5JVFkgJiYgIWhhc19zb2Z0X2FmZmluaXR5KHVuaXQp ICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGFmZmluaXR5X2JhbGFuY2VfY3B1 bWFzayh2LT5zY2hlZF91bml0LCBicywgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKKyAgICAg ICAgYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKHVuaXQsIGJzLCBjcHVtYXNrX3NjcmF0Y2hfY3B1 KGNwdSkpOwogICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNw dW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwKLSAgICAgICAgICAgICAgICAgICAgY3B1cG9vbF9kb21h aW5fY3B1bWFzayh2LT5kb21haW4pKTsKKyAgICAgICAgICAgICAgICAgICAgY3B1cG9vbF9kb21h aW5fY3B1bWFzayh1bml0LT5kb21haW4pKTsKIAogICAgICAgICAvKgotICAgICAgICAgKiBUaGlz IGlzIGNhc2VzIDEgb3IgMyAoZGVwZW5kaW5nIG9uIGJzKTogaWYgdi0+cHJvY2Vzc29yIGlzIChz dGlsbCkKKyAgICAgICAgICogVGhpcyBpcyBjYXNlcyAxIG9yIDMgKGRlcGVuZGluZyBvbiBicyk6 IGlmIHByb2Nlc3NvciBpcyAoc3RpbGwpCiAgICAgICAgICAqIGluIG91ciBhZmZpbml0eSwgZ28g Zm9yIGl0LCBmb3IgY2FjaGUgYmV0dGVybmVzcy4KICAgICAgICAgICovCiAgICAgICAgIGlmICgg bGlrZWx5KGNwdW1hc2tfdGVzdF9jcHUoY3B1LCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpKSAp CkBAIC03MzAsNyArNzMwLDcgQEAgc3RhdGljIGludCBnZXRfZmFsbGJhY2tfY3B1KHN0cnVjdCBj c2NoZWQyX3VuaXQgKnN2YykKICAgICAgICAgICogV2UgbWF5IHdlbGwgcGljayBhbnkgdmFsaWQg cGNwdSBmcm9tIG91ciBzb2Z0LWFmZmluaXR5LCBvdXRzaWRlCiAgICAgICAgICAqIG9mIG91ciBj dXJyZW50IHJ1bnF1ZXVlLCBidXQgd2UgZGVjaWRlIG5vdCB0by4gSW4gZmFjdCwgY2hhbmdpbmcK ICAgICAgICAgICogcnVucXVldWUgaXMgc2xvdywgYWZmZWN0cyBsb2FkIGRpc3RyaWJ1dGlvbiwg YW5kIGlzIGEgc291cmNlIG9mCi0gICAgICAgICAqIG92ZXJoZWFkIGZvciB0aGUgdmNwdXMgcnVu bmluZyBvbiB0aGUgb3RoZXIgcnVucXVldWUgKHdlIG5lZWQgdGhlCisgICAgICAgICAqIG92ZXJo ZWFkIGZvciB0aGUgdW5pdHMgcnVubmluZyBvbiB0aGUgb3RoZXIgcnVucXVldWUgKHdlIG5lZWQg dGhlCiAgICAgICAgICAqIGxvY2spLiBTbywgYmV0dGVyIGRvIHRoYXQgYXMgYSBjb25zZXF1ZW5j ZSBvZiBhIHdlbGwgaW5mb3JtZWQKICAgICAgICAgICogZGVjaXNpb24gKG9yIGlmIHdlIHJlYWxs eSBkb24ndCBoYXZlIGFueSBvdGhlciBjaGFuY2UsIGFzIHdlIHdpbGwsCiAgICAgICAgICAqIGF0 IHN0ZXAgNSwgaWYgd2UgZ2V0IHRvIHRoZXJlKS4KQEAgLTc2Miw3ICs3NjIsNyBAQCBzdGF0aWMg aW50IGdldF9mYWxsYmFja19jcHUoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogICAgICAqIFdl IGNhbid0IGJlIGhlcmUuICBCdXQgaWYgdGhhdCBzb21laG93IGhhcHBlbiAoaW4gbm9uLWRlYnVn IGJ1aWxkcyksCiAgICAgICogYXQgbGVhc3QgcmV0dXJuIHNvbWV0aGluZyB3aGljaCBib3RoIG9u bGluZSBhbmQgaW4gb3VyIGhhcmQtYWZmaW5pdHkuCiAgICAgICovCi0gICAgcmV0dXJuIGNwdW1h c2tfYW55KGNwdW1hc2tfc2NyYXRjaF9jcHUodi0+cHJvY2Vzc29yKSk7CisgICAgcmV0dXJuIGNw dW1hc2tfYW55KGNwdW1hc2tfc2NyYXRjaF9jcHUoc2NoZWRfdW5pdF9jcHUodW5pdCkpKTsKIH0K IAogLyoKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0aWMgc190aW1lX3QgYzJ0KHN0cnVjdCBjc2No ZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwgc190aW1lX3QgY3JlZGl0LCBzdHJ1Y3QgYwogICogUnVu cXVldWUgcmVsYXRlZCBjb2RlLgogICovCiAKLXN0YXRpYyBpbmxpbmUgaW50IHZjcHVfb25fcnVu cShzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCitzdGF0aWMgaW5saW5lIGludCB1bml0X29uX3J1 bnEoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogewogICAgIHJldHVybiAhbGlzdF9lbXB0eSgm c3ZjLT5ydW5xX2VsZW0pOwogfQpAQCAtOTQ5LDE3ICs5NDksMTcgQEAgX3J1bnFfYXNzaWduKHN0 cnVjdCBjc2NoZWQyX3VuaXQgKnN2Yywgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFk KQogCiAgICAgdXBkYXRlX21heF93ZWlnaHQoc3ZjLT5ycWQsIHN2Yy0+d2VpZ2h0LCAwKTsKIAot ICAgIC8qIEV4cGVjdGVkIG5ldyBsb2FkIGJhc2VkIG9uIGFkZGluZyB0aGlzIHZjcHUgKi8KKyAg ICAvKiBFeHBlY3RlZCBuZXcgbG9hZCBiYXNlZCBvbiBhZGRpbmcgdGhpcyB1bml0ICovCiAgICAg cnFkLT5iX2F2Z2xvYWQgKz0gc3ZjLT5hdmdsb2FkOwogCiAgICAgaWYgKCB1bmxpa2VseSh0Yl9p bml0X2RvbmUpICkKICAgICB7CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1bnNpZ25l ZCB2Y3B1OjE2LCBkb206MTY7CisgICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7 CiAgICAgICAgICAgICB1bnNpZ25lZCBycWk6MTY7CiAgICAgICAgIH0gZDsKLSAgICAgICAgZC5k b20gPSBzdmMtPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwotICAgICAgICBkLnZjcHUgPSBzdmMt PnZjcHUtPnZjcHVfaWQ7CisgICAgICAgIGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRvbWFp bl9pZDsKKyAgICAgICAgZC51bml0ID0gc3ZjLT51bml0LT51bml0X2lkOwogICAgICAgICBkLnJx aT1ycWQtPmlkOwogICAgICAgICBfX3RyYWNlX3ZhcihUUkNfQ1NDSEVEMl9SVU5RX0FTU0lHTiwg MSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGQpLApAQCAtOTY5LDEzICs5NjksMTMgQEAg X3J1bnFfYXNzaWduKHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2Yywgc3RydWN0IGNzY2hlZDJfcnVu cXVldWVfZGF0YSAqcnFkKQogfQogCiBzdGF0aWMgdm9pZAotcnVucV9hc3NpZ24oY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCitydW5xX2Fzc2lnbihjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIHN0 cnVjdCBjc2NoZWQyX3VuaXQgKnN2YyA9IHZjLT5zY2hlZF91bml0LT5wcml2OworICAgIHN0cnVj dCBjc2NoZWQyX3VuaXQgKnN2YyA9IHVuaXQtPnByaXY7CiAKICAgICBBU1NFUlQoc3ZjLT5ycWQg PT0gTlVMTCk7CiAKLSAgICBfcnVucV9hc3NpZ24oc3ZjLCBjMnJxZChvcHMsIHZjLT5wcm9jZXNz b3IpKTsKKyAgICBfcnVucV9hc3NpZ24oc3ZjLCBjMnJxZChvcHMsIHNjaGVkX3VuaXRfY3B1KHVu aXQpKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC05ODMsMjQgKzk4MywyNCBAQCBfcnVucV9kZWFz c2lnbihzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfcnVu cXVldWVfZGF0YSAqcnFkID0gc3ZjLT5ycWQ7CiAKLSAgICBBU1NFUlQoIXZjcHVfb25fcnVucShz dmMpKTsKKyAgICBBU1NFUlQoIXVuaXRfb25fcnVucShzdmMpKTsKICAgICBBU1NFUlQoIShzdmMt PmZsYWdzICYgQ1NGTEFHX3NjaGVkdWxlZCkpOwogCiAgICAgbGlzdF9kZWxfaW5pdCgmc3ZjLT5y cWRfZWxlbSk7CiAgICAgdXBkYXRlX21heF93ZWlnaHQocnFkLCAwLCBzdmMtPndlaWdodCk7CiAK LSAgICAvKiBFeHBlY3RlZCBuZXcgbG9hZCBiYXNlZCBvbiByZW1vdmluZyB0aGlzIHZjcHUgKi8K KyAgICAvKiBFeHBlY3RlZCBuZXcgbG9hZCBiYXNlZCBvbiByZW1vdmluZyB0aGlzIHVuaXQgKi8K ICAgICBycWQtPmJfYXZnbG9hZCA9IG1heF90KHNfdGltZV90LCBycWQtPmJfYXZnbG9hZCAtIHN2 Yy0+YXZnbG9hZCwgMCk7CiAKICAgICBzdmMtPnJxZCA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lk Ci1ydW5xX2RlYXNzaWduKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUg KnZjKQorcnVucV9kZWFzc2lnbihjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBz Y2hlZF91bml0ICp1bml0KQogewotICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YyA9IHZjLT5z Y2hlZF91bml0LT5wcml2OworICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YyA9IHVuaXQtPnBy aXY7CiAKLSAgICBBU1NFUlQoc3ZjLT5ycWQgPT0gYzJycWQob3BzLCB2Yy0+cHJvY2Vzc29yKSk7 CisgICAgQVNTRVJUKHN2Yy0+cnFkID09IGMycnFkKG9wcywgc2NoZWRfdW5pdF9jcHUodW5pdCkp KTsKIAogICAgIF9ydW5xX2RlYXNzaWduKHN2Yyk7CiB9CkBAIC0xMjAzLDE1ICsxMjAzLDE1IEBA IHVwZGF0ZV9zdmNfbG9hZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgICAgICAg ICAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjLCBpbnQgY2hhbmdlLCBzX3RpbWVfdCBub3cp CiB7CiAgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7 Ci0gICAgc190aW1lX3QgZGVsdGEsIHZjcHVfbG9hZDsKKyAgICBzX3RpbWVfdCBkZWx0YSwgdW5p dF9sb2FkOwogICAgIHVuc2lnbmVkIGludCBQLCBXOwogCiAgICAgaWYgKCBjaGFuZ2UgPT0gLTEg KQotICAgICAgICB2Y3B1X2xvYWQgPSAxOworICAgICAgICB1bml0X2xvYWQgPSAxOwogICAgIGVs c2UgaWYgKCBjaGFuZ2UgPT0gMSApCi0gICAgICAgIHZjcHVfbG9hZCA9IDA7CisgICAgICAgIHVu aXRfbG9hZCA9IDA7CiAgICAgZWxzZQotICAgICAgICB2Y3B1X2xvYWQgPSB2Y3B1X3J1bm5hYmxl KHN2Yy0+dmNwdSk7CisgICAgICAgIHVuaXRfbG9hZCA9IHVuaXRfcnVubmFibGUoc3ZjLT51bml0 KTsKIAogICAgIFcgPSBwcnYtPmxvYWRfd2luZG93X3NoaWZ0OwogICAgIFAgPSBwcnYtPmxvYWRf cHJlY2lzaW9uX3NoaWZ0OwpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgdXBkYXRlX3N2Y19sb2FkKGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKIAogICAgIGlmICggc3ZjLT5sb2FkX2xhc3RfdXBk YXRlICsgKDFVTEwgPDwgVykgPCBub3cgKQogICAgIHsKLSAgICAgICAgc3ZjLT5hdmdsb2FkID0g dmNwdV9sb2FkIDw8IFA7CisgICAgICAgIHN2Yy0+YXZnbG9hZCA9IHVuaXRfbG9hZCA8PCBQOwog ICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdXBkYXRlX3N2Y19s b2FkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKICAgICAgICAgfQogCiAgICAgICAgIHN2 Yy0+YXZnbG9hZCA9IHN2Yy0+YXZnbG9hZCArCi0gICAgICAgICAgICAgICAgICAgICAgICgoZGVs dGEgKiAodmNwdV9sb2FkIDw8IFApKSA+PiBXKSAtCisgICAgICAgICAgICAgICAgICAgICAgICgo ZGVsdGEgKiAodW5pdF9sb2FkIDw8IFApKSA+PiBXKSAtCiAgICAgICAgICAgICAgICAgICAgICAg ICgoZGVsdGEgKiBzdmMtPmF2Z2xvYWQpID4+IFcpOwogICAgIH0KICAgICBzdmMtPmxvYWRfbGFz dF91cGRhdGUgPSBub3c7CkBAIC0xMjQ0LDE0ICsxMjQ0LDE0IEBAIHVwZGF0ZV9zdmNfbG9hZChj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgewogICAgICAgICBzdHJ1Y3QgewogICAg ICAgICAgICAgdWludDY0X3Qgdl9hdmdsb2FkOwotICAgICAgICAgICAgdW5zaWduZWQgdmNwdTox NiwgZG9tOjE2OworICAgICAgICAgICAgdW5zaWduZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAg ICAgICAgdW5zaWduZWQgc2hpZnQ7CiAgICAgICAgIH0gZDsKLSAgICAgICAgZC5kb20gPSBzdmMt PnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwotICAgICAgICBkLnZjcHUgPSBzdmMtPnZjcHUtPnZj cHVfaWQ7CisgICAgICAgIGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAg ICAgICAgZC51bml0ID0gc3ZjLT51bml0LT51bml0X2lkOwogICAgICAgICBkLnZfYXZnbG9hZCA9 IHN2Yy0+YXZnbG9hZDsKICAgICAgICAgZC5zaGlmdCA9IFA7Ci0gICAgICAgIF9fdHJhY2VfdmFy KFRSQ19DU0NIRUQyX1VQREFURV9WQ1BVX0xPQUQsIDEsCisgICAgICAgIF9fdHJhY2VfdmFyKFRS Q19DU0NIRUQyX1VQREFURV9VTklUX0xPQUQsIDEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihkKSwKICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikmZCk7CiAgICAgfQpA QCAtMTI3MywxOCArMTI3MywxOCBAQCBzdGF0aWMgdm9pZAogcnVucV9pbnNlcnQoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiB7CiAgICAgc3Ry dWN0IGxpc3RfaGVhZCAqaXRlcjsKLSAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc3ZjLT52Y3B1LT5w cm9jZXNzb3I7CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5p dCk7CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqIHJ1bnEgPSAmYzJycWQob3BzLCBjcHUpLT5ydW5x OwogICAgIGludCBwb3MgPSAwOwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKGdldF9zY2hl ZF9yZXMoY3B1KS0+c2NoZWR1bGVfbG9jaykpOwogCi0gICAgQVNTRVJUKCF2Y3B1X29uX3J1bnEo c3ZjKSk7Ci0gICAgQVNTRVJUKGMycihjcHUpID09IGMycihzdmMtPnZjcHUtPnByb2Nlc3Nvcikp OworICAgIEFTU0VSVCghdW5pdF9vbl9ydW5xKHN2YykpOworICAgIEFTU0VSVChjMnIoY3B1KSA9 PSBjMnIoc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KSkpOwogCiAgICAgQVNTRVJUKCZzdmMtPnJx ZC0+cnVucSA9PSBydW5xKTsKLSAgICBBU1NFUlQoIWlzX2lkbGVfdmNwdShzdmMtPnZjcHUpKTsK LSAgICBBU1NFUlQoIXN2Yy0+dmNwdS0+c2NoZWRfdW5pdC0+aXNfcnVubmluZyk7CisgICAgQVNT RVJUKCFpc19pZGxlX3VuaXQoc3ZjLT51bml0KSk7CisgICAgQVNTRVJUKCFzdmMtPnVuaXQtPmlz X3J1bm5pbmcpOwogICAgIEFTU0VSVCghKHN2Yy0+ZmxhZ3MgJiBDU0ZMQUdfc2NoZWR1bGVkKSk7 CiAKICAgICBsaXN0X2Zvcl9lYWNoKCBpdGVyLCBydW5xICkKQEAgLTEzMDEsMTEgKzEzMDEsMTEg QEAgcnVucV9pbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVk Ml91bml0ICpzdmMpCiAgICAgaWYgKCB1bmxpa2VseSh0Yl9pbml0X2RvbmUpICkKICAgICB7CiAg ICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7Cisg ICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAgICAgICB1bnNpZ25l ZCBwb3M7CiAgICAgICAgIH0gZDsKLSAgICAgICAgZC5kb20gPSBzdmMtPnZjcHUtPmRvbWFpbi0+ ZG9tYWluX2lkOwotICAgICAgICBkLnZjcHUgPSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAgICAg IGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0ID0g c3ZjLT51bml0LT51bml0X2lkOwogICAgICAgICBkLnBvcyA9IHBvczsKICAgICAgICAgX190cmFj ZV92YXIoVFJDX0NTQ0hFRDJfUlVOUV9QT1MsIDEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihkKSwKQEAgLTEzMTUsNyArMTMxNSw3IEBAIHJ1bnFfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogCiBzdGF0aWMgaW5saW5lIHZv aWQgcnVucV9yZW1vdmUoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogewotICAgIEFTU0VSVCh2 Y3B1X29uX3J1bnEoc3ZjKSk7CisgICAgQVNTRVJUKHVuaXRfb25fcnVucShzdmMpKTsKICAgICBs aXN0X2RlbF9pbml0KCZzdmMtPnJ1bnFfZWxlbSk7CiB9CiAKQEAgLTEzNDEsOCArMTM0MSw4IEBA IHN0YXRpYyBpbmxpbmUgYm9vbCBpc19wcmVlbXB0YWJsZShjb25zdCBzdHJ1Y3QgY3NjaGVkMl91 bml0ICpzdmMsCiAgICAgaWYgKCByYXRlbGltaXQgPD0gQ1NDSEVEMl9SQVRFTElNSVRfVElDS0xF X1RPTEVSQU5DRSApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQVNTRVJUKHN2Yy0+dmNw dS0+c2NoZWRfdW5pdC0+aXNfcnVubmluZyk7Ci0gICAgcmV0dXJuIG5vdyAtIHN2Yy0+dmNwdS0+ c2NoZWRfdW5pdC0+c3RhdGVfZW50cnlfdGltZSA+CisgICAgQVNTRVJUKHN2Yy0+dW5pdC0+aXNf cnVubmluZyk7CisgICAgcmV0dXJuIG5vdyAtIHN2Yy0+dW5pdC0+c3RhdGVfZW50cnlfdGltZSA+ CiAgICAgICAgICAgIHJhdGVsaW1pdCAtIENTQ0hFRDJfUkFURUxJTUlUX1RJQ0tMRV9UT0xFUkFO Q0U7CiB9CiAKQEAgLTEzNzAsMTcgKzEzNzAsMTcgQEAgc3RhdGljIHNfdGltZV90IHRpY2tsZV9z Y29yZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNfdGltZV90IG5vdywKIAogICAgIC8q CiAgICAgICogV2UgYXJlIGRlYWxpbmcgd2l0aCBjcHVzIHRoYXQgYXJlIG1hcmtlZCBub24taWRs ZSAoaS5lLiwgdGhhdCBhcmUgbm90Ci0gICAgICogaW4gcnFkLT5pZGxlKS4gSG93ZXZlciwgc29t ZSBvZiB0aGVtIG1heSBiZSBydW5uaW5nIHRoZWlyIGlkbGUgdmNwdSwKKyAgICAgKiBpbiBycWQt PmlkbGUpLiBIb3dldmVyLCBzb21lIG9mIHRoZW0gbWF5IGJlIHJ1bm5pbmcgdGhlaXIgaWRsZSB1 bml0LAogICAgICAqIGlmIHRha2luZyBjYXJlIG9mIHRhc2tsZXRzLiBJbiB0aGF0IGNhc2UsIHdl IHdhbnQgdG8gbGVhdmUgaXQgYWxvbmUuCiAgICAgICovCi0gICAgaWYgKCB1bmxpa2VseShpc19p ZGxlX3ZjcHUoY3VyLT52Y3B1KSB8fAorICAgIGlmICggdW5saWtlbHkoaXNfaWRsZV91bml0KGN1 ci0+dW5pdCkgfHwKICAgICAgICAgICFpc19wcmVlbXB0YWJsZShjdXIsIG5vdywgTUlDUk9TRUNT KHBydi0+cmF0ZWxpbWl0X3VzKSkpICkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgYnVybl9j cmVkaXRzKHJxZCwgY3VyLCBub3cpOwogCiAgICAgc2NvcmUgPSBuZXctPmNyZWRpdCAtIGN1ci0+ Y3JlZGl0OwotICAgIGlmICggbmV3LT52Y3B1LT5wcm9jZXNzb3IgIT0gY3B1ICkKKyAgICBpZiAo IHNjaGVkX3VuaXRfY3B1KG5ldy0+dW5pdCkgIT0gY3B1ICkKICAgICAgICAgc2NvcmUgLT0gQ1ND SEVEMl9NSUdSQVRFX1JFU0lTVDsKIAogICAgIC8qCkBAIC0xMzkxLDIxICsxMzkxLDIxIEBAIHN0 YXRpYyBzX3RpbWVfdCB0aWNrbGVfc2NvcmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBz X3RpbWVfdCBub3csCiAgICAgICovCiAgICAgaWYgKCBzY29yZSA+IDAgKQogICAgIHsKLSAgICAg ICAgaWYgKCBjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgbmV3LT52Y3B1LT5zY2hlZF91bml0LT5jcHVf c29mdF9hZmZpbml0eSkgKQorICAgICAgICBpZiAoIGNwdW1hc2tfdGVzdF9jcHUoY3B1LCBuZXct PnVuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KSApCiAgICAgICAgICAgICBzY29yZSArPSBDU0NIRUQy X0NSRURJVF9JTklUOwogCi0gICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBjdXIt PnZjcHUtPnNjaGVkX3VuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KSApCisgICAgICAgIGlmICggIWNw dW1hc2tfdGVzdF9jcHUoY3B1LCBjdXItPnVuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KSApCiAgICAg ICAgICAgICBzY29yZSArPSBDU0NIRUQyX0NSRURJVF9JTklUOwogICAgIH0KIAogICAgIGlmICgg dW5saWtlbHkodGJfaW5pdF9kb25lKSApCiAgICAgewogICAgICAgICBzdHJ1Y3QgewotICAgICAg ICAgICAgdW5zaWduZWQgdmNwdToxNiwgZG9tOjE2OworICAgICAgICAgICAgdW5zaWduZWQgdW5p dDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgaW50IGNyZWRpdCwgc2NvcmU7CiAgICAgICAgIH0g ZDsKLSAgICAgICAgZC5kb20gPSBjdXItPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwotICAgICAg ICBkLnZjcHUgPSBjdXItPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgIGQuZG9tID0gY3VyLT51bml0 LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0ID0gY3VyLT51bml0LT51bml0X2lk OwogICAgICAgICBkLmNyZWRpdCA9IGN1ci0+Y3JlZGl0OwogICAgICAgICBkLnNjb3JlID0gc2Nv cmU7CiAgICAgICAgIF9fdHJhY2VfdmFyKFRSQ19DU0NIRUQyX1RJQ0tMRV9DSEVDSywgMSwKQEAg LTE0MTcsMTQgKzE0MTcsMTQgQEAgc3RhdGljIHNfdGltZV90IHRpY2tsZV9zY29yZShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNfdGltZV90IG5vdywKIH0KIAogLyoKLSAqIENoZWNrIHdo YXQgcHJvY2Vzc29yIGl0IGlzIGJlc3QgdG8gJ3dha2UnLCBmb3IgcGlja2luZyB1cCBhIHZjcHUg dGhhdCBoYXMKKyAqIENoZWNrIHdoYXQgcHJvY2Vzc29yIGl0IGlzIGJlc3QgdG8gJ3dha2UnLCBm b3IgcGlja2luZyB1cCBhbiB1bml0IHRoYXQgaGFzCiAgKiBqdXN0IGJlZW4gcHV0IChiYWNrKSBp biB0aGUgcnVucXVldWUuIExvZ2ljIGlzIGFzIGZvbGxvd3M6CiAgKiAgMS4gaWYgdGhlcmUgYXJl IGlkbGUgcHJvY2Vzc29ycyBpbiB0aGUgcnVucSwgd2FrZSBvbmUgb2YgdGhlbTsKLSAqICAyLiBp ZiB0aGVyZSBhcmVuJ3QgaWRsZSBwcm9jZXNzb3IsIGNoZWNrIHRoZSBvbmUgd2VyZSB0aGUgdmNw dSB3YXMKKyAqICAyLiBpZiB0aGVyZSBhcmVuJ3QgaWRsZSBwcm9jZXNzb3IsIGNoZWNrIHRoZSBv bmUgd2VyZSB0aGUgdW5pdCB3YXMKICAqICAgICBydW5uaW5nIGJlZm9yZSB0byBzZWUgaWYgd2Ug Y2FuIHByZWVtcHQgd2hhdCdzIHJ1bm5pbmcgdGhlcmUgbm93CiAgKiAgICAgKGFuZCBoZW5jZSBk b2luZyBqdXN0IG9uZSBtaWdyYXRpb24pOwotICogIDMuIGxhc3Qgc3RhbmQ6IGNoZWNrIGFsbCBw cm9jZXNzb3JzIGFuZCBzZWUgaWYgdGhlIHZjcHUgaXMgaW4gcmlnaHQKLSAqICAgICBvZiBwcmVl bXB0aW5nIGFueSBvZiB0aGUgb3RoZXIgdmNwdXMgcnVubmluZyBvbiB0aGVtICh0aGlzIHJlcXVp cmVzCisgKiAgMy4gbGFzdCBzdGFuZDogY2hlY2sgYWxsIHByb2Nlc3NvcnMgYW5kIHNlZSBpZiB0 aGUgdW5pdCBpcyBpbiByaWdodAorICogICAgIG9mIHByZWVtcHRpbmcgYW55IG9mIHRoZSBvdGhl ciB1bml0cyBydW5uaW5nIG9uIHRoZW0gKHRoaXMgcmVxdWlyZXMKICAqICAgICB0d28gbWlncmF0 aW9ucywgYW5kIHRoYXQncyBpbmRlZWQgd2h5IGl0IGlzIGxlZnQgYXMgdGhlIGxhc3Qgc3RhbmQp LgogICoKICAqIE5vdGUgdGhhdCB3aGVuIHdlIHNheSAnaWRsZSBwcm9jZXNzb3JzJyB3aGF0IHdl IHJlYWxseSBtZWFuIGlzIChwcmV0dHkKQEAgLTE0MzcsMTAgKzE0MzcsMTAgQEAgcnVucV90aWNr bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpuZXcs IHNfdGltZV90IG5vdykKIHsKICAgICBpbnQgaSwgaXBpZCA9IC0xOwogICAgIHNfdGltZV90IG1h eCA9IDA7Ci0gICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBuZXctPnZjcHUtPnNjaGVkX3Vu aXQ7Ci0gICAgdW5zaWduZWQgaW50IGJzLCBjcHUgPSBuZXctPnZjcHUtPnByb2Nlc3NvcjsKKyAg ICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCA9IG5ldy0+dW5pdDsKKyAgICB1bnNpZ25lZCBpbnQg YnMsIGNwdSA9IHNjaGVkX3VuaXRfY3B1KHVuaXQpOwogICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1 ZXVlX2RhdGEgKnJxZCA9IGMycnFkKG9wcywgY3B1KTsKLSAgICBjcHVtYXNrX3QgKm9ubGluZSA9 IGNwdXBvb2xfZG9tYWluX2NwdW1hc2sobmV3LT52Y3B1LT5kb21haW4pOworICAgIGNwdW1hc2tf dCAqb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayh1bml0LT5kb21haW4pOwogICAgIGNw dW1hc2tfdCBtYXNrOwogCiAgICAgQVNTRVJUKG5ldy0+cnFkID09IHJxZCk7CkBAIC0xNDQ4LDEz ICsxNDQ4LDEzIEBAIHJ1bnFfdGlja2xlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3Ry dWN0IGNzY2hlZDJfdW5pdCAqbmV3LCBzX3RpbWVfdCBub3cpCiAgICAgaWYgKCB1bmxpa2VseSh0 Yl9pbml0X2RvbmUpICkKICAgICB7CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1bnNp Z25lZCB2Y3B1OjE2LCBkb206MTY7CisgICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206 MTY7CiAgICAgICAgICAgICB1bnNpZ25lZCBwcm9jZXNzb3I7CiAgICAgICAgICAgICBpbnQgY3Jl ZGl0OwogICAgICAgICB9IGQ7Ci0gICAgICAgIGQuZG9tID0gbmV3LT52Y3B1LT5kb21haW4tPmRv bWFpbl9pZDsKLSAgICAgICAgZC52Y3B1ID0gbmV3LT52Y3B1LT52Y3B1X2lkOwotICAgICAgICBk LnByb2Nlc3NvciA9IG5ldy0+dmNwdS0+cHJvY2Vzc29yOworICAgICAgICBkLmRvbSA9IHVuaXQt PmRvbWFpbi0+ZG9tYWluX2lkOworICAgICAgICBkLnVuaXQgPSB1bml0LT51bml0X2lkOworICAg ICAgICBkLnByb2Nlc3NvciA9IGNwdTsKICAgICAgICAgZC5jcmVkaXQgPSBuZXctPmNyZWRpdDsK ICAgICAgICAgX190cmFjZV92YXIoVFJDX0NTQ0hFRDJfVElDS0xFX05FVywgMSwKICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKGQpLApAQCAtMTQ2MiwxMSArMTQ2MiwxMSBAQCBydW5xX3RpY2ts ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBjc2NoZWQyX3VuaXQgKm5ldywg c190aW1lX3Qgbm93KQogICAgIH0KIAogICAgIC8qCi0gICAgICogRXhjbHVzaXZlIHBpbm5pbmcg aXMgd2hlbiBhIHZjcHUgaGFzIGhhcmQtYWZmaW5pdHkgd2l0aCBvbmx5IG9uZQotICAgICAqIGNw dSwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHZjcHUgdGhhdCBoYXMgaGFyZC1hZmZpbml0eSB3aXRo IHRoYXQKKyAgICAgKiBFeGNsdXNpdmUgcGlubmluZyBpcyB3aGVuIGFuIHVuaXQgaGFzIGhhcmQt YWZmaW5pdHkgd2l0aCBvbmx5IG9uZQorICAgICAqIGNwdSwgYW5kIHRoZXJlIGlzIG5vIG90aGVy IHVuaXQgdGhhdCBoYXMgaGFyZC1hZmZpbml0eSB3aXRoIHRoYXQKICAgICAgKiBzYW1lIGNwdS4g VGhpcyBpcyBpbmZyZXF1ZW50LCBidXQgaWYgaXQgaGFwcGVucywgaXMgZm9yIGFjaGlldmluZwog ICAgICAqIHRoZSBtb3N0IHBvc3NpYmxlIGRldGVybWluaXNtLCBhbmQgbGVhc3QgcG9zc2libGUg b3ZlcmhlYWQgZm9yCi0gICAgICogdGhlIHZjcHVzIGluIHF1ZXN0aW9uLgorICAgICAqIHRoZSB1 bml0cyBpbiBxdWVzdGlvbi4KICAgICAgKgogICAgICAqIFRyeSB0byBpZGVudGlmeSB0aGUgdmFz dCBtYWpvcml0eSBvZiB0aGVzZSBzaXR1YXRpb25zLCBhbmQgZGVhbAogICAgICAqIHdpdGggdGhl bSBxdWlja2x5LgpAQCAtMTUzMyw3ICsxNTMzLDcgQEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpuZXcsIHNfdGltZV90IG5vdykK ICAgICAvKgogICAgICAqIE5vdGUgdGhhdCwgaWYgd2UgYXJlIGhlcmUsIGl0IG1lYW5zIHdlIGhh dmUgZG9uZSB0aGUgaGFyZC1hZmZpbml0eQogICAgICAqIGJhbGFuY2luZyBzdGVwIG9mIHRoZSBs b29wLCBhbmQgaGVuY2Ugd2hhdCB3ZSBoYXZlIGluIGNwdW1hc2tfc2NyYXRjaAotICAgICAqIGlz IHdoYXQgd2UgcHV0IHRoZXJlIGZvciBsYXN0LCBpLmUuLCBuZXcncyB2Y3B1X2hhcmRfYWZmaW5p dHkgJiBvbmxpbmUKKyAgICAgKiBpcyB3aGF0IHdlIHB1dCB0aGVyZSBmb3IgbGFzdCwgaS5lLiwg bmV3J3MgdW5pdF9oYXJkX2FmZmluaXR5ICYgb25saW5lCiAgICAgICogd2hpY2ggaXMgZXhhY3Rs eSB3aGF0IHdlIG5lZWQgZm9yIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGZ1bmN0aW9uLgogICAgICAq LwogCkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCBydW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIHN0cnVjdCBjc2NoZWQyX3VuaXQgKm5ldywgc190aW1lX3Qgbm93KQogICAgICAq CiAgICAgICogRm9yIGRlY2lkaW5nIHdoaWNoIGNwdSB0byB0aWNrbGUsIHdlIHVzZSB0aWNrbGVf c2NvcmUoKSwgd2hpY2ggd2lsbAogICAgICAqIGZhY3RvciBpbiBib3RoIG5ldydzIHNvZnQtYWZm aW5pdHksIGFuZCB0aGUgc29mdC1hZmZpbml0eSBvZiB0aGUKLSAgICAgKiB2Y3B1IHJ1bm5pbmcg b24gZWFjaCBjcHUgdGhhdCB3ZSBjb25zaWRlci4KKyAgICAgKiB1bml0IHJ1bm5pbmcgb24gZWFj aCBjcHUgdGhhdCB3ZSBjb25zaWRlci4KICAgICAgKi8KICAgICBjcHVtYXNrX2FuZG5vdCgmbWFz aywgJnJxZC0+YWN0aXZlLCAmcnFkLT5pZGxlKTsKICAgICBjcHVtYXNrX2FuZG5vdCgmbWFzaywg Jm1hc2ssICZycWQtPnRpY2tsZWQpOwpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgcnVucV90aWNrbGUo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpuZXcsIHNf dGltZV90IG5vdykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCghaXNfaWRs ZV92Y3B1KGN1cnJfb25fY3B1KGlwaWQpLT52Y3B1X2xpc3QpKTsKKyAgICBBU1NFUlQoIWlzX2lk bGVfdW5pdChjdXJyX29uX2NwdShpcGlkKSkpOwogICAgIFNDSEVEX1NUQVRfQ1JBTksodGlja2xl ZF9idXN5X2NwdSk7CiAgdGlja2xlOgogICAgIEJVR19PTihpcGlkID09IC0xKTsKQEAgLTE2MjQs MTYgKzE2MjQsMTYgQEAgc3RhdGljIHZvaWQgcmVzZXRfY3JlZGl0KGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgaW50IGNwdSwgc190aW1lX3Qgbm93LAogCiAgICAgLyoKICAgICAgKiBVbmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgc25leHQtPmNyZWRpdCBzaG91bGQgbmV2ZXIgYmUgbGVz cwotICAgICAqIHRoYW4gLUNTQ0hFRDJfTUlOX1RJTUVSLiAgSG93ZXZlciwgdW5kZXIgc29tZSBj aXJjdW1zdGFuY2VzLCBhCi0gICAgICogdmNwdSB3aXRoIGxvdyBjcmVkaXRzIG1heSBiZSBhbGxv d2VkIHRvIHJ1biBsb25nIGVub3VnaCB0aGF0CisgICAgICogdGhhbiAtQ1NDSEVEMl9NSU5fVElN RVIuICBIb3dldmVyLCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMsIGFuCisgICAgICogdW5pdCB3 aXRoIGxvdyBjcmVkaXRzIG1heSBiZSBhbGxvd2VkIHRvIHJ1biBsb25nIGVub3VnaCB0aGF0CiAg ICAgICogaXRzIGNyZWRpdHMgYXJlIGFjdHVhbGx5IGxlc3MgdGhhbiAtQ1NDSEVEMl9DUkVESVRf SU5JVC4KLSAgICAgKiAoSW5zdGFuY2VzIGhhdmUgYmVlbiBvYnNlcnZlZCwgZm9yIGV4YW1wbGUs IHdoZXJlIGEgdmNwdSB3aXRoCisgICAgICogKEluc3RhbmNlcyBoYXZlIGJlZW4gb2JzZXJ2ZWQs IGZvciBleGFtcGxlLCB3aGVyZSBhbiB1bml0IHdpdGgKICAgICAgKiAyMDB1cyBvZiBjcmVkaXQg d2FzIGFsbG93ZWQgdG8gcnVuIGZvciAxMW1zLCBnaXZpbmcgaXQgLTEwLjhtcwogICAgICAqIG9m IGNyZWRpdC4gIFRodXMgaXQgd2FzIHN0aWxsIG5lZ2F0aXZlIGV2ZW4gYWZ0ZXIgdGhlIHJlc2V0 LikKICAgICAgKgogICAgICAqIElmIHRoaXMgaXMgdGhlIGNhc2UgZm9yIHNuZXh0LCB3ZSBzaW1w bHkgd2FudCB0byBrZWVwIG1vdmluZwogICAgICAqIGV2ZXJ5b25lIHVwIHVudGlsIGl0IGlzIGlu IHRoZSBibGFjayBhZ2Fpbi4gIFRoaXMgZmFpciBiZWNhdXNlCi0gICAgICogbm9uZSBvZiB0aGUg b3RoZXIgdmNwdXMgd2FudCB0byBydW4gYXQgdGhlIG1vbWVudC4KKyAgICAgKiBub25lIG9mIHRo ZSBvdGhlciB1bml0cyB3YW50IHRvIHJ1biBhdCB0aGUgbW9tZW50LgogICAgICAqCiAgICAgICog UmF0aGVyIHRoYW4gbG9vcGluZywgaG93ZXZlciwgd2UganVzdCBjYWxjdWxhdGUgYSBtdWx0aXBs aWVyLAogICAgICAqIGF2b2lkaW5nIGFuIGludGVnZXIgZGl2aXNpb24gYW5kIG11bHRpcGxpY2F0 aW9uIGluIHRoZSBjb21tb24KQEAgLTE2NTAsMTYgKzE2NTAsMTYgQEAgc3RhdGljIHZvaWQgcmVz ZXRfY3JlZGl0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSwgc190aW1lX3Qg bm93LAogICAgICAgICBpbnQgc3RhcnRfY3JlZGl0OwogCiAgICAgICAgIHN2YyA9IGxpc3RfZW50 cnkoaXRlciwgc3RydWN0IGNzY2hlZDJfdW5pdCwgcnFkX2VsZW0pOwotICAgICAgICBzdmNfY3B1 ID0gc3ZjLT52Y3B1LT5wcm9jZXNzb3I7CisgICAgICAgIHN2Y19jcHUgPSBzY2hlZF91bml0X2Nw dShzdmMtPnVuaXQpOwogCi0gICAgICAgIEFTU0VSVCghaXNfaWRsZV92Y3B1KHN2Yy0+dmNwdSkp OworICAgICAgICBBU1NFUlQoIWlzX2lkbGVfdW5pdChzdmMtPnVuaXQpKTsKICAgICAgICAgQVNT RVJUKHN2Yy0+cnFkID09IHJxZCk7CiAKICAgICAgICAgLyoKICAgICAgICAgICogSWYgc3ZjIGlz IHJ1bm5pbmcsIGl0IGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBtYWtlIHN1cmUsIGhlcmUsCiAg ICAgICAgICAqIHRoYXQgdGhlIGNyZWRpdCBpdCBoYXMgc3BlbnQgc28gZmFyIGdldCBhY2NvdW50 ZWQuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIHN2Yy0+dmNwdSA9PSBjdXJyX29uX2NwdShz dmNfY3B1KS0+dmNwdV9saXN0ICkKKyAgICAgICAgaWYgKCBzdmMtPnVuaXQgPT0gY3Vycl9vbl9j cHUoc3ZjX2NwdSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBidXJuX2NyZWRpdHMocnFkLCBz dmMsIG5vdyk7CiAgICAgICAgICAgICAvKgpAQCAtMTY5MCwxMiArMTY5MCwxMiBAQCBzdGF0aWMg dm9pZCByZXNldF9jcmVkaXQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1LCBz X3RpbWVfdCBub3csCiAgICAgICAgIGlmICggdW5saWtlbHkodGJfaW5pdF9kb25lKSApCiAgICAg ICAgIHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgdmNw dToxNiwgZG9tOjE2OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHVuaXQ6MTYsIGRvbToxNjsK ICAgICAgICAgICAgICAgICBpbnQgY3JlZGl0X3N0YXJ0LCBjcmVkaXRfZW5kOwogICAgICAgICAg ICAgICAgIHVuc2lnbmVkIG11bHRpcGxpZXI7CiAgICAgICAgICAgICB9IGQ7Ci0gICAgICAgICAg ICBkLmRvbSA9IHN2Yy0+dmNwdS0+ZG9tYWluLT5kb21haW5faWQ7Ci0gICAgICAgICAgICBkLnZj cHUgPSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgICAgICBkLmRvbSA9IHN2Yy0+dW5pdC0+ ZG9tYWluLT5kb21haW5faWQ7CisgICAgICAgICAgICBkLnVuaXQgPSBzdmMtPnVuaXQtPnVuaXRf aWQ7CiAgICAgICAgICAgICBkLmNyZWRpdF9zdGFydCA9IHN0YXJ0X2NyZWRpdDsKICAgICAgICAg ICAgIGQuY3JlZGl0X2VuZCA9IHN2Yy0+Y3JlZGl0OwogICAgICAgICAgICAgZC5tdWx0aXBsaWVy ID0gbTsKQEAgLTE3MTUsOSArMTcxNSw5IEBAIHZvaWQgYnVybl9jcmVkaXRzKHN0cnVjdCBjc2No ZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKIHsKICAgICBzX3RpbWVfdCBkZWx0YTsKIAotICAgIEFT U0VSVChzdmMgPT0gY3NjaGVkMl91bml0KGN1cnJfb25fY3B1KHN2Yy0+dmNwdS0+cHJvY2Vzc29y KSkpOworICAgIEFTU0VSVChzdmMgPT0gY3NjaGVkMl91bml0KGN1cnJfb25fY3B1KHNjaGVkX3Vu aXRfY3B1KHN2Yy0+dW5pdCkpKSk7CiAKLSAgICBpZiAoIHVubGlrZWx5KGlzX2lkbGVfdmNwdShz dmMtPnZjcHUpKSApCisgICAgaWYgKCB1bmxpa2VseShpc19pZGxlX3VuaXQoc3ZjLT51bml0KSkg KQogICAgIHsKICAgICAgICAgQVNTRVJUKHN2Yy0+Y3JlZGl0ID09IENTQ0hFRDJfSURMRV9DUkVE SVQpOwogICAgICAgICByZXR1cm47CkBAIC0xNzQ2LDEyICsxNzQ2LDEyIEBAIHZvaWQgYnVybl9j cmVkaXRzKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAgICBpZiAoIHVubGlr ZWx5KHRiX2luaXRfZG9uZSkgKQogICAgIHsKICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAg IHVuc2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKKyAgICAgICAgICAgIHVuc2lnbmVkIHVuaXQ6MTYs IGRvbToxNjsKICAgICAgICAgICAgIGludCBjcmVkaXQsIGJ1ZGdldDsKICAgICAgICAgICAgIGlu dCBkZWx0YTsKICAgICAgICAgfSBkOwotICAgICAgICBkLmRvbSA9IHN2Yy0+dmNwdS0+ZG9tYWlu LT5kb21haW5faWQ7Ci0gICAgICAgIGQudmNwdSA9IHN2Yy0+dmNwdS0+dmNwdV9pZDsKKyAgICAg ICAgZC5kb20gPSBzdmMtPnVuaXQtPmRvbWFpbi0+ZG9tYWluX2lkOworICAgICAgICBkLnVuaXQg PSBzdmMtPnVuaXQtPnVuaXRfaWQ7CiAgICAgICAgIGQuY3JlZGl0ID0gc3ZjLT5jcmVkaXQ7CiAg ICAgICAgIGQuYnVkZ2V0ID0gaGFzX2NhcChzdmMpID8gIHN2Yy0+YnVkZ2V0IDogSU5UX01JTjsK ICAgICAgICAgZC5kZWx0YSA9IGRlbHRhOwpAQCAtMTc2NSwzOSArMTc2NSwzOSBAQCB2b2lkIGJ1 cm5fY3JlZGl0cyhzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgKiBCdWRnZXQt cmVsYXRlZCBjb2RlLgogICovCiAKLXN0YXRpYyB2b2lkIHBhcmtfdmNwdShzdHJ1Y3QgY3NjaGVk Ml91bml0ICpzdmMpCitzdGF0aWMgdm9pZCBwYXJrX3VuaXQoc3RydWN0IGNzY2hlZDJfdW5pdCAq c3ZjKQogewotICAgIHN0cnVjdCB2Y3B1ICp2ID0gc3ZjLT52Y3B1OworICAgIHN0cnVjdCBzY2hl ZF91bml0ICp1bml0ID0gc3ZjLT51bml0OwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZz dmMtPnNkb20tPmJ1ZGdldF9sb2NrKSk7CiAKICAgICAvKgotICAgICAqIEl0IHdhcyBpbXBvc3Np YmxlIHRvIGZpbmQgYnVkZ2V0IGZvciB0aGlzIHZDUFUsIHNvIGl0IGhhcyB0byBiZQorICAgICAq IEl0IHdhcyBpbXBvc3NpYmxlIHRvIGZpbmQgYnVkZ2V0IGZvciB0aGlzIHVuaXQsIHNvIGl0IGhh cyB0byBiZQogICAgICAqICJwYXJrZWQiLiBUaGlzIGltcGxpZXMgaXQgaXMgbm90IHJ1bm5hYmxl LCBzbyB3ZSBtYXJrIGl0IGFzIHN1Y2ggaW4KLSAgICAgKiBpdHMgcGF1c2VfZmxhZ3MuIElmIHRo ZSB2Q1BVIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQgKHdoaWNoIG1lYW5zIHdlCisgICAgICogaXRz IHBhdXNlX2ZsYWdzLiBJZiB0aGUgdW5pdCBpcyBjdXJyZW50bHkgc2NoZWR1bGVkICh3aGljaCBt ZWFucyB3ZQogICAgICAqIGFyZSBoZXJlIGFmdGVyIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBj c2NoZWRfc2NoZWR1bGUoKSksIGZsYWdnaW5nCiAgICAgICogaXMgZW5vdWdoLCBhcyB3ZSdsbCBj aG9vc2Ugc29tZW9uZSBlbHNlLCBhbmQgdGhlbiBjb250ZXh0X3NhdmVkKCkKICAgICAgKiB3aWxs IHRha2UgY2FyZSBvZiB1cGRhdGluZyB0aGUgbG9hZCBwcm9wZXJseS4KICAgICAgKgotICAgICAq IElmLCBPVE9ILCB0aGUgdkNQVSBpcyBzaXR0aW5nIGluIHRoZSBydW5xdWV1ZSAod2hpY2ggbWVh bnMgd2UgYXJlIGhlcmUKKyAgICAgKiBJZiwgT1RPSCwgdGhlIHVuaXQgaXMgc2l0dGluZyBpbiB0 aGUgcnVucXVldWUgKHdoaWNoIG1lYW5zIHdlIGFyZSBoZXJlCiAgICAgICogYWZ0ZXIgYmVpbmcg Y2FsbGVkIGZyb20gd2l0aGluIHJ1bnFfY2FuZGlkYXRlKCkpLCB3ZSBtdXN0IGdvIGFsbCB0aGUK ICAgICAgKiB3YXkgZG93biB0byB0YWtpbmcgaXQgb3V0IG9mIHRoZXJlLCBhbmQgdXBkYXRpbmcg dGhlIGxvYWQgYWNjb3JkaW5nbHkuCiAgICAgICoKLSAgICAgKiBJbiBib3RoIGNhc2VzLCB3ZSBh bHNvIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBwYXJrZWQgdkNQVXMgb2YgdGhlIGRvbWFpbi4KKyAg ICAgKiBJbiBib3RoIGNhc2VzLCB3ZSBhbHNvIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBwYXJrZWQg dW5pdHMgb2YgdGhlIGRvbWFpbi4KICAgICAgKi8KLSAgICBfX3NldF9iaXQoX1ZQRl9wYXJrZWQs ICZ2LT5wYXVzZV9mbGFncyk7Ci0gICAgaWYgKCB2Y3B1X29uX3J1bnEoc3ZjKSApCisgICAgc2No ZWRfc2V0X3BhdXNlX2ZsYWdzKHVuaXQsIF9WUEZfcGFya2VkKTsKKyAgICBpZiAoIHVuaXRfb25f cnVucShzdmMpICkKICAgICB7CiAgICAgICAgIHJ1bnFfcmVtb3ZlKHN2Yyk7CiAgICAgICAgIHVw ZGF0ZV9sb2FkKHN2Yy0+c2RvbS0+ZG9tLT5jcHVwb29sLT5zY2hlZCwgc3ZjLT5ycWQsIHN2Yywg LTEsIE5PVygpKTsKICAgICB9Ci0gICAgbGlzdF9hZGQoJnN2Yy0+cGFya2VkX2VsZW0sICZzdmMt PnNkb20tPnBhcmtlZF92Y3B1cyk7CisgICAgbGlzdF9hZGQoJnN2Yy0+cGFya2VkX2VsZW0sICZz dmMtPnNkb20tPnBhcmtlZF91bml0cyk7CiB9CiAKLXN0YXRpYyBib29sIHZjcHVfZ3JhYl9idWRn ZXQoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQorc3RhdGljIGJvb2wgdW5pdF9ncmFiX2J1ZGdl dChzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfZG9tICpz ZG9tID0gc3ZjLT5zZG9tOwotICAgIHVuc2lnbmVkIGludCBjcHUgPSBzdmMtPnZjcHUtPnByb2Nl c3NvcjsKKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KTsK IAogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZChnZXRfc2NoZWRfcmVzKGNwdSktPnNjaGVkdWxl X2xvY2spKTsKIApAQCAtMTgwOSw5ICsxODA5LDkgQEAgc3RhdGljIGJvb2wgdmNwdV9ncmFiX2J1 ZGdldChzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiAKICAgICAvKgogICAgICAqIEhlcmUsIHN2 Yy0+YnVkZ2V0IGlzIDw9IDAgKGFzLCBpZiBpdCB3YXMgPiAwLCB3ZSdkIGhhdmUgdGFrZW4gdGhl IGlmCi0gICAgICogYWJvdmUhKS4gVGhhdCBiYXNpY2FsbHkgbWVhbnMgdGhlIHZDUFUgaGFzIG92 ZXJydW4gYSBiaXQgLS1iZWNhdXNlIG9mCisgICAgICogYWJvdmUhKS4gVGhhdCBiYXNpY2FsbHkg bWVhbnMgdGhlIHVuaXQgaGFzIG92ZXJydW4gYSBiaXQgLS1iZWNhdXNlIG9mCiAgICAgICogdmFy aW91cyByZWFzb25zLS0gYW5kIHdlIHdhbnQgdG8gdGFrZSB0aGF0IGludG8gYWNjb3VudC4gV2l0 aCB0aGUgKz0sCi0gICAgICogd2UgYXJlIGFjdHVhbGx5IHN1YnRyYWN0aW5nIHRoZSBhbW91bnQg b2YgYnVkZ2V0IHRoZSB2Q1BVIGhhcworICAgICAqIHdlIGFyZSBhY3R1YWxseSBzdWJ0cmFjdGlu ZyB0aGUgYW1vdW50IG9mIGJ1ZGdldCB0aGUgdW5pdCBoYXMKICAgICAgKiBvdmVyY29uc3VtZWQs IGZyb20gdGhlIHRvdGFsIGRvbWFpbiBidWRnZXQuCiAgICAgICovCiAgICAgc2RvbS0+YnVkZ2V0 ICs9IHN2Yy0+YnVkZ2V0OwpAQCAtMTgzMiw3ICsxODMyLDcgQEAgc3RhdGljIGJvb2wgdmNwdV9n cmFiX2J1ZGdldChzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiAgICAgZWxzZQogICAgIHsKICAg ICAgICAgc3ZjLT5idWRnZXQgPSAwOwotICAgICAgICBwYXJrX3ZjcHUoc3ZjKTsKKyAgICAgICAg cGFya191bml0KHN2Yyk7CiAgICAgfQogCiAgICAgc3Bpbl91bmxvY2soJnNkb20tPmJ1ZGdldF9s b2NrKTsKQEAgLTE4NDEsMTAgKzE4NDEsMTAgQEAgc3RhdGljIGJvb2wgdmNwdV9ncmFiX2J1ZGdl dChzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiB9CiAKIHN0YXRpYyB2b2lkCi12Y3B1X3JldHVy bl9idWRnZXQoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjLCBzdHJ1Y3QgbGlzdF9oZWFkICpwYXJr ZWQpCit1bml0X3JldHVybl9idWRnZXQoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjLCBzdHJ1Y3Qg bGlzdF9oZWFkICpwYXJrZWQpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfZG9tICpzZG9tID0gc3Zj LT5zZG9tOwotICAgIHVuc2lnbmVkIGludCBjcHUgPSBzdmMtPnZjcHUtPnByb2Nlc3NvcjsKKyAg ICB1bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KTsKIAogICAgIEFT U0VSVChzcGluX2lzX2xvY2tlZChnZXRfc2NoZWRfcmVzKGNwdSktPnNjaGVkdWxlX2xvY2spKTsK ICAgICBBU1NFUlQobGlzdF9lbXB0eShwYXJrZWQpKTsKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZj cHVfcmV0dXJuX2J1ZGdldChzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMsIHN0cnVjdCBsaXN0X2hl YWQgKnBhcmtlZCkKICAgICBzcGluX2xvY2soJnNkb20tPmJ1ZGdldF9sb2NrKTsKIAogICAgIC8q Ci0gICAgICogVGhlIHZDUFUgaXMgc3RvcHBpbmcgcnVubmluZyAoZS5nLiwgYmVjYXVzZSBpdCdz IGJsb2NraW5nLCBvciBpdCBoYXMKKyAgICAgKiBUaGUgdW5pdCBpcyBzdG9wcGluZyBydW5uaW5n IChlLmcuLCBiZWNhdXNlIGl0J3MgYmxvY2tpbmcsIG9yIGl0IGhhcwogICAgICAqIGJlZW4gcHJl ZW1wdGVkKS4gSWYgaXQgaGFzbid0IGNvbnN1bWVkIGFsbCB0aGUgYnVkZ2V0IGl0IGdvdCB3aGVu LAogICAgICAqIHN0YXJ0aW5nIHRvIHJ1biwgcHV0IHRoYXQgcmVtYWluaW5nIGFtb3VudCBiYWNr IGluIHRoZSBkb21haW4ncyBidWRnZXQKICAgICAgKiBwb29sLgpAQCAtMTg2Miw1OCArMTg2Miw1 OCBAQCB2Y3B1X3JldHVybl9idWRnZXQoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjLCBzdHJ1Y3Qg bGlzdF9oZWFkICpwYXJrZWQpCiAgICAgc3ZjLT5idWRnZXQgPSAwOwogCiAgICAgLyoKLSAgICAg KiBNYWtpbmcgYnVkZ2V0IGF2YWlsYWJsZSBhZ2FpbiB0byB0aGUgZG9tYWluIG1lYW5zIHRoYXQg cGFya2VkIHZDUFVzCi0gICAgICogbWF5IGJlIHVucGFya2VkIGFuZCBydW4uIFRoZXkgYXJlLCBp ZiBhbnksIGluIHRoZSBkb21haW4ncyBwYXJrZWRfdmNwdXMKKyAgICAgKiBNYWtpbmcgYnVkZ2V0 IGF2YWlsYWJsZSBhZ2FpbiB0byB0aGUgZG9tYWluIG1lYW5zIHRoYXQgcGFya2VkIHVuaXRzCisg ICAgICogbWF5IGJlIHVucGFya2VkIGFuZCBydW4uIFRoZXkgYXJlLCBpZiBhbnksIGluIHRoZSBk b21haW4ncyBwYXJrZWRfdW5pdHMKICAgICAgKiBsaXN0LCBzbyB3ZSB3YW50IHRvIGdvIHRocm91 Z2ggdGhhdCBhbmQgdW5wYXJrIHRoZW0gKHNvIHRoZXkgY2FuIHRyeQogICAgICAqIHRvIGdldCBz b21lIGJ1ZGdldCkuCiAgICAgICoKICAgICAgKiBUb3VjaGluZyB0aGUgbGlzdCByZXF1aXJlcyB0 aGUgYnVkZ2V0X2xvY2ssIHdoaWNoIHdlIGhvbGQuIExldCdzCiAgICAgICogdGhlcmVmb3JlIHB1 dCBldmVyeW9uZSBpbiB0aGF0IGxpc3QgaW4gYW5vdGhlciwgdGVtcG9yYXJ5IGxpc3QsIHdoaWNo Ci0gICAgICogdGhlbiB0aGUgY2FsbGVyIHdpbGwgdHJhdmVyc2UsIHVucGFya2luZyB0aGUgdkNQ VXMgaXQgZmluZHMgdGhlcmUuCisgICAgICogdGhlbiB0aGUgY2FsbGVyIHdpbGwgdHJhdmVyc2Us IHVucGFya2luZyB0aGUgdW5pdHMgaXQgZmluZHMgdGhlcmUuCiAgICAgICoKICAgICAgKiBJbiBm YWN0LCB3ZSBjYW4ndCBkbyB0aGUgYWN0dWFsIHVucGFya2luZyBoZXJlLCBiZWNhdXNlIHRoYXQg cmVxdWlyZXMKLSAgICAgKiB0YWtpbmcgdGhlIHJ1bnF1ZXVlIGxvY2sgb2YgdGhlIHZDUFVzIGJl aW5nIHVucGFya2VkLCBhbmQgd2UgY2FuJ3QKKyAgICAgKiB0YWtpbmcgdGhlIHJ1bnF1ZXVlIGxv Y2sgb2YgdGhlIHVuaXRzIGJlaW5nIHVucGFya2VkLCBhbmQgd2UgY2FuJ3QKICAgICAgKiB0YWtl IGFueSBydW5xdWV1ZSBsb2NrcyB3aGlsZSB3ZSBob2xkIGEgYnVkZ2V0X2xvY2suCiAgICAgICov CiAgICAgaWYgKCBzZG9tLT5idWRnZXQgPiAwICkKLSAgICAgICAgbGlzdF9zcGxpY2VfaW5pdCgm c2RvbS0+cGFya2VkX3ZjcHVzLCBwYXJrZWQpOworICAgICAgICBsaXN0X3NwbGljZV9pbml0KCZz ZG9tLT5wYXJrZWRfdW5pdHMsIHBhcmtlZCk7CiAKICAgICBzcGluX3VubG9jaygmc2RvbS0+YnVk Z2V0X2xvY2spOwogfQogCiBzdGF0aWMgdm9pZAotdW5wYXJrX3BhcmtlZF92Y3B1cyhjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBsaXN0X2hlYWQgKnZjcHVzKQordW5wYXJrX3Bh cmtlZF91bml0cyhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBsaXN0X2hlYWQg KnVuaXRzKQogewogICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YywgKnRtcDsKICAgICBzcGlu bG9ja190ICpsb2NrOwogCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN2YywgdG1wLCB2 Y3B1cywgcGFya2VkX2VsZW0pCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlICggc3ZjLCB0 bXAsIHVuaXRzLCBwYXJrZWRfZWxlbSApCiAgICAgewogICAgICAgICB1bnNpZ25lZCBsb25nIGZs YWdzOwogICAgICAgICBzX3RpbWVfdCBub3c7CiAKLSAgICAgICAgbG9jayA9IHVuaXRfc2NoZWR1 bGVfbG9ja19pcnFzYXZlKHN2Yy0+dmNwdS0+c2NoZWRfdW5pdCwgJmZsYWdzKTsKKyAgICAgICAg bG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnFzYXZlKHN2Yy0+dW5pdCwgJmZsYWdzKTsKIAot ICAgICAgICBfX2NsZWFyX2JpdChfVlBGX3BhcmtlZCwgJnN2Yy0+dmNwdS0+cGF1c2VfZmxhZ3Mp OworICAgICAgICBzY2hlZF9jbGVhcl9wYXVzZV9mbGFncyhzdmMtPnVuaXQsIF9WUEZfcGFya2Vk KTsKICAgICAgICAgaWYgKCB1bmxpa2VseShzdmMtPmZsYWdzICYgQ1NGTEFHX3NjaGVkdWxlZCkg KQogICAgICAgICB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogV2UgZW5kIGhlcmUg aWYgYSBidWRnZXQgcmVwbGVuaXNobWVudCBhcnJpdmVkIGJldHdlZW4KICAgICAgICAgICAgICAq IGNzY2hlZDJfc2NoZWR1bGUoKSAoYW5kLCBpbiBwYXJ0aWN1bGFyLCBhZnRlciBhIGNhbGwgdG8K LSAgICAgICAgICAgICAqIHZjcHVfZ3JhYl9idWRnZXQoKSB0aGF0IHJldHVybmVkIGZhbHNlKSwg YW5kCisgICAgICAgICAgICAgKiB1bml0X2dyYWJfYnVkZ2V0KCkgdGhhdCByZXR1cm5lZCBmYWxz ZSksIGFuZAogICAgICAgICAgICAgICogY29udGV4dF9zYXZlZCgpLiBCeSBzZXR0aW5nIF9fQ1NG TEFHX2RlbGF5ZWRfcnVucV9hZGQsCi0gICAgICAgICAgICAgKiB3ZSB0ZWxsIGNvbnRleHRfc2F2 ZWQoKSB0byBwdXQgdGhlIHZDUFUgYmFjayBpbiB0aGUKKyAgICAgICAgICAgICAqIHdlIHRlbGwg Y29udGV4dF9zYXZlZCgpIHRvIHB1dCB0aGUgdW5pdCBiYWNrIGluIHRoZQogICAgICAgICAgICAg ICogcnVucXVldWUsIGZyb20gd2hlcmUgaXQgd2lsbCBjb21wZXRlIHdpdGggdGhlIG90aGVycwog ICAgICAgICAgICAgICogZm9yIHRoZSBuZXdseSByZXBsZW5pc2hlZCBidWRnZXQuCiAgICAgICAg ICAgICAgKi8KICAgICAgICAgICAgIEFTU0VSVCggc3ZjLT5ycWQgIT0gTlVMTCApOwotICAgICAg ICAgICAgQVNTRVJUKCBjMnJxZChvcHMsIHN2Yy0+dmNwdS0+cHJvY2Vzc29yKSA9PSBzdmMtPnJx ZCApOworICAgICAgICAgICAgQVNTRVJUKCBjMnJxZChvcHMsIHNjaGVkX3VuaXRfY3B1KHN2Yy0+ dW5pdCkpID09IHN2Yy0+cnFkICk7CiAgICAgICAgICAgICBfX3NldF9iaXQoX19DU0ZMQUdfZGVs YXllZF9ydW5xX2FkZCwgJnN2Yy0+ZmxhZ3MpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg KCB2Y3B1X3J1bm5hYmxlKHN2Yy0+dmNwdSkgKQorICAgICAgICBlbHNlIGlmICggdW5pdF9ydW5u YWJsZShzdmMtPnVuaXQpICkKICAgICAgICAgewogICAgICAgICAgICAgLyoKLSAgICAgICAgICAg ICAqIFRoZSB2Q1BVIHNob3VsZCBnbyBiYWNrIHRvIHRoZSBydW5xdWV1ZSwgYW5kIGNvbXBldGUg Zm9yCisgICAgICAgICAgICAgKiBUaGUgdW5pdCBzaG91bGQgZ28gYmFjayB0byB0aGUgcnVucXVl dWUsIGFuZCBjb21wZXRlIGZvcgogICAgICAgICAgICAgICogdGhlIG5ld2x5IHJlcGxlbmlzaGVk IGJ1ZGdldCwgYnV0IG9ubHkgaWYgaXQgaXMgYWN0dWFsbHkKICAgICAgICAgICAgICAqIHJ1bm5h YmxlIChhbmQgd2FzIHRoZXJlZm9yZSBvZmZsaW5lIG9ubHkgYmVjYXVzZSBvZiB0aGUKICAgICAg ICAgICAgICAqIGxhY2sgb2YgYnVkZ2V0KS4KQEAgLTE5MjUsNyArMTkyNSw3IEBAIHVucGFya19w YXJrZWRfdmNwdXMoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgbGlzdF9oZWFk ICp2Y3B1cykKICAgICAgICAgfQogICAgICAgICBsaXN0X2RlbF9pbml0KCZzdmMtPnBhcmtlZF9l bGVtKTsKIAotICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnFyZXN0b3JlKGxvY2ssIGZs YWdzLCBzdmMtPnZjcHUtPnNjaGVkX3VuaXQpOworICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9j a19pcnFyZXN0b3JlKGxvY2ssIGZsYWdzLCBzdmMtPnVuaXQpOwogICAgIH0KIH0KIApAQCAtMTk1 NSw3ICsxOTU1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGVuaXNoX2RvbWFpbl9idWRnZXQodm9pZCog ZGF0YSkKICAgICAgKgogICAgICAqIEV2ZW4gaW4gY2FzZXMgb2Ygb3ZlcnJ1biBvciBkZWxheSwg aG93ZXZlciwgd2UgZXhwZWN0IHRoYXQgaW4gOTklIG9mCiAgICAgICogY2FzZXMsIGRvaW5nIGp1 c3Qgb25lIHJlcGxlbmlzaG1lbnQgd2lsbCBiZSBnb29kIGVub3VnaCBmb3IgYmVpbmcgYWJsZQot ICAgICAqIHRvIHVucGFyayB0aGUgdkNQVXMgdGhhdCBhcmUgd2FpdGluZyBmb3Igc29tZSBidWRn ZXQuCisgICAgICogdG8gdW5wYXJrIHRoZSB1bml0cyB0aGF0IGFyZSB3YWl0aW5nIGZvciBzb21l IGJ1ZGdldC4KICAgICAgKi8KICAgICBkb19yZXBsZW5pc2goc2RvbSk7CiAKQEAgLTE5NzUsNyAr MTk3NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxlbmlzaF9kb21haW5fYnVkZ2V0KHZvaWQqIGRhdGEp CiAgICAgfQogICAgIC8qCiAgICAgICogMikgaWYgd2Ugb3ZlcnJ1biBieSBtb3JlIHRoYW4gdG90 X2J1ZGdldCwgdGhlbiBidWRnZXQrdG90X2J1ZGdldCBpcwotICAgICAqIHN0aWxsIDwgMCwgd2hp Y2ggbWVhbnMgdGhhdCB3ZSBjYW4ndCB1bnBhcmsgdGhlIHZDUFVzLiBMZXQncyBiYWlsLAorICAg ICAqIHN0aWxsIDwgMCwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4ndCB1bnBhcmsgdGhlIHVuaXRz LiBMZXQncyBiYWlsLAogICAgICAqIGFuZCB3YWl0IGZvciBmdXR1cmUgcmVwbGVuaXNobWVudHMu CiAgICAgICovCiAgICAgaWYgKCB1bmxpa2VseShzZG9tLT5idWRnZXQgPD0gMCkgKQpAQCAtMTk4 OSwxNCArMTk4OSwxNCBAQCBzdGF0aWMgdm9pZCByZXBsZW5pc2hfZG9tYWluX2J1ZGdldCh2b2lk KiBkYXRhKQogCiAgICAgLyoKICAgICAgKiBBcyBhYm92ZSwgbGV0J3MgcHJlcGFyZSB0aGUgdGVt cG9yYXJ5IGxpc3QsIG91dCBvZiB0aGUgZG9tYWluJ3MKLSAgICAgKiBwYXJrZWRfdmNwdXMgbGlz dCwgbm93IHRoYXQgd2UgaG9sZCB0aGUgYnVkZ2V0X2xvY2suIFRoZW4sIGRyb3Agc3VjaAorICAg ICAqIHBhcmtlZF91bml0cyBsaXN0LCBub3cgdGhhdCB3ZSBob2xkIHRoZSBidWRnZXRfbG9jay4g VGhlbiwgZHJvcCBzdWNoCiAgICAgICogbG9jaywgYW5kIHBhc3MgdGhlIGxpc3QgdG8gdGhlIHVu cGFya2luZyBmdW5jdGlvbi4KICAgICAgKi8KLSAgICBsaXN0X3NwbGljZV9pbml0KCZzZG9tLT5w YXJrZWRfdmNwdXMsICZwYXJrZWQpOworICAgIGxpc3Rfc3BsaWNlX2luaXQoJnNkb20tPnBhcmtl ZF91bml0cywgJnBhcmtlZCk7CiAKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZG9tLT5i dWRnZXRfbG9jaywgZmxhZ3MpOwogCi0gICAgdW5wYXJrX3BhcmtlZF92Y3B1cyhzZG9tLT5kb20t PmNwdXBvb2wtPnNjaGVkLCAmcGFya2VkKTsKKyAgICB1bnBhcmtfcGFya2VkX3VuaXRzKHNkb20t PmRvbS0+Y3B1cG9vbC0+c2NoZWQsICZwYXJrZWQpOwogCiAgb3V0OgogICAgIHNldF90aW1lcigm c2RvbS0+cmVwbF90aW1lciwgc2RvbS0+bmV4dF9yZXBsKTsKQEAgLTIwMDQsMzcgKzIwMDQsMzYg QEAgc3RhdGljIHZvaWQgcmVwbGVuaXNoX2RvbWFpbl9idWRnZXQodm9pZCogZGF0YSkKIAogI2lm bmRlZiBOREVCVUcKIHN0YXRpYyBpbmxpbmUgdm9pZAotY3NjaGVkMl92Y3B1X2NoZWNrKHN0cnVj dCB2Y3B1ICp2YykKK2NzY2hlZDJfdW5pdF9jaGVjayhzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkK IHsKLSAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICogY29uc3Qgc3ZjID0gY3NjaGVkMl91bml0KHZj LT5zY2hlZF91bml0KTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICogY29uc3Qgc3ZjID0gY3Nj aGVkMl91bml0KHVuaXQpOwogICAgIHN0cnVjdCBjc2NoZWQyX2RvbSAqIGNvbnN0IHNkb20gPSBz dmMtPnNkb207CiAKLSAgICBCVUdfT04oIHN2Yy0+dmNwdSAhPSB2YyApOwotICAgIEJVR19PTigg c2RvbSAhPSBjc2NoZWQyX2RvbSh2Yy0+ZG9tYWluKSApOworICAgIEJVR19PTiggc3ZjLT51bml0 ICE9IHVuaXQgKTsKKyAgICBCVUdfT04oIHNkb20gIT0gY3NjaGVkMl9kb20odW5pdC0+ZG9tYWlu KSApOwogICAgIGlmICggc2RvbSApCiAgICAgewotICAgICAgICBCVUdfT04oIGlzX2lkbGVfdmNw dSh2YykgKTsKLSAgICAgICAgQlVHX09OKCBzZG9tLT5kb20gIT0gdmMtPmRvbWFpbiApOworICAg ICAgICBCVUdfT04oIGlzX2lkbGVfdW5pdCh1bml0KSApOworICAgICAgICBCVUdfT04oIHNkb20t PmRvbSAhPSB1bml0LT5kb21haW4gKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAg QlVHX09OKCAhaXNfaWRsZV92Y3B1KHZjKSApOworICAgICAgICBCVUdfT04oICFpc19pZGxlX3Vu aXQodW5pdCkgKTsKICAgICB9CiAgICAgU0NIRURfU1RBVF9DUkFOSyh1bml0X2NoZWNrKTsKIH0K LSNkZWZpbmUgQ1NDSEVEMl9WQ1BVX0NIRUNLKF92YykgIChjc2NoZWQyX3ZjcHVfY2hlY2soX3Zj KSkKKyNkZWZpbmUgQ1NDSEVEMl9VTklUX0NIRUNLKHVuaXQpICAoY3NjaGVkMl91bml0X2NoZWNr KHVuaXQpKQogI2Vsc2UKLSNkZWZpbmUgQ1NDSEVEMl9WQ1BVX0NIRUNLKF92YykKKyNkZWZpbmUg Q1NDSEVEMl9VTklUX0NIRUNLKHVuaXQpCiAjZW5kaWYKIAogc3RhdGljIHZvaWQgKgogY3NjaGVk Ml9hbGxvY192ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0LAogICAgICAgICAgICAgICAgICAgICB2b2lkICpkZCkKIHsKLSAgICBzdHJ1Y3Qg dmNwdSAqdmMgPSB1bml0LT52Y3B1X2xpc3Q7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3Zj OwogCi0gICAgLyogQWxsb2NhdGUgcGVyLVZDUFUgaW5mbyAqLworICAgIC8qIEFsbG9jYXRlIHBl ci1VTklUIGluZm8gKi8KICAgICBzdmMgPSB4emFsbG9jKHN0cnVjdCBjc2NoZWQyX3VuaXQpOwog ICAgIGlmICggc3ZjID09IE5VTEwgKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwNDMsMTAg KzIwNDIsMTAgQEAgY3NjaGVkMl9hbGxvY192ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpv cHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0LAogICAgIElOSVRfTElTVF9IRUFEKCZzdmMtPnJ1 bnFfZWxlbSk7CiAKICAgICBzdmMtPnNkb20gPSBkZDsKLSAgICBzdmMtPnZjcHUgPSB2YzsKKyAg ICBzdmMtPnVuaXQgPSB1bml0OwogICAgIHN2Yy0+ZmxhZ3MgPSAwVTsKIAotICAgIGlmICggISBp c19pZGxlX3ZjcHUodmMpICkKKyAgICBpZiAoICEgaXNfaWRsZV91bml0KHVuaXQpICkKICAgICB7 CiAgICAgICAgIEFTU0VSVChzdmMtPnNkb20gIT0gTlVMTCk7CiAgICAgICAgIHN2Yy0+Y3JlZGl0 ID0gQ1NDSEVEMl9DUkVESVRfSU5JVDsKQEAgLTIwNzUsMTkgKzIwNzQsMTggQEAgY3NjaGVkMl9h bGxvY192ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0 ICp1bml0LAogc3RhdGljIHZvaWQKIGNzY2hlZDJfdW5pdF9zbGVlcChjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIHN0cnVjdCB2Y3B1 ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICogY29uc3Qg c3ZjID0gY3NjaGVkMl91bml0KHVuaXQpOwogCi0gICAgQVNTRVJUKCFpc19pZGxlX3ZjcHUodmMp KTsKKyAgICBBU1NFUlQoIWlzX2lkbGVfdW5pdCh1bml0KSk7CiAgICAgU0NIRURfU1RBVF9DUkFO Syh1bml0X3NsZWVwKTsKIAotICAgIGlmICggY3Vycl9vbl9jcHUodmMtPnByb2Nlc3NvcikgPT0g dW5pdCApCisgICAgaWYgKCBjdXJyX29uX2NwdShzY2hlZF91bml0X2NwdSh1bml0KSkgPT0gdW5p dCApCiAgICAgewotICAgICAgICB0aWNrbGVfY3B1KHZjLT5wcm9jZXNzb3IsIHN2Yy0+cnFkKTsK KyAgICAgICAgdGlja2xlX2NwdShzY2hlZF91bml0X2NwdSh1bml0KSwgc3ZjLT5ycWQpOwogICAg IH0KLSAgICBlbHNlIGlmICggdmNwdV9vbl9ydW5xKHN2YykgKQorICAgIGVsc2UgaWYgKCB1bml0 X29uX3J1bnEoc3ZjKSApCiAgICAgewotICAgICAgICBBU1NFUlQoc3ZjLT5ycWQgPT0gYzJycWQo b3BzLCB2Yy0+cHJvY2Vzc29yKSk7CisgICAgICAgIEFTU0VSVChzdmMtPnJxZCA9PSBjMnJxZChv cHMsIHNjaGVkX3VuaXRfY3B1KHVuaXQpKSk7CiAgICAgICAgIHVwZGF0ZV9sb2FkKG9wcywgc3Zj LT5ycWQsIHN2YywgLTEsIE5PVygpKTsKICAgICAgICAgcnVucV9yZW1vdmUoc3ZjKTsKICAgICB9 CkBAIC0yMDk4LDE0ICsyMDk2LDEzIEBAIGNzY2hlZDJfdW5pdF9zbGVlcChjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogc3RhdGljIHZvaWQKIGNz Y2hlZDJfdW5pdF93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVk X3VuaXQgKnVuaXQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdV9saXN0Owog ICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKiBjb25zdCBzdmMgPSBjc2NoZWQyX3VuaXQodW5pdCk7 Ci0gICAgdW5zaWduZWQgaW50IGNwdSA9IHZjLT5wcm9jZXNzb3I7CisgICAgdW5zaWduZWQgaW50 IGNwdSA9IHNjaGVkX3VuaXRfY3B1KHVuaXQpOwogICAgIHNfdGltZV90IG5vdzsKIAogICAgIEFT U0VSVChzcGluX2lzX2xvY2tlZChnZXRfc2NoZWRfcmVzKGNwdSktPnNjaGVkdWxlX2xvY2spKTsK IAotICAgIEFTU0VSVCghaXNfaWRsZV92Y3B1KHZjKSk7CisgICAgQVNTRVJUKCFpc19pZGxlX3Vu aXQodW5pdCkpOwogCiAgICAgaWYgKCB1bmxpa2VseShjdXJyX29uX2NwdShjcHUpID09IHVuaXQp ICkKICAgICB7CkBAIC0yMTEzLDE4ICsyMTEwLDE4IEBAIGNzY2hlZDJfdW5pdF93YWtlKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAg IGdvdG8gb3V0OwogICAgIH0KIAotICAgIGlmICggdW5saWtlbHkodmNwdV9vbl9ydW5xKHN2Yykp ICkKKyAgICBpZiAoIHVubGlrZWx5KHVuaXRfb25fcnVucShzdmMpKSApCiAgICAgewogICAgICAg ICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfd2FrZV9vbnJ1bnEpOwogICAgICAgICBnb3RvIG91dDsK ICAgICB9CiAKLSAgICBpZiAoIGxpa2VseSh2Y3B1X3J1bm5hYmxlKHZjKSkgKQorICAgIGlmICgg bGlrZWx5KHVuaXRfcnVubmFibGUodW5pdCkpICkKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh1 bml0X3dha2VfcnVubmFibGUpOwogICAgIGVsc2UKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh1 bml0X3dha2Vfbm90X3J1bm5hYmxlKTsKIAotICAgIC8qIElmIHRoZSBjb250ZXh0IGhhc24ndCBi ZWVuIHNhdmVkIGZvciB0aGlzIHZjcHUgeWV0LCB3ZSBjYW4ndCBwdXQgaXQgb24KKyAgICAvKiBJ ZiB0aGUgY29udGV4dCBoYXNuJ3QgYmVlbiBzYXZlZCBmb3IgdGhpcyB1bml0IHlldCwgd2UgY2Fu J3QgcHV0IGl0IG9uCiAgICAgICogYW5vdGhlciBydW5xdWV1ZS4gIEluc3RlYWQsIHdlIHNldCBh IGZsYWcgc28gdGhhdCBpdCB3aWxsIGJlIHB1dCBvbiB0aGUgcnVucXVldWUKICAgICAgKiBhZnRl ciB0aGUgY29udGV4dCBoYXMgYmVlbiBzYXZlZC4gKi8KICAgICBpZiAoIHVubGlrZWx5KHN2Yy0+ ZmxhZ3MgJiBDU0ZMQUdfc2NoZWR1bGVkKSApCkBAIC0yMTM1LDE1ICsyMTMyLDE1IEBAIGNzY2hl ZDJfdW5pdF93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3Vu aXQgKnVuaXQpCiAKICAgICAvKiBBZGQgaW50byB0aGUgbmV3IHJ1bnF1ZXVlIGlmIG5lY2Vzc2Fy eSAqLwogICAgIGlmICggc3ZjLT5ycWQgPT0gTlVMTCApCi0gICAgICAgIHJ1bnFfYXNzaWduKG9w cywgdmMpOworICAgICAgICBydW5xX2Fzc2lnbihvcHMsIHVuaXQpOwogICAgIGVsc2UKLSAgICAg ICAgQVNTRVJUKGMycnFkKG9wcywgdmMtPnByb2Nlc3NvcikgPT0gc3ZjLT5ycWQgKTsKKyAgICAg ICAgQVNTRVJUKGMycnFkKG9wcywgc2NoZWRfdW5pdF9jcHUodW5pdCkpID09IHN2Yy0+cnFkICk7 CiAKICAgICBub3cgPSBOT1coKTsKIAogICAgIHVwZGF0ZV9sb2FkKG9wcywgc3ZjLT5ycWQsIHN2 YywgMSwgbm93KTsKLSAgICAgICAgCi0gICAgLyogUHV0IHRoZSBWQ1BVIG9uIHRoZSBydW5xICov CisKKyAgICAvKiBQdXQgdGhlIFVOSVQgb24gdGhlIHJ1bnEgKi8KICAgICBydW5xX2luc2VydChv cHMsIHN2Yyk7CiAgICAgcnVucV90aWNrbGUob3BzLCBzdmMsIG5vdyk7CiAKQEAgLTIxNTYsNDkg KzIxNTMsNDggQEAgY3NjaGVkMl91bml0X3lpZWxkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAq IGNvbnN0IHN2YyA9IGNzY2hlZDJfdW5pdCh1bml0KTsKIAotICAgIF9fc2V0X2JpdChfX0NTRkxB R192Y3B1X3lpZWxkLCAmc3ZjLT5mbGFncyk7CisgICAgX19zZXRfYml0KF9fQ1NGTEFHX3VuaXRf eWllbGQsICZzdmMtPmZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQKIGNzY2hlZDJfY29udGV4dF9z YXZlZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0 KQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1Y3Qg Y3NjaGVkMl91bml0ICogY29uc3Qgc3ZjID0gY3NjaGVkMl91bml0KHVuaXQpOwogICAgIHNwaW5s b2NrX3QgKmxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwogICAgIHNfdGltZV90 IG5vdyA9IE5PVygpOwogICAgIExJU1RfSEVBRCh3ZXJlX3BhcmtlZCk7CiAKLSAgICBCVUdfT04o ICFpc19pZGxlX3ZjcHUodmMpICYmIHN2Yy0+cnFkICE9IGMycnFkKG9wcywgdmMtPnByb2Nlc3Nv cikpOwotICAgIEFTU0VSVChpc19pZGxlX3ZjcHUodmMpIHx8IHN2Yy0+cnFkID09IGMycnFkKG9w cywgdmMtPnByb2Nlc3NvcikpOworICAgIEJVR19PTiggIWlzX2lkbGVfdW5pdCh1bml0KSAmJiBz dmMtPnJxZCAhPSBjMnJxZChvcHMsIHNjaGVkX3VuaXRfY3B1KHVuaXQpKSk7CisgICAgQVNTRVJU KGlzX2lkbGVfdW5pdCh1bml0KSB8fCBzdmMtPnJxZCA9PSBjMnJxZChvcHMsIHNjaGVkX3VuaXRf Y3B1KHVuaXQpKSk7CiAKLSAgICAvKiBUaGlzIHZjcHUgaXMgbm93IGVsaWdpYmxlIHRvIGJlIHB1 dCBvbiB0aGUgcnVucXVldWUgYWdhaW4gKi8KKyAgICAvKiBUaGlzIHVuaXQgaXMgbm93IGVsaWdp YmxlIHRvIGJlIHB1dCBvbiB0aGUgcnVucXVldWUgYWdhaW4gKi8KICAgICBfX2NsZWFyX2JpdChf X0NTRkxBR19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKIAogICAgIGlmICggdW5saWtlbHkoaGFz X2NhcChzdmMpICYmIHN2Yy0+YnVkZ2V0ID4gMCkgKQotICAgICAgICB2Y3B1X3JldHVybl9idWRn ZXQoc3ZjLCAmd2VyZV9wYXJrZWQpOworICAgICAgICB1bml0X3JldHVybl9idWRnZXQoc3ZjLCAm d2VyZV9wYXJrZWQpOwogCiAgICAgLyogSWYgc29tZW9uZSB3YW50cyBpdCBvbiB0aGUgcnVucXVl dWUsIHB1dCBpdCB0aGVyZS4gKi8KICAgICAvKgogICAgICAqIE5COiBXZSBjYW4gZ2V0IHJpZCBv ZiBDU0ZMQUdfc2NoZWR1bGVkIGJ5IGNoZWNraW5nIGZvcgotICAgICAqIHZjLT5pc19ydW5uaW5n IGFuZCB2Y3B1X29uX3J1bnEoc3ZjKSBoZXJlLiAgSG93ZXZlciwKKyAgICAgKiB2Yy0+aXNfcnVu bmluZyBhbmQgdW5pdF9vbl9ydW5xKHN2YykgaGVyZS4gIEhvd2V2ZXIsCiAgICAgICogc2luY2Ug d2UncmUgYWNjZXNzaW5nIHRoZSBmbGFncyBjYWNoZWxpbmUgYW55d2F5LAogICAgICAqIGl0IHNl ZW1zIGEgYml0IHBvaW50bGVzczsgZXNwZWNpYWxseSBhcyB3ZSBoYXZlIHBsZW50eSBvZgogICAg ICAqIGJpdHMgZnJlZS4KICAgICAgKi8KICAgICBpZiAoIF9fdGVzdF9hbmRfY2xlYXJfYml0KF9f Q1NGTEFHX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKQotICAgICAgICAgJiYgbGlrZWx5 KHZjcHVfcnVubmFibGUodmMpKSApCisgICAgICAgICAmJiBsaWtlbHkodW5pdF9ydW5uYWJsZSh1 bml0KSkgKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCF2Y3B1X29uX3J1bnEoc3ZjKSk7CisgICAg ICAgIEFTU0VSVCghdW5pdF9vbl9ydW5xKHN2YykpOwogCiAgICAgICAgIHJ1bnFfaW5zZXJ0KG9w cywgc3ZjKTsKICAgICAgICAgcnVucV90aWNrbGUob3BzLCBzdmMsIG5vdyk7CiAgICAgfQotICAg IGVsc2UgaWYgKCAhaXNfaWRsZV92Y3B1KHZjKSApCisgICAgZWxzZSBpZiAoICFpc19pZGxlX3Vu aXQodW5pdCkgKQogICAgICAgICB1cGRhdGVfbG9hZChvcHMsIHN2Yy0+cnFkLCBzdmMsIC0xLCBu b3cpOwogCiAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwogCi0gICAg dW5wYXJrX3BhcmtlZF92Y3B1cyhvcHMsICZ3ZXJlX3BhcmtlZCk7CisgICAgdW5wYXJrX3Bhcmtl ZF91bml0cyhvcHMsICZ3ZXJlX3BhcmtlZCk7CiB9CiAKICNkZWZpbmUgTUFYX0xPQUQgKFNUSU1F X01BWCkKQEAgLTIyMDYsOSArMjIwMiw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2Ug KgogY3NjaGVkMl9yZXNfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBz Y2hlZF91bml0ICp1bml0KQogewogICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNz Y2hlZDJfcHJpdihvcHMpOwotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsK ICAgICBpbnQgaSwgbWluX3JxaSA9IC0xLCBtaW5fc19ycWkgPSAtMTsKLSAgICB1bnNpZ25lZCBp bnQgbmV3X2NwdSwgY3B1ID0gdmMtPnByb2Nlc3NvcjsKKyAgICB1bnNpZ25lZCBpbnQgbmV3X2Nw dSwgY3B1ID0gc2NoZWRfdW5pdF9jcHUodW5pdCk7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAq c3ZjID0gY3NjaGVkMl91bml0KHVuaXQpOwogICAgIHNfdGltZV90IG1pbl9hdmdsb2FkID0gTUFY X0xPQUQsIG1pbl9zX2F2Z2xvYWQgPSBNQVhfTE9BRDsKICAgICBib29sIGhhc19zb2Z0OwpAQCAt MjI0Niw3ICsyMjQxLDcgQEAgY3NjaGVkMl9yZXNfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIH0KIAogICAgIGNwdW1hc2tfYW5k KGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCi0gICAg ICAgICAgICAgICAgY3B1cG9vbF9kb21haW5fY3B1bWFzayh2Yy0+ZG9tYWluKSk7CisgICAgICAg ICAgICAgICAgY3B1cG9vbF9kb21haW5fY3B1bWFzayh1bml0LT5kb21haW4pKTsKIAogICAgIC8q CiAgICAgICogRmlyc3QgY2hlY2sgdG8gc2VlIGlmIHdlJ3JlIGhlcmUgYmVjYXVzZSBzb21lb25l IGVsc2Ugc3VnZ2VzdGVkIGEgcGxhY2UKQEAgLTIzNTcsNyArMjM1Miw3IEBAIGNzY2hlZDJfcmVz X3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5p dCkKICAgICAgICAgICogV2UgaGF2ZSBzb2Z0IGFmZmluaXR5LCBhbmQgd2UgaGF2ZSBhIGNhbmRp ZGF0ZSBydW5xLCBzbyBnbyBmb3IgaXQuCiAgICAgICAgICAqCiAgICAgICAgICAqIE5vdGUgdGhh dCwgdG8gb2J0YWluIHRoZSBzb2Z0LWFmZmluaXR5IG1hc2ssIHdlICJqdXN0IiBwdXQgd2hhdCB3 ZQotICAgICAgICAgKiBoYXZlIGluIGNwdW1hc2tfc2NyYXRjaCBpbiAmJiB3aXRoIHZjLT5jcHVf c29mdF9hZmZpbml0eS4gVGhpcyBpcworICAgICAgICAgKiBoYXZlIGluIGNwdW1hc2tfc2NyYXRj aCBpbiAmJiB3aXRoIHVuaXQtPmNwdV9zb2Z0X2FmZmluaXR5LiBUaGlzIGlzCiAgICAgICAgICAq IG9rIGJlY2F1c2U6CiAgICAgICAgICAqIC0gd2Uga25vdyB0aGF0IHVuaXQtPmNwdV9oYXJkX2Fm ZmluaXR5IGFuZCAtPmNwdV9zb2Z0X2FmZmluaXR5IGhhdmUKICAgICAgICAgICogICBhIG5vbi1l bXB0eSBpbnRlcnNlY3Rpb24gKGJlY2F1c2UgaGFzX3NvZnQgaXMgdHJ1ZSk7CkBAIC0yMzgwLDcg KzIzNzUsNyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg c3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgICAqIGFueSBzdWl0YWJsZSBydW5xLiBC dXQgd2UgZGlkIGZpbmQgb25lIHdoZW4gY29uc2lkZXJpbmcgaGFyZAogICAgICAgICAgKiBhZmZp bml0eSwgc28gZ28gZm9yIGl0LgogICAgICAgICAgKgotICAgICAgICAgKiBjcHVtYXNrX3NjcmF0 Y2ggYWxyZWFkeSBoYXMgdmMtPmNwdV9oYXJkX2FmZmluaXR5ICYKKyAgICAgICAgICogY3B1bWFz a19zY3JhdGNoIGFscmVhZHkgaGFzIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5ICYKICAgICAgICAg ICogY3B1cG9vbF9kb21haW5fY3B1bWFzaygpIGluIGl0LCBzbyBpdCdzIGVub3VnaCB0aGF0IHdl IGZpbHRlcgogICAgICAgICAgKiB3aXRoIHRoZSBjcHVzIG9mIHRoZSBydW5xLgogICAgICAgICAg Ki8KQEAgLTI0MTEsMTEgKzI0MDYsMTEgQEAgY3NjaGVkMl9yZXNfcGljayhjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIHsKICAgICAgICAg c3RydWN0IHsKICAgICAgICAgICAgIHVpbnQ2NF90IGJfYXZnbG9hZDsKLSAgICAgICAgICAgIHVu c2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKKyAgICAgICAgICAgIHVuc2lnbmVkIHVuaXQ6MTYsIGRv bToxNjsKICAgICAgICAgICAgIHVuc2lnbmVkIHJxX2lkOjE2LCBuZXdfY3B1OjE2OwogICAgICAg ICB9IGQ7Ci0gICAgICAgIGQuZG9tID0gdmMtPmRvbWFpbi0+ZG9tYWluX2lkOwotICAgICAgICBk LnZjcHUgPSB2Yy0+dmNwdV9pZDsKKyAgICAgICAgZC5kb20gPSB1bml0LT5kb21haW4tPmRvbWFp bl9pZDsKKyAgICAgICAgZC51bml0ID0gdW5pdC0+dW5pdF9pZDsKICAgICAgICAgZC5ycV9pZCA9 IG1pbl9ycWk7CiAgICAgICAgIGQuYl9hdmdsb2FkID0gbWluX2F2Z2xvYWQ7CiAgICAgICAgIGQu bmV3X2NwdSA9IG5ld19jcHU7CkBAIC0yNDM0LDEwICsyNDI5LDEwIEBAIHR5cGVkZWYgc3RydWN0 IHsKICAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICogYmVzdF9wdXNoX3N2YywgKmJlc3RfcHVsbF9z dmM7CiAgICAgLyogTkI6IFJlYWQgYnkgY29uc2lkZXIoKSAqLwogICAgIHN0cnVjdCBjc2NoZWQy X3J1bnF1ZXVlX2RhdGEgKmxycWQ7Ci0gICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAq b3JxZDsgICAgICAgICAgICAgICAgICAKKyAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRh ICpvcnFkOwogfSBiYWxhbmNlX3N0YXRlX3Q7CiAKLXN0YXRpYyB2b2lkIGNvbnNpZGVyKGJhbGFu Y2Vfc3RhdGVfdCAqc3QsIAorc3RhdGljIHZvaWQgY29uc2lkZXIoYmFsYW5jZV9zdGF0ZV90ICpz dCwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnB1c2hfc3ZjLAog ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqcHVsbF9zdmMpCiB7CkBA IC0yNDc2LDE3ICsyNDcxLDE3IEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGUoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1 ZV9kYXRhICp0cnFkLAogICAgICAgICAgICAgICAgICAgICBzX3RpbWVfdCBub3cpCiB7Ci0gICAg aW50IGNwdSA9IHN2Yy0+dmNwdS0+cHJvY2Vzc29yOwotICAgIHN0cnVjdCBzY2hlZF91bml0ICp1 bml0ID0gc3ZjLT52Y3B1LT5zY2hlZF91bml0OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0 ID0gc3ZjLT51bml0OworICAgIGludCBjcHUgPSBzY2hlZF91bml0X2NwdSh1bml0KTsKIAogICAg IGlmICggdW5saWtlbHkodGJfaW5pdF9kb25lKSApCiAgICAgewogICAgICAgICBzdHJ1Y3Qgewot ICAgICAgICAgICAgdW5zaWduZWQgdmNwdToxNiwgZG9tOjE2OworICAgICAgICAgICAgdW5zaWdu ZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgdW5zaWduZWQgcnFpOjE2LCB0cnFpOjE2 OwogICAgICAgICB9IGQ7Ci0gICAgICAgIGQuZG9tID0gc3ZjLT52Y3B1LT5kb21haW4tPmRvbWFp bl9pZDsKLSAgICAgICAgZC52Y3B1ID0gc3ZjLT52Y3B1LT52Y3B1X2lkOworICAgICAgICBkLmRv bSA9IHVuaXQtPmRvbWFpbi0+ZG9tYWluX2lkOworICAgICAgICBkLnVuaXQgPSB1bml0LT51bml0 X2lkOwogICAgICAgICBkLnJxaSA9IHN2Yy0+cnFkLT5pZDsKICAgICAgICAgZC50cnFpID0gdHJx ZC0+aWQ7CiAgICAgICAgIF9fdHJhY2VfdmFyKFRSQ19DU0NIRUQyX01JR1JBVEUsIDEsCkBAIC0y NDk4LDcgKzI0OTMsNyBAQCBzdGF0aWMgdm9pZCBtaWdyYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywKICAgICB7CiAgICAgICAgIC8qIEl0J3MgcnVubmluZzsgbWFyayBpdCB0byBtaWdy YXRlLiAqLwogICAgICAgICBzdmMtPm1pZ3JhdGVfcnFkID0gdHJxZDsKLSAgICAgICAgX19zZXRf Yml0KF9WUEZfbWlncmF0aW5nLCAmc3ZjLT52Y3B1LT5wYXVzZV9mbGFncyk7CisgICAgICAgIHNj aGVkX3NldF9wYXVzZV9mbGFncyh1bml0LCBfVlBGX21pZ3JhdGluZyk7CiAgICAgICAgIF9fc2V0 X2JpdChfX0NTRkxBR19ydW5xX21pZ3JhdGVfcmVxdWVzdCwgJnN2Yy0+ZmxhZ3MpOwogICAgICAg ICBTQ0hFRF9TVEFUX0NSQU5LKG1pZ3JhdGVfcmVxdWVzdGVkKTsKICAgICAgICAgdGlja2xlX2Nw dShjcHUsIHN2Yy0+cnFkKTsKQEAgLTI1MDcsNyArMjUwMiw3IEBAIHN0YXRpYyB2b2lkIG1pZ3Jh dGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgIHsKICAgICAgICAgaW50IG9uX3J1 bnEgPSAwOwogICAgICAgICAvKiBJdCdzIG5vdCBydW5uaW5nOyBqdXN0IG1vdmUgaXQgKi8KLSAg ICAgICAgaWYgKCB2Y3B1X29uX3J1bnEoc3ZjKSApCisgICAgICAgIGlmICggdW5pdF9vbl9ydW5x KHN2YykgKQogICAgICAgICB7CiAgICAgICAgICAgICBydW5xX3JlbW92ZShzdmMpOwogICAgICAg ICAgICAgdXBkYXRlX2xvYWQob3BzLCBzdmMtPnJxZCwgTlVMTCwgLTEsIG5vdyk7CkBAIC0yNTE2 LDE0ICsyNTExLDE0IEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLAogICAgICAgICBfcnVucV9kZWFzc2lnbihzdmMpOwogCiAgICAgICAgIGNwdW1hc2tf YW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCi0g ICAgICAgICAgICAgICAgICAgIGNwdXBvb2xfZG9tYWluX2NwdW1hc2soc3ZjLT52Y3B1LT5kb21h aW4pKTsKKyAgICAgICAgICAgICAgICAgICAgY3B1cG9vbF9kb21haW5fY3B1bWFzayh1bml0LT5k b21haW4pKTsKICAgICAgICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBj cHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksCiAgICAgICAgICAgICAgICAgICAgICZ0cnFkLT5hY3Rp dmUpOwotICAgICAgICBzdmMtPnZjcHUtPnByb2Nlc3NvciA9IGNwdW1hc2tfY3ljbGUodHJxZC0+ cGlja19iaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKLSAgICAgICAgc3ZjLT52Y3B1LT5zY2hlZF91bml0 LT5yZXMgPSBnZXRfc2NoZWRfcmVzKHN2Yy0+dmNwdS0+cHJvY2Vzc29yKTsKLSAgICAgICAgdHJx ZC0+cGlja19iaWFzID0gc3ZjLT52Y3B1LT5wcm9jZXNzb3I7Ci0gICAgICAgIEFTU0VSVChzdmMt PnZjcHUtPnByb2Nlc3NvciA8IG5yX2NwdV9pZHMpOworICAgICAgICBzY2hlZF9zZXRfcmVzKHVu aXQsCisgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NjaGVkX3JlcyhjcHVtYXNrX2N5Y2xlKHRy cWQtPnBpY2tfYmlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKSkpOworICAgICAgICB0cnFkLT5waWNr X2JpYXMgPSBzY2hlZF91bml0X2NwdSh1bml0KTsKKyAgICAgICAgQVNTRVJUKHNjaGVkX3VuaXRf Y3B1KHVuaXQpIDwgbnJfY3B1X2lkcyk7CiAKICAgICAgICAgX3J1bnFfYXNzaWduKHN2YywgdHJx ZCk7CiAgICAgICAgIGlmICggb25fcnVucSApCkBAIC0yNTQzLDE0ICsyNTM4LDE0IEBAIHN0YXRp YyB2b2lkIG1pZ3JhdGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICogIC0gc3ZjIGlz IG5vdCBhbHJlYWR5IGZsYWdnZWQgdG8gbWlncmF0ZSwKICAqICAtIGlmIHN2YyBpcyBhbGxvd2Vk IHRvIHJ1biBvbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHBjcHVzIG9mIHJxZC4KICAqLwotc3RhdGlj IGJvb2wgdmNwdV9pc19taWdyYXRlYWJsZShzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMsCitzdGF0 aWMgYm9vbCB1bml0X2lzX21pZ3JhdGVhYmxlKHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9k YXRhICpycWQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnYgPSBzdmMtPnZjcHU7Ci0gICAgaW50IGNw dSA9IHN2Yy0+dmNwdS0+cHJvY2Vzc29yOworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0ID0g c3ZjLT51bml0OworICAgIGludCBjcHUgPSBzY2hlZF91bml0X2NwdSh1bml0KTsKIAotICAgIGNw dW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgdi0+c2NoZWRfdW5pdC0+Y3B1X2hh cmRfYWZmaW5pdHksCi0gICAgICAgICAgICAgICAgY3B1cG9vbF9kb21haW5fY3B1bWFzayh2LT5k b21haW4pKTsKKyAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIHVuaXQt PmNwdV9oYXJkX2FmZmluaXR5LAorICAgICAgICAgICAgICAgIGNwdXBvb2xfZG9tYWluX2NwdW1h c2sodW5pdC0+ZG9tYWluKSk7CiAKICAgICByZXR1cm4gIShzdmMtPmZsYWdzICYgQ1NGTEFHX3J1 bnFfbWlncmF0ZV9yZXF1ZXN0KSAmJgogICAgICAgICAgICBjcHVtYXNrX2ludGVyc2VjdHMoY3B1 bWFza19zY3JhdGNoX2NwdShjcHUpLCAmcnFkLT5hY3RpdmUpOwpAQCAtMjU4Nyw3ICsyNTgyLDcg QEAgcmV0cnk6CiAgICAgZm9yX2VhY2hfY3B1KGksICZwcnYtPmFjdGl2ZV9xdWV1ZXMpCiAgICAg ewogICAgICAgICBzX3RpbWVfdCBkZWx0YTsKLSAgICAgICAgCisKICAgICAgICAgc3Qub3JxZCA9 IHBydi0+cnFkICsgaTsKIAogICAgICAgICBpZiAoIHN0Lm9ycWQgPT0gc3QubHJxZApAQCAtMjU5 NSw3ICsyNTkwLDcgQEAgcmV0cnk6CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICB1 cGRhdGVfcnVucV9sb2FkKG9wcywgc3Qub3JxZCwgMCwgbm93KTsKLSAgICAKKwogICAgICAgICBk ZWx0YSA9IHN0LmxycWQtPmJfYXZnbG9hZCAtIHN0Lm9ycWQtPmJfYXZnbG9hZDsKICAgICAgICAg aWYgKCBkZWx0YSA8IDAgKQogICAgICAgICAgICAgZGVsdGEgPSAtZGVsdGE7CkBAIC0yNjE4LDcg KzI2MTMsNyBAQCByZXRyeToKICAgICAgICAgc190aW1lX3QgbG9hZF9tYXg7CiAgICAgICAgIGlu dCBjcHVzX21heDsKIAotICAgICAgICAKKwogICAgICAgICBsb2FkX21heCA9IHN0LmxycWQtPmJf YXZnbG9hZDsKICAgICAgICAgaWYgKCBzdC5vcnFkLT5iX2F2Z2xvYWQgPiBsb2FkX21heCApCiAg ICAgICAgICAgICBsb2FkX21heCA9IHN0Lm9ycWQtPmJfYXZnbG9hZDsKQEAgLTI2NTcsNyArMjY1 Miw3IEBAIHJldHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9wdF9vdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZSkpICkKICAgICAgICAgICAgICAgICBnb3Rv IG91dDsKICAgICB9Ci0gICAgICAgICAgICAgCisKICAgICAvKiBUcnkgdG8gZ3JhYiB0aGUgb3Ro ZXIgcnVucXVldWUgbG9jazsgaWYgaXQncyBiZWVuIHRha2VuIGluIHRoZQogICAgICAqIG1lYW50 aW1lLCB0cnkgdGhlIHByb2Nlc3Mgb3ZlciBhZ2Fpbi4gIFRoaXMgY2FuJ3QgZGVhZGxvY2sKICAg ICAgKiBiZWNhdXNlIGlmIGl0IGRvZXNuJ3QgZ2V0IGFueSBvdGhlciBycWQgbG9ja3MsIGl0IHdp bGwgc2ltcGx5CkBAIC0yNjk3LDE3ICsyNjkyLDE3IEBAIHJldHJ5OgogCiAgICAgICAgIHVwZGF0 ZV9zdmNfbG9hZChvcHMsIHB1c2hfc3ZjLCAwLCBub3cpOwogCi0gICAgICAgIGlmICggIXZjcHVf aXNfbWlncmF0ZWFibGUocHVzaF9zdmMsIHN0Lm9ycWQpICkKKyAgICAgICAgaWYgKCAhdW5pdF9p c19taWdyYXRlYWJsZShwdXNoX3N2Yywgc3Qub3JxZCkgKQogICAgICAgICAgICAgY29udGludWU7 CiAKICAgICAgICAgbGlzdF9mb3JfZWFjaCggcHVsbF9pdGVyLCAmc3Qub3JxZC0+c3ZjICkKICAg ICAgICAgewogICAgICAgICAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqIHB1bGxfc3ZjID0gbGlz dF9lbnRyeShwdWxsX2l0ZXIsIHN0cnVjdCBjc2NoZWQyX3VuaXQsIHJxZF9lbGVtKTsKLSAgICAg ICAgICAgIAorCiAgICAgICAgICAgICBpZiAoICFpbm5lcl9sb2FkX3VwZGF0ZWQgKQogICAgICAg ICAgICAgICAgIHVwZGF0ZV9zdmNfbG9hZChvcHMsIHB1bGxfc3ZjLCAwLCBub3cpOwotICAgICAg ICAKLSAgICAgICAgICAgIGlmICggIXZjcHVfaXNfbWlncmF0ZWFibGUocHVsbF9zdmMsIHN0Lmxy cWQpICkKKworICAgICAgICAgICAgaWYgKCAhdW5pdF9pc19taWdyYXRlYWJsZShwdWxsX3N2Yywg c3QubHJxZCkgKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjb25z aWRlcigmc3QsIHB1c2hfc3ZjLCBwdWxsX3N2Yyk7CkBAIC0yNzIyLDggKzI3MTcsOCBAQCByZXRy eToKICAgICBsaXN0X2Zvcl9lYWNoKCBwdWxsX2l0ZXIsICZzdC5vcnFkLT5zdmMgKQogICAgIHsK ICAgICAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqIHB1bGxfc3ZjID0gbGlzdF9lbnRyeShwdWxs X2l0ZXIsIHN0cnVjdCBjc2NoZWQyX3VuaXQsIHJxZF9lbGVtKTsKLSAgICAgICAgCi0gICAgICAg IGlmICggIXZjcHVfaXNfbWlncmF0ZWFibGUocHVsbF9zdmMsIHN0LmxycWQpICkKKworICAgICAg ICBpZiAoICF1bml0X2lzX21pZ3JhdGVhYmxlKHB1bGxfc3ZjLCBzdC5scnFkKSApCiAgICAgICAg ICAgICBjb250aW51ZTsKIAogICAgICAgICAvKiBDb25zaWRlciBwdWxsIG9ubHkgKi8KQEAgLTI3 NDYsOCArMjc0MSw3IEBAIHN0YXRpYyB2b2lkCiBjc2NoZWQyX3VuaXRfbWlncmF0ZSgKICAgICBj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0LCB1bnNp Z25lZCBpbnQgbmV3X2NwdSkKIHsKLSAgICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1X2xp c3Q7Ci0gICAgc3RydWN0IGRvbWFpbiAqZCA9IHZjLT5kb21haW47CisgICAgc3RydWN0IGRvbWFp biAqZCA9IHVuaXQtPmRvbWFpbjsKICAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICogY29uc3Qgc3Zj ID0gY3NjaGVkMl91bml0KHVuaXQpOwogICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEg KnRycWQ7CiAgICAgc190aW1lX3Qgbm93ID0gTk9XKCk7CkBAIC0yNzU5LDI1ICsyNzUzLDI0IEBA IGNzY2hlZDJfdW5pdF9taWdyYXRlKAogICAgICAqIGNwdXBvb2wuCiAgICAgICoKICAgICAgKiBB bmQgc2luY2UgdGhlcmUgaW5kZWVkIGlzIHRoZSBjaGFuY2UgdGhhdCBpdCBpcyBub3QgcGFydCBv ZiBpdCwgYWxsCi0gICAgICogd2UgbXVzdCBkbyBpcyByZW1vdmUgX2FuZF8gdW5hc3NpZ24gdGhl IHZDUFUgZnJvbSBhbnkgcnVucXVldWUsIGFzCisgICAgICogd2UgbXVzdCBkbyBpcyByZW1vdmUg X2FuZF8gdW5hc3NpZ24gdGhlIHVuaXQgZnJvbSBhbnkgcnVucXVldWUsIGFzCiAgICAgICogd2Vs bCBhcyB1cGRhdGluZyB2LT5wcm9jZXNzb3Igd2l0aCB0aGUgdGFyZ2V0LCBzbyB0aGF0IHRoZSBz dXNwZW5kCiAgICAgICogcHJvY2VzcyBjYW4gY29udGludWUuCiAgICAgICoKICAgICAgKiBJdCB3 aWxsIHRoZW4gYmUgZHVyaW5nIHJlc3VtZSB0aGF0IGEgbmV3LCBtZWFuaW5nZnVsLCB2YWx1ZSBm b3IKICAgICAgKiB2LT5wcm9jZXNzb3Igd2lsbCBiZSBjaG9zZW4sIGFuZCBkdXJpbmcgYWN0dWFs IGRvbWFpbiB1bnBhdXNlIHRoYXQKLSAgICAgKiB0aGUgdkNQVSB3aWxsIGJlIGFzc2lnbmVkIHRv IGFuZCBhZGRlZCB0byB0aGUgcHJvcGVyIHJ1bnF1ZXVlLgorICAgICAqIHRoZSB1bml0IHdpbGwg YmUgYXNzaWduZWQgdG8gYW5kIGFkZGVkIHRvIHRoZSBwcm9wZXIgcnVucXVldWUuCiAgICAgICov CiAgICAgaWYgKCB1bmxpa2VseSghY3B1bWFza190ZXN0X2NwdShuZXdfY3B1LCBjcHVwb29sX2Rv bWFpbl9jcHVtYXNrKGQpKSkgKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN5c3RlbV9zdGF0ZSA9 PSBTWVNfU1RBVEVfc3VzcGVuZCk7Ci0gICAgICAgIGlmICggdmNwdV9vbl9ydW5xKHN2YykgKQor ICAgICAgICBpZiAoIHVuaXRfb25fcnVucShzdmMpICkKICAgICAgICAgewogICAgICAgICAgICAg cnVucV9yZW1vdmUoc3ZjKTsKICAgICAgICAgICAgIHVwZGF0ZV9sb2FkKG9wcywgc3ZjLT5ycWQs IE5VTEwsIC0xLCBub3cpOwogICAgICAgICB9CiAgICAgICAgIF9ydW5xX2RlYXNzaWduKHN2Yyk7 Ci0gICAgICAgIHZjLT5wcm9jZXNzb3IgPSBuZXdfY3B1OwotICAgICAgICB1bml0LT5yZXMgPSBn ZXRfc2NoZWRfcmVzKG5ld19jcHUpOworICAgICAgICBzY2hlZF9zZXRfcmVzKHVuaXQsIGdldF9z Y2hlZF9yZXMobmV3X2NwdSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzkxLDE3 ICsyNzg0LDE0IEBAIGNzY2hlZDJfdW5pdF9taWdyYXRlKAogICAgICAqIERvIHRoZSBhY3R1YWwg bW92ZW1lbnQgdG93YXJkIG5ld19jcHUsIGFuZCB1cGRhdGUgdmMtPnByb2Nlc3Nvci4KICAgICAg KiBJZiB3ZSBhcmUgY2hhbmdpbmcgcnVucXVldWUsIG1pZ3JhdGUoKSB0YWtlcyBjYXJlIG9mIGV2 ZXJ5dGhpbmcuCiAgICAgICogSWYgd2UgYXJlIG5vdCBjaGFuZ2luZyBydW5xdWV1ZSwgd2UgbmVl ZCB0byB1cGRhdGUgdmMtPnByb2Nlc3NvcgotICAgICAqIGhlcmUuIEluIGZhY3QsIGlmLCBmb3Ig aW5zdGFuY2UsIHdlIGFyZSBoZXJlIGJlY2F1c2UgdGhlIHZjcHUncworICAgICAqIGhlcmUuIElu IGZhY3QsIGlmLCBmb3IgaW5zdGFuY2UsIHdlIGFyZSBoZXJlIGJlY2F1c2UgdGhlIHVuaXQncwog ICAgICAqIGhhcmQgYWZmaW5pdHkgY2hhbmdlZCwgd2UgZG9uJ3Qgd2FudCB0byByaXNrIGxlYXZp bmcgdmMtPnByb2Nlc3NvcgogICAgICAqIHBvaW50aW5nIHRvIGEgcGNwdSB3aGVyZSB3ZSBjYW4n dCBydW4gYW55IGxvbmdlci4KICAgICAgKi8KICAgICBpZiAoIHRycWQgIT0gc3ZjLT5ycWQgKQog ICAgICAgICBtaWdyYXRlKG9wcywgc3ZjLCB0cnFkLCBub3cpOwogICAgIGVsc2UKLSAgICB7Ci0g ICAgICAgIHZjLT5wcm9jZXNzb3IgPSBuZXdfY3B1OwotICAgICAgICB1bml0LT5yZXMgPSBnZXRf c2NoZWRfcmVzKG5ld19jcHUpOwotICAgIH0KKyAgICAgICAgc2NoZWRfc2V0X3Jlcyh1bml0LCBn ZXRfc2NoZWRfcmVzKG5ld19jcHUpKTsKIH0KIAogc3RhdGljIGludApAQCAtMjgxMywxOCArMjgw MywxOCBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgIHN0cnVjdCBjc2NoZWQyX2RvbSAqIGNvbnN0 IHNkb20gPSBjc2NoZWQyX2RvbShkKTsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYg PSBjc2NoZWQyX3ByaXYob3BzKTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIHN0cnVj dCB2Y3B1ICp2OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0OwogICAgIGludCByYyA9IDA7 CiAKICAgICAvKgogICAgICAqIExvY2tpbmc6CiAgICAgICogIC0gd2UgbXVzdCB0YWtlIHRoZSBw cml2YXRlIGxvY2sgZm9yIGFjY2Vzc2luZyB0aGUgd2VpZ2h0cyBvZiB0aGUKLSAgICAgKiAgICB2 Y3B1cyBvZiBkLCBhbmQvb3IgdGhlIGNhcDsKKyAgICAgKiAgICB1bml0cyBvZiBkLCBhbmQvb3Ig dGhlIGNhcDsKICAgICAgKiAgLSBpbiB0aGUgcHV0aW5mbyBjYXNlLCB3ZSBhbHNvIG5lZWQgdGhl IHJ1bnF1ZXVlIGxvY2socyksIGZvcgogICAgICAqICAgIHVwZGF0aW5nIHRoZSBtYXggd2FpZ2h0 IG9mIHRoZSBydW5xdWV1ZShzKS4KICAgICAgKiAgICBJZiBjaGFuZ2luZyB0aGUgY2FwLCB3ZSBh bHNvIG5lZWQgdGhlIGJ1ZGdldF9sb2NrLCBmb3IgdXBkYXRpbmcKICAgICAgKiAgICB0aGUgdmFs dWUgb2YgdGhlIGRvbWFpbiBidWRnZXQgcG9vbCAoYW5kIHRoZSBydW5xdWV1ZSBsb2NrLAotICAg ICAqICAgIGZvciBhZGp1c3RpbmcgdGhlIHBhcmFtZXRlcnMgYW5kIHJlc2NoZWR1bGluZyBhbnkg dkNQVSB0aGF0IGlzCisgICAgICogICAgZm9yIGFkanVzdGluZyB0aGUgcGFyYW1ldGVycyBhbmQg cmVzY2hlZHVsaW5nIGFueSB1bml0IHRoYXQgaXMKICAgICAgKiAgICBydW5uaW5nIGF0IHRoZSB0 aW1lIG9mIHRoZSBjaGFuZ2UpLgogICAgICAqLwogICAgIHN3aXRjaCAoIG9wLT5jbWQgKQpAQCAt Mjg0NiwxOCArMjgzNiwxOCBAQCBjc2NoZWQyX2RvbV9jbnRsKAogCiAgICAgICAgICAgICBzZG9t LT53ZWlnaHQgPSBvcC0+dS5jcmVkaXQyLndlaWdodDsKIAotICAgICAgICAgICAgLyogVXBkYXRl IHdlaWdodHMgZm9yIHZjcHVzLCBhbmQgbWF4X3dlaWdodCBmb3IgcnVucXVldWVzIG9uIHdoaWNo IHRoZXkgcmVzaWRlICovCi0gICAgICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCisgICAg ICAgICAgICAvKiBVcGRhdGUgd2VpZ2h0cyBmb3IgdW5pdHMsIGFuZCBtYXhfd2VpZ2h0IGZvciBy dW5xdWV1ZXMgb24gd2hpY2ggdGhleSByZXNpZGUgKi8KKyAgICAgICAgICAgIGZvcl9lYWNoX3Nj aGVkX3VuaXQgKCBkLCB1bml0ICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdHJ1 Y3QgY3NjaGVkMl91bml0ICpzdmMgPSBjc2NoZWQyX3VuaXQodi0+c2NoZWRfdW5pdCk7Ci0gICAg ICAgICAgICAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9jayhzdmMtPnZj cHUtPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2 YyA9IGNzY2hlZDJfdW5pdCh1bml0KTsKKyAgICAgICAgICAgICAgICBzcGlubG9ja190ICpsb2Nr ID0gdW5pdF9zY2hlZHVsZV9sb2NrKHVuaXQpOwogCi0gICAgICAgICAgICAgICAgQVNTRVJUKHN2 Yy0+cnFkID09IGMycnFkKG9wcywgc3ZjLT52Y3B1LT5wcm9jZXNzb3IpKTsKKyAgICAgICAgICAg ICAgICBBU1NFUlQoc3ZjLT5ycWQgPT0gYzJycWQob3BzLCBzY2hlZF91bml0X2NwdSh1bml0KSkp OwogCiAgICAgICAgICAgICAgICAgc3ZjLT53ZWlnaHQgPSBzZG9tLT53ZWlnaHQ7CiAgICAgICAg ICAgICAgICAgdXBkYXRlX21heF93ZWlnaHQoc3ZjLT5ycWQsIHN2Yy0+d2VpZ2h0LCBvbGRfd2Vp Z2h0KTsKIAotICAgICAgICAgICAgICAgIHVuaXRfc2NoZWR1bGVfdW5sb2NrKGxvY2ssIHN2Yy0+ dmNwdS0+c2NoZWRfdW5pdCk7CisgICAgICAgICAgICAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2so bG9jaywgdW5pdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogQ2FwICov CkBAIC0yODY2LDggKzI4NTYsOCBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgICAgICAgICAgc3Ry dWN0IGNzY2hlZDJfdW5pdCAqc3ZjOwogICAgICAgICAgICAgc3BpbmxvY2tfdCAqbG9jazsKIAot ICAgICAgICAgICAgLyogQ2FwIGlzIG9ubHkgdmFsaWQgaWYgaXQncyBiZWxvdyAxMDAgKiBucl9v Zl92Q1BVUyAqLwotICAgICAgICAgICAgaWYgKCBvcC0+dS5jcmVkaXQyLmNhcCA+IDEwMCAqIHNk b20tPm5yX3ZjcHVzICkKKyAgICAgICAgICAgIC8qIENhcCBpcyBvbmx5IHZhbGlkIGlmIGl0J3Mg YmVsb3cgMTAwICogbnJfb2ZfdW5pdHMgKi8KKyAgICAgICAgICAgIGlmICggb3AtPnUuY3JlZGl0 Mi5jYXAgPiAxMDAgKiBzZG9tLT5ucl91bml0cyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgcmMgPSAtRUlOVkFMOwogICAgICAgICAgICAgICAgIHdyaXRlX3VubG9ja19pcnFyZXN0 b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKQEAgLTI4ODAsMjMgKzI4NzAsMjMgQEAgY3NjaGVkMl9k b21fY250bCgKICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzZG9tLT5idWRnZXRfbG9jayk7CiAK ICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBXaGVuIHRyeWluZyB0byBnZXQgc29tZSBi dWRnZXQgYW5kIHJ1biwgZWFjaCB2Q1BVIHdpbGwgZ3JhYgotICAgICAgICAgICAgICogZnJvbSB0 aGUgcG9vbCAxL04gKHdpdGggTiA9IG5yIG9mIHZDUFVzIG9mIHRoZSBkb21haW4pIG9mCi0gICAg ICAgICAgICAgKiB0aGUgdG90YWwgYnVkZ2V0LiBSb3VnaGx5IHNwZWFraW5nLCB0aGlzIG1lYW5z IGVhY2ggdkNQVSB3aWxsCisgICAgICAgICAgICAgKiBXaGVuIHRyeWluZyB0byBnZXQgc29tZSBi dWRnZXQgYW5kIHJ1biwgZWFjaCB1bml0IHdpbGwgZ3JhYgorICAgICAgICAgICAgICogZnJvbSB0 aGUgcG9vbCAxL04gKHdpdGggTiA9IG5yIG9mIHVuaXRzIG9mIHRoZSBkb21haW4pIG9mCisgICAg ICAgICAgICAgKiB0aGUgdG90YWwgYnVkZ2V0LiBSb3VnaGx5IHNwZWFraW5nLCB0aGlzIG1lYW5z IGVhY2ggdW5pdCB3aWxsCiAgICAgICAgICAgICAgKiBoYXZlIGF0IGxlYXN0IG9uZSBjaGFuY2Ug dG8gcnVuIGR1cmluZyBldmVyeSBwZXJpb2QuCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAg IGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKKyAgICAgICAgICAgIGZvcl9lYWNoX3NjaGVkX3VuaXQg KCBkLCB1bml0ICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdmMgPSBjc2NoZWQy X3VuaXQodi0+c2NoZWRfdW5pdCk7Ci0gICAgICAgICAgICAgICAgbG9jayA9IHVuaXRfc2NoZWR1 bGVfbG9jayhzdmMtPnZjcHUtPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgICAgIHN2YyA9IGNz Y2hlZDJfdW5pdCh1bml0KTsKKyAgICAgICAgICAgICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9s b2NrKHVuaXQpOwogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogVG9vIHNt YWxsIHF1b3RhcyB3b3VsZCBpbiB0aGVvcnkgY2F1c2UgYSBsb3Qgb2Ygb3ZlcmhlYWQsCiAgICAg ICAgICAgICAgICAgICogd2hpY2ggdGhlbiB3b24ndCBoYXBwZW4gYmVjYXVzZSwgaW4gY3NjaGVk Ml9ydW50aW1lKCksCiAgICAgICAgICAgICAgICAgICogQ1NDSEVEMl9NSU5fVElNRVIgaXMgd2hh dCB3b3VsZCBiZSB1c2VkIGFueXdheS4KICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAg ICAgICBzdmMtPmJ1ZGdldF9xdW90YSA9IG1heChzZG9tLT50b3RfYnVkZ2V0IC8gc2RvbS0+bnJf dmNwdXMsCisgICAgICAgICAgICAgICAgc3ZjLT5idWRnZXRfcXVvdGEgPSBtYXgoc2RvbS0+dG90 X2J1ZGdldCAvIHNkb20tPm5yX3VuaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENTQ0hFRDJfTUlOX1RJTUVSKTsKLSAgICAgICAgICAgICAgICB1bml0X3NjaGVk dWxlX3VubG9jayhsb2NrLCBzdmMtPnZjcHUtPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgICAg IHVuaXRfc2NoZWR1bGVfdW5sb2NrKGxvY2ssIHVuaXQpOwogICAgICAgICAgICAgfQogCiAgICAg ICAgICAgICBpZiAoIHNkb20tPmNhcCA9PSAwICkKQEAgLTI5MDYsNyArMjg5Niw3IEBAIGNzY2hl ZDJfZG9tX2NudGwoCiAgICAgICAgICAgICAgICAgICogYW5kIHF1ZXVlIGl0cyBmaXJzdCByZXBs ZW5pc2htZW50IGV2ZW50LgogICAgICAgICAgICAgICAgICAqCiAgICAgICAgICAgICAgICAgICog U2luY2UgY2FwIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBmb3IgdGhpcyBkb21haW4sIHdlCi0gICAg ICAgICAgICAgICAgICoga25vdyBubyB2Q1BVIGlzIG1lc3Npbmcgd2l0aCB0aGUgZG9tYWluJ3Mg YnVkZ2V0LCBhbmQKKyAgICAgICAgICAgICAgICAgKiBrbm93IG5vIHVuaXQgaXMgbWVzc2luZyB3 aXRoIHRoZSBkb21haW4ncyBidWRnZXQsIGFuZAogICAgICAgICAgICAgICAgICAqIHRoZSByZXBs ZW5pc2htZW50IHRpbWVyIGlzIHN0aWxsIG9mZi4KICAgICAgICAgICAgICAgICAgKiBGb3IgdGhl c2UgcmVhc29ucywgaXQgaXMgc2FmZSB0byBkbyB0aGUgZm9sbG93aW5nIHdpdGhvdXQKICAgICAg ICAgICAgICAgICAgKiB0YWtpbmcgdGhlIGJ1ZGdldF9sb2NrLgpAQCAtMjkxNiw0MiArMjkwNiw0 MiBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgICAgICAgICAgICAgIHNldF90aW1lcigmc2RvbS0+ cmVwbF90aW1lciwgc2RvbS0+bmV4dF9yZXBsKTsKIAogICAgICAgICAgICAgICAgIC8qCi0gICAg ICAgICAgICAgICAgICogTm93LCBsZXQncyBlbmFibGUgYnVkZ2V0IGFjY291bnRpbmcgZm9yIGFs bCB0aGUgdkNQVXMuCisgICAgICAgICAgICAgICAgICogTm93LCBsZXQncyBlbmFibGUgYnVkZ2V0 IGFjY291bnRpbmcgZm9yIGFsbCB0aGUgdW5pdHMuCiAgICAgICAgICAgICAgICAgICogRm9yIG1h a2luZyBzdXJlIHRoYXQgdGhleSB3aWxsIHN0YXJ0IHRvIGhvbm91ciB0aGUgZG9tYWluJ3MKICAg ICAgICAgICAgICAgICAgKiBjYXAsIHdlIHNldCB0aGVpciBidWRnZXQgdG8gMC4KICAgICAgICAg ICAgICAgICAgKiBUaGlzIHdheSwgYXMgc29vbiBhcyB0aGV5IHdpbGwgdHJ5IHRvIHJ1biwgdGhl eSB3aWxsIGhhdmUKICAgICAgICAgICAgICAgICAgKiB0byBnZXQgc29tZSBidWRnZXQuCiAgICAg ICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICAgKiBGb3IgdGhlIHZDUFVzIHRoYXQgYXJl IGFscmVhZHkgcnVubmluZywgd2UgdHJpZ2dlciB0aGUKKyAgICAgICAgICAgICAgICAgKiBGb3Ig dGhlIHVuaXRzIHRoYXQgYXJlIGFscmVhZHkgcnVubmluZywgd2UgdHJpZ2dlciB0aGUKICAgICAg ICAgICAgICAgICAgKiBzY2hlZHVsZXIgb24gdGhlaXIgcENQVS4gV2hlbiwgYXMgYSBjb25zZXF1 ZW5jZSBvZiB0aGlzLAogICAgICAgICAgICAgICAgICAqIGNzY2hlZDJfc2NoZWR1bGUoKSB3aWxs IHJ1biwgaXQgd2lsbCBmaWd1cmUgb3V0IHRoZXJlIGlzCi0gICAgICAgICAgICAgICAgICogbm8g YnVkZ2V0LCBhbmQgdGhlIHZDUFUgd2lsbCB0cnkgdG8gZ2V0IHNvbWUgKGFuZCBiZSBwYXJrZWQs CisgICAgICAgICAgICAgICAgICogbm8gYnVkZ2V0LCBhbmQgdGhlIHVuaXQgd2lsbCB0cnkgdG8g Z2V0IHNvbWUgKGFuZCBiZSBwYXJrZWQsCiAgICAgICAgICAgICAgICAgICogaWYgdGhlcmUncyBu b25lLCBhbmQgd2UnbGwgc3dpdGNoIHRvIHNvbWVvbmUgZWxzZSkuCiAgICAgICAgICAgICAgICAg ICovCi0gICAgICAgICAgICAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQorICAgICAgICAgICAg ICAgIGZvcl9lYWNoX3NjaGVkX3VuaXQgKCBkLCB1bml0ICkKICAgICAgICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgICAgICAgIHN2YyA9IGNzY2hlZDJfdW5pdCh2LT5zY2hlZF91bml0KTsKLSAg ICAgICAgICAgICAgICAgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9jayhzdmMtPnZjcHUtPnNj aGVkX3VuaXQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIHYtPnNjaGVkX3VuaXQtPmlzX3J1 bm5pbmcgKQorICAgICAgICAgICAgICAgICAgICBzdmMgPSBjc2NoZWQyX3VuaXQodW5pdCk7Cisg ICAgICAgICAgICAgICAgICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2sodW5pdCk7CisgICAg ICAgICAgICAgICAgICAgIGlmICggdW5pdC0+aXNfcnVubmluZyApCiAgICAgICAgICAgICAgICAg ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjcHUgPSB2LT5wcm9j ZXNzb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRf dW5pdF9jcHUodW5pdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9y dW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChvcHMsIGNwdSk7CiAKLSAgICAgICAgICAgICAgICAg ICAgICAgIEFTU0VSVChjdXJyX29uX2NwdShjcHUpLT52Y3B1X2xpc3QgPT0gdik7CisgICAgICAg ICAgICAgICAgICAgICAgICBBU1NFUlQoY3Vycl9vbl9jcHUoY3B1KSA9PSB1bml0KTsKIAogICAg ICAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIFdlIGFy ZSB0cmlnZ2VyaW5nIGEgcmVzY2hlZHVsZSBvbiB0aGUgdkNQVSdzCisgICAgICAgICAgICAgICAg ICAgICAgICAgKiBXZSBhcmUgdHJpZ2dlcmluZyBhIHJlc2NoZWR1bGUgb24gdGhlIHVuaXQncwog ICAgICAgICAgICAgICAgICAgICAgICAgICogcENQVS4gVGhhdCB3aWxsIHJ1biBidXJuX2NyZWRp dHMoKSBhbmQsIHNpbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgdkNQVSBpcyBj YXBwZWQgbm93LCBpdCB3b3VsZCBjaGFyZ2UgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAg ICAgICogdGhlIHVuaXQgaXMgY2FwcGVkIG5vdywgaXQgd291bGQgY2hhcmdlIGFsbCB0aGUKICAg ICAgICAgICAgICAgICAgICAgICAgICAqIGV4ZWN1dGlvbiB0aW1lIG9mIHRoaXMgbGFzdCByb3Vu ZCBhcyBidWRnZXQgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHdlbGwuIFRoYXQgd2ls bCBtYWtlIHRoZSB2Q1BVIGJ1ZGdldCBnbyBuZWdhdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAqIHdlbGwuIFRoYXQgd2lsbCBtYWtlIHRoZSB1bml0IGJ1ZGdldCBnbyBuZWdhdGl2ZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvdGVudGlhbGx5IGJ5IGEgbGFyZ2UgYW1vdW50 LCBhbmQgaXQncyB1bmZhaXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICAg ICAgICAgICAgICAgICAgICogVG8gYXZvaWQgdGhhdCwgY2FsbCBidXJuX2NyZWRpdCgpIGhlcmUs IHRvIGRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICogYWNjb3VudGluZyBvZiB0aGlz IGN1cnJlbnQgcnVubmluZyBpbnN0YW5jZSBub3csCiAgICAgICAgICAgICAgICAgICAgICAgICAg KiB3aXRoIGJ1ZGdldHRpbmcgc3RpbGwgZGlzYWJsZWQuIFRoaXMgZG9lcyBub3QKICAgICAgICAg ICAgICAgICAgICAgICAgICAqIHByZXZlbnQgc29tZSBzbWFsbCBhbW91bnQgb2YgYnVkZ2V0IGJl aW5nIGNoYXJnZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHRvIHRoZSB2Q1BVIChpLmUu LCB0aGUgYW1vdW50IG9mIHRpbWUgaXQgcnVucyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAg ICAgKiB0byB0aGUgdW5pdCAoaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lIGl0IHJ1bnMgZnJvbQog ICAgICAgICAgICAgICAgICAgICAgICAgICogbm93LCB0byB3aGVuIHNjaGVkdWxpbmcgaGFwcGVu cykuIFRoZSBidWRnZXQgd2lsbAogICAgICAgICAgICAgICAgICAgICAgICAgICogYWxzbyBnbyBi ZWxvdyAwLCBidXQgYSBsb3QgbGVzcyB0aGFuIGhvdyBpdCB3b3VsZAogICAgICAgICAgICAgICAg ICAgICAgICAgICogaWYgd2UgZG9uJ3QgZG8gdGhpcy4KQEAgLTI5NjIsNyArMjk1Miw3IEBAIGNz Y2hlZDJfZG9tX2NudGwoCiAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfcmFpc2Vfc29mdGly cShjcHUsIFNDSEVEVUxFX1NPRlRJUlEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgIHN2Yy0+YnVkZ2V0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgdW5pdF9z Y2hlZHVsZV91bmxvY2sobG9jaywgc3ZjLT52Y3B1LT5zY2hlZF91bml0KTsKKyAgICAgICAgICAg ICAgICAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2sobG9jaywgdW5pdCk7CiAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgfQogCkBAIC0yOTc0LDMwICsyOTY0LDMwIEBAIGNzY2hlZDJfZG9t X2NudGwoCiAKICAgICAgICAgICAgIHN0b3BfdGltZXIoJnNkb20tPnJlcGxfdGltZXIpOwogCi0g ICAgICAgICAgICAvKiBEaXNhYmxlIGJ1ZGdldCBhY2NvdW50aW5nIGZvciBhbGwgdGhlIHZDUFVz LiAqLwotICAgICAgICAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQorICAgICAgICAgICAgLyog RGlzYWJsZSBidWRnZXQgYWNjb3VudGluZyBmb3IgYWxsIHRoZSB1bml0cy4gKi8KKyAgICAgICAg ICAgIGZvcl9lYWNoX3NjaGVkX3VuaXQgKCBkLCB1bml0ICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMgPSBjc2NoZWQyX3VuaXQodi0+c2No ZWRfdW5pdCk7Ci0gICAgICAgICAgICAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHVuaXRfc2NoZWR1 bGVfbG9jayhzdmMtPnZjcHUtPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgICAgIHN0cnVjdCBj c2NoZWQyX3VuaXQgKnN2YyA9IGNzY2hlZDJfdW5pdCh1bml0KTsKKyAgICAgICAgICAgICAgICBz cGlubG9ja190ICpsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrKHVuaXQpOwogCiAgICAgICAgICAg ICAgICAgc3ZjLT5idWRnZXQgPSBTVElNRV9NQVg7CiAgICAgICAgICAgICAgICAgc3ZjLT5idWRn ZXRfcXVvdGEgPSAwOwogCi0gICAgICAgICAgICAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2sobG9j aywgc3ZjLT52Y3B1LT5zY2hlZF91bml0KTsKKyAgICAgICAgICAgICAgICB1bml0X3NjaGVkdWxl X3VubG9jayhsb2NrLCB1bml0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNkb20tPmNh cCA9IDA7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogV2UgYXJlIGRpc2FibGluZyB0 aGUgY2FwIGZvciB0aGlzIGRvbWFpbiwgd2hpY2ggbWF5IGhhdmUKLSAgICAgICAgICAgICAqIHZD UFVzIHdhaXRpbmcgZm9yIGEgcmVwbGVuaXNobWVudCwgc28gd2UgdW5wYXJrIHRoZW0gYWxsLgor ICAgICAgICAgICAgICogdW5pdHMgd2FpdGluZyBmb3IgYSByZXBsZW5pc2htZW50LCBzbyB3ZSB1 bnBhcmsgdGhlbSBhbGwuCiAgICAgICAgICAgICAgKiBOb3RlIHRoYXQsIHNpbmNlIHdlIGhhdmUg YWxyZWFkeSBkaXNhYmxlZCBidWRnZXQgYWNjb3VudGluZwotICAgICAgICAgICAgICogZm9yIGFs bCB0aGUgdkNQVXMgb2YgdGhlIGRvbWFpbiwgbm8gY3VycmVudGx5IHJ1bm5pbmcgdkNQVQotICAg ICAgICAgICAgICogd2lsbCBiZSBhZGRlZCB0byB0aGUgcGFya2VkIHZDUFVzIGxpc3QgYW55IGxv bmdlci4KKyAgICAgICAgICAgICAqIGZvciBhbGwgdGhlIHVuaXRzIG9mIHRoZSBkb21haW4sIG5v IGN1cnJlbnRseSBydW5uaW5nIHVuaXQKKyAgICAgICAgICAgICAqIHdpbGwgYmUgYWRkZWQgdG8g dGhlIHBhcmtlZCB1bml0cyBsaXN0IGFueSBsb25nZXIuCiAgICAgICAgICAgICAgKi8KICAgICAg ICAgICAgIHNwaW5fbG9jaygmc2RvbS0+YnVkZ2V0X2xvY2spOwotICAgICAgICAgICAgbGlzdF9z cGxpY2VfaW5pdCgmc2RvbS0+cGFya2VkX3ZjcHVzLCAmcGFya2VkKTsKKyAgICAgICAgICAgIGxp c3Rfc3BsaWNlX2luaXQoJnNkb20tPnBhcmtlZF91bml0cywgJnBhcmtlZCk7CiAgICAgICAgICAg ICBzcGluX3VubG9jaygmc2RvbS0+YnVkZ2V0X2xvY2spOwogCi0gICAgICAgICAgICB1bnBhcmtf cGFya2VkX3ZjcHVzKG9wcywgJnBhcmtlZCk7CisgICAgICAgICAgICB1bnBhcmtfcGFya2VkX3Vu aXRzKG9wcywgJnBhcmtlZCk7CiAgICAgICAgIH0KICAgICAgICAgd3JpdGVfdW5sb2NrX2lycXJl c3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwogICAgICAgICBicmVhazsKQEAgLTMwNzQsMTIgKzMw NjQsMTIgQEAgY3NjaGVkMl9hbGxvY19kb21kYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IGRvbWFpbiAqZG9tKQogICAgIHNkb20tPmRvbSA9IGRvbTsKICAgICBzZG9tLT53 ZWlnaHQgPSBDU0NIRUQyX0RFRkFVTFRfV0VJR0hUOwogICAgIHNkb20tPmNhcCA9IDBVOwotICAg IHNkb20tPm5yX3ZjcHVzID0gMDsKKyAgICBzZG9tLT5ucl91bml0cyA9IDA7CiAKICAgICBpbml0 X3RpbWVyKCZzZG9tLT5yZXBsX3RpbWVyLCByZXBsZW5pc2hfZG9tYWluX2J1ZGdldCwgc2RvbSwK ICAgICAgICAgICAgICAgIGNwdW1hc2tfYW55KGNwdXBvb2xfZG9tYWluX2NwdW1hc2soZG9tKSkp OwogICAgIHNwaW5fbG9ja19pbml0KCZzZG9tLT5idWRnZXRfbG9jayk7Ci0gICAgSU5JVF9MSVNU X0hFQUQoJnNkb20tPnBhcmtlZF92Y3B1cyk7CisgICAgSU5JVF9MSVNUX0hFQUQoJnNkb20tPnBh cmtlZF91bml0cyk7CiAKICAgICB3cml0ZV9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3Mp OwogCkBAIC0zMTEzLDM0ICszMTAzLDMyIEBAIGNzY2hlZDJfZnJlZV9kb21kYXRhKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqZGF0YSkKIHN0YXRpYyB2b2lkCiBjc2NoZWQyX3Vu aXRfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQg KnVuaXQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdV9saXN0OwogICAgIHN0 cnVjdCBjc2NoZWQyX3VuaXQgKnN2YyA9IHVuaXQtPnByaXY7CiAgICAgc3RydWN0IGNzY2hlZDJf ZG9tICogY29uc3Qgc2RvbSA9IHN2Yy0+c2RvbTsKICAgICBzcGlubG9ja190ICpsb2NrOwogCi0g ICAgQVNTRVJUKCFpc19pZGxlX3ZjcHUodmMpKTsKKyAgICBBU1NFUlQoIWlzX2lkbGVfdW5pdCh1 bml0KSk7CiAgICAgQVNTRVJUKGxpc3RfZW1wdHkoJnN2Yy0+cnVucV9lbGVtKSk7CiAKICAgICAv KiBjc2NoZWQyX3Jlc19waWNrKCkgZXhwZWN0cyB0aGUgcGNwdSBsb2NrIHRvIGJlIGhlbGQgKi8K ICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKIAotICAgIHVuaXQtPnJl cyA9IGNzY2hlZDJfcmVzX3BpY2sob3BzLCB1bml0KTsKLSAgICB2Yy0+cHJvY2Vzc29yID0gdW5p dC0+cmVzLT5wcm9jZXNzb3I7CisgICAgc2NoZWRfc2V0X3Jlcyh1bml0LCBjc2NoZWQyX3Jlc19w aWNrKG9wcywgdW5pdCkpOwogCiAgICAgc3Bpbl91bmxvY2tfaXJxKGxvY2spOwogCiAgICAgbG9j ayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKLSAgICAvKiBBZGQgdmNwdSB0byBy dW5xdWV1ZSBvZiBpbml0aWFsIHByb2Nlc3NvciAqLwotICAgIHJ1bnFfYXNzaWduKG9wcywgdmMp OworICAgIC8qIEFkZCB1bml0IHRvIHJ1bnF1ZXVlIG9mIGluaXRpYWwgcHJvY2Vzc29yICovCisg ICAgcnVucV9hc3NpZ24ob3BzLCB1bml0KTsKIAogICAgIHVuaXRfc2NoZWR1bGVfdW5sb2NrX2ly cShsb2NrLCB1bml0KTsKIAotICAgIHNkb20tPm5yX3ZjcHVzKys7CisgICAgc2RvbS0+bnJfdW5p dHMrKzsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF9pbnNlcnQpOwogCi0gICAgQ1NDSEVE Ml9WQ1BVX0NIRUNLKHZjKTsKKyAgICBDU0NIRUQyX1VOSVRfQ0hFQ0sodW5pdCk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC0zMTU0LDExICszMTQyLDEwIEBAIGNzY2hlZDJfZnJlZV92ZGF0YShjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnByaXYpCiBzdGF0aWMgdm9pZAogY3NjaGVk Ml91bml0X3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0KQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsKICAg ICBzdHJ1Y3QgY3NjaGVkMl91bml0ICogY29uc3Qgc3ZjID0gY3NjaGVkMl91bml0KHVuaXQpOwog ICAgIHNwaW5sb2NrX3QgKmxvY2s7CiAKLSAgICBBU1NFUlQoIWlzX2lkbGVfdmNwdSh2YykpOwor ICAgIEFTU0VSVCghaXNfaWRsZV91bml0KHVuaXQpKTsKICAgICBBU1NFUlQobGlzdF9lbXB0eSgm c3ZjLT5ydW5xX2VsZW0pKTsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF9yZW1vdmUpOwpA QCAtMzE2NiwxNCArMzE1MywxNCBAQCBjc2NoZWQyX3VuaXRfcmVtb3ZlKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgLyogUmVtb3ZlIGZy b20gcnVucXVldWUgKi8KICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsK IAotICAgIHJ1bnFfZGVhc3NpZ24ob3BzLCB2Yyk7CisgICAgcnVucV9kZWFzc2lnbihvcHMsIHVu aXQpOwogCiAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwogCi0gICAg c3ZjLT5zZG9tLT5ucl92Y3B1cy0tOworICAgIHN2Yy0+c2RvbS0+bnJfdW5pdHMtLTsKIH0KIAot LyogSG93IGxvbmcgc2hvdWxkIHdlIGxldCB0aGlzIHZjcHUgcnVuIGZvcj8gKi8KKy8qIEhvdyBs b25nIHNob3VsZCB3ZSBsZXQgdGhpcyB1bml0IHJ1biBmb3I/ICovCiBzdGF0aWMgc190aW1lX3QK IGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsCiAg ICAgICAgICAgICAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqc25leHQsIHNfdGltZV90IG5vdykK QEAgLTMxODgsNyArMzE3NSw3IEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIGludCBjcHUsCiAgICAgICogSWYgd2UncmUgaWRsZSwganVzdCBzdGF5IHNvLiBP dGhlcnMgKG9yIGV4dGVybmFsIGV2ZW50cykKICAgICAgKiB3aWxsIHBva2UgdXMgd2hlbiBuZWNl c3NhcnkuCiAgICAgICovCi0gICAgaWYgKCBpc19pZGxlX3ZjcHUoc25leHQtPnZjcHUpICkKKyAg ICBpZiAoIGlzX2lkbGVfdW5pdChzbmV4dC0+dW5pdCkgKQogICAgICAgICByZXR1cm4gLTE7CiAK ICAgICAvKiBHZW5lcmFsIGFsZ29yaXRobToKQEAgLTMyMDUsOCArMzE5Miw4IEBAIGNzY2hlZDJf cnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsCiAgICAgaWYgKCBw cnYtPnJhdGVsaW1pdF91cyApCiAgICAgewogICAgICAgICBzX3RpbWVfdCByYXRlbGltaXRfbWlu ID0gTUlDUk9TRUNTKHBydi0+cmF0ZWxpbWl0X3VzKTsKLSAgICAgICAgaWYgKCBzbmV4dC0+dmNw dS0+c2NoZWRfdW5pdC0+aXNfcnVubmluZyApCi0gICAgICAgICAgICByYXRlbGltaXRfbWluID0g c25leHQtPnZjcHUtPnNjaGVkX3VuaXQtPnN0YXRlX2VudHJ5X3RpbWUgKworICAgICAgICBpZiAo IHNuZXh0LT51bml0LT5pc19ydW5uaW5nICkKKyAgICAgICAgICAgIHJhdGVsaW1pdF9taW4gPSBz bmV4dC0+dW5pdC0+c3RhdGVfZW50cnlfdGltZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTUlDUk9TRUNTKHBydi0+cmF0ZWxpbWl0X3VzKSAtIG5vdzsKICAgICAgICAgaWYgKCByYXRl bGltaXRfbWluID4gbWluX3RpbWUgKQogICAgICAgICAgICAgbWluX3RpbWUgPSByYXRlbGltaXRf bWluOwpAQCAtMzIyMyw3ICszMjEwLDcgQEAgY3NjaGVkMl9ydW50aW1lKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgaW50IGNwdSwKICAgICB7CiAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3Vu aXQgKnN3YWl0ID0gcnVucV9lbGVtKHJ1bnEtPm5leHQpOwogCi0gICAgICAgIGlmICggISBpc19p ZGxlX3ZjcHUoc3dhaXQtPnZjcHUpCisgICAgICAgIGlmICggISBpc19pZGxlX3VuaXQoc3dhaXQt PnVuaXQpCiAgICAgICAgICAgICAgJiYgc3dhaXQtPmNyZWRpdCA+IDAgKQogICAgICAgICB7CiAg ICAgICAgICAgICBydF9jcmVkaXQgPSBzbmV4dC0+Y3JlZGl0IC0gc3dhaXQtPmNyZWRpdDsKQEAg LTMyMzcsNyArMzIyNCw3IEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIGludCBjcHUsCiAgICAgICoKICAgICAgKiBGSVhNRTogU2VlIGlmIHdlIGNhbiBlbGlt aW5hdGUgdGhpcyBjb252ZXJzaW9uIGlmIHdlIGtub3cgdGltZQogICAgICAqIHdpbGwgYmUgb3V0 c2lkZSAoTUlOLE1BWCkuICBQcm9iYWJseSByZXF1aXJlcyBwcmUtY2FsY3VsYXRpbmcKLSAgICAg KiBjcmVkaXQgdmFsdWVzIG9mIE1JTixNQVggcGVyIHZjcHUsIHNpbmNlIGVhY2ggdmNwdSBidXJu cyBjcmVkaXQKKyAgICAgKiBjcmVkaXQgdmFsdWVzIG9mIE1JTixNQVggcGVyIHVuaXQsIHNpbmNl IGVhY2ggdW5pdCBidXJucyBjcmVkaXQKICAgICAgKiBhdCBhIGRpZmZlcmVudCByYXRlLgogICAg ICAqLwogICAgIGlmICggcnRfY3JlZGl0ID4gMCApCkBAIC0zMjg1LDM2ICszMjcyLDM1IEBAIHJ1 bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKIAogICAgICpz a2lwcGVkID0gMDsKIAotICAgIGlmICggdW5saWtlbHkoaXNfaWRsZV92Y3B1KHNjdXJyLT52Y3B1 KSkgKQorICAgIGlmICggdW5saWtlbHkoaXNfaWRsZV91bml0KHNjdXJyLT51bml0KSkgKQogICAg IHsKICAgICAgICAgc25leHQgPSBzY3VycjsKICAgICAgICAgZ290byBjaGVja19ydW5xOwogICAg IH0KIAotICAgIHlpZWxkID0gX190ZXN0X2FuZF9jbGVhcl9iaXQoX19DU0ZMQUdfdmNwdV95aWVs ZCwgJnNjdXJyLT5mbGFncyk7CisgICAgeWllbGQgPSBfX3Rlc3RfYW5kX2NsZWFyX2JpdChfX0NT RkxBR191bml0X3lpZWxkLCAmc2N1cnItPmZsYWdzKTsKIAogICAgIC8qCi0gICAgICogUmV0dXJu IHRoZSBjdXJyZW50IHZjcHUgaWYgaXQgaGFzIGV4ZWN1dGVkIGZvciBsZXNzIHRoYW4gcmF0ZWxp bWl0LgotICAgICAqIEFkanVzdHN0bWVudCBmb3IgdGhlIHNlbGVjdGVkIHZjcHUncyBjcmVkaXQg YW5kIGRlY2lzaW9uCisgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHVuaXQgaWYgaXQgaGFzIGV4 ZWN1dGVkIGZvciBsZXNzIHRoYW4gcmF0ZWxpbWl0LgorICAgICAqIEFkanVzdHN0bWVudCBmb3Ig dGhlIHNlbGVjdGVkIHVuaXQncyBjcmVkaXQgYW5kIGRlY2lzaW9uCiAgICAgICogZm9yIGhvdyBs b25nIGl0IHdpbGwgcnVuIHdpbGwgYmUgdGFrZW4gaW4gY3NjaGVkMl9ydW50aW1lLgogICAgICAq CiAgICAgICogTm90ZSB0aGF0LCBpZiBzY3VyciBpcyB5aWVsZGluZywgd2UgZG9uJ3QgbGV0IHJh dGUgbGltaXRpbmcga2ljayBpbi4KICAgICAgKiBJbiBmYWN0LCBpdCBtYXkgYmUgdGhlIGNhc2Ug dGhhdCBzY3VyciBpcyBhYm91dCB0byBzcGluLCBhbmQgdGhlcmUncwogICAgICAqIG5vIHBvaW50 IGZvcmNpbmcgaXQgdG8gZG8gc28gdW50aWwgcmF0ZSBsaW1pdGluZyBleHBpcmVzLgogICAgICAq LwotICAgIGlmICggIXlpZWxkICYmIHBydi0+cmF0ZWxpbWl0X3VzICYmIHZjcHVfcnVubmFibGUo c2N1cnItPnZjcHUpICYmCi0gICAgICAgICAobm93IC0gc2N1cnItPnZjcHUtPnNjaGVkX3VuaXQt PnN0YXRlX2VudHJ5X3RpbWUpIDwKLSAgICAgICAgICBNSUNST1NFQ1MocHJ2LT5yYXRlbGltaXRf dXMpICkKKyAgICBpZiAoICF5aWVsZCAmJiBwcnYtPnJhdGVsaW1pdF91cyAmJiB1bml0X3J1bm5h YmxlKHNjdXJyLT51bml0KSAmJgorICAgICAgICAgKG5vdyAtIHNjdXJyLT51bml0LT5zdGF0ZV9l bnRyeV90aW1lKSA8IE1JQ1JPU0VDUyhwcnYtPnJhdGVsaW1pdF91cykgKQogICAgIHsKICAgICAg ICAgaWYgKCB1bmxpa2VseSh0Yl9pbml0X2RvbmUpICkKICAgICAgICAgewogICAgICAgICAgICAg c3RydWN0IHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7CisgICAg ICAgICAgICAgICAgdW5zaWduZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgICAgIHVu c2lnbmVkIHJ1bnRpbWU7CiAgICAgICAgICAgICB9IGQ7Ci0gICAgICAgICAgICBkLmRvbSA9IHNj dXJyLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgICAgIGQudmNwdSA9IHNjdXJy LT52Y3B1LT52Y3B1X2lkOwotICAgICAgICAgICAgZC5ydW50aW1lID0gbm93IC0gc2N1cnItPnZj cHUtPnNjaGVkX3VuaXQtPnN0YXRlX2VudHJ5X3RpbWU7CisgICAgICAgICAgICBkLmRvbSA9IHNj dXJyLT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgICAgIGQudW5pdCA9IHNjdXJy LT51bml0LT51bml0X2lkOworICAgICAgICAgICAgZC5ydW50aW1lID0gbm93IC0gc2N1cnItPnVu aXQtPnN0YXRlX2VudHJ5X3RpbWU7CiAgICAgICAgICAgICBfX3RyYWNlX3ZhcihUUkNfQ1NDSEVE Ml9SQVRFTElNSVQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZCksCiAgICAg ICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSZkKTsKQEAgLTMzMjMsMTMgKzMz MDksMTMgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFk LAogICAgIH0KIAogICAgIC8qIElmIHNjdXJyIGhhcyBhIHNvZnQtYWZmaW5pdHksIGxldCdzIGNo ZWNrIHdoZXRoZXIgY3B1IGlzIHBhcnQgb2YgaXQgKi8KLSAgICBpZiAoIGhhc19zb2Z0X2FmZmlu aXR5KHNjdXJyLT52Y3B1LT5zY2hlZF91bml0KSApCisgICAgaWYgKCBoYXNfc29mdF9hZmZpbml0 eShzY3Vyci0+dW5pdCkgKQogICAgIHsKLSAgICAgICAgYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNr KHNjdXJyLT52Y3B1LT5zY2hlZF91bml0LCBCQUxBTkNFX1NPRlRfQUZGSU5JVFksCisgICAgICAg IGFmZmluaXR5X2JhbGFuY2VfY3B1bWFzayhzY3Vyci0+dW5pdCwgQkFMQU5DRV9TT0ZUX0FGRklO SVRZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19zY3JhdGNoKTsK ICAgICAgICAgaWYgKCB1bmxpa2VseSghY3B1bWFza190ZXN0X2NwdShjcHUsIGNwdW1hc2tfc2Ny YXRjaCkpICkKICAgICAgICAgewotICAgICAgICAgICAgY3B1bWFza190ICpvbmxpbmUgPSBjcHVw b29sX2RvbWFpbl9jcHVtYXNrKHNjdXJyLT52Y3B1LT5kb21haW4pOworICAgICAgICAgICAgY3B1 bWFza190ICpvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHNjdXJyLT51bml0LT5kb21h aW4pOwogCiAgICAgICAgICAgICAvKiBPaywgaXMgYW55IG9mIHRoZSBwY3B1cyBpbiBzY3VyciBz b2Z0LWFmZmluaXR5IGlkbGU/ICovCiAgICAgICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3Nj cmF0Y2gsIGNwdW1hc2tfc2NyYXRjaCwgJnJxZC0+aWRsZSk7CkBAIC0zMzU3LDEwICszMzQzLDEw IEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAg ICAgKgogICAgICAqIE9mIGNvdXJzZSwgd2UgYWxzbyBkZWZhdWx0IHRvIGlkbGUgYWxzbyBpZiBz Y3VyciBpcyBub3QgcnVubmFibGUuCiAgICAgICovCi0gICAgaWYgKCB2Y3B1X3J1bm5hYmxlKHNj dXJyLT52Y3B1KSAmJiAhc29mdF9hZmZfcHJlZW1wdCApCisgICAgaWYgKCB1bml0X3J1bm5hYmxl KHNjdXJyLT51bml0KSAmJiAhc29mdF9hZmZfcHJlZW1wdCApCiAgICAgICAgIHNuZXh0ID0gc2N1 cnI7CiAgICAgZWxzZQotICAgICAgICBzbmV4dCA9IGNzY2hlZDJfdW5pdChpZGxlX3ZjcHVbY3B1 XS0+c2NoZWRfdW5pdCk7CisgICAgICAgIHNuZXh0ID0gY3NjaGVkMl91bml0KHNjaGVkX2lkbGVf dW5pdChjcHUpKTsKIAogIGNoZWNrX3J1bnE6CiAgICAgbGlzdF9mb3JfZWFjaF9zYWZlKCBpdGVy LCB0ZW1wLCAmcnFkLT5ydW5xICkKQEAgLTMzNzAsMjQgKzMzNTYsMjQgQEAgcnVucV9jYW5kaWRh dGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkLAogICAgICAgICBpZiAoIHVubGlr ZWx5KHRiX2luaXRfZG9uZSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3QgewotICAg ICAgICAgICAgICAgIHVuc2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKKyAgICAgICAgICAgICAgICB1 bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAgICAgICB9IGQ7Ci0gICAgICAgICAgICBk LmRvbSA9IHN2Yy0+dmNwdS0+ZG9tYWluLT5kb21haW5faWQ7Ci0gICAgICAgICAgICBkLnZjcHUg PSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgICAgICBkLmRvbSA9IHN2Yy0+dW5pdC0+ZG9t YWluLT5kb21haW5faWQ7CisgICAgICAgICAgICBkLnVuaXQgPSBzdmMtPnVuaXQtPnVuaXRfaWQ7 CiAgICAgICAgICAgICBfX3RyYWNlX3ZhcihUUkNfQ1NDSEVEMl9SVU5RX0NBTkRfQ0hFQ0ssIDEs CiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZCksCiAgICAgICAgICAgICAgICAgICAg ICAgICAodW5zaWduZWQgY2hhciAqKSZkKTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIE9ubHkg Y29uc2lkZXIgdmNwdXMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBwcm9jZXNzb3Iu ICovCi0gICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBzdmMtPnZjcHUtPnNjaGVk X3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KSApCisgICAgICAgIC8qIE9ubHkgY29uc2lkZXIgdW5p dHMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBwcm9jZXNzb3IuICovCisgICAgICAg IGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBzdmMtPnVuaXQtPmNwdV9oYXJkX2FmZmluaXR5 KSApCiAgICAgICAgIHsKICAgICAgICAgICAgICgqc2tpcHBlZCkrKzsKICAgICAgICAgICAgIGNv bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgLyoKLSAgICAgICAgICogSWYgYSB2Y3B1IGlz IG1lYW50IHRvIGJlIHBpY2tlZCB1cCBieSBhbm90aGVyIHByb2Nlc3NvciwgYW5kIHN1Y2gKKyAg ICAgICAgICogSWYgYW4gdW5pdCBpcyBtZWFudCB0byBiZSBwaWNrZWQgdXAgYnkgYW5vdGhlciBw cm9jZXNzb3IsIGFuZCBzdWNoCiAgICAgICAgICAqIHByb2Nlc3NvciBoYXMgbm90IHNjaGVkdWxl ZCB5ZXQsIGxlYXZlIGl0IGluIHRoZSBydW5xdWV1ZSBmb3IgaGltLgogICAgICAgICAgKi8KICAg ICAgICAgaWYgKCBzdmMtPnRpY2tsZWRfY3B1ICE9IC0xICYmIHN2Yy0+dGlja2xlZF9jcHUgIT0g Y3B1ICYmCkBAIC0zNDAyLDcgKzMzODgsNyBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3NjaGVk Ml9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgICAqIElmIHRoaXMgaXMgb24gYSBkaWZmZXJl bnQgcHJvY2Vzc29yLCBkb24ndCBwdWxsIGl0IHVubGVzcwogICAgICAgICAgKiBpdHMgY3JlZGl0 IGlzIGF0IGxlYXN0IENTQ0hFRDJfTUlHUkFURV9SRVNJU1QgaGlnaGVyLgogICAgICAgICAgKi8K LSAgICAgICAgaWYgKCBzdmMtPnZjcHUtPnByb2Nlc3NvciAhPSBjcHUKKyAgICAgICAgaWYgKCBz Y2hlZF91bml0X2NwdShzdmMtPnVuaXQpICE9IGNwdQogICAgICAgICAgICAgICYmIHNuZXh0LT5j cmVkaXQgKyBDU0NIRUQyX01JR1JBVEVfUkVTSVNUID4gc3ZjLT5jcmVkaXQgKQogICAgICAgICB7 CiAgICAgICAgICAgICAoKnNraXBwZWQpKys7CkBAIC0zNDE3LDcgKzM0MDMsNyBAQCBydW5xX2Nh bmRpZGF0ZShzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgICAqIHNv bWUgYnVkZ2V0LCB0aGVuIGNob29zZSBpdC4KICAgICAgICAgICovCiAgICAgICAgIGlmICggKHlp ZWxkIHx8IHN2Yy0+Y3JlZGl0ID4gc25leHQtPmNyZWRpdCkgJiYKLSAgICAgICAgICAgICAoIWhh c19jYXAoc3ZjKSB8fCB2Y3B1X2dyYWJfYnVkZ2V0KHN2YykpICkKKyAgICAgICAgICAgICAoIWhh c19jYXAoc3ZjKSB8fCB1bml0X2dyYWJfYnVkZ2V0KHN2YykpICkKICAgICAgICAgICAgIHNuZXh0 ID0gc3ZjOwogCiAgICAgICAgIC8qIEluIGFueSBjYXNlLCBpZiB3ZSBnb3QgdGhpcyBmYXIsIGJy ZWFrLiAqLwpAQCAtMzQyNywxMiArMzQxMywxMiBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3Nj aGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgaWYgKCB1bmxpa2VseSh0Yl9pbml0X2RvbmUp ICkKICAgICB7CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2 LCBkb206MTY7CisgICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAg ICAgICB1bnNpZ25lZCB0aWNrbGVkX2NwdSwgc2tpcHBlZDsKICAgICAgICAgICAgIGludCBjcmVk aXQ7CiAgICAgICAgIH0gZDsKLSAgICAgICAgZC5kb20gPSBzbmV4dC0+dmNwdS0+ZG9tYWluLT5k b21haW5faWQ7Ci0gICAgICAgIGQudmNwdSA9IHNuZXh0LT52Y3B1LT52Y3B1X2lkOworICAgICAg ICBkLmRvbSA9IHNuZXh0LT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0 ID0gc25leHQtPnVuaXQtPnVuaXRfaWQ7CiAgICAgICAgIGQuY3JlZGl0ID0gc25leHQtPmNyZWRp dDsKICAgICAgICAgZC50aWNrbGVkX2NwdSA9IHNuZXh0LT50aWNrbGVkX2NwdTsKICAgICAgICAg ZC5za2lwcGVkID0gKnNraXBwZWQ7CkBAIC0zNDY0LDE0ICszNDUwLDE1IEBAIGNzY2hlZDJfc2No ZWR1bGUoCiB7CiAgICAgY29uc3QgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBz dHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQ7Ci0gICAgc3RydWN0IGNzY2hlZDJfdW5p dCAqIGNvbnN0IHNjdXJyID0gY3NjaGVkMl91bml0KGN1cnJlbnQtPnNjaGVkX3VuaXQpOworICAg IHN0cnVjdCBzY2hlZF91bml0ICpjdXJydW5pdCA9IGN1cnJlbnQtPnNjaGVkX3VuaXQ7CisgICAg c3RydWN0IGNzY2hlZDJfdW5pdCAqIGNvbnN0IHNjdXJyID0gY3NjaGVkMl91bml0KGN1cnJ1bml0 KTsKICAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICpzbmV4dCA9IE5VTEw7Ci0gICAgdW5zaWduZWQg aW50IHNraXBwZWRfdmNwdXMgPSAwOworICAgIHVuc2lnbmVkIGludCBza2lwcGVkX3VuaXRzID0g MDsKICAgICBzdHJ1Y3QgdGFza19zbGljZSByZXQ7CiAgICAgYm9vbCB0aWNrbGVkOwogCiAgICAg U0NIRURfU1RBVF9DUkFOSyhzY2hlZHVsZSk7Ci0gICAgQ1NDSEVEMl9WQ1BVX0NIRUNLKGN1cnJl bnQpOworICAgIENTQ0hFRDJfVU5JVF9DSEVDSyhjdXJydW5pdCk7CiAKICAgICBCVUdfT04oIWNw dW1hc2tfdGVzdF9jcHUoY3B1LCAmY3NjaGVkMl9wcml2KG9wcyktPmluaXRpYWxpemVkKSk7CiAK QEAgLTM0ODAsNyArMzQ2Nyw3IEBAIGNzY2hlZDJfc2NoZWR1bGUoCiAKICAgICBBU1NFUlQoc3Bp bl9pc19sb2NrZWQoZ2V0X3NjaGVkX3JlcyhjcHUpLT5zY2hlZHVsZV9sb2NrKSk7CiAKLSAgICBC VUdfT04oIWlzX2lkbGVfdmNwdShzY3Vyci0+dmNwdSkgJiYgc2N1cnItPnJxZCAhPSBycWQpOwor ICAgIEJVR19PTighaXNfaWRsZV91bml0KGN1cnJ1bml0KSAmJiBzY3Vyci0+cnFkICE9IHJxZCk7 CiAKICAgICAvKiBDbGVhciAidGlja2xlZCIgYml0IG5vdyB0aGF0IHdlJ3ZlIGJlZW4gc2NoZWR1 bGVkICovCiAgICAgdGlja2xlZCA9IGNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmcnFkLT50aWNrbGVk KTsKQEAgLTM1MDAsNyArMzQ4Nyw3IEBAIGNzY2hlZDJfc2NoZWR1bGUoCiAgICAgICAgIGQuY3B1 ID0gY3B1OwogICAgICAgICBkLnJxX2lkID0gYzJyKGNwdSk7CiAgICAgICAgIGQudGFza2xldCA9 IHRhc2tsZXRfd29ya19zY2hlZHVsZWQ7Ci0gICAgICAgIGQuaWRsZSA9IGlzX2lkbGVfdmNwdShj dXJyZW50KTsKKyAgICAgICAgZC5pZGxlID0gaXNfaWRsZV91bml0KGN1cnJ1bml0KTsKICAgICAg ICAgZC5zbXRfaWRsZSA9IGNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmcnFkLT5zbXRfaWRsZSk7CiAg ICAgICAgIGQudGlja2xlZCA9IHRpY2tsZWQ7CiAgICAgICAgIF9fdHJhY2VfdmFyKFRSQ19DU0NI RUQyX1NDSEVEVUxFLCAxLApAQCAtMzUxNCw1NSArMzUwMSw1NSBAQCBjc2NoZWQyX3NjaGVkdWxl KAogICAgIC8qCiAgICAgICogIEJlbG93IDAsIG1lYW5zIHRoYXQgd2UgYXJlIGNhcHBlZCBhbmQg d2UgaGF2ZSBvdmVycnVuIG91ciAgYnVkZ2V0LgogICAgICAqICBMZXQncyB0cnkgdG8gZ2V0IHNv bWUgbW9yZSBidXQsIGlmIHdlIGZhaWwgKGUuZy4sIGJlY2F1c2Ugb2YgdGhlCi0gICAgICogIG90 aGVyIHJ1bm5pbmcgdmNwdXMpLCB3ZSB3aWxsIGJlIHBhcmtlZC4KKyAgICAgKiAgb3RoZXIgcnVu bmluZyB1bml0cyksIHdlIHdpbGwgYmUgcGFya2VkLgogICAgICAqLwogICAgIGlmICggdW5saWtl bHkoc2N1cnItPmJ1ZGdldCA8PSAwKSApCi0gICAgICAgIHZjcHVfZ3JhYl9idWRnZXQoc2N1cnIp OworICAgICAgICB1bml0X2dyYWJfYnVkZ2V0KHNjdXJyKTsKIAogICAgIC8qCi0gICAgICogU2Vs ZWN0IG5leHQgcnVubmFibGUgbG9jYWwgVkNQVSAoaWUgdG9wIG9mIGxvY2FsIHJ1bnEpLgorICAg ICAqIFNlbGVjdCBuZXh0IHJ1bm5hYmxlIGxvY2FsIFVOSVQgKGllIHRvcCBvZiBsb2NhbCBydW5x KS4KICAgICAgKgotICAgICAqIElmIHRoZSBjdXJyZW50IHZjcHUgaXMgcnVubmFibGUsIGFuZCBo YXMgaGlnaGVyIGNyZWRpdCB0aGFuCisgICAgICogSWYgdGhlIGN1cnJlbnQgdW5pdCBpcyBydW5u YWJsZSwgYW5kIGhhcyBoaWdoZXIgY3JlZGl0IHRoYW4KICAgICAgKiB0aGUgbmV4dCBndXkgb24g dGhlIHF1ZXVlIChvciB0aGVyZSBpcyBub29uZSBlbHNlKSwgd2Ugd2FudCB0bwogICAgICAqIHJ1 biBoaW0gYWdhaW4uCiAgICAgICoKLSAgICAgKiBJZiB0aGVyZSdzIHRhc2tsZXQgd29yayB0byBk bywgd2Ugd2FudCB0byBjaG9zZSB0aGUgaWRsZSB2Y3B1CisgICAgICogSWYgdGhlcmUncyB0YXNr bGV0IHdvcmsgdG8gZG8sIHdlIHdhbnQgdG8gY2hvc2UgdGhlIGlkbGUgdW5pdAogICAgICAqIGZv ciB0aGlzIHByb2Nlc3NvciwgYW5kIG1hcmsgdGhlIGN1cnJlbnQgZm9yIGRlbGF5ZWQgcnVucXVl dWUKICAgICAgKiBhZGQuCiAgICAgICoKLSAgICAgKiBJZiB0aGUgY3VycmVudCB2Y3B1IGlzIHJ1 bm5hYmxlLCBhbmQgdGhlcmUncyBhbm90aGVyIHJ1bm5hYmxlCisgICAgICogSWYgdGhlIGN1cnJl bnQgdW5pdCBpcyBydW5uYWJsZSwgYW5kIHRoZXJlJ3MgYW5vdGhlciBydW5uYWJsZQogICAgICAq IGNhbmRpZGF0ZSwgd2Ugd2FudCB0byBtYXJrIGN1cnJlbnQgZm9yIGRlbGF5ZWQgcnVucXVldWUg YWRkLAogICAgICAqIGFuZCByZW1vdmUgdGhlIG5leHQgZ3V5IGZyb20gdGhlIHF1ZXVlLgogICAg ICAqCi0gICAgICogSWYgdGhlIGN1cnJlbnQgdmNwdSBpcyBub3QgcnVubmFibGUsIHdlIHdhbnQg dG8gY2hvc2UgdGhlIGlkbGUKLSAgICAgKiB2Y3B1IGZvciB0aGlzIHByb2Nlc3Nvci4KKyAgICAg KiBJZiB0aGUgY3VycmVudCB1bml0IGlzIG5vdCBydW5uYWJsZSwgd2Ugd2FudCB0byBjaG9zZSB0 aGUgaWRsZQorICAgICAqIHVuaXQgZm9yIHRoaXMgcHJvY2Vzc29yLgogICAgICAqLwogICAgIGlm ICggdGFza2xldF93b3JrX3NjaGVkdWxlZCApCiAgICAgewotICAgICAgICBfX2NsZWFyX2JpdChf X0NTRkxBR192Y3B1X3lpZWxkLCAmc2N1cnItPmZsYWdzKTsKKyAgICAgICAgX19jbGVhcl9iaXQo X19DU0ZMQUdfdW5pdF95aWVsZCwgJnNjdXJyLT5mbGFncyk7CiAgICAgICAgIHRyYWNlX3ZhcihU UkNfQ1NDSEVEMl9TQ0hFRF9UQVNLTEVULCAxLCAwLCBOVUxMKTsKLSAgICAgICAgc25leHQgPSBj c2NoZWQyX3VuaXQoaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICBzbmV4dCA9 IGNzY2hlZDJfdW5pdChzY2hlZF9pZGxlX3VuaXQoY3B1KSk7CiAgICAgfQogICAgIGVsc2UKLSAg ICAgICAgc25leHQgPSBydW5xX2NhbmRpZGF0ZShycWQsIHNjdXJyLCBjcHUsIG5vdywgJnNraXBw ZWRfdmNwdXMpOworICAgICAgICBzbmV4dCA9IHJ1bnFfY2FuZGlkYXRlKHJxZCwgc2N1cnIsIGNw dSwgbm93LCAmc2tpcHBlZF91bml0cyk7CiAKLSAgICAvKiBJZiBzd2l0Y2hpbmcgZnJvbSBhIG5v bi1pZGxlIHJ1bm5hYmxlIHZjcHUsIHB1dCBpdAorICAgIC8qIElmIHN3aXRjaGluZyBmcm9tIGEg bm9uLWlkbGUgcnVubmFibGUgdW5pdCwgcHV0IGl0CiAgICAgICogYmFjayBvbiB0aGUgcnVucXVl dWUuICovCiAgICAgaWYgKCBzbmV4dCAhPSBzY3VycgotICAgICAgICAgJiYgIWlzX2lkbGVfdmNw dShzY3Vyci0+dmNwdSkKLSAgICAgICAgICYmIHZjcHVfcnVubmFibGUoY3VycmVudCkgKQorICAg ICAgICAgJiYgIWlzX2lkbGVfdW5pdChjdXJydW5pdCkKKyAgICAgICAgICYmIHVuaXRfcnVubmFi bGUoY3VycnVuaXQpICkKICAgICAgICAgX19zZXRfYml0KF9fQ1NGTEFHX2RlbGF5ZWRfcnVucV9h ZGQsICZzY3Vyci0+ZmxhZ3MpOwogCiAgICAgcmV0Lm1pZ3JhdGVkID0gMDsKIAogICAgIC8qIEFj Y291bnRpbmcgZm9yIG5vbi1pZGxlIHRhc2tzICovCi0gICAgaWYgKCAhaXNfaWRsZV92Y3B1KHNu ZXh0LT52Y3B1KSApCisgICAgaWYgKCAhaXNfaWRsZV91bml0KHNuZXh0LT51bml0KSApCiAgICAg ewogICAgICAgICAvKiBJZiBzd2l0Y2hpbmcsIHJlbW92ZSB0aGlzIGZyb20gdGhlIHJ1bnF1ZXVl IGFuZCBtYXJrIGl0IHNjaGVkdWxlZCAqLwogICAgICAgICBpZiAoIHNuZXh0ICE9IHNjdXJyICkK ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHNuZXh0LT5ycWQgPT0gcnFkKTsKLSAgICAg ICAgICAgIEFTU0VSVCghc25leHQtPnZjcHUtPnNjaGVkX3VuaXQtPmlzX3J1bm5pbmcpOworICAg ICAgICAgICAgQVNTRVJUKCFzbmV4dC0+dW5pdC0+aXNfcnVubmluZyk7CiAKICAgICAgICAgICAg IHJ1bnFfcmVtb3ZlKHNuZXh0KTsKICAgICAgICAgICAgIF9fc2V0X2JpdChfX0NTRkxBR19zY2hl ZHVsZWQsICZzbmV4dC0+ZmxhZ3MpOwpAQCAtMzU3NywxOSArMzU2NCwxOSBAQCBjc2NoZWQyX3Nj aGVkdWxlKAogCiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSByZXNldCBjb25kaXRpb24gaXMg ImhhcyBhIHNjaGVkdWxlciBlcG9jaCBjb21lIHRvIGFuIGVuZD8iLgotICAgICAgICAgKiBUaGUg d2F5IHRoaXMgaXMgZW5mb3JjZWQgaXMgY2hlY2tpbmcgd2hldGhlciB0aGUgdmNwdSBhdCB0aGUg dG9wCisgICAgICAgICAqIFRoZSB3YXkgdGhpcyBpcyBlbmZvcmNlZCBpcyBjaGVja2luZyB3aGV0 aGVyIHRoZSB1bml0IGF0IHRoZSB0b3AKICAgICAgICAgICogb2YgdGhlIHJ1bnF1ZXVlIGhhcyBu ZWdhdGl2ZSBjcmVkaXRzLiBUaGlzIG1lYW5zIHRoZSBlcG9jaHMgaGF2ZQogICAgICAgICAgKiB2 YXJpYWJsZSBsZW5ndGgsIGFzIGluIG9uZSBlcG9jaCBleHBvcmVzIHdoZW46Ci0gICAgICAgICAq ICAxKSB0aGUgdmNwdSBhdCB0aGUgdG9wIG9mIHRoZSBydW5xdWV1ZSBoYXMgZXhlY3V0ZWQgZm9y CisgICAgICAgICAqICAxKSB0aGUgdW5pdCBhdCB0aGUgdG9wIG9mIHRoZSBydW5xdWV1ZSBoYXMg ZXhlY3V0ZWQgZm9yCiAgICAgICAgICAqICAgICBhcm91bmQgMTAgbXMgKHdpdGggZGVmYXVsdCBw YXJhbWV0ZXJzKTsKLSAgICAgICAgICogIDIpIG5vIG90aGVyIHZjcHUgd2l0aCBoaWdoZXIgY3Jl ZGl0cyB3YW50cyB0byBydW4uCisgICAgICAgICAqICAyKSBubyBvdGhlciB1bml0IHdpdGggaGln aGVyIGNyZWRpdHMgd2FudHMgdG8gcnVuLgogICAgICAgICAgKgogICAgICAgICAgKiBIZXJlLCB3 aGVyZSB3ZSB3YW50IHRvIGNoZWNrIGZvciByZXNldCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhl Ci0gICAgICAgICAqIHByb3BlciB2Y3B1IGlzIGJlaW5nIHVzZWQuIEluIGZhY3QsIHJ1bnF1ZXVl X2NhbmRpZGF0ZSgpIG1heSBoYXZlCi0gICAgICAgICAqIG5vdCByZXR1cm5lZCB0aGUgZmlyc3Qg dmNwdSBpbiB0aGUgcnVucXVldWUsIGZvciB2YXJpb3VzIHJlYXNvbnMKKyAgICAgICAgICogcHJv cGVyIHVuaXQgaXMgYmVpbmcgdXNlZC4gSW4gZmFjdCwgcnVucXVldWVfY2FuZGlkYXRlKCkgbWF5 IGhhdmUKKyAgICAgICAgICogbm90IHJldHVybmVkIHRoZSBmaXJzdCB1bml0IGluIHRoZSBydW5x dWV1ZSwgZm9yIHZhcmlvdXMgcmVhc29ucwogICAgICAgICAgKiAoZS5nLiwgYWZmaW5pdHkpLiBP bmx5IHRyaWdnZXIgYSByZXNldCB3aGVuIGl0IGRvZXMuCiAgICAgICAgICAqLwotICAgICAgICBp ZiAoIHNraXBwZWRfdmNwdXMgPT0gMCAmJiBzbmV4dC0+Y3JlZGl0IDw9IENTQ0hFRDJfQ1JFRElU X1JFU0VUICkKKyAgICAgICAgaWYgKCBza2lwcGVkX3VuaXRzID09IDAgJiYgc25leHQtPmNyZWRp dCA8PSBDU0NIRUQyX0NSRURJVF9SRVNFVCApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJlc2V0 X2NyZWRpdChvcHMsIGNwdSwgbm93LCBzbmV4dCk7CiAgICAgICAgICAgICBiYWxhbmNlX2xvYWQo b3BzLCBjcHUsIG5vdyk7CkBAIC0zNTk5LDExICszNTg2LDEwIEBAIGNzY2hlZDJfc2NoZWR1bGUo CiAgICAgICAgIHNuZXh0LT50aWNrbGVkX2NwdSA9IC0xOwogCiAgICAgICAgIC8qIFNhZmUgYmVj YXVzZSBsb2NrIGZvciBvbGQgcHJvY2Vzc29yIGlzIGhlbGQgKi8KLSAgICAgICAgaWYgKCBzbmV4 dC0+dmNwdS0+cHJvY2Vzc29yICE9IGNwdSApCisgICAgICAgIGlmICggc2NoZWRfdW5pdF9jcHUo c25leHQtPnVuaXQpICE9IGNwdSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNuZXh0LT5jcmVk aXQgKz0gQ1NDSEVEMl9NSUdSQVRFX0NPTVBFTlNBVElPTjsKLSAgICAgICAgICAgIHNuZXh0LT52 Y3B1LT5wcm9jZXNzb3IgPSBjcHU7Ci0gICAgICAgICAgICBzbmV4dC0+dmNwdS0+c2NoZWRfdW5p dC0+cmVzID0gZ2V0X3NjaGVkX3JlcyhjcHUpOworICAgICAgICAgICAgc2NoZWRfc2V0X3Jlcyhz bmV4dC0+dW5pdCwgZ2V0X3NjaGVkX3JlcyhjcHUpKTsKICAgICAgICAgICAgIFNDSEVEX1NUQVRf Q1JBTksobWlncmF0ZWQpOwogICAgICAgICAgICAgcmV0Lm1pZ3JhdGVkID0gMTsKICAgICAgICAg fQpAQCAtMzYzNywyMCArMzYyMywyMCBAQCBjc2NoZWQyX3NjaGVkdWxlKAogICAgICAqIFJldHVy biB0YXNrIHRvIHJ1biBuZXh0Li4uCiAgICAgICovCiAgICAgcmV0LnRpbWUgPSBjc2NoZWQyX3J1 bnRpbWUob3BzLCBjcHUsIHNuZXh0LCBub3cpOwotICAgIHJldC50YXNrID0gc25leHQtPnZjcHUt PnNjaGVkX3VuaXQ7CisgICAgcmV0LnRhc2sgPSBzbmV4dC0+dW5pdDsKIAotICAgIENTQ0hFRDJf VkNQVV9DSEVDSyhyZXQudGFzay0+dmNwdV9saXN0KTsKKyAgICBDU0NIRUQyX1VOSVRfQ0hFQ0so cmV0LnRhc2spOwogICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCi1jc2NoZWQyX2R1 bXBfdmNwdShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYsIHN0cnVjdCBjc2NoZWQyX3VuaXQg KnN2YykKK2NzY2hlZDJfZHVtcF91bml0KHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgc3Ry dWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogewogICAgIHByaW50aygiWyVpLiVpXSBmbGFncz0leCBj cHU9JWkiLAotICAgICAgICAgICAgc3ZjLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZCwKLSAgICAg ICAgICAgIHN2Yy0+dmNwdS0+dmNwdV9pZCwKKyAgICAgICAgICAgIHN2Yy0+dW5pdC0+ZG9tYWlu LT5kb21haW5faWQsCisgICAgICAgICAgICBzdmMtPnVuaXQtPnVuaXRfaWQsCiAgICAgICAgICAg ICBzdmMtPmZsYWdzLAotICAgICAgICAgICAgc3ZjLT52Y3B1LT5wcm9jZXNzb3IpOworICAgICAg ICAgICAgc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KSk7CiAKICAgICBwcmludGsoIiBjcmVkaXQ9 JSIgUFJJaTMyIiBbdz0ldV0iLCBzdmMtPmNyZWRpdCwgc3ZjLT53ZWlnaHQpOwogCkBAIC0zNjc1 LDEyICszNjYxLDEyIEBAIGR1bXBfcGNwdShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGlu dCBjcHUpCiAgICAgICAgICAgIENQVU1BU0tfUFIocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBj cHUpKSwKICAgICAgICAgICAgQ1BVTUFTS19QUihwZXJfY3B1KGNwdV9jb3JlX21hc2ssIGNwdSkp KTsKIAotICAgIC8qIGN1cnJlbnQgVkNQVSAobm90aGluZyB0byBzYXkgaWYgdGhhdCdzIHRoZSBp ZGxlIHZjcHUpICovCisgICAgLyogY3VycmVudCBVTklUIChub3RoaW5nIHRvIHNheSBpZiB0aGF0 J3MgdGhlIGlkbGUgdW5pdCkgKi8KICAgICBzdmMgPSBjc2NoZWQyX3VuaXQoY3Vycl9vbl9jcHUo Y3B1KSk7Ci0gICAgaWYgKCBzdmMgJiYgIWlzX2lkbGVfdmNwdShzdmMtPnZjcHUpICkKKyAgICBp ZiAoIHN2YyAmJiAhaXNfaWRsZV91bml0KHN2Yy0+dW5pdCkgKQogICAgIHsKICAgICAgICAgcHJp bnRrKCJcdHJ1bjogIik7Ci0gICAgICAgIGNzY2hlZDJfZHVtcF92Y3B1KHBydiwgc3ZjKTsKKyAg ICAgICAgY3NjaGVkMl9kdW1wX3VuaXQocHJ2LCBzdmMpOwogICAgIH0KIH0KIApAQCAtMzczNyw3 ICszNzIzLDcgQEAgY3NjaGVkMl9kdW1wKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAg ICBsaXN0X2Zvcl9lYWNoKCBpdGVyX3Nkb20sICZwcnYtPnNkb20gKQogICAgIHsKICAgICAgICAg c3RydWN0IGNzY2hlZDJfZG9tICpzZG9tOwotICAgICAgICBzdHJ1Y3QgdmNwdSAqdjsKKyAgICAg ICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQ7CiAKICAgICAgICAgc2RvbSA9IGxpc3RfZW50cnko aXRlcl9zZG9tLCBzdHJ1Y3QgY3NjaGVkMl9kb20sIHNkb21fZWxlbSk7CiAKQEAgLTM3NDUsMTkg KzM3MzEsMTkgQEAgY3NjaGVkMl9kdW1wKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAg ICAgICAgICAgICAgIHNkb20tPmRvbS0+ZG9tYWluX2lkLAogICAgICAgICAgICAgICAgc2RvbS0+ d2VpZ2h0LAogICAgICAgICAgICAgICAgc2RvbS0+Y2FwLAotICAgICAgICAgICAgICAgc2RvbS0+ bnJfdmNwdXMpOworICAgICAgICAgICAgICAgc2RvbS0+bnJfdW5pdHMpOwogCi0gICAgICAgIGZv cl9lYWNoX3ZjcHUoIHNkb20tPmRvbSwgdiApCisgICAgICAgIGZvcl9lYWNoX3NjaGVkX3VuaXQg KCBzZG9tLT5kb20sIHVuaXQgKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgY3NjaGVk Ml91bml0ICogY29uc3Qgc3ZjID0gY3NjaGVkMl91bml0KHYtPnNjaGVkX3VuaXQpOworICAgICAg ICAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqIGNvbnN0IHN2YyA9IGNzY2hlZDJfdW5pdCh1bml0 KTsKICAgICAgICAgICAgIHNwaW5sb2NrX3QgKmxvY2s7CiAKLSAgICAgICAgICAgIGxvY2sgPSB1 bml0X3NjaGVkdWxlX2xvY2soc3ZjLT52Y3B1LT5zY2hlZF91bml0KTsKKyAgICAgICAgICAgIGxv Y2sgPSB1bml0X3NjaGVkdWxlX2xvY2sodW5pdCk7CiAKICAgICAgICAgICAgIHByaW50aygiXHQl M2Q6ICIsICsrbG9vcCk7Ci0gICAgICAgICAgICBjc2NoZWQyX2R1bXBfdmNwdShwcnYsIHN2Yyk7 CisgICAgICAgICAgICBjc2NoZWQyX2R1bXBfdW5pdChwcnYsIHN2Yyk7CiAKLSAgICAgICAgICAg IHVuaXRfc2NoZWR1bGVfdW5sb2NrKGxvY2ssIHN2Yy0+dmNwdS0+c2NoZWRfdW5pdCk7CisgICAg ICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9jayhsb2NrLCB1bml0KTsKICAgICAgICAgfQogICAg IH0KIApAQCAtMzc4Myw3ICszNzY5LDcgQEAgY3NjaGVkMl9kdW1wKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcykKICAgICAgICAgICAgIGlmICggc3ZjICkKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICBwcmludGsoIlx0JTNkOiAiLCBsb29wKyspOwotICAgICAgICAgICAgICAgIGNz Y2hlZDJfZHVtcF92Y3B1KHBydiwgc3ZjKTsKKyAgICAgICAgICAgICAgICBjc2NoZWQyX2R1bXBf dW5pdChwcnYsIHN2Yyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgc3Bpbl91 bmxvY2soJnJxZC0+bG9jayk7CkBAIC0zODg2LDcgKzM4NzIsNyBAQCBjc2NoZWQyX3N3aXRjaF9z Y2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1LAogICAgIHN0 cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2QgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CiAgICAgdW5zaWdu ZWQgcnFpOwogCi0gICAgQVNTRVJUKHBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3ZjcHUoc3ZjLT52 Y3B1KSk7CisgICAgQVNTRVJUKHBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3VuaXQoc3ZjLT51bml0 KSk7CiAKICAgICAvKgogICAgICAqIFdlIG93biBvbmUgcnVucXVldWUgbG9jayBhbHJlYWR5IChm cm9tIHNjaGVkdWxlX2NwdV9zd2l0Y2goKSkuIFRoaXMKQEAgLTM4OTksNyArMzg4NSw3IEBAIGNz Y2hlZDJfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMsIHVuc2lnbmVkIGlu dCBjcHUsCiAgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKICAgICB3cml0ZV9s b2NrKCZwcnYtPmxvY2spOwogCi0gICAgaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQtPnByaXYg PSB2ZGF0YTsKKyAgICBzY2hlZF9pZGxlX3VuaXQoY3B1KS0+cHJpdiA9IHZkYXRhOwogCiAgICAg cnFpID0gaW5pdF9wZGF0YShwcnYsIHBkYXRhLCBjcHUpOwogCkBAIC0zOTQxLDcgKzM5MjcsNyBA QCBjc2NoZWQyX2RlaW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQg KnBjcHUsIGludCBjcHUpCiAgICAgICovCiAgICAgQVNTRVJUKHNwYyAmJiBzcGMtPnJ1bnFfaWQg IT0gLTEpOwogICAgIEFTU0VSVChjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnBydi0+aW5pdGlhbGl6 ZWQpKTsKLSAgICAKKwogICAgIC8qIEZpbmQgdGhlIG9sZCBydW5xdWV1ZSBhbmQgcmVtb3ZlIHRo aXMgY3B1IGZyb20gaXQgKi8KICAgICBycWQgPSBwcnYtPnJxZCArIHNwYy0+cnVucV9pZDsKIAot LSAKMi4xNi40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==