From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx9.didiglobal.com (mx9.didiglobal.com [111.202.70.124]) by smtp.subspace.kernel.org (Postfix) with SMTP id 78FDF2D739B; Thu, 7 May 2026 07:13:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=111.202.70.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778138047; cv=none; b=IP8SBNW/LTZib215dEjX3zwQ18gukvIUBRVkTOnQZgOVkxps+F0C8MNCp+OxZlJNm2BKSLqNtEPPbueDwDX4GPY4/dTwAXrByUl4ibCjBZVAnDlnDxOJQr2HqIDBU7xewuEqfETUE64h/ZofzqrHQQjo2SVc5V0rFCwHe67Gw6Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778138047; c=relaxed/simple; bh=iIclAj5kQkIXXrzte1p1jyMtGm3ylRX8DKxEGcIFVvU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:Content-Type: MIME-Version; b=e/t8u2/CrxK3q+gPBX9A9T3aDpEsEN3Jh0N8E726Bco37n+dgjmSAgCxG3qvseMo07li/ASIave/xY85yo56gCa/JdntF+amrcNOMRmzipJVs29eJ5cMz6YQ1fKaZnkO/u2QSOAFaMWi3xLEhUnU6lwBwrt6i5fLWc0kekFDQb4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com; spf=pass smtp.mailfrom=didiglobal.com; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b=XK+oK7E9; arc=none smtp.client-ip=111.202.70.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b="XK+oK7E9" Received: from mail.didiglobal.com (unknown [10.79.71.38]) by mx9.didiglobal.com (MailData Gateway V2.8.8) with ESMTPS id ED5601856952A8; Thu, 7 May 2026 15:11:47 +0800 (CST) Received: from BJ01-ACTMBX-09.didichuxing.com (10.79.64.19) by BJ03-ACTMBX-02.didichuxing.com (10.79.71.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Thu, 7 May 2026 15:13:43 +0800 Received: from BJ01-ACTMBX-09.didichuxing.com ([fe80::afc1:f51f:8c2d:1734]) by BJ01-ACTMBX-09.didichuxing.com ([fe80::afc1:f51f:8c2d:1734%6]) with mapi id 15.02.2562.017; Thu, 7 May 2026 15:13:43 +0800 X-MD-Sfrom: magiclinan@didiglobal.com X-MD-SrcIP: 10.79.71.38 From: =?utf-8?B?5p2O5qWgIE1hZ2ljIExp?= To: Xiao Ni , "linan666@huaweicloud.com" CC: "song@kernel.org" , "yukuai@fnnas.com" , "linux-raid@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "yangerkun@huawei.com" , "yi.zhang@huawei.com" , =?utf-8?B?5byg5ZCM5rWpIFRvbmdoYW8gWmhhbmc=?= Subject: Re: [PATCH v3 6/8] md/raid1,raid10: use folio for sync path IO Thread-Topic: [PATCH v3 6/8] md/raid1,raid10: use folio for sync path IO Thread-Index: AQHc3fEJKwyMx/AN9E+LsHxlOzCYUA== Date: Thu, 7 May 2026 07:13:43 +0000 Message-ID: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="utf-8" Content-ID: <30AB9DBA3DED444EB9DC7C65B0533E09@didichuxing.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=didiglobal.com; s=2025; t=1778137911; bh=iIclAj5kQkIXXrzte1p1jyMtGm3ylRX8DKxEGcIFVvU=; h=From:To:CC:Subject:Date:Message-ID:Content-Type; b=XK+oK7E9bl8ASP7tRuG2qAm7AfRqRr1HaM1WwGR0z4b8yROiYZ2FTcY8zPI57coX8 kkwbEuCiHfQi/FwN3Ag1TudSg1ZUB27EcTe2E6bTvP0pyYswU0QsVBX843sG5dzOxX 5zqvQlrByH/Y2AqI1hBNTs78HKXn9+3D9cf8HxzE= T24gVGh1IEFwciAzMCwgMjAyNiBhdCA5OjU0IEFNIENTVCwgWGlhbyBOaSB3cm90ZToNCj4gSGkg TmFuDQo+DQo+IE9uIFRodSwgQXByIDE2LCAyMDI2IGF0IDExOjU14oCvQU0gPGxpbmFuNjY2QGh1 YXdlaWNsb3VkLmNvbT4gd3JvdGU6DQo+Pg0KPj4gRnJvbTogTGkgTmFuIDxsaW5hbjEyMkBodWF3 ZWkuY29tPg0KPj4NCj4+IENvbnZlcnQgYWxsIElPIG9uIHRoZSBzeW5jIHBhdGggdG8gdXNlIGZv bGlvcywgYW5kIHJlbmFtZSBwYWdlLXJlbGF0ZWQNCj4+IGlkZW50aWZpZXJzIHRvIG1hdGNoIGZv bGlvLg0KPj4NCj4+IFNpbmNlIFJFU1lOQ19CTE9DS19TSVpFICg2NEspIGhhcyBoaWdoZXIgYWxs b2NhdGlvbiBmYWlsdXJlIGNoYW5jZSB0aGFuIDRrLA0KPj4gcmV0cnkgd2l0aCBsb3dlciBvcmRl cnMgdG8gaW1wcm92ZSBhbGxvY2F0aW9uIHJlbGlhYmlsaXR5LiBBIHIxLzEwX2JpbyBtYXkNCj4+ IGhhdmUgZGlmZmVyZW50IHJmLT5mb2xpbyBvcmRlcnMsIHNvIHVzZSBtaW5pbXVtIG9yZGVyIGFz IHIxLzEwX2JpbyBzZWN0b3JzDQo+PiB0byBwcmV2ZW50IGV4Y2VlZGluZyBzaXplIHdoZW4gYWRk aW5nIGZvbGlvIHRvIElPIGxhdGVyLg0KPj4NCj4+IENsZWFuIHVwOg0KPj4gMS4gUmVtb3ZlIHJl c3luY19nZXRfYWxsX2ZvbGlvKCkgYW5kIGludm9rZSBmb2xpb19nZXQoKSBkaXJlY3RseSBpbnN0 ZWFkLg0KPj4gMi4gQ2xlYW4gdXAgcmVkdW5kYW50IHdoaWxlKDApIGxvb3AgaW4gbWRfYmlvX3Jl c2V0X3Jlc3luY19mb2xpbygpLg0KPj4gMy4gQ2xlYW4gdXAgYmlvIHZhcmlhYmxlIGJ5IGRpcmVj dGx5IHJlZmVyZW5jaW5nIHIxMF9iaW8tPmRldnNbal0uYmlvDQo+PiAgICBpbnN0ZWFkIGluIHIx YnVmX3Bvb2xfYWxsb2MoKSBhbmQgcjEwYnVmX3Bvb2xfYWxsb2MoKS4NCj4+IDQuIENsZWFuIHVw IFJFU1lOQ19QQUdFUy4NCj4+IDUuIFJlbW92ZSByZXN5bmNfZmV0Y2hfZm9saW8oKSwgYWNjZXNz ICdyZi0+Zm9saW8nIGRpcmVjdGx5Lg0KPj4gNi4gUmVtb3ZlIHJlc3luY19mcmVlX2ZvbGlvKCks IGNhbGwgZm9saW9fcHV0KCkgZGlyZWN0bHkuDQo+PiA3LiBjbGVhbiB1cCBzeW5jIElPIHNpemUg Y2FsY3VsYXRpb24gaW4gcmFpZDEvMTBfc3luY19yZXF1ZXN0Lg0KPj4NCj4+IFNpZ25lZC1vZmYt Ynk6IExpIE5hbiA8bGluYW4xMjJAaHVhd2VpLmNvbT4NCj4+IC0tLQ0KPj4gIGRyaXZlcnMvbWQv bWQuYyAgICAgICB8ICAgMiArLQ0KPj4gIGRyaXZlcnMvbWQvcmFpZDEtMTAuYyB8ICA4MCArKysr LS0tLS0tLS0tDQo+PiAgZHJpdmVycy9tZC9yYWlkMS5jICAgIHwgMjA5ICsrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ICBkcml2ZXJzL21kL3JhaWQxMC5jICAgfCAyNTQgKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiAgNCBmaWxlcyBjaGFu Z2VkLCAyNDAgaW5zZXJ0aW9ucygrKSwgMzA1IGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMNCj4+IGluZGV4IDVlODM5MTRk NWMxNC4uNjU1NGI4NDlhYzc0IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZC9tZC5jDQo+PiAr KysgYi9kcml2ZXJzL21kL21kLmMNCj4+IEBAIC05NDQwLDcgKzk0NDAsNyBAQCBzdGF0aWMgYm9v bCBzeW5jX2lvX3dpdGhpbl9saW1pdChzdHJ1Y3QgbWRkZXYgKm1kZGV2KQ0KPj4gIHsNCj4+ICAg ICAgICAgLyoNCj4+ICAgICAgICAgICogRm9yIHJhaWQ0NTYsIHN5bmMgSU8gaXMgc3RyaXBlKDRr KSBwZXIgSU8sIGZvciBvdGhlciBsZXZlbHMsIGl0J3MNCj4+IC0gICAgICAgICogUkVTWU5DX1BB R0VTKDY0aykgcGVyIElPLg0KPj4gKyAgICAgICAgKiBSRVNZTkNfQkxPQ0tfU0laRSg2NGspIHBl ciBJTy4NCj4+ICAgICAgICAgICovDQo+PiAgICAgICAgIHJldHVybiBhdG9taWNfcmVhZCgmbWRk ZXYtPnJlY292ZXJ5X2FjdGl2ZSkgPA0KPj4gICAgICAgICAgICAgICAgKHJhaWRfaXNfNDU2KG1k ZGV2KSA/IDggOiAxMjgpICogc3luY19pb19kZXB0aChtZGRldik7DQo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZC9yYWlkMS0xMC5jIGIvZHJpdmVycy9tZC9yYWlkMS0xMC5jDQo+PiBpbmRleCBj ZGE1MzFkMDcyMGIuLjEwMjAwYjBhM2ZkMiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWQvcmFp ZDEtMTAuYw0KPj4gKysrIGIvZHJpdmVycy9tZC9yYWlkMS0xMC5jDQo+PiBAQCAtMSw3ICsxLDYg QEANCj4+ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gIC8qIE1heGlt dW0gc2l6ZSBvZiBlYWNoIHJlc3luYyByZXF1ZXN0ICovDQo+PiAgI2RlZmluZSBSRVNZTkNfQkxP Q0tfU0laRSAoNjQqMTAyNCkNCj4+IC0jZGVmaW5lIFJFU1lOQ19QQUdFUyAoKFJFU1lOQ19CTE9D S19TSVpFICsgUEFHRV9TSVpFLTEpIC8gUEFHRV9TSVpFKQ0KPj4gICNkZWZpbmUgUkVTWU5DX1NF Q1RPUlMgKFJFU1lOQ19CTE9DS19TSVpFID4+IDkpDQo+Pg0KPj4gIC8qIHdoZW4gd2UgZ2V0IGEg cmVhZCBlcnJvciBvbiBhIHJlYWQtb25seSBhcnJheSwgd2UgcmVkaXJlY3QgdG8gYW5vdGhlcg0K Pj4gQEAgLTIwLDkgKzE5LDkgQEANCj4+ICAjZGVmaW5lIE1BWF9QTFVHX0JJTyAzMg0KPj4NCj4+ ICAvKiBmb3IgbWFuYWdpbmcgcmVzeW5jIEkvTyBwYWdlcyAqLw0KPj4gLXN0cnVjdCByZXN5bmNf cGFnZXMgew0KPj4gK3N0cnVjdCByZXN5bmNfZm9saW8gew0KPj4gICAgICAgICB2b2lkICAgICAg ICAgICAgKnJhaWRfYmlvOw0KPj4gLSAgICAgICBzdHJ1Y3QgcGFnZSAgICAgKnBhZ2VzW1JFU1lO Q19QQUdFU107DQo+PiArICAgICAgIHN0cnVjdCBmb2xpbyAgICAqZm9saW87DQo+PiAgfTsNCj4+ DQo+PiAgc3RydWN0IHJhaWQxX3BsdWdfY2Igew0KPj4gQEAgLTM2LDc3ICszNSw0NCBAQCBzdGF0 aWMgdm9pZCByYmlvX3Bvb2xfZnJlZSh2b2lkICpyYmlvLCB2b2lkICpkYXRhKQ0KPj4gICAgICAg ICBrZnJlZShyYmlvKTsNCj4+ICB9DQo+Pg0KPj4gLXN0YXRpYyBpbmxpbmUgaW50IHJlc3luY19h bGxvY19wYWdlcyhzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpycCwNCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZnBfdCBnZnBfZmxhZ3MpDQo+PiArc3RhdGljIGlubGluZSBp bnQgcmVzeW5jX2FsbG9jX2ZvbGlvKHN0cnVjdCByZXN5bmNfZm9saW8gKnJmLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmcF90IGdmcF9mbGFncywgaW50ICpvcmRl cikNCj4+ICB7DQo+PiAtICAgICAgIGludCBpOw0KPj4gKyAgICAgICBzdHJ1Y3QgZm9saW8gKmZv bGlvOw0KPj4NCj4+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IFJFU1lOQ19QQUdFUzsgaSsrKSB7 DQo+PiAtICAgICAgICAgICAgICAgcnAtPnBhZ2VzW2ldID0gYWxsb2NfcGFnZShnZnBfZmxhZ3Mp Ow0KPj4gLSAgICAgICAgICAgICAgIGlmICghcnAtPnBhZ2VzW2ldKQ0KPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgZ290byBvdXRfZnJlZTsNCj4+IC0gICAgICAgfQ0KPj4gKyAgICAgICBkbyB7 DQo+PiArICAgICAgICAgICAgICAgZm9saW8gPSBmb2xpb19hbGxvYyhnZnBfZmxhZ3MsICpvcmRl cik7DQo+PiArICAgICAgICAgICAgICAgaWYgKGZvbGlvKQ0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+PiArICAgICAgIH0gd2hpbGUgKC0tKCpvcmRlcikgPiAwKTsNCj4NCj4g SXQgaGFzIGEgcHJvYmxlbSBoZXJlLiBJZiBpdCBjYW4ndCBhbGxvY2F0ZSBhIGJpZyBwYWdlLCB0 aGUgc3luYw0KPiByZXF1ZXN0IHVuaXQgd2lsbCBiZSBzbWFsbGVyIGFuZCBzeW5jIHBlcmZvcm1h bmNlIG1heSBkZWNyZWFzZS4gVGhpcw0KPiBjYW4gaGFwcGVuIHdoZW4gdGhlIHN5c3RlbSBsYWNr cyBzdWZmaWNpZW50IGNvbnRpbnVvdXMgbWVtb3J5LiBUaGlzDQo+IGNoYW5nZSBsb29rcyBnb29k IHRvIG1lLiBJIGp1c3Qgd2FudCB0byB0aHJvdyB0aGlzIHByb2JsZW0gb3V0IGZvciBhbg0KPiBv cGVuIGRpc2N1c3Npb24uDQo+DQoNClllYWgsIGl0IGNhbiBiZSBlYXNpbHkgcmVwcm9kdWNlZCBp biBxZW11LiBXZSBoYXZlIGEgZmV3IG9wdGlvbnM6DQogIDEuIEFsbG9jIHNtYWxsZXIgZm9saW8g DQogIDIuIFJldHVybiAtRU5PTUVNIGRpcmVjdGx5DQogIDMuIEFsbG9jIG11bHRpcGxlIHNtYWxs IGZvbGlvcyB0byBhc3NlbWJsZSBhIGxhcmdlciBvbmUuIEl0IGlzIG5vdCBhbmQNCiAgICAgZ29v ZCBpZGVhLCBhcyBpdCB3aWxsIG1ha2UgdGhlIGNvZGUgbXVjaCBtb3JlIGNvbXBsZXguDQoNCklN TywgMSBzZWVtcyBsaWtlIHRoZSBiZXN0IGNob2ljZS4NCg0KPj4NCj4+ICsgICAgICAgaWYgKCFm b2xpbykNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsgICAg ICAgcmYtPmZvbGlvID0gZm9saW87DQo+PiAgICAgICAgIHJldHVybiAwOw0KPj4gLQ0KPj4gLW91 dF9mcmVlOg0KPj4gLSAgICAgICB3aGlsZSAoLS1pID49IDApDQo+PiAtICAgICAgICAgICAgICAg cHV0X3BhZ2UocnAtPnBhZ2VzW2ldKTsNCj4+IC0gICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiAt fQ0KPj4gLQ0KPj4gLXN0YXRpYyBpbmxpbmUgdm9pZCByZXN5bmNfZnJlZV9wYWdlcyhzdHJ1Y3Qg cmVzeW5jX3BhZ2VzICpycCkNCj4+IC17DQo+PiAtICAgICAgIGludCBpOw0KPj4gLQ0KPj4gLSAg ICAgICBmb3IgKGkgPSAwOyBpIDwgUkVTWU5DX1BBR0VTOyBpKyspDQo+PiAtICAgICAgICAgICAg ICAgcHV0X3BhZ2UocnAtPnBhZ2VzW2ldKTsNCj4+IC19DQo+PiAtDQo+PiAtc3RhdGljIGlubGlu ZSB2b2lkIHJlc3luY19nZXRfYWxsX3BhZ2VzKHN0cnVjdCByZXN5bmNfcGFnZXMgKnJwKQ0KPj4g LXsNCj4+IC0gICAgICAgaW50IGk7DQo+PiAtDQo+PiAtICAgICAgIGZvciAoaSA9IDA7IGkgPCBS RVNZTkNfUEFHRVM7IGkrKykNCj4+IC0gICAgICAgICAgICAgICBnZXRfcGFnZShycC0+cGFnZXNb aV0pOw0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICpyZXN5bmNf ZmV0Y2hfcGFnZShzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpycCwNCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkeCkNCj4+IC17DQo+PiAtICAg ICAgIGlmIChXQVJOX09OX09OQ0UoaWR4ID49IFJFU1lOQ19QQUdFUykpDQo+PiAtICAgICAgICAg ICAgICAgcmV0dXJuIE5VTEw7DQo+PiAtICAgICAgIHJldHVybiBycC0+cGFnZXNbaWR4XTsNCj4+ ICB9DQo+Pg0KPj4gIC8qDQo+PiAtICogJ3N0cmN0IHJlc3luY19wYWdlcycgc3RvcmVzIGFjdHVh bCBwYWdlcyB1c2VkIGZvciBkb2luZyB0aGUgcmVzeW5jDQo+PiArICogJ3N0cmN0IHJlc3luY19m b2xpbycgc3RvcmVzIGFjdHVhbCBwYWdlcyB1c2VkIGZvciBkb2luZyB0aGUgcmVzeW5jDQo+PiAg ICogIElPLCBhbmQgaXQgaXMgcGVyLWJpbywgc28gbWFrZSAuYmlfcHJpdmF0ZSBwb2ludHMgdG8g aXQuDQo+PiAgICovDQo+PiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpnZXRf cmVzeW5jX3BhZ2VzKHN0cnVjdCBiaW8gKmJpbykNCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBy ZXN5bmNfZm9saW8gKmdldF9yZXN5bmNfZm9saW8oc3RydWN0IGJpbyAqYmlvKQ0KPj4gIHsNCj4+ ICAgICAgICAgcmV0dXJuIGJpby0+YmlfcHJpdmF0ZTsNCj4+ICB9DQo+Pg0KPj4gIC8qIGdlbmVy YWxseSBjYWxsZWQgYWZ0ZXIgYmlvX3Jlc2V0KCkgZm9yIHJlc2V0aW5nIGJ2ZWMgKi8NCj4+IC1z dGF0aWMgdm9pZCBtZF9iaW9fcmVzZXRfcmVzeW5jX3BhZ2VzKHN0cnVjdCBiaW8gKmJpbywgc3Ry dWN0IHJlc3luY19wYWdlcyAqcnAsDQo+PiArc3RhdGljIHZvaWQgbWRfYmlvX3Jlc2V0X3Jlc3lu Y19mb2xpbyhzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCByZXN5bmNfZm9saW8gKnJmLA0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQ0KPj4gIHsNCj4+IC0gICAgICAg aW50IGlkeCA9IDA7DQo+PiAtDQo+PiAgICAgICAgIC8qIGluaXRpYWxpemUgYnZlYyB0YWJsZSBh Z2FpbiAqLw0KPj4gLSAgICAgICBkbyB7DQo+PiAtICAgICAgICAgICAgICAgc3RydWN0IHBhZ2Ug KnBhZ2UgPSByZXN5bmNfZmV0Y2hfcGFnZShycCwgaWR4KTsNCj4+IC0gICAgICAgICAgICAgICBp bnQgbGVuID0gbWluX3QoaW50LCBzaXplLCBQQUdFX1NJWkUpOw0KPj4gLQ0KPj4gLSAgICAgICAg ICAgICAgIGlmIChXQVJOX09OKCFiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBsZW4sIDApKSkgew0K Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgYmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX1JFU09V UkNFOw0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgYmlvX2VuZGlvKGJpbyk7DQo+PiAtICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm47DQo+PiAtICAgICAgICAgICAgICAgfQ0KPj4gLQ0K Pj4gLSAgICAgICAgICAgICAgIHNpemUgLT0gbGVuOw0KPj4gLSAgICAgICB9IHdoaWxlIChpZHgr KyA8IFJFU1lOQ19QQUdFUyAmJiBzaXplID4gMCk7DQo+PiArICAgICAgIGlmIChXQVJOX09OKCFi aW9fYWRkX2ZvbGlvKGJpbywgcmYtPmZvbGlvLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtaW5fdChpbnQsIHNpemUsIFJFU1lOQ19CTE9DS19TSVpFKSwNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpKSB7DQo+PiArICAgICAgICAgICAgICAg YmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX1JFU09VUkNFOw0KPj4gKyAgICAgICAgICAgICAgIGJp b19lbmRpbyhiaW8pOw0KPj4gKyAgICAgICB9DQo+PiAgfQ0KPj4NCj4+DQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZC9yYWlkMS5jIGIvZHJpdmVycy9tZC9yYWlkMS5jDQo+PiBpbmRleCBhNzJh YmRjMzdhMmQuLjcyNGZkNGYyY2MzYSAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWQvcmFpZDEu Yw0KPj4gKysrIGIvZHJpdmVycy9tZC9yYWlkMS5jDQo+PiBAQCAtMTIwLDExICsxMjAsMTEgQEAg c3RhdGljIHZvaWQgcmVtb3ZlX3NlcmlhbChzdHJ1Y3QgbWRfcmRldiAqcmRldiwgc2VjdG9yX3Qg bG8sIHNlY3Rvcl90IGhpKQ0KPj4NCj4+ICAvKg0KPj4gICAqIGZvciByZXN5bmMgYmlvLCByMWJp byBwb2ludGVyIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGVyLWJpbw0KPj4gLSAqICdzdHJ1 Y3QgcmVzeW5jX3BhZ2VzJy4NCj4+ICsgKiAnc3RydWN0IHJlc3luY19mb2xpbycuDQo+PiAgICov DQo+PiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcjFiaW8gKmdldF9yZXN5bmNfcjFiaW8oc3RydWN0 IGJpbyAqYmlvKQ0KPj4gIHsNCj4+IC0gICAgICAgcmV0dXJuIGdldF9yZXN5bmNfcGFnZXMoYmlv KS0+cmFpZF9iaW87DQo+PiArICAgICAgIHJldHVybiBnZXRfcmVzeW5jX2ZvbGlvKGJpbyktPnJh aWRfYmlvOw0KPj4gIH0NCj4+DQo+PiAgc3RhdGljIHZvaWQgKnIxYmlvX3Bvb2xfYWxsb2MoZ2Zw X3QgZ2ZwX2ZsYWdzLCBzdHJ1Y3QgcjFjb25mICpjb25mKQ0KPj4gQEAgLTE0Niw3MCArMTQ2LDY5 IEBAIHN0YXRpYyB2b2lkICogcjFidWZfcG9vbF9hbGxvYyhnZnBfdCBnZnBfZmxhZ3MsIHZvaWQg KmRhdGEpDQo+PiAgICAgICAgIHN0cnVjdCByMWNvbmYgKmNvbmYgPSBkYXRhOw0KPj4gICAgICAg ICBzdHJ1Y3QgcjFiaW8gKnIxX2JpbzsNCj4+ICAgICAgICAgc3RydWN0IGJpbyAqYmlvOw0KPj4g LSAgICAgICBpbnQgbmVlZF9wYWdlczsNCj4+ICsgICAgICAgaW50IG5lZWRfZm9saW87DQo+DQo+ IFRoZSBuYW1lIG5lZWRfZm9saW8gaXMgY29uZnVzaW5nLiBDYW4gd2Uga2VlcCB0aGUgc2FtZSBz dHlsZSBhcyB0aGUNCj4gb2xkIHZlcnNpb24/IEhvdyBhYm91dCBuZWVkX2ZvbGlvcz8NCj4NCg0K QWdyZWUsIEkgd2lsbCByZW5hbWUgaXQgaW4gdjIuDQoNCj4+ICAgICAgICAgaW50IGo7DQo+PiAt ICAgICAgIHN0cnVjdCByZXN5bmNfcGFnZXMgKnJwczsNCj4+ICsgICAgICAgc3RydWN0IHJlc3lu Y19mb2xpbyAqcmZzOw0KPj4gKyAgICAgICBpbnQgb3JkZXIgPSBnZXRfb3JkZXIoUkVTWU5DX0JM T0NLX1NJWkUpOw0KPj4NCj4+ICAgICAgICAgcjFfYmlvID0gcjFiaW9fcG9vbF9hbGxvYyhnZnBf ZmxhZ3MsIGNvbmYpOw0KPj4gICAgICAgICBpZiAoIXIxX2JpbykNCj4+ICAgICAgICAgICAgICAg ICByZXR1cm4gTlVMTDsNCj4+DQo+PiAtICAgICAgIHJwcyA9IGttYWxsb2NfYXJyYXkoY29uZi0+ cmFpZF9kaXNrcyAqIDIsIHNpemVvZihzdHJ1Y3QgcmVzeW5jX3BhZ2VzKSwNCj4+ICsgICAgICAg cmZzID0ga21hbGxvY19hcnJheShjb25mLT5yYWlkX2Rpc2tzICogMiwgc2l6ZW9mKHN0cnVjdCBy ZXN5bmNfZm9saW8pLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmcF9mbGFncyk7 DQo+PiAtICAgICAgIGlmICghcnBzKQ0KPj4gKyAgICAgICBpZiAoIXJmcykNCj4+ICAgICAgICAg ICAgICAgICBnb3RvIG91dF9mcmVlX3IxYmlvOw0KPj4NCj4+ICAgICAgICAgLyoNCj4+ICAgICAg ICAgICogQWxsb2NhdGUgYmlvcyA6IDEgZm9yIHJlYWRpbmcsIG4tMSBmb3Igd3JpdGluZw0KPj4g ICAgICAgICAgKi8NCj4+ICAgICAgICAgZm9yIChqID0gY29uZi0+cmFpZF9kaXNrcyAqIDI7IGot LSA7ICkgew0KPj4gLSAgICAgICAgICAgICAgIGJpbyA9IGJpb19rbWFsbG9jKFJFU1lOQ19QQUdF UywgZ2ZwX2ZsYWdzKTsNCj4+ICsgICAgICAgICAgICAgICBiaW8gPSBiaW9fa21hbGxvYygxLCBn ZnBfZmxhZ3MpOw0KPj4gICAgICAgICAgICAgICAgIGlmICghYmlvKQ0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgZ290byBvdXRfZnJlZV9iaW87DQo+PiAtICAgICAgICAgICAgICAgYmlvX2lu aXRfaW5saW5lKGJpbywgTlVMTCwgUkVTWU5DX1BBR0VTLCAwKTsNCj4+ICsgICAgICAgICAgICAg ICBiaW9faW5pdF9pbmxpbmUoYmlvLCBOVUxMLCAxLCAwKTsNCj4+ICAgICAgICAgICAgICAgICBy MV9iaW8tPmJpb3Nbal0gPSBiaW87DQo+PiAgICAgICAgIH0NCj4+ICAgICAgICAgLyoNCj4+IC0g ICAgICAgICogQWxsb2NhdGUgUkVTWU5DX1BBR0VTIGRhdGEgcGFnZXMgYW5kIGF0dGFjaCB0aGVt IHRvDQo+PiAtICAgICAgICAqIHRoZSBmaXJzdCBiaW8uDQo+PiArICAgICAgICAqIEFsbG9jYXRl IGRhdGEgZm9saW8gYW5kIGF0dGFjaCBpdCB0byB0aGUgZmlyc3QgYmlvLg0KPj4gICAgICAgICAg KiBJZiB0aGlzIGlzIGEgdXNlci1yZXF1ZXN0ZWQgY2hlY2svcmVwYWlyLCBhbGxvY2F0ZQ0KPj4g LSAgICAgICAgKiBSRVNZTkNfUEFHRVMgZm9yIGVhY2ggYmlvLg0KPj4gKyAgICAgICAgKiBmb2xp byBmb3IgZWFjaCBiaW8uDQo+PiAgICAgICAgICAqLw0KPj4gICAgICAgICBpZiAodGVzdF9iaXQo TURfUkVDT1ZFUllfUkVRVUVTVEVELCAmY29uZi0+bWRkZXYtPnJlY292ZXJ5KSkNCj4+IC0gICAg ICAgICAgICAgICBuZWVkX3BhZ2VzID0gY29uZi0+cmFpZF9kaXNrcyAqIDI7DQo+PiArICAgICAg ICAgICAgICAgbmVlZF9mb2xpbyA9IGNvbmYtPnJhaWRfZGlza3MgKiAyOw0KPj4gICAgICAgICBl bHNlDQo+PiAtICAgICAgICAgICAgICAgbmVlZF9wYWdlcyA9IDE7DQo+PiArICAgICAgICAgICAg ICAgbmVlZF9mb2xpbyA9IDE7DQo+PiAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb25mLT5yYWlk X2Rpc2tzICogMjsgaisrKSB7DQo+PiAtICAgICAgICAgICAgICAgc3RydWN0IHJlc3luY19wYWdl cyAqcnAgPSAmcnBzW2pdOw0KPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCByZXN5bmNfZm9saW8g KnJmID0gJnJmc1tqXTsNCj4+DQo+PiAtICAgICAgICAgICAgICAgYmlvID0gcjFfYmlvLT5iaW9z W2pdOw0KPj4gLQ0KPj4gLSAgICAgICAgICAgICAgIGlmIChqIDwgbmVlZF9wYWdlcykgew0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3luY19hbGxvY19wYWdlcyhycCwgZ2ZwX2Zs YWdzKSkNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfZnJlZV9w YWdlczsNCj4+ICsgICAgICAgICAgICAgICBpZiAoaiA8IG5lZWRfZm9saW8pIHsNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChyZXN5bmNfYWxsb2NfZm9saW8ocmYsIGdmcF9mbGFncywg Jm9yZGVyKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfZnJl ZV9mb2xpbzsNCj4+ICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgbWVtY3B5KHJwLCAmcnBzWzBdLCBzaXplb2YoKnJwKSk7DQo+PiAtICAgICAgICAg ICAgICAgICAgICAgICByZXN5bmNfZ2V0X2FsbF9wYWdlcyhycCk7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBtZW1jcHkocmYsICZyZnNbMF0sIHNpemVvZigqcmYpKTsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGZvbGlvX2dldChyZi0+Zm9saW8pOw0KPj4gICAgICAgICAgICAgICAg IH0NCj4+DQo+PiAtICAgICAgICAgICAgICAgcnAtPnJhaWRfYmlvID0gcjFfYmlvOw0KPj4gLSAg ICAgICAgICAgICAgIGJpby0+YmlfcHJpdmF0ZSA9IHJwOw0KPj4gKyAgICAgICAgICAgICAgIHJm LT5yYWlkX2JpbyA9IHIxX2JpbzsNCj4+ICsgICAgICAgICAgICAgICByMV9iaW8tPmJpb3Nbal0t PmJpX3ByaXZhdGUgPSByZjsNCj4+ICAgICAgICAgfQ0KPj4NCj4+ICsgICAgICAgcjFfYmlvLT5z ZWN0b3JzID0gMSA8PCAob3JkZXIgKyBQQUdFX1NFQ1RPUlNfU0hJRlQpOw0KPj4gICAgICAgICBy MV9iaW8tPm1hc3Rlcl9iaW8gPSBOVUxMOw0KPj4NCj4+ICAgICAgICAgcmV0dXJuIHIxX2JpbzsN Cj4+DQo+PiAtb3V0X2ZyZWVfcGFnZXM6DQo+PiArb3V0X2ZyZWVfZm9saW86DQo+PiAgICAgICAg IHdoaWxlICgtLWogPj0gMCkNCj4+IC0gICAgICAgICAgICAgICByZXN5bmNfZnJlZV9wYWdlcygm cnBzW2pdKTsNCj4+ICsgICAgICAgICAgICAgICBmb2xpb19wdXQocmZzW2pdLmZvbGlvKTsNCj4+ DQo+PiAgb3V0X2ZyZWVfYmlvOg0KPj4gICAgICAgICB3aGlsZSAoKytqIDwgY29uZi0+cmFpZF9k aXNrcyAqIDIpIHsNCj4+ICAgICAgICAgICAgICAgICBiaW9fdW5pbml0KHIxX2Jpby0+Ymlvc1tq XSk7DQo+PiAgICAgICAgICAgICAgICAga2ZyZWUocjFfYmlvLT5iaW9zW2pdKTsNCj4+ICAgICAg ICAgfQ0KPj4gLSAgICAgICBrZnJlZShycHMpOw0KPj4gKyAgICAgICBrZnJlZShyZnMpOw0KPj4N Cj4+ICBvdXRfZnJlZV9yMWJpbzoNCj4+ICAgICAgICAgcmJpb19wb29sX2ZyZWUocjFfYmlvLCBk YXRhKTsNCj4+IEBAIC0yMjEsMTcgKzIyMCwxNyBAQCBzdGF0aWMgdm9pZCByMWJ1Zl9wb29sX2Zy ZWUodm9pZCAqX19yMV9iaW8sIHZvaWQgKmRhdGEpDQo+PiAgICAgICAgIHN0cnVjdCByMWNvbmYg KmNvbmYgPSBkYXRhOw0KPj4gICAgICAgICBpbnQgaTsNCj4+ICAgICAgICAgc3RydWN0IHIxYmlv ICpyMWJpbyA9IF9fcjFfYmlvOw0KPj4gLSAgICAgICBzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpycCA9 IE5VTEw7DQo+PiArICAgICAgIHN0cnVjdCByZXN5bmNfZm9saW8gKnJmID0gTlVMTDsNCj4+DQo+ PiAgICAgICAgIGZvciAoaSA9IGNvbmYtPnJhaWRfZGlza3MgKiAyOyBpLS07ICkgew0KPj4gLSAg ICAgICAgICAgICAgIHJwID0gZ2V0X3Jlc3luY19wYWdlcyhyMWJpby0+Ymlvc1tpXSk7DQo+PiAt ICAgICAgICAgICAgICAgcmVzeW5jX2ZyZWVfcGFnZXMocnApOw0KPj4gKyAgICAgICAgICAgICAg IHJmID0gZ2V0X3Jlc3luY19mb2xpbyhyMWJpby0+Ymlvc1tpXSk7DQo+PiArICAgICAgICAgICAg ICAgZm9saW9fcHV0KHJmLT5mb2xpbyk7DQo+PiAgICAgICAgICAgICAgICAgYmlvX3VuaW5pdChy MWJpby0+Ymlvc1tpXSk7DQo+PiAgICAgICAgICAgICAgICAga2ZyZWUocjFiaW8tPmJpb3NbaV0p Ow0KPj4gICAgICAgICB9DQo+Pg0KPj4gLSAgICAgICAvKiByZXN5bmMgcGFnZXMgYXJyYXkgc3Rv cmVkIGluIHRoZSAxc3QgYmlvJ3MgLmJpX3ByaXZhdGUgKi8NCj4+IC0gICAgICAga2ZyZWUocnAp Ow0KPj4gKyAgICAgICAvKiByZXN5bmMgZm9saW8gc3RvcmVkIGluIHRoZSAxc3QgYmlvJ3MgLmJp X3ByaXZhdGUgKi8NCj4+ICsgICAgICAga2ZyZWUocmYpOw0KPj4NCj4+ICAgICAgICAgcmJpb19w b29sX2ZyZWUocjFiaW8sIGRhdGEpOw0KPj4gIH0NCj4+IEBAIC0yMDk1LDEwICsyMDk0LDEwIEBA IHN0YXRpYyB2b2lkIGVuZF9zeW5jX3dyaXRlKHN0cnVjdCBiaW8gKmJpbykNCj4+ICAgICAgICAg cHV0X3N5bmNfd3JpdGVfYnVmKHIxX2Jpbyk7DQo+PiAgfQ0KPj4NCj4+IC1zdGF0aWMgaW50IHIx X3N5bmNfcGFnZV9pbyhzdHJ1Y3QgbWRfcmRldiAqcmRldiwgc2VjdG9yX3Qgc2VjdG9yLA0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlY3RvcnMsIHN0cnVjdCBwYWdlICpwYWdl LCBibGtfb3BmX3QgcncpDQo+PiArc3RhdGljIGludCByMV9zeW5jX2ZvbGlvX2lvKHN0cnVjdCBt ZF9yZGV2ICpyZGV2LCBzZWN0b3JfdCBzZWN0b3IsIGludCBzZWN0b3JzLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBvZmYsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJsa19vcGZf dCBydykNCj4+ICB7DQo+PiAtICAgICAgIGlmIChzeW5jX3BhZ2VfaW8ocmRldiwgc2VjdG9yLCBz ZWN0b3JzIDw8IDksIHBhZ2UsIHJ3LCBmYWxzZSkpDQo+PiArICAgICAgIGlmIChzeW5jX2ZvbGlv X2lvKHJkZXYsIHNlY3Rvciwgc2VjdG9ycyA8PCA5LCBvZmYsIGZvbGlvLCBydywgZmFsc2UpKQ0K Pj4gICAgICAgICAgICAgICAgIC8qIHN1Y2Nlc3MgKi8NCj4+ICAgICAgICAgICAgICAgICByZXR1 cm4gMTsNCj4+ICAgICAgICAgaWYgKHJ3ID09IFJFUV9PUF9XUklURSkgew0KPj4gQEAgLTIxMjks MTAgKzIxMjgsMTAgQEAgc3RhdGljIGludCBmaXhfc3luY19yZWFkX2Vycm9yKHN0cnVjdCByMWJp byAqcjFfYmlvKQ0KPj4gICAgICAgICBzdHJ1Y3QgbWRkZXYgKm1kZGV2ID0gcjFfYmlvLT5tZGRl djsNCj4+ICAgICAgICAgc3RydWN0IHIxY29uZiAqY29uZiA9IG1kZGV2LT5wcml2YXRlOw0KPj4g ICAgICAgICBzdHJ1Y3QgYmlvICpiaW8gPSByMV9iaW8tPmJpb3NbcjFfYmlvLT5yZWFkX2Rpc2td Ow0KPj4gLSAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gZ2V0X3Jlc3luY19wYWdlcyhiaW8p LT5wYWdlczsNCj4+ICsgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IGdldF9yZXN5bmNfZm9s aW8oYmlvKS0+Zm9saW87DQo+PiAgICAgICAgIHNlY3Rvcl90IHNlY3QgPSByMV9iaW8tPnNlY3Rv cjsNCj4+ICAgICAgICAgaW50IHNlY3RvcnMgPSByMV9iaW8tPnNlY3RvcnM7DQo+PiAtICAgICAg IGludCBpZHggPSAwOw0KPj4gKyAgICAgICBpbnQgb2ZmID0gMDsNCj4+ICAgICAgICAgc3RydWN0 IG1kX3JkZXYgKnJkZXY7DQo+Pg0KPj4gICAgICAgICByZGV2ID0gY29uZi0+bWlycm9yc1tyMV9i aW8tPnJlYWRfZGlza10ucmRldjsNCj4+IEBAIC0yMTYyLDkgKzIxNjEsOCBAQCBzdGF0aWMgaW50 IGZpeF9zeW5jX3JlYWRfZXJyb3Ioc3RydWN0IHIxYmlvICpyMV9iaW8pDQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIGFjdGl2ZSwgYW5kIHJlc3luYyBpcyBjdXJyZW50bHkg YWN0aXZlDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZGV2ID0gY29uZi0+bWlycm9yc1tkXS5yZGV2Ow0K Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3luY19wYWdlX2lvKHJkZXYs IHNlY3QsIHM8PDksDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFnZXNbaWR4XSwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSRVFfT1BfUkVBRCwgZmFsc2UpKSB7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChzeW5jX2ZvbGlvX2lvKHJkZXYsIHNlY3QsIHM8PDksIG9m ZiwgZm9saW8sDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJFUV9PUF9SRUFELCBmYWxzZSkpIHsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gMTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KPj4gQEAgLTIxOTcsNyArMjE5NSw3IEBAIHN0YXRpYyBpbnQgZml4X3N5bmNfcmVhZF9l cnJvcihzdHJ1Y3QgcjFiaW8gKnIxX2JpbykNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIC8q IFRyeSBuZXh0IHBhZ2UgKi8NCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3RvcnMgLT0g czsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3QgKz0gczsNCj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlkeCsrOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgb2ZmICs9IHMg PDwgOTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gICAgICAgICAg ICAgICAgIH0NCj4+DQo+PiBAQCAtMjIxMCw4ICsyMjA4LDcgQEAgc3RhdGljIGludCBmaXhfc3lu Y19yZWFkX2Vycm9yKHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHIxX2Jpby0+Ymlvc1tkXS0+YmlfZW5kX2lvICE9IGVuZF9zeW5jX3JlYWQpDQo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gICAgICAgICAg ICAgICAgICAgICAgICAgcmRldiA9IGNvbmYtPm1pcnJvcnNbZF0ucmRldjsNCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgIGlmIChyMV9zeW5jX3BhZ2VfaW8ocmRldiwgc2VjdCwgcywNCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXNbaWR4XSwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMV9zeW5jX2ZvbGlvX2lvKHJkZXYsIHNlY3Qs IHMsIG9mZiwgZm9saW8sDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJFUV9PUF9XUklURSkgPT0gMCkgew0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByMV9iaW8tPmJpb3NbZF0tPmJpX2VuZF9pbyA9IE5VTEw7DQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJkZXZfZGVjX3BlbmRpbmcocmRldiwgbWRkZXYpOw0KPj4g QEAgLTIyMjUsMTQgKzIyMjIsMTMgQEAgc3RhdGljIGludCBmaXhfc3luY19yZWFkX2Vycm9yKHN0 cnVjdCByMWJpbyAqcjFfYmlvKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIxX2Jp by0+Ymlvc1tkXS0+YmlfZW5kX2lvICE9IGVuZF9zeW5jX3JlYWQpDQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg cmRldiA9IGNvbmYtPm1pcnJvcnNbZF0ucmRldjsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAg IGlmIChyMV9zeW5jX3BhZ2VfaW8ocmRldiwgc2VjdCwgcywNCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXNbaWR4XSwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmIChyMV9zeW5jX2ZvbGlvX2lvKHJkZXYsIHNlY3QsIHMsIG9mZiwgZm9saW8s DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUV9PUF9S RUFEKSAhPSAwKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdG9taWNfYWRk KHMsICZyZGV2LT5jb3JyZWN0ZWRfZXJyb3JzKTsNCj4+ICAgICAgICAgICAgICAgICB9DQo+PiAg ICAgICAgICAgICAgICAgc2VjdG9ycyAtPSBzOw0KPj4gICAgICAgICAgICAgICAgIHNlY3QgKz0g czsNCj4+IC0gICAgICAgICAgICAgICBpZHggKys7DQo+PiArICAgICAgICAgICAgICAgb2ZmICs9 IHMgPDwgOTsNCj4+ICAgICAgICAgfQ0KPj4gICAgICAgICBzZXRfYml0KFIxQklPX1VwdG9kYXRl LCAmcjFfYmlvLT5zdGF0ZSk7DQo+PiAgICAgICAgIGJpby0+Ymlfc3RhdHVzID0gMDsNCj4+IEBA IC0yMjUyLDE0ICsyMjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfY2hlY2tzKHN0cnVjdCBy MWJpbyAqcjFfYmlvKQ0KPj4gICAgICAgICBzdHJ1Y3QgcjFjb25mICpjb25mID0gbWRkZXYtPnBy aXZhdGU7DQo+PiAgICAgICAgIGludCBwcmltYXJ5Ow0KPj4gICAgICAgICBpbnQgaTsNCj4+IC0g ICAgICAgaW50IHZjbnQ7DQo+Pg0KPj4gICAgICAgICAvKiBGaXggdmFyaWFibGUgcGFydHMgb2Yg YWxsIGJpb3MgKi8NCj4+IC0gICAgICAgdmNudCA9IChyMV9iaW8tPnNlY3RvcnMgKyBQQUdFX1NJ WkUgLyA1MTIgLSAxKSA+PiAoUEFHRV9TSElGVCAtIDkpOw0KPj4gICAgICAgICBmb3IgKGkgPSAw OyBpIDwgY29uZi0+cmFpZF9kaXNrcyAqIDI7IGkrKykgew0KPj4gICAgICAgICAgICAgICAgIGJs a19zdGF0dXNfdCBzdGF0dXM7DQo+PiAgICAgICAgICAgICAgICAgc3RydWN0IGJpbyAqYiA9IHIx X2Jpby0+Ymlvc1tpXTsNCj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpy cCA9IGdldF9yZXN5bmNfcGFnZXMoYik7DQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHJlc3lu Y19mb2xpbyAqcmYgPSBnZXRfcmVzeW5jX2ZvbGlvKGIpOw0KPj4gICAgICAgICAgICAgICAgIGlm IChiLT5iaV9lbmRfaW8gIT0gZW5kX3N5bmNfcmVhZCkNCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPj4gICAgICAgICAgICAgICAgIC8qIGZpeHVwIHRoZSBiaW8gZm9yIHJl dXNlLCBidXQgcHJlc2VydmUgZXJybm8gKi8NCj4+IEBAIC0yMjY5LDExICsyMjYzLDExIEBAIHN0 YXRpYyB2b2lkIHByb2Nlc3NfY2hlY2tzKHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KPj4gICAgICAg ICAgICAgICAgIGItPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3IgKw0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgY29uZi0+bWlycm9yc1tpXS5yZGV2LT5kYXRhX29mZnNldDsN Cj4+ICAgICAgICAgICAgICAgICBiLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFkOw0KPj4gLSAg ICAgICAgICAgICAgIHJwLT5yYWlkX2JpbyA9IHIxX2JpbzsNCj4+IC0gICAgICAgICAgICAgICBi LT5iaV9wcml2YXRlID0gcnA7DQo+PiArICAgICAgICAgICAgICAgcmYtPnJhaWRfYmlvID0gcjFf YmlvOw0KPj4gKyAgICAgICAgICAgICAgIGItPmJpX3ByaXZhdGUgPSByZjsNCj4+DQo+PiAgICAg ICAgICAgICAgICAgLyogaW5pdGlhbGl6ZSBidmVjIHRhYmxlIGFnYWluICovDQo+PiAtICAgICAg ICAgICAgICAgbWRfYmlvX3Jlc2V0X3Jlc3luY19wYWdlcyhiLCBycCwgcjFfYmlvLT5zZWN0b3Jz IDw8IDkpOw0KPj4gKyAgICAgICAgICAgICAgIG1kX2Jpb19yZXNldF9yZXN5bmNfZm9saW8oYiwg cmYsIHIxX2Jpby0+c2VjdG9ycyA8PCA5KTsNCj4+ICAgICAgICAgfQ0KPj4gICAgICAgICBmb3Ig KHByaW1hcnkgPSAwOyBwcmltYXJ5IDwgY29uZi0+cmFpZF9kaXNrcyAqIDI7IHByaW1hcnkrKykN Cj4+ICAgICAgICAgICAgICAgICBpZiAocjFfYmlvLT5iaW9zW3ByaW1hcnldLT5iaV9lbmRfaW8g PT0gZW5kX3N5bmNfcmVhZCAmJg0KPj4gQEAgLTIyODQsNDQgKzIyNzgsMzkgQEAgc3RhdGljIHZv aWQgcHJvY2Vzc19jaGVja3Moc3RydWN0IHIxYmlvICpyMV9iaW8pDQo+PiAgICAgICAgICAgICAg ICAgfQ0KPj4gICAgICAgICByMV9iaW8tPnJlYWRfZGlzayA9IHByaW1hcnk7DQo+PiAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBjb25mLT5yYWlkX2Rpc2tzICogMjsgaSsrKSB7DQo+PiAtICAgICAg ICAgICAgICAgaW50IGogPSAwOw0KPj4gICAgICAgICAgICAgICAgIHN0cnVjdCBiaW8gKnBiaW8g PSByMV9iaW8tPmJpb3NbcHJpbWFyeV07DQo+PiAgICAgICAgICAgICAgICAgc3RydWN0IGJpbyAq c2JpbyA9IHIxX2Jpby0+Ymlvc1tpXTsNCj4+ICAgICAgICAgICAgICAgICBibGtfc3RhdHVzX3Qg c3RhdHVzID0gc2Jpby0+Ymlfc3RhdHVzOw0KPj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBwYWdl ICoqcHBhZ2VzID0gZ2V0X3Jlc3luY19wYWdlcyhwYmlvKS0+cGFnZXM7DQo+PiAtICAgICAgICAg ICAgICAgc3RydWN0IHBhZ2UgKipzcGFnZXMgPSBnZXRfcmVzeW5jX3BhZ2VzKHNiaW8pLT5wYWdl czsNCj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgYmlvX3ZlYyAqYmk7DQo+PiAtICAgICAgICAg ICAgICAgaW50IHBhZ2VfbGVuW1JFU1lOQ19QQUdFU10gPSB7IDAgfTsNCj4+IC0gICAgICAgICAg ICAgICBzdHJ1Y3QgYnZlY19pdGVyX2FsbCBpdGVyX2FsbDsNCj4+ICsgICAgICAgICAgICAgICBz dHJ1Y3QgZm9saW8gKnBmb2xpbyA9IGdldF9yZXN5bmNfZm9saW8ocGJpbyktPmZvbGlvOw0KPj4g KyAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqc2ZvbGlvID0gZ2V0X3Jlc3luY19mb2xpbyhz YmlvKS0+Zm9saW87DQo+Pg0KPj4gICAgICAgICAgICAgICAgIGlmIChzYmlvLT5iaV9lbmRfaW8g IT0gZW5kX3N5bmNfcmVhZCkNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0K Pj4gICAgICAgICAgICAgICAgIC8qIE5vdyB3ZSBjYW4gJ2ZpeHVwJyB0aGUgZXJyb3IgdmFsdWUg Ki8NCj4+ICAgICAgICAgICAgICAgICBzYmlvLT5iaV9zdGF0dXMgPSAwOw0KPj4NCj4+IC0gICAg ICAgICAgICAgICBiaW9fZm9yX2VhY2hfc2VnbWVudF9hbGwoYmksIHNiaW8sIGl0ZXJfYWxsKQ0K Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9sZW5baisrXSA9IGJpLT5idl9sZW47DQo+ PiAtDQo+PiAtICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMpIHsNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIGZvciAoaiA9IHZjbnQ7IGotLSA7ICkgew0KPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAobWVtY21wKHBhZ2VfYWRkcmVzcyhwcGFnZXNbal0pLA0KPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfYWRkcmVzcyhzcGFn ZXNbal0pLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh Z2VfbGVuW2pdKSkNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIH0NCj4+IC0gICAgICAgICAgICAgICB9 IGVsc2UNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGogPSAwOw0KPj4gLSAgICAgICAgICAg ICAgIGlmIChqID49IDApDQo+PiArICAgICAgICAgICAgICAgLyoNCj4+ICsgICAgICAgICAgICAg ICAgKiBDb3B5IGRhdGEgYW5kIHN1Ym1pdCB3cml0ZSBpbiB0d28gY2FzZXM6DQo+PiArICAgICAg ICAgICAgICAgICogLSBJTyBlcnJvciAobm9uLXplcm8gc3RhdHVzKQ0KPj4gKyAgICAgICAgICAg ICAgICAqIC0gRGF0YSBpbmNvbnNpc3RlbmN5IGFuZCBub3QgYSBDSEVDSyBvcGVyYXRpb24uDQo+ PiArICAgICAgICAgICAgICAgICovDQo+PiArICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgew0K Pj4gICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljNjRfYWRkKHIxX2Jpby0+c2VjdG9ycywg Jm1kZGV2LT5yZXN5bmNfbWlzbWF0Y2hlcyk7DQo+PiAtICAgICAgICAgICAgICAgaWYgKGogPCAw IHx8ICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9DSEVDSywgJm1kZGV2LT5yZWNvdmVyeSkNCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFzdGF0dXMpKSB7DQo+PiAtICAgICAgICAg ICAgICAgICAgICAgICAvKiBObyBuZWVkIHRvIHdyaXRlIHRvIHRoaXMgZGV2aWNlLiAqLw0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgc2Jpby0+YmlfZW5kX2lvID0gTlVMTDsNCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgIHJkZXZfZGVjX3BlbmRpbmcoY29uZi0+bWlycm9yc1tpXS5yZGV2 LCBtZGRldik7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBiaW9fY29weV9kYXRhKHNiaW8s IHBiaW8pOw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+PiArICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChtZW1jbXAoZm9saW9fYWRkcmVzcyhwZm9saW8pLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZm9saW9fYWRkcmVzcyhzZm9saW8pLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcjFfYmlvLT5zZWN0b3JzIDw8IDkpKSB7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBhdG9taWM2NF9hZGQocjFfYmlvLT5zZWN0b3JzLCAmbWRkZXYtPnJlc3luY19t aXNtYXRjaGVzKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdF9iaXQoTURf UkVDT1ZFUllfQ0hFQ0ssICZtZGRldi0+cmVjb3ZlcnkpKSB7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJpb19jb3B5X2RhdGEoc2JpbywgcGJpbyk7DQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgfQ0KPj4gICAgICAgICAgICAgICAgIH0NCj4+DQo+PiAtICAgICAgICAgICAgICAgYmlvX2Nv cHlfZGF0YShzYmlvLCBwYmlvKTsNCj4+ICsgICAgICAgICAgICAgICAvKiBObyBuZWVkIHRvIHdy aXRlIHRvIHRoaXMgZGV2aWNlLiAqLw0KPj4gKyAgICAgICAgICAgICAgIHNiaW8tPmJpX2VuZF9p byA9IE5VTEw7DQo+PiArICAgICAgICAgICAgICAgcmRldl9kZWNfcGVuZGluZyhjb25mLT5taXJy b3JzW2ldLnJkZXYsIG1kZGV2KTsNCj4+ICAgICAgICAgfQ0KPj4gIH0NCj4+DQo+PiBAQCAtMjQ0 Niw5ICsyNDM1LDggQEAgc3RhdGljIHZvaWQgZml4X3JlYWRfZXJyb3Ioc3RydWN0IHIxY29uZiAq Y29uZiwgc3RydWN0IHIxYmlvICpyMV9iaW8pDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAocmRldiAmJg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0ZXN0X2JpdChGYXVs dHksICZyZGV2LT5mbGFncykpIHsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXRvbWljX2luYygmcmRldi0+bnJfcGVuZGluZyk7DQo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHIxX3N5bmNfcGFnZV9pbyhyZGV2LCBzZWN0LCBzLA0KPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fcGFnZShjb25mLT50bXBm b2xpbywgMCksDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSRVFfT1BfV1JJVEUpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy MV9zeW5jX2ZvbGlvX2lvKHJkZXYsIHNlY3QsIHMsIDAsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mLT50bXBmb2xpbywgUkVRX09QX1dSSVRF KTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRldl9kZWNfcGVuZGluZyhy ZGV2LCBtZGRldik7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiAgICAgICAgICAg ICAgICAgfQ0KPj4gQEAgLTI0NjEsOSArMjQ0OSw4IEBAIHN0YXRpYyB2b2lkIGZpeF9yZWFkX2Vy cm9yKHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHJkZXYgJiYNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhdGVzdF9iaXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpKSB7DQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJnJkZXYtPm5yX3BlbmRpbmcpOw0KPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocjFfc3luY19wYWdlX2lvKHJkZXYsIHNl Y3QsIHMsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb2xpb19wYWdlKGNvbmYtPnRtcGZvbGlvLCAwKSwNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUV9PUF9SRUFEKSkgew0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAocjFfc3luY19mb2xpb19pbyhyZGV2LCBzZWN0LCBz LCAwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uZi0+dG1wZm9saW8sIFJFUV9PUF9SRUFEKSkgew0KPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF0b21pY19hZGQocywgJnJkZXYtPmNvcnJlY3RlZF9lcnJvcnMp Ow0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByX2luZm8oIm1k L3JhaWQxOiVzOiByZWFkIGVycm9yIGNvcnJlY3RlZCAoJWQgc2VjdG9ycyBhdCAlbGx1IG9uICVw ZylcbiIsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtZG5hbWUobWRkZXYpLCBzLA0KPj4gQEAgLTI3MzgsMTUgKzI3MjUsMTUgQEAgc3RhdGljIGlu dCBpbml0X3Jlc3luYyhzdHJ1Y3QgcjFjb25mICpjb25mKQ0KPj4gIHN0YXRpYyBzdHJ1Y3QgcjFi aW8gKnJhaWQxX2FsbG9jX2luaXRfcjFidWYoc3RydWN0IHIxY29uZiAqY29uZikNCj4+ICB7DQo+ PiAgICAgICAgIHN0cnVjdCByMWJpbyAqcjFiaW8gPSBtZW1wb29sX2FsbG9jKCZjb25mLT5yMWJ1 Zl9wb29sLCBHRlBfTk9JTyk7DQo+PiAtICAgICAgIHN0cnVjdCByZXN5bmNfcGFnZXMgKnJwczsN Cj4+ICsgICAgICAgc3RydWN0IHJlc3luY19mb2xpbyAqcmZzOw0KPj4gICAgICAgICBzdHJ1Y3Qg YmlvICpiaW87DQo+PiAgICAgICAgIGludCBpOw0KPj4NCj4+ICAgICAgICAgZm9yIChpID0gY29u Zi0+cmFpZF9kaXNrcyAqIDI7IGktLTsgKSB7DQo+PiAgICAgICAgICAgICAgICAgYmlvID0gcjFi aW8tPmJpb3NbaV07DQo+PiAtICAgICAgICAgICAgICAgcnBzID0gYmlvLT5iaV9wcml2YXRlOw0K Pj4gKyAgICAgICAgICAgICAgIHJmcyA9IGJpby0+YmlfcHJpdmF0ZTsNCj4+ICAgICAgICAgICAg ICAgICBiaW9fcmVzZXQoYmlvLCBOVUxMLCAwKTsNCj4+IC0gICAgICAgICAgICAgICBiaW8tPmJp X3ByaXZhdGUgPSBycHM7DQo+PiArICAgICAgICAgICAgICAgYmlvLT5iaV9wcml2YXRlID0gcmZz Ow0KPj4gICAgICAgICB9DQo+PiAgICAgICAgIHIxYmlvLT5tYXN0ZXJfYmlvID0gTlVMTDsNCj4+ ICAgICAgICAgcmV0dXJuIHIxYmlvOw0KPj4gQEAgLTI3NzUsMTAgKzI3NjIsOSBAQCBzdGF0aWMg c2VjdG9yX3QgcmFpZDFfc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90 IHNlY3Rvcl9uciwNCj4+ICAgICAgICAgaW50IHdyaXRlX3RhcmdldHMgPSAwLCByZWFkX3Rhcmdl dHMgPSAwOw0KPj4gICAgICAgICBzZWN0b3JfdCBzeW5jX2Jsb2NrczsNCj4+ICAgICAgICAgYm9v bCBzdGlsbF9kZWdyYWRlZCA9IGZhbHNlOw0KPj4gLSAgICAgICBpbnQgZ29vZF9zZWN0b3JzID0g UkVTWU5DX1NFQ1RPUlM7DQo+PiArICAgICAgIGludCBnb29kX3NlY3RvcnM7DQo+PiAgICAgICAg IGludCBtaW5fYmFkID0gMDsgLyogbnVtYmVyIG9mIHNlY3RvcnMgdGhhdCBhcmUgYmFkIGluIGFs bCBkZXZpY2VzICovDQo+PiAgICAgICAgIGludCBpZHggPSBzZWN0b3JfdG9faWR4KHNlY3Rvcl9u cik7DQo+PiAtICAgICAgIGludCBwYWdlX2lkeCA9IDA7DQo+Pg0KPj4gICAgICAgICBpZiAoIW1l bXBvb2xfaW5pdGlhbGl6ZWQoJmNvbmYtPnIxYnVmX3Bvb2wpKQ0KPj4gICAgICAgICAgICAgICAg IGlmIChpbml0X3Jlc3luYyhjb25mKSkNCj4+IEBAIC0yODU4LDggKzI4NDQsMTEgQEAgc3RhdGlj IHNlY3Rvcl90IHJhaWQxX3N5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3Jf dCBzZWN0b3JfbnIsDQo+PiAgICAgICAgIHIxX2Jpby0+c2VjdG9yID0gc2VjdG9yX25yOw0KPj4g ICAgICAgICByMV9iaW8tPnN0YXRlID0gMDsNCj4+ICAgICAgICAgc2V0X2JpdChSMUJJT19Jc1N5 bmMsICZyMV9iaW8tPnN0YXRlKTsNCj4+IC0gICAgICAgLyogbWFrZSBzdXJlIGdvb2Rfc2VjdG9y cyB3b24ndCBnbyBhY3Jvc3MgYmFycmllciB1bml0IGJvdW5kYXJ5ICovDQo+PiAtICAgICAgIGdv b2Rfc2VjdG9ycyA9IGFsaWduX3RvX2JhcnJpZXJfdW5pdF9lbmQoc2VjdG9yX25yLCBnb29kX3Nl Y3RvcnMpOw0KPj4gKyAgICAgICAvKg0KPj4gKyAgICAgICAgKiBtYWtlIHN1cmUgZ29vZF9zZWN0 b3JzIHdvbid0IGdvIGFjcm9zcyBiYXJyaWVyIHVuaXQgYm91bmRhcnkuDQo+PiArICAgICAgICAq IHIxX2Jpby0+c2VjdG9ycyA8PSBSRVNZTkNfU0VDVE9SUy4NCj4+ICsgICAgICAgICovDQo+PiAr ICAgICAgIGdvb2Rfc2VjdG9ycyA9IGFsaWduX3RvX2JhcnJpZXJfdW5pdF9lbmQoc2VjdG9yX25y LCByMV9iaW8tPnNlY3RvcnMpOw0KPj4NCj4+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmYt PnJhaWRfZGlza3MgKiAyOyBpKyspIHsNCj4+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWRfcmRl diAqcmRldjsNCj4+IEBAIC0yOTc5LDQ0ICsyOTY4LDI4IEBAIHN0YXRpYyBzZWN0b3JfdCByYWlk MV9zeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLA0K Pj4gICAgICAgICAgICAgICAgIG1heF9zZWN0b3IgPSBtZGRldi0+cmVzeW5jX21heDsgLyogRG9u J3QgZG8gSU8gYmV5b25kIGhlcmUgKi8NCj4+ICAgICAgICAgaWYgKG1heF9zZWN0b3IgPiBzZWN0 b3JfbnIgKyBnb29kX3NlY3RvcnMpDQo+PiAgICAgICAgICAgICAgICAgbWF4X3NlY3RvciA9IHNl Y3Rvcl9uciArIGdvb2Rfc2VjdG9yczsNCj4+IC0gICAgICAgbnJfc2VjdG9ycyA9IDA7DQo+PiAt ICAgICAgIHN5bmNfYmxvY2tzID0gMDsNCj4+ICAgICAgICAgZG8gew0KPj4gLSAgICAgICAgICAg ICAgIHN0cnVjdCBwYWdlICpwYWdlOw0KPj4gLSAgICAgICAgICAgICAgIGludCBsZW4gPSBQQUdF X1NJWkU7DQo+PiAtICAgICAgICAgICAgICAgaWYgKHNlY3Rvcl9uciArIChsZW4+PjkpID4gbWF4 X3NlY3RvcikNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IChtYXhfc2VjdG9yIC0g c2VjdG9yX25yKSA8PCA5Ow0KPj4gLSAgICAgICAgICAgICAgIGlmIChsZW4gPT0gMCkNCj4+ICsg ICAgICAgICAgICAgICBucl9zZWN0b3JzID0gbWF4X3NlY3RvciAtIHNlY3Rvcl9ucjsNCj4+ICsg ICAgICAgICAgICAgICBpZiAobnJfc2VjdG9ycyA9PSAwKQ0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+PiAtICAgICAgICAgICAgICAgaWYgKHN5bmNfYmxvY2tzID09IDApIHsN Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICghbWRfYml0bWFwX3N0YXJ0X3N5bmMobWRk ZXYsIHNlY3Rvcl9uciwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnN5bmNfYmxvY2tzLCBzdGlsbF9kZWdyYWRlZCkgJiYNCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAhY29uZi0+ZnVsbHN5bmMgJiYNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAhdGVzdF9iaXQoTURfUkVDT1ZFUllfUkVRVUVTVEVELCAmbWRkZXYtPnJl Y292ZXJ5KSkNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAt ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA+PiA5KSA+IHN5bmNfYmxvY2tzKQ0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBzeW5jX2Jsb2Nrczw8OTsNCj4+ IC0gICAgICAgICAgICAgICB9DQo+PiArICAgICAgICAgICAgICAgaWYgKCFtZF9iaXRtYXBfc3Rh cnRfc3luYyhtZGRldiwgc2VjdG9yX25yLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnN5bmNfYmxvY2tzLCBzdGlsbF9kZWdyYWRlZCkgJiYNCj4+ICsgICAg ICAgICAgICAgICAgICAgIWNvbmYtPmZ1bGxzeW5jICYmDQo+PiArICAgICAgICAgICAgICAgICAg ICF0ZXN0X2JpdChNRF9SRUNPVkVSWV9SRVFVRVNURUQsICZtZGRldi0+cmVjb3ZlcnkpKQ0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICAgICAgICAgaWYgKG5y X3NlY3RvcnMgPiBzeW5jX2Jsb2NrcykNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG5yX3Nl Y3RvcnMgPSBzeW5jX2Jsb2NrczsNCj4+DQo+PiAgICAgICAgICAgICAgICAgZm9yIChpID0gMCA7 IGkgPCBjb25mLT5yYWlkX2Rpc2tzICogMjsgaSsrKSB7DQo+PiAtICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpycDsNCj4+IC0NCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGJpbyA9IHIxX2Jpby0+Ymlvc1tpXTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAg IHJwID0gZ2V0X3Jlc3luY19wYWdlcyhiaW8pOw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGJpby0+YmlfZW5kX2lvKSB7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZ2UgPSByZXN5bmNfZmV0Y2hfcGFnZShycCwgcGFnZV9pZHgpOw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVzeW5jX2ZvbGlvICpyZiA9IGdldF9yZXN5bmNf Zm9saW8oYmlvKTsNCj4+DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvbid0IGZhaWwgYmVjYXVzZSB0 aGUgdmVjIHRhYmxlIGlzIGJpZw0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KiBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlc2UgcGFnZXMNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYmlv X2FkZF9wYWdlKGJpbywgcGFnZSwgbGVuLCAwKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYmlvX2FkZF9mb2xpb19ub2ZhaWwoYmlvLCByZi0+Zm9saW8sIG5yX3NlY3RvcnMg PDwgOSwgMCk7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiAgICAgICAgICAgICAg ICAgfQ0KPj4gLSAgICAgICAgICAgICAgIG5yX3NlY3RvcnMgKz0gbGVuPj45Ow0KPj4gLSAgICAg ICAgICAgICAgIHNlY3Rvcl9uciArPSBsZW4+Pjk7DQo+PiAtICAgICAgICAgICAgICAgc3luY19i bG9ja3MgLT0gKGxlbj4+OSk7DQo+PiAtICAgICAgIH0gd2hpbGUgKCsrcGFnZV9pZHggPCBSRVNZ TkNfUEFHRVMpOw0KPj4gKyAgICAgICAgICAgICAgIHNlY3Rvcl9uciArPSBucl9zZWN0b3JzOw0K Pj4gKyAgICAgICB9IHdoaWxlICgwKTsNCj4NCj4gTm93IGl0IGNhbiBoYW5kbGUgYWxsIHBhZ2Vz IGluIG9uZSBnbyB2aWEgYSBmb2xpby4gSXQncyBzdHJhbmdlIHRvDQo+IGtlZXAgd2hpbGUoMCkg aGVyZS4NCj4NCg0KSSB0cmllZCBjbGVhbm5pbmcgdXAgd2hpbGUoMCksIGl0IG1hZGUgJ2lmJyBh bmQgJ2JyZWFrJyBzdGF0ZW1lbnRzDQp1bnJlYWRhYmxlLiBTbyBJIGtlcHQgd2hpbGUoMCkgaGVy ZS4NCg0KPg0KPj4NCj4+ICAgICAgICAgcjFfYmlvLT5zZWN0b3JzID0gbnJfc2VjdG9yczsNCj4N Cj4NCj4gVGhpcyBwYXRjaCBpcyBhIGxpdHRsZSBiaWcuIElzIGl0IGJldHRlciB0byBzcGxpdCB0 aGlzIHBhdGNoIGhlcmU/DQo+DQoNCkl0IGNhbid0IGJlIHNwbGl0dGVkLiBUaGUgY2hhbmdlcyBp biByYWlkMS5jIGFuZCByYWlkMTAuYyBhcmUgZW50aXJlbHkgYWJvdXQNCnJlc3luY19wYWdlcyAt PiByZXN5bmNfZm9saW8uIFdlIGhhdmUgdG8gY2hhbmdlIGRlY2xhcmF0aW9uIGFuZCBpdHMgdXNh Z2UgaW4NCm9uZSBwYXRjaC4NCg0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQx MC5jIGIvZHJpdmVycy9tZC9yYWlkMTAuYw0KPj4gaW5kZXggMjZmOTMwNDBjZDEzLi4zNjM4ZTAw ZmU0MjAgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21kL3JhaWQxMC5jDQo+PiArKysgYi9kcml2 ZXJzL21kL3JhaWQxMC5jDQo+PiBAQCAtOTYsMTEgKzk2LDExIEBAIHN0YXRpYyB2b2lkIGVuZF9y ZXNoYXBlKHN0cnVjdCByMTBjb25mICpjb25mKTsNCj4+DQo+PiAgLyoNCj4+ICAgKiBmb3IgcmVz eW5jIGJpbywgcjEwYmlvIHBvaW50ZXIgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBwZXItYmlv DQo+PiAtICogJ3N0cnVjdCByZXN5bmNfcGFnZXMnLg0KPj4gKyAqICdzdHJ1Y3QgcmVzeW5jX2Zv bGlvJy4NCj4+ICAgKi8NCj4+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCByMTBiaW8gKmdldF9yZXN5 bmNfcjEwYmlvKHN0cnVjdCBiaW8gKmJpbykNCj4+ICB7DQo+PiAtICAgICAgIHJldHVybiBnZXRf cmVzeW5jX3BhZ2VzKGJpbyktPnJhaWRfYmlvOw0KPj4gKyAgICAgICByZXR1cm4gZ2V0X3Jlc3lu Y19mb2xpbyhiaW8pLT5yYWlkX2JpbzsNCj4+ICB9DQo+Pg0KPj4gIHN0YXRpYyB2b2lkICogcjEw YmlvX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2ZwX2ZsYWdzLCB2b2lkICpkYXRhKQ0KPj4gQEAgLTEzMyw4 ICsxMzMsOSBAQCBzdGF0aWMgdm9pZCAqIHIxMGJ1Zl9wb29sX2FsbG9jKGdmcF90IGdmcF9mbGFn cywgdm9pZCAqZGF0YSkNCj4+ICAgICAgICAgc3RydWN0IHIxMGJpbyAqcjEwX2JpbzsNCj4+ICAg ICAgICAgc3RydWN0IGJpbyAqYmlvOw0KPj4gICAgICAgICBpbnQgajsNCj4+IC0gICAgICAgaW50 IG5hbGxvYywgbmFsbG9jX3JwOw0KPj4gLSAgICAgICBzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpycHM7 DQo+PiArICAgICAgIGludCBuYWxsb2MsIG5hbGxvY19yZjsNCj4+ICsgICAgICAgc3RydWN0IHJl c3luY19mb2xpbyAqcmZzOw0KPj4gKyAgICAgICBpbnQgb3JkZXIgPSBnZXRfb3JkZXIoUkVTWU5D X0JMT0NLX1NJWkUpOw0KPj4NCj4+ICAgICAgICAgcjEwX2JpbyA9IHIxMGJpb19wb29sX2FsbG9j KGdmcF9mbGFncywgY29uZik7DQo+PiAgICAgICAgIGlmICghcjEwX2JpbykNCj4+IEBAIC0xNDgs NjYgKzE0OSw2NCBAQCBzdGF0aWMgdm9pZCAqIHIxMGJ1Zl9wb29sX2FsbG9jKGdmcF90IGdmcF9m bGFncywgdm9pZCAqZGF0YSkNCj4+DQo+PiAgICAgICAgIC8qIGFsbG9jYXRlIG9uY2UgZm9yIGFs bCBiaW9zICovDQo+PiAgICAgICAgIGlmICghY29uZi0+aGF2ZV9yZXBsYWNlbWVudCkNCj4+IC0g ICAgICAgICAgICAgICBuYWxsb2NfcnAgPSBuYWxsb2M7DQo+PiArICAgICAgICAgICAgICAgbmFs bG9jX3JmID0gbmFsbG9jOw0KPj4gICAgICAgICBlbHNlDQo+PiAtICAgICAgICAgICAgICAgbmFs bG9jX3JwID0gbmFsbG9jICogMjsNCj4+IC0gICAgICAgcnBzID0ga21hbGxvY19hcnJheShuYWxs b2NfcnAsIHNpemVvZihzdHJ1Y3QgcmVzeW5jX3BhZ2VzKSwgZ2ZwX2ZsYWdzKTsNCj4+IC0gICAg ICAgaWYgKCFycHMpDQo+PiArICAgICAgICAgICAgICAgbmFsbG9jX3JmID0gbmFsbG9jICogMjsN Cj4+ICsgICAgICAgcmZzID0ga21hbGxvY19hcnJheShuYWxsb2NfcmYsIHNpemVvZihzdHJ1Y3Qg cmVzeW5jX2ZvbGlvKSwgZ2ZwX2ZsYWdzKTsNCj4+ICsgICAgICAgaWYgKCFyZnMpDQo+PiAgICAg ICAgICAgICAgICAgZ290byBvdXRfZnJlZV9yMTBiaW87DQo+Pg0KPj4gICAgICAgICAvKg0KPj4g ICAgICAgICAgKiBBbGxvY2F0ZSBiaW9zLg0KPj4gICAgICAgICAgKi8NCj4+ICAgICAgICAgZm9y IChqID0gbmFsbG9jIDsgai0tIDsgKSB7DQo+PiAtICAgICAgICAgICAgICAgYmlvID0gYmlvX2tt YWxsb2MoUkVTWU5DX1BBR0VTLCBnZnBfZmxhZ3MpOw0KPj4gKyAgICAgICAgICAgICAgIGJpbyA9 IGJpb19rbWFsbG9jKDEsIGdmcF9mbGFncyk7DQo+PiAgICAgICAgICAgICAgICAgaWYgKCFiaW8p DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9mcmVlX2JpbzsNCj4+IC0gICAg ICAgICAgICAgICBiaW9faW5pdF9pbmxpbmUoYmlvLCBOVUxMLCBSRVNZTkNfUEFHRVMsIDApOw0K Pj4gKyAgICAgICAgICAgICAgIGJpb19pbml0X2lubGluZShiaW8sIE5VTEwsIDEsIDApOw0KPj4g ICAgICAgICAgICAgICAgIHIxMF9iaW8tPmRldnNbal0uYmlvID0gYmlvOw0KPj4gICAgICAgICAg ICAgICAgIGlmICghY29uZi0+aGF2ZV9yZXBsYWNlbWVudCkNCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPj4gLSAgICAgICAgICAgICAgIGJpbyA9IGJpb19rbWFsbG9jKFJF U1lOQ19QQUdFUywgZ2ZwX2ZsYWdzKTsNCj4+ICsgICAgICAgICAgICAgICBiaW8gPSBiaW9fa21h bGxvYygxLCBnZnBfZmxhZ3MpOw0KPj4gICAgICAgICAgICAgICAgIGlmICghYmlvKQ0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfZnJlZV9iaW87DQo+PiAtICAgICAgICAgICAg ICAgYmlvX2luaXRfaW5saW5lKGJpbywgTlVMTCwgUkVTWU5DX1BBR0VTLCAwKTsNCj4+ICsgICAg ICAgICAgICAgICBiaW9faW5pdF9pbmxpbmUoYmlvLCBOVUxMLCAxLCAwKTsNCj4+ICAgICAgICAg ICAgICAgICByMTBfYmlvLT5kZXZzW2pdLnJlcGxfYmlvID0gYmlvOw0KPj4gICAgICAgICB9DQo+ PiAgICAgICAgIC8qDQo+PiAtICAgICAgICAqIEFsbG9jYXRlIFJFU1lOQ19QQUdFUyBkYXRhIHBh Z2VzIGFuZCBhdHRhY2ggdGhlbQ0KPj4gLSAgICAgICAgKiB3aGVyZSBuZWVkZWQuDQo+PiArICAg ICAgICAqIEFsbG9jYXRlIGRhdGEgZm9saW8gYW5kIGF0dGFjaCBpdCB3aGVyZSBuZWVkZWQuDQo+ PiAgICAgICAgICAqLw0KPj4gICAgICAgICBmb3IgKGogPSAwOyBqIDwgbmFsbG9jOyBqKyspIHsN Cj4+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmlvICpyYmlvID0gcjEwX2Jpby0+ZGV2c1tqXS5y ZXBsX2JpbzsNCj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgcmVzeW5jX3BhZ2VzICpycCwgKnJw X3JlcGw7DQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHJlc3luY19mb2xpbyAqcmYsICpyZl9y ZXBsOw0KPj4NCj4+IC0gICAgICAgICAgICAgICBycCA9ICZycHNbal07DQo+PiArICAgICAgICAg ICAgICAgcmYgPSAmcmZzW2pdOw0KPj4gICAgICAgICAgICAgICAgIGlmIChyYmlvKQ0KPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgcnBfcmVwbCA9ICZycHNbbmFsbG9jICsgal07DQo+PiAtDQo+ PiAtICAgICAgICAgICAgICAgYmlvID0gcjEwX2Jpby0+ZGV2c1tqXS5iaW87DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICByZl9yZXBsID0gJnJmc1tuYWxsb2MgKyBqXTsNCj4+DQo+PiAgICAg ICAgICAgICAgICAgaWYgKCFqIHx8IHRlc3RfYml0KE1EX1JFQ09WRVJZX1NZTkMsDQo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25mLT5tZGRldi0+cmVjb3ZlcnkpKSB7 DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzeW5jX2FsbG9jX3BhZ2VzKHJwLCBn ZnBfZmxhZ3MpKQ0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9m cmVlX3BhZ2VzOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3luY19hbGxvY19m b2xpbyhyZiwgZ2ZwX2ZsYWdzLCAmb3JkZXIpKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIG91dF9mcmVlX2ZvbGlvOw0KPj4gICAgICAgICAgICAgICAgIH0gZWxzZSB7 DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkocnAsICZycHNbMF0sIHNpemVvZigq cnApKTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHJlc3luY19nZXRfYWxsX3BhZ2VzKHJw KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShyZiwgJnJmc1swXSwgc2l6ZW9m KCpyZikpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fZ2V0KHJmLT5mb2xpbyk7 DQo+PiAgICAgICAgICAgICAgICAgfQ0KPj4NCj4+IC0gICAgICAgICAgICAgICBycC0+cmFpZF9i aW8gPSByMTBfYmlvOw0KPj4gLSAgICAgICAgICAgICAgIGJpby0+YmlfcHJpdmF0ZSA9IHJwOw0K Pj4gKyAgICAgICAgICAgICAgIHJmLT5yYWlkX2JpbyA9IHIxMF9iaW87DQo+PiArICAgICAgICAg ICAgICAgcjEwX2Jpby0+ZGV2c1tqXS5iaW8tPmJpX3ByaXZhdGUgPSByZjsNCj4+ICAgICAgICAg ICAgICAgICBpZiAocmJpbykgew0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHJw X3JlcGwsIHJwLCBzaXplb2YoKnJwKSk7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICByYmlv LT5iaV9wcml2YXRlID0gcnBfcmVwbDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNw eShyZl9yZXBsLCByZiwgc2l6ZW9mKCpyZikpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmJpby0+YmlfcHJpdmF0ZSA9IHJmX3JlcGw7DQo+PiAgICAgICAgICAgICAgICAgfQ0KPj4gICAg ICAgICB9DQo+Pg0KPj4gKyAgICAgICByMTBfYmlvLT5zZWN0b3JzID0gMSA8PCAob3JkZXIgKyBQ QUdFX1NFQ1RPUlNfU0hJRlQpOw0KPj4gICAgICAgICByZXR1cm4gcjEwX2JpbzsNCj4+DQo+PiAt b3V0X2ZyZWVfcGFnZXM6DQo+PiArb3V0X2ZyZWVfZm9saW86DQo+PiAgICAgICAgIHdoaWxlICgt LWogPj0gMCkNCj4+IC0gICAgICAgICAgICAgICByZXN5bmNfZnJlZV9wYWdlcygmcnBzW2pdKTsN Cj4+ICsgICAgICAgICAgICAgICBmb2xpb19wdXQocmZzW2pdLmZvbGlvKTsNCj4+DQo+PiAgICAg ICAgIGogPSAwOw0KPj4gIG91dF9mcmVlX2JpbzoNCj4+IEBAIC0yMTksNyArMjE4LDcgQEAgc3Rh dGljIHZvaWQgKiByMTBidWZfcG9vbF9hbGxvYyhnZnBfdCBnZnBfZmxhZ3MsIHZvaWQgKmRhdGEp DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBiaW9fdW5pbml0KHIxMF9iaW8tPmRldnNbal0u cmVwbF9iaW8pOw0KPj4gICAgICAgICAgICAgICAgIGtmcmVlKHIxMF9iaW8tPmRldnNbal0ucmVw bF9iaW8pOw0KPj4gICAgICAgICB9DQo+PiAtICAgICAgIGtmcmVlKHJwcyk7DQo+PiArICAgICAg IGtmcmVlKHJmcyk7DQo+PiAgb3V0X2ZyZWVfcjEwYmlvOg0KPj4gICAgICAgICByYmlvX3Bvb2xf ZnJlZShyMTBfYmlvLCBjb25mKTsNCj4+ICAgICAgICAgcmV0dXJuIE5VTEw7DQo+PiBAQCAtMjMw LDE0ICsyMjksMTQgQEAgc3RhdGljIHZvaWQgcjEwYnVmX3Bvb2xfZnJlZSh2b2lkICpfX3IxMF9i aW8sIHZvaWQgKmRhdGEpDQo+PiAgICAgICAgIHN0cnVjdCByMTBjb25mICpjb25mID0gZGF0YTsN Cj4+ICAgICAgICAgc3RydWN0IHIxMGJpbyAqcjEwYmlvID0gX19yMTBfYmlvOw0KPj4gICAgICAg ICBpbnQgajsNCj4+IC0gICAgICAgc3RydWN0IHJlc3luY19wYWdlcyAqcnAgPSBOVUxMOw0KPj4g KyAgICAgICBzdHJ1Y3QgcmVzeW5jX2ZvbGlvICpyZiA9IE5VTEw7DQo+Pg0KPj4gICAgICAgICBm b3IgKGogPSBjb25mLT5jb3BpZXM7IGotLTsgKSB7DQo+PiAgICAgICAgICAgICAgICAgc3RydWN0 IGJpbyAqYmlvID0gcjEwYmlvLT5kZXZzW2pdLmJpbzsNCj4+DQo+PiAgICAgICAgICAgICAgICAg aWYgKGJpbykgew0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgcnAgPSBnZXRfcmVzeW5jX3Bh Z2VzKGJpbyk7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICByZXN5bmNfZnJlZV9wYWdlcyhy cCk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZiA9IGdldF9yZXN5bmNfZm9saW8oYmlv KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX3B1dChyZi0+Zm9saW8pOw0KPj4g ICAgICAgICAgICAgICAgICAgICAgICAgYmlvX3VuaW5pdChiaW8pOw0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAga2ZyZWUoYmlvKTsNCj4+ICAgICAgICAgICAgICAgICB9DQo+PiBAQCAtMjUw LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHIxMGJ1Zl9wb29sX2ZyZWUodm9pZCAqX19yMTBfYmlv LCB2b2lkICpkYXRhKQ0KPj4gICAgICAgICB9DQo+Pg0KPj4gICAgICAgICAvKiByZXN5bmMgcGFn ZXMgYXJyYXkgc3RvcmVkIGluIHRoZSAxc3QgYmlvJ3MgLmJpX3ByaXZhdGUgKi8NCj4+IC0gICAg ICAga2ZyZWUocnApOw0KPj4gKyAgICAgICBrZnJlZShyZik7DQo+Pg0KPj4gICAgICAgICByYmlv X3Bvb2xfZnJlZShyMTBiaW8sIGNvbmYpOw0KPj4gIH0NCj4+IEBAIC0yMzQyLDggKzIzNDEsNyBA QCBzdGF0aWMgdm9pZCBzeW5jX3JlcXVlc3Rfd3JpdGUoc3RydWN0IG1kZGV2ICptZGRldiwgc3Ry dWN0IHIxMGJpbyAqcjEwX2JpbykNCj4+ICAgICAgICAgc3RydWN0IHIxMGNvbmYgKmNvbmYgPSBt ZGRldi0+cHJpdmF0ZTsNCj4+ICAgICAgICAgaW50IGksIGZpcnN0Ow0KPj4gICAgICAgICBzdHJ1 Y3QgYmlvICp0YmlvLCAqZmJpbzsNCj4+IC0gICAgICAgaW50IHZjbnQ7DQo+PiAtICAgICAgIHN0 cnVjdCBwYWdlICoqdHBhZ2VzLCAqKmZwYWdlczsNCj4+ICsgICAgICAgc3RydWN0IGZvbGlvICp0 Zm9saW8sICpmZm9saW87DQo+Pg0KPj4gICAgICAgICBhdG9taWNfc2V0KCZyMTBfYmlvLT5yZW1h aW5pbmcsIDEpOw0KPj4NCj4+IEBAIC0yMzU5LDE0ICsyMzU3LDEzIEBAIHN0YXRpYyB2b2lkIHN5 bmNfcmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBf YmlvKQ0KPj4gICAgICAgICBmYmlvID0gcjEwX2Jpby0+ZGV2c1tpXS5iaW87DQo+PiAgICAgICAg IGZiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHIxMF9iaW8tPnNlY3RvcnMgPDwgOTsNCj4+ICAgICAg ICAgZmJpby0+YmlfaXRlci5iaV9pZHggPSAwOw0KPj4gLSAgICAgICBmcGFnZXMgPSBnZXRfcmVz eW5jX3BhZ2VzKGZiaW8pLT5wYWdlczsNCj4+ICsgICAgICAgZmZvbGlvID0gZ2V0X3Jlc3luY19m b2xpbyhmYmlvKS0+Zm9saW87DQo+Pg0KPj4gLSAgICAgICB2Y250ID0gKHIxMF9iaW8tPnNlY3Rv cnMgKyAoUEFHRV9TSVpFID4+IDkpIC0gMSkgPj4gKFBBR0VfU0hJRlQgLSA5KTsNCj4+ICAgICAg ICAgLyogbm93IGZpbmQgYmxvY2tzIHdpdGggZXJyb3JzICovDQo+PiAgICAgICAgIGZvciAoaT0w IDsgaSA8IGNvbmYtPmNvcGllcyA7IGkrKykgew0KPj4gLSAgICAgICAgICAgICAgIGludCAgaiwg ZDsNCj4+ICsgICAgICAgICAgICAgICBpbnQgIGQ7DQo+PiAgICAgICAgICAgICAgICAgc3RydWN0 IG1kX3JkZXYgKnJkZXY7DQo+PiAtICAgICAgICAgICAgICAgc3RydWN0IHJlc3luY19wYWdlcyAq cnA7DQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHJlc3luY19mb2xpbyAqcmY7DQo+Pg0KPj4g ICAgICAgICAgICAgICAgIHRiaW8gPSByMTBfYmlvLT5kZXZzW2ldLmJpbzsNCj4+DQo+PiBAQCAt MjM3NSwzMSArMjM3MiwyMyBAQCBzdGF0aWMgdm9pZCBzeW5jX3JlcXVlc3Rfd3JpdGUoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IHIxMGJpbyAqcjEwX2JpbykNCj4+ICAgICAgICAgICAgICAg ICBpZiAoaSA9PSBmaXJzdCkNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0K Pj4NCj4+IC0gICAgICAgICAgICAgICB0cGFnZXMgPSBnZXRfcmVzeW5jX3BhZ2VzKHRiaW8pLT5w YWdlczsNCj4+ICsgICAgICAgICAgICAgICB0Zm9saW8gPSBnZXRfcmVzeW5jX2ZvbGlvKHRiaW8p LT5mb2xpbzsNCj4+ICAgICAgICAgICAgICAgICBkID0gcjEwX2Jpby0+ZGV2c1tpXS5kZXZudW07 DQo+PiAgICAgICAgICAgICAgICAgcmRldiA9IGNvbmYtPm1pcnJvcnNbZF0ucmRldjsNCj4+ICAg ICAgICAgICAgICAgICBpZiAoIXIxMF9iaW8tPmRldnNbaV0uYmlvLT5iaV9zdGF0dXMpIHsNCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGtub3cgdGhhdCB0aGUgYmlfaW9fdmVjIGxh eW91dCBpcyB0aGUgc2FtZSBmb3INCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAqIGJvdGgg J2ZpcnN0JyBhbmQgJ2knLCBzbyB3ZSBqdXN0IGNvbXBhcmUgdGhlbS4NCj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAqIEFsbCB2ZWMgZW50cmllcyBhcmUgUEFHRV9TSVpFOw0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICovDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vj dG9ycyA9IHIxMF9iaW8tPnNlY3RvcnM7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBmb3Ig KGogPSAwOyBqIDwgdmNudDsgaisrKSB7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBsZW4gPSBQQUdFX1NJWkU7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChzZWN0b3JzIDwgKGxlbiAvIDUxMikpDQo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVuID0gc2VjdG9ycyAqIDUxMjsNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKG1lbWNtcChwYWdlX2FkZHJlc3MoZnBhZ2VzW2pdKSwNCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlX2FkZHJlc3Mo dHBhZ2VzW2pdKSwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsZW4pKQ0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Ow0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0b3JzIC09IGxlbi81MTI7 DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVtY21wKGZvbGlvX2FkZHJlc3MoZmZv bGlvKSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fYWRkcmVz cyh0Zm9saW8pLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMTBfYmlv LT5zZWN0b3JzIDw8IDkpKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0 b21pYzY0X2FkZChyMTBfYmlvLT5zZWN0b3JzLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm1kZGV2LT5yZXN5bmNfbWlzbWF0Y2hlcyk7DQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9DSEVD SywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZGRl di0+cmVjb3ZlcnkpKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIERvbid0IGZpeCBhbnl0aGluZy4gKi8NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChqID09IHZjbnQpDQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAg YXRvbWljNjRfYWRkKHIxMF9iaW8tPnNlY3RvcnMsICZtZGRldi0+cmVzeW5jX21pc21hdGNoZXMp Ow0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlc3RfYml0KE1EX1JFQ09WRVJZX0NI RUNLLCAmbWRkZXYtPnJlY292ZXJ5KSkNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogRG9uJ3QgZml4IGFueXRoaW5nLiAqLw0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsNCj4+ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RfYml0 KEZhaWxGYXN0LCAmcmRldi0+ZmxhZ3MpKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAv KiBKdXN0IGdpdmUgdXAgb24gdGhpcyBkZXZpY2UgKi8NCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgIG1kX2Vycm9yKHJkZXYtPm1kZGV2LCByZGV2KTsNCj4+IEBAIC0yNDEwLDEzICsyMzk5LDEz IEBAIHN0YXRpYyB2b2lkIHN5bmNfcmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBz dHJ1Y3QgcjEwYmlvICpyMTBfYmlvKQ0KPj4gICAgICAgICAgICAgICAgICAqIEZpcnN0IHdlIG5l ZWQgdG8gZml4dXAgYnZfb2Zmc2V0LCBidl9sZW4gYW5kDQo+PiAgICAgICAgICAgICAgICAgICog YmlfdmVjcywgYXMgdGhlIHJlYWQgcmVxdWVzdCBtaWdodCBoYXZlIGNvcnJ1cHRlZCB0aGVzZQ0K Pj4gICAgICAgICAgICAgICAgICAqLw0KPj4gLSAgICAgICAgICAgICAgIHJwID0gZ2V0X3Jlc3lu Y19wYWdlcyh0YmlvKTsNCj4+ICsgICAgICAgICAgICAgICByZiA9IGdldF9yZXN5bmNfZm9saW8o dGJpbyk7DQo+PiAgICAgICAgICAgICAgICAgYmlvX3Jlc2V0KHRiaW8sIGNvbmYtPm1pcnJvcnNb ZF0ucmRldi0+YmRldiwgUkVRX09QX1dSSVRFKTsNCj4+DQo+PiAtICAgICAgICAgICAgICAgbWRf YmlvX3Jlc2V0X3Jlc3luY19wYWdlcyh0YmlvLCBycCwgZmJpby0+YmlfaXRlci5iaV9zaXplKTsN Cj4+ICsgICAgICAgICAgICAgICBtZF9iaW9fcmVzZXRfcmVzeW5jX2ZvbGlvKHRiaW8sIHJmLCBm YmlvLT5iaV9pdGVyLmJpX3NpemUpOw0KPj4NCj4+IC0gICAgICAgICAgICAgICBycC0+cmFpZF9i aW8gPSByMTBfYmlvOw0KPj4gLSAgICAgICAgICAgICAgIHRiaW8tPmJpX3ByaXZhdGUgPSBycDsN Cj4+ICsgICAgICAgICAgICAgICByZi0+cmFpZF9iaW8gPSByMTBfYmlvOw0KPj4gKyAgICAgICAg ICAgICAgIHRiaW8tPmJpX3ByaXZhdGUgPSByZjsNCj4+ICAgICAgICAgICAgICAgICB0YmlvLT5i aV9pdGVyLmJpX3NlY3RvciA9IHIxMF9iaW8tPmRldnNbaV0uYWRkcjsNCj4+ICAgICAgICAgICAg ICAgICB0YmlvLT5iaV9lbmRfaW8gPSBlbmRfc3luY193cml0ZTsNCj4+DQo+PiBAQCAtMjQ3Niwx MCArMjQ2NSw5IEBAIHN0YXRpYyB2b2lkIGZpeF9yZWNvdmVyeV9yZWFkX2Vycm9yKHN0cnVjdCBy MTBiaW8gKnIxMF9iaW8pDQo+PiAgICAgICAgIHN0cnVjdCBiaW8gKmJpbyA9IHIxMF9iaW8tPmRl dnNbMF0uYmlvOw0KPj4gICAgICAgICBzZWN0b3JfdCBzZWN0ID0gMDsNCj4+ICAgICAgICAgaW50 IHNlY3RvcnMgPSByMTBfYmlvLT5zZWN0b3JzOw0KPj4gLSAgICAgICBpbnQgaWR4ID0gMDsNCj4+ ICAgICAgICAgaW50IGRyID0gcjEwX2Jpby0+ZGV2c1swXS5kZXZudW07DQo+PiAgICAgICAgIGlu dCBkdyA9IHIxMF9iaW8tPmRldnNbMV0uZGV2bnVtOw0KPj4gLSAgICAgICBzdHJ1Y3QgcGFnZSAq KnBhZ2VzID0gZ2V0X3Jlc3luY19wYWdlcyhiaW8pLT5wYWdlczsNCj4+ICsgICAgICAgc3RydWN0 IGZvbGlvICpmb2xpbyA9IGdldF9yZXN5bmNfZm9saW8oYmlvKS0+Zm9saW87DQo+Pg0KPj4gICAg ICAgICB3aGlsZSAoc2VjdG9ycykgew0KPj4gICAgICAgICAgICAgICAgIGludCBzID0gc2VjdG9y czsNCj4+IEBAIC0yNDkyLDE5ICsyNDgwLDIxIEBAIHN0YXRpYyB2b2lkIGZpeF9yZWNvdmVyeV9y ZWFkX2Vycm9yKHN0cnVjdCByMTBiaW8gKnIxMF9iaW8pDQo+Pg0KPj4gICAgICAgICAgICAgICAg IHJkZXYgPSBjb25mLT5taXJyb3JzW2RyXS5yZGV2Ow0KPj4gICAgICAgICAgICAgICAgIGFkZHIg PSByMTBfYmlvLT5kZXZzWzBdLmFkZHIgKyBzZWN0Ow0KPj4gLSAgICAgICAgICAgICAgIG9rID0g c3luY19wYWdlX2lvKHJkZXYsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWRkciwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzIDw8IDksDQo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXNbaWR4XSwNCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFfT1BfUkVBRCwgZmFsc2UpOw0KPj4gKyAgICAg ICAgICAgICAgIG9rID0gc3luY19mb2xpb19pbyhyZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZGRyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzIDw8IDksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Qg PDwgOSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW8sDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUV9PUF9SRUFELCBmYWxzZSk7DQo+ PiAgICAgICAgICAgICAgICAgaWYgKG9rKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBy ZGV2ID0gY29uZi0+bWlycm9yc1tkd10ucmRldjsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IGFkZHIgPSByMTBfYmlvLT5kZXZzWzFdLmFkZHIgKyBzZWN0Ow0KPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgb2sgPSBzeW5jX3BhZ2VfaW8ocmRldiwNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkZHIsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzIDw8IDksDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYWdlc1tpZHhdLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUkVRX09QX1dSSVRFLCBmYWxzZSk7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBvayA9IHN5bmNfZm9saW9faW8ocmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhZGRyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMgPDwgOSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWN0IDw8IDksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9saW8sDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUkVRX09QX1dSSVRFLCBmYWxzZSk7DQo+PiAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoIW9rKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl dF9iaXQoV3JpdGVFcnJvclNlZW4sICZyZGV2LT5mbGFncyk7DQo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChXYW50UmVwbGFjZW1lbnQsDQo+ PiBAQCAtMjUzOSw3ICsyNTI5LDYgQEAgc3RhdGljIHZvaWQgZml4X3JlY292ZXJ5X3JlYWRfZXJy b3Ioc3RydWN0IHIxMGJpbyAqcjEwX2JpbykNCj4+DQo+PiAgICAgICAgICAgICAgICAgc2VjdG9y cyAtPSBzOw0KPj4gICAgICAgICAgICAgICAgIHNlY3QgKz0gczsNCj4+IC0gICAgICAgICAgICAg ICBpZHgrKzsNCj4+ICAgICAgICAgfQ0KPj4gIH0NCj4+DQo+PiBAQCAtMzA1MCw3ICszMDM5LDcg QEAgc3RhdGljIGludCBpbml0X3Jlc3luYyhzdHJ1Y3QgcjEwY29uZiAqY29uZikNCj4+ICBzdGF0 aWMgc3RydWN0IHIxMGJpbyAqcmFpZDEwX2FsbG9jX2luaXRfcjEwYnVmKHN0cnVjdCByMTBjb25m ICpjb25mKQ0KPj4gIHsNCj4+ICAgICAgICAgc3RydWN0IHIxMGJpbyAqcjEwYmlvID0gbWVtcG9v bF9hbGxvYygmY29uZi0+cjEwYnVmX3Bvb2wsIEdGUF9OT0lPKTsNCj4+IC0gICAgICAgc3RydWN0 IHJzeW5jX3BhZ2VzICpycDsNCj4+ICsgICAgICAgc3RydWN0IHJlc3luY19mb2xpbyAqcmY7DQo+ PiAgICAgICAgIHN0cnVjdCBiaW8gKmJpbzsNCj4+ICAgICAgICAgaW50IG5hbGxvYzsNCj4+ICAg ICAgICAgaW50IGk7DQo+PiBAQCAtMzA2MywxNCArMzA1MiwxNCBAQCBzdGF0aWMgc3RydWN0IHIx MGJpbyAqcmFpZDEwX2FsbG9jX2luaXRfcjEwYnVmKHN0cnVjdCByMTBjb25mICpjb25mKQ0KPj4N Cj4+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5hbGxvYzsgaSsrKSB7DQo+PiAgICAgICAgICAg ICAgICAgYmlvID0gcjEwYmlvLT5kZXZzW2ldLmJpbzsNCj4+IC0gICAgICAgICAgICAgICBycCA9 IGJpby0+YmlfcHJpdmF0ZTsNCj4+ICsgICAgICAgICAgICAgICByZiA9IGJpby0+YmlfcHJpdmF0 ZTsNCj4+ICAgICAgICAgICAgICAgICBiaW9fcmVzZXQoYmlvLCBOVUxMLCAwKTsNCj4+IC0gICAg ICAgICAgICAgICBiaW8tPmJpX3ByaXZhdGUgPSBycDsNCj4+ICsgICAgICAgICAgICAgICBiaW8t PmJpX3ByaXZhdGUgPSByZjsNCj4+ICAgICAgICAgICAgICAgICBiaW8gPSByMTBiaW8tPmRldnNb aV0ucmVwbF9iaW87DQo+PiAgICAgICAgICAgICAgICAgaWYgKGJpbykgew0KPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgcnAgPSBiaW8tPmJpX3ByaXZhdGU7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICByZiA9IGJpby0+YmlfcHJpdmF0ZTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IGJpb19yZXNldChiaW8sIE5VTEwsIDApOw0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgYmlv LT5iaV9wcml2YXRlID0gcnA7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBiaW8tPmJpX3By aXZhdGUgPSByZjsNCj4+ICAgICAgICAgICAgICAgICB9DQo+PiAgICAgICAgIH0NCj4+ICAgICAg ICAgcmV0dXJuIHIxMGJpbzsNCj4+IEBAIC0zMTU2LDcgKzMxNDUsNiBAQCBzdGF0aWMgc2VjdG9y X3QgcmFpZDEwX3N5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0 b3JfbnIsDQo+PiAgICAgICAgIGludCBtYXhfc3luYyA9IFJFU1lOQ19TRUNUT1JTOw0KPj4gICAg ICAgICBzZWN0b3JfdCBzeW5jX2Jsb2NrczsNCj4+ICAgICAgICAgc2VjdG9yX3QgY2h1bmtfbWFz ayA9IGNvbmYtPmdlby5jaHVua19tYXNrOw0KPj4gLSAgICAgICBpbnQgcGFnZV9pZHggPSAwOw0K Pj4NCj4+ICAgICAgICAgLyoNCj4+ICAgICAgICAgICogQWxsb3cgc2tpcHBpbmcgYSBmdWxsIHJl YnVpbGQgZm9yIGluY3JlbWVudGFsIGFzc2VtYmx5DQo+PiBAQCAtMzM3Niw2ICszMzY0LDE1IEBA IHN0YXRpYyBzZWN0b3JfdCByYWlkMTBfc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYs IHNlY3Rvcl90IHNlY3Rvcl9uciwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0NCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPj4g Kw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBSRVNZTkNfQkxPQ0tfU0laRSBmb2xpbyBtaWdodCBhbGxv YyBmYWlsZWQgaW4NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVzeW5j X2FsbG9jX2ZvbGlvKCkuIEZhbGwgYmFjayB0byBzbWFsbGVyIHN5bmMNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogc2l6ZSBpZiBuZWVkZWQuDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAobWF4X3N5bmMgPiByMTBfYmlvLT5zZWN0b3JzKQ0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1heF9zeW5jID0gcjEwX2Jpby0+c2VjdG9yczsNCj4+ICsN Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55X3dvcmtpbmcgPSAxOw0KPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW8gPSByMTBfYmlvLT5kZXZzWzBdLmJp bzsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlvLT5iaV9uZXh0ID0gYmlv bGlzdDsNCj4+IEBAIC0zNTI3LDcgKzM1MjQsMTUgQEAgc3RhdGljIHNlY3Rvcl90IHJhaWQxMF9z eW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLA0KPj4g ICAgICAgICAgICAgICAgIH0NCj4+ICAgICAgICAgICAgICAgICBpZiAoc3luY19ibG9ja3MgPCBt YXhfc3luYykNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9zeW5jID0gc3luY19ibG9j a3M7DQo+PiArDQo+PiAgICAgICAgICAgICAgICAgcjEwX2JpbyA9IHJhaWQxMF9hbGxvY19pbml0 X3IxMGJ1Zihjb25mKTsNCj4+ICsgICAgICAgICAgICAgICAvKg0KPj4gKyAgICAgICAgICAgICAg ICAqIFJFU1lOQ19CTE9DS19TSVpFIGZvbGlvIG1pZ2h0IGFsbG9jIGZhaWxlZCBpbiByZXN5bmNf YWxsb2NfZm9saW8oKS4NCj4+ICsgICAgICAgICAgICAgICAgKiBGYWxsIGJhY2sgdG8gc21hbGxl ciBzeW5jIHNpemUgaWYgbmVlZGVkLg0KPj4gKyAgICAgICAgICAgICAgICAqLw0KPj4gKyAgICAg ICAgICAgICAgIGlmIChtYXhfc3luYyA+IHIxMF9iaW8tPnNlY3RvcnMpDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBtYXhfc3luYyA9IHIxMF9iaW8tPnNlY3RvcnM7DQo+PiArDQo+PiAgICAg ICAgICAgICAgICAgcjEwX2Jpby0+c3RhdGUgPSAwOw0KPj4NCj4+ICAgICAgICAgICAgICAgICBy MTBfYmlvLT5tZGRldiA9IG1kZGV2Ow0KPj4gQEAgLTM2MjAsMjkgKzM2MjUsMjUgQEAgc3RhdGlj IHNlY3Rvcl90IHJhaWQxMF9zeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9y X3Qgc2VjdG9yX25yLA0KPj4gICAgICAgICAgICAgICAgIH0NCj4+ICAgICAgICAgfQ0KPj4NCj4+ IC0gICAgICAgbnJfc2VjdG9ycyA9IDA7DQo+PiAgICAgICAgIGlmIChzZWN0b3JfbnIgKyBtYXhf c3luYyA8IG1heF9zZWN0b3IpDQo+PiAgICAgICAgICAgICAgICAgbWF4X3NlY3RvciA9IHNlY3Rv cl9uciArIG1heF9zeW5jOw0KPj4gICAgICAgICBkbyB7DQo+PiAtICAgICAgICAgICAgICAgc3Ry dWN0IHBhZ2UgKnBhZ2U7DQo+PiAtICAgICAgICAgICAgICAgaW50IGxlbiA9IFBBR0VfU0laRTsN Cj4+IC0gICAgICAgICAgICAgICBpZiAoc2VjdG9yX25yICsgKGxlbj4+OSkgPiBtYXhfc2VjdG9y KQ0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKG1heF9zZWN0b3IgLSBzZWN0b3Jf bnIpIDw8IDk7DQo+PiAtICAgICAgICAgICAgICAgaWYgKGxlbiA9PSAwKQ0KPj4gKyAgICAgICAg ICAgICAgIG5yX3NlY3RvcnMgPSBtYXhfc2VjdG9yIC0gc2VjdG9yX25yOw0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgIGlmIChucl9zZWN0b3JzID09IDApDQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsNCj4+ICAgICAgICAgICAgICAgICBmb3IgKGJpbz0gYmlvbGlzdCA7IGJpbyA7 IGJpbz1iaW8tPmJpX25leHQpIHsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy ZXN5bmNfcGFnZXMgKnJwID0gZ2V0X3Jlc3luY19wYWdlcyhiaW8pOw0KPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgcGFnZSA9IHJlc3luY19mZXRjaF9wYWdlKHJwLCBwYWdlX2lkeCk7DQo+PiAt ICAgICAgICAgICAgICAgICAgICAgICBpZiAoV0FSTl9PTighYmlvX2FkZF9wYWdlKGJpbywgcGFn ZSwgbGVuLCAwKSkpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByZXN5bmNf Zm9saW8gKnJmID0gZ2V0X3Jlc3luY19mb2xpbyhiaW8pOw0KPj4gKw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKFdBUk5fT04oIWJpb19hZGRfZm9saW8oYmlvLCByZi0+Zm9saW8sIG5y X3NlY3RvcnMgPDwgOSwgMCkpKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJpby0+Ymlfc3RhdHVzID0gQkxLX1NUU19SRVNPVVJDRTsNCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmlvX2VuZGlvKGJpbyk7DQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpza2lwcGVkID0gMTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIG1heF9zeW5jOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gbnJfc2VjdG9ycyA8PCA5Ow0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPj4g ICAgICAgICAgICAgICAgIH0NCj4+IC0gICAgICAgICAgICAgICBucl9zZWN0b3JzICs9IGxlbj4+ OTsNCj4+IC0gICAgICAgICAgICAgICBzZWN0b3JfbnIgKz0gbGVuPj45Ow0KPj4gLSAgICAgICB9 IHdoaWxlICgrK3BhZ2VfaWR4IDwgUkVTWU5DX1BBR0VTKTsNCj4+ICsgICAgICAgICAgICAgICBz ZWN0b3JfbnIgKz0gbnJfc2VjdG9yczsNCj4+ICsgICAgICAgfSB3aGlsZSAoMCk7DQo+PiAgICAg ICAgIHIxMF9iaW8tPnNlY3RvcnMgPSBucl9zZWN0b3JzOw0KPj4NCj4+ICAgICAgICAgaWYgKG1k ZGV2X2lzX2NsdXN0ZXJlZChtZGRldikgJiYNCj4+IEBAIC00NTYwLDcgKzQ1NjEsNyBAQCBzdGF0 aWMgc2VjdG9yX3QgcmVzaGFwZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90 IHNlY3Rvcl9uciwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpza2lw cGVkKQ0KPj4gIHsNCj4+ICAgICAgICAgLyogV2Ugc2ltcGx5IGNvcHkgYXQgbW9zdCBvbmUgY2h1 bmsgKHNtYWxsZXN0IG9mIG9sZCBhbmQgbmV3KQ0KPj4gLSAgICAgICAgKiBhdCBhIHRpbWUsIHBv c3NpYmx5IGxlc3MgaWYgdGhhdCBleGNlZWRzIFJFU1lOQ19QQUdFUywNCj4+ICsgICAgICAgICog YXQgYSB0aW1lLCBwb3NzaWJseSBsZXNzIGlmIHRoYXQgZXhjZWVkcyBSRVNZTkNfQkxPQ0tfU0la RSwNCj4+ICAgICAgICAgICogb3Igd2UgaGl0IGEgYmFkIGJsb2NrIG9yIHNvbWV0aGluZy4NCj4+ ICAgICAgICAgICogVGhpcyBtaWdodCBtZWFuIHdlIHBhdXNlIGZvciBub3JtYWwgSU8gaW4gdGhl IG1pZGRsZSBvZg0KPj4gICAgICAgICAgKiBhIGNodW5rLCBidXQgdGhhdCBpcyBub3QgYSBwcm9i bGVtIGFzIG1kZGV2LT5yZXNoYXBlX3Bvc2l0aW9uDQo+PiBAQCAtNDYwMCwxNCArNDYwMSwxMyBA QCBzdGF0aWMgc2VjdG9yX3QgcmVzaGFwZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNl Y3Rvcl90IHNlY3Rvcl9uciwNCj4+ICAgICAgICAgc3RydWN0IHIxMGJpbyAqcjEwX2JpbzsNCj4+ ICAgICAgICAgc2VjdG9yX3QgbmV4dCwgc2FmZSwgbGFzdDsNCj4+ICAgICAgICAgaW50IG1heF9z ZWN0b3JzOw0KPj4gLSAgICAgICBpbnQgbnJfc2VjdG9yczsNCj4+ICAgICAgICAgaW50IHM7DQo+ PiAgICAgICAgIHN0cnVjdCBtZF9yZGV2ICpyZGV2Ow0KPj4gICAgICAgICBpbnQgbmVlZF9mbHVz aCA9IDA7DQo+PiAgICAgICAgIHN0cnVjdCBiaW8gKmJsaXN0Ow0KPj4gICAgICAgICBzdHJ1Y3Qg YmlvICpiaW8sICpyZWFkX2JpbzsNCj4+ICAgICAgICAgaW50IHNlY3RvcnNfZG9uZSA9IDA7DQo+ PiAtICAgICAgIHN0cnVjdCBwYWdlICoqcGFnZXM7DQo+PiArICAgICAgIHN0cnVjdCBmb2xpbyAq Zm9saW87DQo+Pg0KPj4gICAgICAgICBpZiAoc2VjdG9yX25yID09IDApIHsNCj4+ICAgICAgICAg ICAgICAgICAvKiBJZiByZXN0YXJ0aW5nIGluIHRoZSBtaWRkbGUsIHNraXAgdGhlIGluaXRpYWwg c2VjdG9ycyAqLw0KPj4gQEAgLTQ3MDksNyArNDcwOSwxMiBAQCBzdGF0aWMgc2VjdG9yX3QgcmVz aGFwZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNlY3Rvcl9uciwNCj4+ ICAgICAgICAgcjEwX2Jpby0+bWRkZXYgPSBtZGRldjsNCj4+ICAgICAgICAgcjEwX2Jpby0+c2Vj dG9yID0gc2VjdG9yX25yOw0KPj4gICAgICAgICBzZXRfYml0KFIxMEJJT19Jc1Jlc2hhcGUsICZy MTBfYmlvLT5zdGF0ZSk7DQo+PiAtICAgICAgIHIxMF9iaW8tPnNlY3RvcnMgPSBsYXN0IC0gc2Vj dG9yX25yICsgMTsNCj4+ICsgICAgICAgLyoNCj4+ICsgICAgICAgICogUkVTWU5DX0JMT0NLX1NJ WkUgZm9saW8gbWlnaHQgYWxsb2MgZmFpbGVkIGluDQo+PiArICAgICAgICAqIHJlc3luY19hbGxv Y19mb2xpbygpLiBGYWxsIGJhY2sgdG8gc21hbGxlciBzeW5jDQo+PiArICAgICAgICAqIHNpemUg aWYgbmVlZGVkLg0KPj4gKyAgICAgICAgKi8NCj4+ICsgICAgICAgcjEwX2Jpby0+c2VjdG9ycyA9 IG1pbl90KGludCwgcjEwX2Jpby0+c2VjdG9ycywgbGFzdCAtIHNlY3Rvcl9uciArIDEpOw0KPj4g ICAgICAgICByZGV2ID0gcmVhZF9iYWxhbmNlKGNvbmYsIHIxMF9iaW8sICZtYXhfc2VjdG9ycyk7 DQo+PiAgICAgICAgIEJVR19PTighdGVzdF9iaXQoUjEwQklPX1ByZXZpb3VzLCAmcjEwX2Jpby0+ c3RhdGUpKTsNCj4+DQo+PiBAQCAtNDcyMyw3ICs0NzI4LDcgQEAgc3RhdGljIHNlY3Rvcl90IHJl c2hhcGVfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsDQo+ PiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlY3RvcnNfZG9uZTsNCj4+ICAgICAgICAgfQ0KPj4N Cj4+IC0gICAgICAgcmVhZF9iaW8gPSBiaW9fYWxsb2NfYmlvc2V0KHJkZXYtPmJkZXYsIFJFU1lO Q19QQUdFUywgUkVRX09QX1JFQUQsDQo+PiArICAgICAgIHJlYWRfYmlvID0gYmlvX2FsbG9jX2Jp b3NldChyZGV2LT5iZGV2LCAxLCBSRVFfT1BfUkVBRCwNCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdGUF9LRVJORUwsICZtZGRldi0+YmlvX3NldCk7DQo+PiAgICAgICAg IHJlYWRfYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChyMTBfYmlvLT5kZXZzW3IxMF9iaW8tPnJl YWRfc2xvdF0uYWRkcg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcmRldi0+ ZGF0YV9vZmZzZXQpOw0KPj4gQEAgLTQ3ODcsMzIgKzQ3OTIsMjMgQEAgc3RhdGljIHNlY3Rvcl90 IHJlc2hhcGVfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIs DQo+PiAgICAgICAgICAgICAgICAgYmxpc3QgPSBiOw0KPj4gICAgICAgICB9DQo+Pg0KPj4gLSAg ICAgICAvKiBOb3cgYWRkIGFzIG1hbnkgcGFnZXMgYXMgcG9zc2libGUgdG8gYWxsIG9mIHRoZXNl IGJpb3MuICovDQo+PiArICAgICAgIC8qIE5vdyBhZGQgZm9saW8gdG8gYWxsIG9mIHRoZXNlIGJp b3MuICovDQo+Pg0KPj4gLSAgICAgICBucl9zZWN0b3JzID0gMDsNCj4+IC0gICAgICAgcGFnZXMg PSBnZXRfcmVzeW5jX3BhZ2VzKHIxMF9iaW8tPmRldnNbMF0uYmlvKS0+cGFnZXM7DQo+PiAtICAg ICAgIGZvciAocyA9IDAgOyBzIDwgbWF4X3NlY3RvcnM7IHMgKz0gUEFHRV9TSVpFID4+IDkpIHsN Cj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSA9IHBhZ2VzW3MgLyAoUEFHRV9T SVpFID4+IDkpXTsNCj4+IC0gICAgICAgICAgICAgICBpbnQgbGVuID0gKG1heF9zZWN0b3JzIC0g cykgPDwgOTsNCj4+IC0gICAgICAgICAgICAgICBpZiAobGVuID4gUEFHRV9TSVpFKQ0KPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgbGVuID0gUEFHRV9TSVpFOw0KPj4gLSAgICAgICAgICAgICAg IGZvciAoYmlvID0gYmxpc3Q7IGJpbyA7IGJpbyA9IGJpby0+YmlfbmV4dCkgew0KPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIGxl biwgMCkpKSB7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpby0+Ymlfc3Rh dHVzID0gQkxLX1NUU19SRVNPVVJDRTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmlvX2VuZGlvKGJpbyk7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBzZWN0b3JzX2RvbmU7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiArICAg ICAgIGZvbGlvID0gZ2V0X3Jlc3luY19mb2xpbyhyMTBfYmlvLT5kZXZzWzBdLmJpbyktPmZvbGlv Ow0KPj4gKyAgICAgICBmb3IgKGJpbyA9IGJsaXN0OyBiaW8gOyBiaW8gPSBiaW8tPmJpX25leHQp IHsNCj4+ICsgICAgICAgICAgICAgICBpZiAoV0FSTl9PTighYmlvX2FkZF9mb2xpbyhiaW8sIGZv bGlvLCBtYXhfc2VjdG9ycywgMCkpKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBiaW8t PmJpX3N0YXR1cyA9IEJMS19TVFNfUkVTT1VSQ0U7DQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBiaW9fZW5kaW8oYmlvKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWN0 b3JzX2RvbmU7DQo+DQo+IEluIGZhY3QsIHRoZSBvcmlnaW5hbCBjb2RlcyBkb24ndCBjbGVhbiB1 cCBiZWZvcmUgcmV0dXJuaW5nLg0KPiBiaW9fYWRkX2ZvbGlvX25vZmFpbCBpcyB1c2VkIGluIHJh aWQxIGFuZCBjYW4gd2UgdXNlDQo+IGJpb19hZGRfZm9saW9fbm9mYWlsIGhlcmUgYXMgd2VsbD8N Cj4NCg0KQWdyZWUsIEkgd2lsbCBjbGVhbiBpdCB1cCBiZWZvcmUgdGhpcyBwYXRjaC4NCg0KPj4g ICAgICAgICAgICAgICAgIH0NCj4+IC0gICAgICAgICAgICAgICBzZWN0b3JfbnIgKz0gbGVuID4+ IDk7DQo+PiAtICAgICAgICAgICAgICAgbnJfc2VjdG9ycyArPSBsZW4gPj4gOTsNCj4+ICAgICAg ICAgfQ0KPj4gLSAgICAgICByMTBfYmlvLT5zZWN0b3JzID0gbnJfc2VjdG9yczsNCj4+ICsgICAg ICAgcjEwX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0b3JzID4+IDk7DQo+Pg0KPj4gICAgICAgICAv KiBOb3cgc3VibWl0IHRoZSByZWFkICovDQo+PiAgICAgICAgIGF0b21pY19pbmMoJnIxMF9iaW8t PnJlbWFpbmluZyk7DQo+PiAgICAgICAgIHJlYWRfYmlvLT5iaV9uZXh0ID0gTlVMTDsNCj4+ICAg ICAgICAgc3VibWl0X2Jpb19ub2FjY3QocmVhZF9iaW8pOw0KPj4gLSAgICAgICBzZWN0b3JzX2Rv bmUgKz0gbnJfc2VjdG9yczsNCj4+ICsgICAgICAgc2VjdG9yc19kb25lICs9IG1heF9zZWN0b3Jz Ow0KPj4gICAgICAgICBpZiAoc2VjdG9yX25yIDw9IGxhc3QpDQo+PiAgICAgICAgICAgICAgICAg Z290byByZWFkX21vcmU7DQo+Pg0KPj4gQEAgLTQ5MTQsOCArNDkxMCw4IEBAIHN0YXRpYyBpbnQg aGFuZGxlX3Jlc2hhcGVfcmVhZF9lcnJvcihzdHJ1Y3QgbWRkZXYgKm1kZGV2LA0KPj4gICAgICAg ICBzdHJ1Y3QgcjEwY29uZiAqY29uZiA9IG1kZGV2LT5wcml2YXRlOw0KPj4gICAgICAgICBzdHJ1 Y3QgcjEwYmlvICpyMTBiOw0KPj4gICAgICAgICBpbnQgc2xvdCA9IDA7DQo+PiAtICAgICAgIGlu dCBpZHggPSAwOw0KPj4gLSAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzOw0KPj4gKyAgICAgICBp bnQgc2VjdCA9IDA7DQo+PiArICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW87DQo+Pg0KPj4gICAg ICAgICByMTBiID0ga21hbGxvYyhzdHJ1Y3Rfc2l6ZShyMTBiLCBkZXZzLCBjb25mLT5jb3BpZXMp LCBHRlBfTk9JTyk7DQo+PiAgICAgICAgIGlmICghcjEwYikgew0KPj4gQEAgLTQ5MjMsOCArNDkx OSw4IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3Jlc2hhcGVfcmVhZF9lcnJvcihzdHJ1Y3QgbWRkZXYg Km1kZGV2LA0KPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gICAgICAgICB9 DQo+Pg0KPj4gLSAgICAgICAvKiByZXNoYXBlIElPcyBzaGFyZSBwYWdlcyBmcm9tIC5kZXZzWzBd LmJpbyAqLw0KPj4gLSAgICAgICBwYWdlcyA9IGdldF9yZXN5bmNfcGFnZXMocjEwX2Jpby0+ZGV2 c1swXS5iaW8pLT5wYWdlczsNCj4+ICsgICAgICAgLyogcmVzaGFwZSBJT3Mgc2hhcmUgZm9saW8g ZnJvbSAuZGV2c1swXS5iaW8gKi8NCj4+ICsgICAgICAgZm9saW8gPSBnZXRfcmVzeW5jX2ZvbGlv KHIxMF9iaW8tPmRldnNbMF0uYmlvKS0+Zm9saW87DQo+Pg0KPj4gICAgICAgICByMTBiLT5zZWN0 b3IgPSByMTBfYmlvLT5zZWN0b3I7DQo+PiAgICAgICAgIF9fcmFpZDEwX2ZpbmRfcGh5cygmY29u Zi0+cHJldiwgcjEwYik7DQo+PiBAQCAtNDk0MCwxOSArNDkzNiwxOSBAQCBzdGF0aWMgaW50IGhh bmRsZV9yZXNoYXBlX3JlYWRfZXJyb3Ioc3RydWN0IG1kZGV2ICptZGRldiwNCj4+ICAgICAgICAg ICAgICAgICB3aGlsZSAoIXN1Y2Nlc3MpIHsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBkID0gcjEwYi0+ZGV2c1tzbG90XS5kZXZudW07DQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgbWRfcmRldiAqcmRldiA9IGNvbmYtPm1pcnJvcnNbZF0ucmRldjsNCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgIHNlY3Rvcl90IGFkZHI7DQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmRldiA9PSBOVUxMIHx8DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdF9iaXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpIHx8DQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIXRlc3RfYml0KEluX3N5bmMsICZyZGV2LT5mbGFncykpDQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KPj4NCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIGFkZHIgPSByMTBiLT5kZXZzW3Nsb3RdLmFkZHIgKyBpZHggKiBQQUdFX1NJWkU7 DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZyZGV2LT5ucl9wZW5kaW5n KTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzeW5jX3BhZ2VfaW8ocmRl diwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRk ciwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA8 PCA5LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWdlc1tpZHhdLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSRVFfT1BfUkVBRCwgZmFsc2UpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3Vj Y2VzcyA9IHN5bmNfZm9saW9faW8ocmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHIxMGItPmRldnNbc2xvdF0uYWRkciArDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0LA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA8PCA5LA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdCA8PCA5LA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW8s DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFf T1BfUkVBRCwgZmFsc2UpOw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmRldl9kZWNfcGVu ZGluZyhyZGV2LCBtZGRldik7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vz cykNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiBAQCAtNDk3 MSw3ICs0OTY3LDcgQEAgc3RhdGljIGludCBoYW5kbGVfcmVzaGFwZV9yZWFkX2Vycm9yKHN0cnVj dCBtZGRldiAqbWRkZXYsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsN Cj4+ICAgICAgICAgICAgICAgICB9DQo+PiAgICAgICAgICAgICAgICAgc2VjdG9ycyAtPSBzOw0K Pj4gLSAgICAgICAgICAgICAgIGlkeCsrOw0KPj4gKyAgICAgICAgICAgICAgIHNlY3QgKz0gczsN Cj4+ICAgICAgICAgfQ0KPj4gICAgICAgICBrZnJlZShyMTBiKTsNCj4+ICAgICAgICAgcmV0dXJu IDA7DQo+PiAtLQ0KPj4gMi4zOS4yDQo+Pg0KPj4NCj4NCj4gUmVnYXJkcw0KPiBYaWFvDQoNCi0t DQpUaGFuc2sNCk5hbg==