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 24A6A46BC7; Sun, 20 Jul 2025 11:25:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A004B4014F; Sun, 20 Jul 2025 11:25:55 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 20B00400D7 for ; Sun, 20 Jul 2025 11:25:52 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id BFEA1208AE; Sun, 20 Jul 2025 11:25:51 +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] mbuf: de-inline sanity checking a reinitialized mbuf X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Sun, 20 Jul 2025 11:25:49 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9FDBB@smartserver.smartshare.dk> In-Reply-To: <9af226cf-54c0-da6c-e572-324060b0c69a@arknetworks.am> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] mbuf: de-inline sanity checking a reinitialized mbuf Thread-Index: Adv4/LSkTxhrwyjGRD6evGtJrOefkQAWposg References: <20250719102315.435921-1-mb@smartsharesystems.com> <98CBD80474FA8B44BF855DF32C47DC35E9FDB9@smartserver.smartshare.dk> <9af226cf-54c0-da6c-e572-324060b0c69a@arknetworks.am> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ivan Malov" Cc: , "Thomas Monjalon" , "Stephen Hemminger" , "Bruce Richardson" , "Konstantin Ananyev" , "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 PiBGcm9tOiBJdmFuIE1hbG92IFttYWlsdG86aXZhbi5tYWxvdkBhcmtuZXR3b3Jrcy5hbV0NCj4g U2VudDogU3VuZGF5LCAyMCBKdWx5IDIwMjUgMDAuMzANCj4gDQo+IEhpIE1vcnRlbiwNCj4gDQo+ IE9uIFNhdCwgMTkgSnVsIDIwMjUsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiANCj4gPj4gRnJv bTogTW9ydGVuIEJyw7hydXAgW21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+ID4+ IFNlbnQ6IFNhdHVyZGF5LCAxOSBKdWx5IDIwMjUgMTIuMjMNCj4gPj4NCj4gPj4gU2FuaXR5IGNo ZWNraW5nIGEgcmVpbml0aWFsaXplZCBtYnVmIChhLmsuYS4gcmF3IG1idWYpIGhhcyBiZWVuDQo+ ID4+IHJlZmFjdG9yZWQNCj4gPj4gdG8gZm9sbG93IHRoZSBzYW1lIGRlc2lnbiBwYXR0ZXJuIGFz IHNhbml0eSBjaGVja2luZyBhIG5vcm1hbCBtYnVmLA0KPiBhbmQNCj4gPj4gbm93IGRlcGVuZHMg b24gUlRFX0xJQlJURV9NQlVGX0RFQlVHIGluc3RlYWQgb2YgUlRFX0VOQUJMRV9BU1NFUlQuDQo+ ID4+DQo+ID4+IFRoZSBkZXRhaWxzIG9mIHRoZSBjaGFuZ2VzIGFyZSBhcyBmb2xsb3dzOg0KPiA+ Pg0KPiA+PiBOb24taW5saW5lZCBmdW5jdGlvbnMgcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaygp IGFuZA0KPiA+PiBydGVfbWJ1Zl9yYXdfY2hlY2soKQ0KPiA+PiBoYXZlIGJlZW4gYWRkZWQuDQo+ ID4+IFRoZXkgZG8gZm9yIGEgcmVpbml0aWFsaXplZCBtYnVmIHdoYXQgcnRlX21idWZfc2FuaXR5 X2NoZWNrKCkgYW5kDQo+ID4+IHJ0ZV9tYnVmX2NoZWNrKCkgZG8gZm9yIGEgbm9ybWFsIG1idWYu DQo+ID4+IFRoZXkgYmFzaWNhbGx5IGNoZWNrIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMNCj4gPj4g X19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKCkNCj4gPj4gcHJldmlvdXNseSBkaWQsIGJ1dCB1 c2UgImlmICghY29uZGl0aW9uKSBydGVfcGFuaWMobWVzc2FnZSkiIGluc3RlYWQNCj4gb2YNCj4g Pj4gUlRFX0FTU1NFUlQoKSwgc28gdGhleSBkb24ndCBkZXBlbmQgb24gUlRFX0VOQUJMRV9BU1NF UlQuDQo+ID4+DQo+ID4+IFRoZSBpbmxpbmUgZnVuY3Rpb24gX19ydGVfbWJ1Zl9yYXdfc2FuaXR5 X2NoZWNrKCkgaGFzIGJlZW4gcmVwbGFjZWQNCj4gPj4gYnkgdGhlIG5ldyBtYWNybyBfX3J0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAoKSwgd2hpY2ggZWl0aGVyIGNhbGxzDQo+ID4+IHJ0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2soKSBvciBkb2VzIG5vdGhpbmcsIGRlcGVuZGluZyBvbg0KPiA+ PiBSVEVfTElCUlRFX01CVUZfREVCVUcsIGp1c3QgbGlrZSB0aGUgX19ydGVfbWJ1Zl9zYW5pdHlf Y2hlY2soKSBtYWNybw0KPiA+PiBkb2VzDQo+ID4+IGZvciBhIG5vcm1hbCBtYnVmLg0KPiA+Pg0K PiA+PiBOb3RlIHRoYXQgdGhlIG5ldyBtYWNybyBfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tf bXAoKSB0YWtlcyBhbg0KPiA+PiBvcHRpb25hbA0KPiA+PiBtZW1wb29sIHBhcmFtZXRlciB0byB2 ZXJpZnkgdGhhdCB0aGUgbWJ1ZiBiZWxvbmdzIHRvIHRoZSBleHBlY3RlZA0KPiBtYnVmDQo+ID4+ IHBvb2wuDQo+ID4+IFRoaXMgYWRkaXRpb24gaXMgbWFpbmx5IHJlbGV2YW50IGZvciBzYW5pdHkg Y2hlY2tpbmcgcmVpbml0aWFsaXplZA0KPiBtYnVmcw0KPiA+PiBmcmVlZCBkaXJlY3RseSBpbnRv IGEgZ2l2ZW4gbWVtcG9vbCBieSBhIFBNRCB3aGVuIHVzaW5nDQo+ID4+IFJURV9FVEhfVFhfT0ZG TE9BRF9NQlVGX0ZBU1RfRlJFRS4NCj4gPj4NCj4gPj4gVGhlIG1hY3JvIF9fcnRlX21idWZfcmF3 X3Nhbml0eV9jaGVjaygpIGhhcyBiZWVuIGtlcHQgZm9yIGJhY2t3YXJkcw0KPiBBUEkNCj4gPj4g Y29tcGF0aWJpbGl0eS4NCj4gPj4gSXQgc2ltcGx5IGNhbGxzIF9fcnRlX21idWZfcmF3X3Nhbml0 eV9jaGVja19tcCgpIHdpdGhvdXQgc3BlY2lmeWluZyBhDQo+ID4+IG1lbXBvb2wuDQo+ID4+DQo+ ID4+IFNpZ25lZC1vZmYtYnk6IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5j b20+DQo+ID4NCj4gPiBCdWlsZGluZyB0aGlzIHdpdGggUlRFX0xJQlJURV9NQlVGX0RFQlVHIDEg aW4gcnRlX2NvbmZpZy5oIHNwZXdzIG91dA0KPiB3YXJuaW5ncyBsaWtlOg0KPiANCj4gT2RkbHks IGZvciBtZSwgYnVpbGRpbmcgRFBESyB0aGlzIHdheSBkb2VzIG5vdCByZXN1bHQgaW4gc2ltaWxh cg0KPiB3YXJuaW5ncy4NCj4gT1M6IERlYmlhbiAxMiwgZ2NjIChEZWJpYW4gMTIuMi4wLTE0KSAx Mi4yLjAsIG1lc29uIDEuMC4xLCBuaW5qYSAxLjExLjEuDQo+IA0KPiBNYXkgYmUgSSdtIG1pc3Np bmcgc29tZXRoaW5nLg0KDQpCdWlsZCBjb21tYW5kczoNCm1lc29uIHNldHVwIC1EcGxhdGZvcm09 Z2VuZXJpYyAtRG1heF9udW1hX25vZGVzPTEgLURjaGVja19pbmNsdWRlcz10cnVlIGJ1aWxkDQpu aW5qYSAtQyBidWlsZA0KDQpPUzogVWJ1bnR1IDI0LjA0LjIgTFRTIChHTlUvTGludXggNi44LjAt NjAtZ2VuZXJpYyB4ODZfNjQpLCBnY2MgKFVidW50dSAxMy4zLjAtNnVidW50dTJ+MjQuMDQpIDEz LjMuMCwgbWVzb24gMS4zLjIsIG5pbmphIDEuMTEuMS4NCg0KZGlmZiAtLWdpdCBhL2NvbmZpZy9y dGVfY29uZmlnLmggYi9jb25maWcvcnRlX2NvbmZpZy5oDQppbmRleCAwNTM0NGUyNjE5Li5mMWFk N2YwOWRlIDEwMDY0NA0KLS0tIGEvY29uZmlnL3J0ZV9jb25maWcuaA0KKysrIGIvY29uZmlnL3J0 ZV9jb25maWcuaA0KQEAgLTY0LDYgKzY0LDcgQEANCg0KIC8qIG1idWYgZGVmaW5lcyAqLw0KICNk ZWZpbmUgUlRFX01CVUZfREVGQVVMVF9NRU1QT09MX09QUyAicmluZ19tcF9tYyINCisjZGVmaW5l IFJURV9MSUJSVEVfTUJVRl9ERUJVRyAxIC8qIGRlZmF1bHQgbm90IHNldCAqLw0KDQogLyogZXRo ZXIgZGVmaW5lcyAqLw0KICNkZWZpbmUgUlRFX01BWF9RVUVVRVNfUEVSX1BPUlQgMTAyNA0KDQo+ IA0KPiBUaGFuayB5b3UuDQo+IA0KPiA+DQo+ID4gLi4vbGliL21idWYvcnRlX21idWYuaDogSW4g ZnVuY3Rpb24g4oCYcnRlX21idWZfcmF3X2ZyZWXigJk6DQo+ID4gLi4vbGliL21idWYvcnRlX21i dWYuaDo3MDA6OTogd2FybmluZzog4oCYcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja+KAmSBpcw0K PiBkZXByZWNhdGVkOiBTeW1ib2wgaXMgbm90IHlldCBwYXJ0IG9mIHN0YWJsZSBBQkkgWy1XZGVw cmVjYXRlZC0NCj4gZGVjbGFyYXRpb25zXQ0KPiA+ICA3MDAgfCAgICAgICAgIF9fcnRlX21idWZf cmF3X3Nhbml0eV9jaGVja19tcChtLCBOVUxMKTsNCj4gPiAgICAgIHwgICAgICAgICBefn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiAuLi9saWIvbWJ1Zi9ydGVfbWJ1Zi5oOjU0Mjox OiBub3RlOiBkZWNsYXJlZCBoZXJlDQo+ID4gIDU0MiB8IHJ0ZV9tYnVmX3Jhd19zYW5pdHlfY2hl Y2soY29uc3Qgc3RydWN0IHJ0ZV9tYnVmICptLCBjb25zdA0KPiBzdHJ1Y3QgcnRlX21lbXBvb2wg Km1wKTsNCj4gPiAgICAgIHwgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiA+DQo+ID4gRXhw b3J0aW5nIHRoZSBuZXcgQVBJcyBhcyBub24tZXhwZXJpbWVudGFsIChpLmUuIHVzaW5nDQo+IFJU RV9FWFBPUlRfU1lNQk9MKCkgaW5zdGVhZCBvZiBSVEVfRVhQT1JUX0VYUEVSSU1FTlRBTF9TWU1C T0woKSBpbiB0aGUgQw0KPiBmaWxlLCBhbmQgb21pdHRpbmcgX19ydGVfZXhwZXJpbWVudGFsIGlu IHRoZSBoZWFkZXIgZmlsZSwgYXMgc2hvd24NCj4gYmVsb3cpIHdvcmtzLCBidXQgaXMgdGhhdCBh Y2NlcHRhYmxlPw0KPiA+DQo+ID4gT3IgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5IG9mIGF2b2lkaW5n IHRoZXNlIHdhcm5pbmdzPw0KPiA+DQo+ID4+IC0tLQ0KPiA+PiAgbGliL21idWYvcnRlX21idWYu YyB8ICA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+PiAgbGliL21idWYvcnRlX21i dWYuaCB8IDEwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0NCj4g LS0NCj4gPj4gIDIgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9u cygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL21idWYvcnRlX21idWYuYyBiL2xpYi9t YnVmL3J0ZV9tYnVmLmMNCj4gPj4gaW5kZXggOWU3NzMxYThhMi4uZmY0ZGI3M2I1MCAxMDA2NDQN Cj4gPj4gLS0tIGEvbGliL21idWYvcnRlX21idWYuYw0KPiA+PiArKysgYi9saWIvbWJ1Zi9ydGVf bWJ1Zi5jDQo+ID4+IEBAIC0zNzMsNiArMzczLDY3IEBAIHJ0ZV9wa3RtYnVmX3Bvb2xfY3JlYXRl X2V4dGJ1Zihjb25zdCBjaGFyICpuYW1lLA0KPiA+PiB1bnNpZ25lZCBpbnQgbiwNCj4gPj4gIAly ZXR1cm4gbXA7DQo+ID4+ICB9DQo+ID4+DQo+ID4+ICsvKiBkbyBzb21lIHNhbml0eSBjaGVja3Mg b24gYSByZWluaXRpYWxpemVkIG1idWY6IHBhbmljIGlmIGl0IGZhaWxzDQo+ICovDQo+ID4+ICtS VEVfRVhQT1JUX0VYUEVSSU1FTlRBTF9TWU1CT0wocnRlX21idWZfcmF3X3Nhbml0eV9jaGVjaywg MjUuMTEpDQo+ID4NCj4gPiArLy8gUlRFX0VYUE9SVF9FWFBFUklNRU5UQUxfU1lNQk9MKHJ0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2ssIDI1LjExKQ0KPiA+ICtSVEVfRVhQT1JUX1NZTUJPTChydGVf bWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKQ0KPiA+DQo+ID4+ICt2b2lkDQo+ID4+ICtydGVfbWJ1Zl9y YXdfc2FuaXR5X2NoZWNrKGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwgY29uc3Qgc3RydWN0DQo+ ID4+IHJ0ZV9tZW1wb29sICptcCkNCj4gPj4gK3sNCj4gPj4gKwljb25zdCBjaGFyICpyZWFzb247 DQo+ID4+ICsNCj4gPj4gKwlpZiAocnRlX21idWZfcmF3X2NoZWNrKG0sIG1wLCAmcmVhc29uKSkN Cj4gPj4gKwkJcnRlX3BhbmljKCIlc1xuIiwgcmVhc29uKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+ PiArUlRFX0VYUE9SVF9FWFBFUklNRU5UQUxfU1lNQk9MKHJ0ZV9tYnVmX3Jhd19jaGVjaywgMjUu MTEpDQo+ID4NCj4gPiArLy8gUlRFX0VYUE9SVF9FWFBFUklNRU5UQUxfU1lNQk9MKHJ0ZV9tYnVm X3Jhd19jaGVjaywgMjUuMTEpDQo+ID4gK1JURV9FWFBPUlRfU1lNQk9MKHJ0ZV9tYnVmX3Jhd19j aGVjaykNCj4gPg0KPiA+PiAraW50IHJ0ZV9tYnVmX3Jhd19jaGVjayhjb25zdCBzdHJ1Y3QgcnRl X21idWYgKm0sIGNvbnN0IHN0cnVjdA0KPiA+PiBydGVfbWVtcG9vbCAqbXAsDQo+ID4+ICsJCSAg IGNvbnN0IGNoYXIgKipyZWFzb24pDQo+ID4+ICt7DQo+ID4+ICsJLyogY2hlY2sgc2FuaXR5ICov DQo+ID4+ICsJaWYgKHJ0ZV9tYnVmX2NoZWNrKG0sIDAsIHJlYXNvbikgPT0gLTEpDQo+ID4+ICsJ CXJldHVybiAtMTsNCj4gPj4gKw0KPiA+PiArCS8qIGNoZWNrIGluaXRpYWxpemVkICovDQo+ID4+ ICsJaWYgKHJ0ZV9tYnVmX3JlZmNudF9yZWFkKG0pICE9IDEpIHsNCj4gPj4gKwkJKnJlYXNvbiA9 ICJ1bmluaXRpYWxpemVkIHJlZiBjbnQiOw0KPiA+PiArCQlyZXR1cm4gLTE7DQo+ID4+ICsJfQ0K PiA+PiArCWlmIChtLT5uZXh0ICE9IE5VTEwpIHsNCj4gPj4gKwkJKnJlYXNvbiA9ICJ1bmluaXRp YWxpemVkIG5leHQgcHRyIjsNCj4gPj4gKwkJcmV0dXJuIC0xOw0KPiA+PiArCX0NCj4gPj4gKwlp ZiAobS0+bmJfc2VncyAhPSAxKSB7DQo+ID4+ICsJCSpyZWFzb24gPSAidW5pbml0aWFsaXplZCBu Yl9zZWdzIjsNCj4gPj4gKwkJcmV0dXJuIC0xOw0KPiA+PiArCX0NCj4gPj4gKwlpZiAoUlRFX01C VUZfQ0xPTkVEKG0pKSB7DQo+ID4+ICsJCSpyZWFzb24gPSAiY2xvbmVkIjsNCj4gPj4gKwkJcmV0 dXJuIC0xOw0KPiA+PiArCX0NCj4gPj4gKwlpZiAoUlRFX01CVUZfSEFTX0VYVEJVRihtKSkgew0K PiA+PiArCQlpZiAoIVJURV9NQlVGX0hBU19QSU5ORURfRVhUQlVGKG0pKSB7DQo+ID4+ICsJCQkq cmVhc29uID0gImV4dGVybmFsIGJ1ZmZlciBub3QgcGlubmVkIjsNCj4gPj4gKwkJCXJldHVybiAt MTsNCj4gPj4gKwkJfQ0KPiA+PiArDQo+ID4+ICsJCXVpbnQxNl90IGNudCA9IHJ0ZV9tYnVmX2V4 dF9yZWZjbnRfcmVhZChtLT5zaGluZm8pOw0KPiA+PiArCQlpZiAoKGNudCA9PSAwKSB8fCAoY250 ID09IFVJTlQxNl9NQVgpKSB7DQo+ID4+ICsJCQkqcmVhc29uID0gInBpbm5lZCBleHRlcm5hbCBi dWZmZXIgYmFkIHJlZiBjbnQiOw0KPiA+PiArCQkJcmV0dXJuIC0xOw0KPiA+PiArCQl9DQo+ID4+ ICsJCWlmIChjbnQgIT0gMSkgew0KPiA+PiArCQkJKnJlYXNvbiA9ICJwaW5uZWQgZXh0ZXJuYWwg YnVmZmVyIHVuaW5pdGlhbGl6ZWQgcmVmDQo+ID4+IGNudCI7DQo+ID4+ICsJCQlyZXR1cm4gLTE7 DQo+ID4+ICsJCX0NCj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwlpZiAobXAgIT0gTlVMTCAmJiBt LT5wb29sICE9IG1wKSB7DQo+ID4+ICsJCSpyZWFzb24gPSAid3JvbmcgbWJ1ZiBwb29sIjsNCj4g Pj4gKwkJcmV0dXJuIC0xOw0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArCXJldHVybiAwOw0KPiA+ PiArfQ0KPiA+PiArDQo+ID4+ICAvKiBkbyBzb21lIHNhbml0eSBjaGVja3Mgb24gYSBtYnVmOiBw YW5pYyBpZiBpdCBmYWlscyAqLw0KPiA+PiAgUlRFX0VYUE9SVF9TWU1CT0wocnRlX21idWZfc2Fu aXR5X2NoZWNrKQ0KPiA+PiAgdm9pZA0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL21idWYvcnRlX21i dWYuaCBiL2xpYi9tYnVmL3J0ZV9tYnVmLmgNCj4gPj4gaW5kZXggMDZhYjc1MDJhNS4uMjYyMWNj Mzg1YyAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL21idWYvcnRlX21idWYuaA0KPiA+PiArKysgYi9s aWIvbWJ1Zi9ydGVfbWJ1Zi5oDQo+ID4+IEBAIC0zMzksMTEgKzMzOSwxNyBAQCBydGVfcGt0bWJ1 Zl9wcml2X2ZsYWdzKHN0cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ID4+DQo+ID4+ICAjaWZkZWYg UlRFX0xJQlJURV9NQlVGX0RFQlVHDQo+ID4+DQo+ID4+ICsvKiogIGNoZWNrIHJlaW5pdGlhbGl6 ZWQgbWJ1ZiB0eXBlIGluIGRlYnVnIG1vZGUgKi8NCj4gPj4gKyNkZWZpbmUgX19ydGVfbWJ1Zl9y YXdfc2FuaXR5X2NoZWNrX21wKG0sIG1wKQ0KPiA+PiBydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNr KG0sIG1wKQ0KPiA+PiArDQo+ID4+ICAvKiogIGNoZWNrIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2Rl ICovDQo+ID4+ICAjZGVmaW5lIF9fcnRlX21idWZfc2FuaXR5X2NoZWNrKG0sIGlzX2gpIHJ0ZV9t YnVmX3Nhbml0eV9jaGVjayhtLA0KPiBpc19oKQ0KPiA+Pg0KPiA+PiAgI2Vsc2UgLyogIFJURV9M SUJSVEVfTUJVRl9ERUJVRyAqLw0KPiA+Pg0KPiA+PiArLyoqICBjaGVjayByZWluaXRpYWxpemVk IG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2RlICovDQo+ID4+ICsjZGVmaW5lIF9fcnRlX21idWZfcmF3 X3Nhbml0eV9jaGVja19tcChtLCBtcCkgZG8geyB9IHdoaWxlICgwKQ0KPiA+PiArDQo+ID4+ICAv KiogIGNoZWNrIG1idWYgdHlwZSBpbiBkZWJ1ZyBtb2RlICovDQo+ID4+ICAjZGVmaW5lIF9fcnRl X21idWZfc2FuaXR5X2NoZWNrKG0sIGlzX2gpIGRvIHsgfSB3aGlsZSAoMCkNCj4gPj4NCj4gPj4g QEAgLTUxMyw2ICs1MTksNTQgQEAgcnRlX21idWZfZXh0X3JlZmNudF91cGRhdGUoc3RydWN0DQo+ ID4+IHJ0ZV9tYnVmX2V4dF9zaGFyZWRfaW5mbyAqc2hpbmZvLA0KPiA+PiAgfSB3aGlsZSAoMCkN Cj4gPj4NCj4gPj4NCj4gPj4gKy8qKg0KPiA+PiArICogQHdhcm5pbmcNCj4gPj4gKyAqIEBiIEVY UEVSSU1FTlRBTDogVGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dA0K PiBwcmlvcg0KPiA+PiBub3RpY2UuDQo+ID4+ICsgKg0KPiA+PiArICogU2FuaXR5IGNoZWNrcyBv biBhIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4NCj4gPj4gKyAqDQo+ID4+ICsgKiBDaGVjayB0aGUgY29u c2lzdGVuY3kgb2YgdGhlIGdpdmVuIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4NCj4gPj4gKyAqIFRoZSBm dW5jdGlvbiB3aWxsIGNhdXNlIGEgcGFuaWMgaWYgY29ycnVwdGlvbiBpcyBkZXRlY3RlZC4NCj4g Pj4gKyAqDQo+ID4+ICsgKiBDaGVjayB0aGF0IHRoZSBtYnVmIGlzIHByb3Blcmx5IHJlaW5pdGlh bGl6ZWQgKHJlZmNudD0xLA0KPiBuZXh0PU5VTEwsDQo+ID4+ICsgKiBuYl9zZWdzPTEpLCBhcyBk b25lIGJ5IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKCkuDQo+ID4+ICsgKg0KPiA+PiArICogQHBh cmFtIG0NCj4gPj4gKyAqICAgVGhlIG1idWYgdG8gYmUgY2hlY2tlZC4NCj4gPj4gKyAqIEBwYXJh bSBtcA0KPiA+PiArICogICBUaGUgbWVtcG9vbCB0byB3aGljaCB0aGUgbWJ1ZiBiZWxvbmdzLg0K PiA+PiArICogICBOVUxMIGlmIHVua25vd24sIG5vdCB0byBiZSBjaGVja2VkLg0KPiA+PiArICov DQo+ID4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPg0KPiA+ICsvLyBfX3J0ZV9leHBlcmltZW50 YWwNCj4gPg0KPiA+PiArdm9pZA0KPiA+PiArcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjayhjb25z dCBzdHJ1Y3QgcnRlX21idWYgKm0sIGNvbnN0IHN0cnVjdA0KPiA+PiBydGVfbWVtcG9vbCAqbXAp Ow0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAqIEB3YXJuaW5nDQo+ID4+ICsgKiBAYiBFWFBF UklNRU5UQUw6IFRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQNCj4g cHJpb3INCj4gPj4gbm90aWNlLg0KPiA+PiArICoNCj4gPj4gKyAqIFNhbml0eSBjaGVja3Mgb24g YSByZWluaXRpYWxpemVkIG1idWYuDQo+ID4+ICsgKg0KPiA+PiArICogQWxtb3N0IGxpa2UgcnRl X21idWZfcmF3X3Nhbml0eV9jaGVjaygpLCBidXQgdGhpcyBmdW5jdGlvbiBnaXZlcw0KPiB0aGUN Cj4gPj4gcmVhc29uDQo+ID4+ICsgKiBpZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkIHJhdGhlciB0 aGFuIHBhbmljLg0KPiA+PiArICoNCj4gPj4gKyAqIEBwYXJhbSBtDQo+ID4+ICsgKiAgIFRoZSBt YnVmIHRvIGJlIGNoZWNrZWQuDQo+ID4+ICsgKiBAcGFyYW0gbXANCj4gPj4gKyAqICAgVGhlIG1l bXBvb2wgdG8gd2hpY2ggdGhlIG1idWYgYmVsb25ncy4NCj4gPj4gKyAqICAgTlVMTCBpZiB1bmtu b3duLCBub3QgdG8gYmUgY2hlY2tlZC4NCj4gPj4gKyAqIEBwYXJhbSByZWFzb24NCj4gPj4gKyAq ICAgQSByZWZlcmVuY2UgdG8gYSBzdHJpbmcgcG9pbnRlciB3aGVyZSB0byBzdG9yZSB0aGUgcmVh c29uIHdoeSBhDQo+ID4+IG1idWYgaXMNCj4gPj4gKyAqICAgY29uc2lkZXJlZCBpbnZhbGlkLg0K PiA+PiArICogQHJldHVybg0KPiA+PiArICogICAtIDAgaWYgbm8gaXNzdWUgaGFzIGJlZW4gZm91 bmQsIHJlYXNvbiBpcyBsZWZ0IHVudG91Y2hlZC4NCj4gPj4gKyAqICAgLSAtMSBpZiBhIHByb2Js ZW0gaXMgZGV0ZWN0ZWQsIHJlYXNvbiB0aGVuIHBvaW50cyB0byBhIHN0cmluZw0KPiA+PiBkZXNj cmliaW5nDQo+ID4+ICsgKiAgICAgdGhlIHJlYXNvbiB3aHkgdGhlIG1idWYgaXMgZGVlbWVkIGlu dmFsaWQuDQo+ID4+ICsgKi8NCj4gPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+DQo+ID4gKy8v IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiA+DQo+ID4+ICtpbnQgcnRlX21idWZfcmF3X2NoZWNrKGNv bnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwgY29uc3Qgc3RydWN0DQo+ID4+IHJ0ZV9tZW1wb29sICpt cCwNCj4gPj4gKwkJICAgY29uc3QgY2hhciAqKnJlYXNvbik7DQo+ID4+ICsNCj4gPj4gIC8qKg0K PiA+PiAgICogU2FuaXR5IGNoZWNrcyBvbiBhbiBtYnVmLg0KPiA+PiAgICoNCj4gPj4gQEAgLTU1 MCwzMyArNjA0LDExIEBAIHJ0ZV9tYnVmX3Nhbml0eV9jaGVjayhjb25zdCBzdHJ1Y3QgcnRlX21i dWYgKm0sDQo+ID4+IGludCBpc19oZWFkZXIpOw0KPiA+PiAgaW50IHJ0ZV9tYnVmX2NoZWNrKGNv bnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwgaW50IGlzX2hlYWRlciwNCj4gPj4gIAkJICAgY29uc3Qg Y2hhciAqKnJlYXNvbik7DQo+ID4+DQo+ID4+IC0vKioNCj4gPj4gLSAqIFNhbml0eSBjaGVja3Mg b24gYSByZWluaXRpYWxpemVkIG1idWYgaW4gZGVidWcgbW9kZS4NCj4gPj4gLSAqDQo+ID4+IC0g KiBDaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGdpdmVuIHJlaW5pdGlhbGl6ZWQgbWJ1Zi4N Cj4gPj4gLSAqIFRoZSBmdW5jdGlvbiB3aWxsIGNhdXNlIGEgcGFuaWMgaWYgY29ycnVwdGlvbiBp cyBkZXRlY3RlZC4NCj4gPj4gLSAqDQo+ID4+IC0gKiBDaGVjayB0aGF0IHRoZSBtYnVmIGlzIHBy b3Blcmx5IHJlaW5pdGlhbGl6ZWQgKHJlZmNudD0xLA0KPiBuZXh0PU5VTEwsDQo+ID4+IC0gKiBu Yl9zZWdzPTEpLCBhcyBkb25lIGJ5IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKCkuDQo+ID4+IC0g Kg0KPiA+PiAtICogQHBhcmFtIG0NCj4gPj4gLSAqICAgVGhlIG1idWYgdG8gYmUgY2hlY2tlZC4N Cj4gPj4gLSAqLw0KPiA+PiAtc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiA+PiAt X19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKF9fcnRlX3VudXNlZCBjb25zdCBzdHJ1Y3QgcnRl X21idWYgKm0pDQo+ID4+IC17DQo+ID4+IC0JUlRFX0FTU0VSVChydGVfbWJ1Zl9yZWZjbnRfcmVh ZChtKSA9PSAxKTsNCj4gPj4gLQlSVEVfQVNTRVJUKG0tPm5leHQgPT0gTlVMTCk7DQo+ID4+IC0J UlRFX0FTU0VSVChtLT5uYl9zZWdzID09IDEpOw0KPiA+PiAtCVJURV9BU1NFUlQoIVJURV9NQlVG X0NMT05FRChtKSk7DQo+ID4+IC0JUlRFX0FTU0VSVCghUlRFX01CVUZfSEFTX0VYVEJVRihtKSB8 fA0KPiA+PiAtCQkJKFJURV9NQlVGX0hBU19QSU5ORURfRVhUQlVGKG0pICYmDQo+ID4+IC0JCQly dGVfbWJ1Zl9leHRfcmVmY250X3JlYWQobS0+c2hpbmZvKSA9PSAxKSk7DQo+ID4+IC0JX19ydGVf bWJ1Zl9zYW5pdHlfY2hlY2sobSwgMCk7DQo+ID4+IC19DQo+ID4+ICsvKiogRm9yIGJhY2t3YXJk cyBjb21wYXRpYmlsaXR5LiAqLw0KPiA+PiArI2RlZmluZSBfX3J0ZV9tYnVmX3Jhd19zYW5pdHlf Y2hlY2sobSkNCj4gPj4gX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG0sIE5VTEwpDQo+ ID4+DQo+ID4+ICAvKiogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqLw0KPiA+PiAtI2Rl ZmluZSBNQlVGX1JBV19BTExPQ19DSEVDSyhtKSBfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2so bSkNCj4gPj4gKyNkZWZpbmUgTUJVRl9SQVdfQUxMT0NfQ0hFQ0sobSkgX19ydGVfbWJ1Zl9yYXdf c2FuaXR5X2NoZWNrX21wKG0sDQo+IE5VTEwpDQo+ID4+DQo+ID4+ICAvKioNCj4gPj4gICAqIEFs bG9jYXRlIGFuIHVuaW5pdGlhbGl6ZWQgbWJ1ZiBmcm9tIG1lbXBvb2wgKm1wKi4NCj4gPj4gQEAg LTYwNiw3ICs2MzgsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBydGVfbWJ1Zg0KPiA+PiAqcnRl X21idWZfcmF3X2FsbG9jKHN0cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ID4+DQo+ID4+ICAJaWYg KHJ0ZV9tZW1wb29sX2dldChtcCwgJnJldC5wdHIpIDwgMCkNCj4gPj4gIAkJcmV0dXJuIE5VTEw7 DQo+ID4+IC0JX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKHJldC5tKTsNCj4gPj4gKwlfX3J0 ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAocmV0Lm0sIG1wKTsNCj4gPj4gIAlyZXR1cm4gcmV0 Lm07DQo+ID4+ICB9DQo+ID4+DQo+ID4+IEBAIC02NDQsNyArNjc2LDcgQEAgcnRlX21idWZfcmF3 X2FsbG9jX2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwNCj4gPj4gc3RydWN0IHJ0ZV9tYnVm ICoqbWJ1ZnMsIHVuc2lnbmUNCj4gPj4gIAlpbnQgcmMgPSBydGVfbWVtcG9vbF9nZXRfYnVsayht cCwgKHZvaWQgKiopbWJ1ZnMsIGNvdW50KTsNCj4gPj4gIAlpZiAobGlrZWx5KHJjID09IDApKQ0K PiA+PiAgCQlmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHggPCBjb3VudDsgaWR4KyspDQo+ ID4+IC0JCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobWJ1ZnNbaWR4XSk7DQo+ID4+ICsJ CQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobWJ1ZnNbaWR4XSwgbXApOw0KPiA+PiAg CXJldHVybiByYzsNCj4gPj4gIH0NCj4gPj4NCj4gPj4gQEAgLTY2NSw3ICs2OTcsNyBAQCBydGVf bWJ1Zl9yYXdfYWxsb2NfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0KPiA+PiBzdHJ1Y3Qg cnRlX21idWYgKiptYnVmcywgdW5zaWduZQ0KPiA+PiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxp bmUgdm9pZA0KPiA+PiAgcnRlX21idWZfcmF3X2ZyZWUoc3RydWN0IHJ0ZV9tYnVmICptKQ0KPiA+ PiAgew0KPiA+PiAtCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVjayhtKTsNCj4gPj4gKwlfX3J0 ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobSwgTlVMTCk7DQo+ID4+ICAJcnRlX21lbXBvb2xf cHV0KG0tPnBvb2wsIG0pOw0KPiA+PiAgfQ0KPiA+Pg0KPiA+PiBAQCAtNjk2LDEyICs3MjgsOCBA QCBfX3J0ZV9leHBlcmltZW50YWwNCj4gPj4gIHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZv aWQNCj4gPj4gIHJ0ZV9tYnVmX3Jhd19mcmVlX2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwg c3RydWN0IHJ0ZV9tYnVmDQo+ICoqbWJ1ZnMsDQo+ID4+IHVuc2lnbmVkIGludCBjb3VudCkNCj4g Pj4gIHsNCj4gPj4gLQlmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHggPCBjb3VudDsgaWR4 KyspIHsNCj4gPj4gLQkJY29uc3Qgc3RydWN0IHJ0ZV9tYnVmICptID0gbWJ1ZnNbaWR4XTsNCj4g Pj4gLQkJUlRFX0FTU0VSVChtICE9IE5VTEwpOw0KPiA+PiAtCQlSVEVfQVNTRVJUKG0tPnBvb2wg PT0gbXApOw0KPiA+PiAtCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobSk7DQo+ID4+IC0J fQ0KPiA+PiArCWZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IGNvdW50OyBpZHgrKykN Cj4gPj4gKwkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG1idWZzW2lkeF0sIG1wKTsN Cj4gPj4NCj4gPj4gIAlydGVfbWVtcG9vbF9wdXRfYnVsayhtcCwgKHZvaWQgKiopbWJ1ZnMsIGNv dW50KTsNCj4gPj4gIH0NCj4gPj4gQEAgLTEwMjEsMjIgKzEwNDksMjIgQEAgc3RhdGljIGlubGlu ZSBpbnQNCj4gcnRlX3BrdG1idWZfYWxsb2NfYnVsayhzdHJ1Y3QNCj4gPj4gcnRlX21lbXBvb2wg KnBvb2wsDQo+ID4+ICAJc3dpdGNoIChjb3VudCAlIDQpIHsNCj4gPj4gIAljYXNlIDA6DQo+ID4+ ICAJCXdoaWxlIChpZHggIT0gY291bnQpIHsNCj4gPj4gLQkJCV9fcnRlX21idWZfcmF3X3Nhbml0 eV9jaGVjayhtYnVmc1tpZHhdKTsNCj4gPj4gKwkJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVj a19tcChtYnVmc1tpZHhdLCBwb29sKTsNCj4gPj4gIAkJCXJ0ZV9wa3RtYnVmX3Jlc2V0KG1idWZz W2lkeF0pOw0KPiA+PiAgCQkJaWR4Kys7DQo+ID4+ICAJCQkvKiBmYWxsLXRocm91Z2ggKi8NCj4g Pj4gIAljYXNlIDM6DQo+ID4+IC0JCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2sobWJ1ZnNb aWR4XSk7DQo+ID4+ICsJCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAobWJ1ZnNbaWR4 XSwgcG9vbCk7DQo+ID4+ICAJCQlydGVfcGt0bWJ1Zl9yZXNldChtYnVmc1tpZHhdKTsNCj4gPj4g IAkJCWlkeCsrOw0KPiA+PiAgCQkJLyogZmFsbC10aHJvdWdoICovDQo+ID4+ICAJY2FzZSAyOg0K PiA+PiAtCQkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKG1idWZzW2lkeF0pOw0KPiA+PiAr CQkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKG1idWZzW2lkeF0sIHBvb2wpOw0KPiA+ PiAgCQkJcnRlX3BrdG1idWZfcmVzZXQobWJ1ZnNbaWR4XSk7DQo+ID4+ICAJCQlpZHgrKzsNCj4g Pj4gIAkJCS8qIGZhbGwtdGhyb3VnaCAqLw0KPiA+PiAgCWNhc2UgMToNCj4gPj4gLQkJCV9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVjayhtYnVmc1tpZHhdKTsNCj4gPj4gKwkJCV9fcnRlX21idWZf cmF3X3Nhbml0eV9jaGVja19tcChtYnVmc1tpZHhdLCBwb29sKTsNCj4gPj4gIAkJCXJ0ZV9wa3Rt YnVmX3Jlc2V0KG1idWZzW2lkeF0pOw0KPiA+PiAgCQkJaWR4Kys7DQo+ID4+ICAJCQkvKiBmYWxs LXRocm91Z2ggKi8NCj4gPj4gLS0NCj4gPj4gMi40My4wDQo+ID4NCj4gPg0K