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 DBBF946D82; Thu, 21 Aug 2025 16:30:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A44E3402ED; Thu, 21 Aug 2025 16:30:11 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 7AB88402B1 for ; Thu, 21 Aug 2025 16:30:10 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 4491B20F9F; Thu, 21 Aug 2025 16:30:10 +0200 (CEST) Content-class: urn:content-classes:message Subject: RE: [PATCH v3] mbuf: de-inline sanity checking a reinitialized mbuf MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Date: Thu, 21 Aug 2025 16:30:08 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9FE5B@smartserver.smartshare.dk> In-Reply-To: <20250722093431.555214-1-mb@smartsharesystems.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: X-MimeOLE: Produced By Microsoft Exchange V6.5 Thread-Topic: [PATCH v3] mbuf: de-inline sanity checking a reinitialized mbuf Thread-Index: Adv669fiRES3Yv3iQYe6N2YBR/YwmAXvBMyQ 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" , "Andrew Rybchenko" , "Ivan Malov" , "Chengwen Feng" 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 VGhpcyBwYXRjaCBoYXMgYmVlbiBzdXBlcnNlZGVkIGJ5IHRoaXMgc2VyaWVzOg0KaHR0cHM6Ly9p bmJveC5kcGRrLm9yZy9kZXYvMjAyNTA4MjExNDI1NDQuMTYyMTEtMS1tYkBzbWFydHNoYXJlc3lz dGVtcy5jb20vDQoNCg0KTWVkIHZlbmxpZyBoaWxzZW4gLyBLaW5kIHJlZ2FyZHMsDQotTW9ydGVu IEJyw7hydXANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNb3J0ZW4g QnLDuHJ1cCBbbWFpbHRvOm1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbV0NCj4gU2VudDogVHVlc2Rh eSwgMjIgSnVseSAyMDI1IDExLjM1DQo+IFRvOiBkZXZAZHBkay5vcmc7IFRob21hcyBNb25qYWxv bjsgU3RlcGhlbiBIZW1taW5nZXI7IEJydWNlIFJpY2hhcmRzb247DQo+IEtvbnN0YW50aW4gQW5h bnlldjsgQW5kcmV3IFJ5YmNoZW5rbzsgSXZhbiBNYWxvdg0KPiBDYzogTW9ydGVuIEJyw7hydXAN Cj4gU3ViamVjdDogW1BBVENIIHYzXSBtYnVmOiBkZS1pbmxpbmUgc2FuaXR5IGNoZWNraW5nIGEg cmVpbml0aWFsaXplZCBtYnVmDQo+IA0KPiBTYW5pdHkgY2hlY2tpbmcgYSByZWluaXRpYWxpemVk IG1idWYgKGEuay5hLiByYXcgbWJ1ZikgaGFzIGJlZW4gcmVmYWN0b3JlZA0KPiB0byBmb2xsb3cg dGhlIHNhbWUgZGVzaWduIHBhdHRlcm4gYXMgc2FuaXR5IGNoZWNraW5nIGEgbm9ybWFsIG1idWYs IGFuZA0KPiBub3cgZGVwZW5kcyBvbiBSVEVfTElCUlRFX01CVUZfREVCVUcgaW5zdGVhZCBvZiBS VEVfRU5BQkxFX0FTU0VSVC4NCj4gDQo+IFRoZSBkZXRhaWxzIG9mIHRoZSBjaGFuZ2VzIGFyZSBh cyBmb2xsb3dzOg0KPiANCj4gTm9uLWlubGluZWQgZnVuY3Rpb25zIHJ0ZV9tYnVmX3Jhd19zYW5p dHlfY2hlY2soKSBhbmQgcnRlX21idWZfcmF3X2NoZWNrKCkNCj4gaGF2ZSBiZWVuIGFkZGVkLg0K PiBUaGV5IGRvIGZvciBhIHJlaW5pdGlhbGl6ZWQgbWJ1ZiB3aGF0IHJ0ZV9tYnVmX3Nhbml0eV9j aGVjaygpIGFuZA0KPiBydGVfbWJ1Zl9jaGVjaygpIGRvIGZvciBhIG5vcm1hbCBtYnVmLg0KPiBU aGV5IGJhc2ljYWxseSBjaGVjayB0aGUgc2FtZSBjb25kaXRpb25zIGFzIF9fcnRlX21idWZfcmF3 X3Nhbml0eV9jaGVjaygpDQo+IHByZXZpb3VzbHkgZGlkLCBidXQgdXNlICJpZiAoIWNvbmRpdGlv bikgcnRlX3BhbmljKG1lc3NhZ2UpIiBpbnN0ZWFkIG9mDQo+IFJURV9BU1NFUlQoKSwgc28gdGhl eSBkb24ndCBkZXBlbmQgb24gUlRFX0VOQUJMRV9BU1NFUlQuDQo+IA0KPiBUaGUgaW5saW5lIGZ1 bmN0aW9uIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaygpIGhhcyBiZWVuIHJlcGxhY2VkDQo+ IGJ5IHRoZSBuZXcgbWFjcm8gX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKCksIHdoaWNo IGVpdGhlciBjYWxscw0KPiBydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKCkgb3IgZG9lcyBub3Ro aW5nLCBkZXBlbmRpbmcgb24NCj4gUlRFX0xJQlJURV9NQlVGX0RFQlVHLCBqdXN0IGxpa2UgdGhl IF9fcnRlX21idWZfc2FuaXR5X2NoZWNrKCkgbWFjcm8gZG9lcw0KPiBmb3IgYSBub3JtYWwgbWJ1 Zi4NCj4gDQo+IE5vdGUgdGhhdCB0aGUgbmV3IG1hY3JvIF9fcnRlX21idWZfcmF3X3Nhbml0eV9j aGVja19tcCgpIHRha2VzIGFuIG9wdGlvbmFsDQo+IG1lbXBvb2wgcGFyYW1ldGVyIHRvIHZlcmlm eSB0aGF0IHRoZSBtYnVmIGJlbG9uZ3MgdG8gdGhlIGV4cGVjdGVkIG1idWYNCj4gcG9vbC4NCj4g VGhpcyBhZGRpdGlvbiBpcyBtYWlubHkgcmVsZXZhbnQgZm9yIHNhbml0eSBjaGVja2luZyByZWlu aXRpYWxpemVkIG1idWZzDQo+IGZyZWVkIGRpcmVjdGx5IGludG8gYSBnaXZlbiBtZW1wb29sIGJ5 IGEgUE1EIHdoZW4gdXNpbmcNCj4gUlRFX0VUSF9UWF9PRkZMT0FEX01CVUZfRkFTVF9GUkVFLg0K PiANCj4gVGhlIG1hY3JvIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaygpIGhhcyBiZWVuIGtl cHQgZm9yIGJhY2t3YXJkcyBBUEkNCj4gY29tcGF0aWJpbGl0eS4NCj4gSXQgc2ltcGx5IGNhbGxz IF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcCgpIHdpdGhvdXQgc3BlY2lmeWluZyBhDQo+ IG1lbXBvb2wuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRz aGFyZXN5c3RlbXMuY29tPg0KPiAtLS0NCj4gdjM6DQo+ICogUmVtb3ZlZCBleHBlcmltZW50YWwg c3RhdHVzIGZvciB0aGUgbmV3IGZ1bmN0aW9ucy4NCj4gICBFeHBlcmltZW50YWwgaXMgb3B0aW9u YWwgZm9yIG5ldyBzeW1ib2xzLCB0byBhbGxvdyBmb3IgZnV0dXJlIEFQSQ0KPiAgIGNoYW5nZXMu IEJ1dCB0aGlzIGhhcyBiZWVuIGFyb3VuZCBmb3IgYSBsb25nIHRpbWUuIChTdGVwaGVuIEhlbW1p bmdlcikNCj4gKiBDb25zZXF1ZW50aWFsbHksIHRoZSBhZGRlZCBidWlsZCBjaGVjayBmb3IgQUxM T1dfRVhQRVJJTUVOVEFMX0FQSSB3aXRoDQo+ICAgUlRFX0xJQlJURV9NQlVGX0RFQlVHIGlzIG5v IGxvbmdlciBuZWVkZWQsIGFuZCB3YXMgcmVtb3ZlZC4NCj4gdjI6DQo+ICogQWRkZWQgZXhwbGlj aXQgYnVpbGQgY2hlY2sgZm9yIEFMTE9XX0VYUEVSSU1FTlRBTF9BUEkgYmVpbmcgZW5hYmxlZCB3 aGVuDQo+ICAgUlRFX0xJQlJURV9NQlVGX0RFQlVHIGlzIGVuYWJsZWQsIHdpdGggZGVzY3JpcHRp dmUgZXJyb3IgbWVzc2FnZSBpZiBub3QNCj4gICBzby4gKEl2YW4gTWFsb3YpDQo+ICogRml4ZWQg dHlwbyBpbiBwYXRjaCBkZXNjcmlwdGlvbi4NCj4gLS0tDQo+ICBsaWIvbWJ1Zi9ydGVfbWJ1Zi5j IHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgbGliL21idWYvcnRlX21idWYu aCB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAg MiBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvbGliL21idWYvcnRlX21idWYuYyBiL2xpYi9tYnVmL3J0ZV9tYnVmLmMN Cj4gaW5kZXggOWU3NzMxYThhMi4uYWYzOWMxM2NmNyAxMDA2NDQNCj4gLS0tIGEvbGliL21idWYv cnRlX21idWYuYw0KPiArKysgYi9saWIvbWJ1Zi9ydGVfbWJ1Zi5jDQo+IEBAIC0zNzMsNiArMzcz LDY3IEBAIHJ0ZV9wa3RtYnVmX3Bvb2xfY3JlYXRlX2V4dGJ1Zihjb25zdCBjaGFyICpuYW1lLCB1 bnNpZ25lZA0KPiBpbnQgbiwNCj4gIAlyZXR1cm4gbXA7DQo+ICB9DQo+IA0KPiArLyogZG8gc29t ZSBzYW5pdHkgY2hlY2tzIG9uIGEgcmVpbml0aWFsaXplZCBtYnVmOiBwYW5pYyBpZiBpdCBmYWls cyAqLw0KPiArUlRFX0VYUE9SVF9TWU1CT0wocnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaykNCj4g K3ZvaWQNCj4gK3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IHJ0ZV9tYnVm ICptLCBjb25zdCBzdHJ1Y3QgcnRlX21lbXBvb2wNCj4gKm1wKQ0KPiArew0KPiArCWNvbnN0IGNo YXIgKnJlYXNvbjsNCj4gKw0KPiArCWlmIChydGVfbWJ1Zl9yYXdfY2hlY2sobSwgbXAsICZyZWFz b24pKQ0KPiArCQlydGVfcGFuaWMoIiVzXG4iLCByZWFzb24pOw0KPiArfQ0KPiArDQo+ICtSVEVf RVhQT1JUX1NZTUJPTChydGVfbWJ1Zl9yYXdfY2hlY2spDQo+ICtpbnQgcnRlX21idWZfcmF3X2No ZWNrKGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwgY29uc3Qgc3RydWN0IHJ0ZV9tZW1wb29sDQo+ ICptcCwNCj4gKwkJICAgY29uc3QgY2hhciAqKnJlYXNvbikNCj4gK3sNCj4gKwkvKiBjaGVjayBz YW5pdHkgKi8NCj4gKwlpZiAocnRlX21idWZfY2hlY2sobSwgMCwgcmVhc29uKSA9PSAtMSkNCj4g KwkJcmV0dXJuIC0xOw0KPiArDQo+ICsJLyogY2hlY2sgaW5pdGlhbGl6ZWQgKi8NCj4gKwlpZiAo cnRlX21idWZfcmVmY250X3JlYWQobSkgIT0gMSkgew0KPiArCQkqcmVhc29uID0gInVuaW5pdGlh bGl6ZWQgcmVmIGNudCI7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsJaWYgKG0tPm5leHQg IT0gTlVMTCkgew0KPiArCQkqcmVhc29uID0gInVuaW5pdGlhbGl6ZWQgbmV4dCBwdHIiOw0KPiAr CQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArCWlmIChtLT5uYl9zZWdzICE9IDEpIHsNCj4gKwkJKnJl YXNvbiA9ICJ1bmluaXRpYWxpemVkIG5iX3NlZ3MiOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0K PiArCWlmIChSVEVfTUJVRl9DTE9ORUQobSkpIHsNCj4gKwkJKnJlYXNvbiA9ICJjbG9uZWQiOw0K PiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArCWlmIChSVEVfTUJVRl9IQVNfRVhUQlVGKG0pKSB7 DQo+ICsJCWlmICghUlRFX01CVUZfSEFTX1BJTk5FRF9FWFRCVUYobSkpIHsNCj4gKwkJCSpyZWFz b24gPSAiZXh0ZXJuYWwgYnVmZmVyIG5vdCBwaW5uZWQiOw0KPiArCQkJcmV0dXJuIC0xOw0KPiAr CQl9DQo+ICsNCj4gKwkJdWludDE2X3QgY250ID0gcnRlX21idWZfZXh0X3JlZmNudF9yZWFkKG0t PnNoaW5mbyk7DQo+ICsJCWlmICgoY250ID09IDApIHx8IChjbnQgPT0gVUlOVDE2X01BWCkpIHsN Cj4gKwkJCSpyZWFzb24gPSAicGlubmVkIGV4dGVybmFsIGJ1ZmZlciBiYWQgcmVmIGNudCI7DQo+ ICsJCQlyZXR1cm4gLTE7DQo+ICsJCX0NCj4gKwkJaWYgKGNudCAhPSAxKSB7DQo+ICsJCQkqcmVh c29uID0gInBpbm5lZCBleHRlcm5hbCBidWZmZXIgdW5pbml0aWFsaXplZCByZWYgY250IjsNCj4g KwkJCXJldHVybiAtMTsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmIChtcCAhPSBOVUxMICYm IG0tPnBvb2wgIT0gbXApIHsNCj4gKwkJKnJlYXNvbiA9ICJ3cm9uZyBtYnVmIHBvb2wiOw0KPiAr CQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIC8q IGRvIHNvbWUgc2FuaXR5IGNoZWNrcyBvbiBhIG1idWY6IHBhbmljIGlmIGl0IGZhaWxzICovDQo+ ICBSVEVfRVhQT1JUX1NZTUJPTChydGVfbWJ1Zl9zYW5pdHlfY2hlY2spDQo+ICB2b2lkDQo+IGRp ZmYgLS1naXQgYS9saWIvbWJ1Zi9ydGVfbWJ1Zi5oIGIvbGliL21idWYvcnRlX21idWYuaA0KPiBp bmRleCAwNmFiNzUwMmE1Li41NTJjZGExYWU1IDEwMDY0NA0KPiAtLS0gYS9saWIvbWJ1Zi9ydGVf bWJ1Zi5oDQo+ICsrKyBiL2xpYi9tYnVmL3J0ZV9tYnVmLmgNCj4gQEAgLTMzOSwxMSArMzM5LDE3 IEBAIHJ0ZV9wa3RtYnVmX3ByaXZfZmxhZ3Moc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4gDQo+ ICAjaWZkZWYgUlRFX0xJQlJURV9NQlVGX0RFQlVHDQo+IA0KPiArLyoqICBjaGVjayByZWluaXRp YWxpemVkIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2RlICovDQo+ICsjZGVmaW5lIF9fcnRlX21idWZf cmF3X3Nhbml0eV9jaGVja19tcChtLCBtcCkgcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjayhtLA0K PiBtcCkNCj4gKw0KPiAgLyoqICBjaGVjayBtYnVmIHR5cGUgaW4gZGVidWcgbW9kZSAqLw0KPiAg I2RlZmluZSBfX3J0ZV9tYnVmX3Nhbml0eV9jaGVjayhtLCBpc19oKSBydGVfbWJ1Zl9zYW5pdHlf Y2hlY2sobSwgaXNfaCkNCj4gDQo+ICAjZWxzZSAvKiAgUlRFX0xJQlJURV9NQlVGX0RFQlVHICov DQo+IA0KPiArLyoqICBjaGVjayByZWluaXRpYWxpemVkIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2Rl ICovDQo+ICsjZGVmaW5lIF9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcChtLCBtcCkgZG8g eyB9IHdoaWxlICgwKQ0KPiArDQo+ICAvKiogIGNoZWNrIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2Rl ICovDQo+ICAjZGVmaW5lIF9fcnRlX21idWZfc2FuaXR5X2NoZWNrKG0sIGlzX2gpIGRvIHsgfSB3 aGlsZSAoMCkNCj4gDQo+IEBAIC01MTMsNiArNTE5LDQ2IEBAIHJ0ZV9tYnVmX2V4dF9yZWZjbnRf dXBkYXRlKHN0cnVjdA0KPiBydGVfbWJ1Zl9leHRfc2hhcmVkX2luZm8gKnNoaW5mbywNCj4gIH0g d2hpbGUgKDApDQo+IA0KPiANCj4gKy8qKg0KPiArICogU2FuaXR5IGNoZWNrcyBvbiBhIHJlaW5p dGlhbGl6ZWQgbWJ1Zi4NCj4gKyAqDQo+ICsgKiBDaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgdGhl IGdpdmVuIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4NCj4gKyAqIFRoZSBmdW5jdGlvbiB3aWxsIGNhdXNl IGEgcGFuaWMgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4NCj4gKyAqDQo+ICsgKiBDaGVjayB0 aGF0IHRoZSBtYnVmIGlzIHByb3Blcmx5IHJlaW5pdGlhbGl6ZWQgKHJlZmNudD0xLCBuZXh0PU5V TEwsDQo+ICsgKiBuYl9zZWdzPTEpLCBhcyBkb25lIGJ5IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2Vn KCkuDQo+ICsgKg0KPiArICogQHBhcmFtIG0NCj4gKyAqICAgVGhlIG1idWYgdG8gYmUgY2hlY2tl ZC4NCj4gKyAqIEBwYXJhbSBtcA0KPiArICogICBUaGUgbWVtcG9vbCB0byB3aGljaCB0aGUgbWJ1 ZiBiZWxvbmdzLg0KPiArICogICBOVUxMIGlmIHVua25vd24sIG5vdCB0byBiZSBjaGVja2VkLg0K PiArICovDQo+ICt2b2lkDQo+ICtydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKGNvbnN0IHN0cnVj dCBydGVfbWJ1ZiAqbSwgY29uc3Qgc3RydWN0IHJ0ZV9tZW1wb29sDQo+ICptcCk7DQo+ICsNCj4g Ky8qKg0KPiArICogU2FuaXR5IGNoZWNrcyBvbiBhIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4NCj4gKyAq DQo+ICsgKiBBbG1vc3QgbGlrZSBydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKCksIGJ1dCB0aGlz IGZ1bmN0aW9uIGdpdmVzIHRoZQ0KPiByZWFzb24NCj4gKyAqIGlmIGNvcnJ1cHRpb24gaXMgZGV0 ZWN0ZWQgcmF0aGVyIHRoYW4gcGFuaWMuDQo+ICsgKg0KPiArICogQHBhcmFtIG0NCj4gKyAqICAg VGhlIG1idWYgdG8gYmUgY2hlY2tlZC4NCj4gKyAqIEBwYXJhbSBtcA0KPiArICogICBUaGUgbWVt cG9vbCB0byB3aGljaCB0aGUgbWJ1ZiBiZWxvbmdzLg0KPiArICogICBOVUxMIGlmIHVua25vd24s IG5vdCB0byBiZSBjaGVja2VkLg0KPiArICogQHBhcmFtIHJlYXNvbg0KPiArICogICBBIHJlZmVy ZW5jZSB0byBhIHN0cmluZyBwb2ludGVyIHdoZXJlIHRvIHN0b3JlIHRoZSByZWFzb24gd2h5IGEg bWJ1ZiBpcw0KPiArICogICBjb25zaWRlcmVkIGludmFsaWQuDQo+ICsgKiBAcmV0dXJuDQo+ICsg KiAgIC0gMCBpZiBubyBpc3N1ZSBoYXMgYmVlbiBmb3VuZCwgcmVhc29uIGlzIGxlZnQgdW50b3Vj aGVkLg0KPiArICogICAtIC0xIGlmIGEgcHJvYmxlbSBpcyBkZXRlY3RlZCwgcmVhc29uIHRoZW4g cG9pbnRzIHRvIGEgc3RyaW5nIGRlc2NyaWJpbmcNCj4gKyAqICAgICB0aGUgcmVhc29uIHdoeSB0 aGUgbWJ1ZiBpcyBkZWVtZWQgaW52YWxpZC4NCj4gKyAqLw0KPiAraW50IHJ0ZV9tYnVmX3Jhd19j aGVjayhjb25zdCBzdHJ1Y3QgcnRlX21idWYgKm0sIGNvbnN0IHN0cnVjdCBydGVfbWVtcG9vbA0K PiAqbXAsDQo+ICsJCSAgIGNvbnN0IGNoYXIgKipyZWFzb24pOw0KPiArDQo+ICAvKioNCj4gICAq IFNhbml0eSBjaGVja3Mgb24gYW4gbWJ1Zi4NCj4gICAqDQo+IEBAIC01NTAsMzMgKzU5NiwxMSBA QCBydGVfbWJ1Zl9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IHJ0ZV9tYnVmICptLCBpbnQNCj4g aXNfaGVhZGVyKTsNCj4gIGludCBydGVfbWJ1Zl9jaGVjayhjb25zdCBzdHJ1Y3QgcnRlX21idWYg Km0sIGludCBpc19oZWFkZXIsDQo+ICAJCSAgIGNvbnN0IGNoYXIgKipyZWFzb24pOw0KPiANCj4g LS8qKg0KPiAtICogU2FuaXR5IGNoZWNrcyBvbiBhIHJlaW5pdGlhbGl6ZWQgbWJ1ZiBpbiBkZWJ1 ZyBtb2RlLg0KPiAtICoNCj4gLSAqIENoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgZ2l2ZW4g cmVpbml0aWFsaXplZCBtYnVmLg0KPiAtICogVGhlIGZ1bmN0aW9uIHdpbGwgY2F1c2UgYSBwYW5p YyBpZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkLg0KPiAtICoNCj4gLSAqIENoZWNrIHRoYXQgdGhl IG1idWYgaXMgcHJvcGVybHkgcmVpbml0aWFsaXplZCAocmVmY250PTEsIG5leHQ9TlVMTCwNCj4g LSAqIG5iX3NlZ3M9MSksIGFzIGRvbmUgYnkgcnRlX3BrdG1idWZfcHJlZnJlZV9zZWcoKS4NCj4g LSAqDQo+IC0gKiBAcGFyYW0gbQ0KPiAtICogICBUaGUgbWJ1ZiB0byBiZSBjaGVja2VkLg0KPiAt ICovDQo+IC1zdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkDQo+IC1fX3J0ZV9tYnVmX3Jh d19zYW5pdHlfY2hlY2soX19ydGVfdW51c2VkIGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSkNCj4g LXsNCj4gLQlSVEVfQVNTRVJUKHJ0ZV9tYnVmX3JlZmNudF9yZWFkKG0pID09IDEpOw0KPiAtCVJU RV9BU1NFUlQobS0+bmV4dCA9PSBOVUxMKTsNCj4gLQlSVEVfQVNTRVJUKG0tPm5iX3NlZ3MgPT0g MSk7DQo+IC0JUlRFX0FTU0VSVCghUlRFX01CVUZfQ0xPTkVEKG0pKTsNCj4gLQlSVEVfQVNTRVJU KCFSVEVfTUJVRl9IQVNfRVhUQlVGKG0pIHx8DQo+IC0JCQkoUlRFX01CVUZfSEFTX1BJTk5FRF9F WFRCVUYobSkgJiYNCj4gLQkJCXJ0ZV9tYnVmX2V4dF9yZWZjbnRfcmVhZChtLT5zaGluZm8pID09 IDEpKTsNCj4gLQlfX3J0ZV9tYnVmX3Nhbml0eV9jaGVjayhtLCAwKTsNCj4gLX0NCj4gKy8qKiBG b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuICovDQo+ICsjZGVmaW5lIF9fcnRlX21idWZfcmF3 X3Nhbml0eV9jaGVjayhtKSBfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobSwNCj4gTlVM TCkNCj4gDQo+ICAvKiogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqLw0KPiAtI2RlZmlu ZSBNQlVGX1JBV19BTExPQ19DSEVDSyhtKSBfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobSkN Cj4gKyNkZWZpbmUgTUJVRl9SQVdfQUxMT0NfQ0hFQ0sobSkgX19ydGVfbWJ1Zl9yYXdfc2FuaXR5 X2NoZWNrX21wKG0sIE5VTEwpDQo+IA0KPiAgLyoqDQo+ICAgKiBBbGxvY2F0ZSBhbiB1bmluaXRp YWxpemVkIG1idWYgZnJvbSBtZW1wb29sICptcCouDQo+IEBAIC02MDYsNyArNjMwLDcgQEAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgcnRlX21idWYgKnJ0ZV9tYnVmX3Jhd19hbGxvYyhzdHJ1Y3QNCj4g cnRlX21lbXBvb2wgKm1wKQ0KPiANCj4gIAlpZiAocnRlX21lbXBvb2xfZ2V0KG1wLCAmcmV0LnB0 cikgPCAwKQ0KPiAgCQlyZXR1cm4gTlVMTDsNCj4gLQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hl Y2socmV0Lm0pOw0KPiArCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcChyZXQubSwgbXAp Ow0KPiAgCXJldHVybiByZXQubTsNCj4gIH0NCj4gDQo+IEBAIC02NDQsNyArNjY4LDcgQEAgcnRl X21idWZfcmF3X2FsbG9jX2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgc3RydWN0DQo+IHJ0 ZV9tYnVmICoqbWJ1ZnMsIHVuc2lnbmUNCj4gIAlpbnQgcmMgPSBydGVfbWVtcG9vbF9nZXRfYnVs ayhtcCwgKHZvaWQgKiopbWJ1ZnMsIGNvdW50KTsNCj4gIAlpZiAobGlrZWx5KHJjID09IDApKQ0K PiAgCQlmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHggPCBjb3VudDsgaWR4KyspDQo+IC0J CQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobWJ1ZnNbaWR4XSk7DQo+ICsJCQlfX3J0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobWJ1ZnNbaWR4XSwgbXApOw0KPiAgCXJldHVybiByYzsN Cj4gIH0NCj4gDQo+IEBAIC02NjUsNyArNjg5LDcgQEAgcnRlX21idWZfcmF3X2FsbG9jX2J1bGso c3RydWN0IHJ0ZV9tZW1wb29sICptcCwgc3RydWN0DQo+IHJ0ZV9tYnVmICoqbWJ1ZnMsIHVuc2ln bmUNCj4gIHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gIHJ0ZV9tYnVmX3Jhd19m cmVlKHN0cnVjdCBydGVfbWJ1ZiAqbSkNCj4gIHsNCj4gLQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlf Y2hlY2sobSk7DQo+ICsJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG0sIE5VTEwpOw0K PiAgCXJ0ZV9tZW1wb29sX3B1dChtLT5wb29sLCBtKTsNCj4gIH0NCj4gDQo+IEBAIC02OTYsMTIg KzcyMCw4IEBAIF9fcnRlX2V4cGVyaW1lbnRhbA0KPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxp bmUgdm9pZA0KPiAgcnRlX21idWZfcmF3X2ZyZWVfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w LCBzdHJ1Y3QgcnRlX21idWYgKiptYnVmcywNCj4gdW5zaWduZWQgaW50IGNvdW50KQ0KPiAgew0K PiAtCWZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IGNvdW50OyBpZHgrKykgew0KPiAt CQljb25zdCBzdHJ1Y3QgcnRlX21idWYgKm0gPSBtYnVmc1tpZHhdOw0KPiAtCQlSVEVfQVNTRVJU KG0gIT0gTlVMTCk7DQo+IC0JCVJURV9BU1NFUlQobS0+cG9vbCA9PSBtcCk7DQo+IC0JCV9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVjayhtKTsNCj4gLQl9DQo+ICsJZm9yICh1bnNpZ25lZCBpbnQg aWR4ID0gMDsgaWR4IDwgY291bnQ7IGlkeCsrKQ0KPiArCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlf Y2hlY2tfbXAobWJ1ZnNbaWR4XSwgbXApOw0KPiANCj4gIAlydGVfbWVtcG9vbF9wdXRfYnVsayht cCwgKHZvaWQgKiopbWJ1ZnMsIGNvdW50KTsNCj4gIH0NCj4gQEAgLTEwMjEsMjIgKzEwNDEsMjIg QEAgc3RhdGljIGlubGluZSBpbnQgcnRlX3BrdG1idWZfYWxsb2NfYnVsayhzdHJ1Y3QNCj4gcnRl X21lbXBvb2wgKnBvb2wsDQo+ICAJc3dpdGNoIChjb3VudCAlIDQpIHsNCj4gIAljYXNlIDA6DQo+ ICAJCXdoaWxlIChpZHggIT0gY291bnQpIHsNCj4gLQkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9j aGVjayhtYnVmc1tpZHhdKTsNCj4gKwkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcCht YnVmc1tpZHhdLCBwb29sKTsNCj4gIAkJCXJ0ZV9wa3RtYnVmX3Jlc2V0KG1idWZzW2lkeF0pOw0K PiAgCQkJaWR4Kys7DQo+ICAJCQkvKiBmYWxsLXRocm91Z2ggKi8NCj4gIAljYXNlIDM6DQo+IC0J CQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobWJ1ZnNbaWR4XSk7DQo+ICsJCQlfX3J0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobWJ1ZnNbaWR4XSwgcG9vbCk7DQo+ICAJCQlydGVfcGt0 bWJ1Zl9yZXNldChtYnVmc1tpZHhdKTsNCj4gIAkJCWlkeCsrOw0KPiAgCQkJLyogZmFsbC10aHJv dWdoICovDQo+ICAJY2FzZSAyOg0KPiAtCQkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKG1i dWZzW2lkeF0pOw0KPiArCQkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG1idWZzW2lk eF0sIHBvb2wpOw0KPiAgCQkJcnRlX3BrdG1idWZfcmVzZXQobWJ1ZnNbaWR4XSk7DQo+ICAJCQlp ZHgrKzsNCj4gIAkJCS8qIGZhbGwtdGhyb3VnaCAqLw0KPiAgCWNhc2UgMToNCj4gLQkJCV9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVjayhtYnVmc1tpZHhdKTsNCj4gKwkJCV9fcnRlX21idWZfcmF3 X3Nhbml0eV9jaGVja19tcChtYnVmc1tpZHhdLCBwb29sKTsNCj4gIAkJCXJ0ZV9wa3RtYnVmX3Jl c2V0KG1idWZzW2lkeF0pOw0KPiAgCQkJaWR4Kys7DQo+ICAJCQkvKiBmYWxsLXRocm91Z2ggKi8N Cj4gLS0NCj4gMi40My4wDQoNCg==