From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [PATCH v2 12/23] drm/i915: Sanitize the TypeC connect/detect sequences Date: Thu, 27 Jun 2019 21:06:06 +0000 Message-ID: <34b06b27a395f7b063bc544facc7dcb98f0a74fd.camel@intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> <20190620140600.11357-13-imre.deak@intel.com> <20190627094837.GA23002@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4435D6E817 for ; Thu, 27 Jun 2019 21:06:08 +0000 (UTC) In-Reply-To: <20190627094837.GA23002@ideak-desk.fi.intel.com> Content-Language: en-US Content-ID: <1C352BB3FD46A74A92E2E586CC3714C6@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Nikula, Jani" , "Deak, Imre" Cc: "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE5LTA2LTI3IGF0IDEyOjQ4ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6DQo+IE9u IFRodSwgSnVuIDI3LCAyMDE5IGF0IDAyOjU1OjIxQU0gKzAzMDAsIFNvdXphLCBKb3NlIHdyb3Rl Og0KPiA+IE9uIFRodSwgMjAxOS0wNi0yMCBhdCAxNzowNSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Og0KPiA+ID4gTWFrZSB0aGUgb3JkZXIgZHVyaW5nIGRldGVjdGlvbiBtb3JlIGNvbnNpc3RlbnQ6 IGZpcnN0IHJlc2V0IHRoZQ0KPiA+ID4gVHlwZUMNCj4gPiA+IHBvcnQgbW9kZSBpZiBuZWVkZWQg KGFkZGluZyBuZXcgaGVscGVycyBmb3IgdGhpcyksIHRoZW4gZGV0ZWN0DQo+ID4gPiBhbnkNCj4g PiA+IGNvbm5lY3RlZCBzaW5rLg0KPiA+ID4gDQo+ID4gPiBUbyBjaGVjayBpZiBhIHBvcnQgbW9k ZSByZXNldCBpcyBuZWVkZWQgZGV0ZXJtaW5lIGZpcnN0IHRoZQ0KPiA+ID4gdGFyZ2V0DQo+ID4g PiBwb3J0DQo+ID4gPiBtb2RlIGJhc2VkIG9uIHRoZSBsaXZlIHN0YXR1cyBpZiBhIHNpbmsgaXMg YWxyZWFkeSBjb25uZWN0ZWQgb3INCj4gPiA+IHRoZQ0KPiA+ID4gUEhZIHN0YXR1cyBjb21wbGV0 ZSBmbGFnIG90aGVyd2lzZS4NCj4gPiA+IA0KPiA+ID4gQWRkIGEgV0FSTiBpbiBsZWdhY3kgbW9k ZSBpZiB1bmV4cGVjdGVkbHkgd2UgY2FuJ3Qgc2V0IHRoZSB1bnNhZmUNCj4gPiA+IG1vZGUNCj4g PiA+IG9yIGlmIHRoZSBGSUEgZG9lc24ndCBwcm92aWRlIHRoZSA0IGxhbmVzIHJlcXVpcmVkLg0K PiA+ID4gDQo+ID4gPiBDYzogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRl bC5jb20+DQo+ID4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPg0K PiA+ID4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPg0KPiA+ID4g Q2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4g PiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+DQo+ID4gPiAt LS0NCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMgfCA5NiAr KysrKysrKysrKystLS0tLS0tDQo+ID4gPiAtLS0tDQo+ID4gPiAtLQ0KPiA+ID4gIDEgZmlsZSBj aGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYw0KPiA+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMNCj4gPiA+IGluZGV4 IGZmZmU0YzRhNjYwMi4uZWQyMjUzYjIxYjA5IDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jDQo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMNCj4gPiA+IEBAIC0xNzIsNDEgKzE3Miw0MyBAQCBz dGF0aWMgYm9vbCBpY2xfdGNfcGh5X3NldF9zYWZlX21vZGUoc3RydWN0DQo+ID4gPiBpbnRlbF9k aWdpdGFsX3BvcnQgKmRpZ19wb3J0LA0KPiA+ID4gICAqIHdpbGwgcmVxdWlyZSBhIGxvdCBvZiBj b29yZGluYXRpb24gd2l0aCB1c2VyIHNwYWNlIGFuZA0KPiA+ID4gdGhvcm91Z2gNCj4gPiA+IHRl c3RpbmcgZm9yDQo+ID4gPiAgICogdGhlIGV4dHJhIHBvc3NpYmxlIGNhc2VzLg0KPiA+ID4gICAq Lw0KPiA+ID4gLXN0YXRpYyBib29sIGljbF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0DQo+ID4gPiAqZGlnX3BvcnQpDQo+ID4gPiArc3RhdGljIHZvaWQgaWNsX3RjX3Bo eV9jb25uZWN0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQNCj4gPiA+ICpkaWdfcG9ydCkNCj4g PiA+ICB7DQo+ID4gPiAtCXUzMiBsaXZlX3N0YXR1c19tYXNrOw0KPiA+ID4gLQ0KPiA+ID4gLQlp ZiAoZGlnX3BvcnQtPnRjX21vZGUgIT0gVENfUE9SVF9MRUdBQ1kgJiYNCj4gPiA+IC0JICAgIGRp Z19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQ0KPiA+ID4gLQkJcmV0dXJuIHRydWU7 DQo+ID4gPiAtDQo+ID4gPiAgCWlmICghaWNsX3RjX3BoeV9zdGF0dXNfY29tcGxldGUoZGlnX3Bv cnQpKSB7DQo+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgbm90IHJlYWR5XG4i LA0KPiA+ID4gIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOw0KPiA+ID4gLQkJV0FS Tl9PTihkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpOw0KPiA+ID4gLQkJcmV0dXJuIGZhbHNlOw0K PiA+ID4gKwkJZ290byBvdXRfc2V0X3RidF9hbHRfbW9kZTsNCj4gPiA+ICAJfQ0KPiA+ID4gIA0K PiA+ID4gLQlpZiAoIWljbF90Y19waHlfc2V0X3NhZmVfbW9kZShkaWdfcG9ydCwgZmFsc2UpKQ0K PiA+ID4gLQkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gKwlpZiAoIWljbF90Y19waHlfc2V0X3NhZmVf bW9kZShkaWdfcG9ydCwgZmFsc2UpICYmDQo+ID4gPiArCSAgICAhV0FSTl9PTihkaWdfcG9ydC0+ dGNfbGVnYWN5X3BvcnQpKQ0KPiA+ID4gKwkJZ290byBvdXRfc2V0X3RidF9hbHRfbW9kZTsNCj4g PiANCj4gPiBNYXJraW5nIGFzIG5vdCBzYWZlIGV2ZW4gZm9yIFRCVD8NCj4gDQo+IFlvdSBtZWFu IGlmIHRoZSBhYm92ZSB3aWxsIHNldCBub3Qtc2FmZSBtb2RlIGV2ZW4gZm9yIFRCVD8gTm8sIHdl DQo+IHdpbGwgdHJ5IHRvIHNldCBub3Qtc2FmZSBtb2RlIG9ubHkgZm9yIERQLWFsdCBhbmQgbGVn YWN5IGFzIHRoZSBQSFkNCj4gc3RhdHVzIGNvbXBsZXRlIGZsYWcgd2FzIHNldC4NCg0KT2ggb2th eSwgYXMgeW91IGV4cGxhaW5lZCB0aGUgY29tcGxldGUgZmxhZyB3aWxsIG5vdCBiZSBzZXQgZm9y IFRCVC4NCg0KUmV2aWV3ZWQtYnk6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFA aW50ZWwuY29tPg0KDQoNCj4gDQo+ID4gPiAgDQo+ID4gPiAtCWlmIChkaWdfcG9ydC0+dGNfbW9k ZSA9PSBUQ19QT1JUX0xFR0FDWSkNCj4gPiA+IC0JCXJldHVybiB0cnVlOw0KPiA+ID4gKwlpZiAo ZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KSB7DQo+ID4gPiArCQlXQVJOX09OKGludGVsX3RjX3Bv cnRfZmlhX21heF9sYW5lX2NvdW50KGRpZ19wb3J0KSAhPQ0KPiA+ID4gNCk7DQo+ID4gPiArCQlk aWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfTEVHQUNZOw0KPiA+ID4gIA0KPiA+ID4gLQlsaXZl X3N0YXR1c19tYXNrID0gdGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKGRpZ19wb3J0KTsNCj4gPiA+ ICsJCXJldHVybjsNCj4gPiA+ICsJfQ0KPiA+ID4gIA0KPiA+ID4gIAkvKg0KPiA+ID4gIAkgKiBO b3cgd2UgaGF2ZSB0byByZS1jaGVjayB0aGUgbGl2ZSBzdGF0ZSwgaW4gY2FzZSB0aGUgcG9ydA0K PiA+ID4gcmVjZW50bHkNCj4gPiA+ICAJICogYmVjYW1lIGRpc2Nvbm5lY3RlZC4gTm90IG5lY2Vz c2FyeSBmb3IgbGVnYWN5IG1vZGUuDQo+ID4gPiAgCSAqLw0KPiA+ID4gLQlpZiAoIShsaXZlX3N0 YXR1c19tYXNrICYgQklUKFRDX1BPUlRfRFBfQUxUKSkpIHsNCj4gPiA+ICsJaWYgKCEodGNfcG9y dF9saXZlX3N0YXR1c19tYXNrKGRpZ19wb3J0KSAmDQo+ID4gPiBCSVQoVENfUE9SVF9EUF9BTFQp KSkgew0KPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogUEhZIHN1ZGRlbiBkaXNjb25u ZWN0XG4iLA0KPiA+ID4gIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOw0KPiA+ID4g LQkJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0KTsNCj4gPiA+IC0JCXJldHVybiBmYWxz ZTsNCj4gPiA+ICsJCWdvdG8gb3V0X3NldF9zYWZlX21vZGU7DQo+ID4gPiAgCX0NCj4gPiA+ICAN Cj4gPiA+IC0JcmV0dXJuIHRydWU7DQo+ID4gPiArCWRpZ19wb3J0LT50Y19tb2RlID0gVENfUE9S VF9EUF9BTFQ7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybjsNCj4gPiA+ICsNCj4gPiA+ICtvdXRf c2V0X3NhZmVfbW9kZToNCj4gPiA+ICsJaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKGRpZ19wb3J0 LCB0cnVlKTsNCj4gPiA+ICtvdXRfc2V0X3RidF9hbHRfbW9kZToNCj4gPiA+ICsJZGlnX3BvcnQt PnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7DQo+ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ID4gIC8q DQo+ID4gPiBAQCAtMjI3LDI3ICsyMjksMzcgQEAgdm9pZCBpY2xfdGNfcGh5X2Rpc2Nvbm5lY3Qo c3RydWN0DQo+ID4gPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQ0KPiA+ID4gIAlkZWZh dWx0Og0KPiA+ID4gIAkJTUlTU0lOR19DQVNFKGRpZ19wb3J0LT50Y19tb2RlKTsNCj4gPiA+ICAJ fQ0KPiA+ID4gK30NCj4gPiA+ICANCj4gPiA+IC0JRFJNX0RFQlVHX0tNUygiUG9ydCAlczogbW9k ZSAlcyBkaXNjb25uZWN0ZWRcbiIsDQo+ID4gPiAtCQkgICAgICBkaWdfcG9ydC0+dGNfcG9ydF9u YW1lLA0KPiA+ID4gLQkJICAgICAgdGNfcG9ydF9tb2RlX25hbWUoZGlnX3BvcnQtPnRjX21vZGUp KTsNCj4gPiA+ICtzdGF0aWMgZW51bSB0Y19wb3J0X21vZGUNCj4gPiA+ICtpbnRlbF90Y19wb3J0 X2dldF90YXJnZXRfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0DQo+ID4gPiAqZGlnX3Bv cnQpDQo+ID4gPiArew0KPiA+ID4gKwl1MzIgbGl2ZV9zdGF0dXNfbWFzayA9IHRjX3BvcnRfbGl2 ZV9zdGF0dXNfbWFzayhkaWdfcG9ydCk7DQo+ID4gPiArDQo+ID4gPiArCWlmIChsaXZlX3N0YXR1 c19tYXNrKQ0KPiA+ID4gKwkJcmV0dXJuIGZscyhsaXZlX3N0YXR1c19tYXNrKSAtIDE7DQo+ID4g PiArDQo+ID4gPiArCXJldHVybiBpY2xfdGNfcGh5X3N0YXR1c19jb21wbGV0ZShkaWdfcG9ydCkg JiYNCj4gPiA+ICsJICAgICAgIGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA/IFRDX1BPUlRfTEVH QUNZIDoNCj4gPiA+ICsJCQkJCSAgVENfUE9SVF9UQlRfQUxUOw0KPiA+IA0KPiA+IFlvdSBhcmUg cmlnaHQgYWJvdXQgdGhlIG9yZGVyIHRoYXQgQyB3aWxsIGV4ZWN1dGUgdGhpcyBidXQgY291bGQN Cj4gPiB5b3UNCj4gPiBhZGQgYSBwYWlyIG9mIHBhcmVudGhlc2lzIGFyb3VuZA0KPiA+IGljbF90 Y19waHlfc3RhdHVzX2NvbXBsZXRlKGRpZ19wb3J0KQ0KPiA+ICYmIGRpZ19wb3J0LT50Y19sZWdh Y3lfcG9ydCB0byBtYWtlIGVhc2llciB0byByZWFkPw0KPiANCj4gTm90IHN1cmUsIEkgdGhpbmsg dGhlIHVzZSBvZiAnYSAmJiBiID8gYyA6IGQnIHdpdGhvdXQgcGFyZW5zIGlzIHVzdWFsDQo+IGVu b3VnaCwgYnV0IG1heWJlIG90aGVycyBoYXZlIGEgYmV0dGVyIGlkZWEgZm9yIGEgcnVsZS1vZi10 aHVtYiBmb3INCj4gdXNpbmcgcGFyZW5zIHRoYXQgd2Ugc2hvdWxkIGZvbGxvdyBldmVyeXdoZXJl LiBKYW5pPw0KPiANCj4gQW55d2F5IHRoZSBmb2xsb3dpbmcgd291bGQgYmUgZWFzaWVyIHRvIHJl YWQgKGFsc28gd2UgY2FuIGF2b2lkIHRoZQ0KPiByZWcNCj4gcmVhZCBmb3IgdGhlICFsZWdhY3kg Y2FzZSk6DQo+IA0KPiAJaWYgKGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCAmJg0KPiAJICAgIGlj bF90Y19waHlfc3RhdHVzX2NvbXBsZXRlKGRpZ19wb3J0KSkNCj4gCQlyZXR1cm4gVENfUE9SVF9M RUdBQ1k7DQo+IA0KPiAJcmV0dXJuIFRDX1BPUlRfVEJUX0FMVDsNCj4gDQo+ID4gPiAgfQ0KPiA+ ID4gIA0KPiA+ID4gLXN0YXRpYyB2b2lkIGljbF91cGRhdGVfdGNfcG9ydF90eXBlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYsDQo+ID4gPiAtCQkJCSAgICBzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0DQo+ID4gPiAqaW50ZWxfZGlnX3BvcnQsDQo+ID4gPiAtCQkJCSAg ICB1MzIgbGl2ZV9zdGF0dXNfbWFzaykNCj4gPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF90Y19wb3J0 X3Jlc2V0X21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydA0KPiA+ID4gKmRpZ19wb3J0KQ0K PiA+ID4gIHsNCj4gPiA+IC0JZW51bSB0Y19wb3J0X21vZGUgb2xkX21vZGUgPSBpbnRlbF9kaWdf cG9ydC0+dGNfbW9kZTsNCj4gPiA+ICsJZW51bSB0Y19wb3J0X21vZGUgb2xkX3RjX21vZGUgPSBk aWdfcG9ydC0+dGNfbW9kZTsNCj4gPiA+ICANCj4gPiA+IC0JaWYgKCFsaXZlX3N0YXR1c19tYXNr KQ0KPiA+ID4gLQkJcmV0dXJuOw0KPiA+ID4gKwlpY2xfdGNfcGh5X2Rpc2Nvbm5lY3QoZGlnX3Bv cnQpOw0KPiA+ID4gKwlpY2xfdGNfcGh5X2Nvbm5lY3QoZGlnX3BvcnQpOw0KPiA+ID4gIA0KPiA+ ID4gLQlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IGZscyhsaXZlX3N0YXR1c19tYXNrKSAtIDE7 DQo+ID4gPiArCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IFRDIHBvcnQgbW9kZSByZXNldCAoJXMg LT4gJXMpXG4iLA0KPiA+ID4gKwkJICAgICAgZGlnX3BvcnQtPnRjX3BvcnRfbmFtZSwNCj4gPiA+ ICsJCSAgICAgIHRjX3BvcnRfbW9kZV9uYW1lKG9sZF90Y19tb2RlKSwNCj4gPiA+ICsJCSAgICAg IHRjX3BvcnRfbW9kZV9uYW1lKGRpZ19wb3J0LT50Y19tb2RlKSk7DQo+ID4gPiArfQ0KPiA+ID4g IA0KPiA+ID4gLQlpZiAob2xkX21vZGUgIT0gaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUpDQo+ID4g PiAtCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBwb3J0IGhhcyBtb2RlICVzXG4iLA0KPiA+ID4g LQkJCSAgICAgIGludGVsX2RpZ19wb3J0LT50Y19wb3J0X25hbWUsDQo+ID4gPiAtCQkJICAgICAg dGNfcG9ydF9tb2RlX25hbWUoaW50ZWxfZGlnX3BvcnQtDQo+ID4gPiA+IHRjX21vZGUpKTsNCj4g PiA+ICtzdGF0aWMgYm9vbCBpbnRlbF90Y19wb3J0X25lZWRzX3Jlc2V0KHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQNCj4gPiA+ICpkaWdfcG9ydCkNCj4gPiA+ICt7DQo+ID4gPiArCXJldHVybiBp bnRlbF90Y19wb3J0X2dldF90YXJnZXRfbW9kZShkaWdfcG9ydCkgIT0gZGlnX3BvcnQtDQo+ID4g PiA+IHRjX21vZGU7DQo+ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ID4gIC8qDQo+ID4gPiBAQCAtMjYy LDI0ICsyNzQsMTAgQEAgc3RhdGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0 DQo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiA+ICAgKi8NCj4gPiA+ICBi b29sIGludGVsX3RjX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQNCj4g PiA+ICpkaWdfcG9ydCkNCj4gPiA+ICB7DQo+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtDQo+ID4gPiA+IGJhc2UuYmFzZS5kZXYpOw0K PiA+ID4gLQl1MzIgbGl2ZV9zdGF0dXNfbWFzayA9IHRjX3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhk aWdfcG9ydCk7DQo+ID4gPiAtDQo+ID4gPiAtCS8qDQo+ID4gPiAtCSAqIFRoZSBzcGVjIHNheXMg d2Ugc2hvdWxkbid0IGJlIHVzaW5nIHRoZSBJU1IgYml0cyBmb3INCj4gPiA+IGRldGVjdGluZw0K PiA+ID4gLQkgKiBiZXR3ZWVuIFRDIGFuZCBUQlQuIFdlIHNob3VsZCB1c2UgREZMRVhEUFNQLg0K PiA+ID4gLQkgKi8NCj4gPiA+IC0JaWYgKCFsaXZlX3N0YXR1c19tYXNrICYmICFkaWdfcG9ydC0+ dGNfbGVnYWN5X3BvcnQpIHsNCj4gPiA+IC0JCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9y dCk7DQo+ID4gPiAtDQo+ID4gPiAtCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiAtCX0NCj4gPiA+IC0N Cj4gPiA+IC0JaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoZGV2X3ByaXYsIGRpZ19wb3J0LCBsaXZl X3N0YXR1c19tYXNrKTsNCj4gPiA+IC0JaWYgKCFpY2xfdGNfcGh5X2Nvbm5lY3QoZGlnX3BvcnQp KQ0KPiA+ID4gLQkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gKwlpZiAoaW50ZWxfdGNfcG9ydF9uZWVk c19yZXNldChkaWdfcG9ydCkpDQo+ID4gPiArCQlpbnRlbF90Y19wb3J0X3Jlc2V0X21vZGUoZGln X3BvcnQpOw0KPiA+ID4gIA0KPiA+ID4gLQlyZXR1cm4gdHJ1ZTsNCj4gPiA+ICsJcmV0dXJuIHRj X3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhkaWdfcG9ydCkgJiBCSVQoZGlnX3BvcnQtDQo+ID4gPiA+ IHRjX21vZGUpOw0KPiA+ID4gIH0NCj4gPiA+ICANCj4gPiA+ICB2b2lkIGludGVsX3RjX3BvcnRf aW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwNCj4gPiA+IGJvb2wNCj4g PiA+IGlzX2xlZ2FjeSkNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeA==