From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH v2 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode Date: Mon, 28 Sep 2015 15:15:59 +0300 Message-ID: <1443442559.2922.1.camel@sorvi> References: <1441708851-24646-5-git-send-email-ville.syrjala@linux.intel.com> <1443188336-2385-1-git-send-email-ville.syrjala@linux.intel.com> Reply-To: mika.kahola@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 ESMTP id C137F6E920 for ; Mon, 28 Sep 2015 05:15:05 -0700 (PDT) In-Reply-To: <1443188336-2385-1-git-send-email-ville.syrjala@linux.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.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+CgpPbiBGcmks IDIwMTUtMDktMjUgYXQgMTY6MzggKzAzMDAsIHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t IHdyb3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+Cj4gCj4gVGhlIGFkanVzdGVhZF9tb2RlIGNydGNfIHRpbWluZ3MgYXJlIHdoYXQgd2Ug d2lsbCBwcm9ncmFtIGludG8gdGhlIGhhcmR3YXJlLAo+IHNvIGl0J3MgdGhvc2UgdGltaW5ncyB3 ZSBzaG91bGQgYmUgbG9va2luZyBwcmFjdGljYWxseSBldmVyeXdoZXJlLgo+IAo+IFRoZSBub3Jt YWwgYW5kIGNydGNfIHRpbWluZ3Mgc2hvdWxkIGRpZmZlciBvbmx5IHdoZW4gc3RlcmUgZG91Ymxp bmcgaXMKPiB1c2VkLiBJbiB0aGF0IGNhc2UgdGhlIG5vcm1hbCB0aW1pbmdzIGFyZSB0aGUgb3Jp Z25hbCBub24tZG91YmxlZAo+IHRpbWlnbnMsIGFuZCBjcnRjXyB0aW1pbmdzIGFyZSB0aGUgZG91 YmxlZCB0aW1pbmdzIHVzZWQgYnkgdGhlIGhhcmR3YXJlLgo+IAo+IFRoZSBvbmx5IGNhc2Ugd2hl cmUgd2UgY29udGludWUgdG8gbG9vayBhdCB0aGUgbm9ybWFsIHRpbWluZ3MgaXMgd2hlbiB3ZQo+ IHBhc3MgdGhlIGFkanVzdGVkX21vZGUgdG8gZHJtX21hdGNoX3tjZWEsaGRtaX1fbW9kZSgpIHRv IGZpbmQgdGhlIFZJQy4KPiBkcm1fZWRpZCBrZWVwcyB0aGUgbW9kZXMgYXJvbnVuZCBpbiB0aGUg bm9uLWRvdWJsZSBmb3JtIG9ubHksIHNvIGl0Cj4gbmVlZHMgdGhlIG5vbi1kb3VibGUgdGltaW5n cyB0byBtYXRjaCBhZ2FpbnN0Lgo+IAo+IERvbmUgd2l0aCBzZWQKPiAncy9hZGp1c3RlZF9tb2Rl LT5cKFt2aFZIXVwpL2FkanVzdGVkX21vZGUtPmNydGNfXDEvZycKPiAncy9hZGp1c3RlZF9tb2Rl LT5jbG9jay9hZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrL2cnCj4gd2l0aCBhIG1hbnVhbCBzL1ZE aXNwbGF5L3ZkaXNwbGF5LyB3aXRoaW4gdGhlIGNvbW1lbnQgaW4gaW50ZWxfZHZvLmMKPiAKPiB2 MjogVXBkYXRlIGR1ZSB0byBpbnRlbF9kc2kuYyBjaGFuZ2VzCj4gCj4gUmV2aWV3ZWQtYnk6IE1p a2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZHZvX2l2Y2guYyAgICAgIHwgIDggKystLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgIHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyB8ICA0ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYyAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyAgICAg fCAzMCArKysrKysrKystLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2 by5jICAgICB8ICA4ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMg ICB8IDU4ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgICAgfCAgNCArLS0KPiAgOCBmaWxlcyBjaGFuZ2VkLCA1 OSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZHZvX2l2Y2guYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2R2b19pdmNo LmMKPiBpbmRleCA3MzJjZTg3Li5lMDgyZjc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2R2b19pdmNoLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kdm9faXZjaC5j Cj4gQEAgLTQxNCwxNiArNDE0LDE2IEBAIHN0YXRpYyB2b2lkIGl2Y2hfbW9kZV9zZXQoc3RydWN0 IGludGVsX2R2b19kZXZpY2UgKmR2bywKPiAgCXZyNDAgPSAoVlI0MF9TVEFMTF9FTkFCTEUgfCBW UjQwX1ZFUlRJQ0FMX0lOVEVSUF9FTkFCTEUgfAo+ICAJCVZSNDBfSE9SSVpPTlRBTF9JTlRFUlBf RU5BQkxFKTsKPiAgCj4gLQlpZiAobW9kZS0+aGRpc3BsYXkgIT0gYWRqdXN0ZWRfbW9kZS0+aGRp c3BsYXkgfHwKPiAtCSAgICBtb2RlLT52ZGlzcGxheSAhPSBhZGp1c3RlZF9tb2RlLT52ZGlzcGxh eSkgewo+ICsJaWYgKG1vZGUtPmhkaXNwbGF5ICE9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3Bs YXkgfHwKPiArCSAgICBtb2RlLT52ZGlzcGxheSAhPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNw bGF5KSB7Cj4gIAkJdWludDE2X3QgeF9yYXRpbywgeV9yYXRpbzsKPiAgCj4gIAkJdnIwMSB8PSBW UjAxX1BBTkVMX0ZJVF9FTkFCTEU7Cj4gIAkJdnI0MCB8PSBWUjQwX0NMT0NLX0dBVElOR19FTkFC TEU7Cj4gIAkJeF9yYXRpbyA9ICgoKG1vZGUtPmhkaXNwbGF5IC0gMSkgPDwgMTYpIC8KPiAtCQkJ ICAgKGFkanVzdGVkX21vZGUtPmhkaXNwbGF5IC0gMSkpID4+IDI7Cj4gKwkJCSAgIChhZGp1c3Rl ZF9tb2RlLT5jcnRjX2hkaXNwbGF5IC0gMSkpID4+IDI7Cj4gIAkJeV9yYXRpbyA9ICgoKG1vZGUt PnZkaXNwbGF5IC0gMSkgPDwgMTYpIC8KPiAtCQkJICAgKGFkanVzdGVkX21vZGUtPnZkaXNwbGF5 IC0gMSkpID4+IDI7Cj4gKwkJCSAgIChhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5IC0gMSkp ID4+IDI7Cj4gIAkJaXZjaF93cml0ZShkdm8sIFZSNDIsIHhfcmF0aW8pOwo+ICAJCWl2Y2hfd3Jp dGUoZHZvLCBWUjQxLCB5X3JhdGlvKTsKPiAgCX0gZWxzZSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdWRpby5jCj4gaW5kZXggNzc5ZjkwYy4uZTRjMzBlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXVkaW8uYwo+IEBAIC03NCwxMyArNzQsMTMgQEAgc3RhdGljIHUzMiBhdWRpb19jb25m aWdfaGRtaV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWQKPiAgCWludCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhkbWlfYXVk aW9fY2xvY2spOyBpKyspIHsKPiAtCQlpZiAoYWRqdXN0ZWRfbW9kZS0+Y2xvY2sgPT0gaGRtaV9h dWRpb19jbG9ja1tpXS5jbG9jaykKPiArCQlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9 PSBoZG1pX2F1ZGlvX2Nsb2NrW2ldLmNsb2NrKQo+ICAJCQlicmVhazsKPiAgCX0KPiAgCj4gIAlp ZiAoaSA9PSBBUlJBWV9TSVpFKGhkbWlfYXVkaW9fY2xvY2spKSB7Cj4gIAkJRFJNX0RFQlVHX0tN UygiSERNSSBhdWRpbyBwaXhlbCBjbG9jayBzZXR0aW5nIGZvciAlZCBub3QgZm91bmQsIGZhbGxp bmcgYmFjayB0byBkZWZhdWx0c1xuIiwKPiAtCQkJICAgICAgYWRqdXN0ZWRfbW9kZS0+Y2xvY2sp Owo+ICsJCQkgICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrKTsKPiAgCQlpID0gMTsKPiAg CX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGY4NjA1Yjku LjkxZjg4ZTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTQ0 MDAsNyArNDQwMCw3IEBAIGludCBza2xfdXBkYXRlX3NjYWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpzdGF0ZSkKPiAgCXJldHVybiBza2xfdXBkYXRlX3NjYWxlcihzdGF0ZSwgIXN0 YXRlLT5iYXNlLmFjdGl2ZSwgU0tMX0NSVENfSU5ERVgsCj4gIAkJJnN0YXRlLT5zY2FsZXJfc3Rh dGUuc2NhbGVyX2lkLCBEUk1fUk9UQVRFXzAsCj4gIAkJc3RhdGUtPnBpcGVfc3JjX3csIHN0YXRl LT5waXBlX3NyY19oLAo+IC0JCWFkanVzdGVkX21vZGUtPmhkaXNwbGF5LCBhZGp1c3RlZF9tb2Rl LT52ZGlzcGxheSk7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwgYWRqdXN0ZWRf bW9kZS0+Y3J0Y192ZGlzcGxheSk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC02NTg3LDcgKzY1ODcs NyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAkgKiBXYVBydW5lTW9kZVdpdGhJbmNvcnJlY3RIc3luY09mZnNldDpjdGcs ZWxrLGlsayxzbmIsaXZiLHZsdixoc3cuCj4gIAkgKi8KPiAgCWlmICgoSU5URUxfSU5GTyhkZXYp LT5nZW4gPiA0IHx8IElTX0c0WChkZXYpKSAmJgo+IC0JCWFkanVzdGVkX21vZGUtPmhzeW5jX3N0 YXJ0ID09IGFkanVzdGVkX21vZGUtPmhkaXNwbGF5KQo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNf aHN5bmNfc3RhcnQgPT0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSkKPiAgCQlyZXR1cm4g LUVJTlZBTDsKPiAgCj4gIAlpZiAoSEFTX0lQUyhkZXYpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jCj4gaW5kZXggZmY4YmE1NS4uY2NjZjAxNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX21zdC5jCj4gQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBf bXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXJl dHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gLQltc3RfcGJuID0gZHJtX2RwX2NhbGNfcGJuX21vZGUo YWRqdXN0ZWRfbW9kZS0+Y2xvY2ssIGJwcCk7Cj4gKwltc3RfcGJuID0gZHJtX2RwX2NhbGNfcGJu X21vZGUoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywgYnBwKTsKPiAgCj4gIAlwaXBlX2NvbmZp Zy0+cGJuID0gbXN0X3BibjsKPiAgCXNsb3RzID0gZHJtX2RwX2ZpbmRfdmNwaV9zbG90cygmaW50 ZWxfZHAtPm1zdF9tZ3IsIG1zdF9wYm4pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gaW5k ZXggYjRkNTIxMy4uNGZiOTdjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gQEAg LTcxMCwxMCArNzEwLDEwIEBAIHN0YXRpYyB2b2lkIHNldF9kc2lfdGltaW5ncyhzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJdTE2IGhhY3RpdmUsIGhmcCwgaHN5bmMsIGhicCwg dmZwLCB2c3luYywgdmJwOwo+ICAKPiAtCWhhY3RpdmUgPSBhZGp1c3RlZF9tb2RlLT5oZGlzcGxh eTsKPiAtCWhmcCA9IGFkanVzdGVkX21vZGUtPmhzeW5jX3N0YXJ0IC0gYWRqdXN0ZWRfbW9kZS0+ aGRpc3BsYXk7Cj4gLQloc3luYyA9IGFkanVzdGVkX21vZGUtPmhzeW5jX2VuZCAtIGFkanVzdGVk X21vZGUtPmhzeW5jX3N0YXJ0Owo+IC0JaGJwID0gYWRqdXN0ZWRfbW9kZS0+aHRvdGFsIC0gYWRq dXN0ZWRfbW9kZS0+aHN5bmNfZW5kOwo+ICsJaGFjdGl2ZSA9IGFkanVzdGVkX21vZGUtPmNydGNf aGRpc3BsYXk7Cj4gKwloZnAgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0IC0gYWRq dXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiArCWhzeW5jID0gYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19oc3luY19lbmQgLSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0Owo+ICsJaGJwID0g YWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWwgLSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX2Vu ZDsKPiAgCj4gIAlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmspIHsKPiAgCQloYWN0aXZlIC89IDI7 Cj4gQEAgLTcyNCw5ICs3MjQsOSBAQCBzdGF0aWMgdm9pZCBzZXRfZHNpX3RpbWluZ3Moc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICAJCWhicCAvPSAyOwo+ICAJfQo+ICAKPiAtCXZmcCA9 IGFkanVzdGVkX21vZGUtPnZzeW5jX3N0YXJ0IC0gYWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXk7Cj4g LQl2c3luYyA9IGFkanVzdGVkX21vZGUtPnZzeW5jX2VuZCAtIGFkanVzdGVkX21vZGUtPnZzeW5j X3N0YXJ0Owo+IC0JdmJwID0gYWRqdXN0ZWRfbW9kZS0+dnRvdGFsIC0gYWRqdXN0ZWRfbW9kZS0+ dnN5bmNfZW5kOwo+ICsJdmZwID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192c3luY19zdGFydCAtIGFk anVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4gKwl2c3luYyA9IGFkanVzdGVkX21vZGUtPmNy dGNfdnN5bmNfZW5kIC0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192c3luY19zdGFydDsKPiArCXZicCA9 IGFkanVzdGVkX21vZGUtPmNydGNfdnRvdGFsIC0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192c3luY19l bmQ7Cj4gIAo+ICAJLyogaG9yaXpvbnRhbCB2YWx1ZXMgYXJlIGluIHRlcm1zIG9mIGhpZ2ggc3Bl ZWQgYnl0ZSBjbG9jayAqLwo+ICAJaGFjdGl2ZSA9IHR4Ynl0ZWNsa2hzKGhhY3RpdmUsIGJwcCwg bGFuZV9jb3VudCwKPiBAQCAtNzQ1LDExICs3NDUsMTEgQEAgc3RhdGljIHZvaWQgc2V0X2RzaV90 aW1pbmdzKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJICogd2hlcmVhcyB0aGVz ZSB2YWx1ZXMgc2hvdWxkIGJlIGJhc2VkIG9uIHJlc29sdXRpb24uCj4gIAkJCSAqLwo+ICAJCQlJ OTE1X1dSSVRFKEJYVF9NSVBJX1RSQU5TX0hBQ1RJVkUocG9ydCksCj4gLQkJCQkgICBhZGp1c3Rl ZF9tb2RlLT5oZGlzcGxheSk7Cj4gKwkJCQkgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5 KTsKPiAgCQkJSTkxNV9XUklURShCWFRfTUlQSV9UUkFOU19WQUNUSVZFKHBvcnQpLAo+IC0JCQkJ ICAgYWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXkpOwo+ICsJCQkJICAgYWRqdXN0ZWRfbW9kZS0+Y3J0 Y192ZGlzcGxheSk7Cj4gIAkJCUk5MTVfV1JJVEUoQlhUX01JUElfVFJBTlNfVlRPVEFMKHBvcnQp LAo+IC0JCQkJICAgYWRqdXN0ZWRfbW9kZS0+dnRvdGFsKTsKPiArCQkJCSAgIGFkanVzdGVkX21v ZGUtPmNydGNfdnRvdGFsKTsKPiAgCQl9Cj4gIAo+ICAJCUk5MTVfV1JJVEUoTUlQSV9IQUNUSVZF X0FSRUFfQ09VTlQocG9ydCksIGhhY3RpdmUpOwo+IEBAIC03ODIsNyArNzgyLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZHNpX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIpCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygicGlwZSAlY1xuIiwgcGlwZV9uYW1lKGludGVsX2Ny dGMtPnBpcGUpKTsKPiAgCj4gLQltb2RlX2hkaXNwbGF5ID0gYWRqdXN0ZWRfbW9kZS0+aGRpc3Bs YXk7Cj4gKwltb2RlX2hkaXNwbGF5ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiAg Cj4gIAlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmspIHsKPiAgCQltb2RlX2hkaXNwbGF5IC89IDI7 Cj4gQEAgLTgzMiw3ICs4MzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgCQlJOTE1X1dSSVRFKE1JUElfRFBI WV9QQVJBTShwb3J0KSwgaW50ZWxfZHNpLT5kcGh5X3JlZyk7Cj4gIAo+ICAJCUk5MTVfV1JJVEUo TUlQSV9EUElfUkVTT0xVVElPTihwb3J0KSwKPiAtCQkJYWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXkg PDwgVkVSVElDQUxfQUREUkVTU19TSElGVCB8Cj4gKwkJCWFkanVzdGVkX21vZGUtPmNydGNfdmRp c3BsYXkgPDwgVkVSVElDQUxfQUREUkVTU19TSElGVCB8Cj4gIAkJCW1vZGVfaGRpc3BsYXkgPDwg SE9SSVpPTlRBTF9BRERSRVNTX1NISUZUKTsKPiAgCX0KPiAgCj4gQEAgLTg3OCwxMyArODc4LDEz IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpp bnRlbF9lbmNvZGVyKQo+ICAJCWlmIChpc192aWRfbW9kZShpbnRlbF9kc2kpICYmCj4gIAkJCWlu dGVsX2RzaS0+dmlkZW9fbW9kZV9mb3JtYXQgPT0gVklERU9fTU9ERV9CVVJTVCkgewo+ICAJCQlJ OTE1X1dSSVRFKE1JUElfSFNfVFhfVElNRU9VVChwb3J0KSwKPiAtCQkJCXR4Ynl0ZWNsa2hzKGFk anVzdGVkX21vZGUtPmh0b3RhbCwgYnBwLAo+ICsJCQkJdHhieXRlY2xraHMoYWRqdXN0ZWRfbW9k ZS0+Y3J0Y19odG90YWwsIGJwcCwKPiAgCQkJCQkgICAgaW50ZWxfZHNpLT5sYW5lX2NvdW50LAo+ ICAJCQkJCSAgICBpbnRlbF9kc2ktPmJ1cnN0X21vZGVfcmF0aW8pICsgMSk7Cj4gIAkJfSBlbHNl IHsKPiAgCQkJSTkxNV9XUklURShNSVBJX0hTX1RYX1RJTUVPVVQocG9ydCksCj4gLQkJCQl0eGJ5 dGVjbGtocyhhZGp1c3RlZF9tb2RlLT52dG90YWwgKgo+IC0JCQkJCSAgICBhZGp1c3RlZF9tb2Rl LT5odG90YWwsCj4gKwkJCQl0eGJ5dGVjbGtocyhhZGp1c3RlZF9tb2RlLT5jcnRjX3Z0b3RhbCAq Cj4gKwkJCQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNfaHRvdGFsLAo+ICAJCQkJCSAgICBicHAs IGludGVsX2RzaS0+bGFuZV9jb3VudCwKPiAgCQkJCQkgICAgaW50ZWxfZHNpLT5idXJzdF9tb2Rl X3JhdGlvKSArIDEpOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+IGluZGV4IDBi YzhhYTguLjU1NWFmYmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+IEBAIC0yODUs MTEgKzI4NSwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQlkdm9fdmFsIHw9IERWT19WU1lOQ19BQ1RJVkVfSElH SDsKPiAgCj4gIAkvKkk5MTVfV1JJVEUoRFZPQl9TUkNESU0sCj4gLQkgIChhZGp1c3RlZF9tb2Rl LT5oZGlzcGxheSA8PCBEVk9fU1JDRElNX0hPUklaT05UQUxfU0hJRlQpIHwKPiAtCSAgKGFkanVz dGVkX21vZGUtPlZEaXNwbGF5IDw8IERWT19TUkNESU1fVkVSVElDQUxfU0hJRlQpKTsqLwo+ICsJ ICAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSA8PCBEVk9fU1JDRElNX0hPUklaT05UQUxf U0hJRlQpIHwKPiArCSAgKGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkgPDwgRFZPX1NSQ0RJ TV9WRVJUSUNBTF9TSElGVCkpOyovCj4gIAlJOTE1X1dSSVRFKGR2b19zcmNkaW1fcmVnLAo+IC0J CSAgIChhZGp1c3RlZF9tb2RlLT5oZGlzcGxheSA8PCBEVk9fU1JDRElNX0hPUklaT05UQUxfU0hJ RlQpIHwKPiAtCQkgICAoYWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXkgPDwgRFZPX1NSQ0RJTV9WRVJU SUNBTF9TSElGVCkpOwo+ICsJCSAgIChhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5IDw8IERW T19TUkNESU1fSE9SSVpPTlRBTF9TSElGVCkgfAo+ICsJCSAgIChhZGp1c3RlZF9tb2RlLT5jcnRj X3ZkaXNwbGF5IDw8IERWT19TUkNESU1fVkVSVElDQUxfU0hJRlQpKTsKPiAgCS8qSTkxNV9XUklU RShEVk9CLCBkdm9fdmFsKTsqLwo+ICAJSTkxNV9XUklURShkdm9fcmVnLCBkdm9fdmFsKTsKPiAg fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IDQyOTRmNjA1Li4yODA2MDQ5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gQEAgLTExMyw1MSArMTEzLDUx IEBAIGludGVsX3BjaF9wYW5lbF9maXR0aW5nKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+ICAJeCA9IHkgPSB3aWR0aCA9IGhlaWdodCA9IDA7Cj4gIAo+ICAJLyogTmF0aXZlIG1vZGVz IGRvbid0IG5lZWQgZml0dGluZyAqLwo+IC0JaWYgKGFkanVzdGVkX21vZGUtPmhkaXNwbGF5ID09 IHBpcGVfY29uZmlnLT5waXBlX3NyY193ICYmCj4gLQkgICAgYWRqdXN0ZWRfbW9kZS0+dmRpc3Bs YXkgPT0gcGlwZV9jb25maWctPnBpcGVfc3JjX2gpCj4gKwlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19oZGlzcGxheSA9PSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAmJgo+ICsJICAgIGFkanVzdGVk X21vZGUtPmNydGNfdmRpc3BsYXkgPT0gcGlwZV9jb25maWctPnBpcGVfc3JjX2gpCj4gIAkJZ290 byBkb25lOwo+ICAKPiAgCXN3aXRjaCAoZml0dGluZ19tb2RlKSB7Cj4gIAljYXNlIERSTV9NT0RF X1NDQUxFX0NFTlRFUjoKPiAgCQl3aWR0aCA9IHBpcGVfY29uZmlnLT5waXBlX3NyY193Owo+ICAJ CWhlaWdodCA9IHBpcGVfY29uZmlnLT5waXBlX3NyY19oOwo+IC0JCXggPSAoYWRqdXN0ZWRfbW9k ZS0+aGRpc3BsYXkgLSB3aWR0aCArIDEpLzI7Cj4gLQkJeSA9IChhZGp1c3RlZF9tb2RlLT52ZGlz cGxheSAtIGhlaWdodCArIDEpLzI7Cj4gKwkJeCA9IChhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNw bGF5IC0gd2lkdGggKyAxKS8yOwo+ICsJCXkgPSAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxh eSAtIGhlaWdodCArIDEpLzI7Cj4gIAkJYnJlYWs7Cj4gIAo+ICAJY2FzZSBEUk1fTU9ERV9TQ0FM RV9BU1BFQ1Q6Cj4gIAkJLyogU2NhbGUgYnV0IHByZXNlcnZlIHRoZSBhc3BlY3QgcmF0aW8gKi8K PiAgCQl7Cj4gLQkJCXUzMiBzY2FsZWRfd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5oZGlzcGxheQo+ ICsJCQl1MzIgc2NhbGVkX3dpZHRoID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheQo+ICAJ CQkJKiBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKPiAgCQkJdTMyIHNjYWxlZF9oZWlnaHQgPSBw aXBlX2NvbmZpZy0+cGlwZV9zcmNfdwo+IC0JCQkJKiBhZGp1c3RlZF9tb2RlLT52ZGlzcGxheTsK PiArCQkJCSogYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiAgCQkJaWYgKHNjYWxlZF93 aWR0aCA+IHNjYWxlZF9oZWlnaHQpIHsgLyogcGlsbGFyICovCj4gIAkJCQl3aWR0aCA9IHNjYWxl ZF9oZWlnaHQgLyBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKPiAgCQkJCWlmICh3aWR0aCAmIDEp Cj4gIAkJCQkJd2lkdGgrKzsKPiAtCQkJCXggPSAoYWRqdXN0ZWRfbW9kZS0+aGRpc3BsYXkgLSB3 aWR0aCArIDEpIC8gMjsKPiArCQkJCXggPSAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSAt IHdpZHRoICsgMSkgLyAyOwo+ICAJCQkJeSA9IDA7Cj4gLQkJCQloZWlnaHQgPSBhZGp1c3RlZF9t b2RlLT52ZGlzcGxheTsKPiArCQkJCWhlaWdodCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3Bs YXk7Cj4gIAkJCX0gZWxzZSBpZiAoc2NhbGVkX3dpZHRoIDwgc2NhbGVkX2hlaWdodCkgeyAvKiBs ZXR0ZXIgKi8KPiAgCQkJCWhlaWdodCA9IHNjYWxlZF93aWR0aCAvIHBpcGVfY29uZmlnLT5waXBl X3NyY193Owo+ICAJCQkJaWYgKGhlaWdodCAmIDEpCj4gIAkJCQkgICAgaGVpZ2h0Kys7Cj4gLQkJ CQl5ID0gKGFkanVzdGVkX21vZGUtPnZkaXNwbGF5IC0gaGVpZ2h0ICsgMSkgLyAyOwo+ICsJCQkJ eSA9IChhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5IC0gaGVpZ2h0ICsgMSkgLyAyOwo+ICAJ CQkJeCA9IDA7Cj4gLQkJCQl3aWR0aCA9IGFkanVzdGVkX21vZGUtPmhkaXNwbGF5Owo+ICsJCQkJ d2lkdGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICAJCQl9IGVsc2Ugewo+ICAJ CQkJeCA9IHkgPSAwOwo+IC0JCQkJd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5oZGlzcGxheTsKPiAt CQkJCWhlaWdodCA9IGFkanVzdGVkX21vZGUtPnZkaXNwbGF5Owo+ICsJCQkJd2lkdGggPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICsJCQkJaGVpZ2h0ID0gYWRqdXN0ZWRfbW9kZS0+ Y3J0Y192ZGlzcGxheTsKPiAgCQkJfQo+ICAJCX0KPiAgCQlicmVhazsKPiAgCj4gIAljYXNlIERS TV9NT0RFX1NDQUxFX0ZVTExTQ1JFRU46Cj4gIAkJeCA9IHkgPSAwOwo+IC0JCXdpZHRoID0gYWRq dXN0ZWRfbW9kZS0+aGRpc3BsYXk7Cj4gLQkJaGVpZ2h0ID0gYWRqdXN0ZWRfbW9kZS0+dmRpc3Bs YXk7Cj4gKwkJd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICsJCWhlaWdo dCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4gIAkJYnJlYWs7Cj4gIAo+ICAJZGVm YXVsdDoKPiBAQCAtMTgyLDcgKzE4Miw3IEBAIGNlbnRyZV9ob3Jpem9udGFsbHkoc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUsCj4gIAlibGFua193aWR0aCA9IGFkanVzdGVk X21vZGUtPmNydGNfaGJsYW5rX2VuZCAtIGFkanVzdGVkX21vZGUtPmNydGNfaGJsYW5rX3N0YXJ0 Owo+ICAJc3luY19wb3MgPSAoYmxhbmtfd2lkdGggLSBzeW5jX3dpZHRoICsgMSkgLyAyOwo+ICAK PiAtCWJvcmRlciA9IChhZGp1c3RlZF9tb2RlLT5oZGlzcGxheSAtIHdpZHRoICsgMSkgLyAyOwo+ ICsJYm9yZGVyID0gKGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgLSB3aWR0aCArIDEpIC8g MjsKPiAgCWJvcmRlciArPSBib3JkZXIgJiAxOyAvKiBtYWtlIHRoZSBib3JkZXIgZXZlbiAqLwo+ ICAKPiAgCWFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgPSB3aWR0aDsKPiBAQCAtMjA0LDcg KzIwNCw3IEBAIGNlbnRyZV92ZXJ0aWNhbGx5KHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlLAo+ICAJYmxhbmtfd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZibGFua19l bmQgLSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZibGFua19zdGFydDsKPiAgCXN5bmNfcG9zID0gKGJs YW5rX3dpZHRoIC0gc3luY193aWR0aCArIDEpIC8gMjsKPiAgCj4gLQlib3JkZXIgPSAoYWRqdXN0 ZWRfbW9kZS0+dmRpc3BsYXkgLSBoZWlnaHQgKyAxKSAvIDI7Cj4gKwlib3JkZXIgPSAoYWRqdXN0 ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheSAtIGhlaWdodCArIDEpIC8gMjsKPiAgCj4gIAlhZGp1c3Rl ZF9tb2RlLT5jcnRjX3ZkaXNwbGF5ID0gaGVpZ2h0Owo+ICAJYWRqdXN0ZWRfbW9kZS0+Y3J0Y192 Ymxhbmtfc3RhcnQgPSBoZWlnaHQgKyBib3JkZXI7Cj4gQEAgLTIzMSwxMCArMjMxLDEwIEBAIHN0 YXRpYyB2b2lkIGk5NjVfc2NhbGVfYXNwZWN0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZywKPiAgCQkJICAgICAgdTMyICpwZml0X2NvbnRyb2wpCj4gIHsKPiAgCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGU7Cj4gLQl1MzIgc2NhbGVkX3dpZHRoID0gYWRqdXN0ZWRfbW9kZS0+aGRpc3BsYXkg Kgo+ICsJdTMyIHNjYWxlZF93aWR0aCA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgKgo+ ICAJCXBpcGVfY29uZmlnLT5waXBlX3NyY19oOwo+ICAJdTMyIHNjYWxlZF9oZWlnaHQgPSBwaXBl X2NvbmZpZy0+cGlwZV9zcmNfdyAqCj4gLQkJYWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXk7Cj4gKwkJ YWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiAgCj4gIAkvKiA5NjUrIGlzIGVhc3ksIGl0 IGRvZXMgZXZlcnl0aGluZyBpbiBodyAqLwo+ICAJaWYgKHNjYWxlZF93aWR0aCA+IHNjYWxlZF9o ZWlnaHQpCj4gQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3NjYWxlX2FzcGVj dChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAllbHNlIGlmIChzY2Fs ZWRfd2lkdGggPCBzY2FsZWRfaGVpZ2h0KQo+ICAJCSpwZml0X2NvbnRyb2wgfD0gUEZJVF9FTkFC TEUgfAo+ICAJCQlQRklUX1NDQUxJTkdfTEVUVEVSOwo+IC0JZWxzZSBpZiAoYWRqdXN0ZWRfbW9k ZS0+aGRpc3BsYXkgIT0gcGlwZV9jb25maWctPnBpcGVfc3JjX3cpCj4gKwllbHNlIGlmIChhZGp1 c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5ICE9IHBpcGVfY29uZmlnLT5waXBlX3NyY193KQo+ICAJ CSpwZml0X2NvbnRyb2wgfD0gUEZJVF9FTkFCTEUgfCBQRklUX1NDQUxJTkdfQVVUTzsKPiAgfQo+ ICAKPiBAQCAtMjUyLDEwICsyNTIsMTAgQEAgc3RhdGljIHZvaWQgaTl4eF9zY2FsZV9hc3BlY3Qo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkgICAgICB1MzIgKmJv cmRlcikKPiAgewo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAm cGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAtCXUzMiBzY2FsZWRfd2lkdGggPSBh ZGp1c3RlZF9tb2RlLT5oZGlzcGxheSAqCj4gKwl1MzIgc2NhbGVkX3dpZHRoID0gYWRqdXN0ZWRf bW9kZS0+Y3J0Y19oZGlzcGxheSAqCj4gIAkJcGlwZV9jb25maWctPnBpcGVfc3JjX2g7Cj4gIAl1 MzIgc2NhbGVkX2hlaWdodCA9IHBpcGVfY29uZmlnLT5waXBlX3NyY193ICoKPiAtCQlhZGp1c3Rl ZF9tb2RlLT52ZGlzcGxheTsKPiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICAJ dTMyIGJpdHM7Cj4gIAo+ICAJLyoKPiBAQCAtMjY5LDkgKzI2OSw5IEBAIHN0YXRpYyB2b2lkIGk5 eHhfc2NhbGVfYXNwZWN0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAg CQkJCSAgICBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCk7Cj4gIAo+ICAJCSpib3JkZXIgPSBMVkRT X0JPUkRFUl9FTkFCTEU7Cj4gLQkJaWYgKHBpcGVfY29uZmlnLT5waXBlX3NyY19oICE9IGFkanVz dGVkX21vZGUtPnZkaXNwbGF5KSB7Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT5waXBlX3NyY19oICE9 IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkpIHsKPiAgCQkJYml0cyA9IHBhbmVsX2ZpdHRl cl9zY2FsaW5nKHBpcGVfY29uZmlnLT5waXBlX3NyY19oLAo+IC0JCQkJCQkgICAgYWRqdXN0ZWRf bW9kZS0+dmRpc3BsYXkpOwo+ICsJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxh eSk7Cj4gIAo+ICAJCQkqcGZpdF9wZ21fcmF0aW9zIHw9IChiaXRzIDw8IFBGSVRfSE9SSVpfU0NB TEVfU0hJRlQgfAo+ICAJCQkJCSAgICAgYml0cyA8PCBQRklUX1ZFUlRfU0NBTEVfU0hJRlQpOwo+ IEBAIC0yODUsOSArMjg1LDkgQEAgc3RhdGljIHZvaWQgaTl4eF9zY2FsZV9hc3BlY3Qoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkJICBwaXBlX2NvbmZpZy0+cGlw ZV9zcmNfdyk7Cj4gIAo+ICAJCSpib3JkZXIgPSBMVkRTX0JPUkRFUl9FTkFCTEU7Cj4gLQkJaWYg KHBpcGVfY29uZmlnLT5waXBlX3NyY193ICE9IGFkanVzdGVkX21vZGUtPmhkaXNwbGF5KSB7Cj4g KwkJaWYgKHBpcGVfY29uZmlnLT5waXBlX3NyY193ICE9IGFkanVzdGVkX21vZGUtPmNydGNfaGRp c3BsYXkpIHsKPiAgCQkJYml0cyA9IHBhbmVsX2ZpdHRlcl9zY2FsaW5nKHBpcGVfY29uZmlnLT5w aXBlX3NyY193LAo+IC0JCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+aGRpc3BsYXkpOwo+ICsJCQkJ CQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSk7Cj4gIAo+ICAJCQkqcGZpdF9wZ21f cmF0aW9zIHw9IChiaXRzIDw8IFBGSVRfSE9SSVpfU0NBTEVfU0hJRlQgfAo+ICAJCQkJCSAgICAg Yml0cyA8PCBQRklUX1ZFUlRfU0NBTEVfU0hJRlQpOwo+IEBAIC0zMTUsOCArMzE1LDggQEAgdm9p ZCBpbnRlbF9nbWNoX3BhbmVsX2ZpdHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMs Cj4gIAlhZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g IAo+ICAJLyogTmF0aXZlIG1vZGVzIGRvbid0IG5lZWQgZml0dGluZyAqLwo+IC0JaWYgKGFkanVz dGVkX21vZGUtPmhkaXNwbGF5ID09IHBpcGVfY29uZmlnLT5waXBlX3NyY193ICYmCj4gLQkgICAg YWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXkgPT0gcGlwZV9jb25maWctPnBpcGVfc3JjX2gpCj4gKwlp ZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSA9PSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNf dyAmJgo+ICsJICAgIGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkgPT0gcGlwZV9jb25maWct PnBpcGVfc3JjX2gpCj4gIAkJZ290byBvdXQ7Cj4gIAo+ICAJc3dpdGNoIChmaXR0aW5nX21vZGUp IHsKPiBAQCAtMzQyLDggKzM0Miw4IEBAIHZvaWQgaW50ZWxfZ21jaF9wYW5lbF9maXR0aW5nKHN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCSAqIEZ1bGwgc2NhbGluZywgZXZlbiBp ZiBpdCBjaGFuZ2VzIHRoZSBhc3BlY3QgcmF0aW8uCj4gIAkJICogRm9ydHVuYXRlbHkgdGhpcyBp cyBhbGwgZG9uZSBmb3IgdXMgaW4gaHcuCj4gIAkJICovCj4gLQkJaWYgKHBpcGVfY29uZmlnLT5w aXBlX3NyY19oICE9IGFkanVzdGVkX21vZGUtPnZkaXNwbGF5IHx8Cj4gLQkJICAgIHBpcGVfY29u ZmlnLT5waXBlX3NyY193ICE9IGFkanVzdGVkX21vZGUtPmhkaXNwbGF5KSB7Cj4gKwkJaWYgKHBp cGVfY29uZmlnLT5waXBlX3NyY19oICE9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkgfHwK PiArCQkgICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3cgIT0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19o ZGlzcGxheSkgewo+ICAJCQlwZml0X2NvbnRyb2wgfD0gUEZJVF9FTkFCTEU7Cj4gIAkJCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ICAJCQkJcGZpdF9jb250cm9sIHw9IFBGSVRfU0NB TElOR19BVVRPOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZv LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMKPiBpbmRleCBhYjc1YjYxLi45 ZGY2YmJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+IEBAIC02MDUsOSArNjA1 LDkgQEAgbG9nX2ZhaWw6Cj4gIAo+ICBzdGF0aWMgaW50IGludGVsX3Nkdm9fZ2V0X3BpeGVsX211 bHRpcGxpZXIoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCj4g IHsKPiAtCWlmIChhZGp1c3RlZF9tb2RlLT5jbG9jayA+PSAxMDAwMDApCj4gKwlpZiAoYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19jbG9jayA+PSAxMDAwMDApCj4gIAkJcmV0dXJuIDE7Cj4gLQllbHNlIGlm IChhZGp1c3RlZF9tb2RlLT5jbG9jayA+PSA1MDAwMCkKPiArCWVsc2UgaWYgKGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2sgPj0gNTAwMDApCj4gIAkJcmV0dXJuIDI7Cj4gIAllbHNlCj4gIAkJcmV0 dXJuIDQ7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK