From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/3] drm/i915/gem: Extract transient execbuf flags from i915_vma Date: Fri, 8 Nov 2019 10:53:51 +0100 Message-ID: References: <20191106154810.5843-1-chris@chris-wilson.co.uk> <20191106154810.5843-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-oi1-x242.google.com (mail-oi1-x242.google.com [IPv6:2607:f8b0:4864:20::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE0936F8EF for ; Fri, 8 Nov 2019 09:54:03 +0000 (UTC) Received: by mail-oi1-x242.google.com with SMTP id l202so4747618oig.1 for ; Fri, 08 Nov 2019 01:54:03 -0800 (PST) In-Reply-To: <20191106154810.5843-3-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , Maarten Lankhorst Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgNiwgMjAxOSBhdCA0OjQ4IFBNIENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPiB3cm90ZToKPiBGb3Igb3VyIGNvbnZlbmllbmNlLCBhbmQgdG8gYXZvaWQg ZnJlcXVlbnQgYWxsb2NhdGlvbnMsIHdlIHBsYWNlZCBzb21lCj4gbGlzdHMgd2UgdXNlIGZvciBl eGVjYnVmIGluc2lkZSB0aGUgY29tbW9uIGk5MTVfdm1hIHN0cnVjdC4gQXMgd2UgbG9vawo+IHRv IHBhcmFsbGVsaXNlIGV4ZWNidWYsIHN1Y2ggZmllbGRzIGd1YXJkZWQgYnkgdGhlIHN0cnVjdF9t dXRleCBCS0wgbXVzdAo+IGJlIHB1bGxlZCB1bmRlciBsb2NhbCBjb250cm9sLiBJbnN0ZWFkIG9m IHVzaW5nIHRoZSBpOTE1X3ZtYSBhcyBvdXIKPiBwcmltYXJ5IG1lYW5zIG9mIHRyYWNraW5nIHRo ZSB1c2VyJ3MgbGlzdCBvZiBvYmplY3RzIGFuZCB0aGVpciB2aXJ0dWFsCj4gbWFwcGluZ3MsIHdl IHVzZSBhIGxvY2FsIGViX3ZtYSB3aXRoIHRoZSBzYW1lIGxpc3RzIGFzIGJlZm9yZSAoanVzdCBu b3cKPiBsb2NhbCBub3QgZ2xvYmFsKS4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgoKKC0tc3VwcmVzcy1jYyA/IEFkZGVkIE1hYXJ0 ZW4gZm9yIHJlYWwsIGRpZG4ndCBzZWVtIHRvIGJlIG9uIGNjIGluIG15CmluYm94IGF0IGxlYXN0 KQoKV2h5IGRvIHdlIG5lZWQgdGhpcz8KCkZvciB0aGUgbG1lbSBzdHVmZiB3ZSBuZWVkIHRvIGhv bGQgdGhlIGRtYV9yZXN2LCB3aGljaCBpcyBvbiB0aGUKb2JqZWN0LiBOZWVkcyB0byBiZSBvbiB0 aGUgb2JqZWN0LCBzaW5jZSBsbWVtIGlzIHBoeXNpY2FsIG1lbW9yeSwgbm90CnZpcnR1YWwgZ3R0 ICh3ZSBtaWdodCBoYXZlIGEgZGlmZmVyZW50IHN0b3J5IG9uIG9sZCBnZ3R0IGV4ZWNidWYKY29u dGVudGlvbiBsb2xzKS4gdm1hLT5vYmogaXMgTjoxICh1bmxlc3Mgc29tZSByZW1hcHBpbmcgc3R1 ZmYgY3JlcHQKaW4gdGhhdCBJIHRvdGFsbHkgbWlzc2VkKSwgc28gbG9ja2luZyB0aGUgb2JqIGRt YV9yZXN2IHd3X211dGV4IGR1cmluZwpleGVjYnVmIHByZXAgYWxzbyBnaXZlcyB1cyB0aGUgZW50 aXJlIHZtYSBsb2NrZWQuIFdoaWNoIG1lYW5zIHdlIGNhbgpqdXN0IGxlYXZlIGV2ZXJ5dGhpbmcg d2hlcmUgaXQgaXMsIG5vIG5lZWQgdG8gbW92ZSBzdHVmZi4gQXQgbGVhc3Qgbm8KZm9yIHRoZSBz L3N0cnVjdF9tdXRleC93d19hY3F1aXJlX2N0eC8gbWFnaWMgdHJpY2suCgpJJ20gYWxzbyBraW5k YSB3b25kZXJlZCB3aGV0aGVyIHRoZSBzYW1lIGFwcGxpZXMgZm9yIHNvbWUgb2YgdGhlIG90aGVy CnZtYSBzdGF0ZSB0aGF0IGdvdCBzcGxpdCBvdXQgYWxyZWFkeSwgbGlrZSB0aGUgdm1hLT5waW5f Y291bnQKdHJhY2tpbmcuIEF0IGxlYXN0IG5haXZlIGFwcGxpY2F0aW9uIG9mIHd3X211dGV4IHdv dWxkIGNvdmVyIHd3X211dGV4CmV2ZXJ5d2hlcmUgd2UgZG8gdGhlIG5ldyBsb2NraW5nIGZvciB2 bWEgcGlubmluZywgc28gc2VlbXMgc3VwZXJmbG91cy4KCkJ1dCBnb29kIGNoYW5jZXMgSSdtIGp1 c3Qgc2xpZ2h0bHkgY29uZnVzZWQgYXMgdXN1YWwgOi0pCi1EYW5pZWwKCj4gLS0tCj4gIC4uLi9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8IDI3MSArKysrKysrKyst LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAg IHwgIDExIC0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0 aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gaW5kZXggZTRmNWMyNjkxNTBhLi44ZWI5YzRlMTc1MTQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtMjcsNiAr MjcsMTkgQEAKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2lvY3Rscy5oIgo+ICAjaW5jbHVkZSAiaTkx NV90cmFjZS5oIgo+Cj4gK3N0cnVjdCBlYl92bWEgewo+ICsgICAgICAgc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gKwo+ICsgICAgICAgLyoqIFRo aXMgdm1hJ3MgcGxhY2UgaW4gdGhlIGV4ZWNidWYgcmVzZXJ2YXRpb24gbGlzdCAqLwo+ICsgICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmV4ZWM7Cj4gKyAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGJpbmRfbGluazsKPiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVsb2Nf bGluazsKPiArCj4gKyAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOwo+ICsgICAgICAgdTMy IGhhbmRsZTsKPiArfTsKPiArCj4gIGVudW0gewo+ICAgICAgICAgRk9SQ0VfQ1BVX1JFTE9DID0g MSwKPiAgICAgICAgIEZPUkNFX0dUVF9SRUxPQywKPiBAQCAtMjE5LDE1ICsyMzIsMTQgQEAgc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7IC8q KiBwZXItZmlsZSBsb29rdXAgdGFibGVzIGFuZCBsaW1pdHMgKi8KPiAgICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3M7IC8qKiBpb2N0bCBwYXJhbWV0ZXJzICovCj4g ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZXhlYzsgLyoqIGlvY3Rs IGV4ZWNvYmpbXSAqLwo+IC0gICAgICAgc3RydWN0IGk5MTVfdm1hICoqdm1hOwo+IC0gICAgICAg dW5zaWduZWQgaW50ICpmbGFnczsKPiArICAgICAgIHN0cnVjdCBlYl92bWEgKnZtYTsKPgo+ICAg ICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOyAvKiogZW5naW5lIHRvIHF1ZXVl IHRoZSByZXF1ZXN0IHRvICovCj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY29udGV4 dDsgLyogbG9naWNhbCBzdGF0ZSBmb3IgdGhlIHJlcXVlc3QgKi8KPiAgICAgICAgIHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpnZW1fY29udGV4dDsgLyoqIGNhbGxlcidzIGNvbnRleHQgKi8KPgo+ ICAgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsgLyoqIG91ciByZXF1ZXN0IHRv IGJ1aWxkICovCj4gLSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOyAvKiogaWRlbnRpdHkg b2YgdGhlIGJhdGNoIG9iai92bWEgKi8KPiArICAgICAgIHN0cnVjdCBlYl92bWEgKmJhdGNoOyAv KiogaWRlbnRpdHkgb2YgdGhlIGJhdGNoIG9iai92bWEgKi8KPgo+ICAgICAgICAgLyoqIGFjdHVh bCBzaXplIG9mIGV4ZWNvYmpbXSBhcyB3ZSBtYXkgZXh0ZW5kIGl0IGZvciB0aGUgY21kcGFyc2Vy ICovCj4gICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX2NvdW50Owo+IEBAIC0yNzUsOCArMjg3 LDYgQEAgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciB7Cj4gICAgICAgICBzdHJ1Y3QgaGxpc3RfaGVh ZCAqYnVja2V0czsgLyoqIGh0IGZvciByZWxvY2F0aW9uIGhhbmRsZXMgKi8KPiAgfTsKPgo+IC0j ZGVmaW5lIGV4ZWNfZW50cnkoRUIsIFZNQSkgKCYoRUIpLT5leGVjWyhWTUEpLT5leGVjX2ZsYWdz IC0gKEVCKS0+ZmxhZ3NdKQo+IC0KPiAgLyoKPiAgICogVXNlZCB0byBjb252ZXJ0IGFueSBhZGRy ZXNzIHRvIGNhbm9uaWNhbCBmb3JtLgo+ICAgKiBTdGFydGluZyBmcm9tIGdlbjgsIHNvbWUgY29t bWFuZHMgKGUuZy4gU1RBVEVfQkFTRV9BRERSRVNTLAo+IEBAIC0zODAsOSArMzkwLDkgQEAgZWJf dm1hX21pc3BsYWNlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50 cnksCj4gIHN0YXRpYyBpbmxpbmUgYm9vbAo+ICBlYl9waW5fdm1hKHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViLAo+ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgKmVudHJ5LAo+IC0gICAgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gKyAgICAg ICAgICBzdHJ1Y3QgZWJfdm1hICpldikKPiAgewo+IC0gICAgICAgdW5zaWduZWQgaW50IGV4ZWNf ZmxhZ3MgPSAqdm1hLT5leGVjX2ZsYWdzOwo+ICsgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEg PSBldi0+dm1hOwo+ICAgICAgICAgdTY0IHBpbl9mbGFnczsKPgo+ICAgICAgICAgaWYgKHZtYS0+ bm9kZS5zaXplKQo+IEBAIC0zOTEsMjQgKzQwMSwyNCBAQCBlYl9waW5fdm1hKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICBwaW5fZmxhZ3MgPSBlbnRyeS0+b2Zm c2V0ICYgUElOX09GRlNFVF9NQVNLOwo+Cj4gICAgICAgICBwaW5fZmxhZ3MgfD0gUElOX1VTRVIg fCBQSU5fTk9FVklDVCB8IFBJTl9PRkZTRVRfRklYRUQ7Cj4gLSAgICAgICBpZiAodW5saWtlbHko ZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX05FRURTX0dUVCkpCj4gKyAgICAgICBpZiAodW5saWtl bHkoZXYtPmZsYWdzICYgRVhFQ19PQkpFQ1RfTkVFRFNfR1RUKSkKPiAgICAgICAgICAgICAgICAg cGluX2ZsYWdzIHw9IFBJTl9HTE9CQUw7Cj4KPiAgICAgICAgIGlmICh1bmxpa2VseShpOTE1X3Zt YV9waW4odm1hLCAwLCAwLCBwaW5fZmxhZ3MpKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwo+Cj4gLSAgICAgICBpZiAodW5saWtlbHkoZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX05F RURTX0ZFTkNFKSkgewo+ICsgICAgICAgaWYgKHVubGlrZWx5KGV2LT5mbGFncyAmIEVYRUNfT0JK RUNUX05FRURTX0ZFTkNFKSkgewo+ICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoaTkxNV92 bWFfcGluX2ZlbmNlKHZtYSkpKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaTkxNV92bWFf dW5waW4odm1hKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gICAg ICAgICAgICAgICAgIH0KPgo+ICAgICAgICAgICAgICAgICBpZiAodm1hLT5mZW5jZSkKPiAtICAg ICAgICAgICAgICAgICAgICAgICBleGVjX2ZsYWdzIHw9IF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNF Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIGV2LT5mbGFncyB8PSBfX0VYRUNfT0JKRUNUX0hB U19GRU5DRTsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgKnZtYS0+ZXhlY19mbGFncyA9IGV4ZWNf ZmxhZ3MgfCBfX0VYRUNfT0JKRUNUX0hBU19QSU47Cj4gLSAgICAgICByZXR1cm4gIWViX3ZtYV9t aXNwbGFjZWQoZW50cnksIHZtYSwgZXhlY19mbGFncyk7Cj4gKyAgICAgICBldi0+ZmxhZ3MgfD0g X19FWEVDX09CSkVDVF9IQVNfUElOOwo+ICsgICAgICAgcmV0dXJuICFlYl92bWFfbWlzcGxhY2Vk KGVudHJ5LCB2bWEsIGV2LT5mbGFncyk7Cj4gIH0KPgo+ICBzdGF0aWMgaW5saW5lIHZvaWQgX19l Yl91bnJlc2VydmVfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Cj4gQEAgLTQyMiwxMyArNDMyLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2ViX3VucmVzZXJ2 ZV92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGludCBmbGFncykKPiAgfQo+Cj4g IHN0YXRpYyBpbmxpbmUgdm9pZAo+IC1lYl91bnJlc2VydmVfdm1hKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLCB1bnNpZ25lZCBpbnQgKmZsYWdzKQo+ICtlYl91bnJlc2VydmVfdm1hKHN0cnVjdCBlYl92 bWEgKmV2KQo+ICB7Cj4gLSAgICAgICBpZiAoISgqZmxhZ3MgJiBfX0VYRUNfT0JKRUNUX0hBU19Q SU4pKQo+ICsgICAgICAgaWYgKCEoZXYtPmZsYWdzICYgX19FWEVDX09CSkVDVF9IQVNfUElOKSkK PiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gLSAgICAgICBfX2ViX3VucmVzZXJ2ZV92bWEo dm1hLCAqZmxhZ3MpOwo+IC0gICAgICAgKmZsYWdzICY9IH5fX0VYRUNfT0JKRUNUX1JFU0VSVkVE Owo+ICsgICAgICAgX19lYl91bnJlc2VydmVfdm1hKGV2LT52bWEsIGV2LT5mbGFncyk7Cj4gKyAg ICAgICBldi0+ZmxhZ3MgJj0gfl9fRVhFQ19PQkpFQ1RfUkVTRVJWRUQ7Cj4gIH0KPgo+ICBzdGF0 aWMgaW50Cj4gQEAgLTQ1OCwxMiArNDY4LDYgQEAgZWJfdmFsaWRhdGVfdm1hKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICBlbnRyeS0+cGFkX3RvX3NpemUgPSAw Owo+ICAgICAgICAgfQo+Cj4gLSAgICAgICBpZiAodW5saWtlbHkodm1hLT5leGVjX2ZsYWdzKSkg ewo+IC0gICAgICAgICAgICAgICBEUk1fREVCVUcoIk9iamVjdCBbaGFuZGxlICVkLCBpbmRleCAl ZF0gYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiBvYmplY3QgbGlzdFxuIiwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgIGVudHJ5LT5oYW5kbGUsIChpbnQpKGVudHJ5IC0gZWItPmV4ZWMpKTsK PiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICB9Cj4gLQo+ICAgICAg ICAgLyoKPiAgICAgICAgICAqIEZyb20gZHJtX21tIHBlcnNwZWN0aXZlIGFkZHJlc3Mgc3BhY2Ug aXMgY29udGludW91cywKPiAgICAgICAgICAqIHNvIGZyb20gdGhpcyBwb2ludCB3ZSdyZSBhbHdh eXMgdXNpbmcgbm9uLWNhbm9uaWNhbAo+IEBAIC00OTIsNiArNDk2LDcgQEAgZWJfYWRkX3ZtYShz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50 cnkgPSAmZWItPmV4ZWNbaV07Cj4gKyAgICAgICBzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+dm1h W2ldOwo+ICAgICAgICAgaW50IGVycjsKPgo+ICAgICAgICAgR0VNX0JVR19PTihpOTE1X3ZtYV9p c19jbG9zZWQodm1hKSk7Cj4gQEAgLTUwMiwyNSArNTA3LDE5IEBAIGViX2FkZF92bWEoc3RydWN0 IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy cjsKPiAgICAgICAgIH0KPgo+ICsgICAgICAgZXYtPnZtYSA9IHZtYTsKPiArICAgICAgIGV2LT5l eGVjID0gZW50cnk7Cj4gKyAgICAgICBldi0+ZmxhZ3MgPSBlbnRyeS0+ZmxhZ3M7Cj4gKwo+ICAg ICAgICAgaWYgKGViLT5sdXRfc2l6ZSA+IDApIHsKPiAtICAgICAgICAgICAgICAgdm1hLT5leGVj X2hhbmRsZSA9IGVudHJ5LT5oYW5kbGU7Cj4gLSAgICAgICAgICAgICAgIGhsaXN0X2FkZF9oZWFk KCZ2bWEtPmV4ZWNfbm9kZSwKPiArICAgICAgICAgICAgICAgZXYtPmhhbmRsZSA9IGVudHJ5LT5o YW5kbGU7Cj4gKyAgICAgICAgICAgICAgIGhsaXN0X2FkZF9oZWFkKCZldi0+bm9kZSwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmViLT5idWNrZXRzW2hhc2hfMzIoZW50cnktPmhh bmRsZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWItPmx1dF9zaXplKV0pOwo+ICAgICAgICAgfQo+Cj4gICAgICAgICBpZiAoZW50cnktPnJl bG9jYXRpb25fY291bnQpCj4gLSAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnZtYS0+cmVs b2NfbGluaywgJmViLT5yZWxvY3MpOwo+IC0KPiAtICAgICAgIC8qCj4gLSAgICAgICAgKiBTdGFz aCBhIHBvaW50ZXIgZnJvbSB0aGUgdm1hIHRvIGV4ZWNvYmosIHNvIHdlIGNhbiBxdWVyeSBpdHMg ZmxhZ3MsCj4gLSAgICAgICAgKiBzaXplLCBhbGlnbm1lbnQgZXRjIGFzIHByb3ZpZGVkIGJ5IHRo ZSB1c2VyLiBBbHNvIHdlIHN0YXNoIGEgcG9pbnRlcgo+IC0gICAgICAgICogdG8gdGhlIHZtYSBp bnNpZGUgdGhlIGV4ZWNvYmogc28gdGhhdCB3ZSBjYW4gdXNlIGEgZGlyZWN0IGxvb2t1cAo+IC0g ICAgICAgICogdG8gZmluZCB0aGUgcmlnaHQgdGFyZ2V0IFZNQSB3aGVuIGRvaW5nIHJlbG9jYXRp b25zLgo+IC0gICAgICAgICovCj4gLSAgICAgICBlYi0+dm1hW2ldID0gdm1hOwo+IC0gICAgICAg ZWItPmZsYWdzW2ldID0gZW50cnktPmZsYWdzOwo+IC0gICAgICAgdm1hLT5leGVjX2ZsYWdzID0g JmViLT5mbGFnc1tpXTsKPiArICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmZXYtPnJlbG9j X2xpbmssICZlYi0+cmVsb2NzKTsKPgo+ICAgICAgICAgLyoKPiAgICAgICAgICAqIFNOQSBpcyBk b2luZyBmYW5jeSB0cmlja3Mgd2l0aCBjb21wcmVzc2luZyBiYXRjaCBidWZmZXJzLCB3aGljaCBs ZWFkcwo+IEBAIC01MzMsMjggKzUzMiwyNiBAQCBlYl9hZGRfdm1hKHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViLAo+ICAgICAgICAgICovCj4gICAgICAgICBpZiAoaSA9PSBiYXRjaF9pZHgpIHsK PiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5yZWxvY2F0aW9uX2NvdW50ICYmCj4gLSAgICAg ICAgICAgICAgICAgICAhKGViLT5mbGFnc1tpXSAmIEVYRUNfT0JKRUNUX1BJTk5FRCkpCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgZWItPmZsYWdzW2ldIHw9IF9fRVhFQ19PQkpFQ1RfTkVFRFNf QklBUzsKPiArICAgICAgICAgICAgICAgICAgICEoZXYtPmZsYWdzICYgRVhFQ19PQkpFQ1RfUElO TkVEKSkKPiArICAgICAgICAgICAgICAgICAgICAgICBldi0+ZmxhZ3MgfD0gX19FWEVDX09CSkVD VF9ORUVEU19CSUFTOwo+ICAgICAgICAgICAgICAgICBpZiAoZWItPnJlbG9jX2NhY2hlLmhhc19m ZW5jZSkKPiAtICAgICAgICAgICAgICAgICAgICAgICBlYi0+ZmxhZ3NbaV0gfD0gRVhFQ19PQkpF Q1RfTkVFRFNfRkVOQ0U7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXYtPmZsYWdzIHw9IEVY RUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+Cj4gLSAgICAgICAgICAgICAgIGViLT5iYXRjaCA9IHZt YTsKPiArICAgICAgICAgICAgICAgZWItPmJhdGNoID0gZXY7Cj4gICAgICAgICB9Cj4KPiAgICAg ICAgIGVyciA9IDA7Cj4gLSAgICAgICBpZiAoZWJfcGluX3ZtYShlYiwgZW50cnksIHZtYSkpIHsK PiArICAgICAgIGlmIChlYl9waW5fdm1hKGViLCBlbnRyeSwgZXYpKSB7Cj4gICAgICAgICAgICAg ICAgIGlmIChlbnRyeS0+b2Zmc2V0ICE9IHZtYS0+bm9kZS5zdGFydCkgewo+ICAgICAgICAgICAg ICAgICAgICAgICAgIGVudHJ5LT5vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQgfCBVUERBVEU7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgZWItPmFyZ3MtPmZsYWdzIHw9IF9fRVhFQ19IQVNfUkVM T0M7Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAg ICAgIGViX3VucmVzZXJ2ZV92bWEodm1hLCB2bWEtPmV4ZWNfZmxhZ3MpOwo+ICsgICAgICAgICAg ICAgICBlYl91bnJlc2VydmVfdm1hKGV2KTsKPgo+IC0gICAgICAgICAgICAgICBsaXN0X2FkZF90 YWlsKCZ2bWEtPmV4ZWNfbGluaywgJmViLT51bmJvdW5kKTsKPiArICAgICAgICAgICAgICAgbGlz dF9hZGRfdGFpbCgmZXYtPmJpbmRfbGluaywgJmViLT51bmJvdW5kKTsKPiAgICAgICAgICAgICAg ICAgaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAgICAgICAgICAgICAg ICAgICAgICAgICBlcnIgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiAtICAgICAgICAgICAgICAg aWYgKHVubGlrZWx5KGVycikpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgdm1hLT5leGVjX2Zs YWdzID0gTlVMTDsKPiAgICAgICAgIH0KPiAgICAgICAgIHJldHVybiBlcnI7Cj4gIH0KPiBAQCAt NTc2LDExICs1NzMsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgdXNlX2NwdV9yZWxvYyhjb25zdCBz dHJ1Y3QgcmVsb2NfY2FjaGUgKmNhY2hlLAo+ICAgICAgICAgICAgICAgICBvYmotPmNhY2hlX2xl dmVsICE9IEk5MTVfQ0FDSEVfTk9ORSk7Cj4gIH0KPgo+IC1zdGF0aWMgaW50IGViX3Jlc2VydmVf dm1hKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3N0YXRpYyBpbnQgZWJfcmVzZXJ2ZV92 bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBlYl92bWEgKmV2KQo+ ICB7Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50cnkgPSBl eGVjX2VudHJ5KGViLCB2bWEpOwo+IC0gICAgICAgdW5zaWduZWQgaW50IGV4ZWNfZmxhZ3MgPSAq dm1hLT5leGVjX2ZsYWdzOwo+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgKmVudHJ5ID0gZXYtPmV4ZWM7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZXhlY19mbGFncyA9 IGV2LT5mbGFnczsKPiArICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsKPiAg ICAgICAgIHU2NCBwaW5fZmxhZ3M7Cj4gICAgICAgICBpbnQgZXJyOwo+Cj4gQEAgLTYyNyw4ICs2 MjQsOCBAQCBzdGF0aWMgaW50IGViX3Jlc2VydmVfdm1hKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfZmxhZ3MgfD0gX19FWEVD X09CSkVDVF9IQVNfRkVOQ0U7Cj4gICAgICAgICB9Cj4KPiAtICAgICAgICp2bWEtPmV4ZWNfZmxh Z3MgPSBleGVjX2ZsYWdzIHwgX19FWEVDX09CSkVDVF9IQVNfUElOOwo+IC0gICAgICAgR0VNX0JV R19PTihlYl92bWFfbWlzcGxhY2VkKGVudHJ5LCB2bWEsIGV4ZWNfZmxhZ3MpKTsKPiArICAgICAg IGV2LT5mbGFncyA9IGV4ZWNfZmxhZ3MgfCBfX0VYRUNfT0JKRUNUX0hBU19QSU47Cj4gKyAgICAg ICBHRU1fQlVHX09OKGViX3ZtYV9taXNwbGFjZWQoZW50cnksIHZtYSwgZXYtPmZsYWdzKSk7Cj4K PiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4gQEAgLTYzNyw3ICs2MzQsNyBAQCBzdGF0aWMgaW50 IGViX3Jlc2VydmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gIHsKPiAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGludCBjb3VudCA9IGViLT5idWZmZXJfY291bnQ7Cj4gICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGxhc3Q7Cj4gLSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArICAg ICAgIHN0cnVjdCBlYl92bWEgKmV2Owo+ICAgICAgICAgdW5zaWduZWQgaW50IGksIHBhc3M7Cj4g ICAgICAgICBpbnQgZXJyOwo+Cj4gQEAgLTY1OCw4ICs2NTUsOCBAQCBzdGF0aWMgaW50IGViX3Jl c2VydmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gICAgICAgICBwYXNzID0gMDsKPiAg ICAgICAgIGVyciA9IDA7Cj4gICAgICAgICBkbyB7Cj4gLSAgICAgICAgICAgICAgIGxpc3RfZm9y X2VhY2hfZW50cnkodm1hLCAmZWItPnVuYm91bmQsIGV4ZWNfbGluaykgewo+IC0gICAgICAgICAg ICAgICAgICAgICAgIGVyciA9IGViX3Jlc2VydmVfdm1hKGViLCB2bWEpOwo+ICsgICAgICAgICAg ICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2LCAmZWItPnVuYm91bmQsIGJpbmRfbGluaykgewo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IGViX3Jlc2VydmVfdm1hKGViLCBldik7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAgICAgICB9Cj4gQEAgLTY3MCwyNiArNjY3LDI2 IEBAIHN0YXRpYyBpbnQgZWJfcmVzZXJ2ZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAg ICAgICAgICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmViLT51bmJvdW5kKTsKPiAgICAgICAgICAg ICAgICAgSU5JVF9MSVNUX0hFQUQoJmxhc3QpOwo+ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBmbGFncyA9IGViLT5mbGFnc1tpXTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aTkxNV92bWEgKnZtYSA9IGViLT52bWFbaV07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGViX3ZtYSAqZXYgPSAmZWItPnZtYVtpXTsKPiArICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3MgPSBldi0+ZmxhZ3M7Cj4KPiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9QSU5ORUQgJiYKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmxhZ3MgJiBfX0VYRUNfT0JKRUNUX0hBU19QSU4pCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKPgo+IC0gICAgICAgICAgICAgICAgICAgICAgIGVi X3VucmVzZXJ2ZV92bWEodm1hLCAmZWItPmZsYWdzW2ldKTsKPiArICAgICAgICAgICAgICAgICAg ICAgICBlYl91bnJlc2VydmVfdm1hKGV2KTsKPgo+ICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChmbGFncyAmIEVYRUNfT0JKRUNUX1BJTk5FRCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIFBpbm5lZCBtdXN0IGhhdmUgdGhlaXIgc2xvdCAqLwo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9hZGQoJnZtYS0+ZXhlY19saW5rLCAmZWItPnVuYm91bmQp Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9hZGQoJmV2LT5iaW5kX2xp bmssICZlYi0+dW5ib3VuZCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxh Z3MgJiBfX0VYRUNfT0JKRUNUX05FRURTX01BUCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIE1hcCByZXF1aXJlIHRoZSBsb3dlc3QgMjU2TWlCIChhcGVydHVyZSkgKi8KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19s aW5rLCAmZWItPnVuYm91bmQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlz dF9hZGRfdGFpbCgmZXYtPmJpbmRfbGluaywgJmViLT51bmJvdW5kKTsKPiAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlIGlmICghKGZsYWdzICYgRVhFQ19PQkpFQ1RfU1VQUE9SVFNfNDhCX0FE RFJFU1MpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHJpb3JpdGlzZSA0 R2lCIHJlZ2lvbiBmb3IgcmVzdHJpY3RlZCBibyAqLwo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlzdF9hZGQoJnZtYS0+ZXhlY19saW5rLCAmbGFzdCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZCgmZXYtPmJpbmRfbGluaywgJmxhc3QpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19saW5rLCAmbGFzdCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZldi0+YmluZF9saW5rLCAmbGFzdCk7 Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgICAgbGlzdF9zcGxpY2VfdGFpbCgm bGFzdCwgJmViLT51bmJvdW5kKTsKPgo+IEBAIC04MDgsMTAgKzgwNSw4IEBAIHN0YXRpYyBpbnQg ZWJfbG9va3VwX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gICAgICAgICAgICAg ICAgIGlmICh1bmxpa2VseShlcnIpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJy X3ZtYTsKPgo+IC0gICAgICAgICAgICAgICBHRU1fQlVHX09OKHZtYSAhPSBlYi0+dm1hW2ldKTsK PiAtICAgICAgICAgICAgICAgR0VNX0JVR19PTih2bWEtPmV4ZWNfZmxhZ3MgIT0gJmViLT5mbGFn c1tpXSk7Cj4gICAgICAgICAgICAgICAgIEdFTV9CVUdfT04oZHJtX21tX25vZGVfYWxsb2NhdGVk KCZ2bWEtPm5vZGUpICYmCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgZWJfdm1hX21pc3Bs YWNlZCgmZWItPmV4ZWNbaV0sIHZtYSwgZWItPmZsYWdzW2ldKSk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZWJfdm1hX21pc3BsYWNlZCgmZWItPmV4ZWNbaV0sIHZtYSwgZWItPnZtYVtp XS5mbGFncykpOwo+ICAgICAgICAgfQo+Cj4gICAgICAgICBtdXRleF91bmxvY2soJmViLT5nZW1f Y29udGV4dC0+bXV0ZXgpOwo+IEBAIC04MjIsMjcgKzgxNywyNyBAQCBzdGF0aWMgaW50IGViX2xv b2t1cF92bWFzKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICBlcnJfb2JqOgo+ICAgICAg ICAgaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICBlcnJfdm1hOgo+IC0gICAgICAgZWItPnZt YVtpXSA9IE5VTEw7Cj4gKyAgICAgICBlYi0+dm1hW2ldLnZtYSA9IE5VTEw7Cj4gIGVycl9jdHg6 Cj4gICAgICAgICBtdXRleF91bmxvY2soJmViLT5nZW1fY29udGV4dC0+bXV0ZXgpOwo+ICAgICAg ICAgcmV0dXJuIGVycjsKPiAgfQo+Cj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKgo+ICtzdGF0 aWMgc3RydWN0IGViX3ZtYSAqCj4gIGViX2dldF92bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1 ZmZlciAqZWIsIHVuc2lnbmVkIGxvbmcgaGFuZGxlKQo+ICB7Cj4gICAgICAgICBpZiAoZWItPmx1 dF9zaXplIDwgMCkgewo+ICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlID49IC1lYi0+bHV0X3Np emUpCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gLSAgICAgICAgICAg ICAgIHJldHVybiBlYi0+dm1hW2hhbmRsZV07Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAmZWIt PnZtYVtoYW5kbGVdOwo+ICAgICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICAgICAgc3RydWN0 IGhsaXN0X2hlYWQgKmhlYWQ7Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1h Owo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZWJfdm1hICpldjsKPgo+ICAgICAgICAgICAgICAg ICBoZWFkID0gJmViLT5idWNrZXRzW2hhc2hfMzIoaGFuZGxlLCBlYi0+bHV0X3NpemUpXTsKPiAt ICAgICAgICAgICAgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCBoZWFkLCBleGVjX25vZGUp IHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAodm1hLT5leGVjX2hhbmRsZSA9PSBoYW5k bGUpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm1hOwo+ICsgICAg ICAgICAgICAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShldiwgaGVhZCwgbm9kZSkgewo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChldi0+aGFuZGxlID09IGhhbmRsZSkKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldjsKPiAgICAgICAgICAgICAgICAgfQo+ICAg ICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiAgICAgICAgIH0KPiBAQCAtODU0LDIwICs4NDks MTggQEAgc3RhdGljIHZvaWQgZWJfcmVsZWFzZV92bWFzKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViKQo+ICAgICAgICAgdW5zaWduZWQgaW50IGk7Cj4KPiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAq dm1hID0gZWItPnZtYVtpXTsKPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzID0g ZWItPmZsYWdzW2ldOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+ dm1hW2ldOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGV2LT52bWE7 Cj4KPiAgICAgICAgICAgICAgICAgaWYgKCF2bWEpCj4gICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4KPiAtICAgICAgICAgICAgICAgR0VNX0JVR19PTih2bWEtPmV4ZWNfZmxhZ3MgIT0g JmViLT5mbGFnc1tpXSk7Cj4gLSAgICAgICAgICAgICAgIHZtYS0+ZXhlY19mbGFncyA9IE5VTEw7 Cj4gLSAgICAgICAgICAgICAgIGViLT52bWFbaV0gPSBOVUxMOwo+ICsgICAgICAgICAgICAgICBl Yi0+dm1hW2ldLnZtYSA9IE5VTEw7Cj4KPiAtICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgX19F WEVDX09CSkVDVF9IQVNfUElOKQo+IC0gICAgICAgICAgICAgICAgICAgICAgIF9fZWJfdW5yZXNl cnZlX3ZtYSh2bWEsIGZsYWdzKTsKPiArICAgICAgICAgICAgICAgaWYgKGV2LT5mbGFncyAmIF9f RVhFQ19PQkpFQ1RfSEFTX1BJTikKPiArICAgICAgICAgICAgICAgICAgICAgICBfX2ViX3VucmVz ZXJ2ZV92bWEodm1hLCBldi0+ZmxhZ3MpOwo+Cj4gLSAgICAgICAgICAgICAgIGlmIChmbGFncyAm IF9fRVhFQ19PQkpFQ1RfSEFTX1JFRikKPiArICAgICAgICAgICAgICAgaWYgKGV2LT5mbGFncyAm IF9fRVhFQ19PQkpFQ1RfSEFTX1JFRikKPiAgICAgICAgICAgICAgICAgICAgICAgICBpOTE1X3Zt YV9wdXQodm1hKTsKPiAgICAgICAgIH0KPiAgfQo+IEBAIC0xMzc3LDEwICsxMzcwLDEwIEBAIHJl bG9jYXRlX2VudHJ5KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+Cj4gIHN0YXRpYyB1NjQKPiAgZWJf cmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gLSAgICAgICAgICAg ICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gKyAgICAgICAgICAgICAgICAgc3RydWN0IGVi X3ZtYSAqZXYsCj4gICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9y ZWxvY2F0aW9uX2VudHJ5ICpyZWxvYykKPiAgewo+IC0gICAgICAgc3RydWN0IGk5MTVfdm1hICp0 YXJnZXQ7Cj4gKyAgICAgICBzdHJ1Y3QgZWJfdm1hICp0YXJnZXQ7Cj4gICAgICAgICBpbnQgZXJy Owo+Cj4gICAgICAgICAvKiB3ZSd2ZSBhbHJlYWR5IGhvbGQgYSByZWZlcmVuY2UgdG8gYWxsIHZh bGlkIG9iamVjdHMgKi8KPiBAQCAtMTQxMiw3ICsxNDA1LDcgQEAgZWJfcmVsb2NhdGVfZW50cnko c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAgICAgICB9Cj4KPiAgICAgICAgIGlmIChy ZWxvYy0+d3JpdGVfZG9tYWluKSB7Cj4gLSAgICAgICAgICAgICAgICp0YXJnZXQtPmV4ZWNfZmxh Z3MgfD0gRVhFQ19PQkpFQ1RfV1JJVEU7Cj4gKyAgICAgICAgICAgICAgIHRhcmdldC0+ZmxhZ3Mg fD0gRVhFQ19PQkpFQ1RfV1JJVEU7Cj4KPiAgICAgICAgICAgICAgICAgLyoKPiAgICAgICAgICAg ICAgICAgICogU2FuZHlicmlkZ2UgUFBHVFQgZXJyYXRhOiBXZSBuZWVkIGEgZ2xvYmFsIGd0dCBt YXBwaW5nCj4gQEAgLTE0MjIsNyArMTQxNSw4IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBp OTE1X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICAgKi8KPiAgICAgICAgICAgICAg ICAgaWYgKHJlbG9jLT53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9O ICYmCj4gICAgICAgICAgICAgICAgICAgICBJU19HRU4oZWItPmk5MTUsIDYpKSB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgZXJyID0gaTkxNV92bWFfYmluZCh0YXJnZXQsIHRhcmdldC0+b2Jq LT5jYWNoZV9sZXZlbCwKPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBpOTE1X3ZtYV9i aW5kKHRhcmdldC0+dm1hLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0LT52bWEtPm9iai0+Y2FjaGVfbGV2ZWwsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQSU5fR0xPQkFMLCBOVUxMKTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoV0FSTl9PTkNFKGVyciwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGZhaWx1cmUgdG8gYmluZCB0YXJnZXQgVk1BISIp KQo+IEBAIC0xNDM1LDE3ICsxNDI5LDE3IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICogbW9yZSB3b3JrIG5lZWRzIHRvIGJlIGRvbmUu Cj4gICAgICAgICAgKi8KPiAgICAgICAgIGlmICghREJHX0ZPUkNFX1JFTE9DICYmCj4gLSAgICAg ICAgICAgZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQtPm5vZGUuc3RhcnQpID09IHJlbG9jLT5w cmVzdW1lZF9vZmZzZXQpCj4gKyAgICAgICAgICAgZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQt PnZtYS0+bm9kZS5zdGFydCkgPT0gcmVsb2MtPnByZXN1bWVkX29mZnNldCkKPiAgICAgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4KPiAgICAgICAgIC8qIENoZWNrIHRoYXQgdGhlIHJlbG9jYXRpb24g YWRkcmVzcyBpcyB2YWxpZC4uLiAqLwo+ICAgICAgICAgaWYgKHVubGlrZWx5KHJlbG9jLT5vZmZz ZXQgPgo+IC0gICAgICAgICAgICAgICAgICAgIHZtYS0+c2l6ZSAtIChlYi0+cmVsb2NfY2FjaGUu dXNlXzY0Yml0X3JlbG9jID8gOCA6IDQpKSkgewo+ICsgICAgICAgICAgICAgICAgICAgIGV2LT52 bWEtPnNpemUgLSAoZWItPnJlbG9jX2NhY2hlLnVzZV82NGJpdF9yZWxvYyA/IDggOiA0KSkpIHsK PiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJSZWxvY2F0aW9uIGJleW9uZCBvYmplY3QgYm91 bmRzOiAiCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAidGFyZ2V0ICVkIG9mZnNldCAlZCBz aXplICVkLlxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9jLT50YXJnZXRfaGFu ZGxlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClyZWxvYy0+b2Zmc2V0LAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgKGludCl2bWEtPnNpemUpOwo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgKGludClldi0+dm1hLT5zaXplKTsKPiAgICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gICAgICAgICB9Cj4gICAgICAgICBpZiAodW5saWtlbHkocmVsb2MtPm9mZnNl dCAmIDMpKSB7Cj4gQEAgLTE0NjQsMTggKzE0NTgsMTggQEAgZWJfcmVsb2NhdGVfZW50cnkoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAgICAgICAgKiBkbyByZWxvY2F0aW9ucyB3ZSBh cmUgYWxyZWFkeSBzdGFsbGluZywgZGlzYWJsZSB0aGUgdXNlcidzIG9wdAo+ICAgICAgICAgICog b3V0IG9mIG91ciBzeW5jaHJvbmlzYXRpb24uCj4gICAgICAgICAgKi8KPiAtICAgICAgICp2bWEt PmV4ZWNfZmxhZ3MgJj0gfkVYRUNfT0JKRUNUX0FTWU5DOwo+ICsgICAgICAgZXYtPmZsYWdzICY9 IH5FWEVDX09CSkVDVF9BU1lOQzsKPgo+ICAgICAgICAgLyogYW5kIHVwZGF0ZSB0aGUgdXNlcidz IHJlbG9jYXRpb24gZW50cnkgKi8KPiAtICAgICAgIHJldHVybiByZWxvY2F0ZV9lbnRyeSh2bWEs IHJlbG9jLCBlYiwgdGFyZ2V0KTsKPiArICAgICAgIHJldHVybiByZWxvY2F0ZV9lbnRyeShldi0+ dm1hLCByZWxvYywgZWIsIHRhcmdldC0+dm1hKTsKPiAgfQo+Cj4gLXN0YXRpYyBpbnQgZWJfcmVs b2NhdGVfdm1hKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiArc3RhdGljIGludCBlYl9yZWxvY2F0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAq ZWIsIHN0cnVjdCBlYl92bWEgKmV2KQo+ICB7Cj4gICNkZWZpbmUgTl9SRUxPQyh4KSAoKHgpIC8g c2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSkpCj4gICAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgc3RhY2tbTl9SRUxPQyg1MTIpXTsK PiAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSBfX3VzZXIgKnVy ZWxvY3M7Cj4gLSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq ZW50cnkgPSBleGVjX2VudHJ5KGViLCB2bWEpOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7Cj4gICAgICAgICB1bnNpZ25l ZCBpbnQgcmVtYWluOwo+Cj4gICAgICAgICB1cmVsb2NzID0gdTY0X3RvX3VzZXJfcHRyKGVudHJ5 LT5yZWxvY3NfcHRyKTsKPiBAQCAtMTUxNSw3ICsxNTA5LDcgQEAgc3RhdGljIGludCBlYl9yZWxv Y2F0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+Cj4gICAgICAgICAgICAgICAgIHJlbWFpbiAtPSBjb3VudDsKPiAgICAgICAgICAgICAgICAg ZG8gewo+IC0gICAgICAgICAgICAgICAgICAgICAgIHU2NCBvZmZzZXQgPSBlYl9yZWxvY2F0ZV9l bnRyeShlYiwgdm1hLCByKTsKPiArICAgICAgICAgICAgICAgICAgICAgICB1NjQgb2Zmc2V0ID0g ZWJfcmVsb2NhdGVfZW50cnkoZWIsIGV2LCByKTsKPgo+ICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChsaWtlbHkob2Zmc2V0ID09IDApKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIGlmICgoczY0KW9mZnNldCA8IDApIHsKPiBAQCAtMTU1OCwxNiArMTU1MiwxNiBAQCBzdGF0 aWMgaW50IGViX3JlbG9jYXRlX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0 IGk5MTVfdm1hICp2bWEpCj4gIH0KPgo+ICBzdGF0aWMgaW50Cj4gLWViX3JlbG9jYXRlX3ZtYV9z bG93KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAr ZWJfcmVsb2NhdGVfdm1hX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBl Yl92bWEgKmV2KQo+ICB7Cj4gLSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNf b2JqZWN0MiAqZW50cnkgPSBleGVjX2VudHJ5KGViLCB2bWEpOwo+ICsgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7Cj4gICAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jcyA9Cj4gICAgICAg ICAgICAgICAgIHU2NF90b19wdHIodHlwZW9mKCpyZWxvY3MpLCBlbnRyeS0+cmVsb2NzX3B0cik7 Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgaTsKPiAgICAgICAgIGludCBlcnI7Cj4KPiAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBlbnRyeS0+cmVsb2NhdGlvbl9jb3VudDsgaSsrKSB7Cj4gLSAgICAg ICAgICAgICAgIHU2NCBvZmZzZXQgPSBlYl9yZWxvY2F0ZV9lbnRyeShlYiwgdm1hLCAmcmVsb2Nz W2ldKTsKPiArICAgICAgICAgICAgICAgdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGVi LCBldiwgJnJlbG9jc1tpXSk7Cj4KPiAgICAgICAgICAgICAgICAgaWYgKChzNjQpb2Zmc2V0IDwg MCkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IChpbnQpb2Zmc2V0Owo+IEBAIC0x NzExLDcgKzE3MDUsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3Nsb3coc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmZWItPmk5MTUtPmRybTsKPiAgICAgICAgIGJvb2wgaGF2ZV9jb3B5ID0gZmFsc2U7 Cj4gLSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArICAgICAgIHN0cnVjdCBlYl92bWEg KmV2Owo+ICAgICAgICAgaW50IGVyciA9IDA7Cj4KPiAgcmVwZWF0Ogo+IEBAIC0xNzY3LDE1ICsx NzYxLDE1IEBAIHN0YXRpYyBub2lubGluZSBpbnQgZWJfcmVsb2NhdGVfc2xvdyhzdHJ1Y3QgaTkx NV9leGVjYnVmZmVyICplYikKPgo+ICAgICAgICAgR0VNX0JVR19PTighZWItPmJhdGNoKTsKPgo+ IC0gICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZlYi0+cmVsb2NzLCByZWxvY19saW5r KSB7Cj4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2LCAmZWItPnJlbG9jcywgcmVsb2Nf bGluaykgewo+ICAgICAgICAgICAgICAgICBpZiAoIWhhdmVfY29weSkgewo+ICAgICAgICAgICAg ICAgICAgICAgICAgIHBhZ2VmYXVsdF9kaXNhYmxlKCk7Cj4gLSAgICAgICAgICAgICAgICAgICAg ICAgZXJyID0gZWJfcmVsb2NhdGVfdm1hKGViLCB2bWEpOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGVyciA9IGViX3JlbG9jYXRlX3ZtYShlYiwgZXYpOwo+ICAgICAgICAgICAgICAgICAgICAg ICAgIHBhZ2VmYXVsdF9lbmFibGUoKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJy KQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXBlYXQ7Cj4gICAgICAg ICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gZWJfcmVs b2NhdGVfdm1hX3Nsb3coZWIsIHZtYSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0g ZWJfcmVsb2NhdGVfdm1hX3Nsb3coZWIsIGV2KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoZXJyKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7Cj4gICAg ICAgICAgICAgICAgIH0KPiBAQCAtMTgyMCwxMCArMTgxNCwxMCBAQCBzdGF0aWMgaW50IGViX3Jl bG9jYXRlKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+Cj4gICAgICAgICAvKiBUaGUgb2Jq ZWN0cyBhcmUgaW4gdGhlaXIgZmluYWwgbG9jYXRpb25zLCBhcHBseSB0aGUgcmVsb2NhdGlvbnMu ICovCj4gICAgICAgICBpZiAoZWItPmFyZ3MtPmZsYWdzICYgX19FWEVDX0hBU19SRUxPQykgewo+ IC0gICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArICAgICAgICAgICAgICAg c3RydWN0IGViX3ZtYSAqZXY7Cj4KPiAtICAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZlYi0+cmVsb2NzLCByZWxvY19saW5rKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGViX3JlbG9jYXRlX3ZtYShlYiwgdm1hKSkKPiArICAgICAgICAgICAgICAgbGlzdF9m b3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xpbmspIHsKPiArICAgICAgICAg ICAgICAgICAgICAgICBpZiAoZWJfcmVsb2NhdGVfdm1hKGViLCBldikpCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIHNsb3c7Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAg ICAgIH0KPiBAQCAtMTg0NCwzOSArMTgzOCwzNCBAQCBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1 KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICAgICAgICAgd3dfYWNxdWlyZV9pbml0KCZh Y3F1aXJlLCAmcmVzZXJ2YXRpb25fd3dfY2xhc3MpOwo+Cj4gICAgICAgICBmb3IgKGkgPSAwOyBp IDwgY291bnQ7IGkrKykgewo+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9 IGViLT52bWFbaV07Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBlYl92bWEgKmV2ID0gJmViLT52 bWFbaV07Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsK Pgo+ICAgICAgICAgICAgICAgICBlcnIgPSB3d19tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnZt YS0+cmVzdi0+bG9jaywgJmFjcXVpcmUpOwo+IC0gICAgICAgICAgICAgICBpZiAoIWVycikKPiAt ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAgICAgICAgIEdF TV9CVUdfT04oZXJyID09IC1FQUxSRUFEWSk7IC8qIE5vIGR1cGxpY2F0ZSB2bWEgKi8KPiAtCj4g ICAgICAgICAgICAgICAgIGlmIChlcnIgPT0gLUVERUFETEspIHsKPiAgICAgICAgICAgICAgICAg ICAgICAgICBHRU1fQlVHX09OKGkgPT0gMCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZG8g ewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGogPSBpIC0gMTsKPgo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3dfbXV0ZXhfdW5sb2NrKCZlYi0+dm1hW2pd LT5yZXN2LT5sb2NrKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd3X211dGV4 X3VubG9jaygmZWItPnZtYVtqXS52bWEtPnJlc3YtPmxvY2spOwo+Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzd2FwKGViLT5mbGFnc1tpXSwgZWItPmZsYWdzW2pdKTsKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoZWItPnZtYVtpXSwgIGViLT52bWFbal0p Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWItPnZtYVtpXS0+ZXhlY19mbGFn cyA9ICZlYi0+ZmxhZ3NbaV07Cj4gICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1p KTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBHRU1fQlVHX09OKHZtYSAhPSBlYi0+dm1hWzBd KTsKPiAtICAgICAgICAgICAgICAgICAgICAgICB2bWEtPmV4ZWNfZmxhZ3MgPSAmZWItPmZsYWdz WzBdOwo+Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gd3dfbXV0ZXhfbG9ja19zbG93 X2ludGVycnVwdGlibGUoJnZtYS0+cmVzdi0+bG9jaywKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWNxdWlyZSk7Cj4gICAg ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgaWYgKGVyciA9PSAtRUFMUkVBRFkpCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gMDsKPiAgICAgICAgICAgICAgICAgaWYgKGVy cikKPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgIH0KPiAgICAgICAg IHd3X2FjcXVpcmVfZG9uZSgmYWNxdWlyZSk7Cj4KPiAgICAgICAgIHdoaWxlIChpLS0pIHsKPiAt ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzID0gZWItPmZsYWdzW2ldOwo+IC0gICAg ICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGViLT52bWFbaV07Cj4gKyAgICAgICAg ICAgICAgIHN0cnVjdCBlYl92bWEgKmV2ID0gJmViLT52bWFbaV07Cj4gKyAgICAgICAgICAgICAg IHN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsKPiArICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzID0gZXYtPmZsYWdzOwo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4KPiAgICAgICAgICAgICAgICAgYXNzZXJ0 X3ZtYV9oZWxkKHZtYSk7Cj4gQEAgLTE5MjAsMTAgKzE5MDksMTAgQEAgc3RhdGljIGludCBlYl9t b3ZlX3RvX2dwdShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAgICAgICAgICAgICAgICAg aTkxNV92bWFfdW5sb2NrKHZtYSk7Cj4KPiAgICAgICAgICAgICAgICAgX19lYl91bnJlc2VydmVf dm1hKHZtYSwgZmxhZ3MpOwo+IC0gICAgICAgICAgICAgICB2bWEtPmV4ZWNfZmxhZ3MgPSBOVUxM Owo+IC0KPiAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGZsYWdzICYgX19FWEVDX09CSkVD VF9IQVNfUkVGKSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBpOTE1X3ZtYV9wdXQodm1hKTsK PiArCj4gKyAgICAgICAgICAgICAgIGV2LT52bWEgPSBOVUxMOwo+ICAgICAgICAgfQo+ICAgICAg ICAgd3dfYWNxdWlyZV9maW5pKCZhY3F1aXJlKTsKPgo+IEBAIC0yMDAxLDcgKzE5OTAsNyBAQCBz dGF0aWMgc3RydWN0IGk5MTVfdm1hICplYl9wYXJzZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICpl YiwgYm9vbCBpc19tYXN0ZXIpCj4gICAgICAgICAgICAgICAgIHJldHVybiBFUlJfQ0FTVChwb29s KTsKPgo+ICAgICAgICAgZXJyID0gaW50ZWxfZW5naW5lX2NtZF9wYXJzZXIoZWItPmVuZ2luZSwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGViLT5iYXRjaC0+b2JqLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWItPmJhdGNoLT52bWEtPm9i aiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2wtPm9iaiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGViLT5iYXRjaF9zdGFydF9vZmZz ZXQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYi0+YmF0Y2hfbGVu LAo+IEBAIC0yMDE4LDEwICsyMDA3LDkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqZWJfcGFy c2Uoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wgaXNfbWFzdGVyKQo+ICAgICAgICAg aWYgKElTX0VSUih2bWEpKQo+ICAgICAgICAgICAgICAgICBnb3RvIGVycjsKPgo+IC0gICAgICAg ZWItPnZtYVtlYi0+YnVmZmVyX2NvdW50XSA9IGk5MTVfdm1hX2dldCh2bWEpOwo+IC0gICAgICAg ZWItPmZsYWdzW2ViLT5idWZmZXJfY291bnRdID0KPiArICAgICAgIGViLT52bWFbZWItPmJ1ZmZl cl9jb3VudF0udm1hID0gaTkxNV92bWFfZ2V0KHZtYSk7Cj4gKyAgICAgICBlYi0+dm1hW2ViLT5i dWZmZXJfY291bnRdLmZsYWdzID0KPiAgICAgICAgICAgICAgICAgX19FWEVDX09CSkVDVF9IQVNf UElOIHwgX19FWEVDX09CSkVDVF9IQVNfUkVGOwo+IC0gICAgICAgdm1hLT5leGVjX2ZsYWdzID0g JmViLT5mbGFnc1tlYi0+YnVmZmVyX2NvdW50XTsKPiAgICAgICAgIGViLT5idWZmZXJfY291bnQr KzsKPgo+ICAgICAgICAgdm1hLT5wcml2YXRlID0gcG9vbDsKPiBAQCAtMjA0NCw3ICsyMDMyLDcg QEAgYWRkX3RvX2NsaWVudChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRybV9maWxl ICpmaWxlKQo+ICAgICAgICAgc3Bpbl91bmxvY2soJmZpbGVfcHJpdi0+bW0ubG9jayk7Cj4gIH0K Pgo+IC1zdGF0aWMgaW50IGViX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAr c3RhdGljIGludCBlYl9zdWJtaXQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBp OTE1X3ZtYSAqYmF0Y2gpCj4gIHsKPiAgICAgICAgIGludCBlcnI7Cj4KPiBAQCAtMjA3MSw3ICsy MDU5LDcgQEAgc3RhdGljIGludCBlYl9zdWJtaXQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIp Cj4gICAgICAgICB9Cj4KPiAgICAgICAgIGVyciA9IGViLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQo ZWItPnJlcXVlc3QsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVi LT5iYXRjaC0+bm9kZS5zdGFydCArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJhdGNoLT5ub2RlLnN0YXJ0ICsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWItPmJhdGNoX2xlbiwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWItPmJhdGNoX2ZsYWdzKTsKPiBAQCAtMjQzNCw2ICsyNDIy LDcgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAg ICAgICAgc3RydWN0IGRtYV9mZW5jZSAqaW5fZmVuY2UgPSBOVUxMOwo+ICAgICAgICAgc3RydWN0 IGRtYV9mZW5jZSAqZXhlY19mZW5jZSA9IE5VTEw7Cj4gICAgICAgICBzdHJ1Y3Qgc3luY19maWxl ICpvdXRfZmVuY2UgPSBOVUxMOwo+ICsgICAgICAgc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKPiAg ICAgICAgIGludCBvdXRfZmVuY2VfZmQgPSAtMTsKPiAgICAgICAgIGludCBlcnI7Cj4KPiBAQCAt MjQ0OCw5ICsyNDM3LDggQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAgICAgICAgICAgICAgICBhcmdzLT5mbGFncyB8PSBfX0VYRUNfSEFTX1JFTE9D Owo+Cj4gICAgICAgICBlYi5leGVjID0gZXhlYzsKPiAtICAgICAgIGViLnZtYSA9IChzdHJ1Y3Qg aTkxNV92bWEgKiopKGV4ZWMgKyBhcmdzLT5idWZmZXJfY291bnQgKyAxKTsKPiAtICAgICAgIGVi LnZtYVswXSA9IE5VTEw7Cj4gLSAgICAgICBlYi5mbGFncyA9ICh1bnNpZ25lZCBpbnQgKikoZWIu dm1hICsgYXJncy0+YnVmZmVyX2NvdW50ICsgMSk7Cj4gKyAgICAgICBlYi52bWEgPSAoc3RydWN0 IGViX3ZtYSAqKShleGVjICsgYXJncy0+YnVmZmVyX2NvdW50ICsgMSk7Cj4gKyAgICAgICBlYi52 bWFbMF0udm1hID0gTlVMTDsKPgo+ICAgICAgICAgZWIuaW52YWxpZF9mbGFncyA9IF9fRVhFQ19P QkpFQ1RfVU5LTk9XTl9GTEFHUzsKPiAgICAgICAgIHJlbG9jX2NhY2hlX2luaXQoJmViLnJlbG9j X2NhY2hlLCBlYi5pOTE1KTsKPiBAQCAtMjUyNywxMyArMjUxNSwxNiBAQCBpOTE1X2dlbV9kb19l eGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAgICAgICAgICAgICAgIGdvdG8g ZXJyX3ZtYTsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgaWYgKHVubGlrZWx5KCplYi5iYXRjaC0+ ZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX1dSSVRFKSkgewo+ICsgICAgICAgaWYgKHVubGlrZWx5 KGViLmJhdGNoLT5mbGFncyAmIEVYRUNfT0JKRUNUX1dSSVRFKSkgewo+ICAgICAgICAgICAgICAg ICBEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gdXNlIHNlbGYtbW9kaWZ5aW5nIGJhdGNoIGJ1ZmZl clxuIik7Cj4gICAgICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gICAgICAgICAgICAgICAg IGdvdG8gZXJyX3ZtYTsKPiAgICAgICAgIH0KPiAtICAgICAgIGlmIChlYi5iYXRjaF9zdGFydF9v ZmZzZXQgPiBlYi5iYXRjaC0+c2l6ZSB8fAo+IC0gICAgICAgICAgIGViLmJhdGNoX2xlbiA+IGVi LmJhdGNoLT5zaXplIC0gZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0KSB7Cj4gKwo+ICsgICAgICAgYmF0 Y2ggPSBlYi5iYXRjaC0+dm1hOwo+ICsgICAgICAgaWYgKHJhbmdlX292ZXJmbG93c190KHU2NCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYi5iYXRjaF9zdGFydF9vZmZzZXQsIGVi LmJhdGNoX2xlbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaC0+c2l6ZSkp IHsKPiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIHVzZSBvdXQtb2Yt Ym91bmRzIGJhdGNoXG4iKTsKPiAgICAgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiAgICAg ICAgICAgICAgICAgZ290byBlcnJfdm1hOwo+IEBAIC0yNTYwLDEyICsyNTUxLDEyIEBAIGk5MTVf Z2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KPiAgICAgICAgICAgICAgICAgICAgICAgICBlYi5iYXRjaF9mbGFncyB8 PSBJOTE1X0RJU1BBVENIX1NFQ1VSRTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBlYi5iYXRj aF9zdGFydF9vZmZzZXQgPSAwOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIGViLmJhdGNoID0g dm1hOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gdm1hOwo+ICAgICAgICAgICAg ICAgICB9Cj4gICAgICAgICB9Cj4KPiAgICAgICAgIGlmIChlYi5iYXRjaF9sZW4gPT0gMCkKPiAt ICAgICAgICAgICAgICAgZWIuYmF0Y2hfbGVuID0gZWIuYmF0Y2gtPnNpemUgLSBlYi5iYXRjaF9z dGFydF9vZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIGViLmJhdGNoX2xlbiA9IGJhdGNoLT5zaXpl IC0gZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0Owo+Cj4gICAgICAgICAvKgo+ICAgICAgICAgICogc25i L2l2Yi92bHYgY29uZmxhdGUgdGhlICJiYXRjaCBpbiBwcGd0dCIgYml0IHdpdGggdGhlICJub24t c2VjdXJlCj4gQEAgLTI1ODQsMTMgKzI1NzUsMTMgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgICAgICAgICAgICAgICAgKiAgIGZpdHRpbmcgZHVl IHRvIGZyYWdtZW50YXRpb24uCj4gICAgICAgICAgICAgICAgICAqIFNvIHRoaXMgaXMgYWN0dWFs bHkgc2FmZS4KPiAgICAgICAgICAgICAgICAgICovCj4gLSAgICAgICAgICAgICAgIHZtYSA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihlYi5iYXRjaC0+b2JqLCBOVUxMLCAwLCAwLCAwKTsKPiAr ICAgICAgICAgICAgICAgdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGJhdGNoLT5vYmos IE5VTEwsIDAsIDAsIDApOwo+ICAgICAgICAgICAgICAgICBpZiAoSVNfRVJSKHZtYSkpIHsKPiAg ICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKHZtYSk7Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgZ290byBlcnJfdm1hOwo+ICAgICAgICAgICAgICAgICB9Cj4KPiAtICAgICAg ICAgICAgICAgZWIuYmF0Y2ggPSB2bWE7Cj4gKyAgICAgICAgICAgICAgIGJhdGNoID0gdm1hOwo+ ICAgICAgICAgfQo+Cj4gICAgICAgICAvKiBBbGwgR1BVIHJlbG9jYXRpb24gYmF0Y2hlcyBtdXN0 IGJlIHN1Ym1pdHRlZCBwcmlvciB0byB0aGUgdXNlciBycSAqLwo+IEBAIC0yNjM3LDEyICsyNjI4 LDEyIEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg ICAgICAgICAqIGluYWN0aXZlX2xpc3QgYW5kIGxvc2UgaXRzIGFjdGl2ZSByZWZlcmVuY2UuIEhl bmNlIHdlIGRvIG5vdCBuZWVkCj4gICAgICAgICAgKiB0byBleHBsaWNpdGx5IGhvbGQgYW5vdGhl ciByZWZlcmVuY2UgaGVyZS4KPiAgICAgICAgICAqLwo+IC0gICAgICAgZWIucmVxdWVzdC0+YmF0 Y2ggPSBlYi5iYXRjaDsKPiAtICAgICAgIGlmIChlYi5iYXRjaC0+cHJpdmF0ZSkKPiAtICAgICAg ICAgICAgICAgaW50ZWxfZW5naW5lX3Bvb2xfbWFya19hY3RpdmUoZWIuYmF0Y2gtPnByaXZhdGUs IGViLnJlcXVlc3QpOwo+ICsgICAgICAgZWIucmVxdWVzdC0+YmF0Y2ggPSBiYXRjaDsKPiArICAg ICAgIGlmIChiYXRjaC0+cHJpdmF0ZSkKPiArICAgICAgICAgICAgICAgaW50ZWxfZW5naW5lX3Bv b2xfbWFya19hY3RpdmUoYmF0Y2gtPnByaXZhdGUsIGViLnJlcXVlc3QpOwo+Cj4gICAgICAgICB0 cmFjZV9pOTE1X3JlcXVlc3RfcXVldWUoZWIucmVxdWVzdCwgZWIuYmF0Y2hfZmxhZ3MpOwo+IC0g ICAgICAgZXJyID0gZWJfc3VibWl0KCZlYik7Cj4gKyAgICAgICBlcnIgPSBlYl9zdWJtaXQoJmVi LCBiYXRjaCk7Cj4gIGVycl9yZXF1ZXN0Ogo+ICAgICAgICAgYWRkX3RvX2NsaWVudChlYi5yZXF1 ZXN0LCBmaWxlKTsKPiAgICAgICAgIGk5MTVfcmVxdWVzdF9hZGQoZWIucmVxdWVzdCk7Cj4gQEAg LTI2NjMsOSArMjY1NCw5IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPgo+ICBlcnJfYmF0Y2hfdW5waW46Cj4gICAgICAgICBpZiAoZWIuYmF0Y2hfZmxh Z3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSkKPiAtICAgICAgICAgICAgICAgaTkxNV92bWFfdW5w aW4oZWIuYmF0Y2gpOwo+IC0gICAgICAgaWYgKGViLmJhdGNoLT5wcml2YXRlKQo+IC0gICAgICAg ICAgICAgICBpbnRlbF9lbmdpbmVfcG9vbF9wdXQoZWIuYmF0Y2gtPnByaXZhdGUpOwo+ICsgICAg ICAgICAgICAgICBpOTE1X3ZtYV91bnBpbihiYXRjaCk7Cj4gKyAgICAgICBpZiAoYmF0Y2gtPnBy aXZhdGUpCj4gKyAgICAgICAgICAgICAgIGludGVsX2VuZ2luZV9wb29sX3B1dChiYXRjaC0+cHJp dmF0ZSk7Cj4gIGVycl92bWE6Cj4gICAgICAgICBpZiAoZWIuZXhlYykKPiAgICAgICAgICAgICAg ICAgZWJfcmVsZWFzZV92bWFzKCZlYik7Cj4gQEAgLTI2ODgsOSArMjY3OSw3IEBAIGk5MTVfZ2Vt X2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPgo+ICBzdGF0aWMgc2l6ZV90 IGViX2VsZW1lbnRfc2l6ZSh2b2lkKQo+ICB7Cj4gLSAgICAgICByZXR1cm4gKHNpemVvZihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MikgKwo+IC0gICAgICAgICAgICAgICBzaXplb2Yo c3RydWN0IGk5MTVfdm1hICopICsKPiAtICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGlu dCkpOwo+ICsgICAgICAgcmV0dXJuIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MikgKyBzaXplb2Yoc3RydWN0IGViX3ZtYSk7Cj4gIH0KPgo+ICBzdGF0aWMgYm9vbCBjaGVj a19idWZmZXJfY291bnQoc2l6ZV90IGNvdW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+IGlu ZGV4IDQ2NTkzMjgxM2JjNS4uNzE0MDIwNTZkODQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zt YS5oCj4gQEAgLTE0NywyMSArMTQ3LDEwIEBAIHN0cnVjdCBpOTE1X3ZtYSB7Cj4gICAgICAgICBz dHJ1Y3QgcmJfbm9kZSBvYmpfbm9kZTsKPiAgICAgICAgIHN0cnVjdCBobGlzdF9ub2RlIG9ial9o YXNoOwo+Cj4gLSAgICAgICAvKiogVGhpcyB2bWEncyBwbGFjZSBpbiB0aGUgZXhlY2J1ZiByZXNl cnZhdGlvbiBsaXN0ICovCj4gLSAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNfbGluazsKPiAt ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVsb2NfbGluazsKPiAtCj4gICAgICAgICAvKiogVGhp cyB2bWEncyBwbGFjZSBpbiB0aGUgZXZpY3Rpb24gbGlzdCAqLwo+ICAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBldmljdF9saW5rOwo+Cj4gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNsb3NlZF9s aW5rOwo+IC0KPiAtICAgICAgIC8qKgo+IC0gICAgICAgICogVXNlZCBmb3IgcGVyZm9ybWluZyBy ZWxvY2F0aW9ucyBkdXJpbmcgZXhlY2J1ZmZlciBpbnNlcnRpb24uCj4gLSAgICAgICAgKi8KPiAt ICAgICAgIHVuc2lnbmVkIGludCAqZXhlY19mbGFnczsKPiAtICAgICAgIHN0cnVjdCBobGlzdF9u b2RlIGV4ZWNfbm9kZTsKPiAtICAgICAgIHUzMiBleGVjX2hhbmRsZTsKPiAgfTsKPgo+ICBzdHJ1 Y3QgaTkxNV92bWEgKgo+IC0tCj4gMi4yNC4wCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15D2BC5DF60 for ; Fri, 8 Nov 2019 09:54:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CA0BD21D7E for ; Fri, 8 Nov 2019 09:54:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CA0BD21D7E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5C0976F8EF; Fri, 8 Nov 2019 09:54:05 +0000 (UTC) Received: from mail-oi1-x242.google.com (mail-oi1-x242.google.com [IPv6:2607:f8b0:4864:20::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE0936F8EF for ; Fri, 8 Nov 2019 09:54:03 +0000 (UTC) Received: by mail-oi1-x242.google.com with SMTP id l202so4747618oig.1 for ; Fri, 08 Nov 2019 01:54:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Arw/rpIvoyDzWDn1Y1X4wiEUnDM2dpo6dv1Ca8UNpYE=; b=Ys/wfVoK1Qi9XMLbsvzazrj0AlQ6lKoR5ws0NgDm3kU8qISvqwp/zW4b2UlwJdQ9Ph J64ybUgHAxdAThBZZpPTzdqDMJWo3yijLfn59wHDB3tP+cMmass2wvcQbRsLOccvBTSk zg/ieg8rfe1erwGA5bCW30BB9WblvYacM8P5kwueUqGSrnwUGJgJ5DuiZmJt1rlXaUHS MatA70Eay6Fx/Cq1FSY7VoalZCY00XD+09VIu+8ef+iNGX96QIyjTRT0oEWozTWjxpPf rHHABJg8xIO34S8QszrP6Xqym/3Ka2OqvVievbuGQIg6URQZQ73fp4ofQKpVomETCuSM V2JA== X-Gm-Message-State: APjAAAVVw/0v/wC0S+hxR4DXvcxqZugtJgNDaPtFXC3b3rTdP2iI8BP3 6JAhK3rPX2VfHX6H75D9dMJ+76yVLk19kWH5tONHQw== X-Google-Smtp-Source: APXvYqy1T5FPdI5ZjSUAx92NL+hAjYwDbMqcKTnySw3vtytMc2kj/4q6uFQrBv5BPKwTGpfAyW7QxkO1YiyBV2Glo10= X-Received: by 2002:aca:3889:: with SMTP id f131mr8657391oia.14.1573206842408; Fri, 08 Nov 2019 01:54:02 -0800 (PST) MIME-Version: 1.0 References: <20191106154810.5843-1-chris@chris-wilson.co.uk> <20191106154810.5843-3-chris@chris-wilson.co.uk> In-Reply-To: <20191106154810.5843-3-chris@chris-wilson.co.uk> From: Daniel Vetter Date: Fri, 8 Nov 2019 10:53:51 +0100 Message-ID: To: Chris Wilson , Maarten Lankhorst X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Arw/rpIvoyDzWDn1Y1X4wiEUnDM2dpo6dv1Ca8UNpYE=; b=JHeGotJgasxHkQBMKpSpGp/erhYkp+R0eWs9xD25doAfs4Q4wXui6Dv/Eh/JGGP/fs IoOeIPUU6j75ZFwym27KNkcNzDyW/pCWpsEKsy/uu2zhCpyEhfWdUMDtFYUCHhu7QRPr 4wIghq6/8dIhiyLV0nDpeFg1FA59HRrQVbEX4= Subject: Re: [Intel-gfx] [PATCH 3/3] drm/i915/gem: Extract transient execbuf flags from i915_vma X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191108095351.j39EJSopXF-hJ7R8k1LKVWbLyFnwmd14spZjMsZuSzs@z> T24gV2VkLCBOb3YgNiwgMjAxOSBhdCA0OjQ4IFBNIENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPiB3cm90ZToKPiBGb3Igb3VyIGNvbnZlbmllbmNlLCBhbmQgdG8gYXZvaWQg ZnJlcXVlbnQgYWxsb2NhdGlvbnMsIHdlIHBsYWNlZCBzb21lCj4gbGlzdHMgd2UgdXNlIGZvciBl eGVjYnVmIGluc2lkZSB0aGUgY29tbW9uIGk5MTVfdm1hIHN0cnVjdC4gQXMgd2UgbG9vawo+IHRv IHBhcmFsbGVsaXNlIGV4ZWNidWYsIHN1Y2ggZmllbGRzIGd1YXJkZWQgYnkgdGhlIHN0cnVjdF9t dXRleCBCS0wgbXVzdAo+IGJlIHB1bGxlZCB1bmRlciBsb2NhbCBjb250cm9sLiBJbnN0ZWFkIG9m IHVzaW5nIHRoZSBpOTE1X3ZtYSBhcyBvdXIKPiBwcmltYXJ5IG1lYW5zIG9mIHRyYWNraW5nIHRo ZSB1c2VyJ3MgbGlzdCBvZiBvYmplY3RzIGFuZCB0aGVpciB2aXJ0dWFsCj4gbWFwcGluZ3MsIHdl IHVzZSBhIGxvY2FsIGViX3ZtYSB3aXRoIHRoZSBzYW1lIGxpc3RzIGFzIGJlZm9yZSAoanVzdCBu b3cKPiBsb2NhbCBub3QgZ2xvYmFsKS4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgoKKC0tc3VwcmVzcy1jYyA/IEFkZGVkIE1hYXJ0 ZW4gZm9yIHJlYWwsIGRpZG4ndCBzZWVtIHRvIGJlIG9uIGNjIGluIG15CmluYm94IGF0IGxlYXN0 KQoKV2h5IGRvIHdlIG5lZWQgdGhpcz8KCkZvciB0aGUgbG1lbSBzdHVmZiB3ZSBuZWVkIHRvIGhv bGQgdGhlIGRtYV9yZXN2LCB3aGljaCBpcyBvbiB0aGUKb2JqZWN0LiBOZWVkcyB0byBiZSBvbiB0 aGUgb2JqZWN0LCBzaW5jZSBsbWVtIGlzIHBoeXNpY2FsIG1lbW9yeSwgbm90CnZpcnR1YWwgZ3R0 ICh3ZSBtaWdodCBoYXZlIGEgZGlmZmVyZW50IHN0b3J5IG9uIG9sZCBnZ3R0IGV4ZWNidWYKY29u dGVudGlvbiBsb2xzKS4gdm1hLT5vYmogaXMgTjoxICh1bmxlc3Mgc29tZSByZW1hcHBpbmcgc3R1 ZmYgY3JlcHQKaW4gdGhhdCBJIHRvdGFsbHkgbWlzc2VkKSwgc28gbG9ja2luZyB0aGUgb2JqIGRt YV9yZXN2IHd3X211dGV4IGR1cmluZwpleGVjYnVmIHByZXAgYWxzbyBnaXZlcyB1cyB0aGUgZW50 aXJlIHZtYSBsb2NrZWQuIFdoaWNoIG1lYW5zIHdlIGNhbgpqdXN0IGxlYXZlIGV2ZXJ5dGhpbmcg d2hlcmUgaXQgaXMsIG5vIG5lZWQgdG8gbW92ZSBzdHVmZi4gQXQgbGVhc3Qgbm8KZm9yIHRoZSBz L3N0cnVjdF9tdXRleC93d19hY3F1aXJlX2N0eC8gbWFnaWMgdHJpY2suCgpJJ20gYWxzbyBraW5k YSB3b25kZXJlZCB3aGV0aGVyIHRoZSBzYW1lIGFwcGxpZXMgZm9yIHNvbWUgb2YgdGhlIG90aGVy CnZtYSBzdGF0ZSB0aGF0IGdvdCBzcGxpdCBvdXQgYWxyZWFkeSwgbGlrZSB0aGUgdm1hLT5waW5f Y291bnQKdHJhY2tpbmcuIEF0IGxlYXN0IG5haXZlIGFwcGxpY2F0aW9uIG9mIHd3X211dGV4IHdv dWxkIGNvdmVyIHd3X211dGV4CmV2ZXJ5d2hlcmUgd2UgZG8gdGhlIG5ldyBsb2NraW5nIGZvciB2 bWEgcGlubmluZywgc28gc2VlbXMgc3VwZXJmbG91cy4KCkJ1dCBnb29kIGNoYW5jZXMgSSdtIGp1 c3Qgc2xpZ2h0bHkgY29uZnVzZWQgYXMgdXN1YWwgOi0pCi1EYW5pZWwKCj4gLS0tCj4gIC4uLi9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8IDI3MSArKysrKysrKyst LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAg IHwgIDExIC0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0 aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gaW5kZXggZTRmNWMyNjkxNTBhLi44ZWI5YzRlMTc1MTQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtMjcsNiAr MjcsMTkgQEAKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2lvY3Rscy5oIgo+ICAjaW5jbHVkZSAiaTkx NV90cmFjZS5oIgo+Cj4gK3N0cnVjdCBlYl92bWEgewo+ICsgICAgICAgc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gKwo+ICsgICAgICAgLyoqIFRo aXMgdm1hJ3MgcGxhY2UgaW4gdGhlIGV4ZWNidWYgcmVzZXJ2YXRpb24gbGlzdCAqLwo+ICsgICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmV4ZWM7Cj4gKyAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGJpbmRfbGluazsKPiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVsb2Nf bGluazsKPiArCj4gKyAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOwo+ICsgICAgICAgdTMy IGhhbmRsZTsKPiArfTsKPiArCj4gIGVudW0gewo+ICAgICAgICAgRk9SQ0VfQ1BVX1JFTE9DID0g MSwKPiAgICAgICAgIEZPUkNFX0dUVF9SRUxPQywKPiBAQCAtMjE5LDE1ICsyMzIsMTQgQEAgc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7IC8q KiBwZXItZmlsZSBsb29rdXAgdGFibGVzIGFuZCBsaW1pdHMgKi8KPiAgICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3M7IC8qKiBpb2N0bCBwYXJhbWV0ZXJzICovCj4g ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZXhlYzsgLyoqIGlvY3Rs IGV4ZWNvYmpbXSAqLwo+IC0gICAgICAgc3RydWN0IGk5MTVfdm1hICoqdm1hOwo+IC0gICAgICAg dW5zaWduZWQgaW50ICpmbGFnczsKPiArICAgICAgIHN0cnVjdCBlYl92bWEgKnZtYTsKPgo+ICAg ICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOyAvKiogZW5naW5lIHRvIHF1ZXVl IHRoZSByZXF1ZXN0IHRvICovCj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY29udGV4 dDsgLyogbG9naWNhbCBzdGF0ZSBmb3IgdGhlIHJlcXVlc3QgKi8KPiAgICAgICAgIHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpnZW1fY29udGV4dDsgLyoqIGNhbGxlcidzIGNvbnRleHQgKi8KPgo+ ICAgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsgLyoqIG91ciByZXF1ZXN0IHRv IGJ1aWxkICovCj4gLSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOyAvKiogaWRlbnRpdHkg b2YgdGhlIGJhdGNoIG9iai92bWEgKi8KPiArICAgICAgIHN0cnVjdCBlYl92bWEgKmJhdGNoOyAv KiogaWRlbnRpdHkgb2YgdGhlIGJhdGNoIG9iai92bWEgKi8KPgo+ICAgICAgICAgLyoqIGFjdHVh bCBzaXplIG9mIGV4ZWNvYmpbXSBhcyB3ZSBtYXkgZXh0ZW5kIGl0IGZvciB0aGUgY21kcGFyc2Vy ICovCj4gICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX2NvdW50Owo+IEBAIC0yNzUsOCArMjg3 LDYgQEAgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciB7Cj4gICAgICAgICBzdHJ1Y3QgaGxpc3RfaGVh ZCAqYnVja2V0czsgLyoqIGh0IGZvciByZWxvY2F0aW9uIGhhbmRsZXMgKi8KPiAgfTsKPgo+IC0j ZGVmaW5lIGV4ZWNfZW50cnkoRUIsIFZNQSkgKCYoRUIpLT5leGVjWyhWTUEpLT5leGVjX2ZsYWdz IC0gKEVCKS0+ZmxhZ3NdKQo+IC0KPiAgLyoKPiAgICogVXNlZCB0byBjb252ZXJ0IGFueSBhZGRy ZXNzIHRvIGNhbm9uaWNhbCBmb3JtLgo+ICAgKiBTdGFydGluZyBmcm9tIGdlbjgsIHNvbWUgY29t bWFuZHMgKGUuZy4gU1RBVEVfQkFTRV9BRERSRVNTLAo+IEBAIC0zODAsOSArMzkwLDkgQEAgZWJf dm1hX21pc3BsYWNlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50 cnksCj4gIHN0YXRpYyBpbmxpbmUgYm9vbAo+ICBlYl9waW5fdm1hKHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViLAo+ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgKmVudHJ5LAo+IC0gICAgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gKyAgICAg ICAgICBzdHJ1Y3QgZWJfdm1hICpldikKPiAgewo+IC0gICAgICAgdW5zaWduZWQgaW50IGV4ZWNf ZmxhZ3MgPSAqdm1hLT5leGVjX2ZsYWdzOwo+ICsgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEg PSBldi0+dm1hOwo+ICAgICAgICAgdTY0IHBpbl9mbGFnczsKPgo+ICAgICAgICAgaWYgKHZtYS0+ bm9kZS5zaXplKQo+IEBAIC0zOTEsMjQgKzQwMSwyNCBAQCBlYl9waW5fdm1hKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICBwaW5fZmxhZ3MgPSBlbnRyeS0+b2Zm c2V0ICYgUElOX09GRlNFVF9NQVNLOwo+Cj4gICAgICAgICBwaW5fZmxhZ3MgfD0gUElOX1VTRVIg fCBQSU5fTk9FVklDVCB8IFBJTl9PRkZTRVRfRklYRUQ7Cj4gLSAgICAgICBpZiAodW5saWtlbHko ZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX05FRURTX0dUVCkpCj4gKyAgICAgICBpZiAodW5saWtl bHkoZXYtPmZsYWdzICYgRVhFQ19PQkpFQ1RfTkVFRFNfR1RUKSkKPiAgICAgICAgICAgICAgICAg cGluX2ZsYWdzIHw9IFBJTl9HTE9CQUw7Cj4KPiAgICAgICAgIGlmICh1bmxpa2VseShpOTE1X3Zt YV9waW4odm1hLCAwLCAwLCBwaW5fZmxhZ3MpKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwo+Cj4gLSAgICAgICBpZiAodW5saWtlbHkoZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX05F RURTX0ZFTkNFKSkgewo+ICsgICAgICAgaWYgKHVubGlrZWx5KGV2LT5mbGFncyAmIEVYRUNfT0JK RUNUX05FRURTX0ZFTkNFKSkgewo+ICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoaTkxNV92 bWFfcGluX2ZlbmNlKHZtYSkpKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaTkxNV92bWFf dW5waW4odm1hKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gICAg ICAgICAgICAgICAgIH0KPgo+ICAgICAgICAgICAgICAgICBpZiAodm1hLT5mZW5jZSkKPiAtICAg ICAgICAgICAgICAgICAgICAgICBleGVjX2ZsYWdzIHw9IF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNF Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIGV2LT5mbGFncyB8PSBfX0VYRUNfT0JKRUNUX0hB U19GRU5DRTsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgKnZtYS0+ZXhlY19mbGFncyA9IGV4ZWNf ZmxhZ3MgfCBfX0VYRUNfT0JKRUNUX0hBU19QSU47Cj4gLSAgICAgICByZXR1cm4gIWViX3ZtYV9t aXNwbGFjZWQoZW50cnksIHZtYSwgZXhlY19mbGFncyk7Cj4gKyAgICAgICBldi0+ZmxhZ3MgfD0g X19FWEVDX09CSkVDVF9IQVNfUElOOwo+ICsgICAgICAgcmV0dXJuICFlYl92bWFfbWlzcGxhY2Vk KGVudHJ5LCB2bWEsIGV2LT5mbGFncyk7Cj4gIH0KPgo+ICBzdGF0aWMgaW5saW5lIHZvaWQgX19l Yl91bnJlc2VydmVfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Cj4gQEAgLTQyMiwxMyArNDMyLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2ViX3VucmVzZXJ2 ZV92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGludCBmbGFncykKPiAgfQo+Cj4g IHN0YXRpYyBpbmxpbmUgdm9pZAo+IC1lYl91bnJlc2VydmVfdm1hKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLCB1bnNpZ25lZCBpbnQgKmZsYWdzKQo+ICtlYl91bnJlc2VydmVfdm1hKHN0cnVjdCBlYl92 bWEgKmV2KQo+ICB7Cj4gLSAgICAgICBpZiAoISgqZmxhZ3MgJiBfX0VYRUNfT0JKRUNUX0hBU19Q SU4pKQo+ICsgICAgICAgaWYgKCEoZXYtPmZsYWdzICYgX19FWEVDX09CSkVDVF9IQVNfUElOKSkK PiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gLSAgICAgICBfX2ViX3VucmVzZXJ2ZV92bWEo dm1hLCAqZmxhZ3MpOwo+IC0gICAgICAgKmZsYWdzICY9IH5fX0VYRUNfT0JKRUNUX1JFU0VSVkVE Owo+ICsgICAgICAgX19lYl91bnJlc2VydmVfdm1hKGV2LT52bWEsIGV2LT5mbGFncyk7Cj4gKyAg ICAgICBldi0+ZmxhZ3MgJj0gfl9fRVhFQ19PQkpFQ1RfUkVTRVJWRUQ7Cj4gIH0KPgo+ICBzdGF0 aWMgaW50Cj4gQEAgLTQ1OCwxMiArNDY4LDYgQEAgZWJfdmFsaWRhdGVfdm1hKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICBlbnRyeS0+cGFkX3RvX3NpemUgPSAw Owo+ICAgICAgICAgfQo+Cj4gLSAgICAgICBpZiAodW5saWtlbHkodm1hLT5leGVjX2ZsYWdzKSkg ewo+IC0gICAgICAgICAgICAgICBEUk1fREVCVUcoIk9iamVjdCBbaGFuZGxlICVkLCBpbmRleCAl ZF0gYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiBvYmplY3QgbGlzdFxuIiwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgIGVudHJ5LT5oYW5kbGUsIChpbnQpKGVudHJ5IC0gZWItPmV4ZWMpKTsK PiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICB9Cj4gLQo+ICAgICAg ICAgLyoKPiAgICAgICAgICAqIEZyb20gZHJtX21tIHBlcnNwZWN0aXZlIGFkZHJlc3Mgc3BhY2Ug aXMgY29udGludW91cywKPiAgICAgICAgICAqIHNvIGZyb20gdGhpcyBwb2ludCB3ZSdyZSBhbHdh eXMgdXNpbmcgbm9uLWNhbm9uaWNhbAo+IEBAIC00OTIsNiArNDk2LDcgQEAgZWJfYWRkX3ZtYShz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50 cnkgPSAmZWItPmV4ZWNbaV07Cj4gKyAgICAgICBzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+dm1h W2ldOwo+ICAgICAgICAgaW50IGVycjsKPgo+ICAgICAgICAgR0VNX0JVR19PTihpOTE1X3ZtYV9p c19jbG9zZWQodm1hKSk7Cj4gQEAgLTUwMiwyNSArNTA3LDE5IEBAIGViX2FkZF92bWEoc3RydWN0 IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy cjsKPiAgICAgICAgIH0KPgo+ICsgICAgICAgZXYtPnZtYSA9IHZtYTsKPiArICAgICAgIGV2LT5l eGVjID0gZW50cnk7Cj4gKyAgICAgICBldi0+ZmxhZ3MgPSBlbnRyeS0+ZmxhZ3M7Cj4gKwo+ICAg ICAgICAgaWYgKGViLT5sdXRfc2l6ZSA+IDApIHsKPiAtICAgICAgICAgICAgICAgdm1hLT5leGVj X2hhbmRsZSA9IGVudHJ5LT5oYW5kbGU7Cj4gLSAgICAgICAgICAgICAgIGhsaXN0X2FkZF9oZWFk KCZ2bWEtPmV4ZWNfbm9kZSwKPiArICAgICAgICAgICAgICAgZXYtPmhhbmRsZSA9IGVudHJ5LT5o YW5kbGU7Cj4gKyAgICAgICAgICAgICAgIGhsaXN0X2FkZF9oZWFkKCZldi0+bm9kZSwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmViLT5idWNrZXRzW2hhc2hfMzIoZW50cnktPmhh bmRsZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWItPmx1dF9zaXplKV0pOwo+ICAgICAgICAgfQo+Cj4gICAgICAgICBpZiAoZW50cnktPnJl bG9jYXRpb25fY291bnQpCj4gLSAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnZtYS0+cmVs b2NfbGluaywgJmViLT5yZWxvY3MpOwo+IC0KPiAtICAgICAgIC8qCj4gLSAgICAgICAgKiBTdGFz aCBhIHBvaW50ZXIgZnJvbSB0aGUgdm1hIHRvIGV4ZWNvYmosIHNvIHdlIGNhbiBxdWVyeSBpdHMg ZmxhZ3MsCj4gLSAgICAgICAgKiBzaXplLCBhbGlnbm1lbnQgZXRjIGFzIHByb3ZpZGVkIGJ5IHRo ZSB1c2VyLiBBbHNvIHdlIHN0YXNoIGEgcG9pbnRlcgo+IC0gICAgICAgICogdG8gdGhlIHZtYSBp bnNpZGUgdGhlIGV4ZWNvYmogc28gdGhhdCB3ZSBjYW4gdXNlIGEgZGlyZWN0IGxvb2t1cAo+IC0g ICAgICAgICogdG8gZmluZCB0aGUgcmlnaHQgdGFyZ2V0IFZNQSB3aGVuIGRvaW5nIHJlbG9jYXRp b25zLgo+IC0gICAgICAgICovCj4gLSAgICAgICBlYi0+dm1hW2ldID0gdm1hOwo+IC0gICAgICAg ZWItPmZsYWdzW2ldID0gZW50cnktPmZsYWdzOwo+IC0gICAgICAgdm1hLT5leGVjX2ZsYWdzID0g JmViLT5mbGFnc1tpXTsKPiArICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmZXYtPnJlbG9j X2xpbmssICZlYi0+cmVsb2NzKTsKPgo+ICAgICAgICAgLyoKPiAgICAgICAgICAqIFNOQSBpcyBk b2luZyBmYW5jeSB0cmlja3Mgd2l0aCBjb21wcmVzc2luZyBiYXRjaCBidWZmZXJzLCB3aGljaCBs ZWFkcwo+IEBAIC01MzMsMjggKzUzMiwyNiBAQCBlYl9hZGRfdm1hKHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViLAo+ICAgICAgICAgICovCj4gICAgICAgICBpZiAoaSA9PSBiYXRjaF9pZHgpIHsK PiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5yZWxvY2F0aW9uX2NvdW50ICYmCj4gLSAgICAg ICAgICAgICAgICAgICAhKGViLT5mbGFnc1tpXSAmIEVYRUNfT0JKRUNUX1BJTk5FRCkpCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgZWItPmZsYWdzW2ldIHw9IF9fRVhFQ19PQkpFQ1RfTkVFRFNf QklBUzsKPiArICAgICAgICAgICAgICAgICAgICEoZXYtPmZsYWdzICYgRVhFQ19PQkpFQ1RfUElO TkVEKSkKPiArICAgICAgICAgICAgICAgICAgICAgICBldi0+ZmxhZ3MgfD0gX19FWEVDX09CSkVD VF9ORUVEU19CSUFTOwo+ICAgICAgICAgICAgICAgICBpZiAoZWItPnJlbG9jX2NhY2hlLmhhc19m ZW5jZSkKPiAtICAgICAgICAgICAgICAgICAgICAgICBlYi0+ZmxhZ3NbaV0gfD0gRVhFQ19PQkpF Q1RfTkVFRFNfRkVOQ0U7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXYtPmZsYWdzIHw9IEVY RUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+Cj4gLSAgICAgICAgICAgICAgIGViLT5iYXRjaCA9IHZt YTsKPiArICAgICAgICAgICAgICAgZWItPmJhdGNoID0gZXY7Cj4gICAgICAgICB9Cj4KPiAgICAg ICAgIGVyciA9IDA7Cj4gLSAgICAgICBpZiAoZWJfcGluX3ZtYShlYiwgZW50cnksIHZtYSkpIHsK PiArICAgICAgIGlmIChlYl9waW5fdm1hKGViLCBlbnRyeSwgZXYpKSB7Cj4gICAgICAgICAgICAg ICAgIGlmIChlbnRyeS0+b2Zmc2V0ICE9IHZtYS0+bm9kZS5zdGFydCkgewo+ICAgICAgICAgICAg ICAgICAgICAgICAgIGVudHJ5LT5vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQgfCBVUERBVEU7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgZWItPmFyZ3MtPmZsYWdzIHw9IF9fRVhFQ19IQVNfUkVM T0M7Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAg ICAgIGViX3VucmVzZXJ2ZV92bWEodm1hLCB2bWEtPmV4ZWNfZmxhZ3MpOwo+ICsgICAgICAgICAg ICAgICBlYl91bnJlc2VydmVfdm1hKGV2KTsKPgo+IC0gICAgICAgICAgICAgICBsaXN0X2FkZF90 YWlsKCZ2bWEtPmV4ZWNfbGluaywgJmViLT51bmJvdW5kKTsKPiArICAgICAgICAgICAgICAgbGlz dF9hZGRfdGFpbCgmZXYtPmJpbmRfbGluaywgJmViLT51bmJvdW5kKTsKPiAgICAgICAgICAgICAg ICAgaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAgICAgICAgICAgICAg ICAgICAgICAgICBlcnIgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiAtICAgICAgICAgICAgICAg aWYgKHVubGlrZWx5KGVycikpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgdm1hLT5leGVjX2Zs YWdzID0gTlVMTDsKPiAgICAgICAgIH0KPiAgICAgICAgIHJldHVybiBlcnI7Cj4gIH0KPiBAQCAt NTc2LDExICs1NzMsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgdXNlX2NwdV9yZWxvYyhjb25zdCBz dHJ1Y3QgcmVsb2NfY2FjaGUgKmNhY2hlLAo+ICAgICAgICAgICAgICAgICBvYmotPmNhY2hlX2xl dmVsICE9IEk5MTVfQ0FDSEVfTk9ORSk7Cj4gIH0KPgo+IC1zdGF0aWMgaW50IGViX3Jlc2VydmVf dm1hKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3N0YXRpYyBpbnQgZWJfcmVzZXJ2ZV92 bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBlYl92bWEgKmV2KQo+ ICB7Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50cnkgPSBl eGVjX2VudHJ5KGViLCB2bWEpOwo+IC0gICAgICAgdW5zaWduZWQgaW50IGV4ZWNfZmxhZ3MgPSAq dm1hLT5leGVjX2ZsYWdzOwo+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgKmVudHJ5ID0gZXYtPmV4ZWM7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZXhlY19mbGFncyA9 IGV2LT5mbGFnczsKPiArICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsKPiAg ICAgICAgIHU2NCBwaW5fZmxhZ3M7Cj4gICAgICAgICBpbnQgZXJyOwo+Cj4gQEAgLTYyNyw4ICs2 MjQsOCBAQCBzdGF0aWMgaW50IGViX3Jlc2VydmVfdm1hKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfZmxhZ3MgfD0gX19FWEVD X09CSkVDVF9IQVNfRkVOQ0U7Cj4gICAgICAgICB9Cj4KPiAtICAgICAgICp2bWEtPmV4ZWNfZmxh Z3MgPSBleGVjX2ZsYWdzIHwgX19FWEVDX09CSkVDVF9IQVNfUElOOwo+IC0gICAgICAgR0VNX0JV R19PTihlYl92bWFfbWlzcGxhY2VkKGVudHJ5LCB2bWEsIGV4ZWNfZmxhZ3MpKTsKPiArICAgICAg IGV2LT5mbGFncyA9IGV4ZWNfZmxhZ3MgfCBfX0VYRUNfT0JKRUNUX0hBU19QSU47Cj4gKyAgICAg ICBHRU1fQlVHX09OKGViX3ZtYV9taXNwbGFjZWQoZW50cnksIHZtYSwgZXYtPmZsYWdzKSk7Cj4K PiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4gQEAgLTYzNyw3ICs2MzQsNyBAQCBzdGF0aWMgaW50 IGViX3Jlc2VydmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gIHsKPiAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGludCBjb3VudCA9IGViLT5idWZmZXJfY291bnQ7Cj4gICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGxhc3Q7Cj4gLSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArICAg ICAgIHN0cnVjdCBlYl92bWEgKmV2Owo+ICAgICAgICAgdW5zaWduZWQgaW50IGksIHBhc3M7Cj4g ICAgICAgICBpbnQgZXJyOwo+Cj4gQEAgLTY1OCw4ICs2NTUsOCBAQCBzdGF0aWMgaW50IGViX3Jl c2VydmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gICAgICAgICBwYXNzID0gMDsKPiAg ICAgICAgIGVyciA9IDA7Cj4gICAgICAgICBkbyB7Cj4gLSAgICAgICAgICAgICAgIGxpc3RfZm9y X2VhY2hfZW50cnkodm1hLCAmZWItPnVuYm91bmQsIGV4ZWNfbGluaykgewo+IC0gICAgICAgICAg ICAgICAgICAgICAgIGVyciA9IGViX3Jlc2VydmVfdm1hKGViLCB2bWEpOwo+ICsgICAgICAgICAg ICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2LCAmZWItPnVuYm91bmQsIGJpbmRfbGluaykgewo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IGViX3Jlc2VydmVfdm1hKGViLCBldik7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAgICAgICB9Cj4gQEAgLTY3MCwyNiArNjY3LDI2 IEBAIHN0YXRpYyBpbnQgZWJfcmVzZXJ2ZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAg ICAgICAgICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmViLT51bmJvdW5kKTsKPiAgICAgICAgICAg ICAgICAgSU5JVF9MSVNUX0hFQUQoJmxhc3QpOwo+ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBmbGFncyA9IGViLT5mbGFnc1tpXTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aTkxNV92bWEgKnZtYSA9IGViLT52bWFbaV07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGViX3ZtYSAqZXYgPSAmZWItPnZtYVtpXTsKPiArICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3MgPSBldi0+ZmxhZ3M7Cj4KPiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9QSU5ORUQgJiYKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmxhZ3MgJiBfX0VYRUNfT0JKRUNUX0hBU19QSU4pCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKPgo+IC0gICAgICAgICAgICAgICAgICAgICAgIGVi X3VucmVzZXJ2ZV92bWEodm1hLCAmZWItPmZsYWdzW2ldKTsKPiArICAgICAgICAgICAgICAgICAg ICAgICBlYl91bnJlc2VydmVfdm1hKGV2KTsKPgo+ICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChmbGFncyAmIEVYRUNfT0JKRUNUX1BJTk5FRCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIFBpbm5lZCBtdXN0IGhhdmUgdGhlaXIgc2xvdCAqLwo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9hZGQoJnZtYS0+ZXhlY19saW5rLCAmZWItPnVuYm91bmQp Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9hZGQoJmV2LT5iaW5kX2xp bmssICZlYi0+dW5ib3VuZCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxh Z3MgJiBfX0VYRUNfT0JKRUNUX05FRURTX01BUCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIE1hcCByZXF1aXJlIHRoZSBsb3dlc3QgMjU2TWlCIChhcGVydHVyZSkgKi8KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19s aW5rLCAmZWItPnVuYm91bmQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlz dF9hZGRfdGFpbCgmZXYtPmJpbmRfbGluaywgJmViLT51bmJvdW5kKTsKPiAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlIGlmICghKGZsYWdzICYgRVhFQ19PQkpFQ1RfU1VQUE9SVFNfNDhCX0FE RFJFU1MpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHJpb3JpdGlzZSA0 R2lCIHJlZ2lvbiBmb3IgcmVzdHJpY3RlZCBibyAqLwo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlzdF9hZGQoJnZtYS0+ZXhlY19saW5rLCAmbGFzdCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZCgmZXYtPmJpbmRfbGluaywgJmxhc3QpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19saW5rLCAmbGFzdCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZldi0+YmluZF9saW5rLCAmbGFzdCk7 Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgICAgbGlzdF9zcGxpY2VfdGFpbCgm bGFzdCwgJmViLT51bmJvdW5kKTsKPgo+IEBAIC04MDgsMTAgKzgwNSw4IEBAIHN0YXRpYyBpbnQg ZWJfbG9va3VwX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gICAgICAgICAgICAg ICAgIGlmICh1bmxpa2VseShlcnIpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJy X3ZtYTsKPgo+IC0gICAgICAgICAgICAgICBHRU1fQlVHX09OKHZtYSAhPSBlYi0+dm1hW2ldKTsK PiAtICAgICAgICAgICAgICAgR0VNX0JVR19PTih2bWEtPmV4ZWNfZmxhZ3MgIT0gJmViLT5mbGFn c1tpXSk7Cj4gICAgICAgICAgICAgICAgIEdFTV9CVUdfT04oZHJtX21tX25vZGVfYWxsb2NhdGVk KCZ2bWEtPm5vZGUpICYmCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgZWJfdm1hX21pc3Bs YWNlZCgmZWItPmV4ZWNbaV0sIHZtYSwgZWItPmZsYWdzW2ldKSk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZWJfdm1hX21pc3BsYWNlZCgmZWItPmV4ZWNbaV0sIHZtYSwgZWItPnZtYVtp XS5mbGFncykpOwo+ICAgICAgICAgfQo+Cj4gICAgICAgICBtdXRleF91bmxvY2soJmViLT5nZW1f Y29udGV4dC0+bXV0ZXgpOwo+IEBAIC04MjIsMjcgKzgxNywyNyBAQCBzdGF0aWMgaW50IGViX2xv b2t1cF92bWFzKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICBlcnJfb2JqOgo+ICAgICAg ICAgaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICBlcnJfdm1hOgo+IC0gICAgICAgZWItPnZt YVtpXSA9IE5VTEw7Cj4gKyAgICAgICBlYi0+dm1hW2ldLnZtYSA9IE5VTEw7Cj4gIGVycl9jdHg6 Cj4gICAgICAgICBtdXRleF91bmxvY2soJmViLT5nZW1fY29udGV4dC0+bXV0ZXgpOwo+ICAgICAg ICAgcmV0dXJuIGVycjsKPiAgfQo+Cj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKgo+ICtzdGF0 aWMgc3RydWN0IGViX3ZtYSAqCj4gIGViX2dldF92bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1 ZmZlciAqZWIsIHVuc2lnbmVkIGxvbmcgaGFuZGxlKQo+ICB7Cj4gICAgICAgICBpZiAoZWItPmx1 dF9zaXplIDwgMCkgewo+ICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlID49IC1lYi0+bHV0X3Np emUpCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gLSAgICAgICAgICAg ICAgIHJldHVybiBlYi0+dm1hW2hhbmRsZV07Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAmZWIt PnZtYVtoYW5kbGVdOwo+ICAgICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICAgICAgc3RydWN0 IGhsaXN0X2hlYWQgKmhlYWQ7Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1h Owo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZWJfdm1hICpldjsKPgo+ICAgICAgICAgICAgICAg ICBoZWFkID0gJmViLT5idWNrZXRzW2hhc2hfMzIoaGFuZGxlLCBlYi0+bHV0X3NpemUpXTsKPiAt ICAgICAgICAgICAgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCBoZWFkLCBleGVjX25vZGUp IHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAodm1hLT5leGVjX2hhbmRsZSA9PSBoYW5k bGUpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm1hOwo+ICsgICAg ICAgICAgICAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShldiwgaGVhZCwgbm9kZSkgewo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChldi0+aGFuZGxlID09IGhhbmRsZSkKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldjsKPiAgICAgICAgICAgICAgICAgfQo+ICAg ICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiAgICAgICAgIH0KPiBAQCAtODU0LDIwICs4NDks MTggQEAgc3RhdGljIHZvaWQgZWJfcmVsZWFzZV92bWFzKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXIgKmViKQo+ICAgICAgICAgdW5zaWduZWQgaW50IGk7Cj4KPiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAq dm1hID0gZWItPnZtYVtpXTsKPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzID0g ZWItPmZsYWdzW2ldOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+ dm1hW2ldOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGV2LT52bWE7 Cj4KPiAgICAgICAgICAgICAgICAgaWYgKCF2bWEpCj4gICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4KPiAtICAgICAgICAgICAgICAgR0VNX0JVR19PTih2bWEtPmV4ZWNfZmxhZ3MgIT0g JmViLT5mbGFnc1tpXSk7Cj4gLSAgICAgICAgICAgICAgIHZtYS0+ZXhlY19mbGFncyA9IE5VTEw7 Cj4gLSAgICAgICAgICAgICAgIGViLT52bWFbaV0gPSBOVUxMOwo+ICsgICAgICAgICAgICAgICBl Yi0+dm1hW2ldLnZtYSA9IE5VTEw7Cj4KPiAtICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgX19F WEVDX09CSkVDVF9IQVNfUElOKQo+IC0gICAgICAgICAgICAgICAgICAgICAgIF9fZWJfdW5yZXNl cnZlX3ZtYSh2bWEsIGZsYWdzKTsKPiArICAgICAgICAgICAgICAgaWYgKGV2LT5mbGFncyAmIF9f RVhFQ19PQkpFQ1RfSEFTX1BJTikKPiArICAgICAgICAgICAgICAgICAgICAgICBfX2ViX3VucmVz ZXJ2ZV92bWEodm1hLCBldi0+ZmxhZ3MpOwo+Cj4gLSAgICAgICAgICAgICAgIGlmIChmbGFncyAm IF9fRVhFQ19PQkpFQ1RfSEFTX1JFRikKPiArICAgICAgICAgICAgICAgaWYgKGV2LT5mbGFncyAm IF9fRVhFQ19PQkpFQ1RfSEFTX1JFRikKPiAgICAgICAgICAgICAgICAgICAgICAgICBpOTE1X3Zt YV9wdXQodm1hKTsKPiAgICAgICAgIH0KPiAgfQo+IEBAIC0xMzc3LDEwICsxMzcwLDEwIEBAIHJl bG9jYXRlX2VudHJ5KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+Cj4gIHN0YXRpYyB1NjQKPiAgZWJf cmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gLSAgICAgICAgICAg ICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gKyAgICAgICAgICAgICAgICAgc3RydWN0IGVi X3ZtYSAqZXYsCj4gICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9y ZWxvY2F0aW9uX2VudHJ5ICpyZWxvYykKPiAgewo+IC0gICAgICAgc3RydWN0IGk5MTVfdm1hICp0 YXJnZXQ7Cj4gKyAgICAgICBzdHJ1Y3QgZWJfdm1hICp0YXJnZXQ7Cj4gICAgICAgICBpbnQgZXJy Owo+Cj4gICAgICAgICAvKiB3ZSd2ZSBhbHJlYWR5IGhvbGQgYSByZWZlcmVuY2UgdG8gYWxsIHZh bGlkIG9iamVjdHMgKi8KPiBAQCAtMTQxMiw3ICsxNDA1LDcgQEAgZWJfcmVsb2NhdGVfZW50cnko c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAgICAgICB9Cj4KPiAgICAgICAgIGlmIChy ZWxvYy0+d3JpdGVfZG9tYWluKSB7Cj4gLSAgICAgICAgICAgICAgICp0YXJnZXQtPmV4ZWNfZmxh Z3MgfD0gRVhFQ19PQkpFQ1RfV1JJVEU7Cj4gKyAgICAgICAgICAgICAgIHRhcmdldC0+ZmxhZ3Mg fD0gRVhFQ19PQkpFQ1RfV1JJVEU7Cj4KPiAgICAgICAgICAgICAgICAgLyoKPiAgICAgICAgICAg ICAgICAgICogU2FuZHlicmlkZ2UgUFBHVFQgZXJyYXRhOiBXZSBuZWVkIGEgZ2xvYmFsIGd0dCBt YXBwaW5nCj4gQEAgLTE0MjIsNyArMTQxNSw4IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBp OTE1X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICAgICAgICAgKi8KPiAgICAgICAgICAgICAg ICAgaWYgKHJlbG9jLT53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9O ICYmCj4gICAgICAgICAgICAgICAgICAgICBJU19HRU4oZWItPmk5MTUsIDYpKSB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgZXJyID0gaTkxNV92bWFfYmluZCh0YXJnZXQsIHRhcmdldC0+b2Jq LT5jYWNoZV9sZXZlbCwKPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBpOTE1X3ZtYV9i aW5kKHRhcmdldC0+dm1hLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0LT52bWEtPm9iai0+Y2FjaGVfbGV2ZWwsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQSU5fR0xPQkFMLCBOVUxMKTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoV0FSTl9PTkNFKGVyciwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGZhaWx1cmUgdG8gYmluZCB0YXJnZXQgVk1BISIp KQo+IEBAIC0xNDM1LDE3ICsxNDI5LDE3IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLAo+ICAgICAgICAgICogbW9yZSB3b3JrIG5lZWRzIHRvIGJlIGRvbmUu Cj4gICAgICAgICAgKi8KPiAgICAgICAgIGlmICghREJHX0ZPUkNFX1JFTE9DICYmCj4gLSAgICAg ICAgICAgZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQtPm5vZGUuc3RhcnQpID09IHJlbG9jLT5w cmVzdW1lZF9vZmZzZXQpCj4gKyAgICAgICAgICAgZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQt PnZtYS0+bm9kZS5zdGFydCkgPT0gcmVsb2MtPnByZXN1bWVkX29mZnNldCkKPiAgICAgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4KPiAgICAgICAgIC8qIENoZWNrIHRoYXQgdGhlIHJlbG9jYXRpb24g YWRkcmVzcyBpcyB2YWxpZC4uLiAqLwo+ICAgICAgICAgaWYgKHVubGlrZWx5KHJlbG9jLT5vZmZz ZXQgPgo+IC0gICAgICAgICAgICAgICAgICAgIHZtYS0+c2l6ZSAtIChlYi0+cmVsb2NfY2FjaGUu dXNlXzY0Yml0X3JlbG9jID8gOCA6IDQpKSkgewo+ICsgICAgICAgICAgICAgICAgICAgIGV2LT52 bWEtPnNpemUgLSAoZWItPnJlbG9jX2NhY2hlLnVzZV82NGJpdF9yZWxvYyA/IDggOiA0KSkpIHsK PiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJSZWxvY2F0aW9uIGJleW9uZCBvYmplY3QgYm91 bmRzOiAiCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAidGFyZ2V0ICVkIG9mZnNldCAlZCBz aXplICVkLlxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9jLT50YXJnZXRfaGFu ZGxlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClyZWxvYy0+b2Zmc2V0LAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgKGludCl2bWEtPnNpemUpOwo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgKGludClldi0+dm1hLT5zaXplKTsKPiAgICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gICAgICAgICB9Cj4gICAgICAgICBpZiAodW5saWtlbHkocmVsb2MtPm9mZnNl dCAmIDMpKSB7Cj4gQEAgLTE0NjQsMTggKzE0NTgsMTggQEAgZWJfcmVsb2NhdGVfZW50cnkoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAgICAgICAgKiBkbyByZWxvY2F0aW9ucyB3ZSBh cmUgYWxyZWFkeSBzdGFsbGluZywgZGlzYWJsZSB0aGUgdXNlcidzIG9wdAo+ICAgICAgICAgICog b3V0IG9mIG91ciBzeW5jaHJvbmlzYXRpb24uCj4gICAgICAgICAgKi8KPiAtICAgICAgICp2bWEt PmV4ZWNfZmxhZ3MgJj0gfkVYRUNfT0JKRUNUX0FTWU5DOwo+ICsgICAgICAgZXYtPmZsYWdzICY9 IH5FWEVDX09CSkVDVF9BU1lOQzsKPgo+ICAgICAgICAgLyogYW5kIHVwZGF0ZSB0aGUgdXNlcidz IHJlbG9jYXRpb24gZW50cnkgKi8KPiAtICAgICAgIHJldHVybiByZWxvY2F0ZV9lbnRyeSh2bWEs IHJlbG9jLCBlYiwgdGFyZ2V0KTsKPiArICAgICAgIHJldHVybiByZWxvY2F0ZV9lbnRyeShldi0+ dm1hLCByZWxvYywgZWIsIHRhcmdldC0+dm1hKTsKPiAgfQo+Cj4gLXN0YXRpYyBpbnQgZWJfcmVs b2NhdGVfdm1hKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiArc3RhdGljIGludCBlYl9yZWxvY2F0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAq ZWIsIHN0cnVjdCBlYl92bWEgKmV2KQo+ICB7Cj4gICNkZWZpbmUgTl9SRUxPQyh4KSAoKHgpIC8g c2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSkpCj4gICAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgc3RhY2tbTl9SRUxPQyg1MTIpXTsK PiAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSBfX3VzZXIgKnVy ZWxvY3M7Cj4gLSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq ZW50cnkgPSBleGVjX2VudHJ5KGViLCB2bWEpOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7Cj4gICAgICAgICB1bnNpZ25l ZCBpbnQgcmVtYWluOwo+Cj4gICAgICAgICB1cmVsb2NzID0gdTY0X3RvX3VzZXJfcHRyKGVudHJ5 LT5yZWxvY3NfcHRyKTsKPiBAQCAtMTUxNSw3ICsxNTA5LDcgQEAgc3RhdGljIGludCBlYl9yZWxv Y2F0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+Cj4gICAgICAgICAgICAgICAgIHJlbWFpbiAtPSBjb3VudDsKPiAgICAgICAgICAgICAgICAg ZG8gewo+IC0gICAgICAgICAgICAgICAgICAgICAgIHU2NCBvZmZzZXQgPSBlYl9yZWxvY2F0ZV9l bnRyeShlYiwgdm1hLCByKTsKPiArICAgICAgICAgICAgICAgICAgICAgICB1NjQgb2Zmc2V0ID0g ZWJfcmVsb2NhdGVfZW50cnkoZWIsIGV2LCByKTsKPgo+ICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChsaWtlbHkob2Zmc2V0ID09IDApKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIGlmICgoczY0KW9mZnNldCA8IDApIHsKPiBAQCAtMTU1OCwxNiArMTU1MiwxNiBAQCBzdGF0 aWMgaW50IGViX3JlbG9jYXRlX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0 IGk5MTVfdm1hICp2bWEpCj4gIH0KPgo+ICBzdGF0aWMgaW50Cj4gLWViX3JlbG9jYXRlX3ZtYV9z bG93KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAr ZWJfcmVsb2NhdGVfdm1hX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBl Yl92bWEgKmV2KQo+ICB7Cj4gLSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNf b2JqZWN0MiAqZW50cnkgPSBleGVjX2VudHJ5KGViLCB2bWEpOwo+ICsgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7Cj4gICAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jcyA9Cj4gICAgICAg ICAgICAgICAgIHU2NF90b19wdHIodHlwZW9mKCpyZWxvY3MpLCBlbnRyeS0+cmVsb2NzX3B0cik7 Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgaTsKPiAgICAgICAgIGludCBlcnI7Cj4KPiAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBlbnRyeS0+cmVsb2NhdGlvbl9jb3VudDsgaSsrKSB7Cj4gLSAgICAg ICAgICAgICAgIHU2NCBvZmZzZXQgPSBlYl9yZWxvY2F0ZV9lbnRyeShlYiwgdm1hLCAmcmVsb2Nz W2ldKTsKPiArICAgICAgICAgICAgICAgdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGVi LCBldiwgJnJlbG9jc1tpXSk7Cj4KPiAgICAgICAgICAgICAgICAgaWYgKChzNjQpb2Zmc2V0IDwg MCkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IChpbnQpb2Zmc2V0Owo+IEBAIC0x NzExLDcgKzE3MDUsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3Nsb3coc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmZWItPmk5MTUtPmRybTsKPiAgICAgICAgIGJvb2wgaGF2ZV9jb3B5ID0gZmFsc2U7 Cj4gLSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArICAgICAgIHN0cnVjdCBlYl92bWEg KmV2Owo+ICAgICAgICAgaW50IGVyciA9IDA7Cj4KPiAgcmVwZWF0Ogo+IEBAIC0xNzY3LDE1ICsx NzYxLDE1IEBAIHN0YXRpYyBub2lubGluZSBpbnQgZWJfcmVsb2NhdGVfc2xvdyhzdHJ1Y3QgaTkx NV9leGVjYnVmZmVyICplYikKPgo+ICAgICAgICAgR0VNX0JVR19PTighZWItPmJhdGNoKTsKPgo+ IC0gICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZlYi0+cmVsb2NzLCByZWxvY19saW5r KSB7Cj4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2LCAmZWItPnJlbG9jcywgcmVsb2Nf bGluaykgewo+ICAgICAgICAgICAgICAgICBpZiAoIWhhdmVfY29weSkgewo+ICAgICAgICAgICAg ICAgICAgICAgICAgIHBhZ2VmYXVsdF9kaXNhYmxlKCk7Cj4gLSAgICAgICAgICAgICAgICAgICAg ICAgZXJyID0gZWJfcmVsb2NhdGVfdm1hKGViLCB2bWEpOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGVyciA9IGViX3JlbG9jYXRlX3ZtYShlYiwgZXYpOwo+ICAgICAgICAgICAgICAgICAgICAg ICAgIHBhZ2VmYXVsdF9lbmFibGUoKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJy KQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXBlYXQ7Cj4gICAgICAg ICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gZWJfcmVs b2NhdGVfdm1hX3Nsb3coZWIsIHZtYSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0g ZWJfcmVsb2NhdGVfdm1hX3Nsb3coZWIsIGV2KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoZXJyKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7Cj4gICAg ICAgICAgICAgICAgIH0KPiBAQCAtMTgyMCwxMCArMTgxNCwxMCBAQCBzdGF0aWMgaW50IGViX3Jl bG9jYXRlKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+Cj4gICAgICAgICAvKiBUaGUgb2Jq ZWN0cyBhcmUgaW4gdGhlaXIgZmluYWwgbG9jYXRpb25zLCBhcHBseSB0aGUgcmVsb2NhdGlvbnMu ICovCj4gICAgICAgICBpZiAoZWItPmFyZ3MtPmZsYWdzICYgX19FWEVDX0hBU19SRUxPQykgewo+ IC0gICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArICAgICAgICAgICAgICAg c3RydWN0IGViX3ZtYSAqZXY7Cj4KPiAtICAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZlYi0+cmVsb2NzLCByZWxvY19saW5rKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGViX3JlbG9jYXRlX3ZtYShlYiwgdm1hKSkKPiArICAgICAgICAgICAgICAgbGlzdF9m b3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xpbmspIHsKPiArICAgICAgICAg ICAgICAgICAgICAgICBpZiAoZWJfcmVsb2NhdGVfdm1hKGViLCBldikpCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIHNsb3c7Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAg ICAgIH0KPiBAQCAtMTg0NCwzOSArMTgzOCwzNCBAQCBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1 KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICAgICAgICAgd3dfYWNxdWlyZV9pbml0KCZh Y3F1aXJlLCAmcmVzZXJ2YXRpb25fd3dfY2xhc3MpOwo+Cj4gICAgICAgICBmb3IgKGkgPSAwOyBp IDwgY291bnQ7IGkrKykgewo+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9 IGViLT52bWFbaV07Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBlYl92bWEgKmV2ID0gJmViLT52 bWFbaV07Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsK Pgo+ICAgICAgICAgICAgICAgICBlcnIgPSB3d19tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnZt YS0+cmVzdi0+bG9jaywgJmFjcXVpcmUpOwo+IC0gICAgICAgICAgICAgICBpZiAoIWVycikKPiAt ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAgICAgICAgIEdF TV9CVUdfT04oZXJyID09IC1FQUxSRUFEWSk7IC8qIE5vIGR1cGxpY2F0ZSB2bWEgKi8KPiAtCj4g ICAgICAgICAgICAgICAgIGlmIChlcnIgPT0gLUVERUFETEspIHsKPiAgICAgICAgICAgICAgICAg ICAgICAgICBHRU1fQlVHX09OKGkgPT0gMCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZG8g ewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGogPSBpIC0gMTsKPgo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3dfbXV0ZXhfdW5sb2NrKCZlYi0+dm1hW2pd LT5yZXN2LT5sb2NrKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd3X211dGV4 X3VubG9jaygmZWItPnZtYVtqXS52bWEtPnJlc3YtPmxvY2spOwo+Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzd2FwKGViLT5mbGFnc1tpXSwgZWItPmZsYWdzW2pdKTsKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoZWItPnZtYVtpXSwgIGViLT52bWFbal0p Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWItPnZtYVtpXS0+ZXhlY19mbGFn cyA9ICZlYi0+ZmxhZ3NbaV07Cj4gICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1p KTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBHRU1fQlVHX09OKHZtYSAhPSBlYi0+dm1hWzBd KTsKPiAtICAgICAgICAgICAgICAgICAgICAgICB2bWEtPmV4ZWNfZmxhZ3MgPSAmZWItPmZsYWdz WzBdOwo+Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gd3dfbXV0ZXhfbG9ja19zbG93 X2ludGVycnVwdGlibGUoJnZtYS0+cmVzdi0+bG9jaywKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWNxdWlyZSk7Cj4gICAg ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgaWYgKGVyciA9PSAtRUFMUkVBRFkpCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gMDsKPiAgICAgICAgICAgICAgICAgaWYgKGVy cikKPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgIH0KPiAgICAgICAg IHd3X2FjcXVpcmVfZG9uZSgmYWNxdWlyZSk7Cj4KPiAgICAgICAgIHdoaWxlIChpLS0pIHsKPiAt ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzID0gZWItPmZsYWdzW2ldOwo+IC0gICAg ICAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGViLT52bWFbaV07Cj4gKyAgICAgICAg ICAgICAgIHN0cnVjdCBlYl92bWEgKmV2ID0gJmViLT52bWFbaV07Cj4gKyAgICAgICAgICAgICAg IHN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsKPiArICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzID0gZXYtPmZsYWdzOwo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4KPiAgICAgICAgICAgICAgICAgYXNzZXJ0 X3ZtYV9oZWxkKHZtYSk7Cj4gQEAgLTE5MjAsMTAgKzE5MDksMTAgQEAgc3RhdGljIGludCBlYl9t b3ZlX3RvX2dwdShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAgICAgICAgICAgICAgICAg aTkxNV92bWFfdW5sb2NrKHZtYSk7Cj4KPiAgICAgICAgICAgICAgICAgX19lYl91bnJlc2VydmVf dm1hKHZtYSwgZmxhZ3MpOwo+IC0gICAgICAgICAgICAgICB2bWEtPmV4ZWNfZmxhZ3MgPSBOVUxM Owo+IC0KPiAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGZsYWdzICYgX19FWEVDX09CSkVD VF9IQVNfUkVGKSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBpOTE1X3ZtYV9wdXQodm1hKTsK PiArCj4gKyAgICAgICAgICAgICAgIGV2LT52bWEgPSBOVUxMOwo+ICAgICAgICAgfQo+ICAgICAg ICAgd3dfYWNxdWlyZV9maW5pKCZhY3F1aXJlKTsKPgo+IEBAIC0yMDAxLDcgKzE5OTAsNyBAQCBz dGF0aWMgc3RydWN0IGk5MTVfdm1hICplYl9wYXJzZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICpl YiwgYm9vbCBpc19tYXN0ZXIpCj4gICAgICAgICAgICAgICAgIHJldHVybiBFUlJfQ0FTVChwb29s KTsKPgo+ICAgICAgICAgZXJyID0gaW50ZWxfZW5naW5lX2NtZF9wYXJzZXIoZWItPmVuZ2luZSwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGViLT5iYXRjaC0+b2JqLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWItPmJhdGNoLT52bWEtPm9i aiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2wtPm9iaiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGViLT5iYXRjaF9zdGFydF9vZmZz ZXQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYi0+YmF0Y2hfbGVu LAo+IEBAIC0yMDE4LDEwICsyMDA3LDkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqZWJfcGFy c2Uoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wgaXNfbWFzdGVyKQo+ICAgICAgICAg aWYgKElTX0VSUih2bWEpKQo+ICAgICAgICAgICAgICAgICBnb3RvIGVycjsKPgo+IC0gICAgICAg ZWItPnZtYVtlYi0+YnVmZmVyX2NvdW50XSA9IGk5MTVfdm1hX2dldCh2bWEpOwo+IC0gICAgICAg ZWItPmZsYWdzW2ViLT5idWZmZXJfY291bnRdID0KPiArICAgICAgIGViLT52bWFbZWItPmJ1ZmZl cl9jb3VudF0udm1hID0gaTkxNV92bWFfZ2V0KHZtYSk7Cj4gKyAgICAgICBlYi0+dm1hW2ViLT5i dWZmZXJfY291bnRdLmZsYWdzID0KPiAgICAgICAgICAgICAgICAgX19FWEVDX09CSkVDVF9IQVNf UElOIHwgX19FWEVDX09CSkVDVF9IQVNfUkVGOwo+IC0gICAgICAgdm1hLT5leGVjX2ZsYWdzID0g JmViLT5mbGFnc1tlYi0+YnVmZmVyX2NvdW50XTsKPiAgICAgICAgIGViLT5idWZmZXJfY291bnQr KzsKPgo+ICAgICAgICAgdm1hLT5wcml2YXRlID0gcG9vbDsKPiBAQCAtMjA0NCw3ICsyMDMyLDcg QEAgYWRkX3RvX2NsaWVudChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRybV9maWxl ICpmaWxlKQo+ICAgICAgICAgc3Bpbl91bmxvY2soJmZpbGVfcHJpdi0+bW0ubG9jayk7Cj4gIH0K Pgo+IC1zdGF0aWMgaW50IGViX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAr c3RhdGljIGludCBlYl9zdWJtaXQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBp OTE1X3ZtYSAqYmF0Y2gpCj4gIHsKPiAgICAgICAgIGludCBlcnI7Cj4KPiBAQCAtMjA3MSw3ICsy MDU5LDcgQEAgc3RhdGljIGludCBlYl9zdWJtaXQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIp Cj4gICAgICAgICB9Cj4KPiAgICAgICAgIGVyciA9IGViLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQo ZWItPnJlcXVlc3QsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVi LT5iYXRjaC0+bm9kZS5zdGFydCArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJhdGNoLT5ub2RlLnN0YXJ0ICsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWItPmJhdGNoX2xlbiwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWItPmJhdGNoX2ZsYWdzKTsKPiBAQCAtMjQzNCw2ICsyNDIy LDcgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAg ICAgICAgc3RydWN0IGRtYV9mZW5jZSAqaW5fZmVuY2UgPSBOVUxMOwo+ICAgICAgICAgc3RydWN0 IGRtYV9mZW5jZSAqZXhlY19mZW5jZSA9IE5VTEw7Cj4gICAgICAgICBzdHJ1Y3Qgc3luY19maWxl ICpvdXRfZmVuY2UgPSBOVUxMOwo+ICsgICAgICAgc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKPiAg ICAgICAgIGludCBvdXRfZmVuY2VfZmQgPSAtMTsKPiAgICAgICAgIGludCBlcnI7Cj4KPiBAQCAt MjQ0OCw5ICsyNDM3LDggQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAgICAgICAgICAgICAgICBhcmdzLT5mbGFncyB8PSBfX0VYRUNfSEFTX1JFTE9D Owo+Cj4gICAgICAgICBlYi5leGVjID0gZXhlYzsKPiAtICAgICAgIGViLnZtYSA9IChzdHJ1Y3Qg aTkxNV92bWEgKiopKGV4ZWMgKyBhcmdzLT5idWZmZXJfY291bnQgKyAxKTsKPiAtICAgICAgIGVi LnZtYVswXSA9IE5VTEw7Cj4gLSAgICAgICBlYi5mbGFncyA9ICh1bnNpZ25lZCBpbnQgKikoZWIu dm1hICsgYXJncy0+YnVmZmVyX2NvdW50ICsgMSk7Cj4gKyAgICAgICBlYi52bWEgPSAoc3RydWN0 IGViX3ZtYSAqKShleGVjICsgYXJncy0+YnVmZmVyX2NvdW50ICsgMSk7Cj4gKyAgICAgICBlYi52 bWFbMF0udm1hID0gTlVMTDsKPgo+ICAgICAgICAgZWIuaW52YWxpZF9mbGFncyA9IF9fRVhFQ19P QkpFQ1RfVU5LTk9XTl9GTEFHUzsKPiAgICAgICAgIHJlbG9jX2NhY2hlX2luaXQoJmViLnJlbG9j X2NhY2hlLCBlYi5pOTE1KTsKPiBAQCAtMjUyNywxMyArMjUxNSwxNiBAQCBpOTE1X2dlbV9kb19l eGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAgICAgICAgICAgICAgIGdvdG8g ZXJyX3ZtYTsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgaWYgKHVubGlrZWx5KCplYi5iYXRjaC0+ ZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX1dSSVRFKSkgewo+ICsgICAgICAgaWYgKHVubGlrZWx5 KGViLmJhdGNoLT5mbGFncyAmIEVYRUNfT0JKRUNUX1dSSVRFKSkgewo+ICAgICAgICAgICAgICAg ICBEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gdXNlIHNlbGYtbW9kaWZ5aW5nIGJhdGNoIGJ1ZmZl clxuIik7Cj4gICAgICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gICAgICAgICAgICAgICAg IGdvdG8gZXJyX3ZtYTsKPiAgICAgICAgIH0KPiAtICAgICAgIGlmIChlYi5iYXRjaF9zdGFydF9v ZmZzZXQgPiBlYi5iYXRjaC0+c2l6ZSB8fAo+IC0gICAgICAgICAgIGViLmJhdGNoX2xlbiA+IGVi LmJhdGNoLT5zaXplIC0gZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0KSB7Cj4gKwo+ICsgICAgICAgYmF0 Y2ggPSBlYi5iYXRjaC0+dm1hOwo+ICsgICAgICAgaWYgKHJhbmdlX292ZXJmbG93c190KHU2NCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYi5iYXRjaF9zdGFydF9vZmZzZXQsIGVi LmJhdGNoX2xlbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaC0+c2l6ZSkp IHsKPiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIHVzZSBvdXQtb2Yt Ym91bmRzIGJhdGNoXG4iKTsKPiAgICAgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiAgICAg ICAgICAgICAgICAgZ290byBlcnJfdm1hOwo+IEBAIC0yNTYwLDEyICsyNTUxLDEyIEBAIGk5MTVf Z2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KPiAgICAgICAgICAgICAgICAgICAgICAgICBlYi5iYXRjaF9mbGFncyB8 PSBJOTE1X0RJU1BBVENIX1NFQ1VSRTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBlYi5iYXRj aF9zdGFydF9vZmZzZXQgPSAwOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIGViLmJhdGNoID0g dm1hOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gdm1hOwo+ICAgICAgICAgICAg ICAgICB9Cj4gICAgICAgICB9Cj4KPiAgICAgICAgIGlmIChlYi5iYXRjaF9sZW4gPT0gMCkKPiAt ICAgICAgICAgICAgICAgZWIuYmF0Y2hfbGVuID0gZWIuYmF0Y2gtPnNpemUgLSBlYi5iYXRjaF9z dGFydF9vZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIGViLmJhdGNoX2xlbiA9IGJhdGNoLT5zaXpl IC0gZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0Owo+Cj4gICAgICAgICAvKgo+ICAgICAgICAgICogc25i L2l2Yi92bHYgY29uZmxhdGUgdGhlICJiYXRjaCBpbiBwcGd0dCIgYml0IHdpdGggdGhlICJub24t c2VjdXJlCj4gQEAgLTI1ODQsMTMgKzI1NzUsMTMgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgICAgICAgICAgICAgICAgKiAgIGZpdHRpbmcgZHVl IHRvIGZyYWdtZW50YXRpb24uCj4gICAgICAgICAgICAgICAgICAqIFNvIHRoaXMgaXMgYWN0dWFs bHkgc2FmZS4KPiAgICAgICAgICAgICAgICAgICovCj4gLSAgICAgICAgICAgICAgIHZtYSA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihlYi5iYXRjaC0+b2JqLCBOVUxMLCAwLCAwLCAwKTsKPiAr ICAgICAgICAgICAgICAgdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGJhdGNoLT5vYmos IE5VTEwsIDAsIDAsIDApOwo+ICAgICAgICAgICAgICAgICBpZiAoSVNfRVJSKHZtYSkpIHsKPiAg ICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKHZtYSk7Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgZ290byBlcnJfdm1hOwo+ICAgICAgICAgICAgICAgICB9Cj4KPiAtICAgICAg ICAgICAgICAgZWIuYmF0Y2ggPSB2bWE7Cj4gKyAgICAgICAgICAgICAgIGJhdGNoID0gdm1hOwo+ ICAgICAgICAgfQo+Cj4gICAgICAgICAvKiBBbGwgR1BVIHJlbG9jYXRpb24gYmF0Y2hlcyBtdXN0 IGJlIHN1Ym1pdHRlZCBwcmlvciB0byB0aGUgdXNlciBycSAqLwo+IEBAIC0yNjM3LDEyICsyNjI4 LDEyIEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg ICAgICAgICAqIGluYWN0aXZlX2xpc3QgYW5kIGxvc2UgaXRzIGFjdGl2ZSByZWZlcmVuY2UuIEhl bmNlIHdlIGRvIG5vdCBuZWVkCj4gICAgICAgICAgKiB0byBleHBsaWNpdGx5IGhvbGQgYW5vdGhl ciByZWZlcmVuY2UgaGVyZS4KPiAgICAgICAgICAqLwo+IC0gICAgICAgZWIucmVxdWVzdC0+YmF0 Y2ggPSBlYi5iYXRjaDsKPiAtICAgICAgIGlmIChlYi5iYXRjaC0+cHJpdmF0ZSkKPiAtICAgICAg ICAgICAgICAgaW50ZWxfZW5naW5lX3Bvb2xfbWFya19hY3RpdmUoZWIuYmF0Y2gtPnByaXZhdGUs IGViLnJlcXVlc3QpOwo+ICsgICAgICAgZWIucmVxdWVzdC0+YmF0Y2ggPSBiYXRjaDsKPiArICAg ICAgIGlmIChiYXRjaC0+cHJpdmF0ZSkKPiArICAgICAgICAgICAgICAgaW50ZWxfZW5naW5lX3Bv b2xfbWFya19hY3RpdmUoYmF0Y2gtPnByaXZhdGUsIGViLnJlcXVlc3QpOwo+Cj4gICAgICAgICB0 cmFjZV9pOTE1X3JlcXVlc3RfcXVldWUoZWIucmVxdWVzdCwgZWIuYmF0Y2hfZmxhZ3MpOwo+IC0g ICAgICAgZXJyID0gZWJfc3VibWl0KCZlYik7Cj4gKyAgICAgICBlcnIgPSBlYl9zdWJtaXQoJmVi LCBiYXRjaCk7Cj4gIGVycl9yZXF1ZXN0Ogo+ICAgICAgICAgYWRkX3RvX2NsaWVudChlYi5yZXF1 ZXN0LCBmaWxlKTsKPiAgICAgICAgIGk5MTVfcmVxdWVzdF9hZGQoZWIucmVxdWVzdCk7Cj4gQEAg LTI2NjMsOSArMjY1NCw5IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPgo+ICBlcnJfYmF0Y2hfdW5waW46Cj4gICAgICAgICBpZiAoZWIuYmF0Y2hfZmxh Z3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSkKPiAtICAgICAgICAgICAgICAgaTkxNV92bWFfdW5w aW4oZWIuYmF0Y2gpOwo+IC0gICAgICAgaWYgKGViLmJhdGNoLT5wcml2YXRlKQo+IC0gICAgICAg ICAgICAgICBpbnRlbF9lbmdpbmVfcG9vbF9wdXQoZWIuYmF0Y2gtPnByaXZhdGUpOwo+ICsgICAg ICAgICAgICAgICBpOTE1X3ZtYV91bnBpbihiYXRjaCk7Cj4gKyAgICAgICBpZiAoYmF0Y2gtPnBy aXZhdGUpCj4gKyAgICAgICAgICAgICAgIGludGVsX2VuZ2luZV9wb29sX3B1dChiYXRjaC0+cHJp dmF0ZSk7Cj4gIGVycl92bWE6Cj4gICAgICAgICBpZiAoZWIuZXhlYykKPiAgICAgICAgICAgICAg ICAgZWJfcmVsZWFzZV92bWFzKCZlYik7Cj4gQEAgLTI2ODgsOSArMjY3OSw3IEBAIGk5MTVfZ2Vt X2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPgo+ICBzdGF0aWMgc2l6ZV90 IGViX2VsZW1lbnRfc2l6ZSh2b2lkKQo+ICB7Cj4gLSAgICAgICByZXR1cm4gKHNpemVvZihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MikgKwo+IC0gICAgICAgICAgICAgICBzaXplb2Yo c3RydWN0IGk5MTVfdm1hICopICsKPiAtICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGlu dCkpOwo+ICsgICAgICAgcmV0dXJuIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MikgKyBzaXplb2Yoc3RydWN0IGViX3ZtYSk7Cj4gIH0KPgo+ICBzdGF0aWMgYm9vbCBjaGVj a19idWZmZXJfY291bnQoc2l6ZV90IGNvdW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+IGlu ZGV4IDQ2NTkzMjgxM2JjNS4uNzE0MDIwNTZkODQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zt YS5oCj4gQEAgLTE0NywyMSArMTQ3LDEwIEBAIHN0cnVjdCBpOTE1X3ZtYSB7Cj4gICAgICAgICBz dHJ1Y3QgcmJfbm9kZSBvYmpfbm9kZTsKPiAgICAgICAgIHN0cnVjdCBobGlzdF9ub2RlIG9ial9o YXNoOwo+Cj4gLSAgICAgICAvKiogVGhpcyB2bWEncyBwbGFjZSBpbiB0aGUgZXhlY2J1ZiByZXNl cnZhdGlvbiBsaXN0ICovCj4gLSAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNfbGluazsKPiAt ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVsb2NfbGluazsKPiAtCj4gICAgICAgICAvKiogVGhp cyB2bWEncyBwbGFjZSBpbiB0aGUgZXZpY3Rpb24gbGlzdCAqLwo+ICAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBldmljdF9saW5rOwo+Cj4gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNsb3NlZF9s aW5rOwo+IC0KPiAtICAgICAgIC8qKgo+IC0gICAgICAgICogVXNlZCBmb3IgcGVyZm9ybWluZyBy ZWxvY2F0aW9ucyBkdXJpbmcgZXhlY2J1ZmZlciBpbnNlcnRpb24uCj4gLSAgICAgICAgKi8KPiAt ICAgICAgIHVuc2lnbmVkIGludCAqZXhlY19mbGFnczsKPiAtICAgICAgIHN0cnVjdCBobGlzdF9u b2RlIGV4ZWNfbm9kZTsKPiAtICAgICAgIHUzMiBleGVjX2hhbmRsZTsKPiAgfTsKPgo+ICBzdHJ1 Y3QgaTkxNV92bWEgKgo+IC0tCj4gMi4yNC4wCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4