From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH RFC 06/19] drm/bridge: Create drm_bridge_chain_xx() wrappers Date: Wed, 21 Aug 2019 17:45:04 +0300 Message-ID: <20190821144504.GF5433@pendragon.ideasonboard.com> References: <20190808151150.16336-1-boris.brezillon@collabora.com> <20190808151150.16336-7-boris.brezillon@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95B508999A for ; Wed, 21 Aug 2019 14:45:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190808151150.16336-7-boris.brezillon@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Brezillon Cc: Jernej Skrabec , Neil Armstrong , Jonas Karlman , Seung-Woo Kim , dri-devel@lists.freedesktop.org, Kyungmin Park , Thierry Reding , Chris Healy , kernel@collabora.com, Sam Ravnborg List-Id: dri-devel@lists.freedesktop.org SGkgQm9yaXMsCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIFRodSwgQXVnIDA4LCAyMDE5 IGF0IDA1OjExOjM3UE0gKzAyMDAsIEJvcmlzIEJyZXppbGxvbiB3cm90ZToKPiBEUk0gYnJpZGdl cyBzaG91bGQgbm90IGJlIG9wZXJhdGVkIGluZGVwZW5kZW50bHkuIExldCdzIHJlbmFtZSB0aGUK PiBkcm1fYnJpZGdlX3h4eCgpIGhlbHBlcnMgdGhhdCB0YWtlIHRoZSBmaXJzdCBicmlkZ2Ugb2Yg dGhlIGNoYWluIGFuZAo+IGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgY2hhaW4gaW50byBkcm1fYnJp ZGdlX2NoYWluX3h4KCkuIFdlIGFsc28gcGFzcwo+IGl0IHRoZSBlbmNvZGVyIGNvbnRhaW5pbmcg dGhlIGJyaWRnZSBjaGFpbiBpbnN0ZWFkIG9mIHRoZSBkZXJlZmVyZW5jaW5nCj4gZW5jb2Rlci0+ YnJpZGdlLgoKSSdtIG5vdCBzdXJlIGFib3V0IHRoaXMuIEkgZG8gYWdyZWUgdGhhdCB0aGUgaGVs cGVycyBvcGVyYXRlIG9uIGEgY2hhaW4sCmJ1dCBJIHRoaW5rIHRoZXkncmUgdXNlIGZvciBjYWxs aW5nIHRoZW0gb24gYW55IGJyaWRnZSwgZXNwZWNpYWxseSBpbgpjb25qdW5jdGlvbiB3aXRoIHlv dXIgd29yay4gVGhlIHdheSBJIHNlZSBpdCBpcyB0aGF0IHdoZW4gYSBicmlkZ2UgaW4KdGhlIGNo YWluIG5lZWRzIGEgY3VzdG9tIGVuYWJsZS9kaXNhYmxlIHNlcXVlbmNlIChmbGFnZ2VkIGJ5IHNv bWUga2luZApvZiBmbGFnIGluIHRoZSBicmlkZ2Ugc3RydWN0dXJlKSwgdGhlIGhlbHBlcnMgd2ls bCBub3QgYXV0b21hdGljYWxseQpwcm9wYWdhdGUgdGhlIGNhbGxzIGRvd24gdGhlIGNoYWluLCBh bmQgbGV0IHRoZSBicmlkZ2UgY2FsbCB0aGUgcHJlL3Bvc3QKZW5hYmxlL2Rpc2FibGUgb3BlcmF0 aW9ucyBvbiB0aGUgZG93bnN0cmVhbSBicmlkZ2UuIFRoaXMgbWVhbnMgdGhhdAp0aG9zZSBicmlk Z2VzIHdpdGggc3BlY2lhbCBuZWVkcyB3aWxsIGhhdmUgdG8gY2FsbCB0aGUgaGVscGVycyBvbiB0 aGUKbmV4dCBicmlkZ2UgZG93biB0aGUgY2hhaW4sIGFuZCB0aHVzIHJlcXVpcmUga2VlcGluZyB0 aGUgYWJpbGl0eSB0byBkbwpzby4KCldlIGNvdWxkIG9mIGNvdXJzZSBwcm9wb3NlIHR3byBzZXRz IG9mIGhlbHBlcnMsIG9uZSB0YWtpbmcgYSBicmlkZ2UKcG9pbnRlciwgYW5kIGFub3RoZXIgb25l IHRha2luZyBhbiBlbmNvZGVyIHBvaW50ZXIsIGJ1dCBJIHRoaW5rIGl0J3MgYQpiaXQgb3Zlcmtp bGwuIEVzcGVjaWFsbHkgaWYgeW91IGNvbnNpZGVyIG15IGNvbW1lbnRzIGVhcmxpZXIgaW4gdGhp cwpzZXJpZXMgd2hlcmUgSSBwcm9wb3NlIG1vdmluZyB0aGUgY3VzdG9tIHNlcXVlbmNlIGZlYXR1 cmUgdG8gYnJpZGdlcwppbnN0ZWFkIG9mIGVuY29kZXJzLCBJIGRvbid0IHRoaW5rIHRoaXMgcGF0 Y2ggd2lsbCBiZSBuZWVkZWQuCgo+IFNpZ25lZC1vZmYtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9y aXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jICAgICB8ICAxOSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRn ZS5jICAgICAgICAgICAgfCAzNjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYyAgICAgICB8ICAyNyArLQo+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX3Byb2JlX2hlbHBlci5jICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX2RzaS5jIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfaGRtaS5jICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kc2ku YyAgICAgICAgICAgfCAgIDggKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oICAgICAgICAg ICAgICAgIHwgIDY0ICsrKy0tCj4gIDggZmlsZXMgY2hhbmdlZCwgMjczIGluc2VydGlvbnMoKyks IDIyNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGlu ZGV4IDE1ZWE2MTg3NzEyMi4uMGRlYjU0MDk5NTcwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWNfaGVscGVyLmMKPiBAQCAtNDQ1LDggKzQ0NSw5IEBAIG1vZGVfZml4dXAoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCWVuY29kZXIgPSBuZXdfY29ubl9zdGF0ZS0+YmVzdF9l bmNvZGVyOwo+ICAJCWZ1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7Cj4gIAo+IC0JCXJl dCA9IGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5icmlkZ2UsICZuZXdfY3J0Y19zdGF0 ZS0+bW9kZSwKPiAtCQkJCSZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7Cj4gKwkJcmV0 ID0gZHJtX2JyaWRnZV9jaGFpbl9tb2RlX2ZpeHVwKGVuY29kZXIsCj4gKwkJCQkJJm5ld19jcnRj X3N0YXRlLT5tb2RlLAo+ICsJCQkJCSZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7Cj4g IAkJaWYgKCFyZXQpIHsKPiAgCQkJRFJNX0RFQlVHX0FUT01JQygiQnJpZGdlIGZpeHVwIGZhaWxl ZFxuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC01MTEsNyArNTEyLDcgQEAgc3RhdGlj IGVudW0gZHJtX21vZGVfc3RhdHVzIG1vZGVfdmFsaWRfcGF0aChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gZHJtX2Jy aWRnZV9tb2RlX3ZhbGlkKGVuY29kZXItPmJyaWRnZSwgbW9kZSk7Cj4gKwlyZXQgPSBkcm1fYnJp ZGdlX2NoYWluX21vZGVfdmFsaWQoZW5jb2RlciwgbW9kZSk7Cj4gIAlpZiAocmV0ICE9IE1PREVf T0spIHsKPiAgCQlEUk1fREVCVUdfQVRPTUlDKCJbQlJJREdFXSBtb2RlX3ZhbGlkKCkgZmFpbGVk XG4iKTsKPiAgCQlyZXR1cm4gcmV0Owo+IEBAIC0xMDMxLDcgKzEwMzIsNyBAQCBkaXNhYmxlX291 dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9s ZF9zdGF0ZSkKPiAgCQkgKiBpdCBhd2F5KSwgc28gd2Ugd29uJ3QgY2FsbCBkaXNhYmxlIGhvb2tz IHR3aWNlLgo+ICAJCSAqLwo+ICAJCWlmICghZW5jb2Rlci0+Y3VzdG9tX2JyaWRnZV9lbmFibGVf ZGlzYWJsZV9zZXEpCj4gLQkJCWRybV9hdG9taWNfYnJpZGdlX2Rpc2FibGUoZW5jb2Rlci0+YnJp ZGdlLCBvbGRfc3RhdGUpOwo+ICsJCQlkcm1fYXRvbWljX2JyaWRnZV9jaGFpbl9kaXNhYmxlKGVu Y29kZXIsIG9sZF9zdGF0ZSk7Cj4gIAo+ICAJCS8qIFJpZ2h0IGZ1bmN0aW9uIGRlcGVuZHMgdXBv biB0YXJnZXQgc3RhdGUuICovCj4gIAkJaWYgKGZ1bmNzKSB7Cj4gQEAgLTEwNDYsOCArMTA0Nyw4 IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICAJCX0KPiAgCj4gIAkJaWYgKCFlbmNvZGVyLT5jdXN0 b21fYnJpZGdlX2VuYWJsZV9kaXNhYmxlX3NlcSkKPiAtCQkJZHJtX2F0b21pY19icmlkZ2VfcG9z dF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSwKPiAtCQkJCQkJICAgICAgIG9sZF9zdGF0ZSk7Cj4g KwkJCWRybV9hdG9taWNfYnJpZGdlX2NoYWluX3Bvc3RfZGlzYWJsZShlbmNvZGVyLAo+ICsJCQkJ CQkJICAgICBvbGRfc3RhdGUpOwo+ICAJfQo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19jcnRjX2lu X3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBp KSB7Cj4gQEAgLTEyMjgsNyArMTIyOSw3IEBAIGNydGNfc2V0X21vZGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgCQkJZnVuY3Mt Pm1vZGVfc2V0KGVuY29kZXIsIG1vZGUsIGFkanVzdGVkX21vZGUpOwo+ICAJCX0KPiAgCj4gLQkJ ZHJtX2JyaWRnZV9tb2RlX3NldChlbmNvZGVyLT5icmlkZ2UsIG1vZGUsIGFkanVzdGVkX21vZGUp Owo+ICsJCWRybV9icmlkZ2VfY2hhaW5fbW9kZV9zZXQoZW5jb2RlciwgbW9kZSwgYWRqdXN0ZWRf bW9kZSk7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTEzNDYsNyArMTM0Nyw3IEBAIHZvaWQgZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIGVuYWJsZSBob29rcyB0d2ljZS4K PiAgCQkgKi8KPiAgCQlpZiAoIWVuY29kZXItPmN1c3RvbV9icmlkZ2VfZW5hYmxlX2Rpc2FibGVf c2VxKQo+IC0JCQlkcm1fYXRvbWljX2JyaWRnZV9wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSwg b2xkX3N0YXRlKTsKPiArCQkJZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcHJlX2VuYWJsZShlbmNv ZGVyLCBvbGRfc3RhdGUpOwo+ICAKPiAgCQlpZiAoZnVuY3MpIHsKPiAgCQkJaWYgKGZ1bmNzLT5h dG9taWNfZW5hYmxlKQo+IEBAIC0xMzU4LDcgKzEzNTksNyBAQCB2b2lkIGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl9 Cj4gIAo+ICAJCWlmICghZW5jb2Rlci0+Y3VzdG9tX2JyaWRnZV9lbmFibGVfZGlzYWJsZV9zZXEp Cj4gLQkJCWRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UsIG9sZF9zdGF0 ZSk7Cj4gKwkJCWRybV9hdG9taWNfYnJpZGdlX2NoYWluX2VuYWJsZShlbmNvZGVyLCBvbGRfc3Rh dGUpOwo+ICAJfQo+ICAKPiAgCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF93cml0ZWJhY2tzKGRl diwgb2xkX3N0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2Uu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiBpbmRleCBjYmE1MzdjOTllNDMuLjJi ZjlhMTllMTFiZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+IEBAIC0xNzEsMjQgKzE3MSw5IEBA IHZvaWQgZHJtX2JyaWRnZV9kZXRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgICog Rm9yIGRldGFpbGVkIHNwZWNpZmljYXRpb24gb2YgdGhlIGJyaWRnZSBjYWxsYmFja3Mgc2VlICZk cm1fYnJpZGdlX2Z1bmNzLgo+ICAgKi8KPiAgCj4gLS8qKgo+IC0gKiBkcm1fYnJpZGdlX21vZGVf Zml4dXAgLSBmaXh1cCBwcm9wb3NlZCBtb2RlIGZvciBhbGwgYnJpZGdlcyBpbiB0aGUKPiAtICoJ CQkgICBlbmNvZGVyIGNoYWluCj4gLSAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVy ZQo+IC0gKiBAbW9kZTogZGVzaXJlZCBtb2RlIHRvIGJlIHNldCBmb3IgdGhlIGJyaWRnZQo+IC0g KiBAYWRqdXN0ZWRfbW9kZTogdXBkYXRlZCBtb2RlIHRoYXQgd29ya3MgZm9yIHRoaXMgYnJpZGdl Cj4gLSAqCj4gLSAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLm1vZGVfZml4dXAgZm9yIGFsbCB0 aGUgYnJpZGdlcyBpbiB0aGUKPiAtICogZW5jb2RlciBjaGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUg Zmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0Lgo+IC0gKgo+IC0gKiBOb3RlOiB0aGUgYnJpZGdlIHBh c3NlZCBzaG91bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCj4gLSAqCj4gLSAq IFJFVFVSTlM6Cj4gLSAqIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZQo+IC0gKi8K PiAtYm9vbCBkcm1fYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwK PiAtCQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gLQkJCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+ICtzdGF0aWMgYm9vbCBkcm1fYnJpZGdl X21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJCSAgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gKwkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlKQo+ICB7Cj4gIAlib29sIHJldCA9IHRydWU7Cj4gIAo+IEBAIC0y MDIsMjUgKzE4NywxMCBAQCBib29sIGRybV9icmlkZ2VfbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlLAo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTChk cm1fYnJpZGdlX21vZGVfZml4dXApOwo+ICAKPiAtLyoqCj4gLSAqIGRybV9icmlkZ2VfbW9kZV92 YWxpZCAtIHZhbGlkYXRlIHRoZSBtb2RlIGFnYWluc3QgYWxsIGJyaWRnZXMgaW4gdGhlCj4gLSAq IAkJCSAgIGVuY29kZXIgY2hhaW4uCj4gLSAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVj dHVyZQo+IC0gKiBAbW9kZTogZGVzaXJlZCBtb2RlIHRvIGJlIHZhbGlkYXRlZAo+IC0gKgo+IC0g KiBDYWxscyAmZHJtX2JyaWRnZV9mdW5jcy5tb2RlX3ZhbGlkIGZvciBhbGwgdGhlIGJyaWRnZXMg aW4gdGhlIGVuY29kZXIKPiAtICogY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGJyaWRn ZSB0byB0aGUgbGFzdC4gSWYgYXQgbGVhc3Qgb25lIGJyaWRnZQo+IC0gKiBkb2VzIG5vdCBhY2Nl cHQgdGhlIG1vZGUgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGVycm9yIGNvZGUuCj4gLSAqCj4g LSAqIE5vdGU6IHRoZSBicmlkZ2UgcGFzc2VkIHNob3VsZCBiZSB0aGUgb25lIGNsb3Nlc3QgdG8g dGhlIGVuY29kZXIuCj4gLSAqCj4gLSAqIFJFVFVSTlM6Cj4gLSAqIE1PREVfT0sgb24gc3VjY2Vz cywgZHJtX21vZGVfc3RhdHVzIEVudW0gZXJyb3IgY29kZSBvbiBmYWlsdXJlCj4gLSAqLwo+IC1l bnVtIGRybV9tb2RlX3N0YXR1cyBkcm1fYnJpZGdlX21vZGVfdmFsaWQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSwKPiAtCQkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSkKPiArc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCj4gK2RybV9icmlkZ2VfbW9kZV92YWxp ZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlKQo+ICB7Cj4gIAllbnVtIGRybV9tb2RlX3N0YXR1cyByZXQgPSBN T0RFX09LOwo+ICAKPiBAQCAtMjM1LDE5ICsyMDUsOCBAQCBlbnVtIGRybV9tb2RlX3N0YXR1cyBk cm1fYnJpZGdlX21vZGVfdmFsaWQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCj4gIAly ZXR1cm4gZHJtX2JyaWRnZV9tb2RlX3ZhbGlkKGJyaWRnZS0+bmV4dCwgbW9kZSk7Cj4gIH0KPiAt RVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX21vZGVfdmFsaWQpOwo+ICAKPiAtLyoqCj4gLSAqIGRy bV9icmlkZ2VfZGlzYWJsZSAtIGRpc2FibGVzIGFsbCBicmlkZ2VzIGluIHRoZSBlbmNvZGVyIGNo YWluCj4gLSAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBD YWxscyAmZHJtX2JyaWRnZV9mdW5jcy5kaXNhYmxlIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4g dGhlIGVuY29kZXIKPiAtICogY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRv IHRoZSBmaXJzdC4gVGhlc2UgYXJlIGNhbGxlZCBiZWZvcmUKPiAtICogY2FsbGluZyB0aGUgZW5j b2RlcidzIHByZXBhcmUgb3AuCj4gLSAqCj4gLSAqIE5vdGU6IHRoZSBicmlkZ2UgcGFzc2VkIHNo b3VsZCBiZSB0aGUgb25lIGNsb3Nlc3QgdG8gdGhlIGVuY29kZXIKPiAtICovCj4gLXZvaWQgZHJt X2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3N0YXRpYyB2b2lk IGRybV9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICB7Cj4gIAlp ZiAoIWJyaWRnZSkKPiAgCQlyZXR1cm47Cj4gQEAgLTI1NywxOSArMjE2LDggQEAgdm9pZCBkcm1f YnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgCWlmIChicmlkZ2Ut PmZ1bmNzLT5kaXNhYmxlKQo+ICAJCWJyaWRnZS0+ZnVuY3MtPmRpc2FibGUoYnJpZGdlKTsKPiAg fQo+IC1FWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfZGlzYWJsZSk7Cj4gIAo+IC0vKioKPiAtICog ZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUgLSBjbGVhbnMgdXAgYWZ0ZXIgZGlzYWJsaW5nIGFsbCBi cmlkZ2VzIGluIHRoZSBlbmNvZGVyIGNoYWluCj4gLSAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9s IHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBDYWxscyAmZHJtX2JyaWRnZV9mdW5jcy5wb3N0X2Rpc2Fi bGUgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUKPiAtICogZW5jb2RlciBjaGFpbiwgc3Rh cnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0LiBUaGVzZSBhcmUgY2FsbGVk Cj4gLSAqIGFmdGVyIGNvbXBsZXRpbmcgdGhlIGVuY29kZXIncyBwcmVwYXJlIG9wLgo+IC0gKgo+ IC0gKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRv IHRoZSBlbmNvZGVyCj4gLSAqLwo+IC12b2lkIGRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3N0YXRpYyB2b2lkIGRybV9icmlkZ2VfcG9zdF9kaXNh YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIHsKPiAgCWlmICghYnJpZGdlKQo+ICAJ CXJldHVybjsKPiBAQCAtMjc5LDIzICsyMjcsMTAgQEAgdm9pZCBkcm1fYnJpZGdlX3Bvc3RfZGlz YWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAKPiAgCWRybV9icmlkZ2VfcG9zdF9k aXNhYmxlKGJyaWRnZS0+bmV4dCk7Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX3Bv c3RfZGlzYWJsZSk7Cj4gIAo+IC0vKioKPiAtICogZHJtX2JyaWRnZV9tb2RlX3NldCAtIHNldCBw cm9wb3NlZCBtb2RlIGZvciBhbGwgYnJpZGdlcyBpbiB0aGUKPiAtICoJCQkgZW5jb2RlciBjaGFp bgo+IC0gKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiAtICogQG1vZGU6IGRl c2lyZWQgbW9kZSB0byBiZSBzZXQgZm9yIHRoZSBicmlkZ2UKPiAtICogQGFkanVzdGVkX21vZGU6 IHVwZGF0ZWQgbW9kZSB0aGF0IHdvcmtzIGZvciB0aGlzIGJyaWRnZQo+IC0gKgo+IC0gKiBDYWxs cyAmZHJtX2JyaWRnZV9mdW5jcy5tb2RlX3NldCBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGluIHRo ZQo+IC0gKiBlbmNvZGVyIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBicmlkZ2UgdG8g dGhlIGxhc3QuCj4gLSAqCj4gLSAqIE5vdGU6IHRoZSBicmlkZ2UgcGFzc2VkIHNob3VsZCBiZSB0 aGUgb25lIGNsb3Nlc3QgdG8gdGhlIGVuY29kZXIKPiAtICovCj4gLXZvaWQgZHJtX2JyaWRnZV9t b2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+IC0JCQkgY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gLQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSkKPiArc3RhdGljIHZvaWQgZHJtX2JyaWRnZV9tb2RlX3NldChzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCj4gKwkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSkKPiAgewo+ICAJaWYgKCFicmlkZ2UpCj4gIAkJcmV0dXJuOwo+IEBAIC0zMDUsMjAgKzI0 MCw4IEBAIHZvaWQgZHJtX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl LAo+ICAKPiAgCWRybV9icmlkZ2VfbW9kZV9zZXQoYnJpZGdlLT5uZXh0LCBtb2RlLCBhZGp1c3Rl ZF9tb2RlKTsKPiAgfQo+IC1FWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfbW9kZV9zZXQpOwo+ICAK PiAtLyoqCj4gLSAqIGRybV9icmlkZ2VfcHJlX2VuYWJsZSAtIHByZXBhcmVzIGZvciBlbmFibGlu ZyBhbGwKPiAtICoJCQkgICBicmlkZ2VzIGluIHRoZSBlbmNvZGVyIGNoYWluCj4gLSAqIEBicmlk Z2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBDYWxscyAmZHJtX2JyaWRn ZV9mdW5jcy5wcmVfZW5hYmxlIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlIGVuY29kZXIK PiAtICogY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRvIHRoZSBmaXJzdC4g VGhlc2UgYXJlIGNhbGxlZAo+IC0gKiBiZWZvcmUgY2FsbGluZyB0aGUgZW5jb2RlcidzIGNvbW1p dCBvcC4KPiAtICoKPiAtICogTm90ZTogdGhlIGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJlIHRoZSBv bmUgY2xvc2VzdCB0byB0aGUgZW5jb2Rlcgo+IC0gKi8KPiAtdm9pZCBkcm1fYnJpZGdlX3ByZV9l bmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArc3RhdGljIHZvaWQgZHJtX2JyaWRn ZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIHsKPiAgCWlmICghYnJp ZGdlKQo+ICAJCXJldHVybjsKPiBAQCAtMzI4LDE5ICsyNTEsOCBAQCB2b2lkIGRybV9icmlkZ2Vf cHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAJaWYgKGJyaWRnZS0+ZnVu Y3MtPnByZV9lbmFibGUpCj4gIAkJYnJpZGdlLT5mdW5jcy0+cHJlX2VuYWJsZShicmlkZ2UpOwo+ ICB9Cj4gLUVYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9wcmVfZW5hYmxlKTsKPiAgCj4gLS8qKgo+ IC0gKiBkcm1fYnJpZGdlX2VuYWJsZSAtIGVuYWJsZXMgYWxsIGJyaWRnZXMgaW4gdGhlIGVuY29k ZXIgY2hhaW4KPiAtICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gLSAqCj4g LSAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLmVuYWJsZSBvcCBmb3IgYWxsIHRoZSBicmlkZ2Vz IGluIHRoZSBlbmNvZGVyCj4gLSAqIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBicmlk Z2UgdG8gdGhlIGxhc3QuIFRoZXNlIGFyZSBjYWxsZWQKPiAtICogYWZ0ZXIgY29tcGxldGluZyB0 aGUgZW5jb2RlcidzIGNvbW1pdCBvcC4KPiAtICoKPiAtICogTm90ZSB0aGF0IHRoZSBicmlkZ2Ug cGFzc2VkIHNob3VsZCBiZSB0aGUgb25lIGNsb3Nlc3QgdG8gdGhlIGVuY29kZXIKPiAtICovCj4g LXZvaWQgZHJtX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArc3Rh dGljIHZvaWQgZHJtX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAg ewo+ICAJaWYgKCFicmlkZ2UpCj4gIAkJcmV0dXJuOwo+IEBAIC0zNTAsMjIgKzI2MiwxMjcgQEAg dm9pZCBkcm1fYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAKPiAg CWRybV9icmlkZ2VfZW5hYmxlKGJyaWRnZS0+bmV4dCk7Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTChk cm1fYnJpZGdlX2VuYWJsZSk7Cj4gIAo+ICAvKioKPiAtICogZHJtX2F0b21pY19icmlkZ2VfZGlz YWJsZSAtIGRpc2FibGVzIGFsbCBicmlkZ2VzIGluIHRoZSBlbmNvZGVyIGNoYWluCj4gLSAqIEBi cmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+IC0gKiBAc3RhdGU6IGF0b21pYyBzdGF0 ZSBiZWluZyBjb21taXR0ZWQKPiArICogZHJtX2JyaWRnZV9jaGFpbl9tb2RlX2ZpeHVwIC0gZml4 dXAgcHJvcG9zZWQgbW9kZSBmb3IgYWxsIGJyaWRnZXMgaW4gdGhlCj4gKyAqCQkJCSBlbmNvZGVy IGNoYWluCj4gKyAqIEBlbmNvZGVyOiBlbmNvZGVyIG9iamVjdAo+ICsgKiBAbW9kZTogZGVzaXJl ZCBtb2RlIHRvIGJlIHNldCBmb3IgdGhlIGJyaWRnZQo+ICsgKiBAYWRqdXN0ZWRfbW9kZTogdXBk YXRlZCBtb2RlIHRoYXQgd29ya3MgZm9yIHRoaXMgYnJpZGdlCj4gICAqCj4gLSAqIENhbGxzICZk cm1fYnJpZGdlX2Z1bmNzLmF0b21pY19kaXNhYmxlIChmYWxscyBiYWNrIG9uCj4gLSAqICZkcm1f YnJpZGdlX2Z1bmNzLmRpc2FibGUpIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlIGVuY29k ZXIgY2hhaW4sCj4gLSAqIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRvIHRoZSBmaXJz dC4gVGhlc2UgYXJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZwo+IC0gKiAmZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzLmF0b21pY19kaXNhYmxlCj4gKyAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLm1v ZGVfZml4dXAgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUKPiArICogZW5jb2RlciBjaGFpbiwg c3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0Lgo+ICAgKgo+IC0gKiBO b3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBl bmNvZGVyCj4gKyAqIFJFVFVSTlM6Cj4gKyAqIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFp bHVyZQo+ICAgKi8KPiAtdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UsCj4gLQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gK2Jvb2wgZHJtX2JyaWRnZV9jaGFpbl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwK PiArCQkJCSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKPiArewo+ICsJ cmV0dXJuIGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5icmlkZ2UsIG1vZGUsIGFkanVz dGVkX21vZGUpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9jaGFpbl9tb2RlX2Zp eHVwKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYnJpZGdlX2NoYWluX21vZGVfdmFsaWQgLSB2YWxp ZGF0ZSB0aGUgbW9kZSBhZ2FpbnN0IGFsbCBicmlkZ2VzIGluIHRoZQo+ICsgKgkJCQkgZW5jb2Rl ciBjaGFpbi4KPiArICogQGVuY29kZXI6IGVuY29kZXIgb2JqZWN0Cj4gKyAqIEBtb2RlOiBkZXNp cmVkIG1vZGUgdG8gYmUgdmFsaWRhdGVkCj4gKyAqCj4gKyAqIENhbGxzICZkcm1fYnJpZGdlX2Z1 bmNzLm1vZGVfdmFsaWQgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUgZW5jb2Rlcgo+ICsgKiBj aGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0LiBJZiBhdCBs ZWFzdCBvbmUgYnJpZGdlCj4gKyAqIGRvZXMgbm90IGFjY2VwdCB0aGUgbW9kZSB0aGUgZnVuY3Rp b24gcmV0dXJucyB0aGUgZXJyb3IgY29kZS4KPiArICoKPiArICogUkVUVVJOUzoKPiArICogTU9E RV9PSyBvbiBzdWNjZXNzLCBkcm1fbW9kZV9zdGF0dXMgRW51bSBlcnJvciBjb2RlIG9uIGZhaWx1 cmUKPiArICovCj4gK2VudW0gZHJtX21vZGVfc3RhdHVzCj4gK2RybV9icmlkZ2VfY2hhaW5fbW9k ZV92YWxpZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICBjb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsJcmV0dXJuIGRybV9icmlkZ2VfbW9k ZV92YWxpZChlbmNvZGVyLT5icmlkZ2UsIG1vZGUpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJt X2JyaWRnZV9jaGFpbl9tb2RlX3ZhbGlkKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYnJpZGdlX2No YWluX2Rpc2FibGUgLSBkaXNhYmxlcyBhbGwgYnJpZGdlcyBpbiB0aGUgZW5jb2RlciBjaGFpbgo+ ICsgKiBAZW5jb2RlcjogZW5jb2RlciBvYmplY3QKPiArICoKPiArICogQ2FsbHMgJmRybV9icmlk Z2VfZnVuY3MuZGlzYWJsZSBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGluIHRoZSBlbmNvZGVyCj4g KyAqIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGJyaWRnZSB0byB0aGUgZmlyc3QuIFRo ZXNlIGFyZSBjYWxsZWQgYmVmb3JlCj4gKyAqIGNhbGxpbmcgdGhlIGVuY29kZXIncyBwcmVwYXJl IG9wLgo+ICsgKi8KPiArdm9pZCBkcm1fYnJpZGdlX2NoYWluX2Rpc2FibGUoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gKwlkcm1fYnJpZGdlX2Rpc2FibGUoZW5jb2Rlci0+YnJp ZGdlKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfY2hhaW5fZGlzYWJsZSk7Cj4g Kwo+ICsvKioKPiArICogZHJtX2JyaWRnZV9jaGFpbl9wb3N0X2Rpc2FibGUgLSBjbGVhbnMgdXAg YWZ0ZXIgZGlzYWJsaW5nIGFsbCBicmlkZ2VzIGluIHRoZQo+ICsgKgkJCQkgICBlbmNvZGVyIGNo YWluCj4gKyAqIEBlbmNvZGVyOiBlbmNvZGVyIG9iamVjdAo+ICsgKgo+ICsgKiBDYWxscyAmZHJt X2JyaWRnZV9mdW5jcy5wb3N0X2Rpc2FibGUgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUK PiArICogZW5jb2RlciBjaGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRo ZSBsYXN0LiBUaGVzZSBhcmUgY2FsbGVkCj4gKyAqIGFmdGVyIGNvbXBsZXRpbmcgdGhlIGVuY29k ZXIncyBwcmVwYXJlIG9wLgo+ICsgKi8KPiArdm9pZCBkcm1fYnJpZGdlX2NoYWluX3Bvc3RfZGlz YWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCWRybV9icmlkZ2VfcG9z dF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYnJp ZGdlX2NoYWluX3Bvc3RfZGlzYWJsZSk7Cj4gKwo+ICsvKioKPiArICogZHJtX2JyaWRnZV9jaGFp bl9tb2RlX3NldCAtIHNldCBwcm9wb3NlZCBtb2RlIGZvciBhbGwgYnJpZGdlcyBpbiB0aGUKPiAr ICoJCQkgICAgICAgZW5jb2RlciBjaGFpbgo+ICsgKiBAZW5jb2RlcjogZW5jb2RlciBvYmplY3QK PiArICogQG1vZGU6IGRlc2lyZWQgbW9kZSB0byBiZSBzZXQgZm9yIHRoZSBlbmNvZGVyIGNoYWlu Cj4gKyAqIEBhZGp1c3RlZF9tb2RlOiB1cGRhdGVkIG1vZGUgdGhhdCB3b3JrcyBmb3IgdGhpcyBl bmNvZGVyIGNoYWluCj4gKyAqCj4gKyAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLm1vZGVfc2V0 IG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlCj4gKyAqIGVuY29kZXIgY2hhaW4sIHN0YXJ0 aW5nIGZyb20gdGhlIGZpcnN0IGJyaWRnZSB0byB0aGUgbGFzdC4KPiArICovCj4gK3ZvaWQgZHJt X2JyaWRnZV9jaGFpbl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJ CSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiArCQkJICAgICAg IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+ICt7Cj4gKwlk cm1fYnJpZGdlX21vZGVfc2V0KGVuY29kZXItPmJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7 Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX2NoYWluX21vZGVfc2V0KTsKPiArCj4g Ky8qKgo+ICsgKiBkcm1fYnJpZGdlX2NoYWluX3ByZV9lbmFibGUgLSBwcmVwYXJlcyBmb3IgZW5h YmxpbmcgYWxsIGJyaWRnZXMgaW4gdGhlCj4gKyAqCQkJCSBlbmNvZGVyIGNoYWluCj4gKyAqIEBl bmNvZGVyOiBlbmNvZGVyIG9iamVjdAo+ICsgKgo+ICsgKiBDYWxscyAmZHJtX2JyaWRnZV9mdW5j cy5wcmVfZW5hYmxlIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlIGVuY29kZXIKPiArICog Y2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRvIHRoZSBmaXJzdC4gVGhlc2Ug YXJlIGNhbGxlZAo+ICsgKiBiZWZvcmUgY2FsbGluZyB0aGUgZW5jb2RlcidzIGNvbW1pdCBvcC4K PiArICovCj4gK3ZvaWQgZHJtX2JyaWRnZV9jaGFpbl9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKPiArewo+ICsJZHJtX2JyaWRnZV9wcmVfZW5hYmxlKGVuY29kZXItPmJy aWRnZSk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX2NoYWluX3ByZV9lbmFibGUp Owo+ICsKPiArLyoqCj4gKyAqIGRybV9icmlkZ2VfY2hhaW5fZW5hYmxlIC0gZW5hYmxlcyBhbGwg YnJpZGdlcyBpbiB0aGUgZW5jb2RlciBjaGFpbgo+ICsgKiBAZW5jb2RlcjogZW5jb2RlciBvYmpl Y3QKPiArICoKPiArICogQ2FsbHMgJmRybV9icmlkZ2VfZnVuY3MuZW5hYmxlIG9wIGZvciBhbGwg dGhlIGJyaWRnZXMgaW4gdGhlIGVuY29kZXIKPiArICogY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhl IGZpcnN0IGJyaWRnZSB0byB0aGUgbGFzdC4gVGhlc2UgYXJlIGNhbGxlZAo+ICsgKiBhZnRlciBj b21wbGV0aW5nIHRoZSBlbmNvZGVyJ3MgY29tbWl0IG9wLgo+ICsgKi8KPiArdm9pZCBkcm1fYnJp ZGdlX2NoYWluX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCWRy bV9icmlkZ2VfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChk cm1fYnJpZGdlX2NoYWluX2VuYWJsZSk7Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fYXRvbWljX2Jy aWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkgICAgICBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCWlmICghYnJpZGdlKQo+ICAJCXJl dHVybjsKPiBAQCAtMzc3LDIzICszOTQsOSBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2Rpc2Fi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCWVsc2UgaWYgKGJyaWRnZS0+ZnVuY3Mt PmRpc2FibGUpCj4gIAkJYnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShicmlkZ2UpOwo+ICB9Cj4gLUVY UE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZGlzYWJsZSk7Cj4gIAo+IC0vKioKPiAtICog ZHJtX2F0b21pY19icmlkZ2VfcG9zdF9kaXNhYmxlIC0gY2xlYW5zIHVwIGFmdGVyIGRpc2FibGlu ZyBhbGwgYnJpZGdlcyBpbiB0aGUKPiAtICoJCQkJICAgIGVuY29kZXIgY2hhaW4KPiAtICogQGJy aWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gLSAqIEBzdGF0ZTogYXRvbWljIHN0YXRl IGJlaW5nIGNvbW1pdHRlZAo+IC0gKgo+IC0gKiBDYWxscyAmZHJtX2JyaWRnZV9mdW5jcy5hdG9t aWNfcG9zdF9kaXNhYmxlIChmYWxscyBiYWNrIG9uCj4gLSAqICZkcm1fYnJpZGdlX2Z1bmNzLnBv c3RfZGlzYWJsZSkgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUgZW5jb2RlciBjaGFpbiwK PiAtICogc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0LiBUaGVzZSBh cmUgY2FsbGVkIGFmdGVyIGNvbXBsZXRpbmcKPiAtICogJmRybV9lbmNvZGVyX2hlbHBlcl9mdW5j cy5hdG9taWNfZGlzYWJsZQo+IC0gKgo+IC0gKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91 bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCj4gLSAqLwo+IC12b2lkIGRybV9h dG9taWNfYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+IC0J CQkJICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIHZvaWQgZHJt X2F0b21pY19icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4g KwkJCQkJICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlpZiAoIWJy aWRnZSkKPiAgCQlyZXR1cm47Cj4gQEAgLTQwNSwyMyArNDA4LDkgQEAgdm9pZCBkcm1fYXRvbWlj X2JyaWRnZV9wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCj4gIAlk cm1fYXRvbWljX2JyaWRnZV9wb3N0X2Rpc2FibGUoYnJpZGdlLT5uZXh0LCBzdGF0ZSk7Cj4gIH0K PiAtRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRnZV9wb3N0X2Rpc2FibGUpOwo+ICAKPiAt LyoqCj4gLSAqIGRybV9hdG9taWNfYnJpZGdlX3ByZV9lbmFibGUgLSBwcmVwYXJlcyBmb3IgZW5h YmxpbmcgYWxsIGJyaWRnZXMgaW4gdGhlCj4gLSAqCQkJCSAgZW5jb2RlciBjaGFpbgo+IC0gKiBA YnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiAtICogQHN0YXRlOiBhdG9taWMgc3Rh dGUgYmVpbmcgY29tbWl0dGVkCj4gLSAqCj4gLSAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLmF0 b21pY19wcmVfZW5hYmxlIChmYWxscyBiYWNrIG9uCj4gLSAqICZkcm1fYnJpZGdlX2Z1bmNzLnBy ZV9lbmFibGUpIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlIGVuY29kZXIgY2hhaW4sCj4g LSAqIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRvIHRoZSBmaXJzdC4gVGhlc2UgYXJl IGNhbGxlZCBiZWZvcmUgY2FsbGluZwo+IC0gKiAmZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzLmF0 b21pY19lbmFibGUKPiAtICoKPiAtICogTm90ZTogdGhlIGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJl IHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2Rlcgo+IC0gKi8KPiAtdm9pZCBkcm1fYXRvbWlj X2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gLQkJCQkgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIHZvaWQgZHJtX2F0b21pY19i cmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJCSBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCWlmICghYnJpZGdlKQo+ICAJCXJl dHVybjsKPiBAQCAtNDMzLDIyICs0MjIsOSBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX3ByZV9l bmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCWVsc2UgaWYgKGJyaWRnZS0+ZnVu Y3MtPnByZV9lbmFibGUpCj4gIAkJYnJpZGdlLT5mdW5jcy0+cHJlX2VuYWJsZShicmlkZ2UpOwo+ ICB9Cj4gLUVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfcHJlX2VuYWJsZSk7Cj4gIAo+ IC0vKioKPiAtICogZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlIC0gZW5hYmxlcyBhbGwgYnJpZGdl cyBpbiB0aGUgZW5jb2RlciBjaGFpbgo+IC0gKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1 Y3R1cmUKPiAtICogQHN0YXRlOiBhdG9taWMgc3RhdGUgYmVpbmcgY29tbWl0dGVkCj4gLSAqCj4g LSAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLmF0b21pY19lbmFibGUgKGZhbGxzIGJhY2sgb24K PiAtICogJmRybV9icmlkZ2VfZnVuY3MuZW5hYmxlKSBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGlu IHRoZSBlbmNvZGVyIGNoYWluLAo+IC0gKiBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBicmlkZ2Ug dG8gdGhlIGxhc3QuIFRoZXNlIGFyZSBjYWxsZWQgYWZ0ZXIgY29tcGxldGluZwo+IC0gKiAmZHJt X2VuY29kZXJfaGVscGVyX2Z1bmNzLmF0b21pY19lbmFibGUKPiAtICoKPiAtICogTm90ZTogdGhl IGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJlIHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2Rlcgo+ IC0gKi8KPiAtdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKPiAtCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICtz dGF0aWMgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPiArCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4g IAlpZiAoIWJyaWRnZSkKPiAgCQlyZXR1cm47Cj4gQEAgLTQ2MCw3ICs0MzYsNzYgQEAgdm9pZCBk cm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCj4g IAlkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoYnJpZGdlLT5uZXh0LCBzdGF0ZSk7Cj4gIH0KPiAt RVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUpOwo+ICsKPiArLyoqCj4gKyAq IGRybV9hdG9taWNfYnJpZGdlX2NoYWluX2Rpc2FibGUgLSBkaXNhYmxlcyBhbGwgYnJpZGdlcyBp biB0aGUgZW5jb2RlciBjaGFpbgo+ICsgKiBAZW5jb2RlcjogZW5jb2RlciBvYmplY3QKPiArICog QHN0YXRlOiBhdG9taWMgc3RhdGUgYmVpbmcgY29tbWl0dGVkCj4gKyAqCj4gKyAqIENhbGxzICZk cm1fYnJpZGdlX2Z1bmNzLmF0b21pY19kaXNhYmxlIChmYWxscyBiYWNrIG9uCj4gKyAqICZkcm1f YnJpZGdlX2Z1bmNzLmRpc2FibGUpIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlIGVuY29k ZXIgY2hhaW4sCj4gKyAqIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRvIHRoZSBmaXJz dC4gVGhlc2UgYXJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZwo+ICsgKiAmZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzLmF0b21pY19kaXNhYmxlCj4gKyAqLwo+ICt2b2lkIGRybV9hdG9taWNfYnJpZGdl X2NoYWluX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJICAgICBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCWRybV9hdG9taWNfYnJpZGdl X2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlLCBzdGF0ZSk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChk cm1fYXRvbWljX2JyaWRnZV9jaGFpbl9kaXNhYmxlKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRv bWljX2JyaWRnZV9jaGFpbl9wb3N0X2Rpc2FibGUgLSBjbGVhbnMgdXAgYWZ0ZXIgZGlzYWJsaW5n IGFsbCBicmlkZ2VzCj4gKyAqCQkJCQkgIGluIHRoZSBlbmNvZGVyIGNoYWluCj4gKyAqIEBlbmNv ZGVyOiBlbmNvZGVyIG9iamVjdAo+ICsgKiBAc3RhdGU6IGF0b21pYyBzdGF0ZSBiZWluZyBjb21t aXR0ZWQKPiArICoKPiArICogQ2FsbHMgJmRybV9icmlkZ2VfZnVuY3MuYXRvbWljX3Bvc3RfZGlz YWJsZSAoZmFsbHMgYmFjayBvbgo+ICsgKiAmZHJtX2JyaWRnZV9mdW5jcy5wb3N0X2Rpc2FibGUp IG9wIGZvciBhbGwgdGhlIGJyaWRnZXMgaW4gdGhlIGVuY29kZXIgY2hhaW4sCj4gKyAqIHN0YXJ0 aW5nIGZyb20gdGhlIGZpcnN0IGJyaWRnZSB0byB0aGUgbGFzdC4gVGhlc2UgYXJlIGNhbGxlZCBh ZnRlciBjb21wbGV0aW5nCj4gKyAqICZkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MuYXRvbWljX2Rp c2FibGUKPiArICovCj4gK3ZvaWQgZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcG9zdF9kaXNhYmxl KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCQkgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiArewo+ICsJZHJtX2F0b21pY19icmlkZ2VfcG9zdF9kaXNhYmxlKGVu Y29kZXItPmJyaWRnZSwgc3RhdGUpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19i cmlkZ2VfY2hhaW5fcG9zdF9kaXNhYmxlKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2Jy aWRnZV9jaGFpbl9wcmVfZW5hYmxlIC0gcHJlcGFyZXMgZm9yIGVuYWJsaW5nIGFsbCBicmlkZ2Vz IGluCj4gKyAqCQkJCQl0aGUgZW5jb2RlciBjaGFpbgo+ICsgKiBAZW5jb2RlcjogZW5jb2RlciBv YmplY3QKPiArICogQHN0YXRlOiBhdG9taWMgc3RhdGUgYmVpbmcgY29tbWl0dGVkCj4gKyAqCj4g KyAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLmF0b21pY19wcmVfZW5hYmxlIChmYWxscyBiYWNr IG9uCj4gKyAqICZkcm1fYnJpZGdlX2Z1bmNzLnByZV9lbmFibGUpIG9wIGZvciBhbGwgdGhlIGJy aWRnZXMgaW4gdGhlIGVuY29kZXIgY2hhaW4sCj4gKyAqIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3Qg YnJpZGdlIHRvIHRoZSBmaXJzdC4gVGhlc2UgYXJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZwo+ICsg KiAmZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzLmF0b21pY19lbmFibGUKPiArICovCj4gK3ZvaWQg ZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCj4gKwkJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlk cm1fYXRvbWljX2JyaWRnZV9wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSwgc3RhdGUpOwo+ICt9 Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcHJlX2VuYWJsZSk7Cj4g Kwo+ICsvKioKPiArICogZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fZW5hYmxlIC0gZW5hYmxlcyBh bGwgYnJpZGdlcyBpbiB0aGUgZW5jb2RlciBjaGFpbgo+ICsgKiBAZW5jb2RlcjogZW5jb2RlciBv YmplY3QKPiArICogQHN0YXRlOiBhdG9taWMgc3RhdGUgYmVpbmcgY29tbWl0dGVkCj4gKyAqCj4g KyAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLmF0b21pY19lbmFibGUgKGZhbGxzIGJhY2sgb24K PiArICogJmRybV9icmlkZ2VfZnVuY3MuZW5hYmxlKSBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGlu IHRoZSBlbmNvZGVyIGNoYWluLAo+ICsgKiBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBicmlkZ2Ug dG8gdGhlIGxhc3QuIFRoZXNlIGFyZSBjYWxsZWQgYWZ0ZXIgY29tcGxldGluZwo+ICsgKiAmZHJt X2VuY29kZXJfaGVscGVyX2Z1bmNzLmF0b21pY19lbmFibGUKPiArICovCj4gK3ZvaWQgZHJtX2F0 b21pY19icmlkZ2VfY2hhaW5fZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiAr CQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCWRybV9hdG9t aWNfYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UsIHN0YXRlKTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MKGRybV9hdG9taWNfYnJpZGdlX2NoYWluX2VuYWJsZSk7Cj4gIAo+ICAjaWZkZWYgQ09O RklHX09GCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVs cGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBpbmRleCA4N2RhZTM3 ZmVjMTIuLmY4YTM2MWQzOTZkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ny dGNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBA QCAtMTYxLDcgKzE2MSw3IEBAIGRybV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoIWVuY29kZXItPmN1c3RvbV9icmlk Z2VfZW5hYmxlX2Rpc2FibGVfc2VxKQo+IC0JCWRybV9icmlkZ2VfZGlzYWJsZShlbmNvZGVyLT5i cmlkZ2UpOwo+ICsJCWRybV9icmlkZ2VfY2hhaW5fZGlzYWJsZShlbmNvZGVyKTsKPiAgCj4gIAlp ZiAoZW5jb2Rlcl9mdW5jcy0+ZGlzYWJsZSkKPiAgCQkoKmVuY29kZXJfZnVuY3MtPmRpc2FibGUp KGVuY29kZXIpOwo+IEBAIC0xNjksNyArMTY5LDcgQEAgZHJtX2VuY29kZXJfZGlzYWJsZShzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJKCplbmNvZGVyX2Z1bmNzLT5kcG1zKShlbmNv ZGVyLCBEUk1fTU9ERV9EUE1TX09GRik7Cj4gIAo+ICAJaWYgKCFlbmNvZGVyLT5jdXN0b21fYnJp ZGdlX2VuYWJsZV9kaXNhYmxlX3NlcSkKPiAtCQlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShlbmNv ZGVyLT5icmlkZ2UpOwo+ICsJCWRybV9icmlkZ2VfY2hhaW5fcG9zdF9kaXNhYmxlKGVuY29kZXIp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBfX2RybV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVu Y3Rpb25zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gQEAgLTMyOSw4ICszMjksOCBAQCBib29s IGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJaWYg KCFlbmNvZGVyX2Z1bmNzKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJcmV0ID0gZHJtX2JyaWRn ZV9tb2RlX2ZpeHVwKGVuY29kZXItPmJyaWRnZSwKPiAtCQkJbW9kZSwgYWRqdXN0ZWRfbW9kZSk7 Cj4gKwkJcmV0ID0gZHJtX2JyaWRnZV9jaGFpbl9tb2RlX2ZpeHVwKGVuY29kZXIsIG1vZGUsCj4g KwkJCQkJCSAgYWRqdXN0ZWRfbW9kZSk7Cj4gIAkJaWYgKCFyZXQpIHsKPiAgCQkJRFJNX0RFQlVH X0tNUygiQnJpZGdlIGZpeHVwIGZhaWxlZFxuIik7Cj4gIAkJCWdvdG8gZG9uZTsKPiBAQCAtMzY4 LDE0ICszNjgsMTQgQEAgYm9vbCBkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKCFlbmNvZGVyLT5jdXN0b21f YnJpZGdlX2VuYWJsZV9kaXNhYmxlX3NlcSkKPiAtCQkJZHJtX2JyaWRnZV9kaXNhYmxlKGVuY29k ZXItPmJyaWRnZSk7Cj4gKwkJCWRybV9icmlkZ2VfY2hhaW5fZGlzYWJsZShlbmNvZGVyKTsKPiAg Cj4gIAkJLyogRGlzYWJsZSB0aGUgZW5jb2RlcnMgYXMgdGhlIGZpcnN0IHRoaW5nIHdlIGRvLiAq Lwo+ICAJCWlmIChlbmNvZGVyX2Z1bmNzLT5wcmVwYXJlKQo+ICAJCQllbmNvZGVyX2Z1bmNzLT5w cmVwYXJlKGVuY29kZXIpOwo+ICAKPiAgCQlpZiAoIWVuY29kZXItPmN1c3RvbV9icmlkZ2VfZW5h YmxlX2Rpc2FibGVfc2VxKQo+IC0JCQlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShlbmNvZGVyLT5i cmlkZ2UpOwo+ICsJCQlkcm1fYnJpZGdlX2NoYWluX3Bvc3RfZGlzYWJsZShlbmNvZGVyKTsKPiAg CX0KPiAgCj4gIAlkcm1fY3J0Y19wcmVwYXJlX2VuY29kZXJzKGRldik7Cj4gQEAgLTQwMyw3ICs0 MDMsNyBAQCBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAkJaWYgKGVuY29kZXJfZnVuY3MtPm1vZGVfc2V0KQo+ICAJCQllbmNvZGVyX2Z1bmNz LT5tb2RlX3NldChlbmNvZGVyLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiAgCj4gLQkJZHJtX2Jy aWRnZV9tb2RlX3NldChlbmNvZGVyLT5icmlkZ2UsIG1vZGUsIGFkanVzdGVkX21vZGUpOwo+ICsJ CWRybV9icmlkZ2VfY2hhaW5fbW9kZV9zZXQoZW5jb2RlciwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7 Cj4gIAl9Cj4gIAo+ICAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFuZSwgcGlwZSwgYW5k IGNvbm5lY3RvcnMgdGhhdCB3ZSBzZXQgdXAuICovCj4gQEAgLTQxOSwxMyArNDE5LDEzIEBAIGJv b2wgZHJtX2NydGNfaGVscGVyX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJ Y29udGludWU7Cj4gIAo+ICAJCWlmICghZW5jb2Rlci0+Y3VzdG9tX2JyaWRnZV9lbmFibGVfZGlz YWJsZV9zZXEpCj4gLQkJCWRybV9icmlkZ2VfcHJlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ ICsJCQlkcm1fYnJpZGdlX2NoYWluX3ByZV9lbmFibGUoZW5jb2Rlcik7Cj4gIAo+ICAJCWlmIChl bmNvZGVyX2Z1bmNzLT5jb21taXQpCj4gIAkJCWVuY29kZXJfZnVuY3MtPmNvbW1pdChlbmNvZGVy KTsKPiAgCj4gIAkJaWYgKCFlbmNvZGVyLT5jdXN0b21fYnJpZGdlX2VuYWJsZV9kaXNhYmxlX3Nl cSkKPiAtCQkJZHJtX2JyaWRnZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArCQkJZHJtX2Jy aWRnZV9jaGFpbl9lbmFibGUoZW5jb2Rlcik7Cj4gIAl9Cj4gIAo+ICAJLyogQ2FsY3VsYXRlIGFu ZCBzdG9yZSB2YXJpb3VzIGNvbnN0YW50cyB3aGljaAo+IEBAIC04MjQsNyArODI0LDYgQEAgc3Rh dGljIGludCBkcm1faGVscGVyX2Nob29zZV9lbmNvZGVyX2RwbXMoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKQo+ICAvKiBIZWxwZXIgd2hpY2ggaGFuZGxlcyBicmlkZ2Ugb3JkZXJpbmcgYXJv dW5kIGVuY29kZXIgZHBtcyAqLwo+ICBzdGF0aWMgdm9pZCBkcm1faGVscGVyX2VuY29kZXJfZHBt cyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2RlKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlID0gZW5jb2Rlci0+YnJpZGdlOwo+ICAJY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZW5jb2Rlcl9mdW5jczsKPiAgCj4gIAllbmNvZGVyX2Z1 bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7Cj4gQEAgLTgzMyw5ICs4MzIsOSBAQCBzdGF0 aWMgdm9pZCBkcm1faGVscGVyX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIsIGludCBtb2RlKQo+ICAKPiAgCWlmICghZW5jb2Rlci0+Y3VzdG9tX2JyaWRnZV9lbmFibGVf ZGlzYWJsZV9zZXEpIHsKPiAgCQlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQo+IC0JCQlk cm1fYnJpZGdlX3ByZV9lbmFibGUoYnJpZGdlKTsKPiArCQkJZHJtX2JyaWRnZV9jaGFpbl9wcmVf ZW5hYmxlKGVuY29kZXIpOwo+ICAJCWVsc2UKPiAtCQkJZHJtX2JyaWRnZV9kaXNhYmxlKGJyaWRn ZSk7Cj4gKwkJCWRybV9icmlkZ2VfY2hhaW5fZGlzYWJsZShlbmNvZGVyKTsKPiAgCX0KPiAgCj4g IAlpZiAoZW5jb2Rlcl9mdW5jcy0+ZHBtcykKPiBAQCAtODQzLDkgKzg0Miw5IEBAIHN0YXRpYyB2 b2lkIGRybV9oZWxwZXJfZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlciwg aW50IG1vZGUpCj4gIAo+ICAJaWYgKCFlbmNvZGVyLT5jdXN0b21fYnJpZGdlX2VuYWJsZV9kaXNh YmxlX3NlcSkgewo+ICAJCWlmIChtb2RlID09IERSTV9NT0RFX0RQTVNfT04pCj4gLQkJCWRybV9i cmlkZ2VfZW5hYmxlKGJyaWRnZSk7Cj4gKwkJCWRybV9icmlkZ2VfY2hhaW5fZW5hYmxlKGVuY29k ZXIpOwo+ICAJCWVsc2UKPiAtCQkJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoYnJpZGdlKTsKPiAr CQkJZHJtX2JyaWRnZV9jaGFpbl9wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4gIAl9Cj4gIH0KPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4gaW5kZXggMzUxY2JjNDBmMGY4Li40NjEx OTliYzI4YzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKPiBAQCAtMTEzLDcg KzExMyw3IEBAIGRybV9tb2RlX3ZhbGlkYXRlX3BpcGVsaW5lKHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAo+ICAJCQljb250aW51ZTsKPiAgCQl9Cj4gIAo+IC0JCXJldCA9IGRybV9icmlk Z2VfbW9kZV92YWxpZChlbmNvZGVyLT5icmlkZ2UsIG1vZGUpOwo+ICsJCXJldCA9IGRybV9icmlk Z2VfY2hhaW5fbW9kZV92YWxpZChlbmNvZGVyLCBtb2RlKTsKPiAgCQlpZiAocmV0ICE9IE1PREVf T0spIHsKPiAgCQkJLyogVGhlcmUgaXMgYWxzbyBubyBwb2ludCBpbiBjb250aW51aW5nIGZvciBj cnRjIGNoZWNrCj4gIAkJCSAqIGhlcmUuICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9kc2kuYwo+IGluZGV4IDg1OTNjODdiZGY5Ni4uOWE5NmJjNDhiODFmIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kc2kuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kc2kuYwo+IEBAIC0xMzg5LDcgKzEzODksNyBA QCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCj4gIAkJaWYgKHJldCA8IDApCj4gIAkJCWdvdG8gZXJyX3B1dF9zeW5jOwo+ICAJfSBlbHNl IHsKPiAtCQlkcm1fYnJpZGdlX3ByZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArCQlkcm1f YnJpZGdlX2NoYWluX3ByZV9lbmFibGUoZW5jb2Rlcik7Cj4gIAl9Cj4gIAo+ICAJZXh5bm9zX2Rz aV9zZXRfZGlzcGxheV9tb2RlKGRzaSk7Cj4gQEAgLTE0MDAsNyArMTQwMCw3IEBAIHN0YXRpYyB2 b2lkIGV4eW5vc19kc2lfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCQlp ZiAocmV0IDwgMCkKPiAgCQkJZ290byBlcnJfZGlzcGxheV9kaXNhYmxlOwo+ICAJfSBlbHNlIHsK PiAtCQlkcm1fYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJCWRybV9icmlkZ2Vf Y2hhaW5fZW5hYmxlKGVuY29kZXIpOwo+ICAJfQo+ICAKPiAgCWRzaS0+c3RhdGUgfD0gRFNJTV9T VEFURV9WSURPVVRfQVZBSUxBQkxFOwo+IEBAIC0xNDI1LDEwICsxNDI1LDEwIEBAIHN0YXRpYyB2 b2lkIGV4eW5vc19kc2lfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAlk c2ktPnN0YXRlICY9IH5EU0lNX1NUQVRFX1ZJRE9VVF9BVkFJTEFCTEU7Cj4gIAo+ICAJZHJtX3Bh bmVsX2Rpc2FibGUoZHNpLT5wYW5lbCk7Cj4gLQlkcm1fYnJpZGdlX2Rpc2FibGUoZW5jb2Rlci0+ YnJpZGdlKTsKPiArCWRybV9icmlkZ2VfY2hhaW5fZGlzYWJsZShlbmNvZGVyKTsKPiAgCWV4eW5v c19kc2lfc2V0X2Rpc3BsYXlfZW5hYmxlKGRzaSwgZmFsc2UpOwo+ICAJZHJtX3BhbmVsX3VucHJl cGFyZShkc2ktPnBhbmVsKTsKPiAtCWRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKGVuY29kZXItPmJy aWRnZSk7Cj4gKwlkcm1fYnJpZGdlX2NoYWluX3Bvc3RfZGlzYWJsZShlbmNvZGVyKTsKPiAgCWRz aS0+c3RhdGUgJj0gfkRTSU1fU1RBVEVfRU5BQkxFRDsKPiAgCXBtX3J1bnRpbWVfcHV0X3N5bmMo ZHNpLT5kZXYpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMKPiBpbmRleCBj NzliMWY4NTVkODkuLjZlYzNkMjU4NDUzOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaS5jCj4gQEAgLTEyNDcsOCArMTI0Nyw4IEBAIHN0YXRpYyBpbnQgbXRrX2hkbWlfY29ubl9t b2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uLAo+ICAJCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlIGFkanVzdGVkX21vZGU7Cj4gIAo+ICAJCWRybV9tb2RlX2NvcHkoJmFkanVzdGVk X21vZGUsIG1vZGUpOwo+IC0JCWlmICghZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKGhkbWktPmJyaWRn ZS5uZXh0LCBtb2RlLAo+IC0JCQkJCSAgICZhZGp1c3RlZF9tb2RlKSkKPiArCQlpZiAoIWRybV9i cmlkZ2VfY2hhaW5fbW9kZV9maXh1cChoZG1pLT5icmlkZ2UuZW5jb2RlciwgbW9kZSwKPiArCQkJ CQkJICZhZGp1c3RlZF9tb2RlKSkKPiAgCQkJcmV0dXJuIE1PREVfQkFEOwo+ICAJfQo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHNpLmMgYi9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF9kc2kuYwo+IGluZGV4IGI2NzBjYTQ3Mzc4Ni4uZDdjZDcyMGM0ZWZhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2RzaS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZHNpLmMKPiBAQCAtNzUyLDkgKzc1Miw5IEBAIHN0YXRpYyB2b2lkIHZj NF9kc2lfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCXN0 cnVjdCB2YzRfZHNpICpkc2kgPSB2YzRfZW5jb2Rlci0+ZHNpOwo+ICAJc3RydWN0IGRldmljZSAq ZGV2ID0gJmRzaS0+cGRldi0+ZGV2Owo+ICAKPiAtCWRybV9icmlkZ2VfZGlzYWJsZShlbmNvZGVy LT5icmlkZ2UpOwo+ICsJZHJtX2JyaWRnZV9jaGFpbl9kaXNhYmxlKGVuY29kZXIpOwo+ICAJdmM0 X2RzaV91bHBzKGRzaSwgdHJ1ZSk7Cj4gLQlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShlbmNvZGVy LT5icmlkZ2UpOwo+ICsJZHJtX2JyaWRnZV9jaGFpbl9wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4g IAo+ICAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+cGxsX3BoeV9jbG9jayk7Cj4gIAljbGtf ZGlzYWJsZV91bnByZXBhcmUoZHNpLT5lc2NhcGVfY2xvY2spOwo+IEBAIC0xMDU0LDcgKzEwNTQs NyBAQCBzdGF0aWMgdm9pZCB2YzRfZHNpX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcikKPiAgCj4gIAl2YzRfZHNpX3VscHMoZHNpLCBmYWxzZSk7Cj4gIAo+IC0JZHJt X2JyaWRnZV9wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gKwlkcm1fYnJpZGdlX2NoYWlu X3ByZV9lbmFibGUoZW5jb2Rlcik7Cj4gIAo+ICAJaWYgKGRzaS0+bW9kZV9mbGFncyAmIE1JUElf RFNJX01PREVfVklERU8pIHsKPiAgCQlEU0lfUE9SVF9XUklURShESVNQMF9DVFJMLAo+IEBAIC0x MDcxLDcgKzEwNzEsNyBAQCBzdGF0aWMgdm9pZCB2YzRfZHNpX2VuY29kZXJfZW5hYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCQkJICAgICAgIERTSV9ESVNQMF9FTkFCTEUpOwo+ ICAJfQo+ICAKPiAtCWRybV9icmlkZ2VfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gKwlkcm1f YnJpZGdlX2NoYWluX2VuYWJsZShlbmNvZGVyKTsKPiAgCj4gIAlpZiAoZGVidWdfZHVtcF9yZWdz KSB7Cj4gIAkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1faW5mb19wcmludGVyKCZkc2ktPnBk ZXYtPmRldik7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCBiL2luY2x1 ZGUvZHJtL2RybV9icmlkZ2UuaAo+IGluZGV4IDc2MTZmNjU2MmZlNC4uMzA1N2UyMTUzZjYyIDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9icmlkZ2UuaAo+IEBAIC0yNTQsOSArMjU0LDEwIEBAIHN0cnVjdCBkcm1fYnJpZGdlX2Z1 bmNzIHsKPiAgCSAqIHRoZXJlIGlzIG9uZSkgd2hlbiB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZC4K PiAgCSAqCj4gIAkgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgaW52b2tl ZCBpbiB0aGUgY29udGV4dCBvZiBhbgo+IC0JICogYXRvbWljIGNvbW1pdC4gSXQgd2lsbCBub3Qg YmUgaW52b2tlZCBmcm9tICZkcm1fYnJpZGdlX3ByZV9lbmFibGUuIEl0Cj4gLQkgKiB3b3VsZCBi ZSBwcnVkZW50IHRvIGFsc28gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBAcHJlX2VuYWJs ZSBpZgo+IC0JICogeW91IGFyZSBleHBlY3RpbmcgZHJpdmVyIGNhbGxzIGludG8gJmRybV9icmlk Z2VfcHJlX2VuYWJsZS4KPiArCSAqIGF0b21pYyBjb21taXQuIEl0IHdpbGwgbm90IGJlIGludm9r ZWQgZnJvbQo+ICsJICogJmRybV9icmlkZ2VfY2hhaW5fcHJlX2VuYWJsZS4gSXQgd291bGQgYmUg cHJ1ZGVudCB0byBhbHNvIHByb3ZpZGUgYW4KPiArCSAqIGltcGxlbWVudGF0aW9uIG9mIEBwcmVf ZW5hYmxlIGlmIHlvdSBhcmUgZXhwZWN0aW5nIGRyaXZlciBjYWxscyBpbnRvCj4gKwkgKiAmZHJt X2JyaWRnZV9jaGFpbl9wcmVfZW5hYmxlLgo+ICAJICoKPiAgCSAqIFRoZSBAYXRvbWljX3ByZV9l bmFibGUgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gIAkgKi8KPiBAQCAtMjc5LDkgKzI4MCw5IEBA IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHsKPiAgCSAqIGNoYWluIGlmIHRoZXJlIGlzIG9uZS4K PiAgCSAqCj4gIAkgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgaW52b2tl ZCBpbiB0aGUgY29udGV4dCBvZiBhbgo+IC0JICogYXRvbWljIGNvbW1pdC4gSXQgd2lsbCBub3Qg YmUgaW52b2tlZCBmcm9tICZkcm1fYnJpZGdlX2VuYWJsZS4gSXQKPiAtCSAqIHdvdWxkIGJlIHBy dWRlbnQgdG8gYWxzbyBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIEBlbmFibGUgaWYKPiAt CSAqIHlvdSBhcmUgZXhwZWN0aW5nIGRyaXZlciBjYWxscyBpbnRvICZkcm1fYnJpZGdlX2VuYWJs ZS4KPiArCSAqIGF0b21pYyBjb21taXQuIEl0IHdpbGwgbm90IGJlIGludm9rZWQgZnJvbSAmZHJt X2JyaWRnZV9jaGFpbl9lbmFibGUuCj4gKwkgKiBJdCB3b3VsZCBiZSBwcnVkZW50IHRvIGFsc28g cHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBAZW5hYmxlIGlmCj4gKwkgKiB5b3UgYXJlIGV4 cGVjdGluZyBkcml2ZXIgY2FsbHMgaW50byAmZHJtX2JyaWRnZV9jaGFpbl9lbmFibGUuCj4gIAkg Kgo+ICAJICogVGhlIGVuYWJsZSBjYWxsYmFjayBpcyBvcHRpb25hbC4KPiAgCSAqLwo+IEBAIC0z MDEsOSArMzAyLDEwIEBAIHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHsKPiAgCSAqIHNpZ25hbHMp IGZlZWRpbmcgaXQgaXMgc3RpbGwgcnVubmluZyB3aGVuIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVk Lgo+ICAJICoKPiAgCSAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBpbnZv a2VkIGluIHRoZSBjb250ZXh0IG9mIGFuCj4gLQkgKiBhdG9taWMgY29tbWl0LiBJdCB3aWxsIG5v dCBiZSBpbnZva2VkIGZyb20gJmRybV9icmlkZ2VfZGlzYWJsZS4gSXQKPiAtCSAqIHdvdWxkIGJl IHBydWRlbnQgdG8gYWxzbyBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIEBkaXNhYmxlIGlm Cj4gLQkgKiB5b3UgYXJlIGV4cGVjdGluZyBkcml2ZXIgY2FsbHMgaW50byAmZHJtX2JyaWRnZV9k aXNhYmxlLgo+ICsJICogYXRvbWljIGNvbW1pdC4gSXQgd2lsbCBub3QgYmUgaW52b2tlZCBmcm9t Cj4gKwkgKiAmZHJtX2JyaWRnZV9jaGFpbl9kaXNhYmxlLiBJdCB3b3VsZCBiZSBwcnVkZW50IHRv IGFsc28gcHJvdmlkZSBhbgo+ICsJICogaW1wbGVtZW50YXRpb24gb2YgQGRpc2FibGUgaWYgeW91 IGFyZSBleHBlY3RpbmcgZHJpdmVyIGNhbGxzIGludG8KPiArCSAqICZkcm1fYnJpZGdlX2NoYWlu X2Rpc2FibGUuCj4gIAkgKgo+ICAJICogVGhlIGRpc2FibGUgY2FsbGJhY2sgaXMgb3B0aW9uYWwu Cj4gIAkgKi8KPiBAQCAtMzI1LDEwICszMjcsMTEgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mg ewo+ICAJICogY2FsbGVkLgo+ICAJICoKPiAgCSAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdp bGwgb25seSBiZSBpbnZva2VkIGluIHRoZSBjb250ZXh0IG9mIGFuCj4gLQkgKiBhdG9taWMgY29t bWl0LiBJdCB3aWxsIG5vdCBiZSBpbnZva2VkIGZyb20gJmRybV9icmlkZ2VfcG9zdF9kaXNhYmxl Lgo+ICsJICogYXRvbWljIGNvbW1pdC4gSXQgd2lsbCBub3QgYmUgaW52b2tlZCBmcm9tCj4gKwkg KiAmZHJtX2JyaWRnZV9jaGFpbl9wb3N0X2Rpc2FibGUuCj4gIAkgKiBJdCB3b3VsZCBiZSBwcnVk ZW50IHRvIGFsc28gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZgo+ICAJICogQHBvc3RfZGlz YWJsZSBpZiB5b3UgYXJlIGV4cGVjdGluZyBkcml2ZXIgY2FsbHMgaW50bwo+IC0JICogJmRybV9i cmlkZ2VfcG9zdF9kaXNhYmxlLgo+ICsJICogJmRybV9icmlkZ2VfY2hhaW5fcG9zdF9kaXNhYmxl Lgo+ICAJICoKPiAgCSAqIFRoZSBwb3N0X2Rpc2FibGUgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4g IAkgKi8KPiBAQCAtNDA2LDI3ICs0MDksMjggQEAgc3RydWN0IGRybV9icmlkZ2UgKm9mX2RybV9m aW5kX2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTsKPiAgaW50IGRybV9icmlkZ2VfYXR0 YWNoKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlciwgc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSwKPiAgCQkgICAgICBzdHJ1Y3QgZHJtX2JyaWRnZSAqcHJldmlvdXMpOwo+ICAKPiAtYm9vbCBk cm1fYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAtCQkJICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gLQkJCSAgIHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKTsKPiAtZW51bSBkcm1fbW9kZV9zdGF0dXMgZHJt X2JyaWRnZV9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gLQkJCQkJICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpOwo+IC12b2lkIGRybV9icmlkZ2Vf ZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiAtdm9pZCBkcm1fYnJpZGdlX3Bv c3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiAtdm9pZCBkcm1fYnJpZGdl X21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gLQkJCSBjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAtCQkJIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlKTsKPiAtdm9pZCBkcm1fYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gLXZvaWQgZHJtX2JyaWRnZV9lbmFibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSk7Cj4gK2Jvb2wgZHJtX2JyaWRnZV9jaGFpbl9tb2RlX2ZpeHVwKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSwKPiArCQkJCSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSk7Cj4gK2VudW0gZHJtX21vZGVfc3RhdHVzCj4gK2RybV9icmlkZ2VfY2hhaW5fbW9kZV92 YWxpZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7Cj4gK3ZvaWQgZHJtX2JyaWRnZV9jaGFpbl9kaXNhYmxl KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gK3ZvaWQgZHJtX2JyaWRnZV9jaGFpbl9w b3N0X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiArdm9pZCBkcm1fYnJp ZGdlX2NoYWluX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAg ICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICsJCQkgICAgICAgY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOwo+ICt2b2lkIGRybV9i cmlkZ2VfY2hhaW5fcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ICt2 b2lkIGRybV9icmlkZ2VfY2hhaW5fZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7 Cj4gIAo+IC12b2lkIGRybV9hdG9taWNfYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKPiAtCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4g LXZvaWQgZHJtX2F0b21pY19icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4gK3ZvaWQgZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fZGlzYWJsZShzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gK3ZvaWQgZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcG9zdF9kaXNhYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCQkgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSk7Cj4gK3ZvaWQgZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcHJlX2VuYWJsZShzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKTsKPiArdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9jaGFpbl9lbmFibGUoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gLXZvaWQgZHJtX2F0b21pY19icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlLAo+IC0JCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ IC12b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl LAo+IC0JCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICAKPiAgI2lm ZGVmIENPTkZJR19EUk1fUEFORUxfQlJJREdFCj4gIHN0cnVjdCBkcm1fYnJpZGdlICpkcm1fcGFu ZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKPiAtLSAKPiAyLjIxLjAKPiAK Ci0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWw=