From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KIO40U8h; dkim-atps=neutral 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 7B7AB5A0265 for ; Wed, 16 Sep 2026 16:29:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1789568986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc: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=yIsyi2V/RlFfKeFrcS1qY1QJChn1RFPC7JQc1WandeU=; b=KIO40U8hnVdsGY7QzbQy6/MCxT7n6Ik+7Ws+hbhZCrcjUR/niktP/GuzO4gDICnasfo24f xtJl5WYGcj8WeGiGvoDJATs1UtwzuLcqe4su83HIz1KxyZp3IIXul8lF/SzQ/Pa1ATPjny I3PregBlTC0G6iPJq44gRRqXT+x9Zm4= Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-422-oDhhUKaVNLaiADdYuHJTXQ-1; Wed, 16 Sep 2026 10:29:42 -0400 X-MC-Unique: oDhhUKaVNLaiADdYuHJTXQ-1 X-Mimecast-MFC-AGG-ID: oDhhUKaVNLaiADdYuHJTXQ_1789568982 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-c252b87e9a2so542901966b.3 for ; Wed, 16 Sep 2026 07:29:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789568981; x=1790173781; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:cc: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=yIsyi2V/RlFfKeFrcS1qY1QJChn1RFPC7JQc1WandeU=; b=n9UQRMdiIFJvZ4p0SAko9Hdn8cvO2jdpp+HC+1+m0YjhWm2G9pRpcnHvgm6Z8JdcAb Hqaq6IXcAZPuWBEfzUnYi6KmE606CL0CZ6m+65XgPNEPXpSDCKdl9Bb0Y+25y9knHV9u f5DQpOUHGOCR0aTqiNixTj4Gu41rciUZsrxpZZmZfq7rFQ+W7JFLLvVdBMbOGctPAeNN FWZn9jZGGPju0jb/cfF689DYBn42Tr9Otj4uK0JCKOuz9JKajADdk+Yhw4q5AwZitzqv DFsOYcEsvLmut2eSrkJSiSgTRfUtDkh12VTVYvq32mQZjPQmCTkLdDm/OxW/QtvwD6EP Cpjg== X-Forwarded-Encrypted: i=1; AKwUvBzGI4hwsnN9Dgjnzq11LrlBkjcRPZ/XPcePyaQZdXx8EbSwaz2qw9WKKEo5mW9jK0njBmZRrYLW+6s=@passt.top X-Gm-Message-State: AFuF++mJqlmMt3m7WOadbRk2AnXaRF2H3s3heKLaZfwivyzWMqWA9dQ0 WD2HZF+3j8NbymCTOUvn3H3vtiU2SfaKBDcCwJ7XxR7vN/eh1V5+2m8RhUQoAguT391hqaWVogr 2dMCLZlWVcv64bUD5iAQfoJm4djV02lrE8SYhO4+0Hvzfy1tOOjveuw== X-Gm-Gg: AYBFou1ovgVnD+hOc68d0mWARJM3z4lpEPCarhgJiFflES/ScZ2VmkfVFo3QfDBWNdW mZ/c4YIR9gWDlmt/Bq7ulnen65eJpgOekvtOhZq8gRXpjpp7Qo7DTEZVdDZk/VZUmh/HdMn8Ica RXiJMX1h+0lcHZXPR4WtScuv9vGd8ovUCilh/InDld1hQ9Nh/S8r1E7yKR4e/HIZ02cdK2CpQ3D 2sPPJZIS1EkW0mLbtUEppc7n7camnjeb7ogJyaxfeY6Z0mou7df4UJFkWC033znMV5u+SxmPqK4 UPSRPEia7tpmqc8BU1fxABBJR22LfQrIJOMwgSRBckZU4ksKK89auuF7F8Fl2ZBOzY89fW8friR SzA4nLzAHcQdUTaRGa7jvs6ZQr228fmwWTIaEXjmTzHc= X-Received: by 2002:a17:906:6a12:b0:c28:f9e4:836c with SMTP id a640c23a62f3a-c29e52ff409mr217860966b.28.1789568981388; Wed, 16 Sep 2026 07:29:41 -0700 (PDT) X-Received: by 2002:a17:906:6a12:b0:c28:f9e4:836c with SMTP id a640c23a62f3a-c29e52ff409mr217859466b.28.1789568980928; Wed, 16 Sep 2026 07:29:40 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e10:ef90:d92c:7e4a:47e6:1b23? ([2a01:e0a:e10:ef90:d92c:7e4a:47e6:1b23]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c29de5baa11sm159980866b.40.2026.09.16.07.29.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Sep 2026 07:29:40 -0700 (PDT) Message-ID: <6ea357ac-78b8-4c92-966a-72c13bffba41@redhat.com> Date: Wed, 16 Sep 2026 16:29:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 7/7] tap/tcp: Replace tcp_payload_used with a ring buffer style index To: aerosouund , passt-dev@passt.top References: <20260904212826.41027-1-aerosound161@gmail.com> <20260904212826.41027-8-aerosound161@gmail.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20260904212826.41027-8-aerosound161@gmail.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: NDBpGa2ovlMCHoLgE8FpPff1MM411wmK2se5xb5i97Q_1789568982 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: T2P543IJT4OIDWHBTSOI4BQSUH552OKQ X-Message-ID-Hash: T2P543IJT4OIDWHBTSOI4BQSUH552OKQ 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 CC: eperezma@redhat.com 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: T24gOS80LzI2IDIzOjI4LCBhZXJvc291dW5kIHdyb3RlOg0KPiBGcm9tOiBBbW1hciBZYXNzZXIg PGFlcm9zb3VuZDE2MUBnbWFpbC5jb20+DQo+IA0KPiBCZWNhdXNlIHBhc3RhIHJlc2V0cyB0Y3Bf cGF5bG9hZF91c2VkIHRvIDAgYWZ0ZXIgZXZlcnkgdGNwIGZsdXNoIHRoaXMNCj4gbWVhbnMgdGhh dCBwYXN0YSB3aWxsIHZlcnkgcXVpY2tseSBvdmVycmlkZSBkYXRhIGluIHRoZSB0Y3AgYnVmZmVy cw0KPiBhZnRlciBzZW5kaW5nLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0gd2hlbiB1c2luZyB3cml0 ZXYgYmVjYXVzZSB0aGUgZGF0YQ0KPiB3aWxsIGhhdmUgYmVlbiBjb3BpZWQgZWxzZXdoZXJlIGJ5 IHRoZSBrZXJuZWwsIGJ1dCB0aGlzIGlzIGEgcHJvYmxlbSBmb3INCj4gdmhvc3Qgd2hlcmUgdGhl IGtlcm5lbCB0aHJlYWQgbWF5IG5vdCBoYXZlIGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhpcw0KPiBk YXRhLiBUaGlzIGlzIHdoeSBhIHN5bmNocm9ub3VzIHNlbmQgd2FzIHJlcXVpcmVkIGluIHZob3N0 LCB3aGljaA0KPiBvYnZpb3VzbHkgYWZmZWN0cyBwZXJmb3JtYW5jZS4NCj4gDQo+IFJlcGxhY2Ug dGNwX3BheWxvYWRfdXNlZCB3aXRoIGEgc3RydWN0IHRjcF9wYXlsb2FkX2lkeCBob2xkaW5nIHRo ZSBsYXN0DQo+IGluZGV4IHdlIHdyb3RlIHRvIGFuZCBhIGNvdW50ZXIgdGhhdCBnZXRzIHVwZGF0 ZWQgd2hlbiB3ZSBmbHVzaCBwYWNrZXRzLA0KPiBmcm9tIHdoZXJlIHdlIGxhc3QgZmx1c2hlZCB1 cCB0byB0aGF0IGluZGV4LiBCb3RoIGFyZSBncm93IG9ubHkgYW5kDQo+IGFjY2VzcyBnZXRzIG1v ZGRlZCBieSBUQ1BfRlJBTUVTX01FTS4NCj4gDQo+IFJld3JpdGUgZnVuY3Rpb25zIGluIHRjcF9i dWYuYyB0byB1c2UgdGhhdCBpbmRleCBhbmQgaGFuZGxlIHRoZQ0KPiB3cmFwYXJvdW5kIGNhc2Ug KHNlbmRpbmcgYSBiYXRjaCB0aGF0IHN0YXJ0ZWQgbmVhciB0aGUgZW5kIG9mIHRoZQ0KPiBidWZm ZXJzIGFuZCBjb250aW51ZWQgdG8gYmUgYXQgdGhlIHN0YXJ0KSBpbiB0Y3BfcGF5bG9hZF9mbHVz aCgpLg0KPiANCj4gV2l0aCB0aGUgYnVmZmVycyBubyBsb25nZXIgcmV1c2VkIGZyb20gdW5kZXIg dGhlIGtlcm5lbCwgZHJvcCB0aGUNCj4gc3luY2hyb25vdXMgd2FpdCBmcm9tIHRhcF9zZW5kX2Zy YW1lc192aG9zdCgpIGFuZCByZWNsYWltIGRlc2NyaXB0b3JzDQo+IHVudGlsIHRoZXJlIGFyZSBl bm91Z2ggZm9yIHRoZSBzZW5kIGluc3RlYWQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBFdWdlbmlv IFDDqXJleiA8ZXBlcmV6bWFAcmVkaGF0LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogQW1tYXIgWWFz c2VyIDxhZXJvc291bmQxNjFAZ21haWwuY29tPg0KPiAtLS0NCj4gICB0YXAuYyAgICAgfCAgIDkg KystLS0NCj4gICB0Y3BfYnVmLmMgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNlcnRp b25zKCspLCAzNiBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS90YXAuYyBiL3RhcC5j DQo+IGluZGV4IDBmNTFlNjIuLjY3MDYwNWEgMTAwNjQ0DQo+IC0tLSBhL3RhcC5jDQo+ICsrKyBi L3RhcC5jDQo+IEBAIC00MTgsNyArNDE4LDggQEAgc3RhdGljIHNpemVfdCB0YXBfc2VuZF9mcmFt ZXNfdmhvc3QoY29uc3Qgc3RydWN0IGN0eCAqYywNCj4gICAJLyogcmVjbGFpbSBkZXNjcmlwdG9y cyBpZiB3ZSBkb24ndCBoYXZlIGVub3VnaCBhdmFpbGFibGUgYnVmZmVycyB0bw0KPiAgIAkgKiBw ZXJmb3JtIHRoaXMgc2VuZA0KPiAgIAkgKi8NCj4gLQlpZiAodmhvc3RfdnFfc3RhdGVbMV0ubnVt X2ZyZWUgPCBidWZzX3Blcl9mcmFtZSAqIG5mcmFtZXMpDQo+ICsJd2hpbGUgKHZob3N0X3ZxX3N0 YXRlWzFdLm51bV9mcmVlIDwgYnVmc19wZXJfZnJhbWUgKiBuZnJhbWVzICYmDQo+ICsJICAgICAg IHZob3N0X3ZxX3N0YXRlWzFdLmxhc3RfdXNlZF9pZHggIT0gbGUxNnRvaChhdmFpbC0+aWR4KSkN Cj4gICAJCXR4X3JlYXAoKTsNCj4gICANCj4gICAJZm9yIChpID0gMDsgaSA8IG5mcmFtZXM7IGkr Kykgew0KPiBAQCAtNDg1LDEwICs0ODYsNiBAQCBzdGF0aWMgc2l6ZV90IHRhcF9zZW5kX2ZyYW1l c192aG9zdChjb25zdCBzdHJ1Y3QgY3R4ICpjLA0KPiAgIA0KPiAgIAl2aG9zdF9raWNrKCZ2cmlu Z191c2VkX2FsbFsxXS51c2VkLCBjLT52aG9zdC52cVsxXS5raWNrX2ZkKTsNCj4gICANCj4gLQkv KiB3YWl0IHVudGlsIHRoZSBrZXJuZWwgZmluaXNoZXMgcHJvY2Vzc2luZyB0aGlzIHNlbmQgKi8N Cj4gLQl3aGlsZSAoYXZhaWwtPmlkeCAhPSB2cmluZ191c2VkX2FsbFsxXS51c2VkLmlkeCkNCj4g LQkJOw0KPiAtDQo+ICAgCXJldHVybiBwcm9jZXNzZWRfZnJhbWVzOw0KPiAgIH0NCj4gICANCj4g QEAgLTUxNiw3ICs1MTMsNyBAQCBzdGF0aWMgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lc19wYXN0YShj b25zdCBzdHJ1Y3QgY3R4ICpjLA0KPiAgIAlzaXplX3QgaTsNCj4gICANCj4gICAJaWYgKHZob3N0 KQ0KPiAtCQlyZXR1cm4gdGFwX3NlbmRfZnJhbWVzX3Zob3N0KGMsIGlvdiwgYnVmc19wZXJfZnJh bWUsIG5mcmFtZXMpOw0KPiArCSAJcmV0dXJuIHRhcF9zZW5kX2ZyYW1lc192aG9zdChjLCBpb3Ys IGJ1ZnNfcGVyX2ZyYW1lLCBuZnJhbWVzKTsNCg0KdW5yZWxhdGVkIGNoYW5nZSwgd2hpdGVzcGFj ZSBhZGRlZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSB0YWJzLg0KDQo+ICAgDQo+ICAgCWZvciAoaSA9 IDA7IGkgPCBuYnVmczsgaSArPSBidWZzX3Blcl9mcmFtZSkgew0KPiAgIAkJc3NpemVfdCByYyA9 IHdyaXRldihjLT5mZF90YXAsIGlvdiArIGksIGJ1ZnNfcGVyX2ZyYW1lKTsNCj4gZGlmZiAtLWdp dCBhL3RjcF9idWYuYyBiL3RjcF9idWYuYw0KPiBpbmRleCA5Y2M1NDFhLi4xYjU3ZWJkIDEwMDY0 NA0KPiAtLS0gYS90Y3BfYnVmLmMNCj4gKysrIGIvdGNwX2J1Zi5jDQo+IEBAIC01Nyw3ICs1Nywy MiBAQCBzdGF0aWNfYXNzZXJ0KE1TUzYgPD0gc2l6ZW9mKHRjcF9wYXlsb2FkWzBdLmRhdGEpLCAi TVNTNiBpcyBncmVhdGVyIHRoYW4gNjU1MTYiKQ0KPiAgIA0KPiAgIC8qIFJlZmVyZW5jZXMgdHJh Y2tpbmcgdGhlIG93bmVyIGNvbm5lY3Rpb24gb2YgZnJhbWVzIGluIHRoZSB0YXAgb3V0cXVldWUg Ki8NCj4gICBzdGF0aWMgc3RydWN0IHRjcF90YXBfY29ubiAqdGNwX2ZyYW1lX2Nvbm5zW1RDUF9G UkFNRVNfTUVNXTsNCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwX3BheWxvYWRfdXNlZDsNCj4g Kw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4IC0gR3Jvdy1vbmx5IGN1cnNv cnMgaW50byB0aGUgVENQIGZyYW1lIGJ1ZmZlcnMNCj4gKyAqIEB0Y3BfYnVmX2lkeDoJVGhlIGxh c3QgaW5kZXggd2Ugd3JvdGUgZGF0YSB0byBpbiB0aGUgdGNwIGJ1ZmZlcnMNCj4gKyAqIEBwcm9j ZXNzZWQ6CQlMYXN0IGluZGV4IHdlIHB1c2hlZCB0byB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9u DQo+ICsgKi8NCj4gK3N0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4IHsNCj4gKwl1bnNpZ25l ZCBpbnQgdGNwX2J1Zl9pZHg7DQo+ICsJdW5zaWduZWQgaW50IHByb2Nlc3NlZDsNCj4gK30gdGNw X2lkeDsNCj4gKw0KPiArLyogbGF0ZXN0IGluZGV4IHdlIHdyb3RlIHRvIGludG8gdGhlIHRjcCBi dWZmZXJzICovDQo+ICsjZGVmaW5lIFRDUF9DVVJSX0lEWAkodGNwX2lkeC50Y3BfYnVmX2lkeCAl IFRDUF9GUkFNRVNfTUVNKQ0KPiArDQo+ICsvKiBjdXJyZW50IGFtb3VudCBvZiBmcmFtZXMgcXVl dWVkIGluIHRjcCBidWZmZXJzIGJ1dCBub3Qgc2VudCAqLw0KPiArI2RlZmluZSBUQ1BfRlJBTUVf Q09VTlQJKHRjcF9pZHgudGNwX2J1Zl9pZHggLSB0Y3BfaWR4LnByb2Nlc3NlZCkNCg0KR2VuZXJh bGx5IG1hY3JvIGluIHVwcGVyIGNhc2UgYXJlIGNvbnN0YW50LiBJIGRvbid0IGtub3cgaWYgaXQn cyB0aGUgcnVsZSBpbiBwYXNzdCwgYnV0IA0KdGhlc2UgbWFjcm9zIG1ha2UgdGhpcyBoYXJkIHRv IHJlYWQgZm9yIG1lLg0KDQo+ICAgDQo+ICAgLyogcmVjdm1zZygpL3NlbmRtc2coKSBkYXRhIGZv ciB0YXAgKi8NCj4gICBzdGF0aWMgc3RydWN0IGlvdmVjCWlvdl9zb2NrCQlbVENQX0ZSQU1FU19N RU0gKyBESVNDQVJEX0lPVl9OVU1dOw0KPiBAQCAtMTUyLDE1ICsxNjcsNDYgQEAgc3RhdGljIHZv aWQgdGNwX3JldmVydF9zZXEoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29u biAqKmNvbm5zLA0KPiAgICAqLw0KPiAgIHZvaWQgdGNwX3BheWxvYWRfZmx1c2goY29uc3Qgc3Ry dWN0IGN0eCAqYywgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpub3cpDQo+ICAgew0KPiAtCXNpemVf dCBtOw0KPiArCXVuc2lnbmVkIGludCB0b3RhbCA9IFRDUF9GUkFNRV9DT1VOVDsNCj4gKwl1bnNp Z25lZCBpbnQgc3RhcnQgPSB0Y3BfaWR4LnByb2Nlc3NlZCAlIFRDUF9GUkFNRVNfTUVNOw0KPiAr CXVuc2lnbmVkIGludCBmaXJzdF9iYXRjaF9zaXplLCBzZW50Ow0KPiAgIA0KPiAtCW0gPSB0YXBf c2VuZF9mcmFtZXMoYywgJnRjcF9sMl9pb3ZbMF1bMF0sIFRDUF9OVU1fSU9WUywNCj4gLQkJCSAg ICB0Y3BfcGF5bG9hZF91c2VkKTsNCj4gLQlpZiAobSAhPSB0Y3BfcGF5bG9hZF91c2VkKSB7DQo+ IC0JCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3BfZnJhbWVfY29ubnNbbV0sICZ0Y3BfbDJfaW92W21d LA0KPiAtCQkJICAgICAgIHRjcF9wYXlsb2FkX3VzZWQgLSBtLCBub3cpOw0KPiArCWlmICghdG90 YWwpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCS8qIFdoYXQgaXMgc21hbGxlciA/IGFsbCB3ZSB3 aGF0IHdlIHdhbnQgdG8gc2VuZCA/IG9yIDEyOCAtIHRoZSBpbmRleA0KPiArCSAqIGluZGljYXRp bmcgdGhlIHN0YXJ0IG9mIHdoZXJlIHdlIHdyb3RlIHRoaXMgYmF0Y2ggPw0KPiArCSAqLw0KPiAr CWZpcnN0X2JhdGNoX3NpemUgPSBNSU4odG90YWwsIFRDUF9GUkFNRVNfTUVNIC0gc3RhcnQpOw0K PiArDQo+ICsJc2VudCA9IHRhcF9zZW5kX2ZyYW1lcyhjLCAmdGNwX2wyX2lvdltzdGFydF1bMF0s IFRDUF9OVU1fSU9WUywNCj4gKwkJCSAgICAgICBmaXJzdF9iYXRjaF9zaXplKTsNCj4gKwlpZiAo c2VudCA8IGZpcnN0X2JhdGNoX3NpemUpIHsNCj4gKwkJdGNwX3JldmVydF9zZXEoYywgJnRjcF9m cmFtZV9jb25uc1tzdGFydCArIHNlbnRdLA0KPiArCQkJICAgICAgICZ0Y3BfbDJfaW92W3N0YXJ0 ICsgc2VudF0sDQo+ICsJCQkgICAgICAgZmlyc3RfYmF0Y2hfc2l6ZSAtIHNlbnQsIG5vdyk7DQo+ ICsJCWdvdG8gb3V0Ow0KPiAgIAl9DQo+IC0JdGNwX3BheWxvYWRfdXNlZCA9IDA7DQo+ICsNCj4g KwkvKiBUaGVyZSB3YXMgbW9yZSBkYXRhIHRvIHNlbmQgdGhhbiBmcm9tIHRjcF9pZHgucHJvY2Vz c2VkIHVwIHRvIDEyOC4NCj4gKwkgKiB0aGUgcmVzdCBvZiB0aGUgYmF0Y2ggaXMgZ29pbmcgdG8g YmUgYXQgaW5kZXggMCB1cCB0b3RhbCAtDQo+ICsJICogZmlyc3RfYmF0Y2hfc2l6ZS4NCj4gKwkg Ki8NCj4gKwlpZiAodG90YWwgPiBmaXJzdF9iYXRjaF9zaXplKSB7DQo+ICsJCXVuc2lnbmVkIGlu dCBzZWNvbmRfYmF0Y2hfc2l6ZSA9IHRvdGFsIC0gZmlyc3RfYmF0Y2hfc2l6ZTsNCj4gKwkJc2l6 ZV90IG0yOw0KPiArDQo+ICsJCW0yID0gdGFwX3NlbmRfZnJhbWVzKGMsICZ0Y3BfbDJfaW92WzBd WzBdLCBUQ1BfTlVNX0lPVlMsDQo+ICsJCQkJICAgICBzZWNvbmRfYmF0Y2hfc2l6ZSk7DQo+ICsJ CXNlbnQgKz0gbTI7DQo+ICsNCj4gKwkJaWYgKG0yIDwgc2Vjb25kX2JhdGNoX3NpemUpDQo+ICsJ CQl0Y3BfcmV2ZXJ0X3NlcShjLCAmdGNwX2ZyYW1lX2Nvbm5zW20yXSwgJnRjcF9sMl9pb3ZbbTJd LA0KPiArCQkJCSAgICAgICBzZWNvbmRfYmF0Y2hfc2l6ZSAtIG0yLCBub3cpOw0KPiArCX0NCj4g Kw0KPiArb3V0Og0KPiArCXRjcF9pZHgucHJvY2Vzc2VkICs9IHNlbnQ7DQo+ICAgfQ0KPiAgIA0K PiAgIC8qKg0KPiBAQCAtMjM4LDEzICsyODQsMTMgQEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNv bnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncywN Cj4gICAJdWludDMyX3Qgc2VxOw0KPiAgIAlpbnQgcmV0Ow0KPiAgIA0KPiAtCWlvdiA9IHRjcF9s Ml9pb3ZbdGNwX3BheWxvYWRfdXNlZF07DQo+ICsJaW92ID0gdGNwX2wyX2lvdltUQ1BfQ1VSUl9J RFhdOw0KPiAgIAlpZiAoQ09OTl9WNChjb25uKSkNCj4gLQkJaW92W1RDUF9JT1ZfSVBdID0gSU9W X09GX0xWQUxVRSh0Y3A0X3BheWxvYWRfaXBbdGNwX3BheWxvYWRfdXNlZF0pOw0KPiArCQlpb3Zb VENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcDRfcGF5bG9hZF9pcFtUQ1BfQ1VSUl9JRFhd KTsNCj4gICAJZWxzZQ0KPiAtCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcDZf cGF5bG9hZF9pcFt0Y3BfcGF5bG9hZF91c2VkXSk7DQo+ICsJCWlvdltUQ1BfSU9WX0lQXSA9IElP Vl9PRl9MVkFMVUUodGNwNl9wYXlsb2FkX2lwW1RDUF9DVVJSX0lEWF0pOw0KPiAgIA0KPiAtCWlv dltUQ1BfSU9WX0VUSF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcF9ldGhfaGRyW3RjcF9wYXlsb2FkX3Vz ZWRdKTsNCj4gKwlpb3ZbVENQX0lPVl9FVEhdID0gSU9WX09GX0xWQUxVRSh0Y3BfZXRoX2hkcltU Q1BfQ1VSUl9JRFhdKTsNCj4gICAJcGF5bG9hZCA9IGlvdltUQ1BfSU9WX1BBWUxPQURdLmlvdl9i YXNlOw0KPiAgIAlzZXEgPSBjb25uLT5zZXFfdG9fdGFwOw0KPiAgIAlyZXQgPSB0Y3BfcHJlcGFy ZV9mbGFncyhjLCBjb25uLCBmbGFncywgJnBheWxvYWQtPnRoLA0KPiBAQCAtMjUzLDcgKzI5OSw4 IEBAIGludCB0Y3BfYnVmX3NlbmRfZmxhZyhjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNw X3RhcF9jb25uICpjb25uLCBpbnQgZmxhZ3MsDQo+ICAgCWlmIChyZXQgPD0gMCkNCj4gICAJCXJl dHVybiByZXQ7DQo+ICAgDQo+IC0JdGNwX2ZyYW1lX2Nvbm5zW3RjcF9wYXlsb2FkX3VzZWQrK10g PSBjb25uOw0KPiArCXRjcF9pZHgudGNwX2J1Zl9pZHgrKzsNCj4gKwl0Y3BfZnJhbWVfY29ubnNb VENQX0NVUlJfSURYXSA9IGNvbm47DQoNClRoZXJlIGlzIGEgY2hhbmdlIGhlcmU6IHRjcF9pZHgu dGNwX2J1Zl9pZHggaXMgaW5jcmVtZW50ZWQgYmVmb3JlIHRoZSBhc3NpZ25tZW50IG9mIA0KdGNw X2ZyYW1lX2Nvbm5zW10sIGluIHByZXZpb3VzIGNvZGUgaXQgd2FzIGluY3JlbWVudGVkIGFmdGVy Lg0KDQo+ICAgCWw0bGVuID0gb3B0bGVuICsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpOw0KPiAgIAlp b3ZbVENQX0lPVl9QQVlMT0FEXS5pb3ZfbGVuID0gbDRsZW47DQo+ICAgDQo+IEBAIC0yNjUsOCAr MzEyLDkgQEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVj dCB0Y3BfdGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncywNCj4gICAJdGNwX2wyX2J1Zl9wYWQoaW92 KTsNCj4gICANCj4gICAJaWYgKGZsYWdzICYgRFVQX0FDSykgew0KPiAtCQlzdHJ1Y3QgaW92ZWMg KmR1cF9pb3YgPSB0Y3BfbDJfaW92W3RjcF9wYXlsb2FkX3VzZWRdOw0KPiAtCQl0Y3BfZnJhbWVf Y29ubnNbdGNwX3BheWxvYWRfdXNlZCsrXSA9IGNvbm47DQo+ICsJCXN0cnVjdCBpb3ZlYyAqZHVw X2lvdiA9IHRjcF9sMl9pb3ZbVENQX0NVUlJfSURYXTsNCj4gKwkJdGNwX2ZyYW1lX2Nvbm5zW1RD UF9DVVJSX0lEWF0gPSBjb25uOw0KPiArCQl0Y3BfaWR4LnRjcF9idWZfaWR4Kys7DQo+ICAgDQo+ ICAgCQltZW1jcHkoZHVwX2lvdltUQ1BfSU9WX1RBUF0uaW92X2Jhc2UsIGlvdltUQ1BfSU9WX1RB UF0uaW92X2Jhc2UsDQo+ICAgCQkgICAgICAgaW92W1RDUF9JT1ZfVEFQXS5pb3ZfbGVuKTsNCj4g QEAgLTI3OCw3ICszMjYsNyBAQCBpbnQgdGNwX2J1Zl9zZW5kX2ZsYWcoY29uc3Qgc3RydWN0IGN0 eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwgaW50IGZsYWdzLA0KPiAgIAkJZHVwX2lv dltUQ1BfSU9WX0VUSF9QQURdLmlvdl9sZW4gPSBpb3ZbVENQX0lPVl9FVEhfUEFEXS5pb3ZfbGVu Ow0KPiAgIAl9DQo+ICAgDQo+IC0JaWYgKHRjcF9wYXlsb2FkX3VzZWQgPiBUQ1BfRlJBTUVTX01F TSAtIDIpDQo+ICsJaWYgKFRDUF9GUkFNRV9DT1VOVCA+IFRDUF9GUkFNRVNfTUVNIC0gMikNCj4g ICAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiBA QCAtMzAzLDIxICszNTEsMjkgQEAgc3RhdGljIHZvaWQgdGNwX2RhdGFfdG9fdGFwKGNvbnN0IHN0 cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+ICAgCXN0cnVjdCBpb3Zl YyAqaW92Ow0KPiAgIA0KPiAgIAljb25uLT5zZXFfdG9fdGFwID0gc2VxICsgZGxlbjsNCj4gLQl0 Y3BfZnJhbWVfY29ubnNbdGNwX3BheWxvYWRfdXNlZF0gPSBjb25uOw0KPiAtCWlvdiA9IHRjcF9s Ml9pb3ZbdGNwX3BheWxvYWRfdXNlZF07DQo+ICsJdGNwX2ZyYW1lX2Nvbm5zW1RDUF9DVVJSX0lE WF0gPSBjb25uOw0KPiArCWlvdiA9IHRjcF9sMl9pb3ZbVENQX0NVUlJfSURYXTsNCj4gICAJaWYg KENPTk5fVjQoY29ubikpIHsNCj4gICAJCWlmIChub19jc3VtKSB7DQo+IC0JCQlzdHJ1Y3QgaW92 ZWMgKmlvdl9wcmV2ID0gdGNwX2wyX2lvdlt0Y3BfcGF5bG9hZF91c2VkIC0gMV07DQo+ICsJCQkv KiBUQ1BfQ1VSUl9JRFggbWF5IGJlIHplcm8gaWYgdGhlIHVuZGVybHlpbmcNCj4gKwkJCSAqIHRj cF9pZHgudGNwX2J1Zl9pZHggaXMgYSBtdWx0aXBsZSBvZiAxMjgsIG1pbnVzIG9uZQ0KPiArCQkJ ICogd2lsbCB5aWVsZCBhbiBpbnZhbGlkIGluZGV4LiBUaGUgcHJldmlvdXMgaW5kZXggdG8gMA0K PiArCQkJICogaXMgMTI3Lg0KPiArCQkJICovDQo+ICsJCQl1bnNpZ25lZCBpbnQgcHJldl9pZHgg PSAoVENQX0NVUlJfSURYICsNCj4gKwkJCQkJCSBUQ1BfRlJBTUVTX01FTSAtIDEpICUNCj4gKwkJ CQkJCVRDUF9GUkFNRVNfTUVNOw0KPiArCQkJc3RydWN0IGlvdmVjICppb3ZfcHJldiA9IHRjcF9s Ml9pb3ZbcHJldl9pZHhdOw0KPiAgIAkJCWNvbnN0IHN0cnVjdCBpcGhkciAqaXBoID0gaW92X3By ZXZbVENQX0lPVl9JUF0uaW92X2Jhc2U7DQo+ICAgDQo+ICAgCQkJLyogb3ZlcndyaXRlIElQNF9D U1VNIGZsYWcgYXMgd2Ugc2V0IHRoZSBjaGVja3N1bSAqLw0KPiAgIAkJCWNoZWNrID0gaXBoLT5j aGVjazsNCj4gICAJCX0NCj4gLQkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A0 X3BheWxvYWRfaXBbdGNwX3BheWxvYWRfdXNlZF0pOw0KPiArCQlpb3ZbVENQX0lPVl9JUF0gPSBJ T1ZfT0ZfTFZBTFVFKHRjcDRfcGF5bG9hZF9pcFtUQ1BfQ1VSUl9JRFhdKTsNCj4gICAJfSBlbHNl IGlmIChDT05OX1Y2KGNvbm4pKSB7DQo+IC0JCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFM VUUodGNwNl9wYXlsb2FkX2lwW3RjcF9wYXlsb2FkX3VzZWRdKTsNCj4gKwkJaW92W1RDUF9JT1Zf SVBdID0gSU9WX09GX0xWQUxVRSh0Y3A2X3BheWxvYWRfaXBbVENQX0NVUlJfSURYXSk7DQo+ICAg CX0NCj4gLQlpb3ZbVENQX0lPVl9FVEhdLmlvdl9iYXNlID0gJnRjcF9ldGhfaGRyW3RjcF9wYXls b2FkX3VzZWRdOw0KPiArCWlvdltUQ1BfSU9WX0VUSF0uaW92X2Jhc2UgPSAmdGNwX2V0aF9oZHJb VENQX0NVUlJfSURYXTsNCj4gICAJcGF5bG9hZCA9IGlvdltUQ1BfSU9WX1BBWUxPQURdLmlvdl9i YXNlOw0KPiAgIAlwYXlsb2FkLT50aC50aF9vZmYgPSBzaXplb2Yoc3RydWN0IHRjcGhkcikgLyA0 Ow0KPiAgIAlwYXlsb2FkLT50aC50aF94MiA9IDA7DQo+IEBAIC0zMjksNyArMzg1LDggQEAgc3Rh dGljIHZvaWQgdGNwX2RhdGFfdG9fdGFwKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3Bf dGFwX2Nvbm4gKmNvbm4sDQo+ICAgDQo+ICAgCXRjcF9sMl9idWZfcGFkKGlvdik7DQo+ICAgDQo+ IC0JaWYgKCsrdGNwX3BheWxvYWRfdXNlZCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkNCj4gKwl0Y3Bf aWR4LnRjcF9idWZfaWR4Kys7DQo+ICsJaWYgKFRDUF9GUkFNRV9DT1VOVCA+IFRDUF9GUkFNRVNf TUVNIC0gMSkNCj4gICAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7DQo+ICAgfQ0KPiAgIA0K PiBAQCAtMzY5LDE1ICs0MjYsMTMgQEAgaW50IHRjcF9idWZfZGF0YV9mcm9tX3NvY2soY29uc3Qg c3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwNCj4gICAJCXJldHVybiAt MTsNCj4gICAJfQ0KPiAgIA0KPiAtCWlmICh0Y3BfcGF5bG9hZF91c2VkICsgZmlsbF9idWZzID4g VENQX0ZSQU1FU19NRU0pIHsNCj4gKwlpZiAoVENQX0ZSQU1FX0NPVU5UICsgKHVuc2lnbmVkIGlu dClmaWxsX2J1ZnMgPiBUQ1BfRlJBTUVTX01FTSkNCj4gICAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMs IG5vdyk7DQo+ICAgDQo+IC0JCS8qIFNpbGVuY2UgQ292ZXJpdHkgQ1dFLTEyNSBmYWxzZSBwb3Np dGl2ZSAqLw0KPiAtCQl0Y3BfcGF5bG9hZF91c2VkID0gMDsNCj4gLQl9DQo+IC0NCj4gICAJZm9y IChpID0gMCwgaW92ID0gaW92X3NvY2sgKyBESVNDQVJEX0lPVl9OVU07IGkgPCBmaWxsX2J1ZnM7 IGkrKywgaW92KyspIHsNCj4gLQkJaW92LT5pb3ZfYmFzZSA9ICZ0Y3BfcGF5bG9hZFt0Y3BfcGF5 bG9hZF91c2VkICsgaV0uZGF0YTsNCj4gKwkJdW5zaWduZWQgaW50IGlkeCA9IChUQ1BfQ1VSUl9J RFggKyBpKSAlIFRDUF9GUkFNRVNfTUVNOw0KPiArDQo+ICsJCWlvdi0+aW92X2Jhc2UgPSAmdGNw X3BheWxvYWRbaWR4XS5kYXRhOw0KPiAgIAkJaW92LT5pb3ZfbGVuID0gbXNzOw0KPiAgIAl9DQo+ ICAgCWlmIChpb3ZfcmVtKQ0KPiBAQCAtNDUxLDcgKzUwNiw3IEBAIGludCB0Y3BfYnVmX2RhdGFf ZnJvbV9zb2NrKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4s DQo+ICAgCWRsZW4gPSBtc3M7DQo+ICAgCXNlcSA9IGNvbm4tPnNlcV90b190YXA7DQo+ICAgCWZv ciAoaSA9IDA7IGkgPCBzZW5kX2J1ZnM7IGkrKykgew0KPiAtCQlpbnQgbm9fY3N1bSA9IGkgJiYg aSAhPSBzZW5kX2J1ZnMgLSAxICYmIHRjcF9wYXlsb2FkX3VzZWQ7DQo+ICsJCWludCBub19jc3Vt ID0gaSAmJiBpICE9IHNlbmRfYnVmcyAtIDEgJiYgVENQX0NVUlJfSURYOw0KDQpub19jc3VtIGlz IGhlcmUgdG8gbm90IHJlY29tcHV0ZSB0aGUgY3N1bSBpZiBub3RoaW5nIGNoYW5nZSBiZXR3ZWVu IHRoZSBwYWNrZXQsIHNvIHdlIA0KY29tcHV0ZSBvbmx5IG9uIHRoZSBmaXJzdCBwYWNrZXQuIFdp dGggdGhlIFRDUF9DVVJSX0lEWCB3ZSByZWNvbXB1dGUgaXQgZWFjaCB0aW1lIA0KVENQX0NVUlJf SURYIGlzIG5vdCB6ZXJvLg0KDQo+ICAgCQlib29sIHB1c2ggPSBmYWxzZTsNCj4gICANCj4gICAJ CWlmIChpID09IHNlbmRfYnVmcyAtIDEpIHsNCg0K