From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=FClyktU1; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTPS id 4F41B5A0283 for ; Wed, 09 Jul 2025 19:48:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752083289; 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=xmacYjtidgR7CkP0muJwpeiCuR+Xzb4zuwS9QGfePMk=; b=FClyktU185gmxvLACpbxLYWRg9ENIA5wXXH1pyKFnlut0T4L+4JgO4ihHmYcaqHfdMKgtV ZU6bTrqiZ3NdAIQLosP0JNCibqQgVC89/R9B+G8E79UoebQH3//8Q8h6Ozntbh2ffuWe3U IZQpWhaPxCzl1J0XFt/iEnBz80CtQgs= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-232-3w0T_gqENmSTyIb0nRFUkw-1; Wed, 09 Jul 2025 13:48:08 -0400 X-MC-Unique: 3w0T_gqENmSTyIb0nRFUkw-1 X-Mimecast-MFC-AGG-ID: 3w0T_gqENmSTyIb0nRFUkw_1752083287 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 492621800290 for ; Wed, 9 Jul 2025 17:48:07 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.45.225.131]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1D5A630001BE; Wed, 9 Jul 2025 17:48:05 +0000 (UTC) From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= To: passt-dev@passt.top Subject: [RFC v2 09/11] tcp: start conversion to circular buffer Date: Wed, 9 Jul 2025 19:47:46 +0200 Message-ID: <20250709174748.3514693-10-eperezma@redhat.com> In-Reply-To: <20250709174748.3514693-1-eperezma@redhat.com> References: <20250709174748.3514693-1-eperezma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: -h_W8YN5d1QOZW_Rzoj1Ry__ZHA5prYC6pwE_EUmcyY_1752083287 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: UUPG63GG2IRSZMODLTLF6LEWRVGY2AAI X-Message-ID-Hash: UUPG63GG2IRSZMODLTLF6LEWRVGY2AAI X-MailFrom: eperezma@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: jasowang@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: VGhlIHZob3N0LWtlcm5lbCBtb2R1bGUgaXMgYXN5bmMgYnkgbmF0dXJlOiB0aGUgZHJpdmVyIChw YXN0YSkgcGxhY2VzIGENCmZldyBidWZmZXJzIGluIHRoZSB2aXJ0cXVldWUgYW5kIHRoZSBkZXZp Y2UgKHZob3N0LWtlcm5lbCkgdHJ1c3QgdGhlDQpkcml2ZXIgd2lsbCBub3QgbW9kaWZ5IHRoZW0g dW50aWwgaXQgdXNlcyB0aGVtLiAgVG8gaW1wbGVtZW50IGl0IGlzIG5vdA0KcG9zc2libGUgd2l0 aCBUQ1AgYXQgdGhlIG1vbWVudCwgYXMgdGNwX2J1ZiB0cnVzdCBpdCBjYW4gcmV1c2UgdGhlDQpi dWZmZXJzIGFzIHNvb24gYXMgdGNwX3BheWxvYWRfZmx1c2goKSBmaW5pc2guDQoNClRvIGFjaGll dmUgYXN5bmMgbGV0J3MgbWFrZSB0Y3BfYnVmIHdvcmsgd2l0aCBhIGNpcmN1bGFyIHJpbmcsIHNv IHZob3N0DQpjYW4gdHJhbnNtaXQgYXQgdGhlIHNhbWUgdGltZSBwYXN0YSBpcyBxdWVpbmcgbW9y ZSBkYXRhLiAgV2hlbiBhIGJ1ZmZlcg0KaXMgcmVjZWl2ZWQgZnJvbSBhIFRDUCBzb2NrZXQsIHRo ZSBlbGVtZW50IGlzIHBsYWNlZCBpbiB0aGUgcmluZyBhbmQNCnNvY2tfaGVhZCBpcyBtb3ZlZDoN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW11bXVtdW10NCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXiBeDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHNvY2tfaGVhZA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhaWwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFwX2hlYWQNCg0KV2hlbiB0aGUgZGF0YSBpcyBzZW50IHRvIHZo b3N0IHRocm91Z2ggdGhlIHR4IHF1ZXVlLCB0YXBfaGVhZCBpcyBtb3ZlZA0KZm9yd2FyZDoNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgW11bXVtdW10NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXiBeDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHNvY2tfaGVhZA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHRhcF9oZWFkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCgkJCSAgICAg dGFpbA0KDQpGaW5hbGx5LCB0aGUgdGFpbCBtb3ZlIGZvcndhcmQgd2hlbiB2aG9zdCBoYXMgdXNl ZCB0aGUgdHggYnVmZmVycywgc28NCnRjcF9wYXlsb2FkIChhbmQgYWxsIGxvd2VyIHByb3RvY29s IGJ1ZmZlcnMpIGNhbiBiZSByZXVzZWQuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtd W11bXVtdDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrX2hl YWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXBfaGVhZA0KCQkJICAgICAgIHRh aWwNCg0KSW4gdGhlIGNhc2Ugb2YgZXJyb3IgcXVldWVpbmcgdG8gdGhlIHZob3N0IHZpcnRxdWV1 ZSwgc29ja19oZWFkIG1vdmVzDQpiYWNrd2FyZHMuICBUaGUgb25seSBwb3NzaWJsZSBlcnJvciBp cyB0aGF0IHRoZSBxdWV1ZSBpcyBmdWxsLCBhcw0KdmlydGlvLW5ldCBkb2VzIG5vdCByZXBvcnQg c3VjY2VzcyBvbiBwYWNrZXQgc2VuZGluZy4NCg0KU3RhcnRpbmcgYXMgc2ltcGxlIGFzIHBvc3Np YmxlLCBhbmQgb25seSBpbXBsZW1lbnRpbmcgdGhlIGNvdW50DQp2YXJpYWJsZXMgaW4gdGhpcyBw YXRjaCBzbyBpdCBrZWVwcyB3b3JraW5nIGFzIHByZXZpb3VzbHkuICBUaGUgY2lyY3VsYXINCmJl aGF2aW9yIHdpbGwgYmUgYWRkZWQgb24gdG9wLg0KDQpGcm9tIH4xNkJHYml0L3MgdG8gfjEzR2Jp dC9zIGNvbXBhcmVkIHdpdGggd3JpdGUoMikgdG8gdGhlIHRhcC4NCg0KU2lnbmVkLW9mZi1ieTog RXVnZW5pbyBQw6lyZXogPGVwZXJlem1hQHJlZGhhdC5jb20+DQotLS0NCiB0Y3BfYnVmLmMgfCA2 MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t DQogMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQ0KDQpk aWZmIC0tZ2l0IGEvdGNwX2J1Zi5jIGIvdGNwX2J1Zi5jDQppbmRleCAyNDIwODZkLi4wNDM3MTIw IDEwMDY0NA0KLS0tIGEvdGNwX2J1Zi5jDQorKysgYi90Y3BfYnVmLmMNCkBAIC01Myw3ICs1Mywx MiBAQCBzdGF0aWNfYXNzZXJ0KE1TUzYgPD0gc2l6ZW9mKHRjcF9wYXlsb2FkWzBdLmRhdGEpLCAi TVNTNiBpcyBncmVhdGVyIHRoYW4gNjU1MTYiKQ0KIA0KIC8qIFJlZmVyZW5jZXMgdHJhY2tpbmcg dGhlIG93bmVyIGNvbm5lY3Rpb24gb2YgZnJhbWVzIGluIHRoZSB0YXAgb3V0cXVldWUgKi8NCiBz dGF0aWMgc3RydWN0IHRjcF90YXBfY29ubiAqdGNwX2ZyYW1lX2Nvbm5zW1RDUF9GUkFNRVNfTUVN XTsNCi1zdGF0aWMgdW5zaWduZWQgaW50IHRjcF9wYXlsb2FkX3VzZWQ7DQorc3RhdGljIHVuc2ln bmVkIGludCB0Y3BfcGF5bG9hZF9zb2NrX3VzZWQsIHRjcF9wYXlsb2FkX3RhcF91c2VkOw0KKw0K K3N0YXRpYyB2b2lkIHRjcF9wYXlsb2FkX3NvY2tfcHJvZHVjZShzaXplX3QgbikNCit7DQorCXRj cF9wYXlsb2FkX3NvY2tfdXNlZCArPSBuOw0KK30NCiANCiBzdGF0aWMgc3RydWN0IGlvdmVjCXRj cF9sMl9pb3ZbVENQX0ZSQU1FU19NRU1dW1RDUF9OVU1fSU9WU107DQogDQpAQCAtMTMyLDYgKzEz NywxNiBAQCBzdGF0aWMgdm9pZCB0Y3BfcmV2ZXJ0X3NlcShjb25zdCBzdHJ1Y3QgY3R4ICpjLCBz dHJ1Y3QgdGNwX3RhcF9jb25uICoqY29ubnMsDQogCX0NCiB9DQogDQorc3RhdGljIHZvaWQgdGNw X2J1Zl9mcmVlX29sZF90YXBfeG1pdCh2b2lkKQ0KK3sNCisJd2hpbGUgKHRjcF9wYXlsb2FkX3Rh cF91c2VkKSB7DQorCQl0YXBfZnJlZV9vbGRfeG1pdCh0Y3BfcGF5bG9hZF90YXBfdXNlZCk7DQor DQorCQl0Y3BfcGF5bG9hZF90YXBfdXNlZCA9IDA7DQorCQl0Y3BfcGF5bG9hZF9zb2NrX3VzZWQg PSAwOw0KKwl9DQorfQ0KKw0KIC8qKg0KICAqIHRjcF9wYXlsb2FkX2ZsdXNoKCkgLSBTZW5kIG91 dCBidWZmZXJzIGZvciBzZWdtZW50cyB3aXRoIGRhdGEgb3IgZmxhZ3MNCiAgKiBAYzoJCUV4ZWN1 dGlvbiBjb250ZXh0DQpAQCAtMTQxLDEyICsxNTYsMTMgQEAgdm9pZCB0Y3BfcGF5bG9hZF9mbHVz aChjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KIAlzaXplX3QgbTsNCiANCiAJbSA9IHRhcF9zZW5kX2Zy YW1lcyhjLCAmdGNwX2wyX2lvdlswXVswXSwgVENQX05VTV9JT1ZTLA0KLQkJCSAgICB0Y3BfcGF5 bG9hZF91c2VkLCBmYWxzZSk7DQotCWlmIChtICE9IHRjcF9wYXlsb2FkX3VzZWQpIHsNCisJCQkg ICAgdGNwX3BheWxvYWRfc29ja191c2VkLCB0cnVlKTsNCisJaWYgKG0gIT0gdGNwX3BheWxvYWRf c29ja191c2VkKSB7DQogCQl0Y3BfcmV2ZXJ0X3NlcShjLCAmdGNwX2ZyYW1lX2Nvbm5zW21dLCAm dGNwX2wyX2lvdlttXSwNCi0JCQkgICAgICAgdGNwX3BheWxvYWRfdXNlZCAtIG0pOw0KKwkJCSAg ICAgICB0Y3BfcGF5bG9hZF9zb2NrX3VzZWQgLSBtKTsNCiAJfQ0KLQl0Y3BfcGF5bG9hZF91c2Vk ID0gMDsNCisJdGNwX3BheWxvYWRfdGFwX3VzZWQgKz0gbTsNCisJdGNwX2J1Zl9mcmVlX29sZF90 YXBfeG1pdCgpOw0KIH0NCiANCiAvKioNCkBAIC0xOTUsMTIgKzIxMSwxMiBAQCBpbnQgdGNwX2J1 Zl9zZW5kX2ZsYWcoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29u biwgaW50IGZsYWdzKQ0KIAl1aW50MzJfdCBzZXE7DQogCWludCByZXQ7DQogDQotCWlvdiA9IHRj cF9sMl9pb3ZbdGNwX3BheWxvYWRfdXNlZF07DQorCWlvdiA9IHRjcF9sMl9pb3ZbdGNwX3BheWxv YWRfc29ja191c2VkXTsNCiAJaWYgKENPTk5fVjQoY29ubikpIHsNCi0JCWlvdltUQ1BfSU9WX0lQ XSA9IElPVl9PRl9MVkFMVUUodGNwNF9wYXlsb2FkX2lwW3RjcF9wYXlsb2FkX3VzZWRdKTsNCisJ CWlvdltUQ1BfSU9WX0lQXSA9IElPVl9PRl9MVkFMVUUodGNwNF9wYXlsb2FkX2lwW3RjcF9wYXls b2FkX3NvY2tfdXNlZF0pOw0KIAkJaW92W1RDUF9JT1ZfRVRIXS5pb3ZfYmFzZSA9ICZ0Y3A0X2V0 aF9zcmM7DQogCX0gZWxzZSB7DQotCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRj cDZfcGF5bG9hZF9pcFt0Y3BfcGF5bG9hZF91c2VkXSk7DQorCQlpb3ZbVENQX0lPVl9JUF0gPSBJ T1ZfT0ZfTFZBTFVFKHRjcDZfcGF5bG9hZF9pcFt0Y3BfcGF5bG9hZF9zb2NrX3VzZWRdKTsNCiAJ CWlvdltUQ1BfSU9WX0VUSF0uaW92X2Jhc2UgPSAmdGNwNl9ldGhfc3JjOw0KIAl9DQogDQpAQCAt MjExLDEzICsyMjcsMTQgQEAgaW50IHRjcF9idWZfc2VuZF9mbGFnKGNvbnN0IHN0cnVjdCBjdHgg KmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sIGludCBmbGFncykNCiAJaWYgKHJldCA8PSAw KQ0KIAkJcmV0dXJuIHJldDsNCiANCi0JdGNwX3BheWxvYWRfdXNlZCsrOw0KKwl0Y3BfcGF5bG9h ZF9zb2NrX3Byb2R1Y2UoMSk7DQogCWw0bGVuID0gb3B0bGVuICsgc2l6ZW9mKHN0cnVjdCB0Y3Bo ZHIpOw0KIAlpb3ZbVENQX0lPVl9QQVlMT0FEXS5pb3ZfbGVuID0gbDRsZW47DQogCXRjcF9sMl9i dWZfZmlsbF9oZWFkZXJzKGNvbm4sIGlvdiwgTlVMTCwgc2VxLCBmYWxzZSk7DQogDQogCWlmIChm bGFncyAmIERVUF9BQ0spIHsNCi0JCXN0cnVjdCBpb3ZlYyAqZHVwX2lvdiA9IHRjcF9sMl9pb3Zb dGNwX3BheWxvYWRfdXNlZCsrXTsNCisJCXN0cnVjdCBpb3ZlYyAqZHVwX2lvdiA9IHRjcF9sMl9p b3ZbdGNwX3BheWxvYWRfc29ja191c2VkXTsNCisJCXRjcF9wYXlsb2FkX3NvY2tfcHJvZHVjZSgx KTsNCiANCiAJCW1lbWNweShkdXBfaW92W1RDUF9JT1ZfVEFQXS5pb3ZfYmFzZSwgaW92W1RDUF9J T1ZfVEFQXS5pb3ZfYmFzZSwNCiAJCSAgICAgICBpb3ZbVENQX0lPVl9UQVBdLmlvdl9sZW4pOw0K QEAgLTIyOCw4ICsyNDUsOSBAQCBpbnQgdGNwX2J1Zl9zZW5kX2ZsYWcoY29uc3Qgc3RydWN0IGN0 eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwgaW50IGZsYWdzKQ0KIAkJZHVwX2lvdltU Q1BfSU9WX1BBWUxPQURdLmlvdl9sZW4gPSBsNGxlbjsNCiAJfQ0KIA0KLQlpZiAodGNwX3BheWxv YWRfdXNlZCA+IFRDUF9GUkFNRVNfTUVNIC0gMikNCisJaWYgKHRjcF9wYXlsb2FkX3NvY2tfdXNl ZCA+IFRDUF9GUkFNRVNfTUVNIC0gMikgew0KIAkJdGNwX3BheWxvYWRfZmx1c2goYyk7DQorCX0N CiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTI1MSwxOSArMjY5LDE5IEBAIHN0YXRpYyB2b2lkIHRj cF9kYXRhX3RvX3RhcChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpj b25uLA0KIAlzdHJ1Y3QgaW92ZWMgKmlvdjsNCiANCiAJY29ubi0+c2VxX3RvX3RhcCA9IHNlcSAr IGRsZW47DQotCXRjcF9mcmFtZV9jb25uc1t0Y3BfcGF5bG9hZF91c2VkXSA9IGNvbm47DQotCWlv diA9IHRjcF9sMl9pb3ZbdGNwX3BheWxvYWRfdXNlZF07DQorCXRjcF9mcmFtZV9jb25uc1t0Y3Bf cGF5bG9hZF9zb2NrX3VzZWRdID0gY29ubjsNCisJaW92ID0gdGNwX2wyX2lvdlt0Y3BfcGF5bG9h ZF9zb2NrX3VzZWRdOw0KIAlpZiAoQ09OTl9WNChjb25uKSkgew0KIAkJaWYgKG5vX2NzdW0pIHsN Ci0JCQlzdHJ1Y3QgaW92ZWMgKmlvdl9wcmV2ID0gdGNwX2wyX2lvdlt0Y3BfcGF5bG9hZF91c2Vk IC0gMV07DQorCQkJc3RydWN0IGlvdmVjICppb3ZfcHJldiA9IHRjcF9sMl9pb3ZbdGNwX3BheWxv YWRfc29ja191c2VkIC0gMV07DQogCQkJc3RydWN0IGlwaGRyICppcGggPSBpb3ZfcHJldltUQ1Bf SU9WX0lQXS5pb3ZfYmFzZTsNCiANCiAJCQljaGVjayA9ICZpcGgtPmNoZWNrOw0KIAkJfQ0KLQkJ aW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A0X3BheWxvYWRfaXBbdGNwX3BheWxv YWRfdXNlZF0pOw0KKwkJaW92W1RDUF9JT1ZfSVBdID0gSU9WX09GX0xWQUxVRSh0Y3A0X3BheWxv YWRfaXBbdGNwX3BheWxvYWRfc29ja191c2VkXSk7DQogCQlpb3ZbVENQX0lPVl9FVEhdLmlvdl9i YXNlID0gJnRjcDRfZXRoX3NyYzsNCiAJfSBlbHNlIGlmIChDT05OX1Y2KGNvbm4pKSB7DQotCQlp b3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcDZfcGF5bG9hZF9pcFt0Y3BfcGF5bG9h ZF91c2VkXSk7DQorCQlpb3ZbVENQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVFKHRjcDZfcGF5bG9h ZF9pcFt0Y3BfcGF5bG9hZF9zb2NrX3VzZWRdKTsNCiAJCWlvdltUQ1BfSU9WX0VUSF0uaW92X2Jh c2UgPSAmdGNwNl9ldGhfc3JjOw0KIAl9DQogCXBheWxvYWQgPSBpb3ZbVENQX0lPVl9QQVlMT0FE XS5pb3ZfYmFzZTsNCkBAIC0yNzQsOCArMjkyLDEwIEBAIHN0YXRpYyB2b2lkIHRjcF9kYXRhX3Rv X3RhcChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLA0KIAlw YXlsb2FkLT50aC5wc2ggPSBwdXNoOw0KIAlpb3ZbVENQX0lPVl9QQVlMT0FEXS5pb3ZfbGVuID0g ZGxlbiArIHNpemVvZihzdHJ1Y3QgdGNwaGRyKTsNCiAJdGNwX2wyX2J1Zl9maWxsX2hlYWRlcnMo Y29ubiwgaW92LCBjaGVjaywgc2VxLCBmYWxzZSk7DQotCWlmICgrK3RjcF9wYXlsb2FkX3VzZWQg PiBUQ1BfRlJBTUVTX01FTSAtIDEpDQorCXRjcF9wYXlsb2FkX3NvY2tfcHJvZHVjZSgxKTsNCisJ aWYgKHRjcF9wYXlsb2FkX3NvY2tfdXNlZCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkgew0KIAkJdGNw X3BheWxvYWRfZmx1c2goYyk7DQorCX0NCiB9DQogDQogLyoqDQpAQCAtMzQxLDE1ICszNjEsMTIg QEAgaW50IHRjcF9idWZfZGF0YV9mcm9tX3NvY2soY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0 IHRjcF90YXBfY29ubiAqY29ubikNCiAJCW1oX3NvY2subXNnX2lvdmxlbiA9IGZpbGxfYnVmczsN CiAJfQ0KIA0KLQlpZiAodGNwX3BheWxvYWRfdXNlZCArIGZpbGxfYnVmcyA+IFRDUF9GUkFNRVNf TUVNKSB7DQorCWlmICh0Y3BfcGF5bG9hZF9zb2NrX3VzZWQgKyBmaWxsX2J1ZnMgPiBUQ1BfRlJB TUVTX01FTSkgew0KIAkJdGNwX3BheWxvYWRfZmx1c2goYyk7DQotDQotCQkvKiBTaWxlbmNlIENv dmVyaXR5IENXRS0xMjUgZmFsc2UgcG9zaXRpdmUgKi8NCi0JCXRjcF9wYXlsb2FkX3VzZWQgPSAw Ow0KIAl9DQogDQogCWZvciAoaSA9IDAsIGlvdiA9IGlvdl9zb2NrICsgMTsgaSA8IGZpbGxfYnVm czsgaSsrLCBpb3YrKykgew0KLQkJaW92LT5pb3ZfYmFzZSA9ICZ0Y3BfcGF5bG9hZFt0Y3BfcGF5 bG9hZF91c2VkICsgaV0uZGF0YTsNCisJCWlvdi0+aW92X2Jhc2UgPSAmdGNwX3BheWxvYWRbdGNw X3BheWxvYWRfc29ja191c2VkICsgaV0uZGF0YTsNCiAJCWlvdi0+aW92X2xlbiA9IG1zczsNCiAJ fQ0KIAlpZiAoaW92X3JlbSkNCkBAIC00MDcsNyArNDI0LDcgQEAgaW50IHRjcF9idWZfZGF0YV9m cm9tX3NvY2soY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubikN CiAJZGxlbiA9IG1zczsNCiAJc2VxID0gY29ubi0+c2VxX3RvX3RhcDsNCiAJZm9yIChpID0gMDsg aSA8IHNlbmRfYnVmczsgaSsrKSB7DQotCQlpbnQgbm9fY3N1bSA9IGkgJiYgaSAhPSBzZW5kX2J1 ZnMgLSAxICYmIHRjcF9wYXlsb2FkX3VzZWQ7DQorCQlpbnQgbm9fY3N1bSA9IGkgJiYgaSAhPSBz ZW5kX2J1ZnMgLSAxICYmIHRjcF9wYXlsb2FkX3NvY2tfdXNlZDsNCiAJCWJvb2wgcHVzaCA9IGZh bHNlOw0KIA0KIAkJaWYgKGkgPT0gc2VuZF9idWZzIC0gMSkgew0KLS0gDQoyLjUwLjANCg0K