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.129.124]) by passt.top (Postfix) with ESMTPS id E28485A0271 for ; Mon, 09 Nov 2026 17:41:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1794242499; 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=TA7/LtEgDJ3EW+3NzqWMwQzpuk/VW6si4rVfKlVxah4=; b=hzsMRuS7OZXxw2Qm99fOSrgA2NTHkWNG3e1cQR8MBjVj14xE6bdBn5QX9JbID3qexnnsR9 TqDTViZ0hW1NAjPawcskliw0Hf9vbMwn6utVRMjiUCijiIFHUebKM9G1aNFvipHfhoSUvm QQfDVzEBUkUBnUljJGmBLtC8ifU5hLM= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-355-JitXYvnDMdm95DWEU_Gc9Q-1; Mon, 09 Nov 2026 11:41:38 -0500 X-MC-Unique: JitXYvnDMdm95DWEU_Gc9Q-1 X-Mimecast-MFC-AGG-ID: JitXYvnDMdm95DWEU_Gc9Q_1794242497 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4a4654add56so8766315e9.2 for ; Mon, 09 Nov 2026 08:41:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794242497; x=1794847297; 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=TA7/LtEgDJ3EW+3NzqWMwQzpuk/VW6si4rVfKlVxah4=; b=1uGYtlaeGqQiXaH4KjN8i659oakOYWTa1s4iPWoMD9luds19Zoz3GpuscNbCran3cM GRSgP1+S3DvlLeHoI5xk3H7r9R9G5kVX0ruBVPfQKHDzkl4yShWeRGpXvVaCWLsyLPvA 9/8ehAbEWCpxdK0LFu2BKCH8fy9WyTLYVPeNwKbLKwpb0J4L06fx18OyuPIUKuLdJ19A yAaOI0PZRHvXvo/9YvyPpRNmhot7oOzr+Fp68mm7KGYlJGR4ZxvCB5ipZLi6uQXg++2A w9yGaXuuFC6nLwbsTjiq7Cnu3wiUZTVUOOvwZGpO5Ceamqg5jeOzpmXW6wR/CRYSum8y Xehw== X-Forwarded-Encrypted: i=1; AL+hErEcYO6baOw07QtvPoIW54RbJCs5K9MNRwsQx/gRoAVzZAJdEYHY9TWWl1dQcam2YfxmwHp7IWrge30=@passt.top X-Gm-Message-State: APuU4Z83zUQQTgryqBc94iRGPBLoFQ5KGQhbNkmgGP62H6Ar9KCsMrrS 2ww31sl/9BZLzMkSvT/wDYAKTFmwLSKJF8C7WCNFsVPed3tsaZHXqAA3QUVQkTz3+qJt5OOaxGu sl0wJc1zzwEl+qTGImWBkV3pjz2ourEVzFEVJBF4AtCQlMmMNPEcRwjL0hKCB7A== X-Gm-Gg: AYBFou0bT+psybM36pOewzMmYMd7eIWqHanpgxr9651nIG9YuU89tLe3pT9uJ8//9a8 4JZYjemyn7yrkvcyg0EcadnbPeIJyG8YjcJTDQhCyjMQRQX5yPc08fpmAaLTlrSWiGFA15EBwyF Gq5vcAkkMv9Y/tMj7h52XHlLjT7IY0gd0fOdUuwW95Ub/OZdHL5lhn/3rarwxi4wcS55dBhV7vR /qXNS6JKni8P3OQ4juMLFMeXZoWWXw3zhXz4i9XBTDGpDgjWMb3cuTUEAkQ347cgmaz4ixcrNDV kF7FVTA61yz0JGb/pQ71kSADixNNyZOHENUySErXmrXetuMWiekiLXn4aq9fTNX9ltc3HILHx4c lDGd8AlCUIW1nFqdlaOtOTn+w/v+WVfUpzxtunlTwHd/vFeB2gAiOAd2J9cAd3+JvbPe+Bhk3JJ RCHQpv4YLnZanST+I= X-Received: by 2002:a05:600d:84ca:10b0:4a1:f377:5c6c with SMTP id 5b1f17b1804b1-4b9ff6973d1mr20274335e9.10.1794242496754; Mon, 09 Nov 2026 08:41:36 -0800 (PST) X-Received: by 2002:a05:600d:84ca:10b0:4a1:f377:5c6c with SMTP id 5b1f17b1804b1-4b9ff6973d1mr20274065e9.10.1794242496249; Mon, 09 Nov 2026 08:41:36 -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 ffacd0b85a97d-49592f38e2bsm11490869f8f.8.2026.11.09.08.41.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Nov 2026 08:41:35 -0800 (PST) Message-ID: <04f17340-ed90-438f-90c2-023dca0c525c@redhat.com> Date: Mon, 9 Nov 2026 17:41:35 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 5/7] tap, tcp, udp: Prepare the to-guest path for vhost-net To: aerosouund , passt-dev@passt.top References: <20261016204940.33190-1-aerosound161@gmail.com> <20261016204940.33190-6-aerosound161@gmail.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20261016204940.33190-6-aerosound161@gmail.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: _6IyGOj_CUSMpN4v4DgJpFZxKHXHcCkHwSjtpWgIQBs_1794242497 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: C3K3CESU5DYSZP6TOIPGZMKG7GJXKL6C X-Message-ID-Hash: C3K3CESU5DYSZP6TOIPGZMKG7GJXKL6C 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+IEZyYW1lcyBzZW50IHRocm91Z2ggdmhv c3QtbmV0IGNhcnJ5IGEgdmlydGlvLW5ldCBoZWFkZXIgd2hlcmUgcGFzdGEncw0KPiB0YXAgaGVh ZGVyIHdvdWxkIG90aGVyd2lzZSBnbywgdGhpcyBuZWNlc3NpdGF0ZXMgdGhlIGZvbGxvd2luZyB0 d28NCj4gY2hhbmdlczoNCj4gDQo+IC0gdWRwX3RhcF9wcmVwYXJlKCkgaGFzIGJlZW4gbW9kaWZp ZWQgdG8gdGFrZSBhIGNvbnRleHQgcGFyYW1ldGVyIHNvIGl0DQo+ICAgIGNhbiBjaGVjayBpZiB2 aG9zdCBpcyBzZXQgdXAuIE9ubHkgaWYgaXQgaXNuJ3Qgc2hvdWxkIHRhcF9oZHJfdXBkYXRlDQo+ ICAgIGJlIGNhbGxlZCBiZWNhdXNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0aXZlIHVuaW9uIHZh cmlhbnQgaXMgdm5ldF9sZW4NCj4gICAgbm8gdGhlIHZpcnRpbyBuZXQgaGVhZGVyDQo+IC0gdGFw X2wyX29mZnNldCgpIGEgbmV3IGhlbHBlciwgaGFzIGJlZW4gaW50cm9kdWNlZCB3aGljaCB0ZWxs cw0KPiAgICBwY2FwX211bHRpcGxlKCkgaG93IG1hbnkgYnl0ZXMgcHJlY2VkZSB0aGUgTDIgZnJh bWUsIHdoaWNoIG5vdyB2YXJpZXMNCj4gICAgd2l0aCB2aG9zdCBhcyB3ZWxsIGFzIHdpdGggdGhl IG1vZGUNCj4gDQo+IHRhcF9zZW5kX3NpbmdsZSgpIGNhbGxzIHRhcF9zZW5kX2ZyYW1lc19wYXNz dCgpIGFuZA0KPiB0YXBfc2VuZF9mcmFtZXNfcGFzdGEoKSBkaXJlY3RseSByYXRoZXIgdGhhbiBn b2luZyB0aHJvdWdoDQo+IHRhcF9zZW5kX2ZyYW1lcygpLiBJdHMgY2FsbGVycyAtIEFSUCwgVENQ IHJlc2V0cywgYW5kIERIQ1AsIERIQ1B2NiwgTkRQDQo+IGFuZCBJQ01QIHZpYSB0YXBfdWRwKl9z ZW5kKCkvdGFwX2ljbXAqX3NlbmQoKSAtIGJ1aWxkIHRoZWlyIGZyYW1lIGluIGENCj4gYnVmZmVy IG9uIHRoZSBzdGFjaywgbm90IGluIHRoZSBidWZmZXJzIHJlZ2lzdGVyZWQgd2l0aCB2aG9zdC1u ZXQuIFRoZQ0KPiBrZXJuZWwgY2FuIG9ubHkgcmVhZCBmcm9tIHJlZ2lzdGVyZWQgbWVtb3J5LCBz byB0aGVzZSBwcm90b2NvbHMgY2FuDQo+IG5ldmVyIHRha2UgdGhlIHZob3N0IHBhdGggYW5kIHNo b3VsZG4ndCBiZSB0ZXN0ZWQgZm9yIGl0IG9uIGV2ZXJ5IGZyYW1lLg0KPiANCj4gU2lnbmVkLW9m Zi1ieTogRXVnZW5pbyBQw6lyZXogPGVwZXJlem1hQHJlZGhhdC5jb20+DQo+IFNpZ25lZC1vZmYt Ynk6IEFtbWFyIFlhc3NlciA8YWVyb3NvdW5kMTYxQGdtYWlsLmNvbT4NCj4gLS0tDQo+ICAgdGFw LmMgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiAgIHRjcF9idWYuYyB8ICAxMiArKysrLS0NCj4gICB1ZHAuYyAgICAgfCAg MjcgKysrKysrKysrLS0tLQ0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwg NTIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvdGFwLmMgYi90YXAuYw0KPiBpbmRl eCBhNWZkZWU4Li5mZDUwMGYxIDEwMDY0NA0KPiAtLS0gYS90YXAuYw0KPiArKysgYi90YXAuYw0K PiBAQCAtMTIzLDQ1ICsxMjMsNiBAQCB1bnNpZ25lZCBsb25nIHRhcF9sMl9tYXhfbGVuKGNvbnN0 IHN0cnVjdCBjdHggKmMpDQo+ICAgCXJldHVybiAwOyAvKiBVbnJlYWNoYWJsZSwgZm9yIGNwcGNo ZWNrJ3Mgc2FrZSAqLw0KPiAgIH0NCj4gDQo+IC0vKioNCj4gLSAqIHRhcF9zZW5kX3NpbmdsZSgp IC0gU2VuZCBhIHNpbmdsZSBmcmFtZQ0KPiAtICogQGM6CQlFeGVjdXRpb24gY29udGV4dA0KPiAt ICogQGRhdGE6CVBhY2tldCBidWZmZXINCj4gLSAqIEBsMmxlbjoJVG90YWwgTDIgcGFja2V0IGxl bmd0aA0KPiAtICovDQo+IC12b2lkIHRhcF9zZW5kX3NpbmdsZShjb25zdCBzdHJ1Y3QgY3R4ICpj LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbDJsZW4pDQo+IC17DQo+IC0JdWludDhfdCBwYWRk ZWRbRVRIX1pMRU5dID0geyAwIH07DQo+IC0Jc3RydWN0IGlvdmVjIGlvdlsyXTsNCj4gLQlzaXpl X3QgaW92Y250ID0gMDsNCj4gLQl1aW50MzJfdCB2bmV0X2xlbjsNCj4gLQ0KPiAtCWlmIChsMmxl biA8IEVUSF9aTEVOKSB7DQo+IC0JCW1lbWNweShwYWRkZWQsIGRhdGEsIGwybGVuKTsNCj4gLQkJ ZGF0YSA9IHBhZGRlZDsNCj4gLQkJbDJsZW4gPSBFVEhfWkxFTjsNCj4gLQl9DQo+IC0NCj4gLQl2 bmV0X2xlbiA9IGh0b25sKGwybGVuKTsNCj4gLQ0KPiAtCXN3aXRjaCAoYy0+bW9kZSkgew0KPiAt CWNhc2UgTU9ERV9QQVNTVDoNCj4gLQkJaW92W2lvdmNudF0gPSBJT1ZfT0ZfTFZBTFVFKHZuZXRf bGVuKTsNCj4gLQkJaW92Y250Kys7DQo+IC0JCS8qIGZhbGwgdGhyb3VnaCAqLw0KPiAtCWNhc2Ug TU9ERV9QQVNUQToNCj4gLQkJaW92W2lvdmNudF0uaW92X2Jhc2UgPSAodm9pZCAqKWRhdGE7DQo+ IC0JCWlvdltpb3ZjbnRdLmlvdl9sZW4gPSBsMmxlbjsNCj4gLQkJaW92Y250Kys7DQo+IC0NCj4g LQkJdGFwX3NlbmRfZnJhbWVzKGMsIGlvdiwgaW92Y250LCAxKTsNCj4gLQkJYnJlYWs7DQo+IC0J Y2FzZSBNT0RFX1ZVOg0KPiAtCQl2dV9zZW5kX3NpbmdsZShjLCBkYXRhLCBsMmxlbik7DQo+IC0J CWJyZWFrOw0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIHRhcF9wdXNoX2wyaCgp IC0gQnVpbGQgYW4gTDIgaGVhZGVyIGZvciBhbiBpbmJvdW5kIHBhY2tldA0KPiAgICAqIEBjOgkJ RXhlY3V0aW9uIGNvbnRleHQNCj4gQEAgLTQ5Nyw2ICs0NTgsNzYgQEAgc3RhdGljIHNpemVfdCB0 YXBfc2VuZF9mcmFtZXNfcGFzc3QoY29uc3Qgc3RydWN0IGN0eCAqYywNCj4gICAJcmV0dXJuIGkg LyBidWZzX3Blcl9mcmFtZTsNCj4gICB9DQo+IA0KPiArLyoqDQo+ICsgKiB0YXBfbDJfb2Zmc2V0 KCkgLSBCYWNrZW5kIHNwZWNpZmljIGhlYWRlciBzaXplIHByZWNlZGluZyBlYWNoIEwyIGZyYW1l DQo+ICsgKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQo+ICsgKg0KPiArICogUmV0dXJuOiBvZmZz ZXQgb2YgdGhlIEwyIGZyYW1lIHdpdGhpbiBlYWNoIGZyYW1lJ3MgZmlyc3QgYnVmZmVyDQo+ICsg Ki8NCj4gK3N0YXRpYyBzaXplX3QgdGFwX2wyX29mZnNldChjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0K PiArew0KPiArCWlmIChjLT5tb2RlID09IE1PREVfUEFTU1QpDQo+ICsJCXJldHVybiBzaXplb2Yo dWludDMyX3QpOwkvKiB2bmV0X2xlbiAqLw0KPiArDQo+ICsJaWYgKGMtPnZob3N0LmZkICE9IC0x KQ0KPiArCQlyZXR1cm4gVk5FVF9ITEVOOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICogdGFwX3NlbmRfc2luZ2xlKCkgLSBTZW5kIGEgc2luZ2xlIGZyYW1lDQo+ ICsgKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQo+ICsgKiBAZGF0YToJUGFja2V0IGJ1ZmZlcg0K PiArICogQGwybGVuOglUb3RhbCBMMiBwYWNrZXQgbGVuZ3RoDQo+ICsgKi8NCj4gK3ZvaWQgdGFw X3NlbmRfc2luZ2xlKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf dCBsMmxlbikNCj4gK3sNCj4gKwl1aW50OF90IHBhZGRlZFtFVEhfWkxFTl0gPSB7IDAgfTsNCj4g KwlzdHJ1Y3QgaW92ZWMgaW92WzJdOw0KPiArCXVpbnQzMl90IHZuZXRfbGVuOw0KPiArCXNpemVf dCBpb3ZjbnQgPSAwOw0KPiArCXNpemVfdCBtID0gMDsNCj4gKw0KPiArCWlmIChsMmxlbiA8IEVU SF9aTEVOKSB7DQo+ICsJCW1lbWNweShwYWRkZWQsIGRhdGEsIGwybGVuKTsNCj4gKwkJZGF0YSA9 IHBhZGRlZDsNCj4gKwkJbDJsZW4gPSBFVEhfWkxFTjsNCj4gKwl9DQo+ICsNCj4gKwl2bmV0X2xl biA9IGh0b25sKGwybGVuKTsNCj4gKw0KPiArCXN3aXRjaCAoYy0+bW9kZSkgew0KPiArCWNhc2Ug TU9ERV9QQVNTVDoNCj4gKwkJLyogY3JlYXRlIGFuIGlvdiBmb3IgdGhlIGxlbmd0aCAqLw0KPiAr CQlpb3ZbaW92Y250XSA9IElPVl9PRl9MVkFMVUUodm5ldF9sZW4pOw0KPiArCQlpb3ZjbnQrKzsN Cj4gKwkJLyogY3JlYXRlIHRoZSBkYXRhIGlvdiAqLw0KPiArCQlpb3ZbaW92Y250XS5pb3ZfYmFz ZSA9ICh2b2lkICopZGF0YTsNCj4gKwkJaW92W2lvdmNudF0uaW92X2xlbiA9IGwybGVuOw0KPiAr CQlpb3ZjbnQrKzsNCj4gKw0KPiArCQltID0gdGFwX3NlbmRfZnJhbWVzX3Bhc3N0KGMsIGlvdiwg aW92Y250LCAxKTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBNT0RFX1BBU1RBOg0KPiArCQkvKiBk b24ndCBjcmVhdGUgYSBsZW5ndGggaW92IGluIHRoZSBjYXNlIG9mIHBhc3RhICovDQo+ICsJCWlv dltpb3ZjbnRdLmlvdl9iYXNlID0gKHZvaWQgKilkYXRhOw0KPiArCQlpb3ZbaW92Y250XS5pb3Zf bGVuID0gbDJsZW47DQo+ICsJCWlvdmNudCsrOw0KPiArDQo+ICsJCW0gPSB0YXBfc2VuZF9mcmFt ZXNfcGFzdGEoYywgaW92LCBpb3ZjbnQsIDEpOw0KPiArCQlicmVhazsNCj4gKwljYXNlIE1PREVf VlU6DQo+ICsJCXZ1X3NlbmRfc2luZ2xlKGMsIGRhdGEsIGwybGVuKTsNCj4gKwkJcmV0dXJuOw0K PiArCX0NCj4gKw0KPiArCWlmICghbSkNCj4gKwkJZGVidWcoInRhcDogZmFpbGVkIHRvIHNlbmQg YSBzaW5nbGUgZnJhbWUiKTsNCj4gKw0KPiArCXBjYXBfbXVsdGlwbGUoaW92LCBpb3ZjbnQsIG0s IHRhcF9sMl9vZmZzZXQoYykpOw0KDQpmb3IgTU9ERV9QQVNUQSB3aXRoIHZob3N0LCB0YXBfbDJf b2Zmc2V0KGMpIGlzIFZORVRfSExFTiwgYnV0IGluICJjYXNlIE1PREVfUEFTVEEiIA0KaW92X2Jh c2UgcG9pbnRzIGRpcmVjdGx5IHRvIGRhdGEsIHNvIGl0IHNob3VsZCBiZSAwLg0KDQo+ICt9DQo+ ICsNCj4gICAvKioNCj4gICAgKiB0YXBfc2VuZF9mcmFtZXMoKSAtIFNlbmQgb3V0IG11bHRpcGxl IHByZXBhcmVkIGZyYW1lcw0KPiAgICAqIEBjOgkJCUV4ZWN1dGlvbiBjb250ZXh0DQo+IEBAIC01 MzcsOCArNTY4LDcgQEAgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lcyhjb25zdCBzdHJ1Y3QgY3R4ICpj LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwNCj4gICAJCWRlYnVnKCJ0YXA6IGZhaWxlZCB0byBz ZW5kICV6dSBmcmFtZXMgb2YgJXp1IiwNCj4gICAJCSAgICAgIG5mcmFtZXMgLSBtLCBuZnJhbWVz KTsNCj4gDQo+IC0JcGNhcF9tdWx0aXBsZShpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBtLA0KPiAtCQkg ICAgICBjLT5tb2RlID09IE1PREVfUEFTU1QgPyBzaXplb2YodWludDMyX3QpIDogMCk7DQo+ICsJ cGNhcF9tdWx0aXBsZShpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBtLCB0YXBfbDJfb2Zmc2V0KGMpKTsN Cj4gDQo+ICAgCXJldHVybiBtOw0KPiAgIH0NCj4gZGlmZiAtLWdpdCBhL3RjcF9idWYuYyBiL3Rj cF9idWYuYw0KPiBpbmRleCBkZDgwMzg0Li40OTNjNWM5IDEwMDY0NA0KPiAtLS0gYS90Y3BfYnVm LmMNCj4gKysrIGIvdGNwX2J1Zi5jDQo+IEBAIC0yMSw2ICsyMSw3IEBADQo+ICAgI2luY2x1ZGUg PG5ldGluZXQvaXAuaD4NCj4gDQo+ICAgI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvdmlydGlvX25ldC5oPg0KPiANCj4gICAjaW5jbHVkZSAidXRpbC5oIg0KPiAg ICNpbmNsdWRlICJpcC5oIg0KPiBAQCAtNDQsNyArNDUsNyBAQA0KPiAgIC8qIEV0aGVybmV0IGhl YWRlciBmb3IgSVB2NCBhbmQgSVB2NiBmcmFtZXMgKi8NCj4gICBzdGF0aWMgc3RydWN0IGV0aGhk cgkJdGNwX2V0aF9oZHJbVENQX0ZSQU1FU19NRU1dOw0KPiANCj4gLXN0YXRpYyBzdHJ1Y3QgdGFw X2hkcgkJdGNwX3BheWxvYWRfdGFwX2hkcltUQ1BfRlJBTUVTX01FTV07DQo+ICtzdGF0aWMgc3Ry dWN0IHZpcnRpb19uZXRfaGRyX21yZ19yeGJ1ZiB0Y3BfcGF5bG9hZF90YXBfaGRyW1RDUF9GUkFN RVNfTUVNXTsNCg0KV2UgY2FuIGtlZXAgInN0cnVjdCB0YXBfaGRyIiBhcyBpdCBpcyBhbiB1bmlv biBvZiBzdHJ1Y3QgdmlydGlvX25ldF9oZHJfbXJnX3J4YnVmLj4NCj4gICAvKiBJUCBoZWFkZXJz IGZvciBJUHY0IGFuZCBJUHY2ICovDQo+ICAgc3RhdGljIHN0cnVjdCBpcGhkcgkJdGNwNF9wYXls b2FkX2lwW1RDUF9GUkFNRVNfTUVNXTsNCj4gQEAgLTExMyw3ICsxMTQsNyBAQCB2b2lkIHRjcF9z b2NrX2lvdl9pbml0KGNvbnN0IHN0cnVjdCBjdHggKmMpDQo+ICAgCWZvciAoaSA9IDA7IGkgPCBU Q1BfRlJBTUVTX01FTTsgaSsrKSB7DQo+ICAgCQlzdHJ1Y3QgaW92ZWMgKmlvdiA9IHRjcF9sMl9p b3ZbaV07DQo+IA0KPiAtCQlpb3ZbVENQX0lPVl9UQVBdID0gdGFwX2hkcl9pb3YoYywgJnRjcF9w YXlsb2FkX3RhcF9oZHJbaV0pOw0KPiArCQlpb3ZbVENQX0lPVl9UQVBdID0gdGFwX2hkcl9pb3Yo YywgKHN0cnVjdCB0YXBfaGRyICopJnRjcF9wYXlsb2FkX3RhcF9oZHJbaV0pOw0KDQphbmQgdGhl biBubyBuZWVkIG9mIHRoZSBjYXN0Lg0KDQo+ICAgCQlpb3ZbVENQX0lPVl9FVEhdLmlvdl9sZW4g PSBzaXplb2Yoc3RydWN0IGV0aGhkcik7DQo+ICAgCQlpb3ZbVENQX0lPVl9QQVlMT0FEXS5pb3Zf YmFzZSA9ICZ0Y3BfcGF5bG9hZFtpXTsNCj4gICAJCWlvdltUQ1BfSU9WX0VUSF9QQURdLmlvdl9i YXNlID0gZXRoX3BhZDsNCj4gQEAgLTIxNiw3ICsyMTcsMTIgQEAgc3RhdGljIHZvaWQgdGNwX2wy X2J1Zl9maWxsX2hlYWRlcnMoY29uc3Qgc3RydWN0IGN0eCAqYywNCj4gDQo+ICAgCWwybGVuID0g dGNwX2ZpbGxfaGVhZGVycyhjLCBjb25uLCBlaCwgaXA0aCwgaXA2aCwgdGgsICZ0YWlsLA0KPiAg IAkJCQkgaW92X3RhaWxfc2l6ZSgmdGFpbCksIGNzdW1fZmxhZ3MsIHNlcSk7DQo+IC0JdGFwX2hk cl91cGRhdGUodGFwaCwgbDJsZW4pOw0KPiArDQo+ICsJLyogV2l0aCB2aG9zdC1uZXQgdGhpcyBi dWZmZXIgaG9sZHMgYSB2aXJ0aW8tbmV0IGhlYWRlciwgd2hpY2ggYSB0YXANCj4gKwkgKiBvbmUg bXVzdCBub3QgYmUgd3JpdHRlbiBvdmVyDQo+ICsJICovDQo+ICsJaWYgKGMtPnZob3N0LmZkID09 IC0xKQ0KPiArCQl0YXBfaGRyX3VwZGF0ZSh0YXBoLCBsMmxlbik7DQo+ICAgfQ0KPiANCj4gICAv KioNCj4gZGlmZiAtLWdpdCBhL3VkcC5jIGIvdWRwLmMNCj4gaW5kZXggYTQzNTVhMS4uYWZlMWM3 ZiAxMDA2NDQNCj4gLS0tIGEvdWRwLmMNCj4gKysrIGIvdWRwLmMNCj4gQEAgLTEwMyw2ICsxMDMs NyBAQA0KPiAgICNpbmNsdWRlIDx0aW1lLmg+DQo+ICAgI2luY2x1ZGUgPGFycGEvaW5ldC5oPg0K PiAgICNpbmNsdWRlIDxsaW51eC9lcnJxdWV1ZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3ZpcnRp b19uZXQuaD4NCj4gDQo+ICAgI2luY2x1ZGUgImNoZWNrc3VtLmgiDQo+ICAgI2luY2x1ZGUgInV0 aWwuaCINCj4gQEAgLTE0OSwxMiArMTUwLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgZXRoaGRyIHVkcF9l dGhfaGRyW1VEUF9NQVhfRlJBTUVTXTsNCj4gICAgKiBzdHJ1Y3QgdWRwX21ldGFfdCAtIFByZS1j b29rZWQgaGVhZGVycyBmb3IgVURQIHBhY2tldHMNCj4gICAgKiBAaXA2aDoJUHJlLWZpbGxlZCBJ UHY2IGhlYWRlciAoZXhjZXB0IGZvciBwYXlsb2FkX2xlbiBhbmQgYWRkcmVzc2VzKQ0KPiAgICAq IEBpcDRoOglQcmUtZmlsbGVkIElQdjQgaGVhZGVyIChleGNlcHQgZm9yIHRvdF9sZW4gYW5kIHNh ZGRyKQ0KPiAtICogQHRhcGg6CVRhcCBiYWNrZW5kIHNwZWNpZmljIGhlYWRlcg0KPiArICogQHZu ZXRfaGRyOgl2aXJ0aW8tbmV0IGhlYWRlciwgdXNlZCB3aGVuIHNlbmRpbmcgdGhyb3VnaCB2aG9z dC1uZXQNCj4gKyAqIEB0YXBoOglUYXAgYmFja2VuZCBzcGVjaWZpYyBoZWFkZXIsIHVzZWQgb3Ro ZXJ3aXNlDQo+ICAgICovDQo+ICAgc3RhdGljIHN0cnVjdCB1ZHBfbWV0YV90IHsNCj4gICAJc3Ry dWN0IGlwdjZoZHIgaXA2aDsNCj4gICAJc3RydWN0IGlwaGRyIGlwNGg7DQo+IC0Jc3RydWN0IHRh cF9oZHIgdGFwaDsNCj4gKwl1bmlvbiB7DQo+ICsJCXN0cnVjdCB2aXJ0aW9fbmV0X2hkcl9tcmdf cnhidWYgdm5ldF9oZHI7DQo+ICsJCXN0cnVjdCB0YXBfaGRyIHRhcGg7DQo+ICsJfTsNCg0KU2Ft ZSBoZXJlLCAic3RydWN0IHRhcF9oZHIiIGlzIGFuIHVuaW9uIG9mICJzdHJ1Y3QgdmlydGlvX25l dF9oZHJfbXJnX3J4YnVmIg0KDQo+ICAgfQ0KPiAgICNpZmRlZiBfX0FWWDJfXw0KPiAgIF9fYXR0 cmlidXRlX18gKChhbGlnbmVkKDMyKSkpDQo+IEBAIC0zNTYsMTMgKzM2MSwxNSBAQCBzdGF0aWMg dm9pZCB1ZHBfdGFwX3BhZChzdHJ1Y3QgaW92ZWMgKmlvdikNCj4gDQo+ICAgLyoqDQo+ICAgICog dWRwX3RhcF9wcmVwYXJlKCkgLSBDb252ZXJ0IG9uZSBkYXRhZ3JhbSBpbnRvIGEgdGFwIGZyYW1l DQo+ICsgKiBAYzogICAgICBFeGVjdXRpb24gY29udGV4dA0KPiAgICAqIEBtbWg6CVJlY2Vpdmlu ZyBtbXNnaGRyIGFycmF5DQo+ICAgICogQGlkeDoJSW5kZXggb2YgdGhlIGRhdGFncmFtIHRvIHBy ZXBhcmUNCj4gICAgKiBAdGFwX29tYWM6CU1BQyBhZGRyZXNzIG9mIHJlbW90ZSBlbmRwb2ludCBh cyBzZWVuIGZyb20gdGhlIGd1ZXN0DQo+ICAgICogQHRvc2lkZToJRmxvd3NpZGUgZm9yIGRlc3Rp bmF0aW9uIHNpZGUNCj4gICAgKiBAbm9fdWRwX2NzdW06IERvIG5vdCBzZXQgVURQIGNoZWNrc3Vt DQo+ICAgICovDQo+IC1zdGF0aWMgdm9pZCB1ZHBfdGFwX3ByZXBhcmUoY29uc3Qgc3RydWN0IG1t c2doZHIgKm1taCwNCj4gK3N0YXRpYyB2b2lkIHVkcF90YXBfcHJlcGFyZShjb25zdCBzdHJ1Y3Qg Y3R4ICpjLA0KPiArCQkJCWNvbnN0IHN0cnVjdCBtbXNnaGRyICptbWgsDQo+ICAgCQkJICAgIHVu c2lnbmVkIGludCBpZHgsDQo+ICAgCQkJICAgIGNvbnN0IHVpbnQ4X3QgKnRhcF9vbWFjLA0KPiAg IAkJCSAgICBjb25zdCBzdHJ1Y3QgZmxvd3NpZGUgKnRvc2lkZSwNCj4gQEAgLTM4NCw4ICszOTEs MTAgQEAgc3RhdGljIHZvaWQgdWRwX3RhcF9wcmVwYXJlKGNvbnN0IHN0cnVjdCBtbXNnaGRyICpt bWgsDQo+ICAgCQl1ZHBfdXBkYXRlX2hkcjYoJmJtLT5pcDZoLCB1aCwgJnBheWxvYWQsIHRvc2lk ZSwNCj4gICAJCQkgICAgICAgIG1taFtpZHhdLm1zZ19sZW4sIG5vX3VkcF9jc3VtKTsNCj4gDQo+ IC0JCWwybGVuID0gTUFYKGw0bGVuICsgc2l6ZW9mKGJtLT5pcDZoKSArIEVUSF9ITEVOLCBFVEhf WkxFTik7DQo+IC0JCXRhcF9oZHJfdXBkYXRlKCZibS0+dGFwaCwgbDJsZW4pOw0KPiArCQlpZiAo Yy0+bW9kZSA9PSBNT0RFX1BBU1NUKSB7DQo+ICsJCQlsMmxlbiA9IE1BWChsNGxlbiArIHNpemVv ZihibS0+aXA2aCkgKyBFVEhfSExFTiwgRVRIX1pMRU4pOw0KPiArCQkJdGFwX2hkcl91cGRhdGUo JmJtLT50YXBoLCBsMmxlbik7DQo+ICsJCX0NCj4gDQo+ICAgCQllaC0+aF9wcm90byA9IGh0b25z X2NvbnN0YW50KEVUSF9QX0lQVjYpOw0KPiAgIAkJKCp0YXBfaW92KVtVRFBfSU9WX0lQXSA9IElP Vl9PRl9MVkFMVUUoYm0tPmlwNmgpOw0KPiBAQCAtMzkzLDggKzQwMiwxMCBAQCBzdGF0aWMgdm9p ZCB1ZHBfdGFwX3ByZXBhcmUoY29uc3Qgc3RydWN0IG1tc2doZHIgKm1taCwNCj4gICAJCXVkcF91 cGRhdGVfaGRyNCgmYm0tPmlwNGgsIHVoLCAmcGF5bG9hZCwgdG9zaWRlLA0KPiAgIAkJCSAgICAg ICAgbW1oW2lkeF0ubXNnX2xlbiwgbm9fdWRwX2NzdW0pOw0KPiANCj4gLQkJbDJsZW4gPSBNQVgo bDRsZW4gKyBzaXplb2YoYm0tPmlwNGgpICsgRVRIX0hMRU4sIEVUSF9aTEVOKTsNCj4gLQkJdGFw X2hkcl91cGRhdGUoJmJtLT50YXBoLCBsMmxlbik7DQo+ICsJCWlmIChjLT5tb2RlID09IE1PREVf UEFTU1QpIHsNCj4gKwkJCWwybGVuID0gTUFYKGw0bGVuICsgc2l6ZW9mKGJtLT5pcDRoKSArIEVU SF9ITEVOLCBFVEhfWkxFTik7DQo+ICsJCQl0YXBfaGRyX3VwZGF0ZSgmYm0tPnRhcGgsIGwybGVu KTsNCj4gKwkJfQ0KPiANCj4gICAJCWVoLT5oX3Byb3RvID0gaHRvbnNfY29uc3RhbnQoRVRIX1Bf SVApOw0KPiAgIAkJKCp0YXBfaW92KVtVRFBfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUoYm0tPmlw NGgpOw0KPiBAQCAtODY3LDcgKzg3OCw3IEBAIHN0YXRpYyB2b2lkIHVkcF9idWZfc29ja190b190 YXAoY29uc3Qgc3RydWN0IGN0eCAqYywgaW50IHMsIGludCBuLA0KPiAgIAkJZndkX25laWdoX21h Y19nZXQoYywgJnRvc2lkZS0+b2FkZHIsIG9tYWMpOw0KPiANCj4gICAJZm9yIChpID0gMDsgaSA8 IG47IGkrKykNCj4gLQkJdWRwX3RhcF9wcmVwYXJlKHVkcF9taF9yZWN2LCBpLCBvbWFjLCB0b3Np ZGUsIGZhbHNlKTsNCj4gKwkJdWRwX3RhcF9wcmVwYXJlKGMsIHVkcF9taF9yZWN2LCBpLCBvbWFj LCB0b3NpZGUsIGZhbHNlKTsNCj4gDQo+ICAgCXRhcF9zZW5kX2ZyYW1lcyhjLCAmdWRwX2wyX2lv dlswXVswXSwgVURQX05VTV9JT1ZTLCBuKTsNCj4gICB9DQo+IC0tDQo+IDIuMzkuNSAoQXBwbGUg R2l0LTE1NCkNCg0K