From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v3 04/10] drm/i915: HDCP SRM parsing and revocation check Date: Wed, 27 Mar 2019 19:18:55 +0530 Message-ID: <20190327134855.GE3905@intel.com> References: <20190322004448.14045-1-ramalingam.c@intel.com> <20190322004448.14045-5-ramalingam.c@intel.com> <20190327101640.GB2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190327101640.GB2665@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjAxOS0wMy0yNyBhdCAxMToxNjo0MCArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBP biBGcmksIE1hciAyMiwgMjAxOSBhdCAwNjoxNDo0MkFNICswNTMwLCBSYW1hbGluZ2FtIEMgd3Jv dGU6Cj4gPiBJbXBsZW1lbnRzIHRoZSBTUk0gdGFibGUgcGFyc2luZyBmb3IgSERDUCAxLjQgYW5k IDIuMi4KPiA+IEFuZCBhbHNvIHJldm9jYXRpb24gY2hlY2sgaXMgYWRkZWQgYXQgYXV0aGVudGlj YXRpb24gb2YgSERDUDEuNAo+ID4gYW5kIDIuMgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBSYW1h bGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICB8ICAgNiArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggIHwgICAyICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgfCAzMDgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2hkY3Au aCAgICAgICAgICAgIHwgIDMyICsrKysKPiAKPiBOZWVkcyB0byBiZSBzcGxpdCBvdXQgYXMgYSBk cm0gY29yZSBwYXRjaC4KPiAKPiBJIGFsc28gd29uZGVyIHdoZXRoZXIgc29tZSBvZiB0aGUgU1JN IHBhcnNpbmcgc2hvdWxkIGJlIGhlbHBlciBmdW5jdGlvbnMKPiBpbiBhIG5ldyBkcm1faGRjcC5j IGZpbGUgLi4uIFdvdWxkIGZpdCByZWFsbHkgd2VsbCB3aXRoIHRoZSBvdmVyYWxsIHNpbmdsZQo+ IGRybSBzeXNmcyBmaWxlIGZvciBTUk0gZGVzaWduLCB3aGVyZSBhbGwgdGhlIHBhcnNpbmcgaXMg ZG9uZSBvbmNlIGluIHRoZQo+IGNvcmUuIEFuZCB0aGVuIGRyaXZlcnMganVzdCBoYXZlIGZ1bmN0 aW9ucyB0byBlaXRoZXIgZ2V0IHRoZSBlbnRpcmUgU1JNCj4gKGZvciB1cGxvYWQgdG8gTUUpLCBv ciBjaGVjayBhIGtzdiBhZ2FpbnN0IHRoZSByZXZvY2F0aW9uIGxpc3QgKGhkY3AxLngpLgo+IAo+ IFNpbmNlIHRoZSBwYXJzaW5nIGNvZGUgbWlnaHQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50IGlmIHdl IGludGVncmF0ZSBpdCBtb3JlCj4gdGlnaHRseSB3aXRoIGEgc3lzZnMgYmluYXJ5IGZpbGUgSSds bCB3YWl0IHdpdGggcmV2aWV3aW5nIHRoZSBkZXRhaWxzCj4gdW50aWwgd2UndmUgc2V0dGxlZCBv biB0aGUgYmlnIHBpY3R1cmUuIEJ1dCBsb29rcyBhbGwgcmVhc29uYWJsZS4KCkkgd2lsbCBjYWNo ZSB0aGUgd2hvbGUgU1JNIGJsb2IgaW4gdGhlIGdsb2JhbCBidWZmZXIgaW4gZHJtIGFmdGVyIHRo ZQpzYW5pdHkgY2hlY2suCgpUaGVuIEkgd2lsbCBhZGQgc29tZSBBUElzIGxpa2UgZHJtX2hkY3Bf c3JtX2tzdnNfcmV2b2tlZCg8bGlzdCBvZiBrc3ZzPiwKPGNvdW50IG9mIGtzdnM+KQoKQXMgb2Yg bm93IGV2ZW4gZm9yIEhEQ1AyLjIgSSBhbSBub3QgcGFzc2luZyB0aGUgU1JNIGludG8gTUUgRlcu IEFzIHRoYXQKaXMgbm90IGNvbXB1bHNhcnksIHVzaW5nIHRoZSBIRENQMS40IHdheSBvbmx5LgoK YnV0IHRvIGNyZWF0ZSB0aGUgY2xhc3MgYmluYXJ5IHN5c2ZzLCB3ZSBtaWdodCBuZWVkIHRvIGNy ZWF0ZSBuZXcgQVBJLCBzb21ldGhpbmcKbGlrZSBjbGFzc19jcmVhdGVfYmluX2ZpbGUgc2ltaWxh ciBleGlzdGluZyBjbGFzc19jcmVhdGVfZmlsZS4KSSB3aWxsIHNlbmQgdGhlIHBhdGNoIHNvb24g dG8gZGlzY3VzcyB1cG9uLgoKLVJhbQo+IC1EYW5pZWwKPiAKPiAKPiA+ICA1IGZpbGVzIGNoYW5n ZWQsIDMzNCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gPiBpbmRleCBhM2IwMGVjYzU4YzkuLjYwYTg5NGZhYjRmYyAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+IEBAIC04NzMsNiArODczLDcgQEAgc3RhdGlj IGludCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiA+ICAJbXV0 ZXhfaW5pdCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4gPiAgCW11dGV4X2luaXQoJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwltdXRleF9pbml0KCZkZXZfcHJpdi0+c3JtX211dGV4 KTsKPiA+ICAKPiA+ICAJaTkxNV9tZW1jcHlfaW5pdF9lYXJseShkZXZfcHJpdik7Cj4gPiAgCWlu dGVsX3J1bnRpbWVfcG1faW5pdF9lYXJseShkZXZfcHJpdik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiA+IGluZGV4IGM2NWMyZTY2NDlkZi4uOWI5ZGFmNmM5NDkwIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTIwNjEsNiArMjA2MSwxMiBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7Cj4gPiAgCS8qIE11dGV4IHRvIHByb3RlY3QgdGhlIGFib3ZlIGhkY3Ag Y29tcG9uZW50IHJlbGF0ZWQgdmFsdWVzLiAqLwo+ID4gIAlzdHJ1Y3QgbXV0ZXggaGRjcF9jb21w X211dGV4Owo+ID4gIAo+ID4gKwl1bnNpZ25lZCBpbnQgcmV2b2NhdGVkX2tzdl9jbnQ7Cj4gPiAr CXU4ICpyZXZvY2F0ZWRfa3N2X2xpc3Q7Cj4gPiArCj4gPiArCS8qIE11dGV4IHRvIHByb3RlY3Qg dGhlIGRhdGEgYWJvdXQgcmV2b2NhdGVkIGtzdnMgKi8KPiA+ICsJc3RydWN0IG11dGV4IHNybV9t dXRleDsKPiA+ICsKPiA+ICAJLyoKPiA+ICAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMg ZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXIgcGF0Y2gKPiA+ICAJICogd2lsbCBi ZSByZWplY3RlZC4gSW5zdGVhZCBsb29rIGZvciBhIGJldHRlciBwbGFjZS4KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBlMzg3ZTg0MmY0MTQuLjRkYjE1ZWU4MTA0MiAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTIxODcsNiArMjE4Nyw4IEBA IHZvaWQgaW50ZWxfaGRjcF9jb21wb25lbnRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+ID4gIHZvaWQgaW50ZWxfaGRjcF9jb21wb25lbnRfZmluaShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgaW50ZWxfaGRjcF9jbGVhbnVwKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAgdm9pZCBpbnRlbF9oZGNwX2hh bmRsZV9jcF9pcnEoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ICtzc2l6 ZV90IGludGVsX2hkY3Bfc3JtX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGNoYXIgKmJ1ZiwKPiA+ICsJCQkgICAgICBzaXplX3QgY291bnQpOwo+ID4gIAo+ID4gIC8q IGludGVsX3Bzci5jICovCj4gPiAgI2RlZmluZSBDQU5fUFNSKGRldl9wcml2KSAoSEFTX1BTUihk ZXZfcHJpdikgJiYgZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQpCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCj4gPiBpbmRleCA5YjQ5MDRhNjI3NDQuLjkyMWYwN2M2NDM1MCAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiBAQCAtMjczLDYgKzI3Myw2MiBAQCB1 MzIgaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0KQo+ID4gIAlyZXR1cm4gLUVJTlZBTDsKPiA+ICB9Cj4gPiAgCj4gPiAr c3RhdGljIGlubGluZSB2b2lkIGludGVsX2hkY3BfcHJpbnRfa3N2KHU4ICprc3YpCj4gPiArewo+ ID4gKwlEUk1fREVCVUdfS01TKCJcdCUjMDR4LCAlIzA0eCwgJSMwNHgsICUjMDR4LCAlIzA0eFxu IiwgKmtzdiwKPiA+ICsJCSAgICAgICooa3N2ICsgMSksICooa3N2ICsgMiksICooa3N2ICsgMyks ICooa3N2ICsgNCkpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lCj4gPiArc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfaGRjcF90b19jb25uZWN0b3Ioc3RydWN0IGludGVsX2hk Y3AgKmhkY3ApCj4gPiArewo+ID4gKwlyZXR1cm4gY29udGFpbmVyX29mKGhkY3AsIHN0cnVjdCBp bnRlbF9jb25uZWN0b3IsIGhkY3ApOwo+ID4gK30KPiA+ICsKPiA+ICsvKiBDaGVjayBpZiBhbnkg b2YgdGhlIEtTViBpcyByZXZvY2F0ZWQgYnkgRENQIExMQyB0aHJvdWdoIFNSTSB0YWJsZSAqLwo+ ID4gK3N0YXRpYyBpbmxpbmUKPiA+ICtib29sIGludGVsX2hkY3Bfa3N2c19yZXZvY2F0ZWQoc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AsIHU4ICprc3ZzLCB1MzIga3N2X2NvdW50KQo+ID4gK3sKPiA+ ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gaW50ZWxfaGRjcF90b19jb25u ZWN0b3IoaGRjcCk7Cj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gKwkJCQlpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRl di0+ZGV2X3ByaXZhdGU7Cj4gPiArCXUzMiByZXZfa3N2X2NudCwgY250LCBpLCBqOwo+ID4gKwl1 OCAqcmV2X2tzdl9saXN0Owo+ID4gKwo+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+c3JtX211 dGV4KTsKPiA+ICsJcmV2X2tzdl9jbnQgPSBkZXZfcHJpdi0+cmV2b2NhdGVkX2tzdl9jbnQ7Cj4g PiArCXJldl9rc3ZfbGlzdCA9IGRldl9wcml2LT5yZXZvY2F0ZWRfa3N2X2xpc3Q7Cj4gPiArCj4g PiArCS8qIElmIHRoZSBSZXZvY2F0ZWQga3N2IGxpc3QgaXMgZW1wdHkgKi8KPiA+ICsJaWYgKCFy ZXZfa3N2X2NudCB8fCAhcmV2X2tzdl9saXN0KSB7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9w cml2LT5zcm1fbXV0ZXgpOwo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiAr CWZvciAgKGNudCA9IDA7IGNudCA8IGtzdl9jb3VudDsgY250KyspIHsKPiA+ICsJCXJldl9rc3Zf bGlzdCA9IGRldl9wcml2LT5yZXZvY2F0ZWRfa3N2X2xpc3Q7Cj4gPiArCQlmb3IgKGkgPSAwOyBp IDwgcmV2X2tzdl9jbnQ7IGkrKykgewo+ID4gKwkJCWZvciAoaiA9IDA7IGogPCBEUk1fSERDUF9L U1ZfTEVOOyBqKyspCj4gPiArCQkJCWlmICgqKGtzdnMgKyBqKSAhPSAqKHJldl9rc3ZfbGlzdCAr IGopKSB7Cj4gPiArCQkJCQlicmVhazsKPiA+ICsJCQkJfSBlbHNlIGlmIChqID09IChEUk1fSERD UF9LU1ZfTEVOIC0gMSkpIHsKPiA+ICsJCQkJCURSTV9ERUJVR19LTVMoIlJldm9jYXRlZCBLU1Yg aXMgIik7Cj4gPiArCQkJCQlpbnRlbF9oZGNwX3ByaW50X2tzdihrc3ZzKTsKPiA+ICsJCQkJCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQkJCQlyZXR1cm4gdHJ1ZTsK PiA+ICsJCQkJfQo+ID4gKwkJCS8qIE1vdmUgdGhlIG9mZnNldCB0byBuZXh0IEtTViBpbiB0aGUg cmV2b2NhdGVkIGxpc3QgKi8KPiA+ICsJCQlyZXZfa3N2X2xpc3QgKz0gRFJNX0hEQ1BfS1NWX0xF TjsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCS8qIEl0ZXJhdGUgdG8gbmV4dCBrc3Zfb2Zmc2V0ICov Cj4gPiArCQlrc3ZzICs9IERSTV9IRENQX0tTVl9MRU47Cj4gPiArCX0KPiA+ICsJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+c3JtX211dGV4KTsKPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gK30KPiA+ ICsKPiA+ICBzdGF0aWMKPiA+ICBpbnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gIAkJCQljb25zdCBzdHJ1 Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltLAo+ID4gQEAgLTQ5MCw5ICs1NDYsMTAgQEAgaW50IGlu dGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKPiA+ICAKPiA+ICAvKiBJbXBsZW1lbnRzIFBhcnQgMiBvZiB0aGUgSERDUCBh dXRob3JpemF0aW9uIHByb2NlZHVyZSAqLwo+ID4gIHN0YXRpYwo+ID4gLWludCBpbnRlbF9oZGNw X2F1dGhfZG93bnN0cmVhbShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPiA+IC0JCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSkKPiA+ ICtpbnQgaW50ZWxfaGRjcF9hdXRoX2Rvd25zdHJlYW0oc3RydWN0IGludGVsX2hkY3AgKmhkY3As Cj4gPiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 KQo+ID4gIHsKPiA+ICsJY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSA9IGhkY3At PnNoaW07Cj4gPiAgCXU4IGJzdGF0dXNbMl0sIG51bV9kb3duc3RyZWFtLCAqa3N2X2ZpZm87Cj4g PiAgCWludCByZXQsIGksIHRyaWVzID0gMzsKPiA+ICAKPiA+IEBAIC01MzEsNiArNTg4LDExIEBA IGludCBpbnRlbF9oZGNwX2F1dGhfZG93bnN0cmVhbShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCwKPiA+ICAJaWYgKHJldCkKPiA+ICAJCWdvdG8gZXJyOwo+ID4gIAo+ ID4gKwlpZiAoaW50ZWxfaGRjcF9rc3ZzX3Jldm9jYXRlZChoZGNwLCBrc3ZfZmlmbywgbnVtX2Rv d25zdHJlYW0pKSB7Cj4gPiArCQlEUk1fRVJST1IoIlJldm9jYXRlZCBLc3YocykgaW4ga3N2X2Zp Zm9cbiIpOwo+ID4gKwkJcmV0dXJuIC1FUEVSTTsKPiA+ICsJfQo+ID4gKwo+ID4gIAkvKgo+ID4g IAkgKiBXaGVuIFYgcHJpbWUgbWlzbWF0Y2hlcywgRFAgU3BlYyBtYW5kYXRlcyByZS1yZWFkIG9m Cj4gPiAgCSAqIFYgcHJpbWUgYXRsZWFzdCB0d2ljZS4KPiA+IEBAIC01NTcsOSArNjE5LDExIEBA IGludCBpbnRlbF9oZGNwX2F1dGhfZG93bnN0cmVhbShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCwKPiA+ICB9Cj4gPiAgCj4gPiAgLyogSW1wbGVtZW50cyBQYXJ0IDEg b2YgdGhlIEhEQ1AgYXV0aG9yaXphdGlvbiBwcm9jZWR1cmUgKi8KPiA+IC1zdGF0aWMgaW50IGlu dGVsX2hkY3BfYXV0aChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwK PiA+IC0JCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltKQo+ID4gK3N0YXRp YyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0g Y29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRj cCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0g KnNoaW0gPSBoZGNwLT5zaGltOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXY7Cj4gPiAgCWVudW0gcG9ydCBwb3J0Owo+ID4gIAl1bnNpZ25lZCBsb25nIHIwX3ByaW1lX2dl bl9zdGFydDsKPiA+IEBAIC02MjUsNiArNjg5LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9h dXRoKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gIAlpZiAo cmV0IDwgMCkKPiA+ICAJCXJldHVybiByZXQ7Cj4gPiAgCj4gPiArCWlmIChpbnRlbF9oZGNwX2tz dnNfcmV2b2NhdGVkKGhkY3AsIGJrc3Yuc2hpbSwgMSkpIHsKPiA+ICsJCURSTV9FUlJPUigiQktT ViBpcyByZXZvY2F0ZWRcbiIpOwo+ID4gKwkJcmV0dXJuIC1FUEVSTTsKPiA+ICsJfQo+ID4gKwo+ ID4gIAlJOTE1X1dSSVRFKFBPUlRfSERDUF9CS1NWTE8ocG9ydCksIGJrc3YucmVnWzBdKTsKPiA+ ICAJSTkxNV9XUklURShQT1JUX0hEQ1BfQktTVkhJKHBvcnQpLCBia3N2LnJlZ1sxXSk7Cj4gPiAg Cj4gPiBAQCAtNjk4LDcgKzc2Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gIAkgKi8KPiA+ICAKPiA+ ICAJaWYgKHJlcGVhdGVyX3ByZXNlbnQpCj4gPiAtCQlyZXR1cm4gaW50ZWxfaGRjcF9hdXRoX2Rv d25zdHJlYW0oaW50ZWxfZGlnX3BvcnQsIHNoaW0pOwo+ID4gKwkJcmV0dXJuIGludGVsX2hkY3Bf YXV0aF9kb3duc3RyZWFtKGhkY3AsIGludGVsX2RpZ19wb3J0KTsKPiA+ICAKPiA+ICAJRFJNX0RF QlVHX0tNUygiSERDUCBpcyBlbmFibGVkIChubyByZXBlYXRlciBwcmVzZW50KVxuIik7Cj4gPiAg CXJldHVybiAwOwo+ID4gQEAgLTczNSw3ICs4MDQsNiBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNw X2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAo+ID4gIHN0 YXRpYyBpbnQgX2ludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiA+ICB7Cj4gPiAtCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+ aGRjcDsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9y LT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgCWludCBpLCByZXQsIHRyaWVzID0gMzsKPiA+ ICAKPiA+IEBAIC03NjAsOSArODI4LDkgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcF9lbmFibGUo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAo+ID4gIAkvKiBJbmNhc2Ug b2YgYXV0aGVudGljYXRpb24gZmFpbHVyZXMsIEhEQ1Agc3BlYyBleHBlY3RzIHJlYXV0aC4gKi8K PiA+ICAJZm9yIChpID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKPiA+IC0JCXJldCA9IGludGVsX2hk Y3BfYXV0aChjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3RvciksIGhkY3AtPnNoaW0pOwo+ID4gKwkJ cmV0ID0gaW50ZWxfaGRjcF9hdXRoKGNvbm5lY3Rvcik7Cj4gPiAgCQlpZiAoIXJldCkgewo+ID4g LQkJCWhkY3AtPmhkY3BfZW5jcnlwdGVkID0gdHJ1ZTsKPiA+ICsJCQljb25uZWN0b3ItPmhkY3Au aGRjcF9lbmNyeXB0ZWQgPSB0cnVlOwo+ID4gIAkJCXJldHVybiAwOwo+ID4gIAkJfQo+ID4gIAo+ ID4gQEAgLTc3NiwxMiArODQ0LDYgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcF9lbmFibGUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAlyZXR1cm4gcmV0Owo+ID4gIH0K PiA+ICAKPiA+IC1zdGF0aWMgaW5saW5lCj4gPiAtc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50 ZWxfaGRjcF90b19jb25uZWN0b3Ioc3RydWN0IGludGVsX2hkY3AgKmhkY3ApCj4gPiAtewo+ID4g LQlyZXR1cm4gY29udGFpbmVyX29mKGhkY3AsIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IsIGhkY3Ap Owo+ID4gLX0KPiA+IC0KPiA+ICAvKiBJbXBsZW1lbnRzIFBhcnQgMyBvZiB0aGUgSERDUCBhdXRo b3JpemF0aW9uIHByb2NlZHVyZSAqLwo+ID4gIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9jaGVja19s aW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICB7Cj4gPiBAQCAtMTE5 Myw2ICsxMjU1LDEyIEBAIHN0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRpb25fa2V5X2V4Y2hh bmdlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAKPiA+ICAJaGRjcC0+ aXNfcmVwZWF0ZXIgPSBIRENQXzJfMl9SWF9SRVBFQVRFUihtc2dzLnNlbmRfY2VydC5yeF9jYXBz WzJdKTsKPiA+ICAKPiA+ICsJaWYgKGludGVsX2hkY3Bfa3N2c19yZXZvY2F0ZWQoaGRjcCwKPiA+ ICsJCQkJICAgICAgbXNncy5zZW5kX2NlcnQuY2VydF9yeC5yZWNlaXZlcl9pZCwgMSkpIHsKPiA+ ICsJCURSTV9FUlJPUigiUmVjZWl2ZXIgSUQgaXMgcmV2b2NhdGVkXG4iKTsKPiA+ICsJCXJldHVy biAtRVBFUk07Cj4gPiArCX0KPiA+ICsKPiA+ICAJLyoKPiA+ICAJICogSGVyZSBtc2dzLm5vX3N0 b3JlZF9rbSB3aWxsIGhvbGQgbXNncyBjb3JyZXNwb25kaW5nIHRvIHRoZSBrbQo+ID4gIAkgKiBz dG9yZWQgYWxzby4KPiA+IEBAIC0xMzUxLDcgKzE0MTksNyBAQCBpbnQgaGRjcDJfYXV0aGVudGlj YXRlX3JlcGVhdGVyX3RvcG9sb2d5KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiA+ICAJfSBtc2dzOwo+ID4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0g aGRjcC0+c2hpbTsKPiA+ICAJdTggKnJ4X2luZm87Cj4gPiAtCXUzMiBzZXFfbnVtX3Y7Cj4gPiAr CXUzMiBzZXFfbnVtX3YsIGRldmljZV9jbnQ7Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAgCXJl dCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgSERDUF8yXzJfUkVQX1NFTkRf UkVDVklEX0xJU1QsCj4gPiBAQCAtMTM3Niw2ICsxNDQ0LDE0IEBAIGludCBoZGNwMl9hdXRoZW50 aWNhdGVfcmVwZWF0ZXJfdG9wb2xvZ3koc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJZGV2aWNlX2NudCA9 IEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZvWzBdKSA8PCA0IHx8Cj4gPiArCQkJSERDUF8y XzJfREVWX0NPVU5UX0xPKHJ4X2luZm9bMV0pOwo+ID4gKwlpZiAoaW50ZWxfaGRjcF9rc3ZzX3Jl dm9jYXRlZChoZGNwLCBtc2dzLnJlY3ZpZF9saXN0LnJlY2VpdmVyX2lkcywKPiA+ICsJCQkJICAg ICAgZGV2aWNlX2NudCkpIHsKPiA+ICsJCURSTV9FUlJPUigiUmV2b2tlZCByZWNlaXZlciBJRChz KSBpcyBpbiBsaXN0XG4iKTsKPiA+ICsJCXJldHVybiAtRVBFUk07Cj4gPiArCX0KPiA+ICsKPiA+ ICAJcmV0ID0gaGRjcDJfdmVyaWZ5X3JlcF90b3BvbG9neV9wcmVwYXJlX2Fjayhjb25uZWN0b3Is Cj4gPiAgCQkJCQkJICAgICZtc2dzLnJlY3ZpZF9saXN0LAo+ID4gIAkJCQkJCSAgICAmbXNncy5y ZXBfYWNrKTsKPiA+IEBAIC0xODE4LDYgKzE4OTQsMjA4IEBAIGludCBpbnRlbF9oZGNwX2luaXQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9 Cj4gPiAgCj4gPiArc3RhdGljIHUzMiBpbnRlbF9oZGNwX2dldF9yZXZvY2F0ZWRfa3N2X2NvdW50 KHU4ICpidWYsIHUzMiB2cmxzX2xlbmd0aCkKPiA+ICt7Cj4gPiArCXUzMiBwYXJzZWRfYnl0ZXMg PSAwLCBrc3ZfY291bnQgPSAwLCB2cmxfa3N2X2NudCwgdnJsX3N6Owo+ID4gKwo+ID4gKwlkbyB7 Cj4gPiArCQl2cmxfa3N2X2NudCA9ICpidWY7Cj4gPiArCQlrc3ZfY291bnQgKz0gdnJsX2tzdl9j bnQ7Cj4gPiArCj4gPiArCQl2cmxfc3ogPSAodnJsX2tzdl9jbnQgKiBEUk1fSERDUF9LU1ZfTEVO KSArIDE7Cj4gPiArCQlidWYgKz0gdnJsX3N6Owo+ID4gKwkJcGFyc2VkX2J5dGVzICs9IHZybF9z ejsKPiA+ICsJfSB3aGlsZSAocGFyc2VkX2J5dGVzIDwgdnJsc19sZW5ndGgpOwo+ID4gKwo+ID4g KwlyZXR1cm4ga3N2X2NvdW50Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdTMyIGludGVsX2hk Y3BfZ2V0X3Jldm9jYXRlZF9rc3ZzKHU4ICprc3ZfbGlzdCwgY29uc3QgdTggKmJ1ZiwKPiA+ICsJ CQkJCSB1MzIgdnJsc19sZW5ndGgpCj4gPiArewo+ID4gKwl1MzIgcGFyc2VkX2J5dGVzID0gMCwg a3N2X2NvdW50ID0gMDsKPiA+ICsJdTMyIHZybF9rc3ZfY250LCB2cmxfa3N2X3N6LCB2cmxfaWR4 ID0gMDsKPiA+ICsKPiA+ICsJZG8gewo+ID4gKwkJdnJsX2tzdl9jbnQgPSAqYnVmOwo+ID4gKwkJ dnJsX2tzdl9zeiA9IHZybF9rc3ZfY250ICogRFJNX0hEQ1BfS1NWX0xFTjsKPiA+ICsKPiA+ICsJ CWJ1ZisrOwo+ID4gKwo+ID4gKwkJRFJNX0RFQlVHX0tNUygidnJsOiAlZCwgUmV2b2tlZCBLU1Zz OiAlZFxuIiwgdnJsX2lkeCsrLAo+ID4gKwkJCSAgICAgIHZybF9rc3ZfY250KTsKPiA+ICsJCW1l bWNweShrc3ZfbGlzdCwgYnVmLCB2cmxfa3N2X3N6KTsKPiA+ICsKPiA+ICsJCWtzdl9jb3VudCAr PSB2cmxfa3N2X2NudDsKPiA+ICsJCWtzdl9saXN0ICs9IHZybF9rc3Zfc3o7Cj4gPiArCQlidWYg Kz0gdnJsX2tzdl9zejsKPiA+ICsKPiA+ICsJCXBhcnNlZF9ieXRlcyArPSAodnJsX2tzdl9zeiAr IDEpOwo+ID4gKwl9IHdoaWxlIChwYXJzZWRfYnl0ZXMgPCB2cmxzX2xlbmd0aCk7Cj4gPiArCj4g PiArCXJldHVybiBrc3ZfY291bnQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgaW50ZWxf aGRjcF9wYXJzZV9zcm0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBjaGFyICpi dWYsCj4gPiArCQkJCXNpemVfdCBjb3VudCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBoZGNwX3NybV9o ZWFkZXIgKmhlYWRlcjsKPiA+ICsJdTMyIHZybF9sZW5ndGgsIGtzdl9jb3VudDsKPiA+ICsKPiA+ ICsJaWYgKGNvdW50IDwgKHNpemVvZihzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyKSArCj4gPiArCSAg ICBEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9TSVpFICsgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0la RSkpIHsKPiA+ICsJCURSTV9FUlJPUigiSW52YWxpZCBibG9iIGxlbmd0aFxuIik7Cj4gPiArCQly ZXR1cm4gLUVJTlZBTDsKPiA+ICsJfQo+ID4gKwo+ID4gKwloZWFkZXIgPSAoc3RydWN0IGhkY3Bf c3JtX2hlYWRlciAqKWJ1ZjsKPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7 Cj4gPiArCURSTV9ERUJVR19LTVMoIlNSTSBJRDogMHgleCwgU1JNIFZlcjogMHgleCwgU1JNIEdl biBObzogMHgleFxuIiwKPiA+ICsJCSAgICAgIGhlYWRlci0+c3BlY19pbmRpY2F0b3Iuc3JtX2lk LAo+ID4gKwkJICAgICAgX19zd2FiMTYoaGVhZGVyLT5zcm1fdmVyc2lvbiksIGhlYWRlci0+c3Jt X2dlbl9ubyk7Cj4gPiArCj4gPiArCVdBUk5fT04oaGVhZGVyLT5zcGVjX2luZGljYXRvci5yZXNl cnZlZF9oaSB8fAo+ID4gKwkJaGVhZGVyLT5zcGVjX2luZGljYXRvci5yZXNlcnZlZF9sbyk7Cj4g PiArCj4gPiArCWlmIChoZWFkZXItPnNwZWNfaW5kaWNhdG9yLnNybV9pZCAhPSBEUk1fSERDUF8x XzRfU1JNX0lEKSB7Cj4gPiArCQlEUk1fRVJST1IoIkludmFsaWQgc3JtX2lkXG4iKTsKPiA+ICsJ CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1cm4gLUVJTlZB TDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlidWYgPSBidWYgKyBzaXplb2YoKmhlYWRlcik7Cj4gPiAr CXZybF9sZW5ndGggPSAoKmJ1ZiA8PCAxNiB8ICooYnVmICsgMSkgPDwgOCB8ICooYnVmICsgMikp Owo+ID4gKwlpZiAoY291bnQgPCAoc2l6ZW9mKHN0cnVjdCBoZGNwX3NybV9oZWFkZXIpICsgdnJs X2xlbmd0aCkgfHwKPiA+ICsJICAgIHZybF9sZW5ndGggPCAoRFJNX0hEQ1BfMV80X1ZSTF9MRU5H VEhfU0laRSArCj4gPiArCQkJICBEUk1fSERDUF8xXzRfRENQX1NJR19TSVpFKSkgewo+ID4gKwkJ RFJNX0VSUk9SKCJJbnZhbGlkIGJsb2IgbGVuZ3RoIG9yIHZybCBsZW5ndGhcbiIpOwo+ID4gKwkJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c3JtX211dGV4KTsKPiA+ICsJCXJldHVybiAtRUlOVkFM Owo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIExlbmd0aCBvZiB0aGUgYWxsIHZybHMgY29tYmluZWQg Ki8KPiA+ICsJdnJsX2xlbmd0aCAtPSAoRFJNX0hEQ1BfMV80X1ZSTF9MRU5HVEhfU0laRSArCj4g PiArCQkgICAgICAgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRSk7Cj4gPiArCj4gPiArCWlmICgh dnJsX2xlbmd0aCkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiTm8gdnJsIGZvdW5kXG4iKTsKPiA+ ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlidWYgKz0gRFJNX0hEQ1BfMV80X1ZSTF9MRU5HVEhf U0laRTsKPiA+ICsJa3N2X2NvdW50ID0gaW50ZWxfaGRjcF9nZXRfcmV2b2NhdGVkX2tzdl9jb3Vu dChidWYsIHZybF9sZW5ndGgpOwo+ID4gKwlpZiAoIWtzdl9jb3VudCkgewo+ID4gKwkJRFJNX0RF QlVHX0tNUygiUmV2b2NhdGVkIEtTViBjb3VudCBpcyAwXG4iKTsKPiA+ICsJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1cm4gY291bnQ7Cj4gPiArCX0KPiA+ ICsKPiA+ICsJa2ZyZWUoZGV2X3ByaXYtPnJldm9jYXRlZF9rc3ZfbGlzdCk7Cj4gPiArCWRldl9w cml2LT5yZXZvY2F0ZWRfa3N2X2xpc3QgPSBremFsbG9jKGtzdl9jb3VudCAqIERSTV9IRENQX0tT Vl9MRU4sCj4gPiArCQkJCQkgICAgICAgR0ZQX0tFUk5FTCk7Cj4gPiArCWlmICghZGV2X3ByaXYt PnJldm9jYXRlZF9rc3ZfbGlzdCkgewo+ID4gKwkJRFJNX0VSUk9SKCJPdXQgb2YgTWVtb3J5XG4i KTsKPiA+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1 cm4gLUVOT01FTTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoaW50ZWxfaGRjcF9nZXRfcmV2b2Nh dGVkX2tzdnMoZGV2X3ByaXYtPnJldm9jYXRlZF9rc3ZfbGlzdCwKPiA+ICsJCQkJCSAgYnVmLCB2 cmxfbGVuZ3RoKSAhPSBrc3ZfY291bnQpIHsKPiA+ICsJCWRldl9wcml2LT5yZXZvY2F0ZWRfa3N2 X2NudCA9IDA7Cj4gPiArCQlrZnJlZShkZXZfcHJpdi0+cmV2b2NhdGVkX2tzdl9saXN0KTsKPiA+ ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlkZXZfcHJpdi0+cmV2b2NhdGVkX2tzdl9jbnQgPSBr c3ZfY291bnQ7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiAr CXJldHVybiBjb3VudDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBpbnRlbF9oZGNwMl9w YXJzZV9zcm0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBjaGFyICpidWYsCj4g PiArCQkJCSBzaXplX3QgY291bnQpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaGRjcDJfc3JtX2hlYWRl ciAqaGVhZGVyOwo+ID4gKwl1MzIgdnJsX2xlbmd0aCwga3N2X2NvdW50LCBrc3Zfc3o7Cj4gPiAr Cj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5zcm1fbXV0ZXgpOwo+ID4gKwlpZiAoY291bnQg PCAoc2l6ZW9mKHN0cnVjdCBoZGNwMl9zcm1faGVhZGVyKSArCj4gPiArCSAgICBEUk1fSERDUF8y X1ZSTF9MRU5HVEhfU0laRSArIERSTV9IRENQXzJfRENQX1NJR19TSVpFKSkgewo+ID4gKwkJRFJN X0VSUk9SKCJJbnZhbGlkIGJsb2IgbGVuZ3RoXG4iKTsKPiA+ICsJCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsJfQo+ID4gKwo+ ID4gKwloZWFkZXIgPSAoc3RydWN0IGhkY3AyX3NybV9oZWFkZXIgKilidWY7Cj4gPiArCURSTV9E RUJVR19LTVMoIlNSTSBJRDogMHgleCwgU1JNIFZlcjogMHgleCwgU1JNIEdlbiBObzogMHgleFxu IiwKPiA+ICsJCSAgICAgIGhlYWRlci0+c3BlY19pbmRpY2F0b3Iuc3JtX2lkLAo+ID4gKwkJICAg ICAgX19zd2FiMTYoaGVhZGVyLT5zcm1fdmVyc2lvbiksIGhlYWRlci0+c3JtX2dlbl9ubyk7Cj4g PiArCj4gPiArCVdBUk5fT04oaGVhZGVyLT5zcGVjX2luZGljYXRvci5yZXNlcnZlZCk7Cj4gPiAr CWJ1ZiA9IGJ1ZiArIHNpemVvZigqaGVhZGVyKTsKPiA+ICsJdnJsX2xlbmd0aCA9ICgqYnVmIDw8 IDE2IHwgKihidWYgKyAxKSA8PCA4IHwgKihidWYgKyAyKSk7Cj4gPiArCj4gPiArCWlmIChjb3Vu dCA8IChzaXplb2Yoc3RydWN0IGhkY3AyX3NybV9oZWFkZXIpICsgdnJsX2xlbmd0aCkgfHwKPiA+ ICsJICAgIHZybF9sZW5ndGggPCAoRFJNX0hEQ1BfMl9WUkxfTEVOR1RIX1NJWkUgKwo+ID4gKwkg ICAgRFJNX0hEQ1BfMl9EQ1BfU0lHX1NJWkUpKSB7Cj4gPiArCQlEUk1fRVJST1IoIkludmFsaWQg YmxvYiBsZW5ndGggb3IgdnJsIGxlbmd0aFxuIik7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9w cml2LT5zcm1fbXV0ZXgpOwo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJLyogTGVuZ3RoIG9mIHRoZSBhbGwgdnJscyBjb21iaW5lZCAqLwo+ID4gKwl2cmxfbGVuZ3Ro IC09IChEUk1fSERDUF8yX1ZSTF9MRU5HVEhfU0laRSArCj4gPiArCQkgICAgICAgRFJNX0hEQ1Bf Ml9EQ1BfU0lHX1NJWkUpOwo+ID4gKwo+ID4gKwlpZiAoIXZybF9sZW5ndGgpIHsKPiA+ICsJCURS TV9ERUJVR19LTVMoIk5vIHZybCBmb3VuZFxuIik7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9w cml2LT5zcm1fbXV0ZXgpOwo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJYnVmICs9IERSTV9IRENQXzJfVlJMX0xFTkdUSF9TSVpFOwo+ID4gKwlrc3ZfY291bnQgPSAo KmJ1ZiA8PCAyKSB8IERSTV9IRENQXzJfS1NWX0NPVU5UXzJfTFNCSVRTKCooYnVmICsgMSkpOwo+ ID4gKwlpZiAoIWtzdl9jb3VudCkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiUmV2b2NhdGVkIEtT ViBjb3VudCBpcyAwXG4iKTsKPiA+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNybV9tdXRl eCk7Cj4gPiArCQlyZXR1cm4gY291bnQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJa2ZyZWUoZGV2X3By aXYtPnJldm9jYXRlZF9rc3ZfbGlzdCk7Cj4gPiArCWRldl9wcml2LT5yZXZvY2F0ZWRfa3N2X2xp c3QgPSBremFsbG9jKGtzdl9jb3VudCAqIERSTV9IRENQX0tTVl9MRU4sCj4gPiArCQkJCQkgICAg ICAgR0ZQX0tFUk5FTCk7Cj4gPiArCWlmICghZGV2X3ByaXYtPnJldm9jYXRlZF9rc3ZfbGlzdCkg ewo+ID4gKwkJRFJNX0VSUk9SKCJPdXQgb2YgTWVtb3J5XG4iKTsKPiA+ICsJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnNybV9tdXRleCk7Cj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsJfQo+ ID4gKwo+ID4gKwlrc3Zfc3ogPSBrc3ZfY291bnQgKiBEUk1fSERDUF9LU1ZfTEVOOwo+ID4gKwli dWYgKz0gRFJNX0hEQ1BfMl9OT19PRl9ERVZfUExVU19SRVNFUlZFRF9TWjsKPiA+ICsKPiA+ICsJ RFJNX0RFQlVHX0tNUygiUmV2b2tlZCBLU1ZzOiAlZFxuIiwga3N2X2NvdW50KTsKPiA+ICsJbWVt Y3B5KGRldl9wcml2LT5yZXZvY2F0ZWRfa3N2X2xpc3QsIGJ1Ziwga3N2X3N6KTsKPiA+ICsKPiA+ ICsJZGV2X3ByaXYtPnJldm9jYXRlZF9rc3ZfY250ID0ga3N2X2NvdW50Owo+ID4gKwltdXRleF91 bmxvY2soJmRldl9wcml2LT5zcm1fbXV0ZXgpOwo+ID4gKwlyZXR1cm4gY291bnQ7Cj4gPiArfQo+ ID4gKwo+ID4gK3NzaXplX3QgaW50ZWxfaGRjcF9zcm1fdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgY2hhciAqYnVmLAo+ID4gKwkJCSAgICAgIHNpemVfdCBjb3VudCkK PiA+ICt7Cj4gPiArCXU4IHNybV9pZDsKPiA+ICsKPiA+ICsJc3JtX2lkID0gKigodTggKilidWYp Owo+ID4gKwlpZiAoc3JtX2lkID09IDB4ODApCj4gPiArCQlyZXR1cm4gKHNzaXplX3QpaW50ZWxf aGRjcF9wYXJzZV9zcm0oZGV2X3ByaXYsIGJ1ZiwgY291bnQpOwo+ID4gKwllbHNlIGlmIChzcm1f aWQgPT0gMHg5MSkKPiA+ICsJCXJldHVybiAoc3NpemVfdClpbnRlbF9oZGNwMl9wYXJzZV9zcm0o ZGV2X3ByaXYsIGJ1ZiwgY291bnQpOwo+ID4gKwo+ID4gKwlyZXR1cm4gKHNzaXplX3QpLUVJTlZB TDsKPiA+ICt9Cj4gPiArCj4gPiAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwgdTggY29udGVudF90eXBlKQo+ID4gIHsKPiA+ICAJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9oZGNwLmggYi9pbmNsdWRlL2RybS9kcm1faGRjcC5oCj4gPiBpbmRleCBm MjQzNDA4ZWNmMjYuLjY1MmFhZjVkNjU4ZSAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9oZGNwLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9oZGNwLmgKPiA+IEBAIC0yNjUsNCAr MjY1LDM2IEBAIHZvaWQgZHJtX2hkY3AyX3UzMl90b19zZXFfbnVtKHU4IHNlcV9udW1bSERDUF8y XzJfU0VRX05VTV9MRU5dLCB1MzIgdmFsKQo+ID4gIAlzZXFfbnVtWzJdID0gdmFsOwo+ID4gIH0K PiA+ICAKPiA+ICsjZGVmaW5lIERSTV9IRENQXzFfNF9TUk1fSUQJCQkweDgKPiA+ICsjZGVmaW5l IERSTV9IRENQXzFfNF9WUkxfTEVOR1RIX1NJWkUJCTMKPiA+ICsjZGVmaW5lIERSTV9IRENQXzFf NF9EQ1BfU0lHX1NJWkUJCTQwCj4gPiArCj4gPiArc3RydWN0IGhkY3Bfc3JtX2hlYWRlciB7Cj4g PiArCXN0cnVjdCB7Cj4gPiArCQl1OCByZXNlcnZlZF9oaTo0Owo+ID4gKwkJdTggc3JtX2lkOjQ7 Cj4gPiArCQl1OCByZXNlcnZlZF9sbzsKPiA+ICsJfSBzcGVjX2luZGljYXRvcjsKPiA+ICsJdTE2 IHNybV92ZXJzaW9uOwo+ID4gKwl1OCBzcm1fZ2VuX25vOwo+ID4gK30gX19wYWNrZWQ7Cj4gPiAr Cj4gPiArI2RlZmluZSBEUk1fSERDUF8yX1NSTV9JRAkJCTB4OQo+ID4gKyNkZWZpbmUgRFJNX0hE Q1BfMl9JTkRJQ0FUT1IJCQkweDEKPiA+ICsjZGVmaW5lIERSTV9IRENQXzJfVlJMX0xFTkdUSF9T SVpFCQkzCj4gPiArI2RlZmluZSBEUk1fSERDUF8yX0RDUF9TSUdfU0laRQkJCTM4NAo+ID4gKyNk ZWZpbmUgRFJNX0hEQ1BfMl9OT19PRl9ERVZfUExVU19SRVNFUlZFRF9TWgk0Cj4gPiArCj4gPiAr I2RlZmluZSBEUk1fSERDUF8yX0tTVl9DT1VOVF8yX0xTQklUUyhieXRlKQkoKChieXRlKSAmIDB4 QykgPj4gNikKPiA+ICsKPiA+ICtzdHJ1Y3QgaGRjcDJfc3JtX2hlYWRlciB7Cj4gPiArCXN0cnVj dCB7Cj4gPiArCQl1OCBoZGNwMl9pbmRpY2F0b3I6NDsKPiA+ICsJCXU4IHNybV9pZDo0Owo+ID4g KwkJdTggcmVzZXJ2ZWQ7Cj4gPiArCX0gc3BlY19pbmRpY2F0b3I7Cj4gPiArCXUxNiBzcm1fdmVy c2lvbjsKPiA+ICsJdTggc3JtX2dlbl9ubzsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gICNl bmRpZgo+ID4gLS0gCj4gPiAyLjE5LjEKPiA+IAo+IAo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=