From: Corey Minyard Subject: Re: [PATCH 16/39] ipmi: simplify procfs code Date: Thu, 19 Apr 2018 10:29:29 -0500 Message-ID: References: <20180419124140.9309-1-hch@lst.de> <20180419124140.9309-17-hch@lst.de> Reply-To: minyard@acm.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Cc: linux-rtc@vger.kernel.org, Alessandro Zummo , Alexandre Belloni , devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org, Greg Kroah-Hartman , jfs-discussion@lists.sourceforge.net, linux-afs@lists.infradead.org, linux-acpi@vger.kernel.org, netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Jiri Slaby , linux-ext4@vger.kernel.org, Alexey Dobriyan , megaraidlinux.pdl@broadcom.com, drbd-dev@lists.linbit.com To: Christoph Hellwig , Andrew Morton , Alexander Viro Return-path: In-Reply-To: <20180419124140.9309-17-hch@lst.de> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" List-Id: linux-ext4.vger.kernel.org T24gMDQvMTkvMjAxOCAwNzo0MSBBTSwgQ2hyaXN0b3BoIEhlbGx3aWcgd3JvdGU6Cj4gVXNlIHJl bW92ZV9wcm9jX3N1YnRyZWUgdG8gcmVtb3ZlIHRoZSB3aG9sZSBzdWJ0cmVlIG9uIGNsZWFudXAg aW5zdGVhZAo+IG9mIGEgaGFuZCByb2xsZWQgbGlzdCBvZiBwcm9jIGVudHJpZXMsIHVud2luZCB0 aGUgcmVnaXN0cmF0aW9uIGxvb3AgaW50bwo+IGluZGl2aWR1YWwgY2FsbHMuICBTd2l0Y2ggdG8g dXNlIHByb2NfY3JlYXRlX3NpbmdsZSB0byBmdXJ0aGVyIHNpbXBsaWZ5Cj4gdGhlIGNvZGUuCgpJ J20geWFua2luZyBhbGwgdGhlIHByb2MgY29kZSBvdXQgb2YgdGhlIElQTUkgZHJpdmVyIGluIDMu MTguwqAgU28gdGhpcyAKaXMgcHJvYmFibHkKbm90IG5lY2Vzc2FyeS4KClRoYW5rcywKCi1jb3Jl eQoKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KPiAtLS0K PiAgIGRyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jIHwgMTUwICsrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jICAg IHwgIDQ3ICstLS0tLS0tLQo+ICAgZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zc2lmLmMgICAgICAg fCAgMzQgKy0tLS0tLQo+ICAgaW5jbHVkZS9saW51eC9pcG1pX3NtaS5oICAgICAgICAgICAgfCAg IDggKy0KPiAgIDQgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMjA2IGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5j IGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmMKPiBpbmRleCAzNjExNDg5Mzg4 MDEuLmMxOGRiMzEzZTRjNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX21z Z2hhbmRsZXIuYwo+ICsrKyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jCj4g QEAgLTI0NywxMyArMjQ3LDYgQEAgc3RydWN0IGlwbWlfbXlfYWRkcmluZm8gewo+ICAgCXVuc2ln bmVkIGNoYXIgbHVuOwo+ICAgfTsKPiAgIAo+IC0jaWZkZWYgQ09ORklHX0lQTUlfUFJPQ19JTlRF UkZBQ0UKPiAtc3RydWN0IGlwbWlfcHJvY19lbnRyeSB7Cj4gLQljaGFyICAgICAgICAgICAgICAg ICAgICpuYW1lOwo+IC0Jc3RydWN0IGlwbWlfcHJvY19lbnRyeSAqbmV4dDsKPiAtfTsKPiAtI2Vu ZGlmCj4gLQo+ICAgLyoKPiAgICAqIE5vdGUgdGhhdCB0aGUgcHJvZHVjdCBpZCwgbWFudWZhY3R1 cmVyIGlkLCBndWlkLCBhbmQgZGV2aWNlIGlkIGFyZQo+ICAgICogaW1tdXRhYmxlIGluIHRoaXMg c3RydWN0dXJlLCBzbyBkeW5fbXV0ZXggaXMgbm90IHJlcXVpcmVkIGZvcgo+IEBAIC00MzAsMTAg KzQyMyw2IEBAIHN0cnVjdCBpcG1pX3NtaSB7Cj4gICAJdm9pZCAgICAgICAgICAgICAgICAgICAg ICpzZW5kX2luZm87Cj4gICAKPiAgICNpZmRlZiBDT05GSUdfSVBNSV9QUk9DX0lOVEVSRkFDRQo+ IC0JLyogQSBsaXN0IG9mIHByb2MgZW50cmllcyBmb3IgdGhpcyBpbnRlcmZhY2UuICovCj4gLQlz dHJ1Y3QgbXV0ZXggICAgICAgICAgIHByb2NfZW50cnlfbG9jazsKPiAtCXN0cnVjdCBpcG1pX3By b2NfZW50cnkgKnByb2NfZW50cmllczsKPiAtCj4gICAJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpw cm9jX2RpcjsKPiAgIAljaGFyICAgICAgICAgICAgICAgICAgcHJvY19kaXJfbmFtZVsxMF07Cj4g ICAjZW5kaWYKPiBAQCAtMjM1OCwxOCArMjM0Nyw2IEBAIHN0YXRpYyBpbnQgc21pX2lwbWJfcHJv Y19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdikKPiAgIAlyZXR1cm4gMDsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgaW50IHNtaV9pcG1iX3Byb2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAtewo+IC0JcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHNt aV9pcG1iX3Byb2Nfc2hvdywgUERFX0RBVEEoaW5vZGUpKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc21pX2lwbWJfcHJvY19vcHMgPSB7Cj4gLQkub3Bl bgkJPSBzbWlfaXBtYl9wcm9jX29wZW4sCj4gLQkucmVhZAkJPSBzZXFfcmVhZCwKPiAtCS5sbHNl ZWsJCT0gc2VxX2xzZWVrLAo+IC0JLnJlbGVhc2UJPSBzaW5nbGVfcmVsZWFzZSwKPiAtfTsKPiAt Cj4gICBzdGF0aWMgaW50IHNtaV92ZXJzaW9uX3Byb2Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnYpCj4gICB7Cj4gICAJaXBtaV9zbWlfdCBpbnRmID0gbS0+cHJpdmF0ZTsKPiBAQCAt MjM4NywxOCArMjM2NCw2IEBAIHN0YXRpYyBpbnQgc21pX3ZlcnNpb25fcHJvY19zaG93KHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0 aWMgaW50IHNtaV92ZXJzaW9uX3Byb2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlsZSkKPiAtewo+IC0JcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHNtaV92ZXJzaW9u X3Byb2Nfc2hvdywgUERFX0RBVEEoaW5vZGUpKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgc21pX3ZlcnNpb25fcHJvY19vcHMgPSB7Cj4gLQkub3BlbgkJ PSBzbWlfdmVyc2lvbl9wcm9jX29wZW4sCj4gLQkucmVhZAkJPSBzZXFfcmVhZCwKPiAtCS5sbHNl ZWsJCT0gc2VxX2xzZWVrLAo+IC0JLnJlbGVhc2UJPSBzaW5nbGVfcmVsZWFzZSwKPiAtfTsKPiAt Cj4gICBzdGF0aWMgaW50IHNtaV9zdGF0c19wcm9jX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp2KQo+ICAgewo+ICAgCWlwbWlfc21pX3QgaW50ZiA9IG0tPnByaXZhdGU7Cj4gQEAgLTI0 NjIsOTUgKzI0MjcsNDUgQEAgc3RhdGljIGludCBzbWlfc3RhdHNfcHJvY19zaG93KHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMg aW50IHNtaV9zdGF0c19wcm9jX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbGUpCj4gLXsKPiAtCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBzbWlfc3RhdHNfcHJvY19z aG93LCBQREVfREFUQShpbm9kZSkpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBzbWlfc3RhdHNfcHJvY19vcHMgPSB7Cj4gLQkub3BlbgkJPSBzbWlfc3Rh dHNfcHJvY19vcGVuLAo+IC0JLnJlYWQJCT0gc2VxX3JlYWQsCj4gLQkubGxzZWVrCQk9IHNlcV9s c2VlaywKPiAtCS5yZWxlYXNlCT0gc2luZ2xlX3JlbGVhc2UsCj4gLX07Cj4gLQo+ICAgaW50IGlw bWlfc21pX2FkZF9wcm9jX2VudHJ5KGlwbWlfc21pX3Qgc21pLCBjaGFyICpuYW1lLAo+IC0JCQkg ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqcHJvY19vcHMsCj4gLQkJCSAgICB2b2lk ICpkYXRhKQo+ICsJCWludCAoKnNob3cpKHN0cnVjdCBzZXFfZmlsZSAqLCB2b2lkICopLCB2b2lk ICpkYXRhKQo+ICAgewo+IC0JaW50ICAgICAgICAgICAgICAgICAgICBydiA9IDA7Cj4gLQlzdHJ1 Y3QgcHJvY19kaXJfZW50cnkgICpmaWxlOwo+IC0Jc3RydWN0IGlwbWlfcHJvY19lbnRyeSAqZW50 cnk7Cj4gLQo+IC0JLyogQ3JlYXRlIGEgbGlzdCBlbGVtZW50LiAqLwo+IC0JZW50cnkgPSBrbWFs bG9jKHNpemVvZigqZW50cnkpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghZW50cnkpCj4gKwlpZiAo IXByb2NfY3JlYXRlX3NpbmdsZV9kYXRhKG5hbWUsIDAsIHNtaS0+cHJvY19kaXIsIHNob3csIGRh dGEpKQo+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiAtCWVudHJ5LT5uYW1lID0ga3N0cmR1cChuYW1l LCBHRlBfS0VSTkVMKTsKPiAtCWlmICghZW50cnktPm5hbWUpIHsKPiAtCQlrZnJlZShlbnRyeSk7 Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQl9Cj4gLQo+IC0JZmlsZSA9IHByb2NfY3JlYXRlX2Rh dGEobmFtZSwgMCwgc21pLT5wcm9jX2RpciwgcHJvY19vcHMsIGRhdGEpOwo+IC0JaWYgKCFmaWxl KSB7Cj4gLQkJa2ZyZWUoZW50cnktPm5hbWUpOwo+IC0JCWtmcmVlKGVudHJ5KTsKPiAtCQlydiA9 IC1FTk9NRU07Cj4gLQl9IGVsc2Ugewo+IC0JCW11dGV4X2xvY2soJnNtaS0+cHJvY19lbnRyeV9s b2NrKTsKPiAtCQkvKiBTdGljayBpdCBvbiB0aGUgbGlzdC4gKi8KPiAtCQllbnRyeS0+bmV4dCA9 IHNtaS0+cHJvY19lbnRyaWVzOwo+IC0JCXNtaS0+cHJvY19lbnRyaWVzID0gZW50cnk7Cj4gLQkJ bXV0ZXhfdW5sb2NrKCZzbWktPnByb2NfZW50cnlfbG9jayk7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJu IHJ2Owo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICBFWFBPUlRfU1lNQk9MKGlwbWlfc21pX2FkZF9w cm9jX2VudHJ5KTsKPiAgIAo+ICAgc3RhdGljIGludCBhZGRfcHJvY19lbnRyaWVzKGlwbWlfc21p X3Qgc21pLCBpbnQgbnVtKQo+ICAgewo+IC0JaW50IHJ2ID0gMDsKPiAtCj4gICAJc3ByaW50Zihz bWktPnByb2NfZGlyX25hbWUsICIlZCIsIG51bSk7Cj4gICAJc21pLT5wcm9jX2RpciA9IHByb2Nf bWtkaXIoc21pLT5wcm9jX2Rpcl9uYW1lLCBwcm9jX2lwbWlfcm9vdCk7Cj4gICAJaWYgKCFzbWkt PnByb2NfZGlyKQo+IC0JCXJ2ID0gLUVOT01FTTsKPiAtCj4gLQlpZiAocnYgPT0gMCkKPiAtCQly diA9IGlwbWlfc21pX2FkZF9wcm9jX2VudHJ5KHNtaSwgInN0YXRzIiwKPiAtCQkJCQkgICAgICZz bWlfc3RhdHNfcHJvY19vcHMsCj4gLQkJCQkJICAgICBzbWkpOwo+IC0KPiAtCWlmIChydiA9PSAw KQo+IC0JCXJ2ID0gaXBtaV9zbWlfYWRkX3Byb2NfZW50cnkoc21pLCAiaXBtYiIsCj4gLQkJCQkJ ICAgICAmc21pX2lwbWJfcHJvY19vcHMsCj4gLQkJCQkJICAgICBzbWkpOwo+IC0KPiAtCWlmIChy diA9PSAwKQo+IC0JCXJ2ID0gaXBtaV9zbWlfYWRkX3Byb2NfZW50cnkoc21pLCAidmVyc2lvbiIs Cj4gLQkJCQkJICAgICAmc21pX3ZlcnNpb25fcHJvY19vcHMsCj4gLQkJCQkJICAgICBzbWkpOwo+ IC0KPiAtCXJldHVybiBydjsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWlmICghcHJvY19jcmVh dGVfc2luZ2xlX2RhdGEoInN0YXRzIiwgMCwgc21pLT5wcm9jX2RpciwKPiArCQkJc21pX3N0YXRz X3Byb2Nfc2hvdywgc21pKSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWlmICghcHJvY19jcmVh dGVfc2luZ2xlX2RhdGEoImlwbWIiLCAwLCBzbWktPnByb2NfZGlyLAo+ICsJCQlzbWlfaXBtYl9w cm9jX3Nob3csIHNtaSkpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlpZiAoIXByb2NfY3JlYXRl X3NpbmdsZV9kYXRhKCJ2ZXJzaW9uIiwgMCwgc21pLT5wcm9jX2RpciwKPiArCQkJc21pX3ZlcnNp b25fcHJvY19zaG93LCBzbWkpKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJcmV0dXJuIDA7Cj4g ICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIHJlbW92ZV9wcm9jX2VudHJpZXMoaXBtaV9zbWlfdCBz bWkpCj4gICB7Cj4gLQlzdHJ1Y3QgaXBtaV9wcm9jX2VudHJ5ICplbnRyeTsKPiAtCj4gLQltdXRl eF9sb2NrKCZzbWktPnByb2NfZW50cnlfbG9jayk7Cj4gLQl3aGlsZSAoc21pLT5wcm9jX2VudHJp ZXMpIHsKPiAtCQllbnRyeSA9IHNtaS0+cHJvY19lbnRyaWVzOwo+IC0JCXNtaS0+cHJvY19lbnRy aWVzID0gZW50cnktPm5leHQ7Cj4gLQo+IC0JCXJlbW92ZV9wcm9jX2VudHJ5KGVudHJ5LT5uYW1l LCBzbWktPnByb2NfZGlyKTsKPiAtCQlrZnJlZShlbnRyeS0+bmFtZSk7Cj4gLQkJa2ZyZWUoZW50 cnkpOwo+IC0JfQo+IC0JbXV0ZXhfdW5sb2NrKCZzbWktPnByb2NfZW50cnlfbG9jayk7Cj4gLQly ZW1vdmVfcHJvY19lbnRyeShzbWktPnByb2NfZGlyX25hbWUsIHByb2NfaXBtaV9yb290KTsKPiAr CWlmIChzbWktPnByb2NfZGlyKQo+ICsJCXJlbW92ZV9wcm9jX3N1YnRyZWUoc21pLT5wcm9jX2Rp cl9uYW1lLCBwcm9jX2lwbWlfcm9vdCk7Cj4gK30KPiArI2Vsc2UKPiArc3RhdGljIGludCBhZGRf cHJvY19lbnRyaWVzKGlwbWlfc21pX3Qgc21pLCBpbnQgbnVtKQo+ICt7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICtzdGF0aWMgdm9pZCByZW1vdmVfcHJvY19lbnRyaWVzKGlwbWlfc21pX3Qgc21pKQo+ ICt7Cj4gICB9Cj4gICAjZW5kaWYgLyogQ09ORklHX0lQTUlfUFJPQ19JTlRFUkZBQ0UgKi8KPiAg IAo+IEBAIC0zMzg2LDkgKzMzMDEsNiBAQCBpbnQgaXBtaV9yZWdpc3Rlcl9zbWkoY29uc3Qgc3Ry dWN0IGlwbWlfc21pX2hhbmRsZXJzICpoYW5kbGVycywKPiAgIAkJaW50Zi0+c2VxX3RhYmxlW2pd LnNlcWlkID0gMDsKPiAgIAl9Cj4gICAJaW50Zi0+Y3Vycl9zZXEgPSAwOwo+IC0jaWZkZWYgQ09O RklHX0lQTUlfUFJPQ19JTlRFUkZBQ0UKPiAtCW11dGV4X2luaXQoJmludGYtPnByb2NfZW50cnlf bG9jayk7Cj4gLSNlbmRpZgo+ICAgCXNwaW5fbG9ja19pbml0KCZpbnRmLT53YWl0aW5nX3Jjdl9t c2dzX2xvY2spOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZpbnRmLT53YWl0aW5nX3Jjdl9tc2dzKTsK PiAgIAl0YXNrbGV0X2luaXQoJmludGYtPnJlY3ZfdGFza2xldCwKPiBAQCAtMzQxMCwxMCArMzMy Miw2IEBAIGludCBpcG1pX3JlZ2lzdGVyX3NtaShjb25zdCBzdHJ1Y3QgaXBtaV9zbWlfaGFuZGxl cnMgKmhhbmRsZXJzLAo+ICAgCWZvciAoaSA9IDA7IGkgPCBJUE1JX05VTV9TVEFUUzsgaSsrKQo+ ICAgCQlhdG9taWNfc2V0KCZpbnRmLT5zdGF0c1tpXSwgMCk7Cj4gICAKPiAtI2lmZGVmIENPTkZJ R19JUE1JX1BST0NfSU5URVJGQUNFCj4gLQlpbnRmLT5wcm9jX2RpciA9IE5VTEw7Cj4gLSNlbmRp Zgo+IC0KPiAgIAltdXRleF9sb2NrKCZzbWlfd2F0Y2hlcnNfbXV0ZXgpOwo+ICAgCW11dGV4X2xv Y2soJmlwbWlfaW50ZXJmYWNlc19tdXRleCk7Cj4gICAJLyogTG9vayBmb3IgYSBob2xlIGluIHRo ZSBudW1iZXJzLiAqLwo+IEBAIC0zNDQ4LDE3ICszMzU2LDExIEBAIGludCBpcG1pX3JlZ2lzdGVy X3NtaShjb25zdCBzdHJ1Y3QgaXBtaV9zbWlfaGFuZGxlcnMgKmhhbmRsZXJzLAo+ICAgCWlmIChy dikKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiAtI2lmZGVmIENPTkZJR19JUE1JX1BST0NfSU5URVJG QUNFCj4gICAJcnYgPSBhZGRfcHJvY19lbnRyaWVzKGludGYsIGkpOwo+IC0jZW5kaWYKPiAtCj4g ICAgb3V0Ogo+ICAgCWlmIChydikgewo+ICAgCQlpcG1pX2JtY191bnJlZ2lzdGVyKGludGYpOwo+ IC0jaWZkZWYgQ09ORklHX0lQTUlfUFJPQ19JTlRFUkZBQ0UKPiAtCQlpZiAoaW50Zi0+cHJvY19k aXIpCj4gLQkJCXJlbW92ZV9wcm9jX2VudHJpZXMoaW50Zik7Cj4gLSNlbmRpZgo+ICsJCXJlbW92 ZV9wcm9jX2VudHJpZXMoaW50Zik7Cj4gICAJCWludGYtPmhhbmRsZXJzID0gTlVMTDsKPiAgIAkJ bGlzdF9kZWxfcmN1KCZpbnRmLT5saW5rKTsKPiAgIAkJbXV0ZXhfdW5sb2NrKCZpcG1pX2ludGVy ZmFjZXNfbXV0ZXgpOwo+IEBAIC0zNTYzLDkgKzM0NjUsNyBAQCBpbnQgaXBtaV91bnJlZ2lzdGVy X3NtaShpcG1pX3NtaV90IGludGYpCj4gICAJaW50Zi0+aGFuZGxlcnMgPSBOVUxMOwo+ICAgCW11 dGV4X3VubG9jaygmaXBtaV9pbnRlcmZhY2VzX211dGV4KTsKPiAgIAo+IC0jaWZkZWYgQ09ORklH X0lQTUlfUFJPQ19JTlRFUkZBQ0UKPiAgIAlyZW1vdmVfcHJvY19lbnRyaWVzKGludGYpOwo+IC0j ZW5kaWYKPiAgIAlpcG1pX2JtY191bnJlZ2lzdGVyKGludGYpOwo+ICAgCj4gICAJLyoKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9pbnRmLmMgYi9kcml2ZXJzL2NoYXIv aXBtaS9pcG1pX3NpX2ludGYuYwo+IGluZGV4IGZmODcwYWE5MWNmZS4uN2FjYzhjYmY4ZDZmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jCj4gKysrIGIvZHJp dmVycy9jaGFyL2lwbWkvaXBtaV9zaV9pbnRmLmMKPiBAQCAtMTYwMiwxOCArMTYwMiw2IEBAIHN0 YXRpYyBpbnQgc21pX3R5cGVfcHJvY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdikK PiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IHNtaV90eXBlX3Byb2Nfb3Bl bihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAtewo+IC0JcmV0dXJu IHNpbmdsZV9vcGVuKGZpbGUsIHNtaV90eXBlX3Byb2Nfc2hvdywgUERFX0RBVEEoaW5vZGUpKTsK PiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc21pX3R5cGVf cHJvY19vcHMgPSB7Cj4gLQkub3BlbgkJPSBzbWlfdHlwZV9wcm9jX29wZW4sCj4gLQkucmVhZAkJ PSBzZXFfcmVhZCwKPiAtCS5sbHNlZWsJCT0gc2VxX2xzZWVrLAo+IC0JLnJlbGVhc2UJPSBzaW5n bGVfcmVsZWFzZSwKPiAtfTsKPiAtCj4gICBzdGF0aWMgaW50IHNtaV9zaV9zdGF0c19wcm9jX3No b3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KQo+ICAgewo+ICAgCXN0cnVjdCBzbWlfaW5m byAqc21pID0gbS0+cHJpdmF0ZTsKPiBAQCAtMTY0NSwxOCArMTYzMyw2IEBAIHN0YXRpYyBpbnQg c21pX3NpX3N0YXRzX3Byb2Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpCj4gICAJ cmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBzbWlfc2lfc3RhdHNfcHJvY19vcGVu KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+IC17Cj4gLQlyZXR1cm4g c2luZ2xlX29wZW4oZmlsZSwgc21pX3NpX3N0YXRzX3Byb2Nfc2hvdywgUERFX0RBVEEoaW5vZGUp KTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc21pX3Np X3N0YXRzX3Byb2Nfb3BzID0gewo+IC0JLm9wZW4JCT0gc21pX3NpX3N0YXRzX3Byb2Nfb3BlbiwK PiAtCS5yZWFkCQk9IHNlcV9yZWFkLAo+IC0JLmxsc2VlawkJPSBzZXFfbHNlZWssCj4gLQkucmVs ZWFzZQk9IHNpbmdsZV9yZWxlYXNlLAo+IC19Owo+IC0KPiAgIHN0YXRpYyBpbnQgc21pX3BhcmFt c19wcm9jX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KQo+ICAgewo+ICAgCXN0cnVj dCBzbWlfaW5mbyAqc21pID0gbS0+cHJpdmF0ZTsKPiBAQCAtMTY3NCwxOCArMTY1MCw2IEBAIHN0 YXRpYyBpbnQgc21pX3BhcmFtc19wcm9jX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2 KQo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gLQo+IC1zdGF0aWMgaW50IHNtaV9wYXJhbXNf cHJvY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+IC17Cj4g LQlyZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwgc21pX3BhcmFtc19wcm9jX3Nob3csIFBERV9EQVRB KGlub2RlKSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHNtaV9wYXJhbXNfcHJvY19vcHMgPSB7Cj4gLQkub3BlbgkJPSBzbWlfcGFyYW1zX3Byb2Nfb3Bl biwKPiAtCS5yZWFkCQk9IHNlcV9yZWFkLAo+IC0JLmxsc2VlawkJPSBzZXFfbHNlZWssCj4gLQku cmVsZWFzZQk9IHNpbmdsZV9yZWxlYXNlLAo+IC19Owo+ICAgI2VuZGlmCj4gICAKPiAgICNkZWZp bmUgSVBNSV9TSV9BVFRSKG5hbWUpIFwKPiBAQCAtMjE4MiwxMCArMjE0Niw4IEBAIHN0YXRpYyBp bnQgdHJ5X3NtaV9pbml0KHN0cnVjdCBzbWlfaW5mbyAqbmV3X3NtaSkKPiAgIAkJZ290byBvdXRf ZXJyOwo+ICAgCX0KPiAgIAo+IC0jaWZkZWYgQ09ORklHX0lQTUlfUFJPQ19JTlRFUkZBQ0UKPiAg IAlydiA9IGlwbWlfc21pX2FkZF9wcm9jX2VudHJ5KG5ld19zbWktPmludGYsICJ0eXBlIiwKPiAt CQkJCSAgICAgJnNtaV90eXBlX3Byb2Nfb3BzLAo+IC0JCQkJICAgICBuZXdfc21pKTsKPiArCQkJ CSAgICAgc21pX3R5cGVfcHJvY19zaG93LCBuZXdfc21pKTsKPiAgIAlpZiAocnYpIHsKPiAgIAkJ ZGV2X2VycihuZXdfc21pLT5pby5kZXYsCj4gICAJCQkiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jIGVu dHJ5OiAlZFxuIiwgcnYpOwo+IEBAIC0yMTkzLDggKzIxNTUsNyBAQCBzdGF0aWMgaW50IHRyeV9z bWlfaW5pdChzdHJ1Y3Qgc21pX2luZm8gKm5ld19zbWkpCj4gICAJfQo+ICAgCj4gICAJcnYgPSBp cG1pX3NtaV9hZGRfcHJvY19lbnRyeShuZXdfc21pLT5pbnRmLCAic2lfc3RhdHMiLAo+IC0JCQkJ ICAgICAmc21pX3NpX3N0YXRzX3Byb2Nfb3BzLAo+IC0JCQkJICAgICBuZXdfc21pKTsKPiArCQkJ CSAgICAgc21pX3NpX3N0YXRzX3Byb2Nfc2hvdywgbmV3X3NtaSk7Cj4gICAJaWYgKHJ2KSB7Cj4g ICAJCWRldl9lcnIobmV3X3NtaS0+aW8uZGV2LAo+ICAgCQkJIlVuYWJsZSB0byBjcmVhdGUgcHJv YyBlbnRyeTogJWRcbiIsIHJ2KTsKPiBAQCAtMjIwMiwxNCArMjE2MywxMiBAQCBzdGF0aWMgaW50 IHRyeV9zbWlfaW5pdChzdHJ1Y3Qgc21pX2luZm8gKm5ld19zbWkpCj4gICAJfQo+ICAgCj4gICAJ cnYgPSBpcG1pX3NtaV9hZGRfcHJvY19lbnRyeShuZXdfc21pLT5pbnRmLCAicGFyYW1zIiwKPiAt CQkJCSAgICAgJnNtaV9wYXJhbXNfcHJvY19vcHMsCj4gLQkJCQkgICAgIG5ld19zbWkpOwo+ICsJ CQkJICAgICBzbWlfcGFyYW1zX3Byb2Nfc2hvdywgbmV3X3NtaSk7Cj4gICAJaWYgKHJ2KSB7Cj4g ICAJCWRldl9lcnIobmV3X3NtaS0+aW8uZGV2LAo+ICAgCQkJIlVuYWJsZSB0byBjcmVhdGUgcHJv YyBlbnRyeTogJWRcbiIsIHJ2KTsKPiAgIAkJZ290byBvdXRfZXJyOwo+ICAgCX0KPiAtI2VuZGlm Cj4gICAKPiAgIAkvKiBEb24ndCBpbmNyZW1lbnQgdGlsbCB3ZSBrbm93IHdlIGhhdmUgc3VjY2Vl ZGVkLiAqLwo+ICAgCXNtaV9udW0rKzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2lwbWkv aXBtaV9zc2lmLmMgYi9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NzaWYuYwo+IGluZGV4IDM1YTgy ZjRiZmQ3OC4uNTdmNjExNmExN2IyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvY2hhci9pcG1pL2lw bWlfc3NpZi5jCj4gKysrIGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zc2lmLmMKPiBAQCAtMTM0 OSwxOCArMTM0OSw2IEBAIHN0YXRpYyBpbnQgc21pX3R5cGVfcHJvY19zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50 IHNtaV90eXBlX3Byb2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmls ZSkKPiAtewo+IC0JcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHNtaV90eXBlX3Byb2Nfc2hvdywg aW5vZGUtPmlfcHJpdmF0ZSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHNtaV90eXBlX3Byb2Nfb3BzID0gewo+IC0JLm9wZW4JCT0gc21pX3R5cGVfcHJv Y19vcGVuLAo+IC0JLnJlYWQJCT0gc2VxX3JlYWQsCj4gLQkubGxzZWVrCQk9IHNlcV9sc2VlaywK PiAtCS5yZWxlYXNlCT0gc2luZ2xlX3JlbGVhc2UsCj4gLX07Cj4gLQo+ICAgc3RhdGljIGludCBz bWlfc3RhdHNfcHJvY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdikKPiAgIHsKPiAg IAlzdHJ1Y3Qgc3NpZl9pbmZvICpzc2lmX2luZm8gPSBtLT5wcml2YXRlOwo+IEBAIC0xMzkzLDE4 ICsxMzgxLDYgQEAgc3RhdGljIGludCBzbWlfc3RhdHNfcHJvY19zaG93KHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqdikKPiAgIAkJICAgc3NpZl9nZXRfc3RhdChzc2lmX2luZm8sIGFsZXJ0cykp Owo+ICAgCXJldHVybiAwOwo+ICAgfQo+IC0KPiAtc3RhdGljIGludCBzbWlfc3RhdHNfcHJvY19v cGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+IC17Cj4gLQlyZXR1 cm4gc2luZ2xlX29wZW4oZmlsZSwgc21pX3N0YXRzX3Byb2Nfc2hvdywgUERFX0RBVEEoaW5vZGUp KTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc21pX3N0 YXRzX3Byb2Nfb3BzID0gewo+IC0JLm9wZW4JCT0gc21pX3N0YXRzX3Byb2Nfb3BlbiwKPiAtCS5y ZWFkCQk9IHNlcV9yZWFkLAo+IC0JLmxsc2VlawkJPSBzZXFfbHNlZWssCj4gLQkucmVsZWFzZQk9 IHNpbmdsZV9yZWxlYXNlLAo+IC19Owo+ICAgI2VuZGlmCj4gICAKPiAgIHN0YXRpYyBpbnQgc3Ry Y21wX25vc3BhY2UoY2hhciAqczEsIGNoYXIgKnMyKQo+IEBAIC0xNzQwLDIzICsxNzE2LDE5IEBA IHN0YXRpYyBpbnQgc3NpZl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBz dHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gICAJCWdvdG8gb3V0X3JlbW92ZV9hdHRyOwo+ICAg CX0KPiAgIAo+IC0jaWZkZWYgQ09ORklHX0lQTUlfUFJPQ19JTlRFUkZBQ0UKPiAgIAlydiA9IGlw bWlfc21pX2FkZF9wcm9jX2VudHJ5KHNzaWZfaW5mby0+aW50ZiwgInR5cGUiLAo+IC0JCQkJICAg ICAmc21pX3R5cGVfcHJvY19vcHMsCj4gLQkJCQkgICAgIHNzaWZfaW5mbyk7Cj4gKwkJCQkgICAg IHNtaV90eXBlX3Byb2Nfc2hvdywgc3NpZl9pbmZvKTsKPiAgIAlpZiAocnYpIHsKPiAgIAkJcHJf ZXJyKFBGWCAiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jIGVudHJ5OiAlZFxuIiwgcnYpOwo+ICAgCQln b3RvIG91dF9lcnJfdW5yZWc7Cj4gICAJfQo+ICAgCj4gICAJcnYgPSBpcG1pX3NtaV9hZGRfcHJv Y19lbnRyeShzc2lmX2luZm8tPmludGYsICJzc2lmX3N0YXRzIiwKPiAtCQkJCSAgICAgJnNtaV9z dGF0c19wcm9jX29wcywKPiAtCQkJCSAgICAgc3NpZl9pbmZvKTsKPiArCQkJCSAgICAgc21pX3N0 YXRzX3Byb2Nfc2hvdywgc3NpZl9pbmZvKTsKPiAgIAlpZiAocnYpIHsKPiAgIAkJcHJfZXJyKFBG WCAiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jIGVudHJ5OiAlZFxuIiwgcnYpOwo+ICAgCQlnb3RvIG91 dF9lcnJfdW5yZWc7Cj4gICAJfQo+IC0jZW5kaWYKPiAgIAo+ICAgIG91dDoKPiAgIAlpZiAocnYp IHsKPiBAQCAtMTc3NSwxMCArMTc0Nyw4IEBAIHN0YXRpYyBpbnQgc3NpZl9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gICAJ a2ZyZWUocmVzcCk7Cj4gICAJcmV0dXJuIHJ2Owo+ICAgCj4gLSNpZmRlZiBDT05GSUdfSVBNSV9Q Uk9DX0lOVEVSRkFDRQo+ICAgb3V0X2Vycl91bnJlZzoKPiAgIAlpcG1pX3VucmVnaXN0ZXJfc21p KHNzaWZfaW5mby0+aW50Zik7Cj4gLSNlbmRpZgo+ICAgCj4gICBvdXRfcmVtb3ZlX2F0dHI6Cj4g ICAJZGV2aWNlX3JlbW92ZV9ncm91cCgmc3NpZl9pbmZvLT5jbGllbnQtPmRldiwgJmlwbWlfc3Np Zl9kZXZfYXR0cl9ncm91cCk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXBtaV9zbWku aCBiL2luY2x1ZGUvbGludXgvaXBtaV9zbWkuaAo+IGluZGV4IGFmNDU3YjVhNjg5ZS4uNzhkOWZk NDgwZmU4IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvaXBtaV9zbWkuaAo+ICsrKyBiL2lu Y2x1ZGUvbGludXgvaXBtaV9zbWkuaAo+IEBAIC0yMjMsMTIgKzIyMywxMCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaXBtaV9mcmVlX3NtaV9tc2coc3RydWN0IGlwbWlfc21pX21zZyAqbXNnKQo+ICAg fQo+ICAgCj4gICAjaWZkZWYgQ09ORklHX0lQTUlfUFJPQ19JTlRFUkZBQ0UKPiAtLyogQWxsb3cg dGhlIGxvd2VyIGxheWVyIHRvIGFkZCB0aGluZ3MgdG8gdGhlIHByb2MgZmlsZXN5c3RlbQo+IC0g ICBkaXJlY3RvcnkgZm9yIHRoaXMgaW50ZXJmYWNlLiAgTm90ZSB0aGF0IHRoZSBlbnRyeSB3aWxs Cj4gLSAgIGF1dG9tYXRpY2FsbHkgYmUgZHN0cm95ZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGRl c3Ryb3llZC4gKi8KPiAgIGludCBpcG1pX3NtaV9hZGRfcHJvY19lbnRyeShpcG1pX3NtaV90IHNt aSwgY2hhciAqbmFtZSwKPiAtCQkJICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKnBy b2Nfb3BzLAo+IC0JCQkgICAgdm9pZCAqZGF0YSk7Cj4gKwkJaW50ICgqc2hvdykoc3RydWN0IHNl cV9maWxlICosIHZvaWQgKiksIHZvaWQgKmRhdGEpOwo+ICsjZWxzZQo+ICsjZGVmaW5lIGlwbWlf c21pX2FkZF9wcm9jX2VudHJ5KHNtaSwgbmFtZSwgc2hvdywgZGF0YSkJMAo+ICAgI2VuZGlmCj4g ICAKPiAgICNlbmRpZiAvKiBfX0xJTlVYX0lQTUlfU01JX0ggKi8KCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkZXZlbCBtYWlsaW5nIGxpc3QKZGV2ZWxA bGludXhkcml2ZXJwcm9qZWN0Lm9yZwpodHRwOi8vZHJpdmVyZGV2LmxpbnV4ZHJpdmVycHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcml2ZXJkZXYtZGV2ZWwK