From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTP id 6EE0A5A02CF for ; Thu, 16 May 2024 05:04:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1715828639; 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=kpEeQfSrrPpTpk6z99wZguDaezUPV3uhv+ktflSc3I4=; b=egyt+q20EacwYKE2v5DnVOOzxQKpTKS7UvHe3S9Uv0vLSsSSYJqmY1X6Sq13QBXFBKMn4A RwZgOjsq/UrL6AgvM0DnbfPjdz4r3N1HSFOMN2lKxKhRZYkqIwtIDiYMzii2gObMnLqWsA UNB0nS8yDnmMDnw0dC2oPVYEOVG+Bqw= Received: from mail-yb1-f199.google.com (mail-yb1-f199.google.com [209.85.219.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-602-D_YlvJZ4PS-uQ6kjfxybCA-1; Wed, 15 May 2024 23:03:57 -0400 X-MC-Unique: D_YlvJZ4PS-uQ6kjfxybCA-1 Received: by mail-yb1-f199.google.com with SMTP id 3f1490d57ef6-ddaf165a8d9so10725941276.1 for ; Wed, 15 May 2024 20:03:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715828637; x=1716433437; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kpEeQfSrrPpTpk6z99wZguDaezUPV3uhv+ktflSc3I4=; b=FPrxIcEBv1LRoyHuvoEF7BGRdjs0qqjqfVpbujslCAZiwoklrLUW2fPC54/QhJzdab YXcHcUWLyi0zhJyZ1LZ3ZBWptbPs03DjYkBiGN6gTt+0EunOJAYgVOD9BmOMi38+B7LF JFrp8b02sNGlH//mHxs+pPidwMxzsGsUEAD2AHsScoCB6P3wa9szH4IZuQARn8K9ujJ9 Aya/VPUAJhjj4ID2/R6Mr0XN40gZhrjCkBCJ+tlLTLvgsCIy4yqizZGBhmhWN3XJOb2h U6VRsF5akNTqbwEiYTmLHfW5HMojdR8IePz5tXXu8oCMgxWK27KfzElHnx5xppaslr6M SyHw== X-Gm-Message-State: AOJu0Yx8n3XvMZmhe8IzHLM2/2eHqTak405Ed3S2vFXO/uyhIUmhtPr6 Iw1uhN/C6r7NEuKDQWfojiJ22np3UdE6Nm5SHdQAgQNmIKFq40lBzIeK6mIqmk6CEJm5u6MEh0G xYRigbtaEb2eBKQyByRjeVBqFmbSPVNAXjg5bJyp3Gg3MRWHzvg== X-Received: by 2002:a05:6902:527:b0:df4:2beb:344e with SMTP id 3f1490d57ef6-df42beb3567mr2301174276.2.1715828637127; Wed, 15 May 2024 20:03:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGn+OVQeqNJtpWDi6PRG+hUchpCvdF06B0s7LqkhPMineFSDZAhcFGGHTfATD6jVPBm07AQZA== X-Received: by 2002:a05:6902:527:b0:df4:2beb:344e with SMTP id 3f1490d57ef6-df42beb3567mr2301140276.2.1715828636472; Wed, 15 May 2024 20:03:56 -0700 (PDT) Received: from [10.0.0.97] ([24.225.234.80]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6a15f1cd266sm70750386d6.80.2024.05.15.20.03.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 May 2024 20:03:56 -0700 (PDT) Message-ID: <18faf981-5f52-0a82-8066-12b8b35fab6c@redhat.com> Date: Wed, 15 May 2024 23:03:55 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v4 2/3] tcp: leverage support of SO_PEEK_OFF socket option when available To: David Gibson References: <20240515153429.859185-1-jmaloy@redhat.com> <20240515153429.859185-3-jmaloy@redhat.com> From: Jon Maloy In-Reply-To: X-Mimecast-Spam-Score: 0 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: RRILVKECNFYNF56L2UTNF6UMRLIEOHMV X-Message-ID-Hash: RRILVKECNFYNF56L2UTNF6UMRLIEOHMV X-MailFrom: jmaloy@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: passt-dev@passt.top, sbrivio@redhat.com, lvivier@redhat.com, dgibson@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: DQoNCk9uIDIwMjQtMDUtMTUgMjI6MjksIERhdmlkIEdpYnNvbiB3cm90ZToNCj4gT24gV2VkLCBN YXkgMTUsIDIwMjQgYXQgMTE6MzQ6MjhBTSAtMDQwMCwgSm9uIE1hbG95IHdyb3RlOg0KPj4gPkZy b20gbGludXgtNi45LjAgdGhlIGtlcm5lbCB3aWxsIGNvbnRhaW4NCj4+IGNvbW1pdCAwNWVhNDkx NjQxZDMgKCJ0Y3A6IGFkZCBzdXBwb3J0IGZvciBTT19QRUVLX09GRiBzb2NrZXQgb3B0aW9uIiku DQo+Pg0KPj4gVGhpcyBuZXcgZmVhdHVyZSBtYWtlcyBpcyBwb3NzaWJsZSB0byBjYWxsIHJlY3Zf bXNnKE1TR19QRUVLKSBhbmQgbWFrZQ0KPj4gaXQgc3RhcnQgcmVhZGluZyBkYXRhIGZyb20gYSBn aXZlbiBvZmZzZXQgc2V0IGJ5IHRoZSBTT19QRUVLX09GRiBzb2NrZXQNCj4+IG9wdGlvbi4gVGhp cyB3YXksIHdlIGNhbiBhdm9pZCByZXBlYXRlZCByZWFkaW5nIG9mIGFscmVhZHkgcmVhZCBieXRl cyBvZg0KPj4gYSByZWNlaXZlZCBtZXNzYWdlLCBoZW5jZSBzYXZpbmcgcmVhZCBjeWNsZXMgd2hl biBmb3J3YXJkaW5nIFRDUA0KPj4gbWVzc2FnZXMgaW4gdGhlIGhvc3QtPm5hbWUgc3BhY2UgZGly ZWN0aW9uLg0KPj4NCj4+IEluIHRoaXMgY29tbWl0LCB3ZSBhZGQgZnVuY3Rpb25hbGl0eSB0byBs ZXZlcmFnZSB0aGlzIGZlYXR1cmUgd2hlbg0KPj4gYXZhaWxhYmxlLCB3aGlsZSB3ZSBmYWxsIGJh Y2sgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW9yIHdoZW4gbm90Lg0KPj4NCj4+IE1lYXN1cmVtZW50 cyB3aXRoIGlwZXJmMyBzaG93cyB0aGF0IHRocm91Z2hwdXQgaW5jcmVhc2VzIHdpdGggMTUtMjAN Cj4+IHBlcmNlbnQgaW4gdGhlIGhvc3QtPm5hbWVzcGFjZSBkaXJlY3Rpb24gd2hlbiB0aGlzIGZl YXR1cmUgaXMgdXNlZC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBKb24gTWFsb3kgPGptYWxveUBy ZWRoYXQuY29tPg0KPiBJJ20gcHJldHR5IHN1cmUgdGhpcyBuZWVkcyBvbmUgbW9yZSBjYWxsIHRv IHRjcF9zZXRfcGVla19vZmZzZXQoKQ0KPiBpbnNpZGUgdGhlIHJldmVydCBmdW5jdGlvbiBpbnRy b2R1Y2VkIGluIHRoZSBwcmV2aW91cyBwYXRjaC4NCj4gT3RoZXJ3aXNlIGxvb2tzIGdvb2QuDQpP ZiBjb3Vyc2UuIEkgbXVzdCBoYXZlIGRlbGV0ZWQgaXQgYnkgYWNjaWRlbnQgd2hlbiBJIHJlbW92 ZWQgdGhlICdwYXJhbm9pZMK0DQp0ZXN0wqAgU0VRX0dFKGNvbm4tPnNlcV90b190YXAsIGVxdWFs IGNvbm4tPnNlcV9hY2tfZnJvbV90YXApLg0KSXQgd29ya2VkIGluIG15IHRlc3Qgc2ltcGx5IGJl Y2F1c2UgdGhpcyBuZXZlciBoYXBwZW5zLiBJIGFjdHVhbGx5IGhhZCANCnRvIHRlc3QgdGhlDQps b2dpY3MgaW4gYSBzZXBhcmF0ZSBwcm9ncmFtLg0KVGhhbmsgeW91IGZvciBzcG90dGluZyB0aGlz Lg0KDQovLy9qb24NCj4+IC0tLQ0KPj4gdjI6IC0gU29tZSBzbWFsbGVyIGNoYW5nZXMgYXMgc3Vn Z2VzdGVkIGJ5IERhdmlkIEdpYnNvbiBhbmQgU3RlZmFubyBCcml2aW8uDQo+PiAgICAgIC0gTW92 ZWQgaW5pdGlhbCBzZXRfcGVla19vZmZzZXQoMCkgdG8gb25seSB0aGUgbG9jYXRpb25zIHdoZXJl IHRoZSBzb2NrZXQgaXMgc2V0DQo+PiAgICAgICAgdG8gRVNUQUJMSVNIRUQuDQo+PiAgICAgIC0g UmVtb3ZlZCB0aGUgcGVyLXBhY2tldCBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBza19wZWVrX29m ZiBhbmQNCj4+ICAgICAgICBhbHJlYWR5X3NlbnQuIEluc3RlYWQgb25seSBkb2luZyBpdCBpbiBy ZXRyYW5zbWl0IHNpdHVhdGlvbnMuDQo+PiAgICAgIC0gVGhlIHByb2JsZW0gSSBmb3VuZCB3aGVu IHRyb3VibGUgc2hvb3RpbmcgdGhlIG9jY2FzaW9uYWxseSBvY2N1cnJpbmcNCj4+ICAgICAgICBv dXQgb2Ygc3luY2ggdmFsdWVzIGJldHdlZW4gJ2FscmVhZHlfc2VudCcgYW5kICdza19wZWVrX29m ZnNldCcgbWF5DQo+PiAgICAgICAgaGF2ZSBkZWVwZXIgaW1wbGljYXRpb25zIHRoYXQgd2UgbWF5 IG5lZWQgdG8gYmUgaW52ZXN0aWdhdGUuDQo+Pg0KPj4gdjM6IC0gUmViYXNlZCB0byBtb3N0IHJl Y2VudCB2ZXJzaW9uIG9mIHRjcC5jLCBwbHVzIHRoZSBwcmV2aW91cw0KPj4gICAgICAgIHBhdGNo IGluIHRoaXMgc2VyaWVzLg0KPj4gICAgICAtIFNvbWUgY2hhbmdlcyBiYXNlZCBvbiBmZWVkYmFj ayBmcm9tIFBBU1NUIHRlYW0NCj4+DQo+PiB2NDogLSBTb21lIHNtYWxsIGNoYW5nZXMgYmFzZWQg b24gZmVlZGJhY2sgZnJvbSBTdGVmYW4vRGF2aWQuDQo+PiAtLS0NCj4+ICAgdGNwLmMgfCA1OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t DQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQ0K Pj4NCj4+IGRpZmYgLS1naXQgYS90Y3AuYyBiL3RjcC5jDQo+PiBpbmRleCA5NzZkYmE4Li40MTYz YmY5IDEwMDY0NA0KPj4gLS0tIGEvdGNwLmMNCj4+ICsrKyBiL3RjcC5jDQo+PiBAQCAtNTExLDYg KzUxMSw5IEBAIHN0YXRpYyBzdHJ1Y3QgaW92ZWMJdGNwNl9sMl9pb3YJCVtUQ1BfRlJBTUVTX01F TV1bVENQX05VTV9JT1ZTXTsNCj4+ICAgc3RhdGljIHN0cnVjdCBpb3ZlYwl0Y3A0X2wyX2ZsYWdz X2lvdglbVENQX0ZSQU1FU19NRU1dW1RDUF9OVU1fSU9WU107DQo+PiAgIHN0YXRpYyBzdHJ1Y3Qg aW92ZWMJdGNwNl9sMl9mbGFnc19pb3YJW1RDUF9GUkFNRVNfTUVNXVtUQ1BfTlVNX0lPVlNdOw0K Pj4gICANCj4+ICsvKiBEb2VzIHRoZSBrZXJuZWwgc3VwcG9ydCBUQ1BfUEVFS19PRkY/ICovDQo+ PiArc3RhdGljIGJvb2wgcGVla19vZmZzZXRfY2FwOw0KPj4gKw0KPj4gICAvKiBzZW5kbXNnKCkg dG8gc29ja2V0ICovDQo+PiAgIHN0YXRpYyBzdHJ1Y3QgaW92ZWMJdGNwX2lvdgkJCVtVSU9fTUFY SU9WXTsNCj4+ICAgDQo+PiBAQCAtNTI2LDYgKzUyOSwyMCBAQCBzdGF0aWNfYXNzZXJ0KEFSUkFZ X1NJWkUodGNfaGFzaCkgPj0gRkxPV19NQVgsDQo+PiAgIGludCBpbml0X3NvY2tfcG9vbDQJCVtU Q1BfU09DS19QT09MX1NJWkVdOw0KPj4gICBpbnQgaW5pdF9zb2NrX3Bvb2w2CQlbVENQX1NPQ0tf UE9PTF9TSVpFXTsNCj4+ICAgDQo+PiArLyoqDQo+PiArICogdGNwX3NldF9wZWVrX29mZnNldCgp IC0gU2V0IFNPX1BFRUtfT0ZGIG9mZnNldCBvbiBhIHNvY2tldCBpZiBzdXBwb3J0ZWQNCj4+ICsg KiBAczogICAgICAgICAgU29ja2V0IHRvIHVwZGF0ZQ0KPj4gKyAqIEBvZmZzZXQ6ICAgICBPZmZz ZXQgaW4gYnl0ZXMNCj4+ICsgKi8NCj4+ICtzdGF0aWMgdm9pZCB0Y3Bfc2V0X3BlZWtfb2Zmc2V0 KGludCBzLCBpbnQgb2Zmc2V0KQ0KPj4gK3sNCj4+ICsJaWYgKCFwZWVrX29mZnNldF9jYXApDQo+ PiArCQlyZXR1cm47DQo+PiArDQo+PiArCWlmIChzZXRzb2Nrb3B0KHMsIFNPTF9TT0NLRVQsIFNP X1BFRUtfT0ZGLCAmb2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSkpDQo+PiArCQllcnIoIkZhaWxlZCB0 byBzZXQgU09fUEVFS19PRkYgdG8gJXUgaW4gc29ja2V0ICVpIiwgb2Zmc2V0LCBzKTsNCj4+ICt9 DQo+PiArDQo+PiAgIC8qKg0KPj4gICAgKiB0Y3BfY29ubl9lcG9sbF9ldmVudHMoKSAtIGVwb2xs IGV2ZW50cyBtYXNrIGZvciBnaXZlbiBjb25uZWN0aW9uIHN0YXRlDQo+PiAgICAqIEBldmVudHM6 CUN1cnJlbnQgY29ubmVjdGlvbiBldmVudHMNCj4+IEBAIC0yMTk3LDE0ICsyMjE0LDE1IEBAIHN0 YXRpYyBpbnQgdGNwX2RhdGFfZnJvbV9zb2NrKHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFw X2Nvbm4gKmNvbm4pDQo+PiAgIAl1aW50MzJfdCBhbHJlYWR5X3NlbnQsIHNlcTsNCj4+ICAgCXN0 cnVjdCBpb3ZlYyAqaW92Ow0KPj4gICANCj4+ICsJLyogSG93IG11Y2ggaGF2ZSB3ZSByZWFkL3Nl bnQgc2luY2UgbGFzdCByZWNlaXZlZCBhY2sgPyAqLw0KPj4gICAJYWxyZWFkeV9zZW50ID0gY29u bi0+c2VxX3RvX3RhcCAtIGNvbm4tPnNlcV9hY2tfZnJvbV90YXA7DQo+PiAtDQo+PiAgIAlpZiAo U0VRX0xUKGFscmVhZHlfc2VudCwgMCkpIHsNCj4+ICAgCQkvKiBSRkMgNzYxLCBzZWN0aW9uIDIu MS4gKi8NCj4+ICAgCQlmbG93X3RyYWNlKGNvbm4sICJBQ0sgc2VxdWVuY2UgZ2FwOiBBQ0sgZm9y ICV1LCBzZW50OiAldSIsDQo+PiAgIAkJCSAgIGNvbm4tPnNlcV9hY2tfZnJvbV90YXAsIGNvbm4t PnNlcV90b190YXApOw0KPj4gICAJCWNvbm4tPnNlcV90b190YXAgPSBjb25uLT5zZXFfYWNrX2Zy b21fdGFwOw0KPj4gICAJCWFscmVhZHlfc2VudCA9IDA7DQo+PiArCQl0Y3Bfc2V0X3BlZWtfb2Zm c2V0KHMsIDApOw0KPj4gICAJfQ0KPj4gICANCj4+ICAgCWlmICghd25kX3NjYWxlZCB8fCBhbHJl YWR5X3NlbnQgPj0gd25kX3NjYWxlZCkgew0KPj4gQEAgLTIyMjIsMTEgKzIyNDAsMTYgQEAgc3Rh dGljIGludCB0Y3BfZGF0YV9mcm9tX3NvY2soc3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBf Y29ubiAqY29ubikNCj4+ICAgCQlpb3ZfcmVtID0gKHduZF9zY2FsZWQgLSBhbHJlYWR5X3NlbnQp ICUgbXNzOw0KPj4gICAJfQ0KPj4gICANCj4+IC0JbWhfc29jay5tc2dfaW92ID0gaW92X3NvY2s7 DQo+PiAtCW1oX3NvY2subXNnX2lvdmxlbiA9IGZpbGxfYnVmcyArIDE7DQo+PiAtDQo+PiAtCWlv dl9zb2NrWzBdLmlvdl9iYXNlID0gdGNwX2J1Zl9kaXNjYXJkOw0KPj4gLQlpb3Zfc29ja1swXS5p b3ZfbGVuID0gYWxyZWFkeV9zZW50Ow0KPj4gKwkvKiBQcmVwYXJlIGlvdiBhY2NvcmRpbmcgdG8g a2VybmVsIGNhcGFiaWxpdHkgKi8NCj4+ICsJaWYgKCFwZWVrX29mZnNldF9jYXApIHsNCj4+ICsJ CW1oX3NvY2subXNnX2lvdiA9IGlvdl9zb2NrOw0KPj4gKwkJaW92X3NvY2tbMF0uaW92X2Jhc2Ug PSB0Y3BfYnVmX2Rpc2NhcmQ7DQo+PiArCQlpb3Zfc29ja1swXS5pb3ZfbGVuID0gYWxyZWFkeV9z ZW50Ow0KPj4gKwkJbWhfc29jay5tc2dfaW92bGVuID0gZmlsbF9idWZzICsgMTsNCj4+ICsJfSBl bHNlIHsNCj4+ICsJCW1oX3NvY2subXNnX2lvdiA9ICZpb3Zfc29ja1sxXTsNCj4+ICsJCW1oX3Nv Y2subXNnX2lvdmxlbiA9IGZpbGxfYnVmczsNCj4+ICsJfQ0KPj4gICANCj4+ICAgCWlmICgoIHY0 ICYmIHRjcDRfcGF5bG9hZF91c2VkICsgZmlsbF9idWZzID4gVENQX0ZSQU1FU19NRU0pIHx8DQo+ PiAgIAkgICAgKCF2NCAmJiB0Y3A2X3BheWxvYWRfdXNlZCArIGZpbGxfYnVmcyA+IFRDUF9GUkFN RVNfTUVNKSkgew0KPj4gQEAgLTIyNjcsNyArMjI5MCwxMCBAQCBzdGF0aWMgaW50IHRjcF9kYXRh X2Zyb21fc29jayhzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uKQ0KPj4g ICAJCXJldHVybiAwOw0KPj4gICAJfQ0KPj4gICANCj4+IC0Jc2VuZGxlbiA9IGxlbiAtIGFscmVh ZHlfc2VudDsNCj4+ICsJc2VuZGxlbiA9IGxlbjsNCj4+ICsJaWYgKCFwZWVrX29mZnNldF9jYXAp DQo+PiArCQlzZW5kbGVuIC09IGFscmVhZHlfc2VudDsNCj4+ICsNCj4+ICAgCWlmIChzZW5kbGVu IDw9IDApIHsNCj4+ICAgCQljb25uX2ZsYWcoYywgY29ubiwgU1RBTExFRCk7DQo+PiAgIAkJcmV0 dXJuIDA7DQo+PiBAQCAtMjQzOCw2ICsyNDY0LDcgQEAgc3RhdGljIGludCB0Y3BfZGF0YV9mcm9t X3RhcChzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLA0KPj4gICAJCQkg ICAiZmFzdCByZS10cmFuc21pdCwgQUNLOiAldSwgcHJldmlvdXMgc2VxdWVuY2U6ICV1IiwNCj4+ ICAgCQkJICAgbWF4X2Fja19zZXEsIGNvbm4tPnNlcV90b190YXApOw0KPj4gICAJCWNvbm4tPnNl cV90b190YXAgPSBtYXhfYWNrX3NlcTsNCj4+ICsJCXRjcF9zZXRfcGVla19vZmZzZXQoY29ubi0+ c29jaywgMCk7DQo+PiAgIAkJdGNwX2RhdGFfZnJvbV9zb2NrKGMsIGNvbm4pOw0KPj4gICAJfQ0K Pj4gICANCj4+IEBAIC0yNTMwLDYgKzI1NTcsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfY29ubl9mcm9t X3NvY2tfZmluaXNoKHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+ PiAgIAljb25uLT5zZXFfYWNrX3RvX3RhcCA9IGNvbm4tPnNlcV9mcm9tX3RhcDsNCj4+ICAgDQo+ PiAgIAljb25uX2V2ZW50KGMsIGNvbm4sIEVTVEFCTElTSEVEKTsNCj4+ICsJdGNwX3NldF9wZWVr X29mZnNldChjb25uLT5zb2NrLCAwKTsNCj4+ICAgDQo+PiAgIAkvKiBUaGUgY2xpZW50IG1pZ2h0 IGhhdmUgc2VudCBkYXRhIGFscmVhZHksIHdoaWNoIHdlIGRpZG4ndA0KPj4gICAJICogZGVxdWV1 ZSB3YWl0aW5nIGZvciBTWU4sQUNLIGZyb20gdGFwIC0tIGNoZWNrIG5vdy4NCj4+IEBAIC0yNjEw LDYgKzI2MzgsNyBAQCBpbnQgdGNwX3RhcF9oYW5kbGVyKHN0cnVjdCBjdHggKmMsIHVpbnQ4X3Qg cGlmLCBzYV9mYW1pbHlfdCBhZiwNCj4+ICAgCQkJZ290byByZXNldDsNCj4+ICAgDQo+PiAgIAkJ Y29ubl9ldmVudChjLCBjb25uLCBFU1RBQkxJU0hFRCk7DQo+PiArCQl0Y3Bfc2V0X3BlZWtfb2Zm c2V0KGNvbm4tPnNvY2ssIDApOw0KPj4gICANCj4+ICAgCQlpZiAodGgtPmZpbikgew0KPj4gICAJ CQljb25uLT5zZXFfZnJvbV90YXArKzsNCj4+IEBAIC0yODYzLDYgKzI4OTIsNyBAQCB2b2lkIHRj cF90aW1lcl9oYW5kbGVyKHN0cnVjdCBjdHggKmMsIHVuaW9uIGVwb2xsX3JlZiByZWYpDQo+PiAg IAkJCWZsb3dfZGJnKGNvbm4sICJBQ0sgdGltZW91dCwgcmV0cnkiKTsNCj4+ICAgCQkJY29ubi0+ cmV0cmFucysrOw0KPj4gICAJCQljb25uLT5zZXFfdG9fdGFwID0gY29ubi0+c2VxX2Fja19mcm9t X3RhcDsNCj4+ICsJCQl0Y3Bfc2V0X3BlZWtfb2Zmc2V0KGNvbm4tPnNvY2ssIDApOw0KPj4gICAJ CQl0Y3BfZGF0YV9mcm9tX3NvY2soYywgY29ubik7DQo+PiAgIAkJCXRjcF90aW1lcl9jdGwoYywg Y29ubik7DQo+PiAgIAkJfQ0KPj4gQEAgLTMxNTQsNyArMzE4NCw4IEBAIHN0YXRpYyB2b2lkIHRj cF9zb2NrX3JlZmlsbF9pbml0KGNvbnN0IHN0cnVjdCBjdHggKmMpDQo+PiAgICAqLw0KPj4gICBp bnQgdGNwX2luaXQoc3RydWN0IGN0eCAqYykNCj4+ICAgew0KPj4gLQl1bnNpZ25lZCBiOw0KPj4g Kwl1bnNpZ25lZCBpbnQgYiwgb3B0diA9IDA7DQo+PiArCWludCBzOw0KPj4gICANCj4+ICAgCWZv ciAoYiA9IDA7IGIgPCBUQ1BfSEFTSF9UQUJMRV9TSVpFOyBiKyspDQo+PiAgIAkJdGNfaGFzaFti XSA9IEZMT1dfU0lEWF9OT05FOw0KPj4gQEAgLTMxNzgsNiArMzIwOSwxNyBAQCBpbnQgdGNwX2lu aXQoc3RydWN0IGN0eCAqYykNCj4+ICAgCQlOU19DQUxMKHRjcF9uc19zb2Nrc19pbml0LCBjKTsN Cj4+ICAgCX0NCj4+ICAgDQo+PiArCS8qIFByb2JlIGZvciBTT19QRUVLX09GRiBzdXBwb3J0ICov DQo+PiArCXMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0gfCBTT0NLX0NMT0VYRUMsIElQ UFJPVE9fVENQKTsNCj4+ICsJaWYgKHMgPCAwKSB7DQo+PiArCQl3YXJuKCJUZW1wb3JhcnkgVENQ IHNvY2tldCBjcmVhdGlvbiBmYWlsZWQiKTsNCj4+ICsJfSBlbHNlIHsNCj4+ICsJCWlmICghc2V0 c29ja29wdChzLCBTT0xfU09DS0VULCBTT19QRUVLX09GRiwgJm9wdHYsIHNpemVvZihpbnQpKSkN Cj4+ICsJCQlwZWVrX29mZnNldF9jYXAgPSB0cnVlOw0KPj4gKwkJY2xvc2Uocyk7DQo+PiArCX0N Cj4+ICsJaW5mbygiU09fUEVFS19PRkYlc3N1cHBvcnRlZCIsIHBlZWtfb2Zmc2V0X2NhcCA/ICIg IiA6ICIgbm90ICIpOw0KPj4gKw0KPj4gICAJcmV0dXJuIDA7DQo+PiAgIH0NCj4+ICAgDQoNCg==