From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 428763B42C0; Thu, 17 Sep 2026 06:27:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.75.126.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789626435; cv=none; b=GrKEV4+mFLax7dqLvJpZZj9fDFmxjKRdMkwl2rGAVPp46Gv1HGZxTd1HiYSFZGfcfPGCS2PuG4gitgVUMREdOSCMkx2M7GJMsD6Xhdn0HanqjKTsn3MTbUY/MjLYvBDj6utFqtX8Uo7TpE6efhhton8D2hKupaFu+owvbgzPBNg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789626435; c=relaxed/simple; bh=q8pO1UHuNjhUqzeEAp+IxbOuDsFo0LPswotKhUfJ9lY=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=UM001j/dDZQjNE0gclhxqjGz9HKKbLgUBcDnudS7e3wgNLe3UIMOBZExjZkJMYtovnz+cJZ03t+Z5wOSfAAwGSgH0GftLNFj48KC9zuLfW5tbjT4DxzTzyIajWip8LzZoUdHmKLAG51rkhF7jdGjIypaPvxAV9SeVE1+7IcLO60= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realtek.com; spf=pass smtp.mailfrom=realtek.com; dkim=pass (2048-bit key) header.d=realtek.com header.i=@realtek.com header.b=AboPtuM2; arc=none smtp.client-ip=211.75.126.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realtek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=realtek.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=realtek.com header.i=@realtek.com header.b="AboPtuM2" X-SpamFilter-By: ArmorX SpamTrap 5.80 with qID 68H6R67503060062, This message is accepted by code: ctloc85258 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=realtek.com; s=dkim; t=1789626426; bh=q8pO1UHuNjhUqzeEAp+IxbOuDsFo0LPswotKhUfJ9lY=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:Content-Transfer-Encoding:MIME-Version; b=AboPtuM2cIM0WFGoU7lyFnJZCFXp5/1z0CLWF2qb5lvg3KtjEcY5Gdu8TkUHFFbN8 ishjPIorhmmuKj8UDwSFJWNCsIhQKmgJ11zyE5S2cO+xmGVPJ+At0FQqkOfYYlA8Vv 3KucDU0n6Zchm1C08IQ+YwPk45bD70icprynbSlI1zYSdumujsJ5zxBl3PE1n+yZwV 7IJ+sQFjzzS2qyaSceWy/DDCz+xlcZcX2eHm/doBBQnlgEn5AQaVO9KK6nAs0gUs+z 0MF7kejR9eV1RX0D4BANWd9SKBg/zVl/jV9p2ve2BnvBoNRQhY3oGkkgN6pHys5XcQ X4/GbihaZ8Ayw== Received: from mail.realtek.com (rtkexhmbs02.realtek.com.tw[172.21.6.41]) by rtits2.realtek.com.tw (8.15.2/3.29/5.94) with ESMTPS id 68H6R67503060062 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 17 Sep 2026 14:27:06 +0800 Received: from RTKEXHMBS06.realtek.com.tw (10.21.1.56) by RTKEXHMBS02.realtek.com.tw (172.21.6.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 14:27:06 +0800 Received: from RTKEXHMBS06.realtek.com.tw (10.21.1.56) by RTKEXHMBS06.realtek.com.tw (10.21.1.56) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 14:27:06 +0800 Received: from RTKEXHMBS06.realtek.com.tw ([::1]) by RTKEXHMBS06.realtek.com.tw ([fe80::b3cc:c263:b82d:e87c%10]) with mapi id 15.02.2562.049; Thu, 17 Sep 2026 14:27:06 +0800 From: Ping-Ke Shih To: "5mghybrid@khu.ac.kr" <5mghybrid@khu.ac.kr>, "linux-wireless@vger.kernel.org" CC: Jes Sorensen , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH rtw-next v2 4/4] wifi: rtl8xxxu: test RX ownership and recovery across failures Thread-Topic: [PATCH rtw-next v2 4/4] wifi: rtl8xxxu: test RX ownership and recovery across failures Thread-Index: AQHdQ1I4FLD7yYQ/HEC7bjkEbHeMPrbSKlfA Date: Thu, 17 Sep 2026 06:27:05 +0000 Message-ID: <0f0a4af91524425982d37b32ac8326d4@realtek.com> References: <20260913-codex-rtw-rx-v2-v2-0-f09c964e0b96@khu.ac.kr> <20260913-codex-rtw-rx-v2-v2-4-f09c964e0b96@khu.ac.kr> In-Reply-To: <20260913-codex-rtw-rx-v2-v2-4-f09c964e0b96@khu.ac.kr> Accept-Language: en-US, zh-TW Content-Language: zh-TW Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 a2ltd29vc2VvayB2aWEgQjQgUmVsYXkgPGRldm51bGwrNW1naHlicmlkLmtodS5hYy5rckBrZXJu ZWwub3JnPiB3cm90ZToNCj4gRnJvbToga2ltd29vc2VvayA8NW1naHlicmlkQGtodS5hYy5rcj4N Cj4gDQo+IEFkZCAxMSBLVW5pdCBjYXNlcyBmb3IgdGhlIFJYIGFsbG9jYXRpb24sIHN1Ym1pc3Np b24sIGNvbXBsZXRpb24gYW5kDQo+IHJldHJ5IHBhdGhzLiBDb3ZlciBlYWNoIHJldHJ5YWJsZSBj b21wbGV0aW9uIGZvbGxvd2VkIGJ5IEVOT01FTS9FQUdBSU4sDQo+IGJhdGNoIHNpemVzIDEsIDgs IDkgYW5kIDMyLCBza2IgYWxsb2NhdGlvbiBmYWlsdXJlLCBzdGFydHVwIGZhaWx1cmUNCj4gcG9z aXRpb25zLCBjYW5jZWxsYXRpb24gYW5kIHNodXRkb3duLg0KPiANCj4gUnVuIHRoZSBhY3R1YWwg UlggaGVscGVycyBhbmQgd29ya2VyIHdpdGggdGFzay1zY29wZWQgc3R1YnMgZm9yDQo+IGFsbG9j YXRpb24gYW5kIFVTQiBzdWJtaXNzaW9uLiBPYnNlcnZlciByZWZlcmVuY2VzIGNoZWNrIHRoYXQg dGhlIGRyaXZlcg0KPiByZWxlYXNlcyBpdHMgVVJCIGFuZCBza2IgcmVmZXJlbmNlcy4gQSBkZWxh eWVkLXdvcmsgY2FzZSBjaGVja3MgdGhhdA0KPiBvbmUgcmV0cnkgcmVxdWVzdCBzY2hlZHVsZXMg dGhlIHN1Ym1pc3Npb24gd29ya2VyLg0KPiANCj4gQXNzaXN0ZWQtYnk6IEdQVC02IEFzdHJhDQo+ IFNpZ25lZC1vZmYtYnk6IGtpbXdvb3Nlb2sgPDVtZ2h5YnJpZEBraHUuYWMua3I+DQo+IC0tLQ0K PiAgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS8ua3VuaXRjb25maWcgfCAg MTYgKw0KPiAgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9LY29uZmlnICAg ICAgfCAgMTEgKw0KPiAgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9NYWtl ZmlsZSAgICAgfCAgIDMgKw0KPiAgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4 dS9jb3JlLmMgICAgICAgfCAgNjYgKystDQo+ICBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVr L3J0bDh4eHh1L3J4LXRlc3QuYyAgICB8IDQ2MSArKysrKysrKysrKysrKysrKysrKysNCj4gIGRy aXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvcngtdGVzdC5oICAgIHwgIDI3ICsr DQo+ICA2IGZpbGVzIGNoYW5nZWQsIDU2OSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkN Cj4gDQoNClsuLi5dDQoNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0 ZWsvcnRsOHh4eHUvTWFrZWZpbGUNCj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0 bDh4eHh1L01ha2VmaWxlDQo+IGluZGV4IDU4MGEyZmE2NzVlZTIuLmE1OTJhODExOTc4NTcgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvTWFrZWZp bGUNCj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9NYWtlZmls ZQ0KPiBAQCAtNCwzICs0LDYgQEAgb2JqLSQoQ09ORklHX1JUTDhYWFhVKSAgKz0gcnRsOHh4eHUu bw0KPiAgcnRsOHh4eHUteSAgICAgOj0gY29yZS5vIDgxOTJlLm8gODcyM2IubyBcDQo+ICAgICAg ICAgICAgICAgICAgICA4NzIzYS5vIDgxOTJjLm8gODE4OGYubyBcDQo+ICAgICAgICAgICAgICAg ICAgICA4MTg4ZS5vIDg3MTBiLm8gODE5MmYubw0KPiArDQo+ICtvYmotJChDT05GSUdfUlRMOFhY WFVfS1VOSVRfVEVTVCkgKz0gcnRsOHh4eHUtcngtdGVzdC5vDQo+ICtydGw4eHh4dS1yeC10ZXN0 LXkgOj0gcngtdGVzdC5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFs dGVrL3J0bDh4eHh1L2NvcmUuYw0KPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRs OHh4eHUvY29yZS5jDQo+IGluZGV4IDg4M2M5YTU2ZjUyYTQuLjMyMzQxMWU3ZjVlM2IgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvY29yZS5jDQo+ ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvY29yZS5jDQo+IEBA IC0xNyw2ICsxNyw4IEBADQo+ICAjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+DQoNCm1vdmUgJyNp bmNsdWRlIDxrdW5pdC9zdGF0aWNfc3R1Yi5oPicgaGVyZS4NCg0KPiAgI2luY2x1ZGUgInJlZ3Mu aCINCj4gICNpbmNsdWRlICJydGw4eHh4dS5oIg0KPiArI2luY2x1ZGUgInJ4LXRlc3QuaCINCj4g KyNpbmNsdWRlIDxrdW5pdC9zdGF0aWNfc3R1Yi5oPg0KPiANCj4gICNkZWZpbmUgRFJJVkVSX05B TUUgInJ0bDh4eHh1Ig0KPiANCj4gQEAgLTYwLDggKzYyLDcgQEAgTU9EVUxFX1BBUk1fREVTQyhk bWFfYWdnX3BhZ2VzLCAiU2V0IERNQSBhZ2dyZWdhdGlvbiBwYWdlcyAocmFuZ2UgMS0xMjcsIDAg dG8gZGkNCj4gICNkZWZpbmUgUlRMOFhYWFVfVFhfVVJCX0hJR0hfV0FURVIgICAgIDMyDQo+IA0K PiAgc3RhdGljIHZvaWQgcnRsOHh4eHVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9v bCBzdXNwZW5kKTsNCj4gLXN0YXRpYyBpbnQgcnRsOHh4eHVfc3VibWl0X3J4X3VyYihzdHJ1Y3Qg cnRsOHh4eHVfcHJpdiAqcHJpdiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBydGw4eHh4dV9yeF91cmIgKnJ4X3VyYik7DQo+ICsNCj4gDQo+ICBzdGF0aWMgc3Ry dWN0IGllZWU4MDIxMV9yYXRlIHJ0bDh4eHh1X3JhdGVzW10gPSB7DQo+ICAgICAgICAgeyAuYml0 cmF0ZSA9IDEwLCAuaHdfdmFsdWUgPSBERVNDX1JBVEVfMU0sIC5mbGFncyA9IDAgfSwNCj4gQEAg LTU4MTcsNyArNTgxOCwzNiBAQCB2b2lkIGphZ3VhcjJfcnhfcGFyc2VfcGh5c3RhdHMoc3RydWN0 IHJ0bDh4eHh1X3ByaXYgKnByaXYsDQo+ICAgICAgICAgfQ0KPiAgfQ0KPiANCj4gLXN0YXRpYyB2 b2lkIHJ0bDh4eHh1X2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBydGw4eHh4dV9wcml2ICpwcml2 KQ0KPiArVklTSUJMRV9JRl9LVU5JVCBzdHJ1Y3QgcnRsOHh4eHVfcnhfdXJiICpydGw4eHh4dV9h bGxvY19yeF91cmIodm9pZCkNCj4gK3sNCj4gKyAgICAgICBLVU5JVF9TVEFUSUNfU1RVQl9SRURJ UkVDVChydGw4eHh4dV9hbGxvY19yeF91cmIpOw0KDQphbiBlbXB0eSBsaW5lLCBhbmQgYWxzbyBh cHBseSB0byBmb2xsb3dpbmcgZnVudGlvbnMuDQoNCj4gKyAgICAgICByZXR1cm4ga21hbGxvY19v Ymooc3RydWN0IHJ0bDh4eHh1X3J4X3VyYik7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0lGX0tV TklUKHJ0bDh4eHh1X2FsbG9jX3J4X3VyYik7DQo+ICsNCj4gK1ZJU0lCTEVfSUZfS1VOSVQgc3Ry dWN0IHNrX2J1ZmYgKnJ0bDh4eHh1X2FsbG9jX3J4X3NrYih1bnNpZ25lZCBpbnQgc2l6ZSkNCj4g K3sNCj4gKyAgICAgICBLVU5JVF9TVEFUSUNfU1RVQl9SRURJUkVDVChydGw4eHh4dV9hbGxvY19y eF9za2IsIHNpemUpOw0KPiArICAgICAgIHJldHVybiBfX25ldGRldl9hbGxvY19za2IoTlVMTCwg c2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0lGX0tVTklUKHJ0bDh4 eHh1X2FsbG9jX3J4X3NrYik7DQo+ICsNCj4gK1ZJU0lCTEVfSUZfS1VOSVQgaW50IHJ0bDh4eHh1 X3J4X3VzYl9zdWJtaXQoc3RydWN0IHVyYiAqdXJiLCBnZnBfdCBmbGFncykNCj4gK3sNCj4gKyAg ICAgICBLVU5JVF9TVEFUSUNfU1RVQl9SRURJUkVDVChydGw4eHh4dV9yeF91c2Jfc3VibWl0LCB1 cmIsIGZsYWdzKTsNCj4gKyAgICAgICByZXR1cm4gdXNiX3N1Ym1pdF91cmIodXJiLCBmbGFncyk7 DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0lGX0tVTklUKHJ0bDh4eHh1X3J4X3VzYl9zdWJtaXQp Ow0KPiArDQo+ICtWSVNJQkxFX0lGX0tVTklUIHZvaWQgcnRsOHh4eHVfc2NoZWR1bGVfcnhfcmV0 cnkoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYpDQo+ICt7DQo+ICsgICAgICAgS1VOSVRfU1RB VElDX1NUVUJfUkVESVJFQ1QocnRsOHh4eHVfc2NoZWR1bGVfcnhfcmV0cnksIHByaXYpOw0KPiAr ICAgICAgIHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fd3EsICZwcml2LT5yeF91cmJfcmV0cnlf d3EsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoUlRMOFhY WFVfUlhfVVJCX1JFVFJZX0RFTEFZX01TKSk7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0lGX0tV TklUKHJ0bDh4eHh1X3NjaGVkdWxlX3J4X3JldHJ5KTsNCj4gKw0KPiArVklTSUJMRV9JRl9LVU5J VCB2b2lkIHJ0bDh4eHh1X2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBydGw4eHh4dV9wcml2ICpw cml2KQ0KPiAgew0KPiAgICAgICAgIHN0cnVjdCBydGw4eHh4dV9yeF91cmIgKnJ4X3VyYiwgKnRt cDsNCj4gICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiBAQCAtNTgzOCwxNSArNTg2OCwx NiBAQCBzdGF0aWMgdm9pZCBydGw4eHh4dV9mcmVlX3J4X3Jlc291cmNlcyhzdHJ1Y3QgcnRsOHh4 eHVfcHJpdiAqcHJpdikNCj4gDQo+ICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJp di0+cnhfdXJiX2xvY2ssIGZsYWdzKTsNCj4gIH0NCj4gK0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQo cnRsOHh4eHVfZnJlZV9yeF9yZXNvdXJjZXMpOw0KPiANCj4gLXN0YXRpYyBpbnQgcnRsOHh4eHVf YWxsb2NfcnhfdXJicyhzdHJ1Y3QgcnRsOHh4eHVfcHJpdiAqcHJpdikNCj4gK1ZJU0lCTEVfSUZf S1VOSVQgaW50IHJ0bDh4eHh1X2FsbG9jX3J4X3VyYnMoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnBy aXYpDQo+ICB7DQo+ICAgICAgICAgc3RydWN0IHJ0bDh4eHh1X3J4X3VyYiAqcnhfdXJiOw0KPiAg ICAgICAgIGludCBpOw0KPiANCj4gICAgICAgICAvKiBObyBSWCB3b3JrIGlzIGFjdGl2ZSB1bnRp bCB0aGUgY29tcGxldGUgcG9vbCBoYXMgYmVlbiBhbGxvY2F0ZWQuICovDQo+ICAgICAgICAgZm9y IChpID0gMDsgaSA8IFJUTDhYWFhVX1JYX1VSQlM7IGkrKykgew0KPiAtICAgICAgICAgICAgICAg cnhfdXJiID0ga21hbGxvY19vYmooc3RydWN0IHJ0bDh4eHh1X3J4X3VyYik7DQo+ICsgICAgICAg ICAgICAgICByeF91cmIgPSBydGw4eHh4dV9hbGxvY19yeF91cmIoKTsNCj4gICAgICAgICAgICAg ICAgIGlmICghcnhfdXJiKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsNCj4gDQo+IEBAIC01ODU5LDYgKzU4OTAsNyBAQCBzdGF0aWMgaW50IHJ0bDh4eHh1X2FsbG9j X3J4X3VyYnMoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYpDQo+IA0KPiAgICAgICAgIHJldHVy biAwOw0KPiAgfQ0KPiArRVhQT1JUX1NZTUJPTF9JRl9LVU5JVChydGw4eHh4dV9hbGxvY19yeF91 cmJzKTsNCj4gDQo+ICBzdGF0aWMgdm9pZCBydGw4eHh4dV9xdWV1ZV9yeF91cmIoc3RydWN0IHJ0 bDh4eHh1X3ByaXYgKnByaXYsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcnRsOHh4eHVfcnhfdXJiICpyeF91cmIpDQo+IEBAIC01ODg3LDcgKzU5MTksNyBAQCBz dGF0aWMgdm9pZCBydGw4eHh4dV9xdWV1ZV9yeF91cmIoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnBy aXYsDQo+ICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+cnhfdXJiX2xvY2ss IGZsYWdzKTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgdm9pZCBydGw4eHh4dV9yeF91cmJfcmV0cnlf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICtWSVNJQkxFX0lGX0tVTklUIHZvaWQg cnRsOHh4eHVfcnhfdXJiX3JldHJ5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAg ew0KPiAgICAgICAgIHN0cnVjdCBydGw4eHh4dV9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHRv X2RlbGF5ZWRfd29yayh3b3JrKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHJ0bDh4eHh1X3ByaXYsDQo+IEBAIC01OTA3LDYgKzU5Mzks NyBAQCBzdGF0aWMgdm9pZCBydGw4eHh4dV9yeF91cmJfcmV0cnlfd29yayhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspDQo+IA0KPiAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYt PnJ4X3VyYl9sb2NrLCBmbGFncyk7DQo+ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0lGX0tVTklUKHJ0 bDh4eHh1X3J4X3VyYl9yZXRyeV93b3JrKTsNCj4gDQo+ICBzdGF0aWMgdm9pZCBydGw4eHh4dV9x dWV1ZV9yeF91cmJfcmV0cnkoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYsDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRsOHh4eHVfcnhfdXJiICpy eF91cmIpDQo+IEBAIC01OTE5LDggKzU5NTIsNyBAQCBzdGF0aWMgdm9pZCBydGw4eHh4dV9xdWV1 ZV9yeF91cmJfcmV0cnkoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYsDQo+ICAgICAgICAgICAg ICAgICBsaXN0X2FkZF90YWlsKCZyeF91cmItPmxpc3QsICZwcml2LT5yeF91cmJfcmV0cnlfbGlz dCk7DQo+ICAgICAgICAgICAgICAgICBwcml2LT5yeF91cmJfcmV0cnlfY291bnQrKzsNCj4gICAg ICAgICAgICAgICAgIC8qIEtlZXAgbm9ybWFsIGNvbXBsZXRpb25zIGZyb20gYnlwYXNzaW5nIHRo ZSBlcnJvciBiYWNrb2ZmLiAqLw0KPiAtICAgICAgICAgICAgICAgcXVldWVfZGVsYXllZF93b3Jr KHN5c3RlbV93cSwgJnByaXYtPnJ4X3VyYl9yZXRyeV93cSwNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtc2Vjc190b19qaWZmaWVzKFJUTDhYWFhVX1JYX1VSQl9SRVRSWV9E RUxBWV9NUykpOw0KPiArICAgICAgICAgICAgICAgcnRsOHh4eHVfc2NoZWR1bGVfcnhfcmV0cnko cHJpdik7DQo+ICAgICAgICAgfSBlbHNlIHsNCj4gICAgICAgICAgICAgICAgIHVzYl9mcmVlX3Vy YigmcnhfdXJiLT51cmIpOw0KPiAgICAgICAgIH0NCj4gQEAgLTU5MjgsNyArNTk2MCw3IEBAIHN0 YXRpYyB2b2lkIHJ0bDh4eHh1X3F1ZXVlX3J4X3VyYl9yZXRyeShzdHJ1Y3QgcnRsOHh4eHVfcHJp diAqcHJpdiwNCj4gICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5yeF91cmJf bG9jaywgZmxhZ3MpOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyB2b2lkIHJ0bDh4eHh1X3J4X3VyYl93 b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gK1ZJU0lCTEVfSUZfS1VOSVQgdm9pZCBy dGw4eHh4dV9yeF91cmJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICB7DQo+ICAg ICAgICAgc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXY7DQo+ICAgICAgICAgc3RydWN0IHJ0bDh4 eHh1X3J4X3VyYiAqcnhfdXJiLCAqdG1wOw0KPiBAQCAtNTk2OCw4ICs2MDAwLDkgQEAgc3RhdGlj IHZvaWQgcnRsOHh4eHVfcnhfdXJiX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAg ICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgIH0NCj4gIH0NCj4gK0VYUE9SVF9TWU1CT0xfSUZf S1VOSVQocnRsOHh4eHVfcnhfdXJiX3dvcmspOw0KPiANCj4gLXN0YXRpYyBpbnQgcnRsOHh4eHVf c3RhcnRfcngoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYpDQo+ICtWSVNJQkxFX0lGX0tVTklU IGludCBydGw4eHh4dV9zdGFydF9yeChzdHJ1Y3QgcnRsOHh4eHVfcHJpdiAqcHJpdikNCj4gIHsN Cj4gICAgICAgICBzdHJ1Y3QgcnRsOHh4eHVfcnhfdXJiICpyeF91cmIsICp0bXA7DQo+ICAgICAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gQEAgLTYwMDYsNiArNjAzOSw3IEBAIHN0YXRpYyBp bnQgcnRsOHh4eHVfc3RhcnRfcngoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYpDQo+ICAgICAg ICAgfQ0KPiAgICAgICAgIHJldHVybiByZXQ7DQo+ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0lGX0tV TklUKHJ0bDh4eHh1X3N0YXJ0X3J4KTsNCj4gDQo+ICAvKg0KPiAgICogVGhlIFJUTDg3MjNCVS9S VEw4MTkyRVUgdmVuZG9yIGRyaXZlciB1c2UgY29leGlzdGVuY2UgdGFibGUgdHlwZQ0KPiBAQCAt NjY0Niw3ICs2NjgwLDcgQEAgaW50IHJ0bDh4eHh1X3BhcnNlX3J4ZGVzYzI0KHN0cnVjdCBydGw4 eHh4dV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPiAgICAgICAgIHJldHVybiBS WF9UWVBFX0RBVEFfUEtUOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyB2b2lkIHJ0bDh4eHh1X3J4X2Nv bXBsZXRlKHN0cnVjdCB1cmIgKnVyYikNCj4gK1ZJU0lCTEVfSUZfS1VOSVQgdm9pZCBydGw4eHh4 dV9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpDQo+ICB7DQo+ICAgICAgICAgc3RydWN0IHJ0 bDh4eHh1X3J4X3VyYiAqcnhfdXJiID0NCj4gICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9vZih1 cmIsIHN0cnVjdCBydGw4eHh4dV9yeF91cmIsIHVyYik7DQo+IEBAIC02Njg2LDkgKzY3MjAsMTAg QEAgc3RhdGljIHZvaWQgcnRsOHh4eHVfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKQ0KPiAg ICAgICAgIHVzYl9mcmVlX3VyYih1cmIpOw0KPiAgICAgICAgIGRldl9rZnJlZV9za2Ioc2tiKTsN Cj4gIH0NCj4gK0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQocnRsOHh4eHVfcnhfY29tcGxldGUpOw0K PiANCj4gLXN0YXRpYyBpbnQgcnRsOHh4eHVfc3VibWl0X3J4X3VyYihzdHJ1Y3QgcnRsOHh4eHVf cHJpdiAqcHJpdiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy dGw4eHh4dV9yeF91cmIgKnJ4X3VyYikNCj4gK1ZJU0lCTEVfSUZfS1VOSVQgaW50IHJ0bDh4eHh1 X3N1Ym1pdF9yeF91cmIoc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDh4eHh1X3J4X3VyYiAq cnhfdXJiKQ0KPiAgew0KPiAgICAgICAgIHN0cnVjdCBydGw4eHh4dV9maWxlb3BzICpmb3BzID0g cHJpdi0+Zm9wczsNCj4gICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPiBAQCAtNjcwNCw3 ICs2NzM5LDcgQEAgc3RhdGljIGludCBydGw4eHh4dV9zdWJtaXRfcnhfdXJiKHN0cnVjdCBydGw4 eHh4dV9wcml2ICpwcml2LA0KPiAgICAgICAgICAgICAgICAgc2tiX3NpemUgPSBJRUVFODAyMTFf TUFYX0ZSQU1FX0xFTiArIHJ4X2Rlc2Nfc3o7DQo+ICAgICAgICAgfQ0KPiANCj4gLSAgICAgICBz a2IgPSBfX25ldGRldl9hbGxvY19za2IoTlVMTCwgc2tiX3NpemUsIEdGUF9LRVJORUwpOw0KPiAr ICAgICAgIHNrYiA9IHJ0bDh4eHh1X2FsbG9jX3J4X3NrYihza2Jfc2l6ZSk7DQo+ICAgICAgICAg aWYgKCFza2IpDQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gDQo+IEBAIC02 NzEyLDcgKzY3NDcsNyBAQCBzdGF0aWMgaW50IHJ0bDh4eHh1X3N1Ym1pdF9yeF91cmIoc3RydWN0 IHJ0bDh4eHh1X3ByaXYgKnByaXYsDQo+ICAgICAgICAgdXNiX2ZpbGxfYnVsa191cmIoJnJ4X3Vy Yi0+dXJiLCBwcml2LT51ZGV2LCBwcml2LT5waXBlX2luLCBza2ItPmRhdGEsDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2tiX3NpemUsIHJ0bDh4eHh1X3J4X2NvbXBsZXRlLCBza2IpOw0K PiAgICAgICAgIHVzYl9hbmNob3JfdXJiKCZyeF91cmItPnVyYiwgJnByaXYtPnJ4X2FuY2hvcik7 DQo+IC0gICAgICAgcmV0ID0gdXNiX3N1Ym1pdF91cmIoJnJ4X3VyYi0+dXJiLCBHRlBfQVRPTUlD KTsNCj4gKyAgICAgICByZXQgPSBydGw4eHh4dV9yeF91c2Jfc3VibWl0KCZyeF91cmItPnVyYiwg R0ZQX0FUT01JQyk7DQo+ICAgICAgICAgaWYgKHJldCkgew0KPiAgICAgICAgICAgICAgICAgdXNi X3VuYW5jaG9yX3VyYigmcnhfdXJiLT51cmIpOw0KPiAgICAgICAgICAgICAgICAgZGV2X2tmcmVl X3NrYihza2IpOw0KPiBAQCAtNjcyMCw2ICs2NzU1LDcgQEAgc3RhdGljIGludCBydGw4eHh4dV9z dWJtaXRfcnhfdXJiKHN0cnVjdCBydGw4eHh4dV9wcml2ICpwcml2LA0KPiAgICAgICAgIH0NCj4g ICAgICAgICByZXR1cm4gcmV0Ow0KPiAgfQ0KPiArRVhQT1JUX1NZTUJPTF9JRl9LVU5JVChydGw4 eHh4dV9zdWJtaXRfcnhfdXJiKTsNCj4gDQo+ICBzdGF0aWMgdm9pZCBydGw4eHh4dV9pbnRfY29t cGxldGUoc3RydWN0IHVyYiAqdXJiKQ0KPiAgew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9yeC10ZXN0LmMNCg0KUHJlZmVyIHRlc3QtcnguYy4g DQoNClJlZ2FyZGluZyBzb21ldGltZSB3ZSBhZGQgdGVzdCBjYXNlcyBmb3IgVFgsIHRoZSBmaWxl IG5hbWUgY2FuDQpiZSB0ZXN0LXR4LmMNCg0KPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0 ZWsvcnRsOHh4eHUvcngtdGVzdC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwMDAuLmFlZGRkY2IwNDljZGYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L3J4LXRlc3QuYw0KPiBAQCAtMCwwICsx LDQ2MSBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiAr I2luY2x1ZGUgPGt1bml0L3N0YXRpY19zdHViLmg+DQo+ICsjaW5jbHVkZSA8a3VuaXQvdGVzdC5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L3VzYi5oPg0KPiArDQo+ICsjaW5jbHVkZSAicnRsOHh4eHUu aCINCj4gKyNpbmNsdWRlICJyeC10ZXN0LmgiDQo+ICsNCj4gKyNkZWZpbmUgUlhfVEVTVF9VUkJT IDMyDQo+ICsjZGVmaW5lIFJYX1RFU1RfU0tCUyA1MTINCj4gKw0KPiArc3RydWN0IHJ4X3Rlc3Qg ew0KDQpJJ20gbm90IGZhbWlsaWFyIHRvIGt1bml0dGVzdCwgc28gSSBkb24ndCBxdWl0IHVuZGVy c3RhbmQgaG93IGl0IHVzZXMgaXRzDQpvd24gY29udGV4dC4gSSdsbCByZXZpZXcgdGhpcyBwYXRj aCBpbiBkZXRhaWwgaW4gdGhlIGZ1dHVyZSwgYW5kIGN1cnJlbnRseQ0KSSBvbmx5IHBvaW50IG91 dCBzb21lIHN1cmZhY2Ugb3Bpbm9ucy4NCg0KPiArICAgICAgIHN0cnVjdCBydGw4eHh4dV9wcml2 IHByaXY7DQo+ICsgICAgICAgc3RydWN0IGllZWU4MDIxMV9odyBodzsNCj4gKyAgICAgICBzdHJ1 Y3QgcnRsOHh4eHVfZmlsZW9wcyBmb3BzOw0KPiArICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlIHVk ZXY7DQo+ICsgICAgICAgc3RydWN0IHJ0bDh4eHh1X3J4X3VyYiAqdXJic1tSWF9URVNUX1VSQlNd Ow0KPiArICAgICAgIHN0cnVjdCBza19idWZmICpza2JzW1JYX1RFU1RfU0tCU107DQo+ICsgICAg ICAgdW5zaWduZWQgaW50IGFsbG9jYXRlZDsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVy czsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NfY2FsbHM7DQo+ICsgICAgICAgdW5zaWdu ZWQgaW50IGFsbG9jX2ZhaWxfYXQ7DQo+ICsgICAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9jYWxs czsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X2ZhaWxfYXQ7DQo+ICsgICAgICAgaW50 IHN1Ym1pdF9lcnJvcjsNCj4gKyAgICAgICBib29sIGZhaWxfc2tiOw0KPiArICAgICAgIGJvb2wg cmV0cnlfcGVuZGluZzsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfYXJtczsNCj4gKyAg ICAgICBhdG9taWNfdCBub3JtYWxfcnVuczsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qg cnhfdGVzdCAqcnhfY3VycmVudCh2b2lkKQ0KPiArew0KPiArICAgICAgIHJldHVybiBrdW5pdF9n ZXRfY3VycmVudF90ZXN0KCktPnByaXY7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcnRs OHh4eHVfcnhfdXJiICpyeF9hbGxvY19vYmplY3Qodm9pZCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1 Y3QgcnhfdGVzdCAqY3R4ID0gcnhfY3VycmVudCgpOw0KDQptYXliZSBmdW5jdGlvbiBuYW1lIGNh biBwb2ludCBvdXQgJ2N0eCcsIGxpa2UgcnhfY3VycmVudF90ZXN0X2N0eCgpLg0KDQo+ICsgICAg ICAgc3RydWN0IHJ0bDh4eHh1X3J4X3VyYiAqcng7DQo+ICsNCj4gKyAgICAgICBjdHgtPmFsbG9j X2NhbGxzKys7DQo+ICsgICAgICAgaWYgKGN0eC0+YWxsb2NfY2FsbHMgPT0gY3R4LT5hbGxvY19m YWlsX2F0KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQoNCmVtcHR5IGxpbmUgDQoN Cj4gKyAgICAgICByeCA9IGttYWxsb2Nfb2JqKHN0cnVjdCBydGw4eHh4dV9yeF91cmIpOw0KPiAr ICAgICAgIGlmIChyeCkNCj4gKyAgICAgICAgICAgICAgIGN0eC0+dXJic1tjdHgtPmFsbG9jYXRl ZCsrXSA9IHJ4Ow0KDQplbXB0eSBsaW5lLiAocGxlYXNlIHJldmlldyB0aGlzIGZpbGUgeW91cnNl bGYgdG8gYWRkIHByb3BlciBlbXB0eSBsaW5lcykNCg0KPiArICAgICAgIHJldHVybiByeDsNCj4g K30NCj4gKw0KDQpbLi4uXQ0KDQo+ICtzdGF0aWMgc3RydWN0IHJ4X3Rlc3QgKnJ4X2luaXQoc3Ry dWN0IGt1bml0ICp0ZXN0LCBib29sIGZha2VfdGltZXIpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0 IHJ4X3Rlc3QgKmN0eDsNCj4gKw0KPiArICAgICAgIGN0eCA9IGt1bml0X2t6YWxsb2ModGVzdCwg c2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIWN0eCkNCj4gKyAgICAg ICAgICAgICAgIHJldHVybiBOVUxMOw0KPiArICAgICAgIHRlc3QtPnByaXYgPSBjdHg7DQo+ICsg ICAgICAgY3R4LT5ody5wcml2ID0gJmN0eC0+cHJpdjsNCj4gKyAgICAgICBjdHgtPnByaXYuaHcg PSAmY3R4LT5odzsNCj4gKyAgICAgICBjdHgtPnByaXYudWRldiA9ICZjdHgtPnVkZXY7DQo+ICsg ICAgICAgY3R4LT5wcml2LmZvcHMgPSAmY3R4LT5mb3BzOw0KPiArICAgICAgIGN0eC0+Zm9wcy5y eF9kZXNjX3NpemUgPSBzaXplb2Yoc3RydWN0IHJ0bDh4eHh1X3J4ZGVzYzE2KTsNCj4gKyAgICAg ICBzcGluX2xvY2tfaW5pdCgmY3R4LT5wcml2LnJ4X3VyYl9sb2NrKTsNCj4gKyAgICAgICBJTklU X0xJU1RfSEVBRCgmY3R4LT5wcml2LnJ4X3VyYl9wZW5kaW5nX2xpc3QpOw0KPiArICAgICAgIElO SVRfTElTVF9IRUFEKCZjdHgtPnByaXYucnhfdXJiX3JldHJ5X2xpc3QpOw0KPiArICAgICAgIGlu aXRfdXNiX2FuY2hvcigmY3R4LT5wcml2LnJ4X2FuY2hvcik7DQo+ICsgICAgICAgSU5JVF9XT1JL KCZjdHgtPnByaXYucnhfdXJiX3dxLCByeF9vYnNlcnZlX3dvcmspOw0KPiArICAgICAgIElOSVRf REVMQVlFRF9XT1JLKCZjdHgtPnByaXYucnhfdXJiX3JldHJ5X3dxLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgIHJ0bDh4eHh1X3J4X3VyYl9yZXRyeV93b3JrKTsNCj4gKyAgICAgICBhdG9t aWNfc2V0KCZjdHgtPm5vcm1hbF9ydW5zLCAwKTsNCj4gKw0KPiArICAgICAgIGt1bml0X2FjdGl2 YXRlX3N0YXRpY19zdHViKHRlc3QsIHJ0bDh4eHh1X2FsbG9jX3J4X3VyYiwgcnhfYWxsb2Nfb2Jq ZWN0KTsNCg0KQWRkIHByZWZpeCB0byBzdWIsIGxpa2U6DQoNCnJ4X2FsbG9jX29iamVjdCAgLT4g IGZha2VfcnRsOHh4eHVfYWxsb2NfcnhfdXJiLCBvcg0KICAgICAgICAgICAgICAgICAtPiAgc3R1 Yl9ydGw4eHh4dV9hbGxvY19yeF91cmINCg0KPiArICAgICAgIGt1bml0X2FjdGl2YXRlX3N0YXRp Y19zdHViKHRlc3QsIHJ0bDh4eHh1X2FsbG9jX3J4X3NrYiwgcnhfYWxsb2NfYnVmZmVyKTsNCj4g KyAgICAgICBrdW5pdF9hY3RpdmF0ZV9zdGF0aWNfc3R1Yih0ZXN0LCBydGw4eHh4dV9yeF91c2Jf c3VibWl0LCByeF9zdWJtaXQpOw0KPiArICAgICAgIGlmIChmYWtlX3RpbWVyKQ0KPiArICAgICAg ICAgICAgICAga3VuaXRfYWN0aXZhdGVfc3RhdGljX3N0dWIodGVzdCwgcnRsOHh4eHVfc2NoZWR1 bGVfcnhfcmV0cnksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByeF9zY2hlZHVsZV9yZXRyeSk7DQo+ICsgICAgICAgcmV0dXJuIGN0eDsNCj4gK30NCj4gKw0K DQpbLi4uXQ0KDQo+ICsNCj4gK3N0YXRpYyB2b2lkIHJ4X3N0YXJ0X2ZhdGFsX2ZhaWx1cmUoc3Ry dWN0IGt1bml0ICp0ZXN0KQ0KPiArew0KPiArICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBp bnQgcG9zaXRpb25zW10gPSB7IDEsIDgsIDMyIH07DQoNCkEgcGVyc29uYWwgcmFuZG9tIHRob3Vn aHQ6IGlmIHRoZSB2YWx1ZXMgY2FuIGJlIHJhbmRvbSwgbWF5YmUgY3JlYXRlDQphbm90aGVyIHRl c3QgaXRlbSB3aXRoIHJhbmRvbSB2YWx1ZXMgZm9yIHVucHJlZGljdGVkIGNvcm5lciBjYXNlcy4N Cihub3Qgb25seSBmb3IgdGhpcyB0ZXN0IGl0ZW0pDQoNCj4gKyAgICAgICBzdHJ1Y3QgcnhfdGVz dCAqY3R4Ow0KPiArICAgICAgIHVuc2lnbmVkIGludCBpOw0KPiArDQo+ICsgICAgICAgZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUocG9zaXRpb25zKTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAg ICBjdHggPSByeF9pbml0KHRlc3QsIHRydWUpOw0KPiArICAgICAgICAgICAgICAgS1VOSVRfQVNT RVJUX05PVF9OVUxMKHRlc3QsIGN0eCk7DQo+ICsgICAgICAgICAgICAgICBLVU5JVF9BU1NFUlRf RVEodGVzdCwgcnhfcG9vbChjdHgsIDMyKSwgMCk7DQo+ICsgICAgICAgICAgICAgICBjdHgtPnN1 Ym1pdF9mYWlsX2F0ID0gcG9zaXRpb25zW2ldOw0KPiArICAgICAgICAgICAgICAgY3R4LT5zdWJt aXRfZXJyb3IgPSAtRU5PREVWOw0KPiArICAgICAgICAgICAgICAgS1VOSVRfRVhQRUNUX0VRKHRl c3QsIHJ0bDh4eHh1X3N0YXJ0X3J4KCZjdHgtPnByaXYpLCAtRU5PREVWKTsNCj4gKyAgICAgICAg ICAgICAgIEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjdHgtPnN1Ym1pdF9jYWxscywgcG9zaXRpb25z W2ldKTsNCj4gKyAgICAgICAgICAgICAgIEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjdHgtPnByaXYu cnhfdXJiX3BlbmRpbmdfY291bnQsIDApOw0KPiArICAgICAgICAgICAgICAgS1VOSVRfRVhQRUNU X0ZBTFNFKHRlc3QsIGN0eC0+cmV0cnlfcGVuZGluZyk7DQo+ICsgICAgICAgICAgICAgICByeF9m aW5pc2godGVzdCwgY3R4KTsNCj4gKyAgICAgICB9DQo+ICt9DQo+ICsNCg0KDQo=