Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp292400imu; Thu, 8 Nov 2018 08:23:45 -0800 (PST) X-Google-Smtp-Source: AJdET5d2iXdZwIz8U9mcAXBW+mHLDGHMjlCrf5OfY26MD3rgrzhiAbk7xKIIfiBaENwHrHLK1CGQ X-Received: by 2002:a62:2681:: with SMTP id m123-v6mr5094334pfm.131.1541694225196; Thu, 08 Nov 2018 08:23:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541694225; cv=none; d=google.com; s=arc-20160816; b=i8qjk6eoz9jyuhKvg4JqaGooyzjK6Q2cV9EZQXGN0UkBMIqbD79eIah4dqzOcDlKKO 2+PbV/QiK5+BmJFCU/emTofs2c/I/FTZYZG+g8OdzKxZ/Rxy2x3Lce3PHosz9VZDpTNN nKVLjxA1SaLmb7fjGTqWQpitHbmHZHRsJ6H7t8H/34GLbgJXH9NceY/0OOPk++wq3Ee2 qB96xzu/GE2BZqZEP3MtbbJZSCod/ZgQS1lMXnPzK1a1xHRtBj09siG2MirjPd3fdZim vV/DZDUj1KOwvMOAG0ELkYQrcHXxF547jZFuDvB8sfJE0HGnDOlJfaWUxi+ZxPW9QtMR W0Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:spamdiagnosticmetadata:spamdiagnosticoutput:user-agent :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=DAurzXzFtvuMs7LqnmcvHI27VuZy/Vy1sRiZyrHRZXU=; b=iuHiKB/sD+/d7aqL7i6oYXgPwKSeAVTTVPZI3P6CExvsncjrbmBr90LupdNcYLkLVf VXZpxQc3dx1ozAmQgPQXGFpCT77gZ4ScdEct8h19hB/+TmYLue8wgL+yqmAvtINkaCxQ SX0UP7r3oK9Lc8xzLMHM2NpI4Xltzh8/Lry1DUBqUuMoR8THa28fSO7q5TphjMNIEcSd AvkIDunKHmjs16DLSrdbXGeri4hyxIHZWbuZPbB/zCHIYEdR0HXp641O4N9UTx+MKYHM FeKMWdOmIx3GC5KBSbzrxhyxVmBChvCJSgWc1ubYX9dTHl1CJM+n6I/vQrC+HeTH1PKm K0Lw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=FwowhumR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e9-v6si4132174pgo.567.2018.11.08.08.23.29; Thu, 08 Nov 2018 08:23:45 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=FwowhumR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727032AbeKIB7W (ORCPT + 99 others); Thu, 8 Nov 2018 20:59:22 -0500 Received: from mail-eopbgr690040.outbound.protection.outlook.com ([40.107.69.40]:12273 "EHLO NAM04-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726595AbeKIB7W (ORCPT ); Thu, 8 Nov 2018 20:59:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DAurzXzFtvuMs7LqnmcvHI27VuZy/Vy1sRiZyrHRZXU=; b=FwowhumRYhVTwEY3BWdQYjri0LPm8UPOvLu28v7+cGIl7hqQvnAKGIlpdVxJJZyC04p/KWY/LWRtlBIQ04L1NHgjSD6ea/u1vmwJm9u31SF+GwWU2F3wuwcerpMA/DBRbSRHIKpT3B8ft96V5RZKfu7IBhouHitsDfRq5vL7+6c= Received: from BN6PR12MB1714.namprd12.prod.outlook.com (10.175.101.11) by BN6PR12MB1204.namprd12.prod.outlook.com (10.168.227.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.21; Thu, 8 Nov 2018 16:07:55 +0000 Received: from BN6PR12MB1714.namprd12.prod.outlook.com ([fe80::5472:26e2:affa:2b41]) by BN6PR12MB1714.namprd12.prod.outlook.com ([fe80::5472:26e2:affa:2b41%7]) with mapi id 15.20.1294.034; Thu, 8 Nov 2018 16:07:55 +0000 From: "Koenig, Christian" To: Eric Anholt , "dri-devel@lists.freedesktop.org" CC: "linux-kernel@vger.kernel.org" , "Zhou, David(ChunMing)" , Daniel Vetter Subject: Re: [PATCH 2/2] drm: Revert syncobj timeline changes. Thread-Topic: [PATCH 2/2] drm: Revert syncobj timeline changes. Thread-Index: AQHUd3y8jj33F8u6206Ye3csXp/f9aVGC2sA Date: Thu, 8 Nov 2018 16:07:55 +0000 Message-ID: <635caa27-eb0b-a4d6-5a1d-3fbe5382bd6b@amd.com> References: <20181108160422.17743-1-eric@anholt.net> <20181108160422.17743-3-eric@anholt.net> In-Reply-To: <20181108160422.17743-3-eric@anholt.net> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 x-originating-ip: [2a02:908:1257:4460:1ab8:55c1:a639:6740] x-clientproxiedby: AM5PR0701CA0002.eurprd07.prod.outlook.com (2603:10a6:203:51::12) To BN6PR12MB1714.namprd12.prod.outlook.com (2603:10b6:404:106::11) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BN6PR12MB1204;20:KhlKgkT12pHzOmOt3TEK4JCmf1wqiRnNw1bn+dKfRIFZdn7YFtlm514NvDgNnPcSkwDThBS8QA/NhGmekWLFqUkf3vVrzjcFxsICoC9oSCotjjU+worK4oXz7u989PIPdLIPgj1S4RVBUNeMKhE2lBQpwkNc6dBlHam/PThZ5vIqci6WIZjOOB2WHQRcZ20kO20d90u52duticyfSKcQzScw3VgXW5FDR4ODZ2HcdnQlYD86HOl5inaMqCJwHPHl x-ms-office365-filtering-correlation-id: f96c3f42-820c-4b53-bcec-08d6459457db x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:BN6PR12MB1204; x-ms-traffictypediagnostic: BN6PR12MB1204: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(788757137089)(17755550239193)(767451399110); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231382)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(201708071742011)(7699051)(76991095);SRVR:BN6PR12MB1204;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1204; x-forefront-prvs: 0850800A29 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(366004)(346002)(376002)(136003)(396003)(189003)(199004)(25786009)(76176011)(6486002)(31696002)(8676002)(81156014)(81166006)(8936002)(4326008)(36756003)(478600001)(14454004)(72206003)(6436002)(58126008)(14444005)(54906003)(11346002)(446003)(186003)(256004)(68736007)(46003)(110136005)(52116002)(6506007)(316002)(2616005)(386003)(486006)(86362001)(476003)(99286004)(102836004)(6116002)(5660300001)(65826007)(71200400001)(66574009)(4744004)(71190400001)(6512007)(2900100001)(229853002)(53936002)(2906002)(53946003)(7736002)(305945005)(65956001)(65806001)(31686004)(105586002)(106356001)(97736004)(64126003)(2501003)(6246003)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1204;H:BN6PR12MB1714.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: /rbJqI95I3jJPy2sGI8gyG60qCLsv6ehZNdZXuQ1PjuOzGi2GGRaXY67Z/JWuF/wqx/DHwulh6IhDmkItw0BIQuHoqfXK9PjVgNDbUdVIMw0e2rPV8P2cYNe0gFURTHvPkhsYT67kEFcia/Qi2UYAXIs8uSs4HTlkkssEZZZOuVJ2Gb40hDTm8cgt0npiYOzbVS+dY4HsMIu4j/Gn3Xdp4F8iVr3ggbaDJD+oaWsT6J9rm2n1jJwqGIJ2dD5ttzWtYIVBU7HCEhI6oW8TSF6gfIecvPRj9qgj6ORzZpSCnaBuPLRxGLzG5zqWu3v3IUB9UiEyh1bV7XcDo4fkUshZCfknXoxOrnf7uU/8LXOFAs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: f96c3f42-820c-4b53-bcec-08d6459457db X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2018 16:07:55.6933 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1204 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QW0gMDguMTEuMTggdW0gMTc6MDQgc2NocmllYiBFcmljIEFuaG9sdDoNCj4gRGFuaWVsIHN1Z2dl c3RlZCBJIHN1Ym1pdCB0aGlzLCBzaW5jZSB3ZSdyZSBzdGlsbCBzZWVpbmcgcmVncmVzc2lvbnMN Cj4gZnJvbSBpdC4gIFRoaXMgaXMgYSByZXZlcnQgdG8gYmVmb3JlIDQ4MTk3YmM1NjRjNyAoImRy bTogYWRkIHN5bmNvYmoNCj4gdGltZWxpbmUgc3VwcG9ydCB2OSIpIGFuZCBpdHMgZm9sbG93b24g Zml4ZXMuDQoNClRoaXMgaXMgYSBoYXJtbGVzcyBmYWxzZSBwb3NpdGl2ZSBmcm9tIGxvY2tkZXAs IENob3VtaW5nIGFuZCBJIGFyZSANCmFscmVhZHkgd29ya2luZyBvbiBhIGZpeC4NCg0KQ2hyaXN0 aWFuLg0KDQo+DQo+IEZpeGVzIHRoaXMgb24gZmlyc3QgVjNEIHRlc3RjYXNlIGV4ZWN1dGlvbjoN Cj4NCj4gWyAgIDQ4Ljc2NzA4OF0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCj4gWyAgIDQ4Ljc3MjQxMF0gV0FSTklORzogcG9zc2libGUgcmVjdXJzaXZlIGxv Y2tpbmcgZGV0ZWN0ZWQNCj4gWyAgIDQ4Ljc3NzczOV0gNC4xOS4wLXJjNisgIzQ4OSBOb3QgdGFp bnRlZA0KPiBbICAgNDguNzgxNjY4XSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiBbICAgNDguNzg2OTkzXSBzaGFkZXJfcnVubmVyLzMyODQgaXMgdHJ5aW5n IHRvIGFjcXVpcmUgbG9jazoNCj4gWyAgIDQ4Ljc5MjQwOF0gY2UzMDlkN2YgKCYoJmFycmF5LT5s b2NrKS0+cmxvY2spey4uLi59LCBhdDogZG1hX2ZlbmNlX2FkZF9jYWxsYmFjaysweDMwLzB4MjNj DQo+IFsgICA0OC44MDA3MTRdDQo+IFsgICA0OC44MDA3MTRdIGJ1dCB0YXNrIGlzIGFscmVhZHkg aG9sZGluZyBsb2NrOg0KPiBbICAgNDguODA2NTU5XSBjNTk1MmJkMyAoJigmYXJyYXktPmxvY2sp LT5ybG9jayl7Li4uLn0sIGF0OiBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKzB4MzAvMHgyM2MNCj4g WyAgIDQ4LjgxNDg2Ml0NCj4gWyAgIDQ4LjgxNDg2Ml0gb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhl bHAgdXMgZGVidWcgdGhpczoNCj4gWyAgIDQ4LjgyMTQxMF0gIFBvc3NpYmxlIHVuc2FmZSBsb2Nr aW5nIHNjZW5hcmlvOg0KPiBbICAgNDguODIxNDEwXQ0KPiBbICAgNDguODI3MzM4XSAgICAgICAg Q1BVMA0KPiBbICAgNDguODI5Nzg4XSAgICAgICAgLS0tLQ0KPiBbICAgNDguODMyMjM5XSAgIGxv Y2soJigmYXJyYXktPmxvY2spLT5ybG9jayk7DQo+IFsgICA0OC44MzY0MzRdICAgbG9jaygmKCZh cnJheS0+bG9jayktPnJsb2NrKTsNCj4gWyAgIDQ4Ljg0MDY0MF0NCj4gWyAgIDQ4Ljg0MDY0MF0g ICoqKiBERUFETE9DSyAqKioNCj4gWyAgIDQ4Ljg0MDY0MF0NCj4gWyAgIDQ4Ljg0NjU4Ml0gIE1h eSBiZSBkdWUgdG8gbWlzc2luZyBsb2NrIG5lc3Rpbmcgbm90YXRpb24NCj4gWyAgMTMwLjc2MzU2 MF0gMSBsb2NrIGhlbGQgYnkgY3RzLXJ1bm5lci8zMjcwOg0KPiBbICAxMzAuNzY3NzQ1XSAgIzA6 IDc4MzRiNzkzICgmKCZhcnJheS0+bG9jayktPnJsb2NrKXstLi4ufSwgYXQ6IGRtYV9mZW5jZV9h ZGRfY2FsbGJhY2srMHgzMC8weDIzYw0KPiBbICAxMzAuNzc2NDYxXQ0KPiAgICAgICAgICAgICAg ICAgc3RhY2sgYmFja3RyYWNlOg0KPiBbICAxMzAuNzgwODI1XSBDUFU6IDEgUElEOiAzMjcwIENv bW06IGN0cy1ydW5uZXIgTm90IHRhaW50ZWQgNC4xOS4wLXJjNisgIzQ4Ng0KPiBbICAxMzAuNzg3 NzA2XSBIYXJkd2FyZSBuYW1lOiBCcm9hZGNvbSBTVEIgKEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSkN Cj4gWyAgMTMwLjc5MzY0NV0gWzxjMDIxMjY5Yz5dICh1bndpbmRfYmFja3RyYWNlKSBmcm9tIFs8 YzAyMGRiMWM+XSAoc2hvd19zdGFjaysweDEwLzB4MTQpDQo+IFsgIDEzMC44MDE0MDRdIFs8YzAy MGRiMWM+XSAoc2hvd19zdGFjaykgZnJvbSBbPGMwYzJjNGIwPl0gKGR1bXBfc3RhY2srMHhhOC8w eGQ0KQ0KPiBbICAxMzAuODA4NjQyXSBbPGMwYzJjNGIwPl0gKGR1bXBfc3RhY2spIGZyb20gWzxj MDI4MWE4ND5dIChfX2xvY2tfYWNxdWlyZSsweDg0OC8weDFhNjgpDQo+IFsgIDEzMC44MTY0ODNd IFs8YzAyODFhODQ+XSAoX19sb2NrX2FjcXVpcmUpIGZyb20gWzxjMDI4MzVkOD5dIChsb2NrX2Fj cXVpcmUrMHhkOC8weDIyYykNCj4gWyAgMTMwLjgyNDMyNl0gWzxjMDI4MzVkOD5dIChsb2NrX2Fj cXVpcmUpIGZyb20gWzxjMGM0OTk0OD5dIChfcmF3X3NwaW5fbG9ja19pcnFzYXZlKzB4NTQvMHg2 OCkNCj4gWyAgMTMwLjgzMjc3N10gWzxjMGM0OTk0OD5dIChfcmF3X3NwaW5fbG9ja19pcnFzYXZl KSBmcm9tIFs8YzA4NmJmNTQ+XSAoZG1hX2ZlbmNlX2FkZF9jYWxsYmFjaysweDMwLzB4MjNjKQ0K PiBbICAxMzAuODQyMTgzXSBbPGMwODZiZjU0Pl0gKGRtYV9mZW5jZV9hZGRfY2FsbGJhY2spIGZy b20gWzxjMDg2ZDRjOD5dIChkbWFfZmVuY2VfYXJyYXlfZW5hYmxlX3NpZ25hbGluZysweDU4LzB4 ZWMpDQo+IFsgIDEzMC44NTIzNzFdIFs8YzA4NmQ0Yzg+XSAoZG1hX2ZlbmNlX2FycmF5X2VuYWJs ZV9zaWduYWxpbmcpIGZyb20gWzxjMDg2YzAwYz5dIChkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKzB4 ZTgvMHgyM2MpDQo+IFsgIDEzMC44NjI2NDddIFs8YzA4NmMwMGM+XSAoZG1hX2ZlbmNlX2FkZF9j YWxsYmFjaykgZnJvbSBbPGMwNmQ4Nzc0Pl0gKGRybV9zeW5jb2JqX3dhaXRfaW9jdGwrMHg1MTgv MHg2MTQpDQo+IFsgIDEzMC44NzIxNDNdIFs8YzA2ZDg3NzQ+XSAoZHJtX3N5bmNvYmpfd2FpdF9p b2N0bCkgZnJvbSBbPGMwNmI4NDU4Pl0gKGRybV9pb2N0bF9rZXJuZWwrMHhiMC8weGYwKQ0KPiBb ICAxMzAuODgwOTQwXSBbPGMwNmI4NDU4Pl0gKGRybV9pb2N0bF9rZXJuZWwpIGZyb20gWzxjMDZi ODgxOD5dIChkcm1faW9jdGwrMHgxZDgvMHgzOTApDQo+IFsgIDEzMC44ODg3ODJdIFs8YzA2Yjg4 MTg+XSAoZHJtX2lvY3RsKSBmcm9tIFs8YzAzYTQ1MTA+XSAoZG9fdmZzX2lvY3RsKzB4YjAvMHg4 YWMpDQo+IFsgIDEzMC44OTYxODddIFs8YzAzYTQ1MTA+XSAoZG9fdmZzX2lvY3RsKSBmcm9tIFs8 YzAzYTRkNDA+XSAoa3N5c19pb2N0bCsweDM0LzB4NjApDQo+IFsgIDEzMC45MDM1OTNdIFs8YzAz YTRkNDA+XSAoa3N5c19pb2N0bCkgZnJvbSBbPGMwMjAxMDAwPl0gKHJldF9mYXN0X3N5c2NhbGwr MHgwLzB4MjgpDQo+DQo+IENjOiBDaHVubWluZyBaaG91IDxkYXZpZDEuemhvdUBhbWQuY29tPg0K PiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPg0KPiBDYzog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4NCj4gU2lnbmVkLW9mZi1ieTog RXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4NCj4gLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJt L2RybV9zeW5jb2JqLmMgfCAzNTkgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAgIGluY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggICAgIHwgIDczICsrKystLS0NCj4gICAyIGZp bGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzMjcgZGVsZXRpb25zKC0pDQo+DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fc3luY29iai5jDQo+IGluZGV4IGRhODE3NWQ5YzZmZi4uZTJjNWIzY2E0ODI0IDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYw0KPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3N5bmNvYmouYw0KPiBAQCAtNTYsOSArNTYsNiBAQA0KPiAgICNpbmNsdWRl ICJkcm1faW50ZXJuYWwuaCINCj4gICAjaW5jbHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+DQo+ICAg DQo+IC0vKiBtZXJnZSBub3JtYWwgc3luY29iaiB0byB0aW1lbGluZSBzeW5jb2JqLCB0aGUgcG9p bnQgaW50ZXJ2YWwgaXMgMSAqLw0KPiAtI2RlZmluZSBEUk1fU1lOQ09CSl9CSU5BUllfUE9JTlQg MQ0KPiAtDQo+ICAgc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2Ugew0KPiAgIAlzdHJ1Y3Qg ZG1hX2ZlbmNlIGJhc2U7DQo+ICAgCXNwaW5sb2NrX3QgbG9jazsNCj4gQEAgLTc0LDI5ICs3MSw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fc3luY29ial9zdHViX2Zl bmNlX29wcyA9IHsNCj4gICAJLmdldF90aW1lbGluZV9uYW1lID0gZHJtX3N5bmNvYmpfc3R1Yl9m ZW5jZV9nZXRfbmFtZSwNCj4gICB9Ow0KPiAgIA0KPiAtc3RydWN0IGRybV9zeW5jb2JqX3NpZ25h bF9wdCB7DQo+IC0Jc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqZmVuY2VfYXJyYXk7DQo+IC0JdTY0 ICAgIHZhbHVlOw0KPiAtCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsNCj4gLX07DQo+IC0NCj4gLXN0 YXRpYyBERUZJTkVfU1BJTkxPQ0soc2lnbmFsZWRfZmVuY2VfbG9jayk7DQo+IC1zdGF0aWMgc3Ry dWN0IGRtYV9mZW5jZSBzaWduYWxlZF9mZW5jZTsNCj4gICANCj4gLXN0YXRpYyBzdHJ1Y3QgZG1h X2ZlbmNlICpkcm1fc3luY29ial9nZXRfc3R1Yl9mZW5jZSh2b2lkKQ0KPiAtew0KPiAtCXNwaW5f bG9jaygmc2lnbmFsZWRfZmVuY2VfbG9jayk7DQo+IC0JaWYgKCFzaWduYWxlZF9mZW5jZS5vcHMp IHsNCj4gLQkJZG1hX2ZlbmNlX2luaXQoJnNpZ25hbGVkX2ZlbmNlLA0KPiAtCQkJICAgICAgICZk cm1fc3luY29ial9zdHViX2ZlbmNlX29wcywNCj4gLQkJCSAgICAgICAmc2lnbmFsZWRfZmVuY2Vf bG9jaywNCj4gLQkJCSAgICAgICAwLCAwKTsNCj4gLQkJZG1hX2ZlbmNlX3NpZ25hbF9sb2NrZWQo JnNpZ25hbGVkX2ZlbmNlKTsNCj4gLQl9DQo+IC0Jc3Bpbl91bmxvY2soJnNpZ25hbGVkX2ZlbmNl X2xvY2spOw0KPiAtDQo+IC0JcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbGVkX2ZlbmNlKTsN Cj4gLX0NCj4gICAvKioNCj4gICAgKiBkcm1fc3luY29ial9maW5kIC0gbG9va3VwIGFuZCByZWZl cmVuY2UgYSBzeW5jIG9iamVjdC4NCj4gICAgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZSBwcml2 YXRlIHBvaW50ZXINCj4gQEAgLTEyMywyNyArOTgsNiBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmogKmRy bV9zeW5jb2JqX2ZpbmQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsDQo+ICAgfQ0KPiAg IEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZCk7DQo+ICAgDQo+IC1zdGF0aWMgc3RydWN0 IGRtYV9mZW5jZSAqDQo+IC1kcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLA0KPiAtCQkJCSAgICAgdWludDY0X3QgcG9pbnQpDQo+ IC17DQo+IC0Jc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0Ow0KPiAtDQo+ IC0JaWYgKChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpICYmDQo+ IC0JICAgIChwb2ludCA8PSBzeW5jb2JqLT50aW1lbGluZSkpDQo+IC0JCXJldHVybiBkcm1fc3lu Y29ial9nZXRfc3R1Yl9mZW5jZSgpOw0KPiAtDQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShzaWdu YWxfcHQsICZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwgbGlzdCkgew0KPiAtCQlpZiAocG9pbnQg PiBzaWduYWxfcHQtPnZhbHVlKQ0KPiAtCQkJY29udGludWU7DQo+IC0JCWlmICgoc3luY29iai0+ dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFSWSkgJiYNCj4gLQkJICAgIChwb2ludCAhPSBz aWduYWxfcHQtPnZhbHVlKSkNCj4gLQkJCWNvbnRpbnVlOw0KPiAtCQlyZXR1cm4gZG1hX2ZlbmNl X2dldCgmc2lnbmFsX3B0LT5mZW5jZV9hcnJheS0+YmFzZSk7DQo+IC0JfQ0KPiAtCXJldHVybiBO VUxMOw0KPiAtfQ0KPiAtDQo+ICAgc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNr X2xvY2tlZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosDQo+ICAgCQkJCQkgICAgc3RydWN0 IGRybV9zeW5jb2JqX2NiICpjYiwNCj4gICAJCQkJCSAgICBkcm1fc3luY29ial9mdW5jX3QgZnVu YykNCj4gQEAgLTE1MiwxNTggKzEwNiw1MyBAQCBzdGF0aWMgdm9pZCBkcm1fc3luY29ial9hZGRf Y2FsbGJhY2tfbG9ja2VkKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwNCj4gICAJbGlzdF9h ZGRfdGFpbCgmY2ItPm5vZGUsICZzeW5jb2JqLT5jYl9saXN0KTsNCj4gICB9DQo+ICAgDQo+IC1z dGF0aWMgdm9pZCBkcm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN0cnVjdCBk cm1fc3luY29iaiAqc3luY29iaiwNCj4gLQkJCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNl LA0KPiAtCQkJCQkJICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmNiLA0KPiAtCQkJCQkJICBkcm1f c3luY29ial9mdW5jX3QgZnVuYykNCj4gK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosDQo+ICsJCQkJCQkg c3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLA0KPiArCQkJCQkJIHN0cnVjdCBkcm1fc3luY29ial9j YiAqY2IsDQo+ICsJCQkJCQkgZHJtX3N5bmNvYmpfZnVuY190IGZ1bmMpDQo+ICAgew0KPiAtCXU2 NCBwdF92YWx1ZSA9IDA7DQo+IC0NCj4gLQlXQVJOX09OKCpmZW5jZSk7DQo+IC0NCj4gLQlpZiAo c3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFSWSkgew0KPiAtCQkvKkJJTkFS WSBzeW5jb2JqIGFsd2F5cyB3YWl0IG9uIGxhc3QgcHQgKi8NCj4gLQkJcHRfdmFsdWUgPSBzeW5j b2JqLT5zaWduYWxfcG9pbnQ7DQo+ICsJaW50IHJldDsNCj4gICANCj4gLQkJaWYgKHB0X3ZhbHVl ID09IDApDQo+IC0JCQlwdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9CSU5BUllfUE9JTlQ7DQo+IC0J fQ0KPiArCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsNCj4gKwlpZiAo KmZlbmNlKQ0KPiArCQlyZXR1cm4gMTsNCj4gICANCj4gLQltdXRleF9sb2NrKCZzeW5jb2JqLT5j Yl9tdXRleCk7DQo+IC0Jc3Bpbl9sb2NrKCZzeW5jb2JqLT5wdF9sb2NrKTsNCj4gLQkqZmVuY2Ug PSBkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3luY29iaiwgcHRfdmFsdWUp Ow0KPiAtCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5wdF9sb2NrKTsNCj4gLQlpZiAoISpmZW5jZSkN Cj4gKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOw0KPiArCS8qIFdlJ3ZlIGFscmVhZHkgdHJp ZWQgb25jZSB0byBnZXQgYSBmZW5jZSBhbmQgZmFpbGVkLiAgTm93IHRoYXQgd2UNCj4gKwkgKiBo YXZlIHRoZSBsb2NrLCB0cnkgb25lIG1vcmUgdGltZSBqdXN0IHRvIGJlIHN1cmUgd2UgZG9uJ3Qg YWRkIGENCj4gKwkgKiBjYWxsYmFjayB3aGVuIGEgZmVuY2UgaGFzIGFscmVhZHkgYmVlbiBzZXQu DQo+ICsJICovDQo+ICsJaWYgKHN5bmNvYmotPmZlbmNlKSB7DQo+ICsJCSpmZW5jZSA9IGRtYV9m ZW5jZV9nZXQocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwNCj4gKwkJ CQkJCQkJIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9jaykpKTsNCj4gKwkJcmV0ID0gMTsN Cj4gKwl9IGVsc2Ugew0KPiArCQkqZmVuY2UgPSBOVUxMOw0KPiAgIAkJZHJtX3N5bmNvYmpfYWRk X2NhbGxiYWNrX2xvY2tlZChzeW5jb2JqLCBjYiwgZnVuYyk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZz eW5jb2JqLT5jYl9tdXRleCk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGRybV9zeW5jb2Jq X3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosDQo+IC0JCQkJCXN0 cnVjdCBkcm1fc3luY29ial9jYiAqY2IpDQo+IC17DQo+IC0JbXV0ZXhfbG9jaygmc3luY29iai0+ Y2JfbXV0ZXgpOw0KPiAtCWxpc3RfZGVsX2luaXQoJmNiLT5ub2RlKTsNCj4gLQltdXRleF91bmxv Y2soJnN5bmNvYmotPmNiX211dGV4KTsNCj4gLX0NCj4gKwkJcmV0ID0gMDsNCj4gKwl9DQo+ICsJ c3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOw0KPiAgIA0KPiAtc3RhdGljIHZvaWQgZHJtX3N5 bmNvYmpfaW5pdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopDQo+IC17DQo+IC0Jc3Bpbl9s b2NrKCZzeW5jb2JqLT5wdF9sb2NrKTsNCj4gLQlzeW5jb2JqLT50aW1lbGluZV9jb250ZXh0ID0g ZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7DQo+IC0Jc3luY29iai0+dGltZWxpbmUgPSAwOw0K PiAtCXN5bmNvYmotPnNpZ25hbF9wb2ludCA9IDA7DQo+IC0JaW5pdF93YWl0cXVldWVfaGVhZCgm c3luY29iai0+d3EpOw0KPiAtDQo+IC0JSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmotPnNpZ25hbF9w dF9saXN0KTsNCj4gLQlzcGluX3VubG9jaygmc3luY29iai0+cHRfbG9jayk7DQo+ICsJcmV0dXJu IHJldDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBkcm1fc3luY29ial9maW5pKHN0cnVj dCBkcm1fc3luY29iaiAqc3luY29iaikNCj4gK3ZvaWQgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNr KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwNCj4gKwkJCSAgICAgIHN0cnVjdCBkcm1fc3lu Y29ial9jYiAqY2IsDQo+ICsJCQkgICAgICBkcm1fc3luY29ial9mdW5jX3QgZnVuYykNCj4gICB7 DQo+IC0Jc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0ID0gTlVMTCwgKnRt cDsNCj4gLQ0KPiAtCXNwaW5fbG9jaygmc3luY29iai0+cHRfbG9jayk7DQo+IC0JbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLA0KPiAtCQkJCSAmc3luY29iai0+c2lnbmFs X3B0X2xpc3QsIGxpc3QpIHsNCj4gLQkJbGlzdF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7DQo+IC0J CWRtYV9mZW5jZV9wdXQoJnNpZ25hbF9wdC0+ZmVuY2VfYXJyYXktPmJhc2UpOw0KPiAtCQlrZnJl ZShzaWduYWxfcHQpOw0KPiAtCX0NCj4gLQlzcGluX3VubG9jaygmc3luY29iai0+cHRfbG9jayk7 DQo+ICsJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsNCj4gKwlkcm1fc3luY29ial9hZGRfY2Fs bGJhY2tfbG9ja2VkKHN5bmNvYmosIGNiLCBmdW5jKTsNCj4gKwlzcGluX3VubG9jaygmc3luY29i ai0+bG9jayk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBkcm1fc3luY29ial9jcmVhdGVf c2lnbmFsX3B0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwNCj4gLQkJCQkJc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UsDQo+IC0JCQkJCXU2NCBwb2ludCkNCj4gK3ZvaWQgZHJtX3N5bmNvYmpf cmVtb3ZlX2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwNCj4gKwkJCQkgc3Ry dWN0IGRybV9zeW5jb2JqX2NiICpjYikNCj4gICB7DQo+IC0Jc3RydWN0IGRybV9zeW5jb2JqX3Np Z25hbF9wdCAqc2lnbmFsX3B0ID0NCj4gLQkJa3phbGxvYyhzaXplb2Yoc3RydWN0IGRybV9zeW5j b2JqX3NpZ25hbF9wdCksIEdGUF9LRVJORUwpOw0KPiAtCXN0cnVjdCBkcm1fc3luY29ial9zaWdu YWxfcHQgKnRhaWxfcHQ7DQo+IC0Jc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlczsNCj4gLQlpbnQg bnVtX2ZlbmNlcyA9IDA7DQo+IC0JaW50IHJldCA9IDAsIGk7DQo+IC0NCj4gLQlpZiAoIXNpZ25h bF9wdCkNCj4gLQkJcmV0dXJuIC1FTk9NRU07DQo+IC0JaWYgKCFmZW5jZSkNCj4gLQkJZ290byBv dXQ7DQo+IC0NCj4gLQlmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2b2lkICopLCAyLCBH RlBfS0VSTkVMKTsNCj4gLQlpZiAoIWZlbmNlcykgew0KPiAtCQlyZXQgPSAtRU5PTUVNOw0KPiAt CQlnb3RvIG91dDsNCj4gLQl9DQo+IC0JZmVuY2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2Vf Z2V0KGZlbmNlKTsNCj4gLQkvKiB0aW1lbGluZSBzeW5jb2JqIG11c3QgdGFrZSB0aGlzIGRlcGVu ZGVuY3kgKi8NCj4gLQlpZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVM SU5FKSB7DQo+IC0JCXNwaW5fbG9jaygmc3luY29iai0+cHRfbG9jayk7DQo+IC0JCWlmICghbGlz dF9lbXB0eSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpKSB7DQo+IC0JCQl0YWlsX3B0ID0gbGlz dF9sYXN0X2VudHJ5KCZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwNCj4gLQkJCQkJCSAgc3RydWN0 IGRybV9zeW5jb2JqX3NpZ25hbF9wdCwgbGlzdCk7DQo+IC0JCQlmZW5jZXNbbnVtX2ZlbmNlcysr XSA9DQo+IC0JCQkJZG1hX2ZlbmNlX2dldCgmdGFpbF9wdC0+ZmVuY2VfYXJyYXktPmJhc2UpOw0K PiAtCQl9DQo+IC0JCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5wdF9sb2NrKTsNCj4gLQl9DQo+IC0J c2lnbmFsX3B0LT5mZW5jZV9hcnJheSA9IGRtYV9mZW5jZV9hcnJheV9jcmVhdGUobnVtX2ZlbmNl cywgZmVuY2VzLA0KPiAtCQkJCQkJCXN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQsDQo+IC0JCQkJ CQkJcG9pbnQsIGZhbHNlKTsNCj4gLQlpZiAoIXNpZ25hbF9wdC0+ZmVuY2VfYXJyYXkpIHsNCj4g LQkJcmV0ID0gLUVOT01FTTsNCj4gLQkJZ290byBmYWlsOw0KPiAtCX0NCj4gLQ0KPiAtCXNwaW5f bG9jaygmc3luY29iai0+cHRfbG9jayk7DQo+IC0JaWYgKHN5bmNvYmotPnNpZ25hbF9wb2ludCA+ PSBwb2ludCkgew0KPiAtCQlEUk1fV0FSTigiQSBsYXRlciBzaWduYWwgaXMgcmVhZHkhIik7DQo+ IC0JCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5wdF9sb2NrKTsNCj4gLQkJZ290byBleGlzdDsNCj4g LQl9DQo+IC0Jc2lnbmFsX3B0LT52YWx1ZSA9IHBvaW50Ow0KPiAtCWxpc3RfYWRkX3RhaWwoJnNp Z25hbF9wdC0+bGlzdCwgJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsNCj4gLQlzeW5jb2JqLT5z aWduYWxfcG9pbnQgPSBwb2ludDsNCj4gLQlzcGluX3VubG9jaygmc3luY29iai0+cHRfbG9jayk7 DQo+IC0Jd2FrZV91cF9hbGwoJnN5bmNvYmotPndxKTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAt ZXhpc3Q6DQo+IC0JZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5mZW5jZV9hcnJheS0+YmFzZSk7 DQo+IC1mYWlsOg0KPiAtCWZvciAoaSA9IDA7IGkgPCBudW1fZmVuY2VzOyBpKyspDQo+IC0JCWRt YV9mZW5jZV9wdXQoZmVuY2VzW2ldKTsNCj4gLQlrZnJlZShmZW5jZXMpOw0KPiAtb3V0Og0KPiAt CWtmcmVlKHNpZ25hbF9wdCk7DQo+IC0JcmV0dXJuIHJldDsNCj4gKwlzcGluX2xvY2soJnN5bmNv YmotPmxvY2spOw0KPiArCWxpc3RfZGVsX2luaXQoJmNiLT5ub2RlKTsNCj4gKwlzcGluX3VubG9j aygmc3luY29iai0+bG9jayk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHZvaWQgZHJtX3N5bmNv YmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikNCj4gLXsN Cj4gLQlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQsICp0bXAsICp0YWls X3B0Ow0KPiAtDQo+IC0Jc3Bpbl9sb2NrKCZzeW5jb2JqLT5wdF9sb2NrKTsNCj4gLQl0YWlsX3B0 ID0gbGlzdF9sYXN0X2VudHJ5KCZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwNCj4gLQkJCQkgIHN0 cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsDQo+IC0JCQkJICBsaXN0KTsNCj4gLQlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoc2lnbmFsX3B0LCB0bXAsDQo+IC0JCQkJICZzeW5jb2JqLT5zaWdu YWxfcHRfbGlzdCwgbGlzdCkgew0KPiAtCQlpZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09C Sl9UWVBFX0JJTkFSWSAmJg0KPiAtCQkgICAgc2lnbmFsX3B0ID09IHRhaWxfcHQpDQo+IC0JCQlj b250aW51ZTsNCj4gLQkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZCgmc2lnbmFsX3B0LT5mZW5j ZV9hcnJheS0+YmFzZSkpIHsNCj4gLQkJCXN5bmNvYmotPnRpbWVsaW5lID0gc2lnbmFsX3B0LT52 YWx1ZTsNCj4gLQkJCWxpc3RfZGVsKCZzaWduYWxfcHQtPmxpc3QpOw0KPiAtCQkJZG1hX2ZlbmNl X3B1dCgmc2lnbmFsX3B0LT5mZW5jZV9hcnJheS0+YmFzZSk7DQo+IC0JCQlrZnJlZShzaWduYWxf cHQpOw0KPiAtCQl9IGVsc2Ugew0KPiAtCQkJLypzaWduYWxfcHQgaXMgaW4gb3JkZXIgaW4gbGlz dCwgZnJvbSBzbWFsbCB0byBiaWcsIHNvDQo+IC0JCQkgKiB0aGUgbGF0ZXIgbXVzdCBub3QgYmUg c2lnbmFsIGVpdGhlciAqLw0KPiAtCQkJYnJlYWs7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4gLQlz cGluX3VubG9jaygmc3luY29iai0+cHRfbG9jayk7DQo+IC19DQo+ICAgLyoqDQo+ICAgICogZHJt X3N5bmNvYmpfcmVwbGFjZV9mZW5jZSAtIHJlcGxhY2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4N Cj4gICAgKiBAc3luY29iajogU3luYyBvYmplY3QgdG8gcmVwbGFjZSBmZW5jZSBpbg0KPiBAQCAt MzE2LDMwICsxNjUsMjggQEAgdm9pZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBk cm1fc3luY29iaiAqc3luY29iaiwNCj4gICAJCQkgICAgICAgdTY0IHBvaW50LA0KPiAgIAkJCSAg ICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkNCj4gICB7DQo+IC0JdTY0IHB0X3ZhbHVlID0g cG9pbnQ7DQo+IC0NCj4gLQlkcm1fc3luY29ial9nYXJiYWdlX2NvbGxlY3Rpb24oc3luY29iaik7 DQo+IC0JaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlkpIHsNCj4g LQkJaWYgKCFmZW5jZSkgew0KPiAtCQkJZHJtX3N5bmNvYmpfZmluaShzeW5jb2JqKTsNCj4gLQkJ CWRybV9zeW5jb2JqX2luaXQoc3luY29iaik7DQo+IC0JCQlyZXR1cm47DQo+IC0JCX0NCj4gLQkJ cHRfdmFsdWUgPSBzeW5jb2JqLT5zaWduYWxfcG9pbnQgKw0KPiAtCQkJRFJNX1NZTkNPQkpfQklO QVJZX1BPSU5UOw0KPiAtCX0NCj4gLQlkcm1fc3luY29ial9jcmVhdGVfc2lnbmFsX3B0KHN5bmNv YmosIGZlbmNlLCBwdF92YWx1ZSk7DQo+IC0JaWYgKGZlbmNlKSB7DQo+IC0JCXN0cnVjdCBkcm1f c3luY29ial9jYiAqY3VyLCAqdG1wOw0KPiAtCQlMSVNUX0hFQUQoY2JfbGlzdCk7DQo+ICsJc3Ry dWN0IGRtYV9mZW5jZSAqb2xkX2ZlbmNlOw0KPiArCXN0cnVjdCBkcm1fc3luY29ial9jYiAqY3Vy LCAqdG1wOw0KPiArDQo+ICsJaWYgKGZlbmNlKQ0KPiArCQlkbWFfZmVuY2VfZ2V0KGZlbmNlKTsN Cj4gKw0KPiArCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7DQo+ICAgDQo+IC0JCW11dGV4X2xv Y2soJnN5bmNvYmotPmNiX211dGV4KTsNCj4gKwlvbGRfZmVuY2UgPSByY3VfZGVyZWZlcmVuY2Vf cHJvdGVjdGVkKHN5bmNvYmotPmZlbmNlLA0KPiArCQkJCQkgICAgICBsb2NrZGVwX2lzX2hlbGQo JnN5bmNvYmotPmxvY2spKTsNCj4gKwlyY3VfYXNzaWduX3BvaW50ZXIoc3luY29iai0+ZmVuY2Us IGZlbmNlKTsNCj4gKw0KPiArCWlmIChmZW5jZSAhPSBvbGRfZmVuY2UpIHsNCj4gICAJCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRtcCwgJnN5bmNvYmotPmNiX2xpc3QsIG5vZGUpIHsN Cj4gICAJCQlsaXN0X2RlbF9pbml0KCZjdXItPm5vZGUpOw0KPiAgIAkJCWN1ci0+ZnVuYyhzeW5j b2JqLCBjdXIpOw0KPiAgIAkJfQ0KPiAtCQltdXRleF91bmxvY2soJnN5bmNvYmotPmNiX211dGV4 KTsNCj4gICAJfQ0KPiArDQo+ICsJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOw0KPiArDQo+ ICsJZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOw0KPiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MKGRy bV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOw0KPiAgIA0KPiBAQCAtMzYyLDY0ICsyMDksNiBAQCBz dGF0aWMgaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmopDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQN Cj4gLWRybV9zeW5jb2JqX3BvaW50X2dldChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2 NCBwb2ludCwgdTY0IGZsYWdzLA0KPiAtCQkgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2Up DQo+IC17DQo+IC0JaW50IHJldCA9IDA7DQo+IC0NCj4gLQlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09C Sl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkgew0KPiAtCQlyZXQgPSB3YWl0X2V2ZW50X2lu dGVycnVwdGlibGUoc3luY29iai0+d3EsDQo+IC0JCQkJCSAgICAgICBwb2ludCA8PSBzeW5jb2Jq LT5zaWduYWxfcG9pbnQpOw0KPiAtCQlpZiAocmV0IDwgMCkNCj4gLQkJCXJldHVybiByZXQ7DQo+ IC0JfQ0KPiAtCXNwaW5fbG9jaygmc3luY29iai0+cHRfbG9jayk7DQo+IC0JKmZlbmNlID0gZHJt X3N5bmNvYmpfZmluZF9zaWduYWxfcHRfZm9yX3BvaW50KHN5bmNvYmosIHBvaW50KTsNCj4gLQlp ZiAoISpmZW5jZSkNCj4gLQkJcmV0ID0gLUVJTlZBTDsNCj4gLQlzcGluX3VubG9jaygmc3luY29i ai0+cHRfbG9jayk7DQo+IC0JcmV0dXJuIHJldDsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBk cm1fc3luY29ial9zZWFyY2hfZmVuY2UgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSB0aGUgZmVuY2Ug aW4gYSBzeW5jIG9iamVjdCBvcg0KPiAtICogaW4gYSB0aW1lbGluZSBwb2ludA0KPiAtICogQHN5 bmNvYmo6IHN5bmMgb2JqZWN0IHBvaW50ZXINCj4gLSAqIEBwb2ludDogdGltZWxpbmUgcG9pbnQN Cj4gLSAqIEBmbGFnczogRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQgb3Ig bm90DQo+IC0gKiBAZmVuY2U6IG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBmZW5jZQ0KPiAtICoNCj4g LSAqIGlmIGZsYWdzIGlzIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlULCB0 aGUgZnVuY3Rpb24gd2lsbCBibG9jaw0KPiAtICogaGVyZSB1bnRpbCBzcGVjaWZpYyB0aW1lbGlu ZSBwb2ludHMgaXMgcmVhY2hlZC4NCj4gLSAqIGlmIG5vdCwgeW91IG5lZWQgYSBzdWJtaXQgdGhy ZWFkIGFuZCBibG9jayBpbiB1c2Vyc3BhY2UgdW50aWwgYWxsIGZ1dHVyZQ0KPiAtICogdGltZWxp bmUgcG9pbnRzIGhhdmUgbWF0ZXJpYWxpemVkLCBvbmx5IHRoZW4geW91IGNhbiBzdWJtaXQgdG8g dGhlIGtlcm5lbCwNCj4gLSAqIG90aGVyd2lzZSwgZnVuY3Rpb24gd2lsbCBmYWlsIHRvIHJldHVy biBmZW5jZS4NCj4gLSAqDQo+IC0gKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZl IGVycm9yIHZhbHVlIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MgQGZlbmNlDQo+IC0gKiBjb250YWlu cyBhIHJlZmVyZW5jZSB0byB0aGUgZmVuY2UsIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQgYnkgY2Fs bGluZw0KPiAtICogZG1hX2ZlbmNlX3B1dCgpLg0KPiAtICovDQo+IC1pbnQgZHJtX3N5bmNvYmpf c2VhcmNoX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LA0KPiAt CQkJICAgICB1NjQgZmxhZ3MsIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkNCj4gLXsNCj4gLQl1 NjQgcHRfdmFsdWUgPSBwb2ludDsNCj4gLQ0KPiAtCWlmICghc3luY29iaikNCj4gLQkJcmV0dXJu IC1FTk9FTlQ7DQo+IC0NCj4gLQlkcm1fc3luY29ial9nYXJiYWdlX2NvbGxlY3Rpb24oc3luY29i aik7DQo+IC0JaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlkpIHsN Cj4gLQkJLypCSU5BUlkgc3luY29iaiBhbHdheXMgd2FpdCBvbiBsYXN0IHB0ICovDQo+IC0JCXB0 X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50Ow0KPiAtDQo+IC0JCWlmIChwdF92YWx1ZSA9 PSAwKQ0KPiAtCQkJcHRfdmFsdWUgKz0gRFJNX1NZTkNPQkpfQklOQVJZX1BPSU5UOw0KPiAtCX0N Cj4gLQlyZXR1cm4gZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN5bmNvYmosIHB0X3ZhbHVlLCBmbGFn cywgZmVuY2UpOw0KPiAtfQ0KPiAtRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9zZWFyY2hfZmVu Y2UpOw0KPiAtDQo+ICAgLyoqDQo+ICAgICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1 cCBhbmQgcmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0DQo+ICAgICogQGZpbGVf cHJpdmF0ZTogZHJtIGZpbGUgcHJpdmF0ZSBwb2ludGVyDQo+IEBAIC00MjksNyArMjE4LDcgQEAg RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9zZWFyY2hfZmVuY2UpOw0KPiAgICAqIEBmZW5jZTog b3V0IHBhcmFtZXRlciBmb3IgdGhlIGZlbmNlDQo+ICAgICoNCj4gICAgKiBUaGlzIGlzIGp1c3Qg YSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGRybV9zeW5jb2JqX2ZpbmQoKSBh bmQNCj4gLSAqIGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZSgpLg0KPiArICogZHJtX3N5bmNvYmpf ZmVuY2VfZ2V0KCkuDQo+ICAgICoNCj4gICAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5l Z2F0aXZlIGVycm9yIHZhbHVlIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MgQGZlbmNlDQo+ICAgICog Y29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGZlbmNlLCB3aGljaCBtdXN0IGJlIHJlbGVhc2Vk IGJ5IGNhbGxpbmcNCj4gQEAgLTQ0MCwxMSArMjI5LDE2IEBAIGludCBkcm1fc3luY29ial9maW5k X2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLA0KPiAgIAkJCSAgIHN0cnVjdCBk bWFfZmVuY2UgKipmZW5jZSkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29i aiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOw0KPiAtCWludCByZXQ7 DQo+ICsJaW50IHJldCA9IDA7DQo+ICAgDQo+IC0JcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2Zl bmNlKHN5bmNvYmosIHBvaW50LCBmbGFncywgZmVuY2UpOw0KPiAtCWlmIChzeW5jb2JqKQ0KPiAt CQlkcm1fc3luY29ial9wdXQoc3luY29iaik7DQo+ICsJaWYgKCFzeW5jb2JqKQ0KPiArCQlyZXR1 cm4gLUVOT0VOVDsNCj4gKw0KPiArCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5j b2JqKTsNCj4gKwlpZiAoISpmZW5jZSkgew0KPiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCX0NCj4g Kwlkcm1fc3luY29ial9wdXQoc3luY29iaik7DQo+ICAgCXJldHVybiByZXQ7DQo+ICAgfQ0KPiAg IEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZF9mZW5jZSk7DQo+IEBAIC00NjAsNyArMjU0 LDcgQEAgdm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQ0KPiAgIAlzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBjb250YWluZXJfb2Yoa3JlZiwNCj4gICAJCQkJCQkg ICBzdHJ1Y3QgZHJtX3N5bmNvYmosDQo+ICAgCQkJCQkJICAgcmVmY291bnQpOw0KPiAtCWRybV9z eW5jb2JqX2Zpbmkoc3luY29iaik7DQo+ICsJZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5j b2JqLCAwLCBOVUxMKTsNCj4gICAJa2ZyZWUoc3luY29iaik7DQo+ICAgfQ0KPiAgIEVYUE9SVF9T WU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7DQo+IEBAIC00ODksMTMgKzI4Myw3IEBAIGludCBkcm1f c3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90 IGZsYWdzLA0KPiAgIA0KPiAgIAlrcmVmX2luaXQoJnN5bmNvYmotPnJlZmNvdW50KTsNCj4gICAJ SU5JVF9MSVNUX0hFQUQoJnN5bmNvYmotPmNiX2xpc3QpOw0KPiAtCXNwaW5fbG9ja19pbml0KCZz eW5jb2JqLT5wdF9sb2NrKTsNCj4gLQltdXRleF9pbml0KCZzeW5jb2JqLT5jYl9tdXRleCk7DQo+ IC0JaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpDQo+IC0JCXN5 bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FOw0KPiAtCWVsc2UNCj4gLQkJ c3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfQklOQVJZOw0KPiAtCWRybV9zeW5jb2Jq X2luaXQoc3luY29iaik7DQo+ICsJc3Bpbl9sb2NrX2luaXQoJnN5bmNvYmotPmxvY2spOw0KPiAg IA0KPiAgIAlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpIHsNCj4gICAJ CXJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5jb2JqKTsNCj4gQEAgLTc3 OCw4ICs1NjYsNyBAQCBkcm1fc3luY29ial9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwNCj4gICAJCXJldHVybiAtRU9QTk9UU1VQUDsNCj4gICANCj4gICAJ Lyogbm8gdmFsaWQgZmxhZ3MgeWV0ICovDQo+IC0JaWYgKGFyZ3MtPmZsYWdzICYgfihEUk1fU1lO Q09CSl9DUkVBVEVfU0lHTkFMRUQgfA0KPiAtCQkJICAgIERSTV9TWU5DT0JKX0NSRUFURV9UWVBF X1RJTUVMSU5FKSkNCj4gKwlpZiAoYXJncy0+ZmxhZ3MgJiB+RFJNX1NZTkNPQkpfQ1JFQVRFX1NJ R05BTEVEKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgDQo+ICAgCXJldHVybiBkcm1fc3lu Y29ial9jcmVhdGVfYXNfaGFuZGxlKGZpbGVfcHJpdmF0ZSwNCj4gQEAgLTg3Miw4ICs2NTksOSBA QCBzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiwNCj4gICAJc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCA9DQo+ICAg CQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnksIHN5bmNvYmpfY2Ip Ow0KPiAgIA0KPiAtCWRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCAmd2Fp dC0+ZmVuY2UpOw0KPiAtDQo+ICsJLyogVGhpcyBoYXBwZW5zIGluc2lkZSB0aGUgc3luY29iaiBs b2NrICovDQo+ICsJd2FpdC0+ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQoc3luY29iai0+ZmVuY2UsDQo+ICsJCQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxk KCZzeW5jb2JqLT5sb2NrKSkpOw0KPiAgIAl3YWtlX3VwX3Byb2Nlc3Mod2FpdC0+dGFzayk7DQo+ ICAgfQ0KPiAgIA0KPiBAQCAtODk5LDggKzY4Nyw3IEBAIHN0YXRpYyBzaWduZWQgbG9uZyBkcm1f c3luY29ial9hcnJheV93YWl0X3RpbWVvdXQoc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMs DQo+ICAgCXNpZ25hbGVkX2NvdW50ID0gMDsNCj4gICAJZm9yIChpID0gMDsgaSA8IGNvdW50OyAr K2kpIHsNCj4gICAJCWVudHJpZXNbaV0udGFzayA9IGN1cnJlbnQ7DQo+IC0JCWRybV9zeW5jb2Jq X3NlYXJjaF9mZW5jZShzeW5jb2Jqc1tpXSwgMCwgMCwNCj4gLQkJCQkJICZlbnRyaWVzW2ldLmZl bmNlKTsNCj4gKwkJZW50cmllc1tpXS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5j b2Jqc1tpXSk7DQo+ICAgCQlpZiAoIWVudHJpZXNbaV0uZmVuY2UpIHsNCj4gICAJCQlpZiAoZmxh Z3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkgew0KPiAgIAkJCQlj b250aW51ZTsNCj4gQEAgLTkzMSw5ICs3MTgsNiBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3N5 bmNvYmpfYXJyYXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzLA0K PiAgIA0KPiAgIAlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NV Qk1JVCkgew0KPiAgIAkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsNCj4gLQkJCWlmIChl bnRyaWVzW2ldLmZlbmNlKQ0KPiAtCQkJCWNvbnRpbnVlOw0KPiAtDQo+ICAgCQkJZHJtX3N5bmNv YmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzeW5jb2Jqc1tpXSwNCj4gICAJCQkJCQkJICAg ICAgJmVudHJpZXNbaV0uZmVuY2UsDQo+ICAgCQkJCQkJCSAgICAgICZlbnRyaWVzW2ldLnN5bmNv YmpfY2IsDQo+IEBAIC0xMTY1LDEzICs5NDksMTIgQEAgZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gICAJaWYgKHJldCA8IDApDQo+ ICAgCQlyZXR1cm4gcmV0Ow0KPiAgIA0KPiAtCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5jb3VudF9o YW5kbGVzOyBpKyspIHsNCj4gLQkJZHJtX3N5bmNvYmpfZmluaShzeW5jb2Jqc1tpXSk7DQo+IC0J CWRybV9zeW5jb2JqX2luaXQoc3luY29ianNbaV0pOw0KPiAtCX0NCj4gKwlmb3IgKGkgPSAwOyBp IDwgYXJncy0+Y291bnRfaGFuZGxlczsgaSsrKQ0KPiArCQlkcm1fc3luY29ial9yZXBsYWNlX2Zl bmNlKHN5bmNvYmpzW2ldLCAwLCBOVUxMKTsNCj4gKw0KPiAgIAlkcm1fc3luY29ial9hcnJheV9m cmVlKHN5bmNvYmpzLCBhcmdzLT5jb3VudF9oYW5kbGVzKTsNCj4gICANCj4gLQlyZXR1cm4gcmV0 Ow0KPiArCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gICBpbnQNCj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oDQo+IGlu ZGV4IDI5MjQ0Y2JjZDA1ZS4uMmVkYTQ0ZGVmNjM5IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fc3luY29iai5oDQo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgNCj4gQEAg LTMwLDE1ICszMCwxMCBAQA0KPiAgIA0KPiAgIHN0cnVjdCBkcm1fc3luY29ial9jYjsNCj4gICAN Cj4gLWVudW0gZHJtX3N5bmNvYmpfdHlwZSB7DQo+IC0JRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlks DQo+IC0JRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORQ0KPiAtfTsNCj4gLQ0KPiAgIC8qKg0KPiAg ICAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMgb2JqZWN0Lg0KPiAgICAqDQo+IC0gKiBUaGlz IHN0cnVjdHVyZSBkZWZpbmVzIGEgZ2VuZXJpYyBzeW5jIG9iamVjdCB3aGljaCBpcyB0aW1lbGlu ZSBiYXNlZC4NCj4gKyAqIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgYSBnZW5lcmljIHN5bmMgb2Jq ZWN0IHdoaWNoIHdyYXBzIGEgJmRtYV9mZW5jZS4NCj4gICAgKi8NCj4gICBzdHJ1Y3QgZHJtX3N5 bmNvYmogew0KPiAgIAkvKioNCj4gQEAgLTQ2LDQyICs0MSwyMSBAQCBzdHJ1Y3QgZHJtX3N5bmNv Ymogew0KPiAgIAkgKi8NCj4gICAJc3RydWN0IGtyZWYgcmVmY291bnQ7DQo+ICAgCS8qKg0KPiAt CSAqIEB0eXBlOiBpbmRpY2F0ZSBzeW5jb2JqIHR5cGUNCj4gLQkgKi8NCj4gLQllbnVtIGRybV9z eW5jb2JqX3R5cGUgdHlwZTsNCj4gLQkvKioNCj4gLQkgKiBAd3E6IHdhaXQgc2lnbmFsIG9wZXJh dGlvbiB3b3JrIHF1ZXVlDQo+IC0JICovDQo+IC0Jd2FpdF9xdWV1ZV9oZWFkX3QJd3E7DQo+IC0J LyoqDQo+IC0JICogQHRpbWVsaW5lX2NvbnRleHQ6IGZlbmNlIGNvbnRleHQgdXNlZCBieSB0aW1l bGluZQ0KPiArCSAqIEBmZW5jZToNCj4gKwkgKiBOVUxMIG9yIGEgcG9pbnRlciB0byB0aGUgZmVu Y2UgYm91bmQgdG8gdGhpcyBvYmplY3QuDQo+ICsJICoNCj4gKwkgKiBUaGlzIGZpZWxkIHNob3Vs ZCBub3QgYmUgdXNlZCBkaXJlY3RseS4gVXNlIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpDQo+ICsJ ICogYW5kIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UoKSBpbnN0ZWFkLg0KPiAgIAkgKi8NCj4g LQl1NjQgdGltZWxpbmVfY29udGV4dDsNCj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5j ZTsNCj4gICAJLyoqDQo+IC0JICogQHRpbWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lIHZhbHVlLCB3 aGljaCBpbmRpY2F0ZXMgcG9pbnQgaXMgc2lnbmFsZWQuDQo+ICsJICogQGNiX2xpc3Q6IExpc3Qg b2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdldHMgcmVwbGFjZWQuDQo+ICAg CSAqLw0KPiAtCXU2NCB0aW1lbGluZTsNCj4gLQkvKioNCj4gLQkgKiBAc2lnbmFsX3BvaW50OiB3 aGljaCBpbmRpY2F0ZXMgdGhlIGxhdGVzdCBzaWduYWxlciBwb2ludC4NCj4gLQkgKi8NCj4gLQl1 NjQgc2lnbmFsX3BvaW50Ow0KPiAtCS8qKg0KPiAtCSAqIEBzaWduYWxfcHRfbGlzdDogc2lnbmFs ZXIgcG9pbnQgbGlzdC4NCj4gLQkgKi8NCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9wdF9s aXN0Ow0KPiAtDQo+IC0JLyoqDQo+IC0gICAgICAgICAqIEBjYl9saXN0OiBMaXN0IG9mIGNhbGxi YWNrcyB0byBjYWxsIHdoZW4gdGhlICZmZW5jZSBnZXRzIHJlcGxhY2VkLg0KPiAtICAgICAgICAg Ki8NCj4gICAJc3RydWN0IGxpc3RfaGVhZCBjYl9saXN0Ow0KPiAgIAkvKioNCj4gLQkgKiBAcHRf bG9jazogUHJvdGVjdHMgcHQgbGlzdC4NCj4gKwkgKiBAbG9jazogUHJvdGVjdHMgJmNiX2xpc3Qg YW5kIHdyaXRlLWxvY2tzICZmZW5jZS4NCj4gICAJICovDQo+IC0Jc3BpbmxvY2tfdCBwdF9sb2Nr Ow0KPiAtCS8qKg0KPiAtCSAqIEBjYl9tdXRleDogUHJvdGVjdHMgc3luY29iaiBjYiBsaXN0Lg0K PiAtCSAqLw0KPiAtCXN0cnVjdCBtdXRleCBjYl9tdXRleDsNCj4gKwlzcGlubG9ja190IGxvY2s7 DQo+ICAgCS8qKg0KPiAgIAkgKiBAZmlsZTogQSBmaWxlIGJhY2tpbmcgZm9yIHRoaXMgc3luY29i ai4NCj4gICAJICovDQo+IEBAIC05NCw3ICs2OCw3IEBAIHR5cGVkZWYgdm9pZCAoKmRybV9zeW5j b2JqX2Z1bmNfdCkoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLA0KPiAgIC8qKg0KPiAgICAq IHN0cnVjdCBkcm1fc3luY29ial9jYiAtIGNhbGxiYWNrIGZvciBkcm1fc3luY29ial9hZGRfY2Fs bGJhY2sNCj4gICAgKiBAbm9kZTogdXNlZCBieSBkcm1fc3luY29iX2FkZF9jYWxsYmFjayB0byBh cHBlbmQgdGhpcyBzdHJ1Y3QgdG8NCj4gLSAqICAgICAgICZkcm1fc3luY29iai5jYl9saXN0DQo+ ICsgKgkgICZkcm1fc3luY29iai5jYl9saXN0DQo+ICAgICogQGZ1bmM6IGRybV9zeW5jb2JqX2Z1 bmNfdCB0byBjYWxsDQo+ICAgICoNCj4gICAgKiBUaGlzIHN0cnVjdCB3aWxsIGJlIGluaXRpYWxp emVkIGJ5IGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjaywgYWRkaXRpb25hbA0KPiBAQCAtMTMyLDYg KzEwNiwyOSBAQCBkcm1fc3luY29ial9wdXQoc3RydWN0IGRybV9zeW5jb2JqICpvYmopDQo+ICAg CWtyZWZfcHV0KCZvYmotPnJlZmNvdW50LCBkcm1fc3luY29ial9mcmVlKTsNCj4gICB9DQo+ICAg DQo+ICsvKioNCj4gKyAqIGRybV9zeW5jb2JqX2ZlbmNlX2dldCAtIGdldCBhIHJlZmVyZW5jZSB0 byBhIGZlbmNlIGluIGEgc3luYyBvYmplY3QNCj4gKyAqIEBzeW5jb2JqOiBzeW5jIG9iamVjdC4N Cj4gKyAqDQo+ICsgKiBUaGlzIGFjcXVpcmVzIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRvICZkcm1f c3luY29iai5mZW5jZSBjb250YWluZWQgaW4gQG9iaiwNCj4gKyAqIGlmIG5vdCBOVUxMLiBJdCBp cyBpbGxlZ2FsIHRvIGNhbGwgdGhpcyB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5j ZS4NCj4gKyAqIE5vIGxvY2tzIHJlcXVpcmVkLg0KPiArICoNCj4gKyAqIFJldHVybnM6DQo+ICsg KiBFaXRoZXIgdGhlIGZlbmNlIG9mIEBvYmogb3IgTlVMTCBpZiB0aGVyZSdzIG5vbmUuDQo+ICsg Ki8NCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9mZW5jZSAqDQo+ICtkcm1fc3luY29ial9m ZW5jZV9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQ0KPiArew0KPiArCXN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlOw0KPiArDQo+ICsJcmN1X3JlYWRfbG9jaygpOw0KPiArCWZlbmNlID0g ZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmc3luY29iai0+ZmVuY2UpOw0KPiArCXJjdV9yZWFkX3Vu bG9jaygpOw0KPiArDQo+ICsJcmV0dXJuIGZlbmNlOw0KPiArfQ0KPiArDQo+ICAgc3RydWN0IGRy bV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRl LA0KPiAgIAkJCQkgICAgIHUzMiBoYW5kbGUpOw0KPiAgIHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFj ZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwNCj4gQEAgLTE0 NSw3ICsxNDIsNSBAQCBpbnQgZHJtX3N5bmNvYmpfY3JlYXRlKHN0cnVjdCBkcm1fc3luY29iaiAq Km91dF9zeW5jb2JqLCB1aW50MzJfdCBmbGFncywNCj4gICBpbnQgZHJtX3N5bmNvYmpfZ2V0X2hh bmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwNCj4gICAJCQkgICBzdHJ1Y3QgZHJt X3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxlKTsNCj4gICBpbnQgZHJtX3N5bmNvYmpfZ2V0 X2ZkKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgaW50ICpwX2ZkKTsNCj4gLWludCBkcm1f c3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9p bnQsIHU2NCBmbGFncywNCj4gLQkJCSAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsNCj4g ICANCj4gICAjZW5kaWYNCg0K