From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=fail (p=quarantine dis=none) header.from=redhat.com Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTPS id 8566A5A0265 for ; Tue, 10 Nov 2026 18:56:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1794333413; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=mdGZNQtrJMSsaGznXEcYqTdqlnwbrW3lnmCXA7B3FaA=; b=SL1C26xHXo2lOgc7iWWBt421c1/y/O338EC5LK8zjbAvTHcI8FeaS9oe/izoQyrClHjkax dTQiQD0nIsNjmcgPC4unn11YvHxpg1zHZGeFeoSeVoK9gd5K0z8nblajXyDaDBuIVgw3h9 R201MhOOMZ+poNdjo01XiwigBF6QMRE= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-86-DpUf5m8CNkS2VdfzAa5Raw-1; Tue, 10 Nov 2026 12:56:52 -0500 X-MC-Unique: DpUf5m8CNkS2VdfzAa5Raw-1 X-Mimecast-MFC-AGG-ID: DpUf5m8CNkS2VdfzAa5Raw_1794333411 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4a20fd059ddso16979575e9.0 for ; Tue, 10 Nov 2026 09:56:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794333411; x=1794938211; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mdGZNQtrJMSsaGznXEcYqTdqlnwbrW3lnmCXA7B3FaA=; b=mehScBxlhoNMxgP+eD38TYIFcC6YWayz7ypUx9mUkjRnE3UEp21GJUsJ5FBdId1cLH MiaKGLA/FAiGPjGFOpMmYyvf1qSOADRHjwgNK9LR3KoX9sD+3xhJHhZD0cmR5GkjkMzd WrVVZWHPZSJ80MO0DHYyjkR1LRLA9gFKeRfglsfdy9PUM/74iHBS1cRGXX3UqtSZKTSG ncEV15ezLTU6KbnnH/H2Pm/HrZuWuQDk0z1WBuNh8NtTlko5CMl55xWbJMHyoKIQX7yJ ZRBsdtNEoxa5alJMkdSNoTEBxBiaU69MhJKptbfveEspkOOvVOIucwIdHnXZSqkxq7Xy MqZg== X-Forwarded-Encrypted: i=1; AL+hErGwXB+WMCURKxWPPWRVUw/PybWDRO+LtEIQ9Xe/jSHgUpjv/5pBr19JmOvcG3HYrSUc1ZeAl76PwLg=@passt.top X-Gm-Message-State: APuU4Z+dzT60D2rGDqMa+UDwPBl7WG+CjoKTumgWo2ST4TPwmkP8Rzhk +SuCVSyusyjL8kxP+noPSrl14x+gzJzEE3ufBw3x4xgddbJDb5jVjv1SueW3Kal7Th34Ow0TwYk 8oXizxXWq9vnBqMSy5vk3P/xHxboX43Pd+sVOzqrgktNV2WGAGrVndyEWdlENZg== X-Gm-Gg: AYBFou0zfOFDnhLM8dUjU2rzp8MjEeQP5gL+QhnkvzTnTo13iG2afvwwog+9BETQSpL B48f0sMJapl3rADAzFGPQswF4PClcEecpjbw0b4jYQI7GKOIwO3sa295Csormhbc8QFePhzbt94 yPrnXA9pOdV7NW2/VaDyB9/eFJ9V0IgNnrQsrxAfYoQJgvS6bPXT8kH2BkTrAtwmXO0oLOva49I b/zCoK4qi2pMglgIY4P1U342rvGRtCfFWIzFpju25Ph+fXHKcjncsFLdhDCDQ46aM6eVhvGl3E+ HuBpBi1msrfrzLWv1+0X7RQDXbm8q/aLcP/PM8TE/cOYD4/zTRYtE2jQJLiuW1Sj1VbpZEacsmT pV/X1eZbBcja7JHV1vCcu9Lyq9rrCuIuLl1dIYQ3xRoL08h2sXJ3ChRP7YnC2Q5uBugILJvaz12 PIo1if1/xULzjxQzBD X-Received: by 2002:a05:600c:4684:b0:4a1:fa27:df7c with SMTP id 5b1f17b1804b1-4ba02356509mr61154135e9.34.1794333410623; Tue, 10 Nov 2026 09:56:50 -0800 (PST) X-Received: by 2002:a05:600c:4684:b0:4a1:fa27:df7c with SMTP id 5b1f17b1804b1-4ba02356509mr61153845e9.34.1794333410154; Tue, 10 Nov 2026 09:56:50 -0800 (PST) Received: from ?IPV6:2a01:e0a:e10:ef90:e9e7:d9a0:a4eb:dc4b? ([2a01:e0a:e10:ef90:e9e7:d9a0:a4eb:dc4b]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4ba01fe9357sm89311355e9.9.2026.11.10.09.56.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 10 Nov 2026 09:56:49 -0800 (PST) Message-ID: <4fe689ab-415e-491d-bdf3-ba22e02b30e5@redhat.com> Date: Tue, 10 Nov 2026 18:56:48 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 7/7] tap/tcp: Replace tcp_payload_used with a ring buffer style index To: aerosouund , passt-dev@passt.top References: <20261016204940.33190-1-aerosound161@gmail.com> <20261016204940.33190-8-aerosound161@gmail.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20261016204940.33190-8-aerosound161@gmail.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 4oOmvcpsH2Cijkkppr4ntMDt6-LVgPuiemmOTyxmwCU_1794333411 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: PWE7XNS23PRSZFEDBYBQFW64AZVHZUPI X-Message-ID-Hash: PWE7XNS23PRSZFEDBYBQFW64AZVHZUPI X-MailFrom: lvivier@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMTAvMTYvMjYgMjI6NDksIGFlcm9zb3V1bmQgd3JvdGU6DQo+IEZyb206IEFtbWFyIFlhc3Nl ciA8YWVyb3NvdW5kMTYxQGdtYWlsLmNvbT4NCj4gDQo+IEJlY2F1c2UgcGFzdGEgcmVzZXRzIHRj cF9wYXlsb2FkX3VzZWQgdG8gMCBhZnRlciBldmVyeSB0Y3AgZmx1c2ggdGhpcw0KPiBtZWFucyB0 aGF0IHBhc3RhIHdpbGwgdmVyeSBxdWlja2x5IG92ZXJyaWRlIGRhdGEgaW4gdGhlIHRjcCBidWZm ZXJzDQo+IGFmdGVyIHNlbmRpbmcuIFRoaXMgaXMgbm90IGEgcHJvYmxlbSB3aGVuIHVzaW5nIHdy aXRldiBiZWNhdXNlIHRoZSBkYXRhDQo+IHdpbGwgaGF2ZSBiZWVuIGNvcGllZCBlbHNld2hlcmUg YnkgdGhlIGtlcm5lbCwgYnV0IHRoaXMgaXMgYSBwcm9ibGVtIGZvcg0KPiB2aG9zdCB3aGVyZSB0 aGUga2VybmVsIHRocmVhZCBtYXkgbm90IGhhdmUgZmluaXNoZWQgcHJvY2Vzc2luZyB0aGlzDQo+ IGRhdGEuIFRoaXMgaXMgd2h5IGEgc3luY2hyb25vdXMgc2VuZCB3YXMgcmVxdWlyZWQgaW4gdmhv c3QsIHdoaWNoDQo+IG9idmlvdXNseSBhZmZlY3RzIHBlcmZvcm1hbmNlLg0KPiANCj4gUmVwbGFj ZSB0Y3BfcGF5bG9hZF91c2VkIHdpdGggYSBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4IGhvbGRpbmcg dGhlIGxhc3QNCj4gaW5kZXggd2Ugd3JvdGUgdG8gYW5kIGEgY291bnRlciB0aGF0IGdldHMgdXBk YXRlZCB3aGVuIHdlIGZsdXNoIHBhY2tldHMsDQo+IGZyb20gd2hlcmUgd2UgbGFzdCBmbHVzaGVk IHVwIHRvIHRoYXQgaW5kZXguIEJvdGggYXJlIGdyb3cgb25seSBhbmQNCj4gYWNjZXNzIGdldHMg bW9kZGVkIGJ5IFRDUF9GUkFNRVNfTUVNLg0KPiANCj4gUmV3cml0ZSBmdW5jdGlvbnMgaW4gdGNw X2J1Zi5jIHRvIHVzZSB0aGF0IGluZGV4IGFuZCBoYW5kbGUgdGhlDQo+IHdyYXBhcm91bmQgY2Fz ZSAoc2VuZGluZyBhIGJhdGNoIHRoYXQgc3RhcnRlZCBuZWFyIHRoZSBlbmQgb2YgdGhlDQo+IGJ1 ZmZlcnMgYW5kIGNvbnRpbnVlZCB0byBiZSBhdCB0aGUgc3RhcnQpIGluIHRjcF9wYXlsb2FkX2Zs dXNoKCkuDQo+IA0KPiBXaXRoIHRoZSBidWZmZXJzIG5vIGxvbmdlciByZXVzZWQgZnJvbSB1bmRl ciB0aGUga2VybmVsLCBkcm9wIHRoZQ0KPiBzeW5jaHJvbm91cyB3YWl0IGZyb20gdGFwX3NlbmRf ZnJhbWVzX3Zob3N0KCkgYW5kIHJlY2xhaW0gZGVzY3JpcHRvcnMNCj4gdW50aWwgdGhlcmUgYXJl IGVub3VnaCBmb3IgdGhlIHNlbmQgaW5zdGVhZC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEV1Z2Vu aW8gUMOpcmV6IDxlcGVyZXptYUByZWRoYXQuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBBbW1hciBZ YXNzZXIgPGFlcm9zb3VuZDE2MUBnbWFpbC5jb20+DQo+IC0tLQ0KPiAgIHRhcC5jICAgICB8ICAg NiArLS0NCj4gICB0Y3BfYnVmLmMgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRp b25zKCspLCAzNSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS90YXAuYyBiL3RhcC5j DQo+IGluZGV4IGJjMjcwMGYuLjA0NTY1ODkgMTAwNjQ0DQo+IC0tLSBhL3RhcC5jDQo+ICsrKyBi L3RhcC5jDQo+IEBAIC00OTAsMTAgKzQ5MCw2IEBAIHN0YXRpYyBzaXplX3QgdGFwX3NlbmRfZnJh bWVzX3Zob3N0KGNvbnN0IHN0cnVjdCBjdHggKmMsDQo+ICAgCXZob3N0X2tpY2soJnZyaW5nX3Vz ZWRfYWxsW1ZIT1NUX1VTRURfUV9JRFhdLA0KPiAgIAkJICAgYy0+dmhvc3QudnFbVkhPU1RfVVNF RF9RX0lEWF0ua2lja19mZCk7DQo+IA0KPiAtCS8qIHdhaXQgdW50aWwgdGhlIGtlcm5lbCBmaW5p c2hlcyBwcm9jZXNzaW5nIHRoaXMgc2VuZCAqLw0KPiAtCXdoaWxlIChhdmFpbC0+aWR4ICE9IHZy aW5nX3VzZWRfYWxsWzFdLnVzZWQuaWR4KQ0KPiAtCQk7DQo+IC0NCj4gICAJcmV0dXJuIHByb2Nl c3NlZF9mcmFtZXM7DQo+ICAgfQ0KPiANCj4gQEAgLTUyMSw3ICs1MTcsNyBAQCBzdGF0aWMgc2l6 ZV90IHRhcF9zZW5kX2ZyYW1lc19wYXN0YShjb25zdCBzdHJ1Y3QgY3R4ICpjLA0KPiAgIAlzaXpl X3QgaTsNCj4gDQo+ICAgCWlmICh2aG9zdCkNCj4gLQkJcmV0dXJuIHRhcF9zZW5kX2ZyYW1lc192 aG9zdChjLCBpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBuZnJhbWVzKTsNCj4gKwkgCXJldHVybiB0YXBf c2VuZF9mcmFtZXNfdmhvc3QoYywgaW92LCBidWZzX3Blcl9mcmFtZSwgbmZyYW1lcyk7DQoNClVu cmVsYXRlZCBjaGFuZ2UuIFRoaXMgYWRkcyBhIHNwYWNlIGluIHRoZSBtaWRkbGUgb2YgdGFicy4N Cg0KPiANCj4gICAJZm9yIChpID0gMDsgaSA8IG5idWZzOyBpICs9IGJ1ZnNfcGVyX2ZyYW1lKSB7 DQo+ICAgCQlzc2l6ZV90IHJjID0gd3JpdGV2KGMtPmZkX3RhcCwgaW92ICsgaSwgYnVmc19wZXJf ZnJhbWUpOw0KPiBkaWZmIC0tZ2l0IGEvdGNwX2J1Zi5jIGIvdGNwX2J1Zi5jDQo+IGluZGV4IDQ5 M2M1YzkuLjQyNTQxMGYgMTAwNjQ0DQo+IC0tLSBhL3RjcF9idWYuYw0KPiArKysgYi90Y3BfYnVm LmMNCj4gQEAgLTU5LDcgKzU5LDIyIEBAIHN0YXRpY19hc3NlcnQoTVNTNiA8PSBzaXplb2YodGNw X3BheWxvYWRbMF0uZGF0YSksICJNU1M2IGlzIGdyZWF0ZXIgdGhhbiA2NTUxNiIpDQo+IA0KPiAg IC8qIFJlZmVyZW5jZXMgdHJhY2tpbmcgdGhlIG93bmVyIGNvbm5lY3Rpb24gb2YgZnJhbWVzIGlu IHRoZSB0YXAgb3V0cXVldWUgKi8NCj4gICBzdGF0aWMgc3RydWN0IHRjcF90YXBfY29ubiAqdGNw X2ZyYW1lX2Nvbm5zW1RDUF9GUkFNRVNfTUVNXTsNCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgdGNw X3BheWxvYWRfdXNlZDsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4 IC0gR3Jvdy1vbmx5IGN1cnNvcnMgaW50byB0aGUgVENQIGZyYW1lIGJ1ZmZlcnMNCj4gKyAqIEB0 Y3BfYnVmX2lkeDoJVGhlIGxhc3QgaW5kZXggd2Ugd3JvdGUgZGF0YSB0byBpbiB0aGUgdGNwIGJ1 ZmZlcnMNCj4gKyAqIEBwcm9jZXNzZWQ6CQlMYXN0IGluZGV4IHdlIHB1c2hlZCB0byB0aGUgdW5k ZXJseWluZyBjb25uZWN0aW9uDQo+ICsgKi8NCj4gK3N0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRf aWR4IHsNCj4gKwl1bnNpZ25lZCBpbnQgdGNwX2J1Zl9pZHg7DQo+ICsJdW5zaWduZWQgaW50IHBy b2Nlc3NlZDsNCj4gK30gdGNwX2lkeDsNCj4gKw0KPiArLyogbGF0ZXN0IGluZGV4IHdlIHdyb3Rl IHRvIGludG8gdGhlIHRjcCBidWZmZXJzICovDQo+ICsjZGVmaW5lIFRDUF9DVVJSX0lEWAkodGNw X2lkeC50Y3BfYnVmX2lkeCAlIFRDUF9GUkFNRVNfTUVNKQ0KPiArDQo+ICsvKiBjdXJyZW50IGFt b3VudCBvZiBmcmFtZXMgcXVldWVkIGluIHRjcCBidWZmZXJzIGJ1dCBub3Qgc2VudCAqLw0KPiAr I2RlZmluZSBUQ1BfRlJBTUVfQ09VTlQJKHRjcF9pZHgudGNwX2J1Zl9pZHggLSB0Y3BfaWR4LnBy b2Nlc3NlZCkNCg0KUGxlYXNlIGRvbid0IHVzZSB1cHBlcmNhc2UsIGl0J3MgZ2VuZXJhbGx5IGNv bnN0YW50Lg0KDQo+IA0KPiAgIC8qIHJlY3Ztc2coKS9zZW5kbXNnKCkgZGF0YSBmb3IgdGFwICov DQo+ICAgc3RhdGljIHN0cnVjdCBpb3ZlYwlpb3Zfc29jawkJW1RDUF9GUkFNRVNfTUVNICsgRElT Q0FSRF9JT1ZfTlVNXTsNCj4gQEAgLTE1OCwxNSArMTczLDQ2IEBAIHN0YXRpYyB2b2lkIHRjcF9y ZXZlcnRfc2VxKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKipjb25u cywNCj4gICAgKi8NCj4gICB2b2lkIHRjcF9wYXlsb2FkX2ZsdXNoKGNvbnN0IHN0cnVjdCBjdHgg KmMsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqbm93KQ0KPiAgIHsNCj4gLQlzaXplX3QgbTsNCj4g Kwl1bnNpZ25lZCBpbnQgdG90YWwgPSBUQ1BfRlJBTUVfQ09VTlQ7DQo+ICsJdW5zaWduZWQgaW50 IHN0YXJ0ID0gdGNwX2lkeC5wcm9jZXNzZWQgJSBUQ1BfRlJBTUVTX01FTTsNCj4gKwl1bnNpZ25l ZCBpbnQgZmlyc3RfYmF0Y2hfc2l6ZSwgc2VudDsNCj4gDQo+IC0JbSA9IHRhcF9zZW5kX2ZyYW1l cyhjLCAmdGNwX2wyX2lvdlswXVswXSwgVENQX05VTV9JT1ZTLA0KPiAtCQkJICAgIHRjcF9wYXls b2FkX3VzZWQpOw0KPiAtCWlmIChtICE9IHRjcF9wYXlsb2FkX3VzZWQpIHsNCj4gLQkJdGNwX3Jl dmVydF9zZXEoYywgJnRjcF9mcmFtZV9jb25uc1ttXSwgJnRjcF9sMl9pb3ZbbV0sDQo+IC0JCQkg ICAgICAgdGNwX3BheWxvYWRfdXNlZCAtIG0sIG5vdyk7DQo+ICsJaWYgKCF0b3RhbCkNCj4gKwkJ cmV0dXJuOw0KPiArDQo+ICsJLyogV2hhdCBpcyBzbWFsbGVyID8gYWxsIHdlIHdoYXQgd2Ugd2Fu dCB0byBzZW5kID8gb3IgMTI4IC0gdGhlIGluZGV4DQo+ICsJICogaW5kaWNhdGluZyB0aGUgc3Rh cnQgb2Ygd2hlcmUgd2Ugd3JvdGUgdGhpcyBiYXRjaCA/DQo+ICsJICovDQo+ICsJZmlyc3RfYmF0 Y2hfc2l6ZSA9IE1JTih0b3RhbCwgVENQX0ZSQU1FU19NRU0gLSBzdGFydCk7DQo+ICsNCj4gKwlz ZW50ID0gdGFwX3NlbmRfZnJhbWVzKGMsICZ0Y3BfbDJfaW92W3N0YXJ0XVswXSwgVENQX05VTV9J T1ZTLA0KPiArCQkJICAgICAgIGZpcnN0X2JhdGNoX3NpemUpOw0KPiArCWlmIChzZW50IDwgZmly c3RfYmF0Y2hfc2l6ZSkgew0KPiArCQl0Y3BfcmV2ZXJ0X3NlcShjLCAmdGNwX2ZyYW1lX2Nvbm5z W3N0YXJ0ICsgc2VudF0sDQo+ICsJCQkgICAgICAgJnRjcF9sMl9pb3Zbc3RhcnQgKyBzZW50XSwN Cj4gKwkJCSAgICAgICBmaXJzdF9iYXRjaF9zaXplIC0gc2VudCwgbm93KTsNCj4gKwkJZ290byBv dXQ7DQo+ICAgCX0NCj4gLQl0Y3BfcGF5bG9hZF91c2VkID0gMDsNCj4gKw0KPiArCS8qIFRoZXJl IHdhcyBtb3JlIGRhdGEgdG8gc2VuZCB0aGFuIGZyb20gdGNwX2lkeC5wcm9jZXNzZWQgdXAgdG8g MTI4Lg0KPiArCSAqIHRoZSByZXN0IG9mIHRoZSBiYXRjaCBpcyBnb2luZyB0byBiZSBhdCBpbmRl eCAwIHVwIHRvdGFsIC0NCj4gKwkgKiBmaXJzdF9iYXRjaF9zaXplLg0KPiArCSAqLw0KPiArCWlm ICh0b3RhbCA+IGZpcnN0X2JhdGNoX3NpemUpIHsNCj4gKwkJdW5zaWduZWQgaW50IHNlY29uZF9i YXRjaF9zaXplID0gdG90YWwgLSBmaXJzdF9iYXRjaF9zaXplOw0KPiArCQlzaXplX3QgbTI7DQo+ ICsNCj4gKwkJbTIgPSB0YXBfc2VuZF9mcmFtZXMoYywgJnRjcF9sMl9pb3ZbMF1bMF0sIFRDUF9O VU1fSU9WUywNCj4gKwkJCQkgICAgIHNlY29uZF9iYXRjaF9zaXplKTsNCj4gKwkJc2VudCArPSBt MjsNCj4gKw0KPiArCQlpZiAobTIgPCBzZWNvbmRfYmF0Y2hfc2l6ZSkNCj4gKwkJCXRjcF9yZXZl cnRfc2VxKGMsICZ0Y3BfZnJhbWVfY29ubnNbbTJdLCAmdGNwX2wyX2lvdlttMl0sDQo+ICsJCQkJ ICAgICAgIHNlY29uZF9iYXRjaF9zaXplIC0gbTIsIG5vdyk7DQo+ICsJfQ0KPiArDQo+ICtvdXQ6 DQo+ICsJdGNwX2lkeC5wcm9jZXNzZWQgKz0gc2VudDsNCj4gICB9DQo+IA0KPiAgIC8qKg0KPiBA QCAtMjQ0LDEzICsyOTAsMTMgQEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBj dHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncywNCj4gICAJdWludDMy X3Qgc2VxOw0KPiAgIAlpbnQgcmV0Ow0KPiANCj4gLQlpb3YgPSB0Y3BfbDJfaW92W3RjcF9wYXls b2FkX3VzZWRdOw0KPiArCWlvdiA9IHRjcF9sMl9pb3ZbVENQX0NVUlJfSURYXTsNCj4gICAJaWYg KENPTk5fVjQoY29ubikpDQo+IC0JCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNw NF9wYXlsb2FkX2lwW3RjcF9wYXlsb2FkX3VzZWRdKTsNCj4gKwkJaW92W1RDUF9JT1ZfSVBdID0g SU9WX09GX0xWQUxVRSh0Y3A0X3BheWxvYWRfaXBbVENQX0NVUlJfSURYXSk7DQo+ICAgCWVsc2UN Cj4gLQkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A2X3BheWxvYWRfaXBbdGNw X3BheWxvYWRfdXNlZF0pOw0KPiArCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRj cDZfcGF5bG9hZF9pcFtUQ1BfQ1VSUl9JRFhdKTsNCj4gDQo+IC0JaW92W1RDUF9JT1ZfRVRIXSA9 IElPVl9PRl9MVkFMVUUodGNwX2V0aF9oZHJbdGNwX3BheWxvYWRfdXNlZF0pOw0KPiArCWlvdltU Q1BfSU9WX0VUSF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcF9ldGhfaGRyW1RDUF9DVVJSX0lEWF0pOw0K PiAgIAlwYXlsb2FkID0gaW92W1RDUF9JT1ZfUEFZTE9BRF0uaW92X2Jhc2U7DQo+ICAgCXNlcSA9 IGNvbm4tPnNlcV90b190YXA7DQo+ICAgCXJldCA9IHRjcF9wcmVwYXJlX2ZsYWdzKGMsIGNvbm4s IGZsYWdzLCAmcGF5bG9hZC0+dGgsDQo+IEBAIC0yNTksNyArMzA1LDggQEAgaW50IHRjcF9idWZf c2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4s IGludCBmbGFncywNCj4gICAJaWYgKHJldCA8PSAwKQ0KPiAgIAkJcmV0dXJuIHJldDsNCj4gDQo+ IC0JdGNwX2ZyYW1lX2Nvbm5zW3RjcF9wYXlsb2FkX3VzZWQrK10gPSBjb25uOw0KPiArCXRjcF9p ZHgudGNwX2J1Zl9pZHgrKzsNCj4gKwl0Y3BfZnJhbWVfY29ubnNbVENQX0NVUlJfSURYXSA9IGNv bm47DQoNClNhbWUgY29tbWVudCBhcyBmb3IgdjEsIHRjcF9idWZfaWR4IGlzIGluY3JlbWVudGVk IGJlZm9yZSB1c2UsIHdoaWxlIHRjcF9wYXlsb2FkX3VzZWQgd2FzIA0KaW5jcmVtZW50ZWQgYWZ0 ZXIgdXNlLg0KDQo+ICAgCWw0bGVuID0gb3B0bGVuICsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpOw0K PiAgIAlpb3ZbVENQX0lPVl9QQVlMT0FEXS5pb3ZfbGVuID0gbDRsZW47DQo+IA0KPiBAQCAtMjcx LDggKzMxOCw5IEBAIGludCB0Y3BfYnVmX3NlbmRfZmxhZyhjb25zdCBzdHJ1Y3QgY3R4ICpjLCBz dHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLCBpbnQgZmxhZ3MsDQo+ICAgCXRjcF9sMl9idWZfcGFk KGlvdik7DQo+IA0KPiAgIAlpZiAoZmxhZ3MgJiBEVVBfQUNLKSB7DQo+IC0JCXN0cnVjdCBpb3Zl YyAqZHVwX2lvdiA9IHRjcF9sMl9pb3ZbdGNwX3BheWxvYWRfdXNlZF07DQo+IC0JCXRjcF9mcmFt ZV9jb25uc1t0Y3BfcGF5bG9hZF91c2VkKytdID0gY29ubjsNCj4gKwkJc3RydWN0IGlvdmVjICpk dXBfaW92ID0gdGNwX2wyX2lvdltUQ1BfQ1VSUl9JRFhdOw0KPiArCQl0Y3BfZnJhbWVfY29ubnNb VENQX0NVUlJfSURYXSA9IGNvbm47DQo+ICsJCXRjcF9pZHgudGNwX2J1Zl9pZHgrKzsNCj4gDQo+ ICAgCQltZW1jcHkoZHVwX2lvdltUQ1BfSU9WX1RBUF0uaW92X2Jhc2UsIGlvdltUQ1BfSU9WX1RB UF0uaW92X2Jhc2UsDQo+ICAgCQkgICAgICAgaW92W1RDUF9JT1ZfVEFQXS5pb3ZfbGVuKTsNCj4g QEAgLTI4NCw3ICszMzIsNyBAQCBpbnQgdGNwX2J1Zl9zZW5kX2ZsYWcoY29uc3Qgc3RydWN0IGN0 eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwgaW50IGZsYWdzLA0KPiAgIAkJZHVwX2lv dltUQ1BfSU9WX0VUSF9QQURdLmlvdl9sZW4gPSBpb3ZbVENQX0lPVl9FVEhfUEFEXS5pb3ZfbGVu Ow0KPiAgIAl9DQo+IA0KPiAtCWlmICh0Y3BfcGF5bG9hZF91c2VkID4gVENQX0ZSQU1FU19NRU0g LSAyKQ0KPiArCWlmIChUQ1BfRlJBTUVfQ09VTlQgPiBUQ1BfRlJBTUVTX01FTSAtIDIpDQo+ICAg CQl0Y3BfcGF5bG9hZF9mbHVzaChjLCBub3cpOw0KPiANCj4gICAJcmV0dXJuIDA7DQo+IEBAIC0z MDksMjEgKzM1NywyOSBAQCBzdGF0aWMgdm9pZCB0Y3BfZGF0YV90b190YXAoY29uc3Qgc3RydWN0 IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwNCj4gICAJc3RydWN0IGlvdmVjICpp b3Y7DQo+IA0KPiAgIAljb25uLT5zZXFfdG9fdGFwID0gc2VxICsgZGxlbjsNCj4gLQl0Y3BfZnJh bWVfY29ubnNbdGNwX3BheWxvYWRfdXNlZF0gPSBjb25uOw0KPiAtCWlvdiA9IHRjcF9sMl9pb3Zb dGNwX3BheWxvYWRfdXNlZF07DQo+ICsJdGNwX2ZyYW1lX2Nvbm5zW1RDUF9DVVJSX0lEWF0gPSBj b25uOw0KPiArCWlvdiA9IHRjcF9sMl9pb3ZbVENQX0NVUlJfSURYXTsNCj4gICAJaWYgKENPTk5f VjQoY29ubikpIHsNCj4gICAJCWlmIChub19jc3VtKSB7DQo+IC0JCQlzdHJ1Y3QgaW92ZWMgKmlv dl9wcmV2ID0gdGNwX2wyX2lvdlt0Y3BfcGF5bG9hZF91c2VkIC0gMV07DQo+ICsJCQkvKiBUQ1Bf Q1VSUl9JRFggbWF5IGJlIHplcm8gaWYgdGhlIHVuZGVybHlpbmcNCj4gKwkJCSAqIHRjcF9pZHgu dGNwX2J1Zl9pZHggaXMgYSBtdWx0aXBsZSBvZiAxMjgsIG1pbnVzIG9uZQ0KPiArCQkJICogd2ls bCB5aWVsZCBhbiBpbnZhbGlkIGluZGV4LiBUaGUgcHJldmlvdXMgaW5kZXggdG8gMA0KPiArCQkJ ICogaXMgMTI3Lg0KPiArCQkJICovDQo+ICsJCQl1bnNpZ25lZCBpbnQgcHJldl9pZHggPSAoVENQ X0NVUlJfSURYICsNCj4gKwkJCQkJCSBUQ1BfRlJBTUVTX01FTSAtIDEpICUNCj4gKwkJCQkJCVRD UF9GUkFNRVNfTUVNOw0KPiArCQkJc3RydWN0IGlvdmVjICppb3ZfcHJldiA9IHRjcF9sMl9pb3Zb cHJldl9pZHhdOw0KPiAgIAkJCWNvbnN0IHN0cnVjdCBpcGhkciAqaXBoID0gaW92X3ByZXZbVENQ X0lPVl9JUF0uaW92X2Jhc2U7DQo+IA0KPiAgIAkJCS8qIG92ZXJ3cml0ZSBJUDRfQ1NVTSBmbGFn IGFzIHdlIHNldCB0aGUgY2hlY2tzdW0gKi8NCj4gICAJCQljaGVjayA9IGlwaC0+Y2hlY2s7DQo+ ICAgCQl9DQo+IC0JCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNF9wYXlsb2Fk X2lwW3RjcF9wYXlsb2FkX3VzZWRdKTsNCj4gKwkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xW QUxVRSh0Y3A0X3BheWxvYWRfaXBbVENQX0NVUlJfSURYXSk7DQo+ICAgCX0gZWxzZSBpZiAoQ09O Tl9WNihjb25uKSkgew0KPiAtCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcDZf cGF5bG9hZF9pcFt0Y3BfcGF5bG9hZF91c2VkXSk7DQo+ICsJCWlvdltUQ1BfSU9WX0lQXSA9IElP Vl9PRl9MVkFMVUUodGNwNl9wYXlsb2FkX2lwW1RDUF9DVVJSX0lEWF0pOw0KPiAgIAl9DQo+IC0J aW92W1RDUF9JT1ZfRVRIXS5pb3ZfYmFzZSA9ICZ0Y3BfZXRoX2hkclt0Y3BfcGF5bG9hZF91c2Vk XTsNCj4gKwlpb3ZbVENQX0lPVl9FVEhdLmlvdl9iYXNlID0gJnRjcF9ldGhfaGRyW1RDUF9DVVJS X0lEWF07DQo+ICAgCXBheWxvYWQgPSBpb3ZbVENQX0lPVl9QQVlMT0FEXS5pb3ZfYmFzZTsNCj4g ICAJcGF5bG9hZC0+dGgudGhfb2ZmID0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpIC8gNDsNCj4gICAJ cGF5bG9hZC0+dGgudGhfeDIgPSAwOw0KPiBAQCAtMzM1LDcgKzM5MSw4IEBAIHN0YXRpYyB2b2lk IHRjcF9kYXRhX3RvX3RhcChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25u ICpjb25uLA0KPiANCj4gICAJdGNwX2wyX2J1Zl9wYWQoaW92KTsNCj4gDQo+IC0JaWYgKCsrdGNw X3BheWxvYWRfdXNlZCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkNCj4gKwl0Y3BfaWR4LnRjcF9idWZf aWR4Kys7DQo+ICsJaWYgKFRDUF9GUkFNRV9DT1VOVCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkNCj4g ICAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7DQo+ICAgfQ0KPiANCj4gQEAgLTM3NSwxNSAr NDMyLDEzIEBAIGludCB0Y3BfYnVmX2RhdGFfZnJvbV9zb2NrKGNvbnN0IHN0cnVjdCBjdHggKmMs IHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+ICAgCQlyZXR1cm4gLTE7DQo+ICAgCX0NCj4g DQo+IC0JaWYgKHRjcF9wYXlsb2FkX3VzZWQgKyBmaWxsX2J1ZnMgPiBUQ1BfRlJBTUVTX01FTSkg ew0KPiArCWlmIChUQ1BfRlJBTUVfQ09VTlQgKyAodW5zaWduZWQgaW50KWZpbGxfYnVmcyA+IFRD UF9GUkFNRVNfTUVNKQ0KPiAgIAkJdGNwX3BheWxvYWRfZmx1c2goYywgbm93KTsNCj4gDQo+IC0J CS8qIFNpbGVuY2UgQ292ZXJpdHkgQ1dFLTEyNSBmYWxzZSBwb3NpdGl2ZSAqLw0KPiAtCQl0Y3Bf cGF5bG9hZF91c2VkID0gMDsNCj4gLQl9DQo+IC0NCj4gICAJZm9yIChpID0gMCwgaW92ID0gaW92 X3NvY2sgKyBESVNDQVJEX0lPVl9OVU07IGkgPCBmaWxsX2J1ZnM7IGkrKywgaW92KyspIHsNCj4g LQkJaW92LT5pb3ZfYmFzZSA9ICZ0Y3BfcGF5bG9hZFt0Y3BfcGF5bG9hZF91c2VkICsgaV0uZGF0 YTsNCj4gKwkJdW5zaWduZWQgaW50IGlkeCA9IChUQ1BfQ1VSUl9JRFggKyBpKSAlIFRDUF9GUkFN RVNfTUVNOw0KPiArDQo+ICsJCWlvdi0+aW92X2Jhc2UgPSAmdGNwX3BheWxvYWRbaWR4XS5kYXRh Ow0KPiAgIAkJaW92LT5pb3ZfbGVuID0gbXNzOw0KPiAgIAl9DQo+ICAgCWlmIChpb3ZfcmVtKQ0K PiBAQCAtNDU3LDcgKzUxMiw3IEBAIGludCB0Y3BfYnVmX2RhdGFfZnJvbV9zb2NrKGNvbnN0IHN0 cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+ICAgCWRsZW4gPSBtc3M7 DQo+ICAgCXNlcSA9IGNvbm4tPnNlcV90b190YXA7DQo+ICAgCWZvciAoaSA9IDA7IGkgPCBzZW5k X2J1ZnM7IGkrKykgew0KPiAtCQlpbnQgbm9fY3N1bSA9IGkgJiYgaSAhPSBzZW5kX2J1ZnMgLSAx ICYmIHRjcF9wYXlsb2FkX3VzZWQ7DQo+ICsJCWludCBub19jc3VtID0gaSAmJiBpICE9IHNlbmRf YnVmcyAtIDE7DQo+ICAgCQlib29sIHB1c2ggPSBmYWxzZTsNCj4gDQo+ICAgCQlpZiAoaSA9PSBz ZW5kX2J1ZnMgLSAxKSB7DQo+IC0tDQo+IDIuMzkuNSAoQXBwbGUgR2l0LTE1NCkNCg0K