From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=fail (p=none dis=none) header.from=gmail.com Received: from [10.157.41.19] (unknown [105.199.60.18]) by passt.top (Postfix) with ESMTP id D57455A0274 for ; Fri, 16 Oct 2026 22:55:45 +0200 (CEST) X-FEAS-Client-IP: 10.157.41.19 Received: by Ammars-Air.localdomain (Postfix, from userid 501) id 00B191564EF7; Fri, 16 Oct 2026 23:49:40 +0300 (EEST) From: aerosouund To: aerosound161@gmail.com, passt-dev@passt.top Subject: [PATCH v2 5/7] tap, tcp, udp: Prepare the to-guest path for vhost-net Date: Fri, 16 Oct 2026 23:49:38 +0300 Message-Id: <20261016204940.33190-6-aerosound161@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20261016204940.33190-1-aerosound161@gmail.com> References: <20261016204940.33190-1-aerosound161@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: VQX54ZCSTWO2R5MBFHWPSDYILUBWHTIN X-Message-ID-Hash: VQX54ZCSTWO2R5MBFHWPSDYILUBWHTIN X-MailFrom: ammaryasser@Ammars-Air.localdomain 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: RnJvbTogQW1tYXIgWWFzc2VyIDxhZXJvc291bmQxNjFAZ21haWwuY29tPg0KDQpGcmFtZXMgc2Vu dCB0aHJvdWdoIHZob3N0LW5ldCBjYXJyeSBhIHZpcnRpby1uZXQgaGVhZGVyIHdoZXJlIHBhc3Rh J3MNCnRhcCBoZWFkZXIgd291bGQgb3RoZXJ3aXNlIGdvLCB0aGlzIG5lY2Vzc2l0YXRlcyB0aGUg Zm9sbG93aW5nIHR3bw0KY2hhbmdlczoNCg0KLSB1ZHBfdGFwX3ByZXBhcmUoKSBoYXMgYmVlbiBt b2RpZmllZCB0byB0YWtlIGEgY29udGV4dCBwYXJhbWV0ZXIgc28gaXQNCiAgY2FuIGNoZWNrIGlm IHZob3N0IGlzIHNldCB1cC4gT25seSBpZiBpdCBpc24ndCBzaG91bGQgdGFwX2hkcl91cGRhdGUN CiAgYmUgY2FsbGVkIGJlY2F1c2UgdGhpcyBtZWFucyB0aGF0IHRoZSBhY3RpdmUgdW5pb24gdmFy aWFudCBpcyB2bmV0X2xlbg0KICBubyB0aGUgdmlydGlvIG5ldCBoZWFkZXINCi0gdGFwX2wyX29m ZnNldCgpIGEgbmV3IGhlbHBlciwgaGFzIGJlZW4gaW50cm9kdWNlZCB3aGljaCB0ZWxscw0KICBw Y2FwX211bHRpcGxlKCkgaG93IG1hbnkgYnl0ZXMgcHJlY2VkZSB0aGUgTDIgZnJhbWUsIHdoaWNo IG5vdyB2YXJpZXMNCiAgd2l0aCB2aG9zdCBhcyB3ZWxsIGFzIHdpdGggdGhlIG1vZGUNCg0KdGFw X3NlbmRfc2luZ2xlKCkgY2FsbHMgdGFwX3NlbmRfZnJhbWVzX3Bhc3N0KCkgYW5kDQp0YXBfc2Vu ZF9mcmFtZXNfcGFzdGEoKSBkaXJlY3RseSByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoDQp0YXBf c2VuZF9mcmFtZXMoKS4gSXRzIGNhbGxlcnMgLSBBUlAsIFRDUCByZXNldHMsIGFuZCBESENQLCBE SENQdjYsIE5EUA0KYW5kIElDTVAgdmlhIHRhcF91ZHAqX3NlbmQoKS90YXBfaWNtcCpfc2VuZCgp IC0gYnVpbGQgdGhlaXIgZnJhbWUgaW4gYQ0KYnVmZmVyIG9uIHRoZSBzdGFjaywgbm90IGluIHRo ZSBidWZmZXJzIHJlZ2lzdGVyZWQgd2l0aCB2aG9zdC1uZXQuIFRoZQ0Ka2VybmVsIGNhbiBvbmx5 IHJlYWQgZnJvbSByZWdpc3RlcmVkIG1lbW9yeSwgc28gdGhlc2UgcHJvdG9jb2xzIGNhbg0KbmV2 ZXIgdGFrZSB0aGUgdmhvc3QgcGF0aCBhbmQgc2hvdWxkbid0IGJlIHRlc3RlZCBmb3IgaXQgb24g ZXZlcnkgZnJhbWUuDQoNClNpZ25lZC1vZmYtYnk6IEV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUBy ZWRoYXQuY29tPg0KU2lnbmVkLW9mZi1ieTogQW1tYXIgWWFzc2VyIDxhZXJvc291bmQxNjFAZ21h aWwuY29tPg0KLS0tDQogdGFwLmMgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIHRjcF9idWYuYyB8ICAxMiArKysrLS0NCiB1 ZHAuYyAgICAgfCAgMjcgKysrKysrKysrLS0tLQ0KIDMgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0 aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS90YXAuYyBiL3RhcC5jDQpp bmRleCBhNWZkZWU4Li5mZDUwMGYxIDEwMDY0NA0KLS0tIGEvdGFwLmMNCisrKyBiL3RhcC5jDQpA QCAtMTIzLDQ1ICsxMjMsNiBAQCB1bnNpZ25lZCBsb25nIHRhcF9sMl9tYXhfbGVuKGNvbnN0IHN0 cnVjdCBjdHggKmMpDQogCXJldHVybiAwOyAvKiBVbnJlYWNoYWJsZSwgZm9yIGNwcGNoZWNrJ3Mg c2FrZSAqLw0KIH0NCg0KLS8qKg0KLSAqIHRhcF9zZW5kX3NpbmdsZSgpIC0gU2VuZCBhIHNpbmds ZSBmcmFtZQ0KLSAqIEBjOgkJRXhlY3V0aW9uIGNvbnRleHQNCi0gKiBAZGF0YToJUGFja2V0IGJ1 ZmZlcg0KLSAqIEBsMmxlbjoJVG90YWwgTDIgcGFja2V0IGxlbmd0aA0KLSAqLw0KLXZvaWQgdGFw X3NlbmRfc2luZ2xlKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf dCBsMmxlbikNCi17DQotCXVpbnQ4X3QgcGFkZGVkW0VUSF9aTEVOXSA9IHsgMCB9Ow0KLQlzdHJ1 Y3QgaW92ZWMgaW92WzJdOw0KLQlzaXplX3QgaW92Y250ID0gMDsNCi0JdWludDMyX3Qgdm5ldF9s ZW47DQotDQotCWlmIChsMmxlbiA8IEVUSF9aTEVOKSB7DQotCQltZW1jcHkocGFkZGVkLCBkYXRh LCBsMmxlbik7DQotCQlkYXRhID0gcGFkZGVkOw0KLQkJbDJsZW4gPSBFVEhfWkxFTjsNCi0JfQ0K LQ0KLQl2bmV0X2xlbiA9IGh0b25sKGwybGVuKTsNCi0NCi0Jc3dpdGNoIChjLT5tb2RlKSB7DQot CWNhc2UgTU9ERV9QQVNTVDoNCi0JCWlvdltpb3ZjbnRdID0gSU9WX09GX0xWQUxVRSh2bmV0X2xl bik7DQotCQlpb3ZjbnQrKzsNCi0JCS8qIGZhbGwgdGhyb3VnaCAqLw0KLQljYXNlIE1PREVfUEFT VEE6DQotCQlpb3ZbaW92Y250XS5pb3ZfYmFzZSA9ICh2b2lkICopZGF0YTsNCi0JCWlvdltpb3Zj bnRdLmlvdl9sZW4gPSBsMmxlbjsNCi0JCWlvdmNudCsrOw0KLQ0KLQkJdGFwX3NlbmRfZnJhbWVz KGMsIGlvdiwgaW92Y250LCAxKTsNCi0JCWJyZWFrOw0KLQljYXNlIE1PREVfVlU6DQotCQl2dV9z ZW5kX3NpbmdsZShjLCBkYXRhLCBsMmxlbik7DQotCQlicmVhazsNCi0JfQ0KLX0NCi0NCiAvKioN CiAgKiB0YXBfcHVzaF9sMmgoKSAtIEJ1aWxkIGFuIEwyIGhlYWRlciBmb3IgYW4gaW5ib3VuZCBw YWNrZXQNCiAgKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQpAQCAtNDk3LDYgKzQ1OCw3NiBAQCBz dGF0aWMgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lc19wYXNzdChjb25zdCBzdHJ1Y3QgY3R4ICpjLA0K IAlyZXR1cm4gaSAvIGJ1ZnNfcGVyX2ZyYW1lOw0KIH0NCg0KKy8qKg0KKyAqIHRhcF9sMl9vZmZz ZXQoKSAtIEJhY2tlbmQgc3BlY2lmaWMgaGVhZGVyIHNpemUgcHJlY2VkaW5nIGVhY2ggTDIgZnJh bWUNCisgKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQorICoNCisgKiBSZXR1cm46IG9mZnNldCBv ZiB0aGUgTDIgZnJhbWUgd2l0aGluIGVhY2ggZnJhbWUncyBmaXJzdCBidWZmZXINCisgKi8NCitz dGF0aWMgc2l6ZV90IHRhcF9sMl9vZmZzZXQoY29uc3Qgc3RydWN0IGN0eCAqYykNCit7DQorCWlm IChjLT5tb2RlID09IE1PREVfUEFTU1QpDQorCQlyZXR1cm4gc2l6ZW9mKHVpbnQzMl90KTsJLyog dm5ldF9sZW4gKi8NCisNCisJaWYgKGMtPnZob3N0LmZkICE9IC0xKQ0KKwkJcmV0dXJuIFZORVRf SExFTjsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qKg0KKyAqIHRhcF9zZW5kX3NpbmdsZSgp IC0gU2VuZCBhIHNpbmdsZSBmcmFtZQ0KKyAqIEBjOgkJRXhlY3V0aW9uIGNvbnRleHQNCisgKiBA ZGF0YToJUGFja2V0IGJ1ZmZlcg0KKyAqIEBsMmxlbjoJVG90YWwgTDIgcGFja2V0IGxlbmd0aA0K KyAqLw0KK3ZvaWQgdGFwX3NlbmRfc2luZ2xlKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHZv aWQgKmRhdGEsIHNpemVfdCBsMmxlbikNCit7DQorCXVpbnQ4X3QgcGFkZGVkW0VUSF9aTEVOXSA9 IHsgMCB9Ow0KKwlzdHJ1Y3QgaW92ZWMgaW92WzJdOw0KKwl1aW50MzJfdCB2bmV0X2xlbjsNCisJ c2l6ZV90IGlvdmNudCA9IDA7DQorCXNpemVfdCBtID0gMDsNCisNCisJaWYgKGwybGVuIDwgRVRI X1pMRU4pIHsNCisJCW1lbWNweShwYWRkZWQsIGRhdGEsIGwybGVuKTsNCisJCWRhdGEgPSBwYWRk ZWQ7DQorCQlsMmxlbiA9IEVUSF9aTEVOOw0KKwl9DQorDQorCXZuZXRfbGVuID0gaHRvbmwobDJs ZW4pOw0KKw0KKwlzd2l0Y2ggKGMtPm1vZGUpIHsNCisJY2FzZSBNT0RFX1BBU1NUOg0KKwkJLyog Y3JlYXRlIGFuIGlvdiBmb3IgdGhlIGxlbmd0aCAqLw0KKwkJaW92W2lvdmNudF0gPSBJT1ZfT0Zf TFZBTFVFKHZuZXRfbGVuKTsNCisJCWlvdmNudCsrOw0KKwkJLyogY3JlYXRlIHRoZSBkYXRhIGlv diAqLw0KKwkJaW92W2lvdmNudF0uaW92X2Jhc2UgPSAodm9pZCAqKWRhdGE7DQorCQlpb3ZbaW92 Y250XS5pb3ZfbGVuID0gbDJsZW47DQorCQlpb3ZjbnQrKzsNCisNCisJCW0gPSB0YXBfc2VuZF9m cmFtZXNfcGFzc3QoYywgaW92LCBpb3ZjbnQsIDEpOw0KKwkJYnJlYWs7DQorCWNhc2UgTU9ERV9Q QVNUQToNCisJCS8qIGRvbid0IGNyZWF0ZSBhIGxlbmd0aCBpb3YgaW4gdGhlIGNhc2Ugb2YgcGFz dGEgKi8NCisJCWlvdltpb3ZjbnRdLmlvdl9iYXNlID0gKHZvaWQgKilkYXRhOw0KKwkJaW92W2lv dmNudF0uaW92X2xlbiA9IGwybGVuOw0KKwkJaW92Y250Kys7DQorDQorCQltID0gdGFwX3NlbmRf ZnJhbWVzX3Bhc3RhKGMsIGlvdiwgaW92Y250LCAxKTsNCisJCWJyZWFrOw0KKwljYXNlIE1PREVf VlU6DQorCQl2dV9zZW5kX3NpbmdsZShjLCBkYXRhLCBsMmxlbik7DQorCQlyZXR1cm47DQorCX0N CisNCisJaWYgKCFtKQ0KKwkJZGVidWcoInRhcDogZmFpbGVkIHRvIHNlbmQgYSBzaW5nbGUgZnJh bWUiKTsNCisNCisJcGNhcF9tdWx0aXBsZShpb3YsIGlvdmNudCwgbSwgdGFwX2wyX29mZnNldChj KSk7DQorfQ0KKw0KIC8qKg0KICAqIHRhcF9zZW5kX2ZyYW1lcygpIC0gU2VuZCBvdXQgbXVsdGlw bGUgcHJlcGFyZWQgZnJhbWVzDQogICogQGM6CQkJRXhlY3V0aW9uIGNvbnRleHQNCkBAIC01Mzcs OCArNTY4LDcgQEAgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lcyhjb25zdCBzdHJ1Y3QgY3R4ICpjLCBj b25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwNCiAJCWRlYnVnKCJ0YXA6IGZhaWxlZCB0byBzZW5kICV6 dSBmcmFtZXMgb2YgJXp1IiwNCiAJCSAgICAgIG5mcmFtZXMgLSBtLCBuZnJhbWVzKTsNCg0KLQlw Y2FwX211bHRpcGxlKGlvdiwgYnVmc19wZXJfZnJhbWUsIG0sDQotCQkgICAgICBjLT5tb2RlID09 IE1PREVfUEFTU1QgPyBzaXplb2YodWludDMyX3QpIDogMCk7DQorCXBjYXBfbXVsdGlwbGUoaW92 LCBidWZzX3Blcl9mcmFtZSwgbSwgdGFwX2wyX29mZnNldChjKSk7DQoNCiAJcmV0dXJuIG07DQog fQ0KZGlmZiAtLWdpdCBhL3RjcF9idWYuYyBiL3RjcF9idWYuYw0KaW5kZXggZGQ4MDM4NC4uNDkz YzVjOSAxMDA2NDQNCi0tLSBhL3RjcF9idWYuYw0KKysrIGIvdGNwX2J1Zi5jDQpAQCAtMjEsNiAr MjEsNyBAQA0KICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+DQoNCiAjaW5jbHVkZSA8bmV0aW5ldC90 Y3AuaD4NCisjaW5jbHVkZSA8bGludXgvdmlydGlvX25ldC5oPg0KDQogI2luY2x1ZGUgInV0aWwu aCINCiAjaW5jbHVkZSAiaXAuaCINCkBAIC00NCw3ICs0NSw3IEBADQogLyogRXRoZXJuZXQgaGVh ZGVyIGZvciBJUHY0IGFuZCBJUHY2IGZyYW1lcyAqLw0KIHN0YXRpYyBzdHJ1Y3QgZXRoaGRyCQl0 Y3BfZXRoX2hkcltUQ1BfRlJBTUVTX01FTV07DQoNCi1zdGF0aWMgc3RydWN0IHRhcF9oZHIJCXRj cF9wYXlsb2FkX3RhcF9oZHJbVENQX0ZSQU1FU19NRU1dOw0KK3N0YXRpYyBzdHJ1Y3QgdmlydGlv X25ldF9oZHJfbXJnX3J4YnVmIHRjcF9wYXlsb2FkX3RhcF9oZHJbVENQX0ZSQU1FU19NRU1dOw0K DQogLyogSVAgaGVhZGVycyBmb3IgSVB2NCBhbmQgSVB2NiAqLw0KIHN0YXRpYyBzdHJ1Y3QgaXBo ZHIJCXRjcDRfcGF5bG9hZF9pcFtUQ1BfRlJBTUVTX01FTV07DQpAQCAtMTEzLDcgKzExNCw3IEBA IHZvaWQgdGNwX3NvY2tfaW92X2luaXQoY29uc3Qgc3RydWN0IGN0eCAqYykNCiAJZm9yIChpID0g MDsgaSA8IFRDUF9GUkFNRVNfTUVNOyBpKyspIHsNCiAJCXN0cnVjdCBpb3ZlYyAqaW92ID0gdGNw X2wyX2lvdltpXTsNCg0KLQkJaW92W1RDUF9JT1ZfVEFQXSA9IHRhcF9oZHJfaW92KGMsICZ0Y3Bf cGF5bG9hZF90YXBfaGRyW2ldKTsNCisJCWlvdltUQ1BfSU9WX1RBUF0gPSB0YXBfaGRyX2lvdihj LCAoc3RydWN0IHRhcF9oZHIgKikmdGNwX3BheWxvYWRfdGFwX2hkcltpXSk7DQogCQlpb3ZbVENQ X0lPVl9FVEhdLmlvdl9sZW4gPSBzaXplb2Yoc3RydWN0IGV0aGhkcik7DQogCQlpb3ZbVENQX0lP Vl9QQVlMT0FEXS5pb3ZfYmFzZSA9ICZ0Y3BfcGF5bG9hZFtpXTsNCiAJCWlvdltUQ1BfSU9WX0VU SF9QQURdLmlvdl9iYXNlID0gZXRoX3BhZDsNCkBAIC0yMTYsNyArMjE3LDEyIEBAIHN0YXRpYyB2 b2lkIHRjcF9sMl9idWZfZmlsbF9oZWFkZXJzKGNvbnN0IHN0cnVjdCBjdHggKmMsDQoNCiAJbDJs ZW4gPSB0Y3BfZmlsbF9oZWFkZXJzKGMsIGNvbm4sIGVoLCBpcDRoLCBpcDZoLCB0aCwgJnRhaWws DQogCQkJCSBpb3ZfdGFpbF9zaXplKCZ0YWlsKSwgY3N1bV9mbGFncywgc2VxKTsNCi0JdGFwX2hk cl91cGRhdGUodGFwaCwgbDJsZW4pOw0KKw0KKwkvKiBXaXRoIHZob3N0LW5ldCB0aGlzIGJ1ZmZl ciBob2xkcyBhIHZpcnRpby1uZXQgaGVhZGVyLCB3aGljaCBhIHRhcA0KKwkgKiBvbmUgbXVzdCBu b3QgYmUgd3JpdHRlbiBvdmVyDQorCSAqLw0KKwlpZiAoYy0+dmhvc3QuZmQgPT0gLTEpDQorCQl0 YXBfaGRyX3VwZGF0ZSh0YXBoLCBsMmxlbik7DQogfQ0KDQogLyoqDQpkaWZmIC0tZ2l0IGEvdWRw LmMgYi91ZHAuYw0KaW5kZXggYTQzNTVhMS4uYWZlMWM3ZiAxMDA2NDQNCi0tLSBhL3VkcC5jDQor KysgYi91ZHAuYw0KQEAgLTEwMyw2ICsxMDMsNyBAQA0KICNpbmNsdWRlIDx0aW1lLmg+DQogI2lu Y2x1ZGUgPGFycGEvaW5ldC5oPg0KICNpbmNsdWRlIDxsaW51eC9lcnJxdWV1ZS5oPg0KKyNpbmNs dWRlIDxsaW51eC92aXJ0aW9fbmV0Lmg+DQoNCiAjaW5jbHVkZSAiY2hlY2tzdW0uaCINCiAjaW5j bHVkZSAidXRpbC5oIg0KQEAgLTE0OSwxMiArMTUwLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgZXRoaGRy IHVkcF9ldGhfaGRyW1VEUF9NQVhfRlJBTUVTXTsNCiAgKiBzdHJ1Y3QgdWRwX21ldGFfdCAtIFBy ZS1jb29rZWQgaGVhZGVycyBmb3IgVURQIHBhY2tldHMNCiAgKiBAaXA2aDoJUHJlLWZpbGxlZCBJ UHY2IGhlYWRlciAoZXhjZXB0IGZvciBwYXlsb2FkX2xlbiBhbmQgYWRkcmVzc2VzKQ0KICAqIEBp cDRoOglQcmUtZmlsbGVkIElQdjQgaGVhZGVyIChleGNlcHQgZm9yIHRvdF9sZW4gYW5kIHNhZGRy KQ0KLSAqIEB0YXBoOglUYXAgYmFja2VuZCBzcGVjaWZpYyBoZWFkZXINCisgKiBAdm5ldF9oZHI6 CXZpcnRpby1uZXQgaGVhZGVyLCB1c2VkIHdoZW4gc2VuZGluZyB0aHJvdWdoIHZob3N0LW5ldA0K KyAqIEB0YXBoOglUYXAgYmFja2VuZCBzcGVjaWZpYyBoZWFkZXIsIHVzZWQgb3RoZXJ3aXNlDQog ICovDQogc3RhdGljIHN0cnVjdCB1ZHBfbWV0YV90IHsNCiAJc3RydWN0IGlwdjZoZHIgaXA2aDsN CiAJc3RydWN0IGlwaGRyIGlwNGg7DQotCXN0cnVjdCB0YXBfaGRyIHRhcGg7DQorCXVuaW9uIHsN CisJCXN0cnVjdCB2aXJ0aW9fbmV0X2hkcl9tcmdfcnhidWYgdm5ldF9oZHI7DQorCQlzdHJ1Y3Qg dGFwX2hkciB0YXBoOw0KKwl9Ow0KIH0NCiAjaWZkZWYgX19BVlgyX18NCiBfX2F0dHJpYnV0ZV9f ICgoYWxpZ25lZCgzMikpKQ0KQEAgLTM1NiwxMyArMzYxLDE1IEBAIHN0YXRpYyB2b2lkIHVkcF90 YXBfcGFkKHN0cnVjdCBpb3ZlYyAqaW92KQ0KDQogLyoqDQogICogdWRwX3RhcF9wcmVwYXJlKCkg LSBDb252ZXJ0IG9uZSBkYXRhZ3JhbSBpbnRvIGEgdGFwIGZyYW1lDQorICogQGM6ICAgICAgRXhl Y3V0aW9uIGNvbnRleHQNCiAgKiBAbW1oOglSZWNlaXZpbmcgbW1zZ2hkciBhcnJheQ0KICAqIEBp ZHg6CUluZGV4IG9mIHRoZSBkYXRhZ3JhbSB0byBwcmVwYXJlDQogICogQHRhcF9vbWFjOglNQUMg YWRkcmVzcyBvZiByZW1vdGUgZW5kcG9pbnQgYXMgc2VlbiBmcm9tIHRoZSBndWVzdA0KICAqIEB0 b3NpZGU6CUZsb3dzaWRlIGZvciBkZXN0aW5hdGlvbiBzaWRlDQogICogQG5vX3VkcF9jc3VtOiBE byBub3Qgc2V0IFVEUCBjaGVja3N1bQ0KICAqLw0KLXN0YXRpYyB2b2lkIHVkcF90YXBfcHJlcGFy ZShjb25zdCBzdHJ1Y3QgbW1zZ2hkciAqbW1oLA0KK3N0YXRpYyB2b2lkIHVkcF90YXBfcHJlcGFy ZShjb25zdCBzdHJ1Y3QgY3R4ICpjLA0KKwkJCQljb25zdCBzdHJ1Y3QgbW1zZ2hkciAqbW1oLA0K IAkJCSAgICB1bnNpZ25lZCBpbnQgaWR4LA0KIAkJCSAgICBjb25zdCB1aW50OF90ICp0YXBfb21h YywNCiAJCQkgICAgY29uc3Qgc3RydWN0IGZsb3dzaWRlICp0b3NpZGUsDQpAQCAtMzg0LDggKzM5 MSwxMCBAQCBzdGF0aWMgdm9pZCB1ZHBfdGFwX3ByZXBhcmUoY29uc3Qgc3RydWN0IG1tc2doZHIg Km1taCwNCiAJCXVkcF91cGRhdGVfaGRyNigmYm0tPmlwNmgsIHVoLCAmcGF5bG9hZCwgdG9zaWRl LA0KIAkJCSAgICAgICAgbW1oW2lkeF0ubXNnX2xlbiwgbm9fdWRwX2NzdW0pOw0KDQotCQlsMmxl biA9IE1BWChsNGxlbiArIHNpemVvZihibS0+aXA2aCkgKyBFVEhfSExFTiwgRVRIX1pMRU4pOw0K LQkJdGFwX2hkcl91cGRhdGUoJmJtLT50YXBoLCBsMmxlbik7DQorCQlpZiAoYy0+bW9kZSA9PSBN T0RFX1BBU1NUKSB7DQorCQkJbDJsZW4gPSBNQVgobDRsZW4gKyBzaXplb2YoYm0tPmlwNmgpICsg RVRIX0hMRU4sIEVUSF9aTEVOKTsNCisJCQl0YXBfaGRyX3VwZGF0ZSgmYm0tPnRhcGgsIGwybGVu KTsNCisJCX0NCg0KIAkJZWgtPmhfcHJvdG8gPSBodG9uc19jb25zdGFudChFVEhfUF9JUFY2KTsN CiAJCSgqdGFwX2lvdilbVURQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKGJtLT5pcDZoKTsNCkBA IC0zOTMsOCArNDAyLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90YXBfcHJlcGFyZShjb25zdCBzdHJ1 Y3QgbW1zZ2hkciAqbW1oLA0KIAkJdWRwX3VwZGF0ZV9oZHI0KCZibS0+aXA0aCwgdWgsICZwYXls b2FkLCB0b3NpZGUsDQogCQkJICAgICAgICBtbWhbaWR4XS5tc2dfbGVuLCBub191ZHBfY3N1bSk7 DQoNCi0JCWwybGVuID0gTUFYKGw0bGVuICsgc2l6ZW9mKGJtLT5pcDRoKSArIEVUSF9ITEVOLCBF VEhfWkxFTik7DQotCQl0YXBfaGRyX3VwZGF0ZSgmYm0tPnRhcGgsIGwybGVuKTsNCisJCWlmIChj LT5tb2RlID09IE1PREVfUEFTU1QpIHsNCisJCQlsMmxlbiA9IE1BWChsNGxlbiArIHNpemVvZihi bS0+aXA0aCkgKyBFVEhfSExFTiwgRVRIX1pMRU4pOw0KKwkJCXRhcF9oZHJfdXBkYXRlKCZibS0+ dGFwaCwgbDJsZW4pOw0KKwkJfQ0KDQogCQllaC0+aF9wcm90byA9IGh0b25zX2NvbnN0YW50KEVU SF9QX0lQKTsNCiAJCSgqdGFwX2lvdilbVURQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKGJtLT5p cDRoKTsNCkBAIC04NjcsNyArODc4LDcgQEAgc3RhdGljIHZvaWQgdWRwX2J1Zl9zb2NrX3RvX3Rh cChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBpbnQgcywgaW50IG4sDQogCQlmd2RfbmVpZ2hfbWFjX2dl dChjLCAmdG9zaWRlLT5vYWRkciwgb21hYyk7DQoNCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykN Ci0JCXVkcF90YXBfcHJlcGFyZSh1ZHBfbWhfcmVjdiwgaSwgb21hYywgdG9zaWRlLCBmYWxzZSk7 DQorCQl1ZHBfdGFwX3ByZXBhcmUoYywgdWRwX21oX3JlY3YsIGksIG9tYWMsIHRvc2lkZSwgZmFs c2UpOw0KDQogCXRhcF9zZW5kX2ZyYW1lcyhjLCAmdWRwX2wyX2lvdlswXVswXSwgVURQX05VTV9J T1ZTLCBuKTsNCiB9DQotLQ0KMi4zOS41IChBcHBsZSBHaXQtMTU0KQ0KDQoNCg==