From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v5 05/40] drm/i915: wrapping all hdcp var into intel_hdcp Date: Mon, 9 Jul 2018 16:30:05 -0400 Message-ID: <20180709203005.GI20303@art_vandelay> References: <1530088829-11730-1-git-send-email-ramalingam.c@intel.com> <1530088829-11730-6-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1530088829-11730-6-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdW4gMjcsIDIwMTggYXQgMDI6MDk6NTRQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IENvbnNpZGVyaW5nIHNpZ25pZmljYW50IG51bWJlciBvZiBIRENQIHNwZWNpZmljIHZh cmlhYmxlcywgaXQgd2lsbAo+IGJlIGNsZWFuIHRvIGhhdmUgc2VwYXJhdGUgc3RydWN0IGZvciBI RENQLgo+IAo+IE5ldyBzdHJ1Y3R1cmUgY2FsbGVkIGludGVsX2hkY3AgaXMgYWRkZWQgd2l0aGlu IGludGVsX2Nvbm5lY3Rvci4KPiAKPiB2MjoKPiAgIHN0cnVjdCBoZGNwIHN0YXRpY2FsbHkgYWxs b2NhdGVkLiBbU2VhbiBQYXVsXQo+ICAgZW5hYmxlIGFuZCBkaXNhYmxlIGZ1bmN0aW9uIHBhcmFt ZXRlcnMgYXJlIHJldGFpbmVkLltTZWFuIFBhdWxdCj4gdjM6Cj4gICBObyBDaGFuZ2VzLgo+IHY0 Ogo+ICAgQ29tbWl0IG1zZyBpcyByZXBocmFzZWQgW1VtYV0KPiB2NToKPiAgIENvbW1lbnQgZm9y IG11dGV4IGRlZmluaXRpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1h bGluZ2FtLmNAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAgNyArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg IHwgMTUgKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyAgICB8IDk0 ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQs IDY3IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCAzZDg0OWVjMTdmNWMuLmVmMDliYjg5ZDJjYSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTU4NTYsOSArMTU4NTYsMTAg QEAgc3RhdGljIHZvaWQgaW50ZWxfaHBkX3BvbGxfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVy KSB7Cj4gIAkJaWYgKGNvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrLmZ1bmMpCj4gIAkJCWNh bmNlbF93b3JrX3N5bmMoJmNvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrKTsKPiAtCQlpZiAo Y29ubmVjdG9yLT5oZGNwX3NoaW0pIHsKPiAtCQkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZj b25uZWN0b3ItPmhkY3BfY2hlY2tfd29yayk7Cj4gLQkJCWNhbmNlbF93b3JrX3N5bmMoJmNvbm5l Y3Rvci0+aGRjcF9wcm9wX3dvcmspOwo+ICsJCWlmIChjb25uZWN0b3ItPmhkY3AuaGRjcF9zaGlt KSB7Cj4gKwkJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygKPiArCQkJCQkmY29ubmVjdG9yLT5o ZGNwLmhkY3BfY2hlY2tfd29yayk7Cj4gKwkJCWNhbmNlbF93b3JrX3N5bmMoJmNvbm5lY3Rvci0+ aGRjcC5oZGNwX3Byb3Bfd29yayk7Cj4gIAkJfQo+ICAJfQo+ICAJZHJtX2Nvbm5lY3Rvcl9saXN0 X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXgg NTc4MzQ2YjhkN2UyLi5lYjQ4MDU3NGE5MmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+IEBAIC0zNzcsNiArMzc3LDE1IEBAIHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gewo+ICAJCQkg ICAgYm9vbCAqaGRjcF9jYXBhYmxlKTsKPiAgfTsKPiAgCj4gK3N0cnVjdCBpbnRlbF9oZGNwIHsK PiArCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKmhkY3Bfc2hpbTsKPiArCS8qIE11dGV4 IGZvciBoZGNwIHN0YXRlIG9mIHRoZSBjb25uZWN0b3IgKi8KPiArCXN0cnVjdCBtdXRleCBoZGNw X211dGV4Owo+ICsJdWludDY0X3QgaGRjcF92YWx1ZTsKPiArCXN0cnVjdCBkZWxheWVkX3dvcmsg aGRjcF9jaGVja193b3JrOwo+ICsJc3RydWN0IHdvcmtfc3RydWN0IGhkY3BfcHJvcF93b3JrOwoK Tm93IHRoYXQgdGhleSdyZSBpbiB0aGVpciBvd24gc3RydWN0LCB5b3UgY2FuIHByb2JhYmx5IGRy b3AgdGhlIGhkY3BfKiBwcmVmaXgKZnJvbSB0aGUgc3RydWN0IG1lbWJlcnMuCgo+ICt9Owo+ICsK PiAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBiYXNl Owo+ICAJLyoKPiBAQCAtNDA5LDExICs0MTgsNyBAQCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsK PiAgCS8qIFdvcmsgc3RydWN0IHRvIHNjaGVkdWxlIGEgdWV2ZW50IG9uIGxpbmsgdHJhaW4gZmFp bHVyZSAqLwo+ICAJc3RydWN0IHdvcmtfc3RydWN0IG1vZGVzZXRfcmV0cnlfd29yazsKPiAgCj4g LQljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3NoaW07Cj4gLQlzdHJ1Y3QgbXV0 ZXggaGRjcF9tdXRleDsKPiAtCXVpbnQ2NF90IGhkY3BfdmFsdWU7IC8qIHByb3RlY3RlZCBieSBo ZGNwX211dGV4ICovCj4gLQlzdHJ1Y3QgZGVsYXllZF93b3JrIGhkY3BfY2hlY2tfd29yazsKPiAt CXN0cnVjdCB3b3JrX3N0cnVjdCBoZGNwX3Byb3Bfd29yazsKPiArCXN0cnVjdCBpbnRlbF9oZGNw IGhkY3A7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUg ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiBpbmRleCAwY2M2YTg2MWJjZjguLjY1YmJl NTg3NGVlZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiBAQCAtNjI2LDYgKzYy Niw3IEBAIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmNvbm5fdG9fZGlnX3BvcnQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAKPiAgc3RhdGljIGludCBfaW50ZWxfaGRj cF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ICsJc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9yLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9f ZGlnX3BvcnQoY29ubmVjdG9yKTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQt PmJhc2UucG9ydDsKPiBAQCAtNjQxLDcgKzY0Miw3IEBAIHN0YXRpYyBpbnQgX2ludGVsX2hkY3Bf ZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAkJcmV0dXJuIC1F VElNRURPVVQ7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gY29ubmVjdG9yLT5oZGNwX3NoaW0tPnRvZ2ds ZV9zaWduYWxsaW5nKGludGVsX2RpZ19wb3J0LCBmYWxzZSk7Cj4gKwlyZXQgPSBoZGNwLT5oZGNw X3NoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKGludGVsX2RpZ19wb3J0LCBmYWxzZSk7Cj4gIAlpZiAo cmV0KSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQIHNpZ25hbGxpbmdc biIpOwo+ICAJCXJldHVybiByZXQ7Cj4gQEAgLTY1Myw2ICs2NTQsNyBAQCBzdGF0aWMgaW50IF9p bnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAK PiAgc3RhdGljIGludCBfaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3It PmhkY3A7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjb25uZWN0b3It PmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWludCBpLCByZXQsIHRyaWVzID0gMzsKPiAgCj4g QEAgLTY3OCw3ICs2ODAsNyBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAkvKiBJbmNhc2Ugb2YgYXV0aGVudGljYXRp b24gZmFpbHVyZXMsIEhEQ1Agc3BlYyBleHBlY3RzIHJlYXV0aC4gKi8KPiAgCWZvciAoaSA9IDA7 IGkgPCB0cmllczsgaSsrKSB7Cj4gIAkJcmV0ID0gaW50ZWxfaGRjcF9hdXRoKGNvbm5fdG9fZGln X3BvcnQoY29ubmVjdG9yKSwKPiAtCQkJCSAgICAgIGNvbm5lY3Rvci0+aGRjcF9zaGltKTsKPiAr CQkJCSAgICAgIGhkY3AtPmhkY3Bfc2hpbSk7Cj4gIAkJaWYgKCFyZXQpCj4gIAkJCXJldHVybiAw Owo+ICAKPiBAQCAtNjk0LDM2ICs2OTYsNDIgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcF9lbmFi bGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAKPiAgc3RhdGljIHZvaWQg aW50ZWxfaGRjcF9jaGVja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgewo+IC0J c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29udGFpbmVyX29mKHRvX2RlbGF5 ZWRfd29yayh3b3JrKSwKPiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gY29udGFpbmVyX29m KHRvX2RlbGF5ZWRfd29yayh3b3JrKSwKPiArCQkJCQkgICAgICAgc3RydWN0IGludGVsX2hkY3As Cj4gKwkJCQkJICAgICAgIGhkY3BfY2hlY2tfd29yayk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IgPSBjb250YWluZXJfb2YoaGRjcCwKPiAgCQkJCQkJCSBzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yLAo+IC0JCQkJCQkJIGhkY3BfY2hlY2tfd29yayk7Cj4gKwkJCQkJCQkgaGRj cCk7CgpTaW5jZSB5b3UgdXNlIHRoaXMgYmVsb3csIGJyZWFrIHRoaXMgb3V0IGludG8gYSBzdGF0 aWMgaW5saW5lIGhlbHBlcgppbnRlbF9oZGNwX3RvX2Nvbm5lY3RvcigpLgoKCldpdGggdGhvc2Ug bml0cyBhZGRyZXNzZWQsCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1 bS5vcmc+CgoKPiArCj4gIAlpZiAoIWludGVsX2hkY3BfY2hlY2tfbGluayhjb25uZWN0b3IpKQo+ IC0JCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmY29ubmVjdG9yLT5oZGNwX2NoZWNrX3dvcmssCj4g KwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5oZGNwX2NoZWNrX3dvcmssCj4gIAkJCQkg ICAgICBEUk1fSERDUF9DSEVDS19QRVJJT0RfTVMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBp bnRlbF9oZGNwX3Byb3Bfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIHsKPiAtCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGNvbnRhaW5lcl9vZih3b3JrLAo+ICsJ c3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGludGVs X2hkY3AsCj4gKwkJCQkJICAgICAgIGhkY3BfcHJvcF93b3JrKTsKPiArCXN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciA9IGNvbnRhaW5lcl9vZihoZGNwLAo+ICAJCQkJCQkJIHN0cnVj dCBpbnRlbF9jb25uZWN0b3IsCj4gLQkJCQkJCQkgaGRjcF9wcm9wX3dvcmspOwo+ICsJCQkJCQkJ IGhkY3ApOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7 Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGU7Cj4gIAo+ICAJZHJtX21vZGVz ZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKPiAtCW11 dGV4X2xvY2soJmNvbm5lY3Rvci0+aGRjcF9tdXRleCk7Cj4gKwltdXRleF9sb2NrKCZoZGNwLT5o ZGNwX211dGV4KTsKPiAgCj4gIAkvKgo+ICAJICogVGhpcyB3b3JrZXIgaXMgb25seSB1c2VkIHRv IGZsaXAgYmV0d2VlbiBFTkFCTEVEL0RFU0lSRUQuIEVpdGhlciBvZgo+ICAJICogdGhvc2UgdG8g VU5ERVNJUkVEIGlzIGhhbmRsZWQgYnkgY29yZS4gSWYgaGRjcF92YWx1ZSA9PSBVTkRFU0lSRUQs Cj4gIAkgKiB3ZSdyZSBydW5uaW5nIGp1c3QgYWZ0ZXIgaGRjcCBoYXMgYmVlbiBkaXNhYmxlZCwg c28ganVzdCBleGl0Cj4gIAkgKi8KPiAtCWlmIChjb25uZWN0b3ItPmhkY3BfdmFsdWUgIT0gRFJN X01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkgewo+ICsJaWYgKGhkY3AtPmhkY3Bf dmFsdWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkgewo+ICAJCXN0 YXRlID0gY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+IC0JCXN0YXRlLT5jb250ZW50X3Byb3RlY3Rp b24gPSBjb25uZWN0b3ItPmhkY3BfdmFsdWU7Cj4gKwkJc3RhdGUtPmNvbnRlbnRfcHJvdGVjdGlv biA9IGhkY3AtPmhkY3BfdmFsdWU7Cj4gIAl9Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZjb25uZWN0 b3ItPmhkY3BfbXV0ZXgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZoZGNwLT5oZGNwX211dGV4KTsKPiAg CWRybV9tb2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsK PiAgfQo+ICAKPiBAQCAtNzM3LDYgKzc0NSw3IEBAIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKPiAgaW50IGlu dGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKmhkY3Bfc2hpbSkKPiAgewo+ICsJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICAJaW50IHJldDsKPiAgCj4g IAlyZXQgPSBkcm1fY29ubmVjdG9yX2F0dGFjaF9jb250ZW50X3Byb3RlY3Rpb25fcHJvcGVydHko Cj4gQEAgLTc0NCw1MSArNzUzLDUzIEBAIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAK PiAtCWNvbm5lY3Rvci0+aGRjcF9zaGltID0gaGRjcF9zaGltOwo+IC0JbXV0ZXhfaW5pdCgmY29u bmVjdG9yLT5oZGNwX211dGV4KTsKPiAtCUlOSVRfREVMQVlFRF9XT1JLKCZjb25uZWN0b3ItPmhk Y3BfY2hlY2tfd29yaywgaW50ZWxfaGRjcF9jaGVja193b3JrKTsKPiAtCUlOSVRfV09SSygmY29u bmVjdG9yLT5oZGNwX3Byb3Bfd29yaywgaW50ZWxfaGRjcF9wcm9wX3dvcmspOwo+ICsJaGRjcC0+ aGRjcF9zaGltID0gaGRjcF9zaGltOwo+ICsJbXV0ZXhfaW5pdCgmaGRjcC0+aGRjcF9tdXRleCk7 Cj4gKwlJTklUX0RFTEFZRURfV09SSygmaGRjcC0+aGRjcF9jaGVja193b3JrLCBpbnRlbF9oZGNw X2NoZWNrX3dvcmspOwo+ICsJSU5JVF9XT1JLKCZoZGNwLT5oZGNwX3Byb3Bfd29yaywgaW50ZWxf aGRjcF9wcm9wX3dvcmspOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIGludCBpbnRlbF9oZGNw X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIHsKPiArCXN0cnVj dCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiAgCWludCByZXQ7Cj4gIAo+ IC0JaWYgKCFjb25uZWN0b3ItPmhkY3Bfc2hpbSkKPiArCWlmICghaGRjcC0+aGRjcF9zaGltKQo+ ICAJCXJldHVybiAtRU5PRU5UOwo+ICAKPiAtCW11dGV4X2xvY2soJmNvbm5lY3Rvci0+aGRjcF9t dXRleCk7Cj4gKwltdXRleF9sb2NrKCZoZGNwLT5oZGNwX211dGV4KTsKPiAgCj4gIAlyZXQgPSBf aW50ZWxfaGRjcF9lbmFibGUoY29ubmVjdG9yKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBvdXQ7 Cj4gIAo+IC0JY29ubmVjdG9yLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNU SU9OX0VOQUJMRUQ7Cj4gLQlzY2hlZHVsZV93b3JrKCZjb25uZWN0b3ItPmhkY3BfcHJvcF93b3Jr KTsKPiAtCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmY29ubmVjdG9yLT5oZGNwX2NoZWNrX3dvcmss Cj4gKwloZGNwLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJM RUQ7Cj4gKwlzY2hlZHVsZV93b3JrKCZoZGNwLT5oZGNwX3Byb3Bfd29yayk7Cj4gKwlzY2hlZHVs ZV9kZWxheWVkX3dvcmsoJmhkY3AtPmhkY3BfY2hlY2tfd29yaywKPiAgCQkJICAgICAgRFJNX0hE Q1BfQ0hFQ0tfUEVSSU9EX01TKTsKPiAgb3V0Ogo+IC0JbXV0ZXhfdW5sb2NrKCZjb25uZWN0b3It PmhkY3BfbXV0ZXgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZoZGNwLT5oZGNwX211dGV4KTsKPiAgCXJl dHVybiByZXQ7Cj4gIH0KPiAgCj4gIGludCBpbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9 ICZjb25uZWN0b3ItPmhkY3A7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gLQlpZiAoIWNvbm5lY3Rv ci0+aGRjcF9zaGltKQo+ICsJaWYgKCFoZGNwLT5oZGNwX3NoaW0pCj4gIAkJcmV0dXJuIC1FTk9F TlQ7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5oZGNwX211dGV4KTsKPiArCW11dGV4 X2xvY2soJmhkY3AtPmhkY3BfbXV0ZXgpOwo+ICAKPiAtCWlmIChjb25uZWN0b3ItPmhkY3BfdmFs dWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkgewo+IC0JCWNvbm5l Y3Rvci0+aGRjcF92YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQ7 Cj4gKwlpZiAoaGRjcC0+aGRjcF92YWx1ZSAhPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05f VU5ERVNJUkVEKSB7Cj4gKwkJaGRjcC0+aGRjcF92YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJP VEVDVElPTl9VTkRFU0lSRUQ7Cj4gIAkJcmV0ID0gX2ludGVsX2hkY3BfZGlzYWJsZShjb25uZWN0 b3IpOwo+ICAJfQo+ICAKPiAtCW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5oZGNwX211dGV4KTsK PiAtCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmY29ubmVjdG9yLT5oZGNwX2NoZWNrX3dvcmsp Owo+ICsJbXV0ZXhfdW5sb2NrKCZoZGNwLT5oZGNwX211dGV4KTsKPiArCWNhbmNlbF9kZWxheWVk X3dvcmtfc3luYygmaGRjcC0+aGRjcF9jaGVja193b3JrKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0K PiAgCj4gQEAgLTgyOCwxNyArODM5LDE4IEBAIHZvaWQgaW50ZWxfaGRjcF9hdG9taWNfY2hlY2so c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgLyogSW1wbGVtZW50cyBQYXJ0IDMg b2YgdGhlIEhEQ1AgYXV0aG9yaXphdGlvbiBwcm9jZWR1cmUgKi8KPiAgaW50IGludGVsX2hkY3Bf Y2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIHsKPiArCXN0 cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtPmRldl9wcml2YXRl Owo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3Rv X2RpZ19wb3J0KGNvbm5lY3Rvcik7Cj4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0 LT5iYXNlLnBvcnQ7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gLQlpZiAoIWNvbm5lY3Rvci0+aGRj cF9zaGltKQo+ICsJaWYgKCFoZGNwLT5oZGNwX3NoaW0pCj4gIAkJcmV0dXJuIC1FTk9FTlQ7Cj4g IAo+IC0JbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5oZGNwX211dGV4KTsKPiArCW11dGV4X2xvY2so JmhkY3AtPmhkY3BfbXV0ZXgpOwo+ICAKPiAtCWlmIChjb25uZWN0b3ItPmhkY3BfdmFsdWUgPT0g RFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkKPiArCWlmIChoZGNwLT5oZGNw X3ZhbHVlID09IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQpCj4gIAkJZ290 byBvdXQ7Cj4gIAo+ICAJaWYgKCEoSTkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpICYg SERDUF9TVEFUVVNfRU5DKSkgewo+IEBAIC04NDYsMTcgKzg1OCwxNyBAQCBpbnQgaW50ZWxfaGRj cF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCQkJICBj b25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCj4gIAkJCSAgSTkx NV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpKTsKPiAgCQlyZXQgPSAtRU5YSU87Cj4gLQkJ Y29ubmVjdG9yLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lS RUQ7Cj4gLQkJc2NoZWR1bGVfd29yaygmY29ubmVjdG9yLT5oZGNwX3Byb3Bfd29yayk7Cj4gKwkJ aGRjcC0+aGRjcF92YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9ERVNJUkVEOwo+ ICsJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPmhkY3BfcHJvcF93b3JrKTsKPiAgCQlnb3RvIG91dDsK PiAgCX0KPiAgCj4gLQlpZiAoY29ubmVjdG9yLT5oZGNwX3NoaW0tPmNoZWNrX2xpbmsoaW50ZWxf ZGlnX3BvcnQpKSB7Cj4gLQkJaWYgKGNvbm5lY3Rvci0+aGRjcF92YWx1ZSAhPQo+ICsJaWYgKGhk Y3AtPmhkY3Bfc2hpbS0+Y2hlY2tfbGluayhpbnRlbF9kaWdfcG9ydCkpIHsKPiArCQlpZiAoaGRj cC0+aGRjcF92YWx1ZSAhPQo+ICAJCSAgICBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fVU5E RVNJUkVEKSB7Cj4gLQkJCWNvbm5lY3Rvci0+aGRjcF92YWx1ZSA9Cj4gKwkJCWhkY3AtPmhkY3Bf dmFsdWUgPQo+ICAJCQkJRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQ7Cj4gLQkJ CXNjaGVkdWxlX3dvcmsoJmNvbm5lY3Rvci0+aGRjcF9wcm9wX3dvcmspOwo+ICsJCQlzY2hlZHVs ZV93b3JrKCZoZGNwLT5oZGNwX3Byb3Bfd29yayk7Cj4gIAkJfQo+ICAJCWdvdG8gb3V0Owo+ICAJ fQo+IEBAIC04NjcsMjAgKzg3OSwyMCBAQCBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXJldCA9IF9pbnRlbF9oZGNwX2Rpc2Fi bGUoY29ubmVjdG9yKTsKPiAgCWlmIChyZXQpIHsKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBk aXNhYmxlIGhkY3AgKCVkKVxuIiwgcmV0KTsKPiAtCQljb25uZWN0b3ItPmhkY3BfdmFsdWUgPSBE Uk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKPiAtCQlzY2hlZHVsZV93b3JrKCZj b25uZWN0b3ItPmhkY3BfcHJvcF93b3JrKTsKPiArCQloZGNwLT5oZGNwX3ZhbHVlID0gRFJNX01P REVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gKwkJc2NoZWR1bGVfd29yaygmaGRjcC0+ aGRjcF9wcm9wX3dvcmspOwo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+ICAKPiAgCXJldCA9IF9pbnRl bF9oZGNwX2VuYWJsZShjb25uZWN0b3IpOwo+ICAJaWYgKHJldCkgewo+ICAJCURSTV9FUlJPUigi RmFpbGVkIHRvIGVuYWJsZSBoZGNwICglZClcbiIsIHJldCk7Cj4gLQkJY29ubmVjdG9yLT5oZGNw X3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gLQkJc2NoZWR1 bGVfd29yaygmY29ubmVjdG9yLT5oZGNwX3Byb3Bfd29yayk7Cj4gKwkJaGRjcC0+aGRjcF92YWx1 ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9ERVNJUkVEOwo+ICsJCXNjaGVkdWxlX3dv cmsoJmhkY3AtPmhkY3BfcHJvcF93b3JrKTsKPiAgCQlnb3RvIG91dDsKPiAgCX0KPiAgCj4gIG91 dDoKPiAtCW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5oZGNwX211dGV4KTsKPiArCW11dGV4X3Vu bG9jaygmaGRjcC0+aGRjcF9tdXRleCk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gLS0gCj4gMi43 LjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBP UwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK