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=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 C06CAC3A59F for ; Sat, 31 Aug 2019 10:47:05 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 7595A22D37 for ; Sat, 31 Aug 2019 10:47:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="oRhvAsav" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7595A22D37 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:43940 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i40uO-0001Iq-Fv for qemu-devel@archiver.kernel.org; Sat, 31 Aug 2019 06:47:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37140) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i40ry-0000fq-Hc for qemu-devel@nongnu.org; Sat, 31 Aug 2019 06:44:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i40rv-0006CS-4C for qemu-devel@nongnu.org; Sat, 31 Aug 2019 06:44:33 -0400 Received: from mail-eopbgr50126.outbound.protection.outlook.com ([40.107.5.126]:20102 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i40ru-00067H-BD; Sat, 31 Aug 2019 06:44:31 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bu1/vtJcODFGSozWMmgK0KzrqgO+IdtJ9MOnbR7Q6HJE5FrADqd3GkCZ55SnFizAcAVi6ZSv/qr3fF0unkyYBxAkDKBwtiodGOGb1dAeeH3/A5R2OCKHgFbgcWi9i884fbrmVjUZKAje+4idVYKpEI/v+ODDxOyjSJub068revVzz82DFRgOwPXZSQxklgtC7Ue3vQIHn4vSc7QEIAt4xrc3XS0UTOxJ2cFO9kp+2niosXQqgZCVIQ4kasz1xZx5HEmdnf2mLbu4jETJp60fbZ7nBSrkZfmf9nN8Yx6Io//1hsxLs2BrOGs1kO5HlgEHhvjvRk1l1uWOYqx8i15/1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f+U0MYloRPSp1LV8NYC0OsU1m2ARz9hMon6TgZyF/xQ=; b=CA9lcOBN6iGmgXGk2xCAUG5b53MOpS9HJ9onjJ/45V7OEuwhEz9Y4KvvqGgG8bQJlD3gSeqiLLQ9eOLN39dVC7/COkcB7MQiKaTnUjezgSSmkksCj/sQr2B4twoqtOQNri71hHSkNLGpnDCCpsXq69JqLg6CTO449njSGK4CFt/hQH04WOXh1RZhOjMBboZWlqwloOFP32rY4UCa5HYsTuWSadWFagBBvfhRLdx89fL0+MjXtZlpYt4gSrfLhHR0N1WGF8Ddy/aN3x5rt4DfeGvshEpm4qzO4wGl0wZ0UutvBkOMwfvpVMEL42u1PH3pIH8gHqXbm6nucWcpVQNbDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f+U0MYloRPSp1LV8NYC0OsU1m2ARz9hMon6TgZyF/xQ=; b=oRhvAsavi7jcocie5ZtMtZJcHFwMXUbYfSzIf3z585ME4XCPHlzrivVQzzLbLjszG/T8gPA7Vty2v5jm5b1nlRDLSHZcxVRi+6q5Z3xKWiHqSoNxBEq+o/h90e3RYy27hhGVHPeHvxplrP5PtD28ayVyMmnrGrQBft4gcTC5734= Received: from DB8PR08MB5498.eurprd08.prod.outlook.com (52.133.242.216) by DB8PR08MB4572.eurprd08.prod.outlook.com (20.179.12.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.20; Sat, 31 Aug 2019 10:44:24 +0000 Received: from DB8PR08MB5498.eurprd08.prod.outlook.com ([fe80::b5c0:6b97:438d:77ed]) by DB8PR08MB5498.eurprd08.prod.outlook.com ([fe80::b5c0:6b97:438d:77ed%2]) with mapi id 15.20.2220.020; Sat, 31 Aug 2019 10:44:24 +0000 From: Vladimir Sementsov-Ogievskiy To: Max Reitz , "qemu-block@nongnu.org" Thread-Topic: [PATCH v6 27/42] commit: Deal with filters Thread-Index: AQHVTs2iquobUI6vXkaECYOYf4KCHacVNH0A Date: Sat, 31 Aug 2019 10:44:24 +0000 Message-ID: <64a06bc9-ba3a-b666-1d49-e263614d4566@virtuozzo.com> References: <20190809161407.11920-1-mreitz@redhat.com> <20190809161407.11920-28-mreitz@redhat.com> In-Reply-To: <20190809161407.11920-28-mreitz@redhat.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR0402CA0001.eurprd04.prod.outlook.com (2603:10a6:3:d0::11) To DB8PR08MB5498.eurprd08.prod.outlook.com (2603:10a6:10:11c::24) authentication-results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190831134422652 x-originating-ip: [185.231.240.5] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8c34f221-521c-49e9-82ac-08d72e003088 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:DB8PR08MB4572; x-ms-traffictypediagnostic: DB8PR08MB4572: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-forefront-prvs: 014617085B x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(366004)(39840400004)(376002)(136003)(346002)(199004)(189003)(66556008)(64756008)(66476007)(66946007)(66446008)(2616005)(476003)(11346002)(486006)(446003)(386003)(6506007)(76176011)(6116002)(102836004)(186003)(26005)(2501003)(5660300002)(3846002)(14454004)(478600001)(14444005)(81156014)(81166006)(7736002)(2906002)(305945005)(256004)(110136005)(71200400001)(31696002)(86362001)(229853002)(316002)(6486002)(6512007)(66066001)(8936002)(4326008)(36756003)(6436002)(53936002)(99286004)(31686004)(71190400001)(54906003)(8676002)(52116002)(6246003)(25786009)(21314003); DIR:OUT; SFP:1102; SCL:1; SRVR:DB8PR08MB4572; H:DB8PR08MB5498.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: rnnpOz3KxFPA0fPvcrB3bnwX4dWpXobBCMDt07UoMTk7kJI0XWW9pNsOSnQ6vkwEtI7ugupqEMtKIme1hFq+QLMUTNIIZW0SUdCITEkI7CuBlQJLhUoilRm33up1jm7We3O9KFgQdQrKQXq+uOYyeXJ04KRop5Cq7thUi9lo4Ej+K5QTEEXdRSNv2I6FgIi595ZteZDGxehNVr+DcVHvl3gXn9wf/3aZJtscMVfDO9o2odNQn8B/H8jkCav7anzjCbVQm/dbf6gFeNrYNdnTvivqTtQ58IPLL61BH1CvveG+TWgVDjCeAoOXtoZIsu+HJE1SI3SdCvwsHJ38vSI5TRIQCrFEQi4LMG8oiXen4SdOS50DE+6RMcpfuWnqJuz8uAinVfUDhee/28ygEronVbOBtwKlGv8ArIPadhKLFRU= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c34f221-521c-49e9-82ac-08d72e003088 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2019 10:44:24.7906 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wFUAIoCJdW5xRikSUAR5CQkrOQmbrL/Y2KU0ShAtI9QNtw6+8uQ0XtsGfpTzOUu8ZmuIKgMqiDyrGtvVrzXZG689betEGjBjragf1nXHaas= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB4572 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.5.126 Subject: Re: [Qemu-devel] [PATCH v6 27/42] commit: Deal with filters X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "qemu-devel@nongnu.org" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" MDkuMDguMjAxOSAxOToxMywgTWF4IFJlaXR6IHdyb3RlOg0KPiBUaGlzIGluY2x1ZGVzIHNvbWUg cGVybWlzc2lvbiBsaW1pdGluZyAoZm9yIGV4YW1wbGUsIHdlIG9ubHkgbmVlZCB0bw0KPiB0YWtl IHRoZSBSRVNJWkUgcGVybWlzc2lvbiBpZiB0aGUgYmFzZSBpcyBzbWFsbGVyIHRoYW4gdGhlIHRv cCkuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNYXggUmVpdHogPG1yZWl0ekByZWRoYXQuY29tPg0K PiAtLS0NCj4gICBibG9jay9ibG9jay1iYWNrZW5kLmMgfCAxNiArKysrKy0tLQ0KPiAgIGJsb2Nr L2NvbW1pdC5jICAgICAgICB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0NCj4gICBibG9ja2Rldi5jICAgICAgICAgICAgfCAgNiArKy0NCj4gICAzIGZpbGVz IGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAt LWdpdCBhL2Jsb2NrL2Jsb2NrLWJhY2tlbmQuYyBiL2Jsb2NrL2Jsb2NrLWJhY2tlbmQuYw0KPiBp bmRleCBjMTNjNWM4M2IwLi4wYmM1OTJkMDIzIDEwMDY0NA0KPiAtLS0gYS9ibG9jay9ibG9jay1i YWNrZW5kLmMNCj4gKysrIGIvYmxvY2svYmxvY2stYmFja2VuZC5jDQo+IEBAIC0yMTgwLDExICsy MTgwLDE3IEBAIGludCBibGtfY29tbWl0X2FsbCh2b2lkKQ0KPiAgICAgICAgICAgQWlvQ29udGV4 dCAqYWlvX2NvbnRleHQgPSBibGtfZ2V0X2Fpb19jb250ZXh0KGJsayk7DQo+ICAgDQo+ICAgICAg ICAgICBhaW9fY29udGV4dF9hY3F1aXJlKGFpb19jb250ZXh0KTsNCj4gLSAgICAgICAgaWYgKGJs a19pc19pbnNlcnRlZChibGspICYmIGJsay0+cm9vdC0+YnMtPmJhY2tpbmcpIHsNCj4gLSAgICAg ICAgICAgIGludCByZXQgPSBiZHJ2X2NvbW1pdChibGstPnJvb3QtPmJzKTsNCj4gLSAgICAgICAg ICAgIGlmIChyZXQgPCAwKSB7DQo+IC0gICAgICAgICAgICAgICAgYWlvX2NvbnRleHRfcmVsZWFz ZShhaW9fY29udGV4dCk7DQo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAg ICAgaWYgKGJsa19pc19pbnNlcnRlZChibGspKSB7DQo+ICsgICAgICAgICAgICBCbG9ja0RyaXZl clN0YXRlICpub25fZmlsdGVyOw0KPiArDQo+ICsgICAgICAgICAgICAvKiBMZWdhY3kgZnVuY3Rp b24sIHNvIHNraXAgaW1wbGljaXQgZmlsdGVycyAqLw0KPiArICAgICAgICAgICAgbm9uX2ZpbHRl ciA9IGJkcnZfc2tpcF9pbXBsaWNpdF9maWx0ZXJzKGJsay0+cm9vdC0+YnMpOw0KPiArICAgICAg ICAgICAgaWYgKGJkcnZfZmlsdGVyZWRfY293X2NoaWxkKG5vbl9maWx0ZXIpKSB7DQo+ICsgICAg ICAgICAgICAgICAgaW50IHJldCA9IGJkcnZfY29tbWl0KG5vbl9maWx0ZXIpOw0KPiArICAgICAg ICAgICAgICAgIGlmIChyZXQgPCAwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgIGFpb19jb250 ZXh0X3JlbGVhc2UoYWlvX2NvbnRleHQpOw0KPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPiArICAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgICB9DQoNCmFuZCBpZiBu b25fZmlsdGVyIGlzIGV4cGxpY2l0IGZpbHRlciB3ZSBqdXN0IHNraXAgaXQuIEkgdGhpbmsgd2Un ZCBiZXR0ZXIgcmV0dXJuDQplcnJvciBpbiB0aGlzIGNhc2UuIEZvciBleGFtcGxlLCBqdXN0IGRy b3AgaWYgKGJkcnZfZmlsdGVyZWRfY293X2NoaWxkKSBhbmQgZ2V0DQpFTk9UU1VQIGZyb20gYmRy dl9jb21taXQgaW4gdGhpcyBjYXNlLg0KDQpBbmQgd2l0aCBhdCBsZWFzdCB0aGlzIGZpeGVkIEkn bSBPSyB3aXRoIHRoaXMgcGF0Y2g6DQoNClJldmlld2VkLWJ5OiBWbGFkaW1pciBTZW1lbnRzb3Yt T2dpZXZza2l5IDx2c2VtZW50c292QHZpcnR1b3p6by5jb20+DQoNCkhvd2V2ZXIgc29tZSBjb21t ZW50cyBiZWxvdzoNCg0KPiAgICAgICAgICAgfQ0KPiAgICAgICAgICAgYWlvX2NvbnRleHRfcmVs ZWFzZShhaW9fY29udGV4dCk7DQo+IGRpZmYgLS1naXQgYS9ibG9jay9jb21taXQuYyBiL2Jsb2Nr L2NvbW1pdC5jDQo+IGluZGV4IDVhNzY3MmM3YzcuLjQwZDFjOGVlYWMgMTAwNjQ0DQo+IC0tLSBh L2Jsb2NrL2NvbW1pdC5jDQo+ICsrKyBiL2Jsb2NrL2NvbW1pdC5jDQo+IEBAIC0zNyw2ICszNyw3 IEBAIHR5cGVkZWYgc3RydWN0IENvbW1pdEJsb2NrSm9iIHsNCj4gICAgICAgQmxvY2tCYWNrZW5k ICp0b3A7DQo+ICAgICAgIEJsb2NrQmFja2VuZCAqYmFzZTsNCj4gICAgICAgQmxvY2tEcml2ZXJT dGF0ZSAqYmFzZV9iczsNCj4gKyAgICBCbG9ja0RyaXZlclN0YXRlICphYm92ZV9iYXNlOw0KDQp5 b3UgY2FsbGVkIGl0IGJhc2Vfb3ZlcmxheSBpbiBtaXJyb3IsIHNlZW1zIGJldHRlciB0byBrZWVw IHNhbWUgbmFtaW5nDQoNCj4gICAgICAgQmxvY2tkZXZPbkVycm9yIG9uX2Vycm9yOw0KPiAgICAg ICBib29sIGJhc2VfcmVhZF9vbmx5Ow0KPiAgICAgICBib29sIGNoYWluX2Zyb3plbjsNCj4gQEAg LTExMCw3ICsxMTEsNyBAQCBzdGF0aWMgdm9pZCBjb21taXRfYWJvcnQoSm9iICpqb2IpDQo+ICAg ICAgICAqIFhYWCBDYW4gKG9yIHNob3VsZCkgd2Ugc29tZWhvdyBrZWVwICdjb25zaXN0ZW50IHJl YWQnIGJsb2NrZWQgZXZlbg0KPiAgICAgICAgKiBhZnRlciB0aGUgZmFpbGVkL2NhbmNlbGxlZCBj b21taXQgam9iIGlzIGdvbmU/IElmIHdlIGFscmVhZHkgd3JvdGUNCj4gICAgICAgICogc29tZXRo aW5nIHRvIGJhc2UsIHRoZSBpbnRlcm1lZGlhdGUgaW1hZ2VzIGFyZW4ndCB2YWxpZCBhbnkgbW9y ZS4gKi8NCj4gLSAgICBiZHJ2X3JlcGxhY2Vfbm9kZShzLT5jb21taXRfdG9wX2JzLCBiYWNraW5n X2JzKHMtPmNvbW1pdF90b3BfYnMpLA0KPiArICAgIGJkcnZfcmVwbGFjZV9ub2RlKHMtPmNvbW1p dF90b3BfYnMsIHMtPmNvbW1pdF90b3BfYnMtPmJhY2tpbmctPmJzLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAmZXJyb3JfYWJvcnQpOw0KPiAgIA0KPiAgICAgICBiZHJ2X3VucmVmKHMtPmNv bW1pdF90b3BfYnMpOw0KPiBAQCAtMTc0LDcgKzE3NSw3IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5l X2ZuIGNvbW1pdF9ydW4oSm9iICpqb2IsIEVycm9yICoqZXJycCkNCj4gICAgICAgICAgICAgICBi cmVhazsNCj4gICAgICAgICAgIH0NCj4gICAgICAgICAgIC8qIENvcHkgaWYgYWxsb2NhdGVkIGFi b3ZlIHRoZSBiYXNlICovDQo+IC0gICAgICAgIHJldCA9IGJkcnZfaXNfYWxsb2NhdGVkX2Fib3Zl KGJsa19icyhzLT50b3ApLCBibGtfYnMocy0+YmFzZSksIGZhbHNlLA0KPiArICAgICAgICByZXQg PSBiZHJ2X2lzX2FsbG9jYXRlZF9hYm92ZShibGtfYnMocy0+dG9wKSwgcy0+YWJvdmVfYmFzZSwg dHJ1ZSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwg Q09NTUlUX0JVRkZFUl9TSVpFLCAmbik7DQo+ICAgICAgICAgICBjb3B5ID0gKHJldCA9PSAxKTsN Cj4gICAgICAgICAgIHRyYWNlX2NvbW1pdF9vbmVfaXRlcmF0aW9uKHMsIG9mZnNldCwgbiwgcmV0 KTsNCj4gQEAgLTI2NywxNSArMjY4LDM1IEBAIHZvaWQgY29tbWl0X3N0YXJ0KGNvbnN0IGNoYXIg KmpvYl9pZCwgQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICAgICAgIENvbW1pdEJsb2NrSm9iICpz Ow0KPiAgICAgICBCbG9ja0RyaXZlclN0YXRlICppdGVyOw0KPiAgICAgICBCbG9ja0RyaXZlclN0 YXRlICpjb21taXRfdG9wX2JzID0gTlVMTDsNCj4gKyAgICBCbG9ja0RyaXZlclN0YXRlICpmaWx0 ZXJlZF9iYXNlOw0KPiAgICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsNCj4gKyAgICBpbnQ2 NF90IGJhc2Vfc2l6ZSwgdG9wX3NpemU7DQo+ICsgICAgdWludDY0X3QgcGVybXMsIGl0ZXJfc2hh cmVkX3Blcm1zOw0KPiAgICAgICBpbnQgcmV0Ow0KPiAgIA0KPiAgICAgICBhc3NlcnQodG9wICE9 IGJzKTsNCj4gLSAgICBpZiAodG9wID09IGJhc2UpIHsNCj4gKyAgICBpZiAoYmRydl9za2lwX3J3 X2ZpbHRlcnModG9wKSA9PSBiZHJ2X3NraXBfcndfZmlsdGVycyhiYXNlKSkgew0KPiAgICAgICAg ICAgZXJyb3Jfc2V0ZyhlcnJwLCAiSW52YWxpZCBmaWxlcyBmb3IgbWVyZ2U6IHRvcCBhbmQgYmFz ZSBhcmUgdGhlIHNhbWUiKTsNCj4gICAgICAgICAgIHJldHVybjsNCj4gICAgICAgfQ0KPiAgIA0K PiArICAgIGJhc2Vfc2l6ZSA9IGJkcnZfZ2V0bGVuZ3RoKGJhc2UpOw0KPiArICAgIGlmIChiYXNl X3NpemUgPCAwKSB7DQo+ICsgICAgICAgIGVycm9yX3NldGdfZXJybm8oZXJycCwgLWJhc2Vfc2l6 ZSwgIkNvdWxkIG5vdCBpbnF1aXJlIGJhc2UgaW1hZ2Ugc2l6ZSIpOw0KPiArICAgICAgICByZXR1 cm47DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgdG9wX3NpemUgPSBiZHJ2X2dldGxlbmd0aCh0b3Ap Ow0KPiArICAgIGlmICh0b3Bfc2l6ZSA8IDApIHsNCj4gKyAgICAgICAgZXJyb3Jfc2V0Z19lcnJu byhlcnJwLCAtdG9wX3NpemUsICJDb3VsZCBub3QgaW5xdWlyZSB0b3AgaW1hZ2Ugc2l6ZSIpOw0K PiArICAgICAgICByZXR1cm47DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcGVybXMgPSBCTEtfUEVS TV9DT05TSVNURU5UX1JFQUQgfCBCTEtfUEVSTV9XUklURTsNCj4gKyAgICBpZiAoYmFzZV9zaXpl IDwgdG9wX3NpemUpIHsNCj4gKyAgICAgICAgcGVybXMgfD0gQkxLX1BFUk1fUkVTSVpFOw0KPiAr ICAgIH0NCj4gKw0KPiAgICAgICBzID0gYmxvY2tfam9iX2NyZWF0ZShqb2JfaWQsICZjb21taXRf am9iX2RyaXZlciwgTlVMTCwgYnMsIDAsIEJMS19QRVJNX0FMTCwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3BlZWQsIGNyZWF0aW9uX2ZsYWdzLCBOVUxMLCBOVUxMLCBlcnJwKTsNCj4g ICAgICAgaWYgKCFzKSB7DQo+IEBAIC0zMTUsMTcgKzMzNiw0MyBAQCB2b2lkIGNvbW1pdF9zdGFy dChjb25zdCBjaGFyICpqb2JfaWQsIEJsb2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgIA0KPiAgICAg ICBzLT5jb21taXRfdG9wX2JzID0gY29tbWl0X3RvcF9iczsNCj4gICANCj4gLSAgICAvKiBCbG9j ayBhbGwgbm9kZXMgYmV0d2VlbiB0b3AgYW5kIGJhc2UsIGJlY2F1c2UgdGhleSB3aWxsDQo+IC0g ICAgICogZGlzYXBwZWFyIGZyb20gdGhlIGNoYWluIGFmdGVyIHRoaXMgb3BlcmF0aW9uLiAqLw0K PiAtICAgIGFzc2VydChiZHJ2X2NoYWluX2NvbnRhaW5zKHRvcCwgYmFzZSkpOw0KPiAtICAgIGZv ciAoaXRlciA9IHRvcDsgaXRlciAhPSBiYXNlOyBpdGVyID0gYmFja2luZ19icyhpdGVyKSkgew0K PiAtICAgICAgICAvKiBYWFggQkxLX1BFUk1fV1JJVEUgbmVlZHMgdG8gYmUgYWxsb3dlZCBzbyB3 ZSBkb24ndCBibG9jayBvdXJzZWx2ZXMNCj4gLSAgICAgICAgICogYXQgcy0+YmFzZSAoaWYgd3Jp dGVzIGFyZSBibG9ja2VkIGZvciBhIG5vZGUsIHRoZXkgYXJlIGFsc28gYmxvY2tlZA0KPiAtICAg ICAgICAgKiBmb3IgaXRzIGJhY2tpbmcgZmlsZSkuIFRoZSBvdGhlciBvcHRpb25zIHdvdWxkIGJl IGEgc2Vjb25kIGZpbHRlcg0KPiAtICAgICAgICAgKiBkcml2ZXIgYWJvdmUgcy0+YmFzZS4gKi8N Cg0KVGhpcyBjb2RlIHBhcnQgaXMgYWJzb2x1dGVseSBlcXVhbCB0byBjb3JyZXNwb25kaW5nIGlu IGJsb2NrL21pcnJvci5jLi4gSXQgd291bGQgYmUgZ3JlYXQNCnRvIHB1dCBpdCBpbnRvIGEgZnVu Y3Rpb24gYW5kIHJldXNlLiBIb3dldmVyIGl0cyBub3QgYWJvdXQgdGhlc2Ugc2VyaWVzLg0KDQo+ ICsgICAgLyoNCj4gKyAgICAgKiBCbG9jayBhbGwgbm9kZXMgYmV0d2VlbiB0b3AgYW5kIGJhc2Us IGJlY2F1c2UgdGhleSB3aWxsDQo+ICsgICAgICogZGlzYXBwZWFyIGZyb20gdGhlIGNoYWluIGFm dGVyIHRoaXMgb3BlcmF0aW9uLg0KPiArICAgICAqIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhh dCB0aGUgdXNlciBpcyBmaW5lIHdpdGggcmVtb3ZpbmcgYWxsDQo+ICsgICAgICogbm9kZXMgKGlu Y2x1ZGluZyBSL1cgZmlsdGVycykgYmV0d2VlbiB0b3AgYW5kIGJhc2UuICBBc3N1cmluZw0KPiAr ICAgICAqIHRoaXMgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBpbnRlcmZhY2UgKGkuZS4g d2hvZXZlciBjYWxscw0KPiArICAgICAqIGNvbW1pdF9zdGFydCgpKS4NCj4gKyAgICAgKi8NCj4g KyAgICBzLT5hYm92ZV9iYXNlID0gYmRydl9maW5kX292ZXJsYXkodG9wLCBiYXNlKTsNCj4gKyAg ICBhc3NlcnQocy0+YWJvdmVfYmFzZSk7DQo+ICsNCj4gKyAgICAvKg0KPiArICAgICAqIFRoZSB0 b3Btb3N0IG5vZGUgd2l0aA0KPiArICAgICAqIGJkcnZfc2tpcF9yd19maWx0ZXJzKGZpbHRlcmVk X2Jhc2UpID09IGJkcnZfc2tpcF9yd19maWx0ZXJzKGJhc2UpDQo+ICsgICAgICovDQo+ICsgICAg ZmlsdGVyZWRfYmFzZSA9IGJkcnZfZmlsdGVyZWRfY293X2JzKHMtPmFib3ZlX2Jhc2UpOw0KPiAr ICAgIGFzc2VydChiZHJ2X3NraXBfcndfZmlsdGVycyhmaWx0ZXJlZF9iYXNlKSA9PSBiZHJ2X3Nr aXBfcndfZmlsdGVycyhiYXNlKSk7DQo+ICsNCj4gKyAgICAvKg0KPiArICAgICAqIFhYWCBCTEtf UEVSTV9XUklURSBuZWVkcyB0byBiZSBhbGxvd2VkIHNvIHdlIGRvbid0IGJsb2NrIG91cnNlbHZl cw0KPiArICAgICAqIGF0IHMtPmJhc2UgKGlmIHdyaXRlcyBhcmUgYmxvY2tlZCBmb3IgYSBub2Rl LCB0aGV5IGFyZSBhbHNvIGJsb2NrZWQNCj4gKyAgICAgKiBmb3IgaXRzIGJhY2tpbmcgZmlsZSku IFRoZSBvdGhlciBvcHRpb25zIHdvdWxkIGJlIGEgc2Vjb25kIGZpbHRlcg0KPiArICAgICAqIGRy aXZlciBhYm92ZSBzLT5iYXNlLg0KPiArICAgICAqLw0KPiArICAgIGl0ZXJfc2hhcmVkX3Blcm1z ID0gQkxLX1BFUk1fV1JJVEVfVU5DSEFOR0VEIHwgQkxLX1BFUk1fV1JJVEU7DQo+ICsNCj4gKyAg ICBmb3IgKGl0ZXIgPSB0b3A7IGl0ZXIgIT0gYmFzZTsgaXRlciA9IGJkcnZfZmlsdGVyZWRfYnMo aXRlcikpIHsNCj4gKyAgICAgICAgaWYgKGl0ZXIgPT0gZmlsdGVyZWRfYmFzZSkgew0KPiArICAg ICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAqIEZyb20gaGVyZSBvbiwgYWxsIG5vZGVzIGFy ZSBmaWx0ZXJzIG9uIHRoZSBiYXNlLiAgVGhpcw0KPiArICAgICAgICAgICAgICogYWxsb3dzIHVz IHRvIHNoYXJlIEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRC4NCj4gKyAgICAgICAgICAgICAqLw0K PiArICAgICAgICAgICAgaXRlcl9zaGFyZWRfcGVybXMgfD0gQkxLX1BFUk1fQ09OU0lTVEVOVF9S RUFEOw0KPiArICAgICAgICB9DQo+ICsNCj4gICAgICAgICAgIHJldCA9IGJsb2NrX2pvYl9hZGRf YmRydigmcy0+Y29tbW9uLCAiaW50ZXJtZWRpYXRlIG5vZGUiLCBpdGVyLCAwLA0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQkxLX1BFUk1fV1JJVEVfVU5DSEFOR0VEIHwgQkxL X1BFUk1fV1JJVEUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwKTsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfc2hhcmVkX3Blcm1zLCBl cnJwKTsNCj4gICAgICAgICAgIGlmIChyZXQgPCAwKSB7DQo+ICAgICAgICAgICAgICAgZ290byBm YWlsOw0KPiAgICAgICAgICAgfQ0KPiBAQCAtMzQyLDkgKzM4OSw3IEBAIHZvaWQgY29tbWl0X3N0 YXJ0KGNvbnN0IGNoYXIgKmpvYl9pZCwgQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICAgICAgIH0N Cj4gICANCj4gICAgICAgcy0+YmFzZSA9IGJsa19uZXcocy0+Y29tbW9uLmpvYi5haW9fY29udGV4 dCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICBCTEtfUEVSTV9DT05TSVNURU5UX1JFQUQNCj4g LSAgICAgICAgICAgICAgICAgICAgICB8IEJMS19QRVJNX1dSSVRFDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgfCBCTEtfUEVSTV9SRVNJWkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgcGVy bXMsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRA0K PiAgICAgICAgICAgICAgICAgICAgICAgICB8IEJMS19QRVJNX0dSQVBIX01PRA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICB8IEJMS19QRVJNX1dSSVRFX1VOQ0hBTkdFRCk7DQo+IEBAIC00MTIs MTkgKzQ1NywyMiBAQCBpbnQgYmRydl9jb21taXQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpDQo+ICAg ICAgIGlmICghZHJ2KQ0KPiAgICAgICAgICAgcmV0dXJuIC1FTk9NRURJVU07DQo+ICAgDQo+IC0g ICAgaWYgKCFicy0+YmFja2luZykgew0KPiArICAgIGJhY2tpbmdfZmlsZV9icyA9IGJkcnZfZmls dGVyZWRfY293X2JzKGJzKTsNCg0KSG1tIGp1c3Qgbm90ZTogaWYgaW4gZnV0dXJlIHdlJ2xsIGhh dmUgY293IGNoaWxkIHdoaWNoIGlzIG5vdCBicy0+YmFja2luZywgYSBsb3Qgb2YgY29kZSB3aWxs DQpmYWlsLCBhcyB3ZSBhbHdheXMgYXNzdW1lIHRoYXQgY293IGNoaWxkIGlzIGJzLT5iYWNraW5n LiBNYXkgYmUsIHRoaXMgc2hvdWxkIGJlIGNvbW1lbnRlZCBpbg0KYmRydl9maWx0ZXJlZF9jb3df Y2hpbGQgaW1wbGVtZW50YXRpb24uDQoNCj4gKw0KPiArICAgIGlmICghYmFja2luZ19maWxlX2Jz KSB7DQo+ICAgICAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+ICAgICAgIH0NCj4gICANCj4gICAg ICAgaWYgKGJkcnZfb3BfaXNfYmxvY2tlZChicywgQkxPQ0tfT1BfVFlQRV9DT01NSVRfU09VUkNF LCBOVUxMKSB8fA0KPiAtICAgICAgICBiZHJ2X29wX2lzX2Jsb2NrZWQoYnMtPmJhY2tpbmctPmJz LCBCTE9DS19PUF9UWVBFX0NPTU1JVF9UQVJHRVQsIE5VTEwpKSB7DQo+ICsgICAgICAgIGJkcnZf b3BfaXNfYmxvY2tlZChiYWNraW5nX2ZpbGVfYnMsIEJMT0NLX09QX1RZUEVfQ09NTUlUX1RBUkdF VCwgTlVMTCkpDQo+ICsgICAgew0KPiAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsNCj4gICAgICAg fQ0KPiAgIA0KPiAtICAgIHJvID0gYnMtPmJhY2tpbmctPmJzLT5yZWFkX29ubHk7DQo+ICsgICAg cm8gPSBiYWNraW5nX2ZpbGVfYnMtPnJlYWRfb25seTsNCj4gICANCj4gICAgICAgaWYgKHJvKSB7 DQo+IC0gICAgICAgIGlmIChiZHJ2X3Jlb3Blbl9zZXRfcmVhZF9vbmx5KGJzLT5iYWNraW5nLT5i cywgZmFsc2UsIE5VTEwpKSB7DQo+ICsgICAgICAgIGlmIChiZHJ2X3Jlb3Blbl9zZXRfcmVhZF9v bmx5KGJhY2tpbmdfZmlsZV9icywgZmFsc2UsIE5VTEwpKSB7DQo+ICAgICAgICAgICAgICAgcmV0 dXJuIC1FQUNDRVM7DQo+ICAgICAgICAgICB9DQo+ICAgICAgIH0NCj4gQEAgLTQ0MCw4ICs0ODgs NiBAQCBpbnQgYmRydl9jb21taXQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpDQo+ICAgICAgIH0NCj4g ICANCj4gICAgICAgLyogSW5zZXJ0IGNvbW1pdF90b3AgYmxvY2sgbm9kZSBhYm92ZSBiYWNraW5n LCBzbyB3ZSBjYW4gd3JpdGUgdG8gaXQgKi8NCj4gLSAgICBiYWNraW5nX2ZpbGVfYnMgPSBiYWNr aW5nX2JzKGJzKTsNCj4gLQ0KPiAgICAgICBjb21taXRfdG9wX2JzID0gYmRydl9uZXdfb3Blbl9k cml2ZXIoJmJkcnZfY29tbWl0X3RvcCwgTlVMTCwgQkRSVl9PX1JEV1IsDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxfZXJyKTsNCj4gICAgICAgaWYg KGNvbW1pdF90b3BfYnMgPT0gTlVMTCkgew0KPiBAQCAtNTI2LDE1ICs1NzIsMTMgQEAgcm9fY2xl YW51cDoNCj4gICAgICAgcWVtdV92ZnJlZShidWYpOw0KPiAgIA0KPiAgICAgICBibGtfdW5yZWYo YmFja2luZyk7DQo+IC0gICAgaWYgKGJhY2tpbmdfZmlsZV9icykgew0KPiAtICAgICAgICBiZHJ2 X3NldF9iYWNraW5nX2hkKGJzLCBiYWNraW5nX2ZpbGVfYnMsICZlcnJvcl9hYm9ydCk7DQo+IC0g ICAgfQ0KPiArICAgIGJkcnZfc2V0X2JhY2tpbmdfaGQoYnMsIGJhY2tpbmdfZmlsZV9icywgJmVy cm9yX2Fib3J0KTsNCg0KUHJlZXhpc3RpbmcsIGJ1dCB3ZSBzaG91bGQgbm90IGRyb3AgZmlsdGVy IGlmIHdlIGRpZG4ndCBhZGRlZCBpdCAoaWYgd2UgZmFpbGVkIGFib3ZlIGZpbHRlcg0KaW5zZXJ0 aW9uKS4gWW91IGluY3JlYXNlZCBhbW91bnQgb2Ygc3VjaCBjYXNlcy4gTm8gZGFtYWdlIHN0aWxs Lg0KDQo+ICAgICAgIGJkcnZfdW5yZWYoY29tbWl0X3RvcF9icyk7DQo+ICAgICAgIGJsa191bnJl ZihzcmMpOw0KPiAgIA0KPiAgICAgICBpZiAocm8pIHsNCj4gICAgICAgICAgIC8qIGlnbm9yaW5n IGVycm9yIHJldHVybiBoZXJlICovDQo+IC0gICAgICAgIGJkcnZfcmVvcGVuX3NldF9yZWFkX29u bHkoYnMtPmJhY2tpbmctPmJzLCB0cnVlLCBOVUxMKTsNCj4gKyAgICAgICAgYmRydl9yZW9wZW5f c2V0X3JlYWRfb25seShiYWNraW5nX2ZpbGVfYnMsIHRydWUsIE5VTEwpOw0KPiAgICAgICB9DQo+ ICAgDQo+ICAgICAgIHJldHVybiByZXQ7DQo+IGRpZmYgLS1naXQgYS9ibG9ja2Rldi5jIGIvYmxv Y2tkZXYuYw0KPiBpbmRleCBjNmY3OWI0ZTBlLi43YmVmNDFjMGIwIDEwMDY0NA0KPiAtLS0gYS9i bG9ja2Rldi5jDQo+ICsrKyBiL2Jsb2NrZGV2LmMNCj4gQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZv aWQgaG1wX2NvbW1pdChNb25pdG9yICptb24sIGNvbnN0IFFEaWN0ICpxZGljdCkNCj4gICAgICAg ICAgICAgICByZXR1cm47DQo+ICAgICAgICAgICB9DQo+ICAgDQo+IC0gICAgICAgIGJzID0gYmxr X2JzKGJsayk7DQo+ICsgICAgICAgIGJzID0gYmRydl9za2lwX2ltcGxpY2l0X2ZpbHRlcnMoYmxr X2JzKGJsaykpOw0KPiAgICAgICAgICAgYWlvX2NvbnRleHQgPSBiZHJ2X2dldF9haW9fY29udGV4 dChicyk7DQo+ICAgICAgICAgICBhaW9fY29udGV4dF9hY3F1aXJlKGFpb19jb250ZXh0KTsNCj4g ICANCj4gQEAgLTM0NTQsNyArMzQ1NCw5IEBAIHZvaWQgcW1wX2Jsb2NrX2NvbW1pdChib29sIGhh c19qb2JfaWQsIGNvbnN0IGNoYXIgKmpvYl9pZCwgY29uc3QgY2hhciAqZGV2aWNlLA0KPiAgIA0K PiAgICAgICBhc3NlcnQoYmRydl9nZXRfYWlvX2NvbnRleHQoYmFzZV9icykgPT0gYWlvX2NvbnRl eHQpOw0KPiAgIA0KPiAtICAgIGZvciAoaXRlciA9IHRvcF9iczsgaXRlciAhPSBiYWNraW5nX2Jz KGJhc2VfYnMpOyBpdGVyID0gYmFja2luZ19icyhpdGVyKSkgew0KPiArICAgIGZvciAoaXRlciA9 IHRvcF9iczsgaXRlciAhPSBiZHJ2X2ZpbHRlcmVkX2JzKGJhc2VfYnMpOw0KPiArICAgICAgICAg aXRlciA9IGJkcnZfZmlsdGVyZWRfYnMoaXRlcikpDQo+ICsgICAgew0KPiAgICAgICAgICAgaWYg KGJkcnZfb3BfaXNfYmxvY2tlZChpdGVyLCBCTE9DS19PUF9UWVBFX0NPTU1JVF9UQVJHRVQsIGVy cnApKSB7DQo+ICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ICAgICAgICAgICB9DQo+IA0KDQot LSANCkJlc3QgcmVnYXJkcywNClZsYWRpbWlyDQo=