From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 7/8] drm/i915: Make intel_crtc->config a pointer Date: Mon, 15 Dec 2014 11:30:35 -0800 Message-ID: <20141215193035.GF31948@intel.com> References: <1418301491-23020-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1418301491-23020-8-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 938256E5CB for ; Mon, 15 Dec 2014 11:30:41 -0800 (PST) Content-Disposition: inline In-Reply-To: <1418301491-23020-8-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org, shuang.he@linux.intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMTEsIDIwMTQgYXQgMDI6Mzg6MTBQTSArMDIwMCwgQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIHdyb3RlOgo+IFRvIG1hdGNoIHRoZSBzZW1hbnRpY3Mgb2YgZHJtX2NydGMt PnN0YXRlLCB3aGljaCB0aGlzIHdpbGwgZXZlbnR1YWxseQo+IGJlY29tZS4KPiAKPiBAQCBzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YzsgQEAKPiAtJmNydGMtPmNvbmZpZwo+ICtjcnRjLT5jb25maWcK PiBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsgaWRlbnRpZmllciBtZW1iZXI7IEBACj4gLWNy dGMtPmNvbmZpZy5tZW1iZXIKPiArY3J0Yy0+Y29uZmlnLT5tZW1iZXIKPiBAQCBzdHJ1Y3QgZHJt X2NydGMgKmNydGM7IEBACj4gLSZ0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWcKPiArdG9faW50 ZWxfY3J0YyhjcnRjKS0+Y29uZmlnCj4gQEAgc3RydWN0IGRybV9jcnRjICpjcnRjOyBpZGVudGlm aWVyIG1lbWJlcjsgQEAKPiAtdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLm1lbWJlcgo+ICt0 b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPm1lbWJlcgoKSnVzdCB0byBhdm9pZCBjb25mdXNp b24sIHlvdSBtYXkgd2FudCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGFyZSBhIGZldwpjaGFuZ2Vz IGJleW9uZCB0aGUgY29jY2luZWxsZSBzcGF0Y2ggbGlzdGVkIGhlcmUgKGFsbG9jYXRpb24gaW4K aW50ZWxfY3J0Y19pbml0LCBhc3NpZ25tZW50IHdpdGggbmV3IGludGVsX2NydGNfc2V0X3N0YXRl LCBldGMuKS4KCkFsc28sIEkgbWF5IGJlIG1pc3NpbmcgaXQgaGFwcGVuaW5nIHNvbWV3aGVyZSBl bHNlIGluIHRoZSBsYXJnZSBwYXRjaCwKYnV0IGRvIHdlIG5lZWQgYW4gaW50ZWxfY3J0Y19zZXRf c3RhdGUoaW50ZWxfY3J0YywgTlVMTCkgaW4KaW50ZWxfY3J0Y19kZXN0cm95KCkgdG8gZW5zdXJl IHRoYXQgb3VyIGZpbmFsIHN0YXRlIGRvZXNuJ3QgbGVhayB3aGVuIHdlCnJtbW9kPwoKCk1hdHQK Cj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5j b25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYyAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlv LmMgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgfCAg IDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgIDUyICsrKy0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMjc1ICsrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMgICAgICB8ICAxNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3Qu YyAgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICB8ICAgOCArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYyAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgIHwgIDEwICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkbWkuYyAgICB8ICAzNiArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9sdmRzLmMgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zl cmxheS5jIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8 ICA1NiArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICB8ICAg OCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgICAgfCAgMTQgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICAyICstCj4gIDE5IGZpbGVz IGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAyNTYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBkMGU0NDVlLi5hNzI0ZThjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjU3Miw3ICsyNTcyLDcgQEAgc3Rh dGljIGludCBpOTE1X2Rpc3BsYXlfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKPiAgCj4gIAkJc2VxX3ByaW50ZihtLCAiQ1JUQyAlZDogcGlwZTogJWMsIGFjdGl2ZT0lcyAo c2l6ZT0lZHglZClcbiIsCj4gIAkJCSAgIGNydGMtPmJhc2UuYmFzZS5pZCwgcGlwZV9uYW1lKGNy dGMtPnBpcGUpLAo+IC0JCQkgICB5ZXNubyhjcnRjLT5hY3RpdmUpLCBjcnRjLT5jb25maWcucGlw ZV9zcmNfdywgY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX2gpOwo+ICsJCQkgICB5ZXNubyhjcnRjLT5h Y3RpdmUpLCBjcnRjLT5jb25maWctPnBpcGVfc3JjX3csIGNydGMtPmNvbmZpZy0+cGlwZV9zcmNf aCk7Cj4gIAkJaWYgKGNydGMtPmFjdGl2ZSkgewo+ICAJCQlpbnRlbF9jcnRjX2luZm8obSwgY3J0 Yyk7Cj4gIAo+IEBAIC0zMjgwLDkgKzMyODAsOSBAQCBzdGF0aWMgdm9pZCBoc3dfdHJhbnNfZWRw X3BpcGVfQV9jcmNfd2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCSAqIHJlbGV2YW50IG9u IGhzdyB3aXRoIHBpcGUgQSB3aGVuIHVzaW5nIHRoZSBhbHdheXMtb24gcG93ZXIgd2VsbAo+ICAJ ICogcm91dGluZy4KPiAgCSAqLwo+IC0JaWYgKGNydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlciA9 PSBUUkFOU0NPREVSX0VEUCAmJgo+IC0JICAgICFjcnRjLT5jb25maWcucGNoX3BmaXQuZW5hYmxl ZCkgewo+IC0JCWNydGMtPmNvbmZpZy5wY2hfcGZpdC5mb3JjZV90aHJ1ID0gdHJ1ZTsKPiArCWlm IChjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQICYmCj4gKwkg ICAgIWNydGMtPmNvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkgewo+ICsJCWNydGMtPmNvbmZpZy0+ cGNoX3BmaXQuZm9yY2VfdGhydSA9IHRydWU7Cj4gIAo+ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJf Z2V0KGRldl9wcml2LAo+ICAJCQkJCVBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihQSVBF X0EpKTsKPiBAQCAtMzMwNiw4ICszMzA2LDggQEAgc3RhdGljIHZvaWQgaHN3X3VuZG9fdHJhbnNf ZWRwX3BpcGVfQV9jcmNfd2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCSAqIHJlbGV2YW50 IG9uIGhzdyB3aXRoIHBpcGUgQSB3aGVuIHVzaW5nIHRoZSBhbHdheXMtb24gcG93ZXIgd2VsbAo+ ICAJICogcm91dGluZy4KPiAgCSAqLwo+IC0JaWYgKGNydGMtPmNvbmZpZy5wY2hfcGZpdC5mb3Jj ZV90aHJ1KSB7Cj4gLQkJY3J0Yy0+Y29uZmlnLnBjaF9wZml0LmZvcmNlX3RocnUgPSBmYWxzZTsK PiArCWlmIChjcnRjLT5jb25maWctPnBjaF9wZml0LmZvcmNlX3RocnUpIHsKPiArCQljcnRjLT5j b25maWctPnBjaF9wZml0LmZvcmNlX3RocnUgPSBmYWxzZTsKPiAgCj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19kaXNhYmxlKCZjcnRjLT5iYXNlKTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5j cnRjX2VuYWJsZSgmY3J0Yy0+YmFzZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXgg MTFlMjA5ZS4uZTU1YjI3NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC01Njcs NyArNTY3LDcgQEAgc3RhdGljIHUzMiBpOTE1X2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgcGlwZSkKPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9Cj4gIAkJCXRvX2ludGVsX2NydGMoZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3Bp cGVdKTsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9Cj4gLQkJCSZp bnRlbF9jcnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCQkmaW50ZWxfY3J0Yy0+ Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAo+ICAJCWh0b3RhbCA9IG1vZGUtPmNydGNf aHRvdGFsOwo+ICAJCWhzeW5jX3N0YXJ0ID0gbW9kZS0+Y3J0Y19oc3luY19zdGFydDsKPiBAQCAt NjM4LDcgKzYzOCw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0g JmNydGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAg CWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCWludCBwb3NpdGlvbiwgdnRvdGFsOwo+ ICAKPiBAQCAtNjY1LDcgKzY2NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRfY3J0Y19zY2Fub3V0 cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlLAo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9IGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKPiAgCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmludGVsX2NydGMtPmNvbmZpZy5iYXNl LmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9 ICZpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBwb3NpdGlv bjsKPiAgCWludCB2Ymxfc3RhcnQsIHZibF9lbmQsIGhzeW5jX3N0YXJ0LCBodG90YWwsIHZ0b3Rh bDsKPiAgCWJvb2wgaW5fdmJsID0gdHJ1ZTsKPiBAQCAtODIzLDcgKzgyMyw3IEBAIHN0YXRpYyBp bnQgaTkxNV9nZXRfdmJsYW5rX3RpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQg cGlwZSwKPiAgCXJldHVybiBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKGRl diwgcGlwZSwgbWF4X2Vycm9yLAo+ICAJCQkJCQkgICAgIHZibGFua190aW1lLCBmbGFncywKPiAg CQkJCQkJICAgICBjcnRjLAo+IC0JCQkJCQkgICAgICZ0b19pbnRlbF9jcnRjKGNydGMpLT5jb25m aWcuYmFzZS5hZGp1c3RlZF9tb2RlKTsKPiArCQkJCQkJICAgICAmdG9faW50ZWxfY3J0YyhjcnRj KS0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCBp bnRlbF9ocGRfaXJxX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdWRpby5jCj4gaW5kZXggZmU4YzQ5Ni4uZTg0YTc5OCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXVkaW8uYwo+IEBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBpbnRlbF9hdWRp b19jb2RlY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gIHsK PiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNvZGVyLT5iYXNlOwo+ ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMp Owo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+Y29uZmlnLmJhc2Uu YWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGMt PmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcjsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jCj4gaW5kZXggZTRmNmQ0OS4uYmI1NTM2OCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jCj4gQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9jcnRfc2V0X2RwbXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2Rl KQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJfdG9fY3J0KGVuY29k ZXIpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXIt PmJhc2UuY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZjcnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gIAl1MzIgYWRwYTsKPiAgCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDk3MGNhMzAuLmM0MDljY2MgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBoc3dfZmRp X2xpbmtfdHJhaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJLyogRW5hYmxlIHRoZSBQQ0gg UmVjZWl2ZXIgRkRJIFBMTCAqLwo+ICAJcnhfY3RsX3ZhbCA9IGRldl9wcml2LT5mZGlfcnhfY29u ZmlnIHwgRkRJX1JYX0VOSEFOQ0VfRlJBTUVfRU5BQkxFIHwKPiAgCQkgICAgIEZESV9SWF9QTExf RU5BQkxFIHwKPiAtCQkgICAgIEZESV9EUF9QT1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZpZy5m ZGlfbGFuZXMpOwo+ICsJCSAgICAgRkRJX0RQX1BPUlRfV0lEVEgoaW50ZWxfY3J0Yy0+Y29uZmln LT5mZGlfbGFuZXMpOwo+ICAJSTkxNV9XUklURShfRkRJX1JYQV9DVEwsIHJ4X2N0bF92YWwpOwo+ ICAJUE9TVElOR19SRUFEKF9GRElfUlhBX0NUTCk7Cj4gIAl1ZGVsYXkoMjIwKTsKPiBAQCAtMzM4 LDggKzMzOCw4IEBAIHZvaWQgaHN3X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCUk5MTVfV1JJVEUoX0ZESV9SWEFfQ1RMLCByeF9jdGxfdmFsKTsKPiAgCj4gIAkvKiBD b25maWd1cmUgUG9ydCBDbG9jayBTZWxlY3QgKi8KPiAtCUk5MTVfV1JJVEUoUE9SVF9DTEtfU0VM KFBPUlRfRSksIGludGVsX2NydGMtPmNvbmZpZy5kZGlfcGxsX3NlbCk7Cj4gLQlXQVJOX09OKGlu dGVsX2NydGMtPmNvbmZpZy5kZGlfcGxsX3NlbCAhPSBQT1JUX0NMS19TRUxfU1BMTCk7Cj4gKwlJ OTE1X1dSSVRFKFBPUlRfQ0xLX1NFTChQT1JUX0UpLCBpbnRlbF9jcnRjLT5jb25maWctPmRkaV9w bGxfc2VsKTsKPiArCVdBUk5fT04oaW50ZWxfY3J0Yy0+Y29uZmlnLT5kZGlfcGxsX3NlbCAhPSBQ T1JUX0NMS19TRUxfU1BMTCk7Cj4gIAo+ICAJLyogU3RhcnQgdGhlIHRyYWluaW5nIGl0ZXJhdGlu ZyB0aHJvdWdoIGF2YWlsYWJsZSB2b2x0YWdlcyBhbmQgZW1waGFzaXMsCj4gIAkgKiB0ZXN0aW5n IGVhY2ggdmFsdWUgdHdpY2UuICovCj4gQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIGhzd19mZGlf bGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJICogcG9ydCByZXZlcnNhbCBi aXQgKi8KPiAgCQlJOTE1X1dSSVRFKERESV9CVUZfQ1RMKFBPUlRfRSksCj4gIAkJCSAgIERESV9C VUZfQ1RMX0VOQUJMRSB8Cj4gLQkJCSAgICgoaW50ZWxfY3J0Yy0+Y29uZmlnLmZkaV9sYW5lcyAt IDEpIDw8IDEpIHwKPiArCQkJICAgKChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyAtIDEp IDw8IDEpIHwKPiAgCQkJICAgRERJX0JVRl9UUkFOU19TRUxFQ1QoaSAvIDIpKTsKPiAgCQlQT1NU SU5HX1JFQUQoRERJX0JVRl9DVEwoUE9SVF9FKSk7Cj4gIAo+IEBAIC0xMTg2LDEzICsxMTg2LDEz IEBAIHZvaWQgaW50ZWxfZGRpX3NldF9waXBlX3NldHRpbmdzKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmRldi0+ZGV2 X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9IGludGVs X2RkaV9nZXRfY3J0Y19lbmNvZGVyKGNydGMpOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFu c2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2Rl cjsKPiAgCWludCB0eXBlID0gaW50ZWxfZW5jb2Rlci0+dHlwZTsKPiAgCXVpbnQzMl90IHRlbXA7 Cj4gIAo+ICAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUIHx8IHR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpIHsKPiAgCQl0 ZW1wID0gVFJBTlNfTVNBX1NZTkNfQ0xLOwo+IC0JCXN3aXRjaCAoaW50ZWxfY3J0Yy0+Y29uZmln LnBpcGVfYnBwKSB7Cj4gKwkJc3dpdGNoIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfYnBwKSB7 Cj4gIAkJY2FzZSAxODoKPiAgCQkJdGVtcCB8PSBUUkFOU19NU0FfNl9CUEM7Cj4gIAkJCWJyZWFr Owo+IEBAIC0xMjE3LDcgKzEyMTcsNyBAQCB2b2lkIGludGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9h bGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgc3RhdGUpCj4gIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2Rl ciA9IGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2Rl ciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4g IAl1aW50MzJfdCB0ZW1wOwo+ICAJdGVtcCA9IEk5MTVfUkVBRChUUkFOU19ERElfRlVOQ19DVEwo Y3B1X3RyYW5zY29kZXIpKTsKPiAgCWlmIChzdGF0ZSA9PSB0cnVlKQo+IEBAIC0xMjM1LDcgKzEy MzUsNyBAQCB2b2lkIGludGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJ ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNw dV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJZW51 bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJh bnNjb2RlcjsKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQo aW50ZWxfZW5jb2Rlcik7Cj4gIAlpbnQgdHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7Cj4gIAl1 aW50MzJfdCB0ZW1wOwo+IEBAIC0xMjQ0LDcgKzEyNDQsNyBAQCB2b2lkIGludGVsX2RkaV9lbmFi bGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXRlbXAgPSBUUkFO U19ERElfRlVOQ19FTkFCTEU7Cj4gIAl0ZW1wIHw9IFRSQU5TX0RESV9TRUxFQ1RfUE9SVChwb3J0 KTsKPiAgCj4gLQlzd2l0Y2ggKGludGVsX2NydGMtPmNvbmZpZy5waXBlX2JwcCkgewo+ICsJc3dp dGNoIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfYnBwKSB7Cj4gIAljYXNlIDE4Ogo+ICAJCXRl bXAgfD0gVFJBTlNfRERJX0JQQ182Owo+ICAJCWJyZWFrOwo+IEBAIC0xMjYxLDkgKzEyNjEsOSBA QCB2b2lkIGludGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCQlCVUcoKTsKPiAgCX0KPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmJh c2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DKQo+ICsJaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxB R19QVlNZTkMpCj4gIAkJdGVtcCB8PSBUUkFOU19ERElfUFZTWU5DOwo+IC0JaWYgKGludGVsX2Ny dGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lO QykKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAm IERSTV9NT0RFX0ZMQUdfUEhTWU5DKQo+ICAJCXRlbXAgfD0gVFJBTlNfRERJX1BIU1lOQzsKPiAg Cj4gIAlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiBAQCAtMTI3NCw4 ICsxMjc0LDggQEAgdm9pZCBpbnRlbF9kZGlfZW5hYmxlX3RyYW5zY29kZXJfZnVuYyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIAkJCSAqIHVzaW5nIG1vdGlvbiBibHVyIG1pdGlnYXRpb24gKHdo aWNoIHdlIGRvbid0Cj4gIAkJCSAqIHN1cHBvcnQpLiAqLwo+ICAJCQlpZiAoSVNfSEFTV0VMTChk ZXYpICYmCj4gLQkJCSAgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBjaF9wZml0LmVuYWJsZWQgfHwK PiAtCQkJICAgICBpbnRlbF9jcnRjLT5jb25maWcucGNoX3BmaXQuZm9yY2VfdGhydSkpCj4gKwkJ CSAgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5lbmFibGVkIHx8Cj4gKwkJCSAgICAg aW50ZWxfY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5mb3JjZV90aHJ1KSkKPiAgCQkJCXRlbXAgfD0g VFJBTlNfRERJX0VEUF9JTlBVVF9BX09OT0ZGOwo+ICAJCQllbHNlCj4gIAkJCQl0ZW1wIHw9IFRS QU5TX0RESV9FRFBfSU5QVVRfQV9PTjsKPiBAQCAtMTI5MywxNCArMTI5MywxNCBAQCB2b2lkIGlu dGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAg CX0KPiAgCj4gIAlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+IC0JCWlmIChpbnRl bF9jcnRjLT5jb25maWcuaGFzX2hkbWlfc2luaykKPiArCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmln LT5oYXNfaGRtaV9zaW5rKQo+ICAJCQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9IRE1J Owo+ICAJCWVsc2UKPiAgCQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFZJOwo+ICAK PiAgCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfQU5BTE9HKSB7Cj4gIAkJdGVtcCB8 PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRkRJOwo+IC0JCXRlbXAgfD0gKGludGVsX2NydGMtPmNv bmZpZy5mZGlfbGFuZXMgLSAxKSA8PCAxOwo+ICsJCXRlbXAgfD0gKGludGVsX2NydGMtPmNvbmZp Zy0+ZmRpX2xhbmVzIC0gMSkgPDwgMTsKPiAgCj4gIAl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxf T1VUUFVUX0RJU1BMQVlQT1JUIHx8Cj4gIAkJICAgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7 Cj4gQEAgLTE0NTAsNyArMTQ1MCw3IEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV9waXBlX2Nsb2Nr KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9l bmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50ZWxfZGRpX2dldF9jcnRjX2VuY29kZXIoY3J0Yyk7 Cj4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2Vu Y29kZXIpOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+ Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVy ID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gIAlpZiAoY3B1X3Ry YW5zY29kZXIgIT0gVFJBTlNDT0RFUl9FRFApCj4gIAkJSTkxNV9XUklURShUUkFOU19DTEtfU0VM KGNwdV90cmFuc2NvZGVyKSwKPiBAQCAtMTQ2MCw3ICsxNDYwLDcgQEAgdm9pZCBpbnRlbF9kZGlf ZW5hYmxlX3BpcGVfY2xvY2soc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIHZvaWQg aW50ZWxfZGRpX2Rpc2FibGVfcGlwZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW50ZWxfY3J0 Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFuc2Nv ZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsK PiAgCj4gIAlpZiAoY3B1X3RyYW5zY29kZXIgIT0gVFJBTlNDT0RFUl9FRFApCj4gIAkJSTkxNV9X UklURShUUkFOU19DTEtfU0VMKGNwdV90cmFuc2NvZGVyKSwKPiBAQCAtMTQ4Miw3ICsxNDgyLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIg KmludGVsX2VuY29kZXIpCj4gIAl9Cj4gIAo+ICAJaWYgKElTX1NLWUxBS0UoZGV2KSkgewo+IC0J CXVpbnQzMl90IGRwbGwgPSBjcnRjLT5jb25maWcuZGRpX3BsbF9zZWw7Cj4gKwkJdWludDMyX3Qg ZHBsbCA9IGNydGMtPmNvbmZpZy0+ZGRpX3BsbF9zZWw7Cj4gIAkJdWludDMyX3QgdmFsOwo+ICAK PiAgCQkvKgo+IEBAIC0xNDk3LDcgKzE0OTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJl X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgCQkJdmFsICY9 IH4oRFBMTF9DVFJMMV9IRE1JX01PREUoZHBsbCkgfAo+ICAJCQkJIERQTExfQ1RSTDFfU1NDKGRw bGwpIHwKPiAgCQkJCSBEUExMX0NSVEwxX0xJTktfUkFURV9NQVNLKGRwbGwpKTsKPiAtCQkJdmFs IHw9IGNydGMtPmNvbmZpZy5kcGxsX2h3X3N0YXRlLmN0cmwxIDw8IChkcGxsICogNik7Cj4gKwkJ CXZhbCB8PSBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuY3RybDEgPDwgKGRwbGwgKiA2KTsK PiAgCj4gIAkJCUk5MTVfV1JJVEUoRFBMTF9DVFJMMSwgdmFsKTsKPiAgCQkJUE9TVElOR19SRUFE KERQTExfQ1RSTDEpOwo+IEBAIC0xNTE0LDggKzE1MTQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k ZGlfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgCQlJ OTE1X1dSSVRFKERQTExfQ1RSTDIsIHZhbCk7Cj4gIAo+ICAJfSBlbHNlIHsKPiAtCQlXQVJOX09O KGNydGMtPmNvbmZpZy5kZGlfcGxsX3NlbCA9PSBQT1JUX0NMS19TRUxfTk9ORSk7Cj4gLQkJSTkx NV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIGNydGMtPmNvbmZpZy5kZGlfcGxsX3NlbCk7Cj4g KwkJV0FSTl9PTihjcnRjLT5jb25maWctPmRkaV9wbGxfc2VsID09IFBPUlRfQ0xLX1NFTF9OT05F KTsKPiArCQlJOTE1X1dSSVRFKFBPUlRfQ0xLX1NFTChwb3J0KSwgY3J0Yy0+Y29uZmlnLT5kZGlf cGxsX3NlbCk7Cj4gIAl9Cj4gIAo+ICAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQ T1JUIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+IEBAIC0xNTMyLDggKzE1MzIsOCBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq aW50ZWxfZW5jb2RlcikKPiAgCQlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKGVuY29kZXIpOwo+ICAKPiAgCQlpbnRlbF9oZG1pLT5zZXRfaW5mb2ZyYW1l cyhlbmNvZGVyLAo+IC0JCQkJCSAgIGNydGMtPmNvbmZpZy5oYXNfaGRtaV9zaW5rLAo+IC0JCQkJ CSAgICZjcnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlKTsKPiArCQkJCQkgICBjcnRjLT5j b25maWctPmhhc19oZG1pX3NpbmssCj4gKwkJCQkJICAgJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTYwNyw3ICsxNjA3LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZW5hYmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rl cikKPiAgCQlpbnRlbF9wc3JfZW5hYmxlKGludGVsX2RwKTsKPiAgCX0KPiAgCj4gLQlpZiAoaW50 ZWxfY3J0Yy0+Y29uZmlnLmhhc19hdWRpbykgewo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ aGFzX2F1ZGlvKSB7Cj4gIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VS X0RPTUFJTl9BVURJTyk7Cj4gIAkJaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKGludGVsX2VuY29k ZXIpOwo+ICAJfQo+IEBAIC0xNjIyLDcgKzE2MjIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNh YmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5j b25maWcuaGFzX2F1ZGlvKSB7Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfYXVkaW8p IHsKPiAgCQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGludGVsX2VuY29kZXIpOwo+ICAJCWlu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fQVVESU8pOwo+ICAJ fQo+IEBAIC0yMDMxLDcgKzIwMzEsNyBAQCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmNvZGVyLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRj KTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZp Zy5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGlu dGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAq aW50ZWxfaGRtaTsKPiAgCXUzMiB0ZW1wLCBmbGFncyA9IDA7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gaW5kZXggYTAzMmExZC4uNDYyZjIyYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiBAQCAtODk1LDcgKzg5NSw3IEBAIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAJICogcHJvcGVybHkgcmVjb25zdHJ1Y3QgZnJhbWVidWZm ZXJzLgo+ICAJICovCj4gIAlyZXR1cm4gaW50ZWxfY3J0Yy0+YWN0aXZlICYmIGNydGMtPnByaW1h cnktPmZiICYmCj4gLQkJaW50ZWxfY3J0Yy0+Y29uZmlnLmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrOwo+ICsJCWludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf Y2xvY2s7Cj4gIH0KPiAgCj4gIGVudW0gdHJhbnNjb2RlciBpbnRlbF9waXBlX3RvX2NwdV90cmFu c2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtOTA0LDcgKzkw NCw3IEBAIGVudW0gdHJhbnNjb2RlciBpbnRlbF9waXBlX3RvX2NwdV90cmFuc2NvZGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9 IGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCj4gLQlyZXR1cm4gaW50 ZWxfY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJcmV0dXJuIGludGVsX2NydGMtPmNv bmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIHBpcGVfZHNsX3N0 b3BwZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCj4gQEAgLTk0Niw3 ICs5NDYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF93YWl0X2Zvcl9waXBlX29mZihzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGMtPmNvbmZp Zy5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNy dGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiBAQCAtMTA1Miwx MCArMTA1MiwxMCBAQCBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRj LT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy5zaGFyZWRf ZHBsbCA8IDApCj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCA8IDApCj4gIAkJcmV0 dXJuIE5VTEw7Cj4gIAo+IC0JcmV0dXJuICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2NydGMtPmNv bmZpZy5zaGFyZWRfZHBsbF07Cj4gKwlyZXR1cm4gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbY3J0 Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbF07Cj4gIH0KPiAgCj4gIC8qIEZvciBJTEsrICovCj4gQEAg LTE1OTksNyArMTU5OSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRl djsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gIAlpbnQgcmVnID0gRFBMTChjcnRjLT5waXBlKTsKPiAtCXUzMiBkcGxsID0gY3J0Yy0+ Y29uZmlnLmRwbGxfaHdfc3RhdGUuZHBsbDsKPiArCXUzMiBkcGxsID0gY3J0Yy0+Y29uZmlnLT5k cGxsX2h3X3N0YXRlLmRwbGw7Cj4gIAo+ICAJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYs IGNydGMtPnBpcGUpOwo+ICAKPiBAQCAtMTYyOSw3ICsxNjI5LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9lbmFibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAKPiAgCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gIAkJSTkxNV9XUklURShEUExMX01EKGNydGMtPnBpcGUp LAo+IC0JCQkgICBjcnRjLT5jb25maWcuZHBsbF9od19zdGF0ZS5kcGxsX21kKTsKPiArCQkJICAg Y3J0Yy0+Y29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGxfbWQpOwo+ICAJfSBlbHNlIHsKPiAgCQkv KiBUaGUgcGl4ZWwgbXVsdGlwbGllciBjYW4gb25seSBiZSB1cGRhdGVkIG9uY2UgdGhlCj4gIAkJ ICogRFBMTCBpcyBlbmFibGVkIGFuZCB0aGUgY2xvY2tzIGFyZSBzdGFibGUuCj4gQEAgLTIwMzQs NyArMjAzNCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9waXBlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQo+ICAJCWVsc2UKPiAgCQkJYXNzZXJ0X3BsbF9lbmFibGVkKGRldl9wcml2LCBw aXBlKTsKPiAgCWVsc2Ugewo+IC0JCWlmIChjcnRjLT5jb25maWcuaGFzX3BjaF9lbmNvZGVyKSB7 Cj4gKwkJaWYgKGNydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gIAkJCS8qIGlmIGRy aXZpbmcgdGhlIFBDSCwgd2UgbmVlZCBGREkgZW5hYmxlZCAqLwo+ICAJCQlhc3NlcnRfZmRpX3J4 X3BsbF9lbmFibGVkKGRldl9wcml2LCBwY2hfdHJhbnNjb2Rlcik7Cj4gIAkJCWFzc2VydF9mZGlf dHhfcGxsX2VuYWJsZWQoZGV2X3ByaXYsCj4gQEAgLTIwNjgsNyArMjA2OCw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2VuYWJsZV9waXBlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICBzdGF0aWMg dm9pZCBpbnRlbF9kaXNhYmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZf cHJpdmF0ZTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGMtPmNvbmZp Zy5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNy dGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gIAlpbnQgcmVnOwo+ICAJdTMyIHZhbDsKPiBAQCAtMjA5MCw3ICsyMDkwLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZGlzYWJsZV9waXBlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJ ICogRG91YmxlIHdpZGUgaGFzIGltcGxpY2F0aW9ucyBmb3IgcGxhbmVzCj4gIAkgKiBzbyBiZXN0 IGtlZXAgaXQgZGlzYWJsZWQgd2hlbiBub3QgbmVlZGVkLgo+ICAJICovCj4gLQlpZiAoY3J0Yy0+ Y29uZmlnLmRvdWJsZV93aWRlKQo+ICsJaWYgKGNydGMtPmNvbmZpZy0+ZG91YmxlX3dpZGUpCj4g IAkJdmFsICY9IH5QSVBFQ09ORl9ET1VCTEVfV0lERTsKPiAgCj4gIAkvKiBEb24ndCBkaXNhYmxl IHBpcGUgb3IgcGlwZSBQTExzIGlmIG5lZWRlZCAqLwo+IEBAIC0yNDY4LDEzICsyNDY4LDEzIEBA IHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCSAqIHdoaWNoIHNob3VsZCBhbHdheXMgYmUgdGhlIHVzZXIncyByZXF1ZXN0ZWQg c2l6ZS4KPiAgCQkgKi8KPiAgCQlJOTE1X1dSSVRFKERTUFNJWkUocGxhbmUpLAo+IC0JCQkgICAo KGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiAtCQkJICAgKGlu dGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193IC0gMSkpOwo+ICsJCQkgICAoKGludGVsX2NydGMt PmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4gKwkJCSAgIChpbnRlbF9jcnRjLT5j b25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4gIAkJSTkxNV9XUklURShEU1BQT1MocGxhbmUpLCAw KTsKPiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYpICYmIHBsYW5lID09IFBMQU5FX0Ip IHsKPiAgCQlJOTE1X1dSSVRFKFBSSU1TSVpFKHBsYW5lKSwKPiAtCQkJICAgKChpbnRlbF9jcnRj LT5jb25maWcucGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4gLQkJCSAgIChpbnRlbF9jcnRjLT5j b25maWcucGlwZV9zcmNfdyAtIDEpKTsKPiArCQkJICAgKChpbnRlbF9jcnRjLT5jb25maWctPnBp cGVfc3JjX2ggLSAxKSA8PCAxNikgfAo+ICsJCQkgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBl X3NyY193IC0gMSkpOwo+ICAJCUk5MTVfV1JJVEUoUFJJTVBPUyhwbGFuZSksIDApOwo+ICAJCUk5 MTVfV1JJVEUoUFJJTUNOU1RBTFBIQShwbGFuZSksIDApOwo+ICAJfQo+IEBAIC0yNTMyLDE0ICsy NTMyLDE0IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAJaWYgKHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLT5yb3Rh dGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVf Uk9UQVRFXzE4MDsKPiAgCj4gLQkJeCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cg LSAxKTsKPiAtCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCAtIDEpOwo+ICsJ CXggKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+ICsJCXkgKz0gKGlu dGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOwo+ICAKPiAgCQkvKiBGaW5kaW5nIHRo ZSBsYXN0IHBpeGVsIG9mIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGRpc3BsYXkKPiAgCQlkYXRhIGFu ZCBhZGRpbmcgdG8gbGluZWFyX29mZnNldCovCj4gIAkJbGluZWFyX29mZnNldCArPQo+IC0JCQko aW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKPiAt CQkJKGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ICsJ CQkoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSAr Cj4gKwkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7 Cj4gIAl9Cj4gIAo+ICAJSTkxNV9XUklURShyZWcsIGRzcGNudHIpOwo+IEBAIC0yNjM1LDE0ICsy NjM1LDE0IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgCQlkc3BjbnRyIHw9IERJU1BQTEFORV9ST1RBVEVfMTgwOwo+ ICAKPiAgCQlpZiAoIUlTX0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKPiAt CQkJeCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgLSAxKTsKPiAtCQkJeSArPSAo aW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX2ggLSAxKTsKPiArCQkJeCArPSAoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSk7Cj4gKwkJCXkgKz0gKGludGVsX2NydGMtPmNvbmZp Zy0+cGlwZV9zcmNfaCAtIDEpOwo+ICAKPiAgCQkJLyogRmluZGluZyB0aGUgbGFzdCBwaXhlbCBv ZiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBkaXNwbGF5Cj4gIAkJCWRhdGEgYW5kIGFkZGluZyB0byBs aW5lYXJfb2Zmc2V0Ki8KPiAgCQkJbGluZWFyX29mZnNldCArPQo+IC0JCQkJKGludGVsX2NydGMt PmNvbmZpZy5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCj4gLQkJCQkoaW50ZWxf Y3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7Cj4gKwkJCQkoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCj4gKwkJCQko aW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ICAJCX0K PiAgCX0KPiAgCj4gQEAgLTI3NDEsOCArMjc0MSw4IEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBk YXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJSTkxNV9XUklURShQ TEFORV9QT1MocGlwZSwgMCksIDApOwo+ICAJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwg MCksICh5IDw8IDE2KSB8IHgpOwo+ICAJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLAo+ IC0JCSAgIChpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCAtIDEpIDw8IDE2IHwKPiAtCQkg ICAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgLSAxKSk7Cj4gKwkJICAgKGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2IHwKPiArCQkgICAoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5waXBlX3NyY193IC0gMSkpOwo+ICAJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlw ZSwgMCksIHN0cmlkZSk7Cj4gIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIGk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChvYmopKTsKPiAgCj4gQEAgLTI5MzgsMjAgKzI5MzgsMjAgQEAg c3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVfc2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKPiAgCSAqIHRoZW4gdXBkYXRlIHRoZSBwaXBlc3JjIGFuZCBwZml0IHN0YXRlLCBldmVuIG9u IHRoZSBmbGlwIHBhdGguCj4gIAkgKi8KPiAgCj4gLQlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNv bmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCUk5MTVfV1JJVEUoUElQRVNSQyhjcnRjLT5w aXBlKSwKPiAgCQkgICAoKGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgLSAxKSA8PCAxNikg fAo+ICAJCSAgIChhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5IC0gMSkpOwo+IC0JaWYgKCFj cnRjLT5jb25maWcucGNoX3BmaXQuZW5hYmxlZCAmJgo+ICsJaWYgKCFjcnRjLT5jb25maWctPnBj aF9wZml0LmVuYWJsZWQgJiYKPiAgCSAgICAoaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJTlRF TF9PVVRQVVRfTFZEUykgfHwKPiAgCSAgICAgaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJTlRF TF9PVVRQVVRfRURQKSkpIHsKPiAgCQlJOTE1X1dSSVRFKFBGX0NUTChjcnRjLT5waXBlKSwgMCk7 Cj4gIAkJSTkxNV9XUklURShQRl9XSU5fUE9TKGNydGMtPnBpcGUpLCAwKTsKPiAgCQlJOTE1X1dS SVRFKFBGX1dJTl9TWihjcnRjLT5waXBlKSwgMCk7Cj4gIAl9Cj4gLQljcnRjLT5jb25maWcucGlw ZV9zcmNfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4gLQljcnRjLT5jb25maWcu cGlwZV9zcmNfaCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4gKwljcnRjLT5jb25m aWctPnBpcGVfc3JjX3cgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICsJY3J0Yy0+ Y29uZmlnLT5waXBlX3NyY19oID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZmRpX25vcm1hbF90cmFpbihzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gQEAgLTI5OTgsNyArMjk5OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZkaV9ub3Jt YWxfdHJhaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICBzdGF0aWMgYm9vbCBwaXBlX2hhc19l bmFibGVkX3BjaChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgewo+ICAJcmV0dXJuIGNydGMt PmJhc2UuZW5hYmxlZCAmJiBjcnRjLT5hY3RpdmUgJiYKPiAtCQljcnRjLT5jb25maWcuaGFzX3Bj aF9lbmNvZGVyOwo+ICsJCWNydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBpdmJfbW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gQEAgLTMwNTMsNyArMzA1Myw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2Zk aV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXJlZyA9IEZESV9UWF9DVEwo cGlwZSk7Cj4gIAl0ZW1wID0gSTkxNV9SRUFEKHJlZyk7Cj4gIAl0ZW1wICY9IH5GRElfRFBfUE9S VF9XSURUSF9NQVNLOwo+IC0JdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChpbnRlbF9jcnRjLT5j b25maWcuZmRpX2xhbmVzKTsKPiArCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5mZGlfbGFuZXMpOwo+ICAJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsK PiAgCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xOwo+ICAJSTkxNV9XUklURShyZWcs IHRlbXAgfCBGRElfVFhfRU5BQkxFKTsKPiBAQCAtMzE1MSw3ICszMTUxLDcgQEAgc3RhdGljIHZv aWQgZ2VuNl9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlyZWcgPSBG RElfVFhfQ1RMKHBpcGUpOwo+ICAJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJdGVtcCAmPSB+ RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiAtCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgoaW50 ZWxfY3J0Yy0+Y29uZmlnLmZkaV9sYW5lcyk7Cj4gKwl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRI KGludGVsX2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzKTsKPiAgCXRlbXAgJj0gfkZESV9MSU5LX1RS QUlOX05PTkU7Cj4gIAl0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMTsKPiAgCXRlbXAg Jj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiBAQCAtMzMwMiw3ICszMzAyLDcgQEAg c3RhdGljIHZvaWQgaXZiX21hbnVhbF9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gIAkJcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiAgCQl0ZW1wID0gSTkxNV9SRUFEKHJl Zyk7Cj4gIAkJdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiAtCQl0ZW1wIHw9IEZE SV9EUF9QT1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZpZy5mZGlfbGFuZXMpOwo+ICsJCXRlbXAg fD0gRkRJX0RQX1BPUlRfV0lEVEgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5mZGlfbGFuZXMpOwo+ICAJ CXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xX0lWQjsKPiAgCQl0ZW1wICY9IH5GRElf TElOS19UUkFJTl9WT0xfRU1QX01BU0s7Cj4gIAkJdGVtcCB8PSBzbmJfYl9mZGlfdHJhaW5fcGFy YW1bai8yXTsKPiBAQCAtMzM5MCw3ICszMzkwLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZmRp X3BsbF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAlyZWcgPSBGRElf UlhfQ1RMKHBpcGUpOwo+ICAJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJdGVtcCAmPSB+KEZE SV9EUF9QT1JUX1dJRFRIX01BU0sgfCAoMHg3IDw8IDE2KSk7Cj4gLQl0ZW1wIHw9IEZESV9EUF9Q T1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZpZy5mZGlfbGFuZXMpOwo+ICsJdGVtcCB8PSBGRElf RFBfUE9SVF9XSURUSChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyk7Cj4gIAl0ZW1wIHw9 IChJOTE1X1JFQUQoUElQRUNPTkYocGlwZSkpICYgUElQRUNPTkZfQlBDX01BU0spIDw8IDExOwo+ ICAJSTkxNV9XUklURShyZWcsIHRlbXAgfCBGRElfUlhfUExMX0VOQUJMRSk7Cj4gIAo+IEBAIC0z NTc0LDcgKzM1NzQsNyBAQCBzdGF0aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xraXAoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCWludCBjbG9jayA9IHRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy5iYXNlLmFkanVz dGVkX21vZGUuY3J0Y19jbG9jazsKPiArCWludCBjbG9jayA9IHRvX2ludGVsX2NydGMoY3J0Yykt PmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gIAl1MzIgZGl2c2VsLCBw aGFzZWluYywgYXV4ZGl2LCBwaGFzZWRpciA9IDA7Cj4gIAl1MzIgdGVtcDsKPiAgCj4gQEAgLTM2 NjMsNyArMzY2Myw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90 aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFuc2NvZGVyIGNw dV90cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gIAlJOTE1 X1dSSVRFKFBDSF9UUkFOU19IVE9UQUwocGNoX3RyYW5zY29kZXIpLAo+ICAJCSAgIEk5MTVfUkVB RChIVE9UQUwoY3B1X3RyYW5zY29kZXIpKSk7Cj4gQEAgLTM3MDksNyArMzcwOSw3IEBAIHN0YXRp YyB2b2lkIGl2eWJyaWRnZV91cGRhdGVfZmRpX2JjX2JpZnVyY2F0aW9uKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQo+ICAJY2FzZSBQSVBFX0E6Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFBJ UEVfQjoKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmZkaV9sYW5lcyA+IDIpCj4gKwkJaWYg KGludGVsX2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzID4gMikKPiAgCQkJV0FSTl9PTihJOTE1X1JF QUQoU09VVEhfQ0hJQ0tFTjEpICYgRkRJX0JDX0JJRlVSQ0FUSU9OX1NFTEVDVCk7Cj4gIAkJZWxz ZQo+ICAJCQljcHRfZW5hYmxlX2ZkaV9iY19iaWZ1cmNhdGlvbihkZXYpOwo+IEBAIC0zNzYxLDcg KzM3NjEsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiAgCQl0ZW1wID0gSTkxNV9SRUFEKFBDSF9EUExMX1NFTCk7Cj4gIAkJdGVtcCB8 PSBUUkFOU19EUExMX0VOQUJMRShwaXBlKTsKPiAgCQlzZWwgPSBUUkFOU19EUExMQl9TRUwocGlw ZSk7Cj4gLQkJaWYgKGludGVsX2NydGMtPmNvbmZpZy5zaGFyZWRfZHBsbCA9PSBEUExMX0lEX1BD SF9QTExfQikKPiArCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCA9PSBEUExM X0lEX1BDSF9QTExfQikKPiAgCQkJdGVtcCB8PSBzZWw7Cj4gIAkJZWxzZQo+ICAJCQl0ZW1wICY9 IH5zZWw7Cj4gQEAgLTM3ODQsNyArMzc4NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJaW50ZWxfZmRpX25vcm1hbF90cmFpbihj cnRjKTsKPiAgCj4gIAkvKiBGb3IgUENIIERQLCBlbmFibGUgVFJBTlNfRFBfQ1RMICovCj4gLQlp ZiAoSEFTX1BDSF9DUFQoZGV2KSAmJiBpbnRlbF9jcnRjLT5jb25maWcuaGFzX2RwX2VuY29kZXIp IHsKPiArCWlmIChIQVNfUENIX0NQVChkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2Rw X2VuY29kZXIpIHsKPiAgCQl1MzIgYnBjID0gKEk5MTVfUkVBRChQSVBFQ09ORihwaXBlKSkgJiBQ SVBFQ09ORl9CUENfTUFTSykgPj4gNTsKPiAgCQlyZWcgPSBUUkFOU19EUF9DVEwocGlwZSk7Cj4g IAkJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwo+IEBAIC0zODI1LDcgKzM4MjUsNyBAQCBzdGF0aWMg dm9pZCBscHRfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNj b2RlciA9IGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7 Cj4gIAo+ICAJYXNzZXJ0X3BjaF90cmFuc2NvZGVyX2Rpc2FibGVkKGRldl9wcml2LCBUUkFOU0NP REVSX0EpOwo+ICAKPiBAQCAtMzg1NSw3ICszODU1LDcgQEAgdm9pZCBpbnRlbF9wdXRfc2hhcmVk X2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkJV0FSTl9PTihwbGwtPmFjdGl2ZSk7 Cj4gIAl9Cj4gIAo+IC0JY3J0Yy0+Y29uZmlnLnNoYXJlZF9kcGxsID0gRFBMTF9JRF9QUklWQVRF Owo+ICsJY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCA9IERQTExfSURfUFJJVkFURTsKPiAgfQo+ ICAKPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9nZXRfc2hhcmVkX2RwbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gQEAgLTQwMDksMTAgKzQwMDksMTAgQEAgc3RhdGljIHZv aWQgc2t5bGFrZV9wZml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlpbnQg cGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy5wY2hfcGZpdC5lbmFi bGVkKSB7Cj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7Cj4gIAkJSTkx NV9XUklURShQU19DVEwocGlwZSksIFBTX0VOQUJMRSk7Cj4gLQkJSTkxNV9XUklURShQU19XSU5f UE9TKHBpcGUpLCBjcnRjLT5jb25maWcucGNoX3BmaXQucG9zKTsKPiAtCQlJOTE1X1dSSVRFKFBT X1dJTl9TWihwaXBlKSwgY3J0Yy0+Y29uZmlnLnBjaF9wZml0LnNpemUpOwo+ICsJCUk5MTVfV1JJ VEUoUFNfV0lOX1BPUyhwaXBlKSwgY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5wb3MpOwo+ICsJCUk5 MTVfV1JJVEUoUFNfV0lOX1NaKHBpcGUpLCBjcnRjLT5jb25maWctPnBjaF9wZml0LnNpemUpOwo+ ICAJfQo+ICB9Cj4gIAo+IEBAIC00MDIyLDcgKzQwMjIsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFr ZV9wZml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlpbnQgcGlwZSA9IGNy dGMtPnBpcGU7Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy5wY2hfcGZpdC5lbmFibGVkKSB7Cj4g KwlpZiAoY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7Cj4gIAkJLyogRm9yY2UgdXNl IG9mIGhhcmQtY29kZWQgZmlsdGVyIGNvZWZmaWNpZW50cwo+ICAJCSAqIGFzIHNvbWUgcHJlLXBy b2dyYW1tZWQgdmFsdWVzIGFyZSBicm9rZW4sCj4gIAkJICogZS5nLiB4MjAxLgo+IEBAIC00MDMy LDggKzQwMzIsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2VuYWJsZShzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiAgCQkJCQkJIFBGX1BJUEVfU0VMX0lWQihwaXBlKSk7Cj4gIAkJZWxz ZQo+ICAJCQlJOTE1X1dSSVRFKFBGX0NUTChwaXBlKSwgUEZfRU5BQkxFIHwgUEZfRklMVEVSX01F RF8zeDMpOwo+IC0JCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhwaXBlKSwgY3J0Yy0+Y29uZmlnLnBj aF9wZml0LnBvcyk7Cj4gLQkJSTkxNV9XUklURShQRl9XSU5fU1oocGlwZSksIGNydGMtPmNvbmZp Zy5wY2hfcGZpdC5zaXplKTsKPiArCQlJOTE1X1dSSVRFKFBGX1dJTl9QT1MocGlwZSksIGNydGMt PmNvbmZpZy0+cGNoX3BmaXQucG9zKTsKPiArCQlJOTE1X1dSSVRFKFBGX1dJTl9TWihwaXBlKSwg Y3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5zaXplKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtNDA3MCw3 ICs0MDcwLDcgQEAgdm9pZCBoc3dfZW5hYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAo+IC0JaWYg KCFjcnRjLT5jb25maWcuaXBzX2VuYWJsZWQpCj4gKwlpZiAoIWNydGMtPmNvbmZpZy0+aXBzX2Vu YWJsZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIFdlIGNhbiBvbmx5IGVuYWJsZSBJUFMgYWZ0 ZXIgd2UgZW5hYmxlIGEgcGxhbmUgYW5kIHdhaXQgZm9yIGEgdmJsYW5rICovCj4gQEAgLTQxMDMs NyArNDEwMyw3IEBAIHZvaWQgaHN3X2Rpc2FibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj KQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gLQlp ZiAoIWNydGMtPmNvbmZpZy5pcHNfZW5hYmxlZCkKPiArCWlmICghY3J0Yy0+Y29uZmlnLT5pcHNf ZW5hYmxlZCkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJYXNzZXJ0X3BsYW5lX2VuYWJsZWQoZGV2X3By aXYsIGNydGMtPnBsYW5lKTsKPiBAQCAtNDE1Miw3ICs0MTUyLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y19sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkvKiBXb3JrYXJvdW5k IDogRG8gbm90IHJlYWQgb3Igd3JpdGUgdGhlIHBpcGUgcGFsZXR0ZS9nYW1tYSBkYXRhIHdoaWxl Cj4gIAkgKiBHQU1NQV9NT0RFIGlzIGNvbmZpZ3VyZWQgZm9yIHNwbGl0IGdhbW1hIGFuZCBJUFNf Q1RMIGhhcyBJUFMgZW5hYmxlZC4KPiAgCSAqLwo+IC0JaWYgKElTX0hBU1dFTEwoZGV2KSAmJiBp bnRlbF9jcnRjLT5jb25maWcuaXBzX2VuYWJsZWQgJiYKPiArCWlmIChJU19IQVNXRUxMKGRldikg JiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5pcHNfZW5hYmxlZCAmJgo+ICAJICAgICgoSTkxNV9SRUFE KEdBTU1BX01PREUocGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0spID09Cj4gIAkgICAgIEdB TU1BX01PREVfTU9ERV9TUExJVCkpIHsKPiAgCQloc3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Yyk7 Cj4gQEAgLTQyNTQsMTcgKzQyNTQsMTcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19lbmFi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKPiAg CQlyZXR1cm47Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5oYXNfcGNoX2VuY29kZXIp Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJaW50ZWxf cHJlcGFyZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+ Y29uZmlnLmhhc19kcF9lbmNvZGVyKQo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2Rw X2VuY29kZXIpCj4gIAkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjKTsKPiAgCj4gIAlpbnRl bF9zZXRfcGlwZV90aW1pbmdzKGludGVsX2NydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5j b25maWcuaGFzX3BjaF9lbmNvZGVyKSB7Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNf cGNoX2VuY29kZXIpIHsKPiAgCQlpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKGludGVsX2Ny dGMsCj4gLQkJCQkgICAgICZpbnRlbF9jcnRjLT5jb25maWcuZmRpX21fbiwgTlVMTCk7Cj4gKwkJ CQkgICAgICZpbnRlbF9jcnRjLT5jb25maWctPmZkaV9tX24sIE5VTEwpOwo+ICAJfQo+ICAKPiAg CWlyb25sYWtlX3NldF9waXBlY29uZihjcnRjKTsKPiBAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJ CWlmIChlbmNvZGVyLT5wcmVfZW5hYmxlKQo+ICAJCQllbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29k ZXIpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuaGFzX3BjaF9lbmNvZGVyKSB7Cj4g KwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKPiAgCQkvKiBOb3Rl OiBGREkgUExMIGVuYWJsaW5nIF9tdXN0XyBiZSBkb25lIGJlZm9yZSB3ZSBlbmFibGUgdGhlCj4g IAkJICogY3B1IHBpcGVzLCBoZW5jZSB0aGlzIGlzIHNlcGFyYXRlIGZyb20gYWxsIHRoZSBvdGhl ciBmZGkvcGNoCj4gIAkJICogZW5hYmxpbmcuICovCj4gQEAgLTQyOTksNyArNDI5OSw3IEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAg CWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICAJaW50ZWxfZW5hYmxlX3BpcGUoaW50 ZWxfY3J0Yyk7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5oYXNfcGNoX2VuY29kZXIp Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJaXJvbmxh a2VfcGNoX2VuYWJsZShjcnRjKTsKPiAgCj4gIAlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2 LCBjcnRjLCBlbmNvZGVyKQo+IEBAIC00MzY1LDE5ICs0MzY1LDE5IEBAIHN0YXRpYyB2b2lkIGhh c3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJaWYgKGludGVsX2Ny dGNfdG9fc2hhcmVkX2RwbGwoaW50ZWxfY3J0YykpCj4gIAkJaW50ZWxfZW5hYmxlX3NoYXJlZF9k cGxsKGludGVsX2NydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuaGFzX2RwX2Vu Y29kZXIpCj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHBfZW5jb2RlcikKPiAgCQlp bnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMpOwo+ICAKPiAgCWludGVsX3NldF9waXBlX3RpbWlu Z3MoaW50ZWxfY3J0Yyk7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNj b2RlciAhPSBUUkFOU0NPREVSX0VEUCkgewo+IC0JCUk5MTVfV1JJVEUoUElQRV9NVUxUKGludGVs X2NydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlciksCj4gLQkJCSAgIGludGVsX2NydGMtPmNvbmZp Zy5waXhlbF9tdWx0aXBsaWVyIC0gMSk7Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVf dHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoUElQRV9NVUxU KGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpLAo+ICsJCQkgICBpbnRlbF9jcnRj LT5jb25maWctPnBpeGVsX211bHRpcGxpZXIgLSAxKTsKPiAgCX0KPiAgCj4gLQlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLmhhc19wY2hfZW5jb2Rlcikgewo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZp Zy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gIAkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihp bnRlbF9jcnRjLAo+IC0JCQkJICAgICAmaW50ZWxfY3J0Yy0+Y29uZmlnLmZkaV9tX24sIE5VTEwp Owo+ICsJCQkJICAgICAmaW50ZWxfY3J0Yy0+Y29uZmlnLT5mZGlfbV9uLCBOVUxMKTsKPiAgCX0K PiAgCj4gIAloYXN3ZWxsX3NldF9waXBlY29uZihjcnRjKTsKPiBAQCAtNDM5MSw3ICs0MzkxLDcg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIAkJaWYgKGVuY29kZXItPnByZV9lbmFibGUpCj4gIAkJCWVuY29kZXItPnByZV9lbmFibGUo ZW5jb2Rlcik7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5oYXNfcGNoX2VuY29kZXIp IHsKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+ICAJCWlu dGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFRSQU5TQ09ERVJf QSwKPiAgCQkJCQkJICAgICAgdHJ1ZSk7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtf dHJhaW4oY3J0Yyk7Cj4gQEAgLTQ0MTYsMTAgKzQ0MTYsMTAgQEAgc3RhdGljIHZvaWQgaGFzd2Vs bF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlpbnRlbF91cGRhdGVfd2F0 ZXJtYXJrcyhjcnRjKTsKPiAgCWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwo+ICAKPiAt CWlmIChpbnRlbF9jcnRjLT5jb25maWcuaGFzX3BjaF9lbmNvZGVyKQo+ICsJaWYgKGludGVsX2Ny dGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICAJCWxwdF9wY2hfZW5hYmxlKGNydGMpOwo+ ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuZHBfZW5jb2Rlcl9pc19tc3QpCj4gKwlpZiAo aW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKPiAgCQlpbnRlbF9kZGlfc2V0 X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywgdHJ1ZSk7Cj4gIAo+ICAJZm9yX2VhY2hfZW5jb2Rlcl9v bl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgewo+IEBAIC00NDQ0LDcgKzQ0NDQsNyBAQCBzdGF0 aWMgdm9pZCBza3lsYWtlX3BmaXRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAg Cj4gIAkvKiBUbyBhdm9pZCB1cHNldHRpbmcgdGhlIHBvd2VyIHdlbGwgb24gaGFzd2VsbCBvbmx5 IGRpc2FibGUgdGhlIHBmaXQgaWYKPiAgCSAqIGl0J3MgaW4gdXNlLiBUaGUgaHcgc3RhdGUgY29k ZSB3aWxsIG1ha2Ugc3VyZSB3ZSBnZXQgdGhpcyByaWdodC4gKi8KPiAtCWlmIChjcnRjLT5jb25m aWcucGNoX3BmaXQuZW5hYmxlZCkgewo+ICsJaWYgKGNydGMtPmNvbmZpZy0+cGNoX3BmaXQuZW5h YmxlZCkgewo+ICAJCUk5MTVfV1JJVEUoUFNfQ1RMKHBpcGUpLCAwKTsKPiAgCQlJOTE1X1dSSVRF KFBTX1dJTl9QT1MocGlwZSksIDApOwo+ICAJCUk5MTVfV1JJVEUoUFNfV0lOX1NaKHBpcGUpLCAw KTsKPiBAQCAtNDQ1OSw3ICs0NDU5LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGZpdF9kaXNh YmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAKPiAgCS8qIFRvIGF2b2lkIHVwc2V0dGlu ZyB0aGUgcG93ZXIgd2VsbCBvbiBoYXN3ZWxsIG9ubHkgZGlzYWJsZSB0aGUgcGZpdCBpZgo+ICAJ ICogaXQncyBpbiB1c2UuIFRoZSBodyBzdGF0ZSBjb2RlIHdpbGwgbWFrZSBzdXJlIHdlIGdldCB0 aGlzIHJpZ2h0LiAqLwo+IC0JaWYgKGNydGMtPmNvbmZpZy5wY2hfcGZpdC5lbmFibGVkKSB7Cj4g KwlpZiAoY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7Cj4gIAkJSTkxNV9XUklURShQ Rl9DVEwocGlwZSksIDApOwo+ICAJCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhwaXBlKSwgMCk7Cj4g IAkJSTkxNV9XUklURShQRl9XSU5fU1oocGlwZSksIDApOwo+IEBAIC00NDg2LDcgKzQ0ODYsNyBA QCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2RlcikKPiAgCQll bmNvZGVyLT5kaXNhYmxlKGVuY29kZXIpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcu aGFzX3BjaF9lbmNvZGVyKQo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNv ZGVyKQo+ICAJCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYs IHBpcGUsIGZhbHNlKTsKPiAgCj4gIAlpbnRlbF9kaXNhYmxlX3BpcGUoaW50ZWxfY3J0Yyk7Cj4g QEAgLTQ0OTcsNyArNDQ5Nyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJaWYgKGVuY29kZXItPnBvc3RfZGlzYWJsZSkKPiAg CQkJZW5jb2Rlci0+cG9zdF9kaXNhYmxlKGVuY29kZXIpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRj LT5jb25maWcuaGFzX3BjaF9lbmNvZGVyKSB7Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5o YXNfcGNoX2VuY29kZXIpIHsKPiAgCQlpcm9ubGFrZV9mZGlfZGlzYWJsZShjcnRjKTsKPiAgCj4g IAkJaXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwgcGlwZSk7Cj4gQEAg LTQ1MzcsNyArNDUzNyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAt CWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy5jcHVf dHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2Ny dGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAo+ICAJaWYgKCFpbnRlbF9jcnRjLT5hY3Rp dmUpCj4gIAkJcmV0dXJuOwo+IEBAIC00NTUyLDEyICs0NTUyLDEyIEBAIHN0YXRpYyB2b2lkIGhh c3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQllbmNvZGVyLT5k aXNhYmxlKGVuY29kZXIpOwo+ICAJfQo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuaGFz X3BjaF9lbmNvZGVyKQo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVy KQo+ICAJCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFRS QU5TQ09ERVJfQSwKPiAgCQkJCQkJICAgICAgZmFsc2UpOwo+ICAJaW50ZWxfZGlzYWJsZV9waXBl KGludGVsX2NydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuZHBfZW5jb2Rlcl9p c19tc3QpCj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKPiAg CQlpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywgZmFsc2UpOwo+ICAKPiAgCWlu dGVsX2RkaV9kaXNhYmxlX3RyYW5zY29kZXJfZnVuYyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIp Owo+IEBAIC00NTY5LDcgKzQ1NjksNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJs ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJaW50ZWxfZGRpX2Rpc2FibGVfcGlwZV9j bG9jayhpbnRlbF9jcnRjKTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmhhc19wY2hf ZW5jb2Rlcikgewo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7 Cj4gIAkJbHB0X2Rpc2FibGVfcGNoX3RyYW5zY29kZXIoZGV2X3ByaXYpOwo+ICAJCWludGVsX2Rk aV9mZGlfZGlzYWJsZShjcnRjKTsKPiAgCX0KPiBAQCAtNDYwMCw3ICs0NjAwLDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9wZml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgewo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9ICZjcnRjLT5jb25maWc7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPSBjcnRjLT5jb25maWc7Cj4gIAo+ICAJaWYgKCFw aXBlX2NvbmZpZy0+Z21jaF9wZml0LmNvbnRyb2wpCj4gIAkJcmV0dXJuOwo+IEBAIC00NjgxLDgg KzQ2ODEsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAltYXNrID0gQklUKFBPV0VSX0RPTUFJTl9QSVBF KHBpcGUpKTsKPiAgCW1hc2sgfD0gQklUKFBPV0VSX0RPTUFJTl9UUkFOU0NPREVSKHRyYW5zY29k ZXIpKTsKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcucGNoX3BmaXQuZW5hYmxlZCB8fAo+IC0J ICAgIGludGVsX2NydGMtPmNvbmZpZy5wY2hfcGZpdC5mb3JjZV90aHJ1KQo+ICsJaWYgKGludGVs X2NydGMtPmNvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCB8fAo+ICsJICAgIGludGVsX2NydGMtPmNv bmZpZy0+cGNoX3BmaXQuZm9yY2VfdGhydSkKPiAgCQltYXNrIHw9IEJJVChQT1dFUl9ET01BSU5f UElQRV9QQU5FTF9GSVRURVIocGlwZSkpOwo+ICAKPiAgCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0 YyhkZXYsIGNydGMsIGludGVsX2VuY29kZXIpCj4gQEAgLTQ5ODYsMTIgKzQ5ODYsMTIgQEAgc3Rh dGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g IAo+ICAJaWYgKCFpc19kc2kpIHsKPiAgCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+IC0JCQlj aHZfcHJlcGFyZV9wbGwoaW50ZWxfY3J0YywgJmludGVsX2NydGMtPmNvbmZpZyk7Cj4gKwkJCWNo dl9wcmVwYXJlX3BsbChpbnRlbF9jcnRjLCBpbnRlbF9jcnRjLT5jb25maWcpOwo+ICAJCWVsc2UK PiAtCQkJdmx2X3ByZXBhcmVfcGxsKGludGVsX2NydGMsICZpbnRlbF9jcnRjLT5jb25maWcpOwo+ ICsJCQl2bHZfcHJlcGFyZV9wbGwoaW50ZWxfY3J0YywgaW50ZWxfY3J0Yy0+Y29uZmlnKTsKPiAg CX0KPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmhhc19kcF9lbmNvZGVyKQo+ICsJaWYg KGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2RwX2VuY29kZXIpCj4gIAkJaW50ZWxfZHBfc2V0X21f bihpbnRlbF9jcnRjKTsKPiAgCj4gIAlpbnRlbF9zZXRfcGlwZV90aW1pbmdzKGludGVsX2NydGMp Owo+IEBAIC01MDE1LDkgKzUwMTUsOSBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5h YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlpZiAoIWlzX2RzaSkgewo+ICAJCWlm IChJU19DSEVSUllWSUVXKGRldikpCj4gLQkJCWNodl9lbmFibGVfcGxsKGludGVsX2NydGMsICZp bnRlbF9jcnRjLT5jb25maWcpOwo+ICsJCQljaHZfZW5hYmxlX3BsbChpbnRlbF9jcnRjLCBpbnRl bF9jcnRjLT5jb25maWcpOwo+ICAJCWVsc2UKPiAtCQkJdmx2X2VuYWJsZV9wbGwoaW50ZWxfY3J0 YywgJmludGVsX2NydGMtPmNvbmZpZyk7Cj4gKwkJCXZsdl9lbmFibGVfcGxsKGludGVsX2NydGMs IGludGVsX2NydGMtPmNvbmZpZyk7Cj4gIAl9Cj4gIAo+ICAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9j cnRjKGRldiwgY3J0YywgZW5jb2RlcikKPiBAQCAtNTA0OCw4ICs1MDQ4LDggQEAgc3RhdGljIHZv aWQgaTl4eF9zZXRfcGxsX2RpdmlkZXJzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gLQlJOTE1X1dSSVRF KEZQMChjcnRjLT5waXBlKSwgY3J0Yy0+Y29uZmlnLmRwbGxfaHdfc3RhdGUuZnAwKTsKPiAtCUk5 MTVfV1JJVEUoRlAxKGNydGMtPnBpcGUpLCBjcnRjLT5jb25maWcuZHBsbF9od19zdGF0ZS5mcDEp Owo+ICsJSTkxNV9XUklURShGUDAoY3J0Yy0+cGlwZSksIGNydGMtPmNvbmZpZy0+ZHBsbF9od19z dGF0ZS5mcDApOwo+ICsJSTkxNV9XUklURShGUDEoY3J0Yy0+cGlwZSksIGNydGMtPmNvbmZpZy0+ ZHBsbF9od19zdGF0ZS5mcDEpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZW5h YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiBAQCAtNTA2Nyw3ICs1MDY3LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJaTl4 eF9zZXRfcGxsX2RpdmlkZXJzKGludGVsX2NydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5j b25maWcuaGFzX2RwX2VuY29kZXIpCj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHBf ZW5jb2RlcikKPiAgCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMpOwo+ICAKPiAgCWludGVs X3NldF9waXBlX3RpbWluZ3MoaW50ZWxfY3J0Yyk7Cj4gQEAgLTUxMTksNyArNTExOSw3IEBAIHN0 YXRpYyB2b2lkIGk5eHhfcGZpdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gLQlpZiAoIWNy dGMtPmNvbmZpZy5nbWNoX3BmaXQuY29udHJvbCkKPiArCWlmICghY3J0Yy0+Y29uZmlnLT5nbWNo X3BmaXQuY29udHJvbCkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJYXNzZXJ0X3BpcGVfZGlzYWJsZWQo ZGV2X3ByaXYsIGNydGMtPnBpcGUpOwo+IEBAIC01NDE4LDcgKzU0MTgsNyBAQCBzdGF0aWMgYm9v bCBpcm9ubGFrZV9jaGVja19mZGlfbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBw aXBlIHBpcGUsCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAljYXNlIFBJUEVfQzoKPiAgCQlpZiAoIXBp cGVfaGFzX2VuYWJsZWRfcGNoKHBpcGVfQl9jcnRjKSB8fAo+IC0JCSAgICBwaXBlX0JfY3J0Yy0+ Y29uZmlnLmZkaV9sYW5lcyA8PSAyKSB7Cj4gKwkJICAgIHBpcGVfQl9jcnRjLT5jb25maWctPmZk aV9sYW5lcyA8PSAyKSB7Cj4gIAkJCWlmIChwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzID4gMikgewo+ ICAJCQkJRFJNX0RFQlVHX0tNUygiaW52YWxpZCBzaGFyZWQgZmRpIGxhbmUgY29uZmlnIG9uIHBp cGUgJWM6ICVpIGxhbmVzXG4iLAo+ICAJCQkJCSAgICAgIHBpcGVfbmFtZShwaXBlKSwgcGlwZV9j b25maWctPmZkaV9sYW5lcyk7Cj4gQEAgLTU4MTYsNyArNTgxNiw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJaW50IHBpcGUgPSBj cnRjLT5waXBlOwo+IC0JZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBjcnRjLT5jb25maWcu Y3B1X3RyYW5zY29kZXI7Cj4gKwllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IGNydGMtPmNv bmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDUpIHsKPiAgCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9NMSh0cmFuc2NvZGVyKSwgVFVfU0laRSht X24tPnR1KSB8IG1fbi0+Z21jaF9tKTsKPiBAQCAtNTgyOCw3ICs1ODI4LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCQkgKiByZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5IGFjY2Vzc2VkKS4KPiAgCQkg Ki8KPiAgCQlpZiAobTJfbjIgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmCj4gLQkJCWNy dGMtPmNvbmZpZy5oYXNfZHJycykgewo+ICsJCQljcnRjLT5jb25maWctPmhhc19kcnJzKSB7Cj4g IAkJCUk5MTVfV1JJVEUoUElQRV9EQVRBX00yKHRyYW5zY29kZXIpLAo+ICAJCQkJCVRVX1NJWkUo bTJfbjItPnR1KSB8IG0yX24yLT5nbWNoX20pOwo+ICAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9O Mih0cmFuc2NvZGVyKSwgbTJfbjItPmdtY2hfbik7Cj4gQEAgLTU4NDUsMTEgKzU4NDUsMTEgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgCj4gIHZvaWQgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKPiAgewo+IC0JaWYgKGNydGMtPmNvbmZpZy5oYXNfcGNoX2VuY29kZXIpCj4gLQkJaW50 ZWxfcGNoX3RyYW5zY29kZXJfc2V0X21fbihjcnRjLCAmY3J0Yy0+Y29uZmlnLmRwX21fbik7Cj4g KwlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gKwkJaW50ZWxfcGNoX3RyYW5z Y29kZXJfc2V0X21fbihjcnRjLCAmY3J0Yy0+Y29uZmlnLT5kcF9tX24pOwo+ICAJZWxzZQo+IC0J CWludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oY3J0YywgJmNydGMtPmNvbmZpZy5kcF9tX24s Cj4gLQkJCQkJCSAgICZjcnRjLT5jb25maWcuZHBfbTJfbjIpOwo+ICsJCWludGVsX2NwdV90cmFu c2NvZGVyX3NldF9tX24oY3J0YywgJmNydGMtPmNvbmZpZy0+ZHBfbV9uLAo+ICsJCQkJCQkgICAm Y3J0Yy0+Y29uZmlnLT5kcF9tMl9uMik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHZsdl91cGRh dGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IEBAIC02MjE3LDkgKzYyMTcsOSBAQCBz dGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlcjsK PiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+ Y3B1X3RyYW5zY29kZXI7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Cj4gLQkJJmludGVsX2NydGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmlu dGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICAJdWludDMyX3QgY3J0Y192 dG90YWwsIGNydGNfdmJsYW5rX2VuZDsKPiAgCWludCB2c3luY3NoaWZ0ID0gMDsKPiAgCj4gQEAg LTYyNzcsOCArNjI3Nyw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9waXBlX3RpbWluZ3Moc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAkgKiBhbHdheXMgYmUgdGhlIHVzZXIncyBy ZXF1ZXN0ZWQgc2l6ZS4KPiAgCSAqLwo+ICAJSTkxNV9XUklURShQSVBFU1JDKHBpcGUpLAo+IC0J CSAgICgoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgLSAxKSA8PCAxNikgfAo+IC0JCSAg IChpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCAtIDEpKTsKPiArCQkgICAoKGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpIDw8IDE2KSB8Cj4gKwkJICAgKGludGVsX2NydGMt PmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxf Z2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiBAQCAtNjM1NCwxNyAr NjM1NCwxNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YykKPiAgCSAgICAoaW50ZWxfY3J0Yy0+cGlwZSA9PSBQSVBFX0IgJiYgZGV2 X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJUEVCX0ZPUkNFKSkKPiAgCQlwaXBlY29uZiB8PSBJOTE1 X1JFQUQoUElQRUNPTkYoaW50ZWxfY3J0Yy0+cGlwZSkpICYgUElQRUNPTkZfRU5BQkxFOwo+ICAK PiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuZG91YmxlX3dpZGUpCj4gKwlpZiAoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5kb3VibGVfd2lkZSkKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ET1VCTEVf V0lERTsKPiAgCj4gIAkvKiBvbmx5IGc0eCBhbmQgbGF0ZXIgaGF2ZSBmYW5jeSBicGMvZGl0aGVy IGNvbnRyb2xzICovCj4gIAlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7 Cj4gIAkJLyogQnNwZWMgY2xhaW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmluZyBmb3IgMzBi cHAgcGlwZXMuICovCj4gLQkJaWYgKGludGVsX2NydGMtPmNvbmZpZy5kaXRoZXIgJiYgaW50ZWxf Y3J0Yy0+Y29uZmlnLnBpcGVfYnBwICE9IDMwKQo+ICsJCWlmIChpbnRlbF9jcnRjLT5jb25maWct PmRpdGhlciAmJiBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfYnBwICE9IDMwKQo+ICAJCQlwaXBl Y29uZiB8PSBQSVBFQ09ORl9ESVRIRVJfRU4gfAo+ICAJCQkJICAgIFBJUEVDT05GX0RJVEhFUl9U WVBFX1NQOwo+ICAKPiAtCQlzd2l0Y2ggKGludGVsX2NydGMtPmNvbmZpZy5waXBlX2JwcCkgewo+ ICsJCXN3aXRjaCAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCkgewo+ICAJCWNhc2UgMTg6 Cj4gIAkJCXBpcGVjb25mIHw9IFBJUEVDT05GXzZCUEM7Cj4gIAkJCWJyZWFrOwo+IEBAIC02Mzg5 LDcgKzYzODksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YykKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNv bmZpZy5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkg ewo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYg RFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPiAgCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA0IHx8Cj4gIAkJICAgIGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxfY3J0YywgSU5URUxfT1VU UFVUX1NEVk8pKQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9JTlRFUkxBQ0VfV19GSUVMRF9J TkRJQ0FUSU9OOwo+IEBAIC02Mzk4LDcgKzYzOTgsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9w aXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCX0gZWxzZQo+ICAJCXBp cGVjb25mIHw9IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9y YW5nZSkKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1Q7Cj4gIAo+ ICAJSTkxNV9XUklURShQSVBFQ09ORihpbnRlbF9jcnRjLT5waXBlKSwgcGlwZWNvbmYpOwo+IEBA IC03MTI2LDcgKzcxMjYsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCXZhbCA9IDA7Cj4gIAo+IC0Jc3dpdGNoIChpbnRl bF9jcnRjLT5jb25maWcucGlwZV9icHApIHsKPiArCXN3aXRjaCAoaW50ZWxfY3J0Yy0+Y29uZmln LT5waXBlX2JwcCkgewo+ICAJY2FzZSAxODoKPiAgCQl2YWwgfD0gUElQRUNPTkZfNkJQQzsKPiAg CQlicmVhazsKPiBAQCAtNzE0NCwxNSArNzE0NCwxNSBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9z ZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCUJVRygpOwo+ICAJfQo+ICAK PiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuZGl0aGVyKQo+ICsJaWYgKGludGVsX2NydGMtPmNv bmZpZy0+ZGl0aGVyKQo+ICAJCXZhbCB8PSAoUElQRUNPTkZfRElUSEVSX0VOIHwgUElQRUNPTkZf RElUSEVSX1RZUEVfU1ApOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuYmFzZS5hZGp1 c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gKwlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRSkKPiAgCQl2YWwgfD0gUElQRUNPTkZfSU5URVJMQUNFRF9JTEs7Cj4gIAllbHNlCj4g IAkJdmFsIHw9IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5j b25maWcubGltaXRlZF9jb2xvcl9yYW5nZSkKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxp bWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJdmFsIHw9IFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVD VDsKPiAgCj4gIAlJOTE1X1dSSVRFKFBJUEVDT05GKHBpcGUpLCB2YWwpOwo+IEBAIC03MTgxLDcg KzcxODEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9jc2Moc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ICAJICogY29uc2lkZXJhdGlvbi4KPiAgCSAqLwo+ICAKPiAtCWlmIChpbnRlbF9j cnRjLT5jb25maWcubGltaXRlZF9jb2xvcl9yYW5nZSkKPiArCWlmIChpbnRlbF9jcnRjLT5jb25m aWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJY29lZmYgPSAoKDIzNSAtIDE2KSAqICgxIDw8 IDEyKSAvIDI1NSkgJiAweGZmODsgLyogMC54eHguLi4gKi8KPiAgCj4gIAkvKgo+IEBAIC03MjA1 LDcgKzcyMDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9jc2Moc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNikgewo+ICAJCXVpbnQx Nl90IHBvc3RvZmYgPSAwOwo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmxpbWl0ZWRf Y29sb3JfcmFuZ2UpCj4gKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9y YW5nZSkKPiAgCQkJcG9zdG9mZiA9ICgxNiAqICgxIDw8IDEyKSAvIDI1NSkgJiAweDFmZmY7Cj4g IAo+ICAJCUk5MTVfV1JJVEUoUElQRV9DU0NfUE9TVE9GRl9ISShwaXBlKSwgcG9zdG9mZik7Cj4g QEAgLTcyMTYsNyArNzIxNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9waXBlX2NzYyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIAl9IGVsc2Ugewo+ICAJCXVpbnQzMl90IG1vZGUgPSBDU0Nf TU9ERV9ZVVZfVE9fUkdCOwo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmxpbWl0ZWRf Y29sb3JfcmFuZ2UpCj4gKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9y YW5nZSkKPiAgCQkJbW9kZSB8PSBDU0NfQkxBQ0tfU0NSRUVOX09GRlNFVDsKPiAgCj4gIAkJSTkx NV9XUklURShQSVBFX0NTQ19NT0RFKHBpcGUpLCBtb2RlKTsKPiBAQCAtNzIyOSwxNSArNzIyOSwx NSBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JZW51bSB0cmFu c2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVy Owo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmln LT5jcHVfdHJhbnNjb2RlcjsKPiAgCXVpbnQzMl90IHZhbDsKPiAgCj4gIAl2YWwgPSAwOwo+ICAK PiAtCWlmIChJU19IQVNXRUxMKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLmRpdGhlcikKPiAr CWlmIChJU19IQVNXRUxMKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRoZXIpCj4gIAkJ dmFsIHw9IChQSVBFQ09ORl9ESVRIRVJfRU4gfCBQSVBFQ09ORl9ESVRIRVJfVFlQRV9TUCk7Cj4g IAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBE Uk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICAJCXZhbCB8 PSBQSVBFQ09ORl9JTlRFUkxBQ0VEX0lMSzsKPiAgCWVsc2UKPiAgCQl2YWwgfD0gUElQRUNPTkZf UFJPR1JFU1NJVkU7Cj4gQEAgLTcyNTEsNyArNzI1MSw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxf c2V0X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWlmIChJU19CUk9BRFdFTEwo ZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gIAkJdmFsID0gMDsKPiAgCj4g LQkJc3dpdGNoIChpbnRlbF9jcnRjLT5jb25maWcucGlwZV9icHApIHsKPiArCQlzd2l0Y2ggKGlu dGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHApIHsKPiAgCQljYXNlIDE4Ogo+ICAJCQl2YWwgfD0g UElQRU1JU0NfRElUSEVSXzZfQlBDOwo+ICAJCQlicmVhazsKPiBAQCAtNzI2OSw3ICs3MjY5LDcg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICAJCQlCVUcoKTsKPiAgCQl9Cj4gIAo+IC0JCWlmIChpbnRlbF9jcnRjLT5jb25maWcuZGl0 aGVyKQo+ICsJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmRpdGhlcikKPiAgCQkJdmFsIHw9IFBJ UEVNSVNDX0RJVEhFUl9FTkFCTEUgfCBQSVBFTUlTQ19ESVRIRVJfVFlQRV9TUDsKPiAgCj4gIAkJ STkxNV9XUklURShQSVBFTUlTQyhwaXBlKSwgdmFsKTsKPiBAQCAtNzUzMCw3ICs3NTMwLDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgCQkgKiByZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5IHJlYWQpLgo+ ICAJCSAqLwo+ICAJCWlmIChtMl9uMiAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDggJiYKPiAt CQkJY3J0Yy0+Y29uZmlnLmhhc19kcnJzKSB7Cj4gKwkJCWNydGMtPmNvbmZpZy0+aGFzX2RycnMp IHsKPiAgCQkJbTJfbjItPmxpbmtfbSA9IEk5MTVfUkVBRChQSVBFX0xJTktfTTIodHJhbnNjb2Rl cikpOwo+ICAJCQltMl9uMi0+bGlua19uID0JSTkxNV9SRUFEKFBJUEVfTElOS19OMih0cmFuc2Nv ZGVyKSk7Cj4gIAkJCW0yX24yLT5nbWNoX20gPQlJOTE1X1JFQUQoUElQRV9EQVRBX00yKHRyYW5z Y29kZXIpKQo+IEBAIC04MjgyLDEwICs4MjgyLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNf dXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlpZiAob24pCj4gIAkJYmFz ZSA9IGludGVsX2NydGMtPmN1cnNvcl9hZGRyOwo+ICAKPiAtCWlmICh4ID49IGludGVsX2NydGMt PmNvbmZpZy5waXBlX3NyY193KQo+ICsJaWYgKHggPj0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBl X3NyY193KQo+ICAJCWJhc2UgPSAwOwo+ICAKPiAtCWlmICh5ID49IGludGVsX2NydGMtPmNvbmZp Zy5waXBlX3NyY19oKQo+ICsJaWYgKHkgPj0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19o KQo+ICAJCWJhc2UgPSAwOwo+ICAKPiAgCWlmICh4IDwgMCkgewo+IEBAIC04ODEyLDcgKzg4MTIs NyBAQCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqaW50ZWxfY3J0Y19tb2RlX2dldChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVy ID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFuc2NvZGVy IGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAg CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgcGlwZV9jb25maWc7Cj4gIAlpbnQgaHRvdCA9IEk5MTVfUkVBRChIVE9UQUwoY3B1X3RyYW5z Y29kZXIpKTsKPiBAQCAtMTA3NjksMTEgKzEwNzY5LDExIEBAIGNoZWNrX2NydGNfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkgICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxu IiwgY3J0Yy0+YWN0aXZlLCBhY3RpdmUpOwo+ICAKPiAgCQlpZiAoYWN0aXZlICYmCj4gLQkJICAg ICFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwgJmNydGMtPmNvbmZpZywgJnBpcGVfY29u ZmlnKSkgewo+ICsJCSAgICAhaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShkZXYsIGNydGMtPmNv bmZpZywgJnBpcGVfY29uZmlnKSkgewo+ICAJCQlXQVJOKDEsICJwaXBlIHN0YXRlIGRvZXNuJ3Qg bWF0Y2ghXG4iKTsKPiAgCQkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjcnRjLCAmcGlwZV9jb25m aWcsCj4gIAkJCQkJICAgICAgICJbaHcgc3RhdGVdIik7Cj4gLQkJCWludGVsX2R1bXBfcGlwZV9j b25maWcoY3J0YywgJmNydGMtPmNvbmZpZywKPiArCQkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhj cnRjLCBjcnRjLT5jb25maWcsCj4gIAkJCQkJICAgICAgICJbc3cgc3RhdGVdIik7Cj4gIAkJfQo+ ICAJfQo+IEBAIC0xMDg3Myw3ICsxMDg3Myw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9zY2FubGlu ZV9vZmZzZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkgKiBvbmUgdG8gdGhlIHZhbHVl Lgo+ICAJICovCj4gIAlpZiAoSVNfR0VOMihkZXYpKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+Y29uZmlnLmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAr CQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZTsKPiAgCQlpbnQgdnRvdGFsOwo+ICAKPiAgCQl2dG90YWwgPSBtb2Rl LT5jcnRjX3Z0b3RhbDsKPiBAQCAtMTA5MjEsNiArMTA5MjEsMTMgQEAgb3V0Ogo+ICAJcmV0dXJu IHBpcGVfY29uZmlnOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX3NldF9zdGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJa2ZyZWUoY3J0Yy0+Y29uZmlnKTsKPiArCWNydGMtPmNv bmZpZyA9IGNydGNfc3RhdGU7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9k ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSwKPiAgCQkJICAgIGludCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsCj4gQEAgLTExMDAwLDcgKzExMDA3LDcgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2Rl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQljcnRjLT5tb2RlID0gKm1vZGU7Cj4gIAkJLyog bW9kZV9zZXQvZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zIHJlbHkgb24gYSBjb3JyZWN0IHBpcGUK PiAgCQkgKiBjb25maWcuICovCj4gLQkJdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnID0gKnBp cGVfY29uZmlnOwo+ICsJCWludGVsX2NydGNfc2V0X3N0YXRlKHRvX2ludGVsX2NydGMoY3J0Yyks IHBpcGVfY29uZmlnKTsKPiAgCj4gIAkJLyoKPiAgCQkgKiBDYWxjdWxhdGUgYW5kIHN0b3JlIHZh cmlvdXMgY29uc3RhbnRzIHdoaWNoCj4gQEAgLTExMDQ0LDcgKzExMDUxLDYgQEAgZG9uZToKPiAg CWlmIChyZXQgJiYgY3J0Yy0+ZW5hYmxlZCkKPiAgCQljcnRjLT5tb2RlID0gKnNhdmVkX21vZGU7 Cj4gIAo+IC0Ja2ZyZWUocGlwZV9jb25maWcpOwo+ICAJa2ZyZWUoc2F2ZWRfbW9kZSk7Cj4gIAly ZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTExNDYxLDcgKzExNDY3LDcgQEAgc3RhdGljIGludCBpbnRl bF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQo+ICAJCWdvdG8gZmFp bDsKPiAgCX0gZWxzZSBpZiAocGlwZV9jb25maWcpIHsKPiAgCQlpZiAocGlwZV9jb25maWctPmhh c19hdWRpbyAhPQo+IC0JCSAgICB0b19pbnRlbF9jcnRjKHNldC0+Y3J0YyktPmNvbmZpZy5oYXNf YXVkaW8pCj4gKwkJICAgIHRvX2ludGVsX2NydGMoc2V0LT5jcnRjKS0+Y29uZmlnLT5oYXNfYXVk aW8pCj4gIAkJCWNvbmZpZy0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAgCj4gIAkJLyoKPiBAQCAt MTE4ODYsOCArMTE4OTIsOCBAQCBpbnRlbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlzdGF0ZS5jbGlwLngxID0gMDsK PiAgCXN0YXRlLmNsaXAueTEgPSAwOwo+IC0Jc3RhdGUuY2xpcC54MiA9IGludGVsX2NydGMtPmFj dGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193IDogMDsKPiAtCXN0YXRlLmNsaXAu eTIgPSBpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCA6 IDA7Cj4gKwlzdGF0ZS5jbGlwLngyID0gaW50ZWxfY3J0Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+ Y29uZmlnLT5waXBlX3NyY193IDogMDsKPiArCXN0YXRlLmNsaXAueTIgPSBpbnRlbF9jcnRjLT5h Y3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggOiAwOwo+ICAKPiAgCXN0YXRl Lm9yaWdfc3JjID0gc3RhdGUuc3JjOwo+ICAJc3RhdGUub3JpZ19kc3QgPSBzdGF0ZS5kc3Q7Cj4g QEAgLTEyMTY5LDYgKzEyMTc1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IE5V TEw7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gTlVMTDsKPiAgCXN0cnVjdCBkcm1f cGxhbmUgKmN1cnNvciA9IE5VTEw7Cj4gIAlpbnQgaSwgcmV0Owo+IEBAIC0xMjE3Nyw2ICsxMjE4 NCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IHBpcGUpCj4gIAlpZiAoaW50ZWxfY3J0YyA9PSBOVUxMKQo+ICAJCXJldHVybjsKPiAg Cj4gKwljcnRjX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKmNydGNfc3RhdGUpLCBHRlBfS0VSTkVM KTsKPiArCWlmICghY3J0Y19zdGF0ZSkKPiArCQlnb3RvIGZhaWw7Cj4gKwlpbnRlbF9jcnRjX3Nl dF9zdGF0ZShpbnRlbF9jcnRjLCBjcnRjX3N0YXRlKTsKPiArCj4gIAlwcmltYXJ5ID0gaW50ZWxf cHJpbWFyeV9wbGFuZV9jcmVhdGUoZGV2LCBwaXBlKTsKPiAgCWlmICghcHJpbWFyeSkKPiAgCQln b3RvIGZhaWw7Cj4gQEAgLTEyMjI5LDYgKzEyMjQxLDcgQEAgZmFpbDoKPiAgCQlkcm1fcGxhbmVf Y2xlYW51cChwcmltYXJ5KTsKPiAgCWlmIChjdXJzb3IpCj4gIAkJZHJtX3BsYW5lX2NsZWFudXAo Y3Vyc29yKTsKPiArCWtmcmVlKGNydGNfc3RhdGUpOwo+ICAJa2ZyZWUoaW50ZWxfY3J0Yyk7Cj4g IH0KPiAgCj4gQEAgLTEzMTMxLDcgKzEzMTQ0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRp emVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCXUzMiByZWc7Cj4gIAo+ICAJLyog Q2xlYXIgYW55IGZyYW1lIHN0YXJ0IGRlbGF5cyB1c2VkIGZvciBkZWJ1Z2dpbmcgbGVmdCBieSB0 aGUgQklPUyAqLwo+IC0JcmVnID0gUElQRUNPTkYoY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2NvZGVy KTsKPiArCXJlZyA9IFBJUEVDT05GKGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpOwo+ICAJ STkxNV9XUklURShyZWcsIEk5MTVfUkVBRChyZWcpICYgflBJUEVDT05GX0ZSQU1FX1NUQVJUX0RF TEFZX01BU0spOwo+ICAKPiAgCS8qIHJlc3RvcmUgdmJsYW5rIGludGVycnVwdHMgdG8gY29ycmVj dCBzdGF0ZSAqLwo+IEBAIC0xMzMzNSwxMiArMTMzNDgsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxf bW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnQg aTsKPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+IC0JCW1lbXNldCgm Y3J0Yy0+Y29uZmlnLCAwLCBzaXplb2YoY3J0Yy0+Y29uZmlnKSk7Cj4gKwkJbWVtc2V0KGNydGMt PmNvbmZpZywgMCwgc2l6ZW9mKCpjcnRjLT5jb25maWcpKTsKPiAgCj4gLQkJY3J0Yy0+Y29uZmln LnF1aXJrcyB8PSBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERTsKPiArCQljcnRjLT5j b25maWctPnF1aXJrcyB8PSBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERTsKPiAgCj4g IAkJY3J0Yy0+YWN0aXZlID0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnKGNydGMs Cj4gLQkJCQkJCQkJICZjcnRjLT5jb25maWcpOwo+ICsJCQkJCQkJCSBjcnRjLT5jb25maWcpOwo+ ICAKPiAgCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBjcnRjLT5hY3RpdmU7Cj4gIAkJY3J0Yy0+cHJp bWFyeV9lbmFibGVkID0gcHJpbWFyeV9nZXRfaHdfc3RhdGUoY3J0Yyk7Cj4gQEAgLTEzMzc3LDcg KzEzMzkwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJaWYgKGVuY29kZXItPmdldF9od19zdGF0ZShlbmNv ZGVyLCAmcGlwZSkpIHsKPiAgCQkJY3J0YyA9IHRvX2ludGVsX2NydGMoZGV2X3ByaXYtPnBpcGVf dG9fY3J0Y19tYXBwaW5nW3BpcGVdKTsKPiAgCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gJmNydGMt PmJhc2U7Cj4gLQkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgJmNydGMtPmNvbmZpZyk7 Cj4gKwkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgY3J0Yy0+Y29uZmlnKTsKPiAgCQl9 IGVsc2Ugewo+ICAJCQllbmNvZGVyLT5iYXNlLmNydGMgPSBOVUxMOwo+ICAJCX0KPiBAQCAtMTM0 MjcsNyArMTM0NDAsNyBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqLwo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNy dGMpIHsKPiAgCQlpZiAoY3J0Yy0+YWN0aXZlICYmIGk5MTUuZmFzdGJvb3QpIHsKPiAtCQkJaW50 ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZjcnRjLT5iYXNlLm1vZGUsICZjcnRjLT5jb25maWcp Owo+ICsJCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGMtPmJhc2UubW9kZSwgY3J0 Yy0+Y29uZmlnKTsKPiAgCQkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIGZvdW5kIGFjdGl2ZSBt b2RlOiAiLAo+ICAJCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkKTsKPiAgCQkJZHJtX21vZGVf ZGVidWdfcHJpbnRtb2RlbGluZSgmY3J0Yy0+YmFzZS5tb2RlKTsKPiBAQCAtMTM0NDIsNyArMTM0 NTUsNyBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiAgCQljcnRjID0g dG9faW50ZWxfY3J0YyhkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV0pOwo+ICAJ CWludGVsX3Nhbml0aXplX2NydGMoY3J0Yyk7Cj4gLQkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhj cnRjLCAmY3J0Yy0+Y29uZmlnLCAiW3NldHVwX2h3X3N0YXRlXSIpOwo+ICsJCWludGVsX2R1bXBf cGlwZV9jb25maWcoY3J0YywgY3J0Yy0+Y29uZmlnLCAiW3NldHVwX2h3X3N0YXRlXSIpOwo+ICAJ fQo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKysp IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA2N2NkYmU4Li5kNmYwZDkwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTEyOTUsMTEgKzEyOTUsMTEgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2Vfc2V0X3BsbF9jcHVfZWRwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+ICAJdTMyIGRwYV9jdGw7Cj4gIAo+IC0JRFJNX0RFQlVHX0tNUygiZURQIFBMTCBlbmFibGUg Zm9yIGNsb2NrICVkXG4iLCBjcnRjLT5jb25maWcucG9ydF9jbG9jayk7Cj4gKwlEUk1fREVCVUdf S01TKCJlRFAgUExMIGVuYWJsZSBmb3IgY2xvY2sgJWRcbiIsIGNydGMtPmNvbmZpZy0+cG9ydF9j bG9jayk7Cj4gIAlkcGFfY3RsID0gSTkxNV9SRUFEKERQX0EpOwo+ICAJZHBhX2N0bCAmPSB+RFBf UExMX0ZSRVFfTUFTSzsKPiAgCj4gLQlpZiAoY3J0Yy0+Y29uZmlnLnBvcnRfY2xvY2sgPT0gMTYy MDAwKSB7Cj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IDE2MjAwMCkgewo+ICAJ CS8qIEZvciBhIGxvbmcgdGltZSB3ZSd2ZSBjYXJyaWVkIGFyb3VuZCBhIElMSy1EZXZBIHcvYSBm b3IgdGhlCj4gIAkJICogMTYwTUh6IGNsb2NrLiBJZiB3ZSdyZSByZWFsbHkgdW5sdWNreSwgaXQn cyBzdGlsbCByZXF1aXJlZC4KPiAgCQkgKi8KPiBAQCAtMTMyNCw3ICsxMzI0LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZHBfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAg CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJh c2UpOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPnBvcnQ7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFz ZS5jcnRjKTsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNy dGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAg Cj4gIAkvKgo+ICAJICogVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgRFAgcmVnaXN0ZXJzOgo+IEBA IC0xMzUyLDcgKzEzNTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJaW50ZWxfZHAtPkRQIHw9IERQX1ZPTFRBR0VfMF80 IHwgRFBfUFJFX0VNUEhBU0lTXzA7Cj4gIAlpbnRlbF9kcC0+RFAgfD0gRFBfUE9SVF9XSURUSChp bnRlbF9kcC0+bGFuZV9jb3VudCk7Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy5oYXNfYXVkaW8p Cj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNfYXVkaW8pCj4gIAkJaW50ZWxfZHAtPkRQIHw9IERQ X0FVRElPX09VVFBVVF9FTkFCTEU7Cj4gIAo+ICAJLyogU3BsaXQgb3V0IHRoZSBJQlgvQ1BVIHZz IENQVCBzZXR0aW5ncyAqLwo+IEBAIC0yMTAyLDcgKzIxMDIsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kaXNhYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ICAJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gIAo+IC0JaWYgKGNy dGMtPmNvbmZpZy5oYXNfYXVkaW8pCj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNfYXVkaW8pCj4g IAkJaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZShlbmNvZGVyKTsKPiAgCj4gIAlpZiAoSEFTX1BT UihkZXYpICYmICFIQVNfRERJKGRldikpCj4gQEAgLTIzMTIsNyArMjMxMiw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCWlu dGVsX2RwX2NvbXBsZXRlX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICAJaW50ZWxfZHBfc3RvcF9s aW5rX3RyYWluKGludGVsX2RwKTsKPiAgCj4gLQlpZiAoY3J0Yy0+Y29uZmlnLmhhc19hdWRpbykg ewo+ICsJaWYgKGNydGMtPmNvbmZpZy0+aGFzX2F1ZGlvKSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZF UigiRW5hYmxpbmcgRFAgYXVkaW8gb24gcGlwZSAlY1xuIiwKPiAgCQkJCSBwaXBlX25hbWUoY3J0 Yy0+cGlwZSkpOwo+ICAJCWludGVsX2F1ZGlvX2NvZGVjX2VuYWJsZShlbmNvZGVyKTsKPiBAQCAt NDc4MCw3ICs0NzgwLDcgQEAgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4g LQljb25maWcgPSAmaW50ZWxfY3J0Yy0+Y29uZmlnOwo+ICsJY29uZmlnID0gaW50ZWxfY3J0Yy0+ Y29uZmlnOwo+ICAKPiAgCWlmIChpbnRlbF9kcC0+ZHJyc19zdGF0ZS50eXBlIDwgU0VBTUxFU1Nf RFJSU19TVVBQT1JUKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiT25seSBTZWFtbGVzcyBEUlJTIHN1 cHBvcnRlZC5cbiIpOwo+IEBAIC00ODAyLDcgKzQ4MDIsNyBAQCB2b2lkIGludGVsX2RwX3NldF9k cnJzX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCByZWZyZXNoX3JhdGUpCj4gIAl9 Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNiAmJiBJTlRFTF9JTkZPKGRldikt PmdlbiA8IDgpIHsKPiAtCQlyZWcgPSBQSVBFQ09ORihpbnRlbF9jcnRjLT5jb25maWcuY3B1X3Ry YW5zY29kZXIpOwo+ICsJCXJlZyA9IFBJUEVDT05GKGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3Ry YW5zY29kZXIpOwo+ICAJCXZhbCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJCWlmIChpbmRleCA+IERS UlNfSElHSF9SUikgewo+ICAJCQl2YWwgfD0gUElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gaW5kZXggMjU3YWNhMS4uMjhiNmVlNCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gQEAgLTE1Nyw3ICsxNTcsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9tc3RfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPiAgCWlmIChpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcyA9PSAwKSB7Cj4g IAkJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVyKTsK PiAgCj4gLQkJSTkxNV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIGludGVsX2NydGMtPmNvbmZp Zy5kZGlfcGxsX3NlbCk7Cj4gKwkJSTkxNV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIGludGVs X2NydGMtPmNvbmZpZy0+ZGRpX3BsbF9zZWwpOwo+ICAKPiAgCQlpbnRlbF9kZGlfaW5pdF9kcF9i dWZfcmVnKCZpbnRlbF9kaWdfcG9ydC0+YmFzZSk7Cj4gIAo+IEBAIC0xNzAsNyArMTcwLDggQEAg c3RhdGljIHZvaWQgaW50ZWxfbXN0X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gIAl9Cj4gIAo+ICAJcmV0ID0gZHJtX2RwX21zdF9hbGxvY2F0ZV92Y3BpKCZp bnRlbF9kcC0+bXN0X21nciwKPiAtCQkJCSAgICAgICBpbnRlbF9tc3QtPnBvcnQsIGludGVsX2Ny dGMtPmNvbmZpZy5wYm4sICZzbG90cyk7Cj4gKwkJCQkgICAgICAgaW50ZWxfbXN0LT5wb3J0LCBp bnRlbF9jcnRjLT5jb25maWctPnBibiwKPiArCQkJCQkJCSAgICAgICZzbG90cyk7Cj4gIAlpZiAo cmV0ID09IGZhbHNlKSB7Cj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgdmNwaVxu Iik7Cj4gIAkJcmV0dXJuOwo+IEBAIC0yMjMsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHBfbXN0X2VuY19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0 Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0J ZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLmNwdV90cmFuc2Nv ZGVyOwo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5j cHVfdHJhbnNjb2RlcjsKPiAgCXUzMiB0ZW1wLCBmbGFncyA9IDA7Cj4gIAo+ICAJcGlwZV9jb25m aWctPmhhc19kcF9lbmNvZGVyID0gdHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGlu ZGV4IDE3NWI4NTMuLjAxZDZmYTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBA IC00MzksNyArNDM5LDcgQEAgc3RydWN0IGludGVsX2NydGMgewo+ICAJdWludDMyX3QgY3Vyc29y X2Jhc2U7Cj4gIAo+ICAJc3RydWN0IGludGVsX3BsYW5lX2NvbmZpZyBwbGFuZV9jb25maWc7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSBjb25maWc7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY29uZmlnOwo+ICAJYm9vbCBuZXdfZW5hYmxlZDsKPiAgCj4gIAkvKiByZXNldCBjb3Vu dGVyIHZhbHVlIHdoZW4gdGhlIGxhc3QgZmxpcCB3YXMgc3VibWl0dGVkICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpLmMKPiBpbmRleCAyNTI5MWU5Li41ZDllYzdiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpLmMKPiBAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz aV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJSTkxNV9XUklU RShEUExMKHBpcGUpLCB0bXApOwo+ICAKPiAgCS8qIHVwZGF0ZSB0aGUgaHcgc3RhdGUgZm9yIERQ TEwgKi8KPiAtCWludGVsX2NydGMtPmNvbmZpZy5kcGxsX2h3X3N0YXRlLmRwbGwgPSBEUExMX0lO VEVHUkFURURfQ0xPQ0tfVkxWIHwKPiArCWludGVsX2NydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0 ZS5kcGxsID0gRFBMTF9JTlRFR1JBVEVEX0NMT0NLX1ZMViB8Cj4gIAkJRFBMTF9SRUZBX0NMS19F TkFCTEVfVkxWOwo+ICAKPiAgCXRtcCA9IEk5MTVfUkVBRChEU1BDTEtfR0FURV9EKTsKPiBAQCAt NDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIHNldF9kc2lfdGltaW5ncyhzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kg PSBlbmNfdG9faW50ZWxfZHNpKGVuY29kZXIpOwo+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gLQl1bnNp Z25lZCBpbnQgYnBwID0gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfYnBwOwo+ICsJdW5zaWduZWQg aW50IGJwcCA9IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHA7Cj4gIAl1bnNpZ25lZCBpbnQg bGFuZV9jb3VudCA9IGludGVsX2RzaS0+bGFuZV9jb3VudDsKPiAgCj4gIAl1MTYgaGFjdGl2ZSwg aGZwLCBoc3luYywgaGJwLCB2ZnAsIHZzeW5jLCB2YnA7Cj4gQEAgLTU0OSw5ICs1NDksOSBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlcikKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhlbmNvZGVyLT5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190 b19pbnRlbF9kc2koZW5jb2Rlcik7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9Cj4gLQkJJmludGVsX2NydGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4g KwkJJmludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICAJZW51bSBwb3J0 IHBvcnQ7Cj4gLQl1bnNpZ25lZCBpbnQgYnBwID0gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfYnBw Owo+ICsJdW5zaWduZWQgaW50IGJwcCA9IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHA7Cj4g IAl1MzIgdmFsLCB0bXA7Cj4gIAl1MTYgbW9kZV9oZGlzcGxheTsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHZvLmMKPiBpbmRleCAxMDhmMDU4Li43MDZhYjk5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHZvLmMKPiBAQCAtMTg2LDggKzE4Niw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJs ZV9kdm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAl1MzIgdGVtcCA9IEk5MTVf UkVBRChkdm9fcmVnKTsKPiAgCj4gIAlpbnRlbF9kdm8tPmRldi5kZXZfb3BzLT5tb2RlX3NldCgm aW50ZWxfZHZvLT5kZXYsCj4gLQkJCQkJICZjcnRjLT5jb25maWcuYmFzZS5tb2RlLAo+IC0JCQkJ CSAmY3J0Yy0+Y29uZmlnLmJhc2UuYWRqdXN0ZWRfbW9kZSk7Cj4gKwkJCQkJICZjcnRjLT5jb25m aWctPmJhc2UubW9kZSwKPiArCQkJCQkgJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl KTsKPiAgCj4gIAlJOTE1X1dSSVRFKGR2b19yZWcsIHRlbXAgfCBEVk9fRU5BQkxFKTsKPiAgCUk5 MTVfUkVBRChkdm9fcmVnKTsKPiBAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2R2b19kcG1zKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBtb2RlKQo+ICAJ LyogV2UgY2FsbCBjb25uZWN0b3IgZHBtcyBtYW51YWxseSBiZWxvdyBpbiBjYXNlIHBpcGUgZHBt cyBkb2Vzbid0Cj4gIAkgKiBjaGFuZ2UgZHVlIHRvIGNsb25pbmcuICovCj4gIAlpZiAobW9kZSA9 PSBEUk1fTU9ERV9EUE1TX09OKSB7Cj4gLQkJY29uZmlnID0gJnRvX2ludGVsX2NydGMoY3J0Yykt PmNvbmZpZzsKPiArCQljb25maWcgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWc7Cj4gIAo+ ICAJCWludGVsX2R2by0+YmFzZS5jb25uZWN0b3JzX2FjdGl2ZSA9IHRydWU7Cj4gIAo+IEBAIC0y OTUsNyArMjk1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX3ByZV9lbmFibGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rl ci0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9ICZjcnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHZvICppbnRlbF9kdm8gPSBlbmNfdG9fZHZvKGVu Y29kZXIpOwo+ICAJaW50IHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJdTMyIGR2b192YWw7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gaW5kZXggMWE5YTcyNy4uZjQyNmU3YyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IEBAIC00MzEsNyArNDMxLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwKPiAgCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgY3VycmVudCBtb2RlIG9uIGNv bm5lY3RvciAlc1xuIiwKPiAgCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4gIAkJCWludGVs X21vZGVfZnJvbV9waXBlX2NvbmZpZygmZW5jb2Rlci0+Y3J0Yy0+aHdtb2RlLAo+IC0JCQkJCQkg ICAgJnRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0YyktPmNvbmZpZyk7Cj4gKwkJCQkJCSAgICB0 b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpLT5jb25maWcpOwo+ICAJCQltb2Rlc1tpXSA9ICZl bmNvZGVyLT5jcnRjLT5od21vZGU7Cj4gIAkJfQo+ICAJCWNydGNzW2ldID0gbmV3X2NydGM7Cj4g QEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmRldl9pbml0X2Jpb3Moc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkgKiBwaXBlLiAgTm90ZSB3ZSBuZWVkIHRvIHVzZSB0 aGUgc2VsZWN0ZWQgZmIncyBwaXRjaCBhbmQgYnBwCj4gIAkJICogcmF0aGVyIHRoYW4gdGhlIGN1 cnJlbnQgcGlwZSdzLCBzaW5jZSB0aGV5IGRpZmZlci4KPiAgCQkgKi8KPiAtCQljdXJfc2l6ZSA9 IGludGVsX2NydGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKPiAr CQljdXJfc2l6ZSA9IGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf aGRpc3BsYXk7Cj4gIAkJY3VyX3NpemUgPSBjdXJfc2l6ZSAqIGZiLT5iYXNlLmJpdHNfcGVyX3Bp eGVsIC8gODsKPiAgCQlpZiAoZmItPmJhc2UucGl0Y2hlc1swXSA8IGN1cl9zaXplKSB7Cj4gIAkJ CURSTV9ERUJVR19LTVMoImZiIG5vdCB3aWRlIGVub3VnaCBmb3IgcGxhbmUgJWMgKCVkIHZzICVk KVxuIiwKPiBAQCAtNTc0LDEzICs1NzQsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJkZXZfaW5p dF9iaW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCWJyZWFrOwo+ICAJCX0KPiAgCj4g LQkJY3VyX3NpemUgPSBpbnRlbF9jcnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf dmRpc3BsYXk7Cj4gKwkJY3VyX3NpemUgPSBpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICAJCWN1cl9zaXplID0gQUxJR04oY3VyX3NpemUsIHBs YW5lX2NvbmZpZy0+dGlsZWQgPyAoSVNfR0VOMihkZXYpID8gMTYgOiA4KSA6IDEpOwo+ICAJCWN1 cl9zaXplICo9IGZiLT5iYXNlLnBpdGNoZXNbMF07Cj4gIAkJRFJNX0RFQlVHX0tNUygicGlwZSAl YyBhcmVhOiAlZHglZCwgYnBwOiAlZCwgc2l6ZTogJWRcbiIsCj4gIAkJCSAgICAgIHBpcGVfbmFt ZShpbnRlbF9jcnRjLT5waXBlKSwKPiAtCQkJICAgICAgaW50ZWxfY3J0Yy0+Y29uZmlnLmJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5LAo+IC0JCQkgICAgICBpbnRlbF9jcnRjLT5jb25m aWcuYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXksCj4gKwkJCSAgICAgIGludGVsX2Ny dGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXksCj4gKwkJCSAgICAg IGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXksCj4g IAkJCSAgICAgIGZiLT5iYXNlLmJpdHNfcGVyX3BpeGVsLAo+ICAJCQkgICAgICBjdXJfc2l6ZSk7 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBpbmRleCAwMmZmM2UyLi4yMDBhMGU3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IEBAIC0zMzcsMTMgKzMzNywxMyBA QCBzdGF0aWMgdm9pZCBoc3dfd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlciwKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMp Owo+IC0JdTMyIGN0bF9yZWcgPSBIU1dfVFZJREVPX0RJUF9DVEwoaW50ZWxfY3J0Yy0+Y29uZmln LmNwdV90cmFuc2NvZGVyKTsKPiArCXUzMiBjdGxfcmVnID0gSFNXX1RWSURFT19ESVBfQ1RMKGlu dGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpOwo+ICAJdTMyIGRhdGFfcmVnOwo+ICAJ aW50IGk7Cj4gIAl1MzIgdmFsID0gSTkxNV9SRUFEKGN0bF9yZWcpOwo+ICAKPiAgCWRhdGFfcmVn ID0gaHN3X2luZm9mcmFtZV9kYXRhX3JlZyh0eXBlLAo+IC0JCQkJCSAgaW50ZWxfY3J0Yy0+Y29u ZmlnLmNwdV90cmFuc2NvZGVyLAo+ICsJCQkJCSAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJh bnNjb2RlciwKPiAgCQkJCQkgIGRldl9wcml2KTsKPiAgCWlmIChkYXRhX3JlZyA9PSAwKQo+ICAJ CXJldHVybjsKPiBAQCAtMzcxLDcgKzM3MSw3IEBAIHN0YXRpYyBib29sIGhzd19pbmZvZnJhbWVf ZW5hYmxlZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiAtCXUzMiBjdGxfcmVnID0gSFNXX1RW SURFT19ESVBfQ1RMKGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2Rlcik7Cj4gKwl1MzIg Y3RsX3JlZyA9IEhTV19UVklERU9fRElQX0NUTChpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFu c2NvZGVyKTsKPiAgCXUzMiB2YWwgPSBJOTE1X1JFQUQoY3RsX3JlZyk7Cj4gIAo+ICAJcmV0dXJu IHZhbCAmIChWSURFT19ESVBfRU5BQkxFX0FWSV9IU1cgfCBWSURFT19ESVBfRU5BQkxFX1NQRF9I U1cgfAo+IEBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9zZXRfYXZp X2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gIAl9Cj4gIAo+ICAJaWYg KGludGVsX2hkbWktPnJnYl9xdWFudF9yYW5nZV9zZWxlY3RhYmxlKSB7Cj4gLQkJaWYgKGludGVs X2NydGMtPmNvbmZpZy5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJCWlmIChpbnRlbF9jcnRjLT5j b25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJCWZyYW1lLmF2aS5xdWFudGl6YXRpb25f cmFuZ2UgPQo+ICAJCQkJSERNSV9RVUFOVElaQVRJT05fUkFOR0VfTElNSVRFRDsKPiAgCQllbHNl Cj4gQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCBoc3dfc2V0X2luZm9mcmFtZXMoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5jb2Rlci0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiAgCXN0cnVjdCBp bnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7Cj4gLQl1 MzIgcmVnID0gSFNXX1RWSURFT19ESVBfQ1RMKGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNj b2Rlcik7Cj4gKwl1MzIgcmVnID0gSFNXX1RWSURFT19ESVBfQ1RMKGludGVsX2NydGMtPmNvbmZp Zy0+Y3B1X3RyYW5zY29kZXIpOwo+ICAJdTMyIHZhbCA9IEk5MTVfUkVBRChyZWcpOwo+ICAKPiAg CWFzc2VydF9oZG1pX3BvcnRfZGlzYWJsZWQoaW50ZWxfaGRtaSk7Cj4gQEAgLTcwMCw3ICs3MDAs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVu Y29kZXItPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVu Y190b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJmNydGMtPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4g KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjLT5jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAgCXUzMiBoZG1pX3ZhbDsKPiAgCj4gIAloZG1pX3ZhbCA9 IFNEVk9fRU5DT0RJTkdfSERNSTsKPiBAQCAtNzExLDEyICs3MTEsMTIgQEAgc3RhdGljIHZvaWQg aW50ZWxfaGRtaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJaWYg KGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMpCj4gIAkJaGRtaV92 YWwgfD0gU0RWT19IU1lOQ19BQ1RJVkVfSElHSDsKPiAgCj4gLQlpZiAoY3J0Yy0+Y29uZmlnLnBp cGVfYnBwID4gMjQpCj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCA+IDI0KQo+ICAJCWhk bWlfdmFsIHw9IEhETUlfQ09MT1JfRk9STUFUXzEyYnBjOwo+ICAJZWxzZQo+ICAJCWhkbWlfdmFs IHw9IFNEVk9fQ09MT1JfRk9STUFUXzhicGM7Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy5oYXNf aGRtaV9zaW5rKQo+ICsJaWYgKGNydGMtPmNvbmZpZy0+aGFzX2hkbWlfc2luaykKPiAgCQloZG1p X3ZhbCB8PSBIRE1JX01PREVfU0VMRUNUX0hETUk7Cj4gIAo+ICAJaWYgKEhBU19QQ0hfQ1BUKGRl dikpCj4gQEAgLTgxNCw3ICs4MTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfaGRtaShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCXUzMiB0ZW1wOwo+ICAJdTMyIGVuYWJs ZV9iaXRzID0gU0RWT19FTkFCTEU7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5oYXNf YXVkaW8pCj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfYXVkaW8pCj4gIAkJZW5hYmxl X2JpdHMgfD0gU0RWT19BVURJT19FTkFCTEU7Cj4gIAo+ICAJdGVtcCA9IEk5MTVfUkVBRChpbnRl bF9oZG1pLT5oZG1pX3JlZyk7Cj4gQEAgLTg0NSw4ICs4NDUsOCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQlQT1NUSU5H X1JFQUQoaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwo+ICAJfQo+ICAKPiAtCWlmIChpbnRlbF9jcnRj LT5jb25maWcuaGFzX2F1ZGlvKSB7Cj4gLQkJV0FSTl9PTighaW50ZWxfY3J0Yy0+Y29uZmlnLmhh c19oZG1pX3NpbmspOwo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2F1ZGlvKSB7Cj4g KwkJV0FSTl9PTighaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfaGRtaV9zaW5rKTsKPiAgCQlEUk1f REVCVUdfRFJJVkVSKCJFbmFibGluZyBIRE1JIGF1ZGlvIG9uIHBpcGUgJWNcbiIsCj4gIAkJCQkg cGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsKPiAgCQlpbnRlbF9hdWRpb19jb2RlY19lbmFi bGUoZW5jb2Rlcik7Cj4gQEAgLTg2Niw3ICs4NjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNh YmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAl1MzIgdGVtcDsKPiAg CXUzMiBlbmFibGVfYml0cyA9IFNEVk9fRU5BQkxFIHwgU0RWT19BVURJT19FTkFCTEU7Cj4gIAo+ IC0JaWYgKGNydGMtPmNvbmZpZy5oYXNfYXVkaW8pCj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNf YXVkaW8pCj4gIAkJaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZShlbmNvZGVyKTsKPiAgCj4gIAl0 ZW1wID0gSTkxNV9SRUFEKGludGVsX2hkbWktPmhkbWlfcmVnKTsKPiBAQCAtMTI1MiwxMiArMTI1 MiwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ICAJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZpbnRlbF9jcnRjLT5jb25maWcu YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKPiAgCj4gIAlpbnRlbF9oZG1pX3ByZXBhcmUoZW5jb2Rlcik7Cj4gIAo+ICAJaW50 ZWxfaGRtaS0+c2V0X2luZm9mcmFtZXMoJmVuY29kZXItPmJhc2UsCj4gLQkJCQkgICBpbnRlbF9j cnRjLT5jb25maWcuaGFzX2hkbWlfc2luaywKPiArCQkJCSAgIGludGVsX2NydGMtPmNvbmZpZy0+ aGFzX2hkbWlfc2luaywKPiAgCQkJCSAgIGFkanVzdGVkX21vZGUpOwo+ICB9Cj4gIAo+IEBAIC0x MjcwLDcgKzEyNzAsNyBAQCBzdGF0aWMgdm9pZCB2bHZfaGRtaV9wcmVfZW5hYmxlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PQo+ICAJCXRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLmJh c2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7Cj4gIAllbnVtIGRwaW9fY2hhbm5lbCBwb3J0ID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwo ZHBvcnQpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJdTMyIHZhbDsKPiBA QCAtMTMwMiw3ICsxMzAyLDcgQEAgc3RhdGljIHZvaWQgdmx2X2hkbWlfcHJlX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRw aW9fbG9jayk7Cj4gIAo+ICAJaW50ZWxfaGRtaS0+c2V0X2luZm9mcmFtZXMoJmVuY29kZXItPmJh c2UsCj4gLQkJCQkgICBpbnRlbF9jcnRjLT5jb25maWcuaGFzX2hkbWlfc2luaywKPiArCQkJCSAg IGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2hkbWlfc2luaywKPiAgCQkJCSAgIGFkanVzdGVkX21v ZGUpOwo+ICAKPiAgCWludGVsX2VuYWJsZV9oZG1pKGVuY29kZXIpOwo+IEBAIC0xNDY3LDcgKzE0 NjcsNyBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQo+ICAJCXRv X2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLmJhc2UuYWRqdXN0 ZWRfbW9kZTsKPiArCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g IAllbnVtIGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGRwb3J0KTsKPiAg CWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCWludCBkYXRhLCBpOwo+IEBAIC0xNTkz LDcgKzE1OTMsNyBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHBpb19sb2Nr KTsKPiAgCj4gIAlpbnRlbF9oZG1pLT5zZXRfaW5mb2ZyYW1lcygmZW5jb2Rlci0+YmFzZSwKPiAt CQkJCSAgIGludGVsX2NydGMtPmNvbmZpZy5oYXNfaGRtaV9zaW5rLAo+ICsJCQkJICAgaW50ZWxf Y3J0Yy0+Y29uZmlnLT5oYXNfaGRtaV9zaW5rLAo+ICAJCQkJICAgYWRqdXN0ZWRfbW9kZSk7Cj4g IAo+ICAJaW50ZWxfZW5hYmxlX2hkbWkoZW5jb2Rlcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwo+IGluZGV4IDlkMTc0Y2YuLmM3YzY0MTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHZkcy5jCj4gQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZW5hYmxl X2x2ZHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGMtPmNvbmZp Zy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlOwo+ICAJaW50IHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJdTMyIHRlbXA7Cj4gIAo+IEBAIC0x NjcsNyArMTY3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX2VuYWJsZV9sdmRzKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCS8qIHNldCB0aGUgY29ycmVzcG9uc2Rpbmcg TFZEU19CT1JERVIgYml0ICovCj4gIAl0ZW1wICY9IH5MVkRTX0JPUkRFUl9FTkFCTEU7Cj4gLQl0 ZW1wIHw9IGNydGMtPmNvbmZpZy5nbWNoX3BmaXQubHZkc19ib3JkZXJfYml0czsKPiArCXRlbXAg fD0gY3J0Yy0+Y29uZmlnLT5nbWNoX3BmaXQubHZkc19ib3JkZXJfYml0czsKPiAgCS8qIFNldCB0 aGUgQjAtQjMgZGF0YSBwYWlycyBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIgd2UncmUgZ29pbmcg dG8KPiAgCSAqIHNldCB0aGUgRFBMTHMgZm9yIGR1YWwtY2hhbm5lbCBtb2RlIG9yIG5vdC4KPiAg CSAqLwo+IEBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX2VuYWJsZV9s dmRzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID09IDQpIHsKPiAgCQkvKiBCc3BlYyB3b3JkaW5nIHN1Z2dlc3RzIHRoYXQgTFZEUyBw b3J0IGRpdGhlcmluZyBvbmx5IGV4aXN0cwo+ICAJCSAqIGZvciAxOGJwcCBwYW5lbHMuICovCj4g LQkJaWYgKGNydGMtPmNvbmZpZy5kaXRoZXIgJiYgY3J0Yy0+Y29uZmlnLnBpcGVfYnBwID09IDE4 KQo+ICsJCWlmIChjcnRjLT5jb25maWctPmRpdGhlciAmJiBjcnRjLT5jb25maWctPnBpcGVfYnBw ID09IDE4KQo+ICAJCQl0ZW1wIHw9IExWRFNfRU5BQkxFX0RJVEhFUjsKPiAgCQllbHNlCj4gIAkJ CXRlbXAgJj0gfkxWRFNfRU5BQkxFX0RJVEhFUjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zl cmxheS5jCj4gaW5kZXggOTczYzlkZS4uZjkzZGZjMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMKPiBAQCAtODU2LDcgKzg1Niw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfb3Zl cmxheV9wb3NzaWJsZV9vbl9jcnRjKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8qIGNhbid0IHVzZSB0aGUgb3ZlcmxheSB3aXRoIGRv dWJsZSB3aWRlIHBpcGUgKi8KPiAtCWlmIChjcnRjLT5jb25maWcuZG91YmxlX3dpZGUpCj4gKwlp ZiAoY3J0Yy0+Y29uZmlnLT5kb3VibGVfd2lkZSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4g IAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA0N2IyM2I3Li4yMmU0 OWY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTU3NCw3ICs1NzQsNyBAQCB2 b2lkIGludGVsX3VwZGF0ZV9mYmMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJZmIgPSBjcnRjLT5wcmltYXJ5LT5mYjsKPiAg CW9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gLQlhZGp1c3RlZF9tb2RlID0gJmludGVsX2NydGMt PmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlhZGp1c3RlZF9tb2RlID0gJmludGVsX2Ny dGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCWlmIChpOTE1LmVuYWJsZV9m YmMgPCAwKSB7Cj4gIAkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfQ0hJUF9E RUZBVUxUKSkKPiBAQCAtNjA0LDggKzYwNCw4IEBAIHZvaWQgaW50ZWxfdXBkYXRlX2ZiYyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCW1heF93aWR0aCA9IDIwNDg7Cj4gIAkJbWF4X2hlaWdo dCA9IDE1MzY7Cj4gIAl9Cj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgPiBt YXhfd2lkdGggfHwKPiAtCSAgICBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCA+IG1heF9o ZWlnaHQpIHsKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgPiBtYXhfd2lk dGggfHwKPiArCSAgICBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggPiBtYXhfaGVpZ2h0 KSB7Cj4gIAkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfTU9ERV9UT09fTEFS R0UpKQo+ICAJCQlEUk1fREVCVUdfS01TKCJtb2RlIHRvbyBsYXJnZSBmb3IgY29tcHJlc3Npb24s IGRpc2FibGluZ1xuIik7Cj4gIAkJZ290byBvdXRfZGlzYWJsZTsKPiBAQCAtMTE1Nyw3ICsxMTU3 LDcgQEAgc3RhdGljIHZvaWQgcGluZXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51 c2VkX2NydGMpCj4gIAkJaW50IHBpeGVsX3NpemUgPSBjcnRjLT5wcmltYXJ5LT5mYi0+Yml0c19w ZXJfcGl4ZWwgLyA4Owo+ICAJCWludCBjbG9jazsKPiAgCj4gLQkJYWRqdXN0ZWRfbW9kZSA9ICZ0 b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCWFkanVz dGVkX21vZGUgPSAmdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gIAkJY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAKPiAgCQkvKiBE aXNwbGF5IFNSICovCj4gQEAgLTEyMjYsMTAgKzEyMjYsMTAgQEAgc3RhdGljIGJvb2wgZzR4X2Nv bXB1dGVfd20wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJ fQo+ICAKPiAtCWFkanVzdGVkX21vZGUgPSAmdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLmJh c2UuYWRqdXN0ZWRfbW9kZTsKPiArCWFkanVzdGVkX21vZGUgPSAmdG9faW50ZWxfY3J0YyhjcnRj KS0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAljbG9jayA9IGFkanVzdGVkX21vZGUt PmNydGNfY2xvY2s7Cj4gIAlodG90YWwgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsKPiAt CWhkaXNwbGF5ID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLnBpcGVfc3JjX3c7Cj4gKwlo ZGlzcGxheSA9IHRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+cGlwZV9zcmNfdzsKPiAgCXBp eGVsX3NpemUgPSBjcnRjLT5wcmltYXJ5LT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ICAKPiAg CS8qIFVzZSB0aGUgc21hbGwgYnVmZmVyIG1ldGhvZCB0byBjYWxjdWxhdGUgcGxhbmUgd2F0ZXJt YXJrICovCj4gQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgc3RhdGljIGJvb2wgZzR4X2NvbXB1dGVf c3J3bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJfQo+ICAKPiAgCWNydGMgPSBpbnRlbF9n ZXRfY3J0Y19mb3JfcGxhbmUoZGV2LCBwbGFuZSk7Cj4gLQlhZGp1c3RlZF9tb2RlID0gJnRvX2lu dGVsX2NydGMoY3J0YyktPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlhZGp1c3RlZF9t b2RlID0gJnRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ ICAJY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAJaHRvdGFsID0gYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19odG90YWw7Cj4gLQloZGlzcGxheSA9IHRvX2ludGVsX2NydGMoY3J0Yykt PmNvbmZpZy5waXBlX3NyY193Owo+ICsJaGRpc3BsYXkgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5j b25maWctPnBpcGVfc3JjX3c7Cj4gIAlwaXhlbF9zaXplID0gY3J0Yy0+cHJpbWFyeS0+ZmItPmJp dHNfcGVyX3BpeGVsIC8gODsKPiAgCj4gIAlsaW5lX3RpbWVfdXMgPSBtYXgoaHRvdGFsICogMTAw MCAvIGNsb2NrLCAxKTsKPiBAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgc3RhdGljIGJvb2wgdmx2X2Nv bXB1dGVfZHJhaW5fbGF0ZW5jeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlpbnQgZW50cmllczsKPiAtCWludCBj bG9jayA9IHRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19jbG9jazsKPiArCWludCBjbG9jayA9IHRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gIAo+ICAJaWYgKFdBUk4oY2xvY2sgPT0gMCwg IlBpeGVsIGNsb2NrIGlzIHplcm8hXG4iKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTE2Nzcs MTAgKzE2NzcsMTAgQEAgc3RhdGljIHZvaWQgaTk2NV91cGRhdGVfd20oc3RydWN0IGRybV9jcnRj ICp1bnVzZWRfY3J0YykKPiAgCQkvKiBzZWxmLXJlZnJlc2ggaGFzIG11Y2ggaGlnaGVyIGxhdGVu Y3kgKi8KPiAgCQlzdGF0aWMgY29uc3QgaW50IHNyX2xhdGVuY3lfbnMgPSAxMjAwMDsKPiAgCQlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJCSZ0b19p bnRlbF9jcnRjKGNydGMpLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCQkmdG9faW50 ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAkJaW50IGNsb2Nr ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKPiAgCQlpbnQgaHRvdGFsID0gYWRqdXN0ZWRf bW9kZS0+Y3J0Y19odG90YWw7Cj4gLQkJaW50IGhkaXNwbGF5ID0gdG9faW50ZWxfY3J0YyhjcnRj KS0+Y29uZmlnLnBpcGVfc3JjX3c7Cj4gKwkJaW50IGhkaXNwbGF5ID0gdG9faW50ZWxfY3J0Yyhj cnRjKS0+Y29uZmlnLT5waXBlX3NyY193Owo+ICAJCWludCBwaXhlbF9zaXplID0gY3J0Yy0+cHJp bWFyeS0+ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiAgCQl1bnNpZ25lZCBsb25nIGxpbmVfdGlt ZV91czsKPiAgCQlpbnQgZW50cmllczsKPiBAQCAtMTc2Miw3ICsxNzYyLDcgQEAgc3RhdGljIHZv aWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCQlpZiAo SVNfR0VOMihkZXYpKQo+ICAJCQljcHAgPSA0Owo+ICAKPiAtCQlhZGp1c3RlZF9tb2RlID0gJnRv X2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJYWRqdXN0 ZWRfbW9kZSA9ICZ0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZTsKPiAgCQlwbGFuZWFfd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19jbG9jaywKPiAgCQkJCQkgICAgICAgd21faW5mbywgZmlmb19zaXplLCBjcHAsCj4gIAkJCQkJ ICAgICAgIHBlc3NpbWFsX2xhdGVuY3lfbnMpOwo+IEBAIC0xNzg0LDcgKzE3ODQsNyBAQCBzdGF0 aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ICAJ CWlmIChJU19HRU4yKGRldikpCj4gIAkJCWNwcCA9IDQ7Cj4gIAo+IC0JCWFkanVzdGVkX21vZGUg PSAmdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQlh ZGp1c3RlZF9tb2RlID0gJnRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICAJCXBsYW5lYl93bSA9IGludGVsX2NhbGN1bGF0ZV93bShhZGp1c3RlZF9tb2Rl LT5jcnRjX2Nsb2NrLAo+ICAJCQkJCSAgICAgICB3bV9pbmZvLCBmaWZvX3NpemUsIGNwcCwKPiAg CQkJCQkgICAgICAgcGVzc2ltYWxfbGF0ZW5jeV9ucyk7Cj4gQEAgLTE4MjMsMTAgKzE4MjMsMTAg QEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0 YykKPiAgCQkvKiBzZWxmLXJlZnJlc2ggaGFzIG11Y2ggaGlnaGVyIGxhdGVuY3kgKi8KPiAgCQlz dGF0aWMgY29uc3QgaW50IHNyX2xhdGVuY3lfbnMgPSA2MDAwOwo+ICAJCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJJnRvX2ludGVsX2NydGMoZW5h YmxlZCktPmNvbmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCSZ0b19pbnRlbF9jcnRjKGVu YWJsZWQpLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAgCQlpbnQgY2xvY2sgPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAJCWludCBodG90YWwgPSBhZGp1c3RlZF9tb2RlLT5j cnRjX2h0b3RhbDsKPiAtCQlpbnQgaGRpc3BsYXkgPSB0b19pbnRlbF9jcnRjKGVuYWJsZWQpLT5j b25maWcucGlwZV9zcmNfdzsKPiArCQlpbnQgaGRpc3BsYXkgPSB0b19pbnRlbF9jcnRjKGVuYWJs ZWQpLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gIAkJaW50IHBpeGVsX3NpemUgPSBlbmFibGVkLT5w cmltYXJ5LT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ICAJCXVuc2lnbmVkIGxvbmcgbGluZV90 aW1lX3VzOwo+ICAJCWludCBlbnRyaWVzOwo+IEBAIC0xODc5LDcgKzE4NzksNyBAQCBzdGF0aWMg dm9pZCBpODQ1X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ICAJaWYg KGNydGMgPT0gTlVMTCkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JYWRqdXN0ZWRfbW9kZSA9ICZ0b19p bnRlbF9jcnRjKGNydGMpLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJYWRqdXN0ZWRf bW9kZSA9ICZ0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsK PiAgCXBsYW5lYV93bSA9IGludGVsX2NhbGN1bGF0ZV93bShhZGp1c3RlZF9tb2RlLT5jcnRjX2Ns b2NrLAo+ICAJCQkJICAgICAgICZpODQ1X3dtX2luZm8sCj4gIAkJCQkgICAgICAgZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZShkZXYsIDApLAo+IEBAIC0xODk4LDE3ICsxODk4LDE3IEBA IHN0YXRpYyB1aW50MzJfdCBpbGtfcGlwZV9waXhlbF9yYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gIAl1aW50MzJfdCBwaXhlbF9yYXRlOwo+ICAKPiAtCXBpeGVsX3JhdGUgPSBpbnRlbF9j cnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwlwaXhlbF9yYXRl ID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAg Cj4gIAkvKiBXZSBvbmx5IHVzZSBJRi1JRCBpbnRlcmxhY2luZy4gSWYgd2UgZXZlciB1c2UgUEYt SUQgd2UnbGwgbmVlZCB0bwo+ICAJICogYWRqdXN0IHRoZSBwaXhlbF9yYXRlIGhlcmUuICovCj4g IAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy5wY2hfcGZpdC5lbmFibGVkKSB7Cj4gKwlpZiAo aW50ZWxfY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7Cj4gIAkJdWludDY0X3QgcGlw ZV93LCBwaXBlX2gsIHBmaXRfdywgcGZpdF9oOwo+IC0JCXVpbnQzMl90IHBmaXRfc2l6ZSA9IGlu dGVsX2NydGMtPmNvbmZpZy5wY2hfcGZpdC5zaXplOwo+ICsJCXVpbnQzMl90IHBmaXRfc2l6ZSA9 IGludGVsX2NydGMtPmNvbmZpZy0+cGNoX3BmaXQuc2l6ZTsKPiAgCj4gLQkJcGlwZV93ID0gaW50 ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3c7Cj4gLQkJcGlwZV9oID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLnBpcGVfc3JjX2g7Cj4gKwkJcGlwZV93ID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3Ny Y193Owo+ICsJCXBpcGVfaCA9IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaDsKPiAgCQlw Zml0X3cgPSAocGZpdF9zaXplID4+IDE2KSAmIDB4RkZGRjsKPiAgCQlwZml0X2ggPSBwZml0X3Np emUgJiAweEZGRkY7Cj4gIAkJaWYgKHBpcGVfdyA8IHBmaXRfdykKPiBAQCAtMjI2MSw3ICsyMjYx LDcgQEAgaHN3X2NvbXB1dGVfbGluZXRpbWVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUgPSAmaW50ZWxfY3J0Yy0+Y29uZmlnLmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlID0gJmludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICAJdTMyIGxpbmV0aW1lLCBpcHNfbGluZXRpbWU7Cj4gIAo+ICAJaWYgKCFpbnRl bF9jcnRjX2FjdGl2ZShjcnRjKSkKPiBAQCAtMjUyMSwxMSArMjUyMSwxMSBAQCBzdGF0aWMgdm9p ZCBpbGtfY29tcHV0ZV93bV9wYXJhbWV0ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQly ZXR1cm47Cj4gIAo+ICAJcC0+YWN0aXZlID0gdHJ1ZTsKPiAtCXAtPnBpcGVfaHRvdGFsID0gaW50 ZWxfY3J0Yy0+Y29uZmlnLmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbDsKPiArCXAtPnBp cGVfaHRvdGFsID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19o dG90YWw7Cj4gIAlwLT5waXhlbF9yYXRlID0gaWxrX3BpcGVfcGl4ZWxfcmF0ZShkZXYsIGNydGMp Owo+ICAJcC0+cHJpLmJ5dGVzX3Blcl9waXhlbCA9IGNydGMtPnByaW1hcnktPmZiLT5iaXRzX3Bl cl9waXhlbCAvIDg7Cj4gIAlwLT5jdXIuYnl0ZXNfcGVyX3BpeGVsID0gNDsKPiAtCXAtPnByaS5o b3Jpel9waXhlbHMgPSBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfdzsKPiArCXAtPnByaS5o b3Jpel9waXhlbHMgPSBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gIAlwLT5jdXIu aG9yaXpfcGl4ZWxzID0gaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoOwo+ICAJLyogVE9ETzogZm9y IG5vdywgYXNzdW1lIHByaW1hcnkgYW5kIGN1cnNvciBwbGFuZXMgYXJlIGFsd2F5cyBlbmFibGVk LiAqLwo+ICAJcC0+cHJpLmVuYWJsZWQgPSB0cnVlOwo+IEBAIC0zMjY1LDggKzMyNjUsOCBAQCBz dGF0aWMgdm9pZCBza2xfY29tcHV0ZV93bV9waXBlX3BhcmFtZXRlcnMoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAKPiAgCXAtPmFjdGl2ZSA9IGludGVsX2NydGNfYWN0aXZlKGNydGMpOwo+ICAJ aWYgKHAtPmFjdGl2ZSkgewo+IC0JCXAtPnBpcGVfaHRvdGFsID0gaW50ZWxfY3J0Yy0+Y29uZmln LmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbDsKPiAtCQlwLT5waXhlbF9yYXRlID0gc2ts X3BpcGVfcGl4ZWxfcmF0ZSgmaW50ZWxfY3J0Yy0+Y29uZmlnKTsKPiArCQlwLT5waXBlX2h0b3Rh bCA9IGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOwo+ ICsJCXAtPnBpeGVsX3JhdGUgPSBza2xfcGlwZV9waXhlbF9yYXRlKGludGVsX2NydGMtPmNvbmZp Zyk7Cj4gIAo+ICAJCS8qCj4gIAkJICogRm9yIG5vdywgYXNzdW1lIHByaW1hcnkgYW5kIGN1cnNv ciBwbGFuZXMgYXJlIGFsd2F5cyBlbmFibGVkLgo+IEBAIC0zMjc0LDggKzMyNzQsOCBAQCBzdGF0 aWMgdm9pZCBza2xfY29tcHV0ZV93bV9waXBlX3BhcmFtZXRlcnMoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCXAtPnBsYW5lWzBdLmVuYWJsZWQgPSB0cnVlOwo+ICAJCXAtPnBsYW5lWzBdLmJ5 dGVzX3Blcl9waXhlbCA9Cj4gIAkJCWNydGMtPnByaW1hcnktPmZiLT5iaXRzX3Blcl9waXhlbCAv IDg7Cj4gLQkJcC0+cGxhbmVbMF0uaG9yaXpfcGl4ZWxzID0gaW50ZWxfY3J0Yy0+Y29uZmlnLnBp cGVfc3JjX3c7Cj4gLQkJcC0+cGxhbmVbMF0udmVydF9waXhlbHMgPSBpbnRlbF9jcnRjLT5jb25m aWcucGlwZV9zcmNfaDsKPiArCQlwLT5wbGFuZVswXS5ob3Jpel9waXhlbHMgPSBpbnRlbF9jcnRj LT5jb25maWctPnBpcGVfc3JjX3c7Cj4gKwkJcC0+cGxhbmVbMF0udmVydF9waXhlbHMgPSBpbnRl bF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2g7Cj4gIAo+ICAJCXAtPmN1cnNvci5lbmFibGVkID0g dHJ1ZTsKPiAgCQlwLT5jdXJzb3IuYnl0ZXNfcGVyX3BpeGVsID0gNDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYwo+IGluZGV4IGI4NzEzZTQuLjQ5NGIxMzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYwo+IEBAIC03OSw4ICs3OSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93cml0 ZV92c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKPiAtCXUzMiBjdGxf cmVnID0gSFNXX1RWSURFT19ESVBfQ1RMKGNydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2Rlcik7Cj4g LQl1MzIgZGF0YV9yZWcgPSBIU1dfVFZJREVPX0RJUF9WU0NfREFUQShjcnRjLT5jb25maWcuY3B1 X3RyYW5zY29kZXIpOwo+ICsJdTMyIGN0bF9yZWcgPSBIU1dfVFZJREVPX0RJUF9DVEwoY3J0Yy0+ Y29uZmlnLT5jcHVfdHJhbnNjb2Rlcik7Cj4gKwl1MzIgZGF0YV9yZWcgPSBIU1dfVFZJREVPX0RJ UF9WU0NfREFUQShjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPiAgCXVpbnQzMl90ICpk YXRhID0gKHVpbnQzMl90ICopIHZzY19wc3I7Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAgCj4gQEAg LTI3NCwxMyArMjc0LDEzIEBAIHN0YXRpYyBib29sIGludGVsX3Bzcl9tYXRjaF9jb25kaXRpb25z KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpZiAoSVNfQlJPQURXRUxMKGRldikpCj4g IAkJZ290byBvdXQ7Cj4gIAo+IC0JaWYgKEk5MTVfUkVBRChIU1dfU1RFUkVPXzNEX0NUTChpbnRl bF9jcnRjLT5jb25maWcuY3B1X3RyYW5zY29kZXIpKSAmCj4gKwlpZiAoSTkxNV9SRUFEKEhTV19T VEVSRU9fM0RfQ1RMKGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpKSAmCj4gIAkg ICAgUzNEX0VOQUJMRSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRpb24gZmFpbGVk OiBTdGVyZW8gM0QgaXMgRW5hYmxlZFxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAK PiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7Cj4gIAkJRFJN X0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IEludGVybGFjZWQgaXMgRW5hYmxlZFxu Iik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMK PiBpbmRleCBlNGQ1ZGE1Li44YzhkODA3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nkdm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8u Ywo+IEBAIC0xMDA3LDcgKzEwMDcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX3NldF9hdmlf aW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAo+ICAJfQo+ICAKPiAgCWlm IChpbnRlbF9zZHZvLT5yZ2JfcXVhbnRfcmFuZ2Vfc2VsZWN0YWJsZSkgewo+IC0JCWlmIChpbnRl bF9jcnRjLT5jb25maWcubGltaXRlZF9jb2xvcl9yYW5nZSkKPiArCQlpZiAoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICAJCQlmcmFtZS5hdmkucXVhbnRpemF0aW9u X3JhbmdlID0KPiAgCQkJCUhETUlfUVVBTlRJWkFUSU9OX1JBTkdFX0xJTUlURUQ7Cj4gIAkJZWxz ZQo+IEBAIC0xMTgxLDggKzExODEsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFi bGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0Yyk7Cj4g IAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGMtPmNv bmZpZy5iYXNlLmFkanVzdGVkX21vZGU7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSA9ICZjcnRjLT5jb25maWcuYmFzZS5tb2RlOwo+ICsJCSZjcnRjLT5jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGMtPmNv bmZpZy0+YmFzZS5tb2RlOwo+ICAJc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8gPSB0b19z ZHZvKGludGVsX2VuY29kZXIpOwo+ICAJdTMyIHNkdm94Owo+ICAJc3RydWN0IGludGVsX3Nkdm9f aW5fb3V0X21hcCBpbl9vdXQ7Cj4gQEAgLTEyMjQsNyArMTIyNCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikK PiAgCWlmICghaW50ZWxfc2R2b19zZXRfdGFyZ2V0X2lucHV0KGludGVsX3Nkdm8pKQo+ICAJCXJl dHVybjsKPiAgCj4gLQlpZiAoY3J0Yy0+Y29uZmlnLmhhc19oZG1pX3NpbmspIHsKPiArCWlmIChj cnRjLT5jb25maWctPmhhc19oZG1pX3NpbmspIHsKPiAgCQlpbnRlbF9zZHZvX3NldF9lbmNvZGUo aW50ZWxfc2R2bywgU0RWT19FTkNPREVfSERNSSk7Cj4gIAkJaW50ZWxfc2R2b19zZXRfY29sb3Jp bWV0cnkoaW50ZWxfc2R2bywKPiAgCQkJCQkgICBTRFZPX0NPTE9SSU1FVFJZX1JHQjI1Nik7Cj4g QEAgLTEyNDQsNyArMTI0NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgCQlEUk1fSU5GTygiU2V0dGlu ZyBpbnB1dCB0aW1pbmdzIG9uICVzIGZhaWxlZFxuIiwKPiAgCQkJIFNEVk9fTkFNRShpbnRlbF9z ZHZvKSk7Cj4gIAo+IC0Jc3dpdGNoIChjcnRjLT5jb25maWcucGl4ZWxfbXVsdGlwbGllcikgewo+ ICsJc3dpdGNoIChjcnRjLT5jb25maWctPnBpeGVsX211bHRpcGxpZXIpIHsKPiAgCWRlZmF1bHQ6 Cj4gIAkJV0FSTigxLCAidW5rbm93biBwaXhlbCBtdXRsaXBsZXIgc3BlY2lmaWVkXG4iKTsKPiAg CWNhc2UgMTogcmF0ZSA9IFNEVk9fQ0xPQ0tfUkFURV9NVUxUXzFYOyBicmVhazsKPiBAQCAtMTI1 OSw3ICsxMjU5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19wcmVfZW5hYmxlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAJCS8qIFRoZSByZWFsIG1vZGUgcG9sYXJp dHkgaXMgc2V0IGJ5IHRoZSBTRFZPIGNvbW1hbmRzLCB1c2luZwo+ICAJCSAqIHN0cnVjdCBpbnRl bF9zZHZvX2R0ZC4gKi8KPiAgCQlzZHZveCA9IFNEVk9fVlNZTkNfQUNUSVZFX0hJR0ggfCBTRFZP X0hTWU5DX0FDVElWRV9ISUdIOwo+IC0JCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmIGNydGMt PmNvbmZpZy5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJCWlmICghSEFTX1BDSF9TUExJVChkZXYp ICYmIGNydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiAgCQkJc2R2b3ggfD0gSERN SV9DT0xPUl9SQU5HRV8xNl8yMzU7Cj4gIAkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkK PiAgCQkJc2R2b3ggfD0gU0RWT19CT1JERVJfRU5BQkxFOwo+IEBAIC0xMjg5LDcgKzEyODksNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIg KmludGVsX2VuY29kZXIpCj4gIAl9IGVsc2UgaWYgKElTX0k5NDVHKGRldikgfHwgSVNfSTk0NUdN KGRldikgfHwgSVNfRzMzKGRldikpIHsKPiAgCQkvKiBkb25lIGluIGNydGNfbW9kZV9zZXQgYXMg aXQgbGl2ZXMgaW5zaWRlIHRoZSBkcGxsIHJlZ2lzdGVyICovCj4gIAl9IGVsc2Ugewo+IC0JCXNk dm94IHw9IChjcnRjLT5jb25maWcucGl4ZWxfbXVsdGlwbGllciAtIDEpCj4gKwkJc2R2b3ggfD0g KGNydGMtPmNvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciAtIDEpCj4gIAkJCTw8IFNEVk9fUE9SVF9N VUxUSVBMWV9TSElGVDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBpbmRleCA0NTRiMjVkLi45MzdiZDcyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgaW50IHVzZWNzX3RvX3NjYW5saW5lcyhj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgaW50IHVzZWNzKQo+ICBib29sIGlu dGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCB1aW50MzJfdCAq c3RhcnRfdmJsX2NvdW50KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRj LT5jb25maWcuYmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAlsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZm aWVzX3RpbWVvdXQoMSk7Cj4gIAlpbnQgc2NhbmxpbmUsIG1pbiwgbWF4LCB2Ymxhbmtfc3RhcnQ7 Cj4gLS0gCj4gMS45LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAoKLS0gCk1hdHQgUm9wZXIKR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIK SW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50CkludGVsIENvcnBvcmF0aW9uCig5 MTYpIDM1Ni0yNzk1Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==