From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5117546CFC; Mon, 11 Aug 2025 12:06:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E20904025D; Mon, 11 Aug 2025 12:06:49 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 95E39400D5 for ; Mon, 11 Aug 2025 12:06:48 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 3E3A020752; Mon, 11 Aug 2025 12:06:48 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v3] mbuf: de-inline sanity checking a reinitialized mbuf X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Mon, 11 Aug 2025 12:06:44 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9FE21@smartserver.smartshare.dk> In-Reply-To: <20250722093431.555214-1-mb@smartsharesystems.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v3] mbuf: de-inline sanity checking a reinitialized mbuf Thread-Index: Adv669fiRES3Yv3iQYe6N2YBR/YwmAPurx0g References: <20250719102315.435921-1-mb@smartsharesystems.com> <20250722093431.555214-1-mb@smartsharesystems.com> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: , "Thomas Monjalon" , "Stephen Hemminger" , "Bruce Richardson" , "Konstantin Ananyev" , "Ivan Malov" , "Chengwen Feng" Cc: "Andrew Rybchenko" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org UElORyBmb3IgcmV2aWV3Lg0KDQpJIHRoaW5rIGl0IHdvdWxkIGJlIGdvb2QgdG8gZ2V0IHRoaXMg cGF0Y2ggbWVyZ2VkIGVhcmx5IG9uLg0KDQpXZSBzaG91bGQgYWxzbyBjb25zaWRlciB1cGdyYWRp bmcgdGhlIHN0YXR1cyBvZiB0aGUgcnRlX21idWZfcmF3X2FsbG9jL2ZyZWVfYnVsaygpIGlubGlu ZSBmdW5jdGlvbnMgZnJvbSBleHBlcmltZW50YWwgdG8gc3RhYmxlLCBzbyB0aGV5IGNhbiBiZSB1 c2VkIGJ5IGV0aGRldiBkcml2ZXJzIGluc3RlYWQgb2YgcnRlX21lbXBvb2xfZ2V0L3B1dF9idWxr KCkuDQoNCi1Nb3J0ZW4NCg0KPiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCBbbWFpbHRvOm1iQHNtYXJ0 c2hhcmVzeXN0ZW1zLmNvbV0NCj4gU2VudDogVHVlc2RheSwgMjIgSnVseSAyMDI1IDExLjM1DQo+ IA0KPiBTYW5pdHkgY2hlY2tpbmcgYSByZWluaXRpYWxpemVkIG1idWYgKGEuay5hLiByYXcgbWJ1 ZikgaGFzIGJlZW4gcmVmYWN0b3JlZA0KPiB0byBmb2xsb3cgdGhlIHNhbWUgZGVzaWduIHBhdHRl cm4gYXMgc2FuaXR5IGNoZWNraW5nIGEgbm9ybWFsIG1idWYsIGFuZA0KPiBub3cgZGVwZW5kcyBv biBSVEVfTElCUlRFX01CVUZfREVCVUcgaW5zdGVhZCBvZiBSVEVfRU5BQkxFX0FTU0VSVC4NCj4g DQo+IFRoZSBkZXRhaWxzIG9mIHRoZSBjaGFuZ2VzIGFyZSBhcyBmb2xsb3dzOg0KPiANCj4gTm9u LWlubGluZWQgZnVuY3Rpb25zIHJ0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2soKSBhbmQgcnRlX21i dWZfcmF3X2NoZWNrKCkNCj4gaGF2ZSBiZWVuIGFkZGVkLg0KPiBUaGV5IGRvIGZvciBhIHJlaW5p dGlhbGl6ZWQgbWJ1ZiB3aGF0IHJ0ZV9tYnVmX3Nhbml0eV9jaGVjaygpIGFuZA0KPiBydGVfbWJ1 Zl9jaGVjaygpIGRvIGZvciBhIG5vcm1hbCBtYnVmLg0KPiBUaGV5IGJhc2ljYWxseSBjaGVjayB0 aGUgc2FtZSBjb25kaXRpb25zIGFzIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaygpDQo+IHBy ZXZpb3VzbHkgZGlkLCBidXQgdXNlICJpZiAoIWNvbmRpdGlvbikgcnRlX3BhbmljKG1lc3NhZ2Up IiBpbnN0ZWFkIG9mDQo+IFJURV9BU1NFUlQoKSwgc28gdGhleSBkb24ndCBkZXBlbmQgb24gUlRF X0VOQUJMRV9BU1NFUlQuDQo+IA0KPiBUaGUgaW5saW5lIGZ1bmN0aW9uIF9fcnRlX21idWZfcmF3 X3Nhbml0eV9jaGVjaygpIGhhcyBiZWVuIHJlcGxhY2VkDQo+IGJ5IHRoZSBuZXcgbWFjcm8gX19y dGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKCksIHdoaWNoIGVpdGhlciBjYWxscw0KPiBydGVf bWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKCkgb3IgZG9lcyBub3RoaW5nLCBkZXBlbmRpbmcgb24NCj4g UlRFX0xJQlJURV9NQlVGX0RFQlVHLCBqdXN0IGxpa2UgdGhlIF9fcnRlX21idWZfc2FuaXR5X2No ZWNrKCkgbWFjcm8gZG9lcw0KPiBmb3IgYSBub3JtYWwgbWJ1Zi4NCj4gDQo+IE5vdGUgdGhhdCB0 aGUgbmV3IG1hY3JvIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcCgpIHRha2VzIGFuIG9w dGlvbmFsDQo+IG1lbXBvb2wgcGFyYW1ldGVyIHRvIHZlcmlmeSB0aGF0IHRoZSBtYnVmIGJlbG9u Z3MgdG8gdGhlIGV4cGVjdGVkIG1idWYNCj4gcG9vbC4NCj4gVGhpcyBhZGRpdGlvbiBpcyBtYWlu bHkgcmVsZXZhbnQgZm9yIHNhbml0eSBjaGVja2luZyByZWluaXRpYWxpemVkIG1idWZzDQo+IGZy ZWVkIGRpcmVjdGx5IGludG8gYSBnaXZlbiBtZW1wb29sIGJ5IGEgUE1EIHdoZW4gdXNpbmcNCj4g UlRFX0VUSF9UWF9PRkZMT0FEX01CVUZfRkFTVF9GUkVFLg0KPiANCj4gVGhlIG1hY3JvIF9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVjaygpIGhhcyBiZWVuIGtlcHQgZm9yIGJhY2t3YXJkcyBBUEkN Cj4gY29tcGF0aWJpbGl0eS4NCj4gSXQgc2ltcGx5IGNhbGxzIF9fcnRlX21idWZfcmF3X3Nhbml0 eV9jaGVja19tcCgpIHdpdGhvdXQgc3BlY2lmeWluZyBhDQo+IG1lbXBvb2wuDQo+IA0KPiBTaWdu ZWQtb2ZmLWJ5OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiAt LS0NCj4gdjM6DQo+ICogUmVtb3ZlZCBleHBlcmltZW50YWwgc3RhdHVzIGZvciB0aGUgbmV3IGZ1 bmN0aW9ucy4NCj4gICBFeHBlcmltZW50YWwgaXMgb3B0aW9uYWwgZm9yIG5ldyBzeW1ib2xzLCB0 byBhbGxvdyBmb3IgZnV0dXJlIEFQSQ0KPiAgIGNoYW5nZXMuIEJ1dCB0aGlzIGhhcyBiZWVuIGFy b3VuZCBmb3IgYSBsb25nIHRpbWUuIChTdGVwaGVuIEhlbW1pbmdlcikNCj4gKiBDb25zZXF1ZW50 aWFsbHksIHRoZSBhZGRlZCBidWlsZCBjaGVjayBmb3IgQUxMT1dfRVhQRVJJTUVOVEFMX0FQSSB3 aXRoDQo+ICAgUlRFX0xJQlJURV9NQlVGX0RFQlVHIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFuZCB3 YXMgcmVtb3ZlZC4NCj4gdjI6DQo+ICogQWRkZWQgZXhwbGljaXQgYnVpbGQgY2hlY2sgZm9yIEFM TE9XX0VYUEVSSU1FTlRBTF9BUEkgYmVpbmcgZW5hYmxlZCB3aGVuDQo+ICAgUlRFX0xJQlJURV9N QlVGX0RFQlVHIGlzIGVuYWJsZWQsIHdpdGggZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBpZiBu b3QNCj4gICBzby4gKEl2YW4gTWFsb3YpDQo+ICogRml4ZWQgdHlwbyBpbiBwYXRjaCBkZXNjcmlw dGlvbi4NCj4gLS0tDQo+ICBsaWIvbWJ1Zi9ydGVfbWJ1Zi5jIHwgNjEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKw0KPiAgbGliL21idWYvcnRlX21idWYuaCB8IDk2ICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTkg aW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL21i dWYvcnRlX21idWYuYyBiL2xpYi9tYnVmL3J0ZV9tYnVmLmMNCj4gaW5kZXggOWU3NzMxYThhMi4u YWYzOWMxM2NmNyAxMDA2NDQNCj4gLS0tIGEvbGliL21idWYvcnRlX21idWYuYw0KPiArKysgYi9s aWIvbWJ1Zi9ydGVfbWJ1Zi5jDQo+IEBAIC0zNzMsNiArMzczLDY3IEBAIHJ0ZV9wa3RtYnVmX3Bv b2xfY3JlYXRlX2V4dGJ1Zihjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZA0KPiBpbnQgbiwNCj4g IAlyZXR1cm4gbXA7DQo+ICB9DQo+IA0KPiArLyogZG8gc29tZSBzYW5pdHkgY2hlY2tzIG9uIGEg cmVpbml0aWFsaXplZCBtYnVmOiBwYW5pYyBpZiBpdCBmYWlscyAqLw0KPiArUlRFX0VYUE9SVF9T WU1CT0wocnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaykNCj4gK3ZvaWQNCj4gK3J0ZV9tYnVmX3Jh d19zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IHJ0ZV9tYnVmICptLCBjb25zdCBzdHJ1Y3QgcnRl X21lbXBvb2wNCj4gKm1wKQ0KPiArew0KPiArCWNvbnN0IGNoYXIgKnJlYXNvbjsNCj4gKw0KPiAr CWlmIChydGVfbWJ1Zl9yYXdfY2hlY2sobSwgbXAsICZyZWFzb24pKQ0KPiArCQlydGVfcGFuaWMo IiVzXG4iLCByZWFzb24pOw0KPiArfQ0KPiArDQo+ICtSVEVfRVhQT1JUX1NZTUJPTChydGVfbWJ1 Zl9yYXdfY2hlY2spDQo+ICtpbnQgcnRlX21idWZfcmF3X2NoZWNrKGNvbnN0IHN0cnVjdCBydGVf bWJ1ZiAqbSwgY29uc3Qgc3RydWN0IHJ0ZV9tZW1wb29sDQo+ICptcCwNCj4gKwkJICAgY29uc3Qg Y2hhciAqKnJlYXNvbikNCj4gK3sNCj4gKwkvKiBjaGVjayBzYW5pdHkgKi8NCj4gKwlpZiAocnRl X21idWZfY2hlY2sobSwgMCwgcmVhc29uKSA9PSAtMSkNCj4gKwkJcmV0dXJuIC0xOw0KPiArDQo+ ICsJLyogY2hlY2sgaW5pdGlhbGl6ZWQgKi8NCj4gKwlpZiAocnRlX21idWZfcmVmY250X3JlYWQo bSkgIT0gMSkgew0KPiArCQkqcmVhc29uID0gInVuaW5pdGlhbGl6ZWQgcmVmIGNudCI7DQo+ICsJ CXJldHVybiAtMTsNCj4gKwl9DQo+ICsJaWYgKG0tPm5leHQgIT0gTlVMTCkgew0KPiArCQkqcmVh c29uID0gInVuaW5pdGlhbGl6ZWQgbmV4dCBwdHIiOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0K PiArCWlmIChtLT5uYl9zZWdzICE9IDEpIHsNCj4gKwkJKnJlYXNvbiA9ICJ1bmluaXRpYWxpemVk IG5iX3NlZ3MiOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArCWlmIChSVEVfTUJVRl9DTE9O RUQobSkpIHsNCj4gKwkJKnJlYXNvbiA9ICJjbG9uZWQiOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJ fQ0KPiArCWlmIChSVEVfTUJVRl9IQVNfRVhUQlVGKG0pKSB7DQo+ICsJCWlmICghUlRFX01CVUZf SEFTX1BJTk5FRF9FWFRCVUYobSkpIHsNCj4gKwkJCSpyZWFzb24gPSAiZXh0ZXJuYWwgYnVmZmVy IG5vdCBwaW5uZWQiOw0KPiArCQkJcmV0dXJuIC0xOw0KPiArCQl9DQo+ICsNCj4gKwkJdWludDE2 X3QgY250ID0gcnRlX21idWZfZXh0X3JlZmNudF9yZWFkKG0tPnNoaW5mbyk7DQo+ICsJCWlmICgo Y250ID09IDApIHx8IChjbnQgPT0gVUlOVDE2X01BWCkpIHsNCj4gKwkJCSpyZWFzb24gPSAicGlu bmVkIGV4dGVybmFsIGJ1ZmZlciBiYWQgcmVmIGNudCI7DQo+ICsJCQlyZXR1cm4gLTE7DQo+ICsJ CX0NCj4gKwkJaWYgKGNudCAhPSAxKSB7DQo+ICsJCQkqcmVhc29uID0gInBpbm5lZCBleHRlcm5h bCBidWZmZXIgdW5pbml0aWFsaXplZCByZWYgY250IjsNCj4gKwkJCXJldHVybiAtMTsNCj4gKwkJ fQ0KPiArCX0NCj4gKw0KPiArCWlmIChtcCAhPSBOVUxMICYmIG0tPnBvb2wgIT0gbXApIHsNCj4g KwkJKnJlYXNvbiA9ICJ3cm9uZyBtYnVmIHBvb2wiOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0K PiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIC8qIGRvIHNvbWUgc2FuaXR5IGNoZWNr cyBvbiBhIG1idWY6IHBhbmljIGlmIGl0IGZhaWxzICovDQo+ICBSVEVfRVhQT1JUX1NZTUJPTChy dGVfbWJ1Zl9zYW5pdHlfY2hlY2spDQo+ICB2b2lkDQo+IGRpZmYgLS1naXQgYS9saWIvbWJ1Zi9y dGVfbWJ1Zi5oIGIvbGliL21idWYvcnRlX21idWYuaA0KPiBpbmRleCAwNmFiNzUwMmE1Li41NTJj ZGExYWU1IDEwMDY0NA0KPiAtLS0gYS9saWIvbWJ1Zi9ydGVfbWJ1Zi5oDQo+ICsrKyBiL2xpYi9t YnVmL3J0ZV9tYnVmLmgNCj4gQEAgLTMzOSwxMSArMzM5LDE3IEBAIHJ0ZV9wa3RtYnVmX3ByaXZf ZmxhZ3Moc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4gDQo+ICAjaWZkZWYgUlRFX0xJQlJURV9N QlVGX0RFQlVHDQo+IA0KPiArLyoqICBjaGVjayByZWluaXRpYWxpemVkIG1idWYgdHlwZSBpbiBk ZWJ1ZyBtb2RlICovDQo+ICsjZGVmaW5lIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcCht LCBtcCkgcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjayhtLA0KPiBtcCkNCj4gKw0KPiAgLyoqICBj aGVjayBtYnVmIHR5cGUgaW4gZGVidWcgbW9kZSAqLw0KPiAgI2RlZmluZSBfX3J0ZV9tYnVmX3Nh bml0eV9jaGVjayhtLCBpc19oKSBydGVfbWJ1Zl9zYW5pdHlfY2hlY2sobSwgaXNfaCkNCj4gDQo+ ICAjZWxzZSAvKiAgUlRFX0xJQlJURV9NQlVGX0RFQlVHICovDQo+IA0KPiArLyoqICBjaGVjayBy ZWluaXRpYWxpemVkIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2RlICovDQo+ICsjZGVmaW5lIF9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVja19tcChtLCBtcCkgZG8geyB9IHdoaWxlICgwKQ0KPiArDQo+ ICAvKiogIGNoZWNrIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2RlICovDQo+ICAjZGVmaW5lIF9fcnRl X21idWZfc2FuaXR5X2NoZWNrKG0sIGlzX2gpIGRvIHsgfSB3aGlsZSAoMCkNCj4gDQo+IEBAIC01 MTMsNiArNTE5LDQ2IEBAIHJ0ZV9tYnVmX2V4dF9yZWZjbnRfdXBkYXRlKHN0cnVjdA0KPiBydGVf bWJ1Zl9leHRfc2hhcmVkX2luZm8gKnNoaW5mbywNCj4gIH0gd2hpbGUgKDApDQo+IA0KPiANCj4g Ky8qKg0KPiArICogU2FuaXR5IGNoZWNrcyBvbiBhIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4NCj4gKyAq DQo+ICsgKiBDaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGdpdmVuIHJlaW5pdGlhbGl6ZWQg bWJ1Zi4NCj4gKyAqIFRoZSBmdW5jdGlvbiB3aWxsIGNhdXNlIGEgcGFuaWMgaWYgY29ycnVwdGlv biBpcyBkZXRlY3RlZC4NCj4gKyAqDQo+ICsgKiBDaGVjayB0aGF0IHRoZSBtYnVmIGlzIHByb3Bl cmx5IHJlaW5pdGlhbGl6ZWQgKHJlZmNudD0xLCBuZXh0PU5VTEwsDQo+ICsgKiBuYl9zZWdzPTEp LCBhcyBkb25lIGJ5IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKCkuDQo+ICsgKg0KPiArICogQHBh cmFtIG0NCj4gKyAqICAgVGhlIG1idWYgdG8gYmUgY2hlY2tlZC4NCj4gKyAqIEBwYXJhbSBtcA0K PiArICogICBUaGUgbWVtcG9vbCB0byB3aGljaCB0aGUgbWJ1ZiBiZWxvbmdzLg0KPiArICogICBO VUxMIGlmIHVua25vd24sIG5vdCB0byBiZSBjaGVja2VkLg0KPiArICovDQo+ICt2b2lkDQo+ICty dGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwgY29uc3Qg c3RydWN0IHJ0ZV9tZW1wb29sDQo+ICptcCk7DQo+ICsNCj4gKy8qKg0KPiArICogU2FuaXR5IGNo ZWNrcyBvbiBhIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4NCj4gKyAqDQo+ICsgKiBBbG1vc3QgbGlrZSBy dGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKCksIGJ1dCB0aGlzIGZ1bmN0aW9uIGdpdmVzIHRoZQ0K PiByZWFzb24NCj4gKyAqIGlmIGNvcnJ1cHRpb24gaXMgZGV0ZWN0ZWQgcmF0aGVyIHRoYW4gcGFu aWMuDQo+ICsgKg0KPiArICogQHBhcmFtIG0NCj4gKyAqICAgVGhlIG1idWYgdG8gYmUgY2hlY2tl ZC4NCj4gKyAqIEBwYXJhbSBtcA0KPiArICogICBUaGUgbWVtcG9vbCB0byB3aGljaCB0aGUgbWJ1 ZiBiZWxvbmdzLg0KPiArICogICBOVUxMIGlmIHVua25vd24sIG5vdCB0byBiZSBjaGVja2VkLg0K PiArICogQHBhcmFtIHJlYXNvbg0KPiArICogICBBIHJlZmVyZW5jZSB0byBhIHN0cmluZyBwb2lu dGVyIHdoZXJlIHRvIHN0b3JlIHRoZSByZWFzb24gd2h5IGEgbWJ1ZiBpcw0KPiArICogICBjb25z aWRlcmVkIGludmFsaWQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0gMCBpZiBubyBpc3N1ZSBo YXMgYmVlbiBmb3VuZCwgcmVhc29uIGlzIGxlZnQgdW50b3VjaGVkLg0KPiArICogICAtIC0xIGlm IGEgcHJvYmxlbSBpcyBkZXRlY3RlZCwgcmVhc29uIHRoZW4gcG9pbnRzIHRvIGEgc3RyaW5nIGRl c2NyaWJpbmcNCj4gKyAqICAgICB0aGUgcmVhc29uIHdoeSB0aGUgbWJ1ZiBpcyBkZWVtZWQgaW52 YWxpZC4NCj4gKyAqLw0KPiAraW50IHJ0ZV9tYnVmX3Jhd19jaGVjayhjb25zdCBzdHJ1Y3QgcnRl X21idWYgKm0sIGNvbnN0IHN0cnVjdCBydGVfbWVtcG9vbA0KPiAqbXAsDQo+ICsJCSAgIGNvbnN0 IGNoYXIgKipyZWFzb24pOw0KPiArDQo+ICAvKioNCj4gICAqIFNhbml0eSBjaGVja3Mgb24gYW4g bWJ1Zi4NCj4gICAqDQo+IEBAIC01NTAsMzMgKzU5NiwxMSBAQCBydGVfbWJ1Zl9zYW5pdHlfY2hl Y2soY29uc3Qgc3RydWN0IHJ0ZV9tYnVmICptLCBpbnQNCj4gaXNfaGVhZGVyKTsNCj4gIGludCBy dGVfbWJ1Zl9jaGVjayhjb25zdCBzdHJ1Y3QgcnRlX21idWYgKm0sIGludCBpc19oZWFkZXIsDQo+ ICAJCSAgIGNvbnN0IGNoYXIgKipyZWFzb24pOw0KPiANCj4gLS8qKg0KPiAtICogU2FuaXR5IGNo ZWNrcyBvbiBhIHJlaW5pdGlhbGl6ZWQgbWJ1ZiBpbiBkZWJ1ZyBtb2RlLg0KPiAtICoNCj4gLSAq IENoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgZ2l2ZW4gcmVpbml0aWFsaXplZCBtYnVmLg0K PiAtICogVGhlIGZ1bmN0aW9uIHdpbGwgY2F1c2UgYSBwYW5pYyBpZiBjb3JydXB0aW9uIGlzIGRl dGVjdGVkLg0KPiAtICoNCj4gLSAqIENoZWNrIHRoYXQgdGhlIG1idWYgaXMgcHJvcGVybHkgcmVp bml0aWFsaXplZCAocmVmY250PTEsIG5leHQ9TlVMTCwNCj4gLSAqIG5iX3NlZ3M9MSksIGFzIGRv bmUgYnkgcnRlX3BrdG1idWZfcHJlZnJlZV9zZWcoKS4NCj4gLSAqDQo+IC0gKiBAcGFyYW0gbQ0K PiAtICogICBUaGUgbWJ1ZiB0byBiZSBjaGVja2VkLg0KPiAtICovDQo+IC1zdGF0aWMgX19ydGVf YWx3YXlzX2lubGluZSB2b2lkDQo+IC1fX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2soX19ydGVf dW51c2VkIGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSkNCj4gLXsNCj4gLQlSVEVfQVNTRVJUKHJ0 ZV9tYnVmX3JlZmNudF9yZWFkKG0pID09IDEpOw0KPiAtCVJURV9BU1NFUlQobS0+bmV4dCA9PSBO VUxMKTsNCj4gLQlSVEVfQVNTRVJUKG0tPm5iX3NlZ3MgPT0gMSk7DQo+IC0JUlRFX0FTU0VSVCgh UlRFX01CVUZfQ0xPTkVEKG0pKTsNCj4gLQlSVEVfQVNTRVJUKCFSVEVfTUJVRl9IQVNfRVhUQlVG KG0pIHx8DQo+IC0JCQkoUlRFX01CVUZfSEFTX1BJTk5FRF9FWFRCVUYobSkgJiYNCj4gLQkJCXJ0 ZV9tYnVmX2V4dF9yZWZjbnRfcmVhZChtLT5zaGluZm8pID09IDEpKTsNCj4gLQlfX3J0ZV9tYnVm X3Nhbml0eV9jaGVjayhtLCAwKTsNCj4gLX0NCj4gKy8qKiBGb3IgYmFja3dhcmRzIGNvbXBhdGli aWxpdHkuICovDQo+ICsjZGVmaW5lIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjayhtKSBfX3J0 ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobSwNCj4gTlVMTCkNCj4gDQo+ICAvKiogRm9yIGJh Y2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqLw0KPiAtI2RlZmluZSBNQlVGX1JBV19BTExPQ19DSEVD SyhtKSBfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobSkNCj4gKyNkZWZpbmUgTUJVRl9SQVdf QUxMT0NfQ0hFQ0sobSkgX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG0sIE5VTEwpDQo+ IA0KPiAgLyoqDQo+ICAgKiBBbGxvY2F0ZSBhbiB1bmluaXRpYWxpemVkIG1idWYgZnJvbSBtZW1w b29sICptcCouDQo+IEBAIC02MDYsNyArNjMwLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcnRl X21idWYgKnJ0ZV9tYnVmX3Jhd19hbGxvYyhzdHJ1Y3QNCj4gcnRlX21lbXBvb2wgKm1wKQ0KPiAN Cj4gIAlpZiAocnRlX21lbXBvb2xfZ2V0KG1wLCAmcmV0LnB0cikgPCAwKQ0KPiAgCQlyZXR1cm4g TlVMTDsNCj4gLQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2socmV0Lm0pOw0KPiArCV9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVja19tcChyZXQubSwgbXApOw0KPiAgCXJldHVybiByZXQubTsN Cj4gIH0NCj4gDQo+IEBAIC02NDQsNyArNjY4LDcgQEAgcnRlX21idWZfcmF3X2FsbG9jX2J1bGso c3RydWN0IHJ0ZV9tZW1wb29sICptcCwgc3RydWN0DQo+IHJ0ZV9tYnVmICoqbWJ1ZnMsIHVuc2ln bmUNCj4gIAlpbnQgcmMgPSBydGVfbWVtcG9vbF9nZXRfYnVsayhtcCwgKHZvaWQgKiopbWJ1ZnMs IGNvdW50KTsNCj4gIAlpZiAobGlrZWx5KHJjID09IDApKQ0KPiAgCQlmb3IgKHVuc2lnbmVkIGlu dCBpZHggPSAwOyBpZHggPCBjb3VudDsgaWR4KyspDQo+IC0JCQlfX3J0ZV9tYnVmX3Jhd19zYW5p dHlfY2hlY2sobWJ1ZnNbaWR4XSk7DQo+ICsJCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tf bXAobWJ1ZnNbaWR4XSwgbXApOw0KPiAgCXJldHVybiByYzsNCj4gIH0NCj4gDQo+IEBAIC02NjUs NyArNjg5LDcgQEAgcnRlX21idWZfcmF3X2FsbG9jX2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICpt cCwgc3RydWN0DQo+IHJ0ZV9tYnVmICoqbWJ1ZnMsIHVuc2lnbmUNCj4gIHN0YXRpYyBfX3J0ZV9h bHdheXNfaW5saW5lIHZvaWQNCj4gIHJ0ZV9tYnVmX3Jhd19mcmVlKHN0cnVjdCBydGVfbWJ1ZiAq bSkNCj4gIHsNCj4gLQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobSk7DQo+ICsJX19ydGVf bWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG0sIE5VTEwpOw0KPiAgCXJ0ZV9tZW1wb29sX3B1dCht LT5wb29sLCBtKTsNCj4gIH0NCj4gDQo+IEBAIC02OTYsMTIgKzcyMCw4IEBAIF9fcnRlX2V4cGVy aW1lbnRhbA0KPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiAgcnRlX21idWZf cmF3X2ZyZWVfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLCBzdHJ1Y3QgcnRlX21idWYgKipt YnVmcywNCj4gdW5zaWduZWQgaW50IGNvdW50KQ0KPiAgew0KPiAtCWZvciAodW5zaWduZWQgaW50 IGlkeCA9IDA7IGlkeCA8IGNvdW50OyBpZHgrKykgew0KPiAtCQljb25zdCBzdHJ1Y3QgcnRlX21i dWYgKm0gPSBtYnVmc1tpZHhdOw0KPiAtCQlSVEVfQVNTRVJUKG0gIT0gTlVMTCk7DQo+IC0JCVJU RV9BU1NFUlQobS0+cG9vbCA9PSBtcCk7DQo+IC0JCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVj ayhtKTsNCj4gLQl9DQo+ICsJZm9yICh1bnNpZ25lZCBpbnQgaWR4ID0gMDsgaWR4IDwgY291bnQ7 IGlkeCsrKQ0KPiArCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobWJ1ZnNbaWR4XSwg bXApOw0KPiANCj4gIAlydGVfbWVtcG9vbF9wdXRfYnVsayhtcCwgKHZvaWQgKiopbWJ1ZnMsIGNv dW50KTsNCj4gIH0NCj4gQEAgLTEwMjEsMjIgKzEwNDEsMjIgQEAgc3RhdGljIGlubGluZSBpbnQg cnRlX3BrdG1idWZfYWxsb2NfYnVsayhzdHJ1Y3QNCj4gcnRlX21lbXBvb2wgKnBvb2wsDQo+ICAJ c3dpdGNoIChjb3VudCAlIDQpIHsNCj4gIAljYXNlIDA6DQo+ICAJCXdoaWxlIChpZHggIT0gY291 bnQpIHsNCj4gLQkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjayhtYnVmc1tpZHhdKTsNCj4g KwkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcChtYnVmc1tpZHhdLCBwb29sKTsNCj4g IAkJCXJ0ZV9wa3RtYnVmX3Jlc2V0KG1idWZzW2lkeF0pOw0KPiAgCQkJaWR4Kys7DQo+ICAJCQkv KiBmYWxsLXRocm91Z2ggKi8NCj4gIAljYXNlIDM6DQo+IC0JCQlfX3J0ZV9tYnVmX3Jhd19zYW5p dHlfY2hlY2sobWJ1ZnNbaWR4XSk7DQo+ICsJCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tf bXAobWJ1ZnNbaWR4XSwgcG9vbCk7DQo+ICAJCQlydGVfcGt0bWJ1Zl9yZXNldChtYnVmc1tpZHhd KTsNCj4gIAkJCWlkeCsrOw0KPiAgCQkJLyogZmFsbC10aHJvdWdoICovDQo+ICAJY2FzZSAyOg0K PiAtCQkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKG1idWZzW2lkeF0pOw0KPiArCQkJX19y dGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG1idWZzW2lkeF0sIHBvb2wpOw0KPiAgCQkJcnRl X3BrdG1idWZfcmVzZXQobWJ1ZnNbaWR4XSk7DQo+ICAJCQlpZHgrKzsNCj4gIAkJCS8qIGZhbGwt dGhyb3VnaCAqLw0KPiAgCWNhc2UgMToNCj4gLQkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVj ayhtYnVmc1tpZHhdKTsNCj4gKwkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcChtYnVm c1tpZHhdLCBwb29sKTsNCj4gIAkJCXJ0ZV9wa3RtYnVmX3Jlc2V0KG1idWZzW2lkeF0pOw0KPiAg CQkJaWR4Kys7DQo+ICAJCQkvKiBmYWxsLXRocm91Z2ggKi8NCj4gLS0NCj4gMi40My4wDQoNCg==