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.196.169.86] (unknown [105.199.60.27]) by passt.top (Postfix) with ESMTP id B02705A026D for ; Sat, 05 Sep 2026 18:25:45 +0200 (CEST) X-FEAS-Client-IP: 10.196.169.86 Received: by Ammars-Air.localdomain (Postfix, from userid 501) id 62FD2FD0F6E; Sat, 5 Sep 2026 00:29:04 +0300 (EEST) From: aerosouund To: passt-dev@passt.top Subject: [PATCH 7/7] tap/tcp: Replace tcp_payload_used with a ring buffer style index Date: Sat, 5 Sep 2026 00:28:26 +0300 Message-Id: <20260904212826.41027-8-aerosound161@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260904212826.41027-1-aerosound161@gmail.com> References: <20260904212826.41027-1-aerosound161@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: 773AO23CVC4RX7IVN7OXGFMIBHSTOR7X X-Message-ID-Hash: 773AO23CVC4RX7IVN7OXGFMIBHSTOR7X 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 CC: eperezma@redhat.com, Ammar Yasser 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 Ci0tLQ0KIHRhcC5jICAgICB8ICAgOSArKy0tLQ0KIHRjcF9idWYuYyB8IDExNSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0NCiAyIGZpbGVzIGNo YW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEv dGFwLmMgYi90YXAuYw0KaW5kZXggMGY1MWU2Mi4uNjcwNjA1YSAxMDA2NDQNCi0tLSBhL3RhcC5j DQorKysgYi90YXAuYw0KQEAgLTQxOCw3ICs0MTgsOCBAQCBzdGF0aWMgc2l6ZV90IHRhcF9zZW5k X2ZyYW1lc192aG9zdChjb25zdCBzdHJ1Y3QgY3R4ICpjLA0KIAkvKiByZWNsYWltIGRlc2NyaXB0 b3JzIGlmIHdlIGRvbid0IGhhdmUgZW5vdWdoIGF2YWlsYWJsZSBidWZmZXJzIHRvDQogCSAqIHBl cmZvcm0gdGhpcyBzZW5kDQogCSAqLw0KLQlpZiAodmhvc3RfdnFfc3RhdGVbMV0ubnVtX2ZyZWUg PCBidWZzX3Blcl9mcmFtZSAqIG5mcmFtZXMpDQorCXdoaWxlICh2aG9zdF92cV9zdGF0ZVsxXS5u dW1fZnJlZSA8IGJ1ZnNfcGVyX2ZyYW1lICogbmZyYW1lcyAmJg0KKwkgICAgICAgdmhvc3RfdnFf c3RhdGVbMV0ubGFzdF91c2VkX2lkeCAhPSBsZTE2dG9oKGF2YWlsLT5pZHgpKQ0KIAkJdHhfcmVh cCgpOw0KIA0KIAlmb3IgKGkgPSAwOyBpIDwgbmZyYW1lczsgaSsrKSB7DQpAQCAtNDg1LDEwICs0 ODYsNiBAQCBzdGF0aWMgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lc192aG9zdChjb25zdCBzdHJ1Y3Qg Y3R4ICpjLA0KIA0KIAl2aG9zdF9raWNrKCZ2cmluZ191c2VkX2FsbFsxXS51c2VkLCBjLT52aG9z dC52cVsxXS5raWNrX2ZkKTsNCiANCi0JLyogd2FpdCB1bnRpbCB0aGUga2VybmVsIGZpbmlzaGVz IHByb2Nlc3NpbmcgdGhpcyBzZW5kICovDQotCXdoaWxlIChhdmFpbC0+aWR4ICE9IHZyaW5nX3Vz ZWRfYWxsWzFdLnVzZWQuaWR4KQ0KLQkJOw0KLQ0KIAlyZXR1cm4gcHJvY2Vzc2VkX2ZyYW1lczsN CiB9DQogDQpAQCAtNTE2LDcgKzUxMyw3IEBAIHN0YXRpYyBzaXplX3QgdGFwX3NlbmRfZnJhbWVz X3Bhc3RhKGNvbnN0IHN0cnVjdCBjdHggKmMsDQogCXNpemVfdCBpOw0KIA0KIAlpZiAodmhvc3Qp DQotCQlyZXR1cm4gdGFwX3NlbmRfZnJhbWVzX3Zob3N0KGMsIGlvdiwgYnVmc19wZXJfZnJhbWUs IG5mcmFtZXMpOw0KKwkgCXJldHVybiB0YXBfc2VuZF9mcmFtZXNfdmhvc3QoYywgaW92LCBidWZz X3Blcl9mcmFtZSwgbmZyYW1lcyk7DQogDQogCWZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSArPSBi dWZzX3Blcl9mcmFtZSkgew0KIAkJc3NpemVfdCByYyA9IHdyaXRldihjLT5mZF90YXAsIGlvdiAr IGksIGJ1ZnNfcGVyX2ZyYW1lKTsNCmRpZmYgLS1naXQgYS90Y3BfYnVmLmMgYi90Y3BfYnVmLmMN CmluZGV4IDljYzU0MWEuLjFiNTdlYmQgMTAwNjQ0DQotLS0gYS90Y3BfYnVmLmMNCisrKyBiL3Rj cF9idWYuYw0KQEAgLTU3LDcgKzU3LDIyIEBAIHN0YXRpY19hc3NlcnQoTVNTNiA8PSBzaXplb2Yo dGNwX3BheWxvYWRbMF0uZGF0YSksICJNU1M2IGlzIGdyZWF0ZXIgdGhhbiA2NTUxNiIpDQogDQog LyogUmVmZXJlbmNlcyB0cmFja2luZyB0aGUgb3duZXIgY29ubmVjdGlvbiBvZiBmcmFtZXMgaW4g dGhlIHRhcCBvdXRxdWV1ZSAqLw0KIHN0YXRpYyBzdHJ1Y3QgdGNwX3RhcF9jb25uICp0Y3BfZnJh bWVfY29ubnNbVENQX0ZSQU1FU19NRU1dOw0KLXN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwX3BheWxv YWRfdXNlZDsNCisNCisvKioNCisgKiBzdHJ1Y3QgdGNwX3BheWxvYWRfaWR4IC0gR3Jvdy1vbmx5 IGN1cnNvcnMgaW50byB0aGUgVENQIGZyYW1lIGJ1ZmZlcnMNCisgKiBAdGNwX2J1Zl9pZHg6CVRo ZSBsYXN0IGluZGV4IHdlIHdyb3RlIGRhdGEgdG8gaW4gdGhlIHRjcCBidWZmZXJzDQorICogQHBy b2Nlc3NlZDoJCUxhc3QgaW5kZXggd2UgcHVzaGVkIHRvIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rp b24NCisgKi8NCitzdGF0aWMgc3RydWN0IHRjcF9wYXlsb2FkX2lkeCB7DQorCXVuc2lnbmVkIGlu dCB0Y3BfYnVmX2lkeDsNCisJdW5zaWduZWQgaW50IHByb2Nlc3NlZDsNCit9IHRjcF9pZHg7DQor DQorLyogbGF0ZXN0IGluZGV4IHdlIHdyb3RlIHRvIGludG8gdGhlIHRjcCBidWZmZXJzICovDQor I2RlZmluZSBUQ1BfQ1VSUl9JRFgJKHRjcF9pZHgudGNwX2J1Zl9pZHggJSBUQ1BfRlJBTUVTX01F TSkNCisNCisvKiBjdXJyZW50IGFtb3VudCBvZiBmcmFtZXMgcXVldWVkIGluIHRjcCBidWZmZXJz IGJ1dCBub3Qgc2VudCAqLw0KKyNkZWZpbmUgVENQX0ZSQU1FX0NPVU5UCSh0Y3BfaWR4LnRjcF9i dWZfaWR4IC0gdGNwX2lkeC5wcm9jZXNzZWQpDQogDQogLyogcmVjdm1zZygpL3NlbmRtc2coKSBk YXRhIGZvciB0YXAgKi8NCiBzdGF0aWMgc3RydWN0IGlvdmVjCWlvdl9zb2NrCQlbVENQX0ZSQU1F U19NRU0gKyBESVNDQVJEX0lPVl9OVU1dOw0KQEAgLTE1MiwxNSArMTY3LDQ2IEBAIHN0YXRpYyB2 b2lkIHRjcF9yZXZlcnRfc2VxKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nv bm4gKipjb25ucywNCiAgKi8NCiB2b2lkIHRjcF9wYXlsb2FkX2ZsdXNoKGNvbnN0IHN0cnVjdCBj dHggKmMsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqbm93KQ0KIHsNCi0Jc2l6ZV90IG07DQorCXVu c2lnbmVkIGludCB0b3RhbCA9IFRDUF9GUkFNRV9DT1VOVDsNCisJdW5zaWduZWQgaW50IHN0YXJ0 ID0gdGNwX2lkeC5wcm9jZXNzZWQgJSBUQ1BfRlJBTUVTX01FTTsNCisJdW5zaWduZWQgaW50IGZp cnN0X2JhdGNoX3NpemUsIHNlbnQ7DQogDQotCW0gPSB0YXBfc2VuZF9mcmFtZXMoYywgJnRjcF9s Ml9pb3ZbMF1bMF0sIFRDUF9OVU1fSU9WUywNCi0JCQkgICAgdGNwX3BheWxvYWRfdXNlZCk7DQot CWlmIChtICE9IHRjcF9wYXlsb2FkX3VzZWQpIHsNCi0JCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3Bf ZnJhbWVfY29ubnNbbV0sICZ0Y3BfbDJfaW92W21dLA0KLQkJCSAgICAgICB0Y3BfcGF5bG9hZF91 c2VkIC0gbSwgbm93KTsNCisJaWYgKCF0b3RhbCkNCisJCXJldHVybjsNCisNCisJLyogV2hhdCBp cyBzbWFsbGVyID8gYWxsIHdlIHdoYXQgd2Ugd2FudCB0byBzZW5kID8gb3IgMTI4IC0gdGhlIGlu ZGV4DQorCSAqIGluZGljYXRpbmcgdGhlIHN0YXJ0IG9mIHdoZXJlIHdlIHdyb3RlIHRoaXMgYmF0 Y2ggPw0KKwkgKi8NCisJZmlyc3RfYmF0Y2hfc2l6ZSA9IE1JTih0b3RhbCwgVENQX0ZSQU1FU19N RU0gLSBzdGFydCk7DQorDQorCXNlbnQgPSB0YXBfc2VuZF9mcmFtZXMoYywgJnRjcF9sMl9pb3Zb c3RhcnRdWzBdLCBUQ1BfTlVNX0lPVlMsDQorCQkJICAgICAgIGZpcnN0X2JhdGNoX3NpemUpOw0K KwlpZiAoc2VudCA8IGZpcnN0X2JhdGNoX3NpemUpIHsNCisJCXRjcF9yZXZlcnRfc2VxKGMsICZ0 Y3BfZnJhbWVfY29ubnNbc3RhcnQgKyBzZW50XSwNCisJCQkgICAgICAgJnRjcF9sMl9pb3Zbc3Rh cnQgKyBzZW50XSwNCisJCQkgICAgICAgZmlyc3RfYmF0Y2hfc2l6ZSAtIHNlbnQsIG5vdyk7DQor CQlnb3RvIG91dDsNCiAJfQ0KLQl0Y3BfcGF5bG9hZF91c2VkID0gMDsNCisNCisJLyogVGhlcmUg d2FzIG1vcmUgZGF0YSB0byBzZW5kIHRoYW4gZnJvbSB0Y3BfaWR4LnByb2Nlc3NlZCB1cCB0byAx MjguDQorCSAqIHRoZSByZXN0IG9mIHRoZSBiYXRjaCBpcyBnb2luZyB0byBiZSBhdCBpbmRleCAw IHVwIHRvdGFsIC0NCisJICogZmlyc3RfYmF0Y2hfc2l6ZS4NCisJICovDQorCWlmICh0b3RhbCA+ IGZpcnN0X2JhdGNoX3NpemUpIHsNCisJCXVuc2lnbmVkIGludCBzZWNvbmRfYmF0Y2hfc2l6ZSA9 IHRvdGFsIC0gZmlyc3RfYmF0Y2hfc2l6ZTsNCisJCXNpemVfdCBtMjsNCisNCisJCW0yID0gdGFw X3NlbmRfZnJhbWVzKGMsICZ0Y3BfbDJfaW92WzBdWzBdLCBUQ1BfTlVNX0lPVlMsDQorCQkJCSAg ICAgc2Vjb25kX2JhdGNoX3NpemUpOw0KKwkJc2VudCArPSBtMjsNCisNCisJCWlmIChtMiA8IHNl Y29uZF9iYXRjaF9zaXplKQ0KKwkJCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3BfZnJhbWVfY29ubnNb bTJdLCAmdGNwX2wyX2lvdlttMl0sDQorCQkJCSAgICAgICBzZWNvbmRfYmF0Y2hfc2l6ZSAtIG0y LCBub3cpOw0KKwl9DQorDQorb3V0Og0KKwl0Y3BfaWR4LnByb2Nlc3NlZCArPSBzZW50Ow0KIH0N CiANCiAvKioNCkBAIC0yMzgsMTMgKzI4NCwxMyBAQCBpbnQgdGNwX2J1Zl9zZW5kX2ZsYWcoY29u c3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwgaW50IGZsYWdzLA0K IAl1aW50MzJfdCBzZXE7DQogCWludCByZXQ7DQogDQotCWlvdiA9IHRjcF9sMl9pb3ZbdGNwX3Bh eWxvYWRfdXNlZF07DQorCWlvdiA9IHRjcF9sMl9pb3ZbVENQX0NVUlJfSURYXTsNCiAJaWYgKENP Tk5fVjQoY29ubikpDQotCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcDRfcGF5 bG9hZF9pcFt0Y3BfcGF5bG9hZF91c2VkXSk7DQorCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0Zf TFZBTFVFKHRjcDRfcGF5bG9hZF9pcFtUQ1BfQ1VSUl9JRFhdKTsNCiAJZWxzZQ0KLQkJaW92W1RD UF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A2X3BheWxvYWRfaXBbdGNwX3BheWxvYWRfdXNl ZF0pOw0KKwkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A2X3BheWxvYWRfaXBb VENQX0NVUlJfSURYXSk7DQogDQotCWlvdltUQ1BfSU9WX0VUSF0gPSBJT1ZfT0ZfTFZBTFVFKHRj cF9ldGhfaGRyW3RjcF9wYXlsb2FkX3VzZWRdKTsNCisJaW92W1RDUF9JT1ZfRVRIXSA9IElPVl9P Rl9MVkFMVUUodGNwX2V0aF9oZHJbVENQX0NVUlJfSURYXSk7DQogCXBheWxvYWQgPSBpb3ZbVENQ X0lPVl9QQVlMT0FEXS5pb3ZfYmFzZTsNCiAJc2VxID0gY29ubi0+c2VxX3RvX3RhcDsNCiAJcmV0 ID0gdGNwX3ByZXBhcmVfZmxhZ3MoYywgY29ubiwgZmxhZ3MsICZwYXlsb2FkLT50aCwNCkBAIC0y NTMsNyArMjk5LDggQEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBjdHggKmMs IHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncywNCiAJaWYgKHJldCA8PSAwKQ0K IAkJcmV0dXJuIHJldDsNCiANCi0JdGNwX2ZyYW1lX2Nvbm5zW3RjcF9wYXlsb2FkX3VzZWQrK10g PSBjb25uOw0KKwl0Y3BfaWR4LnRjcF9idWZfaWR4Kys7DQorCXRjcF9mcmFtZV9jb25uc1tUQ1Bf Q1VSUl9JRFhdID0gY29ubjsNCiAJbDRsZW4gPSBvcHRsZW4gKyBzaXplb2Yoc3RydWN0IHRjcGhk cik7DQogCWlvdltUQ1BfSU9WX1BBWUxPQURdLmlvdl9sZW4gPSBsNGxlbjsNCiANCkBAIC0yNjUs OCArMzEyLDkgQEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0 cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncywNCiAJdGNwX2wyX2J1Zl9wYWQoaW92 KTsNCiANCiAJaWYgKGZsYWdzICYgRFVQX0FDSykgew0KLQkJc3RydWN0IGlvdmVjICpkdXBfaW92 ID0gdGNwX2wyX2lvdlt0Y3BfcGF5bG9hZF91c2VkXTsNCi0JCXRjcF9mcmFtZV9jb25uc1t0Y3Bf cGF5bG9hZF91c2VkKytdID0gY29ubjsNCisJCXN0cnVjdCBpb3ZlYyAqZHVwX2lvdiA9IHRjcF9s Ml9pb3ZbVENQX0NVUlJfSURYXTsNCisJCXRjcF9mcmFtZV9jb25uc1tUQ1BfQ1VSUl9JRFhdID0g Y29ubjsNCisJCXRjcF9pZHgudGNwX2J1Zl9pZHgrKzsNCiANCiAJCW1lbWNweShkdXBfaW92W1RD UF9JT1ZfVEFQXS5pb3ZfYmFzZSwgaW92W1RDUF9JT1ZfVEFQXS5pb3ZfYmFzZSwNCiAJCSAgICAg ICBpb3ZbVENQX0lPVl9UQVBdLmlvdl9sZW4pOw0KQEAgLTI3OCw3ICszMjYsNyBAQCBpbnQgdGNw X2J1Zl9zZW5kX2ZsYWcoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAq Y29ubiwgaW50IGZsYWdzLA0KIAkJZHVwX2lvdltUQ1BfSU9WX0VUSF9QQURdLmlvdl9sZW4gPSBp b3ZbVENQX0lPVl9FVEhfUEFEXS5pb3ZfbGVuOw0KIAl9DQogDQotCWlmICh0Y3BfcGF5bG9hZF91 c2VkID4gVENQX0ZSQU1FU19NRU0gLSAyKQ0KKwlpZiAoVENQX0ZSQU1FX0NPVU5UID4gVENQX0ZS QU1FU19NRU0gLSAyKQ0KIAkJdGNwX3BheWxvYWRfZmx1c2goYywgbm93KTsNCiANCiAJcmV0dXJu IDA7DQpAQCAtMzAzLDIxICszNTEsMjkgQEAgc3RhdGljIHZvaWQgdGNwX2RhdGFfdG9fdGFwKGNv bnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQogCXN0cnVjdCBp b3ZlYyAqaW92Ow0KIA0KIAljb25uLT5zZXFfdG9fdGFwID0gc2VxICsgZGxlbjsNCi0JdGNwX2Zy YW1lX2Nvbm5zW3RjcF9wYXlsb2FkX3VzZWRdID0gY29ubjsNCi0JaW92ID0gdGNwX2wyX2lvdlt0 Y3BfcGF5bG9hZF91c2VkXTsNCisJdGNwX2ZyYW1lX2Nvbm5zW1RDUF9DVVJSX0lEWF0gPSBjb25u Ow0KKwlpb3YgPSB0Y3BfbDJfaW92W1RDUF9DVVJSX0lEWF07DQogCWlmIChDT05OX1Y0KGNvbm4p KSB7DQogCQlpZiAobm9fY3N1bSkgew0KLQkJCXN0cnVjdCBpb3ZlYyAqaW92X3ByZXYgPSB0Y3Bf bDJfaW92W3RjcF9wYXlsb2FkX3VzZWQgLSAxXTsNCisJCQkvKiBUQ1BfQ1VSUl9JRFggbWF5IGJl IHplcm8gaWYgdGhlIHVuZGVybHlpbmcNCisJCQkgKiB0Y3BfaWR4LnRjcF9idWZfaWR4IGlzIGEg bXVsdGlwbGUgb2YgMTI4LCBtaW51cyBvbmUNCisJCQkgKiB3aWxsIHlpZWxkIGFuIGludmFsaWQg aW5kZXguIFRoZSBwcmV2aW91cyBpbmRleCB0byAwDQorCQkJICogaXMgMTI3Lg0KKwkJCSAqLw0K KwkJCXVuc2lnbmVkIGludCBwcmV2X2lkeCA9IChUQ1BfQ1VSUl9JRFggKw0KKwkJCQkJCSBUQ1Bf RlJBTUVTX01FTSAtIDEpICUNCisJCQkJCQlUQ1BfRlJBTUVTX01FTTsNCisJCQlzdHJ1Y3QgaW92 ZWMgKmlvdl9wcmV2ID0gdGNwX2wyX2lvdltwcmV2X2lkeF07DQogCQkJY29uc3Qgc3RydWN0IGlw aGRyICppcGggPSBpb3ZfcHJldltUQ1BfSU9WX0lQXS5pb3ZfYmFzZTsNCiANCiAJCQkvKiBvdmVy d3JpdGUgSVA0X0NTVU0gZmxhZyBhcyB3ZSBzZXQgdGhlIGNoZWNrc3VtICovDQogCQkJY2hlY2sg PSBpcGgtPmNoZWNrOw0KIAkJfQ0KLQkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0 Y3A0X3BheWxvYWRfaXBbdGNwX3BheWxvYWRfdXNlZF0pOw0KKwkJaW92W1RDUF9JT1ZfSVBdID0g SU9WX09GX0xWQUxVRSh0Y3A0X3BheWxvYWRfaXBbVENQX0NVUlJfSURYXSk7DQogCX0gZWxzZSBp ZiAoQ09OTl9WNihjb25uKSkgew0KLQkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0 Y3A2X3BheWxvYWRfaXBbdGNwX3BheWxvYWRfdXNlZF0pOw0KKwkJaW92W1RDUF9JT1ZfSVBdID0g SU9WX09GX0xWQUxVRSh0Y3A2X3BheWxvYWRfaXBbVENQX0NVUlJfSURYXSk7DQogCX0NCi0JaW92 W1RDUF9JT1ZfRVRIXS5pb3ZfYmFzZSA9ICZ0Y3BfZXRoX2hkclt0Y3BfcGF5bG9hZF91c2VkXTsN CisJaW92W1RDUF9JT1ZfRVRIXS5pb3ZfYmFzZSA9ICZ0Y3BfZXRoX2hkcltUQ1BfQ1VSUl9JRFhd Ow0KIAlwYXlsb2FkID0gaW92W1RDUF9JT1ZfUEFZTE9BRF0uaW92X2Jhc2U7DQogCXBheWxvYWQt PnRoLnRoX29mZiA9IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSAvIDQ7DQogCXBheWxvYWQtPnRoLnRo X3gyID0gMDsNCkBAIC0zMjksNyArMzg1LDggQEAgc3RhdGljIHZvaWQgdGNwX2RhdGFfdG9fdGFw KGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQogDQogCXRj cF9sMl9idWZfcGFkKGlvdik7DQogDQotCWlmICgrK3RjcF9wYXlsb2FkX3VzZWQgPiBUQ1BfRlJB TUVTX01FTSAtIDEpDQorCXRjcF9pZHgudGNwX2J1Zl9pZHgrKzsNCisJaWYgKFRDUF9GUkFNRV9D T1VOVCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkNCiAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7 DQogfQ0KIA0KQEAgLTM2OSwxNSArNDI2LDEzIEBAIGludCB0Y3BfYnVmX2RhdGFfZnJvbV9zb2Nr KGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQogCQlyZXR1 cm4gLTE7DQogCX0NCiANCi0JaWYgKHRjcF9wYXlsb2FkX3VzZWQgKyBmaWxsX2J1ZnMgPiBUQ1Bf RlJBTUVTX01FTSkgew0KKwlpZiAoVENQX0ZSQU1FX0NPVU5UICsgKHVuc2lnbmVkIGludClmaWxs X2J1ZnMgPiBUQ1BfRlJBTUVTX01FTSkNCiAJCXRjcF9wYXlsb2FkX2ZsdXNoKGMsIG5vdyk7DQog DQotCQkvKiBTaWxlbmNlIENvdmVyaXR5IENXRS0xMjUgZmFsc2UgcG9zaXRpdmUgKi8NCi0JCXRj cF9wYXlsb2FkX3VzZWQgPSAwOw0KLQl9DQotDQogCWZvciAoaSA9IDAsIGlvdiA9IGlvdl9zb2Nr ICsgRElTQ0FSRF9JT1ZfTlVNOyBpIDwgZmlsbF9idWZzOyBpKyssIGlvdisrKSB7DQotCQlpb3Yt Pmlvdl9iYXNlID0gJnRjcF9wYXlsb2FkW3RjcF9wYXlsb2FkX3VzZWQgKyBpXS5kYXRhOw0KKwkJ dW5zaWduZWQgaW50IGlkeCA9IChUQ1BfQ1VSUl9JRFggKyBpKSAlIFRDUF9GUkFNRVNfTUVNOw0K Kw0KKwkJaW92LT5pb3ZfYmFzZSA9ICZ0Y3BfcGF5bG9hZFtpZHhdLmRhdGE7DQogCQlpb3YtPmlv dl9sZW4gPSBtc3M7DQogCX0NCiAJaWYgKGlvdl9yZW0pDQpAQCAtNDUxLDcgKzUwNiw3IEBAIGlu dCB0Y3BfYnVmX2RhdGFfZnJvbV9zb2NrKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3Bf dGFwX2Nvbm4gKmNvbm4sDQogCWRsZW4gPSBtc3M7DQogCXNlcSA9IGNvbm4tPnNlcV90b190YXA7 DQogCWZvciAoaSA9IDA7IGkgPCBzZW5kX2J1ZnM7IGkrKykgew0KLQkJaW50IG5vX2NzdW0gPSBp ICYmIGkgIT0gc2VuZF9idWZzIC0gMSAmJiB0Y3BfcGF5bG9hZF91c2VkOw0KKwkJaW50IG5vX2Nz dW0gPSBpICYmIGkgIT0gc2VuZF9idWZzIC0gMSAmJiBUQ1BfQ1VSUl9JRFg7DQogCQlib29sIHB1 c2ggPSBmYWxzZTsNCiANCiAJCWlmIChpID09IHNlbmRfYnVmcyAtIDEpIHsNCi0tIA0KMi4zOS41 IChBcHBsZSBHaXQtMTU0KQ0KDQo=