From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/i915: constify validate_vbt in VBT parsing Date: Tue, 12 May 2015 15:07:59 +0200 Message-ID: <20150512130759.GV15256@phenom.ffwll.local> References: <20150512120946.GX18908@intel.com> <1431434492-26300-1-git-send-email-jani.nikula@intel.com> <20150512125349.GB18908@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 37E296E5F8 for ; Tue, 12 May 2015 06:05:39 -0700 (PDT) Received: by wicnf17 with SMTP id nf17so14603562wic.1 for ; Tue, 12 May 2015 06:05:38 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150512125349.GB18908@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Jani Nikula , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXkgMTIsIDIwMTUgYXQgMDM6NTM6NDlQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgTWF5IDEyLCAyMDE1IGF0IDAzOjQxOjMyUE0gKzAzMDAsIEphbmkg TmlrdWxhIHdyb3RlOgo+ID4gTWFrZSBpbnB1dCBhbmQgb3V0cHV0IG9mIHZhbGlkYXRlX3ZidCBj b25zdCwgYW5kIGZpeCB0aGUgZmFsbG91dC4gV2UKPiA+IHNob3VsZG4ndCBtb2RpZnkgdGhlIFZC VCwgc28gbWFrZSB0aGUgY29tcGlsZXIgaGVscCB1cyBoZXJlLgo+ID4gCj4gPiB2MjogdXNlIHBv aW50ZXIgYXJpdGhtZXRpY3Mgb24gdm9pZCogdG8gc2ltcGxpZnkgKFZpbGxlKQo+ID4gCj4gPiBT aWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IAo+IFJl dmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PgoKQm90aCBwYXRjaGVzIG1lcmdlZCwgdGhhbmtzLgotRGFuaWVsCgo+IAo+ID4gLS0tCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jIHwgNDkgKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMo KyksIDI0IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYmlvcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4g PiBpbmRleCA1ODc2ZTdjYjEzMmQuLmNiZDE2YzAxOTU5YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYmlvcy5jCj4gPiBAQCAtMjA1LDcgKzIwNSw3IEBAIGdldF9sdmRzX2ZwX3RpbWlu Zyhjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiLAo+ID4gIC8qIFRyeSB0byBmaW5kIGludGVn cmF0ZWQgcGFuZWwgZGF0YSAqLwo+ID4gIHN0YXRpYyB2b2lkCj4gPiAgcGFyc2VfbGZwX3BhbmVs X2RhdGEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCSAgICBzdHJ1 Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gKwkJICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAq YmRiKQo+ID4gIHsKPiA+ICAJY29uc3Qgc3RydWN0IGJkYl9sdmRzX29wdGlvbnMgKmx2ZHNfb3B0 aW9uczsKPiA+ICAJY29uc3Qgc3RydWN0IGJkYl9sdmRzX2xmcF9kYXRhICpsdmRzX2xmcF9kYXRh Owo+ID4gQEAgLTMxMSw3ICszMTEsOCBAQCBwYXJzZV9sZnBfcGFuZWxfZGF0YShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkCj4g PiAtcGFyc2VfbGZwX2JhY2tsaWdodChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiArcGFyc2VfbGZwX2JhY2tsaWdodChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkgICAgY29uc3Qgc3RydWN0IGJkYl9o ZWFkZXIgKmJkYikKPiA+ICB7Cj4gPiAgCWNvbnN0IHN0cnVjdCBiZGJfbGZwX2JhY2tsaWdodF9k YXRhICpiYWNrbGlnaHRfZGF0YTsKPiA+ICAJY29uc3Qgc3RydWN0IGJkYl9sZnBfYmFja2xpZ2h0 X2RhdGFfZW50cnkgKmVudHJ5Owo+ID4gQEAgLTM0OSw3ICszNTAsNyBAQCBwYXJzZV9sZnBfYmFj a2xpZ2h0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGJkYl9oZWFk ZXIgKmJkYikKPiA+ICAvKiBUcnkgdG8gZmluZCBzZHZvIHBhbmVsIGRhdGEgKi8KPiA+ICBzdGF0 aWMgdm9pZAo+ID4gIHBhcnNlX3Nkdm9fcGFuZWxfZGF0YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiAtCQkgICAgICBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gKwkJ ICAgICAgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiA+ICB7Cj4gPiAgCWNvbnN0IHN0 cnVjdCBsdmRzX2R2b190aW1pbmcgKmR2b190aW1pbmc7Cj4gPiAgCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpwYW5lbF9maXhlZF9tb2RlOwo+ID4gQEAgLTQwMyw3ICs0MDQsNyBAQCBzdGF0aWMg aW50IGludGVsX2Jpb3Nfc3NjX2ZyZXF1ZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4g IAo+ID4gIHN0YXRpYyB2b2lkCj4gPiAgcGFyc2VfZ2VuZXJhbF9mZWF0dXJlcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAtCQkgICAgICAgc3RydWN0IGJkYl9oZWFkZXIg KmJkYikKPiA+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gIHsK PiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gPiAgCWNvbnN0 IHN0cnVjdCBiZGJfZ2VuZXJhbF9mZWF0dXJlcyAqZ2VuZXJhbDsKPiA+IEBAIC00MjksNyArNDMw LDcgQEAgcGFyc2VfZ2VuZXJhbF9mZWF0dXJlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiAgCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBwYXJzZV9nZW5lcmFsX2RlZmluaXRp b25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IC0JCQkgIHN0cnVjdCBi ZGJfaGVhZGVyICpiZGIpCj4gPiArCQkJICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ ID4gIHsKPiA+ICAJY29uc3Qgc3RydWN0IGJkYl9nZW5lcmFsX2RlZmluaXRpb25zICpnZW5lcmFs Owo+ID4gIAo+ID4gQEAgLTQ1Niw3ICs0NTcsNyBAQCBjaGlsZF9kZXZpY2VfcHRyKGNvbnN0IHN0 cnVjdCBiZGJfZ2VuZXJhbF9kZWZpbml0aW9ucyAqcF9kZWZzLCBpbnQgaSkKPiA+ICAKPiA+ICBz dGF0aWMgdm9pZAo+ID4gIHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCSAgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiA+ ICsJCQkgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiAgewo+ID4gIAlzdHJ1Y3Qg c2R2b19kZXZpY2VfbWFwcGluZyAqcF9tYXBwaW5nOwo+ID4gIAljb25zdCBzdHJ1Y3QgYmRiX2dl bmVyYWxfZGVmaW5pdGlvbnMgKnBfZGVmczsKPiA+IEBAIC01NDYsNyArNTQ3LDcgQEAgcGFyc2Vf c2R2b19kZXZpY2VfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiAgCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBwYXJzZV9kcml2ZXJfZmVhdHVyZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJICAgICAgIHN0cnVjdCBiZGJfaGVhZGVy ICpiZGIpCj4gPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gIHsK PiA+ICAJY29uc3Qgc3RydWN0IGJkYl9kcml2ZXJfZmVhdHVyZXMgKmRyaXZlcjsKPiA+ICAKPiA+ IEBAIC01NzIsNyArNTczLDcgQEAgcGFyc2VfZHJpdmVyX2ZlYXR1cmVzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQKPiA+IC1w YXJzZV9lZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3QgYmRiX2hl YWRlciAqYmRiKQo+ID4gK3BhcnNlX2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiAgewo+ID4gIAljb25zdCBzdHJ1 Y3QgYmRiX2VkcCAqZWRwOwo+ID4gIAljb25zdCBzdHJ1Y3QgZWRwX3Bvd2VyX3NlcSAqZWRwX3Bw czsKPiA+IEBAIC02ODQsNyArNjg1LDcgQEAgcGFyc2VfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiA+ICB9Cj4gPiAgCj4gPiAg c3RhdGljIHZvaWQKPiA+IC1wYXJzZV9wc3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gK3BhcnNlX3BzcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiAg ewo+ID4gIAljb25zdCBzdHJ1Y3QgYmRiX3BzciAqcHNyOwo+ID4gIAljb25zdCBzdHJ1Y3QgcHNy X3RhYmxlICpwc3JfdGFibGU7Cj4gPiBAQCAtNzk1LDcgKzc5Niw3IEBAIHN0YXRpYyB1OCAqZ290 b19uZXh0X3NlcXVlbmNlKHU4ICpkYXRhLCBpbnQgKnNpemUpCj4gPiAgfQo+ID4gIAo+ID4gIHN0 YXRpYyB2b2lkCj4gPiAtcGFyc2VfbWlwaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiArcGFyc2VfbWlwaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiAg ewo+ID4gIAljb25zdCBzdHJ1Y3QgYmRiX21pcGlfY29uZmlnICpzdGFydDsKPiA+ICAJY29uc3Qg c3RydWN0IGJkYl9taXBpX3NlcXVlbmNlICpzZXF1ZW5jZTsKPiA+IEBAIC05NDYsNyArOTQ3LDcg QEAgZXJyOgo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBwYXJzZV9kZGlfcG9ydChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ID4gLQkJCSAg IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiArCQkJICAgY29uc3Qgc3RydWN0IGJkYl9oZWFk ZXIgKmJkYikKPiA+ICB7Cj4gPiAgCXVuaW9uIGNoaWxkX2RldmljZV9jb25maWcgKml0LCAqY2hp bGQgPSBOVUxMOwo+ID4gIAlzdHJ1Y3QgZGRpX3ZidF9wb3J0X2luZm8gKmluZm8gPSAmZGV2X3By aXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdOwo+ID4gQEAgLTEwNDgsNyArMTA0OSw3IEBAIHN0 YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgZW51bSBwb3J0IHBvcnQsCj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIHBhcnNlX2Rk aV9wb3J0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAtCQkJICAgIHN0 cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiArCQkJICAgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVy ICpiZGIpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRl djsKPiA+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gPiBAQCAtMTA2OCw3ICsxMDY5LDcgQEAgc3RhdGlj IHZvaWQgcGFyc2VfZGRpX3BvcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ICAKPiA+ICBzdGF0aWMgdm9pZAo+ID4gIHBhcnNlX2RldmljZV9tYXBwaW5nKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IC0JCSAgICAgICBzdHJ1Y3QgYmRiX2hlYWRl ciAqYmRiKQo+ID4gKwkJICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gIHsK PiA+ICAJY29uc3Qgc3RydWN0IGJkYl9nZW5lcmFsX2RlZmluaXRpb25zICpwX2RlZnM7Cj4gPiAg CWNvbnN0IHVuaW9uIGNoaWxkX2RldmljZV9jb25maWcgKnBfY2hpbGQ7Cj4gPiBAQCAtMTE5OCwx OSArMTE5OSwyMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgaW50ZWxfbm9f b3ByZWdpb25fdmJ0W10gPSB7Cj4gPiAgCXsgfQo+ID4gIH07Cj4gPiAgCj4gPiAtc3RhdGljIHN0 cnVjdCBiZGJfaGVhZGVyICp2YWxpZGF0ZV92YnQoY2hhciAqYmFzZSwgc2l6ZV90IHNpemUsCj4g PiAtCQkJCSAgICAgICBzdHJ1Y3QgdmJ0X2hlYWRlciAqdmJ0LAo+ID4gLQkJCQkgICAgICAgY29u c3QgY2hhciAqc291cmNlKQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqdmFs aWRhdGVfdmJ0KGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBzaXplLAo+ID4gKwkJCQkJICAgICBj b25zdCB2b2lkICpfdmJ0LAo+ID4gKwkJCQkJICAgICBjb25zdCBjaGFyICpzb3VyY2UpCj4gPiAg ewo+ID4gKwljb25zdCBzdHJ1Y3QgdmJ0X2hlYWRlciAqdmJ0ID0gX3ZidDsKPiA+ICAJc2l6ZV90 IG9mZnNldDsKPiA+IC0Jc3RydWN0IGJkYl9oZWFkZXIgKmJkYjsKPiA+ICsJY29uc3Qgc3RydWN0 IGJkYl9oZWFkZXIgKmJkYjsKPiA+ICAKPiA+ICAJaWYgKHZidCA9PSBOVUxMKSB7Cj4gPiAgCQlE Uk1fREVCVUdfRFJJVkVSKCJWQlQgc2lnbmF0dXJlIG1pc3NpbmdcbiIpOwo+ID4gIAkJcmV0dXJu IE5VTEw7Cj4gPiAgCX0KPiA+ICAKPiA+IC0Jb2Zmc2V0ID0gKGNoYXIgKil2YnQgLSBiYXNlOwo+ ID4gKwlvZmZzZXQgPSBfdmJ0IC0gYmFzZTsKPiA+ICAJaWYgKG9mZnNldCArIHNpemVvZihzdHJ1 Y3QgdmJ0X2hlYWRlcikgPiBzaXplKSB7Cj4gPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJWQlQgaGVh ZGVyIGluY29tcGxldGVcbiIpOwo+ID4gIAkJcmV0dXJuIE5VTEw7Cj4gPiBAQCAtMTIyNyw3ICsx MjI5LDcgQEAgc3RhdGljIHN0cnVjdCBiZGJfaGVhZGVyICp2YWxpZGF0ZV92YnQoY2hhciAqYmFz ZSwgc2l6ZV90IHNpemUsCj4gPiAgCQlyZXR1cm4gTlVMTDsKPiA+ICAJfQo+ID4gIAo+ID4gLQli ZGIgPSAoc3RydWN0IGJkYl9oZWFkZXIgKikoYmFzZSArIG9mZnNldCk7Cj4gPiArCWJkYiA9IGJh c2UgKyBvZmZzZXQ7Cj4gPiAgCWlmIChvZmZzZXQgKyBiZGItPmJkYl9zaXplID4gc2l6ZSkgewo+ ID4gIAkJRFJNX0RFQlVHX0RSSVZFUigiQkRCIGluY29tcGxldGVcbiIpOwo+ID4gIAkJcmV0dXJu IE5VTEw7Cj4gPiBAQCAtMTI1Miw3ICsxMjU0LDcgQEAgaW50ZWxfcGFyc2VfYmlvcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBk ZXYtPnBkZXY7Cj4gPiAtCXN0cnVjdCBiZGJfaGVhZGVyICpiZGIgPSBOVUxMOwo+ID4gKwljb25z dCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiID0gTlVMTDsKPiA+ICAJdTggX19pb21lbSAqYmlvcyA9 IE5VTEw7Cj4gPiAgCj4gPiAgCWlmIChIQVNfUENIX05PUChkZXYpKQo+ID4gQEAgLTEyNjIsOSAr MTI2NCw4IEBAIGludGVsX3BhcnNlX2Jpb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAK PiA+ICAJLyogWFhYIFNob3VsZCB0aGlzIHZhbGlkYXRpb24gYmUgbW92ZWQgdG8gaW50ZWxfb3By ZWdpb24uYz8gKi8KPiA+ICAJaWYgKCFkbWlfY2hlY2tfc3lzdGVtKGludGVsX25vX29wcmVnaW9u X3ZidCkgJiYgZGV2X3ByaXYtPm9wcmVnaW9uLnZidCkKPiA+IC0JCWJkYiA9IHZhbGlkYXRlX3Zi dCgoY2hhciAqKWRldl9wcml2LT5vcHJlZ2lvbi5oZWFkZXIsIE9QUkVHSU9OX1NJWkUsCj4gPiAt CQkJCSAgIChzdHJ1Y3QgdmJ0X2hlYWRlciAqKWRldl9wcml2LT5vcHJlZ2lvbi52YnQsCj4gPiAt CQkJCSAgICJPcFJlZ2lvbiIpOwo+ID4gKwkJYmRiID0gdmFsaWRhdGVfdmJ0KGRldl9wcml2LT5v cHJlZ2lvbi5oZWFkZXIsIE9QUkVHSU9OX1NJWkUsCj4gPiArCQkJCSAgIGRldl9wcml2LT5vcHJl Z2lvbi52YnQsICJPcFJlZ2lvbiIpOwo+ID4gIAo+ID4gIAlpZiAoYmRiID09IE5VTEwpIHsKPiA+ ICAJCXNpemVfdCBpLCBzaXplOwo+ID4gQEAgLTEyNzcsNyArMTI3OCw3IEBAIGludGVsX3BhcnNl X2Jpb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJCWZvciAoaSA9IDA7IGkgKyA0IDwg c2l6ZTsgaSsrKSB7Cj4gPiAgCQkJaWYgKG1lbWNtcChiaW9zICsgaSwgIiRWQlQiLCA0KSA9PSAw KSB7Cj4gPiAgCQkJCWJkYiA9IHZhbGlkYXRlX3ZidChiaW9zLCBzaXplLAo+ID4gLQkJCQkJCSAg IChzdHJ1Y3QgdmJ0X2hlYWRlciAqKShiaW9zICsgaSksCj4gPiArCQkJCQkJICAgYmlvcyArIGks Cj4gPiAgCQkJCQkJICAgIlBDSSBST00iKTsKPiA+ICAJCQkJYnJlYWs7Cj4gPiAgCQkJfQo+ID4g LS0gCj4gPiAyLjEuNAo+IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsIE9UQwo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK