From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTP id 05B535A02CF for ; Thu, 16 May 2024 04:57:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1715828240; 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; bh=54ea48Ggyio0bL6rdYbCBc/DG/Nls+97/+K6rp9wFeM=; b=JRv7SDRvyuaw1yNuzIYvBoOkXv5/eziRJnXLnKcpd2sg7G8Xwi3ewo3FqJL6jl8+VFZbqN +3xbftBIXrHGoZb4KG82ss35qr7Yb5B+BZ1jPoD0Vhq/WYX4jEiLjIiklJJkQnNxQkNkEf 2E7EGrnVDw0TAKS/CtD1jBifY9D8AMs= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-286-3F5r74e4O76elndI5b5fgQ-1; Wed, 15 May 2024 22:57:09 -0400 X-MC-Unique: 3F5r74e4O76elndI5b5fgQ-1 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-792cefecd00so1017502085a.0 for ; Wed, 15 May 2024 19:57:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715828229; x=1716433029; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=54ea48Ggyio0bL6rdYbCBc/DG/Nls+97/+K6rp9wFeM=; b=Q9u/GGgmgOisc/Lz6oIyYpvV65kVM87k+Yo1Yj8JyZAgnjlSlP3wvx94h/Hm9Tb/IV Pos3OUAaWmt4FquNrlHIc3DmAjZO9AtKTVlWFupsPWyFfYP/OVlcLJasVdm2FB3oIhzj iv4IayjrOSr80EfvN38DXReKxggdAWXS3UsBjrjsIq7AcaFnRxmKDg8W6n5lzs93glG6 CNxQHHcZJthd1+b727avCt6fEA6N+Q9x1nI91fdw2m+66wMbOmJ/x5m+VzoPkFCRc84Y sEsqJvgeK+ZeWEcGGfeGGrfaLltTFLiYzs83pK4xsJ/OEfT7au72JLle3ANt4SrmKmNZ wDqw== X-Gm-Message-State: AOJu0Yy7+8rEOYXkNQ34lOd59a8KWEpfd6XhcEhE0DFEiLKjWVdPOgZS DObxWA0yLjp1PxqTK1eGVJpjOYjeZDhUEt+o9jk8ofDWlcA4MZHyWLYnKol31YhEqMPWsjE5OT6 6DNlhUidwyAYgoXxaXDLzjMXNhVxhBlp2Msk9wk4VWf/ytcvV0A== X-Received: by 2002:a05:620a:4626:b0:790:efef:af55 with SMTP id af79cd13be357-792c6c3adadmr3597553485a.3.1715828228693; Wed, 15 May 2024 19:57:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFrVjmAykAFEgIqZDHlyPUxhKn2et0ykAvledtIwszIGG1CY4ycqAcuJQdvhfio5yvdF+QDxg== X-Received: by 2002:a05:620a:4626:b0:790:efef:af55 with SMTP id af79cd13be357-792c6c3adadmr3597550485a.3.1715828228226; Wed, 15 May 2024 19:57:08 -0700 (PDT) Received: from [10.0.0.97] ([24.225.234.80]) by smtp.gmail.com with ESMTPSA id af79cd13be357-792bf31808esm748700485a.120.2024.05.15.19.57.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 May 2024 19:57:07 -0700 (PDT) Message-ID: <1967b10f-479e-686e-9afc-ff52184f4198@redhat.com> Date: Wed, 15 May 2024 22:57:06 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v4 1/3] tcp: move seq_to_tap update to when frame is queued To: David Gibson References: <20240515153429.859185-1-jmaloy@redhat.com> <20240515153429.859185-2-jmaloy@redhat.com> From: Jon Maloy In-Reply-To: X-Mimecast-Spam-Score: 0 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: JXIKZCGT2I5NBA2JY7PBW3JO27OMXTL3 X-Message-ID-Hash: JXIKZCGT2I5NBA2JY7PBW3JO27OMXTL3 X-MailFrom: jmaloy@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: passt-dev@passt.top, sbrivio@redhat.com, lvivier@redhat.com, dgibson@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: DQoNCk9uIDIwMjQtMDUtMTUgMjI6MjQsIERhdmlkIEdpYnNvbiB3cm90ZToNCj4gT24gV2VkLCBN YXkgMTUsIDIwMjQgYXQgMTE6MzQ6MjdBTSAtMDQwMCwgSm9uIE1hbG95IHdyb3RlOg0KPj4gY29t bWl0IGE0NjlmYzM5M2ZhMSAoInRjcCwgdGFwOiBEb24ndCBpbmNyZWFzZSB0YXAtc2lkZSBzZXF1 ZW5jZSBjb3VudGVyIGZvciBkcm9wcGVkIGZyYW1lcyIpDQo+PiBkZWxheWVkIHVwZGF0ZSBvZiBj b25uLT5zZXFfdG9fdGFwIHVudGlsIHRoZSBtb21lbnQgdGhlIGNvcnJlc3BvbmRpbmcNCj4+IGZy YW1lIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwdXNoZWQgb3V0LiBUaGlzIGhhcyB0aGUgYWR2YW50 YWdlIHRoYXQgd2UNCj4+IGltbWVkaWF0ZWx5IGNhbiBtYWtlIGEgbmV3IGF0dGVtcHQgdG8gdHJh bnNtaXQgYSBmcmFtZSBhZnRlciBhIGZhaWxlZA0KPj4gdHJhc25taXQsIHJhdGhlciB0aGFuIHdh aXRpbmcgZm9yIHRoZSBwZWVyIHRvIGxhdGVyIGRpc2NvdmVyIGEgZ2FwIGFuZA0KPj4gdHJpZ2dl ciB0aGUgZmFzdCByZXRyYW5zbWl0IG1lY2hhbmlzbSB0byBzb2x2ZSB0aGUgcHJvYmxlbS4NCj4+ DQo+PiBUaGlzIGFwcHJvYWNoIGhhcyB0dXJuZWQgb3V0IHRvIGNhdXNlIGEgcHJvYmxlbSB3aXRo IHNwdXJpb3VzIHNlcXVlbmNlDQo+PiBudW1iZXIgdXBkYXRlcyBkdXJpbmcgcGVlci1pbml0aWF0 ZWQgcmV0cmFuc21pdHMsIGFuZCB3ZSBoYXZlIHJlYWxpemVkDQo+PiBpdCBtYXkgbm90IGJlIHRo ZSBiZXN0IHdheSB0byBzb2x2ZSB0aGUgYWJvdmUgaXNzdWUuDQo+Pg0KPj4gV2Ugbm93IHJlc3Rv cmUgdGhlIHByZXZpb3VzIG1ldGhvZCwgYnkgdXBkYXRpbmcgdGhlIHNhaWQgZmllbGQgYXQgdGhl DQo+PiBtb21lbnQgYSBmcmFtZSBpcyBhZGRlZCB0byB0aGUgb3V0cXVldWUuIFRvIHJldGFpbiB0 aGUgYWR2YW50YWdlIG9mDQo+PiBoYXZpbmcgYSBxdWljayByZS1hdHRlbXB0IGJhc2VkIG9uIGxv Y2FsIGZhaWx1cmUgZGV0ZWN0aW9uLCB3ZSBub3cgc2Nhbg0KPj4gdGhyb3VnaCB0aGUgcGFydCBv ZiB0aGUgb3V0cXVldWUgdGhhdCBoYWQgZG8gYmUgZHJvcHBlZCwgYW5kIHJlc3RvcmUgdGhlDQo+ PiBzZXF1ZW5jZSBjb3VudGVyIGZvciBlYWNoIGFmZmVjdGVkIGNvbm5lY3Rpb24gdG8gdGhlIG1v c3QgYXBwcm9wcmlhdGUNCj4+IHZhbHVlLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IEpvbiBNYWxv eSA8am1hbG95QHJlZGhhdC5jb20+DQo+Pg0KPj4gLS0tDQo+PiB2MjogLSBSZS1zcHVuIGxvb3Ag aW4gdGNwX3JldmVydF9zZXEoKSBhbmQgc29tZSBvdGhlciBjaGFuZ2VzIGJhc2VkIG9uDQo+PiAg ICAgICAgZmVlZGJhY2sgZnJvbSBTdGVmYW5vIEJyaXZpby4NCj4+ICAgICAgLSBBZGRlZCBwYXJh bm9pZCB0ZXN0IHRvIGF2b2lkIHRoYXQgc2VxX3RvX3RhcCBiZWNvbWVzIGxvd2VyIHRoYW4NCj4+ ICAgICAgICBzZXFfYWNrX2Zyb21fdGFwLg0KPj4NCj4+IHYzOiAtIElkZW50aWNhbCB0byB2Mi4g Q2FsbGVkIHYzIGJlY2F1c2UgaXQgd2FzIGVtYmVkZGVkIGluIGEgc2VyaWVzDQo+PiAgICAgICAg d2l0aCB0aGF0IHZlcnNpb24uDQo+Pg0KPj4gdjQ6IC0gSW4gdGNwX3JldmVydF9zZXEoKSwgd2Ug cmVhZCB0aGUgc2VxdWVuY2UgbnVtYmVyIGZyb20gdGhlIFRDUA0KPj4gICAgICAgIGhlYWRlciBp bnN0ZWFkIG9mIGtlZXBpbmcgYSBjb3B5IGluIHN0cnVjdCB0Y3BfYnVmX3NlcV91cGRhdGUuDQo+ PiAgICAgIC0gU2luY2UgdGhlIG9ubHkgcmVtYWluaW5nIGZpZWxkIGluIHN0cnVjdCB0Y3BfYnVm X3NlcV91cGRhdGUgaXMNCj4+ICAgICAgICBhIHBvaW50ZXIgdG8gc3RydWN0IHRjcF90YXBfY29u biwgd2UgZWxpbWluYXRlIHRoZSBzdHJ1Y3QNCj4+ICAgICAgICBhbHRvZ2V0aGVyLCBhbmQgbWFr ZSB0aGUgdGNwNi90Y3AzX2J1Zl9zZXFfdXBkYXRlIGFycmF5cyBpbnRvDQo+PiAgICAgICAgYXJy YXlzIG9mIHNhaWQgcG9pbnRlci4NCj4+ICAgICAgLSBSZW1vdmVkICdwYXJhbm9pZCcgdGVzdCBp biB0Y3BfcmV2ZXJ0X3NlcS4gSWYgaXQgaGFwcGVucywgaXQNCj4+ICAgICAgICBpcyBub3QgZmF0 YWwsIGFuZCB3aWxsIGJlIGNhdWdodCBieSBvdGhlciBjb2RlIGFueXdheS4NCj4+ICAgICAgLSBT ZXBhcmF0ZWQgZnJvbSB0aGUgc2VyaWVzIGFnYWluLg0KPj4gLS0tDQo+PiAgIHRjcC5jIHwgNTkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4+ICAgMSBmaWxlIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygt KQ0KPj4NCj4+IGRpZmYgLS1naXQgYS90Y3AuYyBiL3RjcC5jDQo+PiBpbmRleCAyMWQwYWYwLi45 NzZkYmE4IDEwMDY0NA0KPj4gLS0tIGEvdGNwLmMNCj4+ICsrKyBiL3RjcC5jDQo+PiBAQCAtNDEw LDE2ICs0MTAsNiBAQCBzdGF0aWMgaW50IHRjcF9zb2NrX25zCQlbTlVNX1BPUlRTXVtJUF9WRVJT SU9OU107DQo+PiAgICAqLw0KPj4gICBzdGF0aWMgdW5pb24gaW5hbnlfYWRkciBsb3dfcnR0X2Rz dFtMT1dfUlRUX1RBQkxFX1NJWkVdOw0KPj4gICANCj4+IC0vKioNCj4+IC0gKiB0Y3BfYnVmX3Nl cV91cGRhdGUgLSBTZXF1ZW5jZXMgdG8gdXBkYXRlIHdpdGggbGVuZ3RoIG9mIGZyYW1lcyBvbmNl IHNlbnQNCj4+IC0gKiBAc2VxOglQb2ludGVyIHRvIHNlcXVlbmNlIG51bWJlciBzZW50IHRvIHRh cC1zaWRlLCB0byBiZSB1cGRhdGVkDQo+PiAtICogQGxlbjoJVENQIHBheWxvYWQgbGVuZ3RoDQo+ PiAtICovDQo+PiAtc3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZSB7DQo+PiAtCXVpbnQzMl90ICpz ZXE7DQo+PiAtCXVpbnQxNl90IGxlbjsNCj4+IC19Ow0KPj4gLQ0KPj4gICAvKiBTdGF0aWMgYnVm ZmVycyAqLw0KPj4gICAvKioNCj4+ICAgICogc3RydWN0IHRjcF9wYXlsb2FkX3QgLSBUQ1AgaGVh ZGVyIGFuZCBkYXRhIHRvIHNlbmQgc2VnbWVudHMgd2l0aCBwYXlsb2FkDQo+PiBAQCAtNDYxLDcg KzQ1MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRfdAl0Y3A0X3BheWxvYWRbVENQX0ZS QU1FU19NRU1dOw0KPj4gICANCj4+ICAgc3RhdGljX2Fzc2VydChNU1M0IDw9IHNpemVvZih0Y3A0 X3BheWxvYWRbMF0uZGF0YSksICJNU1M0IGlzIGdyZWF0ZXIgdGhhbiA2NTUxNiIpOw0KPj4gICAN Cj4+IC1zdGF0aWMgc3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZSB0Y3A0X3NlcV91cGRhdGVbVENQ X0ZSQU1FU19NRU1dOw0KPj4gKy8qIFJlZmVyZW5jZXMgdHJhY2tpbmcgdGhlIG93bmVyIGNvbm5l Y3Rpb24gb2YgZnJhbWVzIGluIHRoZSB0YXAgb3V0cXVldWUgKi8NCj4+ICtzdGF0aWMgc3RydWN0 IHRjcF90YXBfY29ubiAqdGNwNF9mcmFtZV9jb25uc1tUQ1BfRlJBTUVTX01FTV07DQo+PiAgIHN0 YXRpYyB1bnNpZ25lZCBpbnQgdGNwNF9wYXlsb2FkX3VzZWQ7DQo+PiAgIA0KPj4gICBzdGF0aWMg c3RydWN0IHRhcF9oZHIJCXRjcDRfZmxhZ3NfdGFwX2hkcltUQ1BfRlJBTUVTX01FTV07DQo+PiBA QCAtNDgzLDcgKzQ3NCw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRfdAl0Y3A2X3BheWxv YWRbVENQX0ZSQU1FU19NRU1dOw0KPj4gICANCj4+ICAgc3RhdGljX2Fzc2VydChNU1M2IDw9IHNp emVvZih0Y3A2X3BheWxvYWRbMF0uZGF0YSksICJNU1M2IGlzIGdyZWF0ZXIgdGhhbiA2NTUxNiIp Ow0KPj4gICANCj4+IC1zdGF0aWMgc3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZSB0Y3A2X3NlcV91 cGRhdGVbVENQX0ZSQU1FU19NRU1dOw0KPj4gKy8qIFJlZmVyZW5jZXMgdHJhY2tpbmcgdGhlIG93 bmVyIGNvbm5lY3Rpb24gb2YgZnJhbWVzIGluIHRoZSB0YXAgb3V0cXVldWUgKi8NCj4+ICtzdGF0 aWMgc3RydWN0IHRjcF90YXBfY29ubiAqdGNwNl9mcmFtZV9jb25uc1tUQ1BfRlJBTUVTX01FTV07 DQo+PiAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwNl9wYXlsb2FkX3VzZWQ7DQo+PiAgIA0KPj4g ICBzdGF0aWMgc3RydWN0IHRhcF9oZHIJCXRjcDZfZmxhZ3NfdGFwX2hkcltUQ1BfRlJBTUVTX01F TV07DQo+PiBAQCAtMTI2MSwyNSArMTI1Myw0OSBAQCBzdGF0aWMgdm9pZCB0Y3BfZmxhZ3NfZmx1 c2goY29uc3Qgc3RydWN0IGN0eCAqYykNCj4+ICAgCXRjcDRfZmxhZ3NfdXNlZCA9IDA7DQo+PiAg IH0NCj4+ICAgDQo+PiArLyoqDQo+PiArICogdGNwX3JldmVydF9zZXEoKSAtIFJldmVydCBhZmZl Y3RlZCBjb25uLT5zZXFfdG9fdGFwIGFmdGVyIGZhaWxlZCB0cmFuc21pc3Npb24NCj4+ICsgKiBA Y29ubnM6ICAgICAgIEFycmF5IG9mIGNvbm5lY3Rpb24gcG9pbnRlcnMgY29ycmVzcG9uZGluZyB0 byBxdWV1ZWQgZnJhbWVzDQo+PiArICogQGZyYW1lczogICAgICBUd28tZGltZW5zaW9uYWwgYXJy YXkgY29udGFpbmluZyBxdWV1ZWQgZnJhbWVzIHdpdGggc3ViLWlvdnMNCj4gWW91IGNhbiBtYWtl IHRoZSAyZCBhcnJheSBleHBsaWNpdCBpbiB0aGUgdHlwZSBhczoNCj4gCXN0cnVjdCBpb3ZlYyAo KmZyYW1lcylbVENQX05VTV9JT1ZTXTsNCj4gU2VlLCBmb3IgZXhhbXBsZSB0aGUgJ3RhcF9pb3Yn IGxvY2FsIGluIHVkcF90YXBfc2VuZCgpLiAgIChJIHJlY29tbWVuZA0KPiB0aGUgY29tbWFuZCBs aW5lIHRvb2wgJ2NkZWNsJywgYWxzbyBhdmFpbGFibGUgb25saW5lIGF0IGNkZWNsLm9yZyBmb3IN Cj4gd29ya2luZyBvdXQgY29uZnVzaW5nIHBvaW50ZXItdG8tYXJyYXkgdHlwZXMpLg0KTmljZS4g ScKgIHdhc24ndCBxdWl0ZSBoYXBweSB3aXRoIHRoaXMuDQo+DQo+PiArICogQG51bV9mcmFtZXM6 ICBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdHdvIGFycmF5cyB0byBiZSBjb21wYXJlZA0KPj4g KyAqLw0KPj4gK3N0YXRpYyB2b2lkIHRjcF9yZXZlcnRfc2VxKHN0cnVjdCB0Y3BfdGFwX2Nvbm4g Kipjb25ucywgc3RydWN0IGlvdmVjICpmcmFtZXMsDQo+PiArCQkJICAgaW50IG51bV9mcmFtZXMp DQo+PiArew0KPj4gKwlpbnQgYywgZjsNCj4+ICsNCj4+ICsJZm9yIChjID0gMCwgZiA9IDA7IGMg PCBudW1fZnJhbWVzOyBjKyssIGYgKz0gVENQX05VTV9JT1ZTKSB7DQo+IE5pdDogSSBmaW5kIGhh dmluZyB0aGUgdHdvIHBhcmFsbGVsIGNvdW50ZXJzIGtpbmQgb2YgY29uZnVzaW5nLiAgSXQNCj4g bmF0dXJhbGx5IGdvZXMgYXdheSB3aXRoIHRoZSB0eXBlIGNoYW5nZSBzdWdnZXN0ZWQgYWJvdmUs IGJ1dCBldmVuDQo+IHdpdGhvdXQgdGhhdCBJJ2QgcHJlZmVyIGFuIGV4cGxpY2l0IG11bHRpcGx5 IGluIHRoZSBib2R5LiAgSSBzdHJvbmdseQ0KPiBzdXNwZWN0IHRoZSBjb21waWxlciB3aWxsIGJl IGJldHRlciBhdCB3b3JraW5nIG91dCBpZiB0aGUgc3RyZW5ndGgNCj4gcmVkdWN0aW9uIGlzIHdv cnRoIGl0Lg0KPg0KPj4gKwkJc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiA9IGNvbm5zW2NdOw0K Pj4gKwkJc3RydWN0IHRjcGhkciAqdGggPSBmcmFtZXNbZiArIFRDUF9JT1ZfUEFZTE9BRF0uaW92 X2Jhc2U7DQo+PiArCQl1aW50MzJfdCBzZXEgPSBudG9obCh0aC0+c2VxKTsNCj4+ICsNCj4+ICsJ CWlmIChTRVFfTEUoY29ubi0+c2VxX3RvX3RhcCwgc2VxKSkNCj4gSXNuJ3QgdGhpcyB0ZXN0IGlu dmVydGVkPyAgV2Ugd2FudCB0byByZXdpbmQgc2VxX3RvX3RhcCBpZiBzZXEgaXMgbGVzcw0KPiB0 aGFuIGl0LCByYXRoZXIgdGhhbiB0aGUgb3RoZXIgd2F5IGFydW9uZC4NCk5vLiBXZSBkbyAnY29u dGludWUnLCBpLmUuLCBub3RoaW5nLCBpZiB0aGlzIGNvbmRpdGlvbiBpcyBmdWxmaWxsZWQuDQpU aGlzIG1heSBsb29rIGEgbGl0dGxlIG5vbi1pbnR1aXRpdmUgaGVyZSwgYnV0IG1ha2VzIHNlbnNl IHdoZW4gSSBhZGQgDQp0aGUgbmV4dCBwYXRjaC4NCj4NCj4+ICsJCQljb250aW51ZTsNCj4+ICsN Cj4+ICsJCWNvbm4tPnNlcV90b190YXAgPSBzZXE7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiAg IC8qKg0KPj4gICAgKiB0Y3BfcGF5bG9hZF9mbHVzaCgpIC0gU2VuZCBvdXQgYnVmZmVycyBmb3Ig c2VnbWVudHMgd2l0aCBkYXRhDQo+PiAgICAqIEBjOgkJRXhlY3V0aW9uIGNvbnRleHQNCj4+ICAg ICovDQo+PiAgIHN0YXRpYyB2b2lkIHRjcF9wYXlsb2FkX2ZsdXNoKGNvbnN0IHN0cnVjdCBjdHgg KmMpDQo+PiAgIHsNCj4+IC0JdW5zaWduZWQgaTsNCj4+ICAgCXNpemVfdCBtOw0KPj4gICANCj4+ ICAgCW0gPSB0YXBfc2VuZF9mcmFtZXMoYywgJnRjcDZfbDJfaW92WzBdWzBdLCBUQ1BfTlVNX0lP VlMsDQo+PiAgIAkJCSAgICB0Y3A2X3BheWxvYWRfdXNlZCk7DQo+PiAtCWZvciAoaSA9IDA7IGkg PCBtOyBpKyspDQo+PiAtCQkqdGNwNl9zZXFfdXBkYXRlW2ldLnNlcSArPSB0Y3A2X3NlcV91cGRh dGVbaV0ubGVuOw0KPj4gKwlpZiAobSAhPSB0Y3A2X3BheWxvYWRfdXNlZCkNCj4+ICsJCXRjcF9y ZXZlcnRfc2VxKHRjcDZfZnJhbWVfY29ubnMsICZ0Y3A2X2wyX2lvdlttXVswXSwNCj4gV2l0aCB0 aGUgdHlwZSBjaGFuZ2UgYWJvdmUgdGhpcyB3b3VsZCBiZWNvbWUganVzdCAmdGNwX2wyX2lvdltt XS4NCm9rDQoNCi8vL2pvbg0KPg0KPj4gKwkJCSAgICAgICB0Y3A2X3BheWxvYWRfdXNlZCAtIG0p Ow0KPj4gICAJdGNwNl9wYXlsb2FkX3VzZWQgPSAwOw0KPj4gICANCj4+ICAgCW0gPSB0YXBfc2Vu ZF9mcmFtZXMoYywgJnRjcDRfbDJfaW92WzBdWzBdLCBUQ1BfTlVNX0lPVlMsDQo+PiAgIAkJCSAg ICB0Y3A0X3BheWxvYWRfdXNlZCk7DQo+PiAtCWZvciAoaSA9IDA7IGkgPCBtOyBpKyspDQo+PiAt CQkqdGNwNF9zZXFfdXBkYXRlW2ldLnNlcSArPSB0Y3A0X3NlcV91cGRhdGVbaV0ubGVuOw0KPj4g KwlpZiAobSAhPSB0Y3A0X3BheWxvYWRfdXNlZCkNCj4+ICsJCXRjcF9yZXZlcnRfc2VxKHRjcDRf ZnJhbWVfY29ubnMsICZ0Y3A0X2wyX2lvdlttXVswXSwNCj4+ICsJCQkgICAgICAgdGNwNF9wYXls b2FkX3VzZWQgLSBtKTsNCj4+ICAgCXRjcDRfcGF5bG9hZF91c2VkID0gMDsNCj4+ICAgfQ0KPj4g ICANCj4+IEBAIC0yMTI5LDEwICsyMTQ1LDExIEBAIHN0YXRpYyBpbnQgdGNwX3NvY2tfY29uc3Vt ZShjb25zdCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLCB1aW50MzJfdCBhY2tfc2VxKQ0KPj4g ICBzdGF0aWMgdm9pZCB0Y3BfZGF0YV90b190YXAoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0 IHRjcF90YXBfY29ubiAqY29ubiwNCj4+ICAgCQkJICAgIHNzaXplX3QgZGxlbiwgaW50IG5vX2Nz dW0sIHVpbnQzMl90IHNlcSkNCj4+ICAgew0KPj4gLQl1aW50MzJfdCAqc2VxX3VwZGF0ZSA9ICZj b25uLT5zZXFfdG9fdGFwOw0KPj4gICAJc3RydWN0IGlvdmVjICppb3Y7DQo+PiAgIAlzaXplX3Qg bDRsZW47DQo+PiAgIA0KPj4gKwljb25uLT5zZXFfdG9fdGFwID0gc2VxICsgZGxlbjsNCj4+ICsN Cj4+ICAgCWlmIChDT05OX1Y0KGNvbm4pKSB7DQo+PiAgIAkJc3RydWN0IGlvdmVjICppb3ZfcHJl diA9IHRjcDRfbDJfaW92W3RjcDRfcGF5bG9hZF91c2VkIC0gMV07DQo+PiAgIAkJY29uc3QgdWlu dDE2X3QgKmNoZWNrID0gTlVMTDsNCj4+IEBAIC0yMTQyLDggKzIxNTksNyBAQCBzdGF0aWMgdm9p ZCB0Y3BfZGF0YV90b190YXAoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29u biAqY29ubiwNCj4+ICAgCQkJY2hlY2sgPSAmaXBoLT5jaGVjazsNCj4+ICAgCQl9DQo+PiAgIA0K Pj4gLQkJdGNwNF9zZXFfdXBkYXRlW3RjcDRfcGF5bG9hZF91c2VkXS5zZXEgPSBzZXFfdXBkYXRl Ow0KPj4gLQkJdGNwNF9zZXFfdXBkYXRlW3RjcDRfcGF5bG9hZF91c2VkXS5sZW4gPSBkbGVuOw0K Pj4gKwkJdGNwNF9mcmFtZV9jb25uc1t0Y3A0X3BheWxvYWRfdXNlZF0gPSBjb25uOw0KPj4gICAN Cj4+ICAgCQlpb3YgPSB0Y3A0X2wyX2lvdlt0Y3A0X3BheWxvYWRfdXNlZCsrXTsNCj4+ICAgCQls NGxlbiA9IHRjcF9sMl9idWZfZmlsbF9oZWFkZXJzKGMsIGNvbm4sIGlvdiwgZGxlbiwgY2hlY2ss IHNlcSk7DQo+PiBAQCAtMjE1MSw4ICsyMTY3LDcgQEAgc3RhdGljIHZvaWQgdGNwX2RhdGFfdG9f dGFwKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+PiAg IAkJaWYgKHRjcDRfcGF5bG9hZF91c2VkID4gVENQX0ZSQU1FU19NRU0gLSAxKQ0KPj4gICAJCQl0 Y3BfcGF5bG9hZF9mbHVzaChjKTsNCj4+ICAgCX0gZWxzZSBpZiAoQ09OTl9WNihjb25uKSkgew0K Pj4gLQkJdGNwNl9zZXFfdXBkYXRlW3RjcDZfcGF5bG9hZF91c2VkXS5zZXEgPSBzZXFfdXBkYXRl Ow0KPj4gLQkJdGNwNl9zZXFfdXBkYXRlW3RjcDZfcGF5bG9hZF91c2VkXS5sZW4gPSBkbGVuOw0K Pj4gKwkJdGNwNl9mcmFtZV9jb25uc1t0Y3A2X3BheWxvYWRfdXNlZF0gPSBjb25uOw0KPj4gICAN Cj4+ICAgCQlpb3YgPSB0Y3A2X2wyX2lvdlt0Y3A2X3BheWxvYWRfdXNlZCsrXTsNCj4+ICAgCQls NGxlbiA9IHRjcF9sMl9idWZfZmlsbF9oZWFkZXJzKGMsIGNvbm4sIGlvdiwgZGxlbiwgTlVMTCwg c2VxKTsNCg0K