From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yonghong Song Subject: Re: [RFC bpf-next v3 03/12] bpf: verifier: remove dead code Date: Mon, 31 Dec 2018 21:41:22 +0000 Message-ID: <790ec09d-cdbc-96cc-e7f7-2b0d7bb6dd35@fb.com> References: <20181229030923.4804-1-jakub.kicinski@netronome.com> <20181229030923.4804-4-jakub.kicinski@netronome.com> <83ad47c0-d5a9-d2dd-fee2-76450c0cefb3@fb.com> <20181231123114.024ff443@cakuba.hsd1.ca.comcast.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "alexei.starovoitov@gmail.com" , "daniel@iogearbox.net" , "netdev@vger.kernel.org" , "oss-drivers@netronome.com" To: Jakub Kicinski Return-path: Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:57192 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727311AbeLaVll (ORCPT ); Mon, 31 Dec 2018 16:41:41 -0500 In-Reply-To: <20181231123114.024ff443@cakuba.hsd1.ca.comcast.net> Content-Language: en-US Content-ID: Sender: netdev-owner@vger.kernel.org List-ID: DQoNCk9uIDEyLzMxLzE4IDEyOjMxIFBNLCBKYWt1YiBLaWNpbnNraSB3cm90ZToNCj4gT24gU3Vu LCAzMCBEZWMgMjAxOCAyMjowMjoxMCArMDAwMCwgWW9uZ2hvbmcgU29uZyB3cm90ZToNCj4+IE9u IDEyLzI4LzE4IDc6MDkgUE0sIEpha3ViIEtpY2luc2tpIHdyb3RlOg0KPj4+ICtzdGF0aWMgaW50 IGJwZl9hZGpfbGluZm9fYWZ0ZXJfcmVtb3ZlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYs IHUzMiBvZmYsDQo+Pj4gKwkJCQkgICAgICB1MzIgY250KQ0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3Qg YnBmX3N1YnByb2dfaW5mbyAqbmVlZF9maXJzdF9saW5mbzsNCj4+PiArCXN0cnVjdCBicGZfcHJv ZyAqcHJvZyA9IGVudi0+cHJvZzsNCj4+PiArCXUzMiBpLCBsX29mZiwgbF9jbnQsIG5yX2xpbmZv Ow0KPj4+ICsJc3RydWN0IGJwZl9saW5lX2luZm8gKmxpbmZvOw0KPj4+ICsNCj4+PiArCW5yX2xp bmZvID0gcHJvZy0+YXV4LT5ucl9saW5mbzsNCj4+PiArCWlmICghbnJfbGluZm8gfHwgIWNudCkN Cj4+PiArCQlyZXR1cm4gMDsNCj4+PiArDQo+Pj4gKwlsaW5mbyA9IHByb2ctPmF1eC0+bGluZm87 DQo+Pj4gKw0KPj4+ICsJLyogcHJvZ3MgYXJlIGFscmVhZHkgYWRqdXN0ZWQvcmVtb3ZlZCwgaWYg cHJvZ3JhbSBzdGFydHMgb24gb2ZmLCBpdCBtYXkNCj4+PiArCSAqIGhhZCBpdHMgc3RhcnQgY3V0 IG9mZiBhbmQgaXRzIGxpbmUgaW5mbyBtYXkgbmVlZCB0byBiZSBwcmVzZXJ2ZWQNCj4+PiArCSAq Lw0KPj4+ICsJZm9yIChpID0gMDsgaSA8IGVudi0+c3VicHJvZ19jbnQ7IGkrKykNCj4+PiArCQlp ZiAoZW52LT5zdWJwcm9nX2luZm9baV0uc3RhcnQgPj0gb2ZmKQ0KPj4+ICsJCQlicmVhazsNCj4+ PiArCWlmIChpIDwgZW52LT5zdWJwcm9nX2NudCAmJiBlbnYtPnN1YnByb2dfaW5mb1tpXS5zdGFy dCA9PSBvZmYpDQo+Pj4gKwkJbmVlZF9maXJzdF9saW5mbyA9ICZlbnYtPnN1YnByb2dfaW5mb1tp XTsNCj4+PiArCWVsc2UNCj4+PiArCQluZWVkX2ZpcnN0X2xpbmZvID0gTlVMTDsNCj4+PiArDQo+ Pj4gKwkvKiBmaW5kIGZpcnN0IGxpbmUgaW5mbyB0byByZW1vdmUgKi8NCj4+PiArCWZvciAoaSA9 IDA7IGkgPCBucl9saW5mbzsgaSsrKQ0KPj4+ICsJCWlmIChsaW5mb1tpXS5pbnNuX29mZiA+PSBv ZmYpDQo+Pj4gKwkJCWJyZWFrOw0KPj4+ICsNCj4+PiArCS8qIGNvdW50IGxpbmVzIHRvIGJlIHJl bW92ZWQgKi8NCj4+PiArCWxfb2ZmID0gaTsNCj4+PiArCWxfY250ID0gMDsNCj4+PiArCWZvciAo OyBpIDwgbnJfbGluZm87IGkrKykNCj4+PiArCQlpZiAobGluZm9baV0uaW5zbl9vZmYgPCBvZmYg KyBjbnQpDQo+Pj4gKwkJCWxfY250Kys7DQo+Pj4gKwkJZWxzZQ0KPj4+ICsJCQlicmVhazsNCj4+ PiArDQo+Pj4gKwkvKiBlaXRoZXIgd2UgZGlkbid0IGFjdHVhbGx5IGN1dCB0aGUgc3RhcnQgb3Ig d2UgY2FuIGp1c3QgdXNlIGxpbmUgaW5mbw0KPj4+ICsJICogb2YgZmlyc3QgaW5zdHJ1Y3Rpb24g aWYgaXQgZXhpc3RzDQo+Pj4gKwkgKi8NCj4+PiArCWlmIChpIDwgbnJfbGluZm8gJiYgbGluZm9b aV0uaW5zbl9vZmYgPT0gb2ZmICsgY250KQ0KPj4+ICsJCW5lZWRfZmlyc3RfbGluZm8gPSBOVUxM Ow0KPj4+ICsJaWYgKG5lZWRfZmlyc3RfbGluZm8pIHsNCj4+PiArCQlpZiAoV0FSTl9PTkNFKCFs X2NudCwNCj4+PiArCQkJICAgICAgInZlcmlmaWVyIGJ1ZyAtIG5vIGxpbmZvIHJlbW92ZWQsIHll dCBpdHMgbWlzc2luZyIpKQ0KPj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4+PiArCQlpZiAoV0FS Tl9PTkNFKG5lZWRfZmlyc3RfbGluZm8tPmxpbmZvX2lkeCA8IGxfb2ZmIHx8DQo+Pj4gKwkJCSAg ICAgIG5lZWRfZmlyc3RfbGluZm8tPmxpbmZvX2lkeCA+PSBsX29mZiArIGxfY250LA0KPj4+ICsJ CQkgICAgICAidmVyaWZpZXIgYnVnIC0gcmVtb3ZlZCBwcm9nIGxpbmZvIG5vdCBpbiByZW1vdmVk IHJhbmdlIikpDQo+Pj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPj4+ICsJCS8qIHN1YnByb2cgbGlu Zm9faWR4IGlzIG5vdCBhZGp1c3RlZCB5ZXQsIHNvIGp1c3QgZmluZCBvdXQNCj4+PiArCQkgKiB3 aGljaCBsaW5lIGl0IHVzZWQgdG8gYmUgYW5kIHN3YXAgaXQNCj4+PiArCQkgKi8NCj4+PiArCQlt ZW1tb3ZlKGxpbmZvICsgbF9vZmYsIGxpbmZvICsgbmVlZF9maXJzdF9saW5mby0+bGluZm9faWR4 LA0KPj4+ICsJCQlzaXplb2YoKmxpbmZvKSk7DQo+Pj4gKwkJbmVlZF9maXJzdF9saW5mby0+bGlu Zm9faWR4ID0gbF9vZmY7DQo+Pj4gKwkJbGluZm9bbF9vZmZdLmluc25fb2ZmID0gb2ZmOw0KPj4+ ICsNCj4+PiArCQlsX29mZisrOw0KPj4+ICsJCWxfY250LS07DQo+Pj4gKwl9DQo+Pg0KPj4gSW4g dGhpcyByb3V0aW5lLCB3ZSBoYW5kbGUgbmVlZF9maXJzdF9saW5mbyBpZiB0aGUgZmlyc3QgaW5z biBvZiBhDQo+PiBzdWJwcm9ncmFtIGlzIGRlbGV0ZWQuDQo+PiBJIHdvbmRlciB3aGV0aGVyIHdl IG5lZWQgdG8gaGFuZGxlIHRoZSBsYXN0IGRlbGV0ZWQgbGluZm8gYXMgd2VsbC4gRm9yDQo+PiBl eGFtcGxlOg0KPj4gICAgICBmdW5jMToNCj4+ICAgICAgICBsaW5lX2luZm8xOg0KPj4gICAgICAg ICAgIGluc24xDQo+PiAgICAgICAgICAgaW5zbjINCj4+ICAgICAgZnVuYzI6DQo+PiAgICAgICAg bGluZV9pbmZvMjoNCj4+ICAgICAgICAgICBpbnNuMw0KPj4gICAgICAgICAgIGluc240Og0KPj4N Cj4+IGlmIGluc24yIGFuZCBpbnNuMyBhcmUgZGVsZXRlZCwgdGhlIGFib3ZlIGFsZ29yaXRobSB3 aWxsIHByb2R1Y2U6DQo+PiAgICAgICBmdW5jMToNCj4+ICAgICAgICAgbGluZV9pbmZvMToNCj4+ ICAgICAgICAgIGluc24xDQo+PiAgICAgICBmdW5jMjoNCj4+ICAgICAgICAgIGluc240DQo+Pg0K Pj4gZnVuYzIgaXMgbWlzc2luZyB0aGUgZmlyc3QgbGluZSBpbmZvLCB3aGljaCBzaG91bGQgYmUg bGluZV9pbmZvMiB3aXRoDQo+PiBhZGp1c3RlZCBpbnNuIG9mZnNldCB0byB0aGUgc3RhcnQgb2Yg ZnVuYzIuDQo+IA0KPiBNbS4uIHNob3VsZCBub3QgaGFwcGVuLCB3ZSBzaG91bGQgZW5kIHVwIHdp dGg6DQo+IA0KPiAgICAgICBmdW5jMToNCj4gICAgICAgICBsaW5lX2luZm8xOg0KPiAgICAgICAg ICAgaW5zbjENCj4gICAgICAgZnVuYzI6DQo+ICAgICAgICAgbGluZV9pbmZvMjoNCj4gICAgICAg ICAgIGluc240DQo+IA0KPiBmdW5jMiBhZnRlciBmdW5jIGFkanVzdCB3aWxsIHN0YXJ0IGF0IG9m ZiBhbmQgdGhlcmUgaXMgbm8gbGluZSBpbmZvIGZvcg0KPiBvZmYgKyBjbnQgKGluc240KSwgc28g d2Ugd2lsbCBwcmVzZXJ2ZSBsaW5lX2luZm8yLg0KDQpUaGFua3MgZm9yIHZlcmlmaWNhdGlvbiwg SSBtaXNzZWQgdGhhdA0KID4+PiArCS8qIGNvdW50IGxpbmVzIHRvIGJlIHJlbW92ZWQgKi8NCiA+ Pj4gKwlsX29mZiA9IGk7DQogPj4+ICsJbF9jbnQgPSAwOw0KID4+PiArCWZvciAoOyBpIDwgbnJf bGluZm87IGkrKykNCiA+Pj4gKwkJaWYgKGxpbmZvW2ldLmluc25fb2ZmIDwgb2ZmICsgY250KQ0K ID4+PiArCQkJbF9jbnQrKzsNCiA+Pj4gKwkJZWxzZQ0KID4+PiArCQkJYnJlYWs7DQpvbmNlIHlv dSByZWFjaGVkIGxpbmZvW2ldLmluc25fb2ZmID49IG9mZiArIGNudCwgbm8gbW9yZSBjb3VudGlu Zy4NCnNpbmNlIGxfY250IHN0YXJ0cyBmcm9tIDAsIHNvIHRoZSBsYXN0IG9uZSBpcyBhY3R1YWxs eSBwcmVzZXJ2ZWQuDQoNCj4gDQo+IEkndmUgYWRkZWQgdGhlIGZvbGxvd2luZyB0ZXN0X2J0ZiB0 ZXN0LCBqdXN0IHRvIGJlIHN1cmU6DQo+IA0KPiB7DQo+IAkuZGVzY3IgPSAibGluZV9pbmZvIChk ZWFkIGVuZCArIHN1YnByb2cgc3RhcnQgdy8gbm8gbGluZm8pIiwNCj4gCS5yYXdfdHlwZXMgPSB7 DQo+IAkJQlRGX1RZUEVfSU5UX0VOQyhOQU1FX1RCRCwgQlRGX0lOVF9TSUdORUQsIDAsIDMyLCA0 KSwJLyogWzFdICovDQo+IAkJQlRGX0ZVTkNfUFJPVE9fRU5DKDEsIDEpLAkJCS8qIFsyXSAqLw0K PiAJCQlCVEZfRlVOQ19QUk9UT19BUkdfRU5DKE5BTUVfVEJELCAxKSwNCj4gCQlCVEZfRlVOQ19F TkMoTkFNRV9UQkQsIDIpLAkJCS8qIFszXSAqLw0KPiAJCUJURl9GVU5DX0VOQyhOQU1FX1RCRCwg MiksCQkJLyogWzRdICovDQo+IAkJQlRGX0VORF9SQVcsDQo+IAl9LA0KPiAJQlRGX1NUUl9TRUMo IlwwaW50XDB4XDBtYWluXDBmdW5jXDAvKiBtYWluIGxpbmZvICovXDAvKiBmdW5jIGxpbmZvICov IiksDQo+IAkuaW5zbnMgPSB7DQo+IAkJQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLA0KPiAJ CUJQRl9KTVBfSU1NKEJQRl9KR0UsIEJQRl9SRUdfMCwgMSwgMiksIC8qIGRlYWQgKi8NCj4gCQlC UEZfQ0FMTF9SRUwoMiksDQo+IAkJQlBGX0VYSVRfSU5TTigpLA0KPiAJCUJQRl9FWElUX0lOU04o KSwgLyogZGVhZCAqLw0KPiAJCS8qIGZ1bmMgKi8NCj4gCQlCUEZfSk1QX0lNTShCUEZfSkEsIDAs IDAsIDApLCAvKiBkZWFkICovDQo+IAkJQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLA0KPiAJ CUJQRl9FWElUX0lOU04oKSwNCj4gCX0sDQo+IAkucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9U UkFDRVBPSU5ULA0KPiAJLmZ1bmNfaW5mb19jbnQgPSAyLA0KPiAJLmZ1bmNfaW5mb19yZWNfc2l6 ZSA9IDgsDQo+IAkuZnVuY19pbmZvID0geyB7MCwgM30sIHs1LCA0fSwgfSwNCj4gCS5saW5lX2lu Zm8gPSB7DQo+IAkJQlBGX0xJTkVfSU5GT19FTkMoMCwgMCwgTkFNRV9UQkQsIDEsIDEwKSwNCj4g CQlCUEZfTElORV9JTkZPX0VOQyg1LCAwLCBOQU1FX1RCRCwgMSwgMTApLA0KPiAJCUJURl9FTkRf UkFXLA0KPiAJfSwNCj4gCS5saW5lX2luZm9fcmVjX3NpemUgPSBzaXplb2Yoc3RydWN0IGJwZl9s aW5lX2luZm8pLA0KPiAJLm5yX2ppdGVkX2tzeW1zID0gMiwNCj4gfSwNCj4gDQo+IH4jIGJwZnRv b2wgcHJvZyBkdW1wIHhsYXRlZCBpZCA0OA0KPiBpbnQgbWFpbihpbnQgeCk6DQo+IDsgLyogbWFp biBsaW5mbyAqLw0KPiAgICAgMDogKGI3KSByMCA9IDANCj4gICAgIDE6ICg4NSkgY2FsbCBwYysx IzB4ZmZmZmZmZmZjMDQxZTc4Mg0KPiAgICAgMjogKDk1KSBleGl0DQo+IGludCBmdW5jKGludCB4 KToNCj4gOyAvKiBmdW5jIGxpbmZvICovDQo+ICAgICAzOiAoYjcpIHIwID0gMA0KPiAgICAgNDog KDk1KSBleGl0DQo+IA0KPiB+IyBicGZ0b29sIHByb2cgZHVtcCBqaXRlZCBpZCA0OA0KPiBpbnQg bWFpbihpbnQgeCk6DQo+IDB4ZmZmZmZmZmZjMDQxY2IyZjoNCj4gOyAvKiBtYWluIGxpbmZvICov DQo+ICAgICAwOglwdXNoICAgJXJicA0KPiAgICAgMToJbW92ICAgICVyc3AsJXJicA0KPiAgICAg NDoJc3ViICAgICQweDI4LCVyc3ANCj4gICAgIGI6CXN1YiAgICAkMHgyOCwlcmJwDQo+ICAgICBm Ogltb3YgICAgJXJieCwweDAoJXJicCkNCj4gICAgMTM6CW1vdiAgICAlcjEzLDB4OCglcmJwKQ0K PiAgICAxNzoJbW92ICAgICVyMTQsMHgxMCglcmJwKQ0KPiAgICAxYjoJbW92ICAgICVyMTUsMHgx OCglcmJwKQ0KPiAgICAxZjoJeG9yICAgICVlYXgsJWVheA0KPiAgICAyMToJbW92ICAgICVyYXgs MHgyMCglcmJwKQ0KPiAgICAyNToJeG9yICAgICVlYXgsJWVheA0KPiAgICAyNzoJY2FsbHEgIDB4 MDAwMDAwMDAwMDAwMWM1Mw0KPiAgICAyYzoJbW92ICAgIDB4MCglcmJwKSwlcmJ4DQo+ICAgIDMw Ogltb3YgICAgMHg4KCVyYnApLCVyMTMNCj4gICAgMzQ6CW1vdiAgICAweDEwKCVyYnApLCVyMTQN Cj4gICAgMzg6CW1vdiAgICAweDE4KCVyYnApLCVyMTUNCj4gICAgM2M6CWFkZCAgICAkMHgyOCwl cmJwDQo+ICAgIDQwOglsZWF2ZXENCj4gICAgNDE6CXJldHENCj4gDQo+IGludCBmdW5jKGludCB4 KToNCj4gMHhmZmZmZmZmZmMwNDFlNzgyOg0KPiA7IC8qIGZ1bmMgbGluZm8gKi8NCj4gICAgIDA6 CXB1c2ggICAlcmJwDQo+ICAgICAxOgltb3YgICAgJXJzcCwlcmJwDQo+ICAgICA0OglzdWIgICAg JDB4MjgsJXJzcA0KPiAgICAgYjoJc3ViICAgICQweDI4LCVyYnANCj4gICAgIGY6CW1vdiAgICAl cmJ4LDB4MCglcmJwKQ0KPiAgICAxMzoJbW92ICAgICVyMTMsMHg4KCVyYnApDQo+ICAgIDE3Oglt b3YgICAgJXIxNCwweDEwKCVyYnApDQo+ICAgIDFiOgltb3YgICAgJXIxNSwweDE4KCVyYnApDQo+ ICAgIDFmOgl4b3IgICAgJWVheCwlZWF4DQo+ICAgIDIxOgltb3YgICAgJXJheCwweDIwKCVyYnAp DQo+ICAgIDI1Ogl4b3IgICAgJWVheCwlZWF4DQo+ICAgIDI3Ogltb3YgICAgMHgwKCVyYnApLCVy YngNCj4gICAgMmI6CW1vdiAgICAweDgoJXJicCksJXIxMw0KPiAgICAyZjoJbW92ICAgIDB4MTAo JXJicCksJXIxNA0KPiAgICAzMzoJbW92ICAgIDB4MTgoJXJicCksJXIxNQ0KPiAgICAzNzoJYWRk ICAgICQweDI4LCVyYnANCj4gICAgM2I6CWxlYXZlcQ0KPiAgICAzYzoJcmV0cQ0KPiANCj4+IEFu b3RoZXIgZXhhbXBsZToNCj4+ICAgICAgZnVuYzE6DQo+PiAgICAgICAgIGxpbmVfaW5mbzE6DQo+ PiAgICAgICAgICAgIGluc24xDQo+PiAgICAgICAgICAgIGluc24yDQo+PiAgICAgICAgIGxpbmVf aW5mbzI6DQo+PiAgICAgICAgICAgIGluc24zDQo+PiAgICAgICAgICAgIGluc240DQo+PiBJZiBp bnNuMiBhbmQgaW5zbjMgYXJlIGRlbGV0ZWQsIHdlIHdpbGwgZ2V0DQo+PiAgICAgICBmdW5jMToN Cj4+ICAgICAgICAgbGluZV9pbmZvMToNCj4+ICAgICAgICAgICBpbnNuMQ0KPj4gICAgICAgICAg IGluc240DQo+PiBUaGlzIGlzIG5vdCBpZGVhbCBlaXRoZXIuIFdlIHNob3VsZCBhdHRyaWJ1dGUg aW5zbjQgdG8gbGluZV9pbmZvMi4NCj4gDQo+IENvb2wsIEknbSBhIGxpdHRsZSBpbiB0aGUgZGFy ayBvbiB3aGF0IHRoZSBkZWZpbml0aW9uIG9mIGxpbmUgaW5mbyBpcywNCj4gc28geW91ciBzdWdn ZXN0aW9ucyBhcmUgdmVyeSBtdWNoIGFwcHJlY2lhdGVkISAgSWYgeW91J3JlIHNheWluZyB0aGF0 DQo+IGFsbCBpbnN0cnVjdGlvbnMgYmVsb3cgbGluZSBpbmZvIGFyZSBjb25zaWRlcmVkIHBhcnQg b2YgdGhhdCAibGluZSIsDQo+IHRoYXQnZCBzaW1wbGlmeSB0aGUgY29kZS4NCj4gDQo+IFNvIHNo b3VsZCBJIGFsd2F5cyBwcmVzZXJ2ZSAibGFzdCIgbGluZSBpbmZvIGlmIGZpcnN0IGxpdmUgaW5z dHJ1Y3Rpb24NCj4gZG9lc24ndCBoYXZlIG9uZT8NCj4gDQo+IGxpbmZvMToNCj4gCWluc24xDQo+ IAlpbnNuMiAvKiBkZWFkICovDQo+IGxpbmZvMjoNCj4gCWluc24zIC8qIGRlYWQgKi8NCj4gCWlu c240DQo+IGxpbmZvMzoNCj4gCWluc241DQo+IA0KPiAgICB8fA0KPiAgICBcLw0KPiANCj4gbGlu Zm8xOg0KPiAJaW5zbjENCj4gbGluZm8yOg0KPiAJaW5zbjQNCj4gbGluZm8zOg0KPiAJaW5zbjUN Cg0KWWVzLCB0aGUgYWJvdmUgaXMgdGhlIGRlc2lyYWJsZSBvdXRwdXQuDQoNCj4gDQo+IA0KPiBU aGF0J2Qgc2ltcGxpZnkgdGhpbmdzIHF1aXRlIGEgYml0IQ0KPiANCj4+PiArDQo+Pj4gKwkvKiBy ZW1vdmUgdGhlIGxpbmUgaW5mbyB3aGljaCByZWZlcnMgdG8gdGhlIHJlbW92ZWQgaW5zdHJ1Y3Rp b25zICovDQo+Pj4gKwlpZiAobF9jbnQpIHsNCj4+PiArCQltZW1tb3ZlKGxpbmZvICsgbF9vZmYs IGxpbmZvICsgaSwNCj4+PiArCQkJc2l6ZW9mKCpsaW5mbykgKiAobnJfbGluZm8gLSBpKSk7DQo+ Pj4gKw0KPj4+ICsJCXByb2ctPmF1eC0+bnJfbGluZm8gLT0gbF9jbnQ7DQo+Pj4gKwkJbnJfbGlu Zm8gPSBwcm9nLT5hdXgtPm5yX2xpbmZvOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCS8qIHB1bGwg YWxsIGxpbmZvW2ldLmluc25fb2ZmID49IG9mZiArIGNudCBpbiBieSBjbnQgKi8NCj4+PiArCWZv ciAoaSA9IGxfb2ZmOyBpIDwgbnJfbGluZm87IGkrKykNCj4+PiArCQlsaW5mb1tpXS5pbnNuX29m ZiAtPSBjbnQ7DQo+Pj4gKw0KPj4+ICsJLyogZml4IHVwIGFsbCBzdWJwcm9ncyAoaW5jbC4gJ2V4 aXQnKSB3aGljaCBzdGFydCA+PSBvZmYgKi8NCj4+PiArCWZvciAoaSA9IDA7IGkgPD0gZW52LT5z dWJwcm9nX2NudDsgaSsrKQ0KPj4+ICsJCWlmIChlbnYtPnN1YnByb2dfaW5mb1tpXS5saW5mb19p ZHggPj0gbF9vZmYgKyBsX2NudCkNCj4+PiArCQkJZW52LT5zdWJwcm9nX2luZm9baV0ubGluZm9f aWR4IC09IGxfY250Ow0KPj4+ICsNCj4+PiArCXJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ ICtzdGF0aWMgaW50IHZlcmlmaWVyX3JlbW92ZV9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2Vu diAqZW52LCB1MzIgb2ZmLCB1MzIgY250KQ0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgYnBmX2luc25f YXV4X2RhdGEgKmF1eF9kYXRhID0gZW52LT5pbnNuX2F1eF9kYXRhOw0KPj4+ICsJdW5zaWduZWQg aW50IG9yaWdfcHJvZ19sZW4gPSBlbnYtPnByb2ctPmxlbjsNCj4+PiArCWludCBlcnI7DQo+Pj4g Kw0KPj4+ICsJaWYgKCFjbnQpDQo+Pj4gKwkJcmV0dXJuIDA7DQo+Pg0KPj4gVGhpcyBjaGVjayBp cyBwcm9iYWJseSBub3QgbmVlZGVkIGFzIGFsbCBjYWxsIHNpdGVzIChpbmNsdWRpbmcNCj4+IHBh dGNoICM0KSBndWFyYW50ZWVzIG5vbi16ZXJvIGNudC4NCj4gDQo+IEFjaywgdGhhbmtzIGZvciB0 aGUgcmV2aWV3LCBJIHdhcyB1bnN1cmUgaWYgdGhpcyBpcyBub3QgY29udmVudGlvbi4NCj4gDQo=