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 AE5475A026E 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 016B81564EFA; Fri, 16 Oct 2026 23:49:40 +0300 (EEST) From: aerosouund To: aerosound161@gmail.com, passt-dev@passt.top Subject: [PATCH v2 7/7] tap/tcp: Replace tcp_payload_used with a ring buffer style index Date: Fri, 16 Oct 2026 23:49:40 +0300 Message-Id: <20261016204940.33190-8-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: TFU25JVONOESTQQ4B6TC3ZPGL2EUGFN3 X-Message-ID-Hash: TFU25JVONOESTQQ4B6TC3ZPGL2EUGFN3 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: RnJvbTogQW1tYXIgWWFzc2VyIDxhZXJvc291bmQxNjFAZ21haWwuY29tPg0KDQpCZWNhdXNlIHBh c3RhIHJlc2V0cyB0Y3BfcGF5bG9hZF91c2VkIHRvIDAgYWZ0ZXIgZXZlcnkgdGNwIGZsdXNoIHRo aXMNCm1lYW5zIHRoYXQgcGFzdGEgd2lsbCB2ZXJ5IHF1aWNrbHkgb3ZlcnJpZGUgZGF0YSBpbiB0 aGUgdGNwIGJ1ZmZlcnMNCmFmdGVyIHNlbmRpbmcuIFRoaXMgaXMgbm90IGEgcHJvYmxlbSB3aGVu IHVzaW5nIHdyaXRldiBiZWNhdXNlIHRoZSBkYXRhDQp3aWxsIGhhdmUgYmVlbiBjb3BpZWQgZWxz ZXdoZXJlIGJ5IHRoZSBrZXJuZWwsIGJ1dCB0aGlzIGlzIGEgcHJvYmxlbSBmb3INCnZob3N0IHdo ZXJlIHRoZSBrZXJuZWwgdGhyZWFkIG1heSBub3QgaGF2ZSBmaW5pc2hlZCBwcm9jZXNzaW5nIHRo aXMNCmRhdGEuIFRoaXMgaXMgd2h5IGEgc3luY2hyb25vdXMgc2VuZCB3YXMgcmVxdWlyZWQgaW4g dmhvc3QsIHdoaWNoDQpvYnZpb3VzbHkgYWZmZWN0cyBwZXJmb3JtYW5jZS4NCg0KUmVwbGFjZSB0 Y3BfcGF5bG9hZF91c2VkIHdpdGggYSBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4IGhvbGRpbmcgdGhl IGxhc3QNCmluZGV4IHdlIHdyb3RlIHRvIGFuZCBhIGNvdW50ZXIgdGhhdCBnZXRzIHVwZGF0ZWQg d2hlbiB3ZSBmbHVzaCBwYWNrZXRzLA0KZnJvbSB3aGVyZSB3ZSBsYXN0IGZsdXNoZWQgdXAgdG8g dGhhdCBpbmRleC4gQm90aCBhcmUgZ3JvdyBvbmx5IGFuZA0KYWNjZXNzIGdldHMgbW9kZGVkIGJ5 IFRDUF9GUkFNRVNfTUVNLg0KDQpSZXdyaXRlIGZ1bmN0aW9ucyBpbiB0Y3BfYnVmLmMgdG8gdXNl IHRoYXQgaW5kZXggYW5kIGhhbmRsZSB0aGUNCndyYXBhcm91bmQgY2FzZSAoc2VuZGluZyBhIGJh dGNoIHRoYXQgc3RhcnRlZCBuZWFyIHRoZSBlbmQgb2YgdGhlDQpidWZmZXJzIGFuZCBjb250aW51 ZWQgdG8gYmUgYXQgdGhlIHN0YXJ0KSBpbiB0Y3BfcGF5bG9hZF9mbHVzaCgpLg0KDQpXaXRoIHRo ZSBidWZmZXJzIG5vIGxvbmdlciByZXVzZWQgZnJvbSB1bmRlciB0aGUga2VybmVsLCBkcm9wIHRo ZQ0Kc3luY2hyb25vdXMgd2FpdCBmcm9tIHRhcF9zZW5kX2ZyYW1lc192aG9zdCgpIGFuZCByZWNs YWltIGRlc2NyaXB0b3JzDQp1bnRpbCB0aGVyZSBhcmUgZW5vdWdoIGZvciB0aGUgc2VuZCBpbnN0 ZWFkLg0KDQpTaWduZWQtb2ZmLWJ5OiBFdWdlbmlvIFDDqXJleiA8ZXBlcmV6bWFAcmVkaGF0LmNv bT4NClNpZ25lZC1vZmYtYnk6IEFtbWFyIFlhc3NlciA8YWVyb3NvdW5kMTYxQGdtYWlsLmNvbT4N Ci0tLQ0KIHRhcC5jICAgICB8ICAgNiArLS0NCiB0Y3BfYnVmLmMgfCAxMTUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQogMiBmaWxlcyBjaGFu Z2VkLCA4NiBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL3Rh cC5jIGIvdGFwLmMNCmluZGV4IGJjMjcwMGYuLjA0NTY1ODkgMTAwNjQ0DQotLS0gYS90YXAuYw0K KysrIGIvdGFwLmMNCkBAIC00OTAsMTAgKzQ5MCw2IEBAIHN0YXRpYyBzaXplX3QgdGFwX3NlbmRf ZnJhbWVzX3Zob3N0KGNvbnN0IHN0cnVjdCBjdHggKmMsDQogCXZob3N0X2tpY2soJnZyaW5nX3Vz ZWRfYWxsW1ZIT1NUX1VTRURfUV9JRFhdLA0KIAkJICAgYy0+dmhvc3QudnFbVkhPU1RfVVNFRF9R X0lEWF0ua2lja19mZCk7DQoNCi0JLyogd2FpdCB1bnRpbCB0aGUga2VybmVsIGZpbmlzaGVzIHBy b2Nlc3NpbmcgdGhpcyBzZW5kICovDQotCXdoaWxlIChhdmFpbC0+aWR4ICE9IHZyaW5nX3VzZWRf YWxsWzFdLnVzZWQuaWR4KQ0KLQkJOw0KLQ0KIAlyZXR1cm4gcHJvY2Vzc2VkX2ZyYW1lczsNCiB9 DQoNCkBAIC01MjEsNyArNTE3LDcgQEAgc3RhdGljIHNpemVfdCB0YXBfc2VuZF9mcmFtZXNfcGFz dGEoY29uc3Qgc3RydWN0IGN0eCAqYywNCiAJc2l6ZV90IGk7DQoNCiAJaWYgKHZob3N0KQ0KLQkJ cmV0dXJuIHRhcF9zZW5kX2ZyYW1lc192aG9zdChjLCBpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBuZnJh bWVzKTsNCisJIAlyZXR1cm4gdGFwX3NlbmRfZnJhbWVzX3Zob3N0KGMsIGlvdiwgYnVmc19wZXJf ZnJhbWUsIG5mcmFtZXMpOw0KDQogCWZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSArPSBidWZzX3Bl cl9mcmFtZSkgew0KIAkJc3NpemVfdCByYyA9IHdyaXRldihjLT5mZF90YXAsIGlvdiArIGksIGJ1 ZnNfcGVyX2ZyYW1lKTsNCmRpZmYgLS1naXQgYS90Y3BfYnVmLmMgYi90Y3BfYnVmLmMNCmluZGV4 IDQ5M2M1YzkuLjQyNTQxMGYgMTAwNjQ0DQotLS0gYS90Y3BfYnVmLmMNCisrKyBiL3RjcF9idWYu Yw0KQEAgLTU5LDcgKzU5LDIyIEBAIHN0YXRpY19hc3NlcnQoTVNTNiA8PSBzaXplb2YodGNwX3Bh eWxvYWRbMF0uZGF0YSksICJNU1M2IGlzIGdyZWF0ZXIgdGhhbiA2NTUxNiIpDQoNCiAvKiBSZWZl cmVuY2VzIHRyYWNraW5nIHRoZSBvd25lciBjb25uZWN0aW9uIG9mIGZyYW1lcyBpbiB0aGUgdGFw IG91dHF1ZXVlICovDQogc3RhdGljIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKnRjcF9mcmFtZV9jb25u c1tUQ1BfRlJBTUVTX01FTV07DQotc3RhdGljIHVuc2lnbmVkIGludCB0Y3BfcGF5bG9hZF91c2Vk Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCB0Y3BfcGF5bG9hZF9pZHggLSBHcm93LW9ubHkgY3Vyc29y cyBpbnRvIHRoZSBUQ1AgZnJhbWUgYnVmZmVycw0KKyAqIEB0Y3BfYnVmX2lkeDoJVGhlIGxhc3Qg aW5kZXggd2Ugd3JvdGUgZGF0YSB0byBpbiB0aGUgdGNwIGJ1ZmZlcnMNCisgKiBAcHJvY2Vzc2Vk OgkJTGFzdCBpbmRleCB3ZSBwdXNoZWQgdG8gdGhlIHVuZGVybHlpbmcgY29ubmVjdGlvbg0KKyAq Lw0KK3N0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4IHsNCisJdW5zaWduZWQgaW50IHRjcF9i dWZfaWR4Ow0KKwl1bnNpZ25lZCBpbnQgcHJvY2Vzc2VkOw0KK30gdGNwX2lkeDsNCisNCisvKiBs YXRlc3QgaW5kZXggd2Ugd3JvdGUgdG8gaW50byB0aGUgdGNwIGJ1ZmZlcnMgKi8NCisjZGVmaW5l IFRDUF9DVVJSX0lEWAkodGNwX2lkeC50Y3BfYnVmX2lkeCAlIFRDUF9GUkFNRVNfTUVNKQ0KKw0K Ky8qIGN1cnJlbnQgYW1vdW50IG9mIGZyYW1lcyBxdWV1ZWQgaW4gdGNwIGJ1ZmZlcnMgYnV0IG5v dCBzZW50ICovDQorI2RlZmluZSBUQ1BfRlJBTUVfQ09VTlQJKHRjcF9pZHgudGNwX2J1Zl9pZHgg LSB0Y3BfaWR4LnByb2Nlc3NlZCkNCg0KIC8qIHJlY3Ztc2coKS9zZW5kbXNnKCkgZGF0YSBmb3Ig dGFwICovDQogc3RhdGljIHN0cnVjdCBpb3ZlYwlpb3Zfc29jawkJW1RDUF9GUkFNRVNfTUVNICsg RElTQ0FSRF9JT1ZfTlVNXTsNCkBAIC0xNTgsMTUgKzE3Myw0NiBAQCBzdGF0aWMgdm9pZCB0Y3Bf cmV2ZXJ0X3NlcShjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICoqY29u bnMsDQogICovDQogdm9pZCB0Y3BfcGF5bG9hZF9mbHVzaChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBj b25zdCBzdHJ1Y3QgdGltZXNwZWMgKm5vdykNCiB7DQotCXNpemVfdCBtOw0KKwl1bnNpZ25lZCBp bnQgdG90YWwgPSBUQ1BfRlJBTUVfQ09VTlQ7DQorCXVuc2lnbmVkIGludCBzdGFydCA9IHRjcF9p ZHgucHJvY2Vzc2VkICUgVENQX0ZSQU1FU19NRU07DQorCXVuc2lnbmVkIGludCBmaXJzdF9iYXRj aF9zaXplLCBzZW50Ow0KDQotCW0gPSB0YXBfc2VuZF9mcmFtZXMoYywgJnRjcF9sMl9pb3ZbMF1b MF0sIFRDUF9OVU1fSU9WUywNCi0JCQkgICAgdGNwX3BheWxvYWRfdXNlZCk7DQotCWlmIChtICE9 IHRjcF9wYXlsb2FkX3VzZWQpIHsNCi0JCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3BfZnJhbWVfY29u bnNbbV0sICZ0Y3BfbDJfaW92W21dLA0KLQkJCSAgICAgICB0Y3BfcGF5bG9hZF91c2VkIC0gbSwg bm93KTsNCisJaWYgKCF0b3RhbCkNCisJCXJldHVybjsNCisNCisJLyogV2hhdCBpcyBzbWFsbGVy ID8gYWxsIHdlIHdoYXQgd2Ugd2FudCB0byBzZW5kID8gb3IgMTI4IC0gdGhlIGluZGV4DQorCSAq IGluZGljYXRpbmcgdGhlIHN0YXJ0IG9mIHdoZXJlIHdlIHdyb3RlIHRoaXMgYmF0Y2ggPw0KKwkg Ki8NCisJZmlyc3RfYmF0Y2hfc2l6ZSA9IE1JTih0b3RhbCwgVENQX0ZSQU1FU19NRU0gLSBzdGFy dCk7DQorDQorCXNlbnQgPSB0YXBfc2VuZF9mcmFtZXMoYywgJnRjcF9sMl9pb3Zbc3RhcnRdWzBd LCBUQ1BfTlVNX0lPVlMsDQorCQkJICAgICAgIGZpcnN0X2JhdGNoX3NpemUpOw0KKwlpZiAoc2Vu dCA8IGZpcnN0X2JhdGNoX3NpemUpIHsNCisJCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3BfZnJhbWVf Y29ubnNbc3RhcnQgKyBzZW50XSwNCisJCQkgICAgICAgJnRjcF9sMl9pb3Zbc3RhcnQgKyBzZW50 XSwNCisJCQkgICAgICAgZmlyc3RfYmF0Y2hfc2l6ZSAtIHNlbnQsIG5vdyk7DQorCQlnb3RvIG91 dDsNCiAJfQ0KLQl0Y3BfcGF5bG9hZF91c2VkID0gMDsNCisNCisJLyogVGhlcmUgd2FzIG1vcmUg ZGF0YSB0byBzZW5kIHRoYW4gZnJvbSB0Y3BfaWR4LnByb2Nlc3NlZCB1cCB0byAxMjguDQorCSAq IHRoZSByZXN0IG9mIHRoZSBiYXRjaCBpcyBnb2luZyB0byBiZSBhdCBpbmRleCAwIHVwIHRvdGFs IC0NCisJICogZmlyc3RfYmF0Y2hfc2l6ZS4NCisJICovDQorCWlmICh0b3RhbCA+IGZpcnN0X2Jh dGNoX3NpemUpIHsNCisJCXVuc2lnbmVkIGludCBzZWNvbmRfYmF0Y2hfc2l6ZSA9IHRvdGFsIC0g Zmlyc3RfYmF0Y2hfc2l6ZTsNCisJCXNpemVfdCBtMjsNCisNCisJCW0yID0gdGFwX3NlbmRfZnJh bWVzKGMsICZ0Y3BfbDJfaW92WzBdWzBdLCBUQ1BfTlVNX0lPVlMsDQorCQkJCSAgICAgc2Vjb25k X2JhdGNoX3NpemUpOw0KKwkJc2VudCArPSBtMjsNCisNCisJCWlmIChtMiA8IHNlY29uZF9iYXRj aF9zaXplKQ0KKwkJCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3BfZnJhbWVfY29ubnNbbTJdLCAmdGNw X2wyX2lvdlttMl0sDQorCQkJCSAgICAgICBzZWNvbmRfYmF0Y2hfc2l6ZSAtIG0yLCBub3cpOw0K Kwl9DQorDQorb3V0Og0KKwl0Y3BfaWR4LnByb2Nlc3NlZCArPSBzZW50Ow0KIH0NCg0KIC8qKg0K QEAgLTI0NCwxMyArMjkwLDEzIEBAIGludCB0Y3BfYnVmX3NlbmRfZmxhZyhjb25zdCBzdHJ1Y3Qg Y3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLCBpbnQgZmxhZ3MsDQogCXVpbnQzMl90 IHNlcTsNCiAJaW50IHJldDsNCg0KLQlpb3YgPSB0Y3BfbDJfaW92W3RjcF9wYXlsb2FkX3VzZWRd Ow0KKwlpb3YgPSB0Y3BfbDJfaW92W1RDUF9DVVJSX0lEWF07DQogCWlmIChDT05OX1Y0KGNvbm4p KQ0KLQkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A0X3BheWxvYWRfaXBbdGNw X3BheWxvYWRfdXNlZF0pOw0KKwkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A0 X3BheWxvYWRfaXBbVENQX0NVUlJfSURYXSk7DQogCWVsc2UNCi0JCWlvdltUQ1BfSU9WX0lQXSA9 IElPVl9PRl9MVkFMVUUodGNwNl9wYXlsb2FkX2lwW3RjcF9wYXlsb2FkX3VzZWRdKTsNCisJCWlv dltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNl9wYXlsb2FkX2lwW1RDUF9DVVJSX0lE WF0pOw0KDQotCWlvdltUQ1BfSU9WX0VUSF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcF9ldGhfaGRyW3Rj cF9wYXlsb2FkX3VzZWRdKTsNCisJaW92W1RDUF9JT1ZfRVRIXSA9IElPVl9PRl9MVkFMVUUodGNw X2V0aF9oZHJbVENQX0NVUlJfSURYXSk7DQogCXBheWxvYWQgPSBpb3ZbVENQX0lPVl9QQVlMT0FE XS5pb3ZfYmFzZTsNCiAJc2VxID0gY29ubi0+c2VxX3RvX3RhcDsNCiAJcmV0ID0gdGNwX3ByZXBh cmVfZmxhZ3MoYywgY29ubiwgZmxhZ3MsICZwYXlsb2FkLT50aCwNCkBAIC0yNTksNyArMzA1LDgg QEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3Bf dGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncywNCiAJaWYgKHJldCA8PSAwKQ0KIAkJcmV0dXJuIHJl dDsNCg0KLQl0Y3BfZnJhbWVfY29ubnNbdGNwX3BheWxvYWRfdXNlZCsrXSA9IGNvbm47DQorCXRj cF9pZHgudGNwX2J1Zl9pZHgrKzsNCisJdGNwX2ZyYW1lX2Nvbm5zW1RDUF9DVVJSX0lEWF0gPSBj b25uOw0KIAlsNGxlbiA9IG9wdGxlbiArIHNpemVvZihzdHJ1Y3QgdGNwaGRyKTsNCiAJaW92W1RD UF9JT1ZfUEFZTE9BRF0uaW92X2xlbiA9IGw0bGVuOw0KDQpAQCAtMjcxLDggKzMxOCw5IEBAIGlu dCB0Y3BfYnVmX3NlbmRfZmxhZyhjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9j b25uICpjb25uLCBpbnQgZmxhZ3MsDQogCXRjcF9sMl9idWZfcGFkKGlvdik7DQoNCiAJaWYgKGZs YWdzICYgRFVQX0FDSykgew0KLQkJc3RydWN0IGlvdmVjICpkdXBfaW92ID0gdGNwX2wyX2lvdlt0 Y3BfcGF5bG9hZF91c2VkXTsNCi0JCXRjcF9mcmFtZV9jb25uc1t0Y3BfcGF5bG9hZF91c2VkKytd ID0gY29ubjsNCisJCXN0cnVjdCBpb3ZlYyAqZHVwX2lvdiA9IHRjcF9sMl9pb3ZbVENQX0NVUlJf SURYXTsNCisJCXRjcF9mcmFtZV9jb25uc1tUQ1BfQ1VSUl9JRFhdID0gY29ubjsNCisJCXRjcF9p ZHgudGNwX2J1Zl9pZHgrKzsNCg0KIAkJbWVtY3B5KGR1cF9pb3ZbVENQX0lPVl9UQVBdLmlvdl9i YXNlLCBpb3ZbVENQX0lPVl9UQVBdLmlvdl9iYXNlLA0KIAkJICAgICAgIGlvdltUQ1BfSU9WX1RB UF0uaW92X2xlbik7DQpAQCAtMjg0LDcgKzMzMiw3IEBAIGludCB0Y3BfYnVmX3NlbmRfZmxhZyhj b25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLCBpbnQgZmxhZ3Ms DQogCQlkdXBfaW92W1RDUF9JT1ZfRVRIX1BBRF0uaW92X2xlbiA9IGlvdltUQ1BfSU9WX0VUSF9Q QURdLmlvdl9sZW47DQogCX0NCg0KLQlpZiAodGNwX3BheWxvYWRfdXNlZCA+IFRDUF9GUkFNRVNf TUVNIC0gMikNCisJaWYgKFRDUF9GUkFNRV9DT1VOVCA+IFRDUF9GUkFNRVNfTUVNIC0gMikNCiAJ CXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7DQoNCiAJcmV0dXJuIDA7DQpAQCAtMzA5LDIxICsz NTcsMjkgQEAgc3RhdGljIHZvaWQgdGNwX2RhdGFfdG9fdGFwKGNvbnN0IHN0cnVjdCBjdHggKmMs IHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQogCXN0cnVjdCBpb3ZlYyAqaW92Ow0KDQogCWNv bm4tPnNlcV90b190YXAgPSBzZXEgKyBkbGVuOw0KLQl0Y3BfZnJhbWVfY29ubnNbdGNwX3BheWxv YWRfdXNlZF0gPSBjb25uOw0KLQlpb3YgPSB0Y3BfbDJfaW92W3RjcF9wYXlsb2FkX3VzZWRdOw0K Kwl0Y3BfZnJhbWVfY29ubnNbVENQX0NVUlJfSURYXSA9IGNvbm47DQorCWlvdiA9IHRjcF9sMl9p b3ZbVENQX0NVUlJfSURYXTsNCiAJaWYgKENPTk5fVjQoY29ubikpIHsNCiAJCWlmIChub19jc3Vt KSB7DQotCQkJc3RydWN0IGlvdmVjICppb3ZfcHJldiA9IHRjcF9sMl9pb3ZbdGNwX3BheWxvYWRf dXNlZCAtIDFdOw0KKwkJCS8qIFRDUF9DVVJSX0lEWCBtYXkgYmUgemVybyBpZiB0aGUgdW5kZXJs eWluZw0KKwkJCSAqIHRjcF9pZHgudGNwX2J1Zl9pZHggaXMgYSBtdWx0aXBsZSBvZiAxMjgsIG1p bnVzIG9uZQ0KKwkJCSAqIHdpbGwgeWllbGQgYW4gaW52YWxpZCBpbmRleC4gVGhlIHByZXZpb3Vz IGluZGV4IHRvIDANCisJCQkgKiBpcyAxMjcuDQorCQkJICovDQorCQkJdW5zaWduZWQgaW50IHBy ZXZfaWR4ID0gKFRDUF9DVVJSX0lEWCArDQorCQkJCQkJIFRDUF9GUkFNRVNfTUVNIC0gMSkgJQ0K KwkJCQkJCVRDUF9GUkFNRVNfTUVNOw0KKwkJCXN0cnVjdCBpb3ZlYyAqaW92X3ByZXYgPSB0Y3Bf bDJfaW92W3ByZXZfaWR4XTsNCiAJCQljb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCA9IGlvdl9wcmV2 W1RDUF9JT1ZfSVBdLmlvdl9iYXNlOw0KDQogCQkJLyogb3ZlcndyaXRlIElQNF9DU1VNIGZsYWcg YXMgd2Ugc2V0IHRoZSBjaGVja3N1bSAqLw0KIAkJCWNoZWNrID0gaXBoLT5jaGVjazsNCiAJCX0N Ci0JCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNF9wYXlsb2FkX2lwW3RjcF9w YXlsb2FkX3VzZWRdKTsNCisJCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNF9w YXlsb2FkX2lwW1RDUF9DVVJSX0lEWF0pOw0KIAl9IGVsc2UgaWYgKENPTk5fVjYoY29ubikpIHsN Ci0JCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNl9wYXlsb2FkX2lwW3RjcF9w YXlsb2FkX3VzZWRdKTsNCisJCWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNl9w YXlsb2FkX2lwW1RDUF9DVVJSX0lEWF0pOw0KIAl9DQotCWlvdltUQ1BfSU9WX0VUSF0uaW92X2Jh c2UgPSAmdGNwX2V0aF9oZHJbdGNwX3BheWxvYWRfdXNlZF07DQorCWlvdltUQ1BfSU9WX0VUSF0u aW92X2Jhc2UgPSAmdGNwX2V0aF9oZHJbVENQX0NVUlJfSURYXTsNCiAJcGF5bG9hZCA9IGlvdltU Q1BfSU9WX1BBWUxPQURdLmlvdl9iYXNlOw0KIAlwYXlsb2FkLT50aC50aF9vZmYgPSBzaXplb2Yo c3RydWN0IHRjcGhkcikgLyA0Ow0KIAlwYXlsb2FkLT50aC50aF94MiA9IDA7DQpAQCAtMzM1LDcg KzM5MSw4IEBAIHN0YXRpYyB2b2lkIHRjcF9kYXRhX3RvX3RhcChjb25zdCBzdHJ1Y3QgY3R4ICpj LCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLA0KDQogCXRjcF9sMl9idWZfcGFkKGlvdik7DQoN Ci0JaWYgKCsrdGNwX3BheWxvYWRfdXNlZCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkNCisJdGNwX2lk eC50Y3BfYnVmX2lkeCsrOw0KKwlpZiAoVENQX0ZSQU1FX0NPVU5UID4gVENQX0ZSQU1FU19NRU0g LSAxKQ0KIAkJdGNwX3BheWxvYWRfZmx1c2goYywgbm93KTsNCiB9DQoNCkBAIC0zNzUsMTUgKzQz MiwxMyBAQCBpbnQgdGNwX2J1Zl9kYXRhX2Zyb21fc29jayhjb25zdCBzdHJ1Y3QgY3R4ICpjLCBz dHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLA0KIAkJcmV0dXJuIC0xOw0KIAl9DQoNCi0JaWYgKHRj cF9wYXlsb2FkX3VzZWQgKyBmaWxsX2J1ZnMgPiBUQ1BfRlJBTUVTX01FTSkgew0KKwlpZiAoVENQ X0ZSQU1FX0NPVU5UICsgKHVuc2lnbmVkIGludClmaWxsX2J1ZnMgPiBUQ1BfRlJBTUVTX01FTSkN CiAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7DQoNCi0JCS8qIFNpbGVuY2UgQ292ZXJpdHkg Q1dFLTEyNSBmYWxzZSBwb3NpdGl2ZSAqLw0KLQkJdGNwX3BheWxvYWRfdXNlZCA9IDA7DQotCX0N Ci0NCiAJZm9yIChpID0gMCwgaW92ID0gaW92X3NvY2sgKyBESVNDQVJEX0lPVl9OVU07IGkgPCBm aWxsX2J1ZnM7IGkrKywgaW92KyspIHsNCi0JCWlvdi0+aW92X2Jhc2UgPSAmdGNwX3BheWxvYWRb dGNwX3BheWxvYWRfdXNlZCArIGldLmRhdGE7DQorCQl1bnNpZ25lZCBpbnQgaWR4ID0gKFRDUF9D VVJSX0lEWCArIGkpICUgVENQX0ZSQU1FU19NRU07DQorDQorCQlpb3YtPmlvdl9iYXNlID0gJnRj cF9wYXlsb2FkW2lkeF0uZGF0YTsNCiAJCWlvdi0+aW92X2xlbiA9IG1zczsNCiAJfQ0KIAlpZiAo aW92X3JlbSkNCkBAIC00NTcsNyArNTEyLDcgQEAgaW50IHRjcF9idWZfZGF0YV9mcm9tX3NvY2so Y29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwNCiAJZGxlbiA9 IG1zczsNCiAJc2VxID0gY29ubi0+c2VxX3RvX3RhcDsNCiAJZm9yIChpID0gMDsgaSA8IHNlbmRf YnVmczsgaSsrKSB7DQotCQlpbnQgbm9fY3N1bSA9IGkgJiYgaSAhPSBzZW5kX2J1ZnMgLSAxICYm IHRjcF9wYXlsb2FkX3VzZWQ7DQorCQlpbnQgbm9fY3N1bSA9IGkgJiYgaSAhPSBzZW5kX2J1ZnMg LSAxOw0KIAkJYm9vbCBwdXNoID0gZmFsc2U7DQoNCiAJCWlmIChpID09IHNlbmRfYnVmcyAtIDEp IHsNCi0tDQoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpDQo=