From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Mullins Subject: Re: [PATCH bpf-next v2] bpf: support raw tracepoints in modules Date: Thu, 13 Dec 2018 19:38:51 +0000 Message-ID: <7fcf04f0f46d4a1df98687312bfc607dd7fffb1c.camel@fb.com> References: <20181213004237.3888568-1-mmullins@fb.com> <20181213192248.ljc6i5unafdlgryf@kafai-mbp> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "linux-kernel@vger.kernel.org" , "daniel@iogearbox.net" , "jeyu@kernel.org" , "rostedt@goodmis.org" , "ast@kernel.org" , Kernel Team , "mingo@redhat.com" , "netdev@vger.kernel.org" To: Martin Lau Return-path: In-Reply-To: <20181213192248.ljc6i5unafdlgryf@kafai-mbp> Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org T24gVGh1LCAyMDE4LTEyLTEzIGF0IDE5OjIyICswMDAwLCBNYXJ0aW4gTGF1IHdyb3RlOg0KPiBP biBXZWQsIERlYyAxMiwgMjAxOCBhdCAwNDo0MjozN1BNIC0wODAwLCBNYXR0IE11bGxpbnMgd3Jv dGU6DQo+ID4gRGlzdHJpYnV0aW9ucyBidWlsZCBkcml2ZXJzIGFzIG1vZHVsZXMsIGluY2x1ZGlu ZyBuZXR3b3JrIGFuZCBmaWxlc3lzdGVtDQo+ID4gZHJpdmVycyB3aGljaCBleHBvcnQgbnVtZXJv dXMgdHJhY2Vwb2ludHMuICBUaGlzIGVuYWJsZXMNCj4gPiBicGYoQlBGX1JBV19UUkFDRVBPSU5U X09QRU4pIHRvIGF0dGFjaCB0byB0aG9zZSB0cmFjZXBvaW50cy4NCj4gPiANCj4gPiBTaWduZWQt b2ZmLWJ5OiBNYXR0IE11bGxpbnMgPG1tdWxsaW5zQGZiLmNvbT4NCj4gPiAtLS0NCj4gPiB2MS0+ djI6DQo+ID4gICAqIGF2b2lkIHRha2luZyB0aGUgbXV0ZXggaW4gYnBmX2V2ZW50X25vdGlmeSB3 aGVuIG9wIGlzIG5laXRoZXIgQ09NSU5HIG5vcg0KPiA+ICAgICBHT0lORy4NCj4gPiAgICogY2hl Y2sgdGhhdCBremFsbG9jIGFjdHVhbGx5IHN1Y2NlZWRlZA0KPiA+IA0KPiA+IEkgZGlkbid0IHRy eSB0byBjaGVjayBsaXN0X2VtcHR5IGJlZm9yZSB0YWtpbmcgdGhlIG11dGV4IHNpbmNlIEkgd2Fu dCB0byBhdm9pZA0KPiA+IHJhY2VzIGJldHdlZW4gYnBmX2V2ZW50X25vdGlmeSBhbmQgYnBmX2dl dF9yYXdfdHJhY2Vwb2ludC4gIEFkZGl0aW9uYWxseSwNCj4gPiBsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSB1cG9uIE1PRFVMRV9TVEFURV9HT0lORywg YnV0DQo+ID4gQWxleGVpIHN1Z2dlc3RlZCBJIHVzZSBpdCB0byBwcm90ZWN0IGFnYWluc3QgZnJh Z2lsaXR5IGlmIHRoZSBzdWJzZXF1ZW50IGJyZWFrOw0KPiA+IGV2ZW50dWFsbHkgZGlzYXBwZWFy cy4NCj4gPiANCj4gPiAgaW5jbHVkZS9saW51eC9tb2R1bGUuaCAgICAgICB8ICA0ICsrDQo+ID4g IGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmggfCAgOCArKy0NCj4gPiAga2VybmVsL2JwZi9z eXNjYWxsLmMgICAgICAgICB8IDExICsrLS0NCj4gPiAga2VybmVsL21vZHVsZS5jICAgICAgICAg ICAgICB8ICA1ICsrDQo+ID4gIGtlcm5lbC90cmFjZS9icGZfdHJhY2UuYyAgICAgfCA5OSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAx MjAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9tb2R1bGUuaCBiL2luY2x1ZGUvbGludXgvbW9kdWxlLmgNCj4gPiBpbmRl eCBmY2U2YjQzMzVlMzYuLjVmMTQ3ZGQ1ZTcwOSAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2xp bnV4L21vZHVsZS5oDQo+ID4gKysrIGIvaW5jbHVkZS9saW51eC9tb2R1bGUuaA0KPiA+IEBAIC00 MzIsNiArNDMyLDEwIEBAIHN0cnVjdCBtb2R1bGUgew0KPiA+ICAJdW5zaWduZWQgaW50IG51bV90 cmFjZXBvaW50czsNCj4gPiAgCXRyYWNlcG9pbnRfcHRyX3QgKnRyYWNlcG9pbnRzX3B0cnM7DQo+ ID4gICNlbmRpZg0KPiA+ICsjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFMNCj4gPiArCXVuc2lnbmVk IGludCBudW1fYnBmX3Jhd19ldmVudHM7DQo+ID4gKwlzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAg KmJwZl9yYXdfZXZlbnRzOw0KPiA+ICsjZW5kaWYNCj4gPiAgI2lmZGVmIEhBVkVfSlVNUF9MQUJF TA0KPiA+ICAJc3RydWN0IGp1bXBfZW50cnkgKmp1bXBfZW50cmllczsNCj4gPiAgCXVuc2lnbmVk IGludCBudW1fanVtcF9lbnRyaWVzOw0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Ry YWNlX2V2ZW50cy5oIGIvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaA0KPiA+IGluZGV4IDQx MzBhNTQ5N2Q0MC4uOGE2MjczMTY3M2Y3IDEwMDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUvbGludXgv dHJhY2VfZXZlbnRzLmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oDQo+ ID4gQEAgLTQ3MSw3ICs0NzEsOCBAQCB2b2lkIHBlcmZfZXZlbnRfZGV0YWNoX2JwZl9wcm9nKHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCk7DQo+ID4gIGludCBwZXJmX2V2ZW50X3F1ZXJ5X3Byb2df YXJyYXkoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB2b2lkIF9fdXNlciAqaW5mbyk7DQo+ID4g IGludCBicGZfcHJvYmVfcmVnaXN0ZXIoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsIHN0 cnVjdCBicGZfcHJvZyAqcHJvZyk7DQo+ID4gIGludCBicGZfcHJvYmVfdW5yZWdpc3RlcihzdHJ1 Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsNCj4gPiAt c3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpicGZfZmluZF9yYXdfdHJhY2Vwb2ludChjb25zdCBj aGFyICpuYW1lKTsNCj4gPiArc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpicGZfZ2V0X3Jhd190 cmFjZXBvaW50KGNvbnN0IGNoYXIgKm5hbWUpOw0KPiA+ICt2b2lkIGJwZl9wdXRfcmF3X3RyYWNl cG9pbnQoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHApOw0KPiA+ICBpbnQgYnBmX2dldF9w ZXJmX2V2ZW50X2luZm8oY29uc3Qgc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1MzIgKnByb2df aWQsDQo+ID4gIAkJCSAgICB1MzIgKmZkX3R5cGUsIGNvbnN0IGNoYXIgKipidWYsDQo+ID4gIAkJ CSAgICB1NjQgKnByb2JlX29mZnNldCwgdTY0ICpwcm9iZV9hZGRyKTsNCj4gPiBAQCAtNTAyLDEw ICs1MDMsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3Byb2JlX3VucmVnaXN0ZXIoc3RydWN0 IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsIHN0cnVjdCBicGYNCj4gPiAgew0KPiA+ICAJcmV0dXJu IC1FT1BOT1RTVVBQOw0KPiA+ICB9DQo+ID4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9yYXdf ZXZlbnRfbWFwICpicGZfZmluZF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKQ0KPiA+ ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJh Y2Vwb2ludChjb25zdCBjaGFyICpuYW1lKQ0KPiA+ICB7DQo+ID4gIAlyZXR1cm4gTlVMTDsNCj4g PiAgfQ0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1 Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCkNCj4gPiArew0KPiA+ICt9DQo+ID4gIHN0YXRpYyBp bmxpbmUgaW50IGJwZl9nZXRfcGVyZl9ldmVudF9pbmZvKGNvbnN0IHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCwNCj4gPiAgCQkJCQkgIHUzMiAqcHJvZ19pZCwgdTMyICpmZF90eXBlLA0KPiA+ICAJ CQkJCSAgY29uc3QgY2hhciAqKmJ1ZiwgdTY0ICpwcm9iZV9vZmZzZXQsDQo+ID4gZGlmZiAtLWdp dCBhL2tlcm5lbC9icGYvc3lzY2FsbC5jIGIva2VybmVsL2JwZi9zeXNjYWxsLmMNCj4gPiBpbmRl eCA3MGZiMTExMDZmYzIuLjc1NDM3MGUzMTU1ZSAxMDA2NDQNCj4gPiAtLS0gYS9rZXJuZWwvYnBm L3N5c2NhbGwuYw0KPiA+ICsrKyBiL2tlcm5lbC9icGYvc3lzY2FsbC5jDQo+ID4gQEAgLTE2MDks NiArMTYwOSw3IEBAIHN0YXRpYyBpbnQgYnBmX3Jhd190cmFjZXBvaW50X3JlbGVhc2Uoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApDQo+ID4gIAkJYnBmX3Byb2JlX3VucmVn aXN0ZXIocmF3X3RwLT5idHAsIHJhd190cC0+cHJvZyk7DQo+ID4gIAkJYnBmX3Byb2dfcHV0KHJh d190cC0+cHJvZyk7DQo+ID4gIAl9DQo+ID4gKwlicGZfcHV0X3Jhd190cmFjZXBvaW50KHJhd190 cC0+YnRwKTsNCj4gPiAgCWtmcmVlKHJhd190cCk7DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0K PiA+IEBAIC0xNjM0LDEzICsxNjM1LDE1IEBAIHN0YXRpYyBpbnQgYnBmX3Jhd190cmFjZXBvaW50 X29wZW4oY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpDQo+ID4gIAkJcmV0dXJuIC1FRkFVTFQ7 DQo+ID4gIAl0cF9uYW1lW3NpemVvZih0cF9uYW1lKSAtIDFdID0gMDsNCj4gPiAgDQo+ID4gLQli dHAgPSBicGZfZmluZF9yYXdfdHJhY2Vwb2ludCh0cF9uYW1lKTsNCj4gPiArCWJ0cCA9IGJwZl9n ZXRfcmF3X3RyYWNlcG9pbnQodHBfbmFtZSk7DQo+ID4gIAlpZiAoIWJ0cCkNCj4gPiAgCQlyZXR1 cm4gLUVOT0VOVDsNCj4gPiAgDQo+ID4gIAlyYXdfdHAgPSBremFsbG9jKHNpemVvZigqcmF3X3Rw KSwgR0ZQX1VTRVIpOw0KPiA+IC0JaWYgKCFyYXdfdHApDQo+ID4gLQkJcmV0dXJuIC1FTk9NRU07 DQo+ID4gKwlpZiAoIXJhd190cCkgew0KPiA+ICsJCWVyciA9IC1FTk9NRU07DQo+ID4gKwkJZ290 byBvdXRfcHV0X2J0cDsNCj4gPiArCX0NCj4gPiAgCXJhd190cC0+YnRwID0gYnRwOw0KPiA+ICAN Cj4gPiAgCXByb2cgPSBicGZfcHJvZ19nZXRfdHlwZShhdHRyLT5yYXdfdHJhY2Vwb2ludC5wcm9n X2ZkLA0KPiA+IEBAIC0xNjY4LDYgKzE2NzEsOCBAQCBzdGF0aWMgaW50IGJwZl9yYXdfdHJhY2Vw b2ludF9vcGVuKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKQ0KPiA+ICAJYnBmX3Byb2dfcHV0 KHByb2cpOw0KPiA+ICBvdXRfZnJlZV90cDoNCj4gPiAgCWtmcmVlKHJhd190cCk7DQo+ID4gK291 dF9wdXRfYnRwOg0KPiA+ICsJYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApOw0KPiA+ICAJcmV0 dXJuIGVycjsNCj4gPiAgfQ0KPiA+ICANCj4gPiBkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVsZS5j IGIva2VybmVsL21vZHVsZS5jDQo+ID4gaW5kZXggNDlhNDA1ODkxNTg3Li4wNmVjNjhmMDgzODcg MTAwNjQ0DQo+ID4gLS0tIGEva2VybmVsL21vZHVsZS5jDQo+ID4gKysrIGIva2VybmVsL21vZHVs ZS5jDQo+ID4gQEAgLTMwOTMsNiArMzA5MywxMSBAQCBzdGF0aWMgaW50IGZpbmRfbW9kdWxlX3Nl Y3Rpb25zKHN0cnVjdCBtb2R1bGUgKm1vZCwgc3RydWN0IGxvYWRfaW5mbyAqaW5mbykNCj4gPiAg CQkJCQkgICAgIHNpemVvZigqbW9kLT50cmFjZXBvaW50c19wdHJzKSwNCj4gPiAgCQkJCQkgICAg ICZtb2QtPm51bV90cmFjZXBvaW50cyk7DQo+ID4gICNlbmRpZg0KPiA+ICsjaWZkZWYgQ09ORklH X0JQRl9FVkVOVFMNCj4gPiArCW1vZC0+YnBmX3Jhd19ldmVudHMgPSBzZWN0aW9uX29ianMoaW5m bywgIl9fYnBmX3Jhd190cF9tYXAiLA0KPiA+ICsJCQkJCSAgIHNpemVvZigqbW9kLT5icGZfcmF3 X2V2ZW50cyksDQo+ID4gKwkJCQkJICAgJm1vZC0+bnVtX2JwZl9yYXdfZXZlbnRzKTsNCj4gPiAr I2VuZGlmDQo+ID4gICNpZmRlZiBIQVZFX0pVTVBfTEFCRUwNCj4gPiAgCW1vZC0+anVtcF9lbnRy aWVzID0gc2VjdGlvbl9vYmpzKGluZm8sICJfX2p1bXBfdGFibGUiLA0KPiA+ICAJCQkJCXNpemVv ZigqbW9kLT5qdW1wX2VudHJpZXMpLA0KPiA+IGRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvYnBm X3RyYWNlLmMgYi9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMNCj4gPiBpbmRleCA5ODY0YTM1Yzhi YjUuLjlkZGI2ZmRkYjRlMCAxMDA2NDQNCj4gPiAtLS0gYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNl LmMNCj4gPiArKysgYi9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMNCj4gPiBAQCAtMTcsNiArMTcs NDMgQEANCj4gPiAgI2luY2x1ZGUgInRyYWNlX3Byb2JlLmgiDQo+ID4gICNpbmNsdWRlICJ0cmFj ZS5oIg0KPiA+ICANCj4gPiArI2lmZGVmIENPTkZJR19NT0RVTEVTDQo+ID4gK3N0cnVjdCBicGZf dHJhY2VfbW9kdWxlIHsNCj4gPiArCXN0cnVjdCBtb2R1bGUgKm1vZHVsZTsNCj4gPiArCXN0cnVj dCBsaXN0X2hlYWQgbGlzdDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBMSVNUX0hFQUQo YnBmX3RyYWNlX21vZHVsZXMpOw0KPiA+ICtzdGF0aWMgREVGSU5FX01VVEVYKGJwZl9tb2R1bGVf bXV0ZXgpOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBm X2dldF9yYXdfdHJhY2Vwb2ludF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSkNCj4gPiArew0KPiA+ ICsJc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsICpyZXQgPSBOVUxMOw0KPiA+ICsJc3Ry dWN0IGJwZl90cmFjZV9tb2R1bGUgKmJ0bTsNCj4gPiArCXVuc2lnbmVkIGludCBpOw0KPiA+ICsN Cj4gPiArCW11dGV4X2xvY2soJmJwZl9tb2R1bGVfbXV0ZXgpOw0KPiA+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeShidG0sICZicGZfdHJhY2VfbW9kdWxlcywgbGlzdCkgew0KPiA+ICsJCWZvciAoaSA9 IDA7IGkgPCBidG0tPm1vZHVsZS0+bnVtX2JwZl9yYXdfZXZlbnRzOyArK2kpIHsNCj4gPiArCQkJ YnRwID0gJmJ0bS0+bW9kdWxlLT5icGZfcmF3X2V2ZW50c1tpXTsNCj4gPiArCQkJaWYgKCFzdHJj bXAoYnRwLT50cC0+bmFtZSwgbmFtZSkpIHsNCj4gPiArCQkJCWlmICh0cnlfbW9kdWxlX2dldChi dG0tPm1vZHVsZSkpDQo+ID4gKwkJCQkJcmV0ID0gYnRwOw0KPiA+ICsJCQkJZ290byBvdXQ7DQo+ ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gK291dDoNCj4gPiArCW11dGV4X3VubG9j aygmYnBmX21vZHVsZV9tdXRleCk7DQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKyNl bHNlDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3Ry YWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpDQo+ID4gK3sNCj4gPiArCXJldHVybiBO VUxMOw0KPiA+ICt9DQo+ID4gKyNlbmRpZiAvKiBDT05GSUdfTU9EVUxFUyAqLw0KPiA+ICsNCj4g PiAgdTY0IGJwZl9nZXRfc3RhY2tpZCh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2 NCByNSk7DQo+ID4gIHU2NCBicGZfZ2V0X3N0YWNrKHU2NCByMSwgdTY0IHIyLCB1NjQgcjMsIHU2 NCByNCwgdTY0IHI1KTsNCj4gPiAgDQo+ID4gQEAgLTEwNzYsNyArMTExMyw3IEBAIGludCBwZXJm X2V2ZW50X3F1ZXJ5X3Byb2dfYXJyYXkoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB2b2lkIF9f dXNlciAqaW5mbykNCj4gPiAgZXh0ZXJuIHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCBfX3N0YXJ0 X19icGZfcmF3X3RwW107DQo+ID4gIGV4dGVybiBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgX19z dG9wX19icGZfcmF3X3RwW107DQo+ID4gIA0KPiA+IC1zdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAg KmJwZl9maW5kX3Jhd190cmFjZXBvaW50KGNvbnN0IGNoYXIgKm5hbWUpDQo+ID4gK3N0cnVjdCBi cGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1l KQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCA9IF9fc3RhcnRf X2JwZl9yYXdfdHA7DQo+ID4gIA0KPiA+IEBAIC0xMDg0LDcgKzExMjEsMTYgQEAgc3RydWN0IGJw Zl9yYXdfZXZlbnRfbWFwICpicGZfZmluZF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1l KQ0KPiA+ICAJCWlmICghc3RyY21wKGJ0cC0+dHAtPm5hbWUsIG5hbWUpKQ0KPiA+ICAJCQlyZXR1 cm4gYnRwOw0KPiA+ICAJfQ0KPiA+IC0JcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IGJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKG5hbWUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICt2b2lkIGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpi dHApDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBtb2R1bGUgKm1vZCA9IF9fbW9kdWxlX2FkZHJlc3Mo KHVuc2lnbmVkIGxvbmcpYnRwKTsNCj4gPiArDQo+ID4gKwlpZiAobW9kKQ0KPiA+ICsJCW1vZHVs ZV9wdXQobW9kKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgc3RhdGljIF9fYWx3YXlzX2lubGluZQ0K PiA+IEBAIC0xMjIyLDMgKzEyNjgsNTIgQEAgaW50IGJwZl9nZXRfcGVyZl9ldmVudF9pbmZvKGNv bnN0IHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdTMyICpwcm9nX2lkLA0KPiA+ICANCj4gPiAg CXJldHVybiBlcnI7DQo+ID4gIH0NCj4gPiArDQo+ID4gKyNpZmRlZiBDT05GSUdfTU9EVUxFUw0K PiA+ICtpbnQgYnBmX2V2ZW50X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNp Z25lZCBsb25nIG9wLCB2b2lkICptb2R1bGUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBicGZfdHJh Y2VfbW9kdWxlICpidG0sICp0bXA7DQo+ID4gKwlzdHJ1Y3QgbW9kdWxlICptb2QgPSBtb2R1bGU7 DQo+ID4gKw0KPiA+ICsJaWYgKG1vZC0+bnVtX2JwZl9yYXdfZXZlbnRzID09IDAgfHwNCj4gPiAr CSAgICAob3AgIT0gTU9EVUxFX1NUQVRFX0NPTUlORyAmJiBvcCAhPSBNT0RVTEVfU1RBVEVfR09J TkcpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCW11dGV4X2xvY2soJmJwZl9tb2R1 bGVfbXV0ZXgpOw0KPiA+ICsNCj4gPiArCXN3aXRjaCAob3ApIHsNCj4gPiArCWNhc2UgTU9EVUxF X1NUQVRFX0NPTUlORzoNCj4gPiArCQlidG0gPSBremFsbG9jKHNpemVvZigqYnRtKSwgR0ZQX0tF Uk5FTCk7DQo+ID4gKwkJaWYgKGJ0bSkgew0KPiA+ICsJCQlidG0tPm1vZHVsZSA9IG1vZHVsZTsN Cj4gPiArCQkJbGlzdF9hZGQoJmJ0bS0+bGlzdCwgJmJwZl90cmFjZV9tb2R1bGVzKTsNCj4gPiAr CQl9DQo+IA0KPiBJcyBpdCBmaW5lIHRvIHJldHVybiAwIG9uICFidG0gY2FzZT8NCg0KVGhhdCBl ZmZlY3RpdmVseSBqdXN0IG1lYW5zIHdlJ2xsIGJlIGlnbm9yaW5nIHRyYWNlcG9pbnRzIGZvciBh IG1vZHVsZQ0KdGhhdCBpcyBsb2FkZWQgd2hpbGUgd2UgY2FuJ3QgYWxsb2NhdGUgYSBicGZfdHJh Y2VfbW9kdWxlICgyNCBieXRlcykgdG8NCnRyYWNrIGl0LiAgVGhhdCBmZWVscyBsaWtlIHJlYXNv bmFibGUgYmVoYXZpb3IgdG8gbWUuDQoNCj4gDQo+IE90aGVyIGxvb2tzIGdvb2QuDQo+IA0KPiA+ ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBNT0RVTEVfU1RBVEVfR09JTkc6DQo+ID4gKwkJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGJ0bSwgdG1wLCAmYnBmX3RyYWNlX21vZHVsZXMsIGxpc3QpIHsN Cj4gPiArCQkJaWYgKGJ0bS0+bW9kdWxlID09IG1vZHVsZSkgew0KPiA+ICsJCQkJbGlzdF9kZWwo JmJ0bS0+bGlzdCk7DQo+ID4gKwkJCQlrZnJlZShidG0pOw0KPiA+ICsJCQkJYnJlYWs7DQo+ID4g KwkJCX0NCj4gPiArCQl9DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbXV0 ZXhfdW5sb2NrKCZicGZfbW9kdWxlX211dGV4KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBicGZfbW9kdWxl X25iID0gew0KPiA+ICsJLm5vdGlmaWVyX2NhbGwgPSBicGZfZXZlbnRfbm90aWZ5LA0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiAraW50IF9faW5pdCBicGZfZXZlbnRfaW5pdCh2b2lkKQ0KPiA+ICt7DQo+ ID4gKwlyZWdpc3Rlcl9tb2R1bGVfbm90aWZpZXIoJmJwZl9tb2R1bGVfbmIpOw0KPiA+ICsJcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ZzX2luaXRjYWxsKGJwZl9ldmVudF9pbml0KTsN Cj4gPiArI2VuZGlmIC8qIENPTkZJR19NT0RVTEVTICovDQo+ID4gLS0gDQo+ID4gMi4xNy4xDQo+ ID4gDQo=